ZGlmZiAtLWdpdCBhLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kIGIvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlODBkOAotLS0gL2Rldi9udWxsCisrKyBiLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCkBAIC0wLDAgKzEsOSBAQAorIyMgQ1B5dGhvbiBNaXJyb3IKKworaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uIGlzIGEgY3B5dGhvbiBtaXJyb3IgcmVwb3NpdG9yeS4gUHVsbCByZXF1ZXN0cworYXJlIG5vdCBhY2NlcHRlZCBvbiB0aGlzIHJlcG8gYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjbG9zZWQuCisKKyMjIyBTdWJtaXQgcGF0Y2hlcyBhdCBodHRwczovL2J1Z3MucHl0aG9uLm9yZworCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgdG8gQ1B5dGhvbiwgc2VlIHRoZQorW2RldmVsb3BlcidzIGd1aWRlXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8jY29udHJpYnV0aW5nKS4KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGQyNjdkMTUuLmVkNGViZmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjEsOCArMjEsNiBAQAogTGliL2Rpc3R1dGlscy9jb21tYW5kLyoucGRiCiBMaWIvbGliMnRvMy8qLnBpY2tsZQogTGliL3Rlc3QvZGF0YS8qCi1MaWIvX3N5c2NvbmZpZ2RhdGEucHkKLUxpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCiBNaXNjL3B5dGhvbi5wYwpAQCAtNzMsNiArNzEsNyBAQAogaXBjaC8KIGxpYnB5dGhvbiouYQogbGlicHl0aG9uKi5zbyoKK2xpYnB5dGhvbiouZHlsaWIKIHBsYXRmb3JtCiBweWJ1aWxkZGlyLnR4dAogcHljb25maWcuaApkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IGNmOTQ1M2EuLjkyODk2YjcgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTIsNiArMiw3IEBACiAucHVyaWZ5CiAuc3ZuLwogXi5pZGVhLworXi52c2NvZGUvCiAuRFNfU3RvcmUKIE1ha2VmaWxlJAogTWFrZWZpbGUucHJlJApAQCAtMjUsNyArMjYsNiBAQAogcHl0aG9uLWNvbmZpZy5weSQKIHJlZmxvZy50eHQkCiB0YWdzJAotTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKIE1pc2MvcHl0aG9uLnBjCiBNaXNjL3B5dGhvbi1jb25maWcuc2gkCiBNb2R1bGVzL1NldHVwJApAQCAtNDMsNiArNDMsNyBAQAogc3ludGF4OiBnbG9iCiBsaWJweXRob24qLmEKIGxpYnB5dGhvbiouc28qCitsaWJweXRob24qLmR5bGliCiAqLnN3cAogKi5vCiAqLnB5YwpAQCAtNTQsNiArNTUsNyBAQAogKi5wcm9mY2xhbmc/CiAqLnByb2ZyYXcKICouZHluCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oCiBMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGVkNGZjOTIuLjIxMWMzNzYgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ4LDYgKzE0OCw3IEBACiA3MzdlZmNhZGY1YTY3OGIxODRlMGZhNDMxYWFlMTEyNzZiZjA2NjQ4IHYzLjQuNAogMzYzMWJiNGEyNDkwMjkyZWJmODFkM2U5NDdhZTM2ZGExNDVkYTU2NCB2My40LjVyYzEKIDYxOWI2MWU1MDVkMGUyY2NjODUxNmIzNjZlNGRkZDE5NzFiNDZhNmYgdjMuNC41CiszNjMxYmI0YTI0OTAyOTJlYmY4MWQzZTk0N2FlMzZkYTE0NWRhNTY0IHYzLjQuNXJjMQogNWQ0YjZhNTdkNWZkNzU2NGJmNzNmM2RiMGU0NmZlNWVlYjAwYmNkOCB2My41LjBhMQogMDMzN2JkN2ViY2I2NTU5ZDY5Njc5YmM3MDI1MDU5YWQxY2U0ZjQzMiB2My41LjBhMgogODI2NTZlMjhiNWU1YzRhZTQ4ZDhkZDhiNWYwZDc5Njg5MDhhODJiNiB2My41LjBhMwpAQCAtMTY1LDMgKzE2Niw4IEBACiAzN2EwN2NlZTU5NjllNmQzNjcyNTgzMTg3YTczY2Y2MzZmZjI4ZTFiIHYzLjUuMQogNjhmZWVjNjQ4OGIyNjMyN2E4NWE2MzQ2MDVkZDI4ZWNhNGRhYTVmMSB2My41LjJyYzEKIDRkZWYyYTI5MDFhNTYxOGVhNDViY2M4ZjJhMTQxMWVmMzNhZjE4YWQgdjMuNS4yCis1ODk2ZGEzNzJmYjA0NGUzODU5NWZiNzQ0OTVkZTFlMWU3YzhmYjNjIHYzLjYuMGExCiszNzg4OTM0MjM1NTIyM2UyZmMxNDM4ZGUzZGM3ZmZjZDYyNWM2MGY3IHYzLjYuMGEyCitmM2VkZjEzZGMzMzliODk0MmFlNmIzMDk3NzFhYjE5N2RkOGNlNmZhIHYzLjYuMGEzCiswMTdjZjI2MDkzNmI0NDQ3ODhjOWI2NzFkMTk1YjdiZmQ4M2RiZDI1IHYzLjYuMGE0Cis1YjBjYTRlZDVlMmYwNjY5ZDc2ZWNlN2VmOTc1YzU0NDU4MGYxMmI0IHYzLjYuMGIxCmRpZmYgLS1naXQgYS9Eb2MvTWFrZWZpbGUgYi9Eb2MvTWFrZWZpbGUKaW5kZXggODc4Njg1ZC4uMjAyZThlMSAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlCisrKyBiL0RvYy9NYWtlZmlsZQpAQCAtMTUzLDcgKzE1Myw3IEBACiAJY3AgLXBQUiBidWlsZC9lcHViL1B5dGhvbi5lcHViIGRpc3QvcHl0aG9uLSQoRElTVFZFUlNJT04pLWRvY3MuZXB1YgogCiBjaGVjazoKLQkkKFBZVEhPTikgdG9vbHMvcnN0bGludC5weSAtaSB0b29scworCSQoUFlUSE9OKSB0b29scy9yc3RsaW50LnB5IC1pIHRvb2xzIC1pIHZlbnYKIAogc2VydmU6CiAJLi4vVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weSBidWlsZC9odG1sCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IGQ1ZTQ3MDMuLjU2OTkwM2YgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0yMjMsOCArMjIzLDcgQEAKICAgIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVgIHdpbGwgdXNlIHRoaXMgbG9jYXRpb24gYXMgdGhlIGJ1ZmZlciBhbmQgaW50ZXJwcmV0IHRoZQogICAgaW5pdGlhbCB2YWx1ZSBvZiAqXCpidWZmZXJfbGVuZ3RoKiBhcyB0aGUgYnVmZmVyIHNpemUuICBJdCB3aWxsIHRoZW4gY29weSB0aGUKICAgIGVuY29kZWQgZGF0YSBpbnRvIHRoZSBidWZmZXIgYW5kIE5VTC10ZXJtaW5hdGUgaXQuICBJZiB0aGUgYnVmZmVyIGlzIG5vdCBsYXJnZQotICAgZW5vdWdoLCBhIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSBzZXQuCi0gICBOb3RlOiBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjYgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KKyAgIGVub3VnaCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KIAogICAgSW4gYm90aCBjYXNlcywgKlwqYnVmZmVyX2xlbmd0aCogaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIGVuY29kZWQgZGF0YQogICAgd2l0aG91dCB0aGUgdHJhaWxpbmcgTlVMIGJ5dGUuCkBAIC0yNjYsMTUgKzI2NSwxMiBAQAogICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nYCB3aXRob3V0CiAgICBvdmVyZmxvdyBjaGVja2luZy4KIAotYGBMYGAgKDpjbGFzczpgaW50YCkgW1BZX0xPTkdfTE9OR10KLSAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4gIFRoaXMgZm9ybWF0IGlzIG9ubHkKLSAgIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpjOnR5cGU6YGxvbmcgbG9uZ2AgKG9yIDpjOnR5cGU6YF9pbnQ2NGAgb24KLSAgIFdpbmRvd3MpLgorYGBMYGAgKDpjbGFzczpgaW50YCkgW2xvbmcgbG9uZ10KKyAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4KIAotYGBLYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIFBZX0xPTkdfTE9OR10KK2BgS2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nIGxvbmddCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AKLSAgIHdpdGhvdXQgb3ZlcmZsb3cgY2hlY2tpbmcuICBUaGlzIGZvcm1hdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdAotICAgc3VwcG9ydCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmB1bnNpZ25lZCBfaW50NjRgIG9uIFdpbmRvd3MpLgorICAgd2l0aG91dCBvdmVyZmxvdyBjaGVja2luZy4KIAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgpAQCAtNDI0LDggKzQyMCwxNSBAQAogLi4gYzpmdW5jdGlvbjo6IGludCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCAuLi4pCiAKICAgIFBhcnNlIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBib3RoIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKLSAgIHBhcmFtZXRlcnMgaW50byBsb2NhbCB2YXJpYWJsZXMuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzczsgb24gZmFpbHVyZSwgaXQKLSAgIHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgcGFyYW1ldGVycyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gIFRoZSAqa2V5d29yZHMqIGFyZ3VtZW50IGlzIGEKKyAgICpOVUxMKi10ZXJtaW5hdGVkIGFycmF5IG9mIGtleXdvcmQgcGFyYW1ldGVyIG5hbWVzLiAgRW1wdHkgbmFtZXMgZGVub3RlCisgICA6cmVmOmBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgorICAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3M7IG9uIGZhaWx1cmUsIGl0IHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUKKyAgIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIDpyZWY6YHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzCisgICAgICA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCB2YV9saXN0IHZhcmdzKQpAQCAtNTg4LDE1ICs1OTEsMTEgQEAKICAgIGBga2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nXQogICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuCiAKLSAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtQWV9MT05HX0xPTkddCi0gICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LiBPbmx5IGF2YWlsYWJsZQotICAgICAgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6Yzp0eXBlOmBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmBfaW50NjRgIG9uCi0gICAgICBXaW5kb3dzKS4KKyAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtsb25nIGxvbmddCisgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LgogCi0gICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgUFlfTE9OR19MT05HXQotICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4gT25seQotICAgICAgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCAob3IKLSAgICAgIDpjOnR5cGU6YHVuc2lnbmVkIF9pbnQ2NGAgb24gV2luZG93cykuCisgICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgbG9uZyBsb25nXQorICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4KIAogICAgYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBQeV9zc2l6ZV90YCB0byBhIFB5dGhvbiBpbnRlZ2VyLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IDE5Y2JiM2IuLjI1ZmIyOWMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTMwNiw2ICszMDYsMTMgQEAKICAgIDptb2Q6YHdhcm5pbmdzYCBtb2R1bGUgYW5kIHRoZSA6b3B0aW9uOmAtV2Agb3B0aW9uIGluIHRoZSBjb21tYW5kIGxpbmUKICAgIGRvY3VtZW50YXRpb24uICBUaGVyZSBpcyBubyBDIEFQSSBmb3Igd2FybmluZyBjb250cm9sLgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorCisgICBNdWNoIGxpa2UgOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIGJ1dCB0aGlzIGZ1bmN0aW9uIGFsbG93cyBmb3IKKyAgIHNwZWNpZnlpbmcgYSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgdG8gcmFpc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnJlZ2lzdHJ5KQogCkBAIC0zMzQsNiArMzQxLDE0IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKworICAgRnVuY3Rpb24gc2ltaWxhciB0byA6YzpmdW5jOmBQeUVycl9XYXJuRm9ybWF0YCwgYnV0ICpjYXRlZ29yeSogaXMKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AgYW5kIHBhc3MgKnNvdXJjZSogdG8gOmZ1bmM6YHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogUXVlcnlpbmcgdGhlIGVycm9yIGluZGljYXRvcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC03NzQsNiArNzg5LDggQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgIHwgOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgIHwgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCBlNzhkZGFlLi5jMjcyYTFjIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgICB0cmlwbGU6IG1vZHVsZTsgc2VhcmNoOyBwYXRoCiAgICAgICBzaW5nbGU6IFB5U3lzX1NldEFyZ3YoKQogICAgICAgc2luZ2xlOiBQeVN5c19TZXRBcmd2RXgoKQotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogCiAgICBJbml0aWFsaXplIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBJbiBhbiBhcHBsaWNhdGlvbiBlbWJlZGRpbmcgIFB5dGhvbiwgdGhpcwogICAgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgYW55IG90aGVyIFB5dGhvbi9DIEFQSSBmdW5jdGlvbnM7IHdpdGggdGhlCkBAIC0zNCw3ICszNCw3IEBACiAgICBtb2R1bGVzIDptb2Q6YGJ1aWx0aW5zYCwgOm1vZDpgX19tYWluX19gIGFuZCA6bW9kOmBzeXNgLiAgSXQgYWxzbyBpbml0aWFsaXplcwogICAgdGhlIG1vZHVsZSBzZWFyY2ggcGF0aCAoYGBzeXMucGF0aGBgKS4gSXQgZG9lcyBub3Qgc2V0IGBgc3lzLmFyZ3ZgYDsgdXNlCiAgICA6YzpmdW5jOmBQeVN5c19TZXRBcmd2RXhgIGZvciB0aGF0LiAgVGhpcyBpcyBhIG5vLW9wIHdoZW4gY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lCi0gICAod2l0aG91dCBjYWxsaW5nIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBmaXJzdCkuICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWU7IGl0IGlzIGEKKyAgICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlOyBpdCBpcyBhCiAgICBmYXRhbCBlcnJvciBpZiB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbHMuCiAKICAgIC4uIG5vdGU6OgpAQCAtNTIsMTkgKzUyLDIwIEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X0lzSW5pdGlhbGl6ZWQoKQogCiAgICBSZXR1cm4gdHJ1ZSAobm9uemVybykgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBmYWxzZQotICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBpcyBjYWxsZWQsIHRoaXMgcmV0dXJucyBmYWxzZSB1bnRpbAorICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyByZXR1cm5zIGZhbHNlIHVudGlsCiAgICA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBpcyBjYWxsZWQgYWdhaW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRmluYWxpemUoKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeV9GaW5hbGl6ZUV4KCkKIAogICAgVW5kbyBhbGwgaW5pdGlhbGl6YXRpb25zIG1hZGUgYnkgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYW5kIHN1YnNlcXVlbnQgdXNlIG9mCiAgICBQeXRob24vQyBBUEkgZnVuY3Rpb25zLCBhbmQgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyAoc2VlCiAgICA6YzpmdW5jOmBQeV9OZXdJbnRlcnByZXRlcmAgYmVsb3cpIHRoYXQgd2VyZSBjcmVhdGVkIGFuZCBub3QgeWV0IGRlc3Ryb3llZCBzaW5jZQogICAgdGhlIGxhc3QgY2FsbCB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4gIElkZWFsbHksIHRoaXMgZnJlZXMgYWxsIG1lbW9yeQogICAgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBUaGlzIGlzIGEgbm8tb3Agd2hlbiBjYWxsZWQgZm9yIGEgc2Vjb25kCi0gICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuCi0gICB2YWx1ZTsgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24gYXJlIGlnbm9yZWQuCisgICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgTm9ybWFsbHkgdGhlCisgICByZXR1cm4gdmFsdWUgaXMgMC4gIElmIHRoZXJlIHdlcmUgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24KKyAgIChmbHVzaGluZyBidWZmZXJlZCBkYXRhKSwgLTEgaXMgcmV0dXJuZWQuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuICBBbiBlbWJlZGRpbmcgYXBwbGljYXRpb24KICAgIG1pZ2h0IHdhbnQgdG8gcmVzdGFydCBQeXRob24gd2l0aG91dCBoYXZpbmcgdG8gcmVzdGFydCB0aGUgYXBwbGljYXRpb24gaXRzZWxmLgpAQCAtODMsNyArODQsMTUgQEAKICAgIGZyZWVkLiAgU29tZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzIG1heSBub3QgYmUgZnJlZWQuICBTb21lCiAgICBleHRlbnNpb25zIG1heSBub3Qgd29yayBwcm9wZXJseSBpZiB0aGVpciBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGNhbGxlZCBtb3JlCiAgICB0aGFuIG9uY2U7IHRoaXMgY2FuIGhhcHBlbiBpZiBhbiBhcHBsaWNhdGlvbiBjYWxscyA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBhbmQKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBtb3JlIHRoYW4gb25jZS4KKyAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIG1vcmUgdGhhbiBvbmNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9GaW5hbGl6ZSgpCisKKyAgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIHRoYXQKKyAgIGRpc3JlZ2FyZHMgdGhlIHJldHVybiB2YWx1ZS4KIAogCiBQcm9jZXNzLXdpZGUgcGFyYW1ldGVycwpAQCAtMTExLDcgKzEyMCw3IEBACiAgICBOb3RlIHRoYXQgOmRhdGE6YHN5cy5zdGRlcnJgIGFsd2F5cyB1c2VzIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IKICAgIGhhbmRsZXIsIHJlZ2FyZGxlc3Mgb2YgdGhpcyAob3IgYW55IG90aGVyKSBzZXR0aW5nLgogCi0gICBJZiA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgaXMgY2FsbGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgbmVlZCB0byBiZSBjYWxsZWQKKyAgIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIG5lZWQgdG8gYmUgY2FsbGVkCiAgICBhZ2FpbiBpbiBvcmRlciB0byBhZmZlY3Qgc3Vic2VxdWVudCBjYWxscyB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4KIAogICAgUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIGEgbm9uemVybyB2YWx1ZSBvbiBlcnJvciAoZS5nLiBjYWxsaW5nIGFmdGVyIHRoZQpAQCAtOTIyLDcgKzkzMSw3IEBACiAgICBlbnRyeS4pCiAKICAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogUHlfRmluYWxpemUoKQorICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKICAgICAgIHNpbmdsZTogUHlfSW5pdGlhbGl6ZSgpCiAKICAgIEV4dGVuc2lvbiBtb2R1bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiAoc3ViLSlpbnRlcnByZXRlcnMgYXMgZm9sbG93czogdGhlIGZpcnN0CkBAIC05MzIsNyArOTQxLDcgQEAKICAgIGFuZCBmaWxsZWQgd2l0aCB0aGUgY29udGVudHMgb2YgdGhpcyBjb3B5OyB0aGUgZXh0ZW5zaW9uJ3MgYGBpbml0YGAgZnVuY3Rpb24gaXMKICAgIG5vdCBjYWxsZWQuICBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGhhcHBlbnMgd2hlbiBhbiBleHRlbnNpb24gaXMKICAgIGltcG9ydGVkIGFmdGVyIHRoZSBpbnRlcnByZXRlciBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlLWluaXRpYWxpemVkIGJ5IGNhbGxpbmcKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCisgICA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCiAgICBgYGluaXRtb2R1bGVgYCBmdW5jdGlvbiAqaXMqIGNhbGxlZCBhZ2Fpbi4KIAogICAgLi4gaW5kZXg6OiBzaW5nbGU6IGNsb3NlKCkgKGluIG1vZHVsZSBvcykKQEAgLTk0MCwxNCArOTQ5LDE0IEBACiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIAotICAgLi4gaW5kZXg6OiBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgIC4uIGluZGV4Ojogc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKIAogICAgRGVzdHJveSB0aGUgKHN1Yi0paW50ZXJwcmV0ZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIHRocmVhZCBzdGF0ZS4gVGhlIGdpdmVuCiAgICB0aHJlYWQgc3RhdGUgbXVzdCBiZSB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUuICBTZWUgdGhlIGRpc2N1c3Npb24gb2YgdGhyZWFkCiAgICBzdGF0ZXMgYmVsb3cuICBXaGVuIHRoZSBjYWxsIHJldHVybnMsIHRoZSBjdXJyZW50IHRocmVhZCBzdGF0ZSBpcyAqTlVMTCouICBBbGwKICAgIHRocmVhZCBzdGF0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW50ZXJwcmV0ZXIgYXJlIGRlc3Ryb3llZC4gIChUaGUgZ2xvYmFsCiAgICBpbnRlcnByZXRlciBsb2NrIG11c3QgYmUgaGVsZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFuZCBpcyBzdGlsbCBoZWxkCi0gICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVgIHdpbGwgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyB0aGF0CisgICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgd2lsbCBkZXN0cm95IGFsbCBzdWItaW50ZXJwcmV0ZXJzIHRoYXQKICAgIGhhdmVuJ3QgYmVlbiBleHBsaWNpdGx5IGRlc3Ryb3llZCBhdCB0aGF0IHBvaW50LgogCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbnRyby5yc3QgYi9Eb2MvYy1hcGkvaW50cm8ucnN0CmluZGV4IGJjM2E3NTIuLjc0NjgxZDIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbnRyby5yc3QKKysrIGIvRG9jL2MtYXBpL2ludHJvLnJzdApAQCAtNjQsOSArNjQsMTAgQEAKIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yaWVzIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlL3B5dGhvbnZlcnNpb24vYCBhbmQKIDpmaWxlOmB7ZXhlY19wcmVmaXh9L2luY2x1ZGUvcHl0aG9udmVyc2lvbi9gLCB3aGVyZSA6ZW52dmFyOmBwcmVmaXhgIGFuZAogOmVudnZhcjpgZXhlY19wcmVmaXhgIGFyZSBkZWZpbmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMgdG8gUHl0aG9uJ3MKLTpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdCBhbmQgKnZlcnNpb24qIGlzIGBgc3lzLnZlcnNpb25bOjNdYGAuICBPbiBXaW5kb3dzLAotdGhlIGhlYWRlcnMgYXJlIGluc3RhbGxlZCBpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMKLXRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgorOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0IGFuZCAqdmVyc2lvbiogaXMKK2BgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdYGAuICBPbiBXaW5kb3dzLCB0aGUgaGVhZGVycyBhcmUgaW5zdGFsbGVkCitpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMgdGhlIGluc3RhbGxhdGlvbgorZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgogCiBUbyBpbmNsdWRlIHRoZSBoZWFkZXJzLCBwbGFjZSBib3RoIGRpcmVjdG9yaWVzIChpZiBkaWZmZXJlbnQpIG9uIHlvdXIgY29tcGlsZXIncwogc2VhcmNoIHBhdGggZm9yIGluY2x1ZGVzLiAgRG8gKm5vdCogcGxhY2UgdGhlIHBhcmVudCBkaXJlY3RvcmllcyBvbiB0aGUgc2VhcmNoCkBAIC01NzgsOSArNTc5LDkgQEAKIGFwcGxpY2F0aW9uIG1heSB3YW50IHRvIHN0YXJ0IG92ZXIgKG1ha2UgYW5vdGhlciBjYWxsIHRvCiA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCkgb3IgdGhlIGFwcGxpY2F0aW9uIGlzIHNpbXBseSBkb25lIHdpdGggaXRzICB1c2Ugb2YKIFB5dGhvbiBhbmQgd2FudHMgdG8gZnJlZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IFB5dGhvbi4gIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAotYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAuICBUaGUgZnVuY3Rpb24gOmM6ZnVuYzpgUHlfSXNJbml0aWFsaXplZGAgcmV0dXJucworYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YC4gIFRoZSBmdW5jdGlvbiA6YzpmdW5jOmBQeV9Jc0luaXRpYWxpemVkYCByZXR1cm5zCiB0cnVlIGlmIFB5dGhvbiBpcyBjdXJyZW50bHkgaW4gdGhlIGluaXRpYWxpemVkIHN0YXRlLiAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dAotdGhlc2UgZnVuY3Rpb25zIGlzIGdpdmVuIGluIGEgbGF0ZXIgY2hhcHRlci4gTm90aWNlIHRoYXQgOmM6ZnVuYzpgUHlfRmluYWxpemVgCit0aGVzZSBmdW5jdGlvbnMgaXMgZ2l2ZW4gaW4gYSBsYXRlciBjaGFwdGVyLiBOb3RpY2UgdGhhdCA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YAogZG9lcyAqbm90KiBmcmVlIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGUuZy4gbWVtb3J5CiBhbGxvY2F0ZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMgY3VycmVudGx5IGNhbm5vdCBiZSByZWxlYXNlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xvbmcucnN0IGIvRG9jL2MtYXBpL2xvbmcucnN0CmluZGV4IGIzNDgwMTUuLmJhZTk3MDMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9sb25nLnJzdAorKysgYi9Eb2MvYy1hcGkvbG9uZy5yc3QKQEAgLTYyLDEzICs2MiwxMyBAQAogICAgKk5VTEwqIG9uIGZhaWx1cmUuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyB2KQogCiAgICBSZXR1cm4gYSBuZXcgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCBvYmplY3QgZnJvbSBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCwgb3IgKk5VTEwqCiAgICBvbiBmYWlsdXJlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nIHYpCiAKICAgIFJldHVybiBhIG5ldyA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgIG9iamVjdCBmcm9tIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgLAogICAgb3IgKk5VTEwqIG9uIGZhaWx1cmUuCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAgIG9jY3VycyBzZXQgKlwqb3ZlcmZsb3cqIHRvIGBgMGBgIGFuZCByZXR1cm4gYGAtMWBgIGFzIHVzdWFsLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKKy4uIGM6ZnVuY3Rpb246OiBsb25nIGxvbmcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgIDpjOnR5cGU6YGxvbmdgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqb2JqLCBpbnQgKm92ZXJmbG93KQorLi4gYzpmdW5jdGlvbjo6IGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICpvYmosIGludCAqb3ZlcmZsb3cpCiAKICAgIFJldHVybiBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqb2JqKi4gIElmICpvYmoqIGlzIG5vdCBhbgogICAgaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCwgZmlyc3QgY2FsbCBpdHMgOm1ldGg6YF9faW50X19gIG1ldGhvZApAQCAtMjEwLDE2ICsyMTAsMTYgQEAKICAgIDpjOnR5cGU6YHNpemVfdGAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICpweWxvbmcpCisuLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgbG9uZyBsb25nIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKnB5bG9uZykKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCiAKLSAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgUFlfTE9OR19MT05HYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4KLSAgICpweWxvbmcqIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YC4KKyAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4gICpweWxvbmcqCisgICBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAuCiAKICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGlmIHRoZSB2YWx1ZSBvZiAqcHlsb25nKiBpcyBvdXQgb2YgcmFuZ2UgZm9yIGFuCi0gICA6Yzp0eXBlOmB1bnNpZ25lZCBQWV9MT05HX0xPTkdgLgorICAgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEEgbmVnYXRpdmUgKnB5bG9uZyogbm93IHJhaXNlcyA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgbm90IDpleGM6YFR5cGVFcnJvcmAuCkBAIC0yMzUsNyArMjM1LDcgQEAKICAgIHJldHVybiB0aGUgcmVkdWN0aW9uIG9mIHRoYXQgdmFsdWUgbW9kdWxvIDpjb25zdDpgVUxPTkdfTUFYICsgMWAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQorLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIGxvbmcgbG9uZyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQogCiAgICBSZXR1cm4gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgcmVwcmVzZW50YXRpb24gb2YgKm9iaiouICBJZiAqb2JqKgogICAgaXMgbm90IGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAsIGZpcnN0IGNhbGwgaXRzIDptZXRoOmBfX2ludF9fYApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeS5yc3QgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdAppbmRleCAyOTBlZjA5Li4zZmY1NDUyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdApAQCAtODUsOSArODUsMTIgQEAKIAogLi4gc2VlYWxzbzo6CiAKKyAgIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZQorICAgdGhlIG1lbW9yeSBhbGxvY2F0b3JzIHVzZWQgYnkgUHl0aG9uLgorCiAgICBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DU1RBVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIHByaW50Ci0gICBtZW1vcnkgYWxsb2NhdGlvbiBzdGF0aXN0aWNzIGV2ZXJ5IHRpbWUgYSBuZXcgb2JqZWN0IGFyZW5hIGlzIGNyZWF0ZWQsIGFuZAotICAgb24gc2h1dGRvd24uCisgICBzdGF0aXN0aWNzIG9mIHRoZSA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yIDxweW1hbGxvYz5gIGV2ZXJ5IHRpbWUgYQorICAgbmV3IHB5bWFsbG9jIG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCiAKIAogUmF3IE1lbW9yeSBJbnRlcmZhY2UKQEAgLTE2MiwxNSArMTY1LDE3IEBACiBiZWhhdmlvciB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcywgYXJlIGF2YWlsYWJsZSBmb3IgYWxsb2NhdGluZyBhbmQgcmVsZWFzaW5nCiBtZW1vcnkgZnJvbSB0aGUgUHl0aG9uIGhlYXAuCiAKLVRoZSBkZWZhdWx0IG1lbW9yeSBibG9jayBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKLTpjOmZ1bmM6YG1hbGxvY2AsIDpjOmZ1bmM6YGNhbGxvY2AsIDpjOmZ1bmM6YHJlYWxsb2NgIGFuZCA6YzpmdW5jOmBmcmVlYDsgY2FsbAotYGBtYWxsb2MoMSlgYCAob3IgYGBjYWxsb2MoMSwgMSlgYCkgd2hlbiByZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCitCeSBkZWZhdWx0LCB0aGVzZSBmdW5jdGlvbnMgdXNlIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IgPHB5bWFsbG9jPmAuCiAKIC4uIHdhcm5pbmc6OgogCiAgICBUaGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBtdXN0IGJlIGhlbGQgd2hlbiB1c2luZyB0aGVzZQogICAgZnVuY3Rpb25zLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBUaGUgZGVmYXVsdCBhbGxvY2F0b3IgaXMgbm93IHB5bWFsbG9jIGluc3RlYWQgb2Ygc3lzdGVtIDpjOmZ1bmM6YG1hbGxvY2AuCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9NYWxsb2Moc2l6ZV90IG4pCiAKICAgIEFsbG9jYXRlcyAqbiogYnl0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIG9mIHR5cGUgOmM6dHlwZTpgdm9pZFwqYCB0byB0aGUKQEAgLTI5MiwxNSArMjk3LDMyIEBACiAKICAgIEVudW0gdXNlZCB0byBpZGVudGlmeSBhbiBhbGxvY2F0b3IgZG9tYWluLiBEb21haW5zOgogCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5TWVtX1Jhd0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9SQVcKIAorICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAorCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9NRU0KKworICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AsCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fRnJlZWAKKworICAgLi4gYzp2YXI6OiBQWU1FTV9ET01BSU5fT0JKCisKKyAgICAgIEZ1bmN0aW9uczoKKworICAgICAgKiA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKQogCkBAIC0zMjUsNDMgKzM0Nyw2MiBAQAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKIAotICAgU2V0dXAgaG9va3MgdG8gZGV0ZWN0IGJ1Z3MgaW4gdGhlIGZvbGxvd2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgotICAgZnVuY3Rpb25zOgotCi0gICAtIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAotICAgLSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fRnJlZWAKLSAgIC0gOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICBTZXR1cCBob29rcyB0byBkZXRlY3QgYnVncyBpbiB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgZnVuY3Rpb25zLgogCiAgICBOZXdseSBhbGxvY2F0ZWQgbWVtb3J5IGlzIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhDQmBgLCBmcmVlZCBtZW1vcnkgaXMKLSAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLiBBZGRpdGlvbmFsIGNoZWNrczoKKyAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLgogCi0gICAtIGRldGVjdCBBUEkgdmlvbGF0aW9ucywgZXg6IDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgIGNhbGxlZCBvbiBhIGJ1ZmZlcgorICAgUnVudGltZSBjaGVja3M6CisKKyAgIC0gRGV0ZWN0IEFQSSB2aW9sYXRpb25zLCBleDogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAgY2FsbGVkIG9uIGEgYnVmZmVyCiAgICAgIGFsbG9jYXRlZCBieSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgCi0gICAtIGRldGVjdCB3cml0ZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgKGJ1ZmZlciB1bmRlcmZsb3cpCi0gICAtIGRldGVjdCB3cml0ZSBhZnRlciB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKGJ1ZmZlciBvdmVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorICAgLSBDaGVjayB0aGF0IHRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIGlzIGhlbGQgd2hlbgorICAgICBhbGxvY2F0b3IgZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDoKKyAgICAgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDoKKyAgICAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCkgZG9tYWlucyBhcmUgY2FsbGVkCiAKLSAgIFRoZSBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYgUHl0aG9uIGlzIG5vdCBjb21waWxlZCBpcyBkZWJ1ZyBtb2RlLgorICAgT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyB1c2UgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZQorICAgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSB0cmFjZWJhY2sgaXMgb25seQorICAgZGlzcGxheWVkIGlmIDptb2Q6YHRyYWNlbWFsbG9jYCBpcyB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIHRoZQorICAgbWVtb3J5IGJsb2NrIHdhcyB0cmFjZWQuCisKKyAgIFRoZXNlIGhvb2tzIGFyZSBpbnN0YWxsZWQgYnkgZGVmYXVsdCBpZiBQeXRob24gaXMgY29tcGlsZWQgaW4gZGVidWcKKyAgIG1vZGUuIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGluc3RhbGwKKyAgIGRlYnVnIGhvb2tzIG9uIGEgUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGFsc28gd29ya3Mgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgIE9uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgbm93IHVzZSA6bW9kOmB0cmFjZW1hbGxvY2AgdG8gZ2V0IHRoZSB0cmFjZWJhY2sKKyAgICAgIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSBkZWJ1ZyBob29rcyBub3cgYWxzbyBjaGVjaworICAgICAgaWYgdGhlIEdJTCBpcyBoZWxkIHdoZW4gZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIGFuZAorICAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgZG9tYWlucyBhcmUgY2FsbGVkLgogCiAKLUN1c3RvbWl6ZSBQeU9iamVjdCBBcmVuYSBBbGxvY2F0b3IKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy4uIF9weW1hbGxvYzoKIAotUHl0aG9uIGhhcyBhICpweW1hbGxvYyogYWxsb2NhdG9yIGZvciBhbGxvY2F0aW9ucyBzbWFsbGVyIHRoYW4gNTEyIGJ5dGVzLiBUaGlzCi1hbGxvY2F0b3IgaXMgb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkKLW1hcHBpbmdzIGNhbGxlZCAiYXJlbmFzIiB3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8KLTpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIKLXRoYW4gNTEyIGJ5dGVzLiAgKnB5bWFsbG9jKiBpcyB0aGUgZGVmYXVsdCBhbGxvY2F0b3IgdXNlZCBieQotOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYC4KK1RoZSBweW1hbGxvYyBhbGxvY2F0b3IKKz09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIGRlZmF1bHQgYXJlbmEgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CitQeXRob24gaGFzIGEgKnB5bWFsbG9jKiBhbGxvY2F0b3Igb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIChzbWFsbGVyIG9yIGVxdWFsCit0byA1MTIgYnl0ZXMpIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkgbWFwcGluZ3MgY2FsbGVkICJhcmVuYXMiCit3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCBhbmQKKzpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIgdGhhbiA1MTIgYnl0ZXMuCisKKypweW1hbGxvYyogaXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIG9mIHRoZSA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCAoZXg6Cis6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OgorOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgZG9tYWlucy4KKworVGhlIGFyZW5hIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAqIDpjOmZ1bmM6YFZpcnR1YWxBbGxvY2AgYW5kIDpjOmZ1bmM6YFZpcnR1YWxGcmVlYCBvbiBXaW5kb3dzLAogKiA6YzpmdW5jOmBtbWFwYCBhbmQgOmM6ZnVuYzpgbXVubWFwYCBpZiBhdmFpbGFibGUsCiAqIDpjOmZ1bmM6YG1hbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgIG90aGVyd2lzZS4KIAorQ3VzdG9taXplIHB5bWFsbG9jIEFyZW5hIEFsbG9jYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogLi4gYzp0eXBlOjogUHlPYmplY3RBcmVuYUFsbG9jYXRvcgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0IGIvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CmluZGV4IGNjODQzMTQuLmU5ZThhZGQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKQEAgLTE1MCw4ICsxNTAsOSBAQAogVGhlIDphdHRyOmBtbF9mbGFnc2AgZmllbGQgaXMgYSBiaXRmaWVsZCB3aGljaCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGZsYWdzLgogVGhlIGluZGl2aWR1YWwgZmxhZ3MgaW5kaWNhdGUgZWl0aGVyIGEgY2FsbGluZyBjb252ZW50aW9uIG9yIGEgYmluZGluZwogY29udmVudGlvbi4gIE9mIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gZmxhZ3MsIG9ubHkgOmNvbnN0OmBNRVRIX1ZBUkFSR1NgIGFuZAotOmNvbnN0OmBNRVRIX0tFWVdPUkRTYCBjYW4gYmUgY29tYmluZWQuIEFueSBvZiB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZsYWdzCi1jYW4gYmUgY29tYmluZWQgd2l0aCBhIGJpbmRpbmcgZmxhZy4KKzpjb25zdDpgTUVUSF9LRVlXT1JEU2AgY2FuIGJlIGNvbWJpbmVkIChidXQgbm90ZSB0aGF0IDpjb25zdDpgTUVUSF9LRVlXT1JEU2AKK2Fsb25lIGlzIGVxdWl2YWxlbnQgdG8gYGBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTYGApLiBBbnkgb2YgdGhlIGNhbGxpbmcKK2NvbnZlbnRpb24gZmxhZ3MgY2FuIGJlIGNvbWJpbmVkIHdpdGggYSBiaW5kaW5nIGZsYWcuCiAKIAogLi4gZGF0YTo6IE1FVEhfVkFSQVJHUwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N5cy5yc3QgYi9Eb2MvYy1hcGkvc3lzLnJzdAppbmRleCAzZDgzYjI3Li4wMzVjZGMxIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvc3lzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3lzLnJzdApAQCAtNSw2ICs1LDE3IEBACiBPcGVyYXRpbmcgU3lzdGVtIFV0aWxpdGllcwogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCkKKworICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbiBmb3IgKnBhdGgqLiBJZiB0aGUgb2JqZWN0IGlzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QsIHRoZW4gaXRzIHJlZmVyZW5jZSBjb3VudCBpcworICAgaW5jcmVtZW50ZWQuIElmIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlLAorICAgdGhlbiA6bWV0aDpgfm9zLlBhdGhMaWtlLl9fZnNwYXRoX19gIGlzIHJldHVybmVkIGFzIGxvbmcgYXMgaXQgaXMgYQorICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gT3RoZXJ3aXNlIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkCisgICBhbmQgYGBOVUxMYGAgaXMgcmV0dXJuZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIApAQCAtMjEyLDIwICsyMjMsMjQgQEAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0V4aXQoaW50IHN0YXR1cykKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBleGl0KCkKIAotICAgRXhpdCB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjYWxscyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgYW5kIHRoZW4gY2FsbHMgdGhlCi0gICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4KKyAgIEV4aXQgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIFRoaXMgY2FsbHMgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgYW5kIHRoZW4gY2FsbHMgdGhlCisgICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4gIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgCisgICBpbmRpY2F0ZXMgYW4gZXJyb3IsIHRoZSBleGl0IHN0YXR1cyBpcyBzZXQgdG8gMTIwLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgRXJyb3JzIGZyb20gZmluYWxpemF0aW9uIG5vIGxvbmdlciBpZ25vcmVkLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSAoKSkKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBjbGVhbnVwIGZ1bmN0aW9ucwogCi0gICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplYC4gIFRoZSBjbGVhbnVwCisgICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgLiAgVGhlIGNsZWFudXAKICAgIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIGFuZCBzaG91bGQgcmV0dXJuIG5vIHZhbHVlLiAgQXQgbW9zdAogICAgMzIgY2xlYW51cCBmdW5jdGlvbnMgY2FuIGJlIHJlZ2lzdGVyZWQuICBXaGVuIHRoZSByZWdpc3RyYXRpb24gaXMgc3VjY2Vzc2Z1bCwKICAgIDpjOmZ1bmM6YFB5X0F0RXhpdGAgcmV0dXJucyBgYDBgYDsgb24gZmFpbHVyZSwgaXQgcmV0dXJucyBgYC0xYGAuICBUaGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IGEwNjcyY2EuLjA4MzU0NzcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTQ0MCw3ICs0NDAsNiBAQAogICAgLi4gJSBiZWNhdXNlIG5vdCBhbGwgY29tcGlsZXJzIHN1cHBvcnQgdGhlICV6IHdpZHRoIG1vZGlmaWVyIC0tIHdlIGZha2UgaXQKICAgIC4uICUgd2hlbiBuZWNlc3NhcnkgdmlhIGludGVycG9sYXRpbmcgUFlfRk9STUFUX1NJWkVfVC4KICAgIC4uICUgU2ltaWxhciBjb21tZW50cyBhcHBseSB0byB0aGUgJWxsIHdpZHRoIG1vZGlmaWVyIGFuZAotICAgLi4gJSBQWV9GT1JNQVRfTE9OR19MT05HLgogCiAgICAuLiB0YWJ1bGFyY29sdW1uczo6IHxsfGx8THwKIApAQCAtNTI1LDExICs1MjQsNiBAQAogICAgY29waWVkIGFzLWlzIHRvIHRoZSByZXN1bHQgc3RyaW5nLCBhbmQgYW55IGV4dHJhIGFyZ3VtZW50cyBkaXNjYXJkZWQuCiAKICAgIC4uIG5vdGU6OgotCi0gICAgICBUaGUgYCIlbGxkImAgYW5kIGAiJWxsdSJgIGZvcm1hdCBzcGVjaWZpZXJzIGFyZSBvbmx5IGF2YWlsYWJsZQotICAgICAgd2hlbiA6Y29uc3Q6YEhBVkVfTE9OR19MT05HYCBpcyBkZWZpbmVkLgotCi0gICAuLiBub3RlOjoKICAgICAgIFRoZSB3aWR0aCBmb3JtYXR0ZXIgdW5pdCBpcyBudW1iZXIgb2YgY2hhcmFjdGVycyByYXRoZXIgdGhhbiBieXRlcy4KICAgICAgIFRoZSBwcmVjaXNpb24gZm9ybWF0dGVyIHVuaXQgaXMgbnVtYmVyIG9mIGJ5dGVzIGZvciBgYCIlcyJgYCBhbmQKICAgICAgIGBgIiVWImBgIChpZiB0aGUgYGBQeU9iamVjdCpgYCBhcmd1bWVudCBpcyBOVUxMKSwgYW5kIGEgbnVtYmVyIG9mCkBAIC04MDgsMzggKzgwMiw0NyBAQAogIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogVG8gZW5jb2RlIGFuZCBkZWNvZGUgZmlsZSBuYW1lcyBhbmQgb3RoZXIgZW52aXJvbm1lbnQgc3RyaW5ncywKLTpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1FbmNvZGluZ2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVuY29kaW5nLCBhbmQKLWBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZXJyb3IgaGFuZGxlciAoOnBlcDpgMzgzYCkuIFRvCi1lbmNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYCBhcyB0aGUgY29udmVyc2lvbiBmdW5jdGlvbjoKKzpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBlbmNvZGluZywgYW5kCis6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVycm9yIGhhbmRsZXIKKyg6cGVwOmAzODNgIGFuZCA6cGVwOmA1MjlgKS4gVG8gZW5jb2RlIGZpbGUgbmFtZXMgdG8gOmNsYXNzOmBieXRlc2AgZHVyaW5nCithcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAgY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nCis6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGFzIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uOgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9GU0NvbnZlcnRlcihQeU9iamVjdCogb2JqLCB2b2lkKiByZXN1bHQpCiAKLSAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgdG8gOmNsYXNzOmBieXRlc2AgdXNpbmcKKyAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgLS0gb2J0YWluZWQgZGlyZWN0bHkgb3IKKyAgIHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0byA6Y2xhc3M6YGJ5dGVzYCB1c2luZwogICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdGA7IDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4KICAgICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeUJ5dGVzT2JqZWN0KmAgd2hpY2ggbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzCiAgICBubyBsb25nZXIgdXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCi1UbyBkZWNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTRGVjb2RlcmAgYXMgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb246CitUbyBkZWNvZGUgZmlsZSBuYW1lcyB0byA6Y2xhc3M6YHN0cmAgZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcsIHRoZSBgYCJPJiJgYAorY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0RlY29kZXJgIGFzIHRoZQorY29udmVyc2lvbiBmdW5jdGlvbjoKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBvYmosIHZvaWQqIHJlc3VsdCkKIAotICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGRlY29kZSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzIHRvIDpjbGFzczpgc3RyYCB1c2luZwotICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgOyA6Y2xhc3M6YHN0cmAgb2JqZWN0cyBhcmUgb3V0cHV0Ci0gICBhcy1pcy4gKnJlc3VsdCogbXVzdCBiZSBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdCpgIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQKLSAgIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisgICBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZGVjb2RlIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgLS0gb2J0YWluZWQgZWl0aGVyCisgICBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0bworICAgOmNsYXNzOmBzdHJgIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYDsgOmNsYXNzOmBzdHJgCisgICBvYmplY3RzIGFyZSBvdXRwdXQgYXMtaXMuICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3QqYCB3aGljaAorICAgbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiAKICAgIERlY29kZSBhIHN0cmluZyB1c2luZyA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBhbmQgdGhlCi0gICBgYCJzdXJyb2dhdGVlc2NhcGUiYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAic3RyaWN0ImBgIG9uIFdpbmRvd3MuCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgpAQCAtODUzLDI4ICs4NTYsMjggQEAKIAogICAgICAgVGhlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAic3RyaWN0ImBgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVc2UgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGNvbnN0IGNoYXIgKnMpCiAKICAgIERlY29kZSBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdXNpbmcgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AKLSAgIGFuZCB0aGUgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLgorICAgYW5kIHRoZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCiAgICBVc2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgIGlmIHlvdSBrbm93IHRoZSBzdHJpbmcgbGVuZ3RoLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgInN0cmljdCJgYCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVXNlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2Agd2l0aCB0aGUKLSAgIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cywgYW5kIHJldHVybgorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIsIGFuZCByZXR1cm4KICAgIDpjbGFzczpgYnl0ZXNgLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgbWF5IGNvbnRhaW4KICAgIG51bGwgYnl0ZXMuCiAKQEAgLTg5MSw2ICs4OTQsOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVzZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogd2NoYXJfdCBTdXBwb3J0CiAiIiIiIiIiIiIiIiIiIiIKZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IGUzODgxOTUuLjhiNDY5ZjQgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtOTIxLDYgKzkyMSw5IEBACiBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yOmludDo6OgogUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcjpQeU9iamVjdCo6bzowOgogCitQeU9TX0ZTUGF0aDpQeU9iamVjdCo6OisxOgorUHlPU19GU1BhdGg6UHlPYmplY3QqOnBhdGg6MDoKKwogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6OisxOgogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6Y2FsbGFibGVfb2JqZWN0OjA6CiBQeU9iamVjdF9DYWxsOlB5T2JqZWN0KjphcmdzOjA6CmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKaW5kZXggNjQwMzNkYy4uYWIyZjYxNiAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdApAQCAtNjcsNyArNjcsOSBAQAogICAgICAgIFB5X0luaXRpYWxpemUoKTsKICAgICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcoImZyb20gdGltZSBpbXBvcnQgdGltZSxjdGltZVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpbnQoJ1RvZGF5IGlzJywgY3RpbWUodGltZSgpKSlcbiIpOwotICAgICAgIFB5X0ZpbmFsaXplKCk7CisgICAgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgICAgZXhpdCgxMjApOworICAgICAgIH0KICAgICAgICBQeU1lbV9SYXdGcmVlKHByb2dyYW0pOwogICAgICAgIHJldHVybiAwOwogICAgfQpAQCAtNzYsNyArNzgsNyBAQAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgdG8gaW5mb3JtIHRoZSBpbnRlcnByZXRlciBhYm91dCBwYXRocyB0byBQeXRob24gcnVuLXRpbWUKIGxpYnJhcmllcy4gIE5leHQsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAsIGZvbGxvd2VkIGJ5IHRoZSBleGVjdXRpb24gb2YgYSBoYXJkLWNvZGVkIFB5dGhvbiBzY3JpcHQKLXRoYXQgcHJpbnRzIHRoZSBkYXRlIGFuZCB0aW1lLiAgQWZ0ZXJ3YXJkcywgdGhlIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBjYWxsIHNodXRzCit0aGF0IHByaW50cyB0aGUgZGF0ZSBhbmQgdGltZS4gIEFmdGVyd2FyZHMsIHRoZSA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBjYWxsIHNodXRzCiB0aGUgaW50ZXJwcmV0ZXIgZG93biwgZm9sbG93ZWQgYnkgdGhlIGVuZCBvZiB0aGUgcHJvZ3JhbS4gIEluIGEgcmVhbCBwcm9ncmFtLAogeW91IG1heSB3YW50IHRvIGdldCB0aGUgUHl0aG9uIHNjcmlwdCBmcm9tIGFub3RoZXIgc291cmNlLCBwZXJoYXBzIGEgdGV4dC1lZGl0b3IKIHJvdXRpbmUsIGEgZmlsZSwgb3IgYSBkYXRhYmFzZS4gIEdldHRpbmcgdGhlIFB5dGhvbiBjb2RlIGZyb20gYSBmaWxlIGNhbiBiZXR0ZXIKZGlmZiAtLWdpdCBhL0RvYy9mYXEvcHJvZ3JhbW1pbmcucnN0IGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKaW5kZXggNjk0NzUzZS4uOWM1ZTIwZCAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKKysrIGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKQEAgLTgzOCw3ICs4MzgsOCBAQAogVG8gY29udmVydCwgZS5nLiwgdGhlIG51bWJlciAxNDQgdG8gdGhlIHN0cmluZyAnMTQ0JywgdXNlIHRoZSBidWlsdC1pbiB0eXBlCiBjb25zdHJ1Y3RvciA6ZnVuYzpgc3RyYC4gIElmIHlvdSB3YW50IGEgaGV4YWRlY2ltYWwgb3Igb2N0YWwgcmVwcmVzZW50YXRpb24sIHVzZQogdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyA6ZnVuYzpgaGV4YCBvciA6ZnVuYzpgb2N0YC4gIEZvciBmYW5jeSBmb3JtYXR0aW5nLCBzZWUKLXRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLCBlLmcuIGBgIns6MDRkfSIuZm9ybWF0KDE0NClgYCB5aWVsZHMKK3RoZSA6cmVmOmBmLXN0cmluZ3NgIGFuZCA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9ucywKK2UuZy4gYGAiezowNGR9Ii5mb3JtYXQoMTQ0KWBgIHlpZWxkcwogYGAnMDE0NCdgYCBhbmQgYGAiezouM2Z9Ii5mb3JtYXQoMS4wLzMuMClgYCB5aWVsZHMgYGAnMC4zMzMnYGAuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2dsb3NzYXJ5LnJzdCBiL0RvYy9nbG9zc2FyeS5yc3QKaW5kZXggNDViNzk0Zi4uZjgwYjZkZiAxMDA2NDQKLS0tIGEvRG9jL2dsb3NzYXJ5LnJzdAorKysgYi9Eb2MvZ2xvc3NhcnkucnN0CkBAIC03MTgsNiArNzE4LDggQEAKIAogICAgICAgICAgICBkZWYgZnVuYyhmb28sIGJhcj1Ob25lKTogLi4uCiAKKyAgICAgIC4uIF9wb3NpdGlvbmFsLW9ubHlfcGFyYW1ldGVyOgorCiAgICAgICAqIDpkZm46YHBvc2l0aW9uYWwtb25seWA6IHNwZWNpZmllcyBhbiBhcmd1bWVudCB0aGF0IGNhbiBiZSBzdXBwbGllZCBvbmx5CiAgICAgICAgIGJ5IHBvc2l0aW9uLiAgUHl0aG9uIGhhcyBubyBzeW50YXggZm9yIGRlZmluaW5nIHBvc2l0aW9uYWwtb25seQogICAgICAgICBwYXJhbWV0ZXJzLiAgSG93ZXZlciwgc29tZSBidWlsdC1pbiBmdW5jdGlvbnMgaGF2ZSBwb3NpdGlvbmFsLW9ubHkKQEAgLTc3Niw2ICs3NzgsMTYgQEAKICAgICAgIE9uZSBvZiB0aGUgZGVmYXVsdCA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YCB3aGljaAogICAgICAgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYCBmb3IgbW9kdWxlcy4KIAorICAgcGF0aC1saWtlIG9iamVjdAorICAgICAgQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgc3lzdGVtIHBhdGguIEEgcGF0aC1saWtlIG9iamVjdCBpcyBlaXRoZXIKKyAgICAgIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCByZXByZXNlbnRpbmcgYSBwYXRoLCBvciBhbiBvYmplY3QKKyAgICAgIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wuIEFuIG9iamVjdCB0aGF0IHN1cHBvcnRzCisgICAgICB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wgY2FuIGJlIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgc3RyYCBvcgorICAgICAgOmNsYXNzOmBieXRlc2AgZmlsZSBzeXN0ZW0gcGF0aCBieSBjYWxsaW5nIHRoZSA6ZnVuYzpgb3MuZnNwYXRoYCBmdW5jdGlvbjsKKyAgICAgIDpmdW5jOmBvcy5mc2RlY29kZWAgYW5kIDpmdW5jOmBvcy5mc2VuY29kZWAgY2FuIGJlIHVzZWQgdG8gZ3VhcmFudGVlIGEKKyAgICAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCByZXN1bHQgaW5zdGVhZCwgcmVzcGVjdGl2ZWx5LiBJbnRyb2R1Y2VkCisgICAgICBieSA6cGVwOmA1MTlgLgorCiAgICBwb3J0aW9uCiAgICAgICBBIHNldCBvZiBmaWxlcyBpbiBhIHNpbmdsZSBkaXJlY3RvcnkgKHBvc3NpYmx5IHN0b3JlZCBpbiBhIHppcCBmaWxlKQogICAgICAgdGhhdCBjb250cmlidXRlIHRvIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFzIGRlZmluZWQgaW4gOnBlcDpgNDIwYC4KQEAgLTk1MiwxMyArOTY0LDI1IEBACiAgICAgICBgYCdccidgYC4gIFNlZSA6cGVwOmAyNzhgIGFuZCA6cGVwOmAzMTE2YCwgYXMgd2VsbCBhcwogICAgICAgOmZ1bmM6YGJ5dGVzLnNwbGl0bGluZXNgIGZvciBhbiBhZGRpdGlvbmFsIHVzZS4KIAorICAgdmFyaWFibGUgYW5ub3RhdGlvbgorICAgICAgQSB0eXBlIG1ldGFkYXRhIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIG1vZHVsZSBnbG9iYWwgdmFyaWFibGUgb3IKKyAgICAgIGEgY2xhc3MgYXR0cmlidXRlLiBJdHMgc3ludGF4IGlzIGV4cGxhaW5lZCBpbiBzZWN0aW9uIDpyZWY6YGFubmFzc2lnbmAuCisgICAgICBBbm5vdGF0aW9ucyBhcmUgc3RvcmVkIGluIHRoZSA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCBzcGVjaWFsCisgICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyBvciBtb2R1bGUgb2JqZWN0IGFuZCBjYW4gYmUgYWNjZXNzZWQgdXNpbmcKKyAgICAgIDpmdW5jOmB0eXBpbmcuZ2V0X3R5cGVfaGludHNgLgorCisgICAgICBQeXRob24gaXRzZWxmIGRvZXMgbm90IGFzc2lnbiBhbnkgcGFydGljdWxhciBtZWFuaW5nIHRvIHZhcmlhYmxlCisgICAgICBhbm5vdGF0aW9ucy4gVGhleSBhcmUgaW50ZW5kZWQgdG8gYmUgaW50ZXJwcmV0ZWQgYnkgdGhpcmQtcGFydHkgbGlicmFyaWVzCisgICAgICBvciB0eXBlIGNoZWNraW5nIHRvb2xzLiBTZWUgOnBlcDpgNTI2YCwgOnBlcDpgNDg0YCB3aGljaCBkZXNjcmliZQorICAgICAgc29tZSBvZiB0aGVpciBwb3RlbnRpYWwgdXNlcy4KKwogICAgdmlydHVhbCBlbnZpcm9ubWVudAogICAgICAgQSBjb29wZXJhdGl2ZWx5IGlzb2xhdGVkIHJ1bnRpbWUgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgUHl0aG9uIHVzZXJzCiAgICAgICBhbmQgYXBwbGljYXRpb25zIHRvIGluc3RhbGwgYW5kIHVwZ3JhZGUgUHl0aG9uIGRpc3RyaWJ1dGlvbiBwYWNrYWdlcwogICAgICAgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBiZWhhdmlvdXIgb2Ygb3RoZXIgUHl0aG9uIGFwcGxpY2F0aW9ucwogICAgICAgcnVubmluZyBvbiB0aGUgc2FtZSBzeXN0ZW0uCiAKLSAgICAgIFNlZSBhbHNvIDpyZWY6YHNjcmlwdHMtcHl2ZW52YC4KKyAgICAgIFNlZSBhbHNvIDptb2Q6YHZlbnZgLgogCiAgICB2aXJ0dWFsIG1hY2hpbmUKICAgICAgIEEgY29tcHV0ZXIgZGVmaW5lZCBlbnRpcmVseSBpbiBzb2Z0d2FyZS4gIFB5dGhvbidzIHZpcnR1YWwgbWFjaGluZQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdCBiL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QKaW5kZXggM2I3OWI5Mi4uN2UxNjFhNSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdAorKysgYi9Eb2MvaG93dG8vYXJncGFyc2UucnN0CkBAIC01NDcsNyArNTQ3LDggQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAicHJvZy5weSIsIGxpbmUgMTEsIGluIDxtb2R1bGU+CiAgICAgICAgaWYgYXJncy52ZXJib3NpdHkgPj0gMjoKLSAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IE5vbmVUeXBlKCkgPj0gaW50KCkKKyAgIFR5cGVFcnJvcjogJz49JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdOb25lVHlwZScgYW5kICdpbnQnCisKIAogKiBGaXJzdCBvdXRwdXQgd2VudCB3ZWxsLCBhbmQgZml4ZXMgdGhlIGJ1ZyB3ZSBoYWQgYmVmb3JlLgogICBUaGF0IGlzLCB3ZSB3YW50IGFueSB2YWx1ZSA+PSAyIHRvIGJlIGFzIHZlcmJvc2UgYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vY2xpbmljLnJzdCBiL0RvYy9ob3d0by9jbGluaWMucnN0CmluZGV4IGNhYTQ5NzUuLmY0MzU4ODQgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9jbGluaWMucnN0CisrKyBiL0RvYy9ob3d0by9jbGluaWMucnN0CkBAIC04MjcsOSArODI3LDkgQEAKIGBgJ2knYGAgICAgIGBgaW50YGAKIGBgJ0knYGAgICAgIGBgdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSlgYAogYGAnaydgYCAgICAgYGB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSlgYAotYGAnSydgYCAgICAgYGB1bnNpZ25lZF9QWV9MT05HX0xPTkcoYml0d2lzZT1UcnVlKWBgCitgYCdLJ2BgICAgICBgYHVuc2lnbmVkX2xvbmdfbG9uZyhiaXR3aXNlPVRydWUpYGAKIGBgJ2wnYGAgICAgIGBgbG9uZ2BgCi1gYCdMJ2BgICAgICBgYFBZX0xPTkdfTE9OR2BgCitgYCdMJ2BgICAgICBgYGxvbmcgbG9uZ2BgCiBgYCduJ2BgICAgICBgYFB5X3NzaXplX3RgYAogYGAnTydgYCAgICAgYGBvYmplY3RgYAogYGAnTyEnYGAgICAgYGBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVNvbWV0aGluZ19UeXBlJylgYApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luZGV4LnJzdCBiL0RvYy9ob3d0by9pbmRleC5yc3QKaW5kZXggZGU2NTk1MC4uNTkzMzQxYyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2luZGV4LnJzdAorKysgYi9Eb2MvaG93dG8vaW5kZXgucnN0CkBAIC0yOCw0ICsyOCw1IEBACiAgICBhcmdwYXJzZS5yc3QKICAgIGlwYWRkcmVzcy5yc3QKICAgIGNsaW5pYy5yc3QKKyAgIGluc3RydW1lbnRhdGlvbi5yc3QKIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QgYi9Eb2MvaG93dG8vaW5zdHJ1bWVudGF0aW9uLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTgzNzc1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QKQEAgLTAsMCArMSw0MTEgQEAKKy4uIF9pbnN0cnVtZW50YXRpb246CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJbnN0cnVtZW50aW5nIENQeXRob24gd2l0aCBEVHJhY2UgYW5kIFN5c3RlbVRhcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOmF1dGhvcjogRGF2aWQgTWFsY29sbQorOmF1dGhvcjogxYF1a2FzeiBMYW5nYQorCitEVHJhY2UgYW5kIFN5c3RlbVRhcCBhcmUgbW9uaXRvcmluZyB0b29scywgZWFjaCBwcm92aWRpbmcgYSB3YXkgdG8gaW5zcGVjdAord2hhdCB0aGUgcHJvY2Vzc2VzIG9uIGEgY29tcHV0ZXIgc3lzdGVtIGFyZSBkb2luZy4gIFRoZXkgYm90aCB1c2UKK2RvbWFpbi1zcGVjaWZpYyBsYW5ndWFnZXMgYWxsb3dpbmcgYSB1c2VyIHRvIHdyaXRlIHNjcmlwdHMgd2hpY2g6CisKKyAgLSBmaWx0ZXIgd2hpY2ggcHJvY2Vzc2VzIGFyZSB0byBiZSBvYnNlcnZlZAorICAtIGdhdGhlciBkYXRhIGZyb20gdGhlIHByb2Nlc3NlcyBvZiBpbnRlcmVzdAorICAtIGdlbmVyYXRlIHJlcG9ydHMgb24gdGhlIGRhdGEKKworQXMgb2YgUHl0aG9uIDMuNiwgQ1B5dGhvbiBjYW4gYmUgYnVpbHQgd2l0aCBlbWJlZGRlZCAibWFya2VycyIsIGFsc28KK2tub3duIGFzICJwcm9iZXMiLCB0aGF0IGNhbiBiZSBvYnNlcnZlZCBieSBhIERUcmFjZSBvciBTeXN0ZW1UYXAgc2NyaXB0LAorbWFraW5nIGl0IGVhc2llciB0byBtb25pdG9yIHdoYXQgdGhlIENQeXRob24gcHJvY2Vzc2VzIG9uIGEgc3lzdGVtIGFyZQorZG9pbmcuCisKKy4uIEknbSB1c2luZyAiLi4gY29kZS1ibG9jazo6IGMiIGZvciBTeXN0ZW1UYXAgc2NyaXB0cywgYXMgImMiIGlzIHN5bnRhY3RpY2FsbHkKKyAgIHRoZSBjbG9zZXN0IG1hdGNoIHRoYXQgU3BoaW54IHN1cHBvcnRzCisKKy4uIGltcGwtZGV0YWlsOjoKKworICAgRFRyYWNlIG1hcmtlcnMgYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIENQeXRob24gaW50ZXJwcmV0ZXIuCisgICBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHByb2JlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB2ZXJzaW9ucyBvZgorICAgQ1B5dGhvbi4gRFRyYWNlIHNjcmlwdHMgY2FuIHN0b3Agd29ya2luZyBvciB3b3JrIGluY29ycmVjdGx5IHdpdGhvdXQKKyAgIHdhcm5pbmcgd2hlbiBjaGFuZ2luZyBDUHl0aG9uIHZlcnNpb25zLgorCisKK0VuYWJsaW5nIHRoZSBzdGF0aWMgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK21hY09TIGNvbWVzIHdpdGggYnVpbHQtaW4gc3VwcG9ydCBmb3IgRFRyYWNlLiAgT24gTGludXgsIGluIG9yZGVyIHRvCitidWlsZCBDUHl0aG9uIHdpdGggdGhlIGVtYmVkZGVkIG1hcmtlcnMgZm9yIFN5c3RlbVRhcCwgdGhlIFN5c3RlbVRhcAorZGV2ZWxvcG1lbnQgdG9vbHMgbXVzdCBiZSBpbnN0YWxsZWQuCisKK09uIGEgTGludXggbWFjaGluZSwgdGhpcyBjYW4gYmUgZG9uZSB2aWE6OgorCisgICB5dW0gaW5zdGFsbCBzeXN0ZW10YXAtc2R0LWRldmVsCisKK29yOjoKKworICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgc3lzdGVtdGFwLXNkdC1kZXYKKworCitDUHl0aG9uIG11c3QgdGhlbiBiZSBjb25maWd1cmVkIGAtLXdpdGgtZHRyYWNlYDo6CisKKyAgIGNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlLi4uIHllcworCitPbiBtYWNPUywgeW91IGNhbiBsaXN0IGF2YWlsYWJsZSBEVHJhY2UgcHJvYmVzIGJ5IHJ1bm5pbmcgYSBQeXRob24KK3Byb2Nlc3MgaW4gdGhlIGJhY2tncm91bmQgYW5kIGxpc3RpbmcgYWxsIHByb2JlcyBtYWRlIGF2YWlsYWJsZSBieSB0aGUKK1B5dGhvbiBwcm92aWRlcjo6CisKKyAgICQgcHl0aG9uMy42IC1xICYKKyAgICQgc3VkbyBkdHJhY2UgLWwgLVAgcHl0aG9uJCEgICMgb3I6IGR0cmFjZSAtbCAtbSBweXRob24zLjYKKworICAgICAgSUQgICBQUk9WSURFUiAgICAgICAgICAgIE1PRFVMRSAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOQ1RJT04gTkFNRQorICAgMjk1NjQgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQgZnVuY3Rpb24tZW50cnkKKyAgIDI5NTY1IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX2VudHJ5IGZ1bmN0aW9uLWVudHJ5CisgICAyOTU2NiBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgIF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCBmdW5jdGlvbi1yZXR1cm4KKyAgIDI5NTY3IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICBkdHJhY2VfZnVuY3Rpb25fcmV0dXJuIGZ1bmN0aW9uLXJldHVybgorICAgMjk1NjggcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2MtZG9uZQorICAgMjk1NjkgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2Mtc3RhcnQKKyAgIDI5NTcwIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0IGxpbmUKKyAgIDI5NTcxIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lIGxpbmUKKworT24gTGludXgsIHlvdSBjYW4gdmVyaWZ5IGlmIHRoZSBTeXN0ZW1UYXAgc3RhdGljIG1hcmtlcnMgYXJlIHByZXNlbnQgaW4KK3RoZSBidWlsdCBiaW5hcnkgYnkgc2VlaW5nIGlmIGl0IGNvbnRhaW5zIGEgIi5ub3RlLnN0YXBzZHQiIHNlY3Rpb24uCisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgcmVhZGVsZiAtUyAuL3B5dGhvbiB8IGdyZXAgLm5vdGUuc3RhcHNkdAorICAgWzMwXSAubm90ZS5zdGFwc2R0ICAgICAgICBOT1RFICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAwMDMwOGQ3OAorCitJZiB5b3UndmUgYnVpbHQgUHl0aG9uIGFzIGEgc2hhcmVkIGxpYnJhcnkgKHdpdGggLS1lbmFibGUtc2hhcmVkKSwgeW91CituZWVkIHRvIGxvb2sgaW5zdGVhZCB3aXRoaW4gdGhlIHNoYXJlZCBsaWJyYXJ5LiAgRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgcmVhZGVsZiAtUyBsaWJweXRob24zLjNkbS5zby4xLjAgfCBncmVwIC5ub3RlLnN0YXBzZHQKKyAgIFsyOV0gLm5vdGUuc3RhcHNkdCAgICAgICAgTk9URSAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgMDAzNjViNjgKKworU3VmZmljaWVudGx5IG1vZGVybiByZWFkZWxmIGNhbiBwcmludCB0aGUgbWV0YWRhdGE6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICAkIHJlYWRlbGYgLW4gLi9weXRob24KKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI1NCB3aXRoIGxlbmd0aCAweDAwMDAwMDIwOgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgICAgICAgICAgTlRfR05VX0FCSV9UQUcgKEFCSSB2ZXJzaW9uIHRhZykKKyAgICAgICAgICAgIE9TOiBMaW51eCwgQUJJOiAyLjYuMzIKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI3NCB3aXRoIGxlbmd0aCAweDAwMDAwMDI0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQgICAgICAgICAgTlRfR05VX0JVSUxEX0lEICh1bmlxdWUgYnVpbGQgSUQgYml0c3RyaW5nKQorICAgICAgICAgICAgQnVpbGQgSUQ6IGRmOTI0YTJiMDhhN2U4OWY2ZTExMjUxZDQ2MDIwMjI5NzdhZjI2NzAKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDJkNmMzMCB3aXRoIGxlbmd0aCAweDAwMDAwMTQ0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwMzEgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZ2NfX3N0YXJ0CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNDM3MWMzLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmY2CisgICAgICAgICAgICBBcmd1bWVudHM6IC00QCVlYngKKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDAzMCAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBnY19fZG9uZQorICAgICAgICAgICAgTG9jYXRpb246IDB4MDAwMDAwMDAwMDQzNzRlMSwgQmFzZTogMHgwMDAwMDAwMDAwNjMwY2UyLCBTZW1hcGhvcmU6IDB4MDAwMDAwMDAwMDhkNmJmOAorICAgICAgICAgICAgQXJndW1lbnRzOiAtOEAlcmF4CisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwNDUgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZnVuY3Rpb25fX2VudHJ5CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNTNkYjZjLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmU4CisgICAgICAgICAgICBBcmd1bWVudHM6IDhAJXJicCA4QCVyMTIgLTRAJWVheAorICAgICAgICBzdGFwc2R0ICAgICAgICAgICAgICAweDAwMDAwMDQ2ICAgICAgICAgIE5UX1NUQVBTRFQgKFN5c3RlbVRhcCBwcm9iZSBkZXNjcmlwdG9ycykKKyAgICAgICAgICAgIFByb3ZpZGVyOiBweXRob24KKyAgICAgICAgICAgIE5hbWU6IGZ1bmN0aW9uX19yZXR1cm4KKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA1M2RiYTgsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZWEKKyAgICAgICAgICAgIEFyZ3VtZW50czogOEAlcmJwIDhAJXIxMiAtNEAlZWF4CisKK1RoZSBhYm92ZSBtZXRhZGF0YSBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgU3lzdGVtVGFwIGRlc2NyaWJpbmcgaG93IGl0CitjYW4gcGF0Y2ggc3RyYXRlZ2ljYWxseS1wbGFjZWQgbWFjaGluZSBjb2RlIGluc3RydWN0aW9ucyB0byBlbmFibGUgdGhlCit0cmFjaW5nIGhvb2tzIHVzZWQgYnkgYSBTeXN0ZW1UYXAgc2NyaXB0LgorCisKK1N0YXRpYyBEVHJhY2UgcHJvYmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgRFRyYWNlIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBzaG93IHRoZSBjYWxsL3JldHVybgoraGllcmFyY2h5IG9mIGEgUHl0aG9uIHNjcmlwdCwgb25seSB0cmFjaW5nIHdpdGhpbiB0aGUgaW52b2NhdGlvbiBvZgorYSBmdW5jdGlvbiBjYWxsZWQgInN0YXJ0Ii4gSW4gb3RoZXIgd29yZHMsIGltcG9ydC10aW1lIGZ1bmN0aW9uCitpbnZvY2F0aW9ucyBhcmUgbm90IGdvaW5nIHRvIGJlIGxpc3RlZDoKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgIHNlbGYgaW50IGluZGVudDsKKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorICAgIC9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KKyAgICB7CisgICAgICAgICAgICBzZWxmLT50cmFjZSA9IDE7CisgICAgfQorCisgICAgcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgICAgICAgICAgcHJpbnRmKCIlKnMiLCBzZWxmLT5pbmRlbnQsICIiKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgICAgICAgICBzZWxmLT5pbmRlbnQrKzsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPmluZGVudC0tOworICAgICAgICAgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgICAgICAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOworICAgICAgICAgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPnRyYWNlID0gMDsKKyAgICB9CisKK0l0IGNhbiBiZSBpbnZva2VkIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAkIHN1ZG8gZHRyYWNlIC1xIC1zIGNhbGxfc3RhY2suZCAtYyAicHl0aG9uMy42IHNjcmlwdC5weSIKKworVGhlIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6OgorCisgICAgMTU2NjQxMzYwNTAyMjgwICBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCisgICAgMTU2NjQxMzYwNTE4ODA0ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyAgICAxNTY2NDEzNjA1MzI3OTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA1NDY4MDcgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgICAgMTU2NjQxMzYwNTYzMzY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyAgICAxNTY2NDEzNjA1NzgzNjUgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorICAgIDE1NjY0MTM2MDU5MTc1NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorICAgIDE1NjY0MTM2MDYwNTU1NiAgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2MTc0ODIgZnVuY3Rpb24tcmV0dXJuOiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorICAgIDE1NjY0MTM2MDYyOTgxNCBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorICAgIDE1NjY0MTM2MDY0MjI4NSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CisgICAgMTU2NjQxMzYwNjU2NzcwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2Njk3MDcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKKyAgICAxNTY2NDEzNjA2ODc4NTMgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKKyAgICAxNTY2NDEzNjA3MDA3MTkgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKKyAgICAxNTY2NDEzNjA3MTk2NDAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MTgKKyAgICAxNTY2NDEzNjA3MzI1NjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKKyAgICAxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKKworCitTdGF0aWMgU3lzdGVtVGFwIG1hcmtlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbG93LWxldmVsIHdheSB0byB1c2UgdGhlIFN5c3RlbVRhcCBpbnRlZ3JhdGlvbiBpcyB0byB1c2UgdGhlIHN0YXRpYworbWFya2VycyBkaXJlY3RseS4gIFRoaXMgcmVxdWlyZXMgeW91IHRvIGV4cGxpY2l0bHkgc3RhdGUgdGhlIGJpbmFyeSBmaWxlCitjb250YWluaW5nIHRoZW0uCisKK0ZvciBleGFtcGxlLCB0aGlzIFN5c3RlbVRhcCBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gc2hvdyB0aGUgY2FsbC9yZXR1cm4KK2hpZXJhcmNoeSBvZiBhIFB5dGhvbiBzY3JpcHQ6CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgIHByb2JlIHByb2Nlc3MoJ3B5dGhvbicpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgICBwcmludGYoIiVzID0+ICVzIGluICVzOiVkXFxuIiwKKyAgICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgIH0KKworICAgcHJvYmUgcHJvY2VzcygncHl0aG9uJykubWFyaygiZnVuY3Rpb25fX3JldHVybiIpIHsKKyAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgIHByaW50ZigiJXMgPD0gJXMgaW4gJXM6JWRcXG4iLAorICAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KC0xKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgfQorCitJdCBjYW4gYmUgaW52b2tlZCBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgc3RhcCBcCisgICAgIHNob3ctY2FsbC1oaWVyYXJjaHkuc3RwIFwKKyAgICAgLWMgLi9weXRob24gdGVzdC5weQorCitUaGUgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczo6CisKKyAgIDExNDA4IHB5dGhvbig4Mjc0KTogICAgICAgID0+IF9fY29udGFpbnNfXyBpbiBMaWIvX2FiY29sbC5weTozNjIKKyAgIDExNDE0IHB5dGhvbig4Mjc0KTogICAgICAgICA9PiBfX2dldGl0ZW1fXyBpbiBMaWIvb3MucHk6NDI1CisgICAxMTQxOCBweXRob24oODI3NCk6ICAgICAgICAgID0+IGVuY29kZSBpbiBMaWIvb3MucHk6NDkwCisgICAxMTQyNCBweXRob24oODI3NCk6ICAgICAgICAgIDw9IGVuY29kZSBpbiBMaWIvb3MucHk6NDkzCisgICAxMTQyOCBweXRob24oODI3NCk6ICAgICAgICAgPD0gX19nZXRpdGVtX18gaW4gTGliL29zLnB5OjQyNgorICAgMTE0MzMgcHl0aG9uKDgyNzQpOiAgICAgICAgPD0gX19jb250YWluc19fIGluIExpYi9fYWJjb2xsLnB5OjM2NgorCit3aGVyZSB0aGUgY29sdW1ucyBhcmU6CisKKyAgLSB0aW1lIGluIG1pY3Jvc2Vjb25kcyBzaW5jZSBzdGFydCBvZiBzY3JpcHQKKworICAtIG5hbWUgb2YgZXhlY3V0YWJsZQorCisgIC0gUElEIG9mIHByb2Nlc3MKKworYW5kIHRoZSByZW1haW5kZXIgaW5kaWNhdGVzIHRoZSBjYWxsL3JldHVybiBoaWVyYXJjaHkgYXMgdGhlIHNjcmlwdCBleGVjdXRlcy4KKworRm9yIGEgYC0tZW5hYmxlLXNoYXJlZGAgYnVpbGQgb2YgQ1B5dGhvbiwgdGhlIG1hcmtlcnMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlCitsaWJweXRob24gc2hhcmVkIGxpYnJhcnksIGFuZCB0aGUgcHJvYmUncyBkb3R0ZWQgcGF0aCBuZWVkcyB0byByZWZsZWN0IHRoaXMuIEZvcgorZXhhbXBsZSwgdGhpcyBsaW5lIGZyb20gdGhlIGFib3ZlIGV4YW1wbGU6OgorCisgICBwcm9iZSBwcm9jZXNzKCdweXRob24nKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSB7CisKK3Nob3VsZCBpbnN0ZWFkIHJlYWQ6OgorCisgICBwcm9iZSBwcm9jZXNzKCdweXRob24nKS5saWJyYXJ5KCJsaWJweXRob24zLjZkbS5zby4xLjAiKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSB7CisKKyhhc3N1bWluZyBhIGRlYnVnIGJ1aWxkIG9mIENQeXRob24gMy42KQorCisKK0F2YWlsYWJsZSBzdGF0aWMgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIEknbSByZXVzaW5nIHRoZSAiYzpmdW5jdGlvbiIgdHlwZSBmb3IgbWFya2VycworCisuLiBjOmZ1bmN0aW9uOjogZnVuY3Rpb25fX2VudHJ5KHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpbmRpY2F0ZXMgdGhhdCBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGJlZ3VuLgorICAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtUHl0aG9uIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisgICBUaGUgZmlsZW5hbWUsIGZ1bmN0aW9uIG5hbWUsIGFuZCBsaW5lIG51bWJlciBhcmUgcHJvdmlkZWQgYmFjayB0byB0aGUKKyAgIHRyYWNpbmcgc2NyaXB0IGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nCisgICBgYCRhcmcxYGAsIGBgJGFyZzJgYCwgYGAkYXJnM2BgOgorCisgICAgICAgKiBgYCRhcmcxYGAgOiBgYChjb25zdCBjaGFyICopYGAgZmlsZW5hbWUsIGFjY2Vzc2libGUgdXNpbmcgYGB1c2VyX3N0cmluZygkYXJnMSlgYAorCisgICAgICAgKiBgYCRhcmcyYGAgOiBgYChjb25zdCBjaGFyICopYGAgZnVuY3Rpb24gbmFtZSwgYWNjZXNzaWJsZSB1c2luZworICAgICAgICAgYGB1c2VyX3N0cmluZygkYXJnMilgYAorCisgICAgICAgKiBgYCRhcmczYGAgOiBgYGludGBgIGxpbmUgbnVtYmVyCisKKy4uIGM6ZnVuY3Rpb246OiBmdW5jdGlvbl9fcmV0dXJuKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpcyB0aGUgY29udmVyc2Ugb2YgOmM6ZnVuYzpgZnVuY3Rpb25fX2VudHJ5YCwgYW5kIGluZGljYXRlcyB0aGF0CisgICBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGVuZGVkIChlaXRoZXIgdmlhIGBgcmV0dXJuYGAsIG9yIHZpYSBhbgorICAgZXhjZXB0aW9uKS4gIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLVB5dGhvbiAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIDpjOmZ1bmM6YGZ1bmN0aW9uX19lbnRyeWAKKworLi4gYzpmdW5jdGlvbjo6IGxpbmUoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8pCisKKyAgIFRoaXMgbWFya2VyIGluZGljYXRlcyBhIFB5dGhvbiBsaW5lIGlzIGFib3V0IHRvIGJlIGV4ZWN1dGVkLiAgSXQgaXMKKyAgIHRoZSBlcXVpdmFsZW50IG9mIGxpbmUtYnktbGluZSB0cmFjaW5nIHdpdGggYSBQeXRob24gcHJvZmlsZXIuICBJdCBpcworICAgbm90IHRyaWdnZXJlZCB3aXRoaW4gQyBmdW5jdGlvbnMuCisKKyAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciA6YzpmdW5jOmBmdW5jdGlvbl9fZW50cnlgLgorCisuLiBjOmZ1bmN0aW9uOjogZ2NfX3N0YXJ0KGludCBnZW5lcmF0aW9uKQorCisgICBGaXJlcyB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgc3RhcnRzIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIGN5Y2xlLgorICAgYGBhcmcwYGAgaXMgdGhlIGdlbmVyYXRpb24gdG8gc2NhbiwgbGlrZSA6ZnVuYzpgZ2MuY29sbGVjdCgpYC4KKworLi4gYzpmdW5jdGlvbjo6IGdjX19kb25lKGxvbmcgY29sbGVjdGVkKQorCisgICBGaXJlcyB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZmluaXNoZXMgYSBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgIGN5Y2xlLiBgYGFyZzBgYCBpcyB0aGUgbnVtYmVyIG9mIGNvbGxlY3RlZCBvYmplY3RzLgorCisKK1N5c3RlbVRhcCBUYXBzZXRzCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaGlnaGVyLWxldmVsIHdheSB0byB1c2UgdGhlIFN5c3RlbVRhcCBpbnRlZ3JhdGlvbiBpcyB0byB1c2UgYSAidGFwc2V0IjoKK1N5c3RlbVRhcCdzIGVxdWl2YWxlbnQgb2YgYSBsaWJyYXJ5LCB3aGljaCBoaWRlcyBzb21lIG9mIHRoZSBsb3dlci1sZXZlbAorZGV0YWlscyBvZiB0aGUgc3RhdGljIG1hcmtlcnMuCisKK0hlcmUgaXMgYSB0YXBzZXQgZmlsZSwgYmFzZWQgb24gYSBub24tc2hhcmVkIGJ1aWxkIG9mIENQeXRob246CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICAvKgorICAgICAgIFByb3ZpZGUgYSBoaWdoZXItbGV2ZWwgd3JhcHBpbmcgYXJvdW5kIHRoZSBmdW5jdGlvbl9fZW50cnkgYW5kCisgICAgICAgZnVuY3Rpb25fX3JldHVybiBtYXJrZXJzOgorICAgICBcKi8KKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkgPSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQorICAgIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKyAgICAgICAgZnJhbWVwdHIgPSAkYXJnNAorICAgIH0KKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24ucmV0dXJuID0gcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX3JldHVybiIpCisgICAgeworICAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgICAgIGxpbmVubyA9ICRhcmczOworICAgICAgICBmcmFtZXB0ciA9ICRhcmc0CisgICAgfQorCitJZiB0aGlzIGZpbGUgaXMgaW5zdGFsbGVkIGluIFN5c3RlbVRhcCdzIHRhcHNldCBkaXJlY3RvcnkgKGUuZy4KK2BgL3Vzci9zaGFyZS9zeXN0ZW10YXAvdGFwc2V0YGApLCB0aGVuIHRoZXNlIGFkZGl0aW9uYWwgcHJvYmVwb2ludHMgYmVjb21lCithdmFpbGFibGU6CisKKy4uIGM6ZnVuY3Rpb246OiBweXRob24uZnVuY3Rpb24uZW50cnkoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8sIGZyYW1lcHRyKQorCisgICBUaGlzIHByb2JlIHBvaW50IGluZGljYXRlcyB0aGF0IGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgYmVndW4uCisgICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1weXRob24gKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKy4uIGM6ZnVuY3Rpb246OiBweXRob24uZnVuY3Rpb24ucmV0dXJuKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vLCBmcmFtZXB0cikKKworICAgVGhpcyBwcm9iZSBwb2ludCBpcyB0aGUgY29udmVyc2Ugb2YgOmM6ZnVuYzpgcHl0aG9uLmZ1bmN0aW9uLnJldHVybmAsIGFuZAorICAgaW5kaWNhdGVzIHRoYXQgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBlbmRlZCAoZWl0aGVyIHZpYQorICAgYGByZXR1cm5gYCwgb3IgdmlhIGFuIGV4Y2VwdGlvbikuICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1weXRob24KKyAgIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisKK0V4YW1wbGVzCistLS0tLS0tLQorVGhpcyBTeXN0ZW1UYXAgc2NyaXB0IHVzZXMgdGhlIHRhcHNldCBhYm92ZSB0byBtb3JlIGNsZWFubHkgaW1wbGVtZW50IHRoZQorZXhhbXBsZSBnaXZlbiBhYm92ZSBvZiB0cmFjaW5nIHRoZSBQeXRob24gZnVuY3Rpb24tY2FsbCBoaWVyYXJjaHksIHdpdGhvdXQKK25lZWRpbmcgdG8gZGlyZWN0bHkgbmFtZSB0aGUgc3RhdGljIG1hcmtlcnM6CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkKKyAgICB7CisgICAgICBwcmludGYoIiVzID0+ICVzIGluICVzOiVkXG4iLAorICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgICB9CisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24ucmV0dXJuCisgICAgeworICAgICAgcHJpbnRmKCIlcyA8PSAlcyBpbiAlczolZFxuIiwKKyAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KC0xKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgIH0KKworCitUaGUgZm9sbG93aW5nIHNjcmlwdCB1c2VzIHRoZSB0YXBzZXQgYWJvdmUgdG8gcHJvdmlkZSBhIHRvcC1saWtlIHZpZXcgb2YgYWxsCitydW5uaW5nIENQeXRob24gY29kZSwgc2hvd2luZyB0aGUgdG9wIDIwIG1vc3QgZnJlcXVlbnRseS1lbnRlcmVkIGJ5dGVjb2RlCitmcmFtZXMsIGVhY2ggc2Vjb25kLCBhY3Jvc3MgdGhlIHdob2xlIHN5c3RlbToKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgIGdsb2JhbCBmbl9jYWxsczsKKworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5lbnRyeQorICAgIHsKKyAgICAgICAgZm5fY2FsbHNbcGlkKCksIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSArPSAxOworICAgIH0KKworICAgIHByb2JlIHRpbWVyLm1zKDEwMDApIHsKKyAgICAgICAgcHJpbnRmKCJcMDMzWzJKXDAzM1sxOzFIIikgLyogY2xlYXIgc2NyZWVuIFwqLworICAgICAgICBwcmludGYoIiU2cyAlODBzICU2cyAlMzBzICU2c1xuIiwKKyAgICAgICAgICAgICAgICJQSUQiLCAiRklMRU5BTUUiLCAiTElORSIsICJGVU5DVElPTiIsICJDQUxMUyIpCisgICAgICAgIGZvcmVhY2ggKFtwaWQsIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSBpbiBmbl9jYWxscy0gbGltaXQgMjApIHsKKyAgICAgICAgICAgIHByaW50ZigiJTZkICU4MHMgJTZkICUzMHMgJTZkXG4iLAorICAgICAgICAgICAgICAgIHBpZCwgZmlsZW5hbWUsIGxpbmVubywgZnVuY25hbWUsCisgICAgICAgICAgICAgICAgZm5fY2FsbHNbcGlkLCBmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVub10pOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSBmbl9jYWxsczsKKyAgICB9CisKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMWY3MjcuLjAwMDAwMDAKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBzbXRwbGliCi0KLWZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCi1mcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBBZGRyZXNzCi1mcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBtYWtlX21zZ2lkCi0KLSMgQ3JlYXRlIHRoZSBiYXNlIHRleHQgbWVzc2FnZS4KLW1zZyA9IEVtYWlsTWVzc2FnZSgpCi1tc2dbJ1N1YmplY3QnXSA9ICJBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lciIKLW1zZ1snRnJvbSddID0gQWRkcmVzcygiUGVww6kgTGUgUGV3IiwgInBlcGUiLCAiZXhhbXBsZS5jb20iKQotbXNnWydUbyddID0gKEFkZHJlc3MoIlBlbmVsb3BlIFB1c3N5Y2F0IiwgInBlbmVsb3BlIiwgImV4YW1wbGUuY29tIiksCi0gICAgICAgICAgICAgQWRkcmVzcygiRmFicmV0dGUgUHVzc3ljYXQiLCAiZmFicmV0dGUiLCAiZXhhbXBsZS5jb20iKSkKLW1zZy5zZXRfY29udGVudCgiIiJcCi1TYWx1dCEKLQotQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgotCi1bMV0gaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOAotCi0tLVBlcMOpCi0iIiIpCi0KLSMgQWRkIHRoZSBodG1sIHZlcnNpb24uICBUaGlzIGNvbnZlcnRzIHRoZSBtZXNzYWdlIGludG8gYSBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUKLSMgY29udGFpbmVyLCB3aXRoIHRoZSBvcmlnaW5hbCB0ZXh0IG1lc3NhZ2UgYXMgdGhlIGZpcnN0IHBhcnQgYW5kIHRoZSBuZXcgaHRtbAotIyBtZXNzYWdlIGFzIHRoZSBzZWNvbmQgcGFydC4KLWFzcGFyYWd1c19jaWQgPSBtYWtlX21zZ2lkKCkKLW1zZy5hZGRfYWx0ZXJuYXRpdmUoIiIiXAotPGh0bWw+Ci0gIDxoZWFkPjwvaGVhZD4KLSAgPGJvZHk+Ci0gICAgPHA+U2FsdXQhPFxwPgotICAgIDxwPkNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudAotICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4PgotICAgICAgICAgICAgcmVjaXBpZQotICAgICAgICA8L2E+IGTDqWpldW5lci4KLSAgICA8L3A+Ci0gICAgPGltZyBzcmM9ImNpZDp7YXNwYXJhZ3VzX2NpZH0iIFw+Ci0gIDwvYm9keT4KLTwvaHRtbD4KLSIiIi5mb3JtYXQoYXNwYXJhZ3VzX2NpZD1hc3BhcmFndXNfY2lkWzE6LTFdKSwgc3VidHlwZT0naHRtbCcpCi0jIG5vdGUgdGhhdCB3ZSBuZWVkZWQgdG8gcGVlbCB0aGUgPD4gb2ZmIHRoZSBtc2dpZCBmb3IgdXNlIGluIHRoZSBodG1sLgotCi0jIE5vdyBhZGQgdGhlIHJlbGF0ZWQgaW1hZ2UgdG8gdGhlIGh0bWwgcGFydC4KLXdpdGggb3Blbigicm9hc3RlZC1hc3BhcmFndXMuanBnIiwgJ3JiJykgYXMgaW1nOgotICAgIG1zZy5nZXRfcGF5bG9hZCgpWzFdLmFkZF9yZWxhdGVkKGltZy5yZWFkKCksICdpbWFnZScsICdqcGVnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9YXNwYXJhZ3VzX2NpZCkKLQotIyBNYWtlIGEgbG9jYWwgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kLgotd2l0aCBvcGVuKCdvdXRnb2luZy5tc2cnLCAnd2InKSBhcyBmOgotICAgIGYud3JpdGUoYnl0ZXMobXNnKSkKLQotIyBTZW5kIHRoZSBtZXNzYWdlIHZpYSBsb2NhbCBTTVRQIHNlcnZlci4KLXdpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgotICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDg1MDcwZjMuLjJlMTQyYjEKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQpAQCAtMiw0NyArMiw1NSBAQAogCiBpbXBvcnQgc210cGxpYgogCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Ci1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCitmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBBZGRyZXNzCitmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBtYWtlX21zZ2lkCiAKLSMgbWUgPT0gbXkgZW1haWwgYWRkcmVzcwotIyB5b3UgPT0gcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcwotbWUgPSAibXlAZW1haWwuY29tIgoteW91ID0gInlvdXJAZW1haWwuY29tIgorIyBDcmVhdGUgdGhlIGJhc2UgdGV4dCBtZXNzYWdlLgorbXNnID0gRW1haWxNZXNzYWdlKCkKK21zZ1snU3ViamVjdCddID0gIkF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyIgorbXNnWydGcm9tJ10gPSBBZGRyZXNzKCJQZXDDqSBMZSBQZXciLCAicGVwZSIsICJleGFtcGxlLmNvbSIpCittc2dbJ1RvJ10gPSAoQWRkcmVzcygiUGVuZWxvcGUgUHVzc3ljYXQiLCAicGVuZWxvcGUiLCAiZXhhbXBsZS5jb20iKSwKKyAgICAgICAgICAgICBBZGRyZXNzKCJGYWJyZXR0ZSBQdXNzeWNhdCIsICJmYWJyZXR0ZSIsICJleGFtcGxlLmNvbSIpKQorbXNnLnNldF9jb250ZW50KCIiIlwKK1NhbHV0IQogCi0jIENyZWF0ZSBtZXNzYWdlIGNvbnRhaW5lciAtIHRoZSBjb3JyZWN0IE1JTUUgdHlwZSBpcyBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUuCi1tc2cgPSBNSU1FTXVsdGlwYXJ0KCdhbHRlcm5hdGl2ZScpCi1tc2dbJ1N1YmplY3QnXSA9ICJMaW5rIgotbXNnWydGcm9tJ10gPSBtZQotbXNnWydUbyddID0geW91CitDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCiAKLSMgQ3JlYXRlIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIChhIHBsYWluLXRleHQgYW5kIGFuIEhUTUwgdmVyc2lvbikuCi10ZXh0ID0gIkhpIVxuSG93IGFyZSB5b3U/XG5IZXJlIGlzIHRoZSBsaW5rIHlvdSB3YW50ZWQ6XG5odHRwczovL3d3dy5weXRob24ub3JnIgotaHRtbCA9ICIiIlwKK1sxXSBodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4CisKKy0tUGVww6kKKyIiIikKKworIyBBZGQgdGhlIGh0bWwgdmVyc2lvbi4gIFRoaXMgY29udmVydHMgdGhlIG1lc3NhZ2UgaW50byBhIG11bHRpcGFydC9hbHRlcm5hdGl2ZQorIyBjb250YWluZXIsIHdpdGggdGhlIG9yaWdpbmFsIHRleHQgbWVzc2FnZSBhcyB0aGUgZmlyc3QgcGFydCBhbmQgdGhlIG5ldyBodG1sCisjIG1lc3NhZ2UgYXMgdGhlIHNlY29uZCBwYXJ0LgorYXNwYXJhZ3VzX2NpZCA9IG1ha2VfbXNnaWQoKQorbXNnLmFkZF9hbHRlcm5hdGl2ZSgiIiJcCiA8aHRtbD4KICAgPGhlYWQ+PC9oZWFkPgogICA8Ym9keT4KLSAgICA8cD5IaSE8YnI+Ci0gICAgICAgSG93IGFyZSB5b3U/PGJyPgotICAgICAgIEhlcmUgaXMgdGhlIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmciPmxpbms8L2E+IHlvdSB3YW50ZWQuCisgICAgPHA+U2FsdXQhPC9wPgorICAgIDxwPkNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudAorICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4PgorICAgICAgICAgICAgcmVjaXBpZQorICAgICAgICA8L2E+IGTDqWpldW5lci4KICAgICA8L3A+CisgICAgPGltZyBzcmM9ImNpZDp7YXNwYXJhZ3VzX2NpZH0iIC8+CiAgIDwvYm9keT4KIDwvaHRtbD4KLSIiIgorIiIiLmZvcm1hdChhc3BhcmFndXNfY2lkPWFzcGFyYWd1c19jaWRbMTotMV0pLCBzdWJ0eXBlPSdodG1sJykKKyMgbm90ZSB0aGF0IHdlIG5lZWRlZCB0byBwZWVsIHRoZSA8PiBvZmYgdGhlIG1zZ2lkIGZvciB1c2UgaW4gdGhlIGh0bWwuCiAKLSMgUmVjb3JkIHRoZSBNSU1FIHR5cGVzIG9mIGJvdGggcGFydHMgLSB0ZXh0L3BsYWluIGFuZCB0ZXh0L2h0bWwuCi1wYXJ0MSA9IE1JTUVUZXh0KHRleHQsICdwbGFpbicpCi1wYXJ0MiA9IE1JTUVUZXh0KGh0bWwsICdodG1sJykKKyMgTm93IGFkZCB0aGUgcmVsYXRlZCBpbWFnZSB0byB0aGUgaHRtbCBwYXJ0Lgord2l0aCBvcGVuKCJyb2FzdGVkLWFzcGFyYWd1cy5qcGciLCAncmInKSBhcyBpbWc6CisgICAgbXNnLmdldF9wYXlsb2FkKClbMV0uYWRkX3JlbGF0ZWQoaW1nLnJlYWQoKSwgJ2ltYWdlJywgJ2pwZWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZD1hc3BhcmFndXNfY2lkKQogCi0jIEF0dGFjaCBwYXJ0cyBpbnRvIG1lc3NhZ2UgY29udGFpbmVyLgotIyBBY2NvcmRpbmcgdG8gUkZDIDIwNDYsIHRoZSBsYXN0IHBhcnQgb2YgYSBtdWx0aXBhcnQgbWVzc2FnZSwgaW4gdGhpcyBjYXNlCi0jIHRoZSBIVE1MIG1lc3NhZ2UsIGlzIGJlc3QgYW5kIHByZWZlcnJlZC4KLW1zZy5hdHRhY2gocGFydDEpCi1tc2cuYXR0YWNoKHBhcnQyKQorIyBNYWtlIGEgbG9jYWwgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kLgord2l0aCBvcGVuKCdvdXRnb2luZy5tc2cnLCAnd2InKSBhcyBmOgorICAgIGYud3JpdGUoYnl0ZXMobXNnKSkKIAogIyBTZW5kIHRoZSBtZXNzYWdlIHZpYSBsb2NhbCBTTVRQIHNlcnZlci4KLXMgPSBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpCi0jIHNlbmRtYWlsIGZ1bmN0aW9uIHRha2VzIDMgYXJndW1lbnRzOiBzZW5kZXIncyBhZGRyZXNzLCByZWNpcGllbnQncyBhZGRyZXNzCi0jIGFuZCBtZXNzYWdlIHRvIHNlbmQgLSBoZXJlIGl0IGlzIHNlbnQgYXMgb25lIHN0cmluZy4KLXMuc2VuZG1haWwobWUsIHlvdSwgbXNnLmFzX3N0cmluZygpKQotcy5xdWl0KCkKK3dpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgorICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5CmluZGV4IDNjN2M3NzAuLjBkY2ZiZmIgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weQpAQCAtMywyMiArMywxNCBAQAogIiIiU2VuZCB0aGUgY29udGVudHMgb2YgYSBkaXJlY3RvcnkgYXMgYSBNSU1FIG1lc3NhZ2UuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHNtdHBsaWIKICMgRm9yIGd1ZXNzaW5nIE1JTUUgdHlwZSBiYXNlZCBvbiBmaWxlIG5hbWUgZXh0ZW5zaW9uCiBpbXBvcnQgbWltZXR5cGVzCiAKIGZyb20gYXJncGFyc2UgaW1wb3J0IEFyZ3VtZW50UGFyc2VyCiAKLWZyb20gZW1haWwgaW1wb3J0IGVuY29kZXJzCi1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKLWZyb20gZW1haWwubWltZS5hdWRpbyBpbXBvcnQgTUlNRUF1ZGlvCi1mcm9tIGVtYWlsLm1pbWUuYmFzZSBpbXBvcnQgTUlNRUJhc2UKLWZyb20gZW1haWwubWltZS5pbWFnZSBpbXBvcnQgTUlNRUltYWdlCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Ci1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKLQotQ09NTUFTUEFDRSA9ICcsICcKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgU01UUAogCiAKIGRlZiBtYWluKCk6CkBAIC00NywxMiArMzksMTIgQEAKICAgICBkaXJlY3RvcnkgPSBhcmdzLmRpcmVjdG9yeQogICAgIGlmIG5vdCBkaXJlY3Rvcnk6CiAgICAgICAgIGRpcmVjdG9yeSA9ICcuJwotICAgICMgQ3JlYXRlIHRoZSBlbmNsb3NpbmcgKG91dGVyKSBtZXNzYWdlCi0gICAgb3V0ZXIgPSBNSU1FTXVsdGlwYXJ0KCkKLSAgICBvdXRlclsnU3ViamVjdCddID0gJ0NvbnRlbnRzIG9mIGRpcmVjdG9yeSAlcycgJSBvcy5wYXRoLmFic3BhdGgoZGlyZWN0b3J5KQotICAgIG91dGVyWydUbyddID0gQ09NTUFTUEFDRS5qb2luKGFyZ3MucmVjaXBpZW50cykKLSAgICBvdXRlclsnRnJvbSddID0gYXJncy5zZW5kZXIKLSAgICBvdXRlci5wcmVhbWJsZSA9ICdZb3Ugd2lsbCBub3Qgc2VlIHRoaXMgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyLlxuJworICAgICMgQ3JlYXRlIHRoZSBtZXNzYWdlCisgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICBtc2dbJ1N1YmplY3QnXSA9ICdDb250ZW50cyBvZiBkaXJlY3RvcnkgJXMnICUgb3MucGF0aC5hYnNwYXRoKGRpcmVjdG9yeSkKKyAgICBtc2dbJ1RvJ10gPSAnLCAnLmpvaW4oYXJncy5yZWNpcGllbnRzKQorICAgIG1zZ1snRnJvbSddID0gYXJncy5zZW5kZXIKKyAgICBtc2cucHJlYW1ibGUgPSAnWW91IHdpbGwgbm90IHNlZSB0aGlzIGluIGEgTUlNRS1hd2FyZSBtYWlsIHJlYWRlci5cbicKIAogICAgIGZvciBmaWxlbmFtZSBpbiBvcy5saXN0ZGlyKGRpcmVjdG9yeSk6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlbmFtZSkKQEAgLTY3LDMzICs1OSwxOCBAQAogICAgICAgICAgICAgIyB1c2UgYSBnZW5lcmljIGJhZy1vZi1iaXRzIHR5cGUuCiAgICAgICAgICAgICBjdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nCiAgICAgICAgIG1haW50eXBlLCBzdWJ0eXBlID0gY3R5cGUuc3BsaXQoJy8nLCAxKQotICAgICAgICBpZiBtYWludHlwZSA9PSAndGV4dCc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZnA6Ci0gICAgICAgICAgICAgICAgIyBOb3RlOiB3ZSBzaG91bGQgaGFuZGxlIGNhbGN1bGF0aW5nIHRoZSBjaGFyc2V0Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRVRleHQoZnAucmVhZCgpLCBfc3VidHlwZT1zdWJ0eXBlKQotICAgICAgICBlbGlmIG1haW50eXBlID09ICdpbWFnZSc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUltYWdlKGZwLnJlYWQoKSwgX3N1YnR5cGU9c3VidHlwZSkKLSAgICAgICAgZWxpZiBtYWludHlwZSA9PSAnYXVkaW8nOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVBdWRpbyhmcC5yZWFkKCksIF9zdWJ0eXBlPXN1YnR5cGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUJhc2UobWFpbnR5cGUsIHN1YnR5cGUpCi0gICAgICAgICAgICAgICAgbXNnLnNldF9wYXlsb2FkKGZwLnJlYWQoKSkKLSAgICAgICAgICAgICMgRW5jb2RlIHRoZSBwYXlsb2FkIHVzaW5nIEJhc2U2NAotICAgICAgICAgICAgZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NChtc2cpCi0gICAgICAgICMgU2V0IHRoZSBmaWxlbmFtZSBwYXJhbWV0ZXIKLSAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsIGZpbGVuYW1lPWZpbGVuYW1lKQotICAgICAgICBvdXRlci5hdHRhY2gobXNnKQorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBtc2cuYWRkX2F0dGFjaG1lbnQoZnAucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50eXBlPW1haW50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGU9c3VidHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1maWxlbmFtZSkKICAgICAjIE5vdyBzZW5kIG9yIHN0b3JlIHRoZSBtZXNzYWdlCi0gICAgY29tcG9zZWQgPSBvdXRlci5hc19zdHJpbmcoKQogICAgIGlmIGFyZ3Mub3V0cHV0OgotICAgICAgICB3aXRoIG9wZW4oYXJncy5vdXRwdXQsICd3JykgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShjb21wb3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Mub3V0cHV0LCAnd2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKG1zZy5hc19ieXRlcyhwb2xpY3k9U01UUCkpCiAgICAgZWxzZToKICAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6Ci0gICAgICAgICAgICBzLnNlbmRtYWlsKGFyZ3Muc2VuZGVyLCBhcmdzLnJlY2lwaWVudHMsIGNvbXBvc2VkKQorICAgICAgICAgICAgcy5zZW5kX21lc3NhZ2UobXNnKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CmluZGV4IDg5YzhmM2EuLjJjNDIxNDUgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CkBAIC0xLDE4ICsxLDI0IEBACiAjIEltcG9ydCB0aGUgZW1haWwgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgUGFyc2VyCitmcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgQnl0ZXNQYXJzZXIsIFBhcnNlcgorZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKIAogIyBJZiB0aGUgZS1tYWlsIGhlYWRlcnMgYXJlIGluIGEgZmlsZSwgdW5jb21tZW50IHRoZXNlIHR3byBsaW5lczoKLSMgd2l0aCBvcGVuKG1lc3NhZ2VmaWxlKSBhcyBmcDoKLSMgICAgIGhlYWRlcnMgPSBQYXJzZXIoKS5wYXJzZShmcCkKKyMgd2l0aCBvcGVuKG1lc3NhZ2VmaWxlLCAncmInKSBhcyBmcDoKKyMgICAgIGhlYWRlcnMgPSBCeXRlc1BhcnNlcihwb2xpY3k9ZGVmYXVsdCkucGFyc2UoZnApCiAKLSMgIE9yIGZvciBwYXJzaW5nIGhlYWRlcnMgaW4gYSBzdHJpbmcsIHVzZToKLWhlYWRlcnMgPSBQYXJzZXIoKS5wYXJzZXN0cignRnJvbTogPHVzZXJAZXhhbXBsZS5jb20+XG4nCisjICBPciBmb3IgcGFyc2luZyBoZWFkZXJzIGluIGEgc3RyaW5nICh0aGlzIGlzIGFuIHVuY29tbW9uIG9wZXJhdGlvbiksIHVzZToKK2hlYWRlcnMgPSBQYXJzZXIocG9saWN5PWRlZmF1bHQpLnBhcnNlc3RyKAorICAgICAgICAnRnJvbTogRm9vIEJhciA8dXNlckBleGFtcGxlLmNvbT5cbicKICAgICAgICAgJ1RvOiA8c29tZW9uZV9lbHNlQGV4YW1wbGUuY29tPlxuJwogICAgICAgICAnU3ViamVjdDogVGVzdCBtZXNzYWdlXG4nCiAgICAgICAgICdcbicKICAgICAgICAgJ0JvZHkgd291bGQgZ28gaGVyZVxuJykKIAogIyAgTm93IHRoZSBoZWFkZXIgaXRlbXMgY2FuIGJlIGFjY2Vzc2VkIGFzIGEgZGljdGlvbmFyeToKLXByaW50KCdUbzogJXMnICUgaGVhZGVyc1sndG8nXSkKLXByaW50KCdGcm9tOiAlcycgJSBoZWFkZXJzWydmcm9tJ10pCi1wcmludCgnU3ViamVjdDogJXMnICUgaGVhZGVyc1snc3ViamVjdCddKQorcHJpbnQoJ1RvOiB7fScuZm9ybWF0KGhlYWRlcnNbJ3RvJ10pKQorcHJpbnQoJ0Zyb206IHt9Jy5mb3JtYXQoaGVhZGVyc1snZnJvbSddKSkKK3ByaW50KCdTdWJqZWN0OiB7fScuZm9ybWF0KGhlYWRlcnNbJ3N1YmplY3QnXSkpCisKKyMgWW91IGNhbiBhbHNvIGFjY2VzcyB0aGUgcGFydHMgb2YgdGhlIGFkZHJlc3NlczoKK3ByaW50KCdSZWNpcGllbnQgdXNlcm5hbWU6IHt9Jy5mb3JtYXQoaGVhZGVyc1sndG8nXS5hZGRyZXNzZXNbMF0udXNlcm5hbWUpKQorcHJpbnQoJ1NlbmRlciBuYW1lOiB7fScuZm9ybWF0KGhlYWRlcnNbJ2Zyb20nXS5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lKSkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKaW5kZXggNjFkMDgzMC4uYzYxMDI0MiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKQEAgLTEsMzAgKzEsMjkgQEAKICMgSW1wb3J0IHNtdHBsaWIgZm9yIHRoZSBhY3R1YWwgc2VuZGluZyBmdW5jdGlvbgogaW1wb3J0IHNtdHBsaWIKIAorIyBBbmQgaW1naGRyIHRvIGZpbmQgdGhlIHR5cGVzIG9mIG91ciBpbWFnZXMKK2ltcG9ydCBpbWdoZHIKKwogIyBIZXJlIGFyZSB0aGUgZW1haWwgcGFja2FnZSBtb2R1bGVzIHdlJ2xsIG5lZWQKLWZyb20gZW1haWwubWltZS5pbWFnZSBpbXBvcnQgTUlNRUltYWdlCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCi1DT01NQVNQQUNFID0gJywgJwotCi0jIENyZWF0ZSB0aGUgY29udGFpbmVyIChvdXRlcikgZW1haWwgbWVzc2FnZS4KLW1zZyA9IE1JTUVNdWx0aXBhcnQoKQorIyBDcmVhdGUgdGhlIGNvbnRhaW5lciBlbWFpbCBtZXNzYWdlLgorbXNnID0gRW1haWxNZXNzYWdlKCkKIG1zZ1snU3ViamVjdCddID0gJ091ciBmYW1pbHkgcmV1bmlvbicKICMgbWUgPT0gdGhlIHNlbmRlcidzIGVtYWlsIGFkZHJlc3MKICMgZmFtaWx5ID0gdGhlIGxpc3Qgb2YgYWxsIHJlY2lwaWVudHMnIGVtYWlsIGFkZHJlc3NlcwogbXNnWydGcm9tJ10gPSBtZQotbXNnWydUbyddID0gQ09NTUFTUEFDRS5qb2luKGZhbWlseSkKK21zZ1snVG8nXSA9ICcsICcuam9pbihmYW1pbHkpCiBtc2cucHJlYW1ibGUgPSAnT3VyIGZhbWlseSByZXVuaW9uJwogCi0jIEFzc3VtZSB3ZSBrbm93IHRoYXQgdGhlIGltYWdlIGZpbGVzIGFyZSBhbGwgaW4gUE5HIGZvcm1hdAorIyBPcGVuIHRoZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gIFVzZSBpbWdoZHIgdG8gZmlndXJlIG91dCB0aGUKKyMgTUlNRSBzdWJ0eXBlIGZvciBlYWNoIHNwZWNpZmljIGltYWdlLgogZm9yIGZpbGUgaW4gcG5nZmlsZXM6Ci0gICAgIyBPcGVuIHRoZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gIExldCB0aGUgTUlNRUltYWdlIGNsYXNzIGF1dG9tYXRpY2FsbHkKLSAgICAjIGd1ZXNzIHRoZSBzcGVjaWZpYyBpbWFnZSB0eXBlLgogICAgIHdpdGggb3BlbihmaWxlLCAncmInKSBhcyBmcDoKLSAgICAgICAgaW1nID0gTUlNRUltYWdlKGZwLnJlYWQoKSkKLSAgICBtc2cuYXR0YWNoKGltZykKKyAgICAgICAgaW1nX2RhdGEgPSBmcC5yZWFkKCkKKyAgICBtc2cuYWRkX2F0dGFjaG1lbnQoaW1nX2RhdGEsIG1haW50eXBlPSdpbWFnZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlPWltZ2hkci53aGF0KE5vbmUsIGltZ19kYXRhKSkKIAogIyBTZW5kIHRoZSBlbWFpbCB2aWEgb3VyIG93biBTTVRQIHNlcnZlci4KLXMgPSBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpCi1zLnNlbmRfbWVzc2FnZShtc2cpCi1zLnF1aXQoKQord2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6CisgICAgcy5zZW5kX21lc3NhZ2UobXNnKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBEb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5CnJlbmFtZSB0byBEb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS5weQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKaW5kZXggYjliOGI0MS4uZjY5ZWY0MCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CkBAIC0yLDEzICsyLDEzIEBACiBpbXBvcnQgc210cGxpYgogCiAjIEltcG9ydCB0aGUgZW1haWwgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCiAKLSMgT3BlbiBhIHBsYWluIHRleHQgZmlsZSBmb3IgcmVhZGluZy4gIEZvciB0aGlzIGV4YW1wbGUsIGFzc3VtZSB0aGF0Ci0jIHRoZSB0ZXh0IGZpbGUgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLgorIyBPcGVuIHRoZSBwbGFpbiB0ZXh0IGZpbGUgd2hvc2UgbmFtZSBpcyBpbiB0ZXh0ZmlsZSBmb3IgcmVhZGluZy4KIHdpdGggb3Blbih0ZXh0ZmlsZSkgYXMgZnA6CiAgICAgIyBDcmVhdGUgYSB0ZXh0L3BsYWluIG1lc3NhZ2UKLSAgICBtc2cgPSBNSU1FVGV4dChmcC5yZWFkKCkpCisgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICBtc2cuc2V0X2NvbnRlbnQoZnAucmVhZCgpKQogCiAjIG1lID09IHRoZSBzZW5kZXIncyBlbWFpbCBhZGRyZXNzCiAjIHlvdSA9PSB0aGUgcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKaW5kZXggNTc0YTBiNi4uZTBhN2YwMSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CkBAIC0zLDExICszLDExIEBACiAiIiJVbnBhY2sgYSBNSU1FIG1lc3NhZ2UgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlcy4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgZW1haWwKLWltcG9ydCBlcnJubwogaW1wb3J0IG1pbWV0eXBlcwogCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgZGVmYXVsdAorCiBmcm9tIGFyZ3BhcnNlIGltcG9ydCBBcmd1bWVudFBhcnNlcgogCiAKQEAgLTIyLDggKzIyLDggQEAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdtc2dmaWxlJykKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCi0gICAgd2l0aCBvcGVuKGFyZ3MubXNnZmlsZSkgYXMgZnA6Ci0gICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGZwKQorICAgIHdpdGggb3BlbihhcmdzLm1zZ2ZpbGUsICdyYicpIGFzIGZwOgorICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIHBvbGljeT1kZWZhdWx0KQogCiAgICAgdHJ5OgogICAgICAgICBvcy5ta2RpcihhcmdzLmRpcmVjdG9yeSkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKaW5kZXggOTg2ZDY3MC4uZWFkN2JkZCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKKysrIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKQEAgLTYzLDYgKzYzLDggQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBcIiVzXCJcbiIsIGFyZ3ZbMV0pOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByZXR1cm4gMTIwOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy90ZXN0LnB5IGIvRG9jL2luY2x1ZGVzL3Rlc3QucHkKaW5kZXggN2ViZjQ2YS4uOWU5ZDRhNiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3Rlc3QucHkKKysrIGIvRG9jL2luY2x1ZGVzL3Rlc3QucHkKQEAgLTIwNCw3ICsyMDQsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIGRpc3R1dGlscy51dGlsIGltcG9ydCBnZXRfcGxhdGZvcm0KLVBMQVRfU1BFQyA9ICIlcy0lcyIgJSAoZ2V0X3BsYXRmb3JtKCksIHN5cy52ZXJzaW9uWzA6M10pCitQTEFUX1NQRUMgPSAiJXMtJWQuJWQiICUgKGdldF9wbGF0Zm9ybSgpLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pCiBzcmMgPSBvcy5wYXRoLmpvaW4oImJ1aWxkIiwgImxpYi4lcyIgJSBQTEFUX1NQRUMpCiBzeXMucGF0aC5hcHBlbmQoc3JjKQogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5IGIvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weQppbmRleCAzYThjZjQ3Li5hZTVhNTA5IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5CisrKyBiL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkKQEAgLTEsNDYgKzEsMTMgQEAKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IHR6aW5mbywgdGltZWRlbHRhLCBkYXRldGltZQorZnJvbSBkYXRldGltZSBpbXBvcnQgdHppbmZvLCB0aW1lZGVsdGEsIGRhdGV0aW1lLCB0aW1lem9uZQogCiBaRVJPID0gdGltZWRlbHRhKDApCiBIT1VSID0gdGltZWRlbHRhKGhvdXJzPTEpCi0KLSMgQSBVVEMgY2xhc3MuCi0KLWNsYXNzIFVUQyh0emluZm8pOgotICAgICIiIlVUQyIiIgotCi0gICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBaRVJPCi0KLSAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuICJVVEMiCi0KLSAgICBkZWYgZHN0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KLQotdXRjID0gVVRDKCkKLQotIyBBIGNsYXNzIGJ1aWxkaW5nIHR6aW5mbyBvYmplY3RzIGZvciBmaXhlZC1vZmZzZXQgdGltZSB6b25lcy4KLSMgTm90ZSB0aGF0IEZpeGVkT2Zmc2V0KDAsICJVVEMiKSBpcyBhIGRpZmZlcmVudCB3YXkgdG8gYnVpbGQgYQotIyBVVEMgdHppbmZvIG9iamVjdC4KLQotY2xhc3MgRml4ZWRPZmZzZXQodHppbmZvKToKLSAgICAiIiJGaXhlZCBvZmZzZXQgaW4gbWludXRlcyBlYXN0IGZyb20gVVRDLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9mZnNldCwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX19vZmZzZXQgPSB0aW1lZGVsdGEobWludXRlcz1vZmZzZXQpCi0gICAgICAgIHNlbGYuX19uYW1lID0gbmFtZQotCi0gICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fb2Zmc2V0Ci0KLSAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19uYW1lCi0KLSAgICBkZWYgZHN0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KK1NFQ09ORCA9IHRpbWVkZWx0YShzZWNvbmRzPTEpCiAKICMgQSBjbGFzcyBjYXB0dXJpbmcgdGhlIHBsYXRmb3JtJ3MgaWRlYSBvZiBsb2NhbCB0aW1lLgotCisjIChNYXkgcmVzdWx0IGluIHdyb25nIHZhbHVlcyBvbiBoaXN0b3JpY2FsIHRpbWVzIGluCisjICB0aW1lem9uZXMgd2hlcmUgVVRDIG9mZnNldCBhbmQvb3IgdGhlIERTVCBydWxlcyBoYWQKKyMgIGNoYW5nZWQgaW4gdGhlIHBhc3QuKQogaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogU1RET0ZGU0VUID0gdGltZWRlbHRhKHNlY29uZHMgPSAtX3RpbWUudGltZXpvbmUpCkBAIC01Myw2ICsyMCwxNiBAQAogCiBjbGFzcyBMb2NhbFRpbWV6b25lKHR6aW5mbyk6CiAKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgorICAgICAgICBzdGFtcCA9IChkdCAtIGRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbz1zZWxmKSkgLy8gU0VDT05ECisgICAgICAgIGFyZ3MgPSBfdGltZS5sb2NhbHRpbWUoc3RhbXApWzo2XQorICAgICAgICBkc3RfZGlmZiA9IERTVERJRkYgLy8gU0VDT05ECisgICAgICAgICMgRGV0ZWN0IGZvbGQKKyAgICAgICAgZm9sZCA9IChhcmdzID09IF90aW1lLmxvY2FsdGltZShzdGFtcCAtIGRzdF9kaWZmKSkKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lKCphcmdzLCBtaWNyb3NlY29uZD1kdC5taWNyb3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbz1zZWxmLCBmb2xkPWZvbGQpCisKICAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKICAgICAgICAgaWYgc2VsZi5faXNkc3QoZHQpOgogICAgICAgICAgICAgcmV0dXJuIERTVE9GRlNFVApAQCAtOTksMjAgKzc2LDM3IEBACiAjIEluIHRoZSBVUywgc2luY2UgMjAwNywgRFNUIHN0YXJ0cyBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBzZWNvbmQKICMgU3VuZGF5IGluIE1hcmNoLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5IG9uIG9yIGFmdGVyIE1hciA4LgogRFNUU1RBUlRfMjAwNyA9IGRhdGV0aW1lKDEsIDMsIDgsIDIpCi0jIGFuZCBlbmRzIGF0IDJhbSAoRFNUIHRpbWU7IDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgZmlyc3QgU3VuZGF5IG9mIE5vdi4KLURTVEVORF8yMDA3ID0gZGF0ZXRpbWUoMSwgMTEsIDEsIDEpCisjIGFuZCBlbmRzIGF0IDJhbSAoRFNUIHRpbWUpIG9uIHRoZSBmaXJzdCBTdW5kYXkgb2YgTm92LgorRFNURU5EXzIwMDcgPSBkYXRldGltZSgxLCAxMSwgMSwgMikKICMgRnJvbSAxOTg3IHRvIDIwMDYsIERTVCB1c2VkIHRvIHN0YXJ0IGF0IDJhbSAoc3RhbmRhcmQgdGltZSkgb24gdGhlIGZpcnN0Ci0jIFN1bmRheSBpbiBBcHJpbCBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWU7IDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgbGFzdAorIyBTdW5kYXkgaW4gQXByaWwgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lKSBvbiB0aGUgbGFzdAogIyBTdW5kYXkgb2YgT2N0b2Jlciwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheSBvbiBvciBhZnRlciBPY3QgMjUuCiBEU1RTVEFSVF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCA0LCAxLCAyKQotRFNURU5EXzE5ODdfMjAwNiA9IGRhdGV0aW1lKDEsIDEwLCAyNSwgMSkKK0RTVEVORF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCAxMCwgMjUsIDIpCiAjIEZyb20gMTk2NyB0byAxOTg2LCBEU1QgdXNlZCB0byBzdGFydCBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBsYXN0Ci0jIFN1bmRheSBpbiBBcHJpbCAodGhlIG9uZSBvbiBvciBhZnRlciBBcHJpbCAyNCkgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lOwotIyAxYW0gc3RhbmRhcmQgdGltZSkgb24gdGhlIGxhc3QgU3VuZGF5IG9mIE9jdG9iZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkKKyMgU3VuZGF5IGluIEFwcmlsICh0aGUgb25lIG9uIG9yIGFmdGVyIEFwcmlsIDI0KSBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWUpCisjIG9uIHRoZSBsYXN0IFN1bmRheSBvZiBPY3RvYmVyLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5CiAjIG9uIG9yIGFmdGVyIE9jdCAyNS4KIERTVFNUQVJUXzE5NjdfMTk4NiA9IGRhdGV0aW1lKDEsIDQsIDI0LCAyKQogRFNURU5EXzE5NjdfMTk4NiA9IERTVEVORF8xOTg3XzIwMDYKIAorZGVmIHVzX2RzdF9yYW5nZSh5ZWFyKToKKyAgICAjIEZpbmQgc3RhcnQgYW5kIGVuZCB0aW1lcyBmb3IgVVMgRFNULiBGb3IgeWVhcnMgYmVmb3JlIDE5NjcsIHJldHVybgorICAgICMgc3RhcnQgPSBlbmQgZm9yIG5vIERTVC4KKyAgICBpZiAyMDA2IDwgeWVhcjoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzIwMDcsIERTVEVORF8yMDA3CisgICAgZWxpZiAxOTg2IDwgeWVhciA8IDIwMDc6CisgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTg3XzIwMDYsIERTVEVORF8xOTg3XzIwMDYKKyAgICBlbGlmIDE5NjYgPCB5ZWFyIDwgMTk4NzoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5NjdfMTk4NiwgRFNURU5EXzE5NjdfMTk4NgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAoZGF0ZXRpbWUoeWVhciwgMSwgMSksICkgKiAyCisKKyAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RzdGFydC5yZXBsYWNlKHllYXI9eWVhcikpCisgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdGVuZC5yZXBsYWNlKHllYXI9eWVhcikpCisgICAgcmV0dXJuIHN0YXJ0LCBlbmQKKworCiBjbGFzcyBVU1RpbWVab25lKHR6aW5mbyk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG91cnMsIHJlcHJuYW1lLCBzdGRuYW1lLCBkc3RuYW1lKToKQEAgLTE0MSwyNyArMTM1LDM5IEBACiAgICAgICAgICAgICAjIGltcGxlbWVudGF0aW9uKSBwYXNzZXMgYSBkYXRldGltZSB3aXRoIGR0LnR6aW5mbyBpcyBzZWxmLgogICAgICAgICAgICAgcmV0dXJuIFpFUk8KICAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCi0KLSAgICAgICAgIyBGaW5kIHN0YXJ0IGFuZCBlbmQgdGltZXMgZm9yIFVTIERTVC4gRm9yIHllYXJzIGJlZm9yZSAxOTY3LCByZXR1cm4KLSAgICAgICAgIyBaRVJPIGZvciBubyBEU1QuCi0gICAgICAgIGlmIDIwMDYgPCBkdC55ZWFyOgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzIwMDcsIERTVEVORF8yMDA3Ci0gICAgICAgIGVsaWYgMTk4NiA8IGR0LnllYXIgPCAyMDA3OgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5ODdfMjAwNiwgRFNURU5EXzE5ODdfMjAwNgotICAgICAgICBlbGlmIDE5NjYgPCBkdC55ZWFyIDwgMTk4NzoKLSAgICAgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTY3XzE5ODYsIERTVEVORF8xOTY3XzE5ODYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBaRVJPCi0KLSAgICAgICAgc3RhcnQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0c3RhcnQucmVwbGFjZSh5ZWFyPWR0LnllYXIpKQotICAgICAgICBlbmQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0ZW5kLnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKLQorICAgICAgICBzdGFydCwgZW5kID0gdXNfZHN0X3JhbmdlKGR0LnllYXIpCiAgICAgICAgICMgQ2FuJ3QgY29tcGFyZSBuYWl2ZSB0byBhd2FyZSBvYmplY3RzLCBzbyBzdHJpcCB0aGUgdGltZXpvbmUgZnJvbQogICAgICAgICAjIGR0IGZpcnN0LgotICAgICAgICBpZiBzdGFydCA8PSBkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSA8IGVuZDoKKyAgICAgICAgZHQgPSBkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKQorICAgICAgICBpZiBzdGFydCArIEhPVVIgPD0gZHQgPCBlbmQgLSBIT1VSOgorICAgICAgICAgICAgIyBEU1QgaXMgaW4gZWZmZWN0LgogICAgICAgICAgICAgcmV0dXJuIEhPVVIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBaRVJPCisgICAgICAgIGlmIGVuZCAtIEhPVVIgPD0gZHQgPCBlbmQ6CisgICAgICAgICAgICAjIEZvbGQgKGFuIGFtYmlndW91cyBob3VyKTogdXNlIGR0LmZvbGQgdG8gZGlzYW1iaWd1YXRlLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8gaWYgZHQuZm9sZCBlbHNlIEhPVVIKKyAgICAgICAgaWYgc3RhcnQgPD0gZHQgPCBzdGFydCArIEhPVVI6CisgICAgICAgICAgICAjIEdhcCAoYSBub24tZXhpc3RlbnQgaG91cik6IHJldmVyc2UgdGhlIGZvbGQgcnVsZS4KKyAgICAgICAgICAgIHJldHVybiBIT1VSIGlmIGR0LmZvbGQgZWxzZSBaRVJPCisgICAgICAgICMgRFNUIGlzIG9mZi4KKyAgICAgICAgcmV0dXJuIFpFUk8KKworICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIHN0YXJ0LCBlbmQgPSB1c19kc3RfcmFuZ2UoZHQueWVhcikKKyAgICAgICAgc3RhcnQgPSBzdGFydC5yZXBsYWNlKHR6aW5mbz1zZWxmKQorICAgICAgICBlbmQgPSBlbmQucmVwbGFjZSh0emluZm89c2VsZikKKyAgICAgICAgc3RkX3RpbWUgPSBkdCArIHNlbGYuc3Rkb2Zmc2V0CisgICAgICAgIGRzdF90aW1lID0gc3RkX3RpbWUgKyBIT1VSCisgICAgICAgIGlmIGVuZCA8PSBkc3RfdGltZSA8IGVuZCArIEhPVVI6CisgICAgICAgICAgICAjIFJlcGVhdGVkIGhvdXIKKyAgICAgICAgICAgIHJldHVybiBzdGRfdGltZS5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgaWYgc3RkX3RpbWUgPCBzdGFydCBvciBkc3RfdGltZSA+PSBlbmQ6CisgICAgICAgICAgICAjIFN0YW5kYXJkIHRpbWUKKyAgICAgICAgICAgIHJldHVybiBzdGRfdGltZQorICAgICAgICBpZiBzdGFydCA8PSBzdGRfdGltZSA8IGVuZCAtIEhPVVI6CisgICAgICAgICAgICAjIERheWxpZ2h0IHNhdmluZyB0aW1lCisgICAgICAgICAgICByZXR1cm4gZHN0X3RpbWUKKwogCiBFYXN0ZXJuICA9IFVTVGltZVpvbmUoLTUsICJFYXN0ZXJuIiwgICJFU1QiLCAiRURUIikKIENlbnRyYWwgID0gVVNUaW1lWm9uZSgtNiwgIkNlbnRyYWwiLCAgIkNTVCIsICJDRFQiKQpkaWZmIC0tZ2l0IGEvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0IGIvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0CmluZGV4IDFlZjMxNDkuLmIyMjQ2NWQgMTAwNjQ0Ci0tLSBhL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdAorKysgYi9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QKQEAgLTIsOSArMiw5IEBACiAKIC4uIF9pbnN0YWxsaW5nLWluZGV4OgogCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICBJbnN0YWxsaW5nIFB5dGhvbiBNb2R1bGVzCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKgorSW5zdGFsbGluZyBQeXRob24gTW9kdWxlcworKioqKioqKioqKioqKioqKioqKioqKioqKgogCiA6RW1haWw6IGRpc3R1dGlscy1zaWdAcHl0aG9uLm9yZwogCkBAIC0zNCwyNCArMzQsMjQgQEAKIAogKiBgYHBpcGBgIGlzIHRoZSBwcmVmZXJyZWQgaW5zdGFsbGVyIHByb2dyYW0uIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNCwgaXQKICAgaXMgaW5jbHVkZWQgYnkgZGVmYXVsdCB3aXRoIHRoZSBQeXRob24gYmluYXJ5IGluc3RhbGxlcnMuCi0qIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIHNlbWktaXNvbGF0ZWQgUHl0aG9uIGVudmlyb25tZW50IHRoYXQgYWxsb3dzCisqIEEgKnZpcnR1YWwgZW52aXJvbm1lbnQqIGlzIGEgc2VtaS1pc29sYXRlZCBQeXRob24gZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MKICAgcGFja2FnZXMgdG8gYmUgaW5zdGFsbGVkIGZvciB1c2UgYnkgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uLCByYXRoZXIgdGhhbgotICBiZWluZyBpbnN0YWxsZWQgc3lzdGVtIHdpZGUKLSogYGBweXZlbnZgYCBpcyB0aGUgc3RhbmRhcmQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCBoYXMKKyAgYmVpbmcgaW5zdGFsbGVkIHN5c3RlbSB3aWRlLgorKiBgYHZlbnZgYCBpcyB0aGUgc3RhbmRhcmQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCBoYXMKICAgYmVlbiBwYXJ0IG9mIFB5dGhvbiBzaW5jZSBQeXRob24gMy4zLiBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjQsIGl0Ci0gIGRlZmF1bHRzIHRvIGluc3RhbGxpbmcgYGBwaXBgYCBpbnRvIGFsbCBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnRzCisgIGRlZmF1bHRzIHRvIGluc3RhbGxpbmcgYGBwaXBgYCBpbnRvIGFsbCBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnRzLgogKiBgYHZpcnR1YWxlbnZgYCBpcyBhIHRoaXJkIHBhcnR5IGFsdGVybmF0aXZlIChhbmQgcHJlZGVjZXNzb3IpIHRvCi0gIGBgcHl2ZW52YGAuIEl0IGFsbG93cyB2aXJ0dWFsIGVudmlyb25tZW50cyB0byBiZSB1c2VkIG9uIHZlcnNpb25zIG9mCi0gIFB5dGhvbiBwcmlvciB0byAzLjQsIHdoaWNoIGVpdGhlciBkb24ndCBwcm92aWRlIGBgcHl2ZW52YGAgYXQgYWxsLCBvcgorICBgYHZlbnZgYC4gSXQgYWxsb3dzIHZpcnR1YWwgZW52aXJvbm1lbnRzIHRvIGJlIHVzZWQgb24gdmVyc2lvbnMgb2YKKyAgUHl0aG9uIHByaW9yIHRvIDMuNCwgd2hpY2ggZWl0aGVyIGRvbid0IHByb3ZpZGUgYGB2ZW52YGAgYXQgYWxsLCBvcgogICBhcmVuJ3QgYWJsZSB0byBhdXRvbWF0aWNhbGx5IGluc3RhbGwgYGBwaXBgYCBpbnRvIGNyZWF0ZWQgZW52aXJvbm1lbnRzLgotKiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgSW5kZXggPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+YF9fIGlzIGEgcHVibGljCisqIFRoZSBgUHl0aG9uIFBhY2thZ2luZyBJbmRleCA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT5gX18gaXMgYSBwdWJsaWMKICAgcmVwb3NpdG9yeSBvZiBvcGVuIHNvdXJjZSBsaWNlbnNlZCBwYWNrYWdlcyBtYWRlIGF2YWlsYWJsZSBmb3IgdXNlIGJ5Ci0gIG90aGVyIFB5dGhvbiB1c2VycworICBvdGhlciBQeXRob24gdXNlcnMuCiAqIHRoZSBgUHl0aG9uIFBhY2thZ2luZyBBdXRob3JpdHkKICAgPGh0dHBzOi8vd3d3LnB5cGEuaW8vZW4vbGF0ZXN0Lz5gX18gYXJlIHRoZSBncm91cCBvZgogICBkZXZlbG9wZXJzIGFuZCBkb2N1bWVudGF0aW9uIGF1dGhvcnMgcmVzcG9uc2libGUgZm9yIHRoZSBtYWludGVuYW5jZSBhbmQKICAgZXZvbHV0aW9uIG9mIHRoZSBzdGFuZGFyZCBwYWNrYWdpbmcgdG9vbHMgYW5kIHRoZSBhc3NvY2lhdGVkIG1ldGFkYXRhIGFuZAotICBmaWxlIGZvcm1hdCBzdGFuZGFyZHMuIFRoZXkgbWFpbnRhaW4gYSB2YXJpZXR5IG9mIHRvb2xzLCBkb2N1bWVudGF0aW9uCisgIGZpbGUgZm9ybWF0IHN0YW5kYXJkcy4gVGhleSBtYWludGFpbiBhIHZhcmlldHkgb2YgdG9vbHMsIGRvY3VtZW50YXRpb24sCiAgIGFuZCBpc3N1ZSB0cmFja2VycyBvbiBib3RoIGBHaXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhPmBfXyBhbmQKICAgYEJpdEJ1Y2tldCA8aHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5cGEvPmBfXy4KICogYGBkaXN0dXRpbHNgYCBpcyB0aGUgb3JpZ2luYWwgYnVpbGQgYW5kIGRpc3RyaWJ1dGlvbiBzeXN0ZW0gZmlyc3QgYWRkZWQgdG8KQEAgLTYyLDYgKzYyLDE5IEBACiAgIG9mIHRoZSBtYWlsaW5nIGxpc3QgdXNlZCB0byBjb29yZGluYXRlIFB5dGhvbiBwYWNrYWdpbmcgc3RhbmRhcmRzCiAgIGRldmVsb3BtZW50KS4KIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgYGBweXZlbnZgYCB3YXMgdGhlIHJlY29tbWVuZGVkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzIGZvcgorICAgUHl0aG9uIDMuMyBhbmQgMy40LCBhbmQgaXMgYGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNgorICAgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnL2Rldi93aGF0c25ldy8zLjYuaHRtbCNkZXByZWNhdGVkLWZlYXR1cmVzPmBfLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIHVzZSBvZiBgYHZlbnZgYCBpcyBub3cgcmVjb21tZW5kZWQgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLgorCisuLiBzZWVhbHNvOjoKKworICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogQ3JlYXRpbmcgYW5kIHVzaW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLyNjcmVhdGluZy12aXJ0dWFsLWVudmlyb25tZW50cz5gX18KKwogCiBCYXNpYyB1c2FnZQogPT09PT09PT09PT0KQEAgLTEwMCwxMyArMTEzLDE0IEBACiBNb3JlIGluZm9ybWF0aW9uIGFuZCByZXNvdXJjZXMgcmVnYXJkaW5nIGBgcGlwYGAgYW5kIGl0cyBjYXBhYmlsaXRpZXMgY2FuIGJlCiBmb3VuZCBpbiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZSA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZz5gX18uCiAKLWBgcHl2ZW52YGAgaGFzIGl0cyBvd24gZG9jdW1lbnRhdGlvbiBhdCA6cmVmOmBzY3JpcHRzLXB5dmVudmAuIEluc3RhbGxpbmcKLWludG8gYW4gYWN0aXZlIHZpcnR1YWwgZW52aXJvbm1lbnQgdXNlcyB0aGUgY29tbWFuZHMgc2hvd24gYWJvdmUuCitDcmVhdGlvbiBvZiB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBkb25lIHRocm91Z2ggdGhlIDptb2Q6YHZlbnZgIG1vZHVsZS4KK0luc3RhbGxpbmcgcGFja2FnZXMgaW50byBhbiBhY3RpdmUgdmlydHVhbCBlbnZpcm9ubWVudCB1c2VzIHRoZSBjb21tYW5kcyBzaG93bgorYWJvdmUuCiAKIC4uIHNlZWFsc286OgogCiAgICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogSW5zdGFsbGluZyBQeXRob24gRGlzdHJpYnV0aW9uIFBhY2thZ2VzCi0gICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvPmBfXworICAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvPmBfXwogCiAKIEhvdyBkbyBJIC4uLj8KQEAgLTEyNCw3ICsxMzgsNyBAQAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IFJlcXVpcmVtZW50cyBmb3IgSW5zdGFsbGluZyBQYWNrYWdlcwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvI3JlcXVpcmVtZW50cy1mb3ItaW5zdGFsbGluZy1wYWNrYWdlcz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvI3JlcXVpcmVtZW50cy1mb3ItaW5zdGFsbGluZy1wYWNrYWdlcz5gX18KIAogCiAuLiBpbnN0YWxsaW5nLXBlci11c2VyLWluc3RhbGxhdGlvbjoKQEAgLTE0MiwyMCArMTU2LDE5IEBACiBBIG51bWJlciBvZiBzY2llbnRpZmljIFB5dGhvbiBwYWNrYWdlcyBoYXZlIGNvbXBsZXggYmluYXJ5IGRlcGVuZGVuY2llcywgYW5kCiBhcmVuJ3QgY3VycmVudGx5IGVhc3kgdG8gaW5zdGFsbCB1c2luZyBgYHBpcGBgIGRpcmVjdGx5LiBBdCB0aGlzIHBvaW50IGluCiB0aW1lLCBpdCB3aWxsIG9mdGVuIGJlIGVhc2llciBmb3IgdXNlcnMgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcyBieQotYG90aGVyIG1lYW5zCi08aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCitgb3RoZXIgbWVhbnMgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc2NpZW5jZS8+YF9fCiByYXRoZXIgdGhhbiBhdHRlbXB0aW5nIHRvIGluc3RhbGwgdGhlbSB3aXRoIGBgcGlwYGAuCiAKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBJbnN0YWxsaW5nIFNjaWVudGlmaWMgUGFja2FnZXMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zY2llbmNlLz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL3NjaWVuY2UvPmBfXwogCiAKIC4uLiB3b3JrIHdpdGggbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIGluc3RhbGxlZCBpbiBwYXJhbGxlbD8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotT24gTGludXgsIE1hYyBPUyBYIGFuZCBvdGhlciBQT1NJWCBzeXN0ZW1zLCB1c2UgdGhlIHZlcnNpb25lZCBQeXRob24gY29tbWFuZHMKK09uIExpbnV4LCBNYWMgT1MgWCwgYW5kIG90aGVyIFBPU0lYIHN5c3RlbXMsIHVzZSB0aGUgdmVyc2lvbmVkIFB5dGhvbiBjb21tYW5kcwogaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGAtbWBgIHN3aXRjaCB0byBydW4gdGhlIGFwcHJvcHJpYXRlIGNvcHkgb2YKIGBgcGlwYGA6OgogCkBAIC0xNjQsNyArMTc3LDcgQEAKICAgIHB5dGhvbjMgICAtbSBwaXAgaW5zdGFsbCBTb21lUGFja2FnZSAgIyBkZWZhdWx0IFB5dGhvbiAzCiAgICBweXRob24zLjQgLW0gcGlwIGluc3RhbGwgU29tZVBhY2thZ2UgICMgc3BlY2lmaWNhbGx5IFB5dGhvbiAzLjQKIAotKGFwcHJvcHJpYXRlbHkgdmVyc2lvbmVkIGBgcGlwYGAgY29tbWFuZHMgbWF5IGFsc28gYmUgYXZhaWxhYmxlKQorQXBwcm9wcmlhdGVseSB2ZXJzaW9uZWQgYGBwaXBgYCBjb21tYW5kcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUuCiAKIE9uIFdpbmRvd3MsIHVzZSB0aGUgYGBweWBgIFB5dGhvbiBsYXVuY2hlciBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBgYC1tYGAKIHN3aXRjaDo6CkBAIC0yMTIsMTEgKzIyNSwxMSBAQAogdGhhbiBuZWVkaW5nIHRvIGJ1aWxkIHRoZW0gdGhlbXNlbHZlcy4KIAogU29tZSBvZiB0aGUgc29sdXRpb25zIGZvciBpbnN0YWxsaW5nIGBzY2llbnRpZmljIHNvZnR3YXJlCi08aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCi10aGF0IGlzIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHByZS1idWlsdCBgYHdoZWVsYGAgZmlsZXMgbWF5IGFsc28gaGVscCB3aXRoCis8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zY2llbmNlLz5gX18KK3RoYXQgYXJlIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHByZS1idWlsdCBgYHdoZWVsYGAgZmlsZXMgbWF5IGFsc28gaGVscCB3aXRoCiBvYnRhaW5pbmcgb3RoZXIgYmluYXJ5IGV4dGVuc2lvbnMgd2l0aG91dCBuZWVkaW5nIHRvIGJ1aWxkIHRoZW0gbG9jYWxseS4KIAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IEJpbmFyeSBFeHRlbnNpb25zCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvZXh0ZW5zaW9ucy8+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9leHRlbnNpb25zLz5gX18KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCBhZTcyZDI2Li5lMDIzNjBjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC01OCwxMyArNTgsMTMgQEAKICAgICAgIFRoZSBhc3luY2hyb25vdXMgb3V0cHV0IGJ1ZmZlciBzaXplIChkZWZhdWx0IGBgNDA5NmBgKS4KIAogICAgVW5saWtlIDpjbGFzczpgYXN5bmNvcmUuZGlzcGF0Y2hlcmAsIDpjbGFzczpgYXN5bmNfY2hhdGAgYWxsb3dzIHlvdSB0bwotICAgZGVmaW5lIGEgZmlyc3QtaW4tZmlyc3Qtb3V0IHF1ZXVlIChmaWZvKSBvZiAqcHJvZHVjZXJzKi4gQSBwcm9kdWNlciBuZWVkCisgICBkZWZpbmUgYSA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlIG9mICpwcm9kdWNlcnMqLiBBIHByb2R1Y2VyIG5lZWQKICAgIGhhdmUgb25seSBvbmUgbWV0aG9kLCA6bWV0aDpgbW9yZWAsIHdoaWNoIHNob3VsZCByZXR1cm4gZGF0YSB0byBiZQogICAgdHJhbnNtaXR0ZWQgb24gdGhlIGNoYW5uZWwuCiAgICBUaGUgcHJvZHVjZXIgaW5kaWNhdGVzIGV4aGF1c3Rpb24gKCppLmUuKiB0aGF0IGl0IGNvbnRhaW5zIG5vIG1vcmUgZGF0YSkgYnkKICAgIGhhdmluZyBpdHMgOm1ldGg6YG1vcmVgIG1ldGhvZCByZXR1cm4gdGhlIGVtcHR5IGJ5dGVzIG9iamVjdC4gQXQgdGhpcyBwb2ludAotICAgdGhlIDpjbGFzczpgYXN5bmNfY2hhdGAgb2JqZWN0IHJlbW92ZXMgdGhlIHByb2R1Y2VyIGZyb20gdGhlIGZpZm8gYW5kIHN0YXJ0cwotICAgdXNpbmcgdGhlIG5leHQgcHJvZHVjZXIsIGlmIGFueS4gV2hlbiB0aGUgcHJvZHVjZXIgZmlmbyBpcyBlbXB0eSB0aGUKKyAgIHRoZSA6Y2xhc3M6YGFzeW5jX2NoYXRgIG9iamVjdCByZW1vdmVzIHRoZSBwcm9kdWNlciBmcm9tIHRoZSBxdWV1ZSBhbmQgc3RhcnRzCisgICB1c2luZyB0aGUgbmV4dCBwcm9kdWNlciwgaWYgYW55LiBXaGVuIHRoZSBwcm9kdWNlciBxdWV1ZSBpcyBlbXB0eSB0aGUKICAgIDptZXRoOmBoYW5kbGVfd3JpdGVgIG1ldGhvZCBkb2VzIG5vdGhpbmcuIFlvdSB1c2UgdGhlIGNoYW5uZWwgb2JqZWN0J3MKICAgIDptZXRoOmBzZXRfdGVybWluYXRvcmAgbWV0aG9kIHRvIGRlc2NyaWJlIGhvdyB0byByZWNvZ25pemUgdGhlIGVuZCBvZiwgb3IKICAgIGFuIGltcG9ydGFudCBicmVha3BvaW50IGluLCBhbiBpbmNvbWluZyB0cmFuc21pc3Npb24gZnJvbSB0aGUgcmVtb3RlCkBAIC03OCw4ICs3OCw4IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuY2xvc2Vfd2hlbl9kb25lKCkKIAotICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIGZpZm8uIFdoZW4gdGhpcyBwcm9kdWNlciBpcyBwb3BwZWQgb2ZmCi0gICB0aGUgZmlmbyBpdCBjYXVzZXMgdGhlIGNoYW5uZWwgdG8gYmUgY2xvc2VkLgorICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIHF1ZXVlLiBXaGVuIHRoaXMgcHJvZHVjZXIgaXMgcG9wcGVkIG9mZgorICAgdGhlIHF1ZXVlIGl0IGNhdXNlcyB0aGUgY2hhbm5lbCB0byBiZSBjbG9zZWQuCiAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5jb2xsZWN0X2luY29taW5nX2RhdGEoZGF0YSkKQEAgLTkyLDcgKzkyLDcgQEAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuZGlzY2FyZF9idWZmZXJzKCkKIAogICAgSW4gZW1lcmdlbmNpZXMgdGhpcyBtZXRob2Qgd2lsbCBkaXNjYXJkIGFueSBkYXRhIGhlbGQgaW4gdGhlIGlucHV0IGFuZC9vcgotICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBmaWZvLgorICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBxdWV1ZS4KIAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LmZvdW5kX3Rlcm1pbmF0b3IoKQpAQCAtMTEwLDcgKzExMCw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaChkYXRhKQogCi0gICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIGZpZm8gdG8gZW5zdXJlIGl0cyB0cmFuc21pc3Npb24uCisgICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIHF1ZXVlIHRvIGVuc3VyZSBpdHMgdHJhbnNtaXNzaW9uLgogICAgVGhpcyBpcyBhbGwgeW91IG5lZWQgdG8gZG8gdG8gaGF2ZSB0aGUgY2hhbm5lbCB3cml0ZSB0aGUgZGF0YSBvdXQgdG8gdGhlCiAgICBuZXR3b3JrLCBhbHRob3VnaCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgeW91ciBvd24gcHJvZHVjZXJzIGluIG1vcmUgY29tcGxleAogICAgc2NoZW1lcyB0byBpbXBsZW1lbnQgZW5jcnlwdGlvbiBhbmQgY2h1bmtpbmcsIGZvciBleGFtcGxlLgpAQCAtMTE4LDcgKzExOCw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaF93aXRoX3Byb2R1Y2VyKHByb2R1Y2VyKQogCi0gICBUYWtlcyBhIHByb2R1Y2VyIG9iamVjdCBhbmQgYWRkcyBpdCB0byB0aGUgcHJvZHVjZXIgZmlmbyBhc3NvY2lhdGVkIHdpdGgKKyAgIFRha2VzIGEgcHJvZHVjZXIgb2JqZWN0IGFuZCBhZGRzIGl0IHRvIHRoZSBwcm9kdWNlciBxdWV1ZSBhc3NvY2lhdGVkIHdpdGgKICAgIHRoZSBjaGFubmVsLiAgV2hlbiBhbGwgY3VycmVudGx5LXB1c2hlZCBwcm9kdWNlcnMgaGF2ZSBiZWVuIGV4aGF1c3RlZCB0aGUKICAgIGNoYW5uZWwgd2lsbCBjb25zdW1lIHRoaXMgcHJvZHVjZXIncyBkYXRhIGJ5IGNhbGxpbmcgaXRzIDptZXRoOmBtb3JlYAogICAgbWV0aG9kIGFuZCBzZW5kIHRoZSBkYXRhIHRvIHRoZSByZW1vdGUgZW5kcG9pbnQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKaW5kZXggZWVkNGYwOC4uNjcwNjAwMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdApAQCAtMTEwLDggKzExMCw5IEBACiAgICBjYWxsZWQgYWZ0ZXIgOm1ldGg6YGNhbGxfc29vbmAgcmV0dXJucywgd2hlbiBjb250cm9sIHJldHVybnMgdG8gdGhlIGV2ZW50CiAgICBsb29wLgogCi0gICBUaGlzIG9wZXJhdGVzIGFzIGEgRklGTyBxdWV1ZSwgY2FsbGJhY2tzIGFyZSBjYWxsZWQgaW4gdGhlIG9yZGVyIGluCi0gICB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UuCisgICBUaGlzIG9wZXJhdGVzIGFzIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSwgY2FsbGJhY2tzCisgICBhcmUgY2FsbGVkIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjaworICAgd2lsbCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgogCiAgICBBbnkgcG9zaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGxiYWNrIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICAgY2FsbGJhY2sgd2hlbiBpdCBpcyBjYWxsZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QgYi9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKaW5kZXggODc4ZDhkYi4uNGY1ZjBmMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdApAQCAtNTMsMTMgKzUzLDE0IEBACiAgICB0aGFuIG9uZSBsaW5lIG1heSBiZSBwYXNzZWQgYXQgYSB0aW1lLgogCiAKLS4uIGZ1bmN0aW9uOjogYjJhX2Jhc2U2NChkYXRhKQorLi4gZnVuY3Rpb246OiBiMmFfYmFzZTY0KGRhdGEsIFwqLCBuZXdsaW5lPVRydWUpCiAKICAgIENvbnZlcnQgYmluYXJ5IGRhdGEgdG8gYSBsaW5lIG9mIEFTQ0lJIGNoYXJhY3RlcnMgaW4gYmFzZTY0IGNvZGluZy4gVGhlIHJldHVybgotICAgdmFsdWUgaXMgdGhlIGNvbnZlcnRlZCBsaW5lLCBpbmNsdWRpbmcgYSBuZXdsaW5lIGNoYXIuICBUaGUgbmV3bGluZSBpcwotICAgYWRkZWQgYmVjYXVzZSB0aGUgb3JpZ2luYWwgdXNlIGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gd2FzIHRvIGZlZWQgaXQgYQotICAgc2VyaWVzIG9mIDU3IGJ5dGUgaW5wdXQgbGluZXMgdG8gZ2V0IG91dHB1dCBsaW5lcyB0aGF0IGNvbmZvcm0gdG8gdGhlCi0gICBNSU1FLWJhc2U2NCBzdGFuZGFyZC4gIE90aGVyd2lzZSB0aGUgb3V0cHV0IGNvbmZvcm1zIHRvIDpyZmM6YDM1NDhgLgorICAgdmFsdWUgaXMgdGhlIGNvbnZlcnRlZCBsaW5lLCBpbmNsdWRpbmcgYSBuZXdsaW5lIGNoYXIgaWYgKm5ld2xpbmUqIGlzCisgICB0cnVlLiAgVGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uIGNvbmZvcm1zIHRvIDpyZmM6YDM1NDhgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICpuZXdsaW5lKiBwYXJhbWV0ZXIuCiAKIAogLi4gZnVuY3Rpb246OiBhMmJfcXAoZGF0YSwgaGVhZGVyPUZhbHNlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY21hdGgucnN0IGIvRG9jL2xpYnJhcnkvY21hdGgucnN0CmluZGV4IDYyZGRiNmIuLmQ5MzVjNDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NtYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKQEAgLTI1Myw2ICsyNTMsNDAgQEAKIAogICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCAqZSosIGFzIGEgZmxvYXQuCiAKKy4uIGRhdGE6OiB0YXUKKworICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCAqz4QqLCBhcyBhIGZsb2F0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IGluZgorCisgICBGbG9hdGluZy1wb2ludCBwb3NpdGl2ZSBpbmZpbml0eS4gRXF1aXZhbGVudCB0byBgYGZsb2F0KCdpbmYnKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IGluZmoKKworICAgQ29tcGxleCBudW1iZXIgd2l0aCB6ZXJvIHJlYWwgcGFydCBhbmQgcG9zaXRpdmUgaW5maW5pdHkgaW1hZ2luYXJ5CisgICBwYXJ0LiBFcXVpdmFsZW50IHRvIGBgY29tcGxleCgwLjAsIGZsb2F0KCdpbmYnKSlgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBuYW4KKworICAgQSBmbG9hdGluZy1wb2ludCAibm90IGEgbnVtYmVyIiAoTmFOKSB2YWx1ZS4gIEVxdWl2YWxlbnQgdG8KKyAgIGBgZmxvYXQoJ25hbicpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogbmFuagorCisgICBDb21wbGV4IG51bWJlciB3aXRoIHplcm8gcmVhbCBwYXJ0IGFuZCBOYU4gaW1hZ2luYXJ5IHBhcnQuIEVxdWl2YWxlbnQgdG8KKyAgIGBgY29tcGxleCgwLjAsIGZsb2F0KCduYW4nKSlgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gaW5kZXg6OiBtb2R1bGU6IG1hdGgKIAogTm90ZSB0aGF0IHRoZSBzZWxlY3Rpb24gb2YgZnVuY3Rpb25zIGlzIHNpbWlsYXIsIGJ1dCBub3QgaWRlbnRpY2FsLCB0byB0aGF0IGluCkBAIC0yNzYsNSArMzEwLDMgQEAKICAgIEthaGFuLCBXOiAgQnJhbmNoIGN1dHMgZm9yIGNvbXBsZXggZWxlbWVudGFyeSBmdW5jdGlvbnM7IG9yLCBNdWNoIGFkbyBhYm91dAogICAgbm90aGluZydzIHNpZ24gYml0LiAgSW4gSXNlcmxlcywgQS4sIGFuZCBQb3dlbGwsIE0uIChlZHMuKSwgVGhlIHN0YXRlIG9mIHRoZSBhcnQKICAgIGluIG51bWVyaWNhbCBhbmFseXNpcy4gQ2xhcmVuZG9uIFByZXNzICgxOTg3KSBwcDE2NS0yMTEuCi0KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZS5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlLnJzdAppbmRleCA0NDNhZjY5Li40Y2NlMWZhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2RlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlLnJzdApAQCAtMzAsMTUgKzMwLDE5IEBACiAgICBgYHN5cy5wczFgYCBhbmQgYGBzeXMucHMyYGAsIGFuZCBpbnB1dCBidWZmZXJpbmcuCiAKIAotLi4gZnVuY3Rpb246OiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUsIGV4aXRtc2c9Tm9uZSkKIAogICAgQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcnVuIGEgcmVhZC1ldmFsLXByaW50IGxvb3AuICBUaGlzIGNyZWF0ZXMgYSBuZXcKICAgIGluc3RhbmNlIG9mIDpjbGFzczpgSW50ZXJhY3RpdmVDb25zb2xlYCBhbmQgc2V0cyAqcmVhZGZ1bmMqIHRvIGJlIHVzZWQgYXMKICAgIHRoZSA6bWV0aDpgSW50ZXJhY3RpdmVDb25zb2xlLnJhd19pbnB1dGAgbWV0aG9kLCBpZiBwcm92aWRlZC4gIElmICpsb2NhbCogaXMKICAgIHByb3ZpZGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIDpjbGFzczpgSW50ZXJhY3RpdmVDb25zb2xlYCBjb25zdHJ1Y3RvciBmb3IKICAgIHVzZSBhcyB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgZm9yIHRoZSBpbnRlcnByZXRlciBsb29wLiAgVGhlIDptZXRoOmBpbnRlcmFjdGAKLSAgIG1ldGhvZCBvZiB0aGUgaW5zdGFuY2UgaXMgdGhlbiBydW4gd2l0aCAqYmFubmVyKiBwYXNzZWQgYXMgdGhlIGJhbm5lciB0bwotICAgdXNlLCBpZiBwcm92aWRlZC4gIFRoZSBjb25zb2xlIG9iamVjdCBpcyBkaXNjYXJkZWQgYWZ0ZXIgdXNlLgorICAgbWV0aG9kIG9mIHRoZSBpbnN0YW5jZSBpcyB0aGVuIHJ1biB3aXRoICpiYW5uZXIqIGFuZCAqZXhpdG1zZyogcGFzc2VkIGFzIHRoZQorICAgYmFubmVyIGFuZCBleGl0IG1lc3NhZ2UgdG8gdXNlLCBpZiBwcm92aWRlZC4gIFRoZSBjb25zb2xlIG9iamVjdCBpcyBkaXNjYXJkZWQKKyAgIGFmdGVyIHVzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpleGl0bXNnKiBwYXJhbWV0ZXIuCiAKIAogLi4gZnVuY3Rpb246OiBjb21waWxlX2NvbW1hbmQoc291cmNlLCBmaWxlbmFtZT0iPGlucHV0PiIsIHN5bWJvbD0ic2luZ2xlIikKQEAgLTEzNiw3ICsxNDAsNyBAQAogaW50ZXJwcmV0ZXIgb2JqZWN0cyBhcyB3ZWxsIGFzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25zLgogCiAKLS4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdChiYW5uZXI9Tm9uZSkKKy4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdChiYW5uZXI9Tm9uZSwgZXhpdG1zZz1Ob25lKQogCiAgICBDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBjb25zb2xlLiBUaGUgb3B0aW9uYWwgKmJhbm5lciogYXJndW1lbnQKICAgIHNwZWNpZnkgdGhlIGJhbm5lciB0byBwcmludCBiZWZvcmUgdGhlIGZpcnN0IGludGVyYWN0aW9uOyBieSBkZWZhdWx0IGl0IHByaW50cyBhCkBAIC0xNDQsOSArMTQ4LDE2IEBACiAgICBieSB0aGUgY2xhc3MgbmFtZSBvZiB0aGUgY29uc29sZSBvYmplY3QgaW4gcGFyZW50aGVzZXMgKHNvIGFzIG5vdCB0byBjb25mdXNlCiAgICB0aGlzIHdpdGggdGhlIHJlYWwgaW50ZXJwcmV0ZXIgLS0gc2luY2UgaXQncyBzbyBjbG9zZSEpLgogCisgICBUaGUgb3B0aW9uYWwgKmV4aXRtc2cqIGFyZ3VtZW50IHNwZWNpZmllcyBhbiBleGl0IG1lc3NhZ2UgcHJpbnRlZCB3aGVuIGV4aXRpbmcuCisgICBQYXNzIHRoZSBlbXB0eSBzdHJpbmcgdG8gc3VwcHJlc3MgdGhlIGV4aXQgbWVzc2FnZS4gSWYgKmV4aXRtc2cqIGlzIG5vdCBnaXZlbiBvcgorICAgTm9uZSwgYSBkZWZhdWx0IG1lc3NhZ2UgaXMgcHJpbnRlZC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRvIHN1cHByZXNzIHByaW50aW5nIGFueSBiYW5uZXIsIHBhc3MgYW4gZW1wdHkgc3RyaW5nLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUHJpbnQgYW4gZXhpdCBtZXNzYWdlIHdoZW4gZXhpdGluZy4KKwogCiAuLiBtZXRob2Q6OiBJbnRlcmFjdGl2ZUNvbnNvbGUucHVzaChsaW5lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2RlY3MucnN0IGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAppbmRleCAxYWRkMzAwLi5jNmI2YTU2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKQEAgLTEyNTQsMTAgKzEyNTQsMTYgQEAKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IE9ubHkgYGBlcnJvcnM9J3N0cmljdCdgYCAgfAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgaXMgc3VwcG9ydGVkLiAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgbWJjcyAgICAgICAgICAgICAgIHwgZGJjcyAgICB8IFdpbmRvd3Mgb25seTogRW5jb2RlICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgb3BlcmFuZCBhY2NvcmRpbmcgdG8gdGhlICB8Cit8IG1iY3MgICAgICAgICAgICAgICB8IGFuc2ksICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgZGJjcyAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgQU5TSSBjb2RlcGFnZSAoQ1BfQUNQKSAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgb2VtICAgICAgICAgICAgICAgIHwgICAgICAgICB8IFdpbmRvd3Mgb25seTogRW5jb2RlICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgb3BlcmFuZCBhY2NvcmRpbmcgdG8gdGhlICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBPRU0gY29kZXBhZ2UgKENQX09FTUNQKSAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgLi4gdmVyc2lvbmFkZGVkOjogMy42ICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgcGFsbW9zICAgICAgICAgICAgIHwgICAgICAgICB8IEVuY29kaW5nIG9mIFBhbG1PUyAzLjUgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IHB1bnljb2RlICAgICAgICAgICB8ICAgICAgICAgfCBJbXBsZW1lbnRzIDpyZmM6YDM0OTJgLiAgIHwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CmluZGV4IGFlYjZhNzMuLmU0Yjc1YTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdApAQCAtNDEsMTMgKzQxLDE2IEBACiA6Y2xhc3M6YEhhc2hhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19oYXNoX19gYAogOmNsYXNzOmBJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKIDpjbGFzczpgSXRlcmF0b3JgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX25leHRfX2BgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YFJldmVyc2libGVgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19yZXZlcnNlZF9fYGAKIDpjbGFzczpgR2VuZXJhdG9yYCAgICAgICAgIDpjbGFzczpgSXRlcmF0b3JgICAgICAgYGBzZW5kYGAsIGBgdGhyb3dgYCAgICAgYGBjbG9zZWBgLCBgYF9faXRlcl9fYGAsIGBgX19uZXh0X19gYAogOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAogOmNsYXNzOmBDYWxsYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY2FsbF9fYGAKKzpjbGFzczpgQ29sbGVjdGlvbmAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgYGBfX2l0ZXJfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICBgYF9fbGVuX19gYAogCi06Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKKzpjbGFzczpgU2VxdWVuY2VgICAgICAgICAgIDpjbGFzczpgUmV2ZXJzaWJsZWAsICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgLCBgYF9fcmV2ZXJzZWRfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb2xsZWN0aW9uYCAgICBgYF9fbGVuX19gYCAgICAgICAgICAgICBgYGluZGV4YGAsIGFuZCBgYGNvdW50YGAKIAogOmNsYXNzOmBNdXRhYmxlU2VxdWVuY2VgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgYGBhcHBlbmRgYCwgYGByZXZlcnNlYGAsIGBgZXh0ZW5kYGAsIGBgcG9wYGAsCkBAIC01OCw5ICs2MSw5IEBACiA6Y2xhc3M6YEJ5dGVTdHJpbmdgICAgICAgICA6Y2xhc3M6YFNlcXVlbmNlYCAgICAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNlcXVlbmNlYCBtZXRob2RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCiAKLTpjbGFzczpgU2V0YCAgICAgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgICAgICAgYGBfX2xlX19gYCwgYGBfX2x0X19gYCwgYGBfX2VxX19gYCwgYGBfX25lX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBfX2d0X19gYCwgYGBfX2dlX19gYCwgYGBfX2FuZF9fYGAsIGBgX19vcl9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgX19zdWJfX2BgLCBgYF9feG9yX19gYCwgYW5kIGBgaXNkaXNqb2ludGBgCis6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbGxlY3Rpb25gICAgIGBgX19jb250YWluc19fYGAsICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYCAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAogCiA6Y2xhc3M6YE11dGFibGVTZXRgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNldGAgbWV0aG9kcyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBjbGVhcmBgLCBgYHBvcGBgLCBgYHJlbW92ZWBgLCBgYF9faW9yX19gYCwKQEAgLTY4LDkgKzcxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBhZGRgYCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBkaXNjYXJkYGAKIAotOmNsYXNzOmBNYXBwaW5nYCAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYGtleXNgYCwgYGBpdGVtc2BgLCBgYHZhbHVlc2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYGdldGBgLCBgYF9fZXFfX2BgLCBhbmQgYGBfX25lX19gYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICBgYF9fbGVuX19gYAorOmNsYXNzOmBNYXBwaW5nYCAgICAgICAgICAgOmNsYXNzOmBDb2xsZWN0aW9uYCAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYGtleXNgYCwgYGBpdGVtc2BgLCBgYHZhbHVlc2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYGdldGBgLCBgYF9fZXFfX2BgLCBhbmQgYGBfX25lX19gYAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAogCiA6Y2xhc3M6YE11dGFibGVNYXBwaW5nYCAgICA6Y2xhc3M6YE1hcHBpbmdgICAgICAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YE1hcHBpbmdgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIGBgcG9wYGAsIGBgcG9waXRlbWBgLCBgYGNsZWFyYGAsIGBgdXBkYXRlYGAsCkBAIC0xMDUsMTIgKzEwOCwyNSBAQAogICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YF9faXRlcl9fYCBtZXRob2QuCiAgICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmFibGVgLgogCisuLiBjbGFzczo6IENvbGxlY3Rpb24KKworICAgQUJDIGZvciBzaXplZCBpdGVyYWJsZSBjb250YWluZXIgY2xhc3Nlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGNsYXNzOjogSXRlcmF0b3IKIAogICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YH5pdGVyYXRvci5fX2l0ZXJfX2AgYW5kCiAgICA6bWV0aDpgfml0ZXJhdG9yLl9fbmV4dF9fYCBtZXRob2RzLiAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YKICAgIDp0ZXJtOmBpdGVyYXRvcmAuCiAKKy4uIGNsYXNzOjogUmV2ZXJzaWJsZQorCisgICBBQkMgZm9yIGl0ZXJhYmxlIGNsYXNzZXMgdGhhdCBhbHNvIHByb3ZpZGUgdGhlIDptZXRoOmBfX3JldmVyc2VkX19gCisgICBtZXRob2QuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBjbGFzczo6IEdlbmVyYXRvcgogCiAgICBBQkMgZm9yIGdlbmVyYXRvciBjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoZSBwcm90b2NvbCBkZWZpbmVkIGluCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKaW5kZXggYTE0NzI4Ny4uNTFjMjM1ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdApAQCAtNzYzLDcgKzc2Myw3IEBACiBzZWxmLWRvY3VtZW50aW5nIGNvZGUuICBUaGV5IGNhbiBiZSB1c2VkIHdoZXJldmVyIHJlZ3VsYXIgdHVwbGVzIGFyZSB1c2VkLCBhbmQKIHRoZXkgYWRkIHRoZSBhYmlsaXR5IHRvIGFjY2VzcyBmaWVsZHMgYnkgbmFtZSBpbnN0ZWFkIG9mIHBvc2l0aW9uIGluZGV4LgogCi0uLiBmdW5jdGlvbjo6IG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UpCisuLiBmdW5jdGlvbjo6IG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCAqLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UsIG1vZHVsZT1Ob25lKQogCiAgICAgUmV0dXJucyBhIG5ldyB0dXBsZSBzdWJjbGFzcyBuYW1lZCAqdHlwZW5hbWUqLiAgVGhlIG5ldyBzdWJjbGFzcyBpcyB1c2VkIHRvCiAgICAgY3JlYXRlIHR1cGxlLWxpa2Ugb2JqZWN0cyB0aGF0IGhhdmUgZmllbGRzIGFjY2Vzc2libGUgYnkgYXR0cmlidXRlIGxvb2t1cCBhcwpAQCAtNzkwLDEyICs3OTAsMjEgQEAKICAgICBidWlsdC4gIFRoaXMgb3B0aW9uIGlzIG91dGRhdGVkOyBpbnN0ZWFkLCBpdCBpcyBzaW1wbGVyIHRvIHByaW50IHRoZQogICAgIDphdHRyOmBfc291cmNlYCBhdHRyaWJ1dGUuCiAKKyAgICBJZiAqbW9kdWxlKiBpcyBkZWZpbmVkLCB0aGUgYGBfX21vZHVsZV9fYGAgYXR0cmlidXRlIG9mIHRoZSBuYW1lZCB0dXBsZSBpcworICAgIHNldCB0byB0aGF0IHZhbHVlLgorCiAgICAgTmFtZWQgdHVwbGUgaW5zdGFuY2VzIGRvIG5vdCBoYXZlIHBlci1pbnN0YW5jZSBkaWN0aW9uYXJpZXMsIHNvIHRoZXkgYXJlCiAgICAgbGlnaHR3ZWlnaHQgYW5kIHJlcXVpcmUgbm8gbW9yZSBtZW1vcnkgdGhhbiByZWd1bGFyIHR1cGxlcy4KIAogICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCi0gICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgorICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICBUaGUgKnZlcmJvc2UqIGFuZCAqcmVuYW1lKiBwYXJhbWV0ZXJzIGJlY2FtZQorICAgICAgIDpyZWY6YGtleXdvcmQtb25seSBhcmd1bWVudHMgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgQWRkZWQgdGhlICptb2R1bGUqIHBhcmFtZXRlci4KIAogLi4gZG9jdGVzdDo6CiAgICAgOm9wdGlvbnM6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQpAQCAtODQ2LDcgKzg1NSw5IEBACiAuLiBtZXRob2Q6OiBzb21lbmFtZWR0dXBsZS5fYXNkaWN0KCkKIAogICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YE9yZGVyZWREaWN0YCB3aGljaCBtYXBzIGZpZWxkIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSAgICB2YWx1ZXM6OgorICAgIHZhbHVlczoKKworICAgIC4uIGRvY3Rlc3Q6OgogCiAgICAgICAgID4+PiBwID0gUG9pbnQoeD0xMSwgeT0yMikKICAgICAgICAgPj4+IHAuX2FzZGljdCgpCkBAIC05MDgsNyArOTE5LDkgQEAKIGZ1bmN0aW9uYWxpdHkgd2l0aCBhIHN1YmNsYXNzLiAgSGVyZSBpcyBob3cgdG8gYWRkIGEgY2FsY3VsYXRlZCBmaWVsZCBhbmQKIGEgZml4ZWQtd2lkdGggcHJpbnQgZm9ybWF0OgogCi0gICAgPj4+IGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKKy4uIGRvY3Rlc3Q6OgorCisgICAgPj4+IGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkpOgogICAgIC4uLiAgICAgX19zbG90c19fID0gKCkKICAgICAuLi4gICAgIEBwcm9wZXJ0eQogICAgIC4uLiAgICAgZGVmIGh5cG90KHNlbGYpOgpAQCAtOTU5LDYgKzk3MiwxMSBAQAogICAgICAgY29uc3RydWN0b3IgdGhhdCBpcyBjb252ZW5pZW50IGZvciB1c2UgY2FzZXMgd2hlcmUgbmFtZWQgdHVwbGVzIGFyZSBiZWluZwogICAgICAgc3ViY2xhc3NlZC4KIAorICAgICogU2VlIDptZXRoOmB0eXBlcy5TaW1wbGVOYW1lc3BhY2VgIGZvciBhIG11dGFibGUgbmFtZXNwYWNlIGJhc2VkIG9uIGFuCisgICAgICB1bmRlcmx5aW5nIGRpY3Rpb25hcnkgaW5zdGVhZCBvZiBhIHR1cGxlLgorCisgICAgKiBTZWUgOm1ldGg6YHR5cGluZy5OYW1lZFR1cGxlYCBmb3IgYSB3YXkgdG8gYWRkIHR5cGUgaGludHMgZm9yIG5hbWVkIHR1cGxlcy4KKwogCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBvYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05ODAsOCArOTk4LDkgQEAKICAgICAuLiBtZXRob2Q6OiBwb3BpdGVtKGxhc3Q9VHJ1ZSkKIAogICAgICAgICBUaGUgOm1ldGg6YHBvcGl0ZW1gIG1ldGhvZCBmb3Igb3JkZXJlZCBkaWN0aW9uYXJpZXMgcmV0dXJucyBhbmQgcmVtb3ZlcyBhCi0gICAgICAgIChrZXksIHZhbHVlKSBwYWlyLiAgVGhlIHBhaXJzIGFyZSByZXR1cm5lZCBpbiBMSUZPIG9yZGVyIGlmICpsYXN0KiBpcyB0cnVlCi0gICAgICAgIG9yIEZJRk8gb3JkZXIgaWYgZmFsc2UuCisgICAgICAgIChrZXksIHZhbHVlKSBwYWlyLiAgVGhlIHBhaXJzIGFyZSByZXR1cm5lZCBpbgorICAgICAgICA6YWJicjpgTElGTyAobGFzdC1pbiwgZmlyc3Qtb3V0KWAgb3JkZXIgaWYgKmxhc3QqIGlzIHRydWUKKyAgICAgICAgb3IgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBvcmRlciBpZiBmYWxzZS4KIAogICAgIC4uIG1ldGhvZDo6IG1vdmVfdG9fZW5kKGtleSwgbGFzdD1UcnVlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdCBiL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CmluZGV4IDUxMWM1ODEuLjkxYmRkMTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CkBAIC0xMDIsNyArMTAyLDggQEAKIC4uIGZ1bmN0aW9uOjogY29tcGlsZV9kaXIoZGlyLCBtYXhsZXZlbHM9MTAsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEsIHdvcmtlcnM9MSkKIAogICAgUmVjdXJzaXZlbHkgZGVzY2VuZCB0aGUgZGlyZWN0b3J5IHRyZWUgbmFtZWQgYnkgKmRpciosIGNvbXBpbGluZyBhbGwgOmZpbGU6YC5weWAKLSAgIGZpbGVzIGFsb25nIHRoZSB3YXkuCisgICBmaWxlcyBhbG9uZyB0aGUgd2F5LiBSZXR1cm4gYSB0cnVlIHZhbHVlIGlmIGFsbCB0aGUgZmlsZXMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5LAorICAgYW5kIGEgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLgogCiAgICBUaGUgKm1heGxldmVscyogcGFyYW1ldGVyIGlzIHVzZWQgdG8gbGltaXQgdGhlIGRlcHRoIG9mIHRoZSByZWN1cnNpb247IGl0CiAgICBkZWZhdWx0cyB0byBgYDEwYGAuCkBAIC0xNTQsNyArMTU1LDggQEAKIAogLi4gZnVuY3Rpb246OiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKLSAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouCisgICBDb21waWxlIHRoZSBmaWxlIHdpdGggcGF0aCAqZnVsbG5hbWUqLiBSZXR1cm4gYSB0cnVlIHZhbHVlIGlmIHRoZSBmaWxlCisgICBjb21waWxlZCBzdWNjZXNzZnVsbHksIGFuZCBhIGZhbHNlIHZhbHVlIG90aGVyd2lzZS4KIAogICAgSWYgKmRkaXIqIGlzIGdpdmVuLCBpdCBpcyBwcmVwZW5kZWQgdG8gdGhlIHBhdGggdG8gdGhlIGZpbGUgYmVpbmcgY29tcGlsZWQKICAgIGZvciB1c2UgaW4gY29tcGlsYXRpb24gdGltZSB0cmFjZWJhY2tzLCBhbmQgaXMgYWxzbyBjb21waWxlZCBpbiB0byB0aGUKQEAgLTE5MCw4ICsxOTIsMTAgQEAKIAogLi4gZnVuY3Rpb246OiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9VHJ1ZSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKQogCi0gICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIElmCi0gICAqc2tpcF9jdXJkaXIqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG5vdCBpbmNsdWRlZAorICAgQnl0ZS1jb21waWxlIGFsbCB0aGUgOmZpbGU6YC5weWAgZmlsZXMgZm91bmQgYWxvbmcgYGBzeXMucGF0aGBgLiBSZXR1cm4gYQorICAgdHJ1ZSB2YWx1ZSBpZiBhbGwgdGhlIGZpbGVzIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwgYW5kIGEgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLgorCisgICBJZiAqc2tpcF9jdXJkaXIqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG5vdCBpbmNsdWRlZAogICAgaW4gdGhlIHNlYXJjaC4gIEFsbCBvdGhlciBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdG8gdGhlIDpmdW5jOmBjb21waWxlX2RpcmAKICAgIGZ1bmN0aW9uLiAgTm90ZSB0aGF0IHVubGlrZSB0aGUgb3RoZXIgY29tcGlsZSBmdW5jdGlvbnMsIGBgbWF4bGV2ZWxzYGAKICAgIGRlZmF1bHRzIHRvIGBgMGBgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKaW5kZXggYWUwM2Y0Yi4uZDg1NTc2YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CkBAIC0xMjQsNyArMTI0LDcgQEAKICAgIGV4ZWN1dG9yLnN1Ym1pdCh3YWl0X29uX2Z1dHVyZSkKIAogCi0uLiBjbGFzczo6IFRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz1Ob25lKQorLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9Tm9uZSwgdGhyZWFkX25hbWVfcHJlZml4PScnKQogCiAgICBBbiA6Y2xhc3M6YEV4ZWN1dG9yYCBzdWJjbGFzcyB0aGF0IHVzZXMgYSBwb29sIG9mIGF0IG1vc3QgKm1heF93b3JrZXJzKgogICAgdGhyZWFkcyB0byBleGVjdXRlIGNhbGxzIGFzeW5jaHJvbm91c2x5LgpAQCAtMTM3LDYgKzEzNywxMCBAQAogICAgICAgc2hvdWxkIGJlIGhpZ2hlciB0aGFuIHRoZSBudW1iZXIgb2Ygd29ya2VycwogICAgICAgZm9yIDpjbGFzczpgUHJvY2Vzc1Bvb2xFeGVjdXRvcmAuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgVGhlICp0aHJlYWRfbmFtZV9wcmVmaXgqIGFyZ3VtZW50IHdhcyBhZGRlZCB0byBhbGxvdyB1c2VycyB0bworICAgICAgY29udHJvbCB0aGUgdGhyZWFkaW5nLlRocmVhZCBuYW1lcyBmb3Igd29ya2VyIHRocmVhZHMgY3JlYXRlZCBieQorICAgICAgdGhlIHBvb2wgZm9yIGVhc2llciBkZWJ1Z2dpbmcuCiAKIC4uIF90aHJlYWRwb29sZXhlY3V0b3ItZXhhbXBsZToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdCBiL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKaW5kZXggZDVhMGYwOS4uZjA3NDJjZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CkBAIC0zMywxNiArMzMsMjIgQEAKICAgIChlLmcuIDptZXRoOmBfX2ltdWxfX2AsIDptZXRoOmBfX2lhbmRfX2AsIGV0Yy4pIGZvciB0aGUgc2FtZSBwdXJwb3NlLgogICAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuCiAKLS4uIG5vdGU6OgorICAgLi4gbm90ZTo6CiAKLSAgIFdoZW4gYGBOb3RJbXBsZW1lbnRlZGBgIGlzIHJldHVybmVkLCB0aGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUKLSAgIHJlZmxlY3RlZCBvcGVyYXRpb24gb24gdGhlIG90aGVyIHR5cGUsIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZwotICAgb24gdGhlIG9wZXJhdG9yLiAgSWYgYWxsIGF0dGVtcHRlZCBvcGVyYXRpb25zIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAsIHRoZQotICAgaW50ZXJwcmV0ZXIgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSBleGNlcHRpb24uCisgICAgICBXaGVuIGEgYmluYXJ5IChvciBpbi1wbGFjZSkgbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgIHRoZQorICAgICAgaW50ZXJwcmV0ZXIgd2lsbCB0cnkgdGhlIHJlZmxlY3RlZCBvcGVyYXRpb24gb24gdGhlIG90aGVyIHR5cGUgKG9yIHNvbWUKKyAgICAgIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdG9yKS4gIElmIGFsbCBhdHRlbXB0cyByZXR1cm4KKyAgICAgIGBgTm90SW1wbGVtZW50ZWRgYCwgdGhlIGludGVycHJldGVyIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgICAgSW5jb3JyZWN0bHkgcmV0dXJuaW5nIGBgTm90SW1wbGVtZW50ZWRgYCB3aWxsIHJlc3VsdCBpbiBhIG1pc2xlYWRpbmcKKyAgICAgIGVycm9yIG1lc3NhZ2Ugb3IgdGhlIGBgTm90SW1wbGVtZW50ZWRgYCB2YWx1ZSBiZWluZyByZXR1cm5lZCB0byBQeXRob24gY29kZS4KIAotICAgU2VlCi0gICA6cmVmOmBpbXBsZW1lbnRpbmctdGhlLWFyaXRobWV0aWMtb3BlcmF0aW9uc2AKLSAgIGZvciBtb3JlIGRldGFpbHMuCisgICAgICBTZWUgOnJlZjpgaW1wbGVtZW50aW5nLXRoZS1hcml0aG1ldGljLW9wZXJhdGlvbnNgIGZvciBleGFtcGxlcy4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIGBgTm90SW1wbGVudGVkRXJyb3JgYCBhbmQgYGBOb3RJbXBsZW1lbnRlZGBgIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLAorICAgICAgZXZlbiB0aG91Z2ggdGhleSBoYXZlIHNpbWlsYXIgbmFtZXMgYW5kIHB1cnBvc2VzLgorICAgICAgU2VlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGZvciBkZXRhaWxzIG9uIHdoZW4gdG8gdXNlIGl0LgogCiAKIC4uIGRhdGE6OiBFbGxpcHNpcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAppbmRleCBjZjg1ZmNkLi5kZDM0Yzk2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdApAQCAtMTgsNiArMTgsMTggQEAKIAogRnVuY3Rpb25zIGFuZCBjbGFzc2VzIHByb3ZpZGVkOgogCisuLiBjbGFzczo6IEFic3RyYWN0Q29udGV4dE1hbmFnZXIKKworICAgQW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIGZvciBjbGFzc2VzIHRoYXQgaW1wbGVtZW50CisgICA6bWV0aDpgb2JqZWN0Ll9fZW50ZXJfX2AgYW5kIDptZXRoOmBvYmplY3QuX19leGl0X19gLiBBIGRlZmF1bHQKKyAgIGltcGxlbWVudGF0aW9uIGZvciA6bWV0aDpgb2JqZWN0Ll9fZW50ZXJfX2AgaXMgcHJvdmlkZWQgd2hpY2ggcmV0dXJucworICAgYGBzZWxmYGAgd2hpbGUgOm1ldGg6YG9iamVjdC5fX2V4aXRfX2AgaXMgYW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIGJ5IGRlZmF1bHQKKyAgIHJldHVybnMgYGBOb25lYGAuIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDpyZWY6YHR5cGVjb250ZXh0bWFuYWdlcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKwogLi4gZGVjb3JhdG9yOjogY29udGV4dG1hbmFnZXIKIAogICAgVGhpcyBmdW5jdGlvbiBpcyBhIDp0ZXJtOmBkZWNvcmF0b3JgIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGEgZmFjdG9yeQpAQCAtNDQ3LDkgKzQ1OSw5IEBACiBhY3F1aXNpdGlvbiBhbmQgcmVsZWFzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYW4gb3B0aW9uYWwgdmFsaWRhdGlvbiBmdW5jdGlvbiwKIGFuZCBtYXBzIHRoZW0gdG8gdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbDo6CiAKLSAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEV4aXRTdGFjaworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlciwgQWJzdHJhY3RDb250ZXh0TWFuYWdlciwgRXhpdFN0YWNrCiAKLSAgIGNsYXNzIFJlc291cmNlTWFuYWdlcjoKKyAgIGNsYXNzIFJlc291cmNlTWFuYWdlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKIAogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhY3F1aXJlX3Jlc291cmNlLCByZWxlYXNlX3Jlc291cmNlLCBjaGVja19yZXNvdXJjZV9vaz1Ob25lKToKICAgICAgICAgICAgc2VsZi5hY3F1aXJlX3Jlc291cmNlID0gYWNxdWlyZV9yZXNvdXJjZQpAQCAtNTc4LDEwICs1OTAsMTAgQEAKICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKIAogICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzoge30nLmZvcm1hdChzZWxmLm5hbWUpKQorICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzogJXMnLCBzZWxmLm5hbWUpCiAKICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGMsIGV4Y190Yik6Ci0gICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6IHt9Jy5mb3JtYXQoc2VsZi5uYW1lKSkKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRXhpdGluZzogJXMnLCBzZWxmLm5hbWUpCiAKIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIGFzIGJvdGggYSBjb250ZXh0IG1hbmFnZXI6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdC5yc3QgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKaW5kZXggYTIxYzFlNy4uZGJkNDI3NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0LnJzdApAQCAtNjgsNyArNjgsNyBAQAogCiAgICBBIGxpc3Qgb2YgYXZhaWxhYmxlIHBhc3N3b3JkIGhhc2hpbmcgYWxnb3JpdGhtcywgYXMKICAgIGBgY3J5cHQuTUVUSE9EXypgYCBvYmplY3RzLiAgVGhpcyBsaXN0IGlzIHNvcnRlZCBmcm9tIHN0cm9uZ2VzdCB0bwotICAgd2Vha2VzdCwgYW5kIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhdCBsZWFzdCBgYGNyeXB0Lk1FVEhPRF9DUllQVGBgLgorICAgd2Vha2VzdC4KIAogCiBNb2R1bGUgRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAppbmRleCAxZWRkZmRjLi44ZWI0YjgxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKQEAgLTE1LDQgKzE1LDYgQEAKIC4uIHRvY3RyZWU6OgogCiAgICBoYXNobGliLnJzdAorICAgaGFzaGxpYi1ibGFrZTIucnN0CiAgICBobWFjLnJzdAorICAgc2VjcmV0cy5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Nzdi5yc3QgYi9Eb2MvbGlicmFyeS9jc3YucnN0CmluZGV4IDdmYjRmYzguLjYzNDFiYzMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Nzdi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3N2LnJzdApAQCAtMTQ5LDE4ICsxNDksMjUgQEAKIC4uIGNsYXNzOjogRGljdFJlYWRlcihjc3ZmaWxlLCBmaWVsZG5hbWVzPU5vbmUsIHJlc3RrZXk9Tm9uZSwgcmVzdHZhbD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgZGlhbGVjdD0nZXhjZWwnLCAqYXJncywgKiprd2RzKQogCi0gICBDcmVhdGUgYW4gb2JqZWN0IHdoaWNoIG9wZXJhdGVzIGxpa2UgYSByZWd1bGFyIHJlYWRlciBidXQgbWFwcyB0aGUKLSAgIGluZm9ybWF0aW9uIHJlYWQgaW50byBhIGRpY3Qgd2hvc2Uga2V5cyBhcmUgZ2l2ZW4gYnkgdGhlIG9wdGlvbmFsCi0gICAqZmllbGRuYW1lcyogcGFyYW1ldGVyLiAgVGhlICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIgaXMgYSA6bW9kOmBzZXF1ZW5jZQotICAgPGNvbGxlY3Rpb25zLmFiYz5gIHdob3NlIGVsZW1lbnRzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkcyBvZiB0aGUKLSAgIGlucHV0IGRhdGEgaW4gb3JkZXIuIFRoZXNlIGVsZW1lbnRzIGJlY29tZSB0aGUga2V5cyBvZiB0aGUgcmVzdWx0aW5nCi0gICBkaWN0aW9uYXJ5LiAgSWYgdGhlICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIgaXMgb21pdHRlZCwgdGhlIHZhbHVlcyBpbiB0aGUKLSAgIGZpcnN0IHJvdyBvZiB0aGUgKmNzdmZpbGUqIHdpbGwgYmUgdXNlZCBhcyB0aGUgZmllbGRuYW1lcy4gIElmIHRoZSByb3cgcmVhZAotICAgaGFzIG1vcmUgZmllbGRzIHRoYW4gdGhlIGZpZWxkbmFtZXMgc2VxdWVuY2UsIHRoZSByZW1haW5pbmcgZGF0YSBpcyBhZGRlZCBhcwotICAgYSBzZXF1ZW5jZSBrZXllZCBieSB0aGUgdmFsdWUgb2YgKnJlc3RrZXkqLiAgSWYgdGhlIHJvdyByZWFkIGhhcyBmZXdlcgotICAgZmllbGRzIHRoYW4gdGhlIGZpZWxkbmFtZXMgc2VxdWVuY2UsIHRoZSByZW1haW5pbmcga2V5cyB0YWtlIHRoZSB2YWx1ZSBvZgotICAgdGhlIG9wdGlvbmFsICpyZXN0dmFsKiBwYXJhbWV0ZXIuICBBbnkgb3RoZXIgb3B0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMKLSAgIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcgOmNsYXNzOmByZWFkZXJgIGluc3RhbmNlLgorICAgQ3JlYXRlIGFuIG9iamVjdCB0aGF0IG9wZXJhdGVzIGxpa2UgYSByZWd1bGFyIHJlYWRlciBidXQgbWFwcyB0aGUKKyAgIGluZm9ybWF0aW9uIGluIGVhY2ggcm93IHRvIGFuIDptb2Q6YE9yZGVyZWREaWN0IDxjb2xsZWN0aW9ucy5PcmRlcmVkRGljdD5gCisgICB3aG9zZSBrZXlzIGFyZSBnaXZlbiBieSB0aGUgb3B0aW9uYWwgKmZpZWxkbmFtZXMqIHBhcmFtZXRlci4KKworICAgVGhlICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIgaXMgYSA6dGVybTpgc2VxdWVuY2VgLiAgSWYgKmZpZWxkbmFtZXMqIGlzCisgICBvbWl0dGVkLCB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdCByb3cgb2YgdGhlICpjc3ZmaWxlKiB3aWxsIGJlIHVzZWQgYXMgdGhlCisgICBmaWVsZG5hbWVzLiAgUmVnYXJkbGVzcyBvZiBob3cgdGhlIGZpZWxkbmFtZXMgYXJlIGRldGVybWluZWQsIHRoZSBvcmRlcmVkCisgICBkaWN0aW9uYXJ5IHByZXNlcnZlcyB0aGVpciBvcmlnaW5hbCBvcmRlcmluZy4KKworICAgSWYgYSByb3cgaGFzIG1vcmUgZmllbGRzIHRoYW4gZmllbGRuYW1lcywgdGhlIHJlbWFpbmluZyBkYXRhIGlzIHB1dCBpbiBhCisgICBsaXN0IGFuZCBzdG9yZWQgd2l0aCB0aGUgZmllbGRuYW1lIHNwZWNpZmllZCBieSAqcmVzdGtleSogKHdoaWNoIGRlZmF1bHRzCisgICB0byBgYE5vbmVgYCkuICBJZiBhIG5vbi1ibGFuayByb3cgaGFzIGZld2VyIGZpZWxkcyB0aGFuIGZpZWxkbmFtZXMsIHRoZQorICAgbWlzc2luZyB2YWx1ZXMgYXJlIGZpbGxlZC1pbiB3aXRoIGBgTm9uZWBgLgorCisgICBBbGwgb3RoZXIgb3B0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZworICAgOmNsYXNzOmByZWFkZXJgIGluc3RhbmNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUmV0dXJuZWQgcm93cyBhcmUgbm93IG9mIHR5cGUgOmNsYXNzOmBPcmRlcmVkRGljdGAuCiAKICAgIEEgc2hvcnQgdXNhZ2UgZXhhbXBsZTo6CiAKQEAgLTE3MCw5ICsxNzcsMTEgQEAKICAgICAgICAuLi4gICAgIGZvciByb3cgaW4gcmVhZGVyOgogICAgICAgIC4uLiAgICAgICAgIHByaW50KHJvd1snZmlyc3RfbmFtZSddLCByb3dbJ2xhc3RfbmFtZSddKQogICAgICAgIC4uLgotICAgICAgIEJha2VkIEJlYW5zCi0gICAgICAgTG92ZWx5IFNwYW0KLSAgICAgICBXb25kZXJmdWwgU3BhbQorICAgICAgIEVyaWMgSWRsZQorICAgICAgIEpvaG4gQ2xlZXNlCisKKyAgICAgICA+Pj4gcHJpbnQocm93KQorICAgICAgIE9yZGVyZWREaWN0KFsoJ2ZpcnN0X25hbWUnLCAnSm9obicpLCAoJ2xhc3RfbmFtZScsICdDbGVlc2UnKV0pCiAKIAogLi4gY2xhc3M6OiBEaWN0V3JpdGVyKGNzdmZpbGUsIGZpZWxkbmFtZXMsIHJlc3R2YWw9JycsIGV4dHJhc2FjdGlvbj0ncmFpc2UnLCBcCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAppbmRleCBhNjc1NzkwLi4yODcwOTQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKQEAgLTEyMzksOSArMTIzOSwxMCBAQAogY29tcGlsaW5nL2xpbmtpbmcgYSBwcm9ncmFtLCBhbmQgd2hlbiB0aGUgcHJvZ3JhbSBpcyBydW4uCiAKIFRoZSBwdXJwb3NlIG9mIHRoZSA6ZnVuYzpgZmluZF9saWJyYXJ5YCBmdW5jdGlvbiBpcyB0byBsb2NhdGUgYSBsaWJyYXJ5IGluIGEgd2F5Ci1zaW1pbGFyIHRvIHdoYXQgdGhlIGNvbXBpbGVyIGRvZXMgKG9uIHBsYXRmb3JtcyB3aXRoIHNldmVyYWwgdmVyc2lvbnMgb2YgYQotc2hhcmVkIGxpYnJhcnkgdGhlIG1vc3QgcmVjZW50IHNob3VsZCBiZSBsb2FkZWQpLCB3aGlsZSB0aGUgY3R5cGVzIGxpYnJhcnkKLWxvYWRlcnMgYWN0IGxpa2Ugd2hlbiBhIHByb2dyYW0gaXMgcnVuLCBhbmQgY2FsbCB0aGUgcnVudGltZSBsb2FkZXIgZGlyZWN0bHkuCitzaW1pbGFyIHRvIHdoYXQgdGhlIGNvbXBpbGVyIG9yIHJ1bnRpbWUgbG9hZGVyIGRvZXMgKG9uIHBsYXRmb3JtcyB3aXRoIHNldmVyYWwKK3ZlcnNpb25zIG9mIGEgc2hhcmVkIGxpYnJhcnkgdGhlIG1vc3QgcmVjZW50IHNob3VsZCBiZSBsb2FkZWQpLCB3aGlsZSB0aGUgY3R5cGVzCitsaWJyYXJ5IGxvYWRlcnMgYWN0IGxpa2Ugd2hlbiBhIHByb2dyYW0gaXMgcnVuLCBhbmQgY2FsbCB0aGUgcnVudGltZSBsb2FkZXIKK2RpcmVjdGx5LgogCiBUaGUgOm1vZDpgY3R5cGVzLnV0aWxgIG1vZHVsZSBwcm92aWRlcyBhIGZ1bmN0aW9uIHdoaWNoIGNhbiBoZWxwIHRvIGRldGVybWluZQogdGhlIGxpYnJhcnkgdG8gbG9hZC4KQEAgLTEyNTksOCArMTI2MCwxNCBAQAogVGhlIGV4YWN0IGZ1bmN0aW9uYWxpdHkgaXMgc3lzdGVtIGRlcGVuZGVudC4KIAogT24gTGludXgsIDpmdW5jOmBmaW5kX2xpYnJhcnlgIHRyaWVzIHRvIHJ1biBleHRlcm5hbCBwcm9ncmFtcwotKGBgL3NiaW4vbGRjb25maWdgYCwgYGBnY2NgYCwgYW5kIGBgb2JqZHVtcGBgKSB0byBmaW5kIHRoZSBsaWJyYXJ5IGZpbGUuICBJdAotcmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGxpYnJhcnkgZmlsZS4gIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXM6OgorKGBgL3NiaW4vbGRjb25maWdgYCwgYGBnY2NgYCwgYGBvYmpkdW1wYGAgYW5kIGBgbGRgYCkgdG8gZmluZCB0aGUgbGlicmFyeSBmaWxlLgorSXQgcmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGxpYnJhcnkgZmlsZS4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIE9uIExpbnV4LCB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBgTERfTElCUkFSWV9QQVRIYGAgaXMgdXNlZAorICAgd2hlbiBzZWFyY2hpbmcgZm9yIGxpYnJhcmllcywgaWYgYSBsaWJyYXJ5IGNhbm5vdCBiZSBmb3VuZCBieSBhbnkgb3RoZXIgbWVhbnMuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXM6OgogCiAgICA+Pj4gZnJvbSBjdHlwZXMudXRpbCBpbXBvcnQgZmluZF9saWJyYXJ5CiAgICA+Pj4gZmluZF9saWJyYXJ5KCJtIikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAppbmRleCA5MjU0YWU4Li5lY2FhZDA2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CkBAIC01MjIsNyArNTIyLDcgQEAKIAogSW5zdGFuY2UgbWV0aG9kczoKIAotLi4gbWV0aG9kOjogZGF0ZS5yZXBsYWNlKHllYXIsIG1vbnRoLCBkYXkpCisuLiBtZXRob2Q6OiBkYXRlLnJlcGxhY2UoeWVhcj1zZWxmLnllYXIsIG1vbnRoPXNlbGYubW9udGgsIGRheT1zZWxmLmRheSkKIAogICAgUmV0dXJuIGEgZGF0ZSB3aXRoIHRoZSBzYW1lIHZhbHVlLCBleGNlcHQgZm9yIHRob3NlIHBhcmFtZXRlcnMgZ2l2ZW4gbmV3CiAgICB2YWx1ZXMgYnkgd2hpY2hldmVyIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQuICBGb3IgZXhhbXBsZSwgaWYgYGBkID09CkBAIC02MTAsNyArNjEwLDggQEAKIC4uIG1ldGhvZDo6IGRhdGUuX19mb3JtYXRfXyhmb3JtYXQpCiAKICAgIFNhbWUgYXMgOm1ldGg6YC5kYXRlLnN0cmZ0aW1lYC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgZm9ybWF0Ci0gICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZWAgb2JqZWN0IHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiBGb3IgYQorICAgc3RyaW5nIGZvciBhIDpjbGFzczpgLmRhdGVgIG9iamVjdCBpbiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nCisgICBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgYW5kIHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiBGb3IgYQogICAgY29tcGxldGUgbGlzdCBvZiBmb3JtYXR0aW5nIGRpcmVjdGl2ZXMsIHNlZQogICAgOnJlZjpgc3RyZnRpbWUtc3RycHRpbWUtYmVoYXZpb3JgLgogCkBAIC02ODIsMjIgKzY4MywyNiBAQAogCiBDb25zdHJ1Y3RvcjoKIAotLi4gY2xhc3M6OiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpCisuLiBjbGFzczo6IGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKQogCiAgICBUaGUgeWVhciwgbW9udGggYW5kIGRheSBhcmd1bWVudHMgYXJlIHJlcXVpcmVkLiAgKnR6aW5mbyogbWF5IGJlIGBgTm9uZWBgLCBvciBhbgogICAgaW5zdGFuY2Ugb2YgYSA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50ZWdlcnMsCiAgICBpbiB0aGUgZm9sbG93aW5nIHJhbmdlczoKIAotICAgKiBgYE1JTllFQVIgPD0geWVhciA8PSBNQVhZRUFSYGAKLSAgICogYGAxIDw9IG1vbnRoIDw9IDEyYGAKLSAgICogYGAxIDw9IGRheSA8PSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGggYW5kIHllYXJgYAotICAgKiBgYDAgPD0gaG91ciA8IDI0YGAKLSAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAKLSAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAKLSAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgCisgICAqIGBgTUlOWUVBUiA8PSB5ZWFyIDw9IE1BWFlFQVJgYCwKKyAgICogYGAxIDw9IG1vbnRoIDw9IDEyYGAsCisgICAqIGBgMSA8PSBkYXkgPD0gbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuIG1vbnRoIGFuZCB5ZWFyYGAsCisgICAqIGBgMCA8PSBob3VyIDwgMjRgYCwKKyAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAsCisgICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgLAorICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAsCisgICAqIGBgZm9sZCBpbiBbMCwgMV1gYC4KIAogICAgSWYgYW4gYXJndW1lbnQgb3V0c2lkZSB0aG9zZSByYW5nZXMgaXMgZ2l2ZW4sIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgYGBmb2xkYGAgYXJndW1lbnQuCisKIE90aGVyIGNvbnN0cnVjdG9ycywgYWxsIGNsYXNzIG1ldGhvZHM6CiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUudG9kYXkoKQpAQCAtNzU3LDYgKzc2Miw4IEBACiAgICAgICBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgb3IgOmM6ZnVuYzpgZ210aW1lYAogICAgICAgZmFpbHVyZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDptZXRoOmBmcm9tdGltZXN0YW1wYCBtYXkgcmV0dXJuIGluc3RhbmNlcyB3aXRoIDphdHRyOmAuZm9sZGAgc2V0IHRvIDEuCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApCiAKQEAgLTc5MywxNiArODAwLDIzIEBACiAgICBtaWNyb3NlY29uZCBvZiB0aGUgcmVzdWx0IGFyZSBhbGwgMCwgYW5kIDphdHRyOmAudHppbmZvYCBpcyBgYE5vbmVgYC4KIAogCi0uLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLmNvbWJpbmUoZGF0ZSwgdGltZSkKKy4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuY29tYmluZShkYXRlLCB0aW1lLCB0emluZm89c2VsZi50emluZm8pCiAKICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IHdob3NlIGRhdGUgY29tcG9uZW50cyBhcmUgZXF1YWwgdG8gdGhlCi0gICBnaXZlbiA6Y2xhc3M6YGRhdGVgIG9iamVjdCdzLCBhbmQgd2hvc2UgdGltZSBjb21wb25lbnRzIGFuZCA6YXR0cjpgLnR6aW5mb2AKLSAgIGF0dHJpYnV0ZXMgYXJlIGVxdWFsIHRvIHRoZSBnaXZlbiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qncy4gRm9yIGFueQotICAgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCAqZCosCi0gICBgYGQgPT0gZGF0ZXRpbWUuY29tYmluZShkLmRhdGUoKSwgZC50aW1ldHooKSlgYC4gIElmIGRhdGUgaXMgYQorICAgZ2l2ZW4gOmNsYXNzOmBkYXRlYCBvYmplY3QncywgYW5kIHdob3NlIHRpbWUgY29tcG9uZW50cworICAgYXJlIGVxdWFsIHRvIHRoZSBnaXZlbiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qncy4gIElmIHRoZSAqdHppbmZvKgorICAgYXJndW1lbnQgaXMgcHJvdmlkZWQsIGl0cyB2YWx1ZSBpcyB1c2VkIHRvIHNldCB0aGUgOmF0dHI6YC50emluZm9gIGF0dHJpYnV0ZQorICAgb2YgdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHRoZSA6YXR0cjpgfi50aW1lLnR6aW5mb2AgYXR0cmlidXRlIG9mIHRoZSAqdGltZSogYXJndW1lbnQKKyAgIGlzIHVzZWQuCisKKyAgIEZvciBhbnkgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCAqZCosCisgICBgYGQgPT0gZGF0ZXRpbWUuY29tYmluZShkLmRhdGUoKSwgZC50aW1lKCksIGQudHppbmZvKWBgLiAgSWYgZGF0ZSBpcyBhCiAgICA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0LCBpdHMgdGltZSBjb21wb25lbnRzIGFuZCA6YXR0cjpgLnR6aW5mb2AgYXR0cmlidXRlcwogICAgYXJlIGlnbm9yZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgKnR6aW5mbyogYXJndW1lbnQuCisKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5zdHJwdGltZShkYXRlX3N0cmluZywgZm9ybWF0KQogCkBAIC04NzgsNiArODkyLDE2IEBACiAgICBvciBgYE5vbmVgYCBpZiBub25lIHdhcyBwYXNzZWQuCiAKIAorLi4gYXR0cmlidXRlOjogZGF0ZXRpbWUuZm9sZAorCisgICBJbiBgYFswLCAxXWBgLiAgVXNlZCB0byBkaXNhbWJpZ3VhdGUgd2FsbCB0aW1lcyBkdXJpbmcgYSByZXBlYXRlZCBpbnRlcnZhbC4gIChBCisgICByZXBlYXRlZCBpbnRlcnZhbCBvY2N1cnMgd2hlbiBjbG9ja3MgYXJlIHJvbGxlZCBiYWNrIGF0IHRoZSBlbmQgb2YgZGF5bGlnaHQgc2F2aW5nCisgICB0aW1lIG9yIHdoZW4gdGhlIFVUQyBvZmZzZXQgZm9yIHRoZSBjdXJyZW50IHpvbmUgaXMgZGVjcmVhc2VkIGZvciBwb2xpdGljYWwgcmVhc29ucy4pCisgICBUaGUgdmFsdWUgMCAoMSkgcmVwcmVzZW50cyB0aGUgZWFybGllciAobGF0ZXIpIG9mIHRoZSB0d28gbW9tZW50cyB3aXRoIHRoZSBzYW1lIHdhbGwKKyAgIHRpbWUgcmVwcmVzZW50YXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiBTdXBwb3J0ZWQgb3BlcmF0aW9uczoKIAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTk2NiwyMyArOTkwLDM0IEBACiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLnRpbWUoKQogCi0gICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCBhbmQgbWljcm9zZWNvbmQuCisgICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgYW5kIGZvbGQuCiAgICA6YXR0cjpgLnR6aW5mb2AgaXMgYGBOb25lYGAuICBTZWUgYWxzbyBtZXRob2QgOm1ldGg6YHRpbWV0emAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgZm9sZCB2YWx1ZSBpcyBjb3BpZWQgdG8gdGhlIHJldHVybmVkIDpjbGFzczpgLnRpbWVgIG9iamVjdC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS50aW1ldHooKQogCi0gICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGFuZAorICAgUmV0dXJuIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aXRoIHNhbWUgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkLCBhbmQKICAgIHR6aW5mbyBhdHRyaWJ1dGVzLiAgU2VlIGFsc28gbWV0aG9kIDptZXRoOmB0aW1lYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSBmb2xkIHZhbHVlIGlzIGNvcGllZCB0byB0aGUgcmV0dXJuZWQgOmNsYXNzOmAudGltZWAgb2JqZWN0LgogCi0uLiBtZXRob2Q6OiBkYXRldGltZS5yZXBsYWNlKFt5ZWFyWywgbW9udGhbLCBkYXlbLCBob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLCB0emluZm9dXV1dXV1dXSkKKworLi4gbWV0aG9kOjogZGF0ZXRpbWUucmVwbGFjZSh5ZWFyPXNlbGYueWVhciwgbW9udGg9c2VsZi5tb250aCwgZGF5PXNlbGYuZGF5LCBcCisgICBob3VyPXNlbGYuaG91ciwgbWludXRlPXNlbGYubWludXRlLCBzZWNvbmQ9c2VsZi5zZWNvbmQsIG1pY3Jvc2Vjb25kPXNlbGYubWljcm9zZWNvbmQsIFwKKyAgIHR6aW5mbz1zZWxmLnR6aW5mbywgKiBmb2xkPTApCiAKICAgIFJldHVybiBhIGRhdGV0aW1lIHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcywgZXhjZXB0IGZvciB0aG9zZSBhdHRyaWJ1dGVzIGdpdmVuCiAgICBuZXcgdmFsdWVzIGJ5IHdoaWNoZXZlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLiAgTm90ZSB0aGF0CiAgICBgYHR6aW5mbz1Ob25lYGAgY2FuIGJlIHNwZWNpZmllZCB0byBjcmVhdGUgYSBuYWl2ZSBkYXRldGltZSBmcm9tIGFuIGF3YXJlCiAgICBkYXRldGltZSB3aXRoIG5vIGNvbnZlcnNpb24gb2YgZGF0ZSBhbmQgdGltZSBkYXRhLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBgYGZvbGRgYCBhcmd1bWVudC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS5hc3RpbWV6b25lKHR6PU5vbmUpCiAKQEAgLTk5MSwyMyArMTAyNiwyMCBAQAogICAgKnNlbGYqLCBidXQgaW4gKnR6KidzIGxvY2FsIHRpbWUuCiAKICAgIElmIHByb3ZpZGVkLCAqdHoqIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MsIGFuZCBpdHMKLSAgIDptZXRoOmB1dGNvZmZzZXRgIGFuZCA6bWV0aDpgZHN0YCBtZXRob2RzIG11c3Qgbm90IHJldHVybiBgYE5vbmVgYC4gICpzZWxmKiBtdXN0Ci0gICBiZSBhd2FyZSAoYGBzZWxmLnR6aW5mb2BgIG11c3Qgbm90IGJlIGBgTm9uZWBgLCBhbmQgYGBzZWxmLnV0Y29mZnNldCgpYGAgbXVzdAotICAgbm90IHJldHVybiBgYE5vbmVgYCkuCisgICA6bWV0aDpgdXRjb2Zmc2V0YCBhbmQgOm1ldGg6YGRzdGAgbWV0aG9kcyBtdXN0IG5vdCByZXR1cm4gYGBOb25lYGAuICBJZiAqc2VsZioKKyAgIGlzIG5haXZlIChgYHNlbGYudHppbmZvIGlzIE5vbmVgYCksIGl0IGlzIHByZXN1bWVkIHRvIHJlcHJlc2VudCB0aW1lIGluIHRoZQorICAgc3lzdGVtIHRpbWV6b25lLgogCiAgICBJZiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMgKG9yIHdpdGggYGB0ej1Ob25lYGApIHRoZSBzeXN0ZW0gbG9jYWwKLSAgIHRpbWV6b25lIGlzIGFzc3VtZWQuICBUaGUgYGAudHppbmZvYGAgYXR0cmlidXRlIG9mIHRoZSBjb252ZXJ0ZWQKKyAgIHRpbWV6b25lIGlzIGFzc3VtZWQgZm9yIHRoZSB0YXJnZXQgdGltZXpvbmUuICBUaGUgYGAudHppbmZvYGAgYXR0cmlidXRlIG9mIHRoZSBjb252ZXJ0ZWQKICAgIGRhdGV0aW1lIGluc3RhbmNlIHdpbGwgYmUgc2V0IHRvIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgdGltZXpvbmVgCiAgICB3aXRoIHRoZSB6b25lIG5hbWUgYW5kIG9mZnNldCBvYnRhaW5lZCBmcm9tIHRoZSBPUy4KIAogICAgSWYgYGBzZWxmLnR6aW5mb2BgIGlzICp0eiosIGBgc2VsZi5hc3RpbWV6b25lKHR6KWBgIGlzIGVxdWFsIHRvICpzZWxmKjogIG5vCiAgICBhZGp1c3RtZW50IG9mIGRhdGUgb3IgdGltZSBkYXRhIGlzIHBlcmZvcm1lZC4gRWxzZSB0aGUgcmVzdWx0IGlzIGxvY2FsCi0gICB0aW1lIGluIHRpbWUgem9uZSAqdHoqLCByZXByZXNlbnRpbmcgdGhlIHNhbWUgVVRDIHRpbWUgYXMgKnNlbGYqOiAgYWZ0ZXIKLSAgIGBgYXN0eiA9IGR0LmFzdGltZXpvbmUodHopYGAsIGBgYXN0eiAtIGFzdHoudXRjb2Zmc2V0KClgYCB3aWxsIHVzdWFsbHkgaGF2ZQotICAgdGhlIHNhbWUgZGF0ZSBhbmQgdGltZSBkYXRhIGFzIGBgZHQgLSBkdC51dGNvZmZzZXQoKWBgLiBUaGUgZGlzY3Vzc2lvbgotICAgb2YgY2xhc3MgOmNsYXNzOmB0emluZm9gIGV4cGxhaW5zIHRoZSBjYXNlcyBhdCBEYXlsaWdodCBTYXZpbmcgVGltZSB0cmFuc2l0aW9uCi0gICBib3VuZGFyaWVzIHdoZXJlIHRoaXMgY2Fubm90IGJlIGFjaGlldmVkIChhbiBpc3N1ZSBvbmx5IGlmICp0eiogbW9kZWxzIGJvdGgKLSAgIHN0YW5kYXJkIGFuZCBkYXlsaWdodCB0aW1lKS4KKyAgIHRpbWUgaW4gdGhlIHRpbWV6b25lICp0eiosIHJlcHJlc2VudGluZyB0aGUgc2FtZSBVVEMgdGltZSBhcyAqc2VsZio6ICBhZnRlcgorICAgYGBhc3R6ID0gZHQuYXN0aW1lem9uZSh0eilgYCwgYGBhc3R6IC0gYXN0ei51dGNvZmZzZXQoKWBgIHdpbGwgaGF2ZQorICAgdGhlIHNhbWUgZGF0ZSBhbmQgdGltZSBkYXRhIGFzIGBgZHQgLSBkdC51dGNvZmZzZXQoKWBgLgogCiAgICBJZiB5b3UgbWVyZWx5IHdhbnQgdG8gYXR0YWNoIGEgdGltZSB6b25lIG9iamVjdCAqdHoqIHRvIGEgZGF0ZXRpbWUgKmR0KiB3aXRob3V0CiAgICBhZGp1c3RtZW50IG9mIGRhdGUgYW5kIHRpbWUgZGF0YSwgdXNlIGBgZHQucmVwbGFjZSh0emluZm89dHopYGAuICBJZiB5b3UKQEAgLTEwMjksNiArMTA2MSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgICp0eiogbm93IGNhbiBiZSBvbWl0dGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIDptZXRoOmBhc3RpbWV6b25lYCBtZXRob2QgY2FuIG5vdyBiZSBjYWxsZWQgb24gbmFpdmUgaW5zdGFuY2VzIHRoYXQKKyAgICAgIGFyZSBwcmVzdW1lZCB0byByZXByZXNlbnQgc3lzdGVtIGxvY2FsIHRpbWUuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudXRjb2Zmc2V0KCkKIApAQCAtMTEwNSw2ICsxMTQxLDEwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIDptZXRoOmB0aW1lc3RhbXBgIG1ldGhvZCB1c2VzIHRoZSA6YXR0cjpgLmZvbGRgIGF0dHJpYnV0ZSB0bworICAgICAgZGlzYW1iaWd1YXRlIHRoZSB0aW1lcyBkdXJpbmcgYSByZXBlYXRlZCBpbnRlcnZhbC4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoZXJlIGlzIG5vIG1ldGhvZCB0byBvYnRhaW4gdGhlIFBPU0lYIHRpbWVzdGFtcCBkaXJlY3RseSBmcm9tIGEKQEAgLTExMzgsNyArMTE3OCw3IEBACiAgICBgYHNlbGYuZGF0ZSgpLmlzb2NhbGVuZGFyKClgYC4KIAogCi0uLiBtZXRob2Q6OiBkYXRldGltZS5pc29mb3JtYXQoc2VwPSdUJykKKy4uIG1ldGhvZDo6IGRhdGV0aW1lLmlzb2Zvcm1hdChzZXA9J1QnLCB0aW1lc3BlYz0nYXV0bycpCiAKICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGRhdGUgYW5kIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LAogICAgWVlZWS1NTS1ERFRISDpNTTpTUy5tbW1tbW0gb3IsIGlmIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwKQEAgLTExNTksNiArMTE5OSwzNyBAQAogICAgICAgPj4+IGRhdGV0aW1lKDIwMDIsIDEyLCAyNSwgdHppbmZvPVRaKCkpLmlzb2Zvcm1hdCgnICcpCiAgICAgICAnMjAwMi0xMi0yNSAwMDowMDowMC0wNjozOScKIAorICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICp0aW1lc3BlYyogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlICh0aGUgZGVmYXVsdCBpcyBgYCdhdXRvJ2BgKS4KKyAgIEl0IGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgLSBgYCdhdXRvJ2BgOiBTYW1lIGFzIGBgJ3NlY29uZHMnYGAgaWYgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLAorICAgICBzYW1lIGFzIGBgJ21pY3Jvc2Vjb25kcydgYCBvdGhlcndpc2UuCisgICAtIGBgJ2hvdXJzJ2BgOiBJbmNsdWRlIHRoZSA6YXR0cjpgaG91cmAgaW4gdGhlIHR3by1kaWdpdCBISCBmb3JtYXQuCisgICAtIGBgJ21pbnV0ZXMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgIGFuZCA6YXR0cjpgbWludXRlYCBpbiBISDpNTSBmb3JtYXQuCisgICAtIGBgJ3NlY29uZHMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgLCA6YXR0cjpgbWludXRlYCwgYW5kIDphdHRyOmBzZWNvbmRgCisgICAgIGluIEhIOk1NOlNTIGZvcm1hdC4KKyAgIC0gYGAnbWlsbGlzZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSwgYnV0IHRydW5jYXRlIGZyYWN0aW9uYWwgc2Vjb25kCisgICAgIHBhcnQgdG8gbWlsbGlzZWNvbmRzLiBISDpNTTpTUy5zc3MgZm9ybWF0LgorICAgLSBgYCdtaWNyb3NlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lIGluIEhIOk1NOlNTLm1tbW1tbSBmb3JtYXQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBFeGNsdWRlZCB0aW1lIGNvbXBvbmVudHMgYXJlIHRydW5jYXRlZCwgbm90IHJvdW5kZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIG9uIGFuIGludmFsaWQgKnRpbWVzcGVjKiBhcmd1bWVudC4KKworCisgICAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKKyAgICAgID4+PiBkYXRldGltZS5ub3coKS5pc29mb3JtYXQodGltZXNwZWM9J21pbnV0ZXMnKQorICAgICAgJzIwMDItMTItMjVUMDA6MDAnCisgICAgICA+Pj4gZHQgPSBkYXRldGltZSgyMDE1LCAxLCAxLCAxMiwgMzAsIDU5LCAwKQorICAgICAgPj4+IGR0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJykKKyAgICAgICcyMDE1LTAxLTAxVDEyOjMwOjU5LjAwMDAwMCcKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgKnRpbWVzcGVjKiBhcmd1bWVudC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS5fX3N0cl9fKCkKIApAQCAtMTE4NSw3ICsxMjU2LDggQEAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLl9fZm9ybWF0X18oZm9ybWF0KQogCiAgICBTYW1lIGFzIDptZXRoOmAuZGF0ZXRpbWUuc3RyZnRpbWVgLiAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgZm9ybWF0Ci0gICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCisgICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCBpbiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nCisgICBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgYW5kIHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKICAgIGNvbXBsZXRlIGxpc3Qgb2YgZm9ybWF0dGluZyBkaXJlY3RpdmVzLCBzZWUKICAgIDpyZWY6YHN0cmZ0aW1lLXN0cnB0aW1lLWJlaGF2aW9yYC4KIApAQCAtMTMwMiwxNiArMTM3NCwxNyBAQAogQSB0aW1lIG9iamVjdCByZXByZXNlbnRzIGEgKGxvY2FsKSB0aW1lIG9mIGRheSwgaW5kZXBlbmRlbnQgb2YgYW55IHBhcnRpY3VsYXIKIGRheSwgYW5kIHN1YmplY3QgdG8gYWRqdXN0bWVudCB2aWEgYSA6Y2xhc3M6YHR6aW5mb2Agb2JqZWN0LgogCi0uLiBjbGFzczo6IHRpbWUoaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKQorLi4gY2xhc3M6OiB0aW1lKGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKQogCiAgICBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gICp0emluZm8qIG1heSBiZSBgYE5vbmVgYCwgb3IgYW4gaW5zdGFuY2Ugb2YgYQogICAgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgbWF5IGJlIGludGVnZXJzLCBpbiB0aGUKICAgIGZvbGxvd2luZyByYW5nZXM6CiAKLSAgICogYGAwIDw9IGhvdXIgPCAyNGBgCi0gICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgCi0gICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgCi0gICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYC4KKyAgICogYGAwIDw9IGhvdXIgPCAyNGBgLAorICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYCwKKyAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAsCisgICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYCwKKyAgICogYGBmb2xkIGluIFswLCAxXWBgLgogCiAgICBJZiBhbiBhcmd1bWVudCBvdXRzaWRlIHRob3NlIHJhbmdlcyBpcyBnaXZlbiwgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiAgQWxsCiAgICBkZWZhdWx0IHRvIGBgMGBgIGV4Y2VwdCAqdHppbmZvKiwgd2hpY2ggZGVmYXVsdHMgdG8gOmNvbnN0OmBOb25lYC4KQEAgLTEzNjQsNiArMTQzNywxNyBAQAogICAgYGBOb25lYGAgaWYgbm9uZSB3YXMgcGFzc2VkLgogCiAKKy4uIGF0dHJpYnV0ZTo6IHRpbWUuZm9sZAorCisgICBJbiBgYFswLCAxXWBgLiAgVXNlZCB0byBkaXNhbWJpZ3VhdGUgd2FsbCB0aW1lcyBkdXJpbmcgYSByZXBlYXRlZCBpbnRlcnZhbC4gIChBCisgICByZXBlYXRlZCBpbnRlcnZhbCBvY2N1cnMgd2hlbiBjbG9ja3MgYXJlIHJvbGxlZCBiYWNrIGF0IHRoZSBlbmQgb2YgZGF5bGlnaHQgc2F2aW5nCisgICB0aW1lIG9yIHdoZW4gdGhlIFVUQyBvZmZzZXQgZm9yIHRoZSBjdXJyZW50IHpvbmUgaXMgZGVjcmVhc2VkIGZvciBwb2xpdGljYWwgcmVhc29ucy4pCisgICBUaGUgdmFsdWUgMCAoMSkgcmVwcmVzZW50cyB0aGUgZWFybGllciAobGF0ZXIpIG9mIHRoZSB0d28gbW9tZW50cyB3aXRoIHRoZSBzYW1lIHdhbGwKKyAgIHRpbWUgcmVwcmVzZW50YXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIFN1cHBvcnRlZCBvcGVyYXRpb25zOgogCiAqIGNvbXBhcmlzb24gb2YgOmNsYXNzOmAudGltZWAgdG8gOmNsYXNzOmAudGltZWAsIHdoZXJlICphKiBpcyBjb25zaWRlcmVkIGxlc3MKQEAgLTEzOTksMjEgKzE0ODMsNTggQEAKIAogSW5zdGFuY2UgbWV0aG9kczoKIAotLi4gbWV0aG9kOjogdGltZS5yZXBsYWNlKFtob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLCB0emluZm9dXV1dXSkKKy4uIG1ldGhvZDo6IHRpbWUucmVwbGFjZShob3VyPXNlbGYuaG91ciwgbWludXRlPXNlbGYubWludXRlLCBzZWNvbmQ9c2VsZi5zZWNvbmQsIFwKKyAgIG1pY3Jvc2Vjb25kPXNlbGYubWljcm9zZWNvbmQsIHR6aW5mbz1zZWxmLnR6aW5mbywgKiBmb2xkPTApCiAKICAgIFJldHVybiBhIDpjbGFzczpgLnRpbWVgIHdpdGggdGhlIHNhbWUgdmFsdWUsIGV4Y2VwdCBmb3IgdGhvc2UgYXR0cmlidXRlcyBnaXZlbgogICAgbmV3IHZhbHVlcyBieSB3aGljaGV2ZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZC4gIE5vdGUgdGhhdAogICAgYGB0emluZm89Tm9uZWBgIGNhbiBiZSBzcGVjaWZpZWQgdG8gY3JlYXRlIGEgbmFpdmUgOmNsYXNzOmAudGltZWAgZnJvbSBhbgogICAgYXdhcmUgOmNsYXNzOmAudGltZWAsIHdpdGhvdXQgY29udmVyc2lvbiBvZiB0aGUgdGltZSBkYXRhLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBgYGZvbGRgYCBhcmd1bWVudC4KIAotLi4gbWV0aG9kOjogdGltZS5pc29mb3JtYXQoKQorCisuLiBtZXRob2Q6OiB0aW1lLmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpCiAKICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LCBISDpNTTpTUy5tbW1tbW0gb3IsIGlmCi0gICBzZWxmLm1pY3Jvc2Vjb25kIGlzIDAsIEhIOk1NOlNTIElmIDptZXRoOmB1dGNvZmZzZXRgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgYQorICAgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLCBISDpNTTpTUyBJZiA6bWV0aDpgdXRjb2Zmc2V0YCBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIGEKICAgIDYtY2hhcmFjdGVyIHN0cmluZyBpcyBhcHBlbmRlZCwgZ2l2aW5nIHRoZSBVVEMgb2Zmc2V0IGluIChzaWduZWQpIGhvdXJzIGFuZAogICAgbWludXRlczogSEg6TU06U1MubW1tbW1tK0hIOk1NIG9yLCBpZiBzZWxmLm1pY3Jvc2Vjb25kIGlzIDAsIEhIOk1NOlNTK0hIOk1NCiAKKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqdGltZXNwZWMqIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgIGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZSAodGhlIGRlZmF1bHQgaXMgYGAnYXV0bydgYCkuCisgICBJdCBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIC0gYGAnYXV0bydgYDogU2FtZSBhcyBgYCdzZWNvbmRzJ2BgIGlmIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwKKyAgICAgc2FtZSBhcyBgYCdtaWNyb3NlY29uZHMnYGAgb3RoZXJ3aXNlLgorICAgLSBgYCdob3VycydgYDogSW5jbHVkZSB0aGUgOmF0dHI6YGhvdXJgIGluIHRoZSB0d28tZGlnaXQgSEggZm9ybWF0LgorICAgLSBgYCdtaW51dGVzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCBhbmQgOmF0dHI6YG1pbnV0ZWAgaW4gSEg6TU0gZm9ybWF0LgorICAgLSBgYCdzZWNvbmRzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCwgOmF0dHI6YG1pbnV0ZWAsIGFuZCA6YXR0cjpgc2Vjb25kYAorICAgICBpbiBISDpNTTpTUyBmb3JtYXQuCisgICAtIGBgJ21pbGxpc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUsIGJ1dCB0cnVuY2F0ZSBmcmFjdGlvbmFsIHNlY29uZAorICAgICBwYXJ0IHRvIG1pbGxpc2Vjb25kcy4gSEg6TU06U1Muc3NzIGZvcm1hdC4KKyAgIC0gYGAnbWljcm9zZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSBpbiBISDpNTTpTUy5tbW1tbW0gZm9ybWF0LgorCisgICAuLiBub3RlOjoKKworICAgICAgRXhjbHVkZWQgdGltZSBjb21wb25lbnRzIGFyZSB0cnVuY2F0ZWQsIG5vdCByb3VuZGVkLgorCisgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBvbiBhbiBpbnZhbGlkICp0aW1lc3BlYyogYXJndW1lbnQuCisKKworICAgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWUKKyAgICAgID4+PiB0aW1lKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0xMjM0NTYpLmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpCisgICAgICAnMTI6MzQnCisgICAgICA+Pj4gZHQgPSB0aW1lKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0wKQorICAgICAgPj4+IGR0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJykKKyAgICAgICcxMjozNDo1Ni4wMDAwMDAnCisgICAgICA+Pj4gZHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJykKKyAgICAgICcxMjozNDo1NicKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgKnRpbWVzcGVjKiBhcmd1bWVudC4KKwogCiAuLiBtZXRob2Q6OiB0aW1lLl9fc3RyX18oKQogCkBAIC0xNDMwLDcgKzE1NTEsOCBAQAogLi4gbWV0aG9kOjogdGltZS5fX2Zvcm1hdF9fKGZvcm1hdCkKIAogICAgU2FtZSBhcyA6bWV0aDpgLnRpbWUuc3RyZnRpbWVgLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBmb3JtYXQgc3RyaW5nCi0gICBmb3IgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQorICAgZm9yIGEgOmNsYXNzOmAudGltZWAgb2JqZWN0IGluIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcKKyAgIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBhbmQgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQogICAgY29tcGxldGUgbGlzdCBvZiBmb3JtYXR0aW5nIGRpcmVjdGl2ZXMsIHNlZQogICAgOnJlZjpgc3RyZnRpbWUtc3RycHRpbWUtYmVoYXZpb3JgLgogCkBAIC0xNjgwLDkgKzE4MDIsMTkgQEAKIFdoZW4gRFNUIHN0YXJ0cyAodGhlICJzdGFydCIgbGluZSksIHRoZSBsb2NhbCB3YWxsIGNsb2NrIGxlYXBzIGZyb20gMTo1OSB0bwogMzowMC4gIEEgd2FsbCB0aW1lIG9mIHRoZSBmb3JtIDI6TU0gZG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSBvbiB0aGF0IGRheSwgc28KIGBgYXN0aW1lem9uZShFYXN0ZXJuKWBgIHdvbid0IGRlbGl2ZXIgYSByZXN1bHQgd2l0aCBgYGhvdXIgPT0gMmBgIG9uIHRoZSBkYXkgRFNUCi1iZWdpbnMuICBJbiBvcmRlciBmb3IgOm1ldGg6YGFzdGltZXpvbmVgIHRvIG1ha2UgdGhpcyBndWFyYW50ZWUsIHRoZQotOm1ldGg6YHR6aW5mby5kc3RgIG1ldGhvZCBtdXN0IGNvbnNpZGVyIHRpbWVzIGluIHRoZSAibWlzc2luZyBob3VyIiAoMjpNTSBmb3IKLUVhc3Rlcm4pIHRvIGJlIGluIGRheWxpZ2h0IHRpbWUuCitiZWdpbnMuICBGb3IgZXhhbXBsZSwgYXQgdGhlIFNwcmluZyBmb3J3YXJkIHRyYW5zaXRpb24gb2YgMjAxNiwgd2UgZ2V0CisKKyAgICA+Pj4gdTAgPSBkYXRldGltZSgyMDE2LCAzLCAxMywgNSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgLi4uICAgICB1ID0gdTAgKyBpKkhPVVIKKyAgICAuLi4gICAgIHQgPSB1LmFzdGltZXpvbmUoRWFzdGVybikKKyAgICAuLi4gICAgIHByaW50KHUudGltZSgpLCAnVVRDID0nLCB0LnRpbWUoKSwgdC50em5hbWUoKSkKKyAgICAuLi4KKyAgICAwNTowMDowMCBVVEMgPSAwMDowMDowMCBFU1QKKyAgICAwNjowMDowMCBVVEMgPSAwMTowMDowMCBFU1QKKyAgICAwNzowMDowMCBVVEMgPSAwMzowMDowMCBFRFQKKyAgICAwODowMDowMCBVVEMgPSAwNDowMDowMCBFRFQKKwogCiBXaGVuIERTVCBlbmRzICh0aGUgImVuZCIgbGluZSksIHRoZXJlJ3MgYSBwb3RlbnRpYWxseSB3b3JzZSBwcm9ibGVtOiB0aGVyZSdzIGFuCiBob3VyIHRoYXQgY2FuJ3QgYmUgc3BlbGxlZCB1bmFtYmlndW91c2x5IGluIGxvY2FsIHdhbGwgdGltZTogdGhlIGxhc3QgaG91ciBvZgpAQCAtMTY5MSwyOCArMTgyMyw0MSBAQAogdG8gMTowMCAoc3RhbmRhcmQgdGltZSkgYWdhaW4uIExvY2FsIHRpbWVzIG9mIHRoZSBmb3JtIDE6TU0gYXJlIGFtYmlndW91cy4KIDptZXRoOmBhc3RpbWV6b25lYCBtaW1pY3MgdGhlIGxvY2FsIGNsb2NrJ3MgYmVoYXZpb3IgYnkgbWFwcGluZyB0d28gYWRqYWNlbnQgVVRDCiBob3VycyBpbnRvIHRoZSBzYW1lIGxvY2FsIGhvdXIgdGhlbi4gIEluIHRoZSBFYXN0ZXJuIGV4YW1wbGUsIFVUQyB0aW1lcyBvZiB0aGUKLWZvcm0gNTpNTSBhbmQgNjpNTSBib3RoIG1hcCB0byAxOk1NIHdoZW4gY29udmVydGVkIHRvIEVhc3Rlcm4uICBJbiBvcmRlciBmb3IKLTptZXRoOmBhc3RpbWV6b25lYCB0byBtYWtlIHRoaXMgZ3VhcmFudGVlLCB0aGUgOm1ldGg6YHR6aW5mby5kc3RgIG1ldGhvZCBtdXN0Ci1jb25zaWRlciB0aW1lcyBpbiB0aGUgInJlcGVhdGVkIGhvdXIiIHRvIGJlIGluIHN0YW5kYXJkIHRpbWUuICBUaGlzIGlzIGVhc2lseQotYXJyYW5nZWQsIGFzIGluIHRoZSBleGFtcGxlLCBieSBleHByZXNzaW5nIERTVCBzd2l0Y2ggdGltZXMgaW4gdGhlIHRpbWUgem9uZSdzCi1zdGFuZGFyZCBsb2NhbCB0aW1lLgorZm9ybSA1Ok1NIGFuZCA2Ok1NIGJvdGggbWFwIHRvIDE6TU0gd2hlbiBjb252ZXJ0ZWQgdG8gRWFzdGVybiwgYnV0IGVhcmxpZXIgdGltZXMKK2hhdmUgdGhlIDphdHRyOmB+ZGF0ZXRpbWUuZm9sZGAgYXR0cmlidXRlIHNldCB0byAwIGFuZCB0aGUgbGF0ZXIgdGltZXMgaGF2ZSBpdCBzZXQgdG8gMS4KK0ZvciBleGFtcGxlLCBhdCB0aGUgRmFsbCBiYWNrIHRyYW5zaXRpb24gb2YgMjAxNiwgd2UgZ2V0CiAKLUFwcGxpY2F0aW9ucyB0aGF0IGNhbid0IGJlYXIgc3VjaCBhbWJpZ3VpdGllcyBzaG91bGQgYXZvaWQgdXNpbmcgaHlicmlkCisgICAgPj4+IHUwID0gZGF0ZXRpbWUoMjAxNiwgMTEsIDYsIDQsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgPj4+IGZvciBpIGluIHJhbmdlKDQpOgorICAgIC4uLiAgICAgdSA9IHUwICsgaSpIT1VSCisgICAgLi4uICAgICB0ID0gdS5hc3RpbWV6b25lKEVhc3Rlcm4pCisgICAgLi4uICAgICBwcmludCh1LnRpbWUoKSwgJ1VUQyA9JywgdC50aW1lKCksIHQudHpuYW1lKCksIHQuZm9sZCkKKyAgICAuLi4KKyAgICAwNDowMDowMCBVVEMgPSAwMDowMDowMCBFRFQgMAorICAgIDA1OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVEVCAwCisgICAgMDY6MDA6MDAgVVRDID0gMDE6MDA6MDAgRVNUIDEKKyAgICAwNzowMDowMCBVVEMgPSAwMjowMDowMCBFU1QgMAorCitOb3RlIHRoYXQgdGhlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlcyB0aGF0IGRpZmZlciBvbmx5IGJ5IHRoZSB2YWx1ZSBvZiB0aGUKKzphdHRyOmB+ZGF0ZXRpbWUuZm9sZGAgYXR0cmlidXRlIGFyZSBjb25zaWRlcmVkIGVxdWFsIGluIGNvbXBhcmlzb25zLgorCitBcHBsaWNhdGlvbnMgdGhhdCBjYW4ndCBiZWFyIHdhbGwtdGltZSBhbWJpZ3VpdGllcyBzaG91bGQgZXhwbGljaXRseSBjaGVjayB0aGUKK3ZhbHVlIG9mIHRoZSA6YXR0cjpgfmRhdGV0aW1lLmZvbGRgIGF0dHJpYnV0ZSBvciBhdm9pZCB1c2luZyBoeWJyaWQKIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzc2VzOyB0aGVyZSBhcmUgbm8gYW1iaWd1aXRpZXMgd2hlbiB1c2luZyA6Y2xhc3M6YHRpbWV6b25lYCwKIG9yIGFueSBvdGhlciBmaXhlZC1vZmZzZXQgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzIChzdWNoIGFzIGEgY2xhc3MgcmVwcmVzZW50aW5nCiBvbmx5IEVTVCAoZml4ZWQgb2Zmc2V0IC01IGhvdXJzKSwgb3Igb25seSBFRFQgKGZpeGVkIG9mZnNldCAtNCBob3VycykpLgogCiAuLiBzZWVhbHNvOjoKIAotICAgYHB5dHogPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl0ei8+YF8KKyAgIGBkYXRldHVpbC50eiA8aHR0cHM6Ly9kYXRldXRpbC5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvdHouaHRtbD5gXwogICAgICAgVGhlIHN0YW5kYXJkIGxpYnJhcnkgaGFzIDpjbGFzczpgdGltZXpvbmVgIGNsYXNzIGZvciBoYW5kbGluZyBhcmJpdHJhcnkKICAgICAgIGZpeGVkIG9mZnNldHMgZnJvbSBVVEMgYW5kIDphdHRyOmB0aW1lem9uZS51dGNgIGFzIFVUQyB0aW1lem9uZSBpbnN0YW5jZS4KIAotICAgICAgKnB5dHoqIGxpYnJhcnkgYnJpbmdzIHRoZSAqSUFOQSB0aW1lem9uZSBkYXRhYmFzZSogKGFsc28ga25vd24gYXMgdGhlCisgICAgICAqZGF0ZXR1aWwudHoqIGxpYnJhcnkgYnJpbmdzIHRoZSAqSUFOQSB0aW1lem9uZSBkYXRhYmFzZSogKGFsc28ga25vd24gYXMgdGhlCiAgICAgICBPbHNvbiBkYXRhYmFzZSkgdG8gUHl0aG9uIGFuZCBpdHMgdXNhZ2UgaXMgcmVjb21tZW5kZWQuCiAKICAgIGBJQU5BIHRpbWV6b25lIGRhdGFiYXNlIDxodHRwczovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzPmBfCi0gICAgICBUaGUgVGltZSBab25lIERhdGFiYXNlIChvZnRlbiBjYWxsZWQgdHogb3Igem9uZWluZm8pIGNvbnRhaW5zIGNvZGUgYW5kCisgICAgICBUaGUgVGltZSBab25lIERhdGFiYXNlIChvZnRlbiBjYWxsZWQgdHosIHR6ZGF0YSBvciB6b25laW5mbykgY29udGFpbnMgY29kZSBhbmQKICAgICAgIGRhdGEgdGhhdCByZXByZXNlbnQgdGhlIGhpc3Rvcnkgb2YgbG9jYWwgdGltZSBmb3IgbWFueSByZXByZXNlbnRhdGl2ZQogICAgICAgbG9jYXRpb25zIGFyb3VuZCB0aGUgZ2xvYmUuIEl0IGlzIHVwZGF0ZWQgcGVyaW9kaWNhbGx5IHRvIHJlZmxlY3QgY2hhbmdlcwogICAgICAgbWFkZSBieSBwb2xpdGljYWwgYm9kaWVzIHRvIHRpbWUgem9uZSBib3VuZGFyaWVzLCBVVEMgb2Zmc2V0cywgYW5kCkBAIC0xNzMyLDcgKzE4NzcsNyBAQAogbWFkZSB0byBjaXZpbCB0aW1lLgogCiAKLS4uIGNsYXNzOjogdGltZXpvbmUob2Zmc2V0WywgbmFtZV0pCisuLiBjbGFzczo6IHRpbWV6b25lKG9mZnNldCwgbmFtZT1Ob25lKQogCiAgIFRoZSAqb2Zmc2V0KiBhcmd1bWVudCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIDpjbGFzczpgdGltZWRlbHRhYAogICBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxvY2FsIHRpbWUgYW5kIFVUQy4gIEl0IG11c3QKQEAgLTE3NDEsMTAgKzE4ODYsNyBAQAogICBvdGhlcndpc2UgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCiAgIFRoZSAqbmFtZSogYXJndW1lbnQgaXMgb3B0aW9uYWwuICBJZiBzcGVjaWZpZWQgaXQgbXVzdCBiZSBhIHN0cmluZyB0aGF0Ci0gIGlzIHVzZWQgYXMgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBgYHR6bmFtZShkdClgYCBtZXRob2QuICBPdGhlcndpc2UsCi0gIGBgdHpuYW1lKGR0KWBgIHJldHVybnMgYSBzdHJpbmcgJ1VUQ3NISDpNTScsIHdoZXJlIHMgaXMgdGhlIHNpZ24gb2YKLSAgKm9mZnNldCosIEhIIGFuZCBNTSBhcmUgdHdvIGRpZ2l0cyBvZiBgYG9mZnNldC5ob3Vyc2BgIGFuZAotICBgYG9mZnNldC5taW51dGVzYGAgcmVzcGVjdGl2ZWx5LgorICB3aWxsIGJlIHVzZWQgYXMgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSA6bWV0aDpgZGF0ZXRpbWUudHpuYW1lYCBtZXRob2QuCiAKICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTE3NTcsMTEgKzE4OTksMTkgQEAKIAogLi4gbWV0aG9kOjogdGltZXpvbmUudHpuYW1lKGR0KQogCi0gIFJldHVybiB0aGUgZml4ZWQgdmFsdWUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgdGltZXpvbmVgIGluc3RhbmNlIGlzCi0gIGNvbnN0cnVjdGVkIG9yIGEgc3RyaW5nICdVVENzSEg6TU0nLCB3aGVyZSBzIGlzIHRoZSBzaWduIG9mCi0gICpvZmZzZXQqLCBISCBhbmQgTU0gYXJlIHR3byBkaWdpdHMgb2YgYGBvZmZzZXQuaG91cnNgYCBhbmQKKyAgUmV0dXJuIHRoZSBmaXhlZCB2YWx1ZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmB0aW1lem9uZWAgaW5zdGFuY2UKKyAgaXMgY29uc3RydWN0ZWQuICBJZiAqbmFtZSogaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjb25zdHJ1Y3RvciwgdGhlCisgIG5hbWUgcmV0dXJuZWQgYnkgYGB0em5hbWUoZHQpYGAgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIHZhbHVlIG9mIHRoZQorICBgYG9mZnNldGBgIGFzIGZvbGxvd3MuICBJZiAqb2Zmc2V0KiBpcyBgYHRpbWVkZWx0YSgwKWBgLCB0aGUgbmFtZQorICBpcyAiVVRDIiwgb3RoZXJ3aXNlIGl0IGlzIGEgc3RyaW5nICdVVEPCsUhIOk1NJywgd2hlcmUgwrEgaXMgdGhlIHNpZ24KKyAgb2YgYGBvZmZzZXRgYCwgSEggYW5kIE1NIGFyZSB0d28gZGlnaXRzIG9mIGBgb2Zmc2V0LmhvdXJzYGAgYW5kCiAgIGBgb2Zmc2V0Lm1pbnV0ZXNgYCByZXNwZWN0aXZlbHkuCiAKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgTmFtZSBnZW5lcmF0ZWQgZnJvbSBgYG9mZnNldD10aW1lZGVsdGEoMClgYCBpcyBub3cgcGxhaW4gJ1VUQycsIG5vdAorICAgICAnVVRDKzAwOjAwJy4KKworCiAuLiBtZXRob2Q6OiB0aW1lem9uZS5kc3QoZHQpCiAKICAgQWx3YXlzIHJldHVybnMgYGBOb25lYGAuCkBAIC0xOTExLDYgKzIwNjEsMzQgQEAKIHwgYGAlJWBgICAgIHwgQSBsaXRlcmFsIGBgJyUnYGAgY2hhcmFjdGVyLiAgIHwgJSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIAorU2V2ZXJhbCBhZGRpdGlvbmFsIGRpcmVjdGl2ZXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBDODkgc3RhbmRhcmQgYXJlIGluY2x1ZGVkIGZvcgorY29udmVuaWVuY2UuIFRoZXNlIHBhcmFtZXRlcnMgYWxsIGNvcnJlc3BvbmQgdG8gSVNPIDg2MDEgZGF0ZSB2YWx1ZXMuIFRoZXNlCittYXkgbm90IGJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHdoZW4gdXNlZCB3aXRoIHRoZSA6bWV0aDpgc3RyZnRpbWVgCittZXRob2QuIFRoZSBJU08gODYwMSB5ZWFyIGFuZCBJU08gODYwMSB3ZWVrIGRpcmVjdGl2ZXMgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUKK3dpdGggdGhlIHllYXIgYW5kIHdlZWsgbnVtYmVyIGRpcmVjdGl2ZXMgYWJvdmUuIENhbGxpbmcgOm1ldGg6YHN0cnB0aW1lYCB3aXRoCitpbmNvbXBsZXRlIG9yIGFtYmlndW91cyBJU08gODYwMSBkaXJlY3RpdmVzIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4KKworKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBEaXJlY3RpdmUgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgfCBFeGFtcGxlICAgICAgICAgICAgICAgIHwgTm90ZXMgfAorKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KworfCBgYCVHYGAgICAgfCBJU08gODYwMSB5ZWFyIHdpdGggY2VudHVyeSAgICAgfCAwMDAxLCAwMDAyLCAuLi4sIDIwMTMsIHwgXCg4KSAgfAorfCAgICAgICAgICAgfCByZXByZXNlbnRpbmcgdGhlIHllYXIgdGhhdCAgICAgfCAyMDE0LCAuLi4sIDk5OTgsIDk5OTkgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBjb250YWlucyB0aGUgZ3JlYXRlciBwYXJ0IG9mICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCB0aGUgSVNPIHdlZWsgKGBgJVZgYCkuICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCV1YGAgICAgfCBJU08gODYwMSB3ZWVrZGF5IGFzIGEgZGVjaW1hbCAgfCAxLCAyLCAuLi4sIDcgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBudW1iZXIgd2hlcmUgMSBpcyBNb25kYXkuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCVWYGAgICAgfCBJU08gODYwMSB3ZWVrIGFzIGEgZGVjaW1hbCAgICAgfCAwMSwgMDIsIC4uLiwgNTMgICAgICAgIHwgXCg4KSAgfAorfCAgICAgICAgICAgfCBudW1iZXIgd2l0aCBNb25kYXkgYXMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBXZWVrIDAxIGlzIHRoZSB3ZWVrIGNvbnRhaW5pbmcgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBKYW4gNC4gICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgIGBgJUdgYCwgYGAldWBgIGFuZCBgYCVWYGAgd2VyZSBhZGRlZC4KKwogTm90ZXM6CiAKICgxKQpAQCAtMTk3NSw3ICsyMTUzLDE0IEBACiAKICg3KQogICAgV2hlbiB1c2VkIHdpdGggdGhlIDptZXRoOmBzdHJwdGltZWAgbWV0aG9kLCBgYCVVYGAgYW5kIGBgJVdgYCBhcmUgb25seSB1c2VkCi0gICBpbiBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgeWVhciBhcmUgc3BlY2lmaWVkLgorICAgaW4gY2FsY3VsYXRpb25zIHdoZW4gdGhlIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIGNhbGVuZGFyIHllYXIgKGBgJVlgYCkKKyAgIGFyZSBzcGVjaWZpZWQuCisKKyg4KQorICAgU2ltaWxhciB0byBgYCVVYGAgYW5kIGBgJVdgYCwgYGAlVmBgIGlzIG9ubHkgdXNlZCBpbiBjYWxjdWxhdGlvbnMgd2hlbiB0aGUKKyAgIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIElTTyB5ZWFyIChgYCVHYGApIGFyZSBzcGVjaWZpZWQgaW4gYQorICAgOm1ldGg6YHN0cnB0aW1lYCBmb3JtYXQgc3RyaW5nLiBBbHNvIG5vdGUgdGhhdCBgYCVHYGAgYW5kIGBgJVlgYCBhcmUgbm90CisgICBpbnRlcmNoYW5nZWFibGUuCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYm0ucnN0IGIvRG9jL2xpYnJhcnkvZGJtLnJzdAppbmRleCAyYTFkYjkxLi4zMmU4MGIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYm0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RibS5yc3QKQEAgLTM1MSw2ICszNTEsMTAgQEAKICAgICAgIDpmdW5jOmAub3BlbmAgYWx3YXlzIGNyZWF0ZXMgYSBuZXcgZGF0YWJhc2Ugd2hlbiB0aGUgZmxhZyBoYXMgdGhlIHZhbHVlCiAgICAgICBgYCduJ2BgLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjYgMy44CisgICAgICBDcmVhdGluZyBkYXRhYmFzZSBpbiBgYCdyJ2BgIGFuZCBgYCd3J2BgIG1vZGVzLiAgTW9kaWZ5aW5nIGRhdGFiYXNlIGluCisgICAgICBgYCdyJ2BgIG1vZGUuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBtZXRob2RzIHByb3ZpZGVkIGJ5IHRoZQogICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgIGNsYXNzLCA6Y2xhc3M6YGR1bWJkYm1gIG9iamVjdHMKICAgIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAppbmRleCBiNWNlMGIxLi5lOTg0ZWRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdApAQCAtMzQ1LDcgKzM0NSw3IEBACiAgICAqdmFsdWUqIGNhbiBiZSBhbiBpbnRlZ2VyLCBzdHJpbmcsIHR1cGxlLCA6Y2xhc3M6YGZsb2F0YCwgb3IgYW5vdGhlciA6Y2xhc3M6YERlY2ltYWxgCiAgICBvYmplY3QuIElmIG5vICp2YWx1ZSogaXMgZ2l2ZW4sIHJldHVybnMgYGBEZWNpbWFsKCcwJylgYC4gIElmICp2YWx1ZSogaXMgYQogICAgc3RyaW5nLCBpdCBzaG91bGQgY29uZm9ybSB0byB0aGUgZGVjaW1hbCBudW1lcmljIHN0cmluZyBzeW50YXggYWZ0ZXIgbGVhZGluZwotICAgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBhcmUgcmVtb3ZlZDo6CisgICBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLCBhcyB3ZWxsIGFzIHVuZGVyc2NvcmVzIHRocm91Z2hvdXQsIGFyZSByZW1vdmVkOjoKIAogICAgICAgc2lnbiAgICAgICAgICAgOjo9ICAnKycgfCAnLScKICAgICAgIGRpZ2l0ICAgICAgICAgIDo6PSAgJzAnIHwgJzEnIHwgJzInIHwgJzMnIHwgJzQnIHwgJzUnIHwgJzYnIHwgJzcnIHwgJzgnIHwgJzknCkBAIC0zOTQsNiArMzk0LDEwIEBACiAgICAgICA6Y2xhc3M6YGZsb2F0YCBhcmd1bWVudHMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSA6ZXhjOmBGbG9hdE9wZXJhdGlvbmAKICAgICAgIHRyYXAgaXMgc2V0LiBCeSBkZWZhdWx0IHRoZSB0cmFwIGlzIG9mZi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGZvciBncm91cGluZywgYXMgd2l0aCBpbnRlZ3JhbCBhbmQgZmxvYXRpbmctcG9pbnQKKyAgICAgIGxpdGVyYWxzIGluIGNvZGUuCisKICAgIERlY2ltYWwgZmxvYXRpbmcgcG9pbnQgb2JqZWN0cyBzaGFyZSBtYW55IHByb3BlcnRpZXMgd2l0aCB0aGUgb3RoZXIgYnVpbHQtaW4KICAgIG51bWVyaWMgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGZsb2F0YCBhbmQgOmNsYXNzOmBpbnRgLiAgQWxsIG9mIHRoZSB1c3VhbCBtYXRoCiAgICBvcGVyYXRpb25zIGFuZCBzcGVjaWFsIG1ldGhvZHMgYXBwbHkuICBMaWtld2lzZSwgZGVjaW1hbCBvYmplY3RzIGNhbiBiZQpAQCAtNDQ3LDYgKzQ1MSwxOSBAQAogICAgICAgYGBEZWNpbWFsKCczMjFlKzUnKS5hZGp1c3RlZCgpYGAgcmV0dXJucyBzZXZlbi4gIFVzZWQgZm9yIGRldGVybWluaW5nIHRoZQogICAgICAgcG9zaXRpb24gb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgd2l0aCByZXNwZWN0IHRvIHRoZSBkZWNpbWFsIHBvaW50LgogCisgICAuLiBtZXRob2Q6OiBhc19pbnRlZ2VyX3JhdGlvKCkKKworICAgICAgUmV0dXJuIGEgcGFpciBgYChuLCBkKWBgIG9mIGludGVnZXJzIHRoYXQgcmVwcmVzZW50IHRoZSBnaXZlbgorICAgICAgOmNsYXNzOmBEZWNpbWFsYCBpbnN0YW5jZSBhcyBhIGZyYWN0aW9uLCBpbiBsb3dlc3QgdGVybXMgYW5kCisgICAgICB3aXRoIGEgcG9zaXRpdmUgZGVub21pbmF0b3I6OgorCisgICAgICAgICAgPj4+IERlY2ltYWwoJy0zLjE0JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICAgKC0xNTcsIDUwKQorCisgICAgICBUaGUgY29udmVyc2lvbiBpcyBleGFjdC4gIFJhaXNlIE92ZXJmbG93RXJyb3Igb24gaW5maW5pdGllcyBhbmQgVmFsdWVFcnJvcgorICAgICAgb24gTmFOcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKICAgIC4uIG1ldGhvZDo6IGFzX3R1cGxlKCkKIApAQCAtMTA2Miw4ICsxMDc5LDggQEAKICAgICAgICAgIERlY2ltYWwoJzQuNDQnKQogCiAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSB0by1udW1iZXIgb3BlcmF0aW9uIG9mIHRoZSBJQk0gc3BlY2lmaWNhdGlvbi4KLSAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBhIHN0cmluZywgbm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGlzCi0gICAgICBwZXJtaXR0ZWQuCisgICAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSBzdHJpbmcsIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBvcgorICAgICAgdW5kZXJzY29yZXMgYXJlIHBlcm1pdHRlZC4KIAogICAgLi4gbWV0aG9kOjogY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChmKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXMucnN0IGIvRG9jL2xpYnJhcnkvZGlzLnJzdAppbmRleCBkMmQ4YWM3Li4zYzZjMGZkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKQEAgLTMxLDkgKzMxLDkgQEAKIAogICAgPj4+IGRpcy5kaXMobXlmdW5jKQogICAgICAyICAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChsZW4pCi0gICAgICAgICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGFsaXN0KQotICAgICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCi0gICAgICAgICAgICAgICAgIDkgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGFsaXN0KQorICAgICAgICAgICAgICAgICA0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgIDYgUkVUVVJOX1ZBTFVFCiAKIChUaGUgIjIiIGlzIGEgbGluZSBudW1iZXIpLgogCkBAIC02MDcsNiArNjA3LDE0IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBvcGNvZGU6OiBTRVRVUF9BTk5PVEFUSU9OUworCisgICBDaGVja3Mgd2hldGhlciBgYF9fYW5ub3RhdGlvbnNfX2BgIGlzIGRlZmluZWQgaW4gYGBsb2NhbHMoKWBgLCBpZiBub3QgaXQgaXMKKyAgIHNldCB1cCB0byBhbiBlbXB0eSBgYGRpY3RgYC4gVGhpcyBvcGNvZGUgaXMgb25seSBlbW1pdHRlZCBpZiBhIGNsYXNzCisgICBvciBtb2R1bGUgYm9keSBjb250YWlucyA6dGVybTpgdmFyaWFibGUgYW5ub3RhdGlvbnMgPHZhcmlhYmxlIGFubm90YXRpb24+YAorICAgc3RhdGljYWxseS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIG9wY29kZTo6IElNUE9SVF9TVEFSCiAKQEAgLTY4Miw4ICs2OTAsNyBAQAogICAgLi4gWFhYIGV4cGxhaW4gdGhlIFdIWSBzdHVmZiEKIAogCi1BbGwgb2YgdGhlIGZvbGxvd2luZyBvcGNvZGVzIGV4cGVjdCBhcmd1bWVudHMuICBBbiBhcmd1bWVudCBpcyB0d28gYnl0ZXMsIHdpdGgKLXRoZSBtb3JlIHNpZ25pZmljYW50IGJ5dGUgbGFzdC4KK0FsbCBvZiB0aGUgZm9sbG93aW5nIG9wY29kZXMgdXNlIHRoZWlyIGFyZ3VtZW50cy4KIAogLi4gb3Bjb2RlOjogU1RPUkVfTkFNRSAobmFtZWkpCiAKQEAgLTc2OSw2ICs3NzYsMjMgQEAKICAgIHRvIGhvbGQgKmNvdW50KiBlbnRyaWVzLgogCiAKKy4uIG9wY29kZTo6IEJVSUxEX0NPTlNUX0tFWV9NQVAgKGNvdW50KQorCisgICBUaGUgdmVyc2lvbiBvZiA6b3Bjb2RlOmBCVUlMRF9NQVBgIHNwZWNpYWxpemVkIGZvciBjb25zdGFudCBrZXlzLiAgKmNvdW50KgorICAgdmFsdWVzIGFyZSBjb25zdW1lZCBmcm9tIHRoZSBzdGFjay4gIFRoZSB0b3AgZWxlbWVudCBvbiB0aGUgc3RhY2sgY29udGFpbnMKKyAgIGEgdHVwbGUgb2Yga2V5cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gb3Bjb2RlOjogQlVJTERfU1RSSU5HIChjb3VudCkKKworICAgQ29uY2F0ZW5hdGVzICpjb3VudCogc3RyaW5ncyBmcm9tIHRoZSBzdGFjayBhbmQgcHVzaGVzIHRoZSByZXN1bHRpbmcgc3RyaW5nCisgICBvbnRvIHRoZSBzdGFjay4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gb3Bjb2RlOjogTE9BRF9BVFRSIChuYW1laSkKIAogICAgUmVwbGFjZXMgVE9TIHdpdGggYGBnZXRhdHRyKFRPUywgY29fbmFtZXNbbmFtZWldKWBgLgpAQCAtODc0LDYgKzg5OCwxMyBAQAogICAgRGVsZXRlcyBsb2NhbCBgYGNvX3Zhcm5hbWVzW3Zhcl9udW1dYGAuCiAKIAorLi4gb3Bjb2RlOjogU1RPUkVfQU5OT1RBVElPTiAobmFtZWkpCisKKyAgIFN0b3JlcyBUT1MgYXMgYGBsb2NhbHMoKVsnX19hbm5vdGF0aW9uc19fJ11bY29fbmFtZXNbbmFtZWldXSA9IFRPU2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBvcGNvZGU6OiBMT0FEX0NMT1NVUkUgKGkpCiAKICAgIFB1c2hlcyBhIHJlZmVyZW5jZSB0byB0aGUgY2VsbCBjb250YWluZWQgaW4gc2xvdCAqaSogb2YgdGhlIGNlbGwgYW5kIGZyZWUKQEAgLTkyOSwyNyArOTYwLDE2IEBACiAuLiBvcGNvZGU6OiBNQUtFX0ZVTkNUSU9OIChhcmdjKQogCiAgICBQdXNoZXMgYSBuZXcgZnVuY3Rpb24gb2JqZWN0IG9uIHRoZSBzdGFjay4gIEZyb20gYm90dG9tIHRvIHRvcCwgdGhlIGNvbnN1bWVkCi0gICBzdGFjayBtdXN0IGNvbnNpc3Qgb2YKKyAgIHN0YWNrIG11c3QgY29uc2lzdCBvZiB2YWx1ZXMgaWYgdGhlIGFyZ3VtZW50IGNhcnJpZXMgYSBzcGVjaWZpZWQgZmxhZyB2YWx1ZQogCi0gICAqIGBgYXJnYyAmIDB4RkZgYCBkZWZhdWx0IGFyZ3VtZW50IG9iamVjdHMgaW4gcG9zaXRpb25hbCBvcmRlcgotICAgKiBgYChhcmdjID4+IDgpICYgMHhGRmBgIHBhaXJzIG9mIG5hbWUgYW5kIGRlZmF1bHQgYXJndW1lbnQsIHdpdGggdGhlIG5hbWUKLSAgICAganVzdCBiZWxvdyB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjaywgZm9yIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzCi0gICAqIGBgKGFyZ2MgPj4gMTYpICYgMHg3RkZGYGAgcGFyYW1ldGVyIGFubm90YXRpb24gb2JqZWN0cwotICAgKiBhIHR1cGxlIGxpc3RpbmcgdGhlIHBhcmFtZXRlciBuYW1lcyBmb3IgdGhlIGFubm90YXRpb25zIChvbmx5IGlmIHRoZXJlIGFyZQotICAgICBvbnkgYW5ub3RhdGlvbiBvYmplY3RzKQorICAgKiBgYDB4MDFgYCBhIHR1cGxlIG9mIGRlZmF1bHQgYXJndW1lbnQgb2JqZWN0cyBpbiBwb3NpdGlvbmFsIG9yZGVyCisgICAqIGBgMHgwMmBgIGEgZGljdGlvbmFyeSBvZiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycycgZGVmYXVsdCB2YWx1ZXMKKyAgICogYGAweDA0YGAgYW4gYW5ub3RhdGlvbiBkaWN0aW9uYXJ5CisgICAqIGBgMHgwOGBgIGEgdHVwbGUgY29udGFpbmluZyBjZWxscyBmb3IgZnJlZSB2YXJpYWJsZXMsIG1ha2luZyBhIGNsb3N1cmUKICAgICogdGhlIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdW5jdGlvbiAoYXQgVE9TMSkKICAgICogdGhlIDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgb2YgdGhlIGZ1bmN0aW9uIChhdCBUT1MpCiAKIAotLi4gb3Bjb2RlOjogTUFLRV9DTE9TVVJFIChhcmdjKQotCi0gICBDcmVhdGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCwgc2V0cyBpdHMgKl9fY2xvc3VyZV9fKiBzbG90LCBhbmQgcHVzaGVzIGl0IG9uCi0gICB0aGUgc3RhY2suICBUT1MgaXMgdGhlIDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgb2YgdGhlIGZ1bmN0aW9uLCBUT1MxIGlzIHRoZQotICAgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZ1bmN0aW9uLCBhbmQgVE9TMiBpcyB0aGUgdHVwbGUgY29udGFpbmluZyBjZWxscyBmb3IKLSAgIHRoZSBjbG9zdXJlJ3MgZnJlZSB2YXJpYWJsZXMuICAqYXJnYyogaXMgaW50ZXJwcmV0ZWQgYXMgaW4gYGBNQUtFX0ZVTkNUSU9OYGA7Ci0gICB0aGUgYW5ub3RhdGlvbnMgYW5kIGRlZmF1bHRzIGFyZSBhbHNvIGluIHRoZSBzYW1lIG9yZGVyIGJlbG93IFRPUzIuCi0KLQogLi4gb3Bjb2RlOjogQlVJTERfU0xJQ0UgKGFyZ2MpCiAKICAgIC4uIGluZGV4OjogYnVpbHRpbjogc2xpY2UKQEAgLTk4OSw2ICsxMDA5LDI4IEBACiAgICBhcmd1bWVudHMuCiAKIAorLi4gb3Bjb2RlOjogRk9STUFUX1ZBTFVFIChmbGFncykKKworICAgVXNlZCBmb3IgaW1wbGVtZW50aW5nIGZvcm1hdHRlZCBsaXRlcmFsIHN0cmluZ3MgKGYtc3RyaW5ncykuICBQb3BzCisgICBhbiBvcHRpb25hbCAqZm10X3NwZWMqIGZyb20gdGhlIHN0YWNrLCB0aGVuIGEgcmVxdWlyZWQgKnZhbHVlKi4KKyAgICpmbGFncyogaXMgaW50ZXJwcmV0ZWQgYXMgZm9sbG93czoKKworICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDBgYDogKnZhbHVlKiBpcyBmb3JtYXR0ZWQgYXMtaXMuCisgICAqIGBgKGZsYWdzICYgMHgwMykgPT0gMHgwMWBgOiBjYWxsIDpmdW5jOmBzdHJgIG9uICp2YWx1ZSogYmVmb3JlCisgICAgIGZvcm1hdHRpbmcgaXQuCisgICAqIGBgKGZsYWdzICYgMHgwMykgPT0gMHgwMmBgOiBjYWxsIDpmdW5jOmByZXByYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDNgYDogY2FsbCA6ZnVuYzpgYXNjaWlgIG9uICp2YWx1ZSogYmVmb3JlCisgICAgIGZvcm1hdHRpbmcgaXQuCisgICAqIGBgKGZsYWdzICYgMHgwNCkgPT0gMHgwNGBgOiBwb3AgKmZtdF9zcGVjKiBmcm9tIHRoZSBzdGFjayBhbmQgdXNlCisgICAgIGl0LCBlbHNlIHVzZSBhbiBlbXB0eSAqZm10X3NwZWMqLgorCisgICBGb3JtYXR0aW5nIGlzIHBlcmZvcm1lZCB1c2luZyA6YzpmdW5jOmBQeU9iamVjdF9Gb3JtYXRgLiAgVGhlCisgICByZXN1bHQgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gb3Bjb2RlOjogSEFWRV9BUkdVTUVOVAogCiAgICBUaGlzIGlzIG5vdCByZWFsbHkgYW4gb3Bjb2RlLiAgSXQgaWRlbnRpZmllcyB0aGUgZGl2aWRpbmcgbGluZSBiZXR3ZWVuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC1leGFtcGxlcy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC1leGFtcGxlcy5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOTNiNWMuLjAwMDAwMDAKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLi4gX2VtYWlsLWV4YW1wbGVzOgotCi06bW9kOmBlbWFpbGA6IEV4YW1wbGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUhlcmUgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHRvIHJlYWQsIHdyaXRlLAotYW5kIHNlbmQgc2ltcGxlIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIG1vcmUgY29tcGxleCBNSU1FIG1lc3NhZ2VzLgotCi1GaXJzdCwgbGV0J3Mgc2VlIGhvdyB0byBjcmVhdGUgYW5kIHNlbmQgYSBzaW1wbGUgdGV4dCBtZXNzYWdlOgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQotCi0KLUFuZCBwYXJzaW5nIFJGQzgyMiBoZWFkZXJzIGNhbiBlYXNpbHkgYmUgZG9uZSBieSB0aGUgcGFyc2UoZmlsZW5hbWUpIG9yCi1wYXJzZXN0cihtZXNzYWdlX2FzX3N0cmluZykgbWV0aG9kcyBvZiB0aGUgUGFyc2VyKCkgY2xhc3M6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQotCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIGEgTUlNRSBtZXNzYWdlIGNvbnRhaW5pbmcgYSBidW5jaCBvZiBmYW1pbHkKLXBpY3R1cmVzIHRoYXQgbWF5IGJlIHJlc2lkaW5nIGluIGEgZGlyZWN0b3J5OgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKLQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGFzIGFuIGVtYWlsCi1tZXNzYWdlOiBbMV1fCi0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtZGlyLnB5Ci0KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVucGFjayBhIE1JTUUgbWVzc2FnZSBsaWtlIHRoZSBvbmUKLWFib3ZlLCBpbnRvIGEgZGlyZWN0b3J5IG9mIGZpbGVzOgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gY3JlYXRlIGFuIEhUTUwgbWVzc2FnZSB3aXRoIGFuIGFsdGVybmF0aXZlIHBsYWluCi10ZXh0IHZlcnNpb246IFsyXV8KLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQotCi0KLS4uIF9lbWFpbC1jb250ZW50bWFuYWdlci1hcGktZXhhbXBsZXM6Ci0KLUV4YW1wbGVzIHVzaW5nIHRoZSBQcm92aXNpb25hbCBBUEkKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLUhlcmUgaXMgYSByZXdvcmtpbmcgb2YgdGhlIGxhc3QgZXhhbXBsZSB1c2luZyB0aGUgcHJvdmlzaW9uYWwgQVBJLiAgVG8gbWFrZQotdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHdlIGluY2x1ZGUgYSByZWxhdGVkIGltYWdlIGluIHRoZSBodG1sIHBhcnQsIGFuZAotd2Ugc2F2ZSBhIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZCB0byBkaXNrLCBhcyB3ZWxsIGFzIHNlbmRpbmcgaXQuCi0KLVRoaXMgZXhhbXBsZSBhbHNvIHNob3dzIGhvdyBlYXN5IGl0IGlzIHRvIGluY2x1ZGUgbm9uLUFTQ0lJLCBhbmQgc2ltcGxpZmllcyB0aGUKLXNlbmRpbmcgb2YgdGhlIG1lc3NhZ2UgdXNpbmcgdGhlIDptZXRoOmAuc2VuZF9tZXNzYWdlYCBtZXRob2Qgb2YgdGhlCi06bW9kOmBzbXRwbGliYCBtb2R1bGUuCi0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQotCi1JZiB3ZSB3ZXJlIGluc3RlYWQgc2VudCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBsYXN0IGV4YW1wbGUsIGhlcmUgaXMgb25lCi13YXkgd2UgY291bGQgcHJvY2VzcyBpdDoKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKLQotVXAgdG8gdGhlIHByb21wdCwgdGhlIG91dHB1dCBmcm9tIHRoZSBhYm92ZSBpczoKLQotLi4gY29kZS1ibG9jazo6IG5vbmUKLQotICAgIFRvOiBQZW5lbG9wZSBQdXNzeWNhdCA8cGVuZWxvcGVAZXhhbXBsZS5jb20+LCBGYWJyZXR0ZSBQdXNzeWNhdCA8ZmFicmV0dGVAZXhhbXBsZS5jb20+Ci0gICAgRnJvbTogUGVww6kgTGUgUGV3IDxwZXBlQGV4YW1wbGUuY29tPgotICAgIFN1YmplY3Q6IEF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyCi0KLSAgICBTYWx1dCEKLQotICAgIENlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KLQotCi0uLiBydWJyaWM6OiBGb290bm90ZXMKLQotLi4gWzFdIFRoYW5rcyB0byBNYXR0aGV3IERpeG9uIENvd2xlcyBmb3IgdGhlIG9yaWdpbmFsIGluc3BpcmF0aW9uIGFuZCBleGFtcGxlcy4KLS4uIFsyXSBDb250cmlidXRlZCBieSBNYXJ0aW4gTWF0ZWplay4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuY2hhcnNldC5yc3QKaW5kZXggMTYxZDg2YS4uMDUzNDYzZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuY2hhcnNldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuY2hhcnNldC5yc3QKQEAgLTgsNiArOCwxMSBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlIG5ldworQVBJIG9ubHkgdGhlIGFsaWFzZXMgdGFibGUgaXMgdXNlZC4KKworVGhlIHJlbWFpbmluZyB0ZXh0IGluIHRoaXMgc2VjdGlvbiBpcyB0aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbW9kdWxlLgorCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNsYXNzIDpjbGFzczpgQ2hhcnNldGAgZm9yIHJlcHJlc2VudGluZyBjaGFyYWN0ZXIgc2V0cwogYW5kIGNoYXJhY3RlciBzZXQgY29udmVyc2lvbnMgaW4gZW1haWwgbWVzc2FnZXMsIGFzIHdlbGwgYXMgYSBjaGFyYWN0ZXIgc2V0CiByZWdpc3RyeSBhbmQgc2V2ZXJhbCBjb252ZW5pZW5jZSBtZXRob2RzIGZvciBtYW5pcHVsYXRpbmcgdGhpcyByZWdpc3RyeS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuY29tcGF0MzItbWVzc2FnZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2NTA3OQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0CkBAIC0wLDAgKzEsNzU0IEBACisuLiBfY29tcGF0MzJfbWVzc2FnZToKKworOm1vZDpgZW1haWwubWVzc2FnZS5NZXNzYWdlYDogUmVwcmVzZW50aW5nIGFuIGVtYWlsIG1lc3NhZ2UgdXNpbmcgdGhlIDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIG1vZHVsZTo6IGVtYWlsLm1lc3NhZ2UKKyAgIDpzeW5vcHNpczogVGhlIGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGVtYWlsIG1lc3NhZ2VzIGluIGEgZmFzaGlvbgorICAgICAgICAgICAgICBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggcHl0aG9uMy4yCisKKworVGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3MgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzLCB3aXRob3V0IHRoZSBtZXRob2RzIGFkZGVkIGJ5IHRoYXQKK2NsYXNzLCBhbmQgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjZXJ0YWluIG90aGVyIG1ldGhvZHMgYmVpbmcgc2xpZ2h0bHkKK2RpZmZlcmVudC4gIFdlIGFsc28gZG9jdW1lbnQgaGVyZSBzb21lIG1ldGhvZHMgdGhhdCwgd2hpbGUgc3VwcG9ydGVkIGJ5IHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzLCBhcmUgbm90IHJlY29tbWVuZGVkIHVubGVzcyB5b3UgYXJlCitkZWFsaW5nIHdpdGggbGVnYWN5IGNvZGUuCisKK1RoZSBwaGlsb3NvcGh5IGFuZCBzdHJ1Y3R1cmUgb2YgdGhlIHR3byBjbGFzc2VzIGlzIG90aGVyd2lzZSB0aGUgc2FtZS4KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGJlaGF2aW9yIHVuZGVyIHRoZSBkZWZhdWx0IChmb3IgOmNsYXNzOmBNZXNzYWdlYCkKK3BvbGljeSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Db21wYXQzMmAuICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSBhbm90aGVyIHBvbGljeSwKK3lvdSBzaG91bGQgYmUgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpbnN0ZWFkLgorCitBbiBlbWFpbCBtZXNzYWdlIGNvbnNpc3RzIG9mICpoZWFkZXJzKiBhbmQgYSAqcGF5bG9hZCouICBIZWFkZXJzIG11c3QgYmUKKzpyZmM6YDUyMzNgIHN0eWxlIG5hbWVzIGFuZCB2YWx1ZXMsIHdoZXJlIHRoZSBmaWVsZCBuYW1lIGFuZCB2YWx1ZSBhcmUKK3NlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhlIGNvbG9uIGlzIG5vdCBwYXJ0IG9mIGVpdGhlciB0aGUgZmllbGQgbmFtZSBvciB0aGUKK2ZpZWxkIHZhbHVlLiAgVGhlIHBheWxvYWQgbWF5IGJlIGEgc2ltcGxlIHRleHQgbWVzc2FnZSwgb3IgYSBiaW5hcnkgb2JqZWN0LCBvcgorYSBzdHJ1Y3R1cmVkIHNlcXVlbmNlIG9mIHN1Yi1tZXNzYWdlcyBlYWNoIHdpdGggdGhlaXIgb3duIHNldCBvZiBoZWFkZXJzIGFuZAordGhlaXIgb3duIHBheWxvYWQuICBUaGUgbGF0dGVyIHR5cGUgb2YgcGF5bG9hZCBpcyBpbmRpY2F0ZWQgYnkgdGhlIG1lc3NhZ2UKK2hhdmluZyBhIE1JTUUgdHlwZSBzdWNoIGFzIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBvcgorOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCisKK1RoZSBjb25jZXB0dWFsIG1vZGVsIHByb3ZpZGVkIGJ5IGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QgaXMgdGhhdCBvZiBhbgorb3JkZXJlZCBkaWN0aW9uYXJ5IG9mIGhlYWRlcnMgd2l0aCBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBib3RoCitzcGVjaWFsaXplZCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBoZWFkZXJzLCBmb3IgYWNjZXNzaW5nIHRoZSBwYXlsb2FkLCBmb3IKK2dlbmVyYXRpbmcgYSBzZXJpYWxpemVkIHZlcnNpb24gb2YgdGhlIG1zc2FnZSwgYW5kIGZvciByZWN1cnNpdmVseSB3YWxraW5nIG92ZXIKK3RoZSBvYmplY3QgdHJlZS4gIE5vdGUgdGhhdCBkdXBsaWNhdGUgaGVhZGVycyBhcmUgc3VwcG9ydGVkIGJ1dCBzcGVjaWFsIG1ldGhvZHMKK211c3QgYmUgdXNlZCB0byBhY2Nlc3MgdGhlbS4KKworVGhlIDpjbGFzczpgTWVzc2FnZWAgcHN1ZWRvLWRpY3Rpb25hcnkgaXMgaW5kZXhlZCBieSB0aGUgaGVhZGVyIG5hbWVzLCB3aGljaAorbXVzdCBiZSBBU0NJSSB2YWx1ZXMuICBUaGUgdmFsdWVzIG9mIHRoZSBkaWN0aW9uYXJ5IGFyZSBzdHJpbmdzIHRoYXQgYXJlCitzdXBwb3NlZCB0byBjb250YWluIG9ubHkgQVNDSUkgY2hhcmFjdGVyczsgdGhlcmUgaXMgc29tZSBzcGVjaWFsIGhhbmRsaW5nIGZvcgorbm9uLUFTQ0lJIGlucHV0LCBidXQgaXQgZG9lc24ndCBhbHdheXMgcHJvZHVjZSB0aGUgY29ycmVjdCByZXN1bHRzLiAgSGVhZGVycworYXJlIHN0b3JlZCBhbmQgcmV0dXJuZWQgaW4gY2FzZS1wcmVzZXJ2aW5nIGZvcm0sIGJ1dCBmaWVsZCBuYW1lcyBhcmUgbWF0Y2hlZAorY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVGhlcmUgbWF5IGFsc28gYmUgYSBzaW5nbGUgZW52ZWxvcGUgaGVhZGVyLCBhbHNvIGtub3duIGFzCit0aGUgKlVuaXgtRnJvbSogaGVhZGVyIG9yIHRoZSBgYEZyb21fYGAgaGVhZGVyLiAgVGhlICpwYXlsb2FkKiBpcyBlaXRoZXIgYQorc3RyaW5nIG9yIGJ5dGVzLCBpbiB0aGUgY2FzZSBvZiBzaW1wbGUgbWVzc2FnZSBvYmplY3RzLCBvciBhIGxpc3Qgb2YKKzpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgZm9yIE1JTUUgY29udGFpbmVyIGRvY3VtZW50cyAoZS5nLgorOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCkuCisKK0hlcmUgYXJlIHRoZSBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzOgorCisKKy4uIGNsYXNzOjogTWVzc2FnZShwb2xpY3k9Y29tcGF0MzIpCisKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCisgICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIGFuZCBzZXJpYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uCisgICBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgorICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAorICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKKyAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIFRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKworCisgICAuLiBtZXRob2Q6OiBhc19zdHJpbmcodW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj0wLCBwb2xpY3k9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBzdHJpbmcuICBXaGVuIG9wdGlvbmFsICp1bml4ZnJvbSoKKyAgICAgIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkIHN0cmluZy4KKyAgICAgICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkgcmVhc29ucywKKyAgICAgICptYXhoZWFkZXJsZW4qIGRlZmF1bHRzIHRvIGBgMGBgLCBzbyBpZiB5b3Ugd2FudCBhIGRpZmZlcmVudCB2YWx1ZSB5b3UKKyAgICAgIG11c3Qgb3ZlcnJpZGUgaXQgZXhwbGljaXRseSAodGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgKm1heF9saW5lX2xlbmd0aCogaW4KKyAgICAgIHRoZSBwb2xpY3kgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoaXMgbWV0aG9kKS4gIFRoZSAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUKKyAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCisgICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKKyAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYGBHZW5lcmF0b3JgYC4KKworICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCisgICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKKyAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBhbHdheXMKKyAgICAgIGZvcm1hdCB0aGUgbWVzc2FnZSB0aGUgd2F5IHlvdSB3YW50LiAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQgaXQgZG9lcworICAgICAgbm90IGRvIHRoZSBtYW5nbGluZyBvZiBsaW5lcyB0aGF0IGJlZ2luIHdpdGggYGBGcm9tYGAgdGhhdCBpcworICAgICAgcmVxdWlyZWQgYnkgdGhlIHVuaXggbWJveCBmb3JtYXQuICBGb3IgbW9yZSBmbGV4aWJpbGl0eSwgaW5zdGFudGlhdGUgYQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKKyAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuICBGb3IgZXhhbXBsZTo6CisKKyAgICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yCisgICAgICAgICBmcCA9IFN0cmluZ0lPKCkKKyAgICAgICAgIGcgPSBHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NjApCisgICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICAgdGV4dCA9IGZwLmdldHZhbHVlKCkKKworICAgICAgSWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5zIGJpbmFyeSBkYXRhIHRoYXQgaXMgbm90IGVuY29kZWQgYWNjb3JkaW5nCisgICAgICB0byBSRkMgc3RhbmRhcmRzLCB0aGUgbm9uLWNvbXBsaWFudCBkYXRhIHdpbGwgYmUgcmVwbGFjZWQgYnkgdW5pY29kZQorICAgICAgInVua25vd24gY2hhcmFjdGVyIiBjb2RlIHBvaW50cy4gIChTZWUgYWxzbyA6bWV0aDpgLmFzX2J5dGVzYCBhbmQKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAuKQorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCB0aGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisKKworICAgLi4gbWV0aG9kOjogX19zdHJfXygpCisKKyAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19zdHJpbmcoKWAuICBBbGxvd3MgYGBzdHIobXNnKWBgIHRvIHByb2R1Y2UgYQorICAgICAgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgorCisKKyAgIC4uIG1ldGhvZDo6IGFzX2J5dGVzKHVuaXhmcm9tPUZhbHNlLCBwb2xpY3k9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBieXRlcyBvYmplY3QuICBXaGVuIG9wdGlvbmFsCisgICAgICAqdW5peGZyb20qIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkCisgICAgICBzdHJpbmcuICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIFRoZSAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUKKyAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCisgICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKKyAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUKKyAgICAgIGBgQnl0ZXNHZW5lcmF0b3JgYC4KKworICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCisgICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKKyAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBhbHdheXMKKyAgICAgIGZvcm1hdCB0aGUgbWVzc2FnZSB0aGUgd2F5IHlvdSB3YW50LiAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQgaXQgZG9lcworICAgICAgbm90IGRvIHRoZSBtYW5nbGluZyBvZiBsaW5lcyB0aGF0IGJlZ2luIHdpdGggYGBGcm9tYGAgdGhhdCBpcworICAgICAgcmVxdWlyZWQgYnkgdGhlIHVuaXggbWJveCBmb3JtYXQuICBGb3IgbW9yZSBmbGV4aWJpbGl0eSwgaW5zdGFudGlhdGUgYQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cworICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LgorICAgICAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCisgICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgQnl0ZXNHZW5lcmF0b3IKKyAgICAgICAgIGZwID0gQnl0ZXNJTygpCisgICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NjApCisgICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICAgdGV4dCA9IGZwLmdldHZhbHVlKCkKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKworICAgLi4gbWV0aG9kOjogX19ieXRlc19fKCkKKworICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX2J5dGVzKClgLiAgQWxsb3dzIGBgYnl0ZXMobXNnKWBgIHRvIHByb2R1Y2UgYQorICAgICAgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCisgICAuLiBtZXRob2Q6OiBpc19tdWx0aXBhcnQoKQorCisgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGlzIGEgbGlzdCBvZiBzdWItXAorICAgICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLCBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gIFdoZW4KKyAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybnMgYGBGYWxzZWBgLCB0aGUgcGF5bG9hZCBzaG91bGQgYmUgYSBzdHJpbmcKKyAgICAgIG9iamVjdCAod2hpY2ggbWlnaHQgYmUgYSBDVEUgZW5jb2RlZCBiaW5hcnkgcGF5bG9hZC4gIChOb3RlIHRoYXQKKyAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybmluZyBgYFRydWVgYCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQKKyAgICAgICJtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyIgd2lsbCByZXR1cm4gdGhlIGBgVHJ1ZWBgLgorICAgICAgRm9yIGV4YW1wbGUsIGBgaXNfbXVsdGlwYXJ0YGAgd2lsbCByZXR1cm4gYGBUcnVlYGAgd2hlbiB0aGUKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgaXMgb2YgdHlwZSBgYG1lc3NhZ2UvcmZjODIyYGAuKQorCisKKyAgIC4uIG1ldGhvZDo6IHNldF91bml4ZnJvbSh1bml4ZnJvbSkKKworICAgICAgU2V0IHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyIHRvICp1bml4ZnJvbSosIHdoaWNoIHNob3VsZCBiZSBhIHN0cmluZy4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfdW5peGZyb20oKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIuICBEZWZhdWx0cyB0byBgYE5vbmVgYCBpZiB0aGUKKyAgICAgIGVudmVsb3BlIGhlYWRlciB3YXMgbmV2ZXIgc2V0LgorCisKKyAgIC4uIG1ldGhvZDo6IGF0dGFjaChwYXlsb2FkKQorCisgICAgICBBZGQgdGhlIGdpdmVuICpwYXlsb2FkKiB0byB0aGUgY3VycmVudCBwYXlsb2FkLCB3aGljaCBtdXN0IGJlIGBgTm9uZWBgIG9yCisgICAgICBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGJlZm9yZSB0aGUgY2FsbC4gQWZ0ZXIgdGhlIGNhbGwsIHRoZQorICAgICAgcGF5bG9hZCB3aWxsIGFsd2F5cyBiZSBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLiAgSWYgeW91IHdhbnQgdG8KKyAgICAgIHNldCB0aGUgcGF5bG9hZCB0byBhIHNjYWxhciBvYmplY3QgKGUuZy4gYSBzdHJpbmcpLCB1c2UKKyAgICAgIDptZXRoOmBzZXRfcGF5bG9hZGAgaW5zdGVhZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBhbmQgdGhlCisgICAgICByZWFsdGVkIGBgbWFrZWBgIGFuZCBgYGFkZGBgIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BheWxvYWQoaT1Ob25lLCBkZWNvZGU9RmFsc2UpCisKKyAgICAgIFJldHVybiB0aGUgY3VycmVudCBwYXlsb2FkLCB3aGljaCB3aWxsIGJlIGEgbGlzdCBvZgorICAgICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIHdoZW4gOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBUcnVlYGAsIG9yIGEKKyAgICAgIHN0cmluZyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgRmFsc2VgYC4gIElmIHRoZSBwYXlsb2FkIGlzIGEgbGlzdAorICAgICAgYW5kIHlvdSBtdXRhdGUgdGhlIGxpc3Qgb2JqZWN0LCB5b3UgbW9kaWZ5IHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpbiBwbGFjZS4KKworICAgICAgV2l0aCBvcHRpb25hbCBhcmd1bWVudCAqaSosIDptZXRoOmBnZXRfcGF5bG9hZGAgd2lsbCByZXR1cm4gdGhlICppKi10aAorICAgICAgZWxlbWVudCBvZiB0aGUgcGF5bG9hZCwgY291bnRpbmcgZnJvbSB6ZXJvLCBpZiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcworICAgICAgYGBUcnVlYGAuICBBbiA6ZXhjOmBJbmRleEVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiAqaSogaXMgbGVzcyB0aGFuIDAgb3IKKyAgICAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBwYXlsb2FkLiAgSWYgdGhlCisgICAgICBwYXlsb2FkIGlzIGEgc3RyaW5nIChpLmUuICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGApIGFuZCAqaSogaXMKKyAgICAgIGdpdmVuLCBhIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAgICBPcHRpb25hbCAqZGVjb2RlKiBpcyBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBwYXlsb2FkIHNob3VsZCBiZQorICAgICAgZGVjb2RlZCBvciBub3QsIGFjY29yZGluZyB0byB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICBoZWFkZXIuIFdoZW4gYGBUcnVlYGAgYW5kIHRoZSBtZXNzYWdlIGlzIG5vdCBhIG11bHRpcGFydCwgdGhlIHBheWxvYWQgd2lsbAorICAgICAgYmUgZGVjb2RlZCBpZiB0aGlzIGhlYWRlcidzIHZhbHVlIGlzIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAuCisgICAgICBJZiBzb21lIG90aGVyIGVuY29kaW5nIGlzIHVzZWQsIG9yIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgaGVhZGVyIGlzIG1pc3NpbmcsIHRoZSBwYXlsb2FkIGlzCisgICAgICByZXR1cm5lZCBhcy1pcyAodW5kZWNvZGVkKS4gIEluIGFsbCBjYXNlcyB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgYmluYXJ5CisgICAgICBkYXRhLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBtdWx0aXBhcnQgYW5kIHRoZSAqZGVjb2RlKiBmbGFnIGlzIGBgVHJ1ZWBgLAorICAgICAgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZC4gIElmIHRoZSBwYXlsb2FkIGlzIGJhc2U2NCBhbmQgaXQgd2FzIG5vdAorICAgICAgcGVyZmVjdGx5IGZvcm1lZCAobWlzc2luZyBwYWRkaW5nLCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2U2NAorICAgICAgYWxwaGFiZXQpLCB0aGVuIGFuIGFwcHJvcHJpYXRlIGRlZmVjdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlJ3MKKyAgICAgIGRlZmVjdCBwcm9wZXJ0eSAoOmNsYXNzOmB+ZW1haWwuZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0YCBvcgorICAgICAgOmNsYXNzOmB+ZW1haWwuZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0YCwgcmVzcGVjdGl2ZWx5KS4KKworICAgICAgV2hlbiAqZGVjb2RlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSB0aGUgYm9keSBpcyByZXR1cm5lZCBhcyBhIHN0cmluZworICAgICAgd2l0aG91dCBkZWNvZGluZyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLiAgSG93ZXZlciwKKyAgICAgIGZvciBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0LCBhbiBhdHRlbXB0IGlzIG1hZGUKKyAgICAgIHRvIGRlY29kZSB0aGUgb3JpZ2luYWwgYnl0ZXMgdXNpbmcgdGhlIGBgY2hhcnNldGBgIHNwZWNpZmllZCBieSB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgdXNpbmcgdGhlIGBgcmVwbGFjZWBgIGVycm9yIGhhbmRsZXIuCisgICAgICBJZiBubyBgYGNoYXJzZXRgYCBpcyBzcGVjaWZpZWQsIG9yIGlmIHRoZSBgYGNoYXJzZXRgYCBnaXZlbiBpcyBub3QKKyAgICAgIHJlY29nbml6ZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHRoZSBib2R5IGlzIGRlY29kZWQgdXNpbmcgdGhlIGRlZmF1bHQKKyAgICAgIEFTQ0lJIGNoYXJzZXQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5nZXRfY29udGVudGAgYW5kCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9wYXlsb2FkKHBheWxvYWQsIGNoYXJzZXQ9Tm9uZSkKKworICAgICAgU2V0IHRoZSBlbnRpcmUgbWVzc2FnZSBvYmplY3QncyBwYXlsb2FkIHRvICpwYXlsb2FkKi4gIEl0IGlzIHRoZSBjbGllbnQncworICAgICAgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoZSBwYXlsb2FkIGludmFyaWFudHMuICBPcHRpb25hbCAqY2hhcnNldCogc2V0cworICAgICAgdGhlIG1lc3NhZ2UncyBkZWZhdWx0IGNoYXJhY3RlciBzZXQ7IHNlZSA6bWV0aDpgc2V0X2NoYXJzZXRgIGZvciBkZXRhaWxzLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9jaGFyc2V0KGNoYXJzZXQpCisKKyAgICAgIFNldCB0aGUgY2hhcmFjdGVyIHNldCBvZiB0aGUgcGF5bG9hZCB0byAqY2hhcnNldCosIHdoaWNoIGNhbiBlaXRoZXIgYmUgYQorICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSAoc2VlIDptb2Q6YGVtYWlsLmNoYXJzZXRgKSwgYQorICAgICAgc3RyaW5nIG5hbWluZyBhIGNoYXJhY3RlciBzZXQsIG9yIGBgTm9uZWBgLiAgSWYgaXQgaXMgYSBzdHJpbmcsIGl0IHdpbGwKKyAgICAgIGJlIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UuICBJZiAqY2hhcnNldCoKKyAgICAgIGlzIGBgTm9uZWBgLCB0aGUgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyICh0aGUgbWVzc2FnZSB3aWxsIG5vdCBiZSBvdGhlcndpc2UKKyAgICAgIG1vZGlmaWVkKS4gIEFueXRoaW5nIGVsc2Ugd2lsbCBnZW5lcmF0ZSBhIDpleGM6YFR5cGVFcnJvcmAuCisKKyAgICAgIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlciBvbmUgd2lsbCBiZQorICAgICAgYWRkZWQuICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG9uZQorICAgICAgd2lsbCBiZSBhZGRlZCB3aXRoIGEgdmFsdWUgb2YgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4gIFdoZXRoZXIgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYWxyZWFkeSBleGlzdHMgb3Igbm90LCBpdHMgYGBjaGFyc2V0YGAKKyAgICAgIHBhcmFtZXRlciB3aWxsIGJlIHNldCB0byAqY2hhcnNldC5vdXRwdXRfY2hhcnNldCouICAgSWYKKyAgICAgICpjaGFyc2V0LmlucHV0X2NoYXJzZXQqIGFuZCAqY2hhcnNldC5vdXRwdXRfY2hhcnNldCogZGlmZmVyLCB0aGUgcGF5bG9hZAorICAgICAgd2lsbCBiZSByZS1lbmNvZGVkIHRvIHRoZSAqb3V0cHV0X2NoYXJzZXQqLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIsIHRoZW4gdGhlIHBheWxvYWQgd2lsbCBiZQorICAgICAgdHJhbnNmZXItZW5jb2RlZCwgaWYgbmVlZGVkLCB1c2luZyB0aGUgc3BlY2lmaWVkCisgICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgLCBhbmQgYSBoZWFkZXIgd2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWUKKyAgICAgIHdpbGwgYmUgYWRkZWQuICBJZiBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIKKyAgICAgIGFscmVhZHkgZXhpc3RzLCB0aGUgcGF5bG9hZCBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgY29ycmVjdGx5IGVuY29kZWQKKyAgICAgIHVzaW5nIHRoYXQgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGFuZCBpcyBub3QgbW9kaWZpZWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgdGhlICpjaGFyc2V0KiBwYXJhbWV0ZXIgb2YgdGhlCisgICAgICA6bWV0aDpgZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jaGFyc2V0KCkKKworICAgICAgUmV0dXJuIHRoZSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAgIG1lc3NhZ2UncyBwYXlsb2FkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXQgYWx3YXlzIHJldHVybnMKKyAgICAgIGBgTm9uZWBgLgorCisKKyAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgYSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCisgICBtZXNzYWdlJ3MgOnJmYzpgMjgyMmAgaGVhZGVycy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzZW1hbnRpYyBkaWZmZXJlbmNlcworICAgYmV0d2VlbiB0aGVzZSBtZXRob2RzIGFuZCBhIG5vcm1hbCBtYXBwaW5nIChpLmUuIGRpY3Rpb25hcnkpIGludGVyZmFjZS4gIEZvcgorICAgZXhhbXBsZSwgaW4gYSBkaWN0aW9uYXJ5IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUga2V5cywgYnV0IGhlcmUgdGhlcmUgbWF5IGJlCisgICBkdXBsaWNhdGUgbWVzc2FnZSBoZWFkZXJzLiAgQWxzbywgaW4gZGljdGlvbmFyaWVzIHRoZXJlIGlzIG5vIGd1YXJhbnRlZWQKKyAgIG9yZGVyIHRvIHRoZSBrZXlzIHJldHVybmVkIGJ5IDptZXRoOmBrZXlzYCwgYnV0IGluIGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QsCisgICBoZWFkZXJzIGFyZSBhbHdheXMgcmV0dXJuZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlIG9yaWdpbmFsCisgICBtZXNzYWdlLCBvciB3ZXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlIGxhdGVyLiAgQW55IGhlYWRlciBkZWxldGVkIGFuZCB0aGVuCisgICByZS1hZGRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGhlYWRlciBsaXN0LgorCisgICBUaGVzZSBzZW1hbnRpYyBkaWZmZXJlbmNlcyBhcmUgaW50ZW50aW9uYWwgYW5kIGFyZSBiaWFzZWQgdG93YXJkIG1heGltYWwKKyAgIGNvbnZlbmllbmNlLgorCisgICBOb3RlIHRoYXQgaW4gYWxsIGNhc2VzLCBhbnkgZW52ZWxvcGUgaGVhZGVyIHByZXNlbnQgaW4gdGhlIG1lc3NhZ2UgaXMgbm90CisgICBpbmNsdWRlZCBpbiB0aGUgbWFwcGluZyBpbnRlcmZhY2UuCisKKyAgIEluIGEgbW9kZWwgZ2VuZXJhdGVkIGZyb20gYnl0ZXMsIGFueSBoZWFkZXIgdmFsdWVzIHRoYXQgKGluIGNvbnRyYXZlbnRpb24gb2YKKyAgIHRoZSBSRkNzKSBjb250YWluIG5vbi1BU0NJSSBieXRlcyB3aWxsLCB3aGVuIHJldHJpZXZlZCB0aHJvdWdoIHRoaXMKKyAgIGludGVyZmFjZSwgYmUgcmVwcmVzZW50ZWQgYXMgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0cyB3aXRoCisgICBhIGNoYXJzZXQgb2YgYHVua25vd24tOGJpdGAuCisKKworICAgLi4gbWV0aG9kOjogX19sZW5fXygpCisKKyAgICAgIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGhlYWRlcnMsIGluY2x1ZGluZyBkdXBsaWNhdGVzLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fY29udGFpbnNfXyhuYW1lKQorCisgICAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgbWVzc2FnZSBvYmplY3QgaGFzIGEgZmllbGQgbmFtZWQgKm5hbWUqLiBNYXRjaGluZyBpcworICAgICAgZG9uZSBjYXNlLWluc2Vuc2l0aXZlbHkgYW5kICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlIHRyYWlsaW5nIGNvbG9uLgorICAgICAgVXNlZCBmb3IgdGhlIGBgaW5gYCBvcGVyYXRvciwgZS5nLjo6CisKKyAgICAgICAgICAgaWYgJ21lc3NhZ2UtaWQnIGluIG15TWVzc2FnZToKKyAgICAgICAgICAgICAgcHJpbnQoJ01lc3NhZ2UtSUQ6JywgbXlNZXNzYWdlWydtZXNzYWdlLWlkJ10pCisKKworICAgLi4gbWV0aG9kOjogX19nZXRpdGVtX18obmFtZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgKm5hbWUqIHNob3VsZCBub3QgaW5jbHVkZSB0aGUKKyAgICAgIGNvbG9uIGZpZWxkIHNlcGFyYXRvci4gIElmIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgYGBOb25lYGAgaXMgcmV0dXJuZWQ7IGEKKyAgICAgIDpleGM6YEtleUVycm9yYCBpcyBuZXZlciByYWlzZWQuCisKKyAgICAgIE5vdGUgdGhhdCBpZiB0aGUgbmFtZWQgZmllbGQgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiB0aGUgbWVzc2FnZSdzCisgICAgICBoZWFkZXJzLCBleGFjdGx5IHdoaWNoIG9mIHRob3NlIGZpZWxkIHZhbHVlcyB3aWxsIGJlIHJldHVybmVkIGlzCisgICAgICB1bmRlZmluZWQuICBVc2UgdGhlIDptZXRoOmBnZXRfYWxsYCBtZXRob2QgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgYWxsIHRoZQorICAgICAgZXh0YW50IG5hbWVkIGhlYWRlcnMuCisKKworICAgLi4gbWV0aG9kOjogX19zZXRpdGVtX18obmFtZSwgdmFsKQorCisgICAgICBBZGQgYSBoZWFkZXIgdG8gdGhlIG1lc3NhZ2Ugd2l0aCBmaWVsZCBuYW1lICpuYW1lKiBhbmQgdmFsdWUgKnZhbCouICBUaGUKKyAgICAgIGZpZWxkIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UncyBleGlzdGluZyBmaWVsZHMuCisKKyAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgKm5vdCogb3ZlcndyaXRlIG9yIGRlbGV0ZSBhbnkgZXhpc3RpbmcgaGVhZGVyIHdpdGggdGhlIHNhbWUKKyAgICAgIG5hbWUuICBJZiB5b3Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IGhlYWRlciBpcyB0aGUgb25seSBvbmUgcHJlc2VudCBpbiB0aGUKKyAgICAgIG1lc3NhZ2Ugd2l0aCBmaWVsZCBuYW1lICpuYW1lKiwgZGVsZXRlIHRoZSBmaWVsZCBmaXJzdCwgZS5nLjo6CisKKyAgICAgICAgIGRlbCBtc2dbJ3N1YmplY3QnXQorICAgICAgICAgbXNnWydzdWJqZWN0J10gPSAnUHl0aG9uIHJvb2x6IScKKworCisgICAuLiBtZXRob2Q6OiBfX2RlbGl0ZW1fXyhuYW1lKQorCisgICAgICBEZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBmaWVsZCB3aXRoIG5hbWUgKm5hbWUqIGZyb20gdGhlIG1lc3NhZ2UncworICAgICAgaGVhZGVycy4gIE5vIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgdGhlIG5hbWVkIGZpZWxkIGlzbid0IHByZXNlbnQgaW4gdGhlCisgICAgICBoZWFkZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IGtleXMoKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgbWVzc2FnZSdzIGhlYWRlciBmaWVsZCBuYW1lcy4KKworCisgICAuLiBtZXRob2Q6OiB2YWx1ZXMoKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgbWVzc2FnZSdzIGZpZWxkIHZhbHVlcy4KKworCisgICAuLiBtZXRob2Q6OiBpdGVtcygpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgMi10dXBsZXMgY29udGFpbmluZyBhbGwgdGhlIG1lc3NhZ2UncyBmaWVsZCBoZWFkZXJzIGFuZAorICAgICAgdmFsdWVzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldChuYW1lLCBmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gIFRoaXMgaXMgaWRlbnRpY2FsIHRvCisgICAgICA6bWV0aDpgX19nZXRpdGVtX19gIGV4Y2VwdCB0aGF0IG9wdGlvbmFsICpmYWlsb2JqKiBpcyByZXR1cm5lZCBpZiB0aGUKKyAgICAgIG5hbWVkIGhlYWRlciBpcyBtaXNzaW5nIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisKKyAgIEhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCB1c2VmdWwgbWV0aG9kczoKKworCisgICAuLiBtZXRob2Q6OiBnZXRfYWxsKG5hbWUsIGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIHZhbHVlcyBmb3IgdGhlIGZpZWxkIG5hbWVkICpuYW1lKi4gSWYgdGhlcmUgYXJlCisgICAgICBubyBzdWNoIG5hbWVkIGhlYWRlcnMgaW4gdGhlIG1lc3NhZ2UsICpmYWlsb2JqKiBpcyByZXR1cm5lZCAoZGVmYXVsdHMgdG8KKyAgICAgIGBgTm9uZWBgKS4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfaGVhZGVyKF9uYW1lLCBfdmFsdWUsICoqX3BhcmFtcykKKworICAgICAgRXh0ZW5kZWQgaGVhZGVyIHNldHRpbmcuICBUaGlzIG1ldGhvZCBpcyBzaW1pbGFyIHRvIDptZXRoOmBfX3NldGl0ZW1fX2AKKyAgICAgIGV4Y2VwdCB0aGF0IGFkZGl0aW9uYWwgaGVhZGVyIHBhcmFtZXRlcnMgY2FuIGJlIHByb3ZpZGVkIGFzIGtleXdvcmQKKyAgICAgIGFyZ3VtZW50cy4gICpfbmFtZSogaXMgdGhlIGhlYWRlciBmaWVsZCB0byBhZGQgYW5kICpfdmFsdWUqIGlzIHRoZQorICAgICAgKnByaW1hcnkqIHZhbHVlIGZvciB0aGUgaGVhZGVyLgorCisgICAgICBGb3IgZWFjaCBpdGVtIGluIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGRpY3Rpb25hcnkgKl9wYXJhbXMqLCB0aGUga2V5IGlzCisgICAgICB0YWtlbiBhcyB0aGUgcGFyYW1ldGVyIG5hbWUsIHdpdGggdW5kZXJzY29yZXMgY29udmVydGVkIHRvIGRhc2hlcyAoc2luY2UKKyAgICAgIGRhc2hlcyBhcmUgaWxsZWdhbCBpbiBQeXRob24gaWRlbnRpZmllcnMpLiAgTm9ybWFsbHksIHRoZSBwYXJhbWV0ZXIgd2lsbAorICAgICAgYmUgYWRkZWQgYXMgYGBrZXk9InZhbHVlImBgIHVubGVzcyB0aGUgdmFsdWUgaXMgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UKKyAgICAgIG9ubHkgdGhlIGtleSB3aWxsIGJlIGFkZGVkLiAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAorICAgICAgaXQgY2FuIGJlIHNwZWNpZmllZCBhcyBhIHRocmVlIHR1cGxlIGluIHRoZSBmb3JtYXQKKyAgICAgIGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYCwgd2hlcmUgYGBDSEFSU0VUYGAgaXMgYSBzdHJpbmcgbmFtaW5nIHRoZQorICAgICAgY2hhcnNldCB0byBiZSB1c2VkIHRvIGVuY29kZSB0aGUgdmFsdWUsIGBgTEFOR1VBR0VgYCBjYW4gdXN1YWxseSBiZSBzZXQKKyAgICAgIHRvIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSA6cmZjOmAyMjMxYCBmb3Igb3RoZXIgcG9zc2liaWxpdGllcyksCisgICAgICBhbmQgYGBWQUxVRWBgIGlzIHRoZSBzdHJpbmcgdmFsdWUgY29udGFpbmluZyBub24tQVNDSUkgY29kZSBwb2ludHMuICBJZgorICAgICAgYSB0aHJlZSB0dXBsZSBpcyBub3QgcGFzc2VkIGFuZCB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsCisgICAgICBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuY29kZWQgaW4gOnJmYzpgMjIzMWAgZm9ybWF0IHVzaW5nIGEgYGBDSEFSU0VUYGAKKyAgICAgIG9mIGBgdXRmLThgYCBhbmQgYSBgYExBTkdVQUdFYGAgb2YgYGBOb25lYGAuCisKKyAgICAgIEhlcmUncyBhbiBleGFtcGxlOjoKKworICAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsIGZpbGVuYW1lPSdidWQuZ2lmJykKKworICAgICAgVGhpcyB3aWxsIGFkZCBhIGhlYWRlciB0aGF0IGxvb2tzIGxpa2UgOjoKKworICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ImJ1ZC5naWYiCisKKyAgICAgIEFuIGV4YW1wbGUgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVyczo6CisKKyAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9KCdpc28tODg1OS0xJywgJycsICdGdcOfYmFsbGVyLnBwdCcpKQorCisgICAgICBXaGljaCBwcm9kdWNlcyA6OgorCisgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZSo9Imlzby04ODU5LTEnJ0Z1JURGYmFsbGVyLnBwdCIKKworCisgICAuLiBtZXRob2Q6OiByZXBsYWNlX2hlYWRlcihfbmFtZSwgX3ZhbHVlKQorCisgICAgICBSZXBsYWNlIGEgaGVhZGVyLiAgUmVwbGFjZSB0aGUgZmlyc3QgaGVhZGVyIGZvdW5kIGluIHRoZSBtZXNzYWdlIHRoYXQKKyAgICAgIG1hdGNoZXMgKl9uYW1lKiwgcmV0YWluaW5nIGhlYWRlciBvcmRlciBhbmQgZmllbGQgbmFtZSBjYXNlLiAgSWYgbm8KKyAgICAgIG1hdGNoaW5nIGhlYWRlciB3YXMgZm91bmQsIGEgOmV4YzpgS2V5RXJyb3JgIGlzIHJhaXNlZC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF90eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgY29udGVudCB0eXBlLiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBjb2VyY2VkIHRvCisgICAgICBsb3dlciBjYXNlIG9mIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAuICBJZiB0aGVyZSB3YXMgbm8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbWVzc2FnZSB0aGUgZGVmYXVsdCB0eXBlIGFzIGdpdmVuCisgICAgICBieSA6bWV0aDpgZ2V0X2RlZmF1bHRfdHlwZWAgd2lsbCBiZSByZXR1cm5lZC4gIFNpbmNlIGFjY29yZGluZyB0bworICAgICAgOnJmYzpgMjA0NWAsIG1lc3NhZ2VzIGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB0eXBlLCA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAKKyAgICAgIHdpbGwgYWx3YXlzIHJldHVybiBhIHZhbHVlLgorCisgICAgICA6cmZjOmAyMDQ1YCBkZWZpbmVzIGEgbWVzc2FnZSdzIGRlZmF1bHQgdHlwZSB0byBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gCisgICAgICB1bmxlc3MgaXQgYXBwZWFycyBpbnNpZGUgYSA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lciwgaW4KKyAgICAgIHdoaWNoIGNhc2UgaXQgd291bGQgYmUgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuICBJZiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBoYXMgYW4gaW52YWxpZCB0eXBlIHNwZWNpZmljYXRpb24sCisgICAgICA6cmZjOmAyMDQ1YCBtYW5kYXRlcyB0aGF0IHRoZSBkZWZhdWx0IHR5cGUgYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9tYWludHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIG1haW4gY29udGVudCB0eXBlLiAgVGhpcyBpcyB0aGUgOm1pbWV0eXBlOmBtYWludHlwZWAKKyAgICAgIHBhcnQgb2YgdGhlIHN0cmluZyByZXR1cm5lZCBieSA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfc3VidHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIHN1Yi1jb250ZW50IHR5cGUuICBUaGlzIGlzIHRoZSA6bWltZXR5cGU6YHN1YnR5cGVgCisgICAgICBwYXJ0IG9mIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9kZWZhdWx0X3R5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIGRlZmF1bHQgY29udGVudCB0eXBlLiAgTW9zdCBtZXNzYWdlcyBoYXZlIGEgZGVmYXVsdCBjb250ZW50CisgICAgICB0eXBlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAsIGV4Y2VwdCBmb3IgbWVzc2FnZXMgdGhhdCBhcmUgc3VicGFydHMgb2YKKyAgICAgIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2RpZ2VzdGAgY29udGFpbmVycy4gIFN1Y2ggc3VicGFydHMgaGF2ZSBhIGRlZmF1bHQKKyAgICAgIGNvbnRlbnQgdHlwZSBvZiA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfZGVmYXVsdF90eXBlKGN0eXBlKQorCisgICAgICBTZXQgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlLiAgKmN0eXBlKiBzaG91bGQgZWl0aGVyIGJlCisgICAgICA6bWltZXR5cGU6YHRleHQvcGxhaW5gIG9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLCBhbHRob3VnaCB0aGlzIGlzIG5vdAorICAgICAgZW5mb3JjZWQuICBUaGUgZGVmYXVsdCBjb250ZW50IHR5cGUgaXMgbm90IHN0b3JlZCBpbiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfcGFyYW1zKGZhaWxvYmo9Tm9uZSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCB1bnF1b3RlPVRydWUpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIHBhcmFtZXRlcnMsIGFzIGEgbGlzdC4KKyAgICAgIFRoZSBlbGVtZW50cyBvZiB0aGUgcmV0dXJuZWQgbGlzdCBhcmUgMi10dXBsZXMgb2Yga2V5L3ZhbHVlIHBhaXJzLCBhcworICAgICAgc3BsaXQgb24gdGhlIGBgJz0nYGAgc2lnbi4gIFRoZSBsZWZ0IGhhbmQgc2lkZSBvZiB0aGUgYGAnPSdgYCBpcyB0aGUga2V5LAorICAgICAgd2hpbGUgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyB0aGUgdmFsdWUuICBJZiB0aGVyZSBpcyBubyBgYCc9J2BgIHNpZ24gaW4KKyAgICAgIHRoZSBwYXJhbWV0ZXIgdGhlIHZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIG90aGVyd2lzZSB0aGUgdmFsdWUgaXMgYXMKKyAgICAgIGRlc2NyaWJlZCBpbiA6bWV0aDpgZ2V0X3BhcmFtYCBhbmQgaXMgdW5xdW90ZWQgaWYgb3B0aW9uYWwgKnVucXVvdGUqIGlzCisgICAgICBgYFRydWVgYCAodGhlIGRlZmF1bHQpLgorCisgICAgICBPcHRpb25hbCAqZmFpbG9iaiogaXMgdGhlIG9iamVjdCB0byByZXR1cm4gaWYgdGhlcmUgaXMgbm8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIE9wdGlvbmFsICpoZWFkZXIqIGlzIHRoZSBoZWFkZXIgdG8KKyAgICAgIHNlYXJjaCBpbnN0ZWFkIG9mIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqcGFyYW1zKiBwcm9wZXJ0eSBvZiB0aGUgaW5kaXZpZHVhbCBoZWFkZXIgb2JqZWN0cworICAgICAgcmV0dXJuZWQgYnkgdGhlIGhlYWRlciBhY2Nlc3MgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfcGFyYW0ocGFyYW0sIGZhaWxvYmo9Tm9uZSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCB1bnF1b3RlPVRydWUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcidzIHBhcmFtZXRlcgorICAgICAgKnBhcmFtKiBhcyBhIHN0cmluZy4gIElmIHRoZSBtZXNzYWdlIGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyIG9yIGlmIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyLCB0aGVuICpmYWlsb2JqKiBpcyByZXR1cm5lZAorICAgICAgKGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KKworICAgICAgT3B0aW9uYWwgKmhlYWRlciogaWYgZ2l2ZW4sIHNwZWNpZmllcyB0aGUgbWVzc2FnZSBoZWFkZXIgdG8gdXNlIGluc3RlYWQgb2YKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgorCisgICAgICBQYXJhbWV0ZXIga2V5cyBhcmUgYWx3YXlzIGNvbXBhcmVkIGNhc2UgaW5zZW5zaXRpdmVseS4gIFRoZSByZXR1cm4gdmFsdWUKKyAgICAgIGNhbiBlaXRoZXIgYmUgYSBzdHJpbmcsIG9yIGEgMy10dXBsZSBpZiB0aGUgcGFyYW1ldGVyIHdhcyA6cmZjOmAyMjMxYAorICAgICAgZW5jb2RlZC4gIFdoZW4gaXQncyBhIDMtdHVwbGUsIHRoZSBlbGVtZW50cyBvZiB0aGUgdmFsdWUgYXJlIG9mIHRoZSBmb3JtCisgICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAuICBOb3RlIHRoYXQgYm90aCBgYENIQVJTRVRgYCBhbmQKKyAgICAgIGBgTEFOR1VBR0VgYCBjYW4gYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UgeW91IHNob3VsZCBjb25zaWRlciBgYFZBTFVFYGAKKyAgICAgIHRvIGJlIGVuY29kZWQgaW4gdGhlIGBgdXMtYXNjaWlgYCBjaGFyc2V0LiAgWW91IGNhbiB1c3VhbGx5IGlnbm9yZQorICAgICAgYGBMQU5HVUFHRWBgLgorCisgICAgICBJZiB5b3VyIGFwcGxpY2F0aW9uIGRvZXNuJ3QgY2FyZSB3aGV0aGVyIHRoZSBwYXJhbWV0ZXIgd2FzIGVuY29kZWQgYXMgaW4KKyAgICAgIDpyZmM6YDIyMzFgLCB5b3UgY2FuIGNvbGxhcHNlIHRoZSBwYXJhbWV0ZXIgdmFsdWUgYnkgY2FsbGluZworICAgICAgOmZ1bmM6YGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWVgLCBwYXNzaW5nIGluIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgIGZyb20gOm1ldGg6YGdldF9wYXJhbWAuICBUaGlzIHdpbGwgcmV0dXJuIGEgc3VpdGFibHkgZGVjb2RlZCBVbmljb2RlCisgICAgICBzdHJpbmcgd2hlbiB0aGUgdmFsdWUgaXMgYSB0dXBsZSwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyB1bnF1b3RlZCBpZiBpdAorICAgICAgaXNuJ3QuICBGb3IgZXhhbXBsZTo6CisKKyAgICAgICAgIHJhd3BhcmFtID0gbXNnLmdldF9wYXJhbSgnZm9vJykKKyAgICAgICAgIHBhcmFtID0gZW1haWwudXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZShyYXdwYXJhbSkKKworICAgICAgSW4gYW55IGNhc2UsIHRoZSBwYXJhbWV0ZXIgdmFsdWUgKGVpdGhlciB0aGUgcmV0dXJuZWQgc3RyaW5nLCBvciB0aGUKKyAgICAgIGBgVkFMVUVgYCBpdGVtIGluIHRoZSAzLXR1cGxlKSBpcyBhbHdheXMgdW5xdW90ZWQsIHVubGVzcyAqdW5xdW90ZSogaXMgc2V0CisgICAgICB0byBgYEZhbHNlYGAuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgdGhlICpwYXJhbXMqIHByb3BlcnR5IG9mIHRoZSBpbmRpdmlkdWFsIGhlYWRlciBvYmplY3RzCisgICAgICByZXR1cm5lZCBieSB0aGUgaGVhZGVyIGFjY2VzcyBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9wYXJhbShwYXJhbSwgdmFsdWUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD1Ob25lLCBsYW5ndWFnZT0nJywgcmVwbGFjZT1GYWxzZSkKKworICAgICAgU2V0IGEgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBJZiB0aGUKKyAgICAgIHBhcmFtZXRlciBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaGVhZGVyLCBpdHMgdmFsdWUgd2lsbCBiZSByZXBsYWNlZCB3aXRoCisgICAgICAqdmFsdWUqLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhcyBub3QgeWV0IGJlZW4gZGVmaW5lZAorICAgICAgZm9yIHRoaXMgbWVzc2FnZSwgaXQgd2lsbCBiZSBzZXQgdG8gOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBhbmQgdGhlIG5ldworICAgICAgcGFyYW1ldGVyIHZhbHVlIHdpbGwgYmUgYXBwZW5kZWQgYXMgcGVyIDpyZmM6YDIwNDVgLgorCisgICAgICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgaGVhZGVyIHRvCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCwgYW5kIGFsbCBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeQorICAgICAgdW5sZXNzIG9wdGlvbmFsICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4KKworICAgICAgSWYgb3B0aW9uYWwgKmNoYXJzZXQqIGlzIHNwZWNpZmllZCwgdGhlIHBhcmFtZXRlciB3aWxsIGJlIGVuY29kZWQKKyAgICAgIGFjY29yZGluZyB0byA6cmZjOmAyMjMxYC4gT3B0aW9uYWwgKmxhbmd1YWdlKiBzcGVjaWZpZXMgdGhlIFJGQyAyMjMxCisgICAgICBsYW5ndWFnZSwgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgc3RyaW5nLiAgQm90aCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSoKKyAgICAgIHNob3VsZCBiZSBzdHJpbmdzLgorCisgICAgICBJZiAqcmVwbGFjZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGhlYWRlciBpcyBtb3ZlZCB0byB0aGUKKyAgICAgIGVuZCBvZiB0aGUgbGlzdCBvZiBoZWFkZXJzLiAgSWYgKnJlcGxhY2UqIGlzIGBgVHJ1ZWBgLCB0aGUgaGVhZGVyCisgICAgICB3aWxsIGJlIHVwZGF0ZWQgaW4gcGxhY2UuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IGBgcmVwbGFjZWBgIGtleXdvcmQgd2FzIGFkZGVkLgorCisKKyAgIC4uIG1ldGhvZDo6IGRlbF9wYXJhbShwYXJhbSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCByZXF1b3RlPVRydWUpCisKKyAgICAgIFJlbW92ZSB0aGUgZ2l2ZW4gcGFyYW1ldGVyIGNvbXBsZXRlbHkgZnJvbSB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlci4gIFRoZSBoZWFkZXIgd2lsbCBiZSByZS13cml0dGVuIGluIHBsYWNlIHdpdGhvdXQgdGhlIHBhcmFtZXRlciBvcgorICAgICAgaXRzIHZhbHVlLiAgQWxsIHZhbHVlcyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkgdW5sZXNzICpyZXF1b3RlKiBpcworICAgICAgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4KKyAgICAgIGFsdGVybmF0aXZlIHRvIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF90eXBlKHR5cGUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlKQorCisgICAgICBTZXQgdGhlIG1haW4gdHlwZSBhbmQgc3VidHlwZSBmb3IgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIuICp0eXBlKiBtdXN0IGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAsCisgICAgICBvdGhlcndpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisKKyAgICAgIFRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIGtlZXBpbmcgYWxsCisgICAgICB0aGUgcGFyYW1ldGVycyBpbiBwbGFjZS4gIElmICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAsIHRoaXMgbGVhdmVzIHRoZQorICAgICAgZXhpc3RpbmcgaGVhZGVyJ3MgcXVvdGluZyBhcyBpcywgb3RoZXJ3aXNlIHRoZSBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkCisgICAgICAodGhlIGRlZmF1bHQpLgorCisgICAgICBBbiBhbHRlcm5hdGl2ZSBoZWFkZXIgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgKmhlYWRlciogYXJndW1lbnQuIFdoZW4gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgc2V0IGEgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAKKyAgICAgIGhlYWRlciBpcyBhbHNvIGFkZGVkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSBgYG1ha2VfYGAgYW5kIGBgYWRkX2BgIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYGBmaWxlbmFtZWBgIHBhcmFtZXRlciBvZiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIgb2YgdGhlIG1lc3NhZ2UuICBJZiB0aGUgaGVhZGVyCisgICAgICBkb2VzIG5vdCBoYXZlIGEgYGBmaWxlbmFtZWBgIHBhcmFtZXRlciwgdGhpcyBtZXRob2QgZmFsbHMgYmFjayB0byBsb29raW5nCisgICAgICBmb3IgdGhlIGBgbmFtZWBgIHBhcmFtZXRlciBvbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgSWYKKyAgICAgIG5laXRoZXIgaXMgZm91bmQsIG9yIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgdGhlbiAqZmFpbG9iaiogaXMgcmV0dXJuZWQuCisgICAgICBUaGUgcmV0dXJuZWQgc3RyaW5nIHdpbGwgYWx3YXlzIGJlIHVucXVvdGVkIGFzIHBlcgorICAgICAgOmZ1bmM6YGVtYWlsLnV0aWxzLnVucXVvdGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9ib3VuZGFyeShmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGBgYm91bmRhcnlgYCBwYXJhbWV0ZXIgb2YgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgb2YgdGhlIG1lc3NhZ2UsIG9yICpmYWlsb2JqKiBpZiBlaXRoZXIKKyAgICAgIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgb3IgaGFzIG5vIGBgYm91bmRhcnlgYCBwYXJhbWV0ZXIuICBUaGUgcmV0dXJuZWQKKyAgICAgIHN0cmluZyB3aWxsIGFsd2F5cyBiZSB1bnF1b3RlZCBhcyBwZXIgOmZ1bmM6YGVtYWlsLnV0aWxzLnVucXVvdGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9ib3VuZGFyeShib3VuZGFyeSkKKworICAgICAgU2V0IHRoZSBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgdG8KKyAgICAgICpib3VuZGFyeSouICA6bWV0aDpgc2V0X2JvdW5kYXJ5YCB3aWxsIGFsd2F5cyBxdW90ZSAqYm91bmRhcnkqIGlmCisgICAgICBuZWNlc3NhcnkuICBBIDpleGM6YH5lbWFpbC5lcnJvcnMuSGVhZGVyUGFyc2VFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQorICAgICAgbWVzc2FnZSBvYmplY3QgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KKworICAgICAgTm90ZSB0aGF0IHVzaW5nIHRoaXMgbWV0aG9kIGlzIHN1YnRseSBkaWZmZXJlbnQgdGhhbiBkZWxldGluZyB0aGUgb2xkCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYW5kIGFkZGluZyBhIG5ldyBvbmUgd2l0aCB0aGUgbmV3CisgICAgICBib3VuZGFyeSB2aWEgOm1ldGg6YGFkZF9oZWFkZXJgLCBiZWNhdXNlIDptZXRoOmBzZXRfYm91bmRhcnlgIHByZXNlcnZlcworICAgICAgdGhlIG9yZGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIGxpc3Qgb2YKKyAgICAgIGhlYWRlcnMuIEhvd2V2ZXIsIGl0IGRvZXMgKm5vdCogcHJlc2VydmUgYW55IGNvbnRpbnVhdGlvbiBsaW5lcyB3aGljaCBtYXkKKyAgICAgIGhhdmUgYmVlbiBwcmVzZW50IGluIHRoZSBvcmlnaW5hbCA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfY2hhcnNldChmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsCisgICAgICBjb2VyY2VkIHRvIGxvd2VyIGNhc2UuICBJZiB0aGVyZSBpcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG9yIGlmCisgICAgICB0aGF0IGhlYWRlciBoYXMgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCAqZmFpbG9iaiogaXMgcmV0dXJuZWQuCisKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gOm1ldGg6YGdldF9jaGFyc2V0YCB3aGljaCByZXR1cm5zIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBmb3IgdGhlIGRlZmF1bHQgZW5jb2Rpbmcgb2YgdGhlIG1lc3NhZ2UgYm9keS4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldHMoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlciBzZXQgbmFtZXMgaW4gdGhlIG1lc3NhZ2UuICBJZiB0aGUKKyAgICAgIG1lc3NhZ2UgaXMgYSA6bWltZXR5cGU6YG11bHRpcGFydGAsIHRoZW4gdGhlIGxpc3Qgd2lsbCBjb250YWluIG9uZSBlbGVtZW50CisgICAgICBmb3IgZWFjaCBzdWJwYXJ0IGluIHRoZSBwYXlsb2FkLCBvdGhlcndpc2UsIGl0IHdpbGwgYmUgYSBsaXN0IG9mIGxlbmd0aCAxLgorCisgICAgICBFYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgd2lsbCBiZSBhIHN0cmluZyB3aGljaCBpcyB0aGUgdmFsdWUgb2YgdGhlCisgICAgICBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgaW4gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBmb3IgdGhlCisgICAgICByZXByZXNlbnRlZCBzdWJwYXJ0LiAgSG93ZXZlciwgaWYgdGhlIHN1YnBhcnQgaGFzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgb3IgaXMgbm90IG9mCisgICAgICB0aGUgOm1pbWV0eXBlOmB0ZXh0YCBtYWluIE1JTUUgdHlwZSwgdGhlbiB0aGF0IGl0ZW0gaW4gdGhlIHJldHVybmVkIGxpc3QKKyAgICAgIHdpbGwgYmUgKmZhaWxvYmoqLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCkKKworICAgICAgUmV0dXJuIHRoZSBsb3dlcmNhc2VkIHZhbHVlICh3aXRob3V0IHBhcmFtZXRlcnMpIG9mIHRoZSBtZXNzYWdlJ3MKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIgaWYgaXQgaGFzIG9uZSwgb3IgYGBOb25lYGAuICBUaGUKKyAgICAgIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhpcyBtZXRob2QgYXJlICppbmxpbmUqLCAqYXR0YWNobWVudCogb3IgYGBOb25lYGAKKyAgICAgIGlmIHRoZSBtZXNzYWdlIGZvbGxvd3MgOnJmYzpgMjE4M2AuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisgICAuLiBtZXRob2Q6OiB3YWxrKCkKKworICAgICAgVGhlIDptZXRoOmB3YWxrYCBtZXRob2QgaXMgYW4gYWxsLXB1cnBvc2UgZ2VuZXJhdG9yIHdoaWNoIGNhbiBiZSB1c2VkIHRvCisgICAgICBpdGVyYXRlIG92ZXIgYWxsIHRoZSBwYXJ0cyBhbmQgc3VicGFydHMgb2YgYSBtZXNzYWdlIG9iamVjdCB0cmVlLCBpbgorICAgICAgZGVwdGgtZmlyc3QgdHJhdmVyc2FsIG9yZGVyLiAgWW91IHdpbGwgdHlwaWNhbGx5IHVzZSA6bWV0aDpgd2Fsa2AgYXMgdGhlCisgICAgICBpdGVyYXRvciBpbiBhIGBgZm9yYGAgbG9vcDsgZWFjaCBpdGVyYXRpb24gcmV0dXJucyB0aGUgbmV4dCBzdWJwYXJ0LgorCisgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSB0aGF0IHByaW50cyB0aGUgTUlNRSB0eXBlIG9mIGV2ZXJ5IHBhcnQgb2YgYSBtdWx0aXBhcnQKKyAgICAgIG1lc3NhZ2Ugc3RydWN0dXJlOgorCisgICAgICAuLiB0ZXN0c2V0dXA6OgorCisgICAgICAgICA+Pj4gZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlCisgICAgICAgICA+Pj4gd2l0aCBvcGVuKCdMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dCcsICdyYicpIGFzIGY6CisgICAgICAgICAuLi4gICAgIG1zZyA9IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmKQorICAgICAgICAgPj4+IGZyb20gZW1haWwuaXRlcmF0b3JzIGltcG9ydCBfc3RydWN0dXJlCisKKyAgICAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICAgICA+Pj4gZm9yIHBhcnQgaW4gbXNnLndhbGsoKToKKyAgICAgICAgIC4uLiAgICAgcHJpbnQocGFydC5nZXRfY29udGVudF90eXBlKCkpCisgICAgICAgICBtdWx0aXBhcnQvcmVwb3J0CisgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICBtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1cworICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9yZmM4MjIKKyAgICAgICAgIHRleHQvcGxhaW4KKworICAgICAgYGB3YWxrYGAgaXRlcmF0ZXMgb3ZlciB0aGUgc3VicGFydHMgb2YgYW55IHBhcnQgd2hlcmUKKyAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybnMgYGBUcnVlYGAsIGV2ZW4gdGhvdWdoCisgICAgICBgYG1zZy5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnYGAgbWF5IHJldHVybiBgYEZhbHNlYGAuICBXZQorICAgICAgY2FuIHNlZSB0aGlzIGluIG91ciBleGFtcGxlIGJ5IG1ha2luZyB1c2Ugb2YgdGhlIGBgX3N0cnVjdHVyZWBgIGRlYnVnCisgICAgICBoZWxwZXIgZnVuY3Rpb246CisKKyAgICAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICAgICA+Pj4gZm9yIHBhcnQgaW4gbXNnLndhbGsoKToKKyAgICAgICAgIC4uLiAgICAgcHJpbnQocGFydC5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnKSwKKyAgICAgICAgIC4uLiAgICAgICAgICAgcGFydC5pc19tdWx0aXBhcnQoKSkKKyAgICAgICAgIFRydWUgVHJ1ZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgIEZhbHNlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgRmFsc2UgVHJ1ZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgID4+PiBfc3RydWN0dXJlKG1zZykKKyAgICAgICAgIG11bHRpcGFydC9yZXBvcnQKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICBtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1cworICAgICAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICBtZXNzYWdlL3JmYzgyMgorICAgICAgICAgICAgIHRleHQvcGxhaW4KKworICAgICAgSGVyZSB0aGUgYGBtZXNzYWdlYGAgcGFydHMgYXJlIG5vdCBgYG11bHRpcGFydHNgYCwgYnV0IHRoZXkgZG8gY29udGFpbgorICAgICAgc3VicGFydHMuIGBgaXNfbXVsdGlwYXJ0KClgYCByZXR1cm5zIGBgVHJ1ZWBgIGFuZCBgYHdhbGtgYCBkZXNjZW5kcworICAgICAgaW50byB0aGUgc3VicGFydHMuCisKKworICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGNhbiBhbHNvIG9wdGlvbmFsbHkgY29udGFpbiB0d28gaW5zdGFuY2UgYXR0cmlidXRlcywKKyAgIHdoaWNoIGNhbiBiZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyB0aGUgcGxhaW4gdGV4dCBvZiBhIE1JTUUgbWVzc2FnZS4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBwcmVhbWJsZQorCisgICAgICBUaGUgZm9ybWF0IG9mIGEgTUlNRSBkb2N1bWVudCBhbGxvd3MgZm9yIHNvbWUgdGV4dCBiZXR3ZWVuIHRoZSBibGFuayBsaW5lCisgICAgICBmb2xsb3dpbmcgdGhlIGhlYWRlcnMsIGFuZCB0aGUgZmlyc3QgbXVsdGlwYXJ0IGJvdW5kYXJ5IHN0cmluZy4gTm9ybWFsbHksCisgICAgICB0aGlzIHRleHQgaXMgbmV2ZXIgdmlzaWJsZSBpbiBhIE1JTUUtYXdhcmUgbWFpbCByZWFkZXIgYmVjYXVzZSBpdCBmYWxscworICAgICAgb3V0c2lkZSB0aGUgc3RhbmRhcmQgTUlNRSBhcm1vci4gIEhvd2V2ZXIsIHdoZW4gdmlld2luZyB0aGUgcmF3IHRleHQgb2YKKyAgICAgIHRoZSBtZXNzYWdlLCBvciB3aGVuIHZpZXdpbmcgdGhlIG1lc3NhZ2UgaW4gYSBub24tTUlNRSBhd2FyZSByZWFkZXIsIHRoaXMKKyAgICAgIHRleHQgY2FuIGJlY29tZSB2aXNpYmxlLgorCisgICAgICBUaGUgKnByZWFtYmxlKiBhdHRyaWJ1dGUgY29udGFpbnMgdGhpcyBsZWFkaW5nIGV4dHJhLWFybW9yIHRleHQgZm9yIE1JTUUKKyAgICAgIGRvY3VtZW50cy4gIFdoZW4gdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGRpc2NvdmVycyBzb21lIHRleHQKKyAgICAgIGFmdGVyIHRoZSBoZWFkZXJzIGJ1dCBiZWZvcmUgdGhlIGZpcnN0IGJvdW5kYXJ5IHN0cmluZywgaXQgYXNzaWducyB0aGlzCisgICAgICB0ZXh0IHRvIHRoZSBtZXNzYWdlJ3MgKnByZWFtYmxlKiBhdHRyaWJ1dGUuICBXaGVuIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgaXMgd3JpdGluZyBvdXQgdGhlIHBsYWluIHRleHQKKyAgICAgIHJlcHJlc2VudGF0aW9uIG9mIGEgTUlNRSBtZXNzYWdlLCBhbmQgaXQgZmluZHMgdGhlCisgICAgICBtZXNzYWdlIGhhcyBhICpwcmVhbWJsZSogYXR0cmlidXRlLCBpdCB3aWxsIHdyaXRlIHRoaXMgdGV4dCBpbiB0aGUgYXJlYQorICAgICAgYmV0d2VlbiB0aGUgaGVhZGVycyBhbmQgdGhlIGZpcnN0IGJvdW5kYXJ5LiAgU2VlIDptb2Q6YGVtYWlsLnBhcnNlcmAgYW5kCisgICAgICA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIGZvciBkZXRhaWxzLgorCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBubyBwcmVhbWJsZSwgdGhlICpwcmVhbWJsZSogYXR0cmlidXRlCisgICAgICB3aWxsIGJlIGBgTm9uZWBgLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGVwaWxvZ3VlCisKKyAgICAgIFRoZSAqZXBpbG9ndWUqIGF0dHJpYnV0ZSBhY3RzIHRoZSBzYW1lIHdheSBhcyB0aGUgKnByZWFtYmxlKiBhdHRyaWJ1dGUsCisgICAgICBleGNlcHQgdGhhdCBpdCBjb250YWlucyB0ZXh0IHRoYXQgYXBwZWFycyBiZXR3ZWVuIHRoZSBsYXN0IGJvdW5kYXJ5IGFuZAorICAgICAgdGhlIGVuZCBvZiB0aGUgbWVzc2FnZS4KKworICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHNldCB0aGUgZXBpbG9ndWUgdG8gdGhlIGVtcHR5IHN0cmluZyBpbiBvcmRlciBmb3IgdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCB0byBwcmludCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgIGZpbGUuCisKKworICAgLi4gYXR0cmlidXRlOjogZGVmZWN0cworCisgICAgICBUaGUgKmRlZmVjdHMqIGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2YgYWxsIHRoZSBwcm9ibGVtcyBmb3VuZCB3aGVuCisgICAgICBwYXJzaW5nIHRoaXMgbWVzc2FnZS4gIFNlZSA6bW9kOmBlbWFpbC5lcnJvcnNgIGZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uCisgICAgICBvZiB0aGUgcG9zc2libGUgcGFyc2luZyBkZWZlY3RzLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0CmluZGV4IGE5YzA3OGIuLjU3NzQzZDUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QKQEAgLTcsMjUxICs3LDEyIEBACiAuLiBtb2R1bGVhdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIC4uIHNlY3Rpb25hdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIAotLi4gdmVyc2lvbmFkZGVkOjogMy40Ci0gICBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4KLQogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvY29udGVudG1hbmFnZXIucHlgCiAKLS4uIG5vdGU6OgorLS0tLS0tLS0tLS0tCiAKLSAgIFRoZSBjb250ZW50bWFuYWdlciBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQotICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKLSAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgbW9kdWxlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCi0gICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KLQotLS0tLS0tLS0tLS0tLS0KLQotVGhlIDptb2Q6YH5lbWFpbC5tZXNzYWdlYCBtb2R1bGUgcHJvdmlkZXMgYSBjbGFzcyB0aGF0IGNhbiByZXByZXNlbnQgYW4KLWFyYml0cmFyeSBlbWFpbCBtZXNzYWdlLiAgVGhhdCBiYXNpYyBtZXNzYWdlIG1vZGVsIGhhcyBhIHVzZWZ1bCBhbmQgZmxleGlibGUKLUFQSSwgYnV0IGl0IHByb3ZpZGVzIG9ubHkgYSBsb3dlci1sZXZlbCBBUEkgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIGdlbmVyaWMKLXBhcnRzIG9mIGEgbWVzc2FnZSAodGhlIGhlYWRlcnMsIGdlbmVyaWMgaGVhZGVyIHBhcmFtZXRlcnMsIGFuZCB0aGUgcGF5bG9hZCwKLXdoaWNoIG1heSBiZSBhIGxpc3Qgb2Ygc3ViLXBhcnRzKS4gIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5kIHRvb2xzCi10aGF0IHByb3ZpZGUgYW4gZW5oYW5jZWQgYW5kIGV4dGVuc2libGUgQVBJIGZvciBkZWFsaW5nIHdpdGggdmFyaW91cyBzcGVjaWZpYwotdHlwZXMgb2YgY29udGVudCwgaW5jbHVkaW5nIHRoZSBhYmlsaXR5IHRvIHJldHJpZXZlIHRoZSBjb250ZW50IG9mIHRoZSBtZXNzYWdlCi1hcyBhIHNwZWNpYWxpemVkIG9iamVjdCB0eXBlIHJhdGhlciB0aGFuIGFzIGEgc2ltcGxlIGJ5dGVzIG9iamVjdC4gIFRoZSBtb2R1bGUKLWF1dG9tYXRpY2FsbHkgdGFrZXMgY2FyZSBvZiB0aGUgUkZDLXNwZWNpZmllZCBNSU1FIGRldGFpbHMgKHJlcXVpcmVkIGhlYWRlcnMKLWFuZCBwYXJhbWV0ZXJzLCBldGMuKSBmb3IgdGhlIGNlcnRhaW4gY29tbW9uIGNvbnRlbnQgdHlwZXMgY29udGVudCBwcm9wZXJ0aWVzLAotYW5kIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgdHlwZXMgY2FuIGJlIGFkZGVkIGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZQotZXh0ZW5zaW9uIG1lY2hhbmlzbXMuCi0KLVRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIGVwb255bW91cyAiQ29udGVudCBNYW5hZ2VyIiBjbGFzc2VzLiAgVGhlIGJhc2UKLTpjbGFzczpgLkNvbnRlbnRNYW5hZ2VyYCBjbGFzcyBkZWZpbmVzIGFuIEFQSSBmb3IgcmVnaXN0ZXJpbmcgY29udGVudAotbWFuYWdlbWVudCBmdW5jdGlvbnMgd2hpY2ggZXh0cmFjdCBkYXRhIGZyb20gYGBNZXNzYWdlYGAgb2JqZWN0cyBvciBpbnNlcnQgZGF0YQotYW5kIGhlYWRlcnMgaW50byBgYE1lc3NhZ2VgYCBvYmplY3RzLCB0aHVzIHByb3ZpZGluZyBhIHdheSBvZiBjb252ZXJ0aW5nCi1iZXR3ZWVuIGBgTWVzc2FnZWBgIG9iamVjdHMgY29udGFpbmluZyBkYXRhIGFuZCBvdGhlciByZXByZXNlbnRhdGlvbnMgb2YgdGhhdAotZGF0YSAoUHl0aG9uIGRhdGEgdHlwZXMsIHNwZWNpYWxpemVkIFB5dGhvbiBvYmplY3RzLCBleHRlcm5hbCBmaWxlcywgZXRjKS4gIFRoZQotbW9kdWxlIGFsc28gZGVmaW5lcyBvbmUgY29uY3JldGUgY29udGVudCBtYW5hZ2VyOiA6ZGF0YTpgcmF3X2RhdGFfbWFuYWdlcmAKLWNvbnZlcnRzIGJldHdlZW4gTUlNRSBjb250ZW50IHR5cGVzIGFuZCBgYHN0cmBgIG9yIGBgYnl0ZXNgYCBkYXRhLiAgSXQgYWxzbwotcHJvdmlkZXMgYSBjb252ZW5pZW50IEFQSSBmb3IgbWFuYWdpbmcgdGhlIE1JTUUgcGFyYW1ldGVycyB3aGVuIGluc2VydGluZwotY29udGVudCBpbnRvIGBgTWVzc2FnZWBgXCBzLiAgSXQgYWxzbyBoYW5kbGVzIGluc2VydGluZyBhbmQgZXh0cmFjdGluZwotYGBNZXNzYWdlYGAgb2JqZWN0cyB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYGBtZXNzYWdlL3JmYzgyMmBgIGNvbnRlbnQgdHlwZS4KLQotQW5vdGhlciBwYXJ0IG9mIHRoZSBlbmhhbmNlZCBpbnRlcmZhY2UgaXMgc3ViY2xhc3NlcyBvZgotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCB0aGF0IHByb3ZpZGUgbmV3IGNvbnZlbmllbmNlIEFQSSBmdW5jdGlvbnMsCi1pbmNsdWRpbmcgY29udmVuaWVuY2UgbWV0aG9kcyBmb3IgY2FsbGluZyB0aGUgQ29udGVudCBNYW5hZ2VycyBkZXJpdmVkIGZyb20KLXRoaXMgbW9kdWxlLgotCi0uLiBub3RlOjoKLQotICAgQWx0aG91Z2ggOmNsYXNzOmAuRW1haWxNZXNzYWdlYCBhbmQgOmNsYXNzOmAuTUlNRVBhcnRgIGFyZSBjdXJyZW50bHkKLSAgIGRvY3VtZW50ZWQgaW4gdGhpcyBtb2R1bGUgYmVjYXVzZSBvZiB0aGUgcHJvdmlzaW9uYWwgbmF0dXJlIG9mIHRoZSBjb2RlLCB0aGUKLSAgIGltcGxlbWVudGF0aW9uIGxpdmVzIGluIHRoZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCBtb2R1bGUuCi0KLS4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5tZXNzYWdlCi0KLS4uIGNsYXNzOjogRW1haWxNZXNzYWdlKHBvbGljeT1kZWZhdWx0KQotCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVkcGF0ZSBhbmQgc2VyaWFsaXplIHRoZSByZXByZXNlbnRhdGlvbgotICAgb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuZGVmYXVsdGAgcG9saWN5LCB3aGljaCBmb2xsb3dzIHRoZSBydWxlcyBvZiB0aGUgZW1haWwKLSAgIFJGQ3MgZXhjZXB0IGZvciBsaW5lIGVuZGluZ3MgKGluc3RlYWQgb2YgdGhlIFJGQyBtYW5kYXRlZCBgYFxyXG5gYCwgaXQgdXNlcwotICAgdGhlIFB5dGhvbiBzdGFuZGFyZCBgYFxuYGAgbGluZSBlbmRpbmdzKS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCi0KLSAgIFRoaXMgY2xhc3MgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgLiAgSXQgYWRkcwotICAgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0KLSAgIC4uIG1ldGhvZDo6IGlzX2F0dGFjaG1lbnQKLQotICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZXJlIGlzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlcgotICAgICAgYW5kIGl0cyAoY2FzZSBpbnNlbnNpdGl2ZSkgdmFsdWUgaXMgYGBhdHRhY2htZW50YGAsIGBgRmFsc2VgYCBvdGhlcndpc2UuCi0KLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjIKLSAgICAgICAgIGlzX2F0dGFjaG1lbnQgaXMgbm93IGEgbWV0aG9kIGluc3RlYWQgb2YgYSBwcm9wZXJ0eSwgZm9yIGNvbnNpc3RlbmN5Ci0gICAgICAgICB3aXRoIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X2JvZHkocHJlZmVyZW5jZWxpc3Q9KCdyZWxhdGVkJywgJ2h0bWwnLCAncGxhaW4nKSkKLQotICAgICAgUmV0dXJuIHRoZSBNSU1FIHBhcnQgdGhhdCBpcyB0aGUgYmVzdCBjYW5kaWRhdGUgdG8gYmUgdGhlICJib2R5IiBvZiB0aGUKLSAgICAgIG1lc3NhZ2UuCi0KLSAgICAgICpwcmVmZXJlbmNlbGlzdCogbXVzdCBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3MgZnJvbSB0aGUgc2V0IGBgcmVsYXRlZGBgLAotICAgICAgYGBodG1sYGAsIGFuZCBgYHBsYWluYGAsIGFuZCBpbmRpY2F0ZXMgdGhlIG9yZGVyIG9mIHByZWZlcmVuY2UgZm9yIHRoZQotICAgICAgY29udGVudCB0eXBlIG9mIHRoZSBwYXJ0IHJldHVybmVkLgotCi0gICAgICBTdGFydCBsb29raW5nIGZvciBjYW5kaWRhdGUgbWF0Y2hlcyB3aXRoIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlCi0gICAgICBgYGdldF9ib2R5YGAgbWV0aG9kIGlzIGNhbGxlZC4KLQotICAgICAgSWYgYGByZWxhdGVkYGAgaXMgbm90IGluY2x1ZGVkIGluICpwcmVmZXJlbmNlbGlzdCosIGNvbnNpZGVyIHRoZSByb290Ci0gICAgICBwYXJ0IChvciBzdWJwYXJ0IG9mIHRoZSByb290IHBhcnQpIG9mIGFueSByZWxhdGVkIGVuY291bnRlcmVkIGFzIGEKLSAgICAgIGNhbmRpZGF0ZSBpZiB0aGUgKHN1Yi0pcGFydCBtYXRjaGVzIGEgcHJlZmVyZW5jZS4KLQotICAgICAgV2hlbiBlbmNvdW50ZXJpbmcgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNoZWNrIHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyCi0gICAgICBhbmQgaWYgYSBwYXJ0IHdpdGggYSBtYXRjaGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgaXMgZm91bmQsIGNvbnNpZGVyCi0gICAgICBvbmx5IGl0IHdoZW4gbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMuICBPdGhlcndpc2UgY29uc2lkZXIgb25seSB0aGUKLSAgICAgIGZpcnN0IChkZWZhdWx0IHJvb3QpIHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYC4KLQotICAgICAgSWYgYSBwYXJ0IGhhcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIG9ubHkgY29uc2lkZXIKLSAgICAgIHRoZSBwYXJ0IGEgY2FuZGlkYXRlIG1hdGNoIGlmIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIGlzIGBgaW5saW5lYGAuCi0KLSAgICAgIElmIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgbWF0Y2hlcyBhbnkgb2YgdGhlIHByZWZlcmVuY2VzIGluCi0gICAgICAqcHJlZmVybmVjbGlzdCosIHJldHVybiBgYE5vbmVgYC4KLQotICAgICAgTm90ZXM6ICgxKSBGb3IgbW9zdCBhcHBsaWNhdGlvbnMgdGhlIG9ubHkgKnByZWZlcmVuY2VsaXN0KiBjb21iaW5hdGlvbnMKLSAgICAgIHRoYXQgcmVhbGx5IG1ha2Ugc2Vuc2UgYXJlIGBgKCdwbGFpbicsKWBgLCBgYCgnaHRtbCcsICdwbGFpbicpYGAsIGFuZCB0aGUKLSAgICAgIGRlZmF1bHQsIGBgKCdyZWxhdGVkJywgJ2h0bWwnLCAncGxhaW4nKWBgLiAgKDIpIEJlY2F1c2UgbWF0Y2hpbmcgc3RhcnRzCi0gICAgICB3aXRoIHRoZSBvYmplY3Qgb24gd2hpY2ggYGBnZXRfYm9keWBgIGlzIGNhbGxlZCwgY2FsbGluZyBgYGdldF9ib2R5YGAgb24KLSAgICAgIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIHdpbGwgcmV0dXJuIHRoZSBvYmplY3QgaXRzZWxmIHVubGVzcwotICAgICAgKnByZWZlcmVuY2VsaXN0KiBoYXMgYSBub24tZGVmYXVsdCB2YWx1ZS4gKDMpIE1lc3NhZ2VzIChvciBtZXNzYWdlIHBhcnRzKQotICAgICAgdGhhdCBkbyBub3Qgc3BlY2lmeSBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIG9yIHdob3NlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgaW52YWxpZCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgdGhleQotICAgICAgYXJlIG9mIHR5cGUgYGB0ZXh0L3BsYWluYGAsIHdoaWNoIG1heSBvY2Nhc2lvbmFsbHkgY2F1c2UgYGBnZXRfYm9keWBgIHRvCi0gICAgICByZXR1cm4gdW5leHBlY3RlZCByZXN1bHRzLgotCi0KLSAgIC4uIG1ldGhvZDo6IGl0ZXJfYXR0YWNobWVudHMoKQotCi0gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIHBhcnRzIG9mIHRoZSBtZXNzYWdlIHRoYXQgYXJlIG5vdAotICAgICAgY2FuZGlkYXRlICJib2R5IiBwYXJ0cy4gIFRoYXQgaXMsIHNraXAgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZWFjaCBvZgotICAgICAgYGB0ZXh0L3BsYWluYGAsIGBgdGV4dC9odG1sYGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKLSAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgKHVubGVzcyB0aGV5IGFyZSBleHBsaWNpdGx5IG1hcmtlZCBhcwotICAgICAgYXR0YWNobWVudHMgdmlhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCksIGFuZAotICAgICAgcmV0dXJuIGFsbCByZW1haW5pbmcgcGFydHMuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYQotICAgICAgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCByZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgYWxsIHRoZSByZWxhdGVkIHBhcnRzCi0gICAgICBleGNlcHQgdGhlIHJvb3QgcGFydCAoaWU6IHRoZSBwYXJ0IHBvaW50ZWQgdG8gYnkgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIsCi0gICAgICBvciB0aGUgZmlyc3QgcGFydCBpZiB0aGVyZSBpcyBubyBgYHN0YXJ0YGAgcGFyYW1ldGVyIG9yIHRoZSBgYHN0YXJ0YGAKLSAgICAgIHBhcmFtZXRlciBkb2Vzbid0IG1hdGNoIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgb2YgYW55IG9mIHRoZQotICAgICAgcGFydHMpLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCBvciBhCi0gICAgICBub24tYGBtdWx0aXBhcnRgYCwgcmV0dXJuIGFuIGVtcHR5IGl0ZXJhdG9yLgotCi0KLSAgIC4uIG1ldGhvZDo6IGl0ZXJfcGFydHMoKQotCi0gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIGltbWVkaWF0ZSBzdWItcGFydHMgb2YgdGhlIG1lc3NhZ2UsCi0gICAgICB3aGljaCB3aWxsIGJlIGVtcHR5IGZvciBhIG5vbi1gYG11bHRpcGFydGBgLiAgKFNlZSBhbHNvCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2Uud2Fsa2AuKQotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgQ2FsbCB0aGUgYGBnZXRfY29udGVudGBgIG1ldGhvZCBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZgotICAgICAgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZyBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzCi0gICAgICBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQotICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotCi0KLSAgIC4uIG1ldGhvZDo6IHNldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgQ2FsbCB0aGUgYGBzZXRfY29udGVudGBgIG1ldGhvZCBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZgotICAgICAgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZyBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzCi0gICAgICBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQotICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotCi0KLSAgIC4uIG1ldGhvZDo6IG1ha2VfcmVsYXRlZChib3VuZGFyeT1Ob25lKQotCi0gICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAgbWVzc2FnZSBpbnRvIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIG1lc3NhZ2UsCi0gICAgICBtb3ZpbmcgYW55IGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEKLSAgICAgIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlCi0gICAgICBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkKLSAgICAgIHRvIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlCi0gICAgICBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgotCi0KLSAgIC4uIG1ldGhvZDo6IG1ha2VfYWx0ZXJuYXRpdmUoYm91bmRhcnk9Tm9uZSkKLQotICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG9yIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIGludG8gYQotICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gCi0gICAgICBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYSAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYKLSAgICAgICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LAotICAgICAgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeSB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcwotICAgICAgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX21peGVkKGJvdW5kYXJ5PU5vbmUpCi0KLSAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCwgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yIGEKLSAgICAgIGBgbXVsdGlwYXJ0LWFsdGVybmF0aXZlYGAgaW50byBhIGBgbXVsdGlwYXJ0L21peGVkYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUKLSAgICAgIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcKLSAgICAgIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseQotICAgICAgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCi0KLQotICAgLi4gbWV0aG9kOjogYWRkX3JlbGF0ZWQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2UKLSAgICAgIG9iamVjdCwgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsCi0gICAgICBhbmQgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCi0gICAgICB0aGUgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBjYWxsIDptZXRoOmBtYWtlX3JlbGF0ZWRgIGFuZCB0aGVuCi0gICAgICBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYW55IG90aGVyIHR5cGUgb2YgYGBtdWx0aXBhcnRgYCwKLSAgICAgIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlCi0gICAgICB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCi0gICAgICBJZiB0aGUgYWRkZWQgcGFydCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwKLSAgICAgIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUgYGBpbmxpbmVgYC4KLQotCi0gICAuLiBtZXRob2Q6OiBhZGRfYWx0ZXJuYXRpdmUoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCi0gICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLCBhbmQKLSAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiB0aGUKLSAgICAgIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCBvciBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNhbGwKLSAgICAgIDptZXRoOmBtYWtlX2FsdGVybmF0aXZlYCBhbmQgdGhlbiBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMKLSAgICAgIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYKLSAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKLSAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGFkZF9hdHRhY2htZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9taXhlZGBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZSBvYmplY3QsCi0gICAgICBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCi0gICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKLSAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNhbGwgOm1ldGg6YG1ha2VfbWl4ZWRgIGFuZCB0aGVuIHByb2NlZWQgYXMKLSAgICAgIGFib3ZlLiBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4gIElmIHRoZSBhZGRlZCBwYXJ0Ci0gICAgICBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgYWRkIG9uZSB3aXRoIHRoZSB2YWx1ZQotICAgICAgYGBhdHRhY2htZW50YGAuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBib3RoIGZvciBleHBsaWNpdCBhdHRhY2htZW50cwotICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCBhbmQgYGBpbmxpbmVgYCBhdHRhY2htZW50cwotICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmVgKSwgYnkgcGFzc2luZyBhcHByb3ByaWF0ZQotICAgICAgb3B0aW9ucyB0byB0aGUgYGBjb250ZW50X21hbmFnZXJgYC4KLQotCi0gICAuLiBtZXRob2Q6OiBjbGVhcigpCi0KLSAgICAgIFJlbW92ZSB0aGUgcGF5bG9hZCBhbmQgYWxsIG9mIHRoZSBoZWFkZXJzLgotCi0KLSAgIC4uIG1ldGhvZDo6IGNsZWFyX2NvbnRlbnQoKQotCi0gICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgOmV4YzpgQ29udGVudC1gIGhlYWRlcnMsIGxlYXZpbmcKLSAgICAgIGFsbCBvdGhlciBoZWFkZXJzIGludGFjdCBhbmQgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuCi0KLQotLi4gY2xhc3M6OiBNSU1FUGFydChwb2xpY3k9ZGVmYXVsdCkKLQotICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHN1YnBhcnQgb2YgYSBNSU1FIG1lc3NhZ2UuICBJdCBpcyBpZGVudGljYWwgdG8KLSAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAsIGV4Y2VwdCB0aGF0IG5vIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMgYXJlCi0gICAgYWRkZWQgd2hlbiA6bWV0aDpgfkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgaXMgY2FsbGVkLCBzaW5jZSBzdWItcGFydHMgZG8KLSAgICBub3QgbmVlZCB0aGVpciBvd24gOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycy4KLQorLi4gdmVyc2lvbmFkZGVkOjogMy42IFsxXV8KIAotLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLmNvbnRlbnRtYW5hZ2VyCiAKIC4uIGNsYXNzOjogQ29udGVudE1hbmFnZXIoKQogCkBAIC0zNjIsNyArMTIzLDcgQEAKICAgICAgICAgICAgICAgIHNldF9jb250ZW50KG1zZywgPCdieXRlcyc+LCBtYWludHlwZSwgc3VidHlwZSwgY3RlPSJiYXNlNjQiLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwb3NpdGlvbj1Ob25lLCBmaWxlbmFtZT1Ob25lLCBjaWQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zPU5vbmUsIGhlYWRlcnM9Tm9uZSkKLSAgICAgICAgICAgICAgIHNldF9jb250ZW50KG1zZywgPCdNZXNzYWdlJz4sIGN0ZT1Ob25lLCBcCisgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnRW1haWxNZXNzYWdlJz4sIGN0ZT1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwb3NpdGlvbj1Ob25lLCBmaWxlbmFtZT1Ob25lLCBjaWQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zPU5vbmUsIGhlYWRlcnM9Tm9uZSkKICAgICAgICAgICAgICAgIHNldF9jb250ZW50KG1zZywgPCdsaXN0Jz4sIHN1YnR5cGU9J21peGVkJywgXApAQCAtMzc4LDE0ICsxMzksMTQgQEAKICAgICAgICAgICAgICBzdWJ0eXBlIHRvICpzdWJ0eXBlKiBpZiBpdCBpcyBzcGVjaWZpZWQsIG9yIGBgcGxhaW5gYCBpZiBpdCBpcyBub3QuCiAgICAgICAgICAgICogRm9yIGBgYnl0ZXNgYCwgdXNlIHRoZSBzcGVjaWZpZWQgKm1haW50eXBlKiBhbmQgKnN1YnR5cGUqLCBvcgogICAgICAgICAgICAgIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGV5IGFyZSBub3Qgc3BlY2lmaWVkLgotICAgICAgICAgICAqIEZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgbWFpbnR5cGUgdG8KLSAgICAgICAgICAgICBgYG1lc3NhZ2VgYCwgYW5kIHNldCB0aGUgc3VidHlwZSB0byAqc3VidHlwZSogaWYgaXQgaXMgc3BlY2lmaWVkCi0gICAgICAgICAgICAgb3IgYGByZmM4MjJgYCBpZiBpdCBpcyBub3QuICBJZiAqc3VidHlwZSogaXMgYGBwYXJ0aWFsYGAsIHJhaXNlIGFuCi0gICAgICAgICAgICAgZXJyb3IgKGBgYnl0ZXNgYCBvYmplY3RzIG11c3QgYmUgdXNlZCB0byBjb25zdHJ1Y3QKLSAgICAgICAgICAgICBgYG1lc3NhZ2UvcGFydGlhbGBgIHBhcnRzKS4KKyAgICAgICAgICAgKiBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgbWFpbnR5cGUKKyAgICAgICAgICAgICB0byBgYG1lc3NhZ2VgYCwgYW5kIHNldCB0aGUgc3VidHlwZSB0byAqc3VidHlwZSogaWYgaXQgaXMKKyAgICAgICAgICAgICBzcGVjaWZpZWQgb3IgYGByZmM4MjJgYCBpZiBpdCBpcyBub3QuICBJZiAqc3VidHlwZSogaXMKKyAgICAgICAgICAgICBgYHBhcnRpYWxgYCwgcmFpc2UgYW4gZXJyb3IgKGBgYnl0ZXNgYCBvYmplY3RzIG11c3QgYmUgdXNlZCB0bworICAgICAgICAgICAgIGNvbnN0cnVjdCBgYG1lc3NhZ2UvcGFydGlhbGBgIHBhcnRzKS4KICAgICAgICAgICAgKiBGb3IgKjwnbGlzdCc+Kiwgd2hpY2ggc2hvdWxkIGJlIGEgbGlzdCBvZgotICAgICAgICAgICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBgYG1haW50eXBlYGAgdG8KLSAgICAgICAgICAgICBgYG11bHRpcGFydGBgLCBhbmQgdGhlIGBgc3VidHlwZWBgIHRvICpzdWJ0eXBlKiBpZiBpdCBpcworICAgICAgICAgICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIGBgbWFpbnR5cGVgYAorICAgICAgICAgICAgIHRvIGBgbXVsdGlwYXJ0YGAsIGFuZCB0aGUgYGBzdWJ0eXBlYGAgdG8gKnN1YnR5cGUqIGlmIGl0IGlzCiAgICAgICAgICAgICAgc3BlY2lmaWVkLCBhbmQgYGBtaXhlZGBgIGlmIGl0IGlzIG5vdC4gIElmIHRoZSBtZXNzYWdlIHBhcnRzIGluCiAgICAgICAgICAgICAgdGhlICo8J2xpc3QnPiogaGF2ZSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzLCByZW1vdmUKICAgICAgICAgICAgICB0aGVtLgpAQCAtMzk3LDMyICsxNTgsMzUgQEAKIAogICAgICAgIElmICpjdGUqIGlzIHNldCwgZW5jb2RlIHRoZSBwYXlsb2FkIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29udGVudCB0cmFuc2ZlcgogICAgICAgIGVuY29kaW5nLCBhbmQgc2V0IHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmRjb2RpbmdgIGhlYWRlciB0bwotICAgICAgIHRoYXQgdmFsdWUuICBGb3IgYGBzdHJgYCBvYmplY3RzLCBpZiBpdCBpcyBub3Qgc2V0IHVzZSBoZXVyaXN0aWNzIHRvCi0gICAgICAgZGV0ZXJtaW5lIHRoZSBtb3N0IGNvbXBhY3QgZW5jb2RpbmcuICBQb3NzaWJsZSB2YWx1ZXMgZm9yICpjdGUqIGFyZQotICAgICAgIGBgcXVvdGVkLXByaW50YWJsZWBgLCBgYGJhc2U2NGBgLCBgYDdiaXRgYCwgYGA4Yml0YGAsIGFuZCBgYGJpbmFyeWBgLgotICAgICAgIElmIHRoZSBpbnB1dCBjYW5ub3QgYmUgZW5jb2RlZCBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIChlZzogYGA3Yml0YGApLAotICAgICAgIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuICBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCwgcGVyCi0gICAgICAgOnJmYzpgMjA0NmAsIHJhaXNlIGFuIGVycm9yIGlmIGEgKmN0ZSogb2YgYGBxdW90ZWQtcHJpbnRhYmxlYGAgb3IKLSAgICAgICBgYGJhc2U2NGBgIGlzIHJlcXVlc3RlZCBmb3IgKnN1YnR5cGUqIGBgcmZjODIyYGAsIGFuZCBmb3IgYW55ICpjdGUqCi0gICAgICAgb3RoZXIgdGhhbiBgYDdiaXRgYCBmb3IgKnN1YnR5cGUqIGBgZXh0ZXJuYWwtYm9keWBgLiAgRm9yCi0gICAgICAgYGBtZXNzYWdlL3JmYzgyMmBgLCB1c2UgYGA4Yml0YGAgaWYgKmN0ZSogaXMgbm90IHNwZWNpZmllZC4gIEZvciBhbGwKLSAgICAgICBvdGhlciB2YWx1ZXMgb2YgKnN1YnR5cGUqLCB1c2UgYGA3Yml0YGAuCisgICAgICAgdGhhdCB2YWx1ZS4gIFBvc3NpYmxlIHZhbHVlcyBmb3IgKmN0ZSogYXJlIGBgcXVvdGVkLXByaW50YWJsZWBgLAorICAgICAgIGBgYmFzZTY0YGAsIGBgN2JpdGBgLCBgYDhiaXRgYCwgYW5kIGBgYmluYXJ5YGAuICBJZiB0aGUgaW5wdXQgY2Fubm90IGJlCisgICAgICAgZW5jb2RlZCBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIChmb3IgZXhhbXBsZSwgc3BlY2lmeWluZyBhICpjdGUqIG9mCisgICAgICAgYGA3Yml0YGAgZm9yIGFuIGlucHV0IHRoYXQgY29udGFpbnMgbm9uLUFTQ0lJIHZhbHVlcyksIHJhaXNlIGEKKyAgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KKworICAgICAgICAgICAgKiBGb3IgYGBzdHJgYCBvYmplY3RzLCBpZiAqY3RlKiBpcyBub3Qgc2V0IHVzZSBoZXVyaXN0aWNzIHRvCisgICAgICAgICAgICAgIGRldGVybWluZSB0aGUgbW9zdCBjb21wYWN0IGVuY29kaW5nLgorICAgICAgICAgICAgKiBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLCBwZXIgOnJmYzpgMjA0NmAsIHJhaXNlCisgICAgICAgICAgICAgIGFuIGVycm9yIGlmIGEgKmN0ZSogb2YgYGBxdW90ZWQtcHJpbnRhYmxlYGAgb3IgYGBiYXNlNjRgYCBpcworICAgICAgICAgICAgICByZXF1ZXN0ZWQgZm9yICpzdWJ0eXBlKiBgYHJmYzgyMmBgLCBhbmQgZm9yIGFueSAqY3RlKiBvdGhlciB0aGFuCisgICAgICAgICAgICAgIGBgN2JpdGBgIGZvciAqc3VidHlwZSogYGBleHRlcm5hbC1ib2R5YGAuICBGb3IKKyAgICAgICAgICAgICAgYGBtZXNzYWdlL3JmYzgyMmBgLCB1c2UgYGA4Yml0YGAgaWYgKmN0ZSogaXMgbm90IHNwZWNpZmllZC4gIEZvcgorICAgICAgICAgICAgICBhbGwgb3RoZXIgdmFsdWVzIG9mICpzdWJ0eXBlKiwgdXNlIGBgN2JpdGBgLgogCiAgICAgICAgLi4gbm90ZTo6IEEgKmN0ZSogb2YgYGBiaW5hcnlgYCBkb2VzIG5vdCBhY3R1YWxseSB3b3JrIGNvcnJlY3RseSB5ZXQuCi0gICAgICAgICAgVGhlIGBgTWVzc2FnZWBgIG9iamVjdCBhcyBtb2RpZmllZCBieSBgYHNldF9jb250ZW50YGAgaXMgY29ycmVjdCwgYnV0Ci0gICAgICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBkb2VzIG5vdCBzZXJpYWxpemUgaXQKLSAgICAgICAgICBjb3JyZWN0bHkuCisgICAgICAgICAgVGhlIGBgRW1haWxNZXNzYWdlYGAgb2JqZWN0IGFzIG1vZGlmaWVkIGJ5IGBgc2V0X2NvbnRlbnRgYCBpcworICAgICAgICAgIGNvcnJlY3QsIGJ1dCA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGRvZXMgbm90CisgICAgICAgICAgc2VyaWFsaXplIGl0IGNvcnJlY3RseS4KIAogICAgICAgIElmICpkaXNwb3NpdGlvbiogaXMgc2V0LCB1c2UgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZQogICAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIuICBJZiBub3Qgc3BlY2lmaWVkLCBhbmQKICAgICAgICAqZmlsZW5hbWUqIGlzIHNwZWNpZmllZCwgYWRkIHRoZSBoZWFkZXIgd2l0aCB0aGUgdmFsdWUgYGBhdHRhY2htZW50YGAuCi0gICAgICAgSWYgaXQgaXMgbm90IHNwZWNpZmllZCBhbmQgKmZpbGVuYW1lKiBpcyBhbHNvIG5vdCBzcGVjaWZpZWQsIGRvIG5vdCBhZGQKLSAgICAgICB0aGUgaGVhZGVyLiAgVGhlIG9ubHkgdmFsaWQgdmFsdWVzIGZvciAqZGlzcG9zaXRpb24qIGFyZSBgYGF0dGFjaG1lbnRgYAotICAgICAgIGFuZCBgYGlubGluZWBgLgorICAgICAgIElmICpkaXNwb3NpdGlvbiogaXMgbm90IHNwZWNpZmllZCBhbmQgKmZpbGVuYW1lKiBpcyBhbHNvIG5vdCBzcGVjaWZpZWQsCisgICAgICAgZG8gbm90IGFkZCB0aGUgaGVhZGVyLiAgVGhlIG9ubHkgdmFsaWQgdmFsdWVzIGZvciAqZGlzcG9zaXRpb24qIGFyZQorICAgICAgIGBgYXR0YWNobWVudGBgIGFuZCBgYGlubGluZWBgLgogCiAgICAgICAgSWYgKmZpbGVuYW1lKiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgdmFsdWUgb2YgdGhlIGBgZmlsZW5hbWVgYAotICAgICAgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4gIFRoZXJlIGlzIG5vCi0gICAgICAgZGVmYXVsdC4KKyAgICAgICBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIuCiAKICAgICAgICBJZiAqY2lkKiBpcyBzcGVjaWZpZWQsIGFkZCBhIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBoZWFkZXIgd2l0aAogICAgICAgICpjaWQqIGFzIGl0cyB2YWx1ZS4KQEAgLTQzNSwzICsxOTksOSBAQAogICAgICAgIGBgaGVhZGVybmFtZTogaGVhZGVydmFsdWVgYCBvciBhIGxpc3Qgb2YgYGBoZWFkZXJgYCBvYmplY3RzCiAgICAgICAgKGRpc3Rpbmd1aXNoZWQgZnJvbSBzdHJpbmdzIGJ5IGhhdmluZyBhIGBgbmFtZWBgIGF0dHJpYnV0ZSksIGFkZCB0aGUKICAgICAgICBoZWFkZXJzIHRvICptc2cqLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gT3JpbmdhbGx5IGFkZGVkIGluIDMuNCBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsCisgICAgICAgcGFja2FnZT5gCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QKaW5kZXggOWQ3ZjliZi4uZTI0YWM3YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdApAQCAtOCw2ICs4LDEyIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBJbiB0aGUKK25ldyBBUEkgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgcHJvdmlkZWQgYnkgdGhlICpjdGUqIHBhcmFtZXRlciBvZgordGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZC4KKworVGhlIHJlbWFpbmluZyB0ZXh0IGluIHRoaXMgc2VjdGlvbiBpcyB0aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbW9kdWxlLgorCiBXaGVuIGNyZWF0aW5nIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0cyBmcm9tIHNjcmF0Y2gsIHlvdSBvZnRlbgogbmVlZCB0byBlbmNvZGUgdGhlIHBheWxvYWRzIGZvciB0cmFuc3BvcnQgdGhyb3VnaCBjb21wbGlhbnQgbWFpbCBzZXJ2ZXJzLiBUaGlzCiBpcyBlc3BlY2lhbGx5IHRydWUgZm9yIDptaW1ldHlwZTpgaW1hZ2UvXCpgIGFuZCA6bWltZXR5cGU6YHRleHQvXCpgIHR5cGUgbWVzc2FnZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CmluZGV4IDg0NzA3ODMuLjJkMGQxOTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdApAQCAtMjAsMzMgKzIwLDI3IEBACiAKIC4uIGV4Y2VwdGlvbjo6IE1lc3NhZ2VQYXJzZUVycm9yKCkKIAotICAgVGhpcyBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgCi0gICBjbGFzcy4gIEl0IGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlRXJyb3JgLgorICAgVGhpcyBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcy4gIEl0IGlzIGRlcml2ZWQgZnJvbQorICAgOmV4YzpgTWVzc2FnZUVycm9yYC4gIFRoaXMgY2xhc3MgaXMgYWxzbyB1c2VkIGludGVybmFsbHkgYnkgdGhlIHBhcnNlciB1c2VkCisgICBieSA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IEhlYWRlclBhcnNlRXJyb3IoKQogCi0gICBSYWlzZWQgdW5kZXIgc29tZSBlcnJvciBjb25kaXRpb25zIHdoZW4gcGFyc2luZyB0aGUgOnJmYzpgMjgyMmAgaGVhZGVycyBvZiBhCi0gICBtZXNzYWdlLCB0aGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlUGFyc2VFcnJvcmAuIEl0IGNhbiBiZSByYWlzZWQKLSAgIGZyb20gdGhlIDptZXRoOmBQYXJzZXIucGFyc2UgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2U+YCBvcgotICAgOm1ldGg6YFBhcnNlci5wYXJzZXN0ciA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZXN0cj5gIG1ldGhvZHMuCi0KLSAgIFNpdHVhdGlvbnMgd2hlcmUgaXQgY2FuIGJlIHJhaXNlZCBpbmNsdWRlIGZpbmRpbmcgYW4gZW52ZWxvcGUgaGVhZGVyIGFmdGVyIHRoZQotICAgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLCBmaW5kaW5nIGEgY29udGludWF0aW9uIGxpbmUgYmVmb3JlIHRoZQotICAgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIGlzIGZvdW5kLCBvciBmaW5kaW5nIGEgbGluZSBpbiB0aGUgaGVhZGVycyB3aGljaCBpcwotICAgbmVpdGhlciBhIGhlYWRlciBvciBhIGNvbnRpbnVhdGlvbiBsaW5lLgorICAgUmFpc2VkIHVuZGVyIHNvbWUgZXJyb3IgY29uZGl0aW9ucyB3aGVuIHBhcnNpbmcgdGhlIDpyZmM6YDUzMjJgIGhlYWRlcnMgb2YgYQorICAgbWVzc2FnZSwgdGhpcyBjbGFzcyBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZVBhcnNlRXJyb3JgLiAgVGhlCisgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9ib3VuZGFyeWAgbWV0aG9kIHdpbGwgcmFpc2UgdGhpcworICAgZXJyb3IgaWYgdGhlIGNvbnRlbnQgdHlwZSBpcyB1bmtub3duIHdoZW4gdGhlIG1ldGhvZCBpcyBjYWxsZWQuCisgICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBtYXkgcmFpc2UgdGhpcyBlcnJvciBmb3IgY2VydGFpbiBiYXNlNjQKKyAgIGRlY29kaW5nIGVycm9ycywgYW5kIHdoZW4gYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNyZWF0ZSBhIGhlYWRlciB0aGF0IGFwcGVhcnMKKyAgIHRvIGNvbnRhaW4gYW4gZW1iZWRkZWQgaGVhZGVyICh0aGF0IGlzLCB0aGVyZSBpcyB3aGF0IGlzIHN1cHBvc2VkIHRvIGJlIGEKKyAgIGNvbnRpbnVhdGlvbiBsaW5lIHRoYXQgaGFzIG5vIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgbG9va3MgbGlrZSBhIGhlYWRlcikuCiAKIAogLi4gZXhjZXB0aW9uOjogQm91bmRhcnlFcnJvcigpCiAKLSAgIFJhaXNlZCB1bmRlciBzb21lIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBwYXJzaW5nIHRoZSA6cmZjOmAyODIyYCBoZWFkZXJzIG9mIGEKLSAgIG1lc3NhZ2UsIHRoaXMgY2xhc3MgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VQYXJzZUVycm9yYC4gSXQgY2FuIGJlIHJhaXNlZAotICAgZnJvbSB0aGUgOm1ldGg6YFBhcnNlci5wYXJzZSA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZT5gIG9yCi0gICA6bWV0aDpgUGFyc2VyLnBhcnNlc3RyIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlc3RyPmAgbWV0aG9kcy4KLQotICAgU2l0dWF0aW9ucyB3aGVyZSBpdCBjYW4gYmUgcmFpc2VkIGluY2x1ZGUgbm90IGJlaW5nIGFibGUgdG8gZmluZCB0aGUgc3RhcnRpbmcgb3IKLSAgIHRlcm1pbmF0aW5nIGJvdW5kYXJ5IGluIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIG1lc3NhZ2Ugd2hlbiBzdHJpY3QgcGFyc2luZwotICAgaXMgdXNlZC4KKyAgIERlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciB1c2VkLgogCiAKIC4uIGV4Y2VwdGlvbjo6IE11bHRpcGFydENvbnZlcnNpb25FcnJvcigpCkBAIC02NCwxNCArNTgsMTQgQEAKICAgIDpjbGFzczpgfmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0Lk1JTUVOb25NdWx0aXBhcnRgIChlLmcuCiAgICA6Y2xhc3M6YH5lbWFpbC5taW1lLmltYWdlLk1JTUVJbWFnZWApLgogCi1IZXJlJ3MgdGhlIGxpc3Qgb2YgdGhlIGRlZmVjdHMgdGhhdCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgCisKK0hlcmUgaXMgdGhlIGxpc3Qgb2YgdGhlIGRlZmVjdHMgdGhhdCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgCiBjYW4gZmluZCB3aGlsZSBwYXJzaW5nIG1lc3NhZ2VzLiAgTm90ZSB0aGF0IHRoZSBkZWZlY3RzIGFyZSBhZGRlZCB0byB0aGUgbWVzc2FnZQogd2hlcmUgdGhlIHByb2JsZW0gd2FzIGZvdW5kLCBzbyBmb3IgZXhhbXBsZSwgaWYgYSBtZXNzYWdlIG5lc3RlZCBpbnNpZGUgYQogOm1pbWV0eXBlOmBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgIGhhZCBhIG1hbGZvcm1lZCBoZWFkZXIsIHRoYXQgbmVzdGVkIG1lc3NhZ2UKIG9iamVjdCB3b3VsZCBoYXZlIGEgZGVmZWN0LCBidXQgdGhlIGNvbnRhaW5pbmcgbWVzc2FnZXMgd291bGQgbm90LgogCi1BbGwgZGVmZWN0IGNsYXNzZXMgYXJlIHN1YmNsYXNzZWQgZnJvbSA6Y2xhc3M6YGVtYWlsLmVycm9ycy5NZXNzYWdlRGVmZWN0YCwgYnV0Ci10aGlzIGNsYXNzIGlzICpub3QqIGFuIGV4Y2VwdGlvbiEKK0FsbCBkZWZlY3QgY2xhc3NlcyBhcmUgc3ViY2xhc3NlZCBmcm9tIDpjbGFzczpgZW1haWwuZXJyb3JzLk1lc3NhZ2VEZWZlY3RgLgogCiAqIDpjbGFzczpgTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0YCAtLSBBIG1lc3NhZ2UgY2xhaW1lZCB0byBiZSBhIG11bHRpcGFydCwKICAgYnV0IGhhZCBubyA6bWltZXR5cGU6YGJvdW5kYXJ5YCBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5leGFtcGxlcy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5leGFtcGxlcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlOWFlZQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmV4YW1wbGVzLnJzdApAQCAtMCwwICsxLDY3IEBACisuLiBfZW1haWwtZXhhbXBsZXM6CisKKzptb2Q6YGVtYWlsYDogRXhhbXBsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSGVyZSBhcmUgYSBmZXcgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgdG8gcmVhZCwgd3JpdGUsCithbmQgc2VuZCBzaW1wbGUgZW1haWwgbWVzc2FnZXMsIGFzIHdlbGwgYXMgbW9yZSBjb21wbGV4IE1JTUUgbWVzc2FnZXMuCisKK0ZpcnN0LCBsZXQncyBzZWUgaG93IHRvIGNyZWF0ZSBhbmQgc2VuZCBhIHNpbXBsZSB0ZXh0IG1lc3NhZ2UgKGJvdGggdGhlCit0ZXh0IGNvbnRlbnQgYW5kIHRoZSBhZGRyZXNzZXMgbWF5IGNvbnRhaW4gdW5pY29kZSBjaGFyYWN0ZXJzKToKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKKworCitQYXJzaW5nIFJGQzgyMiBoZWFkZXJzIGNhbiBlYXNpbHkgYmUgZG9uZSBieSB0aGUgdXNpbmcgdGhlIGNsYXNzZXMKK2Zyb20gdGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgIG1vZHVsZToKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgYSBNSU1FIG1lc3NhZ2UgY29udGFpbmluZyBhIGJ1bmNoIG9mIGZhbWlseQorcGljdHVyZXMgdGhhdCBtYXkgYmUgcmVzaWRpbmcgaW4gYSBkaXJlY3Rvcnk6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtbWltZS5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIHRoZSBlbnRpcmUgY29udGVudHMgb2YgYSBkaXJlY3RvcnkgYXMgYW4gZW1haWwKK21lc3NhZ2U6IFsxXV8KKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1kaXIucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gdW5wYWNrIGEgTUlNRSBtZXNzYWdlIGxpa2UgdGhlIG9uZQorYWJvdmUsIGludG8gYSBkaXJlY3Rvcnkgb2YgZmlsZXM6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNyZWF0ZSBhbiBIVE1MIG1lc3NhZ2Ugd2l0aCBhbiBhbHRlcm5hdGl2ZSBwbGFpbgordGV4dCB2ZXJzaW9uLiAgVG8gbWFrZSB0aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgd2UgaW5jbHVkZSBhIHJlbGF0ZWQKK2ltYWdlIGluIHRoZSBodG1sIHBhcnQsIGFuZCB3ZSBzYXZlIGEgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kIHRvCitkaXNrLCBhcyB3ZWxsIGFzIHNlbmRpbmcgaXQuCisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKKworCitJZiB3ZSB3ZXJlIHNlbnQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgbGFzdCBleGFtcGxlLCBoZXJlIGlzIG9uZSB3YXkgd2UgY291bGQKK3Byb2Nlc3MgaXQ6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS5weQorCitVcCB0byB0aGUgcHJvbXB0LCB0aGUgb3V0cHV0IGZyb20gdGhlIGFib3ZlIGlzOgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICAgVG86IFBlbmVsb3BlIFB1c3N5Y2F0IDxwZW5lbG9wZUBleGFtcGxlLmNvbT4sIEZhYnJldHRlIFB1c3N5Y2F0IDxmYWJyZXR0ZUBleGFtcGxlLmNvbT4KKyAgICBGcm9tOiBQZXDDqSBMZSBQZXcgPHBlcGVAZXhhbXBsZS5jb20+CisgICAgU3ViamVjdDogQXlvbnMgYXNwZXJnZXMgcG91ciBsZSBkw6lqZXVuZXIKKworICAgIFNhbHV0IQorCisgICAgQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gVGhhbmtzIHRvIE1hdHRoZXcgRGl4b24gQ293bGVzIGZvciB0aGUgb3JpZ2luYWwgaW5zcGlyYXRpb24gYW5kIGV4YW1wbGVzLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKaW5kZXggZDU5NmVkOC4uYWIwZmJjMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CkBAIC04LDIxMCArOCwyNDQgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotT25lIG9mIHRoZSBtb3N0IGNvbW1vbiB0YXNrcyBpcyB0byBnZW5lcmF0ZSB0aGUgZmxhdCB0ZXh0IG9mIHRoZSBlbWFpbCBtZXNzYWdlCi1yZXByZXNlbnRlZCBieSBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZS4gIFlvdSB3aWxsIG5lZWQgdG8gZG8gdGhpcyBpZiB5b3Ugd2FudAotdG8gc2VuZCB5b3VyIG1lc3NhZ2UgdmlhIHRoZSA6bW9kOmBzbXRwbGliYCBtb2R1bGUgb3IgdGhlIDptb2Q6YG5udHBsaWJgIG1vZHVsZSwKLW9yIHByaW50IHRoZSBtZXNzYWdlIG9uIHRoZSBjb25zb2xlLiAgVGFraW5nIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGFuZAotcHJvZHVjaW5nIGEgZmxhdCB0ZXh0IGRvY3VtZW50IGlzIHRoZSBqb2Igb2YgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcy4KK09uZSBvZiB0aGUgbW9zdCBjb21tb24gdGFza3MgaXMgdG8gZ2VuZXJhdGUgdGhlIGZsYXQgKHNlcmlhbGl6ZWQpIHZlcnNpb24gb2YKK3RoZSBlbWFpbCBtZXNzYWdlIHJlcHJlc2VudGVkIGJ5IGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlLiAgWW91IHdpbGwgbmVlZCB0bworZG8gdGhpcyBpZiB5b3Ugd2FudCB0byBzZW5kIHlvdXIgbWVzc2FnZSB2aWEgOm1ldGg6YHNtdHBsaWIuU01UUC5zZW5kbWFpbGAgb3IKK3RoZSA6bW9kOmBubnRwbGliYCBtb2R1bGUsIG9yIHByaW50IHRoZSBtZXNzYWdlIG9uIHRoZSBjb25zb2xlLiAgVGFraW5nIGEKK21lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBhbmQgcHJvZHVjaW5nIGEgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBpcyB0aGUgam9iCitvZiB0aGUgZ2VuZXJhdG9yIGNsYXNzZXMuCiAKLUFnYWluLCBhcyB3aXRoIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwgeW91IGFyZW4ndCBsaW1pdGVkIHRvIHRoZQotZnVuY3Rpb25hbGl0eSBvZiB0aGUgYnVuZGxlZCBnZW5lcmF0b3I7IHlvdSBjb3VsZCB3cml0ZSBvbmUgZnJvbSBzY3JhdGNoCi15b3Vyc2VsZi4gIEhvd2V2ZXIgdGhlIGJ1bmRsZWQgZ2VuZXJhdG9yIGtub3dzIGhvdyB0byBnZW5lcmF0ZSBtb3N0IGVtYWlsIGluIGEKLXN0YW5kYXJkcy1jb21wbGlhbnQgd2F5LCBzaG91bGQgaGFuZGxlIE1JTUUgYW5kIG5vbi1NSU1FIGVtYWlsIG1lc3NhZ2VzIGp1c3QKLWZpbmUsIGFuZCBpcyBkZXNpZ25lZCBzbyB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZsYXQgdGV4dCwgdG8gYSBtZXNzYWdlCi1zdHJ1Y3R1cmUgdmlhIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcywgYW5kIGJhY2sgdG8gZmxhdCB0ZXh0LAotaXMgaWRlbXBvdGVudCAodGhlIGlucHV0IGlzIGlkZW50aWNhbCB0byB0aGUgb3V0cHV0KSBbI11fLiAgT24gdGhlIG90aGVyIGhhbmQsCi11c2luZyB0aGUgR2VuZXJhdG9yIG9uIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjb25zdHJ1Y3RlZCBieSBwcm9ncmFtCi1tYXkgcmVzdWx0IGluIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGFzIGRlZmF1bHRzCi1hcmUgZmlsbGVkIGluLgorQXMgd2l0aCB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsIHlvdSBhcmVuJ3QgbGltaXRlZCB0byB0aGUgZnVuY3Rpb25hbGl0eQorb2YgdGhlIGJ1bmRsZWQgZ2VuZXJhdG9yOyB5b3UgY291bGQgd3JpdGUgb25lIGZyb20gc2NyYXRjaCB5b3Vyc2VsZi4gIEhvd2V2ZXIKK3RoZSBidW5kbGVkIGdlbmVyYXRvciBrbm93cyBob3cgdG8gZ2VuZXJhdGUgbW9zdCBlbWFpbCBpbiBhIHN0YW5kYXJkcy1jb21wbGlhbnQKK3dheSwgc2hvdWxkIGhhbmRsZSBNSU1FIGFuZCBub24tTUlNRSBlbWFpbCBtZXNzYWdlcyBqdXN0IGZpbmUsIGFuZCBpcyBkZXNpZ25lZAorc28gdGhhdCB0aGUgYnl0ZXMtb3JpZW50ZWQgcGFyc2luZyBhbmQgZ2VuZXJhdGlvbiBvcGVyYXRpb25zIGFyZSBpbnZlcnNlcywKK2Fzc3VtaW5nIHRoZSBzYW1lIG5vbi10cmFuc2Zvcm1pbmcgOm1vZDpgfmVtYWlsLnBvbGljeWAgaXMgdXNlZCBmb3IgYm90aC4gIFRoYXQKK2lzLCBwYXJzaW5nIHRoZSBzZXJpYWxpemVkIGJ5dGUgc3RyZWFtIHZpYSB0aGUKKzpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgY2xhc3MgYW5kIHRoZW4gcmVnZW5lcmF0aW5nIHRoZSBzZXJpYWxpemVkCitieXRlIHN0cmVhbSB1c2luZyA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBzaG91bGQgcHJvZHVjZSBvdXRwdXQgaWRlbnRpY2FsIHRvCit0aGUgaW5wdXQgWyNdXy4gIChPbiB0aGUgb3RoZXIgaGFuZCwgdXNpbmcgdGhlIGdlbmVyYXRvciBvbiBhbgorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNvbnN0cnVjdGVkIGJ5IHByb2dyYW0gbWF5IHJlc3VsdCBpbgorY2hhbmdlcyB0byB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdCBhcyBkZWZhdWx0cyBhcmUKK2ZpbGxlZCBpbi4pCiAKLTpjbGFzczpgYnl0ZXNgIG91dHB1dCBjYW4gYmUgZ2VuZXJhdGVkIHVzaW5nIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBjbGFzcy4KLUlmIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgY29udGFpbnMgbm9uLUFTQ0lJIGJ5dGVzLCB0aGlzIGdlbmVyYXRvcidzCi06bWV0aDpgfkJ5dGVzR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCB3aWxsIGVtaXQgdGhlIG9yaWdpbmFsIGJ5dGVzLiAgUGFyc2luZyBhCi1iaW5hcnkgbWVzc2FnZSBhbmQgdGhlbiBmbGF0dGVuaW5nIGl0IHdpdGggOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgc2hvdWxkIGJlCi1pZGVtcG90ZW50IGZvciBzdGFuZGFyZHMgY29tcGxpYW50IG1lc3NhZ2VzLgotCi1IZXJlIGFyZSB0aGUgcHVibGljIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUKLTptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlOgorVGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyBjYW4gYmUgdXNlZCB0byBmbGF0dGVuIGEgbWVzc2FnZSBpbnRvIGEgdGV4dCAoYXMKK29wcG9zZWQgdG8gYmluYXJ5KSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uLCBidXQgc2luY2UgVW5pY29kZSBjYW5ub3QKK3JlcHJlc2VudCBiaW5hcnkgZGF0YSBkaXJlY3RseSwgdGhlIG1lc3NhZ2UgaXMgb2YgbmVjZXNzaXR5IHRyYW5zZm9ybWVkIGludG8KK3NvbWV0aGluZyB0aGF0IGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycywgdXNpbmcgdGhlIHN0YW5kYXJkIGVtYWlsIFJGQworQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZyB0ZWNobmlxdWVzIGZvciBlbmNvZGluZyBlbWFpbCBtZXNzYWdlcyBmb3IgdHJhbnNwb3J0CitvdmVyIGNoYW5uZWxzIHRoYXQgYXJlIG5vdCAiOCBiaXQgY2xlYW4iLgogCiAKLS4uIGNsYXNzOjogR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCAqLCBwb2xpY3k9Tm9uZSkKLQotICAgVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzIHRha2VzIGEgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgCi0gICBjYWxsZWQgKm91dGZwKiBmb3IgYW4gYXJndW1lbnQuICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCB0aGUgOm1ldGg6YHdyaXRlYCBtZXRob2QKLSAgIGFuZCBiZSB1c2FibGUgYXMgdGhlIG91dHB1dCBmaWxlIGZvciB0aGUgOmZ1bmM6YHByaW50YCBmdW5jdGlvbi4KLQotICAgT3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYSBmbGFnIHRoYXQsIHdoZW4gYGBUcnVlYGAsIHB1dHMgYSBgYD5gYCBjaGFyYWN0ZXIgaW4KLSAgIGZyb250IG9mIGFueSBsaW5lIGluIHRoZSBib2R5IHRoYXQgc3RhcnRzIGV4YWN0bHkgYXMgYGBGcm9tYGAsIGkuZS4gYGBGcm9tYGAKLSAgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS4gIFRoaXMgaXMgdGhlIG9ubHkgZ3VhcmFudGVlZAotICAgcG9ydGFibGUgd2F5IHRvIGF2b2lkIGhhdmluZyBzdWNoIGxpbmVzIGJlIG1pc3Rha2VuIGZvciBhIFVuaXggbWFpbGJveCBmb3JtYXQKLSAgIGVudmVsb3BlIGhlYWRlciBzZXBhcmF0b3IgKHNlZSBgV0hZIFRIRSBDT05URU5ULUxFTkdUSCBGT1JNQVQgSVMgQkFECi0gICA8aHR0cHM6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXyBmb3IgZGV0YWlscykuICAqbWFuZ2xlX2Zyb21fKgotICAgZGVmYXVsdHMgdG8gYGBUcnVlYGAsIGJ1dCB5b3UgbWlnaHQgd2FudCB0byBzZXQgdGhpcyB0byBgYEZhbHNlYGAgaWYgeW91IGFyZSBub3QKLSAgIHdyaXRpbmcgVW5peCBtYWlsYm94IGZvcm1hdCBmaWxlcy4KLQotICAgT3B0aW9uYWwgKm1heGhlYWRlcmxlbiogc3BlY2lmaWVzIHRoZSBsb25nZXN0IGxlbmd0aCBmb3IgYSBub24tY29udGludWVkIGhlYWRlci4KLSAgIFdoZW4gYSBoZWFkZXIgbGluZSBpcyBsb25nZXIgdGhhbiAqbWF4aGVhZGVybGVuKiAoaW4gY2hhcmFjdGVycywgd2l0aCB0YWJzCi0gICBleHBhbmRlZCB0byA4IHNwYWNlcyksIHRoZSBoZWFkZXIgd2lsbCBiZSBzcGxpdCBhcyBkZWZpbmVkIGluIHRoZQotICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgY2xhc3MuICBTZXQgdG8gemVybyB0byBkaXNhYmxlIGhlYWRlciB3cmFwcGluZy4KLSAgIFRoZSBkZWZhdWx0IGlzIDc4LCBhcyByZWNvbW1lbmRlZCAoYnV0IG5vdCByZXF1aXJlZCkgYnkgOnJmYzpgMjgyMmAuCi0KLSAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0IGNvbnRyb2xzIGEKLSAgIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0b3IncyBvcGVyYXRpb24uICBJZiBubyAqcG9saWN5KiBpcyBzcGVjaWZpZWQsCi0gICB0aGVuIHRoZSAqcG9saWN5KiBhdHRhY2hlZCB0byB0aGUgbWVzc2FnZSBvYmplY3QgcGFzc2VkIHRvIDphdHRyOmBmbGF0dGVuYAotICAgaXMgdXNlZC4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLSAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgotCi0KLSAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1Ob25lKQotCi0gICAgICBQcmludCB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHJvb3RlZCBhdAotICAgICAgKm1zZyogdG8gdGhlIG91dHB1dCBmaWxlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2UKLSAgICAgIHdhcyBjcmVhdGVkLiAgU3VicGFydHMgYXJlIHZpc2l0ZWQgZGVwdGgtZmlyc3QgYW5kIHRoZSByZXN1bHRpbmcgdGV4dCB3aWxsCi0gICAgICBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuCi0KLSAgICAgIE9wdGlvbmFsICp1bml4ZnJvbSogaXMgYSBmbGFnIHRoYXQgZm9yY2VzIHRoZSBwcmludGluZyBvZiB0aGUgZW52ZWxvcGUKLSAgICAgIGhlYWRlciBkZWxpbWl0ZXIgYmVmb3JlIHRoZSBmaXJzdCA6cmZjOmAyODIyYCBoZWFkZXIgb2YgdGhlIHJvb3QgbWVzc2FnZQotICAgICAgb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcyBubyBlbnZlbG9wZSBoZWFkZXIsIGEgc3RhbmRhcmQgb25lIGlzCi0gICAgICBjcmFmdGVkLiAgQnkgZGVmYXVsdCwgdGhpcyBpcyBzZXQgdG8gYGBGYWxzZWBgIHRvIGluaGliaXQgdGhlIHByaW50aW5nIG9mCi0gICAgICB0aGUgZW52ZWxvcGUgZGVsaW1pdGVyLgotCi0gICAgICBOb3RlIHRoYXQgZm9yIHN1YnBhcnRzLCBubyBlbnZlbG9wZSBoZWFkZXIgaXMgZXZlciBwcmludGVkLgotCi0gICAgICBPcHRpb25hbCAqbGluZXNlcCogc3BlY2lmaWVzIHRoZSBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXIgdXNlZCB0bwotICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJZiBzcGVjaWZpZWQgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZQotICAgICAgc3BlY2lmaWVkIGJ5IHRoZSAqbXNnKlwncyBvciBgYEdlbmVyYXRvcmBgXCdzIGBgcG9saWN5YGAuCi0KLSAgICAgIEJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcywgaWYgdGhlIHBvbGljeSB0aGF0Ci0gICAgICBhcHBsaWVzIHdoZW4gYGBmbGF0dGVuYGAgaXMgcnVuIGhhcyA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCi0gICAgICBzZXQgdG8gYGA4Yml0YGAsIGBgR2VuZXJhdG9yYGAgd2lsbCBvcGVyYXRlIGFzIGlmIGl0IHdlcmUgc2V0IHRvCi0gICAgICBgYDdiaXRgYC4gIFRoaXMgbWVhbnMgdGhhdCBtZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUKLSAgICAgIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGBgOGJpdGBgIHdpbGwgYmUgY29udmVydGVkCi0gICAgICB0byBhIHVzZSBhIGBgN2JpdGBgIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBOb24tQVNDSUkgYnl0ZXMgaW4gdGhlCi0gICAgICBoZWFkZXJzIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZCB3aXRoIGEgY2hhcnNldCBvZiBgYHVua25vd24tOGJpdGBgLgotCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgYGA4Yml0YGAgbWVzc2FnZSBib2RpZXMsIGFuZCB0aGUKLSAgICAgICAgICpsaW5lc2VwKiBhcmd1bWVudC4KLQotICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCi0KLSAgICAgIFJldHVybiBhbiBpbmRlcGVuZGVudCBjbG9uZSBvZiB0aGlzIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZSB3aXRoIHRoZQotICAgICAgZXhhY3Qgc2FtZSBvcHRpb25zLgotCi0gICAuLiBtZXRob2Q6OiB3cml0ZShzKQotCi0gICAgICBXcml0ZSB0aGUgc3RyaW5nICpzKiB0byB0aGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCwgaS5lLiAqb3V0ZnAqIHBhc3NlZCB0bwotICAgICAgOmNsYXNzOmBHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuICBUaGlzIHByb3ZpZGVzIGp1c3QgZW5vdWdoIGZpbGUtbGlrZSBBUEkKLSAgICAgIGZvciA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2VzIHRvIGJlIHVzZWQgaW4gdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLUFzIGEgY29udmVuaWVuY2UsIHNlZSB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBtZXRob2RzCi06bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hc19zdHJpbmdgIGFuZCBgYHN0cihhTWVzc2FnZSlgYCwgYS5rLmEuCi06bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5fX3N0cl9fYCwgd2hpY2ggc2ltcGxpZnkgdGhlIGdlbmVyYXRpb24gb2YgYQotZm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKLTptb2Q6YGVtYWlsLm1lc3NhZ2VgLgotCi0uLiBjbGFzczo6IEJ5dGVzR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCAqLCBcCisuLiBjbGFzczo6IEJ5dGVzR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsICosIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpCiAKLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGNsYXNzIHRha2VzIGEgYmluYXJ5Ci0gICA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0Ci0gICBzdXBwb3J0IGEgOm1ldGg6YHdyaXRlYCBtZXRob2QgdGhhdCBhY2NlcHRzIGJpbmFyeSBkYXRhLgorICAgUmV0dXJuIGEgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgb2JqZWN0IHRoYXQgd2lsbCB3cml0ZSBhbnkgbWVzc2FnZSBwcm92aWRlZAorICAgdG8gdGhlIDptZXRoOmBmbGF0dGVuYCBtZXRob2QsIG9yIGFueSBzdXJyb2dhdGVlc2NhcGUgZW5jb2RlZCB0ZXh0IHByb3ZpZGVkCisgICB0byB0aGUgOm1ldGg6YHdyaXRlYCBtZXRob2QsIHRvIHRoZSA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAgKm91dGZwKi4KKyAgICpvdXRmcCogbXVzdCBzdXBwb3J0IGEgYGB3cml0ZWBgIG1ldGhvZCB0aGF0IGFjY2VwdHMgYmluYXJ5IGRhdGEuCiAKLSAgIE9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGEgZmxhZyB0aGF0LCB3aGVuIGBgVHJ1ZWBgLCBwdXRzIGEgYGA+YGAKLSAgIGNoYXJhY3RlciBpbiBmcm9udCBvZiBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyBleGFjdGx5IGFzIGBgRnJvbWBgLAotICAgaS5lLiBgYEZyb21gYCBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuICBUaGlzIGlzIHRoZQotICAgb25seSBndWFyYW50ZWVkIHBvcnRhYmxlIHdheSB0byBhdm9pZCBoYXZpbmcgc3VjaCBsaW5lcyBiZSBtaXN0YWtlbiBmb3IgYQotICAgVW5peCBtYWlsYm94IGZvcm1hdCBlbnZlbG9wZSBoZWFkZXIgc2VwYXJhdG9yIChzZWUgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEgKLSAgIEZPUk1BVCBJUyBCQUQgPGh0dHBzOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8gZm9yIGRldGFpbHMpLgotICAgKm1hbmdsZV9mcm9tXyogZGVmYXVsdHMgdG8gYGBUcnVlYGAsIGJ1dCB5b3UgbWlnaHQgd2FudCB0byBzZXQgdGhpcyB0bwotICAgYGBGYWxzZWBgIGlmIHlvdSBhcmUgbm90IHdyaXRpbmcgVW5peCBtYWlsYm94IGZvcm1hdCBmaWxlcy4KKyAgIElmIG9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGBgVHJ1ZWBgLCBwdXQgYSBgYD5gYCBjaGFyYWN0ZXIgaW4gZnJvbnQgb2YKKyAgIGFueSBsaW5lIGluIHRoZSBib2R5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGV4YWN0IHN0cmluZyBgYCJGcm9tICJgYCwgdGhhdCBpcworICAgYGBGcm9tYGAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZS4gICptYW5nbGVfZnJvbV8qCisgICBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tYW5nbGVfZnJvbV9gCisgICBzZXR0aW5nIG9mIHRoZSAqcG9saWN5KiAod2hpY2ggaXMgYGBUcnVlYGAgZm9yIHRoZQorICAgOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIHBvbGljeSBhbmQgYGBGYWxzZWBgIGZvciBhbGwgb3RoZXJzKS4KKyAgICptYW5nbGVfZnJvbV8qIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIHVuaXggbWJveAorICAgZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGAgYW5kIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RIIEZPUk1BVCBJUyBCQUQKKyAgIDxodHRwOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8pLgogCi0gICBPcHRpb25hbCAqbWF4aGVhZGVybGVuKiBzcGVjaWZpZXMgdGhlIGxvbmdlc3QgbGVuZ3RoIGZvciBhIG5vbi1jb250aW51ZWQKLSAgIGhlYWRlci4gIFdoZW4gYSBoZWFkZXIgbGluZSBpcyBsb25nZXIgdGhhbiAqbWF4aGVhZGVybGVuKiAoaW4gY2hhcmFjdGVycywKLSAgIHdpdGggdGFicyBleHBhbmRlZCB0byA4IHNwYWNlcyksIHRoZSBoZWFkZXIgd2lsbCBiZSBzcGxpdCBhcyBkZWZpbmVkIGluIHRoZQotICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgY2xhc3MuICBTZXQgdG8gemVybyB0byBkaXNhYmxlIGhlYWRlcgotICAgd3JhcHBpbmcuICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5Ci0gICA6cmZjOmAyODIyYC4KKyAgIElmICptYXhoZWFkZXJsZW4qIGlzIG5vdCBgYE5vbmVgYCwgcmVmb2xkIGFueSBoZWFkZXIgbGluZXMgdGhhdCBhcmUgbG9uZ2VyCisgICB0aGFuICptYXhoZWFkZXJsZW4qLCBvciBpZiBgYDBgYCwgZG8gbm90IHJld3JhcCBhbnkgaGVhZGVycy4gIElmCisgICAqbWFuaGVhZGVybGVuKiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB3cmFwIGhlYWRlcnMgYW5kIG90aGVyIG1lc3NhZ2UKKyAgIGxpbmVzIGFjY29yZGluZyB0byB0aGUgKnBvbGljeSogc2V0dGluZ3MuCiAKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCwgdXNlIHRoYXQgcG9saWN5IHRvIGNvbnRyb2wgbWVzc2FnZSBnZW5lcmF0aW9uLiAgSWYKKyAgICpwb2xpY3kqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHVzZSB0aGUgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCisgICBvYmplY3QgcGFzc2VkIHRvIGBgZmxhdHRlbmBgIHRvIGNvbnRyb2wgdGhlIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIFNlZQorICAgOm1vZDpgZW1haWwucG9saWN5YCBmb3IgZGV0YWlscyBvbiB3aGF0ICpwb2xpY3kqIGNvbnRyb2xzLgogCi0gICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCi0gICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgSWYgbm8gKnBvbGljeSogaXMgc3BlY2lmaWVkLAotICAgdGhlbiB0aGUgKnBvbGljeSogYXR0YWNoZWQgdG8gdGhlIG1lc3NhZ2Ugb2JqZWN0IHBhc3NlZCB0byA6YXR0cjpgZmxhdHRlbmAKLSAgIGlzIHVzZWQuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKLSAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgbWV0aG9kcyBhcmU6CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgKm1hbmdsZV9mcm9tXyoKKyAgICAgIGFuZCAqbWF4aGVhZGVybGVuKiBwYXJhbWV0ZXJzIGlzIHRvIGZvbGxvdyB0aGUgcG9saWN5LgogCiAKICAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1Ob25lKQogCiAgICAgICBQcmludCB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHJvb3RlZAogICAgICAgYXQgKm1zZyogdG8gdGhlIG91dHB1dCBmaWxlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYAotICAgICAgaW5zdGFuY2Ugd2FzIGNyZWF0ZWQuICBTdWJwYXJ0cyBhcmUgdmlzaXRlZCBkZXB0aC1maXJzdCBhbmQgdGhlIHJlc3VsdGluZwotICAgICAgdGV4dCB3aWxsIGJlIHByb3Blcmx5IE1JTUUgZW5jb2RlZC4gIElmIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBvcHRpb24KLSAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgaXMgYGA4Yml0YGAgKHRoZSBkZWZhdWx0KSwKLSAgICAgIHRoZW4gYW55IGJ5dGVzIHdpdGggdGhlIGhpZ2ggYml0IHNldCBpbiB0aGUgb3JpZ2luYWwgcGFyc2VkIG1lc3NhZ2UgdGhhdAotICAgICAgaGF2ZSBub3QgYmVlbiBtb2RpZmllZCB3aWxsIGJlIGNvcGllZCBmYWl0aGZ1bGx5IHRvIHRoZSBvdXRwdXQuICBJZgotICAgICAgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLCB0aGUgYnl0ZXMgd2lsbCBiZSBjb252ZXJ0ZWQgYXMgbmVlZGVkCi0gICAgICB1c2luZyBhbiBBU0NJSS1jb21wYXRpYmxlIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBJbiBwYXJ0aWN1bGFyLAotICAgICAgUkZDLWludmFsaWQgbm9uLUFTQ0lJIGJ5dGVzIGluIGhlYWRlcnMgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIHRoZSBNSU1FCi0gICAgICBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMgcmVuZGVyaW5nIHRoZW0gUkZDLWNvbXBsaWFudC4KKyAgICAgIGluc3RhbmNlIHdhcyBjcmVhdGVkLgogCi0gICAgICAuLiBYWFg6IFRoZXJlIHNob3VsZCBiZSBhIGNvbXBsZW1lbnRhcnkgb3B0aW9uIHRoYXQganVzdCBkb2VzIHRoZSBSRkMKLSAgICAgICAgIGNvbXBsaWFuY2UgdHJhbnNmb3JtYXRpb24gYnV0IGxlYXZlcyBDVEUgOGJpdCBwYXJ0cyBhbG9uZS4KKyAgICAgIElmIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBvcHRpb24gOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYAorICAgICAgaXMgYGA4Yml0YGAgKHRoZSBkZWZhdWx0KSwgY29weSBhbnkgaGVhZGVycyBpbiB0aGUgb3JpZ2luYWwgcGFyc2VkCisgICAgICBtZXNzYWdlIHRoYXQgaGF2ZSBub3QgYmVlbiBtb2RpZmllZCB0byB0aGUgb3V0cHV0IHdpdGggYW55IGJ5dGVzIHdpdGggdGhlCisgICAgICBoaWdoIGJpdCBzZXQgcmVwcm9kdWNlZCBhcyBpbiB0aGUgb3JpZ2luYWwsIGFuZCBwcmVzZXJ2ZSB0aGUgbm9uLUFTQ0lJCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgYW55IGJvZHkgcGFydHMgdGhhdCBoYXZlIHRoZW0uCisgICAgICBJZiBgYGN0ZV90eXBlYGAgaXMgYGA3Yml0YGAsIGNvbnZlcnQgdGhlIGJ5dGVzIHdpdGggdGhlIGhpZ2ggYml0IHNldCBhcworICAgICAgbmVlZGVkIHVzaW5nIGFuIEFTQ0lJLWNvbXBhdGlibGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLgorICAgICAgVGhhdCBpcywgdHJhbnNmb3JtIHBhcnRzIHdpdGggbm9uLUFTQ0lJCisgICAgICA6bWFpbGhlYWRlcjpgQ290bmVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdGApIHRvIGFuIEFTQ0lJIGNvbXBhdGliaWxlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AsIGFuZCBlbmNvZGUgUkZDLWludmFsaWQgbm9uLUFTQ0lJCisgICAgICBieXRlcyBpbiBoZWFkZXJzIHVzaW5nIHRoZSBNSU1FIGBgdW5rbm93bi04Yml0YGAgY2hhcmFjdGVyIHNldCwgdGh1cworICAgICAgcmVuZGVyaW5nIHRoZW0gUkZDLWNvbXBsaWFudC4KIAotICAgICAgTWVzc2FnZXMgcGFyc2VkIHdpdGggYSBCeXRlcyBwYXJzZXIgdGhhdCBoYXZlIGEKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0IHdpbGwgYmUgcmVjb25zdHJ1Y3RlZAotICAgICAgYXMgOGJpdCBpZiB0aGV5IGhhdmUgbm90IGJlZW4gbW9kaWZpZWQuCisgICAgICAuLiBYWFg6IFRoZXJlIHNob3VsZCBiZSBhbiBvcHRpb24gdGhhdCBqdXN0IGRvZXMgdGhlIFJGQworICAgICAgICAgY29tcGxpYW5jZSB0cmFuc2Zvcm1hdGlvbiBvbiBoZWFkZXJzIGJ1dCBsZWF2ZXMgQ1RFIDhiaXQgcGFydHMgYWxvbmUuCiAKLSAgICAgIE9wdGlvbmFsICp1bml4ZnJvbSogaXMgYSBmbGFnIHRoYXQgZm9yY2VzIHRoZSBwcmludGluZyBvZiB0aGUgZW52ZWxvcGUKLSAgICAgIGhlYWRlciBkZWxpbWl0ZXIgYmVmb3JlIHRoZSBmaXJzdCA6cmZjOmAyODIyYCBoZWFkZXIgb2YgdGhlIHJvb3QgbWVzc2FnZQotICAgICAgb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcyBubyBlbnZlbG9wZSBoZWFkZXIsIGEgc3RhbmRhcmQgb25lIGlzCi0gICAgICBjcmFmdGVkLiAgQnkgZGVmYXVsdCwgdGhpcyBpcyBzZXQgdG8gYGBGYWxzZWBgIHRvIGluaGliaXQgdGhlIHByaW50aW5nIG9mCi0gICAgICB0aGUgZW52ZWxvcGUgZGVsaW1pdGVyLgotCisgICAgICBJZiAqdW5peGZyb20qIGlzIGBgVHJ1ZWBgLCBwcmludCB0aGUgZW52ZWxvcGUgaGVhZGVyIGRlbGltaXRlciB1c2VkIGJ5CisgICAgICB0aGUgVW5peCBtYWlsYm94IGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgKSBiZWZvcmUgdGhlIGZpcnN0IG9mIHRoZQorICAgICAgOnJmYzpgNTMyMmAgaGVhZGVycyBvZiB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMKKyAgICAgIG5vIGVudmVsb3BlIGhlYWRlciwgY3JhZnQgYSBzdGFuZGFyZCBvbmUuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAgICAgICBOb3RlIHRoYXQgZm9yIHN1YnBhcnRzLCBubyBlbnZlbG9wZSBoZWFkZXIgaXMgZXZlciBwcmludGVkLgogCi0gICAgICBPcHRpb25hbCAqbGluZXNlcCogc3BlY2lmaWVzIHRoZSBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXIgdXNlZCB0bwotICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJZiBzcGVjaWZpZWQgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZQotICAgICAgc3BlY2lmaWVkIGJ5IHRoZSBgYEdlbmVyYXRvcmBgXCBvciAqbXNnKlwgJ3MgYGBwb2xpY3lgYC4KKyAgICAgIElmICpsaW5lc2VwKiBpcyBub3QgYGBOb25lYGAsIHVzZSBpdCBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3RlciBiZXR3ZWVuCisgICAgICBhbGwgdGhlIGxpbmVzIG9mIHRoZSBmbGF0dGVuZWQgbWVzc2FnZS4gIElmICpsaW5lc2VwKiBpcyBgYE5vbmVgYCAodGhlCisgICAgICBkZWZhdWx0KSwgdXNlIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlICpwb2xpY3kqLgorCisgICAgICAuLiBYWFg6IGZsYXR0ZW4gc2hvdWxkIHRha2UgYSAqcG9saWN5KiBrZXl3b3JkLgorCiAKICAgIC4uIG1ldGhvZDo6IGNsb25lKGZwKQogCiAgICAgICBSZXR1cm4gYW4gaW5kZXBlbmRlbnQgY2xvbmUgb2YgdGhpcyA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZSB3aXRoCi0gICAgICB0aGUgZXhhY3Qgc2FtZSBvcHRpb25zLgorICAgICAgdGhlIGV4YWN0IHNhbWUgb3B0aW9uIHNldHRpbmdzLCBhbmQgKmZwKiBhcyB0aGUgbmV3ICpvdXRmcCouCisKIAogICAgLi4gbWV0aG9kOjogd3JpdGUocykKIAotICAgICAgV3JpdGUgdGhlIHN0cmluZyAqcyogdG8gdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QuICAqcyogaXMgZW5jb2RlZCB1c2luZwotICAgICAgdGhlIGBgQVNDSUlgYCBjb2RlYyBhbmQgd3JpdHRlbiB0byB0aGUgKndyaXRlKiBtZXRob2Qgb2YgdGhlICAqb3V0ZnAqCi0gICAgICAqb3V0ZnAqIHBhc3NlZCB0byB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4gIFRoaXMKLSAgICAgIHByb3ZpZGVzIGp1c3QgZW5vdWdoIGZpbGUtbGlrZSBBUEkgZm9yIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlcwotICAgICAgdG8gYmUgdXNlZCBpbiB0aGUgOmZ1bmM6YHByaW50YCBmdW5jdGlvbi4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLVRoZSA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIGEgZGVyaXZlZCBjbGFzcywgY2FsbGVkCi06Y2xhc3M6YERlY29kZWRHZW5lcmF0b3JgIHdoaWNoIGlzIGxpa2UgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBiYXNlIGNsYXNzLAotZXhjZXB0IHRoYXQgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0cyBhcmUgc3Vic3RpdHV0ZWQgd2l0aCBhIGZvcm1hdCBzdHJpbmcKLXJlcHJlc2VudGluZyB0aGUgcGFydC4KKyAgICAgIEVuY29kZSAqcyogdXNpbmcgdGhlIGBgQVNDSUlgYCBjb2RlYyBhbmQgdGhlIGBgc3Vycm9nYXRlZXNjYXBlYGAgZXJyb3IKKyAgICAgIGhhbmRsZXIsIGFuZCBwYXNzIGl0IHRvIHRoZSAqd3JpdGUqIG1ldGhvZCBvZiB0aGUgKm91dGZwKiBwYXNzZWQgdG8gdGhlCisgICAgICA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLgogCiAKLS4uIGNsYXNzOjogRGVjb2RlZEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgZm10PU5vbmUpCitBcyBhIGNvbnZlbmllbmNlLCA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIG1ldGhvZHMKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuYXNfYnl0ZXNgIGFuZCBgYGJ5dGVzKGFNZXNzYWdlKWBgIChhLmsuYS4KKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuX19ieXRlc19fYCksIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mCithIHNlcmlhbGl6ZWQgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGEgbWVzc2FnZSBvYmplY3QuICBGb3IgbW9yZSBkZXRhaWwsIHNlZQorOm1vZDpgZW1haWwubWVzc2FnZWAuCiAKLSAgIFRoaXMgY2xhc3MsIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YEdlbmVyYXRvcmAgd2Fsa3MgdGhyb3VnaCBhbGwgdGhlIHN1YnBhcnRzIG9mIGEKLSAgIG1lc3NhZ2UuICBJZiB0aGUgc3VicGFydCBpcyBvZiBtYWluIHR5cGUgOm1pbWV0eXBlOmB0ZXh0YCwgdGhlbiBpdCBwcmludHMgdGhlCi0gICBkZWNvZGVkIHBheWxvYWQgb2YgdGhlIHN1YnBhcnQuIE9wdGlvbmFsICpfbWFuZ2xlX2Zyb21fKiBhbmQgKm1heGhlYWRlcmxlbiogYXJlCi0gICBhcyB3aXRoIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcy4KIAotICAgSWYgdGhlIHN1YnBhcnQgaXMgbm90IG9mIG1haW4gdHlwZSA6bWltZXR5cGU6YHRleHRgLCBvcHRpb25hbCAqZm10KiBpcyBhIGZvcm1hdAotICAgc3RyaW5nIHRoYXQgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBtZXNzYWdlIHBheWxvYWQuICpmbXQqIGlzIGV4cGFuZGVkIHdpdGggdGhlCi0gICBmb2xsb3dpbmcga2V5d29yZHMsIGBgJShrZXl3b3JkKXNgYCBmb3JtYXQ6CitCZWNhdXNlIHN0cmluZ3MgY2Fubm90IHJlcHJlc2VudCBiaW5hcnkgZGF0YSwgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyBtdXN0Citjb252ZXJ0IGFueSBiaW5hcnkgZGF0YSBpbiBhbnkgbWVzc2FnZSBpdCBmbGF0dGVucyB0byBhbiBBU0NJSSBjb21wYXRpYmxlCitmb3JtYXQsIGJ5IGNvbnZlcnRpbmcgdGhlbSB0byBhbiBBU0NJSSBjb21wYXRpYmxlCis6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlcl9FbmNvZGluZ2AuICBVc2luZyB0aGUgdGVybWlub2xvZ3kgb2YgdGhlIGVtYWlsCitSRkNzLCB5b3UgY2FuIHRoaW5rIG9mIHRoaXMgYXMgOmNsYXNzOmBHZW5lcmF0b3JgIHNlcmlhbGl6aW5nIHRvIGFuIEkvTyBzdHJlYW0KK3RoYXQgaXMgbm90ICI4IGJpdCBjbGVhbiIuICBJbiBvdGhlciB3b3JkcywgbW9zdCBhcHBsaWNhdGlvbnMgd2lsbCB3YW50Cit0byBiZSB1c2luZyA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCwgYW5kIG5vdCA6Y2xhc3M6YEdlbmVyYXRvcmAuCisKKy4uIGNsYXNzOjogR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsICosIFwKKyAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKQorCisgICBSZXR1cm4gYSA6Y2xhc3M6YEdlbmVyYXRvcmAgb2JqZWN0IHRoYXQgd2lsbCB3cml0ZSBhbnkgbWVzc2FnZSBwcm92aWRlZAorICAgdG8gdGhlIDptZXRoOmBmbGF0dGVuYCBtZXRob2QsIG9yIGFueSB0ZXh0IHByb3ZpZGVkIHRvIHRoZSA6bWV0aDpgd3JpdGVgCisgICBtZXRob2QsIHRvIHRoZSA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAgKm91dGZwKi4gICpvdXRmcCogbXVzdCBzdXBwb3J0IGEKKyAgIGBgd3JpdGVgYCBtZXRob2QgdGhhdCBhY2NlcHRzIHN0cmluZyBkYXRhLgorCisgICBJZiBvcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBgYFRydWVgYCwgcHV0IGEgYGA+YGAgY2hhcmFjdGVyIGluIGZyb250IG9mCisgICBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBleGFjdCBzdHJpbmcgYGAiRnJvbSAiYGAsIHRoYXQgaXMKKyAgIGBgRnJvbWBgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuICAqbWFuZ2xlX2Zyb21fKgorICAgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWFuZ2xlX2Zyb21fYAorICAgc2V0dGluZyBvZiB0aGUgKnBvbGljeSogKHdoaWNoIGlzIGBgVHJ1ZWBgIGZvciB0aGUKKyAgIDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBwb2xpY3kgYW5kIGBgRmFsc2VgYCBmb3IgYWxsIG90aGVycykuCisgICAqbWFuZ2xlX2Zyb21fKiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB1bml4IG1ib3gKKyAgIGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgIGFuZCBgV0hZIFRIRSBDT05URU5ULUxFTkdUSCBGT1JNQVQgSVMgQkFECisgICA8aHR0cDovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfKS4KKworICAgSWYgKm1heGhlYWRlcmxlbiogaXMgbm90IGBgTm9uZWBgLCByZWZvbGQgYW55IGhlYWRlciBsaW5lcyB0aGF0IGFyZSBsb25nZXIKKyAgIHRoYW4gKm1heGhlYWRlcmxlbiosIG9yIGlmIGBgMGBgLCBkbyBub3QgcmV3cmFwIGFueSBoZWFkZXJzLiAgSWYKKyAgICptYW5oZWFkZXJsZW4qIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHdyYXAgaGVhZGVycyBhbmQgb3RoZXIgbWVzc2FnZQorICAgbGluZXMgYWNjb3JkaW5nIHRvIHRoZSAqcG9saWN5KiBzZXR0aW5ncy4KKworICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkLCB1c2UgdGhhdCBwb2xpY3kgdG8gY29udHJvbCBtZXNzYWdlIGdlbmVyYXRpb24uICBJZgorICAgKnBvbGljeSogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdXNlIHRoZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKKyAgIG9iamVjdCBwYXNzZWQgdG8gYGBmbGF0dGVuYGAgdG8gY29udHJvbCB0aGUgbWVzc2FnZSBnZW5lcmF0aW9uLiAgU2VlCisgICA6bW9kOmBlbWFpbC5wb2xpY3lgIGZvciBkZXRhaWxzIG9uIHdoYXQgKnBvbGljeSogY29udHJvbHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgKm1hbmdsZV9mcm9tXyoKKyAgICAgIGFuZCAqbWF4aGVhZGVybGVuKiBwYXJhbWV0ZXJzIGlzIHRvIGZvbGxvdyB0aGUgcG9saWN5LgorCisKKyAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1Ob25lKQorCisgICAgICBQcmludCB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHJvb3RlZAorICAgICAgYXQgKm1zZyogdG8gdGhlIG91dHB1dCBmaWxlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAKKyAgICAgIGluc3RhbmNlIHdhcyBjcmVhdGVkLgorCisgICAgICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAKKyAgICAgIGlzIGBgOGJpdGBgLCBnZW5lcmF0ZSB0aGUgbWVzc2FnZSBhcyBpZiB0aGUgb3B0aW9uIHdlcmUgc2V0IHRvIGBgN2JpdGBgLgorICAgICAgKFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBzdHJpbmdzIGNhbm5vdCByZXByZXNlbnQgbm9uLUFTQ0lJIGJ5dGVzLikKKyAgICAgIENvbnZlcnQgYW55IGJ5dGVzIHdpdGggdGhlIGhpZ2ggYml0IHNldCBhcyBuZWVkZWQgdXNpbmcgYW4KKyAgICAgIEFTQ0lJLWNvbXBhdGlibGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLiAgVGhhdCBpcywKKyAgICAgIHRyYW5zZm9ybSBwYXJ0cyB3aXRoIG5vbi1BU0NJSSA6bWFpbGhlYWRlcjpgQ290bmVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdGApIHRvIGFuIEFTQ0lJIGNvbXBhdGliaWxlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AsIGFuZCBlbmNvZGUgUkZDLWludmFsaWQgbm9uLUFTQ0lJCisgICAgICBieXRlcyBpbiBoZWFkZXJzIHVzaW5nIHRoZSBNSU1FIGBgdW5rbm93bi04Yml0YGAgY2hhcmFjdGVyIHNldCwgdGh1cworICAgICAgcmVuZGVyaW5nIHRoZW0gUkZDLWNvbXBsaWFudC4KKworICAgICAgSWYgKnVuaXhmcm9tKiBpcyBgYFRydWVgYCwgcHJpbnQgdGhlIGVudmVsb3BlIGhlYWRlciBkZWxpbWl0ZXIgdXNlZCBieQorICAgICAgdGhlIFVuaXggbWFpbGJveCBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCkgYmVmb3JlIHRoZSBmaXJzdCBvZiB0aGUKKyAgICAgIDpyZmM6YDUzMjJgIGhlYWRlcnMgb2YgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzCisgICAgICBubyBlbnZlbG9wZSBoZWFkZXIsIGNyYWZ0IGEgc3RhbmRhcmQgb25lLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgorICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KKworICAgICAgSWYgKmxpbmVzZXAqIGlzIG5vdCBgYE5vbmVgYCwgdXNlIGl0IGFzIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyIGJldHdlZW4KKyAgICAgIGFsbCB0aGUgbGluZXMgb2YgdGhlIGZsYXR0ZW5lZCBtZXNzYWdlLiAgSWYgKmxpbmVzZXAqIGlzIGBgTm9uZWBgICh0aGUKKyAgICAgIGRlZmF1bHQpLCB1c2UgdGhlIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgKnBvbGljeSouCisKKyAgICAgIC4uIFhYWDogZmxhdHRlbiBzaG91bGQgdGFrZSBhICpwb2xpY3kqIGtleXdvcmQuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciByZS1lbmNvZGluZyBgYDhiaXRgYCBtZXNzYWdlIGJvZGllcywgYW5kIHRoZQorICAgICAgICAgKmxpbmVzZXAqIGFyZ3VtZW50LgorCisKKyAgIC4uIG1ldGhvZDo6IGNsb25lKGZwKQorCisgICAgICBSZXR1cm4gYW4gaW5kZXBlbmRlbnQgY2xvbmUgb2YgdGhpcyA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aCB0aGUKKyAgICAgIGV4YWN0IHNhbWUgb3B0aW9ucywgYW5kICpmcCogYXMgdGhlIG5ldyAqb3V0ZnAqLgorCisKKyAgIC4uIG1ldGhvZDo6IHdyaXRlKHMpCisKKyAgICAgIFdyaXRlICpzKiB0byB0aGUgKndyaXRlKiBtZXRob2Qgb2YgdGhlICpvdXRmcCogcGFzc2VkIHRvIHRoZQorICAgICAgOmNsYXNzOmBHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuICBUaGlzIHByb3ZpZGVzIGp1c3QgZW5vdWdoIGZpbGUtbGlrZQorICAgICAgQVBJIGZvciA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2VzIHRvIGJlIHVzZWQgaW4gdGhlIDpmdW5jOmBwcmludGAKKyAgICAgIGZ1bmN0aW9uLgorCisKK0FzIGEgY29udmVuaWVuY2UsIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBwcm92aWRlcyB0aGUgbWV0aG9kcworOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5hc19zdHJpbmdgIGFuZCBgYHN0cihhTWVzc2FnZSlgYCAoYS5rLmEuCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLl9fc3RyX19gKSwgd2hpY2ggc2ltcGxpZnkgdGhlIGdlbmVyYXRpb24gb2YKK2EgZm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKKzptb2Q6YGVtYWlsLm1lc3NhZ2VgLgorCisKK1RoZSA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIGEgZGVyaXZlZCBjbGFzcywKKzpjbGFzczpgRGVjb2RlZEdlbmVyYXRvcmAsIHdoaWNoIGlzIGxpa2UgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBiYXNlIGNsYXNzLAorZXhjZXB0IHRoYXQgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0cyBhcmUgbm90IHNlcmlhbGl6ZWQsIGJ1dCBhcmUgaW5zdGVhZAorcmVwcmVzZW50ZWQgaW4gdGhlIG91dHB1dCBzdHJlYW0gYnkgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgdGVtcGxhdGUgZmlsbGVkCitpbiB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXJ0LgorCisuLiBjbGFzczo6IERlY29kZWRHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdD1Ob25lLCAqLCBwb2xpY3k9Tm9uZSkKKworICAgQWN0IGxpa2UgOmNsYXNzOmBHZW5lcmF0b3JgLCBleGNlcHQgdGhhdCBmb3IgYW55IHN1YnBhcnQgb2YgdGhlIG1lc3NhZ2UKKyAgIHBhc3NlZCB0byA6bWV0aDpgR2VuZXJhdG9yLmZsYXR0ZW5gLCBpZiB0aGUgc3VicGFydCBpcyBvZiBtYWluIHR5cGUKKyAgIDptaW1ldHlwZTpgdGV4dGAsIHByaW50IHRoZSBkZWNvZGVkIHBheWxvYWQgb2YgdGhlIHN1YnBhcnQsIGFuZCBpZiB0aGUgbWFpbgorICAgdHlwZSBpcyBub3QgOm1pbWV0eXBlOmB0ZXh0YCwgaW5zdGVhZCBvZiBwcmludGluZyBpdCBmaWxsIGluIHRoZSBzdHJpbmcKKyAgICpmbXQqIHVzaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIHBhcnQgYW5kIHByaW50IHRoZSByZXN1bHRpbmcKKyAgIGZpbGxlZC1pbiBzdHJpbmcuCisKKyAgIFRvIGZpbGwgaW4gKmZtdCosIGV4ZWN1dGUgYGBmbXQgJSBwYXJ0X2luZm9gYCwgd2hlcmUgYGBwYXJ0X2luZm9gYAorICAgaXMgYSBkaWN0aW9uYXJ5IGNvbXBvc2VkIG9mIHRoZSBmb2xsb3dpbmcga2V5cyBhbmQgdmFsdWVzOgogCiAgICAqIGBgdHlwZWBgIC0tIEZ1bGwgTUlNRSB0eXBlIG9mIHRoZSBub24tXCA6bWltZXR5cGU6YHRleHRgIHBhcnQKIApAQCAtMjI1LDE1ICsyNTksMjEgQEAKIAogICAgKiBgYGVuY29kaW5nYGAgLS0gQ29udGVudCB0cmFuc2ZlciBlbmNvZGluZyBvZiB0aGUgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0CiAKLSAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciAqZm10KiBpcyBgYE5vbmVgYCwgbWVhbmluZyA6OgorICAgSWYgKmZtdCogaXMgYGBOb25lYGAsIHVzZSB0aGUgZm9sbG93aW5nIGRlZmF1bHQgKmZtdCo6CiAKLSAgICAgIFtOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdCisgICAgICAiW05vbi10ZXh0ICglKHR5cGUpcykgcGFydCBvZiBtZXNzYWdlIG9taXR0ZWQsIGZpbGVuYW1lICUoZmlsZW5hbWUpc10iCisKKyAgIE9wdGlvbmFsICpfbWFuZ2xlX2Zyb21fKiBhbmQgKm1heGhlYWRlcmxlbiogYXJlIGFzIHdpdGggdGhlCisgICA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcy4KIAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIFRoaXMgc3RhdGVtZW50IGFzc3VtZXMgdGhhdCB5b3UgdXNlIHRoZSBhcHByb3ByaWF0ZSBzZXR0aW5nIGZvciB0aGUKLSAgICAgICBgYHVuaXhmcm9tYGAgYXJndW1lbnQsIGFuZCB0aGF0IHlvdSBzZXQgbWF4aGVhZGVybGVuPTAgKHdoaWNoIHdpbGwKLSAgICAgICBwcmVzZXJ2ZSB3aGF0ZXZlciB0aGUgaW5wdXQgbGluZSBsZW5ndGhzIHdlcmUpLiAgSXQgaXMgYWxzbyBub3Qgc3RyaWN0bHkKLSAgICAgICB0cnVlLCBzaW5jZSBpbiBtYW55IGNhc2VzIHJ1bnMgb2Ygd2hpdGVzcGFjZSBpbiBoZWFkZXJzIGFyZSBjb2xsYXBzZWQKLSAgICAgICBpbnRvIHNpbmdsZSBibGFua3MuICBUaGUgbGF0dGVyIGlzIGEgYnVnIHRoYXQgd2lsbCBldmVudHVhbGx5IGJlIGZpeGVkLgorLi4gWyNdIFRoaXMgc3RhdGVtZW50IGFzc3VtZXMgdGhhdCB5b3UgdXNlIHRoZSBhcHByb3ByaWF0ZSBzZXR0aW5nIGZvcgorICAgICAgIGBgdW5peGZyb21gYCwgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIDptb2Q6YHBvbGljeWAgc2V0dGluZ3MgY2FsbGluZyBmb3IKKyAgICAgICBhdXRvbWF0aWMgYWRqdXN0bWVudHMgKGZvciBleGFtcGxlLAorICAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5yZWZvbGRfc291cmNlYCBtdXN0IGJlIGBgbm9uZWBgLCB3aGljaCBpcworICAgICAgICpub3QqIHRoZSBkZWZhdWx0KS4gIEl0IGlzIGFsc28gbm90IDEwMCUgdHJ1ZSwgc2luY2UgaWYgdGhlIG1lc3NhZ2UKKyAgICAgICBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBSRkMgc3RhbmRhcmRzIG9jY2FzaW9uYWxseSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgICBleGFjdCBvcmlnaW5hbCB0ZXh0IGlzIGxvc3QgZHVyaW5nIHBhcnNpbmcgZXJyb3IgcmVjb3ZlcnkuICBJdCBpcyBhIGdvYWwKKyAgICAgICB0byBmaXggdGhlc2UgbGF0dGVyIGVkZ2UgY2FzZXMgd2hlbiBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CmluZGV4IGU5NDgzN2MuLjA3MTUyYzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdApAQCAtOCw2ICs4LDE0IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBJbiB0aGUgY3VycmVudCBBUEkKK2VuY29kaW5nIGFuZCBkZWNvZGluZyBvZiBoZWFkZXJzIGlzIGhhbmRsZWQgdHJhbnNwYXJlbnRseSBieSB0aGUKK2RpY3Rpb25hcnktbGlrZSBBUEkgb2YgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcy4gIEluCithZGRpdGlvbiB0byB1c2VzIGluIGxlZ2FjeSBjb2RlLCB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZnVsIGluIGFwcGxpY2F0aW9ucyB0aGF0CituZWVkIHRvIGNvbXBsZXRlbHkgY29udHJvbCB0aGUgY2hhcmFjdGVyIHNldHMgdXNlZCB3aGVuIGVuY29kaW5nIGhlYWRlcnMuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogOnJmYzpgMjgyMmAgaXMgdGhlIGJhc2Ugc3RhbmRhcmQgdGhhdCBkZXNjcmliZXMgdGhlIGZvcm1hdCBvZiBlbWFpbCBtZXNzYWdlcy4KIEl0IGRlcml2ZXMgZnJvbSB0aGUgb2xkZXIgOnJmYzpgODIyYCBzdGFuZGFyZCB3aGljaCBjYW1lIGludG8gd2lkZXNwcmVhZCB1c2UgYXQKIGEgdGltZSB3aGVuIG1vc3QgZW1haWwgd2FzIGNvbXBvc2VkIG9mIEFTQ0lJIGNoYXJhY3RlcnMgb25seS4gIDpyZmM6YDI4MjJgIGlzIGEKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdAppbmRleCAwNzA3YmQ4Li4yYzgzMGNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CkBAIC03LDIwICs3LDEyIEBACiAuLiBtb2R1bGVhdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIC4uIHNlY3Rpb25hdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIAotLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0gICBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4KLQogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHlgCiAKLS4uIG5vdGU6OgotCi0gICBUaGUgaGVhZGVycmVnaXN0cnkgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAotICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KIC0tLS0tLS0tLS0tLS0tCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCisKIEhlYWRlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IGN1c3RvbWl6ZWQgc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YHN0cmAuICBUaGUKIHBhcnRpY3VsYXIgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgYSBnaXZlbiBoZWFkZXIgaXMgZGV0ZXJtaW5lZCBieSB0aGUKIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5YCBvZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgaW4KQEAgLTg2LDEwICs3OCwxMSBAQAogICAgLi4gbWV0aG9kOjogZm9sZCgqLCBwb2xpY3kpCiAKICAgICAgIFJldHVybiBhIHN0cmluZyBjb250YWluaW5nIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5saW5lc2VwYAotICAgICAgY2hhcmFjdGVycyBhcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgZm9sZCB0aGUgaGVhZGVyIGFjY29yZGluZwotICAgICAgdG8gKnBvbGljeSouICBBIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgb2YKLSAgICAgIGBgOGJpdGBgIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBgN2JpdGBgLCBzaW5jZSBzdHJpbmdzCi0gICAgICBtYXkgbm90IGNvbnRhaW4gYmluYXJ5IGRhdGEuCisgICAgICBjaGFyYWN0ZXJzIGFzIHJlcXVpcmVkIHRvIGNvcnJlY3RseSBmb2xkIHRoZSBoZWFkZXIgYWNjb3JkaW5nIHRvCisgICAgICAqcG9saWN5Ki4gIEEgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYCBvZiBgYDhiaXRgYCB3aWxsIGJlCisgICAgICB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgYGA3Yml0YGAsIHNpbmNlIGhlYWRlcnMgbWF5IG5vdCBjb250YWluIGFyYml0cmFyeQorICAgICAgYmluYXJ5IGRhdGEuICBJZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS51dGY4YCBpcyBgYEZhbHNlYGAsCisgICAgICBub24tQVNDSUkgZGF0YSB3aWxsIGJlIDpyZmM6YDIwNDdgIGVuY29kZWQuCiAKIAogICAgYGBCYXNlSGVhZGVyYGAgYnkgaXRzZWxmIGNhbm5vdCBiZSB1c2VkIHRvIGNyZWF0ZSBhIGhlYWRlciBvYmplY3QuICBJdApAQCAtMTA2LDcgKzk5LDcgQEAKICAgIHZhbHVlcyBmb3IgYXQgbGVhc3QgdGhlIGtleXMgYGBkZWNvZGVkYGAgYW5kIGBgZGVmZWN0c2BgLiAgYGBkZWNvZGVkYGAKICAgIHNob3VsZCBiZSB0aGUgc3RyaW5nIHZhbHVlIGZvciB0aGUgaGVhZGVyICh0aGF0IGlzLCB0aGUgaGVhZGVyIHZhbHVlIGZ1bGx5CiAgICBkZWNvZGVkIHRvIHVuaWNvZGUpLiAgVGhlIHBhcnNlIG1ldGhvZCBzaG91bGQgYXNzdW1lIHRoYXQgKnN0cmluZyogbWF5Ci0gICBjb250YWluIHRyYW5zcG9ydCBlbmNvZGVkIHBhcnRzLCBidXQgc2hvdWxkIGNvcnJlY3RseSBoYW5kbGUgYWxsIHZhbGlkCisgICBjb250YWluIGNvbnRlbnQtdHJhbnNmZXItZW5jb2RlZCBwYXJ0cywgYnV0IHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFsbCB2YWxpZAogICAgdW5pY29kZSBjaGFyYWN0ZXJzIGFzIHdlbGwgc28gdGhhdCBpdCBjYW4gcGFyc2UgdW4tZW5jb2RlZCBoZWFkZXIgdmFsdWVzLgogCiAgICBgYEJhc2VIZWFkZXJgYCdzIGBgX19uZXdfX2BgIHRoZW4gY3JlYXRlcyB0aGUgaGVhZGVyIGluc3RhbmNlLCBhbmQgY2FsbHMgaXRzCkBAIC0xMzUsMTEgKzEyOCwxMCBAQAogICAgbWVjaGFuaXNtIGZvciBlbmNvZGluZyBub24tQVNDSUkgdGV4dCBhcyBBU0NJSSBjaGFyYWN0ZXJzIHdpdGhpbiBhIGhlYWRlcgogICAgdmFsdWUuICBXaGVuIGEgKnZhbHVlKiBjb250YWluaW5nIGVuY29kZWQgd29yZHMgaXMgcGFzc2VkIHRvIHRoZQogICAgY29uc3RydWN0b3IsIHRoZSBgYFVuc3RydWN0dXJlZEhlYWRlcmBgIHBhcnNlciBjb252ZXJ0cyBzdWNoIGVuY29kZWQgd29yZHMKLSAgIGJhY2sgaW4gdG8gdGhlIG9yaWdpbmFsIHVuaWNvZGUsIGZvbGxvd2luZyB0aGUgOnJmYzpgMjA0N2AgcnVsZXMgZm9yCi0gICB1bnN0cnVjdHVyZWQgdGV4dC4gIFRoZSBwYXJzZXIgdXNlcyBoZXVyaXN0aWNzIHRvIGF0dGVtcHQgdG8gZGVjb2RlIGNlcnRhaW4KLSAgIG5vbi1jb21wbGlhbnQgZW5jb2RlZCB3b3Jkcy4gIERlZmVjdHMgYXJlIHJlZ2lzdGVyZWQgaW4gc3VjaCBjYXNlcywgYXMgd2VsbAotICAgYXMgZGVmZWN0cyBmb3IgaXNzdWVzIHN1Y2ggYXMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgZW5jb2RlZCB3b3JkcyBvcgotICAgdGhlIG5vbi1lbmNvZGVkIHRleHQuCisgICBpbnRvIHVuaWNvZGUsIGZvbGxvd2luZyB0aGUgOnJmYzpgMjA0N2AgcnVsZXMgZm9yIHVuc3RydWN0dXJlZCB0ZXh0LiAgVGhlCisgICBwYXJzZXIgdXNlcyBoZXVyaXN0aWNzIHRvIGF0dGVtcHQgdG8gZGVjb2RlIGNlcnRhaW4gbm9uLWNvbXBsaWFudCBlbmNvZGVkCisgICB3b3Jkcy4gIERlZmVjdHMgYXJlIHJlZ2lzdGVyZWQgaW4gc3VjaCBjYXNlcywgYXMgd2VsbCBhcyBkZWZlY3RzIGZvciBpc3N1ZXMKKyAgIHN1Y2ggYXMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgZW5jb2RlZCB3b3JkcyBvciB0aGUgbm9uLWVuY29kZWQgdGV4dC4KIAogICAgVGhpcyBoZWFkZXIgdHlwZSBwcm92aWRlcyBubyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMuCiAKQEAgLTIxMywxNSArMjA1LDE2IEBACiAgICAgICB0aGUgbGlzdCBvZiBhZGRyZXNzZXMgaXMgImZsYXR0ZW5lZCIgaW50byBhIG9uZSBkaW1lbnNpb25hbCBsaXN0KS4KIAogICAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIG9mIHRoZSBoZWFkZXIgd2lsbCBoYXZlIGFsbCBlbmNvZGVkIHdvcmRzIGRlY29kZWQgdG8KLSAgIHVuaWNvZGUuICA6Y2xhc3M6YH5lbmNvZGluZ3MuaWRuYWAgZW5jb2RlZCBkb21haW4gbmFtZXMgYXJlIGFsc28gZGVjb2RlZCB0byB1bmljb2RlLiAgVGhlCi0gICBgYGRlY29kZWRgYCB2YWx1ZSBpcyBzZXQgYnkgOmF0dHI6YH5zdHIuam9pbmBcIGluZyB0aGUgOmNsYXNzOmBzdHJgIHZhbHVlIG9mCi0gICB0aGUgZWxlbWVudHMgb2YgdGhlIGBgZ3JvdXBzYGAgYXR0cmlidXRlIHdpdGggYGAnLCAnYGAuCisgICB1bmljb2RlLiAgOmNsYXNzOmB+ZW5jb2RpbmdzLmlkbmFgIGVuY29kZWQgZG9tYWluIG5hbWVzIGFyZSBhbHNvIGRlY29kZWQgdG8KKyAgIHVuaWNvZGUuICBUaGUgYGBkZWNvZGVkYGAgdmFsdWUgaXMgc2V0IGJ5IDphdHRyOmB+c3RyLmpvaW5gXCBpbmcgdGhlCisgICA6Y2xhc3M6YHN0cmAgdmFsdWUgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSB3aXRoIGBgJywKKyAgICdgYC4KIAogICAgQSBsaXN0IG9mIDpjbGFzczpgLkFkZHJlc3NgIGFuZCA6Y2xhc3M6YC5Hcm91cGAgb2JqZWN0cyBpbiBhbnkgY29tYmluYXRpb24KICAgIG1heSBiZSB1c2VkIHRvIHNldCB0aGUgdmFsdWUgb2YgYW4gYWRkcmVzcyBoZWFkZXIuICBgYEdyb3VwYGAgb2JqZWN0cyB3aG9zZQogICAgYGBkaXNwbGF5X25hbWVgYCBpcyBgYE5vbmVgYCB3aWxsIGJlIGludGVycHJldGVkIGFzIHNpbmdsZSBhZGRyZXNzZXMsIHdoaWNoCiAgICBhbGxvd3MgYW4gYWRkcmVzcyBsaXN0IHRvIGJlIGNvcGllZCB3aXRoIGdyb3VwcyBpbnRhY3QgYnkgdXNpbmcgdGhlIGxpc3QKLSAgIG9idGFpbmVkIGBgZ3JvdXBzYGAgYXR0cmlidXRlIG9mIHRoZSBzb3VyY2UgaGVhZGVyLgorICAgb2J0YWluZWQgZnJvbSB0aGUgYGBncm91cHNgYCBhdHRyaWJ1dGUgb2YgdGhlIHNvdXJjZSBoZWFkZXIuCiAKIAogLi4gY2xhc3M6OiBTaW5nbGVBZGRyZXNzSGVhZGVyCkBAIC0yNjcsNyArMjYwLDcgQEAKIAogLi4gY2xhc3M6OiBQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcgogCi0gICAgTU9NRSBoZWFkZXJzIGFsbCBzdGFydCB3aXRoIHRoZSBwcmVmaXggJ0NvbnRlbnQtJy4gIEVhY2ggc3BlY2lmaWMgaGVhZGVyIGhhcworICAgIE1JTUUgaGVhZGVycyBhbGwgc3RhcnQgd2l0aCB0aGUgcHJlZml4ICdDb250ZW50LScuICBFYWNoIHNwZWNpZmljIGhlYWRlciBoYXMKICAgICBhIGNlcnRhaW4gdmFsdWUsIGRlc2NyaWJlZCB1bmRlciB0aGUgY2xhc3MgZm9yIHRoYXQgaGVhZGVyLiAgU29tZSBjYW4KICAgICBhbHNvIHRha2UgYSBsaXN0IG9mIHN1cHBsZW1lbnRhbCBwYXJhbWV0ZXJzLCB3aGljaCBoYXZlIGEgY29tbW9uIGZvcm1hdC4KICAgICBUaGlzIGNsYXNzIHNlcnZlcyBhcyBhIGJhc2UgZm9yIGFsbCB0aGUgTUlNRSBoZWFkZXJzIHRoYXQgdGFrZSBwYXJhbWV0ZXJzLgpAQCAtNDU0LDMgKzQ0Nyw5IEBACiAgICAgICBgYGRpc3BsYXlfbmFtZWBgIGlzIG5vbmUgYW5kIHRoZXJlIGlzIGEgc2luZ2xlIGBgQWRkcmVzc2BgIGluIHRoZQogICAgICAgYGBhZGRyZXNzZXNgYCBsaXN0LCB0aGUgYGBzdHJgYCB2YWx1ZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBgYHN0cmBgIG9mCiAgICAgICB0aGF0IHNpbmdsZSBgYEFkZHJlc3NgYC4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjMgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAppbmRleCAyOTA3OTc1Li45NTEzNmQyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdApAQCAtMyw5MSArMywxMDIgQEAKIAogLi4gbW9kdWxlOjogZW1haWwubWVzc2FnZQogICAgOnN5bm9wc2lzOiBUaGUgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgZW1haWwgbWVzc2FnZXMuCisuLiBtb2R1bGVhdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4sCisgICAgICAgICAgICAgICAgICAgQmFycnkgQS4gV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPgogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbWFpbC9tZXNzYWdlLnB5YAogCiAtLS0tLS0tLS0tLS0tLQogCi1UaGUgY2VudHJhbCBjbGFzcyBpbiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgdGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3MsCi1pbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCBtb2R1bGUuICBJdCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgdGhlCi06bW9kOmBlbWFpbGAgb2JqZWN0IG1vZGVsLiAgOmNsYXNzOmBNZXNzYWdlYCBwcm92aWRlcyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGZvcgotc2V0dGluZyBhbmQgcXVlcnlpbmcgaGVhZGVyIGZpZWxkcywgYW5kIGZvciBhY2Nlc3NpbmcgbWVzc2FnZSBib2RpZXMuCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXwogCi1Db25jZXB0dWFsbHksIGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QgY29uc2lzdHMgb2YgKmhlYWRlcnMqIGFuZCAqcGF5bG9hZHMqLgotSGVhZGVycyBhcmUgOnJmYzpgMjgyMmAgc3R5bGUgZmllbGQgbmFtZXMgYW5kIHZhbHVlcyB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQKLXZhbHVlIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBjb2xvbiBpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUKLW9yIHRoZSBmaWVsZCB2YWx1ZS4KK1RoZSBjZW50cmFsIGNsYXNzIGluIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyB0aGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCitjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLiAgSXQgaXMgdGhlIGJhc2UgY2xhc3MgZm9yCit0aGUgOm1vZDpgZW1haWxgIG9iamVjdCBtb2RlbC4gIDpjbGFzczpgRW1haWxNZXNzYWdlYCBwcm92aWRlcyB0aGUgY29yZQorZnVuY3Rpb25hbGl0eSBmb3Igc2V0dGluZyBhbmQgcXVlcnlpbmcgaGVhZGVyIGZpZWxkcywgZm9yIGFjY2Vzc2luZyBtZXNzYWdlCitib2RpZXMsIGFuZCBmb3IgY3JlYXRpbmcgb3IgbW9kaWZ5aW5nIHN0cnVjdHVyZWQgbWVzc2FnZXMuCiAKLUhlYWRlcnMgYXJlIHN0b3JlZCBhbmQgcmV0dXJuZWQgaW4gY2FzZS1wcmVzZXJ2aW5nIGZvcm0gYnV0IGFyZSBtYXRjaGVkCi1jYXNlLWluc2Vuc2l0aXZlbHkuICBUaGVyZSBtYXkgYWxzbyBiZSBhIHNpbmdsZSBlbnZlbG9wZSBoZWFkZXIsIGFsc28ga25vd24gYXMKLXRoZSAqVW5peC1Gcm9tKiBoZWFkZXIgb3IgdGhlIGBgRnJvbV9gYCBoZWFkZXIuICBUaGUgcGF5bG9hZCBpcyBlaXRoZXIgYSBzdHJpbmcKLWluIHRoZSBjYXNlIG9mIHNpbXBsZSBtZXNzYWdlIG9iamVjdHMgb3IgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBmb3IKLU1JTUUgY29udGFpbmVyIGRvY3VtZW50cyAoZS5nLiA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgYW5kCi06bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCkuCitBbiBlbWFpbCBtZXNzYWdlIGNvbnNpc3RzIG9mICpoZWFkZXJzKiBhbmQgYSAqcGF5bG9hZCogKHdoaWNoIGlzIGFsc28gcmVmZXJyZWQKK3RvIGFzIHRoZSAqY29udGVudCopLiAgSGVhZGVycyBhcmUgOnJmYzpgNTMyMmAgb3IgOnJmYzpgNjUzMmAgc3R5bGUgZmllbGQgbmFtZXMKK2FuZCB2YWx1ZXMsIHdoZXJlIHRoZSBmaWVsZCBuYW1lIGFuZCB2YWx1ZSBhcmUgc2VwYXJhdGVkIGJ5IGEgY29sb24uICBUaGUgY29sb24KK2lzIG5vdCBwYXJ0IG9mIGVpdGhlciB0aGUgZmllbGQgbmFtZSBvciB0aGUgZmllbGQgdmFsdWUuICBUaGUgcGF5bG9hZCBtYXkgYmUgYQorc2ltcGxlIHRleHQgbWVzc2FnZSwgb3IgYSBiaW5hcnkgb2JqZWN0LCBvciBhIHN0cnVjdHVyZWQgc2VxdWVuY2Ugb2YKK3N1Yi1tZXNzYWdlcyBlYWNoIHdpdGggdGhlaXIgb3duIHNldCBvZiBoZWFkZXJzIGFuZCB0aGVpciBvd24gcGF5bG9hZC4gIFRoZQorbGF0dGVyIHR5cGUgb2YgcGF5bG9hZCBpcyBpbmRpY2F0ZWQgYnkgdGhlIG1lc3NhZ2UgaGF2aW5nIGEgTUlNRSB0eXBlIHN1Y2ggYXMKKzptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4KIAotOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIHByb3ZpZGUgYSBtYXBwaW5nIHN0eWxlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQotbWVzc2FnZSBoZWFkZXJzLCBhbmQgYW4gZXhwbGljaXQgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgYm90aCB0aGUgaGVhZGVycyBhbmQKLXRoZSBwYXlsb2FkLiAgSXQgcHJvdmlkZXMgY29udmVuaWVuY2UgbWV0aG9kcyBmb3IgZ2VuZXJhdGluZyBhIGZsYXQgdGV4dAotcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHRyZWUsIGZvciBhY2Nlc3NpbmcgY29tbW9ubHkgdXNlZCBoZWFkZXIKLXBhcmFtZXRlcnMsIGFuZCBmb3IgcmVjdXJzaXZlbHkgd2Fsa2luZyBvdmVyIHRoZSBvYmplY3QgdHJlZS4KK1RoZSBjb25jZXB0dWFsIG1vZGVsIHByb3ZpZGVkIGJ5IGFuIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3QgaXMgdGhhdCBvZiBhbgorb3JkZXJlZCBkaWN0aW9uYXJ5IG9mIGhlYWRlcnMgY291cGxlZCB3aXRoIGEgKnBheWxvYWQqIHRoYXQgcmVwcmVzZW50cyB0aGUKKzpyZmM6YDUzMjJgIGJvZHkgb2YgdGhlIG1lc3NhZ2UsIHdoaWNoIG1pZ2h0IGJlIGEgbGlzdCBvZiBzdWItYGBFbWFpbE1lc3NhZ2VgYAorb2JqZWN0cy4gIEluIGFkZGl0aW9uIHRvIHRoZSBub3JtYWwgZGljdGlvbmFyeSBtZXRob2RzIGZvciBhY2Nlc3NpbmcgdGhlIGhlYWRlcgorbmFtZXMgYW5kIHZhbHVlcywgdGhlcmUgYXJlIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBzcGVjaWFsaXplZCBpbmZvcm1hdGlvbiBmcm9tCit0aGUgaGVhZGVycyAoZm9yIGV4YW1wbGUgdGhlIE1JTUUgY29udGVudCB0eXBlKSwgZm9yIG9wZXJhdGluZyBvbiB0aGUgcGF5bG9hZCwKK2ZvciBnZW5lcmF0aW5nIGEgc2VyaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLCBhbmQgZm9yIHJlY3Vyc2l2ZWx5IHdhbGtpbmcKK292ZXIgdGhlIG9iamVjdCB0cmVlLgogCi1IZXJlIGFyZSB0aGUgbWV0aG9kcyBvZiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzczoKK1RoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgZGljdGlvbmFyeS1saWtlIGludGVyZmFjZSBpcyBpbmRleGVkIGJ5IHRoZSBoZWFkZXIKK25hbWVzLCB3aGljaCBtdXN0IGJlIEFTQ0lJIHZhbHVlcy4gIFRoZSB2YWx1ZXMgb2YgdGhlIGRpY3Rpb25hcnkgYXJlIHN0cmluZ3MKK3dpdGggc29tZSBleHRyYSBtZXRob2RzLiAgSGVhZGVycyBhcmUgc3RvcmVkIGFuZCByZXR1cm5lZCBpbiBjYXNlLXByZXNlcnZpbmcKK2Zvcm0sIGJ1dCBmaWVsZCBuYW1lcyBhcmUgbWF0Y2hlZCBjYXNlLWluc2Vuc2l0aXZlbHkuICBVbmxpa2UgYSByZWFsIGRpY3QsCit0aGVyZSBpcyBhbiBvcmRlcmluZyB0byB0aGUga2V5cywgYW5kIHRoZXJlIGNhbiBiZSBkdXBsaWNhdGUga2V5cy4gIEFkZGl0aW9uYWwKK21ldGhvZHMgYXJlIHByb3ZpZGVkIGZvciB3b3JraW5nIHdpdGggaGVhZGVycyB0aGF0IGhhdmUgZHVwbGljYXRlIGtleXMuCisKK1RoZSAqcGF5bG9hZCogaXMgZWl0aGVyIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCwgaW4gdGhlIGNhc2Ugb2Ygc2ltcGxlIG1lc3NhZ2UKK29iamVjdHMsIG9yIGEgbGlzdCBvZiA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cywgZm9yIE1JTUUgY29udGFpbmVyCitkb2N1bWVudHMgc3VjaCBhcyA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgYW5kIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgCittZXNzYWdlIG9iamVjdHMuCiAKIAotLi4gY2xhc3M6OiBNZXNzYWdlKHBvbGljeT1jb21wYXQzMikKKy4uIGNsYXNzOjogRW1haWxNZXNzYWdlKHBvbGljeT1kZWZhdWx0KQogCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSBhbmQgc2VyaWFsaXplIHRoZSByZXByZXNlbnRhdGlvbgotICAgb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdWRwYXRlIGFuZCBzZXJpYWxpemUKKyAgIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLnBvbGljeS5kZWZhdWx0YCBwb2xpY3ksIHdoaWNoIGZvbGxvd3MgdGhlIHJ1bGVzIG9mIHRoZSBlbWFpbAorICAgUkZDcyBleGNlcHQgZm9yIGxpbmUgZW5kaW5ncyAoaW5zdGVhZCBvZiB0aGUgUkZDIG1hbmRhdGVkIGBgXHJcbmBgLCBpdCB1c2VzCisgICB0aGUgUHl0aG9uIHN0YW5kYXJkIGBgXG5gYCBsaW5lIGVuZGluZ3MpLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQogICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgVGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49Tm9uZSwgcG9saWN5PU5vbmUpCiAKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgc3RyaW5nLiAgV2hlbiBvcHRpb25hbAorICAgICAgKnVuaXhmcm9tKiBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZAorICAgICAgc3RyaW5nLiAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBGb3IgYmFja3dhcmQgY29tcGFiaXRpbGl0eQorICAgICAgd2l0aCB0aGUgYmFzZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzICptYXhoZWFkZXJsZW4qIGlzCisgICAgICBhY2NlcHRlZCwgYnV0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLCB3aGljaCBtZWFucyB0aGF0IGJ5IGRlZmF1bHQgdGhlIGxpbmUKKyAgICAgIGxlbmd0aCBpcyBjb250cm9sbGVkIGJ5IHRoZQorICAgICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kubWF4X2xpbmVfbGVuZ3RoYCBvZiB0aGUgcG9saWN5LiAgVGhlCisgICAgICAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQKKyAgICAgIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUKKyAgICAgIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlCisgICAgICBwYXNzZWQgdG8gdGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgLgogCi0gICAuLiBtZXRob2Q6OiBhc19zdHJpbmcodW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj0wLCBwb2xpY3k9Tm9uZSkKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCisgICAgICBpZiBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYQorICAgICAgc3RyaW5nIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgogCi0gICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIHN0cmluZy4gIFdoZW4gb3B0aW9uYWwgKnVuaXhmcm9tKgotICAgICAgaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLgotICAgICAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBGb3IgYmFja3dhcmQgY29tcGFiaXRpbGl0eSByZWFzb25zLAotICAgICAgKm1heGhlYWRlcmxlbiogZGVmYXVsdHMgdG8gYGAwYGAsIHNvIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IHZhbHVlIHlvdQotICAgICAgbXVzdCBvdmVycmlkZSBpdCBleHBsaWNpdGx5ICh0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciAqbWF4X2xpbmVfbGVuZ3RoKiBpbgotICAgICAgdGhlIHBvbGljeSB3aWxsIGJlIGlnbm9yZWQgYnkgdGhpcyBtZXRob2QpLiAgVGhlICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZQotICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KLSAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQotICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgYEdlbmVyYXRvcmBgLgorICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYmUgdGhlCisgICAgICBtb3N0IHVzZWZ1bCB3YXkgdG8gc2VyaWFsaXplIG1lc3NhZ2VzIGluIHlvdXIgYXBwbGljYXRpb24sIGVzcGVjaWFsbHkgaWYKKyAgICAgIHlvdSBhcmUgZGVhbGluZyB3aXRoIG11bHRpcGxlIG1lc3NhZ2VzLiAgU2VlCisgICAgICA6Y2xhc3M6YGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGZvciBhIG1vcmUgZmxleGlibGUgQVBJIGZvcgorICAgICAgc2VyaWFsaXppbmcgbWVzc2FnZXMuICBOb3RlIGFsc28gdGhhdCB0aGlzIG1ldGhvZCBpcyByZXN0cmljdGVkIHRvCisgICAgICBwcm9kdWNpbmcgbWVzc2FnZXMgc2VyaWFsaXplZCBhcyAiNyBiaXQgY2xlYW4iIHdoZW4KKyAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LnV0ZjhgIGlzIGBgRmFsc2VgYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuCiAKLSAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgotICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCi0gICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KLQotICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCi0gICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKLSAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKLSAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCi0gICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LiAgRm9yIGV4YW1wbGU6OgotCi0gICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwotICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvcgotICAgICAgICAgZnAgPSBTdHJpbmdJTygpCi0gICAgICAgICBnID0gR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQotICAgICAgICAgZy5mbGF0dGVuKG1zZykKLSAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIG9iamVjdCBjb250YWlucyBiaW5hcnkgZGF0YSB0aGF0IGlzIG5vdCBlbmNvZGVkIGFjY29yZGluZwotICAgICAgdG8gUkZDIHN0YW5kYXJkcywgdGhlIG5vbi1jb21wbGlhbnQgZGF0YSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHVuaWNvZGUKLSAgICAgICJ1bmtub3duIGNoYXJhY3RlciIgY29kZSBwb2ludHMuICAoU2VlIGFsc28gOm1ldGg6YC5hc19ieXRlc2AgYW5kCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgLikKLQotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgdGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgdGhlIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiAqbWF4aGVhZGVybGVuKgorICAgICAgICAgaXMgbm90IHNwZWNpZmllZCB3YXMgY2hhbmdlZCBmcm9tIGRlZmF1bHRpbmcgdG8gMCB0byBkZWZhdWx0aW5nCisgICAgICAgICB0byB0aGUgdmFsdWUgb2YgKm1heF9saW5lX2xlbmd0aCogZnJvbSB0aGUgcG9saWN5LgogCiAKICAgIC4uIG1ldGhvZDo6IF9fc3RyX18oKQogCi0gICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfc3RyaW5nKClgLiAgQWxsb3dzIGBgc3RyKG1zZylgYCB0byBwcm9kdWNlIGEKLSAgICAgIHN0cmluZyBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKyAgICAgIEVxdWl2YWxlbnQgdG8gYGFzX3N0cmluZyhwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUodXRmOD1UcnVlKWAuICBBbGxvd3MKKyAgICAgIGBgc3RyKG1zZylgYCB0byBwcm9kdWNlIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHNlcmlhbGl6ZWQgbWVzc2FnZSBpbiBhCisgICAgICByZWFkYWJsZSBmb3JtYXQuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IHRoZSBtZXRob2Qgd2FzIGNoYW5nZWQgdG8gdXNlIGBgdXRmOD1UcnVlYGAsCisgICAgICAgICB0aHVzIHByb2R1Y2luZyBhbiA6cmZjOmA2NTMxYC1saWtlIG1lc3NhZ2UgcmVwcmVzZW50YXRpb24sIGluc3RlYWQgb2YKKyAgICAgICAgIGJlaW5nIGEgZGlyZWN0IGFsaWFzIGZvciA6bWV0aDpgYXNfc3RyaW5nYC4KIAogCiAgICAuLiBtZXRob2Q6OiBhc19ieXRlcyh1bml4ZnJvbT1GYWxzZSwgcG9saWN5PU5vbmUpCkBAIC05OCw1MiArMTA5LDQyIEBACiAgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgogICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCiAgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlCi0gICAgICBgYEJ5dGVzR2VuZXJhdG9yYGAuCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgLgogCi0gICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKLSAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZwotICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorICAgICAgaWYgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEKKyAgICAgIHN0cmluZyAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KIAotICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCi0gICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKLSAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKLSAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKLSAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4KLSAgICAgIEZvciBleGFtcGxlOjoKLQotICAgICAgICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwotICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEJ5dGVzR2VuZXJhdG9yCi0gICAgICAgICBmcCA9IEJ5dGVzSU8oKQotICAgICAgICAgZyA9IEJ5dGVzR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQotICAgICAgICAgZy5mbGF0dGVuKG1zZykKLSAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCi0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYmUgdGhlCisgICAgICBtb3N0IHVzZWZ1bCB3YXkgdG8gc2VyaWFsaXplIG1lc3NhZ2VzIGluIHlvdXIgYXBwbGljYXRpb24sIGVzcGVjaWFsbHkgaWYKKyAgICAgIHlvdSBhcmUgZGVhbGluZyB3aXRoIG11bHRpcGxlIG1lc3NhZ2VzLiAgU2VlCisgICAgICA6Y2xhc3M6YGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgZm9yIGEgbW9yZSBmbGV4aWJsZSBBUEkgZm9yCisgICAgICBzZXJpYWxpemluZyBtZXNzYWdlcy4KIAogCiAgICAuLiBtZXRob2Q6OiBfX2J5dGVzX18oKQogCiAgICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfYnl0ZXMoKWAuICBBbGxvd3MgYGBieXRlcyhtc2cpYGAgdG8gcHJvZHVjZSBhCi0gICAgICBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCi0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorICAgICAgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHNlcmlhbGl6ZWQgbWVzc2FnZS4KIAogCiAgICAuLiBtZXRob2Q6OiBpc19tdWx0aXBhcnQoKQogCiAgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGlzIGEgbGlzdCBvZiBzdWItXAotICAgICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLCBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gIFdoZW4KKyAgICAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzLCBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gIFdoZW4KICAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybnMgYGBGYWxzZWBgLCB0aGUgcGF5bG9hZCBzaG91bGQgYmUgYSBzdHJpbmcKLSAgICAgIG9iamVjdC4gIChOb3RlIHRoYXQgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJuaW5nIGBgVHJ1ZWBgIGRvZXMgbm90Ci0gICAgICBuZWNlc3NhcmlseSBtZWFuIHRoYXQgIm1zZy5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnIiB3aWxsCi0gICAgICByZXR1cm4gdGhlIGBgVHJ1ZWBgLiAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgCi0gICAgICB3aGVuIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlzIG9mIHR5cGUgYGBtZXNzYWdlL3JmYzgyMmBgLikKKyAgICAgIG9iamVjdCAod2hpY2ggbWlnaHQgYmUgYSBDVEUgZW5jb2RlZCBiaW5hcnkgcGF5bG9hZCkuICBOb3RlIHRoYXQKKyAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybmluZyBgYFRydWVgYCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQKKyAgICAgICJtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyIgd2lsbCByZXR1cm4gdGhlIGBgVHJ1ZWBgLgorICAgICAgRm9yIGV4YW1wbGUsIGBgaXNfbXVsdGlwYXJ0YGAgd2lsbCByZXR1cm4gYGBUcnVlYGAgd2hlbiB0aGUKKyAgICAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCBpcyBvZiB0eXBlIGBgbWVzc2FnZS9yZmM4MjJgYC4KIAogCiAgICAuLiBtZXRob2Q6OiBzZXRfdW5peGZyb20odW5peGZyb20pCiAKLSAgICAgIFNldCB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlciB0byAqdW5peGZyb20qLCB3aGljaCBzaG91bGQgYmUgYSBzdHJpbmcuCisgICAgICBTZXQgdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIgdG8gKnVuaXhmcm9tKiwgd2hpY2ggc2hvdWxkIGJlIGEKKyAgICAgIHN0cmluZy4gIChTZWUgOmNsYXNzOmB+bWFpbGJveC5tYm94TWVzc2FnZWAgZm9yIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YKKyAgICAgIHRoaXMgaGVhZGVyLikKIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfdW5peGZyb20oKQpAQCAtMTUyLDEwOSArMTUzLDIzIEBACiAgICAgICBlbnZlbG9wZSBoZWFkZXIgd2FzIG5ldmVyIHNldC4KIAogCi0gICAuLiBtZXRob2Q6OiBhdHRhY2gocGF5bG9hZCkKLQotICAgICAgQWRkIHRoZSBnaXZlbiAqcGF5bG9hZCogdG8gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggbXVzdCBiZSBgYE5vbmVgYCBvcgotICAgICAgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBiZWZvcmUgdGhlIGNhbGwuIEFmdGVyIHRoZSBjYWxsLCB0aGUKLSAgICAgIHBheWxvYWQgd2lsbCBhbHdheXMgYmUgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cy4gIElmIHlvdSB3YW50IHRvCi0gICAgICBzZXQgdGhlIHBheWxvYWQgdG8gYSBzY2FsYXIgb2JqZWN0IChlLmcuIGEgc3RyaW5nKSwgdXNlCi0gICAgICA6bWV0aDpgc2V0X3BheWxvYWRgIGluc3RlYWQuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X3BheWxvYWQoaT1Ob25lLCBkZWNvZGU9RmFsc2UpCi0KLSAgICAgIFJldHVybiB0aGUgY3VycmVudCBwYXlsb2FkLCB3aGljaCB3aWxsIGJlIGEgbGlzdCBvZgotICAgICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIHdoZW4gOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBUcnVlYGAsIG9yIGEKLSAgICAgIHN0cmluZyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgRmFsc2VgYC4gIElmIHRoZSBwYXlsb2FkIGlzIGEgbGlzdAotICAgICAgYW5kIHlvdSBtdXRhdGUgdGhlIGxpc3Qgb2JqZWN0LCB5b3UgbW9kaWZ5IHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpbiBwbGFjZS4KLQotICAgICAgV2l0aCBvcHRpb25hbCBhcmd1bWVudCAqaSosIDptZXRoOmBnZXRfcGF5bG9hZGAgd2lsbCByZXR1cm4gdGhlICppKi10aAotICAgICAgZWxlbWVudCBvZiB0aGUgcGF5bG9hZCwgY291bnRpbmcgZnJvbSB6ZXJvLCBpZiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcwotICAgICAgYGBUcnVlYGAuICBBbiA6ZXhjOmBJbmRleEVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiAqaSogaXMgbGVzcyB0aGFuIDAgb3IKLSAgICAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBwYXlsb2FkLiAgSWYgdGhlCi0gICAgICBwYXlsb2FkIGlzIGEgc3RyaW5nIChpLmUuICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGApIGFuZCAqaSogaXMKLSAgICAgIGdpdmVuLCBhIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgotCi0gICAgICBPcHRpb25hbCAqZGVjb2RlKiBpcyBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBwYXlsb2FkIHNob3VsZCBiZQotICAgICAgZGVjb2RlZCBvciBub3QsIGFjY29yZGluZyB0byB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgCi0gICAgICBoZWFkZXIuIFdoZW4gYGBUcnVlYGAgYW5kIHRoZSBtZXNzYWdlIGlzIG5vdCBhIG11bHRpcGFydCwgdGhlIHBheWxvYWQgd2lsbAotICAgICAgYmUgZGVjb2RlZCBpZiB0aGlzIGhlYWRlcidzIHZhbHVlIGlzIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAuCi0gICAgICBJZiBzb21lIG90aGVyIGVuY29kaW5nIGlzIHVzZWQsIG9yIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAotICAgICAgaGVhZGVyIGlzIG1pc3NpbmcsIHRoZSBwYXlsb2FkIGlzCi0gICAgICByZXR1cm5lZCBhcy1pcyAodW5kZWNvZGVkKS4gIEluIGFsbCBjYXNlcyB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgYmluYXJ5Ci0gICAgICBkYXRhLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBtdWx0aXBhcnQgYW5kIHRoZSAqZGVjb2RlKiBmbGFnIGlzIGBgVHJ1ZWBgLAotICAgICAgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZC4gIElmIHRoZSBwYXlsb2FkIGlzIGJhc2U2NCBhbmQgaXQgd2FzIG5vdAotICAgICAgcGVyZmVjdGx5IGZvcm1lZCAobWlzc2luZyBwYWRkaW5nLCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2U2NAotICAgICAgYWxwaGFiZXQpLCB0aGVuIGFuIGFwcHJvcHJpYXRlIGRlZmVjdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlJ3MKLSAgICAgIGRlZmVjdCBwcm9wZXJ0eSAoOmNsYXNzOmB+ZW1haWwuZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0YCBvcgotICAgICAgOmNsYXNzOmB+ZW1haWwuZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0YCwgcmVzcGVjdGl2ZWx5KS4KLQotICAgICAgV2hlbiAqZGVjb2RlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSB0aGUgYm9keSBpcyByZXR1cm5lZCBhcyBhIHN0cmluZwotICAgICAgd2l0aG91dCBkZWNvZGluZyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLiAgSG93ZXZlciwKLSAgICAgIGZvciBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0LCBhbiBhdHRlbXB0IGlzIG1hZGUKLSAgICAgIHRvIGRlY29kZSB0aGUgb3JpZ2luYWwgYnl0ZXMgdXNpbmcgdGhlIGBgY2hhcnNldGBgIHNwZWNpZmllZCBieSB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgdXNpbmcgdGhlIGBgcmVwbGFjZWBgIGVycm9yIGhhbmRsZXIuCi0gICAgICBJZiBubyBgYGNoYXJzZXRgYCBpcyBzcGVjaWZpZWQsIG9yIGlmIHRoZSBgYGNoYXJzZXRgYCBnaXZlbiBpcyBub3QKLSAgICAgIHJlY29nbml6ZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHRoZSBib2R5IGlzIGRlY29kZWQgdXNpbmcgdGhlIGRlZmF1bHQKLSAgICAgIEFTQ0lJIGNoYXJzZXQuCi0KLQotICAgLi4gbWV0aG9kOjogc2V0X3BheWxvYWQocGF5bG9hZCwgY2hhcnNldD1Ob25lKQotCi0gICAgICBTZXQgdGhlIGVudGlyZSBtZXNzYWdlIG9iamVjdCdzIHBheWxvYWQgdG8gKnBheWxvYWQqLiAgSXQgaXMgdGhlIGNsaWVudCdzCi0gICAgICByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhlIHBheWxvYWQgaW52YXJpYW50cy4gIE9wdGlvbmFsICpjaGFyc2V0KiBzZXRzCi0gICAgICB0aGUgbWVzc2FnZSdzIGRlZmF1bHQgY2hhcmFjdGVyIHNldDsgc2VlIDptZXRoOmBzZXRfY2hhcnNldGAgZm9yIGRldGFpbHMuCi0KLSAgIC4uIG1ldGhvZDo6IHNldF9jaGFyc2V0KGNoYXJzZXQpCi0KLSAgICAgIFNldCB0aGUgY2hhcmFjdGVyIHNldCBvZiB0aGUgcGF5bG9hZCB0byAqY2hhcnNldCosIHdoaWNoIGNhbiBlaXRoZXIgYmUgYQotICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSAoc2VlIDptb2Q6YGVtYWlsLmNoYXJzZXRgKSwgYQotICAgICAgc3RyaW5nIG5hbWluZyBhIGNoYXJhY3RlciBzZXQsIG9yIGBgTm9uZWBgLiAgSWYgaXQgaXMgYSBzdHJpbmcsIGl0IHdpbGwKLSAgICAgIGJlIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UuICBJZiAqY2hhcnNldCoKLSAgICAgIGlzIGBgTm9uZWBgLCB0aGUgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyICh0aGUgbWVzc2FnZSB3aWxsIG5vdCBiZSBvdGhlcndpc2UKLSAgICAgIG1vZGlmaWVkKS4gIEFueXRoaW5nIGVsc2Ugd2lsbCBnZW5lcmF0ZSBhIDpleGM6YFR5cGVFcnJvcmAuCi0KLSAgICAgIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlciBvbmUgd2lsbCBiZQotICAgICAgYWRkZWQuICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG9uZQotICAgICAgd2lsbCBiZSBhZGRlZCB3aXRoIGEgdmFsdWUgb2YgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4gIFdoZXRoZXIgdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYWxyZWFkeSBleGlzdHMgb3Igbm90LCBpdHMgYGBjaGFyc2V0YGAKLSAgICAgIHBhcmFtZXRlciB3aWxsIGJlIHNldCB0byAqY2hhcnNldC5vdXRwdXRfY2hhcnNldCouICAgSWYKLSAgICAgICpjaGFyc2V0LmlucHV0X2NoYXJzZXQqIGFuZCAqY2hhcnNldC5vdXRwdXRfY2hhcnNldCogZGlmZmVyLCB0aGUgcGF5bG9hZAotICAgICAgd2lsbCBiZSByZS1lbmNvZGVkIHRvIHRoZSAqb3V0cHV0X2NoYXJzZXQqLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIsIHRoZW4gdGhlIHBheWxvYWQgd2lsbCBiZQotICAgICAgdHJhbnNmZXItZW5jb2RlZCwgaWYgbmVlZGVkLCB1c2luZyB0aGUgc3BlY2lmaWVkCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgLCBhbmQgYSBoZWFkZXIgd2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWUKLSAgICAgIHdpbGwgYmUgYWRkZWQuICBJZiBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIKLSAgICAgIGFscmVhZHkgZXhpc3RzLCB0aGUgcGF5bG9hZCBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgY29ycmVjdGx5IGVuY29kZWQKLSAgICAgIHVzaW5nIHRoYXQgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGFuZCBpcyBub3QgbW9kaWZpZWQuCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9jaGFyc2V0KCkKLQotICAgICAgUmV0dXJuIHRoZSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUKLSAgICAgIG1lc3NhZ2UncyBwYXlsb2FkLgotCi0gICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IGEgbWFwcGluZy1saWtlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQotICAgbWVzc2FnZSdzIDpyZmM6YDI4MjJgIGhlYWRlcnMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc2VtYW50aWMgZGlmZmVyZW5jZXMKKyAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgdGhlIG1hcHBpbmctbGlrZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKKyAgIG1lc3NhZ2UncyBoZWFkZXJzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHNlbWFudGljIGRpZmZlcmVuY2VzCiAgICBiZXR3ZWVuIHRoZXNlIG1ldGhvZHMgYW5kIGEgbm9ybWFsIG1hcHBpbmcgKGkuZS4gZGljdGlvbmFyeSkgaW50ZXJmYWNlLiAgRm9yCiAgICBleGFtcGxlLCBpbiBhIGRpY3Rpb25hcnkgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzLCBidXQgaGVyZSB0aGVyZSBtYXkgYmUKICAgIGR1cGxpY2F0ZSBtZXNzYWdlIGhlYWRlcnMuICBBbHNvLCBpbiBkaWN0aW9uYXJpZXMgdGhlcmUgaXMgbm8gZ3VhcmFudGVlZAotICAgb3JkZXIgdG8gdGhlIGtleXMgcmV0dXJuZWQgYnkgOm1ldGg6YGtleXNgLCBidXQgaW4gYSA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdCwKLSAgIGhlYWRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiB0aGUgb3JpZ2luYWwKLSAgIG1lc3NhZ2UsIG9yIHdlcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UgbGF0ZXIuICBBbnkgaGVhZGVyIGRlbGV0ZWQgYW5kIHRoZW4KLSAgIHJlLWFkZGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgaGVhZGVyIGxpc3QuCisgICBvcmRlciB0byB0aGUga2V5cyByZXR1cm5lZCBieSA6bWV0aDpga2V5c2AsIGJ1dCBpbiBhbiA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKKyAgIG9iamVjdCwgaGVhZGVycyBhcmUgYWx3YXlzIHJldHVybmVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZQorICAgb3JpZ2luYWwgbWVzc2FnZSwgb3IgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlIGxhdGVyLiAgQW55CisgICBoZWFkZXIgZGVsZXRlZCBhbmQgdGhlbiByZS1hZGRlZCBpcyBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUKKyAgIGhlYWRlciBsaXN0LgogCi0gICBUaGVzZSBzZW1hbnRpYyBkaWZmZXJlbmNlcyBhcmUgaW50ZW50aW9uYWwgYW5kIGFyZSBiaWFzZWQgdG93YXJkIG1heGltYWwKLSAgIGNvbnZlbmllbmNlLgorICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZAorICAgY29udmVuaWVuY2UgaW4gdGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlcy4KIAogICAgTm90ZSB0aGF0IGluIGFsbCBjYXNlcywgYW55IGVudmVsb3BlIGhlYWRlciBwcmVzZW50IGluIHRoZSBtZXNzYWdlIGlzIG5vdAogICAgaW5jbHVkZWQgaW4gdGhlIG1hcHBpbmcgaW50ZXJmYWNlLgogCi0gICBJbiBhIG1vZGVsIGdlbmVyYXRlZCBmcm9tIGJ5dGVzLCBhbnkgaGVhZGVyIHZhbHVlcyB0aGF0IChpbiBjb250cmF2ZW50aW9uIG9mCi0gICB0aGUgUkZDcykgY29udGFpbiBub24tQVNDSUkgYnl0ZXMgd2lsbCwgd2hlbiByZXRyaWV2ZWQgdGhyb3VnaCB0aGlzCi0gICBpbnRlcmZhY2UsIGJlIHJlcHJlc2VudGVkIGFzIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdHMgd2l0aAotICAgYSBjaGFyc2V0IG9mIGB1bmtub3duLThiaXRgLgotCiAKICAgIC4uIG1ldGhvZDo6IF9fbGVuX18oKQogCkBAIC0yNjQsOCArMTc5LDggQEAKICAgIC4uIG1ldGhvZDo6IF9fY29udGFpbnNfXyhuYW1lKQogCiAgICAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgbWVzc2FnZSBvYmplY3QgaGFzIGEgZmllbGQgbmFtZWQgKm5hbWUqLiBNYXRjaGluZyBpcwotICAgICAgZG9uZSBjYXNlLWluc2Vuc2l0aXZlbHkgYW5kICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlIHRyYWlsaW5nIGNvbG9uLgotICAgICAgVXNlZCBmb3IgdGhlIGBgaW5gYCBvcGVyYXRvciwgZS5nLjo6CisgICAgICBkb25lIHdpdGhvdXQgcmVnYXJkIHRvIGNhc2UgYW5kICpuYW1lKiBkb2VzIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZworICAgICAgY29sb24uICBVc2VkIGZvciB0aGUgYGBpbmBgIG9wZXJhdG9yLiAgRm9yIGV4YW1wbGU6OgogCiAgICAgICAgICAgIGlmICdtZXNzYWdlLWlkJyBpbiBteU1lc3NhZ2U6CiAgICAgICAgICAgICAgIHByaW50KCdNZXNzYWdlLUlEOicsIG15TWVzc2FnZVsnbWVzc2FnZS1pZCddKQpAQCAtMjczLDIwICsxODgsMjMgQEAKIAogICAgLi4gbWV0aG9kOjogX19nZXRpdGVtX18obmFtZSkKIAotICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgKm5hbWUqIHNob3VsZCBub3QgaW5jbHVkZSB0aGUKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBkb2VzIG5vdCBpbmNsdWRlIHRoZQogICAgICAgY29sb24gZmllbGQgc2VwYXJhdG9yLiAgSWYgdGhlIGhlYWRlciBpcyBtaXNzaW5nLCBgYE5vbmVgYCBpcyByZXR1cm5lZDsgYQogICAgICAgOmV4YzpgS2V5RXJyb3JgIGlzIG5ldmVyIHJhaXNlZC4KIAogICAgICAgTm90ZSB0aGF0IGlmIHRoZSBuYW1lZCBmaWVsZCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBtZXNzYWdlJ3MKICAgICAgIGhlYWRlcnMsIGV4YWN0bHkgd2hpY2ggb2YgdGhvc2UgZmllbGQgdmFsdWVzIHdpbGwgYmUgcmV0dXJuZWQgaXMKICAgICAgIHVuZGVmaW5lZC4gIFVzZSB0aGUgOm1ldGg6YGdldF9hbGxgIG1ldGhvZCB0byBnZXQgdGhlIHZhbHVlcyBvZiBhbGwgdGhlCi0gICAgICBleHRhbnQgbmFtZWQgaGVhZGVycy4KKyAgICAgIGV4dGFudCBoZWFkZXJzIG5hbWVkICpuYW1lKi4KKworICAgICAgVXNpbmcgdGhlIHN0YW5kYXJkIChub24tYGBjb21wYXQzMmBgKSBwb2xpY2llcywgdGhlIHJldHVybmVkIHZhbHVlIGlzIGFuCisgICAgICBpbnN0YW5jZSBvZiBhIHN1YmNsYXNzIG9mIDpjbGFzczpgZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcmAuCiAKIAogICAgLi4gbWV0aG9kOjogX19zZXRpdGVtX18obmFtZSwgdmFsKQogCiAgICAgICBBZGQgYSBoZWFkZXIgdG8gdGhlIG1lc3NhZ2Ugd2l0aCBmaWVsZCBuYW1lICpuYW1lKiBhbmQgdmFsdWUgKnZhbCouICBUaGUKLSAgICAgIGZpZWxkIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UncyBleGlzdGluZyBmaWVsZHMuCisgICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgaGVhZGVycy4KIAogICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyAqbm90KiBvdmVyd3JpdGUgb3IgZGVsZXRlIGFueSBleGlzdGluZyBoZWFkZXIgd2l0aCB0aGUgc2FtZQogICAgICAgbmFtZS4gIElmIHlvdSB3YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgaGVhZGVyIGlzIHRoZSBvbmx5IG9uZSBwcmVzZW50IGluIHRoZQpAQCAtMjk1LDYgKzIxMywxMyBAQAogICAgICAgICAgZGVsIG1zZ1snc3ViamVjdCddCiAgICAgICAgICBtc2dbJ3N1YmplY3QnXSA9ICdQeXRob24gcm9vbHohJwogCisgICAgICBJZiB0aGUgOm1vZDpgcG9saWN5YCBkZWZpbmVzIGNlcnRhaW4gaGFkZXJzIHRvIGJlIHVuaXF1ZSAoYXMgdGhlIHN0YW5kYXJkCisgICAgICBwb2xpY2llcyBkbyksIHRoaXMgbWV0aG9kIG1heSByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gYW4gYXR0ZW1wdAorICAgICAgaXMgbWFkZSB0byBhc3NpZ24gYSB2YWx1ZSB0byBzdWNoIGEgaGVhZGVyIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiAgVGhpcworICAgICAgYmVoYXZpb3IgaXMgaW50ZW50aW9uYWwgZm9yIGNvbnNpc3RlbmN5J3Mgc2FrZSwgYnV0IGRvIG5vdCBkZXBlbmQgb24gaXQKKyAgICAgIGFzIHdlIG1heSBjaG9vc2UgdG8gbWFrZSBzdWNoIGFzc2lnbm1lbnRzIGRvIGFuIGF1dG9tYXRpYyBkZWxldGlvbiBvZiB0aGUKKyAgICAgIGV4aXN0aW5nIGhlYWRlciBpbiB0aGUgZnV0dXJlLgorCiAKICAgIC4uIG1ldGhvZDo6IF9fZGVsaXRlbV9fKG5hbWUpCiAKQEAgLTMyMyw5ICsyNDgsMTAgQEAKIAogICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgVGhpcyBpcyBpZGVudGljYWwgdG8KICAgICAgIDptZXRoOmBfX2dldGl0ZW1fX2AgZXhjZXB0IHRoYXQgb3B0aW9uYWwgKmZhaWxvYmoqIGlzIHJldHVybmVkIGlmIHRoZQotICAgICAgbmFtZWQgaGVhZGVyIGlzIG1pc3NpbmcgKGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KKyAgICAgIG5hbWVkIGhlYWRlciBpcyBtaXNzaW5nICgqZmFpbG9iaiogZGVmYXVsdHMgdG8gYGBOb25lYGApLgogCi0gICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIG1ldGhvZHM6CisKKyAgIEhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCB1c2VmdWwgaGVhZGVyIHJlbGF0ZWQgbWV0aG9kczoKIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfYWxsKG5hbWUsIGZhaWxvYmo9Tm9uZSkKQEAgLTM0NiwxNyArMjcyLDE5IEBACiAgICAgICB0YWtlbiBhcyB0aGUgcGFyYW1ldGVyIG5hbWUsIHdpdGggdW5kZXJzY29yZXMgY29udmVydGVkIHRvIGRhc2hlcyAoc2luY2UKICAgICAgIGRhc2hlcyBhcmUgaWxsZWdhbCBpbiBQeXRob24gaWRlbnRpZmllcnMpLiAgTm9ybWFsbHksIHRoZSBwYXJhbWV0ZXIgd2lsbAogICAgICAgYmUgYWRkZWQgYXMgYGBrZXk9InZhbHVlImBgIHVubGVzcyB0aGUgdmFsdWUgaXMgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UKLSAgICAgIG9ubHkgdGhlIGtleSB3aWxsIGJlIGFkZGVkLiAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAotICAgICAgaXQgY2FuIGJlIHNwZWNpZmllZCBhcyBhIHRocmVlIHR1cGxlIGluIHRoZSBmb3JtYXQKLSAgICAgIGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYCwgd2hlcmUgYGBDSEFSU0VUYGAgaXMgYSBzdHJpbmcgbmFtaW5nIHRoZQotICAgICAgY2hhcnNldCB0byBiZSB1c2VkIHRvIGVuY29kZSB0aGUgdmFsdWUsIGBgTEFOR1VBR0VgYCBjYW4gdXN1YWxseSBiZSBzZXQKLSAgICAgIHRvIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSA6cmZjOmAyMjMxYCBmb3Igb3RoZXIgcG9zc2liaWxpdGllcyksCi0gICAgICBhbmQgYGBWQUxVRWBgIGlzIHRoZSBzdHJpbmcgdmFsdWUgY29udGFpbmluZyBub24tQVNDSUkgY29kZSBwb2ludHMuICBJZgotICAgICAgYSB0aHJlZSB0dXBsZSBpcyBub3QgcGFzc2VkIGFuZCB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsCi0gICAgICBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuY29kZWQgaW4gOnJmYzpgMjIzMWAgZm9ybWF0IHVzaW5nIGEgYGBDSEFSU0VUYGAKLSAgICAgIG9mIGBgdXRmLThgYCBhbmQgYSBgYExBTkdVQUdFYGAgb2YgYGBOb25lYGAuCisgICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4KIAotICAgICAgSGVyZSdzIGFuIGV4YW1wbGU6OgorICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCB0aGUgY2hhcnNldCBhbmQgbGFuZ3VhZ2UgbWF5CisgICAgICBiZSBleHBsaWNpdGx5IGNvbnRyb2xsZWQgYnkgc3BlY2lmaW5nIHRoZSB2YWx1ZSBhcyBhIHRocmVlIHR1cGxlIGluIHRoZQorICAgICAgZm9ybWF0IGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYCwgd2hlcmUgYGBDSEFSU0VUYGAgaXMgYSBzdHJpbmcKKyAgICAgIG5hbWluZyB0aGUgY2hhcnNldCB0byBiZSB1c2VkIHRvIGVuY29kZSB0aGUgdmFsdWUsIGBgTEFOR1VBR0VgYCBjYW4KKyAgICAgIHVzdWFsbHkgYmUgc2V0IHRvIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSA6cmZjOmAyMjMxYCBmb3Igb3RoZXIKKyAgICAgIHBvc3NpYmlsaXRpZXMpLCBhbmQgYGBWQUxVRWBgIGlzIHRoZSBzdHJpbmcgdmFsdWUgY29udGFpbmluZyBub24tQVNDSUkKKyAgICAgIGNvZGUgcG9pbnRzLiAgSWYgYSB0aHJlZSB0dXBsZSBpcyBub3QgcGFzc2VkIGFuZCB0aGUgdmFsdWUgY29udGFpbnMKKyAgICAgIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuY29kZWQgaW4gOnJmYzpgMjIzMWAgZm9ybWF0CisgICAgICB1c2luZyBhIGBgQ0hBUlNFVGBgIG9mIGBgdXRmLThgYCBhbmQgYSBgYExBTkdVQUdFYGAgb2YgYGBOb25lYGAuCisKKyAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZTo6CiAKICAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT0nYnVkLmdpZicpCiAKQEAgLTM2NCwzNyArMjkyLDM1IEBACiAKICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJidWQuZ2lmIgogCi0gICAgICBBbiBleGFtcGxlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgorICAgICAgQW4gZXhhbXBsZSBvZiB0aGUgZXh0ZW5kZWQgaW50ZXJmYWNlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgogCiAgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSgnaXNvLTg4NTktMScsICcnLCAnRnXDn2JhbGxlci5wcHQnKSkKIAotICAgICAgV2hpY2ggcHJvZHVjZXMgOjoKLQotICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWUqPSJpc28tODg1OS0xJydGdSVERmJhbGxlci5wcHQiCi0KIAogICAgLi4gbWV0aG9kOjogcmVwbGFjZV9oZWFkZXIoX25hbWUsIF92YWx1ZSkKIAogICAgICAgUmVwbGFjZSBhIGhlYWRlci4gIFJlcGxhY2UgdGhlIGZpcnN0IGhlYWRlciBmb3VuZCBpbiB0aGUgbWVzc2FnZSB0aGF0Ci0gICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZS4gIElmIG5vCi0gICAgICBtYXRjaGluZyBoZWFkZXIgd2FzIGZvdW5kLCBhIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCisgICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZSBvZiB0aGUKKyAgICAgIG9yaWdpbmFsIGhlYWRlci4gIElmIG5vIG1hdGNoaW5nIGhlYWRlciBpcyBmb3VuZCwgcmFpc2UgYQorICAgICAgOmV4YzpgS2V5RXJyb3JgLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X3R5cGUoKQogCi0gICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBjb250ZW50IHR5cGUuICBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzIGNvZXJjZWQgdG8KLSAgICAgIGxvd2VyIGNhc2Ugb2YgdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYC4gIElmIHRoZXJlIHdhcyBubwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBtZXNzYWdlIHRoZSBkZWZhdWx0IHR5cGUgYXMgZ2l2ZW4KLSAgICAgIGJ5IDptZXRoOmBnZXRfZGVmYXVsdF90eXBlYCB3aWxsIGJlIHJldHVybmVkLiAgU2luY2UgYWNjb3JkaW5nIHRvCi0gICAgICA6cmZjOmAyMDQ1YCwgbWVzc2FnZXMgYWx3YXlzIGhhdmUgYSBkZWZhdWx0IHR5cGUsIDptZXRoOmBnZXRfY29udGVudF90eXBlYAotICAgICAgd2lsbCBhbHdheXMgcmV0dXJuIGEgdmFsdWUuCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBjb250ZW50IHR5cGUsIGNvZXJjZWQgdG8gbG93ZXIgY2FzZSBvZiB0aGUgZm9ybQorICAgICAgOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYC4gIElmIHRoZXJlIGlzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIgaW4gdGhlIG1lc3NhZ2UgcmV0dXJuIHRoZSB2YWx1ZSByZXR1cm5lZCBieQorICAgICAgOm1ldGg6YGdldF9kZWZhdWx0X3R5cGVgLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcworICAgICAgaW52YWxpZCwgcmV0dXJuIGBgdGV4dC9wbGFpbmBgLgogCi0gICAgICA6cmZjOmAyMDQ1YCBkZWZpbmVzIGEgbWVzc2FnZSdzIGRlZmF1bHQgdHlwZSB0byBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gCi0gICAgICB1bmxlc3MgaXQgYXBwZWFycyBpbnNpZGUgYSA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lciwgaW4KLSAgICAgIHdoaWNoIGNhc2UgaXQgd291bGQgYmUgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuICBJZiB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBoYXMgYW4gaW52YWxpZCB0eXBlIHNwZWNpZmljYXRpb24sCi0gICAgICA6cmZjOmAyMDQ1YCBtYW5kYXRlcyB0aGF0IHRoZSBkZWZhdWx0IHR5cGUgYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4KKyAgICAgIChBY2NvcmRpbmcgdG8gOnJmYzpgMjA0NWAsIG1lc3NhZ2VzIGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB0eXBlLAorICAgICAgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgIHdpbGwgYWx3YXlzIHJldHVybiBhIHZhbHVlLiAgOnJmYzpgMjA0NWAgZGVmaW5lcworICAgICAgYSBtZXNzYWdlJ3MgZGVmYXVsdCB0eXBlIHRvIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgdW5sZXNzIGl0IGFwcGVhcnMKKyAgICAgIGluc2lkZSBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2RpZ2VzdGAgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIGl0IHdvdWxkCisgICAgICBiZSA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIKKyAgICAgIGhhcyBhbiBpbnZhbGlkIHR5cGUgc3BlY2lmaWNhdGlvbiwgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdAorICAgICAgdHlwZSBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gLikKIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9tYWludHlwZSgpCkBAIC00MjAsODEgKzM0Niw0MSBAQAogICAgLi4gbWV0aG9kOjogc2V0X2RlZmF1bHRfdHlwZShjdHlwZSkKIAogICAgICAgU2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gICpjdHlwZSogc2hvdWxkIGVpdGhlciBiZQotICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcyBub3QKLSAgICAgIGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtcyhmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQotCi0gICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBwYXJhbWV0ZXJzLCBhcyBhIGxpc3QuCi0gICAgICBUaGUgZWxlbWVudHMgb2YgdGhlIHJldHVybmVkIGxpc3QgYXJlIDItdHVwbGVzIG9mIGtleS92YWx1ZSBwYWlycywgYXMKLSAgICAgIHNwbGl0IG9uIHRoZSBgYCc9J2BgIHNpZ24uICBUaGUgbGVmdCBoYW5kIHNpZGUgb2YgdGhlIGBgJz0nYGAgaXMgdGhlIGtleSwKLSAgICAgIHdoaWxlIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgdGhlIHZhbHVlLiAgSWYgdGhlcmUgaXMgbm8gYGAnPSdgYCBzaWduIGluCi0gICAgICB0aGUgcGFyYW1ldGVyIHRoZSB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIGFzCi0gICAgICBkZXNjcmliZWQgaW4gOm1ldGg6YGdldF9wYXJhbWAgYW5kIGlzIHVucXVvdGVkIGlmIG9wdGlvbmFsICp1bnF1b3RlKiBpcwotICAgICAgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KS4KLQotICAgICAgT3B0aW9uYWwgKmZhaWxvYmoqIGlzIHRoZSBvYmplY3QgdG8gcmV0dXJuIGlmIHRoZXJlIGlzIG5vCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBPcHRpb25hbCAqaGVhZGVyKiBpcyB0aGUgaGVhZGVyIHRvCi0gICAgICBzZWFyY2ggaW5zdGVhZCBvZiA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfcGFyYW0ocGFyYW0sIGZhaWxvYmo9Tm9uZSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCB1bnF1b3RlPVRydWUpCi0KLSAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcidzIHBhcmFtZXRlcgotICAgICAgKnBhcmFtKiBhcyBhIHN0cmluZy4gIElmIHRoZSBtZXNzYWdlIGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAotICAgICAgaGVhZGVyIG9yIGlmIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyLCB0aGVuICpmYWlsb2JqKiBpcyByZXR1cm5lZAotICAgICAgKGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KLQotICAgICAgT3B0aW9uYWwgKmhlYWRlciogaWYgZ2l2ZW4sIHNwZWNpZmllcyB0aGUgbWVzc2FnZSBoZWFkZXIgdG8gdXNlIGluc3RlYWQgb2YKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgotCi0gICAgICBQYXJhbWV0ZXIga2V5cyBhcmUgYWx3YXlzIGNvbXBhcmVkIGNhc2UgaW5zZW5zaXRpdmVseS4gIFRoZSByZXR1cm4gdmFsdWUKLSAgICAgIGNhbiBlaXRoZXIgYmUgYSBzdHJpbmcsIG9yIGEgMy10dXBsZSBpZiB0aGUgcGFyYW1ldGVyIHdhcyA6cmZjOmAyMjMxYAotICAgICAgZW5jb2RlZC4gIFdoZW4gaXQncyBhIDMtdHVwbGUsIHRoZSBlbGVtZW50cyBvZiB0aGUgdmFsdWUgYXJlIG9mIHRoZSBmb3JtCi0gICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAuICBOb3RlIHRoYXQgYm90aCBgYENIQVJTRVRgYCBhbmQKLSAgICAgIGBgTEFOR1VBR0VgYCBjYW4gYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UgeW91IHNob3VsZCBjb25zaWRlciBgYFZBTFVFYGAKLSAgICAgIHRvIGJlIGVuY29kZWQgaW4gdGhlIGBgdXMtYXNjaWlgYCBjaGFyc2V0LiAgWW91IGNhbiB1c3VhbGx5IGlnbm9yZQotICAgICAgYGBMQU5HVUFHRWBgLgotCi0gICAgICBJZiB5b3VyIGFwcGxpY2F0aW9uIGRvZXNuJ3QgY2FyZSB3aGV0aGVyIHRoZSBwYXJhbWV0ZXIgd2FzIGVuY29kZWQgYXMgaW4KLSAgICAgIDpyZmM6YDIyMzFgLCB5b3UgY2FuIGNvbGxhcHNlIHRoZSBwYXJhbWV0ZXIgdmFsdWUgYnkgY2FsbGluZwotICAgICAgOmZ1bmM6YGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWVgLCBwYXNzaW5nIGluIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgIGZyb20gOm1ldGg6YGdldF9wYXJhbWAuICBUaGlzIHdpbGwgcmV0dXJuIGEgc3VpdGFibHkgZGVjb2RlZCBVbmljb2RlCi0gICAgICBzdHJpbmcgd2hlbiB0aGUgdmFsdWUgaXMgYSB0dXBsZSwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyB1bnF1b3RlZCBpZiBpdAotICAgICAgaXNuJ3QuICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgIHJhd3BhcmFtID0gbXNnLmdldF9wYXJhbSgnZm9vJykKLSAgICAgICAgIHBhcmFtID0gZW1haWwudXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZShyYXdwYXJhbSkKLQotICAgICAgSW4gYW55IGNhc2UsIHRoZSBwYXJhbWV0ZXIgdmFsdWUgKGVpdGhlciB0aGUgcmV0dXJuZWQgc3RyaW5nLCBvciB0aGUKLSAgICAgIGBgVkFMVUVgYCBpdGVtIGluIHRoZSAzLXR1cGxlKSBpcyBhbHdheXMgdW5xdW90ZWQsIHVubGVzcyAqdW5xdW90ZSogaXMgc2V0Ci0gICAgICB0byBgYEZhbHNlYGAuCisgICAgICA6bWltZXR5cGU6YHRleHQvcGxhaW5gIG9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLCBhbHRob3VnaCB0aGlzIGlzCisgICAgICBub3QgZW5mb3JjZWQuICBUaGUgZGVmYXVsdCBjb250ZW50IHR5cGUgaXMgbm90IHN0b3JlZCBpbiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgc28gaXQgb25seSBhZmZlY3RzIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgIHRoZSBgYGdldF9jb250ZW50X3R5cGVgYCBtZXRob2RzIHdoZW4gbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciBpcyBwcmVzZW50IGluIHRoZSBtZXNzYWdlLgogCiAKICAgIC4uIG1ldGhvZDo6IHNldF9wYXJhbShwYXJhbSwgdmFsdWUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD1Ob25lLCBsYW5ndWFnZT0nJywgcmVwbGFjZT1GYWxzZSkKIAogICAgICAgU2V0IGEgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBJZiB0aGUKLSAgICAgIHBhcmFtZXRlciBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaGVhZGVyLCBpdHMgdmFsdWUgd2lsbCBiZSByZXBsYWNlZCB3aXRoCi0gICAgICAqdmFsdWUqLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhcyBub3QgeWV0IGJlZW4gZGVmaW5lZAotICAgICAgZm9yIHRoaXMgbWVzc2FnZSwgaXQgd2lsbCBiZSBzZXQgdG8gOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBhbmQgdGhlIG5ldwotICAgICAgcGFyYW1ldGVyIHZhbHVlIHdpbGwgYmUgYXBwZW5kZWQgYXMgcGVyIDpyZmM6YDIwNDVgLgorICAgICAgcGFyYW1ldGVyIGFscmVhZHkgZXhpc3RzIGluIHRoZSBoZWFkZXIsIHJlcGxhY2UgaXRzIHZhbHVlIHdpdGggKnZhbHVlKi4KKyAgICAgIFdoZW4gKmhlYWRlciogaXMgYGBDb250ZW50LVR5cGVgYCAodGhlIGRlZmF1bHQpIGFuZCB0aGUgaGVhZGVyIGRvZXMgbm90CisgICAgICB5ZXQgZXhpc3QgaW4gdGhlIG1lc3NhZ2UsIGFkZCBpdCwgc2V0IGl0cyB2YWx1ZSB0bworICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCwgYW5kIGFwcGVuZCB0aGUgbmV3IHBhcmFtZXRlciB2YWx1ZS4gIE9wdGlvbmFsCisgICAgICAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgaGVhZGVyIHRvIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgogCi0gICAgICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgaGVhZGVyIHRvCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCwgYW5kIGFsbCBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeQotICAgICAgdW5sZXNzIG9wdGlvbmFsICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4KLQotICAgICAgSWYgb3B0aW9uYWwgKmNoYXJzZXQqIGlzIHNwZWNpZmllZCwgdGhlIHBhcmFtZXRlciB3aWxsIGJlIGVuY29kZWQKLSAgICAgIGFjY29yZGluZyB0byA6cmZjOmAyMjMxYC4gT3B0aW9uYWwgKmxhbmd1YWdlKiBzcGVjaWZpZXMgdGhlIFJGQyAyMjMxCi0gICAgICBsYW5ndWFnZSwgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgc3RyaW5nLiAgQm90aCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSoKLSAgICAgIHNob3VsZCBiZSBzdHJpbmdzLgorICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCB0aGUgY2hhcnNldCBhbmQgbGFuZ3VhZ2UgbWF5CisgICAgICBiZSBleHBsaWNpdHkgc3BlY2lmaWVkIHVzaW5nIHRoZSBvcHRpb25hbCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSoKKyAgICAgIHBhcmFtZXRlcnMuICBPcHRpb25hbCAqbGFuZ3VhZ2UqIHNwZWNpZmllcyB0aGUgOnJmYzpgMjIzMWAgbGFuZ3VhZ2UsCisgICAgICBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSBzdHJpbmcuICBCb3RoICpjaGFyc2V0KiBhbmQgKmxhbmd1YWdlKiBzaG91bGQgYmUKKyAgICAgIHN0cmluZ3MuICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIGBgdXRmOGBgICpjaGFyc2V0KiBhbmQgYGBOb25lYGAgZm9yCisgICAgICB0aGUgKmxhbmd1YWdlKi4KIAogICAgICAgSWYgKnJlcGxhY2UqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBoZWFkZXIgaXMgbW92ZWQgdG8gdGhlCiAgICAgICBlbmQgb2YgdGhlIGxpc3Qgb2YgaGVhZGVycy4gIElmICpyZXBsYWNlKiBpcyBgYFRydWVgYCwgdGhlIGhlYWRlcgogICAgICAgd2lsbCBiZSB1cGRhdGVkIGluIHBsYWNlLgogCisgICAgICBVc2Ugb2YgdGhlICpyZXF1b3RlKiBwYXJhbWV0ZXIgd2l0aCA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cyBpcworICAgICAgZGVwcmVjYXRlZC4KKworICAgICAgTm90ZSB0aGF0IGV4aXN0aW5nIHBhcmFtZXRlciB2YWx1ZXMgb2YgaGVhZGVycyBtYXkgYmUgYWNjZXNzZWQgdGhyb3VnaAorICAgICAgdGhlIDphdHRyOmB+ZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlci5wYXJhbXNgIGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgIGhlYWRlciB2YWx1ZSAoZm9yIGV4YW1wbGUsIGBgbXNnWydDb250ZW50LVR5cGUnXS5wYXJhbXNbJ2NoYXJzZXQnXWBgLgorCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCBgYHJlcGxhY2VgYCBrZXl3b3JkIHdhcyBhZGRlZC4KIAogCkBAIC01MDIsMjUgKzM4OCwxMSBAQAogCiAgICAgICBSZW1vdmUgdGhlIGdpdmVuIHBhcmFtZXRlciBjb21wbGV0ZWx5IGZyb20gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCiAgICAgICBoZWFkZXIuICBUaGUgaGVhZGVyIHdpbGwgYmUgcmUtd3JpdHRlbiBpbiBwbGFjZSB3aXRob3V0IHRoZSBwYXJhbWV0ZXIgb3IKLSAgICAgIGl0cyB2YWx1ZS4gIEFsbCB2YWx1ZXMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5IHVubGVzcyAqcmVxdW90ZSogaXMKLSAgICAgIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLiAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuCi0gICAgICBhbHRlcm5hdGl2ZSB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKyAgICAgIGl0cyB2YWx1ZS4gIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSB0bworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCiAKLQotICAgLi4gbWV0aG9kOjogc2V0X3R5cGUodHlwZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUpCi0KLSAgICAgIFNldCB0aGUgbWFpbiB0eXBlIGFuZCBzdWJ0eXBlIGZvciB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKLSAgICAgIGhlYWRlci4gKnR5cGUqIG11c3QgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYCwKLSAgICAgIG90aGVyd2lzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KLQotICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZXMgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwga2VlcGluZyBhbGwKLSAgICAgIHRoZSBwYXJhbWV0ZXJzIGluIHBsYWNlLiAgSWYgKnJlcXVvdGUqIGlzIGBgRmFsc2VgYCwgdGhpcyBsZWF2ZXMgdGhlCi0gICAgICBleGlzdGluZyBoZWFkZXIncyBxdW90aW5nIGFzIGlzLCBvdGhlcndpc2UgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBxdW90ZWQKLSAgICAgICh0aGUgZGVmYXVsdCkuCi0KLSAgICAgIEFuIGFsdGVybmF0aXZlIGhlYWRlciBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSAqaGVhZGVyKiBhcmd1bWVudC4gV2hlbiB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcyBzZXQgYSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYAotICAgICAgaGVhZGVyIGlzIGFsc28gYWRkZWQuCisgICAgICBVc2Ugb2YgdGhlICpyZXF1b3RlKiBwYXJhbWV0ZXIgd2l0aCA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cyBpcworICAgICAgZGVwcmVjYXRlZC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZmFpbG9iaj1Ob25lKQpAQCAtNTQ5LDEyICs0MjEsMTEgQEAKICAgICAgIG5lY2Vzc2FyeS4gIEEgOmV4YzpgfmVtYWlsLmVycm9ycy5IZWFkZXJQYXJzZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlCiAgICAgICBtZXNzYWdlIG9iamVjdCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgogCi0gICAgICBOb3RlIHRoYXQgdXNpbmcgdGhpcyBtZXRob2QgaXMgc3VidGx5IGRpZmZlcmVudCB0aGFuIGRlbGV0aW5nIHRoZSBvbGQKKyAgICAgIE5vdGUgdGhhdCB1c2luZyB0aGlzIG1ldGhvZCBpcyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gZGVsZXRpbmcgdGhlIG9sZAogICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFuZCBhZGRpbmcgYSBuZXcgb25lIHdpdGggdGhlIG5ldwogICAgICAgYm91bmRhcnkgdmlhIDptZXRoOmBhZGRfaGVhZGVyYCwgYmVjYXVzZSA6bWV0aDpgc2V0X2JvdW5kYXJ5YCBwcmVzZXJ2ZXMKICAgICAgIHRoZSBvcmRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBsaXN0IG9mCi0gICAgICBoZWFkZXJzLiBIb3dldmVyLCBpdCBkb2VzICpub3QqIHByZXNlcnZlIGFueSBjb250aW51YXRpb24gbGluZXMgd2hpY2ggbWF5Ci0gICAgICBoYXZlIGJlZW4gcHJlc2VudCBpbiB0aGUgb3JpZ2luYWwgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorICAgICAgaGVhZGVycy4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9jaGFyc2V0KGZhaWxvYmo9Tm9uZSkKQEAgLTU2Myw5ICs0MzQsNiBAQAogICAgICAgY29lcmNlZCB0byBsb3dlciBjYXNlLiAgSWYgdGhlcmUgaXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvciBpZgogICAgICAgdGhhdCBoZWFkZXIgaGFzIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgKmZhaWxvYmoqIGlzIHJldHVybmVkLgogCi0gICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIDptZXRoOmBnZXRfY2hhcnNldGAgd2hpY2ggcmV0dXJucyB0aGUKLSAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgZm9yIHRoZSBkZWZhdWx0IGVuY29kaW5nIG9mIHRoZSBtZXNzYWdlIGJvZHkuCi0KIAogICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXRzKGZhaWxvYmo9Tm9uZSkKIApAQCAtNTc1LDEwICs0NDMsMTkgQEAKIAogICAgICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IHdpbGwgYmUgYSBzdHJpbmcgd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZQogICAgICAgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgZm9yIHRoZQotICAgICAgcmVwcmVzZW50ZWQgc3VicGFydC4gIEhvd2V2ZXIsIGlmIHRoZSBzdWJwYXJ0IGhhcyBubwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIG9yIGlzIG5vdCBvZgotICAgICAgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbiBNSU1FIHR5cGUsIHRoZW4gdGhhdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0Ci0gICAgICB3aWxsIGJlICpmYWlsb2JqKi4KKyAgICAgIHJlcHJlc2VudGVkIHN1YnBhcnQuICBJZiB0aGUgc3VicGFydCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciwgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCBvciBpcyBub3Qgb2YgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbgorICAgICAgTUlNRSB0eXBlLCB0aGVuIHRoYXQgaXRlbSBpbiB0aGUgcmV0dXJuZWQgbGlzdCB3aWxsIGJlICpmYWlsb2JqKi4KKworCisgICAuLiBtZXRob2Q6OiBpc19hdHRhY2htZW50CisKKyAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGVyZSBpcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIKKyAgICAgIGFuZCBpdHMgKGNhc2UgaW5zZW5zaXRpdmUpIHZhbHVlIGlzIGBgYXR0YWNobWVudGBgLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4yCisgICAgICAgICBpc19hdHRhY2htZW50IGlzIG5vdyBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgcHJvcGVydHksIGZvciBjb25zaXN0ZW5jeQorICAgICAgICAgd2l0aCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCkKQEAgLTU5MCw2ICs0NjcsMTEgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKworICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIHJlbGF0ZSB0byBpbnRlcnJvZ2F0aW5nIGFuZCBtYW5pcHVsYXRpbmcgdGhlIGNvbnRlbnQKKyAgIChwYXlsb2FkKSBvZiB0aGUgbWVzc2FnZS4KKworCiAgICAuLiBtZXRob2Q6OiB3YWxrKCkKIAogICAgICAgVGhlIDptZXRoOmB3YWxrYCBtZXRob2QgaXMgYW4gYWxsLXB1cnBvc2UgZ2VuZXJhdG9yIHdoaWNoIGNhbiBiZSB1c2VkIHRvCkBAIC02NTEsOCArNTMzLDE2OSBAQAogICAgICAgaW50byB0aGUgc3VicGFydHMuCiAKIAotICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGNhbiBhbHNvIG9wdGlvbmFsbHkgY29udGFpbiB0d28gaW5zdGFuY2UgYXR0cmlidXRlcywKLSAgIHdoaWNoIGNhbiBiZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyB0aGUgcGxhaW4gdGV4dCBvZiBhIE1JTUUgbWVzc2FnZS4KKyAgIC4uIG1ldGhvZDo6IGdldF9ib2R5KHByZWZlcmVuY2VsaXN0PSgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJykpCisKKyAgICAgIFJldHVybiB0aGUgTUlNRSBwYXJ0IHRoYXQgaXMgdGhlIGJlc3QgY2FuZGlkYXRlIHRvIGJlIHRoZSAiYm9keSIgb2YgdGhlCisgICAgICBtZXNzYWdlLgorCisgICAgICAqcHJlZmVyZW5jZWxpc3QqIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGZyb20gdGhlIHNldCBgYHJlbGF0ZWRgYCwKKyAgICAgIGBgaHRtbGBgLCBhbmQgYGBwbGFpbmBgLCBhbmQgaW5kaWNhdGVzIHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlIGZvciB0aGUKKyAgICAgIGNvbnRlbnQgdHlwZSBvZiB0aGUgcGFydCByZXR1cm5lZC4KKworICAgICAgU3RhcnQgbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZQorICAgICAgYGBnZXRfYm9keWBgIG1ldGhvZCBpcyBjYWxsZWQuCisKKyAgICAgIElmIGBgcmVsYXRlZGBgIGlzIG5vdCBpbmNsdWRlZCBpbiAqcHJlZmVyZW5jZWxpc3QqLCBjb25zaWRlciB0aGUgcm9vdAorICAgICAgcGFydCAob3Igc3VicGFydCBvZiB0aGUgcm9vdCBwYXJ0KSBvZiBhbnkgcmVsYXRlZCBlbmNvdW50ZXJlZCBhcyBhCisgICAgICBjYW5kaWRhdGUgaWYgdGhlIChzdWItKXBhcnQgbWF0Y2hlcyBhIHByZWZlcmVuY2UuCisKKyAgICAgIFdoZW4gZW5jb3VudGVyaW5nIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjaGVjayB0aGUgYGBzdGFydGBgIHBhcmFtZXRlcgorICAgICAgYW5kIGlmIGEgcGFydCB3aXRoIGEgbWF0Y2hpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIGlzIGZvdW5kLCBjb25zaWRlcgorICAgICAgb25seSBpdCB3aGVuIGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzLiAgT3RoZXJ3aXNlIGNvbnNpZGVyIG9ubHkgdGhlCisgICAgICBmaXJzdCAoZGVmYXVsdCByb290KSBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydC9yZWxhdGVkYGAuCisKKyAgICAgIElmIGEgcGFydCBoYXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBvbmx5IGNvbnNpZGVyCisgICAgICB0aGUgcGFydCBhIGNhbmRpZGF0ZSBtYXRjaCBpZiB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBpcyBgYGlubGluZWBgLgorCisgICAgICBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGVzIG1hdGNoZXMgYW55IG9mIHRoZSBwcmVmZXJlbmNlcyBpbgorICAgICAgKnByZWZlcm5lY2xpc3QqLCByZXR1cm4gYGBOb25lYGAuCisKKyAgICAgIE5vdGVzOiAoMSkgRm9yIG1vc3QgYXBwbGljYXRpb25zIHRoZSBvbmx5ICpwcmVmZXJlbmNlbGlzdCogY29tYmluYXRpb25zCisgICAgICB0aGF0IHJlYWxseSBtYWtlIHNlbnNlIGFyZSBgYCgncGxhaW4nLClgYCwgYGAoJ2h0bWwnLCAncGxhaW4nKWBgLCBhbmQgdGhlCisgICAgICBkZWZhdWx0IGBgKCdyZWxhdGVkJywgJ2h0bWwnLCAncGxhaW4nKWBgLiAgKDIpIEJlY2F1c2UgbWF0Y2hpbmcgc3RhcnRzCisgICAgICB3aXRoIHRoZSBvYmplY3Qgb24gd2hpY2ggYGBnZXRfYm9keWBgIGlzIGNhbGxlZCwgY2FsbGluZyBgYGdldF9ib2R5YGAgb24KKyAgICAgIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIHdpbGwgcmV0dXJuIHRoZSBvYmplY3QgaXRzZWxmIHVubGVzcworICAgICAgKnByZWZlcmVuY2VsaXN0KiBoYXMgYSBub24tZGVmYXVsdCB2YWx1ZS4gKDMpIE1lc3NhZ2VzIChvciBtZXNzYWdlIHBhcnRzKQorICAgICAgdGhhdCBkbyBub3Qgc3BlY2lmeSBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIG9yIHdob3NlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgaW52YWxpZCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgdGhleQorICAgICAgYXJlIG9mIHR5cGUgYGB0ZXh0L3BsYWluYGAsIHdoaWNoIG1heSBvY2Nhc2lvbmFsbHkgY2F1c2UgYGBnZXRfYm9keWBgIHRvCisgICAgICByZXR1cm4gdW5leHBlY3RlZCByZXN1bHRzLgorCisKKyAgIC4uIG1ldGhvZDo6IGl0ZXJfYXR0YWNobWVudHMoKQorCisgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIGltbWVkaWF0ZSBzdWItcGFydHMgb2YgdGhlIG1lc3NhZ2UKKyAgICAgIHRoYXQgYXJlIG5vdCBjYW5kaWRhdGUgImJvZHkiIHBhcnRzLiAgVGhhdCBpcywgc2tpcCB0aGUgZmlyc3Qgb2NjdXJyZW5jZQorICAgICAgb2YgZWFjaCBvZiBgYHRleHQvcGxhaW5gYCwgYGB0ZXh0L2h0bWxgYCwgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvcgorICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCAodW5sZXNzIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFya2VkIGFzCisgICAgICBhdHRhY2htZW50cyB2aWEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnRgKSwgYW5kCisgICAgICByZXR1cm4gYWxsIHJlbWFpbmluZyBwYXJ0cy4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhCisgICAgICBgYG11bHRpcGFydC9yZWxhdGVkYGAsIHJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBhbGwgdGhlIHJlbGF0ZWQgcGFydHMKKyAgICAgIGV4Y2VwdCB0aGUgcm9vdCBwYXJ0IChpZTogdGhlIHBhcnQgcG9pbnRlZCB0byBieSB0aGUgYGBzdGFydGBgIHBhcmFtZXRlciwKKyAgICAgIG9yIHRoZSBmaXJzdCBwYXJ0IGlmIHRoZXJlIGlzIG5vIGBgc3RhcnRgYCBwYXJhbWV0ZXIgb3IgdGhlIGBgc3RhcnRgYAorICAgICAgcGFyYW1ldGVyIGRvZXNuJ3QgbWF0Y2ggdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBvZiBhbnkgb2YgdGhlCisgICAgICBwYXJ0cykuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgIG9yIGEKKyAgICAgIG5vbi1gYG11bHRpcGFydGBgLCByZXR1cm4gYW4gZW1wdHkgaXRlcmF0b3IuCisKKworICAgLi4gbWV0aG9kOjogaXRlcl9wYXJ0cygpCisKKyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBvZiB0aGUgaW1tZWRpYXRlIHN1Yi1wYXJ0cyBvZiB0aGUgbWVzc2FnZSwKKyAgICAgIHdoaWNoIHdpbGwgYmUgZW1wdHkgZm9yIGEgbm9uLWBgbXVsdGlwYXJ0YGAuICAoU2VlIGFsc28KKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uud2Fsa2AuKQorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgQ2FsbCB0aGUgOm1ldGg6YH5lbWFpbC5jb250ZW50bWFuYWdlci5Db250ZW50TWFuYWdlci5nZXRfY29udGVudGAgbWV0aG9kCisgICAgICBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZiBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nCisgICAgICBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYKKyAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKKyAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgQ2FsbCB0aGUgOm1ldGg6YH5lbWFpbC5jb250ZW50bWFuYWdlci5Db250ZW50TWFuYWdlci5zZXRfY29udGVudGAgbWV0aG9kCisgICAgICBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZiBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nCisgICAgICBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYKKyAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKKyAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorCisKKyAgIC4uIG1ldGhvZDo6IG1ha2VfcmVsYXRlZChib3VuZGFyeT1Ob25lKQorCisgICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAgbWVzc2FnZSBpbnRvIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIG1lc3NhZ2UsCisgICAgICBtb3ZpbmcgYW55IGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEKKyAgICAgIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlCisgICAgICBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkKKyAgICAgIHRvIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlCisgICAgICBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgorCisKKyAgIC4uIG1ldGhvZDo6IG1ha2VfYWx0ZXJuYXRpdmUoYm91bmRhcnk9Tm9uZSkKKworICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG9yIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIGludG8gYQorICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gCisgICAgICBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYSAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYKKyAgICAgICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LAorICAgICAgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeSB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcworICAgICAgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KKworCisgICAuLiBtZXRob2Q6OiBtYWtlX21peGVkKGJvdW5kYXJ5PU5vbmUpCisKKyAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCwgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yIGEKKyAgICAgIGBgbXVsdGlwYXJ0LWFsdGVybmF0aXZlYGAgaW50byBhIGBgbXVsdGlwYXJ0L21peGVkYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUKKyAgICAgIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcKKyAgICAgIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseQorICAgICAgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCisKKworICAgLi4gbWV0aG9kOjogYWRkX3JlbGF0ZWQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2UKKyAgICAgIG9iamVjdCwgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsCisgICAgICBhbmQgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCisgICAgICB0aGUgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBjYWxsIDptZXRoOmBtYWtlX3JlbGF0ZWRgIGFuZCB0aGVuCisgICAgICBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYW55IG90aGVyIHR5cGUgb2YgYGBtdWx0aXBhcnRgYCwKKyAgICAgIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlCisgICAgICB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCisgICAgICBJZiB0aGUgYWRkZWQgcGFydCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwKKyAgICAgIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUgYGBpbmxpbmVgYC4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfYWx0ZXJuYXRpdmUoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCisgICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLCBhbmQKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiB0aGUKKyAgICAgIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCBvciBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNhbGwKKyAgICAgIDptZXRoOmBtYWtlX2FsdGVybmF0aXZlYCBhbmQgdGhlbiBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMKKyAgICAgIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYKKyAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKKyAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9hdHRhY2htZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9taXhlZGBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZSBvYmplY3QsCisgICAgICBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKKyAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNhbGwgOm1ldGg6YG1ha2VfbWl4ZWRgIGFuZCB0aGVuIHByb2NlZWQgYXMKKyAgICAgIGFib3ZlLiBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAKKyAgICAgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4gIElmIHRoZSBhZGRlZCBwYXJ0CisgICAgICBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgYWRkIG9uZSB3aXRoIHRoZSB2YWx1ZQorICAgICAgYGBhdHRhY2htZW50YGAuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBib3RoIGZvciBleHBsaWNpdCBhdHRhY2htZW50cworICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCBhbmQgYGBpbmxpbmVgYCBhdHRhY2htZW50cworICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmVgKSwgYnkgcGFzc2luZyBhcHByb3ByaWF0ZQorICAgICAgb3B0aW9ucyB0byB0aGUgYGBjb250ZW50X21hbmFnZXJgYC4KKworCisgICAuLiBtZXRob2Q6OiBjbGVhcigpCisKKyAgICAgIFJlbW92ZSB0aGUgcGF5bG9hZCBhbmQgYWxsIG9mIHRoZSBoZWFkZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IGNsZWFyX2NvbnRlbnQoKQorCisgICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgOmV4YzpgQ29udGVudC1gIGhlYWRlcnMsIGxlYXZpbmcKKyAgICAgIGFsbCBvdGhlciBoZWFkZXJzIGludGFjdCBhbmQgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuCisKKworICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIGluc3RhbmNlIGF0dHJpYnV0ZXM6CiAKIAogICAgLi4gYXR0cmlidXRlOjogcHJlYW1ibGUKQEAgLTY4MiwxMSArNzI1LDggQEAKIAogICAgICAgVGhlICplcGlsb2d1ZSogYXR0cmlidXRlIGFjdHMgdGhlIHNhbWUgd2F5IGFzIHRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSwKICAgICAgIGV4Y2VwdCB0aGF0IGl0IGNvbnRhaW5zIHRleHQgdGhhdCBhcHBlYXJzIGJldHdlZW4gdGhlIGxhc3QgYm91bmRhcnkgYW5kCi0gICAgICB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlLgotCi0gICAgICBZb3UgZG8gbm90IG5lZWQgdG8gc2V0IHRoZSBlcGlsb2d1ZSB0byB0aGUgZW1wdHkgc3RyaW5nIGluIG9yZGVyIGZvciB0aGUKLSAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIHRvIHByaW50IGEgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZQotICAgICAgZmlsZS4KKyAgICAgIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UuICBBcyB3aXRoIHRoZSA6YXR0cjpgfkVtYWlsTWVzc2FnZS5wcmVhbWJsZWAsCisgICAgICBpZiB0aGVyZSBpcyBubyBlcGlsb2cgdGV4dCB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIGBgTm9uZWBgLgogCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGRlZmVjdHMKQEAgLTY5NCwzICs3MzQsMTggQEAKICAgICAgIFRoZSAqZGVmZWN0cyogYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBhbGwgdGhlIHByb2JsZW1zIGZvdW5kIHdoZW4KICAgICAgIHBhcnNpbmcgdGhpcyBtZXNzYWdlLiAgU2VlIDptb2Q6YGVtYWlsLmVycm9yc2AgZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24KICAgICAgIG9mIHRoZSBwb3NzaWJsZSBwYXJzaW5nIGRlZmVjdHMuCisKKworLi4gY2xhc3M6OiBNSU1FUGFydChwb2xpY3k9ZGVmYXVsdCkKKworICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHN1YnBhcnQgb2YgYSBNSU1FIG1lc3NhZ2UuICBJdCBpcyBpZGVudGljYWwgdG8KKyAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAsIGV4Y2VwdCB0aGF0IG5vIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMgYXJlCisgICAgYWRkZWQgd2hlbiA6bWV0aDpgfkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgaXMgY2FsbGVkLCBzaW5jZSBzdWItcGFydHMgZG8KKyAgICBub3QgbmVlZCB0aGVpciBvd24gOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycy4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjQgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YC4gIERvY3MgZm9yIGxlZ2FjeSBtZXNzYWdlIGNsYXNzIG1vdmVkIHRvCisgICAgICAgOnJlZjpgY29tcGF0MzJfbWVzc2FnZWAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CmluZGV4IDgyOTdkZWEuLmQ5ZGFlOWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CkBAIC04LDYgKzgsMTEgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEl0cyBmdW5jdGlvbmFsaXR5CitpcyBwYXJ0aWFsbHkgcmVwbGFjZWQgYnkgdGhlIDptb2Q6YH5lbWFpbC5jb250ZW50bWFuYWdlcmAgaW4gdGhlIG5ldyBBUEksIGJ1dAoraW4gY2VydGFpbiBhcHBsaWNhdGlvbnMgdGhlc2UgY2xhc3NlcyBtYXkgc3RpbGwgYmUgdXNlZnVsLCBldmVuIGluIG5vbi1sZWdhY3kKK2NvZGUuCisKIE9yZGluYXJpbHksIHlvdSBnZXQgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgYnkgcGFzc2luZyBhIGZpbGUgb3Igc29tZSB0ZXh0IHRvCiBhIHBhcnNlciwgd2hpY2ggcGFyc2VzIHRoZSB0ZXh0IGFuZCByZXR1cm5zIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSG93ZXZlcgogeW91IGNhbiBhbHNvIGJ1aWxkIGEgY29tcGxldGUgbWVzc2FnZSBzdHJ1Y3R1cmUgZnJvbSBzY3JhdGNoLCBvciBldmVuIGluZGl2aWR1YWwKQEAgLTI1LDcgKzMwLDcgQEAKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuYmFzZQogCi0uLiBjbGFzczo6IE1JTUVCYXNlKF9tYWludHlwZSwgX3N1YnR5cGUsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUJhc2UoX21haW50eXBlLCBfc3VidHlwZSwgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5iYXNlYAogCkBAIC00MSwxMCArNDYsMTcgQEAKICAgIGtleS92YWx1ZSBkaWN0aW9uYXJ5IGFuZCBpcyBwYXNzZWQgZGlyZWN0bHkgdG8gOm1ldGg6YE1lc3NhZ2UuYWRkX2hlYWRlcgogICAgPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hZGRfaGVhZGVyPmAuCiAKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCwgKGRlZmF1bHRzIHRvIHRoZQorICAgOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5KSBpdCB3aWxsIGJlIHBhc3NlZCB0bworICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYC4KKwogICAgVGhlIDpjbGFzczpgTUlNRUJhc2VgIGNsYXNzIGFsd2F5cyBhZGRzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyCiAgICAoYmFzZWQgb24gKl9tYWludHlwZSosICpfc3VidHlwZSosIGFuZCAqX3BhcmFtcyopLCBhbmQgYQogICAgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVyIChhbHdheXMgc2V0IHRvIGBgMS4wYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KKwogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5ub25tdWx0aXBhcnQKIApAQCAtNjIsNyArNzQsOCBAQAogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5tdWx0aXBhcnQKIAotLi4gY2xhc3M6OiBNSU1FTXVsdGlwYXJ0KF9zdWJ0eXBlPSdtaXhlZCcsIGJvdW5kYXJ5PU5vbmUsIF9zdWJwYXJ0cz1Ob25lLCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVNdWx0aXBhcnQoX3N1YnR5cGU9J21peGVkJywgYm91bmRhcnk9Tm9uZSwgX3N1YnBhcnRzPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLm11bHRpcGFydGAKIApAQCAtODIsMTQgKzk1LDIwIEBACiAgICB0byB0aGUgbWVzc2FnZSBieSB1c2luZyB0aGUgOm1ldGg6YE1lc3NhZ2UuYXR0YWNoCiAgICA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaD5gIG1ldGhvZC4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhcmUgdGFrZW4gZnJvbQogICAgdGhlIGtleXdvcmQgYXJndW1lbnRzLCBvciBwYXNzZWQgaW50byB0aGUgKl9wYXJhbXMqIGFyZ3VtZW50LCB3aGljaCBpcyBhIGtleXdvcmQKICAgIGRpY3Rpb25hcnkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5hcHBsaWNhdGlvbgogCi0uLiBjbGFzczo6IE1JTUVBcHBsaWNhdGlvbihfZGF0YSwgX3N1YnR5cGU9J29jdGV0LXN0cmVhbScsIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUFwcGxpY2F0aW9uKF9kYXRhLCBfc3VidHlwZT0nb2N0ZXQtc3RyZWFtJywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5hcHBsaWNhdGlvbmAKIApAQCAtMTA5LDEyICsxMjgsMTggQEAKICAgIG9iamVjdCBhcyBuZWNlc3NhcnkuICBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyBiYXNlNjQuICBTZWUgdGhlCiAgICA6bW9kOmBlbWFpbC5lbmNvZGVyc2AgbW9kdWxlIGZvciBhIGxpc3Qgb2YgdGhlIGJ1aWx0LWluIGVuY29kZXJzLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgKl9wYXJhbXMqIGFyZSBwYXNzZWQgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgYmFzZSBjbGFzcyBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmF1ZGlvCiAKLS4uIGNsYXNzOjogTUlNRUF1ZGlvKF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUF1ZGlvKF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsIFwKKyAgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuYXVkaW9gCiAKQEAgLTEzNywxMiArMTYyLDE4IEBACiAgICBvYmplY3QgYXMgbmVjZXNzYXJ5LiAgVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgYmFzZTY0LiAgU2VlIHRoZQogICAgOm1vZDpgZW1haWwuZW5jb2RlcnNgIG1vZHVsZSBmb3IgYSBsaXN0IG9mIHRoZSBidWlsdC1pbiBlbmNvZGVycy4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgICpfcGFyYW1zKiBhcmUgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGJhc2UgY2xhc3MgY29uc3RydWN0b3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5pbWFnZQogCi0uLiBjbGFzczo6IE1JTUVJbWFnZShfaW1hZ2VkYXRhLCBfc3VidHlwZT1Ob25lLCBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVJbWFnZShfaW1hZ2VkYXRhLCBfc3VidHlwZT1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCBcCisgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuaW1hZ2VgCiAKQEAgLTE2NSwxMyArMTk2LDE3IEBACiAgICBvYmplY3QgYXMgbmVjZXNzYXJ5LiAgVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgYmFzZTY0LiAgU2VlIHRoZQogICAgOm1vZDpgZW1haWwuZW5jb2RlcnNgIG1vZHVsZSBmb3IgYSBsaXN0IG9mIHRoZSBidWlsdC1pbiBlbmNvZGVycy4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgICpfcGFyYW1zKiBhcmUgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1pbWUuYmFzZS5NSU1FQmFzZWAKICAgIGNvbnN0cnVjdG9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUubWVzc2FnZQogCi0uLiBjbGFzczo6IE1JTUVNZXNzYWdlKF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInKQorLi4gY2xhc3M6OiBNSU1FTWVzc2FnZShfbXNnLCBfc3VidHlwZT0ncmZjODIyJywgKiwgcG9saWN5PWNvbXBhdDMyKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUubWVzc2FnZWAKIApAQCAtMTg0LDEwICsyMTksMTQgQEAKICAgIE9wdGlvbmFsICpfc3VidHlwZSogc2V0cyB0aGUgc3VidHlwZSBvZiB0aGUgbWVzc2FnZTsgaXQgZGVmYXVsdHMgdG8KICAgIDptaW1ldHlwZTpgcmZjODIyYC4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS50ZXh0CiAKLS4uIGNsYXNzOjogTUlNRVRleHQoX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUpCisuLiBjbGFzczo6IE1JTUVUZXh0KF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lLCAqLCBwb2xpY3k9Y29tcGF0MzIpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS50ZXh0YAogCkBAIC0yMTEsNSArMjUwLDEwIEBACiAgICB3aWxsIGF1dG9tYXRpY2FsbHkgZW5jb2RlIHRoZSBuZXcgcGF5bG9hZCAoYW5kIGFkZCBhIG5ldwogICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlcikuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgKl9jaGFyc2V0KiBhbHNvIGFjY2VwdHMgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZXMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKaW5kZXggYjhlYjdjNS4uMmFjMWY5OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CkBAIC04LDE5MCArOCwxNTggQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotTWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlcyBjYW4gYmUgY3JlYXRlZCBpbiBvbmUgb2YgdHdvIHdheXM6IHRoZXkgY2FuIGJlIGNyZWF0ZWQKLWZyb20gd2hvbGUgY2xvdGggYnkgaW5zdGFudGlhdGluZyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMgYW5kCi1zdHJpbmdpbmcgdGhlbSB0b2dldGhlciB2aWEgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBhbmQKLTptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9wYXlsb2FkYCBjYWxscywgb3IgdGhleQotY2FuIGJlIGNyZWF0ZWQgYnkgcGFyc2luZyBhIGZsYXQgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZW1haWwgbWVzc2FnZS4KK01lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZXMgY2FuIGJlIGNyZWF0ZWQgaW4gb25lIG9mIHR3byB3YXlzOiB0aGV5IGNhbiBiZQorY3JlYXRlZCBmcm9tIHdob2xlIGNsb3RoIGJ5IGNyZWF0aW5nIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorb2JqZWN0LCBhZGRpbmcgaGVhZGVycyB1c2luZyB0aGUgZGljdGlvbmFyeSBpbnRlcmZhY2UsIGFuZCBhZGRpbmcgcGF5bG9hZChzKQordXNpbmcgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgYW5kIHJlbGF0ZWQgbWV0aG9kcywgb3IKK3RoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgcGFyc2luZyBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVtYWlsCittZXNzYWdlLgogCiBUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgcHJvdmlkZXMgYSBzdGFuZGFyZCBwYXJzZXIgdGhhdCB1bmRlcnN0YW5kcyBtb3N0IGVtYWlsCi1kb2N1bWVudCBzdHJ1Y3R1cmVzLCBpbmNsdWRpbmcgTUlNRSBkb2N1bWVudHMuICBZb3UgY2FuIHBhc3MgdGhlIHBhcnNlciBhIHN0cmluZwotb3IgYSBmaWxlIG9iamVjdCwgYW5kIHRoZSBwYXJzZXIgd2lsbCByZXR1cm4gdG8geW91IHRoZSByb290Ci06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlIG9mIHRoZSBvYmplY3Qgc3RydWN0dXJlLiAgRm9yIHNpbXBsZSwKLW5vbi1NSU1FIG1lc3NhZ2VzIHRoZSBwYXlsb2FkIG9mIHRoaXMgcm9vdCBvYmplY3Qgd2lsbCBsaWtlbHkgYmUgYSBzdHJpbmcKLWNvbnRhaW5pbmcgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuICBGb3IgTUlNRSBtZXNzYWdlcywgdGhlIHJvb3Qgb2JqZWN0IHdpbGwKLXJldHVybiBgYFRydWVgYCBmcm9tIGl0cyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCwgYW5kCi10aGUgc3VicGFydHMgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgCi1hbmQgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uud2Fsa2AgbWV0aG9kcy4KK2RvY3VtZW50IHN0cnVjdHVyZXMsIGluY2x1ZGluZyBNSU1FIGRvY3VtZW50cy4gIFlvdSBjYW4gcGFzcyB0aGUgcGFyc2VyIGEKK2J5dGVzLCBzdHJpbmcgb3IgZmlsZSBvYmplY3QsIGFuZCB0aGUgcGFyc2VyIHdpbGwgcmV0dXJuIHRvIHlvdSB0aGUgcm9vdAorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGluc3RhbmNlIG9mIHRoZSBvYmplY3Qgc3RydWN0dXJlLiAgRm9yCitzaW1wbGUsIG5vbi1NSU1FIG1lc3NhZ2VzIHRoZSBwYXlsb2FkIG9mIHRoaXMgcm9vdCBvYmplY3Qgd2lsbCBsaWtlbHkgYmUgYQorc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuICBGb3IgTUlNRSBtZXNzYWdlcywgdGhlIHJvb3Qgb2JqZWN0Cit3aWxsIHJldHVybiBgYFRydWVgYCBmcm9tIGl0cyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX211bHRpcGFydGAKK21ldGhvZCwgYW5kIHRoZSBzdWJwYXJ0cyBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZSBwYXlsb2FkIG1hbmlwdWxhdGlvbiBtZXRob2RzLAorc3VjaCBhcyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmdldF9ib2R5YCwKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2AsIGFuZAorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS53YWxrYC4KIAotVGhlcmUgYXJlIGFjdHVhbGx5IHR3byBwYXJzZXIgaW50ZXJmYWNlcyBhdmFpbGFibGUgZm9yIHVzZSwgdGhlIGNsYXNzaWMKLTpjbGFzczpgUGFyc2VyYCBBUEkgYW5kIHRoZSBpbmNyZW1lbnRhbCA6Y2xhc3M6YEZlZWRQYXJzZXJgIEFQSS4gIFRoZSBjbGFzc2ljCi06Y2xhc3M6YFBhcnNlcmAgQVBJIGlzIGZpbmUgaWYgeW91IGhhdmUgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBtZXNzYWdlIGluIG1lbW9yeQotYXMgYSBzdHJpbmcsIG9yIGlmIHRoZSBlbnRpcmUgbWVzc2FnZSBsaXZlcyBpbiBhIGZpbGUgb24gdGhlIGZpbGUgc3lzdGVtLgotOmNsYXNzOmBGZWVkUGFyc2VyYCBpcyBtb3JlIGFwcHJvcHJpYXRlIGZvciB3aGVuIHlvdSdyZSByZWFkaW5nIHRoZSBtZXNzYWdlIGZyb20KLWEgc3RyZWFtIHdoaWNoIG1pZ2h0IGJsb2NrIHdhaXRpbmcgZm9yIG1vcmUgaW5wdXQgKGUuZy4gcmVhZGluZyBhbiBlbWFpbCBtZXNzYWdlCi1mcm9tIGEgc29ja2V0KS4gIFRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGNhbiBjb25zdW1lIGFuZCBwYXJzZSB0aGUgbWVzc2FnZQotaW5jcmVtZW50YWxseSwgYW5kIG9ubHkgcmV0dXJucyB0aGUgcm9vdCBvYmplY3Qgd2hlbiB5b3UgY2xvc2UgdGhlIHBhcnNlciBbI11fLgorVGhlcmUgYXJlIGFjdHVhbGx5IHR3byBwYXJzZXIgaW50ZXJmYWNlcyBhdmFpbGFibGUgZm9yIHVzZSwgdGhlIDpjbGFzczpgUGFyc2VyYAorQVBJIGFuZCB0aGUgaW5jcmVtZW50YWwgOmNsYXNzOmBGZWVkUGFyc2VyYCBBUEkuICBUaGUgOmNsYXNzOmBQYXJzZXJgIEFQSSBpcworbW9zdCB1c2VmdWwgaWYgeW91IGhhdmUgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBtZXNzYWdlIGluIG1lbW9yeSwgb3IgaWYgdGhlCitlbnRpcmUgbWVzc2FnZSBsaXZlcyBpbiBhIGZpbGUgb24gdGhlIGZpbGUgc3lzdGVtLiAgOmNsYXNzOmBGZWVkUGFyc2VyYCBpcyBtb3JlCithcHByb3ByaWF0ZSB3aGVuIHlvdSBhcmUgcmVhZGluZyB0aGUgbWVzc2FnZSBmcm9tIGEgc3RyZWFtIHdoaWNoIG1pZ2h0IGJsb2NrCit3YWl0aW5nIGZvciBtb3JlIGlucHV0IChzdWNoIGFzIHJlYWRpbmcgYW4gZW1haWwgbWVzc2FnZSBmcm9tIGEgc29ja2V0KS4gIFRoZQorOmNsYXNzOmBGZWVkUGFyc2VyYCBjYW4gY29uc3VtZSBhbmQgcGFyc2UgdGhlIG1lc3NhZ2UgaW5jcmVtZW50YWxseSwgYW5kIG9ubHkKK3JldHVybnMgdGhlIHJvb3Qgb2JqZWN0IHdoZW4geW91IGNsb3NlIHRoZSBwYXJzZXIuCiAKIE5vdGUgdGhhdCB0aGUgcGFyc2VyIGNhbiBiZSBleHRlbmRlZCBpbiBsaW1pdGVkIHdheXMsIGFuZCBvZiBjb3Vyc2UgeW91IGNhbgotaW1wbGVtZW50IHlvdXIgb3duIHBhcnNlciBjb21wbGV0ZWx5IGZyb20gc2NyYXRjaC4gIFRoZXJlIGlzIG5vIG1hZ2ljYWwKLWNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UncyBidW5kbGVkIHBhcnNlciBhbmQgdGhlCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzLCBzbyB5b3VyIGN1c3RvbSBwYXJzZXIgY2FuIGNyZWF0ZSBtZXNzYWdlCi1vYmplY3QgdHJlZXMgYW55IHdheSBpdCBmaW5kcyBuZWNlc3NhcnkuCitpbXBsZW1lbnQgeW91ciBvd24gcGFyc2VyIGNvbXBsZXRlbHkgZnJvbSBzY3JhdGNoLiAgQWxsIG9mIHRoZSBsb2dpYyB0aGF0Citjb25uZWN0cyB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UncyBidW5kbGVkIHBhcnNlciBhbmQgdGhlCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXMgZW1ib2RpZWQgaW4gdGhlIDptb2Q6YHBvbGljeWAKK2NsYXNzLCBzbyBhIGN1c3RvbSBwYXJzZXIgY2FuIGNyZWF0ZSBtZXNzYWdlIG9iamVjdCB0cmVlcyBhbnkgd2F5IGl0IGZpbmRzCituZWNlc3NhcnkgYnkgaW1wbGVtZW50aW5nIGN1c3RvbSB2ZXJzaW9ucyBvZiB0aGUgYXBwcm9wcmlhdGUgOm1vZDpgcG9saWN5YAorbWV0aG9kcy4KIAogCiBGZWVkUGFyc2VyIEFQSQogXl5eXl5eXl5eXl5eXl4KIAotVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLmZlZWRwYXJzZXJgIG1vZHVsZSwKLXByb3ZpZGVzIGFuIEFQSSB0aGF0IGlzIGNvbmR1Y2l2ZSB0byBpbmNyZW1lbnRhbCBwYXJzaW5nIG9mIGVtYWlsIG1lc3NhZ2VzLCBzdWNoCi1hcyB3b3VsZCBiZSBuZWNlc3Nhcnkgd2hlbiByZWFkaW5nIHRoZSB0ZXh0IG9mIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhIHNvdXJjZQotdGhhdCBjYW4gYmxvY2sgKGUuZy4gYSBzb2NrZXQpLiAgVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgY2FuIG9mIGNvdXJzZSBiZSB1c2VkCi10byBwYXJzZSBhbiBlbWFpbCBtZXNzYWdlIGZ1bGx5IGNvbnRhaW5lZCBpbiBhIHN0cmluZyBvciBhIGZpbGUsIGJ1dCB0aGUgY2xhc3NpYwotOmNsYXNzOmBQYXJzZXJgIEFQSSBtYXkgYmUgbW9yZSBjb252ZW5pZW50IGZvciBzdWNoIHVzZSBjYXNlcy4gIFRoZSBzZW1hbnRpY3MKLWFuZCByZXN1bHRzIG9mIHRoZSB0d28gcGFyc2VyIEFQSXMgYXJlIGlkZW50aWNhbC4KK1RoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLmZlZWRwYXJzZXJgIG1vZHVsZSwKK3Byb3ZpZGVzIGFuIEFQSSB0aGF0IGlzIGNvbmR1Y2l2ZSB0byBpbmNyZW1lbnRhbCBwYXJzaW5nIG9mIGVtYWlsIG1lc3NhZ2VzLAorc3VjaCBhcyB3b3VsZCBiZSBuZWNlc3Nhcnkgd2hlbiByZWFkaW5nIHRoZSB0ZXh0IG9mIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhCitzb3VyY2UgdGhhdCBjYW4gYmxvY2sgKHN1Y2ggYXMgYSBzb2NrZXQpLiAgVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBjYW4gb2YKK2NvdXJzZSBiZSB1c2VkIHRvIHBhcnNlIGFuIGVtYWlsIG1lc3NhZ2UgZnVsbHkgY29udGFpbmVkIGluIGEgOnRlcm06YGJ5dGVzLWxpa2UKK29iamVjdGAsIHN0cmluZywgb3IgZmlsZSwgYnV0IHRoZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBBUEkgbWF5IGJlIG1vcmUKK2NvbnZlbmllbnQgZm9yIHN1Y2ggdXNlIGNhc2VzLiAgVGhlIHNlbWFudGljcyBhbmQgcmVzdWx0cyBvZiB0aGUgdHdvIHBhcnNlcgorQVBJcyBhcmUgaWRlbnRpY2FsLgogCi1UaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCdzIEFQSSBpcyBzaW1wbGU7IHlvdSBjcmVhdGUgYW4gaW5zdGFuY2UsIGZlZWQgaXQgYSBidW5jaAotb2YgdGV4dCB1bnRpbCB0aGVyZSdzIG5vIG1vcmUgdG8gZmVlZCBpdCwgdGhlbiBjbG9zZSB0aGUgcGFyc2VyIHRvIHJldHJpZXZlIHRoZQotcm9vdCBtZXNzYWdlIG9iamVjdC4gIFRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGlzIGV4dHJlbWVseSBhY2N1cmF0ZSB3aGVuIHBhcnNpbmcKLXN0YW5kYXJkcy1jb21wbGlhbnQgbWVzc2FnZXMsIGFuZCBpdCBkb2VzIGEgdmVyeSBnb29kIGpvYiBvZiBwYXJzaW5nCi1ub24tY29tcGxpYW50IG1lc3NhZ2VzLCBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgaG93IGEgbWVzc2FnZSB3YXMgZGVlbWVkCi1icm9rZW4uICBJdCB3aWxsIHBvcHVsYXRlIGEgbWVzc2FnZSBvYmplY3QncyAqZGVmZWN0cyogYXR0cmlidXRlIHdpdGggYSBsaXN0IG9mCi1hbnkgcHJvYmxlbXMgaXQgZm91bmQgaW4gYSBtZXNzYWdlLiAgU2VlIHRoZSA6bW9kOmBlbWFpbC5lcnJvcnNgIG1vZHVsZSBmb3IgdGhlCitUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgJ3MgQVBJIGlzIHNpbXBsZTsgeW91IGNyZWF0ZSBhbiBpbnN0YW5jZSwgZmVlZCBpdCBhCitidW5jaCBvZiBieXRlcyB1bnRpbCB0aGVyZSdzIG5vIG1vcmUgdG8gZmVlZCBpdCwgdGhlbiBjbG9zZSB0aGUgcGFyc2VyIHRvCityZXRyaWV2ZSB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIFRoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgaXMgZXh0cmVtZWx5CithY2N1cmF0ZSB3aGVuIHBhcnNpbmcgc3RhbmRhcmRzLWNvbXBsaWFudCBtZXNzYWdlcywgYW5kIGl0IGRvZXMgYSB2ZXJ5IGdvb2Qgam9iCitvZiBwYXJzaW5nIG5vbi1jb21wbGlhbnQgbWVzc2FnZXMsIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBob3cgYSBtZXNzYWdlCit3YXMgZGVlbWVkIGJyb2tlbi4gIEl0IHdpbGwgcG9wdWxhdGUgYSBtZXNzYWdlIG9iamVjdCdzCis6YXR0cjpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmRlZmVjdHNgIGF0dHJpYnV0ZSB3aXRoIGEgbGlzdCBvZiBhbnkKK3Byb2JsZW1zIGl0IGZvdW5kIGluIGEgbWVzc2FnZS4gIFNlZSB0aGUgOm1vZDpgZW1haWwuZXJyb3JzYCBtb2R1bGUgZm9yIHRoZQogbGlzdCBvZiBkZWZlY3RzIHRoYXQgaXQgY2FuIGZpbmQuCiAKLUhlcmUgaXMgdGhlIEFQSSBmb3IgdGhlIDpjbGFzczpgRmVlZFBhcnNlcmA6CitIZXJlIGlzIHRoZSBBUEkgZm9yIHRoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmA6CiAKIAotLi4gY2xhc3M6OiBGZWVkUGFyc2VyKF9mYWN0b3J5PWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGNsYXNzOjogQnl0ZXNGZWVkUGFyc2VyKF9mYWN0b3J5PU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIENyZWF0ZSBhIDpjbGFzczpgRmVlZFBhcnNlcmAgaW5zdGFuY2UuICBPcHRpb25hbCAqX2ZhY3RvcnkqIGlzIGEgbm8tYXJndW1lbnQKLSAgIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSBvYmplY3QgaXMgbmVlZGVkLiAgSXQKLSAgIGRlZmF1bHRzIHRvIHRoZSA6Y2xhc3M6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MuCisgICBDcmVhdGUgYSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgaW5zdGFuY2UuICBPcHRpb25hbCAqX2ZhY3RvcnkqIGlzIGEKKyAgIG5vLWFyZ3VtZW50IGNhbGxhYmxlOyBpZiBub3Qgc3BlY2lmaWVkIHVzZSB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tZXNzYWdlX2ZhY3RvcnlgIGZyb20gdGhlICpwb2xpY3kqLiAgQ2FsbAorICAgKl9mYWN0b3J5KiB3aGVuZXZlciBhIG5ldyBtZXNzYWdlIG9iamVjdCBpcyBuZWVkZWQuCiAKLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZQorICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlCisgICA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UgYW5kIHByb3ZpZGVzCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGFzIHRoZSBkZWZhdWx0IGZhY3RvcnkuICBBbGwgb3RoZXIgcG9saWNpZXMKKyAgIHByb3ZpZGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGFzIHRoZSBkZWZhdWx0ICpfZmFjdG9yeSouIEZvcgorICAgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IGVsc2UgKnBvbGljeSogY29udHJvbHMsIHNlZSB0aGUKICAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi0gICAuLiBtZXRob2Q6OiBmZWVkKGRhdGEpCi0KLSAgICAgIEZlZWQgdGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgc29tZSBtb3JlIGRhdGEuICAqZGF0YSogc2hvdWxkIGJlIGEgc3RyaW5nCi0gICAgICBjb250YWluaW5nIG9uZSBvciBtb3JlIGxpbmVzLiAgVGhlIGxpbmVzIGNhbiBiZSBwYXJ0aWFsIGFuZCB0aGUKLSAgICAgIDpjbGFzczpgRmVlZFBhcnNlcmAgd2lsbCBzdGl0Y2ggc3VjaCBwYXJ0aWFsIGxpbmVzIHRvZ2V0aGVyIHByb3Blcmx5LiAgVGhlCi0gICAgICBsaW5lcyBpbiB0aGUgc3RyaW5nIGNhbiBoYXZlIGFueSBvZiB0aGUgY29tbW9uIHRocmVlIGxpbmUgZW5kaW5ncywKLSAgICAgIGNhcnJpYWdlIHJldHVybiwgbmV3bGluZSwgb3IgY2FycmlhZ2UgcmV0dXJuIGFuZCBuZXdsaW5lICh0aGV5IGNhbiBldmVuIGJlCi0gICAgICBtaXhlZCkuCi0KLSAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKLQotICAgICAgQ2xvc2luZyBhIDpjbGFzczpgRmVlZFBhcnNlcmAgY29tcGxldGVzIHRoZSBwYXJzaW5nIG9mIGFsbCBwcmV2aW91c2x5IGZlZAotICAgICAgZGF0YSwgYW5kIHJldHVybnMgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBJdCBpcyB1bmRlZmluZWQgd2hhdCBoYXBwZW5zCi0gICAgICBpZiB5b3UgZmVlZCBtb3JlIGRhdGEgdG8gYSBjbG9zZWQgOmNsYXNzOmBGZWVkUGFyc2VyYC4KLQotCi0uLiBjbGFzczo6IEJ5dGVzRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCi0KLSAgIFdvcmtzIGV4YWN0bHkgbGlrZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGV4Y2VwdCB0aGF0IHRoZSBpbnB1dCB0byB0aGUKLSAgIDptZXRoOmB+RmVlZFBhcnNlci5mZWVkYCBtZXRob2QgbXVzdCBiZSBieXRlcyBhbmQgbm90IHN0cmluZy4KKyAgIE5vdGU6ICoqVGhlIHBvbGljeSBrZXl3b3JkIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkKio7IFRoZSBkZWZhdWx0IHdpbGwKKyAgIGNoYW5nZSB0byA6ZGF0YTpgZW1haWwucG9saWN5LmRlZmF1bHRgIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBfZmFjdG9yeSBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLVBhcnNlciBjbGFzcyBBUEkKLV5eXl5eXl5eXl5eXl5eXl4KIAotVGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCisgICAuLiBtZXRob2Q6OiBmZWVkKGRhdGEpCisKKyAgICAgIEZlZWQgdGhlIHBhcnNlciBzb21lIG1vcmUgZGF0YS4gICpkYXRhKiBzaG91bGQgYmUgYSA6dGVybTpgYnl0ZXMtbGlrZQorICAgICAgb2JqZWN0YCBjb250YWluaW5nIG9uZSBvciBtb3JlIGxpbmVzLiAgVGhlIGxpbmVzIGNhbiBiZSBwYXJ0aWFsIGFuZCB0aGUKKyAgICAgIHBhcnNlciB3aWxsIHN0aXRjaCBzdWNoIHBhcnRpYWwgbGluZXMgdG9nZXRoZXIgcHJvcGVybHkuICBUaGUgbGluZXMgY2FuCisgICAgICBoYXZlIGFueSBvZiB0aGUgdGhyZWUgY29tbW9uIGxpbmUgZW5kaW5nczogY2FycmlhZ2UgcmV0dXJuLCBuZXdsaW5lLCBvcgorICAgICAgY2FycmlhZ2UgcmV0dXJuIGFuZCBuZXdsaW5lICh0aGV5IGNhbiBldmVuIGJlIG1peGVkKS4KKworCisgICAuLiBtZXRob2Q6OiBjbG9zZSgpCisKKyAgICAgIENvbXBsZXRlIHRoZSBwYXJzaW5nIG9mIGFsbCBwcmV2aW91c2x5IGZlZCBkYXRhIGFuZCByZXR1cm4gdGhlIHJvb3QKKyAgICAgIG1lc3NhZ2Ugb2JqZWN0LiAgSXQgaXMgdW5kZWZpbmVkIHdoYXQgaGFwcGVucyBpZiA6bWV0aDpgfmZlZWRgIGlzIGNhbGxlZAorICAgICAgYWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLgorCisKKy4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBXb3JrcyBsaWtlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBleGNlcHQgdGhhdCB0aGUgaW5wdXQgdG8gdGhlCisgICA6bWV0aDpgfkJ5dGVzRmVlZFBhcnNlci5mZWVkYCBtZXRob2QgbXVzdCBiZSBhIHN0cmluZy4gIFRoaXMgaXMgb2YgbGltaXRlZAorICAgdXRpbGl0eSwgc2luY2UgdGhlIG9ubHkgd2F5IGZvciBzdWNoIGEgbWVzc2FnZSB0byBiZSB2YWxpZCBpcyBmb3IgaXQgdG8KKyAgIGNvbnRhaW4gb25seSBBU0NJSSB0ZXh0IG9yLCBpZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kudXRmOGAgaXMKKyAgIGBgVHJ1ZWBgLCBubyBiaW5hcnkgYXR0YWNobWVudHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKK1BhcnNlciBBUEkKK15eXl5eXl5eXl4KKworVGhlIDpjbGFzczpgQnl0ZXNQYXJzZXJgIGNsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwKIHByb3ZpZGVzIGFuIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhcnNlIGEgbWVzc2FnZSB3aGVuIHRoZSBjb21wbGV0ZSBjb250ZW50cwotb2YgdGhlIG1lc3NhZ2UgYXJlIGF2YWlsYWJsZSBpbiBhIHN0cmluZyBvciBmaWxlLiAgVGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAKLW1vZHVsZSBhbHNvIHByb3ZpZGVzIGhlYWRlci1vbmx5IHBhcnNlcnMsIGNhbGxlZCA6Y2xhc3M6YEhlYWRlclBhcnNlcmAgYW5kCi06Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCwgd2hpY2ggY2FuIGJlIHVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUKLWhlYWRlcnMgb2YgdGhlIG1lc3NhZ2UuICA6Y2xhc3M6YEhlYWRlclBhcnNlcmAgYW5kIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgCitvZiB0aGUgbWVzc2FnZSBhcmUgYXZhaWxhYmxlIGluIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvciBmaWxlLiAgVGhlCis6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIDpjbGFzczpgUGFyc2VyYCBmb3IgcGFyc2luZyBzdHJpbmdzLAorYW5kIGhlYWRlci1vbmx5IHBhcnNlcnMsIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgIGFuZAorOmNsYXNzOmBIZWFkZXJQYXJzZXJgLCB3aGljaCBjYW4gYmUgdXNlZCBpZiB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZQoraGVhZGVycyBvZiB0aGUgbWVzc2FnZS4gIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgIGFuZCA6Y2xhc3M6YEhlYWRlclBhcnNlcmAKIGNhbiBiZSBtdWNoIGZhc3RlciBpbiB0aGVzZSBzaXR1YXRpb25zLCBzaW5jZSB0aGV5IGRvIG5vdCBhdHRlbXB0IHRvIHBhcnNlIHRoZQotbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5IGFzIGEgc3RyaW5nLiAgVGhleQotaGF2ZSB0aGUgc2FtZSBBUEkgYXMgdGhlIDpjbGFzczpgUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc1BhcnNlcmAgY2xhc3Nlcy4KLQotLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0gICBUaGUgQnl0ZXNIZWFkZXJQYXJzZXIgY2xhc3MuCittZXNzYWdlIGJvZHksIGluc3RlYWQgc2V0dGluZyB0aGUgcGF5bG9hZCB0byB0aGUgcmF3IGJvZHkuCiAKIAotLi4gY2xhc3M6OiBQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudAotICAgKl9jbGFzcyouICBUaGlzIG11c3QgYmUgYSBjYWxsYWJsZSBmYWN0b3J5IChzdWNoIGFzIGEgZnVuY3Rpb24gb3IgYSBjbGFzcyksIGFuZAotICAgaXQgaXMgdXNlZCB3aGVuZXZlciBhIHN1Yi1tZXNzYWdlIG9iamVjdCBuZWVkcyB0byBiZSBjcmVhdGVkLiAgSXQgZGVmYXVsdHMgdG8KLSAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgKHNlZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCkuICBUaGUgZmFjdG9yeSB3aWxsCi0gICBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCisgICBDcmVhdGUgYSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBpbnN0YW5jZS4gIFRoZSAqX2NsYXNzKiBhbmQgKnBvbGljeSoKKyAgIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYW5kIHNlbWF0bmljcyBhcyB0aGUgKl9mYWN0b3J5KgorICAgYW5kICpwb2xpY3kqIGFyZ3VtZW50cyBvZiA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAuCiAKLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgorICAgTm90ZTogKipUaGUgcG9saWN5IGtleXdvcmQgc2hvdWxkIGFsd2F5cyBiZSBzcGVjaWZpZWQqKjsgVGhlIGRlZmF1bHQgd2lsbAorICAgY2hhbmdlIHRvIDpkYXRhOmBlbWFpbC5wb2xpY3kuZGVmYXVsdGAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudCB0aGF0IHdhcyBkZXByZWNhdGVkIGluIDIuNC4gIEFkZGVkIHRoZQogICAgICAgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IF9jbGFzcyBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLSAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBQYXJzZXJgIG1ldGhvZHMgYXJlOgotCi0KLSAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJzb25seT1GYWxzZSkKLQotICAgICAgUmVhZCBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgZmlsZS1saWtlIG9iamVjdCAqZnAqLCBwYXJzZSB0aGUgcmVzdWx0aW5nCi0gICAgICB0ZXh0LCBhbmQgcmV0dXJuIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgKmZwKiBtdXN0IHN1cHBvcnQgYm90aCB0aGUKLSAgICAgIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAgYW5kIHRoZSA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGAKLSAgICAgIG1ldGhvZHMgb24gZmlsZS1saWtlIG9iamVjdHMuCi0KLSAgICAgIFRoZSB0ZXh0IGNvbnRhaW5lZCBpbiAqZnAqIG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgYmxvY2sgb2YgOnJmYzpgMjgyMmAKLSAgICAgIHN0eWxlIGhlYWRlcnMgYW5kIGhlYWRlciBjb250aW51YXRpb24gbGluZXMsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYW4KLSAgICAgIGVudmVsb3BlIGhlYWRlci4gIFRoZSBoZWFkZXIgYmxvY2sgaXMgdGVybWluYXRlZCBlaXRoZXIgYnkgdGhlIGVuZCBvZiB0aGUKLSAgICAgIGRhdGEgb3IgYnkgYSBibGFuayBsaW5lLiAgRm9sbG93aW5nIHRoZSBoZWFkZXIgYmxvY2sgaXMgdGhlIGJvZHkgb2YgdGhlCi0gICAgICBtZXNzYWdlICh3aGljaCBtYXkgY29udGFpbiBNSU1FLWVuY29kZWQgc3VicGFydHMpLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGEgZmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgdG8gc3RvcCBwYXJzaW5nIGFmdGVyCi0gICAgICByZWFkaW5nIHRoZSBoZWFkZXJzIG9yIG5vdC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYCwgbWVhbmluZyBpdCBwYXJzZXMKLSAgICAgIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUuCi0KLSAgIC4uIG1ldGhvZDo6IHBhcnNlc3RyKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQotCi0gICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZCwgZXhjZXB0IGl0IHRha2VzIGEgc3RyaW5nIG9iamVjdAotICAgICAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgc3RyaW5nIGlzIGV4YWN0bHkKLSAgICAgIGVxdWl2YWxlbnQgdG8gd3JhcHBpbmcgKnRleHQqIGluIGEgOmNsYXNzOmB+aW8uU3RyaW5nSU9gIGluc3RhbmNlIGZpcnN0IGFuZAotICAgICAgY2FsbGluZyA6bWV0aDpgcGFyc2VgLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgotCi0KLS4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKLQotICAgVGhpcyBjbGFzcyBpcyBleGFjdGx5IHBhcmFsbGVsIHRvIDpjbGFzczpgUGFyc2VyYCwgYnV0IGhhbmRsZXMgYnl0ZXMgaW5wdXQuCi0gICBUaGUgKl9jbGFzcyogYW5kICpzdHJpY3QqIGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvcgotICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4KLQotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgotICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAotICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCiAgICAuLiBtZXRob2Q6OiBwYXJzZShmcCwgaGVhZGVyc29ubHk9RmFsc2UpCiAKICAgICAgIFJlYWQgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGJpbmFyeSBmaWxlLWxpa2Ugb2JqZWN0ICpmcCosIHBhcnNlIHRoZQogICAgICAgcmVzdWx0aW5nIGJ5dGVzLCBhbmQgcmV0dXJuIHRoZSBtZXNzYWdlIG9iamVjdC4gICpmcCogbXVzdCBzdXBwb3J0CiAgICAgICBib3RoIHRoZSA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAgYW5kIHRoZSA6bWV0aDpgfmlvLklPQmFzZS5yZWFkYAotICAgICAgbWV0aG9kcyBvbiBmaWxlLWxpa2Ugb2JqZWN0cy4KKyAgICAgIG1ldGhvZHMuCiAKLSAgICAgIFRoZSBieXRlcyBjb250YWluZWQgaW4gKmZwKiBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGJsb2NrIG9mIDpyZmM6YDI4MjJgCisgICAgICBUaGUgYnl0ZXMgY29udGFpbmVkIGluICpmcCogbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiA6cmZjOmA1MzIyYAorICAgICAgKG9yLCBpZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kudXRmOGAgaXMgYGBUcnVlYGAsIDpyZmM6YDY1MzJgKQogICAgICAgc3R5bGUgaGVhZGVycyBhbmQgaGVhZGVyIGNvbnRpbnVhdGlvbiBsaW5lcywgb3B0aW9uYWxseSBwcmVjZWRlZCBieSBhbgogICAgICAgZW52ZWxvcGUgaGVhZGVyLiAgVGhlIGhlYWRlciBibG9jayBpcyB0ZXJtaW5hdGVkIGVpdGhlciBieSB0aGUgZW5kIG9mIHRoZQogICAgICAgZGF0YSBvciBieSBhIGJsYW5rIGxpbmUuICBGb2xsb3dpbmcgdGhlIGhlYWRlciBibG9jayBpcyB0aGUgYm9keSBvZiB0aGUKQEAgLTIwMiw3MyArMTcwLDEyMSBAQAogICAgICAgcmVhZGluZyB0aGUgaGVhZGVycyBvciBub3QuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAsIG1lYW5pbmcgaXQgcGFyc2VzCiAgICAgICB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgogCi0gICAuLiBtZXRob2Q6OiBwYXJzZWJ5dGVzKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAuLiBtZXRob2Q6OiBwYXJzZWJ5dGVzKGJ5dGVzLCBoZWFkZXJzb25seT1GYWxzZSkKIAogICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QsIGV4Y2VwdCBpdCB0YWtlcyBhIDp0ZXJtOmBieXRlcy1saWtlCi0gICAgICBvYmplY3RgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50Ci0gICAgICB0byB3cmFwcGluZyAqdGV4dCogaW4gYSA6Y2xhc3M6YH5pby5CeXRlc0lPYCBpbnN0YW5jZSBmaXJzdCBhbmQgY2FsbGluZwotICAgICAgOm1ldGg6YHBhcnNlYC4KKyAgICAgIG9iamVjdGAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEKKyAgICAgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgZXF1aXZhbGVudCB0byB3cmFwcGluZyAqYnl0ZXMqIGluIGEKKyAgICAgIDpjbGFzczpgfmlvLkJ5dGVzSU9gIGluc3RhbmNlIGZpcnN0IGFuZCBjYWxsaW5nIDptZXRoOmBwYXJzZWAuCiAKICAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIGNsYXNzOjogQnl0ZXNIZWFkZXJQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIEV4YWN0bHkgbGlrZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCwgZXhjZXB0IHRoYXQgKmhlYWRlcnNvbmx5KgorICAgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGNsYXNzOjogUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBUaGlzIGNsYXNzIGlzIHBhcmFsbGVsIHRvIDpjbGFzczpgQnl0ZXNQYXJzZXJgLCBidXQgaGFuZGxlcyBzdHJpbmcgaW5wdXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgX2NsYXNzIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KKworCisgICAuLiBtZXRob2Q6OiBwYXJzZShmcCwgaGVhZGVyc29ubHk9RmFsc2UpCisKKyAgICAgIFJlYWQgYWxsIHRoZSBkYXRhIGZyb20gdGhlIHRleHQtbW9kZSBmaWxlLWxpa2Ugb2JqZWN0ICpmcCosIHBhcnNlIHRoZQorICAgICAgcmVzdWx0aW5nIHRleHQsIGFuZCByZXR1cm4gdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICAqZnAqIG11c3Qgc3VwcG9ydAorICAgICAgYm90aCB0aGUgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRsaW5lYCBhbmQgdGhlCisgICAgICA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGAgbWV0aG9kcyBvbiBmaWxlLWxpa2Ugb2JqZWN0cy4KKworICAgICAgT3RoZXIgdGhhbiB0aGUgdGV4dCBtb2RlIHJlcXVpcmVtZW50LCB0aGlzIG1ldGhvZCBvcGVyYXRlcyBsaWtlCisgICAgICA6bWV0aDpgQnl0ZXNQYXJzZXIucGFyc2VgLgorCisKKyAgIC4uIG1ldGhvZDo6IHBhcnNlc3RyKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZCwgZXhjZXB0IGl0IHRha2VzIGEgc3RyaW5nIG9iamVjdAorICAgICAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgc3RyaW5nIGlzCisgICAgICBlcXVpdmFsZW50IHRvIHdyYXBwaW5nICp0ZXh0KiBpbiBhIDpjbGFzczpgfmlvLlN0cmluZ0lPYCBpbnN0YW5jZSBmaXJzdAorICAgICAgYW5kIGNhbGxpbmcgOm1ldGg6YHBhcnNlYC4KKworICAgICAgT3B0aW9uYWwgKmhlYWRlcnNvbmx5KiBpcyBhcyB3aXRoIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZC4KKworCisuLiBjbGFzczo6IEhlYWRlclBhcnNlcihfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgRXhhY3RseSBsaWtlIDpjbGFzczpgUGFyc2VyYCwgZXhjZXB0IHRoYXQgKmhlYWRlcnNvbmx5KgorICAgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisKKwogU2luY2UgY3JlYXRpbmcgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIHN0cmluZyBvciBhIGZpbGUgb2JqZWN0IGlzIHN1Y2gKIGEgY29tbW9uIHRhc2ssIGZvdXIgZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlLiAgVGhleSBhcmUgYXZhaWxhYmxlCiBpbiB0aGUgdG9wLWxldmVsIDptb2Q6YGVtYWlsYCBwYWNrYWdlIG5hbWVzcGFjZS4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX3N0cmluZyhzLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0bworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4gIFRoaXMgaXMKKyAgIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlYnl0ZXMocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZAorICAgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgY2xhc3MKKyAgIGNvbnN0cnVjdG9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9Tm9uZSwgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKKyAgIG9iamVjdGAuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlKGZwKWBgLiAgKl9jbGFzcyogYW5kCisgICAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyYCBjbGFzcworICAgY29uc3RydWN0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIHN0cmluZy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bwogICAgYGBQYXJzZXIoKS5wYXJzZXN0cihzKWBgLiAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcwogICAgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkKLSAgIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlYnl0ZXMocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZAotICAgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzCi0gICBjb25zdHJ1Y3Rvci4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLgotICAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqCi0gICBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzCi0gICBjb25zdHJ1Y3Rvci4KKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYFBhcnNlcigpLnBhcnNlKGZwKWBgLiAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZQorICAgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgX2NsYXNzIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKLSAgIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2UoZnApYGAuCi0gICAqX2NsYXNzKiBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHlvdSBtaWdodCB1c2UgdGhpcyBhdCBhbiBpbnRlcmFjdGl2ZSBQeXRob24gcHJvbXB0OjoKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB5b3UgbWlnaHQgdXNlIDpmdW5jOmBtZXNzYWdlX2Zyb21fYnl0ZXNgIGF0IGFuCitpbnRlcmFjdGl2ZSBQeXRob24gcHJvbXB0OjoKIAogICAgPj4+IGltcG9ydCBlbWFpbAotICAgPj4+IG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcobXlTdHJpbmcpICAjIGRvY3Rlc3Q6ICtTS0lQCisgICA+Pj4gbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKG15Qnl0ZXMpICAjIGRvY3Rlc3Q6ICtTS0lQCiAKIAogQWRkaXRpb25hbCBub3RlcwpAQCAtMjc4LDM1ICsyOTQsMjcgQEAKIAogKiBNb3N0IG5vbi1cIDptaW1ldHlwZTpgbXVsdGlwYXJ0YCB0eXBlIG1lc3NhZ2VzIGFyZSBwYXJzZWQgYXMgYSBzaW5nbGUgbWVzc2FnZQogICBvYmplY3Qgd2l0aCBhIHN0cmluZyBwYXlsb2FkLiAgVGhlc2Ugb2JqZWN0cyB3aWxsIHJldHVybiBgYEZhbHNlYGAgZm9yCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuICBUaGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgbWV0aG9kIHdpbGwgcmV0dXJuIGEgc3RyaW5nIG9iamVjdC4KKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgLCBhbmQKKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYCB3aWxsIHlpZWxkIGFuIGVtcHR5IGxpc3QuCiAKICogQWxsIDptaW1ldHlwZTpgbXVsdGlwYXJ0YCB0eXBlIG1lc3NhZ2VzIHdpbGwgYmUgcGFyc2VkIGFzIGEgY29udGFpbmVyIG1lc3NhZ2UKICAgb2JqZWN0IHdpdGggYSBsaXN0IG9mIHN1Yi1tZXNzYWdlIG9iamVjdHMgZm9yIHRoZWlyIHBheWxvYWQuICBUaGUgb3V0ZXIKICAgY29udGFpbmVyIG1lc3NhZ2Ugd2lsbCByZXR1cm4gYGBUcnVlYGAgZm9yCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgYW5kIHRoZWlyCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIGxpc3Qgb2YKLSAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBzdWJwYXJ0cy4KKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgLCBhbmQKKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYCB3aWxsIHlpZWxkIGEgbGlzdCBvZiBzdWJwYXJ0cy4KIAotKiBNb3N0IG1lc3NhZ2VzIHdpdGggYSBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL1wqYCAoZS5nLgotICA6bWltZXR5cGU6YG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApIHdpbGwgYWxzbyBiZQotICBwYXJzZWQgYXMgY29udGFpbmVyIG9iamVjdCBjb250YWluaW5nIGEgbGlzdCBwYXlsb2FkIG9mIGxlbmd0aCAxLiAgVGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2Qgd2lsbCByZXR1cm4gYGBUcnVlYGAuCi0gIFRoZSBzaW5nbGUgZWxlbWVudCBpbiB0aGUgbGlzdCBwYXlsb2FkIHdpbGwgYmUgYSBzdWItbWVzc2FnZSBvYmplY3QuCisqIE1vc3QgbWVzc2FnZXMgd2l0aCBhIGNvbnRlbnQgdHlwZSBvZiA6bWltZXR5cGU6YG1lc3NhZ2UvXCpgIChzdWNoIGFzCisgIDptaW1ldHlwZTpgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXNgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCkgd2lsbCBhbHNvCisgIGJlIHBhcnNlZCBhcyBjb250YWluZXIgb2JqZWN0IGNvbnRhaW5pbmcgYSBsaXN0IHBheWxvYWQgb2YgbGVuZ3RoIDEuICBUaGVpcgorICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLgorICBUaGUgc2luZ2xlIGVsZW1lbnQgeWllbGRlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgCisgIHdpbGwgYmUgYSBzdWItbWVzc2FnZSBvYmplY3QuCiAKLSogU29tZSBub24tc3RhbmRhcmRzIGNvbXBsaWFudCBtZXNzYWdlcyBtYXkgbm90IGJlIGludGVybmFsbHkgY29uc2lzdGVudCBhYm91dAorKiBTb21lIG5vbi1zdGFuZGFyZHMtY29tcGxpYW50IG1lc3NhZ2VzIG1heSBub3QgYmUgaW50ZXJuYWxseSBjb25zaXN0ZW50IGFib3V0CiAgIHRoZWlyIDptaW1ldHlwZTpgbXVsdGlwYXJ0YFwgLWVkbmVzcy4gIFN1Y2ggbWVzc2FnZXMgbWF5IGhhdmUgYQogICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgb2YgdHlwZSA6bWltZXR5cGU6YG11bHRpcGFydGAsIGJ1dCB0aGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCBtYXkgcmV0dXJuIGBgRmFsc2VgYC4KKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCBtYXkgcmV0dXJuIGBgRmFsc2VgYC4KICAgSWYgc3VjaCBtZXNzYWdlcyB3ZXJlIHBhcnNlZCB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAsCiAgIHRoZXkgd2lsbCBoYXZlIGFuIGluc3RhbmNlIG9mIHRoZQogICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0YCBjbGFzcyBpbiB0aGVpcgogICAqZGVmZWN0cyogYXR0cmlidXRlIGxpc3QuICBTZWUgOm1vZDpgZW1haWwuZXJyb3JzYCBmb3IgZGV0YWlscy4KLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsjXSBBcyBvZiBlbWFpbCBwYWNrYWdlIHZlcnNpb24gMy4wLCBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjQsIHRoZSBjbGFzc2ljCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCB3YXMgcmUtaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAsIHNvIHRoZSBzZW1hbnRpY3MgYW5kIHJlc3VsdHMgYXJlCi0gICBpZGVudGljYWwgYmV0d2VlbiB0aGUgdHdvIHBhcnNlcnMuCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CmluZGV4IDJhNjA0N2QuLjhhNDE4NzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdApAQCAtMTgsOSArMTgsMTIgQEAKIGVtYWlsIG1lc3NhZ2VzIChhIGJsb2NrIG9mIGhlYWRlciBmaWVsZHMgZWFjaCBjb25zaXN0aW5nIG9mIGEgbmFtZSBmb2xsb3dlZCBieQogYSBjb2xvbiBmb2xsb3dlZCBieSBhIHZhbHVlLCB0aGUgd2hvbGUgYmxvY2sgZm9sbG93ZWQgYnkgYSBibGFuayBsaW5lIGFuZCBhbgogYXJiaXRyYXJ5ICdib2R5JyksIGlzIGEgZm9ybWF0IHRoYXQgaGFzIGZvdW5kIHV0aWxpdHkgb3V0c2lkZSBvZiB0aGUgcmVhbG0gb2YKLWVtYWlsLiAgU29tZSBvZiB0aGVzZSB1c2VzIGNvbmZvcm0gZmFpcmx5IGNsb3NlbHkgdG8gdGhlIG1haW4gUkZDcywgc29tZSBkbwotbm90LiAgQW5kIGV2ZW4gd2hlbiB3b3JraW5nIHdpdGggZW1haWwsIHRoZXJlIGFyZSB0aW1lcyB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0bwotYnJlYWsgc3RyaWN0IGNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcy4KK2VtYWlsLiAgU29tZSBvZiB0aGVzZSB1c2VzIGNvbmZvcm0gZmFpcmx5IGNsb3NlbHkgdG8gdGhlIG1haW4gZW1haWwgUkZDcywgc29tZQorZG8gbm90LiAgRXZlbiB3aGVuIHdvcmtpbmcgd2l0aCBlbWFpbCwgdGhlcmUgYXJlIHRpbWVzIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvCiticmVhayBzdHJpY3QgY29tcGxpYW5jZSB3aXRoIHRoZSBSRkNzLCBzdWNoIGFzIGdlbmVyYXRpbmcgZW1haWxzIHRoYXQKK2ludGVyb3BlcmF0ZSB3aXRoIGVtYWlsIHNlcnZlcnMgdGhhdCBkbyBub3QgdGhlbXNlbHZlcyBmb2xsb3cgdGhlIHN0YW5kYXJkcywgb3IKK3RoYXQgaW1wbGVtZW50IGV4dGVuc2lvbnMgeW91IHdhbnQgdG8gdXNlIGluIHdheXMgdGhhdCB2aW9sYXRlIHRoZQorc3RhbmRhcmRzLgogCiBQb2xpY3kgb2JqZWN0cyBnaXZlIHRoZSBlbWFpbCBwYWNrYWdlIHRoZSBmbGV4aWJpbGl0eSB0byBoYW5kbGUgYWxsIHRoZXNlCiBkaXNwYXJhdGUgdXNlIGNhc2VzLgpAQCAtMzEsMjcgKzM0LDQwIEBACiBlbWFpbCBwYWNrYWdlIHRvIGFsdGVyIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiAgVGhlIHNldHRhYmxlIHZhbHVlcyBhbmQgdGhlaXIKIGRlZmF1bHRzIGFyZSBkZXNjcmliZWQgYmVsb3cuCiAKLVRoZXJlIGlzIGEgZGVmYXVsdCBwb2xpY3kgdXNlZCBieSBhbGwgY2xhc3NlcyBpbiB0aGUgZW1haWwgcGFja2FnZS4gIFRoaXMKLXBvbGljeSBpcyBuYW1lZCA6Y2xhc3M6YENvbXBhdDMyYCwgd2l0aCBhIGNvcnJlc3BvbmRpbmcgcHJlLWRlZmluZWQgaW5zdGFuY2UKLW5hbWVkIDpjb25zdDpgY29tcGF0MzJgLiAgSXQgcHJvdmlkZXMgZm9yIGNvbXBsZXRlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGluCi1zb21lIGNhc2VzLCBpbmNsdWRpbmcgYnVnIGNvbXBhdGliaWxpdHkpIHdpdGggdGhlIHByZS1QeXRob24zLjMgdmVyc2lvbiBvZiB0aGUKLWVtYWlsIHBhY2thZ2UuCitUaGVyZSBpcyBhIGRlZmF1bHQgcG9saWN5IHVzZWQgYnkgYWxsIGNsYXNzZXMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgYWxsIG9mCit0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAgY2xhc3NlcyBhbmQgdGhlIHJlbGF0ZWQgY29udmVuaWVuY2UgZnVuY3Rpb25zLCBhbmQgZm9yCit0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcywgdGhpcyBpcyB0aGUgOmNsYXNzOmBDb21wYXQzMmAKK3BvbGljeSwgdmlhIGl0cyBjb3JyZXNwb25kaW5nIHByZS1kZWZpbmVkIGluc3RhbmNlIDpjb25zdDpgY29tcGF0MzJgLiAgVGhpcworcG9saWN5IHByb3ZpZGVzIGZvciBjb21wbGV0ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IChpbiBzb21lIGNhc2VzLCBpbmNsdWRpbmcKK2J1ZyBjb21wYXRpYmlsaXR5KSB3aXRoIHRoZSBwcmUtUHl0aG9uMy4zIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuCisKK1RoaXMgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICpwb2xpY3kqIGtleXdvcmQgdG8KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpcyB0aGUgOmNsYXNzOmBFbWFpbFBvbGljeWAgcG9saWN5LCB2aWEKK2l0cyBwcmUtZGVmaW5lZCBpbnN0YW5jZSA6ZGF0YTpgfmRlZmF1bHRgLgorCitXaGVuIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKK29iamVjdCBpcyBjcmVhdGVkLCBpdCBhY3F1aXJlcyBhIHBvbGljeS4gIElmIHRoZSBtZXNzYWdlIGlzIGNyZWF0ZWQgYnkgYQorOm1vZDpgfmVtYWlsLnBhcnNlcmAsIGEgcG9saWN5IHBhc3NlZCB0byB0aGUgcGFyc2VyIHdpbGwgYmUgdGhlIHBvbGljeSB1c2VkIGJ5Cit0aGUgbWVzc2FnZSBpdCBjcmVhdGVzLiAgSWYgdGhlIG1lc3NhZ2UgaXMgY3JlYXRlZCBieSB0aGUgcHJvZ3JhbSwgdGhlbiB0aGUKK3BvbGljeSBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gaXQgaXMgY3JlYXRlZC4gIFdoZW4gYSBtZXNzYWdlIGlzIHBhc3NlZCB0byBhCis6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCwgdGhlIGdlbmVyYXRvciB1c2VzIHRoZSBwb2xpY3kgZnJvbSB0aGUgbWVzc2FnZSBieQorZGVmYXVsdCwgYnV0IHlvdSBjYW4gYWxzbyBwYXNzIGEgc3BlY2lmaWMgcG9saWN5IHRvIHRoZSBnZW5lcmF0b3IgdGhhdCB3aWxsCitvdmVycmlkZSB0aGUgb25lIHN0b3JlZCBvbiB0aGUgbWVzc2FnZSBvYmplY3QuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKnBvbGljeSoga2V5d29yZCBmb3IgdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgY2xhc3NlcworYW5kIHRoZSBwYXJzZXIgY29udmVuaWVuY2UgZnVuY3Rpb25zICoqd2lsbCBiZSBjaGFuZ2luZyoqIGluIGEgZnV0dXJlIHZlcnNpb24gb2YKK1B5dGhvbi4gIFRoZXJlZm9yZSB5b3Ugc2hvdWxkICoqYWx3YXlzIHNwZWNpZnkgZXhwbGljaXRseSB3aGljaCBwb2xpY3kgeW91IHdhbnQKK3RvIHVzZSoqIHdoZW4gY2FsbGluZyBhbnkgb2YgdGhlIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gdGhlCis6bW9kOmB+ZW1haWwucGFyc2VyYCBtb2R1bGUuCiAKIFRoZSBmaXJzdCBwYXJ0IG9mIHRoaXMgZG9jdW1lbnRhdGlvbiBjb3ZlcnMgdGhlIGZlYXR1cmVzIG9mIDpjbGFzczpgUG9saWN5YCwgYW4KLTp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCAgdGhhdCBkZWZpbmVzIHRoZSBmZWF0dXJlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCis6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgdGhhdCBkZWZpbmVzIHRoZSBmZWF0dXJlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCiBwb2xpY3kgb2JqZWN0cywgaW5jbHVkaW5nIDpjb25zdDpgY29tcGF0MzJgLiAgVGhpcyBpbmNsdWRlcyBjZXJ0YWluIGhvb2sKIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHdoaWNoIGEgY3VzdG9tIHBvbGljeQotY291bGQgb3ZlcnJpZGUgdG8gb2J0YWluIGRpZmZlcmVudCBiZWhhdmlvci4KLQotV2hlbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGFjcXVpcmVzIGEgcG9saWN5LgotQnkgZGVmYXVsdCB0aGlzIHdpbGwgYmUgOmNvbnN0OmBjb21wYXQzMmAsIGJ1dCBhIGRpZmZlcmVudCBwb2xpY3kgY2FuIGJlCi1zcGVjaWZpZWQuICBJZiB0aGUgYGBNZXNzYWdlYGAgaXMgY3JlYXRlZCBieSBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLCBhIHBvbGljeQotcGFzc2VkIHRvIHRoZSBwYXJzZXIgd2lsbCBiZSB0aGUgcG9saWN5IHVzZWQgYnkgdGhlIGBgTWVzc2FnZWBgIGl0IGNyZWF0ZXMuICBJZgotdGhlIGBgTWVzc2FnZWBgIGlzIGNyZWF0ZWQgYnkgdGhlIHByb2dyYW0sIHRoZW4gdGhlIHBvbGljeSBjYW4gYmUgc3BlY2lmaWVkCi13aGVuIGl0IGlzIGNyZWF0ZWQuICBXaGVuIGEgYGBNZXNzYWdlYGAgaXMgcGFzc2VkIHRvIGEgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsCi10aGUgZ2VuZXJhdG9yIHVzZXMgdGhlIHBvbGljeSBmcm9tIHRoZSBgYE1lc3NhZ2VgYCBieSBkZWZhdWx0LCBidXQgeW91IGNhbiBhbHNvCi1wYXNzIGEgc3BlY2lmaWMgcG9saWN5IHRvIHRoZSBnZW5lcmF0b3IgdGhhdCB3aWxsIG92ZXJyaWRlIHRoZSBvbmUgc3RvcmVkIG9uCi10aGUgYGBNZXNzYWdlYGAgb2JqZWN0LgorY291bGQgb3ZlcnJpZGUgdG8gb2J0YWluIGRpZmZlcmVudCBiZWhhdmlvci4gIFRoZSBzZWNvbmQgcGFydCBkZXNjcmliZXMgdGhlCitjb25jcmV0ZSBjbGFzc2VzIDpjbGFzczpgRW1haWxQb2xpY3lgIGFuZCA6Y2xhc3M6YENvbXBhdDMyYCwgd2hpY2ggaW1wbGVtZW50Cit0aGUgaG9va3MgdGhhdCBwcm92aWRlIHRoZSBzdGFuZGFyZCBiZWhhdmlvciBhbmQgdGhlIGJhY2t3YXJkIGNvbXBhdGlibGUKK2JlaGF2aW9yIGFuZCBmZWF0dXJlcywgcmVzcGVjdGl2ZWx5LgogCiA6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2VzIGFyZSBpbW11dGFibGUsIGJ1dCB0aGV5IGNhbiBiZSBjbG9uZWQsIGFjY2VwdGluZyB0aGUKIHNhbWUga2V5d29yZCBhcmd1bWVudHMgYXMgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGFuZCByZXR1cm5pbmcgYSBuZXcKQEAgLTE0Nyw2ICsxNjMsNyBAQAogICAgVGhpcyBjbGFzcyBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcywgYW5kIHRodXMgdmFsdWVzIGZvciB0aGUKICAgIGZvbGxvd2luZyBtYXkgYmUgcGFzc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhbnkgcG9saWN5IGNsYXNzOgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IG1heF9saW5lX2xlbmd0aAogCiAgICAgICBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW55IGxpbmUgaW4gdGhlIHNlcmlhbGl6ZWQgb3V0cHV0LCBub3QgY291bnRpbmcgdGhlCkBAIC0xNTQsMTIgKzE3MSwxNCBAQAogICAgICAgYGAwYGAgb3IgOmNvbnN0OmBOb25lYCBpbmRpY2F0ZXMgdGhhdCBubyBsaW5lIHdyYXBwaW5nIHNob3VsZCBiZQogICAgICAgZG9uZSBhdCBhbGwuCiAKKwogICAgLi4gYXR0cmlidXRlOjogbGluZXNlcAogCiAgICAgICBUaGUgc3RyaW5nIHRvIGJlIHVzZWQgdG8gdGVybWluYXRlIGxpbmVzIGluIHNlcmlhbGl6ZWQgb3V0cHV0LiAgVGhlCiAgICAgICBkZWZhdWx0IGlzIGBgXG5gYCBiZWNhdXNlIHRoYXQncyB0aGUgaW50ZXJuYWwgZW5kLW9mLWxpbmUgZGlzY2lwbGluZSB1c2VkCiAgICAgICBieSBQeXRob24sIHRob3VnaCBgYFxyXG5gYCBpcyByZXF1aXJlZCBieSB0aGUgUkZDcy4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBjdGVfdHlwZQogCiAgICAgICBDb250cm9scyB0aGUgdHlwZSBvZiBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5ncyB0aGF0IG1heSBiZSBvciBhcmUKQEAgLTE3NCw4ICsxOTMsOCBAQAogCiAgICAgICBgYDhiaXRgYCAgZGF0YSBpcyBub3QgY29uc3RyYWluZWQgdG8gYmUgNyBiaXQgY2xlYW4uICBEYXRhIGluIGhlYWRlcnMgaXMKICAgICAgICAgICAgICAgICBzdGlsbCByZXF1aXJlZCB0byBiZSBBU0NJSS1vbmx5IGFuZCBzbyB3aWxsIGJlIGVuY29kZWQgKHNlZQotICAgICAgICAgICAgICAgICdiaW5hcnlfZm9sZCcgYmVsb3cgZm9yIGFuIGV4Y2VwdGlvbiksIGJ1dCBib2R5IHBhcnRzIG1heSB1c2UKLSAgICAgICAgICAgICAgICB0aGUgYGA4Yml0YGAgQ1RFLgorICAgICAgICAgICAgICAgIDptZXRoOmBmb2xkX2JpbmFyeWAgYW5kIDphdHRyOmB+RW1haWxQb2xpY3kudXRmOGAgYmVsb3cgZm9yCisgICAgICAgICAgICAgICAgZXhjZXB0aW9ucyksIGJ1dCBib2R5IHBhcnRzIG1heSB1c2UgdGhlIGBgOGJpdGBgIENURS4KICAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogICAgICAgQSBgYGN0ZV90eXBlYGAgdmFsdWUgb2YgYGA4Yml0YGAgb25seSB3b3JrcyB3aXRoIGBgQnl0ZXNHZW5lcmF0b3JgYCwgbm90CkBAIC0xODMsNiArMjAyLDcgQEAKICAgICAgIGBgR2VuZXJhdG9yYGAgaXMgb3BlcmF0aW5nIHVuZGVyIGEgcG9saWN5IHRoYXQgc3BlY2lmaWVzCiAgICAgICBgYGN0ZV90eXBlPThiaXRgYCwgaXQgd2lsbCBhY3QgYXMgaWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IHJhaXNlX29uX2RlZmVjdAogCiAgICAgICBJZiA6Y29uc3Q6YFRydWVgLCBhbnkgZGVmZWN0cyBlbmNvdW50ZXJlZCB3aWxsIGJlIHJhaXNlZCBhcyBlcnJvcnMuICBJZgpAQCAtMTkwLDcgKzIxMCw2IEBACiAgICAgICA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YCBtZXRob2QuCiAKIAotCiAgICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbVxfCiAKICAgICAgIElmIDpjb25zdDpgVHJ1ZWAsIGxpbmVzIHN0YXJ0aW5nIHdpdGggKiJGcm9tICIqIGluIHRoZSBib2R5IGFyZQpAQCAtMjAxLDE5ICsyMjAsMzEgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogICAgICAgICAgVGhlICptYW5nbGVfZnJvbV8qIHBhcmFtZXRlci4KIAorCisgICAuLiBhdHRyaWJ1dGU6OiBtZXNzYWdlX2ZhY3RvcnkKKworICAgICAgQSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBjb25zdHJ1Y3RpbmcgYSBuZXcgZW1wdHkgbWVzc2FnZSBvYmplY3QuICBVc2VkCisgICAgICBieSB0aGUgcGFyc2VyIHdoZW4gYnVpbGRpbmcgbWVzc2FnZXMuICBEZWZhdWx0cyB0byBgYE5vbmVgYCwgaW4KKyAgICAgIHdoaWNoIGNhc2UgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpcyB1c2VkLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogICAgVGhlIGZvbGxvd2luZyA6Y2xhc3M6YFBvbGljeWAgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBjb2RlIHVzaW5nCiAgICB0aGUgZW1haWwgbGlicmFyeSB0byBjcmVhdGUgcG9saWN5IGluc3RhbmNlcyB3aXRoIGN1c3RvbSBzZXR0aW5nczoKIAorCiAgICAuLiBtZXRob2Q6OiBjbG9uZSgqKmt3KQogCiAgICAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBQb2xpY3lgIGluc3RhbmNlIHdob3NlIGF0dHJpYnV0ZXMgaGF2ZSB0aGUgc2FtZQogICAgICAgdmFsdWVzIGFzIHRoZSBjdXJyZW50IGluc3RhbmNlLCBleGNlcHQgd2hlcmUgdGhvc2UgYXR0cmlidXRlcyBhcmUKICAgICAgIGdpdmVuIG5ldyB2YWx1ZXMgYnkgdGhlIGtleXdvcmQgYXJndW1lbnRzLgogCisKICAgIFRoZSByZW1haW5pbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgZW1haWwgcGFja2FnZSBjb2RlLAogICAgYW5kIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlLgogICAgQSBjdXN0b20gcG9saWN5IG11c3QgaW1wbGVtZW50IGFsbCBvZiB0aGVzZSBtZXRob2RzLgogCisKICAgIC4uIG1ldGhvZDo6IGhhbmRsZV9kZWZlY3Qob2JqLCBkZWZlY3QpCiAKICAgICAgIEhhbmRsZSBhICpkZWZlY3QqIGZvdW5kIG9uICpvYmoqLiAgV2hlbiB0aGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzCkBAIC0yMjQsNiArMjU1LDcgQEAKICAgICAgIGl0IGlzIGBgVHJ1ZWBgLCAqZGVmZWN0KiBpcyByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLiAgSWYgaXQgaXMgYGBGYWxzZWBgCiAgICAgICAodGhlIGRlZmF1bHQpLCAqb2JqKiBhbmQgKmRlZmVjdCogYXJlIHBhc3NlZCB0byA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YC4KIAorCiAgICAuLiBtZXRob2Q6OiByZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCiAKICAgICAgIFJlZ2lzdGVyIGEgKmRlZmVjdCogb24gKm9iaiouICBJbiB0aGUgZW1haWwgcGFja2FnZSwgKmRlZmVjdCogd2lsbCBhbHdheXMKQEAgLTIzNiwxNCArMjY4LDE2IEBACiAgICAgICBjdXN0b20gYGBNZXNzYWdlYGAgb2JqZWN0cykgc2hvdWxkIGFsc28gcHJvdmlkZSBzdWNoIGFuIGF0dHJpYnV0ZSwKICAgICAgIG90aGVyd2lzZSBkZWZlY3RzIGluIHBhcnNlZCBtZXNzYWdlcyB3aWxsIHJhaXNlIHVuZXhwZWN0ZWQgZXJyb3JzLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9tYXhfY291bnQobmFtZSkKIAogICAgICAgUmV0dXJuIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIGhlYWRlcnMgbmFtZWQgKm5hbWUqLgogCi0gICAgICBDYWxsZWQgd2hlbiBhIGhlYWRlciBpcyBhZGRlZCB0byBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAKLSAgICAgIG9iamVjdC4gIElmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBub3QgYGAwYGAgb3IgYGBOb25lYGAsIGFuZCB0aGVyZSBhcmUKLSAgICAgIGFscmVhZHkgYSBudW1iZXIgb2YgaGVhZGVycyB3aXRoIHRoZSBuYW1lICpuYW1lKiBlcXVhbCB0byB0aGUgdmFsdWUKLSAgICAgIHJldHVybmVkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKyAgICAgIENhbGxlZCB3aGVuIGEgaGVhZGVyIGlzIGFkZGVkIHRvIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgICAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbm90CisgICAgICBgYDBgYCBvciBgYE5vbmVgYCwgYW5kIHRoZXJlIGFyZSBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aCB0aGUKKyAgICAgIG5hbWUgKm5hbWUqIGdyZWF0aGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIHJldHVybmVkLCBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKICAgICAgIEJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYGBNZXNzYWdlLl9fc2V0aXRlbV9fYGAgaXMgdG8gYXBwZW5kIHRoZQogICAgICAgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgaGVhZGVycywgaXQgaXMgZWFzeSB0byBjcmVhdGUgZHVwbGljYXRlIGhlYWRlcnMKQEAgLTI1NSw2ICsyODksNyBAQAogCiAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGBgTm9uZWBgIGZvciBhbGwgaGVhZGVyIG5hbWVzLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggYSBsaXN0IG9mIHN0cmluZ3MsIGVhY2ggc3RyaW5nCkBAIC0yNzQsNiArMzA5LDcgQEAKIAogICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgbmFtZSBhbmQgdmFsdWUgcHJvdmlkZWQgYnkKQEAgLTI4OSw2ICszMjUsNyBAQAogCiAgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIHRoZSAqbmFtZSogYW5kICp2YWx1ZSogY3VycmVudGx5CkBAIC0zMDQsNiArMzQxLDcgQEAKIAogICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgogCisKICAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKQEAgLTMxNiw2ICszNTQsNyBAQAogICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlcmUgc2hvdWxkIGJlIG5vCiAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGluIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZC4KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIHNhbWUgYXMgOm1ldGg6YGZvbGRgLCBleGNlcHQgdGhhdCB0aGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIGJlIGEKQEAgLTMyNSw3MyArMzY0LDYgQEAKICAgICAgIGNvbnZlcnRlZCBiYWNrIGludG8gYmluYXJ5IGRhdGEgaW4gdGhlIHJldHVybmVkIGJ5dGVzIG9iamVjdC4KIAogCi0uLiBjbGFzczo6IENvbXBhdDMyKCoqa3cpCi0KLSAgIFRoaXMgY29uY3JldGUgOmNsYXNzOmBQb2xpY3lgIGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHBvbGljeS4gIEl0Ci0gICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLiAgVGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsCi0gICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKLSAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgotCi0gICBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgaGF2ZSB2YWx1ZXMgdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlCi0gICA6Y2xhc3M6YFBvbGljeWAgZGVmYXVsdDoKLQotICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21fCi0KLSAgICAgIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgLgotCi0gICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCi0gICBhYnN0cmFjdCBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKLQotICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKLQotICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCi0gICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKLSAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCi0gICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KLQotICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQotCi0gICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCi0KLSAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKLQotICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGJpbmFyeSBkYXRhLCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3QgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KLSAgICAgIE90aGVyd2lzZSBpdCBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQotCi0gICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKLSAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCi0gICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZQotICAgICAgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KLQotICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCi0KLSAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZwotICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKLSAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBJZiBgYGN0ZV90eXBlYGAgaXMKLSAgICAgIGBgN2JpdGBgLCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAKLSAgICAgIGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcKLSAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbnkgKFJGQyBpbnZhbGlkKSBiaW5hcnkgZGF0YSBpdCBtYXkgY29udGFpbi4KLQotCi1BbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCBpcyBwcm92aWRlZCBhcyBhIG1vZHVsZSBjb25zdGFudDoKLQotLi4gZGF0YTo6IGNvbXBhdDMyCi0KLSAgIEFuIGluc3RhbmNlIG9mIDpjbGFzczpgQ29tcGF0MzJgLCBwcm92aWRpbmcgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKLSAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGluIFB5dGhvbiAzLjIuCi0KLQotLi4gbm90ZTo6Ci0KLSAgIFRoZSBkb2N1bWVudGF0aW9uIGJlbG93IGRlc2NyaWJlcyBuZXcgcG9saWNpZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlCi0gICBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0gICBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgZmVhdHVyZSkKLSAgIG1heSBvY2N1ciBpZiBkZWVtZWQgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KIAogLi4gY2xhc3M6OiBFbWFpbFBvbGljeSgqKmt3KQogCkBAIC00MDQsOSArMzc2LDE1IEBACiAgICBvbiB0aGUgdHlwZSBvZiB0aGUgZmllbGQuICBUaGUgcGFyc2luZyBhbmQgZm9sZGluZyBhbGdvcml0aG0gZnVsbHkgaW1wbGVtZW50CiAgICA6cmZjOmAyMDQ3YCBhbmQgOnJmYzpgNTMyMmAuCiAKKyAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1lc3NhZ2VfZmFjdG9yeWAKKyAgIGF0dHJpYnV0ZSBpcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzZXR0YWJsZSBhdHRyaWJ1dGVzIGxpc3RlZCBhYm92ZSB0aGF0IGFwcGx5IHRvIGFsbAogICAgcG9saWNpZXMsIHRoaXMgcG9saWN5IGFkZHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCisKKwogICAgLi4gYXR0cmlidXRlOjogdXRmOAogCiAgICAgICBJZiBgYEZhbHNlYGAsIGZvbGxvdyA6cmZjOmA1MzIyYCwgc3VwcG9ydGluZyBub24tQVNDSUkgY2hhcmFjdGVycyBpbgpAQCAtNDE1LDEzICszOTMsMTQgQEAKICAgICAgIGZvcm1hdHRlZCBpbiB0aGlzIHdheSBtYXkgYmUgcGFzc2VkIHRvIFNNVFAgc2VydmVycyB0aGF0IHN1cHBvcnQKICAgICAgIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uICg6cmZjOmA2NTMxYCkuCiAKKwogICAgLi4gYXR0cmlidXRlOjogcmVmb2xkX3NvdXJjZQogCiAgICAgICBJZiB0aGUgdmFsdWUgZm9yIGEgaGVhZGVyIGluIHRoZSBgYE1lc3NhZ2VgYCBvYmplY3Qgb3JpZ2luYXRlZCBmcm9tIGEKICAgICAgIDptb2Q6YH5lbWFpbC5wYXJzZXJgIChhcyBvcHBvc2VkIHRvIGJlaW5nIHNldCBieSBhIHByb2dyYW0pLCB0aGlzCiAgICAgICBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGEgZ2VuZXJhdG9yIHNob3VsZCByZWZvbGQgdGhhdCB2YWx1ZQotICAgICAgd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIG1lc3NhZ2UgYmFjayBpbnRvIHN0cmVhbSBmb3JtLiAgVGhlIHBvc3NpYmxlIHZhbHVlcwotICAgICAgYXJlOgorICAgICAgd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIG1lc3NhZ2UgYmFjayBpbnRvIHNlcmlhbGl6ZWQgZm9ybS4gIFRoZSBwb3NzaWJsZQorICAgICAgdmFsdWVzIGFyZToKIAogICAgICAgPT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgYGBub25lYGAgIGFsbCBzb3VyY2UgdmFsdWVzIHVzZSBvcmlnaW5hbCBmb2xkaW5nCkBAIC00MzQsMjMgKzQxMywyNCBAQAogCiAgICAgICBUaGUgZGVmYXVsdCBpcyBgYGxvbmdgYC4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBoZWFkZXJfZmFjdG9yeQogCiAgICAgICBBIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgYGBuYW1lYGAgYW5kIGBgdmFsdWVgYCwgd2hlcmUKICAgICAgIGBgbmFtZWBgIGlzIGEgaGVhZGVyIGZpZWxkIG5hbWUgYW5kIGBgdmFsdWVgYCBpcyBhbiB1bmZvbGRlZCBoZWFkZXIgZmllbGQKICAgICAgIHZhbHVlLCBhbmQgcmV0dXJucyBhIHN0cmluZyBzdWJjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhhdCBoZWFkZXIuICBBCiAgICAgICBkZWZhdWx0IGBgaGVhZGVyX2ZhY3RvcnlgYCAoc2VlIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWApIGlzIHByb3ZpZGVkCi0gICAgICB0aGF0IHVuZGVyc3RhbmRzIHNvbWUgb2YgdGhlIDpSRkM6YDUzMjJgIGhlYWRlciBmaWVsZCB0eXBlcy4gIChDdXJyZW50bHkKLSAgICAgIGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlIHNwZWNpYWwgdHJlYXRtZW50LCB3aGlsZSBhbGwgb3RoZXIKLSAgICAgIGZpZWxkcyBhcmUgdHJlYXRlZCBhcyB1bnN0cnVjdHVyZWQuICBUaGlzIGxpc3Qgd2lsbCBiZSBjb21wbGV0ZWQgYmVmb3JlCi0gICAgICB0aGUgZXh0ZW5zaW9uIGlzIG1hcmtlZCBzdGFibGUuKQorICAgICAgdGhhdCBzdXBwb3J0cyBjdXN0b20gcGFyc2luZyBmb3IgdGhlIHZhcmlvdXMgYWRkcmVzcyBhbmQgZGF0ZSA6UkZDOmA1MzIyYAorICAgICAgaGVhZGVyIGZpZWxkIHR5cGVzLCBhbmQgdGhlIG1ham9yIE1JTUUgaGVhZGVyIGZpZWxkIHN0eXBlcy4gIFN1cHBvcnQgZm9yCisgICAgICBhZGRpdGlvbmFsIGN1c3RvbSBwYXJzaW5nIHdpbGwgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KKwogCiAgICAuLiBhdHRyaWJ1dGU6OiBjb250ZW50X21hbmFnZXIKIAogICAgICAgQW4gb2JqZWN0IHdpdGggYXQgbGVhc3QgdHdvIG1ldGhvZHM6IGdldF9jb250ZW50IGFuZCBzZXRfY29udGVudC4gIFdoZW4KLSAgICAgIHRoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfY29udGVudGAgb3IKLSAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2Qgb2YgYQotICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QgaXMgY2FsbGVkLCBpdCBjYWxscyB0aGUKKyAgICAgIHRoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmdldF9jb250ZW50YCBvcgorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kIG9mIGFuCisgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0IGlzIGNhbGxlZCwgaXQgY2FsbHMgdGhlCiAgICAgICBjb3JyZXNwb25kaW5nIG1ldGhvZCBvZiB0aGlzIG9iamVjdCwgcGFzc2luZyBpdCB0aGUgbWVzc2FnZSBvYmplY3QgYXMgaXRzCiAgICAgICBmaXJzdCBhcmd1bWVudCwgYW5kIGFueSBhcmd1bWVudHMgb3Iga2V5d29yZHMgdGhhdCB3ZXJlIHBhc3NlZCB0byBpdCBhcwogICAgICAgYWRkaXRpb25hbCBhcmd1bWVudHMuICBCeSBkZWZhdWx0IGBgY29udGVudF9tYW5hZ2VyYGAgaXMgc2V0IHRvCkBAIC00NjIsMTYgKzQ0MiwyMiBAQAogICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBhYnN0cmFjdAogICAgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6CiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX21heF9jb3VudChuYW1lKQogCiAgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgIDphdHRyOmB+ZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlci5tYXhfY291bnRgIGF0dHJpYnV0ZSBvZiB0aGUKICAgICAgIHNwZWNpYWxpemVkIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBoZWFkZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQogCi0gICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QgaXMgdGhlIHNhbWUgYXMgdGhhdCBmb3IgdGhlCi0gICAgICA6Y2xhc3M6YENvbXBhdDMyYCBwb2xpY3kuCisKKyAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnYGA6YGAnIGFuZCByZXR1cm5lZAorICAgICAgdW5tb2RpZmllZC4gIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmCisgICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLAorICAgICAgYW5kIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCisKIAogICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQogCkBAIC00ODIsNiArNDY4LDcgQEAKICAgICAgIHRoZSB2YWx1ZS4gIEluIHRoaXMgY2FzZSBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZCBpZiB0aGUgaW5wdXQgdmFsdWUKICAgICAgIGNvbnRhaW5zIENSIG9yIExGIGNoYXJhY3RlcnMuCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQogCiAgICAgICBJZiB0aGUgdmFsdWUgaGFzIGEgYGBuYW1lYGAgYXR0cmlidXRlLCBpdCBpcyByZXR1cm5lZCB0byB1bm1vZGlmaWVkLgpAQCAtNDkwLDYgKzQ3Nyw3IEBACiAgICAgICBoZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkLiAgQW55IHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgZ2V0IHR1cm5lZCBpbnRvCiAgICAgICB0aGUgdW5pY29kZSB1bmtub3duLWNoYXJhY3RlciBnbHlwaC4KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQogCiAgICAgICBIZWFkZXIgZm9sZGluZyBpcyBjb250cm9sbGVkIGJ5IHRoZSA6YXR0cjpgcmVmb2xkX3NvdXJjZWAgcG9saWN5IHNldHRpbmcuCkBAIC01MDgsNiArNDk2LDcgQEAKICAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGBgcmVmb2xkX3NvdXJjZWBgIHNldHRpbmcsIHdoaWNoIGNhdXNlcyB0aGUgYmluYXJ5IGRhdGEKICAgICAgIHRvIGJlIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCBpZiA6YXR0cjpgflBvbGljeS5jdGVfdHlwZWAgaXMgYGA3Yml0YGAsIGV4Y2VwdApAQCAtNTE5LDIzICs1MDgsMjcgQEAKICAgICAgIGBgcmVmb2xkX2hlYWRlcmBgIHNldHRpbmcsIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHdoZXRoZXIgdGhlCiAgICAgICBiaW5hcnkgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgogCisKIFRoZSBmb2xsb3dpbmcgaW5zdGFuY2VzIG9mIDpjbGFzczpgRW1haWxQb2xpY3lgIHByb3ZpZGUgZGVmYXVsdHMgc3VpdGFibGUgZm9yCiBzcGVjaWZpYyBhcHBsaWNhdGlvbiBkb21haW5zLiAgTm90ZSB0aGF0IGluIHRoZSBmdXR1cmUgdGhlIGJlaGF2aW9yIG9mIHRoZXNlCiBpbnN0YW5jZXMgKGluIHBhcnRpY3VsYXIgdGhlIGBgSFRUUGBgIGluc3RhbmNlKSBtYXkgYmUgYWRqdXN0ZWQgdG8gY29uZm9ybSBldmVuCiBtb3JlIGNsb3NlbHkgdG8gdGhlIFJGQ3MgcmVsZXZhbnQgdG8gdGhlaXIgZG9tYWlucy4KIAorCiAuLiBkYXRhOjogZGVmYXVsdAogCiAgICBBbiBpbnN0YW5jZSBvZiBgYEVtYWlsUG9saWN5YGAgd2l0aCBhbGwgZGVmYXVsdHMgdW5jaGFuZ2VkLiAgVGhpcyBwb2xpY3kKICAgIHVzZXMgdGhlIHN0YW5kYXJkIFB5dGhvbiBgYFxuYGAgbGluZSBlbmRpbmdzIHJhdGhlciB0aGFuIHRoZSBSRkMtY29ycmVjdAogICAgYGBcclxuYGAuCiAKKwogLi4gZGF0YTo6IFNNVFAKIAogICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIG1lc3NhZ2VzIGluIGNvbmZvcm1hbmNlIHdpdGggdGhlIGVtYWlsIFJGQ3MuCiAgICBMaWtlIGBgZGVmYXVsdGBgLCBidXQgd2l0aCBgYGxpbmVzZXBgYCBzZXQgdG8gYGBcclxuYGAsIHdoaWNoIGlzIFJGQwogICAgY29tcGxpYW50LgogCisKIC4uIGRhdGE6OiBTTVRQVVRGOAogCiAgICBUaGUgc2FtZSBhcyBgYFNNVFBgYCBleGNlcHQgdGhhdCA6YXR0cjpgfkVtYWlsUG9saWN5LnV0ZjhgIGlzIGBgVHJ1ZWBgLgpAQCAtNTQ0LDExICs1MzcsMTMgQEAKICAgIHNlbmRlciBvciByZWNpcGllbnQgYWRkcmVzc2VzIGhhdmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgKHRoZQogICAgOm1ldGg6YHNtdHBsaWIuU01UUC5zZW5kX21lc3NhZ2VgIG1ldGhvZCBoYW5kbGVzIHRoaXMgYXV0b21hdGljYWxseSkuCiAKKwogLi4gZGF0YTo6IEhUVFAKIAogICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIGhlYWRlcnMgd2l0aCBmb3IgdXNlIGluIEhUVFAgdHJhZmZpYy4gIExpa2UKICAgIGBgU01UUGBgIGV4Y2VwdCB0aGF0IGBgbWF4X2xpbmVfbGVuZ3RoYGAgaXMgc2V0IHRvIGBgTm9uZWBgICh1bmxpbWl0ZWQpLgogCisKIC4uIGRhdGE6OiBzdHJpY3QKIAogICAgQ29udmVuaWVuY2UgaW5zdGFuY2UuICBUaGUgc2FtZSBhcyBgYGRlZmF1bHRgYCBleGNlcHQgdGhhdApAQCAtNTU3LDYgKzU1Miw3IEBACiAKICAgICAgICAgc29tZXBvbGljeSArIHBvbGljeS5zdHJpY3QKIAorCiBXaXRoIGFsbCBvZiB0aGVzZSA6Y2xhc3M6YEVtYWlsUG9saWNpZXMgPC5FbWFpbFBvbGljeT5gLCB0aGUgZWZmZWN0aXZlIEFQSSBvZgogdGhlIGVtYWlsIHBhY2thZ2UgaXMgY2hhbmdlZCBmcm9tIHRoZSBQeXRob24gMy4yIEFQSSBpbiB0aGUgZm9sbG93aW5nIHdheXM6CiAKQEAgLTU3Myw3ICs1NjksNyBAQAogICAgICBhbmQgYWxsb3dlZC4KIAogRnJvbSB0aGUgYXBwbGljYXRpb24gdmlldywgdGhpcyBtZWFucyB0aGF0IGFueSBoZWFkZXIgb2J0YWluZWQgdGhyb3VnaCB0aGUKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXMgYSBoZWFkZXIgb2JqZWN0IHdpdGggZXh0cmEKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpcyBhIGhlYWRlciBvYmplY3Qgd2l0aCBleHRyYQogYXR0cmlidXRlcywgd2hvc2Ugc3RyaW5nIHZhbHVlIGlzIHRoZSBmdWxseSBkZWNvZGVkIHVuaWNvZGUgdmFsdWUgb2YgdGhlCiBoZWFkZXIuICBMaWtld2lzZSwgYSBoZWFkZXIgbWF5IGJlIGFzc2lnbmVkIGEgbmV3IHZhbHVlLCBvciBhIG5ldyBoZWFkZXIKIGNyZWF0ZWQsIHVzaW5nIGEgdW5pY29kZSBzdHJpbmcsIGFuZCB0aGUgcG9saWN5IHdpbGwgdGFrZSBjYXJlIG9mIGNvbnZlcnRpbmcKQEAgLTU4MSwzICs1NzcsNzUgQEAKIAogVGhlIGhlYWRlciBvYmplY3RzIGFuZCB0aGVpciBhdHRyaWJ1dGVzIGFyZSBkZXNjcmliZWQgaW4KIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWAuCisKKworCisuLiBjbGFzczo6IENvbXBhdDMyKCoqa3cpCisKKyAgIFRoaXMgY29uY3JldGUgOmNsYXNzOmBQb2xpY3lgIGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHBvbGljeS4gIEl0CisgICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLiAgVGhlCisgICA6bW9kOmB+ZW1haWwucG9saWN5YCBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsCisgICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKKyAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgorCisgICBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgaGF2ZSB2YWx1ZXMgdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlCisgICA6Y2xhc3M6YFBvbGljeWAgZGVmYXVsdDoKKworCisgICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbV8KKworICAgICAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAuCisKKworICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZQorICAgYWJzdHJhY3QgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6CisKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCisgICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKKyAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCisgICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KKworCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KKworCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBiaW5hcnkgZGF0YSwgaXQgaXMgY29udmVydGVkIGludG8gYQorICAgICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0IHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCisgICAgICBPdGhlcndpc2UgaXQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KKworCisgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKKyAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCisgICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZQorICAgICAgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKworCisgICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKKworICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCisgICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcworICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIElmIGBgY3RlX3R5cGVgYCBpcworICAgICAgYGA3Yml0YGAsIG5vbi1hc2NpaSBiaW5hcnkgZGF0YSBpcyBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYAorICAgICAgY2hhcnNldC4gIE90aGVyd2lzZSB0aGUgb3JpZ2luYWwgc291cmNlIGhlYWRlciBpcyB1c2VkLCB3aXRoIGl0cyBleGlzdGluZworICAgICAgbGluZSBicmVha3MgYW5kIGFueSAoUkZDIGludmFsaWQpIGJpbmFyeSBkYXRhIGl0IG1heSBjb250YWluLgorCisKKy4uIGRhdGE6OiBjb21wYXQzMgorCisgICBBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCwgcHJvdmlkaW5nICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCisgICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gT3JpbmdhbGx5IGFkZGVkIGluIDMuMyBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBmZWF0dXJlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnJzdAppbmRleCBlOGJiMDJiLi5jNDE4N2RkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucnN0CkBAIC0zLDUwICszLDEwNCBAQAogCiAuLiBtb2R1bGU6OiBlbWFpbAogICAgOnN5bm9wc2lzOiBQYWNrYWdlIHN1cHBvcnRpbmcgdGhlIHBhcnNpbmcsIG1hbmlwdWxhdGluZywgYW5kIGdlbmVyYXRpbmcKLSAgICAgICAgICAgICAgZW1haWwgbWVzc2FnZXMsIGluY2x1ZGluZyBNSU1FIGRvY3VtZW50cy4KLQotLi4gbW9kdWxlYXV0aG9yOjogQmFycnkgQS4gV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPgotLi4gc2VjdGlvbmF1dGhvcjo6IEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KLS4uIENvcHlyaWdodCAoQykgMjAwMS0yMDEwIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgIGVtYWlsIG1lc3NhZ2VzLgorLi4gbW9kdWxlYXV0aG9yOjogQmFycnkgQS4gV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPiwKKyAgICAgICAgICAgICAgICAgIFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbWFpbC9fX2luaXRfXy5weWAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIGEgbGlicmFyeSBmb3IgbWFuYWdpbmcgZW1haWwgbWVzc2FnZXMsIGluY2x1ZGluZwotTUlNRSBhbmQgb3RoZXIgOnJmYzpgMjgyMmBcIC1iYXNlZCBtZXNzYWdlIGRvY3VtZW50cy4gIEl0IGlzIHNwZWNpZmljYWxseSAqbm90KgotZGVzaWduZWQgdG8gZG8gYW55IHNlbmRpbmcgb2YgZW1haWwgbWVzc2FnZXMgdG8gU01UUCAoOnJmYzpgMjgyMWApLCBOTlRQLCBvcgotb3RoZXIgc2VydmVyczsgdGhvc2UgYXJlIGZ1bmN0aW9ucyBvZiBtb2R1bGVzIHN1Y2ggYXMgOm1vZDpgc210cGxpYmAgYW5kCi06bW9kOmBubnRwbGliYC4gVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGF0dGVtcHRzIHRvIGJlIGFzIFJGQy1jb21wbGlhbnQgYXMKLXBvc3NpYmxlLCBzdXBwb3J0aW5nIGluIGFkZGl0aW9uIHRvIDpyZmM6YDI4MjJgLCBzdWNoIE1JTUUtcmVsYXRlZCBSRkNzIGFzCi06cmZjOmAyMDQ1YCwgOnJmYzpgMjA0NmAsIDpyZmM6YDIwNDdgLCBhbmQgOnJmYzpgMjIzMWAuCitUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgYSBsaWJyYXJ5IGZvciBtYW5hZ2luZyBlbWFpbCBtZXNzYWdlcy4gIEl0IGlzCitzcGVjaWZpY2FsbHkgKm5vdCogZGVzaWduZWQgdG8gZG8gYW55IHNlbmRpbmcgb2YgZW1haWwgbWVzc2FnZXMgdG8gU01UUAorKDpyZmM6YDI4MjFgKSwgTk5UUCwgb3Igb3RoZXIgc2VydmVyczsgdGhvc2UgYXJlIGZ1bmN0aW9ucyBvZiBtb2R1bGVzIHN1Y2ggYXMKKzptb2Q6YHNtdHBsaWJgIGFuZCA6bW9kOmBubnRwbGliYC4gIFRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBhdHRlbXB0cyB0byBiZSBhcworUkZDLWNvbXBsaWFudCBhcyBwb3NzaWJsZSwgc3VwcG9ydGluZyA6cmZjOmA1MjMzYCBhbmQgOnJmYzpgNjUzMmAsIGFzIHdlbGwgYXMKK3N1Y2ggTUlNRS1yZWxhdGVkIFJGQ3MgYXMgOnJmYzpgMjA0NWAsIDpyZmM6YDIwNDZgLCA6cmZjOmAyMDQ3YCwgOnJmYzpgMjE4M2AsCithbmQgOnJmYzpgMjIzMWAuCiAKLVRoZSBwcmltYXJ5IGRpc3Rpbmd1aXNoaW5nIGZlYXR1cmUgb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIHRoYXQgaXQgc3BsaXRzCi10aGUgcGFyc2luZyBhbmQgZ2VuZXJhdGluZyBvZiBlbWFpbCBtZXNzYWdlcyBmcm9tIHRoZSBpbnRlcm5hbCAqb2JqZWN0IG1vZGVsKgotcmVwcmVzZW50YXRpb24gb2YgZW1haWwuICBBcHBsaWNhdGlvbnMgdXNpbmcgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGRlYWwKLXByaW1hcmlseSB3aXRoIG9iamVjdHM7IHlvdSBjYW4gYWRkIHN1Yi1vYmplY3RzIHRvIG1lc3NhZ2VzLCByZW1vdmUgc3ViLW9iamVjdHMKLWZyb20gbWVzc2FnZXMsIGNvbXBsZXRlbHkgcmUtYXJyYW5nZSB0aGUgY29udGVudHMsIGV0Yy4gIFRoZXJlIGlzIGEgc2VwYXJhdGUKLXBhcnNlciBhbmQgYSBzZXBhcmF0ZSBnZW5lcmF0b3Igd2hpY2ggaGFuZGxlcyB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmbGF0IHRleHQKLXRvIHRoZSBvYmplY3QgbW9kZWwsIGFuZCB0aGVuIGJhY2sgdG8gZmxhdCB0ZXh0IGFnYWluLiAgVGhlcmUgYXJlIGFsc28gaGFuZHkKLXN1YmNsYXNzZXMgZm9yIHNvbWUgY29tbW9uIE1JTUUgb2JqZWN0IHR5cGVzLCBhbmQgYSBmZXcgbWlzY2VsbGFuZW91cyB1dGlsaXRpZXMKLXRoYXQgaGVscCB3aXRoIHN1Y2ggY29tbW9uIHRhc2tzIGFzIGV4dHJhY3RpbmcgYW5kIHBhcnNpbmcgbWVzc2FnZSBmaWVsZCB2YWx1ZXMsCi1jcmVhdGluZyBSRkMtY29tcGxpYW50IGRhdGVzLCBldGMuCitUaGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIGVtYWlsIHBhY2thZ2UgY2FuIGJlIGRpdmlkZWQgaW50byB0aHJlZSBtYWpvcgorY29tcG9uZW50cywgcGx1cyBhIGZvdXJ0aCBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgYmVoYXZpb3Igb2YgdGhlIG90aGVyCitjb21wb25lbnRzLgorCitUaGUgY2VudHJhbCBjb21wb25lbnQgb2YgdGhlIHBhY2thZ2UgaXMgYW4gIm9iamVjdCBtb2RlbCIgdGhhdCByZXByZXNlbnRzIGVtYWlsCittZXNzYWdlcy4gIEFuIGFwcGxpY2F0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBwYWNrYWdlIHByaW1hcmlseSB0aHJvdWdoIHRoZQorb2JqZWN0IG1vZGVsIGludGVyZmFjZSBkZWZpbmVkIGluIHRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgc3ViLW1vZHVsZS4gIFRoZQorYXBwbGljYXRpb24gY2FuIHVzZSB0aGlzIEFQSSB0byBhc2sgcXVlc3Rpb25zIGFib3V0IGFuIGV4aXN0aW5nIGVtYWlsLCB0bworY29uc3RydWN0IGEgbmV3IGVtYWlsLCBvciB0byBhZGQgb3IgcmVtb3ZlIGVtYWlsIHN1YmNvbXBvbmVudHMgdGhhdCB0aGVtc2VsdmVzCit1c2UgdGhlIHNhbWUgb2JqZWN0IG1vZGVsIGludGVyZmFjZS4gIFRoYXQgaXMsIGZvbGxvd2luZyB0aGUgbmF0dXJlIG9mIGVtYWlsCittZXNzYWdlcyBhbmQgdGhlaXIgTUlNRSBzdWJjb21wb25lbnRzLCB0aGUgZW1haWwgb2JqZWN0IG1vZGVsIGlzIGEgdHJlZQorc3RydWN0dXJlIG9mIG9iamVjdHMgdGhhdCBhbGwgcHJvdmlkZSB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCitBUEkuCisKK1RoZSBvdGhlciB0d28gbWFqb3IgY29tcG9uZW50cyBvZiB0aGUgcGFja2FnZSBhcmUgdGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgIGFuZAordGhlIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLiAgVGhlIHBhcnNlciB0YWtlcyB0aGUgc2VyaWFsaXplZCB2ZXJzaW9uIG9mIGFuCitlbWFpbCBtZXNzYWdlIChhIHN0cmVhbSBvZiBieXRlcykgYW5kIGNvbnZlcnRzIGl0IGludG8gYSB0cmVlIG9mCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0cy4gIFRoZSBnZW5lcmF0b3IgdGFrZXMgYW4KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBhbmQgdHVybnMgaXQgYmFjayBpbnRvIGEgc2VyaWFsaXplZCBieXRlCitzdHJlYW0uICAoVGhlIHBhcnNlciBhbmQgZ2VuZXJhdG9yIGFsc28gaGFuZGxlIHN0cmVhbXMgb2YgdGV4dCBjaGFyYWN0ZXJzLCBidXQKK3RoaXMgdXNhZ2UgaXMgZGlzY291cmFnZWQgYXMgaXQgaXMgdG9vIGVhc3kgdG8gZW5kIHVwIHdpdGggbWVzc2FnZXMgdGhhdCBhcmUKK25vdCB2YWxpZCBpbiBvbmUgd2F5IG9yIGFub3RoZXIuKQorCitUaGUgY29udHJvbCBjb21wb25lbnQgaXMgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG1vZHVsZS4gIEV2ZXJ5Cis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAsIGV2ZXJ5IDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLCBhbmQgZXZlcnkKKzptb2Q6YH5lbWFpbC5wYXJzZXJgIGhhcyBhbiBhc3NvY2lhdGVkIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0Citjb250cm9scyBpdHMgYmVoYXZpb3IuICBVc3VhbGx5IGFuIGFwcGxpY2F0aW9uIG9ubHkgbmVlZHMgdG8gc3BlY2lmeSB0aGUgcG9saWN5Cit3aGVuIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpcyBjcmVhdGVkLCBlaXRoZXIgYnkgZGlyZWN0bHkKK2luc3RhbnRpYXRpbmcgYW4gOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgICB0byBjcmVhdGUgYSBuZXcgZW1haWwsCitvciBieSBwYXJzaW5nIGFuIGlucHV0IHN0cmVhbSB1c2luZyBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLiAgQnV0IHRoZSBwb2xpY3kgY2FuCitiZSBjaGFuZ2VkIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCB1c2luZyBhIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLgorVGhpcyBhbGxvd3MsIGZvciBleGFtcGxlLCBhIGdlbmVyaWMgZW1haWwgbWVzc2FnZSB0byBiZSBwYXJzZWQgZnJvbSBkaXNrLCBidXQKK3RvIHNlcmlhbGl6ZSBpdCB1c2luZyBzdGFuZGFyZCBTTVRQIHNldHRpbmdzIHdoZW4gc2VuZGluZyBpdCB0byBhbiBlbWFpbAorc2VydmVyLgorCitUaGUgZW1haWwgcGFja2FnZSBkb2VzIGl0cyBiZXN0IHRvIGhpZGUgdGhlIGRldGFpbHMgb2YgdGhlIHZhcmlvdXMgZ292ZXJuaW5nCitSRkNzIGZyb20gdGhlIGFwcGxpY2F0aW9uLiAgQ29uY2VwdHVhbGx5IHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgYmUgYWJsZSB0bwordHJlYXQgdGhlIGVtYWlsIG1lc3NhZ2UgYXMgYSBzdHJ1Y3R1cmVkIHRyZWUgb2YgdW5pY29kZSB0ZXh0IGFuZCBiaW5hcnkKK2F0dGFjaG1lbnRzLCB3aXRob3V0IGhhdmluZyB0byB3b3JyeSBhYm91dCBob3cgdGhlc2UgYXJlIHJlcHJlc2VudGVkIHdoZW4KK3NlcmlhbGl6ZWQuICBJbiBwcmFjdGljZSwgaG93ZXZlciwgaXQgaXMgb2Z0ZW4gbmVjZXNzYXJ5IHRvIGJlIGF3YXJlIG9mIGF0CitsZWFzdCBzb21lIG9mIHRoZSBydWxlcyBnb3Zlcm5pbmcgTUlNRSBtZXNzYWdlcyBhbmQgdGhlaXIgc3RydWN0dXJlLAorc3BlY2lmaWNhbGx5IHRoZSBuYW1lcyBhbmQgbmF0dXJlIG9mIHRoZSBNSU1FICJjb250ZW50IHR5cGVzIiBhbmQgaG93IHRoZXkKK2lkZW50aWZ5IG11bHRpcGFydCBkb2N1bWVudHMuICBGb3IgdGhlIG1vc3QgcGFydCB0aGlzIGtub3dsZWRnZSBzaG91bGQgb25seSBiZQorcmVxdWlyZWQgZm9yIG1vcmUgY29tcGxleCBhcHBsaWNhdGlvbnMsIGFuZCBldmVuIHRoZW4gaXQgc2hvdWxkIG9ubHkgYmUgdGhlCitoaWdoIGxldmVsIHN0cnVjdHVyZSBpbiBxdWVzdGlvbiwgYW5kIG5vdCB0aGUgZGV0YWlscyBvZiBob3cgdGhvc2Ugc3RydWN0dXJlcworYXJlIHJlcHJlc2VudGVkLiAgU2luY2UgTUlNRSBjb250ZW50IHR5cGVzIGFyZSB1c2VkIHdpZGVseSBpbiBtb2Rlcm4gaW50ZXJuZXQKK3NvZnR3YXJlIChub3QganVzdCBlbWFpbCksIHRoaXMgd2lsbCBiZSBhIGZhbWlsaWFyIGNvbmNlcHQgdG8gbWFueSBwcm9ncmFtbWVycy4KIAogVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UuCi1UaGUgb3JkZXJpbmcgZm9sbG93cyBhIHByb2dyZXNzaW9uIHRoYXQgc2hvdWxkIGJlIGNvbW1vbiBpbiBhcHBsaWNhdGlvbnM6IGFuCi1lbWFpbCBtZXNzYWdlIGlzIHJlYWQgYXMgZmxhdCB0ZXh0IGZyb20gYSBmaWxlIG9yIG90aGVyIHNvdXJjZSwgdGhlIHRleHQgaXMKLXBhcnNlZCB0byBwcm9kdWNlIHRoZSBvYmplY3Qgc3RydWN0dXJlIG9mIHRoZSBlbWFpbCBtZXNzYWdlLCB0aGlzIHN0cnVjdHVyZSBpcwotbWFuaXB1bGF0ZWQsIGFuZCBmaW5hbGx5LCB0aGUgb2JqZWN0IHRyZWUgaXMgcmVuZGVyZWQgYmFjayBpbnRvIGZsYXQgdGV4dC4KK1dlIHN0YXJ0IHdpdGggdGhlIDptb2Q6YH5lbWFpbC5tZXNzYWdlYCBvYmplY3QgbW9kZWwsIHdoaWNoIGlzIHRoZSBwcmltYXJ5CitpbnRlcmZhY2UgYW4gYXBwbGljYXRpb24gd2lsbCB1c2UsIGFuZCBmb2xsb3cgdGhhdCB3aXRoIHRoZQorOm1vZDpgfmVtYWlsLnBhcnNlcmAgYW5kIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgIGNvbXBvbmVudHMuICBUaGVuIHdlIGNvdmVyIHRoZQorOm1vZDpgfmVtYWlsLnBvbGljeWAgY29udHJvbHMsIHdoaWNoIGNvbXBsZXRlcyB0aGUgdHJlYXRtZW50IG9mIHRoZSBtYWluCitjb21wb25lbnRzIG9mIHRoZSBsaWJyYXJ5LgogCi1JdCBpcyBwZXJmZWN0bHkgZmVhc2libGUgdG8gY3JlYXRlIHRoZSBvYmplY3Qgc3RydWN0dXJlIG91dCBvZiB3aG9sZSBjbG90aCAtLS0KLWkuZS4gY29tcGxldGVseSBmcm9tIHNjcmF0Y2guICBGcm9tIHRoZXJlLCBhIHNpbWlsYXIgcHJvZ3Jlc3Npb24gY2FuIGJlIHRha2VuIGFzCi1hYm92ZS4KK1RoZSBuZXh0IHRocmVlIHNlY3Rpb25zIGNvdmVyIHRoZSBleGNlcHRpb25zIHRoZSBwYWNrYWdlIG1heSByYWlzZSBhbmQgdGhlCitkZWZlY3RzIChub24tY29tcGxpYW5jZSB3aXRoIHRoZSBSRkNzKSB0aGF0IHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBtYXkKK2RldGVjdC4gIFRoZW4gd2UgY292ZXIgdGhlIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWAgYW5kIHRoZQorOm1vZDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyYCBzdWItY29tcG9uZW50cywgd2hpY2ggcHJvdmlkZSB0b29scyBmb3IgZG9pbmcgbW9yZQorZGV0YWlsZWQgbWFuaXB1bGF0aW9uIG9mIGhlYWRlcnMgYW5kIHBheWxvYWRzLCByZXNwZWN0aXZlbHkuICBCb3RoIG9mIHRoZXNlCitjb21wb25lbnRzIGNvbnRhaW4gZmVhdHVyZXMgcmVsZXZhbnQgdG8gY29uc3VtaW5nIGFuZCBwcm9kdWNpbmcgbm9uLXRyaXZpYWwKK21lc3NhZ2VzLCBidXQgYWxzbyBkb2N1bWVudCB0aGVpciBleHRlbnNpYmlsaXR5IEFQSXMsIHdoaWNoIHdpbGwgYmUgb2YgaW50ZXJlc3QKK3RvIGFkdmFuY2VkIGFwcGxpY2F0aW9ucy4KIAotQWxzbyBpbmNsdWRlZCBhcmUgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgb2YgYWxsIHRoZSBjbGFzc2VzIGFuZCBtb2R1bGVzIHRoYXQKLXRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBwcm92aWRlcywgdGhlIGV4Y2VwdGlvbiBjbGFzc2VzIHlvdSBtaWdodCBlbmNvdW50ZXIKLXdoaWxlIHVzaW5nIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSwgc29tZSBhdXhpbGlhcnkgdXRpbGl0aWVzLCBhbmQgYSBmZXcKLWV4YW1wbGVzLiAgRm9yIHVzZXJzIG9mIHRoZSBvbGRlciA6bW9kOmBtaW1lbGliYCBwYWNrYWdlLCBvciBwcmV2aW91cyB2ZXJzaW9ucwotb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlLCBhIHNlY3Rpb24gb24gZGlmZmVyZW5jZXMgYW5kIHBvcnRpbmcgaXMgcHJvdmlkZWQuCitGb2xsb3dpbmcgdGhvc2UgaXMgYSBzZXQgb2YgZXhhbXBsZXMgb2YgdXNpbmcgdGhlIGZ1bmRhbWVudGFsIHBhcnRzIG9mIHRoZSBBUElzCitjb3ZlcmVkIGluIHRoZSBwcmVjZWRpbmcgc2VjdGlvbnMuCisKK1RoZSBmb3Jnb2luZyByZXByZXNlbnQgdGhlIG1vZGVybiAodW5pY29kZSBmcmllbmRseSkgQVBJIG9mIHRoZSBlbWFpbCBwYWNrYWdlLgorVGhlIHJlbWFpbmluZyBzZWN0aW9ucywgc3RhcnRpbmcgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYAorY2xhc3MsIGNvdmVyIHRoZSBsZWdhY3kgOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSSB0aGF0IGRlYWxzIG11Y2ggbW9yZQorZGlyZWN0bHkgd2l0aCB0aGUgZGV0YWlscyBvZiBob3cgZW1haWwgbWVzc2FnZXMgYXJlIHJlcHJlc2VudGVkLiAgVGhlCis6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJIGRvZXMgKm5vdCogaGlkZSB0aGUgZGV0YWlscyBvZiB0aGUgUkZDcyBmcm9tCit0aGUgYXBwbGljYXRpb24sIGJ1dCBmb3IgYXBwbGljYXRpb25zIHRoYXQgbmVlZCB0byBvcGVyYXRlIGF0IHRoYXQgbGV2ZWwsIHRoZXkKK2NhbiBiZSB1c2VmdWwgdG9vbHMuICBUaGlzIGRvY3VtZW50YXRpb24gaXMgYWxzbyByZWxldmFudCBmb3IgYXBwbGljYXRpb25zIHRoYXQKK2FyZSBzdGlsbCB1c2luZyB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJIGZvciBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSByZWFzb25zLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgRG9jcyByZW9yZ2FuaXplZCBhbmQgcmV3cml0dGVuIHRvIHByb21vdGUgdGhlIG5ldworICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLzpjbGFzczpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAKKyAgIEFQSS4KIAogQ29udGVudHMgb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGRvY3VtZW50YXRpb246CiAKQEAgLTU2LDMzNSArMTEwLDQzIEBACiAgICBlbWFpbC5wYXJzZXIucnN0CiAgICBlbWFpbC5nZW5lcmF0b3IucnN0CiAgICBlbWFpbC5wb2xpY3kucnN0CisKKyAgIGVtYWlsLmVycm9ycy5yc3QKICAgIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdAogICAgZW1haWwuY29udGVudG1hbmFnZXIucnN0CisKKyAgIGVtYWlsLmV4YW1wbGVzLnJzdAorCitMZWdhY3kgQVBJOgorCisuLiB0b2N0cmVlOjoKKworICAgZW1haWwuY29tcGF0MzItbWVzc2FnZS5yc3QKICAgIGVtYWlsLm1pbWUucnN0CiAgICBlbWFpbC5oZWFkZXIucnN0CiAgICBlbWFpbC5jaGFyc2V0LnJzdAogICAgZW1haWwuZW5jb2RlcnMucnN0Ci0gICBlbWFpbC5lcnJvcnMucnN0CiAgICBlbWFpbC51dGlsLnJzdAogICAgZW1haWwuaXRlcmF0b3JzLnJzdAotICAgZW1haWwtZXhhbXBsZXMucnN0CiAKIAogLi4gc2VlYWxzbzo6CiAKICAgIE1vZHVsZSA6bW9kOmBzbXRwbGliYAotICAgICAgU01UUCBwcm90b2NvbCBjbGllbnQKKyAgICAgIFNNVFAgKFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBQcm90Y29sKSBjbGllbnQKKworICAgTW9kdWxlIDptb2Q6YHBvcGxpYmAKKyAgICAgIFBPUCAoUG9zdCBPZmZpY2UgUHJvdG9jb2wpIGNsaWVudAorCisgICBNb2R1bGUgOm1vZDpgaW1hcGxpYmAKKyAgICAgIElNQVAgKEludGVybmV0IE1lc3NhZ2UgQWNjZXNzIFByb3RvY29sKSBjbGllbnQKIAogICAgTW9kdWxlIDptb2Q6YG5udHBsaWJgCi0gICAgICBOTlRQIHByb3RvY29sIGNsaWVudAorICAgICAgTk5UUCAoTmV0IE5ld3MgVHJhbnNwb3J0IFByb3RvY29sKSBjbGllbnQKIAorICAgTW9kdWxlIDptb2Q6YG1haWxib3hgCisgICAgICBUb29scyBmb3IgY3JlYXRpbmcsIHJlYWRpbmcsIGFuZCBtYW5hZ2luZyBjb2xsZWN0aW9ucyBvZiBtZXNzYWdlcyBvbiBkaXNrCisgICAgICB1c2luZyBhIHZhcmlldHkgc3RhbmRhcmQgZm9ybWF0cy4KIAotLi4gX2VtYWlsLXBrZy1oaXN0b3J5OgotCi1QYWNrYWdlIEhpc3RvcnkKLS0tLS0tLS0tLS0tLS0tLQotCi1UaGlzIHRhYmxlIGRlc2NyaWJlcyB0aGUgcmVsZWFzZSBoaXN0b3J5IG9mIHRoZSBlbWFpbCBwYWNrYWdlLCBjb3JyZXNwb25kaW5nIHRvCi10aGUgdmVyc2lvbiBvZiBQeXRob24gdGhhdCB0aGUgcGFja2FnZSB3YXMgcmVsZWFzZWQgd2l0aC4gIEZvciBwdXJwb3NlcyBvZiB0aGlzCi1kb2N1bWVudCwgd2hlbiB5b3Ugc2VlIGEgbm90ZSBhYm91dCBjaGFuZ2Ugb3IgYWRkZWQgdmVyc2lvbnMsIHRoZXNlIHJlZmVyIHRvIHRoZQotUHl0aG9uIHZlcnNpb24gdGhlIGNoYW5nZSB3YXMgbWFkZSBpbiwgKm5vdCogdGhlIGVtYWlsIHBhY2thZ2UgdmVyc2lvbi4gIFRoaXMKLXRhYmxlIGFsc28gZGVzY3JpYmVzIHRoZSBQeXRob24gY29tcGF0aWJpbGl0eSBvZiBlYWNoIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UuCi0KLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBlbWFpbCB2ZXJzaW9uIHwgZGlzdHJpYnV0ZWQgd2l0aCAgICAgICAgICAgICB8IGNvbXBhdGlibGUgd2l0aCAgICAgICB8Ci0rPT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLXwgOmNvbnN0OmAxLnhgICB8IFB5dGhvbiAyLjIuMCB0byBQeXRob24gMi4yLjEgfCAqbm8gbG9uZ2VyIHN1cHBvcnRlZCogfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgMi41YCAgfCBQeXRob24gMi4yLjIrIGFuZCBQeXRob24gMi4zIHwgUHl0aG9uIDIuMSB0byAyLjUgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDMuMGAgIHwgUHl0aG9uIDIuNCBhbmQgUHl0aG9uIDIuNSAgICB8IFB5dGhvbiAyLjMgdG8gMi42ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmA0LjBgICB8IFB5dGhvbiAyLjUgdG8gUHl0aG9uIDIuNyAgICAgfCBQeXRob24gMi4zIHRvIDIuNyAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgNS4wYCAgfCBQeXRob24gMy4wIGFuZCBQeXRob24gMy4xICAgIHwgUHl0aG9uIDMuMCB0byAzLjIgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDUuMWAgIHwgUHl0aG9uIDMuMiAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiAzLjIgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotQWZ0ZXIgVmVyc2lvbiA1LjEgKFB5dGhvbiAzLjIpLCB0aGUgZW1haWwgcGFja2FnZSBubyBsb25nZXIgaGFzIGEgdmVyc2lvbiB0aGF0Ci1pcyBzZXBhcmF0ZSBmcm9tIHRoZSBQeXRob24gdmVyc2lvbi4gIChTZWUgdGhlIDpyZWY6YHdoYXRzbmV3LWluZGV4YCBkb2N1bWVudHMKLWZvciB0aGUgcmVzcGVjdGl2ZSBQeXRob24gdmVyc2lvbnMgZm9yIGRldGFpbHMgb24gY2hhbmdlcy4pCi0KLUhlcmUgYXJlIHRoZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDUuMSBhbmQKLXZlcnNpb24gNS4wOgotCi0qIEl0IGlzIG9uY2UgYWdhaW4gcG9zc2libGUgdG8gcGFyc2UgbWVzc2FnZXMgY29udGFpbmluZyBub24tQVNDSUkgYnl0ZXMsCi0gIGFuZCB0byByZXByb2R1Y2Ugc3VjaCBtZXNzYWdlcyBpZiB0aGUgZGF0YSBjb250YWluaW5nIHRoZSBub24tQVNDSUkKLSAgYnl0ZXMgaXMgbm90IG1vZGlmaWVkLgotCi0qIE5ldyBmdW5jdGlvbnMgOmZ1bmM6YG1lc3NhZ2VfZnJvbV9ieXRlc2AgYW5kIDpmdW5jOmBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGVgLAotICBhbmQgbmV3IGNsYXNzZXMgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzRmVlZFBhcnNlcmAgYW5kCi0gIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgYWxsb3cgYmluYXJ5IG1lc3NhZ2UgZGF0YSB0byBiZSBwYXJzZWQKLSAgaW50byBtb2RlbCBvYmplY3RzLgotCi0qIEdpdmVuIGJ5dGVzIGlucHV0IHRvIHRoZSBtb2RlbCwgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgCi0gIHdpbGwgYnkgZGVmYXVsdCBkZWNvZGUgYSBtZXNzYWdlIGJvZHkgdGhhdCBoYXMgYQotICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgYGA4Yml0YGAgdXNpbmcgdGhlIGNoYXJzZXQKLSAgc3BlY2lmaWVkIGluIHRoZSBNSU1FIGhlYWRlcnMgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIHN0cmluZy4KLQotKiBHaXZlbiBieXRlcyBpbnB1dCB0byB0aGUgbW9kZWwsIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIHdpbGwKLSAgY29udmVydCBtZXNzYWdlIGJvZGllcyB0aGF0IGhhdmUgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YKLSAgOGJpdCB0byBpbnN0ZWFkIGhhdmUgYSA3Yml0IENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuCi0KLSogTmV3IGNsYXNzIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgcHJvZHVjZXMgYnl0ZXMKLSAgYXMgb3V0cHV0LCBwcmVzZXJ2aW5nIGFueSB1bmNoYW5nZWQgbm9uLUFTQ0lJIGRhdGEgdGhhdCB3YXMKLSAgcHJlc2VudCBpbiB0aGUgaW5wdXQgdXNlZCB0byBidWlsZCB0aGUgbW9kZWwsIGluY2x1ZGluZyBtZXNzYWdlIGJvZGllcwotICB3aXRoIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQuCi0KLUhlcmUgYXJlIHRoZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDUuMCBhbmQgdmVyc2lvbiA0OgotCi0qIEFsbCBvcGVyYXRpb25zIGFyZSBvbiB1bmljb2RlIHN0cmluZ3MuICBUZXh0IGlucHV0cyBtdXN0IGJlIHN0cmluZ3MsCi0gIHRleHQgb3V0cHV0cyBhcmUgc3RyaW5ncy4gIE91dHB1dHMgYXJlIGxpbWl0ZWQgdG8gdGhlIEFTQ0lJIGNoYXJhY3RlcgotICBzZXQgYW5kIHNvIGNhbiBiZSBlbmNvZGVkIHRvIEFTQ0lJIGZvciB0cmFuc21pc3Npb24uICBJbnB1dHMgYXJlIGFsc28KLSAgbGltaXRlZCB0byBBU0NJSTsgdGhpcyBpcyBhbiBhY2tub3dsZWRnZWQgbGltaXRhdGlvbiBvZiBlbWFpbCA1LjAgYW5kCi0gIG1lYW5zIGl0IGNhbiBvbmx5IGJlIHVzZWQgdG8gcGFyc2UgZW1haWwgdGhhdCBpcyA3Yml0IGNsZWFuLgotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiA0IGFuZCB2ZXJzaW9uIDM6Ci0KLSogQWxsIG1vZHVsZXMgaGF2ZSBiZWVuIHJlbmFtZWQgYWNjb3JkaW5nIHRvIDpwZXA6YDhgIHN0YW5kYXJkcy4gIEZvciBleGFtcGxlLAotICB0aGUgdmVyc2lvbiAzIG1vZHVsZSA6bW9kOmBlbWFpbC5NZXNzYWdlYCB3YXMgcmVuYW1lZCB0byA6bW9kOmBlbWFpbC5tZXNzYWdlYCBpbgotICB2ZXJzaW9uIDQuCi0KLSogQSBuZXcgc3VicGFja2FnZSA6bW9kOmBlbWFpbC5taW1lYCB3YXMgYWRkZWQgYW5kIGFsbCB0aGUgdmVyc2lvbiAzCi0gIDptb2Q6YGVtYWlsLk1JTUVcKmAgbW9kdWxlcyB3ZXJlIHJlbmFtZWQgYW5kIHNpdHVhdGVkIGludG8gdGhlIDptb2Q6YGVtYWlsLm1pbWVgCi0gIHN1YnBhY2thZ2UuICBGb3IgZXhhbXBsZSwgdGhlIHZlcnNpb24gMyBtb2R1bGUgOm1vZDpgZW1haWwuTUlNRVRleHRgIHdhcyByZW5hbWVkCi0gIHRvIDptb2Q6YGVtYWlsLm1pbWUudGV4dGAuCi0KLSAgKk5vdGUgdGhhdCB0aGUgdmVyc2lvbiAzIG5hbWVzIHdpbGwgY29udGludWUgdG8gd29yayB1bnRpbCBQeXRob24gMi42Ki4KLQotKiBUaGUgOm1vZDpgZW1haWwubWltZS5hcHBsaWNhdGlvbmAgbW9kdWxlIHdhcyBhZGRlZCwgd2hpY2ggY29udGFpbnMgdGhlCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUuYXBwbGljYXRpb24uTUlNRUFwcGxpY2F0aW9uYCBjbGFzcy4KLQotKiBNZXRob2RzIHRoYXQgd2VyZSBkZXByZWNhdGVkIGluIHZlcnNpb24gMyBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXNlIGluY2x1ZGUKLSAgOm1ldGg6YEdlbmVyYXRvci5fX2NhbGxfX2AsIDptZXRoOmBNZXNzYWdlLmdldF90eXBlYCwKLSAgOm1ldGg6YE1lc3NhZ2UuZ2V0X21haW5fdHlwZWAsIDptZXRoOmBNZXNzYWdlLmdldF9zdWJ0eXBlYC4KLQotKiBGaXhlcyBoYXZlIGJlZW4gYWRkZWQgZm9yIDpyZmM6YDIyMzFgIHN1cHBvcnQgd2hpY2ggY2FuIGNoYW5nZSBzb21lIG9mIHRoZQotICByZXR1cm4gdHlwZXMgZm9yIDpmdW5jOmBNZXNzYWdlLmdldF9wYXJhbSA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbT5gCi0gIGFuZCBmcmllbmRzLiAgVW5kZXIgc29tZQotICBjaXJjdW1zdGFuY2VzLCB2YWx1ZXMgd2hpY2ggdXNlZCB0byByZXR1cm4gYSAzLXR1cGxlIG5vdyByZXR1cm4gc2ltcGxlIHN0cmluZ3MKLSAgKHNwZWNpZmljYWxseSwgaWYgYWxsIGV4dGVuZGVkIHBhcmFtZXRlciBzZWdtZW50cyB3ZXJlIHVuZW5jb2RlZCwgdGhlcmUgaXMgbm8KLSAgbGFuZ3VhZ2UgYW5kIGNoYXJzZXQgZGVzaWduYXRpb24gZXhwZWN0ZWQsIHNvIHRoZSByZXR1cm4gdHlwZSBpcyBub3cgYSBzaW1wbGUKLSAgc3RyaW5nKS4gIEFsc28sICUtZGVjb2RpbmcgdXNlZCB0byBiZSBkb25lIGZvciBib3RoIGVuY29kZWQgYW5kIHVuZW5jb2RlZAotICBzZWdtZW50czsgdGhpcyBkZWNvZGluZyBpcyBub3cgZG9uZSBvbmx5IGZvciBlbmNvZGVkIHNlZ21lbnRzLgotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiAzIGFuZCB2ZXJzaW9uIDI6Ci0KLSogVGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYCBjbGFzcyB3YXMgaW50cm9kdWNlZCwgYW5kIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyB3YXMgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgdGhlCi0gIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYC4gIEFsbCBwYXJzaW5nIHRoZXJlZm9yZSBpcwotICBub24tc3RyaWN0LCBhbmQgcGFyc2luZyB3aWxsIG1ha2UgYSBiZXN0IGVmZm9ydCBuZXZlciB0byByYWlzZSBhbiBleGNlcHRpb24uCi0gIFByb2JsZW1zIGZvdW5kIHdoaWxlIHBhcnNpbmcgbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB0aGUgbWVzc2FnZSdzICpkZWZlY3QqCi0gIGF0dHJpYnV0ZS4KLQotKiBBbGwgYXNwZWN0cyBvZiB0aGUgQVBJIHdoaWNoIHJhaXNlZCA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgXCBzIGluIHZlcnNpb24gMgotICBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXNlIGluY2x1ZGUgdGhlICpfZW5jb2RlciogYXJndW1lbnQgdG8gdGhlCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUudGV4dC5NSU1FVGV4dGAgY29uc3RydWN0b3IsIHRoZQotICA6bWV0aDpgTWVzc2FnZS5hZGRfcGF5bG9hZGAgbWV0aG9kLCB0aGUgOmZ1bmM6YFV0aWxzLmR1bXBfYWRkcmVzc19wYWlyYAotICBmdW5jdGlvbiwgYW5kIHRoZSBmdW5jdGlvbnMgOmZ1bmM6YFV0aWxzLmRlY29kZWAgYW5kIDpmdW5jOmBVdGlscy5lbmNvZGVgLgotCi0qIE5ldyA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgXCBzIGhhdmUgYmVlbiBhZGRlZCB0bzoKLSAgOm1ldGg6YEdlbmVyYXRvci5fX2NhbGxfX2AsIDptZXRoOmBNZXNzYWdlLmdldF90eXBlYCwKLSAgOm1ldGg6YE1lc3NhZ2UuZ2V0X21haW5fdHlwZWAsIDptZXRoOmBNZXNzYWdlLmdldF9zdWJ0eXBlYCwgYW5kIHRoZSAqc3RyaWN0KgotICBhcmd1bWVudCB0byB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MuICBUaGVzZSBhcmUgZXhwZWN0ZWQgdG8KLSAgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuCi0KLSogU3VwcG9ydCBmb3IgUHl0aG9ucyBlYXJsaWVyIHRoYW4gMi4zIGhhcyBiZWVuIHJlbW92ZWQuCi0KLUhlcmUgYXJlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDIgYW5kIHZlcnNpb24gMToKLQotKiBUaGUgOm1vZDpgZW1haWwuSGVhZGVyYCBhbmQgOm1vZDpgZW1haWwuQ2hhcnNldGAgbW9kdWxlcyBoYXZlIGJlZW4gYWRkZWQuCi0KLSogVGhlIHBpY2tsZSBmb3JtYXQgZm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2VzIGhhcyBjaGFuZ2VkLgotICBTaW5jZSB0aGlzIHdhcyBuZXZlciAoYW5kIHN0aWxsIGlzbid0KSBmb3JtYWxseSBkZWZpbmVkLCB0aGlzIGlzbid0Ci0gIGNvbnNpZGVyZWQgYSBiYWNrd2FyZCBpbmNvbXBhdGliaWxpdHkuICBIb3dldmVyIGlmIHlvdXIgYXBwbGljYXRpb24gcGlja2xlcwotICBhbmQgdW5waWNrbGVzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2VzLCBiZSBhd2FyZSB0aGF0IGluCi0gIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDIsIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2VzIG5vdyBoYXZlCi0gIHByaXZhdGUgdmFyaWFibGVzICpfY2hhcnNldCogYW5kICpfZGVmYXVsdF90eXBlKi4KLQotKiBTZXZlcmFsIG1ldGhvZHMgaW4gdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MgaGF2ZSBiZWVuCi0gIGRlcHJlY2F0ZWQsIG9yIHRoZWlyIHNpZ25hdHVyZXMgY2hhbmdlZC4gIEFsc28sIG1hbnkgbmV3IG1ldGhvZHMgaGF2ZSBiZWVuCi0gIGFkZGVkLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcwotICBmb3IgZGV0YWlscy4gIFRoZSBjaGFuZ2VzIHNob3VsZCBiZSBjb21wbGV0ZWx5IGJhY2t3YXJkIGNvbXBhdGlibGUuCi0KLSogVGhlIG9iamVjdCBzdHJ1Y3R1cmUgaGFzIGNoYW5nZWQgaW4gdGhlIGZhY2Ugb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAKLSAgY29udGVudCB0eXBlcy4gIEluIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDEsIHN1Y2ggYSB0eXBlIHdvdWxkIGJlIHJlcHJlc2VudGVkCi0gIGJ5IGEgc2NhbGFyIHBheWxvYWQsIGkuZS4gdGhlIGNvbnRhaW5lciBtZXNzYWdlJ3MKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCByZXR1cm5lZCBmYWxzZSwKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIHdhcyBub3QgYSBsaXN0IG9iamVjdCwgYnV0IGEKLSAgc2luZ2xlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2UuCi0KLSAgVGhpcyBzdHJ1Y3R1cmUgd2FzIGluY29uc2lzdGVudCB3aXRoIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLCBzbyB0aGUgb2JqZWN0Ci0gIHJlcHJlc2VudGF0aW9uIGZvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCBjb250ZW50IHR5cGVzIHdhcyBjaGFuZ2VkLiAgSW4KLSAgOm1vZDpgZW1haWxgIHZlcnNpb24gMiwgdGhlIGNvbnRhaW5lciAqZG9lcyogcmV0dXJuIGBgVHJ1ZWBgIGZyb20KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCwgYW5kCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCByZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIGEgc2luZ2xlCi0gIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXRlbS4KLQotICBOb3RlIHRoYXQgdGhpcyBpcyBvbmUgcGxhY2UgdGhhdCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGNvdWxkIG5vdCBiZQotICBjb21wbGV0ZWx5IG1haW50YWluZWQuICBIb3dldmVyLCBpZiB5b3UncmUgYWxyZWFkeSB0ZXN0aW5nIHRoZSByZXR1cm4gdHlwZSBvZgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAsIHlvdSBzaG91bGQgYmUgZmluZS4gIFlvdSBqdXN0IG5lZWQKLSAgdG8gbWFrZSBzdXJlIHlvdXIgY29kZSBkb2Vzbid0IGRvIGEgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uuc2V0X3BheWxvYWRgCi0gIHdpdGggYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlIG9uIGEgY29udGFpbmVyIHdpdGggYSBjb250ZW50Ci0gIHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCi0KLSogVGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNvbnN0cnVjdG9yJ3MgKnN0cmljdCogYXJndW1lbnQgd2FzIGFkZGVkLAotICBhbmQgaXRzIDptZXRoOmB+ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZWAgYW5kCi0gIDptZXRoOmB+ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZXN0cmAgbWV0aG9kcyBncmV3IGEgKmhlYWRlcnNvbmx5KiBhcmd1bWVudC4KLSAgVGhlICpzdHJpY3QqIGZsYWcgd2FzIGFsc28gYWRkZWQgdG8gZnVuY3Rpb25zIDpmdW5jOmBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZWAKLSAgYW5kIDpmdW5jOmBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nYC4KLQotKiA6bWV0aDpgR2VuZXJhdG9yLl9fY2FsbF9fYCBpcyBkZXByZWNhdGVkOyB1c2UgOm1ldGg6YEdlbmVyYXRvci5mbGF0dGVuCi0gIDxlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmZsYXR0ZW4+YCBpbnN0ZWFkLiAgVGhlCi0gIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGNsYXNzIGhhcyBhbHNvIGdyb3duIHRoZQotICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuY2xvbmVgIG1ldGhvZC4KLQotKiBUaGUgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkRlY29kZWRHZW5lcmF0b3JgIGNsYXNzIGluIHRoZQotICA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZSB3YXMgYWRkZWQuCi0KLSogVGhlIGludGVybWVkaWF0ZSBiYXNlIGNsYXNzZXMKLSAgOmNsYXNzOmB+ZW1haWwubWltZS5ub25tdWx0aXBhcnQuTUlNRU5vbk11bHRpcGFydGAgYW5kCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUubXVsdGlwYXJ0Lk1JTUVNdWx0aXBhcnRgIGhhdmUgYmVlbiBhZGRlZCwgYW5kIGludGVycG9zZWQKLSAgaW4gdGhlIGNsYXNzIGhpZXJhcmNoeSBmb3IgbW9zdCBvZiB0aGUgb3RoZXIgTUlNRS1yZWxhdGVkIGRlcml2ZWQgY2xhc3Nlcy4KLQotKiBUaGUgKl9lbmNvZGVyKiBhcmd1bWVudCB0byB0aGUgOmNsYXNzOmB+ZW1haWwubWltZS50ZXh0Lk1JTUVUZXh0YCBjb25zdHJ1Y3RvcgotICBoYXMgYmVlbiBkZXByZWNhdGVkLiAgRW5jb2RpbmcgIG5vdyBoYXBwZW5zIGltcGxpY2l0bHkgYmFzZWQgb24gdGhlCi0gICpfY2hhcnNldCogYXJndW1lbnQuCi0KLSogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YGVtYWlsLlV0aWxzYCBtb2R1bGUgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQ6Ci0gIDpmdW5jOmBkdW1wX2FkZHJlc3NfcGFpcnNgLCA6ZnVuYzpgZGVjb2RlYCwgYW5kIDpmdW5jOmBlbmNvZGVgLiAgVGhlIGZvbGxvd2luZwotICBmdW5jdGlvbnMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBtb2R1bGU6IDpmdW5jOmBtYWtlX21zZ2lkYCwKLSAgOmZ1bmM6YGRlY29kZV9yZmMyMjMxYCwgOmZ1bmM6YGVuY29kZV9yZmMyMjMxYCwgYW5kIDpmdW5jOmBkZWNvZGVfcGFyYW1zYC4KLQotKiBUaGUgbm9uLXB1YmxpYyBmdW5jdGlvbiA6ZnVuYzpgZW1haWwuSXRlcmF0b3JzLl9zdHJ1Y3R1cmVgIHdhcyBhZGRlZC4KLQotCi1EaWZmZXJlbmNlcyBmcm9tIDptb2Q6YG1pbWVsaWJgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB3YXMgb3JpZ2luYWxseSBwcm90b3R5cGVkIGFzIGEgc2VwYXJhdGUgbGlicmFyeSBjYWxsZWQKLWBtaW1lbGliIDxodHRwOi8vbWltZWxpYi5zb3VyY2Vmb3JnZS5uZXQvPmBfLiBDaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHNvIHRoYXQgbWV0aG9kIG5hbWVzCi1hcmUgbW9yZSBjb25zaXN0ZW50LCBhbmQgc29tZSBtZXRob2RzIG9yIG1vZHVsZXMgaGF2ZSBlaXRoZXIgYmVlbiBhZGRlZCBvcgotcmVtb3ZlZC4gIFRoZSBzZW1hbnRpY3Mgb2Ygc29tZSBvZiB0aGUgbWV0aG9kcyBoYXZlIGFsc28gY2hhbmdlZC4gIEZvciB0aGUgbW9zdAotcGFydCwgYW55IGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIDptb2Q6YG1pbWVsaWJgIGlzIHN0aWxsIGF2YWlsYWJsZSBpbiB0aGUKLTptb2Q6YGVtYWlsYCBwYWNrYWdlLCBhbGJlaXQgb2Z0ZW4gaW4gYSBkaWZmZXJlbnQgd2F5LiAgQmFja3dhcmQgY29tcGF0aWJpbGl0eQotYmV0d2VlbiB0aGUgOm1vZDpgbWltZWxpYmAgcGFja2FnZSBhbmQgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHdhcyBub3QgYQotcHJpb3JpdHkuCi0KLUhlcmUgaXMgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgOm1vZDpgbWltZWxpYmAgYW5kCi10aGUgOm1vZDpgZW1haWxgIHBhY2thZ2VzLCBhbG9uZyB3aXRoIGhpbnRzIG9uIGhvdyB0byBwb3J0IHlvdXIgYXBwbGljYXRpb25zLgotCi1PZiBjb3Vyc2UsIHRoZSBtb3N0IHZpc2libGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gcGFja2FnZXMgaXMgdGhhdCB0aGUKLXBhY2thZ2UgbmFtZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIDptb2Q6YGVtYWlsYC4gIEluIGFkZGl0aW9uLCB0aGUgdG9wLWxldmVsCi1wYWNrYWdlIGhhcyB0aGUgZm9sbG93aW5nIGRpZmZlcmVuY2VzOgotCi0qIDpmdW5jOmBtZXNzYWdlRnJvbVN0cmluZ2AgaGFzIGJlZW4gcmVuYW1lZCB0byA6ZnVuYzpgbWVzc2FnZV9mcm9tX3N0cmluZ2AuCi0KLSogOmZ1bmM6YG1lc3NhZ2VGcm9tRmlsZWAgaGFzIGJlZW4gcmVuYW1lZCB0byA6ZnVuYzpgbWVzc2FnZV9mcm9tX2ZpbGVgLgotCi1UaGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBkaWZmZXJlbmNlczoKLQotKiBUaGUgbWV0aG9kIDptZXRoOmBhc1N0cmluZ2Agd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXNfc3RyaW5nYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBpc211bHRpcGFydGAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YC4KLQotKiBUaGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZCBoYXMgZ3Jvd24gYSAqZGVjb2RlKgotICBvcHRpb25hbCBhcmd1bWVudC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRhbGxgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9hbGxgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGFkZGhlYWRlcmAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYWRkX2hlYWRlcmAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0dHlwZWAgd2FzIHJlbmFtZWQgdG8gOm1ldGg6YGdldF90eXBlYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRtYWludHlwZWAgd2FzIHJlbmFtZWQgdG8gOm1ldGg6YGdldF9tYWluX3R5cGVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHN1YnR5cGVgIHdhcyByZW5hbWVkIHRvIDptZXRoOmBnZXRfc3VidHlwZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0cGFyYW1zYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW1zYC4gQWxzbywgd2hlcmVhcyA6bWV0aDpgZ2V0cGFyYW1zYAotICByZXR1cm5lZCBhIGxpc3Qgb2Ygc3RyaW5ncywgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BhcmFtc2AgcmV0dXJucwotICBhIGxpc3Qgb2YgMi10dXBsZXMsIGVmZmVjdGl2ZWx5IHRoZSBrZXkvdmFsdWUgcGFpcnMgb2YgdGhlIHBhcmFtZXRlcnMsIHNwbGl0Ci0gIG9uIHRoZSBgYCc9J2BgIHNpZ24uCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0cGFyYW1gIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0Y2hhcnNldHNgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9jaGFyc2V0c2AuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0ZmlsZW5hbWVgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9maWxlbmFtZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0Ym91bmRhcnlgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9ib3VuZGFyeWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgc2V0Ym91bmRhcnlgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9ib3VuZGFyeWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0ZGVjb2RlZHBheWxvYWRgIHdhcyByZW1vdmVkLiAgVG8gZ2V0IHNpbWlsYXIKLSAgZnVuY3Rpb25hbGl0eSwgcGFzcyB0aGUgdmFsdWUgMSB0byB0aGUgKmRlY29kZSogZmxhZyBvZiB0aGUKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRwYXlsb2FkYXN0ZXh0YCB3YXMgcmVtb3ZlZC4gIFNpbWlsYXIgZnVuY3Rpb25hbGl0eSBpcwotICBzdXBwb3J0ZWQgYnkgdGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBjbGFzcyBpbiB0aGUKLSAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0Ym9keWFzdGV4dGAgd2FzIHJlbW92ZWQuICBZb3UgY2FuIGdldCBzaW1pbGFyCi0gIGZ1bmN0aW9uYWxpdHkgYnkgY3JlYXRpbmcgYW4gaXRlcmF0b3Igd2l0aAotICA6ZnVuYzpgfmVtYWlsLml0ZXJhdG9ycy50eXBlZF9zdWJwYXJ0X2l0ZXJhdG9yYCBpbiB0aGUgOm1vZDpgZW1haWwuaXRlcmF0b3JzYAotICBtb2R1bGUuCi0KLVRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBoYXMgbm8gZGlmZmVyZW5jZXMgaW4gaXRzIHB1YmxpYwotaW50ZXJmYWNlLiBJdCBkb2VzIGhhdmUgc29tZSBhZGRpdGlvbmFsIHNtYXJ0cyB0byByZWNvZ25pemUKLTptaW1ldHlwZTpgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXNgIHR5cGUgbWVzc2FnZXMsIHdoaWNoIGl0IHJlcHJlc2VudHMgYXMgYQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZSBjb250YWluaW5nIHNlcGFyYXRlCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIHN1YnBhcnRzIGZvciBlYWNoIGhlYWRlciBibG9jayBpbiB0aGUgZGVsaXZlcnkKLXN0YXR1cyBub3RpZmljYXRpb24gWyNdXy4KLQotVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGNsYXNzIGhhcyBubyBkaWZmZXJlbmNlcyBpbiBpdHMgcHVibGljCi1pbnRlcmZhY2UuICBUaGVyZSBpcyBhIG5ldyBjbGFzcyBpbiB0aGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgdGhvdWdoLAotY2FsbGVkIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCB3aGljaCBwcm92aWRlcyBtb3N0IG9mIHRoZQotZnVuY3Rpb25hbGl0eSBwcmV2aW91c2x5IGF2YWlsYWJsZSBpbiB0aGUgOm1ldGg6YE1lc3NhZ2UuZ2V0cGF5bG9hZGFzdGV4dGAKLW1ldGhvZC4KLQotVGhlIGZvbGxvd2luZyBtb2R1bGVzIGFuZCBjbGFzc2VzIGhhdmUgYmVlbiBjaGFuZ2VkOgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLmJhc2UuTUlNRUJhc2VgIGNsYXNzIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyAqX21ham9yKgotICBhbmQgKl9taW5vciogaGF2ZSBjaGFuZ2VkIHRvICpfbWFpbnR5cGUqIGFuZCAqX3N1YnR5cGUqIHJlc3BlY3RpdmVseS4KLQotKiBUaGUgYGBJbWFnZWBgIGNsYXNzL21vZHVsZSBoYXMgYmVlbiByZW5hbWVkIHRvIGBgTUlNRUltYWdlYGAuICBUaGUgKl9taW5vcioKLSAgYXJndW1lbnQgaGFzIGJlZW4gcmVuYW1lZCB0byAqX3N1YnR5cGUqLgotCi0qIFRoZSBgYFRleHRgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgYE1JTUVUZXh0YGAuICBUaGUgKl9taW5vcioKLSAgYXJndW1lbnQgaGFzIGJlZW4gcmVuYW1lZCB0byAqX3N1YnR5cGUqLgotCi0qIFRoZSBgYE1lc3NhZ2VSRkM4MjJgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgYE1JTUVNZXNzYWdlYGAuICBOb3RlCi0gIHRoYXQgYW4gZWFybGllciB2ZXJzaW9uIG9mIDptb2Q6YG1pbWVsaWJgIGNhbGxlZCB0aGlzIGNsYXNzL21vZHVsZSBgYFJGQzgyMmBgLAotICBidXQgdGhhdCBjbGFzaGVkIHdpdGggdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZSA6bW9kOmByZmM4MjJgIG9uIHNvbWUKLSAgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMuCi0KLSAgQWxzbywgdGhlIDpjbGFzczpgfmVtYWlsLm1pbWUubWVzc2FnZS5NSU1FTWVzc2FnZWAgY2xhc3Mgbm93IHJlcHJlc2VudHMgYW55Ci0gIGtpbmQgb2YgTUlNRSBtZXNzYWdlCi0gIHdpdGggbWFpbiB0eXBlIDptaW1ldHlwZTpgbWVzc2FnZWAuICBJdCB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudCAqX3N1YnR5cGUqCi0gIHdoaWNoIGlzIHVzZWQgdG8gc2V0IHRoZSBNSU1FIHN1YnR5cGUuICAqX3N1YnR5cGUqIGRlZmF1bHRzIHRvCi0gIDptaW1ldHlwZTpgcmZjODIyYC4KLQotOm1vZDpgbWltZWxpYmAgcHJvdmlkZWQgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucyBpbiBpdHMgOm1vZDpgYWRkcmVzc2AgYW5kCi06bW9kOmBkYXRlYCBtb2R1bGVzLiAgQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW92ZWQgdG8gdGhlCi06bW9kOmBlbWFpbC51dGlsc2AgbW9kdWxlLgotCi1UaGUgYGBNc2dSZWFkZXJgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVtb3ZlZC4gIEl0cyBmdW5jdGlvbmFsaXR5IGlzIG1vc3QKLWNsb3NlbHkgc3VwcG9ydGVkIGluIHRoZSA6ZnVuYzpgfmVtYWlsLml0ZXJhdG9ycy5ib2R5X2xpbmVfaXRlcmF0b3JgIGZ1bmN0aW9uCi1pbiB0aGUgOm1vZDpgZW1haWwuaXRlcmF0b3JzYCBtb2R1bGUuCi0KLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbI10gRGVsaXZlcnkgU3RhdHVzIE5vdGlmaWNhdGlvbnMgKERTTikgYXJlIGRlZmluZWQgaW4gOnJmYzpgMTg5NGAuCisgICBNb2R1bGUgOm1vZDpgc210cGRgCisgICAgICBTTVRQIHNlcnZlciBmcmFtZXdvcmsgKHByaW1hcmlseSB1c2VmdWwgZm9yIHRlc3RpbmcpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0CmluZGV4IDVjZmY3NDYuLjYzZmFlMmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0CkBAIC04LDcgKzgsNDMgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlcmUgYXJlIHNldmVyYWwgdXNlZnVsIHV0aWxpdGllcyBwcm92aWRlZCBpbiB0aGUgOm1vZDpgZW1haWwudXRpbHNgIG1vZHVsZToKK1RoZXJlIGFyZSBhIGNvdXBsZSBvZiB1c2VmdWwgdXRpbGl0aWVzIHByb3ZpZGVkIGluIHRoZSA6bW9kOmBlbWFpbC51dGlsc2AKK21vZHVsZToKKworLi4gZnVuY3Rpb246OiBsb2NhbHRpbWUoZHQ9Tm9uZSkKKworICAgIFJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4gIElmIGNhbGxlZCB3aXRob3V0CisgICAgYXJndW1lbnRzLCByZXR1cm4gY3VycmVudCB0aW1lLiAgT3RoZXJ3aXNlICpkdCogYXJndW1lbnQgc2hvdWxkIGJlIGEKKyAgICA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxvY2FsIHRpbWUKKyAgICB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMgbmFpdmUgKHRoYXQKKyAgICBpcywgYGBkdC50emluZm9gYCBpcyBgYE5vbmVgYCksIGl0IGlzIGFzc3VtZWQgdG8gYmUgaW4gbG9jYWwgdGltZS4gIEluIHRoaXMKKyAgICBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGBgbG9jYWx0aW1lYGAgdG8gcHJlc3VtZQorICAgIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpIGlzIG9yIGlzIG5vdAorICAgIChyZXNwZWN0aXZlbHkpIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLiAgQSBuZWdhdGl2ZSB2YWx1ZSBmb3IKKyAgICAqaXNkc3QqIGNhdXNlcyB0aGUgYGBsb2NhbHRpbWVgYCB0byBhdHRlbXB0IHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lCisgICAgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpCisKKyAgIFJldHVybnMgYSBzdHJpbmcgc3VpdGFibGUgZm9yIGFuIDpyZmM6YDI4MjJgXCAtY29tcGxpYW50CisgICA6bWFpbGhlYWRlcjpgTWVzc2FnZS1JRGAgaGVhZGVyLiAgT3B0aW9uYWwgKmlkc3RyaW5nKiBpZiBnaXZlbiwgaXMgYSBzdHJpbmcKKyAgIHVzZWQgdG8gc3RyZW5ndGhlbiB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgbWVzc2FnZSBpZC4gIE9wdGlvbmFsICpkb21haW4qIGlmCisgICBnaXZlbiBwcm92aWRlcyB0aGUgcG9ydGlvbiBvZiB0aGUgbXNnaWQgYWZ0ZXIgdGhlICdAJy4gIFRoZSBkZWZhdWx0IGlzIHRoZQorICAgbG9jYWwgaG9zdG5hbWUuICBJdCBpcyBub3Qgbm9ybWFsbHkgbmVjZXNzYXJ5IHRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCwgYnV0CisgICBtYXkgYmUgdXNlZnVsIGNlcnRhaW4gY2FzZXMsIHN1Y2ggYXMgYSBjb25zdHJ1Y3RpbmcgZGlzdHJpYnV0ZWQgc3lzdGVtIHRoYXQKKyAgIHVzZXMgYSBjb25zaXN0ZW50IGRvbWFpbiBuYW1lIGFjcm9zcyBtdWx0aXBsZSBob3N0cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgIEFkZGVkIHRoZSAqZG9tYWluKiBrZXl3b3JkLgorCisKK1RoZSByZW1haW5pbmcgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgVGhlcmUKK2lzIG5vIG5lZWQgdG8gZGlyZWN0bHkgdXNlIHRoZXNlIHdpdGggdGhlIG5ldyBBUEksIHNpbmNlIHRoZSBwYXJzaW5nIGFuZAorZm9ybWF0dGluZyB0aGV5IHByb3ZpZGUgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBoZWFkZXIgcGFyc2luZyBtYWNoaW5lcnkKK29mIHRoZSBuZXcgQVBJLgogCiAKIC4uIGZ1bmN0aW9uOjogcXVvdGUoc3RyKQpAQCAtMTQxLDM2ICsxNzcsNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gZnVuY3Rpb246OiBsb2NhbHRpbWUoZHQ9Tm9uZSkKLQotICAgIFJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4gIElmIGNhbGxlZCB3aXRob3V0Ci0gICAgYXJndW1lbnRzLCByZXR1cm4gY3VycmVudCB0aW1lLiAgT3RoZXJ3aXNlICpkdCogYXJndW1lbnQgc2hvdWxkIGJlIGEKLSAgICA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxvY2FsIHRpbWUKLSAgICB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMgbmFpdmUgKHRoYXQKLSAgICBpcywgYGBkdC50emluZm9gYCBpcyBgYE5vbmVgYCksIGl0IGlzIGFzc3VtZWQgdG8gYmUgaW4gbG9jYWwgdGltZS4gIEluIHRoaXMKLSAgICBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGBgbG9jYWx0aW1lYGAgdG8gcHJlc3VtZQotICAgIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpIGlzIG9yIGlzIG5vdAotICAgIChyZXNwZWN0aXZlbHkpIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLiAgQSBuZWdhdGl2ZSB2YWx1ZSBmb3IKLSAgICAqaXNkc3QqIGNhdXNlcyB0aGUgYGBsb2NhbHRpbWVgYCB0byBhdHRlbXB0IHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lCi0gICAgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCi0KLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLQotCi0uLiBmdW5jdGlvbjo6IG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpCi0KLSAgIFJldHVybnMgYSBzdHJpbmcgc3VpdGFibGUgZm9yIGFuIDpyZmM6YDI4MjJgXCAtY29tcGxpYW50Ci0gICA6bWFpbGhlYWRlcjpgTWVzc2FnZS1JRGAgaGVhZGVyLiAgT3B0aW9uYWwgKmlkc3RyaW5nKiBpZiBnaXZlbiwgaXMgYSBzdHJpbmcKLSAgIHVzZWQgdG8gc3RyZW5ndGhlbiB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgbWVzc2FnZSBpZC4gIE9wdGlvbmFsICpkb21haW4qIGlmCi0gICBnaXZlbiBwcm92aWRlcyB0aGUgcG9ydGlvbiBvZiB0aGUgbXNnaWQgYWZ0ZXIgdGhlICdAJy4gIFRoZSBkZWZhdWx0IGlzIHRoZQotICAgbG9jYWwgaG9zdG5hbWUuICBJdCBpcyBub3Qgbm9ybWFsbHkgbmVjZXNzYXJ5IHRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCwgYnV0Ci0gICBtYXkgYmUgdXNlZnVsIGNlcnRhaW4gY2FzZXMsIHN1Y2ggYXMgYSBjb25zdHJ1Y3RpbmcgZGlzdHJpYnV0ZWQgc3lzdGVtIHRoYXQKLSAgIHVzZXMgYSBjb25zaXN0ZW50IGRvbWFpbiBuYW1lIGFjcm9zcyBtdWx0aXBsZSBob3N0cy4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIEFkZGVkIHRoZSAqZG9tYWluKiBrZXl3b3JkLgotCi0KIC4uIGZ1bmN0aW9uOjogZGVjb2RlX3JmYzIyMzEocykKIAogICAgRGVjb2RlIHRoZSBzdHJpbmcgKnMqIGFjY29yZGluZyB0byA6cmZjOmAyMjMxYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VudW0ucnN0IGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKaW5kZXggYTNkNWFmYy4uZWI4Yjk0YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW51bS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKQEAgLTIzLDkgKzIzLDEwIEBACiBNb2R1bGUgQ29udGVudHMKIC0tLS0tLS0tLS0tLS0tLQogCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHR3byBlbnVtZXJhdGlvbiBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHVuaXF1ZQotc2V0cyBvZiBuYW1lcyBhbmQgdmFsdWVzOiA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEludEVudW1gLiAgSXQgYWxzbyBkZWZpbmVzCi1vbmUgZGVjb3JhdG9yLCA6ZnVuYzpgdW5pcXVlYC4KK1RoaXMgbW9kdWxlIGRlZmluZXMgZm91ciBlbnVtZXJhdGlvbiBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHVuaXF1ZQorc2V0cyBvZiBuYW1lcyBhbmQgdmFsdWVzOiA6Y2xhc3M6YEVudW1gLCA6Y2xhc3M6YEludEVudW1gLCBhbmQKKzpjbGFzczpgSW50RmxhZ3NgLiAgSXQgYWxzbyBkZWZpbmVzIG9uZSBkZWNvcmF0b3IsIDpmdW5jOmB1bmlxdWVgLCBhbmQgb25lCitoZWxwZXIsIDpjbGFzczpgYXV0b2AuCiAKIC4uIGNsYXNzOjogRW51bQogCkBAIC0zNywxMCArMzgsMjcgQEAKICAgICBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBlbnVtZXJhdGVkIGNvbnN0YW50cyB0aGF0IGFyZSBhbHNvCiAgICAgc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAuCiAKKy4uIGNsYXNzOjogSW50RmxhZworCisgICAgQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMgdGhhdCBjYW4gYmUgY29tYmluZWQgdXNpbmcKKyAgICB0aGUgYml0d2lzZSBvcGVyYXRvcnMgd2l0aG91dCBsb3NpbmcgdGhlaXIgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzaGlwLgorICAgIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVycyBhcmUgYWxzbyBzdWJjbGFzc2VzIG9mIDpjbGFzczpgaW50YC4KKworLi4gY2xhc3M6OiBGbGFnCisKKyAgICBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBlbnVtZXJhdGVkIGNvbnN0YW50cyB0aGF0IGNhbiBiZSBjb21iaW5lZCB1c2luZworICAgIHRoZSBiaXR3aXNlIG9wZXJhdGlvbnMgd2l0aG91dCBsb3NpbmcgdGhlaXIgOmNsYXNzOmBGbGFnYCBtZW1iZXJzaGlwLgorCiAuLiBmdW5jdGlvbjo6IHVuaXF1ZQogCiAgICAgRW51bSBjbGFzcyBkZWNvcmF0b3IgdGhhdCBlbnN1cmVzIG9ubHkgb25lIG5hbWUgaXMgYm91bmQgdG8gYW55IG9uZSB2YWx1ZS4KIAorLi4gY2xhc3M6OiBhdXRvCisKKyAgICBJbnN0YW5jZXMgYXJlIHJlcGxhY2VkIHdpdGggYW4gYXBwcm9wcmlhdGUgdmFsdWUgZm9yIEVudW0gbWVtYmVycy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42ICBgYEZsYWdgYCwgYGBJbnRGbGFnYGAsIGBgYXV0b2BgCisKIAogQ3JlYXRpbmcgYW4gRW51bQogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTcsNiArNzUsMTMgQEAKICAgICAuLi4gICAgIGJsdWUgPSAzCiAgICAgLi4uCiAKKy4uIG5vdGU6OiBFbnVtIG1lbWJlciB2YWx1ZXMKKworICAgIE1lbWJlciB2YWx1ZXMgY2FuIGJlIGFueXRoaW5nOiA6Y2xhc3M6YGludGAsIDpjbGFzczpgc3RyYCwgZXRjLi4gIElmCisgICAgdGhlIGV4YWN0IHZhbHVlIGlzIHVuaW1wb3J0YW50IHlvdSBtYXkgdXNlIDpjbGFzczpgYXV0b2AgaW5zdGFuY2VzIGFuZCBhbgorICAgIGFwcHJvcHJpYXRlIHZhbHVlIHdpbGwgYmUgY2hvc2VuIGZvciB5b3UuICBDYXJlIG11c3QgYmUgdGFrZW4gaWYgeW91IG1peAorICAgIDpjbGFzczpgYXV0b2Agd2l0aCBvdGhlciB2YWx1ZXMuCisKIC4uIG5vdGU6OiBOb21lbmNsYXR1cmUKIAogICAtIFRoZSBjbGFzcyA6Y2xhc3M6YENvbG9yYCBpcyBhbiAqZW51bWVyYXRpb24qIChvciAqZW51bSopCkBAIC0yMTIsNiArMjM3LDQyIEBACiAgICAgVmFsdWVFcnJvcjogZHVwbGljYXRlIHZhbHVlcyBmb3VuZCBpbiA8ZW51bSAnTWlzdGFrZSc+OiBmb3VyIC0+IHRocmVlCiAKIAorVXNpbmcgYXV0b21hdGljIHZhbHVlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgZXhhY3QgdmFsdWUgaXMgdW5pbXBvcnRhbnQgeW91IGNhbiB1c2UgOmNsYXNzOmBhdXRvYDo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBhdXRvCisgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBsaXN0KENvbG9yKQorICAgIFs8Q29sb3IucmVkOiAxPiwgPENvbG9yLmJsdWU6IDI+LCA8Q29sb3IuZ3JlZW46IDM+XQorCitUaGUgdmFsdWVzIGFyZSBjaG9zZW4gYnkgOmZ1bmM6YF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2AsIHdoaWNoIGNhbiBiZQorb3ZlcnJpZGRlbjo6CisKKyAgICA+Pj4gY2xhc3MgQXV0b05hbWUoRW51bSk6CisgICAgLi4uICAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXMpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBuYW1lCisgICAgLi4uCisgICAgPj4+IGNsYXNzIE9yZGluYWwoQXV0b05hbWUpOgorICAgIC4uLiAgICAgbm9ydGggPSBhdXRvKCkKKyAgICAuLi4gICAgIHNvdXRoID0gYXV0bygpCisgICAgLi4uICAgICBlYXN0ID0gYXV0bygpCisgICAgLi4uICAgICB3ZXN0ID0gYXV0bygpCisgICAgLi4uCisgICAgPj4+IGxpc3QoT3JkaW5hbCkKKyAgICBbPE9yZGluYWwubm9ydGg6ICdub3J0aCc+LCA8T3JkaW5hbC5zb3V0aDogJ3NvdXRoJz4sIDxPcmRpbmFsLmVhc3Q6ICdlYXN0Jz4sIDxPcmRpbmFsLndlc3Q6ICd3ZXN0Jz5dCisKKy4uIG5vdGU6OgorCisgICAgVGhlIGdvYWwgb2YgdGhlIGRlZmF1bHQgOm1ldGg6YF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2AgbWV0aG9kcyBpcyB0byBwcm92aWRlCisgICAgdGhlIG5leHQgOmNsYXNzOmBpbnRgIGluIHNlcXVlbmNlIHdpdGggdGhlIGxhc3QgOmNsYXNzOmBpbnRgIHByb3ZpZGVkLCBidXQKKyAgICB0aGUgd2F5IGl0IGRvZXMgdGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYW5kIG1heSBjaGFuZ2UuCisKIEl0ZXJhdGlvbgogLS0tLS0tLS0tCiAKQEAgLTI1Nyw3ICszMTgsNyBAQAogICAgID4+PiBDb2xvci5yZWQgPCBDb2xvci5ibHVlCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgICBUeXBlRXJyb3I6IHVub3JkZXJhYmxlIHR5cGVzOiBDb2xvcigpIDwgQ29sb3IoKQorICAgIFR5cGVFcnJvcjogJzwnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJ0NvbG9yJyBhbmQgJ0NvbG9yJwogCiBFcXVhbGl0eSBjb21wYXJpc29ucyBhcmUgZGVmaW5lZCB0aG91Z2g6OgogCkBAIC00NzgsNyArNTM5LDcgQEAKIEludEVudW0KIF5eXl5eXl4KIAotQSB2YXJpYXRpb24gb2YgOmNsYXNzOmBFbnVtYCBpcyBwcm92aWRlZCB3aGljaCBpcyBhbHNvIGEgc3ViY2xhc3Mgb2YKK1RoZSBmaXJzdCB2YXJpYXRpb24gb2YgOmNsYXNzOmBFbnVtYCB0aGF0IGlzIHByb3ZpZGVkIGlzIGFsc28gYSBzdWJjbGFzcyBvZgogOmNsYXNzOmBpbnRgLiAgTWVtYmVycyBvZiBhbiA6Y2xhc3M6YEludEVudW1gIGNhbiBiZSBjb21wYXJlZCB0byBpbnRlZ2VyczsKIGJ5IGV4dGVuc2lvbiwgaW50ZWdlciBlbnVtZXJhdGlvbnMgb2YgZGlmZmVyZW50IHR5cGVzIGNhbiBhbHNvIGJlIGNvbXBhcmVkCiB0byBlYWNoIG90aGVyOjoKQEAgLTUyMSwxMyArNTgyLDEyMiBAQAogICAgID4+PiBbaSBmb3IgaSBpbiByYW5nZShTaGFwZS5zcXVhcmUpXQogICAgIFswLCAxXQogCi1Gb3IgdGhlIHZhc3QgbWFqb3JpdHkgb2YgY29kZSwgOmNsYXNzOmBFbnVtYCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCwKLXNpbmNlIDpjbGFzczpgSW50RW51bWAgYnJlYWtzIHNvbWUgc2VtYW50aWMgcHJvbWlzZXMgb2YgYW4gZW51bWVyYXRpb24gKGJ5Ci1iZWluZyBjb21wYXJhYmxlIHRvIGludGVnZXJzLCBhbmQgdGh1cyBieSB0cmFuc2l0aXZpdHkgdG8gb3RoZXIKLXVucmVsYXRlZCBlbnVtZXJhdGlvbnMpLiAgSXQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBzcGVjaWFsIGNhc2VzIHdoZXJlCi10aGVyZSdzIG5vIG90aGVyIGNob2ljZTsgZm9yIGV4YW1wbGUsIHdoZW4gaW50ZWdlciBjb25zdGFudHMgYXJlCi1yZXBsYWNlZCB3aXRoIGVudW1lcmF0aW9ucyBhbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQgd2l0aCBjb2RlCi10aGF0IHN0aWxsIGV4cGVjdHMgaW50ZWdlcnMuCisKK0ludEZsYWcKK15eXl5eXl4KKworVGhlIG5leHQgdmFyaWF0aW9uIG9mIDpjbGFzczpgRW51bWAgcHJvdmlkZWQsIDpjbGFzczpgSW50RmxhZ2AsIGlzIGFsc28gYmFzZWQKK29uIDpjbGFzczpgaW50YC4gIFRoZSBkaWZmZXJlbmNlIGJlaW5nIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVycyBjYW4gYmUgY29tYmluZWQKK3VzaW5nIHRoZSBiaXR3aXNlIG9wZXJhdG9ycyAoJiwgXHwsIF4sIH4pIGFuZCB0aGUgcmVzdWx0IGlzIHN0aWxsIGFuCis6Y2xhc3M6YEludEZsYWdgIG1lbWJlci4gIEhvd2V2ZXIsIGFzIHRoZSBuYW1lIGltcGxpZXMsIDpjbGFzczpgSW50RmxhZ2AKK21lbWJlcnMgYWxzbyBzdWJjbGFzcyA6Y2xhc3M6YGludGAgYW5kIGNhbiBiZSB1c2VkIHdoZXJldmVyIGFuIDpjbGFzczpgaW50YCBpcwordXNlZC4gIEFueSBvcGVyYXRpb24gb24gYW4gOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXIgYmVzaWRlcyB0aGUgYml0LXdpc2UKK29wZXJhdGlvbnMgd2lsbCBsb3NlIHRoZSA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnNoaXAuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitTYW1wbGUgOmNsYXNzOmBJbnRGbGFnYCBjbGFzczo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBJbnRGbGFnCisgICAgPj4+IGNsYXNzIFBlcm0oSW50RmxhZyk6CisgICAgLi4uICAgICBSID0gNAorICAgIC4uLiAgICAgVyA9IDIKKyAgICAuLi4gICAgIFggPSAxCisgICAgLi4uCisgICAgPj4+IFBlcm0uUiB8IFBlcm0uVworICAgIDxQZXJtLlJ8VzogNj4KKyAgICA+Pj4gUGVybS5SICsgUGVybS5XCisgICAgNgorICAgID4+PiBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgID4+PiBQZXJtLlIgaW4gUlcKKyAgICBUcnVlCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gbmFtZSB0aGUgY29tYmluYXRpb25zOjoKKworICAgID4+PiBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgIC4uLiAgICAgUiA9IDQKKyAgICAuLi4gICAgIFcgPSAyCisgICAgLi4uICAgICBYID0gMQorICAgIC4uLiAgICAgUldYID0gNworICAgID4+PiBQZXJtLlJXWAorICAgIDxQZXJtLlJXWDogNz4KKyAgICA+Pj4gflBlcm0uUldYCisgICAgPFBlcm0uLTg6IC04PgorCitBbm90aGVyIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gOmNsYXNzOmBJbnRGbGFnYCBhbmQgOmNsYXNzOmBFbnVtYCBpcyB0aGF0CitpZiBubyBmbGFncyBhcmUgc2V0ICh0aGUgdmFsdWUgaXMgMCksIGl0cyBib29sZWFuIGV2YWx1YXRpb24gaXMgOmRhdGE6YEZhbHNlYDo6CisKKyAgICA+Pj4gUGVybS5SICYgUGVybS5YCisgICAgPFBlcm0uMDogMD4KKyAgICA+Pj4gYm9vbChQZXJtLlIgJiBQZXJtLlgpCisgICAgRmFsc2UKKworQmVjYXVzZSA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgYXJlIGFsc28gc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAgdGhleSBjYW4KK2JlIGNvbWJpbmVkIHdpdGggdGhlbTo6CisKKyAgICA+Pj4gUGVybS5YIHwgOAorICAgIDxQZXJtLjh8WDogOT4KKworCitGbGFnCiteXl5eCisKK1RoZSBsYXN0IHZhcmlhdGlvbiBpcyA6Y2xhc3M6YEZsYWdgLiAgTGlrZSA6Y2xhc3M6YEludEZsYWdgLCA6Y2xhc3M6YEZsYWdgCittZW1iZXJzIGNhbiBiZSBjb21iaW5lZCB1c2luZyB0aGUgYml0d2lzZSBvcGVyYXRvcnMgKCYsIFx8LCBeLCB+KS4gIFVubGlrZQorOmNsYXNzOmBJbnRGbGFnYCwgdGhleSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCwgbm9yIGNvbXBhcmVkIGFnYWluc3QsIGFueQorb3RoZXIgOmNsYXNzOmBGbGFnYCBlbnVtZXJhdGlvbiwgbm9yIDpjbGFzczpgaW50YC4gIFdoaWxlIGl0IGlzIHBvc3NpYmxlIHRvCitzcGVjaWZ5IHRoZSB2YWx1ZXMgZGlyZWN0bHkgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIDpjbGFzczpgYXV0b2AgYXMgdGhlCit2YWx1ZSBhbmQgbGV0IDpjbGFzczpgRmxhZ2Agc2VsZWN0IGFuIGFwcHJvcHJpYXRlIHZhbHVlLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworTGlrZSA6Y2xhc3M6YEludEZsYWdgLCBpZiBhIGNvbWJpbmF0aW9uIG9mIDpjbGFzczpgRmxhZ2AgbWVtYmVycyByZXN1bHRzIGluIG5vCitmbGFncyBiZWluZyBzZXQsIHRoZSBib29sZWFuIGV2YWx1YXRpb24gaXMgOmRhdGE6YEZhbHNlYDo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBGbGFnCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5yZWQgJiBDb2xvci5ncmVlbgorICAgIDxDb2xvci4wOiAwPgorICAgID4+PiBib29sKENvbG9yLnJlZCAmIENvbG9yLmdyZWVuKQorICAgIEZhbHNlCisKK0luZGl2aWR1YWwgZmxhZ3Mgc2hvdWxkIGhhdmUgdmFsdWVzIHRoYXQgYXJlIHBvd2VycyBvZiB0d28gKDEsIDIsIDQsIDgsIC4uLiksCit3aGlsZSBjb21iaW5hdGlvbnMgb2YgZmxhZ3Mgd29uJ3Q6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLiAgICAgd2hpdGUgPSByZWQgfCBibHVlIHwgZ3JlZW4KKyAgICAuLi4KKworR2l2aW5nIGEgbmFtZSB0byB0aGUgIm5vIGZsYWdzIHNldCIgY29uZGl0aW9uIGRvZXMgbm90IGNoYW5nZSBpdHMgYm9vbGVhbgordmFsdWU6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgYmxhY2sgPSAwCisgICAgLi4uICAgICByZWQgPSBhdXRvKCkKKyAgICAuLi4gICAgIGJsdWUgPSBhdXRvKCkKKyAgICAuLi4gICAgIGdyZWVuID0gYXV0bygpCisgICAgLi4uCisgICAgPj4+IENvbG9yLmJsYWNrCisgICAgPENvbG9yLmJsYWNrOiAwPgorICAgID4+PiBib29sKENvbG9yLmJsYWNrKQorICAgIEZhbHNlCisKKy4uIG5vdGU6OgorCisgICAgRm9yIHRoZSBtYWpvcml0eSBvZiBuZXcgY29kZSwgOmNsYXNzOmBFbnVtYCBhbmQgOmNsYXNzOmBGbGFnYCBhcmUgc3Ryb25nbHkKKyAgICByZWNvbW1lbmRlZCwgc2luY2UgOmNsYXNzOmBJbnRFbnVtYCBhbmQgOmNsYXNzOmBJbnRGbGFnYCBicmVhayBzb21lCisgICAgc2VtYW50aWMgcHJvbWlzZXMgb2YgYW4gZW51bWVyYXRpb24gKGJ5IGJlaW5nIGNvbXBhcmFibGUgdG8gaW50ZWdlcnMsIGFuZAorICAgIHRodXMgYnkgdHJhbnNpdGl2aXR5IHRvIG90aGVyIHVucmVsYXRlZCBlbnVtZXJhdGlvbnMpLiAgOmNsYXNzOmBJbnRFbnVtYAorICAgIGFuZCA6Y2xhc3M6YEludEZsYWdgIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY2FzZXMgd2hlcmUgOmNsYXNzOmBFbnVtYCBhbmQKKyAgICA6Y2xhc3M6YEZsYWdgIHdpbGwgbm90IGRvOyBmb3IgZXhhbXBsZSwgd2hlbiBpbnRlZ2VyIGNvbnN0YW50cyBhcmUgcmVwbGFjZWQKKyAgICB3aXRoIGVudW1lcmF0aW9ucywgb3IgZm9yIGludGVyb3BlcmFiaWxpdHkgd2l0aCBvdGhlciBzeXN0ZW1zLgogCiAKIE90aGVycwpAQCAtNTU4LDcgKzcyOCw4IEBACiA0LiAlLXN0eWxlIGZvcm1hdHRpbmc6ICBgJXNgIGFuZCBgJXJgIGNhbGwgdGhlIDpjbGFzczpgRW51bWAgY2xhc3MncwogICAgOm1ldGg6YF9fc3RyX19gIGFuZCA6bWV0aDpgX19yZXByX19gIHJlc3BlY3RpdmVseTsgb3RoZXIgY29kZXMgKHN1Y2ggYXMKICAgIGAlaWAgb3IgYCVoYCBmb3IgSW50RW51bSkgdHJlYXQgdGhlIGVudW0gbWVtYmVyIGFzIGl0cyBtaXhlZC1pbiB0eXBlLgotNS4gOm1ldGg6YHN0ci5mb3JtYXRgIChvciA6ZnVuYzpgZm9ybWF0YCkgd2lsbCB1c2UgdGhlIG1peGVkLWluCis1LiA6cmVmOmBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCwgOm1ldGg6YHN0ci5mb3JtYXRgLAorICAgYW5kIDpmdW5jOmBmb3JtYXRgIHdpbGwgdXNlIHRoZSBtaXhlZC1pbgogICAgdHlwZSdzIDptZXRoOmBfX2Zvcm1hdF9fYC4gIElmIHRoZSA6Y2xhc3M6YEVudW1gIGNsYXNzJ3MgOmZ1bmM6YHN0cmAgb3IKICAgIDpmdW5jOmByZXByYCBpcyBkZXNpcmVkLCB1c2UgdGhlIGAhc2Agb3IgYCFyYCBmb3JtYXQgY29kZXMuCiAKQEAgLTU2NiwxOCArNzM3LDg3IEBACiBJbnRlcmVzdGluZyBleGFtcGxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hpbGUgOmNsYXNzOmBFbnVtYCBhbmQgOmNsYXNzOmBJbnRFbnVtYCBhcmUgZXhwZWN0ZWQgdG8gY292ZXIgdGhlIG1ham9yaXR5IG9mCi11c2UtY2FzZXMsIHRoZXkgY2Fubm90IGNvdmVyIHRoZW0gYWxsLiAgSGVyZSBhcmUgcmVjaXBlcyBmb3Igc29tZSBkaWZmZXJlbnQKLXR5cGVzIG9mIGVudW1lcmF0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGRpcmVjdGx5LCBvciBhcyBleGFtcGxlcyBmb3IgY3JlYXRpbmcKLW9uZSdzIG93bi4KK1doaWxlIDpjbGFzczpgRW51bWAsIDpjbGFzczpgSW50RW51bWAsIDpjbGFzczpgSW50RmxhZ2AsIGFuZCA6Y2xhc3M6YEZsYWdgIGFyZQorZXhwZWN0ZWQgdG8gY292ZXIgdGhlIG1ham9yaXR5IG9mIHVzZS1jYXNlcywgdGhleSBjYW5ub3QgY292ZXIgdGhlbSBhbGwuICBIZXJlCithcmUgcmVjaXBlcyBmb3Igc29tZSBkaWZmZXJlbnQgdHlwZXMgb2YgZW51bWVyYXRpb25zIHRoYXQgY2FuIGJlIHVzZWQgZGlyZWN0bHksCitvciBhcyBleGFtcGxlcyBmb3IgY3JlYXRpbmcgb25lJ3Mgb3duLgogCiAKLUF1dG9OdW1iZXIKLV5eXl5eXl5eXl4KK09taXR0aW5nIHZhbHVlcworXl5eXl5eXl5eXl5eXl5eCiAKLUF2b2lkcyBoYXZpbmcgdG8gc3BlY2lmeSB0aGUgdmFsdWUgZm9yIGVhY2ggZW51bWVyYXRpb24gbWVtYmVyOjoKK0luIG1hbnkgdXNlLWNhc2VzIG9uZSBkb2Vzbid0IGNhcmUgd2hhdCB0aGUgYWN0dWFsIHZhbHVlIG9mIGFuIGVudW1lcmF0aW9uCitpcy4gVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBkZWZpbmUgdGhpcyB0eXBlIG9mIHNpbXBsZSBlbnVtZXJhdGlvbjoKIAotICAgID4+PiBjbGFzcyBBdXRvTnVtYmVyKEVudW0pOgorLSB1c2UgaW5zdGFuY2VzIG9mIDpjbGFzczpgYXV0b2AgZm9yIHRoZSB2YWx1ZQorLSB1c2UgaW5zdGFuY2VzIG9mIDpjbGFzczpgb2JqZWN0YCBhcyB0aGUgdmFsdWUKKy0gdXNlIGEgZGVzY3JpcHRpdmUgc3RyaW5nIGFzIHRoZSB2YWx1ZQorLSB1c2UgYSB0dXBsZSBhcyB0aGUgdmFsdWUgYW5kIGEgY3VzdG9tIDptZXRoOmBfX25ld19fYCB0byByZXBsYWNlIHRoZQorICB0dXBsZSB3aXRoIGFuIDpjbGFzczpgaW50YCB2YWx1ZQorCitVc2luZyBhbnkgb2YgdGhlc2UgbWV0aG9kcyBzaWduaWZpZXMgdG8gdGhlIHVzZXIgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIG5vdAoraW1wb3J0YW50LCBhbmQgYWxzbyBlbmFibGVzIG9uZSB0byBhZGQsIHJlbW92ZSwgb3IgcmVvcmRlciBtZW1iZXJzIHdpdGhvdXQKK2hhdmluZyB0byByZW51bWJlciB0aGUgcmVtYWluaW5nIG1lbWJlcnMuCisKK1doaWNoZXZlciBtZXRob2QgeW91IGNob29zZSwgeW91IHNob3VsZCBwcm92aWRlIGEgOm1ldGg6YHJlcHJgIHRoYXQgYWxzbyBoaWRlcwordGhlICh1bmltcG9ydGFudCkgdmFsdWU6OgorCisgICAgPj4+IGNsYXNzIE5vVmFsdWUoRW51bSk6CisgICAgLi4uICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgLi4uICAgICAgICAgcmV0dXJuICc8JXMuJXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lKQorICAgIC4uLgorCisKK1VzaW5nIDpjbGFzczpgYXV0b2AKKyIiIiIiIiIiIiIiIiIiIiIiIiIKKworVXNpbmcgOmNsYXNzOmBvYmplY3RgIHdvdWxkIGxvb2sgbGlrZTo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoTm9WYWx1ZSk6CisgICAgLi4uICAgICByZWQgPSBhdXRvKCkKKyAgICAuLi4gICAgIGJsdWUgPSBhdXRvKCkKKyAgICAuLi4gICAgIGdyZWVuID0gYXV0bygpCisgICAgLi4uCisgICAgPj4+IENvbG9yLmdyZWVuCisgICAgPENvbG9yLmdyZWVuPgorCisKK1VzaW5nIDpjbGFzczpgb2JqZWN0YAorIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIDpjbGFzczpgb2JqZWN0YCB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKE5vVmFsdWUpOgorICAgIC4uLiAgICAgcmVkID0gb2JqZWN0KCkKKyAgICAuLi4gICAgIGdyZWVuID0gb2JqZWN0KCkKKyAgICAuLi4gICAgIGJsdWUgPSBvYmplY3QoKQorICAgIC4uLgorICAgID4+PiBDb2xvci5ncmVlbgorICAgIDxDb2xvci5ncmVlbj4KKworCitVc2luZyBhIGRlc2NyaXB0aXZlIHN0cmluZworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworVXNpbmcgYSBzdHJpbmcgYXMgdGhlIHZhbHVlIHdvdWxkIGxvb2sgbGlrZTo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoTm9WYWx1ZSk6CisgICAgLi4uICAgICByZWQgPSAnc3RvcCcKKyAgICAuLi4gICAgIGdyZWVuID0gJ2dvJworICAgIC4uLiAgICAgYmx1ZSA9ICd0b28gZmFzdCEnCisgICAgLi4uCisgICAgPj4+IENvbG9yLmdyZWVuCisgICAgPENvbG9yLmdyZWVuPgorICAgID4+PiBDb2xvci5ncmVlbi52YWx1ZQorICAgICdnbycKKworCitVc2luZyBhIGN1c3RvbSA6bWV0aDpgX19uZXdfX2AKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyBhbiBhdXRvLW51bWJlcmluZyA6bWV0aDpgX19uZXdfX2Agd291bGQgbG9vayBsaWtlOjoKKworICAgID4+PiBjbGFzcyBBdXRvTnVtYmVyKE5vVmFsdWUpOgogICAgIC4uLiAgICAgZGVmIF9fbmV3X18oY2xzKToKICAgICAuLi4gICAgICAgICB2YWx1ZSA9IGxlbihjbHMuX19tZW1iZXJzX18pICsgMQogICAgIC4uLiAgICAgICAgIG9iaiA9IG9iamVjdC5fX25ld19fKGNscykKQEAgLTU4OSw4ICs4MjksMTEgQEAKICAgICAuLi4gICAgIGdyZWVuID0gKCkKICAgICAuLi4gICAgIGJsdWUgPSAoKQogICAgIC4uLgotICAgID4+PiBDb2xvci5ncmVlbi52YWx1ZSA9PSAyCi0gICAgVHJ1ZQorICAgID4+PiBDb2xvci5ncmVlbgorICAgIDxDb2xvci5ncmVlbj4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4udmFsdWUKKyAgICAyCisKIAogLi4gbm90ZTo6CiAKQEAgLTczMCwxMCArOTczLDYwIEBACiBGaW5lciBQb2ludHMKIF5eXl5eXl5eXl5eXgogCi06Y2xhc3M6YEVudW1gIG1lbWJlcnMgYXJlIGluc3RhbmNlcyBvZiBhbiA6Y2xhc3M6YEVudW1gIGNsYXNzLCBhbmQgZXZlbgotdGhvdWdoIHRoZXkgYXJlIGFjY2Vzc2libGUgYXMgYEVudW1DbGFzcy5tZW1iZXJgLCB0aGV5IHNob3VsZCBub3QgYmUgYWNjZXNzZWQKLWRpcmVjdGx5IGZyb20gdGhlIG1lbWJlciBhcyB0aGF0IGxvb2t1cCBtYXkgZmFpbCBvciwgd29yc2UsIHJldHVybiBzb21ldGhpbmcKLWJlc2lkZXMgdGhlIDpjbGFzczpgRW51bWAgbWVtYmVyIHlvdSBsb29raW5nIGZvcjo6CitTdXBwb3J0ZWQgYGBfX2R1bmRlcl9fYGAgbmFtZXMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCis6YXR0cjpgX19tZW1iZXJzX19gIGlzIGFuIDpjbGFzczpgT3JkZXJlZERpY3RgIG9mIGBgbWVtYmVyX25hbWVgYDpgYG1lbWJlcmBgCitpdGVtcy4gIEl0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIHRoZSBjbGFzcy4KKworOm1ldGg6YF9fbmV3X19gLCBpZiBzcGVjaWZpZWQsIG11c3QgY3JlYXRlIGFuZCByZXR1cm4gdGhlIGVudW0gbWVtYmVyczsgaXQgaXMKK2Fsc28gYSB2ZXJ5IGdvb2QgaWRlYSB0byBzZXQgdGhlIG1lbWJlcidzIDphdHRyOmBfdmFsdWVfYCBhcHByb3ByaWF0ZWx5LiAgT25jZQorYWxsIHRoZSBtZW1iZXJzIGFyZSBjcmVhdGVkIGl0IGlzIG5vIGxvbmdlciB1c2VkLgorCisKK1N1cHBvcnRlZCBgYF9zdW5kZXJfYGAgbmFtZXMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworLSBgYF9uYW1lX2BgIC0tIG5hbWUgb2YgdGhlIG1lbWJlcgorLSBgYF92YWx1ZV9gYCAtLSB2YWx1ZSBvZiB0aGUgbWVtYmVyOyBjYW4gYmUgc2V0IC8gbW9kaWZpZWQgaW4gYGBfX25ld19fYGAKKworLSBgYF9taXNzaW5nX2BgIC0tIGEgbG9va3VwIGZ1bmN0aW9uIHVzZWQgd2hlbiBhIHZhbHVlIGlzIG5vdCBmb3VuZDsgbWF5IGJlCisgIG92ZXJyaWRkZW4KKy0gYGBfb3JkZXJfYGAgLS0gdXNlZCBpbiBQeXRob24gMi8zIGNvZGUgdG8gZW5zdXJlIG1lbWJlciBvcmRlciBpcyBjb25zaXN0ZW50CisgIChjbGFzcyBhdHRyaWJ1dGUsIHJlbW92ZWQgZHVyaW5nIGNsYXNzIGNyZWF0aW9uKQorLSBgYF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2BgIC0tIHVzZWQgYnkgdGhlIGBGdW5jdGlvbmFsIEFQSWBfIGFuZCBieQorICA6Y2xhc3M6YGF1dG9gIHRvIGdldCBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgYW4gZW51bSBtZW1iZXI7IG1heSBiZQorICBvdmVycmlkZGVuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBgYF9taXNzaW5nX2BgLCBgYF9vcmRlcl9gYCwgYGBfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gYAorCitUbyBoZWxwIGtlZXAgUHl0aG9uIDIgLyBQeXRob24gMyBjb2RlIGluIHN5bmMgYW4gOmF0dHI6YF9vcmRlcl9gIGF0dHJpYnV0ZSBjYW4KK2JlIHByb3ZpZGVkLiAgSXQgd2lsbCBiZSBjaGVja2VkIGFnYWluc3QgdGhlIGFjdHVhbCBvcmRlciBvZiB0aGUgZW51bWVyYXRpb24KK2FuZCByYWlzZSBhbiBlcnJvciBpZiB0aGUgdHdvIGRvIG5vdCBtYXRjaDo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoRW51bSk6CisgICAgLi4uICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgIC4uLiAgICAgcmVkID0gMQorICAgIC4uLiAgICAgYmx1ZSA9IDMKKyAgICAuLi4gICAgIGdyZWVuID0gMgorICAgIC4uLgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBUeXBlRXJyb3I6IG1lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfCisKKy4uIG5vdGU6OgorCisgICAgSW4gUHl0aG9uIDIgY29kZSB0aGUgOmF0dHI6YF9vcmRlcl9gIGF0dHJpYnV0ZSBpcyBuZWNlc3NhcnkgYXMgZGVmaW5pdGlvbgorICAgIG9yZGVyIGlzIGxvc3QgYmVmb3JlIGl0IGNhbiBiZSByZWNvcmRlZC4KKworYGBFbnVtYGAgbWVtYmVyIHR5cGUKKyIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKzpjbGFzczpgRW51bWAgbWVtYmVycyBhcmUgaW5zdGFuY2VzIG9mIHRoZWlyIDpjbGFzczpgRW51bWAgY2xhc3MsIGFuZCBhcmUKK25vcm1hbGx5IGFjY2Vzc2VkIGFzIGBgRW51bUNsYXNzLm1lbWJlcmBgLiAgVW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzIHRoZXkKK2NhbiBhbHNvIGJlIGFjY2Vzc2VkIGFzIGBgRW51bUNsYXNzLm1lbWJlci5tZW1iZXJgYCwgYnV0IHlvdSBzaG91bGQgbmV2ZXIgZG8KK3RoaXMgYXMgdGhhdCBsb29rdXAgbWF5IGZhaWwgb3IsIHdvcnNlLCByZXR1cm4gc29tZXRoaW5nIGJlc2lkZXMgdGhlCis6Y2xhc3M6YEVudW1gIG1lbWJlciB5b3UgYXJlIGxvb2tpbmcgZm9yOjoKIAogICAgID4+PiBjbGFzcyBGaWVsZFR5cGVzKEVudW0pOgogICAgIC4uLiAgICAgbmFtZSA9IDAKQEAgLTc0Nyw3ICsxMDQwLDI0IEBACiAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAKLVRoZSA6YXR0cjpgX19tZW1iZXJzX19gIGF0dHJpYnV0ZSBpcyBvbmx5IGF2YWlsYWJsZSBvbiB0aGUgY2xhc3MuCisKK0Jvb2xlYW4gdmFsdWUgb2YgYGBFbnVtYGAgY2xhc3NlcyBhbmQgbWVtYmVycworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKzpjbGFzczpgRW51bWAgbWVtYmVycyB0aGF0IGFyZSBtaXhlZCB3aXRoIG5vbi06Y2xhc3M6YEVudW1gIHR5cGVzIChzdWNoIGFzCis6Y2xhc3M6YGludGAsIDpjbGFzczpgc3RyYCwgZXRjLikgYXJlIGV2YWx1YXRlZCBhY2NvcmRpbmcgdG8gdGhlIG1peGVkLWluCit0eXBlJ3MgcnVsZXM7IG90aGVyd2lzZSwgYWxsIG1lbWJlcnMgZXZhbHVhdGUgYXMgOmRhdGE6YFRydWVgLiAgVG8gbWFrZSB5b3VyCitvd24gRW51bSdzIGJvb2xlYW4gZXZhbHVhdGlvbiBkZXBlbmQgb24gdGhlIG1lbWJlcidzIHZhbHVlIGFkZCB0aGUgZm9sbG93aW5nIHRvCit5b3VyIGNsYXNzOjoKKworICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi52YWx1ZSkKKworOmNsYXNzOmBFbnVtYCBjbGFzc2VzIGFsd2F5cyBldmFsdWF0ZSBhcyA6ZGF0YTpgVHJ1ZWAuCisKKworYGBFbnVtYGAgY2xhc3NlcyB3aXRoIG1ldGhvZHMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIElmIHlvdSBnaXZlIHlvdXIgOmNsYXNzOmBFbnVtYCBzdWJjbGFzcyBleHRyYSBtZXRob2RzLCBsaWtlIHRoZSBgUGxhbmV0YF8KIGNsYXNzIGFib3ZlLCB0aG9zZSBtZXRob2RzIHdpbGwgc2hvdyB1cCBpbiBhIDpmdW5jOmBkaXJgIG9mIHRoZSBtZW1iZXIsCkBAIC03NTgsMTEgKzEwNjgsMyBAQAogICAgID4+PiBkaXIoUGxhbmV0LkVBUlRIKQogICAgIFsnX19jbGFzc19fJywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsICduYW1lJywgJ3N1cmZhY2VfZ3Jhdml0eScsICd2YWx1ZSddCiAKLVRoZSA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHdpbGwgb25seSBiZSB1c2VkIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlCi06Y2xhc3M6YEVudW1gIG1lbWJlcnMgLS0gYWZ0ZXIgdGhhdCBpdCBpcyByZXBsYWNlZC4gIEFueSBjdXN0b20gOm1ldGg6YF9fbmV3X19gCi1tZXRob2QgbXVzdCBjcmVhdGUgdGhlIG9iamVjdCBhbmQgc2V0IHRoZSA6YXR0cjpgX3ZhbHVlX2AgYXR0cmlidXRlCi1hcHByb3ByaWF0ZWx5LgotCi1JZiB5b3Ugd2lzaCB0byBjaGFuZ2UgaG93IDpjbGFzczpgRW51bWAgbWVtYmVycyBhcmUgbG9va2VkIHVwIHlvdSBzaG91bGQgZWl0aGVyCi13cml0ZSBhIGhlbHBlciBmdW5jdGlvbiBvciBhIDpmdW5jOmBjbGFzc21ldGhvZGAgZm9yIHRoZSA6Y2xhc3M6YEVudW1gCi1zdWJjbGFzcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKaW5kZXggNWE3MTkzMy4uYTQyOGY1MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKQEAgLTE3MCw4ICsxNzAsOSBAQAogCiAuLiBleGNlcHRpb246OiBJbXBvcnRFcnJvcgogCi0gICBSYWlzZWQgd2hlbiBhbiA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgZmFpbHMgdG8gZmluZCB0aGUgbW9kdWxlIGRlZmluaXRpb24KLSAgIG9yIHdoZW4gYSBgYGZyb20gLi4uIGltcG9ydGBgIGZhaWxzIHRvIGZpbmQgYSBuYW1lIHRoYXQgaXMgdG8gYmUgaW1wb3J0ZWQuCisgICBSYWlzZWQgd2hlbiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGhhcyB0cm91YmxlcyB0cnlpbmcgdG8KKyAgIGxvYWQgYSBtb2R1bGUuICBBbHNvIHJhaXNlZCB3aGVuIHRoZSAiZnJvbSBsaXN0IiBpbiBgYGZyb20gLi4uIGltcG9ydGBgCisgICBoYXMgYSBuYW1lIHRoYXQgY2Fubm90IGJlIGZvdW5kLgogCiAgICBUaGUgOmF0dHI6YG5hbWVgIGFuZCA6YXR0cjpgcGF0aGAgYXR0cmlidXRlcyBjYW4gYmUgc2V0IHVzaW5nIGtleXdvcmQtb25seQogICAgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4gV2hlbiBzZXQgdGhleSByZXByZXNlbnQgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZQpAQCAtMTgxLDYgKzE4MiwxNCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzLgogCisuLiBleGNlcHRpb246OiBNb2R1bGVOb3RGb3VuZEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgSW1wb3J0RXJyb3JgIHdoaWNoIGlzIHJhaXNlZCBieSA6a2V5d29yZDpgaW1wb3J0YAorICAgd2hlbiBhIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZC4gIEl0IGlzIGFsc28gcmFpc2VkIHdoZW4gYGBOb25lYGAKKyAgIGlzIGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2AuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGV4Y2VwdGlvbjo6IEluZGV4RXJyb3IKIApAQCAtMjI4LDkgKzIzNywyMSBAQAogLi4gZXhjZXB0aW9uOjogTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICBUaGlzIGV4Y2VwdGlvbiBpcyBkZXJpdmVkIGZyb20gOmV4YzpgUnVudGltZUVycm9yYC4gIEluIHVzZXIgZGVmaW5lZCBiYXNlCi0gICBjbGFzc2VzLCBhYnN0cmFjdCBtZXRob2RzIHNob3VsZCByYWlzZSB0aGlzIGV4Y2VwdGlvbiB3aGVuIHRoZXkgcmVxdWlyZSBkZXJpdmVkCi0gICBjbGFzc2VzIHRvIG92ZXJyaWRlIHRoZSBtZXRob2QuCisgICBjbGFzc2VzLCBhYnN0cmFjdCBtZXRob2RzIHNob3VsZCByYWlzZSB0aGlzIGV4Y2VwdGlvbiB3aGVuIHRoZXkgcmVxdWlyZQorICAgZGVyaXZlZCBjbGFzc2VzIHRvIG92ZXJyaWRlIHRoZSBtZXRob2QsIG9yIHdoaWxlIHRoZSBjbGFzcyBpcyBiZWluZworICAgZGV2ZWxvcGVkIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlYWwgaW1wbGVtZW50YXRpb24gc3RpbGwgbmVlZHMgdG8gYmUgYWRkZWQuCiAKKyAgIC4uIG5vdGU6OgorCisgICAgICBJdCBzaG91bGQgbm90IGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBhbiBvcGVyYXRlciBvciBtZXRob2QgaXMgbm90CisgICAgICBtZWFudCB0byBiZSBzdXBwb3J0ZWQgYXQgYWxsIC0tIGluIHRoYXQgY2FzZSBlaXRoZXIgbGVhdmUgdGhlIG9wZXJhdG9yIC8KKyAgICAgIG1ldGhvZCB1bmRlZmluZWQgb3IsIGlmIGEgc3ViY2xhc3MsIHNldCBpdCB0byA6ZGF0YTpgTm9uZWAuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBgYE5vdEltcGxlbWVudGVkRXJyb3JgYCBhbmQgYGBOb3RJbXBsZW1lbnRlZGBgIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLAorICAgICAgZXZlbiB0aG91Z2ggdGhleSBoYXZlIHNpbWlsYXIgbmFtZXMgYW5kIHB1cnBvc2VzLiAgU2VlCisgICAgICA6ZGF0YTpgTm90SW1wbGVtZW50ZWRgIGZvciBkZXRhaWxzIG9uIHdoZW4gdG8gdXNlIGl0LgogCiAuLiBleGNlcHRpb246OiBPU0Vycm9yKFthcmddKQogICAgICAgICAgICAgICAgT1NFcnJvcihlcnJubywgc3RyZXJyb3JbLCBmaWxlbmFtZVssIHdpbmVycm9yWywgZmlsZW5hbWUyXV1dKQpAQCAtNDM2LDYgKzQ1NywxNSBAQAogICAgUmFpc2VkIHdoZW4gYW4gb3BlcmF0aW9uIG9yIGZ1bmN0aW9uIGlzIGFwcGxpZWQgdG8gYW4gb2JqZWN0IG9mIGluYXBwcm9wcmlhdGUKICAgIHR5cGUuICBUaGUgYXNzb2NpYXRlZCB2YWx1ZSBpcyBhIHN0cmluZyBnaXZpbmcgZGV0YWlscyBhYm91dCB0aGUgdHlwZSBtaXNtYXRjaC4KIAorICAgVGhpcyBleGNlcHRpb24gbWF5IGJlIHJhaXNlZCBieSB1c2VyIGNvZGUgdG8gaW5kaWNhdGUgdGhhdCBhbiBhdHRlbXB0ZWQKKyAgIG9wZXJhdGlvbiBvbiBhbiBvYmplY3QgaXMgbm90IHN1cHBvcnRlZCwgYW5kIGlzIG5vdCBtZWFudCB0byBiZS4gSWYgYW4gb2JqZWN0CisgICBpcyBtZWFudCB0byBzdXBwb3J0IGEgZ2l2ZW4gb3BlcmF0aW9uIGJ1dCBoYXMgbm90IHlldCBwcm92aWRlZCBhbgorICAgaW1wbGVtZW50YXRpb24sIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlzIHRoZSBwcm9wZXIgZXhjZXB0aW9uIHRvIHJhaXNlLgorCisgICBQYXNzaW5nIGFyZ3VtZW50cyBvZiB0aGUgd3JvbmcgdHlwZSAoZS5nLiBwYXNzaW5nIGEgOmNsYXNzOmBsaXN0YCB3aGVuIGFuCisgICA6Y2xhc3M6YGludGAgaXMgZXhwZWN0ZWQpIHNob3VsZCByZXN1bHQgaW4gYSA6ZXhjOmBUeXBlRXJyb3JgLCBidXQgcGFzc2luZworICAgYXJndW1lbnRzIHdpdGggdGhlIHdyb25nIHZhbHVlIChlLmcuIGEgbnVtYmVyIG91dHNpZGUgZXhwZWN0ZWQgYm91bmRhcmllcykKKyAgIHNob3VsZCByZXN1bHQgaW4gYSA6ZXhjOmBWYWx1ZUVycm9yYC4KIAogLi4gZXhjZXB0aW9uOjogVW5ib3VuZExvY2FsRXJyb3IKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdCBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKaW5kZXggZGVlZGVhMS4uZDBjNGNkMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CkBAIC03MCw2ICs3MCw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBmaWxlIGRlc2NyaXB0b3IgdG8gdGhpcyBmdW5jdGlvbi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIE9uIFdpbmRvd3MsIGEgaGFuZGxlciBmb3IgV2luZG93cyBleGNlcHRpb24gaXMgYWxzbyBpbnN0YWxsZWQuCisKIC4uIGZ1bmN0aW9uOjogZGlzYWJsZSgpCiAKICAgIERpc2FibGUgdGhlIGZhdWx0IGhhbmRsZXI6IHVuaW5zdGFsbCB0aGUgc2lnbmFsIGhhbmRsZXJzIGluc3RhbGxlZCBieQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdCBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKaW5kZXggYWE0YzUyOS4uNTg4MWZlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CkBAIC03Miw5ICs3Miw4IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQ2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjIKLSAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyIGlzIG5vIGxvbmdlciB1c2VkLgotCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjYgMy44CisgICAgICBUaGUgKmJ1ZnNpemUqIHBhcmFtZXRlci4KIAogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdXNlIHRoZSBnbG9iYWwgc3RhdGUgY3JlYXRlZCBieSA6ZnVuYzpgZmlsZWlucHV0LmlucHV0YDsKIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSBzdGF0ZSwgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQuCkBAIC0xNjcsOCArMTY2LDggQEAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKICAgICAgIFRoZSBgYCdyVSdgYCBhbmQgYGAnVSdgYCBtb2Rlcy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMgotICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjYgMy44CisgICAgICBUaGUgKmJ1ZnNpemUqIHBhcmFtZXRlci4KIAogCiAqKk9wdGlvbmFsIGluLXBsYWNlIGZpbHRlcmluZzoqKiBpZiB0aGUga2V5d29yZCBhcmd1bWVudCBgYGlucGxhY2U9VHJ1ZWBgIGlzCkBAIC0xOTUsMTAgKzE5NCwxNCBAQAogICAgVXNhZ2UgZXhhbXBsZTogIGBgZmkgPSBmaWxlaW5wdXQuRmlsZUlucHV0KG9wZW5ob29rPWZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQpYGAKIAogCi0uLiBmdW5jdGlvbjo6IGhvb2tfZW5jb2RlZChlbmNvZGluZykKKy4uIGZ1bmN0aW9uOjogaG9va19lbmNvZGVkKGVuY29kaW5nLCBlcnJvcnM9Tm9uZSkKIAogICAgUmV0dXJucyBhIGhvb2sgd2hpY2ggb3BlbnMgZWFjaCBmaWxlIHdpdGggOmZ1bmM6YG9wZW5gLCB1c2luZyB0aGUgZ2l2ZW4KLSAgICplbmNvZGluZyogdG8gcmVhZCB0aGUgZmlsZS4KKyAgICplbmNvZGluZyogYW5kICplcnJvcnMqIHRvIHJlYWQgdGhlIGZpbGUuCiAKICAgIFVzYWdlIGV4YW1wbGU6IGBgZmkgPQotICAgZmlsZWlucHV0LkZpbGVJbnB1dChvcGVuaG9vaz1maWxlaW5wdXQuaG9va19lbmNvZGVkKCJpc28tODg1OS0xIikpYGAKKyAgIGZpbGVpbnB1dC5GaWxlSW5wdXQob3Blbmhvb2s9ZmlsZWlucHV0Lmhvb2tfZW5jb2RlZCgidXRmLTgiLAorICAgInN1cnJvZ2F0ZWVzY2FwZSIpKWBgCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgKmVycm9ycyogcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKaW5kZXggMWUzNWYzNy4uYjhjMWRjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CkBAIC05Nyw2ICs5NywxMyBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKwogICAgSGVyZSdzIGEgc2FtcGxlIHNlc3Npb24gdXNpbmcgdGhlIDpjbGFzczpgRlRQX1RMU2AgY2xhc3M6OgogCiAgICAgICA+Pj4gZnRwcyA9IEZUUF9UTFMoJ2Z0cC5wdXJlZnRwZC5vcmcnKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKaW5kZXggNWFmOWZlNC4uYzRmY2Q5OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CkBAIC0yNzEsNiArMjcxLDkgQEAKIAogICAgVGhlIGNvbXBsZXggdHlwZSBpcyBkZXNjcmliZWQgaW4gOnJlZjpgdHlwZXNudW1lcmljYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEdyb3VwaW5nIGRpZ2l0cyB3aXRoIHVuZGVyc2NvcmVzIGFzIGluIGNvZGUgbGl0ZXJhbHMgaXMgYWxsb3dlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGRlbGF0dHIob2JqZWN0LCBuYW1lKQogCkBAIC01MzEsMTEgKzUzNCwxNCBAQAogCiAgICBUaGUgZmxvYXQgdHlwZSBpcyBkZXNjcmliZWQgaW4gOnJlZjpgdHlwZXNudW1lcmljYC4KIAotICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBfX2Zvcm1hdF9fCi0gICAgICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0KCkgKGJ1aWx0LWluIGZ1bmN0aW9uKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEdyb3VwaW5nIGRpZ2l0cyB3aXRoIHVuZGVyc2NvcmVzIGFzIGluIGNvZGUgbGl0ZXJhbHMgaXMgYWxsb3dlZC4KIAogCisuLiBpbmRleDo6CisgICBzaW5nbGU6IF9fZm9ybWF0X18KKyAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXQoKSAoYnVpbHQtaW4gZnVuY3Rpb24pCisKIC4uIGZ1bmN0aW9uOjogZm9ybWF0KHZhbHVlWywgZm9ybWF0X3NwZWNdKQogCiAgICBDb252ZXJ0IGEgKnZhbHVlKiB0byBhICJmb3JtYXR0ZWQiIHJlcHJlc2VudGF0aW9uLCBhcyBjb250cm9sbGVkIGJ5CkBAIC03MDIsNiArNzA4LDEwIEBACiAgICAgICA6bWV0aDpgYmFzZS5fX2ludF9fIDxvYmplY3QuX19pbnRfXz5gIGluc3RlYWQgb2YgOm1ldGg6YGJhc2UuX19pbmRleF9fCiAgICAgICA8b2JqZWN0Ll9faW5kZXhfXz5gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgR3JvdXBpbmcgZGlnaXRzIHdpdGggdW5kZXJzY29yZXMgYXMgaW4gY29kZSBsaXRlcmFscyBpcyBhbGxvd2VkLgorCisKIC4uIGZ1bmN0aW9uOjogaXNpbnN0YW5jZShvYmplY3QsIGNsYXNzaW5mbykKIAogICAgUmV0dXJuIHRydWUgaWYgdGhlICpvYmplY3QqIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIHRoZSAqY2xhc3NpbmZvKgpAQCAtODc4LDExICs4ODgsMTEgQEAKICAgIE9wZW4gKmZpbGUqIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIDp0ZXJtOmBmaWxlIG9iamVjdGAuICBJZiB0aGUgZmlsZQogICAgY2Fubm90IGJlIG9wZW5lZCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCi0gICAqZmlsZSogaXMgZWl0aGVyIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCBnaXZpbmcgdGhlIHBhdGhuYW1lIChhYnNvbHV0ZSBvcgotICAgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZCBvcgotICAgYW4gaW50ZWdlciBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gYmUgd3JhcHBlZC4gIChJZiBhIGZpbGUgZGVzY3JpcHRvcgotICAgaXMgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZSByZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzCi0gICAqY2xvc2VmZCogaXMgc2V0IHRvIGBgRmFsc2VgYC4pCisgICAqZmlsZSogaXMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZ2l2aW5nIHRoZSBwYXRobmFtZSAoYWJzb2x1dGUgb3IKKyAgIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0byBiZSBvcGVuZWQgb3IgYW4KKyAgIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlIHdyYXBwZWQuICAoSWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMKKyAgIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGUgcmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyAqY2xvc2VmZCoKKyAgIGlzIHNldCB0byBgYEZhbHNlYGAuKQogCiAgICAqbW9kZSogaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlIGlzCiAgICBvcGVuZWQuICBJdCBkZWZhdWx0cyB0byBgYCdyJ2BgIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dCBtb2RlLgpAQCAtMTA1NSwyNyArMTA2NSwzOCBAQAogICAgKHdoZXJlIDpmdW5jOmBvcGVuYCBpcyBkZWNsYXJlZCksIDptb2Q6YG9zYCwgOm1vZDpgb3MucGF0aGAsIDptb2Q6YHRlbXBmaWxlYCwKICAgIGFuZCA6bW9kOmBzaHV0aWxgLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgVGhlICpvcGVuZXIqIHBhcmFtZXRlciB3YXMgYWRkZWQuCi0gICAgICBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZC4KLSAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCi0gICAgICA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgdGhlIGZpbGUgb3BlbmVkIGluIGV4Y2x1c2l2ZQotICAgICAgY3JlYXRpb24gbW9kZSAoYGAneCdgYCkgYWxyZWFkeSBleGlzdHMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6CisgICAgICAzLjMKIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKLSAgICAgIFRoZSBmaWxlIGlzIG5vdyBub24taW5oZXJpdGFibGUuCisgICAgICAgICAqIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorICAgICAgICAgKiBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZC4KKyAgICAgICAgICogOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQsIGl0IGlzIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKyAgICAgICAgICogOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBpcyBub3cgcmFpc2VkIGlmIHRoZSBmaWxlIG9wZW5lZCBpbiBleGNsdXNpdmUKKyAgICAgICAgICogY3JlYXRpb24gbW9kZSAoYGAneCdgYCkgYWxyZWFkeSBleGlzdHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuNAorCisgICAgICAgICAqIFRoZSBmaWxlIGlzIG5vdyBub24taW5oZXJpdGFibGUuCiAKICAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNCA0LjAKIAogICAgICAgVGhlIGBgJ1UnYGAgbW9kZS4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKLSAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCi0gICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCi0gICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuNQogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQotICAgICAgVGhlIGBgJ25hbWVyZXBsYWNlJ2BgIGVycm9yIGhhbmRsZXIgd2FzIGFkZGVkLgorICAgICAgICAgKiBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorICAgICAgICAgKiBUaGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlciB3YXMgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuNgorCisgICAgICAgICAqIFN1cHBvcnQgYWRkZWQgdG8gYWNjZXB0IG9iamVjdHMgaW1wbGVtZW50aW5nIDpjbGFzczpgb3MuUGF0aExpa2VgLgorICAgICAgICAgKiBPbiBXaW5kb3dzLCBvcGVuaW5nIGEgY29uc29sZSBidWZmZXIgbWF5IHJldHVybiBhIHN1YmNsYXNzIG9mCisgICAgICAgICAgIDpjbGFzczpgaW8uUmF3SU9CYXNlYCBvdGhlciB0aGFuIDpjbGFzczpgaW8uRmlsZUlPYC4KIAogLi4gZnVuY3Rpb246OiBvcmQoYykKIApAQCAtMTQ2MCw2ICsxNDgxLDkgQEAKIAogICAgU2VlIGFsc28gOnJlZjpgYmx0aW4tdHlwZS1vYmplY3RzYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1YmNsYXNzZXMgb2YgOmNsYXNzOmB0eXBlYCB3aGljaCBkb24ndCBvdmVycmlkZSBgYHR5cGUuX19uZXdfX2BgIG1heSBubworICAgICAgbG9uZ2VyIHVzZSB0aGUgb25lLWFyZ3VtZW50IGZvcm0gdG8gZ2V0IHRoZSB0eXBlIG9mIGFuIG9iamVjdC4KIAogLi4gZnVuY3Rpb246OiB2YXJzKFtvYmplY3RdKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nbG9iLnJzdCBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CmluZGV4IDMyOGVlZjMuLmE4YTVhNTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dsb2IucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CkBAIC0xNCw3ICsxNCw3IEBACiBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIHVzZWQgYnkgdGhlIFVuaXggc2hlbGwsIGFsdGhvdWdoIHJlc3VsdHMgYXJlIHJldHVybmVkIGluCiBhcmJpdHJhcnkgb3JkZXIuICBObyB0aWxkZSBleHBhbnNpb24gaXMgZG9uZSwgYnV0IGBgKmBgLCBgYD9gYCwgYW5kIGNoYXJhY3RlcgogcmFuZ2VzIGV4cHJlc3NlZCB3aXRoIGBgW11gYCB3aWxsIGJlIGNvcnJlY3RseSBtYXRjaGVkLiAgVGhpcyBpcyBkb25lIGJ5IHVzaW5nCi10aGUgOmZ1bmM6YG9zLmxpc3RkaXJgIGFuZCA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCBmdW5jdGlvbnMgaW4gY29uY2VydCwgYW5kCit0aGUgOmZ1bmM6YG9zLnNjYW5kaXJgIGFuZCA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCBmdW5jdGlvbnMgaW4gY29uY2VydCwgYW5kCiBub3QgYnkgYWN0dWFsbHkgaW52b2tpbmcgYSBzdWJzaGVsbC4gIE5vdGUgdGhhdCB1bmxpa2UgOmZ1bmM6YGZubWF0Y2guZm5tYXRjaGAsCiA6bW9kOmBnbG9iYCB0cmVhdHMgZmlsZW5hbWVzIGJlZ2lubmluZyB3aXRoIGEgZG90IChgYC5gYCkgYXMgc3BlY2lhbCBjYXNlcy4KIChGb3IgdGlsZGUgYW5kIHNoZWxsIHZhcmlhYmxlIGV4cGFuc2lvbiwgdXNlIDpmdW5jOmBvcy5wYXRoLmV4cGFuZHVzZXJgIGFuZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ3JwLnJzdCBiL0RvYy9saWJyYXJ5L2dycC5yc3QKaW5kZXggYTMwZTYyMi4uNzRkZTNmOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ3JwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9ncnAucnN0CkBAIC00Myw2ICs0Myw5IEBACiAgICBSZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyBncm91cCBJRC4gOmV4YzpgS2V5RXJyb3JgCiAgICBpcyByYWlzZWQgaWYgdGhlIGVudHJ5IGFza2VkIGZvciBjYW5ub3QgYmUgZm91bmQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgICAgIFNpbmNlIFB5dGhvbiAzLjYgdGhlIHN1cHBvcnQgb2Ygbm9uLWludGVnZXIgYXJndW1lbnRzIGxpa2UgZmxvYXRzIG9yCisgICAgICBzdHJpbmdzIGluIDpmdW5jOmBnZXRncmdpZGAgaXMgZGVwcmVjYXRlZC4KIAogLi4gZnVuY3Rpb246OiBnZXRncm5hbShuYW1lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZyBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLXRyZWUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMGRjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1ZTQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLnJzdApAQCAtMCwwICsxLDQ0NCBAQAorLi4gX2hhc2hsaWItYmxha2UyOgorCis6bW9kOmBoYXNobGliYCAtLS0gQkxBS0UyIGhhc2ggZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGhhc2hsaWIKKyAgIDpzeW5vcHNpczogQkxBS0UyIGhhc2ggZnVuY3Rpb24gZm9yIFB5dGhvbgorLi4gc2VjdGlvbmF1dGhvcjo6IERtaXRyeSBDaGVzdG55a2gKKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBibGFrZTJiLCBibGFrZTJzCisKK0JMQUtFMl8gaXMgYSBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb24gZGVmaW5lZCBpbiBSRkMtNzY5M18gdGhhdCBjb21lcyBpbiB0d28KK2ZsYXZvcnM6CisKKyogKipCTEFLRTJiKiosIG9wdGltaXplZCBmb3IgNjQtYml0IHBsYXRmb3JtcyBhbmQgcHJvZHVjZXMgZGlnZXN0cyBvZiBhbnkgc2l6ZQorICBiZXR3ZWVuIDEgYW5kIDY0IGJ5dGVzLAorCisqICoqQkxBS0UycyoqLCBvcHRpbWl6ZWQgZm9yIDgtIHRvIDMyLWJpdCBwbGF0Zm9ybXMgYW5kIHByb2R1Y2VzIGRpZ2VzdHMgb2YgYW55CisgIHNpemUgYmV0d2VlbiAxIGFuZCAzMiBieXRlcy4KKworQkxBS0UyIHN1cHBvcnRzICoqa2V5ZWQgbW9kZSoqIChhIGZhc3RlciBhbmQgc2ltcGxlciByZXBsYWNlbWVudCBmb3IgSE1BQ18pLAorKipzYWx0ZWQgaGFzaGluZyoqLCAqKnBlcnNvbmFsaXphdGlvbioqLCBhbmQgKip0cmVlIGhhc2hpbmcqKi4KKworSGFzaCBvYmplY3RzIGZyb20gdGhpcyBtb2R1bGUgZm9sbG93IHRoZSBBUEkgb2Ygc3RhbmRhcmQgbGlicmFyeSdzCis6bW9kOmBoYXNobGliYCBvYmplY3RzLgorCisKK01vZHVsZQorPT09PT09CisKK0NyZWF0aW5nIGhhc2ggb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05ldyBoYXNoIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgY2FsbGluZyBjb25zdHJ1Y3RvciBmdW5jdGlvbnM6CisKKworLi4gZnVuY3Rpb246OiBibGFrZTJiKGRhdGE9YicnLCBkaWdlc3Rfc2l6ZT02NCwga2V5PWInJywgc2FsdD1iJycsIFwKKyAgICAgICAgICAgICAgICBwZXJzb249YicnLCBmYW5vdXQ9MSwgZGVwdGg9MSwgbGVhZl9zaXplPTAsIG5vZGVfb2Zmc2V0PTAsICBcCisgICAgICAgICAgICAgICAgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKworLi4gZnVuY3Rpb246OiBibGFrZTJzKGRhdGE9YicnLCBkaWdlc3Rfc2l6ZT0zMiwga2V5PWInJywgc2FsdD1iJycsIFwKKyAgICAgICAgICAgICAgICBwZXJzb249YicnLCBmYW5vdXQ9MSwgZGVwdGg9MSwgbGVhZl9zaXplPTAsIG5vZGVfb2Zmc2V0PTAsICBcCisgICAgICAgICAgICAgICAgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKworCitUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGhhc2ggb2JqZWN0cyBmb3IgY2FsY3VsYXRpbmcKK0JMQUtFMmIgb3IgQkxBS0Uycy4gVGhleSBvcHRpb25hbGx5IHRha2UgdGhlc2UgZ2VuZXJhbCBwYXJhbWV0ZXJzOgorCisqICpkYXRhKjogaW5pdGlhbCBjaHVuayBvZiBkYXRhIHRvIGhhc2gsIHdoaWNoIG11c3QgYmUgaW50ZXJwcmV0YWJsZSBhcyBidWZmZXIKKyAgb2YgYnl0ZXMuCisKKyogKmRpZ2VzdF9zaXplKjogc2l6ZSBvZiBvdXRwdXQgZGlnZXN0IGluIGJ5dGVzLgorCisqICprZXkqOiBrZXkgZm9yIGtleWVkIGhhc2hpbmcgKHVwIHRvIDY0IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byAzMiBieXRlcyBmb3IKKyAgQkxBS0UycykuCisKKyogKnNhbHQqOiBzYWx0IGZvciByYW5kb21pemVkIGhhc2hpbmcgKHVwIHRvIDE2IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byA4CisgIGJ5dGVzIGZvciBCTEFLRTJzKS4KKworKiAqcGVyc29uKjogcGVyc29uYWxpemF0aW9uIHN0cmluZyAodXAgdG8gMTYgYnl0ZXMgZm9yIEJMQUtFMmIsIHVwIHRvIDggYnl0ZXMKKyAgZm9yIEJMQUtFMnMpLgorCitUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIGxpbWl0cyBmb3IgZ2VuZXJhbCBwYXJhbWV0ZXJzIChpbiBieXRlcyk6CisKKz09PT09PT0gPT09PT09PT09PT0gPT09PT09PT0gPT09PT09PT09ID09PT09PT09PT09CitIYXNoICAgIGRpZ2VzdF9zaXplIGxlbihrZXkpIGxlbihzYWx0KSBsZW4ocGVyc29uKQorPT09PT09PSA9PT09PT09PT09PSA9PT09PT09PSA9PT09PT09PT0gPT09PT09PT09PT0KK0JMQUtFMmIgICAgIDY0ICAgICAgICAgNjQgICAgICAgMTYgICAgICAgIDE2CitCTEFLRTJzICAgICAzMiAgICAgICAgIDMyICAgICAgIDggICAgICAgICA4Cis9PT09PT09ID09PT09PT09PT09ID09PT09PT09ID09PT09PT09PSA9PT09PT09PT09PQorCisuLiBub3RlOjoKKworICAgIEJMQUtFMiBzcGVjaWZpY2F0aW9uIGRlZmluZXMgY29uc3RhbnQgbGVuZ3RocyBmb3Igc2FsdCBhbmQgcGVyc29uYWxpemF0aW9uCisgICAgcGFyYW1ldGVycywgaG93ZXZlciwgZm9yIGNvbnZlbmllbmNlLCB0aGlzIGltcGxlbWVudGF0aW9uIGFjY2VwdHMgYnl0ZQorICAgIHN0cmluZ3Mgb2YgYW55IHNpemUgdXAgdG8gdGhlIHNwZWNpZmllZCBsZW5ndGguIElmIHRoZSBsZW5ndGggb2YgdGhlCisgICAgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQsIGl0IGlzIHBhZGRlZCB3aXRoIHplcm9zLCB0aHVzLCBmb3IKKyAgICBleGFtcGxlLCBgYGInc2FsdCdgYCBhbmQgYGBiJ3NhbHRceDAwJ2BgIGlzIHRoZSBzYW1lIHZhbHVlLiAoVGhpcyBpcyBub3QKKyAgICB0aGUgY2FzZSBmb3IgKmtleSouKQorCitUaGVzZSBzaXplcyBhcmUgYXZhaWxhYmxlIGFzIG1vZHVsZSBgY29uc3RhbnRzYF8gZGVzY3JpYmVkIGJlbG93LgorCitDb25zdHJ1Y3RvciBmdW5jdGlvbnMgYWxzbyBhY2NlcHQgdGhlIGZvbGxvd2luZyB0cmVlIGhhc2hpbmcgcGFyYW1ldGVyczoKKworKiAqZmFub3V0KjogZmFub3V0ICgwIHRvIDI1NSwgMCBpZiB1bmxpbWl0ZWQsIDEgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqZGVwdGgqOiBtYXhpbWFsIGRlcHRoIG9mIHRyZWUgKDEgdG8gMjU1LCAyNTUgaWYgdW5saW1pdGVkLCAxIGluCisgIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmxlYWZfc2l6ZSo6IG1heGltYWwgYnl0ZSBsZW5ndGggb2YgbGVhZiAoMCB0byAyKiozMi0xLCAwIGlmIHVubGltaXRlZCBvciBpbgorICBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpub2RlX29mZnNldCo6IG5vZGUgb2Zmc2V0ICgwIHRvIDIqKjY0LTEgZm9yIEJMQUtFMmIsIDAgdG8gMioqNDgtMSBmb3IKKyAgQkxBS0UycywgMCBmb3IgdGhlIGZpcnN0LCBsZWZ0bW9zdCwgbGVhZiwgb3IgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqbm9kZV9kZXB0aCo6IG5vZGUgZGVwdGggKDAgdG8gMjU1LCAwIGZvciBsZWF2ZXMsIG9yIGluIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmlubmVyX3NpemUqOiBpbm5lciBkaWdlc3Qgc2l6ZSAoMCB0byA2NCBmb3IgQkxBS0UyYiwgMCB0byAzMiBmb3IKKyAgQkxBS0UycywgMCBpbiBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpsYXN0X25vZGUqOiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgcHJvY2Vzc2VkIG5vZGUgaXMgdGhlIGxhc3QKKyAgb25lIChgRmFsc2VgIGZvciBzZXF1ZW50aWFsIG1vZGUpLgorCisuLiBmaWd1cmU6OiBoYXNobGliLWJsYWtlMi10cmVlLnBuZworICAgOmFsdDogRXhwbGFuYXRpb24gb2YgdHJlZSBtb2RlIHBhcmFtZXRlcnMuCisKK1NlZSBzZWN0aW9uIDIuMTAgaW4gYEJMQUtFMiBzcGVjaWZpY2F0aW9uCis8aHR0cHM6Ly9ibGFrZTIubmV0L2JsYWtlMl8yMDEzMDEyOS5wZGY+YF8gZm9yIGNvbXByZWhlbnNpdmUgcmV2aWV3IG9mIHRyZWUKK2hhc2hpbmcuCisKKworQ29uc3RhbnRzCistLS0tLS0tLS0KKworLi4gZGF0YTo6IGJsYWtlMmIuU0FMVF9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5TQUxUX1NJWkUKKworU2FsdCBsZW5ndGggKG1heGltdW0gbGVuZ3RoIGFjY2VwdGVkIGJ5IGNvbnN0cnVjdG9ycykuCisKKworLi4gZGF0YTo6IGJsYWtlMmIuUEVSU09OX1NJWkUKKy4uIGRhdGE6OiBibGFrZTJzLlBFUlNPTl9TSVpFCisKK1BlcnNvbmFsaXphdGlvbiBzdHJpbmcgbGVuZ3RoIChtYXhpbXVtIGxlbmd0aCBhY2NlcHRlZCBieSBjb25zdHJ1Y3RvcnMpLgorCisKKy4uIGRhdGE6OiBibGFrZTJiLk1BWF9LRVlfU0laRQorLi4gZGF0YTo6IGJsYWtlMnMuTUFYX0tFWV9TSVpFCisKK01heGltdW0ga2V5IHNpemUuCisKKworLi4gZGF0YTo6IGJsYWtlMmIuTUFYX0RJR0VTVF9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5NQVhfRElHRVNUX1NJWkUKKworTWF4aW11bSBkaWdlc3Qgc2l6ZSB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIGNhbiBvdXRwdXQuCisKKworRXhhbXBsZXMKKz09PT09PT09CisKK1NpbXBsZSBoYXNoaW5nCistLS0tLS0tLS0tLS0tLQorCitUbyBjYWxjdWxhdGUgaGFzaCBvZiBzb21lIGRhdGEsIHlvdSBzaG91bGQgZmlyc3QgY29uc3RydWN0IGEgaGFzaCBvYmplY3QgYnkKK2NhbGxpbmcgdGhlIGFwcHJvcHJpYXRlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uICg6ZnVuYzpgYmxha2UyYmAgb3IKKzpmdW5jOmBibGFrZTJzYCksIHRoZW4gdXBkYXRlIGl0IHdpdGggdGhlIGRhdGEgYnkgY2FsbGluZyA6bWV0aDpgdXBkYXRlYCBvbiB0aGUKK29iamVjdCwgYW5kLCBmaW5hbGx5LCBnZXQgdGhlIGRpZ2VzdCBvdXQgb2YgdGhlIG9iamVjdCBieSBjYWxsaW5nCis6bWV0aDpgZGlnZXN0YCAob3IgOm1ldGg6YGhleGRpZ2VzdGAgZm9yIGhleC1lbmNvZGVkIHN0cmluZykuCisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKCkKKyAgICA+Pj4gaC51cGRhdGUoYidIZWxsbyB3b3JsZCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnNmZmODQzYmE2ODU4NDJhYTgyMDMxZDNmNTNjNDhiNjYzMjZkZjc2MzlhNjNkMTI4OTc0YzVjMTRmMzFhMGYzMzM0M2E4YzY1NTUxMTM0ZWQxYWUwZjJiMGRkMmJiNDk1ZGM4MTAzOWUzZWViMGFhMWJiMDM4OGJiZWFjMjkxODMnCisKKworQXMgYSBzaG9ydGN1dCwgeW91IGNhbiBwYXNzIHRoZSBmaXJzdCBjaHVuayBvZiBkYXRhIHRvIHVwZGF0ZSBkaXJlY3RseSB0byB0aGUKK2NvbnN0cnVjdG9yIGFzIHRoZSBmaXJzdCBhcmd1bWVudCAob3IgYXMgKmRhdGEqIGtleXdvcmQgYXJndW1lbnQpOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBibGFrZTJiKGInSGVsbG8gd29ybGQnKS5oZXhkaWdlc3QoKQorICAgICc2ZmY4NDNiYTY4NTg0MmFhODIwMzFkM2Y1M2M0OGI2NjMyNmRmNzYzOWE2M2QxMjg5NzRjNWMxNGYzMWEwZjMzMzQzYThjNjU1NTExMzRlZDFhZTBmMmIwZGQyYmI0OTVkYzgxMDM5ZTNlZWIwYWExYmIwMzg4YmJlYWMyOTE4MycKKworWW91IGNhbiBjYWxsIDptZXRoOmBoYXNoLnVwZGF0ZWAgYXMgbWFueSB0aW1lcyBhcyB5b3UgbmVlZCB0byBpdGVyYXRpdmVseQordXBkYXRlIHRoZSBoYXNoOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBpdGVtcyA9IFtiJ0hlbGxvJywgYicgJywgYid3b3JsZCddCisgICAgPj4+IGggPSBibGFrZTJiKCkKKyAgICA+Pj4gZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgLi4uICAgICBoLnVwZGF0ZShpdGVtKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzZmZjg0M2JhNjg1ODQyYWE4MjAzMWQzZjUzYzQ4YjY2MzI2ZGY3NjM5YTYzZDEyODk3NGM1YzE0ZjMxYTBmMzMzNDNhOGM2NTU1MTEzNGVkMWFlMGYyYjBkZDJiYjQ5NWRjODEwMzllM2VlYjBhYTFiYjAzODhiYmVhYzI5MTgzJworCisKK1VzaW5nIGRpZmZlcmVudCBkaWdlc3Qgc2l6ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQkxBS0UyIGhhcyBjb25maWd1cmFibGUgc2l6ZSBvZiBkaWdlc3RzIHVwIHRvIDY0IGJ5dGVzIGZvciBCTEFLRTJiIGFuZCB1cCB0byAzMgorYnl0ZXMgZm9yIEJMQUtFMnMuIEZvciBleGFtcGxlLCB0byByZXBsYWNlIFNIQS0xIHdpdGggQkxBS0UyYiB3aXRob3V0IGNoYW5naW5nCit0aGUgc2l6ZSBvZiBvdXRwdXQsIHdlIGNhbiB0ZWxsIEJMQUtFMmIgdG8gcHJvZHVjZSAyMC1ieXRlIGRpZ2VzdHM6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTIwKQorICAgID4+PiBoLnVwZGF0ZShiJ1JlcGxhY2luZyBTSEExIHdpdGggdGhlIG1vcmUgc2VjdXJlIGZ1bmN0aW9uJykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICdkMjRmMjZjZjhkZTY2NDcyZDU4ZDRlMWIxNzc0YjRjOTE1OGIxZjRjJworICAgID4+PiBoLmRpZ2VzdF9zaXplCisgICAgMjAKKyAgICA+Pj4gbGVuKGguZGlnZXN0KCkpCisgICAgMjAKKworSGFzaCBvYmplY3RzIHdpdGggZGlmZmVyZW50IGRpZ2VzdCBzaXplcyBoYXZlIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dHMKKyhzaG9ydGVyIGhhc2hlcyBhcmUgKm5vdCogcHJlZml4ZXMgb2YgbG9uZ2VyIGhhc2hlcyk7IEJMQUtFMmIgYW5kIEJMQUtFMnMKK3Byb2R1Y2UgZGlmZmVyZW50IG91dHB1dHMgZXZlbiBpZiB0aGUgb3V0cHV0IGxlbmd0aCBpcyB0aGUgc2FtZToKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIsIGJsYWtlMnMKKyAgICA+Pj4gYmxha2UyYihkaWdlc3Rfc2l6ZT0xMCkuaGV4ZGlnZXN0KCkKKyAgICAnNmZhMWQ4ZmNmZDcxOTA0NmQ3NjInCisgICAgPj4+IGJsYWtlMmIoZGlnZXN0X3NpemU9MTEpLmhleGRpZ2VzdCgpCisgICAgJ2ViNmVjMTVkYWY5NTQ2MjU0ZjA4MDknCisgICAgPj4+IGJsYWtlMnMoZGlnZXN0X3NpemU9MTApLmhleGRpZ2VzdCgpCisgICAgJzFiZjIxYTk4Yzc4YTFjMzc2YWU5JworICAgID4+PiBibGFrZTJzKGRpZ2VzdF9zaXplPTExKS5oZXhkaWdlc3QoKQorICAgICc1NjcwMDRiZjk2ZTRhMjU3NzNlYmY0JworCisKK0tleWVkIGhhc2hpbmcKKy0tLS0tLS0tLS0tLS0KKworS2V5ZWQgaGFzaGluZyBjYW4gYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24gYXMgYSBmYXN0ZXIgYW5kIHNpbXBsZXIKK3JlcGxhY2VtZW50IGZvciBgSGFzaC1iYXNlZCBtZXNzYWdlIGF1dGhlbnRpY2F0aW9uIGNvZGUKKzxodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhc2gtYmFzZWRfbWVzc2FnZV9hdXRoZW50aWNhdGlvbl9jb2RlPmBfIChITUFDKS4KK0JMQUtFMiBjYW4gYmUgc2VjdXJlbHkgdXNlZCBpbiBwcmVmaXgtTUFDIG1vZGUgdGhhbmtzIHRvIHRoZQoraW5kaWZmZXJlbnRpYWJpbGl0eSBwcm9wZXJ0eSBpbmhlcml0ZWQgZnJvbSBCTEFLRS4KKworVGhpcyBleGFtcGxlIHNob3dzIGhvdyB0byBnZXQgYSAoaGV4LWVuY29kZWQpIDEyOC1iaXQgYXV0aGVudGljYXRpb24gY29kZSBmb3IKK21lc3NhZ2UgYGBiJ21lc3NhZ2UgZGF0YSdgYCB3aXRoIGtleSBgYGIncHNldWRvcmFuZG9tIGtleSdgYDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKGtleT1iJ3BzZXVkb3JhbmRvbSBrZXknLCBkaWdlc3Rfc2l6ZT0xNikKKyAgICA+Pj4gaC51cGRhdGUoYidtZXNzYWdlIGRhdGEnKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzNkMzYzZmY3NDAxZTAyMDI2ZjRhNDY4N2Q0ODYzY2VkJworCisKK0FzIGEgcHJhY3RpY2FsIGV4YW1wbGUsIGEgd2ViIGFwcGxpY2F0aW9uIGNhbiBzeW1tZXRyaWNhbGx5IHNpZ24gY29va2llcyBzZW50Cit0byB1c2VycyBhbmQgbGF0ZXIgdmVyaWZ5IHRoZW0gdG8gbWFrZSBzdXJlIHRoZXkgd2VyZW4ndCB0YW1wZXJlZCB3aXRoOjoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gZnJvbSBobWFjIGltcG9ydCBjb21wYXJlX2RpZ2VzdAorICAgID4+PgorICAgID4+PiBTRUNSRVRfS0VZID0gYidwc2V1ZG9yYW5kb21seSBnZW5lcmF0ZWQgc2VydmVyIHNlY3JldCBrZXknCisgICAgPj4+IEFVVEhfU0laRSA9IDE2CisgICAgPj4+CisgICAgPj4+IGRlZiBzaWduKGNvb2tpZSk6CisgICAgLi4uICAgICBoID0gYmxha2UyYihkYXRhPWNvb2tpZSwgZGlnZXN0X3NpemU9QVVUSF9TSVpFLCBrZXk9U0VDUkVUX0tFWSkKKyAgICAuLi4gICAgIHJldHVybiBoLmhleGRpZ2VzdCgpCisgICAgPj4+CisgICAgPj4+IGNvb2tpZSA9IGIndXNlcjp2YXRyb2dhc2FjJworICAgID4+PiBzaWcgPSBzaWduKGNvb2tpZSkKKyAgICA+Pj4gcHJpbnQoInswfSx7MX0iLmZvcm1hdChjb29raWUuZGVjb2RlKCd1dGYtOCcpLCBzaWcpKQorICAgIHVzZXI6dmF0cm9nYXNhYywzNDljZjkwNDUzMzc2N2VkMmQ3NTUyNzlhOGRmODRkMAorICAgID4+PiBjb21wYXJlX2RpZ2VzdChjb29raWUsIHNpZykKKyAgICBUcnVlCisgICAgPj4+IGNvbXBhcmVfZGlnZXN0KGIndXNlcjpwb2xpY2FqYWMnLCBzaWcpCisgICAgRmFsc2UKKyAgICA+Pj4gY29tcGFyZV9kaWdlc3R5KGNvb2tpZSwgJzAxMDIwMzA0MDUwNjA3MDgwOTBhMGIwYzBkMGUwZjAwJykKKyAgICBGYWxzZQorCitFdmVuIHRob3VnaCB0aGVyZSdzIGEgbmF0aXZlIGtleWVkIGhhc2hpbmcgbW9kZSwgQkxBS0UyIGNhbiwgb2YgY291cnNlLCBiZSB1c2VkCitpbiBITUFDIGNvbnN0cnVjdGlvbiB3aXRoIDptb2Q6YGhtYWNgIG1vZHVsZTo6CisKKyAgICA+Pj4gaW1wb3J0IGhtYWMsIGhhc2hsaWIKKyAgICA+Pj4gbSA9IGhtYWMubmV3KGInc2VjcmV0IGtleScsIGRpZ2VzdG1vZD1oYXNobGliLmJsYWtlMnMpCisgICAgPj4+IG0udXBkYXRlKGInbWVzc2FnZScpCisgICAgPj4+IG0uaGV4ZGlnZXN0KCkKKyAgICAnZTNjODEwMjg2OGQyOGI1ZmY4NWZjMzVkZGEwNzMyOTk3MGQxYTAxZTI3M2MzNzQ4MTMyNmZlMGM4NjFjODE0MicKKworCitSYW5kb21pemVkIGhhc2hpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitCeSBzZXR0aW5nICpzYWx0KiBwYXJhbWV0ZXIgdXNlcnMgY2FuIGludHJvZHVjZSByYW5kb21pemF0aW9uIHRvIHRoZSBoYXNoCitmdW5jdGlvbi4gUmFuZG9taXplZCBoYXNoaW5nIGlzIHVzZWZ1bCBmb3IgcHJvdGVjdGluZyBhZ2FpbnN0IGNvbGxpc2lvbiBhdHRhY2tzCitvbiB0aGUgaGFzaCBmdW5jdGlvbiB1c2VkIGluIGRpZ2l0YWwgc2lnbmF0dXJlcy4KKworICAgIFJhbmRvbWl6ZWQgaGFzaGluZyBpcyBkZXNpZ25lZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBvbmUgcGFydHksIHRoZSBtZXNzYWdlCisgICAgcHJlcGFyZXIsIGdlbmVyYXRlcyBhbGwgb3IgcGFydCBvZiBhIG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGJ5IGEgc2Vjb25kCisgICAgcGFydHksIHRoZSBtZXNzYWdlIHNpZ25lci4gSWYgdGhlIG1lc3NhZ2UgcHJlcGFyZXIgaXMgYWJsZSB0byBmaW5kCisgICAgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uIGNvbGxpc2lvbnMgKGkuZS4sIHR3byBtZXNzYWdlcyBwcm9kdWNpbmcgdGhlCisgICAgc2FtZSBoYXNoIHZhbHVlKSwgdGhlbiBzaGUgbWlnaHQgcHJlcGFyZSBtZWFuaW5nZnVsIHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCisgICAgdGhhdCB3b3VsZCBwcm9kdWNlIHRoZSBzYW1lIGhhc2ggdmFsdWUgYW5kIGRpZ2l0YWwgc2lnbmF0dXJlLCBidXQgd2l0aAorICAgIGRpZmZlcmVudCByZXN1bHRzIChlLmcuLCB0cmFuc2ZlcnJpbmcgJDEsMDAwLDAwMCB0byBhbiBhY2NvdW50LCByYXRoZXIgdGhhbgorICAgICQxMCkuIENyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRlc2lnbmVkIHdpdGggY29sbGlzaW9uCisgICAgcmVzaXN0YW5jZSBhcyBhIG1ham9yIGdvYWwsIGJ1dCB0aGUgY3VycmVudCBjb25jZW50cmF0aW9uIG9uIGF0dGFja2luZworICAgIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbnMgbWF5IHJlc3VsdCBpbiBhIGdpdmVuIGNyeXB0b2dyYXBoaWMgaGFzaAorICAgIGZ1bmN0aW9uIHByb3ZpZGluZyBsZXNzIGNvbGxpc2lvbiByZXNpc3RhbmNlIHRoYW4gZXhwZWN0ZWQuIFJhbmRvbWl6ZWQKKyAgICBoYXNoaW5nIG9mZmVycyB0aGUgc2lnbmVyIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBieSByZWR1Y2luZyB0aGUgbGlrZWxpaG9vZAorICAgIHRoYXQgYSBwcmVwYXJlciBjYW4gZ2VuZXJhdGUgdHdvIG9yIG1vcmUgbWVzc2FnZXMgdGhhdCB1bHRpbWF0ZWx5IHlpZWxkIHRoZQorICAgIHNhbWUgaGFzaCB2YWx1ZSBkdXJpbmcgdGhlIGRpZ2l0YWwgc2lnbmF0dXJlIGdlbmVyYXRpb24gcHJvY2VzcyDigJMgZXZlbiBpZgorICAgIGl0IGlzIHByYWN0aWNhbCB0byBmaW5kIGNvbGxpc2lvbnMgZm9yIHRoZSBoYXNoIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgdXNlCisgICAgb2YgcmFuZG9taXplZCBoYXNoaW5nIG1heSByZWR1Y2UgdGhlIGFtb3VudCBvZiBzZWN1cml0eSBwcm92aWRlZCBieSBhCisgICAgZGlnaXRhbCBzaWduYXR1cmUgd2hlbiBhbGwgcG9ydGlvbnMgb2YgdGhlIG1lc3NhZ2UgYXJlIHByZXBhcmVkCisgICAgYnkgdGhlIHNpZ25lci4KKworICAgIChgTklTVCBTUC04MDAtMTA2ICJSYW5kb21pemVkIEhhc2hpbmcgZm9yIERpZ2l0YWwgU2lnbmF0dXJlcyIKKyAgICA8aHR0cDovL2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL25pc3RwdWJzLzgwMC0xMDYvTklTVC1TUC04MDAtMTA2LnBkZj5gXykKKworSW4gQkxBS0UyIHRoZSBzYWx0IGlzIHByb2Nlc3NlZCBhcyBhIG9uZS10aW1lIGlucHV0IHRvIHRoZSBoYXNoIGZ1bmN0aW9uIGR1cmluZworaW5pdGlhbGl6YXRpb24sIHJhdGhlciB0aGFuIGFzIGFuIGlucHV0IHRvIGVhY2ggY29tcHJlc3Npb24gZnVuY3Rpb24uCisKKy4uIHdhcm5pbmc6OgorCisgICAgKlNhbHRlZCBoYXNoaW5nKiAob3IganVzdCBoYXNoaW5nKSB3aXRoIEJMQUtFMiBvciBhbnkgb3RoZXIgZ2VuZXJhbC1wdXJwb3NlCisgICAgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uLCBzdWNoIGFzIFNIQS0yNTYsIGlzIG5vdCBzdWl0YWJsZSBmb3IgaGFzaGluZworICAgIHBhc3N3b3Jkcy4gIFNlZSBgQkxBS0UyIEZBUSA8aHR0cHM6Ly9ibGFrZTIubmV0LyNxYT5gXyBmb3IgbW9yZQorICAgIGluZm9ybWF0aW9uLgorLi4KKworICAgID4+PiBpbXBvcnQgb3MKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IG1zZyA9IGInc29tZSBtZXNzYWdlJworICAgID4+PiAjIENhbGN1bGF0ZSB0aGUgZmlyc3QgaGFzaCB3aXRoIGEgcmFuZG9tIHNhbHQuCisgICAgPj4+IHNhbHQxID0gb3MudXJhbmRvbShibGFrZTJiLlNBTFRfU0laRSkKKyAgICA+Pj4gaDEgPSBibGFrZTJiKHNhbHQ9c2FsdDEpCisgICAgPj4+IGgxLnVwZGF0ZShtc2cpCisgICAgPj4+ICMgQ2FsY3VsYXRlIHRoZSBzZWNvbmQgaGFzaCB3aXRoIGEgZGlmZmVyZW50IHJhbmRvbSBzYWx0LgorICAgID4+PiBzYWx0MiA9IG9zLnVyYW5kb20oYmxha2UyYi5TQUxUX1NJWkUpCisgICAgPj4+IGgyID0gYmxha2UyYihzYWx0PXNhbHQyKQorICAgID4+PiBoMi51cGRhdGUobXNnKQorICAgID4+PiAjIFRoZSBkaWdlc3RzIGFyZSBkaWZmZXJlbnQuCisgICAgPj4+IGgxLmRpZ2VzdCgpICE9IGgyLmRpZ2VzdCgpCisgICAgVHJ1ZQorCisKK1BlcnNvbmFsaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tCisKK1NvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gZm9yY2UgaGFzaCBmdW5jdGlvbiB0byBwcm9kdWNlIGRpZmZlcmVudCBkaWdlc3RzIGZvcgordGhlIHNhbWUgaW5wdXQgZm9yIGRpZmZlcmVudCBwdXJwb3Nlcy4gUXVvdGluZyB0aGUgYXV0aG9ycyBvZiB0aGUgU2tlaW4gaGFzaAorZnVuY3Rpb246CisKKyAgICBXZSByZWNvbW1lbmQgdGhhdCBhbGwgYXBwbGljYXRpb24gZGVzaWduZXJzIHNlcmlvdXNseSBjb25zaWRlciBkb2luZyB0aGlzOworICAgIHdlIGhhdmUgc2VlbiBtYW55IHByb3RvY29scyB3aGVyZSBhIGhhc2ggdGhhdCBpcyBjb21wdXRlZCBpbiBvbmUgcGFydCBvZgorICAgIHRoZSBwcm90b2NvbCBjYW4gYmUgdXNlZCBpbiBhbiBlbnRpcmVseSBkaWZmZXJlbnQgcGFydCBiZWNhdXNlIHR3byBoYXNoCisgICAgY29tcHV0YXRpb25zIHdlcmUgZG9uZSBvbiBzaW1pbGFyIG9yIHJlbGF0ZWQgZGF0YSwgYW5kIHRoZSBhdHRhY2tlciBjYW4KKyAgICBmb3JjZSB0aGUgYXBwbGljYXRpb24gdG8gbWFrZSB0aGUgaGFzaCBpbnB1dHMgdGhlIHNhbWUuIFBlcnNvbmFsaXppbmcgZWFjaAorICAgIGhhc2ggZnVuY3Rpb24gdXNlZCBpbiB0aGUgcHJvdG9jb2wgc3VtbWFyaWx5IHN0b3BzIHRoaXMgdHlwZSBvZiBhdHRhY2suCisKKyAgICAoYFRoZSBTa2VpbiBIYXNoIEZ1bmN0aW9uIEZhbWlseQorICAgIDxodHRwOi8vd3d3LnNrZWluLWhhc2guaW5mby9zaXRlcy9kZWZhdWx0L2ZpbGVzL3NrZWluMS4zLnBkZj5gXywKKyAgICBwLiAyMSkKKworQkxBS0UyIGNhbiBiZSBwZXJzb25hbGl6ZWQgYnkgcGFzc2luZyBieXRlcyB0byB0aGUgKnBlcnNvbiogYXJndW1lbnQ6OgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBGSUxFU19IQVNIX1BFUlNPTiA9IGInTXlBcHAgRmlsZXMgSGFzaCcKKyAgICA+Pj4gQkxPQ0tfSEFTSF9QRVJTT04gPSBiJ015QXBwIEJsb2NrIEhhc2gnCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTMyLCBwZXJzb249RklMRVNfSEFTSF9QRVJTT04pCisgICAgPj4+IGgudXBkYXRlKGIndGhlIHNhbWUgY29udGVudCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnMjBkOWNkMDI0ZDRmYjA4NmFhZTgxOWExNDMyZGQyNDY2ZGUxMjk0NzgzMWI3NWM1YTMwY2YyNjc2MDk1ZDNiNCcKKyAgICA+Pj4gaCA9IGJsYWtlMmIoZGlnZXN0X3NpemU9MzIsIHBlcnNvbj1CTE9DS19IQVNIX1BFUlNPTikKKyAgICA+Pj4gaC51cGRhdGUoYid0aGUgc2FtZSBjb250ZW50JykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICdjZjY4ZmI1NzYxYjljNDRlNzg3OGJmYjJjNGM5YWVhNTIyNjRhODBiNzUwMDVlNjU2MTk3NzhkZTU5ZjM4M2EzJworCitQZXJzb25hbGl6YXRpb24gdG9nZXRoZXIgd2l0aCB0aGUga2V5ZWQgbW9kZSBjYW4gYWxzbyBiZSB1c2VkIHRvIGRlcml2ZSBkaWZmZXJlbnQKK2tleXMgZnJvbSBhIHNpbmdsZSBvbmUuCisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJzCisgICAgPj4+IGZyb20gYmFzZTY0IGltcG9ydCBiNjRkZWNvZGUsIGI2NGVuY29kZQorICAgID4+PiBvcmlnX2tleSA9IGI2NGRlY29kZShiJ1JtNUVQSmFpNzJxY0szUkdCcFczdlBOZlp5NU9ab3RoWStrSFk2aDIxS009JykKKyAgICA+Pj4gZW5jX2tleSA9IGJsYWtlMnMoa2V5PW9yaWdfa2V5LCBwZXJzb249YidrRW5jcnlwdCcpLmRpZ2VzdCgpCisgICAgPj4+IG1hY19rZXkgPSBibGFrZTJzKGtleT1vcmlnX2tleSwgcGVyc29uPWIna01BQycpLmRpZ2VzdCgpCisgICAgPj4+IHByaW50KGI2NGVuY29kZShlbmNfa2V5KS5kZWNvZGUoJ3V0Zi04JykpCisgICAgcmJQYjE1Uy9aOXQrYWdmZm5vNXd1aEI3N1ZiUmk2RjlJdjJxSXhVN1dIdz0KKyAgICA+Pj4gcHJpbnQoYjY0ZW5jb2RlKG1hY19rZXkpLmRlY29kZSgndXRmLTgnKSkKKyAgICBHOUd0SEZFMVlsdVhZMXpXUGxZazFlL25XZnUwV1NFYjBLUmNqaERlUC9vPQorCitUcmVlIG1vZGUKKy0tLS0tLS0tLQorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBoYXNoaW5nIGEgbWluaW1hbCB0cmVlIHdpdGggdHdvIGxlYWYgbm9kZXM6OgorCisgICAgICAgMTAKKyAgICAgIC8gIFwKKyAgICAgMDAgIDAxCisKK1RoaXMgZXhhbXBsZSB1c2VzIDY0LWJ5dGUgaW50ZXJuYWwgZGlnZXN0cywgYW5kIHJldHVybnMgdGhlIDMyLWJ5dGUgZmluYWwKK2RpZ2VzdDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+CisgICAgPj4+IEZBTk9VVCA9IDIKKyAgICA+Pj4gREVQVEggPSAyCisgICAgPj4+IExFQUZfU0laRSA9IDQwOTYKKyAgICA+Pj4gSU5ORVJfU0laRSA9IDY0CisgICAgPj4+CisgICAgPj4+IGJ1ZiA9IGJ5dGVhcnJheSg2MDAwKQorICAgID4+PgorICAgID4+PiAjIExlZnQgbGVhZgorICAgIC4uLiBoMDAgPSBibGFrZTJiKGJ1ZlswOkxFQUZfU0laRV0sIGZhbm91dD1GQU5PVVQsIGRlcHRoPURFUFRILAorICAgIC4uLiAgICAgICAgICAgICAgIGxlYWZfc2l6ZT1MRUFGX1NJWkUsIGlubmVyX3NpemU9SU5ORVJfU0laRSwKKyAgICAuLi4gICAgICAgICAgICAgICBub2RlX29mZnNldD0wLCBub2RlX2RlcHRoPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKyAgICA+Pj4gIyBSaWdodCBsZWFmCisgICAgLi4uIGgwMSA9IGJsYWtlMmIoYnVmW0xFQUZfU0laRTpdLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwKKyAgICAuLi4gICAgICAgICAgICAgICBsZWFmX3NpemU9TEVBRl9TSVpFLCBpbm5lcl9zaXplPUlOTkVSX1NJWkUsCisgICAgLi4uICAgICAgICAgICAgICAgbm9kZV9vZmZzZXQ9MSwgbm9kZV9kZXB0aD0wLCBsYXN0X25vZGU9VHJ1ZSkKKyAgICA+Pj4gIyBSb290IG5vZGUKKyAgICAuLi4gaDEwID0gYmxha2UyYihkaWdlc3Rfc2l6ZT0zMiwgZmFub3V0PUZBTk9VVCwgZGVwdGg9REVQVEgsCisgICAgLi4uICAgICAgICAgICAgICAgbGVhZl9zaXplPUxFQUZfU0laRSwgaW5uZXJfc2l6ZT1JTk5FUl9TSVpFLAorICAgIC4uLiAgICAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTAsIG5vZGVfZGVwdGg9MSwgbGFzdF9ub2RlPVRydWUpCisgICAgPj4+IGgxMC51cGRhdGUoaDAwLmRpZ2VzdCgpKQorICAgID4+PiBoMTAudXBkYXRlKGgwMS5kaWdlc3QoKSkKKyAgICA+Pj4gaDEwLmhleGRpZ2VzdCgpCisgICAgJzNhZDJhOWIzN2M2MDcwZTM3NGM3YThjNTA4ZmUyMGNhODZiNmVkNTRlMjg2ZTkzYTAzMThlOTVlODgxZGI1YWEnCisKK0NyZWRpdHMKKz09PT09PT0KKworQkxBS0UyXyB3YXMgZGVzaWduZWQgYnkgKkplYW4tUGhpbGlwcGUgQXVtYXNzb24qLCAqU2FtdWVsIE5ldmVzKiwgKlpvb2tvCitXaWxjb3gtTydIZWFybiosIGFuZCAqQ2hyaXN0aWFuIFdpbm5lcmxlaW4qIGJhc2VkIG9uIFNIQS0zXyBmaW5hbGlzdCBCTEFLRV8KK2NyZWF0ZWQgYnkgKkplYW4tUGhpbGlwcGUgQXVtYXNzb24qLCAqTHVjYSBIZW56ZW4qLCAqV2lsbGkgTWVpZXIqLCBhbmQKKypSYXBoYWVsIEMuLVcuIFBoYW4qLgorCitJdCB1c2VzIGNvcmUgYWxnb3JpdGhtIGZyb20gQ2hhQ2hhXyBjaXBoZXIgZGVzaWduZWQgYnkgKkRhbmllbCBKLiAgQmVybnN0ZWluKi4KKworVGhlIHN0ZGxpYiBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBweWJsYWtlMl8gbW9kdWxlLiBJdCB3YXMgd3JpdHRlbiBieQorKkRtaXRyeSBDaGVzdG55a2gqIGJhc2VkIG9uIEMgaW1wbGVtZW50YXRpb24gd3JpdHRlbiBieSAqU2FtdWVsIE5ldmVzKi4gVGhlCitkb2N1bWVudGF0aW9uIHdhcyBjb3BpZWQgZnJvbSBweWJsYWtlMl8gYW5kIHdyaXR0ZW4gYnkgKkRtaXRyeSBDaGVzdG55a2gqLgorCitUaGUgQyBjb2RlIHdhcyBwYXJ0bHkgcmV3cml0dGVuIGZvciBQeXRob24gYnkgKkNocmlzdGlhbiBIZWltZXMqLgorCitUaGUgZm9sbG93aW5nIHB1YmxpYyBkb21haW4gZGVkaWNhdGlvbiBhcHBsaWVzIGZvciBib3RoIEMgaGFzaCBmdW5jdGlvbgoraW1wbGVtZW50YXRpb24sIGV4dGVuc2lvbiBjb2RlLCBhbmQgdGhpcyBkb2N1bWVudGF0aW9uOgorCisgICBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvcihzKSBoYXZlIGRlZGljYXRlZCBhbGwgY29weXJpZ2h0CisgICBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8gdGhlIHB1YmxpYyBkb21haW4KKyAgIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0IGFueSB3YXJyYW50eS4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgQ0MwIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbiBhbG9uZworICAgd2l0aCB0aGlzIHNvZnR3YXJlLiBJZiBub3QsIHNlZQorICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLy4KKworVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBoZWxwZWQgd2l0aCBkZXZlbG9wbWVudCBvciBjb250cmlidXRlZCB0aGVpciBjaGFuZ2VzCit0byB0aGUgcHJvamVjdCBhbmQgdGhlIHB1YmxpYyBkb21haW4gYWNjb3JkaW5nIHRvIHRoZSBDcmVhdGl2ZSBDb21tb25zIFB1YmxpYworRG9tYWluIERlZGljYXRpb24gMS4wIFVuaXZlcnNhbDoKKworKiAqQWxleGFuZHIgU29rb2xvdnNraXkqCisKKy4uIHNlZWFsc286OiBPZmZpY2lhbCBCTEFLRTIgd2Vic2l0ZTogaHR0cHM6Ly9ibGFrZTIubmV0CisKKy4uIF9SRkMtNzY5MzogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc2OTMKKy4uIF9CTEFLRTI6IGh0dHBzOi8vYmxha2UyLm5ldAorLi4gX0hNQUM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhc2gtYmFzZWRfbWVzc2FnZV9hdXRoZW50aWNhdGlvbl9jb2RlCisuLiBfQkxBS0U6IGh0dHBzOi8vMTMxMDAyLm5ldC9ibGFrZS8KKy4uIF9TSEEtMzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTklTVF9oYXNoX2Z1bmN0aW9uX2NvbXBldGl0aW9uCisuLiBfQ2hhQ2hhOiBodHRwczovL2NyLnlwLnRvL2NoYWNoYS5odG1sCisuLiBfcHlibGFrZTI6IGh0dHBzOi8vcHl0aG9uaG9zdGVkLm9yZy9weWJsYWtlMi8KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAppbmRleCBhMmU5NmNhLi4yY2IzYzc4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdApAQCAtNDQsOCArNDQsOCBAQAogLS0tLS0tLS0tLS0tLS0tCiAKIFRoZXJlIGlzIG9uZSBjb25zdHJ1Y3RvciBtZXRob2QgbmFtZWQgZm9yIGVhY2ggdHlwZSBvZiA6ZGZuOmBoYXNoYC4gIEFsbCByZXR1cm4KLWEgaGFzaCBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaW1wbGUgaW50ZXJmYWNlLiBGb3IgZXhhbXBsZTogdXNlIDpmdW5jOmBzaGExYCB0bwotY3JlYXRlIGEgU0hBMSBoYXNoIG9iamVjdC4gWW91IGNhbiBub3cgZmVlZCB0aGlzIG9iamVjdCB3aXRoIDp0ZXJtOmBieXRlcy1saWtlCithIGhhc2ggb2JqZWN0IHdpdGggdGhlIHNhbWUgc2ltcGxlIGludGVyZmFjZS4gRm9yIGV4YW1wbGU6IHVzZSA6ZnVuYzpgc2hhMjU2YCB0bworY3JlYXRlIGEgU0hBLTI1NiBoYXNoIG9iamVjdC4gWW91IGNhbiBub3cgZmVlZCB0aGlzIG9iamVjdCB3aXRoIDp0ZXJtOmBieXRlcy1saWtlCiBvYmplY3RzIDxieXRlcy1saWtlIG9iamVjdD5gIChub3JtYWxseSA6Y2xhc3M6YGJ5dGVzYCkgdXNpbmcgdGhlIDptZXRoOmB1cGRhdGVgIG1ldGhvZC4KIEF0IGFueSBwb2ludCB5b3UgY2FuIGFzayBpdCBmb3IgdGhlIDpkZm46YGRpZ2VzdGAgb2YgdGhlCiBjb25jYXRlbmF0aW9uIG9mIHRoZSBkYXRhIGZlZCB0byBpdCBzbyBmYXIgdXNpbmcgdGhlIDptZXRoOmBkaWdlc3RgIG9yCkBAIC02NCwyMSArNjQsMzMgQEAKIC4uIGluZGV4Ojogc2luZ2xlOiBPcGVuU1NMOyAodXNlIGluIG1vZHVsZSBoYXNobGliKQogCiBDb25zdHJ1Y3RvcnMgZm9yIGhhc2ggYWxnb3JpdGhtcyB0aGF0IGFyZSBhbHdheXMgcHJlc2VudCBpbiB0aGlzIG1vZHVsZSBhcmUKLTpmdW5jOmBtZDVgLCA6ZnVuYzpgc2hhMWAsIDpmdW5jOmBzaGEyMjRgLCA6ZnVuYzpgc2hhMjU2YCwgOmZ1bmM6YHNoYTM4NGAsCi1hbmQgOmZ1bmM6YHNoYTUxMmAuIEFkZGl0aW9uYWwgYWxnb3JpdGhtcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUgZGVwZW5kaW5nIHVwb24KLXRoZSBPcGVuU1NMIGxpYnJhcnkgdGhhdCBQeXRob24gdXNlcyBvbiB5b3VyIHBsYXRmb3JtLgorOmZ1bmM6YHNoYTFgLCA6ZnVuYzpgc2hhMjI0YCwgOmZ1bmM6YHNoYTI1NmAsIDpmdW5jOmBzaGEzODRgLAorOmZ1bmM6YHNoYTUxMmAsIDpmdW5jOmBibGFrZTJiYCwgYW5kIDpmdW5jOmBibGFrZTJzYC4KKzpmdW5jOmBtZDVgIGlzIG5vcm1hbGx5IGF2YWlsYWJsZSBhcyB3ZWxsLCB0aG91Z2ggaXQKK21heSBiZSBtaXNzaW5nIGlmIHlvdSBhcmUgdXNpbmcgYSByYXJlICJGSVBTIGNvbXBsaWFudCIgYnVpbGQgb2YgUHl0aG9uLgorQWRkaXRpb25hbCBhbGdvcml0aG1zIG1heSBhbHNvIGJlIGF2YWlsYWJsZSBkZXBlbmRpbmcgdXBvbiB0aGUgT3BlblNTTAorbGlicmFyeSB0aGF0IFB5dGhvbiB1c2VzIG9uIHlvdXIgcGxhdGZvcm0uIE9uIG1vc3QgcGxhdGZvcm1zIHRoZQorOmZ1bmM6YHNoYTNfMjI0YCwgOmZ1bmM6YHNoYTNfMjU2YCwgOmZ1bmM6YHNoYTNfMzg0YCwgOmZ1bmM6YHNoYTNfNTEyYCwKKzpmdW5jOmBzaGFrZV8xMjhgLCA6ZnVuYzpgc2hha2VfMjU2YCBhcmUgYWxzbyBhdmFpbGFibGUuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgU0hBMyAoS2VjY2FrKSBhbmQgU0hBS0UgY29uc3RydWN0b3JzIDpmdW5jOmBzaGEzXzIyNGAsIDpmdW5jOmBzaGEzXzI1NmAsCisgICA6ZnVuYzpgc2hhM18zODRgLCA6ZnVuYzpgc2hhM181MTJgLCA6ZnVuYzpgc2hha2VfMTI4YCwgOmZ1bmM6YHNoYWtlXzI1NmAuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgOmZ1bmM6YGJsYWtlMmJgIGFuZCA6ZnVuYzpgYmxha2Uyc2Agd2VyZSBhZGRlZC4KIAogRm9yIGV4YW1wbGUsIHRvIG9idGFpbiB0aGUgZGlnZXN0IG9mIHRoZSBieXRlIHN0cmluZyBgYGInTm9ib2R5IGluc3BlY3RzIHRoZQogc3BhbW1pc2ggcmVwZXRpdGlvbidgYDo6CiAKICAgID4+PiBpbXBvcnQgaGFzaGxpYgotICAgPj4+IG0gPSBoYXNobGliLm1kNSgpCisgICA+Pj4gbSA9IGhhc2hsaWIuc2hhMjU2KCkKICAgID4+PiBtLnVwZGF0ZShiIk5vYm9keSBpbnNwZWN0cyIpCiAgICA+Pj4gbS51cGRhdGUoYiIgdGhlIHNwYW1taXNoIHJlcGV0aXRpb24iKQogICAgPj4+IG0uZGlnZXN0KCkKLSAgIGInXHhiYmRceDljXHg4M1x4ZGRceDFlXHhhNVx4YzlceGQ5XHhkZVx4YzlceGExXHg4ZFx4ZjBceGZmXHhlOScKKyAgIGInXHgwM1x4MWVceGRkfUFlXHgxNVx4OTNceGM1XHhmZVxcXHgwMG9ceGE1dSs3XHhmZFx4ZGZceGY3XHhiY05ceDg0Olx4YTZceGFmXHgwY1x4OTVceDBmS1x4OTRceDA2JwogICAgPj4+IG0uZGlnZXN0X3NpemUKLSAgIDE2CisgICAzMgogICAgPj4+IG0uYmxvY2tfc2l6ZQogICAgNjQKIApAQCAtMTA3LDcgKzExOSw5IEBACiAuLiBkYXRhOjogYWxnb3JpdGhtc19ndWFyYW50ZWVkCiAKICAgIEEgc2V0IGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBoYXNoIGFsZ29yaXRobXMgZ3VhcmFudGVlZCB0byBiZSBzdXBwb3J0ZWQKLSAgIGJ5IHRoaXMgbW9kdWxlIG9uIGFsbCBwbGF0Zm9ybXMuCisgICBieSB0aGlzIG1vZHVsZSBvbiBhbGwgcGxhdGZvcm1zLiAgTm90ZSB0aGF0ICdtZDUnIGlzIGluIHRoaXMgbGlzdCBkZXNwaXRlCisgICBzb21lIHVwc3RyZWFtIHZlbmRvcnMgb2ZmZXJpbmcgYW4gb2RkICJGSVBTIGNvbXBsaWFudCIgUHl0aG9uIGJ1aWxkIHRoYXQKKyAgIGV4Y2x1ZGVzIGl0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMTgxLDYgKzE5NSwyOCBAQAogICAgY29tcHV0ZSB0aGUgZGlnZXN0cyBvZiBkYXRhIHNoYXJpbmcgYSBjb21tb24gaW5pdGlhbCBzdWJzdHJpbmcuCiAKIAorU0hBS0UgdmFyaWFibGUgbGVuZ3RoIGRpZ2VzdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6ZnVuYzpgc2hha2VfMTI4YCBhbmQgOmZ1bmM6YHNoYWtlXzI1NmAgYWxnb3JpdGhtcyBwcm92aWRlIHZhcmlhYmxlCitsZW5ndGggZGlnZXN0cyB3aXRoIGxlbmd0aF9pbl9iaXRzLy8yIHVwIHRvIDEyOCBvciAyNTYgYml0cyBvZiBzZWN1cml0eS4KK0FzIHN1Y2gsIHRoZWlyIGRpZ2VzdCBtZXRob2RzIHJlcXVpcmUgYSBsZW5ndGguIE1heGltdW0gbGVuZ3RoIGlzIG5vdCBsaW1pdGVkCitieSB0aGUgU0hBS0UgYWxnb3JpdGhtLgorCisuLiBtZXRob2Q6OiBzaGFrZS5kaWdlc3QobGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIGRpZ2VzdCBvZiB0aGUgZGF0YSBwYXNzZWQgdG8gdGhlIDptZXRoOmB1cGRhdGVgIG1ldGhvZCBzbyBmYXIuCisgICBUaGlzIGlzIGEgYnl0ZXMgb2JqZWN0IG9mIHNpemUgYGBsZW5ndGhgYCB3aGljaCBtYXkgY29udGFpbiBieXRlcyBpbgorICAgdGhlIHdob2xlIHJhbmdlIGZyb20gMCB0byAyNTUuCisKKworLi4gbWV0aG9kOjogc2hha2UuaGV4ZGlnZXN0KGxlbmd0aCkKKworICAgTGlrZSA6bWV0aDpgZGlnZXN0YCBleGNlcHQgdGhlIGRpZ2VzdCBpcyByZXR1cm5lZCBhcyBhIHN0cmluZyBvYmplY3Qgb2YKKyAgIGRvdWJsZSBsZW5ndGgsIGNvbnRhaW5pbmcgb25seSBoZXhhZGVjaW1hbCBkaWdpdHMuICBUaGlzIG1heSBiZSB1c2VkIHRvCisgICBleGNoYW5nZSB0aGUgdmFsdWUgc2FmZWx5IGluIGVtYWlsIG9yIG90aGVyIG5vbi1iaW5hcnkgZW52aXJvbm1lbnRzLgorCisKIEtleSBkZXJpdmF0aW9uCiAtLS0tLS0tLS0tLS0tLQogCkBAIC0yMjEsNiArMjU3LDI5IEBACiAgICAgICBQeXRob24gaW1wbGVtZW50YXRpb24gdXNlcyBhbiBpbmxpbmUgdmVyc2lvbiBvZiA6bW9kOmBobWFjYC4gSXQgaXMgYWJvdXQKICAgICAgIHRocmVlIHRpbWVzIHNsb3dlciBhbmQgZG9lc24ndCByZWxlYXNlIHRoZSBHSUwuCiAKKy4uIGZ1bmN0aW9uOjogc2NyeXB0KHBhc3N3b3JkLCAqLCBzYWx0LCBuLCByLCBwLCBtYXhtZW09MCwgZGtsZW49NjQpCisKKyAgIFRoZSBmdW5jdGlvbiBwcm92aWRlcyBzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gYXMKKyAgIGRlZmluZWQgaW4gOnJmYzpgNzkxNGAuCisKKyAgICpwYXNzd29yZCogYW5kICpzYWx0KiBtdXN0IGJlIGJ5dGVzLWxpa2Ugb2JqZWN0cy4gQXBwbGljYXRpb25zIGFuZAorICAgbGlicmFyaWVzIHNob3VsZCBsaW1pdCAqcGFzc3dvcmQqIHRvIGEgc2Vuc2libGUgbGVuZ3RoIChlLmcuIDEwMjQpLiAqc2FsdCoKKyAgIHNob3VsZCBiZSBhYm91dCAxNiBvciBtb3JlIGJ5dGVzIGZyb20gYSBwcm9wZXIgc291cmNlLCBlLmcuIDpmdW5jOmBvcy51cmFuZG9tYC4KKworICAgKm4qIGlzIHRoZSBDUFUvTWVtb3J5IGNvc3QgZmFjdG9yLCAqciogdGhlIGJsb2NrIHNpemUsICpwKiBwYXJhbGxlbGl6YXRpb24KKyAgIGZhY3RvciBhbmQgKm1heG1lbSogbGltaXRzIG1lbW9yeSAoT3BlblNTTCAxLjEuMCBkZWZhdWx0cyB0byAzMiBNQikuCisgICAqZGtsZW4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIGRlcml2ZWQga2V5LgorCisgICBBdmFpbGFiaWxpdHk6IE9wZW5TU0wgMS4xKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCitCTEFLRTIKKy0tLS0tLQorCitCTEFLRTIgdGFrZXMgYWRkaXRpb25hbCBhcmd1bWVudHMsIHNlZSA6cmVmOmBoYXNobGliLWJsYWtlMmAuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIzMCw2ICsyODksOCBAQAogICAgTW9kdWxlIDptb2Q6YGJhc2U2NGAKICAgICAgIEFub3RoZXIgd2F5IHRvIGVuY29kZSBiaW5hcnkgaGFzaGVzIGZvciBub24tYmluYXJ5IGVudmlyb25tZW50cy4KIAorICAgU2VlIDpyZWY6YGhhc2hsaWItYmxha2UyYC4KKwogICAgaHR0cDovL2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL2ZpcHMvZmlwczE4MC0yL2ZpcHMxODAtMi5wZGYKICAgICAgIFRoZSBGSVBTIDE4MC0yIHB1YmxpY2F0aW9uIG9uIFNlY3VyZSBIYXNoIEFsZ29yaXRobXMuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAppbmRleCBkODYzZmU5Li4xN2YyODlkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CkBAIC02OSwxMyArNjksNiBAQAogICAgbXVzdCBiZSBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIHZhcmlvdXMgU1NMCiAgICBvcHRpb25zLgogCi0gICAqa2V5X2ZpbGUqIGFuZCAqY2VydF9maWxlKiBhcmUgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZQotICAgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0Ci0gICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQotICAgY2VydGlmaWNhdGVzIGZvciB5b3UuICBUaGUgKmNoZWNrX2hvc3RuYW1lKiBwYXJhbWV0ZXIgaXMgYWxzbyBkZXByZWNhdGVkOyB0aGUKLSAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYXR0cmlidXRlIG9mICpjb250ZXh0KiBzaG91bGQgYmUgdXNlZAotICAgaW5zdGVhZC4KLQogICAgUGxlYXNlIHJlYWQgOnJlZjpgc3NsLXNlY3VyaXR5YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBiZXN0IHByYWN0aWNlcy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKQEAgLTk1LDYgKzg4LDE3IEBACiAgICAgICA6ZnVuYzpgc3NsLl9jcmVhdGVfdW52ZXJpZmllZF9jb250ZXh0YCBjYW4gYmUgcGFzc2VkIHRvIHRoZSAqY29udGV4dCoKICAgICAgIHBhcmFtZXRlci4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleV9maWxlKiBhbmQgKmNlcnRfZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKworICAgICAgIFRoZSAqY2hlY2tfaG9zdG5hbWUqIHBhcmFtZXRlciBpcyBhbHNvIGRlcHJlY2F0ZWQ7IHRoZQorICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYXR0cmlidXRlIG9mICpjb250ZXh0KiBzaG91bGQKKyAgICAgICBiZSB1c2VkIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBIVFRQUmVzcG9uc2Uoc29jaywgZGVidWdsZXZlbD0wLCBtZXRob2Q9Tm9uZSwgdXJsPU5vbmUpCiAKQEAgLTIxNywzOSArMjIxLDYxIEBACiA6Y2xhc3M6YEhUVFBDb25uZWN0aW9uYCBpbnN0YW5jZXMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CiAKIAotLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24ucmVxdWVzdChtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9KQorLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24ucmVxdWVzdChtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9LCAqLCBcCisgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1GYWxzZSkKIAogICAgVGhpcyB3aWxsIHNlbmQgYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIEhUVFAgcmVxdWVzdAogICAgbWV0aG9kICptZXRob2QqIGFuZCB0aGUgc2VsZWN0b3IgKnVybCouCiAKICAgIElmICpib2R5KiBpcyBzcGVjaWZpZWQsIHRoZSBzcGVjaWZpZWQgZGF0YSBpcyBzZW50IGFmdGVyIHRoZSBoZWFkZXJzIGFyZQotICAgZmluaXNoZWQuICBJdCBtYXkgYmUgYSBzdHJpbmcsIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCwgYW4gb3BlbgotICAgOnRlcm06YGZpbGUgb2JqZWN0YCwgb3IgYW4gaXRlcmFibGUgb2YgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YFxzLiAgSWYKLSAgICpib2R5KiBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZCBhcyBJU08tODg1OS0xLCB0aGUgZGVmYXVsdCBmb3IgSFRUUC4gIElmCi0gICBpdCBpcyBhIGJ5dGVzLWxpa2Ugb2JqZWN0IHRoZSBieXRlcyBhcmUgc2VudCBhcyBpcy4gIElmIGl0IGlzIGEgOnRlcm06YGZpbGUKLSAgIG9iamVjdGAsIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBpcyBzZW50OyB0aGlzIGZpbGUgb2JqZWN0IHNob3VsZCBzdXBwb3J0Ci0gICBhdCBsZWFzdCB0aGUgYGByZWFkKClgYCBtZXRob2QuICBJZiB0aGUgZmlsZSBvYmplY3QgaGFzIGEgYGBtb2RlYGAKLSAgIGF0dHJpYnV0ZSwgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGBgcmVhZCgpYGAgbWV0aG9kIHdpbGwgYmUgZW5jb2RlZCBhcwotICAgSVNPLTg4NTktMSB1bmxlc3MgdGhlIGBgbW9kZWBgIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgc3Vic3RyaW5nIGBgYmBgLAotICAgb3RoZXJ3aXNlIHRoZSBkYXRhIHJldHVybmVkIGJ5IGBgcmVhZCgpYGAgaXMgc2VudCBhcyBpcy4gIElmICpib2R5KiBpcyBhbgotICAgaXRlcmFibGUsIHRoZSBlbGVtZW50cyBvZiB0aGUgaXRlcmFibGUgYXJlIHNlbnQgYXMgaXMgdW50aWwgdGhlIGl0ZXJhYmxlIGlzCi0gICBleGhhdXN0ZWQuCisgICBmaW5pc2hlZC4gIEl0IG1heSBiZSBhIDpjbGFzczpgc3RyYCwgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLCBhbgorICAgb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLCBvciBhbiBpdGVyYWJsZSBvZiA6Y2xhc3M6YGJ5dGVzYC4gIElmICpib2R5KgorICAgaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgdGhlIGRlZmF1bHQgZm9yIEhUVFAuICBJZiBpdAorICAgaXMgYSBieXRlcy1saWtlIG9iamVjdCwgdGhlIGJ5dGVzIGFyZSBzZW50IGFzIGlzLiAgSWYgaXQgaXMgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YCwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGlzIHNlbnQ7IHRoaXMgZmlsZSBvYmplY3Qgc2hvdWxkCisgICBzdXBwb3J0IGF0IGxlYXN0IHRoZSBgYHJlYWQoKWBgIG1ldGhvZC4gIElmIHRoZSBmaWxlIG9iamVjdCBpcyBhbgorICAgaW5zdGFuY2Ugb2YgOmNsYXNzOmBpby5UZXh0SU9CYXNlYCwgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGBgcmVhZCgpYGAKKyAgIG1ldGhvZCB3aWxsIGJlIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgb3RoZXJ3aXNlIHRoZSBkYXRhIHJldHVybmVkIGJ5CisgICBgYHJlYWQoKWBgIGlzIHNlbnQgYXMgaXMuICBJZiAqYm9keSogaXMgYW4gaXRlcmFibGUsIHRoZSBlbGVtZW50cyBvZiB0aGUKKyAgIGl0ZXJhYmxlIGFyZSBzZW50IGFzIGlzIHVudGlsIHRoZSBpdGVyYWJsZSBpcyBleGhhdXN0ZWQuCiAKLSAgIFRoZSAqaGVhZGVycyogYXJndW1lbnQgc2hvdWxkIGJlIGEgbWFwcGluZyBvZiBleHRyYSBIVFRQCi0gICBoZWFkZXJzIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC4KKyAgIFRoZSAqaGVhZGVycyogYXJndW1lbnQgc2hvdWxkIGJlIGEgbWFwcGluZyBvZiBleHRyYSBIVFRQIGhlYWRlcnMgdG8gc2VuZAorICAgd2l0aCB0aGUgcmVxdWVzdC4KIAotICAgSWYgKmhlYWRlcnMqIGRvZXMgbm90IGNvbnRhaW4gYSBDb250ZW50LUxlbmd0aCBpdGVtLCBvbmUgaXMgYWRkZWQKLSAgIGF1dG9tYXRpY2FsbHkgaWYgcG9zc2libGUuICBJZiAqYm9keSogaXMgYGBOb25lYGAsIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIKLSAgIGlzIHNldCB0byBgYDBgYCBmb3IgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKGBgUFVUYGAsIGBgUE9TVGBgLCBhbmQKLSAgIGBgUEFUQ0hgYCkuICBJZiAqYm9keSogaXMgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0LCB0aGUgQ29udGVudC1MZW5ndGgKLSAgIGhlYWRlciBpcyBzZXQgdG8gaXRzIGxlbmd0aC4gIElmICpib2R5KiBpcyBhIDp0ZXJtOmBmaWxlIG9iamVjdGAgYW5kIGl0Ci0gICB3b3JrcyB0byBjYWxsIDpmdW5jOmB+b3MuZnN0YXRgIG9uIHRoZSByZXN1bHQgb2YgaXRzIGBgZmlsZW5vKClgYCBtZXRob2QsCi0gICB0aGVuIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgc2V0IHRvIHRoZSBgYHN0X3NpemVgYCByZXBvcnRlZCBieSB0aGUKLSAgIGBgZnN0YXRgYCBjYWxsLiAgT3RoZXJ3aXNlIG5vIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpcyBhZGRlZC4KKyAgIElmICpoZWFkZXJzKiBjb250YWlucyBuZWl0aGVyIENvbnRlbnQtTGVuZ3RoIG5vciBUcmFuc2Zlci1FbmNvZGluZywKKyAgIGJ1dCB0aGVyZSBpcyBhIHJlcXVlc3QgYm9keSwgb25lIG9mIHRob3NlCisgICBoZWFkZXIgZmllbGRzIHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS4gIElmCisgICAqYm9keSogaXMgYGBOb25lYGAsIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgc2V0IHRvIGBgMGBgIGZvcgorICAgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKGBgUFVUYGAsIGBgUE9TVGBgLCBhbmQgYGBQQVRDSGBgKS4gIElmCisgICAqYm9keSogaXMgYSBzdHJpbmcgb3IgYSBieXRlcy1saWtlIG9iamVjdCB0aGF0IGlzIG5vdCBhbHNvIGEKKyAgIDp0ZXJtOmBmaWxlIDxmaWxlIG9iamVjdD5gLCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGlzCisgICBzZXQgdG8gaXRzIGxlbmd0aC4gIEFueSBvdGhlciB0eXBlIG9mICpib2R5KiAoZmlsZXMKKyAgIGFuZCBpdGVyYWJsZXMgaW4gZ2VuZXJhbCkgd2lsbCBiZSBjaHVuay1lbmNvZGVkLCBhbmQgdGhlCisgICBUcmFuc2Zlci1FbmNvZGluZyBoZWFkZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNldCBpbnN0ZWFkIG9mCisgICBDb250ZW50LUxlbmd0aC4KKworICAgVGhlICplbmNvZGVfY2h1bmtlZCogYXJndW1lbnQgaXMgb25seSByZWxldmFudCBpZiBUcmFuc2Zlci1FbmNvZGluZyBpcworICAgc3BlY2lmaWVkIGluICpoZWFkZXJzKi4gIElmICplbmNvZGVfY2h1bmtlZCogaXMgYGBGYWxzZWBgLCB0aGUKKyAgIEhUVFBDb25uZWN0aW9uIG9iamVjdCBhc3N1bWVzIHRoYXQgYWxsIGVuY29kaW5nIGlzIGhhbmRsZWQgYnkgdGhlCisgICBjYWxsaW5nIGNvZGUuICBJZiBpdCBpcyBgYFRydWVgYCwgdGhlIGJvZHkgd2lsbCBiZSBjaHVuay1lbmNvZGVkLgorCisgICAuLiBub3RlOjoKKyAgICAgIENodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIEhUVFAgcHJvdG9jb2wKKyAgICAgIHZlcnNpb24gMS4xLiAgVW5sZXNzIHRoZSBIVFRQIHNlcnZlciBpcyBrbm93biB0byBoYW5kbGUgSFRUUCAxLjEsCisgICAgICB0aGUgY2FsbGVyIG11c3QgZWl0aGVyIHNwZWNpZnkgdGhlIENvbnRlbnQtTGVuZ3RoLCBvciBtdXN0IHBhc3MgYQorICAgICAgOmNsYXNzOmBzdHJgIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0IHRoYXQgaXMgbm90IGFsc28gYSBmaWxlIGFzIHRoZQorICAgICAgYm9keSByZXByZXNlbnRhdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICAqYm9keSogY2FuIG5vdyBiZSBhbiBpdGVyYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIElmIG5laXRoZXIgQ29udGVudC1MZW5ndGggbm9yIFRyYW5zZmVyLUVuY29kaW5nIGFyZSBzZXQgaW4KKyAgICAgICpoZWFkZXJzKiwgZmlsZSBhbmQgaXRlcmFibGUgKmJvZHkqIG9iamVjdHMgYXJlIG5vdyBjaHVuay1lbmNvZGVkLgorICAgICAgVGhlICplbmNvZGVfY2h1bmtlZCogYXJndW1lbnQgd2FzIGFkZGVkLgorICAgICAgTm8gYXR0ZW1wdCBpcyBtYWRlIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1MZW5ndGggZm9yIGZpbGUKKyAgICAgIG9iamVjdHMuCisKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLmdldHJlc3BvbnNlKCkKIAogICAgU2hvdWxkIGJlIGNhbGxlZCBhZnRlciBhIHJlcXVlc3QgaXMgc2VudCB0byBnZXQgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KQEAgLTMzNSwxMyArMzYxLDMyIEBACiAgICBhbiBhcmd1bWVudC4KIAogCi0uLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5lbmRoZWFkZXJzKG1lc3NhZ2VfYm9keT1Ob25lKQorLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uZW5kaGVhZGVycyhtZXNzYWdlX2JvZHk9Tm9uZSwgKiwgZW5jb2RlX2NodW5rZWQ9RmFsc2UpCiAKICAgIFNlbmQgYSBibGFuayBsaW5lIHRvIHRoZSBzZXJ2ZXIsIHNpZ25hbGxpbmcgdGhlIGVuZCBvZiB0aGUgaGVhZGVycy4gVGhlCiAgICBvcHRpb25hbCAqbWVzc2FnZV9ib2R5KiBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwYXNzIGEgbWVzc2FnZSBib2R5Ci0gICBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuICBUaGUgbWVzc2FnZSBib2R5IHdpbGwgYmUgc2VudCBpbiB0aGUgc2FtZQotICAgcGFja2V0IGFzIHRoZSBtZXNzYWdlIGhlYWRlcnMgaWYgaXQgaXMgc3RyaW5nLCBvdGhlcndpc2UgaXQgaXMgc2VudCBpbiBhCi0gICBzZXBhcmF0ZSBwYWNrZXQuCisgICBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuCisKKyAgIElmICplbmNvZGVfY2h1bmtlZCogaXMgYGBUcnVlYGAsIHRoZSByZXN1bHQgb2YgZWFjaCBpdGVyYXRpb24gb2YKKyAgICptZXNzYWdlX2JvZHkqIHdpbGwgYmUgY2h1bmstZW5jb2RlZCBhcyBzcGVjaWZpZWQgaW4gOnJmYzpgNzIzMGAsCisgICBTZWN0aW9uIDMuMy4xLiAgSG93IHRoZSBkYXRhIGlzIGVuY29kZWQgaXMgZGVwZW5kZW50IG9uIHRoZSB0eXBlIG9mCisgICAqbWVzc2FnZV9ib2R5Ki4gIElmICptZXNzYWdlX2JvZHkqIGltcGxlbWVudHMgdGhlIDpyZWY6YGJ1ZmZlciBpbnRlcmZhY2UKKyAgIDxidWZmZXJvYmplY3RzPmAgdGhlIGVuY29kaW5nIHdpbGwgcmVzdWx0IGluIGEgc2luZ2xlIGNodW5rLgorICAgSWYgKm1lc3NhZ2VfYm9keSogaXMgYSA6Y2xhc3M6YGNvbGxlY3Rpb25zLkl0ZXJhYmxlYCwgZWFjaCBpdGVyYXRpb24KKyAgIG9mICptZXNzYWdlX2JvZHkqIHdpbGwgcmVzdWx0IGluIGEgY2h1bmsuICBJZiAqbWVzc2FnZV9ib2R5KiBpcyBhCisgICA6dGVybTpgZmlsZSBvYmplY3RgLCBlYWNoIGNhbGwgdG8gYGAucmVhZCgpYGAgd2lsbCByZXN1bHQgaW4gYSBjaHVuay4KKyAgIFRoZSBtZXRob2QgYXV0b21hdGljYWxseSBzaWduYWxzIHRoZSBlbmQgb2YgdGhlIGNodW5rLWVuY29kZWQgZGF0YQorICAgaW1tZWRpYXRlbHkgYWZ0ZXIgKm1lc3NhZ2VfYm9keSouCisKKyAgIC4uIG5vdGU6OiBEdWUgdG8gdGhlIGNodW5rZWQgZW5jb2Rpbmcgc3BlY2lmaWNhdGlvbiwgZW1wdHkgY2h1bmtzCisgICAgICB5aWVsZGVkIGJ5IGFuIGl0ZXJhdG9yIGJvZHkgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBjaHVuay1lbmNvZGVyLgorICAgICAgVGhpcyBpcyB0byBhdm9pZCBwcmVtYXR1cmUgdGVybWluYXRpb24gb2YgdGhlIHJlYWQgb2YgdGhlIHJlcXVlc3QgYnkKKyAgICAgIHRoZSB0YXJnZXQgc2VydmVyIGR1ZSB0byBtYWxmb3JtZWQgZW5jb2RpbmcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQ2h1bmtlZCBlbmNvZGluZyBzdXBwb3J0LiAgVGhlICplbmNvZGVfY2h1bmtlZCogcGFyYW1ldGVyIHdhcworICAgICAgYWRkZWQuCisKIAogLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uc2VuZChkYXRhKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKaW5kZXggMTZjNGZhYy4uYzFlYTg3MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdApAQCAtOTgsOCArOTgsOCBAQAogCiAgICAuLiBhdHRyaWJ1dGU6OiByZmlsZQogCi0gICAgICBDb250YWlucyBhbiBpbnB1dCBzdHJlYW0sIHBvc2l0aW9uZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBvcHRpb25hbCBpbnB1dAotICAgICAgZGF0YS4KKyAgICAgIEFuIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIGlucHV0IHN0cmVhbSwgcmVhZHkgdG8gcmVhZCBmcm9tCisgICAgICB0aGUgc3RhcnQgb2YgdGhlIG9wdGlvbmFsIGlucHV0IGRhdGEuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IHdmaWxlCiAKQEAgLTEwNyw2ICsxMDcsOSBAQAogICAgICAgY2xpZW50LiBQcm9wZXIgYWRoZXJlbmNlIHRvIHRoZSBIVFRQIHByb3RvY29sIG11c3QgYmUgdXNlZCB3aGVuIHdyaXRpbmcgdG8KICAgICAgIHRoaXMgc3RyZWFtLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgVGhpcyBpcyBhbiA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCBzdHJlYW0uCisKICAgIDpjbGFzczpgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcmAgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKIAogICAgLi4gYXR0cmlidXRlOjogc2VydmVyX3ZlcnNpb24KQEAgLTM2OSwxMCArMzcyLDkgQEAKIAogICAgSGFuZGxlciA9IGh0dHAuc2VydmVyLlNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcgogCi0gICBodHRwZCA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKCIiLCBQT1JUKSwgSGFuZGxlcikKLQotICAgcHJpbnQoInNlcnZpbmcgYXQgcG9ydCIsIFBPUlQpCi0gICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoIiIsIFBPUlQpLCBIYW5kbGVyKSBhcyBodHRwZDoKKyAgICAgICBwcmludCgic2VydmluZyBhdCBwb3J0IiwgUE9SVCkKKyAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogLi4gX2h0dHAtc2VydmVyLWNsaToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAppbmRleCBjMjVlN2Q4Li43MDI0YTFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdApAQCAtMTAzLDYgKzEwMywxNCBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKnNzbF9jb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKwogVGhlIHNlY29uZCBzdWJjbGFzcyBhbGxvd3MgZm9yIGNvbm5lY3Rpb25zIGNyZWF0ZWQgYnkgYSBjaGlsZCBwcm9jZXNzOgogCiAKQEAgLTUwMCw2ICs1MDgsMTcgQEAKICAgICAgICAgIE0uc3RvcmUobnVtLCAnK0ZMQUdTJywgJ1xcRGVsZXRlZCcpCiAgICAgICBNLmV4cHVuZ2UoKQogCisgICAuLiBub3RlOjoKKworICAgICAgQ3JlYXRpbmcgZmxhZ3MgY29udGFpbmluZyAnXScgKGZvciBleGFtcGxlOiAiW3Rlc3RdIikgdmlvbGF0ZXMKKyAgICAgIDpyZmM6YDM1MDFgICh0aGUgSU1BUCBwcm90b2NvbCkuICBIb3dldmVyLCBpbWFwbGliIGhhcyBoaXN0b3JpY2FsbHkKKyAgICAgIGFsbG93ZWQgY3JlYXRpb24gb2Ygc3VjaCB0YWdzLCBhbmQgcG9wdWxhciBJTUFQIHNlcnZlcnMsIHN1Y2ggYXMgR21haWwsCisgICAgICBhY2NlcHQgYW5kIHByb2R1Y2Ugc3VjaCBmbGFncy4gIFRoZXJlIGFyZSBub24tUHl0aG9uIHByb2dyYW1zIHdoaWNoIGFsc28KKyAgICAgIGNyZWF0ZSBzdWNoIHRhZ3MuICBBbHRob3VnaCBpdCBpcyBhbiBSRkMgdmlvbGF0aW9uIGFuZCBJTUFQIGNsaWVudHMgYW5kCisgICAgICBzZXJ2ZXJzIGFyZSBzdXBwb3NlZCB0byBiZSBzdHJpY3QsIGltYXBsaWIgbm9uZXRoZWxlc3MgY29udGludWVzIHRvIGFsbG93CisgICAgICBzdWNoIHRhZ3MgdG8gYmUgY3JlYXRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbmQgYXMgb2YKKyAgICAgIHB5dGhvbiAzLjYsIGhhbmRsZXMgdGhlbSBpZiB0aGV5IGFyZSBzZW50IGZyb20gdGhlIHNlcnZlciwgc2luY2UgdGhpcworICAgICAgaW1wcm92ZXMgcmVhbC13b3JsZCBjb21wYXRpYmlsaXR5LgogCiAuLiBtZXRob2Q6OiBJTUFQNC5zdWJzY3JpYmUobWFpbGJveCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wLnJzdCBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKaW5kZXggOTgyOGJhNi4uY2NmNWY5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXAucnN0CkBAIC04NSw3ICs4NSw5IEBACiAgICAuLiBkZXByZWNhdGVkOjogMy4zCiAgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLmZpbmRfc3BlY2AgaW5zdGVhZCB1bmxlc3MgUHl0aG9uIDMuMwogICAgICAgY29tcGF0aWJpbGl0eSBpcyByZXF1aXJlZCwgaW4gd2hpY2ggY2FzZSB1c2UKLSAgICAgIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgLgorICAgICAgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAuIEZvciBleGFtcGxlIHVzYWdlIG9mIHRoZSBmb3JtZXIgY2FzZSwKKyAgICAgIHNlZSB0aGUgOnJlZjpgaW1wb3J0bGliLWV4YW1wbGVzYCBzZWN0aW9uIG9mIHRoZSA6bW9kOmBpbXBvcnRsaWJgCisgICAgICBkb2N1bWVudGF0aW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogbG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uKQpAQCAtMTEyLDkgKzExNCwxMiBAQAogICAgICAgSWYgcHJldmlvdXNseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggOmZ1bmM6YGltcC5maW5kX21vZHVsZWAgdGhlbgogICAgICAgY29uc2lkZXIgdXNpbmcgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCwgb3RoZXJ3aXNlIHVzZSB0aGUgbG9hZGVyCiAgICAgICByZXR1cm5lZCBieSB0aGUgcmVwbGFjZW1lbnQgeW91IGNob3NlIGZvciA6ZnVuYzpgaW1wLmZpbmRfbW9kdWxlYC4gSWYgeW91Ci0gICAgICBjYWxsZWQgOmZ1bmM6YGltcC5sb2FkX21vZHVsZWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGRpcmVjdGx5IHRoZW4gdXNlIHRoZQotICAgICAgY2xhc3NlcyBpbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCwgZS5nLgotICAgICAgYGBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkubG9hZF9tb2R1bGUoKWBgLgorICAgICAgY2FsbGVkIDpmdW5jOmBpbXAubG9hZF9tb2R1bGVgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSB3aXRoIGZpbGUKKyAgICAgIHBhdGggYXJndW1lbnRzIHRoZW4gdXNlIGEgY29tYmluYXRpb24gb2YKKyAgICAgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbmAgYW5kCisgICAgICA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlY2AuIFNlZSB0aGUgOnJlZjpgaW1wb3J0bGliLWV4YW1wbGVzYAorICAgICAgc2VjdGlvbiBvZiB0aGUgOm1vZDpgaW1wb3J0bGliYCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIHRoZSB2YXJpb3VzCisgICAgICBhcHByb2FjaGVzLgogCiAKIC4uIGZ1bmN0aW9uOjogbmV3X21vZHVsZShuYW1lKQpAQCAtMTIzLDcgKzEyOCw3IEBACiAgICBpbiBgYHN5cy5tb2R1bGVzYGAuCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKLSAgICAgIFVzZSA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIGluc3RlYWQuCisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWNgIGluc3RlYWQuCiAKIAogLi4gZnVuY3Rpb246OiByZWxvYWQobW9kdWxlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKaW5kZXggM2Q4MzUwOS4uMGQzMTRhNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgIG1vZHVsZSBhbmQgKnBhdGgqIHdpbGwgYmUgdGhlIHZhbHVlIG9mIDphdHRyOmBfX3BhdGhfX2AgZnJvbSB0aGUKICAgICAgIHBhcmVudCBwYWNrYWdlLiBJZiBhIHNwZWMgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KICAgICAgIFdoZW4gcGFzc2VkIGluLCBgYHRhcmdldGBgIGlzIGEgbW9kdWxlIG9iamVjdCB0aGF0IHRoZSBmaW5kZXIgbWF5Ci0gICAgICB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KKyAgICAgIHVzZSB0byBtYWtlIGEgbW9yZSBlZHVjYXRlZCBndWVzcyBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMzE3LDcgKzMxNyw3IEBACiAgICAgICB3aXRoaW4gdGhlIDp0ZXJtOmBwYXRoIGVudHJ5YCB0byB3aGljaCBpdCBpcyBhc3NpZ25lZC4gIElmIGEgc3BlYwogICAgICAgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4gIFdoZW4gcGFzc2VkIGluLCBgYHRhcmdldGBgCiAgICAgICBpcyBhIG1vZHVsZSBvYmplY3QgdGhhdCB0aGUgZmluZGVyIG1heSB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQKLSAgICAgIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCisgICAgICBndWVzcyBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMzc5LDEwICszNzksMTQgQEAKIAogICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IGV4ZWN1dGVzIHRoZSBtb2R1bGUgaW4gaXRzIG93biBuYW1lc3BhY2UKICAgICAgICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG9yIHJlbG9hZGVkLiAgVGhlIG1vZHVsZSBzaG91bGQgYWxyZWFkeQotICAgICAgIGJlIGluaXRpYWxpemVkIHdoZW4gZXhlY19tb2R1bGUoKSBpcyBjYWxsZWQuCisgICAgICAgYmUgaW5pdGlhbGl6ZWQgd2hlbiBgYGV4ZWNfbW9kdWxlKClgYCBpcyBjYWxsZWQuIFdoZW4gdGhpcyBtZXRob2QgZXhpc3RzLAorICAgICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBiZSBkZWZpbmVkLgogCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBhbHNvIGJlIGRlZmluZWQuCisKICAgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKIAogICAgICAgICBBIGxlZ2FjeSBtZXRob2QgZm9yIGxvYWRpbmcgYSBtb2R1bGUuIElmIHRoZSBtb2R1bGUgY2Fubm90IGJlCkBAIC05MzYsNiArOTQwLDEwIEBACiAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHdoZXJlCiAgICAgICBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCBpcyBvcHRpb25hbC4KIAorICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgICBVc2UgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpbnN0ZWFkLgorCiAKIC4uIGNsYXNzOjogU291cmNlbGVzc0ZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCiAKQEAgLTk3NSw2ICs5ODMsMTAgQEAKICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgd2hlcmUKICAgIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIGlzIG9wdGlvbmFsLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgIFVzZSA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBFeHRlbnNpb25GaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQogCkBAIC0xMTM3LDYgKzExNDksOSBAQAogICAgICAgVGhlICpvcHRpbWl6YXRpb24qIHBhcmFtZXRlciB3YXMgYWRkZWQgYW5kIHRoZSAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlcgogICAgICAgd2FzIGRlcHJlY2F0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApAQCAtMTE1MCw2ICsxMTY1LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKQogCiAgICBEZWNvZGUgdGhlIGdpdmVuIGJ5dGVzIHJlcHJlc2VudGluZyBzb3VyY2UgY29kZSBhbmQgcmV0dXJuIGl0IGFzIGEgc3RyaW5nCkBAIC0xMTkyLDEyICsxMjEwLDEzIEBACiAKIC4uIGZ1bmN0aW9uOjogbW9kdWxlX2Zyb21fc3BlYyhzcGVjKQogCi0gICBDcmVhdGUgYSBuZXcgbW9kdWxlIGJhc2VkIG9uICoqc3BlYyoqIGFuZCBgYHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoKWBgLgorICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBiYXNlZCBvbiAqKnNwZWMqKiBhbmQKKyAgIDptZXRoOmBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlIDxpbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlPmAuCiAKLSAgIElmIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCB0aGVuIGFueQotICAgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuIEFsc28sIG5vIDpleGM6YEF0dHJpYnV0ZUVycm9yYAotICAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZyAqKnNwZWMqKiBvciBzZXR0aW5nIGFuIGF0dHJpYnV0ZQotICAgb24gdGhlIG1vZHVsZS4KKyAgIElmIDptZXRoOmBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlIDxpbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlPmAKKyAgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgdGhlbiBhbnkgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuCisgICBBbHNvLCBubyA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZworICAgKipzcGVjKiogb3Igc2V0dGluZyBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vZHVsZS4KIAogICAgVGhpcyBmdW5jdGlvbiBpcyBwcmVmZXJyZWQgb3ZlciB1c2luZyA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIHRvIGNyZWF0ZSBhCiAgICBuZXcgbW9kdWxlIGFzICoqc3BlYyoqIGlzIHVzZWQgdG8gc2V0IGFzIG1hbnkgaW1wb3J0LWNvbnRyb2xsZWQgYXR0cmlidXRlcyBvbgpAQCAtMTI1OSw3ICsxMjc4LDggQEAKIAogLi4gZGVjb3JhdG9yOjogc2V0X3BhY2thZ2UKIAotICAgQSA6dGVybTpgZGVjb3JhdG9yYCBmb3IgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB0byBzZXQgdGhlIDphdHRyOmBfX3BhY2thZ2VfX2AgYXR0cmlidXRlIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIElmIDphdHRyOmBfX3BhY2thZ2VfX2AKKyAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgdG8gc2V0IHRoZQorICAgOmF0dHI6YF9fcGFja2FnZV9fYCBhdHRyaWJ1dGUgb24gdGhlIHJldHVybmVkIG1vZHVsZS4gSWYgOmF0dHI6YF9fcGFja2FnZV9fYAogICAgaXMgc2V0IGFuZCBoYXMgYSB2YWx1ZSBvdGhlciB0aGFuIGBgTm9uZWBgIGl0IHdpbGwgbm90IGJlIGNoYW5nZWQuCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKQEAgLTEyODQsNiArMTMwNCw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogLi4gY2xhc3M6OiBMYXp5TG9hZGVyKGxvYWRlcikKIAogICAgQSBjbGFzcyB3aGljaCBwb3N0cG9uZXMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbG9hZGVyIG9mIGEgbW9kdWxlIHVudGlsIHRoZQpAQCAtMTI5MiwxMyArMTMxNSwxMiBAQAogICAgVGhpcyBjbGFzcyAqKm9ubHkqKiB3b3JrcyB3aXRoIGxvYWRlcnMgdGhhdCBkZWZpbmUKICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGFzIGNvbnRyb2wgb3ZlciB3aGF0IG1vZHVsZSB0eXBlCiAgICBpcyB1c2VkIGZvciB0aGUgbW9kdWxlIGlzIHJlcXVpcmVkLiBGb3IgdGhvc2Ugc2FtZSByZWFzb25zLCB0aGUgbG9hZGVyJ3MKLSAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kIHdpbGwgYmUgaWdub3JlZCAoaS5lLiwgdGhlCi0gICBsb2FkZXIncyBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIGBgTm9uZWBgOyB0aGlzIGV4Y2x1ZGVzCi0gICA6Y2xhc3M6YEJ1aWx0aW5JbXBvcnRlcmAgYW5kIDpjbGFzczpgRXh0ZW5zaW9uRmlsZUxvYWRlcmApLiBGaW5hbGx5LAotICAgbW9kdWxlcyB3aGljaCBzdWJzdGl0dXRlIHRoZSBvYmplY3QgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsCi0gICBub3Qgd29yayBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcHJvcGVybHkgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMKLSAgIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHNhZmVseTsgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYQotICAgc3Vic3RpdHV0aW9uIGlzIGRldGVjdGVkLgorICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtZXRob2QgbXVzdCByZXR1cm4gYGBOb25lYGAgb3IgYQorICAgdHlwZSBmb3Igd2hpY2ggaXRzIGBgX19jbGFzc19fYGAgYXR0cmlidXRlIGNhbiBiZSBtdXRhdGVkIGFsb25nIHdpdGggbm90CisgICB1c2luZyA6dGVybTpgc2xvdHMgPF9fc2xvdHNfXz5gLiBGaW5hbGx5LCBtb2R1bGVzIHdoaWNoIHN1YnN0aXR1dGUgdGhlIG9iamVjdAorICAgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsIG5vdCB3b3JrIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwcm9wZXJseQorICAgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgc2FmZWx5OworICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYSBzdWJzdGl0dXRpb24gaXMgZGV0ZWN0ZWQuCiAKICAgIC4uIG5vdGU6OgogICAgICAgRm9yIHByb2plY3RzIHdoZXJlIHN0YXJ0dXAgdGltZSBpcyBjcml0aWNhbCwgdGhpcyBjbGFzcyBhbGxvd3MgZm9yCkBAIC0xMzA5LDYgKzEzMzEsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBCZWdhbiBjYWxsaW5nIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAsIHJlbW92aW5nIHRoZQorICAgICAgY29tcGF0aWJpbGl0eSB3YXJuaW5nIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyYCBhbmQKKyAgICAgIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyYC4KKwogICAgLi4gY2xhc3NtZXRob2Q6OiBmYWN0b3J5KGxvYWRlcikKIAogICAgICAgQSBzdGF0aWMgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjYWxsYWJsZSB0aGF0IGNyZWF0ZXMgYSBsYXp5IGxvYWRlci4gVGhpcwpAQCAtMTMyMCwzICsxMzQ3LDEzOSBAQAogICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIKICAgICAgICAgbGF6eV9sb2FkZXIgPSBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyLmZhY3RvcnkobG9hZGVyKQogICAgICAgICBmaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIocGF0aCwgKGxhenlfbG9hZGVyLCBzdWZmaXhlcykpCisKKy4uIF9pbXBvcnRsaWItZXhhbXBsZXM6CisKK0V4YW1wbGVzCistLS0tLS0tLQorCitJbXBvcnRpbmcgcHJvZ3JhbW1hdGljYWxseQorJycnJycnJycnJycnJycnJycnJycnJycnJycKKworVG8gcHJvZ3JhbW1hdGljYWxseSBpbXBvcnQgYSBtb2R1bGUsIHVzZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliCisKKyAgaXRlcnRvb2xzID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2l0ZXJ0b29scycpCisKKworQ2hlY2tpbmcgaWYgYSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkCisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworSWYgeW91IG5lZWQgdG8gZmluZCBvdXQgaWYgYSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkIHdpdGhvdXQgYWN0dWFsbHkgZG9pbmcgdGhlCitpbXBvcnQsIHRoZW4geW91IHNob3VsZCB1c2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLmZpbmRfc3BlY2AuCis6OgorCisgIGltcG9ydCBpbXBvcnRsaWIudXRpbAorICBpbXBvcnQgc3lzCisKKyAgIyBGb3IgaWxsdXN0cmF0aXZlIHB1cnBvc2VzLgorICBuYW1lID0gJ2l0ZXJ0b29scycKKworICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCisgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgIHByaW50KCJjYW4ndCBmaW5kIHRoZSBpdGVydG9vbHMgbW9kdWxlIikKKyAgZWxzZToKKyAgICAgICMgSWYgeW91IGNob3NlIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBpbXBvcnQgLi4uCisgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICAjIEFkZGluZyB0aGUgbW9kdWxlIHRvIHN5cy5tb2R1bGVzIGlzIG9wdGlvbmFsLgorICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKworCitJbXBvcnRpbmcgYSBzb3VyY2UgZmlsZSBkaXJlY3RseQorJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworVG8gaW1wb3J0IGEgUHl0aG9uIHNvdXJjZSBmaWxlIGRpcmVjdGx5LCB1c2UgdGhlIGZvbGxvd2luZyByZWNpcGUKKyhQeXRob24gMy40IGFuZCBuZXdlciBvbmx5KTo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi51dGlsCisgIGltcG9ydCBzeXMKKworICAjIEZvciBpbGx1c3RyYXRpdmUgcHVycG9zZXMuCisgIGltcG9ydCB0b2tlbml6ZQorICBmaWxlX3BhdGggPSB0b2tlbml6ZS5fX2ZpbGVfXworICBtb2R1bGVfbmFtZSA9IHRva2VuaXplLl9fbmFtZV9fCisKKyAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG1vZHVsZV9uYW1lLCBmaWxlX3BhdGgpCisgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQorICAjIE9wdGlvbmFsOyBvbmx5IG5lY2Vzc2FyeSBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGltcG9ydCB0aGUgbW9kdWxlCisgICMgYnkgbmFtZSBsYXRlci4KKyAgc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdID0gbW9kdWxlCisKKworU2V0dGluZyB1cCBhbiBpbXBvcnRlcgorJycnJycnJycnJycnJycnJycnJycnJworCitGb3IgZGVlcCBjdXN0b21pemF0aW9ucyBvZiBpbXBvcnQsIHlvdSB0eXBpY2FsbHkgd2FudCB0byBpbXBsZW1lbnQgYW4KKzp0ZXJtOmBpbXBvcnRlcmAuIFRoaXMgbWVhbnMgbWFuYWdpbmcgYm90aCB0aGUgOnRlcm06YGZpbmRlcmAgYW5kIDp0ZXJtOmBsb2FkZXJgCitzaWRlIG9mIHRoaW5ncy4gRm9yIGZpbmRlcnMgdGhlcmUgYXJlIHR3byBmbGF2b3VycyB0byBjaG9vc2UgZnJvbSBkZXBlbmRpbmcgb24KK3lvdXIgbmVlZHM6IGEgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgIG9yIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYC4gVGhlCitmb3JtZXIgaXMgd2hhdCB5b3Ugd291bGQgcHV0IG9uIDphdHRyOmBzeXMubWV0YV9wYXRoYCB3aGlsZSB0aGUgbGF0dGVyIGlzIHdoYXQKK3lvdSBjcmVhdGUgdXNpbmcgYSA6dGVybTpgcGF0aCBlbnRyeSBob29rYCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgIHdoaWNoIHdvcmtzCit3aXRoIDphdHRyOmBzeXMucGF0aGAgZW50cmllcyB0byBwb3RlbnRpYWxseSBjcmVhdGUgYSBmaW5kZXIuIFRoaXMgZXhhbXBsZSB3aWxsCitzaG93IHlvdSBob3cgdG8gcmVnaXN0ZXIgeW91ciBvd24gaW1wb3J0ZXJzIHNvIHRoYXQgaW1wb3J0IHdpbGwgdXNlIHRoZW0gKGZvcgorY3JlYXRpbmcgYW4gaW1wb3J0ZXIgZm9yIHlvdXJzZWxmLCByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUKK2NsYXNzZXMgZGVmaW5lZCB3aXRoaW4gdGhpcyBwYWNrYWdlKTo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKKyAgaW1wb3J0IHN5cworCisgICMgRm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3NlcyBvbmx5LgorICBTcGFtTWV0YVBhdGhGaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIKKyAgU3BhbVBhdGhFbnRyeUZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcgorICBsb2FkZXJfZGV0YWlscyA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKQorCisgICMgU2V0dGluZyB1cCBhIG1ldGEgcGF0aCBmaW5kZXIuCisgICMgTWFrZSBzdXJlIHRvIHB1dCB0aGUgZmluZGVyIGluIHRoZSBwcm9wZXIgbG9jYXRpb24gaW4gdGhlIGxpc3QgaW4gdGVybXMgb2YKKyAgIyBwcmlvcml0eS4KKyAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoU3BhbU1ldGFQYXRoRmluZGVyKQorCisgICMgU2V0dGluZyB1cCBhIHBhdGggZW50cnkgZmluZGVyLgorICAjIE1ha2Ugc3VyZSB0byBwdXQgdGhlIHBhdGggaG9vayBpbiB0aGUgcHJvcGVyIGxvY2F0aW9uIGluIHRoZSBsaXN0IGluIHRlcm1zCisgICMgb2YgcHJpb3JpdHkuCisgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChTcGFtUGF0aEVudHJ5RmluZGVyLnBhdGhfaG9vayhsb2FkZXJfZGV0YWlscykpCisKKworQXBwcm94aW1hdGluZyA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgCisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworSW1wb3J0IGl0c2VsZiBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24gY29kZSwgbWFraW5nIGl0IHBvc3NpYmxlIHRvCitleHBvc2UgbW9zdCBvZiB0aGUgaW1wb3J0IG1hY2hpbmVyeSB0aHJvdWdoIGltcG9ydGxpYi4gVGhlIGZvbGxvd2luZworaGVscHMgaWxsdXN0cmF0ZSB0aGUgdmFyaW91cyBBUElzIHRoYXQgaW1wb3J0bGliIGV4cG9zZXMgYnkgcHJvdmlkaW5nIGFuCithcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbiBvZgorOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCAoUHl0aG9uIDMuNCBhbmQgbmV3ZXIgZm9yIHRoZSBpbXBvcnRsaWIgdXNhZ2UsCitQeXRob24gMy42IGFuZCBuZXdlciBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUpLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliLnV0aWwKKyAgaW1wb3J0IHN5cworCisgIGRlZiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSk6CisgICAgICAiIiJBbiBhcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIiIiCisgICAgICBhYnNvbHV0ZV9uYW1lID0gaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpCisgICAgICB0cnk6CisgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW2Fic29sdXRlX25hbWVdCisgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgcGFzcworCisgICAgICBwYXRoID0gTm9uZQorICAgICAgaWYgJy4nIGluIGFic29sdXRlX25hbWU6CisgICAgICAgICAgcGFyZW50X25hbWUsIF8sIGNoaWxkX25hbWUgPSBhYnNvbHV0ZV9uYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgICAgICAgIHBhcmVudF9tb2R1bGUgPSBpbXBvcnRfbW9kdWxlKHBhcmVudF9uYW1lKQorICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLnNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKKyAgICAgIGZvciBmaW5kZXIgaW4gc3lzLm1ldGFfcGF0aDoKKyAgICAgICAgICBzcGVjID0gZmluZGVyLmZpbmRfc3BlYyhhYnNvbHV0ZV9uYW1lLCBwYXRoKQorICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgIGJyZWFrCisgICAgICBlbHNlOgorICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKGYnTm8gbW9kdWxlIG5hbWVkIHthYnNvbHV0ZV9uYW1lIXJ9JykKKyAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICAgIHN5cy5tb2R1bGVzW2Fic29sdXRlX25hbWVdID0gbW9kdWxlCisgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgIHNldGF0dHIocGFyZW50X21vZHVsZSwgY2hpbGRfbmFtZSwgbW9kdWxlKQorICAgICAgcmV0dXJuIG1vZHVsZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAppbmRleCA4ZTdlZDE5Li41Y2I3YzIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdApAQCAtMjM1LDI0ICsyMzUsNiBAQAogICAgICAgbGlzdGVkIGluIHRoZSBtZXRhY2xhc3MnIGN1c3RvbSA6bWV0aDpgX19kaXJfX2AuCiAKIAotLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVpbmZvKHBhdGgpCi0KLSAgIFJldHVybnMgYSA6dGVybTpgbmFtZWQgdHVwbGVgIGBgTW9kdWxlSW5mbyhuYW1lLCBzdWZmaXgsIG1vZGUsIG1vZHVsZV90eXBlKWBgCi0gICBvZiB2YWx1ZXMgdGhhdCBkZXNjcmliZSBob3cgUHl0aG9uIHdpbGwgaW50ZXJwcmV0IHRoZSBmaWxlIGlkZW50aWZpZWQgYnkKLSAgICpwYXRoKiBpZiBpdCBpcyBhIG1vZHVsZSwgb3IgYGBOb25lYGAgaWYgaXQgd291bGQgbm90IGJlIGlkZW50aWZpZWQgYXMgYQotICAgbW9kdWxlLiAgSW4gdGhhdCB0dXBsZSwgKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2l0aG91dCB0aGUgbmFtZSBvZgotICAgYW55IGVuY2xvc2luZyBwYWNrYWdlLCAqc3VmZml4KiBpcyB0aGUgdHJhaWxpbmcgcGFydCBvZiB0aGUgZmlsZSBuYW1lICh3aGljaAotICAgbWF5IG5vdCBiZSBhIGRvdC1kZWxpbWl0ZWQgZXh0ZW5zaW9uKSwgKm1vZGUqIGlzIHRoZSA6ZnVuYzpgb3BlbmAgbW9kZSB0aGF0Ci0gICB3b3VsZCBiZSB1c2VkIChgYCdyJ2BgIG9yIGBgJ3JiJ2BgKSwgYW5kICptb2R1bGVfdHlwZSogaXMgYW4gaW50ZWdlciBnaXZpbmcKLSAgIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUuICAqbW9kdWxlX3R5cGUqIHdpbGwgaGF2ZSBhIHZhbHVlIHdoaWNoIGNhbiBiZQotICAgY29tcGFyZWQgdG8gdGhlIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSA6bW9kOmBpbXBgIG1vZHVsZTsgc2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbW9kdWxlIHR5cGVzLgotCi0gICAuLiBkZXByZWNhdGVkOjogMy4zCi0gICAgICBZb3UgbWF5IGNoZWNrIHRoZSBmaWxlIHBhdGgncyBzdWZmaXggYWdhaW5zdCB0aGUgc3VwcG9ydGVkIHN1ZmZpeGVzCi0gICAgICBsaXN0ZWQgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgdG8gaW5mZXIgdGhlIHNhbWUgaW5mb3JtYXRpb24uCi0KLQogLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5IHRoZSBmaWxlICpwYXRoKiwgd2l0aG91dCBpbmNsdWRpbmcgdGhlCkBAIC0yNjYsOCArMjQ4LDcgQEAKICAgIHN0aWxsIHJldHVybiBgYE5vbmVgYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gdGhlCi0gICAgICBkZXByZWNhdGVkIDpmdW5jOmBnZXRtb2R1bGVpbmZvYC4KKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgLgogCiAKIC4uIGZ1bmN0aW9uOjogaXNtb2R1bGUob2JqZWN0KQpAQCAtNjQ2LDYgKzYyNywxNiBAQAogICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4gIFRoZSBuYW1lIG11c3QgYmUgYSB2YWxpZAogICAgICAgUHl0aG9uIGlkZW50aWZpZXIuCiAKKyAgICAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgICAgQ1B5dGhvbiBnZW5lcmF0ZXMgaW1wbGljaXQgcGFyYW1ldGVyIG5hbWVzIG9mIHRoZSBmb3JtIGBgLjBgYCBvbiB0aGUKKyAgICAgICAgIGNvZGUgb2JqZWN0cyB1c2VkIHRvIGltcGxlbWVudCBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yCisgICAgICAgICBleHByZXNzaW9ucy4KKworICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgICAgIFRoZXNlIHBhcmFtZXRlciBuYW1lcyBhcmUgZXhwb3NlZCBieSB0aGlzIG1vZHVsZSBhcyBuYW1lcyBsaWtlCisgICAgICAgICAgICBgYGltcGxpY2l0MGBgLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZGVmYXVsdAogCiAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlci4gIElmIHRoZSBwYXJhbWV0ZXIgaGFzIG5vIGRlZmF1bHQKQEAgLTg1NCw4ICs4NDUsNiBAQAogICAgZnJvbSBrd29ubHlhcmdzIHRvIGRlZmF1bHRzLiAgKmFubm90YXRpb25zKiBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudAogICAgbmFtZXMgdG8gYW5ub3RhdGlvbnMuCiAKLSAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIDpmdW5jOmBnZXRhcmdzcGVjYC4KLQogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIG9uIDpmdW5jOmBzaWduYXR1cmVgLCBidXQgc3RpbGwgaWdub3JlcwogICAgICAgYGBfX3dyYXBwZWRfX2BgIGF0dHJpYnV0ZXMgYW5kIGluY2x1ZGVzIHRoZSBhbHJlYWR5IGJvdW5kIGZpcnN0CkBAIC04ODQsNyArODczLDcgQEAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnNbLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZSwgZm9ybWF0cmV0dXJucywgZm9ybWF0YW5ub3RhdGlvbnNdXSkKIAogICAgRm9ybWF0IGEgcHJldHR5IGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5Ci0gICA6ZnVuYzpgZ2V0YXJnc3BlY2Agb3IgOmZ1bmM6YGdldGZ1bGxhcmdzcGVjYC4KKyAgIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCiAKICAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChgYGFyZ3NgYCwgYGB2YXJhcmdzYGAsIGBgdmFya3dgYCwKICAgIGBgZGVmYXVsdHNgYCwgYGBrd29ubHlhcmdzYGAsIGBga3dvbmx5ZGVmYXVsdHNgYCwgYGBhbm5vdGF0aW9uc2BgKS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CmluZGV4IGRmYzFkZGMuLmIwZDBhOGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdApAQCAtNTkxLDcgKzU5MSwxMyBAQAogCiAuLiBmdW5jdGlvbjo6IHRlZShpdGVyYWJsZSwgbj0yKQogCi0gICBSZXR1cm4gKm4qIGluZGVwZW5kZW50IGl0ZXJhdG9ycyBmcm9tIGEgc2luZ2xlIGl0ZXJhYmxlLiAgUm91Z2hseSBlcXVpdmFsZW50IHRvOjoKKyAgIFJldHVybiAqbiogaW5kZXBlbmRlbnQgaXRlcmF0b3JzIGZyb20gYSBzaW5nbGUgaXRlcmFibGUuCisKKyAgIFRoZSBmb2xsb3dpbmcgUHl0aG9uIGNvZGUgaGVscHMgZXhwbGFpbiB3aGF0ICp0ZWUqIGRvZXMgKGFsdGhvdWdoIHRoZSBhY3R1YWwKKyAgIGltcGxlbWVudGF0aW9uIGlzIG1vcmUgY29tcGxleCBhbmQgdXNlcyBvbmx5IGEgc2luZ2xlIHVuZGVybHlpbmcKKyAgIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUpLgorCisgICBSb3VnaGx5IGVxdWl2YWxlbnQgdG86OgogCiAgICAgICAgIGRlZiB0ZWUoaXRlcmFibGUsIG49Mik6CiAgICAgICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9qc29uLnJzdCBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CmluZGV4IGVlNTgyNjYuLjMwMmY4MzkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2pzb24ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CkBAIC0xMjYsNyArMTI2LDcgQEAKIEJhc2ljIFVzYWdlCiAtLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGR1bXAob2JqLCBmcCwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCisuLiBmdW5jdGlvbjo6IGR1bXAob2JqLCBmcCwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCiAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgc29ydF9rZXlzPUZhbHNlLCAqKmt3KQpAQCAtMTg3LDggKzE4NywxMSBAQAogICAgOm1ldGg6YGRlZmF1bHRgIG1ldGhvZCB0byBzZXJpYWxpemUgYWRkaXRpb25hbCB0eXBlcyksIHNwZWNpZnkgaXQgd2l0aCB0aGUKICAgICpjbHMqIGt3YXJnOyBvdGhlcndpc2UgOmNsYXNzOmBKU09ORW5jb2RlcmAgaXMgdXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCiAKLS4uIGZ1bmN0aW9uOjogZHVtcHMob2JqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKKworLi4gZnVuY3Rpb246OiBkdW1wcyhvYmosICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAogICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIHNvcnRfa2V5cz1GYWxzZSwgKiprdykKQEAgLTIxMiw3ICsyMTUsNyBAQAogICAgICAgdGhlIG9yaWdpbmFsIG9uZS4gVGhhdCBpcywgYGBsb2FkcyhkdW1wcyh4KSkgIT0geGBgIGlmIHggaGFzIG5vbi1zdHJpbmcKICAgICAgIGtleXMuCiAKLS4uIGZ1bmN0aW9uOjogbG9hZChmcCwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorLi4gZnVuY3Rpb246OiBsb2FkKGZwLCAqLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCiAKICAgIERlc2VyaWFsaXplICpmcCogKGEgYGAucmVhZCgpYGAtc3VwcG9ydGluZyA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAKICAgIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcyA6cmVmOmBjb252ZXJzaW9uCkBAIC0yNjAsMTAgKzI2MywxNCBAQAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKICAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKLS4uIGZ1bmN0aW9uOjogbG9hZHMocywgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCiAKLSAgIERlc2VyaWFsaXplICpzKiAoYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2UgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEKLSAgIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcyA6cmVmOmBjb252ZXJzaW9uIHRhYmxlIDxqc29uLXRvLXB5LXRhYmxlPmAuCisuLiBmdW5jdGlvbjo6IGxvYWRzKHMsICosIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKKworICAgRGVzZXJpYWxpemUgKnMqIChhIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgCisgICBpbnN0YW5jZSBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0IHVzaW5nIHRoaXMKKyAgIDpyZWY6YGNvbnZlcnNpb24gdGFibGUgPGpzb24tdG8tcHktdGFibGU+YC4KIAogICAgVGhlIG90aGVyIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4gOmZ1bmM6YGxvYWRgLCBleGNlcHQKICAgICplbmNvZGluZyogd2hpY2ggaXMgaWdub3JlZCBhbmQgZGVwcmVjYXRlZC4KQEAgLTI3NCw3ICsyODEsNyBAQAogRW5jb2RlcnMgYW5kIERlY29kZXJzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gY2xhc3M6OiBKU09ORGVjb2RlcihvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgc3RyaWN0PVRydWUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUpCisuLiBjbGFzczo6IEpTT05EZWNvZGVyKCosIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSkKIAogICAgU2ltcGxlIEpTT04gZGVjb2Rlci4KIApAQCAtMzQ0LDYgKzM1MSw5IEBACiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQogICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKICAgIC4uIG1ldGhvZDo6IGRlY29kZShzKQogCiAgICAgICBSZXR1cm4gdGhlIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiAqcyogKGEgOmNsYXNzOmBzdHJgIGluc3RhbmNlCkBAIC0zNjIsNyArMzcyLDcgQEAKICAgICAgIGV4dHJhbmVvdXMgZGF0YSBhdCB0aGUgZW5kLgogCiAKLS4uIGNsYXNzOjogSlNPTkVuY29kZXIoc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgc29ydF9rZXlzPUZhbHNlLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpCisuLiBjbGFzczo6IEpTT05FbmNvZGVyKCosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIHNvcnRfa2V5cz1GYWxzZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lKQogCiAgICBFeHRlbnNpYmxlIEpTT04gZW5jb2RlciBmb3IgUHl0aG9uIGRhdGEgc3RydWN0dXJlcy4KIApAQCAtNDQyLDYgKzQ1Miw5IEBACiAgICB0aGUgb2JqZWN0IG9yIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gIElmIG5vdCBzcGVjaWZpZWQsIDpleGM6YFR5cGVFcnJvcmAKICAgIGlzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKIAogICAgLi4gbWV0aG9kOjogZGVmYXVsdChvKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CmluZGV4IDkxNmI3MDIuLjhlMjdhZDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CkBAIC04NCw2ICs4NCw5IEBACiAgICB3aXRoIHRoYXQgZW5jb2RpbmcuICBJZiAqZGVsYXkqIGlzIHRydWUsIHRoZW4gZmlsZSBvcGVuaW5nIGlzIGRlZmVycmVkIHVudGlsIHRoZQogICAgZmlyc3QgY2FsbCB0byA6bWV0aDpgZW1pdGAuIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGdyb3dzIGluZGVmaW5pdGVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCiAKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIApAQCAtMTYwLDEyICsxNjMsMjMgQEAKICAgIHdpdGggdGhhdCBlbmNvZGluZy4gIElmICpkZWxheSogaXMgdHJ1ZSwgdGhlbiBmaWxlIG9wZW5pbmcgaXMgZGVmZXJyZWQgdW50aWwgdGhlCiAgICBmaXJzdCBjYWxsIHRvIDptZXRoOmBlbWl0YC4gIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGdyb3dzIGluZGVmaW5pdGVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHJlb3BlbklmTmVlZGVkKCkKKworICAgICAgQ2hlY2tzIHRvIHNlZSBpZiB0aGUgZmlsZSBoYXMgY2hhbmdlZC4gIElmIGl0IGhhcywgdGhlIGV4aXN0aW5nIHN0cmVhbSBpcworICAgICAgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUgZmlsZSBvcGVuZWQgYWdhaW4sIHR5cGljYWxseSBhcyBhIHByZWN1cnNvciB0bworICAgICAgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAgICAuLiBtZXRob2Q6OiBlbWl0KHJlY29yZCkKIAotICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBidXQgZmlyc3QgY2hlY2tzIHRvIHNlZSBpZiB0aGUgZmlsZSBoYXMKLSAgICAgIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUKLSAgICAgIGZpbGUgb3BlbmVkIGFnYWluLCBiZWZvcmUgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgorICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBidXQgZmlyc3QgY2FsbHMgOm1ldGg6YHJlb3BlbklmTmVlZGVkYCB0bworICAgICAgcmVvcGVuIHRoZSBmaWxlIGlmIGl0IGhhcyBjaGFuZ2VkLgogCiAuLiBfYmFzZS1yb3RhdGluZy1oYW5kbGVyOgogCkBAIC0yNzksNiArMjkzLDkgQEAKICAgIDpmaWxlOmBhcHAubG9nLjJgLCBldGMuICBleGlzdCwgdGhlbiB0aGV5IGFyZSByZW5hbWVkIHRvIDpmaWxlOmBhcHAubG9nLjJgLAogICAgOmZpbGU6YGFwcC5sb2cuM2AgZXRjLiAgcmVzcGVjdGl2ZWx5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KIAogICAgLi4gbWV0aG9kOjogZG9Sb2xsb3ZlcigpCiAKQEAgLTMxMCwyMSArMzI3LDI0IEBACiAgICBZb3UgY2FuIHVzZSB0aGUgKndoZW4qIHRvIHNwZWNpZnkgdGhlIHR5cGUgb2YgKmludGVydmFsKi4gVGhlIGxpc3Qgb2YgcG9zc2libGUKICAgIHZhbHVlcyBpcyBiZWxvdy4gIE5vdGUgdGhhdCB0aGV5IGFyZSBub3QgY2FzZSBzZW5zaXRpdmUuCiAKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBWYWx1ZSAgICAgICAgICB8IFR5cGUgb2YgaW50ZXJ2YWwgICAgICB8Ci0gICArPT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgYGAnUydgYCAgICAgICAgfCBTZWNvbmRzICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ00nYGAgICAgICAgIHwgTWludXRlcyAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdIJ2BgICAgICAgICB8IEhvdXJzICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnRCdgYCAgICAgICAgfCBEYXlzICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ1cwJy0nVzYnYGAgIHwgV2Vla2RheSAoMD1Nb25kYXkpICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdtaWRuaWdodCdgYCB8IFJvbGwgb3ZlciBhdCBtaWRuaWdodCB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgVmFsdWUgICAgICAgICAgfCBUeXBlIG9mIGludGVydmFsICAgICAgICAgICB8IElmL2hvdyAqYXRUaW1lKiBpcyB1c2VkIHwKKyAgICs9PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgYGAnUydgYCAgICAgICAgfCBTZWNvbmRzICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnTSdgYCAgICAgICAgfCBNaW51dGVzICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnSCdgYCAgICAgICAgfCBIb3VycyAgICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnRCdgYCAgICAgICAgfCBEYXlzICAgICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnVzAnLSdXNidgYCAgfCBXZWVrZGF5ICgwPU1vbmRheSkgICAgICAgICB8IFVzZWQgdG8gY29tcHV0ZSBpbml0aWFsIHwKKyAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJvbGxvdmVyIHRpbWUgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnbWlkbmlnaHQnYGAgfCBSb2xsIG92ZXIgYXQgbWlkbmlnaHQsIGlmICB8IFVzZWQgdG8gY29tcHV0ZSBpbml0aWFsIHwKKyAgIHwgICAgICAgICAgICAgICAgfCAqYXRUaW1lKiBub3Qgc3BlY2lmaWVkLCAgICB8IHJvbGxvdmVyIHRpbWUgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgfCBlbHNlIGF0IHRpbWUgKmF0VGltZSogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogICAgV2hlbiB1c2luZyB3ZWVrZGF5LWJhc2VkIHJvdGF0aW9uLCBzcGVjaWZ5ICdXMCcgZm9yIE1vbmRheSwgJ1cxJyBmb3IKICAgIFR1ZXNkYXksIGFuZCBzbyBvbiB1cCB0byAnVzYnIGZvciBTdW5kYXkuIEluIHRoaXMgY2FzZSwgdGhlIHZhbHVlIHBhc3NlZCBmb3IKQEAgLTM1MiwxNiArMzcyLDM1IEBACiAKICAgIElmICphdFRpbWUqIGlzIG5vdCBgYE5vbmVgYCwgaXQgbXVzdCBiZSBhIGBgZGF0ZXRpbWUudGltZWBgIGluc3RhbmNlIHdoaWNoCiAgICBzcGVjaWZpZXMgdGhlIHRpbWUgb2YgZGF5IHdoZW4gcm9sbG92ZXIgb2NjdXJzLCBmb3IgdGhlIGNhc2VzIHdoZXJlIHJvbGxvdmVyCi0gICBpcyBzZXQgdG8gaGFwcGVuICJhdCBtaWRuaWdodCIgb3IgIm9uIGEgcGFydGljdWxhciB3ZWVrZGF5Ii4KKyAgIGlzIHNldCB0byBoYXBwZW4gImF0IG1pZG5pZ2h0IiBvciAib24gYSBwYXJ0aWN1bGFyIHdlZWtkYXkiLiBOb3RlIHRoYXQgaW4KKyAgIHRoZXNlIGNhc2VzLCB0aGUgKmF0VGltZSogdmFsdWUgaXMgZWZmZWN0aXZlbHkgdXNlZCB0byBjb21wdXRlIHRoZSAqaW5pdGlhbCoKKyAgIHJvbGxvdmVyLCBhbmQgc3Vic2VxdWVudCByb2xsb3ZlcnMgd291bGQgYmUgY2FsY3VsYXRlZCB2aWEgdGhlIG5vcm1hbAorICAgaW50ZXJ2YWwgY2FsY3VsYXRpb24uCisKKyAgIC4uIG5vdGU6OiBDYWxjdWxhdGlvbiBvZiB0aGUgaW5pdGlhbCByb2xsb3ZlciB0aW1lIGlzIGRvbmUgd2hlbiB0aGUgaGFuZGxlcgorICAgICAgaXMgaW5pdGlhbGlzZWQuIENhbGN1bGF0aW9uIG9mIHN1YnNlcXVlbnQgcm9sbG92ZXIgdGltZXMgaXMgZG9uZSBvbmx5CisgICAgICB3aGVuIHJvbGxvdmVyIG9jY3VycywgYW5kIHJvbGxvdmVyIG9jY3VycyBvbmx5IHdoZW4gZW1pdHRpbmcgb3V0cHV0LiBJZgorICAgICAgdGhpcyBpcyBub3Qga2VwdCBpbiBtaW5kLCBpdCBtaWdodCBsZWFkIHRvIHNvbWUgY29uZnVzaW9uLiBGb3IgZXhhbXBsZSwKKyAgICAgIGlmIGFuIGludGVydmFsIG9mICJldmVyeSBtaW51dGUiIGlzIHNldCwgdGhhdCBkb2VzIG5vdCBtZWFuIHlvdSB3aWxsCisgICAgICBhbHdheXMgc2VlIGxvZyBmaWxlcyB3aXRoIHRpbWVzIChpbiB0aGUgZmlsZW5hbWUpIHNlcGFyYXRlZCBieSBhIG1pbnV0ZTsKKyAgICAgIGlmLCBkdXJpbmcgYXBwbGljYXRpb24gZXhlY3V0aW9uLCBsb2dnaW5nIG91dHB1dCBpcyBnZW5lcmF0ZWQgbW9yZQorICAgICAgZnJlcXVlbnRseSB0aGFuIG9uY2UgYSBtaW51dGUsICp0aGVuKiB5b3UgY2FuIGV4cGVjdCB0byBzZWUgbG9nIGZpbGVzCisgICAgICB3aXRoIHRpbWVzIHNlcGFyYXRlZCBieSBhIG1pbnV0ZS4gSWYsIG9uIHRoZSBvdGhlciBoYW5kLCBsb2dnaW5nIG1lc3NhZ2VzCisgICAgICBhcmUgb25seSBvdXRwdXQgb25jZSBldmVyeSBmaXZlIG1pbnV0ZXMgKHNheSksIHRoZW4gdGhlcmUgd2lsbCBiZSBnYXBzIGluCisgICAgICB0aGUgZmlsZSB0aW1lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW51dGVzIHdoZXJlIG5vIG91dHB1dCAoYW5kIGhlbmNlIG5vCisgICAgICByb2xsb3Zlcikgb2NjdXJyZWQuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICAqYXRUaW1lKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KKwogICAgLi4gbWV0aG9kOjogZG9Sb2xsb3ZlcigpCiAKICAgICAgIERvZXMgYSByb2xsb3ZlciwgYXMgZGVzY3JpYmVkIGFib3ZlLgogCi0KICAgIC4uIG1ldGhvZDo6IGVtaXQocmVjb3JkKQogCiAgICAgICBPdXRwdXRzIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUsIGNhdGVyaW5nIGZvciByb2xsb3ZlciBhcyBkZXNjcmliZWQgYWJvdmUuCkBAIC03OTgsMTIgKzgzNywxOCBAQAogICAgICAgb3ZlcnJpZGRlbiB0byBpbXBsZW1lbnQgY3VzdG9tIGZsdXNoaW5nIHN0cmF0ZWdpZXMuCiAKIAotLi4gY2xhc3M6OiBNZW1vcnlIYW5kbGVyKGNhcGFjaXR5LCBmbHVzaExldmVsPUVSUk9SLCB0YXJnZXQ9Tm9uZSkKKy4uIGNsYXNzOjogTWVtb3J5SGFuZGxlcihjYXBhY2l0eSwgZmx1c2hMZXZlbD1FUlJPUiwgdGFyZ2V0PU5vbmUsIGZsdXNoT25DbG9zZT1UcnVlKQogCiAgICBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YE1lbW9yeUhhbmRsZXJgIGNsYXNzLiBUaGUgaW5zdGFuY2UgaXMKICAgIGluaXRpYWxpemVkIHdpdGggYSBidWZmZXIgc2l6ZSBvZiAqY2FwYWNpdHkqLiBJZiAqZmx1c2hMZXZlbCogaXMgbm90IHNwZWNpZmllZCwKICAgIDpjb25zdDpgRVJST1JgIGlzIHVzZWQuIElmIG5vICp0YXJnZXQqIGlzIHNwZWNpZmllZCwgdGhlIHRhcmdldCB3aWxsIG5lZWQgdG8gYmUKLSAgIHNldCB1c2luZyA6bWV0aDpgc2V0VGFyZ2V0YCBiZWZvcmUgdGhpcyBoYW5kbGVyIGRvZXMgYW55dGhpbmcgdXNlZnVsLgorICAgc2V0IHVzaW5nIDptZXRoOmBzZXRUYXJnZXRgIGJlZm9yZSB0aGlzIGhhbmRsZXIgZG9lcyBhbnl0aGluZyB1c2VmdWwuIElmCisgICAqZmx1c2hPbkNsb3NlKiBpcyBzcGVjaWZpZWQgYXMgYGBGYWxzZWBgLCB0aGVuIHRoZSBidWZmZXIgaXMgKm5vdCogZmx1c2hlZCB3aGVuCisgICB0aGUgaGFuZGxlciBpcyBjbG9zZWQuIElmIG5vdCBzcGVjaWZpZWQgb3Igc3BlY2lmaWVkIGFzIGBgVHJ1ZWBgLCB0aGUgcHJldmlvdXMKKyAgIGJlaGF2aW91ciBvZiBmbHVzaGluZyB0aGUgYnVmZmVyIHdpbGwgb2NjdXIgd2hlbiB0aGUgaGFuZGxlciBpcyBjbG9zZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgKmZsdXNoT25DbG9zZSogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tYXRoLnJzdCBiL0RvYy9saWJyYXJ5L21hdGgucnN0CmluZGV4IDNmZGVhMTguLmRhMmI4Y2MgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21hdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L21hdGgucnN0CkBAIC00MjYsNiArNDI2LDE1IEBACiAKICAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgZSA9IDIuNzE4MjgxLi4uLCB0byBhdmFpbGFibGUgcHJlY2lzaW9uLgogCisuLiBkYXRhOjogdGF1CisKKyAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgz4QgPSA2LjI4MzE4NS4uLiwgdG8gYXZhaWxhYmxlIHByZWNpc2lvbi4KKyAgIFRhdSBpcyBhIGNpcmNsZSBjb25zdGFudCBlcXVhbCB0byAyz4AsIHRoZSByYXRpbyBvZiBhIGNpcmNsZSdzIGNpcmN1bWZlcmVuY2UgdG8KKyAgIGl0cyByYWRpdXMuIFRvIGxlYXJuIG1vcmUgYWJvdXQgVGF1LCBjaGVjayBvdXQgVmkgSGFydCdzIHZpZGVvIGBQaSBpcyAoc3RpbGwpCisgICBXcm9uZyA8aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1qRzd2aE1NWGFnUT5gXywgYW5kIHN0YXJ0IGNlbGVicmF0aW5nCisgICBgVGF1IGRheSA8aHR0cDovL3RhdWRheS5jb20vPmBfIGJ5IGVhdGluZyB0d2ljZSBhcyBtdWNoIHBpZSEKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIGRhdGE6OiBpbmYKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdAppbmRleCA4ZjUzODMzLi5jNTQ0YzgwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tbWFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdApAQCAtMjY0LDEzICsyNjQsMTggQEAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGJ5dGVzKQogCiAgICAgICBXcml0ZSB0aGUgYnl0ZXMgaW4gKmJ5dGVzKiBpbnRvIG1lbW9yeSBhdCB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUKLSAgICAgIGZpbGUgcG9pbnRlcjsgdGhlIGZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUgYnl0ZXMgdGhhdAotICAgICAgd2VyZSB3cml0dGVuLiBJZiB0aGUgbW1hcCB3YXMgY3JlYXRlZCB3aXRoIDpjb25zdDpgQUNDRVNTX1JFQURgLCB0aGVuCisgICAgICBmaWxlIHBvaW50ZXIgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gKG5ldmVyIGxlc3MgdGhhbgorICAgICAgYGBsZW4oYnl0ZXMpYGAsIHNpbmNlIGlmIHRoZSB3cml0ZSBmYWlscywgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlCisgICAgICByYWlzZWQpLiAgVGhlIGZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUgYnl0ZXMgdGhhdAorICAgICAgd2VyZSB3cml0dGVuLiAgSWYgdGhlIG1tYXAgd2FzIGNyZWF0ZWQgd2l0aCA6Y29uc3Q6YEFDQ0VTU19SRUFEYCwgdGhlbgogICAgICAgd3JpdGluZyB0byBpdCB3aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCBleGNlcHRpb24uCiAKICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBpcyBub3cgcmV0dXJuZWQuCisKIAogICAgLi4gbWV0aG9kOjogd3JpdGVfYnl0ZShieXRlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0IGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAppbmRleCBkMjAwOThmLi4xODEzZWViIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKQEAgLTY0Nyw4ICs2NDcsOSBAQAogRm9yIHBhc3NpbmcgbWVzc2FnZXMgb25lIGNhbiB1c2UgOmZ1bmM6YFBpcGVgIChmb3IgYSBjb25uZWN0aW9uIGJldHdlZW4gdHdvCiBwcm9jZXNzZXMpIG9yIGEgcXVldWUgKHdoaWNoIGFsbG93cyBtdWx0aXBsZSBwcm9kdWNlcnMgYW5kIGNvbnN1bWVycykuCiAKLVRoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBTaW1wbGVRdWV1ZWAgYW5kIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAgdHlwZXMgYXJlIG11bHRpLXByb2R1Y2VyLAotbXVsdGktY29uc3VtZXIgRklGTyBxdWV1ZXMgbW9kZWxsZWQgb24gdGhlIDpjbGFzczpgcXVldWUuUXVldWVgIGNsYXNzIGluIHRoZQorVGhlIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcworYXJlIG11bHRpLXByb2R1Y2VyLCBtdWx0aS1jb25zdW1lciA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgCitxdWV1ZXMgbW9kZWxsZWQgb24gdGhlIDpjbGFzczpgcXVldWUuUXVldWVgIGNsYXNzIGluIHRoZQogc3RhbmRhcmQgbGlicmFyeS4gIFRoZXkgZGlmZmVyIGluIHRoYXQgOmNsYXNzOmBRdWV1ZWAgbGFja3MgdGhlCiA6bWV0aDpgfnF1ZXVlLlF1ZXVlLnRhc2tfZG9uZWAgYW5kIDptZXRoOmB+cXVldWUuUXVldWUuam9pbmAgbWV0aG9kcyBpbnRyb2R1Y2VkCiBpbnRvIFB5dGhvbiAyLjUncyA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcy4KQEAgLTg4Niw4ICs4ODcsMTMgQEAKIAogLi4gZnVuY3Rpb246OiBjcHVfY291bnQoKQogCi0gICBSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0uICBNYXkgcmFpc2UKLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLgorCisgICBUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW4KKyAgIHVzZS4gIFRoZSBudW1iZXIgb2YgdXNhYmxlIENQVXMgY2FuIGJlIG9idGFpbmVkIHdpdGgKKyAgIGBgbGVuKG9zLnNjaGVkX2dldGFmZmluaXR5KDApKWBgCisKKyAgIE1heSByYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KIAogICAgLi4gc2VlYWxzbzo6CiAgICAgICA6ZnVuYzpgb3MuY3B1X2NvdW50YApAQCAtMTY3Niw3ICsxNjgyLDkgQEAKICAgIG9mIHByb2Nlc3Nlcy4gIE9iamVjdHMgb2YgdGhpcyB0eXBlIGFyZSByZXR1cm5lZCBieQogICAgOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5NYW5hZ2VyYC4KIAotICAgSXQgYWxzbyBzdXBwb3J0cyBjcmVhdGlvbiBvZiBzaGFyZWQgbGlzdHMgYW5kIGRpY3Rpb25hcmllcy4KKyAgIEl0cyBtZXRob2RzIGNyZWF0ZSBhbmQgcmV0dXJuIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYCBmb3IgYQorICAgbnVtYmVyIG9mIGNvbW1vbmx5IHVzZWQgZGF0YSB0eXBlcyB0byBiZSBzeW5jaHJvbml6ZWQgYWNyb3NzIHByb2Nlc3Nlcy4KKyAgIFRoaXMgbm90YWJseSBpbmNsdWRlcyBzaGFyZWQgbGlzdHMgYW5kIGRpY3Rpb25hcmllcy4KIAogICAgLi4gbWV0aG9kOjogQmFycmllcihwYXJ0aWVzWywgYWN0aW9uWywgdGltZW91dF1dKQogCkBAIC0xNzM5LDMxICsxNzQ3LDE3IEBACiAgICAgICAgICAgICAgICBkaWN0KG1hcHBpbmcpCiAgICAgICAgICAgICAgICBkaWN0KHNlcXVlbmNlKQogCi0gICAgICBDcmVhdGUgYSBzaGFyZWQgYGBkaWN0YGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCisgICAgICBDcmVhdGUgYSBzaGFyZWQgOmNsYXNzOmBkaWN0YCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KIAogICAgLi4gbWV0aG9kOjogbGlzdCgpCiAgICAgICAgICAgICAgICBsaXN0KHNlcXVlbmNlKQogCi0gICAgICBDcmVhdGUgYSBzaGFyZWQgYGBsaXN0YGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCisgICAgICBDcmVhdGUgYSBzaGFyZWQgOmNsYXNzOmBsaXN0YCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIE1vZGlmaWNhdGlvbnMgdG8gbXV0YWJsZSB2YWx1ZXMgb3IgaXRlbXMgaW4gZGljdCBhbmQgbGlzdCBwcm94aWVzIHdpbGwgbm90Ci0gICAgICBiZSBwcm9wYWdhdGVkIHRocm91Z2ggdGhlIG1hbmFnZXIsIGJlY2F1c2UgdGhlIHByb3h5IGhhcyBubyB3YXkgb2Yga25vd2luZwotICAgICAgd2hlbiBpdHMgdmFsdWVzIG9yIGl0ZW1zIGFyZSBtb2RpZmllZC4gIFRvIG1vZGlmeSBzdWNoIGFuIGl0ZW0sIHlvdSBjYW4KLSAgICAgIHJlLWFzc2lnbiB0aGUgbW9kaWZpZWQgb2JqZWN0IHRvIHRoZSBjb250YWluZXIgcHJveHk6OgotCi0gICAgICAgICAjIGNyZWF0ZSBhIGxpc3QgcHJveHkgYW5kIGFwcGVuZCBhIG11dGFibGUgb2JqZWN0IChhIGRpY3Rpb25hcnkpCi0gICAgICAgICBscHJveHkgPSBtYW5hZ2VyLmxpc3QoKQotICAgICAgICAgbHByb3h5LmFwcGVuZCh7fSkKLSAgICAgICAgICMgbm93IG11dGF0ZSB0aGUgZGljdGlvbmFyeQotICAgICAgICAgZCA9IGxwcm94eVswXQotICAgICAgICAgZFsnYSddID0gMQotICAgICAgICAgZFsnYiddID0gMgotICAgICAgICAgIyBhdCB0aGlzIHBvaW50LCB0aGUgY2hhbmdlcyB0byBkIGFyZSBub3QgeWV0IHN5bmNlZCwgYnV0IGJ5Ci0gICAgICAgICAjIHJlYXNzaWduaW5nIHRoZSBkaWN0aW9uYXJ5LCB0aGUgcHJveHkgaXMgbm90aWZpZWQgb2YgdGhlIGNoYW5nZQotICAgICAgICAgbHByb3h5WzBdID0gZAotCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU2hhcmVkIG9iamVjdHMgYXJlIGNhcGFibGUgb2YgYmVpbmcgbmVzdGVkLiAgRm9yIGV4YW1wbGUsIGEgc2hhcmVkCisgICAgICBjb250YWluZXIgb2JqZWN0IHN1Y2ggYXMgYSBzaGFyZWQgbGlzdCBjYW4gY29udGFpbiBvdGhlciBzaGFyZWQgb2JqZWN0cworICAgICAgd2hpY2ggd2lsbCBhbGwgYmUgbWFuYWdlZCBhbmQgc3luY2hyb25pemVkIGJ5IHRoZSA6Y2xhc3M6YFN5bmNNYW5hZ2VyYC4KIAogLi4gY2xhc3M6OiBOYW1lc3BhY2UKIApAQCAtMTg3NSw2ICsxODY5LDggQEAKICAgICA+Pj4gcyA9IG0uZ2V0X3NlcnZlcigpCiAgICAgPj4+IHMuc2VydmVfZm9yZXZlcigpCiAKKy4uIF9tdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0czoKKwogUHJveHkgT2JqZWN0cwogfn5+fn5+fn5+fn5+fgogCkBAIC0xODg0LDggKzE4ODAsNyBAQAogCiBBIHByb3h5IG9iamVjdCBoYXMgbWV0aG9kcyB3aGljaCBpbnZva2UgY29ycmVzcG9uZGluZyBtZXRob2RzIG9mIGl0cyByZWZlcmVudAogKGFsdGhvdWdoIG5vdCBldmVyeSBtZXRob2Qgb2YgdGhlIHJlZmVyZW50IHdpbGwgbmVjZXNzYXJpbHkgYmUgYXZhaWxhYmxlIHRocm91Z2gKLXRoZSBwcm94eSkuICBBIHByb3h5IGNhbiB1c3VhbGx5IGJlIHVzZWQgaW4gbW9zdCBvZiB0aGUgc2FtZSB3YXlzIHRoYXQgaXRzCi1yZWZlcmVudCBjYW46Cit0aGUgcHJveHkpLiAgSW4gdGhpcyB3YXksIGEgcHJveHkgY2FuIGJlIHVzZWQganVzdCBsaWtlIGl0cyByZWZlcmVudCBjYW46CiAKIC4uIGRvY3Rlc3Q6OgogCkBAIC0xOTA2LDkgKzE5MDEsOSBAQAogdGhlIHByb3h5LgogCiBBbiBpbXBvcnRhbnQgZmVhdHVyZSBvZiBwcm94eSBvYmplY3RzIGlzIHRoYXQgdGhleSBhcmUgcGlja2xhYmxlIHNvIHRoZXkgY2FuIGJlCi1wYXNzZWQgYmV0d2VlbiBwcm9jZXNzZXMuICBOb3RlLCBob3dldmVyLCB0aGF0IGlmIGEgcHJveHkgaXMgc2VudCB0byB0aGUKLWNvcnJlc3BvbmRpbmcgbWFuYWdlcidzIHByb2Nlc3MgdGhlbiB1bnBpY2tsaW5nIGl0IHdpbGwgcHJvZHVjZSB0aGUgcmVmZXJlbnQKLWl0c2VsZi4gIFRoaXMgbWVhbnMsIGZvciBleGFtcGxlLCB0aGF0IG9uZSBzaGFyZWQgb2JqZWN0IGNhbiBjb250YWluIGEgc2Vjb25kOgorcGFzc2VkIGJldHdlZW4gcHJvY2Vzc2VzLiAgQXMgc3VjaCwgYSByZWZlcmVudCBjYW4gY29udGFpbgorOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgLiAgVGhpcyBwZXJtaXRzIG5lc3Rpbmcgb2YgdGhlc2UgbWFuYWdlZAorbGlzdHMsIGRpY3RzLCBhbmQgb3RoZXIgOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgOgogCiAuLiBkb2N0ZXN0OjoKIApAQCAtMTkxNiwxMCArMTkxMSw0NiBAQAogICAgPj4+IGIgPSBtYW5hZ2VyLmxpc3QoKQogICAgPj4+IGEuYXBwZW5kKGIpICAgICAgICAgIyByZWZlcmVudCBvZiBhIG5vdyBjb250YWlucyByZWZlcmVudCBvZiBiCiAgICA+Pj4gcHJpbnQoYSwgYikKLSAgIFtbXV0gW10KKyAgIFs8TGlzdFByb3h5IG9iamVjdCwgdHlwZWlkICdsaXN0JyBhdCAuLi4+XSBbXQogICAgPj4+IGIuYXBwZW5kKCdoZWxsbycpCi0gICA+Pj4gcHJpbnQoYSwgYikKLSAgIFtbJ2hlbGxvJ11dIFsnaGVsbG8nXQorICAgPj4+IHByaW50KGFbMF0sIGIpCisgICBbJ2hlbGxvJ10gWydoZWxsbyddCisKK1NpbWlsYXJseSwgZGljdCBhbmQgbGlzdCBwcm94aWVzIG1heSBiZSBuZXN0ZWQgaW5zaWRlIG9uZSBhbm90aGVyOjoKKworICAgPj4+IGxfb3V0ZXIgPSBtYW5hZ2VyLmxpc3QoWyBtYW5hZ2VyLmRpY3QoKSBmb3IgaSBpbiByYW5nZSgyKSBdKQorICAgPj4+IGRfZmlyc3RfaW5uZXIgPSBsX291dGVyWzBdCisgICA+Pj4gZF9maXJzdF9pbm5lclsnYSddID0gMQorICAgPj4+IGRfZmlyc3RfaW5uZXJbJ2InXSA9IDIKKyAgID4+PiBsX291dGVyWzFdWydjJ10gPSAzCisgICA+Pj4gbF9vdXRlclsxXVsneiddID0gMjYKKyAgID4+PiBwcmludChsX291dGVyWzBdKQorICAgeydhJzogMSwgJ2InOiAyfQorICAgPj4+IHByaW50KGxfb3V0ZXJbMV0pCisgICB7J2MnOiAzLCAneic6IDI2fQorCitJZiBzdGFuZGFyZCAobm9uLXByb3h5KSA6Y2xhc3M6YGxpc3RgIG9yIDpjbGFzczpgZGljdGAgb2JqZWN0cyBhcmUgY29udGFpbmVkCitpbiBhIHJlZmVyZW50LCBtb2RpZmljYXRpb25zIHRvIHRob3NlIG11dGFibGUgdmFsdWVzIHdpbGwgbm90IGJlIHByb3BhZ2F0ZWQKK3Rocm91Z2ggdGhlIG1hbmFnZXIgYmVjYXVzZSB0aGUgcHJveHkgaGFzIG5vIHdheSBvZiBrbm93aW5nIHdoZW4gdGhlIHZhbHVlcworY29udGFpbmVkIHdpdGhpbiBhcmUgbW9kaWZpZWQuICBIb3dldmVyLCBzdG9yaW5nIGEgdmFsdWUgaW4gYSBjb250YWluZXIgcHJveHkKKyh3aGljaCB0cmlnZ2VycyBhIGBgX19zZXRpdGVtX19gYCBvbiB0aGUgcHJveHkgb2JqZWN0KSBkb2VzIHByb3BhZ2F0ZSB0aHJvdWdoCit0aGUgbWFuYWdlciBhbmQgc28gdG8gZWZmZWN0aXZlbHkgbW9kaWZ5IHN1Y2ggYW4gaXRlbSwgb25lIGNvdWxkIHJlLWFzc2lnbiB0aGUKK21vZGlmaWVkIHZhbHVlIHRvIHRoZSBjb250YWluZXIgcHJveHk6OgorCisgICAjIGNyZWF0ZSBhIGxpc3QgcHJveHkgYW5kIGFwcGVuZCBhIG11dGFibGUgb2JqZWN0IChhIGRpY3Rpb25hcnkpCisgICBscHJveHkgPSBtYW5hZ2VyLmxpc3QoKQorICAgbHByb3h5LmFwcGVuZCh7fSkKKyAgICMgbm93IG11dGF0ZSB0aGUgZGljdGlvbmFyeQorICAgZCA9IGxwcm94eVswXQorICAgZFsnYSddID0gMQorICAgZFsnYiddID0gMgorICAgIyBhdCB0aGlzIHBvaW50LCB0aGUgY2hhbmdlcyB0byBkIGFyZSBub3QgeWV0IHN5bmNlZCwgYnV0IGJ5CisgICAjIHVwZGF0aW5nIHRoZSBkaWN0aW9uYXJ5LCB0aGUgcHJveHkgaXMgbm90aWZpZWQgb2YgdGhlIGNoYW5nZQorICAgbHByb3h5WzBdID0gZAorCitUaGlzIGFwcHJvYWNoIGlzIHBlcmhhcHMgbGVzcyBjb252ZW5pZW50IHRoYW4gZW1wbG95aW5nIG5lc3RlZAorOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgIGZvciBtb3N0IHVzZSBjYXNlcyBidXQgYWxzbworZGVtb25zdHJhdGVzIGEgbGV2ZWwgb2YgY29udHJvbCBvdmVyIHRoZSBzeW5jaHJvbml6YXRpb24uCiAKIC4uIG5vdGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdCBiL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CmluZGV4IGJmMGRmYWMuLjQwNjA1NGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CkBAIC02MSw2ICs2MSw5IEBACiAgICBwbGF0Zm9ybXMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHRoZSBmdW5jdGlvbiA6ZnVuYzpgbm9ybXBhdGhgIGFzCiAgICBmb2xsb3dzOiBgYG5vcm1wYXRoKGpvaW4ob3MuZ2V0Y3dkKCksIHBhdGgpKWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGJhc2VuYW1lKHBhdGgpCiAKQEAgLTcxLDYgKzc0LDkgQEAKICAgIGBgJy9mb28vYmFyLydgYCByZXR1cm5zIGBgJ2JhcidgYCwgdGhlIDpmdW5jOmBiYXNlbmFtZWAgZnVuY3Rpb24gcmV0dXJucyBhbgogICAgZW1wdHkgc3RyaW5nIChgYCcnYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbW1vbnBhdGgocGF0aHMpCiAKQEAgLTgzLDYgKzg5LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgc2VxdWVuY2Ugb2YgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAuCisKIAogLi4gZnVuY3Rpb246OiBjb21tb25wcmVmaXgobGlzdCkKIApAQCAtMTA0LDEyICsxMTMsMTggQEAKICAgICAgICAgPj4+IG9zLnBhdGguY29tbW9ucGF0aChbJy91c3IvbGliJywgJy91c3IvbG9jYWwvbGliJ10pCiAgICAgICAgICcvdXNyJwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGRpcm5hbWUocGF0aCkKIAogICAgUmV0dXJuIHRoZSBkaXJlY3RvcnkgbmFtZSBvZiBwYXRobmFtZSAqcGF0aCouICBUaGlzIGlzIHRoZSBmaXJzdCBlbGVtZW50IG9mCiAgICB0aGUgcGFpciByZXR1cm5lZCBieSBwYXNzaW5nICpwYXRoKiB0byB0aGUgZnVuY3Rpb24gOmZ1bmM6YHNwbGl0YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBleGlzdHMocGF0aCkKIApAQCAtMTIzLDYgKzEzOCw5IEBACiAgICAgICAqcGF0aCogY2FuIG5vdyBiZSBhbiBpbnRlZ2VyOiBgYFRydWVgYCBpcyByZXR1cm5lZCBpZiBpdCBpcyBhbgogICAgICAgIG9wZW4gZmlsZSBkZXNjcmlwdG9yLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxleGlzdHMocGF0aCkKIApAQCAtMTMwLDYgKzE0OCw5IEBACiAgICBicm9rZW4gc3ltYm9saWMgbGlua3MuICAgRXF1aXZhbGVudCB0byA6ZnVuYzpgZXhpc3RzYCBvbiBwbGF0Zm9ybXMgbGFja2luZwogICAgOmZ1bmM6YG9zLmxzdGF0YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBleHBhbmR1c2VyKHBhdGgpCiAKQEAgLTE1MSw2ICsxNzIsOSBAQAogICAgSWYgdGhlIGV4cGFuc2lvbiBmYWlscyBvciBpZiB0aGUgcGF0aCBkb2VzIG5vdCBiZWdpbiB3aXRoIGEgdGlsZGUsIHRoZSBwYXRoIGlzCiAgICByZXR1cm5lZCB1bmNoYW5nZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZXhwYW5kdmFycyhwYXRoKQogCkBAIC0xNjIsNiArMTg2LDkgQEAKICAgIE9uIFdpbmRvd3MsIGBgJW5hbWUlYGAgZXhwYW5zaW9ucyBhcmUgc3VwcG9ydGVkIGluIGFkZGl0aW9uIHRvIGBgJG5hbWVgYCBhbmQKICAgIGBgJHtuYW1lfWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGF0aW1lKHBhdGgpCiAKQEAgLTE4Miw2ICsyMDksOSBAQAogICAgSWYgOmZ1bmM6YG9zLnN0YXRfZmxvYXRfdGltZXNgIHJldHVybnMgYGBUcnVlYGAsIHRoZSByZXN1bHQgaXMgYSBmbG9hdGluZyBwb2ludAogICAgbnVtYmVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGN0aW1lKHBhdGgpCiAKQEAgLTE5MSwxMiArMjIxLDE4IEBACiAgICB0aGUgIDptb2Q6YHRpbWVgIG1vZHVsZSkuICBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvcgogICAgaXMgaW5hY2Nlc3NpYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldHNpemUocGF0aCkKIAogICAgUmV0dXJuIHRoZSBzaXplLCBpbiBieXRlcywgb2YgKnBhdGgqLiAgUmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGZpbGUgZG9lcwogICAgbm90IGV4aXN0IG9yIGlzIGluYWNjZXNzaWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2FicyhwYXRoKQogCkBAIC0yMDQsMjQgKzI0MCwzNiBAQAogICAgYmVnaW5zIHdpdGggYSBzbGFzaCwgb24gV2luZG93cyB0aGF0IGl0IGJlZ2lucyB3aXRoIGEgKGJhY2spc2xhc2ggYWZ0ZXIgY2hvcHBpbmcKICAgIG9mZiBhIHBvdGVudGlhbCBkcml2ZSBsZXR0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNmaWxlKHBhdGgpCiAKICAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogaXMgYW4gZXhpc3RpbmcgcmVndWxhciBmaWxlLiAgVGhpcyBmb2xsb3dzIHN5bWJvbGljCiAgICBsaW5rcywgc28gYm90aCA6ZnVuYzpgaXNsaW5rYCBhbmQgOmZ1bmM6YGlzZmlsZWAgY2FuIGJlIHRydWUgZm9yIHRoZSBzYW1lIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNkaXIocGF0aCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiBpcyBhbiBleGlzdGluZyBkaXJlY3RvcnkuICBUaGlzIGZvbGxvd3Mgc3ltYm9saWMKICAgIGxpbmtzLCBzbyBib3RoIDpmdW5jOmBpc2xpbmtgIGFuZCA6ZnVuYzpgaXNkaXJgIGNhbiBiZSB0cnVlIGZvciB0aGUgc2FtZSBwYXRoLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzbGluayhwYXRoKQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIHJlZmVycyB0byBhIGRpcmVjdG9yeSBlbnRyeSB0aGF0IGlzIGEgc3ltYm9saWMgbGluay4KICAgIEFsd2F5cyBgYEZhbHNlYGAgaWYgc3ltYm9saWMgbGlua3MgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIFB5dGhvbiBydW50aW1lLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzbW91bnQocGF0aCkKIApAQCAtMjM3LDYgKzI4NSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKICAgICAgIFN1cHBvcnQgZm9yIGRldGVjdGluZyBub24tcm9vdCBtb3VudCBwb2ludHMgb24gV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBqb2luKHBhdGgsICpwYXRocykKIApAQCAtMjU1LDEzICszMDYsMjAgQEAKICAgIGBgb3MucGF0aC5qb2luKCJjOiIsICJmb28iKWBgIHJlcHJlc2VudHMgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50CiAgICBkaXJlY3Rvcnkgb24gZHJpdmUgOmZpbGU6YEM6YCAoOmZpbGU6YGM6Zm9vYCksIG5vdCA6ZmlsZTpgYzpcXGZvb2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqcGF0aCogYW5kICpwYXRocyouCisKIAogLi4gZnVuY3Rpb246OiBub3JtY2FzZShwYXRoKQogCiAgICBOb3JtYWxpemUgdGhlIGNhc2Ugb2YgYSBwYXRobmFtZS4gIE9uIFVuaXggYW5kIE1hYyBPUyBYLCB0aGlzIHJldHVybnMgdGhlCiAgICBwYXRoIHVuY2hhbmdlZDsgb24gY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcywgaXQgY29udmVydHMgdGhlIHBhdGggdG8KICAgIGxvd2VyY2FzZS4gIE9uIFdpbmRvd3MsIGl0IGFsc28gY29udmVydHMgZm9yd2FyZCBzbGFzaGVzIHRvIGJhY2t3YXJkIHNsYXNoZXMuCi0gICBSYWlzZSBhIFR5cGVFcnJvciBpZiB0aGUgdHlwZSBvZiAqcGF0aCogaXMgbm90IGBgc3RyYGAgb3IgYGBieXRlc2BgLgorICAgUmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhlIHR5cGUgb2YgKnBhdGgqIGlzIG5vdCBgYHN0cmBgIG9yIGBgYnl0ZXNgYCAoZGlyZWN0bHkKKyAgIG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIAogLi4gZnVuY3Rpb246OiBub3JtcGF0aChwYXRoKQpAQCAtMjcyLDEyICszMzAsMTggQEAKICAgIHRoYXQgY29udGFpbnMgc3ltYm9saWMgbGlua3MuICBPbiBXaW5kb3dzLCBpdCBjb252ZXJ0cyBmb3J3YXJkIHNsYXNoZXMgdG8KICAgIGJhY2t3YXJkIHNsYXNoZXMuIFRvIG5vcm1hbGl6ZSBjYXNlLCB1c2UgOmZ1bmM6YG5vcm1jYXNlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZWFscGF0aChwYXRoKQogCiAgICBSZXR1cm4gdGhlIGNhbm9uaWNhbCBwYXRoIG9mIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUsIGVsaW1pbmF0aW5nIGFueSBzeW1ib2xpYwogICAgbGlua3MgZW5jb3VudGVyZWQgaW4gdGhlIHBhdGggKGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVscGF0aChwYXRoLCBzdGFydD1vcy5jdXJkaXIpCiAKQEAgLTI5MCw2ICszNTQsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2FtZWZpbGUocGF0aDEsIHBhdGgyKQogCkBAIC0zMDUsNiArMzcyLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBXaW5kb3dzIG5vdyB1c2VzIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIGFzIGFsbCBvdGhlciBwbGF0Zm9ybXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2FtZW9wZW5maWxlKGZwMSwgZnAyKQogCkBAIC0zMTUsNiArMzg1LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2FtZXN0YXQoc3RhdDEsIHN0YXQyKQogCkBAIC0zMjgsNiArNDAxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXQocGF0aCkKIApAQCAtMzQxLDYgKzQxNyw5IEBACiAgICAoYnV0IHRoZSBzdHJpbmdzIG1heSBkaWZmZXIpLiAgQWxzbyBzZWUgdGhlIGZ1bmN0aW9ucyA6ZnVuYzpgZGlybmFtZWAgYW5kCiAgICA6ZnVuYzpgYmFzZW5hbWVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0ZHJpdmUocGF0aCkKIApAQCAtMzU5LDYgKzQzOCw5IEBACiAgICBhbmQgc2hhcmUsIHVwIHRvIGJ1dCBub3QgaW5jbHVkaW5nIHRoZSBmb3VydGggc2VwYXJhdG9yLgogICAgZS5nLiBgYHNwbGl0ZHJpdmUoIi8vaG9zdC9jb21wdXRlci9kaXIiKWBgIHJldHVybnMgYGAoIi8vaG9zdC9jb21wdXRlciIsICIvZGlyIilgYAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0ZXh0KHBhdGgpCiAKQEAgLTM2Nyw2ICs0NDksOSBAQAogICAgcGVyaW9kLiBMZWFkaW5nIHBlcmlvZHMgb24gdGhlIGJhc2VuYW1lIGFyZSAgaWdub3JlZDsgYGBzcGxpdGV4dCgnLmNzaHJjJylgYAogICAgcmV0dXJucyAgYGAoJy5jc2hyYycsICcnKWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0dW5jKHBhdGgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnJzdCBiL0RvYy9saWJyYXJ5L29zLnJzdAppbmRleCA1NmU0YWRjLi4xMTFkZGFkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucnN0CkBAIC01Nyw3ICs1Nyw3IEBACiAKICAgIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCBtb2R1bGUgaW1wb3J0ZWQuICBUaGUgZm9sbG93aW5nCiAgICBuYW1lcyBoYXZlIGN1cnJlbnRseSBiZWVuIHJlZ2lzdGVyZWQ6IGBgJ3Bvc2l4J2BgLCBgYCdudCdgYCwKLSAgIGBgJ2NlJ2BgLCBgYCdqYXZhJ2BgLgorICAgYGAnamF2YSdgYC4KIAogICAgLi4gc2VlYWxzbzo6CiAgICAgICA6YXR0cjpgc3lzLnBsYXRmb3JtYCBoYXMgYSBmaW5lciBncmFudWxhcml0eS4gIDpmdW5jOmBvcy51bmFtZWAgZ2l2ZXMKQEAgLTE3MSwyMyArMTcxLDYwIEBACiAKIC4uIGZ1bmN0aW9uOjogZnNlbmNvZGUoZmlsZW5hbWUpCiAKLSAgIEVuY29kZSAqZmlsZW5hbWUqIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgCi0gICBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24gV2luZG93czsgcmV0dXJuIDpjbGFzczpgYnl0ZXNgIHVuY2hhbmdlZC4KKyAgIEVuY29kZSA6dGVybTpgcGF0aC1saWtlIDxwYXRoLWxpa2Ugb2JqZWN0PmAgKmZpbGVuYW1lKiB0byB0aGUgZmlsZXN5c3RlbQorICAgZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgIG9uCisgICBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBieXRlc2AgdW5jaGFuZ2VkLgogCiAgICA6ZnVuYzpgZnNkZWNvZGVgIGlzIHRoZSByZXZlcnNlIGZ1bmN0aW9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnQgYWRkZWQgdG8gYWNjZXB0IG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYAorICAgICAgaW50ZXJmYWNlLgorCiAKIC4uIGZ1bmN0aW9uOjogZnNkZWNvZGUoZmlsZW5hbWUpCiAKLSAgIERlY29kZSAqZmlsZW5hbWUqIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAKLSAgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbiBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBzdHJgIHVuY2hhbmdlZC4KKyAgIERlY29kZSB0aGUgOnRlcm06YHBhdGgtbGlrZSA8cGF0aC1saWtlIG9iamVjdD5gICpmaWxlbmFtZSogZnJvbSB0aGUKKyAgIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgCisgICBvbiBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBzdHJgIHVuY2hhbmdlZC4KIAogICAgOmZ1bmM6YGZzZW5jb2RlYCBpcyB0aGUgcmV2ZXJzZSBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGFkZGVkIHRvIGFjY2VwdCBvYmplY3RzIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAKKyAgICAgIGludGVyZmFjZS4KKworCisuLiBmdW5jdGlvbjo6IGZzcGF0aChwYXRoKQorCisgICBSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXRoLgorCisgICBJZiA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2AgaXMgcGFzc2VkIGluLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCisgICBPdGhlcndpc2UgOm1ldGg6YH5vcy5QYXRoTGlrZS5fX2ZzcGF0aF9fYCBpcyBjYWxsZWQgYW5kIGl0cyB2YWx1ZSBpcworICAgcmV0dXJuZWQgYXMgbG9uZyBhcyBpdCBpcyBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuCisgICBJbiBhbGwgb3RoZXIgY2FzZXMsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBjbGFzczo6IFBhdGhMaWtlCisKKyAgIEFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3Igb2JqZWN0cyByZXByZXNlbnRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoLAorICAgZS5nLiA6Y2xhc3M6YHBhdGhsaWIuUHVyZVBhdGhgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gYWJzdHJhY3RtZXRob2Q6OiBfX2ZzcGF0aF9fKCkKKworICAgICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKKyAgICAgIFRoZSBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCwKKyAgICAgIHdpdGggdGhlIHByZWZlcmVuY2UgYmVpbmcgZm9yIDpjbGFzczpgc3RyYC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGVudihrZXksIGRlZmF1bHQ9Tm9uZSkKIApAQCAtODkzLDYgKzkzMCw5IEBACiAgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCiAgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGFyZSBvcHRpb25zIGZvciB0aGUgKmZsYWdzKiBwYXJhbWV0ZXIgdG8gdGhlCiA6ZnVuYzpgfm9zLm9wZW5gIGZ1bmN0aW9uLiAgVGhleSBjYW4gYmUgY29tYmluZWQgdXNpbmcgdGhlIGJpdHdpc2UgT1Igb3BlcmF0b3IKIGBgfGBgLiAgU29tZSBvZiB0aGVtIGFyZSBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuICBGb3IgZGVzY3JpcHRpb25zIG9mCkBAIC0xMzg5LDYgKzE0MjksOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiwgKmVmZmVjdGl2ZV9pZHMqLCBhbmQgKmZvbGxvd19zeW1saW5rcyogcGFyYW1ldGVycy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZGF0YTo6IEZfT0sKICAgICAgICAgICBSX09LCkBAIC0xNDEzLDYgKzE0NTYsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYSBmaWxlIGRlc2NyaXB0b3IKICAgICAgIG9uIHNvbWUgcGxhdGZvcm1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNoZmxhZ3MocGF0aCwgZmxhZ3MsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNDM5LDYgKzE0ODUsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2htb2QocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNDgwLDYgKzE1MjksOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsCiAgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTQ5OSw2ICsxNTUxLDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKICAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2hyb290KHBhdGgpCiAKQEAgLTE1MDYsNiArMTU2MSw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBmY2hkaXIoZmQpCiAKQEAgLTE1MzQsNiArMTU5Miw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsY2htb2QocGF0aCwgbW9kZSkKIApAQCAtMTU0NCw2ICsxNjA1LDggQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogLi4gZnVuY3Rpb246OiBsY2hvd24ocGF0aCwgdWlkLCBnaWQpCiAKQEAgLTE1NTMsNiArMTYxNiw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE1NzAsNiArMTYzNiw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSAqc3JjX2Rpcl9mZCosICpkc3RfZGlyX2ZkKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IGxpc3RkaXIocGF0aD0nLicpCiAKQEAgLTE1NzcsOCArMTY0Niw5IEBACiAgICAqcGF0aCouICBUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIsIGFuZCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsCiAgICBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LgogCi0gICAqcGF0aCogbWF5IGJlIGVpdGhlciBvZiB0eXBlIGBgc3RyYGAgb3Igb2YgdHlwZSBgYGJ5dGVzYGAuICBJZiAqcGF0aCoKLSAgIGlzIG9mIHR5cGUgYGBieXRlc2BgLCB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBvZiB0eXBlIGBgYnl0ZXNgYDsKKyAgICpwYXRoKiBtYXkgYmUgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuICBJZiAqcGF0aCogaXMgb2YgdHlwZSBgYGJ5dGVzYGAKKyAgIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSksCisgICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBvZiB0eXBlIGBgYnl0ZXNgYDsKICAgIGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzLCB0aGV5IHdpbGwgYmUgb2YgdHlwZSBgYHN0cmBgLgogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvcgpAQCAtMTU5OSw2ICsxNjY5LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxzdGF0KHBhdGgsIFwqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTYyNSw2ICsxNjk4LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogbWtkaXIocGF0aCwgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE2NDksNiArMTcyNSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBtYWtlZGlycyhuYW1lLCBtb2RlPTBvNzc3LCBleGlzdF9vaz1GYWxzZSkKIApAQCAtMTY4Miw2ICsxNzYxLDkgQEAKICAgICAgIG1vZGUgb2YgdGhlIGV4aXN0aW5nIGRpcmVjdG9yeS4gU2luY2UgdGhpcyBiZWhhdmlvciB3YXMgaW1wb3NzaWJsZSB0bwogICAgICAgaW1wbGVtZW50IHNhZmVseSwgaXQgd2FzIHJlbW92ZWQgaW4gUHl0aG9uIDMuNC4xLiBTZWUgOmlzc3VlOmAyMTA4MmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWtmaWZvKHBhdGgsIG1vZGU9MG82NjYsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xNzAyLDYgKzE3ODQsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWtub2QocGF0aCwgbW9kZT0wbzYwMCwgZGV2aWNlPTAsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xNzE5LDYgKzE4MDQsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWFqb3IoZGV2aWNlKQogCkBAIC0xNzU3LDYgKzE4NDUsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBwYXRoY29uZl9uYW1lcwogCkBAIC0xNzc0LDkgKzE4NjUsMTAgQEAKICAgIG1heSBiZSBjb252ZXJ0ZWQgdG8gYW4gYWJzb2x1dGUgcGF0aG5hbWUgdXNpbmcKICAgIGBgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShwYXRoKSwgcmVzdWx0KWBgLgogCi0gICBJZiB0aGUgKnBhdGgqIGlzIGEgc3RyaW5nIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSBzdHJpbmcgb2JqZWN0LAorICAgSWYgdGhlICpwYXRoKiBpcyBhIHN0cmluZyBvYmplY3QgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCBhCisgICA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLCB0aGUgcmVzdWx0IHdpbGwgYWxzbyBiZSBhIHN0cmluZyBvYmplY3QsCiAgICBhbmQgdGhlIGNhbGwgbWF5IHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yLiBJZiB0aGUgKnBhdGgqIGlzIGEgYnl0ZXMKLSAgIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgorICAgb2JqZWN0IChkaXJlY3Qgb3IgaW5kaXJlY3RseSksIHRoZSByZXN1bHQgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdC4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycwogICAgPGRpcl9mZD5gLgpAQCAtMTc4OSw2ICsxODgxLDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZShwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTgwNyw2ICsxOTAyLDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZWRpcnMobmFtZSkKIApAQCAtMTgyMSw2ICsxOTE5LDkgQEAKICAgIHRoZXkgYXJlIGVtcHR5LiBSYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGxlYWYgZGlyZWN0b3J5IGNvdWxkIG5vdCBiZQogICAgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVuYW1lKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKIApAQCAtMTg0MCw2ICsxOTQxLDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpzcmNfZGlyX2ZkKiBhbmQgKmRzdF9kaXJfZmQqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbmFtZXMob2xkLCBuZXcpCiAKQEAgLTE4NTMsNiArMTk1Nyw5IEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGNhbiBmYWlsIHdpdGggdGhlIG5ldyBkaXJlY3Rvcnkgc3RydWN0dXJlIG1hZGUgaWYgeW91IGxhY2sKICAgICAgIHBlcm1pc3Npb25zIG5lZWRlZCB0byByZW1vdmUgdGhlIGxlYWYgZGlyZWN0b3J5IG9yIGZpbGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqb2xkKiBhbmQgKm5ldyouCisKIAogLi4gZnVuY3Rpb246OiByZXBsYWNlKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKIApAQCAtMTg2Nyw2ICsxOTc0LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiBybWRpcihwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTg4MCwzOCArMTk5MCw1OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNjYW5kaXIocGF0aD0nLicpCiAKLSAgIFJldHVybiBhbiBpdGVyYXRvciBvZiA6Y2xhc3M6YERpckVudHJ5YCBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudHJpZXMKLSAgIGluIHRoZSBkaXJlY3RvcnkgZ2l2ZW4gYnkgKnBhdGgqLiBUaGUgZW50cmllcyBhcmUgeWllbGRlZCBpbiBhcmJpdHJhcnkKLSAgIG9yZGVyLCBhbmQgdGhlIHNwZWNpYWwgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBhcmUgbm90IGluY2x1ZGVkLgorICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIDpjbGFzczpgb3MuRGlyRW50cnlgIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUKKyAgIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieSAqcGF0aCouIFRoZSBlbnRyaWVzIGFyZSB5aWVsZGVkIGluCisgICBhcmJpdHJhcnkgb3JkZXIsIGFuZCB0aGUgc3BlY2lhbCBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGFyZSBub3QKKyAgIGluY2x1ZGVkLgogCiAgICBVc2luZyA6ZnVuYzpgc2NhbmRpcmAgaW5zdGVhZCBvZiA6ZnVuYzpgbGlzdGRpcmAgY2FuIHNpZ25pZmljYW50bHkKICAgIGluY3JlYXNlIHRoZSBwZXJmb3JtYW5jZSBvZiBjb2RlIHRoYXQgYWxzbyBuZWVkcyBmaWxlIHR5cGUgb3IgZmlsZQotICAgYXR0cmlidXRlIGluZm9ybWF0aW9uLCBiZWNhdXNlIDpjbGFzczpgRGlyRW50cnlgIG9iamVjdHMgZXhwb3NlIHRoaXMKKyAgIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgYmVjYXVzZSA6Y2xhc3M6YG9zLkRpckVudHJ5YCBvYmplY3RzIGV4cG9zZSB0aGlzCiAgICBpbmZvcm1hdGlvbiBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyBpdCB3aGVuIHNjYW5uaW5nIGEgZGlyZWN0b3J5LgotICAgQWxsIDpjbGFzczpgRGlyRW50cnlgIG1ldGhvZHMgbWF5IHBlcmZvcm0gYSBzeXN0ZW0gY2FsbCwgYnV0Ci0gICA6ZnVuYzpgfkRpckVudHJ5LmlzX2RpcmAgYW5kIDpmdW5jOmB+RGlyRW50cnkuaXNfZmlsZWAgdXN1YWxseSBvbmx5Ci0gICByZXF1aXJlIGEgc3lzdGVtIGNhbGwgZm9yIHN5bWJvbGljIGxpbmtzOyA6ZnVuYzpgRGlyRW50cnkuc3RhdGAKKyAgIEFsbCA6Y2xhc3M6YG9zLkRpckVudHJ5YCBtZXRob2RzIG1heSBwZXJmb3JtIGEgc3lzdGVtIGNhbGwsIGJ1dAorICAgOmZ1bmM6YH5vcy5EaXJFbnRyeS5pc19kaXJgIGFuZCA6ZnVuYzpgfm9zLkRpckVudHJ5LmlzX2ZpbGVgIHVzdWFsbHkgb25seQorICAgcmVxdWlyZSBhIHN5c3RlbSBjYWxsIGZvciBzeW1ib2xpYyBsaW5rczsgOmZ1bmM6YG9zLkRpckVudHJ5LnN0YXRgCiAgICBhbHdheXMgcmVxdWlyZXMgYSBzeXN0ZW0gY2FsbCBvbiBVbml4IGJ1dCBvbmx5IHJlcXVpcmVzIG9uZSBmb3IKICAgIHN5bWJvbGljIGxpbmtzIG9uIFdpbmRvd3MuCiAKLSAgIE9uIFVuaXgsICpwYXRoKiBjYW4gYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2AgKHVzZQorICAgT24gVW5peCwgKnBhdGgqIGNhbiBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCAoZWl0aGVyCisgICBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZTsgdXNlCiAgICA6ZnVuYzpgfm9zLmZzZW5jb2RlYCBhbmQgOmZ1bmM6YH5vcy5mc2RlY29kZWAgdG8gZW5jb2RlIGFuZCBkZWNvZGUKICAgIDpjbGFzczpgYnl0ZXNgIHBhdGhzKS4gT24gV2luZG93cywgKnBhdGgqIG11c3QgYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAuCi0gICBPbiBib3RoIHN5c3RlbXMsIHRoZSB0eXBlIG9mIHRoZSA6YXR0cjpgfkRpckVudHJ5Lm5hbWVgIGFuZAotICAgOmF0dHI6YH5EaXJFbnRyeS5wYXRoYCBhdHRyaWJ1dGVzIG9mIGVhY2ggOmNsYXNzOmBEaXJFbnRyeWAgd2lsbCBiZSBvZgorICAgT24gYm90aCBzeXN0ZW1zLCB0aGUgdHlwZSBvZiB0aGUgOmF0dHI6YH5vcy5EaXJFbnRyeS5uYW1lYCBhbmQKKyAgIDphdHRyOmB+b3MuRGlyRW50cnkucGF0aGAgYXR0cmlidXRlcyBvZiBlYWNoIDpjbGFzczpgb3MuRGlyRW50cnlgIHdpbGwgYmUgb2YKICAgIHRoZSBzYW1lIHR5cGUgYXMgKnBhdGgqLgogCisgICBUaGUgOmZ1bmM6YHNjYW5kaXJgIGl0ZXJhdG9yIHN1cHBvcnRzIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbAorICAgYW5kIGhhcyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKKworICAgLi4gbWV0aG9kOjogc2NhbmRpci5jbG9zZSgpCisKKyAgICAgIENsb3NlIHRoZSBpdGVyYXRvciBhbmQgZnJlZSBhY3F1aXJlZCByZXNvdXJjZXMuCisKKyAgICAgIFRoaXMgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgaXRlcmF0b3IgaXMgZXhoYXVzdGVkIG9yIGdhcmJhZ2UKKyAgICAgIGNvbGxlY3RlZCwgb3Igd2hlbiBhbiBlcnJvciBoYXBwZW5zIGR1cmluZyBpdGVyYXRpbmcuICBIb3dldmVyIGl0CisgICAgICBpcyBhZHZpc2FibGUgdG8gY2FsbCBpdCBleHBsaWNpdGx5IG9yIHVzZSB0aGUgOmtleXdvcmQ6YHdpdGhgCisgICAgICBzdGF0ZW1lbnQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBzaW1wbGUgdXNlIG9mIDpmdW5jOmBzY2FuZGlyYCB0byBkaXNwbGF5IGFsbAogICAgdGhlIGZpbGVzIChleGNsdWRpbmcgZGlyZWN0b3JpZXMpIGluIHRoZSBnaXZlbiAqcGF0aCogdGhhdCBkb24ndCBzdGFydCB3aXRoCiAgICBgYCcuJ2BgLiBUaGUgYGBlbnRyeS5pc19maWxlKClgYCBjYWxsIHdpbGwgZ2VuZXJhbGx5IG5vdCBtYWtlIGFuIGFkZGl0aW9uYWwKICAgIHN5c3RlbSBjYWxsOjoKIAotICAgICAgZm9yIGVudHJ5IGluIG9zLnNjYW5kaXIocGF0aCk6Ci0gICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKLSAgICAgICAgICAgICBwcmludChlbnRyeS5uYW1lKQorICAgICAgd2l0aCBvcy5zY2FuZGlyKHBhdGgpIGFzIGl0OgorICAgICAgICAgIGZvciBlbnRyeSBpbiBpdDoKKyAgICAgICAgICAgICAgaWYgbm90IGVudHJ5Lm5hbWUuc3RhcnRzd2l0aCgnLicpIGFuZCBlbnRyeS5pc19maWxlKCk6CisgICAgICAgICAgICAgICAgICBwcmludChlbnRyeS5uYW1lKQogCiAgICAuLiBub3RlOjoKIApAQCAtMTkyNyw2ICsyMDU3LDE0IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbCBhbmQgdGhlCisgICAgICA6ZnVuYzpgfnNjYW5kaXIuY2xvc2UoKWAgbWV0aG9kLiAgSWYgYSA6ZnVuYzpgc2NhbmRpcmAgaXRlcmF0b3IgaXMgbmVpdGhlcgorICAgICAgZXhoYXVzdGVkIG5vciBleHBsaWNpdGx5IGNsb3NlZCBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2lsbCBiZSBlbWl0dGVkCisgICAgICBpbiBpdHMgZGVzdHJ1Y3Rvci4KKworICAgICAgVGhlIGZ1bmN0aW9uIGFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBEaXJFbnRyeQogCkBAIC0xOTM1LDE5ICsyMDczLDIyIEBACiAKICAgIDpmdW5jOmBzY2FuZGlyYCB3aWxsIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGlzIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlIHdpdGhvdXQKICAgIG1ha2luZyBhZGRpdGlvbmFsIHN5c3RlbSBjYWxscy4gV2hlbiBhIGBgc3RhdCgpYGAgb3IgYGBsc3RhdCgpYGAgc3lzdGVtIGNhbGwKLSAgIGlzIG1hZGUsIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0IHdpbGwgY2FjaGUgdGhlIHJlc3VsdC4KKyAgIGlzIG1hZGUsIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0IHdpbGwgY2FjaGUgdGhlIHJlc3VsdC4KIAotICAgYGBEaXJFbnRyeWBgIGluc3RhbmNlcyBhcmUgbm90IGludGVuZGVkIHRvIGJlIHN0b3JlZCBpbiBsb25nLWxpdmVkIGRhdGEKKyAgIGBgb3MuRGlyRW50cnlgYCBpbnN0YW5jZXMgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBzdG9yZWQgaW4gbG9uZy1saXZlZCBkYXRhCiAgICBzdHJ1Y3R1cmVzOyBpZiB5b3Uga25vdyB0aGUgZmlsZSBtZXRhZGF0YSBoYXMgY2hhbmdlZCBvciBpZiBhIGxvbmcgdGltZSBoYXMKICAgIGVsYXBzZWQgc2luY2UgY2FsbGluZyA6ZnVuYzpgc2NhbmRpcmAsIGNhbGwgYGBvcy5zdGF0KGVudHJ5LnBhdGgpYGAgdG8gZmV0Y2gKICAgIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKLSAgIEJlY2F1c2UgdGhlIGBgRGlyRW50cnlgYCBtZXRob2RzIGNhbiBtYWtlIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMsIHRoZXkgbWF5CisgICBCZWNhdXNlIHRoZSBgYG9zLkRpckVudHJ5YGAgbWV0aG9kcyBjYW4gbWFrZSBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzLCB0aGV5IG1heQogICAgYWxzbyByYWlzZSA6ZXhjOmBPU0Vycm9yYC4gSWYgeW91IG5lZWQgdmVyeSBmaW5lLWdyYWluZWQKICAgIGNvbnRyb2wgb3ZlciBlcnJvcnMsIHlvdSBjYW4gY2F0Y2ggOmV4YzpgT1NFcnJvcmAgd2hlbiBjYWxsaW5nIG9uZSBvZiB0aGUKLSAgIGBgRGlyRW50cnlgYCBtZXRob2RzIGFuZCBoYW5kbGUgYXMgYXBwcm9wcmlhdGUuCisgICBgYG9zLkRpckVudHJ5YGAgbWV0aG9kcyBhbmQgaGFuZGxlIGFzIGFwcHJvcHJpYXRlLgogCi0gICBBdHRyaWJ1dGVzIGFuZCBtZXRob2RzIG9uIGEgYGBEaXJFbnRyeWBgIGluc3RhbmNlIGFyZSBhcyBmb2xsb3dzOgorICAgVG8gYmUgZGlyZWN0bHkgdXNhYmxlIGFzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLCBgYG9zLkRpckVudHJ5YGAKKyAgIGltcGxlbWVudHMgdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZS4KKworICAgQXR0cmlidXRlcyBhbmQgbWV0aG9kcyBvbiBhIGBgb3MuRGlyRW50cnlgYCBpbnN0YW5jZSBhcmUgYXMgZm9sbG93czoKIAogICAgLi4gYXR0cmlidXRlOjogbmFtZQogCkBAIC0xOTczLDggKzIxMTQsOSBAQAogCiAgICAgICBSZXR1cm4gdGhlIGlub2RlIG51bWJlciBvZiB0aGUgZW50cnkuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBVc2UgYGBvcy5zdGF0KGVudHJ5LnBhdGgsCi0gICAgICBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLnN0X2lub2BgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdC4gVXNlCisgICAgICBgYG9zLnN0YXQoZW50cnkucGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5zdF9pbm9gYCB0byBmZXRjaCB1cC10by1kYXRlCisgICAgICBpbmZvcm1hdGlvbi4KIAogICAgICAgT24gdGhlIGZpcnN0LCB1bmNhY2hlZCBjYWxsLCBhIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkIG9uIFdpbmRvd3MgYnV0CiAgICAgICBub3Qgb24gVW5peC4KQEAgLTE5ODksNyArMjEzMSw3IEBACiAgICAgICBpcyBhIGRpcmVjdG9yeSAod2l0aG91dCBmb2xsb3dpbmcgc3ltbGlua3MpOyByZXR1cm4gYGBGYWxzZWBgIGlmIHRoZQogICAgICAgZW50cnkgaXMgYW55IG90aGVyIGtpbmQgb2YgZmlsZSBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKICAgICAgIGZvciAqZm9sbG93X3N5bWxpbmtzKiBgYFRydWVgYCBhbmQgYGBGYWxzZWBgLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCBhbG9uZwogICAgICAgd2l0aCA6ZnVuYzpgc3RhdC5TX0lTRElSYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgogCkBAIC0yMDEzLDggKzIxNTUsOCBAQAogICAgICAgaXMgYSBmaWxlICh3aXRob3V0IGZvbGxvd2luZyBzeW1saW5rcyk7IHJldHVybiBgYEZhbHNlYGAgaWYgdGhlIGVudHJ5IGlzCiAgICAgICBhIGRpcmVjdG9yeSBvciBvdGhlciBub24tZmlsZSBlbnRyeSwgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FjaGluZywgc3lzdGVtIGNhbGxzCi0gICAgICBtYWRlLCBhbmQgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGFzIHBlciA6ZnVuYzpgfkRpckVudHJ5LmlzX2RpcmAuCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdC4gQ2FjaGluZywgc3lzdGVtIGNhbGxzCisgICAgICBtYWRlLCBhbmQgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGFzIHBlciA6ZnVuYzpgfm9zLkRpckVudHJ5LmlzX2RpcmAuCiAKICAgIC4uIG1ldGhvZDo6IGlzX3N5bWxpbmsoKQogCkBAIC0yMDIyLDcgKzIxNjQsNyBAQAogICAgICAgcmV0dXJuIGBgRmFsc2VgYCBpZiB0aGUgZW50cnkgcG9pbnRzIHRvIGEgZGlyZWN0b3J5IG9yIGFueSBraW5kIG9mIGZpbGUsCiAgICAgICBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWxsCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdC4gQ2FsbAogICAgICAgOmZ1bmM6YG9zLnBhdGguaXNsaW5rYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgogCiAgICAgICBPbiB0aGUgZmlyc3QsIHVuY2FjaGVkIGNhbGwsIG5vIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkIGluIG1vc3QgY2FzZXMuCkBAIC0yMDQ3LDIzICsyMTg5LDI4IEBACiAgICAgICA6Y2xhc3M6YHN0YXRfcmVzdWx0YCBhcmUgYWx3YXlzIHNldCB0byB6ZXJvLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCB0bwogICAgICAgZ2V0IHRoZXNlIGF0dHJpYnV0ZXMuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKICAgICAgIGZvciAqZm9sbG93X3N5bWxpbmtzKiBgYFRydWVgYCBhbmQgYGBGYWxzZWBgLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCB0bwogICAgICAgZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAogICAgTm90ZSB0aGF0IHRoZXJlIGlzIGEgbmljZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIHNldmVyYWwgYXR0cmlidXRlcwotICAgYW5kIG1ldGhvZHMgb2YgYGBEaXJFbnRyeWBgIGFuZCBvZiA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAuICBJbgotICAgcGFydGljdWxhciwgdGhlIGBgbmFtZWBgIGF0dHJpYnV0ZSBoYXMgdGhlIHNhbWUgbWVhbmluZywgYXMgZG8gdGhlCi0gICBgYGlzX2RpcigpYGAsIGBgaXNfZmlsZSgpYGAsIGBgaXNfc3ltbGluaygpYGAgYW5kIGBgc3RhdCgpYGAgbWV0aG9kcy4KKyAgIGFuZCBtZXRob2RzIG9mIGBgb3MuRGlyRW50cnlgYCBhbmQgb2YgOmNsYXNzOmBwYXRobGliLlBhdGhgLiAgSW4KKyAgIHBhcnRpY3VsYXIsIHRoZSBgYG5hbWVgYCBhdHRyaWJ1dGUgaGFzIHRoZSBzYW1lCisgICBtZWFuaW5nLCBhcyBkbyB0aGUgYGBpc19kaXIoKWBgLCBgYGlzX2ZpbGUoKWBgLCBgYGlzX3N5bWxpbmsoKWBgCisgICBhbmQgYGBzdGF0KClgYCBtZXRob2RzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSA6Y2xhc3M6YH5vcy5QYXRoTGlrZWAgaW50ZXJmYWNlLgorCiAKIC4uIGZ1bmN0aW9uOjogc3RhdChwYXRoLCBcKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBHZXQgdGhlIHN0YXR1cyBvZiBhIGZpbGUgb3IgYSBmaWxlIGRlc2NyaXB0b3IuIFBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YgYQogICAgOmM6ZnVuYzpgc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguICpwYXRoKiBtYXkgYmUgc3BlY2lmaWVkIGFzCi0gICBlaXRoZXIgYSBzdHJpbmcgb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIFJldHVybiBhIDpjbGFzczpgc3RhdF9yZXN1bHRgCisgICBlaXRoZXIgYSBzdHJpbmcgLS0gZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYAorICAgaW50ZXJmYWNlIC0tIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiBSZXR1cm4gYSA6Y2xhc3M6YHN0YXRfcmVzdWx0YAogICAgb2JqZWN0LgogCiAgICBUaGlzIGZ1bmN0aW9uIG5vcm1hbGx5IGZvbGxvd3Mgc3ltbGlua3M7IHRvIHN0YXQgYSBzeW1saW5rIGFkZCB0aGUgYXJndW1lbnQKQEAgLTIwOTMsNiArMjI0MCw5IEBACiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cywgc3BlY2lmeWluZyBhIGZpbGUKICAgICAgIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiBhIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogc3RhdF9yZXN1bHQKIApAQCAtMjMxNCwxOSArMjQ2NCwyMiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4KIAorICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlIDpjb25zdDpgU1RfUkRPTkxZYCBhbmQgOmNvbnN0OmBTVF9OT1NVSURgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSA6Y29uc3Q6YFNUX05PREVWYCwgOmNvbnN0OmBTVF9OT0VYRUNgLCA6Y29uc3Q6YFNUX1NZTkNIUk9OT1VTYCwKICAgICAgIDpjb25zdDpgU1RfTUFORExPQ0tgLCA6Y29uc3Q6YFNUX1dSSVRFYCwgOmNvbnN0OmBTVF9BUFBFTkRgLAogICAgICAgOmNvbnN0OmBTVF9JTU1VVEFCTEVgLCA6Y29uc3Q6YFNUX05PQVRJTUVgLCA6Y29uc3Q6YFNUX05PRElSQVRJTUVgLAogICAgICAgYW5kIDpjb25zdDpgU1RfUkVMQVRJTUVgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIAogLi4gZGF0YTo6IHN1cHBvcnRzX2Rpcl9mZApAQCAtMjQ0Nyw2ICsyNjAwLDkgQEAKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhcmd1bWVudCwgYW5kIG5vdyBhbGxvdyAqdGFyZ2V0X2lzX2RpcmVjdG9yeSoKICAgICAgIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHN5bmMoKQogCkBAIC0yNDcxLDYgKzI2MjcsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCisKIC4uIGZ1bmN0aW9uOjogdW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBmdW5jdGlvbiBpcyBzZW1hbnRpY2FsbHkKQEAgLTI0ODEsNiArMjY0MSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogdXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKlssIG5zXSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0yNTE4LDYgKzI2ODEsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiwgKmZvbGxvd19zeW1saW5rcyosIGFuZCAqbnMqIHBhcmFtZXRlcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsayh0b3AsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCBmb2xsb3dsaW5rcz1GYWxzZSkKIApAQCAtMjYwOCw2ICsyNzc0LDkgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGNhbGxzIDpmdW5jOmBvcy5zY2FuZGlyYCBpbnN0ZWFkIG9mIDpmdW5jOmBvcy5saXN0ZGlyYCwKICAgICAgIG1ha2luZyBpdCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjYWxscyB0byA6ZnVuYzpgb3Muc3RhdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZndhbGsodG9wPScuJywgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpCiAKQEAgLTI2NjQsNiArMjgzMyw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC0yNjc1LDEyICsyODQ3LDE2IEBACiAuLiBmdW5jdGlvbjo6IGdldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZvcgotICAgKnBhdGgqLiAqYXR0cmlidXRlKiBjYW4gYmUgYnl0ZXMgb3Igc3RyLiBJZiBpdCBpcyBzdHIsIGl0IGlzIGVuY29kZWQKLSAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisgICAqcGF0aCouICphdHRyaWJ1dGUqIGNhbiBiZSBieXRlcyBvciBzdHIgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUKKyAgIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSkuIElmIGl0IGlzIHN0ciwgaXQgaXMgZW5jb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZnByICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBsaXN0eGF0dHIocGF0aD1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMjY5MiwyMSArMjg2OCwyOSBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBSZW1vdmVzIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmcm9tICpwYXRoKi4KLSAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCisgICAqYXR0cmlidXRlKiBzaG91bGQgYmUgYnl0ZXMgb3Igc3RyIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlCisgICA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZAogICAgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgU2V0IHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBvbiAqcGF0aCogdG8gKnZhbHVlKi4KLSAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzLiBJZiBpdCBpcyBhIHN0ciwKKyAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzIChkaXJlY3RseSBvcgorICAgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0ciwKICAgIGl0IGlzIGVuY29kZWQgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4gICpmbGFncyogbWF5IGJlCiAgICA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgb3IgOmRhdGE6YFhBVFRSX0NSRUFURWAuIElmIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBpcwogICAgZ2l2ZW4gYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIGBgRUVYSVNUU2BgIHdpbGwgYmUgcmFpc2VkLgpAQCAtMjcyMSw2ICsyOTA1LDkgQEAKICAgICAgIEEgYnVnIGluIExpbnV4IGtlcm5lbCB2ZXJzaW9ucyBsZXNzIHRoYW4gMi42LjM5IGNhdXNlZCB0aGUgZmxhZ3MgYXJndW1lbnQKICAgICAgIHRvIGJlIGlnbm9yZWQgb24gc29tZSBmaWxlc3lzdGVtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZGF0YTo6IFhBVFRSX1NJWkVfTUFYCiAKQEAgLTI4MjIsNiArMzAwOSw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCoKICAgICAgIGZvciA6ZnVuYzpgZXhlY3ZlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGZ1bmN0aW9uOjogX2V4aXQobikKIAogICAgRXhpdCB0aGUgcHJvY2VzcyB3aXRoIHN0YXR1cyAqbiosIHdpdGhvdXQgY2FsbGluZyBjbGVhbnVwIGhhbmRsZXJzLCBmbHVzaGluZwpAQCAtMzEzMiw2ICszMzIyLDkgQEAKICAgIDpmdW5jOmBzcGF3bnZlYCBhcmUgbm90IHRocmVhZC1zYWZlIG9uIFdpbmRvd3M7IHdlIGFkdmlzZSB5b3UgdG8gdXNlIHRoZQogICAgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlIGluc3RlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBQX05PV0FJVAogICAgICAgICAgIFBfTk9XQUlUTwpAQCAtMzYxOCw2ICszODExLDExIEBACiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4gUmV0dXJucyBOb25lIGlmIHVuZGV0ZXJtaW5lZC4KIAorICAgVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuCisgICB1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoCisgICBgYGxlbihvcy5zY2hlZF9nZXRhZmZpbml0eSgwKSlgYAorCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAKQEAgLTM3MzMsMzUgKzM5MzEsODkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKLS4uIF9vcy1taXNjZnVuYzoKIAotTWlzY2VsbGFuZW91cyBGdW5jdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSYW5kb20gbnVtYmVycworLS0tLS0tLS0tLS0tLS0KIAogCi0uLiBmdW5jdGlvbjo6IHVyYW5kb20obikKKy4uIGZ1bmN0aW9uOjogZ2V0cmFuZG9tKHNpemUsIGZsYWdzPTApCiAKLSAgIFJldHVybiBhIHN0cmluZyBvZiAqbiogcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4KKyAgIEdldCB1cCB0byAqc2l6ZSogcmFuZG9tIGJ5dGVzLiBUaGUgZnVuY3Rpb24gY2FuIHJldHVybiBsZXNzIGJ5dGVzIHRoYW4KKyAgIHJlcXVlc3RlZC4KKworICAgVGhlc2UgYnl0ZXMgY2FuIGJlIHVzZWQgdG8gc2VlZCB1c2VyLXNwYWNlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9ycyBvciBmb3IKKyAgIGNyeXB0b2dyYXBoaWMgcHVycG9zZXMuCisKKyAgIGBgZ2V0cmFuZG9tKClgYCByZWxpZXMgb24gZW50cm9weSBnYXRoZXJlZCBmcm9tIGRldmljZSBkcml2ZXJzIGFuZCBvdGhlcgorICAgc291cmNlcyBvZiBlbnZpcm9ubWVudGFsIG5vaXNlLiBVbm5lY2Vzc2FyaWx5IHJlYWRpbmcgbGFyZ2UgcXVhbnRpdGllcyBvZgorICAgZGF0YSB3aWxsIGhhdmUgYSBuZWdhdGl2ZSBpbXBhY3Qgb24gIG90aGVyIHVzZXJzICBvZiB0aGUgYGAvZGV2L3JhbmRvbWBgIGFuZAorICAgYGAvZGV2L3VyYW5kb21gYCBkZXZpY2VzLgorCisgICBUaGUgZmxhZ3MgYXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBjb250YWluIHplcm8gb3IgbW9yZSBvZiB0aGUKKyAgIGZvbGxvd2luZyB2YWx1ZXMgT1JlZCB0b2dldGhlcjogOnB5OmRhdGE6YG9zLkdSTkRfUkFORE9NYCBhbmQKKyAgIDpweTpkYXRhOmBHUk5EX05PTkJMT0NLYC4KKworICAgU2VlIGFsc28gdGhlIGBMaW51eCBnZXRyYW5kb20oKSBtYW51YWwgcGFnZQorICAgPGh0dHA6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMi9nZXRyYW5kb20uMi5odG1sPmBfLgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4IDMuMTcgYW5kIG5ld2VyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZnVuY3Rpb246OiB1cmFuZG9tKHNpemUpCisKKyAgIFJldHVybiBhIHN0cmluZyBvZiAqc2l6ZSogcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4KIAogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHJhbmRvbSBieXRlcyBmcm9tIGFuIE9TLXNwZWNpZmljIHJhbmRvbW5lc3Mgc291cmNlLiAgVGhlCiAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSB1bnByZWRpY3RhYmxlIGVub3VnaCBmb3IgY3J5cHRvZ3JhcGhpYyBhcHBsaWNhdGlvbnMsCiAgICB0aG91Z2ggaXRzIGV4YWN0IHF1YWxpdHkgZGVwZW5kcyBvbiB0aGUgT1MgaW1wbGVtZW50YXRpb24uCiAKLSAgIE9uIExpbnV4LCBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBpcyB1c2VkIGlmIGF2YWlsYWJsZSBhbmQgdGhlIHVyYW5kb20KLSAgIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZCAoYGBnZXRyYW5kb20oKWBgIGRvZXMgbm90IGJsb2NrKS4KLSAgIE9uIGEgVW5peC1saWtlIHN5c3RlbSB0aGlzIHdpbGwgcXVlcnkgYGAvZGV2L3VyYW5kb21gYC4gT24gV2luZG93cywgaXQKLSAgIHdpbGwgdXNlIGBgQ3J5cHRHZW5SYW5kb20oKWBgLiAgSWYgYSByYW5kb21uZXNzIHNvdXJjZSBpcyBub3QgZm91bmQsCi0gICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIE9uIExpbnV4LCBpZiB0aGUgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgaXMgYXZhaWxhYmxlLCBpdCBpcyB1c2VkIGluCisgICBibG9ja2luZyBtb2RlOiBibG9jayB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkCisgICAoMTI4IGJpdHMgb2YgZW50cm9weSBhcmUgY29sbGVjdGVkIGJ5IHRoZSBrZXJuZWwpLiBTZWUgdGhlIDpwZXA6YDUyNGAgZm9yCisgICB0aGUgcmF0aW9uYWxlLiBPbiBMaW51eCwgdGhlIDpmdW5jOmBnZXRyYW5kb21gIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGdldAorICAgcmFuZG9tIGJ5dGVzIGluIG5vbi1ibG9ja2luZyBtb2RlICh1c2luZyB0aGUgOmRhdGE6YEdSTkRfTk9OQkxPQ0tgIGZsYWcpIG9yCisgICB0byBwb2xsIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQuCiAKLSAgIEZvciBhbiBlYXN5LXRvLXVzZSBpbnRlcmZhY2UgdG8gdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCi0gICBwcm92aWRlZCBieSB5b3VyIHBsYXRmb3JtLCBwbGVhc2Ugc2VlIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAuCisgICBPbiBhIFVuaXgtbGlrZSBzeXN0ZW0sIHJhbmRvbSBieXRlcyBhcmUgcmVhZCBmcm9tIHRoZSBgYC9kZXYvdXJhbmRvbWBgCisgICBkZXZpY2UuIElmIHRoZSBgYC9kZXYvdXJhbmRvbWBgIGRldmljZSBpcyBub3QgYXZhaWxhYmxlIG9yIG5vdCByZWFkYWJsZSwgdGhlCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICBPbiBXaW5kb3dzLCBpdCB3aWxsIHVzZSBgYENyeXB0R2VuUmFuZG9tKClgYC4KKworICAgLi4gc2VlYWxzbzo6CisgICAgICBUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIHByb3ZpZGVzIGhpZ2hlciBsZXZlbCBmdW5jdGlvbnMuIEZvciBhbgorICAgICAgZWFzeS10by11c2UgaW50ZXJmYWNlIHRvIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBwcm92aWRlZCBieSB5b3VyCisgICAgICBwbGF0Zm9ybSwgcGxlYXNlIHNlZSA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNi4wCisgICAgICBPbiBMaW51eCwgYGBnZXRyYW5kb20oKWBgIGlzIG5vdyB1c2VkIGluIGJsb2NraW5nIG1vZGUgdG8gaW5jcmVhc2UgdGhlCisgICAgICBzZWN1cml0eS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMgotICAgICAgT24gTGludXgsIGlmIGBgZ2V0cmFuZG9tKClgYCBibG9ja3MgKHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QKLSAgICAgIGluaXRpYWxpemVkIHlldCksIGZhbGwgYmFjayBvbiByZWFkaW5nIGBgL2Rldi91cmFuZG9tYGAuCisgICAgICBPbiBMaW51eCwgaWYgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGJsb2NrcyAodGhlIHVyYW5kb20gZW50cm9weSBwb29sCisgICAgICBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0KSwgZmFsbCBiYWNrIG9uIHJlYWRpbmcgYGAvZGV2L3VyYW5kb21gYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyLCB0aGUgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgaXMgbm93IHVzZWQKICAgICAgIHdoZW4gYXZhaWxhYmxlLiAgT24gT3BlbkJTRCA1LjYgYW5kIG5ld2VyLCB0aGUgQyBgYGdldGVudHJvcHkoKWBgCiAgICAgICBmdW5jdGlvbiBpcyBub3cgdXNlZC4gVGhlc2UgZnVuY3Rpb25zIGF2b2lkIHRoZSB1c2FnZSBvZiBhbiBpbnRlcm5hbCBmaWxlCiAgICAgICBkZXNjcmlwdG9yLgorCisuLiBkYXRhOjogR1JORF9OT05CTE9DSworCisgICBCeSAgZGVmYXVsdCwgd2hlbiByZWFkaW5nIGZyb20gYGAvZGV2L3JhbmRvbWBgLCA6ZnVuYzpgZ2V0cmFuZG9tYCBibG9ja3MgaWYKKyAgIG5vIHJhbmRvbSBieXRlcyBhcmUgYXZhaWxhYmxlLCBhbmQgd2hlbiByZWFkaW5nIGZyb20gYGAvZGV2L3VyYW5kb21gYCwgaXQgYmxvY2tzCisgICBpZiB0aGUgZW50cm9weSBwb29sIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuCisKKyAgIElmIHRoZSA6cHk6ZGF0YTpgR1JORF9OT05CTE9DS2AgZmxhZyBpcyBzZXQsIHRoZW4gOmZ1bmM6YGdldHJhbmRvbWAgZG9lcyBub3QKKyAgIGJsb2NrIGluIHRoZXNlIGNhc2VzLCBidXQgaW5zdGVhZCBpbW1lZGlhdGVseSByYWlzZXMgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBHUk5EX1JBTkRPTQorCisgICBJZiAgdGhpcyAgYml0ICBpcyAgc2V0LCAgdGhlbiAgcmFuZG9tIGJ5dGVzIGFyZSBkcmF3biBmcm9tIHRoZQorICAgYGAvZGV2L3JhbmRvbWBgIHBvb2wgaW5zdGVhZCBvZiB0aGUgYGAvZGV2L3VyYW5kb21gYCBwb29sLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0IGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKaW5kZXggMzg0NjExYy4uOTI1N2QyZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKQEAgLTM1LDEyICszNSw2IEBACiAgICBhY2Nlc3NpbmcgdGhlIE9TLiBJbiB0aGlzIGNhc2UsIGluc3RhbnRpYXRpbmcgb25lIG9mIHRoZSBwdXJlIGNsYXNzZXMgbWF5IGJlCiAgICB1c2VmdWwgc2luY2UgdGhvc2Ugc2ltcGx5IGRvbid0IGhhdmUgYW55IE9TLWFjY2Vzc2luZyBvcGVyYXRpb25zLgogCi0uLiBub3RlOjoKLSAgIFRoaXMgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIHBhY2thZ2UpIG1heSBvY2N1ciBpZiBkZWVtZWQKLSAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAuLiBzZWVhbHNvOjoKICAgIDpwZXA6YDQyOGA6IFRoZSBwYXRobGliIG1vZHVsZSAtLSBvYmplY3Qtb3JpZW50ZWQgZmlsZXN5c3RlbSBwYXRocy4KIApAQCAtMTExLDcgKzEwNSw4IEBACiAgICAgICBQdXJlUG9zaXhQYXRoKCdzZXR1cC5weScpCiAKICAgIEVhY2ggZWxlbWVudCBvZiAqcGF0aHNlZ21lbnRzKiBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhCi0gICBwYXRoIHNlZ21lbnQsIG9yIGFub3RoZXIgcGF0aCBvYmplY3Q6OgorICAgcGF0aCBzZWdtZW50LCBhbiBvYmplY3QgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UKKyAgIHdoaWNoIHJldHVybnMgYSBzdHJpbmcsIG9yIGFub3RoZXIgcGF0aCBvYmplY3Q6OgogCiAgICAgICA+Pj4gUHVyZVBhdGgoJ2ZvbycsICdzb21lL3BhdGgnLCAnYmFyJykKICAgICAgIFB1cmVQb3NpeFBhdGgoJ2Zvby9zb21lL3BhdGgvYmFyJykKQEAgLTE1Miw2ICsxNDcsMTIgQEAKICAgIHRvIGBgUHVyZVBvc2l4UGF0aCgnYmFyJylgYCwgd2hpY2ggaXMgd3JvbmcgaWYgYGBmb29gYCBpcyBhIHN5bWJvbGljIGxpbmsKICAgIHRvIGFub3RoZXIgZGlyZWN0b3J5KQogCisgICBQdXJlIHBhdGggb2JqZWN0cyBpbXBsZW1lbnQgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSwgYWxsb3dpbmcgdGhlbQorICAgdG8gYmUgdXNlZCBhbnl3aGVyZSB0aGUgaW50ZXJmYWNlIGlzIGFjY2VwdGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZS4KKwogLi4gY2xhc3M6OiBQdXJlUG9zaXhQYXRoKCpwYXRoc2VnbWVudHMpCiAKICAgIEEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBQdXJlUGF0aGAsIHRoaXMgcGF0aCBmbGF2b3VyIHJlcHJlc2VudHMgbm9uLVdpbmRvd3MKQEAgLTE5OSw3ICsyMDAsNyBAQAogICAgPj4+IFB1cmVXaW5kb3dzUGF0aCgnZm9vJykgPCBQdXJlUG9zaXhQYXRoKCdmb28nKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgVHlwZUVycm9yOiB1bm9yZGVyYWJsZSB0eXBlczogUHVyZVdpbmRvd3NQYXRoKCkgPCBQdXJlUG9zaXhQYXRoKCkKKyAgIFR5cGVFcnJvcjogJzwnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJ1B1cmVXaW5kb3dzUGF0aCcgYW5kICdQdXJlUG9zaXhQYXRoJwogCiAKIE9wZXJhdG9ycwpAQCAtMjE2LDYgKzIxNywxNCBAQAogICAgPj4+ICcvdXNyJyAvIHEKICAgIFB1cmVQb3NpeFBhdGgoJy91c3IvYmluJykKIAorQSBwYXRoIG9iamVjdCBjYW4gYmUgdXNlZCBhbnl3aGVyZSBhbiBvYmplY3QgaW1wbGVtZW50aW5nIDpjbGFzczpgb3MuUGF0aExpa2VgCitpcyBhY2NlcHRlZDo6CisKKyAgID4+PiBpbXBvcnQgb3MKKyAgID4+PiBwID0gUHVyZVBhdGgoJy9ldGMnKQorICAgPj4+IG9zLmZzcGF0aChwKQorICAgJy9ldGMnCisKIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoIGlzIHRoZSByYXcgZmlsZXN5c3RlbSBwYXRoIGl0c2VsZgogKGluIG5hdGl2ZSBmb3JtLCBlLmcuIHdpdGggYmFja3NsYXNoZXMgdW5kZXIgV2luZG93cyksIHdoaWNoIHlvdSBjYW4KIHBhc3MgdG8gYW55IGZ1bmN0aW9uIHRha2luZyBhIGZpbGUgcGF0aCBhcyBhIHN0cmluZzo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wZGIucnN0IGIvRG9jL2xpYnJhcnkvcGRiLnJzdAppbmRleCBkNzdkZTJlLi41MmJlZjY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wZGIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKQEAgLTE0NCw3ICsxNDQsNyBAQAogYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6CiAKIC4uIGNsYXNzOjogUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBcCi0gICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSkKKyAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSkKIAogICAgOmNsYXNzOmBQZGJgIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy4KIApAQCAtMTYwLDYgKzE2MCw5IEBACiAgICBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgYWdhaW4gYnkgcHJlc3NpbmcgOmtiZDpgQ3RybC1DYC4gIElmIHlvdQogICAgd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlQgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG8gdHJ1ZS4KIAorICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRydWUgYW5kIGNvbnRyb2xzIHdoZXRoZXIgUGRiIHdpbGwgbG9hZAorICAgLnBkYnJjIGZpbGVzIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisKICAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjo6CiAKICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ2RqYW5nby4qJ10pLnNldF90cmFjZSgpCkBAIC0xNzEsNiArMTc0LDkgQEAKICAgICAgIFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlQgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5CiAgICAgICBQZGIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgKnJlYWRyYyogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCiAgICAgICAgICAgICAgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCiAgICAgICAgICAgICAgICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdCBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKaW5kZXggMGQ2NDE5MS4uNmU4NDMwZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CkBAIC00OTIsNyArNDkyLDcgQEAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0bmV3YXJnc19leF9fKCkKIAotICAgSW4gcHJvdG9jb2xzIDQgYW5kIG5ld2VyLCBjbGFzc2VzIHRoYXQgaW1wbGVtZW50cyB0aGUKKyAgIEluIHByb3RvY29scyAyIGFuZCBuZXdlciwgY2xhc3NlcyB0aGF0IGltcGxlbWVudHMgdGhlCiAgICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIG1ldGhvZCBjYW4gZGljdGF0ZSB0aGUgdmFsdWVzIHBhc3NlZCB0byB0aGUKICAgIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLiAgVGhlIG1ldGhvZCBtdXN0IHJldHVybiBhIHBhaXIKICAgIGBgKGFyZ3MsIGt3YXJncylgYCB3aGVyZSAqYXJncyogaXMgYSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cwpAQCAtNTA0LDE1ICs1MDQsMjIgQEAKICAgIGNsYXNzIHJlcXVpcmVzIGtleXdvcmQtb25seSBhcmd1bWVudHMuICBPdGhlcndpc2UsIGl0IGlzIHJlY29tbWVuZGVkIGZvcgogICAgY29tcGF0aWJpbGl0eSB0byBpbXBsZW1lbnQgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgaXMgbm93IHVzZWQgaW4gcHJvdG9jb2xzIDIgYW5kIDMuCisKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0bmV3YXJnc19fKCkKIAotICAgVGhpcyBtZXRob2Qgc2VydmUgYSBzaW1pbGFyIHB1cnBvc2UgYXMgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBidXQKLSAgIGZvciBwcm90b2NvbHMgMiBhbmQgbmV3ZXIuICBJdCBtdXN0IHJldHVybiBhIHR1cGxlIG9mIGFyZ3VtZW50cyBgYGFyZ3NgYAotICAgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLgorICAgVGhpcyBtZXRob2Qgc2VydmUgYSBzaW1pbGFyIHB1cnBvc2UgYXMgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCwgYnV0CisgICBzdXBwb3J0cyBvbmx5IHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgSXQgbXVzdCByZXR1cm4gYSB0dXBsZSBvZiBhcmd1bWVudHMKKyAgIGBgYXJnc2BgIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHVwb24gdW5waWNrbGluZy4KIAotICAgSW4gcHJvdG9jb2xzIDQgYW5kIG5ld2VyLCA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdpbGwgbm90IGJlIGNhbGxlZCBpZgotICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcyBkZWZpbmVkLgorICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYCB3aWxsIG5vdCBiZSBjYWxsZWQgaWYgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcworICAgZGVmaW5lZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEJlZm9yZSBQeXRob24gMy42LCA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdhcyBjYWxsZWQgaW5zdGVhZCBvZgorICAgICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpbiBwcm90b2NvbHMgMiBhbmQgMy4KIAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRzdGF0ZV9fKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0IGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKaW5kZXggYzViYThkOC4uM2I2YzkyNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKQEAgLTExLDYgKzExLDExIEBACiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHRoZSBpbXBvcnQgc3lzdGVtLCBpbiBwYXJ0aWN1bGFyIHBhY2thZ2UKIHN1cHBvcnQuCiAKKy4uIGNsYXNzOjogTW9kdWxlSW5mbyhtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZykKKworICAgIEEgbmFtZWR0dXBsZSB0aGF0IGhvbGRzIGEgYnJpZWYgc3VtbWFyeSBvZiBhIG1vZHVsZSdzIGluZm8uCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gZnVuY3Rpb246OiBleHRlbmRfcGF0aChwYXRoLCBuYW1lKQogCkBAIC0xMzksNyArMTQ0LDcgQEAKIAogLi4gZnVuY3Rpb246OiBpdGVyX21vZHVsZXMocGF0aD1Ob25lLCBwcmVmaXg9JycpCiAKLSAgIFlpZWxkcyBgYChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gKnBhdGgqLCBvciwgaWYKKyAgIFlpZWxkcyA6Y2xhc3M6YE1vZHVsZUluZm9gIGZvciBhbGwgc3VibW9kdWxlcyBvbiAqcGF0aCosIG9yLCBpZgogICAgKnBhdGgqIGlzIGBgTm9uZWBgLCBhbGwgdG9wLWxldmVsIG1vZHVsZXMgb24gYGBzeXMucGF0aGBgLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KQEAgLTE2MCw3ICsxNjUsNyBAQAogCiAuLiBmdW5jdGlvbjo6IHdhbGtfcGFja2FnZXMocGF0aD1Ob25lLCBwcmVmaXg9JycsIG9uZXJyb3I9Tm9uZSkKIAotICAgWWllbGRzIGBgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseSBvbgorICAgWWllbGRzIDpjbGFzczpgTW9kdWxlSW5mb2AgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCiAgICAqcGF0aCosIG9yLCBpZiAqcGF0aCogaXMgYGBOb25lYGAsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdCBiL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKaW5kZXggZmZhYmMzMi4uZDcyYjY2MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CkBAIC02Miw2ICs2MiwxMyBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKwogT25lIGV4Y2VwdGlvbiBpcyBkZWZpbmVkIGFzIGFuIGF0dHJpYnV0ZSBvZiB0aGUgOm1vZDpgcG9wbGliYCBtb2R1bGU6CiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcXVldWUucnN0IGIvRG9jL2xpYnJhcnkvcXVldWUucnN0CmluZGV4IGUwMjZlNTIuLmVkNDA4ZjQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKQEAgLTE2LDggKzE2LDkgQEAKIG1vZHVsZS4KIAogVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRocmVlIHR5cGVzIG9mIHF1ZXVlLCB3aGljaCBkaWZmZXIgb25seSBpbiB0aGUgb3JkZXIgaW4KLXdoaWNoIHRoZSBlbnRyaWVzIGFyZSByZXRyaWV2ZWQuICBJbiBhIEZJRk8gcXVldWUsIHRoZSBmaXJzdCB0YXNrcyBhZGRlZCBhcmUKLXRoZSBmaXJzdCByZXRyaWV2ZWQuIEluIGEgTElGTyBxdWV1ZSwgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZW50cnkgaXMKK3doaWNoIHRoZSBlbnRyaWVzIGFyZSByZXRyaWV2ZWQuICBJbiBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAKK3F1ZXVlLCB0aGUgZmlyc3QgdGFza3MgYWRkZWQgYXJlIHRoZSBmaXJzdCByZXRyaWV2ZWQuIEluIGEKKzphYmJyOmBMSUZPIChsYXN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSwgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZW50cnkgaXMKIHRoZSBmaXJzdCByZXRyaWV2ZWQgKG9wZXJhdGluZyBsaWtlIGEgc3RhY2spLiAgV2l0aCBhIHByaW9yaXR5IHF1ZXVlLAogdGhlIGVudHJpZXMgYXJlIGtlcHQgc29ydGVkICh1c2luZyB0aGUgOm1vZDpgaGVhcHFgIG1vZHVsZSkgYW5kIHRoZQogbG93ZXN0IHZhbHVlZCBlbnRyeSBpcyByZXRyaWV2ZWQgZmlyc3QuCkBAIC0yOSwxNCArMzAsMTYgQEAKIAogLi4gY2xhc3M6OiBRdWV1ZShtYXhzaXplPTApCiAKLSAgIENvbnN0cnVjdG9yIGZvciBhIEZJRk8gcXVldWUuICAqbWF4c2l6ZSogaXMgYW4gaW50ZWdlciB0aGF0IHNldHMgdGhlIHVwcGVyYm91bmQKKyAgIENvbnN0cnVjdG9yIGZvciBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUuICAqbWF4c2l6ZSogaXMKKyAgIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCiAgICBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FuIGJlIHBsYWNlZCBpbiB0aGUgcXVldWUuICBJbnNlcnRpb24gd2lsbAogICAgYmxvY2sgb25jZSB0aGlzIHNpemUgaGFzIGJlZW4gcmVhY2hlZCwgdW50aWwgcXVldWUgaXRlbXMgYXJlIGNvbnN1bWVkLiAgSWYKICAgICptYXhzaXplKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybywgdGhlIHF1ZXVlIHNpemUgaXMgaW5maW5pdGUuCiAKIC4uIGNsYXNzOjogTGlmb1F1ZXVlKG1heHNpemU9MCkKIAotICAgQ29uc3RydWN0b3IgZm9yIGEgTElGTyBxdWV1ZS4gICptYXhzaXplKiBpcyBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAorICAgQ29uc3RydWN0b3IgZm9yIGEgOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlLiAgKm1heHNpemUqIGlzCisgICBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAogICAgbGltaXQgb24gdGhlIG51bWJlciBvZiBpdGVtcyB0aGF0IGNhbiBiZSBwbGFjZWQgaW4gdGhlIHF1ZXVlLiAgSW5zZXJ0aW9uIHdpbGwKICAgIGJsb2NrIG9uY2UgdGhpcyBzaXplIGhhcyBiZWVuIHJlYWNoZWQsIHVudGlsIHF1ZXVlIGl0ZW1zIGFyZSBjb25zdW1lZC4gIElmCiAgICAqbWF4c2l6ZSogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8sIHRoZSBxdWV1ZSBzaXplIGlzIGluZmluaXRlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdCBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKaW5kZXggMjJmMThhMC4uNWViNDRkYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CkBAIC00Niw3ICs0Niw4IEBACiAuLiB3YXJuaW5nOjoKIAogICAgVGhlIHBzZXVkby1yYW5kb20gZ2VuZXJhdG9ycyBvZiB0aGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yCi0gICBzZWN1cml0eSBwdXJwb3Nlcy4KKyAgIHNlY3VyaXR5IHB1cnBvc2VzLiAgRm9yIHNlY3VyaXR5IG9yIGNyeXB0b2dyYXBoaWMgdXNlcywgc2VlIHRoZQorICAgOm1vZDpgc2VjcmV0c2AgbW9kdWxlLgogCiAKIEJvb2trZWVwaW5nIGZ1bmN0aW9uczoKQEAgLTEyMyw2ICsxMjQsMjcgQEAKICAgIFJldHVybiBhIHJhbmRvbSBlbGVtZW50IGZyb20gdGhlIG5vbi1lbXB0eSBzZXF1ZW5jZSAqc2VxKi4gSWYgKnNlcSogaXMgZW1wdHksCiAgICByYWlzZXMgOmV4YzpgSW5kZXhFcnJvcmAuCiAKKy4uIGZ1bmN0aW9uOjogY2hvaWNlcyhrLCBwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUpCisKKyAgIFJldHVybiBhICprKiBzaXplZCBsaXN0IG9mIGVsZW1lbnRzIGNob3NlbiBmcm9tIHRoZSAqcG9wdWxhdGlvbiogd2l0aCByZXBsYWNlbWVudC4KKyAgIElmIHRoZSAqcG9wdWxhdGlvbiogaXMgZW1wdHksIHJhaXNlcyA6ZXhjOmBJbmRleEVycm9yYC4KKworICAgSWYgYSAqd2VpZ2h0cyogc2VxdWVuY2UgaXMgc3BlY2lmaWVkLCBzZWxlY3Rpb25zIGFyZSBtYWRlIGFjY29yZGluZyB0byB0aGUKKyAgIHJlbGF0aXZlIHdlaWdodHMuICBBbHRlcm5hdGl2ZWx5LCBpZiBhICpjdW1fd2VpZ2h0cyogc2VxdWVuY2UgaXMgZ2l2ZW4sIHRoZQorICAgc2VsZWN0aW9ucyBhcmUgbWFkZSBhY2NvcmRpbmcgdG8gdGhlIGN1bXVsYXRpdmUgd2VpZ2h0cy4gIEZvciBleGFtcGxlLCB0aGUKKyAgIHJlbGF0aXZlIHdlaWdodHMgYGBbMTAsIDUsIDMwLCA1XWBgIGFyZSBlcXVpdmFsZW50IHRvIHRoZSBjdW11bGF0aXZlCisgICB3ZWlnaHRzIGBgWzEwLCAxNSwgNDUsIDUwXWBgLiAgSW50ZXJuYWxseSwgdGhlIHJlbGF0aXZlIHdlaWdodHMgYXJlCisgICBjb252ZXJ0ZWQgdG8gY3VtdWxhdGl2ZSB3ZWlnaHRzIGJlZm9yZSBtYWtpbmcgc2VsZWN0aW9ucywgc28gc3VwcGx5aW5nIHRoZQorICAgY3VtdWxhdGl2ZSB3ZWlnaHRzIHNhdmVzIHdvcmsuCisKKyAgIElmIG5laXRoZXIgKndlaWdodHMqIG5vciAqY3VtX3dlaWdodHMqIGFyZSBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUKKyAgIHdpdGggZXF1YWwgcHJvYmFiaWxpdHkuICBJZiBhIHdlaWdodHMgc2VxdWVuY2UgaXMgc3VwcGxpZWQsIGl0IG11c3QgYmUKKyAgIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgKnBvcHVsYXRpb24qIHNlcXVlbmNlLiAgSXQgaXMgYSA6ZXhjOmBUeXBlRXJyb3JgCisgICB0byBzcGVjaWZ5IGJvdGggKndlaWdodHMqIGFuZCAqY3VtX3dlaWdodHMqLgorCisgICBUaGUgKndlaWdodHMqIG9yICpjdW1fd2VpZ2h0cyogY2FuIHVzZSBhbnkgbnVtZXJpYyB0eXBlIHRoYXQgaW50ZXJvcGVyYXRlcworICAgd2l0aCB0aGUgOmNsYXNzOmBmbG9hdGAgdmFsdWVzIHJldHVybmVkIGJ5IDpmdW5jOmByYW5kb21gICh0aGF0IGluY2x1ZGVzCisgICBpbnRlZ2VycywgZmxvYXRzLCBhbmQgZnJhY3Rpb25zIGJ1dCBleGNsdWRlcyBkZWNpbWFscykuCiAKIC4uIGZ1bmN0aW9uOjogc2h1ZmZsZSh4WywgcmFuZG9tXSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmUucnN0IGIvRG9jL2xpYnJhcnkvcmUucnN0CmluZGV4IDU2OWI1MjIuLjhmZmNkOWEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZS5yc3QKQEAgLTIyNCwxMiArMjI0LDggQEAKICAgIGZsYWdzIGFyZSBkZXNjcmliZWQgaW4gOnJlZjpgY29udGVudHMtb2YtbW9kdWxlLXJlYC4pIFRoaXMKICAgIGlzIHVzZWZ1bCBpZiB5b3Ugd2lzaCB0byBpbmNsdWRlIHRoZSBmbGFncyBhcyBwYXJ0IG9mIHRoZSByZWd1bGFyCiAgICBleHByZXNzaW9uLCBpbnN0ZWFkIG9mIHBhc3NpbmcgYSAqZmxhZyogYXJndW1lbnQgdG8gdGhlCi0gICA6ZnVuYzpgcmUuY29tcGlsZWAgZnVuY3Rpb24uCi0KLSAgIE5vdGUgdGhhdCB0aGUgYGAoP3gpYGAgZmxhZyBjaGFuZ2VzIGhvdyB0aGUgZXhwcmVzc2lvbiBpcyBwYXJzZWQuIEl0IHNob3VsZCBiZQotICAgdXNlZCBmaXJzdCBpbiB0aGUgZXhwcmVzc2lvbiBzdHJpbmcsIG9yIGFmdGVyIG9uZSBvciBtb3JlIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KLSAgIElmIHRoZXJlIGFyZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgZmxhZywgdGhlIHJlc3VsdHMgYXJlCi0gICB1bmRlZmluZWQuCisgICA6ZnVuYzpgcmUuY29tcGlsZWAgZnVuY3Rpb24uICBGbGFncyBzaG91bGQgYmUgdXNlZCBmaXJzdCBpbiB0aGUKKyAgIGV4cHJlc3Npb24gc3RyaW5nLgogCiBgYCg/Oi4uLilgYAogICAgQSBub24tY2FwdHVyaW5nIHZlcnNpb24gb2YgcmVndWxhciBwYXJlbnRoZXNlcy4gIE1hdGNoZXMgd2hhdGV2ZXIgcmVndWxhcgpAQCAtMjM3LDYgKzIzMywxNiBAQAogICAgKmNhbm5vdCogYmUgcmV0cmlldmVkIGFmdGVyIHBlcmZvcm1pbmcgYSBtYXRjaCBvciByZWZlcmVuY2VkIGxhdGVyIGluIHRoZQogICAgcGF0dGVybi4KIAorYGAoP2ltc3gtaW1zeDouLi4pYGAKKyAgIChaZXJvIG9yIG1vcmUgbGV0dGVycyBmcm9tIHRoZSBzZXQgYGAnaSdgYCwgYGAnbSdgYCwgYGAncydgYCwgYGAneCdgYCwKKyAgIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYGAnLSdgYCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBsZXR0ZXJzIGZyb20gdGhlCisgICBzYW1lIHNldC4pICBUaGUgbGV0dGVycyBzZXQgb3IgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBmbGFnczoKKyAgIDpjb25zdDpgcmUuSWAgKGlnbm9yZSBjYXNlKSwgOmNvbnN0OmByZS5NYCAobXVsdGktbGluZSksIDpjb25zdDpgcmUuU2AKKyAgIChkb3QgbWF0Y2hlcyBhbGwpLCBhbmQgOmNvbnN0OmByZS5YYCAodmVyYm9zZSksIGZvciB0aGUgcGFydCBvZiB0aGUKKyAgIGV4cHJlc3Npb24uICAoVGhlIGZsYWdzIGFyZSBkZXNjcmliZWQgaW4gOnJlZjpgY29udGVudHMtb2YtbW9kdWxlLXJlYC4pCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiBgYCg/UDxuYW1lPi4uLilgYAogICAgU2ltaWxhciB0byByZWd1bGFyIHBhcmVudGhlc2VzLCBidXQgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IHRoZSBncm91cCBpcwogICAgYWNjZXNzaWJsZSB2aWEgdGhlIHN5bWJvbGljIGdyb3VwIG5hbWUgKm5hbWUqLiAgR3JvdXAgbmFtZXMgbXVzdCBiZSB2YWxpZApAQCAtMzIxLDggKzMyNyw5IEBACiAKIAogVGhlIHNwZWNpYWwgc2VxdWVuY2VzIGNvbnNpc3Qgb2YgYGAnXCdgYCBhbmQgYSBjaGFyYWN0ZXIgZnJvbSB0aGUgbGlzdCBiZWxvdy4KLUlmIHRoZSBvcmRpbmFyeSBjaGFyYWN0ZXIgaXMgbm90IG9uIHRoZSBsaXN0LCB0aGVuIHRoZSByZXN1bHRpbmcgUkUgd2lsbCBtYXRjaAotdGhlIHNlY29uZCBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZSwgYGBcJGBgIG1hdGNoZXMgdGhlIGNoYXJhY3RlciBgYCckJ2BgLgorSWYgdGhlIG9yZGluYXJ5IGNoYXJhY3RlciBpcyBub3QgYW4gQVNDSUkgZGlnaXQgb3IgYW4gQVNDSUkgbGV0dGVyLCB0aGVuIHRoZQorcmVzdWx0aW5nIFJFIHdpbGwgbWF0Y2ggdGhlIHNlY29uZCBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZSwgYGBcJGBgIG1hdGNoZXMgdGhlCitjaGFyYWN0ZXIgYGAnJCdgYC4KIAogYGBcbnVtYmVyYGAKICAgIE1hdGNoZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBncm91cCBvZiB0aGUgc2FtZSBudW1iZXIuICBHcm91cHMgYXJlIG51bWJlcmVkCkBAIC00NDIsOSArNDQ5LDggQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICBUaGUgYGAnXHUnYGAgYW5kIGBgJ1xVJ2BgIGVzY2FwZSBzZXF1ZW5jZXMgaGF2ZSBiZWVuIGFkZGVkLgogCi0uLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy42Ci0gICBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEKLSAgIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluIFB5dGhvbiAzLjYuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgYW4gQVNDSUkgbGV0dGVyIG5vdyBhcmUgZXJyb3JzLgogCiAKIC4uIHNlZWFsc286OgpAQCAtNTMyLDExICs1MzgsMTEgQEAKICAgIGN1cnJlbnQgbG9jYWxlLiBUaGUgdXNlIG9mIHRoaXMgZmxhZyBpcyBkaXNjb3VyYWdlZCBhcyB0aGUgbG9jYWxlIG1lY2hhbmlzbQogICAgaXMgdmVyeSB1bnJlbGlhYmxlLCBhbmQgaXQgb25seSBoYW5kbGVzIG9uZSAiY3VsdHVyZSIgYXQgYSB0aW1lIGFueXdheTsKICAgIHlvdSBzaG91bGQgdXNlIFVuaWNvZGUgbWF0Y2hpbmcgaW5zdGVhZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgaW4gUHl0aG9uIDMKLSAgIGZvciBVbmljb2RlIChzdHIpIHBhdHRlcm5zLiBUaGlzIGZsYWcgbWFrZXMgc2Vuc2Ugb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgorICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuIFRoaXMgZmxhZyBjYW4gYmUgdXNlZCBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCiAKLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgICAgIERlcHJlY2F0ZWQgdGhlIHVzZSBvZiAgOmNvbnN0OmByZS5MT0NBTEVgIHdpdGggc3RyaW5nIHBhdHRlcm5zIG9yCi0gICAgICA6Y29uc3Q6YHJlLkFTQ0lJYC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6Y29uc3Q6YHJlLkxPQ0FMRWAgY2FuIGJlIHVzZWQgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zIGFuZCBpcworICAgICAgbm90IGNvbXBhdGlibGUgd2l0aCA6Y29uc3Q6YHJlLkFTQ0lJYC4KIAogCiAuLiBkYXRhOjogTQpAQCAtNzQyLDkgKzc0OCw4IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgVW5tYXRjaGVkIGdyb3VwcyBhcmUgcmVwbGFjZWQgd2l0aCBhbiBlbXB0eSBzdHJpbmcuCiAKLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgICAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0IG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQotICAgICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IGFyZSBlcnJvcnMuCiAKIAogLi4gZnVuY3Rpb246OiBzdWJuKHBhdHRlcm4sIHJlcGwsIHN0cmluZywgY291bnQ9MCwgZmxhZ3M9MCkKQEAgLTEwMTAsNiArMTAxNSwyMiBAQAogICAgICAgJ2MzJwogCiAKKy4uIG1ldGhvZDo6IG1hdGNoLl9fZ2V0aXRlbV9fKGcpCisKKyAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIGBgbS5ncm91cChnKWBgLiAgVGhpcyBhbGxvd3MgZWFzaWVyIGFjY2VzcyB0bworICAgYW4gaW5kaXZpZHVhbCBncm91cCBmcm9tIGEgbWF0Y2g6CisKKyAgICAgID4+PiBtID0gcmUubWF0Y2gociIoXHcrKSAoXHcrKSIsICJJc2FhYyBOZXd0b24sIHBoeXNpY2lzdCIpCisgICAgICA+Pj4gbVswXSAgICAgICAjIFRoZSBlbnRpcmUgbWF0Y2gKKyAgICAgICdJc2FhYyBOZXd0b24nCisgICAgICA+Pj4gbVsxXSAgICAgICAjIFRoZSBmaXJzdCBwYXJlbnRoZXNpemVkIHN1Ymdyb3VwLgorICAgICAgJ0lzYWFjJworICAgICAgPj4+IG1bMl0gICAgICAgIyBUaGUgc2Vjb25kIHBhcmVudGhlc2l6ZWQgc3ViZ3JvdXAuCisgICAgICAnTmV3dG9uJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBtZXRob2Q6OiBtYXRjaC5ncm91cHMoZGVmYXVsdD1Ob25lKQogCiAgICBSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwgZnJvbSAxIHVwIHRvIGhvd2V2ZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdCBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAppbmRleCA0ZDNjMDk5Li4zN2U0MDBlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CkBAIC0xNjcsNiArMTY3LDIwIEBACiAgICBUaGlzIGNhbGxzIDpjOmZ1bmM6YGFkZF9oaXN0b3J5YCBpbiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5LgogCiAKKy4uIGZ1bmN0aW9uOjogc2V0X2F1dG9faGlzdG9yeShlbmFibGVkKQorCisgICBFbmFibGUgb3IgZGlzYWJsZSBhdXRvbWF0aWMgY2FsbHMgdG8gOmM6ZnVuYzpgYWRkX2hpc3RvcnlgIHdoZW4gcmVhZGluZworICAgaW5wdXQgdmlhIHJlYWRsaW5lLiAgVGhlICplbmFibGVkKiBhcmd1bWVudCBzaG91bGQgYmUgYSBCb29sZWFuIHZhbHVlCisgICB0aGF0IHdoZW4gdHJ1ZSwgZW5hYmxlcyBhdXRvIGhpc3RvcnksIGFuZCB0aGF0IHdoZW4gRmFsc2UsIGRpc2FibGVzCisgICBhdXRvIGhpc3RvcnkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBpbXBsLWRldGFpbDo6CisgICAgICBBdXRvIGhpc3RvcnkgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgY2hhbmdlcyB0byB0aGlzIGRvIG5vdCBwZXJzaXN0CisgICAgICBhY3Jvc3MgbXVsdGlwbGUgc2Vzc2lvbnMuCisKKwogU3RhcnR1cCBob29rcwogLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdCBiL0RvYy9saWJyYXJ5L3NlY3JldHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZjg0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdApAQCAtMCwwICsxLDE5OCBAQAorOm1vZDpgc2VjcmV0c2AgLS0tIEdlbmVyYXRlIHNlY3VyZSByYW5kb20gbnVtYmVycyBmb3IgbWFuYWdpbmcgc2VjcmV0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiBzZWNyZXRzCisgICA6c3lub3BzaXM6IEdlbmVyYXRlIHNlY3VyZSByYW5kb20gbnVtYmVycyBmb3IgbWFuYWdpbmcgc2VjcmV0cy4KKworLi4gbW9kdWxlYXV0aG9yOjogU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4KKy4uIHNlY3Rpb25hdXRob3I6OiBTdGV2ZW4gRCdBcHJhbm8gPHN0ZXZlK3B5dGhvbkBwZWFyd29vZC5pbmZvPgorLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIHRlc3RzZXR1cDo6CisKKyAgIGZyb20gc2VjcmV0cyBpbXBvcnQgKgorICAgX19uYW1lX18gPSAnPGRvY3Rlc3Q+JworCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9zZWNyZXRzLnB5YAorCistLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcKK3JhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvciBtYW5hZ2luZyBkYXRhIHN1Y2ggYXMgcGFzc3dvcmRzLCBhY2NvdW50CithdXRoZW50aWNhdGlvbiwgc2VjdXJpdHkgdG9rZW5zLCBhbmQgcmVsYXRlZCBzZWNyZXRzLgorCitJbiBwYXJ0aWN1bGFybHksIDptb2Q6YHNlY3JldHNgIHNob3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlCitkZWZhdWx0IHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBpbiB0aGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUsIHdoaWNoCitpcyBkZXNpZ25lZCBmb3IgbW9kZWxsaW5nIGFuZCBzaW11bGF0aW9uLCBub3Qgc2VjdXJpdHkgb3IgY3J5cHRvZ3JhcGh5LgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTA2YAorCisKK1JhbmRvbSBudW1iZXJzCistLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbW9zdCBzZWN1cmUgc291cmNlIG9mCityYW5kb21uZXNzIHRoYXQgeW91ciBvcGVyYXRpbmcgc3lzdGVtIHByb3ZpZGVzLgorCisuLiBjbGFzczo6IFN5c3RlbVJhbmRvbQorCisgICBBIGNsYXNzIGZvciBnZW5lcmF0aW5nIHJhbmRvbSBudW1iZXJzIHVzaW5nIHRoZSBoaWdoZXN0LXF1YWxpdHkKKyAgIHNvdXJjZXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTZWUKKyAgIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworLi4gZnVuY3Rpb246OiBjaG9pY2Uoc2VxdWVuY2UpCisKKyAgIFJldHVybiBhIHJhbmRvbWx5LWNob3NlbiBlbGVtZW50IGZyb20gYSBub24tZW1wdHkgc2VxdWVuY2UuCisKKy4uIGZ1bmN0aW9uOjogcmFuZGJlbG93KG4pCisKKyAgIFJldHVybiBhIHJhbmRvbSBpbnQgaW4gdGhlIHJhbmdlIFswLCAqbiopLgorCisuLiBmdW5jdGlvbjo6IHJhbmRiaXRzKGspCisKKyAgIFJldHVybiBhbiBpbnQgd2l0aCAqayogcmFuZG9tIGJpdHMuCisKKworR2VuZXJhdGluZyB0b2tlbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHNlY3VyZQordG9rZW5zLCBzdWl0YWJsZSBmb3IgYXBwbGljYXRpb25zIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXRzLAoraGFyZC10by1ndWVzcyBVUkxzLCBhbmQgc2ltaWxhci4KKworLi4gZnVuY3Rpb246OiB0b2tlbl9ieXRlcyhbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gYnl0ZSBzdHJpbmcgY29udGFpbmluZyAqbmJ5dGVzKiBudW1iZXIgb2YgYnl0ZXMuCisgICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzCisgICB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX2J5dGVzKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgIGInXHhlYnJceDE3RCp0XHhhZVx4ZDRceGUzU1x4YjZceGUyXHhlYlAxXHg4YicKKworCisuLiBmdW5jdGlvbjo6IHRva2VuX2hleChbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gdGV4dCBzdHJpbmcsIGluIGhleGFkZWNpbWFsLiAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyoKKyAgIHJhbmRvbSBieXRlcywgZWFjaCBieXRlIGNvbnZlcnRlZCB0byB0d28gaGV4IGRpZ2l0cy4gIElmICpuYnl0ZXMqIGlzCisgICBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzIHVzZWQuCisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gdG9rZW5faGV4KDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgICdmOWJmNzhiOWExOGNlNmQ0NmEwY2QyYjBiODZkZjlkYScKKworLi4gZnVuY3Rpb246OiB0b2tlbl91cmxzYWZlKFtuYnl0ZXM9Tm9uZV0pCisKKyAgIFJldHVybiBhIHJhbmRvbSBVUkwtc2FmZSB0ZXh0IHN0cmluZywgY29udGFpbmluZyAqbmJ5dGVzKiByYW5kb20KKyAgIGJ5dGVzLiAgVGhlIHRleHQgaXMgQmFzZTY0IGVuY29kZWQsIHNvIG9uIGF2ZXJhZ2UgZWFjaCBieXRlIHJlc3VsdHMKKyAgIGluIGFwcHJveGltYXRlbHkgMS4zIGNoYXJhY3RlcnMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3QKKyAgIHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcyB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX3VybHNhZmUoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICAgJ0RybWh6ZTZFUGN2MGZOXzgxQmotbkEnCisKKworSG93IG1hbnkgYnl0ZXMgc2hvdWxkIHRva2VucyB1c2U/CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVG8gYmUgc2VjdXJlIGFnYWluc3QKK2BicnV0ZS1mb3JjZSBhdHRhY2tzIDxodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CcnV0ZS1mb3JjZV9hdHRhY2s+YF8sCit0b2tlbnMgbmVlZCB0byBoYXZlIHN1ZmZpY2llbnQgcmFuZG9tbmVzcy4gIFVuZm9ydHVuYXRlbHksIHdoYXQgaXMKK2NvbnNpZGVyZWQgc3VmZmljaWVudCB3aWxsIG5lY2Vzc2FyaWx5IGluY3JlYXNlIGFzIGNvbXB1dGVycyBnZXQgbW9yZQorcG93ZXJmdWwgYW5kIGFibGUgdG8gbWFrZSBtb3JlIGd1ZXNzZXMgaW4gYSBzaG9ydGVyIHBlcmlvZC4gIEFzIG9mIDIwMTUsCitpdCBpcyBiZWxpZXZlZCB0aGF0IDMyIGJ5dGVzICgyNTYgYml0cykgb2YgcmFuZG9tbmVzcyBpcyBzdWZmaWNpZW50IGZvcgordGhlIHR5cGljYWwgdXNlLWNhc2UgZXhwZWN0ZWQgZm9yIHRoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUuCisKK0ZvciB0aG9zZSB3aG8gd2FudCB0byBtYW5hZ2UgdGhlaXIgb3duIHRva2VuIGxlbmd0aCwgeW91IGNhbiBleHBsaWNpdGx5CitzcGVjaWZ5IGhvdyBtdWNoIHJhbmRvbW5lc3MgaXMgdXNlZCBmb3IgdG9rZW5zIGJ5IGdpdmluZyBhbiA6Y2xhc3M6YGludGAKK2FyZ3VtZW50IHRvIHRoZSB2YXJpb3VzIGBgdG9rZW5fKmBgIGZ1bmN0aW9ucy4gIFRoYXQgYXJndW1lbnQgaXMgdGFrZW4KK2FzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgcmFuZG9tbmVzcyB0byB1c2UuCisKK090aGVyd2lzZSwgaWYgbm8gYXJndW1lbnQgaXMgcHJvdmlkZWQsIG9yIGlmIHRoZSBhcmd1bWVudCBpcyBgYE5vbmVgYCwKK3RoZSBgYHRva2VuXypgYCBmdW5jdGlvbnMgd2lsbCB1c2UgYSByZWFzb25hYmxlIGRlZmF1bHQgaW5zdGVhZC4KKworLi4gbm90ZTo6CisKKyAgIFRoYXQgZGVmYXVsdCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhdCBhbnkgdGltZSwgaW5jbHVkaW5nIGR1cmluZworICAgbWFpbnRlbmFuY2UgcmVsZWFzZXMuCisKKworT3RoZXIgZnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBjb21wYXJlX2RpZ2VzdChhLCBiKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5ncyAqYSogYW5kICpiKiBhcmUgZXF1YWwsIG90aGVyd2lzZSBgYEZhbHNlYGAsCisgICBpbiBzdWNoIGEgd2F5IGFzIHRvIHJlZHVjZSB0aGUgcmlzayBvZgorICAgYHRpbWluZyBhdHRhY2tzIDxodHRwOi8vY29kYWhhbGUuY29tL2EtbGVzc29uLWluLXRpbWluZy1hdHRhY2tzLz5gXy4KKyAgIFNlZSA6ZnVuYzpgaG1hYy5jb21wYXJlX2RpZ2VzdGAgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworCitSZWNpcGVzIGFuZCBiZXN0IHByYWN0aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBzZWN0aW9uIHNob3dzIHJlY2lwZXMgYW5kIGJlc3QgcHJhY3RpY2VzIGZvciB1c2luZyA6bW9kOmBzZWNyZXRzYAordG8gbWFuYWdlIGEgYmFzaWMgbGV2ZWwgb2Ygc2VjdXJpdHkuCisKK0dlbmVyYXRlIGFuIGVpZ2h0LWNoYXJhY3RlciBhbHBoYW51bWVyaWMgcGFzc3dvcmQ6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgaW1wb3J0IHN0cmluZworICAgYWxwaGFiZXQgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgIHBhc3N3b3JkID0gJycuam9pbihjaG9pY2UoYWxwaGFiZXQpIGZvciBpIGluIHJhbmdlKDgpKQorCisKKy4uIG5vdGU6OgorCisgICBBcHBsaWNhdGlvbnMgc2hvdWxkIG5vdAorICAgYHN0b3JlIHBhc3N3b3JkcyBpbiBhIHJlY292ZXJhYmxlIGZvcm1hdCA8aHR0cDovL2N3ZS5taXRyZS5vcmcvZGF0YS9kZWZpbml0aW9ucy8yNTcuaHRtbD5gXywKKyAgIHdoZXRoZXIgcGxhaW4gdGV4dCBvciBlbmNyeXB0ZWQuICBUaGV5IHNob3VsZCBiZSBzYWx0ZWQgYW5kIGhhc2hlZAorICAgdXNpbmcgYSBjcnlwdG9ncmFwaGljYWxseS1zdHJvbmcgb25lLXdheSAoaXJyZXZlcnNpYmxlKSBoYXNoIGZ1bmN0aW9uLgorCisKK0dlbmVyYXRlIGEgdGVuLWNoYXJhY3RlciBhbHBoYW51bWVyaWMgcGFzc3dvcmQgd2l0aCBhdCBsZWFzdCBvbmUKK2xvd2VyY2FzZSBjaGFyYWN0ZXIsIGF0IGxlYXN0IG9uZSB1cHBlcmNhc2UgY2hhcmFjdGVyLCBhbmQgYXQgbGVhc3QKK3RocmVlIGRpZ2l0czoKKworLi4gdGVzdGNvZGU6OgorCisgICBpbXBvcnQgc3RyaW5nCisgICBhbHBoYWJldCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgd2hpbGUgVHJ1ZToKKyAgICAgICBwYXNzd29yZCA9ICcnLmpvaW4oY2hvaWNlKGFscGhhYmV0KSBmb3IgaSBpbiByYW5nZSgxMCkpCisgICAgICAgaWYgKGFueShjLmlzbG93ZXIoKSBmb3IgYyBpbiBwYXNzd29yZCkKKyAgICAgICAgICAgICAgIGFuZCBhbnkoYy5pc3VwcGVyKCkgZm9yIGMgaW4gcGFzc3dvcmQpCisgICAgICAgICAgICAgICBhbmQgc3VtKGMuaXNkaWdpdCgpIGZvciBjIGluIHBhc3N3b3JkKSA+PSAzKToKKyAgICAgICAgICAgYnJlYWsKKworCitHZW5lcmF0ZSBhbiBgWEtDRC1zdHlsZSBwYXNzcGhyYXNlIDxodHRwOi8veGtjZC5jb20vOTM2Lz5gXzoKKworLi4gdGVzdGNvZGU6OgorCisgICAjIE9uIHN0YW5kYXJkIExpbnV4IHN5c3RlbXMsIHVzZSBhIGNvbnZlbmllbnQgZGljdGlvbmFyeSBmaWxlLgorICAgIyBPdGhlciBwbGF0Zm9ybXMgbWF5IG5lZWQgdG8gcHJvdmlkZSB0aGVpciBvd24gd29yZC1saXN0LgorICAgd2l0aCBvcGVuKCcvdXNyL3NoYXJlL2RpY3Qvd29yZHMnKSBhcyBmOgorICAgICAgIHdvcmRzID0gW3dvcmQuc3RyaXAoKSBmb3Igd29yZCBpbiBmXQorICAgICAgIHBhc3N3b3JkID0gJyAnLmpvaW4oY2hvaWNlKHdvcmRzKSBmb3IgaSBpbiByYW5nZSg0KSkKKworCitHZW5lcmF0ZSBhIGhhcmQtdG8tZ3Vlc3MgdGVtcG9yYXJ5IFVSTCBjb250YWluaW5nIGEgc2VjdXJpdHkgdG9rZW4KK3N1aXRhYmxlIGZvciBwYXNzd29yZCByZWNvdmVyeSBhcHBsaWNhdGlvbnM6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgdXJsID0gJ2h0dHBzOi8vbXlkb21haW4uY29tL3Jlc2V0PScgKyB0b2tlbl91cmxzYWZlKCkKKworCisKKy4uCisgICAjIFRoaXMgbW9kZWxpbmUgbXVzdCBhcHBlYXIgd2l0aGluIHRoZSBsYXN0IHRlbiBsaW5lcyBvZiB0aGUgZmlsZS4KKyAgIGthdGU6IGluZGVudC13aWR0aCAzOyByZW1vdmUtdHJhaWxpbmctc3BhY2Ugb247IHJlcGxhY2UtdGFicyBvbjsgZW5jb2RpbmcgdXRmLTg7CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAppbmRleCBhNDY1ZDI1Li5jNjIxOTQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKQEAgLTI2OCwzNSArMjY4LDQzIEBACiAKICAgICpldmVudG1hc2sqCiAKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgOmNvbnN0OmBFUE9MTElOYCAgICAgIHwgQXZhaWxhYmxlIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE9VVGAgICAgIHwgQXZhaWxhYmxlIGZvciB3cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFBSSWAgICAgIHwgVXJnZW50IGRhdGEgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEVSUmAgICAgIHwgRXJyb3IgY29uZGl0aW9uIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEhVUGAgICAgIHwgSGFuZyB1cCBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEVUYCAgICAgIHwgU2V0IEVkZ2UgVHJpZ2dlciBiZWhhdmlvciwgdGhlIGRlZmF1bHQgaXMgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgTGV2ZWwgVHJpZ2dlciBiZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE9ORVNIT1RgIHwgU2V0IG9uZS1zaG90IGJlaGF2aW9yLiBBZnRlciBvbmUgZXZlbnQgaXMgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgcHVsbGVkIG91dCwgdGhlIGZkIGlzIGludGVybmFsbHkgZGlzYWJsZWQgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFJETk9STWAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMSU5gICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFJEQkFORGAgIHwgUHJpb3JpdHkgZGF0YSBiYW5kIGNhbiBiZSByZWFkLiAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFdSTk9STWAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFdSQkFORGAgIHwgUHJpb3JpdHkgZGF0YSBtYXkgYmUgd3JpdHRlbi4gICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE1TR2AgICAgIHwgSWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBDb25zdGFudCAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgOmNvbnN0OmBFUE9MTElOYCAgICAgICAgfCBBdmFpbGFibGUgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExPVVRgICAgICAgIHwgQXZhaWxhYmxlIGZvciB3cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUFJJYCAgICAgICB8IFVyZ2VudCBkYXRhIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEVSUmAgICAgICAgfCBFcnJvciBjb25kaXRpb24gaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExIVVBgICAgICAgIHwgSGFuZyB1cCBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVRgICAgICAgICB8IFNldCBFZGdlIFRyaWdnZXIgYmVoYXZpb3IsIHRoZSBkZWZhdWx0IGlzICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGV2ZWwgVHJpZ2dlciBiZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMT05FU0hPVGAgICB8IFNldCBvbmUtc2hvdCBiZWhhdmlvci4gQWZ0ZXIgb25lIGV2ZW50IGlzICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHVsbGVkIG91dCwgdGhlIGZkIGlzIGludGVybmFsbHkgZGlzYWJsZWQgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVhDTFVTSVZFYCB8IFdha2Ugb25seSBvbmUgZXBvbGwgb2JqZWN0IHdoZW4gdGhlICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXNzb2NpYXRlZCBmZCBoYXMgYW4gZXZlbnQuIFRoZSBkZWZhdWx0IChpZiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGlzIGZsYWcgaXMgbm90IHNldCkgaXMgdG8gd2FrZSBhbGwgZXBvbGwgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IG9iamVjdHMgcG9sbGluZyBvbiBvbiBhIGZkLiAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJESFVQYCAgICAgfCBTdHJlYW0gc29ja2V0IHBlZXIgY2xvc2VkIGNvbm5lY3Rpb24gb3Igc2h1dCAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGRvd24gd3JpdGluZyBoYWxmIG9mIGNvbm5lY3Rpb24uICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJETk9STWAgICAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExJTmAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExSREJBTkRgICAgIHwgUHJpb3JpdHkgZGF0YSBiYW5kIGNhbiBiZSByZWFkLiAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMV1JOT1JNYCAgICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTE9VVGAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFdSQkFORGAgICAgfCBQcmlvcml0eSBkYXRhIG1heSBiZSB3cml0dGVuLiAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExNU0dgICAgICAgIHwgSWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAKIC4uIG1ldGhvZDo6IGVwb2xsLmNsb3NlKCkKQEAgLTM4NSw2ICszOTMsOSBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFBPTExIVVBgICB8IEh1bmcgdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YFBPTExSREhVUGB8IFN0cmVhbSBzb2NrZXQgcGVlciBjbG9zZWQgY29ubmVjdGlvbiwgb3IgfAorICAgfCAgICAgICAgICAgICAgICAgICB8IHNodXQgZG93biB3cml0aW5nIGhhbGYgb2YgY29ubmVjdGlvbiAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFBPTExOVkFMYCB8IEludmFsaWQgcmVxdWVzdDogZGVzY3JpcHRvciBub3Qgb3BlbiAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaGxleC5yc3QgYi9Eb2MvbGlicmFyeS9zaGxleC5yc3QKaW5kZXggZTgxZjk4Mi4uMWE4OWJmNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2hsZXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NobGV4LnJzdApAQCAtNzMsMTEgKzczLDExIEBACiBUaGUgOm1vZDpgc2hsZXhgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3M6CiAKIAotLi4gY2xhc3M6OiBzaGxleChpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UpCisuLiBjbGFzczo6IHNobGV4KGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSwgcHVuY3R1YXRpb25fY2hhcnM9RmFsc2UpCiAKICAgIEEgOmNsYXNzOmB+c2hsZXguc2hsZXhgIGluc3RhbmNlIG9yIHN1YmNsYXNzIGluc3RhbmNlIGlzIGEgbGV4aWNhbCBhbmFseXplcgogICAgb2JqZWN0LiAgVGhlIGluaXRpYWxpemF0aW9uIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBzcGVjaWZpZXMgd2hlcmUgdG8gcmVhZAotICAgY2hhcmFjdGVycyBmcm9tLiBJdCBtdXN0IGJlIGEgZmlsZS0vc3RyZWFtLWxpa2Ugb2JqZWN0IHdpdGgKKyAgIGNoYXJhY3RlcnMgZnJvbS4gIEl0IG11c3QgYmUgYSBmaWxlLS9zdHJlYW0tbGlrZSBvYmplY3Qgd2l0aAogICAgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRgIGFuZCA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGxpbmVgIG1ldGhvZHMsIG9yCiAgICBhIHN0cmluZy4gIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCBpbnB1dCB3aWxsIGJlIHRha2VuIGZyb20gYGBzeXMuc3RkaW5gYC4KICAgIFRoZSBzZWNvbmQgb3B0aW9uYWwgYXJndW1lbnQgaXMgYSBmaWxlbmFtZSBzdHJpbmcsIHdoaWNoIHNldHMgdGhlIGluaXRpYWwKQEAgLTg3LDggKzg3LDE5IEBACiAgICB3aGVuICpwb3NpeCogaXMgbm90IHRydWUgKGRlZmF1bHQpLCB0aGUgOmNsYXNzOmB+c2hsZXguc2hsZXhgIGluc3RhbmNlIHdpbGwKICAgIG9wZXJhdGUgaW4gY29tcGF0aWJpbGl0eSBtb2RlLiAgV2hlbiBvcGVyYXRpbmcgaW4gUE9TSVggbW9kZSwKICAgIDpjbGFzczpgfnNobGV4LnNobGV4YCB3aWxsIHRyeSB0byBiZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgUE9TSVggc2hlbGwKLSAgIHBhcnNpbmcgcnVsZXMuCisgICBwYXJzaW5nIHJ1bGVzLiAgVGhlICpwdW5jdHVhdGlvbl9jaGFycyogYXJndW1lbnQgcHJvdmlkZXMgYSB3YXkgdG8gbWFrZSB0aGUKKyAgIGJlaGF2aW91ciBldmVuIGNsb3NlciB0byBob3cgcmVhbCBzaGVsbHMgcGFyc2UuICBUaGlzIGNhbiB0YWtlIGEgbnVtYmVyIG9mCisgICB2YWx1ZXM6IHRoZSBkZWZhdWx0IHZhbHVlLCBgYEZhbHNlYGAsIHByZXNlcnZlcyB0aGUgYmVoYXZpb3VyIHNlZW4gdW5kZXIKKyAgIFB5dGhvbiAzLjUgYW5kIGVhcmxpZXIuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gcGFyc2luZyBvZiB0aGUgY2hhcmFjdGVycworICAgYGAoKTs8PnwmYGAgaXMgY2hhbmdlZDogYW55IHJ1biBvZiB0aGVzZSBjaGFyYWN0ZXJzIChjb25zaWRlcmVkIHB1bmN0dWF0aW9uCisgICBjaGFyYWN0ZXJzKSBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcgb2YKKyAgIGNoYXJhY3RlcnMsIHRob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGFzIHRoZSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLiAgQW55CisgICBjaGFyYWN0ZXJzIGluIHRoZSA6YXR0cjpgd29yZGNoYXJzYCBhdHRyaWJ1dGUgdGhhdCBhcHBlYXIgaW4KKyAgICpwdW5jdHVhdGlvbl9jaGFycyogd2lsbCBiZSByZW1vdmVkIGZyb20gOmF0dHI6YHdvcmRjaGFyc2AuICBTZWUKKyAgIDpyZWY6YGltcHJvdmVkLXNoZWxsLWNvbXBhdGliaWxpdHlgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlICpwdW5jdHVhdGlvbl9jaGFycyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE5MSw3ICsyMDIsMTMgQEAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndvcmRjaGFycwogCiAgICBUaGUgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGhhdCB3aWxsIGFjY3VtdWxhdGUgaW50byBtdWx0aS1jaGFyYWN0ZXIgdG9rZW5zLiAgQnkKLSAgIGRlZmF1bHQsIGluY2x1ZGVzIGFsbCBBU0NJSSBhbHBoYW51bWVyaWNzIGFuZCB1bmRlcnNjb3JlLgorICAgZGVmYXVsdCwgaW5jbHVkZXMgYWxsIEFTQ0lJIGFscGhhbnVtZXJpY3MgYW5kIHVuZGVyc2NvcmUuICBJbiBQT1NJWCBtb2RlLCB0aGUKKyAgIGFjY2VudGVkIGNoYXJhY3RlcnMgaW4gdGhlIExhdGluLTEgc2V0IGFyZSBhbHNvIGluY2x1ZGVkLiAgSWYKKyAgIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2AgaXMgbm90IGVtcHR5LCB0aGUgY2hhcmFjdGVycyBgYH4tLi8qPz1gYCwgd2hpY2ggY2FuCisgICBhcHBlYXIgaW4gZmlsZW5hbWUgc3BlY2lmaWNhdGlvbnMgYW5kIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLCB3aWxsIGFsc28gYmUKKyAgIGluY2x1ZGVkIGluIHRoaXMgYXR0cmlidXRlLCBhbmQgYW55IGNoYXJhY3RlcnMgd2hpY2ggYXBwZWFyIGluCisgICBgYHB1bmN0dWF0aW9uX2NoYXJzYGAgd2lsbCBiZSByZW1vdmVkIGZyb20gYGB3b3JkY2hhcnNgYCBpZiB0aGV5IGFyZSBwcmVzZW50CisgICB0aGVyZS4KIAogCiAuLiBhdHRyaWJ1dGU6OiBzaGxleC53aGl0ZXNwYWNlCkBAIC0yMjIsOSArMjM5LDEzIEBACiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndoaXRlc3BhY2Vfc3BsaXQKIAotICAgSWYgYGBUcnVlYGAsIHRva2VucyB3aWxsIG9ubHkgYmUgc3BsaXQgaW4gd2hpdGVzcGFjZXMuIFRoaXMgaXMgdXNlZnVsLCBmb3IKKyAgIElmIGBgVHJ1ZWBgLCB0b2tlbnMgd2lsbCBvbmx5IGJlIHNwbGl0IGluIHdoaXRlc3BhY2VzLiAgVGhpcyBpcyB1c2VmdWwsIGZvcgogICAgZXhhbXBsZSwgZm9yIHBhcnNpbmcgY29tbWFuZCBsaW5lcyB3aXRoIDpjbGFzczpgfnNobGV4LnNobGV4YCwgZ2V0dGluZwotICAgdG9rZW5zIGluIGEgc2ltaWxhciB3YXkgdG8gc2hlbGwgYXJndW1lbnRzLgorICAgdG9rZW5zIGluIGEgc2ltaWxhciB3YXkgdG8gc2hlbGwgYXJndW1lbnRzLiAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYGBUcnVlYGAsCisgICA6YXR0cjpgcHVuY3R1YXRpb25fY2hhcnNgIHdpbGwgaGF2ZSBubyBlZmZlY3QsIGFuZCBzcGxpdHRpbmcgd2lsbCBoYXBwZW4KKyAgIG9ubHkgb24gd2hpdGVzcGFjZXMuICBXaGVuIHVzaW5nIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2AsIHdoaWNoIGlzCisgICBpbnRlbmRlZCB0byBwcm92aWRlIHBhcnNpbmcgY2xvc2VyIHRvIHRoYXQgaW1wbGVtZW50ZWQgYnkgc2hlbGxzLCBpdCBpcworICAgYWR2aXNhYmxlIHRvIGxlYXZlIGBgd2hpdGVzcGFjZV9zcGxpdGBgIGFzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgdmFsdWUpLgogCiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LmluZmlsZQpAQCAtMjQ1LDEwICsyNjYsOSBAQAogICAgVGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAgYnkgZGVmYXVsdC4gIElmIHlvdSBhc3NpZ24gYSBzdHJpbmcgdG8gaXQsIHRoYXQKICAgIHN0cmluZyB3aWxsIGJlIHJlY29nbml6ZWQgYXMgYSBsZXhpY2FsLWxldmVsIGluY2x1c2lvbiByZXF1ZXN0IHNpbWlsYXIgdG8gdGhlCiAgICBgYHNvdXJjZWBgIGtleXdvcmQgaW4gdmFyaW91cyBzaGVsbHMuICBUaGF0IGlzLCB0aGUgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRva2VuCi0gICB3aWxsIGJlIG9wZW5lZCBhcyBhIGZpbGVuYW1lIGFuZCBpbnB1dCB3aWxsCi0gICBiZSB0YWtlbiBmcm9tIHRoYXQgc3RyZWFtIHVudGlsIEVPRiwgYXQgd2hpY2gKLSAgIHBvaW50IHRoZSA6bWV0aDpgfmlvLklPQmFzZS5jbG9zZWAgbWV0aG9kIG9mIHRoYXQgc3RyZWFtIHdpbGwgYmUgY2FsbGVkIGFuZAotICAgdGhlIGlucHV0IHNvdXJjZSB3aWxsIGFnYWluIGJlY29tZSB0aGUgb3JpZ2luYWwgaW5wdXQgc3RyZWFtLiAgU291cmNlCisgICB3aWxsIGJlIG9wZW5lZCBhcyBhIGZpbGVuYW1lIGFuZCBpbnB1dCB3aWxsIGJlIHRha2VuIGZyb20gdGhhdCBzdHJlYW0gdW50aWwKKyAgIEVPRiwgYXQgd2hpY2ggcG9pbnQgdGhlIDptZXRoOmB+aW8uSU9CYXNlLmNsb3NlYCBtZXRob2Qgb2YgdGhhdCBzdHJlYW0gd2lsbCBiZQorICAgY2FsbGVkIGFuZCB0aGUgaW5wdXQgc291cmNlIHdpbGwgYWdhaW4gYmVjb21lIHRoZSBvcmlnaW5hbCBpbnB1dCBzdHJlYW0uICBTb3VyY2UKICAgIHJlcXVlc3RzIG1heSBiZSBzdGFja2VkIGFueSBudW1iZXIgb2YgbGV2ZWxzIGRlZXAuCiAKIApAQCAtMjc1LDYgKzI5NSwxNiBAQAogICAgKGBgJydgYCksIGluIG5vbi1QT1NJWCBtb2RlLCBhbmQgdG8gYGBOb25lYGAgaW4gUE9TSVggbW9kZS4KIAogCisuLiBhdHRyaWJ1dGU6OiBzaGxleC5wdW5jdHVhdGlvbl9jaGFycworCisgICBDaGFyYWN0ZXJzIHRoYXQgd2lsbCBiZSBjb25zaWRlcmVkIHB1bmN0dWF0aW9uLiBSdW5zIG9mIHB1bmN0dWF0aW9uCisgICBjaGFyYWN0ZXJzIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBzaW5nbGUgdG9rZW4uIEhvd2V2ZXIsIG5vdGUgdGhhdCBubworICAgc2VtYW50aWMgdmFsaWRpdHkgY2hlY2tpbmcgd2lsbCBiZSBwZXJmb3JtZWQ6IGZvciBleGFtcGxlLCAnPj4+JyBjb3VsZCBiZQorICAgcmV0dXJuZWQgYXMgYSB0b2tlbiwgZXZlbiB0aG91Z2ggaXQgbWF5IG5vdCBiZSByZWNvZ25pc2VkIGFzIHN1Y2ggYnkgc2hlbGxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBfc2hsZXgtcGFyc2luZy1ydWxlczoKIAogUGFyc2luZyBSdWxlcwpAQCAtMzI3LDMgKzM1Nyw2MiBAQAogKiBFT0YgaXMgc2lnbmFsZWQgd2l0aCBhIDpjb25zdDpgTm9uZWAgdmFsdWU7CiAKICogUXVvdGVkIGVtcHR5IHN0cmluZ3MgKGBgJydgYCkgYXJlIGFsbG93ZWQuCisKKy4uIF9pbXByb3ZlZC1zaGVsbC1jb21wYXRpYmlsaXR5OgorCitJbXByb3ZlZCBDb21wYXRpYmlsaXR5IHdpdGggU2hlbGxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitUaGUgOmNsYXNzOmBzaGxleGAgY2xhc3MgcHJvdmlkZXMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBwYXJzaW5nIHBlcmZvcm1lZCBieQorY29tbW9uIFVuaXggc2hlbGxzIGxpa2UgYGBiYXNoYGAsIGBgZGFzaGBgLCBhbmQgYGBzaGBgLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3RoaXMgY29tcGF0aWJpbGl0eSwgc3BlY2lmeSB0aGUgYGBwdW5jdHVhdGlvbl9jaGFyc2BgIGFyZ3VtZW50IGluIHRoZQorY29uc3RydWN0b3IuICBUaGlzIGRlZmF1bHRzIHRvIGBgRmFsc2VgYCwgd2hpY2ggcHJlc2VydmVzIHByZS0zLjYgYmVoYXZpb3VyLgorSG93ZXZlciwgaWYgaXQgaXMgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHBhcnNpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYGAoKTs8PnwmYGAKK2lzIGNoYW5nZWQ6IGFueSBydW4gb2YgdGhlc2UgY2hhcmFjdGVycyBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gIFdoaWxlCit0aGlzIGlzIHNob3J0IG9mIGEgZnVsbCBwYXJzZXIgZm9yIHNoZWxscyAod2hpY2ggd291bGQgYmUgb3V0IG9mIHNjb3BlIGZvciB0aGUKK3N0YW5kYXJkIGxpYnJhcnksIGdpdmVuIHRoZSBtdWx0aXBsaWNpdHkgb2Ygc2hlbGxzIG91dCB0aGVyZSksIGl0IGRvZXMgYWxsb3cKK3lvdSB0byBwZXJmb3JtIHByb2Nlc3Npbmcgb2YgY29tbWFuZCBsaW5lcyBtb3JlIGVhc2lseSB0aGFuIHlvdSBjb3VsZAorb3RoZXJ3aXNlLiAgVG8gaWxsdXN0cmF0ZSwgeW91IGNhbiBzZWUgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIGZvbGxvd2luZyBzbmlwcGV0OjoKKworICAgIGltcG9ydCBzaGxleAorCisgICAgZm9yIHB1bmN0IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgIGlmIHB1bmN0OgorICAgICAgICAgICAgbWVzc2FnZSA9ICdPbGQnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtZXNzYWdlID0gJ05ldycKKyAgICAgICAgdGV4dCA9ICJhICYmIGI7IGMgJiYgZCB8fCBlOyBmID4nYWJjJzsgKGRlZiBcImdoaVwiKSIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KHRleHQsIHB1bmN0dWF0aW9uX2NoYXJzPXB1bmN0KQorICAgICAgICBwcmludCgnJXM6ICVzJyAlIChtZXNzYWdlLCBsaXN0KHMpKSkKKword2hpY2ggcHJpbnRzIG91dDo6CisKKyAgICBPbGQ6IFsnYScsICcmJywgJyYnLCAnYicsICc7JywgJ2MnLCAnJicsICcmJywgJ2QnLCAnfCcsICd8JywgJ2UnLCAnOycsICdmJywgJz4nLCAiJ2FiYyciLCAnOycsICcoJywgJ2RlZicsICciZ2hpIicsICcpJ10KKyAgICBOZXc6IFsnYScsICcmJicsICdiJywgJzsnLCAnYycsICcmJicsICdkJywgJ3x8JywgJ2UnLCAnOycsICdmJywgJz4nLCAiJ2FiYyciLCAnOycsICcoJywgJ2RlZicsICciZ2hpIicsICcpJ10KKworT2YgY291cnNlLCB0b2tlbnMgd2lsbCBiZSByZXR1cm5lZCB3aGljaCBhcmUgbm90IHZhbGlkIGZvciBzaGVsbHMsIGFuZCB5b3UnbGwKK25lZWQgdG8gaW1wbGVtZW50IHlvdXIgb3duIGVycm9yIGNoZWNrcyBvbiB0aGUgcmV0dXJuZWQgdG9rZW5zLgorCitJbnN0ZWFkIG9mIHBhc3NpbmcgYGBUcnVlYGAgYXMgdGhlIHZhbHVlIGZvciB0aGUgcHVuY3R1YXRpb25fY2hhcnMgcGFyYW1ldGVyLAoreW91IGNhbiBwYXNzIGEgc3RyaW5nIHdpdGggc3BlY2lmaWMgY2hhcmFjdGVycywgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZQord2hpY2ggY2hhcmFjdGVycyBjb25zdGl0dXRlIHB1bmN0dWF0aW9uLiBGb3IgZXhhbXBsZTo6CisKKyAgICA+Pj4gaW1wb3J0IHNobGV4CisgICAgPj4+IHMgPSBzaGxleC5zaGxleCgiYSAmJiBiIHx8IGMiLCBwdW5jdHVhdGlvbl9jaGFycz0ifCIpCisgICAgPj4+IGxpc3QocykKKyAgICBbJ2EnLCAnJicsICcmJywgJ2InLCAnfHwnLCAnYyddCisKKy4uIG5vdGU6OiBXaGVuIGBgcHVuY3R1YXRpb25fY2hhcnNgYCBpcyBzcGVjaWZpZWQsIHRoZSA6YXR0cjpgfnNobGV4LndvcmRjaGFyc2AKKyAgIGF0dHJpYnV0ZSBpcyBhdWdtZW50ZWQgd2l0aCB0aGUgY2hhcmFjdGVycyBgYH4tLi8qPz1gYC4gIFRoYXQgaXMgYmVjYXVzZSB0aGVzZQorICAgY2hhcmFjdGVycyBjYW4gYXBwZWFyIGluIGZpbGUgbmFtZXMgKGluY2x1ZGluZyB3aWxkY2FyZHMpIGFuZCBjb21tYW5kLWxpbmUKKyAgIGFyZ3VtZW50cyAoZS5nLiBgYC0tY29sb3I9YXV0b2BgKS4gSGVuY2U6OgorCisgICAgICA+Pj4gaW1wb3J0IHNobGV4CisgICAgICA+Pj4gcyA9IHNobGV4LnNobGV4KCd+L2EgJiYgYi1jIC0tY29sb3I9YXV0byB8fCBkICoucHk/JywKKyAgICAgIC4uLiAgICAgICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgID4+PiBsaXN0KHMpCisgICAgICBbJ34vYScsICcmJicsICdiLWMnLCAnLS1jb2xvcj1hdXRvJywgJ3x8JywgJ2QnLCAnKi5weT8nXQorCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IGExY2YyNDEuLmZlZmQ2YWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtNDI1LDcgKzQyNSw3IEBACiAgICBpbXBvcnQgbG9nZ2luZwogCiAgICBkZWYgX2xvZ3BhdGgocGF0aCwgbmFtZXMpOgotICAgICAgIGxvZ2dpbmcuaW5mbygnV29ya2luZyBpbiAlcycgJSBwYXRoKQorICAgICAgIGxvZ2dpbmcuaW5mbygnV29ya2luZyBpbiAlcycsIHBhdGgpCiAgICAgICAgcmV0dXJuIFtdICAgIyBub3RoaW5nIHdpbGwgYmUgaWdub3JlZAogCiAgICBjb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBpZ25vcmU9X2xvZ3BhdGgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaXRlLnJzdCBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CmluZGV4IDBhNzNmNWEuLjQzZGFmNzkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NpdGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CkBAIC01Miw3ICs1Miw4IEBACiBBIHBhdGggY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgZmlsZSB3aG9zZSBuYW1lIGhhcyB0aGUgZm9ybSA6ZmlsZTpge25hbWV9LnB0aGAKIGFuZCBleGlzdHMgaW4gb25lIG9mIHRoZSBmb3VyIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBhYm92ZTsgaXRzIGNvbnRlbnRzIGFyZQogYWRkaXRpb25hbCBpdGVtcyAob25lIHBlciBsaW5lKSB0byBiZSBhZGRlZCB0byBgYHN5cy5wYXRoYGAuICBOb24tZXhpc3RpbmcgaXRlbXMKLWFyZSBuZXZlciBhZGRlZCB0byBgYHN5cy5wYXRoYGAuICBObyBpdGVtIGlzIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCBtb3JlIHRoYW4KK2FyZSBuZXZlciBhZGRlZCB0byBgYHN5cy5wYXRoYGAsIGFuZCBubyBjaGVjayBpcyBtYWRlIHRoYXQgdGhlIGl0ZW0gcmVmZXJzIHRvIGEKK2RpcmVjdG9yeSByYXRoZXIgdGhhbiBhIGZpbGUuICBObyBpdGVtIGlzIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCBtb3JlIHRoYW4KIG9uY2UuICBCbGFuayBsaW5lcyBhbmQgbGluZXMgYmVnaW5uaW5nIHdpdGggYGAjYGAgYXJlIHNraXBwZWQuICBMaW5lcyBzdGFydGluZwogd2l0aCBgYGltcG9ydGBgIChmb2xsb3dlZCBieSBzcGFjZSBvciB0YWIpIGFyZSBleGVjdXRlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGQucnN0IGIvRG9jL2xpYnJhcnkvc210cGQucnN0CmluZGV4IGEwOTZkZTAuLmUzODMyMDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKQEAgLTI5LDcgKzI5LDcgQEAKIAogCiAuLiBjbGFzczo6IFNNVFBTZXJ2ZXIobG9jYWxhZGRyLCByZW1vdGVhZGRyLCBkYXRhX3NpemVfbGltaXQ9MzM1NTQ0MzIsXAotICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNNVFBTZXJ2ZXJgIG9iamVjdCwgd2hpY2ggYmluZHMgdG8gbG9jYWwgYWRkcmVzcwogICAgKmxvY2FsYWRkciouICBJdCB3aWxsIHRyZWF0ICpyZW1vdGVhZGRyKiBhcyBhbiB1cHN0cmVhbSBTTVRQIHJlbGF5ZXIuICBCb3RoCkBAIC00NiwyMCArNDYsMTkgQEAKICAgIGdsb2JhbCBzb2NrZXQgbWFwIGlzIHVzZWQuCiAKICAgICplbmFibGVfU01UUFVURjgqIGRldGVybWluZXMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAotICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgSWYgc2V0IHRvCi0gICBgYFRydWVgYCwgKmRlY29kZV9kYXRhKiBtdXN0IGJlIGBgRmFsc2VgYCAob3RoZXJ3aXNlIGFuIGVycm9yIGlzIHJhaXNlZCkuCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAgICBXaGVuIGBgVHJ1ZWBgLCBgYFNNVFBVVEY4YGAgaXMgYWNjZXB0ZWQgYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGBgTUFJTGBgCiAgICBjb21tYW5kIGFuZCB3aGVuIHByZXNlbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIGluIHRoZQotICAgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4KKyAgIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KgorICAgY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgogCiAgICAqZGVjb2RlX2RhdGEqIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIFNNVFAgdHJhbnNhY3Rpb24KLSAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkCi0gICBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGJ1dCB3aWxsIGNoYW5nZSB0byBgYEZhbHNlYGAgaW4gUHl0aG9uIDMuNjsgc3BlY2lmeQotICAgdGhlIGtleXdvcmQgdmFsdWUgZXhwbGljaXRseSB0byBhdm9pZCB0aGUgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYC4gIFdoZW4KLSAgICpkZWNvZGVfZGF0YSogaXMgc2V0IHRvIGBgRmFsc2VgYCB0aGUgc2VydmVyIGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYAorICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBXaGVuICpkZWNvZGVfZGF0YSogaXMgYGBGYWxzZWBgICh0aGUKKyAgIGRlZmF1bHQpLCB0aGUgc2VydmVyIGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYAogICAgZXh0ZW5zaW9uICg6cmZjOmA2MTUyYCksIGFjY2VwdHMgdGhlIGBgQk9EWT04QklUTUlNRWBgIHBhcmFtZXRlciB0bwogICAgdGhlIGBgTUFJTGBgIGNvbW1hbmQsIGFuZCB3aGVuIHByZXNlbnQgcGFzc2VzIGl0IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgCi0gICBpbiB0aGUgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4KKyAgIGluIHRoZSBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LiAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KgorICAgY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgogCiAgICAuLiBtZXRob2Q6OiBwcm9jZXNzX21lc3NhZ2UocGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEsICoqa3dhcmdzKQogCkBAIC03Niw5ICs3NSw4IEBACiAgICAgICB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgogCiAgICAgICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBJdCBpcyBlbXB0eQotICAgICAgdW5sZXNzIGF0IGxlYXN0IG9uZSBvZiBgYGRlY29kZV9kYXRhPUZhbHNlYGAgb3IgYGBlbmFibGVfU01UUFVURjg9VHJ1ZWBgCi0gICAgICB3YXMgZ2l2ZW4gYXMgYW4gaW5pdCBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZwotICAgICAga2V5czoKKyAgICAgIGlmIGBgZGVjb2RlX2RhdGE9VHJ1ZWBgIHdhcyBnaXZlbiBhcyBhbiBpbml0IGFyZ3VtZW50LCBvdGhlcndpc2UKKyAgICAgIGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcga2V5czoKIAogICAgICAgICAgICptYWlsX29wdGlvbnMqOgogICAgICAgICAgICAgIGEgbGlzdCBvZiBhbGwgcmVjZWl2ZWQgcGFyYW1ldGVycyB0byB0aGUgYGBNQUlMYGAKQEAgLTEwOSw5ICsxMDcsMTIgQEAKICAgICAgICpsb2NhbGFkZHIqIGFuZCAqcmVtb3RlYWRkciogbWF5IG5vdyBjb250YWluIElQdjYgYWRkcmVzc2VzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKLSAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBhcmd1bWVudHMsIGFuZCB0aGUKLSAgICAgICprd2FyZ3MqIGFyZ3VtZW50IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gb25lIG9yIG1vcmUgb2YgdGhlc2UgaXMKLSAgICAgIHNwZWNpZmllZC4KKyAgICAgIFRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLCBhbmQgdGhlCisgICAgICAqa3dhcmdzKiBwYXJhbWV0ZXIgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgd2hlbiAqZGVjb2RlX2RhdGEqIGlzCisgICAgICBgYEZhbHNlYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqZGVjb2RlX2RhdGEqIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KIAogCiBEZWJ1Z2dpbmdTZXJ2ZXIgT2JqZWN0cwpAQCAtMTUxLDcgKzE1Miw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGNsYXNzOjogU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9MzM1NTQ0MzIsXAotICAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUENoYW5uZWxgIG9iamVjdCB3aGljaCBtYW5hZ2VzIHRoZSBjb21tdW5pY2F0aW9uCiAgICBiZXR3ZWVuIHRoZSBzZXJ2ZXIgYW5kIGEgc2luZ2xlIFNNVFAgY2xpZW50LgpAQCAtMTYzLDIyICsxNjQsMjUgQEAKICAgIGxpbWl0LgogCiAgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGBgU01UUFVURjhgYCBleHRlbnNpb24gKGFzIGRlZmluZWQKLSAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4gIEEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBib3RoICplbmFibGVfU01UUFVURjgqIGFuZCAqZGVjb2RlX2RhdGEqIGFyZQotICAgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lIHRpbWUuCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCisgICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lCisgICB0aW1lLgogCiAgICBBIGRpY3Rpb25hcnkgY2FuIGJlIHNwZWNpZmllZCBpbiAqbWFwKiB0byBhdm9pZCB1c2luZyBhIGdsb2JhbCBzb2NrZXQgbWFwLgogCiAgICAqZGVjb2RlX2RhdGEqIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIFNNVFAgdHJhbnNhY3Rpb24KLSAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkCi0gICBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGJ1dCB3aWxsIGNoYW5nZSB0byBgYEZhbHNlYGAgaW4gUHl0aG9uIDMuNi4gIFNwZWNpZnkKLSAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUKKyAgIHRpbWUuCiAKICAgIFRvIHVzZSBhIGN1c3RvbSBTTVRQQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbiB5b3UgbmVlZCB0byBvdmVycmlkZSB0aGUKICAgIDphdHRyOmBTTVRQU2VydmVyLmNoYW5uZWxfY2xhc3NgIG9mIHlvdXIgOmNsYXNzOmBTTVRQU2VydmVyYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKLSAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBhcmd1bWVudHMgd2VyZSBhZGRlZC4KKyAgICAgIFRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBwYXJhbWV0ZXJzIHdlcmUgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqZGVjb2RlX2RhdGEqIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KIAogICAgVGhlIDpjbGFzczpgU01UUENoYW5uZWxgIGhhcyB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAppbmRleCA4M2Q1YzJkLi4xY2IzYWFmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdApAQCAtOTUsNiArOTUsMTQgQEAKICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYW5kICpTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uKiAoc2VlCiAgICAgICA6ZGF0YTpgc3NsLkhBU19TTklgKS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKwogLi4gY2xhc3M6OiBMTVRQKGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBUaGUgTE1UUCBwcm90b2NvbCwgd2hpY2ggaXMgdmVyeSBzaW1pbGFyIHRvIEVTTVRQLCBpcyBoZWF2aWx5IGJhc2VkIG9uIHRoZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKaW5kZXggNzljNzYwOS4uNjkwOWE2NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CkBAIC0xMzMsNiArMTMzLDIyIEBACiAgICAgc3RyaW5nIGZvcm1hdC4gKGV4LiBgYGInMTI6MjM6MzQ6NDU6NTY6NjcnYGApIFRoaXMgcHJvdG9jb2wgaXMgbm90CiAgICAgc3VwcG9ydGVkIHVuZGVyIEZyZWVCU0QuCiAKKy0gOmNvbnN0OmBBRl9BTEdgIGlzIGEgTGludXgtb25seSBzb2NrZXQgYmFzZWQgaW50ZXJmYWNlIHRvIEtlcm5lbAorICBjcnlwdG9ncmFwaHkuIEFuIGFsZ29yaXRobSBzb2NrZXQgaXMgY29uZmlndXJlZCB3aXRoIGEgdHVwbGUgb2YgdHdvIHRvIGZvdXIKKyAgZWxlbWVudHMgYGAodHlwZSwgbmFtZSBbLCBmZWF0IFssIG1hc2tdXSlgYCwgd2hlcmU6CisKKyAgLSAqdHlwZSogaXMgdGhlIGFsZ29yaXRobSB0eXBlIGFzIHN0cmluZywgZS5nLiBgYGFlYWRgYCwgYGBoYXNoYGAsCisgICAgYGBza2NpcGhlcmBgIG9yIGBgcm5nYGAuCisKKyAgLSAqbmFtZSogaXMgdGhlIGFsZ29yaXRobSBuYW1lIGFuZCBvcGVyYXRpb24gbW9kZSBhcyBzdHJpbmcsIGUuZy4KKyAgICBgYHNoYTI1NmBgLCBgYGhtYWMoc2hhMjU2KWBgLCBgYGNiYyhhZXMpYGAgb3IgYGBkcmJnX25vcHJfY3RyX2FlczI1NmBgLgorCisgIC0gKmZlYXQqIGFuZCAqbWFzayogYXJlIHVuc2lnbmVkIDMyYml0IGludGVnZXJzLgorCisgIEF2YWlsYWJpbGl0eSBMaW51eCAyLjYuMzgsIHNvbWUgYWxnb3JpdGhtIHR5cGVzIHJlcXVpcmUgbW9yZSByZWNlbnQgS2VybmVscy4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLSBDZXJ0YWluIG90aGVyIGFkZHJlc3MgZmFtaWxpZXMgKDpjb25zdDpgQUZfUEFDS0VUYCwgOmNvbnN0OmBBRl9DQU5gKQogICBzdXBwb3J0IHNwZWNpZmljIHJlcHJlc2VudGF0aW9ucy4KIApAQCAtMjgzLDYgKzI5OSwxMCBAQAogICAgaW4gdGhlIFVuaXggaGVhZGVyIGZpbGVzIGFyZSBkZWZpbmVkOyBmb3IgYSBmZXcgc3ltYm9scywgZGVmYXVsdCB2YWx1ZXMgYXJlCiAgICBwcm92aWRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgU09fRE9NQUlOYGAsIGBgU09fUFJPVE9DT0xgYCwgYGBTT19QRUVSU0VDYGAsIGBgU09fUEFTU1NFQ2BgCisgICAgICB3ZXJlIGFkZGVkLgorCiAuLiBkYXRhOjogQUZfQ0FOCiAgICAgICAgICAgUEZfQ0FOCiAgICAgICAgICAgU09MX0NBTl8qCkBAIC0zMzEsMTggKzM1MSwzMyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gZGF0YTo6IFNJT18qCisuLiBkYXRhOjogU0lPX1JDVkFMTAorICAgICAgICAgIFNJT19LRUVQQUxJVkVfVkFMUworICAgICAgICAgIFNJT19MT09QQkFDS19GQVNUX1BBVEgKICAgICAgICAgICBSQ1ZBTExfKgogCiAgICBDb25zdGFudHMgZm9yIFdpbmRvd3MnIFdTQUlvY3RsKCkuIFRoZSBjb25zdGFudHMgYXJlIHVzZWQgYXMgYXJndW1lbnRzIHRvIHRoZQogICAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmlvY3RsYCBtZXRob2Qgb2Ygc29ja2V0IG9iamVjdHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYFNJT19MT09QQkFDS19GQVNUX1BBVEhgYCB3YXMgYWRkZWQuCisKIAogLi4gZGF0YTo6IFRJUENfKgogCiAgICBUSVBDIHJlbGF0ZWQgY29uc3RhbnRzLCBtYXRjaGluZyB0aGUgb25lcyBleHBvcnRlZCBieSB0aGUgQyBzb2NrZXQgQVBJLiBTZWUKICAgIHRoZSBUSVBDIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKy4uIGRhdGE6OiBBRl9BTEcKKyAgICAgICAgICBTT0xfQUxHCisgICAgICAgICAgQUxHXyoKKworICAgQ29uc3RhbnRzIGZvciBMaW51eCBLZXJuZWwgY3J5cHRvZ3JhcGh5LgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4zOC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBBRl9MSU5LCiAKICAgQXZhaWxhYmlsaXR5OiBCU0QsIE9TWC4KQEAgLTg3NCw2ICs5MDksMTAgQEAKICAgIGl0IGlzIHJlY29tbWVuZGVkIHRvIDptZXRoOmBjbG9zZWAgdGhlbSBleHBsaWNpdGx5LCBvciB0byB1c2UgYQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcm91bmQgdGhlbS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDpleGM6YE9TRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgYW4gZXJyb3Igb2NjdXJzIHdoZW4gdGhlIHVuZGVybHlpbmcKKyAgICAgIDpjOmZ1bmM6YGNsb3NlYCBjYWxsIGlzIG1hZGUuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICA6bWV0aDpgY2xvc2UoKWAgcmVsZWFzZXMgdGhlIHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbm5lY3Rpb24gYnV0CkBAIC05OTQsNiArMTAzMywxMiBAQAogICAgT24gb3RoZXIgcGxhdGZvcm1zLCB0aGUgZ2VuZXJpYyA6ZnVuYzpgZmNudGwuZmNudGxgIGFuZCA6ZnVuYzpgZmNudGwuaW9jdGxgCiAgICBmdW5jdGlvbnMgbWF5IGJlIHVzZWQ7IHRoZXkgYWNjZXB0IGEgc29ja2V0IG9iamVjdCBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4KIAorICAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBjb250cm9sIGNvZGVzIGFyZSBzdXBwb3J0ZWQ6CisgICBgYFNJT19SQ1ZBTExgYCwgYGBTSU9fS0VFUEFMSVZFX1ZBTFNgYCwgYW5kIGBgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSGBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYGAgd2FzIGFkZGVkLgorCiAuLiBtZXRob2Q6OiBzb2NrZXQubGlzdGVuKFtiYWNrbG9nXSkKIAogICAgRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmICpiYWNrbG9nKiBpcyBzcGVjaWZpZWQsIGl0IG11c3QKQEAgLTEyNzcsNiArMTMyMiwxNSBAQAogICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKICAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgogCisuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZG1zZ19hZmFsZyhbbXNnXSwgKiwgb3BbLCBpdlssIGFzc29jbGVuWywgZmxhZ3NdXV0pCisKKyAgIFNwZWNpYWxpemVkIHZlcnNpb24gb2YgOm1ldGg6YH5zb2NrZXQuc2VuZG1zZ2AgZm9yIDpjb25zdDpgQUZfQUxHYCBzb2NrZXQuCisgICBTZXQgbW9kZSwgSVYsIEFFQUQgYXNzb2NpYXRlZCBkYXRhIGxlbmd0aCBhbmQgZmxhZ3MgZm9yIDpjb25zdDpgQUZfQUxHYCBzb2NrZXQuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjM4CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZGZpbGUoZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpCiAKICAgIFNlbmQgYSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkIGJ5IHVzaW5nIGhpZ2gtcGVyZm9ybWFuY2UKQEAgLTEzMjUsMjEgKzEzNzksMjkgQEAKICAgIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBwbGVhc2UgY29uc3VsdCB0aGUgOnJlZjpgbm90ZXMgb24gc29ja2V0IHRpbWVvdXRzIDxzb2NrZXQtdGltZW91dHM+YC4KIAogCi0uLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpCisuLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWU6IGludCkKKy4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZTogYnVmZmVyKQorLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIE5vbmUsIG9wdGxlbjogaW50KQogCiAgICAuLiBpbmRleDo6IG1vZHVsZTogc3RydWN0CiAKICAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHNvY2tldCBvcHRpb24gKHNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQogICAgOm1hbnBhZ2U6YHNldHNvY2tvcHQoMilgKS4gIFRoZSBuZWVkZWQgc3ltYm9saWMgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZQotICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yCi0gICBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiAgSW4gdGhlIGxhdHRlciBjYXNlIGl0IGlzCi0gICB1cCB0byB0aGUgY2FsbGVyIHRvCi0gICBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUgcHJvcGVyIGJpdHMgKHNlZSB0aGUgb3B0aW9uYWwgYnVpbHQtaW4KLSAgIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0byBlbmNvZGUgQyBzdHJ1Y3R1cmVzIGFzIGJ5dGVzdHJpbmdzKS4KKyAgIDptb2Q6YHNvY2tldGAgbW9kdWxlICg6Y29uc3Q6YFNPX1wqYCBldGMuKS4gIFRoZSB2YWx1ZSBjYW4gYmUgYW4gaW50ZWdlciwKKyAgIE5vbmUgb3IgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIHJlcHJlc2VudGluZyBhIGJ1ZmZlci4gSW4gdGhlIGxhdGVyCisgICBjYXNlIGl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gZW5zdXJlIHRoYXQgdGhlIGJ5dGVzdHJpbmcgY29udGFpbnMgdGhlCisgICBwcm9wZXIgYml0cyAoc2VlIHRoZSBvcHRpb25hbCBidWlsdC1pbiBtb2R1bGUgOm1vZDpgc3RydWN0YCBmb3IgYSB3YXkgdG8KKyAgIGVuY29kZSBDIHN0cnVjdHVyZXMgYXMgYnl0ZXN0cmluZ3MpLiBXaGVuIHZhbHVlIGlzIHNldCB0byBOb25lLAorICAgb3B0bGVuIGFyZ3VtZW50IGlzIHJlcXVpcmVkLiBJdCdzIGVxdWl2YWxlbnQgdG8gY2FsbCBzZXRzb2Nrb3B0IEMKKyAgIGZ1bmN0aW9uIHdpdGggb3B0dmFsPU5VTEwgYW5kIG9wdGxlbj1vcHRsZW4uCisKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgTm9uZSwgb3B0bGVuOiBpbnQpIGZvcm0gYWRkZWQuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNodXRkb3duKGhvdykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKaW5kZXggMDg3ZjRlMC4uMjE4YTMxYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CkBAIC01MiwxMSArNTIsMTIgQEAKIG92ZXJyaWRpbmcgaXRzIDptZXRoOmB+QmFzZVJlcXVlc3RIYW5kbGVyLmhhbmRsZWAgbWV0aG9kOwogdGhpcyBtZXRob2Qgd2lsbCBwcm9jZXNzIGluY29taW5nCiByZXF1ZXN0cy4gIFNlY29uZCwgeW91IG11c3QgaW5zdGFudGlhdGUgb25lIG9mIHRoZSBzZXJ2ZXIgY2xhc3NlcywgcGFzc2luZyBpdAotdGhlIHNlcnZlcidzIGFkZHJlc3MgYW5kIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3MuICBUaGVuIGNhbGwgdGhlCit0aGUgc2VydmVyJ3MgYWRkcmVzcyBhbmQgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlCit0aGUgc2VydmVyIGluIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gVGhlbiBjYWxsIHRoZQogOm1ldGg6YH5CYXNlU2VydmVyLmhhbmRsZV9yZXF1ZXN0YCBvcgogOm1ldGg6YH5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXJgIG1ldGhvZCBvZiB0aGUgc2VydmVyIG9iamVjdCB0bwogcHJvY2VzcyBvbmUgb3IgbWFueSByZXF1ZXN0cy4gIEZpbmFsbHksIGNhbGwgOm1ldGg6YH5CYXNlU2VydmVyLnNlcnZlcl9jbG9zZWAKLXRvIGNsb3NlIHRoZSBzb2NrZXQuCit0byBjbG9zZSB0aGUgc29ja2V0ICh1bmxlc3MgeW91IHVzZWQgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4KIAogV2hlbiBpbmhlcml0aW5nIGZyb20gOmNsYXNzOmBUaHJlYWRpbmdNaXhJbmAgZm9yIHRocmVhZGVkIGNvbm5lY3Rpb24gYmVoYXZpb3IsCiB5b3Ugc2hvdWxkIGV4cGxpY2l0bHkgZGVjbGFyZSBob3cgeW91IHdhbnQgeW91ciB0aHJlYWRzIHRvIGJlaGF2ZSBvbiBhbiBhYnJ1cHQKQEAgLTExMSw2ICsxMTIsOCBAQAogICAgOmNsYXNzOmBVRFBTZXJ2ZXJgLiAgU2V0dGluZyB0aGUgdmFyaW91cyBhdHRyaWJ1dGVzIGFsc28gY2hhbmdlcyB0aGUKICAgIGJlaGF2aW9yIG9mIHRoZSB1bmRlcmx5aW5nIHNlcnZlciBtZWNoYW5pc20uCiAKKyAgIDpjbGFzczpgRm9ya2luZ01peEluYCBhbmQgdGhlIEZvcmtpbmcgY2xhc3NlcyBtZW50aW9uZWQgYmVsb3cgYXJlCisgICBvbmx5IGF2YWlsYWJsZSBvbiBQT1NJWCBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpmdW5jOmB+b3MuZm9ya2AuCiAKIC4uIGNsYXNzOjogRm9ya2luZ1RDUFNlcnZlcgogICAgICAgICAgICBGb3JraW5nVURQU2VydmVyCkBAIC0zMDQsNyArMzA3LDExIEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpZiB0aGUgOm1ldGg6YH5CYXNlUmVxdWVzdEhhbmRsZXIuaGFuZGxlYAogICAgICAgbWV0aG9kIG9mIGEgOmF0dHI6YFJlcXVlc3RIYW5kbGVyQ2xhc3NgIGluc3RhbmNlIHJhaXNlcwogICAgICAgYW4gZXhjZXB0aW9uLiAgVGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIHByaW50IHRoZSB0cmFjZWJhY2sgdG8KLSAgICAgIHN0YW5kYXJkIG91dHB1dCBhbmQgY29udGludWUgaGFuZGxpbmcgZnVydGhlciByZXF1ZXN0cy4KKyAgICAgIHN0YW5kYXJkIGVycm9yIGFuZCBjb250aW51ZSBoYW5kbGluZyBmdXJ0aGVyIHJlcXVlc3RzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgTm93IG9ubHkgY2FsbGVkIGZvciBleGNlcHRpb25zIGRlcml2ZWQgZnJvbSB0aGUgOmV4YzpgRXhjZXB0aW9uYAorICAgICAgICAgY2xhc3MuCiAKIAogICAgLi4gbWV0aG9kOjogaGFuZGxlX3RpbWVvdXQoKQpAQCAtMzQ5LDYgKzM1NiwxMSBAQAogICAgICAgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhbHdheXMgcmV0dXJucyA6Y29uc3Q6YFRydWVgLgogCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGZvciB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wgd2FzIGFkZGVkLiAgRXhpdGluZyB0aGUKKyAgICAgIGNvbnRleHQgbWFuYWdlciBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgOm1ldGg6YHNlcnZlcl9jbG9zZWAuCisKKwogUmVxdWVzdCBIYW5kbGVyIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTM5Nyw2ICs0MDksMTUgQEAKICAgIHJlYWQgb3Igd3JpdHRlbiwgcmVzcGVjdGl2ZWx5LCB0byBnZXQgdGhlIHJlcXVlc3QgZGF0YSBvciByZXR1cm4gZGF0YQogICAgdG8gdGhlIGNsaWVudC4KIAorICAgVGhlIDphdHRyOmByZmlsZWAgYXR0cmlidXRlcyBvZiBib3RoIGNsYXNzZXMgc3VwcG9ydCB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHJlYWRhYmxlIGludGVyZmFjZSwgYW5kCisgICA6YXR0cjpgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlci53ZmlsZWAgc3VwcG9ydHMgdGhlCisgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU3RyZWFtUmVxdWVzdEhhbmRsZXIud2ZpbGVgIGFsc28gc3VwcG9ydHMgdGhlCisgICAgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuCisKIAogRXhhbXBsZXMKIC0tLS0tLS0tCkBAIC00MjksMTEgKzQ1MCwxMCBAQAogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgOTk5OQogCiAgICAgICAgIyBDcmVhdGUgdGhlIHNlcnZlciwgYmluZGluZyB0byBsb2NhbGhvc3Qgb24gcG9ydCA5OTk5Ci0gICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VENQSGFuZGxlcikKLQotICAgICAgICMgQWN0aXZhdGUgdGhlIHNlcnZlcjsgdGhpcyB3aWxsIGtlZXAgcnVubmluZyB1bnRpbCB5b3UKLSAgICAgICAjIGludGVycnVwdCB0aGUgcHJvZ3JhbSB3aXRoIEN0cmwtQwotICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICB3aXRoIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVRDUEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIyBBY3RpdmF0ZSB0aGUgc2VydmVyOyB0aGlzIHdpbGwga2VlcCBydW5uaW5nIHVudGlsIHlvdQorICAgICAgICAgICAjIGludGVycnVwdCB0aGUgcHJvZ3JhbSB3aXRoIEN0cmwtQworICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIEFuIGFsdGVybmF0aXZlIHJlcXVlc3QgaGFuZGxlciBjbGFzcyB0aGF0IG1ha2VzIHVzZSBvZiBzdHJlYW1zIChmaWxlLWxpa2UKIG9iamVjdHMgdGhhdCBzaW1wbGlmeSBjb21tdW5pY2F0aW9uIGJ5IHByb3ZpZGluZyB0aGUgc3RhbmRhcmQgZmlsZSBpbnRlcmZhY2UpOjoKQEAgLTUyNSw4ICs1NDUsOCBAQAogCiAgICBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgOTk5OQotICAgICAgIHNlcnZlciA9IHNvY2tldHNlcnZlci5VRFBTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVVEUEhhbmRsZXIpCi0gICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgIHdpdGggc29ja2V0c2VydmVyLlVEUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VURQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIFRoaXMgaXMgdGhlIGNsaWVudCBzaWRlOjoKIApAQCAtNTg1LDIyICs2MDUsMjIgQEAKICAgICAgICBIT1NULCBQT1JUID0gImxvY2FsaG9zdCIsIDAKIAogICAgICAgIHNlcnZlciA9IFRocmVhZGVkVENQU2VydmVyKChIT1NULCBQT1JUKSwgVGhyZWFkZWRUQ1BSZXF1ZXN0SGFuZGxlcikKLSAgICAgICBpcCwgcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzcworICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICBpcCwgcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzcwogCi0gICAgICAgIyBTdGFydCBhIHRocmVhZCB3aXRoIHRoZSBzZXJ2ZXIgLS0gdGhhdCB0aHJlYWQgd2lsbCB0aGVuIHN0YXJ0IG9uZQotICAgICAgICMgbW9yZSB0aHJlYWQgZm9yIGVhY2ggcmVxdWVzdAotICAgICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIuc2VydmVfZm9yZXZlcikKLSAgICAgICAjIEV4aXQgdGhlIHNlcnZlciB0aHJlYWQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdGVybWluYXRlcwotICAgICAgIHNlcnZlcl90aHJlYWQuZGFlbW9uID0gVHJ1ZQotICAgICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQotICAgICAgIHByaW50KCJTZXJ2ZXIgbG9vcCBydW5uaW5nIGluIHRocmVhZDoiLCBzZXJ2ZXJfdGhyZWFkLm5hbWUpCisgICAgICAgICAgICMgU3RhcnQgYSB0aHJlYWQgd2l0aCB0aGUgc2VydmVyIC0tIHRoYXQgdGhyZWFkIHdpbGwgdGhlbiBzdGFydCBvbmUKKyAgICAgICAgICAgIyBtb3JlIHRocmVhZCBmb3IgZWFjaCByZXF1ZXN0CisgICAgICAgICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIuc2VydmVfZm9yZXZlcikKKyAgICAgICAgICAgIyBFeGl0IHRoZSBzZXJ2ZXIgdGhyZWFkIHdoZW4gdGhlIG1haW4gdGhyZWFkIHRlcm1pbmF0ZXMKKyAgICAgICAgICAgc2VydmVyX3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQorICAgICAgICAgICBwcmludCgiU2VydmVyIGxvb3AgcnVubmluZyBpbiB0aHJlYWQ6Iiwgc2VydmVyX3RocmVhZC5uYW1lKQogCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMSIpCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMiIpCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMyIpCisgICAgICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDEiKQorICAgICAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAyIikKKyAgICAgICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMyIpCiAKLSAgICAgICBzZXJ2ZXIuc2h1dGRvd24oKQotICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICAgICBzZXJ2ZXIuc2h1dGRvd24oKQogCiAKIFRoZSBvdXRwdXQgb2YgdGhlIGV4YW1wbGUgc2hvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKQEAgLTYxNiwzICs2MzYsNSBAQAogCiBUaGUgOmNsYXNzOmBGb3JraW5nTWl4SW5gIGNsYXNzIGlzIHVzZWQgaW4gdGhlIHNhbWUgd2F5LCBleGNlcHQgdGhhdCB0aGUgc2VydmVyCiB3aWxsIHNwYXduIGEgbmV3IHByb2Nlc3MgZm9yIGVhY2ggcmVxdWVzdC4KK0F2YWlsYWJsZSBvbmx5IG9uIFBPU0lYIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmZ1bmM6YH5vcy5mb3JrYC4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3B3ZC5yc3QgYi9Eb2MvbGlicmFyeS9zcHdkLnJzdAppbmRleCBmZDNjOWFkLi5jNmNhZDJhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcHdkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcHdkLnJzdApAQCAtNTUsNiArNTUsOSBAQAogCiAgICBSZXR1cm4gdGhlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJhaXNlcyBhIDpleGM6YFBlcm1pc3Npb25FcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlIHVzZXIKKyAgICAgIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgogCiAuLiBmdW5jdGlvbjo6IGdldHNwYWxsKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAppbmRleCBkMTAwNWI1Li43NjY5M2JkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdApAQCAtNjI5LDkgKzYyOSwxNiBAQAogICAgLi4gYXR0cmlidXRlOjogbGFzdHJvd2lkCiAKICAgICAgIFRoaXMgcmVhZC1vbmx5IGF0dHJpYnV0ZSBwcm92aWRlcyB0aGUgcm93aWQgb2YgdGhlIGxhc3QgbW9kaWZpZWQgcm93LiBJdCBpcwotICAgICAgb25seSBzZXQgaWYgeW91IGlzc3VlZCBhbiBgYElOU0VSVGBgIHN0YXRlbWVudCB1c2luZyB0aGUgOm1ldGg6YGV4ZWN1dGVgCi0gICAgICBtZXRob2QuIEZvciBvcGVyYXRpb25zIG90aGVyIHRoYW4gYGBJTlNFUlRgYCBvciB3aGVuIDptZXRoOmBleGVjdXRlbWFueWAgaXMKLSAgICAgIGNhbGxlZCwgOmF0dHI6YGxhc3Ryb3dpZGAgaXMgc2V0IHRvIDpjb25zdDpgTm9uZWAuCisgICAgICBvbmx5IHNldCBpZiB5b3UgaXNzdWVkIGFuIGBgSU5TRVJUYGAgb3IgYSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQgdXNpbmcgdGhlCisgICAgICA6bWV0aDpgZXhlY3V0ZWAgbWV0aG9kLiAgRm9yIG9wZXJhdGlvbnMgb3RoZXIgdGhhbiBgYElOU0VSVGBgIG9yCisgICAgICBgYFJFUExBQ0VgYCBvciB3aGVuIDptZXRoOmBleGVjdXRlbWFueWAgaXMgY2FsbGVkLCA6YXR0cjpgbGFzdHJvd2lkYCBpcworICAgICAgc2V0IHRvIDpjb25zdDpgTm9uZWAuCisKKyAgICAgIElmIHRoZSBgYElOU0VSVGBgIG9yIGBgUkVQTEFDRWBgIHN0YXRlbWVudCBmYWlsZWQgdG8gaW5zZXJ0IHRoZSBwcmV2aW91cworICAgICAgc3VjY2Vzc2Z1bCByb3dpZCBpcyByZXR1cm5lZC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGRlc2NyaXB0aW9uCiAKQEAgLTkxOCw5ICs5MjUsNyBAQAogCiBCeSBkZWZhdWx0LCB0aGUgOm1vZDpgc3FsaXRlM2AgbW9kdWxlIG9wZW5zIHRyYW5zYWN0aW9ucyBpbXBsaWNpdGx5IGJlZm9yZSBhCiBEYXRhIE1vZGlmaWNhdGlvbiBMYW5ndWFnZSAoRE1MKSAgc3RhdGVtZW50IChpLmUuCi1gYElOU0VSVGBgL2BgVVBEQVRFYGAvYGBERUxFVEVgYC9gYFJFUExBQ0VgYCksIGFuZCBjb21taXRzIHRyYW5zYWN0aW9ucwotaW1wbGljaXRseSBiZWZvcmUgYSBub24tRE1MLCBub24tcXVlcnkgc3RhdGVtZW50IChpLiBlLgotYW55dGhpbmcgb3RoZXIgdGhhbiBgYFNFTEVDVGBgIG9yIHRoZSBhZm9yZW1lbnRpb25lZCkuCitgYElOU0VSVGBgL2BgVVBEQVRFYGAvYGBERUxFVEVgYC9gYFJFUExBQ0VgYCkuCiAKIFNvIGlmIHlvdSBhcmUgd2l0aGluIGEgdHJhbnNhY3Rpb24gYW5kIGlzc3VlIGEgY29tbWFuZCBsaWtlIGBgQ1JFQVRFIFRBQkxFCiAuLi5gYCwgYGBWQUNVVU1gYCwgYGBQUkFHTUFgYCwgdGhlIDptb2Q6YHNxbGl0ZTNgIG1vZHVsZSB3aWxsIGNvbW1pdCBpbXBsaWNpdGx5CkBAIC05NDAsNiArOTQ1LDkgQEAKIHN0YXRlbWVudCwgb3Igc2V0IGl0IHRvIG9uZSBvZiBTUUxpdGUncyBzdXBwb3J0ZWQgaXNvbGF0aW9uIGxldmVsczogIkRFRkVSUkVEIiwKICJJTU1FRElBVEUiIG9yICJFWENMVVNJVkUiLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgOm1vZDpgc3FsaXRlM2AgdXNlZCB0byBpbXBsaWNpdGx5IGNvbW1pdCBhbiBvcGVuIHRyYW5zYWN0aW9uIGJlZm9yZSBEREwKKyAgIHN0YXRlbWVudHMuICBUaGlzIGlzIG5vIGxvbmdlciB0aGUgY2FzZS4KIAogCiBVc2luZyA6bW9kOmBzcWxpdGUzYCBlZmZpY2llbnRseQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKaW5kZXggMDFkODZjOC4uNzYwMDNlYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CkBAIC00OSw2ICs0OSwxMiBAQAogaGVscHMgbWFuYWdlIHNldHRpbmdzIGFuZCBjZXJ0aWZpY2F0ZXMsIHdoaWNoIGNhbiB0aGVuIGJlIGluaGVyaXRlZAogYnkgU1NMIHNvY2tldHMgY3JlYXRlZCB0aHJvdWdoIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBPcGVuU1NMIDAuOS44LCAxLjAuMCBhbmQgMS4wLjEgYXJlIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICBJbiB0aGUgZnV0dXJlIHRoZSBzc2wgbW9kdWxlIHdpbGwgcmVxdWlyZSBhdCBsZWFzdCBPcGVuU1NMIDEuMC4yIG9yCisgICAxLjEuMC4KKwogCiBGdW5jdGlvbnMsIENvbnN0YW50cywgYW5kIEV4Y2VwdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTg2LDE2ICsxOTIsMjAgQEAKIAogICAgICAuLiB0YWJsZTo6CiAKLSAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQotICAgICAgICAqY2xpZW50KiAvICoqc2VydmVyKiogICAgKipTU0x2MioqICAqKlNTTHYzKiogICoqVExTKiogICAgICoqVExTdjEqKiAgKipUTFN2MS4xKiogICoqVExTdjEuMioqCi0gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0KLSAgICAgICAgKlNTTHYyKiAgICAgICAgICAgICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubwotICAgICAgICAqU1NMdjMqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCi0gICAgICAgICpUTFMqICgqU1NMdjIzKikgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgeWVzCi0gICAgICAgICpUTFN2MSogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgbm8KLSAgICAgICAgKlRMU3YxLjEqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICBubwotICAgICAgICAqVExTdjEuMiogICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcwotICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09CisgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KKyAgICAgICAgKmNsaWVudCogLyAqKnNlcnZlcioqICAgICoqU1NMdjIqKiAgICAgKipTU0x2MyoqICAgICAqKlRMUyoqICAgICAgICAqKlRMU3YxKiogICoqVExTdjEuMSoqICAqKlRMU3YxLjIqKgorICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tCisgICAgICAgICpTU0x2MiogICAgICAgICAgICAgICAgICAgIHllcyAgICAgICAgICAgbm8gICAgICAgICAgICBubyBbMV1fICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlNTTHYzKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgIG5vIFsyXV8gICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubworICAgICAgICAqVExTKiAoKlNTTHYyMyopICAgICAgICAgICBubyBbMV1fICAgICAgIG5vIFsyXV8gICAgICAgeWVzICAgICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgIHllcworICAgICAgICAqVExTdjEqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIG5vICAgICAgICAgICAgeWVzICAgICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIG5vCisgICAgICAgICpUTFN2MS4xKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgbm8KKyAgICAgICAgKlRMU3YxLjIqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMKKyAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQorCisgICAuLiBydWJyaWM6OiBGb290bm90ZXMKKyAgIC4uIFsxXSA6Y2xhc3M6YFNTTENvbnRleHRgIGRpc2FibGVzIFNTTHYyIHdpdGggOmRhdGE6YE9QX05PX1NTTHYyYCBieSBkZWZhdWx0LgorICAgLi4gWzJdIDpjbGFzczpgU1NMQ29udGV4dGAgZGlzYWJsZXMgU1NMdjMgd2l0aCA6ZGF0YTpgT1BfTk9fU1NMdjNgIGJ5IGRlZmF1bHQuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0yMjQsNyArMjM0LDYgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBOZXcgb3B0aW9uYWwgYXJndW1lbnQgKmNpcGhlcnMqLgogCi0KIENvbnRleHQgY3JlYXRpb24KIF5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMjc5LDcgKzI4OCw3IEBACiAKICAgICAgUkM0IHdhcyBkcm9wcGVkIGZyb20gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKIAogICAgICBDaGFDaGEyMC9Qb2x5MTMwNSB3YXMgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KIApAQCAtMzIyLDcgKzMzMSw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCA6ZnVuYzpgc3NsLlJBTkRfcHNldWRvX2J5dGVzYCwgdXNlCiAgICAgICA6ZnVuYzpgc3NsLlJBTkRfYnl0ZXNgIGluc3RlYWQuCkBAIC01MDksNiArNTE4LDEwIEBACiBDb25zdGFudHMKIF5eXl5eXl5eXgogCisgICBBbGwgY29uc3RhbnRzIGFyZSBub3cgOmNsYXNzOmBlbnVtLkludEVudW1gIG9yIDpjbGFzczpgZW51bS5JbnRGbGFnYCBjb2xsZWN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBDRVJUX05PTkUKIAogICAgUG9zc2libGUgdmFsdWUgZm9yIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9tb2RlYCwgb3IgdGhlIGBgY2VydF9yZXFzYGAKQEAgLTU0Miw2ICs1NTUsMTIgQEAKICAgIGJlIHBhc3NlZCwgZWl0aGVyIHRvIDptZXRoOmBTU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9uc2Agb3IgYXMgYQogICAgdmFsdWUgb2YgdGhlIGBgY2FfY2VydHNgYCBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHdyYXBfc29ja2V0YC4KIAorLi4gY2xhc3M6OiBWZXJpZnlNb2RlCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIENFUlRfKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogVkVSSUZZX0RFRkFVTFQKIAogICAgUG9zc2libGUgdmFsdWUgZm9yIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9mbGFnc2AuIEluIHRoaXMgbW9kZSwgY2VydGlmaWNhdGUKQEAgLTU4MiwxOCArNjAxLDQwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNC40CiAKKy4uIGNsYXNzOjogVmVyaWZ5RmxhZ3MKKworICAgOmNsYXNzOmBlbnVtLkludEZsYWdgIGNvbGxlY3Rpb24gb2YgVkVSSUZZXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFBST1RPQ09MX1RMUwogCiAgICBTZWxlY3RzIHRoZSBoaWdoZXN0IHByb3RvY29sIHZlcnNpb24gdGhhdCBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzdXBwb3J0LgogICAgRGVzcGl0ZSB0aGUgbmFtZSwgdGhpcyBvcHRpb24gY2FuIHNlbGVjdCAiVExTIiBwcm90b2NvbHMgYXMgd2VsbCBhcyAiU1NMIi4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy41LjMKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUFJPVE9DT0xfVExTX0NMSUVOVAorCisgICBBdXRvLW5lZ290aWF0ZSB0aGUgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiBsaWtlIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgLAorICAgYnV0IG9ubHkgc3VwcG9ydCBjbGllbnQtc2lkZSA6Y2xhc3M6YFNTTFNvY2tldGAgY29ubmVjdGlvbnMuIFRoZSBwcm90b2NvbAorICAgZW5hYmxlcyA6ZGF0YTpgQ0VSVF9SRVFVSVJFRGAgYW5kIDphdHRyOmB+U1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYnkKKyAgIGRlZmF1bHQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUFJPVE9DT0xfVExTX1NFUlZFUgorCisgICBBdXRvLW5lZ290aWF0ZSB0aGUgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiBsaWtlIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgLAorICAgYnV0IG9ubHkgc3VwcG9ydCBzZXJ2ZXItc2lkZSA6Y2xhc3M6YFNTTFNvY2tldGAgY29ubmVjdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBkYXRhOjogUFJPVE9DT0xfU1NMdjIzCiAKICAgIEFsaWFzIGZvciBkYXRhOmBQUk9UT0NPTF9UTFNgLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgVXNlIGRhdGE6YFBST1RPQ09MX1RMU2AgaW5zdGVhZC4KIApAQCAtNjA4LDcgKzY0OSw3IEBACiAKICAgICAgIFNTTCB2ZXJzaW9uIDIgaXMgaW5zZWN1cmUuICBJdHMgdXNlIGlzIGhpZ2hseSBkaXNjb3VyYWdlZC4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIHJlbW92ZWQgc3VwcG9ydCBmb3IgU1NMdjIuCiAKQEAgLTYyMyw3ICs2NjQsNyBAQAogCiAgICAgICBTU0wgdmVyc2lvbiAzIGlzIGluc2VjdXJlLiAgSXRzIHVzZSBpcyBoaWdobHkgZGlzY291cmFnZWQuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTYzMiw3ICs2NzMsNyBAQAogCiAgICBTZWxlY3RzIFRMUyB2ZXJzaW9uIDEuMCBhcyB0aGUgY2hhbm5lbCBlbmNyeXB0aW9uIHByb3RvY29sLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCBhbGwgdmVyc2lvbiBzcGVjaWZpYyBwcm90b2NvbHMuIFVzZSB0aGUgZGVmYXVsdAogICAgICAgcHJvdG9jb2wgZGF0YTpgUFJPVE9DT0xfVExTYCB3aXRoIGZsYWdzIGxpa2UgZGF0YTpgT1BfTk9fU1NMdjNgIGluc3RlYWQuCkBAIC02NDQsNyArNjg1LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTY1Nyw3ICs2OTgsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjc4LDcgKzcxOSw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgU1NMdjIgaXMgZGVwcmVjYXRlZAogCkBAIC02OTEsNyArNzMyLDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBTU0x2MyBpcyBkZXByZWNhdGVkCiAKQEAgLTc1MSw2ICs3OTIsMTYgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIGNsYXNzOjogT3B0aW9ucworCisgICA6Y2xhc3M6YGVudW0uSW50RmxhZ2AgY29sbGVjdGlvbiBvZiBPUF8qIGNvbnN0YW50cy4KKworLi4gZGF0YTo6IE9QX05PX1RJQ0tFVAorCisgICBQcmV2ZW50IGNsaWVudCBzaWRlIGZyb20gcmVxdWVzdGluZyBhIHNlc3Npb24gdGlja2V0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IEhBU19BTFBOCiAKICAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgdGhlICpBcHBsaWNhdGlvbi1MYXllcgpAQCAtODMzLDYgKzg4NCwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gY2xhc3M6OiBBbGVydERlc2NyaXB0aW9uCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIEFMRVJUX0RFU0NSSVBUSU9OXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFB1cnBvc2UuU0VSVkVSX0FVVEgKIAogICAgT3B0aW9uIGZvciA6ZnVuYzpgY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgYW5kCkBAIC04NTEsNiArOTA4LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBjbGFzczo6IFNTTEVycm9yTnVtYmVyCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIFNTTF9FUlJPUl8qIGNvbnN0YW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogU1NMIFNvY2tldHMKIC0tLS0tLS0tLS0tCkBAIC04ODUsNyArOTQ4LDcgQEAKICAgIDpyZWY6YG5vdGVzIG9uIG5vbi1ibG9ja2luZyBzb2NrZXRzIDxzc2wtbm9uYmxvY2tpbmc+YC4KIAogICAgVXN1YWxseSwgOmNsYXNzOmBTU0xTb2NrZXRgIGFyZSBub3QgY3JlYXRlZCBkaXJlY3RseSwgYnV0IHVzaW5nIHRoZQotICAgOmZ1bmM6YHdyYXBfc29ja2V0YCBmdW5jdGlvbiBvciB0aGUgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIG1ldGhvZC4KKyAgIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgVGhlIDptZXRoOmBzZW5kZmlsZWAgbWV0aG9kIHdhcyBhZGRlZC4KQEAgLTg5NSw2ICs5NTgsMTAgQEAKICAgICAgIGFyZSByZWNlaXZlZCBvciBzZW50LiBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRvIG1heGltdW0gdG90YWwgZHVyYXRpb24KICAgICAgIG9mIHRoZSBzaHV0ZG93bi4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgSXQgaXMgZGVwcmVjYXRlZCB0byBjcmVhdGUgYSA6Y2xhc3M6YFNTTFNvY2tldGAgaW5zdGFuY2UgZGlyZWN0bHksIHVzZQorICAgICAgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIHRvIHdyYXAgYSBzb2NrZXQuCisKIAogU1NMIHNvY2tldHMgYWxzbyBoYXZlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCkBAIC05MTUsNiArOTgyLDkgQEAKICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byByZWFkIHVwIHRvICpsZW4qCiAgICAgICBieXRlcy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgVXNlIDptZXRoOmB+U1NMU29ja2V0LnJlY3ZgIGluc3RlYWQgb2YgOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAuCisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC53cml0ZShidWYpCiAKICAgIFdyaXRlICpidWYqIHRvIHRoZSBTU0wgc29ja2V0IGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiBUaGUKQEAgLTkzMCw2ICsxMDAwLDkgQEAKICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBubyBtb3JlIHJlc2V0IGVhY2ggdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byB3cml0ZSAqYnVmKi4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgVXNlIDptZXRoOmB+U1NMU29ja2V0LnNlbmRgIGluc3RlYWQgb2YgOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgLgorCiAuLiBub3RlOjoKIAogICAgVGhlIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgIGFuZCA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAgbWV0aG9kcyBhcmUgdGhlCkBAIC0xMTI3LDYgKzEyMDAsMTkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKy4uIGF0dHJpYnV0ZTo6IFNTTFNvY2tldC5zZXNzaW9uCisKKyAgIFRoZSA6Y2xhc3M6YFNTTFNlc3Npb25gIGZvciB0aGlzIFNTTCBjb25uZWN0aW9uLiBUaGUgc2Vzc2lvbiBpcyBhdmFpbGFibGUKKyAgIGZvciBjbGllbnQgYW5kIHNlcnZlciBzaWRlIHNvY2tldHMgYWZ0ZXIgdGhlIFRMUyBoYW5kc2hha2UgaGFzIGJlZW4KKyAgIHBlcmZvcm1lZC4gRm9yIGNsaWVudCBzb2NrZXRzIHRoZSBzZXNzaW9uIGNhbiBiZSBzZXQgYmVmb3JlCisgICA6bWV0aDpgflNTTFNvY2tldC5kb19oYW5kc2hha2VgIGhhcyBiZWVuIGNhbGxlZCB0byByZXVzZSBhIHNlc3Npb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBhdHRyaWJ1dGU6OiBTU0xTb2NrZXQuc2Vzc2lvbl9yZXVzZWQKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogU1NMIENvbnRleHRzCiAtLS0tLS0tLS0tLS0KQEAgLTExNDksOSArMTIzNSwxNiBAQAogICAgICAgOmZ1bmM6YGNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIGxldHMgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGNob29zZQogICAgICAgc2VjdXJpdHkgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4gcHVycG9zZS4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKIAotICAgICAgOmRhdGE6YFBST1RPQ09MX1RMU2AgaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisgICAgICBUaGUgY29udGV4dCBpcyBjcmVhdGVkIHdpdGggc2VjdXJlIGRlZmF1bHQgdmFsdWVzLiBUaGUgb3B0aW9ucworICAgICAgOmRhdGE6YE9QX05PX0NPTVBSRVNTSU9OYCwgOmRhdGE6YE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRWAsCisgICAgICA6ZGF0YTpgT1BfU0lOR0xFX0RIX1VTRWAsIDpkYXRhOmBPUF9TSU5HTEVfRUNESF9VU0VgLAorICAgICAgOmRhdGE6YE9QX05PX1NTTHYyYCAoZXhjZXB0IGZvciA6ZGF0YTpgUFJPVE9DT0xfU1NMdjJgKSwKKyAgICAgIGFuZCA6ZGF0YTpgT1BfTk9fU1NMdjNgIChleGNlcHQgZm9yIDpkYXRhOmBQUk9UT0NPTF9TU0x2M2ApIGFyZQorICAgICAgc2V0IGJ5IGRlZmF1bHQuIFRoZSBpbml0aWFsIGNpcGhlciBzdWl0ZSBsaXN0IGNvbnRhaW5zIG9ubHkgYGBISUdIYGAKKyAgICAgIGNpcGhlcnMsIG5vIGBgTlVMTGBgIGNpcGhlcnMgYW5kIG5vIGBgTUQ1YGAgY2lwaGVycyAoZXhjZXB0IGZvcgorICAgICAgOmRhdGE6YFBST1RPQ09MX1NTTHYyYCkuCiAKIAogOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgpAQCAtMTI1OSw2ICsxMzUyLDYyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmdldF9jaXBoZXJzKCkKKworICAgR2V0IGEgbGlzdCBvZiBlbmFibGVkIGNpcGhlcnMuIFRoZSBsaXN0IGlzIGluIG9yZGVyIG9mIGNpcGhlciBwcmlvcml0eS4KKyAgIFNlZSA6bWV0aDpgU1NMQ29udGV4dC5zZXRfY2lwaGVyc2AuCisKKyAgIEV4YW1wbGU6OgorCisgICAgICAgPj4+IGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgPj4+IGN0eC5zZXRfY2lwaGVycygnRUNESEUrQUVTR0NNOiFFQ0RTQScpCisgICAgICAgPj4+IGN0eC5nZXRfY2lwaGVycygpICAjIE9wZW5TU0wgMS4wLngKKyAgICAgICBbeydhbGdfYml0cyc6IDI1NiwKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDI1NikgTWFjPUFFQUQnLAorICAgICAgICAgJ2lkJzogNTAzODA4NDgsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxL1NTTHYzJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMjU2fSwKKyAgICAgICAgeydhbGdfYml0cyc6IDEyOCwKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDEyOCkgTWFjPUFFQUQnLAorICAgICAgICAgJ2lkJzogNTAzODA4NDcsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxL1NTTHYzJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMTI4fV0KKworICAgT24gT3BlblNTTCAxLjEgYW5kIG5ld2VyIHRoZSBjaXBoZXIgZGljdCBjb250YWlucyBhZGRpdGlvbmFsIGZpZWxkczo6CisgICAgICAgPj4+IGN0eC5nZXRfY2lwaGVycygpICAjIE9wZW5TU0wgMS4xKworICAgICAgIFt7J2FlYWQnOiBUcnVlLAorICAgICAgICAgJ2FsZ19iaXRzJzogMjU2LAorICAgICAgICAgJ2F1dGgnOiAnYXV0aC1yc2EnLAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMjU2KSBNYWM9QUVBRCcsCisgICAgICAgICAnZGlnZXN0JzogTm9uZSwKKyAgICAgICAgICdpZCc6IDUwMzgwODQ4LAorICAgICAgICAgJ2tlYSc6ICdreC1lY2RoZScsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxLjInLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAyNTYsCisgICAgICAgICAnc3ltbWV0cmljJzogJ2Flcy0yNTYtZ2NtJ30sCisgICAgICAgIHsnYWVhZCc6IFRydWUsCisgICAgICAgICAnYWxnX2JpdHMnOiAxMjgsCisgICAgICAgICAnYXV0aCc6ICdhdXRoLXJzYScsCisgICAgICAgICAnZGVzY3JpcHRpb24nOiAnRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2IFRMU3YxLjIgS3g9RUNESCAgICAgQXU9UlNBICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnRW5jPUFFU0dDTSgxMjgpIE1hYz1BRUFEJywKKyAgICAgICAgICdkaWdlc3QnOiBOb25lLAorICAgICAgICAgJ2lkJzogNTAzODA4NDcsCisgICAgICAgICAna2VhJzogJ2t4LWVjZGhlJywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NicsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEuMicsCisgICAgICAgICAnc3RyZW5ndGhfYml0cyc6IDEyOCwKKyAgICAgICAgICdzeW1tZXRyaWMnOiAnYWVzLTEyOC1nY20nfV0KKworICAgQXZhaWxhYmlsaXR5OiBPcGVuU1NMIDEuMC4yKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCiAgICBMb2FkIGEgc2V0IG9mIGRlZmF1bHQgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyBmcm9tCkBAIC0xMzk3LDcgKzE1NDYsNyBAQAogCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLCBcCiAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBcCi0gICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKKyAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpCiAKICAgIFdyYXAgYW4gZXhpc3RpbmcgUHl0aG9uIHNvY2tldCAqc29jayogYW5kIHJldHVybiBhbiA6Y2xhc3M6YFNTTFNvY2tldGAKICAgIG9iamVjdC4gICpzb2NrKiBtdXN0IGJlIGEgOmRhdGE6YH5zb2NrZXQuU09DS19TVFJFQU1gIHNvY2tldDsgb3RoZXIgc29ja2V0CkBAIC0xNDE0LDE5ICsxNTYzLDI3IEBACiAgICBxdWl0ZSBzaW1pbGFybHkgdG8gSFRUUCB2aXJ0dWFsIGhvc3RzLiBTcGVjaWZ5aW5nICpzZXJ2ZXJfaG9zdG5hbWUqIHdpbGwKICAgIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKnNlcnZlcl9zaWRlKiBpcyB0cnVlLgogCisgICAqc2Vzc2lvbiosIHNlZSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uYC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFsd2F5cyBhbGxvdyBhIHNlcnZlcl9ob3N0bmFtZSB0byBiZSBwYXNzZWQsIGV2ZW4gaWYgT3BlblNTTCBkb2VzIG5vdAogICAgICAgaGF2ZSBTTkkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqc2Vzc2lvbiogYXJndW1lbnQgd2FzIGFkZGVkLgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgYnkgd3JhcHBpbmcgdGhlIEJJTyBvYmplY3RzCiAgICAqaW5jb21pbmcqIGFuZCAqb3V0Z29pbmcqLiBUaGUgU1NMIHJvdXRpbmVzIHdpbGwgcmVhZCBpbnB1dCBkYXRhIGZyb20gdGhlCiAgICBpbmNvbWluZyBCSU8gYW5kIHdyaXRlIGRhdGEgdG8gdGhlIG91dGdvaW5nIEJJTy4KIAotICAgVGhlICpzZXJ2ZXJfc2lkZSogYW5kICpzZXJ2ZXJfaG9zdG5hbWUqIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzCi0gICBpbiA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAuCisgICBUaGUgKnNlcnZlcl9zaWRlKiwgKnNlcnZlcl9ob3N0bmFtZSogYW5kICpzZXNzaW9uKiBwYXJhbWV0ZXJzIGhhdmUgdGhlCisgICBzYW1lIG1lYW5pbmcgYXMgaW4gOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKnNlc3Npb24qIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXNzaW9uX3N0YXRzKCkKIApAQCAtMTQ3OCw2ICsxNjM1LDEyIEBACiAgICAgICB0byBzZXQgb3B0aW9ucywgbm90IHRvIGNsZWFyIHRoZW0uICBBdHRlbXB0aW5nIHRvIGNsZWFyIGFuIG9wdGlvbgogICAgICAgKGJ5IHJlc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZyBiaXRzKSB3aWxsIHJhaXNlIGEgYGBWYWx1ZUVycm9yYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU1NMQ29udGV4dC5vcHRpb25zYCByZXR1cm5zIDpjbGFzczpgT3B0aW9uc2AgZmxhZ3M6CisKKyAgICAgICAgID4+PiBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpLm9wdGlvbnMKKyAgICAgICAgIDxPcHRpb25zLk9QX0FMTHxPUF9OT19TU0x2M3xPUF9OT19TU0x2MnxPUF9OT19DT01QUkVTU0lPTjogMjE5Nzk0NzM5MT4KKwogLi4gYXR0cmlidXRlOjogU1NMQ29udGV4dC5wcm90b2NvbAogCiAgICBUaGUgcHJvdG9jb2wgdmVyc2lvbiBjaG9zZW4gd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQuICBUaGlzIGF0dHJpYnV0ZQpAQCAtMTQ5MiwxMiArMTY1NSwyMyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9mbGFnc2AgcmV0dXJucyA6Y2xhc3M6YFZlcmlmeUZsYWdzYCBmbGFnczoKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkudmVyaWZ5X2ZsYWdzCisgICAgICAgICA8VmVyaWZ5RmxhZ3MuVkVSSUZZX1g1MDlfVFJVU1RFRF9GSVJTVDogMzI3Njg+CisKIC4uIGF0dHJpYnV0ZTo6IFNTTENvbnRleHQudmVyaWZ5X21vZGUKIAogICAgV2hldGhlciB0byB0cnkgdG8gdmVyaWZ5IG90aGVyIHBlZXJzJyBjZXJ0aWZpY2F0ZXMgYW5kIGhvdyB0byBiZWhhdmUKICAgIGlmIHZlcmlmaWNhdGlvbiBmYWlscy4gIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgb25lIG9mCiAgICA6ZGF0YTpgQ0VSVF9OT05FYCwgOmRhdGE6YENFUlRfT1BUSU9OQUxgIG9yIDpkYXRhOmBDRVJUX1JFUVVJUkVEYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9tb2RlYCByZXR1cm5zIDpjbGFzczpgVmVyaWZ5TW9kZWAgZW51bToKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkudmVyaWZ5X21vZGUKKyAgICAgICAgIDxWZXJpZnlNb2RlLkNFUlRfUkVRVUlSRUQ6IDI+CiAKIC4uIGluZGV4Ojogc2luZ2xlOiBjZXJ0aWZpY2F0ZXMKIApAQCAtMTkxNiw2ICsyMDkwLDggQEAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuY29udGV4dGAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX3NpZGVgCiAgICAtIDphdHRyOmB+U1NMU29ja2V0LnNlcnZlcl9ob3N0bmFtZWAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbmAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbl9yZXVzZWRgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LndyaXRlYAogICAgLSA6bWV0aDpgflNTTFNvY2tldC5nZXRwZWVyY2VydGAKQEAgLTE5OTcsNiArMjE3MywyMiBAQAogICAgICAgYmVjb21lIHRydWUgYWZ0ZXIgYWxsIGRhdGEgY3VycmVudGx5IGluIHRoZSBidWZmZXIgaGFzIGJlZW4gcmVhZC4KIAogCitTU0wgc2Vzc2lvbgorLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGNsYXNzOjogU1NMU2Vzc2lvbgorCisgICBTZXNzaW9uIG9iamVjdCB1c2VkIGJ5IDphdHRyOmB+U1NMU29ja2V0LnNlc3Npb25gLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpZAorICAgLi4gYXR0cmlidXRlOjogdGltZQorICAgLi4gYXR0cmlidXRlOjogdGltZW91dAorICAgLi4gYXR0cmlidXRlOjogdGlja2V0X2xpZmV0aW1lX2hpbnQKKyAgIC4uIGF0dHJpYnV0ZTo6IGhhc190aWNrZXQKKworCiAuLiBfc3NsLXNlY3VyaXR5OgogCiBTZWN1cml0eSBjb25zaWRlcmF0aW9ucwpAQCAtMjA2MywxOCArMjI1NSwyMCBAQAogCiBTU0wgdmVyc2lvbnMgMiBhbmQgMyBhcmUgY29uc2lkZXJlZCBpbnNlY3VyZSBhbmQgYXJlIHRoZXJlZm9yZSBkYW5nZXJvdXMgdG8KIHVzZS4gIElmIHlvdSB3YW50IG1heGltdW0gY29tcGF0aWJpbGl0eSBiZXR3ZWVuIGNsaWVudHMgYW5kIHNlcnZlcnMsIGl0IGlzCi1yZWNvbW1lbmRlZCB0byB1c2UgOmNvbnN0OmBQUk9UT0NPTF9UTFNgIGFzIHRoZSBwcm90b2NvbCB2ZXJzaW9uIGFuZCB0aGVuCi1kaXNhYmxlIFNTTHYyIGFuZCBTU0x2MyBleHBsaWNpdGx5IHVzaW5nIHRoZSA6ZGF0YTpgU1NMQ29udGV4dC5vcHRpb25zYAotYXR0cmlidXRlOjoKK3JlY29tbWVuZGVkIHRvIHVzZSA6Y29uc3Q6YFBST1RPQ09MX1RMU19DTElFTlRgIG9yCis6Y29uc3Q6YFBST1RPQ09MX1RMU19TRVJWRVJgIGFzIHRoZSBwcm90b2NvbCB2ZXJzaW9uLiBTU0x2MiBhbmQgU1NMdjMgYXJlCitkaXNhYmxlZCBieSBkZWZhdWx0LgogCi0gICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMUykKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fU1NMdjIKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fU1NMdjMKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjFfMQorICAgPj4+IGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICA+Pj4gY2xpZW50X2NvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKKyAgID4+PiBjbGllbnRfY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MV8xCisKIAogVGhlIFNTTCBjb250ZXh0IGNyZWF0ZWQgYWJvdmUgd2lsbCBvbmx5IGFsbG93IFRMU3YxLjIgYW5kIGxhdGVyIChpZgotc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtKSBjb25uZWN0aW9ucy4KK3N1cHBvcnRlZCBieSB5b3VyIHN5c3RlbSkgY29ubmVjdGlvbnMgdG8gYSBzZXJ2ZXIuIDpjb25zdDpgUFJPVE9DT0xfVExTX0NMSUVOVGAKK2ltcGxpZXMgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBhbmQgaG9zdG5hbWUgY2hlY2tzIGJ5IGRlZmF1bHQuIFlvdSBoYXZlIHRvCitsb2FkIGNlcnRpZmljYXRlcyBpbnRvIHRoZSBjb250ZXh0LgorCiAKIENpcGhlciBzZWxlY3Rpb24KICcnJycnJycnJycnJycnJycKQEAgLTIwODUsOCArMjI3OSw5IEBACiBzc2wgbW9kdWxlIGRpc2FibGVzIGNlcnRhaW4gd2VhayBjaXBoZXJzIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgbWF5IHdhbnQKIHRvIGZ1cnRoZXIgcmVzdHJpY3QgdGhlIGNpcGhlciBjaG9pY2UuIEJlIHN1cmUgdG8gcmVhZCBPcGVuU1NMJ3MgZG9jdW1lbnRhdGlvbgogYWJvdXQgdGhlIGBjaXBoZXIgbGlzdCBmb3JtYXQgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvYXBwcy9jaXBoZXJzLmh0bWwjQ0lQSEVSLUxJU1QtRk9STUFUPmBfLgotSWYgeW91IHdhbnQgdG8gY2hlY2sgd2hpY2ggY2lwaGVycyBhcmUgZW5hYmxlZCBieSBhIGdpdmVuIGNpcGhlciBsaXN0LCB1c2UgdGhlCi1gYG9wZW5zc2wgY2lwaGVyc2BgIGNvbW1hbmQgb24geW91ciBzeXN0ZW0uCitJZiB5b3Ugd2FudCB0byBjaGVjayB3aGljaCBjaXBoZXJzIGFyZSBlbmFibGVkIGJ5IGEgZ2l2ZW4gY2lwaGVyIGxpc3QsIHVzZQorOm1ldGg6YFNTTENvbnRleHQuZ2V0X2NpcGhlcnNgIG9yIHRoZSBgYG9wZW5zc2wgY2lwaGVyc2BgIGNvbW1hbmQgb24geW91cgorc3lzdGVtLgogCiBNdWx0aS1wcm9jZXNzaW5nCiBeXl5eXl5eXl5eXl5eXl5eCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGF0aXN0aWNzLnJzdCBiL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CmluZGV4IGVhM2Q3ZGEuLjIzMmZiNzUyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGF0aXN0aWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGF0aXN0aWNzLnJzdApAQCAtMzksNiArMzksOCBAQAogCiA9PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiA6ZnVuYzpgbWVhbmAgICAgICAgICAgICAgQXJpdGhtZXRpYyBtZWFuICgiYXZlcmFnZSIpIG9mIGRhdGEuCis6ZnVuYzpgZ2VvbWV0cmljX21lYW5gICAgR2VvbWV0cmljIG1lYW4gb2YgZGF0YS4KKzpmdW5jOmBoYXJtb25pY19tZWFuYCAgICBIYXJtb25pYyBtZWFuIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuYCAgICAgICAgICAgTWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuX2xvd2AgICAgICAgTG93IG1lZGlhbiBvZiBkYXRhLgogOmZ1bmM6YG1lZGlhbl9oaWdoYCAgICAgIEhpZ2ggbWVkaWFuIG9mIGRhdGEuCkBAIC0xMTEsNiArMTEzLDY2IEBACiAgICAgICBgYG1lYW4oZGF0YSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGN1bGF0aW5nIHRoZSB0cnVlIHBvcHVsYXRpb24gbWVhbiDOvC4KIAogCisuLiBmdW5jdGlvbjo6IGdlb21ldHJpY19tZWFuKGRhdGEpCisKKyAgIFJldHVybiB0aGUgZ2VvbWV0cmljIG1lYW4gb2YgKmRhdGEqLCBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yIG9mCisgICByZWFsLXZhbHVlZCBudW1iZXJzLgorCisgICBUaGUgZ2VvbWV0cmljIG1lYW4gaXMgdGhlICpuKi10aCByb290IG9mIHRoZSBwcm9kdWN0IG9mICpuKiBkYXRhIHBvaW50cy4KKyAgIEl0IGlzIGEgdHlwZSBvZiBhdmVyYWdlLCBhIG1lYXN1cmUgb2YgdGhlIGNlbnRyYWwgbG9jYXRpb24gb2YgdGhlIGRhdGEuCisKKyAgIFRoZSBnZW9tZXRyaWMgbWVhbiBpcyBhcHByb3ByaWF0ZSB3aGVuIGF2ZXJhZ2luZyBxdWFudGl0aWVzIHdoaWNoCisgICBhcmUgbXVsdGlwbGllZCB0b2dldGhlciByYXRoZXIgdGhhbiBhZGRlZCwgZm9yIGV4YW1wbGUgZ3Jvd3RoIHJhdGVzLgorICAgU3VwcG9zZSBhbiBpbnZlc3RtZW50IGdyb3dzIGJ5IDEwJSBpbiB0aGUgZmlyc3QgeWVhciwgZmFsbHMgYnkgNSUgaW4KKyAgIHRoZSBzZWNvbmQsIHRoZW4gZ3Jvd3MgYnkgMTIlIGluIHRoZSB0aGlyZCwgd2hhdCBpcyB0aGUgYXZlcmFnZSByYXRlCisgICBvZiBncm93dGggb3ZlciB0aGUgdGhyZWUgeWVhcnM/CisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gZ2VvbWV0cmljX21lYW4oWzEuMTAsIDAuOTUsIDEuMTJdKQorICAgICAgMS4wNTM4NDgzMTIzMzgyMTcyCisKKyAgIGdpdmluZyBhbiBhdmVyYWdlIGdyb3d0aCBvZiA1LjM4NSUuIFVzaW5nIHRoZSBhcml0aG1ldGljIG1lYW4gd2lsbAorICAgZ2l2ZSBhcHByb3hpbWF0ZWx5IDUuNjY3JSwgd2hpY2ggaXMgdG9vIGhpZ2guCisKKyAgIDpleGM6YFN0YXRpc3RpY3NFcnJvcmAgaXMgcmFpc2VkIGlmICpkYXRhKiBpcyBlbXB0eSwgb3IgYW55CisgICBlbGVtZW50IGlzIGxlc3MgdGhhbiB6ZXJvLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBmdW5jdGlvbjo6IGhhcm1vbmljX21lYW4oZGF0YSkKKworICAgUmV0dXJuIHRoZSBoYXJtb25pYyBtZWFuIG9mICpkYXRhKiwgYSBzZXF1ZW5jZSBvciBpdGVyYXRvciBvZgorICAgcmVhbC12YWx1ZWQgbnVtYmVycy4KKworICAgVGhlIGhhcm1vbmljIG1lYW4sIHNvbWV0aW1lcyBjYWxsZWQgdGhlIHN1YmNvbnRyYXJ5IG1lYW4sIGlzIHRoZQorICAgcmVjaXByb2NhbCBvZiB0aGUgYXJpdGhtZXRpYyA6ZnVuYzpgbWVhbmAgb2YgdGhlIHJlY2lwcm9jYWxzIG9mIHRoZQorICAgZGF0YS4gRm9yIGV4YW1wbGUsIHRoZSBoYXJtb25pYyBtZWFuIG9mIHRocmVlIHZhbHVlcyAqYSosICpiKiBhbmQgKmMqCisgICB3aWxsIGJlIGVxdWl2YWxlbnQgdG8gYGAzLygxL2EgKyAxL2IgKyAxL2MpYGAuCisKKyAgIFRoZSBoYXJtb25pYyBtZWFuIGlzIGEgdHlwZSBvZiBhdmVyYWdlLCBhIG1lYXN1cmUgb2YgdGhlIGNlbnRyYWwKKyAgIGxvY2F0aW9uIG9mIHRoZSBkYXRhLiAgSXQgaXMgb2Z0ZW4gYXBwcm9wcmlhdGUgd2hlbiBhdmVyYWdpbmcgcXVhbnRpdGllcworICAgd2hpY2ggYXJlIHJhdGVzIG9yIHJhdGlvcywgZm9yIGV4YW1wbGUgc3BlZWRzLiBGb3IgZXhhbXBsZToKKworICAgU3VwcG9zZSBhbiBpbnZlc3RvciBwdXJjaGFzZXMgYW4gZXF1YWwgdmFsdWUgb2Ygc2hhcmVzIGluIGVhY2ggb2YKKyAgIHRocmVlIGNvbXBhbmllcywgd2l0aCBQL0UgKHByaWNlL2Vhcm5pbmcpIHJhdGlvcyBvZiAyLjUsIDMgYW5kIDEwLgorICAgV2hhdCBpcyB0aGUgYXZlcmFnZSBQL0UgcmF0aW8gZm9yIHRoZSBpbnZlc3RvcidzIHBvcnRmb2xpbz8KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiBoYXJtb25pY19tZWFuKFsyLjUsIDMsIDEwXSkgICMgRm9yIGFuIGVxdWFsIGludmVzdG1lbnQgcG9ydGZvbGlvLgorICAgICAgMy42CisKKyAgIFVzaW5nIHRoZSBhcml0aG1ldGljIG1lYW4gd291bGQgZ2l2ZSBhbiBhdmVyYWdlIG9mIGFib3V0IDUuMTY3LCB3aGljaAorICAgaXMgdG9vIGhpZ2guCisKKyAgIDpleGM6YFN0YXRpc3RpY3NFcnJvcmAgaXMgcmFpc2VkIGlmICpkYXRhKiBpcyBlbXB0eSwgb3IgYW55IGVsZW1lbnQKKyAgIGlzIGxlc3MgdGhhbiB6ZXJvLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBmdW5jdGlvbjo6IG1lZGlhbihkYXRhKQogCiAgICBSZXR1cm4gdGhlIG1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBudW1lcmljIGRhdGEsIHVzaW5nIHRoZSBjb21tb24gIm1lYW4gb2YKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAppbmRleCBkYWM5OTJhLi5lYzBhY2U4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CkBAIC0xMzYzLDYgKzEzNjMsMTEgQEAKICAgIFRoZSA6YXR0cjpgfnJhbmdlLnN0YXJ0YCwgOmF0dHI6YH5yYW5nZS5zdG9wYCBhbmQgOmF0dHI6YH5yYW5nZS5zdGVwYAogICAgYXR0cmlidXRlcy4KIAorLi4gc2VlYWxzbzo6CisKKyAgICogVGhlIGBsaW5zcGFjZSByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3OTAwMC8+YF8KKyAgICAgc2hvd3MgaG93IHRvIGltcGxlbWVudCBhIGxhenkgdmVyc2lvbiBvZiByYW5nZSB0aGF0IHN1aXRhYmxlIGZvciBmbG9hdGluZworICAgICBwb2ludCBhcHBsaWNhdGlvbnMuCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogc3RyaW5nOyB0ZXh0IHNlcXVlbmNlIHR5cGUKQEAgLTE0NTMsOCArMTQ1OCw4IEBACiAKICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBgYHN0cmBgIGNsYXNzIGFuZCBpdHMgbWV0aG9kcywgc2VlCiAgICA6cmVmOmB0ZXh0c2VxYCBhbmQgdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uIGJlbG93LiAgVG8gb3V0cHV0Ci0gICBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLiAgSW4gYWRkaXRpb24sCi0gICBzZWUgdGhlIDpyZWY6YHN0cmluZ3NlcnZpY2VzYCBzZWN0aW9uLgorICAgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgOnJlZjpgZi1zdHJpbmdzYCBhbmQgOnJlZjpgZm9ybWF0c3RyaW5nc2AKKyAgIHNlY3Rpb25zLiAgSW4gYWRkaXRpb24sIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCiAKIAogLi4gaW5kZXg6OgpAQCAtMjA1Niw4ICsyMDYxLDggQEAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogZm9ybWF0dGluZywgc3RyaW5nICglKQogICAgc2luZ2xlOiBpbnRlcnBvbGF0aW9uLCBzdHJpbmcgKCUpCi0gICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0dGluZwotICAgc2luZ2xlOiBzdHJpbmc7IGludGVycG9sYXRpb24KKyAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXR0aW5nLCBwcmludGYKKyAgIHNpbmdsZTogc3RyaW5nOyBpbnRlcnBvbGF0aW9uLCBwcmludGYKICAgIHNpbmdsZTogcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcKICAgIHNpbmdsZTogc3ByaW50Zi1zdHlsZSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6ICUgZm9ybWF0dGluZwpAQCAtMjA2Nyw5ICsyMDcyLDEwIEBACiAKICAgIFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgZXhoaWJpdCBhIHZhcmlldHkgb2YgcXVpcmtzIHRoYXQKICAgIGxlYWQgdG8gYSBudW1iZXIgb2YgY29tbW9uIGVycm9ycyAoc3VjaCBhcyBmYWlsaW5nIHRvIGRpc3BsYXkgdHVwbGVzIGFuZAotICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBVc2luZyB0aGUgbmV3ZXIgOm1ldGg6YHN0ci5mb3JtYXRgIGludGVyZmFjZQotICAgaGVscHMgYXZvaWQgdGhlc2UgZXJyb3JzLCBhbmQgYWxzbyBwcm92aWRlcyBhIGdlbmVyYWxseSBtb3JlIHBvd2VyZnVsLAotICAgZmxleGlibGUgYW5kIGV4dGVuc2libGUgYXBwcm9hY2ggdG8gZm9ybWF0dGluZyB0ZXh0LgorICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBVc2luZyB0aGUgbmV3ZXIgOnJlZjpgZm9ybWF0dGVkCisgICBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIG9yIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgaW50ZXJmYWNlCisgICBoZWxwcyBhdm9pZCB0aGVzZSBlcnJvcnMuICBUaGVzZSBhbHRlcm5hdGl2ZXMgYWxzbyBwcm92aWRlIG1vcmUgcG93ZXJmdWwsCisgICBmbGV4aWJsZSBhbmQgZXh0ZW5zaWJsZSBhcHByb2FjaGVzIHRvIGZvcm1hdHRpbmcgdGV4dC4KIAogU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yIChtb2R1bG8pLgogVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KQEAgLTI2MzAsOCArMjYzNiw4IEBACiAgICBUaGUgcHJlZml4KGVzKSB0byBzZWFyY2ggZm9yIG1heSBiZSBhbnkgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4KIAogCi0uLiBtZXRob2Q6OiBieXRlcy50cmFuc2xhdGUodGFibGVbLCBkZWxldGVdKQotICAgICAgICAgICAgYnl0ZWFycmF5LnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pCisuLiBtZXRob2Q6OiBieXRlcy50cmFuc2xhdGUodGFibGUsIGRlbGV0ZT1iJycpCisgICAgICAgICAgICBieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlLCBkZWxldGU9YicnKQogCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0IHdoZXJlIGFsbCBieXRlcyBvY2N1cnJpbmcgaW4KICAgIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqZGVsZXRlKiBhcmUgcmVtb3ZlZCwgYW5kIHRoZSByZW1haW5pbmcgYnl0ZXMgaGF2ZQpAQCAtMjY0Nyw2ICsyNjUzLDkgQEAKICAgICAgID4+PiBiJ3JlYWQgdGhpcyBzaG9ydCB0ZXh0Jy50cmFuc2xhdGUoTm9uZSwgYidhZWlvdScpCiAgICAgICBiJ3JkIHRocyBzaHJ0IHR4dCcKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpkZWxldGUqIGlzIG5vdyBzdXBwb3J0ZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LgorCiAKIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgaGF2ZSBkZWZhdWx0IGJlaGF2aW91cnMKIHRoYXQgYXNzdW1lIHRoZSB1c2Ugb2YgQVNDSUkgY29tcGF0aWJsZSBiaW5hcnkgZm9ybWF0cywgYnV0IGNhbiBzdGlsbCBiZSB1c2VkCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0IGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAppbmRleCBkNWQyNDMwLi42ZGJkM2Y5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKQEAgLTE4OCw3ICsxODgsOSBAQAogCiBUaGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCBhbmQgdGhlIDpjbGFzczpgRm9ybWF0dGVyYCBjbGFzcyBzaGFyZSB0aGUgc2FtZQogc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgOmNsYXNzOmBGb3JtYXR0ZXJgLAotc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuCitzdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS4gIFRoZSBzeW50YXggaXMKK3JlbGF0ZWQgdG8gdGhhdCBvZiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCwgYnV0Cit0aGVyZSBhcmUgZGlmZmVyZW5jZXMuCiAKIEZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXMgYGB7fWBgLgogQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWwgdGV4dCwgd2hpY2ggaXMKQEAgLTI4Myw3ICsyODUsOCBAQAogCiAiRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gYQogZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWQgKHNlZQotOnJlZjpgZm9ybWF0c3RyaW5nc2ApLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGJ1aWx0LWluCis6cmVmOmBmb3JtYXRzdHJpbmdzYCBhbmQgOnJlZjpgZi1zdHJpbmdzYCkuCitUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4KIDpmdW5jOmBmb3JtYXRgIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93IHRoZSBmb3JtYXQKIHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuCiAKQEAgLTI5NywxOCArMzAwLDIwIEBACiBUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6IHNmCi0gICBmb3JtYXRfc3BlYzogW1tgZmlsbGBdYGFsaWduYF1bYHNpZ25gXVsjXVswXVtgd2lkdGhgXVssXVsuYHByZWNpc2lvbmBdW2B0eXBlYF0KKyAgIGZvcm1hdF9zcGVjOiBbW2BmaWxsYF1gYWxpZ25gXVtgc2lnbmBdWyNdWzBdW2B3aWR0aGBdW2Bncm91cGluZ19vcHRpb25gXVsuYHByZWNpc2lvbmBdW2B0eXBlYF0KICAgIGZpbGw6IDxhbnkgY2hhcmFjdGVyPgogICAgYWxpZ246ICI8IiB8ICI+IiB8ICI9IiB8ICJeIgogICAgc2lnbjogIisiIHwgIi0iIHwgIiAiCiAgICB3aWR0aDogYGludGVnZXJgCisgICBncm91cGluZ19vcHRpb246ICJfIiB8ICIsIgogICAgcHJlY2lzaW9uOiBgaW50ZWdlcmAKICAgIHR5cGU6ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIgogCiBJZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgYnkgYSAqZmlsbCoKIGNoYXJhY3RlciB0aGF0IGNhbiBiZSBhbnkgY2hhcmFjdGVyIGFuZCBkZWZhdWx0cyB0byBhIHNwYWNlIGlmIG9taXR0ZWQuCiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGEgbGl0ZXJhbCBjdXJseSBicmFjZSAoImBge2BgIiBvciAiYGB9YGAiKSBhcwotdGhlICpmaWxsKiBjaGFyYWN0ZXIgd2hlbiB1c2luZyB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgCit0aGUgKmZpbGwqIGNoYXJhY3RlciBpbiBhIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbAorPGYtc3RyaW5ncz5gIG9yIHdoZW4gdXNpbmcgdGhlIDptZXRoOmBzdHIuZm9ybWF0YAogbWV0aG9kLiAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gaW5zZXJ0IGEgY3VybHkgYnJhY2UKIHdpdGggYSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGQuICBUaGlzIGxpbWl0YXRpb24gZG9lc24ndAogYWZmZWN0IHRoZSA6ZnVuYzpgZm9ybWF0YCBmdW5jdGlvbi4KQEAgLTM3NCw2ICszNzksMTYgQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICBBZGRlZCB0aGUgYGAnLCdgYCBvcHRpb24gKHNlZSBhbHNvIDpwZXA6YDM3OGApLgogCitUaGUgYGAnXydgYCBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGFuIHVuZGVyc2NvcmUgZm9yIGEgdGhvdXNhbmRzCitzZXBhcmF0b3IgZm9yIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBhbmQgZm9yIGludGVnZXIKK3ByZXNlbnRhdGlvbiB0eXBlIGBgJ2QnYGAuICBGb3IgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYGAnYidgYCwKK2BgJ28nYGAsIGBgJ3gnYGAsIGFuZCBgYCdYJ2BgLCB1bmRlcnNjb3JlcyB3aWxsIGJlIGluc2VydGVkIGV2ZXJ5IDQKK2RpZ2l0cy4gIEZvciBvdGhlciBwcmVzZW50YXRpb24gdHlwZXMsIHNwZWNpZnlpbmcgdGhpcyBvcHRpb24gaXMgYW4KK2Vycm9yLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgQWRkZWQgdGhlIGBgJ18nYGAgb3B0aW9uIChzZWUgYWxzbyA6cGVwOmA1MTVgKS4KKwogKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdAogc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CmluZGV4IGFlMmUzOGYuLjdlODYxZmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RydWN0LnJzdApAQCAtMjE2LDYgKzIxNiw4IEBACiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgTmBgICB8IDpjOnR5cGU6YHNpemVfdGAgICAgICAgICB8IGludGVnZXIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgXCg0KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IGBgZWBgICB8IFwoNykgICAgICAgICAgICAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CisrLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgZmBgICB8IDpjOnR5cGU6YGZsb2F0YCAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgZGBgICB8IDpjOnR5cGU6YGRvdWJsZWAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDggICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CkBAIC0yNTcsOSArMjU5LDEwIEBACiAgICBmaXRzIHlvdXIgYXBwbGljYXRpb24uCiAKICg1KQotICAgRm9yIHRoZSBgYCdmJ2BgIGFuZCBgYCdkJ2BgIGNvbnZlcnNpb24gY29kZXMsIHRoZSBwYWNrZWQgcmVwcmVzZW50YXRpb24gdXNlcwotICAgdGhlIElFRUUgNzU0IGJpbmFyeTMyIChmb3IgYGAnZidgYCkgb3IgYmluYXJ5NjQgKGZvciBgYCdkJ2BgKSBmb3JtYXQsCi0gICByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgdXNlZCBieSB0aGUgcGxhdGZvcm0uCisgICBGb3IgdGhlIGBgJ2YnYGAsIGBgJ2QnYGAgYW5kIGBgJ2UnYGAgY29udmVyc2lvbiBjb2RlcywgdGhlIHBhY2tlZAorICAgcmVwcmVzZW50YXRpb24gdXNlcyB0aGUgSUVFRSA3NTQgYmluYXJ5MzIsIGJpbmFyeTY0IG9yIGJpbmFyeTE2IGZvcm1hdCAoZm9yCisgICBgYCdmJ2BgLCBgYCdkJ2BgIG9yIGBgJ2UnYGAgcmVzcGVjdGl2ZWx5KSwgcmVnYXJkbGVzcyBvZiB0aGUgZmxvYXRpbmctcG9pbnQKKyAgIGZvcm1hdCB1c2VkIGJ5IHRoZSBwbGF0Zm9ybS4KIAogKDYpCiAgICBUaGUgYGAnUCdgYCBmb3JtYXQgY2hhcmFjdGVyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbmF0aXZlIGJ5dGUgb3JkZXJpbmcKQEAgLTI2OCw2ICsyNzEsMTYgQEAKICAgIG9uIHRoZSBob3N0IHN5c3RlbS4gVGhlIHN0cnVjdCBtb2R1bGUgZG9lcyBub3QgaW50ZXJwcmV0IHRoaXMgYXMgbmF0aXZlCiAgICBvcmRlcmluZywgc28gdGhlIGBgJ1AnYGAgZm9ybWF0IGlzIG5vdCBhdmFpbGFibGUuCiAKKyg3KQorICAgVGhlIElFRUUgNzU0IGJpbmFyeTE2ICJoYWxmIHByZWNpc2lvbiIgdHlwZSB3YXMgaW50cm9kdWNlZCBpbiB0aGUgMjAwOAorICAgcmV2aXNpb24gb2YgdGhlIGBJRUVFIDc1NCBzdGFuZGFyZCA8aWVlZSA3NTQgc3RhbmRhcmRfPmBfLiBJdCBoYXMgYSBzaWduCisgICBiaXQsIGEgNS1iaXQgZXhwb25lbnQgYW5kIDExLWJpdCBwcmVjaXNpb24gKHdpdGggMTAgYml0cyBleHBsaWNpdGx5IHN0b3JlZCksCisgICBhbmQgY2FuIHJlcHJlc2VudCBudW1iZXJzIGJldHdlZW4gYXBwcm94aW1hdGVseSBgYDYuMWUtMDVgYCBhbmQgYGA2LjVlKzA0YGAKKyAgIGF0IGZ1bGwgcHJlY2lzaW9uLiBUaGlzIHR5cGUgaXMgbm90IHdpZGVseSBzdXBwb3J0ZWQgYnkgQyBjb21waWxlcnM6IG9uIGEKKyAgIHR5cGljYWwgbWFjaGluZSwgYW4gdW5zaWduZWQgc2hvcnQgY2FuIGJlIHVzZWQgZm9yIHN0b3JhZ2UsIGJ1dCBub3QgZm9yIG1hdGgKKyAgIG9wZXJhdGlvbnMuIFNlZSB0aGUgV2lraXBlZGlhIHBhZ2Ugb24gdGhlIGBoYWxmLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludAorICAgZm9ybWF0IDxoYWxmIHByZWNpc2lvbiBmb3JtYXRfPmBfIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCiAKIEEgZm9ybWF0IGNoYXJhY3RlciBtYXkgYmUgcHJlY2VkZWQgYnkgYW4gaW50ZWdyYWwgcmVwZWF0IGNvdW50LiAgRm9yIGV4YW1wbGUsCiB0aGUgZm9ybWF0IHN0cmluZyBgYCc0aCdgYCBtZWFucyBleGFjdGx5IHRoZSBzYW1lIGFzIGBgJ2hoaGgnYGAuCkBAIC00MzAsMyArNDQzLDcgQEAKICAgICAgIFRoZSBjYWxjdWxhdGVkIHNpemUgb2YgdGhlIHN0cnVjdCAoYW5kIGhlbmNlIG9mIHRoZSBieXRlcyBvYmplY3QgcHJvZHVjZWQKICAgICAgIGJ5IHRoZSA6bWV0aDpgcGFja2AgbWV0aG9kKSBjb3JyZXNwb25kaW5nIHRvIDphdHRyOmBmb3JtYXRgLgogCisKKy4uIF9oYWxmIHByZWNpc2lvbiBmb3JtYXQ6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbGYtcHJlY2lzaW9uX2Zsb2F0aW5nLXBvaW50X2Zvcm1hdAorCisuLiBfaWVlZSA3NTQgc3RhbmRhcmQ6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lFRUVfZmxvYXRpbmdfcG9pbnQjSUVFRV83NTQtMjAwOApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCAzNTY2MDVmLi4wNjU1ZGM0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMzgsNyArMzgsOCBAQAogCiAKIC4uIGZ1bmN0aW9uOjogcnVuKGFyZ3MsICosIHN0ZGluPU5vbmUsIGlucHV0PU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSxcCi0gICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lLCBjaGVjaz1GYWxzZSkKKyAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGNoZWNrPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKIAogICAgUnVuIHRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSAqYXJncyouICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCiAgICByZXR1cm4gYSA6Y2xhc3M6YENvbXBsZXRlZFByb2Nlc3NgIGluc3RhbmNlLgpAQCAtNjAsMTUgKzYxLDIwIEBACiAKICAgIFRoZSAqaW5wdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4uY29tbXVuaWNhdGVgIGFuZCB0aHVzIHRvIHRoZQogICAgc3VicHJvY2VzcydzIHN0ZGluLiAgSWYgdXNlZCBpdCBtdXN0IGJlIGEgYnl0ZSBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gIFdoZW4gdXNlZCwgdGhlIGludGVybmFsIDpjbGFzczpgUG9wZW5gIG9iamVjdAotICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHdpdGggYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkKLSAgIG5vdCBiZSB1c2VkIGFzIHdlbGwuCisgICAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIHNwZWNpZmllZCBvciAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBUcnVlLiAgV2hlbgorICAgdXNlZCwgdGhlIGludGVybmFsIDpjbGFzczpgUG9wZW5gIG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2l0aAorICAgYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkgbm90IGJlIHVzZWQgYXMgd2VsbC4KIAogICAgSWYgKmNoZWNrKiBpcyBUcnVlLCBhbmQgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSwgYQogICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuIEF0dHJpYnV0ZXMgb2YgdGhhdAogICAgZXhjZXB0aW9uIGhvbGQgdGhlIGFyZ3VtZW50cywgdGhlIGV4aXQgY29kZSwgYW5kIHN0ZG91dCBhbmQgc3RkZXJyIGlmIHRoZXkKICAgIHdlcmUgY2FwdHVyZWQuCiAKKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgb3IgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgVHJ1ZSwKKyAgIGZpbGUgb2JqZWN0cyBmb3Igc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHVzaW5nIHRoZQorICAgc3BlY2lmaWVkICplbmNvZGluZyogYW5kICplcnJvcnMqIG9yIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGRlZmF1bHQuCisgICBPdGhlcndpc2UsIGZpbGUgb2JqZWN0cyBhcmUgb3BlbmVkIGluIGJpbmFyeSBtb2RlLgorCiAgICBFeGFtcGxlczo6CiAKICAgICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIl0pICAjIGRvZXNuJ3QgY2FwdHVyZSBvdXRwdXQKQEAgLTg1LDYgKzkxLDEwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICAgICBBZGRlZCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzCisKIC4uIGNsYXNzOjogQ29tcGxldGVkUHJvY2VzcwogCiAgICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gOmZ1bmM6YHJ1bmAsIHJlcHJlc2VudGluZyBhIHByb2Nlc3MgdGhhdCBoYXMgZmluaXNoZWQuCkBAIC0xMDQsOCArMTE0LDggQEAKICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZG91dAogCiAgICAgICBDYXB0dXJlZCBzdGRvdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIE5vbmUgaWYgc3Rkb3V0Ci0gICAgICB3YXMgbm90IGNhcHR1cmVkLgorICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGFuIGVuY29kaW5nIG9yIGVycm9ycy4gTm9uZSBpZiBzdGRvdXQgd2FzIG5vdAorICAgICAgY2FwdHVyZWQuCiAKICAgICAgIElmIHlvdSByYW4gdGhlIHByb2Nlc3Mgd2l0aCBgYHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVGBgLCBzdGRvdXQgYW5kCiAgICAgICBzdGRlcnIgd2lsbCBiZSBjb21iaW5lZCBpbiB0aGlzIGF0dHJpYnV0ZSwgYW5kIDphdHRyOmBzdGRlcnJgIHdpbGwgYmUKQEAgLTExNCw4ICsxMjQsOCBAQAogICAgLi4gYXR0cmlidXRlOjogc3RkZXJyCiAKICAgICAgIENhcHR1cmVkIHN0ZGVyciBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBBIGJ5dGVzIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgotICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gTm9uZSBpZiBzdGRlcnIKLSAgICAgIHdhcyBub3QgY2FwdHVyZWQuCisgICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYW4gZW5jb2Rpbmcgb3IgZXJyb3JzLiBOb25lIGlmIHN0ZGVyciB3YXMgbm90CisgICAgICBjYXB0dXJlZC4KIAogICAgLi4gbWV0aG9kOjogY2hlY2tfcmV0dXJuY29kZSgpCiAKQEAgLTI0OSwxOSArMjU5LDIyIEBACiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgc3VicHJvY2VzcyBtb2R1bGUKIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBGYWxzZWBgIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCogYW5kCi0gICAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcywgYW5kIG5vIGxpbmUgZW5kaW5nIGNvbnZlcnNpb24gaXMKLSAgIGRvbmUuCisgICBJZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZSBzcGVjaWZpZWQsIG9yICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIFRydWUsCisgICB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBpbiB0ZXh0CisgICBtb2RlIHVzaW5nIHRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBzcGVjaWZpZWQgaW4gdGhlIGNhbGwgb3IgdGhlCisgICBkZWZhdWx0cyBmb3IgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYC4KIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZXNlIGZpbGUgb2JqZWN0cwotICAgd2lsbCBiZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUKLSAgIHVzaW5nIHRoZSBlbmNvZGluZyByZXR1cm5lZCBieSA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQotICAgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gLiAgRm9yICpzdGRpbiosIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMKLSAgIGBgJ1xuJ2BgIGluIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZGVmYXVsdCBsaW5lIHNlcGFyYXRvcgotICAgOmRhdGE6YG9zLmxpbmVzZXBgLiAgRm9yICpzdGRvdXQqIGFuZCAqc3RkZXJyKiwgYWxsIGxpbmUgZW5kaW5ncyBpbiB0aGUKLSAgIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3Mgd2hlbiB0aGUgKm5ld2xpbmUqCi0gICBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisgICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycyBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQKKyAgIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yIDpkYXRhOmBvcy5saW5lc2VwYC4gRm9yICpzdGRvdXQqIGFuZCAqc3RkZXJyKiwKKyAgIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4gIEZvciBtb3JlCisgICBpbmZvcm1hdGlvbiBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3MKKyAgIHdoZW4gdGhlICpuZXdsaW5lKiBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisKKyAgIElmIHRleHQgbW9kZSBpcyBub3QgdXNlZCwgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzCisgICBiaW5hcnkgc3RyZWFtcy4gTm8gZW5jb2Rpbmcgb3IgbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogcGFyYW1ldGVycy4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTMwNiw3ICszMTksOCBAQAogICAgICAgICAgICAgICAgICBzdGRlcnI9Tm9uZSwgcHJlZXhlY19mbj1Ob25lLCBjbG9zZV9mZHM9VHJ1ZSwgc2hlbGw9RmFsc2UsIFwKICAgICAgICAgICAgICAgICAgY3dkPU5vbmUsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIFwKICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm89Tm9uZSwgY3JlYXRpb25mbGFncz0wLCByZXN0b3JlX3NpZ25hbHM9VHJ1ZSwgXAotICAgICAgICAgICAgICAgICBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwgcGFzc19mZHM9KCkpCisgICAgICAgICAgICAgICAgIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLCBwYXNzX2Zkcz0oKSwgKiwgXAorICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKIAogICAgRXhlY3V0ZSBhIGNoaWxkIHByb2dyYW0gaW4gYSBuZXcgcHJvY2Vzcy4gIE9uIFBPU0lYLCB0aGUgY2xhc3MgdXNlcwogICAgOm1ldGg6YG9zLmV4ZWN2cGAtbGlrZSBiZWhhdmlvciB0byBleGVjdXRlIHRoZSBjaGlsZCBwcm9ncmFtLiAgT24gV2luZG93cywKQEAgLTQ4MiwxMCArNDk2LDE0IEBACiAKICAgIC4uIF9zaWRlLWJ5LXNpZGUgYXNzZW1ibHk6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpZGUtYnktU2lkZV9Bc3NlbWJseQogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgotICAgYW5kICpzdGRlcnIqIGFyZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLCBhcwotICAgZGVzY3JpYmVkIGFib3ZlIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLCBvdGhlcndpc2UgdGhleSBhcmUKLSAgIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcy4KKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgorICAgYW5kICpzdGRlcnIqIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZyBhbmQKKyAgICplcnJvcnMqLCBhcyBkZXNjcmliZWQgYWJvdmUgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AuIElmCisgICAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhleSBhcmUgb3BlbmVkIGluIHRleHQgbW9kZSB3aXRoIGRlZmF1bHQKKyAgIGVuY29kaW5nLiBPdGhlcndpc2UsIHRoZXkgYXJlIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiB3ZXJlIGFkZGVkLgogCiAgICBJZiBnaXZlbiwgKnN0YXJ0dXBpbmZvKiB3aWxsIGJlIGEgOmNsYXNzOmBTVEFSVFVQSU5GT2Agb2JqZWN0LCB3aGljaCBpcwogICAgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIGBgQ3JlYXRlUHJvY2Vzc2BgIGZ1bmN0aW9uLgpAQCAtNTAyLDYgKzUyMCwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIGNvbnRleHQgbWFuYWdlciBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUG9wZW4gZGVzdHJ1Y3RvciBub3cgZW1pdHMgYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIHdhcm5pbmcgaWYgdGhlIGNoaWxkCisgICAgICBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCisKIAogRXhjZXB0aW9ucwogXl5eXl5eXl5eXgpAQCAtNTk3LDExICs2MTksMTIgQEAKICAgIEludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20gc3Rkb3V0IGFuZCBzdGRlcnIsCiAgICB1bnRpbCBlbmQtb2YtZmlsZSBpcyByZWFjaGVkLiAgV2FpdCBmb3IgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwKICAgICppbnB1dCogYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IKLSAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4gIFRoZSB0eXBlIG9mICppbnB1dCoKLSAgIG11c3QgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgYSBzdHJpbmcuCisgICBgYE5vbmVgYCwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuICBJZiBzdHJlYW1zIHdlcmUgb3BlbmVkIGluCisgICB0ZXh0IG1vZGUsICppbnB1dCogbXVzdCBiZSBhIHN0cmluZy4gIE90aGVyd2lzZSwgaXQgbXVzdCBiZSBieXRlcy4KIAogICAgOm1ldGg6YGNvbW11bmljYXRlYCByZXR1cm5zIGEgdHVwbGUgYGAoc3Rkb3V0X2RhdGEsIHN0ZGVycl9kYXRhKWBgLgotICAgVGhlIGRhdGEgd2lsbCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBzdHJpbmdzLgorICAgVGhlIGRhdGEgd2lsbCBiZSBzdHJpbmdzIGlmIHN0cmVhbXMgd2VyZSBvcGVuZWQgaW4gdGV4dCBtb2RlOyBvdGhlcndpc2UsCisgICBieXRlcy4KIAogICAgTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHNlbmQgZGF0YSB0byB0aGUgcHJvY2VzcydzIHN0ZGluLCB5b3UgbmVlZCB0byBjcmVhdGUKICAgIHRoZSBQb3BlbiBvYmplY3Qgd2l0aCBgYHN0ZGluPVBJUEVgYC4gIFNpbWlsYXJseSwgdG8gZ2V0IGFueXRoaW5nIG90aGVyIHRoYW4KQEAgLTY2OCwyOCArNjkxLDMwIEBACiAuLiBhdHRyaWJ1dGU6OiBQb3Blbi5zdGRpbgogCiAgICBJZiB0aGUgKnN0ZGluKiBhcmd1bWVudCB3YXMgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIHdyaXRlYWJsZQotICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIElmIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKgotICAgYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUKLSAgIHN0cmVhbS4gSWYgdGhlICpzdGRpbiogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzCi0gICBgYE5vbmVgYC4KKyAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBJZiB0aGUgKmVuY29kaW5nKiBvciAqZXJyb3JzKgorICAgYXJndW1lbnRzIHdlcmUgc3BlY2lmaWVkIG9yIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMgYGBUcnVlYGAsCisgICB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUgKnN0ZGluKgorICAgYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZG91dAogCiAgICBJZiB0aGUgKnN0ZG91dCogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSByZWFkYWJsZQogICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIFJlYWRpbmcgZnJvbSB0aGUgc3RyZWFtIHByb3ZpZGVzCi0gICBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcwotICAgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZQotICAgKnN0ZG91dCogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgorICAgb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZ3VtZW50cyB3ZXJlCisgICBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhCisgICB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3Rkb3V0KiBhcmd1bWVudCB3YXMgbm90CisgICA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZGVycgogCiAgICBJZiB0aGUgKnN0ZGVyciogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSByZWFkYWJsZQogICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIFJlYWRpbmcgZnJvbSB0aGUgc3RyZWFtIHByb3ZpZGVzCi0gICBlcnJvciBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcwotICAgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZQotICAgKnN0ZGVyciogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgorICAgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZ3VtZW50cworICAgd2VyZSBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbQorICAgaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3RkZXJyKiBhcmd1bWVudCB3YXMKKyAgIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAuLiB3YXJuaW5nOjoKIApAQCAtODgyLDcgKzkwNyw5IEBACiAgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKIAogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0LgogCkBAIC0xMTM4LDcgKzExNjUsNyBAQAogICAgUmV0dXJuIGBgKHN0YXR1cywgb3V0cHV0KWBgIG9mIGV4ZWN1dGluZyAqY21kKiBpbiBhIHNoZWxsLgogCiAgICBFeGVjdXRlIHRoZSBzdHJpbmcgKmNtZCogaW4gYSBzaGVsbCB3aXRoIDptZXRoOmBQb3Blbi5jaGVja19vdXRwdXRgIGFuZAotICAgcmV0dXJuIGEgMi10dXBsZSBgYChzdGF0dXMsIG91dHB1dClgYC4gVW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMgdXNlZDsKKyAgIHJldHVybiBhIDItdHVwbGUgYGAoc3RhdHVzLCBvdXRwdXQpYGAuIFRoZSBsb2NhbGUgZW5jb2RpbmcgaXMgdXNlZDsKICAgIHNlZSB0aGUgbm90ZXMgb24gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgQSB0cmFpbGluZyBuZXdsaW5lIGlzIHN0cmlwcGVkIGZyb20gdGhlIG91dHB1dC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5cy5yc3QgYi9Eb2MvbGlicmFyeS9zeXMucnN0CmluZGV4IGVkNWRiMDUuLjU1Yjc0NGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzLnJzdApAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAoZGVmYXVsdGluZyB0byB6ZXJvKSwgb3IgYW5vdGhlciB0eXBlIG9mIG9iamVjdC4gIElmIGl0IGlzIGFuIGludGVnZXIsIHplcm8KICAgIGlzIGNvbnNpZGVyZWQgInN1Y2Nlc3NmdWwgdGVybWluYXRpb24iIGFuZCBhbnkgbm9uemVybyB2YWx1ZSBpcyBjb25zaWRlcmVkCiAgICAiYWJub3JtYWwgdGVybWluYXRpb24iIGJ5IHNoZWxscyBhbmQgdGhlIGxpa2UuICBNb3N0IHN5c3RlbXMgcmVxdWlyZSBpdCB0byBiZQotICAgaW4gdGhlIHJhbmdlIDAtMTI3LCBhbmQgcHJvZHVjZSB1bmRlZmluZWQgcmVzdWx0cyBvdGhlcndpc2UuICBTb21lIHN5c3RlbXMKKyAgIGluIHRoZSByYW5nZSAwLS0xMjcsIGFuZCBwcm9kdWNlIHVuZGVmaW5lZCByZXN1bHRzIG90aGVyd2lzZS4gIFNvbWUgc3lzdGVtcwogICAgaGF2ZSBhIGNvbnZlbnRpb24gZm9yIGFzc2lnbmluZyBzcGVjaWZpYyBtZWFuaW5ncyB0byBzcGVjaWZpYyBleGl0IGNvZGVzLCBidXQKICAgIHRoZXNlIGFyZSBnZW5lcmFsbHkgdW5kZXJkZXZlbG9wZWQ7IFVuaXggcHJvZ3JhbXMgZ2VuZXJhbGx5IHVzZSAyIGZvciBjb21tYW5kCiAgICBsaW5lIHN5bnRheCBlcnJvcnMgYW5kIDEgZm9yIGFsbCBvdGhlciBraW5kIG9mIGVycm9ycy4gIElmIGFub3RoZXIgdHlwZSBvZgpAQCAtMjY5LDYgKzI2OSwxMSBAQAogICAgdGhlIHByb2Nlc3Mgd2hlbiBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQsIGFuZCB0aGUgZXhjZXB0aW9uIGlzIG5vdAogICAgaW50ZXJjZXB0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgaW4gdGhlIGNsZWFudXAgYWZ0ZXIgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgorICAgICAgaGFzIGNhdWdodCA6ZXhjOmBTeXN0ZW1FeGl0YCAoc3VjaCBhcyBhbiBlcnJvciBmbHVzaGluZyBidWZmZXJlZCBkYXRhCisgICAgICBpbiB0aGUgc3RhbmRhcmQgc3RyZWFtcyksIHRoZSBleGl0IHN0YXR1cyBpcyBjaGFuZ2VkIHRvIDEyMC4KKwogCiAuLiBkYXRhOjogZmxhZ3MKIApAQCAtNDIzLDI1ICs0MjgsNDIgQEAKIAogLi4gZnVuY3Rpb246OiBnZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogCi0gICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gY29udmVydCBVbmljb2RlIGZpbGVuYW1lcyBpbnRvCi0gICBzeXN0ZW0gZmlsZSBuYW1lcy4gVGhlIHJlc3VsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtOgorICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBVbmljb2RlCisgICBmaWxlbmFtZXMgYW5kIGJ5dGVzIGZpbGVuYW1lcy4gRm9yIGJlc3QgY29tcGF0aWJpbGl0eSwgc3RyIHNob3VsZCBiZQorICAgdXNlZCBmb3IgZmlsZW5hbWVzIGluIGFsbCBjYXNlcywgYWx0aG91Z2ggcmVwcmVzZW50aW5nIGZpbGVuYW1lcyBhcyBieXRlcworICAgaXMgYWxzbyBzdXBwb3J0ZWQuIEZ1bmN0aW9ucyBhY2NlcHRpbmcgb3IgcmV0dXJuaW5nIGZpbGVuYW1lcyBzaG91bGQgc3VwcG9ydAorICAgZWl0aGVyIHN0ciBvciBieXRlcyBhbmQgaW50ZXJuYWxseSBjb252ZXJ0IHRvIHRoZSBzeXN0ZW0ncyBwcmVmZXJyZWQKKyAgIHJlcHJlc2VudGF0aW9uLgorCisgICBUaGlzIGVuY29kaW5nIGlzIGFsd2F5cyBBU0NJSS1jb21wYXRpYmxlLgorCisgICA6ZnVuYzpgb3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGVgIHNob3VsZCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0CisgICB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgYXJlIHVzZWQuCiAKICAgICogT24gTWFjIE9TIFgsIHRoZSBlbmNvZGluZyBpcyBgYCd1dGYtOCdgYC4KIAotICAgKiBPbiBVbml4LCB0aGUgZW5jb2RpbmcgaXMgdGhlIHVzZXIncyBwcmVmZXJlbmNlIGFjY29yZGluZyB0byB0aGUgcmVzdWx0IG9mCi0gICAgIG5sX2xhbmdpbmZvKENPREVTRVQpLgorICAgKiBPbiBVbml4LCB0aGUgZW5jb2RpbmcgaXMgdGhlIGxvY2FsZSBlbmNvZGluZy4KIAotICAgKiBPbiBXaW5kb3dzIE5UKywgZmlsZSBuYW1lcyBhcmUgVW5pY29kZSBuYXRpdmVseSwgc28gbm8gY29udmVyc2lvbiBpcwotICAgICBwZXJmb3JtZWQuIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgIHN0aWxsIHJldHVybnMgYGAnbWJjcydgYCwgYXMKLSAgICAgdGhpcyBpcyB0aGUgZW5jb2RpbmcgdGhhdCBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZSB3aGVuIHRoZXkgZXhwbGljaXRseQotICAgICB3YW50IHRvIGNvbnZlcnQgVW5pY29kZSBzdHJpbmdzIHRvIGJ5dGUgc3RyaW5ncyB0aGF0IGFyZSBlcXVpdmFsZW50IHdoZW4KLSAgICAgdXNlZCBhcyBmaWxlIG5hbWVzLgotCi0gICAqIE9uIFdpbmRvd3MgOXgsIHRoZSBlbmNvZGluZyBpcyBgYCdtYmNzJ2BgLgorICAgKiBPbiBXaW5kb3dzLCB0aGUgZW5jb2RpbmcgbWF5IGJlIGBgJ3V0Zi04J2BgIG9yIGBgJ21iY3MnYGAsIGRlcGVuZGluZworICAgICBvbiB1c2VyIGNvbmZpZ3VyYXRpb24uCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICA6ZnVuYzpgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYCByZXN1bHQgY2Fubm90IGJlIGBgTm9uZWBgIGFueW1vcmUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBXaW5kb3dzIGlzIG5vIGxvbmdlciBndWFyYW50ZWVkIHRvIHJldHVybiBgYCdtYmNzJ2BgLiBTZWUgOnBlcDpgNTI5YAorICAgICAgYW5kIDpmdW5jOmBfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisuLiBmdW5jdGlvbjo6IGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKQorCisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVycm9yIG1vZGUgdXNlZCB0byBjb252ZXJ0IGJldHdlZW4gVW5pY29kZSBmaWxlbmFtZXMKKyAgIGFuZCBieXRlcyBmaWxlbmFtZXMuIFRoZSBlbmNvZGluZyBuYW1lIGlzIHJldHVybmVkIGZyb20KKyAgIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgLgorCisgICA6ZnVuYzpgb3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGVgIHNob3VsZCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0CisgICB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgYXJlIHVzZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBmdW5jdGlvbjo6IGdldHJlZmNvdW50KG9iamVjdCkKIApAQCAtNTMwLDI2ICs1NTIsMTUgQEAKICAgIFJldHVybiBhIG5hbWVkIHR1cGxlIGRlc2NyaWJpbmcgdGhlIFdpbmRvd3MgdmVyc2lvbgogICAgY3VycmVudGx5IHJ1bm5pbmcuICBUaGUgbmFtZWQgZWxlbWVudHMgYXJlICptYWpvciosICptaW5vciosCiAgICAqYnVpbGQqLCAqcGxhdGZvcm0qLCAqc2VydmljZV9wYWNrKiwgKnNlcnZpY2VfcGFja19taW5vciosCi0gICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCBhbmQgKnByb2R1Y3RfdHlwZSouCi0gICAqc2VydmljZV9wYWNrKiBjb250YWlucyBhIHN0cmluZyB3aGlsZSBhbGwgb3RoZXIgdmFsdWVzIGFyZQorICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgKnByb2R1Y3RfdHlwZSogYW5kCisgICAqcGxhdGZvcm1fdmVyc2lvbiouICpzZXJ2aWNlX3BhY2sqIGNvbnRhaW5zIGEgc3RyaW5nLAorICAgKnBsYXRmb3JtX3ZlcnNpb24qIGEgMy10dXBsZSBhbmQgYWxsIG90aGVyIHZhbHVlcyBhcmUKICAgIGludGVnZXJzLiBUaGUgY29tcG9uZW50cyBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBieSBuYW1lLCBzbwogICAgYGBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKVswXWBgIGlzIGVxdWl2YWxlbnQgdG8KICAgIGBgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkubWFqb3JgYC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmlvcgogICAgdmVyc2lvbnMsIG9ubHkgdGhlIGZpcnN0IDUgZWxlbWVudHMgYXJlIHJldHJpZXZhYmxlIGJ5IGluZGV4aW5nLgogCi0gICAqcGxhdGZvcm0qIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0KLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBDb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQbGF0Zm9ybSAgICAgICAgICAgICAgICB8Ci0gICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgOmNvbnN0OmAwIChWRVJfUExBVEZPUk1fV0lOMzJzKWAgICAgICAgIHwgV2luMzJzIG9uIFdpbmRvd3MgMy4xICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgMSAoVkVSX1BMQVRGT1JNX1dJTjMyX1dJTkRPV1MpYCB8IFdpbmRvd3MgOTUvOTgvTUUgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YDIgKFZFUl9QTEFURk9STV9XSU4zMl9OVClgICAgICAgfCBXaW5kb3dzIE5ULzIwMDAvWFAveDY0ICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAzIChWRVJfUExBVEZPUk1fV0lOMzJfQ0UpYCAgICAgIHwgV2luZG93cyBDRSAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAqcGxhdGZvcm0qIHdpbGwgYmUgOmNvbnN0OmAyIChWRVJfUExBVEZPUk1fV0lOMzJfTlQpYC4KIAogICAgKnByb2R1Y3RfdHlwZSogbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKIApAQCAtNTY1LDE3ICs1NzYsMjMgQEAKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgZG9tYWluIGNvbnRyb2xsZXIuICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKLQogICAgVGhpcyBmdW5jdGlvbiB3cmFwcyB0aGUgV2luMzIgOmM6ZnVuYzpgR2V0VmVyc2lvbkV4YCBmdW5jdGlvbjsgc2VlIHRoZQogICAgTWljcm9zb2Z0IGRvY3VtZW50YXRpb24gb24gOmM6ZnVuYzpgT1NWRVJTSU9OSU5GT0VYYCBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgYWJvdXQgdGhlc2UgZmllbGRzLgogCisgICAqcGxhdGZvcm1fdmVyc2lvbiogcmV0dXJucyB0aGUgYWNjdXJhdGUgbWFqb3IgdmVyc2lvbiwgbWlub3IgdmVyc2lvbiBhbmQKKyAgIGJ1aWxkIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLCByYXRoZXIgdGhhbiB0aGUgdmVyc2lvbiB0aGF0CisgICBpcyBiZWluZyBlbXVsYXRlZCBmb3IgdGhlIHByb2Nlc3MuIEl0IGlzIGludGVuZGVkIGZvciB1c2UgaW4gbG9nZ2luZyByYXRoZXIKKyAgIHRoYW4gZm9yIGZlYXR1cmUgZGV0ZWN0aW9uLgorCiAgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBDaGFuZ2VkIHRvIGEgbmFtZWQgdHVwbGUgYW5kIGFkZGVkICpzZXJ2aWNlX3BhY2tfbWlub3IqLAogICAgICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgYW5kICpwcm9kdWN0X3R5cGUqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBsYXRmb3JtX3ZlcnNpb24qCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2Nvcm91dGluZV93cmFwcGVyKCkKIApAQCAtMTA4MiwxOCArMTA5OSw2IEBACiAgICAgICB0aHVzIG1heSBub3QgYmUgYXZhaWxhYmxlIGluIGFsbCBQeXRob24gaW1wbGVtZW50YXRpb25zLgogCiAKLS4uIGZ1bmN0aW9uOjogc2V0dHNjZHVtcChvbl9mbGFnKQotCi0gICBBY3RpdmF0ZSBkdW1waW5nIG9mIFZNIG1lYXN1cmVtZW50cyB1c2luZyB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciwgaWYKLSAgICpvbl9mbGFnKiBpcyB0cnVlLiBEZWFjdGl2YXRlIHRoZXNlIGR1bXBzIGlmICpvbl9mbGFnKiBpcyBvZmYuIFRoZSBmdW5jdGlvbiBpcwotICAgYXZhaWxhYmxlIG9ubHkgaWYgUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIGBgLS13aXRoLXRzY2BgLiBUbyB1bmRlcnN0YW5kCi0gICB0aGUgb3V0cHV0IG9mIHRoaXMgZHVtcCwgcmVhZCA6ZmlsZTpgUHl0aG9uL2NldmFsLmNgIGluIHRoZSBQeXRob24gc291cmNlcy4KLQotICAgLi4gaW1wbC1kZXRhaWw6OgotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRpbWF0ZWx5IGJvdW5kIHRvIENQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQKLSAgICAgIHRodXMgbm90IGxpa2VseSB0byBiZSBpbXBsZW1lbnRlZCBlbHNld2hlcmUuCi0KLQogLi4gZnVuY3Rpb246OiBzZXRfY29yb3V0aW5lX3dyYXBwZXIod3JhcHBlcikKIAogICAgQWxsb3dzIGludGVyY2VwdGluZyBjcmVhdGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzIChvbmx5IG9uZXMgdGhhdApAQCAtMTEzMyw2ICsxMTM4LDE4IEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIG9uIGEgcHJvdmlzaW9uYWwgYmFzaXMgKHNlZSA6cGVwOmA0MTFgCiAgICAgICBmb3IgZGV0YWlscy4pICBVc2UgaXQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgogCisuLiBmdW5jdGlvbjo6IF9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZygpCisKKyAgIENoYW5nZXMgdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgdG8gJ21iY3MnIGFuZAorICAgJ3JlcGxhY2UnIHJlc3BlY3RpdmVseSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggdmVyc2lvbnMgb2YgUHl0aG9uIHByaW9yIHRvIDMuNi4KKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGRlZmluaW5nIHRoZSA6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElOR2AKKyAgIGVudmlyb25tZW50IHZhcmlhYmxlIGJlZm9yZSBsYXVuY2hpbmcgUHl0aG9uLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBkZXRhaWxzLgogCiAuLiBkYXRhOjogc3RkaW4KICAgICAgICAgICBzdGRvdXQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QgYi9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CmluZGV4IDZiYTA5NGQuLjI5MTc3YTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdApAQCAtMTY0LDcgKzE2NCw3IEBACiAuLiBmdW5jdGlvbjo6IGdldF9weXRob25fdmVyc2lvbigpCiAKICAgIFJldHVybiB0aGUgYGBNQUpPUi5NSU5PUmBgIFB5dGhvbiB2ZXJzaW9uIG51bWJlciBhcyBhIHN0cmluZy4gIFNpbWlsYXIgdG8KLSAgIGBgc3lzLnZlcnNpb25bOjNdYGAuCisgICBgYCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXWBgLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3BsYXRmb3JtKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CmluZGV4IGI5NTBlNDEuLmY5YzUxNTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdApAQCAtNDMsNiArNDMsMTcgQEAKICAgIDpleGM6YEVPRkVycm9yYCB3aGVuIHRoZSBlbmQgb2YgdGhlIGNvbm5lY3Rpb24gaXMgcmVhZCwgYmVjYXVzZSB0aGV5IGNhbiByZXR1cm4KICAgIGFuIGVtcHR5IHN0cmluZyBmb3Igb3RoZXIgcmVhc29ucy4gIFNlZSB0aGUgaW5kaXZpZHVhbCBkZXNjcmlwdGlvbnMgYmVsb3cuCiAKKyAgIEEgOmNsYXNzOmBUZWxuZXRgIG9iamVjdCBpcyBhIGNvbnRleHQgbWFuYWdlciBhbmQgY2FuIGJlIHVzZWQgaW4gYQorICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIFdoZW4gdGhlIDprZXl3b3JkOmB3aXRoYCBibG9jayBlbmRzLCB0aGUKKyAgIDptZXRoOmBjbG9zZWAgbWV0aG9kIGlzIGNhbGxlZDo6CisKKyAgICAgICA+Pj4gZnJvbSB0ZWxuZXRsaWIgaW1wb3J0IFRlbG5ldAorICAgICAgID4+PiB3aXRoIFRlbG5ldCgnbG9jYWxob3N0JywgMjMpIGFzIHRuOgorICAgICAgIC4uLiAgICAgdG4uaW50ZXJhY3QoKQorICAgICAgIC4uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBDb250ZXh0IG1hbmFnZXIgc3VwcG9ydCBhZGRlZAorCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDJlYTljMjcuLjcxMTRjZGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC01ODIsNiArNTgyLDQ4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCisuLiBmdW5jdGlvbjo6IGNoZWNrX19hbGxfXyh0ZXN0X2Nhc2UsIG1vZHVsZSwgbmFtZV9vZl9tb2R1bGU9Tm9uZSwgZXh0cmE9KCksIGJsYWNrbGlzdD0oKSkKKworICAgQXNzZXJ0IHRoYXQgdGhlIGBgX19hbGxfX2BgIHZhcmlhYmxlIG9mICptb2R1bGUqIGNvbnRhaW5zIGFsbCBwdWJsaWMgbmFtZXMuCisKKyAgIFRoZSBtb2R1bGUncyBwdWJsaWMgbmFtZXMgKGl0cyBBUEkpIGFyZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5CisgICBiYXNlZCBvbiB3aGV0aGVyIHRoZXkgbWF0Y2ggdGhlIHB1YmxpYyBuYW1lIGNvbnZlbnRpb24gYW5kIHdlcmUgZGVmaW5lZCBpbgorICAgKm1vZHVsZSouCisKKyAgIFRoZSAqbmFtZV9vZl9tb2R1bGUqIGFyZ3VtZW50IGNhbiBzcGVjaWZ5IChhcyBhIHN0cmluZyBvciB0dXBsZSB0aGVyZW9mKSB3aGF0CisgICBtb2R1bGUocykgYW4gQVBJIGNvdWxkIGJlIGRlZmluZWQgaW4gaW4gb3JkZXIgdG8gYmUgZGV0ZWN0ZWQgYXMgYSBwdWJsaWMKKyAgIEFQSS4gT25lIGNhc2UgZm9yIHRoaXMgaXMgd2hlbiAqbW9kdWxlKiBpbXBvcnRzIHBhcnQgb2YgaXRzIHB1YmxpYyBBUEkgZnJvbQorICAgb3RoZXIgbW9kdWxlcywgcG9zc2libHkgYSBDIGJhY2tlbmQgKGxpa2UgYGBjc3ZgYCBhbmQgaXRzIGBgX2NzdmBgKS4KKworICAgVGhlICpleHRyYSogYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgd291bGRuJ3Qgb3RoZXJ3aXNlIGJlIGF1dG9tYXRpY2FsbHkKKyAgIGRldGVjdGVkIGFzICJwdWJsaWMiLCBsaWtlIG9iamVjdHMgd2l0aG91dCBhIHByb3BlciBgYF9fbW9kdWxlX19gYAorICAgYXR0cmlidXRlLiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYXV0b21hdGljYWxseSBkZXRlY3RlZCBvbmVzLgorCisgICBUaGUgKmJsYWNrbGlzdCogYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgbXVzdCBub3QgYmUgdHJlYXRlZCBhcyBwYXJ0IG9mCisgICB0aGUgcHVibGljIEFQSSBldmVuIHRob3VnaCB0aGVpciBuYW1lcyBpbmRpY2F0ZSBvdGhlcndpc2UuCisKKyAgIEV4YW1wbGUgdXNlOjoKKworICAgICAgaW1wb3J0IGJhcgorICAgICAgaW1wb3J0IGZvbworICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworICAgICAgY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZvbykKKworICAgICAgY2xhc3MgT3RoZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICBleHRyYSA9IHsnQkFSX0NPTlNUJywgJ0ZPT19DT05TVCd9CisgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IHsnYmF6J30gICMgVW5kb2N1bWVudGVkIG5hbWUuCisgICAgICAgICAgICAgICMgYmFyIGltcG9ydHMgcGFydCBvZiBpdHMgQVBJIGZyb20gX2Jhci4KKyAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgYmFyLCAoJ2JhcicsICdfYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBUaGUgOm1vZDpgdGVzdC5zdXBwb3J0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzZXM6CiAKIC4uIGNsYXNzOjogVHJhbnNpZW50UmVzb3VyY2UoZXhjLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWUucnN0IGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKaW5kZXggZTY2MjZmMi4uYWUxN2Y2ZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKQEAgLTgzLDYgKzgzLDEwIEBACiAgICAgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyB3aGVuIHBsYXRmb3JtIHN1cHBvcnRzIGNvcnJlc3BvbmRpbmcKICAgICAgYGBzdHJ1Y3QgdG1gYCBtZW1iZXJzLgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgIFRoZSA6Y2xhc3M6YHN0cnVjdF90aW1lYCBhdHRyaWJ1dGVzIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAKKyAgICAgYXJlIG5vdyBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKwogKiBVc2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gY29udmVydCBiZXR3ZWVuIHRpbWUgcmVwcmVzZW50YXRpb25zOgogCiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTU2NiwxMCArNTcwLDYgQEAKICAgIDpjbGFzczpgc3RydWN0X3RpbWVgLCBvciBoYXZpbmcgZWxlbWVudHMgb2YgdGhlIHdyb25nIHR5cGUsIGEKICAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCi0gIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcwotICAgICB3aXRoIEMgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBpbiBgYHN0cnVjdCB0bWBgLgotCiAuLiBmdW5jdGlvbjo6IHRpbWUoKQogCiAgICBSZXR1cm4gdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggYXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIuCkBAIC02MzcsMTEgKzYzNywxMSBAQAogICAgICAgICAgaXQgaXMgcG9zc2libGUgdG8gcmVmZXIgdG8gRmVicnVhcnkgMjkuCiAKICAgICAgIDpzYW1wOmBNe219LntufS57ZH1gCi0gICAgICAgICBUaGUgKmQqJ3RoIGRheSAoMCA8PSAqZCogPD0gNikgb3Igd2VlayAqbiogb2YgbW9udGggKm0qIG9mIHRoZSB5ZWFyICgxCisgICAgICAgICBUaGUgKmQqJ3RoIGRheSAoMCA8PSAqZCogPD0gNikgb2Ygd2VlayAqbiogb2YgbW9udGggKm0qIG9mIHRoZSB5ZWFyICgxCiAgICAgICAgICA8PSAqbiogPD0gNSwgMSA8PSAqbSogPD0gMTIsIHdoZXJlIHdlZWsgNSBtZWFucyAidGhlIGxhc3QgKmQqIGRheSBpbgogICAgICAgICAgbW9udGggKm0qIiB3aGljaCBtYXkgb2NjdXIgaW4gZWl0aGVyIHRoZSBmb3VydGggb3IgdGhlIGZpZnRoCiAgICAgICAgICB3ZWVrKS4gV2VlayAxIGlzIHRoZSBmaXJzdCB3ZWVrIGluIHdoaWNoIHRoZSAqZCondGggZGF5IG9jY3Vycy4gRGF5Ci0gICAgICAgICB6ZXJvIGlzIFN1bmRheS4KKyAgICAgICAgIHplcm8gaXMgYSBTdW5kYXkuCiAKICAgICAgIGBgdGltZWBgIGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgYGBvZmZzZXRgYCBleGNlcHQgdGhhdCBubyBsZWFkaW5nIHNpZ24KICAgICAgICgnLScgb3IgJysnKSBpcyBhbGxvd2VkLiBUaGUgZGVmYXVsdCwgaWYgdGltZSBpcyBub3QgZ2l2ZW4sIGlzIDAyOjAwOjAwLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdCBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKaW5kZXggNTdhNDgzNC4uNWJhZTMzYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CkBAIC0xMDAsOCArMTAwLDggQEAKICAgIGNhbiBiZSBjb250cm9sbGVkIGJ5IHBhc3NpbmcgYSBuYW1lc3BhY2UgdG8gKmdsb2JhbHMqLgogCiAgICBUbyBtZWFzdXJlIHRoZSBleGVjdXRpb24gdGltZSBvZiB0aGUgZmlyc3Qgc3RhdGVtZW50LCB1c2UgdGhlIDptZXRoOmAudGltZWl0YAotICAgbWV0aG9kLiAgVGhlIDptZXRoOmAucmVwZWF0YCBtZXRob2QgaXMgYSBjb252ZW5pZW5jZSB0byBjYWxsIDptZXRoOmAudGltZWl0YAotICAgbXVsdGlwbGUgdGltZXMgYW5kIHJldHVybiBhIGxpc3Qgb2YgcmVzdWx0cy4KKyAgIG1ldGhvZC4gIFRoZSA6bWV0aDpgLnJlcGVhdGAgYW5kIDptZXRoOmAuYXV0b3JhbmdlYCBtZXRob2RzIGFyZSBjb252ZW5pZW5jZQorICAgbWV0aG9kcyB0byBjYWxsIDptZXRoOmAudGltZWl0YCBtdWx0aXBsZSB0aW1lcy4KIAogICAgVGhlIGV4ZWN1dGlvbiB0aW1lIG9mICpzZXR1cCogaXMgZXhjbHVkZWQgZnJvbSB0aGUgb3ZlcmFsbCB0aW1lZCBleGVjdXRpb24gcnVuLgogCkBAIC0xMzQsNiArMTM0LDIzIEBACiAgICAgICAgICAgICB0aW1laXQuVGltZXIoJ2ZvciBpIGluIHJhbmdlKDEwKTogb2N0KGkpJywgJ2djLmVuYWJsZSgpJykudGltZWl0KCkKIAogCisgICAgLi4gbWV0aG9kOjogVGltZXIuYXV0b3JhbmdlKGNhbGxiYWNrPU5vbmUpCisKKyAgICAgICBBdXRvbWF0aWNhbGx5IGRldGVybWluZSBob3cgbWFueSB0aW1lcyB0byBjYWxsIDptZXRoOmAudGltZWl0YC4KKworICAgICAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIDptZXRoOmAudGltZWl0YCByZXBlYXRlZGx5CisgICAgICAgc28gdGhhdCB0aGUgdG90YWwgdGltZSA+PSAwLjIgc2Vjb25kLCByZXR1cm5pbmcgdGhlIGV2ZW50dWFsCisgICAgICAgKG51bWJlciBvZiBsb29wcywgdGltZSB0YWtlbiBmb3IgdGhhdCBudW1iZXIgb2YgbG9vcHMpLiBJdCBjYWxscworICAgICAgIDptZXRoOmAudGltZWl0YCB3aXRoICpudW1iZXIqIHNldCB0byBzdWNjZXNzaXZlIHBvd2VycyBvZiB0ZW4gKDEwLAorICAgICAgIDEwMCwgMTAwMCwgLi4uKSB1cCB0byBhIG1heGltdW0gb2Ygb25lIGJpbGxpb24sIHVudGlsIHRoZSB0aW1lIHRha2VuCisgICAgICAgaXMgYXQgbGVhc3QgMC4yIHNlY29uZCwgb3IgdGhlIG1heGltdW0gaXMgcmVhY2hlZC4KKworICAgICAgICBJZiAqY2FsbGJhY2sqIGlzIGdpdmVuIGFuZCBpcyBub3QgKk5vbmUqLCBpdCB3aWxsIGJlIGNhbGxlZCBhZnRlcgorICAgICAgICBlYWNoIHRyaWFsIHdpdGggdHdvIGFyZ3VtZW50czogYGBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogICAgLi4gbWV0aG9kOjogVGltZXIucmVwZWF0KHJlcGVhdD0zLCBudW1iZXI9MTAwMDAwMCkKIAogICAgICAgQ2FsbCA6bWV0aDpgLnRpbWVpdGAgYSBmZXcgdGltZXMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QgYi9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QKaW5kZXggNDFmMjBkZC4uMTFlZDc1NSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGtpbnRlci50aXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdApAQCAtMTAsNiArMTAsMTAgQEAKIAogLi4gaW5kZXg6OiBzaW5nbGU6IFRpeAogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBUaGlzIFRrIGV4dGVuc2lvbiBpcyB1bm1haW50YWluZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBpbiBuZXcgY29kZS4gIFVzZQorICAgOm1vZDpgdGtpbnRlci50dGtgIGluc3RlYWQuCisKIC0tLS0tLS0tLS0tLS0tCiAKIFRoZSA6bW9kOmB0a2ludGVyLnRpeGAgKFRrIEludGVyZmFjZSBFeHRlbnNpb24pIG1vZHVsZSBwcm92aWRlcyBhbiBhZGRpdGlvbmFsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0IGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdAppbmRleCAzYzFkOWJiLi4wNjZlZTk2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKQEAgLTI5MSw2ICsyOTEsMjAgQEAKICAgICAgIG9mIHR1cGxlcy4gRWFjaCB0dXBsZSBzaG91bGQgYmUgYSA0LXR1cGxlIHdpdGggZmlsZW5hbWUsIGxpbmVubywgbmFtZSwKICAgICAgIGxpbmUgYXMgdGhlIGVsZW1lbnRzLgogCisgICAuLiBtZXRob2Q6OiBmb3JtYXQoKQorCisgICAgICBSZXR1cm5zIGEgbGlzdCBvZiBzdHJpbmdzIHJlYWR5IGZvciBwcmludGluZy4gIEVhY2ggc3RyaW5nIGluIHRoZQorICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCisgICAgICBFYWNoIHN0cmluZyBlbmRzIGluIGEgbmV3bGluZTsgdGhlIHN0cmluZ3MgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgIG5ld2xpbmVzIGFzIHdlbGwsIGZvciB0aG9zZSBpdGVtcyB3aXRoIHNvdXJjZSB0ZXh0IGxpbmVzLgorCisgICAgICBGb3IgbG9uZyBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgZnJhbWUgYW5kIGxpbmUsIHRoZSBmaXJzdCBmZXcKKyAgICAgIHJlcGV0aXRpb25zIGFyZSBzaG93biwgZm9sbG93ZWQgYnkgYSBzdW1tYXJ5IGxpbmUgc3RhdGluZyB0aGUgZXhhY3QKKyAgICAgIG51bWJlciBvZiBmdXJ0aGVyIHJlcGV0aXRpb25zLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgTG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgZnJhbWVzIGFyZSBub3cgYWJicmV2aWF0ZWQuCisKIAogOmNsYXNzOmBGcmFtZVN1bW1hcnlgIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKaW5kZXggM2EwYjFlMC4uZjU2ZjI3YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdApAQCAtMzU5LDEwICszNTksMzIgQEAKICAgIFNlZSBhbHNvIHRoZSA6ZnVuYzpgZ2V0X29iamVjdF90cmFjZWJhY2tgIGZ1bmN0aW9uLgogCiAKK0RvbWFpbkZpbHRlcgorXl5eXl5eXl5eXl5eCisKKy4uIGNsYXNzOjogRG9tYWluRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZG9tYWluOiBpbnQpCisKKyAgIEZpbHRlciB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBieSB0aGVpciBhZGRyZXNzIHNwYWNlIChkb21haW4pLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCisKKyAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgbWF0Y2ggbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKKyAgICAgIGluIHRoZSBhZGRyZXNzIHNwYWNlIDphdHRyOmBkb21haW5gLgorCisgICAgICBJZiAqaW5jbHVzaXZlKiBpcyBgYEZhbHNlYGAgKGV4Y2x1ZGUpLCBtYXRjaCBtZW1vcnkgYmxvY2tzIG5vdCBhbGxvY2F0ZWQKKyAgICAgIGluIHRoZSBhZGRyZXNzIHNwYWNlIDphdHRyOmBkb21haW5gLgorCisgICAuLiBhdHRyaWJ1dGU6OiBkb21haW4KKworICAgICAgQWRkcmVzcyBzcGFjZSBvZiBhIG1lbW9yeSBibG9jayAoYGBpbnRgYCkuIFJlYWQtb25seSBwcm9wZXJ0eS4KKworCiBGaWx0ZXIKIF5eXl5eXgogCi0uLiBjbGFzczo6IEZpbHRlcihpbmNsdXNpdmU6IGJvb2wsIGZpbGVuYW1lX3BhdHRlcm46IHN0ciwgbGluZW5vOiBpbnQ9Tm9uZSwgYWxsX2ZyYW1lczogYm9vbD1GYWxzZSkKKy4uIGNsYXNzOjogRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZmlsZW5hbWVfcGF0dGVybjogc3RyLCBsaW5lbm86IGludD1Ob25lLCBhbGxfZnJhbWVzOiBib29sPUZhbHNlLCBkb21haW46IGludD1Ob25lKQogCiAgICBGaWx0ZXIgb24gdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MuCiAKQEAgLTM4Miw5ICs0MDQsMTcgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBUaGUgYGAnLnB5bydgYCBmaWxlIGV4dGVuc2lvbiBpcyBubyBsb25nZXIgcmVwbGFjZWQgd2l0aCBgYCcucHknYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgOmF0dHI6YGRvbWFpbmAgYXR0cmlidXRlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRvbWFpbgorCisgICAgICBBZGRyZXNzIHNwYWNlIG9mIGEgbWVtb3J5IGJsb2NrIChgYGludGBgIG9yIGBgTm9uZWBgKS4KKwogICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCiAKLSAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgb25seSB0cmFjZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBvbmx5IG1hdGNoIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCiAgICAgICBpbiBhIGZpbGUgd2l0aCBhIG5hbWUgbWF0Y2hpbmcgOmF0dHI6YGZpbGVuYW1lX3BhdHRlcm5gIGF0IGxpbmUgbnVtYmVyCiAgICAgICA6YXR0cjpgbGluZW5vYC4KIApAQCAtMzk5LDcgKzQyOSw3IEBACiAKICAgIC4uIGF0dHJpYnV0ZTo6IGZpbGVuYW1lX3BhdHRlcm4KIAotICAgICAgRmlsZW5hbWUgcGF0dGVybiBvZiB0aGUgZmlsdGVyIChgYHN0cmBgKS4KKyAgICAgIEZpbGVuYW1lIHBhdHRlcm4gb2YgdGhlIGZpbHRlciAoYGBzdHJgYCkuIFJlYWQtb25seSBwcm9wZXJ0eS4KIAogICAgLi4gYXR0cmlidXRlOjogYWxsX2ZyYW1lcwogCkBAIC00NjIsMTQgKzQ5MiwxNyBAQAogICAgLi4gbWV0aG9kOjogZmlsdGVyX3RyYWNlcyhmaWx0ZXJzKQogCiAgICAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGZpbHRlcmVkIDphdHRyOmB0cmFjZXNgCi0gICAgICBzZXF1ZW5jZSwgKmZpbHRlcnMqIGlzIGEgbGlzdCBvZiA6Y2xhc3M6YEZpbHRlcmAgaW5zdGFuY2VzLiAgSWYgKmZpbHRlcnMqCi0gICAgICBpcyBhbiBlbXB0eSBsaXN0LCByZXR1cm4gYSBuZXcgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YKLSAgICAgIHRoZSB0cmFjZXMuCisgICAgICBzZXF1ZW5jZSwgKmZpbHRlcnMqIGlzIGEgbGlzdCBvZiA6Y2xhc3M6YERvbWFpbkZpbHRlcmAgYW5kCisgICAgICA6Y2xhc3M6YEZpbHRlcmAgaW5zdGFuY2VzLiAgSWYgKmZpbHRlcnMqIGlzIGFuIGVtcHR5IGxpc3QsIHJldHVybiBhIG5ldworICAgICAgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KIAogICAgICAgQWxsIGluY2x1c2l2ZSBmaWx0ZXJzIGFyZSBhcHBsaWVkIGF0IG9uY2UsIGEgdHJhY2UgaXMgaWdub3JlZCBpZiBubwogICAgICAgaW5jbHVzaXZlIGZpbHRlcnMgbWF0Y2ggaXQuIEEgdHJhY2UgaXMgaWdub3JlZCBpZiBhdCBsZWFzdCBvbmUgZXhjbHVzaXZlCiAgICAgICBmaWx0ZXIgbWF0Y2hlcyBpdC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIDpjbGFzczpgRG9tYWluRmlsdGVyYCBpbnN0YW5jZXMgYXJlIG5vdyBhbHNvIGFjY2VwdGVkIGluICpmaWx0ZXJzKi4KKwogCiAgICAuLiBjbGFzc21ldGhvZDo6IGxvYWQoZmlsZW5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAppbmRleCAxMThiYzRjLi44OThiOTVhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CkBAIC01NSw2ICs1NSwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKworICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBgYG5hbWVzcGFjZWBgIGVsZW1lbnQgb2YgdGhlIHJldHVybmVkCisgICAgICB0dXBsZSBoYXMgY2hhbmdlZC4gIE5vdyBhbiBpbnNlcnRpb24tb3JkZXItcHJlc2VydmluZyBtYXBwaW5nIGlzCisgICAgICB1c2VkIHdoZW4gdGhlIG1ldGFjbGFzcyBkb2VzIG5vdCBoYXZlIGEgYGBfX3ByZXBhcmVfX2BgIG1ldGhvZCwKKwogLi4gc2VlYWxzbzo6CiAKICAgIDpyZWY6YG1ldGFjbGFzc2VzYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKaW5kZXggYzI0YzcxNS4uZmRhM2RkNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBpbmcucnN0CkBAIC0xMCw3ICsxMCw3IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAuICBUaGUgbW9zdAorVGhpcyBtb2R1bGUgc3VwcG9ydHMgdHlwZSBoaW50cyBhcyBzcGVjaWZpZWQgYnkgOnBlcDpgNDg0YCBhbmQgOnBlcDpgNTI2YC4gIFRoZSBtb3N0CiBmdW5kYW1lbnRhbCBzdXBwb3J0IGNvbnNpc3RzIG9mIHRoZSB0eXBlIDpjbGFzczpgQW55YCwgOmNsYXNzOmBVbmlvbmAsCiA6Y2xhc3M6YFR1cGxlYCwgOmNsYXNzOmBDYWxsYWJsZWAsIDpjbGFzczpgVHlwZVZhcmAsIGFuZAogOmNsYXNzOmBHZW5lcmljYC4gIEZvciBmdWxsIHNwZWNpZmljYXRpb24gcGxlYXNlIHNlZSA6cGVwOmA0ODRgLiAgRm9yCkBAIC01ODcsNyArNTg3LDEzIEBACiAKICAgIEFuIGFsaWFzIHRvIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNpemVkYAogCi0uLiBjbGFzczo6IEFic3RyYWN0U2V0KFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorLi4gY2xhc3M6OiBDb2xsZWN0aW9uKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5Db2xsZWN0aW9uYAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gY2xhc3M6OiBBYnN0cmFjdFNldChTaXplZCwgQ29sbGVjdGlvbltUX2NvXSkKIAogICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNldGAuCiAKQEAgLTU5NSw3ICs2MDEsNyBAQAogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNldGAuCiAKLS4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgSXRlcmFibGVbS1RdLCBDb250YWluZXJbS1RdLCBHZW5lcmljW1ZUX2NvXSkKKy4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgQ29sbGVjdGlvbltLVF0sIEdlbmVyaWNbVlRfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZ2AuCiAKQEAgLTYwMyw3ICs2MDksNyBAQAogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgLgogCi0uLiBjbGFzczo6IFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorLi4gY2xhc3M6OiBTZXF1ZW5jZShSZXZlcnNpYmxlW1RfY29dLCBDb2xsZWN0aW9uW1RfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgLgogCkBAIC02NzAsNiArNjc2LDEyIEBACiAKICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuQXN5bmNJdGVyYXRvcmAuCiAKKy4uIGNsYXNzOjogQ29udGV4dE1hbmFnZXIoR2VuZXJpY1tUX2NvXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBEaWN0KGRpY3QsIE11dGFibGVNYXBwaW5nW0tULCBWVF0pCiAKICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgZGljdGAuCkBAIC03OTcsNyArODA5LDcgQEAKIAogLi4gZnVuY3Rpb246OiBnZXRfdHlwZV9oaW50cyhvYmopCiAKLSAgIFJldHVybiB0eXBlIGhpbnRzIGZvciBhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QuCisgICBSZXR1cm4gdHlwZSBoaW50cyBmb3IgYSBjbGFzcywgbW9kdWxlLCBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LgogCiAgICBUaGlzIGlzIG9mdGVuIHRoZSBzYW1lIGFzIGBgb2JqLl9fYW5ub3RhdGlvbnNfX2BgLCBidXQgaXQgaGFuZGxlcwogICAgZm9yd2FyZCByZWZlcmVuY2VzIGVuY29kZWQgYXMgc3RyaW5nIGxpdGVyYWxzLCBhbmQgaWYgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmRvYy5yc3QgYi9Eb2MvbGlicmFyeS91bmRvYy5yc3QKaW5kZXggMjA4MzBlMi4uMjQ0NDA4MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5kb2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuZG9jLnJzdApAQCAtMjAsNyArMjAsNyBAQAogZG9jdW1lbnRlZCBiZXlvbmQgdGhpcyBtZW50aW9uLiAgVGhlcmUncyBsaXR0bGUgbmVlZCB0byBkb2N1bWVudCB0aGVzZS4KIAogOm1vZDpgbnRwYXRoYAotICAgLS0tIEltcGxlbWVudGF0aW9uIG9mIDptb2Q6YG9zLnBhdGhgIG9uIFdpbjMyLCBXaW42NCwgYW5kIFdpbkNFIHBsYXRmb3Jtcy4KKyAgIC0tLSBJbXBsZW1lbnRhdGlvbiBvZiA6bW9kOmBvcy5wYXRoYCBvbiBXaW4zMiBhbmQgV2luNjQgcGxhdGZvcm1zLgogCiA6bW9kOmBwb3NpeHBhdGhgCiAgICAtLS0gSW1wbGVtZW50YXRpb24gb2YgOm1vZDpgb3MucGF0aGAgb24gUE9TSVguCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKaW5kZXggNmNkODEzMi4uNjQzMTgwOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdApAQCAtMTcsOCArMTcsOCBAQAogCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIHdoaWNoCiBkZWZpbmVzIGNoYXJhY3RlciBwcm9wZXJ0aWVzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLiBUaGUgZGF0YSBjb250YWluZWQgaW4KLXRoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDguMC4wCi08aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkPmBfLgordGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gOS4wLjAKKzxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy85LjAuMC91Y2Q+YF8uCiAKIFRoZSBtb2R1bGUgdXNlcyB0aGUgc2FtZSBuYW1lcyBhbmQgc3ltYm9scyBhcyBkZWZpbmVkIGJ5IFVuaWNvZGUKIFN0YW5kYXJkIEFubmV4ICM0NCwgYCJVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSIKQEAgLTE2OCw2ICsxNjgsNiBAQAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZC9OYW1lQWxpYXNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy85LjAuMC91Y2QvTmFtZUFsaWFzZXMudHh0CiAKLS4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOS4wLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAppbmRleCBjMTNmMDk1Li4xYmMxZWRiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApAQCAtMjYyLDYgKzI2MiwzNCBAQAogICAgIHVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYWZ0ZXIgaXQgaXMgY3JlYXRlZC4gU2VlIHRoZQogICAgIDptZXRoOmBjb25maWd1cmVfbW9ja2AgbWV0aG9kIGZvciBkZXRhaWxzLgogCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBhdCBsZWFzdCBvbmNlLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWQoKQorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZF9vbmNlKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGV4YWN0bHkgb25jZS4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZC5hc3NlcnRfY2FsbGVkX29uY2UoKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWRfb25jZSgpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCAnbWV0aG9kJyB0byBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuIENhbGxlZCAyIHRpbWVzLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKICAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQogCkBAIC0zMzksNyArMzY3LDcgQEAKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIAotICAgIC4uIG1ldGhvZDo6IHJlc2V0X21vY2soKQorICAgIC4uIG1ldGhvZDo6IHJlc2V0X21vY2soKiwgcmV0dXJuX3ZhbHVlPUZhbHNlLCBzaWRlX2VmZmVjdD1GYWxzZSkKIAogICAgICAgICBUaGUgcmVzZXRfbW9jayBtZXRob2QgcmVzZXRzIGFsbCB0aGUgY2FsbCBhdHRyaWJ1dGVzIG9uIGEgbW9jayBvYmplY3Q6CiAKQEAgLTM1MSwxMiArMzc5LDIwIEBACiAgICAgICAgICAgICA+Pj4gbW9jay5jYWxsZWQKICAgICAgICAgICAgIEZhbHNlCiAKKyAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgICAgQWRkZWQgdHdvIGtleXdvcmQgb25seSBhcmd1bWVudCB0byB0aGUgcmVzZXRfbW9jayBmdW5jdGlvbi4KKwogICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlcmUgeW91IHdhbnQgdG8gbWFrZSBhIHNlcmllcyBvZiBhc3NlcnRpb25zIHRoYXQKICAgICAgICAgcmV1c2UgdGhlIHNhbWUgb2JqZWN0LiBOb3RlIHRoYXQgOm1ldGg6YHJlc2V0X21vY2tgICpkb2Vzbid0KiBjbGVhciB0aGUKICAgICAgICAgcmV0dXJuIHZhbHVlLCA6YXR0cjpgc2lkZV9lZmZlY3RgIG9yIGFueSBjaGlsZCBhdHRyaWJ1dGVzIHlvdSBoYXZlCi0gICAgICAgIHNldCB1c2luZyBub3JtYWwgYXNzaWdubWVudC4gQ2hpbGQgbW9ja3MgYW5kIHRoZSByZXR1cm4gdmFsdWUgbW9jaworICAgICAgICBzZXQgdXNpbmcgbm9ybWFsIGFzc2lnbm1lbnQgYnkgZGVmYXVsdC4gSW4gY2FzZSB5b3Ugd2FudCB0byByZXNldAorICAgICAgICAqcmV0dXJuX3ZhbHVlKiBvciA6YXR0cjpgc2lkZV9lZmZlY3RgLCB0aGVuIHBhc3MgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgcGFyYW1ldGVyIGFzIGBgVHJ1ZWBgLiBDaGlsZCBtb2NrcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBtb2NrCiAgICAgICAgIChpZiBhbnkpIGFyZSByZXNldCBhcyB3ZWxsLgogCisgICAgICAgIC4uIG5vdGU6OiAqcmV0dXJuX3ZhbHVlKiwgYW5kIDphdHRyOmBzaWRlX2VmZmVjdGAgYXJlIGtleXdvcmQgb25seQorICAgICAgICAgICAgICAgICAgYXJndW1lbnQuCisKIAogICAgIC4uIG1ldGhvZDo6IG1vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQ9RmFsc2UpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAppbmRleCA5Y2NhODgxLi5kZDE4OGIwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CkBAIC0xMzkzLDkgKzEzOTMsOSBAQAogCiAgICAgICBBZGQgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgOm1ldGg6YHRlYXJEb3duYCB0byBjbGVhbnVwIHJlc291cmNlcwogICAgICAgdXNlZCBkdXJpbmcgdGhlIHRlc3QuIEZ1bmN0aW9ucyB3aWxsIGJlIGNhbGxlZCBpbiByZXZlcnNlIG9yZGVyIHRvIHRoZQotICAgICAgb3JkZXIgdGhleSBhcmUgYWRkZWQgKExJRk8pLiBUaGV5IGFyZSBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzIGFuZAotICAgICAga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGludG8gOm1ldGg6YGFkZENsZWFudXBgIHdoZW4gdGhleSBhcmUKLSAgICAgIGFkZGVkLgorICAgICAgb3JkZXIgdGhleSBhcmUgYWRkZWQgKDphYmJyOmBMSUZPIChsYXN0LWluLCBmaXJzdC1vdXQpYCkuICBUaGV5CisgICAgICBhcmUgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cyBhbmQga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGludG8KKyAgICAgIDptZXRoOmBhZGRDbGVhbnVwYCB3aGVuIHRoZXkgYXJlIGFkZGVkLgogCiAgICAgICBJZiA6bWV0aDpgc2V0VXBgIGZhaWxzLCBtZWFuaW5nIHRoYXQgOm1ldGg6YHRlYXJEb3duYCBpcyBub3QgY2FsbGVkLAogICAgICAgdGhlbiBhbnkgY2xlYW51cCBmdW5jdGlvbnMgYWRkZWQgd2lsbCBzdGlsbCBiZSBjYWxsZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAppbmRleCAwMDdlNGRhLi5hNjZiMWMzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKQEAgLTExNCw4ICsxMTQsOSBAQAogICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgfCBpZiBwcmVzZW50ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAotICAgU2VlIHNlY3Rpb24gOnJlZjpgdXJscGFyc2UtcmVzdWx0LW9iamVjdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHJlc3VsdAotICAgb2JqZWN0LgorICAgUmVhZGluZyB0aGUgOmF0dHI6YHBvcnRgIGF0dHJpYnV0ZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYKKyAgIGFuIGludmFsaWQgcG9ydCBpcyBzcGVjaWZpZWQgaW4gdGhlIFVSTC4gIFNlZSBzZWN0aW9uCisgICA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0IG9iamVjdC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIElQdjYgVVJMIHBhcnNpbmcgY2FwYWJpbGl0aWVzLgpAQCAtMTI1LDYgKzEyNiwxMCBAQAogICAgICAgZmFsc2UpLCBpbiBhY2NvcmRhbmNlIHdpdGggOnJmYzpgMzk4NmAuICBQcmV2aW91c2x5LCBhIHdoaXRlbGlzdCBvZgogICAgICAgc2NoZW1lcyB0aGF0IHN1cHBvcnQgZnJhZ21lbnRzIGV4aXN0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPdXQtb2YtcmFuZ2UgcG9ydCBudW1iZXJzIG5vdyByYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCwgaW5zdGVhZCBvZgorICAgICAgcmV0dXJuaW5nIDpjb25zdDpgTm9uZWAuCisKIAogLi4gZnVuY3Rpb246OiBwYXJzZV9xcyhxcywga2VlcF9ibGFua192YWx1ZXM9RmFsc2UsIHN0cmljdF9wYXJzaW5nPUZhbHNlLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3JlcGxhY2UnKQogCkBAIC0yMjcsOCArMjMyLDEzIEBACiAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICB8IGlmIHByZXNlbnQgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAotICAgU2VlIHNlY3Rpb24gOnJlZjpgdXJscGFyc2UtcmVzdWx0LW9iamVjdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHJlc3VsdAotICAgb2JqZWN0LgorICAgUmVhZGluZyB0aGUgOmF0dHI6YHBvcnRgIGF0dHJpYnV0ZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYKKyAgIGFuIGludmFsaWQgcG9ydCBpcyBzcGVjaWZpZWQgaW4gdGhlIFVSTC4gIFNlZSBzZWN0aW9uCisgICA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0IG9iamVjdC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIE91dC1vZi1yYW5nZSBwb3J0IG51bWJlcnMgbm93IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpbnN0ZWFkIG9mCisgICAgICByZXR1cm5pbmcgOmNvbnN0OmBOb25lYC4KIAogCiAuLiBmdW5jdGlvbjo6IHVybHVuc3BsaXQocGFydHMpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKaW5kZXggMTI5MWFlYi4uNDkxYmRlZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdApAQCAtMzAsMTggKzMwLDkgQEAKICAgIE9wZW4gdGhlIFVSTCAqdXJsKiwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhCiAgICA6Y2xhc3M6YFJlcXVlc3RgIG9iamVjdC4KIAotICAgKmRhdGEqIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gYmUgc2VudCB0byB0aGUKLSAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gKmRhdGEqIG1heSBhbHNvIGJlIGFuCi0gICBpdGVyYWJsZSBvYmplY3QgYW5kIGluIHRoYXQgY2FzZSBDb250ZW50LUxlbmd0aCB2YWx1ZSBtdXN0IGJlIHNwZWNpZmllZCBpbgotICAgdGhlIGhlYWRlcnMuIEN1cnJlbnRseSBIVFRQIHJlcXVlc3RzIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgdXNlICpkYXRhKjsgdGhlCi0gICBIVFRQIHJlcXVlc3Qgd2lsbCBiZSBhIFBPU1QgaW5zdGVhZCBvZiBhIEdFVCB3aGVuIHRoZSAqZGF0YSogcGFyYW1ldGVyIGlzCi0gICBwcm92aWRlZC4KLQotICAgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUgc3RhbmRhcmQKLSAgIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuICBUaGUKLSAgIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0YWtlcyBhIG1hcHBpbmcgb3Igc2VxdWVuY2Ugb2YKLSAgIDItdHVwbGVzIGFuZCByZXR1cm5zIGFuIEFTQ0lJIHRleHQgc3RyaW5nIGluIHRoaXMgZm9ybWF0LiBJdCBzaG91bGQKLSAgIGJlIGVuY29kZWQgdG8gYnl0ZXMgYmVmb3JlIGJlaW5nIHVzZWQgYXMgdGhlICpkYXRhKiBwYXJhbWV0ZXIuCisgICAqZGF0YSogbXVzdCBiZSBhbiBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gYmUgc2VudCB0byB0aGUKKyAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIFNlZSA6Y2xhc3M6YFJlcXVlc3RgCisgICBmb3IgZGV0YWlscy4KIAogICAgdXJsbGliLnJlcXVlc3QgbW9kdWxlIHVzZXMgSFRUUC8xLjEgYW5kIGluY2x1ZGVzIGBgQ29ubmVjdGlvbjpjbG9zZWBgIGhlYWRlcgogICAgaW4gaXRzIEhUVFAgcmVxdWVzdHMuCkBAIC0xMjAsNiArMTExLDEyIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4zCiAgICAgICAqY29udGV4dCogd2FzIGFkZGVkLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqY2FmaWxlKiwgKmNhcGF0aCogYW5kICpjYWRlZmF1bHQqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCiAKIC4uIGZ1bmN0aW9uOjogaW5zdGFsbF9vcGVuZXIob3BlbmVyKQogCkBAIC0xOTIsMTQgKzE4OSwyMSBAQAogCiAgICAqdXJsKiBzaG91bGQgYmUgYSBzdHJpbmcgY29udGFpbmluZyBhIHZhbGlkIFVSTC4KIAotICAgKmRhdGEqIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gc2VuZCB0byB0aGUKLSAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIEN1cnJlbnRseSBIVFRQIHJlcXVlc3RzIGFyZQotICAgdGhlIG9ubHkgb25lcyB0aGF0IHVzZSAqZGF0YSo7IHRoZSBIVFRQIHJlcXVlc3Qgd2lsbCBiZSBhIFBPU1QgaW5zdGVhZCBvZiBhCi0gICBHRVQgd2hlbiB0aGUgKmRhdGEqIHBhcmFtZXRlciBpcyBwcm92aWRlZC4gICpkYXRhKiBzaG91bGQgYmUgYSBidWZmZXIgaW4gdGhlCi0gICBzdGFuZGFyZCA6bWltZXR5cGU6YGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgZm9ybWF0LgotICAgVGhlIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0YWtlcyBhIG1hcHBpbmcgb3Igc2VxdWVuY2Ugb2YKLSAgIDItdHVwbGVzIGFuZCByZXR1cm5zIGFuIEFTQ0lJIHN0cmluZyBpbiB0aGlzIGZvcm1hdC4gSXQgc2hvdWxkIGJlCi0gICBlbmNvZGVkIHRvIGJ5dGVzIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSAqZGF0YSogcGFyYW1ldGVyLgorICAgKmRhdGEqIG11c3QgYmUgYW4gb2JqZWN0IHNwZWNpZnlpbmcgYWRkaXRpb25hbCBkYXRhIHRvIHNlbmQgdG8gdGhlCisgICBzZXJ2ZXIsIG9yIGBgTm9uZWBgIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICBDdXJyZW50bHkgSFRUUAorICAgcmVxdWVzdHMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCB1c2UgKmRhdGEqLiAgVGhlIHN1cHBvcnRlZCBvYmplY3QKKyAgIHR5cGVzIGluY2x1ZGUgYnl0ZXMsIGZpbGUtbGlrZSBvYmplY3RzLCBhbmQgaXRlcmFibGVzLiAgSWYgbm8KKyAgIGBgQ29udGVudC1MZW5ndGhgYCBub3IgYGBUcmFuc2Zlci1FbmNvZGluZ2BgIGhlYWRlciBmaWVsZAorICAgaGFzIGJlZW4gcHJvdmlkZWQsIDpjbGFzczpgSFRUUEhhbmRsZXJgIHdpbGwgc2V0IHRoZXNlIGhlYWRlcnMgYWNjb3JkaW5nCisgICB0byB0aGUgdHlwZSBvZiAqZGF0YSouICBgYENvbnRlbnQtTGVuZ3RoYGAgd2lsbCBiZSB1c2VkIHRvIHNlbmQKKyAgIGJ5dGVzIG9iamVjdHMsIHdoaWxlIGBgVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRgYCBhcyBzcGVjaWZpZWQgaW4KKyAgIDpyZmM6YDcyMzBgLCBTZWN0aW9uIDMuMy4xIHdpbGwgYmUgdXNlZCB0byBzZW5kIGZpbGVzIGFuZCBvdGhlciBpdGVyYWJsZXMuCisKKyAgIEZvciBhbiBIVFRQIFBPU1QgcmVxdWVzdCBtZXRob2QsICpkYXRhKiBzaG91bGQgYmUgYSBidWZmZXIgaW4gdGhlCisgICBzdGFuZGFyZCA6bWltZXR5cGU6YGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgZm9ybWF0LiAgVGhlCisgICA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybGVuY29kZWAgZnVuY3Rpb24gdGFrZXMgYSBtYXBwaW5nIG9yIHNlcXVlbmNlCisgICBvZiAyLXR1cGxlcyBhbmQgcmV0dXJucyBhbiBBU0NJSSBzdHJpbmcgaW4gdGhpcyBmb3JtYXQuIEl0IHNob3VsZAorICAgYmUgZW5jb2RlZCB0byBieXRlcyBiZWZvcmUgYmVpbmcgdXNlZCBhcyB0aGUgKmRhdGEqIHBhcmFtZXRlci4KIAogICAgKmhlYWRlcnMqIHNob3VsZCBiZSBhIGRpY3Rpb25hcnksIGFuZCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYKICAgIDptZXRoOmBhZGRfaGVhZGVyYCB3YXMgY2FsbGVkIHdpdGggZWFjaCBrZXkgYW5kIHZhbHVlIGFzIGFyZ3VtZW50cy4KQEAgLTIxMSw4ICsyMTUsMTAgQEAKICAgIDptb2Q6YHVybGxpYmAncyBkZWZhdWx0IHVzZXIgYWdlbnQgc3RyaW5nIGlzCiAgICBgYCJQeXRob24tdXJsbGliLzIuNiJgYCAob24gUHl0aG9uIDIuNikuCiAKLSAgIEFuIGV4YW1wbGUgb2YgdXNpbmcgYGBDb250ZW50LVR5cGVgYCBoZWFkZXIgd2l0aCAqZGF0YSogYXJndW1lbnQgd291bGQgYmUKLSAgIHNlbmRpbmcgYSBkaWN0aW9uYXJ5IGxpa2UgYGB7IkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifWBgLgorICAgQW4gYXBwcm9wcmlhdGUgYGBDb250ZW50LVR5cGVgYCBoZWFkZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGlmIHRoZSAqZGF0YSoKKyAgIGFyZ3VtZW50IGlzIHByZXNlbnQuICBJZiB0aGlzIGhlYWRlciBoYXMgbm90IGJlZW4gcHJvdmlkZWQgYW5kICpkYXRhKgorICAgaXMgbm90IE5vbmUsIGBgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgYCB3aWxsCisgICBiZSBhZGRlZCBhcyBhIGRlZmF1bHQuCiAKICAgIFRoZSBmaW5hbCB0d28gYXJndW1lbnRzIGFyZSBvbmx5IG9mIGludGVyZXN0IGZvciBjb3JyZWN0IGhhbmRsaW5nCiAgICBvZiB0aGlyZC1wYXJ0eSBIVFRQIGNvb2tpZXM6CkBAIC0yMzUsMTUgKzI0MSwyOCBAQAogICAgKm1ldGhvZCogc2hvdWxkIGJlIGEgc3RyaW5nIHRoYXQgaW5kaWNhdGVzIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIHRoYXQKICAgIHdpbGwgYmUgdXNlZCAoZS5nLiBgYCdIRUFEJ2BgKS4gIElmIHByb3ZpZGVkLCBpdHMgdmFsdWUgaXMgc3RvcmVkIGluIHRoZQogICAgOmF0dHI6YH5SZXF1ZXN0Lm1ldGhvZGAgYXR0cmlidXRlIGFuZCBpcyB1c2VkIGJ5IDptZXRoOmBnZXRfbWV0aG9kKClgLgotICAgU3ViY2xhc3NlcyBtYXkgaW5kaWNhdGUgYSBkZWZhdWx0IG1ldGhvZCBieSBzZXR0aW5nIHRoZQorICAgVGhlIGRlZmF1bHQgaXMgYGAnR0VUJ2BgIGlmICpkYXRhKiBpcyBgYE5vbmVgYCBvciBgYCdQT1NUJ2BgIG90aGVyd2lzZS4KKyAgIFN1YmNsYXNzZXMgbWF5IGluZGljYXRlIGEgZGlmZmVyZW50IGRlZmF1bHQgbWV0aG9kIGJ5IHNldHRpbmcgdGhlCiAgICA6YXR0cjpgflJlcXVlc3QubWV0aG9kYCBhdHRyaWJ1dGUgaW4gdGhlIGNsYXNzIGl0c2VsZi4KIAorICAgLi4gbm90ZTo6CisgICAgICBUaGUgcmVxdWVzdCB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIGlmIHRoZSBkYXRhIG9iamVjdCBpcyB1bmFibGUKKyAgICAgIHRvIGRlbGl2ZXIgaXRzIGNvbnRlbnQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gYSBmaWxlIG9yIGFuIGl0ZXJhYmxlCisgICAgICB0aGF0IGNhbiBwcm9kdWNlIHRoZSBjb250ZW50IG9ubHkgb25jZSkgYW5kIHRoZSByZXF1ZXN0IGlzIHJldHJpZWQKKyAgICAgIGZvciBIVFRQIHJlZGlyZWN0cyBvciBhdXRoZW50aWNhdGlvbi4gIFRoZSAqZGF0YSogaXMgc2VudCB0byB0aGUKKyAgICAgIEhUVFAgc2VydmVyIHJpZ2h0IGF3YXkgYWZ0ZXIgdGhlIGhlYWRlcnMuICBUaGVyZSBpcyBubyBzdXBwb3J0IGZvcgorICAgICAgYSAxMDAtY29udGludWUgZXhwZWN0YXRpb24gaW4gdGhlIGxpYnJhcnkuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICA6YXR0cjpgUmVxdWVzdC5tZXRob2RgIGFyZ3VtZW50IGlzIGFkZGVkIHRvIHRoZSBSZXF1ZXN0IGNsYXNzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgRGVmYXVsdCA6YXR0cjpgUmVxdWVzdC5tZXRob2RgIG1heSBiZSBpbmRpY2F0ZWQgYXQgdGhlIGNsYXNzIGxldmVsLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgRG8gbm90IHJhaXNlIGFuIGVycm9yIGlmIHRoZSBgYENvbnRlbnQtTGVuZ3RoYGAgaGFzIG5vdCBiZWVuCisgICAgICBwcm92aWRlZCBhbmQgKmRhdGEqIGlzIG5laXRoZXIgYGBOb25lYGAgbm9yIGEgYnl0ZXMgb2JqZWN0LgorICAgICAgRmFsbCBiYWNrIHRvIHVzZSBjaHVua2VkIHRyYW5zZmVyIGVuY29kaW5nIGluc3RlYWQuCiAKIC4uIGNsYXNzOjogT3BlbmVyRGlyZWN0b3IoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdAppbmRleCBiYTcwMWMzLi43ZDMxOTMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QKQEAgLTU3LDE1ICs1Nyw0MSBAQAogICAgICAgU2V0cyB0aGUgdGltZSB0aGUgYGByb2JvdHMudHh0YGAgZmlsZSB3YXMgbGFzdCBmZXRjaGVkIHRvIHRoZSBjdXJyZW50CiAgICAgICB0aW1lLgogCisgICAuLiBtZXRob2Q6OiBjcmF3bF9kZWxheSh1c2VyYWdlbnQpCiAKLVRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgYmFzaWMgdXNlIG9mIHRoZSBSb2JvdEZpbGVQYXJzZXIgY2xhc3MuCisgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgYGBDcmF3bC1kZWxheWBgIHBhcmFtZXRlciBmcm9tIGBgcm9ib3RzLnR4dGBgCisgICAgICBmb3IgdGhlICp1c2VyYWdlbnQqIGluIHF1ZXN0aW9uLiAgSWYgdGhlcmUgaXMgbm8gc3VjaCBwYXJhbWV0ZXIgb3IgaXQKKyAgICAgIGRvZXNuJ3QgYXBwbHkgdG8gdGhlICp1c2VyYWdlbnQqIHNwZWNpZmllZCBvciB0aGUgYGByb2JvdHMudHh0YGAgZW50cnkKKyAgICAgIGZvciB0aGlzIHBhcmFtZXRlciBoYXMgaW52YWxpZCBzeW50YXgsIHJldHVybiBgYE5vbmVgYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgIC4uIG1ldGhvZDo6IHJlcXVlc3RfcmF0ZSh1c2VyYWdlbnQpCisKKyAgICAgIFJldHVybnMgdGhlIGNvbnRlbnRzIG9mIHRoZSBgYFJlcXVlc3QtcmF0ZWBgIHBhcmFtZXRlciBmcm9tCisgICAgICBgYHJvYm90cy50eHRgYCBpbiB0aGUgZm9ybSBvZiBhIDpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAKKyAgICAgIGBgKHJlcXVlc3RzLCBzZWNvbmRzKWBgLiAgSWYgdGhlcmUgaXMgbm8gc3VjaCBwYXJhbWV0ZXIgb3IgaXQgZG9lc24ndAorICAgICAgYXBwbHkgdG8gdGhlICp1c2VyYWdlbnQqIHNwZWNpZmllZCBvciB0aGUgYGByb2JvdHMudHh0YGAgZW50cnkgZm9yIHRoaXMKKyAgICAgIHBhcmFtZXRlciBoYXMgaW52YWxpZCBzeW50YXgsIHJldHVybiBgYE5vbmVgYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBiYXNpYyB1c2Ugb2YgdGhlIDpjbGFzczpgUm9ib3RGaWxlUGFyc2VyYAorY2xhc3M6OgogCiAgICA+Pj4gaW1wb3J0IHVybGxpYi5yb2JvdHBhcnNlcgogICAgPj4+IHJwID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigpCiAgICA+Pj4gcnAuc2V0X3VybCgiaHR0cDovL3d3dy5tdXNpLWNhbC5jb20vcm9ib3RzLnR4dCIpCiAgICA+Pj4gcnAucmVhZCgpCisgICA+Pj4gcnJhdGUgPSBycC5yZXF1ZXN0X3JhdGUoIioiKQorICAgPj4+IHJyYXRlLnJlcXVlc3RzCisgICAzCisgICA+Pj4gcnJhdGUuc2Vjb25kcworICAgMjAKKyAgID4+PiBycC5jcmF3bF9kZWxheSgiKiIpCisgICA2CiAgICA+Pj4gcnAuY2FuX2ZldGNoKCIqIiwgImh0dHA6Ly93d3cubXVzaS1jYWwuY29tL2NnaS1iaW4vc2VhcmNoP2NpdHk9U2FuK0ZyYW5jaXNjbyIpCiAgICBGYWxzZQogICAgPj4+IHJwLmNhbl9mZXRjaCgiKiIsICJodHRwOi8vd3d3Lm11c2ktY2FsLmNvbS8iKQogICAgVHJ1ZQotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS92ZW52LnJzdCBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0CmluZGV4IGFmNGE2ZDEuLjZiZjI2ZmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ZlbnYucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0CkBAIC0zMSw0NCArMzEsNTAgQEAKIAogLi4gX3ZlbnYtZGVmOgogCi0uLiBub3RlOjogQSB2aXJ0dWFsIGVudmlyb25tZW50IChhbHNvIGNhbGxlZCBhIGBgdmVudmBgKSBpcyBhIFB5dGhvbgotICAgZW52aXJvbm1lbnQgc3VjaCB0aGF0IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGxpYnJhcmllcyBhbmQgc2NyaXB0cwotICAgaW5zdGFsbGVkIGludG8gaXQgYXJlIGlzb2xhdGVkIGZyb20gdGhvc2UgaW5zdGFsbGVkIGluIG90aGVyIHZpcnR1YWwKLSAgIGVudmlyb25tZW50cywgYW5kIChieSBkZWZhdWx0KSBhbnkgbGlicmFyaWVzIGluc3RhbGxlZCBpbiBhICJzeXN0ZW0iIFB5dGhvbiwKLSAgIGkuZS4gb25lIHdoaWNoIGlzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHlvdXIgb3BlcmF0aW5nIHN5c3RlbS4KKy4uIG5vdGU6OiBBIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYSBQeXRob24gZW52aXJvbm1lbnQgc3VjaCB0aGF0IHRoZSBQeXRob24KKyAgIGludGVycHJldGVyLCBsaWJyYXJpZXMgYW5kIHNjcmlwdHMgaW5zdGFsbGVkIGludG8gaXQgYXJlIGlzb2xhdGVkIGZyb20gdGhvc2UKKyAgIGluc3RhbGxlZCBpbiBvdGhlciB2aXJ0dWFsIGVudmlyb25tZW50cywgYW5kIChieSBkZWZhdWx0KSBhbnkgbGlicmFyaWVzCisgICBpbnN0YWxsZWQgaW4gYSAic3lzdGVtIiBQeXRob24sIGkuZS4sIG9uZSB3aGljaCBpcyBpbnN0YWxsZWQgYXMgcGFydCBvZiB5b3VyCisgICBvcGVyYXRpbmcgc3lzdGVtLgogCi0gICBBIHZlbnYgaXMgYSBkaXJlY3RvcnkgdHJlZSB3aGljaCBjb250YWlucyBQeXRob24gZXhlY3V0YWJsZSBmaWxlcyBhbmQKLSAgIG90aGVyIGZpbGVzIHdoaWNoIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2ZW52LgorICAgQSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGEgZGlyZWN0b3J5IHRyZWUgd2hpY2ggY29udGFpbnMgUHl0aG9uIGV4ZWN1dGFibGUKKyAgIGZpbGVzIGFuZCBvdGhlciBmaWxlcyB3aGljaCBpbmRpY2F0ZSB0aGF0IGl0IGlzIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KIAogICAgQ29tbW9uIGluc3RhbGxhdGlvbiB0b29scyBzdWNoIGFzIGBgU2V0dXB0b29sc2BgIGFuZCBgYHBpcGBgIHdvcmsgYXMKLSAgIGV4cGVjdGVkIHdpdGggdmVudnMgLSBpLmUuIHdoZW4gYSB2ZW52IGlzIGFjdGl2ZSwgdGhleSBpbnN0YWxsIFB5dGhvbgotICAgcGFja2FnZXMgaW50byB0aGUgdmVudiB3aXRob3V0IG5lZWRpbmcgdG8gYmUgdG9sZCB0byBkbyBzbyBleHBsaWNpdGx5LgorICAgZXhwZWN0ZWQgd2l0aCB2aXJ0dWFsIGVudmlyb25tZW50cy4gSW4gb3RoZXIgd29yZHMsIHdoZW4gYSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCBpcyBhY3RpdmUsIHRoZXkgaW5zdGFsbCBQeXRob24gcGFja2FnZXMgaW50byB0aGUgdmlydHVhbAorICAgZW52aXJvbm1lbnQgd2l0aG91dCBuZWVkaW5nIHRvIGJlIHRvbGQgdG8gZG8gc28gZXhwbGljaXRseS4KIAotICAgV2hlbiBhIHZlbnYgaXMgYWN0aXZlIChpLmUuIHRoZSB2ZW52J3MgUHl0aG9uIGludGVycHJldGVyIGlzIHJ1bm5pbmcpLCB0aGUKLSAgIGF0dHJpYnV0ZXMgOmF0dHI6YHN5cy5wcmVmaXhgIGFuZCA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgYmFzZQotICAgZGlyZWN0b3J5IG9mIHRoZSB2ZW52LCB3aGVyZWFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAotICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgbm9uLXZlbnYgUHl0aG9uIGluc3RhbGxhdGlvbgotICAgd2hpY2ggd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB2ZW52LiBJZiBhIHZlbnYgaXMgbm90IGFjdGl2ZSwgdGhlbgotICAgOmF0dHI6YHN5cy5wcmVmaXhgIGlzIHRoZSBzYW1lIGFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAotICAgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgaXMgdGhlIHNhbWUgYXMgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCAodGhleQotICAgYWxsIHBvaW50IHRvIGEgbm9uLXZlbnYgUHl0aG9uIGluc3RhbGxhdGlvbikuCisgICBXaGVuIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhY3RpdmUgKGkuZS4sIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgUHl0aG9uCisgICBpbnRlcnByZXRlciBpcyBydW5uaW5nKSwgdGhlIGF0dHJpYnV0ZXMgOmF0dHI6YHN5cy5wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCwgd2hlcmVhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIG5vbi12aXJ0dWFsIGVudmlyb25tZW50IFB5dGhvbgorICAgaW5zdGFsbGF0aW9uIHdoaWNoIHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gSWYgYSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCBpcyBub3QgYWN0aXZlLCB0aGVuIDphdHRyOmBzeXMucHJlZml4YCBpcyB0aGUgc2FtZSBhcworICAgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIGlzIHRoZSBzYW1lIGFzCisgICA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgICh0aGV5IGFsbCBwb2ludCB0byBhIG5vbi12aXJ0dWFsIGVudmlyb25tZW50CisgICBQeXRob24gaW5zdGFsbGF0aW9uKS4KIAotICAgV2hlbiBhIHZlbnYgaXMgYWN0aXZlLCBhbnkgb3B0aW9ucyB0aGF0IGNoYW5nZSB0aGUgaW5zdGFsbGF0aW9uIHBhdGggd2lsbCBiZQotICAgaWdub3JlZCBmcm9tIGFsbCBkaXN0dXRpbHMgY29uZmlndXJhdGlvbiBmaWxlcyB0byBwcmV2ZW50IHByb2plY3RzIGJlaW5nCi0gICBpbmFkdmVydGVudGx5IGluc3RhbGxlZCBvdXRzaWRlIG9mIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgV2hlbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYWN0aXZlLCBhbnkgb3B0aW9ucyB0aGF0IGNoYW5nZSB0aGUKKyAgIGluc3RhbGxhdGlvbiBwYXRoIHdpbGwgYmUgaWdub3JlZCBmcm9tIGFsbCBkaXN0dXRpbHMgY29uZmlndXJhdGlvbiBmaWxlcyB0bworICAgcHJldmVudCBwcm9qZWN0cyBiZWluZyBpbmFkdmVydGVudGx5IGluc3RhbGxlZCBvdXRzaWRlIG9mIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudC4KIAotICAgV2hlbiB3b3JraW5nIGluIGEgY29tbWFuZCBzaGVsbCwgdXNlcnMgY2FuIG1ha2UgYSB2ZW52IGFjdGl2ZSBieSBydW5uaW5nIGFuCi0gICBgYGFjdGl2YXRlYGAgc2NyaXB0IGluIHRoZSB2ZW52J3MgZXhlY3V0YWJsZXMgZGlyZWN0b3J5ICh0aGUgcHJlY2lzZSBmaWxlbmFtZQotICAgaXMgc2hlbGwtZGVwZW5kZW50KSwgd2hpY2ggcHJlcGVuZHMgdGhlIHZlbnYncyBkaXJlY3RvcnkgZm9yIGV4ZWN1dGFibGVzIHRvCi0gICB0aGUgYGBQQVRIYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoZSBydW5uaW5nIHNoZWxsLiBUaGVyZSBzaG91bGQgYmUgbm8KLSAgIG5lZWQgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcyB0byBhY3RpdmF0ZSBhIHZlbnYgLS0gc2NyaXB0cyBpbnN0YWxsZWQgaW50bwotICAgdmVudnMgaGF2ZSBhIHNoZWJhbmcgbGluZSB3aGljaCBwb2ludHMgdG8gdGhlIHZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIuIFRoaXMKLSAgIG1lYW5zIHRoYXQgdGhlIHNjcmlwdCB3aWxsIHJ1biB3aXRoIHRoYXQgaW50ZXJwcmV0ZXIgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUKLSAgIG9mIGBgUEFUSGBgLiBPbiBXaW5kb3dzLCBzaGViYW5nIGxpbmUgcHJvY2Vzc2luZyBpcyBzdXBwb3J0ZWQgaWYgeW91IGhhdmUgdGhlCi0gICBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MgaW5zdGFsbGVkICh0aGlzIHdhcyBhZGRlZCB0byBQeXRob24gaW4gMy4zIC0gc2VlCi0gICA6cGVwOmAzOTdgIGZvciBtb3JlIGRldGFpbHMpLiBUaHVzLCBkb3VibGUtY2xpY2tpbmcgYW4gaW5zdGFsbGVkIHNjcmlwdCBpbgotICAgYSBXaW5kb3dzIEV4cGxvcmVyIHdpbmRvdyBzaG91bGQgcnVuIHRoZSBzY3JpcHQgd2l0aCB0aGUgY29ycmVjdCBpbnRlcnByZXRlcgotICAgd2l0aG91dCB0aGVyZSBuZWVkaW5nIHRvIGJlIGFueSByZWZlcmVuY2UgdG8gaXRzIHZlbnYgaW4gYGBQQVRIYGAuCisgICBXaGVuIHdvcmtpbmcgaW4gYSBjb21tYW5kIHNoZWxsLCB1c2VycyBjYW4gbWFrZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgYWN0aXZlCisgICBieSBydW5uaW5nIGFuIGBgYWN0aXZhdGVgYCBzY3JpcHQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBleGVjdXRhYmxlcworICAgZGlyZWN0b3J5ICh0aGUgcHJlY2lzZSBmaWxlbmFtZSBpcyBzaGVsbC1kZXBlbmRlbnQpLCB3aGljaCBwcmVwZW5kcyB0aGUKKyAgIHZpcnR1YWwgZW52aXJvbm1lbnQncyBkaXJlY3RvcnkgZm9yIGV4ZWN1dGFibGVzIHRvIHRoZSBgYFBBVEhgYCBlbnZpcm9ubWVudAorICAgdmFyaWFibGUgZm9yIHRoZSBydW5uaW5nIHNoZWxsLiBUaGVyZSBzaG91bGQgYmUgbm8gbmVlZCBpbiBvdGhlcgorICAgY2lyY3Vtc3RhbmNlcyB0byBhY3RpdmF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnTigJRzY3JpcHRzIGluc3RhbGxlZCBpbnRvCisgICB2aXJ0dWFsIGVudmlyb25tZW50cyBoYXZlIGEgInNoZWJhbmciIGxpbmUgd2hpY2ggcG9pbnRzIHRvIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCdzIFB5dGhvbiBpbnRlcnByZXRlci4gVGhpcyBtZWFucyB0aGF0IHRoZSBzY3JpcHQgd2lsbCBydW4gd2l0aAorICAgdGhhdCBpbnRlcnByZXRlciByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBgYFBBVEhgYC4gT24gV2luZG93cywgInNoZWJhbmciCisgICBsaW5lIHByb2Nlc3NpbmcgaXMgc3VwcG9ydGVkIGlmIHlvdSBoYXZlIHRoZSBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MKKyAgIGluc3RhbGxlZCAodGhpcyB3YXMgYWRkZWQgdG8gUHl0aG9uIGluIDMuMyAtIHNlZSA6cGVwOmAzOTdgIGZvciBtb3JlCisgICBkZXRhaWxzKS4gVGh1cywgZG91YmxlLWNsaWNraW5nIGFuIGluc3RhbGxlZCBzY3JpcHQgaW4gYSBXaW5kb3dzIEV4cGxvcmVyCisgICB3aW5kb3cgc2hvdWxkIHJ1biB0aGUgc2NyaXB0IHdpdGggdGhlIGNvcnJlY3QgaW50ZXJwcmV0ZXIgd2l0aG91dCB0aGVyZQorICAgbmVlZGluZyB0byBiZSBhbnkgcmVmZXJlbmNlIHRvIGl0cyB2aXJ0dWFsIGVudmlyb25tZW50IGluIGBgUEFUSGBgLgogCiAKIC4uIF92ZW52LWFwaToKQEAgLTgzLDcgKzg5LDggQEAKIGNyZWF0aW9uIGFjY29yZGluZyB0byB0aGVpciBuZWVkcywgdGhlIDpjbGFzczpgRW52QnVpbGRlcmAgY2xhc3MuCiAKIC4uIGNsYXNzOjogRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsIFwKLSAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UpCisgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHVwZ3JhZGU9RmFsc2UsIHdpdGhfcGlwPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0PU5vbmUpCiAKICAgICBUaGUgOmNsYXNzOmBFbnZCdWlsZGVyYCBjbGFzcyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgb24KICAgICBpbnN0YW50aWF0aW9uOgpAQCAtMTA3LDkgKzExNCwxNiBAQAogICAgICAgaW5zdGFsbGVkIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBUaGlzIHVzZXMgOm1vZDpgZW5zdXJlcGlwYCB3aXRoCiAgICAgICB0aGUgYGAtLWRlZmF1bHQtcGlwYGAgb3B0aW9uLgogCisgICAgKiBgYHByb21wdGBgIC0tIGEgU3RyaW5nIHRvIGJlIHVzZWQgYWZ0ZXIgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhY3RpdmF0ZWQKKyAgICAgIChkZWZhdWx0cyB0byBgYE5vbmVgYCB3aGljaCBtZWFucyBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgd291bGQKKyAgICAgIGJlIHVzZWQpLgorCiAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgICBBZGRlZCB0aGUgYGB3aXRoX3BpcGBgIHBhcmFtZXRlcgogCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICAgQWRkZWQgdGhlIGBgcHJvbXB0YGAgcGFyYW1ldGVyCisKIAogICAgIENyZWF0b3JzIG9mIHRoaXJkLXBhcnR5IHZpcnR1YWwgZW52aXJvbm1lbnQgdG9vbHMgd2lsbCBiZSBmcmVlIHRvIHVzZSB0aGUKICAgICBwcm92aWRlZCBgYEVudkJ1aWxkZXJgYCBjbGFzcyBhcyBhIGJhc2UgY2xhc3MuCkBAIC0yMTksNyArMjMzLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoZSBmb2xsb3dpbmcgc2NyaXB0IHNob3dzIGhvdyB0byBleHRlbmQgOmNsYXNzOmBFbnZCdWlsZGVyYCBieSBpbXBsZW1lbnRpbmcgYQotc3ViY2xhc3Mgd2hpY2ggaW5zdGFsbHMgc2V0dXB0b29scyBhbmQgcGlwIGludG8gYSBjcmVhdGVkIHZlbnY6Ogorc3ViY2xhc3Mgd2hpY2ggaW5zdGFsbHMgc2V0dXB0b29scyBhbmQgcGlwIGludG8gYSBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnQ6OgogCiAgICAgaW1wb3J0IG9zCiAgICAgaW1wb3J0IG9zLnBhdGgKQEAgLTIzMywxMiArMjQ3LDEyIEBACiAgICAgY2xhc3MgRXh0ZW5kZWRFbnZCdWlsZGVyKHZlbnYuRW52QnVpbGRlcik6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGJ1aWxkZXIgaW5zdGFsbHMgc2V0dXB0b29scyBhbmQgcGlwIHNvIHRoYXQgeW91IGNhbiBwaXAgb3IKLSAgICAgICAgZWFzeV9pbnN0YWxsIG90aGVyIHBhY2thZ2VzIGludG8gdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQuCisgICAgICAgIGVhc3lfaW5zdGFsbCBvdGhlciBwYWNrYWdlcyBpbnRvIHRoZSBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKICAgICAgICAgOnBhcmFtIG5vZGlzdDogSWYgVHJ1ZSwgc2V0dXB0b29scyBhbmQgcGlwIGFyZSBub3QgaW5zdGFsbGVkIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudC4KICAgICAgICAgOnBhcmFtIG5vcGlwOiBJZiBUcnVlLCBwaXAgaXMgbm90IGluc3RhbGxlZCBpbnRvIHRoZSBjcmVhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KICAgICAgICAgOnBhcmFtIHByb2dyZXNzOiBJZiBzZXR1cHRvb2xzIG9yIHBpcCBhcmUgaW5zdGFsbGVkLCB0aGUgcHJvZ3Jlc3Mgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIGNhbiBiZSBtb25pdG9yZWQgYnkgcGFzc2luZyBhIHByb2dyZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGUuIElmIHNwZWNpZmllZCwgaXQgaXMgY2FsbGVkIHdpdGggdHdvCkBAIC0yNjQsMTAgKzI3OCwxMCBAQAogICAgICAgICBkZWYgcG9zdF9zZXR1cChzZWxmLCBjb250ZXh0KToKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgU2V0IHVwIGFueSBwYWNrYWdlcyB3aGljaCBuZWVkIHRvIGJlIHByZS1pbnN0YWxsZWQgaW50byB0aGUKLSAgICAgICAgICAgIGVudmlyb25tZW50IGJlaW5nIGNyZWF0ZWQuCisgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50IGJlaW5nIGNyZWF0ZWQuCiAKLSAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgb3MuZW52aXJvblsnVklSVFVBTF9FTlYnXSA9IGNvbnRleHQuZW52X2RpcgogICAgICAgICAgICAgaWYgbm90IHNlbGYubm9kaXN0OgpAQCAtMzAxLDcgKzMxNSw3IEBACiAgICAgICAgICAgICBmbiA9IG9zLnBhdGguc3BsaXQocGF0aClbLTFdCiAgICAgICAgICAgICBiaW5wYXRoID0gY29udGV4dC5iaW5fcGF0aAogICAgICAgICAgICAgZGlzdHBhdGggPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgZm4pCi0gICAgICAgICAgICAjIERvd25sb2FkIHNjcmlwdCBpbnRvIHRoZSBlbnYncyBiaW5hcmllcyBmb2xkZXIKKyAgICAgICAgICAgICMgRG93bmxvYWQgc2NyaXB0IGludG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBiaW5hcmllcyBmb2xkZXIKICAgICAgICAgICAgIHVybHJldHJpZXZlKHVybCwgZGlzdHBhdGgpCiAgICAgICAgICAgICBwcm9ncmVzcyA9IHNlbGYucHJvZ3Jlc3MKICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZToKQEAgLTMxMyw3ICszMjcsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJbnN0YWxsaW5nICVzIC4uLiVzJyAlIChuYW1lLCB0ZXJtKSkKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgICAgICMgSW5zdGFsbCBpbiB0aGUgZW52CisgICAgICAgICAgICAjIEluc3RhbGwgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKICAgICAgICAgICAgIGFyZ3MgPSBbY29udGV4dC5lbnZfZXhlLCBmbl0KICAgICAgICAgICAgIHAgPSBQb3BlbihhcmdzLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsIGN3ZD1iaW5wYXRoKQogICAgICAgICAgICAgdDEgPSBUaHJlYWQodGFyZ2V0PXNlbGYucmVhZGVyLCBhcmdzPShwLnN0ZG91dCwgJ3N0ZG91dCcpKQpAQCAtMzMyLDEwICszNDYsMTAgQEAKIAogICAgICAgICBkZWYgaW5zdGFsbF9zZXR1cHRvb2xzKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBJbnN0YWxsIHNldHVwdG9vbHMgaW4gdGhlIGVudmlyb25tZW50LgorICAgICAgICAgICAgSW5zdGFsbCBzZXR1cHRvb2xzIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgogCi0gICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gcmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHVybCA9ICdodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS9zZXR1cHRvb2xzL2Rvd25sb2Fkcy9lel9zZXR1cC5weScKICAgICAgICAgICAgIHNlbGYuaW5zdGFsbF9zY3JpcHQoY29udGV4dCwgJ3NldHVwdG9vbHMnLCB1cmwpCkBAIC0zNDgsMTAgKzM2MiwxMCBAQAogCiAgICAgICAgIGRlZiBpbnN0YWxsX3BpcChzZWxmLCBjb250ZXh0KToKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgSW5zdGFsbCBwaXAgaW4gdGhlIGVudmlyb25tZW50LgorICAgICAgICAgICAgSW5zdGFsbCBwaXAgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLSAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgdXJsID0gJ2h0dHBzOi8vcmF3LmdpdGh1Yi5jb20vcHlwYS9waXAvbWFzdGVyL2NvbnRyaWIvZ2V0LXBpcC5weScKICAgICAgICAgICAgIHNlbGYuaW5zdGFsbF9zY3JpcHQoY29udGV4dCwgJ3BpcCcsIHVybCkKQEAgLTM3NCw3ICszODgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGFyZ2V0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3Rvcmllcy4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZGlycycsIG1ldGF2YXI9J0VOVl9ESVInLCBuYXJncz0nKycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0EgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXJ0dWFsIGVudmlyb25tZW50LicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5vLXNldHVwdG9vbHMnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdub2Rpc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEb24ndCBpbnN0YWxsIHNldHVwdG9vbHMgb3IgcGlwIGluIHRoZSAiCkBAIC0zOTgsMTQgKzQxMywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgcGxhdGZvcm0uJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2xlYXInLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjbGVhcicsIGhlbHA9J0RlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FscmVhZHkgZXhpc3RzLCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpcnR1YWwgZW52aXJvbm1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSBpZiBpdCBhbHJlYWR5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdHMsIGJlZm9yZSB2aXJ0dWFsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBjcmVhdGlvbi4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS11cGdyYWRlJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXBncmFkZScsIGhlbHA9J1VwZ3JhZGUgdGhlIGVudmlyb25tZW50ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VwZ3JhZGUnLCBoZWxwPSdVcGdyYWRlIHRoZSB2aXJ0dWFsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGRpcmVjdG9yeSB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgdGhpcyB2ZXJzaW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiwgYXNzdW1pbmcgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcyBiZWVuIHVwZ3JhZGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luLXBsYWNlLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXZlcmJvc2UnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2ZXJib3NlJywgaGVscD0nRGlzcGxheSB0aGUgb3V0cHV0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tIHRoZSBzY3JpcHRzIHdoaWNoICcKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdCBiL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAppbmRleCAzN2Y2ODc0Li41YTQyY2M2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CkBAIC0zMDEsNyArMzAxLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi0uLiBmdW5jdGlvbjo6IHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xKQorLi4gZnVuY3Rpb246OiB3YXJuKG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsIHN0YWNrbGV2ZWw9MSwgc291cmNlPU5vbmUpCiAKICAgIElzc3VlIGEgd2FybmluZywgb3IgbWF5YmUgaWdub3JlIGl0IG9yIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoZSAqY2F0ZWdvcnkqCiAgICBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYSB3YXJuaW5nIGNhdGVnb3J5IGNsYXNzIChzZWUgYWJvdmUpOyBpdCBkZWZhdWx0cyB0bwpAQCAtMzE5LDggKzMxOSwxNCBAQAogICAgc291cmNlIG9mIDpmdW5jOmBkZXByZWNhdGlvbmAgaXRzZWxmIChzaW5jZSB0aGUgbGF0dGVyIHdvdWxkIGRlZmVhdCB0aGUgcHVycG9zZQogICAgb2YgdGhlIHdhcm5pbmcgbWVzc2FnZSkuCiAKKyAgICpzb3VyY2UqLCBpZiBzdXBwbGllZCwgaXMgdGhlIGRlc3Ryb3llZCBvYmplY3Qgd2hpY2ggZW1pdHRlZCBhCisgICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgLgogCi0uLiBmdW5jdGlvbjo6IHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpzb3VyY2UqIHBhcmFtZXRlci4KKworCisuLiBmdW5jdGlvbjo6IHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lLCBzb3VyY2U9Tm9uZSkKIAogICAgVGhpcyBpcyBhIGxvdy1sZXZlbCBpbnRlcmZhY2UgdG8gdGhlIGZ1bmN0aW9uYWxpdHkgb2YgOmZ1bmM6YHdhcm5gLCBwYXNzaW5nIGluCiAgICBleHBsaWNpdGx5IHRoZSBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyLCBhbmQgb3B0aW9uYWxseSB0aGUKQEAgLTMzNiw2ICszNDIsMTIgQEAKICAgIHNvdXJjZSBmb3IgbW9kdWxlcyBmb3VuZCBpbiB6aXBmaWxlcyBvciBvdGhlciBub24tZmlsZXN5c3RlbSBpbXBvcnQKICAgIHNvdXJjZXMpLgogCisgICAqc291cmNlKiwgaWYgc3VwcGxpZWQsIGlzIHRoZSBkZXN0cm95ZWQgb2JqZWN0IHdoaWNoIGVtaXR0ZWQgYQorICAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZCB0aGUgKnNvdXJjZSogcGFyYW1ldGVyLgorCiAKIC4uIGZ1bmN0aW9uOjogc2hvd3dhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93aW5yZWcucnN0IGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdAppbmRleCA1MmQ1OTFhLi40OGJkZjE0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93aW5yZWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKQEAgLTYzNSw3ICs2MzUsNyBAQAogCiAuLiBkYXRhOjogUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4KIAotICAgQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LgorICAgQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIDpjb25zdDpgUkVHX0RXT1JEYC4KIAogLi4gZGF0YTo6IFJFR19EV09SRF9CSUdfRU5ESUFOCiAKQEAgLTY1OSw2ICs2NTksMTggQEAKIAogICAgTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLgogCisuLiBkYXRhOjogUkVHX1FXT1JECisKKyAgIEEgNjQtYml0IG51bWJlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBSRUdfUVdPUkRfTElUVExFX0VORElBTgorCisgICBBIDY0LWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBSRUdfUVdPUkRgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFJFR19SRVNPVVJDRV9MSVNUCiAKICAgIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2luc291bmQucnN0IGIvRG9jL2xpYnJhcnkvd2luc291bmQucnN0CmluZGV4IGQyYzQyMTAuLjM3MmY3OTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdAorKysgYi9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QKQEAgLTI1LDcgKzI1LDggQEAKIC4uIGZ1bmN0aW9uOjogUGxheVNvdW5kKHNvdW5kLCBmbGFncykKIAogICAgQ2FsbCB0aGUgdW5kZXJseWluZyA6YzpmdW5jOmBQbGF5U291bmRgIGZ1bmN0aW9uIGZyb20gdGhlIFBsYXRmb3JtIEFQSS4gIFRoZQotICAgKnNvdW5kKiBwYXJhbWV0ZXIgbWF5IGJlIGEgZmlsZW5hbWUsIGF1ZGlvIGRhdGEgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgLiAgSXRzCisgICAqc291bmQqIHBhcmFtZXRlciBtYXkgYmUgYSBmaWxlbmFtZSwgYSBzeXN0ZW0gc291bmQgYWxpYXMsIGF1ZGlvIGRhdGEgYXMgYQorICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCwgb3IgYGBOb25lYGAuICBJdHMKICAgIGludGVycHJldGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mICpmbGFncyosIHdoaWNoIGNhbiBiZSBhIGJpdHdpc2UgT1JlZAogICAgY29tYmluYXRpb24gb2YgdGhlIGNvbnN0YW50cyBkZXNjcmliZWQgYmVsb3cuIElmIHRoZSAqc291bmQqIHBhcmFtZXRlciBpcwogICAgYGBOb25lYGAsIGFueSBjdXJyZW50bHkgcGxheWluZyB3YXZlZm9ybSBzb3VuZCBpcyBzdG9wcGVkLiBJZiB0aGUgc3lzdGVtCkBAIC0zOSw3ICs0MCw4IEBACiAgICBzb3VuZCB0byBwbGF5OyBwb3NzaWJsZSB2YWx1ZXMgYXJlIGBgLTFgYCwgYGBNQl9JQ09OQVNURVJJU0tgYCwKICAgIGBgTUJfSUNPTkVYQ0xBTUFUSU9OYGAsIGBgTUJfSUNPTkhBTkRgYCwgYGBNQl9JQ09OUVVFU1RJT05gYCwgYW5kIGBgTUJfT0tgYCwgYWxsCiAgICBkZXNjcmliZWQgYmVsb3cuICBUaGUgdmFsdWUgYGAtMWBgIHByb2R1Y2VzIGEgInNpbXBsZSBiZWVwIjsgdGhpcyBpcyB0aGUgZmluYWwKLSAgIGZhbGxiYWNrIGlmIGEgc291bmQgY2Fubm90IGJlIHBsYXllZCBvdGhlcndpc2UuCisgICBmYWxsYmFjayBpZiBhIHNvdW5kIGNhbm5vdCBiZSBwbGF5ZWQgb3RoZXJ3aXNlLiAgSWYgdGhlIHN5c3RlbSBpbmRpY2F0ZXMgYW4KKyAgIGVycm9yLCA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4KIAogCiAuLiBkYXRhOjogU05EX0ZJTEVOQU1FCkBAIC05Miw3ICs5NCw3IEBACiAuLiBkYXRhOjogU05EX01FTU9SWQogCiAgICBUaGUgKnNvdW5kKiBwYXJhbWV0ZXIgdG8gOmZ1bmM6YFBsYXlTb3VuZGAgaXMgYSBtZW1vcnkgaW1hZ2Ugb2YgYSBXQVYgZmlsZSwgYXMgYQotICAgc3RyaW5nLgorICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4KIAogICAgLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0IGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKaW5kZXggYWFkMjdhOC4uYTFkNDQ2OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKQEAgLTEzMyw5ICsxMzMsOSBAQAogICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBlbnZpcm9uLml0ZW1zKCldCiAgICAgICAgICAgcmV0dXJuIHJldAogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBzaW1wbGVfYXBwKQotICAgICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKLSAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgc2ltcGxlX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKKyAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogCiBJbiBhZGRpdGlvbiB0byB0aGUgZW52aXJvbm1lbnQgZnVuY3Rpb25zIGFib3ZlLCB0aGUgOm1vZDpgd3NnaXJlZi51dGlsYCBtb2R1bGUKQEAgLTI4NSwxNCArMjg1LDE0IEBACiAKICAgICAgIGZyb20gd3NnaXJlZi5zaW1wbGVfc2VydmVyIGltcG9ydCBtYWtlX3NlcnZlciwgZGVtb19hcHAKIAotICAgICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgZGVtb19hcHApCi0gICAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIHBvcnQgODAwMC4uLiIpCisgICAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiBwb3J0IDgwMDAuLi4iKQogCi0gICAgICAjIFJlc3BvbmQgdG8gcmVxdWVzdHMgdW50aWwgcHJvY2VzcyBpcyBraWxsZWQKLSAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICAgICMgUmVzcG9uZCB0byByZXF1ZXN0cyB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAorICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCi0gICAgICAjIEFsdGVybmF0aXZlOiBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0Ci0gICAgICBodHRwZC5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgICAgIyBBbHRlcm5hdGl2ZTogc2VydmUgb25lIHJlcXVlc3QsIHRoZW4gZXhpdAorICAgICAgICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkKIAogCiAuLiBmdW5jdGlvbjo6IGRlbW9fYXBwKGVudmlyb24sIHN0YXJ0X3Jlc3BvbnNlKQpAQCAtNDMyLDkgKzQzMiw5IEBACiAgICAgICAjIFRoaXMgaXMgdGhlIGFwcGxpY2F0aW9uIHdyYXBwZWQgaW4gYSB2YWxpZGF0b3IKICAgICAgIHZhbGlkYXRvcl9hcHAgPSB2YWxpZGF0b3Ioc2ltcGxlX2FwcCkKIAotICAgICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgdmFsaWRhdG9yX2FwcCkKLSAgICAgIHByaW50KCJMaXN0ZW5pbmcgb24gcG9ydCA4MDAwLi4uLiIpCi0gICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHZhbGlkYXRvcl9hcHApIGFzIGh0dHBkOgorICAgICAgICAgIHByaW50KCJMaXN0ZW5pbmcgb24gcG9ydCA4MDAwLi4uLiIpCisgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKIAogOm1vZDpgd3NnaXJlZi5oYW5kbGVyc2AgLS0gc2VydmVyL2dhdGV3YXkgYmFzZSBjbGFzc2VzCkBAIC03NzQsOCArNzc0LDggQEAKICAgICAgICAjIFRoZSByZXR1cm5lZCBvYmplY3QgaXMgZ29pbmcgdG8gYmUgcHJpbnRlZAogICAgICAgIHJldHVybiBbYiJIZWxsbyBXb3JsZCJdCiAKLSAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGhlbGxvX3dvcmxkX2FwcCkKLSAgIHByaW50KCJTZXJ2aW5nIG9uIHBvcnQgODAwMC4uLiIpCisgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBoZWxsb193b3JsZF9hcHApIGFzIGh0dHBkOgorICAgICAgIHByaW50KCJTZXJ2aW5nIG9uIHBvcnQgODAwMC4uLiIpCiAKLSAgICMgU2VydmUgdW50aWwgcHJvY2VzcyBpcyBraWxsZWQKLSAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICMgU2VydmUgdW50aWwgcHJvY2VzcyBpcyBraWxsZWQKKyAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKaW5kZXggZTc5MTZkMi4uNDhkNWE2ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKQEAgLTg4LDkgKzg4LDEzIEBACiAgICArPT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwogICAgfCBgYGJvb2xlYW5gYCAgICAgICAgICB8IDpjbGFzczpgYm9vbGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgaW50YGAgb3IgYGBpNGBgICAgIHwgOmNsYXNzOmBpbnRgIGluIHJhbmdlIGZyb20gLTIxNDc0ODM2NDggdG8gMjE0NzQ4MzY0Ny4gfAorICAgfCBgYGludGBgLCBgYGkxYGAsICAgICB8IDpjbGFzczpgaW50YCBpbiByYW5nZSBmcm9tIC0yMTQ3NDgzNjQ4IHRvIDIxNDc0ODM2NDcuIHwKKyAgIHwgYGBpMmBgLCAgYGBpNGBgLCAgICAgfCBWYWx1ZXMgZ2V0IHRoZSBgYDxpbnQ+YGAgdGFnLiAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgaThgYCBvciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCBgYGJpZ2ludGVnZXJgYCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgZG91YmxlYGAgICAgICAgICAgIHwgOmNsYXNzOmBmbG9hdGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCBgYGRvdWJsZWBgIG9yICAgICAgICB8IDpjbGFzczpgZmxvYXRgLiAgVmFsdWVzIGdldCB0aGUgYGA8ZG91YmxlPmBgIHRhZy4gICAgIHwKKyAgIHwgYGBmbG9hdGBgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYHN0cmluZ2BgICAgICAgICAgICB8IDpjbGFzczpgc3RyYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0xMTQsNiArMTE4LDggQEAKICAgIHwgYGBuaWxgYCAgICAgICAgICAgICAgfCBUaGUgYGBOb25lYGAgY29uc3RhbnQuICBQYXNzaW5nIGlzIGFsbG93ZWQgb25seSBpZiAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgKmFsbG93X25vbmUqIGlzIHRydWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGBiaWdkZWNpbWFsYGAgICAgICAgfCA6Y2xhc3M6YGRlY2ltYWwuRGVjaW1hbGAuICBSZXR1cm5lZCB0eXBlIG9ubHkuICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBUaGlzIGlzIHRoZSBmdWxsIHNldCBvZiBkYXRhIHR5cGVzIHN1cHBvcnRlZCBieSBYTUwtUlBDLiAgTWV0aG9kIGNhbGxzIG1heSBhbHNvCiAgICByYWlzZSBhIHNwZWNpYWwgOmV4YzpgRmF1bHRgIGluc3RhbmNlLCB1c2VkIHRvIHNpZ25hbCBYTUwtUlBDIHNlcnZlciBlcnJvcnMsIG9yCkBAIC0xMzcsNiArMTQzLDEzIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWRkZWQgdGhlICpjb250ZXh0KiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgdHlwZSB0YWdzIHdpdGggcHJlZml4ZXMgKGUuZy4gYGBleDpuaWxgYCkuCisgICAgICBBZGRlZCBzdXBwb3J0IG9mIHVubWFyc2FsbGluZyBhZGRpdGlvbmFsIHR5cGVzIHVzZWQgYnkgQXBhY2hlIFhNTC1SUEMKKyAgICAgIGltcGxlbWVudGF0aW9uIGZvciBudW1lcmljczogYGBpMWBgLCBgYGkyYGAsIGBgaThgYCwgYGBiaWdpbnRlZ2VyYGAsCisgICAgICBgYGZsb2F0YGAgYW5kIGBgYmlnZGVjaW1hbGBgLgorICAgICAgU2VlIGh0dHA6Ly93cy5hcGFjaGUub3JnL3htbHJwYy90eXBlcy5odG1sIGZvciBhIGRlc2NyaXB0aW9uLgorCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0CmluZGV4IDFjNzdlODQuLjA1MTFkZGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0CkBAIC0xNDgsMjkgKzE0OCwyOSBAQAogICAgICAgIHJwY19wYXRocyA9ICgnL1JQQzInLCkKIAogICAgIyBDcmVhdGUgc2VydmVyCi0gICBzZXJ2ZXIgPSBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcj1SZXF1ZXN0SGFuZGxlcikKLSAgIHNlcnZlci5yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2Z1bmN0aW9ucygpCisgICB3aXRoIFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhhbmRsZXI9UmVxdWVzdEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW50cm9zcGVjdGlvbl9mdW5jdGlvbnMoKQogCi0gICAjIFJlZ2lzdGVyIHBvdygpIGZ1bmN0aW9uOyB0aGlzIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZgotICAgIyBwb3cuX19uYW1lX18gYXMgdGhlIG5hbWUsIHdoaWNoIGlzIGp1c3QgJ3BvdycuCi0gICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQorICAgICAgICMgUmVnaXN0ZXIgcG93KCkgZnVuY3Rpb247IHRoaXMgd2lsbCB1c2UgdGhlIHZhbHVlIG9mCisgICAgICAgIyBwb3cuX19uYW1lX18gYXMgdGhlIG5hbWUsIHdoaWNoIGlzIGp1c3QgJ3BvdycuCisgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKIAotICAgIyBSZWdpc3RlciBhIGZ1bmN0aW9uIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUKLSAgIGRlZiBhZGRlcl9mdW5jdGlvbih4LHkpOgotICAgICAgIHJldHVybiB4ICsgeQotICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGFkZGVyX2Z1bmN0aW9uLCAnYWRkJykKKyAgICAgICAjIFJlZ2lzdGVyIGEgZnVuY3Rpb24gdW5kZXIgYSBkaWZmZXJlbnQgbmFtZQorICAgICAgIGRlZiBhZGRlcl9mdW5jdGlvbih4LHkpOgorICAgICAgICAgICByZXR1cm4geCArIHkKKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24oYWRkZXJfZnVuY3Rpb24sICdhZGQnKQogCi0gICAjIFJlZ2lzdGVyIGFuIGluc3RhbmNlOyBhbGwgdGhlIG1ldGhvZHMgb2YgdGhlIGluc3RhbmNlIGFyZQotICAgIyBwdWJsaXNoZWQgYXMgWE1MLVJQQyBtZXRob2RzIChpbiB0aGlzIGNhc2UsIGp1c3QgJ211bCcpLgotICAgY2xhc3MgTXlGdW5jczoKLSAgICAgICBkZWYgbXVsKHNlbGYsIHgsIHkpOgotICAgICAgICAgICByZXR1cm4geCAqIHkKKyAgICAgICAjIFJlZ2lzdGVyIGFuIGluc3RhbmNlOyBhbGwgdGhlIG1ldGhvZHMgb2YgdGhlIGluc3RhbmNlIGFyZQorICAgICAgICMgcHVibGlzaGVkIGFzIFhNTC1SUEMgbWV0aG9kcyAoaW4gdGhpcyBjYXNlLCBqdXN0ICdtdWwnKS4KKyAgICAgICBjbGFzcyBNeUZ1bmNzOgorICAgICAgICAgICBkZWYgbXVsKHNlbGYsIHgsIHkpOgorICAgICAgICAgICAgICAgcmV0dXJuIHggKiB5CiAKLSAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShNeUZ1bmNzKCkpCisgICAgICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKE15RnVuY3MoKSkKIAotICAgIyBSdW4gdGhlIHNlcnZlcidzIG1haW4gbG9vcAotICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICMgUnVuIHRoZSBzZXJ2ZXIncyBtYWluIGxvb3AKKyAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIFRoZSBmb2xsb3dpbmcgY2xpZW50IGNvZGUgd2lsbCBjYWxsIHRoZSBtZXRob2RzIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBwcmVjZWRpbmcKIHNlcnZlcjo6CkBAIC0yMDcsMTggKzIwNywxNyBAQAogICAgICAgICAgICAgZGVmIGdldEN1cnJlbnRUaW1lKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCiAKLSAgICBzZXJ2ZXIgPSBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQotICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfbXVsdGljYWxsX2Z1bmN0aW9ucygpCi0gICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKLSAgICB0cnk6Ci0gICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQotICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKLSAgICAgICAgc3lzLmV4aXQoMCkKKyAgICB3aXRoIFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKSBhcyBzZXJ2ZXI6CisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoRXhhbXBsZVNlcnZpY2UoKSwgYWxsb3dfZG90dGVkX25hbWVzPVRydWUpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKKyAgICAgICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgICAgIHN5cy5leGl0KDApCiAKIFRoaXMgRXhhbXBsZVNlcnZpY2UgZGVtbyBjYW4gYmUgaW52b2tlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdCBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CmluZGV4IDFkNjUyNmMuLmJmNTJmYTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CkBAIC0xNDcsMTAgKzE0NywxMCBAQAogICAgKmNvbXByZXNzaW9uKiBpcyB0aGUgWklQIGNvbXByZXNzaW9uIG1ldGhvZCB0byB1c2Ugd2hlbiB3cml0aW5nIHRoZSBhcmNoaXZlLAogICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCiAgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWA7IHVucmVjb2duaXplZAotICAgdmFsdWVzIHdpbGwgY2F1c2UgOmV4YzpgUnVudGltZUVycm9yYCB0byBiZSByYWlzZWQuICBJZiA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCisgICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB0byBiZSByYWlzZWQuICBJZiA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCiAgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWAgaXMgc3BlY2lmaWVkIGJ1dCB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUKICAgICg6bW9kOmB6bGliYCwgOm1vZDpgYnoyYCBvciA6bW9kOmBsem1hYCkgaXMgbm90IGF2YWlsYWJsZSwgOmV4YzpgUnVudGltZUVycm9yYAotICAgaXMgYWxzbyByYWlzZWQuIFRoZSBkZWZhdWx0IGlzIDpjb25zdDpgWklQX1NUT1JFRGAuICBJZiAqYWxsb3daaXA2NCogaXMKKyAgIGlzIHJhaXNlZC4gVGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBaSVBfU1RPUkVEYC4gIElmICphbGxvd1ppcDY0KiBpcwogICAgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSB6aXBmaWxlIHdpbGwgY3JlYXRlIFpJUCBmaWxlcyB0aGF0IHVzZSB0aGUgWklQNjQKICAgIGV4dGVuc2lvbnMgd2hlbiB0aGUgemlwZmlsZSBpcyBsYXJnZXIgdGhhbiAyIEdpQi4gSWYgaXQgaXMgIGZhbHNlIDptb2Q6YHppcGZpbGVgCiAgICB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBaSVAgZmlsZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMuCkBAIC0xNzksNiArMTc5LDEwIEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB3cml0aW5nIHRvIHVuc2Vla2FibGUgc3RyZWFtcy4KICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYCd4J2BgIG1vZGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBQcmV2aW91c2x5LCBhIHBsYWluIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZCBmb3IgdW5yZWNvZ25pemVkCisgICAgICBjb21wcmVzc2lvbiB2YWx1ZXMuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5jbG9zZSgpCiAKQEAgLTIwNSwxOCArMjA5LDEyIEBACiAgICBSZXR1cm4gYSBsaXN0IG9mIGFyY2hpdmUgbWVtYmVycyBieSBuYW1lLgogCiAKLS4uIGluZGV4OjoKLSAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyB6aXBmaWxlLlppcEZpbGUub3BlbiBtZXRob2QKKy4uIG1ldGhvZDo6IFppcEZpbGUub3BlbihuYW1lLCBtb2RlPSdyJywgcHdkPU5vbmUsICosIGZvcmNlX3ppcDY0PUZhbHNlKQogCi0uLiBtZXRob2Q6OiBaaXBGaWxlLm9wZW4obmFtZSwgbW9kZT0ncicsIHB3ZD1Ob25lKQotCi0gICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgYXMgYSBmaWxlLWxpa2Ugb2JqZWN0IChaaXBFeHRGaWxlKS4gKm5hbWUqCi0gICBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB0aGUgYXJjaGl2ZSwgb3IgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdC4gVGhlCi0gICAqbW9kZSogcGFyYW1ldGVyLCBpZiBpbmNsdWRlZCwgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzogYGAncidgYCAodGhlCi0gICBkZWZhdWx0KSwgYGAnVSdgYCwgb3IgYGAnclUnYGAuIENob29zaW5nIGBgJ1UnYGAgb3IgIGBgJ3JVJ2BgIHdpbGwgZW5hYmxlCi0gICA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBzdXBwb3J0IGluIHRoZSByZWFkLW9ubHkgb2JqZWN0LiAgKnB3ZCogaXMgdGhlCi0gICBwYXNzd29yZCB1c2VkIGZvciBlbmNyeXB0ZWQgZmlsZXMuICBDYWxsaW5nICA6bWV0aDpgLm9wZW5gIG9uIGEgY2xvc2VkCi0gICBaaXBGaWxlIHdpbGwgcmFpc2UgYSAgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIEFjY2VzcyBhIG1lbWJlciBvZiB0aGUgYXJjaGl2ZSBhcyBhIGJpbmFyeSBmaWxlLWxpa2Ugb2JqZWN0LiAgKm5hbWUqCisgICBjYW4gYmUgZWl0aGVyIHRoZSBuYW1lIG9mIGEgZmlsZSB3aXRoaW4gdGhlIGFyY2hpdmUgb3IgYSA6Y2xhc3M6YFppcEluZm9gCisgICBvYmplY3QuICBUaGUgKm1vZGUqIHBhcmFtZXRlciwgaWYgaW5jbHVkZWQsIG11c3QgYmUgYGAncidgYCAodGhlIGRlZmF1bHQpCisgICBvciBgYCd3J2BgLiAgKnB3ZCogaXMgdGhlIHBhc3N3b3JkIHVzZWQgdG8gZGVjcnlwdCBlbmNyeXB0ZWQgWklQIGZpbGVzLgogCiAgICA6bWV0aDpgflppcEZpbGUub3BlbmAgaXMgYWxzbyBhIGNvbnRleHQgbWFuYWdlciBhbmQgdGhlcmVmb3JlIHN1cHBvcnRzIHRoZQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudDo6CkBAIC0yMjUsMTcgKzIyMywyMyBAQAogICAgICAgICAgIHdpdGggbXl6aXAub3BlbignZWdncy50eHQnKSBhcyBteWZpbGU6CiAgICAgICAgICAgICAgIHByaW50KG15ZmlsZS5yZWFkKCkpCiAKLSAgIC4uIG5vdGU6OgorICAgV2l0aCAqbW9kZSogYGAncidgYCB0aGUgZmlsZS1saWtlIG9iamVjdAorICAgKGBgWmlwRXh0RmlsZWBgKSBpcyByZWFkLW9ubHkgYW5kIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKyAgIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAsIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lYCwKKyAgIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lc2AsIDptZXRoOmBfX2l0ZXJfX2AsCisgICA6bWV0aDpgfml0ZXJhdG9yLl9fbmV4dF9fYC4gIFRoZXNlIG9iamVjdHMgY2FuIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZgorICAgdGhlIFppcEZpbGUuCiAKLSAgICAgIFRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIHJlYWQtb25seSBhbmQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotICAgICAgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCwgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVgLAotICAgICAgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVzYCwgOm1ldGg6YF9faXRlcl9fYCwKLSAgICAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gLgorICAgV2l0aCBgYG1vZGU9J3cnYGAsIGEgd3JpdGFibGUgZmlsZSBoYW5kbGUgaXMgcmV0dXJuZWQsIHdoaWNoIHN1cHBvcnRzIHRoZQorICAgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS53cml0ZWAgbWV0aG9kLiAgV2hpbGUgYSB3cml0YWJsZSBmaWxlIGhhbmRsZSBpcyBvcGVuLAorICAgYXR0ZW1wdGluZyB0byByZWFkIG9yIHdyaXRlIG90aGVyIGZpbGVzIGluIHRoZSBaSVAgZmlsZSB3aWxsIHJhaXNlIGEKKyAgIDpleGM6YFZhbHVlRXJyb3JgLgogCi0gICAuLiBub3RlOjoKLQotICAgICAgT2JqZWN0cyByZXR1cm5lZCBieSA6bWV0aDpgLm9wZW5gIGNhbiBvcGVyYXRlIGluZGVwZW5kZW50bHkgb2YgdGhlCi0gICAgICBaaXBGaWxlLgorICAgV2hlbiB3cml0aW5nIGEgZmlsZSwgaWYgdGhlIGZpbGUgc2l6ZSBpcyBub3Qga25vd24gaW4gYWR2YW5jZSBidXQgbWF5IGV4Y2VlZAorICAgMiBHaUIsIHBhc3MgYGBmb3JjZV96aXA2ND1UcnVlYGAgdG8gZW5zdXJlIHRoYXQgdGhlIGhlYWRlciBmb3JtYXQgaXMKKyAgIGNhcGFibGUgb2Ygc3VwcG9ydGluZyBsYXJnZSBmaWxlcy4gIElmIHRoZSBmaWxlIHNpemUgaXMga25vd24gaW4gYWR2YW5jZSwKKyAgIGNvbnN0cnVjdCBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0IHdpdGggOmF0dHI6YH5aaXBJbmZvLmZpbGVfc2l6ZWAgc2V0LCBhbmQKKyAgIHVzZSB0aGF0IGFzIHRoZSAqbmFtZSogcGFyYW1ldGVyLgogCiAgICAuLiBub3RlOjoKIApAQCAtMjQzLDEwICsyNDcsMTkgQEAKICAgICAgIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3QuICBZb3Ugd2lsbCBhcHByZWNpYXRlIHRoaXMgd2hlbiB0cnlpbmcgdG8gcmVhZCBhCiAgICAgICBaSVAgZmlsZSB0aGF0IGNvbnRhaW5zIG1lbWJlcnMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuCiAKLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNCAzLjYKLSAgICAgIFRoZSBgYCdVJ2BgIG9yICBgYCdyVSdgYCBtb2RlLiAgVXNlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZm9yIHJlYWRpbmcKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBSZW1vdmVkIHN1cHBvcnQgb2YgYGBtb2RlPSdVJ2BgLiAgVXNlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZm9yIHJlYWRpbmcKICAgICAgIGNvbXByZXNzZWQgdGV4dCBmaWxlcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOm1ldGg6YG9wZW5gIGNhbiBub3cgYmUgdXNlZCB0byB3cml0ZSBmaWxlcyBpbnRvIHRoZSBhcmNoaXZlIHdpdGggdGhlCisgICAgICBgYG1vZGU9J3cnYGAgb3B0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgLm9wZW5gIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorICAgICAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKKwogLi4gbWV0aG9kOjogWmlwRmlsZS5leHRyYWN0KG1lbWJlciwgcGF0aD1Ob25lLCBwd2Q9Tm9uZSkKIAogICAgRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5OyAqbWVtYmVyKgpAQCAtMjY3LDYgKzI4MCwxMCBAQAogICAgICAgY2hhcmFjdGVycyAoYGA6YGAsIGBgPGBgLCBgYD5gYCwgYGB8YGAsIGBgImBgLCBgYD9gYCwgYW5kIGBgKmBgKQogICAgICAgcmVwbGFjZWQgYnkgdW5kZXJzY29yZSAoYGBfYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgZXh0cmFjdGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5leHRyYWN0YWxsKHBhdGg9Tm9uZSwgbWVtYmVycz1Ob25lLCBwd2Q9Tm9uZSkKIApAQCAtMjgzLDYgKzMwMCwxMCBAQAogICAgICAgZG90cyBgYCIuLiJgYC4gIFRoaXMgbW9kdWxlIGF0dGVtcHRzIHRvIHByZXZlbnQgdGhhdC4KICAgICAgIFNlZSA6bWV0aDpgZXh0cmFjdGAgbm90ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YGV4dHJhY3RhbGxgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUucHJpbnRkaXIoKQogCkBAIC0zMDAsMTggKzMyMSwyNCBAQAogICAgZmlsZSBpbiB0aGUgYXJjaGl2ZSwgb3IgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdC4gIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiBmb3IKICAgIHJlYWQgb3IgYXBwZW5kLiAqcHdkKiBpcyB0aGUgcGFzc3dvcmQgdXNlZCBmb3IgZW5jcnlwdGVkICBmaWxlcyBhbmQsIGlmIHNwZWNpZmllZCwKICAgIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcGFzc3dvcmQgc2V0IHdpdGggOm1ldGg6YHNldHBhc3N3b3JkYC4gIENhbGxpbmcKLSAgIDptZXRoOmByZWFkYCBvbiBhIGNsb3NlZCBaaXBGaWxlICB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4gQ2FsbGluZwogICAgOm1ldGg6YHJlYWRgIG9uIGEgWmlwRmlsZSB0aGF0IHVzZXMgYSBjb21wcmVzc2lvbiBtZXRob2Qgb3RoZXIgdGhhbgogICAgOmNvbnN0OmBaSVBfU1RPUkVEYCwgOmNvbnN0OmBaSVBfREVGTEFURURgLCA6Y29uc3Q6YFpJUF9CWklQMmAgb3IKICAgIDpjb25zdDpgWklQX0xaTUFgIHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4gQW4gZXJyb3Igd2lsbCBhbHNvCiAgICBiZSByYWlzZWQgaWYgdGhlIGNvcnJlc3BvbmRpbmcgY29tcHJlc3Npb24gbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmByZWFkYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4KKyAgICAgIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUudGVzdHppcCgpCiAKICAgIFJlYWQgYWxsIHRoZSBmaWxlcyBpbiB0aGUgYXJjaGl2ZSBhbmQgY2hlY2sgdGhlaXIgQ1JDJ3MgYW5kIGZpbGUgaGVhZGVycy4KLSAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgYmFkIGZpbGUsIG9yIGVsc2UgcmV0dXJuIGBgTm9uZWBgLiBDYWxsaW5nCi0gICA6bWV0aDpgdGVzdHppcGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgYmFkIGZpbGUsIG9yIGVsc2UgcmV0dXJuIGBgTm9uZWBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgdGVzdGZpbGVgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgogCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUud3JpdGUoZmlsZW5hbWUsIGFyY25hbWU9Tm9uZSwgY29tcHJlc3NfdHlwZT1Ob25lKQpAQCAtMzIxLDEwICszNDgsNyBAQAogICAgbGV0dGVyIGFuZCB3aXRoIGxlYWRpbmcgcGF0aCBzZXBhcmF0b3JzIHJlbW92ZWQpLiAgSWYgZ2l2ZW4sICpjb21wcmVzc190eXBlKgogICAgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlICpjb21wcmVzc2lvbiogcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBmb3IKICAgIHRoZSBuZXcgZW50cnkuCi0gICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW4gd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCi0gICA6bWV0aDpgd3JpdGVgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcgIDptZXRoOmB3cml0ZWAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKLSAgIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisgICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW4gd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYC4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTM0MywxNiArMzY3LDE5IEBACiAgICAgICBJZiBgYGFyY25hbWVgYCAob3IgYGBmaWxlbmFtZWBgLCBpZiBgYGFyY25hbWVgYCBpcyAgbm90IGdpdmVuKSBjb250YWlucyBhIG51bGwKICAgICAgIGJ5dGUsIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBhcmNoaXZlIHdpbGwgYmUgdHJ1bmNhdGVkIGF0IHRoZSBudWxsIGJ5dGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmB3cml0ZWAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgb3IKKyAgICAgIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwKKyAgICAgIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCisKIC4uIG1ldGhvZDo6IFppcEZpbGUud3JpdGVzdHIoemluZm9fb3JfYXJjbmFtZSwgZGF0YVssIGNvbXByZXNzX3R5cGVdKQogCiAgICBXcml0ZSB0aGUgc3RyaW5nICpkYXRhKiB0byB0aGUgYXJjaGl2ZTsgKnppbmZvX29yX2FyY25hbWUqIGlzIGVpdGhlciB0aGUgZmlsZQogICAgbmFtZSBpdCB3aWxsIGJlIGdpdmVuIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UuICBJZiBpdCdzCiAgICBhbiBpbnN0YW5jZSwgYXQgbGVhc3QgdGhlIGZpbGVuYW1lLCBkYXRlLCBhbmQgdGltZSBtdXN0IGJlIGdpdmVuLiAgSWYgaXQncyBhCiAgICBuYW1lLCB0aGUgZGF0ZSBhbmQgdGltZSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZS4KLSAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbmVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZwotICAgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCB3aWxsIHJhaXNlIGEKLSAgIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBDYWxsaW5nIDptZXRoOmB3cml0ZXN0cmAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsCi0gICByYWlzZSBhIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisgICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW5lZCB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgLgogCiAgICBJZiBnaXZlbiwgKmNvbXByZXNzX3R5cGUqIG92ZXJyaWRlcyB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqY29tcHJlc3Npb24qCiAgICBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgbmV3IGVudHJ5LCBvciBpbiB0aGUgKnppbmZvX29yX2FyY25hbWUqCkBAIC0zNjgsNiArMzk1LDEyIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlICpjb21wcmVzc190eXBlKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCBvcgorICAgICAgYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LAorICAgICAgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKKwogVGhlIGZvbGxvd2luZyBkYXRhIGF0dHJpYnV0ZXMgYXJlIGFsc28gYXZhaWxhYmxlOgogCiAKQEAgLTQ2NSw3ICs0OTgsMzEgQEAKIDptZXRoOmAuaW5mb2xpc3RgIG1ldGhvZHMgb2YgOmNsYXNzOmBaaXBGaWxlYCBvYmplY3RzLiAgRWFjaCBvYmplY3Qgc3RvcmVzCiBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBtZW1iZXIgb2YgdGhlIFpJUCBhcmNoaXZlLgogCi1JbnN0YW5jZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CitUaGVyZSBpcyBvbmUgY2xhc3NtZXRob2QgdG8gbWFrZSBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UgZm9yIGEgZmlsZXN5c3RlbQorZmlsZToKKworLi4gY2xhc3NtZXRob2Q6OiBaaXBJbmZvLmZyb21fZmlsZShmaWxlbmFtZSwgYXJjbmFtZT1Ob25lKQorCisgICBDb25zdHJ1Y3QgYSA6Y2xhc3M6YFppcEluZm9gIGluc3RhbmNlIGZvciBhIGZpbGUgb24gdGhlIGZpbGVzeXN0ZW0sIGluCisgICBwcmVwYXJhdGlvbiBmb3IgYWRkaW5nIGl0IHRvIGEgemlwIGZpbGUuCisKKyAgICpmaWxlbmFtZSogc2hvdWxkIGJlIHRoZSBwYXRoIHRvIGEgZmlsZSBvciBkaXJlY3Rvcnkgb24gdGhlIGZpbGVzeXN0ZW0uCisKKyAgIElmICphcmNuYW1lKiBpcyBzcGVjaWZpZWQsIGl0IGlzIHVzZWQgYXMgdGhlIG5hbWUgd2l0aGluIHRoZSBhcmNoaXZlLgorICAgSWYgKmFyY25hbWUqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBuYW1lIHdpbGwgYmUgdGhlIHNhbWUgYXMgKmZpbGVuYW1lKiwgYnV0CisgICB3aXRoIGFueSBkcml2ZSBsZXR0ZXIgYW5kIGxlYWRpbmcgcGF0aCBzZXBhcmF0b3JzIHJlbW92ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitJbnN0YW5jZXMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CisKKy4uIG1ldGhvZDo6IFppcEluZm8uaXNfZGlyKCkKKworICAgUmV0dXJuIFRydWUgaWYgdGhpcyBhcmNoaXZlIG1lbWJlciBpcyBhIGRpcmVjdG9yeS4KKworICAgVGhpcyB1c2VzIHRoZSBlbnRyeSdzIG5hbWU6IGRpcmVjdG9yaWVzIHNob3VsZCBhbHdheXMgZW5kIHdpdGggYGAvYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAKIC4uIGF0dHJpYnV0ZTo6IFppcEluZm8uZmlsZW5hbWUKQEAgLTU3NCw0ICs2MzEsNSBAQAogCiAgICBTaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZmlsZS4KIAorCiAuLiBfUEtaSVAgQXBwbGljYXRpb24gTm90ZTogaHR0cHM6Ly9wa3dhcmUuY2FjaGVmbHkubmV0L3dlYmRvY3MvY2FzZXN0dWRpZXMvQVBQTk9URS5UWFQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3psaWIucnN0IGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKaW5kZXggMWRlN2JhZS4uM2Q3NDJhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKQEAgLTQ3LDE0ICs0NywxOSBAQAogICAgICAgcGxhdGZvcm1zLCB1c2UgYGBhZGxlcjMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLgogCiAKLS4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YVssIGxldmVsXSkKKy4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgbGV2ZWw9LTEpCiAKICAgIENvbXByZXNzZXMgdGhlIGJ5dGVzIGluICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLgotICAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgY29udHJvbGxpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOworICAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgb3IgYGAtMWBgIGNvbnRyb2xsaW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsKICAgIGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwgYGA5YGAgaXMgc2xvd2VzdCBhbmQKLSAgIHByb2R1Y2VzIHRoZSBtb3N0LiAgYGAwYGAgaXMgbm8gY29tcHJlc3Npb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDZgYC4KKyAgIHByb2R1Y2VzIHRoZSBtb3N0LiAgYGAwYGAgaXMgbm8gY29tcHJlc3Npb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYC0xYGAKKyAgIChaX0RFRkFVTFRfQ09NUFJFU1NJT04pLiAgWl9ERUZBVUxUX0NPTVBSRVNTSU9OIHJlcHJlc2VudHMgYSBkZWZhdWx0CisgICBjb21wcm9taXNlIGJldHdlZW4gc3BlZWQgYW5kIGNvbXByZXNzaW9uIChjdXJyZW50bHkgZXF1aXZhbGVudCB0byBsZXZlbCA2KS4KICAgIFJhaXNlcyB0aGUgOmV4YzpgZXJyb3JgIGV4Y2VwdGlvbiBpZiBhbnkgZXJyb3Igb2NjdXJzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmxldmVsKiBjYW4gbm93IGJlIHVzZWQgYXMgYSBrZXl3b3JkIHBhcmFtZXRlci4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzb2JqKGxldmVsPS0xLCBtZXRob2Q9REVGTEFURUQsIHdiaXRzPTE1LCBtZW1MZXZlbD04LCBzdHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1lbLCB6ZGljdF0pCiAKQEAgLTEyNCw3ICsxMjksNyBAQAogICAgICAgcGxhdGZvcm1zLCB1c2UgYGBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmZgYC4KIAogCi0uLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YVssIHdiaXRzWywgYnVmc2l6ZV1dKQorLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGEsIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUpCiAKICAgIERlY29tcHJlc3NlcyB0aGUgYnl0ZXMgaW4gKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUKICAgIHVuY29tcHJlc3NlZCBkYXRhLiAgVGhlICp3Yml0cyogcGFyYW1ldGVyIGRlcGVuZHMgb24KQEAgLTE1OSwxNCArMTY0LDE2IEBACiAgICBXaGVuIGRlY29tcHJlc3NpbmcgYSBzdHJlYW0sIHRoZSB3aW5kb3cgc2l6ZSBtdXN0IG5vdCBiZSBzbWFsbGVyCiAgICB0aGFuIHRoZSBzaXplIG9yaWdpbmFsbHkgdXNlZCB0byBjb21wcmVzcyB0aGUgc3RyZWFtOyB1c2luZyBhIHRvby1zbWFsbAogICAgdmFsdWUgbWF5IHJlc3VsdCBpbiBhbiA6ZXhjOmBlcnJvcmAgZXhjZXB0aW9uLiBUaGUgZGVmYXVsdCAqd2JpdHMqIHZhbHVlCi0gICBpcyAxNSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGxhcmdlc3Qgd2luZG93IHNpemUgYW5kIHJlcXVpcmVzIGEgemxpYgotICAgaGVhZGVyIGFuZCB0cmFpbGVyIHRvIGJlIGluY2x1ZGVkLgorICAgY29ycmVzcG9uZHMgdG8gdGhlIGxhcmdlc3Qgd2luZG93IHNpemUgYW5kIHJlcXVpcmVzIGEgemxpYiBoZWFkZXIgYW5kCisgICB0cmFpbGVyIHRvIGJlIGluY2x1ZGVkLgogCiAgICAqYnVmc2l6ZSogaXMgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBkZWNvbXByZXNzZWQgZGF0YS4gIElmCiAgICBtb3JlIHNwYWNlIGlzIHJlcXVpcmVkLCB0aGUgYnVmZmVyIHNpemUgd2lsbCBiZSBpbmNyZWFzZWQgYXMgbmVlZGVkLCBzbyB5b3UKICAgIGRvbid0IGhhdmUgdG8gZ2V0IHRoaXMgdmFsdWUgZXhhY3RseSByaWdodDsgdHVuaW5nIGl0IHdpbGwgb25seSBzYXZlIGEgZmV3IGNhbGxzCi0gICB0byA6YzpmdW5jOmBtYWxsb2NgLiAgVGhlIGRlZmF1bHQgc2l6ZSBpcyAxNjM4NC4KKyAgIHRvIDpjOmZ1bmM6YG1hbGxvY2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqd2JpdHMqIGFuZCAqYnVmc2l6ZSogY2FuIGJlIHVzZWQgYXMga2V5d29yZCBhcmd1bWVudHMuCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzc29iaih3Yml0cz0xNVssIHpkaWN0XSkKIApAQCAtMjUyLDcgKzI1OSw3IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBtZXRob2Q6OiBEZWNvbXByZXNzLmRlY29tcHJlc3MoZGF0YVssIG1heF9sZW5ndGhdKQorLi4gbWV0aG9kOjogRGVjb21wcmVzcy5kZWNvbXByZXNzKGRhdGEsIG1heF9sZW5ndGg9MCkKIAogICAgRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YQogICAgY29ycmVzcG9uZGluZyB0byBhdCBsZWFzdCBwYXJ0IG9mIHRoZSBkYXRhIGluICpzdHJpbmcqLiAgVGhpcyBkYXRhIHNob3VsZCBiZQpAQCAtMjY0LDkgKzI3MSwxMSBAQAogICAgbm8gbG9uZ2VyIHRoYW4gKm1heF9sZW5ndGgqLiBUaGlzIG1heSBtZWFuIHRoYXQgbm90IGFsbCBvZiB0aGUgY29tcHJlc3NlZCBpbnB1dAogICAgY2FuIGJlIHByb2Nlc3NlZDsgYW5kIHVuY29uc3VtZWQgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgYXR0cmlidXRlCiAgICA6YXR0cjpgdW5jb25zdW1lZF90YWlsYC4gVGhpcyBieXRlc3RyaW5nIG11c3QgYmUgcGFzc2VkIHRvIGEgc3Vic2VxdWVudCBjYWxsIHRvCi0gICA6bWV0aDpgZGVjb21wcmVzc2AgaWYgZGVjb21wcmVzc2lvbiBpcyB0byBjb250aW51ZS4gIElmICptYXhfbGVuZ3RoKiBpcyBub3QKLSAgIHN1cHBsaWVkIHRoZW4gdGhlIHdob2xlIGlucHV0IGlzIGRlY29tcHJlc3NlZCwgYW5kIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgIGlzCi0gICBlbXB0eS4KKyAgIDptZXRoOmBkZWNvbXByZXNzYCBpZiBkZWNvbXByZXNzaW9uIGlzIHRvIGNvbnRpbnVlLiAgSWYgKm1heF9sZW5ndGgqIGlzIHplcm8KKyAgIHRoZW4gdGhlIHdob2xlIGlucHV0IGlzIGRlY29tcHJlc3NlZCwgYW5kIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgIGlzIGVtcHR5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKm1heF9sZW5ndGgqIGNhbiBiZSB1c2VkIGFzIGEga2V5d29yZCBhcmd1bWVudC4KIAogCiAuLiBtZXRob2Q6OiBEZWNvbXByZXNzLmZsdXNoKFtsZW5ndGhdKQpkaWZmIC0tZ2l0IGEvRG9jL21ha2UuYmF0IGIvRG9jL21ha2UuYmF0CmluZGV4IDVhYjgwODUuLmRhMWY4NzYgMTAwNjQ0Ci0tLSBhL0RvYy9tYWtlLmJhdAorKysgYi9Eb2MvbWFrZS5iYXQKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBnb3RvIGVuZA0KICkNCiANCi0lU1BISU5YQlVJTEQlIDI+IG51bA0KKyVTUEhJTlhCVUlMRCUgPm51bCAyPiBudWwNCiBpZiBlcnJvcmxldmVsIDkwMDkgKA0KICAgICBlY2hvLg0KICAgICBlY2hvLlRoZSAnc3BoaW54LWJ1aWxkJyBjb21tYW5kIHdhcyBub3QgZm91bmQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBTcGhpbngNCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CmluZGV4IDg4Yjk0ZWEuLjRmYzZhZjAgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CkBAIC00NzEsMTAgKzQ3MSwxMCBAQAogICAgZGVjb3JhdG9yczogYGRlY29yYXRvcmArCiAgICBkZWNvcmF0b3I6ICJAIiBgZG90dGVkX25hbWVgIFsiKCIgW2Bhcmd1bWVudF9saXN0YCBbIiwiXV0gIikiXSBORVdMSU5FCiAgICBkb3R0ZWRfbmFtZTogYGlkZW50aWZpZXJgICgiLiIgYGlkZW50aWZpZXJgKSoKLSAgIHBhcmFtZXRlcl9saXN0OiAoYGRlZnBhcmFtZXRlcmAgIiwiKSoKLSAgICAgICAgICAgICAgICAgOiB8ICIqIiBbYHBhcmFtZXRlcmBdICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiICIqKiIgYHBhcmFtZXRlcmBdCi0gICAgICAgICAgICAgICAgIDogfCAiKioiIGBwYXJhbWV0ZXJgCi0gICAgICAgICAgICAgICAgIDogfCBgZGVmcGFyYW1ldGVyYCBbIiwiXSApCisgICBwYXJhbWV0ZXJfbGlzdDogYGRlZnBhcmFtZXRlcmAgKCIsIiBgZGVmcGFyYW1ldGVyYCkqIFsiLCIgW2BwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc2BdXQorICAgICAgICAgICAgICAgICA6IHwgYHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzYAorICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3M6ICIqIiBbYHBhcmFtZXRlcmBdICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiIFsiKioiIGBwYXJhbWV0ZXJgIFsiLCJdXV0KKyAgICAgICAgICAgICAgICAgICAgICAgICA6IHwgIioqIiBgcGFyYW1ldGVyYCBbIiwiXQogICAgcGFyYW1ldGVyOiBgaWRlbnRpZmllcmAgWyI6IiBgZXhwcmVzc2lvbmBdCiAgICBkZWZwYXJhbWV0ZXI6IGBwYXJhbWV0ZXJgIFsiPSIgYGV4cHJlc3Npb25gXQogICAgZnVuY25hbWU6IGBpZGVudGlmaWVyYApAQCAtNTQ2LDExICs1NDYsMTIgQEAKIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzIG1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyCiBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20ga2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdAogdmFsdWVzLiAgSWYgdGhlIGZvcm0gImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZQotcmVjZWl2aW5nIGFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmCi10aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcgZGljdGlvbmFyeQotcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXcgZW1wdHkgZGljdGlvbmFyeS4KLVBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kCi1tYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy4KK3JlY2VpdmluZyBhbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuCitJZiB0aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcKK29yZGVyZWQgbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhCituZXcgZW1wdHkgbWFwcGluZyBvZiB0aGUgc2FtZSB0eXBlLiAgUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yCisiYGAqaWRlbnRpZmllcmBgIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZAordXNlZCBrZXl3b3JkIGFyZ3VtZW50cy4KIAogLi4gaW5kZXg6OiBwYWlyOiBmdW5jdGlvbjsgYW5ub3RhdGlvbnMKIApAQCAtNjMyLDYgKzYzMywxMSBAQAogZGljdGlvbmFyeS4gIFRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbAogbmFtZXNwYWNlLgogCitUaGUgb3JkZXIgaW4gd2hpY2ggYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MgYm9keSBpcyBwcmVzZXJ2ZWQKK2luIHRoZSBuZXcgY2xhc3MncyBgYF9fZGljdF9fYGAuICBOb3RlIHRoYXQgdGhpcyBpcyByZWxpYWJsZSBvbmx5IHJpZ2h0CithZnRlciB0aGUgY2xhc3MgaXMgY3JlYXRlZCBhbmQgb25seSBmb3IgY2xhc3NlcyB0aGF0IHdlcmUgZGVmaW5lZCB1c2luZwordGhlIGRlZmluaXRpb24gc3ludGF4LgorCiBDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nIDpyZWY6YG1ldGFjbGFzc2VzIDxtZXRhY2xhc3Nlcz5gLgogCiBDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsIDo6CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKaW5kZXggNjg5NGM3Yy4uMjQ2ZTJlMyAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdApAQCAtNjg2LDEwICs2ODYsMjggQEAKICAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LCBlLmcuLAogICAgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC4KIAorICAgLi4gaW5kZXg6OgorICAgICAgc2luZ2xlOiBfX25hbWVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19kb2NfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19maWxlX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fYW5ub3RhdGlvbnNfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHBhaXI6IG1vZHVsZTsgbmFtZXNwYWNlCisKKyAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOworICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKKyAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCAob3B0aW9uYWwpIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nCisgICA6dGVybTpgdmFyaWFibGUgYW5ub3RhdGlvbnMgPHZhcmlhYmxlIGFubm90YXRpb24+YCBjb2xsZWN0ZWQgZHVyaW5nIG1vZHVsZQorICAgYm9keSBleGVjdXRpb247IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlCisgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AKKyAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIEMgbW9kdWxlcworICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcworICAgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQKKyAgIGxpYnJhcnkgZmlsZS4KKwogICAgLi4gaW5kZXg6OiBzaW5nbGU6IF9fZGljdF9fIChtb2R1bGUgYXR0cmlidXRlKQogCi0gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGFzIGEKLSAgIGRpY3Rpb25hcnkgb2JqZWN0LgorICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgaXMgdGhlIG1vZHVsZSdzCisgICBuYW1lc3BhY2UgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC4KIAogICAgLi4gaW1wbC1kZXRhaWw6OgogCkBAIC02OTgsMjEgKzcxNiw2IEBACiAgICAgICBkaWN0aW9uYXJ5IHN0aWxsIGhhcyBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5CiAgICAgICBvciBrZWVwIHRoZSBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LgogCi0gICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgc2luZ2xlOiBfX2RvY19fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgc2luZ2xlOiBfX2ZpbGVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKLSAgICAgIHBhaXI6IG1vZHVsZTsgbmFtZXNwYWNlCi0KLSAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOwotICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKLSAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZQotICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gCi0gICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyBDIG1vZHVsZXMKLSAgIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMKLSAgIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkCi0gICBsaWJyYXJ5IGZpbGUuCi0KIEN1c3RvbSBjbGFzc2VzCiAgICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWUgc2VjdGlvbgogICAgOnJlZjpgY2xhc3NgKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuCkBAIC03NjEsMTMgKzc2NCwxNyBAQAogICAgICAgc2luZ2xlOiBfX2RpY3RfXyAoY2xhc3MgYXR0cmlidXRlKQogICAgICAgc2luZ2xlOiBfX2Jhc2VzX18gKGNsYXNzIGF0dHJpYnV0ZSkKICAgICAgIHNpbmdsZTogX19kb2NfXyAoY2xhc3MgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2Fubm90YXRpb25zX18gKGNsYXNzIGF0dHJpYnV0ZSkKIAogICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiA6YXR0cjpgfmRlZmluaXRpb24uX19uYW1lX19gIGlzIHRoZSBjbGFzcyBuYW1lOyA6YXR0cjpgX19tb2R1bGVfX2AgaXMKICAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUKICAgIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3MncyBuYW1lc3BhY2U7IDphdHRyOmB+Y2xhc3MuX19iYXNlc19fYCBpcyBhCiAgICB0dXBsZSAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gdGhlCiAgICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7IDphdHRyOmBfX2RvY19fYCBpcyB0aGUKLSAgIGNsYXNzJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkLgorICAgY2xhc3MncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZiB1bmRlZmluZWQ7CisgICA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCAob3B0aW9uYWwpIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nCisgICA6dGVybTpgdmFyaWFibGUgYW5ub3RhdGlvbnMgPHZhcmlhYmxlIGFubm90YXRpb24+YCBjb2xsZWN0ZWQgZHVyaW5nCisgICBjbGFzcyBib2R5IGV4ZWN1dGlvbi4KIAogQ2xhc3MgaW5zdGFuY2VzCiAgICAuLiBpbmRleDo6CkBAIC0xMDYzLDYgKzEwNzAsMTIgQEAKIG9wZXJhdGlvbiByYWlzZSBhbiBleGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5CiA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgb3IgOmV4YzpgVHlwZUVycm9yYCkuCiAKK1NldHRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byBgYE5vbmVgYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29ycmVzcG9uZGluZworb3BlcmF0aW9uIGlzIG5vdCBhdmFpbGFibGUuICBGb3IgZXhhbXBsZSwgaWYgYSBjbGFzcyBzZXRzCis6bWV0aDpgX19pdGVyX19gIHRvIGBgTm9uZWBgLCB0aGUgY2xhc3MgaXMgbm90IGl0ZXJhYmxlLCBzbyBjYWxsaW5nCis6ZnVuYzpgaXRlcmAgb24gaXRzIGluc3RhbmNlcyB3aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCAod2l0aG91dAorZmFsbGluZyBiYWNrIHRvIDptZXRoOmBfX2dldGl0ZW1fX2ApLiBbI11fCisKIFdoZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgaXQgaXMgaW1wb3J0YW50IHRoYXQKIHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgZGVncmVlIHRoYXQgaXQgbWFrZXMgc2Vuc2UgZm9yIHRoZQogb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsIHNvbWUgc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwKQEAgLTEyMzMsOCArMTI0Niw5IEBACiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKQogCi0gICBDYWxsZWQgYnkgdGhlIDpmdW5jOmBmb3JtYXRgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGUKLSAgIDptZXRoOmBzdHIuZm9ybWF0YCBtZXRob2Qgb2YgY2xhc3MgOmNsYXNzOmBzdHJgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCIKKyAgIENhbGxlZCBieSB0aGUgOmZ1bmM6YGZvcm1hdGAgYnVpbHQtaW4gZnVuY3Rpb24sCisgICBhbmQgYnkgZXh0ZW5zaW9uLCBldmFsdWF0aW9uIG9mIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMKKyAgIDxmLXN0cmluZ3M+YCBhbmQgdGhlIDptZXRoOmBzdHIuZm9ybWF0YCBtZXRob2QsIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIgogICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcwogICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgZGVzaXJlZC4KICAgIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwIHRvIHRoZSB0eXBlCkBAIC0xNDkxLDYgKzE1MDUsMTQgQEAKICAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lciBjbGFzcy4KIAogCisuLiBtZXRob2Q6OiBvYmplY3QuX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKQorCisgICBDYWxsZWQgYXQgdGhlIHRpbWUgdGhlIG93bmluZyBjbGFzcyAqb3duZXIqIGlzIGNyZWF0ZWQuIFRoZQorICAgZGVzY3JpcHRvciBoYXMgYmVlbiBhc3NpZ25lZCB0byAqbmFtZSouCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIFRoZSBhdHRyaWJ1dGUgOmF0dHI6YF9fb2JqY2xhc3NfX2AgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlIDptb2Q6YGluc3BlY3RgIG1vZHVsZQogYXMgc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpcwogYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzIGF0dHJpYnV0ZXMpLgpAQCAtMTYyOCwxMSArMTY1MCw1NiBAQAogKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWUgKl9fc2xvdHNfXyouCiAKIAotLi4gX21ldGFjbGFzc2VzOgorLi4gX2NsYXNzLWN1c3RvbWl6YXRpb246CiAKIEN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitXaGVuZXZlciBhIGNsYXNzIGluaGVyaXRzIGZyb20gYW5vdGhlciBjbGFzcywgKl9faW5pdF9zdWJjbGFzc19fKiBpcworY2FsbGVkIG9uIHRoYXQgY2xhc3MuIFRoaXMgd2F5LCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZSBjbGFzc2VzIHdoaWNoCitjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHN1YmNsYXNzZXMuIFRoaXMgaXMgY2xvc2VseSByZWxhdGVkIHRvIGNsYXNzCitkZWNvcmF0b3JzLCBidXQgd2hlcmUgY2xhc3MgZGVjb3JhdG9ycyBvbmx5IGFmZmVjdCB0aGUgc3BlY2lmaWMgY2xhc3MgdGhleSdyZQorYXBwbGllZCB0bywgYGBfX2luaXRfc3ViY2xhc3NfX2BgIHNvbGVseSBhcHBsaWVzIHRvIGZ1dHVyZSBzdWJjbGFzc2VzIG9mIHRoZQorY2xhc3MgZGVmaW5pbmcgdGhlIG1ldGhvZC4KKworLi4gY2xhc3NtZXRob2Q6OiBvYmplY3QuX19pbml0X3N1YmNsYXNzX18oY2xzKQorCisgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbnRhaW5pbmcgY2xhc3MgaXMgc3ViY2xhc3NlZC4KKyAgICpjbHMqIGlzIHRoZW4gdGhlIG5ldyBzdWJjbGFzcy4gSWYgZGVmaW5lZCBhcyBhIG5vcm1hbCBpbnN0YW5jZSBtZXRob2QsCisgICB0aGlzIG1ldGhvZCBpcyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBhIGNsYXNzIG1ldGhvZC4KKworICAgS2V5d29yZCBhcmd1bWVudHMgd2hpY2ggYXJlIGdpdmVuIHRvIGEgbmV3IGNsYXNzIGFyZSBwYXNzZWQgdG8KKyAgIHRoZSBwYXJlbnQncyBjbGFzcyBgYF9faW5pdF9zdWJjbGFzc19fYGAuIEZvciBjb21wYXRpYmlsaXR5IHdpdGgKKyAgIG90aGVyIGNsYXNzZXMgdXNpbmcgYGBfX2luaXRfc3ViY2xhc3NfX2BgLCBvbmUgc2hvdWxkIHRha2Ugb3V0IHRoZQorICAgbmVlZGVkIGtleXdvcmQgYXJndW1lbnRzIGFuZCBwYXNzIHRoZSBvdGhlcnMgb3ZlciB0byB0aGUgYmFzZQorICAgY2xhc3MsIGFzIGluOjoKKworICAgICAgIGNsYXNzIFBoaWxvc29waGVyOgorICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCBkZWZhdWx0X25hbWUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICBjbHMuZGVmYXVsdF9uYW1lID0gZGVmYXVsdF9uYW1lCisKKyAgICAgICBjbGFzcyBBdXN0cmFsaWFuUGhpbG9zb3BoZXIoUGhpbG9zb3BoZXIsIGRlZmF1bHRfbmFtZT0iQnJ1Y2UiKToKKyAgICAgICAgICAgcGFzcworCisgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBgYG9iamVjdC5fX2luaXRfc3ViY2xhc3NfX2BgIGRvZXMKKyAgIG5vdGhpbmcsIGJ1dCByYWlzZXMgYW4gZXJyb3IgaWYgaXQgaXMgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cy4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoZSBtZXRhY2xhc3MgaGludCBgYG1ldGFjbGFzc2BgIGlzIGNvbnN1bWVkIGJ5IHRoZSByZXN0IG9mIHRoZSB0eXBlCisgICAgICBtYWNoaW5lcnksIGFuZCBpcyBuZXZlciBwYXNzZWQgdG8gYGBfX2luaXRfc3ViY2xhc3NfX2BgIGltcGxlbWVudGF0aW9ucy4KKyAgICAgIFRoZSBhY3R1YWwgbWV0YWNsYXNzIChyYXRoZXIgdGhhbiB0aGUgZXhwbGljaXQgaGludCkgY2FuIGJlIGFjY2Vzc2VkIGFzCisgICAgICBgYHR5cGUoY2xzKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBfbWV0YWNsYXNzZXM6CisKK01ldGFjbGFzc2VzCiteXl5eXl5eXl5eXgorCiBCeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyA6ZnVuYzpgdHlwZWAuIFRoZSBjbGFzcyBib2R5IGlzCiBleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlCiByZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuCkBAIC0xNjkwLDcgKzE3NTcsNyBAQAogYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb20gdGhlIGNsYXNzIGRlZmluaXRpb24pLgogCiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBubyBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzcyBuYW1lc3BhY2UKLWlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IDpmdW5jOmBkaWN0YCBpbnN0YW5jZS4KK2lzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IG9yZGVyZWQgbWFwcGluZy4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE3MzQsOSArMTgwMSw5IEBACiBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLgogCiBXaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgYGB0eXBlLl9fbmV3X19gYCwgdGhlIG9iamVjdCBwcm92aWRlZCBhcyB0aGUKLW5hbWVzcGFjZSBwYXJhbWV0ZXIgaXMgY29waWVkIHRvIGEgc3RhbmRhcmQgUHl0aG9uIGRpY3Rpb25hcnkgYW5kIHRoZSBvcmlnaW5hbAotb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGJlY29tZXMgdGhlIDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBhdHRyaWJ1dGUKLW9mIHRoZSBjbGFzcyBvYmplY3QuCituYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIG5ldyBvcmRlcmVkIG1hcHBpbmcgYW5kIHRoZSBvcmlnaW5hbAorb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGlzIHdyYXBwZWQgaW4gYSByZWFkLW9ubHkgcHJveHksIHdoaWNoCitiZWNvbWVzIHRoZSA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgYXR0cmlidXRlIG9mIHRoZSBjbGFzcyBvYmplY3QuCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMDU5LDcgKzIxMjYsNyBAQAogICAgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgQGBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCwgOmZ1bmM6YGRpdm1vZGAsCiAgICA6ZnVuYzpgcG93YCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLCBgYHxgYCkgd2l0aCByZWZsZWN0ZWQKICAgIChzd2FwcGVkKSBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzCi0gICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50CisgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gWyNdXyBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQKICAgIHR5cGVzLiBbI11fIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMKICAgIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gOm1ldGg6YF9fcnN1Yl9fYCBtZXRob2QsIGBgeS5fX3JzdWJfXyh4KWBgCiAgICBpcyBjYWxsZWQgaWYgYGB4Ll9fc3ViX18oeSlgYCByZXR1cm5zICpOb3RJbXBsZW1lbnRlZCouCkBAIC0yNDc1LDYgKzI1NDIsMTcgQEAKICAgIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzbid0IGEgZ29vZCBpZGVhIHRob3VnaCwgc2luY2UgaXQgY2FuCiAgICBsZWFkIHRvIHNvbWUgdmVyeSBzdHJhbmdlIGJlaGF2aW91ciBpZiBpdCBpcyBoYW5kbGVkIGluY29ycmVjdGx5LgogCisuLiBbI10gVGhlIDptZXRoOmBfX2hhc2hfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIDptZXRoOmBfX3JldmVyc2VkX19gLCBhbmQKKyAgIDptZXRoOmBfX2NvbnRhaW5zX19gIG1ldGhvZHMgaGF2ZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGlzOyBvdGhlcnMKKyAgIHdpbGwgc3RpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLCBidXQgbWF5IGRvIHNvIGJ5IHJlbHlpbmcgb24KKyAgIHRoZSBiZWhhdmlvciB0aGF0IGBgTm9uZWBgIGlzIG5vdCBjYWxsYWJsZS4KKworLi4gWyNdICJEb2VzIG5vdCBzdXBwb3J0IiBoZXJlIG1lYW5zIHRoYXQgdGhlIGNsYXNzIGhhcyBubyBzdWNoIG1ldGhvZCwgb3IKKyAgIHRoZSBtZXRob2QgcmV0dXJucyBgYE5vdEltcGxlbWVudGVkYGAuICBEbyBub3Qgc2V0IHRoZSBtZXRob2QgdG8KKyAgIGBgTm9uZWBgIGlmIHlvdSB3YW50IHRvIGZvcmNlIGZhbGxiYWNrIHRvIHRoZSByaWdodCBvcGVyYW5kJ3MgcmVmbGVjdGVkCisgICBtZXRob2QtLXRoYXQgd2lsbCBpbnN0ZWFkIGhhdmUgdGhlIG9wcG9zaXRlIGVmZmVjdCBvZiBleHBsaWNpdGx5CisgICAqYmxvY2tpbmcqIHN1Y2ggZmFsbGJhY2suCisKIC4uIFsjXSBGb3Igb3BlcmFuZHMgb2YgdGhlIHNhbWUgdHlwZSwgaXQgaXMgYXNzdW1lZCB0aGF0IGlmIHRoZSBub24tcmVmbGVjdGVkIG1ldGhvZAogICAgKHN1Y2ggYXMgOm1ldGg6YF9fYWRkX19gKSBmYWlscyB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUKICAgIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC4KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdCBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdAppbmRleCA2NDMwMmI4Li41ZTJjMWM4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CkBAIC0zNiw3ICszNiw3IEBACiAKIFdoZW4gYSBtb2R1bGUgaXMgZmlyc3QgaW1wb3J0ZWQsIFB5dGhvbiBzZWFyY2hlcyBmb3IgdGhlIG1vZHVsZSBhbmQgaWYgZm91bmQsCiBpdCBjcmVhdGVzIGEgbW9kdWxlIG9iamVjdCBbI2ZubW9dXywgaW5pdGlhbGl6aW5nIGl0LiAgSWYgdGhlIG5hbWVkIG1vZHVsZQotY2Fubm90IGJlIGZvdW5kLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgUHl0aG9uIGltcGxlbWVudHMgdmFyaW91cworY2Fubm90IGJlIGZvdW5kLCBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBQeXRob24gaW1wbGVtZW50cyB2YXJpb3VzCiBzdHJhdGVnaWVzIHRvIHNlYXJjaCBmb3IgdGhlIG5hbWVkIG1vZHVsZSB3aGVuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGlzCiBpbnZva2VkLiAgVGhlc2Ugc3RyYXRlZ2llcyBjYW4gYmUgbW9kaWZpZWQgYW5kIGV4dGVuZGVkIGJ5IHVzaW5nIHZhcmlvdXMgaG9va3MKIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbnMgYmVsb3cuCkBAIC0xNjcsNyArMTY3LDcgQEAKIFRoaXMgbmFtZSB3aWxsIGJlIHVzZWQgaW4gdmFyaW91cyBwaGFzZXMgb2YgdGhlIGltcG9ydCBzZWFyY2gsIGFuZCBpdCBtYXkgYmUKIHRoZSBkb3R0ZWQgcGF0aCB0byBhIHN1Ym1vZHVsZSwgZS5nLiBgYGZvby5iYXIuYmF6YGAuICBJbiB0aGlzIGNhc2UsIFB5dGhvbgogZmlyc3QgdHJpZXMgdG8gaW1wb3J0IGBgZm9vYGAsIHRoZW4gYGBmb28uYmFyYGAsIGFuZCBmaW5hbGx5IGBgZm9vLmJhci5iYXpgYC4KLUlmIGFueSBvZiB0aGUgaW50ZXJtZWRpYXRlIGltcG9ydHMgZmFpbCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KK0lmIGFueSBvZiB0aGUgaW50ZXJtZWRpYXRlIGltcG9ydHMgZmFpbCwgYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLgogCiAKIFRoZSBtb2R1bGUgY2FjaGUKQEAgLTE4Niw3ICsxODYsNyBAQAogRHVyaW5nIGltcG9ydCwgdGhlIG1vZHVsZSBuYW1lIGlzIGxvb2tlZCB1cCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGFuZCBpZgogcHJlc2VudCwgdGhlIGFzc29jaWF0ZWQgdmFsdWUgaXMgdGhlIG1vZHVsZSBzYXRpc2Z5aW5nIHRoZSBpbXBvcnQsIGFuZCB0aGUKIHByb2Nlc3MgY29tcGxldGVzLiAgSG93ZXZlciwgaWYgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCB0aGVuIGFuCi06ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIG1pc3NpbmcsIFB5dGhvbiB3aWxsCis6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgbWlzc2luZywgUHl0aG9uIHdpbGwKIGNvbnRpbnVlIHNlYXJjaGluZyBmb3IgdGhlIG1vZHVsZS4KIAogOmRhdGE6YHN5cy5tb2R1bGVzYCBpcyB3cml0YWJsZS4gIERlbGV0aW5nIGEga2V5IG1heSBub3QgZGVzdHJveSB0aGUKQEAgLTE5NCw3ICsxOTQsNyBAQAogYnV0IGl0IHdpbGwgaW52YWxpZGF0ZSB0aGUgY2FjaGUgZW50cnkgZm9yIHRoZSBuYW1lZCBtb2R1bGUsIGNhdXNpbmcKIFB5dGhvbiB0byBzZWFyY2ggYW5ldyBmb3IgdGhlIG5hbWVkIG1vZHVsZSB1cG9uIGl0cyBuZXh0CiBpbXBvcnQuIFRoZSBrZXkgY2FuIGFsc28gYmUgYXNzaWduZWQgdG8gYGBOb25lYGAsIGZvcmNpbmcgdGhlIG5leHQgaW1wb3J0Ci1vZiB0aGUgbW9kdWxlIHRvIHJlc3VsdCBpbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAuCitvZiB0aGUgbW9kdWxlIHRvIHJlc3VsdCBpbiBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYC4KIAogQmV3YXJlIHRob3VnaCwgYXMgaWYgeW91IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1vZHVsZSBvYmplY3QsCiBpbnZhbGlkYXRlIGl0cyBjYWNoZSBlbnRyeSBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBhbmQgdGhlbiByZS1pbXBvcnQgdGhlCkBAIC0yODgsOCArMjg4LDggQEAKIElmIHRoZSBtZXRhIHBhdGggZmluZGVyIGtub3dzIGhvdyB0byBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBhCiBzcGVjIG9iamVjdC4gIElmIGl0IGNhbm5vdCBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBgYE5vbmVgYC4gIElmCiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgcHJvY2Vzc2luZyByZWFjaGVzIHRoZSBlbmQgb2YgaXRzIGxpc3Qgd2l0aG91dCByZXR1cm5pbmcKLWEgc3BlYywgdGhlbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgQW55IG90aGVyIGV4Y2VwdGlvbnMgcmFpc2VkCi1hcmUgc2ltcGx5IHByb3BhZ2F0ZWQgdXAsIGFib3J0aW5nIHRoZSBpbXBvcnQgcHJvY2Vzcy4KK2Egc3BlYywgdGhlbiBhIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIEFueSBvdGhlciBleGNlcHRpb25zCityYWlzZWQgYXJlIHNpbXBseSBwcm9wYWdhdGVkIHVwLCBhYm9ydGluZyB0aGUgaW1wb3J0IHByb2Nlc3MuCiAKIFRoZSA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXIuZmluZF9zcGVjKClgIG1ldGhvZCBvZiBtZXRhIHBhdGgKIGZpbmRlcnMgaXMgY2FsbGVkIHdpdGggdHdvIG9yIHRocmVlIGFyZ3VtZW50cy4gIFRoZSBmaXJzdCBpcyB0aGUgZnVsbHkKQEAgLTI5OCw5ICsyOTgsOSBAQAogdG9wLWxldmVsIG1vZHVsZXMsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYGBOb25lYGAsIGJ1dCBmb3Igc3VibW9kdWxlcyBvcgogc3VicGFja2FnZXMsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJlbnQgcGFja2FnZSdzCiBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLiBJZiB0aGUgYXBwcm9wcmlhdGUgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBjYW5ub3QKLWJlIGFjY2Vzc2VkLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgVGhlIHRoaXJkIGFyZ3VtZW50IGlzIGFuCi1leGlzdGluZyBtb2R1bGUgb2JqZWN0IHRoYXQgd2lsbCBiZSB0aGUgdGFyZ2V0IG9mIGxvYWRpbmcgbGF0ZXIuICBUaGUKLWltcG9ydCBzeXN0ZW0gcGFzc2VzIGluIGEgdGFyZ2V0IG1vZHVsZSBvbmx5IGR1cmluZyByZWxvYWQuCitiZSBhY2Nlc3NlZCwgYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgVGhlIHRoaXJkIGFyZ3VtZW50CitpcyBhbiBleGlzdGluZyBtb2R1bGUgb2JqZWN0IHRoYXQgd2lsbCBiZSB0aGUgdGFyZ2V0IG9mIGxvYWRpbmcgbGF0ZXIuCitUaGUgaW1wb3J0IHN5c3RlbSBwYXNzZXMgaW4gYSB0YXJnZXQgbW9kdWxlIG9ubHkgZHVyaW5nIHJlbG9hZC4KIAogVGhlIG1ldGEgcGF0aCBtYXkgYmUgdHJhdmVyc2VkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNpbmdsZSBpbXBvcnQgcmVxdWVzdC4KIEZvciBleGFtcGxlLCBhc3N1bWluZyBub25lIG9mIHRoZSBtb2R1bGVzIGludm9sdmVkIGhhcyBhbHJlYWR5IGJlZW4gY2FjaGVkLApAQCAtNTU0LDE5ICs1NTQsMzAgQEAKICAgIGRldGFpbHMuCiAKICAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgaW5zdGVhZCBvZiBgYF9fbmFtZV9fYGAgdG8gY2FsY3VsYXRlIGV4cGxpY2l0Ci0gICByZWxhdGl2ZSBpbXBvcnRzIGZvciBtYWluIG1vZHVsZXMsIGFzIGRlZmluZWQgaW4gOnBlcDpgMzY2YC4KKyAgIHJlbGF0aXZlIGltcG9ydHMgZm9yIG1haW4gbW9kdWxlcywgYXMgZGVmaW5lZCBpbiA6cGVwOmAzNjZgLiBJdCBpcworICAgZXhwZWN0ZWQgdG8gaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyBgYF9fc3BlY19fLnBhcmVudGBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIHZhbHVlIG9mIGBgX19wYWNrYWdlX19gYCBpcyBleHBlY3RlZCB0byBiZSB0aGUgc2FtZSBhcworICAgICAgYGBfX3NwZWNfXy5wYXJlbnRgYC4KIAogLi4gYXR0cmlidXRlOjogX19zcGVjX18KIAogICAgVGhlIGBgX19zcGVjX19gYCBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIG1vZHVsZSBzcGVjIHRoYXQgd2FzCi0gICB1c2VkIHdoZW4gaW1wb3J0aW5nIHRoZSBtb2R1bGUuICBUaGlzIGlzIHVzZWQgcHJpbWFyaWx5IGZvcgotICAgaW50cm9zcGVjdGlvbiBhbmQgZHVyaW5nIHJlbG9hZGluZy4gIFNldHRpbmcgYGBfX3NwZWNfX2BgCisgICB1c2VkIHdoZW4gaW1wb3J0aW5nIHRoZSBtb2R1bGUuIFNldHRpbmcgYGBfX3NwZWNfX2BgCiAgICBhcHByb3ByaWF0ZWx5IGFwcGxpZXMgZXF1YWxseSB0byA6cmVmOmBtb2R1bGVzIGluaXRpYWxpemVkIGR1cmluZwogICAgaW50ZXJwcmV0ZXIgc3RhcnR1cCA8cHJvZ3JhbXM+YC4gIFRoZSBvbmUgZXhjZXB0aW9uIGlzIGBgX19tYWluX19gYCwKICAgIHdoZXJlIGBgX19zcGVjX19gYCBpcyA6cmVmOmBzZXQgdG8gTm9uZSBpbiBzb21lIGNhc2VzIDxtYWluX3NwZWM+YC4KIAorICAgV2hlbiBgYF9fcGFja2FnZV9fYGAgaXMgbm90IGRlZmluZWQsIGBgX19zcGVjX18ucGFyZW50YGAgaXMgdXNlZCBhcworICAgYSBmYWxsYmFjay4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYF9fc3BlY19fLnBhcmVudGBgIGlzIHVzZWQgYXMgYSBmYWxsYmFjayB3aGVuIGBgX19wYWNrYWdlX19gYCBpcworICAgICAgbm90IGRlZmluZWQuCisKIC4uIGF0dHJpYnV0ZTo6IF9fcGF0aF9fCiAKICAgIElmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIChlaXRoZXIgcmVndWxhciBvciBuYW1lc3BhY2UpLCB0aGUgbW9kdWxlCkBAIC04NzYsNyArODg3LDcgQEAKIAogVG8gc2VsZWN0aXZlbHkgcHJldmVudCBpbXBvcnQgb2Ygc29tZSBtb2R1bGVzIGZyb20gYSBob29rIGVhcmx5IG9uIHRoZQogbWV0YSBwYXRoIChyYXRoZXIgdGhhbiBkaXNhYmxpbmcgdGhlIHN0YW5kYXJkIGltcG9ydCBzeXN0ZW0gZW50aXJlbHkpLAotaXQgaXMgc3VmZmljaWVudCB0byByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAgZGlyZWN0bHkgZnJvbQoraXQgaXMgc3VmZmljaWVudCB0byByYWlzZSA6ZXhjOmBNb2R1bGVOb0ZvdW5kRXJyb3JgIGRpcmVjdGx5IGZyb20KIDptZXRoOmB+aW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlci5maW5kX3NwZWNgIGluc3RlYWQgb2YgcmV0dXJuaW5nCiBgYE5vbmVgYC4gVGhlIGxhdHRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgbWV0YSBwYXRoIHNlYXJjaCBzaG91bGQgY29udGludWUsCiB3aGlsZSByYWlzaW5nIGFuIGV4Y2VwdGlvbiB0ZXJtaW5hdGVzIGl0IGltbWVkaWF0ZWx5LgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKaW5kZXggMzdmMjVmMS4uYTdjNmE2OCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CkBAIC00MDUsNyArNDA1LDggQEAKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgogICAgc3RyaW5nbGl0ZXJhbDogW2BzdHJpbmdwcmVmaXhgXShgc2hvcnRzdHJpbmdgIHwgYGxvbmdzdHJpbmdgKQotICAgc3RyaW5ncHJlZml4OiAiciIgfCAidSIgfCAiUiIgfCAiVSIKKyAgIHN0cmluZ3ByZWZpeDogInIiIHwgInUiIHwgIlIiIHwgIlUiIHwgImYiIHwgIkYiCisgICAgICAgICAgICAgICA6IHwgImZyIiB8ICJGciIgfCAiZlIiIHwgIkZSIiB8ICJyZiIgfCAickYiIHwgIlJmIiB8ICJSRiIKICAgIHNob3J0c3RyaW5nOiAiJyIgYHNob3J0c3RyaW5naXRlbWAqICInIiB8ICciJyBgc2hvcnRzdHJpbmdpdGVtYCogJyInCiAgICBsb25nc3RyaW5nOiAiJycnIiBgbG9uZ3N0cmluZ2l0ZW1gKiAiJycnIiB8ICciIiInIGBsb25nc3RyaW5naXRlbWAqICciIiInCiAgICBzaG9ydHN0cmluZ2l0ZW06IGBzaG9ydHN0cmluZ2NoYXJgIHwgYHN0cmluZ2VzY2FwZXNlcWAKQEAgLTQ2NCw2ICs0NjUsMTEgQEAKICAgIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsIFB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuCiAgICBTZWUgOnBlcDpgNDE0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAorQSBzdHJpbmcgbGl0ZXJhbCB3aXRoIGBgJ2YnYGAgb3IgYGAnRidgYCBpbiBpdHMgcHJlZml4IGlzIGEKKzpkZm46YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbGA7IHNlZSA6cmVmOmBmLXN0cmluZ3NgLiAgVGhlIGBgJ2YnYGAgbWF5IGJlCitjb21iaW5lZCB3aXRoIGBgJ3InYGAsIGJ1dCBub3Qgd2l0aCBgYCdiJ2BgIG9yIGBgJ3UnYGAsIHRoZXJlZm9yZSByYXcKK2Zvcm1hdHRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSwgYnV0IGZvcm1hdHRlZCBieXRlcyBsaXRlcmFscyBhcmUgbm90LgorCiBJbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZCAoYW5kIGFyZQogcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93IHRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4gIChBCiAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZSBsaXRlcmFsLCBpLmUuIGVpdGhlciBgYCdgYCBvciBgYCJgYC4pCkBAIC01NTQsNiArNTYwLDEwIEBACiBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZgogdW5yZWNvZ25pemVkIGVzY2FwZXMgZm9yIGJ5dGVzIGxpdGVyYWxzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgcHJvZHVjZSBhIERlcHJlY2F0aW9uV2FybmluZy4gIEluCisgICAgICBzb21lIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbiB0aGV5IHdpbGwgYmUgYSBTeW50YXhFcnJvci4KKwogRXZlbiBpbiBhIHJhdyBsaXRlcmFsLCBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCwgYnV0IHRoZQogYmFja3NsYXNoIHJlbWFpbnMgaW4gdGhlIHJlc3VsdDsgZm9yIGV4YW1wbGUsIGBgciJcIiJgYCBpcyBhIHZhbGlkIHN0cmluZwogbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSBkb3VibGUgcXVvdGU7IGBgciJcImBgCkBAIC01ODMsNyArNTkzLDEwNiBAQAogTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBkZWZpbmVkIGF0IHRoZSBzeW50YWN0aWNhbCBsZXZlbCwgYnV0IGltcGxlbWVudGVkIGF0CiBjb21waWxlIHRpbWUuICBUaGUgJysnIG9wZXJhdG9yIG11c3QgYmUgdXNlZCB0byBjb25jYXRlbmF0ZSBzdHJpbmcgZXhwcmVzc2lvbnMKIGF0IHJ1biB0aW1lLiAgQWxzbyBub3RlIHRoYXQgbGl0ZXJhbCBjb25jYXRlbmF0aW9uIGNhbiB1c2UgZGlmZmVyZW50IHF1b3RpbmcKLXN0eWxlcyBmb3IgZWFjaCBjb21wb25lbnQgKGV2ZW4gbWl4aW5nIHJhdyBzdHJpbmdzIGFuZCB0cmlwbGUgcXVvdGVkIHN0cmluZ3MpLgorc3R5bGVzIGZvciBlYWNoIGNvbXBvbmVudCAoZXZlbiBtaXhpbmcgcmF3IHN0cmluZ3MgYW5kIHRyaXBsZSBxdW90ZWQgc3RyaW5ncyksCithbmQgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBtYXkgYmUgY29uY2F0ZW5hdGVkIHdpdGggcGxhaW4gc3RyaW5nIGxpdGVyYWxzLgorCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsCisgICBzaW5nbGU6IGludGVycG9sYXRlZCBzdHJpbmcgbGl0ZXJhbAorICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdHRlZCBsaXRlcmFsCisgICBzaW5nbGU6IHN0cmluZzsgaW50ZXJwb2xhdGVkIGxpdGVyYWwKKyAgIHNpbmdsZTogZi1zdHJpbmcKKy4uIF9mLXN0cmluZ3M6CisKK0Zvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0EgOmRmbjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsYCBvciA6ZGZuOmBmLXN0cmluZ2AgaXMgYSBzdHJpbmcgbGl0ZXJhbAordGhhdCBpcyBwcmVmaXhlZCB3aXRoIGBgJ2YnYGAgb3IgYGAnRidgYC4gIFRoZXNlIHN0cmluZ3MgbWF5IGNvbnRhaW4KK3JlcGxhY2VtZW50IGZpZWxkcywgd2hpY2ggYXJlIGV4cHJlc3Npb25zIGRlbGltaXRlZCBieSBjdXJseSBicmFjZXMgYGB7fWBgLgorV2hpbGUgb3RoZXIgc3RyaW5nIGxpdGVyYWxzIGFsd2F5cyBoYXZlIGEgY29uc3RhbnQgdmFsdWUsIGZvcm1hdHRlZCBzdHJpbmdzCithcmUgcmVhbGx5IGV4cHJlc3Npb25zIGV2YWx1YXRlZCBhdCBydW4gdGltZS4KKworRXNjYXBlIHNlcXVlbmNlcyBhcmUgZGVjb2RlZCBsaWtlIGluIG9yZGluYXJ5IHN0cmluZyBsaXRlcmFscyAoZXhjZXB0IHdoZW4KK2EgbGl0ZXJhbCBpcyBhbHNvIG1hcmtlZCBhcyBhIHJhdyBzdHJpbmcpLiAgQWZ0ZXIgZGVjb2RpbmcsIHRoZSBncmFtbWFyCitmb3IgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgaXM6CisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGZfc3RyaW5nOiAoYGxpdGVyYWxfY2hhcmAgfCAie3siIHwgIn19IiB8IGByZXBsYWNlbWVudF9maWVsZGApKgorICAgcmVwbGFjZW1lbnRfZmllbGQ6ICJ7IiBgZl9leHByZXNzaW9uYCBbIiEiIGBjb252ZXJzaW9uYF0gWyI6IiBgZm9ybWF0X3NwZWNgXSAifSIKKyAgIGZfZXhwcmVzc2lvbjogKGBjb25kaXRpb25hbF9leHByZXNzaW9uYCB8ICIqIiBgb3JfZXhwcmApCisgICAgICAgICAgICAgICA6ICAgKCIsIiBgY29uZGl0aW9uYWxfZXhwcmVzc2lvbmAgfCAiLCIgIioiIGBvcl9leHByYCkqIFsiLCJdCisgICAgICAgICAgICAgICA6IHwgYHlpZWxkX2V4cHJlc3Npb25gCisgICBjb252ZXJzaW9uOiAicyIgfCAiciIgfCAiYSIKKyAgIGZvcm1hdF9zcGVjOiAoYGxpdGVyYWxfY2hhcmAgfCBOVUxMIHwgYHJlcGxhY2VtZW50X2ZpZWxkYCkqCisgICBsaXRlcmFsX2NoYXI6IDxhbnkgY29kZSBwb2ludCBleGNlcHQgInsiLCAifSIgb3IgTlVMTD4KKworVGhlIHBhcnRzIG9mIHRoZSBzdHJpbmcgb3V0c2lkZSBjdXJseSBicmFjZXMgYXJlIHRyZWF0ZWQgbGl0ZXJhbGx5LAorZXhjZXB0IHRoYXQgYW55IGRvdWJsZWQgY3VybHkgYnJhY2VzIGBgJ3t7J2BgIG9yIGBgJ319J2BgIGFyZSByZXBsYWNlZAord2l0aCB0aGUgY29ycmVzcG9uZGluZyBzaW5nbGUgY3VybHkgYnJhY2UuICBBIHNpbmdsZSBvcGVuaW5nIGN1cmx5CiticmFja2V0IGBgJ3snYGAgbWFya3MgYSByZXBsYWNlbWVudCBmaWVsZCwgd2hpY2ggc3RhcnRzIHdpdGggYQorUHl0aG9uIGV4cHJlc3Npb24uICBBZnRlciB0aGUgZXhwcmVzc2lvbiwgdGhlcmUgbWF5IGJlIGEgY29udmVyc2lvbiBmaWVsZCwKK2ludHJvZHVjZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgYGAnISdgYC4gIEEgZm9ybWF0IHNwZWNpZmllciBtYXkgYWxzbworYmUgYXBwZW5kZWQsIGludHJvZHVjZWQgYnkgYSBjb2xvbiBgYCc6J2BgLiAgQSByZXBsYWNlbWVudCBmaWVsZCBlbmRzCit3aXRoIGEgY2xvc2luZyBjdXJseSBicmFja2V0IGBgJ30nYGAuCisKK0V4cHJlc3Npb25zIGluIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgYXJlIHRyZWF0ZWQgbGlrZSByZWd1bGFyCitQeXRob24gZXhwcmVzc2lvbnMgc3Vycm91bmRlZCBieSBwYXJlbnRoZXNlcywgd2l0aCBhIGZldyBleGNlcHRpb25zLgorQW4gZW1wdHkgZXhwcmVzc2lvbiBpcyBub3QgYWxsb3dlZCwgYW5kIGEgOmtleXdvcmQ6YGxhbWJkYWAgZXhwcmVzc2lvbgorbXVzdCBiZSBzdXJyb3VuZGVkIGJ5IGV4cGxpY2l0IHBhcmVudGhlc2VzLiAgUmVwbGFjZW1lbnQgZXhwcmVzc2lvbnMKK2NhbiBjb250YWluIGxpbmUgYnJlYWtzIChlLmcuIGluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncyksIGJ1dCB0aGV5CitjYW5ub3QgY29udGFpbiBjb21tZW50cy4gIEVhY2ggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgaW4gdGhlIGNvbnRleHQKK3doZXJlIHRoZSBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWwgYXBwZWFycywgaW4gb3JkZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0LgorCitJZiBhIGNvbnZlcnNpb24gaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24KK2lzIGNvbnZlcnRlZCBiZWZvcmUgZm9ybWF0dGluZy4gIENvbnZlcnNpb24gYGAnIXMnYGAgY2FsbHMgOmZ1bmM6YHN0cmAgb24KK3RoZSByZXN1bHQsIGBgJyFyJ2BgIGNhbGxzIDpmdW5jOmByZXByYCwgYW5kIGBgJyFhJ2BgIGNhbGxzIDpmdW5jOmBhc2NpaWAuCisKK1RoZSByZXN1bHQgaXMgdGhlbiBmb3JtYXR0ZWQgdXNpbmcgdGhlIDpmdW5jOmBmb3JtYXRgIHByb3RvY29sLiAgVGhlCitmb3JtYXQgc3BlY2lmaWVyIGlzIHBhc3NlZCB0byB0aGUgOm1ldGg6YF9fZm9ybWF0X19gIG1ldGhvZCBvZiB0aGUKK2V4cHJlc3Npb24gb3IgY29udmVyc2lvbiByZXN1bHQuICBBbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkIHdoZW4gdGhlCitmb3JtYXQgc3BlY2lmaWVyIGlzIG9taXR0ZWQuICBUaGUgZm9ybWF0dGVkIHJlc3VsdCBpcyB0aGVuIGluY2x1ZGVkIGluCit0aGUgZmluYWwgdmFsdWUgb2YgdGhlIHdob2xlIHN0cmluZy4KKworVG9wLWxldmVsIGZvcm1hdCBzcGVjaWZpZXJzIG1heSBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMuCitUaGVzZSBuZXN0ZWQgZmllbGRzIG1heSBpbmNsdWRlIHRoZWlyIG93biBjb252ZXJzaW9uIGZpZWxkcyBhbmQKK2Zvcm1hdCBzcGVjaWZpZXJzLCBidXQgbWF5IG5vdCBpbmNsdWRlIG1vcmUgZGVlcGx5LW5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMuCisKK0Zvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgbWF5IGJlIGNvbmNhdGVuYXRlZCwgYnV0IHJlcGxhY2VtZW50IGZpZWxkcworY2Fubm90IGJlIHNwbGl0IGFjcm9zcyBsaXRlcmFscy4KKworU29tZSBleGFtcGxlcyBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzOjoKKworICAgPj4+IG5hbWUgPSAiRnJlZCIKKyAgID4+PiBmIkhlIHNhaWQgaGlzIG5hbWUgaXMge25hbWUhcn0uIgorICAgIkhlIHNhaWQgaGlzIG5hbWUgaXMgJ0ZyZWQnLiIKKyAgID4+PiBmIkhlIHNhaWQgaGlzIG5hbWUgaXMge3JlcHIobmFtZSl9LiIgICMgcmVwcigpIGlzIGVxdWl2YWxlbnQgdG8gIXIKKyAgICJIZSBzYWlkIGhpcyBuYW1lIGlzICdGcmVkJy4iCisgICA+Pj4gd2lkdGggPSAxMAorICAgPj4+IHByZWNpc2lvbiA9IDQKKyAgID4+PiB2YWx1ZSA9IGRlY2ltYWwuRGVjaW1hbCgiMTIuMzQ1NjciKQorICAgPj4+IGYicmVzdWx0OiB7dmFsdWU6e3dpZHRofS57cHJlY2lzaW9ufX0iICAjIG5lc3RlZCBmaWVsZHMKKyAgICdyZXN1bHQ6ICAgICAgMTIuMzUnCisKK0EgY29uc2VxdWVuY2Ugb2Ygc2hhcmluZyB0aGUgc2FtZSBzeW50YXggYXMgcmVndWxhciBzdHJpbmcgbGl0ZXJhbHMgaXMKK3RoYXQgY2hhcmFjdGVycyBpbiB0aGUgcmVwbGFjZW1lbnQgZmllbGRzIG11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlCitxdW90aW5nIHVzZWQgaW4gdGhlIG91dGVyIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbC4gIEFsc28sIGVzY2FwZQorc2VxdWVuY2VzIG5vcm1hbGx5IGFwcGx5IHRvIHRoZSBvdXRlciBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWwsCityYXRoZXIgdGhhbiBpbm5lciBzdHJpbmcgbGl0ZXJhbHM6OgorCisgICBmImFiYyB7YVsieCJdfSBkZWYiICAgICMgZXJyb3I6IG91dGVyIHN0cmluZyBsaXRlcmFsIGVuZGVkIHByZW1hdHVyZWx5CisgICBmImFiYyB7YVtcInhcIl19IGRlZiIgICMgd29ya2Fyb3VuZDogZXNjYXBlIHRoZSBpbm5lciBxdW90ZXMKKyAgIGYiYWJjIHthWyd4J119IGRlZiIgICAgIyB3b3JrYXJvdW5kOiB1c2UgZGlmZmVyZW50IHF1b3RpbmcKKworICAgZiJuZXdsaW5lOiB7b3JkKCdcbicpfSIgICAjIGVycm9yOiBsaXRlcmFsIGxpbmUgYnJlYWsgaW4gaW5uZXIgc3RyaW5nCisgICBmIm5ld2xpbmU6IHtvcmQoJ1xcbicpfSIgICMgd29ya2Fyb3VuZDogZG91YmxlIGVzY2FwaW5nCisgICBmciJuZXdsaW5lOiB7b3JkKCdcbicpfSIgICMgd29ya2Fyb3VuZDogcmF3IG91dGVyIHN0cmluZworCitTZWUgYWxzbyA6cGVwOmA0OThgIGZvciB0aGUgcHJvcG9zYWwgdGhhdCBhZGRlZCBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzLAorYW5kIDptZXRoOmBzdHIuZm9ybWF0YCwgd2hpY2ggdXNlcyBhIHJlbGF0ZWQgZm9ybWF0IHN0cmluZyBtZWNoYW5pc20uCiAKIAogLi4gX251bWJlcnM6CkBAIC02MTIsMjAgKzcyMSwyNCBAQAogSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczoKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgotICAgaW50ZWdlcjogYGRlY2ltYWxpbnRlZ2VyYCB8IGBvY3RpbnRlZ2VyYCB8IGBoZXhpbnRlZ2VyYCB8IGBiaW5pbnRlZ2VyYAotICAgZGVjaW1hbGludGVnZXI6IGBub256ZXJvZGlnaXRgIGBkaWdpdGAqIHwgIjAiKworICAgaW50ZWdlcjogYGRlY2ludGVnZXJgIHwgYGJpbmludGVnZXJgIHwgYG9jdGludGVnZXJgIHwgYGhleGludGVnZXJgCisgICBkZWNpbnRlZ2VyOiBgbm9uemVyb2RpZ2l0YCAoWyJfIl0gYGRpZ2l0YCkqIHwgIjAiKyAoWyJfIl0gIjAiKSoKKyAgIGJpbmludGVnZXI6ICIwIiAoImIiIHwgIkIiKSAoWyJfIl0gYGJpbmRpZ2l0YCkrCisgICBvY3RpbnRlZ2VyOiAiMCIgKCJvIiB8ICJPIikgKFsiXyJdIGBvY3RkaWdpdGApKworICAgaGV4aW50ZWdlcjogIjAiICgieCIgfCAiWCIpIChbIl8iXSBgaGV4ZGlnaXRgKSsKICAgIG5vbnplcm9kaWdpdDogIjEiLi4uIjkiCiAgICBkaWdpdDogIjAiLi4uIjkiCi0gICBvY3RpbnRlZ2VyOiAiMCIgKCJvIiB8ICJPIikgYG9jdGRpZ2l0YCsKLSAgIGhleGludGVnZXI6ICIwIiAoIngiIHwgIlgiKSBgaGV4ZGlnaXRgKwotICAgYmluaW50ZWdlcjogIjAiICgiYiIgfCAiQiIpIGBiaW5kaWdpdGArCisgICBiaW5kaWdpdDogIjAiIHwgIjEiCiAgICBvY3RkaWdpdDogIjAiLi4uIjciCiAgICBoZXhkaWdpdDogYGRpZ2l0YCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIgotICAgYmluZGlnaXQ6ICIwIiB8ICIxIgogCiBUaGVyZSBpcyBubyBsaW1pdCBmb3IgdGhlIGxlbmd0aCBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0IGZyb20gd2hhdCBjYW4gYmUKIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LgogCitVbmRlcnNjb3JlcyBhcmUgaWdub3JlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlIG51bWVyaWMgdmFsdWUgb2YgdGhlIGxpdGVyYWwuICBUaGV5CitjYW4gYmUgdXNlZCB0byBncm91cCBkaWdpdHMgZm9yIGVuaGFuY2VkIHJlYWRhYmlsaXR5LiAgT25lIHVuZGVyc2NvcmUgY2FuIG9jY3VyCitiZXR3ZWVuIGRpZ2l0cywgYW5kIGFmdGVyIGJhc2Ugc3BlY2lmaWVycyBsaWtlIGBgMHhgYC4KKwogTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90IGFsbG93ZWQuIFRoaXMgaXMKIGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIEMtc3R5bGUgb2N0YWwgbGl0ZXJhbHMsIHdoaWNoIFB5dGhvbiB1c2VkIGJlZm9yZSB2ZXJzaW9uCiAzLjAuCkBAIC02MzQsNiArNzQ3LDEwIEBACiAKICAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMQogICAgMyAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgIDBvMzc3ICAgIDB4ZGVhZGJlZWYKKyAgICAgICAgIDEwMF8wMDBfMDAwXzAwMCAgICAgICAgICAgICAgICAgICAwYl8xMTEwXzAxMDEKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIFVuZGVyc2NvcmVzIGFyZSBub3cgYWxsb3dlZCBmb3IgZ3JvdXBpbmcgcHVycG9zZXMgaW4gbGl0ZXJhbHMuCiAKIAogLi4gX2Zsb2F0aW5nOgpAQCAtNjQ1LDIzICs3NjIsMjggQEAKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgogICAgZmxvYXRudW1iZXI6IGBwb2ludGZsb2F0YCB8IGBleHBvbmVudGZsb2F0YAotICAgcG9pbnRmbG9hdDogW2BpbnRwYXJ0YF0gYGZyYWN0aW9uYCB8IGBpbnRwYXJ0YCAiLiIKLSAgIGV4cG9uZW50ZmxvYXQ6IChgaW50cGFydGAgfCBgcG9pbnRmbG9hdGApIGBleHBvbmVudGAKLSAgIGludHBhcnQ6IGBkaWdpdGArCi0gICBmcmFjdGlvbjogIi4iIGBkaWdpdGArCi0gICBleHBvbmVudDogKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gYGRpZ2l0YCsKKyAgIHBvaW50ZmxvYXQ6IFtgZGlnaXRwYXJ0YF0gYGZyYWN0aW9uYCB8IGBkaWdpdHBhcnRgICIuIgorICAgZXhwb25lbnRmbG9hdDogKGBkaWdpdHBhcnRgIHwgYHBvaW50ZmxvYXRgKSBgZXhwb25lbnRgCisgICBkaWdpdHBhcnQ6IGBkaWdpdGAgKFsiXyJdIGBkaWdpdGApKgorICAgZnJhY3Rpb246ICIuIiBgZGlnaXRwYXJ0YAorICAgZXhwb25lbnQ6ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGBkaWdpdHBhcnRgCiAKIE5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZyByYWRpeCAxMC4KIEZvciBleGFtcGxlLCBgYDA3N2UwMTBgYCBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWUgbnVtYmVyIGFzIGBgNzdlMTBgYC4gVGhlCi1hbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZQotZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6OgorYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpcyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuICBBcyBpbgoraW50ZWdlciBsaXRlcmFscywgdW5kZXJzY29yZXMgYXJlIHN1cHBvcnRlZCBmb3IgZGlnaXQgZ3JvdXBpbmcuCiAKLSAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwCitTb21lIGV4YW1wbGVzIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzOjoKKworICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTAgICAgMy4xNF8xNV85MwogCiBOb3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgYGAtMWBgIGlzCiBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciBgYC1gYCBhbmQgdGhlIGxpdGVyYWwKIGBgMWBgLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgVW5kZXJzY29yZXMgYXJlIG5vdyBhbGxvd2VkIGZvciBncm91cGluZyBwdXJwb3NlcyBpbiBsaXRlcmFscy4KKwogCiAuLiBfaW1hZ2luYXJ5OgogCkBAIC02NzEsNyArNzkzLDcgQEAKIEltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczoKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgotICAgaW1hZ251bWJlcjogKGBmbG9hdG51bWJlcmAgfCBgaW50cGFydGApICgiaiIgfCAiSiIpCisgICBpbWFnbnVtYmVyOiAoYGZsb2F0bnVtYmVyYCB8IGBkaWdpdHBhcnRgKSAoImoiIHwgIkoiKQogCiBBbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0IG9mIDAuMC4gIENvbXBsZXgKIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGFzIGEgcGFpciBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFuZCBoYXZlIHRoZSBzYW1lCkBAIC02NzksNyArODAxLDcgQEAKIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byBpdCwgZS5nLiwgYGAoMys0ailgYC4gIFNvbWUgZXhhbXBsZXMgb2YKIGltYWdpbmFyeSBsaXRlcmFsczo6CiAKLSAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAzLjE0ZS0xMGoKKyAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAgMy4xNGUtMTBqICAgMy4xNF8xNV85M2oKIAogCiAuLiBfb3BlcmF0b3JzOgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0IGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CmluZGV4IGQ0MDNjNGQuLjNkYzQ0MTggMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAgICAgOiB8IGBhc3NlcnRfc3RtdGAKICAgICAgICAgICAgICAgOiB8IGBhc3NpZ25tZW50X3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdGAKKyAgICAgICAgICAgICAgOiB8IGBhbm5vdGF0ZWRfYXNzaWdubWVudF9zdG10YAogICAgICAgICAgICAgICA6IHwgYHBhc3Nfc3RtdGAKICAgICAgICAgICAgICAgOiB8IGBkZWxfc3RtdGAKICAgICAgICAgICAgICAgOiB8IGByZXR1cm5fc3RtdGAKQEAgLTg0LDcgKzg1LDcgQEAKICAgIGFzc2lnbm1lbnRfc3RtdDogKGB0YXJnZXRfbGlzdGAgIj0iKSsgKGBzdGFycmVkX2V4cHJlc3Npb25gIHwgYHlpZWxkX2V4cHJlc3Npb25gKQogICAgdGFyZ2V0X2xpc3Q6IGB0YXJnZXRgICgiLCIgYHRhcmdldGApKiBbIiwiXQogICAgdGFyZ2V0OiBgaWRlbnRpZmllcmAKLSAgICAgICAgIDogfCAiKCIgYHRhcmdldF9saXN0YCAiKSIKKyAgICAgICAgIDogfCAiKCIgW2B0YXJnZXRfbGlzdGBdICIpIgogICAgICAgICAgOiB8ICJbIiBbYHRhcmdldF9saXN0YF0gIl0iCiAgICAgICAgICA6IHwgYGF0dHJpYnV0ZXJlZmAKICAgICAgICAgIDogfCBgc3Vic2NyaXB0aW9uYApAQCAtMzEyLDYgKzMxMyw1MCBAQAogYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMgPGF0dHItdGFyZ2V0LW5vdGU+YCBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLgogCiAKKy4uIF9hbm5hc3NpZ246CisKK0Fubm90YXRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgcGFpcjogYW5ub3RhdGVkOyBhc3NpZ25tZW50CisgICBzaW5nbGU6IHN0YXRlbWVudDsgYXNzaWdubWVudCwgYW5ub3RhdGVkCisKK0Fubm90YXRpb24gYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwKK29mIGEgdmFyaWFibGUgb3IgYXR0cmlidXRlIGFubm90YXRpb24gYW5kIGFuIG9wdGlvbmFsIGFzc2lnbm1lbnQgc3RhdGVtZW50OgorCisuLiBwcm9kdWN0aW9ubGlzdDo6CisgICBhbm5vdGF0ZWRfYXNzaWdubWVudF9zdG10OiBgYXVndGFyZ2V0YCAiOiIgYGV4cHJlc3Npb25gIFsiPSIgYGV4cHJlc3Npb25gXQorCitUaGUgZGlmZmVyZW5jZSBmcm9tIG5vcm1hbCA6cmVmOmBhc3NpZ25tZW50YCBpcyB0aGF0IG9ubHkgc2luZ2xlIHRhcmdldCBhbmQKK29ubHkgc2luZ2xlIHJpZ2h0IGhhbmQgc2lkZSB2YWx1ZSBpcyBhbGxvd2VkLgorCitGb3Igc2ltcGxlIG5hbWVzIGFzIGFzc2lnbm1lbnQgdGFyZ2V0cywgaWYgaW4gY2xhc3Mgb3IgbW9kdWxlIHNjb3BlLAordGhlIGFubm90YXRpb25zIGFyZSBldmFsdWF0ZWQgYW5kIHN0b3JlZCBpbiBhIHNwZWNpYWwgY2xhc3Mgb3IgbW9kdWxlCithdHRyaWJ1dGUgOmF0dHI6YF9fYW5ub3RhdGlvbnNfX2AKK3RoYXQgaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgZnJvbSB2YXJpYWJsZSBuYW1lcyAobWFuZ2xlZCBpZiBwcml2YXRlKSB0bworZXZhbHVhdGVkIGFubm90YXRpb25zLiBUaGlzIGF0dHJpYnV0ZSBpcyB3cml0YWJsZSBhbmQgaXMgYXV0b21hdGljYWxseQorY3JlYXRlZCBhdCB0aGUgc3RhcnQgb2YgY2xhc3Mgb3IgbW9kdWxlIGJvZHkgZXhlY3V0aW9uLCBpZiBhbm5vdGF0aW9ucworYXJlIGZvdW5kIHN0YXRpY2FsbHkuCisKK0ZvciBleHByZXNzaW9ucyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIHRoZSBhbm5vdGF0aW9ucyBhcmUgZXZhbHVhdGVkIGlmCitpbiBjbGFzcyBvciBtb2R1bGUgc2NvcGUsIGJ1dCBub3Qgc3RvcmVkLgorCitJZiBhIG5hbWUgaXMgYW5ub3RhdGVkIGluIGEgZnVuY3Rpb24gc2NvcGUsIHRoZW4gdGhpcyBuYW1lIGlzIGxvY2FsIGZvcgordGhhdCBzY29wZS4gQW5ub3RhdGlvbnMgYXJlIG5ldmVyIGV2YWx1YXRlZCBhbmQgc3RvcmVkIGluIGZ1bmN0aW9uIHNjb3Blcy4KKworSWYgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyBwcmVzZW50LCBhbiBhbm5vdGF0ZWQKK2Fzc2lnbm1lbnQgcGVyZm9ybXMgdGhlIGFjdHVhbCBhc3NpZ25tZW50IGJlZm9yZSBldmFsdWF0aW5nIGFubm90YXRpb25zCisod2hlcmUgYXBwbGljYWJsZSkuIElmIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgbm90IHByZXNlbnQgZm9yIGFuIGV4cHJlc3Npb24KK3RhcmdldCwgdGhlbiB0aGUgaW50ZXJwcmV0ZXIgZXZhbHVhdGVzIHRoZSB0YXJnZXQgZXhjZXB0IGZvciB0aGUgbGFzdAorOm1ldGg6YF9fc2V0aXRlbV9fYCBvciA6bWV0aDpgX19zZXRhdHRyX19gIGNhbGwuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MjZgIC0gVmFyaWFibGUgYW5kIGF0dHJpYnV0ZSBhbm5vdGF0aW9uIHN5bnRheAorICAgOnBlcDpgNDg0YCAtIFR5cGUgaGludHMKKworCiAuLiBfYXNzZXJ0OgogCiBUaGUgOmtleXdvcmQ6YGFzc2VydGAgc3RhdGVtZW50CkBAIC04NTksMTEgKzkwNCwxMiBAQAogCiBOYW1lcyBsaXN0ZWQgaW4gYSA6a2V5d29yZDpgZ2xvYmFsYCBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyBmb3JtYWwKIHBhcmFtZXRlcnMgb3IgaW4gYSA6a2V5d29yZDpgZm9yYCBsb29wIGNvbnRyb2wgdGFyZ2V0LCA6a2V5d29yZDpgY2xhc3NgCi1kZWZpbml0aW9uLCBmdW5jdGlvbiBkZWZpbml0aW9uLCBvciA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQuCitkZWZpbml0aW9uLCBmdW5jdGlvbiBkZWZpbml0aW9uLCA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQsIG9yIHZhcmlhYmxlCithbm5vdGF0aW9uLgogCiAuLiBpbXBsLWRldGFpbDo6CiAKLSAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGVuZm9yY2UgdGhlIHR3byByZXN0cmljdGlvbnMsIGJ1dAorICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgZW5mb3JjZSBzb21lIG9mIHRoZXNlIHJlc3RyaWN0aW9uLCBidXQKICAgIHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2UgdGhpcyBmcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlCiAgICB0aGVtIG9yIHNpbGVudGx5IGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS4KIApkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weSBiL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKaW5kZXggNjMxMTI4My4uMjczMTkxYiAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQorKysgYi9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CkBAIC0zNCw3ICszNCw3IEBACiAKIAogSVNTVUVfVVJJID0gJ2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlJXMnCi1TT1VSQ0VfVVJJID0gJ2h0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy41LyVzJworU09VUkNFX1VSSSA9ICdodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuNi8lcycKIAogIyBtb25rZXktcGF0Y2ggcmVTVCBwYXJzZXIgdG8gZGlzYWJsZSBhbHBoYWJldGljIGFuZCByb21hbiBlbnVtZXJhdGVkIGxpc3RzCiBmcm9tIGRvY3V0aWxzLnBhcnNlcnMucnN0LnN0YXRlcyBpbXBvcnQgQm9keQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3JzdGxpbnQucHkgYi9Eb2MvdG9vbHMvcnN0bGludC5weQppbmRleCBkZTc4MDQxLi4yYzE4MTZlIDEwMDc1NQotLS0gYS9Eb2MvdG9vbHMvcnN0bGludC5weQorKysgYi9Eb2MvdG9vbHMvcnN0bGludC5weQpAQCAtOSw4ICs5LDYgQEAKICMgVE9ETzogLSB3cm9uZyB2ZXJzaW9ucyBpbiB2ZXJzaW9uYWRkZWQvY2hhbmdlZAogIyAgICAgICAtIHdyb25nIG1hcmt1cCBhZnRlciB2ZXJzaW9uY2hhbmdlZCBkaXJlY3RpdmUKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgppbmRleCBkYmE5M2JmLi41ZGU1NWEyIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgorKysgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgpAQCAtMjUsNiArMjUsMzAgQEAKIGhvd3RvL2N1cnNlcywsOm1hZ2VudGEsIjI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQgNzp3aGl0ZS4gIFRoZSIKIGhvd3RvL2N1cnNlcywsOmN5YW4sIjI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQgNzp3aGl0ZS4gIFRoZSIKIGhvd3RvL2N1cnNlcywsOndoaXRlLCIyOmdyZWVuLCAzOnllbGxvdywgNDpibHVlLCA1Om1hZ2VudGEsIDY6Y3lhbiwgYW5kIDc6d2hpdGUuICBUaGUiCitob3d0by9pbnN0cnVtZW50YXRpb24sLDo6LHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24scHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDo6LHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmNhbGwsMTU2NjQxMzYwNTAyMjgwICBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpzdGFydCwxNTY2NDEzNjA1MDIyODAgIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDUxODgwNCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1MzI3OTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDU0NjgwNyBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDU2MzM2NyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1NzgzNjUgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTkxNzU3ICBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2MDU1NTYgIGZ1bmN0aW9uLWVudHJ5OiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2MTc0ODIgZnVuY3Rpb24tcmV0dXJuOiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjI5ODE0IGZ1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2NDIyODUgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjU2NzcwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDY2OTcwNyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjg3ODUzICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjEzCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA3MDA3MTkgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDcxOTY0MCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNzMyNTY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjIxCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpjYWxsLDE1NjY0MTM2MDc0NzM3MCBmdW5jdGlvbi1yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6c3RhcnQsMTU2NjQxMzYwNzQ3MzcwIGZ1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4CiBob3d0by9pcGFkZHJlc3MsLDpEQjgsPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCiBob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpEQjg6OjEnKQogaG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCkBAIC0xMDYsNiArMTMwLDEwIEBACiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0ZXAsYVtzdGFydDpzdG9wOnN0ZXBdCiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0b3AsImFbc3RhcnQ6c3RvcCwgaV0iCiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0b3AsYVtzdGFydDpzdG9wOnN0ZXBdCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6dmF0cm9nYXNhYyw+Pj4gY29va2llID0gYid1c2VyOnZhdHJvZ2FzYWMnCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6dmF0cm9nYXNhYywidXNlcjp2YXRyb2dhc2FjLDM0OWNmOTA0NTMzNzY3ZWQyZDc1NTI3OWE4ZGY4NGQwIgorbGlicmFyeS9oYXNobGliLWJsYWtlMiwsOnBvbGljYWphYywiPj4+IGNvbXBhcmVfZGlnZXN0KGIndXNlcjpwb2xpY2FqYWMnLCBzaWcpIgorbGlicmFyeS9oYXNobGliLWJsYWtlMiwsOkxFQUYsImgwMCA9IGJsYWtlMmIoYnVmWzA6TEVBRl9TSVpFXSwgZmFub3V0PUZBTk9VVCwgZGVwdGg9REVQVEgsIgogbGlicmFyeS9odHRwLmNsaWVudCwsOnBvcnQsaG9zdDpwb3J0CiBsaWJyYXJ5L2h0dHAuY29va2llcywsYCwhIyQlJicqKy0uXl9gfH46CiBsaWJyYXJ5L2ltYXBsaWIsLDpNTSwiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKQEAgLTIwNSw3ICsyMzMsOCBAQAogbGlicmFyeS92ZW52LCw6cGFyYW0sIjpwYXJhbSBub2Rpc3Q6IElmIFRydWUsIHNldHVwdG9vbHMgYW5kIHBpcCBhcmUgbm90IGluc3RhbGxlZCBpbnRvIHRoZSIKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gcHJvZ3Jlc3M6IElmIHNldHVwdG9vbHMgb3IgcGlwIGFyZSBpbnN0YWxsZWQsIHRoZSBwcm9ncmVzcyBvZiB0aGUiCiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSwiOnBhcmFtIG5vcGlwOiBJZiBUcnVlLCBwaXAgaXMgbm90IGluc3RhbGxlZCBpbnRvIHRoZSBjcmVhdGVkIgotbGlicmFyeS92ZW52LCw6cGFyYW0sOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKK2xpYnJhcnkvdmVudiwsOnBhcmFtLDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50CitsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpuaWwsZXg6bmlsCiBsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsdXNlcjpwYXNzCiBsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKQEAgLTIzOSw3ICsyNjgsNyBAQAogdXNpbmcvY21kbGluZSwsOm1lc3NhZ2UsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKIHVzaW5nL2NtZGxpbmUsLDptb2R1bGUsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKIHVzaW5nL3VuaXgsLDpQYWNrYWdpbmcsaHR0cHM6Ly9lbi5vcGVuc3VzZS5vcmcvUG9ydGFsOlBhY2thZ2luZwotd2hhdHNuZXcvMi4wLDQxOCw6bGVuLAord2hhdHNuZXcvMi4wLCw6bGVuLAogd2hhdHNuZXcvMi4zLCw6OiwKIHdoYXRzbmV3LzIuMywsOmNvbmZpZywKIHdoYXRzbmV3LzIuMywsOkNyaXRpY2FsLApAQCAtMjcyLDI3ICszMDEsMjcgQEAKIHdoYXRzbmV3LzMuMiwsOmd6LCI+Pj4gd2l0aCB0YXJmaWxlLm9wZW4obmFtZT0nbXlhcmNoaXZlLnRhci5neicsIG1vZGU9J3c6Z3onKSBhcyB0ZjoiCiB3aGF0c25ldy8zLjIsLDpsb2NhdGlvbix6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259CiB3aGF0c25ldy8zLjIsLDpwcmVmaXgsem9wZS1jb25mID0gJHtjdXN0b206cHJlZml4fS9ldGMvem9wZS5jb25mCi13aGF0c25ldy9jaGFuZ2Vsb2csLDpneiwiOiBUYXJGaWxlIG9wZW5lZCB3aXRoIGV4dGVybmFsIGZpbGVvYmogYW5kICIidzpneiIiIG1vZGUgZGlkbid0Igotd2hhdHNuZXcvY2hhbmdlbG9nLCw6OiwiOiBVc2UgIiIxMjcuMC4wLjEiIiBvciAiIjo6MSIiIGluc3RlYWQgb2YgIiJsb2NhbGhvc3QiIiBhcyBtdWNoIGFzIgotbGlicmFyeS90YXJmaWxlLDE0OSw6eHosJ3g6eHonCi1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwyOTAsOnNvbWV0YWcscHJlZml4OnNvbWV0YWcKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6ZmljdGlvbmFsLCI8YWN0b3JzIHhtbG5zOmZpY3Rpb25hbD0iImh0dHA6Ly9jaGFyYWN0ZXJzLmV4YW1wbGUuY29tIiIiCi1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5MYW5jZWxvdDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkFyY2hpZSBMZWFjaDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPlNpciBSb2JpbjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkd1bnRoZXI8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5Db21tYW5kZXIgQ2xlbWVudDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkvdGFyZmlsZSwsOnh6LCd4Onh6JworbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpzb21ldGFnLHByZWZpeDpzb21ldGFnCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmZpY3Rpb25hbCwiPGFjdG9ycyB4bWxuczpmaWN0aW9uYWw9IiJodHRwOi8vY2hhcmFjdGVycy5leGFtcGxlLmNvbSIiIgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+TGFuY2Vsb3Q8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5BcmNoaWUgTGVhY2g8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5TaXIgUm9iaW48L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5HdW50aGVyPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+Q29tbWFuZGVyIENsZW1lbnQ8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CiBsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmFjdG9yLCJmb3IgYWN0b3IgaW4gcm9vdC5maW5kYWxsKCdyZWFsX3BlcnNvbjphY3RvcicsIG5zKToiCiBsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOm5hbWUsIm5hbWUgPSBhY3Rvci5maW5kKCdyZWFsX3BlcnNvbjpuYW1lJywgbnMpIgogbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsImZvciBjaGFyIGluIGFjdG9yLmZpbmRhbGwoJ3JvbGU6Y2hhcmFjdGVyJywgbnMpOiIKLWxpYnJhcnkvemlwYXBwLDMxLDptYWluLCIkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAgLW0gIiJteWFwcDptYWluIiIiCi1saWJyYXJ5L3ppcGFwcCw4Miw6Zm4sImFyZ3VtZW50IHNob3VsZCBoYXZlIHRoZSBmb3JtICIicGtnLm1vZDpmbiIiLCB3aGVyZSAiInBrZy5tb2QiIiBpcyBhIgotbGlicmFyeS96aXBhcHAsMTU1LDpjYWxsYWJsZSwiIiJwa2cubW9kdWxlOmNhbGxhYmxlIiIgYW5kIHRoZSBhcmNoaXZlIHdpbGwgYmUgcnVuIGJ5IGltcG9ydGluZyIKK2xpYnJhcnkvemlwYXBwLCw6bWFpbiwiJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1tICIibXlhcHA6bWFpbiIiIgorbGlicmFyeS96aXBhcHAsLDpmbiwiYXJndW1lbnQgc2hvdWxkIGhhdmUgdGhlIGZvcm0gIiJwa2cubW9kOmZuIiIsIHdoZXJlICIicGtnLm1vZCIiIGlzIGEiCitsaWJyYXJ5L3ppcGFwcCwsOmNhbGxhYmxlLCIiInBrZy5tb2R1bGU6Y2FsbGFibGUiIiBhbmQgdGhlIGFyY2hpdmUgd2lsbCBiZSBydW4gYnkgaW1wb3J0aW5nIgogbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IG1bOjoyXS50b2xpc3QoKQogbGlicmFyeS9zeXMsLGAsIyBgYHdyYXBwZXJgYCBjcmVhdGVzIGEgYGB3cmFwKGNvcm8pYGAgY29yb3V0aW5lOgotdHV0b3JpYWwvdmVudiw3Nyw6YzdiOTY0NWE2ZjM1LCJQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KSIKIHdoYXRzbmV3LzMuNSwsOnJvb3QsJ1dBUk5JTkc6cm9vdDp3YXJuaW5nXG4nCiB3aGF0c25ldy8zLjUsLDp3YXJuaW5nLCdXQVJOSU5HOnJvb3Q6d2FybmluZ1xuJwogd2hhdHNuZXcvMy41LCw6Oiw+Pj4gYWRkcjYgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpCiB3aGF0c25ldy8zLjUsLDpyb290LEVSUk9SOnJvb3Q6ZXhjZXB0aW9uCiB3aGF0c25ldy8zLjUsLDpleGNlcHRpb24sRVJST1I6cm9vdDpleGNlcHRpb24KK3doYXRzbmV3L2NoYW5nZWxvZywsOnZlcnNpb24saW1wb3J0IHN5czsgSSA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV0KK3doYXRzbmV3L2NoYW5nZWxvZywsOmd6LCI6IFRhckZpbGUgb3BlbmVkIHdpdGggZXh0ZXJuYWwgZmlsZW9iaiBhbmQgIiJ3Omd6IiIgbW9kZSBkaWRuJ3QiCit3aGF0c25ldy9jaGFuZ2Vsb2csLDo6LCI6IFVzZSAiIjEyNy4wLjAuMSIiIG9yICIiOjoxIiIgaW5zdGVhZCBvZiAiImxvY2FsaG9zdCIiIGFzIG11Y2ggYXMiCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0IGIvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdAppbmRleCAxMjk4OWIyLi5kNDM0NjE4IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0CisrKyBiL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QKQEAgLTc4LDYgKzc4LDkgQEAKICAgID4+PiB3b3JkcwogICAgWydkZWZlbmVzdHJhdGUnLCAnY2F0JywgJ3dpbmRvdycsICdkZWZlbmVzdHJhdGUnXQogCitXaXRoIGBgZm9yIHcgaW4gd29yZHM6YGAsIHRoZSBleGFtcGxlIHdvdWxkIGF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZmluaXRlIGxpc3QsCitpbnNlcnRpbmcgYGBkZWZlbmVzdHJhdGVgYCBvdmVyIGFuZCBvdmVyIGFnYWluLgorCiAKIC4uIF90dXQtcmFuZ2U6CiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QgYi9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0CmluZGV4IGRkOWM3Y2QuLmJlZWFhYzMgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdApAQCAtMjUsNyArMjUsOCBAQAogY29uY2F0ZW5hdGlvbiBvcGVyYXRpb25zIHlvdSBjYW4gY3JlYXRlIGFueSBsYXlvdXQgeW91IGNhbiBpbWFnaW5lLiAgVGhlCiBzdHJpbmcgdHlwZSBoYXMgc29tZSBtZXRob2RzIHRoYXQgcGVyZm9ybSB1c2VmdWwgb3BlcmF0aW9ucyBmb3IgcGFkZGluZwogc3RyaW5ncyB0byBhIGdpdmVuIGNvbHVtbiB3aWR0aDsgdGhlc2Ugd2lsbCBiZSBkaXNjdXNzZWQgc2hvcnRseS4gIFRoZSBzZWNvbmQKLXdheSBpcyB0byB1c2UgdGhlIDptZXRoOmBzdHIuZm9ybWF0YCBtZXRob2QuCit3YXkgaXMgdG8gdXNlIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gLCBvciB0aGUKKzptZXRoOmBzdHIuZm9ybWF0YCBtZXRob2QuCiAKIFRoZSA6bW9kOmBzdHJpbmdgIG1vZHVsZSBjb250YWlucyBhIDpjbGFzczpgfnN0cmluZy5UZW1wbGF0ZWAgY2xhc3Mgd2hpY2ggb2ZmZXJzCiB5ZXQgYW5vdGhlciB3YXkgdG8gc3Vic3RpdHV0ZSB2YWx1ZXMgaW50byBzdHJpbmdzLgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKaW5kZXggZThkOGUyYi4uZmFmNTdhMyAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CkBAIC0xMCwxMyArMTAsMTMgQEAKIEludm9raW5nIHRoZSBJbnRlcnByZXRlcgogPT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuNWAKK1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuNmAKIG9uIHRob3NlIG1hY2hpbmVzIHdoZXJlIGl0IGlzIGF2YWlsYWJsZTsgcHV0dGluZyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW5gIGluIHlvdXIKIFVuaXggc2hlbGwncyBzZWFyY2ggcGF0aCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzdGFydCBpdCBieSB0eXBpbmcgdGhlIGNvbW1hbmQ6CiAKIC4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKLSAgIHB5dGhvbjMuNQorICAgcHl0aG9uMy42CiAKIHRvIHRoZSBzaGVsbC4gWyNdXyBTaW5jZSB0aGUgY2hvaWNlIG9mIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGludGVycHJldGVyIGxpdmVzCiBpcyBhbiBpbnN0YWxsYXRpb24gb3B0aW9uLCBvdGhlciBwbGFjZXMgYXJlIHBvc3NpYmxlOyBjaGVjayB3aXRoIHlvdXIgbG9jYWwKQEAgLTI0LDExICsyNCwxMSBAQAogcG9wdWxhciBhbHRlcm5hdGl2ZSBsb2NhdGlvbi4pCiAKIE9uIFdpbmRvd3MgbWFjaGluZXMsIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGlzIHVzdWFsbHkgcGxhY2VkIGluCi06ZmlsZTpgQzpcXFB5dGhvbjM1YCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKKzpmaWxlOmBDOlxcUHl0aG9uMzZgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQogaW5zdGFsbGVyLiAgVG8gYWRkIHRoaXMgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgIHlvdSBjYW4gdHlwZSB0aGUgZm9sbG93aW5nCiBjb21tYW5kIGludG8gdGhlIGNvbW1hbmQgcHJvbXB0IGluIGEgRE9TIGJveDo6CiAKLSAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zNQorICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjM2CiAKIFR5cGluZyBhbiBlbmQtb2YtZmlsZSBjaGFyYWN0ZXIgKDprYmQ6YENvbnRyb2wtRGAgb24gVW5peCwgOmtiZDpgQ29udHJvbC1aYCBvbgogV2luZG93cykgYXQgdGhlIHByaW1hcnkgcHJvbXB0IGNhdXNlcyB0aGUgaW50ZXJwcmV0ZXIgdG8gZXhpdCB3aXRoIGEgemVybyBleGl0CkBAIC05OCw4ICs5OCw4IEBACiAKIC4uIGNvZGUtYmxvY2s6OiBzaGVsbC1zZXNzaW9uCiAKLSAgICQgcHl0aG9uMy41Ci0gICBQeXRob24gMy41IChkZWZhdWx0LCBTZXAgMTYgMjAxNSwgMDk6MjU6MDQpCisgICAkIHB5dGhvbjMuNgorICAgUHl0aG9uIDMuNiAoZGVmYXVsdCwgU2VwIDE2IDIwMTUsIDA5OjI1OjA0KQogICAgW0dDQyA0LjguMl0gb24gbGludXgKICAgIFR5cGUgImhlbHAiLCAiY29weXJpZ2h0IiwgImNyZWRpdHMiIG9yICJsaWNlbnNlIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgID4+PgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QgYi9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdAppbmRleCAyMTQwMzI5Li43ZThlZTNlIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdApAQCAtMzUyLDYgKzM1Miw5IEBACiAgICAgICBTdHJpbmdzIHN1cHBvcnQgYSBsYXJnZSBudW1iZXIgb2YgbWV0aG9kcyBmb3IKICAgICAgIGJhc2ljIHRyYW5zZm9ybWF0aW9ucyBhbmQgc2VhcmNoaW5nLgogCisgICA6cmVmOmBmLXN0cmluZ3NgCisgICAgICBTdHJpbmcgbGl0ZXJhbHMgdGhhdCBoYXZlIGVtYmVkZGVkIGV4cHJlc3Npb25zLgorCiAgICA6cmVmOmBmb3JtYXRzdHJpbmdzYAogICAgICAgSW5mb3JtYXRpb24gYWJvdXQgc3RyaW5nIGZvcm1hdHRpbmcgd2l0aCA6bWV0aDpgc3RyLmZvcm1hdGAuCiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKaW5kZXggNTJmZmRiZS4uMWRkMDZjMiAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKQEAgLTE1LDcgKzE1LDcgQEAKIAogICAgPj4+IGltcG9ydCBvcwogICAgPj4+IG9zLmdldGN3ZCgpICAgICAgIyBSZXR1cm4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAgICdDOlxcUHl0aG9uMzUnCisgICAnQzpcXFB5dGhvbjM2JwogICAgPj4+IG9zLmNoZGlyKCcvc2VydmVyL2FjY2Vzc2xvZ3MnKSAgICMgQ2hhbmdlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgID4+PiBvcy5zeXN0ZW0oJ21rZGlyIHRvZGF5JykgICAjIFJ1biB0aGUgY29tbWFuZCBta2RpciBpbiB0aGUgc3lzdGVtIHNoZWxsCiAgICAwCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKaW5kZXggMzcxNDM4NC4uYmY0Y2Y4NyAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdApAQCAtMjc4LDcgKzI3OCw3IEBACiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICAgICAgZFsncHJpbWFyeSddICAgICAgICAgICAgICAgICMgZW50cnkgd2FzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZAotICAgICBGaWxlICJDOi9weXRob24zNS9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCisgICAgIEZpbGUgIkM6L3B5dGhvbjM2L2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KICAgICAgICBvID0gc2VsZi5kYXRhW2tleV0oKQogICAgS2V5RXJyb3I6ICdwcmltYXJ5JwogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvdmVudi5yc3QgYi9Eb2MvdHV0b3JpYWwvdmVudi5yc3QKaW5kZXggM2IyZWUyZS4uZTJkZDU3ZCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3ZlbnYucnN0CisrKyBiL0RvYy90dXRvcmlhbC92ZW52LnJzdApAQCAtMjAsMTUgKzIwLDE0IEBACiB0aGUgcmVxdWlyZW1lbnRzIGFyZSBpbiBjb25mbGljdCBhbmQgaW5zdGFsbGluZyBlaXRoZXIgdmVyc2lvbiAxLjAgb3IgMi4wCiB3aWxsIGxlYXZlIG9uZSBhcHBsaWNhdGlvbiB1bmFibGUgdG8gcnVuLgogCi1UaGUgc29sdXRpb24gZm9yIHRoaXMgcHJvYmxlbSBpcyB0byBjcmVhdGUgYSA6dGVybTpgdmlydHVhbAotZW52aXJvbm1lbnRgIChvZnRlbiBzaG9ydGVuZWQgdG8gInZpcnR1YWxlbnYiKSwgYSBzZWxmLWNvbnRhaW5lZAotZGlyZWN0b3J5IHRyZWUgdGhhdCBjb250YWlucyBhIFB5dGhvbiBpbnN0YWxsYXRpb24gZm9yIGEgcGFydGljdWxhcgotdmVyc2lvbiBvZiBQeXRob24sIHBsdXMgYSBudW1iZXIgb2YgYWRkaXRpb25hbCBwYWNrYWdlcy4KK1RoZSBzb2x1dGlvbiBmb3IgdGhpcyBwcm9ibGVtIGlzIHRvIGNyZWF0ZSBhIDp0ZXJtOmB2aXJ0dWFsIGVudmlyb25tZW50YCwgYQorc2VsZi1jb250YWluZWQgZGlyZWN0b3J5IHRyZWUgdGhhdCBjb250YWlucyBhIFB5dGhvbiBpbnN0YWxsYXRpb24gZm9yIGEKK3BhcnRpY3VsYXIgdmVyc2lvbiBvZiBQeXRob24sIHBsdXMgYSBudW1iZXIgb2YgYWRkaXRpb25hbCBwYWNrYWdlcy4KIAogRGlmZmVyZW50IGFwcGxpY2F0aW9ucyBjYW4gdGhlbiB1c2UgZGlmZmVyZW50IHZpcnR1YWwgZW52aXJvbm1lbnRzLgogVG8gcmVzb2x2ZSB0aGUgZWFybGllciBleGFtcGxlIG9mIGNvbmZsaWN0aW5nIHJlcXVpcmVtZW50cywKIGFwcGxpY2F0aW9uIEEgY2FuIGhhdmUgaXRzIG93biB2aXJ0dWFsIGVudmlyb25tZW50IHdpdGggdmVyc2lvbiAxLjAKLWluc3RhbGxlZCB3aGlsZSBhcHBsaWNhdGlvbiBCIGhhcyBhbm90aGVyIHZpcnR1YWxlbnYgd2l0aCB2ZXJzaW9uIDIuMC4KK2luc3RhbGxlZCB3aGlsZSBhcHBsaWNhdGlvbiBCIGhhcyBhbm90aGVyIHZpcnR1YWwgZW52aXJvbm1lbnQgd2l0aCB2ZXJzaW9uIDIuMC4KIElmIGFwcGxpY2F0aW9uIEIgcmVxdWlyZXMgYSBsaWJyYXJ5IGJlIHVwZ3JhZGVkIHRvIHZlcnNpb24gMy4wLCB0aGlzIHdpbGwKIG5vdCBhZmZlY3QgYXBwbGljYXRpb24gQSdzIGVudmlyb25tZW50LgogCkBAIC0zNiwyOSArMzUsMjYgQEAKIENyZWF0aW5nIFZpcnR1YWwgRW52aXJvbm1lbnRzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgc2NyaXB0IHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgdmlydHVhbCBlbnZpcm9ubWVudHMgaXMgY2FsbGVkCi06cHJvZ3JhbTpgcHl2ZW52YC4gIDpwcm9ncmFtOmBweXZlbnZgIHdpbGwgdXN1YWxseSBpbnN0YWxsIHRoZSBtb3N0Ci1yZWNlbnQgdmVyc2lvbiBvZiBQeXRob24gdGhhdCB5b3UgaGF2ZSBhdmFpbGFibGU7IHRoZSBzY3JpcHQgaXMgYWxzbwotaW5zdGFsbGVkIHdpdGggYSB2ZXJzaW9uIG51bWJlciwgc28gaWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YKLVB5dGhvbiBvbiB5b3VyIHN5c3RlbSB5b3UgY2FuIHNlbGVjdCBhIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uIGJ5Ci1ydW5uaW5nIGBgcHl2ZW52LTMuNGBgIG9yIHdoaWNoZXZlciB2ZXJzaW9uIHlvdSB3YW50LgorVGhlIG1vZHVsZSB1c2VkIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHZpcnR1YWwgZW52aXJvbm1lbnRzIGlzIGNhbGxlZAorOm1vZDpgdmVudmAuICA6bW9kOmB2ZW52YCB3aWxsIHVzdWFsbHkgaW5zdGFsbCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZgorUHl0aG9uIHRoYXQgeW91IGhhdmUgYXZhaWxhYmxlLiBJZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gb24geW91cgorc3lzdGVtLCB5b3UgY2FuIHNlbGVjdCBhIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uIGJ5IHJ1bm5pbmcgYGBweXRob24zYGAgb3IKK3doaWNoZXZlciB2ZXJzaW9uIHlvdSB3YW50LgogCi1UbyBjcmVhdGUgYSB2aXJ0dWFsZW52LCBkZWNpZGUgdXBvbiBhIGRpcmVjdG9yeQotd2hlcmUgeW91IHdhbnQgdG8gcGxhY2UgaXQgYW5kIHJ1biA6cHJvZ3JhbTpgcHl2ZW52YCB3aXRoIHRoZQotZGlyZWN0b3J5IHBhdGg6OgorVG8gY3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgZGVjaWRlIHVwb24gYSBkaXJlY3Rvcnkgd2hlcmUgeW91IHdhbnQgdG8KK3BsYWNlIGl0LCBhbmQgcnVuIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUgYXMgYSBzY3JpcHQgd2l0aCB0aGUgZGlyZWN0b3J5IHBhdGg6OgogCi0gICBweXZlbnYgdHV0b3JpYWwtZW52CisgICBweXRob24zIC1tIHZlbnYgdHV0b3JpYWwtZW52CiAKIFRoaXMgd2lsbCBjcmVhdGUgdGhlIGBgdHV0b3JpYWwtZW52YGAgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QsCiBhbmQgYWxzbyBjcmVhdGUgZGlyZWN0b3JpZXMgaW5zaWRlIGl0IGNvbnRhaW5pbmcgYSBjb3B5IG9mIHRoZSBQeXRob24KIGludGVycHJldGVyLCB0aGUgc3RhbmRhcmQgbGlicmFyeSwgYW5kIHZhcmlvdXMgc3VwcG9ydGluZyBmaWxlcy4KIAotT25jZSB5b3UndmUgY3JlYXRlZCBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIHlvdSBuZWVkIHRvCi1hY3RpdmF0ZSBpdC4KK09uY2UgeW91J3ZlIGNyZWF0ZWQgYSB2aXJ0dWFsIGVudmlyb25tZW50LCB5b3UgbWF5IGFjdGl2YXRlIGl0LgogCiBPbiBXaW5kb3dzLCBydW46OgogCi0gIHR1dG9yaWFsLWVudi9TY3JpcHRzL2FjdGl2YXRlCisgIHR1dG9yaWFsLWVudlxTY3JpcHRzXGFjdGl2YXRlLmJhdAogCiBPbiBVbml4IG9yIE1hY09TLCBydW46OgogCkBAIC02OSwzMyArNjUsMzYgQEAKIGBgYWN0aXZhdGUuY3NoYGAgYW5kIGBgYWN0aXZhdGUuZmlzaGBgIHNjcmlwdHMgeW91IHNob3VsZCB1c2UKIGluc3RlYWQuKQogCi1BY3RpdmF0aW5nIHRoZSB2aXJ0dWFsZW52IHdpbGwgY2hhbmdlIHlvdXIgc2hlbGwncyBwcm9tcHQgdG8gc2hvdyB3aGF0Ci12aXJ0dWFsZW52IHlvdSdyZSB1c2luZywgYW5kIG1vZGlmeSB0aGUgZW52aXJvbm1lbnQgc28gdGhhdCBydW5uaW5nCi1gYHB5dGhvbmBgIHdpbGwgZ2V0IHlvdSB0aGF0IHBhcnRpY3VsYXIgdmVyc2lvbiBhbmQgaW5zdGFsbGF0aW9uIG9mCi1QeXRob24uICBGb3IgZXhhbXBsZTo6CitBY3RpdmF0aW5nIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IHdpbGwgY2hhbmdlIHlvdXIgc2hlbGwncyBwcm9tcHQgdG8gc2hvdyB3aGF0Cit2aXJ0dWFsIGVudmlyb25tZW50IHlvdSdyZSB1c2luZywgYW5kIG1vZGlmeSB0aGUgZW52aXJvbm1lbnQgc28gdGhhdCBydW5uaW5nCitgYHB5dGhvbmBgIHdpbGwgZ2V0IHlvdSB0aGF0IHBhcnRpY3VsYXIgdmVyc2lvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIFB5dGhvbi4KK0ZvciBleGFtcGxlOgogCi0gIC0+IHNvdXJjZSB+L2VudnMvdHV0b3JpYWwtZW52L2Jpbi9hY3RpdmF0ZQotICAodHV0b3JpYWwtZW52KSAtPiBweXRob24KLSAgUHl0aG9uIDMuNC4zKyAoMy40OmM3Yjk2NDVhNmYzNSssIE1heSAyMiAyMDE1LCAwOTozMToyNSkKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgJCBzb3VyY2Ugfi9lbnZzL3R1dG9yaWFsLWVudi9iaW4vYWN0aXZhdGUKKyAgKHR1dG9yaWFsLWVudikgJCBweXRob24KKyAgUHl0aG9uIDMuNS4xIChkZWZhdWx0LCBNYXkgIDYgMjAxNiwgMTA6NTk6MzYpCiAgICAgLi4uCiAgID4+PiBpbXBvcnQgc3lzCiAgID4+PiBzeXMucGF0aAotICBbJycsICcvdXNyL2xvY2FsL2xpYi9weXRob24zNC56aXAnLCAuLi4sCi0gICd+L2VudnMvdHV0b3JpYWwtZW52L2xpYi9weXRob24zLjQvc2l0ZS1wYWNrYWdlcyddCisgIFsnJywgJy91c3IvbG9jYWwvbGliL3B5dGhvbjM1LnppcCcsIC4uLiwKKyAgJ34vZW52cy90dXRvcmlhbC1lbnYvbGliL3B5dGhvbjMuNS9zaXRlLXBhY2thZ2VzJ10KICAgPj4+CiAKIAogTWFuYWdpbmcgUGFja2FnZXMgd2l0aCBwaXAKID09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLU9uY2UgeW91J3ZlIGFjdGl2YXRlZCBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIHlvdSBjYW4gaW5zdGFsbCwgdXBncmFkZSwKLWFuZCByZW1vdmUgcGFja2FnZXMgdXNpbmcgYSBwcm9ncmFtIGNhbGxlZCA6cHJvZ3JhbTpgcGlwYC4gIEJ5IGRlZmF1bHQKLWBgcGlwYGAgd2lsbCBpbnN0YWxsIHBhY2thZ2VzIGZyb20gdGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4LAotPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+LiAgWW91IGNhbiBicm93c2UgdGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4Ci1ieSBnb2luZyB0byBpdCBpbiB5b3VyIHdlYiBicm93c2VyLCBvciB5b3UgY2FuIHVzZSBgYHBpcGBgJ3MKLWxpbWl0ZWQgc2VhcmNoIGZlYXR1cmU6OgorWW91IGNhbiBpbnN0YWxsLCB1cGdyYWRlLCBhbmQgcmVtb3ZlIHBhY2thZ2VzIHVzaW5nIGEgcHJvZ3JhbSBjYWxsZWQKKzpwcm9ncmFtOmBwaXBgLiAgQnkgZGVmYXVsdCBgYHBpcGBgIHdpbGwgaW5zdGFsbCBwYWNrYWdlcyBmcm9tIHRoZSBQeXRob24KK1BhY2thZ2UgSW5kZXgsIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPi4gIFlvdSBjYW4gYnJvd3NlIHRoZSBQeXRob24KK1BhY2thZ2UgSW5kZXggYnkgZ29pbmcgdG8gaXQgaW4geW91ciB3ZWIgYnJvd3Nlciwgb3IgeW91IGNhbiB1c2UgYGBwaXBgYCdzCitsaW1pdGVkIHNlYXJjaCBmZWF0dXJlOgogCi0gICh0dXRvcmlhbC1lbnYpIC0+IHBpcCBzZWFyY2ggYXN0cm9ub215CisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIHNlYXJjaCBhc3Ryb25vbXkKICAgc2t5ZmllbGQgICAgICAgICAgICAgICAtIEVsZWdhbnQgYXN0cm9ub215IGZvciBQeXRob24KICAgZ2FyeSAgICAgICAgICAgICAgICAgICAtIEdhbGFjdGljIGFzdHJvbm9teSBhbmQgZ3Jhdml0YXRpb25hbCBkeW5hbWljcy4KICAgbm92YXMgICAgICAgICAgICAgICAgICAtIFRoZSBVbml0ZWQgU3RhdGVzIE5hdmFsIE9ic2VydmF0b3J5IE5PVkFTIGFzdHJvbm9teSBsaWJyYXJ5CkBAIC0xMDcsOSArMTA2LDExIEBACiAiZnJlZXplIiwgZXRjLiAgKENvbnN1bHQgdGhlIDpyZWY6YGluc3RhbGxpbmctaW5kZXhgIGd1aWRlIGZvcgogY29tcGxldGUgZG9jdW1lbnRhdGlvbiBmb3IgYGBwaXBgYC4pCiAKLVlvdSBjYW4gaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYSBwYWNrYWdlIGJ5IHNwZWNpZnlpbmcgYSBwYWNrYWdlJ3MgbmFtZTo6CitZb3UgY2FuIGluc3RhbGwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGEgcGFja2FnZSBieSBzcGVjaWZ5aW5nIGEgcGFja2FnZSdzIG5hbWU6CiAKLSAgLT4gcGlwIGluc3RhbGwgbm92YXMKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgaW5zdGFsbCBub3ZhcwogICBDb2xsZWN0aW5nIG5vdmFzCiAgICAgRG93bmxvYWRpbmcgbm92YXMtMy4xLjEuMy50YXIuZ3ogKDEzNmtCKQogICBJbnN0YWxsaW5nIGNvbGxlY3RlZCBwYWNrYWdlczogbm92YXMKQEAgLTExNyw5ICsxMTgsMTEgQEAKICAgU3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCBub3Zhcy0zLjEuMS4zCiAKIFlvdSBjYW4gYWxzbyBpbnN0YWxsIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBhIHBhY2thZ2UgYnkgZ2l2aW5nIHRoZQotcGFja2FnZSBuYW1lICBmb2xsb3dlZCBieSBgYD09YGAgYW5kIHRoZSB2ZXJzaW9uIG51bWJlcjo6CitwYWNrYWdlIG5hbWUgIGZvbGxvd2VkIGJ5IGBgPT1gYCBhbmQgdGhlIHZlcnNpb24gbnVtYmVyOgogCi0gIC0+IHBpcCBpbnN0YWxsIHJlcXVlc3RzPT0yLjYuMAorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBpbnN0YWxsIHJlcXVlc3RzPT0yLjYuMAogICBDb2xsZWN0aW5nIHJlcXVlc3RzPT0yLjYuMAogICAgIFVzaW5nIGNhY2hlZCByZXF1ZXN0cy0yLjYuMC1weTIucHkzLW5vbmUtYW55LndobAogICBJbnN0YWxsaW5nIGNvbGxlY3RlZCBwYWNrYWdlczogcmVxdWVzdHMKQEAgLTEyOCw5ICsxMzEsMTEgQEAKIElmIHlvdSByZS1ydW4gdGhpcyBjb21tYW5kLCBgYHBpcGBgIHdpbGwgbm90aWNlIHRoYXQgdGhlIHJlcXVlc3RlZAogdmVyc2lvbiBpcyBhbHJlYWR5IGluc3RhbGxlZCBhbmQgZG8gbm90aGluZy4gIFlvdSBjYW4gc3VwcGx5IGEKIGRpZmZlcmVudCB2ZXJzaW9uIG51bWJlciB0byBnZXQgdGhhdCB2ZXJzaW9uLCBvciB5b3UgY2FuIHJ1biBgYHBpcAotaW5zdGFsbCAtLXVwZ3JhZGVgYCB0byB1cGdyYWRlIHRoZSBwYWNrYWdlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbjo6CitpbnN0YWxsIC0tdXBncmFkZWBgIHRvIHVwZ3JhZGUgdGhlIHBhY2thZ2UgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uOgogCi0gIC0+IHBpcCBpbnN0YWxsIC0tdXBncmFkZSByZXF1ZXN0cworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBpbnN0YWxsIC0tdXBncmFkZSByZXF1ZXN0cwogICBDb2xsZWN0aW5nIHJlcXVlc3RzCiAgIEluc3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiByZXF1ZXN0cwogICAgIEZvdW5kIGV4aXN0aW5nIGluc3RhbGxhdGlvbjogcmVxdWVzdHMgMi42LjAKQEAgLTE0MSw5ICsxNDYsMTEgQEAKIGBgcGlwIHVuaW5zdGFsbGBgIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIHBhY2thZ2UgbmFtZXMgd2lsbCByZW1vdmUgdGhlCiBwYWNrYWdlcyBmcm9tIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgogCi1gYHBpcCBzaG93YGAgd2lsbCBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IGEgcGFydGljdWxhciBwYWNrYWdlOjoKK2BgcGlwIHNob3dgYCB3aWxsIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIHBhY2thZ2U6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIHNob3cgcmVxdWVzdHMKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgc2hvdyByZXF1ZXN0cwogICAtLS0KICAgTWV0YWRhdGEtVmVyc2lvbjogMi4wCiAgIE5hbWU6IHJlcXVlc3RzCkBAIC0xNTcsOSArMTY0LDExIEBACiAgIFJlcXVpcmVzOgogCiBgYHBpcCBsaXN0YGAgd2lsbCBkaXNwbGF5IGFsbCBvZiB0aGUgcGFja2FnZXMgaW5zdGFsbGVkIGluIHRoZSB2aXJ0dWFsCi1lbnZpcm9ubWVudDo6CitlbnZpcm9ubWVudDoKIAotICAodHV0b3JpYWwtZW52KSAtPiBwaXAgbGlzdAorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBsaXN0CiAgIG5vdmFzICgzLjEuMS4zKQogICBudW1weSAoMS45LjIpCiAgIHBpcCAoNy4wLjMpCkBAIC0xNjgsMTkgKzE3NywyMyBAQAogCiBgYHBpcCBmcmVlemVgYCB3aWxsIHByb2R1Y2UgYSBzaW1pbGFyIGxpc3Qgb2YgdGhlIGluc3RhbGxlZCBwYWNrYWdlcywKIGJ1dCB0aGUgb3V0cHV0IHVzZXMgdGhlIGZvcm1hdCB0aGF0IGBgcGlwIGluc3RhbGxgYCBleHBlY3RzLgotQSBjb21tb24gY29udmVudGlvbiBpcyB0byBwdXQgdGhpcyBsaXN0IGluIGEgYGByZXF1aXJlbWVudHMudHh0YGAgZmlsZTo6CitBIGNvbW1vbiBjb252ZW50aW9uIGlzIHRvIHB1dCB0aGlzIGxpc3QgaW4gYSBgYHJlcXVpcmVtZW50cy50eHRgYCBmaWxlOgogCi0gICh0dXRvcmlhbC1lbnYpIC0+IHBpcCBmcmVlemUgPiByZXF1aXJlbWVudHMudHh0Ci0gICh0dXRvcmlhbC1lbnYpIC0+IGNhdCByZXF1aXJlbWVudHMudHh0CisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGZyZWV6ZSA+IHJlcXVpcmVtZW50cy50eHQKKyAgKHR1dG9yaWFsLWVudikgJCBjYXQgcmVxdWlyZW1lbnRzLnR4dAogICBub3Zhcz09My4xLjEuMwogICBudW1weT09MS45LjIKICAgcmVxdWVzdHM9PTIuNy4wCiAKIFRoZSBgYHJlcXVpcmVtZW50cy50eHRgYCBjYW4gdGhlbiBiZSBjb21taXR0ZWQgdG8gdmVyc2lvbiBjb250cm9sIGFuZAogc2hpcHBlZCBhcyBwYXJ0IG9mIGFuIGFwcGxpY2F0aW9uLiAgVXNlcnMgY2FuIHRoZW4gaW5zdGFsbCBhbGwgdGhlCi1uZWNlc3NhcnkgcGFja2FnZXMgd2l0aCBgYGluc3RhbGwgLXJgYDo6CituZWNlc3NhcnkgcGFja2FnZXMgd2l0aCBgYGluc3RhbGwgLXJgYDoKIAotICAtPiBwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0CisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dAogICBDb2xsZWN0aW5nIG5vdmFzPT0zLjEuMS4zIChmcm9tIC1yIHJlcXVpcmVtZW50cy50eHQgKGxpbmUgMSkpCiAgICAgLi4uCiAgIENvbGxlY3RpbmcgbnVtcHk9PTEuOS4yIChmcm9tIC1yIHJlcXVpcmVtZW50cy50eHQgKGxpbmUgMikpCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKaW5kZXggNTdmYWY4OS4uNzVjYjhlYSAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0CisrKyBiL0RvYy91c2luZy9jbWRsaW5lLnJzdApAQCAtMzk1LDYgKzM5NSw4IEBACiAgICAgIHN0b3JlZCBpbiBhIHRyYWNlYmFjayBvZiBhIHRyYWNlLiBVc2UgYGAtWCB0cmFjZW1hbGxvYz1ORlJBTUVgYCB0byBzdGFydAogICAgICB0cmFjaW5nIHdpdGggYSB0cmFjZWJhY2sgbGltaXQgb2YgKk5GUkFNRSogZnJhbWVzLiBTZWUgdGhlCiAgICAgIDpmdW5jOmB0cmFjZW1hbGxvYy5zdGFydGAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAqIGBgLVggc2hvd2FsbG9jY291bnRgYCB0byBlbmFibGUgdGhlIG91dHB1dCBvZiB0aGUgdG90YWwgY291bnQgb2YgYWxsb2NhdGVkCisgICAgIG9iamVjdHMgZm9yIGVhY2ggdHlwZSAob25seSB3b3JrcyB3aGVuIGJ1aWx0IHdpdGggYGBDT1VOVF9BTExPQ1NgYCBkZWZpbmVkKTsKIAogICAgSXQgYWxzbyBhbGxvd3MgcGFzc2luZyBhcmJpdHJhcnkgdmFsdWVzIGFuZCByZXRyaWV2aW5nIHRoZW0gdGhyb3VnaCB0aGUKICAgIDpkYXRhOmBzeXMuX3hvcHRpb25zYCBkaWN0aW9uYXJ5LgpAQCAtNDA4LDYgKzQxMCw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKICAgICAgIFRoZSBgYC1YIHNob3dyZWZjb3VudGBgIGFuZCBgYC1YIHRyYWNlbWFsbG9jYGAgb3B0aW9ucy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBUaGUgYGAtWCBzaG93YWxsb2Njb3VudGBgIG9wdGlvbi4KKwogCiBPcHRpb25zIHlvdSBzaG91bGRuJ3QgdXNlCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC01NTQsNiArNTU5LDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIGBgZW5jb2RpbmduYW1lYGAgcGFydCBpcyBub3cgb3B0aW9uYWwuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPbiBXaW5kb3dzLCB0aGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGJ5IHRoaXMgdmFyaWFibGUgaXMgaWdub3JlZCBmb3IgaW50ZXJhY3RpdmUKKyAgICAgIGNvbnNvbGUgYnVmZmVycyB1bmxlc3MgOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0lPRU5DT0RJTkdgIGlzIGFsc28gc3BlY2lmaWVkLgorICAgICAgRmlsZXMgYW5kIHBpcGVzIHJlZGlyZWN0ZWQgdGhyb3VnaCB0aGUgc3RhbmRhcmQgc3RyZWFtcyBhcmUgbm90IGFmZmVjdGVkLgogCiAuLiBlbnZ2YXI6OiBQWVRIT05OT1VTRVJTSVRFCiAKQEAgLTYxOSw2ICs2MjgsODEgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAKKy4uIGVudnZhcjo6IFBZVEhPTk1BTExPQworCisgICBTZXQgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcy4KKworICAgU2V0IHRoZSBmYW1pbHkgb2YgbWVtb3J5IGFsbG9jYXRvcnMgdXNlZCBieSBQeXRob246CisKKyAgICogYGBtYWxsb2NgYDogdXNlIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGZ1bmN0aW9uIG9mIHRoZSBDIGxpYnJhcnkKKyAgICAgZm9yIGFsbCBkb21haW5zICg6YzpkYXRhOmBQWU1FTV9ET01BSU5fUkFXYCwgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAsCisgICAgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgKS4KKyAgICogYGBweW1hbGxvY2BgOiB1c2UgdGhlIDpyZWY6YHB5bWFsbG9jIGFsbG9jYXRvciA8cHltYWxsb2M+YCBmb3IKKyAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgYW5kIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIGRvbWFpbnMgYW5kIHVzZQorICAgICB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBmdW5jdGlvbiBmb3IgdGhlIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgIGRvbWFpbi4KKworICAgSW5zdGFsbCBkZWJ1ZyBob29rczoKKworICAgKiBgYGRlYnVnYGA6IGluc3RhbGwgZGVidWcgaG9va3Mgb24gdG9wIG9mIHRoZSBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0b3IKKyAgICogYGBtYWxsb2NfZGVidWdgYDogc2FtZSBhcyBgYG1hbGxvY2BgIGJ1dCBhbHNvIGluc3RhbGwgZGVidWcgaG9va3MKKyAgICogYGBweW1hbGxvY19kZWJ1Z2BgOiBzYW1lIGFzIGBgcHltYWxsb2NgYCBidXQgYWxzbyBpbnN0YWxsIGRlYnVnIGhvb2tzCisKKyAgIFdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZSwgdGhlIGRlZmF1bHQgaXMgYGBweW1hbGxvY2BgLiBXaGVuCisgICBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlLCB0aGUgZGVmYXVsdCBpcyBgYHB5bWFsbG9jX2RlYnVnYGAgYW5kIHRoZSBkZWJ1ZyBob29rcworICAgYXJlIHVzZWQgYXV0b21hdGljYWxseS4KKworICAgSWYgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgd2l0aG91dCBgYHB5bWFsbG9jYGAgc3VwcG9ydCwgYGBweW1hbGxvY2BgIGFuZAorICAgYGBweW1hbGxvY19kZWJ1Z2BgIGFyZSBub3QgYXZhaWxhYmxlLCB0aGUgZGVmYXVsdCBpcyBgYG1hbGxvY2BgIGluIHJlbGVhc2UKKyAgIG1vZGUgYW5kIGBgbWFsbG9jX2RlYnVnYGAgaW4gZGVidWcgbW9kZS4KKworICAgU2VlIHRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIGZvciBkZWJ1ZyBob29rcyBvbiBQeXRob24KKyAgIG1lbW9yeSBhbGxvY2F0b3JzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBlbnZ2YXI6OiBQWVRIT05NQUxMT0NTVEFUUworCisgICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLCBQeXRob24gd2lsbCBwcmludCBzdGF0aXN0aWNzIG9mIHRoZQorICAgOnJlZjpgcHltYWxsb2MgbWVtb3J5IGFsbG9jYXRvciA8cHltYWxsb2M+YCBldmVyeSB0aW1lIGEgbmV3IHB5bWFsbG9jIG9iamVjdAorICAgYXJlbmEgaXMgY3JlYXRlZCwgYW5kIG9uIHNodXRkb3duLgorCisgICBUaGlzIHZhcmlhYmxlIGlzIGlnbm9yZWQgaWYgdGhlIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgIGlzIHVzZWQgdG8gZm9yY2UgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgYWxsb2NhdG9yIG9mIHRoZSBDIGxpYnJhcnksIG9yIGlmCisgICBQeXRob24gaXMgY29uZmlndXJlZCB3aXRob3V0IGBgcHltYWxsb2NgYCBzdXBwb3J0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhpcyB2YXJpYWJsZSBjYW4gbm93IGFsc28gYmUgdXNlZCBvbiBQeXRob24gY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLgorICAgICAgSXQgbm93IGhhcyBubyBlZmZlY3QgaWYgc2V0IHRvIGFuIGVtcHR5IHN0cmluZy4KKworCisuLiBlbnZ2YXI6OiBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElORworCisgICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLCB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZCBlcnJvcnMgbW9kZQorICAgd2lsbCByZXZlcnQgdG8gdGhlaXIgcHJlLTMuNiB2YWx1ZXMgb2YgJ21iY3MnIGFuZCAncmVwbGFjZScsIHJlc3BlY3RpdmVseS4KKyAgIE90aGVyd2lzZSwgdGhlIG5ldyBkZWZhdWx0cyAndXRmLTgnIGFuZCAnc3Vycm9nYXRlcGFzcycgYXJlIHVzZWQuCisKKyAgIFRoaXMgbWF5IGFsc28gYmUgZW5hYmxlZCBhdCBydW50aW1lIHdpdGgKKyAgIDpmdW5jOmBzeXMuX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKClgLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBkZXRhaWxzLgorCisuLiBlbnZ2YXI6OiBQWVRIT05MRUdBQ1lXSU5ET1dTSU9FTkNPRElORworCisgICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLCBkb2VzIG5vdCB1c2UgdGhlIG5ldyBjb25zb2xlIHJlYWRlciBhbmQKKyAgIHdyaXRlci4gVGhpcyBtZWFucyB0aGF0IFVuaWNvZGUgY2hhcmFjdGVycyB3aWxsIGJlIGVuY29kZWQgYWNjb3JkaW5nIHRvCisgICB0aGUgYWN0aXZlIGNvbnNvbGUgY29kZSBwYWdlLCByYXRoZXIgdGhhbiB1c2luZyB1dGYtOC4KKworICAgVGhpcyB2YXJpYWJsZSBpcyBpZ25vcmVkIGlmIHRoZSBzdGFuZGFyZCBzdHJlYW1zIGFyZSByZWRpcmVjdGVkICh0byBmaWxlcworICAgb3IgcGlwZXMpIHJhdGhlciB0aGFuIHJlZmVycmluZyB0byBjb25zb2xlIGJ1ZmZlcnMuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogRGVidWctbW9kZSB2YXJpYWJsZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTYzNCw5ICs3MTgsMyBAQAogCiAgICBJZiBzZXQsIFB5dGhvbiB3aWxsIGR1bXAgb2JqZWN0cyBhbmQgcmVmZXJlbmNlIGNvdW50cyBzdGlsbCBhbGl2ZSBhZnRlcgogICAgc2h1dHRpbmcgZG93biB0aGUgaW50ZXJwcmV0ZXIuCi0KLQotLi4gZW52dmFyOjogUFlUSE9OTUFMTE9DU1RBVFMKLQotICAgSWYgc2V0LCBQeXRob24gd2lsbCBwcmludCBtZW1vcnkgYWxsb2NhdGlvbiBzdGF0aXN0aWNzIGV2ZXJ5IHRpbWUgYSBuZXcKLSAgIG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvaW5kZXgucnN0IGIvRG9jL3VzaW5nL2luZGV4LnJzdAppbmRleCA1MDJhZmE5Li5hNWRmNzEzIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvaW5kZXgucnN0CisrKyBiL0RvYy91c2luZy9pbmRleC5yc3QKQEAgLTE3LDQgKzE3LDMgQEAKICAgIHVuaXgucnN0CiAgICB3aW5kb3dzLnJzdAogICAgbWFjLnJzdAotICAgc2NyaXB0cy5yc3QKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9tYWMucnN0IGIvRG9jL3VzaW5nL21hYy5yc3QKaW5kZXggMDVjOTFiYi4uOGYxYWMzZiAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL21hYy5yc3QKKysrIGIvRG9jL3VzaW5nL21hYy5yc3QKQEAgLTI1LDcgKzI1LDcgQEAKIAogV2hhdCB5b3UgZ2V0IGFmdGVyIGluc3RhbGxpbmcgaXMgYSBudW1iZXIgb2YgdGhpbmdzOgogCi0qIEEgOmZpbGU6YE1hY1B5dGhvbiAzLjVgIGZvbGRlciBpbiB5b3VyIDpmaWxlOmBBcHBsaWNhdGlvbnNgIGZvbGRlci4gSW4gaGVyZQorKiBBIDpmaWxlOmBNYWNQeXRob24gMy42YCBmb2xkZXIgaW4geW91ciA6ZmlsZTpgQXBwbGljYXRpb25zYCBmb2xkZXIuIEluIGhlcmUKICAgeW91IGZpbmQgSURMRSwgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQgaXMgYSBzdGFuZGFyZCBwYXJ0IG9mIG9mZmljaWFsCiAgIFB5dGhvbiBkaXN0cmlidXRpb25zOyBQeXRob25MYXVuY2hlciwgd2hpY2ggaGFuZGxlcyBkb3VibGUtY2xpY2tpbmcgUHl0aG9uCiAgIHNjcmlwdHMgZnJvbSB0aGUgRmluZGVyOyBhbmQgdGhlICJCdWlsZCBBcHBsZXQiIHRvb2wsIHdoaWNoIGFsbG93cyB5b3UgdG8KQEAgLTkzLDcgKzkzLDcgQEAKIGFueXRoaW5nIHRoYXQgaGFzIGEgR1VJKSBuZWVkIHRvIGJlIHJ1biBpbiBhIHNwZWNpYWwgd2F5LiBVc2UgOnByb2dyYW06YHB5dGhvbndgCiBpbnN0ZWFkIG9mIDpwcm9ncmFtOmBweXRob25gIHRvIHN0YXJ0IHN1Y2ggc2NyaXB0cy4KIAotV2l0aCBQeXRob24gMy41LCB5b3UgY2FuIHVzZSBlaXRoZXIgOnByb2dyYW06YHB5dGhvbmAgb3IgOnByb2dyYW06YHB5dGhvbndgLgorV2l0aCBQeXRob24gMy42LCB5b3UgY2FuIHVzZSBlaXRoZXIgOnByb2dyYW06YHB5dGhvbmAgb3IgOnByb2dyYW06YHB5dGhvbndgLgogCiAKIENvbmZpZ3VyYXRpb24KQEAgLTE1OSw3ICsxNTksNyBAQAogRGlzdHJpYnV0aW5nIFB5dGhvbiBBcHBsaWNhdGlvbnMgb24gdGhlIE1hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgIkJ1aWxkIEFwcGxldCIgdG9vbCB0aGF0IGlzIHBsYWNlZCBpbiB0aGUgTWFjUHl0aG9uIDMuNSBmb2xkZXIgaXMgZmluZSBmb3IKK1RoZSAiQnVpbGQgQXBwbGV0IiB0b29sIHRoYXQgaXMgcGxhY2VkIGluIHRoZSBNYWNQeXRob24gMy42IGZvbGRlciBpcyBmaW5lIGZvcgogcGFja2FnaW5nIHNtYWxsIFB5dGhvbiBzY3JpcHRzIG9uIHlvdXIgb3duIG1hY2hpbmUgdG8gcnVuIGFzIGEgc3RhbmRhcmQgTWFjCiBhcHBsaWNhdGlvbi4gVGhpcyB0b29sLCBob3dldmVyLCBpcyBub3Qgcm9idXN0IGVub3VnaCB0byBkaXN0cmlidXRlIFB5dGhvbgogYXBwbGljYXRpb25zIHRvIG90aGVyIHVzZXJzLgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3NjcmlwdHMucnN0IGIvRG9jL3VzaW5nL3NjcmlwdHMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzg3NDE2Li4wMDAwMDAwCi0tLSBhL0RvYy91c2luZy9zY3JpcHRzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS4uIF90b29scy1hbmQtc2NyaXB0czoKLQotQWRkaXRpb25hbCBUb29scyBhbmQgU2NyaXB0cwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0uLiBfc2NyaXB0cy1weXZlbnY6Ci0KLXB5dmVudiAtIENyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBpbmNsdWRlOjogdmVudi1jcmVhdGUuaW5jCi0KZGlmZiAtLWdpdCBhL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMgYi9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCmluZGV4IDdhZDMwMDguLjUzZjQzMWIgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKKysrIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwpAQCAtMSwzMSArMSwzOSBAQAogQ3JlYXRpb24gb2YgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudHMgPHZlbnYtZGVmPmAgaXMgZG9uZSBieSBleGVjdXRpbmcgdGhlCi1gYHB5dmVudmBgIHNjcmlwdDo6Citjb21tYW5kIGBgdmVudmBgOjoKIAotICAgIHB5dmVudiAvcGF0aC90by9uZXcvdmlydHVhbC9lbnZpcm9ubWVudAorICAgIHB5dGhvbjMgLW0gdmVudiAvcGF0aC90by9uZXcvdmlydHVhbC9lbnZpcm9ubWVudAogCiBSdW5uaW5nIHRoaXMgY29tbWFuZCBjcmVhdGVzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IChjcmVhdGluZyBhbnkgcGFyZW50CiBkaXJlY3RvcmllcyB0aGF0IGRvbid0IGV4aXN0IGFscmVhZHkpIGFuZCBwbGFjZXMgYSBgYHB5dmVudi5jZmdgYCBmaWxlIGluIGl0Ci13aXRoIGEgYGBob21lYGAga2V5IHBvaW50aW5nIHRvIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHRoZSBjb21tYW5kIHdhcyBydW4KLWZyb20uICBJdCBhbHNvIGNyZWF0ZXMgYSBgYGJpbmBgIChvciBgYFNjcmlwdHNgYCBvbiBXaW5kb3dzKSBzdWJkaXJlY3RvcnkKK3dpdGggYSBgYGhvbWVgYCBrZXkgcG9pbnRpbmcgdG8gdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gZnJvbSB3aGljaCB0aGUgY29tbWFuZAord2FzIHJ1bi4gIEl0IGFsc28gY3JlYXRlcyBhIGBgYmluYGAgKG9yIGBgU2NyaXB0c2BgIG9uIFdpbmRvd3MpIHN1YmRpcmVjdG9yeQogY29udGFpbmluZyBhIGNvcHkgb2YgdGhlIGBgcHl0aG9uYGAgYmluYXJ5IChvciBiaW5hcmllcywgaW4gdGhlIGNhc2Ugb2YKIFdpbmRvd3MpLiAgSXQgYWxzbyBjcmVhdGVzIGFuIChpbml0aWFsbHkgZW1wdHkpIGBgbGliL3B5dGhvblguWS9zaXRlLXBhY2thZ2VzYGAKIHN1YmRpcmVjdG9yeSAob24gV2luZG93cywgdGhpcyBpcyBgYExpYlxzaXRlLXBhY2thZ2VzYGApLgogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBgYHB5dmVudmBgIHdhcyB0aGUgcmVjb21tZW5kZWQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMgZm9yCisgICBQeXRob24gMy4zIGFuZCAzLjQsIGFuZCBpcyBgZGVwcmVjYXRlZCBpbiBQeXRob24gMy42CisgICA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2L3doYXRzbmV3LzMuNi5odG1sI2RlcHJlY2F0ZWQtZmVhdHVyZXM+YF8uCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgdXNlIG9mIGBgdmVudmBgIGlzIG5vdyByZWNvbW1lbmRlZCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMuCisKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBDcmVhdGluZyBhbmQgdXNpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9pbnN0YWxsaW5nLyNjcmVhdGluZy12aXJ0dWFsLWVudmlyb25tZW50cz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvI2NyZWF0aW5nLXZpcnR1YWwtZW52aXJvbm1lbnRzPmBfXwogCiAuLiBoaWdobGlnaHQ6OiBub25lCiAKLU9uIFdpbmRvd3MsIHlvdSBtYXkgaGF2ZSB0byBpbnZva2UgdGhlIGBgcHl2ZW52YGAgc2NyaXB0IGFzIGZvbGxvd3MsIGlmIHlvdQotZG9uJ3QgaGF2ZSB0aGUgcmVsZXZhbnQgUEFUSCBhbmQgUEFUSEVYVCBzZXR0aW5nczo6CitPbiBXaW5kb3dzLCBpbnZva2UgdGhlIGBgdmVudmBgIGNvbW1hbmQgYXMgZm9sbG93czo6CiAKLSAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiBjOlxQeXRob24zNVxUb29sc1xTY3JpcHRzXHB5dmVudi5weSBteWVudgorICAgIGM6XD5jOlxQeXRob24zNVxweXRob24gLW0gdmVudiBjOlxwYXRoXHRvXG15ZW52CiAKLW9yIGVxdWl2YWxlbnRseTo6CitBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgY29uZmlndXJlZCB0aGUgYGBQQVRIYGAgYW5kIGBgUEFUSEVYVGBgIHZhcmlhYmxlcyBmb3IKK3lvdXIgOnJlZjpgUHl0aG9uIGluc3RhbGxhdGlvbiA8dXNpbmctb24td2luZG93cz5gOjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzVccHl0aG9uIC1tIHZlbnYgbXllbnYKKyAgICBjOlw+cHl0aG9uIC1tIHZlbnYgbXllbnYgYzpccGF0aFx0b1xteWVudgogCiBUaGUgY29tbWFuZCwgaWYgcnVuIHdpdGggYGAtaGBgLCB3aWxsIHNob3cgdGhlIGF2YWlsYWJsZSBvcHRpb25zOjoKIApAQCAtMzYsMjUgKzQ0LDI2IEBACiAgICAgQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiBlbnZpcm9ubWVudHMgaW4gb25lIG9yIG1vcmUgdGFyZ2V0IGRpcmVjdG9yaWVzLgogCiAgICAgcG9zaXRpb25hbCBhcmd1bWVudHM6Ci0gICAgICBFTlZfRElSICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCisgICAgICBFTlZfRElSICAgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KIAogICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKLSAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAgICAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgotICAgICAgLS1zeW1saW5rcyAgICAgICAgICAgICBUcnkgdG8gdXNlIHN5bWxpbmtzIHJhdGhlciB0aGFuIGNvcGllcywgd2hlbiBzeW1saW5rcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCi0gICAgICAtLWNvcGllcyAgICAgICAgICAgICAgIFRyeSB0byB1c2UgY29waWVzIHJhdGhlciB0aGFuIHN5bWxpbmtzLCBldmVuIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3MgYXJlIHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCi0gICAgICAtLWNsZWFyICAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGV4aXN0cywgYmVmb3JlIGVudmlyb25tZW50IGNyZWF0aW9uLgotICAgICAgLS11cGdyYWRlICAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KLSAgICAgIC0td2l0aG91dC1waXAgICAgICAgICAgU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSB2aXJ0dWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkIGJ5IGRlZmF1bHQpCisgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KKyAgICAgIC0tc3ltbGlua3MgICAgICAgICAgICBUcnkgdG8gdXNlIHN5bWxpbmtzIHJhdGhlciB0aGFuIGNvcGllcywgd2hlbiBzeW1saW5rcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KKyAgICAgIC0tY29waWVzICAgICAgICAgICAgICBUcnkgdG8gdXNlIGNvcGllcyByYXRoZXIgdGhhbiBzeW1saW5rcywgZXZlbiB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3MgYXJlIHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCisgICAgICAtLWNsZWFyICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KKyAgICAgIC0tdXBncmFkZSAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgorICAgICAgLS13aXRob3V0LXBpcCAgICAgICAgIFNraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgdmlydHVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkIGJ5IGRlZmF1bHQpCiAKLURlcGVuZGluZyBvbiBob3cgdGhlIGBgdmVudmBgIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gaW52b2tlZCwgdGhlIHVzYWdlIG1lc3NhZ2UKLW1heSB2YXJ5IHNsaWdodGx5LCBlLmcuIHJlZmVyZW5jaW5nIGBgcHl2ZW52YGAgcmF0aGVyIHRoYW4gYGB2ZW52YGAuCisgICAgT25jZSBhbiBlbnZpcm9ubWVudCBoYXMgYmVlbiBjcmVhdGVkLCB5b3UgbWF5IHdpc2ggdG8gYWN0aXZhdGUgaXQsIGUuZy4gYnkKKyAgICBzb3VyY2luZyBhbiBhY3RpdmF0ZSBzY3JpcHQgaW4gaXRzIGJpbiBkaXJlY3RvcnkuCiAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICBJbnN0YWxscyBwaXAgYnkgZGVmYXVsdCwgYWRkZWQgdGhlIGBgLS13aXRob3V0LXBpcGBgICBhbmQgYGAtLWNvcGllc2BgCkBAIC03MywxMiArODIsMTMgQEAKIFVubGVzcyB0aGUgYGAtLXdpdGhvdXQtcGlwYGAgb3B0aW9uIGlzIGdpdmVuLCA6bW9kOmBlbnN1cmVwaXBgIHdpbGwgYmUKIGludm9rZWQgdG8gYm9vdHN0cmFwIGBgcGlwYGAgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotTXVsdGlwbGUgcGF0aHMgY2FuIGJlIGdpdmVuIHRvIGBgcHl2ZW52YGAsIGluIHdoaWNoIGNhc2UgYW4gaWRlbnRpY2FsCi12aXJ0dWFsZW52IHdpbGwgYmUgY3JlYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBvcHRpb25zLCBhdCBlYWNoCi1wcm92aWRlZCBwYXRoLgorTXVsdGlwbGUgcGF0aHMgY2FuIGJlIGdpdmVuIHRvIGBgdmVudmBgLCBpbiB3aGljaCBjYXNlIGFuIGlkZW50aWNhbCB2aXJ0dWFsCitlbnZpcm9ubWVudCB3aWxsIGJlIGNyZWF0ZWQsIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gb3B0aW9ucywgYXQgZWFjaCBwcm92aWRlZAorcGF0aC4KIAotT25jZSBhIHZlbnYgaGFzIGJlZW4gY3JlYXRlZCwgaXQgY2FuIGJlICJhY3RpdmF0ZWQiIHVzaW5nIGEgc2NyaXB0IGluIHRoZQotdmVudidzIGJpbmFyeSBkaXJlY3RvcnkuIFRoZSBpbnZvY2F0aW9uIG9mIHRoZSBzY3JpcHQgaXMgcGxhdGZvcm0tc3BlY2lmaWM6CitPbmNlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBoYXMgYmVlbiBjcmVhdGVkLCBpdCBjYW4gYmUgImFjdGl2YXRlZCIgdXNpbmcgYQorc2NyaXB0IGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgYmluYXJ5IGRpcmVjdG9yeS4gVGhlIGludm9jYXRpb24gb2YgdGhlCitzY3JpcHQgaXMgcGxhdGZvcm0tc3BlY2lmaWM6CiAKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBQbGF0Zm9ybSAgICB8IFNoZWxsICAgICAgICAgICB8IENvbW1hbmQgdG8gYWN0aXZhdGUgdmlydHVhbCBlbnZpcm9ubWVudCB8CkBAIC05NSwxNiArMTA1LDE3IEBACiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogWW91IGRvbid0IHNwZWNpZmljYWxseSAqbmVlZCogdG8gYWN0aXZhdGUgYW4gZW52aXJvbm1lbnQ7IGFjdGl2YXRpb24ganVzdAotcHJlcGVuZHMgdGhlIHZlbnYncyBiaW5hcnkgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgc28gdGhhdCAicHl0aG9uIiBpbnZva2VzIHRoZQotdmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBhbmQgeW91IGNhbiBydW4gaW5zdGFsbGVkIHNjcmlwdHMgd2l0aG91dCBoYXZpbmcgdG8KLXVzZSB0aGVpciBmdWxsIHBhdGguIEhvd2V2ZXIsIGFsbCBzY3JpcHRzIGluc3RhbGxlZCBpbiBhIHZlbnYgc2hvdWxkIGJlCi1ydW5uYWJsZSB3aXRob3V0IGFjdGl2YXRpbmcgaXQsIGFuZCBydW4gd2l0aCB0aGUgdmVudidzIFB5dGhvbiBhdXRvbWF0aWNhbGx5LgorcHJlcGVuZHMgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBiaW5hcnkgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgc28gdGhhdAorInB5dGhvbiIgaW52b2tlcyB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIFB5dGhvbiBpbnRlcnByZXRlciBhbmQgeW91IGNhbiBydW4KK2luc3RhbGxlZCBzY3JpcHRzIHdpdGhvdXQgaGF2aW5nIHRvIHVzZSB0aGVpciBmdWxsIHBhdGguIEhvd2V2ZXIsIGFsbCBzY3JpcHRzCitpbnN0YWxsZWQgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IHNob3VsZCBiZSBydW5uYWJsZSB3aXRob3V0IGFjdGl2YXRpbmcgaXQsCithbmQgcnVuIHdpdGggdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24gYXV0b21hdGljYWxseS4KIAotWW91IGNhbiBkZWFjdGl2YXRlIGEgdmVudiBieSB0eXBpbmcgImRlYWN0aXZhdGUiIGluIHlvdXIgc2hlbGwuIFRoZSBleGFjdAotbWVjaGFuaXNtIGlzIHBsYXRmb3JtLXNwZWNpZmljOiBmb3IgZXhhbXBsZSwgdGhlIEJhc2ggYWN0aXZhdGlvbiBzY3JpcHQgZGVmaW5lcwotYSAiZGVhY3RpdmF0ZSIgZnVuY3Rpb24sIHdoZXJlYXMgb24gV2luZG93cyB0aGVyZSBhcmUgc2VwYXJhdGUgc2NyaXB0cyBjYWxsZWQKLWBgZGVhY3RpdmF0ZS5iYXRgYCBhbmQgYGBEZWFjdGl2YXRlLnBzMWBgIHdoaWNoIGFyZSBpbnN0YWxsZWQgd2hlbiB0aGUgdmVudiBpcwotY3JlYXRlZC4KK1lvdSBjYW4gZGVhY3RpdmF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgYnkgdHlwaW5nICJkZWFjdGl2YXRlIiBpbiB5b3VyIHNoZWxsLgorVGhlIGV4YWN0IG1lY2hhbmlzbSBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogZm9yIGV4YW1wbGUsIHRoZSBCYXNoIGFjdGl2YXRpb24KK3NjcmlwdCBkZWZpbmVzIGEgImRlYWN0aXZhdGUiIGZ1bmN0aW9uLCB3aGVyZWFzIG9uIFdpbmRvd3MgdGhlcmUgYXJlIHNlcGFyYXRlCitzY3JpcHRzIGNhbGxlZCBgYGRlYWN0aXZhdGUuYmF0YGAgYW5kIGBgRGVhY3RpdmF0ZS5wczFgYCB3aGljaCBhcmUgaW5zdGFsbGVkCit3aGVuIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGNyZWF0ZWQuCiAKIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogICAgYGBmaXNoYGAgYW5kIGBgY3NoYGAgYWN0aXZhdGlvbiBzY3JpcHRzLgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0IGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CmluZGV4IGE0YTZhMzAuLjEyYmRkOWQgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy93aW5kb3dzLnJzdAorKysgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKQEAgLTI5LDE1ICsyOSwxNSBAQAogCiBBcyBzcGVjaWZpZWQgaW4gOnBlcDpgMTFgLCBhIFB5dGhvbiByZWxlYXNlIG9ubHkgc3VwcG9ydHMgYSBXaW5kb3dzIHBsYXRmb3JtCiB3aGlsZSBNaWNyb3NvZnQgY29uc2lkZXJzIHRoZSBwbGF0Zm9ybSB1bmRlciBleHRlbmRlZCBzdXBwb3J0LiBUaGlzIG1lYW5zIHRoYXQKLVB5dGhvbiAzLjUgc3VwcG9ydHMgV2luZG93cyBWaXN0YSBhbmQgbmV3ZXIuIElmIHlvdSByZXF1aXJlIFdpbmRvd3MgWFAgc3VwcG9ydAotdGhlbiBwbGVhc2UgaW5zdGFsbCBQeXRob24gMy40LgorUHl0aG9uIHx2ZXJzaW9ufCBzdXBwb3J0cyBXaW5kb3dzIFZpc3RhIGFuZCBuZXdlci4gSWYgeW91IHJlcXVpcmUgV2luZG93cyBYUAorc3VwcG9ydCB0aGVuIHBsZWFzZSBpbnN0YWxsIFB5dGhvbiAzLjQuCiAKIEluc3RhbGxhdGlvbiBTdGVwcwogLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUZvdXIgUHl0aG9uIDMuNSBpbnN0YWxsZXJzIGFyZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIC0gdHdvIGVhY2ggZm9yIHRoZSAzMi1iaXQKLWFuZCA2NC1iaXQgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLiBUaGUgKndlYiBpbnN0YWxsZXIqIGlzIGEgc21hbGwgaW5pdGlhbAotZG93bmxvYWQsIGFuZCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHMgYXMKK0ZvdXIgUHl0aG9uIHx2ZXJzaW9ufCBpbnN0YWxsZXJzIGFyZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIC0gdHdvIGVhY2ggZm9yIHRoZQorMzItYml0IGFuZCA2NC1iaXQgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLiBUaGUgKndlYiBpbnN0YWxsZXIqIGlzIGEgc21hbGwKK2luaXRpYWwgZG93bmxvYWQsIGFuZCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHMgYXMKIG5lY2Vzc2FyeS4gVGhlICpvZmZsaW5lIGluc3RhbGxlciogaW5jbHVkZXMgdGhlIGNvbXBvbmVudHMgbmVjZXNzYXJ5IGZvciBhCiBkZWZhdWx0IGluc3RhbGxhdGlvbiBhbmQgb25seSByZXF1aXJlcyBhbiBpbnRlcm5ldCBjb25uZWN0aW9uIGZvciBvcHRpb25hbAogZmVhdHVyZXMuIFNlZSA6cmVmOmBpbnN0YWxsLWxheW91dC1vcHRpb25gIGZvciBvdGhlciB3YXlzIHRvIGF2b2lkIGRvd25sb2FkaW5nCkBAIC03NCw2ICs3NCwzMSBAQAogKiBJZiBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c3RlbSA6ZW52dmFyOmBQQVRIYAogKiBTaG9ydGN1dHMgYXJlIGF2YWlsYWJsZSBmb3IgYWxsIHVzZXJzCiAKKy4uIF9tYXgtcGF0aDoKKworUmVtb3ZpbmcgdGhlIE1BWF9QQVRIIExpbWl0YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dpbmRvd3MgaGlzdG9yaWNhbGx5IGhhcyBsaW1pdGVkIHBhdGggbGVuZ3RocyB0byAyNjAgY2hhcmFjdGVycy4gVGhpcyBtZWFudCB0aGF0CitwYXRocyBsb25nZXIgdGhhbiB0aGlzIHdvdWxkIG5vdCByZXNvbHZlIGFuZCBlcnJvcnMgd291bGQgcmVzdWx0LgorCitJbiB0aGUgbGF0ZXN0IHZlcnNpb25zIG9mIFdpbmRvd3MsIHRoaXMgbGltaXRhdGlvbiBjYW4gYmUgZXhwYW5kZWQgdG8KK2FwcHJveGltYXRlbHkgMzIsMDAwIGNoYXJhY3RlcnMuIFlvdXIgYWRtaW5pc3RyYXRvciB3aWxsIG5lZWQgdG8gYWN0aXZhdGUgdGhlCisiRW5hYmxlIFdpbjMyIGxvbmcgcGF0aHMiIGdyb3VwIHBvbGljeSwgb3Igc2V0IHRoZSByZWdpc3RyeSB2YWx1ZQorYGBIS0VZX0xPQ0FMX01BQ0hJTkVcU1lTVEVNXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xcRmlsZVN5c3RlbUBMb25nUGF0aHNFbmFibGVkYGAKK3RvIGBgMWBgLgorCitUaGlzIGFsbG93cyB0aGUgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9uLCB0aGUgOm1vZDpgb3NgIG1vZHVsZSBhbmQgbW9zdCBvdGhlcgorcGF0aCBmdW5jdGlvbmFsaXR5IHRvIGFjY2VwdCBhbmQgcmV0dXJuIHBhdGhzIGxvbmdlciB0aGFuIDI2MCBjaGFyYWN0ZXJzIHdoZW4KK3VzaW5nIHN0cmluZ3MuIChVc2Ugb2YgYnl0ZXMgYXMgcGF0aHMgaXMgZGVwcmVjYXRlZCBvbiBXaW5kb3dzLCBhbmQgdGhpcyBmZWF0dXJlCitpcyBub3QgYXZhaWxhYmxlIHdoZW4gdXNpbmcgYnl0ZXMuKQorCitBZnRlciBjaGFuZ2luZyB0aGUgYWJvdmUgb3B0aW9uLCBubyBmdXJ0aGVyIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgIFN1cHBvcnQgZm9yIGxvbmcgcGF0aHMgd2FzIGVuYWJsZWQgaW4gUHl0aG9uLgorCiAuLiBfaW5zdGFsbC1xdWlldC1vcHRpb246CiAKIEluc3RhbGxpbmcgV2l0aG91dCBVSQpAQCAtMTY4LDEzICsxOTMsMTMgQEAKIEZvciBleGFtcGxlLCB0byBzaWxlbnRseSBpbnN0YWxsIGEgZGVmYXVsdCwgc3lzdGVtLXdpZGUgUHl0aG9uIGluc3RhbGxhdGlvbiwKIHlvdSBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIChmcm9tIGFuIGVsZXZhdGVkIGNvbW1hbmQgcHJvbXB0KTo6CiAKLSAgICBweXRob24tMy41LjAuZXhlIC9xdWlldCBJbnN0YWxsQWxsVXNlcnM9MSBQcmVwZW5kUGF0aD0xIEluY2x1ZGVfdGVzdD0wCisgICAgcHl0aG9uLTMuNi4wLmV4ZSAvcXVpZXQgSW5zdGFsbEFsbFVzZXJzPTEgUHJlcGVuZFBhdGg9MSBJbmNsdWRlX3Rlc3Q9MAogCiBUbyBhbGxvdyB1c2VycyB0byBlYXNpbHkgaW5zdGFsbCBhIHBlcnNvbmFsIGNvcHkgb2YgUHl0aG9uIHdpdGhvdXQgdGhlIHRlc3QKIHN1aXRlLCB5b3UgY291bGQgcHJvdmlkZSBhIHNob3J0Y3V0IHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kLiBUaGlzIHdpbGwKIGRpc3BsYXkgYSBzaW1wbGlmaWVkIGluaXRpYWwgcGFnZSBhbmQgZGlzYWxsb3cgY3VzdG9taXphdGlvbjo6CiAKLSAgICBweXRob24tMy41LjAuZXhlIEluc3RhbGxBbGxVc2Vycz0wIEluY2x1ZGVfbGF1bmNoZXI9MCBJbmNsdWRlX3Rlc3Q9MAorICAgIHB5dGhvbi0zLjYuMC5leGUgSW5zdGFsbEFsbFVzZXJzPTAgSW5jbHVkZV9sYXVuY2hlcj0wIEluY2x1ZGVfdGVzdD0wCiAgICAgICAgIFNpbXBsZUluc3RhbGw9MSBTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb249Ikp1c3QgZm9yIG1lLCBubyB0ZXN0IHN1aXRlLiIKIAogKE5vdGUgdGhhdCBvbWl0dGluZyB0aGUgbGF1bmNoZXIgYWxzbyBvbWl0cyBmaWxlIGFzc29jaWF0aW9ucywgYW5kIGlzIG9ubHkKQEAgLTIwOSwxMyArMjM0LDEzIEBACiB1c2VmdWwgdG8gaGF2ZSBhIGxvY2FsbHkgY2FjaGVkIGNvcHkuCiAKIEV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gQ29tbWFuZCBQcm9tcHQgdG8gZG93bmxvYWQgYWxsIHBvc3NpYmxlCi1yZXF1aXJlZCBmaWxlcy4gIFJlbWVtYmVyIHRvIHN1YnN0aXR1dGUgYGBweXRob24tMy41LjAuZXhlYGAgZm9yIHRoZSBhY3R1YWwKK3JlcXVpcmVkIGZpbGVzLiAgUmVtZW1iZXIgdG8gc3Vic3RpdHV0ZSBgYHB5dGhvbi0zLjYuMC5leGVgYCBmb3IgdGhlIGFjdHVhbAogbmFtZSBvZiB5b3VyIGluc3RhbGxlciwgYW5kIHRvIGNyZWF0ZSBsYXlvdXRzIGluIHRoZWlyIG93biBkaXJlY3RvcmllcyB0bwogYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIGZpbGVzIHdpdGggdGhlIHNhbWUgbmFtZS4KIAogOjoKIAotICAgIHB5dGhvbi0zLjUuMC5leGUgL2xheW91dCBbb3B0aW9uYWwgdGFyZ2V0IGRpcmVjdG9yeV0KKyAgICBweXRob24tMy42LjAuZXhlIC9sYXlvdXQgW29wdGlvbmFsIHRhcmdldCBkaXJlY3RvcnldCiAKIFlvdSBtYXkgYWxzbyBzcGVjaWZ5IHRoZSBgYC9xdWlldGBgIG9wdGlvbiB0byBoaWRlIHRoZSBwcm9ncmVzcyBkaXNwbGF5LgogCkBAIC0zMjAsNyArMzQ1LDcgQEAKIFRvIHRlbXBvcmFyaWx5IHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG9wZW4gQ29tbWFuZCBQcm9tcHQgYW5kIHVzZSB0aGUKIDpjb21tYW5kOmBzZXRgIGNvbW1hbmQ6OgogCi0gICAgQzpcPnNldCBQQVRIPUM6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNTslUEFUSCUKKyAgICBDOlw+c2V0IFBBVEg9QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy42OyVQQVRIJQogICAgIEM6XD5zZXQgUFlUSE9OUEFUSD0lUFlUSE9OUEFUSCU7QzpcTXlfcHl0aG9uX2xpYgogICAgIEM6XD5weXRob24KIApAQCAtMzc2LDEwICs0MDEsMTAgQEAKIAogQmVzaWRlcyB1c2luZyB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIHN0YXJ0IG1lbnUgZW50cnkgZm9yIHRoZSBQeXRob24KIGludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIGNvbW1hbmQgcHJvbXB0LiBUaGUKLWluc3RhbGxlciBmb3IgUHl0aG9uIDMuNSBhbmQgbGF0ZXIgaGFzIGFuIG9wdGlvbiB0byBzZXQgdGhhdCB1cCBmb3IgeW91LgoraW5zdGFsbGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KIAotT24gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGluc3RhbGxlciwgYW4gb3B0aW9uIGxhYmVsbGVkICJBZGQgUHl0aG9uIDMuNSB0bwotUEFUSCIgY2FuIGJlIHNlbGVjdGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBhZGQgdGhlIGluc3RhbGwgbG9jYXRpb24gaW50byB0aGUKK09uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBpbnN0YWxsZXIsIGFuIG9wdGlvbiBsYWJlbGxlZCAiQWRkIFB5dGhvbiB0byBQQVRIIgorbWF5IGJlIHNlbGVjdGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBhZGQgdGhlIGluc3RhbGwgbG9jYXRpb24gaW50byB0aGUKIDplbnZ2YXI6YFBBVEhgLiAgVGhlIGxvY2F0aW9uIG9mIHRoZSA6ZmlsZTpgU2NyaXB0c1xcYCBmb2xkZXIgaXMgYWxzbyBhZGRlZC4KIFRoaXMgYWxsb3dzIHlvdSB0byB0eXBlIDpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIsIGFuZAogOmNvbW1hbmQ6YHBpcGAgZm9yIHRoZSBwYWNrYWdlIGluc3RhbGxlci4gVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91cgpAQCAtMzkzLDcgKzQxOCw3IEBACiBleGFtcGxlIHZhcmlhYmxlIGNvdWxkIGxvb2sgbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvIGVudHJpZXMgYWxyZWFkeQogZXhpc3RlZCk6OgogCi0gICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNQorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjYKIAogLi4gX2xhdW5jaGVyOgogCkBAIC00MTgsNiArNDQzLDggQEAKIEZyb20gdGhlIGNvbW1hbmQtbGluZQogXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKIFN5c3RlbS13aWRlIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIDMuMyBhbmQgbGF0ZXIgd2lsbCBwdXQgdGhlIGxhdW5jaGVyIG9uIHlvdXIKIDplbnZ2YXI6YFBBVEhgLiBUaGUgbGF1bmNoZXIgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBhdmFpbGFibGUgdmVyc2lvbnMgb2YKIFB5dGhvbiwgc28gaXQgZG9lcyBub3QgbWF0dGVyIHdoaWNoIHZlcnNpb24gaXMgaW5zdGFsbGVkLiBUbyBjaGVjayB0aGF0IHRoZQpAQCAtNDI3LDI1ICs0NTQsMjYgQEAKIAogICBweQogCi1Zb3Ugc2hvdWxkIGZpbmQgdGhhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCB5b3UgaGF2ZSBpbnN0YWxsZWQgaXMKK1lvdSBzaG91bGQgZmluZCB0aGF0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24geW91IGhhdmUgaW5zdGFsbGVkIGlzCiBzdGFydGVkIC0gaXQgY2FuIGJlIGV4aXRlZCBhcyBub3JtYWwsIGFuZCBhbnkgYWRkaXRpb25hbCBjb21tYW5kLWxpbmUKIGFyZ3VtZW50cyBzcGVjaWZpZWQgd2lsbCBiZSBzZW50IGRpcmVjdGx5IHRvIFB5dGhvbi4KIAotSWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIDIueCBpbnN0YWxsZWQgKGUuZy4sIDIuNiBhbmQgMi43KSB5b3UKLXdpbGwgaGF2ZSBub3RpY2VkIHRoYXQgUHl0aG9uIDIuNyB3YXMgc3RhcnRlZCAtIHRvIGxhdW5jaCBQeXRob24gMi42LCB0cnkgdGhlCitJZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gaW5zdGFsbGVkIChlLmcuLCAyLjcgYW5kIHx2ZXJzaW9ufCkgeW91Cit3aWxsIGhhdmUgbm90aWNlZCB0aGF0IFB5dGhvbiB8dmVyc2lvbnwgd2FzIHN0YXJ0ZWQgLSB0byBsYXVuY2ggUHl0aG9uIDIuNywgdHJ5Cit0aGUgY29tbWFuZDoKKworOjoKKworICBweSAtMi43CisKK0lmIHlvdSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHlvdSBoYXZlIGluc3RhbGxlZCwgdHJ5IHRoZQogY29tbWFuZDoKIAogOjoKIAotICBweSAtMi42CisgIHB5IC0yCiAKLUlmIHlvdSBoYXZlIGEgUHl0aG9uIDMueCBpbnN0YWxsZWQsIHRyeSB0aGUgY29tbWFuZDoKLQotOjoKLQotICBweSAtMwotCi1Zb3Ugc2hvdWxkIGZpbmQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAzLnggc3RhcnRzLgorWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHN0YXJ0cy4KIAogSWYgeW91IHNlZSB0aGUgZm9sbG93aW5nIGVycm9yLCB5b3UgZG8gbm90IGhhdmUgdGhlIGxhdW5jaGVyIGluc3RhbGxlZDoKIApAQCAtNTAwLDYgKzUyOCwxMSBAQAogZmlyc3QgbGluZSB0byBgYCMhIHB5dGhvbjIuNmBgIGFuZCB5b3Ugc2hvdWxkIGZpbmQgdGhlIDIuNiB2ZXJzaW9uCiBpbmZvcm1hdGlvbiBwcmludGVkLgogCitOb3RlIHRoYXQgdW5saWtlIGludGVyYWN0aXZlIHVzZSwgYSBiYXJlICJweXRob24iIHdpbGwgdXNlIHRoZSBsYXRlc3QKK3ZlcnNpb24gb2YgUHl0aG9uIDIueCB0aGF0IHlvdSBoYXZlIGluc3RhbGxlZC4gIFRoaXMgaXMgZm9yIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IGFuZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFVuaXgsIHdoZXJlIHRoZSBjb21tYW5kIGBgcHl0aG9uYGAKK3R5cGljYWxseSByZWZlcnMgdG8gUHl0aG9uIDIuCisKIEZyb20gZmlsZSBhc3NvY2lhdGlvbnMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIApAQCAtNjc2LDcgKzcwOSw3IEBACiAKIAogCi0uLiBmaW5kaW5nX21vZHVsZXM6CisuLiBfZmluZGluZ19tb2R1bGVzOgogCiBGaW5kaW5nIG1vZHVsZXMKID09PT09PT09PT09PT09PQpAQCAtNjg3LDcgKzcyMCwyNCBAQAogOmZpbGU6YEM6XFxQeXRob25cXExpYlxcYCBhbmQgdGhpcmQtcGFydHkgbW9kdWxlcyBzaG91bGQgYmUgc3RvcmVkIGluCiA6ZmlsZTpgQzpcXFB5dGhvblxcTGliXFxzaXRlLXBhY2thZ2VzXFxgLgogCi1UaGlzIGlzIGhvdyA6ZGF0YTpgc3lzLnBhdGhgIGlzIHBvcHVsYXRlZCBvbiBXaW5kb3dzOgorVG8gY29tcGxldGVseSBvdmVycmlkZSA6ZGF0YTpgc3lzLnBhdGhgLCBjcmVhdGUgYSBgYC5fcHRoYGAgZmlsZSB3aXRoIHRoZSBzYW1lCituYW1lIGFzIHRoZSBETEwgKGBgcHl0aG9uMzYuX3B0aGBgKSBvciB0aGUgZXhlY3V0YWJsZSAoYGBweXRob24uX3B0aGBgKSBhbmQKK3NwZWNpZnkgb25lIGxpbmUgZm9yIGVhY2ggcGF0aCB0byBhZGQgdG8gOmRhdGE6YHN5cy5wYXRoYC4gVGhlIGZpbGUgYmFzZWQgb24gdGhlCitETEwgbmFtZSBvdmVycmlkZXMgdGhlIG9uZSBiYXNlZCBvbiB0aGUgZXhlY3V0YWJsZSwgd2hpY2ggYWxsb3dzIHBhdGhzIHRvIGJlCityZXN0cmljdGVkIGZvciBhbnkgcHJvZ3JhbSBsb2FkaW5nIHRoZSBydW50aW1lIGlmIGRlc2lyZWQuCisKK1doZW4gdGhlIGZpbGUgZXhpc3RzLCBhbGwgcmVnaXN0cnkgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgaWdub3JlZCwKK2lzb2xhdGVkIG1vZGUgaXMgZW5hYmxlZCwgYW5kIDptb2Q6YHNpdGVgIGlzIG5vdCBpbXBvcnRlZCB1bmxlc3Mgb25lIGxpbmUgaW4gdGhlCitmaWxlIHNwZWNpZmllcyBgYGltcG9ydCBzaXRlYGAuIEJsYW5rIHBhdGhzIGFuZCBsaW5lcyBzdGFydGluZyB3aXRoIGBgI2BgIGFyZQoraWdub3JlZC4gRWFjaCBwYXRoIG1heSBiZSBhYnNvbHV0ZSBvciByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGUuCitJbXBvcnQgc3RhdGVtZW50cyBvdGhlciB0aGFuIHRvIGBgc2l0ZWBgIGFyZSBub3QgcGVybWl0dGVkLCBhbmQgYXJiaXRyYXJ5IGNvZGUKK2Nhbm5vdCBiZSBzcGVjaWZpZWQuCisKK05vdGUgdGhhdCBgYC5wdGhgYCBmaWxlcyAod2l0aG91dCBsZWFkaW5nIHVuZGVyc2NvcmUpIHdpbGwgYmUgcHJvY2Vzc2VkIG5vcm1hbGx5CitieSB0aGUgOm1vZDpgc2l0ZWAgbW9kdWxlLgorCitXaGVuIG5vIGBgLl9wdGhgYCBmaWxlIGlzIGZvdW5kLCB0aGlzIGlzIGhvdyA6ZGF0YTpgc3lzLnBhdGhgIGlzIHBvcHVsYXRlZCBvbgorV2luZG93czoKIAogKiBBbiBlbXB0eSBlbnRyeSBpcyBhZGRlZCBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50CiAgIGRpcmVjdG9yeS4KQEAgLTcwNiwxMCArNzU2LDExIEBACiAKICogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTkhPTUVgIGlzIHNldCwgaXQgaXMgYXNzdW1lZCBhcwogICAiUHl0aG9uIEhvbWUiLiAgT3RoZXJ3aXNlLCB0aGUgcGF0aCBvZiB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSBpcyB1c2VkIHRvCi0gIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoYGBMaWJcb3MucHlgYCkgdG8gZGVkdWNlIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYQotICBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgCi0gIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZQotICBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCisgIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoZWl0aGVyIGBgTGliXG9zLnB5YGAgb3IgYGBweXRob25YWS56aXBgYCkgdG8gZGVkdWNlCisgIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYSBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcworICBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQKKyAgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZSBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoCisgIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCiAKICogSWYgdGhlIFB5dGhvbiBIb21lIGNhbm5vdCBiZSBsb2NhdGVkLCBubyA6ZW52dmFyOmBQWVRIT05QQVRIYCBpcyBzcGVjaWZpZWQgaW4KICAgdGhlIGVudmlyb25tZW50LCBhbmQgbm8gcmVnaXN0cnkgZW50cmllcyBjYW4gYmUgZm91bmQsIGEgZGVmYXVsdCBwYXRoIHdpdGgKQEAgLTcyMiwxMCArNzczLDYgQEAKICAgcGF0aCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIHBhdGggdG8gdGhlIG1haW4gZXhlY3V0YWJsZSB3aGVuIGRlZHVjaW5nIHRoZQogICBob21lIGxvY2F0aW9uLgogCi0qIElmIGBgYXBwbG9jYWxgYCBpcyBzZXQgdG8gdHJ1ZSwgdGhlIGBgaG9tZWBgIHByb3BlcnR5IG9yIHRoZSBtYWluIGV4ZWN1dGFibGUKLSAgaXMgYWx3YXlzIHVzZWQgYXMgdGhlIGhvbWUgcGF0aCwgYW5kIGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgcmVnaXN0cnkKLSAgdmFsdWVzIGFmZmVjdGluZyB0aGUgcGF0aCBhcmUgaWdub3JlZC4gVGhlIGxhbmRtYXJrIGZpbGUgaXMgbm90IGNoZWNrZWQuCi0KIFRoZSBlbmQgcmVzdWx0IG9mIGFsbCB0aGlzIGlzOgogCiAqIFdoZW4gcnVubmluZyA6ZmlsZTpgcHl0aG9uLmV4ZWAsIG9yIGFueSBvdGhlciAuZXhlIGluIHRoZSBtYWluIFB5dGhvbgpAQCAtNzQ0LDEzICs3OTEsMTIgQEAKIEZvciB0aG9zZSB3aG8gd2FudCB0byBidW5kbGUgUHl0aG9uIGludG8gdGhlaXIgYXBwbGljYXRpb24gb3IgZGlzdHJpYnV0aW9uLCB0aGUKIGZvbGxvd2luZyBhZHZpY2Ugd2lsbCBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIG90aGVyIGluc3RhbGxhdGlvbnM6CiAKLSogSW5jbHVkZSBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxvbmdzaWRlIHlvdXIgZXhlY3V0YWJsZSBjb250YWluaW5nCi0gIGBgYXBwbG9jYWwgPSB0cnVlYGAuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB5b3VyIG93biBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkIHRvCi0gIHJlc29sdmUgcGF0aHMgZXZlbiBpZiB5b3UgaGF2ZSBpbmNsdWRlZCB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbiBhIFpJUCBmaWxlLgotICBJdCB3aWxsIGFsc28gaWdub3JlIHVzZXIgc2l0ZS1wYWNrYWdlcyBhbmQgb3RoZXIgcGF0aHMgbGlzdGVkIGluIHRoZQotICByZWdpc3RyeS4KKyogSW5jbHVkZSBhIGBgLl9wdGhgYCBmaWxlIGFsb25nc2lkZSB5b3VyIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUKKyAgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZS4gVGhpcyB3aWxsIGlnbm9yZSBwYXRocyBsaXN0ZWQgaW4gdGhlIHJlZ2lzdHJ5IGFuZAorICBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZCBhbHNvIGlnbm9yZSA6bW9kOmBzaXRlYCB1bmxlc3MgYGBpbXBvcnQgc2l0ZWBgIGlzCisgIGxpc3RlZC4KIAotKiBJZiB5b3UgYXJlIGxvYWRpbmcgOmZpbGU6YHB5dGhvbjMuZGxsYCBvciA6ZmlsZTpgcHl0aG9uMzUuZGxsYCBpbiB5b3VyIG93bgorKiBJZiB5b3UgYXJlIGxvYWRpbmcgOmZpbGU6YHB5dGhvbjMuZGxsYCBvciA6ZmlsZTpgcHl0aG9uMzYuZGxsYCBpbiB5b3VyIG93bgogICBleGVjdXRhYmxlLCBleHBsaWNpdGx5IGNhbGwgOmM6ZnVuYzpgUHlfU2V0UGF0aGAgb3IgKGF0IGxlYXN0KQogICA6YzpmdW5jOmBQeV9TZXRQcm9ncmFtTmFtZWAgYmVmb3JlIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLgogCkBAIC03NjAsNyArODA2LDggQEAKICogSWYgeW91IGNhbm5vdCB1c2UgdGhlIHByZXZpb3VzIHN1Z2dlc3Rpb25zIChmb3IgZXhhbXBsZSwgeW91IGFyZSBhCiAgIGRpc3RyaWJ1dGlvbiB0aGF0IGFsbG93cyBwZW9wbGUgdG8gcnVuIDpmaWxlOmBweXRob24uZXhlYCBkaXJlY3RseSksIGVuc3VyZQogICB0aGF0IHRoZSBsYW5kbWFyayBmaWxlICg6ZmlsZTpgTGliXFxvcy5weWApIGV4aXN0cyBpbiB5b3VyIGluc3RhbGwgZGlyZWN0b3J5LgotICAoTm90ZSB0aGF0IGl0IHdpbGwgbm90IGJlIGRldGVjdGVkIGluc2lkZSBhIFpJUCBmaWxlLikKKyAgKE5vdGUgdGhhdCBpdCB3aWxsIG5vdCBiZSBkZXRlY3RlZCBpbnNpZGUgYSBaSVAgZmlsZSwgYnV0IGEgY29ycmVjdGx5IG5hbWVkCisgIFpJUCBmaWxlIHdpbGwgYmUgZGV0ZWN0ZWQgaW5zdGVhZC4pCiAKIFRoZXNlIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGZpbGVzIGluIGEgc3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9uIHdpbGwgbm90IHRha2UKIHByZWNlZGVuY2Ugb3ZlciB0aGUgY29weSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBidW5kbGVkIHdpdGggeW91ciBhcHBsaWNhdGlvbi4KQEAgLTc2OCw2ICs4MTUsMTQgQEAKIHRoZSBmaXJzdCBzdWdnZXN0aW9uIGlzIHRoZSBiZXN0LCBhcyB0aGUgb3RoZXIgbWF5IHN0aWxsIGJlIHN1c2NlcHRpYmxlIHRvCiBub24tc3RhbmRhcmQgcGF0aHMgaW4gdGhlIHJlZ2lzdHJ5IGFuZCB1c2VyIHNpdGUtcGFja2FnZXMuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgIDMuNgorCisgICAqIEFkZHMgYGBzeXMucGF0aGBgIGZpbGUgc3VwcG9ydCBhbmQgcmVtb3ZlcyBgYGFwcGxvY2FsYGAgb3B0aW9uIGZyb20KKyAgICAgYGBweXZlbnYuY2ZnYGAuCisgICAqIEFkZHMgYGBweXRob25YWC56aXBgYCBhcyBhIHBvdGVudGlhbCBsYW5kbWFyayB3aGVuIGRpcmVjdGx5IGFkamFjZW50CisgICAgIHRvIHRoZSBleGVjdXRhYmxlLgorCiBBZGRpdGlvbmFsIG1vZHVsZXMKID09PT09PT09PT09PT09PT09PQogCkBAIC04NjcsNyArOTIyLDcgQEAKIFdoZW4gZXh0cmFjdGVkLCB0aGUgZW1iZWRkZWQgZGlzdHJpYnV0aW9uIGlzIChhbG1vc3QpIGZ1bGx5IGlzb2xhdGVkIGZyb20gdGhlCiB1c2VyJ3Mgc3lzdGVtLCBpbmNsdWRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBzeXN0ZW0gcmVnaXN0cnkgc2V0dGluZ3MsIGFuZAogaW5zdGFsbGVkIHBhY2thZ2VzLiBUaGUgc3RhbmRhcmQgbGlicmFyeSBpcyBpbmNsdWRlZCBhcyBwcmUtY29tcGlsZWQgYW5kCi1vcHRpbWl6ZWQgYGAucHljYGAgZmlsZXMgaW4gYSBaSVAsIGFuZCBgYHB5dGhvbjMuZGxsYGAsIGBgcHl0aG9uMzUuZGxsYGAsCitvcHRpbWl6ZWQgYGAucHljYGAgZmlsZXMgaW4gYSBaSVAsIGFuZCBgYHB5dGhvbjMuZGxsYGAsIGBgcHl0aG9uMzYuZGxsYGAsCiBgYHB5dGhvbi5leGVgYCBhbmQgYGBweXRob253LmV4ZWBgIGFyZSBhbGwgcHJvdmlkZWQuIFRjbC90ayAoaW5jbHVkaW5nIGFsbAogZGVwZW5kYW50cywgc3VjaCBhcyBJZGxlKSwgcGlwIGFuZCB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24gYXJlIG5vdCBpbmNsdWRlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAppbmRleCAwNjM2NmI4Li42YWFlNzI2IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdApAQCAtMzY3LDcgKzM2Nyw3IEBACiAKIFRoaXMgdmVyc2lvbiB3b3JrcyBmb3Igc2ltcGxlIHRoaW5ncyBzdWNoIGFzIGludGVnZXJzLCBidXQgaXQgaGFzIGEgc2lkZSBlZmZlY3Q7CiB0aGUgYGBfY2FjaGVgYCBkaWN0aW9uYXJ5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSByZXR1cm4gdmFsdWVzLCBzbyB0aGV5J2xsCi1uZXZlciBiZSBkZWFsbG9jYXRlZCB1bnRpbCB0aGUgUHl0aG9uIHByb2Nlc3MgZXhpdHMgYW5kIGNsZWFucyB1cCBUaGlzIGlzbid0CituZXZlciBiZSBkZWFsbG9jYXRlZCB1bnRpbCB0aGUgUHl0aG9uIHByb2Nlc3MgZXhpdHMgYW5kIGNsZWFucyB1cC4gVGhpcyBpc24ndAogdmVyeSBub3RpY2VhYmxlIGZvciBpbnRlZ2VycywgYnV0IGlmIDpmdW5jOmBmYCByZXR1cm5zIGFuIG9iamVjdCwgb3IgYSBkYXRhCiBzdHJ1Y3R1cmUgdGhhdCB0YWtlcyB1cCBhIGxvdCBvZiBtZW1vcnksIHRoaXMgY2FuIGJlIGEgcHJvYmxlbS4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAppbmRleCA5ZjM1ODRkLi4zZDIzN2VhIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdApAQCAtMTI1Myw5ICsxMjUzLDkgQEAKIAogICAgIEBjb250ZXh0bWFuYWdlcgogICAgIGRlZiB0cmFja19lbnRyeV9hbmRfZXhpdChuYW1lKToKLSAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzoge30nLmZvcm1hdChuYW1lKSkKKyAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzogJXMnLCBuYW1lKQogICAgICAgICB5aWVsZAotICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisgICAgICAgIGxvZ2dpbmcuaW5mbygnRXhpdGluZzogJXMnLCBuYW1lKQogCiBGb3JtZXJseSwgdGhpcyB3b3VsZCBoYXZlIG9ubHkgYmVlbiB1c2FibGUgYXMgYSBjb250ZXh0IG1hbmFnZXI6OgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4zLnJzdCBiL0RvYy93aGF0c25ldy8zLjMucnN0CmluZGV4IDFjZmE5MjYuLjQ4YjhhM2IgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjMucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjMucnN0CkBAIC0xMDgsNyArMTA4LDcgQEAKIHdpdGggdGhlIGludGVycHJldGVyIGNvcmUuCiAKIFRoaXMgUEVQIGFkZHMgdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBmb3IgcHJvZ3JhbW1hdGljIGFjY2VzcywgYW5kIHRoZQotOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIHNjcmlwdCBmb3IgY29tbWFuZC1saW5lIGFjY2VzcyBhbmQKK2BgcHl2ZW52YGAgc2NyaXB0IGZvciBjb21tYW5kLWxpbmUgYWNjZXNzIGFuZAogYWRtaW5pc3RyYXRpb24uICBUaGUgUHl0aG9uIGludGVycHJldGVyIGNoZWNrcyBmb3IgYSBgYHB5dmVudi5jZmdgYCwKIGZpbGUgd2hvc2UgZXhpc3RlbmNlIHNpZ25hbHMgdGhlIGJhc2Ugb2YgYSB2aXJ0dWFsIGVudmlyb25tZW50J3MgZGlyZWN0b3J5CiB0cmVlLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuNC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy40LnJzdAppbmRleCAxZTVjOWQxLi43MjM5OGY5IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy40LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy40LnJzdApAQCAtMTk3LDcgKzE5Nyw3IEBACiBgYHBpcGBgIGNvbW1hbmQgdHlwaWNhbGx5IHJlZmVycyB0byB0aGUgc2VwYXJhdGVseSBpbnN0YWxsZWQgUHl0aG9uIDIKIHZlcnNpb24uCiAKLVRoZSA6cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYW5kIHRoZSA6bW9kOmB2ZW52YAorVGhlIGBgcHl2ZW52YGAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYW5kIHRoZSA6bW9kOmB2ZW52YAogbW9kdWxlIG1ha2UgdXNlIG9mIHRoZSA6bW9kOmBlbnN1cmVwaXBgIG1vZHVsZSB0byBtYWtlIGBgcGlwYGAgcmVhZGlseQogYXZhaWxhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBXaGVuIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgdXRpbGl0eSwKIGBgcGlwYGAgaXMgaW5zdGFsbGVkIGJ5IGRlZmF1bHQsIHdoaWxlIHdoZW4gdXNpbmcgdGhlIDptb2Q6YHZlbnZgIG1vZHVsZQpAQCAtODI0LDcgKzgyNCw3IEBACiA6dGVybTpgcHJvdmlzaW9uYWwgQVBJYC4gIFRoZXNlIGNsYXNzZXMgcHJvdmlkZSBhIG51bWJlciBvZiBuZXcgbWV0aG9kcyB0aGF0CiBtYWtlIGV4dHJhY3RpbmcgY29udGVudCBmcm9tIGFuZCBpbnNlcnRpbmcgY29udGVudCBpbnRvIGVtYWlsIG1lc3NhZ2VzIG11Y2gKIGVhc2llci4gIEZvciBkZXRhaWxzLCBzZWUgdGhlIDptb2Q6YH5lbWFpbC5jb250ZW50bWFuYWdlcmAgZG9jdW1lbnRhdGlvbiBhbmQKLXRoZSA6cmVmOmBlbWFpbC1jb250ZW50bWFuYWdlci1hcGktZXhhbXBsZXNgLiAgVGhlc2UgQVBJIGFkZGl0aW9ucyBjb21wbGV0ZSB0aGUKK3RoZSA6cmVmOmBlbWFpbC1leGFtcGxlc2AuICBUaGVzZSBBUEkgYWRkaXRpb25zIGNvbXBsZXRlIHRoZQogYnVsayBvZiB0aGUgd29yayB0aGF0IHdhcyBwbGFubmVkIGFzIHBhcnQgb2YgdGhlIGVtYWlsNiBwcm9qZWN0LiAgVGhlIGN1cnJlbnRseQogcHJvdmlzaW9uYWwgQVBJIGlzIHNjaGVkdWxlZCB0byBiZWNvbWUgZmluYWwgaW4gUHl0aG9uIDMuNSAocG9zc2libHkgd2l0aCBhIGZldwogbWlub3IgYWRkaXRpb25zIGluIHRoZSBhcmVhIG9mIGVycm9yIGhhbmRsaW5nKS4gIChDb250cmlidXRlZCBieSBSLiBEYXZpZApAQCAtMTk4OSwxMSArMTk4OSwxMSBAQAogICBTdGlubmVyIHVzaW5nIGhpcyA6cGVwOmA0NDVgLWJhc2VkIGBgcHlmYWlsbWFsbG9jYGAgdG9vbCAoOmlzc3VlOmAxODQwOGAsCiAgIDppc3N1ZTpgMTg1MjBgKS4KIAotKiBUaGUgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGNvbW1hbmQgbm93IGFjY2VwdHMgYSBgYC0tY29waWVzYGAgb3B0aW9uCisqIFRoZSBgYHB5dmVudmBgIGNvbW1hbmQgbm93IGFjY2VwdHMgYSBgYC0tY29waWVzYGAgb3B0aW9uCiAgIHRvIHVzZSBjb3BpZXMgcmF0aGVyIHRoYW4gc3ltbGlua3MgZXZlbiBvbiBzeXN0ZW1zIHdoZXJlIHN5bWxpbmtzIGFyZSB0aGUKICAgZGVmYXVsdC4gIChDb250cmlidXRlZCBieSBWaW5heSBTYWppcCBpbiA6aXNzdWU6YDE4ODA3YC4pCiAKLSogVGhlIDpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBjb21tYW5kIGFsc28gYWNjZXB0cyBhIGBgLS13aXRob3V0LXBpcGBgCisqIFRoZSBgYHB5dmVudmBgIGNvbW1hbmQgYWxzbyBhY2NlcHRzIGEgYGAtLXdpdGhvdXQtcGlwYGAKICAgb3B0aW9uIHRvIHN1cHByZXNzIHRoZSBvdGhlcndpc2UtYXV0b21hdGljIGJvb3RzdHJhcHBpbmcgb2YgcGlwIGludG8KICAgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuICAoQ29udHJpYnV0ZWQgYnkgTmljayBDb2dobGFuIGluIDppc3N1ZTpgMTk1NTJgCiAgIGFzIHBhcnQgb2YgdGhlIDpwZXA6YDQ1M2AgaW1wbGVtZW50YXRpb24uKQpAQCAtMjQ1OSw3ICsyNDU5LDcgQEAKICAgc3RyZWFtIGluIDptb2Q6YH5pby5UZXh0SU9XcmFwcGVyYCB0byB1c2UgaXRzICpuZXdsaW5lKiBhcmd1bWVudAogICAoOmlzc3VlOmAxNTIwNGApLgogCi0qIElmIHlvdSB1c2UgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGluIGEgc2NyaXB0IGFuZCBkZXNpcmUgdGhhdCBwaXAKKyogSWYgeW91IHVzZSBgYHB5dmVudmBgIGluIGEgc2NyaXB0IGFuZCBkZXNpcmUgdGhhdCBwaXAKICAgKm5vdCogYmUgaW5zdGFsbGVkLCB5b3UgbXVzdCBhZGQgYGAtLXdpdGhvdXQtcGlwYGAgdG8geW91ciBjb21tYW5kCiAgIGludm9jYXRpb24uCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjUucnN0IGIvRG9jL3doYXRzbmV3LzMuNS5yc3QKaW5kZXggOWI3MWY2Ni4uMjQ2ZDljNSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuNS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuNS5yc3QKQEAgLTIxNzYsOCArMjE3Niw3IEBACiAKICogOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYCwKICogOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCwKLSogOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYCwKLSogOmM6ZnVuYzpgX1B5T2JqZWN0X0dDX0NhbGxvY2AuCisqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AuCiAKIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIxMjMzYC4pCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjYucnN0IGIvRG9jL3doYXRzbmV3LzMuNi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiZmY2MAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy93aGF0c25ldy8zLjYucnN0CkBAIC0wLDAgKzEsMTQ4MCBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICBXaGF0J3MgTmV3IEluIFB5dGhvbiAzLjYKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworOlJlbGVhc2U6IHxyZWxlYXNlfAorOkRhdGU6IHx0b2RheXwKKworLi4gUnVsZXMgZm9yIG1haW50ZW5hbmNlOgorCisgICAqIEFueW9uZSBjYW4gYWRkIHRleHQgdG8gdGhpcyBkb2N1bWVudC4gIERvIG5vdCBzcGVuZCB2ZXJ5IG11Y2ggdGltZQorICAgb24gdGhlIHdvcmRpbmcgb2YgeW91ciBjaGFuZ2VzLCBiZWNhdXNlIHlvdXIgdGV4dCB3aWxsIHByb2JhYmx5CisgICBnZXQgcmV3cml0dGVuIHRvIHNvbWUgZGVncmVlLgorCisgICAqIFRoZSBtYWludGFpbmVyIHdpbGwgZ28gdGhyb3VnaCBNaXNjL05FV1MgcGVyaW9kaWNhbGx5IGFuZCBhZGQKKyAgIGNoYW5nZXM7IGl0J3MgdGhlcmVmb3JlIG1vcmUgaW1wb3J0YW50IHRvIGFkZCB5b3VyIGNoYW5nZXMgdG8KKyAgIE1pc2MvTkVXUyB0aGFuIHRvIHRoaXMgZmlsZS4KKworICAgKiBUaGlzIGlzIG5vdCBhIGNvbXBsZXRlIGxpc3Qgb2YgZXZlcnkgc2luZ2xlIGNoYW5nZTsgY29tcGxldGVuZXNzCisgICBpcyB0aGUgcHVycG9zZSBvZiBNaXNjL05FV1MuICBTb21lIGNoYW5nZXMgSSBjb25zaWRlciB0b28gc21hbGwKKyAgIG9yIGVzb3RlcmljIHRvIGluY2x1ZGUuICBJZiBzdWNoIGEgY2hhbmdlIGlzIGFkZGVkIHRvIHRoZSB0ZXh0LAorICAgSSdsbCBqdXN0IHJlbW92ZSBpdC4gIChUaGlzIGlzIGFub3RoZXIgcmVhc29uIHlvdSBzaG91bGRuJ3Qgc3BlbmQKKyAgIHRvbyBtdWNoIHRpbWUgb24gd3JpdGluZyB5b3VyIGFkZGl0aW9uLikKKworICAgKiBJZiB5b3Ugd2FudCB0byBkcmF3IHlvdXIgbmV3IHRleHQgdG8gdGhlIGF0dGVudGlvbiBvZiB0aGUKKyAgIG1haW50YWluZXIsIGFkZCAnWFhYJyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJhZ3JhcGggb3IKKyAgIHNlY3Rpb24uCisKKyAgICogSXQncyBPSyB0byBqdXN0IGFkZCBhIGZyYWdtZW50YXJ5IG5vdGUgYWJvdXQgYSBjaGFuZ2UuICBGb3IKKyAgIGV4YW1wbGU6ICJYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZQorICAgc29ja2V0IG1vZHVsZS4iICBUaGUgbWFpbnRhaW5lciB3aWxsIHJlc2VhcmNoIHRoZSBjaGFuZ2UgYW5kCisgICB3cml0ZSB0aGUgbmVjZXNzYXJ5IHRleHQuCisKKyAgICogWW91IGNhbiBjb21tZW50IG91dCB5b3VyIGFkZGl0aW9ucyBpZiB5b3UgbGlrZSwgYnV0IGl0J3Mgbm90CisgICBuZWNlc3NhcnkgKGVzcGVjaWFsbHkgd2hlbiBhIGZpbmFsIHJlbGVhc2UgaXMgc29tZSBtb250aHMgYXdheSkuCisKKyAgICogQ3JlZGl0IHRoZSBhdXRob3Igb2YgYSBwYXRjaCBvciBidWdmaXguICAgSnVzdCB0aGUgbmFtZSBpcworICAgc3VmZmljaWVudDsgdGhlIGUtbWFpbCBhZGRyZXNzIGlzbid0IG5lY2Vzc2FyeS4KKworICAgKiBJdCdzIGhlbHBmdWwgdG8gYWRkIHRoZSBidWcvcGF0Y2ggbnVtYmVyIGFzIGEgY29tbWVudDoKKworICAgWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUgc29ja2V0CisgICBtb2R1bGUuCisgICAoQ29udHJpYnV0ZWQgYnkgUC5ZLiBEZXZlbG9wZXIgaW4gOmlzc3VlOmAxMjM0NWAuKQorCisgICBUaGlzIHNhdmVzIHRoZSBtYWludGFpbmVyIHRoZSBlZmZvcnQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgTWVyY3VyaWFsIGxvZworICAgd2hlbiByZXNlYXJjaGluZyBhIGNoYW5nZS4KKworVGhpcyBhcnRpY2xlIGV4cGxhaW5zIHRoZSBuZXcgZmVhdHVyZXMgaW4gUHl0aG9uIDMuNiwgY29tcGFyZWQgdG8gMy41LgorCitGb3IgZnVsbCBkZXRhaWxzLCBzZWUgdGhlIDpzb3VyY2U6YE1pc2MvTkVXU2AgZmlsZS4KKworLi4gbm90ZTo6CisKKyAgIFByZXJlbGVhc2UgdXNlcnMgc2hvdWxkIGJlIGF3YXJlIHRoYXQgdGhpcyBkb2N1bWVudCBpcyBjdXJyZW50bHkgaW4gZHJhZnQKKyAgIGZvcm0uIEl0IHdpbGwgYmUgdXBkYXRlZCBzdWJzdGFudGlhbGx5IGFzIFB5dGhvbiAzLjYgbW92ZXMgdG93YXJkcyByZWxlYXNlLAorICAgc28gaXQncyB3b3J0aCBjaGVja2luZyBiYWNrIGV2ZW4gYWZ0ZXIgcmVhZGluZyBlYXJsaWVyIHZlcnNpb25zLgorCisKK1N1bW1hcnkgLS0gUmVsZWFzZSBoaWdobGlnaHRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBUaGlzIHNlY3Rpb24gc2luZ2xlcyBvdXQgdGhlIG1vc3QgaW1wb3J0YW50IGNoYW5nZXMgaW4gUHl0aG9uIDMuNi4KKyAgIEJyZXZpdHkgaXMga2V5LgorCitOZXcgc3ludGF4IGZlYXR1cmVzOgorCisqIEEgYGBnbG9iYWxgYCBvciBgYG5vbmxvY2FsYGAgc3RhdGVtZW50IG11c3Qgbm93IHRleHR1YWxseSBhcHBlYXIKKyAgYmVmb3JlIHRoZSBmaXJzdCB1c2Ugb2YgdGhlIGFmZmVjdGVkIG5hbWUgaW4gdGhlIHNhbWUgc2NvcGUuCisgIFByZXZpb3VzbHkgdGhpcyB3YXMgYSBTeW50YXhXYXJuaW5nLgorCisqIFBFUCA0OTg6IDpyZWY6YEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPHdoYXRzbmV3LWZzdHJpbmdzPmAKKworKiBQRVAgNTE1OiBVbmRlcnNjb3JlcyBpbiBOdW1lcmljIExpdGVyYWxzCisKKyogUEVQIDUyNjogOnJlZjpgU3ludGF4IGZvciBWYXJpYWJsZSBBbm5vdGF0aW9ucyA8dmFyaWFibGUtYW5ub3RhdGlvbnM+YAorCisqIFBFUCA1MjU6IEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzCisKKyogUEVQIDUzMDogQXN5bmNocm9ub3VzIENvbXByZWhlbnNpb25zCisKK1N0YW5kYXJkIGxpYnJhcnkgaW1wcm92ZW1lbnRzOgorCitTZWN1cml0eSBpbXByb3ZlbWVudHM6CisKKyogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgYmxvY2tzIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wKKyAgaXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LiBTZWUgdGhlIDpwZXA6YDUyNGAgZm9yIHRoZQorICByYXRpb25hbGUuCisKKyogOm1vZDpgaGFzaGxpYmAgYW5kIDptb2Q6YHNzbGAgbm93IHN1cHBvcnQgT3BlblNTTCAxLjEuMC4KKworKiBUaGUgZGVmYXVsdCBzZXR0aW5ncyBhbmQgZmVhdHVyZSBzZXQgb2YgdGhlIDptb2Q6YHNzbGAgaGF2ZSBiZWVuIGltcHJvdmVkLgorCisqIFRoZSA6bW9kOmBoYXNobGliYCBtb2R1bGUgaGFzIGdvdCBzdXBwb3J0IGZvciBCTEFLRTIsIFNIQS0zIGFuZCBTSEFLRSBoYXNoCisgIGFsZ29yaXRobXMgYW5kIDpmdW5jOmB+aGFzaGxpYi5zY3J5cHRgIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLgorCitXaW5kb3dzIGltcHJvdmVtZW50czoKKworKiBQRVAgNTI5OiA6cmVmOmBDaGFuZ2UgV2luZG93cyBmaWxlc3lzdGVtIGVuY29kaW5nIHRvIFVURi04IDxwZXAtNTI5PmAKKworKiBQRVAgNTI4OiA6cmVmOmBDaGFuZ2UgV2luZG93cyBjb25zb2xlIGVuY29kaW5nIHRvIFVURi04IDxwZXAtNTI4PmAKKworKiBUaGUgYGBweS5leGVgYCBsYXVuY2hlciwgd2hlbiB1c2VkIGludGVyYWN0aXZlbHksIG5vIGxvbmdlciBwcmVmZXJzCisgIFB5dGhvbiAyIG92ZXIgUHl0aG9uIDMgd2hlbiB0aGUgdXNlciBkb2Vzbid0IHNwZWNpZnkgYSB2ZXJzaW9uICh2aWEKKyAgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvciBhIGNvbmZpZyBmaWxlKS4gIEhhbmRsaW5nIG9mIHNoZWJhbmcgbGluZXMKKyAgcmVtYWlucyB1bmNoYW5nZWQgLSAicHl0aG9uIiByZWZlcnMgdG8gUHl0aG9uIDIgaW4gdGhhdCBjYXNlLgorCisqIGBgcHl0aG9uLmV4ZWBgIGFuZCBgYHB5dGhvbncuZXhlYGAgaGF2ZSBiZWVuIG1hcmtlZCBhcyBsb25nLXBhdGggYXdhcmUsCisgIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgMjYwIGNoYXJhY3RlciBwYXRoIGxpbWl0IG1heSBubyBsb25nZXIgYXBwbHkuCisgIFNlZSA6cmVmOmByZW1vdmluZyB0aGUgTUFYX1BBVEggbGltaXRhdGlvbiA8bWF4LXBhdGg+YCBmb3IgZGV0YWlscy4KKworKiBBIGBgLl9wdGhgYCBmaWxlIGNhbiBiZSBhZGRlZCB0byBmb3JjZSBpc29sYXRlZCBtb2RlIGFuZCBmdWxseSBzcGVjaWZ5CisgIGFsbCBzZWFyY2ggcGF0aHMgdG8gYXZvaWQgcmVnaXN0cnkgYW5kIGVudmlyb25tZW50IGxvb2t1cC4gU2VlCisgIDpyZWY6YHRoZSBkb2N1bWVudGF0aW9uIDxmaW5kaW5nX21vZHVsZXM+YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworKiBBIGBgcHl0aG9uMzYuemlwYGAgZmlsZSBub3cgd29ya3MgYXMgYSBsYW5kbWFyayB0byBpbmZlcgorICA6ZW52dmFyOmBQWVRIT05IT01FYC4gU2VlIDpyZWY6YHRoZSBkb2N1bWVudGF0aW9uIDxmaW5kaW5nX21vZHVsZXM+YCBmb3IKKyAgbW9yZSBpbmZvcm1hdGlvbi4KKworLi4gUEVQLXNpemVkIGl0ZW1zIG5leHQuCisKKy4uIF9wZXAtNFhYOgorCisuLiBQRVAgNFhYOiBWaXJ0dWFsIEVudmlyb25tZW50cworLi4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCisuLiAoSW1wbGVtZW50ZWQgYnkgRm9vIEJhci4pCisKKy4uIC4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNFhYYCAtIFB5dGhvbiBWaXJ0dWFsIEVudmlyb25tZW50cworICAgICAgIFBFUCB3cml0dGVuIGJ5IENhcmwgTWV5ZXIKKworTmV3IGJ1aWx0LWluIGZlYXR1cmVzOgorCisqIFBFUCA1MjA6IDpyZWY6YFByZXNlcnZpbmcgQ2xhc3MgQXR0cmlidXRlIERlZmluaXRpb24gT3JkZXI8d2hhdHNuZXctZGVmb3JkZXI+YAorCisqIFBFUCA0Njg6IDpyZWY6YFByZXNlcnZpbmcgS2V5d29yZCBBcmd1bWVudCBPcmRlcjx3aGF0c25ldy1rd2FyZ3M+YAorCitBIGNvbXBsZXRlIGxpc3Qgb2YgUEVQJ3MgaW1wbGVtZW50ZWQgaW4gUHl0aG9uIDMuNjoKKworKiA6cGVwOmA0NjhgLCA6cmVmOmBQcmVzZXJ2aW5nIEtleXdvcmQgQXJndW1lbnQgT3JkZXI8d2hhdHNuZXcta3dhcmdzPmAKKyogOnBlcDpgNDg3YCwgOnJlZjpgU2ltcGxlciBjdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uPHdoYXRzbmV3LXBlcDQ4Nz5gCisqIDpwZXA6YDQ5NWAsIExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24KKyogOnBlcDpgNDk4YCwgOnJlZjpgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8d2hhdHNuZXctZnN0cmluZ3M+YAorKiA6cGVwOmA1MDZgLCBBZGRpbmcgQSBTZWNyZXRzIE1vZHVsZSBUbyBUaGUgU3RhbmRhcmQgTGlicmFyeQorKiA6cGVwOmA1MDlgLCA6cmVmOmBBZGQgYSBwcml2YXRlIHZlcnNpb24gdG8gZGljdDx3aGF0c25ldy1wZXA1MDk+YAorKiA6cGVwOmA1MTVgLCA6cmVmOmBVbmRlcnNjb3JlcyBpbiBOdW1lcmljIExpdGVyYWxzPHBlcC01MTU+YAorKiA6cGVwOmA1MTlgLCA6cmVmOmBBZGRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoIHByb3RvY29sPHBlcC01MTk+YAorKiA6cGVwOmA1MjBgLCA6cmVmOmBQcmVzZXJ2aW5nIENsYXNzIEF0dHJpYnV0ZSBEZWZpbml0aW9uIE9yZGVyPHdoYXRzbmV3LWRlZm9yZGVyPmAKKyogOnBlcDpgNTIzYCwgOnJlZjpgQWRkaW5nIGEgZnJhbWUgZXZhbHVhdGlvbiBBUEkgdG8gQ1B5dGhvbjxwZXAtNTIzPmAKKyogOnBlcDpgNTI0YCwgTWFrZSBvcy51cmFuZG9tKCkgYmxvY2tpbmcgb24gTGludXggKGR1cmluZyBzeXN0ZW0gc3RhcnR1cCkKKyogOnBlcDpgNTI1YCwgQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMgKHByb3Zpc2lvbmFsKQorKiA6cGVwOmA1MjZgLCA6cmVmOmBTeW50YXggZm9yIFZhcmlhYmxlIEFubm90YXRpb25zIChwcm92aXNpb25hbCk8dmFyaWFibGUtYW5ub3RhdGlvbnM+YAorKiA6cGVwOmA1MjhgLCA6cmVmOmBDaGFuZ2UgV2luZG93cyBjb25zb2xlIGVuY29kaW5nIHRvIFVURi04IChwcm92aXNpb25hbCk8cGVwLTUyOD5gCisqIDpwZXA6YDUyOWAsIDpyZWY6YENoYW5nZSBXaW5kb3dzIGZpbGVzeXN0ZW0gZW5jb2RpbmcgdG8gVVRGLTggKHByb3Zpc2lvbmFsKTxwZXAtNTI5PmAKKyogOnBlcDpgNTMwYCwgQXN5bmNocm9ub3VzIENvbXByZWhlbnNpb25zCisKKworTmV3IEZlYXR1cmVzCis9PT09PT09PT09PT0KKworLi4gX3BlcC01MTU6CisKK1BFUCA1MTU6IFVuZGVyc2NvcmVzIGluIE51bWVyaWMgTGl0ZXJhbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUHJpb3IgdG8gUEVQIDUxNSwgdGhlcmUgd2FzIG5vIHN1cHBvcnQgZm9yIHdyaXRpbmcgbG9uZyBudW1lcmljCitsaXRlcmFscyB3aXRoIHNvbWUgZm9ybSBvZiBzZXBhcmF0b3IgdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4gRm9yCitpbnN0YW5jZSwgaG93IGJpZyBpcyBgYDEwMDAwMDAwMDAwMDAwMDBgYD8gV2l0aCA6cGVwOmA1MTVgLCB0aG91Z2gsCit5b3UgY2FuIHVzZSB1bmRlcnNjb3JlcyB0byBzZXBhcmF0ZSBkaWdpdHMgYXMgZGVzaXJlZCB0byBtYWtlIG51bWVyaWMKK2xpdGVyYWxzIGVhc2llciB0byByZWFkOiBgYDFfMDAwXzAwMF8wMDBfMDAwXzAwMGBgLiBVbmRlcnNjb3JlcyBjYW4gYmUKK3VzZWQgd2l0aCBvdGhlciBudW1lcmljIGxpdGVyYWxzIGJleW9uZCBpbnRlZ2VycywgZS5nLgorYGAweF9GRl9GRl9GRl9GRmBgLgorCitTaW5nbGUgdW5kZXJzY29yZXMgYXJlIGFsbG93ZWQgYmV0d2VlbiBkaWdpdHMgYW5kIGFmdGVyIGFueSBiYXNlCitzcGVjaWZpZXIuIE1vcmUgdGhhbiBhIHNpbmdsZSB1bmRlcnNjb3JlIGluIGEgcm93LCBsZWFkaW5nLCBvcgordHJhaWxpbmcgdW5kZXJzY29yZXMgYXJlIG5vdCBhbGxvd2VkLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTE1YCAtLSBVbmRlcnNjb3JlcyBpbiBOdW1lcmljIExpdGVyYWxzCisgICAgICBQRVAgd3JpdHRlbiBieSBHZW9yZyBCcmFuZGwgYW5kIFNlcmhpeSBTdG9yY2hha2EuCisKKworLi4gX3BlcC01MjM6CisKK1BFUCA1MjM6IEFkZGluZyBhIGZyYW1lIGV2YWx1YXRpb24gQVBJIHRvIENQeXRob24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hpbGUgUHl0aG9uIHByb3ZpZGVzIGV4dGVuc2l2ZSBzdXBwb3J0IHRvIGN1c3RvbWl6ZSBob3cgY29kZQorZXhlY3V0ZXMsIG9uZSBwbGFjZSBpdCBoYXMgbm90IGRvbmUgc28gaXMgaW4gdGhlIGV2YWx1YXRpb24gb2YgZnJhbWUKK29iamVjdHMuIElmIHlvdSB3YW50ZWQgc29tZSB3YXkgdG8gaW50ZXJjZXB0IGZyYW1lIGV2YWx1YXRpb24gaW4KK1B5dGhvbiB0aGVyZSByZWFsbHkgd2Fzbid0IGFueSB3YXkgd2l0aG91dCBkaXJlY3RseSBtYW5pcHVsYXRpbmcKK2Z1bmN0aW9uIHBvaW50ZXJzIGZvciBkZWZpbmVkIGZ1bmN0aW9ucy4KKworOnBlcDpgNTIzYCBjaGFuZ2VzIHRoaXMgYnkgcHJvdmlkaW5nIGFuIEFQSSB0byBtYWtlIGZyYW1lCitldmFsdWF0aW9uIHBsdWdnYWJsZSBhdCB0aGUgQyBsZXZlbC4gVGhpcyB3aWxsIGFsbG93IGZvciB0b29scyBzdWNoCithcyBkZWJ1Z2dlcnMgYW5kIEpJVHMgdG8gaW50ZXJjZXB0IGZyYW1lIGV2YWx1YXRpb24gYmVmb3JlIHRoZQorZXhlY3V0aW9uIG9mIFB5dGhvbiBjb2RlIGJlZ2lucy4gVGhpcyBlbmFibGVzIHRoZSB1c2Ugb2YgYWx0ZXJuYXRpdmUKK2V2YWx1YXRpb24gaW1wbGVtZW50YXRpb25zIGZvciBQeXRob24gY29kZSwgdHJhY2tpbmcgZnJhbWUKK2V2YWx1YXRpb24sIGV0Yy4KKworVGhpcyBBUEkgaXMgbm90IHBhcnQgb2YgdGhlIGxpbWl0ZWQgQyBBUEkgYW5kIGlzIG1hcmtlZCBhcyBwcml2YXRlIHRvCitzaWduYWwgdGhhdCB1c2FnZSBvZiB0aGlzIEFQSSBpcyBleHBlY3RlZCB0byBiZSBsaW1pdGVkIGFuZCBvbmx5CithcHBsaWNhYmxlIHRvIHZlcnkgc2VsZWN0LCBsb3ctbGV2ZWwgdXNlLWNhc2VzLiBTZW1hbnRpY3Mgb2YgdGhlCitBUEkgd2lsbCBjaGFuZ2Ugd2l0aCBQeXRob24gYXMgbmVjZXNzYXJ5LgorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDUyM2AgLS0gQWRkaW5nIGEgZnJhbWUgZXZhbHVhdGlvbiBBUEkgdG8gQ1B5dGhvbgorICAgICAgIFBFUCB3cml0dGVuIGJ5IEJyZXR0IENhbm5vbiBhbmQgRGlubyBWaWVobGFuZC4KKworCisuLiBfcGVwLTUxOToKKworUEVQIDUxOTogQWRkaW5nIGEgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaWxlIHN5c3RlbSBwYXRocyBoYXZlIGhpc3RvcmljYWxseSBiZWVuIHJlcHJlc2VudGVkIGFzIDpjbGFzczpgc3RyYAorb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0cy4gVGhpcyBoYXMgbGVkIHRvIHBlb3BsZSB3aG8gd3JpdGUgY29kZSB3aGljaAorb3BlcmF0ZSBvbiBmaWxlIHN5c3RlbSBwYXRocyB0byBhc3N1bWUgdGhhdCBzdWNoIG9iamVjdHMgYXJlIG9ubHkgb25lCitvZiB0aG9zZSB0d28gdHlwZXMgKGFuIDpjbGFzczpgaW50YCByZXByZXNlbnRpbmcgYSBmaWxlIGRlc2NyaXB0b3IKK2RvZXMgbm90IGNvdW50IGFzIHRoYXQgaXMgbm90IGEgZmlsZSBwYXRoKS4gVW5mb3J0dW5hdGVseSB0aGF0Cithc3N1bXB0aW9uIHByZXZlbnRzIGFsdGVybmF0aXZlIG9iamVjdCByZXByZXNlbnRhdGlvbnMgb2YgZmlsZSBzeXN0ZW0KK3BhdGhzIGxpa2UgOm1vZDpgcGF0aGxpYmAgZnJvbSB3b3JraW5nIHdpdGggcHJlLWV4aXN0aW5nIGNvZGUsCitpbmNsdWRpbmcgUHl0aG9uJ3Mgc3RhbmRhcmQgbGlicmFyeS4KKworVG8gZml4IHRoaXMgc2l0dWF0aW9uLCBhIG5ldyBpbnRlcmZhY2UgcmVwcmVzZW50ZWQgYnkKKzpjbGFzczpgb3MuUGF0aExpa2VgIGhhcyBiZWVuIGRlZmluZWQuIEJ5IGltcGxlbWVudGluZyB0aGUKKzptZXRoOmB+b3MuUGF0aExpa2UuX19mc3BhdGhfX2AgbWV0aG9kLCBhbiBvYmplY3Qgc2lnbmFscyB0aGF0IGl0CityZXByZXNlbnRzIGEgcGF0aC4gQW4gb2JqZWN0IGNhbiB0aGVuIHByb3ZpZGUgYSBsb3ctbGV2ZWwKK3JlcHJlc2VudGF0aW9uIG9mIGEgZmlsZSBzeXN0ZW0gcGF0aCBhcyBhIDpjbGFzczpgc3RyYCBvcgorOmNsYXNzOmBieXRlc2Agb2JqZWN0LiBUaGlzIG1lYW5zIGFuIG9iamVjdCBpcyBjb25zaWRlcmVkCis6dGVybTpgcGF0aC1saWtlIDxwYXRoLWxpa2Ugb2JqZWN0PmAgaWYgaXQgaW1wbGVtZW50cworOmNsYXNzOmBvcy5QYXRoTGlrZWAgb3IgaXMgYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0Cit3aGljaCByZXByZXNlbnRzIGEgZmlsZSBzeXN0ZW0gcGF0aC4gQ29kZSBjYW4gdXNlIDpmdW5jOmBvcy5mc3BhdGhgLAorOmZ1bmM6YG9zLmZzZGVjb2RlYCwgb3IgOmZ1bmM6YG9zLmZzZW5jb2RlYCB0byBleHBsaWNpdGx5IGdldCBhCis6Y2xhc3M6YHN0cmAgYW5kL29yIDpjbGFzczpgYnl0ZXNgIHJlcHJlc2VudGF0aW9uIG9mIGEgcGF0aC1saWtlCitvYmplY3QuCisKK1RoZSBidWlsdC1pbiA6ZnVuYzpgb3BlbmAgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZCB0byBhY2NlcHQKKzpjbGFzczpgb3MuUGF0aExpa2VgIG9iamVjdHMgYXMgaGF2ZSBhbGwgcmVsZXZhbnQgZnVuY3Rpb25zIGluIHRoZQorOm1vZDpgb3NgIGFuZCA6bW9kOmBvcy5wYXRoYCBtb2R1bGVzLiA6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgCithbmQgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYCBoYXZlIGJlZW4gY2hhbmdlZCB0byBhY2NlcHQKK3BhdGgtbGlrZSBvYmplY3RzLiBUaGUgOmNsYXNzOmBvcy5EaXJFbnRyeWAgY2xhc3MKK2FuZCByZWxldmFudCBjbGFzc2VzIGluIDptb2Q6YHBhdGhsaWJgIGhhdmUgYWxzbyBiZWVuIHVwZGF0ZWQgdG8KK2ltcGxlbWVudCA6Y2xhc3M6YG9zLlBhdGhMaWtlYC4KKworVGhlIGhvcGUgaW4gaXMgdGhhdCB1cGRhdGluZyB0aGUgZnVuZGFtZW50YWwgZnVuY3Rpb25zIGZvciBvcGVyYXRpbmcKK29uIGZpbGUgc3lzdGVtIHBhdGhzIHdpbGwgbGVhZCB0byB0aGlyZC1wYXJ0eSBjb2RlIHRvIGltcGxpY2l0bHkKK3N1cHBvcnQgYWxsIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gIHdpdGhvdXQgYW55Citjb2RlIGNoYW5nZXMgb3IgYXQgbGVhc3QgdmVyeSBtaW5pbWFsIG9uZXMgKGUuZy4gY2FsbGluZworOmZ1bmM6YG9zLmZzcGF0aGAgYXQgdGhlIGJlZ2lubmluZyBvZiBjb2RlIGJlZm9yZSBvcGVyYXRpbmcgb24gYQorcGF0aC1saWtlIG9iamVjdCkuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXMgb2YgaG93IHRoZSBuZXcgaW50ZXJmYWNlIGFsbG93cyBmb3IKKzpjbGFzczpgcGF0aGxpYi5QYXRoYCB0byBiZSB1c2VkIG1vcmUgZWFzaWx5IGFuZCB0cmFuc3BhcmVudGx5IHdpdGgKK3ByZS1leGlzdGluZyBjb2RlOjoKKworICA+Pj4gaW1wb3J0IHBhdGhsaWIKKyAgPj4+IHdpdGggb3BlbihwYXRobGliLlBhdGgoIlJFQURNRSIpKSBhcyBmOgorICAuLi4gICAgIGNvbnRlbnRzID0gZi5yZWFkKCkKKyAgLi4uCisgID4+PiBpbXBvcnQgb3MucGF0aAorICA+Pj4gb3MucGF0aC5zcGxpdGV4dChwYXRobGliLlBhdGgoInNvbWVfZmlsZS50eHQiKSkKKyAgKCdzb21lX2ZpbGUnLCAnLnR4dCcpCisgID4+PiBvcy5wYXRoLmpvaW4oIi9hL2IiLCBwYXRobGliLlBhdGgoImMiKSkKKyAgJy9hL2IvYycKKyAgPj4+IGltcG9ydCBvcworICA+Pj4gb3MuZnNwYXRoKHBhdGhsaWIuUGF0aCgic29tZV9maWxlLnR4dCIpKQorICAnc29tZV9maWxlLnR4dCcKKworKEltcGxlbWVudGVkIGJ5IEJyZXR0IENhbm5vbiwgRXRoYW4gRnVybWFuLCBEdXN0eSBQaGlsbGlwcywgYW5kIEplbGxlIFppamxzdHJhLikKKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA1MTlgIC0tIEFkZGluZyBhIGZpbGUgc3lzdGVtIHBhdGggcHJvdG9jb2wKKyAgICAgICBQRVAgd3JpdHRlbiBieSBCcmV0dCBDYW5ub24gYW5kIEtvb3MgWmV2ZW5ob3Zlbi4KKworCisuLiBfd2hhdHNuZXctZnN0cmluZ3M6CisKK1BFUCA0OTg6IEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBhcmUgYSBuZXcga2luZCBvZiBzdHJpbmcgbGl0ZXJhbCwgcHJlZml4ZWQKK3dpdGggYGAnZidgYC4gIFRoZXkgYXJlIHNpbWlsYXIgdG8gdGhlIGZvcm1hdCBzdHJpbmdzIGFjY2VwdGVkIGJ5Cis6bWV0aDpgc3RyLmZvcm1hdGAuICBUaGV5IGNvbnRhaW4gcmVwbGFjZW1lbnQgZmllbGRzIHN1cnJvdW5kZWQgYnkKK2N1cmx5IGJyYWNlcy4gIFRoZSByZXBsYWNlbWVudCBmaWVsZHMgYXJlIGV4cHJlc3Npb25zLCB3aGljaCBhcmUKK2V2YWx1YXRlZCBhdCBydW4gdGltZSwgYW5kIHRoZW4gZm9ybWF0dGVkIHVzaW5nIHRoZSA6ZnVuYzpgZm9ybWF0YCBwcm90b2NvbDo6CisKKyAgICA+Pj4gbmFtZSA9ICJGcmVkIgorICAgID4+PiBmIkhlIHNhaWQgaGlzIG5hbWUgaXMge25hbWV9LiIKKyAgICAnSGUgc2FpZCBoaXMgbmFtZSBpcyBGcmVkLicKKworU2VlIDpwZXA6YDQ5OGAgYW5kIHRoZSBtYWluIGRvY3VtZW50YXRpb24gYXQgOnJlZjpgZi1zdHJpbmdzYC4KKworCisuLiBfdmFyaWFibGUtYW5ub3RhdGlvbnM6CisKK1BFUCA1MjY6IFN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOnBlcDpgNDg0YCBpbnRyb2R1Y2VkIHN0YW5kYXJkIGZvciB0eXBlIGFubm90YXRpb25zIG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMsCithLmsuYS4gdHlwZSBoaW50cy4gVGhpcyBQRVAgYWRkcyBzeW50YXggdG8gUHl0aG9uIGZvciBhbm5vdGF0aW5nIHRoZQordHlwZXMgb2YgdmFyaWFibGVzIGluY2x1ZGluZyBjbGFzcyB2YXJpYWJsZXMgYW5kIGluc3RhbmNlIHZhcmlhYmxlczo6CisKKyAgICBwcmltZXM6IExpc3RbaW50XSA9IFtdCisKKyAgICBjYXB0YWluOiBzdHIgICMgTm90ZTogbm8gaW5pdGlhbCB2YWx1ZSEKKworICAgIGNsYXNzIFN0YXJzaGlwOgorICAgICAgICBzdGF0czogRGljdFtzdHIsIGludF0gPSB7fQorCitKdXN0IGFzIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucywgdGhlIFB5dGhvbiBpbnRlcnByZXRlciBkb2VzIG5vdCBhdHRhY2ggYW55CitwYXJ0aWN1bGFyIG1lYW5pbmcgdG8gdmFyaWFibGUgYW5ub3RhdGlvbnMgYW5kIG9ubHkgc3RvcmVzIHRoZW0gaW4gYSBzcGVjaWFsCithdHRyaWJ1dGUgYGBfX2Fubm90YXRpb25zX19gYCBvZiBhIGNsYXNzIG9yIG1vZHVsZS4KK0luIGNvbnRyYXN0IHRvIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBpbiBzdGF0aWNhbGx5IHR5cGVkIGxhbmd1YWdlcywKK3RoZSBnb2FsIG9mIGFubm90YXRpb24gc3ludGF4IGlzIHRvIHByb3ZpZGUgYW4gZWFzeSB3YXkgdG8gc3BlY2lmeSBzdHJ1Y3R1cmVkCit0eXBlIG1ldGFkYXRhIGZvciB0aGlyZCBwYXJ0eSB0b29scyBhbmQgbGlicmFyaWVzIHZpYSB0aGUgYWJzdHJhY3Qgc3ludGF4IHRyZWUKK2FuZCB0aGUgYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MjZgIC0tIFN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbnMuCisgICAgICBQRVAgd3JpdHRlbiBieSBSeWFuIEdvbnphbGV6LCBQaGlsaXAgSG91c2UsIEl2YW4gTGV2a2l2c2t5aSwgTGlzYSBSb2FjaCwKKyAgICAgIGFuZCBHdWlkbyB2YW4gUm9zc3VtLiBJbXBsZW1lbnRlZCBieSBJdmFuIExldmtpdnNreWkuCisKKyAgIFRvb2xzIHRoYXQgdXNlIG9yIHdpbGwgdXNlIHRoZSBuZXcgc3ludGF4OgorICAgYG15cHkgPGh0dHA6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5PmBfLAorICAgYHB5dHlwZSA8aHR0cDovL2dpdGh1Yi5jb20vZ29vZ2xlL3B5dHlwZT5gXywgUHlDaGFybSwgZXRjLgorCisKKy4uIF9wZXAtNTI5OgorCitQRVAgNTI5OiBDaGFuZ2UgV2luZG93cyBmaWxlc3lzdGVtIGVuY29kaW5nIHRvIFVURi04CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcHJlc2VudGluZyBmaWxlc3lzdGVtIHBhdGhzIGlzIGJlc3QgcGVyZm9ybWVkIHdpdGggc3RyIChVbmljb2RlKSByYXRoZXIgdGhhbgorYnl0ZXMuIEhvd2V2ZXIsIHRoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgd2hlcmUgdXNpbmcgYnl0ZXMgaXMgc3VmZmljaWVudCBhbmQKK2NvcnJlY3QuCisKK1ByaW9yIHRvIFB5dGhvbiAzLjYsIGRhdGEgbG9zcyBjb3VsZCByZXN1bHQgd2hlbiB1c2luZyBieXRlcyBwYXRocyBvbiBXaW5kb3dzLgorV2l0aCB0aGlzIGNoYW5nZSwgdXNpbmcgYnl0ZXMgdG8gcmVwcmVzZW50IHBhdGhzIGlzIG5vdyBzdXBwb3J0ZWQgb24gV2luZG93cywKK3Byb3ZpZGVkIHRob3NlIGJ5dGVzIGFyZSBlbmNvZGVkIHdpdGggdGhlIGVuY29kaW5nIHJldHVybmVkIGJ5Cis6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpYCwgd2hpY2ggbm93IGRlZmF1bHRzIHRvIGBgJ3V0Zi04J2BgLgorCitBcHBsaWNhdGlvbnMgdGhhdCBkbyBub3QgdXNlIHN0ciB0byByZXByZXNlbnQgcGF0aHMgc2hvdWxkIHVzZQorOmZ1bmM6YG9zLmZzZW5jb2RlKClgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGUoKWAgdG8gZW5zdXJlIHRoZWlyIGJ5dGVzIGFyZQorY29ycmVjdGx5IGVuY29kZWQuIFRvIHJldmVydCB0byB0aGUgcHJldmlvdXMgYmVoYXZpb3VyLCBzZXQKKzplbnZ2YXI6YFBZVEhPTkxFR0FDWVdJTkRPV1NGU0VOQ09ESU5HYCBvciBjYWxsCis6ZnVuYzpgc3lzLl9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ2AuCisKK1NlZSA6cGVwOmA1MjlgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBkaXNjdXNzaW9uIG9mIGNvZGUgbW9kaWZpY2F0aW9ucyB0aGF0CittYXkgYmUgcmVxdWlyZWQuCisKKy4uIG5vdGU6OgorCisgICBUaGlzIGNoYW5nZSBpcyBjb25zaWRlcmVkIGV4cGVyaW1lbnRhbCBmb3IgMy42LjAgYmV0YSByZWxlYXNlcy4gVGhlIGRlZmF1bHQKKyAgIGVuY29kaW5nIG1heSBjaGFuZ2UgYmVmb3JlIHRoZSBmaW5hbCByZWxlYXNlLgorCisuLiBfd2hhdHNuZXctcGVwNDg3OgorCitQRVAgNDg3OiBTaW1wbGVyIGN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVcG9uIHN1YmNsYXNzaW5nIGEgY2xhc3MsIHRoZSBgYF9faW5pdF9zdWJjbGFzc19fYGAgY2xhc3NtZXRob2QgKGlmIGRlZmluZWQpIGlzCitjYWxsZWQgb24gdGhlIGJhc2UgY2xhc3MuIFRoaXMgbWFrZXMgaXQgc3RyYWlnaHRmb3J3YXJkIHRvIHdyaXRlIGNsYXNzZXMgdGhhdAorY3VzdG9taXplIGluaXRpYWxpemF0aW9uIG9mIGZ1dHVyZSBzdWJjbGFzc2VzIHdpdGhvdXQgaW50cm9kdWNpbmcgdGhlCitjb21wbGV4aXR5IG9mIGEgZnVsbCBjdXN0b20gbWV0YWNsYXNzLgorCitUaGUgZGVzY3JpcHRvciBwcm90b2NvbCBoYXMgYWxzbyBiZWVuIGV4cGFuZGVkIHRvIGluY2x1ZGUgYSBuZXcgb3B0aW9uYWwgbWV0aG9kLAorYGBfX3NldF9uYW1lX19gYC4gV2hlbmV2ZXIgYSBuZXcgY2xhc3MgaXMgZGVmaW5lZCwgdGhlIG5ldyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQKK29uIGFsbCBkZXNjcmlwdG9ycyBpbmNsdWRlZCBpbiB0aGUgZGVmaW5pdGlvbiwgcHJvdmlkaW5nIHRoZW0gd2l0aCBhIHJlZmVyZW5jZQordG8gdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgYW5kIHRoZSBuYW1lIGdpdmVuIHRvIHRoZSBkZXNjcmlwdG9yIHdpdGhpbiB0aGUKK2NsYXNzIG5hbWVzcGFjZS4KKworQWxzbyBzZWUgOnBlcDpgNDg3YCBhbmQgdGhlIHVwZGF0ZWQgY2xhc3MgY3VzdG9taXphdGlvbiBkb2N1bWVudGF0aW9uIGF0Cis6cmVmOmBjbGFzcy1jdXN0b21pemF0aW9uYCBhbmQgOnJlZjpgZGVzY3JpcHRvcnNgLgorCisoQ29udHJpYnV0ZWQgYnkgTWFydGluIFRlaWNobWFubiBpbiA6aXNzdWU6YDI3MzY2YCkKKworLi4gX3BlcC01Mjg6CisKK1BFUCA1Mjg6IENoYW5nZSBXaW5kb3dzIGNvbnNvbGUgZW5jb2RpbmcgdG8gVVRGLTgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRlZmF1bHQgY29uc29sZSBvbiBXaW5kb3dzIHdpbGwgbm93IGFjY2VwdCBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzIGFuZAorcHJvdmlkZSBjb3JyZWN0bHkgcmVhZCBzdHIgb2JqZWN0cyB0byBQeXRob24gY29kZS4gYGBzeXMuc3RkaW5gYCwKK2Bgc3lzLnN0ZG91dGBgIGFuZCBgYHN5cy5zdGRlcnJgYCBub3cgZGVmYXVsdCB0byB1dGYtOCBlbmNvZGluZy4KKworVGhpcyBjaGFuZ2Ugb25seSBhcHBsaWVzIHdoZW4gdXNpbmcgYW4gaW50ZXJhY3RpdmUgY29uc29sZSwgYW5kIG5vdCB3aGVuCityZWRpcmVjdGluZyBmaWxlcyBvciBwaXBlcy4gVG8gcmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIgZm9yIGludGVyYWN0aXZlCitjb25zb2xlIHVzZSwgc2V0IDplbnZ2YXI6YFBZVEhPTkxFR0FDWVdJTkRPV1NJT0VOQ09ESU5HYC4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUyOGAgLS0gQ2hhbmdlIFdpbmRvd3MgY29uc29sZSBlbmNvZGluZyB0byBVVEYtOAorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IFN0ZXZlIERvd2VyLgorCitQWVRIT05NQUxMT0MgZW52aXJvbm1lbnQgdmFyaWFibGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbmV3IDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgYWxsb3dzIHNldHRpbmcgdGhlIFB5dGhvbgorbWVtb3J5IGFsbG9jYXRvcnMgYW5kL29yIGluc3RhbGwgZGVidWcgaG9va3MuCisKK0l0IGlzIG5vdyBwb3NzaWJsZSB0byBpbnN0YWxsIGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBvbiBQeXRob24KK2NvbXBpbGVkIGluIHJlbGVhc2UgbW9kZSB1c2luZyBgYFBZVEhPTk1BTExPQz1kZWJ1Z2BgLiBFZmZlY3RzIG9mIGRlYnVnIGhvb2tzOgorCisqIE5ld2x5IGFsbG9jYXRlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweENCYGAKKyogRnJlZWQgbWVtb3J5IGlzIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgCisqIERldGVjdCB2aW9sYXRpb25zIG9mIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIEFQSS4gRm9yIGV4YW1wbGUsCisgIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgIGNhbGxlZCBvbiBhIG1lbW9yeSBibG9jayBhbGxvY2F0ZWQgYnkKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYC4KKyogRGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKKyogRGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorKiBDaGVjayB0aGF0IHRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIGlzIGhlbGQgd2hlbiBhbGxvY2F0b3IKKyAgZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDogOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kCisgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDogOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCkgZG9tYWlucyBhcmUgY2FsbGVkLgorCitDaGVja2luZyBpZiB0aGUgR0lMIGlzIGhlbGQgaXMgYWxzbyBhIG5ldyBmZWF0dXJlIG9mIFB5dGhvbiAzLjYuCisKK1NlZSB0aGUgOmM6ZnVuYzpgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzYCBmdW5jdGlvbiBmb3IgZGVidWcgaG9va3Mgb24gUHl0aG9uCittZW1vcnkgYWxsb2NhdG9ycy4KKworSXQgaXMgbm93IGFsc28gcG9zc2libGUgdG8gZm9yY2UgdGhlIHVzYWdlIG9mIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGFsbG9jYXRvciBvZgordGhlIEMgbGlicmFyeSBmb3IgYWxsIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgdXNpbmcgYGBQWVRIT05NQUxMT0M9bWFsbG9jYGAuCitJdCBoZWxwcyB0byB1c2UgZXh0ZXJuYWwgbWVtb3J5IGRlYnVnZ2VycyBsaWtlIFZhbGdyaW5kIG9uIGEgUHl0aG9uIGNvbXBpbGVkIGluCityZWxlYXNlIG1vZGUuCisKK09uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG5vdyB1c2UgdGhlCis6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcworYWxsb2NhdGVkLgorCitFeGFtcGxlIG9mIGZhdGFsIGVycm9yIG9uIGJ1ZmZlciBvdmVyZmxvdyB1c2luZworYGBweXRob24zLjYgLVggdHJhY2VtYWxsb2M9NWBgIChzdG9yZSA1IGZyYW1lcyBpbiB0cmFjZXMpOjoKKworICAgIERlYnVnIG1lbW9yeSBibG9jayBhdCBhZGRyZXNzIHA9MHg3ZmJjZDQxNjY2Zjg6IEFQSSAnbycKKyAgICAgICAgNCBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZAorICAgICAgICBUaGUgNyBwYWQgYnl0ZXMgYXQgcC03IGFyZSBGT1JCSURERU5CWVRFLCBhcyBleHBlY3RlZC4KKyAgICAgICAgVGhlIDggcGFkIGJ5dGVzIGF0IHRhaWw9MHg3ZmJjZDQxNjY2ZmMgYXJlIG5vdCBhbGwgRk9SQklEREVOQllURSAoMHhmYik6CisgICAgICAgICAgICBhdCB0YWlsKzA6IDB4MDIgKioqIE9VQ0gKKyAgICAgICAgICAgIGF0IHRhaWwrMTogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCsyOiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzM6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNDogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs1OiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzY6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNzogMHhmYgorICAgICAgICBUaGUgYmxvY2sgd2FzIG1hZGUgYnkgY2FsbCAjMTIzMzMyOSB0byBkZWJ1ZyBtYWxsb2MvcmVhbGxvYy4KKyAgICAgICAgRGF0YSBhdCBwOiAxYSAyYiAzMCAwMAorCisgICAgTWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICBGaWxlICJ0ZXN0L3Rlc3RfYnl0ZXMucHkiLCBsaW5lIDMyMworICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjAwCisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2NDgKKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSAxMjIKKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSA4NAorCisgICAgRmF0YWwgUHl0aG9uIGVycm9yOiBiYWQgdHJhaWxpbmcgcGFkIGJ5dGUKKworICAgIEN1cnJlbnQgdGhyZWFkIDB4MDAwMDdmYmNkYmQzMjcwMCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICBGaWxlICJ0ZXN0L3Rlc3RfYnl0ZXMucHkiLCBsaW5lIDMyMyBpbiB0ZXN0X2hleAorICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjAwIGluIHJ1bgorICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjQ4IGluIF9fY2FsbF9fCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgMTIyIGluIHJ1bgorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDg0IGluIF9fY2FsbF9fCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgMTIyIGluIHJ1bgorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDg0IGluIF9fY2FsbF9fCisgICAgICAuLi4KKworKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjY1MTZgIGFuZCA6aXNzdWU6YDI2NTY0YC4pCisKKworRFRyYWNlIGFuZCBTeXN0ZW1UYXAgcHJvYmluZyBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHl0aG9uIGNhbiBub3cgYmUgYnVpbHQgYGAtLXdpdGgtZHRyYWNlYGAgd2hpY2ggZW5hYmxlcyBzdGF0aWMgbWFya2VycworZm9yIHRoZSBmb2xsb3dpbmcgZXZlbnRzIGluIHRoZSBpbnRlcnByZXRlcjoKKworKiBmdW5jdGlvbiBjYWxsL3JldHVybgorCisqIGdhcmJhZ2UgY29sbGVjdGlvbiBzdGFydGVkL2ZpbmlzaGVkCisKKyogbGluZSBvZiBjb2RlIGV4ZWN1dGVkLgorCitUaGlzIGNhbiBiZSB1c2VkIHRvIGluc3RydW1lbnQgcnVubmluZyBpbnRlcnByZXRlcnMgaW4gcHJvZHVjdGlvbiwKK3dpdGhvdXQgdGhlIG5lZWQgdG8gcmVjb21waWxlIHNwZWNpZmljIGRlYnVnIGJ1aWxkcyBvciBwcm92aWRpbmcKK2FwcGxpY2F0aW9uLXNwZWNpZmljIHByb2ZpbGluZy9kZWJ1Z2dpbmcgY29kZS4KKworTW9yZSBkZXRhaWxzIGluIDpyZWY6YGluc3RydW1lbnRhdGlvbmAuCisKK1RoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHRlc3RlZCBvbiBMaW51eCBhbmQgbWFjT1MuICBBZGRpdGlvbmFsCittYXJrZXJzIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgorCisoQ29udHJpYnV0ZWQgYnkgxYF1a2FzeiBMYW5nYSBpbiA6aXNzdWU6YDIxNTkwYCwgYmFzZWQgb24gcGF0Y2hlcyBieQorSmVzw7pzIENlYSBBdmnDs24sIERhdmlkIE1hbGNvbG0sIGFuZCBOaWtoaWwgQmVuZXNjaC4pCisKKworLi4gX3doYXRzbmV3LWRlZm9yZGVyOgorCitQRVAgNTIwOiBQcmVzZXJ2aW5nIENsYXNzIEF0dHJpYnV0ZSBEZWZpbml0aW9uIE9yZGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F0dHJpYnV0ZXMgaW4gYSBjbGFzcyBkZWZpbml0aW9uIGJvZHkgaGF2ZSBhIG5hdHVyYWwgb3JkZXJpbmc6IHRoZSBzYW1lCitvcmRlciBpbiB3aGljaCB0aGUgbmFtZXMgYXBwZWFyIGluIHRoZSBzb3VyY2UuICBUaGlzIG9yZGVyIGlzIG5vdworcHJlc2VydmVkIGluIHRoZSBuZXcgY2xhc3MncyBgYF9fZGljdF9fYGAgYXR0cmlidXRlLgorCitBbHNvLCB0aGUgZWZmZWN0aXZlIGRlZmF1bHQgY2xhc3MgKmV4ZWN1dGlvbiogbmFtZXNwYWNlIChyZXR1cm5lZCBmcm9tCitgYHR5cGUuX19wcmVwYXJlX18oKWBgKSBpcyBub3cgYW4gaW5zZXJ0aW9uLW9yZGVyLXByZXNlcnZpbmcgbWFwcGluZy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUyMGAgLS0gUHJlc2VydmluZyBDbGFzcyBBdHRyaWJ1dGUgRGVmaW5pdGlvbiBPcmRlcgorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEVyaWMgU25vdy4KKworCisuLiBfd2hhdHNuZXcta3dhcmdzOgorCitQRVAgNDY4OiBQcmVzZXJ2aW5nIEtleXdvcmQgQXJndW1lbnQgT3JkZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitgYCoqa3dhcmdzYGAgaW4gYSBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbm93IGd1YXJhbnRlZWQgdG8gYmUgYW4KK2luc2VydGlvbi1vcmRlci1wcmVzZXJ2aW5nIG1hcHBpbmcuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NjhgIC0tIFByZXNlcnZpbmcgS2V5d29yZCBBcmd1bWVudCBPcmRlcgorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEVyaWMgU25vdy4KKworLi4gX3doYXRzbmV3LXBlcDUwOToKKworUEVQIDUwOTogQWRkIGEgcHJpdmF0ZSB2ZXJzaW9uIHRvIGRpY3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FkZCBhIG5ldyBwcml2YXRlIHZlcnNpb24gdG8gdGhlIGJ1aWx0aW4gYGBkaWN0YGAgdHlwZSwgaW5jcmVtZW50ZWQgYXQKK2VhY2ggZGljdGlvbmFyeSBjcmVhdGlvbiBhbmQgYXQgZWFjaCBkaWN0aW9uYXJ5IGNoYW5nZSwgdG8gaW1wbGVtZW50CitmYXN0IGd1YXJkcyBvbiBuYW1lc3BhY2VzLgorCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjA1OGAuKQorCisKK090aGVyIExhbmd1YWdlIENoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBzbWFsbGVyIGNoYW5nZXMgbWFkZSB0byB0aGUgY29yZSBQeXRob24gbGFuZ3VhZ2UgYXJlOgorCisqIDpmdW5jOmBkaWN0YCBub3cgdXNlcyBhICJjb21wYWN0IiByZXByZXNlbnRhdGlvbiBgcGlvbmVlcmVkIGJ5IFB5UHkKKyAgPGh0dHBzOi8vbW9yZXB5cHkuYmxvZ3Nwb3QuY29tLzIwMTUvMDEvZmFzdGVyLW1vcmUtbWVtb3J5LWVmZmljaWVudC1hbmQtbW9yZS5odG1sPmBfLgorICBUaGUgbWVtb3J5IHVzYWdlIG9mIHRoZSBuZXcgOmZ1bmM6YGRpY3RgIGlzIGJldHdlZW4gMjAlIGFuZCAyNSUgc21hbGxlcgorICBjb21wYXJlZCB0byBQeXRob24gMy41LgorICA6cGVwOmA0NjhgIChQcmVzZXJ2aW5nIHRoZSBvcmRlciBvZiBgYCoqa3dhcmdzYGAgaW4gYSBmdW5jdGlvbi4pIGlzCisgIGltcGxlbWVudGVkIGJ5IHRoaXMuIFRoZSBvcmRlci1wcmVzZXJ2aW5nIGFzcGVjdCBvZiB0aGlzIG5ldworICBpbXBsZW1lbnRhdGlvbiBpcyBjb25zaWRlcmVkIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBhbmQgc2hvdWxkCisgIG5vdCBiZSByZWxpZWQgdXBvbiAodGhpcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUsIGJ1dCBpdCBpcyBkZXNpcmVkCisgIHRvIGhhdmUgdGhpcyBuZXcgZGljdCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgbGFuZ3VhZ2UgZm9yIGEgZmV3CisgIHJlbGVhc2VzIGJlZm9yZSBjaGFuZ2luZyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0byBtYW5kYXRlCisgIG9yZGVyLXByZXNlcnZpbmcgc2VtYW50aWNzIGZvciBhbGwgY3VycmVudCBhbmQgZnV0dXJlIFB5dGhvbgorICBpbXBsZW1lbnRhdGlvbnM7IHRoaXMgYWxzbyBoZWxwcyBwcmVzZXJ2ZSBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eQorICB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBsYW5ndWFnZSB3aGVyZSByYW5kb20gaXRlcmF0aW9uIG9yZGVyIGlzCisgIHN0aWxsIGluIGVmZmVjdCwgZS5nLiBQeXRob24gMy41KS4KKyAgKENvbnRyaWJ1dGVkIGJ5IElOQURBIE5hb2tpIGluIDppc3N1ZTpgMjczNTBgLiBJZGVhCisgIGBvcmlnaW5hbGx5IHN1Z2dlc3RlZCBieSBSYXltb25kIEhldHRpbmdlcgorICA8aHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAxMi1EZWNlbWJlci8xMjMwMjguaHRtbD5gXy4pCisKKyogTG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgdHJhY2ViYWNrIGxpbmVzIGFyZSBub3cgYWJicmV2aWF0ZWQgYXMKKyAgYGAiW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50fSBtb3JlIHRpbWVzXSJgYCAoc2VlCisgIDpyZWY6YHB5MzYtdHJhY2ViYWNrYCBmb3IgYW4gZXhhbXBsZSkuCisgIChDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjY4MjNgLikKKworKiBJbXBvcnQgbm93IHJhaXNlcyB0aGUgbmV3IGV4Y2VwdGlvbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYAorICAoc3ViY2xhc3Mgb2YgOmV4YzpgSW1wb3J0RXJyb3JgKSB3aGVuIGl0IGNhbm5vdCBmaW5kIGEgbW9kdWxlLiAgQ29kZQorICB0aGF0IGN1cnJlbnQgY2hlY2tzIGZvciBJbXBvcnRFcnJvciAoaW4gdHJ5LWV4Y2VwdCkgd2lsbCBzdGlsbCB3b3JrLgorCisKK05ldyBNb2R1bGVzCis9PT09PT09PT09PQorCisqIE5vbmUgeWV0LgorCisKK0ltcHJvdmVkIE1vZHVsZXMKKz09PT09PT09PT09PT09PT0KKworT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgYmxvY2tzIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wKK2lzIGluaXRpYWxpemVkIHRvIGluY3JlYXNlIHRoZSBzZWN1cml0eS4gU2VlIHRoZSA6cGVwOmA1MjRgIGZvciB0aGUgcmF0aW9uYWxlLgorCisKK2FzeW5jaW8KKy0tLS0tLS0KKworU2luY2UgdGhlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBpcyA6dGVybTpgcHJvdmlzaW9uYWwgPHByb3Zpc2lvbmFsIGFwaT5gLAorYWxsIGNoYW5nZXMgaW50cm9kdWNlZCBpbiBQeXRob24gMy42IGhhdmUgYWxzbyBiZWVuIGJhY2twb3J0ZWQgdG8gUHl0aG9uCiszLjUueC4KKworTm90YWJsZSBjaGFuZ2VzIGluIHRoZSA6bW9kOmBhc3luY2lvYCBtb2R1bGUgc2luY2UgUHl0aG9uIDMuNS4wOgorCisqIFRoZSA6ZnVuYzpgfmFzeW5jaW8uZW5zdXJlX2Z1dHVyZWAgZnVuY3Rpb24gYW5kIGFsbCBmdW5jdGlvbnMgdGhhdAorICB1c2UgaXQsIHN1Y2ggYXMgOm1ldGg6YGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5ydW5fdW50aWxfY29tcGxldGU+YCwKKyAgbm93IGFjY2VwdCBhbGwga2luZHMgb2YgOnRlcm06YGF3YWl0YWJsZSBvYmplY3RzIDxhd2FpdGFibGU+YC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBOZXcgOmZ1bmM6YH5hc3luY2lvLnJ1bl9jb3JvdXRpbmVfdGhyZWFkc2FmZWAgZnVuY3Rpb24gdG8gc3VibWl0CisgIGNvcm91dGluZXMgdG8gZXZlbnQgbG9vcHMgZnJvbSBvdGhlciB0aHJlYWRzLgorICAoQ29udHJpYnV0ZWQgYnkgVmluY2VudCBNaWNoZWwuKQorCisqIE5ldyA6bWV0aDpgVHJhbnNwb3J0LmlzX2Nsb3NpbmcoKSA8YXN5bmNpby5CYXNlVHJhbnNwb3J0LmlzX2Nsb3Npbmc+YAorICBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIHRyYW5zcG9ydCBpcyBjbG9zaW5nIG9yIGNsb3NlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBUaGUgOm1ldGg6YGxvb3AuY3JlYXRlX3NlcnZlcigpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuY3JlYXRlX3NlcnZlcj5gCisgIG1ldGhvZCBjYW4gbm93IGFjY2VwdCBhIGxpc3Qgb2YgaG9zdHMuCisgIChDb250cmlidXRlZCBieSBZYW5uIFNpb25uZWF1LikKKworKiBOZXcgOm1ldGg6YGxvb3AuY3JlYXRlX2Z1dHVyZSgpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuY3JlYXRlX2Z1dHVyZT5gCisgIG1ldGhvZCB0byBjcmVhdGUgRnV0dXJlIG9iamVjdHMuICBUaGlzIGFsbG93cyBhbHRlcm5hdGl2ZSBldmVudAorICBsb29wIGltcGxlbWVudGF0aW9ucywgc3VjaCBhcworICBgdXZsb29wIDxodHRwczovL2dpdGh1Yi5jb20vTWFnaWNTdGFjay91dmxvb3A+YF8sIHRvIHByb3ZpZGUgYSBmYXN0ZXIKKyAgOmNsYXNzOmBhc3luY2lvLkZ1dHVyZWAgaW1wbGVtZW50YXRpb24uCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4pCisKKyogTmV3IDptZXRoOmBsb29wLmdldF9leGNlcHRpb25faGFuZGxlcigpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyPmAKKyAgbWV0aG9kIHRvIGdldCB0aGUgY3VycmVudCBleGNlcHRpb24gaGFuZGxlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBOZXcgOmZ1bmM6YH5hc3luY2lvLnRpbWVvdXRgIGNvbnRleHQgbWFuYWdlciB0byBzaW1wbGlmeSB0aW1lb3V0cworICBoYW5kbGluZyBjb2RlLgorICAoQ29udHJpYnV0ZWQgYnkgQW5kcmV3IFN2ZXRsb3YuKQorCisqIE5ldyA6bWV0aDpgU3RyZWFtUmVhZGVyLnJlYWR1bnRpbCgpIDxhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkdW50aWw+YAorICBtZXRob2QgdG8gcmVhZCBkYXRhIGZyb20gdGhlIHN0cmVhbSB1bnRpbCBhIHNlcGFyYXRvciBieXRlcworICBzZXF1ZW5jZSBhcHBlYXJzLgorICAoQ29udHJpYnV0ZWQgYnkgTWFyayBLb3JlbmJlcmcuKQorCisqIFRoZSA6bWV0aDpgbG9vcC5nZXRhZGRyaW5mbygpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuZ2V0YWRkcmluZm8+YAorICBtZXRob2QgaXMgb3B0aW1pemVkIHRvIGF2b2lkIGNhbGxpbmcgdGhlIHN5c3RlbSBgYGdldGFkZHJpbmZvYGAKKyAgZnVuY3Rpb24gaWYgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSByZXNvbHZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEEuIEplc3NlIEppcnl1IERhdmlzLikKKworCitjb250ZXh0bGliCistLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcmAgY2xhc3MgaGFzIGJlZW4gYWRkZWQgdG8KK3Byb3ZpZGUgYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgY29udGV4dCBtYW5hZ2Vycy4gSXQgcHJvdmlkZXMgYQorc2Vuc2libGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgYF9fZW50ZXJfXygpYCB3aGljaCByZXR1cm5zCitgYHNlbGZgYCBhbmQgbGVhdmVzIGBfX2V4aXRfXygpYCBhbiBhYnN0cmFjdCBtZXRob2QuIEEgbWF0Y2hpbmcKK2NsYXNzIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmB0eXBpbmdgIG1vZHVsZSBhcworOmNsYXNzOmB0eXBpbmcuQ29udGV4dE1hbmFnZXJgLgorKENvbnRyaWJ1dGVkIGJ5IEJyZXR0IENhbm5vbiBpbiA6aXNzdWU6YDI1NjA5YC4pCisKKwordmVudgorLS0tLQorCis6bW9kOmB2ZW52YCBhY2NlcHRzIGEgbmV3IHBhcmFtZXRlciBgYC0tcHJvbXB0YGAuIFRoaXMgcGFyYW1ldGVyIHByb3ZpZGVzIGFuCithbHRlcm5hdGl2ZSBwcmVmaXggZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiAoUHJvcG9zZWQgYnkgxYF1a2Fzei5CYWxjZXJ6YWsKK2FuZCBwb3J0ZWQgdG8gMy42IGJ5IFN0w6lwaGFuZSBXaXJ0ZWwgaW4gOmlzc3VlOmAyMjgyOWAuKQorCisKK2RhdGV0aW1lCistLS0tLS0tLQorCitUaGUgOm1ldGg6YGRhdGV0aW1lLnN0cmZ0aW1lKCkgPGRhdGV0aW1lLmRhdGV0aW1lLnN0cmZ0aW1lPmAgYW5kCis6bWV0aDpgZGF0ZS5zdHJmdGltZSgpIDxkYXRldGltZS5kYXRlLnN0cmZ0aW1lPmAgbWV0aG9kcyBub3cgc3VwcG9ydCBJU08gODYwMSBkYXRlCitkaXJlY3RpdmVzIGBgJUdgYCwgYGAldWBgIGFuZCBgYCVWYGAuCisoQ29udHJpYnV0ZWQgYnkgQXNobGV5IEFuZGVyc29uIGluIDppc3N1ZTpgMTIwMDZgLikKKworCitkaXN0dXRpbHMuY29tbWFuZC5zZGlzdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGBgZGVmYXVsdF9mb3JtYXRgYCBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tCis6Y2xhc3M6YGRpc3R1dGlscy5jb21tYW5kLnNkaXN0LnNkaXN0YCBhbmQgdGhlIGBgZm9ybWF0c2BgCithdHRyaWJ1dGUgZGVmYXVsdHMgdG8gYGBbJ2d6dGFyJ11gYC4gQWx0aG91Z2ggbm90IGFudGljaXBhdGVkLAorQW55IGNvZGUgcmVseWluZyBvbiB0aGUgcHJlc2VuY2Ugb2YgYGBkZWZhdWx0X2Zvcm1hdGBgIG1heQorbmVlZCB0byBiZSBhZGFwdGVkLiBTZWUgOmlzc3VlOmAyNzgxOWAgZm9yIG1vcmUgZGV0YWlscy4KKworCitlbWFpbAorLS0tLS0KKworVGhlIG5ldyBlbWFpbCBBUEksIGVuYWJsZWQgdmlhIHRoZSAqcG9saWN5KiBrZXl3b3JkIHRvIHZhcmlvdXMgY29uc3RydWN0b3JzLCBpcworbm8gbG9uZ2VyIHByb3Zpc2lvbmFsLiAgVGhlIDptb2Q6YGVtYWlsYCBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHJlb3JnYW5pemVkIGFuZAorcmV3cml0dGVuIHRvIGZvY3VzIG9uIHRoZSBuZXcgQVBJLCB3aGlsZSByZXRhaW5pbmcgdGhlIG9sZCBkb2N1bWVudGF0aW9uIGZvcgordGhlIGxlZ2FjeSBBUEkuICAoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQgTXVycmF5IGluIDppc3N1ZTpgMjQyNzdgLikKKworVGhlIDptb2Q6YGVtYWlsLm1pbWVgIGNsYXNzZXMgbm93IGFsbCBhY2NlcHQgYW4gb3B0aW9uYWwgKnBvbGljeSoga2V5d29yZC4KKyhDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjczMzFgLikKKworVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBub3cgc3VwcG9ydHMgdGhlICpwb2xpY3kqCitrZXl3b3JkLgorCitUaGVyZSBpcyBhIG5ldyA6bW9kOmB+ZW1haWwucG9saWN5YCBhdHRyaWJ1dGUsCis6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWVzc2FnZV9mYWN0b3J5YCwgdGhhdCBjb250cm9scyB3aGF0IGNsYXNzIGlzIHVzZWQKK2J5IGRlZmF1bHQgd2hlbiB0aGUgcGFyc2VyIGNyZWF0ZXMgbmV3IG1lc3NhZ2Ugb2JqZWN0cy4gIEZvciB0aGUKKzphdHRyOmBlbWFpbC5wb2xpY3kuY29tcGF0MzJgIHBvbGljeSB0aGlzIGlzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAsCitmb3IgdGhlIG5ldyBwb2xpY2llcyBpdCBpcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAuCisoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQgTXVycmF5IGluIDppc3N1ZTpgMjA0NzZgLikKKworCitlbmNvZGluZ3MKKy0tLS0tLS0tLQorCitPbiBXaW5kb3dzLCBhZGRlZCB0aGUgYGAnb2VtJ2BgIGVuY29kaW5nIHRvIHVzZSBgYENQX09FTUNQYGAgYW5kIHRoZSBgYCdhbnNpJ2BgCithbGlhcyBmb3IgdGhlIGV4aXN0aW5nIGBgJ21iY3MnYGAgZW5jb2RpbmcsIHdoaWNoIHVzZXMgdGhlIGBgQ1BfQUNQYGAgY29kZSBwYWdlLgorCisKK2ZhdWx0aGFuZGxlcgorLS0tLS0tLS0tLS0tCisKK09uIFdpbmRvd3MsIHRoZSA6bW9kOmBmYXVsdGhhbmRsZXJgIG1vZHVsZSBub3cgaW5zdGFsbHMgYSBoYW5kbGVyIGZvciBXaW5kb3dzCitleGNlcHRpb25zOiBzZWUgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4KKzppc3N1ZTpgMjM4NDhgLikKKworCitoYXNobGliCistLS0tLS0tCisKKzptb2Q6YGhhc2hsaWJgIHN1cHBvcnRzIE9wZW5TU0wgMS4xLjAuIFRoZSBtaW5pbXVtIHJlY29tbWVuZCB2ZXJzaW9uIGlzIDEuMC4yLgorSXQgaGFzIGJlZW4gdGVzdGVkIHdpdGggMC45Ljh6YywgMC45Ljh6aCBhbmQgMS4wLjF0IGFzIHdlbGwgYXMgTGlicmVTU0wgMi4zCithbmQgMi40LgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjQ3MGAuKQorCitCTEFLRTIgaGFzaCBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byB0aGUgbW9kdWxlLiA6ZnVuYzpgfmhhc2hsaWIuYmxha2UyYmAKK2FuZCA6ZnVuYzpgfmhhc2hsaWIuYmxha2Uyc2AgYXJlIGFsd2F5cyBhdmFpbGFibGUgYW5kIHN1cHBvcnQgdGhlIGZ1bGwKK2ZlYXR1cmUgc2V0IG9mIEJMQUtFMi4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjY3OThgIGJhc2VkIG9uIGNvZGUgYnkKK0RtaXRyeSBDaGVzdG55a2ggYW5kIFNhbXVlbCBOZXZlcy4gRG9jdW1lbnRhdGlvbiB3cml0dGVuIGJ5IERtaXRyeSBDaGVzdG55a2guKQorCitUaGUgU0hBLTMgaGFzaCBmdW5jdGlvbnMgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjI0YCwgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjU2YCwKKzpmdW5jOmB+aGFzaGxpYi5zaGEzXzM4NGAsIDpmdW5jOmB+aGFzaGxpYi5zaGEzXzUxMmAsIGFuZCBTSEFLRSBoYXNoIGZ1bmN0aW9ucworOmZ1bmM6YH5oYXNobGliLnNoYWtlXzEyOGAgYW5kIDpmdW5jOmB+aGFzaGxpYi5zaGFrZV8yNTZgIHdlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE2MTEzYC4gS2VjY2FrIENvZGUgUGFja2FnZQorYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlLCBhbmQKK1Jvbm55IFZhbiBLZWVyLikKKworVGhlIHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIDpmdW5jOmB+aGFzaGxpYi5zY3J5cHRgIGlzIG5vdworYXZhaWxhYmxlIHdpdGggT3BlblNTTCAxLjEuMCBhbmQgbmV3ZXIuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3OTI4YC4pCisKK2h0dHAuY2xpZW50CistLS0tLS0tLS0tLQorCis6bWV0aDpgSFRUUENvbm5lY3Rpb24ucmVxdWVzdCgpIDxodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0PmAgYW5kCis6bWV0aDpgfmh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLmVuZGhlYWRlcnNgIGJvdGggbm93IHN1cHBvcnQKK2NodW5rZWQgZW5jb2RpbmcgcmVxdWVzdCBib2RpZXMuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKworaWRsZWxpYiBhbmQgSURMRQorLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaWRsZWxpYiBwYWNrYWdlIGlzIGJlaW5nIG1vZGVybml6ZWQgYW5kIHJlZmFjdG9yZWQgdG8gbWFrZSBJRExFIGxvb2sgYW5kIHdvcmsgYmV0dGVyIGFuZCB0byBtYWtlIHRoZSBjb2RlIGVhc2llciB0byB1bmRlcnN0YW5kLCB0ZXN0LCBhbmQgaW1wcm92ZS4gUGFydCBvZiBtYWtpbmcgSURMRSBsb29rIGJldHRlciwgZXNwZWNpYWxseSBvbiBMaW51eCBhbmQgTWFjLCBpcyB1c2luZyB0dGsgd2lkZ2V0cywgbW9zdGx5IGluIHRoZSBkaWFsb2dzLiAgQXMgYSByZXN1bHQsIElETEUgbm8gbG9uZ2VyIHJ1bnMgd2l0aCB0Y2wvdGsgOC40LiAgSXQgbm93IHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgOC42LiAgV2UgcmVjb21tZW5kIHJ1bm5pbmcgdGhlIGxhdGVzdCByZWxlYXNlIG9mIGVpdGhlci4KKworJ01vZGVybml6aW5nJyBpbmNsdWRlcyByZW5hbWluZyBhbmQgY29uc29saWRhdGlvbiBvZiBpZGxlbGliIG1vZHVsZXMuIFRoZSByZW5hbWluZyBvZiBmaWxlcyB3aXRoIHBhcnRpYWwgdXBwZXJjYXNlIG5hbWVzIGlzIHNpbWlsYXIgdG8gdGhlIHJlbmFtaW5nIG9mLCBmb3IgaW5zdGFuY2UsIFRraW50ZXIgYW5kIFRrRm9udCB0byB0a2ludGVyIGFuZCB0a2ludGVyLmZvbnQgaW4gMy4wLiAgQXMgYSByZXN1bHQsIGltcG9ydHMgb2YgaWRsZWxpYiBmaWxlcyB0aGF0IHdvcmtlZCBpbiAzLjUgd2lsbCB1c3VhbGx5IG5vdCB3b3JrIGluIDMuNi4gIEF0IGxlYXN0IGEgbW9kdWxlIG5hbWUgY2hhbmdlIHdpbGwgYmUgbmVlZGVkIChzZWUgaWRsZWxpYi9SRUFETUUudHh0KSwgc29tZXRpbWVzIG1vcmUuICAoTmFtZSBjaGFuZ2VzIGNvbnRyaWJ1dGVkIGJ5IEFsIFN3aWVnYXJ0IGFuZCBUZXJyeSBSZWVkeSBpbiA6aXNzdWU6YDI0MjI1YC4gIE1vc3QgaWRsZWxpYiBwYXRjaGVzIHNpbmNlIGhhdmUgYmVlbiBhbmQgd2lsbCBiZSBwYXJ0IG9mIHRoZSBwcm9jZXNzLikKKworSW4gY29tcGVuc2F0aW9uLCB0aGUgZXZlbnR1YWwgcmVzdWx0IHdpdGggYmUgdGhhdCBzb21lIGlkbGVsaWIgY2xhc3NlcyB3aWxsIGJlIGVhc2llciB0byB1c2UsIHdpdGggYmV0dGVyIEFQSXMgYW5kIGRvY3N0cmluZ3MgZXhwbGFpbmluZyB0aGVtLiAgQWRkaXRpb25hbCB1c2VmdWwgaW5mb3JtYXRpb24gd2lsbCBiZSBhZGRlZCB0byBpZGxlbGliIHdoZW4gYXZhaWxhYmxlLgorCisKK2ltcG9ydGxpYgorLS0tLS0tLS0tCisKKzpjbGFzczpgaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlcmAgbm93IGNhbGxzCis6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG9uIHRoZSB3cmFwcGVkIGxvYWRlciwgcmVtb3ZpbmcgdGhlCityZXN0cmljdGlvbiB0aGF0IDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXJgIGFuZAorOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXJgIGNvdWxkbid0IGJlIHVzZWQgd2l0aAorOmNsYXNzOmBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyYC4KKworOmZ1bmM6YGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlYCwKKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5zb3VyY2VfZnJvbV9jYWNoZWAsIGFuZAorOmZ1bmM6YGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uYCBub3cgYWNjZXB0IGEKKzp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKworCitqc29uCistLS0tCisKKzpmdW5jOmBqc29uLmxvYWRgIGFuZCA6ZnVuYzpganNvbi5sb2Fkc2Agbm93IHN1cHBvcnQgYmluYXJ5IGlucHV0LiAgRW5jb2RlZAorSlNPTiBzaG91bGQgYmUgcmVwcmVzZW50ZWQgdXNpbmcgZWl0aGVyIFVURi04LCBVVEYtMTYsIG9yIFVURi0zMi4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTc5MDlgLikKKworCitvcworLS0KKworQSBuZXcgOm1ldGg6YH5vcy5zY2FuZGlyLmNsb3NlYCBtZXRob2QgYWxsb3dzIGV4cGxpY2l0bHkgY2xvc2luZyBhCis6ZnVuYzpgfm9zLnNjYW5kaXJgIGl0ZXJhdG9yLiAgVGhlIDpmdW5jOmB+b3Muc2NhbmRpcmAgaXRlcmF0b3Igbm93CitzdXBwb3J0cyB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wuICBJZiBhIDpmdW5jOmBzY2FuZGlyYAoraXRlcmF0b3IgaXMgbmVpdGhlciBleGhhdXN0ZWQgbm9yIGV4cGxpY2l0bHkgY2xvc2VkIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYAord2lsbCBiZSBlbWl0dGVkIGluIGl0cyBkZXN0cnVjdG9yLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTk5NGAuKQorCitUaGUgTGludXggYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgKGdldCByYW5kb20gYnl0ZXMpIGlzIG5vdyBleHBvc2VkIGFzIHRoZSBuZXcKKzpmdW5jOmBvcy5nZXRyYW5kb21gIGZ1bmN0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLCBwYXJ0IG9mIHRoZSA6cGVwOmA1MjRgKQorCitTZWUgdGhlIHN1bW1hcnkgZm9yIDpyZWY6YFBFUCA1MTkgPHBlcC01MTk+YCBmb3IgZGV0YWlscyBvbiBob3cgdGhlCis6bW9kOmBvc2AgYW5kIDptb2Q6YG9zLnBhdGhgIG1vZHVsZXMgbm93IHN1cHBvcnQKKzp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gLgorCisKK3BpY2tsZQorLS0tLS0tCisKK09iamVjdHMgdGhhdCBuZWVkIGNhbGxpbmcgYGBfX25ld19fYGAgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gbm93IGJlIHBpY2tsZWQKK3VzaW5nIDpyZWY6YHBpY2tsZSBwcm90b2NvbHMgPHBpY2tsZS1wcm90b2NvbHM+YCBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KK1Byb3RvY29sIHZlcnNpb24gNCBhbHJlYWR5IHN1cHBvcnRzIHRoaXMgY2FzZS4gIChDb250cmlidXRlZCBieSBTZXJoaXkKK1N0b3JjaGFrYSBpbiA6aXNzdWU6YDI0MTY0YC4pCisKKworcmUKKy0tCisKK0FkZGVkIHN1cHBvcnQgb2YgbW9kaWZpZXIgc3BhbnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4gIEV4YW1wbGVzOgorYGAnKD9pOnApeXRob24nYGAgbWF0Y2hlcyBgYCdweXRob24nYGAgYW5kIGBgJ1B5dGhvbidgYCwgYnV0IG5vdCBgYCdQWVRIT04nYGA7CitgYCcoP2kpZyg/LWk6dilyJ2BgIG1hdGNoZXMgYGAnR3ZSJ2BgIGFuZCBgYCdndnInYGAsIGJ1dCBub3QgYGAnR1ZSJ2BgLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmA0MzMwMjhgLikKKworTWF0Y2ggb2JqZWN0IGdyb3VwcyBjYW4gYmUgYWNjZXNzZWQgYnkgYGBfX2dldGl0ZW1fX2BgLCB3aGljaCBpcworZXF1aXZhbGVudCB0byBgYGdyb3VwKClgYC4gIFNvIGBgbW9bJ25hbWUnXWBgIGlzIG5vdyBlcXVpdmFsZW50IHRvCitgYG1vLmdyb3VwKCduYW1lJylgYC4gIChDb250cmlidXRlZCBieSBFcmljIFNtaXRoIGluIDppc3N1ZTpgMjQ0NTRgLikKKworCityZWFkbGluZQorLS0tLS0tLS0KKworQWRkZWQgOmZ1bmM6YH5yZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5YCB0byBlbmFibGUgb3IgZGlzYWJsZQorYXV0b21hdGljIGFkZGl0aW9uIG9mIGlucHV0IHRvIHRoZSBoaXN0b3J5IGxpc3QuICAoQ29udHJpYnV0ZWQgYnkKK1R5bGVyIENyb21wdG9uIGluIDppc3N1ZTpgMjY4NzBgLikKKworCitybGNvbXBsZXRlcgorLS0tLS0tLS0tLS0KKworUHJpdmF0ZSBhbmQgc3BlY2lhbCBhdHRyaWJ1dGUgbmFtZXMgbm93IGFyZSBvbWl0dGVkIHVubGVzcyB0aGUgcHJlZml4IHN0YXJ0cword2l0aCB1bmRlcnNjb3Jlcy4gIEEgc3BhY2Ugb3IgYSBjb2xvbiBpcyBhZGRlZCBhZnRlciBzb21lIGNvbXBsZXRlZCBrZXl3b3Jkcy4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjUwMTFgIGFuZCA6aXNzdWU6YDI1MjA5YC4pCisKK05hbWVzIG9mIG1vc3QgYXR0cmlidXRlcyBsaXN0ZWQgYnkgOmZ1bmM6YGRpcmAgYXJlIG5vdyBjb21wbGV0ZWQuCitQcmV2aW91c2x5LCBuYW1lcyBvZiBwcm9wZXJ0aWVzIGFuZCBzbG90cyB3aGljaCB3ZXJlIG5vdCB5ZXQgY3JlYXRlZCBvbgorYW4gaW5zdGFuY2Ugd2VyZSBleGNsdWRlZC4gIChDb250cmlidXRlZCBieSBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgMjU1OTBgLikKKworCitzaXRlCistLS0tCisKK1doZW4gc3BlY2lmeWluZyBwYXRocyB0byBhZGQgdG8gOmF0dHI6YHN5cy5wYXRoYCBpbiBhIGAucHRoYCBmaWxlLAoreW91IG1heSBub3cgc3BlY2lmeSBmaWxlIHBhdGhzIG9uIHRvcCBvZiBkaXJlY3RvcmllcyAoZS5nLiB6aXAgZmlsZXMpLgorKENvbnRyaWJ1dGVkIGJ5IFdvbGZnYW5nIExhbmduZXIgaW4gOmlzc3VlOmAyNjU4N2ApLgorCisKK3NxbGl0ZTMKKy0tLS0tLS0KKworOmF0dHI6YHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZGAgbm93IHN1cHBvcnRzIHRoZSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQuCisoQ29udHJpYnV0ZWQgYnkgQWxleCBMb3JkVGhvcnNlbiBpbiA6aXNzdWU6YDE2ODY0YC4pCisKKworc29ja2V0CistLS0tLS0KKworVGhlIDpmdW5jOmB+c29ja2V0LnNvY2tldC5pb2N0bGAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIHRoZSA6ZGF0YTpgfnNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYAorY29udHJvbCBjb2RlLgorKENvbnRyaWJ1dGVkIGJ5IERhbmllbCBTdG9rZXMgaW4gOmlzc3VlOmAyNjUzNmAuKQorCitUaGUgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmdldHNvY2tvcHRgIGNvbnN0YW50cyBgYFNPX0RPTUFJTmBgLAorYGBTT19QUk9UT0NPTGBgLCBgYFNPX1BFRVJTRUNgYCwgYW5kIGBgU09fUEFTU1NFQ2BgIGFyZSBub3cgc3VwcG9ydGVkLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjkwN2AuKQorCitUaGUgc29ja2V0IG1vZHVsZSBub3cgc3VwcG9ydHMgdGhlIGFkZHJlc3MgZmFtaWx5Cis6ZGF0YTpgfnNvY2tldC5BRl9BTEdgIHRvIGludGVyZmFjZSB3aXRoIExpbnV4IEtlcm5lbCBjcnlwdG8gQVBJLiBgYEFMR18qYGAsCitgYFNPTF9BTEdgYCBhbmQgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmRtc2dfYWZhbGdgIHdlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3NzQ0YCB3aXRoIHN1cHBvcnQgZnJvbQorVmljdG9yIFN0aW5uZXIuKQorCitzb2NrZXRzZXJ2ZXIKKy0tLS0tLS0tLS0tLQorCitTZXJ2ZXJzIGJhc2VkIG9uIHRoZSA6bW9kOmBzb2NrZXRzZXJ2ZXJgIG1vZHVsZSwgaW5jbHVkaW5nIHRob3NlCitkZWZpbmVkIGluIDptb2Q6YGh0dHAuc2VydmVyYCwgOm1vZDpgeG1scnBjLnNlcnZlcmAgYW5kCis6bW9kOmB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXJgLCBub3cgc3VwcG9ydCB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAKK3Byb3RvY29sLgorKENvbnRyaWJ1dGVkIGJ5IEF2aXYgUGFsaXZvZGEgaW4gOmlzc3VlOmAyNjQwNGAuKQorCitUaGUgOmF0dHI6YH5zb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIud2ZpbGVgIGF0dHJpYnV0ZSBvZgorOmNsYXNzOmB+c29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyYCBjbGFzc2VzIG5vdyBpbXBsZW1lbnRzCit0aGUgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgd3JpdGFibGUgaW50ZXJmYWNlLiAgSW4gcGFydGljdWxhciwKK2NhbGxpbmcgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS53cml0ZWAgaXMgbm93IGd1YXJhbnRlZWQgdG8gc2VuZCB0aGUKK2RhdGEgaW4gZnVsbC4gIChDb250cmlidXRlZCBieSBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgMjY3MjFgLikKKworc3NsCistLS0KKworOm1vZDpgc3NsYCBzdXBwb3J0cyBPcGVuU1NMIDEuMS4wLiBUaGUgbWluaW11bSByZWNvbW1lbmQgdmVyc2lvbiBpcyAxLjAuMi4KK0l0IGhhcyBiZWVuIHRlc3RlZCB3aXRoIDAuOS44emMsIDAuOS44emggYW5kIDEuMC4xdCBhcyB3ZWxsIGFzIExpYnJlU1NMIDIuMworYW5kIDIuNC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjY0NzBgLikKKworM0RFUyBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGRlZmF1bHQgY2lwaGVyIHN1aXRlcyBhbmQgQ2hhQ2hhMjAgUG9seTEzMDUKK2NpcGhlciBzdWl0ZXMgYXJlIG5vdyBpbiB0aGUgcmlnaHQgcG9zaXRpb24uCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3ODUwYCBhbmQgOmlzc3VlOmAyNzc2NmAuKQorCis6Y2xhc3M6YH5zc2wuU1NMQ29udGV4dGAgaGFzIGJldHRlciBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIG9wdGlvbnMKK2FuZCBjaXBoZXJzLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODA0M2AuKQorCitTU0wgc2Vzc2lvbiBjYW4gYmUgY29waWVkIGZyb20gb25lIGNsaWVudC1zaWRlIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgord2l0aCA6Y2xhc3M6YH5zc2wuU1NMU2Vzc2lvbmAuIFRMUyBzZXNzaW9uIHJlc3VtcHRpb24gY2FuIHNwZWVkIHVwCit0aGUgaW5pdGlhbCBoYW5kc2hha2UsIHJlZHVjZSBsYXRlbmN5IGFuZCBpbXByb3ZlIHBlcmZvcm1hbmNlCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE5NTAwYCBiYXNlZCBvbiBhIGRyYWZ0IGJ5CitBbGV4IFdhcmhhd2suKQorCitBbGwgY29uc3RhbnRzIGFuZCBmbGFncyBoYXZlIGJlZW4gY29udmVydGVkIHRvIDpjbGFzczpgfmVudW0uSW50RW51bWAgYW5kCis6Y2xhc3M6YH5lbnVtLkludEZsYWdzYC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwMjVgLikKKworU2VydmVyIGFuZCBjbGllbnQtc2lkZSBzcGVjaWZpYyBUTFMgcHJvdG9jb2xzIGZvciA6Y2xhc3M6YH5zc2wuU1NMQ29udGV4dGAKK3dlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDg1YC4pCisKK0dlbmVyYWwgcmVzb3VyY2UgaWRzIChgYEdFTl9SSURgYCkgaW4gc3ViamVjdCBhbHRlcm5hdGl2ZSBuYW1lIGV4dGVuc2lvbnMKK25vIGxvbmdlciBjYXNlIGEgU3lzdGVtRXJyb3IuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3NjkxYC4pCisKK3N1YnByb2Nlc3MKKy0tLS0tLS0tLS0KKworOmNsYXNzOmBzdWJwcm9jZXNzLlBvcGVuYCBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2FybmluZworaWYgdGhlIGNoaWxkIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4gVXNlIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgKGBgd2l0aAorcHJvYzogLi4uYGApIG9yIGNhbGwgZXhwbGljaXRseSB0aGUgOm1ldGg6YH5zdWJwcm9jZXNzLlBvcGVuLndhaXRgIG1ldGhvZCB0bworcmVhZCB0aGUgZXhpdCBzdGF0dXMgb2YgdGhlIGNoaWxkIHByb2Nlc3MgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCis6aXNzdWU6YDI2NzQxYCkuCisKK1RoZSA6Y2xhc3M6YHN1YnByb2Nlc3MuUG9wZW5gIGNvbnN0cnVjdG9yIGFuZCBhbGwgZnVuY3Rpb25zIHRoYXQgcGFzcyBhcmd1bWVudHMKK3Rocm91Z2ggdG8gaXQgbm93IGFjY2VwdCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBhcmd1bWVudHMuIFNwZWNpZnlpbmcgZWl0aGVyCitvZiB0aGVzZSB3aWxsIGVuYWJsZSB0ZXh0IG1vZGUgZm9yIHRoZSAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3RyZWFtcy4KKwordGVsbmV0bGliCistLS0tLS0tLS0KKworOmNsYXNzOmB+dGVsbmV0bGliLlRlbG5ldGAgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyIChjb250cmlidXRlZCBieQorU3TDqXBoYW5lIFdpcnRlbCBpbiA6aXNzdWU6YDI1NDg1YCkuCisKKwordGtpbnRlcgorLS0tLS0tLQorCitBZGRlZCBtZXRob2RzIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9hZGRgLAorOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX3JlbW92ZWAgYW5kIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9pbmZvYAoraW4gdGhlIDpjbGFzczpgdGtpbnRlci5WYXJpYWJsZWAgY2xhc3MuICBUaGV5IHJlcGxhY2Ugb2xkIG1ldGhvZHMKKzptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV92YXJpYWJsZWAsIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZWAsCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmRlbGV0ZWAgYW5kCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmluZm9gIHRoYXQgdXNlIG9ic29sZXRlIFRjbCBjb21tYW5kcyBhbmQgbWlnaHQKK25vdCB3b3JrIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBUY2wuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyMTE1YCkuCisKKworLi4gX3B5MzYtdHJhY2ViYWNrOgorCit0cmFjZWJhY2sKKy0tLS0tLS0tLQorCitCb3RoIHRoZSB0cmFjZWJhY2sgbW9kdWxlIGFuZCB0aGUgaW50ZXJwcmV0ZXIncyBidWlsdGluIGV4Y2VwdGlvbiBkaXNwbGF5IG5vdworYWJicmV2aWF0ZSBsb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBsaW5lcyBpbiB0cmFjZWJhY2tzIGFzIHNob3duIGluIHRoZQorZm9sbG93aW5nIGV4YW1wbGU6OgorCisgICAgPj4+IGRlZiBmKCk6IGYoKQorICAgIC4uLgorICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgOTk1IG1vcmUgdGltZXNdCisgICAgUmVjdXJzaW9uRXJyb3I6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkCisKKyhDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjY4MjNgLikKKworCit0eXBpbmcKKy0tLS0tLQorCitUaGUgOmNsYXNzOmB0eXBpbmcuQ29udGV4dE1hbmFnZXJgIGNsYXNzIGhhcyBiZWVuIGFkZGVkIGZvcgorcmVwcmVzZW50aW5nIDpjbGFzczpgY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyYC4KKyhDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTYwOWAuKQorCisKK3VuaWNvZGVkYXRhCistLS0tLS0tLS0tLQorCitUaGUgaW50ZXJuYWwgZGF0YWJhc2UgaGFzIGJlZW4gdXBncmFkZWQgdG8gdXNlIFVuaWNvZGUgOS4wLjAuIChDb250cmlidXRlZCBieQorQmVuamFtaW4gUGV0ZXJzb24uKQorCisKK3VuaXR0ZXN0Lm1vY2sKKy0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfnVuaXR0ZXN0Lm1vY2suTW9ja2AgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgaW1wcm92ZW1lbnRzOgorCisqIFR3byBuZXcgbWV0aG9kcywgOm1ldGg6YE1vY2suYXNzZXJ0X2NhbGxlZCgpCisgIDx1bml0dGVzdC5tb2NrLk1vY2suYXNzZXJ0X2NhbGxlZD5gIGFuZCA6bWV0aDpgTW9jay5hc3NlcnRfY2FsbGVkX29uY2UoKQorICA8dW5pdHRlc3QubW9jay5Nb2NrLmFzc2VydF9jYWxsZWRfb25jZT5gIHRvIGNoZWNrIGlmIHRoZSBtb2NrIG9iamVjdAorICB3YXMgY2FsbGVkLgorICAoQ29udHJpYnV0ZWQgYnkgQW1pdCBTYWhhIGluIDppc3N1ZTpgMjYzMjNgLikKKworCit1cmxsaWIucmVxdWVzdAorLS0tLS0tLS0tLS0tLS0KKworSWYgYSBIVFRQIHJlcXVlc3QgaGFzIGEgZmlsZSBvciBpdGVyYWJsZSBib2R5IChvdGhlciB0aGFuIGEKK2J5dGVzIG9iamVjdCkgYnV0IG5vIENvbnRlbnQtTGVuZ3RoIGhlYWRlciwgcmF0aGVyIHRoYW4KK3Rocm93aW5nIGFuIGVycm9yLCA6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyYCBub3cKK2ZhbGxzIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKwordXJsbGliLnJvYm90cGFyc2VyCistLS0tLS0tLS0tLS0tLS0tLS0KKworOmNsYXNzOmB+dXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcmAgbm93IHN1cHBvcnRzIHRoZSBgYENyYXdsLWRlbGF5YGAgYW5kCitgYFJlcXVlc3QtcmF0ZWBgIGV4dGVuc2lvbnMuCisoQ29udHJpYnV0ZWQgYnkgTmlrb2xheSBCb2dveWNoZXYgaW4gOmlzc3VlOmAxNjA5OWAuKQorCisKK3dhcm5pbmdzCistLS0tLS0tLQorCitBIG5ldyBvcHRpb25hbCAqc291cmNlKiBwYXJhbWV0ZXIgaGFzIGJlZW4gYWRkZWQgdG8gdGhlCis6ZnVuYzpgd2FybmluZ3Mud2Fybl9leHBsaWNpdGAgZnVuY3Rpb246IHRoZSBkZXN0cm95ZWQgb2JqZWN0IHdoaWNoIGVtaXR0ZWQgYQorOmV4YzpgUmVzb3VyY2VXYXJuaW5nYC4gQSAqc291cmNlKiBhdHRyaWJ1dGUgaGFzIGFsc28gYmVlbiBhZGRlZCB0bworOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAgKGNvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCis6aXNzdWU6YDI2NTY4YCBhbmQgOmlzc3VlOmAyNjU2N2ApLgorCitXaGVuIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3YXJuaW5nIGlzIGxvZ2dlZCwgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBpcyBub3cKK3VzZWQgdG8gdHJ5IHRvIHJldHJpZXZlIHRoZSB0cmFjZWJhY2sgd2hlcmUgdGhlIGRldHJveWVkIG9iamVjdCB3YXMgYWxsb2NhdGVkLgorCitFeGFtcGxlIHdpdGggdGhlIHNjcmlwdCBgYGV4YW1wbGUucHlgYDo6CisKKyAgICBpbXBvcnQgd2FybmluZ3MKKworICAgIGRlZiBmdW5jKCk6CisgICAgICAgIHJldHVybiBvcGVuKF9fZmlsZV9fKQorCisgICAgZiA9IGZ1bmMoKQorICAgIGYgPSBOb25lCisKK091dHB1dCBvZiB0aGUgY29tbWFuZCBgYHB5dGhvbjMuNiAtV2QgLVggdHJhY2VtYWxsb2M9NSBleGFtcGxlLnB5YGA6OgorCisgICAgZXhhbXBsZS5weTo3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5UZXh0SU9XcmFwcGVyIG5hbWU9J2V4YW1wbGUucHknIG1vZGU9J3InIGVuY29kaW5nPSdVVEYtOCc+CisgICAgICBmID0gTm9uZQorICAgIE9iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgRmlsZSAiZXhhbXBsZS5weSIsIGxpbmVubyA0CisgICAgICAgIHJldHVybiBvcGVuKF9fZmlsZV9fKQorICAgICAgRmlsZSAiZXhhbXBsZS5weSIsIGxpbmVubyA2CisgICAgICAgIGYgPSBmdW5jKCkKKworVGhlICJPYmplY3QgYWxsb2NhdGVkIGF0IiB0cmFjZWJhY2sgaXMgbmV3IGFuZCBvbmx5IGRpc3BsYXllZCBpZgorOm1vZDpgdHJhY2VtYWxsb2NgIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgaWYgdGhlCis6bW9kOmB3YXJuaW5nc2Agd2FzIGFscmVhZHkgaW1wb3J0ZWQuCisKKword2lucmVnCistLS0tLS0KKworQWRkZWQgdGhlIDY0LWJpdCBpbnRlZ2VyIHR5cGUgOmRhdGE6YFJFR19RV09SRCA8d2lucmVnLlJFR19RV09SRD5gLgorKENvbnRyaWJ1dGVkIGJ5IENsZW1lbnQgUm91YXVsdCBpbiA6aXNzdWU6YDIzMDI2YC4pCisKKword2luc291bmQKKy0tLS0tLS0tCisKK0FsbG93ZWQga2V5d29yZCBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIDpmdW5jOmBCZWVwIDx3aW5zb3VuZC5CZWVwPmAsCis6ZnVuYzpgTWVzc2FnZUJlZXAgPHdpbnNvdW5kLk1lc3NhZ2VCZWVwPmAsIGFuZCA6ZnVuYzpgUGxheVNvdW5kCis8d2luc291bmQuUGxheVNvdW5kPmAgKDppc3N1ZTpgMjc5ODJgKS4KKworCit4bWxycGMuY2xpZW50CistLS0tLS0tLS0tLS0tCisKK1RoZSBtb2R1bGUgbm93IHN1cHBvcnRzIHVubWFyc2hhbGxpbmcgYWRkaXRpb25hbCBkYXRhIHR5cGVzIHVzZWQgYnkKK0FwYWNoZSBYTUwtUlBDIGltcGxlbWVudGF0aW9uIGZvciBudW1lcmljcyBhbmQgYGBOb25lYGAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI2ODg1YC4pCisKKworemlwZmlsZQorLS0tLS0tLQorCitBIG5ldyA6bWV0aDpgWmlwSW5mby5mcm9tX2ZpbGUoKSA8emlwZmlsZS5aaXBJbmZvLmZyb21fZmlsZT5gIGNsYXNzIG1ldGhvZAorYWxsb3dzIG1ha2luZyBhIDpjbGFzczpgfnppcGZpbGUuWmlwSW5mb2AgaW5zdGFuY2UgZnJvbSBhIGZpbGVzeXN0ZW0gZmlsZS4KK0EgbmV3IDptZXRoOmBaaXBJbmZvLmlzX2RpcigpIDx6aXBmaWxlLlppcEluZm8uaXNfZGlyPmAgbWV0aG9kIGNhbiBiZSB1c2VkCit0byBjaGVjayBpZiB0aGUgOmNsYXNzOmB+emlwZmlsZS5aaXBJbmZvYCBpbnN0YW5jZSByZXByZXNlbnRzIGEgZGlyZWN0b3J5LgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjYwMzlgLikKKworVGhlIDptZXRoOmBaaXBGaWxlLm9wZW4oKSA8emlwZmlsZS5aaXBGaWxlLm9wZW4+YCBtZXRob2QgY2FuIG5vdyBiZSB1c2VkIHRvCit3cml0ZSBkYXRhIGludG8gYSBaSVAgZmlsZSwgYXMgd2VsbCBhcyBmb3IgZXh0cmFjdGluZyBkYXRhLgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjYwMzlgLikKKworCit6bGliCistLS0tCisKK1RoZSA6ZnVuYzpgfnpsaWIuY29tcHJlc3NgIGZ1bmN0aW9uIG5vdyBhY2NlcHRzIGtleXdvcmQgYXJndW1lbnRzLgorKENvbnRyaWJ1dGVkIGJ5IEF2aXYgUGFsaXZvZGEgaW4gOmlzc3VlOmAyNjI0M2AuKQorCisKK2ZpbGVpbnB1dAorLS0tLS0tLS0tCisKKzpmdW5jOmB+ZmlsZWlucHV0Lmhvb2tfZW5jb2RlZGAgbm93IHN1cHBvcnRzIHRoZSAqZXJyb3JzKiBhcmd1bWVudC4KKyhDb250cmlidXRlZCBieSBKb3NlcGggSGFja21hbiBpbiA6aXNzdWU6YDI1Nzg4YC4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCisqIFRoZSBBU0NJSSBkZWNvZGVyIGlzIG5vdyB1cCB0byA2MCB0aW1lcyBhcyBmYXN0IGZvciBlcnJvciBoYW5kbGVycworICBgYHN1cnJvZ2F0ZWVzY2FwZWBgLCBgYGlnbm9yZWBgIGFuZCBgYHJlcGxhY2VgYCAoQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNDg3MGApLgorCisqIFRoZSBBU0NJSSBhbmQgdGhlIExhdGluMSBlbmNvZGVycyBhcmUgbm93IHVwIHRvIDMgdGltZXMgYXMgZmFzdCBmb3IgdGhlCisgIGVycm9yIGhhbmRsZXIgYGBzdXJyb2dhdGVlc2NhcGVgYCAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTIyN2ApLgorCisqIFRoZSBVVEYtOCBlbmNvZGVyIGlzIG5vdyB1cCB0byA3NSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvciBoYW5kbGVycworICBgYGlnbm9yZWBgLCBgYHJlcGxhY2VgYCwgYGBzdXJyb2dhdGVlc2NhcGVgYCwgYGBzdXJyb2dhdGVwYXNzYGAgKENvbnRyaWJ1dGVkCisgIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUyNjdgKS4KKworKiBUaGUgVVRGLTggZGVjb2RlciBpcyBub3cgdXAgdG8gMTUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IgaGFuZGxlcnMKKyAgYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAgYW5kIGBgc3Vycm9nYXRlZXNjYXBlYGAgKENvbnRyaWJ1dGVkCisgIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUzMDFgKS4KKworKiBgYGJ5dGVzICUgYXJnc2BgIGlzIG5vdyB1cCB0byAyIHRpbWVzIGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyCisgIGluIDppc3N1ZTpgMjUzNDlgKS4KKworKiBgYGJ5dGVhcnJheSAlIGFyZ3NgYCBpcyBub3cgYmV0d2VlbiAyLjUgYW5kIDUgdGltZXMgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkKKyAgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTM5OWApLgorCisqIE9wdGltaXplIDptZXRoOmBieXRlcy5mcm9taGV4YCBhbmQgOm1ldGg6YGJ5dGVhcnJheS5mcm9taGV4YDogdGhleSBhcmUgbm93CisgIGJldHdlZW4gMnggYW5kIDMuNXggZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTQwMWApLgorCisqIE9wdGltaXplIGBgYnl0ZXMucmVwbGFjZShiJycsIGInLicpYGAgYW5kIGBgYnl0ZWFycmF5LnJlcGxhY2UoYicnLCBiJy4nKWBgOgorICB1cCB0byA4MCUgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkgSm9zaCBTbmlkZXIgaW4gOmlzc3VlOmAyNjU3NGApLgorCisqIEFsbG9jYXRvciBmdW5jdGlvbnMgb2YgdGhlIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgZG9tYWluCisgICg6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCkgbm93IHVzZSB0aGUgOnJlZjpgcHltYWxsb2MgbWVtb3J5IGFsbG9jYXRvcgorICA8cHltYWxsb2M+YCBpbnN0ZWFkIG9mIDpjOmZ1bmM6YG1hbGxvY2AgZnVuY3Rpb24gb2YgdGhlIEMgbGlicmFyeS4gVGhlCisgIHB5bWFsbG9jIGFsbG9jYXRvciBpcyBvcHRpbWl6ZWQgZm9yIG9iamVjdHMgc21hbGxlciBvciBlcXVhbCB0byA1MTIgYnl0ZXMKKyAgd2l0aCBhIHNob3J0IGxpZmV0aW1lLCBhbmQgdXNlIDpjOmZ1bmM6YG1hbGxvY2AgZm9yIGxhcmdlciBtZW1vcnkgYmxvY2tzLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjI0OWApLgorCisqIDpmdW5jOmBwaWNrbGUubG9hZGAgYW5kIDpmdW5jOmBwaWNrbGUubG9hZHNgIGFyZSBub3cgdXAgdG8gMTAlIGZhc3RlciB3aGVuCisgIGRlc2VyaWFsaXppbmcgbWFueSBzbWFsbCBvYmplY3RzIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbgorICA6aXNzdWU6YDI3MDU2YCkuCisKKy0gUGFzc2luZyA6dGVybTpga2V5d29yZCBhcmd1bWVudHMgPGtleXdvcmQgYXJndW1lbnQ+YCB0byBhIGZ1bmN0aW9uIGhhcyBhbgorICBvdmVyaGVhZCBpbiBjb21wYXJpc29uIHdpdGggcGFzc2luZyA6dGVybTpgcG9zaXRpb25hbCBhcmd1bWVudHMKKyAgPHBvc2l0aW9uYWwgYXJndW1lbnQ+YC4gIE5vdyBpbiBleHRlbnNpb24gZnVuY3Rpb25zIGltcGxlbWVudGVkIHdpdGggdXNpbmcKKyAgQXJndW1lbnQgQ2xpbmljIHRoaXMgb3ZlcmhlYWQgaXMgc2lnbmlmaWNhbnRseSBkZWNyZWFzZWQuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjc1NzRgKS4KKworKiBPcHRpbWl6ZWQgOmZ1bmM6YH5nbG9iLmdsb2JgIGFuZCA6ZnVuYzpgfmdsb2IuaWdsb2JgIGZ1bmN0aW9ucyBpbiB0aGUKKyAgOm1vZDpgZ2xvYmAgbW9kdWxlOyB0aGV5IGFyZSBub3cgYWJvdXQgMy0tNiB0aW1lcyBmYXN0ZXIuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU1OTZgKS4KKworKiBPcHRpbWl6ZWQgZ2xvYmJpbmcgaW4gOm1vZDpgcGF0aGxpYmAgYnkgdXNpbmcgOmZ1bmM6YG9zLnNjYW5kaXJgOworICBpdCBpcyBub3cgYWJvdXQgMS41LS00IHRpbWVzIGZhc3Rlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNjAzMmApLgorCitCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworKiBQeXRob24gbm93IHJlcXVpcmVzIHNvbWUgQzk5IHN1cHBvcnQgaW4gdGhlIHRvb2xjaGFpbiB0byBidWlsZC4gRm9yIG1vcmUKKyAgaW5mb3JtYXRpb24sIHNlZSA6cGVwOmA3YC4KKworKiBDcm9zcy1jb21waWxpbmcgQ1B5dGhvbiB3aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgdGhlIEFuZHJvaWQgQVBJIGxldmVsIHNldCB0bworICAyMSAoQW5kcm9pZCA1LjAgTG9sbGlsb3ApIG9yIGdyZWF0ZXIsIHJ1bnMgc3VjY2Vzc2Z1bGx5LiBXaGlsZSBBbmRyb2lkIGlzIG5vdAorICB5ZXQgYSBzdXBwb3J0ZWQgcGxhdGZvcm0sIHRoZSBQeXRob24gdGVzdCBzdWl0ZSBydW5zIG9uIHRoZSBBbmRyb2lkIGVtdWxhdG9yCisgIHdpdGggb25seSBhYm91dCAxNiB0ZXN0cyBmYWlsdXJlcy4gU2VlIHRoZSBBbmRyb2lkIG1ldGEtaXNzdWUgOmlzc3VlOmAyNjg2NWAuCisKKyogVGhlIGBgLS13aXRoLW9wdGltaXphdGlvbnNgYCBjb25maWd1cmUgZmxhZyBoYXMgYmVlbiBhZGRlZC4gVHVybmluZyBpdCBvbgorICB3aWxsIGFjdGl2YXRlIExUTyBhbmQgUEdPIGJ1aWxkIHN1cHBvcnQgKHdoZW4gYXZhaWxhYmxlKS4KKyAgKE9yaWdpbmFsIHBhdGNoIGJ5IEFsZWNzYW5kcnUgUGF0cmFzY3Ugb2YgSW50ZWwgaW4gOmlzc3VlOmAyNjUzOWAuKQorCisqIE5ldyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBBUEkgd2hpY2ggaW5kaWNhdGVzIGlmIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEKKyAgZmFpbGVkICg6aXNzdWU6YDUzMTlgKS4KKworKiA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNgIG5vdyBzdXBwb3J0cyA6cmVmOmBwb3NpdGlvbmFsLW9ubHkKKyAgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLiAgUG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgYXJlCisgIGRlZmluZWQgYnkgZW1wdHkgbmFtZXMuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjYyODJgKS4KKworKiBgYFB5VHJhY2ViYWNrX1ByaW50YGAgbWV0aG9kIG5vdyBhYmJyZXZpYXRlcyBsb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBsaW5lcworICBhcyBgYCJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdImBgLgorICAoQ29udHJpYnV0ZWQgYnkgRW1hbnVlbCBCYXJyeSBpbiA6aXNzdWU6YDI2ODIzYC4pCisKKworRGVwcmVjYXRlZAorPT09PT09PT09PQorCitEZXByZWNhdGVkIEJ1aWxkIE9wdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYGAtLXdpdGgtc3lzdGVtLWZmaWBgIGNvbmZpZ3VyZSBmbGFnIGlzIG5vdyBvbiBieSBkZWZhdWx0IG9uIG5vbi1PU1ggVU5JWAorcGxhdGZvcm1zLiAgSXQgbWF5IGJlIGRpc2FibGVkIGJ5IHVzaW5nIGBgLS13aXRob3V0LXN5c3RlbS1mZmlgYCwgYnV0IHVzaW5nIHRoZQorZmxhZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIG5vdCBiZSBhY2NlcHRlZCBpbiBQeXRob24gMy43LiAgT1NYIGlzIHVuYWZmZWN0ZWQKK2J5IHRoaXMgY2hhbmdlLiAgTm90ZSB0aGF0IG1hbnkgT1MgZGlzdHJpYnV0b3JzIGFscmVhZHkgdXNlIHRoZQorYGAtLXdpdGgtc3lzdGVtLWZmaWBgIGZsYWcgd2hlbiBidWlsZGluZyB0aGVpciBzeXN0ZW0gUHl0aG9uLgorCisKK05ldyBLZXl3b3JkcworLS0tLS0tLS0tLS0tCisKK2BgYXN5bmNgYCBhbmQgYGBhd2FpdGBgIGFyZSBub3QgcmVjb21tZW5kZWQgdG8gYmUgdXNlZCBhcyB2YXJpYWJsZSwgY2xhc3MsCitmdW5jdGlvbiBvciBtb2R1bGUgbmFtZXMuICBJbnRyb2R1Y2VkIGJ5IDpwZXA6YDQ5MmAgaW4gUHl0aG9uIDMuNSwgdGhleSB3aWxsCitiZWNvbWUgcHJvcGVyIGtleXdvcmRzIGluIFB5dGhvbiAzLjcuCisKKworRGVwcmVjYXRlZCBQeXRob24gbW9kdWxlcywgZnVuY3Rpb25zIGFuZCBtZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6bWV0aDpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLmxvYWRfbW9kdWxlYCBhbmQKKyAgOm1ldGg6YGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIubG9hZF9tb2R1bGVgIGFyZSBub3cKKyAgZGVwcmVjYXRlZC4gVGhleSB3ZXJlIHRoZSBvbmx5IHJlbWFpbmluZyBpbXBsZW1lbnRhdGlvbnMgb2YKKyAgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCBpbiA6bW9kOmBpbXBvcnRsaWJgIHRoYXQgaGFkIG5vdAorICBiZWVuIGRlcHJlY2F0ZWQgaW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgUHl0aG9uIGluIGZhdm91ciBvZgorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgLgorCisqIFRoZSA6bW9kOmB0a2ludGVyLnRpeGAgbW9kdWxlIGlzIG5vdyBkZXByZWNhdGVkLiAgOm1vZDpgdGtpbnRlcmAgdXNlcnMgc2hvdWxkCisgIHVzZSA6bW9kOmB0a2ludGVyLnR0a2AgaW5zdGVhZC4KKworCitEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgdHlwZXMgb2YgdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogTm9uZSB5ZXQuCisKKworRGVwcmVjYXRlZCBmZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBgYHB5dmVudmBgIHNjcmlwdCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBgYHB5dGhvbjMgLW0gdmVudmBgLgorICBUaGlzIHByZXZlbnRzIGNvbmZ1c2lvbiBhcyB0byB3aGF0IFB5dGhvbiBpbnRlcnByZXRlciBgYHB5dmVudmBgIGlzCisgIGNvbm5lY3RlZCB0byBhbmQgdGh1cyB3aGF0IFB5dGhvbiBpbnRlcnByZXRlciB3aWxsIGJlIHVzZWQgYnkgdGhlIHZpcnR1YWwKKyAgZW52aXJvbm1lbnQuIChDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTE1NGAuKQorCisqIFdoZW4gcGVyZm9ybWluZyBhIHJlbGF0aXZlIGltcG9ydCwgZmFsbGluZyBiYWNrIG9uIGBgX19uYW1lX19gYCBhbmQKKyAgYGBfX3BhdGhfX2BgIGZyb20gdGhlIGNhbGxpbmcgbW9kdWxlIHdoZW4gYGBfX3NwZWNfX2BgIG9yCisgIGBgX19wYWNrYWdlX19gYCBhcmUgbm90IGRlZmluZWQgbm93IHJhaXNlcyBhbiA6ZXhjOmBJbXBvcnRXYXJuaW5nYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFJvc2UgQW1lcyBpbiA6aXNzdWU6YDI1NzkxYC4pCisKKyogVW5saWtlIHRvIG90aGVyIDptb2Q6YGRibWAgaW1wbGVtZW50YXRpb25zLCB0aGUgOm1vZDpgZGJtLmR1bWJgIG1vZHVsZQorICBjcmVhdGVzIGRhdGFiYXNlIGluIGBgJ3InYGAgYW5kIGBgJ3cnYGAgbW9kZXMgaWYgaXQgZG9lc24ndCBleGlzdCBhbmQKKyAgYWxsb3dzIG1vZGlmeWluZyBkYXRhYmFzZSBpbiBgYCdyJ2BgIG1vZGUuICBUaGlzIGJlaGF2aW9yIGlzIG5vdyBkZXByZWNhdGVkCisgIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy44LgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIxNzA4YC4pCisKKyogVW5kb2N1bWVudGVkIHN1cHBvcnQgb2YgZ2VuZXJhbCA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RzIDxieXRlcy1saWtlIG9iamVjdD5gCisgIGFzIHBhdGhzIGluIDptb2Q6YG9zYCBmdW5jdGlvbnMsIDpmdW5jOmBjb21waWxlYCBhbmQgc2ltaWxhciBmdW5jdGlvbnMgaXMKKyAgbm93IGRlcHJlY2F0ZWQuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU3OTFgIGFuZCA6aXNzdWU6YDI2NzU0YC4pCisKKyogVGhlIHVuZG9jdW1lbnRlZCBgYGV4dHJhX3BhdGhgYCBhcmd1bWVudCB0byBhIGRpc3R1dGlscyBEaXN0cmlidXRpb24KKyAgaXMgbm93IGNvbnNpZGVyZWQKKyAgZGVwcmVjYXRlZCwgd2lsbCByYWlzZSBhIHdhcm5pbmcgZHVyaW5nIGluc3RhbGwgaWYgc2V0LiBTdXBwb3J0IGZvciB0aGlzCisgIHBhcmFtZXRlciB3aWxsIGJlIGRyb3BwZWQgaW4gYSBmdXR1cmUgUHl0aG9uIHJlbGVhc2UgYW5kIGxpa2VseSBlYXJsaWVyCisgIHRocm91Z2ggdGhpcmQgcGFydHkgdG9vbHMuIFNlZSA6aXNzdWU6YDI3OTE5YCBmb3IgZGV0YWlscy4KKworKiBBIGJhY2tzbGFzaC1jaGFyYWN0ZXIgcGFpciB0aGF0IGlzIG5vdCBhIHZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBub3cgZ2VuZXJhdGVzCisgIGEgRGVwcmVjYXRpb25XYXJuaW5nLiAgQWx0aG91Z2ggdGhpcyB3aWxsIGV2ZW50dWFsbHkgYmVjb21lIGEgU3ludGF4RXJyb3IsCisgIHRoYXQgd2lsbCBub3QgYmUgZm9yIHNldmVyYWwgUHl0aG9uIHJlbGVhc2VzLiAgKENvbnRyaWJ1dGVkIGJ5IEVtYW51ZWwgQmFycnkKKyAgaW4gOmlzc3VlOmAyNzM2NGAuKQorCisqIElubGluZSBmbGFncyBgYCg/bGV0dGVycylgYCBub3cgc2hvdWxkIGJlIHVzZWQgb25seSBhdCB0aGUgc3RhcnQgb2YgdGhlCisgIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIElubGluZSBmbGFncyBpbiB0aGUgbWlkZGxlIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KKyAgYWZmZWN0cyBnbG9iYWwgZmxhZ3MgaW4gUHl0aG9uIDptb2Q6YHJlYCBtb2R1bGUuICBUaGlzIGlzIGFuIGV4Y2VwdGlvbiB0bworICBvdGhlciByZWd1bGFyIGV4cHJlc3Npb24gZW5naW5lcyB0aGF0IGVpdGhlciBhcHBseSBmbGFncyB0byBvbmx5IHBhcnQgb2YKKyAgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciB0cmVhdCB0aGVtIGFzIGFuIGVycm9yLiAgVG8gYXZvaWQgZGlzdGluZ3Vpc2hpbmcKKyAgaW5saW5lIGZsYWdzIGluIHRoZSBtaWRkbGUgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBub3cgZW1pdCBhIGRlcHJlY2F0aW9uCisgIHdhcm5pbmcuICBJdCB3aWxsIGJlIGFuIGVycm9yIGluIGZ1dHVyZSBQeXRob24gcmVsZWFzZXMuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI0OTNgLikKKworKiBTU0wtcmVsYXRlZCBhcmd1bWVudHMgbGlrZSBgYGNlcnRmaWxlYGAsIGBga2V5ZmlsZWBgIGFuZCBgYGNoZWNrX2hvc3RuYW1lYGAKKyAgaW4gOm1vZDpgZnRwbGliYCwgOm1vZDpgaHR0cC5jbGllbnRgLCA6bW9kOmBpbWFwbGliYCwgOm1vZDpgcG9wbGliYCwKKyAgYW5kIDptb2Q6YHNtdHBsaWJgIGhhdmUgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBgY29udGV4dGBgLgorICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDIyYC4pCisKKyogQSBjb3VwbGUgb2YgcHJvdG9jb2xzIGFuZCBmdW5jdGlvbnMgb2YgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGFyZSBub3cKKyAgZGVwcmVjYXRlZC4gU29tZSBmZWF0dXJlcyB3aWxsIG5vIGxvbmdlciBiZSBhdmFpbGFibGUgaW4gZnV0dXJlIHZlcnNpb25zCisgIG9mIE9wZW5TU0wuIE90aGVyIGZlYXR1cmVzIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGEgZGlmZmVyZW50IEFQSS4KKyAgKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODAyMmAgYW5kIDppc3N1ZTpgMjY0NzBgLikKKworCitEZXByZWNhdGVkIFB5dGhvbiBiZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBSYWlzaW5nIHRoZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24gaW5zaWRlIGEgZ2VuZXJhdG9yIHdpbGwgbm93IGdlbmVyYXRlIGEKKyAgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYCwgYW5kIHdpbGwgdHJpZ2dlciBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaW4gUHl0aG9uIDMuNy4KKyAgU2VlIDpyZWY6YHdoYXRzbmV3LXBlcC00NzlgIGZvciBkZXRhaWxzLgorCisKK1JlbW92ZWQKKz09PT09PT0KKworQVBJIGFuZCBGZWF0dXJlIFJlbW92YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBgYGluc3BlY3QuZ2V0bW9kdWxlaW5mbygpYGAgd2FzIHJlbW92ZWQgKHdhcyBkZXByZWNhdGVkIHNpbmNlIENQeXRob24gMy4zKS4KKyAgOmZ1bmM6YGluc3BlY3QuZ2V0bW9kdWxlbmFtZWAgc2hvdWxkIGJlIHVzZWQgZm9yIG9idGFpbmluZyB0aGUgbW9kdWxlCisgIG5hbWUgZm9yIGEgZ2l2ZW4gcGF0aC4KKworKiBgYHRyYWNlYmFjay5JZ25vcmVgYCBjbGFzcyBhbmQgYGB0cmFjZWJhY2sudXNhZ2VgYCwgYGB0cmFjZWJhY2subW9kbmFtZWBgLAorICBgYHRyYWNlYmFjay5mdWxsbW9kbmFtZWBgLCBgYHRyYWNlYmFjay5maW5kX2xpbmVzX2Zyb21fY29kZWBgLAorICBgYHRyYWNlYmFjay5maW5kX2xpbmVzYGAsIGBgdHJhY2ViYWNrLmZpbmRfc3RyaW5nc2BgLAorICBgYHRyYWNlYmFjay5maW5kX2V4ZWN1dGFibGVfbGluZXNgYCBtZXRob2RzIHdlcmUgcmVtb3ZlZCBmcm9tIHRoZQorICA6bW9kOmB0cmFjZWJhY2tgIG1vZHVsZS4gVGhleSB3ZXJlIHVuZG9jdW1lbnRlZCBtZXRob2RzIGRlcHJlY2F0ZWQgc2luY2UKKyAgUHl0aG9uIDMuMiBhbmQgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBmcm9tIHByaXZhdGUgbWV0aG9kcy4KKworKiBUaGUgYGB0a19tZW51QmFyKClgYCBhbmQgYGB0a19iaW5kRm9yVHJhdmVyc2FsKClgYCBkdW1teSBtZXRob2RzIGluCisgIDptb2Q6YHRraW50ZXJgIHdpZGdldCBjbGFzc2VzIHdlcmUgcmVtb3ZlZCAoY29ycmVzcG9uZGluZyBUayBjb21tYW5kcworICB3ZXJlIG9ic29sZXRlIHNpbmNlIFRrIDQuMCkuCisKKyogVGhlIDptZXRoOmB+emlwZmlsZS5aaXBGaWxlLm9wZW5gIG1ldGhvZCBvZiB0aGUgOmNsYXNzOmB6aXBmaWxlLlppcEZpbGVgCisgIGNsYXNzIG5vIGxvbmdlciBzdXBwb3J0cyB0aGUgYGAnVSdgYCBtb2RlICh3YXMgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMy40KS4KKyAgVXNlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZm9yIHJlYWRpbmcgY29tcHJlc3NlZCB0ZXh0IGZpbGVzIGluCisgIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUuCisKKyogVGhlIHVuZG9jdW1lbnRlZCBgYElOYGAsIGBgQ0RST01gYCwgYGBETEZDTmBgLCBgYFRZUEVTYGAsIGBgQ0RJT2BgLCBhbmQKKyAgYGBTVFJPUFRTYGAgbW9kdWxlcyBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXkgaGFkIGJlZW4gYXZhaWxhYmxlIGluIHRoZQorICBwbGF0Zm9ybSBzcGVjaWZpYyBgYExpYi9wbGF0LSovYGAgZGlyZWN0b3JpZXMsIGJ1dCB3ZXJlIGNocm9uaWNhbGx5IG91dCBvZgorICBkYXRlLCBpbmNvbnNpc3RlbnRseSBhdmFpbGFibGUgYWNyb3NzIHBsYXRmb3JtcywgYW5kIHVubWFpbnRhaW5lZC4gIFRoZQorICBzY3JpcHQgdGhhdCBjcmVhdGVkIHRoZXNlIG1vZHVsZXMgaXMgc3RpbGwgYXZhaWxhYmxlIGluIHRoZSBzb3VyY2UKKyAgZGlzdHJpYnV0aW9uIGF0IDpzb3VyY2U6YFRvb2xzL3NjcmlwdHMvaDJweS5weWAuCisKKworUG9ydGluZyB0byBQeXRob24gMy42Cis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGxpc3RzIHByZXZpb3VzbHkgZGVzY3JpYmVkIGNoYW5nZXMgYW5kIG90aGVyIGJ1Z2ZpeGVzCit0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBjb2RlLgorCitDaGFuZ2VzIGluICdweXRob24nIENvbW1hbmQgQmVoYXZpb3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBvdXRwdXQgb2YgYSBzcGVjaWFsIFB5dGhvbiBidWlsZCB3aXRoIGRlZmluZWQgYGBDT1VOVF9BTExPQ1NgYCwKKyAgYGBTSE9XX0FMTE9DX0NPVU5UYGAgb3IgYGBTSE9XX1RSQUNLX0NPVU5UYGAgbWFjcm9zIGlzIG5vdyBvZmYgYnkKKyAgZGVmYXVsdC4gIEl0IGNhbiBiZSByZS1lbmFibGVkIHVzaW5nIHRoZSBgYC1YIHNob3dhbGxvY2NvdW50YGAgb3B0aW9uLgorICBJdCBub3cgb3V0cHV0cyB0byBgYHN0ZGVycmBgIGluc3RlYWQgb2YgYGBzdGRvdXRgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzAzNGAuKQorCisKK0NoYW5nZXMgaW4gdGhlIFB5dGhvbiBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6bW9kOmBzcWxpdGUzYCBubyBsb25nZXIgaW1wbGljaXRseSBjb21taXQgYW4gb3BlbiB0cmFuc2FjdGlvbiBiZWZvcmUgRERMCisgIHN0YXRlbWVudHMuCisKKyogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgYmxvY2tzIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wKKyAgaXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LgorCisqIFdoZW4gOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpcyBkZWZpbmVkLAorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBhbHNvIGJlIGRlZmluZWQuCisKKyogOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIG5vdyBzZXRzIDpleGM6YFR5cGVFcnJvcmAgd2hlbiBpdHMgKiptc2cqKgorICBhcmd1bWVudCBpcyBub3Qgc2V0LiBQcmV2aW91c2x5IG9ubHkgYGBOVUxMYGAgd2FzIHJldHVybmVkLgorCisqIFRoZSBmb3JtYXQgb2YgdGhlIGBgY29fbG5vdGFiYGAgYXR0cmlidXRlIG9mIGNvZGUgb2JqZWN0cyBjaGFuZ2VkIHRvIHN1cHBvcnQKKyAgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIEJ5IGRlZmF1bHQsIFB5dGhvbiBkb2VzIG5vdCBlbWl0IGJ5dGVjb2RlIHdpdGgKKyAgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIEZ1bmN0aW9ucyB1c2luZyBgYGZyYW1lLmZfbGluZW5vYGAsCisgIGBgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKClgYCBvciBgYFB5Q29kZV9BZGRyMkxpbmUoKWBgIGFyZSBub3QgYWZmZWN0ZWQuCisgIEZ1bmN0aW9ucyBkZWNvZGluZyBkaXJlY3RseSBgYGNvX2xub3RhYmBgIHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZSBhIHNpZ25lZAorICA4LWJpdCBpbnRlZ2VyIHR5cGUgZm9yIHRoZSBsaW5lIG51bWJlciBkZWx0YSwgYnV0IGl0J3Mgb25seSByZXF1aXJlZCB0bworICBzdXBwb3J0IGFwcGxpY2F0aW9ucyB1c2luZyBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4gU2VlCisgIGBgT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0YGAgZm9yIHRoZSBgYGNvX2xub3RhYmBgIGZvcm1hdCBhbmQgaG93IHRvIGRlY29kZQorICBpdCwgYW5kIHNlZSB0aGUgOnBlcDpgNTExYCBmb3IgdGhlIHJhdGlvbmFsZS4KKworKiBUaGUgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBjb21waWxlYWxsYCBtb2R1bGUgbm93IHJldHVybiBib29sZWFucyBpbnN0ZWFkCisgIG9mIGBgMWBgIG9yIGBgMGBgIHRvIHJlcHJlc2VudCBzdWNjZXNzIG9yIGZhaWx1cmUsIHJlc3BlY3RpdmVseS4gVGhhbmtzIHRvCisgIGJvb2xlYW5zIGJlaW5nIGEgc3ViY2xhc3Mgb2YgaW50ZWdlcnMsIHRoaXMgc2hvdWxkIG9ubHkgYmUgYW4gaXNzdWUgaWYgeW91CisgIHdlcmUgZG9pbmcgaWRlbnRpdHkgY2hlY2tzIGZvciBgYDFgYCBvciBgYDBgYC4gU2VlIDppc3N1ZTpgMjU3NjhgLgorCisqIFJlYWRpbmcgdGhlIDphdHRyOmB+dXJsbGliLnBhcnNlLlNwbGl0UmVzdWx0LnBvcnRgIGF0dHJpYnV0ZSBvZgorICA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybHNwbGl0YCBhbmQgOmZ1bmM6YH51cmxsaWIucGFyc2UudXJscGFyc2VgIHJlc3VsdHMKKyAgbm93IHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcywgcmF0aGVyIHRoYW4KKyAgcmV0dXJuaW5nIDpjb25zdDpgTm9uZWAuICBTZWUgOmlzc3VlOmAyMDA1OWAuCisKKyogVGhlIDptb2Q6YGltcGAgbW9kdWxlIG5vdyByYWlzZXMgYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGluc3RlYWQgb2YKKyAgOmV4YzpgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2AuCisKKyogVGhlIGZvbGxvd2luZyBtb2R1bGVzIGhhdmUgaGFkIG1pc3NpbmcgQVBJcyBhZGRlZCB0byB0aGVpciA6YXR0cjpgX19hbGxfX2AKKyAgYXR0cmlidXRlcyB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBBUElzOgorICA6bW9kOmBjYWxlbmRhcmAsIDptb2Q6YGNnaWAsIDptb2Q6YGNzdmAsCisgIDptb2Q6YH54bWwuZXRyZWUuRWxlbWVudFRyZWVgLCA6bW9kOmBlbnVtYCwKKyAgOm1vZDpgZmlsZWlucHV0YCwgOm1vZDpgZnRwbGliYCwgOm1vZDpgbG9nZ2luZ2AsIDptb2Q6YG1haWxib3hgLAorICA6bW9kOmBtaW1ldHlwZXNgLCA6bW9kOmBvcHRwYXJzZWAsIDptb2Q6YHBsaXN0bGliYCwgOm1vZDpgc210cGRgLAorICA6bW9kOmBzdWJwcm9jZXNzYCwgOm1vZDpgdGFyZmlsZWAsIDptb2Q6YHRocmVhZGluZ2AgYW5kCisgIDptb2Q6YHdhdmVgLiAgVGhpcyBtZWFucyB0aGV5IHdpbGwgZXhwb3J0IG5ldyBzeW1ib2xzIHdoZW4gYGBpbXBvcnQgKmBgCisgIGlzIHVzZWQuICBTZWUgOmlzc3VlOmAyMzg4M2AuCisKKyogV2hlbiBwZXJmb3JtaW5nIGEgcmVsYXRpdmUgaW1wb3J0LCBpZiBgYF9fcGFja2FnZV9fYGAgZG9lcyBub3QgY29tcGFyZSBlcXVhbAorICB0byBgYF9fc3BlY19fLnBhcmVudGBgIHRoZW4gOmV4YzpgSW1wb3J0V2FybmluZ2AgaXMgcmFpc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjU3OTFgLikKKworKiBXaGVuIGEgcmVsYXRpdmUgaW1wb3J0IGlzIHBlcmZvcm1lZCBhbmQgbm8gcGFyZW50IHBhY2thZ2UgaXMga25vd24sIHRoZW4KKyAgOmV4YzpgSW1wb3J0RXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBQcmV2aW91c2x5LCA6ZXhjOmBTeXN0ZW1FcnJvcmAgY291bGQgYmUKKyAgcmFpc2VkLiAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMTgwMThgLikKKworKiBTZXJ2ZXJzIGJhc2VkIG9uIHRoZSA6bW9kOmBzb2NrZXRzZXJ2ZXJgIG1vZHVsZSwgaW5jbHVkaW5nIHRob3NlCisgIGRlZmluZWQgaW4gOm1vZDpgaHR0cC5zZXJ2ZXJgLCA6bW9kOmB4bWxycGMuc2VydmVyYCBhbmQKKyAgOm1vZDpgd3NnaXJlZi5zaW1wbGVfc2VydmVyYCwgbm93IG9ubHkgY2F0Y2ggZXhjZXB0aW9ucyBkZXJpdmVkCisgIGZyb20gOmV4YzpgRXhjZXB0aW9uYC4gVGhlcmVmb3JlIGlmIGEgcmVxdWVzdCBoYW5kbGVyIHJhaXNlcworICBhbiBleGNlcHRpb24gbGlrZSA6ZXhjOmBTeXN0ZW1FeGl0YCBvciA6ZXhjOmBLZXlib2FyZEludGVycnVwdGAsCisgIDptZXRoOmB+c29ja2V0c2VydmVyLkJhc2VTZXJ2ZXIuaGFuZGxlX2Vycm9yYCBpcyBubyBsb25nZXIgY2FsbGVkLCBhbmQKKyAgdGhlIGV4Y2VwdGlvbiB3aWxsIHN0b3AgYSBzaW5nbGUtdGhyZWFkZWQgc2VydmVyLiAoQ29udHJpYnV0ZWQgYnkKKyAgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDIzNDMwYC4pCisKKyogOmZ1bmM6YHNwd2QuZ2V0c3BuYW1gIG5vdyByYWlzZXMgYSA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgIGluc3RlYWQgb2YKKyAgOmV4YzpgS2V5RXJyb3JgIGlmIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgorCisqIFRoZSA6bWV0aDpgc29ja2V0LnNvY2tldC5jbG9zZWAgbWV0aG9kIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmCisgIGFuIGVycm9yIChlLmcuIEVCQURGKSB3YXMgcmVwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgc3lzdGVtIGNhbGwuCisgIFNlZSA6aXNzdWU6YDI2Njg1YC4KKworKiBUaGUgKmRlY29kZV9kYXRhKiBhcmd1bWVudCBmb3IgOmNsYXNzOmBzbXRwZC5TTVRQQ2hhbm5lbGAgYW5kCisgIDpjbGFzczpgc210cGQuU01UUFNlcnZlcmAgY29uc3RydWN0b3JzIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KKyAgVGhpcyBtZWFucyB0aGF0IHRoZSBhcmd1bWVudCBwYXNzZWQgdG8KKyAgOm1ldGg6YH5zbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZWAgaXMgbm93IGEgYnl0ZXMgb2JqZWN0IGJ5CisgIGRlZmF1bHQsIGFuZCBgYHByb2Nlc3NfbWVzc2FnZSgpYGAgd2lsbCBiZSBwYXNzZWQga2V5d29yZCBhcmd1bWVudHMuCisgIENvZGUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVwZGF0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBkZXByZWNhdGlvbgorICB3YXJuaW5nIGdlbmVyYXRlZCBieSAzLjUgd2lsbCBub3QgYmUgYWZmZWN0ZWQuCisKKyogQWxsIG9wdGlvbmFsIHBhcmFtZXRlcnMgb2YgdGhlIDpmdW5jOmB+anNvbi5kdW1wYCwgOmZ1bmM6YH5qc29uLmR1bXBzYCwKKyAgOmZ1bmM6YH5qc29uLmxvYWRgIGFuZCA6ZnVuYzpgfmpzb24ubG9hZHNgIGZ1bmN0aW9ucyBhbmQKKyAgOmNsYXNzOmB+anNvbi5KU09ORW5jb2RlcmAgYW5kIDpjbGFzczpgfmpzb24uSlNPTkRlY29kZXJgIGNsYXNzCisgIGNvbnN0cnVjdG9ycyBpbiB0aGUgOm1vZDpganNvbmAgbW9kdWxlIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5CisgIDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTg3MjZgLikKKworKiBBcyBwYXJ0IG9mIDpwZXA6YDQ4N2AsIHRoZSBoYW5kbGluZyBvZiBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgdG8KKyAgOmNsYXNzOmB0eXBlYCAob3RoZXIgdGhhbiB0aGUgbWV0YWNsYXNzIGhpbnQsIGBgbWV0YWNsYXNzYGApIGlzIG5vdworICBjb25zaXN0ZW50bHkgZGVsZWdhdGVkIHRvIDptZXRoOmBvYmplY3QuX19pbml0X3N1YmNsYXNzX19gLiBUaGlzIG1lYW5zIHRoYXQKKyAgOm1ldGg6YHR5cGUuX19uZXdfX2AgYW5kIDptZXRoOmB0eXBlLl9faW5pdF9fYCBib3RoIG5vdyBhY2NlcHQgYXJiaXRyYXJ5CisgIGtleXdvcmQgYXJndW1lbnRzLCBidXQgOm1ldGg6YG9iamVjdC5fX2luaXRfc3ViY2xhc3NfX2AgKHdoaWNoIGlzIGNhbGxlZCBmcm9tCisgIDptZXRoOmB0eXBlLl9fbmV3X19gKSB3aWxsIHJlamVjdCB0aGVtIGJ5IGRlZmF1bHQuIEN1c3RvbSBtZXRhY2xhc3NlcworICBhY2NlcHRpbmcgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyB3aWxsIG5lZWQgdG8gYWRqdXN0IHRoZWlyIGNhbGxzIHRvCisgIDptZXRoOmB0eXBlLl9fbmV3X19gICh3aGV0aGVyIGRpcmVjdCBvciB2aWEgOmNsYXNzOmBzdXBlcmApIGFjY29yZGluZ2x5LgorCisqIEluIDpjbGFzczpgZGlzdHV0aWxzLmNvbW1hbmQuc2Rpc3Quc2Rpc3RgLCB0aGUgYGBkZWZhdWx0X2Zvcm1hdGBgCisgIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkIGFuZCBpcyBubyBsb25nZXIgaG9ub3JlZC4gSW5zdGVhZCwgdGhlCisgIGd6aXBwZWQgdGFyZmlsZSBmb3JtYXQgaXMgdGhlIGRlZmF1bHQgb24gYWxsIHBsYXRmb3JtcyBhbmQgbm8KKyAgcGxhdGZvcm0tc3BlY2lmaWMgc2VsZWN0aW9uIGlzIG1hZGUuCisgIEluIGVudmlyb25tZW50cyB3aGVyZSBkaXN0cmlidXRpb25zIGFyZQorICBidWlsdCBvbiBXaW5kb3dzIGFuZCB6aXAgZGlzdHJpYnV0aW9ucyBhcmUgcmVxdWlyZWQsIGNvbmZpZ3VyZQorICB0aGUgcHJvamVjdCB3aXRoIGEgYGBzZXR1cC5jZmdgYCBmaWxlIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZzo6CisKKyAgICBbc2Rpc3RdCisgICAgZm9ybWF0cz16aXAKKworICBUaGlzIGJlaGF2aW9yIGhhcyBhbHNvIGJlZW4gYmFja3BvcnRlZCB0byBlYXJsaWVyIFB5dGhvbiB2ZXJzaW9ucworICBieSBTZXR1cHRvb2xzIDI2LjAuMC4KKworKiBJbiB0aGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBhbmQgdGhlCisgIDptZXRoOmBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0YCBtZXRob2QsIGlmIG5vIENvbnRlbnQtTGVuZ3RoCisgIGhlYWRlciBmaWVsZCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIHRoZSByZXF1ZXN0IGJvZHkgaXMgYSBmaWxlIG9iamVjdCwKKyAgaXQgaXMgbm93IHNlbnQgd2l0aCBIVFRQIDEuMSBjaHVua2VkIGVuY29kaW5nLiBJZiBhIGZpbGUgb2JqZWN0IGhhcyB0bworICBiZSBzZW50IHRvIGEgSFRUUCAxLjAgc2VydmVyLCB0aGUgQ29udGVudC1MZW5ndGggdmFsdWUgbm93IGhhcyB0byBiZQorICBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4gU2VlIDppc3N1ZTpgMTIzMTlgLgorCitDaGFuZ2VzIGluIHRoZSBDIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGFsbG9jYXRvciBmYW1pbHkgbm93IHVzZXMgdGhlIDpyZWY6YHB5bWFsbG9jIGFsbG9jYXRvcgorICA8cHltYWxsb2M+YCByYXRoZXIgdGhhbiBzeXN0ZW0gOmM6ZnVuYzpgbWFsbG9jYC4gQXBwbGljYXRpb25zIGNhbGxpbmcKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCBjYW4gbm93IGNyYXNoLiBTZXQgdGhlCisgIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYGBkZWJ1Z2BgIHRvIHZhbGlkYXRlIHRoZQorICB1c2FnZSBvZiBtZW1vcnkgYWxsb2NhdG9ycyBpbiB5b3VyIGFwcGxpY2F0aW9uLiBTZWUgOmlzc3VlOmAyNjI0OWAuCisKKyogOmM6ZnVuYzpgUHlfRXhpdGAgKGFuZCB0aGUgbWFpbiBpbnRlcnByZXRlcikgbm93IG92ZXJyaWRlIHRoZSBleGl0IHN0YXR1cworICB3aXRoIDEyMCBpZiBmbHVzaGluZyBidWZmZXJlZCBkYXRhIGZhaWxlZC4gIFNlZSA6aXNzdWU6YDUzMTlgLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggZWRiNTUwMi4uN2M5MjUyNCAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjYucnN0CiAgICAzLjUucnN0CiAgICAzLjQucnN0CiAgICAzLjMucnN0CmRpZmYgLS1naXQgYS9HcmFtbWFyL0dyYW1tYXIgYi9HcmFtbWFyL0dyYW1tYXIKaW5kZXggNDMwNzUyMy4uYjEzOWU5ZiAxMDA2NDQKLS0tIGEvR3JhbW1hci9HcmFtbWFyCisrKyBiL0dyYW1tYXIvR3JhbW1hcgpAQCAtMjcsMjUgKzI3LDMxIEBACiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCiAKIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCi10eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcKLSAgICAgICBbJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmXV0KLSAgICAgfCAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmKQordHlwZWRhcmdzbGlzdDogKHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICB8ICcqKicgdGZwZGVmIFsnLCddXV0KKyAgfCAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgfCAnKionIHRmcGRlZiBbJywnXSkKIHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi12YXJhcmdzbGlzdDogKHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnCi0gICAgICAgWycqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZl1dCi0gICAgIHwgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZikKK3ZhcmFyZ3NsaXN0OiAodmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ11dXQorICB8ICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICB8ICcqKicgdmZwZGVmIFsnLCddCispCiB2ZnBkZWY6IE5BTUUKIAogc3RtdDogc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10CiBzaW1wbGVfc3RtdDogc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXSBORVdMSU5FCiBzbWFsbF9zdG10OiAoZXhwcl9zdG10IHwgZGVsX3N0bXQgfCBwYXNzX3N0bXQgfCBmbG93X3N0bXQgfAogICAgICAgICAgICAgIGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBub25sb2NhbF9zdG10IHwgYXNzZXJ0X3N0bXQpCi1leHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CitleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYW5uYXNzaWduIHwgYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CiAgICAgICAgICAgICAgICAgICAgICAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0X3N0YXJfZXhwcikpKikKK2FubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddCiBhdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScgfAogICAgICAgICAgICAgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScpCi0jIEZvciBub3JtYWwgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgorIyBGb3Igbm9ybWFsIGFuZCBhbm5vdGF0ZWQgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgogZGVsX3N0bXQ6ICdkZWwnIGV4cHJsaXN0CiBwYXNzX3N0bXQ6ICdwYXNzJwogZmxvd19zdG10OiBicmVha19zdG10IHwgY29udGludWVfc3RtdCB8IHJldHVybl9zdG10IHwgcmFpc2Vfc3RtdCB8IHlpZWxkX3N0bXQKQEAgLTE0MCw3ICsxNDYsNyBAQAogICAgICAgICAgICAgJyonIHRlc3QgKQogCiBjb21wX2l0ZXI6IGNvbXBfZm9yIHwgY29tcF9pZgotY29tcF9mb3I6ICdmb3InIGV4cHJsaXN0ICdpbicgb3JfdGVzdCBbY29tcF9pdGVyXQorY29tcF9mb3I6IFtBU1lOQ10gJ2ZvcicgZXhwcmxpc3QgJ2luJyBvcl90ZXN0IFtjb21wX2l0ZXJdCiBjb21wX2lmOiAnaWYnIHRlc3Rfbm9jb25kIFtjb21wX2l0ZXJdCiAKICMgbm90IHVzZWQgaW4gZ3JhbW1hciwgYnV0IG1heSBhcHBlYXIgaW4gIm5vZGUiIHBhc3NlZCBmcm9tIFBhcnNlciB0byBDb21waWxlcgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24tYXN0LmggYi9JbmNsdWRlL1B5dGhvbi1hc3QuaAppbmRleCAyZDNlYWNiLi43MDQ5NGI3IDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi1hc3QuaAorKysgYi9JbmNsdWRlL1B5dGhvbi1hc3QuaApAQCAtNjUsMTEgKzY1LDEyIEBACiAKIGVudW0gX3N0bXRfa2luZCB7RnVuY3Rpb25EZWZfa2luZD0xLCBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ9MiwgQ2xhc3NEZWZfa2luZD0zLAogICAgICAgICAgICAgICAgICAgUmV0dXJuX2tpbmQ9NCwgRGVsZXRlX2tpbmQ9NSwgQXNzaWduX2tpbmQ9NiwKLSAgICAgICAgICAgICAgICAgIEF1Z0Fzc2lnbl9raW5kPTcsIEZvcl9raW5kPTgsIEFzeW5jRm9yX2tpbmQ9OSwgV2hpbGVfa2luZD0xMCwKLSAgICAgICAgICAgICAgICAgIElmX2tpbmQ9MTEsIFdpdGhfa2luZD0xMiwgQXN5bmNXaXRoX2tpbmQ9MTMsIFJhaXNlX2tpbmQ9MTQsCi0gICAgICAgICAgICAgICAgICBUcnlfa2luZD0xNSwgQXNzZXJ0X2tpbmQ9MTYsIEltcG9ydF9raW5kPTE3LAotICAgICAgICAgICAgICAgICAgSW1wb3J0RnJvbV9raW5kPTE4LCBHbG9iYWxfa2luZD0xOSwgTm9ubG9jYWxfa2luZD0yMCwKLSAgICAgICAgICAgICAgICAgIEV4cHJfa2luZD0yMSwgUGFzc19raW5kPTIyLCBCcmVha19raW5kPTIzLCBDb250aW51ZV9raW5kPTI0fTsKKyAgICAgICAgICAgICAgICAgIEF1Z0Fzc2lnbl9raW5kPTcsIEFubkFzc2lnbl9raW5kPTgsIEZvcl9raW5kPTksCisgICAgICAgICAgICAgICAgICBBc3luY0Zvcl9raW5kPTEwLCBXaGlsZV9raW5kPTExLCBJZl9raW5kPTEyLCBXaXRoX2tpbmQ9MTMsCisgICAgICAgICAgICAgICAgICBBc3luY1dpdGhfa2luZD0xNCwgUmFpc2Vfa2luZD0xNSwgVHJ5X2tpbmQ9MTYsCisgICAgICAgICAgICAgICAgICBBc3NlcnRfa2luZD0xNywgSW1wb3J0X2tpbmQ9MTgsIEltcG9ydEZyb21fa2luZD0xOSwKKyAgICAgICAgICAgICAgICAgIEdsb2JhbF9raW5kPTIwLCBOb25sb2NhbF9raW5kPTIxLCBFeHByX2tpbmQ9MjIsIFBhc3Nfa2luZD0yMywKKyAgICAgICAgICAgICAgICAgIEJyZWFrX2tpbmQ9MjQsIENvbnRpbnVlX2tpbmQ9MjV9Owogc3RydWN0IF9zdG10IHsKICAgICBlbnVtIF9zdG10X2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC0xMTgsNiArMTE5LDEzIEBACiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgICAgICBleHByX3R5IGFubm90YXRpb247CisgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgaW50IHNpbXBsZTsKKyAgICAgICAgfSBBbm5Bc3NpZ247CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgICAgICAgICBleHByX3R5IGl0ZXI7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgIGFzZGxfc2VxICpvcmVsc2U7CkBAIC0yMDEsOSArMjA5LDEwIEBACiAgICAgICAgICAgICAgICAgICBTZXRDb21wX2tpbmQ9OSwgRGljdENvbXBfa2luZD0xMCwgR2VuZXJhdG9yRXhwX2tpbmQ9MTEsCiAgICAgICAgICAgICAgICAgICBBd2FpdF9raW5kPTEyLCBZaWVsZF9raW5kPTEzLCBZaWVsZEZyb21fa2luZD0xNCwKICAgICAgICAgICAgICAgICAgIENvbXBhcmVfa2luZD0xNSwgQ2FsbF9raW5kPTE2LCBOdW1fa2luZD0xNywgU3RyX2tpbmQ9MTgsCi0gICAgICAgICAgICAgICAgICBCeXRlc19raW5kPTE5LCBOYW1lQ29uc3RhbnRfa2luZD0yMCwgRWxsaXBzaXNfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTIyLCBTdWJzY3JpcHRfa2luZD0yMywgU3RhcnJlZF9raW5kPTI0LAotICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTI1LCBMaXN0X2tpbmQ9MjYsIFR1cGxlX2tpbmQ9Mjd9OworICAgICAgICAgICAgICAgICAgRm9ybWF0dGVkVmFsdWVfa2luZD0xOSwgSm9pbmVkU3RyX2tpbmQ9MjAsIEJ5dGVzX2tpbmQ9MjEsCisgICAgICAgICAgICAgICAgICBOYW1lQ29uc3RhbnRfa2luZD0yMiwgRWxsaXBzaXNfa2luZD0yMywgQ29uc3RhbnRfa2luZD0yNCwKKyAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTI1LCBTdWJzY3JpcHRfa2luZD0yNiwgU3RhcnJlZF9raW5kPTI3LAorICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTI4LCBMaXN0X2tpbmQ9MjksIFR1cGxlX2tpbmQ9MzB9Owogc3RydWN0IF9leHByIHsKICAgICBlbnVtIF9leHByX2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC0yOTcsNiArMzA2LDE2IEBACiAgICAgICAgIH0gU3RyOwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICBpbnQgY29udmVyc2lvbjsKKyAgICAgICAgICAgIGV4cHJfdHkgZm9ybWF0X3NwZWM7CisgICAgICAgIH0gRm9ybWF0dGVkVmFsdWU7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgYXNkbF9zZXEgKnZhbHVlczsKKyAgICAgICAgfSBKb2luZWRTdHI7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgYnl0ZXMgczsKICAgICAgICAgfSBCeXRlczsKICAgICAgICAgCkBAIC0zMDUsNiArMzI0LDEwIEBACiAgICAgICAgIH0gTmFtZUNvbnN0YW50OwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGNvbnN0YW50IHZhbHVlOworICAgICAgICB9IENvbnN0YW50OworICAgICAgICAKKyAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAgICAgICAgICAgICBpZGVudGlmaWVyIGF0dHI7CiAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwpAQCAtMzY2LDYgKzM4OSw3IEBACiAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgZXhwcl90eSBpdGVyOwogICAgIGFzZGxfc2VxICppZnM7CisgICAgaW50IGlzX2FzeW5jOwogfTsKIAogZW51bSBfZXhjZXB0aGFuZGxlcl9raW5kIHtFeGNlcHRIYW5kbGVyX2tpbmQ9MX07CkBAIC00NDYsNiArNDcwLDkgQEAKICNkZWZpbmUgQXVnQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdWdBc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIHN0bXRfdHkgX1B5X0F1Z0Fzc2lnbihleHByX3R5IHRhcmdldCwgb3BlcmF0b3JfdHkgb3AsIGV4cHJfdHkgdmFsdWUsIGludAogICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQW5uQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfQW5uQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorc3RtdF90eSBfUHlfQW5uQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGFubm90YXRpb24sIGV4cHJfdHkgdmFsdWUsIGludAorICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQogc3RtdF90eSBfUHlfRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKgogICAgICAgICAgICAgICAgIG9yZWxzZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTU0Myw2ICs1NzAsMTIgQEAKIGV4cHJfdHkgX1B5X051bShvYmplY3QgbiwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfU3RyKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfU3RyKHN0cmluZyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBGb3JtYXR0ZWRWYWx1ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfRm9ybWF0dGVkVmFsdWUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKK2V4cHJfdHkgX1B5X0Zvcm1hdHRlZFZhbHVlKGV4cHJfdHkgdmFsdWUsIGludCBjb252ZXJzaW9uLCBleHByX3R5IGZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgSm9pbmVkU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfSm9pbmVkU3RyKGEwLCBhMSwgYTIsIGEzKQorZXhwcl90eSBfUHlfSm9pbmVkU3RyKGFzZGxfc2VxICogdmFsdWVzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEJ5dGVzKGEwLCBhMSwgYTIsIGEzKSBfUHlfQnl0ZXMoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9CeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBOYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpIF9QeV9OYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpCkBAIC01NTAsNiArNTgzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJlbmEpOwogI2RlZmluZSBFbGxpcHNpcyhhMCwgYTEsIGEyKSBfUHlfRWxsaXBzaXMoYTAsIGExLCBhMikKIGV4cHJfdHkgX1B5X0VsbGlwc2lzKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIENvbnN0YW50KGEwLCBhMSwgYTIsIGEzKSBfUHlfQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9Db25zdGFudChjb25zdGFudCB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEF0dHJpYnV0ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBleHByX3R5IF9QeV9BdHRyaWJ1dGUoZXhwcl90eSB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHRfdHkgY3R4LCBpbnQKICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CkBAIC01NzQsOSArNjEwLDkgQEAKIHNsaWNlX3R5IF9QeV9FeHRTbGljZShhc2RsX3NlcSAqIGRpbXMsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgSW5kZXgoYTAsIGExKSBfUHlfSW5kZXgoYTAsIGExKQogc2xpY2VfdHkgX1B5X0luZGV4KGV4cHJfdHkgdmFsdWUsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMykgX1B5X2NvbXByZWhlbnNpb24oYTAsIGExLCBhMiwgYTMpCisjZGVmaW5lIGNvbXByZWhlbnNpb24oYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMywgYTQpCiBjb21wcmVoZW5zaW9uX3R5IF9QeV9jb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZzLCBQeUFyZW5hICphcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcywgaW50IGlzX2FzeW5jLCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEV4Y2VwdEhhbmRsZXIoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0V4Y2VwdEhhbmRsZXIoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4Y2VwdGhhbmRsZXJfdHkgX1B5X0V4Y2VwdEhhbmRsZXIoZXhwcl90eSB0eXBlLCBpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLmggYi9JbmNsdWRlL1B5dGhvbi5oCmluZGV4IDg1OGRiZDEuLjRjN2M5YTQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLmgKKysrIGIvSW5jbHVkZS9QeXRob24uaApAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSAicHlsaWZlY3ljbGUuaCIKICNpbmNsdWRlICJjZXZhbC5oIgogI2luY2x1ZGUgInN5c21vZHVsZS5oIgorI2luY2x1ZGUgIm9zbW9kdWxlLmgiCiAjaW5jbHVkZSAiaW50cmNoZWNrLmgiCiAjaW5jbHVkZSAiaW1wb3J0LmgiCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYWJzdHJhY3QuaCBiL0luY2x1ZGUvYWJzdHJhY3QuaAppbmRleCA0Mzg2MTBiLi4zZThjYTFmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Fic3RyYWN0LmgKKysrIGIvSW5jbHVkZS9hYnN0cmFjdC5oCkBAIC03LDcgKzcsOSBAQAogI2lmZGVmIFBZX1NTSVpFX1RfQ0xFQU4KICNkZWZpbmUgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKICNkZWZpbmUgUHlPYmplY3RfQ2FsbE1ldGhvZCBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2RlZmluZSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBBYnN0cmFjdCBPYmplY3QgSW50ZXJmYWNlIChtYW55IHRoYW5rcyB0byBKaW0gRnVsdG9uKSAqLwpAQCAtMjY0LDE4ICsyNjYsOTYgQEAKICAgICAgICAqLwogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqY2FsbGFibGVfb2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5U3RhY2tfQXNUdXBsZSgKKyAgICAgICAgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncyk7CisKKyAgICAvKiBDb252ZXJ0IGtleXdvcmQgYXJndW1lbnRzIGZyb20gdGhlIChzdGFjaywga3duYW1lcykgZm9ybWF0IHRvIGEgUHl0aG9uCisgICAgICAgZGljdGlvbmFyeS4KKworICAgICAgIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUuIGt3bmFtZXMgaXMgbm90IGNoZWNrZWQsIHVzdWFsbHkgdGhlc2UgY2hlY2tzIGFyZSBkb25lIGJlZm9yZSBvciBsYXRlcgorICAgICAgIGNhbGxpbmcgX1B5U3RhY2tfQXNEaWN0KCkuIEZvciBleGFtcGxlLCBfUHlBcmdfUGFyc2VTdGFjaygpIHJhaXNlcyBhbgorICAgICAgIGVycm9yIGlmIGEga2V5IGlzIG5vdCBhIHN0cmluZy4gKi8KKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN0YWNrX0FzRGljdCgKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZXMsCisgICAgICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKworICAgIC8qIENvbnZlcnQgKGFyZ3MsIG5hcmdzLCBrd2FyZ3MpIGludG8gYSAoc3RhY2ssIG5hcmdzLCBrd25hbWVzKS4KKworICAgICAgIFJldHVybiBhIG5ldyBzdGFjayB3aGljaCBzaG91bGQgYmUgcmVsZWFzZWQgYnkgUHlNZW1fRnJlZSgpLCBvciByZXR1cm4KKyAgICAgICBhcmdzIHVuY2hhbmdlZCBpZiBrd2FyZ3MgaXMgTlVMTCBvciBhbiBlbXB0eSBkaWN0aW9uYXJ5LgorCisgICAgICAgVGhlIHN0YWNrIHVzZXMgYm9ycm93ZWQgcmVmZXJlbmNlcy4KKworICAgICAgIFRoZSB0eXBlIG9mIGtleXdvcmQga2V5cyBpcyBub3QgY2hlY2tlZCwgdGhlc2UgY2hlY2tzIHNob3VsZCBiZSBkb25lCisgICAgICAgbGF0ZXIgKGV4OiBfUHlBcmdfUGFyc2VTdGFjaykuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKikgX1B5U3RhY2tfVW5wYWNrRGljdCgKKyAgICAgICAgUHlPYmplY3QgKiphcmdzLAorICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICBQeU9iamVjdCAqa3dhcmdzLAorICAgICAgICBQeU9iamVjdCAqKmt3bmFtZXMsCisgICAgICAgIFB5T2JqZWN0ICpmdW5jKTsKKworICAgIC8qIENhbGwgdGhlIGNhbGxhYmxlIG9iamVjdCBmdW5jIHdpdGggdGhlICJmYXN0IGNhbGwiIGNhbGxpbmcgY29udmVudGlvbjoKKyAgICAgICBhcmdzIGlzIGEgQyBhcnJheSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudHMgKG5hcmdzIGlzIHRoZSBudW1iZXIgb2YKKyAgICAgICBwb3NpdGlvbmFsIGFyZ3VtZW50cyksIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgZm9yIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgSWYgbmFyZ3MgaXMgZXF1YWwgdG8gemVybywgYXJncyBjYW4gYmUgTlVMTC4ga3dhcmdzIGNhbiBiZSBOVUxMLgorICAgICAgIG5hcmdzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byB6ZXJvLgorCisgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIG9uIHJldHVybiBOVUxMIG9uCisgICAgICAgZXJyb3IuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCisgICAgLyogQ2FsbCB0aGUgY2FsbGFibGUgb2JqZWN0IGZ1bmMgd2l0aCB0aGUgImZhc3QgY2FsbCIgY2FsbGluZyBjb252ZW50aW9uOgorICAgICAgIGFyZ3MgaXMgYSBDIGFycmF5IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50cyBmb2xsb3dlZCBieSB2YWx1ZXMgb2YKKyAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4gS2V5cyBvZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3RvcmVkIGFzIGEgdHVwbGUKKyAgICAgICBvZiBzdHJpbmdzIGluIGt3bmFtZXMuIG5hcmdzIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGF0CisgICAgICAgdGhlIGJlZ2lubmluZyBvZiBzdGFjay4gVGhlIHNpemUgb2Yga3duYW1lcyBnaXZlcyB0aGUgbnVtYmVyIG9mIGtleXdvcmQKKyAgICAgICB2YWx1ZXMgaW4gdGhlIHN0YWNrIGFmdGVyIHBvc2l0aW9uYWwgYXJndW1lbnRzLgorCisgICAgICAga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZS4KKworICAgICAgIElmIG5hcmdzIGlzIGVxdWFsIHRvIHplcm8gYW5kIHRoZXJlIGlzIG5vIGtleXdvcmQgYXJndW1lbnQgKGt3bmFtZXMgaXMKKyAgICAgICBOVUxMIG9yIGl0cyBzaXplIGlzIHplcm8pLCBhcmdzIGNhbiBiZSBOVUxMLgorCisgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbgorICAgICAgIGVycm9yLiAqLworICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMKKyAgICAgICAoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpOworCisjZGVmaW5lIF9QeU9iamVjdF9GYXN0Q2FsbChmdW5jLCBhcmdzLCBuYXJncykgXAorICAgIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoKGZ1bmMpLCAoYXJncyksIChuYXJncyksIE5VTEwpCisKKyNkZWZpbmUgX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsKChmdW5jKSwgTlVMTCwgMCkKKworI2RlZmluZSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgYXJnKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsKChmdW5jKSwgJihhcmcpLCAxKQorCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncyk7CisKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChQeU9iamVjdCAqZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKndoZXJlKTsKLSNlbmRpZgorI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICAgIC8qCiAgICAgIENhbGwgYSBjYWxsYWJsZSBQeXRob24gb2JqZWN0LCBjYWxsYWJsZV9vYmplY3QsIHdpdGgKICAgICAgYXJndW1lbnRzIGFuZCBrZXl3b3JkcyBhcmd1bWVudHMuICBUaGUgJ2FyZ3MnIGFyZ3VtZW50IGNhbiBub3QgYmUKLSAgICAgTlVMTCwgYnV0IHRoZSAna3cnIGFyZ3VtZW50IGNhbiBiZSBOVUxMLgorICAgICBOVUxMLgogICAgICAgICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsT2JqZWN0KFB5T2JqZWN0ICpjYWxsYWJsZV9vYmplY3QsCkBAIC0zMTUsNiArMzk1LDcgQEAKICAgICAgUHl0aG9uIGV4cHJlc3Npb246IG8ubWV0aG9kKGFyZ3MpLgogICAgICAgICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKQEAgLTMyMyw2ICs0MDQsNyBAQAogICAgICAgICAgTGlrZSBQeU9iamVjdF9DYWxsTWV0aG9kLCBidXQgZXhwZWN0IGEgX1B5X0lkZW50aWZpZXIqIGFzIHRoZQogICAgICAgICAgbWV0aG9kIG5hbWUuCiAgICAgICAgKi8KKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LApAQCAtMzMxLDEwICs0MTMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CkBAIC0zNTAsOSArNDM0LDExIEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aG9kLCAuLi4pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICAgIC8qCiAgICAgIENhbGwgdGhlIG1ldGhvZCBuYW1lZCBtIG9mIG9iamVjdCBvIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YKQEAgLTEyNzAsMTMgKzEzNTYsMTMgQEAKIFB5QVBJX0ZVTkMoY2hhciAqY29uc3QgKikgX1B5U2VxdWVuY2VfQnl0ZXNUb0NoYXJwQXJyYXkoUHlPYmplY3QqIHNlbGYpOwogCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9GcmVlQ2hhclBBcnJheShjaGFyICpjb25zdCBhcnJheVtdKTsKLSNlbmRpZgogCiAvKiBGb3IgaW50ZXJuYWwgdXNlIGJ5IGJ1ZmZlciBBUEkgZnVuY3Rpb25zICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9hZGRfb25lX3RvX2luZGV4X0YoaW50IG5kLCBQeV9zc2l6ZV90ICppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9hZGRfb25lX3RvX2luZGV4X0MoaW50IG5kLCBQeV9zc2l6ZV90ICppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2FzZGwuaCBiL0luY2x1ZGUvYXNkbC5oCmluZGV4IDQ5NTE1M2MuLjM1ZTlmYTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYXNkbC5oCisrKyBiL0luY2x1ZGUvYXNkbC5oCkBAIC02LDYgKzYsNyBAQAogdHlwZWRlZiBQeU9iamVjdCAqIGJ5dGVzOwogdHlwZWRlZiBQeU9iamVjdCAqIG9iamVjdDsKIHR5cGVkZWYgUHlPYmplY3QgKiBzaW5nbGV0b247Cit0eXBlZGVmIFB5T2JqZWN0ICogY29uc3RhbnQ7CiAKIC8qIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGFzZGxfYy5weSB3YXMgY29tcGxldGVseQogICAgaW5kZXBlbmRlbnQgb2YgUHl0aG9uLCBidXQgaXQgaXMgYSBnb2FsIHRoZSByZXF1aXJlcyB0b28gbXVjaCB3b3JrCmRpZmYgLS1naXQgYS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCmluZGV4IDExZDVmNDIuLjdmYTc1NDAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCisrKyBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCkBAIC0xNyw5ICsxNywxOCBAQAogLyogVGhlc2Ugc3RvcmUgdGhlaXIgbGVuIHNpemVkIGFuc3dlciBpbiB0aGUgZ2l2ZW4gcHJlYWxsb2NhdGVkICpyZXN1bHQgYXJnLiAqLwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX2xvd2VyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqY3B0ciwgUHlfc3NpemVfdCBsZW4pOwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3VwcGVyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqY3B0ciwgUHlfc3NpemVfdCBsZW4pOwotZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOwotZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CitleHRlcm4gdm9pZCBfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CitleHRlcm4gdm9pZCBfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKKworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19pbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19yZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19yaW5kZXgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfY291bnQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIGludCBfUHlfYnl0ZXNfY29udGFpbnMoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19zdGFydHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX2VuZHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKIAogLyogVGhlIG1ha2V0cmFucygpIHN0YXRpYyBtZXRob2QuICovCiBleHRlcm4gUHlPYmplY3QqIF9QeV9ieXRlc19tYWtldHJhbnMoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pOwpAQCAtMzcsNyArNDYsMTkgQEAKIGV4dGVybiBjb25zdCBjaGFyIF9QeV90aXRsZV9fZG9jX19bXTsKIGV4dGVybiBjb25zdCBjaGFyIF9QeV9jYXBpdGFsaXplX19kb2NfX1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3N3YXBjYXNlX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2NvdW50X19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2ZpbmRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfaW5kZXhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmZpbmRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmluZGV4X19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3N0YXJ0c3dpdGhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZW5kc3dpdGhfX2RvY19fW107CiBleHRlcm4gY29uc3QgY2hhciBfUHlfbWFrZXRyYW5zX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2V4cGFuZHRhYnNfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfbGp1c3RfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmp1c3RfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfY2VudGVyX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3pmaWxsX19kb2NfX1tdOwogCiAvKiB0aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgZG9jcyBhcmUgc2hhcmVkIGZyb20gdGhlIC5vLCBub3Qgc3RhdGljICovCiAjZGVmaW5lIFB5RG9jX1NUUlZBUl9zaGFyZWQobmFtZSxzdHIpIGNvbnN0IGNoYXIgbmFtZVtdID0gUHlEb2NfU1RSKHN0cikKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAppbmRleCA2YzFlMGMzLi4xMWQ4MjE4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCkBAIC02Miw3ICs2MiwxNCBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0NvbmNhdEFuZERlbChQeU9iamVjdCAqKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5Qnl0ZXNfUmVzaXplKFB5T2JqZWN0ICoqLCBQeV9zc2l6ZV90KTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNfRm9ybWF0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zvcm1hdEV4KAorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAgICBQeV9zc2l6ZV90IGZvcm1hdF9sZW4sCisgICAgUHlPYmplY3QgKmFyZ3MsCisgICAgaW50IHVzZV9ieXRlYXJyYXkpOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zyb21IZXgoCisgICAgUHlPYmplY3QgKnN0cmluZywKKyAgICBpbnQgdXNlX2J5dGVhcnJheSk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LApAQCAtMTIzLDYgKzEzMCw4NyBAQAogI2RlZmluZSBGX0FMVAkoMTw8MykKICNkZWZpbmUgRl9aRVJPCSgxPDw0KQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBUaGUgX1B5Qnl0ZXNXcml0ZXIgc3RydWN0dXJlIGlzIGJpZzogaXQgY29udGFpbnMgYW4gZW1iZWRkZWQgInN0YWNrIGJ1ZmZlciIuCisgICBBIF9QeUJ5dGVzV3JpdGVyIHZhcmlhYmxlIG11c3QgYmUgZGVjbGFyZWQgYXQgdGhlIGVuZCBvZiB2YXJpYWJsZXMgaW4gYQorICAgZnVuY3Rpb24gdG8gb3B0aW1pemUgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG9uIHRoZSBzdGFjay4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBieXRlcywgYnl0ZWFycmF5IG9yIE5VTEwgKHdoZW4gdGhlIHNtYWxsIGJ1ZmZlciBpcyB1c2VkKSAqLworICAgIFB5T2JqZWN0ICpidWZmZXI7CisKKyAgICAvKiBOdW1iZXIgb2YgYWxsb2NhdGVkIHNpemUuICovCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7CisKKyAgICAvKiBNaW5pbXVtIG51bWJlciBvZiBhbGxvY2F0ZWQgYnl0ZXMsCisgICAgICAgaW5jcmVtZW50ZWQgYnkgX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgpICovCisgICAgUHlfc3NpemVfdCBtaW5fc2l6ZTsKKworICAgIC8qIElmIG5vbi16ZXJvLCB1c2UgYSBieXRlYXJyYXkgaW5zdGVhZCBvZiBhIGJ5dGVzIG9iamVjdCBmb3IgYnVmZmVyLiAqLworICAgIGludCB1c2VfYnl0ZWFycmF5OworCisgICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIChkZWZhdWx0OiAwKS4KKyAgICAgICBUaGlzIGZsYWcgbXVzdCBiZSB6ZXJvIGlmIHVzZV9ieXRlYXJyYXkgaXMgbm9uLXplcm8uICovCisgICAgaW50IG92ZXJhbGxvY2F0ZTsKKworICAgIC8qIFN0YWNrIGJ1ZmZlciAqLworICAgIGludCB1c2Vfc21hbGxfYnVmZmVyOworICAgIGNoYXIgc21hbGxfYnVmZmVyWzUxMl07Cit9IF9QeUJ5dGVzV3JpdGVyOworCisvKiBJbml0aWFsaXplIGEgYnl0ZXMgd3JpdGVyCisKKyAgIEJ5IGRlZmF1bHQsIHRoZSBvdmVyYWxsb2NhdGlvbiBpcyBkaXNhYmxlZC4gU2V0IHRoZSBvdmVyYWxsb2NhdGUgYXR0cmlidXRlCisgICB0byBjb250cm9sIHRoZSBhbGxvY2F0aW9uIG9mIHRoZSBidWZmZXIuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeUJ5dGVzV3JpdGVyX0luaXQoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcik7CisKKy8qIEdldCB0aGUgYnVmZmVyIGNvbnRlbnQgYW5kIHJlc2V0IHRoZSB3cml0ZXIuCisgICBSZXR1cm4gYSBieXRlcyBvYmplY3QsIG9yIGEgYnl0ZWFycmF5IG9iamVjdCBpZiB1c2VfYnl0ZWFycmF5IGlzIG5vbi16ZXJvLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyKTsKKworLyogRGVhbGxvY2F0ZSBtZW1vcnkgb2YgYSB3cml0ZXIgKGNsZWFyIGl0cyBpbnRlcm5hbCBidWZmZXIpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpOworCisvKiBBbGxvY2F0ZSB0aGUgYnVmZmVyIHRvIHdyaXRlIHNpemUgYnl0ZXMuCisgICBSZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiBidWZmZXIgZGF0YS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlCeXRlc1dyaXRlcl9BbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIEVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoIHRvIHdyaXRlICpzaXplKiBieXRlcy4KKyAgIEFkZCBzaXplIHRvIHRoZSB3cml0ZXIgbWluaW11bSBzaXplIChtaW5fc2l6ZSBhdHRyaWJ1dGUpLgorCisgICBzdHIgaXMgdGhlIGN1cnJlbnQgcG9pbnRlciBpbnNpZGUgdGhlIGJ1ZmZlci4KKyAgIFJldHVybiB0aGUgdXBkYXRlZCBjdXJyZW50IHBvaW50ZXIgaW5zaWRlIHRoZSBidWZmZXIuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIHZvaWQgKnN0ciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworCisvKiBSZXNpemUgdGhlIGJ1ZmZlciB0byBtYWtlIGl0IGxhcmdlci4KKyAgIFRoZSBuZXcgYnVmZmVyIG1heSBiZSBsYXJnZXIgdGhhbiBzaXplIGJ5dGVzIGJlY2F1c2Ugb2Ygb3ZlcmFsbG9jYXRpb24uCisgICBSZXR1cm4gdGhlIHVwZGF0ZWQgY3VycmVudCBwb2ludGVyIGluc2lkZSB0aGUgYnVmZmVyLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4KKworICAgTm90ZTogc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGFsbG9jYXRlZCBieXRlcyBpbiB0aGUgd3JpdGVyLgorCisgICBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgdXNlIHRoZSB3cml0ZXIgbWluaW11bSBzaXplIChtaW5fc2l6ZSBhdHRyaWJ1dGUpLgorCisgICBTZWUgYWxzbyBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCkuCisgICAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIFdyaXRlIGJ5dGVzLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkModm9pZCopIF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICB2b2lkICpzdHIsCisgICAgY29uc3Qgdm9pZCAqYnl0ZXMsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKyNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NldmFsLmggYi9JbmNsdWRlL2NldmFsLmgKaW5kZXggYjUzNzNhOS4uODljNjA2MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jZXZhbC5oCisrKyBiL0luY2x1ZGUvY2V2YWwuaApAQCAtOCw3ICs4LDcgQEAKIC8qIEludGVyZmFjZSB0byByYW5kb20gcGFydHMgaW4gY2V2YWwuYyAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKAotICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworICAgIFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CiAKIC8qIElubGluZSB0aGlzICovCiAjZGVmaW5lIFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsYXJnKSBcCkBAIC0yNSw2ICsyNSwxMCBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfU2V0VHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFdmFsX0dldENvcm91dGluZVdyYXBwZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0QXN5bmNHZW5GaXJzdGl0ZXIoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0QXN5bmNHZW5GaW5hbGl6ZXIodm9pZCk7CiAjZW5kaWYKIAogc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KQEAgLTExOSw2ICsxMjMsOSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfR2V0Q2FsbFN0YXRzKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfRXZhbEZyYW1lKHN0cnVjdCBfZnJhbWUgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9FdmFsRnJhbWVFeChzdHJ1Y3QgX2ZyYW1lICpmLCBpbnQgZXhjKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KHN0cnVjdCBfZnJhbWUgKmYsIGludCBleGMpOworI2VuZGlmCiAKIC8qIEludGVyZmFjZSBmb3IgdGhyZWFkcy4KIApAQCAtMTcyLDcgKzE3OSw5IEBACiAKIFB5QVBJX0ZVTkMoaW50KSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX0luaXRUaHJlYWRzKHZvaWQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX0ZpbmlUaHJlYWRzKHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfQWNxdWlyZUxvY2sodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9SZWxlYXNlTG9jayh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX0FjcXVpcmVUaHJlYWQoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKQEAgLTE4NCw2ICsxOTMsMTAgQEAKIFB5QVBJX0ZVTkModW5zaWduZWQgbG9uZykgX1B5RXZhbF9HZXRTd2l0Y2hJbnRlcnZhbCh2b2lkKTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeUV2YWxfUmVxdWVzdENvZGVFeHRyYUluZGV4KGZyZWVmdW5jKTsKKyNlbmRpZgorCiAjZGVmaW5lIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgeyBcCiAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpfc2F2ZTsgXAogICAgICAgICAgICAgICAgICAgICAgICAgX3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpOwpAQCAtMjA2LDYgKzIxOSwxNCBAQAogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX1NpZ25hbEFzeW5jRXhjKHZvaWQpOwogI2VuZGlmCiAKKy8qIE1hc2tzIGFuZCB2YWx1ZXMgdXNlZCBieSBGT1JNQVRfVkFMVUUgb3Bjb2RlLiAqLworI2RlZmluZSBGVkNfTUFTSyAgICAgIDB4MworI2RlZmluZSBGVkNfTk9ORSAgICAgIDB4MAorI2RlZmluZSBGVkNfU1RSICAgICAgIDB4MQorI2RlZmluZSBGVkNfUkVQUiAgICAgIDB4MgorI2RlZmluZSBGVkNfQVNDSUkgICAgIDB4MworI2RlZmluZSBGVlNfTUFTSyAgICAgIDB4NAorI2RlZmluZSBGVlNfSEFWRV9TUEVDIDB4NAogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZS5oIGIvSW5jbHVkZS9jb2RlLmgKaW5kZXggOGVjZjM4YS4uMDYxOTAyOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlLmgKKysrIGIvSW5jbHVkZS9jb2RlLmgKQEAgLTcsNiArNywxNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAordHlwZWRlZiB1aW50MTZfdCBfUHlfQ09ERVVOSVQ7CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgIGRlZmluZSBfUHlfT1BDT0RFKHdvcmQpICgod29yZCkgPj4gOCkKKyMgIGRlZmluZSBfUHlfT1BBUkcod29yZCkgKCh3b3JkKSAmIDI1NSkKKyNlbHNlCisjICBkZWZpbmUgX1B5X09QQ09ERSh3b3JkKSAoKHdvcmQpICYgMjU1KQorIyAgZGVmaW5lIF9QeV9PUEFSRyh3b3JkKSAoKHdvcmQpID4+IDgpCisjZW5kaWYKKwogLyogQnl0ZWNvZGUgb2JqZWN0ICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTUsNiArMjUsNyBAQAogICAgIGludCBjb19ubG9jYWxzOwkJLyogI2xvY2FsIHZhcmlhYmxlcyAqLwogICAgIGludCBjb19zdGFja3NpemU7CQkvKiAjZW50cmllcyBuZWVkZWQgZm9yIGV2YWx1YXRpb24gc3RhY2sgKi8KICAgICBpbnQgY29fZmxhZ3M7CQkvKiBDT18uLi4sIHNlZSBiZWxvdyAqLworICAgIGludCBjb19maXJzdGxpbmVubzsgICAvKiBmaXJzdCBzb3VyY2UgbGluZSBudW1iZXIgKi8KICAgICBQeU9iamVjdCAqY29fY29kZTsJCS8qIGluc3RydWN0aW9uIG9wY29kZXMgKi8KICAgICBQeU9iamVjdCAqY29fY29uc3RzOwkvKiBsaXN0IChjb25zdGFudHMgdXNlZCkgKi8KICAgICBQeU9iamVjdCAqY29fbmFtZXM7CQkvKiBsaXN0IG9mIHN0cmluZ3MgKG5hbWVzIHVzZWQpICovCkBAIC0zMCwxMSArNDEsMTQgQEAKICAgICB1bnNpZ25lZCBjaGFyICpjb19jZWxsMmFyZzsgLyogTWFwcyBjZWxsIHZhcnMgd2hpY2ggYXJlIGFyZ3VtZW50cy4gKi8KICAgICBQeU9iamVjdCAqY29fZmlsZW5hbWU7CS8qIHVuaWNvZGUgKHdoZXJlIGl0IHdhcyBsb2FkZWQgZnJvbSkgKi8KICAgICBQeU9iamVjdCAqY29fbmFtZTsJCS8qIHVuaWNvZGUgKG5hbWUsIGZvciByZWZlcmVuY2UpICovCi0gICAgaW50IGNvX2ZpcnN0bGluZW5vOwkJLyogZmlyc3Qgc291cmNlIGxpbmUgbnVtYmVyICovCiAgICAgUHlPYmplY3QgKmNvX2xub3RhYjsJLyogc3RyaW5nIChlbmNvZGluZyBhZGRyPC0+bGluZW5vIG1hcHBpbmcpIFNlZQogCQkJCSAgIE9iamVjdHMvbG5vdGFiX25vdGVzLnR4dCBmb3IgZGV0YWlscy4gKi8KICAgICB2b2lkICpjb196b21iaWVmcmFtZTsgICAgIC8qIGZvciBvcHRpbWl6YXRpb24gb25seSAoc2VlIGZyYW1lb2JqZWN0LmMpICovCiAgICAgUHlPYmplY3QgKmNvX3dlYWtyZWZsaXN0OyAgIC8qIHRvIHN1cHBvcnQgd2Vha3JlZnMgdG8gY29kZSBvYmplY3RzICovCisgICAgLyogU2NyYXRjaCBzcGFjZSBmb3IgZXh0cmEgZGF0YSByZWxhdGluZyB0byB0aGUgY29kZSBvYmplY3QuX19pY2NfbmFuCisgICAgICAgVHlwZSBpcyBhIHZvaWQqIHRvIGtlZXAgdGhlIGZvcm1hdCBwcml2YXRlIGluIGNvZGVvYmplY3QuYyB0byBmb3JjZQorICAgICAgIHBlb3BsZSB0byBnbyB0aHJvdWdoIHRoZSBwcm9wZXIgQVBJcy4gKi8KKyAgICB2b2lkICpjb19leHRyYTsKIH0gUHlDb2RlT2JqZWN0OwogCiAvKiBNYXNrcyBmb3IgY29fZmxhZ3MgYWJvdmUgKi8KQEAgLTU1LDYgKzY5LDcgQEAKICAgIGBgYXN5bmMgZGVmYGAga2V5d29yZHMpICovCiAjZGVmaW5lIENPX0NPUk9VVElORSAgICAgICAgICAgIDB4MDA4MAogI2RlZmluZSBDT19JVEVSQUJMRV9DT1JPVVRJTkUgICAweDAxMDAKKyNkZWZpbmUgQ09fQVNZTkNfR0VORVJBVE9SICAgICAgMHgwMjAwCiAKIC8qIFRoZXNlIGFyZSBubyBsb25nZXIgdXNlZC4gKi8KICNpZiAwCkBAIC0xMjYsNyArMTQxLDE1IEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5Q29kZV9PcHRpbWl6ZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QqIGNvbnN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzLCBQeU9iamVjdCAqbGluZW5vX29iaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKmxub3RhYik7CisKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhpbnQpIF9QeUNvZGVfR2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqZXh0cmEpOworUHlBUElfRlVOQyhpbnQpIF9QeUNvZGVfU2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpleHRyYSk7CisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2RhdGV0aW1lLmggYi9JbmNsdWRlL2RhdGV0aW1lLmgKaW5kZXggMDZjYmM0YS4uM2JmMzVjYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kYXRldGltZS5oCisrKyBiL0luY2x1ZGUvZGF0ZXRpbWUuaApAQCAtODEsNiArODEsNyBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgICBfUHlEYXRlVGltZV9USU1FSEVBRAorICAgIHVuc2lnbmVkIGNoYXIgZm9sZDsKICAgICBQeU9iamVjdCAqdHppbmZvOwogfSBQeURhdGVUaW1lX1RpbWU7ICAgICAgICAgICAgICAvKiBoYXN0emluZm8gdHJ1ZSAqLwogCkBAIC0xMDgsNiArMTA5LDcgQEAKIHR5cGVkZWYgc3RydWN0CiB7CiAgICAgX1B5RGF0ZVRpbWVfREFURVRJTUVIRUFECisgICAgdW5zaWduZWQgY2hhciBmb2xkOwogICAgIFB5T2JqZWN0ICp0emluZm87CiB9IFB5RGF0ZVRpbWVfRGF0ZVRpbWU7ICAgICAgICAgIC8qIGhhc3R6aW5mbyB0cnVlICovCiAKQEAgLTEyNSw2ICsxMjcsNyBAQAogICAgICgoKChQeURhdGVUaW1lX0RhdGVUaW1lKilvKS0+ZGF0YVs3XSA8PCAxNikgfCAgICAgICBcCiAgICAgICgoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUqKW8pLT5kYXRhWzhdIDw8IDgpICB8ICAgICAgIFwKICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmRhdGFbOV0pCisjZGVmaW5lIFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRChvKSAgICAgICAgKCgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmZvbGQpCiAKIC8qIEFwcGx5IGZvciB0aW1lIGluc3RhbmNlcy4gKi8KICNkZWZpbmUgUHlEYXRlVGltZV9USU1FX0dFVF9IT1VSKG8pICAgICAgICAoKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzBdKQpAQCAtMTM0LDYgKzEzNyw3IEBACiAgICAgKCgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbM10gPDwgMTYpIHwgICAgICAgICAgIFwKICAgICAgKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs0XSA8PCA4KSAgfCAgICAgICAgICAgXAogICAgICAgKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzVdKQorI2RlZmluZSBQeURhdGVUaW1lX1RJTUVfR0VUX0ZPTEQobykgICAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmZvbGQpCiAKIC8qIEFwcGx5IGZvciB0aW1lIGRlbHRhIGluc3RhbmNlcyAqLwogI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTKG8pICAgICAgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPmRheXMpCkBAIC0xNjIsNiArMTY2LDExIEBACiAgICAgUHlPYmplY3QgKigqRGF0ZVRpbWVfRnJvbVRpbWVzdGFtcCkoUHlPYmplY3QqLCBQeU9iamVjdCosIFB5T2JqZWN0Kik7CiAgICAgUHlPYmplY3QgKigqRGF0ZV9Gcm9tVGltZXN0YW1wKShQeU9iamVjdCosIFB5T2JqZWN0Kik7CiAKKyAgICAvKiBQRVAgNDk1IGNvbnN0cnVjdG9ycyAqLworICAgIFB5T2JqZWN0ICooKkRhdGVUaW1lX0Zyb21EYXRlQW5kVGltZUFuZEZvbGQpKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKKyAgICAgICAgUHlPYmplY3QqLCBpbnQsIFB5VHlwZU9iamVjdCopOworICAgIFB5T2JqZWN0ICooKlRpbWVfRnJvbVRpbWVBbmRGb2xkKShpbnQsIGludCwgaW50LCBpbnQsIFB5T2JqZWN0KiwgaW50LCBQeVR5cGVPYmplY3QqKTsKKwogfSBQeURhdGVUaW1lX0NBUEk7CiAKICNkZWZpbmUgUHlEYXRlVGltZV9DQVBTVUxFX05BTUUgImRhdGV0aW1lLmRhdGV0aW1lX0NBUEkiCkBAIC0yMTcsMTAgKzIyNiwxOCBAQAogICAgIFB5RGF0ZVRpbWVBUEktPkRhdGVUaW1lX0Zyb21EYXRlQW5kVGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBcCiAgICAgICAgIG1pbiwgc2VjLCB1c2VjLCBQeV9Ob25lLCBQeURhdGVUaW1lQVBJLT5EYXRlVGltZVR5cGUpCiAKKyNkZWZpbmUgUHlEYXRlVGltZV9Gcm9tRGF0ZUFuZFRpbWVBbmRGb2xkKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjLCB1c2VjLCBmb2xkKSBcCisgICAgUHlEYXRlVGltZUFQSS0+RGF0ZVRpbWVfRnJvbURhdGVBbmRUaW1lQW5kRm9sZCh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBcCisgICAgICAgIG1pbiwgc2VjLCB1c2VjLCBQeV9Ob25lLCBmb2xkLCBQeURhdGVUaW1lQVBJLT5EYXRlVGltZVR5cGUpCisKICNkZWZpbmUgUHlUaW1lX0Zyb21UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSBcCiAgICAgUHlEYXRlVGltZUFQSS0+VGltZV9Gcm9tVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgXAogICAgICAgICBQeV9Ob25lLCBQeURhdGVUaW1lQVBJLT5UaW1lVHlwZSkKIAorI2RlZmluZSBQeVRpbWVfRnJvbVRpbWVBbmRGb2xkKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBmb2xkKSBcCisgICAgUHlEYXRlVGltZUFQSS0+VGltZV9Gcm9tVGltZUFuZEZvbGQoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIFwKKyAgICAgICAgUHlfTm9uZSwgZm9sZCwgUHlEYXRlVGltZUFQSS0+VGltZVR5cGUpCisKICNkZWZpbmUgUHlEZWx0YV9Gcm9tRFNVKGRheXMsIHNlY29uZHMsIHVzZWNvbmRzKSBcCiAgICAgUHlEYXRlVGltZUFQSS0+RGVsdGFfRnJvbURlbHRhKGRheXMsIHNlY29uZHMsIHVzZWNvbmRzLCAxLCBcCiAgICAgICAgIFB5RGF0ZVRpbWVBUEktPkRlbHRhVHlwZSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaCBiL0luY2x1ZGUvZGVzY3JvYmplY3QuaAppbmRleCBlMmJhOTdmLi44ZjNlODRjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCkBAIC03OCw3ICs3OCw5IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlNZXRob2REZXNjcl9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5V3JhcHBlckRlc2NyX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlEaWN0UHJveHlfVHlwZTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlNZXRob2RXcmFwcGVyX1R5cGU7CisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURlc2NyX05ld01ldGhvZChQeVR5cGVPYmplY3QgKiwgUHlNZXRob2REZWYgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2QoUHlUeXBlT2JqZWN0ICosIFB5TWV0aG9kRGVmICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kaWN0b2JqZWN0LmggYi9JbmNsdWRlL2RpY3RvYmplY3QuaAppbmRleCBiYTkwYWFmLi5jZjA3NDU4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2RpY3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2RpY3RvYmplY3QuaApAQCAtMjIsOCArMjIsMjEgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKKworICAgIC8qIE51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqLwogICAgIFB5X3NzaXplX3QgbWFfdXNlZDsKKworICAgIC8qIERpY3Rpb25hcnkgdmVyc2lvbjogZ2xvYmFsbHkgdW5pcXVlLCB2YWx1ZSBjaGFuZ2UgZWFjaCB0aW1lCisgICAgICAgdGhlIGRpY3Rpb25hcnkgaXMgbW9kaWZpZWQgKi8KKyAgICB1aW50NjRfdCBtYV92ZXJzaW9uX3RhZzsKKwogICAgIFB5RGljdEtleXNPYmplY3QgKm1hX2tleXM7CisKKyAgICAvKiBJZiBtYV92YWx1ZXMgaXMgTlVMTCwgdGhlIHRhYmxlIGlzICJjb21iaW5lZCI6IGtleXMgYW5kIHZhbHVlcworICAgICAgIGFyZSBzdG9yZWQgaW4gbWFfa2V5cy4KKworICAgICAgIElmIG1hX3ZhbHVlcyBpcyBub3QgTlVMTCwgdGhlIHRhYmxlIGlzIHNwbGl0dGVkOgorICAgICAgIGtleXMgYXJlIHN0b3JlZCBpbiBtYV9rZXlzIGFuZCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBtYV92YWx1ZXMgKi8KICAgICBQeU9iamVjdCAqKm1hX3ZhbHVlczsKIH0gUHlEaWN0T2JqZWN0OwogCkBAIC02MCw5ICs3Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9TZXREZWZhdWx0KAogICAgIFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHRvYmopOwogI2VuZGlmCkBAIC0xMzIsOSArMTQ1LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG92ZXJyaWRlKTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfR2V0SXRlbUlkKFB5T2JqZWN0ICpkcCwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXkpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9TZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSwgUHlPYmplY3QgKml0ZW0pOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9EZWxJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9maWxlb2JqZWN0LmggYi9JbmNsdWRlL2ZpbGVvYmplY3QuaAppbmRleCAwMzE1NWQzLi4wMzk4NGJhIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ZpbGVvYmplY3QuaAorKysgYi9JbmNsdWRlL2ZpbGVvYmplY3QuaApAQCAtMjMsNiArMjMsNyBAQAogICAgSWYgbm9uLU5VTEwsIHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGRlZmF1bHQgZW5jb2RpbmcgZm9yIHN0cmluZ3MKICovCiBQeUFQSV9EQVRBKGNvbnN0IGNoYXIgKikgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZzsKK1B5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yczsKIFB5QVBJX0RBVEEoaW50KSBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nOwogCiAvKiBJbnRlcm5hbCBBUEkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmlsZXV0aWxzLmggYi9JbmNsdWRlL2ZpbGV1dGlscy5oCmluZGV4IGI0YTY4M2MuLjQwMTY0MzEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZXV0aWxzLmgKKysrIGIvSW5jbHVkZS9maWxldXRpbHMuaApAQCAtNSw4ICs1LDYgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X2RldmljZV9lbmNvZGluZyhpbnQpOwotCiBQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfRGVjb2RlTG9jYWxlKAogICAgIGNvbnN0IGNoYXIgKmFyZywKICAgICBzaXplX3QgKnNpemUpOwpAQCAtMTcsNiArMTUsOCBAQAogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X2RldmljZV9lbmNvZGluZyhpbnQpOworCiAjaWZkZWYgTVNfV0lORE9XUwogc3RydWN0IF9QeV9zdGF0X3N0cnVjdCB7CiAgICAgdW5zaWduZWQgbG9uZyBzdF9kZXY7CkBAIC00NiwxMyArNDYsMTEgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfZnN0YXRfbm9yYWlzZSgKICAgICBpbnQgZmQsCiAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqc3RhdHVzKTsKLSNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc3RhdCgKICAgICBQeU9iamVjdCAqcGF0aCwKICAgICBzdHJ1Y3Qgc3RhdCAqc3RhdHVzKTsKIAotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeV9vcGVuKAogICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAogICAgIGludCBmbGFncyk7CkBAIC02MCw3ICs1OCw2IEBACiBQeUFQSV9GVU5DKGludCkgX1B5X29wZW5fbm9yYWlzZSgKICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwKICAgICBpbnQgZmxhZ3MpOwotI2VuZGlmCiAKIFB5QVBJX0ZVTkMoRklMRSAqKSBfUHlfd2ZvcGVuKAogICAgIGNvbnN0IHdjaGFyX3QgKnBhdGgsCkBAIC0xMDcsNyArMTA0LDYgQEAKICAgICB3Y2hhcl90ICpidWYsCiAgICAgc2l6ZV90IHNpemUpOwogCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5X2dldF9pbmhlcml0YWJsZShpbnQgZmQpOwogCiBQeUFQSV9GVU5DKGludCkgX1B5X3NldF9pbmhlcml0YWJsZShpbnQgZmQsIGludCBpbmhlcml0YWJsZSwKQEAgLTEyMSwxOCArMTE3LDYgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc2V0X2Jsb2NraW5nKGludCBmZCwgaW50IGJsb2NraW5nKTsKICNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCiAKLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCi0vKiBBIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgdmFsaWQgb24gV2luZG93cy4gIFJldHVybnMgMAotICogYW5kIHNldHMgZXJybm8gdG8gRUJBREYgaWYgaXQgaXNuJ3QuICBUaGlzIGlzIHRvIGF2b2lkIEFzc2VydGlvbnMKLSAqIGZyb20gdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIFdpbmRvd3MgQ1JUIGJlZ2lubmluZyB3aXRoCi0gKiBWaXN1YWwgU3R1ZGlvIDIwMDUKLSAqLwotaW50IF9QeVZlcmlmeV9mZChpbnQgZmQpOwotCi0jZWxzZQotI2RlZmluZSBfUHlWZXJpZnlfZmQoQSkgKDEpIC8qIGR1bW15ICovCi0jZW5kaWYKLQogI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmggYi9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKaW5kZXggZTI0MGZkYi4uZjEwNDRkNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mbG9hdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmxvYXRvYmplY3QuaApAQCAtNzQsOSArNzQsOSBAQAogICogaGFwcGVucyBpbiBzdWNoIGNhc2VzIGlzIHBhcnRseSBhY2NpZGVudGFsIChhbGFzKS4KICAqLwogCi0vKiBUaGUgcGFjayByb3V0aW5lcyB3cml0ZSA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKKy8qIFRoZSBwYWNrIHJvdXRpbmVzIHdyaXRlIDIsIDQgb3IgOCBieXRlcywgc3RhcnRpbmcgYXQgcC4gIGxlIGlzIGEgYm9vbAogICogYXJndW1lbnQsIHRydWUgaWYgeW91IHdhbnQgdGhlIHN0cmluZyBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdCAoZXhwb25lbnQKLSAqIGxhc3QsIGF0IHArMyBvciBwKzcpLCBmYWxzZSBpZiB5b3Ugd2FudCBiaWctZW5kaWFuIGZvcm1hdCAoZXhwb25lbnQKKyAqIGxhc3QsIGF0IHArMSwgcCszIG9yIHArNyksIGZhbHNlIGlmIHlvdSB3YW50IGJpZy1lbmRpYW4gZm9ybWF0IChleHBvbmVudAogICogZmlyc3QsIGF0IHApLgogICogUmV0dXJuIHZhbHVlOiAgMCBpZiBhbGwgaXMgT0ssIC0xIGlmIGVycm9yIChhbmQgYW4gZXhjZXB0aW9uIGlzCiAgKiBzZXQsIG1vc3QgbGlrZWx5IE92ZXJmbG93RXJyb3IpLgpAQCAtODQsNiArODQsNyBAQAogICogMSk6ICBXaGF0IHRoaXMgZG9lcyBpcyB1bmRlZmluZWQgaWYgeCBpcyBhIE5hTiBvciBpbmZpbml0eS4KICAqIDIpOiAgLTAuMCBhbmQgKzAuMCBwcm9kdWNlIHRoZSBzYW1lIHN0cmluZy4KICAqLworUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X1BhY2syKGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X1BhY2s0KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X1BhY2s4KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogCkBAIC05NiwxNCArOTcsMTUgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9EaWdpdHMoY2hhciAqYnVmLCBkb3VibGUgdiwgaW50ICpzaWdudW0pOwogUHlBUElfRlVOQyh2b2lkKSBfUHlGbG9hdF9EaWdpdHNJbml0KHZvaWQpOwogCi0vKiBUaGUgdW5wYWNrIHJvdXRpbmVzIHJlYWQgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCisvKiBUaGUgdW5wYWNrIHJvdXRpbmVzIHJlYWQgMiwgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCiAgKiBhcmd1bWVudCwgdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0IChleHBvbmVudAotICogbGFzdCwgYXQgcCszIG9yIHArNyksIGZhbHNlIGlmIGJpZy1lbmRpYW4gKGV4cG9uZW50IGZpcnN0LCBhdCBwKS4KKyAqIGxhc3QsIGF0IHArMSwgcCszIG9yIHArNyksIGZhbHNlIGlmIGJpZy1lbmRpYW4gKGV4cG9uZW50IGZpcnN0LCBhdCBwKS4KICAqIFJldHVybiB2YWx1ZTogIFRoZSB1bnBhY2tlZCBkb3VibGUuICBPbiBlcnJvciwgdGhpcyBpcyAtMS4wIGFuZAogICogUHlFcnJfT2NjdXJyZWQoKSBpcyB0cnVlIChhbmQgYW4gZXhjZXB0aW9uIGlzIHNldCwgbW9zdCBsaWtlbHkKICAqIE92ZXJmbG93RXJyb3IpLiAgTm90ZSB0aGF0IG9uIGEgbm9uLUlFRUUgcGxhdGZvcm0gdGhpcyB3aWxsIHJlZnVzZQogICogdG8gdW5wYWNrIGEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyBhIE5hTiBvciBpbmZpbml0eS4KICAqLworUHlBUElfRlVOQyhkb3VibGUpIF9QeUZsb2F0X1VucGFjazIoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlGbG9hdF9VbnBhY2s0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGRvdWJsZSkgX1B5RmxvYXRfVW5wYWNrOChjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Z1bmNvYmplY3QuaCBiL0luY2x1ZGUvZnVuY29iamVjdC5oCmluZGV4IGNjMTQyNmMuLjc3YmI4YzMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZnVuY29iamVjdC5oCisrKyBiL0luY2x1ZGUvZnVuY29iamVjdC5oCkBAIC01OCw2ICs1OCwyMCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX0dldEFubm90YXRpb25zKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RnVuY3Rpb25fRmFzdENhbGxEaWN0KAorICAgIFB5T2JqZWN0ICpmdW5jLAorICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoCisgICAgUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKipzdGFjaywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKyNlbmRpZgorCiAvKiBNYWNyb3MgZm9yIGRpcmVjdCBhY2Nlc3MgdG8gdGhlc2UgdmFsdWVzLiBUeXBlIGNoZWNrcyBhcmUgKm5vdCoKICAgIGRvbmUsIHNvIHVzZSB3aXRoIGNhcmUuICovCiAjZGVmaW5lIFB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYykgXApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9nZW5vYmplY3QuaCBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKaW5kZXggMWZmMzJhOC4uOTczYmRkNSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9nZW5vYmplY3QuaAorKysgYi9JbmNsdWRlL2dlbm9iamVjdC5oCkBAIC02MSw2ICs2MSwzNyBAQAogUHlPYmplY3QgKl9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihQeU9iamVjdCAqbyk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29yb19OZXcoc3RydWN0IF9mcmFtZSAqLAogICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOworCisvKiBBc3luY2hyb25vdXMgR2VuZXJhdG9ycyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgX1B5R2VuT2JqZWN0X0hFQUQoYWcpCisgICAgUHlPYmplY3QgKmFnX2ZpbmFsaXplcjsKKworICAgIC8qIEZsYWcgaXMgc2V0IHRvIDEgd2hlbiBob29rcyBzZXQgdXAgYnkgc3lzLnNldF9hc3luY2dlbl9ob29rcworICAgICAgIHdlcmUgY2FsbGVkIG9uIHRoZSBnZW5lcmF0b3IsIHRvIGF2b2lkIGNhbGxpbmcgdGhlbSBtb3JlCisgICAgICAgdGhhbiBvbmNlLiAqLworICAgIGludCBhZ19ob29rc19pbml0ZWQ7CisKKyAgICAvKiBGbGFnIGlzIHNldCB0byAxIHdoZW4gYWNsb3NlKCkgaXMgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZSwgb3IKKyAgICAgICB3aGVuIGEgU3RvcEFzeW5jSXRlcmF0aW9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuICovCisgICAgaW50IGFnX2Nsb3NlZDsKK30gUHlBc3luY0dlbk9iamVjdDsKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5QXN5bmNHZW5fVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbkFTZW5kX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbkFUaHJvd19UeXBlOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5QXN5bmNHZW5fTmV3KHN0cnVjdCBfZnJhbWUgKiwKKyAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKTsKKworI2RlZmluZSBQeUFzeW5jR2VuX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlBc3luY0dlbl9UeXBlKQorCitQeU9iamVjdCAqX1B5QXN5bmNHZW5WYWx1ZVdyYXBwZXJOZXcoUHlPYmplY3QgKik7CisKK2ludCBQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKHZvaWQpOworCiAjZW5kaWYKIAogI3VuZGVmIF9QeUdlbk9iamVjdF9IRUFECmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1pbml0LmggYi9JbmNsdWRlL2dyYW1pbml0LmgKaW5kZXggZDAzMGJjMy4uZTliNGE5MyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtaW5pdC5oCisrKyBiL0luY2x1ZGUvZ3JhbWluaXQuaApAQCAtMTcsNzEgKzE3LDcyIEBACiAjZGVmaW5lIHNpbXBsZV9zdG10IDI3MAogI2RlZmluZSBzbWFsbF9zdG10IDI3MQogI2RlZmluZSBleHByX3N0bXQgMjcyCi0jZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzMKLSNkZWZpbmUgYXVnYXNzaWduIDI3NAotI2RlZmluZSBkZWxfc3RtdCAyNzUKLSNkZWZpbmUgcGFzc19zdG10IDI3NgotI2RlZmluZSBmbG93X3N0bXQgMjc3Ci0jZGVmaW5lIGJyZWFrX3N0bXQgMjc4Ci0jZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc5Ci0jZGVmaW5lIHJldHVybl9zdG10IDI4MAotI2RlZmluZSB5aWVsZF9zdG10IDI4MQotI2RlZmluZSByYWlzZV9zdG10IDI4MgotI2RlZmluZSBpbXBvcnRfc3RtdCAyODMKLSNkZWZpbmUgaW1wb3J0X25hbWUgMjg0Ci0jZGVmaW5lIGltcG9ydF9mcm9tIDI4NQotI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODYKLSNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg3Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODgKLSNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OQotI2RlZmluZSBkb3R0ZWRfbmFtZSAyOTAKLSNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkxCi0jZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkyCi0jZGVmaW5lIGFzc2VydF9zdG10IDI5MwotI2RlZmluZSBjb21wb3VuZF9zdG10IDI5NAotI2RlZmluZSBhc3luY19zdG10IDI5NQotI2RlZmluZSBpZl9zdG10IDI5NgotI2RlZmluZSB3aGlsZV9zdG10IDI5NwotI2RlZmluZSBmb3Jfc3RtdCAyOTgKLSNkZWZpbmUgdHJ5X3N0bXQgMjk5Ci0jZGVmaW5lIHdpdGhfc3RtdCAzMDAKLSNkZWZpbmUgd2l0aF9pdGVtIDMwMQotI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMgotI2RlZmluZSBzdWl0ZSAzMDMKLSNkZWZpbmUgdGVzdCAzMDQKLSNkZWZpbmUgdGVzdF9ub2NvbmQgMzA1Ci0jZGVmaW5lIGxhbWJkZWYgMzA2Ci0jZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNwotI2RlZmluZSBvcl90ZXN0IDMwOAotI2RlZmluZSBhbmRfdGVzdCAzMDkKLSNkZWZpbmUgbm90X3Rlc3QgMzEwCi0jZGVmaW5lIGNvbXBhcmlzb24gMzExCi0jZGVmaW5lIGNvbXBfb3AgMzEyCi0jZGVmaW5lIHN0YXJfZXhwciAzMTMKLSNkZWZpbmUgZXhwciAzMTQKLSNkZWZpbmUgeG9yX2V4cHIgMzE1Ci0jZGVmaW5lIGFuZF9leHByIDMxNgotI2RlZmluZSBzaGlmdF9leHByIDMxNwotI2RlZmluZSBhcml0aF9leHByIDMxOAotI2RlZmluZSB0ZXJtIDMxOQotI2RlZmluZSBmYWN0b3IgMzIwCi0jZGVmaW5lIHBvd2VyIDMyMQotI2RlZmluZSBhdG9tX2V4cHIgMzIyCi0jZGVmaW5lIGF0b20gMzIzCi0jZGVmaW5lIHRlc3RsaXN0X2NvbXAgMzI0Ci0jZGVmaW5lIHRyYWlsZXIgMzI1Ci0jZGVmaW5lIHN1YnNjcmlwdGxpc3QgMzI2Ci0jZGVmaW5lIHN1YnNjcmlwdCAzMjcKLSNkZWZpbmUgc2xpY2VvcCAzMjgKLSNkZWZpbmUgZXhwcmxpc3QgMzI5Ci0jZGVmaW5lIHRlc3RsaXN0IDMzMAotI2RlZmluZSBkaWN0b3JzZXRtYWtlciAzMzEKLSNkZWZpbmUgY2xhc3NkZWYgMzMyCi0jZGVmaW5lIGFyZ2xpc3QgMzMzCi0jZGVmaW5lIGFyZ3VtZW50IDMzNAotI2RlZmluZSBjb21wX2l0ZXIgMzM1Ci0jZGVmaW5lIGNvbXBfZm9yIDMzNgotI2RlZmluZSBjb21wX2lmIDMzNwotI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzOAotI2RlZmluZSB5aWVsZF9leHByIDMzOQotI2RlZmluZSB5aWVsZF9hcmcgMzQwCisjZGVmaW5lIGFubmFzc2lnbiAyNzMKKyNkZWZpbmUgdGVzdGxpc3Rfc3Rhcl9leHByIDI3NAorI2RlZmluZSBhdWdhc3NpZ24gMjc1CisjZGVmaW5lIGRlbF9zdG10IDI3NgorI2RlZmluZSBwYXNzX3N0bXQgMjc3CisjZGVmaW5lIGZsb3dfc3RtdCAyNzgKKyNkZWZpbmUgYnJlYWtfc3RtdCAyNzkKKyNkZWZpbmUgY29udGludWVfc3RtdCAyODAKKyNkZWZpbmUgcmV0dXJuX3N0bXQgMjgxCisjZGVmaW5lIHlpZWxkX3N0bXQgMjgyCisjZGVmaW5lIHJhaXNlX3N0bXQgMjgzCisjZGVmaW5lIGltcG9ydF9zdG10IDI4NAorI2RlZmluZSBpbXBvcnRfbmFtZSAyODUKKyNkZWZpbmUgaW1wb3J0X2Zyb20gMjg2CisjZGVmaW5lIGltcG9ydF9hc19uYW1lIDI4NworI2RlZmluZSBkb3R0ZWRfYXNfbmFtZSAyODgKKyNkZWZpbmUgaW1wb3J0X2FzX25hbWVzIDI4OQorI2RlZmluZSBkb3R0ZWRfYXNfbmFtZXMgMjkwCisjZGVmaW5lIGRvdHRlZF9uYW1lIDI5MQorI2RlZmluZSBnbG9iYWxfc3RtdCAyOTIKKyNkZWZpbmUgbm9ubG9jYWxfc3RtdCAyOTMKKyNkZWZpbmUgYXNzZXJ0X3N0bXQgMjk0CisjZGVmaW5lIGNvbXBvdW5kX3N0bXQgMjk1CisjZGVmaW5lIGFzeW5jX3N0bXQgMjk2CisjZGVmaW5lIGlmX3N0bXQgMjk3CisjZGVmaW5lIHdoaWxlX3N0bXQgMjk4CisjZGVmaW5lIGZvcl9zdG10IDI5OQorI2RlZmluZSB0cnlfc3RtdCAzMDAKKyNkZWZpbmUgd2l0aF9zdG10IDMwMQorI2RlZmluZSB3aXRoX2l0ZW0gMzAyCisjZGVmaW5lIGV4Y2VwdF9jbGF1c2UgMzAzCisjZGVmaW5lIHN1aXRlIDMwNAorI2RlZmluZSB0ZXN0IDMwNQorI2RlZmluZSB0ZXN0X25vY29uZCAzMDYKKyNkZWZpbmUgbGFtYmRlZiAzMDcKKyNkZWZpbmUgbGFtYmRlZl9ub2NvbmQgMzA4CisjZGVmaW5lIG9yX3Rlc3QgMzA5CisjZGVmaW5lIGFuZF90ZXN0IDMxMAorI2RlZmluZSBub3RfdGVzdCAzMTEKKyNkZWZpbmUgY29tcGFyaXNvbiAzMTIKKyNkZWZpbmUgY29tcF9vcCAzMTMKKyNkZWZpbmUgc3Rhcl9leHByIDMxNAorI2RlZmluZSBleHByIDMxNQorI2RlZmluZSB4b3JfZXhwciAzMTYKKyNkZWZpbmUgYW5kX2V4cHIgMzE3CisjZGVmaW5lIHNoaWZ0X2V4cHIgMzE4CisjZGVmaW5lIGFyaXRoX2V4cHIgMzE5CisjZGVmaW5lIHRlcm0gMzIwCisjZGVmaW5lIGZhY3RvciAzMjEKKyNkZWZpbmUgcG93ZXIgMzIyCisjZGVmaW5lIGF0b21fZXhwciAzMjMKKyNkZWZpbmUgYXRvbSAzMjQKKyNkZWZpbmUgdGVzdGxpc3RfY29tcCAzMjUKKyNkZWZpbmUgdHJhaWxlciAzMjYKKyNkZWZpbmUgc3Vic2NyaXB0bGlzdCAzMjcKKyNkZWZpbmUgc3Vic2NyaXB0IDMyOAorI2RlZmluZSBzbGljZW9wIDMyOQorI2RlZmluZSBleHBybGlzdCAzMzAKKyNkZWZpbmUgdGVzdGxpc3QgMzMxCisjZGVmaW5lIGRpY3RvcnNldG1ha2VyIDMzMgorI2RlZmluZSBjbGFzc2RlZiAzMzMKKyNkZWZpbmUgYXJnbGlzdCAzMzQKKyNkZWZpbmUgYXJndW1lbnQgMzM1CisjZGVmaW5lIGNvbXBfaXRlciAzMzYKKyNkZWZpbmUgY29tcF9mb3IgMzM3CisjZGVmaW5lIGNvbXBfaWYgMzM4CisjZGVmaW5lIGVuY29kaW5nX2RlY2wgMzM5CisjZGVmaW5lIHlpZWxkX2V4cHIgMzQwCisjZGVmaW5lIHlpZWxkX2FyZyAzNDEKZGlmZiAtLWdpdCBhL0luY2x1ZGUvaW1wb3J0LmggYi9JbmNsdWRlL2ltcG9ydC5oCmluZGV4IGFmZGZhYzIuLjQ2YzBkOGUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvaW1wb3J0LmgKKysrIGIvSW5jbHVkZS9pbXBvcnQuaApAQCAtNyw3ICs3LDkgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0WmlwX0luaXQodm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIFB5TU9ESU5JVF9GVU5DIFB5SW5pdF9pbXAodm9pZCk7CiBQeUFQSV9GVU5DKGxvbmcpIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKHZvaWQpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbnRyY2hlY2suaCBiL0luY2x1ZGUvaW50cmNoZWNrLmgKaW5kZXggZjUzZmVlMS4uOGZiOTZjZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbnRyY2hlY2suaAorKysgYi9JbmNsdWRlL2ludHJjaGVjay5oCkBAIC04LDEyICs4LDE1IEBACiBQeUFQSV9GVU5DKGludCkgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19BZnRlckZvcmsodm9pZCk7CisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlPU19Jc01haW5UaHJlYWQodm9pZCk7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAvKiB3aW5kb3dzLmggaXMgbm90IGluY2x1ZGVkIGJ5IFB5dGhvbi5oIHNvIHVzZSB2b2lkKiBpbnN0ZWFkIG9mIEhBTkRMRSAqLwogUHlBUElfRlVOQyh2b2lkKikgX1B5T1NfU2lnaW50RXZlbnQodm9pZCk7CiAjZW5kaWYKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdpbnRyZXByLmggYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKaW5kZXggYmJiYTRkOC4uYTNiNzRiNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9sb25naW50cmVwci5oCisrKyBiL0luY2x1ZGUvbG9uZ2ludHJlcHIuaApAQCAtNDIsMTQgKzQyLDEwIEBACiAqLwogCiAjaWYgUFlMT05HX0JJVFNfSU5fRElHSVQgPT0gMzAKLSNpZiAhKGRlZmluZWQgSEFWRV9VSU5UNjRfVCAmJiBkZWZpbmVkIEhBVkVfVUlOVDMyX1QgJiYgICAgICAgICAgXAotICAgICAgZGVmaW5lZCBIQVZFX0lOVDY0X1QgJiYgZGVmaW5lZCBIQVZFX0lOVDMyX1QpCi0jZXJyb3IgIjMwLWJpdCBsb25nIGRpZ2l0cyByZXF1ZXN0ZWQsIGJ1dCB0aGUgbmVjZXNzYXJ5IHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iCi0jZW5kaWYKLXR5cGVkZWYgUFlfVUlOVDMyX1QgZGlnaXQ7Ci10eXBlZGVmIFBZX0lOVDMyX1Qgc2RpZ2l0OyAvKiBzaWduZWQgdmFyaWFudCBvZiBkaWdpdCAqLwotdHlwZWRlZiBQWV9VSU5UNjRfVCB0d29kaWdpdHM7Ci10eXBlZGVmIFBZX0lOVDY0X1Qgc3R3b2RpZ2l0czsgLyogc2lnbmVkIHZhcmlhbnQgb2YgdHdvZGlnaXRzICovCit0eXBlZGVmIHVpbnQzMl90IGRpZ2l0OwordHlwZWRlZiBpbnQzMl90IHNkaWdpdDsgLyogc2lnbmVkIHZhcmlhbnQgb2YgZGlnaXQgKi8KK3R5cGVkZWYgdWludDY0X3QgdHdvZGlnaXRzOwordHlwZWRlZiBpbnQ2NF90IHN0d29kaWdpdHM7IC8qIHNpZ25lZCB2YXJpYW50IG9mIHR3b2RpZ2l0cyAqLwogI2RlZmluZSBQeUxvbmdfU0hJRlQJMzAKICNkZWZpbmUgX1B5TG9uZ19ERUNJTUFMX1NISUZUCTkgLyogbWF4KGUgc3VjaCB0aGF0IDEwKiplIGZpdHMgaW4gYSBkaWdpdCkgKi8KICNkZWZpbmUgX1B5TG9uZ19ERUNJTUFMX0JBU0UJKChkaWdpdCkxMDAwMDAwMDAwKSAvKiAxMCAqKiBERUNJTUFMX1NISUZUICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdvYmplY3QuaCBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCmluZGV4IDJhMmVlY2YuLmVmZDQwOWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ29iamVjdC5oCisrKyBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCkBAIC02NSw3ICs2NSw4IEBACiAjICBlcnJvciAidm9pZCogZGlmZmVyZW50IGluIHNpemUgZnJvbSBpbnQsIGxvbmcgYW5kIGxvbmcgbG9uZyIKICNlbmRpZiAvKiBTSVpFT0ZfVk9JRF9QICovCiAKLS8qIFVzZWQgYnkgUHl0aG9uL215c3RydG91bC5jLiAqLworLyogVXNlZCBieSBQeXRob24vbXlzdHJ0b3VsLmMsIF9QeUJ5dGVzX0Zyb21IZXgoKSwKKyAgIF9QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZSgpLCBldGMuICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKHVuc2lnbmVkIGNoYXIpIF9QeUxvbmdfRGlnaXRWYWx1ZVsyNTZdOwogI2VuZGlmCkBAIC04NCwxNCArODUsMTIgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKik7CiBQeUFQSV9GVU5DKHZvaWQgKikgUHlMb25nX0FzVm9pZFB0cihQeU9iamVjdCAqKTsKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7Ci1QeUFQSV9GVU5DKFBZX0xPTkdfTE9ORykgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkModW5zaWduZWQgUFlfTE9OR19MT05HKSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkMoUFlfTE9OR19MT05HKSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICosIGludCAqKTsKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBsb25nIGxvbmcpOworUHlBUElfRlVOQyhsb25nIGxvbmcpIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nIGxvbmcpIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcgbG9uZykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGxvbmcgbG9uZykgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqLCBpbnQgKik7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtMTgyLDYgKzE4MSwxMyBAQAogICAgIGludCBiYXNlLAogICAgIGludCBhbHRlcm5hdGUpOwogCitQeUFQSV9GVU5DKGNoYXIqKSBfUHlMb25nX0Zvcm1hdEJ5dGVzV3JpdGVyKAorICAgIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgY2hhciAqc3RyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgaW50IGJhc2UsCisgICAgaW50IGFsdGVybmF0ZSk7CisKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKApAQCAtMTk4LDggKzIwNCwxMCBAQAogUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nKSBQeU9TX3N0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogUHlBUElfRlVOQyhsb25nKSBQeU9TX3N0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIEZvciB1c2UgYnkgdGhlIGdjZCBmdW5jdGlvbiBpbiBtYXRobW9kdWxlLmMgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19HQ0QoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKaW5kZXggZTJhZDgwNC4uNzlmYWQ4MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaAorKysgYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCkBAIC0xNiw2ICsxNiw4IEBACiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5Q0Z1bmN0aW9uX1R5cGUpCiAKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb24pKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwordHlwZWRlZiBQeU9iamVjdCAqKCpfUHlDRnVuY3Rpb25GYXN0KSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlOb0FyZ3NGdW5jdGlvbikoUHlPYmplY3QgKik7CkBAIC0zNyw2ICszOSwxOCBAQAogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX0NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKmFyZ3MsCisgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICBQeU9iamVjdCAqa3dhcmdzKTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKnN0YWNrLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3bmFtZXMpOworI2VuZGlmCisKIHN0cnVjdCBQeU1ldGhvZERlZiB7CiAgICAgY29uc3QgY2hhciAgKm1sX25hbWU7ICAgLyogVGhlIG5hbWUgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uL21ldGhvZCAqLwogICAgIFB5Q0Z1bmN0aW9uIG1sX21ldGg7ICAgIC8qIFRoZSBDIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBpdCAqLwpAQCAtNzIsNiArODYsOCBAQAogI2RlZmluZSBNRVRIX0NPRVhJU1QgICAweDAwNDAKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBNRVRIX0ZBU1RDQUxMICAweDAwODAKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU1ldGhvZERlZiAqbV9tbDsgLyogRGVzY3JpcHRpb24gb2YgdGhlIEMgZnVuY3Rpb24gdG8gY2FsbCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2RzdXBwb3J0LmggYi9JbmNsdWRlL21vZHN1cHBvcnQuaAppbmRleCA4MjlhYWY4Li44MzNlMzNkIDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHN1cHBvcnQuaAorKysgYi9JbmNsdWRlL21vZHN1cHBvcnQuaApAQCAtMTUsMTIgKzE1LDE2IEBACiAjZGVmaW5lIFB5QXJnX1BhcnNlICAgICAgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlX1NpemVUCiAjZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGUgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKICNkZWZpbmUgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzICAgICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIFB5QXJnX1ZhUGFyc2UgICAgICAgICAgICAgICAgICAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKICNkZWZpbmUgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMgICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNkZWZpbmUgUHlfQnVpbGRWYWx1ZSAgICAgICAgICAgICAgICAgICBfUHlfQnVpbGRWYWx1ZV9TaXplVAogI2RlZmluZSBQeV9WYUJ1aWxkVmFsdWUgICAgICAgICAgICAgICAgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKICNlbHNlCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBEdWUgdG8gYSBnbGl0Y2ggaW4gMy4yLCB0aGUgX1NpemVUIHZlcnNpb25zIHdlcmVuJ3QgZXhwb3J0ZWQgZnJvbSB0aGUgRExMLiAqLwpAQCAtNDQsNiArNDgsMzIgQEAKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeV9WYUJ1aWxkVmFsdWUoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQordHlwZWRlZiBzdHJ1Y3QgX1B5QXJnX1BhcnNlciB7CisgICAgY29uc3QgY2hhciAqZm9ybWF0OworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqa2V5d29yZHM7CisgICAgY29uc3QgY2hhciAqZm5hbWU7CisgICAgY29uc3QgY2hhciAqY3VzdG9tX21zZzsKKyAgICBpbnQgcG9zOyAgICAgICAgICAgIC8qIG51bWJlciBvZiBwb3NpdGlvbmFsLW9ubHkgYXJndW1lbnRzICovCisgICAgaW50IG1pbjsgICAgICAgICAgICAvKiBtaW5pbWFsIG51bWJlciBvZiBhcmd1bWVudHMgKi8KKyAgICBpbnQgbWF4OyAgICAgICAgICAgIC8qIG1heGltYWwgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzICovCisgICAgUHlPYmplY3QgKmt3dHVwbGU7ICAvKiB0dXBsZSBvZiBrZXl3b3JkIHBhcmFtZXRlciBuYW1lcyAqLworICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpuZXh0OworfSBfUHlBcmdfUGFyc2VyOworI2lmZGVmIFBZX1NTSVpFX1RfQ0xFQU4KKyNkZWZpbmUgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUCisjZGVmaW5lIF9QeUFyZ19QYXJzZVN0YWNrICBfUHlBcmdfUGFyc2VTdGFja19TaXplVAorI2RlZmluZSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0ICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUCisjZW5kaWYKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlU3RhY2soUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QpOwordm9pZCBfUHlBcmdfRmluaSh2b2lkKTsKKyNlbmRpZgorCiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkT2JqZWN0KFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBsb25nKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oIGIvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaAppbmRleCBhNDEyZjA1Li4wYzhkOTVjIDEwMDY0NAotLS0gYS9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKQEAgLTcsOSArNywxMSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5hbWVzcGFjZV9UeXBlOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU5hbWVzcGFjZV9OZXcoUHlPYmplY3QgKmt3ZHMpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqZWN0LmggYi9JbmNsdWRlL29iamVjdC5oCmluZGV4IDUwZDk3NDcuLjMzOGVjMWIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9vYmplY3QuaApAQCAtMTE4LDYgKzExOCw3IEBACiAjZGVmaW5lIFB5X1RZUEUob2IpICAgICAgICAgICAgICgoKFB5T2JqZWN0Kikob2IpKS0+b2JfdHlwZSkKICNkZWZpbmUgUHlfU0laRShvYikgICAgICAgICAgICAgKCgoUHlWYXJPYmplY3QqKShvYikpLT5vYl9zaXplKQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKioqKioqKioqKioqKioqKioqKioqIFN0cmluZyBMaXRlcmFscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogVGhpcyBzdHJ1Y3R1cmUgaGVscHMgbWFuYWdpbmcgc3RhdGljIHN0cmluZ3MuIFRoZSBiYXNpYyB1c2FnZSBnb2VzIGxpa2UgdGhpczoKICAgIEluc3RlYWQgb2YgZG9pbmcKQEAgLTE0NCwxMCArMTQ1LDEyIEBACiAgICAgUHlPYmplY3QgKm9iamVjdDsKIH0gX1B5X0lkZW50aWZpZXI7CiAKLSNkZWZpbmUgX1B5X3N0YXRpY19zdHJpbmdfaW5pdCh2YWx1ZSkgeyAwLCB2YWx1ZSwgMCB9CisjZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nX2luaXQodmFsdWUpIHsgLm5leHQgPSBOVUxMLCAuc3RyaW5nID0gdmFsdWUsIC5vYmplY3QgPSBOVUxMIH0KICNkZWZpbmUgX1B5X3N0YXRpY19zdHJpbmcodmFybmFtZSwgdmFsdWUpICBzdGF0aWMgX1B5X0lkZW50aWZpZXIgdmFybmFtZSA9IF9QeV9zdGF0aWNfc3RyaW5nX2luaXQodmFsdWUpCiAjZGVmaW5lIF9QeV9JREVOVElGSUVSKHZhcm5hbWUpIF9QeV9zdGF0aWNfc3RyaW5nKFB5SWRfIyN2YXJuYW1lLCAjdmFybmFtZSkKIAorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCiAvKgogVHlwZSBvYmplY3RzIGNvbnRhaW4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgdHlwZSBuYW1lICh0byBoZWxwIHNvbWV3aGF0CiBpbiBkZWJ1Z2dpbmcpLCB0aGUgYWxsb2NhdGlvbiBwYXJhbWV0ZXJzIChzZWUgUHlPYmplY3RfTmV3KCkgYW5kCkBAIC01MTIsOCArNTE1LDggQEAKICNlbmRpZgogCiAvKiBHZW5lcmljIG9wZXJhdGlvbnMgb24gb2JqZWN0cyAqLwotc3RydWN0IF9QeV9JZGVudGlmaWVyOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorc3RydWN0IF9QeV9JZGVudGlmaWVyOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X1ByaW50KFB5T2JqZWN0ICosIEZJTEUgKiwgaW50KTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X0JyZWFrUG9pbnQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EdW1wKFB5T2JqZWN0ICopOwpAQCAtNTMwLDExICs1MzMsMTEgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfR2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9TZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0hhc0F0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0lzQWJzdHJhY3QoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOwogUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9TZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9IYXNBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKikgX1B5T2JqZWN0X0dldERpY3RQdHIoUHlPYmplY3QgKik7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfU2VsZkl0ZXIoUHlPYmplY3QgKik7CkBAIC01NTcsNiArNTYwLDcgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MoUHlPYmplY3QgKik7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogU2FtZSBhcyBQeU9iamVjdF9HZW5lcmlje0dldCxTZXR9QXR0ciwgYnV0IHBhc3NpbmcgdGhlIGF0dHJpYnV0ZXMKICAgIGRpY3QgYXMgdGhlIGxhc3QgcGFyYW1ldGVyLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKQpAQCAtNTY0LDYgKzU2OCw3IEBACiBQeUFQSV9GVU5DKGludCkKIF9QeU9iamVjdF9HZW5lcmljU2V0QXR0cldpdGhEaWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogSGVscGVyIHRvIGxvb2sgdXAgYSBidWlsdGluIG9iamVjdCAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtNzA4LDcgKzcxMyw2IEBACiBQeUFQSV9EQVRBKFB5X3NzaXplX3QpIF9QeV9SZWZUb3RhbDsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X05lZ2F0aXZlUmVmY291bnQoY29uc3QgY2hhciAqZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIFB5T2JqZWN0ICpvcCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfRHVtbXkodm9pZCk7CiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV9HZXRSZWZUb3RhbCh2b2lkKTsKICNkZWZpbmUgX1B5X0lOQ19SRUZUT1RBTCAgICAgICAgX1B5X1JlZlRvdGFsKysKICNkZWZpbmUgX1B5X0RFQ19SRUZUT1RBTCAgICAgICAgX1B5X1JlZlRvdGFsLS0KQEAgLTc4NSw3ICs3ODksNyBAQAogICAgICAgICAtLShfcHlfZGVjcmVmX3RtcCktPm9iX3JlZmNudCAhPSAwKSAgICAgICAgICAgICBcCiAgICAgICAgICAgICBfUHlfQ0hFQ0tfUkVGQ05UKF9weV9kZWNyZWZfdG1wKSAgICAgICAgICAgIFwKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfUHlfRGVhbGxvYyhfcHlfZGVjcmVmX3RtcCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfUHlfRGVhbGxvYyhfcHlfZGVjcmVmX3RtcCk7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCiAvKiBTYWZlbHkgZGVjcmVmIGBvcGAgYW5kIHNldCBgb3BgIHRvIE5VTEwsIGVzcGVjaWFsbHkgdXNlZnVsIGluIHRwX2NsZWFyCkBAIC04ODksOCArODkzLDEwIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luY1JlZihQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlfRGVjUmVmKFB5T2JqZWN0ICopOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5Tm9uZV9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5vdEltcGxlbWVudGVkX1R5cGU7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qCiBfUHlfTm9uZVN0cnVjdCBpcyBhbiBvYmplY3Qgb2YgdW5kZWZpbmVkIHR5cGUgd2hpY2ggY2FuIGJlIHVzZWQgaW4gY29udGV4dHMKQEAgLTkyMywxMCArOTI5LDEyIEBACiAjZGVmaW5lIFB5X0dUIDQKICNkZWZpbmUgUHlfR0UgNQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBNYXBzIFB5X0xUIHRvIFB5X0dULCAuLi4sIFB5X0dFIHRvIFB5X0xFLgogICogRGVmaW5lZCBpbiBvYmplY3QuYy4KICAqLwogUHlBUElfREFUQShpbnQpIF9QeV9Td2FwcGVkT3BbXTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogCiAvKgpAQCAtMTAyMywxMiArMTAzMSwxNCBAQAogd2l0aCB0aGUgY2FsbCBzdGFjayBuZXZlciBleGNlZWRpbmcgYSBkZXB0aCBvZiBQeVRyYXNoX1VOV0lORF9MRVZFTC4KICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFRoaXMgaXMgdGhlIG9sZCBwcml2YXRlIEFQSSwgaW52b2tlZCBieSB0aGUgbWFjcm9zIGJlZm9yZSAzLjIuNC4KICAgIEtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4dGVuc2lvbnMgdXNpbmcgdGhlIHN0YWJsZSBBQkkuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4odm9pZCk7CiBQeUFQSV9EQVRBKGludCkgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcjsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogVGhlIG5ldyB0aHJlYWQtc2FmZSBwcml2YXRlIEFQSSwgaW52b2tlZCBieSB0aGUgbWFjcm9zIGJlbG93LiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF90aHJlYWRfZGVwb3NpdF9vYmplY3QoUHlPYmplY3QqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqaW1wbC5oIGIvSW5jbHVkZS9vYmppbXBsLmgKaW5kZXggNjViNmQ5MS4uYzBlZDliNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmppbXBsLmgKKysrIGIvSW5jbHVkZS9vYmppbXBsLmgKQEAgLTk5LDggKzk5LDEwIEBACiBQeUFQSV9GVU5DKHZvaWQgKikgUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T2JqZWN0X0ZyZWUodm9pZCAqcHRyKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkIG1lbW9yeSBibG9ja3MsIHJlZ2FyZGxlc3Mgb2Ygc2l6ZSAqLwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfR2V0QWxsb2NhdGVkQmxvY2tzKHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBNYWNyb3MgKi8KICNpZmRlZiBXSVRIX1BZTUFMTE9DCkBAIC0yMjQsMTEgKzIyNiwxMiBAQAogICogPT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqLwogCi0vKiBDIGVxdWl2YWxlbnQgb2YgZ2MuY29sbGVjdCgpLiAqLworLyogQyBlcXVpdmFsZW50IG9mIGdjLmNvbGxlY3QoKSB3aGljaCBpZ25vcmVzIHRoZSBzdGF0ZSBvZiBnYy5lbmFibGVkLiAqLwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeUdDX0NvbGxlY3Qodm9pZCk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5R0NfQ29sbGVjdE5vRmFpbCh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5R0NfQ29sbGVjdElmRW5hYmxlZCh2b2lkKTsKICNlbmRpZgogCiAvKiBUZXN0IGlmIGEgdHlwZSBoYXMgYSBHQyBoZWFkICovCkBAIC0zMjIsOCArMzI1LDEwIEBACiAgICAgICAgICghUHlUdXBsZV9DaGVja0V4YWN0KG9iaikgfHwgX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob2JqKSkpCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTWFsbG9jKHNpemVfdCBzaXplKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX0NhbGxvYyhzaXplX3Qgc2l6ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19OZXcoUHlUeXBlT2JqZWN0ICopOwogUHlBUElfRlVOQyhQeVZhck9iamVjdCAqKSBfUHlPYmplY3RfR0NfTmV3VmFyKFB5VHlwZU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfR0NfVHJhY2sodm9pZCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3Bjb2RlLmggYi9JbmNsdWRlL29wY29kZS5oCmluZGV4IDNmOTE3ZmIuLjA5MDM4MjQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3Bjb2RlLmgKKysrIGIvSW5jbHVkZS9vcGNvZGUuaApAQCAtNjAsNiArNjAsNyBAQAogI2RlZmluZSBXSVRIX0NMRUFOVVBfRklOSVNIICAgICAgODIKICNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgICAgICAgICAgIDgzCiAjZGVmaW5lIElNUE9SVF9TVEFSICAgICAgICAgICAgICA4NAorI2RlZmluZSBTRVRVUF9BTk5PVEFUSU9OUyAgICAgICAgODUKICNkZWZpbmUgWUlFTERfVkFMVUUgICAgICAgICAgICAgIDg2CiAjZGVmaW5lIFBPUF9CTE9DSyAgICAgICAgICAgICAgICA4NwogI2RlZmluZSBFTkRfRklOQUxMWSAgICAgICAgICAgICAgODgKQEAgLTk4LDE4ICs5OSwxNyBAQAogI2RlZmluZSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAxMjQKICNkZWZpbmUgU1RPUkVfRkFTVCAgICAgICAgICAgICAgMTI1CiAjZGVmaW5lIERFTEVURV9GQVNUICAgICAgICAgICAgIDEyNgorI2RlZmluZSBTVE9SRV9BTk5PVEFUSU9OICAgICAgICAxMjcKICNkZWZpbmUgUkFJU0VfVkFSQVJHUyAgICAgICAgICAgMTMwCiAjZGVmaW5lIENBTExfRlVOQ1RJT04gICAgICAgICAgIDEzMQogI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAxMzIKICNkZWZpbmUgQlVJTERfU0xJQ0UgICAgICAgICAgICAgMTMzCi0jZGVmaW5lIE1BS0VfQ0xPU1VSRSAgICAgICAgICAgIDEzNAogI2RlZmluZSBMT0FEX0NMT1NVUkUgICAgICAgICAgICAxMzUKICNkZWZpbmUgTE9BRF9ERVJFRiAgICAgICAgICAgICAgMTM2CiAjZGVmaW5lIFNUT1JFX0RFUkVGICAgICAgICAgICAgIDEzNwogI2RlZmluZSBERUxFVEVfREVSRUYgICAgICAgICAgICAxMzgKLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgMTQwCiAjZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgIDE0MQotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAxNDIKKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9FWCAgICAgICAgMTQyCiAjZGVmaW5lIFNFVFVQX1dJVEggICAgICAgICAgICAgIDE0MwogI2RlZmluZSBFWFRFTkRFRF9BUkcgICAgICAgICAgICAxNDQKICNkZWZpbmUgTElTVF9BUFBFTkQgICAgICAgICAgICAgMTQ1CkBAIC0xMjIsNiArMTIyLDkgQEAKICNkZWZpbmUgQlVJTERfVFVQTEVfVU5QQUNLICAgICAgMTUyCiAjZGVmaW5lIEJVSUxEX1NFVF9VTlBBQ0sgICAgICAgIDE1MwogI2RlZmluZSBTRVRVUF9BU1lOQ19XSVRIICAgICAgICAxNTQKKyNkZWZpbmUgRk9STUFUX1ZBTFVFICAgICAgICAgICAgMTU1CisjZGVmaW5lIEJVSUxEX0NPTlNUX0tFWV9NQVAgICAgIDE1NgorI2RlZmluZSBCVUlMRF9TVFJJTkcgICAgICAgICAgICAxNTcKIAogLyogRVhDRVBUX0hBTkRMRVIgaXMgYSBzcGVjaWFsLCBpbXBsaWNpdCBibG9jayB0eXBlIHdoaWNoIGlzIGNyZWF0ZWQgd2hlbgogICAgZW50ZXJpbmcgYW4gZXhjZXB0IGhhbmRsZXIuIEl0IGlzIG5vdCBhbiBvcGNvZGUgYnV0IHdlIGRlZmluZSBpdCBoZXJlCmRpZmYgLS1naXQgYS9JbmNsdWRlL29zbW9kdWxlLmggYi9JbmNsdWRlL29zbW9kdWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE0Njc1NwotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvb3Ntb2R1bGUuaApAQCAtMCwwICsxLDE1IEBACisKKy8qIG9zIG1vZHVsZSBpbnRlcmZhY2UgKi8KKworI2lmbmRlZiBQeV9PU01PRFVMRV9ICisjZGVmaW5lIFB5X09TTU9EVUxFX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIVB5X09TTU9EVUxFX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKaW5kZXggNDVlNTczNi4uYjYyMzUwOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wYXRjaGxldmVsLmgKKysrIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKQEAgLTE3LDEzICsxNywxMyBAQAogLyogVmVyc2lvbiBwYXJzZWQgb3V0IGludG8gbnVtZXJpYyB2YWx1ZXMgKi8KIC8qLS1zdGFydCBjb25zdGFudHMtLSovCiAjZGVmaW5lIFBZX01BSk9SX1ZFUlNJT04JMwotI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTUKLSNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkyCi0jZGVmaW5lIFBZX1JFTEVBU0VfTEVWRUwJUFlfUkVMRUFTRV9MRVZFTF9GSU5BTAotI2RlZmluZSBQWV9SRUxFQVNFX1NFUklBTAkwCisjZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JNgorI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTAKKyNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0JFVEEKKyNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMQogCiAvKiBWZXJzaW9uIGFzIGEgc3RyaW5nICovCi0jZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuNS4yKyIKKyNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy42LjBiMSsiCiAvKi0tZW5kIGNvbnN0YW50cy0tKi8KIAogLyogVmVyc2lvbiBhcyBhIHNpbmdsZSA0LWJ5dGUgaGV4IG51bWJlciwgZS5nLiAweDAxMDUwMkIyID09IDEuNS4yYjIuCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5X2N1cnNlcy5oIGIvSW5jbHVkZS9weV9jdXJzZXMuaAppbmRleCBmMmMwOGY2Li4zYzIxNjk3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5X2N1cnNlcy5oCisrKyBiL0luY2x1ZGUvcHlfY3Vyc2VzLmgKQEAgLTEwMyw4ICsxMDMsOCBAQAogI2VuZGlmCiAKIC8qIGdlbmVyYWwgZXJyb3IgbWVzc2FnZXMgKi8KLXN0YXRpYyBjaGFyICpjYXRjaGFsbF9FUlIgID0gImN1cnNlcyBmdW5jdGlvbiByZXR1cm5lZCBFUlIiOwotc3RhdGljIGNoYXIgKmNhdGNoYWxsX05VTEwgPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIE5VTEwiOworc3RhdGljIGNvbnN0IGNoYXIgY2F0Y2hhbGxfRVJSW10gID0gImN1cnNlcyBmdW5jdGlvbiByZXR1cm5lZCBFUlIiOworc3RhdGljIGNvbnN0IGNoYXIgY2F0Y2hhbGxfTlVMTFtdID0gImN1cnNlcyBmdW5jdGlvbiByZXR1cm5lZCBOVUxMIjsKIAogLyogRnVuY3Rpb24gUHJvdG90eXBlIE1hY3JvcyAtIFRoZXkgYXJlIHVnbHkgYnV0IHZlcnksIHZlcnkgdXNlZnVsLiA7LSkKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWF0b21pYy5oIGIvSW5jbHVkZS9weWF0b21pYy5oCmluZGV4IDg5MDI4ZWYuLjg5M2QzMGQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlhdG9taWMuaAorKysgYi9JbmNsdWRlL3B5YXRvbWljLmgKQEAgLTYxLDcgKzYxLDcgQEAKIH0gX1B5X21lbW9yeV9vcmRlcjsKIAogdHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19hZGRyZXNzIHsKLSAgICBQeV91aW50cHRyX3QgX3ZhbHVlOworICAgIHVpbnRwdHJfdCBfdmFsdWU7CiB9IF9QeV9hdG9taWNfYWRkcmVzczsKIAogdHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19pbnQgewpAQCAtOTgsNyArOTgsNyBAQAogfSBfUHlfbWVtb3J5X29yZGVyOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2FkZHJlc3MgewotICAgIFB5X3VpbnRwdHJfdCBfdmFsdWU7CisgICAgdWludHB0cl90IF92YWx1ZTsKIH0gX1B5X2F0b21pY19hZGRyZXNzOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2ludCB7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZGVidWcuaCBiL0luY2x1ZGUvcHlkZWJ1Zy5oCmluZGV4IDE5YmVjMmIuLjZlMjNhODkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlkZWJ1Zy5oCisrKyBiL0luY2x1ZGUvcHlkZWJ1Zy5oCkBAIC0yNCw2ICsyNCwxMCBAQAogUHlBUElfREFUQShpbnQpIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZzsKIFB5QVBJX0RBVEEoaW50KSBQeV9Jc29sYXRlZEZsYWc7CiAKKyNpZmRlZiBNU19XSU5ET1dTCitQeUFQSV9EQVRBKGludCkgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZzsKKyNlbmRpZgorCiAvKiB0aGlzIGlzIGEgd3JhcHBlciBhcm91bmQgZ2V0ZW52KCkgdGhhdCBwYXlzIGF0dGVudGlvbiB0bwogICAgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnLiAgSXQgc2hvdWxkIGJlIHVzZWQgZm9yIGdldHRpbmcgdmFyaWFibGVzIGxpa2UKICAgIFBZVEhPTlBBVEggYW5kIFBZVEhPTkhPTUUgZnJvbSB0aGUgZW52aXJvbm1lbnQgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkdHJhY2UuZCBiL0luY2x1ZGUvcHlkdHJhY2UuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODM2MDU1Ci0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9weWR0cmFjZS5kCkBAIC0wLDAgKzEsMTkgQEAKKy8qIFB5dGhvbiBEVHJhY2UgcHJvdmlkZXIgKi8KKworcHJvdmlkZXIgcHl0aG9uIHsKKyAgICBwcm9iZSBmdW5jdGlvbl9fZW50cnkoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisgICAgcHJvYmUgZnVuY3Rpb25fX3JldHVybihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fbmV3X19zdGFydChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgaW5zdGFuY2VfX25ld19fZG9uZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgaW5zdGFuY2VfX2RlbGV0ZV9fc3RhcnQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworICAgIHByb2JlIGluc3RhbmNlX19kZWxldGVfX2RvbmUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworICAgIHByb2JlIGxpbmUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisgICAgcHJvYmUgZ2NfX3N0YXJ0KGludCk7CisgICAgcHJvYmUgZ2NfX2RvbmUobG9uZyk7Cit9OworCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIHByb3ZpZGVyCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIG1vZHVsZQorI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBmdW5jdGlvbgorI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBuYW1lCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIGFyZ3MKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkdHJhY2UuaCBiL0luY2x1ZGUvcHlkdHJhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDBkMmUxCi0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9weWR0cmFjZS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qIFN0YXRpYyBEVHJhY2UgcHJvYmVzIGludGVyZmFjZSAqLworCisjaWZuZGVmIFB5X0RUUkFDRV9ICisjZGVmaW5lIFB5X0RUUkFDRV9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpZmRlZiBXSVRIX0RUUkFDRQorCisjaW5jbHVkZSAicHlkdHJhY2VfcHJvYmVzLmgiCisKKy8qIHB5ZHRyYWNlX3Byb2Jlcy5oLCBvbiBzeXN0ZW1zIHdpdGggRFRyYWNlLCBpcyBhdXRvLWdlbmVyYXRlZCB0byBpbmNsdWRlCisgICBgUHlEVHJhY2Vfe1BST0JFfWAgYW5kIGBQeURUcmFjZV97UFJPQkV9X0VOQUJMRUQoKWAgbWFjcm9zIGZvciBldmVyeSBwcm9iZQorICAgZGVmaW5lZCBpbiBweWR0cmFjZV9wcm92aWRlci5kLgorCisgICBDYWxsaW5nIHRoZXNlIGZ1bmN0aW9ucyBtdXN0IGJlIGd1YXJkZWQgYnkgYSBgUHlEVHJhY2Vfe1BST0JFfV9FTkFCTEVEKClgCisgICBjaGVjayB0byBtaW5pbWl6ZSBwZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiBwcm9iaW5nIGlzIG9mZi4gRm9yIGV4YW1wbGU6CisKKyAgICAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCgpKQorICAgICAgICAgICBQeURUcmFjZV9GVU5DVElPTl9FTlRSWShmKTsKKyovCisKKyNlbHNlCisKKy8qIFdpdGhvdXQgRFRyYWNlLCBjb21waWxlIHRvIG5vdGhpbmcuICovCisKK2lubGluZSB2b2lkIFB5RFRyYWNlX0xJTkUoY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpIHt9CitpbmxpbmUgdm9pZCBQeURUcmFjZV9GVU5DVElPTl9FTlRSWShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikgIHt9CitpbmxpbmUgdm9pZCBQeURUcmFjZV9GVU5DVElPTl9SRVRVUk4oY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpIHt9CitpbmxpbmUgdm9pZCBQeURUcmFjZV9HQ19TVEFSVChpbnQgYXJnMCkge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0dDX0RPTkUoaW50IGFyZzApIHt9CitpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ORVdfU1RBUlQoaW50IGFyZzApIHt9CitpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ORVdfRE9ORShpbnQgYXJnMCkge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9TVEFSVChpbnQgYXJnMCkge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9ET05FKGludCBhcmcwKSB7fQorCitpbmxpbmUgaW50IFB5RFRyYWNlX0xJTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQoraW5saW5lIGludCBQeURUcmFjZV9GVU5DVElPTl9SRVRVUk5fRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0dDX1NUQVJUX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQoraW5saW5lIGludCBQeURUcmFjZV9HQ19ET05FX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQoraW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ORVdfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQoraW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9ET05FX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorCisjZW5kaWYgLyogIVdJVEhfRFRSQUNFICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIVB5X0RUUkFDRV9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZXJyb3JzLmggYi9JbmNsdWRlL3B5ZXJyb3JzLmgKaW5kZXggMzVhZWRiNy4uMDNjZWUzZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWVycm9ycy5oCisrKyBiL0luY2x1ZGUvcHllcnJvcnMuaApAQCAtMTYwLDYgKzE2MCw3IEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfT1NFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW1wb3J0RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX01vZHVsZU5vdEZvdW5kRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0luZGV4RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0tleUVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19LZXlib2FyZEludGVycnVwdDsKQEAgLTI4Myw2ICsyODQsOSBAQAogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y1dpdGhBcmdzS3dhcmdzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgUHlPYmplY3QgKik7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgIFB5T2JqZWN0ICopOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5Z2V0b3B0LmggYi9JbmNsdWRlL3B5Z2V0b3B0LmgKaW5kZXggNDI1YzdkZC4uOTYyNzIwYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWdldG9wdC5oCisrKyBiL0luY2x1ZGUvcHlnZXRvcHQuaApAQCAtMTEsOSArMTEsOSBAQAogUHlBUElfREFUQSh3Y2hhcl90ICopIF9QeU9TX29wdGFyZzsKIAogUHlBUElfRlVOQyh2b2lkKSBfUHlPU19SZXNldEdldE9wdCh2b2lkKTsKLSNlbmRpZgogCiBQeUFQSV9GVU5DKGludCkgX1B5T1NfR2V0T3B0KGludCBhcmdjLCB3Y2hhcl90ICoqYXJndiwgd2NoYXJfdCAqb3B0c3RyaW5nKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5aGFzaC5oIGIvSW5jbHVkZS9weWhhc2guaAppbmRleCBhN2NhOTM3Li5hODE0YWY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5aGFzaC5oCisrKyBiL0luY2x1ZGUvcHloYXNoLmgKQEAgLTM2LDE0ICszNiwxNCBAQAogICogbWVtb3J5IGxheW91dCBvbiA2NCBiaXQgc3lzdGVtcwogICogICBjY2NjY2NjYyBjY2NjY2NjYyBjY2NjY2NjYyAgdWMgLS0gdW5zaWduZWQgY2hhclsyNF0KICAqICAgcHBwcHBwcHAgc3Nzc3Nzc3MgLi4uLi4uLi4gIGZudiAtLSB0d28gUHlfaGFzaF90Ci0gKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byBQWV9VSU5UNjRfVAorICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gdWludDY0X3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gc3Nzc3Nzc3MgIGRqYngzM2EgLS0gMTYgYnl0ZXMgcGFkZGluZyArIG9uZSBQeV9oYXNoX3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gZWVlZWVlZWUgIHB5ZXhwYXQgWE1MIGhhc2ggc2FsdAogICoKICAqIG1lbW9yeSBsYXlvdXQgb24gMzIgYml0IHN5c3RlbXMKICAqICAgY2NjY2NjY2MgY2NjY2NjY2MgY2NjY2NjY2MgIHVjCiAgKiAgIHBwcHBzc3NzIC4uLi4uLi4uIC4uLi4uLi4uICBmbnYgLS0gdHdvIFB5X2hhc2hfdAotICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gUFlfVUlOVDY0X1QgKCopCisgKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byB1aW50NjRfdCAoKikKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gc3Nzcy4uLi4gIGRqYngzM2EgLS0gMTYgYnl0ZXMgcGFkZGluZyArIG9uZSBQeV9oYXNoX3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gZWVlZS4uLi4gIHB5ZXhwYXQgWE1MIGhhc2ggc2FsdAogICoKQEAgLTU5LDEzICs1OSwxMSBAQAogICAgICAgICBQeV9oYXNoX3QgcHJlZml4OwogICAgICAgICBQeV9oYXNoX3Qgc3VmZml4OwogICAgIH0gZm52OwotI2lmZGVmIFBZX1VJTlQ2NF9UCiAgICAgLyogdHdvIHVpbnQ2NCBmb3IgU2lwSGFzaDI0ICovCiAgICAgc3RydWN0IHsKLSAgICAgICAgUFlfVUlOVDY0X1QgazA7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIGsxOworICAgICAgICB1aW50NjRfdCBrMDsKKyAgICAgICAgdWludDY0X3QgazE7CiAgICAgfSBzaXBoYXNoOwotI2VuZGlmCiAgICAgLyogYSBkaWZmZXJlbnQgKCEpIFB5X2hhc2hfdCBmb3Igc21hbGwgc3RyaW5nIG9wdGltaXphdGlvbiAqLwogICAgIHN0cnVjdCB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZ1sxNl07CkBAIC0xMjEsOCArMTE5LDcgQEAKICAqIGNvbmZpZ3VyZSBzY3JpcHQuCiAgKgogICogLSBGTlYgaXMgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGFyY2hpdGVjdHVyZXMuCi0gKiAtIFNJUEhBU0gyNCBvbmx5IHdvcmtzIG9uIHBsYWZvcm1zIHRoYXQgcHJvdmlkZSBQWV9VSU5UNjRfVCBhbmQgZG9lc24ndAotICogICByZXF1aXJlIGFsaWduZWQgbWVtb3J5IGZvciBpbnRlZ2Vycy4KKyAqIC0gU0lQSEFTSDI0IG9ubHkgd29ya3Mgb24gcGxhZm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFsaWduZWQgbWVtb3J5IGZvciBpbnRlZ2Vycy4KICAqIC0gV2l0aCBFWFRFUk5BTCBlbWJlZGRlcnMgY2FuIHByb3ZpZGUgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gd2l0aDo6CiAgKgogICogICAgIFB5SGFzaF9GdW5jRGVmIFB5SGFzaF9GdW5jID0gey4uLn07CkBAIC0xMzQsOCArMTMxLDcgQEAKICNkZWZpbmUgUHlfSEFTSF9GTlYgMgogCiAjaWZuZGVmIFB5X0hBU0hfQUxHT1JJVEhNCi0jICBpZiAoZGVmaW5lZChQWV9VSU5UNjRfVCkgJiYgZGVmaW5lZChQWV9VSU5UMzJfVCkgXAotICAgICAgICYmICFkZWZpbmVkKEhBVkVfQUxJR05FRF9SRVFVSVJFRCkpCisjICBpZm5kZWYgSEFWRV9BTElHTkVEX1JFUVVJUkVECiAjICAgIGRlZmluZSBQeV9IQVNIX0FMR09SSVRITSBQeV9IQVNIX1NJUEhBU0gyNAogIyAgZWxzZQogIyAgICBkZWZpbmUgUHlfSEFTSF9BTEdPUklUSE0gUHlfSEFTSF9GTlYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlsaWZlY3ljbGUuaCBiL0luY2x1ZGUvcHlsaWZlY3ljbGUuaAppbmRleCBjY2RlYmUyLi41YTY3NjY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKKysrIGIvSW5jbHVkZS9weWxpZmVjeWNsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnQsIGludCk7CiAjZW5kaWYKIFB5QVBJX0ZVTkModm9pZCkgUHlfRmluYWxpemUodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlfRmluYWxpemVFeCh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5X05ld0ludGVycHJldGVyKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICopOwpAQCAtMTA2LDYgKzEwNyw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5U2xpY2VfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5VHlwZV9GaW5pKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlSYW5kb21fRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlBc3luY0dlbl9GaW5pKHZvaWQpOwogCiBQeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7CiAjZW5kaWYKQEAgLTExNSw4ICsxMTcsMTEgQEAKIFB5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1NfZ2V0c2lnKGludCk7CiBQeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX3NldHNpZyhpbnQsIFB5T1Nfc2lnaGFuZGxlcl90KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmFuZG9tICovCi1QeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbSAodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb21Ob25ibG9jayh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hY3JvLmggYi9JbmNsdWRlL3B5bWFjcm8uaAppbmRleCAzZjZmNWRjLi4yYTgzOWFiIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWFjcm8uaAorKysgYi9JbmNsdWRlL3B5bWFjcm8uaApAQCAtMTgsNiArMTgsOSBAQAogICAgYnkgIl9fTElORV9fIi4gKi8KICNkZWZpbmUgUHlfU1RSSU5HSUZZKHgpIF9QeV9YU1RSSU5HSUZZKHgpCiAKKy8qIEdldCB0aGUgc2l6ZSBvZiBhIHN0cnVjdHVyZSBtZW1iZXIgaW4gYnl0ZXMgKi8KKyNkZWZpbmUgUHlfTUVNQkVSX1NJWkUodHlwZSwgbWVtYmVyKSBzaXplb2YoKCh0eXBlICopMCktPm1lbWJlcikKKwogLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLwogI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQogCkBAIC0zNiw2ICszOSwxMCBAQAogI2RlZmluZSBQeV9CVUlMRF9BU1NFUlRfRVhQUihjb25kKSBcCiAgICAgKHNpemVvZihjaGFyIFsxIC0gMiohKGNvbmQpXSkgLSAxKQogCisjZGVmaW5lIFB5X0JVSUxEX0FTU0VSVChjb25kKSAgZG8geyAgICAgICAgIFwKKyAgICAgICAgKHZvaWQpUHlfQlVJTERfQVNTRVJUX0VYUFIoY29uZCk7ICAgXAorICAgIH0gd2hpbGUoMCkKKwogLyogR2V0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB2aXNpYmxlIGFycmF5CiAKICAgIFRoaXMgZG9lcyBub3Qgd29yayBvbiBwb2ludGVycywgb3IgYXJyYXlzIGRlY2xhcmVkIGFzIFtdLCBvciBmdW5jdGlvbgpAQCAtNzUsMTIgKzgyLDEyIEBACiAjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX1VQKG4sIGEpICgoKHNpemVfdCkobikgKyBcCiAgICAgICAgIChzaXplX3QpKChhKSAtIDEpKSAmIH4oc2l6ZV90KSgoYSkgLSAxKSkKIC8qIFJvdW5kIHBvaW50ZXIgInAiIGRvd24gdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA8PSAicCIuICovCi0jZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgoUHlfdWludHB0cl90KShwKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgodWludHB0cl90KShwKSAmIH4odWludHB0cl90KSgoYSkgLSAxKSkpCiAvKiBSb3VuZCBwb2ludGVyICJwIiB1cCB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzID49ICJwIi4gKi8KLSNkZWZpbmUgX1B5X0FMSUdOX1VQKHAsIGEpICgodm9pZCAqKSgoKFB5X3VpbnRwdHJfdCkocCkgKyBcCi0gICAgICAgIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9BTElHTl9VUChwLCBhKSAoKHZvaWQgKikoKCh1aW50cHRyX3QpKHApICsgXAorICAgICAgICAodWludHB0cl90KSgoYSkgLSAxKSkgJiB+KHVpbnRwdHJfdCkoKGEpIC0gMSkpKQogLyogQ2hlY2sgaWYgcG9pbnRlciAicCIgaXMgYWxpZ25lZCB0byAiYSItYnl0ZXMgYm91bmRhcnkuICovCi0jZGVmaW5lIF9QeV9JU19BTElHTkVEKHAsIGEpICghKChQeV91aW50cHRyX3QpKHApICYgKFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorI2RlZmluZSBfUHlfSVNfQUxJR05FRChwLCBhKSAoISgodWludHB0cl90KShwKSAmICh1aW50cHRyX3QpKChhKSAtIDEpKSkKIAogI2lmZGVmIF9fR05VQ19fCiAjZGVmaW5lIFB5X1VOVVNFRChuYW1lKSBfdW51c2VkXyAjIyBuYW1lIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWF0aC5oIGIvSW5jbHVkZS9weW1hdGguaAppbmRleCAxYzhkNzE4Li43MjE2YTA5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWF0aC5oCisrKyBiL0luY2x1ZGUvcHltYXRoLmgKQEAgLTU1LDYgKzU1LDEyIEBACiAjZGVmaW5lIFB5X01BVEhfRSAyLjcxODI4MTgyODQ1OTA0NTIzNTQKICNlbmRpZgogCisvKiBUYXUgKDJwaSkgdG8gNDAgZGlnaXRzLCB0YWtlbiBmcm9tIHRhdWRheS5jb20vdGF1LWRpZ2l0cy4gKi8KKyNpZm5kZWYgUHlfTUFUSF9UQVUKKyNkZWZpbmUgUHlfTUFUSF9UQVUgNi4yODMxODUzMDcxNzk1ODY0NzY5MjUyODY3NjY1NTkwMDU3NjgzOTQzTAorI2VuZGlmCisKKwogLyogT24geDg2LCBQeV9GT1JDRV9ET1VCTEUgZm9yY2VzIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIG91dCBvZiBhbiB4ODcgRlBVCiAgICByZWdpc3RlciBhbmQgaW50byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24sIHJvdW5kaW5nIGZyb20gZXh0ZW5kZWQKICAgIHByZWNpc2lvbiB0byBkb3VibGUgcHJlY2lzaW9uIGluIHRoZSBwcm9jZXNzLiAgT24gb3RoZXIgcGxhdGZvcm1zIGl0IGRvZXMKQEAgLTE2OSw3ICsxNzUsNyBAQAogICAgICAgICAjcHJhZ21hIGZsb2F0X2NvbnRyb2wgKHBvcCkKICAgICAgICAgI2RlZmluZSBQeV9OQU4gX19pY2NfbmFuKCkKICAgICAjZWxzZSAvKiBJQ0NfTkFOX1JFTEFYRUQgYXMgZGVmYXVsdCBmb3IgSW50ZWwgQ29tcGlsZXIgKi8KLSAgICAgICAgc3RhdGljIHVuaW9uIHsgdW5zaWduZWQgY2hhciBidWZbOF07IGRvdWJsZSBfX2ljY19uYW47IH0gX19uYW5fc3RvcmUgPSB7MCwwLDAsMCwwLDAsMHhmOCwweDdmfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuaW9uIHsgdW5zaWduZWQgY2hhciBidWZbOF07IGRvdWJsZSBfX2ljY19uYW47IH0gX19uYW5fc3RvcmUgPSB7MCwwLDAsMCwwLDAsMHhmOCwweDdmfTsKICAgICAgICAgI2RlZmluZSBQeV9OQU4gKF9fbmFuX3N0b3JlLl9faWNjX25hbikKICAgICAjZW5kaWYgLyogSUNDX05BTl9TVFJJQ1QgKi8KICNlbmRpZiAvKiBfX0lOVEVMX0NPTVBJTEVSICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWVtLmggYi9JbmNsdWRlL3B5bWVtLmgKaW5kZXggMDQzZGI2NC4uY2U2M2JmOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1lbS5oCisrKyBiL0luY2x1ZGUvcHltZW0uaApAQCAtMTYsOCArMTYsNTEgQEAKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdDYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdSZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlNZW1fUmF3RnJlZSh2b2lkICpwdHIpOworCisvKiBDb25maWd1cmUgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycy4gUGFzcyBOVUxMIHRvIHVzZSBkZWZhdWx0CisgICBhbGxvY2F0b3JzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoY29uc3QgY2hhciAqb3B0KTsKKworI2lmZGVmIFdJVEhfUFlNQUxMT0MKK1B5QVBJX0ZVTkMoaW50KSBfUHlNZW1fUHltYWxsb2NFbmFibGVkKHZvaWQpOwogI2VuZGlmCiAKKy8qIElkZW50aWZpZXIgb2YgYW4gYWRkcmVzcyBzcGFjZSAoZG9tYWluKSBpbiB0cmFjZW1hbGxvYyAqLwordHlwZWRlZiB1bnNpZ25lZCBpbnQgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3Q7CisKKy8qIFRyYWNrIGFuIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2sgaW4gdGhlIHRyYWNlbWFsbG9jIG1vZHVsZS4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJldHVybiAtMSBvbiBlcnJvciAoZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSB0byBzdG9yZQorICAgdGhlIHRyYWNlKS4KKworICAgUmV0dXJuIC0yIGlmIHRyYWNlbWFsbG9jIGlzIGRpc2FibGVkLgorCisgICBJZiBtZW1vcnkgYmxvY2sgaXMgYWxyZWFkeSB0cmFja2VkLCB1cGRhdGUgdGhlIGV4aXN0aW5nIHRyYWNlLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRyYWNlTWFsbG9jX1RyYWNrKAorICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwKKyAgICB1aW50cHRyX3QgcHRyLAorICAgIHNpemVfdCBzaXplKTsKKworLyogVW50cmFjayBhbiBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrIGluIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUuCisgICBEbyBub3RoaW5nIGlmIHRoZSBibG9jayB3YXMgbm90IHRyYWNrZWQuCisKKyAgIFJldHVybiAtMiBpZiB0cmFjZW1hbGxvYyBpcyBkaXNhYmxlZCwgb3RoZXJ3aXNlIHJldHVybiAwLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRyYWNlTWFsbG9jX1VudHJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIpOworCisvKiBHZXQgdGhlIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMgYWxsb2NhdGVkLgorCisgICBSZXR1cm4gYSB0dXBsZSBvZiAoZmlsZW5hbWU6IHN0ciwgbGluZW5vOiBpbnQpIHR1cGxlcy4KKworICAgUmV0dXJuIE5vbmUgaWYgdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBpcyBkaXNhYmxlZCBvciBpZiB0aGUgbWVtb3J5IGJsb2NrCisgICBpcyBub3QgdHJhY2tlZCBieSB0cmFjZW1hbGxvYy4KKworICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlUcmFjZU1hbGxvY19HZXRUcmFjZWJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIpOworI2VuZGlmICAgLyogIVB5X0xJTUlURURfQVBJICovCisKIAogLyogQkVXQVJFOgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5cG9ydC5oIGIvSW5jbHVkZS9weXBvcnQuaAppbmRleCBiYTQ5MjIxLi5iZTFkNjZkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5cG9ydC5oCisrKyBiL0luY2x1ZGUvcHlwb3J0LmgKQEAgLTMsMTUgKzMsNyBAQAogCiAjaW5jbHVkZSAicHljb25maWcuaCIgLyogaW5jbHVkZSBmb3IgZGVmaW5lcyAqLwogCi0vKiBTb21lIHZlcnNpb25zIG9mIEhQLVVYICYgU29sYXJpcyBuZWVkIGludHR5cGVzLmggZm9yIGludDMyX3QsCi0gICBJTlQzMl9NQVgsIGV0Yy4gKi8KLSNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1NURElOVF9ICi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jZW5kaWYKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBTeW1ib2xzIGFuZCBtYWNyb3MgdG8gc3VwcGx5IHBsYXRmb3JtLWluZGVwZW5kZW50IGludGVyZmFjZXMgdG8gYmFzaWMKQEAgLTMxLDE0ICsyMyw2IEBACiBNZWFuaW5nOiAgRXh0cmEgY2hlY2tzIGNvbXBpbGVkIGluIGZvciBkZWJ1ZyBtb2RlLgogVXNlZCBpbjogIFB5X1NBRkVfRE9XTkNBU1QKIAotSEFWRV9VSU5UUFRSX1QKLU1lYW5pbmc6ICBUaGUgQzlYIHR5cGUgdWludHB0cl90IGlzIHN1cHBvcnRlZCBieSB0aGUgY29tcGlsZXIKLVVzZWQgaW46ICBQeV91aW50cHRyX3QKLQotSEFWRV9MT05HX0xPTkcKLU1lYW5pbmc6ICBUaGUgY29tcGlsZXIgc3VwcG9ydHMgdGhlIEMgdHlwZSAibG9uZyBsb25nIgotVXNlZCBpbjogIFBZX0xPTkdfTE9ORwotCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogdHlwZWRlZnMgZm9yIHNvbWUgQzlYLWRlZmluZWQgc3lub255bXMgZm9yIGludGVncmFsIHR5cGVzLgpAQCAtNTMsOTEgKzM3LDI3IEBACiAgKiBpbnRlZ3JhbCBzeW5vbnltcy4gIE9ubHkgZGVmaW5lIHRoZSBvbmVzIHdlIGFjdHVhbGx5IG5lZWQuCiAgKi8KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjaWZuZGVmIFBZX0xPTkdfTE9ORwogI2RlZmluZSBQWV9MT05HX0xPTkcgbG9uZyBsb25nCi0jaWYgZGVmaW5lZChMTE9OR19NQVgpCiAvKiBJZiBMTE9OR19NQVggaXMgZGVmaW5lZCBpbiBsaW1pdHMuaCwgdXNlIHRoYXQuICovCiAjZGVmaW5lIFBZX0xMT05HX01JTiBMTE9OR19NSU4KICNkZWZpbmUgUFlfTExPTkdfTUFYIExMT05HX01BWAogI2RlZmluZSBQWV9VTExPTkdfTUFYIFVMTE9OR19NQVgKLSNlbGlmIGRlZmluZWQoX19MT05HX0xPTkdfTUFYX18pCi0vKiBPdGhlcndpc2UsIGlmIEdDQyBoYXMgYSBidWlsdGluIGRlZmluZSwgdXNlIHRoYXQuICAoRGVmaW5pdGlvbiBvZgotICogUFlfTExPTkdfTUlOIGFzc3VtZXMgdHdvJ3MgY29tcGxlbWVudCB3aXRoIG5vIHRyYXAgcmVwcmVzZW50YXRpb24uKSAqLwotI2RlZmluZSBQWV9MTE9OR19NQVggX19MT05HX0xPTkdfTUFYX18KLSNkZWZpbmUgUFlfTExPTkdfTUlOICgtUFlfTExPTkdfTUFYIC0gMSkKLSNkZWZpbmUgUFlfVUxMT05HX01BWCAoUFlfTExPTkdfTUFYICogUHlfVUxMKDIpICsgMSkKLSNlbGlmIGRlZmluZWQoU0laRU9GX0xPTkdfTE9ORykKLS8qIE90aGVyd2lzZSBjb21wdXRlIGZyb20gU0laRU9GX0xPTkdfTE9ORywgYXNzdW1pbmcgdHdvJ3MgY29tcGxlbWVudCwgbm8KLSAgIHBhZGRpbmcgYml0cywgYW5kIG5vIHRyYXAgcmVwcmVzZW50YXRpb24uICBOb3RlOiBQWV9VTExPTkdfTUFYIHdhcwotICAgcHJldmlvdXNseSAjZGVmaW5lZCBhcyAofjBVTEwpIGhlcmU7IGJ1dCB0aGF0J2xsIGdpdmUgdGhlIHdyb25nIHZhbHVlIGluIGEKLSAgIHByZXByb2Nlc3NvciBleHByZXNzaW9uIG9uIHN5c3RlbXMgd2hlcmUgbG9uZyBsb25nICE9IGludG1heF90LiAqLwotI2RlZmluZSBQWV9MTE9OR19NQVggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgxICsgMiAqICgoUHlfTEwoMSkgPDwgKENIQVJfQklUICogU0laRU9GX0xPTkdfTE9ORyAtIDIpKSAtIDEpKQotI2RlZmluZSBQWV9MTE9OR19NSU4gKC1QWV9MTE9OR19NQVggLSAxKQotI2RlZmluZSBQWV9VTExPTkdfTUFYIChQWV9MTE9OR19NQVggKiBQeV9VTEwoMikgKyAxKQotI2VuZGlmIC8qIExMT05HX01BWCAqLwotI2VuZGlmCi0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KLQotLyogYSBidWlsZCB3aXRoIDMwLWJpdCBkaWdpdHMgZm9yIFB5dGhvbiBpbnRlZ2VycyBuZWVkcyBhbiBleGFjdC13aWR0aAotICogMzItYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZSB0byBzdG9yZSB0aG9zZSBkaWdpdHMuICAoV2UgY291bGQganVzdCB1c2UKLSAqIHR5cGUgJ3Vuc2lnbmVkIGxvbmcnLCBidXQgdGhhdCB3b3VsZCBiZSB3YXN0ZWZ1bCBvbiBhIHN5c3RlbSB3aGVyZSBsb25ncwotICogYXJlIDY0LWJpdHMuKSAgT24gVW5peCBzeXN0ZW1zLCB0aGUgYXV0b2NvbmYgbWFjcm8gQUNfVFlQRV9VSU5UMzJfVCBkZWZpbmVzCi0gKiB1aW50MzJfdCB0byBiZSBzdWNoIGEgdHlwZSB1bmxlc3Mgc3RkaW50Lmggb3IgaW50dHlwZXMuaCBkZWZpbmVzIHVpbnQzMl90LgotICogSG93ZXZlciwgaXQgZG9lc24ndCBzZXQgSEFWRV9VSU5UMzJfVCwgc28gd2UgZG8gdGhhdCBoZXJlLgotICovCi0jaWZkZWYgdWludDMyX3QKLSNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxCiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfVUlOVDMyX1QKLSNpZm5kZWYgUFlfVUlOVDMyX1QKICNkZWZpbmUgUFlfVUlOVDMyX1QgdWludDMyX3QKLSNlbmRpZgotI2VuZGlmCi0KLS8qIE1hY3JvcyBmb3IgYSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlciB0eXBlOyB1c2VkIGZvciB0eXBlICd0d29kaWdpdHMnIGluIHRoZQotICogaW50ZWdlciBpbXBsZW1lbnRhdGlvbiwgd2hlbiAzMC1iaXQgZGlnaXRzIGFyZSBlbmFibGVkLgotICovCi0jaWZkZWYgdWludDY0X3QKLSNkZWZpbmUgSEFWRV9VSU5UNjRfVCAxCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfVUlOVDY0X1QKLSNpZm5kZWYgUFlfVUlOVDY0X1QKICNkZWZpbmUgUFlfVUlOVDY0X1QgdWludDY0X3QKLSNlbmRpZgotI2VuZGlmCiAKIC8qIFNpZ25lZCB2YXJpYW50cyBvZiB0aGUgYWJvdmUgKi8KLSNpZmRlZiBpbnQzMl90Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfSU5UMzJfVAotI2lmbmRlZiBQWV9JTlQzMl9UCiAjZGVmaW5lIFBZX0lOVDMyX1QgaW50MzJfdAotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIGludDY0X3QKLSNkZWZpbmUgSEFWRV9JTlQ2NF9UIDEKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9JTlQ2NF9UCi0jaWZuZGVmIFBZX0lOVDY0X1QKICNkZWZpbmUgUFlfSU5UNjRfVCBpbnQ2NF90Ci0jZW5kaWYKLSNlbmRpZgogCiAvKiBJZiBQWUxPTkdfQklUU19JTl9ESUdJVCBpcyBub3QgZGVmaW5lZCB0aGVuIHdlJ2xsIHVzZSAzMC1iaXQgZGlnaXRzIGlmIGFsbAogICAgdGhlIG5lY2Vzc2FyeSBpbnRlZ2VyIHR5cGVzIGFyZSBhdmFpbGFibGUsIGFuZCB3ZSdyZSBvbiBhIDY0LWJpdCBwbGF0Zm9ybQogICAgKGFzIGRldGVybWluZWQgYnkgU0laRU9GX1ZPSURfUCk7IG90aGVyd2lzZSB3ZSB1c2UgMTUtYml0IGRpZ2l0cy4gKi8KIAogI2lmbmRlZiBQWUxPTkdfQklUU19JTl9ESUdJVAotI2lmIChkZWZpbmVkIEhBVkVfVUlOVDY0X1QgJiYgZGVmaW5lZCBIQVZFX0lOVDY0X1QgJiYgXAotICAgICBkZWZpbmVkIEhBVkVfVUlOVDMyX1QgJiYgZGVmaW5lZCBIQVZFX0lOVDMyX1QgJiYgU0laRU9GX1ZPSURfUCA+PSA4KQorI2lmIFNJWkVPRl9WT0lEX1AgPj0gOAogI2RlZmluZSBQWUxPTkdfQklUU19JTl9ESUdJVCAzMAogI2Vsc2UKICNkZWZpbmUgUFlMT05HX0JJVFNfSU5fRElHSVQgMTUKQEAgLTE0OSwyNiArNjksOSBAQAogICogd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLiAgU2ltaWxhcmx5IGZvciBpbnRwdHJfdCwgd3J0IGEgc2lnbmVkCiAgKiBpbnRlZ3JhbCB0eXBlLgogICovCi0jaWZkZWYgSEFWRV9VSU5UUFRSX1QKIHR5cGVkZWYgdWludHB0cl90ICAgICAgIFB5X3VpbnRwdHJfdDsKIHR5cGVkZWYgaW50cHRyX3QgICAgICAgIFB5X2ludHB0cl90OwogCi0jZWxpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9JTlQKLXR5cGVkZWYgdW5zaWduZWQgaW50ICAgIFB5X3VpbnRwdHJfdDsKLXR5cGVkZWYgaW50ICAgICAgICAgICAgIFB5X2ludHB0cl90OwotCi0jZWxpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICBQeV91aW50cHRyX3Q7Ci10eXBlZGVmIGxvbmcgICAgICAgICAgICBQeV9pbnRwdHJfdDsKLQotI2VsaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgKFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkdfTE9ORykKLXR5cGVkZWYgdW5zaWduZWQgUFlfTE9OR19MT05HICAgUHlfdWludHB0cl90OwotdHlwZWRlZiBQWV9MT05HX0xPTkcgICAgICAgICAgICBQeV9pbnRwdHJfdDsKLQotI2Vsc2UKLSMgICBlcnJvciAiUHl0aG9uIG5lZWRzIGEgdHlwZWRlZiBmb3IgUHlfdWludHB0cl90IGluIHB5cG9ydC5oLiIKLSNlbmRpZiAvKiBIQVZFX1VJTlRQVFJfVCAqLwotCiAvKiBQeV9zc2l6ZV90IGlzIGEgc2lnbmVkIGludGVncmFsIHR5cGUgc3VjaCB0aGF0IHNpemVvZihQeV9zc2l6ZV90KSA9PQogICogc2l6ZW9mKHNpemVfdCkuICBDOTkgZG9lc24ndCBkZWZpbmUgc3VjaCBhIHRoaW5nIGRpcmVjdGx5IChzaXplX3QgaXMgYW4KICAqIHVuc2lnbmVkIGludGVncmFsIHR5cGUpLiAgU2VlIFBFUCAzNTMgZm9yIGRldGFpbHMuCkBAIC0xOTUsMTYgKzk4LDggQEAKIHR5cGVkZWYgaW50IFB5X3NzaXplX2NsZWFuX3Q7CiAjZW5kaWYKIAotLyogTGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSBvZiBzaXplX3QuCi0gICBTSVpFX01BWCBpcyBwYXJ0IG9mIEM5OSwgc28gaXQgbWlnaHQgYmUgZGVmaW5lZCBvbiBzb21lCi0gICBwbGF0Zm9ybXMuIElmIGl0IGlzIG5vdCBkZWZpbmVkLCAoc2l6ZV90KS0xIGlzIGEgcG9ydGFibGUKLSAgIGRlZmluaXRpb24gZm9yIEM4OSwgZHVlIHRvIHRoZSB3YXkgc2lnbmVkLT51bnNpZ25lZAotICAgY29udmVyc2lvbiBpcyBkZWZpbmVkLiAqLwotI2lmZGVmIFNJWkVfTUFYCisvKiBMYXJnZXN0IHBvc3NpYmxlIHZhbHVlIG9mIHNpemVfdC4gKi8KICNkZWZpbmUgUFlfU0laRV9NQVggU0laRV9NQVgKLSNlbHNlCi0jZGVmaW5lIFBZX1NJWkVfTUFYICgoc2l6ZV90KS0xKQotI2VuZGlmCiAKIC8qIExhcmdlc3QgcG9zaXRpdmUgdmFsdWUgb2YgdHlwZSBQeV9zc2l6ZV90LiAqLwogI2RlZmluZSBQWV9TU0laRV9UX01BWCAoKFB5X3NzaXplX3QpKCgoc2l6ZV90KS0xKT4+MSkpCkBAIC0yNDcsMjIgKzE0Miw2IEBACiAjICAgZW5kaWYKICNlbmRpZgogCi0vKiBQWV9GT1JNQVRfTE9OR19MT05HIGlzIGFuYWxvZ291cyB0byBQWV9GT1JNQVRfU0laRV9UIGFib3ZlLCBidXQgZm9yCi0gKiB0aGUgbG9uZyBsb25nIHR5cGUgaW5zdGVhZCBvZiB0aGUgc2l6ZV90IHR5cGUuICBJdCdzIG9ubHkgYXZhaWxhYmxlCi0gKiB3aGVuIEhBVkVfTE9OR19MT05HIGlzIGRlZmluZWQuIFRoZSAiaGlnaCBsZXZlbCIgUHl0aG9uIGZvcm1hdAotICogZnVuY3Rpb25zIGxpc3RlZCBhYm92ZSB3aWxsIGludGVycHJldCAibGxkIiBvciAibGx1IiBjb3JyZWN0bHkgb24KLSAqIGFsbCBwbGF0Zm9ybXMuCi0gKi8KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGlmbmRlZiBQWV9GT1JNQVRfTE9OR19MT05HCi0jICAgICAgIGlmZGVmIE1TX1dJTkRPV1MKLSMgICAgICAgICAgIGRlZmluZSBQWV9GT1JNQVRfTE9OR19MT05HICJJNjQiCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGVycm9yICJUaGlzIHBsYXRmb3JtJ3MgcHljb25maWcuaCBuZWVkcyB0byBkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyIKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotI2VuZGlmCi0KIC8qIFB5X0xPQ0FMIGNhbiBiZSB1c2VkIGluc3RlYWQgb2Ygc3RhdGljIHRvIGdldCB0aGUgZmFzdGVzdCBwb3NzaWJsZSBjYWxsaW5nCiAgKiBjb252ZW50aW9uIGZvciBmdW5jdGlvbnMgdGhhdCBhcmUgbG9jYWwgdG8gYSBnaXZlbiBtb2R1bGUuCiAgKgpAQCAtMjk4LDI2ICsxNzcsOSBAQAogI2RlZmluZSBQeV9MT0NBTF9JTkxJTkUodHlwZSkgc3RhdGljIHR5cGUKICNlbmRpZgogCi0vKiBQeV9NRU1DUFkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBtZW1jcHkgaW4gY2FzZXMgd2hlcmUgdGhlIGNvcGllZCBibG9ja3MKLSAqIGFyZSBvZnRlbiB2ZXJ5IHNob3J0LiAgV2hpbGUgbW9zdCBwbGF0Zm9ybXMgaGF2ZSBoaWdobHkgb3B0aW1pemVkIGNvZGUgZm9yCi0gKiBsYXJnZSB0cmFuc2ZlcnMsIHRoZSBzZXR1cCBjb3N0cyBmb3IgbWVtY3B5IGFyZSBvZnRlbiBxdWl0ZSBoaWdoLiAgTUVNQ1BZCi0gKiBzb2x2ZXMgdGhpcyBieSBkb2luZyBzaG9ydCBjb3BpZXMgImluIGxpbmUiLgotICovCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotI2RlZmluZSBQeV9NRU1DUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzaXplX3QgaV8sIG5fID0gKGxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjaGFyICp0XyA9ICh2b2lkKikgKHRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjb25zdCBjaGFyICpzXyA9ICh2b2lkKikgKHNvdXJjZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAobl8gPj0gMTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbWVtY3B5KHRfLCBzXywgbl8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZm9yIChpXyA9IDA7IGlfIDwgbl87IGlfKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHRfW2lfXSA9IHNfW2lfXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKDApCi0jZWxzZQorLyogUHlfTUVNQ1BZIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LAorICogc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjgxMjYgKi8KICNkZWZpbmUgUHlfTUVNQ1BZIG1lbWNweQotI2VuZGlmCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIApAQCAtNTcwLDE4ICs0MzIsMTggQEAKICNkZWZpbmUgSEFWRV9QWV9TRVRfNTNCSVRfUFJFQ0lTSU9OIDEKICNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fSEVBREVSIFwKICAgdW5zaWduZWQgaW50IG9sZF9mcGNyLCBuZXdfZnBjcgotI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9TVEFSVAkJCQkJXAotICBkbyB7CQkJCQkJCQkJXAotICAgIF9fYXNtX18gKCJmbW92ZS5sICUlZnBjciwlMCIgOiAiPWciIChvbGRfZnBjcikpOwkJCVwKLSAgICAvKiBTZXQgZG91YmxlIHByZWNpc2lvbiAvIHJvdW5kIHRvIG5lYXJlc3QuICAqLwkJCVwKLSAgICBuZXdfZnBjciA9IChvbGRfZnBjciAmIH4weGYwKSB8IDB4ODA7CQkJCVwKLSAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpCQkJCQkJXAotICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChuZXdfZnBjcikpOwlcCisjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX1NUQVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX19hc21fXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKG9sZF9mcGNyKSk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogU2V0IGRvdWJsZSBwcmVjaXNpb24gLyByb3VuZCB0byBuZWFyZXN0LiAgKi8gICAgICAgICAgICAgICAgICAgICBcCisgICAgbmV3X2ZwY3IgPSAob2xkX2ZwY3IgJiB+MHhmMCkgfCAweDgwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG5ld19mcGNyKSk7ICAgICAgICBcCiAgIH0gd2hpbGUgKDApCi0jZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0VORAkJCQkJXAotICBkbyB7CQkJCQkJCQkJXAotICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikJCQkJCQlcCi0gICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG9sZF9mcGNyKSk7CVwKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAob2xkX2ZwY3IpKTsgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKICNlbmRpZgogCkBAIC04NjMsNyArNzI1LDcgQEAKICNlbmRpZgogCiAjaWZkZWYgVkFfTElTVF9JU19BUlJBWQotI2RlZmluZSBQeV9WQV9DT1BZKHgsIHkpIFB5X01FTUNQWSgoeCksICh5KSwgc2l6ZW9mKHZhX2xpc3QpKQorI2RlZmluZSBQeV9WQV9DT1BZKHgsIHkpIG1lbWNweSgoeCksICh5KSwgc2l6ZW9mKHZhX2xpc3QpKQogI2Vsc2UKICNpZmRlZiBfX3ZhX2NvcHkKICNkZWZpbmUgUHlfVkFfQ09QWSBfX3ZhX2NvcHkKQEAgLTkwNiw0ICs3NjgsOCBAQAogI2VuZGlmIC8qIF9NU0NfVkVSID49IDE5MDAgKi8KICNlbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCiAKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CisjZW5kaWYKKwogI2VuZGlmIC8qIFB5X1BZUE9SVF9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RhdGUuaCBiL0luY2x1ZGUvcHlzdGF0ZS5oCmluZGV4IDA0OTlhNzQuLmFmYzNjMGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdGF0ZS5oCisrKyBiL0luY2x1ZGUvcHlzdGF0ZS5oCkBAIC04LDE0ICs4LDIxIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisvKiBUaGlzIGxpbWl0YXRpb24gaXMgZm9yIHBlcmZvcm1hbmNlIGFuZCBzaW1wbGljaXR5LiBJZiBuZWVkZWQgaXQgY2FuIGJlCityZW1vdmVkICh3aXRoIGVmZm9ydCkuICovCisjZGVmaW5lIE1BWF9DT19FWFRSQV9VU0VSUyAyNTUKKwogLyogU3RhdGUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcyAqLwogCiBzdHJ1Y3QgX3RzOyAvKiBGb3J3YXJkICovCiBzdHJ1Y3QgX2lzOyAvKiBGb3J3YXJkICovCitzdHJ1Y3QgX2ZyYW1lOyAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBQeUZyYW1lT2JqZWN0LiAqLwogCiAjaWZkZWYgUHlfTElNSVRFRF9BUEkKIHR5cGVkZWYgc3RydWN0IF9pcyBQeUludGVycHJldGVyU3RhdGU7CiAjZWxzZQordHlwZWRlZiBQeU9iamVjdCogKCpfUHlGcmFtZUV2YWxGdW5jdGlvbikoc3RydWN0IF9mcmFtZSAqLCBpbnQpOworCiB0eXBlZGVmIHN0cnVjdCBfaXMgewogCiAgICAgc3RydWN0IF9pcyAqbmV4dDsKQEAgLTM2LDE5ICs0MywxNyBAQAogI2lmZGVmIEhBVkVfRExPUEVOCiAgICAgaW50IGRsb3BlbmZsYWdzOwogI2VuZGlmCi0jaWZkZWYgV0lUSF9UU0MKLSAgICBpbnQgdHNjZHVtcDsKLSNlbmRpZgogCiAgICAgUHlPYmplY3QgKmJ1aWx0aW5zX2NvcHk7CisgICAgUHlPYmplY3QgKmltcG9ydF9mdW5jOworICAgIC8qIEluaXRpYWxpemVkIHRvIFB5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KCkuICovCisgICAgX1B5RnJhbWVFdmFsRnVuY3Rpb24gZXZhbF9mcmFtZTsKIH0gUHlJbnRlcnByZXRlclN0YXRlOwogI2VuZGlmCiAKIAogLyogU3RhdGUgdW5pcXVlIHBlciB0aHJlYWQgKi8KIAotc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KLQogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUHlfdHJhY2VmdW5jIHJldHVybiAtMSB3aGVuIHJhaXNpbmcgYW4gZXhjZXB0aW9uLCBvciAwIGZvciBzdWNjZXNzLiAqLwogdHlwZWRlZiBpbnQgKCpQeV90cmFjZWZ1bmMpKFB5T2JqZWN0ICosIHN0cnVjdCBfZnJhbWUgKiwgaW50LCBQeU9iamVjdCAqKTsKQEAgLTEzNyw2ICsxNDIsMTIgQEAKICAgICBQeU9iamVjdCAqY29yb3V0aW5lX3dyYXBwZXI7CiAgICAgaW50IGluX2Nvcm91dGluZV93cmFwcGVyOwogCisgICAgUHlfc3NpemVfdCBjb19leHRyYV91c2VyX2NvdW50OworICAgIGZyZWVmdW5jIGNvX2V4dHJhX2ZyZWVmdW5jc1tNQVhfQ09fRVhUUkFfVVNFUlNdOworCisgICAgUHlPYmplY3QgKmFzeW5jX2dlbl9maXJzdGl0ZXI7CisgICAgUHlPYmplY3QgKmFzeW5jX2dlbl9maW5hbGl6ZXI7CisKICAgICAvKiBYWFggc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBhbHNvIGJlIGhlcmUgKi8KIAogfSBQeVRocmVhZFN0YXRlOwpAQCAtMTQ2LDcgKzE1Nyw5IEBACiBQeUFQSV9GVU5DKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKSBQeUludGVycHJldGVyU3RhdGVfTmV3KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiAvKiBOZXcgaW4gMy4zICovCiBQeUFQSV9GVU5DKGludCkgUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKQEAgLTE1OCwxNCArMTcxLDIwIEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfTmV3KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYyhQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRocmVhZFN0YXRlX0luaXQoUHlUaHJlYWRTdGF0ZSAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9DbGVhcihQeVRocmVhZFN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0RlbGV0ZShQeVRocmVhZFN0YXRlICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlUaHJlYWRTdGF0ZV9EZWxldGVFeGNlcHQoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNpZmRlZiBXSVRIX1RIUkVBRAogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQodm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeUdJTFN0YXRlX1JlaW5pdCh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlLiBUaGUgZ2xvYmFsIGludGVycHJldGVyIGxvY2sgbXVzdCBiZSBoZWxkLgpAQCAtMTczLDkgKzE5MiwxMSBAQAogICogdGhlIGNhbGxlciBuZWVkbid0IGNoZWNrIGZvciBOVUxMKS4gKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX0dldCh2b2lkKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogU2ltaWxhciB0byBQeVRocmVhZFN0YXRlX0dldCgpLCBidXQgZG9uJ3QgaXNzdWUgYSBmYXRhbCBlcnJvcgogICogaWYgaXQgaXMgTlVMTC4gKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQodm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX1N3YXAoUHlUaHJlYWRTdGF0ZSAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlUaHJlYWRTdGF0ZV9HZXREaWN0KHZvaWQpOwpAQCAtMjQxLDExICsyNjIsMjMgQEAKICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUodm9pZCk7CiAKLS8qIEhlbHBlci9kaWFnbm9zdGljIGZ1bmN0aW9uIC0gcmV0dXJuIDEgaWYgdGhlIGN1cnJlbnQgdGhyZWFkCi0gKiBjdXJyZW50bHkgaG9sZHMgdGhlIEdJTCwgMCBvdGhlcndpc2UKLSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogSXNzdWUgIzI2NTU4OiBGbGFnIHRvIGRpc2FibGUgUHlHSUxTdGF0ZV9DaGVjaygpLgorICAgSWYgc2V0IHRvIG5vbi16ZXJvLCBQeUdJTFN0YXRlX0NoZWNrKCkgYWx3YXlzIHJldHVybiAxLiAqLworUHlBUElfREFUQShpbnQpIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQ7CisKKy8qIEhlbHBlci9kaWFnbm9zdGljIGZ1bmN0aW9uIC0gcmV0dXJuIDEgaWYgdGhlIGN1cnJlbnQgdGhyZWFkCisgICBjdXJyZW50bHkgaG9sZHMgdGhlIEdJTCwgMCBvdGhlcndpc2UuCisKKyAgIFRoZSBmdW5jdGlvbiByZXR1cm5zIDEgaWYgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCBpcyBub24temVyby4gKi8KIFB5QVBJX0ZVTkMoaW50KSBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpOworCisvKiBVbnNhZmUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzaW5nbGUgUHlJbnRlcnByZXRlclN0YXRlIHVzZWQgYnkgdGhpcyBwcm9jZXNzJworICAgR0lMU3RhdGUgaW1wbGVtZW50YXRpb24uCisKKyAgIFJldHVybiBOVUxMIGJlZm9yZSBfUHlHSUxTdGF0ZV9Jbml0KCkgaXMgY2FsbGVkIGFuZCBhZnRlciBfUHlHSUxTdGF0ZV9GaW5pKCkKKyAgIGlzIGNhbGxlZC4gKi8KK1B5QVBJX0ZVTkMoUHlJbnRlcnByZXRlclN0YXRlICopIF9QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUodm9pZCk7CiAjZW5kaWYKIAogI2VuZGlmICAgLyogI2lmZGVmIFdJVEhfVEhSRUFEICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RyaGV4LmggYi9JbmNsdWRlL3B5c3RyaGV4LmgKaW5kZXggMWRjMTI1NS4uNjZhMzBlMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0cmhleC5oCisrKyBiL0luY2x1ZGUvcHlzdHJoZXguaApAQCAtNSwxMCArNSwxMiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmV0dXJucyBhIHN0cigpIGNvbnRhaW5pbmcgdGhlIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKIC8qIFJldHVybnMgYSBieXRlcygpIGNvbnRhaW5pbmcgdGhlIEFTQ0lJIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleF9ieXRlcyhjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RydG9kLmggYi9JbmNsdWRlL3B5c3RydG9kLmgKaW5kZXggMjNmZDFjNi4uYzFlODRkZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0cnRvZC5oCisrKyBiL0luY2x1ZGUvcHlzdHJ0b2QuaApAQCAtMTksNiArMTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0eXBlKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKAorICAgIGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIGNvbnN0IGNoYXIgKndoYXQsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmFyZywKKyAgICBQeU9iamVjdCAqKCppbm5lcmZ1bmMpKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgdm9pZCAqKSk7CisKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhvbnJ1bi5oIGIvSW5jbHVkZS9weXRob25ydW4uaAppbmRleCA5YzJlODEzLi5jZmEwYTlmIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhvbnJ1bi5oCisrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKQEAgLTY2LDggKzY2LDggQEAKICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciogZW5jLAogICAgIGludCBzdGFydCwKLSAgICBjaGFyICpwczEsCi0gICAgY2hhciAqcHMyLAorICAgIGNvbnN0IGNoYXIgKnBzMSwKKyAgICBjb25zdCBjaGFyICpwczIsCiAgICAgUHlDb21waWxlckZsYWdzICpmbGFncywKICAgICBpbnQgKmVycmNvZGUsCiAgICAgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNzYsOCArNzYsOCBAQAogICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwKICAgICBjb25zdCBjaGFyKiBlbmMsCiAgICAgaW50IHN0YXJ0LAotICAgIGNoYXIgKnBzMSwKLSAgICBjaGFyICpwczIsCisgICAgY29uc3QgY2hhciAqcHMxLAorICAgIGNvbnN0IGNoYXIgKnBzMiwKICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLAogICAgIGludCAqZXJyY29kZSwKICAgICBQeUFyZW5hICphcmVuYSk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhyZWFkLmggYi9JbmNsdWRlL3B5dGhyZWFkLmgKaW5kZXggNmU5ZjMwMy4uNDU5YTVkNSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRocmVhZC5oCisrKyBiL0luY2x1ZGUvcHl0aHJlYWQuaApAQCAtMzcsMTMgKzM3LDggQEAKICAgIG1vZHVsZSBleHBvc2VzIGEgaGlnaGVyLWxldmVsIEFQSSwgd2l0aCB0aW1lb3V0cyBleHByZXNzZWQgaW4gc2Vjb25kcwogICAgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYWxsb3dlZC4KICovCi0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKLSNkZWZpbmUgUFlfVElNRU9VVF9UIFBZX0xPTkdfTE9ORworI2RlZmluZSBQWV9USU1FT1VUX1QgbG9uZyBsb25nCiAjZGVmaW5lIFBZX1RJTUVPVVRfTUFYIFBZX0xMT05HX01BWAotI2Vsc2UKLSNkZWZpbmUgUFlfVElNRU9VVF9UIGxvbmcKLSNkZWZpbmUgUFlfVElNRU9VVF9NQVggTE9OR19NQVgKLSNlbmRpZgogCiAvKiBJbiB0aGUgTlQgQVBJLCB0aGUgdGltZW91dCBpcyBhIERXT1JEIGFuZCBpcyBleHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzICovCiAjaWYgZGVmaW5lZCAoTlRfVEhSRUFEUykKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aW1lLmggYi9JbmNsdWRlL3B5dGltZS5oCmluZGV4IDQ5NDMyMmMuLjU5NWZhZmMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aW1lLmgKKysrIGIvSW5jbHVkZS9weXRpbWUuaApAQCAtMTMsMTYgKzEzLDEyIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi0jaWZkZWYgUFlfSU5UNjRfVAogLyogX1B5VGltZV90OiBQeXRob24gdGltZXN0YW1wIHdpdGggc3Vic2Vjb25kIHByZWNpc2lvbi4gSXQgY2FuIGJlIHVzZWQgdG8KICAgIHN0b3JlIGEgZHVyYXRpb24sIGFuZCBzbyBpbmRpcmVjdGx5IGEgZGF0ZSAocmVsYXRlZCB0byBhbm90aGVyIGRhdGUsIGxpa2UKICAgIFVOSVggZXBvY2gpLiAqLwotdHlwZWRlZiBQWV9JTlQ2NF9UIF9QeVRpbWVfdDsKK3R5cGVkZWYgaW50NjRfdCBfUHlUaW1lX3Q7CiAjZGVmaW5lIF9QeVRpbWVfTUlOIFBZX0xMT05HX01JTgogI2RlZmluZSBfUHlUaW1lX01BWCBQWV9MTE9OR19NQVgKLSNlbHNlCi0jICBlcnJvciAiX1B5VGltZV90IG5lZWQgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHR5cGUiCi0jZW5kaWYKIAogdHlwZWRlZiBlbnVtIHsKICAgICAvKiBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKS4KQEAgLTMwLDcgKzI2LDEwIEBACiAgICAgX1B5VGltZV9ST1VORF9GTE9PUj0wLAogICAgIC8qIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpLgogICAgICAgIEZvciBleGFtcGxlLCB1c2VkIGZvciB0aW1lb3V0IHRvIHdhaXQgImF0IGxlYXN0IiBOIHNlY29uZHMuICovCi0gICAgX1B5VGltZV9ST1VORF9DRUlMSU5HCisgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HPTEsCisgICAgLyogUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG8gbmVhcmVzdCBldmVuIGludGVnZXIuCisgICAgICAgRm9yIGV4YW1wbGUsIHVzZWQgdG8gcm91bmQgZnJvbSBhIFB5dGhvbiBmbG9hdC4gKi8KKyAgICBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTgogfSBfUHlUaW1lX3JvdW5kX3Q7CiAKIC8qIENvbnZlcnQgYSB0aW1lX3QgdG8gYSBQeUxvbmcuICovCkBAIC03NSw3ICs3NCw3IEBACiAgICAgICAgICAgICAoKF9QeVRpbWVfdCkoc2Vjb25kcykgKiAoMTAwMCAqIDEwMDAgKiAxMDAwKSkKIAogLyogQ3JlYXRlIGEgdGltZXN0YW1wIGZyb20gYSBudW1iZXIgb2YgbmFub3NlY29uZHMuICovCi1QeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Gcm9tTmFub3NlY29uZHMoUFlfTE9OR19MT05HIG5zKTsKK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhsb25nIGxvbmcgbnMpOwogCiAvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMgKFB5dGhvbiBmbG9hdCBvciBpbnQpIHRvIGEgdGltZXRhbXAuCiAgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvc2V0b2JqZWN0LmggYi9JbmNsdWRlL3NldG9iamVjdC5oCmluZGV4IGYxN2JjMWIuLjg3ZWMxYzggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc2V0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9zZXRvYmplY3QuaApAQCAtMTAsMTIgKzEwLDEzIEBACiAKIC8qIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBlbnRyaWVzIGluIHRoZSB0YWJsZToKIAotMS4gVW51c2VkOiAga2V5ID09IE5VTEwKLTIuIEFjdGl2ZTogIGtleSAhPSBOVUxMIGFuZCBrZXkgIT0gZHVtbXkKLTMuIER1bW15OiAgIGtleSA9PSBkdW1teQorMS4gVW51c2VkOiAga2V5ID09IE5VTEwgYW5kIGhhc2ggPT0gMAorMi4gRHVtbXk6ICAga2V5ID09IGR1bW15IGFuZCBoYXNoID09IC0xCiszLiBBY3RpdmU6ICBrZXkgIT0gTlVMTCBhbmQga2V5ICE9IGR1bW15IGFuZCBoYXNoICE9IC0xCiAKLVRoZSBoYXNoIGZpZWxkIG9mIFVudXNlZCBzbG90cyBoYXZlIG5vIG1lYW5pbmcuCi1UaGUgaGFzaCBmaWVsZCBvZiBEdW1tbnkgc2xvdHMgYXJlIHNldCB0byAtMQorVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIHNsb3RzIGlzIGFsd2F5cyB6ZXJvLgorCitUaGUgaGFzaCBmaWVsZCBvZiBEdW1teSBzbG90cyBhcmUgc2V0IHRvIC0xCiBtZWFuaW5nIHRoYXQgZHVtbXkgZW50cmllcyBjYW4gYmUgZGV0ZWN0ZWQgYnkKIGVpdGhlciBlbnRyeS0+a2V5PT1kdW1teSBvciBieSBlbnRyeS0+aGFzaD09LTEuCiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaCBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKaW5kZXggOTQ4ZjY5MC4uNWRhOGE0NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAorKysgYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCkBAIC00OSwxMCArNDksOCBAQAogI2RlZmluZSBUX09CSkVDVF9FWCAxNiAgLyogTGlrZSBUX09CSkVDVCwgYnV0IHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgdmFsdWUgaXMgTlVMTCwgaW5zdGVhZCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGluZyB0byBOb25lLiAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjZGVmaW5lIFRfTE9OR0xPTkcgICAgICAxNwogI2RlZmluZSBUX1VMT05HTE9ORyAgICAgMTgKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogCiAjZGVmaW5lIFRfUFlTU0laRVQgICAgICAxOSAgICAgIC8qIFB5X3NzaXplX3QgKi8KICNkZWZpbmUgVF9OT05FICAgICAgICAgIDIwICAgICAgLyogVmFsdWUgaXMgYWx3YXlzIE5vbmUgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3ltdGFibGUuaCBiL0luY2x1ZGUvc3ltdGFibGUuaAppbmRleCAxNDA5Y2Q5Li44NmFlM2MyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3N5bXRhYmxlLmgKKysrIGIvSW5jbHVkZS9zeW10YWJsZS5oCkBAIC00OCw2ICs0OCw3IEBACiAgICAgdW5zaWduZWQgc3RlX2NoaWxkX2ZyZWUgOiAxOyAgLyogdHJ1ZSBpZiBhIGNoaWxkIGJsb2NrIGhhcyBmcmVlIHZhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGZyZWUgcmVmcyB0byBnbG9iYWxzICovCiAgICAgdW5zaWduZWQgc3RlX2dlbmVyYXRvciA6IDE7ICAgLyogdHJ1ZSBpZiBuYW1lc3BhY2UgaXMgYSBnZW5lcmF0b3IgKi8KKyAgICB1bnNpZ25lZCBzdGVfY29yb3V0aW5lIDogMTsgICAvKiB0cnVlIGlmIG5hbWVzcGFjZSBpcyBhIGNvcm91dGluZSAqLwogICAgIHVuc2lnbmVkIHN0ZV92YXJhcmdzIDogMTsgICAgIC8qIHRydWUgaWYgYmxvY2sgaGFzIHZhcmFyZ3MgKi8KICAgICB1bnNpZ25lZCBzdGVfdmFya2V5d29yZHMgOiAxOyAvKiB0cnVlIGlmIGJsb2NrIGhhcyB2YXJrZXl3b3JkcyAqLwogICAgIHVuc2lnbmVkIHN0ZV9yZXR1cm5zX3ZhbHVlIDogMTsgIC8qIHRydWUgaWYgbmFtZXNwYWNlIHVzZXMgcmV0dXJuIHdpdGgKQEAgLTkxLDYgKzkyLDcgQEAKICNkZWZpbmUgREVGX0ZSRUUgMjw8NCAgICAgICAgICAvKiBuYW1lIHVzZWQgYnV0IG5vdCBkZWZpbmVkIGluIG5lc3RlZCBibG9jayAqLwogI2RlZmluZSBERUZfRlJFRV9DTEFTUyAyPDw1ICAgIC8qIGZyZWUgdmFyaWFibGUgZnJvbSBjbGFzcydzIG1ldGhvZCAqLwogI2RlZmluZSBERUZfSU1QT1JUIDI8PDYgICAgICAgIC8qIGFzc2lnbm1lbnQgb2NjdXJyZWQgdmlhIGltcG9ydCAqLworI2RlZmluZSBERUZfQU5OT1QgMjw8NyAgICAgICAgIC8qIHRoaXMgbmFtZSBpcyBhbm5vdGF0ZWQgKi8KIAogI2RlZmluZSBERUZfQk9VTkQgKERFRl9MT0NBTCB8IERFRl9QQVJBTSB8IERFRl9JTVBPUlQpCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3lzbW9kdWxlLmggYi9JbmNsdWRlL3N5c21vZHVsZS5oCmluZGV4IGNkZTEwYWMuLmM1NTQ3ZmYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3lzbW9kdWxlLmgKKysrIGIvSW5jbHVkZS9zeXNtb2R1bGUuaApAQCAtOCwxMSArOCwxMSBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTeXNfR2V0T2JqZWN0KGNvbnN0IGNoYXIgKik7CitQeUFQSV9GVU5DKGludCkgUHlTeXNfU2V0T2JqZWN0KGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN5c19HZXRPYmplY3RJZChfUHlfSWRlbnRpZmllciAqa2V5KTsKLSNlbmRpZgotUHlBUElfRlVOQyhpbnQpIFB5U3lzX1NldE9iamVjdChjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIF9QeVN5c19TZXRPYmplY3RJZChfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqKTsKKyNlbmRpZgogCiBQeUFQSV9GVU5DKHZvaWQpIFB5U3lzX1NldEFyZ3YoaW50LCB3Y2hhcl90ICoqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlTeXNfU2V0QXJndkV4KGludCwgd2NoYXJfdCAqKiwgaW50KTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHJhY2ViYWNrLmggYi9JbmNsdWRlL3RyYWNlYmFjay5oCmluZGV4IGMzZWNiZTIuLmI1ODc0MTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdHJhY2ViYWNrLmgKKysrIGIvSW5jbHVkZS90cmFjZWJhY2suaApAQCAtMzEsNiArMzEsNyBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5VHJhY2VCYWNrX1R5cGU7CiAjZGVmaW5lIFB5VHJhY2VCYWNrX0NoZWNrKHYpIChQeV9UWVBFKHYpID09ICZQeVRyYWNlQmFja19UeXBlKQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBXcml0ZSB0aGUgUHl0aG9uIHRyYWNlYmFjayBpbnRvIHRoZSBmaWxlICdmZCcuIEZvciBleGFtcGxlOgogCiAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKQEAgLTUzLDE5ICs1NCw2NCBAQAogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CiAKIC8qIFdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW50byB0aGUgZmlsZSAnZmQnLiBjdXJyZW50X3RocmVhZCBjYW4gYmUKLSAgIE5VTEwuIFJldHVybiBOVUxMIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuCisgICBOVUxMLgorCisgICBSZXR1cm4gTlVMTCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBtZXNzYWdlIG9uIGVycm9yLgogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gZm9yIGRlYnVnIHB1cnBvc2Ugb25seS4gSXQgY2FsbHMKICAgIF9QeV9EdW1wVHJhY2ViYWNrKCkgZm9yIGVhY2ggdGhyZWFkLCBhbmQgc28gaGFzIHRoZSBzYW1lIGxpbWl0YXRpb25zLiBJdAogICAgb25seSB3cml0ZSB0aGUgdHJhY2ViYWNrIG9mIHRoZSBmaXJzdCAxMDAgdGhyZWFkczogd3JpdGUgIi4uLiIgaWYgdGhlcmUgYXJlCiAgICBtb3JlIHRocmVhZHMuCiAKKyAgIElmIGN1cnJlbnRfdHN0YXRlIGlzIE5VTEwsIHRoZSBmdW5jdGlvbiB0cmllcyB0byBnZXQgdGhlIFB5dGhvbiB0aHJlYWQgc3RhdGUKKyAgIG9mIHRoZSBjdXJyZW50IHRocmVhZC4gSXQgaXMgbm90IGFuIGVycm9yIGlmIHRoZSBmdW5jdGlvbiBpcyB1bmFibGUgdG8gZ2V0CisgICB0aGUgY3VycmVudCBQeXRob24gdGhyZWFkIHN0YXRlLgorCisgICBJZiBpbnRlcnAgaXMgTlVMTCwgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGdldCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgZnJvbQorICAgdGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZSwgb3IgZnJvbQorICAgX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSgpIGluIGxhc3QgcmVzb3J0LgorCisgICBJdCBpcyBiZXR0ZXIgdG8gcGFzcyBOVUxMIHRvIGludGVycCBhbmQgY3VycmVudF90c3RhdGUsIHRoZSBmdW5jdGlvbiB0cmllcworICAgZGlmZmVyZW50IG9wdGlvbnMgdG8gcmV0cmlldmUgdGhlc2UgaW5mb3JtYXRpb25zLgorCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwogCiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIqKSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoCi0gICAgaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKLSAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCk7CisgICAgaW50IGZkLAorICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAorICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdHN0YXRlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCisvKiBXcml0ZSBhIFVuaWNvZGUgb2JqZWN0IGludG8gdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4gRW5jb2RlIHRoZSBzdHJpbmcgdG8KKyAgIEFTQ0lJIHVzaW5nIHRoZSBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIuCisKKyAgIERvIG5vdGhpbmcgaWYgdGV4dCBpcyBub3QgYSBVbmljb2RlIG9iamVjdC4gVGhlIGZ1bmN0aW9uIGFjY2VwdHMgVW5pY29kZQorICAgc3RyaW5nIHdoaWNoIGlzIG5vdCByZWFkeSAoUHlVbmljb2RlX1dDSEFSX0tJTkQpLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfRHVtcEFTQ0lJKGludCBmZCwgUHlPYmplY3QgKnRleHQpOworCisvKiBGb3JtYXQgYW4gaW50ZWdlciBhcyBkZWNpbWFsIGludG8gdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5X0R1bXBEZWNpbWFsKAorICAgIGludCBmZCwKKyAgICB1bnNpZ25lZCBsb25nIHZhbHVlKTsKKworLyogRm9ybWF0IGFuIGludGVnZXIgYXMgaGV4YWRlY2ltYWwgaW50byB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkIHdpdGggYXQgbGVhc3QKKyAgIHdpZHRoIGRpZ2l0cy4KKworICAgVGhlIG1heGltdW0gd2lkdGggaXMgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKjIgZGlnaXRzLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfRHVtcEhleGFkZWNpbWFsKAorICAgIGludCBmZCwKKyAgICB1bnNpZ25lZCBsb25nIHZhbHVlLAorICAgIFB5X3NzaXplX3Qgd2lkdGgpOworCisjZW5kaWYgICAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaCBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCmluZGV4IDdjYjE5ZWIuLjIwMzMxYTMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCkBAIC0xMDMsMTAgKzEwMyw2IEBACiAjIGVuZGlmCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSMgIGRlZmluZSBIQVZFX01CQ1MKLSNlbmRpZgotCiAjaWZkZWYgSEFWRV9XQ0hBUl9ICiAvKiBXb3JrIGFyb3VuZCBhIGNvc21ldGljIGJ1ZyBpbiBCU0RJIDQueCB3Y2hhci5oOyB0aGFua3MgdG8gVGhvbWFzIFdvdXRlcnMgKi8KICMgaWZkZWYgX0hBVkVfQlNESQpAQCAtMTE3LDIxICsxMTMsOSBAQAogCiAvKiBQeV9VQ1M0IGFuZCBQeV9VQ1MyIGFyZSB0eXBlZGVmcyBmb3IgdGhlIHJlc3BlY3RpdmUKICAgIHVuaWNvZGUgcmVwcmVzZW50YXRpb25zLiAqLwotI2lmIFNJWkVPRl9JTlQgPT0gNAotdHlwZWRlZiB1bnNpZ25lZCBpbnQgUHlfVUNTNDsKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBQeV9VQ1M0OwotI2Vsc2UKLSNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTNCIKLSNlbmRpZgotCi0jaWYgU0laRU9GX1NIT1JUID09IDIKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgUHlfVUNTMjsKLSNlbHNlCi0jZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzIiCi0jZW5kaWYKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFB5X1VDUzE7Cit0eXBlZGVmIHVpbnQzMl90IFB5X1VDUzQ7Cit0eXBlZGVmIHVpbnQxNl90IFB5X1VDUzI7Cit0eXBlZGVmIHVpbnQ4X3QgUHlfVUNTMTsKIAogLyogLS0tIEludGVybmFsIFVuaWNvZGUgT3BlcmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTE3Miw3ICsxNTYsNyBAQAogICAgIFB5X1VOSUNPREVfSVNOVU1FUklDKGNoKSkKIAogI2RlZmluZSBQeV9VTklDT0RFX0NPUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgXAotICAgIFB5X01FTUNQWSgodGFyZ2V0KSwgKHNvdXJjZSksIChsZW5ndGgpKnNpemVvZihQeV9VTklDT0RFKSkKKyAgICBtZW1jcHkoKHRhcmdldCksIChzb3VyY2UpLCAobGVuZ3RoKSpzaXplb2YoUHlfVU5JQ09ERSkpCiAKICNkZWZpbmUgUHlfVU5JQ09ERV9GSUxMKHRhcmdldCwgdmFsdWUsIGxlbmd0aCkgXAogICAgIGRvIHtQeV9zc2l6ZV90IGlfOyBQeV9VTklDT0RFICp0XyA9ICh0YXJnZXQpOyBQeV9VTklDT0RFIHZfID0gKHZhbHVlKTtcCkBAIC05MDAsNyArODg0LDcgQEAKICAgICAvKiBtaW5pbXVtIGNoYXJhY3RlciAoZGVmYXVsdDogMTI3LCBBU0NJSSkgKi8KICAgICBQeV9VQ1M0IG1pbl9jaGFyOwogCi0gICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIGJ5IDI1JSAoZGVmYXVsdDogMCkuICovCisgICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIChkZWZhdWx0OiAwKS4gKi8KICAgICB1bnNpZ25lZCBjaGFyIG92ZXJhbGxvY2F0ZTsKIAogICAgIC8qIElmIHJlYWRvbmx5IGlzIDEsIGJ1ZmZlciBpcyBhIHNoYXJlZCBzdHJpbmcgKGNhbm5vdCBiZSBtb2RpZmllZCkKQEAgLTkzNCw2ICs5MTgsMjMgQEAKIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IG1heGNoYXIpOwogCisvKiBQcmVwYXJlIHRoZSBidWZmZXIgdG8gaGF2ZSBhdCBsZWFzdCB0aGUga2luZCBLSU5ELgorICAgRm9yIGV4YW1wbGUsIGtpbmQ9UHlVbmljb2RlXzJCWVRFX0tJTkQgZW5zdXJlcyB0aGF0IHRoZSB3cml0ZXIgd2lsbAorICAgc3VwcG9ydCBjaGFyYWN0ZXJzIGluIHJhbmdlIFUrMDAwLVUrRkZGRi4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCisjZGVmaW5lIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoV1JJVEVSLCBLSU5EKSAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoKEtJTkQpICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKEtJTkQpIDw9IChXUklURVIpLT5raW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgID8gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICA6IF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmRJbnRlcm5hbCgoV1JJVEVSKSwgKEtJTkQpKSkKKworLyogRG9uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB1c2UgdGhlIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoKQorICAgbWFjcm8gaW5zdGVhZC4gKi8KK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZEludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQpOworCiAvKiBBcHBlbmQgYSBVbmljb2RlIGNoYXJhY3Rlci4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwogUHlBUElfRlVOQyhpbnQpCkBAIC0xNjQwLDEzICsxNjQxLDEzIEBACiAgICAgKTsKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9EZWNvZGVNQkNTKAogICAgIGNvbnN0IGNoYXIgKnN0cmluZywgICAgICAgICAvKiBNQkNTIGVuY29kZWQgc3RyaW5nICovCi0gICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgICAgICAvKiBzaXplIG9mIHN0cmluZyAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBzaXplIG9mIHN0cmluZyAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CiAKQEAgLTE2ODMsNyArMTY4NCw3IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKIAotI2VuZGlmIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogLyogLS0tIERlY2ltYWwgRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTE5MzgsNiArMTkzOSwxNCBAQAogICAgIFB5T2JqZWN0ICpzZXEgICAgICAgICAgICAgICAvKiBTZXF1ZW5jZSBvYmplY3QgKi8KICAgICApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfSm9pbkFycmF5KAorICAgIFB5T2JqZWN0ICpzZXBhcmF0b3IsCisgICAgUHlPYmplY3QgKippdGVtcywKKyAgICBQeV9zc2l6ZV90IHNlcWxlbgorICAgICk7CisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KKwogLyogUmV0dXJuIDEgaWYgc3Vic3RyIG1hdGNoZXMgc3RyW3N0YXJ0OmVuZF0gYXQgdGhlIGdpdmVuIHRhaWwgZW5kLCAwCiAgICBvdGhlcndpc2UuICovCiAKQEAgLTIyNDgsMTEgKzIyNTcsMTcgQEAKICAgICBpbnQgY2hlY2tfY29udGVudCk7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmV0dXJuIGFuIGludGVybmVkIFVuaWNvZGUgb2JqZWN0IGZvciBhbiBJZGVudGlmaWVyOyBtYXkgZmFpbCBpZiB0aGVyZSBpcyBubyBtZW1vcnkuKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0Zyb21JZChfUHlfSWRlbnRpZmllciopOwogLyogQ2xlYXIgYWxsIHN0YXRpYyBzdHJpbmdzLiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncyh2b2lkKTsKIAorLyogRmFzdCBlcXVhbGl0eSBjaGVjayB3aGVuIHRoZSBpbnB1dHMgYXJlIGtub3duIHRvIGJlIGV4YWN0IHVuaWNvZGUgdHlwZXMKKyAgIGFuZCB3aGVyZSB0aGUgaGFzaCB2YWx1ZXMgYXJlIGVxdWFsIChpLmUuIGEgdmVyeSBwcm9iYWJsZSBtYXRjaCkgKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0VRKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS93YXJuaW5ncy5oIGIvSW5jbHVkZS93YXJuaW5ncy5oCmluZGV4IGVmZmI5ZmFkLi5jMWM2OTkyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3dhcm5pbmdzLmgKKysrIGIvSW5jbHVkZS93YXJuaW5ncy5oCkBAIC0xNyw2ICsxNywxMyBAQAogICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCiAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgICAgICAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLwogICAgIC4uLik7CisKKy8qIEVtaXQgYSBSZXNvdXJjZVdhcm5pbmcgd2FybmluZyAqLworUHlBUElfRlVOQyhpbnQpIFB5RXJyX1Jlc291cmNlV2FybmluZygKKyAgICBQeU9iamVjdCAqc291cmNlLAorICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgICAgICAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLworICAgIC4uLik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KAogICAgIFB5T2JqZWN0ICpjYXRlZ29yeSwKZGlmZiAtLWdpdCBhL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5IGIvTGliL19jb2xsZWN0aW9uc19hYmMucHkKaW5kZXggZmM5YzlmMS4uZjAzNTk3MCAxMDA2NDQKLS0tIGEvTGliL19jb2xsZWN0aW9uc19hYmMucHkKKysrIGIvTGliL19jb2xsZWN0aW9uc19hYmMucHkKQEAgLTEwLDggKzEwLDggQEAKIGltcG9ydCBzeXMKIAogX19hbGxfXyA9IFsiQXdhaXRhYmxlIiwgIkNvcm91dGluZSIsICJBc3luY0l0ZXJhYmxlIiwgIkFzeW5jSXRlcmF0b3IiLAotICAgICAgICAgICAiSGFzaGFibGUiLCAiSXRlcmFibGUiLCAiSXRlcmF0b3IiLCAiR2VuZXJhdG9yIiwKLSAgICAgICAgICAgIlNpemVkIiwgIkNvbnRhaW5lciIsICJDYWxsYWJsZSIsCisgICAgICAgICAgICJIYXNoYWJsZSIsICJJdGVyYWJsZSIsICJJdGVyYXRvciIsICJHZW5lcmF0b3IiLCAiUmV2ZXJzaWJsZSIsCisgICAgICAgICAgICJTaXplZCIsICJDb250YWluZXIiLCAiQ2FsbGFibGUiLCAiQ29sbGVjdGlvbiIsCiAgICAgICAgICAgICJTZXQiLCAiTXV0YWJsZVNldCIsCiAgICAgICAgICAgICJNYXBwaW5nIiwgIk11dGFibGVNYXBwaW5nIiwKICAgICAgICAgICAgIk1hcHBpbmdWaWV3IiwgIktleXNWaWV3IiwgIkl0ZW1zVmlldyIsICJWYWx1ZXNWaWV3IiwKQEAgLTYyLDYgKzYyLDE4IEBACiAKICMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwogCitkZWYgX2NoZWNrX21ldGhvZHMoQywgKm1ldGhvZHMpOgorICAgIG1ybyA9IEMuX19tcm9fXworICAgIGZvciBtZXRob2QgaW4gbWV0aG9kczoKKyAgICAgICAgZm9yIEIgaW4gbXJvOgorICAgICAgICAgICAgaWYgbWV0aG9kIGluIEIuX19kaWN0X186CisgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1ttZXRob2RdIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICByZXR1cm4gVHJ1ZQorCiBjbGFzcyBIYXNoYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtNzMsMTEgKzg1LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgSGFzaGFibGU6Ci0gICAgICAgICAgICBmb3IgQiBpbiBDLl9fbXJvX186Ci0gICAgICAgICAgICAgICAgaWYgIl9faGFzaF9fIiBpbiBCLl9fZGljdF9fOgotICAgICAgICAgICAgICAgICAgICBpZiBCLl9fZGljdF9fWyJfX2hhc2hfXyJdOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19oYXNoX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC05MiwxMSArMTAwLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXdhaXRhYmxlOgotICAgICAgICAgICAgZm9yIEIgaW4gQy5fX21yb19fOgotICAgICAgICAgICAgICAgIGlmICJfX2F3YWl0X18iIGluIEIuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bIl9fYXdhaXRfXyJdOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19hd2FpdF9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMTM3LDE0ICsxNDEsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBDb3JvdXRpbmU6Ci0gICAgICAgICAgICBtcm8gPSBDLl9fbXJvX18KLSAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX2F3YWl0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgotICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKLSAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19hd2FpdF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0xNjIsOCArMTU5LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYWJsZToKLSAgICAgICAgICAgIGlmIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19haXRlcl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMTgyLDkgKzE3OCw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEFzeW5jSXRlcmF0b3I6Ci0gICAgICAgICAgICBpZiAoYW55KCJfX2FuZXh0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKLSAgICAgICAgICAgICAgICBhbnkoIl9fYWl0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2FuZXh0X18iLCAiX19haXRlcl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMjAwLDggKzE5NCw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEl0ZXJhYmxlOgotICAgICAgICAgICAgaWYgYW55KCJfX2l0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9faXRlcl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMjIwLDkgKzIxMyw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEl0ZXJhdG9yOgotICAgICAgICAgICAgaWYgKGFueSgiX19uZXh0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKLSAgICAgICAgICAgICAgICBhbnkoIl9faXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgJ19faXRlcl9fJywgJ19fbmV4dF9fJykKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIEl0ZXJhdG9yLnJlZ2lzdGVyKGJ5dGVzX2l0ZXJhdG9yKQpAQCAtMjQwLDYgKzIzMSwyMiBAQAogSXRlcmF0b3IucmVnaXN0ZXIoemlwX2l0ZXJhdG9yKQogCiAKK2NsYXNzIFJldmVyc2libGUoSXRlcmFibGUpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgIHdoaWxlIEZhbHNlOgorICAgICAgICAgICAgeWllbGQgTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIFJldmVyc2libGU6CisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fcmV2ZXJzZWRfXyIsICJfX2l0ZXJfXyIpCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKIGNsYXNzIEdlbmVyYXRvcihJdGVyYXRvcik6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtMjgzLDE3ICsyOTAsMTAgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgR2VuZXJhdG9yOgotICAgICAgICAgICAgbXJvID0gQy5fX21yb19fCi0gICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnX19pdGVyX18nLCAnX19uZXh0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgotICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKLSAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19pdGVyX18nLCAnX19uZXh0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJykKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKLQogR2VuZXJhdG9yLnJlZ2lzdGVyKGdlbmVyYXRvcikKIAogCkBAIC0zMDgsOCArMzA4LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgU2l6ZWQ6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fbGVuX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2xlbl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMzI0LDEwICszMjMsMTggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQ29udGFpbmVyOgotICAgICAgICAgICAgaWYgYW55KCJfX2NvbnRhaW5zX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2NvbnRhaW5zX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAorY2xhc3MgQ29sbGVjdGlvbihTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIENvbGxlY3Rpb246CisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgICJfX2xlbl9fIiwgIl9faXRlcl9fIiwgIl9fY29udGFpbnNfXyIpCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiBjbGFzcyBDYWxsYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKQEAgLTM0MCwxNSArMzQ3LDE0IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIENhbGxhYmxlOgotICAgICAgICAgICAgaWYgYW55KCJfX2NhbGxfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fY2FsbF9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIAogIyMjIFNFVFMgIyMjCiAKIAotY2xhc3MgU2V0KFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKK2NsYXNzIFNldChDb2xsZWN0aW9uKToKIAogICAgICIiIkEgc2V0IGlzIGEgZmluaXRlLCBpdGVyYWJsZSBjb250YWluZXIuCiAKQEAgLTU3Myw3ICs1NzksNyBAQAogIyMjIE1BUFBJTkdTICMjIwogCiAKLWNsYXNzIE1hcHBpbmcoU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorY2xhc3MgTWFwcGluZyhDb2xsZWN0aW9uKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCiAKQEAgLTYyMSw2ICs2MjcsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIHJldHVybiBkaWN0KHNlbGYuaXRlbXMoKSkgPT0gZGljdChvdGhlci5pdGVtcygpKQogCisgICAgX19yZXZlcnNlZF9fID0gTm9uZQorCiBNYXBwaW5nLnJlZ2lzdGVyKG1hcHBpbmdwcm94eSkKIAogCkBAIC02NzAsNyArNjc4LDcgQEAKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gdiA9PSB2YWx1ZQorICAgICAgICAgICAgcmV0dXJuIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICBmb3Iga2V5IGluIHNlbGYuX21hcHBpbmc6CkBAIC02ODUsNyArNjkzLDggQEAKIAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBmb3Iga2V5IGluIHNlbGYuX21hcHBpbmc6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA9PSBzZWxmLl9tYXBwaW5nW2tleV06CisgICAgICAgICAgICB2ID0gc2VsZi5fbWFwcGluZ1trZXldCisgICAgICAgICAgICBpZiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKQEAgLTc5NCw3ICs4MDMsNyBAQAogIyMjIFNFUVVFTkNFUyAjIyMKIAogCi1jbGFzcyBTZXF1ZW5jZShTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CitjbGFzcyBTZXF1ZW5jZShSZXZlcnNpYmxlLCBDb2xsZWN0aW9uKToKIAogICAgICIiIkFsbCB0aGUgb3BlcmF0aW9ucyBvbiBhIHJlYWQtb25seSBzZXF1ZW5jZS4KIApAQCAtODIwLDcgKzgyOSw3IEBACiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKICAgICAgICAgZm9yIHYgaW4gc2VsZjoKLSAgICAgICAgICAgIGlmIHYgPT0gdmFsdWU6CisgICAgICAgICAgICBpZiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKZGlmZiAtLWdpdCBhL0xpYi9fY29tcGF0X3BpY2tsZS5weSBiL0xpYi9fY29tcGF0X3BpY2tsZS5weQppbmRleCBjMGUwNDQzLi5mNjg0OTZhIDEwMDY0NAotLS0gYS9MaWIvX2NvbXBhdF9waWNrbGUucHkKKysrIGIvTGliL19jb21wYXRfcGlja2xlLnB5CkBAIC0yNDIsMyArMjQyLDEwIEBACiAKIGZvciBleGNuYW1lIGluIFBZVEhPTjNfT1NFUlJPUl9FWENFUFRJT05TOgogICAgIFJFVkVSU0VfTkFNRV9NQVBQSU5HWygnYnVpbHRpbnMnLCBleGNuYW1lKV0gPSAoJ2V4Y2VwdGlvbnMnLCAnT1NFcnJvcicpCisKK1BZVEhPTjNfSU1QT1JURVJST1JfRVhDRVBUSU9OUyA9ICgKKyAgICAnTW9kdWxlTm90Rm91bmRFcnJvcicsCispCisKK2ZvciBleGNuYW1lIGluIFBZVEhPTjNfSU1QT1JURVJST1JfRVhDRVBUSU9OUzoKKyAgICBSRVZFUlNFX05BTUVfTUFQUElOR1soJ2J1aWx0aW5zJywgZXhjbmFtZSldID0gKCdleGNlcHRpb25zJywgJ0ltcG9ydEVycm9yJykKZGlmZiAtLWdpdCBhL0xpYi9fb3N4X3N1cHBvcnQucHkgYi9MaWIvX29zeF9zdXBwb3J0LnB5CmluZGV4IDEzZmNkOGIuLmVhZGYwNmYgMTAwNjQ0Ci0tLSBhL0xpYi9fb3N4X3N1cHBvcnQucHkKKysrIGIvTGliL19vc3hfc3VwcG9ydC5weQpAQCAtMjEwLDcgKzIxMCw3IEBACiAgICAgICAgICMgRG8gbm90IGFsdGVyIGEgY29uZmlnIHZhciBleHBsaWNpdGx5IG92ZXJyaWRkZW4gYnkgZW52IHZhcgogICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCi0gICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MsIHJlLkFTQ0lJKQorICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCiAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290IFteIFx0XSonLCAnICcsIGZsYWdzKQogICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCiAKQEAgLTIzMiw3ICsyMzIsNyBAQAogICAgIGlmICdDQycgaW4gb3MuZW52aXJvbjoKICAgICAgICAgcmV0dXJuIF9jb25maWdfdmFycwogCi0gICAgaWYgcmUuc2VhcmNoKCctYXJjaFxzK3BwYycsIF9jb25maWdfdmFyc1snQ0ZMQUdTJ10pIGlzIG5vdCBOb25lOgorICAgIGlmIHJlLnNlYXJjaChyJy1hcmNoXHMrcHBjJywgX2NvbmZpZ192YXJzWydDRkxBR1MnXSkgaXMgbm90IE5vbmU6CiAgICAgICAgICMgTk9URTogQ2Fubm90IHVzZSBzdWJwcm9jZXNzIGhlcmUgYmVjYXVzZSBvZiBib290c3RyYXAKICAgICAgICAgIyBpc3N1ZXMgd2hlbiBidWlsZGluZyBQeXRob24gaXRzZWxmCiAgICAgICAgIHN0YXR1cyA9IG9zLnN5c3RlbSgKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgICAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CiAgICAgICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK3BwY1x3KlxzJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictYXJjaFxzK3BwY1x3KlxzJywgJyAnLCBmbGFncykKICAgICAgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCiAKICAgICByZXR1cm4gX2NvbmZpZ192YXJzCkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CiAgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kICctYXJjaCcgaW4gX2NvbmZpZ192YXJzW2N2XToKICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KLSAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKICAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzICsgJyAnICsgYXJjaAogICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQogCkBAIC00NjUsNyArNDY1LDcgQEAKIAogICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCiAKLSAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKKyAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbChyJy1hcmNoXHMrKFxTKyknLCBjZmxhZ3MpCiAgICAgICAgICAgICBhcmNocyA9IHR1cGxlKHNvcnRlZChzZXQoYXJjaHMpKSkKIAogICAgICAgICAgICAgaWYgbGVuKGFyY2hzKSA9PSAxOgpkaWZmIC0tZ2l0IGEvTGliL19weWRlY2ltYWwucHkgYi9MaWIvX3B5ZGVjaW1hbC5weQppbmRleCA5MDBhMWE3Li42MzE4YTQ5IDEwMDY0NAotLS0gYS9MaWIvX3B5ZGVjaW1hbC5weQorKysgYi9MaWIvX3B5ZGVjaW1hbC5weQpAQCAtMTQ4LDcgKzE0OCw3IEBACiBfX25hbWVfXyA9ICdkZWNpbWFsJyAgICAjIEZvciBwaWNrbGluZwogX192ZXJzaW9uX18gPSAnMS43MCcgICAgIyBIaWdoZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMgdGhpcyBjb21wbGllcyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAjIFNlZSBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvCi1fX2xpYm1wZGVjX3ZlcnNpb25fXyA9ICIyLjQuMSIgIyBjb21wYXRpYmxlIGxpYm1wZGVjIHZlcnNpb24KK19fbGlibXBkZWNfdmVyc2lvbl9fID0gIjIuNC4yIiAjIGNvbXBhdGlibGUgbGlibXBkZWMgdmVyc2lvbgogCiBpbXBvcnQgbWF0aCBhcyBfbWF0aAogaW1wb3J0IG51bWJlcnMgYXMgX251bWJlcnMKQEAgLTU4OSw3ICs1ODksNyBAQAogICAgICAgICAjIEZyb20gYSBzdHJpbmcKICAgICAgICAgIyBSRXMgaW5zaXN0IG9uIHJlYWwgc3RyaW5ncywgc28gd2UgY2FuIHRvby4KICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKLSAgICAgICAgICAgIG0gPSBfcGFyc2VyKHZhbHVlLnN0cmlwKCkpCisgICAgICAgICAgICBtID0gX3BhcnNlcih2YWx1ZS5zdHJpcCgpLnJlcGxhY2UoIl8iLCAiIikpCiAgICAgICAgICAgICBpZiBtIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCkBAIC0xMDEwLDYgKzEwMTAsNTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBEZWNpbWFsVHVwbGUoc2VsZi5fc2lnbiwgdHVwbGUobWFwKGludCwgc2VsZi5faW50KSksIHNlbGYuX2V4cCkKIAorICAgIGRlZiBhc19pbnRlZ2VyX3JhdGlvKHNlbGYpOgorICAgICAgICAiIiJFeHByZXNzIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2UgaW4gdGhlIGZvcm0gbiAvIGQuCisKKyAgICAgICAgUmV0dXJucyBhIHBhaXIgKG4sIGQpIG9mIGludGVnZXJzLiAgV2hlbiBjYWxsZWQgb24gYW4gaW5maW5pdHkKKyAgICAgICAgb3IgTmFOLCByYWlzZXMgT3ZlcmZsb3dFcnJvciBvciBWYWx1ZUVycm9yIHJlc3BlY3RpdmVseS4KKworICAgICAgICA+Pj4gRGVjaW1hbCgnMy4xNCcpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAoMTU3LCA1MCkKKyAgICAgICAgPj4+IERlY2ltYWwoJy0xMjNlNScpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAoLTEyMzAwMDAwLCAxKQorICAgICAgICA+Pj4gRGVjaW1hbCgnMC4wMCcpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAoMCwgMSkKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIikKKworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiAwLCAxCisKKyAgICAgICAgIyBGaW5kIG4sIGQgaW4gbG93ZXN0IHRlcm1zIHN1Y2ggdGhhdCBhYnMoc2VsZikgPT0gbiAvIGQ7CisgICAgICAgICMgd2UnbGwgZGVhbCB3aXRoIHRoZSBzaWduIGxhdGVyLgorICAgICAgICBuID0gaW50KHNlbGYuX2ludCkKKyAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6CisgICAgICAgICAgICAjIHNlbGYgaXMgYW4gaW50ZWdlci4KKyAgICAgICAgICAgIG4sIGQgPSBuICogMTAqKnNlbGYuX2V4cCwgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBGaW5kIGQyLCBkNSBzdWNoIHRoYXQgYWJzKHNlbGYpID0gbiAvICgyKipkMiAqIDUqKmQ1KS4KKyAgICAgICAgICAgIGQ1ID0gLXNlbGYuX2V4cAorICAgICAgICAgICAgd2hpbGUgZDUgPiAwIGFuZCBuICUgNSA9PSAwOgorICAgICAgICAgICAgICAgIG4gLy89IDUKKyAgICAgICAgICAgICAgICBkNSAtPSAxCisKKyAgICAgICAgICAgICMgKG4gJiAtbikuYml0X2xlbmd0aCgpIC0gMSBjb3VudHMgdHJhaWxpbmcgemVyb3MgaW4gYmluYXJ5CisgICAgICAgICAgICAjIHJlcHJlc2VudGF0aW9uIG9mIG4gKHByb3ZpZGVkIG4gaXMgbm9uemVybykuCisgICAgICAgICAgICBkMiA9IC1zZWxmLl9leHAKKyAgICAgICAgICAgIHNoaWZ0MiA9IG1pbigobiAmIC1uKS5iaXRfbGVuZ3RoKCkgLSAxLCBkMikKKyAgICAgICAgICAgIGlmIHNoaWZ0MjoKKyAgICAgICAgICAgICAgICBuID4+PSBzaGlmdDIKKyAgICAgICAgICAgICAgICBkMiAtPSBzaGlmdDIKKworICAgICAgICAgICAgZCA9IDUqKmQ1IDw8IGQyCisKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIG4gPSAtbgorICAgICAgICByZXR1cm4gbiwgZAorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYW4gaW5zdGFuY2Ugb2YgRGVjaW1hbC4iIiIKICAgICAgICAgIyBJbnZhcmlhbnQ6ICBldmFsKHJlcHIoZCkpID09IGQKQEAgLTQwNzUsNyArNDEyNSw3IEBACiAgICAgICAgIFRoaXMgd2lsbCBtYWtlIGl0IHJvdW5kIHVwIGZvciB0aGF0IG9wZXJhdGlvbi4KICAgICAgICAgIiIiCiAgICAgICAgIHJvdW5kaW5nID0gc2VsZi5yb3VuZGluZwotICAgICAgICBzZWxmLnJvdW5kaW5nPSB0eXBlCisgICAgICAgIHNlbGYucm91bmRpbmcgPSB0eXBlCiAgICAgICAgIHJldHVybiByb3VuZGluZwogCiAgICAgZGVmIGNyZWF0ZV9kZWNpbWFsKHNlbGYsIG51bT0nMCcpOgpAQCAtNDA4NCwxMCArNDEzNCwxMCBAQAogICAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSB0by1udW1iZXIgb3BlcmF0aW9uIG9mIHRoZQogICAgICAgICBJQk0gRGVjaW1hbCBzcGVjaWZpY2F0aW9uLiIiIgogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobnVtLCBzdHIpIGFuZCBudW0gIT0gbnVtLnN0cmlwKCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UobnVtLCBzdHIpIGFuZCAobnVtICE9IG51bS5zdHJpcCgpIG9yICdfJyBpbiBudW0pOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcm1pdHRlZC4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFpbGluZyBvciBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5kZXJzY29yZXMgYXJlIG5vdCBwZXJtaXR0ZWQuIikKIAogICAgICAgICBkID0gRGVjaW1hbChudW0sIGNvbnRleHQ9c2VsZikKICAgICAgICAgaWYgZC5faXNuYW4oKSBhbmQgbGVuKGQuX2ludCkgPiBzZWxmLnByZWMgLSBzZWxmLmNsYW1wOgpkaWZmIC0tZ2l0IGEvTGliL19weWlvLnB5IGIvTGliL19weWlvLnB5CmluZGV4IDBkOThiNzQuLmQwOTQ3ZjAgMTAwNjQ0Ci0tLSBhL0xpYi9fcHlpby5weQorKysgYi9MaWIvX3B5aW8ucHkKQEAgLTYsNyArNiw2IEBACiBpbXBvcnQgYWJjCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgZXJybm8KLWltcG9ydCBhcnJheQogaW1wb3J0IHN0YXQKIGltcG9ydCBzeXMKICMgSW1wb3J0IF90aHJlYWQgaW5zdGVhZCBvZiB0aHJlYWRpbmcgdG8gcmVkdWNlIHN0YXJ0dXAgY29zdApAQCAtMTYxLDYgKzE2MCw4IEBACiAgICAgb3BlbmVkIGluIGEgdGV4dCBtb2RlLCBhbmQgZm9yIGJ5dGVzIGEgQnl0ZXNJTyBjYW4gYmUgdXNlZCBsaWtlIGEgZmlsZQogICAgIG9wZW5lZCBpbiBhIGJpbmFyeSBtb2RlLgogICAgICIiIgorICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGUsIGludCk6CisgICAgICAgIGZpbGUgPSBvcy5mc3BhdGgoZmlsZSkKICAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlLCAoc3RyLCBieXRlcywgaW50KSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBmaWxlOiAlciIgJSBmaWxlKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vZGUsIHN0cik6CkBAIC0xODIsOCArMTgzLDggQEAKICAgICB0ZXh0ID0gInQiIGluIG1vZGVzCiAgICAgYmluYXJ5ID0gImIiIGluIG1vZGVzCiAgICAgaWYgIlUiIGluIG1vZGVzOgotICAgICAgICBpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IHVzZSBVIGFuZCB3cml0aW5nIG1vZGUgYXQgb25jZSIpCisgICAgICAgIGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nIG9yIHVwZGF0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBVIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoICd4JywgJ3cnLCAnYScsIG9yICcrJyIpCiAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICB3YXJuaW5ncy53YXJuKCInVScgbW9kZSBpcyBkZXByZWNhdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCkBAIC0xNTE2LDcgKzE1MTcsNyBAQAogICAgICAgICBpZiBzZWxmLl9mZCA+PSAwIGFuZCBzZWxmLl9jbG9zZWZkIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3VuY2xvc2VkIGZpbGUgJXInICUgKHNlbGYsKSwgUmVzb3VyY2VXYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9Miwgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvX3N0cnB0aW1lLnB5IGIvTGliL19zdHJwdGltZS5weQppbmRleCBmODQyMjdiLi5mZTk0MzYxIDEwMDY0NAotLS0gYS9MaWIvX3N0cnB0aW1lLnB5CisrKyBiL0xpYi9fc3RycHRpbWUucHkKQEAgLTE5OSwxMiArMTk5LDE1IEBACiAgICAgICAgICAgICAnZic6IHIiKD9QPGY+WzAtOV17MSw2fSkiLAogICAgICAgICAgICAgJ0gnOiByIig/UDxIPjJbMC0zXXxbMC0xXVxkfFxkKSIsCiAgICAgICAgICAgICAnSSc6IHIiKD9QPEk+MVswLTJdfDBbMS05XXxbMS05XSkiLAorICAgICAgICAgICAgJ0cnOiByIig/UDxHPlxkXGRcZFxkKSIsCiAgICAgICAgICAgICAnaic6IHIiKD9QPGo+MzZbMC02XXwzWzAtNV1cZHxbMS0yXVxkXGR8MFsxLTldXGR8MDBbMS05XXxbMS05XVxkfDBbMS05XXxbMS05XSkiLAogICAgICAgICAgICAgJ20nOiByIig/UDxtPjFbMC0yXXwwWzEtOV18WzEtOV0pIiwKICAgICAgICAgICAgICdNJzogciIoP1A8TT5bMC01XVxkfFxkKSIsCiAgICAgICAgICAgICAnUyc6IHIiKD9QPFM+NlswLTFdfFswLTVdXGR8XGQpIiwKICAgICAgICAgICAgICdVJzogciIoP1A8VT41WzAtM118WzAtNF1cZHxcZCkiLAogICAgICAgICAgICAgJ3cnOiByIig/UDx3PlswLTZdKSIsCisgICAgICAgICAgICAndSc6IHIiKD9QPHU+WzEtN10pIiwKKyAgICAgICAgICAgICdWJzogciIoP1A8Vj41WzAtM118MFsxLTldfFsxLTRdXGR8XGQpIiwKICAgICAgICAgICAgICMgVyBpcyBzZXQgYmVsb3cgYnkgdXNpbmcgJ1UnCiAgICAgICAgICAgICAneSc6IHIiKD9QPHk+XGRcZCkiLAogICAgICAgICAgICAgI1hYWDogRG9lcyAnWScgbmVlZCB0byB3b3JyeSBhYm91dCBoYXZpbmcgbGVzcyBvciBtb3JlIHRoYW4KQEAgLTI5OSw2ICszMDIsMjIgQEAKICAgICAgICAgcmV0dXJuIDEgKyBkYXlzX3RvX3dlZWsgKyBkYXlfb2Zfd2VlawogCiAKK2RlZiBfY2FsY19qdWxpYW5fZnJvbV9WKGlzb195ZWFyLCBpc29fd2VlaywgaXNvX3dlZWtkYXkpOgorICAgICIiIkNhbGN1bGF0ZSB0aGUgSnVsaWFuIGRheSBiYXNlZCBvbiB0aGUgSVNPIDg2MDEgeWVhciwgd2VlaywgYW5kIHdlZWtkYXkuCisgICAgSVNPIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMsIHdpdGggd2VlayAwMSBiZWluZyB0aGUgd2VlayBjb250YWluaW5nIDQgSmFuLgorICAgIElTTyB3ZWVrIGRheXMgcmFuZ2UgZnJvbSAxIChNb25kYXkpIHRvIDcgKFN1bmRheSkuCisgICAgIiIiCisgICAgY29ycmVjdGlvbiA9IGRhdGV0aW1lX2RhdGUoaXNvX3llYXIsIDEsIDQpLmlzb3dlZWtkYXkoKSArIDMKKyAgICBvcmRpbmFsID0gKGlzb193ZWVrICogNykgKyBpc29fd2Vla2RheSAtIGNvcnJlY3Rpb24KKyAgICAjIG9yZGluYWwgbWF5IGJlIG5lZ2F0aXZlIG9yIDAgbm93LCB3aGljaCBtZWFucyB0aGUgZGF0ZSBpcyBpbiB0aGUgcHJldmlvdXMKKyAgICAjIGNhbGVuZGFyIHllYXIKKyAgICBpZiBvcmRpbmFsIDwgMToKKyAgICAgICAgb3JkaW5hbCArPSBkYXRldGltZV9kYXRlKGlzb195ZWFyLCAxLCAxKS50b29yZGluYWwoKQorICAgICAgICBpc29feWVhciAtPSAxCisgICAgICAgIG9yZGluYWwgLT0gZGF0ZXRpbWVfZGF0ZShpc29feWVhciwgMSwgMSkudG9vcmRpbmFsKCkKKyAgICByZXR1cm4gaXNvX3llYXIsIG9yZGluYWwKKworCiBkZWYgX3N0cnB0aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQ9IiVhICViICVkICVIOiVNOiVTICVZIik6CiAgICAgIiIiUmV0dXJuIGEgMi10dXBsZSBjb25zaXN0aW5nIG9mIGEgdGltZSBzdHJ1Y3QgYW5kIGFuIGludCBjb250YWluaW5nCiAgICAgdGhlIG51bWJlciBvZiBtaWNyb3NlY29uZHMgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlCkBAIC0zNDUsMTUgKzM2NCwxNSBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmNvbnZlcnRlZCBkYXRhIHJlbWFpbnM6ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RyaW5nW2ZvdW5kLmVuZCgpOl0pCiAKLSAgICB5ZWFyID0gTm9uZQorICAgIGlzb195ZWFyID0geWVhciA9IE5vbmUKICAgICBtb250aCA9IGRheSA9IDEKICAgICBob3VyID0gbWludXRlID0gc2Vjb25kID0gZnJhY3Rpb24gPSAwCiAgICAgdHogPSAtMQogICAgIHR6b2Zmc2V0ID0gTm9uZQogICAgICMgRGVmYXVsdCB0byAtMSB0byBzaWduaWZ5IHRoYXQgdmFsdWVzIG5vdCBrbm93bjsgbm90IGNyaXRpY2FsIHRvIGhhdmUsCiAgICAgIyB0aG91Z2gKLSAgICB3ZWVrX29mX3llYXIgPSAtMQotICAgIHdlZWtfb2ZfeWVhcl9zdGFydCA9IC0xCisgICAgaXNvX3dlZWsgPSB3ZWVrX29mX3llYXIgPSBOb25lCisgICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gTm9uZQogICAgICMgd2Vla2RheSBhbmQganVsaWFuIGRlZmF1bHRlZCB0byBOb25lIHNvIGFzIHRvIHNpZ25hbCBuZWVkIHRvIGNhbGN1bGF0ZQogICAgICMgdmFsdWVzCiAgICAgd2Vla2RheSA9IGp1bGlhbiA9IE5vbmUKQEAgLTM3NSw2ICszOTQsOCBAQAogICAgICAgICAgICAgICAgIHllYXIgKz0gMTkwMAogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnWSc6CiAgICAgICAgICAgICB5ZWFyID0gaW50KGZvdW5kX2RpY3RbJ1knXSkKKyAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ0cnOgorICAgICAgICAgICAgaXNvX3llYXIgPSBpbnQoZm91bmRfZGljdFsnRyddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnbSc6CiAgICAgICAgICAgICBtb250aCA9IGludChmb3VuZF9kaWN0WydtJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdCJzoKQEAgLTQyMCw2ICs0NDEsOSBAQAogICAgICAgICAgICAgICAgIHdlZWtkYXkgPSA2CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHdlZWtkYXkgLT0gMQorICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAndSc6CisgICAgICAgICAgICB3ZWVrZGF5ID0gaW50KGZvdW5kX2RpY3RbJ3UnXSkKKyAgICAgICAgICAgIHdlZWtkYXkgLT0gMQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnaic6CiAgICAgICAgICAgICBqdWxpYW4gPSBpbnQoZm91bmRfZGljdFsnaiddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSBpbiAoJ1UnLCAnVycpOgpAQCAtNDMwLDYgKzQ1NCw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgVyBzdGFydHMgd2VlayBvbiBNb25kYXkuCiAgICAgICAgICAgICAgICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gMAorICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnVic6CisgICAgICAgICAgICBpc29fd2VlayA9IGludChmb3VuZF9kaWN0WydWJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICd6JzoKICAgICAgICAgICAgIHogPSBmb3VuZF9kaWN0Wyd6J10KICAgICAgICAgICAgIHR6b2Zmc2V0ID0gaW50KHpbMTozXSkgKiA2MCArIGludCh6WzM6NV0pCkBAIC00NTAsMzIgKzQ3Niw2MSBAQAogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgdHogPSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAjIERlYWwgd2l0aCB0aGUgY2FzZXMgd2hlcmUgYW1iaWd1aXRpZXMgYXJpemUKKyAgICAjIGRvbid0IGFzc3VtZSBkZWZhdWx0IHZhbHVlcyBmb3IgSVNPIHdlZWsveWVhcgorICAgIGlmIHllYXIgaXMgTm9uZSBhbmQgaXNvX3llYXIgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIGlzb193ZWVrIGlzIE5vbmUgb3Igd2Vla2RheSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSVNPIHllYXIgZGlyZWN0aXZlICclRycgbXVzdCBiZSB1c2VkIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIElTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIGFuZCBhIHdlZWtkYXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0aXZlICgnJUEnLCAnJWEnLCAnJXcnLCBvciAnJXUnKS4iKQorICAgICAgICBpZiBqdWxpYW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJEYXkgb2YgdGhlIHllYXIgZGlyZWN0aXZlICclaicgaXMgbm90ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBhdGlibGUgd2l0aCBJU08geWVhciBkaXJlY3RpdmUgJyVHJy4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlICclWScgaW5zdGVhZC4iKQorICAgIGVsaWYgd2Vla19vZl95ZWFyIGlzIE5vbmUgYW5kIGlzb193ZWVrIGlzIG5vdCBOb25lOgorICAgICAgICBpZiB3ZWVrZGF5IGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08gd2VlayBkaXJlY3RpdmUgJyVWJyBtdXN0IGJlIHVzZWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgSVNPIHllYXIgZGlyZWN0aXZlICclRycgYW5kIGEgd2Vla2RheSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3RpdmUgKCclQScsICclYScsICcldycsIG9yICcldScpLiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08gd2VlayBkaXJlY3RpdmUgJyVWJyBpcyBpbmNvbXBhdGlibGUgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgeWVhciBkaXJlY3RpdmUgJyVZJy4gVXNlIHRoZSBJU08geWVhciAnJUcnICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RlYWQuIikKKwogICAgIGxlYXBfeWVhcl9maXggPSBGYWxzZQogICAgIGlmIHllYXIgaXMgTm9uZSBhbmQgbW9udGggPT0gMiBhbmQgZGF5ID09IDI5OgogICAgICAgICB5ZWFyID0gMTkwNCAgIyAxOTA0IGlzIGZpcnN0IGxlYXAgeWVhciBvZiAyMHRoIGNlbnR1cnkKICAgICAgICAgbGVhcF95ZWFyX2ZpeCA9IFRydWUKICAgICBlbGlmIHllYXIgaXMgTm9uZToKICAgICAgICAgeWVhciA9IDE5MDAKKworCiAgICAgIyBJZiB3ZSBrbm93IHRoZSB3ZWVrIG9mIHRoZSB5ZWFyIGFuZCB3aGF0IGRheSBvZiB0aGF0IHdlZWssIHdlIGNhbiBmaWd1cmUKICAgICAjIG91dCB0aGUgSnVsaWFuIGRheSBvZiB0aGUgeWVhci4KLSAgICBpZiBqdWxpYW4gaXMgTm9uZSBhbmQgd2Vla19vZl95ZWFyICE9IC0xIGFuZCB3ZWVrZGF5IGlzIG5vdCBOb25lOgotICAgICAgICB3ZWVrX3N0YXJ0c19Nb24gPSBUcnVlIGlmIHdlZWtfb2ZfeWVhcl9zdGFydCA9PSAwIGVsc2UgRmFsc2UKLSAgICAgICAganVsaWFuID0gX2NhbGNfanVsaWFuX2Zyb21fVV9vcl9XKHllYXIsIHdlZWtfb2ZfeWVhciwgd2Vla2RheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla19zdGFydHNfTW9uKQotICAgICAgICBpZiBqdWxpYW4gPD0gMDoKKyAgICBpZiBqdWxpYW4gaXMgTm9uZSBhbmQgd2Vla2RheSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgd2Vla19vZl95ZWFyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2Vla19zdGFydHNfTW9uID0gVHJ1ZSBpZiB3ZWVrX29mX3llYXJfc3RhcnQgPT0gMCBlbHNlIEZhbHNlCisgICAgICAgICAgICBqdWxpYW4gPSBfY2FsY19qdWxpYW5fZnJvbV9VX29yX1coeWVhciwgd2Vla19vZl95ZWFyLCB3ZWVrZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla19zdGFydHNfTW9uKQorICAgICAgICBlbGlmIGlzb195ZWFyIGlzIG5vdCBOb25lIGFuZCBpc29fd2VlayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHllYXIsIGp1bGlhbiA9IF9jYWxjX2p1bGlhbl9mcm9tX1YoaXNvX3llYXIsIGlzb193ZWVrLCB3ZWVrZGF5ICsgMSkKKyAgICAgICAgaWYganVsaWFuIGlzIG5vdCBOb25lIGFuZCBqdWxpYW4gPD0gMDoKICAgICAgICAgICAgIHllYXIgLT0gMQogICAgICAgICAgICAgeWRheSA9IDM2NiBpZiBjYWxlbmRhci5pc2xlYXAoeWVhcikgZWxzZSAzNjUKICAgICAgICAgICAgIGp1bGlhbiArPSB5ZGF5Ci0gICAgIyBDYW5ub3QgcHJlLWNhbGN1bGF0ZSBkYXRldGltZV9kYXRlKCkgc2luY2UgY2FuIGNoYW5nZSBpbiBKdWxpYW4KLSAgICAjIGNhbGN1bGF0aW9uIGFuZCB0aHVzIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVlIGZvciB0aGUgZGF5IG9mIHRoZSB3ZWVrCi0gICAgIyBjYWxjdWxhdGlvbi4KKwogICAgIGlmIGp1bGlhbiBpcyBOb25lOgorICAgICAgICAjIENhbm5vdCBwcmUtY2FsY3VsYXRlIGRhdGV0aW1lX2RhdGUoKSBzaW5jZSBjYW4gY2hhbmdlIGluIEp1bGlhbgorICAgICAgICAjIGNhbGN1bGF0aW9uIGFuZCB0aHVzIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVlIGZvciB0aGUgZGF5IG9mCisgICAgICAgICMgdGhlIHdlZWsgY2FsY3VsYXRpb24uCiAgICAgICAgICMgTmVlZCB0byBhZGQgMSB0byByZXN1bHQgc2luY2UgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGlzIDEsIG5vdCAwLgogICAgICAgICBqdWxpYW4gPSBkYXRldGltZV9kYXRlKHllYXIsIG1vbnRoLCBkYXkpLnRvb3JkaW5hbCgpIC0gXAogICAgICAgICAgICAgICAgICAgZGF0ZXRpbWVfZGF0ZSh5ZWFyLCAxLCAxKS50b29yZGluYWwoKSArIDEKLSAgICBlbHNlOiAgIyBBc3N1bWUgdGhhdCBpZiB0aGV5IGJvdGhlcmVkIHRvIGluY2x1ZGUgSnVsaWFuIGRheSBpdCB3aWxsCi0gICAgICAgICAgICMgYmUgYWNjdXJhdGUuCi0gICAgICAgIGRhdGV0aW1lX3Jlc3VsdCA9IGRhdGV0aW1lX2RhdGUuZnJvbW9yZGluYWwoKGp1bGlhbiAtIDEpICsgZGF0ZXRpbWVfZGF0ZSh5ZWFyLCAxLCAxKS50b29yZGluYWwoKSkKKyAgICBlbHNlOiAgIyBBc3N1bWUgdGhhdCBpZiB0aGV5IGJvdGhlcmVkIHRvIGluY2x1ZGUgSnVsaWFuIGRheSAob3IgaWYgaXQgd2FzCisgICAgICAgICAgICMgY2FsY3VsYXRlZCBhYm92ZSB3aXRoIHllYXIvd2Vlay93ZWVrZGF5KSBpdCB3aWxsIGJlIGFjY3VyYXRlLgorICAgICAgICBkYXRldGltZV9yZXN1bHQgPSBkYXRldGltZV9kYXRlLmZyb21vcmRpbmFsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqdWxpYW4gLSAxKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWVfZGF0ZSh5ZWFyLCAxLCAxKS50b29yZGluYWwoKSkKICAgICAgICAgeWVhciA9IGRhdGV0aW1lX3Jlc3VsdC55ZWFyCiAgICAgICAgIG1vbnRoID0gZGF0ZXRpbWVfcmVzdWx0Lm1vbnRoCiAgICAgICAgIGRheSA9IGRhdGV0aW1lX3Jlc3VsdC5kYXkKZGlmZiAtLWdpdCBhL0xpYi9haWZjLnB5IGIvTGliL2FpZmMucHkKaW5kZXggN2ViZGJlYi4uNjkyZDBiZiAxMDA2NDQKLS0tIGEvTGliL2FpZmMucHkKKysrIGIvTGliL2FpZmMucHkKQEAgLTI1Nyw2ICsyNTcsMTUgQEAKIF9haWZjX3BhcmFtcyA9IG5hbWVkdHVwbGUoJ19haWZjX3BhcmFtcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICduY2hhbm5lbHMgc2FtcHdpZHRoIGZyYW1lcmF0ZSBuZnJhbWVzIGNvbXB0eXBlIGNvbXBuYW1lJykKIAorX2FpZmNfcGFyYW1zLm5jaGFubmVscy5fX2RvY19fID0gJ051bWJlciBvZiBhdWRpbyBjaGFubmVscyAoMSBmb3IgbW9ubywgMiBmb3Igc3RlcmVvKScKK19haWZjX3BhcmFtcy5zYW1wd2lkdGguX19kb2NfXyA9ICdTYW1wbGUgd2lkdGggaW4gYnl0ZXMnCitfYWlmY19wYXJhbXMuZnJhbWVyYXRlLl9fZG9jX18gPSAnU2FtcGxpbmcgZnJlcXVlbmN5JworX2FpZmNfcGFyYW1zLm5mcmFtZXMuX19kb2NfXyA9ICdOdW1iZXIgb2YgYXVkaW8gZnJhbWVzJworX2FpZmNfcGFyYW1zLmNvbXB0eXBlLl9fZG9jX18gPSAnQ29tcHJlc3Npb24gdHlwZSAoIk5PTkUiIGZvciBBSUZGIGZpbGVzKScKK19haWZjX3BhcmFtcy5jb21wbmFtZS5fX2RvY19fID0gKCIiIlwKK0EgaHVtYW4tcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY29tcHJlc3Npb24gdHlwZQorKCdub3QgY29tcHJlc3NlZCcgZm9yIEFJRkYgZmlsZXMpIiIiKQorCiAKIGNsYXNzIEFpZmNfcmVhZDoKICAgICAjIFZhcmlhYmxlcyB1c2VkIGluIHRoaXMgY2xhc3M6CmRpZmYgLS1naXQgYS9MaWIvYXJncGFyc2UucHkgYi9MaWIvYXJncGFyc2UucHkKaW5kZXggOWEwNjcxOS4uMjA5YjRlOSAxMDA2NDQKLS0tIGEvTGliL2FyZ3BhcnNlLnB5CisrKyBiL0xpYi9hcmdwYXJzZS5weQpAQCAtMTE4LDEwICsxMTgsMTYgQEAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHR5cGVfbmFtZSA9IHR5cGUoc2VsZikuX19uYW1lX18KICAgICAgICAgYXJnX3N0cmluZ3MgPSBbXQorICAgICAgICBzdGFyX2FyZ3MgPSB7fQogICAgICAgICBmb3IgYXJnIGluIHNlbGYuX2dldF9hcmdzKCk6CiAgICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQocmVwcihhcmcpKQogICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5fZ2V0X2t3YXJncygpOgotICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKCclcz0lcicgJSAobmFtZSwgdmFsdWUpKQorICAgICAgICAgICAgaWYgbmFtZS5pc2lkZW50aWZpZXIoKToKKyAgICAgICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0YXJfYXJnc1tuYW1lXSA9IHZhbHVlCisgICAgICAgIGlmIHN0YXJfYXJnczoKKyAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZCgnKiolcycgJSByZXByKHN0YXJfYXJncykpCiAgICAgICAgIHJldHVybiAnJXMoJXMpJyAlICh0eXBlX25hbWUsICcsICcuam9pbihhcmdfc3RyaW5ncykpCiAKICAgICBkZWYgX2dldF9rd2FyZ3Moc2VsZik6CkBAIC0yMDQsOCArMjEwLDYgQEAKICAgICAgICAgICAgIGlmIHNlbGYucGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0dGVyLl9pbmRlbnQoKQogICAgICAgICAgICAgam9pbiA9IHNlbGYuZm9ybWF0dGVyLl9qb2luX3BhcnRzCi0gICAgICAgICAgICBmb3IgZnVuYywgYXJncyBpbiBzZWxmLml0ZW1zOgotICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MpCiAgICAgICAgICAgICBpdGVtX2hlbHAgPSBqb2luKFtmdW5jKCphcmdzKSBmb3IgZnVuYywgYXJncyBpbiBzZWxmLml0ZW1zXSkKICAgICAgICAgICAgIGlmIHNlbGYucGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0dGVyLl9kZWRlbnQoKQpkaWZmIC0tZ2l0IGEvTGliL2FzdC5weSBiL0xpYi9hc3QucHkKaW5kZXggMDE3MDQ3Mi4uMTU2YTFmMiAxMDA2NDQKLS0tIGEvTGliL2FzdC5weQorKysgYi9MaWIvYXN0LnB5CkBAIC0zNSw2ICszNSw4IEBACiAgICAgcmV0dXJuIGNvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgUHlDRl9PTkxZX0FTVCkKIAogCitfTlVNX1RZUEVTID0gKGludCwgZmxvYXQsIGNvbXBsZXgpCisKIGRlZiBsaXRlcmFsX2V2YWwobm9kZV9vcl9zdHJpbmcpOgogICAgICIiIgogICAgIFNhZmVseSBldmFsdWF0ZSBhbiBleHByZXNzaW9uIG5vZGUgb3IgYSBzdHJpbmcgY29udGFpbmluZyBhIFB5dGhvbgpAQCAtNDcsNyArNDksOSBAQAogICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9vcl9zdHJpbmcsIEV4cHJlc3Npb24pOgogICAgICAgICBub2RlX29yX3N0cmluZyA9IG5vZGVfb3Jfc3RyaW5nLmJvZHkKICAgICBkZWYgX2NvbnZlcnQobm9kZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgKFN0ciwgQnl0ZXMpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBDb25zdGFudCk6CisgICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgKFN0ciwgQnl0ZXMpKToKICAgICAgICAgICAgIHJldHVybiBub2RlLnMKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIE51bSk6CiAgICAgICAgICAgICByZXR1cm4gbm9kZS5uCkBAIC02MiwyNCArNjYsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGluIHppcChub2RlLmtleXMsIG5vZGUudmFsdWVzKSkKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIE5hbWVDb25zdGFudCk6CiAgICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgVW5hcnlPcCkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUub3AsIChVQWRkLCBVU3ViKSkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUub3BlcmFuZCwgKE51bSwgVW5hcnlPcCwgQmluT3ApKToKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIFVuYXJ5T3ApIGFuZCBpc2luc3RhbmNlKG5vZGUub3AsIChVQWRkLCBVU3ViKSk6CiAgICAgICAgICAgICBvcGVyYW5kID0gX2NvbnZlcnQobm9kZS5vcGVyYW5kKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBVQWRkKToKLSAgICAgICAgICAgICAgICByZXR1cm4gKyBvcGVyYW5kCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAtIG9wZXJhbmQKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIEJpbk9wKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5vcCwgKEFkZCwgU3ViKSkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUucmlnaHQsIChOdW0sIFVuYXJ5T3AsIEJpbk9wKSkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUubGVmdCwgKE51bSwgVW5hcnlPcCwgQmluT3ApKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3BlcmFuZCwgX05VTV9UWVBFUyk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBVQWRkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICsgb3BlcmFuZAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtIG9wZXJhbmQKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIEJpbk9wKSBhbmQgaXNpbnN0YW5jZShub2RlLm9wLCAoQWRkLCBTdWIpKToKICAgICAgICAgICAgIGxlZnQgPSBfY29udmVydChub2RlLmxlZnQpCiAgICAgICAgICAgICByaWdodCA9IF9jb252ZXJ0KG5vZGUucmlnaHQpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIEFkZCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxlZnQsIF9OVU1fVFlQRVMpIGFuZCBpc2luc3RhbmNlKHJpZ2h0LCBfTlVNX1RZUEVTKToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIEFkZCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ21hbGZvcm1lZCBub2RlIG9yIHN0cmluZzogJyArIHJlcHIobm9kZSkpCiAgICAgcmV0dXJuIF9jb252ZXJ0KG5vZGVfb3Jfc3RyaW5nKQogCkBAIC0xOTYsMTIgKzE5NywxOSBAQAogICAgICIiIgogICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUsIChBc3luY0Z1bmN0aW9uRGVmLCBGdW5jdGlvbkRlZiwgQ2xhc3NEZWYsIE1vZHVsZSkpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVyIGNhbid0IGhhdmUgZG9jc3RyaW5ncyIgJSBub2RlLl9fY2xhc3NfXy5fX25hbWVfXykKLSAgICBpZiBub2RlLmJvZHkgYW5kIGlzaW5zdGFuY2Uobm9kZS5ib2R5WzBdLCBFeHByKSBhbmQgXAotICAgICAgIGlzaW5zdGFuY2Uobm9kZS5ib2R5WzBdLnZhbHVlLCBTdHIpOgotICAgICAgICBpZiBjbGVhbjoKLSAgICAgICAgICAgIGltcG9ydCBpbnNwZWN0Ci0gICAgICAgICAgICByZXR1cm4gaW5zcGVjdC5jbGVhbmRvYyhub2RlLmJvZHlbMF0udmFsdWUucykKLSAgICAgICAgcmV0dXJuIG5vZGUuYm9keVswXS52YWx1ZS5zCisgICAgaWYgbm90KG5vZGUuYm9keSBhbmQgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0sIEV4cHIpKToKKyAgICAgICAgcmV0dXJuCisgICAgbm9kZSA9IG5vZGUuYm9keVswXS52YWx1ZQorICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgU3RyKToKKyAgICAgICAgdGV4dCA9IG5vZGUucworICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBDb25zdGFudCkgYW5kIGlzaW5zdGFuY2Uobm9kZS52YWx1ZSwgc3RyKToKKyAgICAgICAgdGV4dCA9IG5vZGUudmFsdWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4KKyAgICBpZiBjbGVhbjoKKyAgICAgICAgaW1wb3J0IGluc3BlY3QKKyAgICAgICAgdGV4dCA9IGluc3BlY3QuY2xlYW5kb2ModGV4dCkKKyAgICByZXR1cm4gdGV4dAogCiAKIGRlZiB3YWxrKG5vZGUpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaGF0LnB5IGIvTGliL2FzeW5jaGF0LnB5CmluZGV4IGY3MjhkMWIuLmZjMTE0NmEgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2hhdC5weQorKysgYi9MaWIvYXN5bmNoYXQucHkKQEAgLTI4NSwzNSArMjg1LDYgQEAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogCi1jbGFzcyBmaWZvOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaXN0PU5vbmUpOgotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybignZmlmbyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIGlmIG5vdCBsaXN0OgotICAgICAgICAgICAgc2VsZi5saXN0ID0gZGVxdWUoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5saXN0ID0gZGVxdWUobGlzdCkKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYubGlzdCkKLQotICAgIGRlZiBpc19lbXB0eShzZWxmKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmxpc3QKLQotICAgIGRlZiBmaXJzdChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYubGlzdFswXQotCi0gICAgZGVmIHB1c2goc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubGlzdC5hcHBlbmQoZGF0YSkKLQotICAgIGRlZiBwb3Aoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubGlzdDoKLSAgICAgICAgICAgIHJldHVybiAoMSwgc2VsZi5saXN0LnBvcGxlZnQoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAoMCwgTm9uZSkKLQotCiAjIEdpdmVuICdoYXlzdGFjaycsIHNlZSBpZiBhbnkgcHJlZml4IG9mICduZWVkbGUnIGlzIGF0IGl0cyBlbmQuICBUaGlzCiAjIGFzc3VtZXMgYW4gZXhhY3QgbWF0Y2ggaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YKICMgY2hhcmFjdGVycyBtYXRjaGVkLgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weQppbmRleCAwMzkzNWVhLi5hYzZlOGYyIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weQpAQCAtNDk2LDcgKzQ5Niw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfY2xvc2VkKCk6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZXZlbnQgbG9vcCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZXZlbnQgbG9vcCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19ydW5uaW5nKCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkgYi9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkKaW5kZXggYmNjNDgxZC4uMjg0ODJiNyAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weQpAQCAtMTI4LDcgKzEyOCw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBnZXRfcGlkKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5CmluZGV4IGZlZjMyMDUuLmZmMTI4NzcgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkKQEAgLTkyLDcgKzkyLDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9zb2NrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHBpcGUgdHJhbnNwb3J0Jyk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkKaW5kZXggMmYwMmQ3Ni4uMWUxNmFjNiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weQpAQCAtNTk2LDcgKzU5Niw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fc29jayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9zb2NrLmNsb3NlKCkKIAogICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiB0cmFuc3BvcnQnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3NzbHByb3RvLnB5IGIvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKaW5kZXggYWZlODVhMS4uOTJkM2M0YyAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKKysrIGIvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKQEAgLTMzMSw3ICszMzEsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgcGF1c2VfcmVhZGluZyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkgYi9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5CmluZGV4IDM5NmU2YWUuLmFjOGE4ZWYgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkKKysrIGIvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weQpAQCAtMTE3LDEwICsxMTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QnLCAndGVzdF9hc3luY2lvJykKICAgICAgICAga2V5ZmlsZSA9IG9zLnBhdGguam9pbihoZXJlLCAnc3NsX2tleS5wZW0nKQogICAgICAgICBjZXJ0ZmlsZSA9IG9zLnBhdGguam9pbihoZXJlLCAnc3NsX2NlcnQucGVtJykKLSAgICAgICAgc3NvY2sgPSBzc2wud3JhcF9zb2NrZXQocmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1rZXlmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1jZXJ0ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSkKKyAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisKKyAgICAgICAgc3NvY2sgPSBjb250ZXh0LndyYXBfc29ja2V0KHJlcXVlc3QsIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuUmVxdWVzdEhhbmRsZXJDbGFzcyhzc29jaywgY2xpZW50X2FkZHJlc3MsIHNlbGYpCiAgICAgICAgICAgICBzc29jay5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL3VuaXhfZXZlbnRzLnB5CmluZGV4IGEwMTEzZjYuLjJiMjJkY2UgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3VuaXhfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3VuaXhfZXZlbnRzLnB5CkBAIC0zOTMsNyArMzkzLDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9waXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuX3BpcGUuY2xvc2UoKQogCiAgICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHBpcGUgdHJhbnNwb3J0Jyk6CkBAIC01OTMsNyArNTk0LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9waXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuX3BpcGUuY2xvc2UoKQogCiAgICAgZGVmIGFib3J0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weSBiL0xpYi9hc3luY2lvL3dpbmRvd3NfdXRpbHMucHkKaW5kZXggODcwY2QxMy4uN2M2M2ZiOSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weQorKysgYi9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5CkBAIC0xNTksNyArMTU5LDggQEAKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jb3JlLnB5IGIvTGliL2FzeW5jb3JlLnB5CmluZGV4IDNiNTFmMGYuLjcwNWU0MDYgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY29yZS5weQorKysgYi9MaWIvYXN5bmNvcmUucHkKQEAgLTMzMyw3ICszMzMsNyBAQAogICAgICAgICBzZWxmLmNvbm5lY3RpbmcgPSBUcnVlCiAgICAgICAgIGVyciA9IHNlbGYuc29ja2V0LmNvbm5lY3RfZXgoYWRkcmVzcykKICAgICAgICAgaWYgZXJyIGluIChFSU5QUk9HUkVTUywgRUFMUkVBRFksIEVXT1VMREJMT0NLKSBcCi0gICAgICAgIG9yIGVyciA9PSBFSU5WQUwgYW5kIG9zLm5hbWUgaW4gKCdudCcsICdjZScpOgorICAgICAgICBvciBlcnIgPT0gRUlOVkFMIGFuZCBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgICBzZWxmLmFkZHIgPSBhZGRyZXNzCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgZXJyIGluICgwLCBFSVNDT05OKToKQEAgLTU5NSw3ICs1OTUsOCBAQAogCiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5mZCA+PSAwOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIGZpbGUgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIGZpbGUgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgICAgICBkZWYgcmVjdihzZWxmLCAqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvYmFzZTY0LnB5IGIvTGliL2Jhc2U2NC5weQppbmRleCBhZGFlYzFkLi41OGY2YWQ2IDEwMDc1NQotLS0gYS9MaWIvYmFzZTY0LnB5CisrKyBiL0xpYi9iYXNlNjQucHkKQEAgLTU1LDggKzU1LDcgQEAKICAgICBhbHRlcm5hdGl2ZSBhbHBoYWJldCBmb3IgdGhlICcrJyBhbmQgJy8nIGNoYXJhY3RlcnMuICBUaGlzIGFsbG93cyBhbgogICAgIGFwcGxpY2F0aW9uIHRvIGUuZy4gZ2VuZXJhdGUgdXJsIG9yIGZpbGVzeXN0ZW0gc2FmZSBCYXNlNjQgc3RyaW5ncy4KICAgICAiIiIKLSAgICAjIFN0cmlwIG9mZiB0aGUgdHJhaWxpbmcgbmV3bGluZQotICAgIGVuY29kZWQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHMpWzotMV0KKyAgICBlbmNvZGVkID0gYmluYXNjaWkuYjJhX2Jhc2U2NChzLCBuZXdsaW5lPUZhbHNlKQogICAgIGlmIGFsdGNoYXJzIGlzIG5vdCBOb25lOgogICAgICAgICBhc3NlcnQgbGVuKGFsdGNoYXJzKSA9PSAyLCByZXByKGFsdGNoYXJzKQogICAgICAgICByZXR1cm4gZW5jb2RlZC50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInKy8nLCBhbHRjaGFycykpCkBAIC0xNTYsNyArMTU1LDcgQEAKICAgICBsZWZ0b3ZlciA9IGxlbihzKSAlIDUKICAgICAjIFBhZCB0aGUgbGFzdCBxdWFudHVtIHdpdGggemVybyBiaXRzIGlmIG5lY2Vzc2FyeQogICAgIGlmIGxlZnRvdmVyOgotICAgICAgICBzID0gcyArIGJ5dGVzKDUgLSBsZWZ0b3ZlcikgICMgRG9uJ3QgdXNlICs9ICEKKyAgICAgICAgcyA9IHMgKyBiJ1wwJyAqICg1IC0gbGVmdG92ZXIpICAjIERvbid0IHVzZSArPSAhCiAgICAgZW5jb2RlZCA9IGJ5dGVhcnJheSgpCiAgICAgZnJvbV9ieXRlcyA9IGludC5mcm9tX2J5dGVzCiAgICAgYjMydGFiMiA9IF9iMzJ0YWIyCmRpZmYgLS1naXQgYS9MaWIvY2FsZW5kYXIucHkgYi9MaWIvY2FsZW5kYXIucHkKaW5kZXggNTI0NGI4ZC4uODViYWYyZSAxMDA2NDQKLS0tIGEvTGliL2NhbGVuZGFyLnB5CisrKyBiL0xpYi9jYWxlbmRhci5weQpAQCAtMTIsNyArMTIsOSBAQAogX19hbGxfXyA9IFsiSWxsZWdhbE1vbnRoRXJyb3IiLCAiSWxsZWdhbFdlZWtkYXlFcnJvciIsICJzZXRmaXJzdHdlZWtkYXkiLAogICAgICAgICAgICAiZmlyc3R3ZWVrZGF5IiwgImlzbGVhcCIsICJsZWFwZGF5cyIsICJ3ZWVrZGF5IiwgIm1vbnRocmFuZ2UiLAogICAgICAgICAgICAibW9udGhjYWxlbmRhciIsICJwcm1vbnRoIiwgIm1vbnRoIiwgInByY2FsIiwgImNhbGVuZGFyIiwKLSAgICAgICAgICAgInRpbWVnbSIsICJtb250aF9uYW1lIiwgIm1vbnRoX2FiYnIiLCAiZGF5X25hbWUiLCAiZGF5X2FiYnIiXQorICAgICAgICAgICAidGltZWdtIiwgIm1vbnRoX25hbWUiLCAibW9udGhfYWJiciIsICJkYXlfbmFtZSIsICJkYXlfYWJiciIsCisgICAgICAgICAgICJDYWxlbmRhciIsICJUZXh0Q2FsZW5kYXIiLCAiSFRNTENhbGVuZGFyIiwgIkxvY2FsZVRleHRDYWxlbmRhciIsCisgICAgICAgICAgICJMb2NhbGVIVE1MQ2FsZW5kYXIiLCAid2Vla2hlYWRlciJdCiAKICMgRXhjZXB0aW9uIHJhaXNlZCBmb3IgYmFkIGlucHV0ICh3aXRoIHN0cmluZyBwYXJhbWV0ZXIgZm9yIGRldGFpbHMpCiBlcnJvciA9IFZhbHVlRXJyb3IKQEAgLTYwNSw1MSArNjA3LDYzIEBACiAKIAogZGVmIG1haW4oYXJncyk6Ci0gICAgaW1wb3J0IG9wdHBhcnNlCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSJ1c2FnZTogJXByb2cgW29wdGlvbnNdIFt5ZWFyIFttb250aF1dIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBpbXBvcnQgYXJncGFyc2UKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgdGV4dGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgndGV4dCBvbmx5IGFyZ3VtZW50cycpCisgICAgaHRtbGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnaHRtbCBvbmx5IGFyZ3VtZW50cycpCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi13IiwgIi0td2lkdGgiLAotICAgICAgICBkZXN0PSJ3aWR0aCIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MiwKLSAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMiwgdGV4dCBvbmx5KSIKKyAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9MiwKKyAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMikiCiAgICAgKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgIHRleHRncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICItbCIsICItLWxpbmVzIiwKLSAgICAgICAgZGVzdD0ibGluZXMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTEsCi0gICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTEsCisgICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXMiLCAiLS1zcGFjaW5nIiwKLSAgICAgICAgZGVzdD0ic3BhY2luZyIsIHR5cGU9ImludCIsIGRlZmF1bHQ9NiwKLSAgICAgICAgaGVscD0ic3BhY2luZyBiZXR3ZWVuIG1vbnRocyAoZGVmYXVsdCA2LCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD02LAorICAgICAgICBoZWxwPSJzcGFjaW5nIGJldHdlZW4gbW9udGhzIChkZWZhdWx0IDYpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLW0iLCAiLS1tb250aHMiLAotICAgICAgICBkZXN0PSJtb250aHMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTMsCi0gICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTMsCisgICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBodG1sZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLWMiLCAiLS1jc3MiLAotICAgICAgICBkZXN0PSJjc3MiLCBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAotICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIChodG1sIG9ubHkpIgorICAgICAgICBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAorICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLUwiLCAiLS1sb2NhbGUiLAotICAgICAgICBkZXN0PSJsb2NhbGUiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgaGVscD0ibG9jYWxlIHRvIGJlIHVzZWQgZnJvbSBtb250aCBhbmQgd2Vla2RheSBuYW1lcyIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1lIiwgIi0tZW5jb2RpbmciLAotICAgICAgICBkZXN0PSJlbmNvZGluZyIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0iRW5jb2RpbmcgdG8gdXNlIGZvciBvdXRwdXQuIgorICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgIGhlbHA9ImVuY29kaW5nIHRvIHVzZSBmb3Igb3V0cHV0IgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXQiLCAiLS10eXBlIiwKLSAgICAgICAgZGVzdD0idHlwZSIsIGRlZmF1bHQ9InRleHQiLAorICAgICAgICBkZWZhdWx0PSJ0ZXh0IiwKICAgICAgICAgY2hvaWNlcz0oInRleHQiLCAiaHRtbCIpLAogICAgICAgICBoZWxwPSJvdXRwdXQgdHlwZSAodGV4dCBvciBodG1sKSIKICAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgInllYXIiLAorICAgICAgICBuYXJncz0nPycsIHR5cGU9aW50LAorICAgICAgICBoZWxwPSJ5ZWFyIG51bWJlciAoMS05OTk5KSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIm1vbnRoIiwKKyAgICAgICAgbmFyZ3M9Jz8nLCB0eXBlPWludCwKKyAgICAgICAgaGVscD0ibW9udGggbnVtYmVyICgxLTEyLCB0ZXh0IG9ubHkpIgorICAgICkKIAotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3NbMTpdKQogCiAgICAgaWYgb3B0aW9ucy5sb2NhbGUgYW5kIG5vdCBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICBwYXJzZXIuZXJyb3IoImlmIC0tbG9jYWxlIGlzIHNwZWNpZmllZCAtLWVuY29kaW5nIGlzIHJlcXVpcmVkIikKQEAgLTY2NywxMCArNjgxLDEwIEBACiAgICAgICAgICAgICBlbmNvZGluZyA9IHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQogICAgICAgICBvcHRkaWN0ID0gZGljdChlbmNvZGluZz1lbmNvZGluZywgY3NzPW9wdGlvbnMuY3NzKQogICAgICAgICB3cml0ZSA9IHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgICAgICBpZiBvcHRpb25zLnllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShkYXRldGltZS5kYXRlLnRvZGF5KCkueWVhciwgKipvcHRkaWN0KSkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShpbnQoYXJnc1sxXSksICoqb3B0ZGljdCkpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgd3JpdGUoY2FsLmZvcm1hdHllYXJwYWdlKG9wdGlvbnMueWVhciwgKipvcHRkaWN0KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhcnNlci5lcnJvcigiaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMiKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKQEAgLTY4MCwxOCArNjk0LDE1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjYWwgPSBUZXh0Q2FsZW5kYXIoKQogICAgICAgICBvcHRkaWN0ID0gZGljdCh3PW9wdGlvbnMud2lkdGgsIGw9b3B0aW9ucy5saW5lcykKLSAgICAgICAgaWYgbGVuKGFyZ3MpICE9IDM6CisgICAgICAgIGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKICAgICAgICAgICAgIG9wdGRpY3RbImMiXSA9IG9wdGlvbnMuc3BhY2luZwogICAgICAgICAgICAgb3B0ZGljdFsibSJdID0gb3B0aW9ucy5tb250aHMKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDE6CisgICAgICAgIGlmIG9wdGlvbnMueWVhciBpcyBOb25lOgogICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIoZGF0ZXRpbWUuZGF0ZS50b2RheSgpLnllYXIsICoqb3B0ZGljdCkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKGludChhcmdzWzFdKSwgKipvcHRkaWN0KQotICAgICAgICBlbGlmIGxlbihhcmdzKSA9PSAzOgotICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdG1vbnRoKGludChhcmdzWzFdKSwgaW50KGFyZ3NbMl0pLCAqKm9wdGRpY3QpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIob3B0aW9ucy55ZWFyLCAqKm9wdGRpY3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXJzZXIuZXJyb3IoImluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIikKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0bW9udGgob3B0aW9ucy55ZWFyLCBvcHRpb25zLm1vbnRoLCAqKm9wdGRpY3QpCiAgICAgICAgIHdyaXRlID0gc3lzLnN0ZG91dC53cml0ZQogICAgICAgICBpZiBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmVuY29kZShvcHRpb25zLmVuY29kaW5nKQpkaWZmIC0tZ2l0IGEvTGliL2NnaS5weSBiL0xpYi9jZ2kucHkKaW5kZXggMTg5YzZkNS4uMjMzYTQ5NiAxMDA3NTUKLS0tIGEvTGliL2NnaS5weQorKysgYi9MaWIvY2dpLnB5CkBAIC00NSw3ICs0NSw3IEBACiAKIF9fYWxsX18gPSBbIk1pbmlGaWVsZFN0b3JhZ2UiLCAiRmllbGRTdG9yYWdlIiwKICAgICAgICAgICAgInBhcnNlIiwgInBhcnNlX3FzIiwgInBhcnNlX3FzbCIsICJwYXJzZV9tdWx0aXBhcnQiLAotICAgICAgICAgICAicGFyc2VfaGVhZGVyIiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKKyAgICAgICAgICAgInBhcnNlX2hlYWRlciIsICJ0ZXN0IiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKICAgICAgICAgICAgInByaW50X2Zvcm0iLCAicHJpbnRfZGlyZWN0b3J5IiwgInByaW50X2FyZ3VtZW50cyIsCiAgICAgICAgICAgICJwcmludF9lbnZpcm9uX3VzYWdlIiwgImVzY2FwZSJdCiAKZGlmZiAtLWdpdCBhL0xpYi9jb2RlLnB5IGIvTGliL2NvZGUucHkKaW5kZXggNTMyNDRlMy4uMjMyOTVmNCAxMDA2NDQKLS0tIGEvTGliL2NvZGUucHkKKysrIGIvTGliL2NvZGUucHkKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICAiIiJSZXNldCB0aGUgaW5wdXQgYnVmZmVyLiIiIgogICAgICAgICBzZWxmLmJ1ZmZlciA9IFtdCiAKLSAgICBkZWYgaW50ZXJhY3Qoc2VsZiwgYmFubmVyPU5vbmUpOgorICAgIGRlZiBpbnRlcmFjdChzZWxmLCBiYW5uZXI9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAgICAgIiIiQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4KIAogICAgICAgICBUaGUgb3B0aW9uYWwgYmFubmVyIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgYmFubmVyIHRvIHByaW50CkBAIC0xOTYsNiArMTk2LDExIEBACiAgICAgICAgIHRvIGNvbmZ1c2UgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28KICAgICAgICAgY2xvc2UhKS4KIAorICAgICAgICBUaGUgb3B0aW9uYWwgZXhpdG1zZyBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGV4aXQgbWVzc2FnZQorICAgICAgICBwcmludGVkIHdoZW4gZXhpdGluZy4gUGFzcyB0aGUgZW1wdHkgc3RyaW5nIHRvIHN1cHByZXNzCisgICAgICAgIHByaW50aW5nIGFuIGV4aXQgbWVzc2FnZS4gSWYgZXhpdG1zZyBpcyBub3QgZ2l2ZW4gb3IgTm9uZSwKKyAgICAgICAgYSBkZWZhdWx0IG1lc3NhZ2UgaXMgcHJpbnRlZC4KKwogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnBzMQpAQCAtMjMwLDYgKzIzNSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIlxuS2V5Ym9hcmRJbnRlcnJ1cHRcbiIpCiAgICAgICAgICAgICAgICAgc2VsZi5yZXNldGJ1ZmZlcigpCiAgICAgICAgICAgICAgICAgbW9yZSA9IDAKKyAgICAgICAgaWYgZXhpdG1zZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnbm93IGV4aXRpbmcgJXMuLi5cbicgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAgICAgZWxpZiBleGl0bXNnICE9ICcnOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnJXNcbicgJSBleGl0bXNnKQogCiAgICAgZGVmIHB1c2goc2VsZiwgbGluZSk6CiAgICAgICAgICIiIlB1c2ggYSBsaW5lIHRvIHRoZSBpbnRlcnByZXRlci4KQEAgLTI2Nyw3ICsyNzYsNyBAQAogCiAKIAotZGVmIGludGVyYWN0KGJhbm5lcj1Ob25lLCByZWFkZnVuYz1Ob25lLCBsb2NhbD1Ob25lKToKK2RlZiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAiIiJDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBpbnRlcnByZXRlci4KIAogICAgIFRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJsZSBpbnRlcmZhY2UgdG8gdGhlIEludGVyYWN0aXZlQ29uc29sZQpAQCAtMjc5LDYgKzI4OCw3IEBACiAgICAgYmFubmVyIC0tIHBhc3NlZCB0byBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoKQogICAgIHJlYWRmdW5jIC0tIGlmIG5vdCBOb25lLCByZXBsYWNlcyBJbnRlcmFjdGl2ZUNvbnNvbGUucmF3X2lucHV0KCkKICAgICBsb2NhbCAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVJbnRlcnByZXRlci5fX2luaXRfXygpCisgICAgZXhpdG1zZyAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVDb25zb2xlLmludGVyYWN0KCkKIAogICAgICIiIgogICAgIGNvbnNvbGUgPSBJbnRlcmFjdGl2ZUNvbnNvbGUobG9jYWwpCkBAIC0yODksNyArMjk5LDcgQEAKICAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIpCisgICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIsIGV4aXRtc2cpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weSBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQppbmRleCBlYmU4ZWU3Li5iY2M0MjkxIDEwMDY0NAotLS0gYS9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CkBAIC0zNTMsNyArMzUzLDcgQEAKICAgICB7bmFtZX0gPSBfcHJvcGVydHkoX2l0ZW1nZXR0ZXIoe2luZGV4OmR9KSwgZG9jPSdBbGlhcyBmb3IgZmllbGQgbnVtYmVyIHtpbmRleDpkfScpCiAnJycKIAotZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UpOgorZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCAqLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UsIG1vZHVsZT1Ob25lKToKICAgICAiIiJSZXR1cm5zIGEgbmV3IHN1YmNsYXNzIG9mIHR1cGxlIHdpdGggbmFtZWQgZmllbGRzLgogCiAgICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQpAQCAtMzkzLDcgKzM5Myw3IEBACiAgICAgICAgICAgICAgICAgZmllbGRfbmFtZXNbaW5kZXhdID0gJ18lZCcgJSBpbmRleAogICAgICAgICAgICAgc2Vlbi5hZGQobmFtZSkKICAgICBmb3IgbmFtZSBpbiBbdHlwZW5hbWVdICsgZmllbGRfbmFtZXM6Ci0gICAgICAgIGlmIHR5cGUobmFtZSkgIT0gc3RyOgorICAgICAgICBpZiB0eXBlKG5hbWUpIGlzIG5vdCBzdHI6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIG11c3QgYmUgc3RyaW5ncycpCiAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgbXVzdCBiZSB2YWxpZCAnCkBAIC00MzQsMTEgKzQzNCwxNSBAQAogICAgICMgRm9yIHBpY2tsaW5nIHRvIHdvcmssIHRoZSBfX21vZHVsZV9fIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCB0byB0aGUgZnJhbWUKICAgICAjIHdoZXJlIHRoZSBuYW1lZCB0dXBsZSBpcyBjcmVhdGVkLiAgQnlwYXNzIHRoaXMgc3RlcCBpbiBlbnZpcm9ubWVudHMgd2hlcmUKICAgICAjIHN5cy5fZ2V0ZnJhbWUgaXMgbm90IGRlZmluZWQgKEp5dGhvbiBmb3IgZXhhbXBsZSkgb3Igc3lzLl9nZXRmcmFtZSBpcyBub3QKLSAgICAjIGRlZmluZWQgZm9yIGFyZ3VtZW50cyBncmVhdGVyIHRoYW4gMCAoSXJvblB5dGhvbikuCi0gICAgdHJ5OgotICAgICAgICByZXN1bHQuX19tb2R1bGVfXyA9IF9zeXMuX2dldGZyYW1lKDEpLmZfZ2xvYmFscy5nZXQoJ19fbmFtZV9fJywgJ19fbWFpbl9fJykKLSAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgcGFzcworICAgICMgZGVmaW5lZCBmb3IgYXJndW1lbnRzIGdyZWF0ZXIgdGhhbiAwIChJcm9uUHl0aG9uKSwgb3Igd2hlcmUgdGhlIHVzZXIgaGFzCisgICAgIyBzcGVjaWZpZWQgYSBwYXJ0aWN1bGFyIG1vZHVsZS4KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kdWxlID0gX3N5cy5fZ2V0ZnJhbWUoMSkuZl9nbG9iYWxzLmdldCgnX19uYW1lX18nLCAnX19tYWluX18nKQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHBhc3MKKyAgICBpZiBtb2R1bGUgaXMgbm90IE5vbmU6CisgICAgICAgIHJlc3VsdC5fX21vZHVsZV9fID0gbW9kdWxlCiAKICAgICByZXR1cm4gcmVzdWx0CiAKQEAgLTg0Miw3ICs4NDYsNyBAQAogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIgYW5kIHN0cmluZy5UZW1wbGF0ZSkKKyMjIyAgQ2hhaW5NYXAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBjbGFzcyBDaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CkBAIC05NjksNyArOTczLDcgQEAKICAgICAgICAgICAgIGRpY3QgPSBrd2FyZ3MucG9wKCdkaWN0JykKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybigiUGFzc2luZyAnZGljdCcgYXMga2V5d29yZCBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRpY3QgPSBOb25lCiAgICAgICAgIHNlbGYuZGF0YSA9IHt9CmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2M2UzOGUuLjAwMDAwMDAKLS0tIGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBTaW1wbGUgdGVzdHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgdmVyaWZ5IHRoYXQgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCi1Qb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQotcCA9IFBvaW50KHg9MTAsIHk9MjApCi1hc3NlcnQgcCA9PSBsb2FkcyhkdW1wcyhwKSkKLQotIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKLWNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBoeXBvdChzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQotCi1mb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNy4pOgotICAgIHByaW50IChwKQotCi1jbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgJ1BvaW50IGNsYXNzIHdpdGggb3B0aW1pemVkIF9tYWtlKCkgYW5kIF9yZXBsYWNlKCkgd2l0aG91dCBlcnJvci1jaGVja2luZycKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIF9tYWtlID0gY2xhc3NtZXRob2QodHVwbGUuX19uZXdfXykKLSAgICBkZWYgX3JlcGxhY2Uoc2VsZiwgX21hcD1tYXAsICoqa3dkcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQotCi1wcmludChQb2ludCgxMSwgMjIpLl9yZXBsYWNlKHg9MTAwKSkKLQotUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQotcHJpbnQoUG9pbnQzRC5fX2RvY19fKQotCi1pbXBvcnQgZG9jdGVzdCwgY29sbGVjdGlvbnMKLVRlc3RSZXN1bHRzID0gbmFtZWR0dXBsZSgnVGVzdFJlc3VsdHMnLCAnZmFpbGVkIGF0dGVtcHRlZCcpCi1wcmludChUZXN0UmVzdWx0cygqZG9jdGVzdC50ZXN0bW9kKGNvbGxlY3Rpb25zKSkpCmRpZmYgLS1naXQgYS9MaWIvY29tcGlsZWFsbC5weSBiL0xpYi9jb21waWxlYWxsLnB5CmluZGV4IDBjYzBjMWQuLjY3YzVmNWEgMTAwNjQ0Ci0tLSBhL0xpYi9jb21waWxlYWxsLnB5CisrKyBiL0xpYi9jb21waWxlYWxsLnB5CkBAIC02OCw3ICs2OCw3IEBACiAgICAgIiIiCiAgICAgZmlsZXMgPSBfd2Fsa19kaXIoZGlyLCBxdWlldD1xdWlldCwgbWF4bGV2ZWxzPW1heGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICBkZGlyPWRkaXIpCi0gICAgc3VjY2VzcyA9IDEKKyAgICBzdWNjZXNzID0gVHJ1ZQogICAgIGlmIHdvcmtlcnMgaXMgbm90IE5vbmUgYW5kIHdvcmtlcnMgIT0gMSBhbmQgUHJvY2Vzc1Bvb2xFeGVjdXRvciBpcyBub3QgTm9uZToKICAgICAgICAgaWYgd29ya2VycyA8IDA6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd3b3JrZXJzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byAwJykKQEAgLTgxLDEyICs4MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FjeT1sZWdhY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9b3B0aW1pemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcykKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBtaW4ocmVzdWx0cywgZGVmYXVsdD0xKQorICAgICAgICAgICAgc3VjY2VzcyA9IG1pbihyZXN1bHRzLCBkZWZhdWx0PVRydWUpCiAgICAgZWxzZToKICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CiAgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9maWxlKGZpbGUsIGRkaXIsIGZvcmNlLCByeCwgcXVpZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FjeSwgb3B0aW1pemUpOgotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgcmV0dXJuIHN1Y2Nlc3MKIAogZGVmIGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9MCwKQEAgLTEwNCw3ICsxMDQsNyBAQAogICAgIGxlZ2FjeTogICAgaWYgVHJ1ZSwgcHJvZHVjZSBsZWdhY3kgcHljIHBhdGhzIGluc3RlYWQgb2YgUEVQIDMxNDcgcGF0aHMKICAgICBvcHRpbWl6ZTogIG9wdGltaXphdGlvbiBsZXZlbCBvciAtMSBmb3IgbGV2ZWwgb2YgdGhlIGludGVycHJldGVyCiAgICAgIiIiCi0gICAgc3VjY2VzcyA9IDEKKyAgICBzdWNjZXNzID0gVHJ1ZQogICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZ1bGxuYW1lKQogICAgIGlmIGRkaXIgaXMgbm90IE5vbmU6CiAgICAgICAgIGRmaWxlID0gb3MucGF0aC5qb2luKGRkaXIsIG5hbWUpCkBAIC0xNDQsNyArMTQ0LDcgQEAKICAgICAgICAgICAgICAgICBvayA9IHB5X2NvbXBpbGUuY29tcGlsZShmdWxsbmFtZSwgY2ZpbGUsIGRmaWxlLCBUcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPW9wdGltaXplKQogICAgICAgICAgICAgZXhjZXB0IHB5X2NvbXBpbGUuUHlDb21waWxlRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgpAQCAtMTU3LDcgKzE1Nyw3IEBACiAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZShzeXMuc3Rkb3V0LmVuY29kaW5nKQogICAgICAgICAgICAgICAgIHByaW50KG1zZykKICAgICAgICAgICAgIGV4Y2VwdCAoU3ludGF4RXJyb3IsIFVuaWNvZGVFcnJvciwgT1NFcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgICAgIGlmIHF1aWV0ID49IDI6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgICAgICAgICAgZWxpZiBxdWlldDoKQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgICAgICAgICAgICAgIHByaW50KGUuX19jbGFzc19fLl9fbmFtZV9fICsgJzonLCBlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiBvayA9PSAwOgotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICByZXR1cm4gc3VjY2VzcwogCiBkZWYgY29tcGlsZV9wYXRoKHNraXBfY3VyZGlyPTEsIG1heGxldmVscz0wLCBmb3JjZT1GYWxzZSwgcXVpZXQ9MCwKQEAgLTE4Myw3ICsxODMsNyBAQAogICAgIGxlZ2FjeTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICAgb3B0aW1pemU6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IC0xKQogICAgICIiIgotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKICAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgogICAgICAgICBpZiAobm90IGRpciBvciBkaXIgPT0gb3MuY3VyZGlyKSBhbmQgc2tpcF9jdXJkaXI6CiAgICAgICAgICAgICBpZiBxdWlldCA8IDI6CmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CmluZGV4IDljM2FlYzkuLjAzZDI3NmIgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CkBAIC04MSwxMiArODEsMTMgQEAKICAgICAgICAgX2Jhc2UuTE9HR0VSLmNyaXRpY2FsKCdFeGNlcHRpb24gaW4gd29ya2VyJywgZXhjX2luZm89VHJ1ZSkKIAogY2xhc3MgVGhyZWFkUG9vbEV4ZWN1dG9yKF9iYXNlLkV4ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzPU5vbmUsIHRocmVhZF9uYW1lX3ByZWZpeD0nJyk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFRocmVhZFBvb2xFeGVjdXRvciBpbnN0YW5jZS4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAgbWF4X3dvcmtlcnM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBnaXZlbiBjYWxscy4KKyAgICAgICAgICAgIHRocmVhZF9uYW1lX3ByZWZpeDogQW4gb3B0aW9uYWwgbmFtZSBwcmVmaXggdG8gZ2l2ZSBvdXIgdGhyZWFkcy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICAjIFVzZSB0aGlzIG51bWJlciBiZWNhdXNlIFRocmVhZFBvb2xFeGVjdXRvciBpcyBvZnRlbgpAQCAtMTAwLDYgKzEwMSw3IEBACiAgICAgICAgIHNlbGYuX3RocmVhZHMgPSBzZXQoKQogICAgICAgICBzZWxmLl9zaHV0ZG93biA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3NodXRkb3duX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuX3RocmVhZF9uYW1lX3ByZWZpeCA9IHRocmVhZF9uYW1lX3ByZWZpeAogCiAgICAgZGVmIHN1Ym1pdChzZWxmLCBmbiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgd2l0aCBzZWxmLl9zaHV0ZG93bl9sb2NrOgpAQCAtMTIxLDggKzEyMywxMSBAQAogICAgICAgICAgICAgcS5wdXQoTm9uZSkKICAgICAgICAgIyBUT0RPKGJxdWlubGFuKTogU2hvdWxkIGF2b2lkIGNyZWF0aW5nIG5ldyB0aHJlYWRzIGlmIHRoZXJlIGFyZSBtb3JlCiAgICAgICAgICMgaWRsZSB0aHJlYWRzIHRoYW4gaXRlbXMgaW4gdGhlIHdvcmsgcXVldWUuCi0gICAgICAgIGlmIGxlbihzZWxmLl90aHJlYWRzKSA8IHNlbGYuX21heF93b3JrZXJzOgotICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV93b3JrZXIsCisgICAgICAgIG51bV90aHJlYWRzID0gbGVuKHNlbGYuX3RocmVhZHMpCisgICAgICAgIGlmIG51bV90aHJlYWRzIDwgc2VsZi5fbWF4X3dvcmtlcnM6CisgICAgICAgICAgICB0aHJlYWRfbmFtZSA9ICclc18lZCcgJSAoc2VsZi5fdGhyZWFkX25hbWVfcHJlZml4IG9yIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3RocmVhZHMpCisgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZChuYW1lPXRocmVhZF9uYW1lLCB0YXJnZXQ9X3dvcmtlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHdlYWtyZWYucmVmKHNlbGYsIHdlYWtyZWZfY2IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd29ya19xdWV1ZSkpCiAgICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi9jb250ZXh0bGliLnB5IGIvTGliL2NvbnRleHRsaWIucHkKaW5kZXggZDQ0ZWRkNi4uN2Q5NGE1NyAxMDA2NDQKLS0tIGEvTGliL2NvbnRleHRsaWIucHkKKysrIGIvTGliL2NvbnRleHRsaWIucHkKQEAgLTEsMTEgKzEsMzQgQEAKICIiIlV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnQgY29udGV4dHMuICBTZWUgUEVQIDM0My4iIiIKLQoraW1wb3J0IGFiYwogaW1wb3J0IHN5cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogCi1fX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIiwKLSAgICAgICAgICAgInJlZGlyZWN0X3N0ZG91dCIsICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiXQorX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJBYnN0cmFjdENvbnRleHRNYW5hZ2VyIiwKKyAgICAgICAgICAgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIiwgInJlZGlyZWN0X3N0ZG91dCIsCisgICAgICAgICAgICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiXQorCisKK2NsYXNzIEFic3RyYWN0Q29udGV4dE1hbmFnZXIoYWJjLkFCQyk6CisKKyAgICAiIiJBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBjb250ZXh0IG1hbmFnZXJzLiIiIgorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGBzZWxmYCB1cG9uIGVudGVyaW5nIHRoZSBydW50aW1lIGNvbnRleHQuIiIiCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICIiIlJhaXNlIGFueSBleGNlcHRpb24gdHJpZ2dlcmVkIHdpdGhpbiB0aGUgcnVudGltZSBjb250ZXh0LiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIEFic3RyYWN0Q29udGV4dE1hbmFnZXI6CisgICAgICAgICAgICBpZiAoYW55KCJfX2VudGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKKyAgICAgICAgICAgICAgICBhbnkoIl9fZXhpdF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKIGNsYXNzIENvbnRleHREZWNvcmF0b3Iob2JqZWN0KToKQEAgLTMxLDcgKzU0LDcgQEAKICAgICAgICAgcmV0dXJuIGlubmVyCiAKIAotY2xhc3MgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKENvbnRleHREZWNvcmF0b3IpOgorY2xhc3MgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKENvbnRleHREZWNvcmF0b3IsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkhlbHBlciBmb3IgQGNvbnRleHRtYW5hZ2VyIGRlY29yYXRvci4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jLCBhcmdzLCBrd2RzKToKQEAgLTEzNyw3ICsxNjAsNyBAQAogICAgIHJldHVybiBoZWxwZXIKIAogCi1jbGFzcyBjbG9zaW5nKG9iamVjdCk6CitjbGFzcyBjbG9zaW5nKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgdG8gYXV0b21hdGljYWxseSBjbG9zZSBzb21ldGhpbmcgYXQgdGhlIGVuZCBvZiBhIGJsb2NrLgogCiAgICAgQ29kZSBsaWtlIHRoaXM6CkBAIC0xNjIsNyArMTg1LDcgQEAKICAgICAgICAgc2VsZi50aGluZy5jbG9zZSgpCiAKIAotY2xhc3MgX1JlZGlyZWN0U3RyZWFtOgorY2xhc3MgX1JlZGlyZWN0U3RyZWFtKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogCiAgICAgX3N0cmVhbSA9IE5vbmUKIApAQCAtMjAyLDcgKzIyNSw3IEBACiAgICAgX3N0cmVhbSA9ICJzdGRlcnIiCiAKIAotY2xhc3Mgc3VwcHJlc3M6CitjbGFzcyBzdXBwcmVzcyhBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gc3VwcHJlc3Mgc3BlY2lmaWVkIGV4Y2VwdGlvbnMKIAogICAgIEFmdGVyIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgZXhlY3V0aW9uIHByb2NlZWRzIHdpdGggdGhlIG5leHQKQEAgLTIzMyw3ICsyNTYsNyBAQAogCiAKICMgSW5zcGlyZWQgYnkgZGlzY3Vzc2lvbnMgb24gaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzNTg1Ci1jbGFzcyBFeGl0U3RhY2sob2JqZWN0KToKK2NsYXNzIEV4aXRTdGFjayhBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIGR5bmFtaWMgbWFuYWdlbWVudCBvZiBhIHN0YWNrIG9mIGV4aXQgY2FsbGJhY2tzCiAKICAgICBGb3IgZXhhbXBsZToKQEAgLTMxMiw5ICszMzUsNiBAQAogICAgICAgICAiIiJJbW1lZGlhdGVseSB1bndpbmQgdGhlIGNvbnRleHQgc3RhY2siIiIKICAgICAgICAgc2VsZi5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQogCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgogICAgICAgICByZWNlaXZlZF9leGMgPSBleGNfZGV0YWlsc1swXSBpcyBub3QgTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvY29weS5weSBiL0xpYi9jb3B5LnB5CmluZGV4IDk3MmI5NGEuLmY4NjA0MGEgMTAwNjQ0Ci0tLSBhL0xpYi9jb3B5LnB5CisrKyBiL0xpYi9jb3B5LnB5CkBAIC01MSw3ICs1MSw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCB3ZWFrcmVmCiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCi1pbXBvcnQgYnVpbHRpbnMKIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKICAgICBwYXNzCkBAIC0xMDIsMzcgKzEwMSwzMyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigidW4oc2hhbGxvdyljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCiAKLSAgICByZXR1cm4gX3JlY29uc3RydWN0KHgsIHJ2LCAwKQorICAgIGlmIGlzaW5zdGFuY2UocnYsIHN0cik6CisgICAgICAgIHJldHVybiB4CisgICAgcmV0dXJuIF9yZWNvbnN0cnVjdCh4LCBOb25lLCAqcnYpCiAKIAogX2NvcHlfZGlzcGF0Y2ggPSBkID0ge30KIAogZGVmIF9jb3B5X2ltbXV0YWJsZSh4KToKICAgICByZXR1cm4geAotZm9yIHQgaW4gKHR5cGUoTm9uZSksIGludCwgZmxvYXQsIGJvb2wsIHN0ciwgdHVwbGUsCi0gICAgICAgICAgYnl0ZXMsIGZyb3plbnNldCwgdHlwZSwgcmFuZ2UsCi0gICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSwgdHlwZShFbGxpcHNpcyksCitmb3IgdCBpbiAodHlwZShOb25lKSwgaW50LCBmbG9hdCwgYm9vbCwgY29tcGxleCwgc3RyLCB0dXBsZSwKKyAgICAgICAgICBieXRlcywgZnJvemVuc2V0LCB0eXBlLCByYW5nZSwgc2xpY2UsCisgICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSwgdHlwZShFbGxpcHNpcyksIHR5cGUoTm90SW1wbGVtZW50ZWQpLAogICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSwgd2Vha3JlZi5yZWYpOgogICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKIHQgPSBnZXRhdHRyKHR5cGVzLCAiQ29kZVR5cGUiLCBOb25lKQogaWYgdCBpcyBub3QgTm9uZToKICAgICBkW3RdID0gX2NvcHlfaW1tdXRhYmxlCi1mb3IgbmFtZSBpbiAoImNvbXBsZXgiLCAidW5pY29kZSIpOgotICAgIHQgPSBnZXRhdHRyKGJ1aWx0aW5zLCBuYW1lLCBOb25lKQotICAgIGlmIHQgaXMgbm90IE5vbmU6Ci0gICAgICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKIAotZGVmIF9jb3B5X3dpdGhfY29uc3RydWN0b3IoeCk6Ci0gICAgcmV0dXJuIHR5cGUoeCkoeCkKLWZvciB0IGluIChsaXN0LCBkaWN0LCBzZXQpOgotICAgIGRbdF0gPSBfY29weV93aXRoX2NvbnN0cnVjdG9yCitkW2xpc3RdID0gbGlzdC5jb3B5CitkW2RpY3RdID0gZGljdC5jb3B5CitkW3NldF0gPSBzZXQuY29weQorZFtieXRlYXJyYXldID0gYnl0ZWFycmF5LmNvcHkKIAotZGVmIF9jb3B5X3dpdGhfY29weV9tZXRob2QoeCk6Ci0gICAgcmV0dXJuIHguY29weSgpCiBpZiBQeVN0cmluZ01hcCBpcyBub3QgTm9uZToKLSAgICBkW1B5U3RyaW5nTWFwXSA9IF9jb3B5X3dpdGhfY29weV9tZXRob2QKKyAgICBkW1B5U3RyaW5nTWFwXSA9IFB5U3RyaW5nTWFwLmNvcHkKIAotZGVsIGQKK2RlbCBkLCB0CiAKIGRlZiBkZWVwY29weSh4LCBtZW1vPU5vbmUsIF9uaWw9W10pOgogICAgICIiIkRlZXAgY29weSBvcGVyYXRpb24gb24gYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLgpAQCAtMTc5LDcgKzE3NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuKGRlZXApY29weWFibGUgb2JqZWN0IG9mIHR5cGUgJXMiICUgY2xzKQotICAgICAgICAgICAgICAgIHkgPSBfcmVjb25zdHJ1Y3QoeCwgcnYsIDEsIG1lbW8pCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShydiwgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgeSA9IHgKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB5ID0gX3JlY29uc3RydWN0KHgsIG1lbW8sICpydikKIAogICAgICMgSWYgaXMgaXRzIG93biBjb3B5LCBkb24ndCBtZW1vaXplLgogICAgIGlmIHkgaXMgbm90IHg6CkBAIC0xOTMsMTMgKzE5MSwxMSBAQAogICAgIHJldHVybiB4CiBkW3R5cGUoTm9uZSldID0gX2RlZXBjb3B5X2F0b21pYwogZFt0eXBlKEVsbGlwc2lzKV0gPSBfZGVlcGNvcHlfYXRvbWljCitkW3R5cGUoTm90SW1wbGVtZW50ZWQpXSA9IF9kZWVwY29weV9hdG9taWMKIGRbaW50XSA9IF9kZWVwY29weV9hdG9taWMKIGRbZmxvYXRdID0gX2RlZXBjb3B5X2F0b21pYwogZFtib29sXSA9IF9kZWVwY29weV9hdG9taWMKLXRyeToKLSAgICBkW2NvbXBsZXhdID0gX2RlZXBjb3B5X2F0b21pYwotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBwYXNzCitkW2NvbXBsZXhdID0gX2RlZXBjb3B5X2F0b21pYwogZFtieXRlc10gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3N0cl0gPSBfZGVlcGNvcHlfYXRvbWljCiB0cnk6CkBAIC0yMTEsMTUgKzIwNywxNiBAQAogZFt0eXBlcy5GdW5jdGlvblR5cGVdID0gX2RlZXBjb3B5X2F0b21pYwogZFt3ZWFrcmVmLnJlZl0gPSBfZGVlcGNvcHlfYXRvbWljCiAKLWRlZiBfZGVlcGNvcHlfbGlzdCh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfbGlzdCh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IFtdCiAgICAgbWVtb1tpZCh4KV0gPSB5CisgICAgYXBwZW5kID0geS5hcHBlbmQKICAgICBmb3IgYSBpbiB4OgotICAgICAgICB5LmFwcGVuZChkZWVwY29weShhLCBtZW1vKSkKKyAgICAgICAgYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQogICAgIHJldHVybiB5CiBkW2xpc3RdID0gX2RlZXBjb3B5X2xpc3QKIAotZGVmIF9kZWVwY29weV90dXBsZSh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfdHVwbGUoeCwgbWVtbywgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgIHkgPSBbZGVlcGNvcHkoYSwgbWVtbykgZm9yIGEgaW4geF0KICAgICAjIFdlJ3JlIG5vdCBnb2luZyB0byBwdXQgdGhlIHR1cGxlIGluIHRoZSBtZW1vLCBidXQgaXQncyBzdGlsbCBpbXBvcnRhbnQgd2UKICAgICAjIGNoZWNrIGZvciBpdCwgaW4gY2FzZSB0aGUgdHVwbGUgY29udGFpbnMgcmVjdXJzaXZlIG11dGFibGUgc3RydWN0dXJlcy4KQEAgLTIzNiw3ICsyMzMsNyBAQAogICAgIHJldHVybiB5CiBkW3R1cGxlXSA9IF9kZWVwY29weV90dXBsZQogCi1kZWYgX2RlZXBjb3B5X2RpY3QoeCwgbWVtbyk6CitkZWYgX2RlZXBjb3B5X2RpY3QoeCwgbWVtbywgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgIHkgPSB7fQogICAgIG1lbW9baWQoeCldID0geQogICAgIGZvciBrZXksIHZhbHVlIGluIHguaXRlbXMoKToKQEAgLTI0OCw3ICsyNDUsOSBAQAogCiBkZWYgX2RlZXBjb3B5X21ldGhvZCh4LCBtZW1vKTogIyBDb3B5IGluc3RhbmNlIG1ldGhvZHMKICAgICByZXR1cm4gdHlwZSh4KSh4Ll9fZnVuY19fLCBkZWVwY29weSh4Ll9fc2VsZl9fLCBtZW1vKSkKLV9kZWVwY29weV9kaXNwYXRjaFt0eXBlcy5NZXRob2RUeXBlXSA9IF9kZWVwY29weV9tZXRob2QKK2RbdHlwZXMuTWV0aG9kVHlwZV0gPSBfZGVlcGNvcHlfbWV0aG9kCisKK2RlbCBkCiAKIGRlZiBfa2VlcF9hbGl2ZSh4LCBtZW1vKToKICAgICAiIiJLZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IHggaW4gdGhlIG1lbW8uCkBAIC0yNjYsMzEgKzI2NSwxNSBAQAogICAgICAgICAjIGFoYSwgdGhpcyBpcyB0aGUgZmlyc3Qgb25lIDotKQogICAgICAgICBtZW1vW2lkKG1lbW8pXT1beF0KIAotZGVmIF9yZWNvbnN0cnVjdCh4LCBpbmZvLCBkZWVwLCBtZW1vPU5vbmUpOgotICAgIGlmIGlzaW5zdGFuY2UoaW5mbywgc3RyKToKLSAgICAgICAgcmV0dXJuIHgKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShpbmZvLCB0dXBsZSkKLSAgICBpZiBtZW1vIGlzIE5vbmU6Ci0gICAgICAgIG1lbW8gPSB7fQotICAgIG4gPSBsZW4oaW5mbykKLSAgICBhc3NlcnQgbiBpbiAoMiwgMywgNCwgNSkKLSAgICBjYWxsYWJsZSwgYXJncyA9IGluZm9bOjJdCi0gICAgaWYgbiA+IDI6Ci0gICAgICAgIHN0YXRlID0gaW5mb1syXQotICAgIGVsc2U6Ci0gICAgICAgIHN0YXRlID0gTm9uZQotICAgIGlmIG4gPiAzOgotICAgICAgICBsaXN0aXRlciA9IGluZm9bM10KLSAgICBlbHNlOgotICAgICAgICBsaXN0aXRlciA9IE5vbmUKLSAgICBpZiBuID4gNDoKLSAgICAgICAgZGljdGl0ZXIgPSBpbmZvWzRdCi0gICAgZWxzZToKLSAgICAgICAgZGljdGl0ZXIgPSBOb25lCitkZWYgX3JlY29uc3RydWN0KHgsIG1lbW8sIGZ1bmMsIGFyZ3MsCisgICAgICAgICAgICAgICAgIHN0YXRlPU5vbmUsIGxpc3RpdGVyPU5vbmUsIGRpY3RpdGVyPU5vbmUsCisgICAgICAgICAgICAgICAgIGRlZXBjb3B5PWRlZXBjb3B5KToKKyAgICBkZWVwID0gbWVtbyBpcyBub3QgTm9uZQorICAgIGlmIGRlZXAgYW5kIGFyZ3M6CisgICAgICAgIGFyZ3MgPSAoZGVlcGNvcHkoYXJnLCBtZW1vKSBmb3IgYXJnIGluIGFyZ3MpCisgICAgeSA9IGZ1bmMoKmFyZ3MpCiAgICAgaWYgZGVlcDoKLSAgICAgICAgYXJncyA9IGRlZXBjb3B5KGFyZ3MsIG1lbW8pCi0gICAgeSA9IGNhbGxhYmxlKCphcmdzKQotICAgIG1lbW9baWQoeCldID0geQorICAgICAgICBtZW1vW2lkKHgpXSA9IHkKIAogICAgIGlmIHN0YXRlIGlzIG5vdCBOb25lOgogICAgICAgICBpZiBkZWVwOgpAQCAtMzA5LDIyICsyOTIsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cih5LCBrZXksIHZhbHVlKQogCiAgICAgaWYgbGlzdGl0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgIGZvciBpdGVtIGluIGxpc3RpdGVyOgotICAgICAgICAgICAgaWYgZGVlcDoKKyAgICAgICAgaWYgZGVlcDoKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGxpc3RpdGVyOgogICAgICAgICAgICAgICAgIGl0ZW0gPSBkZWVwY29weShpdGVtLCBtZW1vKQotICAgICAgICAgICAgeS5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICB5LmFwcGVuZChpdGVtKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6CisgICAgICAgICAgICAgICAgeS5hcHBlbmQoaXRlbSkKICAgICBpZiBkaWN0aXRlciBpcyBub3QgTm9uZToKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGljdGl0ZXI6Ci0gICAgICAgICAgICBpZiBkZWVwOgorICAgICAgICBpZiBkZWVwOgorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGljdGl0ZXI6CiAgICAgICAgICAgICAgICAga2V5ID0gZGVlcGNvcHkoa2V5LCBtZW1vKQogICAgICAgICAgICAgICAgIHZhbHVlID0gZGVlcGNvcHkodmFsdWUsIG1lbW8pCi0gICAgICAgICAgICB5W2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKKyAgICAgICAgICAgICAgICB5W2tleV0gPSB2YWx1ZQogICAgIHJldHVybiB5CiAKLWRlbCBkCi0KLWRlbCB0eXBlcwotCi0jIEhlbHBlciBmb3IgaW5zdGFuY2UgY3JlYXRpb24gd2l0aG91dCBjYWxsaW5nIF9faW5pdF9fCi1jbGFzcyBfRW1wdHlDbGFzczoKLSAgICBwYXNzCitkZWwgdHlwZXMsIHdlYWtyZWYsIFB5U3RyaW5nTWFwCmRpZmYgLS1naXQgYS9MaWIvY3J5cHQucHkgYi9MaWIvY3J5cHQucHkKaW5kZXggNDlhYjk2ZS4uZmJjNWY0YyAxMDA2NDQKLS0tIGEvTGliL2NyeXB0LnB5CisrKyBiL0xpYi9jcnlwdC5weQpAQCAtNTQsOSArNTQsOCBAQAogTUVUSE9EX1NIQTUxMiA9IF9NZXRob2QoJ1NIQTUxMicsICc2JywgMTYsIDEwNikKIAogbWV0aG9kcyA9IFtdCi1mb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSk6Citmb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSwgTUVUSE9EX0NSWVBUKToKICAgICBfcmVzdWx0ID0gY3J5cHQoJycsIF9tZXRob2QpCiAgICAgaWYgX3Jlc3VsdCBhbmQgbGVuKF9yZXN1bHQpID09IF9tZXRob2QudG90YWxfc2l6ZToKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoX21ldGhvZCkKLW1ldGhvZHMuYXBwZW5kKE1FVEhPRF9DUllQVCkKIGRlbCBfcmVzdWx0LCBfbWV0aG9kCmRpZmYgLS1naXQgYS9MaWIvY3N2LnB5IGIvTGliL2Nzdi5weQppbmRleCBjYTQwZTVlLi4wNDgxZWE1IDEwMDY0NAotLS0gYS9MaWIvY3N2LnB5CisrKyBiL0xpYi9jc3YucHkKQEAgLTExLDEzICsxMSwxNSBAQAogICAgICAgICAgICAgICAgICBfX2RvY19fCiBmcm9tIF9jc3YgaW1wb3J0IERpYWxlY3QgYXMgX0RpYWxlY3QKIAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKLV9fYWxsX18gPSBbICJRVU9URV9NSU5JTUFMIiwgIlFVT1RFX0FMTCIsICJRVU9URV9OT05OVU1FUklDIiwgIlFVT1RFX05PTkUiLAotICAgICAgICAgICAgIkVycm9yIiwgIkRpYWxlY3QiLCAiX19kb2NfXyIsICJleGNlbCIsICJleGNlbF90YWIiLAotICAgICAgICAgICAgImZpZWxkX3NpemVfbGltaXQiLCAicmVhZGVyIiwgIndyaXRlciIsCi0gICAgICAgICAgICAicmVnaXN0ZXJfZGlhbGVjdCIsICJnZXRfZGlhbGVjdCIsICJsaXN0X2RpYWxlY3RzIiwgIlNuaWZmZXIiLAotICAgICAgICAgICAgInVucmVnaXN0ZXJfZGlhbGVjdCIsICJfX3ZlcnNpb25fXyIsICJEaWN0UmVhZGVyIiwgIkRpY3RXcml0ZXIiIF0KK19fYWxsX18gPSBbIlFVT1RFX01JTklNQUwiLCAiUVVPVEVfQUxMIiwgIlFVT1RFX05PTk5VTUVSSUMiLCAiUVVPVEVfTk9ORSIsCisgICAgICAgICAgICJFcnJvciIsICJEaWFsZWN0IiwgIl9fZG9jX18iLCAiZXhjZWwiLCAiZXhjZWxfdGFiIiwKKyAgICAgICAgICAgImZpZWxkX3NpemVfbGltaXQiLCAicmVhZGVyIiwgIndyaXRlciIsCisgICAgICAgICAgICJyZWdpc3Rlcl9kaWFsZWN0IiwgImdldF9kaWFsZWN0IiwgImxpc3RfZGlhbGVjdHMiLCAiU25pZmZlciIsCisgICAgICAgICAgICJ1bnJlZ2lzdGVyX2RpYWxlY3QiLCAiX192ZXJzaW9uX18iLCAiRGljdFJlYWRlciIsICJEaWN0V3JpdGVyIiwKKyAgICAgICAgICAgInVuaXhfZGlhbGVjdCJdCiAKIGNsYXNzIERpYWxlY3Q6CiAgICAgIiIiRGVzY3JpYmUgYSBDU1YgZGlhbGVjdC4KQEAgLTExNSw3ICsxMTcsNyBAQAogICAgICAgICAjIHZhbHVlcwogICAgICAgICB3aGlsZSByb3cgPT0gW106CiAgICAgICAgICAgICByb3cgPSBuZXh0KHNlbGYucmVhZGVyKQotICAgICAgICBkID0gZGljdCh6aXAoc2VsZi5maWVsZG5hbWVzLCByb3cpKQorICAgICAgICBkID0gT3JkZXJlZERpY3QoemlwKHNlbGYuZmllbGRuYW1lcywgcm93KSkKICAgICAgICAgbGYgPSBsZW4oc2VsZi5maWVsZG5hbWVzKQogICAgICAgICBsciA9IGxlbihyb3cpCiAgICAgICAgIGlmIGxmIDwgbHI6CkBAIC0yMTMsMTAgKzIxNSwxMCBAQAogICAgICAgICAiIiIKIAogICAgICAgICBtYXRjaGVzID0gW10KLSAgICAgICAgZm9yIHJlc3RyIGluICgnKD9QPGRlbGltPlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD9QPWRlbGltKScsICMgLCIuKj8iLAotICAgICAgICAgICAgICAgICAgICAgICcoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD9QPGRlbGltPlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KScsICAgIyAgIi4qPyIsCi0gICAgICAgICAgICAgICAgICAgICAgJyg/UDxkZWxpbT4+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScsICAjICwiLio/IgotICAgICAgICAgICAgICAgICAgICAgICcoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIi4qPyIgKG5vIGRlbGltLCBubyBzcGFjZSkKKyAgICAgICAgZm9yIHJlc3RyIGluIChyJyg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UD1kZWxpbSknLCAjICwiLio/IiwKKyAgICAgICAgICAgICAgICAgICAgICByJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pJywgICAjICAiLio/IiwKKyAgICAgICAgICAgICAgICAgICAgICByJyg/UDxkZWxpbT4+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScsICAjICwiLio/IgorICAgICAgICAgICAgICAgICAgICAgIHInKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJyk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICIuKj8iIChubyBkZWxpbSwgbm8gc3BhY2UpCiAgICAgICAgICAgICByZWdleHAgPSByZS5jb21waWxlKHJlc3RyLCByZS5ET1RBTEwgfCByZS5NVUxUSUxJTkUpCiAgICAgICAgICAgICBtYXRjaGVzID0gcmVnZXhwLmZpbmRhbGwoZGF0YSkKICAgICAgICAgICAgIGlmIG1hdGNoZXM6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5IGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQppbmRleCAwZDg2MDc4Li4xYzlkM2E1IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5CisrKyBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGlmIF9fdmVyc2lvbl9fICE9IF9jdHlwZXNfdmVyc2lvbjoKICAgICByYWlzZSBFeGNlcHRpb24oIlZlcnNpb24gbnVtYmVyIG1pc21hdGNoIiwgX192ZXJzaW9uX18sIF9jdHlwZXNfdmVyc2lvbikKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKICAgICBmcm9tIF9jdHlwZXMgaW1wb3J0IEZvcm1hdEVycm9yCiAKIERFRkFVTFRfTU9ERSA9IFJUTERfTE9DQUwKQEAgLTEwMywxMiArMTAzLDkgQEAKICAgICAgICAgX2NfZnVuY3R5cGVfY2FjaGVbKHJlc3R5cGUsIGFyZ3R5cGVzLCBmbGFncyldID0gQ0Z1bmN0aW9uVHlwZQogICAgICAgICByZXR1cm4gQ0Z1bmN0aW9uVHlwZQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIGZyb20gX2N0eXBlcyBpbXBvcnQgTG9hZExpYnJhcnkgYXMgX2Rsb3BlbgogICAgIGZyb20gX2N0eXBlcyBpbXBvcnQgRlVOQ0ZMQUdfU1REQ0FMTCBhcyBfRlVOQ0ZMQUdfU1REQ0FMTAotICAgIGlmIF9vcy5uYW1lID09ICJjZSI6Ci0gICAgICAgICMgJ2NlJyBkb2Vzbid0IGhhdmUgdGhlIHN0ZGNhbGwgY2FsbGluZyBjb252ZW50aW9uCi0gICAgICAgIF9GVU5DRkxBR19TVERDQUxMID0gX0ZVTkNGTEFHX0NERUNMCiAKICAgICBfd2luX2Z1bmN0eXBlX2NhY2hlID0ge30KICAgICBkZWYgV0lORlVOQ1RZUEUocmVzdHlwZSwgKmFyZ3R5cGVzLCAqKmt3KToKQEAgLTI2Miw3ICsyNTksNyBAQAogZGVmIF9yZXNldF9jYWNoZSgpOgogICAgIF9wb2ludGVyX3R5cGVfY2FjaGUuY2xlYXIoKQogICAgIF9jX2Z1bmN0eXBlX2NhY2hlLmNsZWFyKCkKLSAgICBpZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CisgICAgaWYgX29zLm5hbWUgPT0gIm50IjoKICAgICAgICAgX3dpbl9mdW5jdHlwZV9jYWNoZS5jbGVhcigpCiAgICAgIyBfU2ltcGxlQ0RhdGEuY193Y2hhcl9wX2Zyb21fcGFyYW0KICAgICBQT0lOVEVSKGNfd2NoYXIpLmZyb21fcGFyYW0gPSBjX3djaGFyX3AuZnJvbV9wYXJhbQpAQCAtMzc0LDcgKzM3MSw3IEBACiAgICAgIiIiCiAgICAgX2Z1bmNfZmxhZ3NfID0gX0ZVTkNGTEFHX0NERUNMIHwgX0ZVTkNGTEFHX1BZVEhPTkFQSQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogCiAgICAgY2xhc3MgV2luRExMKENETEwpOgogICAgICAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBkbGwgZXhwb3J0aW5nIGZ1bmN0aW9ucyB1c2luZyB0aGUKQEAgLTQyNyw3ICs0MjQsNyBAQAogY2RsbCA9IExpYnJhcnlMb2FkZXIoQ0RMTCkKIHB5ZGxsID0gTGlicmFyeUxvYWRlcihQeURMTCkKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKICAgICBweXRob25hcGkgPSBQeURMTCgicHl0aG9uIGRsbCIsIE5vbmUsIF9zeXMuZGxsaGFuZGxlKQogZWxpZiBfc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgogICAgIHB5dGhvbmFwaSA9IFB5RExMKCJsaWJweXRob24lZC4lZC5kbGwiICUgX3N5cy52ZXJzaW9uX2luZm9bOjJdKQpAQCAtNDM1LDcgKzQzMiw3IEBACiAgICAgcHl0aG9uYXBpID0gUHlETEwoTm9uZSkKIAogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIHdpbmRsbCA9IExpYnJhcnlMb2FkZXIoV2luRExMKQogICAgIG9sZWRsbCA9IExpYnJhcnlMb2FkZXIoT2xlRExMKQogCkBAIC01MDMsNyArNTAwLDcgQEAKICAgICAgICAgcmV0dXJuIF93c3RyaW5nX2F0KHB0ciwgc2l6ZSkKIAogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6ICMgQ09NIHN0dWZmCitpZiBfb3MubmFtZSA9PSAibnQiOiAjIENPTSBzdHVmZgogICAgIGRlZiBEbGxHZXRDbGFzc09iamVjdChyY2xzaWQsIHJpaWQsIHBwdik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNjb20gPSBfX2ltcG9ydF9fKCJjb210eXBlcy5zZXJ2ZXIuaW5wcm9jc2VydmVyIiwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWycqJ10pCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9iaXRmaWVsZHMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9iaXRmaWVsZHMucHkKaW5kZXggYjM5ZDgyYy4uYzcxZDcxZCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYml0ZmllbGRzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCiAKLWltcG9ydCBjdHlwZXMKIGltcG9ydCBfY3R5cGVzX3Rlc3QKIAogY2xhc3MgQklUUyhTdHJ1Y3R1cmUpOgpAQCAtMTk3LDcgKzE5Niw3IEBACiAgICAgICAgIGNsYXNzIFgoU3RydWN0dXJlKToKICAgICAgICAgICAgIF9maWVsZHNfID0gWygiYSIsIGNfYnl0ZSwgNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAoImIiLCBjX2ludCwgNCldCi0gICAgICAgIGlmIG9zLm5hbWUgaW4gKCJudCIsICJjZSIpOgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSoyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplb2YoWCksIHNpemVvZihjX2ludCkpCkBAIC0yMjUsNyArMjI0LDcgQEAKICAgICAgICAgIyBNU1ZDIGRvZXMgTk9UIGNvbWJpbmUgY19zaG9ydCBhbmQgY19pbnQgaW50byBvbmUgZmllbGQsIEdDQwogICAgICAgICAjIGRvZXMgKHVubGVzcyBHQ0MgaXMgcnVuIHdpdGggJy1tbXMtYml0ZmllbGRzJyB3aGljaAogICAgICAgICAjIHByb2R1Y2VzIGNvZGUgY29tcGF0aWJsZSB3aXRoIE1TVkMpLgotICAgICAgICBpZiBvcy5uYW1lIGluICgibnQiLCAiY2UiKToKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplb2YoWCksIHNpemVvZihjX2ludCkgKiA0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplb2YoWCksIHNpemVvZihjX2ludCkgKiAyKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZmluZC5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ZpbmQucHkKaW5kZXggMjBjNTMzNy4uYzcyMDVmNSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZmluZC5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5CkBAIC02OSw2ICs2OSw0OSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGgubGV4aXN0cyh0ZXN0LnN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpLAorICAgICAgICAgICAgICAgICAgICAgJ1Rlc3Qgb25seSB2YWxpZCBmb3IgTGludXgnKQorY2xhc3MgTGliUGF0aEZpbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9maW5kX29uX2xpYnBhdGgoc2VsZik6CisgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgICAgIGltcG9ydCB0ZW1wZmlsZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2NjJywgJy0tdmVyc2lvbiddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgICAgIG91dCwgXyA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdnY2MsIG5lZWRlZCBmb3IgdGVzdCwgbm90IGF2YWlsYWJsZScpCisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgZDoKKyAgICAgICAgICAgICMgY3JlYXRlIGFuIGVtcHR5IHRlbXBvcmFyeSBmaWxlCisgICAgICAgICAgICBzcmNuYW1lID0gb3MucGF0aC5qb2luKGQsICdkdW1teS5jJykKKyAgICAgICAgICAgIGxpYm5hbWUgPSAncHlfY3R5cGVzX3Rlc3RfZHVtbXknCisgICAgICAgICAgICBkc3RuYW1lID0gb3MucGF0aC5qb2luKGQsICdsaWIlcy5zbycgJSBsaWJuYW1lKQorICAgICAgICAgICAgd2l0aCBvcGVuKHNyY25hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoc3JjbmFtZSkpCisgICAgICAgICAgICAjIGNvbXBpbGUgdGhlIGZpbGUgdG8gYSBzaGFyZWQgbGlicmFyeQorICAgICAgICAgICAgY21kID0gWydnY2MnLCAnLW8nLCBkc3RuYW1lLCAnLS1zaGFyZWQnLAorICAgICAgICAgICAgICAgICAgICctV2wsLXNvbmFtZSxsaWIlcy5zbycgJSBsaWJuYW1lLCBzcmNuYW1lXQorICAgICAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRzdG5hbWUpKQorICAgICAgICAgICAgIyBub3cgY2hlY2sgdGhhdCB0aGUgLnNvIGNhbid0IGJlIGZvdW5kIChzaW5jZSBub3QgaW4KKyAgICAgICAgICAgICMgTERfTElCUkFSWV9QQVRIKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmluZF9saWJyYXJ5KGxpYm5hbWUpKQorICAgICAgICAgICAgIyBub3cgYWRkIHRoZSBsb2NhdGlvbiB0byBMRF9MSUJSQVJZX1BBVEgKKyAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICAgICAgS0VZID0gJ0xEX0xJQlJBUllfUEFUSCcKKyAgICAgICAgICAgICAgICBpZiBLRVkgbm90IGluIGVudjoKKyAgICAgICAgICAgICAgICAgICAgdiA9IGQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB2ID0gJyVzOiVzJyAlIChlbnZbS0VZXSwgZCkKKyAgICAgICAgICAgICAgICBlbnYuc2V0KEtFWSwgdikKKyAgICAgICAgICAgICAgICAjIG5vdyBjaGVjayB0aGF0IHRoZSAuc28gY2FuIGJlIGZvdW5kIChzaW5jZSBpbgorICAgICAgICAgICAgICAgICMgTERfTElCUkFSWV9QQVRIKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZF9saWJyYXJ5KGxpYm5hbWUpLCAnbGliJXMuc28nICUgbGlibmFtZSkKKworCiAjIE9uIHBsYXRmb3JtcyB3aGVyZSB0aGUgZGVmYXVsdCBzaGFyZWQgbGlicmFyeSBzdWZmaXggaXMgJy5zbycsCiAjIGF0IGxlYXN0IHNvbWUgbGlicmFyaWVzIGNhbiBiZSBsb2FkZWQgYXMgYXR0cmlidXRlcyBvZiB0aGUgY2RsbAogIyBvYmplY3QsIHNpbmNlIGN0eXBlcyBub3cgdHJpZXMgbG9hZGluZyB0aGUgbGliIGFnYWluCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnVuY3B0ci5weQppbmRleCBmZjI1YzhmLi5mMzQ3MzRiIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgb3MsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCiAKIHRyeToKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgIyBwb3NzaWJsZSwgYXMgaW4gQywgdG8gY2FsbCBjZGVjbCBmdW5jdGlvbnMgd2l0aCBtb3JlIHBhcmFtZXRlcnMuCiAgICAgICAgICNzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIDEsIDIsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYygxLCAyLCAzLCA0LCA1LCA2KSwgMykKLSAgICAgICAgaWYgbm90IFdJTkZVTkNUWVBFIGlzIENGVU5DVFlQRSBhbmQgb3MubmFtZSAhPSAiY2UiOgorICAgICAgICBpZiBub3QgV0lORlVOQ1RZUEUgaXMgQ0ZVTkNUWVBFOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzLCAxLCAyLCAzKQogCiAgICAgZGVmIHRlc3Rfc3RydWN0dXJlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CmluZGV4IDI4NDY4YzEuLjQ1NTcxZjMgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQpAQCAtMTEsOCArMTEsNiBAQAogICAgIGdsb2JhbCBsaWJjX25hbWUKICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgIGxpYmNfbmFtZSA9IGZpbmRfbGlicmFyeSgiYyIpCi0gICAgZWxpZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgICAgIGxpYmNfbmFtZSA9ICJjb3JlZGxsIgogICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgogICAgICAgICBsaWJjX25hbWUgPSAiY3lnd2luMS5kbGwiCiAgICAgZWxzZToKQEAgLTQ5LDggKzQ3LDggQEAKICAgICAgICAgICAgICAgICBjZGxsLkxvYWRMaWJyYXJ5KGxpYikKICAgICAgICAgICAgICAgICBDRExMKGxpYikKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgaW4gKCJudCIsICJjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MgKE5UL0NFKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MnKQogICAgIGRlZiB0ZXN0X2xvYWRfbGlicmFyeShzZWxmKToKICAgICAgICAgIyBDUlQgaXMgbm8gbG9uZ2VyIGRpcmVjdGx5IGxvYWRhYmxlLiBTZWUgaXNzdWUyMzYwNiBmb3IgdGhlCiAgICAgICAgICMgZGlzY3Vzc2lvbiBhYm91dCBhbHRlcm5hdGl2ZSBhcHByb2FjaGVzLgpAQCAtNjQsMTQgKzYyLDkgQEAKICAgICAgICAgICAgIHdpbmRsbFsia2VybmVsMzIiXS5HZXRNb2R1bGVIYW5kbGVXCiAgICAgICAgICAgICB3aW5kbGwuTG9hZExpYnJhcnkoImtlcm5lbDMyIikuR2V0TW9kdWxlSGFuZGxlVwogICAgICAgICAgICAgV2luRExMKCJrZXJuZWwzMiIpLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgZWxpZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgICAgICAgICB3aW5kbGwuY29yZWRsbC5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICB3aW5kbGxbImNvcmVkbGwiXS5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICB3aW5kbGwuTG9hZExpYnJhcnkoImNvcmVkbGwiKS5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICBXaW5ETEwoImNvcmVkbGwiKS5HZXRNb2R1bGVIYW5kbGVXCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lIGluICgibnQiLCAiY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzIChOVC9DRSknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gIm50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzJykKICAgICBkZWYgdGVzdF9sb2FkX29yZGluYWxfZnVuY3Rpb25zKHNlbGYpOgogICAgICAgICBpbXBvcnQgX2N0eXBlc190ZXN0CiAgICAgICAgIGRsbCA9IFdpbkRMTChfY3R5cGVzX3Rlc3QuX19maWxlX18pCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfb2JqZWN0cy5weQppbmRleCBlZjdiMjBiLi4xOWUzZGMxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X29iamVjdHMucHkKQEAgLTU0LDcgKzU0LDcgQEAKIAogJycnCiAKLWltcG9ydCB1bml0dGVzdCwgZG9jdGVzdCwgc3lzCitpbXBvcnQgdW5pdHRlc3QsIGRvY3Rlc3QKIAogaW1wb3J0IGN0eXBlcy50ZXN0LnRlc3Rfb2JqZWN0cwogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQppbmRleCBlNTZiY2NmLi4zNjNmNTg2IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgdW5pdHRlc3QsIHN5cworaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGN0eXBlcy50ZXN0IGltcG9ydCBuZWVkX3N5bWJvbAogCiBjbGFzcyBTaW1wbGVUeXBlc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogICAgICMgWFhYIFJlcGxhY2UgYnkgY19jaGFyX3AgdGVzdHMKICAgICBkZWYgdGVzdF9jc3RyaW5ncyhzZWxmKToKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfY2hhcl9wLCBieXJlZgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19jaGFyX3AKIAogICAgICAgICAjIGNfY2hhcl9wLmZyb21fcGFyYW0gb24gYSBQeXRob24gU3RyaW5nIHBhY2tzIHRoZSBzdHJpbmcKICAgICAgICAgIyBpbnRvIGEgY3BhcmFtIG9iamVjdApAQCAtNjgsNyArNjgsNyBAQAogCiAgICAgQG5lZWRfc3ltYm9sKCdjX3djaGFyX3AnKQogICAgIGRlZiB0ZXN0X2N3X3N0cmluZ3Moc2VsZik6Ci0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBieXJlZiwgY193Y2hhcl9wCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBjX3djaGFyX3AKIAogICAgICAgICBjX3djaGFyX3AuZnJvbV9wYXJhbSgiMTIzIikKIApAQCAtOTgsNyArOTgsNyBAQAogICAgIGRlZiB0ZXN0X2J5cmVmX3BvaW50ZXIoc2VsZik6CiAgICAgICAgICMgVGhlIGZyb21fcGFyYW0gY2xhc3MgbWV0aG9kIG9mIFBPSU5URVIodHlwKSBjbGFzc2VzIGFjY2VwdHMgd2hhdCBpcwogICAgICAgICAjIHJldHVybmVkIGJ5IGJ5cmVmKG9iaiksIGl0IHR5cGUob2JqKSA9PSB0eXAKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfc2hvcnQsIGNfdWludCwgY19pbnQsIGNfbG9uZywgcG9pbnRlciwgUE9JTlRFUiwgYnlyZWYKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfc2hvcnQsIGNfdWludCwgY19pbnQsIGNfbG9uZywgUE9JTlRFUiwgYnlyZWYKICAgICAgICAgTFBJTlQgPSBQT0lOVEVSKGNfaW50KQogCiAgICAgICAgIExQSU5ULmZyb21fcGFyYW0oYnlyZWYoY19pbnQoNDIpKSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CmluZGV4IDMyZjgwMmMuLmQ2ODM5N2UgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKLWltcG9ydCByZSwgc3RydWN0LCBzeXMKK2ltcG9ydCByZSwgc3lzCiAKIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CiAgICAgVEhJU19FTkRJQU4gPSAiPCIKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JldHVybmZ1bmNwdHJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKaW5kZXggOTNlYmE2Yi4uMTk3NGY0MCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCi1pbXBvcnQgb3MKIAogaW1wb3J0IF9jdHlwZXNfdGVzdAogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zaXplcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CmluZGV4IGY5YjVlOTcuLjRjZWFjYmMgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CkBAIC0yLDcgKzIsNiBAQAogCiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weQppbmRleCBjNGE2NTFjLi44ZjZmZTVmIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkKQEAgLTMyNiwxMSArMzI2LDggQEAKIAogICAgICAgICBjbHMsIG1zZyA9IHNlbGYuZ2V0X2V4Y2VwdChQZXJzb24sIGIiU29tZW9uZSIsIChiImEiLCBiImIiLCBiImMiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMsIFJ1bnRpbWVFcnJvcikKLSAgICAgICAgaWYgaXNzdWJjbGFzcyhFeGNlcHRpb24sIG9iamVjdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoUGhvbmUpIDxjbGFzcyAnVHlwZUVycm9yJz46IHRvbyBtYW55IGluaXRpYWxpemVycyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgIihQaG9uZSkgVHlwZUVycm9yOiB0b28gbWFueSBpbml0aWFsaXplcnMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihQaG9uZSkgPGNsYXNzICdUeXBlRXJyb3InPjogdG9vIG1hbnkgaW5pdGlhbGl6ZXJzIikKIAogICAgIGRlZiB0ZXN0X2h1Z2VfZmllbGRfbmFtZShzZWxmKToKICAgICAgICAgIyBpc3N1ZTEyODgxOiBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcwpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CmluZGV4IDVhM2E0N2YuLmU3MWI0ODAgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKQEAgLTc5LDkgKzc5LDkgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaXRlbXMuYXBwZW5kKChlbnRyeS5uYW1lLmRlY29kZSgiYXNjaWkiKSwgZW50cnkuc2l6ZSkpCiAKLSAgICAgICAgZXhwZWN0ZWQgPSBbKCJfX2hlbGxvX18iLCAxNjEpLAotICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18iLCAtMTYxKSwKLSAgICAgICAgICAgICAgICAgICAgKCJfX3BoZWxsb19fLnNwYW0iLCAxNjEpLAorICAgICAgICBleHBlY3RlZCA9IFsoIl9faGVsbG9fXyIsIDEzOSksCisgICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXyIsIC0xMzkpLAorICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18uc3BhbSIsIDEzOSksCiAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtcywgZXhwZWN0ZWQsICJQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIGV4YW1wbGUgIgogICAgICAgICAgICAgImluIERvYy9saWJyYXJ5L2N0eXBlcy5yc3QgbWF5IGJlIG91dCBvZiBkYXRlIikKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdXRpbC5weSBiL0xpYi9jdHlwZXMvdXRpbC5weQppbmRleCA3Njg0ZWFiLi4zMzlhZThhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3V0aWwucHkKKysrIGIvTGliL2N0eXBlcy91dGlsLnB5CkBAIC02NywxNiArNjcsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBmbmFtZQogICAgICAgICByZXR1cm4gTm9uZQogCi1pZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgIyBzZWFyY2ggcGF0aCBhY2NvcmRpbmcgdG8gTVNETjoKLSAgICAjIC0gYWJzb2x1dGUgcGF0aCBzcGVjaWZpZWQgYnkgZmlsZW5hbWUKLSAgICAjIC0gVGhlIC5leGUgbGF1bmNoIGRpcmVjdG9yeQotICAgICMgLSB0aGUgV2luZG93cyBkaXJlY3RvcnkKLSAgICAjIC0gUk9NIGRsbCBmaWxlcyAod2hlcmUgYXJlIHRoZXk/KQotICAgICMgLSBPRU0gc3BlY2lmaWVkIHNlYXJjaCBwYXRoOiBIS0xNXExvYWRlclxTeXN0ZW1QYXRoCi0gICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKLSAgICAgICAgcmV0dXJuIG5hbWUKLQogaWYgb3MubmFtZSA9PSAicG9zaXgiIGFuZCBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgZnJvbSBjdHlwZXMubWFjaG9saWIuZHlsZCBpbXBvcnQgZHlsZF9maW5kIGFzIF9keWxkX2ZpbmQKICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgpAQCAtMjcxLDggKzI2MSw4IEBACiAgICAgICAgICAgICBhYmlfdHlwZSA9IG1hY2hfbWFwLmdldChtYWNoaW5lLCAnbGliYzYnKQogCiAgICAgICAgICAgICAjIFhYWCBhc3N1bWluZyBHTElCQydzIGxkY29uZmlnICh3aXRoIG9wdGlvbiAtcCkKLSAgICAgICAgICAgIHJlZ2V4ID0gb3MuZnNlbmNvZGUoCi0gICAgICAgICAgICAgICAgJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpKQorICAgICAgICAgICAgcmVnZXggPSByJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnCisgICAgICAgICAgICByZWdleCA9IG9zLmZzZW5jb2RlKHJlZ2V4ICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJy9zYmluL2xkY29uZmlnJywgJy1wJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuREVWTlVMTCwKQEAgLTI4NSw4ICsyNzUsMzIgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICBkZWYgX2ZpbmRMaWJfbGQobmFtZSk6CisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjOTk5OCBmb3Igd2h5IHRoaXMgaXMgbmVlZGVkCisgICAgICAgICAgICBleHByID0gcidbXlwoXClcc10qbGliJXNcLlteXChcKVxzXSonICUgcmUuZXNjYXBlKG5hbWUpCisgICAgICAgICAgICBjbWQgPSBbJ2xkJywgJy10J10KKyAgICAgICAgICAgIGxpYnBhdGggPSBvcy5lbnZpcm9uLmdldCgnTERfTElCUkFSWV9QQVRIJykKKyAgICAgICAgICAgIGlmIGxpYnBhdGg6CisgICAgICAgICAgICAgICAgZm9yIGQgaW4gbGlicGF0aC5zcGxpdCgnOicpOgorICAgICAgICAgICAgICAgICAgICBjbWQuZXh0ZW5kKFsnLUwnLCBkXSkKKyAgICAgICAgICAgIGNtZC5leHRlbmQoWyctbycsIG9zLmRldm51bGwsICctbCVzJyAlIG5hbWVdKQorICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgICAgICAgICAgICAgIG91dCwgXyA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChleHByLCBvcy5mc2RlY29kZShvdXQpKQorICAgICAgICAgICAgICAgIGlmIHJlczoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzLmdyb3VwKDApCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcGFzcyAgIyByZXN1bHQgd2lsbCBiZSBOb25lCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKICAgICAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKLSAgICAgICAgICAgIHJldHVybiBfZmluZFNvbmFtZV9sZGNvbmZpZyhuYW1lKSBvciBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkpCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjOTk5OAorICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIFwKKyAgICAgICAgICAgICAgICAgICBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkgb3IgX2ZpbmRMaWJfbGQobmFtZSkpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgdGVzdCBjb2RlCmRpZmYgLS1naXQgYS9MaWIvZGF0ZXRpbWUucHkgYi9MaWIvZGF0ZXRpbWUucHkKaW5kZXggYTIxNzhjNy4uMzYzNzRhYSAxMDA2NDQKLS0tIGEvTGliL2RhdGV0aW1lLnB5CisrKyBiL0xpYi9kYXRldGltZS5weQpAQCAtMTUyLDEyICsxNTIsMjYgQEAKICAgICBkbnVtID0gX2RheXNfYmVmb3JlX21vbnRoKHksIG0pICsgZAogICAgIHJldHVybiBfdGltZS5zdHJ1Y3RfdGltZSgoeSwgbSwgZCwgaGgsIG1tLCBzcywgd2RheSwgZG51bSwgZHN0ZmxhZykpCiAKLWRlZiBfZm9ybWF0X3RpbWUoaGgsIG1tLCBzcywgdXMpOgotICAgICMgU2tpcCB0cmFpbGluZyBtaWNyb3NlY29uZHMgd2hlbiB1cz09MC4KLSAgICByZXN1bHQgPSAiJTAyZDolMDJkOiUwMmQiICUgKGhoLCBtbSwgc3MpCi0gICAgaWYgdXM6Ci0gICAgICAgIHJlc3VsdCArPSAiLiUwNmQiICUgdXMKLSAgICByZXR1cm4gcmVzdWx0CitkZWYgX2Zvcm1hdF90aW1lKGhoLCBtbSwgc3MsIHVzLCB0aW1lc3BlYz0nYXV0bycpOgorICAgIHNwZWNzID0geworICAgICAgICAnaG91cnMnOiAnezowMmR9JywKKyAgICAgICAgJ21pbnV0ZXMnOiAnezowMmR9Ons6MDJkfScsCisgICAgICAgICdzZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9JywKKyAgICAgICAgJ21pbGxpc2Vjb25kcyc6ICd7OjAyZH06ezowMmR9Ons6MDJkfS57OjAzZH0nLAorICAgICAgICAnbWljcm9zZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9Lns6MDZkfScKKyAgICB9CisKKyAgICBpZiB0aW1lc3BlYyA9PSAnYXV0byc6CisgICAgICAgICMgU2tpcCB0cmFpbGluZyBtaWNyb3NlY29uZHMgd2hlbiB1cz09MC4KKyAgICAgICAgdGltZXNwZWMgPSAnbWljcm9zZWNvbmRzJyBpZiB1cyBlbHNlICdzZWNvbmRzJworICAgIGVsaWYgdGltZXNwZWMgPT0gJ21pbGxpc2Vjb25kcyc6CisgICAgICAgIHVzIC8vPSAxMDAwCisgICAgdHJ5OgorICAgICAgICBmbXQgPSBzcGVjc1t0aW1lc3BlY10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Vua25vd24gdGltZXNwZWMgdmFsdWUnKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBmbXQuZm9ybWF0KGhoLCBtbSwgc3MsIHVzKQogCiAjIENvcnJlY3RseSBzdWJzdGl0dXRlIGZvciAleiBhbmQgJVogZXNjYXBlcyBpbiBzdHJmdGltZSBmb3JtYXRzLgogZGVmIF93cmFwX3N0cmZ0aW1lKG9iamVjdCwgZm9ybWF0LCB0aW1ldHVwbGUpOgpAQCAtMjM2LDExICsyNTAsMTEgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShvZmZzZXQsIHRpbWVkZWx0YSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHppbmZvLiVzKCkgbXVzdCByZXR1cm4gTm9uZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAib3IgdGltZWRlbHRhLCBub3QgJyVzJyIgJSAobmFtZSwgdHlwZShvZmZzZXQpKSkKLSAgICBpZiBvZmZzZXQgJSB0aW1lZGVsdGEobWludXRlcz0xKSBvciBvZmZzZXQubWljcm9zZWNvbmRzOgorICAgIGlmIG9mZnNldC5taWNyb3NlY29uZHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInR6aW5mby4lcygpIG11c3QgcmV0dXJuIGEgd2hvbGUgbnVtYmVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib2YgbWludXRlcywgZ290ICVzIiAlIChuYW1lLCBvZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBzZWNvbmRzLCBnb3QgJXMiICUgKG5hbWUsIG9mZnNldCkpCiAgICAgaWYgbm90IC10aW1lZGVsdGEoMSkgPCBvZmZzZXQgPCB0aW1lZGVsdGEoMSk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMoKT0lcywgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCkiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgb2Zmc2V0KSkKIApAQCAtMjc0LDcgKzI4OCw3IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2RheSBtdXN0IGJlIGluIDEuLiVkJyAlIGRpbSwgZGF5KQogICAgIHJldHVybiB5ZWFyLCBtb250aCwgZGF5CiAKLWRlZiBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKToKK2RlZiBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKToKICAgICBob3VyID0gX2NoZWNrX2ludF9maWVsZChob3VyKQogICAgIG1pbnV0ZSA9IF9jaGVja19pbnRfZmllbGQobWludXRlKQogICAgIHNlY29uZCA9IF9jaGVja19pbnRfZmllbGQoc2Vjb25kKQpAQCAtMjg3LDcgKzMwMSw5IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlY29uZCBtdXN0IGJlIGluIDAuLjU5Jywgc2Vjb25kKQogICAgIGlmIG5vdCAwIDw9IG1pY3Jvc2Vjb25kIDw9IDk5OTk5OToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbWljcm9zZWNvbmQgbXVzdCBiZSBpbiAwLi45OTk5OTknLCBtaWNyb3NlY29uZCkKLSAgICByZXR1cm4gaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kCisgICAgaWYgZm9sZCBub3QgaW4gKDAsIDEpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMScsIGZvbGQpCisgICAgcmV0dXJuIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZAogCiBkZWYgX2NoZWNrX3R6aW5mb19hcmcodHopOgogICAgIGlmIHR6IGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKQEAgLTMxNiw2ICszMzIsNyBAQAogCiAgICAgcmV0dXJuIHEKIAorCiBjbGFzcyB0aW1lZGVsdGE6CiAgICAgIiIiUmVwcmVzZW50IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGV0aW1lIG9iamVjdHMuCiAKQEAgLTkxNSw3ICs5MzIsNyBAQAogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgeWhpLCB5bG8gPSBkaXZtb2Qoc2VsZi5feWVhciwgMjU2KQogICAgICAgICByZXR1cm4gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5XSksCiAKQEAgLTkyMyw4ICs5NDAsOCBAQAogICAgICAgICB5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSA9IHN0cmluZwogICAgICAgICBzZWxmLl95ZWFyID0geWhpICogMjU2ICsgeWxvCiAKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKHByb3RvY29sKSkKIAogX2RhdGVfY2xhc3MgPSBkYXRlICAjIHNvIGZ1bmN0aW9ucyB3LyBhcmdzIG5hbWVkICJkYXRlIiBjYW4gZ2V0IGF0IHRoZSBjbGFzcwogCkBAIC05MzIsNiArOTQ5LDcgQEAKIGRhdGUubWF4ID0gZGF0ZSg5OTk5LCAxMiwgMzEpCiBkYXRlLnJlc29sdXRpb24gPSB0aW1lZGVsdGEoZGF5cz0xKQogCisKIGNsYXNzIHR6aW5mbzoKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aW1lIHpvbmUgaW5mbyBjbGFzc2VzLgogCkBAIC0xMDIzLDExICsxMDQxLDExIEBACiAgICAgZHN0KCkKIAogICAgIFByb3BlcnRpZXMgKHJlYWRvbmx5KToKLSAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbworICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvLCBmb2xkCiAgICAgIiIiCi0gICAgX19zbG90c19fID0gJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycsICdfaGFzaGNvZGUnCisgICAgX19zbG90c19fID0gJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycsICdfaGFzaGNvZGUnLCAnX2ZvbGQnCiAKLSAgICBkZWYgX19uZXdfXyhjbHMsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6CisgICAgZGVmIF9fbmV3X18oY2xzLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUsICosIGZvbGQ9MCk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yLgogCiAgICAgICAgIEFyZ3VtZW50czoKQEAgLTEwMzUsMTUgKzEwNTMsMTYgQEAKICAgICAgICAgaG91ciwgbWludXRlIChyZXF1aXJlZCkKICAgICAgICAgc2Vjb25kLCBtaWNyb3NlY29uZCAoZGVmYXVsdCB0byB6ZXJvKQogICAgICAgICB0emluZm8gKGRlZmF1bHQgdG8gTm9uZSkKKyAgICAgICAgZm9sZCAoa2V5d29yZCBvbmx5LCBkZWZhdWx0IHRvIFRydWUpCiAgICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGhvdXIsIGJ5dGVzKSBhbmQgbGVuKGhvdXIpID09IDYgYW5kIGhvdXJbMF0gPCAyNDoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShob3VyLCBieXRlcykgYW5kIGxlbihob3VyKSA9PSA2IGFuZCBob3VyWzBdJjB4N0YgPCAyNDoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKICAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoaG91ciwgbWludXRlIG9yIE5vbmUpCiAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCi0gICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCisgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCA9IF9jaGVja190aW1lX2ZpZWxkcygKKyAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCkKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICBzZWxmLl9ob3VyID0gaG91cgpAQCAtMTA1Miw2ICsxMDcxLDcgQEAKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQorICAgICAgICBzZWxmLl9mb2xkID0gZm9sZAogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMDgwLDYgKzExMDAsMTAgQEAKICAgICAgICAgIiIidGltZXpvbmUgaW5mbyBvYmplY3QiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3R6aW5mbwogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkCisKICAgICAjIFN0YW5kYXJkIGNvbnZlcnNpb25zLCBfX2hhc2hfXyAoYW5kIGhlbHBlcnMpCiAKICAgICAjIENvbXBhcmlzb25zIG9mIHRpbWUgb2JqZWN0cyB3aXRoIG90aGVyLgpAQCAtMTE0NSw5ICsxMTY5LDEzIEBACiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICAiIiJIYXNoLiIiIgogICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKLSAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgc2VsZi5mb2xkOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmLnJlcGxhY2UoZm9sZD0wKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ID0gc2VsZgorICAgICAgICAgICAgdHpvZmYgPSB0LnV0Y29mZnNldCgpCiAgICAgICAgICAgICBpZiBub3QgdHpvZmY6ICAjIHplcm8gb3IgTm9uZQotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0Ll9nZXRzdGF0ZSgpWzBdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBoLCBtID0gZGl2bW9kKHRpbWVkZWx0YShob3Vycz1zZWxmLmhvdXIsIG1pbnV0ZXM9c2VsZi5taW51dGUpIC0gdHpvZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoaG91cnM9MSkpCkBAIC0xMTcxLDEwICsxMTk5LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNpZ24gPSAiKyIKICAgICAgICAgICAgIGhoLCBtbSA9IGRpdm1vZChvZmYsIHRpbWVkZWx0YShob3Vycz0xKSkKLSAgICAgICAgICAgIGFzc2VydCBub3QgbW0gJSB0aW1lZGVsdGEobWludXRlcz0xKSwgIndob2xlIG1pbnV0ZSIKLSAgICAgICAgICAgIG1tIC8vPSB0aW1lZGVsdGEobWludXRlcz0xKQorICAgICAgICAgICAgbW0sIHNzID0gZGl2bW9kKG1tLCB0aW1lZGVsdGEobWludXRlcz0xKSkKICAgICAgICAgICAgIGFzc2VydCAwIDw9IGhoIDwgMjQKICAgICAgICAgICAgIG9mZiA9ICIlcyUwMmQlcyUwMmQiICUgKHNpZ24sIGhoLCBzZXAsIG1tKQorICAgICAgICAgICAgaWYgc3M6CisgICAgICAgICAgICAgICAgb2ZmICs9ICc6JTAyZCcgJSBzcy5zZWNvbmRzCiAgICAgICAgIHJldHVybiBvZmYKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTExOTEsMTYgKzEyMjAsMjIgQEAKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCisgICAgICAgIGlmIHNlbGYuX2ZvbGQ6CisgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgorICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIGZvbGQ9MSkiCiAgICAgICAgIHJldHVybiBzCiAKLSAgICBkZWYgaXNvZm9ybWF0KHNlbGYpOgorICAgIGRlZiBpc29mb3JtYXQoc2VsZiwgdGltZXNwZWM9J2F1dG8nKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gSVNPLgogCi0gICAgICAgIFRoaXMgaXMgJ0hIOk1NOlNTLm1tbW1tbSt6ejp6eicsIG9yICdISDpNTTpTUyt6ejp6eicgaWYKLSAgICAgICAgc2VsZi5taWNyb3NlY29uZCA9PSAwLgorICAgICAgICBUaGUgZnVsbCBmb3JtYXQgaXMgJ0hIOk1NOlNTLm1tbW1tbSt6ejp6eicuIEJ5IGRlZmF1bHQsIHRoZSBmcmFjdGlvbmFsCisgICAgICAgIHBhcnQgaXMgb21pdHRlZCBpZiBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCisKKyAgICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHRpbWVzcGVjIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgICAgICAgdGVybXMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS4KICAgICAgICAgIiIiCiAgICAgICAgIHMgPSBfZm9ybWF0X3RpbWUoc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kLCB0aW1lc3BlYykKICAgICAgICAgdHogPSBzZWxmLl90enN0cigpCiAgICAgICAgIGlmIHR6OgogICAgICAgICAgICAgcyArPSB0egpAQCAtMTI2Niw3ICsxMzAxLDcgQEAKICAgICAgICAgcmV0dXJuIG9mZnNldAogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgaG91cj1Ob25lLCBtaW51dGU9Tm9uZSwgc2Vjb25kPU5vbmUsIG1pY3Jvc2Vjb25kPU5vbmUsCi0gICAgICAgICAgICAgICAgdHppbmZvPVRydWUpOgorICAgICAgICAgICAgICAgIHR6aW5mbz1UcnVlLCAqLCBmb2xkPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gYSBuZXcgdGltZSB3aXRoIG5ldyB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGRzLiIiIgogICAgICAgICBpZiBob3VyIGlzIE5vbmU6CiAgICAgICAgICAgICBob3VyID0gc2VsZi5ob3VyCkBAIC0xMjc4LDE0ICsxMzEzLDE5IEBACiAgICAgICAgICAgICBtaWNyb3NlY29uZCA9IHNlbGYubWljcm9zZWNvbmQKICAgICAgICAgaWYgdHppbmZvIGlzIFRydWU6CiAgICAgICAgICAgICB0emluZm8gPSBzZWxmLnR6aW5mbwotICAgICAgICByZXR1cm4gdGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbykKKyAgICAgICAgaWYgZm9sZCBpcyBOb25lOgorICAgICAgICAgICAgZm9sZCA9IHNlbGYuX2ZvbGQKKyAgICAgICAgcmV0dXJuIHRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQ9Zm9sZCkKIAogICAgICMgUGlja2xlIHN1cHBvcnQuCiAKLSAgICBkZWYgX2dldHN0YXRlKHNlbGYpOgorICAgIGRlZiBfZ2V0c3RhdGUoc2VsZiwgcHJvdG9jb2w9Myk6CiAgICAgICAgIHVzMiwgdXMzID0gZGl2bW9kKHNlbGYuX21pY3Jvc2Vjb25kLCAyNTYpCiAgICAgICAgIHVzMSwgdXMyID0gZGl2bW9kKHVzMiwgMjU2KQotICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCisgICAgICAgIGggPSBzZWxmLl9ob3VyCisgICAgICAgIGlmIHNlbGYuX2ZvbGQgYW5kIHByb3RvY29sID4gMzoKKyAgICAgICAgICAgIGggKz0gMTI4CisgICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFtoLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzMSwgdXMyLCB1czNdKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiAoYmFzZXN0YXRlLCkKQEAgLTEyOTUsMTIgKzEzMzUsMTggQEAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6CiAgICAgICAgIGlmIHR6aW5mbyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQotICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMyA9IHN0cmluZworICAgICAgICBoLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMyA9IHN0cmluZworICAgICAgICBpZiBoID4gMTI3OgorICAgICAgICAgICAgc2VsZi5fZm9sZCA9IDEKKyAgICAgICAgICAgIHNlbGYuX2hvdXIgPSBoIC0gMTI4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMAorICAgICAgICAgICAgc2VsZi5faG91ciA9IGgKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUocHJvdG9jb2wpKQogCiBfdGltZV9jbGFzcyA9IHRpbWUgICMgc28gZnVuY3Rpb25zIHcvIGFyZ3MgbmFtZWQgInRpbWUiIGNhbiBnZXQgYXQgdGhlIGNsYXNzCiAKQEAgLTEzMTcsMTYgKzEzNjMsMTYgQEAKICAgICBfX3Nsb3RzX18gPSBkYXRlLl9fc2xvdHNfXyArIHRpbWUuX19zbG90c19fCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoPU5vbmUsIGRheT1Ob25lLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwKLSAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gMTAgYW5kIDEgPD0geWVhclsyXSA8PSAxMjoKKyAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh5ZWFyLCBieXRlcykgYW5kIGxlbih5ZWFyKSA9PSAxMCBhbmQgMSA8PSB5ZWFyWzJdJjB4N0YgPD0gMTI6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CiAgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKHllYXIsIG1vbnRoKQogICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICAgeWVhciwgbW9udGgsIGRheSA9IF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQotICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCi0gICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCisgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCA9IF9jaGVja190aW1lX2ZpZWxkcygKKyAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCkKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICBzZWxmLl95ZWFyID0geWVhcgpAQCAtMTMzOCw2ICsxMzg0LDcgQEAKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQorICAgICAgICBzZWxmLl9mb2xkID0gZm9sZAogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMzY2LDYgKzE0MTMsMTAgQEAKICAgICAgICAgIiIidGltZXpvbmUgaW5mbyBvYmplY3QiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3R6aW5mbwogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX2Zyb210aW1lc3RhbXAoY2xzLCB0LCB1dGMsIHR6KToKICAgICAgICAgIiIiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAobGlrZSB0aW1lLnRpbWUoKSkuCkBAIC0xMzg0LDcgKzE0MzUsMjMgQEAKICAgICAgICAgY29udmVydGVyID0gX3RpbWUuZ210aW1lIGlmIHV0YyBlbHNlIF90aW1lLmxvY2FsdGltZQogICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzLCB3ZWVrZGF5LCBqZGF5LCBkc3QgPSBjb252ZXJ0ZXIodCkKICAgICAgICAgc3MgPSBtaW4oc3MsIDU5KSAgICAjIGNsYW1wIG91dCBsZWFwIHNlY29uZHMgaWYgdGhlIHBsYXRmb3JtIGhhcyB0aGVtCi0gICAgICAgIHJldHVybiBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICByZXN1bHQgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICBpZiB0eiBpcyBOb25lOgorICAgICAgICAgICAgIyBBcyBvZiB2ZXJzaW9uIDIwMTVmIG1heCBmb2xkIGluIElBTkEgZGF0YWJhc2UgaXMKKyAgICAgICAgICAgICMgMjMgaG91cnMgYXQgMTk2OS0wOS0zMCAxMzowMDowMCBpbiBLd2FqYWxlaW4uCisgICAgICAgICAgICAjIExldCdzIHByb2JlIDI0IGhvdXJzIGluIHRoZSBwYXN0IHRvIGRldGVjdCBhIHRyYW5zaXRpb246CisgICAgICAgICAgICBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwCisgICAgICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzID0gY29udmVydGVyKHQgLSBtYXhfZm9sZF9zZWNvbmRzKVs6Nl0KKyAgICAgICAgICAgIHByb2JlMSA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgICAgICB0cmFucyA9IHJlc3VsdCAtIHByb2JlMSAtIHRpbWVkZWx0YSgwLCBtYXhfZm9sZF9zZWNvbmRzKQorICAgICAgICAgICAgaWYgdHJhbnMuZGF5cyA8IDA6CisgICAgICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IGNvbnZlcnRlcih0ICsgdHJhbnMgLy8gdGltZWRlbHRhKDAsIDEpKVs6Nl0KKyAgICAgICAgICAgICAgICBwcm9iZTIgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICAgICAgICAgIGlmIHByb2JlMiA9PSByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5fZm9sZCA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IHR6LmZyb211dGMocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbXRpbWVzdGFtcChjbHMsIHQsIHR6PU5vbmUpOgpAQCAtMTM5NCwxMCArMTQ2MSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0eikKIAotICAgICAgICByZXN1bHQgPSBjbHMuX2Zyb210aW1lc3RhbXAodCwgdHogaXMgbm90IE5vbmUsIHR6KQotICAgICAgICBpZiB0eiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJlc3VsdCA9IHR6LmZyb211dGMocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIHJldHVybiBjbHMuX2Zyb210aW1lc3RhbXAodCwgdHogaXMgbm90IE5vbmUsIHR6KQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHV0Y2Zyb210aW1lc3RhbXAoY2xzLCB0KToKQEAgLTE0MTcsMTUgKzE0ODEsMTcgQEAKICAgICAgICAgcmV0dXJuIGNscy51dGNmcm9tdGltZXN0YW1wKHQpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY29tYmluZShjbHMsIGRhdGUsIHRpbWUpOgorICAgIGRlZiBjb21iaW5lKGNscywgZGF0ZSwgdGltZSwgdHppbmZvPVRydWUpOgogICAgICAgICAiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIGdpdmVuIGRhdGUgYW5kIGEgZ2l2ZW4gdGltZS4iCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGUsIF9kYXRlX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGF0ZSBhcmd1bWVudCBtdXN0IGJlIGEgZGF0ZSBpbnN0YW5jZSIpCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRpbWUsIF90aW1lX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidGltZSBhcmd1bWVudCBtdXN0IGJlIGEgdGltZSBpbnN0YW5jZSIpCisgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgorICAgICAgICAgICAgdHppbmZvID0gdGltZS50emluZm8KICAgICAgICAgcmV0dXJuIGNscyhkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5LAogICAgICAgICAgICAgICAgICAgIHRpbWUuaG91ciwgdGltZS5taW51dGUsIHRpbWUuc2Vjb25kLCB0aW1lLm1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgIHRpbWUudHppbmZvKQorICAgICAgICAgICAgICAgICAgIHR6aW5mbywgZm9sZD10aW1lLmZvbGQpCiAKICAgICBkZWYgdGltZXR1cGxlKHNlbGYpOgogICAgICAgICAiUmV0dXJuIGxvY2FsIHRpbWUgdHVwbGUgY29tcGF0aWJsZSB3aXRoIHRpbWUubG9jYWx0aW1lKCkuIgpAQCAtMTQ0MCwxMiArMTUwNiw0NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdCkKIAorICAgIGRlZiBfbWt0aW1lKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gaW50ZWdlciBQT1NJWCB0aW1lc3RhbXAuIiIiCisgICAgICAgIGVwb2NoID0gZGF0ZXRpbWUoMTk3MCwgMSwgMSkKKyAgICAgICAgbWF4X2ZvbGRfc2Vjb25kcyA9IDI0ICogMzYwMAorICAgICAgICB0ID0gKHNlbGYgLSBlcG9jaCkgLy8gdGltZWRlbHRhKDAsIDEpCisgICAgICAgIGRlZiBsb2NhbCh1KToKKyAgICAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MgPSBfdGltZS5sb2NhbHRpbWUodSlbOjZdCisgICAgICAgICAgICByZXR1cm4gKGRhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MpIC0gZXBvY2gpIC8vIHRpbWVkZWx0YSgwLCAxKQorCisgICAgICAgICMgT3VyIGdvYWwgaXMgdG8gc29sdmUgdCA9IGxvY2FsKHUpIGZvciB1LgorICAgICAgICBhID0gbG9jYWwodCkgLSB0CisgICAgICAgIHUxID0gdCAtIGEKKyAgICAgICAgdDEgPSBsb2NhbCh1MSkKKyAgICAgICAgaWYgdDEgPT0gdDoKKyAgICAgICAgICAgICMgV2UgZm91bmQgb25lIHNvbHV0aW9uLCBidXQgaXQgbWF5IG5vdCBiZSB0aGUgb25lIHdlIG5lZWQuCisgICAgICAgICAgICAjIExvb2sgZm9yIGFuIGVhcmxpZXIgc29sdXRpb24gKGlmIGBmb2xkYCBpcyAwKSwgb3IgYQorICAgICAgICAgICAgIyBsYXRlciBvbmUgKGlmIGBmb2xkYCBpcyAxKS4KKyAgICAgICAgICAgIHUyID0gdTEgKyAoLW1heF9mb2xkX3NlY29uZHMsIG1heF9mb2xkX3NlY29uZHMpW3NlbGYuZm9sZF0KKyAgICAgICAgICAgIGIgPSBsb2NhbCh1MikgLSB1MgorICAgICAgICAgICAgaWYgYSA9PSBiOgorICAgICAgICAgICAgICAgIHJldHVybiB1MQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYiA9IHQxIC0gdTEKKyAgICAgICAgICAgIGFzc2VydCBhICE9IGIKKyAgICAgICAgdTIgPSB0IC0gYgorICAgICAgICB0MiA9IGxvY2FsKHUyKQorICAgICAgICBpZiB0MiA9PSB0OgorICAgICAgICAgICAgcmV0dXJuIHUyCisgICAgICAgIGlmIHQxID09IHQ6CisgICAgICAgICAgICByZXR1cm4gdTEKKyAgICAgICAgIyBXZSBoYXZlIGZvdW5kIGJvdGggb2Zmc2V0cyBhIGFuZCBiLCBidXQgbmVpdGhlciB0IC0gYSBub3IgdCAtIGIgaXMKKyAgICAgICAgIyBhIHNvbHV0aW9uLiAgVGhpcyBtZWFucyB0IGlzIGluIHRoZSBnYXAuCisgICAgICAgIHJldHVybiAobWF4LCBtaW4pW3NlbGYuZm9sZF0odTEsIHUyKQorCisKICAgICBkZWYgdGltZXN0YW1wKHNlbGYpOgogICAgICAgICAiUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBhcyBmbG9hdCIKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gX3RpbWUubWt0aW1lKChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTEsIC0xKSkgKyBzZWxmLm1pY3Jvc2Vjb25kIC8gMWU2CisgICAgICAgICAgICBzID0gc2VsZi5fbWt0aW1lKCkKKyAgICAgICAgICAgIHJldHVybiBzICsgc2VsZi5taWNyb3NlY29uZCAvIDFlNgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIChzZWxmIC0gX0VQT0NIKS50b3RhbF9zZWNvbmRzKCkKIApAQCAtMTQ2NCwxNSArMTU2NCwxNiBAQAogCiAgICAgZGVmIHRpbWUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gdGhlIHRpbWUgcGFydCwgd2l0aCB0emluZm8gTm9uZS4iCi0gICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kKQorICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCwgZm9sZD1zZWxmLmZvbGQpCiAKICAgICBkZWYgdGltZXR6KHNlbGYpOgogICAgICAgICAiUmV0dXJuIHRoZSB0aW1lIHBhcnQsIHdpdGggc2FtZSB0emluZm8uIgogICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHppbmZvKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl90emluZm8sIGZvbGQ9c2VsZi5mb2xkKQogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgeWVhcj1Ob25lLCBtb250aD1Ob25lLCBkYXk9Tm9uZSwgaG91cj1Ob25lLAotICAgICAgICAgICAgICAgIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwgdHppbmZvPVRydWUpOgorICAgICAgICAgICAgICAgIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwgdHppbmZvPVRydWUsCisgICAgICAgICAgICAgICAgKiwgZm9sZD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIGEgbmV3IGRhdGV0aW1lIHdpdGggbmV3IHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZHMuIiIiCiAgICAgICAgIGlmIHllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHllYXIgPSBzZWxmLnllYXIKQEAgLTE0OTAsNDYgKzE1OTEsNDUgQEAKICAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgIHR6aW5mbyA9IHNlbGYudHppbmZvCi0gICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pCisgICAgICAgIGlmIGZvbGQgaXMgTm9uZToKKyAgICAgICAgICAgIGZvbGQgPSBzZWxmLmZvbGQKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCwgdHppbmZvLCBmb2xkPWZvbGQpCisKKyAgICBkZWYgX2xvY2FsX3RpbWV6b25lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgdHMgPSBzZWxmLl9ta3RpbWUoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHMgPSAoc2VsZiAtIF9FUE9DSCkgLy8gdGltZWRlbHRhKHNlY29uZHM9MSkKKyAgICAgICAgbG9jYWx0bSA9IF90aW1lLmxvY2FsdGltZSh0cykKKyAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRXh0cmFjdCBUWiBkYXRhIGlmIGF2YWlsYWJsZQorICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKKyAgICAgICAgICAgIHpvbmUgPSBsb2NhbHRtLnRtX3pvbmUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgZGVsdGEgPSBsb2NhbCAtIGRhdGV0aW1lKCpfdGltZS5nbXRpbWUodHMpWzo2XSkKKyAgICAgICAgICAgIHpvbmUgPSBfdGltZS5zdHJmdGltZSgnJVonLCBsb2NhbHRtKQorICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSwgem9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHR6ID0gdGltZXpvbmUodGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKSwgem9uZSkKKyAgICAgICAgcmV0dXJuIHR6CiAKICAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0ej1Ob25lKToKICAgICAgICAgaWYgdHogaXMgTm9uZToKLSAgICAgICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKLSAgICAgICAgICAgIHRzID0gKHNlbGYgLSBfRVBPQ0gpIC8vIHRpbWVkZWx0YShzZWNvbmRzPTEpCi0gICAgICAgICAgICBsb2NhbHRtID0gX3RpbWUubG9jYWx0aW1lKHRzKQotICAgICAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEgaWYgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKLSAgICAgICAgICAgICAgICB6b25lID0gbG9jYWx0bS50bV96b25lCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBDb21wdXRlIFVUQyBvZmZzZXQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgdmFsdWUgaW1wbGllZAotICAgICAgICAgICAgICAgICMgYnkgdG1faXNkc3QuICBJZiB0aGUgdmFsdWVzIG1hdGNoLCB1c2UgdGhlIHpvbmUgbmFtZQotICAgICAgICAgICAgICAgICMgaW1wbGllZCBieSB0bV9pc2RzdC4KLSAgICAgICAgICAgICAgICBkZWx0YSA9IGxvY2FsIC0gZGF0ZXRpbWUoKl90aW1lLmdtdGltZSh0cylbOjZdKQotICAgICAgICAgICAgICAgIGRzdCA9IF90aW1lLmRheWxpZ2h0IGFuZCBsb2NhbHRtLnRtX2lzZHN0ID4gMAotICAgICAgICAgICAgICAgIGdtdG9mZiA9IC0oX3RpbWUuYWx0em9uZSBpZiBkc3QgZWxzZSBfdGltZS50aW1lem9uZSkKLSAgICAgICAgICAgICAgICBpZiBkZWx0YSA9PSB0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpOgotICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhLCBfdGltZS50em5hbWVbZHN0XSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZiksIHpvbmUpCi0KKyAgICAgICAgICAgIHR6ID0gc2VsZi5fbG9jYWxfdGltZXpvbmUoKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0eiBhcmd1bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHR6aW5mbyIpCiAKICAgICAgICAgbXl0eiA9IHNlbGYudHppbmZvCiAgICAgICAgIGlmIG15dHogaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCisgICAgICAgICAgICBteXR6ID0gc2VsZi5fbG9jYWxfdGltZXpvbmUoKQogCiAgICAgICAgIGlmIHR6IGlzIG15dHo6CiAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgICAgICMgQ29udmVydCBzZWxmIHRvIFVUQywgYW5kIGF0dGFjaCB0aGUgbmV3IHRpbWUgem9uZSBvYmplY3QuCi0gICAgICAgIG15b2Zmc2V0ID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICBteW9mZnNldCA9IG15dHoudXRjb2Zmc2V0KHNlbGYpCiAgICAgICAgIGlmIG15b2Zmc2V0IGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhc3RpbWV6b25lKCkgcmVxdWlyZXMgYW4gYXdhcmUgZGF0ZXRpbWUiKQogICAgICAgICB1dGMgPSAoc2VsZiAtIG15b2Zmc2V0KS5yZXBsYWNlKHR6aW5mbz10eikKQEAgLTE1NDksMjEgKzE2NDksMjUgQEAKICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgc2VsZi5feWVhcikKIAotICAgIGRlZiBpc29mb3JtYXQoc2VsZiwgc2VwPSdUJyk6CisgICAgZGVmIGlzb2Zvcm1hdChzZWxmLCBzZXA9J1QnLCB0aW1lc3BlYz0nYXV0bycpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBJU08uCiAKLSAgICAgICAgVGhpcyBpcyAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0nLCBvciAnWVlZWS1NTS1ERCBISDpNTTpTUycgaWYKLSAgICAgICAgc2VsZi5taWNyb3NlY29uZCA9PSAwLgorICAgICAgICBUaGUgZnVsbCBmb3JtYXQgbG9va3MgbGlrZSAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0nLgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzIG9taXR0ZWQgaWYgc2VsZi5taWNyb3NlY29uZCA9PSAwLgogCiAgICAgICAgIElmIHNlbGYudHppbmZvIGlzIG5vdCBOb25lLCB0aGUgVVRDIG9mZnNldCBpcyBhbHNvIGF0dGFjaGVkLCBnaXZpbmcKLSAgICAgICAgJ1lZWVktTU0tREQgSEg6TU06U1MubW1tbW1tK0hIOk1NJyBvciAnWVlZWS1NTS1ERCBISDpNTTpTUytISDpNTScuCisgICAgICAgIGdpdmluZyBhIGZ1bGwgZm9ybWF0IG9mICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbStISDpNTScuCiAKICAgICAgICAgT3B0aW9uYWwgYXJndW1lbnQgc2VwIHNwZWNpZmllcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gZGF0ZSBhbmQKICAgICAgICAgdGltZSwgZGVmYXVsdCAnVCcuCisKKyAgICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHRpbWVzcGVjIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgICAgICAgdGVybXMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS4KICAgICAgICAgIiIiCiAgICAgICAgIHMgPSAoIiUwNGQtJTAyZC0lMDJkJWMiICUgKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlcCkgKwogICAgICAgICAgICAgIF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCwgdGltZXNwZWMpKQorCiAgICAgICAgIG9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKICAgICAgICAgaWYgb2ZmIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgb2ZmLmRheXMgPCAwOgpAQCAtMTU3Miw5ICsxNjc2LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNpZ24gPSAiKyIKICAgICAgICAgICAgIGhoLCBtbSA9IGRpdm1vZChvZmYsIHRpbWVkZWx0YShob3Vycz0xKSkKLSAgICAgICAgICAgIGFzc2VydCBub3QgbW0gJSB0aW1lZGVsdGEobWludXRlcz0xKSwgIndob2xlIG1pbnV0ZSIKLSAgICAgICAgICAgIG1tIC8vPSB0aW1lZGVsdGEobWludXRlcz0xKQorICAgICAgICAgICAgbW0sIHNzID0gZGl2bW9kKG1tLCB0aW1lZGVsdGEobWludXRlcz0xKSkKICAgICAgICAgICAgIHMgKz0gIiVzJTAyZDolMDJkIiAlIChzaWduLCBoaCwgbW0pCisgICAgICAgICAgICBpZiBzczoKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHNzLm1pY3Jvc2Vjb25kcworICAgICAgICAgICAgICAgIHMgKz0gIjolMDJkIiAlIHNzLnNlY29uZHMKICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTE1OTEsNiArMTY5Nyw5IEBACiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgdHppbmZvPSVyIiAlIHNlbGYuX3R6aW5mbyArICIpIgorICAgICAgICBpZiBzZWxmLl9mb2xkOgorICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKKyAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCBmb2xkPTEpIgogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xNjkzLDYgKzE4MDIsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQorICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBhbGxvd19taXhlZCBtZWFucyB0aGF0IHdlIGFyZSBjYWxsZWQgZnJvbSBfX2VxX18KKyAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgorICAgICAgICAgICAgICAgIGlmIG15b2ZmICE9IHNlbGYucmVwbGFjZShmb2xkPW5vdCBzZWxmLmZvbGQpLnV0Y29mZnNldCgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICAgICAgICAgIGlmIG90b2ZmICE9IG90aGVyLnJlcGxhY2UoZm9sZD1ub3Qgb3RoZXIuZm9sZCkudXRjb2Zmc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyCiAgICAgICAgICAgICBiYXNlX2NvbXBhcmUgPSBteW9mZiA9PSBvdG9mZgogCiAgICAgICAgIGlmIGJhc2VfY29tcGFyZToKQEAgLTE3NjAsOSArMTg3NSwxMyBAQAogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKLSAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgc2VsZi5mb2xkOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmLnJlcGxhY2UoZm9sZD0wKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ID0gc2VsZgorICAgICAgICAgICAgdHpvZmYgPSB0LnV0Y29mZnNldCgpCiAgICAgICAgICAgICBpZiB0em9mZiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0Ll9nZXRzdGF0ZSgpWzBdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkYXlzID0gX3ltZDJvcmQoc2VsZi55ZWFyLCBzZWxmLm1vbnRoLCBzZWxmLmRheSkKICAgICAgICAgICAgICAgICBzZWNvbmRzID0gc2VsZi5ob3VyICogMzYwMCArIHNlbGYubWludXRlICogNjAgKyBzZWxmLnNlY29uZApAQCAtMTc3MSwxMSArMTg5MCwxNCBAQAogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgeWhpLCB5bG8gPSBkaXZtb2Qoc2VsZi5feWVhciwgMjU2KQogICAgICAgICB1czIsIHVzMyA9IGRpdm1vZChzZWxmLl9taWNyb3NlY29uZCwgMjU2KQogICAgICAgICB1czEsIHVzMiA9IGRpdm1vZCh1czIsIDI1NikKLSAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LAorICAgICAgICBtID0gc2VsZi5fbW9udGgKKyAgICAgICAgaWYgc2VsZi5fZm9sZCBhbmQgcHJvdG9jb2wgPiAzOgorICAgICAgICAgICAgbSArPSAxMjgKKyAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3loaSwgeWxvLCBtLCBzZWxmLl9kYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzMSwgdXMyLCB1czNdKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKQEAgLTE3ODYsMTQgKzE5MDgsMjAgQEAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6CiAgICAgICAgIGlmIHR6aW5mbyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQotICAgICAgICAoeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlbGYuX2hvdXIsCisgICAgICAgICh5aGksIHlsbywgbSwgc2VsZi5fZGF5LCBzZWxmLl9ob3VyLAogICAgICAgICAgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMpID0gc3RyaW5nCisgICAgICAgIGlmIG0gPiAxMjc6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMQorICAgICAgICAgICAgc2VsZi5fbW9udGggPSBtIC0gMTI4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMAorICAgICAgICAgICAgc2VsZi5fbW9udGggPSBtCiAgICAgICAgIHNlbGYuX3llYXIgPSB5aGkgKiAyNTYgKyB5bG8KICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKCkpCisgICAgZGVmIF9fcmVkdWNlX2V4X18oc2VsZiwgcHJvdG9jb2wpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZShwcm90b2NvbCkpCiAKIAogZGF0ZXRpbWUubWluID0gZGF0ZXRpbWUoMSwgMSwgMSkKQEAgLTE5MTMsNiArMjA0MSw4IEBACiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9uYW1lX2Zyb21fb2Zmc2V0KGRlbHRhKToKKyAgICAgICAgaWYgbm90IGRlbHRhOgorICAgICAgICAgICAgcmV0dXJuICdVVEMnCiAgICAgICAgIGlmIGRlbHRhIDwgdGltZWRlbHRhKDApOgogICAgICAgICAgICAgc2lnbiA9ICctJwogICAgICAgICAgICAgZGVsdGEgPSAtZGVsdGEKZGlmZiAtLWdpdCBhL0xpYi9kYm0vZHVtYi5weSBiL0xpYi9kYm0vZHVtYi5weQppbmRleCA3Nzc3YTdjLi5lN2M2NDQwIDEwMDY0NAotLS0gYS9MaWIvZGJtL2R1bWIucHkKKysrIGIvTGliL2RibS9kdW1iLnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZWJhc2VuYW1lLCBtb2RlLCBmbGFnPSdjJyk6CiAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlCisgICAgICAgIHNlbGYuX3JlYWRvbmx5ID0gKGZsYWcgPT0gJ3InKQogCiAgICAgICAgICMgVGhlIGRpcmVjdG9yeSBmaWxlIGlzIGEgdGV4dCBmaWxlLiAgRWFjaCBsaW5lIGxvb2tzIGxpa2UKICAgICAgICAgIyAgICAiJXIsICglZCwgJWQpXG4iICUgKGtleSwgcG9zLCBzaXopCkBAIC04MCw2ICs4MSwxMSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3InLCBlbmNvZGluZz0iTGF0aW4tMSIpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgaWYgZmxhZyBub3QgaW4gKCdjJywgJ24nKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgZGF0YWJhc2UgZmlsZSBpcyBtaXNzaW5nLCB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbWFudGljcyBvZiB0aGUgJ2MnIGZsYWcgd2lsbCBiZSB1c2VkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NCkKICAgICAgICAgICAgIHdpdGggX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3cnLCBlbmNvZGluZz0iTGF0aW4tMSIpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2htb2Qoc2VsZi5fZGF0ZmlsZSkKICAgICAgICAgZWxzZToKQEAgLTE3OCw2ICsxODQsMTAgQEAKICAgICAgICAgICAgIGYud3JpdGUoIiVyLCAlclxuIiAlIChrZXkuZGVjb2RlKCJMYXRpbi0xIiksIHBvc19hbmRfc2l6X3BhaXIpKQogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsKToKKyAgICAgICAgaWYgc2VsZi5fcmVhZG9ubHk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShrZXksIChieXRlcywgYnl0ZWFycmF5KSk6CkBAIC0yMTIsNiArMjIyLDEwIEBACiAgICAgICAgICAgICAjIChzbyB0aGF0IF9jb21taXQoKSBuZXZlciBnZXRzIGNhbGxlZCkuCiAKICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgaWYgc2VsZi5fcmVhZG9ubHk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgc2VsZi5fdmVyaWZ5X29wZW4oKQpAQCAtMzAwLDQgKzMxNCw4IEBACiAgICAgZWxzZToKICAgICAgICAgIyBUdXJuIG9mZiBhbnkgYml0cyB0aGF0IGFyZSBzZXQgaW4gdGhlIHVtYXNrCiAgICAgICAgIG1vZGUgPSBtb2RlICYgKH51bSkKKyAgICBpZiBmbGFnIG5vdCBpbiAoJ3InLCAndycsICdjJywgJ24nKToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm4oIkZsYWcgbXVzdCBiZSBvbmUgb2YgJ3InLCAndycsICdjJywgb3IgJ24nIiwKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gX0RhdGFiYXNlKGZpbGUsIG1vZGUsIGZsYWc9ZmxhZykKZGlmZiAtLWdpdCBhL0xpYi9kaWZmbGliLnB5IGIvTGliL2RpZmZsaWIucHkKaW5kZXggMDc2YmJhYy4uMjA5NWE1ZSAxMDA2NDQKLS0tIGEvTGliL2RpZmZsaWIucHkKKysrIGIvTGliL2RpZmZsaWIucHkKQEAgLTE0MTUsNyArMTQxNSw3IEBACiAgICAgaW1wb3J0IHJlCiAKICAgICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgZmluZGluZyBpbnRyYWxpbmUgY2hhbmdlIGluZGljZXMKLSAgICBjaGFuZ2VfcmUgPSByZS5jb21waWxlKCcoXCsrfFwtK3xcXispJykKKyAgICBjaGFuZ2VfcmUgPSByZS5jb21waWxlKHInKFwrK3xcLSt8XF4rKScpCiAKICAgICAjIGNyZWF0ZSB0aGUgZGlmZmVyZW5jZSBpdGVyYXRvciB0byBnZW5lcmF0ZSB0aGUgZGlmZmVyZW5jZXMKICAgICBkaWZmX2xpbmVzX2l0ZXJhdG9yID0gbmRpZmYoZnJvbWxpbmVzLHRvbGluZXMsbGluZWp1bmssY2hhcmp1bmspCmRpZmYgLS1naXQgYS9MaWIvZGlzLnB5IGIvTGliL2Rpcy5weQppbmRleCBmN2UzYzdmLi4zYTcwNmJlIDEwMDY0NAotLS0gYS9MaWIvZGlzLnB5CisrKyBiL0xpYi9kaXMucHkKQEAgLTg3LDYgKzg3LDcgQEAKICAgICA2NDogIk5PRlJFRSIsCiAgICAxMjg6ICJDT1JPVVRJTkUiLAogICAgMjU2OiAiSVRFUkFCTEVfQ09ST1VUSU5FIiwKKyAgIDUxMjogIkFTWU5DX0dFTkVSQVRPUiIsCiB9CiAKIGRlZiBwcmV0dHlfZmxhZ3MoZmxhZ3MpOgpAQCAtMTYzLDYgKzE2NCwxNSBAQAogX0luc3RydWN0aW9uID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiX0luc3RydWN0aW9uIiwKICAgICAgIm9wbmFtZSBvcGNvZGUgYXJnIGFyZ3ZhbCBhcmdyZXByIG9mZnNldCBzdGFydHNfbGluZSBpc19qdW1wX3RhcmdldCIpCiAKK19JbnN0cnVjdGlvbi5vcG5hbWUuX19kb2NfXyA9ICJIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBvcGVyYXRpb24iCitfSW5zdHJ1Y3Rpb24ub3Bjb2RlLl9fZG9jX18gPSAiTnVtZXJpYyBjb2RlIGZvciBvcGVyYXRpb24iCitfSW5zdHJ1Y3Rpb24uYXJnLl9fZG9jX18gPSAiTnVtZXJpYyBhcmd1bWVudCB0byBvcGVyYXRpb24gKGlmIGFueSksIG90aGVyd2lzZSBOb25lIgorX0luc3RydWN0aW9uLmFyZ3ZhbC5fX2RvY19fID0gIlJlc29sdmVkIGFyZyB2YWx1ZSAoaWYga25vd24pLCBvdGhlcndpc2Ugc2FtZSBhcyBhcmciCitfSW5zdHJ1Y3Rpb24uYXJncmVwci5fX2RvY19fID0gIkh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIG9wZXJhdGlvbiBhcmd1bWVudCIKK19JbnN0cnVjdGlvbi5vZmZzZXQuX19kb2NfXyA9ICJTdGFydCBpbmRleCBvZiBvcGVyYXRpb24gd2l0aGluIGJ5dGVjb2RlIHNlcXVlbmNlIgorX0luc3RydWN0aW9uLnN0YXJ0c19saW5lLl9fZG9jX18gPSAiTGluZSBzdGFydGVkIGJ5IHRoaXMgb3Bjb2RlIChpZiBhbnkpLCBvdGhlcndpc2UgTm9uZSIKK19JbnN0cnVjdGlvbi5pc19qdW1wX3RhcmdldC5fX2RvY19fID0gIlRydWUgaWYgb3RoZXIgY29kZSBqdW1wcyB0byBoZXJlLCBvdGhlcndpc2UgRmFsc2UiCisKIGNsYXNzIEluc3RydWN0aW9uKF9JbnN0cnVjdGlvbik6CiAgICAgIiIiRGV0YWlscyBmb3IgYSBieXRlY29kZSBvcGVyYXRpb24KIApAQCAtMjc2LDcgKzI4Niw2IEBACiAgICAgIiIiCiAgICAgbGFiZWxzID0gZmluZGxhYmVscyhjb2RlKQogICAgIHN0YXJ0c19saW5lID0gTm9uZQotICAgIGZyZWUgPSBOb25lCiAgICAgZm9yIG9mZnNldCwgb3AsIGFyZyBpbiBfdW5wYWNrX29wYXJncyhjb2RlKToKICAgICAgICAgaWYgbGluZXN0YXJ0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHN0YXJ0c19saW5lID0gbGluZXN0YXJ0cy5nZXQob2Zmc2V0LCBOb25lKQpAQCAtMjk2LDcgKzMwNSw3IEBACiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hbWU6CiAgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9uYW1lX2luZm8oYXJnLCBuYW1lcykKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzanJlbDoKLSAgICAgICAgICAgICAgICBhcmd2YWwgPSBvZmZzZXQgKyAzICsgYXJnCisgICAgICAgICAgICAgICAgYXJndmFsID0gb2Zmc2V0ICsgMiArIGFyZwogICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAidG8gIiArIHJlcHIoYXJndmFsKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNsb2NhbDoKICAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIHZhcm5hbWVzKQpAQCAtMzA1LDggKzMxNCw2IEBACiAgICAgICAgICAgICAgICAgYXJncmVwciA9IGFyZ3ZhbAogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNmcmVlOgogICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgY2VsbHMpCi0gICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hcmdzOgotICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAiJWQgcG9zaXRpb25hbCwgJWQga2V5d29yZCBwYWlyIiAlIChhcmclMjU2LCBhcmcvLzI1NikKICAgICAgICAgeWllbGQgSW5zdHJ1Y3Rpb24ob3BuYW1lW29wXSwgb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgYXJndmFsLCBhcmdyZXByLAogICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIHN0YXJ0c19saW5lLCBpc19qdW1wX3RhcmdldCkKQEAgLTM0MywyMyArMzUwLDE1IEBACiBkaXNjbyA9IGRpc2Fzc2VtYmxlICAgICAgICAgICAgICAgICAgICAgIyBYWFggRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAKIGRlZiBfdW5wYWNrX29wYXJncyhjb2RlKToKLSAgICAjIGVudW1lcmF0ZSgpIGlzIG5vdCBhbiBvcHRpb24sIHNpbmNlIHdlIHNvbWV0aW1lcyBwcm9jZXNzCi0gICAgIyBtdWx0aXBsZSBlbGVtZW50cyBvbiBhIHNpbmdsZSBwYXNzIHRocm91Z2ggdGhlIGxvb3AKICAgICBleHRlbmRlZF9hcmcgPSAwCi0gICAgbiA9IGxlbihjb2RlKQotICAgIGkgPSAwCi0gICAgd2hpbGUgaSA8IG46CisgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGNvZGUpLCAyKToKICAgICAgICAgb3AgPSBjb2RlW2ldCi0gICAgICAgIG9mZnNldCA9IGkKLSAgICAgICAgaSA9IGkrMQotICAgICAgICBhcmcgPSBOb25lCiAgICAgICAgIGlmIG9wID49IEhBVkVfQVJHVU1FTlQ6Ci0gICAgICAgICAgICBhcmcgPSBjb2RlW2ldICsgY29kZVtpKzFdKjI1NiArIGV4dGVuZGVkX2FyZwotICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gMAotICAgICAgICAgICAgaSA9IGkrMgotICAgICAgICAgICAgaWYgb3AgPT0gRVhURU5ERURfQVJHOgotICAgICAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IGFyZyo2NTUzNgotICAgICAgICB5aWVsZCAob2Zmc2V0LCBvcCwgYXJnKQorICAgICAgICAgICAgYXJnID0gY29kZVtpKzFdIHwgZXh0ZW5kZWRfYXJnCisgICAgICAgICAgICBleHRlbmRlZF9hcmcgPSAoYXJnIDw8IDgpIGlmIG9wID09IEVYVEVOREVEX0FSRyBlbHNlIDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZyA9IE5vbmUKKyAgICAgICAgeWllbGQgKGksIG9wLCBhcmcpCiAKIGRlZiBmaW5kbGFiZWxzKGNvZGUpOgogICAgICIiIkRldGVjdCBhbGwgb2Zmc2V0cyBpbiBhIGJ5dGUgY29kZSB3aGljaCBhcmUganVtcCB0YXJnZXRzLgpAQCAtMzcwLDE0ICszNjksMTQgQEAKICAgICBsYWJlbHMgPSBbXQogICAgIGZvciBvZmZzZXQsIG9wLCBhcmcgaW4gX3VucGFja19vcGFyZ3MoY29kZSk6CiAgICAgICAgIGlmIGFyZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxhYmVsID0gLTEKICAgICAgICAgICAgIGlmIG9wIGluIGhhc2pyZWw6Ci0gICAgICAgICAgICAgICAgbGFiZWwgPSBvZmZzZXQgKyAzICsgYXJnCisgICAgICAgICAgICAgICAgbGFiZWwgPSBvZmZzZXQgKyAyICsgYXJnCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2phYnM6CiAgICAgICAgICAgICAgICAgbGFiZWwgPSBhcmcKLSAgICAgICAgICAgIGlmIGxhYmVsID49IDA6Ci0gICAgICAgICAgICAgICAgaWYgbGFiZWwgbm90IGluIGxhYmVsczoKLSAgICAgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChsYWJlbCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxhYmVsIG5vdCBpbiBsYWJlbHM6CisgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChsYWJlbCkKICAgICByZXR1cm4gbGFiZWxzCiAKIGRlZiBmaW5kbGluZXN0YXJ0cyhjb2RlKToKQEAgLTM4Niw4ICszODUsOCBAQAogICAgIEdlbmVyYXRlIHBhaXJzIChvZmZzZXQsIGxpbmVubykgYXMgZGVzY3JpYmVkIGluIFB5dGhvbi9jb21waWxlLmMuCiAKICAgICAiIiIKLSAgICBieXRlX2luY3JlbWVudHMgPSBsaXN0KGNvZGUuY29fbG5vdGFiWzA6OjJdKQotICAgIGxpbmVfaW5jcmVtZW50cyA9IGxpc3QoY29kZS5jb19sbm90YWJbMTo6Ml0pCisgICAgYnl0ZV9pbmNyZW1lbnRzID0gY29kZS5jb19sbm90YWJbMDo6Ml0KKyAgICBsaW5lX2luY3JlbWVudHMgPSBjb2RlLmNvX2xub3RhYlsxOjoyXQogCiAgICAgbGFzdGxpbmVubyA9IE5vbmUKICAgICBsaW5lbm8gPSBjb2RlLmNvX2ZpcnN0bGluZW5vCkBAIC0zOTgsNiArMzk3LDkgQEAKICAgICAgICAgICAgICAgICB5aWVsZCAoYWRkciwgbGluZW5vKQogICAgICAgICAgICAgICAgIGxhc3RsaW5lbm8gPSBsaW5lbm8KICAgICAgICAgICAgIGFkZHIgKz0gYnl0ZV9pbmNyCisgICAgICAgIGlmIGxpbmVfaW5jciA+PSAweDgwOgorICAgICAgICAgICAgIyBsaW5lX2luY3JlbWVudHMgaXMgYW4gYXJyYXkgb2YgOC1iaXQgc2lnbmVkIGludGVnZXJzCisgICAgICAgICAgICBsaW5lX2luY3IgLT0gMHgxMDAKICAgICAgICAgbGluZW5vICs9IGxpbmVfaW5jcgogICAgIGlmIGxpbmVubyAhPSBsYXN0bGluZW5vOgogICAgICAgICB5aWVsZCAoYWRkciwgbGluZW5vKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQppbmRleCBiZWQxMzg0Li43OGFlNTc1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkaXJwYXRoLCBuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICAgICB6aXAud3JpdGUocGF0aCwgcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJhZGRpbmcgJyVzJyIgJSBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oImFkZGluZyAnJXMnIiwgcGF0aCkKICAgICAgICAgICAgIHppcC5jbG9zZSgpCiAKICAgICByZXR1cm4gemlwX2ZpbGVuYW1lCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NtZC5weSBiL0xpYi9kaXN0dXRpbHMvY21kLnB5CmluZGV4IGM4OWQ1ZWYuLjkzOWY3OTUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY21kLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY21kLnB5CkBAIC0yMjEsNyArMjIxLDcgQEAKICAgICAgICAgc2VsZi5fZW5zdXJlX3N0cmluZ2xpa2Uob3B0aW9uLCAic3RyaW5nIiwgZGVmYXVsdCkKIAogICAgIGRlZiBlbnN1cmVfc3RyaW5nX2xpc3Qoc2VsZiwgb3B0aW9uKToKLSAgICAgICAgIiIiRW5zdXJlIHRoYXQgJ29wdGlvbicgaXMgYSBsaXN0IG9mIHN0cmluZ3MuICBJZiAnb3B0aW9uJyBpcworICAgICAgICByIiIiRW5zdXJlIHRoYXQgJ29wdGlvbicgaXMgYSBsaXN0IG9mIHN0cmluZ3MuICBJZiAnb3B0aW9uJyBpcwogICAgICAgICBjdXJyZW50bHkgYSBzdHJpbmcsIHdlIHNwbGl0IGl0IGVpdGhlciBvbiAvLFxzKi8gb3IgL1xzKy8sIHNvCiAgICAgICAgICJmb28gYmFyIGJheiIsICJmb28sYmFyLGJheiIsIGFuZCAiZm9vLCAgIGJhciBiYXoiIGFsbCBiZWNvbWUKICAgICAgICAgWyJmb28iLCAiYmFyIiwgImJheiJdLgpAQCAtMzI5LDggKzMyOSw3IEBACiAgICAgIyAtLSBFeHRlcm5hbCB3b3JsZCBtYW5pcHVsYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIGRlZiB3YXJuKHNlbGYsIG1zZyk6Ci0gICAgICAgIGxvZy53YXJuKCJ3YXJuaW5nOiAlczogJXNcbiIgJQotICAgICAgICAgICAgICAgIChzZWxmLmdldF9jb21tYW5kX25hbWUoKSwgbXNnKSkKKyAgICAgICAgbG9nLndhcm4oIndhcm5pbmc6ICVzOiAlc1xuIiwgc2VsZi5nZXRfY29tbWFuZF9uYW1lKCksIG1zZykKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIGZ1bmMsIGFyZ3MsIG1zZz1Ob25lLCBsZXZlbD0xKToKICAgICAgICAgdXRpbC5leGVjdXRlKGZ1bmMsIGFyZ3MsIG1zZywgZHJ5X3J1bj1zZWxmLmRyeV9ydW4pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CmluZGV4IGYxYmZiMjQuLmU5Mjc0ZDkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgIGluc3RhbGwuc2tpcF9idWlsZCA9IHNlbGYuc2tpcF9idWlsZAogICAgICAgICBpbnN0YWxsLndhcm5fZGlyID0gMAogCi0gICAgICAgIGxvZy5pbmZvKCJpbnN0YWxsaW5nIHRvICVzIiAlIHNlbGYuYmRpc3RfZGlyKQorICAgICAgICBsb2cuaW5mbygiaW5zdGFsbGluZyB0byAlcyIsIHNlbGYuYmRpc3RfZGlyKQogICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCdpbnN0YWxsJykKIAogICAgICAgICAjIEFuZCBtYWtlIGFuIGFyY2hpdmUgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb2YgdGhlCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weQppbmRleCBiM2NmZTljLi5hNGJkNWE1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkKQEAgLTE5OSw3ICsxOTksNyBAQAogICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzZWxmLnRhcmdldF92ZXJzaW9uCiAgICAgICAgICAgICBpZiBub3QgdGFyZ2V0X3ZlcnNpb246CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuc2tpcF9idWlsZCwgIlNob3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGlzIgotICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc3lzLnZlcnNpb25bMDozXQorICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJXMiICUgKHNlbGYucGxhdF9uYW1lLCB0YXJnZXRfdmVyc2lvbikKICAgICAgICAgICAgIGJ1aWxkID0gc2VsZi5nZXRfZmluYWxpemVkX2NvbW1hbmQoJ2J1aWxkJykKICAgICAgICAgICAgIGJ1aWxkLmJ1aWxkX2xpYiA9IG9zLnBhdGguam9pbihidWlsZC5idWlsZF9iYXNlLApAQCAtNjIzLDcgKzYyMyw3IEBACiAgICAgICAgIGNvc3QgPSBQeURpYWxvZyhkYiwgIkRpc2tDb3N0RGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIk9LIiwgIk9LIiwgIk9LIiwgYml0bWFwPUZhbHNlKQogICAgICAgICBjb3N0LnRleHQoIlRpdGxlIiwgMTUsIDYsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9RGlzayBTcGFjZSBSZXF1aXJlbWVudHMiKQorICAgICAgICAgICAgICAgICByIntcRGxnRm9udEJvbGQ4fURpc2sgU3BhY2UgUmVxdWlyZW1lbnRzIikKICAgICAgICAgY29zdC50ZXh0KCJEZXNjcmlwdGlvbiIsIDIwLCAyMCwgMjgwLCAyMCwgMHgzMDAwMywKICAgICAgICAgICAgICAgICAgICJUaGUgZGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMuIikKICAgICAgICAgY29zdC50ZXh0KCJUZXh0IiwgMjAsIDUzLCAzMzAsIDYwLCAzLApAQCAtNjcwLDcgKzY3MCw3IEBACiAgICAgICAgIHByb2dyZXNzID0gUHlEaWFsb2coZGIsICJQcm9ncmVzc0RsZyIsIHgsIHksIHcsIGgsIG1vZGVsZXNzLCB0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiwgIkNhbmNlbCIsICJDYW5jZWwiLCBiaXRtYXA9RmFsc2UpCiAgICAgICAgIHByb2dyZXNzLnRleHQoIlRpdGxlIiwgMjAsIDE1LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgICAgICJ7XERsZ0ZvbnRCb2xkOH1bUHJvZ3Jlc3MxXSBbUHJvZHVjdE5hbWVdIikKKyAgICAgICAgICAgICAgICAgICAgIHIie1xEbGdGb250Qm9sZDh9W1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXSIpCiAgICAgICAgIHByb2dyZXNzLnRleHQoIlRleHQiLCAzNSwgNjUsIDMwMCwgMzAsIDMsCiAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBJbnN0YWxsZXIgW1Byb2dyZXNzMl0gW1Byb2R1Y3ROYW1lXS4gIgogICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG1heSB0YWtlIHNldmVyYWwgbWludXRlcy4iKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQppbmRleCAwYzBlMmMxLi5kM2UxZDNhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHNlbGYudGFyZ2V0X3ZlcnNpb24KICAgICAgICAgICAgIGlmIG5vdCB0YXJnZXRfdmVyc2lvbjoKICAgICAgICAgICAgICAgICBhc3NlcnQgc2VsZi5za2lwX2J1aWxkLCAiU2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoaXMiCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzeXMudmVyc2lvblswOjNdCisgICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lcyIgJSAoc2VsZi5wbGF0X25hbWUsIHRhcmdldF92ZXJzaW9uKQogICAgICAgICAgICAgYnVpbGQgPSBzZWxmLmdldF9maW5hbGl6ZWRfY29tbWFuZCgnYnVpbGQnKQogICAgICAgICAgICAgYnVpbGQuYnVpbGRfbGliID0gb3MucGF0aC5qb2luKGJ1aWxkLmJ1aWxkX2Jhc2UsCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKaW5kZXggMzM3ZGQwYi4uYzZmNTJlNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQpAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXBsYXQtbmFtZSBvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzICh0cnkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2luZyAnLi9jb25maWd1cmUgLS1oZWxwJyBvbiB5b3VyIHBsYXRmb3JtKSIpCiAKLSAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVzIiAlIChzZWxmLnBsYXRfbmFtZSwgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVkLiVkIiAlIChzZWxmLnBsYXRfbmFtZSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKQogCiAgICAgICAgICMgTWFrZSBpdCBzbyBQeXRob24gMi54IGFuZCBQeXRob24gMi54IHdpdGggLS13aXRoLXB5ZGVidWcgZG9uJ3QKICAgICAgICAgIyBzaGFyZSB0aGUgc2FtZSBidWlsZCBkaXJlY3Rvcmllcy4gRG9pbmcgc28gY29uZnVzZXMgdGhlIGJ1aWxkCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVtcCcgKyBwbGF0X3NwZWNpZmllcikKICAgICAgICAgaWYgc2VsZi5idWlsZF9zY3JpcHRzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmJ1aWxkX3NjcmlwdHMgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF9iYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLScgKyBzeXMudmVyc2lvblswOjNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLSVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogCiAgICAgICAgIGlmIHNlbGYuZXhlY3V0YWJsZSBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY3V0YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CmluZGV4IGYwM2E0ZTMuLjVlNTFhZTQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQpAQCAtMzYzLDkgKzM2Myw5IEBACiAKICAgICAgICAgICAgIGV4dF9uYW1lLCBidWlsZF9pbmZvID0gZXh0CiAKLSAgICAgICAgICAgIGxvZy53YXJuKCgib2xkLXN0eWxlIChleHRfbmFtZSwgYnVpbGRfaW5mbykgdHVwbGUgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICJleHRfbW9kdWxlcyBmb3IgZXh0ZW5zaW9uICclcyciCi0gICAgICAgICAgICAgICAgICAgICAgIi0tIHBsZWFzZSBjb252ZXJ0IHRvIEV4dGVuc2lvbiBpbnN0YW5jZSIgJSBleHRfbmFtZSkpCisgICAgICAgICAgICBsb2cud2Fybigib2xkLXN0eWxlIChleHRfbmFtZSwgYnVpbGRfaW5mbykgdHVwbGUgZm91bmQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgImV4dF9tb2R1bGVzIGZvciBleHRlbnNpb24gJyVzJyIKKyAgICAgICAgICAgICAgICAgICAgICItLSBwbGVhc2UgY29udmVydCB0byBFeHRlbnNpb24gaW5zdGFuY2UiLCBleHRfbmFtZSkKIAogICAgICAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKGV4dF9uYW1lLCBzdHIpIGFuZAogICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25fbmFtZV9yZS5tYXRjaChleHRfbmFtZSkpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQppbmRleCA5MGE4MzgwLi5jY2M3MGU2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQpAQCAtNTEsNyArNTEsNyBAQAogCiAKICAgICBkZWYgY29weV9zY3JpcHRzKHNlbGYpOgotICAgICAgICAiIiJDb3B5IGVhY2ggc2NyaXB0IGxpc3RlZCBpbiAnc2VsZi5zY3JpcHRzJzsgaWYgaXQncyBtYXJrZWQgYXMgYQorICAgICAgICByIiIiQ29weSBlYWNoIHNjcmlwdCBsaXN0ZWQgaW4gJ3NlbGYuc2NyaXB0cyc7IGlmIGl0J3MgbWFya2VkIGFzIGEKICAgICAgICAgUHl0aG9uIHNjcmlwdCBpbiB0aGUgVW5peCB3YXkgKGZpcnN0IGxpbmUgbWF0Y2hlcyAnZmlyc3RfbGluZV9yZScsCiAgICAgICAgIGllLiBzdGFydHMgd2l0aCAiXCMhIiBhbmQgY29udGFpbnMgInB5dGhvbiIpLCB0aGVuIGFkanVzdCB0aGUgZmlyc3QKICAgICAgICAgbGluZSB0byByZWZlciB0byB0aGUgY3VycmVudCBQeXRob24gaW50ZXJwcmV0ZXIgYXMgd2UgY29weS4KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5CmluZGV4IDg0N2U4NTguLjRhZTE1M2QgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weQpAQCAtOSw3ICs5LDcgQEAKIHRoaXMgaGVhZGVyIGZpbGUgbGl2ZXMiLgogIiIiCiAKLWltcG9ydCBzeXMsIG9zLCByZQoraW1wb3J0IG9zLCByZQogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBDb21tYW5kCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgpAQCAtMzM3LDcgKzMzNyw3IEBACiAgICAgSWYgaGVhZCBpcyBub3QgTm9uZSwgd2lsbCBiZSBkdW1wZWQgYmVmb3JlIHRoZSBmaWxlIGNvbnRlbnQuCiAgICAgIiIiCiAgICAgaWYgaGVhZCBpcyBOb25lOgotICAgICAgICBsb2cuaW5mbygnJXMnICUgZmlsZW5hbWUpCisgICAgICAgIGxvZy5pbmZvKCclcycsIGZpbGVuYW1lKQogICAgIGVsc2U6CiAgICAgICAgIGxvZy5pbmZvKGhlYWQpCiAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CmluZGV4IDY3ZGIwMDcuLjAyNThkM2RlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQpAQCAtMTc1LDYgKzE3NSw3IEBACiAgICAgICAgIHNlbGYuY29tcGlsZSA9IE5vbmUKICAgICAgICAgc2VsZi5vcHRpbWl6ZSA9IE5vbmUKIAorICAgICAgICAjIERlcHJlY2F0ZWQKICAgICAgICAgIyBUaGVzZSB0d28gYXJlIGZvciBwdXR0aW5nIG5vbi1wYWNrYWdpemVkIGRpc3RyaWJ1dGlvbnMgaW50byB0aGVpcgogICAgICAgICAjIG93biBkaXJlY3RvcnkgYW5kIGNyZWF0aW5nIGEgLnB0aCBmaWxlIGlmIGl0IG1ha2VzIHNlbnNlLgogICAgICAgICAjICdleHRyYV9wYXRoJyBjb21lcyBmcm9tIHRoZSBzZXR1cCBmaWxlOyAnaW5zdGFsbF9wYXRoX2ZpbGUnIGNhbgpAQCAtMjkwLDggKzI5MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RfdmVyc2lvbic6IHNlbGYuZGlzdHJpYnV0aW9uLmdldF92ZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RfZnVsbG5hbWUnOiBzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfZnVsbG5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbic6IHB5X3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fc2hvcnQnOiBweV92ZXJzaW9uWzA6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fbm9kb3QnOiBweV92ZXJzaW9uWzBdICsgcHlfdmVyc2lvblsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9zaG9ydCc6ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9ub2RvdCc6ICclZCVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXNfcHJlZml4JzogcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmVmaXgnOiBwcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c19leGVjX3ByZWZpeCc6IGV4ZWNfcHJlZml4LApAQCAtMzQ0LDYgKzM0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cycsICdkYXRhJywgJ2hlYWRlcnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJiYXNlJywgJ3VzZXJzaXRlJykKIAorICAgICAgICAjIERlcHJlY2F0ZWQKICAgICAgICAgIyBXZWxsLCB3ZSdyZSBub3QgYWN0dWFsbHkgZnVsbHkgY29tcGxldGVseSBmaW5hbGl6ZWQgeWV0OiB3ZSBzdGlsbAogICAgICAgICAjIGhhdmUgdG8gZGVhbCB3aXRoICdleHRyYV9wYXRoJywgd2hpY2ggaXMgdGhlIGhhY2sgZm9yIGFsbG93aW5nCiAgICAgICAgICMgbm9uLXBhY2thZ2l6ZWQgbW9kdWxlIGRpc3RyaWJ1dGlvbnMgKGhlbGxvLCBOdW1lcmljYWwgUHl0aG9uISkgdG8KQEAgLTM4NSw3ICszODcsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBvcHRfbmFtZSA9IG9wdF9uYW1lLnRyYW5zbGF0ZShsb25nb3B0X3hsYXRlKQogICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIoc2VsZiwgb3B0X25hbWUpCi0gICAgICAgICAgICBsb2cuZGVidWcoIiAgJXM6ICVzIiAlIChvcHRfbmFtZSwgdmFsKSkKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiICAlczogJXMiLCBvcHRfbmFtZSwgdmFsKQogCiAgICAgZGVmIGZpbmFsaXplX3VuaXgoc2VsZik6CiAgICAgICAgICIiIkZpbmFsaXplcyBvcHRpb25zIGZvciBwb3NpeCBwbGF0Zm9ybXMuIiIiCkBAIC00OTAsNiArNDkyLDEwIEBACiAgICAgICAgICAgICBzZWxmLmV4dHJhX3BhdGggPSBzZWxmLmRpc3RyaWJ1dGlvbi5leHRyYV9wYXRoCiAKICAgICAgICAgaWYgc2VsZi5leHRyYV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9nLndhcm4oCisgICAgICAgICAgICAgICAgIkRpc3RyaWJ1dGlvbiBvcHRpb24gZXh0cmFfcGF0aCBpcyBkZXByZWNhdGVkLiAiCisgICAgICAgICAgICAgICAgIlNlZSBpc3N1ZTI3OTE5IGZvciBkZXRhaWxzLiIKKyAgICAgICAgICAgICkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5leHRyYV9wYXRoLCBzdHIpOgogICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFfcGF0aCA9IHNlbGYuZXh0cmFfcGF0aC5zcGxpdCgnLCcpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKaW5kZXggYzJhN2Q2NC4uMGRkYzczNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKQEAgLTIxLDEwICsyMSwxMCBAQAogCiAgICAgZGVmIGZpbmFsaXplX29wdGlvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuc2V0X3VuZGVmaW5lZF9vcHRpb25zKCdpbnN0YWxsX2xpYicsKCdpbnN0YWxsX2RpcicsJ2luc3RhbGxfZGlyJykpCi0gICAgICAgIGJhc2VuYW1lID0gIiVzLSVzLXB5JXMuZWdnLWluZm8iICUgKAorICAgICAgICBiYXNlbmFtZSA9ICIlcy0lcy1weSVkLiVkLmVnZy1pbmZvIiAlICgKICAgICAgICAgICAgIHRvX2ZpbGVuYW1lKHNhZmVfbmFtZShzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfbmFtZSgpKSksCiAgICAgICAgICAgICB0b19maWxlbmFtZShzYWZlX3ZlcnNpb24oc2VsZi5kaXN0cmlidXRpb24uZ2V0X3ZlcnNpb24oKSkpLAotICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdCisgICAgICAgICAgICAqc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgKQogICAgICAgICBzZWxmLnRhcmdldCA9IG9zLnBhdGguam9pbihzZWxmLmluc3RhbGxfZGlyLCBiYXNlbmFtZSkKICAgICAgICAgc2VsZi5vdXRwdXRzID0gW3NlbGYudGFyZ2V0XQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5CmluZGV4IDg2MzQzYzguLjBmYWM5NGUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkKQEAgLTUsNyArNSw3IEBACiAKICMgY3JlYXRlZCAyMDAyLzEwLzIxLCBSaWNoYXJkIEpvbmVzCiAKLWltcG9ydCBvcywgc3RyaW5nLCBnZXRwYXNzCitpbXBvcnQgZ2V0cGFzcwogaW1wb3J0IGlvCiBpbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdAogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICAnJycKICAgICAgICAgIyBzZW5kIHRoZSBpbmZvIHRvIHRoZSBzZXJ2ZXIgYW5kIHJlcG9ydCB0aGUgcmVzdWx0CiAgICAgICAgIChjb2RlLCByZXN1bHQpID0gc2VsZi5wb3N0X3RvX3NlcnZlcihzZWxmLmJ1aWxkX3Bvc3RfZGF0YSgndmVyaWZ5JykpCi0gICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnICUgKGNvZGUsIHJlc3VsdCkpCisgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAKICAgICBkZWYgc2VuZF9tZXRhZGF0YShzZWxmKToKICAgICAgICAgJycnIFNlbmQgdGhlIG1ldGFkYXRhIHRvIHRoZSBwYWNrYWdlIGluZGV4IHNlcnZlci4KQEAgLTIwNSw3ICsyMDUsNyBAQAogICAgICAgICAgICAgICAgIGRhdGFbJ2VtYWlsJ10gPSBpbnB1dCgnICAgRU1haWw6ICcpCiAgICAgICAgICAgICBjb2RlLCByZXN1bHQgPSBzZWxmLnBvc3RfdG9fc2VydmVyKGRhdGEpCiAgICAgICAgICAgICBpZiBjb2RlICE9IDIwMDoKLSAgICAgICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdZb3Ugd2lsbCByZWNlaXZlIGFuIGVtYWlsIHNob3J0bHkuJykKICAgICAgICAgICAgICAgICBsb2cuaW5mbygoJ0ZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIGl0IHRvICcKQEAgLTIxNiw3ICsyMTYsNyBAQAogICAgICAgICAgICAgd2hpbGUgbm90IGRhdGFbJ2VtYWlsJ106CiAgICAgICAgICAgICAgICAgZGF0YVsnZW1haWwnXSA9IGlucHV0KCdZb3VyIGVtYWlsIGFkZHJlc3M6ICcpCiAgICAgICAgICAgICBjb2RlLCByZXN1bHQgPSBzZWxmLnBvc3RfdG9fc2VydmVyKGRhdGEpCi0gICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycsIGNvZGUsIHJlc3VsdCkKIAogICAgIGRlZiBidWlsZF9wb3N0X2RhdGEoc2VsZiwgYWN0aW9uKToKICAgICAgICAgIyBmaWd1cmUgdGhlIGRhdGEgdG8gc2VuZCAtIHRoZSBtZXRhZGF0YSBwbHVzIHNvbWUgYWRkaXRpb25hbApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5CmluZGV4IDdlYTNkNWYuLjRmZDFkNDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkKQEAgLTMsNyArMyw2IEBACiBJbXBsZW1lbnRzIHRoZSBEaXN0dXRpbHMgJ3NkaXN0JyBjb21tYW5kIChjcmVhdGUgYSBzb3VyY2UgZGlzdHJpYnV0aW9uKS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCAqCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKQEAgLTkyLDkgKzkxLDYgQEAKICAgICBuZWdhdGl2ZV9vcHQgPSB7J25vLWRlZmF1bHRzJzogJ3VzZS1kZWZhdWx0cycsCiAgICAgICAgICAgICAgICAgICAgICduby1wcnVuZSc6ICdwcnVuZScgfQogCi0gICAgZGVmYXVsdF9mb3JtYXQgPSB7J3Bvc2l4JzogJ2d6dGFyJywKLSAgICAgICAgICAgICAgICAgICAgICAnbnQnOiAnemlwJyB9Ci0KICAgICBzdWJfY29tbWFuZHMgPSBbKCdjaGVjaycsIGNoZWNraW5nX21ldGFkYXRhKV0KIAogICAgIGRlZiBpbml0aWFsaXplX29wdGlvbnMoc2VsZik6CkBAIC0xMTEsNyArMTA3LDcgQEAKICAgICAgICAgc2VsZi5tYW5pZmVzdF9vbmx5ID0gMAogICAgICAgICBzZWxmLmZvcmNlX21hbmlmZXN0ID0gMAogCi0gICAgICAgIHNlbGYuZm9ybWF0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5mb3JtYXRzID0gWydnenRhciddCiAgICAgICAgIHNlbGYua2VlcF90ZW1wID0gMAogICAgICAgICBzZWxmLmRpc3RfZGlyID0gTm9uZQogCkBAIC0xMjcsMTMgKzEyMyw2IEBACiAgICAgICAgICAgICBzZWxmLnRlbXBsYXRlID0gIk1BTklGRVNULmluIgogCiAgICAgICAgIHNlbGYuZW5zdXJlX3N0cmluZ19saXN0KCdmb3JtYXRzJykKLSAgICAgICAgaWYgc2VsZi5mb3JtYXRzIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5mb3JtYXRzID0gW3NlbGYuZGVmYXVsdF9mb3JtYXRbb3MubmFtZV1dCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3Qga25vdyBob3cgdG8gY3JlYXRlIHNvdXJjZSBkaXN0cmlidXRpb25zICIKLSAgICAgICAgICAgICAgICAgICAgICAib24gcGxhdGZvcm0gJXMiICUgb3MubmFtZSkKIAogICAgICAgICBiYWRfZm9ybWF0ID0gYXJjaGl2ZV91dGlsLmNoZWNrX2FyY2hpdmVfZm9ybWF0cyhzZWxmLmZvcm1hdHMpCiAgICAgICAgIGlmIGJhZF9mb3JtYXQ6CkBAIC00MjMsNyArNDEyLDcgQEAKICAgICAgICAgICAgIGxvZy5pbmZvKG1zZykKICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoZmlsZSk6Ci0gICAgICAgICAgICAgICAgbG9nLndhcm4oIiclcycgbm90IGEgcmVndWxhciBmaWxlIC0tIHNraXBwaW5nIiAlIGZpbGUpCisgICAgICAgICAgICAgICAgbG9nLndhcm4oIiclcycgbm90IGEgcmVndWxhciBmaWxlIC0tIHNraXBwaW5nIiwgZmlsZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgZmlsZSkKICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShmaWxlLCBkZXN0LCBsaW5rPWxpbmspCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvcmUucHkgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKaW5kZXggZjA1YjM0Yi4uZDYwM2Q0YSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29yZS5weQpAQCAtMjA0LDE2ICsyMDQsMTUgQEAKICAgICBnbG9iYWwgX3NldHVwX3N0b3BfYWZ0ZXIsIF9zZXR1cF9kaXN0cmlidXRpb24KICAgICBfc2V0dXBfc3RvcF9hZnRlciA9IHN0b3BfYWZ0ZXIKIAotICAgIHNhdmVfYXJndiA9IHN5cy5hcmd2CisgICAgc2F2ZV9hcmd2ID0gc3lzLmFyZ3YuY29weSgpCiAgICAgZyA9IHsnX19maWxlX18nOiBzY3JpcHRfbmFtZX0KLSAgICBsID0ge30KICAgICB0cnk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5hcmd2WzBdID0gc2NyaXB0X25hbWUKICAgICAgICAgICAgIGlmIHNjcmlwdF9hcmdzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN5cy5hcmd2WzE6XSA9IHNjcmlwdF9hcmdzCiAgICAgICAgICAgICB3aXRoIG9wZW4oc2NyaXB0X25hbWUsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwgZywgbCkKKyAgICAgICAgICAgICAgICBleGVjKGYucmVhZCgpLCBnKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLmFyZ3YgPSBzYXZlX2FyZ3YKICAgICAgICAgICAgIF9zZXR1cF9zdG9wX2FmdGVyID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQppbmRleCBjODc5NjQ2Li4xYzM2OTkwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQpAQCAtMzY4LDcgKzM2OCw3IEBACiAgICAgICAgIHJldHVybiAoQ09ORklHX0hfVU5DRVJUQUlOLAogICAgICAgICAgICAgICAgICJjb3VsZG4ndCByZWFkICclcyc6ICVzIiAlIChmbiwgZXhjLnN0cmVycm9yKSkKIAotUkVfVkVSU0lPTiA9IHJlLmNvbXBpbGUoYicoXGQrXC5cZCsoXC5cZCspKiknKQorUkVfVkVSU0lPTiA9IHJlLmNvbXBpbGUoYnInKFxkK1wuXGQrKFwuXGQrKSopJykKIAogZGVmIF9maW5kX2V4ZV92ZXJzaW9uKGNtZCk6CiAgICAgIiIiRmluZCB0aGUgdmVyc2lvbiBvZiBhbiBleGVjdXRhYmxlIGJ5IHJ1bm5pbmcgYGNtZGAgaW4gdGhlIHNoZWxsLgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9kaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CmluZGV4IGZmYjMzZmY2Li42MmEyNDUxIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CkBAIC0xMDE4LDggKzEwMTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJtYWludGFpbmVyIiwgIm1haW50YWluZXJfZW1haWwiLCAidXJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibGljZW5zZSIsICJkZXNjcmlwdGlvbiIsICJsb25nX2Rlc2NyaXB0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMiLCAicGxhdGZvcm1zIiwgImZ1bGxuYW1lIiwgImNvbnRhY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJjb250YWN0X2VtYWlsIiwgImxpY2Vuc2UiLCAiY2xhc3NpZmllcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJkb3dubG9hZF91cmwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb250YWN0X2VtYWlsIiwgImNsYXNzaWZpZXJzIiwgImRvd25sb2FkX3VybCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQRVAgMzE0CiAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3ZpZGVzIiwgInJlcXVpcmVzIiwgIm9ic29sZXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkgYi9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weQppbmRleCA3ZWZiYjc0Li5jNTA3ZGEzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weQorKysgYi9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weQpAQCAtNCw3ICs0LDYgQEAKIG1vZHVsZXMgaW4gc2V0dXAgc2NyaXB0cy4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKIAogIyBUaGlzIGNsYXNzIGlzIHJlYWxseSBvbmx5IHVzZWQgYnkgdGhlICJidWlsZF9leHQiIGNvbW1hbmQsIHNvIGl0IG1pZ2h0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weQppbmRleCA2NTIyZTY5Li5jOTJkNWZkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkKQEAgLTMwMiwyMSArMzAyLDI2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gcGF0dGVybgogCisgICAgIyBkaXRjaCBzdGFydCBhbmQgZW5kIGNoYXJhY3RlcnMKKyAgICBzdGFydCwgXywgZW5kID0gZ2xvYl90b19yZSgnXycpLnBhcnRpdGlvbignXycpCisKICAgICBpZiBwYXR0ZXJuOgogICAgICAgICBwYXR0ZXJuX3JlID0gZ2xvYl90b19yZShwYXR0ZXJuKQorICAgICAgICBhc3NlcnQgcGF0dGVybl9yZS5zdGFydHN3aXRoKHN0YXJ0KSBhbmQgcGF0dGVybl9yZS5lbmRzd2l0aChlbmQpCiAgICAgZWxzZToKICAgICAgICAgcGF0dGVybl9yZSA9ICcnCiAKICAgICBpZiBwcmVmaXggaXMgbm90IE5vbmU6Ci0gICAgICAgICMgZGl0Y2ggZW5kIG9mIHBhdHRlcm4gY2hhcmFjdGVyCi0gICAgICAgIGVtcHR5X3BhdHRlcm4gPSBnbG9iX3RvX3JlKCcnKQotICAgICAgICBwcmVmaXhfcmUgPSBnbG9iX3RvX3JlKHByZWZpeClbOi1sZW4oZW1wdHlfcGF0dGVybildCisgICAgICAgIHByZWZpeF9yZSA9IGdsb2JfdG9fcmUocHJlZml4KQorICAgICAgICBhc3NlcnQgcHJlZml4X3JlLnN0YXJ0c3dpdGgoc3RhcnQpIGFuZCBwcmVmaXhfcmUuZW5kc3dpdGgoZW5kKQorICAgICAgICBwcmVmaXhfcmUgPSBwcmVmaXhfcmVbbGVuKHN0YXJ0KTogbGVuKHByZWZpeF9yZSkgLSBsZW4oZW5kKV0KICAgICAgICAgc2VwID0gb3Muc2VwCiAgICAgICAgIGlmIG9zLnNlcCA9PSAnXFwnOgogICAgICAgICAgICAgc2VwID0gcidcXCcKLSAgICAgICAgcGF0dGVybl9yZSA9ICJeIiArIHNlcC5qb2luKChwcmVmaXhfcmUsICIuKiIgKyBwYXR0ZXJuX3JlKSkKKyAgICAgICAgcGF0dGVybl9yZSA9IHBhdHRlcm5fcmVbbGVuKHN0YXJ0KTogbGVuKHBhdHRlcm5fcmUpIC0gbGVuKGVuZCldCisgICAgICAgIHBhdHRlcm5fcmUgPSByJyVzXEElcyVzLiolcyVzJyAlIChzdGFydCwgcHJlZml4X3JlLCBzZXAsIHBhdHRlcm5fcmUsIGVuZCkKICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vIHByZWZpeCAtLSByZXNwZWN0IGFuY2hvciBmbGFnCiAgICAgICAgIGlmIGFuY2hvcjoKLSAgICAgICAgICAgIHBhdHRlcm5fcmUgPSAiXiIgKyBwYXR0ZXJuX3JlCisgICAgICAgICAgICBwYXR0ZXJuX3JlID0gciclc1xBJXMnICUgKHN0YXJ0LCBwYXR0ZXJuX3JlW2xlbihzdGFydCk6XSkKIAogICAgIHJldHVybiByZS5jb21waWxlKHBhdHRlcm5fcmUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKaW5kZXggMGIxZmQxOS4uMjExOTEyNyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQpAQCAtNzE2LDcgKzcxNiw3IEBACiAgICAgICAgICAgICAgICAgciIiIlZDXGR7Mn1cLkNSVCgifCcpLio/KC8+fDwvYXNzZW1ibHlJZGVudGl0eT4pIiIiLAogICAgICAgICAgICAgICAgIHJlLkRPVEFMTCkKICAgICAgICAgICAgIG1hbmlmZXN0X2J1ZiA9IHJlLnN1YihwYXR0ZXJuLCAiIiwgbWFuaWZlc3RfYnVmKQotICAgICAgICAgICAgcGF0dGVybiA9ICI8ZGVwZW5kZW50QXNzZW1ibHk+XHMqPC9kZXBlbmRlbnRBc3NlbWJseT4iCisgICAgICAgICAgICBwYXR0ZXJuID0gciI8ZGVwZW5kZW50QXNzZW1ibHk+XHMqPC9kZXBlbmRlbnRBc3NlbWJseT4iCiAgICAgICAgICAgICBtYW5pZmVzdF9idWYgPSByZS5zdWIocGF0dGVybiwgIiIsIG1hbmlmZXN0X2J1ZikKICAgICAgICAgICAgICMgTm93IHNlZSBpZiBhbnkgb3RoZXIgYXNzZW1ibGllcyBhcmUgcmVmZXJlbmNlZCAtIGlmIG5vdCwgd2UKICAgICAgICAgICAgICMgZG9uJ3Qgd2FudCBhIG1hbmlmZXN0IGVtYmVkZGVkLgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQppbmRleCA1NzM3MjRkLi44YmYxYTcwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQpAQCAtNzAsNyArNzAsNyBAQAogICAgIGxlYXZpbmcgb2ZmIHRoZSBwYXRjaGxldmVsLiAgU2FtcGxlIHJldHVybiB2YWx1ZXMgY291bGQgYmUgJzEuNScKICAgICBvciAnMi4yJy4KICAgICAiIiIKLSAgICByZXR1cm4gc3lzLnZlcnNpb25bOjNdCisgICAgcmV0dXJuICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogCiAKIGRlZiBnZXRfcHl0aG9uX2luYyhwbGF0X3NwZWNpZmljPTAsIHByZWZpeD1Ob25lKToKQEAgLTI0Miw2ICsyNDIsOCBAQAogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBwcm9qZWN0X2Jhc2UsICJNYWtlZmlsZSIpCiAgICAgbGliX2RpciA9IGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTEpCiAgICAgY29uZmlnX2ZpbGUgPSAnY29uZmlnLXt9e30nLmZvcm1hdChnZXRfcHl0aG9uX3ZlcnNpb24oKSwgYnVpbGRfZmxhZ3MpCisgICAgaWYgaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJyk6CisgICAgICAgIGNvbmZpZ19maWxlICs9ICctJXMnICUgc3lzLmltcGxlbWVudGF0aW9uLl9tdWx0aWFyY2gKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGxpYl9kaXIsIGNvbmZpZ19maWxlLCAnTWFrZWZpbGUnKQogCiAKQEAgLTI3Niw3ICsyNzgsNyBAQAogCiAjIFJlZ2V4ZXMgbmVlZGVkIGZvciBwYXJzaW5nIE1ha2VmaWxlIChhbmQgc2ltaWxhciBzeW50YXhlcywKICMgbGlrZSBvbGQtc3R5bGUgU2V0dXAgZmlsZXMpLgotX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZSgiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCitfdmFyaWFibGVfcnggPSByZS5jb21waWxlKHIiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCiBfZmluZHZhcjFfcnggPSByZS5jb21waWxlKHIiXCRcKChbQS1aYS16XVtBLVphLXowLTlfXSopXCkiKQogX2ZpbmR2YXIyX3J4ID0gcmUuY29tcGlsZShyIlwkeyhbQS1aYS16XVtBLVphLXowLTlfXSopfSIpCiAKQEAgLTQxNSwzOCArNDE3LDE4IEBACiAKIGRlZiBfaW5pdF9wb3NpeCgpOgogICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKLSAgICBnID0ge30KLSAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBNYWtlZmlsZToKLSAgICB0cnk6Ci0gICAgICAgIGZpbGVuYW1lID0gZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKLSAgICAgICAgcGFyc2VfbWFrZWZpbGUoZmlsZW5hbWUsIGcpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgotICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQotICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6Ci0gICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCi0KLSAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCi0KLSAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBweWNvbmZpZy5oOgotICAgIHRyeToKLSAgICAgICAgZmlsZW5hbWUgPSBnZXRfY29uZmlnX2hfZmlsZW5hbWUoKQotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZpbGU6Ci0gICAgICAgICAgICBwYXJzZV9jb25maWdfaChmaWxlLCBnKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKLSAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKLSAgICAgICAgaWYgaGFzYXR0cihtc2csICJzdHJlcnJvciIpOgotICAgICAgICAgICAgbXlfbXNnID0gbXlfbXNnICsgIiAoJXMpIiAlIG1zZy5zdHJlcnJvcgotCi0gICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IobXlfbXNnKQotCi0gICAgIyBPbiBBSVgsIHRoZXJlIGFyZSB3cm9uZyBwYXRocyB0byB0aGUgbGlua2VyIHNjcmlwdHMgaW4gdGhlIE1ha2VmaWxlCi0gICAgIyAtLSB0aGVzZSBwYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIFB5dGhvbiBzb3VyY2UsIGJ1dCB3aGVuIGluc3RhbGxlZAotICAgICMgdGhlIHNjcmlwdHMgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LgotICAgIGlmIHB5dGhvbl9idWlsZDoKLSAgICAgICAgZ1snTERTSEFSRUQnXSA9IGdbJ0JMRFNIQVJFRCddCi0KKyAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgdGhlIHN5c2NvbmZpZyBtb2R1bGUKKyAgICBuYW1lID0gb3MuZW52aXJvbi5nZXQoJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FJywKKyAgICAgICAgJ19zeXNjb25maWdkYXRhX3thYml9X3twbGF0Zm9ybX1fe211bHRpYXJjaH0nLmZvcm1hdCgKKyAgICAgICAgYWJpPXN5cy5hYmlmbGFncywKKyAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAorICAgICAgICBtdWx0aWFyY2g9Z2V0YXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJywgJycpLAorICAgICkpCisgICAgX3RlbXAgPSBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsnYnVpbGRfdGltZV92YXJzJ10sIDApCisgICAgYnVpbGRfdGltZV92YXJzID0gX3RlbXAuYnVpbGRfdGltZV92YXJzCiAgICAgZ2xvYmFsIF9jb25maWdfdmFycwotICAgIF9jb25maWdfdmFycyA9IGcKKyAgICBfY29uZmlnX3ZhcnMgPSB7fQorICAgIF9jb25maWdfdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQogCiAKIGRlZiBfaW5pdF9udCgpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKaW5kZXggMjVjMTRhYi4uYzFhMmEwNCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CkBAIC0zLDE2ICszLDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBvcwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc2h1dGlsCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IERpc3RyaWJ1dGlvbgogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5iZGlzdF9ycG0gaW1wb3J0IGJkaXN0X3JwbQogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKLWZyb20gZGlzdHV0aWxzIGltcG9ydCBzcGF3bgotZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IKIAogU0VUVVBfUFkgPSAiIiJcCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5CmluZGV4IDMzOTFmMzYuLmIwMjBhNWIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgIyBidWlsZF9wbGF0bGliIGlzICdidWlsZC9saWIucGxhdGZvcm0teC54Wy1weWRlYnVnXScKICAgICAgICAgIyBleGFtcGxlczoKICAgICAgICAgIyAgIGJ1aWxkL2xpYi5tYWNvc3gtMTAuMy1pMzg2LTIuNwotICAgICAgICBwbGF0X3NwZWMgPSAnLiVzLSVzJyAlIChjbWQucGxhdF9uYW1lLCBzeXMudmVyc2lvblswOjNdKQorICAgICAgICBwbGF0X3NwZWMgPSAnLiVzLSVkLiVkJyAlIChjbWQucGxhdF9uYW1lLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtZC5idWlsZF9wbGF0bGliLmVuZHN3aXRoKCctcHlkZWJ1ZycpKQogICAgICAgICAgICAgcGxhdF9zcGVjICs9ICctcHlkZWJ1ZycKQEAgLTQyLDcgKzQyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuYnVpbGRfdGVtcCwgd2FudGVkKQogCiAgICAgICAgICMgYnVpbGRfc2NyaXB0cyBpcyBidWlsZC9zY3JpcHRzLXgueAotICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2Jhc2UsICdzY3JpcHRzLScgKyAgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKGNtZC5idWlsZF9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdHMtJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmJ1aWxkX3NjcmlwdHMsIHdhbnRlZCkKIAogICAgICAgICAjIGV4ZWN1dGFibGUgaXMgb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY3V0YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CmluZGV4IDRlMzk3ZWEuLjQ3YjU4NmMgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQpAQCAtMTY2LDcgKzE2Niw2IEBACiAgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKIAotICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCiAgICAgICAgIHB5X2luY2x1ZGUgPSBzeXNjb25maWcuZ2V0X3B5dGhvbl9pbmMoKQogICAgICAgICBzZWxmLmFzc2VydEluKHB5X2luY2x1ZGUsIGNtZC5pbmNsdWRlX2RpcnMpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQppbmRleCAxODI4M2RjLi4wNzEyZTkyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CkBAIC0xNjgsNyArMTY4LDggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gb2xkX2RvbnRfd3JpdGVfYnl0ZWNvZGUKIAotICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsIHNlbGYubG9nc1swXVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nc1swXVsxXSAlIHNlbGYubG9nc1swXVsyXSkKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5CmluZGV4IGI2NGYzMDAuLmM2MDVhZmQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuY2xlYW4uIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGdldHBhc3MKIAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5jbGVhbiBpbXBvcnQgY2xlYW4KIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weQppbmRleCBhMzg0NDk3Li43N2VmNzg4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnB5cGlyYy5weXBpcmMuIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCiAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IFB5UElSQ0NvbW1hbmQKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IERpc3RyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvcmUucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weQppbmRleCA2NTQyMjdjLi4yN2NlNzMyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weQpAQCAtMjksNiArMjksMjEgQEAKIHNldHVwKCkKICIiIgogCitzZXR1cF9kb2VzX25vdGhpbmcgPSAiIiJcCitmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cAorc2V0dXAoKQorIiIiCisKKworc2V0dXBfZGVmaW5lc19zdWJjbGFzcyA9ICIiIlwKK2Zyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwCitmcm9tIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGwgaW1wb3J0IGluc3RhbGwgYXMgX2luc3RhbGwKKworY2xhc3MgaW5zdGFsbChfaW5zdGFsbCk6CisgICAgc3ViX2NvbW1hbmRzID0gX2luc3RhbGwuc3ViX2NvbW1hbmRzICsgWydjbWQnXQorCitzZXR1cChjbWRjbGFzcz17J2luc3RhbGwnOiBpbnN0YWxsfSkKKyIiIgogCiBjbGFzcyBDb3JlVGVzdENhc2Uoc3VwcG9ydC5FbnZpcm9uR3VhcmQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjcsNiArODIsMjEgQEAKICAgICAgICAgZGlzdHV0aWxzLmNvcmUucnVuX3NldHVwKAogICAgICAgICAgICAgc2VsZi53cml0ZV9zZXR1cChzZXR1cF91c2luZ19fX2ZpbGVfXykpCiAKKyAgICBkZWYgdGVzdF9ydW5fc2V0dXBfcHJlc2VydmVzX3N5c19hcmd2KHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSBydW5fc2V0dXAgZG9lcyBub3QgY2xvYmJlciBzeXMuYXJndgorICAgICAgICBhcmd2X2NvcHkgPSBzeXMuYXJndi5jb3B5KCkKKyAgICAgICAgZGlzdHV0aWxzLmNvcmUucnVuX3NldHVwKAorICAgICAgICAgICAgc2VsZi53cml0ZV9zZXR1cChzZXR1cF9kb2VzX25vdGhpbmcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5hcmd2LCBhcmd2X2NvcHkpCisKKyAgICBkZWYgdGVzdF9ydW5fc2V0dXBfZGVmaW5lc19zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhlIHNjcmlwdCBjYW4gdXNlIF9fZmlsZV9fOyBpZiB0aGF0J3MgbWlzc2luZywgdGhlIHRlc3QKKyAgICAgICAgIyBzZXR1cC5weSBzY3JpcHQgd2lsbCByYWlzZSBOYW1lRXJyb3IuCisgICAgICAgIGRpc3QgPSBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCisgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX2RlZmluZXNfc3ViY2xhc3MpKQorICAgICAgICBpbnN0YWxsID0gZGlzdC5nZXRfY29tbWFuZF9vYmooJ2luc3RhbGwnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjbWQnLCBpbnN0YWxsLnN1Yl9jb21tYW5kcykKKwogICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF91c2VzX2N1cnJlbnRfZGlyKHNlbGYpOgogICAgICAgICAjIFRoaXMgdGVzdHMgdGhhdCB0aGUgc2V0dXAgc2NyaXB0IGlzIHJ1biB3aXRoIHRoZSBjdXJyZW50IGRpcmVjdG9yeQogICAgICAgICAjIGFzIGl0cyBvd24gY3VycmVudCBkaXJlY3Rvcnk7IHRoaXMgd2FzIHRlbXBvcmFyaWx5IGJyb2tlbiBieSBhCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weQppbmRleCA4NTY5MjE2Li45ZGM4NjlkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkKQEAgLTMsMTEgKzMsMTAgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwotaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGN5Z3dpbmNjb21waWxlcgotZnJvbSBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGltcG9ydCAoQ3lnd2luQ0NvbXBpbGVyLCBjaGVja19jb25maWdfaCwKK2Zyb20gZGlzdHV0aWxzLmN5Z3dpbmNjb21waWxlciBpbXBvcnQgKGNoZWNrX2NvbmZpZ19oLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0hfT0ssIENPTkZJR19IX05PVE9LLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0hfVU5DRVJUQUlOLCBnZXRfdmVyc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfbXN2Y3IpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkKaW5kZXggM2UxYzM2Ni4uYzZmYWUzOSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuZGVwX3V0aWwuIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotaW1wb3J0IHRpbWUKIAogZnJvbSBkaXN0dXRpbHMuZGVwX3V0aWwgaW1wb3J0IG5ld2VyLCBuZXdlcl9wYWlyd2lzZSwgbmV3ZXJfZ3JvdXAKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRmlsZUVycm9yCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weQppbmRleCBhNmQwNGYwLi4wMzA0MGFmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkKQEAgLTEsNyArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmZpbGVfdXRpbC4iIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgZXJybm8KIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5CmluZGV4IDM5MWFmM2MuLmM3MTM0MmQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkKQEAgLTUxLDE0ICs1MSwxNCBAQAogCiAgICAgICAgIGZvciBnbG9iLCByZWdleCBpbiAoCiAgICAgICAgICAgICAjIHNpbXBsZSBjYXNlcwotICAgICAgICAgICAgKCdmb28qJywgcidmb29bXiUoc2VwKXNdKlxaKD9tcyknKSwKLSAgICAgICAgICAgICgnZm9vPycsIHInZm9vW14lKHNlcClzXVxaKD9tcyknKSwKLSAgICAgICAgICAgICgnZm9vPz8nLCByJ2Zvb1teJShzZXApc11bXiUoc2VwKXNdXFooP21zKScpLAorICAgICAgICAgICAgKCdmb28qJywgcicoP3M6Zm9vW14lKHNlcClzXSopXFonKSwKKyAgICAgICAgICAgICgnZm9vPycsIHInKD9zOmZvb1teJShzZXApc10pXFonKSwKKyAgICAgICAgICAgICgnZm9vPz8nLCByJyg/czpmb29bXiUoc2VwKXNdW14lKHNlcClzXSlcWicpLAogICAgICAgICAgICAgIyBzcGVjaWFsIGNhc2VzCi0gICAgICAgICAgICAocidmb29cXConLCByJ2Zvb1xcXFxbXiUoc2VwKXNdKlxaKD9tcyknKSwKLSAgICAgICAgICAgIChyJ2Zvb1xcXConLCByJ2Zvb1xcXFxcXFteJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/Pz8/Jywgcidmb29bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc11bXiUoc2VwKXNdXFooP21zKScpLAotICAgICAgICAgICAgKHInZm9vXFw/PycsIHInZm9vXFxcXFteJShzZXApc11bXiUoc2VwKXNdXFooP21zKScpKToKKyAgICAgICAgICAgIChyJ2Zvb1xcKicsIHInKD9zOmZvb1xcXFxbXiUoc2VwKXNdKilcWicpLAorICAgICAgICAgICAgKHInZm9vXFxcKicsIHInKD9zOmZvb1xcXFxcXFteJShzZXApc10qKVxaJyksCisgICAgICAgICAgICAoJ2Zvbz8/Pz8nLCByJyg/czpmb29bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc11bXiUoc2VwKXNdKVxaJyksCisgICAgICAgICAgICAocidmb29cXD8/JywgcicoP3M6Zm9vXFxcXFteJShzZXApc11bXiUoc2VwKXNdKVxaJykpOgogICAgICAgICAgICAgcmVnZXggPSByZWdleCAlIHsnc2VwJzogc2VwfQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iX3RvX3JlKGdsb2IpLCByZWdleCkKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkKaW5kZXggNGQ4YzAwYS4uMzJhYjI5NiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGxfZGF0YS4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgZ2V0cGFzcwogCiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGxfZGF0YSBpbXBvcnQgaW5zdGFsbF9kYXRhCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkKaW5kZXggZDk1MzE1Ny4uMjIxN2IzMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGxfaGVhZGVycy4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgZ2V0cGFzcwogCiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGxfaGVhZGVycyBpbXBvcnQgaW5zdGFsbF9oZWFkZXJzCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CmluZGV4IDUzNzhhYTguLmZkYTYzMTUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKQEAgLTEwNCw3ICsxMDQsOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBvbGRfZG9udF93cml0ZV9ieXRlY29kZQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywgc2VsZi5sb2dzWzBdWzFdKQorICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dzWzBdWzFdICUgc2VsZi5sb2dzWzBdWzJdKQogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkKaW5kZXggNmM3ZWIyMC4uNWVkYzI0YSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weQpAQCAtMSwxMSArMSwxMSBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5zcGF3bi4iIiIKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cwogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dCwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bml4X3NoZWxsCiAKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBfbnRfcXVvdGVfYXJncwotZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduLCBmaW5kX2V4ZWN1dGFibGUKK2Zyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CiAKQEAgLTMwLDkgKzMwLDkgQEAKIAogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyBleGVjdXRhYmxlCiAgICAgICAgICMgdGhyb3VnaCB0aGUgc2hlbGwgdGhhdCByZXR1cm5zIDEKLSAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKICAgICAgICAgICAgIGV4ZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmb28uc2gnKQotICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhL2Jpbi9zaFxuZXhpdCAxJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjISVzXG5leGl0IDEnICUgdW5peF9zaGVsbCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4ZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmb28uYmF0JykKICAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICdleGl0IDEnKQpAQCAtNDEsOSArNDEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXN0dXRpbHNFeGVjRXJyb3IsIHNwYXduLCBbZXhlXSkKIAogICAgICAgICAjIG5vdyBzb21ldGhpbmcgdGhhdCB3b3JrcwotICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5zaCcpCi0gICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyEvYmluL3NoXG5leGl0IDAnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhJXNcbmV4aXQgMCcgJSB1bml4X3NoZWxsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5iYXQnKQogICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJ2V4aXQgMCcpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdW5peGNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5CmluZGV4IGUxNzFlZTkuLmVmYmEyN2UgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5CkBAIC0xLDUgKzEsNCBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy51bml4Y2NvbXBpbGVyLiIiIgotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBFbnZpcm9ubWVudFZhckd1YXJkLCBydW5fdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGV4dF9maWxlLnB5IGIvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkKaW5kZXggNDc4MzM2Zi4uOTNhYmFkMyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkKQEAgLTQsNyArNCw3IEBACiB0aGF0IChvcHRpb25hbGx5KSB0YWtlcyBjYXJlIG9mIHN0cmlwcGluZyBjb21tZW50cywgaWdub3JpbmcgYmxhbmsKIGxpbmVzLCBhbmQgam9pbmluZyBsaW5lcyB3aXRoIGJhY2tzbGFzaGVzLiIiIgogCi1pbXBvcnQgc3lzLCBvcywgaW8KK2ltcG9ydCBzeXMsIGlvCiAKIAogY2xhc3MgVGV4dEZpbGU6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKaW5kZXggZTQyMzMyNS4uZmRjZjZmYSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQpAQCAtNyw4ICs3LDggQEAKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgogZnJvbSBkaXN0dXRpbHMuZGVwX3V0aWwgaW1wb3J0IG5ld2VyCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24KQEAgLTM1MCw2ICszNTAsMTEgQEAKICAgICBnZW5lcmF0ZWQgaW4gaW5kaXJlY3QgbW9kZTsgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLCBsZWF2ZQogICAgIGl0IHNldCB0byBOb25lLgogICAgICIiIgorCisgICAgIyBMYXRlIGltcG9ydCB0byBmaXggYSBib290c3RyYXAgaXNzdWU6IF9wb3NpeHN1YnByb2Nlc3MgaXMgYnVpbHQgYnkKKyAgICAjIHNldHVwLnB5LCBidXQgc2V0dXAucHkgdXNlcyBkaXN0dXRpbHMuCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKwogICAgICMgbm90aGluZyBpcyBkb25lIGlmIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGlzIFRydWUKICAgICBpZiBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKICAgICAgICAgcmFpc2UgRGlzdHV0aWxzQnl0ZUNvbXBpbGVFcnJvcignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQuJykKQEAgLTQxMiwxMSArNDE3LDkgQEAKIAogICAgICAgICAgICAgc2NyaXB0LmNsb3NlKCkKIAotICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsIHNjcmlwdF9uYW1lXQotICAgICAgICBpZiBvcHRpbWl6ZSA9PSAxOgotICAgICAgICAgICAgY21kLmluc2VydCgxLCAiLU8iKQotICAgICAgICBlbGlmIG9wdGltaXplID09IDI6Ci0gICAgICAgICAgICBjbWQuaW5zZXJ0KDEsICItT08iKQorICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGVdCisgICAgICAgIGNtZC5leHRlbmQoc3VicHJvY2Vzcy5fb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkpCisgICAgICAgIGNtZC5hcHBlbmQoc2NyaXB0X25hbWUpCiAgICAgICAgIHNwYXduKGNtZCwgZHJ5X3J1bj1kcnlfcnVuKQogICAgICAgICBleGVjdXRlKG9zLnJlbW92ZSwgKHNjcmlwdF9uYW1lLCksICJyZW1vdmluZyAlcyIgJSBzY3JpcHRfbmFtZSwKICAgICAgICAgICAgICAgICBkcnlfcnVuPWRyeV9ydW4pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkgYi9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkKaW5kZXggYjBkZDlmNC4uMDYyYzk4ZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weQpAQCAtMTU0LDcgKzE1NCw3IEBACiAgICAgZ2xvYmFsIF9wcm92aXNpb25fcngKICAgICBpZiBfcHJvdmlzaW9uX3J4IGlzIE5vbmU6CiAgICAgICAgIF9wcm92aXNpb25fcnggPSByZS5jb21waWxlKAotICAgICAgICAgICAgIihbYS16QS1aX11cdyooPzpcLlthLXpBLVpfXVx3KikqKSg/OlxzKlwoXHMqKFteKVxzXSspXHMqXCkpPyQiLAorICAgICAgICAgICAgciIoW2EtekEtWl9dXHcqKD86XC5bYS16QS1aX11cdyopKikoPzpccypcKFxzKihbXilcc10rKVxzKlwpKT8kIiwKICAgICAgICAgICAgIHJlLkFTQ0lJKQogICAgIHZhbHVlID0gdmFsdWUuc3RyaXAoKQogICAgIG0gPSBfcHJvdmlzaW9uX3J4Lm1hdGNoKHZhbHVlKQpkaWZmIC0tZ2l0IGEvTGliL2RvY3Rlc3QucHkgYi9MaWIvZG9jdGVzdC5weQppbmRleCAzOGZkZDgwLi4wYjc4NTQ0IDEwMDY0NAotLS0gYS9MaWIvZG9jdGVzdC5weQorKysgYi9MaWIvZG9jdGVzdC5weQpAQCAtMzgxLDEyICszODEsMTUgQEAKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogCiAjIFtYWF0gTm9ybWFsaXplIHdpdGggcmVzcGVjdCB0byBvcy5wYXRoLnBhcmRpcj8KLWRlZiBfbW9kdWxlX3JlbGF0aXZlX3BhdGgobW9kdWxlLCBwYXRoKToKK2RlZiBfbW9kdWxlX3JlbGF0aXZlX3BhdGgobW9kdWxlLCB0ZXN0X3BhdGgpOgogICAgIGlmIG5vdCBpbnNwZWN0LmlzbW9kdWxlKG1vZHVsZSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRXhwZWN0ZWQgYSBtb2R1bGU6ICVyJyAlIG1vZHVsZSkKLSAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoJy8nKToKKyAgICBpZiB0ZXN0X3BhdGguc3RhcnRzd2l0aCgnLycpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNb2R1bGUtcmVsYXRpdmUgZmlsZXMgbWF5IG5vdCBoYXZlIGFic29sdXRlIHBhdGhzJykKIAorICAgICMgTm9ybWFsaXplIHRoZSBwYXRoLiBPbiBXaW5kb3dzLCByZXBsYWNlICIvIiB3aXRoICJcIi4KKyAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oKih0ZXN0X3BhdGguc3BsaXQoJy8nKSkpCisKICAgICAjIEZpbmQgdGhlIGJhc2UgZGlyZWN0b3J5IGZvciB0aGUgcGF0aC4KICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6CiAgICAgICAgICMgQSBub3JtYWwgbW9kdWxlL3BhY2thZ2UKQEAgLTM5OCwxMyArNDAxLDE5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBiYXNlZGlyID0gb3MuY3VyZGlyCiAgICAgZWxzZToKKyAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgorICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBtb2R1bGUuX19wYXRoX186CisgICAgICAgICAgICAgICAgZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCB0ZXN0X3BhdGgpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZnVsbHBhdGgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVsbHBhdGgKKwogICAgICAgICAjIEEgbW9kdWxlIHcvbyBfX2ZpbGVfXyAodGhpcyBpbmNsdWRlcyBidWlsdGlucykKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgcmVzb2x2ZSBwYXRocyByZWxhdGl2ZSB0byB0aGUgbW9kdWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiJXIgKGl0IGhhcyBubyBfX2ZpbGVfXykiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJSBtb2R1bGUuX19uYW1lX18pCiAKLSAgICAjIENvbWJpbmUgdGhlIGJhc2UgZGlyZWN0b3J5IGFuZCB0aGUgcGF0aC4KLSAgICByZXR1cm4gb3MucGF0aC5qb2luKGJhc2VkaXIsICoocGF0aC5zcGxpdCgnLycpKSkKKyAgICAjIENvbWJpbmUgdGhlIGJhc2UgZGlyZWN0b3J5IGFuZCB0aGUgdGVzdCBwYXRoLgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYmFzZWRpciwgdGVzdF9wYXRoKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyAyLiBFeGFtcGxlICYgRG9jVGVzdApAQCAtNzU2LDcgKzc2NSw3IEBACiAKICAgICAjIFRoaXMgcmVndWxhciBleHByZXNzaW9uIGZpbmRzIHRoZSBpbmRlbnRhdGlvbiBvZiBldmVyeSBub24tYmxhbmsKICAgICAjIGxpbmUgaW4gYSBzdHJpbmcuCi0gICAgX0lOREVOVF9SRSA9IHJlLmNvbXBpbGUoJ14oWyBdKikoPz1cUyknLCByZS5NVUxUSUxJTkUpCisgICAgX0lOREVOVF9SRSA9IHJlLmNvbXBpbGUocideKFsgXSopKD89XFMpJywgcmUuTVVMVElMSU5FKQogCiAgICAgZGVmIF9taW5faW5kZW50KHNlbGYsIHMpOgogICAgICAgICAiUmV0dXJuIHRoZSBtaW5pbXVtIGluZGVudGF0aW9uIG9mIGFueSBub24tYmxhbmsgbGluZSBpbiBgc2AiCkBAIC0xMDk3LDcgKzExMDYsNyBAQAogICAgICAgICBpZiBsaW5lbm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBzb3VyY2VfbGluZXMgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gbGluZW5vKzEKLSAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyhefC4qOilccypcdyooInxcJyknKQorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJyhefC4qOilccypcdyooInxcJyknKQogICAgICAgICAgICAgZm9yIGxpbmVubyBpbiByYW5nZShsaW5lbm8sIGxlbihzb3VyY2VfbGluZXMpKToKICAgICAgICAgICAgICAgICBpZiBwYXQubWF0Y2goc291cmNlX2xpbmVzW2xpbmVub10pOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZW5vCkBAIC0xNTk5LDExICsxNjA4LDExIEBACiAgICAgICAgICMgYmxhbmsgbGluZSwgdW5sZXNzIHRoZSBET05UX0FDQ0VQVF9CTEFOS0xJTkUgZmxhZyBpcyB1c2VkLgogICAgICAgICBpZiBub3QgKG9wdGlvbmZsYWdzICYgRE9OVF9BQ0NFUFRfQkxBTktMSU5FKToKICAgICAgICAgICAgICMgUmVwbGFjZSA8QkxBTktMSU5FPiBpbiB3YW50IHdpdGggYSBibGFuayBsaW5lLgotICAgICAgICAgICAgd2FudCA9IHJlLnN1YignKD9tKV4lc1xzKj8kJyAlIHJlLmVzY2FwZShCTEFOS0xJTkVfTUFSS0VSKSwKKyAgICAgICAgICAgIHdhbnQgPSByZS5zdWIocicoP20pXiVzXHMqPyQnICUgcmUuZXNjYXBlKEJMQU5LTElORV9NQVJLRVIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgd2FudCkKICAgICAgICAgICAgICMgSWYgYSBsaW5lIGluIGdvdCBjb250YWlucyBvbmx5IHNwYWNlcywgdGhlbiByZW1vdmUgdGhlCiAgICAgICAgICAgICAjIHNwYWNlcy4KLSAgICAgICAgICAgIGdvdCA9IHJlLnN1YignKD9tKV5ccyo/JCcsICcnLCBnb3QpCisgICAgICAgICAgICBnb3QgPSByZS5zdWIocicoP20pXlxzKj8kJywgJycsIGdvdCkKICAgICAgICAgICAgIGlmIGdvdCA9PSB3YW50OgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weSBiL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQppbmRleCA1ZGY5NTExLi41N2QwMWZiIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CkBAIC02NTIsOCArNjUyLDggQEAKICAgICAgICAgaWYgdmFsdWUudG9rZW5fdHlwZSA9PSAnY29tbWVudCc6CiAgICAgICAgICAgICByZXR1cm4gc3RyKHZhbHVlKQogICAgICAgICByZXR1cm4gc3RyKHZhbHVlKS5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCcsICdcKCcpLnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyknLCAnXCknKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgcidcKCcpLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyknLCByJ1wpJykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjb250ZW50KHNlbGYpOgpAQCAtMTM1NiwxNSArMTM1NiwxNSBAQAogCiBfd3NwX3NwbGl0dGVyID0gcmUuY29tcGlsZShyJyhbe31dKyknLmZvcm1hdCgnJy5qb2luKFdTUCkpKS5zcGxpdAogX25vbl9hdG9tX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oQVRPTV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgJycuam9pbihBVE9NX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiBfbm9uX3ByaW50YWJsZV9maW5kZXIgPSByZS5jb21waWxlKHIiW1x4MDAtXHgyMFx4N0ZdIikuZmluZGFsbAogX25vbl90b2tlbl9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKLSAgICAnJy5qb2luKFRPS0VOX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKFRPS0VOX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiBfbm9uX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKLSAgICAnJy5qb2luKEFUVFJJQlVURV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgJycuam9pbihBVFRSSUJVVEVfRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAogICAgICcnLmpvaW4oRVhURU5ERURfQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiAKIGRlZiBfdmFsaWRhdGVfeHRleHQoeHRleHQpOgogICAgICIiIklmIGlucHV0IHRva2VuIGNvbnRhaW5zIEFTQ0lJIG5vbi1wcmludGFibGVzLCByZWdpc3RlciBhIGRlZmVjdC4iIiIKQEAgLTE1MTcsNyArMTUxNyw3IEBACiAgICAgcmV0dXJuIHVuc3RydWN0dXJlZAogCiBkZWYgZ2V0X3FwX2N0ZXh0KHZhbHVlKToKLSAgICAiIiJjdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgKCApPgorICAgIHIiIiJjdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgKCApPgogCiAgICAgVGhpcyBpcyBub3QgdGhlIFJGQyBjdGV4dCwgc2luY2Ugd2UgYXJlIGhhbmRsaW5nIG5lc3RlZCBjb21tZW50cyBpbiBjb21tZW50CiAgICAgYW5kIHVucXVvdGluZyBxdW90ZWQtcGFpcnMgaGVyZS4gIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgJygpJwpAQCAtMTg3OCw3ICsxODc4LDcgQEAKICAgICByZXR1cm4gb2JzX2xvY2FsX3BhcnQsIHZhbHVlCiAKIGRlZiBnZXRfZHRleHQodmFsdWUpOgotICAgICIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAorICAgIHIiIiIgZHRleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcIFsgXT4gLyBvYnMtZHRleHQKICAgICAgICAgb2JzLWR0ZXh0ID0gb2JzLU5PLVdTLUNUTCAvIHF1b3RlZC1wYWlyCiAKICAgICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlIGV4Y2x1ZGVkIGNoYXJhY3RlcnMsIGJ1dCBpZiB3ZSBmaW5kIGFueQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5IGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CmluZGV4IGMwZDk4YTQuLmRmNDY0OTYgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQorKysgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKQEAgLTE1NCw2ICsxNTQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbS4gVGhpcyBpcyB1c2VkIHdoZW4gdGhlIG1lc3NhZ2UgaXMgYmVpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgYnkgYSBnZW5lcmF0b3IuIERlZmF1bHQ6IFRydWUuCiAKKyAgICBtZXNzYWdlX2ZhY3RvcnkgICAgIC0tIHRoZSBjbGFzcyB0byB1c2UgdG8gY3JlYXRlIG5ldyBtZXNzYWdlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgdmFsdWUgaXMgTm9uZSwgdGhlIGRlZmF1bHQgaXMgTWVzc2FnZS4KKwogICAgICIiIgogCiAgICAgcmFpc2Vfb25fZGVmZWN0ID0gRmFsc2UKQEAgLTE2MSw2ICsxNjQsNyBAQAogICAgIGN0ZV90eXBlID0gJzhiaXQnCiAgICAgbWF4X2xpbmVfbGVuZ3RoID0gNzgKICAgICBtYW5nbGVfZnJvbV8gPSBGYWxzZQorICAgIG1lc3NhZ2VfZmFjdG9yeSA9IE5vbmUKIAogICAgIGRlZiBoYW5kbGVfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKICAgICAgICAgIiIiQmFzZWQgb24gcG9saWN5LCBlaXRoZXIgcmFpc2UgZGVmZWN0IG9yIGNhbGwgcmVnaXN0ZXJfZGVmZWN0LgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5IGIvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5CmluZGV4IGI5OGNlMjcuLmI5MDRkZWQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weQorKysgYi9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkKQEAgLTE0Miw3ICsxNDIsNyBAQAogZGVmIF9lbmNvZGVfdGV4dChzdHJpbmcsIGNoYXJzZXQsIGN0ZSwgcG9saWN5KToKICAgICBsaW5lcyA9IHN0cmluZy5lbmNvZGUoY2hhcnNldCkuc3BsaXRsaW5lcygpCiAgICAgbGluZXNlcCA9IHBvbGljeS5saW5lc2VwLmVuY29kZSgnYXNjaWknKQotICAgIGRlZiBlbWJlZGVkX2JvZHkobGluZXMpOiByZXR1cm4gbGluZXNlcC5qb2luKGxpbmVzKSArIGxpbmVzZXAKKyAgICBkZWYgZW1iZWRkZWRfYm9keShsaW5lcyk6IHJldHVybiBsaW5lc2VwLmpvaW4obGluZXMpICsgbGluZXNlcAogICAgIGRlZiBub3JtYWxfYm9keShsaW5lcyk6IHJldHVybiBiJ1xuJy5qb2luKGxpbmVzKSArIGInXG4nCiAgICAgaWYgY3RlPT1Ob25lOgogICAgICAgICAjIFVzZSBoZXVyaXN0aWNzIHRvIGRlY2lkZSBvbiB0aGUgImJlc3QiIGVuY29kaW5nLgpAQCAtMTUzLDcgKzE1Myw3IEBACiAgICAgICAgIGlmIChwb2xpY3kuY3RlX3R5cGUgPT0gJzhiaXQnIGFuZAogICAgICAgICAgICAgICAgIG1heChsZW4oeCkgZm9yIHggaW4gbGluZXMpIDw9IHBvbGljeS5tYXhfbGluZV9sZW5ndGgpOgogICAgICAgICAgICAgcmV0dXJuICc4Yml0Jywgbm9ybWFsX2JvZHkobGluZXMpLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKLSAgICAgICAgc25pZmYgPSBlbWJlZGVkX2JvZHkobGluZXNbOjEwXSkKKyAgICAgICAgc25pZmYgPSBlbWJlZGRlZF9ib2R5KGxpbmVzWzoxMF0pCiAgICAgICAgIHNuaWZmX3FwID0gcXVvcHJpbWltZS5ib2R5X2VuY29kZShzbmlmZi5kZWNvZGUoJ2xhdGluLTEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgICAgIHNuaWZmX2Jhc2U2NCA9IGJpbmFzY2lpLmIyYV9iYXNlNjQoc25pZmYpCkBAIC0xNzIsNyArMTcyLDcgQEAKICAgICAgICAgZGF0YSA9IHF1b3ByaW1pbWUuYm9keV9lbmNvZGUobm9ybWFsX2JvZHkobGluZXMpLmRlY29kZSgnbGF0aW4tMScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQogICAgIGVsaWYgY3RlID09ICdiYXNlNjQnOgotICAgICAgICBkYXRhID0gX2VuY29kZV9iYXNlNjQoZW1iZWRlZF9ib2R5KGxpbmVzKSwgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKKyAgICAgICAgZGF0YSA9IF9lbmNvZGVfYmFzZTY0KGVtYmVkZGVkX2JvZHkobGluZXMpLCBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyB7fSIuZm9ybWF0KGN0ZSkpCiAgICAgcmV0dXJuIGN0ZSwgZGF0YQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQppbmRleCAwYjMxMmU1Li43YzA3Y2E4IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weQorKysgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQpAQCAtMjQsMTUgKzI0LDE0IEBACiBpbXBvcnQgcmUKIAogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCi1mcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCiBmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKLU5MQ1JFID0gcmUuY29tcGlsZSgnXHJcbnxccnxcbicpCi1OTENSRV9ib2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQotTkxDUkVfZW9sID0gcmUuY29tcGlsZSgnKFxyXG58XHJ8XG4pXFonKQotTkxDUkVfY3JhY2sgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQorTkxDUkUgPSByZS5jb21waWxlKHInXHJcbnxccnxcbicpCitOTENSRV9ib2wgPSByZS5jb21waWxlKHInKFxyXG58XHJ8XG4pJykKK05MQ1JFX2VvbCA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbilcWicpCitOTENSRV9jcmFjayA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbiknKQogIyBSRkMgMjgyMiAkMy42LjggT3B0aW9uYWwgZmllbGRzLiAgZnRleHQgaXMgJWQzMy01NyAvICVkNTktMTI2LCBBbnkgY2hhcmFjdGVyCiAjIGV4Y2VwdCBjb250cm9scywgU1AsIGFuZCAiOiIuCiBoZWFkZXJSRSA9IHJlLmNvbXBpbGUocideKEZyb20gfFtcMDQxLVwwNzFcMDczLVwxNzZdKjp8W1x0IF0pJykKQEAgLTE0OCwxMyArMTQ3LDExIEBACiAgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CiAgICAgICAgIHNlbGYuX29sZF9zdHlsZV9mYWN0b3J5ID0gRmFsc2UKICAgICAgICAgaWYgX2ZhY3RvcnkgaXMgTm9uZToKLSAgICAgICAgICAgICMgV2hhdCB0aGlzIHNob3VsZCBiZToKLSAgICAgICAgICAgICNzZWxmLl9mYWN0b3J5ID0gcG9saWN5LmRlZmF1bHRfbWVzc2FnZV9mYWN0b3J5Ci0gICAgICAgICAgICAjIGJ1dCwgYmVjYXVzZSB3ZSBhcmUgcG9zdCAzLjQgZmVhdHVyZSBmcmVlemUsIGZpeCB3aXRoIHRlbXAgaGFjazoKLSAgICAgICAgICAgIGlmIHNlbGYucG9saWN5IGlzIGNvbXBhdDMyOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBtZXNzYWdlLk1lc3NhZ2UKKyAgICAgICAgICAgIGlmIHBvbGljeS5tZXNzYWdlX2ZhY3RvcnkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKKyAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gTWVzc2FnZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gbWVzc2FnZS5FbWFpbE1lc3NhZ2UKKyAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gcG9saWN5Lm1lc3NhZ2VfZmFjdG9yeQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IF9mYWN0b3J5CiAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5IGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQppbmRleCAyNTYyNzhkLi5hZTY3MGMyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CisrKyBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKQEAgLTQ0OCw3ICs0NDgsOCBAQAogICAgIExpa2UgdGhlIEdlbmVyYXRvciBiYXNlIGNsYXNzLCBleGNlcHQgdGhhdCBub24tdGV4dCBwYXJ0cyBhcmUgc3Vic3RpdHV0ZWQKICAgICB3aXRoIGEgZm9ybWF0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcnQuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPTc4LCBmbXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsIGZtdD1Ob25lLCAqLAorICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkxpa2UgR2VuZXJhdG9yLl9faW5pdF9fKCkgZXhjZXB0IHRoYXQgYW4gYWRkaXRpb25hbCBvcHRpb25hbAogICAgICAgICBhcmd1bWVudCBpcyBhbGxvd2VkLgogCkBAIC00NzAsNyArNDcxLDggQEAKIAogICAgICAgICBbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXQogICAgICAgICAiIiIKLSAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV8sIG1heGhlYWRlcmxlbikKKyAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV8sIG1heGhlYWRlcmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kpCiAgICAgICAgIGlmIGZtdCBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5fZm10ID0gX0ZNVAogICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2hlYWRlci5weSBiL0xpYi9lbWFpbC9oZWFkZXIucHkKaW5kZXggNjgyMGVhMS4uYzdiMmRkOSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2hlYWRlci5weQorKysgYi9MaWIvZW1haWwvaGVhZGVyLnB5CkBAIC00OSw3ICs0OSw3IEBACiAKICMgRmluZCBhIGhlYWRlciBlbWJlZGRlZCBpbiBhIHB1dGF0aXZlIGhlYWRlciB2YWx1ZS4gIFVzZWQgdG8gY2hlY2sgZm9yCiAjIGhlYWRlciBpbmplY3Rpb24gYXR0YWNrLgotX2VtYmVkZWRfaGVhZGVyID0gcmUuY29tcGlsZShyJ1xuW14gXHRdKzonKQorX2VtYmVkZGVkX2hlYWRlciA9IHJlLmNvbXBpbGUocidcblteIFx0XSs6JykKIAogCiAMCkBAIC0zODUsNyArMzg1LDcgQEAKICAgICAgICAgaWYgc2VsZi5fY2h1bmtzOgogICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKICAgICAgICAgdmFsdWUgPSBmb3JtYXR0ZXIuX3N0cihsaW5lc2VwKQotICAgICAgICBpZiBfZW1iZWRlZF9oZWFkZXIuc2VhcmNoKHZhbHVlKToKKyAgICAgICAgaWYgX2VtYmVkZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgogICAgICAgICAgICAgcmFpc2UgSGVhZGVyUGFyc2VFcnJvcigiaGVhZGVyIHZhbHVlIGFwcGVhcnMgdG8gY29udGFpbiAiCiAgICAgICAgICAgICAgICAgImFuIGVtYmVkZGVkIGhlYWRlcjogeyFyfSIuZm9ybWF0KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CmluZGV4IDRiMDQyODMuLmI2NTEyZjIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CkBAIC00LDE4ICs0LDE3IEBACiAKICIiIkJhc2ljIG1lc3NhZ2Ugb2JqZWN0IGZvciB0aGUgZW1haWwgcGFja2FnZSBvYmplY3QgbW9kZWwuIiIiCiAKLV9fYWxsX18gPSBbJ01lc3NhZ2UnXQorX19hbGxfXyA9IFsnTWVzc2FnZScsICdFbWFpbE1lc3NhZ2UnXQogCiBpbXBvcnQgcmUKIGltcG9ydCB1dQogaW1wb3J0IHF1b3ByaQotaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTwogCiAjIEludHJhcGFja2FnZSBpbXBvcnRzCiBmcm9tIGVtYWlsIGltcG9ydCB1dGlscwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCi1mcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgUG9saWN5LCBjb21wYXQzMgogZnJvbSBlbWFpbCBpbXBvcnQgY2hhcnNldCBhcyBfY2hhcnNldAogZnJvbSBlbWFpbC5fZW5jb2RlZF93b3JkcyBpbXBvcnQgZGVjb2RlX2IKIENoYXJzZXQgPSBfY2hhcnNldC5DaGFyc2V0CkBAIC05NTEsNiArOTUwLDI2IEBACiAgICAgICAgICAgICBwb2xpY3kgPSBkZWZhdWx0CiAgICAgICAgIE1lc3NhZ2UuX19pbml0X18oc2VsZiwgcG9saWN5KQogCisKKyAgICBkZWYgYXNfc3RyaW5nKHNlbGYsIHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49Tm9uZSwgcG9saWN5PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGVudGlyZSBmb3JtYXR0ZWQgbWVzc2FnZSBhcyBhIHN0cmluZy4KKworICAgICAgICBPcHRpb25hbCAndW5peGZyb20nLCB3aGVuIHRydWUsIG1lYW5zIGluY2x1ZGUgdGhlIFVuaXggRnJvbV8gZW52ZWxvcGUKKyAgICAgICAgaGVhZGVyLiAgbWF4aGVhZGVybGVuIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCisgICAgICAgIGJhc2UgTWVzc2FnZSBjbGFzcywgYnV0IGRlZmF1bHRzIHRvIE5vbmUsIG1lYW5pbmcgdGhhdCB0aGUgcG9saWN5IHZhbHVlCisgICAgICAgIGZvciBtYXhfbGluZV9sZW5ndGggY29udHJvbHMgdGhlIGhlYWRlciBtYXhpbXVtIGxlbmd0aC4gICdwb2xpY3knIGlzCisgICAgICAgIHBhc3NlZCB0byB0aGUgR2VuZXJhdG9yIGluc3RhbmNlIHVzZWQgdG8gc2VyaWFsaXplIHRoZSBtZXNhc2dlOyBpZiBpdAorICAgICAgICBpcyBub3Qgc3BlY2lmaWVkIHRoZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlIGluc3RhbmNlIGlzCisgICAgICAgIHVzZWQuCisgICAgICAgICIiIgorICAgICAgICBwb2xpY3kgPSBzZWxmLnBvbGljeSBpZiBwb2xpY3kgaXMgTm9uZSBlbHNlIHBvbGljeQorICAgICAgICBpZiBtYXhoZWFkZXJsZW4gaXMgTm9uZToKKyAgICAgICAgICAgIG1heGhlYWRlcmxlbiA9IHBvbGljeS5tYXhfbGluZV9sZW5ndGgKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuYXNfc3RyaW5nKG1heGhlYWRlcmxlbj1tYXhoZWFkZXJsZW4sIHBvbGljeT1wb2xpY3kpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNfc3RyaW5nKHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZSh1dGY4PVRydWUpKQorCiAgICAgZGVmIGlzX2F0dGFjaG1lbnQoc2VsZik6CiAgICAgICAgIGNfZCA9IHNlbGYuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJykKICAgICAgICAgcmV0dXJuIEZhbHNlIGlmIGNfZCBpcyBOb25lIGVsc2UgY19kLmNvbnRlbnRfZGlzcG9zaXRpb24gPT0gJ2F0dGFjaG1lbnQnCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9hcHBsaWNhdGlvbi5weSBiL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5CmluZGV4IGY1YzU5MDUuLjY4NzdlNTUgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgYXBwbGljYXRpb24vKiBNSU1FIGRvY3VtZW50cy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfZGF0YSwgX3N1YnR5cGU9J29jdGV0LXN0cmVhbScsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gYXBwbGljYXRpb24vKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2RhdGEgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmF3IGFwcGxpY2F0aW9uIGRhdGEuCkBAIC0zMSw2ICszMSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdJbnZhbGlkIGFwcGxpY2F0aW9uIE1JTUUgc3VidHlwZScpCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2FwcGxpY2F0aW9uJywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXBwbGljYXRpb24nLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX2RhdGEpCiAgICAgICAgIF9lbmNvZGVyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9hdWRpby5weSBiL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5CmluZGV4IGZiYzExODkuLjRiY2Q3YjIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5CkBAIC00Myw3ICs0Myw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgYXVkaW8vKiBNSU1FIGRvY3VtZW50cy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLAotICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpOgorICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlIGFuIGF1ZGlvLyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF9hdWRpb2RhdGEgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmF3IGF1ZGlvIGRhdGEuICBJZiB0aGlzIGRhdGEKQEAgLTY4LDYgKzY4LDcgQEAKICAgICAgICAgICAgIF9zdWJ0eXBlID0gX3doYXRzbmQoX2F1ZGlvZGF0YSkKICAgICAgICAgaWYgX3N1YnR5cGUgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ291bGQgbm90IGZpbmQgYXVkaW8gTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXVkaW8nLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhdWRpbycsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfYXVkaW9kYXRhKQogICAgICAgICBfZW5jb2RlcihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvYmFzZS5weSBiL0xpYi9lbWFpbC9taW1lL2Jhc2UucHkKaW5kZXggYWM5MTkyNS4uMWEzZjliNSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYmFzZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9iYXNlLnB5CkBAIC02LDYgKzYsOCBAQAogCiBfX2FsbF9fID0gWydNSU1FQmFzZSddCiAKK2ltcG9ydCBlbWFpbC5wb2xpY3kKKwogZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZQogCiAKQEAgLTEzLDE0ICsxNSwxNiBAQAogY2xhc3MgTUlNRUJhc2UobWVzc2FnZS5NZXNzYWdlKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciBNSU1FIHNwZWNpYWxpemF0aW9ucy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiVGhpcyBjb25zdHJ1Y3RvciBhZGRzIGEgQ29udGVudC1UeXBlOiBhbmQgYSBNSU1FLVZlcnNpb246IGhlYWRlci4KIAogICAgICAgICBUaGUgQ29udGVudC1UeXBlOiBoZWFkZXIgaXMgdGFrZW4gZnJvbSB0aGUgX21haW50eXBlIGFuZCBfc3VidHlwZQogICAgICAgICBhcmd1bWVudHMuICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoaXMgaGVhZGVyIGFyZSB0YWtlbiBmcm9tIHRoZQogICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCi0gICAgICAgIG1lc3NhZ2UuTWVzc2FnZS5fX2luaXRfXyhzZWxmKQorICAgICAgICBpZiBwb2xpY3kgaXMgTm9uZToKKyAgICAgICAgICAgIHBvbGljeSA9IGVtYWlsLnBvbGljeS5jb21wYXQzMgorICAgICAgICBtZXNzYWdlLk1lc3NhZ2UuX19pbml0X18oc2VsZiwgcG9saWN5PXBvbGljeSkKICAgICAgICAgY3R5cGUgPSAnJXMvJXMnICUgKF9tYWludHlwZSwgX3N1YnR5cGUpCiAgICAgICAgIHNlbGYuYWRkX2hlYWRlcignQ29udGVudC1UeXBlJywgY3R5cGUsICoqX3BhcmFtcykKICAgICAgICAgc2VsZlsnTUlNRS1WZXJzaW9uJ10gPSAnMS4wJwpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvaW1hZ2UucHkgYi9MaWIvZW1haWwvbWltZS9pbWFnZS5weQppbmRleCA1NTYzODIzLi45MjcyNDY0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9pbWFnZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9pbWFnZS5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIGltYWdlLyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfaW1hZ2VkYXRhLCBfc3VidHlwZT1Ob25lLAotICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpOgorICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlIGFuIGltYWdlLyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF9pbWFnZWRhdGEgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmF3IGltYWdlIGRhdGEuICBJZiB0aGlzIGRhdGEKQEAgLTQxLDYgKzQxLDcgQEAKICAgICAgICAgICAgIF9zdWJ0eXBlID0gaW1naGRyLndoYXQoTm9uZSwgX2ltYWdlZGF0YSkKICAgICAgICAgaWYgX3N1YnR5cGUgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ291bGQgbm90IGd1ZXNzIGltYWdlIE1JTUUgc3VidHlwZScpCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2ltYWdlJywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnaW1hZ2UnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX2ltYWdlZGF0YSkKICAgICAgICAgX2VuY29kZXIoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkgYi9MaWIvZW1haWwvbWltZS9tZXNzYWdlLnB5CmluZGV4IDI3NWRiZmQuLjA3ZTRmMmQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkKKysrIGIvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weQpAQCAtMTQsNyArMTQsNyBAQAogY2xhc3MgTUlNRU1lc3NhZ2UoTUlNRU5vbk11bHRpcGFydCk6CiAgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIG1lc3NhZ2UvKiBNSU1FIGRvY3VtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbXNnLCBfc3VidHlwZT0ncmZjODIyJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInLCAqLCBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIG1lc3NhZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX21zZyBpcyBhIG1lc3NhZ2Ugb2JqZWN0IGFuZCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIE1lc3NhZ2UsIG9yIGEKQEAgLTI0LDcgKzI0LDcgQEAKICAgICAgICAgZGVmYXVsdCBpcyAicmZjODIyIiAodGhpcyBpcyBkZWZpbmVkIGJ5IHRoZSBNSU1FIHN0YW5kYXJkLCBldmVuIHRob3VnaAogICAgICAgICB0aGUgdGVybSAicmZjODIyIiBpcyB0ZWNobmljYWxseSBvdXRkYXRlZCBieSBSRkMgMjgyMikuCiAgICAgICAgICIiIgotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdtZXNzYWdlJywgX3N1YnR5cGUpCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ21lc3NhZ2UnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSkKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoX21zZywgbWVzc2FnZS5NZXNzYWdlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQXJndW1lbnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIE1lc3NhZ2UnKQogICAgICAgICAjIEl0J3MgY29udmVuaWVudCB0byB1c2UgdGhpcyBiYXNlIGNsYXNzIG1ldGhvZC4gIFdlIG5lZWQgdG8gZG8gaXQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weSBiL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weQppbmRleCA5NjYxODY1Li4yZDNmMjg4IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9tdWx0aXBhcnQucHkKKysrIGIvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgTUlNRSBtdWx0aXBhcnQvKiB0eXBlIG1lc3NhZ2VzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9zdWJ0eXBlPSdtaXhlZCcsIGJvdW5kYXJ5PU5vbmUsIF9zdWJwYXJ0cz1Ob25lLAorICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Tm9uZSwKICAgICAgICAgICAgICAgICAgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlcyBhIG11bHRpcGFydC8qIHR5cGUgbWVzc2FnZS4KIApAQCAtMzMsNyArMzQsNyBAQAogICAgICAgICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyIGFyZSB0YWtlbiBmcm9tIHRoZQogICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyAob3IgcGFzc2VkIGludG8gdGhlIF9wYXJhbXMgYXJndW1lbnQpLgogICAgICAgICAiIiIKLSAgICAgICAgTUlNRUJhc2UuX19pbml0X18oc2VsZiwgJ211bHRpcGFydCcsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisgICAgICAgIE1JTUVCYXNlLl9faW5pdF9fKHNlbGYsICdtdWx0aXBhcnQnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwgKipfcGFyYW1zKQogCiAgICAgICAgICMgSW5pdGlhbGlzZSBfcGF5bG9hZCB0byBhbiBlbXB0eSBsaXN0IGFzIHRoZSBNZXNzYWdlIHN1cGVyY2xhc3MncwogICAgICAgICAjIGltcGxlbWVudGF0aW9uIG9mIGlzX211bHRpcGFydCBhc3N1bWVzIHRoYXQgX3BheWxvYWQgaXMgYSBsaXN0IGZvcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvdGV4dC5weSBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKaW5kZXggZGEwMzA4Ni4uMzViNDQyMyAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvdGV4dC5weQorKysgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FVGV4dChNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyB0ZXh0LyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lLCAqLCBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX3RleHQgaXMgdGhlIHN0cmluZyBmb3IgdGhpcyBtZXNzYWdlIG9iamVjdC4KQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXRmLTgnCiAKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAndGV4dCcsIF9zdWJ0eXBlLAorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKip7J2NoYXJzZXQnOiBzdHIoX2NoYXJzZXQpfSkKIAogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF90ZXh0LCBfY2hhcnNldCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9wb2xpY3kucHkgYi9MaWIvZW1haWwvcG9saWN5LnB5CmluZGV4IDM1ZDBlNjkuLjUxMzEzMTFhYyAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3BvbGljeS5weQorKysgYi9MaWIvZW1haWwvcG9saWN5LnB5CkBAIC03LDYgKzcsNyBAQAogZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCiBmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBIZWFkZXJSZWdpc3RyeSBhcyBIZWFkZXJSZWdpc3RyeQogZnJvbSBlbWFpbC5jb250ZW50bWFuYWdlciBpbXBvcnQgcmF3X2RhdGFfbWFuYWdlcgorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIAogX19hbGxfXyA9IFsKICAgICAnQ29tcGF0MzInLApAQCAtODIsNiArODMsNyBAQAogCiAgICAgIiIiCiAKKyAgICBtZXNzYWdlX2ZhY3RvcnkgPSBFbWFpbE1lc3NhZ2UKICAgICB1dGY4ID0gRmFsc2UKICAgICByZWZvbGRfc291cmNlID0gJ2xvbmcnCiAgICAgaGVhZGVyX2ZhY3RvcnkgPSBIZWFkZXJSZWdpc3RyeSgpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5IGIvTGliL2VuY29kaW5ncy9fX2luaXRfXy5weQppbmRleCA4ZGQ3MTMwLi5hYTJmYjdjIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkKQEAgLTI5LDYgKzI5LDcgQEAKICIiIiMiCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBzeXMKIGZyb20gLiBpbXBvcnQgYWxpYXNlcwogCiBfY2FjaGUgPSB7fQpAQCAtNTQsNiArNTUsNyBAQAogICAgICIiIgogICAgIGlmIGlzaW5zdGFuY2UoZW5jb2RpbmcsIGJ5dGVzKToKICAgICAgICAgZW5jb2RpbmcgPSBzdHIoZW5jb2RpbmcsICJhc2NpaSIpCisKICAgICBjaGFycyA9IFtdCiAgICAgcHVuY3QgPSBGYWxzZQogICAgIGZvciBjIGluIGVuY29kaW5nOgpAQCAtOTcsNiArOTksOCBAQAogICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXygnZW5jb2RpbmdzLicgKyBtb2RuYW1lLCBmcm9tbGlzdD1faW1wb3J0X3RhaWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTApCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICMgSW1wb3J0RXJyb3IgbWF5IG9jY3VyIGJlY2F1c2UgJ2VuY29kaW5ncy4obW9kbmFtZSknIGRvZXMgbm90IGV4aXN0LAorICAgICAgICAgICAgIyBvciBiZWNhdXNlIGl0IGltcG9ydHMgYSBuYW1lIHRoYXQgZG9lcyBub3QgZXhpc3QgKHNlZSBtYmNzIGFuZCBvZW0pCiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBicmVhawpAQCAtMTUwLDMgKzE1NCwxNiBAQAogCiAjIFJlZ2lzdGVyIHRoZSBzZWFyY2hfZnVuY3Rpb24gaW4gdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeQogY29kZWNzLnJlZ2lzdGVyKHNlYXJjaF9mdW5jdGlvbikKKworaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgZGVmIF9hbGlhc19tYmNzKGVuY29kaW5nKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCisgICAgICAgICAgICBpZiBlbmNvZGluZyA9PSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGVuY29kaW5ncy5tYmNzCisgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5ncy5tYmNzLmdldHJlZ2VudHJ5KCkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgIyBJbXBvcnRzIG1heSBmYWlsIHdoaWxlIHdlIGFyZSBzaHV0dGluZyBkb3duCisgICAgICAgICAgICBwYXNzCisKKyAgICBjb2RlY3MucmVnaXN0ZXIoX2FsaWFzX21iY3MpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkgYi9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKaW5kZXggNjdjODI4ZC4uMmU2M2MyZiAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQpAQCAtNDU4LDYgKzQ1OCw3IEBACiAgICAgJ21hY3R1cmtpc2gnICAgICAgICAgOiAnbWFjX3R1cmtpc2gnLAogCiAgICAgIyBtYmNzIGNvZGVjCisgICAgJ2Fuc2knICAgICAgICAgICAgICAgOiAnbWJjcycsCiAgICAgJ2RiY3MnICAgICAgICAgICAgICAgOiAnbWJjcycsCiAKICAgICAjIHB0Y3AxNTQgY29kZWMKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3Mvb2VtLnB5IGIvTGliL2VuY29kaW5ncy9vZW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMzNDI2YgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbmNvZGluZ3Mvb2VtLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyIiIiBQeXRob24gJ29lbScgQ29kZWMgZm9yIFdpbmRvd3MKKworIiIiCisjIEltcG9ydCB0aGVtIGV4cGxpY2l0bHkgdG8gY2F1c2UgYW4gSW1wb3J0RXJyb3IKKyMgb24gbm9uLVdpbmRvd3Mgc3lzdGVtcworZnJvbSBjb2RlY3MgaW1wb3J0IG9lbV9lbmNvZGUsIG9lbV9kZWNvZGUKKyMgZm9yIEluY3JlbWVudGFsRGVjb2RlciwgSW5jcmVtZW50YWxFbmNvZGVyLCAuLi4KK2ltcG9ydCBjb2RlY3MKKworIyMjIENvZGVjIEFQSXMKKworZW5jb2RlID0gb2VtX2VuY29kZQorCitkZWYgZGVjb2RlKGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgorICAgIHJldHVybiBvZW1fZGVjb2RlKGlucHV0LCBlcnJvcnMsIFRydWUpCisKK2NsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBvZW1fZW5jb2RlKGlucHV0LCBzZWxmLmVycm9ycylbMF0KKworY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CisgICAgX2J1ZmZlcl9kZWNvZGUgPSBvZW1fZGVjb2RlCisKK2NsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKKyAgICBlbmNvZGUgPSBvZW1fZW5jb2RlCisKK2NsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKKyAgICBkZWNvZGUgPSBvZW1fZGVjb2RlCisKKyMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQorCitkZWYgZ2V0cmVnZW50cnkoKToKKyAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKKyAgICAgICAgbmFtZT0nb2VtJywKKyAgICAgICAgZW5jb2RlPWVuY29kZSwKKyAgICAgICAgZGVjb2RlPWRlY29kZSwKKyAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKKyAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKKyAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKKyAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKKyAgICApCmRpZmYgLS1naXQgYS9MaWIvZW51bS5weSBiL0xpYi9lbnVtLnB5CmluZGV4IGI4Nzg3ZDEuLmQ4MzAzMjAgMTAwNjQ0Ci0tLSBhL0xpYi9lbnVtLnB5CisrKyBiL0xpYi9lbnVtLnB5CkBAIC0xLDggKzEsMjAgQEAKIGltcG9ydCBzeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIHR5cGVzIGltcG9ydCBNYXBwaW5nUHJveHlUeXBlLCBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2UKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IG9yXyBhcyBfb3JfCiAKLV9fYWxsX18gPSBbJ0VudW0nLCAnSW50RW51bScsICd1bmlxdWUnXQorIyB0cnkgX2NvbGxlY3Rpb25zIGZpcnN0IHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorCisKK19fYWxsX18gPSBbCisgICAgICAgICdFbnVtTWV0YScsCisgICAgICAgICdFbnVtJywgJ0ludEVudW0nLCAnRmxhZycsICdJbnRGbGFnJywKKyAgICAgICAgJ2F1dG8nLCAndW5pcXVlJywKKyAgICAgICAgXQogCiAKIGRlZiBfaXNfZGVzY3JpcHRvcihvYmopOgpAQCAtMjgsNyArNDAsNiBAQAogICAgICAgICAgICAgbmFtZVstMjotMV0gIT0gJ18nIGFuZAogICAgICAgICAgICAgbGVuKG5hbWUpID4gMikKIAotCiBkZWYgX21ha2VfY2xhc3NfdW5waWNrbGFibGUoY2xzKToKICAgICAiIiJNYWtlIHRoZSBnaXZlbiBjbGFzcyB1bi1waWNrbGFibGUuIiIiCiAgICAgZGVmIF9icmVha19vbl9jYWxsX3JlZHVjZShzZWxmLCBwcm90byk6CkBAIC0zNiw2ICs0NywxMiBAQAogICAgIGNscy5fX3JlZHVjZV9leF9fID0gX2JyZWFrX29uX2NhbGxfcmVkdWNlCiAgICAgY2xzLl9fbW9kdWxlX18gPSAnPHVua25vd24+JwogCitjbGFzcyBhdXRvOgorICAgICIiIgorICAgIEluc3RhbmNlcyBhcmUgcmVwbGFjZWQgd2l0aCBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBpbiBFbnVtIGNsYXNzIHN1aXRlcy4KKyAgICAiIiIKKyAgICBwYXNzCisKIAogY2xhc3MgX0VudW1EaWN0KGRpY3QpOgogICAgICIiIlRyYWNrIGVudW0gbWVtYmVyIG9yZGVyIGFuZCBlbnN1cmUgbWVtYmVyIG5hbWVzIGFyZSBub3QgcmV1c2VkLgpAQCAtNDcsNiArNjQsNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgIHNlbGYuX21lbWJlcl9uYW1lcyA9IFtdCisgICAgICAgIHNlbGYuX2xhc3RfdmFsdWVzID0gW10KIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgIiIiQ2hhbmdlcyBhbnl0aGluZyBub3QgZHVuZGVyZWQgb3Igbm90IGEgZGVzY3JpcHRvci4KQEAgLTU4LDIxICs3NiwzMCBAQAogCiAgICAgICAgICIiIgogICAgICAgICBpZiBfaXNfc3VuZGVyKGtleSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdfbmFtZXNfIGFyZSByZXNlcnZlZCBmb3IgZnV0dXJlIEVudW0gdXNlJykKKyAgICAgICAgICAgIGlmIGtleSBub3QgaW4gKAorICAgICAgICAgICAgICAgICAgICAnX29yZGVyXycsICdfY3JlYXRlX3BzZXVkb19tZW1iZXJfJywgJ19kZWNvbXBvc2VfJywKKyAgICAgICAgICAgICAgICAgICAgJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlXycsICdfbWlzc2luZ18nLAorICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ19uYW1lc18gYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgRW51bSB1c2UnKQorICAgICAgICAgICAgaWYga2V5ID09ICdfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nOgorICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlJywgdmFsdWUpCiAgICAgICAgIGVsaWYgX2lzX2R1bmRlcihrZXkpOgotICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgaWYga2V5ID09ICdfX29yZGVyX18nOgorICAgICAgICAgICAgICAgIGtleSA9ICdfb3JkZXJfJwogICAgICAgICBlbGlmIGtleSBpbiBzZWxmLl9tZW1iZXJfbmFtZXM6CiAgICAgICAgICAgICAjIGRlc2NyaXB0b3Igb3ZlcndyaXRpbmcgYW4gZW51bT8KICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQXR0ZW1wdGVkIHRvIHJldXNlIGtleTogJXInICUga2V5KQogICAgICAgICBlbGlmIG5vdCBfaXNfZGVzY3JpcHRvcih2YWx1ZSk6CiAgICAgICAgICAgICBpZiBrZXkgaW4gc2VsZjoKICAgICAgICAgICAgICAgICAjIGVudW0gb3ZlcndyaXRpbmcgYSBkZXNjcmlwdG9yPwotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignS2V5IGFscmVhZHkgZGVmaW5lZCBhczogJXInICUgc2VsZltrZXldKQorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXIgYWxyZWFkeSBkZWZpbmVkIGFzOiAlcicgJSAoa2V5LCBzZWxmW2tleV0pKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgYXV0byk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9nZW5lcmF0ZV9uZXh0X3ZhbHVlKGtleSwgMSwgbGVuKHNlbGYuX21lbWJlcl9uYW1lcyksIHNlbGYuX2xhc3RfdmFsdWVzWzpdKQogICAgICAgICAgICAgc2VsZi5fbWVtYmVyX25hbWVzLmFwcGVuZChrZXkpCisgICAgICAgICAgICBzZWxmLl9sYXN0X3ZhbHVlcy5hcHBlbmQodmFsdWUpCiAgICAgICAgIHN1cGVyKCkuX19zZXRpdGVtX18oa2V5LCB2YWx1ZSkKIAogCi0KICMgRHVtbXkgdmFsdWUgZm9yIEVudW0gYXMgRW51bU1ldGEgZXhwbGljaXRseSBjaGVja3MgZm9yIGl0LCBidXQgb2YgY291cnNlCiAjIHVudGlsIEVudW1NZXRhIGZpbmlzaGVzIHJ1bm5pbmcgdGhlIGZpcnN0IHRpbWUgdGhlIEVudW0gY2xhc3MgZG9lc24ndCBleGlzdC4KICMgVGhpcyBpcyBhbHNvIHdoeSB0aGVyZSBhcmUgY2hlY2tzIGluIEVudW1NZXRhIGxpa2UgYGlmIEVudW0gaXMgbm90IE5vbmVgCkBAIC04Myw3ICsxMTAsMTMgQEAKICAgICAiIiJNZXRhY2xhc3MgZm9yIEVudW0iIiIKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgY2xzLCBiYXNlcyk6Ci0gICAgICAgIHJldHVybiBfRW51bURpY3QoKQorICAgICAgICAjIGNyZWF0ZSB0aGUgbmFtZXNwYWNlIGRpY3QKKyAgICAgICAgZW51bV9kaWN0ID0gX0VudW1EaWN0KCkKKyAgICAgICAgIyBpbmhlcml0IHByZXZpb3VzIGZsYWdzIGFuZCBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8gZnVuY3Rpb24KKyAgICAgICAgbWVtYmVyX3R5cGUsIGZpcnN0X2VudW0gPSBtZXRhY2xzLl9nZXRfbWl4aW5zXyhiYXNlcykKKyAgICAgICAgaWYgZmlyc3RfZW51bSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVudW1fZGljdFsnX2dlbmVyYXRlX25leHRfdmFsdWVfJ10gPSBnZXRhdHRyKGZpcnN0X2VudW0sICdfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nLCBOb25lKQorICAgICAgICByZXR1cm4gZW51bV9kaWN0CiAKICAgICBkZWYgX19uZXdfXyhtZXRhY2xzLCBjbHMsIGJhc2VzLCBjbGFzc2RpY3QpOgogICAgICAgICAjIGFuIEVudW0gY2xhc3MgaXMgZmluYWwgb25jZSBlbnVtZXJhdGlvbiBpdGVtcyBoYXZlIGJlZW4gZGVmaW5lZDsgaXQKQEAgLTk2LDEyICsxMjksMTUgQEAKIAogICAgICAgICAjIHNhdmUgZW51bSBpdGVtcyBpbnRvIHNlcGFyYXRlIG1hcHBpbmcgc28gdGhleSBkb24ndCBnZXQgYmFrZWQgaW50bwogICAgICAgICAjIHRoZSBuZXcgY2xhc3MKLSAgICAgICAgbWVtYmVycyA9IHtrOiBjbGFzc2RpY3Rba10gZm9yIGsgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXN9CisgICAgICAgIGVudW1fbWVtYmVycyA9IHtrOiBjbGFzc2RpY3Rba10gZm9yIGsgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXN9CiAgICAgICAgIGZvciBuYW1lIGluIGNsYXNzZGljdC5fbWVtYmVyX25hbWVzOgogICAgICAgICAgICAgZGVsIGNsYXNzZGljdFtuYW1lXQogCisgICAgICAgICMgYWRqdXN0IHRoZSBzdW5kZXJzCisgICAgICAgIF9vcmRlcl8gPSBjbGFzc2RpY3QucG9wKCdfb3JkZXJfJywgTm9uZSkKKwogICAgICAgICAjIGNoZWNrIGZvciBpbGxlZ2FsIGVudW0gbmFtZXMgKGFueSBvdGhlcnM/KQotICAgICAgICBpbnZhbGlkX25hbWVzID0gc2V0KG1lbWJlcnMpICYgeydtcm8nLCB9CisgICAgICAgIGludmFsaWRfbmFtZXMgPSBzZXQoZW51bV9tZW1iZXJzKSAmIHsnbXJvJywgfQogICAgICAgICBpZiBpbnZhbGlkX25hbWVzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBlbnVtIG1lbWJlciBuYW1lOiB7MH0nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAnLCcuam9pbihpbnZhbGlkX25hbWVzKSkpCkBAIC0xNDUsNyArMTgxLDcgQEAKICAgICAgICAgIyBhIGN1c3RvbSBfX25ld19fIGlzIGRvaW5nIHNvbWV0aGluZyBmdW5reSB3aXRoIHRoZSB2YWx1ZXMgLS0gc3VjaCBhcwogICAgICAgICAjIGF1dG8tbnVtYmVyaW5nIDspCiAgICAgICAgIGZvciBtZW1iZXJfbmFtZSBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lczoKLSAgICAgICAgICAgIHZhbHVlID0gbWVtYmVyc1ttZW1iZXJfbmFtZV0KKyAgICAgICAgICAgIHZhbHVlID0gZW51bV9tZW1iZXJzW21lbWJlcl9uYW1lXQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKICAgICAgICAgICAgICAgICBhcmdzID0gKHZhbHVlLCApCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTU5LDcgKzE5NSwxMCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlbnVtX21lbWJlciA9IF9fbmV3X18oZW51bV9jbGFzcywgKmFyZ3MpCiAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZW51bV9tZW1iZXIsICdfdmFsdWVfJyk6Ci0gICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSBtZW1iZXJfdHlwZSgqYXJncykKKyAgICAgICAgICAgICAgICAgICAgaWYgbWVtYmVyX3R5cGUgaXMgb2JqZWN0OgorICAgICAgICAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnVtX21lbWJlci5fdmFsdWVfID0gbWVtYmVyX3R5cGUoKmFyZ3MpCiAgICAgICAgICAgICB2YWx1ZSA9IGVudW1fbWVtYmVyLl92YWx1ZV8KICAgICAgICAgICAgIGVudW1fbWVtYmVyLl9uYW1lXyA9IG1lbWJlcl9uYW1lCiAgICAgICAgICAgICBlbnVtX21lbWJlci5fX29iamNsYXNzX18gPSBlbnVtX2NsYXNzCkBAIC0yMDQsNiArMjQzLDE0IEBACiAgICAgICAgICAgICBpZiBzYXZlX25ldzoKICAgICAgICAgICAgICAgICBlbnVtX2NsYXNzLl9fbmV3X21lbWJlcl9fID0gX19uZXdfXwogICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19fID0gRW51bS5fX25ld19fCisKKyAgICAgICAgIyBweTMgc3VwcG9ydCBmb3IgZGVmaW5pdGlvbiBvcmRlciAoaGVscHMga2VlcCBweTIvcHkzIGNvZGUgaW4gc3luYykKKyAgICAgICAgaWYgX29yZGVyXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoX29yZGVyXywgc3RyKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gX29yZGVyXy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCisgICAgICAgICAgICBpZiBfb3JkZXJfICE9IGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc186CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpCisKICAgICAgICAgcmV0dXJuIGVudW1fY2xhc3MKIAogICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKQEAgLTMyNSwxMyArMzcyLDE5IEBACiAgICAgICAgICIiIgogICAgICAgICBtZXRhY2xzID0gY2xzLl9fY2xhc3NfXwogICAgICAgICBiYXNlcyA9IChjbHMsICkgaWYgdHlwZSBpcyBOb25lIGVsc2UgKHR5cGUsIGNscykKKyAgICAgICAgXywgZmlyc3RfZW51bSA9IGNscy5fZ2V0X21peGluc18oYmFzZXMpCiAgICAgICAgIGNsYXNzZGljdCA9IG1ldGFjbHMuX19wcmVwYXJlX18oY2xhc3NfbmFtZSwgYmFzZXMpCiAKICAgICAgICAgIyBzcGVjaWFsIHByb2Nlc3NpbmcgbmVlZGVkIGZvciBuYW1lcz8KICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgc3RyKToKICAgICAgICAgICAgIG5hbWVzID0gbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQogICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWVzLCAodHVwbGUsIGxpc3QpKSBhbmQgaXNpbnN0YW5jZShuYW1lc1swXSwgc3RyKToKLSAgICAgICAgICAgIG5hbWVzID0gWyhlLCBpKSBmb3IgKGksIGUpIGluIGVudW1lcmF0ZShuYW1lcywgc3RhcnQpXQorICAgICAgICAgICAgb3JpZ2luYWxfbmFtZXMsIG5hbWVzID0gbmFtZXMsIFtdCisgICAgICAgICAgICBsYXN0X3ZhbHVlcyA9IFtdCisgICAgICAgICAgICBmb3IgY291bnQsIG5hbWUgaW4gZW51bWVyYXRlKG9yaWdpbmFsX25hbWVzKToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGZpcnN0X2VudW0uX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXNbOl0pCisgICAgICAgICAgICAgICAgbGFzdF92YWx1ZXMuYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZCgobmFtZSwgdmFsdWUpKQogCiAgICAgICAgICMgSGVyZSwgbmFtZXMgaXMgZWl0aGVyIGFuIGl0ZXJhYmxlIG9mIChuYW1lLCB2YWx1ZSkgb3IgYSBtYXBwaW5nLgogICAgICAgICBmb3IgaXRlbSBpbiBuYW1lczoKQEAgLTQ3Myw2ICs1MjYsMjAgQEAKICAgICAgICAgICAgIGZvciBtZW1iZXIgaW4gY2xzLl9tZW1iZXJfbWFwXy52YWx1ZXMoKToKICAgICAgICAgICAgICAgICBpZiBtZW1iZXIuX3ZhbHVlXyA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbWJlcgorICAgICAgICAjIHN0aWxsIG5vdCBmb3VuZCAtLSB0cnkgX21pc3NpbmdfIGhvb2sKKyAgICAgICAgcmV0dXJuIGNscy5fbWlzc2luZ18odmFsdWUpCisKKyAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXMpOgorICAgICAgICBmb3IgbGFzdF92YWx1ZSBpbiByZXZlcnNlZChsYXN0X3ZhbHVlcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RfdmFsdWUgKyAxCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzdGFydAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9taXNzaW5nXyhjbHMsIHZhbHVlKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXIgaXMgbm90IGEgdmFsaWQgJXMiICUgKHZhbHVlLCBjbHMuX19uYW1lX18pKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtNTQ0LDggKzYxMSwyMSBAQAogICAgICAgICAgICAgc291cmNlID0gdmFycyhzb3VyY2UpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzb3VyY2UgPSBtb2R1bGVfZ2xvYmFscwotICAgICAgICBtZW1iZXJzID0ge25hbWU6IHZhbHVlIGZvciBuYW1lLCB2YWx1ZSBpbiBzb3VyY2UuaXRlbXMoKQotICAgICAgICAgICAgICAgIGlmIGZpbHRlcihuYW1lKX0KKyAgICAgICAgIyBXZSB1c2UgYW4gT3JkZXJlZERpY3Qgb2Ygc29ydGVkIHNvdXJjZSBrZXlzIHNvIHRoYXQgdGhlCisgICAgICAgICMgX3ZhbHVlMm1lbWJlcl9tYXAgaXMgcG9wdWxhdGVkIGluIHRoZSBzYW1lIG9yZGVyIGV2ZXJ5IHRpbWUKKyAgICAgICAgIyBmb3IgYSBjb25zaXN0ZW50IHJldmVyc2UgbWFwcGluZyBvZiBudW1iZXIgdG8gbmFtZSB3aGVuIHRoZXJlCisgICAgICAgICMgYXJlIG11bHRpcGxlIG5hbWVzIGZvciB0aGUgc2FtZSBudW1iZXIgcmF0aGVyIHRoYW4gdmFyeWluZworICAgICAgICAjIGJldHdlZW4gcnVucyBkdWUgdG8gaGFzaCByYW5kb21pemF0aW9uIG9mIHRoZSBtb2R1bGUgZGljdGlvbmFyeS4KKyAgICAgICAgbWVtYmVycyA9IFsKKyAgICAgICAgICAgICAgICAobmFtZSwgc291cmNlW25hbWVdKQorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIHNvdXJjZS5rZXlzKCkKKyAgICAgICAgICAgICAgICBpZiBmaWx0ZXIobmFtZSldCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgc29ydCBieSB2YWx1ZQorICAgICAgICAgICAgbWVtYmVycy5zb3J0KGtleT1sYW1iZGEgdDogKHRbMV0sIHRbMF0pKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgIyB1bmxlc3Mgc29tZSB2YWx1ZXMgYXJlbid0IGNvbXBhcmFibGUsIGluIHdoaWNoIGNhc2Ugc29ydCBieSBuYW1lCisgICAgICAgICAgICBtZW1iZXJzLnNvcnQoa2V5PWxhbWJkYSB0OiB0WzBdKQogICAgICAgICBjbHMgPSBjbHMobmFtZSwgbWVtYmVycywgbW9kdWxlPW1vZHVsZSkKICAgICAgICAgY2xzLl9fcmVkdWNlX2V4X18gPSBfcmVkdWNlX2V4X2J5X25hbWUKICAgICAgICAgbW9kdWxlX2dsb2JhbHMudXBkYXRlKGNscy5fX21lbWJlcnNfXykKQEAgLTU2MCw2ICs2NDAsMTg0IEBACiBkZWYgX3JlZHVjZV9leF9ieV9uYW1lKHNlbGYsIHByb3RvKToKICAgICByZXR1cm4gc2VsZi5uYW1lCiAKK2NsYXNzIEZsYWcoRW51bSk6CisgICAgIiIiU3VwcG9ydCBmb3IgZmxhZ3MiIiIKKworICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlcyk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0ZSB0aGUgbmV4dCB2YWx1ZSB3aGVuIG5vdCBnaXZlbi4KKworICAgICAgICBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgbWVtYmVyCisgICAgICAgIHN0YXJ0OiB0aGUgaW5pdGl0YWwgc3RhcnQgdmFsdWUgb3IgTm9uZQorICAgICAgICBjb3VudDogdGhlIG51bWJlciBvZiBleGlzdGluZyBtZW1iZXJzCisgICAgICAgIGxhc3RfdmFsdWU6IHRoZSBsYXN0IHZhbHVlIGFzc2lnbmVkIG9yIE5vbmUKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBjb3VudDoKKyAgICAgICAgICAgIHJldHVybiBzdGFydCBpZiBzdGFydCBpcyBub3QgTm9uZSBlbHNlIDEKKyAgICAgICAgZm9yIGxhc3RfdmFsdWUgaW4gcmV2ZXJzZWQobGFzdF92YWx1ZXMpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGhpZ2hfYml0ID0gX2hpZ2hfYml0KGxhc3RfdmFsdWUpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdJbnZhbGlkIEZsYWcgdmFsdWU6ICVyJyAlIGxhc3RfdmFsdWUpIGZyb20gTm9uZQorICAgICAgICByZXR1cm4gMiAqKiAoaGlnaF9iaXQrMSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWlzc2luZ18oY2xzLCB2YWx1ZSk6CisgICAgICAgIG9yaWdpbmFsX3ZhbHVlID0gdmFsdWUKKyAgICAgICAgaWYgdmFsdWUgPCAwOgorICAgICAgICAgICAgdmFsdWUgPSB+dmFsdWUKKyAgICAgICAgcG9zc2libGVfbWVtYmVyID0gY2xzLl9jcmVhdGVfcHNldWRvX21lbWJlcl8odmFsdWUpCisgICAgICAgIGZvciBtZW1iZXIgaW4gcG9zc2libGVfbWVtYmVyLl9kZWNvbXBvc2VfKCk6CisgICAgICAgICAgICBpZiBtZW1iZXIuX25hbWVfIGlzIE5vbmUgYW5kIG1lbWJlci5fdmFsdWVfICE9IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgaXMgbm90IGEgdmFsaWQgJXMnICUgKG9yaWdpbmFsX3ZhbHVlLCBjbHMuX19uYW1lX18pKQorICAgICAgICBpZiBvcmlnaW5hbF92YWx1ZSA8IDA6CisgICAgICAgICAgICBwb3NzaWJsZV9tZW1iZXIgPSB+cG9zc2libGVfbWVtYmVyCisgICAgICAgIHJldHVybiBwb3NzaWJsZV9tZW1iZXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY3JlYXRlX3BzZXVkb19tZW1iZXJfKGNscywgdmFsdWUpOgorICAgICAgICBwc2V1ZG9fbWVtYmVyID0gY2xzLl92YWx1ZTJtZW1iZXJfbWFwXy5nZXQodmFsdWUsIE5vbmUpCisgICAgICAgIGlmIHBzZXVkb19tZW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgICMgY29uc3RydWN0IGEgbm9uLXNpbmdsZXRvbiBlbnVtIHBzZXVkby1tZW1iZXIKKyAgICAgICAgICAgIHBzZXVkb19tZW1iZXIgPSBvYmplY3QuX19uZXdfXyhjbHMpCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl9uYW1lXyA9IE5vbmUKKyAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCisgICAgICAgICAgICBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfW3ZhbHVlXSA9IHBzZXVkb19tZW1iZXIKKyAgICAgICAgcmV0dXJuIHBzZXVkb19tZW1iZXIKKworICAgIGRlZiBfZGVjb21wb3NlXyhzZWxmKToKKyAgICAgICAgIiIiRXh0cmFjdCBhbGwgbWVtYmVycyBmcm9tIHRoZSB2YWx1ZS4iIiIKKyAgICAgICAgdmFsdWUgPSBzZWxmLl92YWx1ZV8KKyAgICAgICAgbWVtYmVycyA9IFtdCisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGZvciBtZW1iZXIgaW4gc29ydGVkKGNscywga2V5PWxhbWJkYSBtOiBtLl92YWx1ZV8sIHJldmVyc2U9VHJ1ZSk6CisgICAgICAgICAgICB3aGlsZSBfaGlnaF9iaXQodmFsdWUpID4gX2hpZ2hfYml0KG1lbWJlci5fdmFsdWVfKToKKyAgICAgICAgICAgICAgICB1bmtub3duID0gc2VsZi5fY3JlYXRlX3BzZXVkb19tZW1iZXJfKDIgKiogX2hpZ2hfYml0KHZhbHVlKSkKKyAgICAgICAgICAgICAgICBtZW1iZXJzLmFwcGVuZCh1bmtub3duKQorICAgICAgICAgICAgICAgIHZhbHVlICY9IH51bmtub3duLl92YWx1ZV8KKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgKHZhbHVlICYgbWVtYmVyLl92YWx1ZV8gPT0gbWVtYmVyLl92YWx1ZV8pCisgICAgICAgICAgICAgICAgICAgIGFuZCAobWVtYmVyLl92YWx1ZV8gb3Igbm90IG1lbWJlcnMpCisgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgdmFsdWUgJj0gfm1lbWJlci5fdmFsdWVfCisgICAgICAgICAgICAgICAgbWVtYmVycy5hcHBlbmQobWVtYmVyKQorICAgICAgICBpZiBub3QgbWVtYmVycyBvciB2YWx1ZToKKyAgICAgICAgICAgIG1lbWJlcnMuYXBwZW5kKHNlbGYuX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyh2YWx1ZSkpCisgICAgICAgIG1lbWJlcnMgPSBsaXN0KG1lbWJlcnMpCisgICAgICAgIHJldHVybiBtZW1iZXJzCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3RoZXIuX3ZhbHVlXyAmIHNlbGYuX3ZhbHVlXyA9PSBvdGhlci5fdmFsdWVfCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYudmFsdWUgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fZGVjb21wb3NlXygpKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBjbHMgPSBzZWxmLl9fY2xhc3NfXworICAgICAgICBpZiBzZWxmLl9uYW1lXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAnPCVzLiVzOiAlcj4nICUgKGNscy5fX25hbWVfXywgc2VsZi5fbmFtZV8sIHNlbGYuX3ZhbHVlXykKKyAgICAgICAgbWVtYmVycyA9IHNlbGYuX2RlY29tcG9zZV8oKQorICAgICAgICByZXR1cm4gJzwlcy4lczogJXI+JyAlICgKKyAgICAgICAgICAgICAgICBjbHMuX19uYW1lX18sCisgICAgICAgICAgICAgICAgJ3wnLmpvaW4oW3N0cihtLl9uYW1lXyBvciBtLl92YWx1ZV8pIGZvciBtIGluIG1lbWJlcnNdKSwKKyAgICAgICAgICAgICAgICBzZWxmLl92YWx1ZV8sCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGlmIHNlbGYuX25hbWVfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuICclcy4lcycgJSAoY2xzLl9fbmFtZV9fLCBzZWxmLl9uYW1lXykKKyAgICAgICAgbWVtYmVycyA9IHNlbGYuX2RlY29tcG9zZV8oKQorICAgICAgICBpZiBsZW4obWVtYmVycykgPT0gMSBhbmQgbWVtYmVyc1swXS5fbmFtZV8gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAnJXMuJXInICUgKGNscy5fX25hbWVfXywgbWVtYmVyc1swXS5fdmFsdWVfKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICclcy4lcycgJSAoCisgICAgICAgICAgICAgICAgICAgIGNscy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgJ3wnLmpvaW4oW3N0cihtLl9uYW1lXyBvciBtLl92YWx1ZV8pIGZvciBtIGluIG1lbWJlcnNdKSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl92YWx1ZV8pCisKKyAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIHwgb3RoZXIuX3ZhbHVlXykKKworICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfICYgb3RoZXIuX3ZhbHVlXykKKworICAgIGRlZiBfX3hvcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIF4gb3RoZXIuX3ZhbHVlXykKKworICAgIGRlZiBfX2ludmVydF9fKHNlbGYpOgorICAgICAgICBtZW1iZXJzID0gc2VsZi5fZGVjb21wb3NlXygpCisgICAgICAgIGludmVydGVkX21lbWJlcnMgPSBbbSBmb3IgbSBpbiBzZWxmLl9fY2xhc3NfXyBpZiBtIG5vdCBpbiBtZW1iZXJzIGFuZCBub3QgbS5fdmFsdWVfICYgc2VsZi5fdmFsdWVfXQorICAgICAgICBpbnZlcnRlZCA9IHJlZHVjZShfb3JfLCBpbnZlcnRlZF9tZW1iZXJzLCBzZWxmLl9fY2xhc3NfXygwKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGludmVydGVkKQorCisKK2NsYXNzIEludEZsYWcoaW50LCBGbGFnKToKKyAgICAiIiJTdXBwb3J0IGZvciBpbnRlZ2VyLWJhc2VkIEZsYWdzIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyhjbHMsIHZhbHVlKToKKyAgICAgICAgcHNldWRvX21lbWJlciA9IGNscy5fdmFsdWUybWVtYmVyX21hcF8uZ2V0KHZhbHVlLCBOb25lKQorICAgICAgICBpZiBwc2V1ZG9fbWVtYmVyIGlzIE5vbmU6CisgICAgICAgICAgICAjIGNvbnN0cnVjdCBhIG5vbi1zaW5nbGV0b24gZW51bSBwc2V1ZG8tbWVtYmVyCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyID0gaW50Ll9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX25hbWVfID0gTm9uZQorICAgICAgICAgICAgcHNldWRvX21lbWJlci5fdmFsdWVfID0gdmFsdWUKKyAgICAgICAgICAgIGNscy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdID0gcHNldWRvX21lbWJlcgorICAgICAgICByZXR1cm4gcHNldWRvX21lbWJlcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9taXNzaW5nXyhjbHMsIHZhbHVlKToKKyAgICAgICAgcG9zc2libGVfbWVtYmVyID0gY2xzLl9jcmVhdGVfcHNldWRvX21lbWJlcl8odmFsdWUpCisgICAgICAgIHJldHVybiBwb3NzaWJsZV9tZW1iZXIKKworICAgIGRlZiBfX29yX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgKHNlbGYuX19jbGFzc19fLCBpbnQpKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIHwgc2VsZi5fX2NsYXNzX18ob3RoZXIpLl92YWx1ZV8pCisKKyAgICBkZWYgX19hbmRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoc2VsZi5fX2NsYXNzX18sIGludCkpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl92YWx1ZV8gJiBzZWxmLl9fY2xhc3NfXyhvdGhlcikuX3ZhbHVlXykKKworICAgIGRlZiBfX3hvcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIChzZWxmLl9fY2xhc3NfXywgaW50KSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyBeIHNlbGYuX19jbGFzc19fKG90aGVyKS5fdmFsdWVfKQorCisgICAgX19yb3JfXyA9IF9fb3JfXworICAgIF9fcmFuZF9fID0gX19hbmRfXworICAgIF9fcnhvcl9fID0gX194b3JfXworCisgICAgZGVmIF9faW52ZXJ0X18oc2VsZik6CisgICAgICAgICMgbWVtYmVycyA9IHNlbGYuX2RlY29tcG9zZV8oKQorICAgICAgICAjIGludmVydGVkX21lbWJlcnMgPSBbbSBmb3IgbSBpbiBzZWxmLl9fY2xhc3NfXyBpZiBtIG5vdCBpbiBtZW1iZXJzIGFuZCBub3QgbS5fdmFsdWVfICYgc2VsZi5fdmFsdWVfXQorICAgICAgICAjIGludmVydGVkID0gcmVkdWNlKF9vcl8sIGludmVydGVkX21lbWJlcnMsIHNlbGYuX19jbGFzc19fKDApKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18ofnNlbGYuX3ZhbHVlXykKKworCisKKworZGVmIF9oaWdoX2JpdCh2YWx1ZSk6CisgICAgIiIicmV0dXJucyBpbmRleCBvZiBoaWdoZXN0IGJpdCwgb3IgLTEgaWYgdmFsdWUgaXMgemVybyBvciBuZWdhdGl2ZSIiIgorICAgIHJldHVybiB2YWx1ZS5iaXRfbGVuZ3RoKCkgLSAxIGlmIHZhbHVlID4gMCBlbHNlIC0xCisKIGRlZiB1bmlxdWUoZW51bWVyYXRpb24pOgogICAgICIiIkNsYXNzIGRlY29yYXRvciBmb3IgZW51bWVyYXRpb25zIGVuc3VyaW5nIHVuaXF1ZSBtZW1iZXIgdmFsdWVzLiIiIgogICAgIGR1cGxpY2F0ZXMgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL2ZpbGVpbnB1dC5weSBiL0xpYi9maWxlaW5wdXQucHkKaW5kZXggZDJiNTIwNi4uNzIxZmU5YyAxMDA2NDQKLS0tIGEvTGliL2ZpbGVpbnB1dC5weQorKysgYi9MaWIvZmlsZWlucHV0LnB5CkBAIC03NSwxMyArNzUsMTEgQEAKIGltcG9ydCBzeXMsIG9zCiAKIF9fYWxsX18gPSBbImlucHV0IiwgImNsb3NlIiwgIm5leHRmaWxlIiwgImZpbGVuYW1lIiwgImxpbmVubyIsICJmaWxlbGluZW5vIiwKLSAgICAgICAgICAgImlzZmlyc3RsaW5lIiwgImlzc3RkaW4iLCAiRmlsZUlucHV0Il0KKyAgICAgICAgICAgImZpbGVubyIsICJpc2ZpcnN0bGluZSIsICJpc3N0ZGluIiwgIkZpbGVJbnB1dCIsICJob29rX2NvbXByZXNzZWQiLAorICAgICAgICAgICAiaG9va19lbmNvZGVkIl0KIAogX3N0YXRlID0gTm9uZQogCi0jIE5vIGxvbmdlciB1c2VkCi1ERUZBVUxUX0JVRlNJWkUgPSA4KjEwMjQKLQogZGVmIGlucHV0KGZpbGVzPU5vbmUsIGlucGxhY2U9RmFsc2UsIGJhY2t1cD0iIiwgYnVmc2l6ZT0wLAogICAgICAgICAgIG1vZGU9InIiLCBvcGVuaG9vaz1Ob25lKToKICAgICAiIiJSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlIEZpbGVJbnB1dCBjbGFzcywgd2hpY2ggY2FuIGJlIGl0ZXJhdGVkLgpAQCAtMjAxLDYgKzE5OSwxMCBAQAogICAgICAgICBzZWxmLl9maWxlcyA9IGZpbGVzCiAgICAgICAgIHNlbGYuX2lucGxhY2UgPSBpbnBsYWNlCiAgICAgICAgIHNlbGYuX2JhY2t1cCA9IGJhY2t1cAorICAgICAgICBpZiBidWZzaXplOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdidWZzaXplIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgc2VsZi5fc2F2ZXN0ZG91dCA9IE5vbmUKICAgICAgICAgc2VsZi5fb3V0cHV0ID0gTm9uZQogICAgICAgICBzZWxmLl9maWxlbmFtZSA9IE5vbmUKQEAgLTM5OCw5ICs0MDAsOSBAQAogICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSkKIAogCi1kZWYgaG9va19lbmNvZGVkKGVuY29kaW5nKToKK2RlZiBob29rX2VuY29kZWQoZW5jb2RpbmcsIGVycm9ycz1Ob25lKToKICAgICBkZWYgb3Blbmhvb2soZmlsZW5hbWUsIG1vZGUpOgotICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgIHJldHVybiBvcGVuKGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKICAgICByZXR1cm4gb3Blbmhvb2sKIAogCmRpZmYgLS1naXQgYS9MaWIvZm5tYXRjaC5weSBiL0xpYi9mbm1hdGNoLnB5CmluZGV4IDYzMzBiMGMuLmZkM2I1MTQgMTAwNjQ0Ci0tLSBhL0xpYi9mbm1hdGNoLnB5CisrKyBiL0xpYi9mbm1hdGNoLnB5CkBAIC0xMDYsNCArMTA2LDQgQEAKICAgICAgICAgICAgICAgICByZXMgPSAnJXNbJXNdJyAlIChyZXMsIHN0dWZmKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzID0gcmVzICsgcmUuZXNjYXBlKGMpCi0gICAgcmV0dXJuIHJlcyArICdcWig/bXMpJworICAgIHJldHVybiByJyg/czolcylcWicgJSByZXMKZGlmZiAtLWdpdCBhL0xpYi9mcmFjdGlvbnMucHkgYi9MaWIvZnJhY3Rpb25zLnB5CmluZGV4IDlhYWJhYjMuLjgzMzAyMDIgMTAwNjQ0Ci0tLSBhL0xpYi9mcmFjdGlvbnMucHkKKysrIGIvTGliL2ZyYWN0aW9ucy5weQpAQCAtODEsNyArODEsNyBAQAogICAgIF9fc2xvdHNfXyA9ICgnX251bWVyYXRvcicsICdfZGVub21pbmF0b3InKQogCiAgICAgIyBXZSdyZSBpbW11dGFibGUsIHNvIHVzZSBfX25ld19fIG5vdCBfX2luaXRfXwotICAgIGRlZiBfX25ld19fKGNscywgbnVtZXJhdG9yPTAsIGRlbm9taW5hdG9yPU5vbmUsIF9ub3JtYWxpemU9VHJ1ZSk6CisgICAgZGVmIF9fbmV3X18oY2xzLCBudW1lcmF0b3I9MCwgZGVub21pbmF0b3I9Tm9uZSwgKiwgX25vcm1hbGl6ZT1UcnVlKToKICAgICAgICAgIiIiQ29uc3RydWN0cyBhIFJhdGlvbmFsLgogCiAgICAgICAgIFRha2VzIGEgc3RyaW5nIGxpa2UgJzMvMicgb3IgJzEuNScsIGFub3RoZXIgUmF0aW9uYWwgaW5zdGFuY2UsIGEKQEAgLTEyNSwxNyArMTI1LDkgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IG51bWVyYXRvci5kZW5vbWluYXRvcgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIGZsb2F0KToKLSAgICAgICAgICAgICAgICAjIEV4YWN0IGNvbnZlcnNpb24gZnJvbSBmbG9hdAotICAgICAgICAgICAgICAgIHZhbHVlID0gRnJhY3Rpb24uZnJvbV9mbG9hdChudW1lcmF0b3IpCi0gICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yID0gdmFsdWUuX251bWVyYXRvcgotICAgICAgICAgICAgICAgIHNlbGYuX2Rlbm9taW5hdG9yID0gdmFsdWUuX2Rlbm9taW5hdG9yCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgRGVjaW1hbCk6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBGcmFjdGlvbi5mcm9tX2RlY2ltYWwobnVtZXJhdG9yKQotICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciA9IHZhbHVlLl9udW1lcmF0b3IKLSAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IHZhbHVlLl9kZW5vbWluYXRvcgorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgKGZsb2F0LCBEZWNpbWFsKSk6CisgICAgICAgICAgICAgICAgIyBFeGFjdCBjb252ZXJzaW9uCisgICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yLCBzZWxmLl9kZW5vbWluYXRvciA9IG51bWVyYXRvci5hc19pbnRlZ2VyX3JhdGlvKCkKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCBzdHIpOgpAQCAtMjEwLDEwICsyMDIsNiBAQAogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGYsIGZsb2F0KToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMuZnJvbV9mbG9hdCgpIG9ubHkgdGFrZXMgZmxvYXRzLCBub3QgJXIgKCVzKSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbHMuX19uYW1lX18sIGYsIHR5cGUoZikuX19uYW1lX18pKQotICAgICAgICBpZiBtYXRoLmlzbmFuKGYpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gJXMuIiAlIChmLCBjbHMuX19uYW1lX18pKQotICAgICAgICBpZiBtYXRoLmlzaW5mKGYpOgotICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gJXMuIiAlIChmLCBjbHMuX19uYW1lX18pKQogICAgICAgICByZXR1cm4gY2xzKCpmLmFzX2ludGVnZXJfcmF0aW8oKSkKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMjI2LDE5ICsyMTQsNyBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICIlcy5mcm9tX2RlY2ltYWwoKSBvbmx5IHRha2VzIERlY2ltYWxzLCBub3QgJXIgKCVzKSIgJQogICAgICAgICAgICAgICAgIChjbHMuX19uYW1lX18sIGRlYywgdHlwZShkZWMpLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgZGVjLmlzX2luZmluaXRlKCk6Ci0gICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKAotICAgICAgICAgICAgICAgICJDYW5ub3QgY29udmVydCAlcyB0byAlcy4iICUgKGRlYywgY2xzLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgZGVjLmlzX25hbigpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXMgdG8gJXMuIiAlIChkZWMsIGNscy5fX25hbWVfXykpCi0gICAgICAgIHNpZ24sIGRpZ2l0cywgZXhwID0gZGVjLmFzX3R1cGxlKCkKLSAgICAgICAgZGlnaXRzID0gaW50KCcnLmpvaW4obWFwKHN0ciwgZGlnaXRzKSkpCi0gICAgICAgIGlmIHNpZ246Ci0gICAgICAgICAgICBkaWdpdHMgPSAtZGlnaXRzCi0gICAgICAgIGlmIGV4cCA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIGNscyhkaWdpdHMgKiAxMCAqKiBleHApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gY2xzKGRpZ2l0cywgMTAgKiogLWV4cCkKKyAgICAgICAgcmV0dXJuIGNscygqZGVjLmFzX2ludGVnZXJfcmF0aW8oKSkKIAogICAgIGRlZiBsaW1pdF9kZW5vbWluYXRvcihzZWxmLCBtYXhfZGVub21pbmF0b3I9MTAwMDAwMCk6CiAgICAgICAgICIiIkNsb3Nlc3QgRnJhY3Rpb24gdG8gc2VsZiB3aXRoIGRlbm9taW5hdG9yIGF0IG1vc3QgbWF4X2Rlbm9taW5hdG9yLgpkaWZmIC0tZ2l0IGEvTGliL2Z0cGxpYi5weSBiL0xpYi9mdHBsaWIucHkKaW5kZXggYzQxNmQ4NS4uOGYzNmY1MyAxMDA2NDQKLS0tIGEvTGliL2Z0cGxpYi5weQorKysgYi9MaWIvZnRwbGliLnB5CkBAIC0zNiwxMyArMzYsMTIgQEAKICMgTW9kaWZpZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgdG8gYWRkIFRMUyBzdXBwb3J0LgogIwogCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBzb2NrZXQKLWltcG9ydCB3YXJuaW5ncwogZnJvbSBzb2NrZXQgaW1wb3J0IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUCiAKLV9fYWxsX18gPSBbIkZUUCJdCitfX2FsbF9fID0gWyJGVFAiLCAiZXJyb3JfcmVwbHkiLCAiZXJyb3JfdGVtcCIsICJlcnJvcl9wZXJtIiwgImVycm9yX3Byb3RvIiwKKyAgICAgICAgICAgImFsbF9lcnJvcnMiXQogCiAjIE1hZ2ljIG51bWJlciBmcm9tIDxzb2NrZXQuaD4KIE1TR19PT0IgPSAweDEgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFByb2Nlc3MgZGF0YSBvdXQgb2YgYmFuZApAQCAtNzI5LDYgKzcyOCwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKQEAgLTgyMiw3ICs4MjUsNyBAQAogICAgIGlmIF8xNTBfcmUgaXMgTm9uZToKICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIF8xNTBfcmUgPSByZS5jb21waWxlKAotICAgICAgICAgICAgIjE1MCAuKiBcKChcZCspIGJ5dGVzXCkiLCByZS5JR05PUkVDQVNFIHwgcmUuQVNDSUkpCisgICAgICAgICAgICByIjE1MCAuKiBcKChcZCspIGJ5dGVzXCkiLCByZS5JR05PUkVDQVNFIHwgcmUuQVNDSUkpCiAgICAgbSA9IF8xNTBfcmUubWF0Y2gocmVzcCkKICAgICBpZiBub3QgbToKICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9mdW5jdG9vbHMucHkgYi9MaWIvZnVuY3Rvb2xzLnB5CmluZGV4IDIxNDUyM2MuLjk4NDVkZjIgMTAwNjQ0Ci0tLSBhL0xpYi9mdW5jdG9vbHMucHkKKysrIGIvTGliL2Z1bmN0b29scy5weQpAQCAtMjEsNiArMjEsNyBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSB0eXBlcyBpbXBvcnQgTWFwcGluZ1Byb3h5VHlwZQogZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrS2V5RGljdGlvbmFyeQorZnJvbSByZXBybGliIGltcG9ydCByZWN1cnNpdmVfcmVwcgogdHJ5OgogICAgIGZyb20gX3RocmVhZCBpbXBvcnQgUkxvY2sKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTIzNywyNiArMjM4LDgzIEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIFB1cmVseSBmdW5jdGlvbmFsLCBubyBkZXNjcmlwdG9yIGJlaGF2aW91cgotZGVmIHBhcnRpYWwoZnVuYywgKmFyZ3MsICoqa2V5d29yZHMpOgorY2xhc3MgcGFydGlhbDoKICAgICAiIiJOZXcgZnVuY3Rpb24gd2l0aCBwYXJ0aWFsIGFwcGxpY2F0aW9uIG9mIHRoZSBnaXZlbiBhcmd1bWVudHMKICAgICBhbmQga2V5d29yZHMuCiAgICAgIiIiCi0gICAgaWYgaGFzYXR0cihmdW5jLCAnZnVuYycpOgotICAgICAgICBhcmdzID0gZnVuYy5hcmdzICsgYXJncwotICAgICAgICB0bXBrdyA9IGZ1bmMua2V5d29yZHMuY29weSgpCi0gICAgICAgIHRtcGt3LnVwZGF0ZShrZXl3b3JkcykKLSAgICAgICAga2V5d29yZHMgPSB0bXBrdwotICAgICAgICBkZWwgdG1wa3cKLSAgICAgICAgZnVuYyA9IGZ1bmMuZnVuYwogCi0gICAgZGVmIG5ld2Z1bmMoKmZhcmdzLCAqKmZrZXl3b3Jkcyk6Ci0gICAgICAgIG5ld2tleXdvcmRzID0ga2V5d29yZHMuY29weSgpCi0gICAgICAgIG5ld2tleXdvcmRzLnVwZGF0ZShma2V5d29yZHMpCi0gICAgICAgIHJldHVybiBmdW5jKCooYXJncyArIGZhcmdzKSwgKipuZXdrZXl3b3JkcykKLSAgICBuZXdmdW5jLmZ1bmMgPSBmdW5jCi0gICAgbmV3ZnVuYy5hcmdzID0gYXJncwotICAgIG5ld2Z1bmMua2V5d29yZHMgPSBrZXl3b3JkcwotICAgIHJldHVybiBuZXdmdW5jCisgICAgX19zbG90c19fID0gImZ1bmMiLCAiYXJncyIsICJrZXl3b3JkcyIsICJfX2RpY3RfXyIsICJfX3dlYWtyZWZfXyIKKworICAgIGRlZiBfX25ld19fKCphcmdzLCAqKmtleXdvcmRzKToKKyAgICAgICAgaWYgbm90IGFyZ3M6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRlc2NyaXB0b3IgJ19fbmV3X18nIG9mIHBhcnRpYWwgbmVlZHMgYW4gYXJndW1lbnQiKQorICAgICAgICBpZiBsZW4oYXJncykgPCAyOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0eXBlICdwYXJ0aWFsJyB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKQorICAgICAgICBjbHMsIGZ1bmMsICphcmdzID0gYXJncworICAgICAgICBpZiBub3QgY2FsbGFibGUoZnVuYyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIikKKyAgICAgICAgYXJncyA9IHR1cGxlKGFyZ3MpCisKKyAgICAgICAgaWYgaGFzYXR0cihmdW5jLCAiZnVuYyIpOgorICAgICAgICAgICAgYXJncyA9IGZ1bmMuYXJncyArIGFyZ3MKKyAgICAgICAgICAgIHRtcGt3ID0gZnVuYy5rZXl3b3Jkcy5jb3B5KCkKKyAgICAgICAgICAgIHRtcGt3LnVwZGF0ZShrZXl3b3JkcykKKyAgICAgICAgICAgIGtleXdvcmRzID0gdG1wa3cKKyAgICAgICAgICAgIGRlbCB0bXBrdworICAgICAgICAgICAgZnVuYyA9IGZ1bmMuZnVuYworCisgICAgICAgIHNlbGYgPSBzdXBlcihwYXJ0aWFsLCBjbHMpLl9fbmV3X18oY2xzKQorCisgICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLmtleXdvcmRzID0ga2V5d29yZHMKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2NhbGxfXygqYXJncywgKiprZXl3b3Jkcyk6CisgICAgICAgIGlmIG5vdCBhcmdzOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkZXNjcmlwdG9yICdfX2NhbGxfXycgb2YgcGFydGlhbCBuZWVkcyBhbiBhcmd1bWVudCIpCisgICAgICAgIHNlbGYsICphcmdzID0gYXJncworICAgICAgICBuZXdrZXl3b3JkcyA9IHNlbGYua2V5d29yZHMuY29weSgpCisgICAgICAgIG5ld2tleXdvcmRzLnVwZGF0ZShrZXl3b3JkcykKKyAgICAgICAgcmV0dXJuIHNlbGYuZnVuYygqc2VsZi5hcmdzLCAqYXJncywgKipuZXdrZXl3b3JkcykKKworICAgIEByZWN1cnNpdmVfcmVwcigpCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBxdWFsbmFtZSA9IHR5cGUoc2VsZikuX19xdWFsbmFtZV9fCisgICAgICAgIGFyZ3MgPSBbcmVwcihzZWxmLmZ1bmMpXQorICAgICAgICBhcmdzLmV4dGVuZChyZXByKHgpIGZvciB4IGluIHNlbGYuYXJncykKKyAgICAgICAgYXJncy5leHRlbmQoZiJ7a309e3Yhcn0iIGZvciAoaywgdikgaW4gc2VsZi5rZXl3b3Jkcy5pdGVtcygpKQorICAgICAgICBpZiB0eXBlKHNlbGYpLl9fbW9kdWxlX18gPT0gImZ1bmN0b29scyI6CisgICAgICAgICAgICByZXR1cm4gZiJmdW5jdG9vbHMue3F1YWxuYW1lfSh7JywgJy5qb2luKGFyZ3MpfSkiCisgICAgICAgIHJldHVybiBmIntxdWFsbmFtZX0oeycsICcuam9pbihhcmdzKX0pIgorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpLCAoc2VsZi5mdW5jLCksIChzZWxmLmZ1bmMsIHNlbGYuYXJncywKKyAgICAgICAgICAgICAgIHNlbGYua2V5d29yZHMgb3IgTm9uZSwgc2VsZi5fX2RpY3RfXyBvciBOb25lKQorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN0YXRlLCB0dXBsZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IHRvIF9fc2V0c3RhdGVfXyBtdXN0IGJlIGEgdHVwbGUiKQorICAgICAgICBpZiBsZW4oc3RhdGUpICE9IDQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJleHBlY3RlZCA0IGl0ZW1zIGluIHN0YXRlLCBnb3Qge2xlbihzdGF0ZSl9IikKKyAgICAgICAgZnVuYywgYXJncywga3dkcywgbmFtZXNwYWNlID0gc3RhdGUKKyAgICAgICAgaWYgKG5vdCBjYWxsYWJsZShmdW5jKSBvciBub3QgaXNpbnN0YW5jZShhcmdzLCB0dXBsZSkgb3IKKyAgICAgICAgICAgKGt3ZHMgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGt3ZHMsIGRpY3QpKSBvcgorICAgICAgICAgICAobmFtZXNwYWNlIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuYW1lc3BhY2UsIGRpY3QpKSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgcGFydGlhbCBzdGF0ZSIpCisKKyAgICAgICAgYXJncyA9IHR1cGxlKGFyZ3MpICMganVzdCBpbiBjYXNlIGl0J3MgYSBzdWJjbGFzcworICAgICAgICBpZiBrd2RzIGlzIE5vbmU6CisgICAgICAgICAgICBrd2RzID0ge30KKyAgICAgICAgZWxpZiB0eXBlKGt3ZHMpIGlzIG5vdCBkaWN0OiAjIFhYWCBkb2VzIGl0IG5lZWQgdG8gYmUgKmV4YWN0bHkqIGRpY3Q/CisgICAgICAgICAgICBrd2RzID0gZGljdChrd2RzKQorICAgICAgICBpZiBuYW1lc3BhY2UgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWVzcGFjZSA9IHt9CisKKyAgICAgICAgc2VsZi5fX2RpY3RfXyA9IG5hbWVzcGFjZQorICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGt3ZHMKIAogdHJ5OgogICAgIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgcGFydGlhbApkaWZmIC0tZ2l0IGEvTGliL2dlbmVyaWNwYXRoLnB5IGIvTGliL2dlbmVyaWNwYXRoLnB5CmluZGV4IDY3MTQwNjEuLjMwM2IzYjMgMTAwNjQ0Ci0tLSBhL0xpYi9nZW5lcmljcGF0aC5weQorKysgYi9MaWIvZ2VuZXJpY3BhdGgucHkKQEAgLTY5LDYgKzY5LDEyIEBACiBkZWYgY29tbW9ucHJlZml4KG0pOgogICAgICJHaXZlbiBhIGxpc3Qgb2YgcGF0aG5hbWVzLCByZXR1cm5zIHRoZSBsb25nZXN0IGNvbW1vbiBsZWFkaW5nIGNvbXBvbmVudCIKICAgICBpZiBub3QgbTogcmV0dXJuICcnCisgICAgIyBTb21lIHBlb3BsZSBwYXNzIGluIGEgbGlzdCBvZiBwYXRobmFtZSBwYXJ0cyB0byBvcGVyYXRlIGluIGFuIE9TLWFnbm9zdGljCisgICAgIyBmYXNoaW9uOyBkb24ndCB0cnkgdG8gdHJhbnNsYXRlIGluIHRoYXQgY2FzZSBhcyB0aGF0J3MgYW4gYWJ1c2Ugb2YgdGhlCisgICAgIyBBUEkgYW5kIHRoZXkgYXJlIGFscmVhZHkgZG9pbmcgd2hhdCB0aGV5IG5lZWQgdG8gYmUgT1MtYWdub3N0aWMgYW5kIHNvCisgICAgIyB0aGV5IG1vc3QgbGlrZWx5IHdvbid0IGJlIHVzaW5nIGFuIG9zLlBhdGhMaWtlIG9iamVjdCBpbiB0aGUgc3VibGlzdHMuCisgICAgaWYgbm90IGlzaW5zdGFuY2UobVswXSwgKGxpc3QsIHR1cGxlKSk6CisgICAgICAgIG0gPSB0dXBsZShtYXAob3MuZnNwYXRoLCBtKSkKICAgICBzMSA9IG1pbihtKQogICAgIHMyID0gbWF4KG0pCiAgICAgZm9yIGksIGMgaW4gZW51bWVyYXRlKHMxKToKZGlmZiAtLWdpdCBhL0xpYi9nbG9iLnB5IGIvTGliL2dsb2IucHkKaW5kZXggMTYzMzBkOC4uN2MzY2NjYiAxMDA2NDQKLS0tIGEvTGliL2dsb2IucHkKKysrIGIvTGliL2dsb2IucHkKQEAgLTMwLDE1ICszMCwxNiBAQAogICAgIElmIHJlY3Vyc2l2ZSBpcyB0cnVlLCB0aGUgcGF0dGVybiAnKionIHdpbGwgbWF0Y2ggYW55IGZpbGVzIGFuZAogICAgIHplcm8gb3IgbW9yZSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMuCiAgICAgIiIiCi0gICAgaXQgPSBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSkKKyAgICBpdCA9IF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlLCBGYWxzZSkKICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShwYXRobmFtZSk6CiAgICAgICAgIHMgPSBuZXh0KGl0KSAgIyBza2lwIGVtcHR5IHN0cmluZwogICAgICAgICBhc3NlcnQgbm90IHMKICAgICByZXR1cm4gaXQKIAotZGVmIF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlKToKK2RlZiBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSwgZGlyb25seSk6CiAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgIGlmIG5vdCBoYXNfbWFnaWMocGF0aG5hbWUpOgorICAgICAgICBhc3NlcnQgbm90IGRpcm9ubHkKICAgICAgICAgaWYgYmFzZW5hbWU6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHMocGF0aG5hbWUpOgogICAgICAgICAgICAgICAgIHlpZWxkIHBhdGhuYW1lCkBAIC00OSw0NyArNTAsMzkgQEAKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbm90IGRpcm5hbWU6CiAgICAgICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKGJhc2VuYW1lKToKLSAgICAgICAgICAgIHlpZWxkIGZyb20gZ2xvYjIoZGlybmFtZSwgYmFzZW5hbWUpCisgICAgICAgICAgICB5aWVsZCBmcm9tIF9nbG9iMihkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHlpZWxkIGZyb20gZ2xvYjEoZGlybmFtZSwgYmFzZW5hbWUpCisgICAgICAgICAgICB5aWVsZCBmcm9tIF9nbG9iMShkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSkKICAgICAgICAgcmV0dXJuCiAgICAgIyBgb3MucGF0aC5zcGxpdCgpYCByZXR1cm5zIHRoZSBhcmd1bWVudCBpdHNlbGYgYXMgYSBkaXJuYW1lIGlmIGl0IGlzIGEKICAgICAjIGRyaXZlIG9yIFVOQyBwYXRoLiAgUHJldmVudCBhbiBpbmZpbml0ZSByZWN1cnNpb24gaWYgYSBkcml2ZSBvciBVTkMgcGF0aAogICAgICMgY29udGFpbnMgbWFnaWMgY2hhcmFjdGVycyAoaS5lLiByJ1xcP1xDOicpLgogICAgIGlmIGRpcm5hbWUgIT0gcGF0aG5hbWUgYW5kIGhhc19tYWdpYyhkaXJuYW1lKToKLSAgICAgICAgZGlycyA9IF9pZ2xvYihkaXJuYW1lLCByZWN1cnNpdmUpCisgICAgICAgIGRpcnMgPSBfaWdsb2IoZGlybmFtZSwgcmVjdXJzaXZlLCBUcnVlKQogICAgIGVsc2U6CiAgICAgICAgIGRpcnMgPSBbZGlybmFtZV0KICAgICBpZiBoYXNfbWFnaWMoYmFzZW5hbWUpOgogICAgICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShiYXNlbmFtZSk6Ci0gICAgICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IyCisgICAgICAgICAgICBnbG9iX2luX2RpciA9IF9nbG9iMgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMQorICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBfZ2xvYjEKICAgICBlbHNlOgotICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IwCisgICAgICAgIGdsb2JfaW5fZGlyID0gX2dsb2IwCiAgICAgZm9yIGRpcm5hbWUgaW4gZGlyczoKLSAgICAgICAgZm9yIG5hbWUgaW4gZ2xvYl9pbl9kaXIoZGlybmFtZSwgYmFzZW5hbWUpOgorICAgICAgICBmb3IgbmFtZSBpbiBnbG9iX2luX2RpcihkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSk6CiAgICAgICAgICAgICB5aWVsZCBvcy5wYXRoLmpvaW4oZGlybmFtZSwgbmFtZSkKIAogIyBUaGVzZSAyIGhlbHBlciBmdW5jdGlvbnMgbm9uLXJlY3Vyc2l2ZWx5IGdsb2IgaW5zaWRlIGEgbGl0ZXJhbCBkaXJlY3RvcnkuCi0jIFRoZXkgcmV0dXJuIGEgbGlzdCBvZiBiYXNlbmFtZXMuIGBnbG9iMWAgYWNjZXB0cyBhIHBhdHRlcm4gd2hpbGUgYGdsb2IwYAorIyBUaGV5IHJldHVybiBhIGxpc3Qgb2YgYmFzZW5hbWVzLiAgX2dsb2IxIGFjY2VwdHMgYSBwYXR0ZXJuIHdoaWxlIF9nbG9iMAogIyB0YWtlcyBhIGxpdGVyYWwgYmFzZW5hbWUgKHNvIGl0IG9ubHkgaGFzIHRvIGNoZWNrIGZvciBpdHMgZXhpc3RlbmNlKS4KIAotZGVmIGdsb2IxKGRpcm5hbWUsIHBhdHRlcm4pOgotICAgIGlmIG5vdCBkaXJuYW1lOgotICAgICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIGJ5dGVzKToKLSAgICAgICAgICAgIGRpcm5hbWUgPSBieXRlcyhvcy5jdXJkaXIsICdBU0NJSScpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkaXJuYW1lID0gb3MuY3VyZGlyCi0gICAgdHJ5OgotICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlybmFtZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmV0dXJuIFtdCitkZWYgX2dsb2IxKGRpcm5hbWUsIHBhdHRlcm4sIGRpcm9ubHkpOgorICAgIG5hbWVzID0gbGlzdChfaXRlcmRpcihkaXJuYW1lLCBkaXJvbmx5KSkKICAgICBpZiBub3QgX2lzaGlkZGVuKHBhdHRlcm4pOgotICAgICAgICBuYW1lcyA9IFt4IGZvciB4IGluIG5hbWVzIGlmIG5vdCBfaXNoaWRkZW4oeCldCisgICAgICAgIG5hbWVzID0gKHggZm9yIHggaW4gbmFtZXMgaWYgbm90IF9pc2hpZGRlbih4KSkKICAgICByZXR1cm4gZm5tYXRjaC5maWx0ZXIobmFtZXMsIHBhdHRlcm4pCiAKLWRlZiBnbG9iMChkaXJuYW1lLCBiYXNlbmFtZSk6CitkZWYgX2dsb2IwKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJvbmx5KToKICAgICBpZiBub3QgYmFzZW5hbWU6CiAgICAgICAgICMgYG9zLnBhdGguc3BsaXQoKWAgcmV0dXJucyBhbiBlbXB0eSBiYXNlbmFtZSBmb3IgcGF0aHMgZW5kaW5nIHdpdGggYQogICAgICAgICAjIGRpcmVjdG9yeSBzZXBhcmF0b3IuICAncSp4Lycgc2hvdWxkIG1hdGNoIG9ubHkgZGlyZWN0b3JpZXMuCkBAIC0xMDAsMzAgKzkzLDU4IEBACiAgICAgICAgICAgICByZXR1cm4gW2Jhc2VuYW1lXQogICAgIHJldHVybiBbXQogCisjIEZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBwdWJsaWMgYnV0IGNhbiBiZSB1c2VkIGJ5IHRoaXJkLXBhcnR5IGNvZGUuCisKK2RlZiBnbG9iMChkaXJuYW1lLCBwYXR0ZXJuKToKKyAgICByZXR1cm4gX2dsb2IwKGRpcm5hbWUsIHBhdHRlcm4sIEZhbHNlKQorCitkZWYgZ2xvYjEoZGlybmFtZSwgcGF0dGVybik6CisgICAgcmV0dXJuIF9nbG9iMShkaXJuYW1lLCBwYXR0ZXJuLCBGYWxzZSkKKwogIyBUaGlzIGhlbHBlciBmdW5jdGlvbiByZWN1cnNpdmVseSB5aWVsZHMgcmVsYXRpdmUgcGF0aG5hbWVzIGluc2lkZSBhIGxpdGVyYWwKICMgZGlyZWN0b3J5LgogCi1kZWYgZ2xvYjIoZGlybmFtZSwgcGF0dGVybik6CitkZWYgX2dsb2IyKGRpcm5hbWUsIHBhdHRlcm4sIGRpcm9ubHkpOgogICAgIGFzc2VydCBfaXNyZWN1cnNpdmUocGF0dGVybikKICAgICB5aWVsZCBwYXR0ZXJuWzowXQotICAgIHlpZWxkIGZyb20gX3JsaXN0ZGlyKGRpcm5hbWUpCisgICAgeWllbGQgZnJvbSBfcmxpc3RkaXIoZGlybmFtZSwgZGlyb25seSkKIAotIyBSZWN1cnNpdmVseSB5aWVsZHMgcmVsYXRpdmUgcGF0aG5hbWVzIGluc2lkZSBhIGxpdGVyYWwgZGlyZWN0b3J5LgotZGVmIF9ybGlzdGRpcihkaXJuYW1lKToKKyMgSWYgZGlyb25seSBpcyBmYWxzZSwgeWllbGRzIGFsbCBmaWxlIG5hbWVzIGluc2lkZSBhIGRpcmVjdG9yeS4KKyMgSWYgZGlyb25seSBpcyB0cnVlLCB5aWVsZHMgb25seSBkaXJlY3RvcnkgbmFtZXMuCitkZWYgX2l0ZXJkaXIoZGlybmFtZSwgZGlyb25seSk6CiAgICAgaWYgbm90IGRpcm5hbWU6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlybmFtZSwgYnl0ZXMpOgogICAgICAgICAgICAgZGlybmFtZSA9IGJ5dGVzKG9zLmN1cmRpciwgJ0FTQ0lJJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5jdXJkaXIKICAgICB0cnk6Ci0gICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnIGFuZCBpc2luc3RhbmNlKGRpcm5hbWUsIGJ5dGVzKToKKyAgICAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQorICAgICAgICAgICAgaWYgZGlyb25seToKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oZGlybmFtZSwgbmFtZSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIG5hbWVzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIG9zLnNjYW5kaXIoZGlybmFtZSkgYXMgaXQ6CisgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGl0OgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGlyb25seSBvciBlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbnRyeS5uYW1lCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4KKworIyBSZWN1cnNpdmVseSB5aWVsZHMgcmVsYXRpdmUgcGF0aG5hbWVzIGluc2lkZSBhIGxpdGVyYWwgZGlyZWN0b3J5LgorZGVmIF9ybGlzdGRpcihkaXJuYW1lLCBkaXJvbmx5KToKKyAgICBuYW1lcyA9IGxpc3QoX2l0ZXJkaXIoZGlybmFtZSwgZGlyb25seSkpCiAgICAgZm9yIHggaW4gbmFtZXM6CiAgICAgICAgIGlmIG5vdCBfaXNoaWRkZW4oeCk6CiAgICAgICAgICAgICB5aWVsZCB4CiAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIHgpIGlmIGRpcm5hbWUgZWxzZSB4Ci0gICAgICAgICAgICBmb3IgeSBpbiBfcmxpc3RkaXIocGF0aCk6CisgICAgICAgICAgICBmb3IgeSBpbiBfcmxpc3RkaXIocGF0aCwgZGlyb25seSk6CiAgICAgICAgICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKHgsIHkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2d6aXAucHkgYi9MaWIvZ3ppcC5weQppbmRleCBkYTQ0NzllLi5kZGY3NjY4IDEwMDY0NAotLS0gYS9MaWIvZ3ppcC5weQorKysgYi9MaWIvZ3ppcC5weQpAQCAtMzU3LDEwICszNTcsMTAgQEAKICAgICAgICAgICAgIGlmIG9mZnNldCA8IHNlbGYub2Zmc2V0OgogICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05lZ2F0aXZlIHNlZWsgaW4gd3JpdGUgbW9kZScpCiAgICAgICAgICAgICBjb3VudCA9IG9mZnNldCAtIHNlbGYub2Zmc2V0Ci0gICAgICAgICAgICBjaHVuayA9IGJ5dGVzKDEwMjQpCisgICAgICAgICAgICBjaHVuayA9IGInXDAnICogMTAyNAogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQgLy8gMTAyNCk6CiAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShjaHVuaykKLSAgICAgICAgICAgIHNlbGYud3JpdGUoYnl0ZXMoY291bnQgJSAxMDI0KSkKKyAgICAgICAgICAgIHNlbGYud3JpdGUoYidcMCcgKiAoY291bnQgJSAxMDI0KSkKICAgICAgICAgZWxpZiBzZWxmLm1vZGUgPT0gUkVBRDoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5zZWVrKG9mZnNldCwgd2hlbmNlKQpkaWZmIC0tZ2l0IGEvTGliL2hhc2hsaWIucHkgYi9MaWIvaGFzaGxpYi5weQppbmRleCAzMTZjZWNlLi4wNTNhN2FkIDEwMDY0NAotLS0gYS9MaWIvaGFzaGxpYi5weQorKysgYi9MaWIvaGFzaGxpYi5weQpAQCAtNCwxNCArNCwxNSBAQAogCiBfX2RvY19fID0gIiIiaGFzaGxpYiBtb2R1bGUgLSBBIGNvbW1vbiBpbnRlcmZhY2UgdG8gbWFueSBoYXNoIGZ1bmN0aW9ucy4KIAotbmV3KG5hbWUsIGRhdGE9YicnKSAtIHJldHVybnMgYSBuZXcgaGFzaCBvYmplY3QgaW1wbGVtZW50aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGhhc2ggZnVuY3Rpb247IGluaXRpYWxpemluZyB0aGUgaGFzaAotICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBnaXZlbiBiaW5hcnkgZGF0YS4KK25ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpIC0gcmV0dXJucyBhIG5ldyBoYXNoIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGhhc2ggZnVuY3Rpb247IGluaXRpYWxpemluZyB0aGUgaGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZ2l2ZW4gYmluYXJ5IGRhdGEuCiAKIE5hbWVkIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyBhcmUgYWxzbyBhdmFpbGFibGUsIHRoZXNlIGFyZSBmYXN0ZXIKIHRoYW4gdXNpbmcgbmV3KG5hbWUpOgogCi1tZDUoKSwgc2hhMSgpLCBzaGEyMjQoKSwgc2hhMjU2KCksIHNoYTM4NCgpLCBhbmQgc2hhNTEyKCkKK21kNSgpLCBzaGExKCksIHNoYTIyNCgpLCBzaGEyNTYoKSwgc2hhMzg0KCksIHNoYTUxMigpLCBibGFrZTJiKCksIGJsYWtlMnMoKSwKK3NoYTNfMjI0LCBzaGEzXzI1Niwgc2hhM18zODQsIHNoYTNfNTEyLCBzaGFrZV8xMjgsIGFuZCBzaGFrZV8yNTYuCiAKIE1vcmUgYWxnb3JpdGhtcyBtYXkgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0gYnV0IHRoZSBhYm92ZSBhcmUgZ3VhcmFudGVlZAogdG8gZXhpc3QuICBTZWUgdGhlIGFsZ29yaXRobXNfZ3VhcmFudGVlZCBhbmQgYWxnb3JpdGhtc19hdmFpbGFibGUgYXR0cmlidXRlcwpAQCAtNTQsNyArNTUsMTEgQEAKIAogIyBUaGlzIHR1cGxlIGFuZCBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKCkgbXVzdCBiZSBtb2RpZmllZCBpZiBhIG5ldwogIyBhbHdheXMgYXZhaWxhYmxlIGFsZ29yaXRobSBpcyBhZGRlZC4KLV9fYWx3YXlzX3N1cHBvcnRlZCA9ICgnbWQ1JywgJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJykKK19fYWx3YXlzX3N1cHBvcnRlZCA9ICgnbWQ1JywgJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAnYmxha2UyYicsICdibGFrZTJzJywKKyAgICAgICAgICAgICAgICAgICAgICAnc2hhM18yMjQnLCAnc2hhM18yNTYnLCAnc2hhM18zODQnLCAnc2hhM181MTInLAorICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2JykKKwogCiBhbGdvcml0aG1zX2d1YXJhbnRlZWQgPSBzZXQoX19hbHdheXNfc3VwcG9ydGVkKQogYWxnb3JpdGhtc19hdmFpbGFibGUgPSBzZXQoX19hbHdheXNfc3VwcG9ydGVkKQpAQCAtODUsNiArOTAsMTkgQEAKICAgICAgICAgICAgIGltcG9ydCBfc2hhNTEyCiAgICAgICAgICAgICBjYWNoZVsnU0hBMzg0J10gPSBjYWNoZVsnc2hhMzg0J10gPSBfc2hhNTEyLnNoYTM4NAogICAgICAgICAgICAgY2FjaGVbJ1NIQTUxMiddID0gY2FjaGVbJ3NoYTUxMiddID0gX3NoYTUxMi5zaGE1MTIKKyAgICAgICAgZWxpZiBuYW1lIGluICgnYmxha2UyYicsICdibGFrZTJzJyk6CisgICAgICAgICAgICBpbXBvcnQgX2JsYWtlMgorICAgICAgICAgICAgY2FjaGVbJ2JsYWtlMmInXSA9IF9ibGFrZTIuYmxha2UyYgorICAgICAgICAgICAgY2FjaGVbJ2JsYWtlMnMnXSA9IF9ibGFrZTIuYmxha2UycworICAgICAgICBlbGlmIG5hbWUgaW4geydzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgJ3NoYWtlXzEyOCcsICdzaGFrZV8yNTYnfToKKyAgICAgICAgICAgIGltcG9ydCBfc2hhMworICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMjI0J10gPSBfc2hhMy5zaGEzXzIyNAorICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMjU2J10gPSBfc2hhMy5zaGEzXzI1NgorICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMzg0J10gPSBfc2hhMy5zaGEzXzM4NAorICAgICAgICAgICAgY2FjaGVbJ3NoYTNfNTEyJ10gPSBfc2hhMy5zaGEzXzUxMgorICAgICAgICAgICAgY2FjaGVbJ3NoYWtlXzEyOCddID0gX3NoYTMuc2hha2VfMTI4CisgICAgICAgICAgICBjYWNoZVsnc2hha2VfMjU2J10gPSBfc2hhMy5zaGFrZV8yNTYKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MgICMgbm8gZXh0ZW5zaW9uIG1vZHVsZSwgdGhpcyBoYXNoIGlzIHVuc3VwcG9ydGVkLgogCkBAIC05Niw2ICsxMTQsOSBAQAogCiAKIGRlZiBfX2dldF9vcGVuc3NsX2NvbnN0cnVjdG9yKG5hbWUpOgorICAgIGlmIG5hbWUgaW4geydibGFrZTJiJywgJ2JsYWtlMnMnfToKKyAgICAgICAgIyBQcmVmZXIgb3VyIGJsYWtlMiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkKICAgICB0cnk6CiAgICAgICAgIGYgPSBnZXRhdHRyKF9oYXNobGliLCAnb3BlbnNzbF8nICsgbmFtZSkKICAgICAgICAgIyBBbGxvdyB0aGUgQyBtb2R1bGUgdG8gcmFpc2UgVmFsdWVFcnJvci4gIFRoZSBmdW5jdGlvbiB3aWxsIGJlCkBAIC0xMDcsMTcgKzEyOCwyMyBAQAogICAgICAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKQogCiAKLWRlZiBfX3B5X25ldyhuYW1lLCBkYXRhPWInJyk6CitkZWYgX19weV9uZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKToKKyAgICAiIiJuZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKSAtIFJldHVybiBhIG5ldyBoYXNoaW5nIG9iamVjdCB1c2luZyB0aGUKKyAgICBuYW1lZCBhbGdvcml0aG07IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBkYXRhICh3aGljaCBtdXN0IGJlIGJ5dGVzKS4KKyAgICAiIiIKKyAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKShkYXRhLCAqKmt3YXJncykKKworCitkZWYgX19oYXNoX25ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpOgogICAgICIiIm5ldyhuYW1lLCBkYXRhPWInJykgLSBSZXR1cm4gYSBuZXcgaGFzaGluZyBvYmplY3QgdXNpbmcgdGhlIG5hbWVkIGFsZ29yaXRobTsKICAgICBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggZGF0YSAod2hpY2ggbXVzdCBiZSBieXRlcykuCiAgICAgIiIiCi0gICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkoZGF0YSkKLQotCi1kZWYgX19oYXNoX25ldyhuYW1lLCBkYXRhPWInJyk6Ci0gICAgIiIibmV3KG5hbWUsIGRhdGE9YicnKSAtIFJldHVybiBhIG5ldyBoYXNoaW5nIG9iamVjdCB1c2luZyB0aGUgbmFtZWQgYWxnb3JpdGhtOwotICAgIG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBkYXRhICh3aGljaCBtdXN0IGJlIGJ5dGVzKS4KLSAgICAiIiIKKyAgICBpZiBuYW1lIGluIHsnYmxha2UyYicsICdibGFrZTJzJ306CisgICAgICAgICMgUHJlZmVyIG91ciBibGFrZTIgaW1wbGVtZW50YXRpb24uCisgICAgICAgICMgT3BlblNTTCAxLjEuMCBjb21lcyB3aXRoIGEgbGltaXRlZCBpbXBsZW1lbnRhdGlvbiBvZiBibGFrZTJiL3MuCisgICAgICAgICMgSXQgZG9lcyBuZWl0aGVyIHN1cHBvcnQga2V5ZWQgYmxha2UyIG5vciBhZHZhbmNlZCBmZWF0dXJlcyBsaWtlCisgICAgICAgICMgc2FsdCwgcGVyc29uYWwsIHRyZWUgaGFzaGluZyBvciBTU0UuCisgICAgICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEsICoqa3dhcmdzKQogICAgIHRyeToKICAgICAgICAgcmV0dXJuIF9oYXNobGliLm5ldyhuYW1lLCBkYXRhKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtMjAyLDYgKzIyOSwxMiBAQAogCiAgICAgICAgIHJldHVybiBka2V5Wzpka2xlbl0KIAordHJ5OgorICAgICMgT3BlblNTTCdzIHNjcnlwdCByZXF1aXJlcyBPcGVuU1NMIDEuMSsKKyAgICBmcm9tIF9oYXNobGliIGltcG9ydCBzY3J5cHQKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKIAogZm9yIF9fZnVuY19uYW1lIGluIF9fYWx3YXlzX3N1cHBvcnRlZDoKICAgICAjIHRyeSB0aGVtIGFsbCwgc29tZSBtYXkgbm90IHdvcmsgZHVlIHRvIHRoZSBPcGVuU1NMCkBAIC0yMTIsNiArMjQ1LDcgQEAKICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKICAgICAgICAgbG9nZ2luZy5leGNlcHRpb24oJ2NvZGUgZm9yIGhhc2ggJXMgd2FzIG5vdCBmb3VuZC4nLCBfX2Z1bmNfbmFtZSkKIAorCiAjIENsZWFudXAgbG9jYWxzKCkKIGRlbCBfX2Fsd2F5c19zdXBwb3J0ZWQsIF9fZnVuY19uYW1lLCBfX2dldF9oYXNoCiBkZWwgX19weV9uZXcsIF9faGFzaF9uZXcsIF9fZ2V0X29wZW5zc2xfY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL0xpYi9obWFjLnB5IGIvTGliL2htYWMucHkKaW5kZXggNzc3ODVhMi4uMTIxMDI5YSAxMDA2NDQKLS0tIGEvTGliL2htYWMucHkKKysrIGIvTGliL2htYWMucHkKQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgaWYgbGVuKGtleSkgPiBibG9ja3NpemU6CiAgICAgICAgICAgICBrZXkgPSBzZWxmLmRpZ2VzdF9jb25zKGtleSkuZGlnZXN0KCkKIAotICAgICAgICBrZXkgPSBrZXkgKyBieXRlcyhibG9ja3NpemUgLSBsZW4oa2V5KSkKKyAgICAgICAga2V5ID0ga2V5LmxqdXN0KGJsb2Nrc2l6ZSwgYidcMCcpCiAgICAgICAgIHNlbGYub3V0ZXIudXBkYXRlKGtleS50cmFuc2xhdGUodHJhbnNfNUMpKQogICAgICAgICBzZWxmLmlubmVyLnVwZGF0ZShrZXkudHJhbnNsYXRlKHRyYW5zXzM2KSkKICAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL2h0bWwvcGFyc2VyLnB5IGIvTGliL2h0bWwvcGFyc2VyLnB5CmluZGV4IGI3ODFjNjMuLmVmODY5YmMgMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL3BhcnNlci5weQorKysgYi9MaWIvaHRtbC9wYXJzZXIucHkKQEAgLTM0LDcgKzM0LDcgQEAKICMgICAgIGV4cGxvZGUsIHNvIGRvbid0IGRvIGl0LgogIyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW9wZW4tc3RhdGUKICMgYW5kIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1uYW1lLXN0YXRlCi10YWdmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZSgnKFthLXpBLVpdW15cdFxuXHJcZiAvPlx4MDBdKikoPzpcc3wvKD8hPikpKicpCit0YWdmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZShyJyhbYS16QS1aXVteXHRcblxyXGYgLz5ceDAwXSopKD86XHN8Lyg/IT4pKSonKQogYXR0cmZpbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKAogICAgIHInKCg/PD1bXCciXHMvXSlbXlxzLz5dW15ccy89Pl0qKShccyo9K1xzKicKICAgICByJyhcJ1teXCddKlwnfCJbXiJdKiJ8KD8hW1wnIl0pW14+XHNdKikpPyg/OlxzfC8oPyE+KSkqJykKQEAgLTU2LDcgKzU2LDcgQEAKIGVuZGVuZHRhZyA9IHJlLmNvbXBpbGUoJz4nKQogIyB0aGUgSFRNTCA1IHNwZWMsIHNlY3Rpb24gOC4xLjIuMiwgZG9lc24ndCBhbGxvdyBzcGFjZXMgYmV0d2VlbgogIyA8LyBhbmQgdGhlIHRhZyBuYW1lLCBzbyBtYXliZSB0aGlzIHNob3VsZCBiZSBmaXhlZAotZW5kdGFnZmluZCA9IHJlLmNvbXBpbGUoJzwvXHMqKFthLXpBLVpdWy0uYS16QS1aMC05Ol9dKilccyo+JykKK2VuZHRhZ2ZpbmQgPSByZS5jb21waWxlKHInPC9ccyooW2EtekEtWl1bLS5hLXpBLVowLTk6X10qKVxzKj4nKQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY2xpZW50LnB5IGIvTGliL2h0dHAvY2xpZW50LnB5CmluZGV4IDM1MmMxMDEuLmE4ZTU5YjkgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2NsaWVudC5weQorKysgYi9MaWIvaHR0cC9jbGllbnQucHkKQEAgLTEsNCArMSw0IEBACi0iIiJIVFRQLzEuMSBjbGllbnQgbGlicmFyeQorciIiIkhUVFAvMS4xIGNsaWVudCBsaWJyYXJ5CiAKIDxpbnRybyBzdHVmZiBnb2VzIGhlcmU+CiA8b3RoZXIgc3R1ZmYsIHRvbz4KQEAgLTQyMCw2ICs0MjAsNyBAQAogICAgICAgICAgICAgc2VsZi5mcC5mbHVzaCgpCiAKICAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgICIiIkFsd2F5cyByZXR1cm5zIFRydWUiIiIKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICMgRW5kIG9mICJyYXcgc3RyZWFtIiBtZXRob2RzCkBAIC00NjcsNiArNDY4LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSBiIGFuZCByZXR1cm4gdGhlIG51bWJlcgorICAgICAgICBvZiBieXRlcyByZWFkLgorICAgICAgICAiIiIKKwogICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gMAogCkBAIC03MDYsNiArNzExLDE3IEBACiAgICAgICAgIHJldHVybiBzZWxmLmZwLmZpbGVubygpCiAKICAgICBkZWYgZ2V0aGVhZGVyKHNlbGYsIG5hbWUsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICcnJ1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgbWF0Y2hpbmcgKm5hbWUqLgorCisgICAgICAgIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGluZyBoZWFkZXJzLCB0aGUgdmFsdWVzIGFyZQorICAgICAgICBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyBzZXBhcmF0ZWQgYnkgY29tbWFzIGFuZCBzcGFjZXMuCisKKyAgICAgICAgSWYgbm8gbWF0Y2hpbmcgaGVhZGVyIGlzIGZvdW5kLCByZXR1cm5zICpkZWZhdWx0KiBvciBOb25lIGlmCisgICAgICAgIHRoZSAqZGVmYXVsdCogaXMgbm90IHNwZWNpZmllZC4KKworICAgICAgICBJZiB0aGUgaGVhZGVycyBhcmUgdW5rbm93biwgcmFpc2VzIGh0dHAuY2xpZW50LlJlc3BvbnNlTm90UmVhZHkuCisKKyAgICAgICAgJycnCiAgICAgICAgIGlmIHNlbGYuaGVhZGVycyBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgUmVzcG9uc2VOb3RSZWFkeSgpCiAgICAgICAgIGhlYWRlcnMgPSBzZWxmLmhlYWRlcnMuZ2V0X2FsbChuYW1lKSBvciBkZWZhdWx0CkBAIC03MjgsMTIgKzc0NCw0NSBAQAogICAgICMgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQtc3R5bGUgdXJsbGliIHJlc3BvbnNlcy4KIAogICAgIGRlZiBpbmZvKHNlbGYpOgorICAgICAgICAnJydSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyBtaW1ldG9vbHMuTWVzc2FnZSBjb250YWluaW5nCisgICAgICAgIG1ldGEtaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBVUkwuCisKKyAgICAgICAgV2hlbiB0aGUgbWV0aG9kIGlzIEhUVFAsIHRoZXNlIGhlYWRlcnMgYXJlIHRob3NlIHJldHVybmVkIGJ5CisgICAgICAgIHRoZSBzZXJ2ZXIgYXQgdGhlIGhlYWQgb2YgdGhlIHJldHJpZXZlZCBIVE1MIHBhZ2UgKGluY2x1ZGluZworICAgICAgICBDb250ZW50LUxlbmd0aCBhbmQgQ29udGVudC1UeXBlKS4KKworICAgICAgICBXaGVuIHRoZSBtZXRob2QgaXMgRlRQLCBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlciB3aWxsIGJlCisgICAgICAgIHByZXNlbnQgaWYgKGFzIGlzIG5vdyB1c3VhbCkgdGhlIHNlcnZlciBwYXNzZWQgYmFjayBhIGZpbGUKKyAgICAgICAgbGVuZ3RoIGluIHJlc3BvbnNlIHRvIHRoZSBGVFAgcmV0cmlldmFsIHJlcXVlc3QuIEEKKyAgICAgICAgQ29udGVudC1UeXBlIGhlYWRlciB3aWxsIGJlIHByZXNlbnQgaWYgdGhlIE1JTUUgdHlwZSBjYW4gYmUKKyAgICAgICAgZ3Vlc3NlZC4KKworICAgICAgICBXaGVuIHRoZSBtZXRob2QgaXMgbG9jYWwtZmlsZSwgcmV0dXJuZWQgaGVhZGVycyB3aWxsIGluY2x1ZGUKKyAgICAgICAgYSBEYXRlIHJlcHJlc2VudGluZyB0aGUgZmlsZSdzIGxhc3QtbW9kaWZpZWQgdGltZSwgYQorICAgICAgICBDb250ZW50LUxlbmd0aCBnaXZpbmcgZmlsZSBzaXplLCBhbmQgYSBDb250ZW50LVR5cGUKKyAgICAgICAgY29udGFpbmluZyBhIGd1ZXNzIGF0IHRoZSBmaWxlJ3MgdHlwZS4gU2VlIGFsc28gdGhlCisgICAgICAgIGRlc2NyaXB0aW9uIG9mIHRoZSBtaW1ldG9vbHMgbW9kdWxlLgorCisgICAgICAgICcnJwogICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJzCiAKICAgICBkZWYgZ2V0dXJsKHNlbGYpOgorICAgICAgICAnJydSZXR1cm4gdGhlIHJlYWwgVVJMIG9mIHRoZSBwYWdlLgorCisgICAgICAgIEluIHNvbWUgY2FzZXMsIHRoZSBIVFRQIHNlcnZlciByZWRpcmVjdHMgYSBjbGllbnQgdG8gYW5vdGhlcgorICAgICAgICBVUkwuIFRoZSB1cmxvcGVuKCkgZnVuY3Rpb24gaGFuZGxlcyB0aGlzIHRyYW5zcGFyZW50bHksIGJ1dCBpbgorICAgICAgICBzb21lIGNhc2VzIHRoZSBjYWxsZXIgbmVlZHMgdG8ga25vdyB3aGljaCBVUkwgdGhlIGNsaWVudCB3YXMKKyAgICAgICAgcmVkaXJlY3RlZCB0by4gVGhlIGdldHVybCgpIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBnZXQgYXQgdGhpcworICAgICAgICByZWRpcmVjdGVkIFVSTC4KKworICAgICAgICAnJycKICAgICAgICAgcmV0dXJuIHNlbGYudXJsCiAKICAgICBkZWYgZ2V0Y29kZShzZWxmKToKKyAgICAgICAgJycnUmV0dXJuIHRoZSBIVFRQIHN0YXR1cyBjb2RlIHRoYXQgd2FzIHNlbnQgd2l0aCB0aGUgcmVzcG9uc2UsCisgICAgICAgIG9yIE5vbmUgaWYgdGhlIFVSTCBpcyBub3QgYW4gSFRUUCBVUkwuCisKKyAgICAgICAgJycnCiAgICAgICAgIHJldHVybiBzZWxmLnN0YXR1cwogCiBjbGFzcyBIVFRQQ29ubmVjdGlvbjoKQEAgLTc0Niw2ICs3OTUsNDQgQEAKICAgICBhdXRvX29wZW4gPSAxCiAgICAgZGVidWdsZXZlbCA9IDAKIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2lzX3RleHRJTyhzdHJlYW0pOgorICAgICAgICAiIiJUZXN0IHdoZXRoZXIgYSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGEgdGV4dCBvciBhIGJpbmFyeSBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShzdHJlYW0sIGlvLlRleHRJT0Jhc2UpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9nZXRfY29udGVudF9sZW5ndGgoYm9keSwgbWV0aG9kKToKKyAgICAgICAgIiIiR2V0IHRoZSBjb250ZW50LWxlbmd0aCBiYXNlZCBvbiB0aGUgYm9keS4KKworICAgICAgICBJZiB0aGUgYm9keSBpcyBOb25lLCB3ZSBzZXQgQ29udGVudC1MZW5ndGg6IDAgZm9yIG1ldGhvZHMgdGhhdCBleHBlY3QKKyAgICAgICAgYSBib2R5IChSRkMgNzIzMCwgU2VjdGlvbiAzLjMuMikuIFdlIGFsc28gc2V0IHRoZSBDb250ZW50LUxlbmd0aCBmb3IKKyAgICAgICAgYW55IG1ldGhvZCBpZiB0aGUgYm9keSBpcyBhIHN0ciBvciBieXRlcy1saWtlIG9iamVjdCBhbmQgbm90IGEgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGJvZHkgaXMgTm9uZToKKyAgICAgICAgICAgICMgZG8gYW4gZXhwbGljaXQgY2hlY2sgZm9yIG5vdCBOb25lIGhlcmUgdG8gZGlzdGluZ3Vpc2gKKyAgICAgICAgICAgICMgYmV0d2VlbiB1bnNldCBhbmQgc2V0IGJ1dCBlbXB0eQorICAgICAgICAgICAgaWYgbWV0aG9kLnVwcGVyKCkgaW4gX01FVEhPRFNfRVhQRUNUSU5HX0JPRFk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBpZiBoYXNhdHRyKGJvZHksICdyZWFkJyk6CisgICAgICAgICAgICAjIGZpbGUtbGlrZSBvYmplY3QuCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgZG9lcyBpdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciBwcm90b2NvbCAoYnl0ZXMsIGJ5dGVhcnJheSwgYXJyYXkpPworICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGJvZHkpCisgICAgICAgICAgICByZXR1cm4gbXYubmJ5dGVzCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShib2R5LCBzdHIpOgorICAgICAgICAgICAgcmV0dXJuIGxlbihib2R5KQorCisgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydD1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKQEAgLTg4NCwxOCArOTcxLDkgQEAKICAgICAgICAgaWYgaGFzYXR0cihkYXRhLCAicmVhZCIpIDoKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICAgICAgcHJpbnQoInNlbmRJbmcgYSByZWFkKClhYmxlIikKLSAgICAgICAgICAgIGVuY29kZSA9IEZhbHNlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kZSA9IGRhdGEubW9kZQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICMgaW8uQnl0ZXNJTyBhbmQgb3RoZXIgZmlsZS1saWtlIG9iamVjdHMgZG9uJ3QgaGF2ZSBhIGBtb2RlYAotICAgICAgICAgICAgICAgICMgYXR0cmlidXRlLgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgotICAgICAgICAgICAgICAgICAgICBlbmNvZGUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiZW5jb2RpbmcgZmlsZSB1c2luZyBpc28tODg1OS0xIikKKyAgICAgICAgICAgIGVuY29kZSA9IHNlbGYuX2lzX3RleHRJTyhkYXRhKQorICAgICAgICAgICAgaWYgZW5jb2RlIGFuZCBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgIHByaW50KCJlbmNvZGluZyBmaWxlIHVzaW5nIGlzby04ODU5LTEiKQogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICBkYXRhYmxvY2sgPSBkYXRhLnJlYWQoYmxvY2tzaXplKQogICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhYmxvY2s6CkBAIC05MjEsNyArOTk5LDIyIEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9idWZmZXIuYXBwZW5kKHMpCiAKLSAgICBkZWYgX3NlbmRfb3V0cHV0KHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lKToKKyAgICBkZWYgX3JlYWRfcmVhZGFibGUoc2VsZiwgcmVhZGFibGUpOgorICAgICAgICBibG9ja3NpemUgPSA4MTkyCisgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICBwcmludCgic2VuZEluZyBhIHJlYWQoKWFibGUiKQorICAgICAgICBlbmNvZGUgPSBzZWxmLl9pc190ZXh0SU8ocmVhZGFibGUpCisgICAgICAgIGlmIGVuY29kZSBhbmQgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgIHByaW50KCJlbmNvZGluZyBmaWxlIHVzaW5nIGlzby04ODU5LTEiKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YWJsb2NrID0gcmVhZGFibGUucmVhZChibG9ja3NpemUpCisgICAgICAgICAgICBpZiBub3QgZGF0YWJsb2NrOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBlbmNvZGU6CisgICAgICAgICAgICAgICAgZGF0YWJsb2NrID0gZGF0YWJsb2NrLmVuY29kZSgiaXNvLTg4NTktMSIpCisgICAgICAgICAgICB5aWVsZCBkYXRhYmxvY2sKKworICAgIGRlZiBfc2VuZF9vdXRwdXQoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUsIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgIiIiU2VuZCB0aGUgY3VycmVudGx5IGJ1ZmZlcmVkIHJlcXVlc3QgYW5kIGNsZWFyIHRoZSBidWZmZXIuCiAKICAgICAgICAgQXBwZW5kcyBhbiBleHRyYSBcXHJcXG4gdG8gdGhlIGJ1ZmZlci4KQEAgLTkzMCwxMCArMTAyMyw1MCBAQAogICAgICAgICBzZWxmLl9idWZmZXIuZXh0ZW5kKChiIiIsIGIiIikpCiAgICAgICAgIG1zZyA9IGIiXHJcbiIuam9pbihzZWxmLl9idWZmZXIpCiAgICAgICAgIGRlbCBzZWxmLl9idWZmZXJbOl0KLQogICAgICAgICBzZWxmLnNlbmQobXNnKQorCiAgICAgICAgIGlmIG1lc3NhZ2VfYm9keSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2VuZChtZXNzYWdlX2JvZHkpCisKKyAgICAgICAgICAgICMgY3JlYXRlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgdG8gbWVzc2FnZV9ib2R5CisgICAgICAgICAgICBpZiBoYXNhdHRyKG1lc3NhZ2VfYm9keSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICAjIExldCBmaWxlLWxpa2UgdGFrZSBwcmVjZWRlbmNlIG92ZXIgYnl0ZS1saWtlLiAgVGhpcworICAgICAgICAgICAgICAgICMgaXMgbmVlZGVkIHRvIGFsbG93IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIG1tYXAnZWQKKyAgICAgICAgICAgICAgICAjIGZpbGVzIHRvIGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAgICAgICAgICAgICAgICBjaHVua3MgPSBzZWxmLl9yZWFkX3JlYWRhYmxlKG1lc3NhZ2VfYm9keSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaXMgc29sZWx5IHRvIGNoZWNrIHRvIHNlZSBpZiBtZXNzYWdlX2JvZHkKKyAgICAgICAgICAgICAgICAgICAgIyBpbXBsZW1lbnRzIHRoZSBidWZmZXIgQVBJLiAgaXQgL3dvdWxkLyBiZSBlYXNpZXIKKyAgICAgICAgICAgICAgICAgICAgIyB0byBjYXB0dXJlIGlmIFB5T2JqZWN0X0NoZWNrQnVmZmVyIHdhcyBleHBvc2VkCisgICAgICAgICAgICAgICAgICAgICMgdG8gUHl0aG9uLgorICAgICAgICAgICAgICAgICAgICBtZW1vcnl2aWV3KG1lc3NhZ2VfYm9keSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSBpdGVyKG1lc3NhZ2VfYm9keSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibWVzc2FnZV9ib2R5IHNob3VsZCBiZSBhIGJ5dGVzLWxpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Qgb3IgYW4gaXRlcmFibGUsIGdvdCAlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUobWVzc2FnZV9ib2R5KSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUgYnVmZmVyIGludGVyZmFjZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IGludG8gc29ja2V0IG1ldGhvZHMKKyAgICAgICAgICAgICAgICAgICAgY2h1bmtzID0gKG1lc3NhZ2VfYm9keSwpCisKKyAgICAgICAgICAgIGZvciBjaHVuayBpbiBjaHVua3M6CisgICAgICAgICAgICAgICAgaWYgbm90IGNodW5rOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1plcm8gbGVuZ3RoIGNodW5rIGlnbm9yZWQnKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgZW5jb2RlX2NodW5rZWQgYW5kIHNlbGYuX2h0dHBfdnNuID09IDExOgorICAgICAgICAgICAgICAgICAgICAjIGNodW5rZWQgZW5jb2RpbmcKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBmJ3tsZW4oY2h1bmspOlh9XHJcbicuZW5jb2RlKCdhc2NpaScpICsgY2h1bmsgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyBiJ1xyXG4nCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kKGNodW5rKQorCisgICAgICAgICAgICBpZiBlbmNvZGVfY2h1bmtlZCBhbmQgc2VsZi5faHR0cF92c24gPT0gMTE6CisgICAgICAgICAgICAgICAgIyBlbmQgY2h1bmtlZCB0cmFuc2ZlcgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZChiJzBcclxuXHJcbicpCiAKICAgICBkZWYgcHV0cmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgc2tpcF9ob3N0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgIHNraXBfYWNjZXB0X2VuY29kaW5nPUZhbHNlKToKQEAgLTEwODcsNTIgKzEyMjAsMjcgQEAKICAgICAgICAgaGVhZGVyID0gaGVhZGVyICsgYic6ICcgKyB2YWx1ZQogICAgICAgICBzZWxmLl9vdXRwdXQoaGVhZGVyKQogCi0gICAgZGVmIGVuZGhlYWRlcnMoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUpOgorICAgIGRlZiBlbmRoZWFkZXJzKHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lLCAqLCBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgICIiIkluZGljYXRlIHRoYXQgdGhlIGxhc3QgaGVhZGVyIGxpbmUgaGFzIGJlZW4gc2VudCB0byB0aGUgc2VydmVyLgogCiAgICAgICAgIFRoaXMgbWV0aG9kIHNlbmRzIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuICBUaGUgb3B0aW9uYWwgbWVzc2FnZV9ib2R5CiAgICAgICAgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHBhc3MgYSBtZXNzYWdlIGJvZHkgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgICAgICByZXF1ZXN0LiAgVGhlIG1lc3NhZ2UgYm9keSB3aWxsIGJlIHNlbnQgaW4gdGhlIHNhbWUgcGFja2V0IGFzIHRoZQotICAgICAgICBtZXNzYWdlIGhlYWRlcnMgaWYgaXQgaXMgYSBzdHJpbmcsIG90aGVyd2lzZSBpdCBpcyBzZW50IGFzIGEgc2VwYXJhdGUKLSAgICAgICAgcGFja2V0LgorICAgICAgICByZXF1ZXN0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fX3N0YXRlID09IF9DU19SRVFfU1RBUlRFRDoKICAgICAgICAgICAgIHNlbGYuX19zdGF0ZSA9IF9DU19SRVFfU0VOVAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgQ2Fubm90U2VuZEhlYWRlcigpCi0gICAgICAgIHNlbGYuX3NlbmRfb3V0cHV0KG1lc3NhZ2VfYm9keSkKKyAgICAgICAgc2VsZi5fc2VuZF9vdXRwdXQobWVzc2FnZV9ib2R5LCBlbmNvZGVfY2h1bmtlZD1lbmNvZGVfY2h1bmtlZCkKIAotICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9e30pOgorICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9e30sICosCisgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9RmFsc2UpOgogICAgICAgICAiIiJTZW5kIGEgY29tcGxldGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLiIiIgotICAgICAgICBzZWxmLl9zZW5kX3JlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpCisgICAgICAgIHNlbGYuX3NlbmRfcmVxdWVzdChtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycywgZW5jb2RlX2NodW5rZWQpCiAKLSAgICBkZWYgX3NldF9jb250ZW50X2xlbmd0aChzZWxmLCBib2R5LCBtZXRob2QpOgotICAgICAgICAjIFNldCB0aGUgY29udGVudC1sZW5ndGggYmFzZWQgb24gdGhlIGJvZHkuIElmIHRoZSBib2R5IGlzICJlbXB0eSIsIHdlCi0gICAgICAgICMgc2V0IENvbnRlbnQtTGVuZ3RoOiAwIGZvciBtZXRob2RzIHRoYXQgZXhwZWN0IGEgYm9keSAoUkZDIDcyMzAsCi0gICAgICAgICMgU2VjdGlvbiAzLjMuMikuIElmIHRoZSBib2R5IGlzIHNldCBmb3Igb3RoZXIgbWV0aG9kcywgd2Ugc2V0IHRoZQotICAgICAgICAjIGhlYWRlciBwcm92aWRlZCB3ZSBjYW4gZmlndXJlIG91dCB3aGF0IHRoZSBsZW5ndGggaXMuCi0gICAgICAgIHRoZWxlbiA9IE5vbmUKLSAgICAgICAgbWV0aG9kX2V4cGVjdHNfYm9keSA9IG1ldGhvZC51cHBlcigpIGluIF9NRVRIT0RTX0VYUEVDVElOR19CT0RZCi0gICAgICAgIGlmIGJvZHkgaXMgTm9uZSBhbmQgbWV0aG9kX2V4cGVjdHNfYm9keToKLSAgICAgICAgICAgIHRoZWxlbiA9ICcwJwotICAgICAgICBlbGlmIGJvZHkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGhlbGVuID0gc3RyKGxlbihib2R5KSkKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBJZiB0aGlzIGlzIGEgZmlsZS1saWtlIG9iamVjdCwgdHJ5IHRvCi0gICAgICAgICAgICAgICAgIyBmc3RhdCBpdHMgZmlsZSBkZXNjcmlwdG9yCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB0aGVsZW4gPSBzdHIob3MuZnN0YXQoYm9keS5maWxlbm8oKSkuc3Rfc2l6ZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKLSAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBzZW5kIGEgbGVuZ3RoIGlmIHRoaXMgZmFpbGVkCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6IHByaW50KCJDYW5ub3Qgc3RhdCEhIikKLQotICAgICAgICBpZiB0aGVsZW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnB1dGhlYWRlcignQ29udGVudC1MZW5ndGgnLCB0aGVsZW4pCi0KLSAgICBkZWYgX3NlbmRfcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycyk6CisgICAgZGVmIF9zZW5kX3JlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMsIGVuY29kZV9jaHVua2VkKToKICAgICAgICAgIyBIb25vciBleHBsaWNpdGx5IHJlcXVlc3RlZCBIb3N0OiBhbmQgQWNjZXB0LUVuY29kaW5nOiBoZWFkZXJzLgotICAgICAgICBoZWFkZXJfbmFtZXMgPSBkaWN0LmZyb21rZXlzKFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisgICAgICAgIGhlYWRlcl9uYW1lcyA9IGZyb3plbnNldChrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycykKICAgICAgICAgc2tpcHMgPSB7fQogICAgICAgICBpZiAnaG9zdCcgaW4gaGVhZGVyX25hbWVzOgogICAgICAgICAgICAgc2tpcHNbJ3NraXBfaG9zdCddID0gMQpAQCAtMTE0MSwxNSArMTI0OSw0MCBAQAogCiAgICAgICAgIHNlbGYucHV0cmVxdWVzdChtZXRob2QsIHVybCwgKipza2lwcykKIAorICAgICAgICAjIGNodW5rZWQgZW5jb2Rpbmcgd2lsbCBoYXBwZW4gaWYgSFRUUC8xLjEgaXMgdXNlZCBhbmQgZWl0aGVyCisgICAgICAgICMgdGhlIGNhbGxlciBwYXNzZXMgZW5jb2RlX2NodW5rZWQ9VHJ1ZSBvciB0aGUgZm9sbG93aW5nCisgICAgICAgICMgY29uZGl0aW9ucyBob2xkOgorICAgICAgICAjIDEuIGNvbnRlbnQtbGVuZ3RoIGhhcyBub3QgYmVlbiBleHBsaWNpdGx5IHNldAorICAgICAgICAjIDIuIHRoZSBib2R5IGlzIGEgZmlsZSBvciBpdGVyYWJsZSwgYnV0IG5vdCBhIHN0ciBvciBieXRlcy1saWtlCisgICAgICAgICMgMy4gVHJhbnNmZXItRW5jb2RpbmcgaGFzIE5PVCBiZWVuIGV4cGxpY2l0bHkgc2V0IGJ5IHRoZSBjYWxsZXIKKwogICAgICAgICBpZiAnY29udGVudC1sZW5ndGgnIG5vdCBpbiBoZWFkZXJfbmFtZXM6Ci0gICAgICAgICAgICBzZWxmLl9zZXRfY29udGVudF9sZW5ndGgoYm9keSwgbWV0aG9kKQorICAgICAgICAgICAgIyBvbmx5IGNodW5rIGJvZHkgaWYgbm90IGV4cGxpY2l0bHkgc2V0IGZvciBiYWNrd2FyZHMKKyAgICAgICAgICAgICMgY29tcGF0aWJpbGl0eSwgYXNzdW1pbmcgdGhlIGNsaWVudCBjb2RlIGlzIGFscmVhZHkgaGFuZGxpbmcgdGhlCisgICAgICAgICAgICAjIGNodW5raW5nCisgICAgICAgICAgICBpZiAndHJhbnNmZXItZW5jb2RpbmcnIG5vdCBpbiBoZWFkZXJfbmFtZXM6CisgICAgICAgICAgICAgICAgIyBpZiBjb250ZW50LWxlbmd0aCBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBkZXRlcm1pbmVkLCBmYWxsCisgICAgICAgICAgICAgICAgIyBiYWNrIHRvIGNodW5rZWQgZW5jb2RpbmcKKyAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBzZWxmLl9nZXRfY29udGVudF9sZW5ndGgoYm9keSwgbWV0aG9kKQorICAgICAgICAgICAgICAgIGlmIGNvbnRlbnRfbGVuZ3RoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGJvZHkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdVbmFibGUgdG8gZGV0ZXJtaW5lIHNpemUgb2YgJXInICUgYm9keSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoJ1RyYW5zZmVyLUVuY29kaW5nJywgJ2NodW5rZWQnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIHN0cihjb250ZW50X2xlbmd0aCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZCA9IEZhbHNlCisKICAgICAgICAgZm9yIGhkciwgdmFsdWUgaW4gaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoaGRyLCB2YWx1ZSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShib2R5LCBzdHIpOgogICAgICAgICAgICAgIyBSRkMgMjYxNiBTZWN0aW9uIDMuNy4xIHNheXMgdGhhdCB0ZXh0IGRlZmF1bHQgaGFzIGEKICAgICAgICAgICAgICMgZGVmYXVsdCBjaGFyc2V0IG9mIGlzby04ODU5LTEuCiAgICAgICAgICAgICBib2R5ID0gX2VuY29kZShib2R5LCAnYm9keScpCi0gICAgICAgIHNlbGYuZW5kaGVhZGVycyhib2R5KQorICAgICAgICBzZWxmLmVuZGhlYWRlcnMoYm9keSwgZW5jb2RlX2NodW5rZWQ9ZW5jb2RlX2NodW5rZWQpCiAKICAgICBkZWYgZ2V0cmVzcG9uc2Uoc2VsZik6CiAgICAgICAgICIiIkdldCB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLgpAQCAtMTIzMiw2ICsxMzY1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1Ob25lKToKICAgICAgICAgICAgIHN1cGVyKEhUVFBTQ29ubmVjdGlvbiwgc2VsZikuX19pbml0X18oaG9zdCwgcG9ydCwgdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3MpCisgICAgICAgICAgICBpZiAoa2V5X2ZpbGUgaXMgbm90IE5vbmUgb3IgY2VydF9maWxlIGlzIG5vdCBOb25lIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5X2ZpbGUsIGNlcnRfZmlsZSBhbmQgY2hlY2tfaG9zdG5hbWUgYXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXByZWNhdGVkLCB1c2UgYSBjdXN0b20gY29udGV4dCBpbnN0ZWFkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleV9maWxlID0ga2V5X2ZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydF9maWxlID0gY2VydF9maWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jb29raWVqYXIucHkgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKaW5kZXggNmQ0NTcyYS4uYWRmOTU2ZCAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llamFyLnB5CisrKyBiL0xpYi9odHRwL2Nvb2tpZWphci5weQpAQCAtMjAwLDcgKzIwMCw3IEBACiAKIFNUUklDVF9EQVRFX1JFID0gcmUuY29tcGlsZSgKICAgICByIl5bU01UV0ZdW2Etel1bYS16XSwgKFxkXGQpIChbSkZNQVNPTkRdW2Etel1bYS16XSkgIgotICAgICIoXGRcZFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQiLCByZS5BU0NJSSkKKyAgICByIihcZFxkXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJCIsIHJlLkFTQ0lJKQogV0VFS0RBWV9SRSA9IHJlLmNvbXBpbGUoCiAgICAgciJeKD86U3VufE1vbnxUdWV8V2VkfFRodXxGcml8U2F0KVthLXpdKiw/XHMqIiwgcmUuSSB8IHJlLkFTQ0lJKQogTE9PU0VfSFRUUF9EQVRFX1JFID0gcmUuY29tcGlsZSgKQEAgLTI3Nyw3ICsyNzcsNyBAQAogICAgIHJldHVybiBfc3RyMnRpbWUoZGF5LCBtb24sIHlyLCBociwgbWluLCBzZWMsIHR6KQogCiBJU09fREFURV9SRSA9IHJlLmNvbXBpbGUoCi0gICAgIiIiXgorICAgIHIiIiJeCiAgICAgKFxkezR9KSAgICAgICAgICAgICAgIyB5ZWFyCiAgICAgICAgWy1cL10/CiAgICAgKFxkXGQ/KSAgICAgICAgICAgICAgIyBudW1lcmljYWwgbW9udGgKQEAgLTQxMSw3ICs0MTEsNyBAQAogICAgICAgICAgICAgICAgIHBhaXJzID0gW10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBza2lwIGp1bmsKLSAgICAgICAgICAgICAgICBub25fanVuaywgbnJfanVua19jaGFycyA9IHJlLnN1Ym4oIl5bPVxzO10qIiwgIiIsIHRleHQpCisgICAgICAgICAgICAgICAgbm9uX2p1bmssIG5yX2p1bmtfY2hhcnMgPSByZS5zdWJuKHIiXls9XHM7XSoiLCAiIiwgdGV4dCkKICAgICAgICAgICAgICAgICBhc3NlcnQgbnJfanVua19jaGFycyA+IDAsICgKICAgICAgICAgICAgICAgICAgICAgInNwbGl0X2hlYWRlcl93b3JkcyBidWc6ICclcycsICclcycsICVzIiAlCiAgICAgICAgICAgICAgICAgICAgIChvcmlnX3RleHQsIHRleHQsIHBhaXJzKSkKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZXMucHkgYi9MaWIvaHR0cC9jb29raWVzLnB5CmluZGV4IGE3M2ZlMzguLmJlM2IwODAgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZXMucHkKKysrIGIvTGliL2h0dHAvY29va2llcy5weQpAQCAtNDU2LDkgKzQ1Niw4IEBACiAjCiAKIF9MZWdhbEtleUNoYXJzICA9IHIiXHdcZCEjJSYnfl9gPjxALDovXCRcKlwrXC1cLlxeXHxcKVwoXD9cfVx7XD0iCi1fTGVnYWxWYWx1ZUNoYXJzID0gX0xlZ2FsS2V5Q2hhcnMgKyAnXFtcXScKK19MZWdhbFZhbHVlQ2hhcnMgPSBfTGVnYWxLZXlDaGFycyArIHInXFtcXScKIF9Db29raWVQYXR0ZXJuID0gcmUuY29tcGlsZShyIiIiCi0gICAgKD94KSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIHZlcmJvc2UgcGF0dGVybgogICAgIFxzKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsIHdoaXRlc3BhY2UgYXQgc3RhcnQgb2YgY29va2llCiAgICAgKD9QPGtleT4gICAgICAgICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgZ3JvdXAgJ2tleScKICAgICBbIiIiICsgX0xlZ2FsS2V5Q2hhcnMgKyByIiIiXSs/ICAgIyBBbnkgd29yZCBvZiBhdCBsZWFzdCBvbmUgbGV0dGVyCkBAIC00NzUsNyArNDc0LDcgQEAKICAgICApPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgb2Ygb3B0aW9uYWwgdmFsdWUgZ3JvdXAKICAgICBccyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBbnkgbnVtYmVyIG9mIHNwYWNlcy4KICAgICAoXHMrfDt8JCkgICAgICAgICAgICAgICAgICAgICAgIyBFbmRpbmcgZWl0aGVyIGF0IHNwYWNlLCBzZW1pY29sb24sIG9yIEVPUy4KLSAgICAiIiIsIHJlLkFTQ0lJKSAgICAgICAgICAgICAgICAgIyBNYXkgYmUgcmVtb3ZlZCBpZiBzYWZlLgorICAgICIiIiwgcmUuQVNDSUkgfCByZS5WRVJCT1NFKSAgICAjIHJlLkFTQ0lJIG1heSBiZSByZW1vdmVkIGlmIHNhZmUuCiAKIAogIyBBdCBsb25nIGxhc3QsIGhlcmUgaXMgdGhlIGNvb2tpZSBjbGFzcy4gIFVzaW5nIHRoaXMgY2xhc3MgaXMgYWxtb3N0IGp1c3QgbGlrZQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvc2VydmVyLnB5IGIvTGliL2h0dHAvc2VydmVyLnB5CmluZGV4IDAwNjIwZDEuLmUxMmU0NWIgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL3NlcnZlci5weQorKysgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKQEAgLTg3LDYgKzg3LDcgQEAKICAgICAiU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyIiwgIkNHSUhUVFBSZXF1ZXN0SGFuZGxlciIsCiBdCiAKK2ltcG9ydCBlbWFpbC51dGlscwogaW1wb3J0IGh0bWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IGlvCkBAIC0xMjYsOSArMTI3LDYgQEAKIAogREVGQVVMVF9FUlJPUl9DT05URU5UX1RZUEUgPSAidGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiCiAKLWRlZiBfcXVvdGVfaHRtbChodG1sKToKLSAgICByZXR1cm4gaHRtbC5yZXBsYWNlKCImIiwgIiZhbXA7IikucmVwbGFjZSgiPCIsICImbHQ7IikucmVwbGFjZSgiPiIsICImZ3Q7IikKLQogY2xhc3MgSFRUUFNlcnZlcihzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKToKIAogICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSAxICAgICMgU2VlbXMgdG8gbWFrZSBzZW5zZSBpbiB0ZXN0aW5nIGVudmlyb25tZW50CkBAIC0xMzYsNyArMTM0LDcgQEAKICAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CiAgICAgICAgICIiIk92ZXJyaWRlIHNlcnZlcl9iaW5kIHRvIHN0b3JlIHRoZSBzZXJ2ZXIgbmFtZS4iIiIKICAgICAgICAgc29ja2V0c2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfYmluZChzZWxmKQotICAgICAgICBob3N0LCBwb3J0ID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgaG9zdCwgcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbOjJdCiAgICAgICAgIHNlbGYuc2VydmVyX25hbWUgPSBzb2NrZXQuZ2V0ZnFkbihob3N0KQogICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gcG9ydAogCkBAIC0yODIsMTIgKzI4MCw5IEBACiAgICAgICAgIHdvcmRzID0gcmVxdWVzdGxpbmUuc3BsaXQoKQogICAgICAgICBpZiBsZW4od29yZHMpID09IDM6CiAgICAgICAgICAgICBjb21tYW5kLCBwYXRoLCB2ZXJzaW9uID0gd29yZHMKLSAgICAgICAgICAgIGlmIHZlcnNpb25bOjVdICE9ICdIVFRQLyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAotICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAotICAgICAgICAgICAgICAgICAgICAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgdmVyc2lvbls6NV0gIT0gJ0hUVFAvJzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAgICAgICAgIGJhc2VfdmVyc2lvbl9udW1iZXIgPSB2ZXJzaW9uLnNwbGl0KCcvJywgMSlbMV0KICAgICAgICAgICAgICAgICB2ZXJzaW9uX251bWJlciA9IGJhc2VfdmVyc2lvbl9udW1iZXIuc3BsaXQoIi4iKQogICAgICAgICAgICAgICAgICMgUkZDIDIxNDUgc2VjdGlvbiAzLjEgc2F5cyB0aGVyZSBjYW4gYmUgb25seSBvbmUgIi4iIGFuZApAQCAtMzA5LDcgKzMwNCw3IEBACiAgICAgICAgICAgICBpZiB2ZXJzaW9uX251bWJlciA+PSAoMiwgMCk6CiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAogICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVELAotICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBIVFRQIFZlcnNpb24gKCVzKSIgJSBiYXNlX3ZlcnNpb25fbnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBIVFRQIHZlcnNpb24gKCVzKSIgJSBiYXNlX3ZlcnNpb25fbnVtYmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbGlmIGxlbih3b3JkcykgPT0gMjoKICAgICAgICAgICAgIGNvbW1hbmQsIHBhdGggPSB3b3JkcwpAQCAtMzMyLDEwICszMjcsMTEgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5oZWFkZXJzID0gaHR0cC5jbGllbnQucGFyc2VfaGVhZGVycyhzZWxmLnJmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xhc3M9c2VsZi5NZXNzYWdlQ2xhc3MpCi0gICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5MaW5lVG9vTG9uZzoKKyAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkxpbmVUb29Mb25nIGFzIGVycjoKICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKLSAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAotICAgICAgICAgICAgICAgICJMaW5lIHRvbyBsb25nIikKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLlJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UsCisgICAgICAgICAgICAgICAgIkxpbmUgdG9vIGxvbmciLAorICAgICAgICAgICAgICAgIHN0cihlcnIpKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5IVFRQRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKQEAgLTQ2NSw4ICs0NjEsOCBAQAogICAgICAgICAgICAgIyAoc2VlIGJ1ZyAjMTEwMDIwMSkKICAgICAgICAgICAgIGNvbnRlbnQgPSAoc2VsZi5lcnJvcl9tZXNzYWdlX2Zvcm1hdCAlIHsKICAgICAgICAgICAgICAgICAnY29kZSc6IGNvZGUsCi0gICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBfcXVvdGVfaHRtbChtZXNzYWdlKSwKLSAgICAgICAgICAgICAgICAnZXhwbGFpbic6IF9xdW90ZV9odG1sKGV4cGxhaW4pCisgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBodG1sLmVzY2FwZShtZXNzYWdlLCBxdW90ZT1GYWxzZSksCisgICAgICAgICAgICAgICAgJ2V4cGxhaW4nOiBodG1sLmVzY2FwZShleHBsYWluLCBxdW90ZT1GYWxzZSkKICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICBib2R5ID0gY29udGVudC5lbmNvZGUoJ1VURi04JywgJ3JlcGxhY2UnKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1UeXBlIiwgc2VsZi5lcnJvcl9jb250ZW50X3R5cGUpCkBAIC00OTEsMTIgKzQ4NywxMiBAQAogCiAgICAgZGVmIHNlbmRfcmVzcG9uc2Vfb25seShzZWxmLCBjb2RlLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJTZW5kIHRoZSByZXNwb25zZSBoZWFkZXIgb25seS4iIiIKLSAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgY29kZSBpbiBzZWxmLnJlc3BvbnNlczoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5yZXNwb25zZXNbY29kZV1bMF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICcnCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CisgICAgICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgY29kZSBpbiBzZWxmLnJlc3BvbnNlczoKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVzcG9uc2VzW2NvZGVdWzBdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICcnCiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIgPSBbXQogICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIuYXBwZW5kKCgiJXMgJWQgJXNcclxuIiAlCkBAIC01ODMsMTIgKzU3OSw3IEBACiAgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIGZvcm1hdHRlZCBmb3IgYSBtZXNzYWdlIGhlYWRlci4iIiIKICAgICAgICAgaWYgdGltZXN0YW1wIGlzIE5vbmU6CiAgICAgICAgICAgICB0aW1lc3RhbXAgPSB0aW1lLnRpbWUoKQotICAgICAgICB5ZWFyLCBtb250aCwgZGF5LCBoaCwgbW0sIHNzLCB3ZCwgeSwgeiA9IHRpbWUuZ210aW1lKHRpbWVzdGFtcCkKLSAgICAgICAgcyA9ICIlcywgJTAyZCAlM3MgJTRkICUwMmQ6JTAyZDolMDJkIEdNVCIgJSAoCi0gICAgICAgICAgICAgICAgc2VsZi53ZWVrZGF5bmFtZVt3ZF0sCi0gICAgICAgICAgICAgICAgZGF5LCBzZWxmLm1vbnRobmFtZVttb250aF0sIHllYXIsCi0gICAgICAgICAgICAgICAgaGgsIG1tLCBzcykKLSAgICAgICAgcmV0dXJuIHMKKyAgICAgICAgcmV0dXJuIGVtYWlsLnV0aWxzLmZvcm1hdGRhdGUodGltZXN0YW1wLCB1c2VnbXQ9VHJ1ZSkKIAogICAgIGRlZiBsb2dfZGF0ZV90aW1lX3N0cmluZyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IHRpbWUgZm9ybWF0dGVkIGZvciBsb2dnaW5nLiIiIgpAQCAtNzI2LDcgKzcxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CiAgICAgICAgICAgICBkaXNwbGF5cGF0aCA9IHVybGxpYi5wYXJzZS51bnF1b3RlKHBhdGgpCi0gICAgICAgIGRpc3BsYXlwYXRoID0gaHRtbC5lc2NhcGUoZGlzcGxheXBhdGgpCisgICAgICAgIGRpc3BsYXlwYXRoID0gaHRtbC5lc2NhcGUoZGlzcGxheXBhdGgsIHF1b3RlPUZhbHNlKQogICAgICAgICBlbmMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKICAgICAgICAgdGl0bGUgPSAnRGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzJyAlIGRpc3BsYXlwYXRoCiAgICAgICAgIHIuYXBwZW5kKCc8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iICcKQEAgLTc1MCw3ICs3NDEsNyBAQAogICAgICAgICAgICAgci5hcHBlbmQoJzxsaT48YSBocmVmPSIlcyI+JXM8L2E+PC9saT4nCiAgICAgICAgICAgICAgICAgICAgICUgKHVybGxpYi5wYXJzZS5xdW90ZShsaW5rbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpLAotICAgICAgICAgICAgICAgICAgICAgICBodG1sLmVzY2FwZShkaXNwbGF5bmFtZSkpKQorICAgICAgICAgICAgICAgICAgICAgICBodG1sLmVzY2FwZShkaXNwbGF5bmFtZSwgcXVvdGU9RmFsc2UpKSkKICAgICAgICAgci5hcHBlbmQoJzwvdWw+XG48aHI+XG48L2JvZHk+XG48L2h0bWw+XG4nKQogICAgICAgICBlbmNvZGVkID0gJ1xuJy5qb2luKHIpLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICBmID0gaW8uQnl0ZXNJTygpCkBAIC0xMTkxLDE2ICsxMTgyLDE1IEBACiAgICAgc2VydmVyX2FkZHJlc3MgPSAoYmluZCwgcG9ydCkKIAogICAgIEhhbmRsZXJDbGFzcy5wcm90b2NvbF92ZXJzaW9uID0gcHJvdG9jb2wKLSAgICBodHRwZCA9IFNlcnZlckNsYXNzKHNlcnZlcl9hZGRyZXNzLCBIYW5kbGVyQ2xhc3MpCi0KLSAgICBzYSA9IGh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiIsIHNhWzBdLCAicG9ydCIsIHNhWzFdLCAiLi4uIikKLSAgICB0cnk6Ci0gICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIGh0dHBkLnNlcnZlcl9jbG9zZSgpCi0gICAgICAgIHN5cy5leGl0KDApCisgICAgd2l0aCBTZXJ2ZXJDbGFzcyhzZXJ2ZXJfYWRkcmVzcywgSGFuZGxlckNsYXNzKSBhcyBodHRwZDoKKyAgICAgICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQorICAgICAgICBzZXJ2ZV9tZXNzYWdlID0gIlNlcnZpbmcgSFRUUCBvbiB7aG9zdH0gcG9ydCB7cG9ydH0gKGh0dHA6Ly97aG9zdH06e3BvcnR9LykgLi4uIgorICAgICAgICBwcmludChzZXJ2ZV9tZXNzYWdlLmZvcm1hdChob3N0PXNhWzBdLCBwb3J0PXNhWzFdKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9NdWx0aVN0YXR1c0Jhci5weSBiL0xpYi9pZGxlbGliL011bHRpU3RhdHVzQmFyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODJiYTlhLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL011bHRpU3RhdHVzQmFyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotZnJvbSB0a2ludGVyIGltcG9ydCAqCi0KLWNsYXNzIE11bHRpU3RhdHVzQmFyKEZyYW1lKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgKiprdyk6Ci0gICAgICAgIGlmIG1hc3RlciBpcyBOb25lOgotICAgICAgICAgICAgbWFzdGVyID0gVGsoKQotICAgICAgICBGcmFtZS5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICoqa3cpCi0gICAgICAgIHNlbGYubGFiZWxzID0ge30KLQotICAgIGRlZiBzZXRfbGFiZWwoc2VsZiwgbmFtZSwgdGV4dD0nJywgc2lkZT1MRUZULCB3aWR0aD0wKToKLSAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5sYWJlbHM6Ci0gICAgICAgICAgICBsYWJlbCA9IExhYmVsKHNlbGYsIGJvcmRlcndpZHRoPTAsIGFuY2hvcj1XKQotICAgICAgICAgICAgbGFiZWwucGFjayhzaWRlPXNpZGUsIHBhZHk9MCwgcGFkeD00KQotICAgICAgICAgICAgc2VsZi5sYWJlbHNbbmFtZV0gPSBsYWJlbAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGFiZWwgPSBzZWxmLmxhYmVsc1tuYW1lXQotICAgICAgICBpZiB3aWR0aCAhPSAwOgotICAgICAgICAgICAgbGFiZWwuY29uZmlnKHdpZHRoPXdpZHRoKQotICAgICAgICBsYWJlbC5jb25maWcodGV4dD10ZXh0KQotCi1kZWYgX211bHRpc3RhdHVzX2JhcihwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIgJSh4LCB5ICsgMTUwKSkKLSAgICByb290LnRpdGxlKCJUZXN0IG11bHRpc3RhdHVzIGJhciIpCi0gICAgZnJhbWUgPSBGcmFtZShyb290KQotICAgIHRleHQgPSBUZXh0KGZyYW1lKQotICAgIHRleHQucGFjaygpCi0gICAgbXNiID0gTXVsdGlTdGF0dXNCYXIoZnJhbWUpCi0gICAgbXNiLnNldF9sYWJlbCgib25lIiwgImhlbGxvIikKLSAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAid29ybGQiKQotICAgIG1zYi5wYWNrKHNpZGU9Qk9UVE9NLCBmaWxsPVgpCi0KLSAgICBkZWYgY2hhbmdlKCk6Ci0gICAgICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJmb28iKQotICAgICAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAiYmFyIikKLQotICAgIGJ1dHRvbiA9IEJ1dHRvbihyb290LCB0ZXh0PSJVcGRhdGUgc3RhdHVzIiwgY29tbWFuZD1jaGFuZ2UpCi0gICAgYnV0dG9uLnBhY2soc2lkZT1CT1RUT00pCi0gICAgZnJhbWUucGFjaygpCi0gICAgZnJhbWUubWFpbmxvb3AoKQotICAgIHJvb3QubWFpbmxvb3AoKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgotICAgIHJ1bihfbXVsdGlzdGF0dXNfYmFyKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTkVXUy50eHQgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dAppbmRleCBlNjRjNDkzLi5jM2M5ZjljIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ORVdTLnR4dAorKysgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dApAQCAtMSw0MiArMSwxMDEgQEAKLVdoYXQncyBOZXcgaW4gSURMRSAzLjUuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTctMDEtMDE/KgorV2hhdCdzIE5ldyBpbiBJRExFIDMuNi4wPworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisqUmVsZWFzZSBkYXRlOiAyMDE2LTEyLTE2PyoKKworLSBJc3N1ZSAjMTUzMDg6IEFkZCAnaW50ZXJydXB0IGV4ZWN1dGlvbicgKF5DKSB0byBTaGVsbCBtZW51LgorICBQYXRjaCBieSBSb2dlciBTZXJ3eSwgdXBkYXRlZCBieSBCYXlhcmQgUmFuZGVsLgogCiAtIElzc3VlICMyNzkyMjogU3RvcCBJRExFIHRlc3RzIGZyb20gJ2ZsYXNoaW5nJyBndWkgd2lkZ2V0cyBvbiB0aGUgc2NyZWVuLgogCistIElzc3VlICMyNzg5MTogQ29uc2lzdGVudGx5IGdyb3VwIGFuZCBzb3J0IGltcG9ydHMgd2l0aGluIGlkbGVsaWIgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTc2NDI6IGFkZCBsYXJnZXIgZm9udCBzaXplcyBmb3IgY2xhc3Nyb29tIHByb2plY3Rpb24uCisKIC0gQWRkIHZlcnNpb24gdG8gdGl0bGUgb2YgSURMRSBoZWxwIHdpbmRvdy4KIAogLSBJc3N1ZSAjMjU1NjQ6IEluIHNlY3Rpb24gb24gSURMRSAtLSBjb25zb2xlIGRpZmZlcmVuY2VzLCBtZW50aW9uIHRoYXQKICAgdXNpbmcgZXhlYyBtZWFucyB0aGF0IF9fYnVpbHRpbnNfXyBpcyBkZWZpbmVkIGZvciBlYWNoIHN0YXRlbWVudC4KIAorLSBJc3N1ZSAjMjc4MjE6IEZpeCAzLjYuMGEzIHJlZ3Jlc3Npb24gdGhhdCBwcmV2ZW50ZWQgY3VzdG9tIGtleSBzZXRzCisgIGZyb20gYmVpbmcgc2VsZWN0ZWQgd2hlbiBubyBjdXN0b20gdGhlbWUgd2FzIGRlZmluZWQuCisKIC0gSXNzdWUgIzI3NzE0OiB0ZXh0X3RleHR2aWV3IGFuZCB0ZXN0X2F1dG9jb21wbGV0ZSBub3cgcGFzcyB3aGVuIHJlLXJ1bgogICBpbiB0aGUgc2FtZSBwcm9jZXNzLiAgVGhpcyBvY2N1cnMgd2hlbiB0ZXN0X2lkbGUgZmFpbHMgd2hlbiBydW4gd2l0aCB0aGUKICAgLXcgb3B0aW9uIGJ1dCB3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCiAKKy0gSXNzdWUgIzI3NjIxOiBQdXQgcXVlcnkgcmVzcG9uc2UgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyBpbiB0aGUgcXVlcnkKKyAgYm94IGl0c2VsZiBpbnN0ZWFkIG9mIGluIGEgc2VwYXJhdGUgbWFzc2FnZWJveC4gIFJlZG8gdGVzdHMgdG8gbWF0Y2guCisgIEFkZCBNYWMgT1NYIHJlZmluZW1lbnRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNzYyMDogRXNjYXBlIGtleSBub3cgY2xvc2VzIFF1ZXJ5IGJveCBhcyBjYW5jZWxsZWQuCisKKy0gSXNzdWUgIzI3NjA5OiBJRExFOiB0YWIgYWZ0ZXIgaW5pdGlhbCB3aGl0ZXNwYWNlIHNob3VsZCB0YWIsIG5vdAorICBhdXRvY29tcGxldGUuIFRoaXMgZml4ZXMgcHJvYmxlbSB3aXRoIHdyaXRpbmcgZG9jc3RyaW5ncyBhdCBsZWFzdAorICB0d2ljZSBpbmRlbnRlZC4KKworLSBJc3N1ZSAjMjc2MDk6IEV4cGxpY2l0bHkgcmV0dXJuIE5vbmUgd2hlbiB0aGVyZSBhcmUgYWxzbyBub24tTm9uZQorICByZXR1cm5zLiBJbiBhIGZldyBjYXNlcywgcmV2ZXJzZSBhIGNvbmRpdGlvbiBhbmQgZWxpbWluYXRlIGEgcmV0dXJuLgorCiAtIElzc3VlICMyNTUwNzogSURMRSBubyBsb25nZXIgcnVucyBidWdneSBjb2RlIGJlY2F1c2Ugb2YgaXRzIHRraW50ZXIgaW1wb3J0cy4KICAgVXNlcnMgbXVzdCBpbmNsdWRlIHRoZSBzYW1lIGltcG9ydHMgcmVxdWlyZWQgdG8gcnVuIGRpcmVjdGx5IGluIFB5dGhvbi4KIAorLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgogCistIElzc3VlICMyNzQ3NzogSURMRSBzZWFyY2ggZGlhbG9ncyBub3cgdXNlIHR0ayB3aWRnZXRzLgorCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCistIElzc3VlICMyNzQ1MjogbWFrZSBjb21tYW5kIGxpbmUgImlkbGUtdGVzdD4gcHl0aG9uIHRlc3RfaGVscC5weSIgd29yay4KKyAgX19maWxlX18gaXMgcmVsYXRpdmUgd2hlbiBweXRob24gaXMgc3RhcnRlZCBpbiB0aGUgZmlsZSdzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgorCistIElzc3VlICMyNzM4MDogSURMRTogYWRkIHF1ZXJ5LnB5IHdpdGggYmFzZSBRdWVyeSBkaWFsb2cgYW5kIHR0ayB3aWRnZXRzLgorICBNb2R1bGUgaGFkIHN1YmNsYXNzZXMgU2VjdGlvbk5hbWUsIE1vZHVsZU5hbWUsIGFuZCBIZWxwU291cmNlLCB3aGljaCBhcmUKKyAgdXNlZCB0byBnZXQgaW5mb3JtYXRpb24gZnJvbSB1c2VycyBieSBjb25maWdkaWFsb2cgYW5kIGZpbGUgPT5Mb2FkIE1vZHVsZS4KKyAgRWFjaCBzdWJjbGFzcyBoYXMgaXR3IG93biB2YWxpZGl0eSBjaGVja3MuICBVc2luZyBNb2R1bGVOYW1lIGFsbG93cyB1c2VycworICB0byBlZGl0IGJhZCBtb2R1bGUgbmFtZXMgaW5zdGVhZCBvZiBzdGFydGluZyBvdmVyLgorICBBZGQgdGVzdHMgYW5kIGRlbGV0ZSB0aGUgdHdvIGZpbGVzIGNvbWJpbmVkIGludG8gdGhlIG5ldyBvbmUuCisKKy0gSXNzdWUgIzI3MzcyOiBUZXN0X2lkbGUgbm8gbG9uZ2VyIGNoYW5nZXMgdGhlIGxvY2FsZS4KKwogLSBJc3N1ZSAjMjczNjU6IEFsbG93IG5vbi1hc2NpaSBjaGFycyBpbiBJRExFIE5FV1MudHh0LCBmb3IgY29udHJpYnV0b3IgbmFtZXMuCiAKIC0gSXNzdWUgIzI3MjQ1OiBJRExFOiBDbGVhbmx5IGRlbGV0ZSBjdXN0b20gdGhlbWVzIGFuZCBrZXkgYmluZGluZ3MuCiAgIFByZXZpb3VzbHksIHdoZW4gSURMRSB3YXMgc3RhcnRlZCBmcm9tIGEgY29uc29sZSBvciBieSBpbXBvcnQsIGEgY2FzY2FkZQogICBvZiB3YXJuaW5ncyB3YXMgZW1pdHRlZC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKKy0gSXNzdWUgIzI0MTM3OiBSdW4gSURMRSwgdGVzdF9pZGxlLCBhbmQgaHRlc3Qgd2l0aCB0a2ludGVyIGRlZmF1bHQgcm9vdCBkaXNhYmxlZC4KKyAgRml4IGNvZGUgYW5kIHRlc3RzIHRoYXQgZmFpbCB3aXRoIHRoaXMgcmVzdHJpY3Rpb24uCisgIEZpeCBodGVzdHMgdG8gbm90IGNyZWF0ZSBhIHNlY29uZCBhbmQgcmVkdW5kYW50IHJvb3QgYW5kIG1haW5sb29wLgogCi1XaGF0J3MgTmV3IGluIElETEUgMy41LjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTI2KgorLSBJc3N1ZSAjMjczMTA6IEZpeCBJRExFLmFwcCBmYWlsdXJlIHRvIGxhdW5jaCBvbiBPUyBYIGR1ZSB0byB2ZXN0aWdpYWwgaW1wb3J0LgogCiAtIElzc3VlICM1MTI0OiBQYXN0ZSB3aXRoIHRleHQgc2VsZWN0ZWQgbm93IHJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gb24gWDExLgogICBUaGlzIG1hdGNoZXMgaG93IHBhc3RlIHdvcmtzIG9uIFdpbmRvd3MsIE1hYywgbW9zdCBtb2Rlcm4gTGludXggYXBwcywKICAgYW5kIHR0ayB3aWRnZXRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMjQ3NTA6IFN3aXRjaCBhbGwgc2Nyb2xsYmFycyBpbiBJRExFIHRvIHR0ayB2ZXJzaW9ucy4KKyAgV2hlcmUgbmVlZGVkLCBtaW5pbWFsIHRlc3RzIGFyZSBhZGRlZCB0byBjb3ZlciBjaGFuZ2VzLgorCistIElzc3VlICMyNDc1OTogSURMRSByZXF1aXJlcyB0ayA4LjUgYW5kIGF2YWlsYWJpbGl0eSB0dGsgd2lkZ2V0cy4KKyAgRGVsZXRlIG5vdyB1bm5lZWRlZCB0ayB2ZXJzaW9uIHRlc3RzIGFuZCBjb2RlIGZvciBvbGRlciB2ZXJzaW9ucy4KKyAgQWRkIHRlc3QgZm9yIElETEUgc3ludGF4IGNvbG9yaXplci4KKworLSBJc3N1ZSAjMjcyMzk6IGlkbGVsaWIubWFjb3N4LmlzWHl6VGsgZnVuY3Rpb25zIGluaXRpYWxpemUgYXMgbmVlZGVkLgorCistIElzc3VlICMyNzI2MjogbW92ZSBBcXVhIHVuYmluZGluZyBjb2RlLCB3aGljaCBlbmFibGUgY29udGV4dCBtZW51cywgdG8gbWF4b3N4LgorCiAtIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKICAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KIAotLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZicgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCistIElzc3VlICMyNzE5NjogU3RvcCAnVGhlbWVDaGFuZ2VkJyB3YXJuaW5ncyB3aGVuIHJ1bm5pbmcgSURMRSB0ZXN0cy4KICAgVGhlc2UgcGVyc2lzdGVkIGFmdGVyIG90aGVyIHdhcm5pbmdzIHdlcmUgc3VwcHJlc3NlZCBpbiAjMjA1NjcuCiAgIEFwcGx5IFNlcmhpeSBTdG9yY2hha2EncyB1cGRhdGVfaWRsZXRhc2tzIHNvbHV0aW9uIHRvIGZvdXIgdGVzdCBmaWxlcy4KICAgUmVjb3JkIHRoaXMgYWRkaXRpb25hbCBhZHZpY2UgaW4gaWRsZV90ZXN0L1JFQURNRS50eHQKQEAgLTQ0LDkgKzEwMywyNiBAQAogLSBJc3N1ZSAjMjA1Njc6IFJldmlzZSBpZGxlX3Rlc3QvUkVBRE1FLnR4dCB3aXRoIGFkdmljZSBhYm91dCBhdm9pZGluZwogICB0ayB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gdGVzdHMuICBBcHBseSBhZHZpY2UgdG8gc2V2ZXJhbCBJRExFIHRlc3RzLgogCistIElzc3VlICMgMjQyMjU6IFVwZGF0ZSBpZGxlbGliL1JFQURNRS50eHQgd2l0aCBuZXcgZmlsZSBuYW1lcworICBhbmQgZXZlbnQgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzI3MTU2OiBSZW1vdmUgb2Jzb2xldGUgY29kZSBub3QgdXNlZCBieSBJRExFLiAgUmVwbGFjZW1lbnRzOgorICAxLiBoZWxwLnR4dCwgcmVwbGFjZWQgYnkgaGVscC5odG1sLCBpcyBvdXQtb2YtZGF0ZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgorICBJdHMgZGVkaWNhdGVkIHZpZXdlciBoYXMgYmUgcmVwbGFjZWQgYnkgdGhlIGh0bWwgdmlld2VyIGluIGhlbHAucHkuCisgIDIuICdpbXBvcnQgaWRsZXZlcjsgSSA9IGlkbGV2ZXIuSURMRV9WRVJTSU9OJyBpcyB0aGUgc2FtZSBhcworICAnaW1wb3J0IHN5czsgSSA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV0nCisgIDMuIEFmdGVyICdvYiA9IHN0YWNrdmlld2VyLlZhcmlhYmxlc1RyZWVJdGVtKCphcmdzKScsCisgICdvYi5rZXlzKCknID09ICdsaXN0KG9iLm9iamVjdC5rZXlzKS4KKyAgNC4gSW4gbWFjb3NjLCBydW5uaW5nQXNPU1hBUFAgPT0gaXNBcXVhVGs7IGlkQ2FyYm9uQXF1YVRrID09IGlzQ2FyYm9uVGsKKwogLSBJc3N1ZSAjMjcxMTc6IE1ha2UgY29sb3JpemVyIGh0ZXN0IGFuZCB0dXJ0bGVkZW1vIHdvcmsgd2l0aCBkYXJrIHRoZW1lcy4KICAgTW92ZSBjb2RlIGZvciBjb25maWd1cmluZyB0ZXh0IHdpZGdldCBjb2xvcnMgdG8gYSBuZXcgZnVuY3Rpb24uCiAKKy0gSXNzdWUgIzI0MjI1OiBSZW5hbWUgbWFueSBpZGxlbGliLyoucHkgYW5kIGlkbGVfdGVzdC90ZXN0XyoucHkgZmlsZXMuCisgIEVkaXQgZmlsZXMgdG8gcmVwbGFjZSBvbGQgbmFtZXMgd2l0aCBuZXcgbmFtZXMgd2hlbiB0aGUgb2xkIG5hbWUKKyAgcmVmZXJyZWQgdG8gdGhlIG1vZHVsZSByYXRoZXIgdGhhbiB0aGUgY2xhc3MgaXQgY29udGFpbmVkLgorICBTZWUgdGhlIGlzc3VlIGFuZCBJRExFIHNlY3Rpb24gaW4gV2hhdCdzIE5ldyBpbiAzLjYgZm9yIG1vcmUuCisKIC0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgogICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgogCkBAIC01OSw4ICsxMzUsOCBAQAogLSBJc3N1ZSAjMTg0MTA6IEFkZCB0ZXN0IGZvciBJRExFJ3Mgc2VhcmNoIGRpYWxvZy4KICAgT3JpZ2luYWwgcGF0Y2ggYnkgV2VzdGxleSBNYXJ0w61uZXouCiAKLS0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgdW5kbyBkZWxlZ2F0b3IuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthciAuCistIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIHVuZG8gZGVsZWdhdG9yLiAgUGF0Y2ggbW9zdGx5IGJ5CisgIFNhaW1hZGhhdiBIZWJsaWthciAuCiAKIC0gSXNzdWUgIzI3MDQ0OiBBZGQgQ29uZmlnRGlhbG9nLnJlbW92ZV92YXJfY2FsbGJhY2tzIHRvIHN0b3AgbWVtb3J5IGxlYWtzLgogCkBAIC03OSwxMSArMTU1LDYgQEAKICAgTUFSSyBpbiBSRUFETUUudHh0IGFuZCBvcGVuIHRoaXMgYW5kIE5FV1MudHh0IHdpdGggJ2FzY2lpJy4KICAgUmUtZW5jb2RlIENSRURJVFMudHh0IHRvIHV0Zi04IGFuZCBvcGVuIGl0IHdpdGggJ3V0Zi04Jy4KIAotCi1XaGF0J3MgTmV3IGluIElETEUgMy41LjE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAyMDE1LTEyLTA2KgotCiAtIElzc3VlIDE1MzQ4OiBTdG9wIHRoZSBkZWJ1Z2dlciBlbmdpbmUgKG5vcm1hbGx5IGluIGEgdXNlciBwcm9jZXNzKQogICBiZWZvcmUgY2xvc2luZyB0aGUgZGVidWdnZXIgd2luZG93IChydW5uaW5nIGluIHRoZSBJRExFIHByb2Nlc3MpLgogICBUaGlzIHByZXZlbnRzIHRoZSBSdW50aW1lRXJyb3JzIHRoYXQgd2VyZSBiZWluZyBjYXVnaHQgYW5kIGlnbm9yZWQuCkBAIC0zNjEsNiArNDMyLDExIEBACiAtIFVzZSBvZiAnZmlsdGVyJyBpbiBrZXliaW5kaW5nRGlhbG9nLnB5IHdhcyBjYXVzaW5nIGN1c3RvbSBrZXkgYXNzaWdubWVudCB0bwogICBmYWlsLiAgUGF0Y2ggNTcwNyBhbWF1cnkuZm9yZ2VvdGRhcmMuCiAKKworV2hhdCdzIE5ldyBpbiBJRExFIDMuMWExPworPT09PT09PT09PT09PT09PT09PT09PT09PQorKlJlbGVhc2UgZGF0ZTogMDctTWFyLTA5KgorCiAtIElzc3VlICM0ODE1OiBPZmZlciBjb252ZXJzaW9uIHRvIFVURi04IGlmIHNvdXJjZSBmaWxlcyBoYXZlCiAgIG5vIGVuY29kaW5nIGRlY2xhcmF0aW9uIGFuZCBhcmUgbm90IGVuY29kZWQgaW4gVVRGLTguCiAKQEAgLTQwMCw2ICs0NzYsMTEgQEAKIAogLSBJc3N1ZSAjMzU0OTogT24gTWFjT1MgdGhlIHByZWZlcmVuY2VzIG1lbnUgd2FzIG5vdCBwcmVzZW50CiAKKworV2hhdCdzIE5ldyBpbiBJRExFIDMuMD8KKz09PT09PT09PT09PT09PT09PT09PT09CisqUmVsZWFzZSBkYXRlOiAwMy1EZWMtMjAwOCoKKwogLSBJRExFIHdvdWxkIHByaW50IGEgIlVuaGFuZGxlZCBzZXJ2ZXIgZXhjZXB0aW9uISIgbWVzc2FnZSB3aGVuIGludGVybmFsCiAgIGRlYnVnZ2luZyBpcyBlbmFibGVkLgogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0IGIvTGliL2lkbGVsaWIvUkVBRE1FLnR4dAppbmRleCBiYzE2OWM4Li43NGVjMDhhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0CisrKyBiL0xpYi9pZGxlbGliL1JFQURNRS50eHQKQEAgLTI5LDYxICsyOSw2MSBAQAogCiBJbXBsZW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLS0KLUF1dG9Db21wbGV0ZS5weSAgICMgQ29tcGxldGUgYXR0cmlidXRlIG5hbWVzIG9yIGZpbGVuYW1lcy4KLUF1dG9Db21wbGV0ZVdpbmRvdy5weSAgIyBEaXNwbGF5IGNvbXBsZXRpb25zLgotQXV0b0V4cGFuZC5weSAgICAgIyBFeHBhbmQgd29yZCB3aXRoIHByZXZpb3VzIHdvcmQgaW4gZmlsZS4KLUJpbmRpbmdzLnB5ICAgICAgICMgRGVmaW5lIG1vc3Qgb2YgSURMRSBtZW51LgotQ2FsbFRpcFdpbmRvdy5weSAgIyBEaXNwbGF5IGNhbGx0aXAuCi1DYWxsVGlwcy5weSAgICAgICAjIENyZWF0ZSBjYWxsdGlwIHRleHQuCi1DbGFzc0Jyb3dzZXIucHkgICAjIENyZWF0ZSBtb2R1bGUgYnJvd3NlciB3aW5kb3cuCi1Db2RlQ29udGV4dC5weSAgICAjIFNob3cgY29tcG91bmQgc3RhdGVtZW50IGhlYWRlcnMgb3RoZXJ3aXNlIG5vdCB2aXNpYmxlLgotQ29sb3JEZWxlZ2F0b3IucHkgIyBDb2xvcml6ZSB0ZXh0IChuaW0pLgotRGVidWdnZXIucHkgICAgICAgIyBEZWJ1ZyBjb2RlIHJ1biBmcm9tIGVkaXRvcjsgc2hvdyB3aW5kb3cuCi1EZWxlZ2F0b3IucHkgICAgICAjIERlZmluZSBiYXNlIGNsYXNzIGZvciBkZWxlZ2F0b3JzIChuaW0pLgotRWRpdG9yV2luZG93LnB5ICAgIyBEZWZpbmUgbW9zdCBvZiBlZGl0b3IgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLgotRmlsZUxpc3QucHkgICAgICAgIyBPcGVuIGZpbGVzIGFuZCBtYW5hZ2UgbGlzdCBvZiBvcGVuIHdpbmRvd3MgKG5pbSkuCi1Gb3JtYXRQYXJhZ3JhcGgucHkjIFJlLXdyYXAgbXVsdGlsaW5lIHN0cmluZ3MgYW5kIGNvbW1lbnRzLgotR3JlcERpYWxvZy5weSAgICAgIyBGaW5kIGFsbCBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIG11bHRpcGxlIGZpbGVzLgotSHlwZXJQYXJzZXIucHkgICAgIyBQYXJzZSBjb2RlIGFyb3VuZCBhIGdpdmVuIGluZGV4LgotSU9CaW5kaW5nLnB5ICAgICAgIyBPcGVuLCByZWFkLCBhbmQgd3JpdGUgZmlsZXMKLUlkbGVIaXN0b3J5LnB5ICAgICMgR2V0IHByZXZpb3VzIG9yIG5leHQgdXNlciBpbnB1dCBpbiBzaGVsbCAobmltKQotTXVsdGlDYWxsLnB5ICAgICAgIyBXcmFwIHRrIHdpZGdldCB0byBhbGxvdyBtdWx0aXBsZSBjYWxscyBwZXIgZXZlbnQgKG5pbSkuCi1NdWx0aVN0YXR1c0Jhci5weSAjIERlZmluZSBzdGF0dXMgYmFyIGZvciB3aW5kb3dzIChuaW0pLgotT2JqZWN0QnJvd3Nlci5weSAgIyBEZWZpbmUgY2xhc3MgdXNlZCBpbiBTdGFja1ZpZXdlciAobmltKS4KLU91dHB1dFdpbmRvdy5weSAgICMgQ3JlYXRlIHdpbmRvdyBmb3IgZ3JlcCBvdXRwdXQuCi1QYXJlbk1hdGNoLnB5ICAgICAjIE1hdGNoIGZlbmNlcG9zdHM6ICgpLCBbXSwgYW5kIHt9LgotUGF0aEJyb3dzZXIucHkgICAgIyBDcmVhdGUgcGF0aCBicm93c2VyIHdpbmRvdy4KLVBlcmNvbGF0b3IucHkgICAgICMgTWFuYWdlIGRlbGVnYXRvciBzdGFjayAobmltKS4KLVB5UGFyc2UucHkgICAgICAgICMgR2l2ZSBpbmZvcm1hdGlvbiBvbiBjb2RlIGluZGVudGF0aW9uCi1QeVNoZWxsLnB5ICAgICAgICAjIFN0YXJ0IElETEUsIG1hbmFnZSBzaGVsbCwgY29tcGxldGUgZWRpdG9yIHdpbmRvdwotUmVtb3RlRGVidWdnZXIucHkgIyBEZWJ1ZyBjb2RlIHJ1biBpbiByZW1vdGUgcHJvY2Vzcy4KLVJlbW90ZU9iamVjdEJyb3dzZXIucHkgIyBDb21tdW5pY2F0ZSBvYmplY3RzIGJldHdlZW4gcHJvY2Vzc2VzIHdpdGggcnBjIChuaW0pLgotUmVwbGFjZURpYWxvZy5weSAgIyBTZWFyY2ggYW5kIHJlcGxhY2UgcGF0dGVybiBpbiB0ZXh0LgotUnN0cmlwRXh0ZW5zaW9uLnB5IyBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlCi1TY3JpcHRCaW5kaW5nLnB5ICAjIENoZWNrIGFuZCBydW4gdXNlciBjb2RlLgotU2Nyb2xsZWRMaXN0LnB5ICAgIyBEZWZpbmUgU2Nyb2xsZWRMaXN0IHdpZGdldCBmb3IgSURMRSAobmltKS4KLVNlYXJjaERpYWxvZy5weSAgICMgU2VhcmNoIGZvciBwYXR0ZXJuIGluIHRleHQuCi1TZWFyY2hEaWFsb2dCYXNlLnB5ICAjIERlZmluZSBiYXNlIGZvciBzZWFyY2gsIHJlcGxhY2UsIGFuZCBncmVwIGRpYWxvZ3MuCi1TZWFyY2hFbmdpbmUucHkgICAjIERlZmluZSBlbmdpbmUgZm9yIGFsbCAzIHNlYXJjaCBkaWFsb2dzLgotU3RhY2tWaWV3ZXIucHkgICAgIyBWaWV3IHN0YWNrIGFmdGVyIGV4Y2VwdGlvbi4KLVRyZWVXaWRnZXQucHkgICAgICMgRGVmaW5lIHRyZWUgd2lkZ2VyLCB1c2VkIGluIGJyb3dzZXJzIChuaW0pLgotVW5kb0RlbGVnYXRvci5weSAgIyBNYW5hZ2UgdW5kbyBzdGFjay4KLVdpZGdldFJlZGlyZWN0b3IucHkgIyBJbnRlcmNlcHQgd2lkZ2V0IHN1YmNvbW1hbmRzIChmb3IgcGVyY29sYXRvcikgKG5pbSkuCi1XaW5kb3dMaXN0LnB5ICAgICAjIE1hbmFnZSB3aW5kb3cgbGlzdCBhbmQgZGVmaW5lIGxpc3RlZCB0b3AgbGV2ZWwuCi1ab29tSGVpZ2h0LnB5ICAgICAjIFpvb20gd2luZG93IHRvIGZ1bGwgaGVpZ2h0IG9mIHNjcmVlbi4KLWFib3V0RGlhbG9nLnB5ICAgICMgRGlzcGxheSBBYm91dCBJRExFIGRpYWxvZy4KLWNvbmZpZ0RpYWxvZy5weSAgICMgRGlzcGxheSB1c2VyIGNvbmZpZ3VyYXRpb24gZGlhbG9ncy4KLWNvbmZpZ0hhbmRsZXIucHkgICMgTG9hZCwgZmV0Y2gsIGFuZCBzYXZlIGNvbmZpZ3VyYXRpb24gKG5pbSkuCi1jb25maWdIZWxwU291cmNlRWRpdC5weSAgIyBTcGVjaWZ5IGhlbHAgc291cmNlLgotY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkgICMgU3BlZmlmeSB1c2VyIGNvbmZpZyBzZWN0aW9uIG5hbWUKLWR5bk9wdGlvbk1lbnVXaWRnZXQucHkgICMgZGVmaW5lIG11dGFibGUgT3B0aW9uTWVudSB3aWRnZXQgKG5pbSkuCithdXRvY29tcGxldGUucHkgICAjIENvbXBsZXRlIGF0dHJpYnV0ZSBuYW1lcyBvciBmaWxlbmFtZXMuCithdXRvY29tcGxldGVfdy5weSAjIERpc3BsYXkgY29tcGxldGlvbnMuCithdXRvZXhwYW5kLnB5ICAgICAjIEV4cGFuZCB3b3JkIHdpdGggcHJldmlvdXMgd29yZCBpbiBmaWxlLgorYnJvd3Nlci5weSAgICAgICAgIyBDcmVhdGUgbW9kdWxlIGJyb3dzZXIgd2luZG93LgorY2FsbHRpcF93LnB5ICAgICAgIyBEaXNwbGF5IGNhbGx0aXAuCitjYWxsdGlwcy5weSAgICAgICAjIENyZWF0ZSBjYWxsdGlwIHRleHQuCitjb2RlY29udGV4dC5weSAgICAjIFNob3cgY29tcG91bmQgc3RhdGVtZW50IGhlYWRlcnMgb3RoZXJ3aXNlIG5vdCB2aXNpYmxlLgorY29sb3JpemVyLnB5ICAgICAgIyBDb2xvcml6ZSB0ZXh0IChuaW0pCitjb25maWcucHkgICAgICAgICAjIExvYWQsIGZldGNoLCBhbmQgc2F2ZSBjb25maWd1cmF0aW9uIChuaW0pLgorY29uZmlnZGlhbG9nLnB5ICAgIyBEaXNwbGF5IHVzZXIgY29uZmlndXJhdGlvbiBkaWFsb2dzLgorY29uZmlnX2hlbHAucHkgICAgIyBTcGVjaWZ5IGhlbHAgc291cmNlIGluIGNvbmZpZ2RpYWxvZy4KK2NvbmZpZ19rZXkucHkgICAgICMgQ2hhbmdlIGtleWJpbmRpbmdzLgorZHlub3B0aW9uLnB5ICAgICAgIyBEZWZpbmUgbXV0YWJsZSBPcHRpb25NZW51IHdpZGdldCAobmltKS4KK2RlYnVnb2JqLnB5ICAgICAgICMgRGVmaW5lIGNsYXNzIHVzZWQgaW4gc3RhY2t2aWV3ZXIuCitkZWJ1Z29ial9yLnB5ICAgICAjIENvbW11bmljYXRlIG9iamVjdHMgYmV0d2VlbiBwcm9jZXNzZXMgd2l0aCBycGMgKG5pbSkuCitkZWJ1Z2dlci5weSAgICAgICAjIERlYnVnIGNvZGUgcnVuIGZyb20gc2hlbGwgb3IgZWRpdG9yOyBzaG93IHdpbmRvdy4KK2RlYnVnZ2VyX3IucHkgICAgICMgRGVidWcgY29kZSBydW4gaW4gcmVtb3RlIHByb2Nlc3MuCitkZWxlZ2F0b3IucHkgICAgICAjIERlZmluZSBiYXNlIGNsYXNzIGZvciBkZWxlZ2F0b3JzIChuaW0pLgorZWRpdG9yLnB5ICAgICAgICAgIyBEZWZpbmUgbW9zdCBvZiBlZGl0b3IgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLgorZmlsZWxpc3QucHkgICAgICAgIyBPcGVuIGZpbGVzIGFuZCBtYW5hZ2UgbGlzdCBvZiBvcGVuIHdpbmRvd3MgKG5pbSkuCitncmVwLnB5ICAgICAgICAgICAjIEZpbmQgYWxsIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gaW4gbXVsdGlwbGUgZmlsZXMuCiBoZWxwLnB5ICAgICAgICAgICAjIERpc3BsYXkgSURMRSdzIGh0bWwgZG9jLgota2V5YmluZGluZ0RpYWxvZy5weSAgIyBDaGFuZ2Uga2V5YmluZGluZ3MuCi1tYWNvc3hTdXBwb3J0LnB5ICAjIEhlbHAgSURMRSBydW4gb24gTWFjcyAobmltKS4KK2hlbHBfYWJvdXQucHkgICAgICMgRGlzcGxheSBBYm91dCBJRExFIGRpYWxvZy4KK2hpc3RvcnkucHkgICAgICAgICMgR2V0IHByZXZpb3VzIG9yIG5leHQgdXNlciBpbnB1dCBpbiBzaGVsbCAobmltKQoraHlwZXJwYXJzZXIucHkgICAgIyBQYXJzZSBjb2RlIGFyb3VuZCBhIGdpdmVuIGluZGV4LgoraW9tZW51LnB5ICAgICAgICAgIyBPcGVuLCByZWFkLCBhbmQgd3JpdGUgZmlsZXMKK21hY29zeC5weSAgICAgICAgICMgSGVscCBJRExFIHJ1biBvbiBNYWNzIChuaW0pLgorbWFpbm1lbnUucHkgICAgICAgIyBEZWZpbmUgbW9zdCBvZiBJRExFIG1lbnUuCittdWx0aWNhbGwucHkgICAgICAjIFdyYXAgdGsgd2lkZ2V0IHRvIGFsbG93IG11bHRpcGxlIGNhbGxzIHBlciBldmVudCAobmltKS4KK291dHdpbi5weSAgICAgICAgICMgQ3JlYXRlIHdpbmRvdyBmb3IgZ3JlcCBvdXRwdXQuCitwYXJhZ3JhcGgucHkgICAgICAjIFJlLXdyYXAgbXVsdGlsaW5lIHN0cmluZ3MgYW5kIGNvbW1lbnRzLgorcGFyZW5tYXRjaC5weSAgICAgIyBNYXRjaCBmZW5jZXBvc3RzOiAoKSwgW10sIGFuZCB7fS4KK3BhdGhicm93c2VyLnB5ICAgICMgQ3JlYXRlIHBhdGggYnJvd3NlciB3aW5kb3cuCitwZXJjb2xhdG9yLnB5ICAgICAjIE1hbmFnZSBkZWxlZ2F0b3Igc3RhY2sgKG5pbSkuCitweXBhcnNlLnB5ICAgICAgICAjIEdpdmUgaW5mb3JtYXRpb24gb24gY29kZSBpbmRlbnRhdGlvbgorcHlzaGVsbC5weSAgICAgICAgIyBTdGFydCBJRExFLCBtYW5hZ2Ugc2hlbGwsIGNvbXBsZXRlIGVkaXRvciB3aW5kb3cKK3F1ZXJ5LnB5ICAgICAgICAgICMgUXVlcnkgdXNlciBmb3IgaW5mb3JtYXRpb24KK3JlZGlyZWN0b3IucHkgICAgICMgSW50ZXJjZXB0IHdpZGdldCBzdWJjb21tYW5kcyAoZm9yIHBlcmNvbGF0b3IpIChuaW0pLgorcmVwbGFjZS5weSAgICAgICAgIyBTZWFyY2ggYW5kIHJlcGxhY2UgcGF0dGVybiBpbiB0ZXh0LgogcnBjLnB5ICAgICAgICAgICAgIyBDb21tdWljYXRlIGJldHdlZW4gaWRsZSBhbmQgdXNlciBwcm9jZXNzZXMgKG5pbSkuCityc3RyaXAucHkgICAgICAgICAjIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UuCiBydW4ucHkgICAgICAgICAgICAjIE1hbmFnZSB1c2VyIGNvZGUgZXhlY3V0aW9uIHN1YnByb2Nlc3MuCitydW5zY3JpcHQucHkgICAgICAjIENoZWNrIGFuZCBydW4gdXNlciBjb2RlLgorc2Nyb2xsZWRsaXN0LnB5ICAgIyBEZWZpbmUgc2Nyb2xsZWRsaXN0IHdpZGdldCBmb3IgSURMRSAobmltKS4KK3NlYXJjaC5weSAgICAgICAgICMgU2VhcmNoIGZvciBwYXR0ZXJuIGluIHRleHQuCitzZWFyY2hiYXNlLnB5ICAgICAjIERlZmluZSBiYXNlIGZvciBzZWFyY2gsIHJlcGxhY2UsIGFuZCBncmVwIGRpYWxvZ3MuCitzZWFyY2hlbmdpbmUucHkgICAjIERlZmluZSBlbmdpbmUgZm9yIGFsbCAzIHNlYXJjaCBkaWFsb2dzLgorc3RhY2t2aWV3ZXIucHkgICAgIyBWaWV3IHN0YWNrIGFmdGVyIGV4Y2VwdGlvbi4KK3N0YXR1c2Jhci5weSAgICAgICMgRGVmaW5lIHN0YXR1cyBiYXIgZm9yIHdpbmRvd3MgKG5pbSkuCiB0YWJiZWRwYWdlcy5weSAgICAjIERlZmluZSB0YWJiZWQgcGFnZXMgd2lkZ2V0IChuaW0pLgotdGV4dFZpZXcucHkgICAgICAgIyBEZWZpbmUgcmVhZC1vbmx5IHRleHQgd2lkZ2V0IChuaW0pLgordGV4dHZpZXcucHkgICAgICAgIyBEZWZpbmUgcmVhZC1vbmx5IHRleHQgd2lkZ2V0IChuaW0pLgordHJlZS5weSAgICAgICAgICAgIyBEZWZpbmUgdHJlZSB3aWRnZXIsIHVzZWQgaW4gYnJvd3NlcnMgKG5pbSkuCit1bmRvLnB5ICAgICAgICAgICAjIE1hbmFnZSB1bmRvIHN0YWNrLgord2luZG93cy5weSAgICAgICAgIyBNYW5hZ2Ugd2luZG93IGxpc3QgYW5kIGRlZmluZSBsaXN0ZWQgdG9wIGxldmVsLgorem9vbWhlaWdodC5weSAgICAgIyBab29tIHdpbmRvdyB0byBmdWxsIGhlaWdodCBvZiBzY3JlZW4uCiAKIENvbmZpZ3VyYXRpb24KIC0tLS0tLS0tLS0tLS0KQEAgLTEwNCwxMjcgKzEwNCwxNDggQEAKIAogU3ViZGlyZWN0b3JpZXMKIC0tLS0tLS0tLS0tLS0tCi1JY29ucyAgIyBzbWFsbCBpbWFnZSBmaWxlcwotaWRsZV90ZXN0ICAjIGZpbGVzIGZvciBodW1hbiB0ZXN0IGFuZCBhdXRvbWF0ZWQgdW5pdCB0ZXN0cworSWNvbnMgICAgICAgICMgc21hbGwgaW1hZ2UgZmlsZXMKK2lkbGVfdGVzdCAgICAjIGZpbGVzIGZvciBodW1hbiB0ZXN0IGFuZCBhdXRvbWF0ZWQgdW5pdCB0ZXN0cwogCiBVbnVzZWQgYW5kIERlcHJlY2F0ZWQgZmlsZXMgYW5kIG9iamVjdHMgKG5pbSkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotRWRpdG9yV2luZG93LnB5OiBIZWxwZGlhbG9nIGFuZCBoZWxwRGlhbG9nCi1Ub29sVGlwLnB5OiB1bnVzZWQuCi1oZWxwLnR4dAotaWRsZXZlci5weQordG9vbHRpcC5weSAjIHVudXNlZAorCiAKIAogSURMRSBNRU5VUwotVG9wIGxldmVsIGl0ZW1zIGFuZCBtb3N0IHN1Ym1lbnUgaXRlbXMgYXJlIGRlZmluZWQgaW4gQmluZGluZ3MuCitUb3AgbGV2ZWwgaXRlbXMgYW5kIG1vc3Qgc3VibWVudSBpdGVtcyBhcmUgZGVmaW5lZCBpbiBtYWlubWVudS4KIEV4dGVuc3Rpb25zIGFkZCBzdWJtZW51IGl0ZW1zIHdoZW4gYWN0aXZlLiAgVGhlIG5hbWVzIGdpdmVuIGFyZQogZm91bmQsIHF1b3RlZCwgaW4gb25lIG9mIHRoZXNlIG1vZHVsZXMsIHBhaXJlZCB3aXRoIGEgJzw8cHNldWRvZXZlbnQ+PicuCiBFYWNoIHBzZXVkb2V2ZW50IGlzIGJvdW5kIHRvIGFuIGV2ZW50IGhhbmRsZXIuICBTb21lIGV2ZW50IGhhbmRsZXJzCiBjYWxsIGFub3RoZXIgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSBhY3R1YWwgd29yay4gIFRoZSBhbm5vdGF0aW9ucyBiZWxvdwogYXJlIGludGVuZGVkIHRvIGF0IGxlYXN0IGdpdmUgdGhlIG1vZHVsZSB3aGVyZSB0aGUgYWN0dWFsIHdvcmsgaXMgZG9uZS4KKydlRVcnID0gZWRpdG9yLkVkaXRvcldpbmRvdwogCi1GaWxlICAjIElPQmluZGlnIGV4Y2VwdCBhcyBub3RlZAotICBOZXcgRmlsZQotICBPcGVuLi4uICAjIElPQmluZGluZy5vcGVuCi0gIE9wZW4gTW9kdWxlCitGaWxlCisgIE5ldyBGaWxlICAgICAgICAgIyBlRVcubmV3X2NhbGxiYWNrCisgIE9wZW4uLi4gICAgICAgICAgIyBpb21lbnUub3BlbgorICBPcGVuIE1vZHVsZSAgICAgICMgZUV3Lm9wZW5fbW9kdWxlCiAgIFJlY2VudCBGaWxlcwotICBDbGFzcyBCcm93c2VyICAjIENsYXNzIEJyb3dzZXIKLSAgUGF0aCBCcm93c2VyICAjIFBhdGggQnJvd3NlcgorICBDbGFzcyBCcm93c2VyICAgICMgZUVXLm9wZW5fY2xhc3NfYnJvd3NlciwgYnJvd3Nlci5DbGFzc0Jyb3dzZXIKKyAgUGF0aCBCcm93c2VyICAgICAjIGVFVy5vcGVuX3BhdGhfYnJvd3NlciwgcGF0aGJyb3dzZXIKICAgLS0tCi0gIFNhdmUgICMgSURCaW5kaW5nLnNhdmUKLSAgU2F2ZSBBcy4uLiAgIyBJT0JpbmRpbmcuc2F2ZV9hcwotICBTYXZlIENvcHkgQXMuLi4gICMgSU9CaW5kbGluZy5zYXZlX2FfY29weQorICBTYXZlICAgICAgICAgICAgICMgaW9tZW51LnNhdmUKKyAgU2F2ZSBBcy4uLiAgICAgICAjIGlvbWVudS5zYXZlX2FzCisgIFNhdmUgQ29weSBBcy4uLiAgIyBpb21lbnUuc2F2ZV9hX2NvcHkKICAgLS0tCi0gIFByaW50IFdpbmRvdyAgIyBJT0JpbmRpbmcucHJpbnRfd2luZG93CisgIFByaW50IFdpbmRvdyAgICAgIyBpb21lbnUucHJpbnRfd2luZG93CiAgIC0tLQotICBDbG9zZQotICBFeGl0CisgIENsb3NlICAgICAgICAgICAgIyBlRVcuY2xvc2VfZXZlbnQKKyAgRXhpdCAgICAgICAgICAgICAjIGZsaXN0LmNsb3NlX2FsbF9jYWxsYmFjayAoYm91bmQgaW4gZUVXKQogCiBFZGl0Ci0gIFVuZG8gICMgdW5kb0RlbGVnYXRvcgotICBSZWRvICAjIHVuZG9EZWxlZ2F0b3IKLSAgLS0tCi0gIEN1dAotICBDb3B5Ci0gIFBhc3RlCi0gIFNlbGVjdCBBbGwKLSAgLS0tICAjIE5leHQgNSBpdGVtcyB1c2UgU2VhcmNoRW5naW5lOyBkaWFsb2dzIHVzZSBTZWFyY2hEaWFsb2dCYXNlCi0gIEZpbmQgICMgU2VhcmNoIERpYWxvZwotICBGaW5kIEFnYWluCi0gIEZpbmQgU2VsZWN0aW9uCi0gIEZpbmQgaW4gRmlsZXMuLi4gICMgR3JlcERpYWxvZwotICBSZXBsYWNlLi4uICAjIFJlcGxhY2VEaWFsb2cKLSAgR28gdG8gTGluZQotICBTaG93IENvbXBsZXRpb25zICAjIEF1dG9Db21wbGV0ZSBleHRlbnNpb24gYW5kIEF1dG9Db21wbGV0ZVdpZG93ICgmSFApCi0gIEV4cGFuZCBXb3JkICAjIEF1dG9FeHBhbmQgZXh0ZW5zaW9uCi0gIFNob3cgY2FsbCB0aXAgICMgQ2FsbHRpcHMgZXh0ZW5zaW9uIGFuZCBDYWxsdGlwV2luZG93ICgmIEh5cGVycGFyc2VyKQotICBTaG93IHN1cnJvdW5kaW5nIHBhcmVucyAgIyBQYXJlbk1hdGNoICgmIEh5cGVycGFyc2VyKQorICBVbmRvICAgICAgICAgICAgICMgdW5kb2RlbGVnYXRvcgorICBSZWRvICAgICAgICAgICAgICMgdW5kb2RlbGVnYXRvcgorICAtLS0gICAgICAgICAgICAgICMgZUVXLnJpZ2h0X21lbnVfZXZlbnQKKyAgQ3V0ICAgICAgICAgICAgICAjIGVFVy5jdXQKKyAgQ29weSAgICAgICAgICAgICAjIGVFVy5jb3B5CisgIFBhc3RlICAgICAgICAgICAgIyBlRVcucGFzdAorICBTZWxlY3QgQWxsICAgICAgICMgZUVXLnNlbGVjdF9hbGwgKCsgc2VlIGVFVy5yZW1vdmVfc2VsZWN0aW9uKQorICAtLS0gICAgICAgICAgICAgICMgTmV4dCA1IGl0ZW1zIHVzZSBzZWFyY2hlbmdpbmU7IGRpYWxvZ3MgdXNlIHNlYXJjaGJhc2UKKyAgRmluZCAgICAgICAgICAgICAjIGVFVy5maW5kX2V2ZW50LCBzZWFyY2guU2VhcmNoRGlhbG9nLmZpbmQKKyAgRmluZCBBZ2FpbiAgICAgICAjIGVFVy5maW5kX2FnYWluX2V2ZW50LCBzU0QuZmluZF9hZ2FpbgorICBGaW5kIFNlbGVjdGlvbiAgICMgZUVXLmZpbmRfc2VsZWN0aW9uX2V2ZW50LCBzU0QuZmluZF9zZWxlY3Rpb24KKyAgRmluZCBpbiBGaWxlcy4uLiAjIGVFVy5maW5kX2luX2ZpbGVzX2V2ZW50LCBncmVwCisgIFJlcGxhY2UuLi4gICAgICAgIyBlRVcucmVwbGFjZV9ldmVudCwgcmVwbGFjZS5SZXBsYWNlRGlhbG9nLnJlcGxhY2UKKyAgR28gdG8gTGluZSAgICAgICAjIGVFVy5nb3RvX2xpbmVfZXZlbnQKKyAgU2hvdyBDb21wbGV0aW9ucyAjIGF1dG9jb21wbGV0ZSBleHRlbnNpb24gYW5kIGF1dG9jb21wbGV0ZVdpZG93ICgmSFApCisgIEV4cGFuZCBXb3JkICAgICAgIyBhdXRvZXhwYW5kIGV4dGVuc2lvbgorICBTaG93IGNhbGwgdGlwICAgICMgQ2FsbHRpcHMgZXh0ZW5zaW9uIGFuZCBDYWxsdGlwV2luZG93ICgmIEh5cGVycGFyc2VyKQorICBTaG93IHN1cnJvdW5kaW5nIHBhcmVucyAgIyBwYXJlbm1hdGNoICgmIEh5cGVycGFyc2VyKQogCi1TaGVsbCAgIyBQeVNoZWxsCi0gIFZpZXcgTGFzdCBSZXN0YXJ0ICAgICMgUHlTaGVsbC5QeVNoZWxsLnZpZXdfcmVzdGFydF9tYXJrCi0gIFJlc3RhcnQgU2hlbGwgICAgICAgICMgUHlTaGVsbC5QeVNoZWxsLnJlc3RhcnRfc2hlbGwKK1NoZWxsICAjIHB5c2hlbGwKKyAgVmlldyBMYXN0IFJlc3RhcnQgICAgIyBweXNoZWxsLlB5U2hlbGwudmlld19yZXN0YXJ0X21hcmsKKyAgUmVzdGFydCBTaGVsbCAgICAgICAgIyBweXNoZWxsLlB5U2hlbGwucmVzdGFydF9zaGVsbAogICBJbnRlcnJ1cHQgRXhlY3V0aW9uICAjIHB5c2hlbGwuUHlTaGVsbC5jYW5jZWxfY2FsbGJhY2sKIAogRGVidWcgKFNoZWxsIG9ubHkpCiAgIEdvIHRvIEZpbGUvTGluZQotICBEZWJ1Z2dlciAgICAgICAgICAgICAgICMgRGVidWdnZXIsIFJlbW90ZURlYnVnZ2VyLCBQeVNoZWxsLnRvZ2dsZV9kZWJ1Z2VyCi0gIFN0YWNrIFZpZXdlciAgICAgICAgICAgIyBTdGFja1ZpZXdlciwgUHlTaGVsbC5vcGVuX3N0YWNrX3ZpZXdlcgotICBBdXRvLW9wZW4gU3RhY2sgVmlld2VyICMgU3RhY2tWaWV3ZXIKKyAgZGVidWdnZXIgICAgICAgICAjIGRlYnVnZ2VyLCBkZWJ1Z2dlcl9yLCBQeVNoZWxsLnRvZ2dsZV9kZWJ1Z2VyCisgIFN0YWNrIFZpZXdlciAgICAgIyBzdGFja3ZpZXdlciwgUHlTaGVsbC5vcGVuX3N0YWNrX3ZpZXdlcgorICBBdXRvLW9wZW4gU3RhY2sgVmlld2VyICAjIHN0YWNrdmlld2VyCiAKIEZvcm1hdCAoRWRpdG9yIG9ubHkpCi0gIEluZGVudCBSZWdpb24KLSAgRGVkZW50IFJlZ2lvbgotICBDb21tZW50IE91dCBSZWdpb24KLSAgVW5jb21tZW50IFJlZ2lvbgotICBUYWJpZnkgUmVnaW9uCi0gIFVudGFiaWZ5IFJlZ2lvbgotICBUb2dnbGUgVGFicwotICBOZXcgSW5kZW50IFdpZHRoCi0gIEZvcm1hdCBQYXJhZ3JhcGggICMgRm9ybWF0UGFyYWdyYXBoIGV4dGVuc2lvbgorICBJbmRlbnQgUmVnaW9uICAgICMgZUVXLmluZGVudF9yZWdpb25fZXZlbnQKKyAgRGVkZW50IFJlZ2lvbiAgICAjIGVFVy5kZWRlbnRfcmVnaW9uX2V2ZW50CisgIENvbW1lbnQgT3V0IFJlZy4gIyBlRVcuY29tbWVudF9yZWdpb25fZXZlbnQKKyAgVW5jb21tZW50IFJlZ2lvbiAjIGVFVy51bmNvbW1lbnRfcmVnaW9uX2V2ZW50CisgIFRhYmlmeSBSZWdpb24gICAgIyBlRVcudGFiaWZ5X3JlZ2lvbl9ldmVudAorICBVbnRhYmlmeSBSZWdpb24gICMgZUVXLnVudGFiaWZ5X3JlZ2lvbl9ldmVudAorICBUb2dnbGUgVGFicyAgICAgICMgZUVXLnRvZ2dsZV90YWJzX2V2ZW50CisgIE5ldyBJbmRlbnQgV2lkdGggIyBlRVcuY2hhbmdlX2luZGVudHdpZHRoX2V2ZW50CisgIEZvcm1hdCBQYXJhZ3JhcGggIyBwYXJhZ3JhcGggZXh0ZW5zaW9uCiAgIC0tLQotICBTdHJpcCB0YWlsaW5nIHdoaXRlc3BhY2UgICMgUnN0cmlwRXh0ZW5zaW9uIGV4dGVuc2lvbgorICBTdHJpcCB0YWlsaW5nIHdoaXRlc3BhY2UgICMgcnN0cmlwIGV4dGVuc2lvbgogCiBSdW4gKEVkaXRvciBvbmx5KQotICBQeXRob24gU2hlbGwgICMgUHlTaGVsbAorICBQeXRob24gU2hlbGwgICAgICMgcHlzaGVsbAogICAtLS0KLSAgQ2hlY2sgTW9kdWxlICAjIFNjcmlwdEJpbmRpbmcKLSAgUnVuIE1vZHVsZSAgIyBTY3JpcHRCaW5kaW5nCisgIENoZWNrIE1vZHVsZSAgICAgIyBydW5zY3JpcHQKKyAgUnVuIE1vZHVsZSAgICAgICAjIHJ1bnNjcmlwdAogCiBPcHRpb25zCi0gIENvbmZpZ3VyZSBJRExFICAjIGNvbmZpZ0RpYWxvZworICBDb25maWd1cmUgSURMRSAgICMgZUVXLmNvbmZpZ19kaWFsb2csIGNvbmZpZ2RpYWxvZwogICAgICh0YWJzIGluIHRoZSBkaWFsb2cpCi0gICAgRm9udCB0YWIgICMgb25maWctbWFpbi5kZWYKLSAgICBIaWdobGlnaHQgdGFiICAjIGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLCBjb25maWctaGlnaGxpZ2h0LmRlZgotICAgIEtleXMgdGFiICAjIGtleWJpbmRpbmdEaWFsb2csIGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLCBvbmZpZy1rZXVzLmRlZgotICAgIEdlbmVyYWwgdGFiICAjIGNvbmZpZ0hlbHBTb3VyY2VFZGl0LCBjb25maWctbWFpbi5kZWYKLSAgQ29uZmlndXJlIEV4dGVuc2lvbnMgICMgY29uZmlnRGlhbG9nCi0gICAgWHl6IHRhYiAgIyB4eXoucHksIGNvbmZpZy1leHRlbnNpb25zLmRlZgorICAgIEZvbnQgdGFiICAgICAgICMgY29uZmlnLW1haW4uZGVmCisgICAgSGlnaGxpZ2h0IHRhYiAgIyBxdWVyeSwgY29uZmlnLWhpZ2hsaWdodC5kZWYKKyAgICBLZXlzIHRhYiAgICAgICAjIHF1ZXJ5LCBjb25maWdfa2V5LCBjb25maWdfa2V5cy5kZWYKKyAgICBHZW5lcmFsIHRhYiAgICAjIGNvbmZpZ19oZWxwLCBjb25maWctbWFpbi5kZWYKKyAgICBFeHRlbnNpb25zIHRhYiAjIGNvbmZpZy1leHRlbnNpb25zLmRlZiwgY29ycmVzcG9uZGluZyAucHkKICAgLS0tCi0gIENvZGUgQ29udGV4dCAoZWRpdG9yIG9ubHkpICAjIENvZGVDb250ZXh0IGV4dGVuc2lvbgorICBDb2RlIENvbnRleHQgKGVkKSMgY29kZWNvbnRleHQgZXh0ZW5zaW9uCiAKIFdpbmRvdwotICBab29taGVpZ2h0ICAjIFpvb21IZWlnaHQgZXh0ZW5zaW9uCisgIFpvb21oZWlnaHQgICAgICAgIyB6b29taGVpZ2h0IGV4dGVuc2lvbgogICAtLS0KLSAgPG9wZW4gd2luZG93cz4gICMgV2luZG93TGlzdAorICA8b3BlbiB3aW5kb3dzPiAgICMgd2luZG93cwogCiBIZWxwCi0gIEFib3V0IElETEUgICMgYWJvdXREaWFsb2cKKyAgQWJvdXQgSURMRSAgICAgICAjIGVFVy5hYm91dF9kaWFsb2csIGhlbHBfYWJvdXQuQWJvdXREaWFsb2cgCiAgIC0tLQotICBJRExFIEhlbHAgICMgaGVscAotICBQeXRob24gRG9jCi0gIFR1cnRsZSBEZW1vCisgIElETEUgSGVscCAgICAgICAgIyBlRVcuaGVscF9kaWFsb2csIGhlbHBzaG93X2lkbGVoZWxwCisgIFB5dGhvbiBEb2MgICAgICAgIyBlRVcucHl0aG9uX2RvY3MKKyAgVHVydGxlIERlbW8gICAgICAjIGVFVy5vcGVuX3R1cnRsZV9kZW1vCiAgIC0tLQogICA8b3RoZXIgaGVscCBzb3VyY2VzPgogCiA8Q29udGV4dCBNZW51PiAocmlnaHQgY2xpY2spCi1EZWZpbmVkIGluIEVkaXRvcldpbmRvdywgUHlTaGVsbCwgT3V0cHV0Ci0gICBDdXQKLSAgIENvcHkKLSAgIFBhc3RlCi0gICAtLS0KLSAgIEdvIHRvIGZpbGUvbGluZSAoc2hlbGwgYW5kIG91dHB1dCBvbmx5KQotICAgU2V0IEJyZWFrcG9pbnQgKGVkaXRvciBvbmx5KQotICAgQ2xlYXIgQnJlYWtwb2ludCAoZWRpdG9yIG9ubHkpCi0gRGVmaW5lZCBpbiBEZWJ1Z2dlcgotICAgR28gdG8gc291cmNlIGxpbmUKLSAgIFNob3cgc3RhY2sgZnJhbWUKKyAgRGVmaW5lZCBpbiBlZGl0b3IsIFB5U2hlbHB5c2hlbGx1dAorICAgIEN1dAorICAgIENvcHkKKyAgICBQYXN0ZQorICAgIC0tLQorICAgIEdvIHRvIGZpbGUvbGluZSAoc2hlbGwgYW5kIG91dHB1dCBvbmx5KQorICAgIFNldCBCcmVha3BvaW50IChlZGl0b3Igb25seSkKKyAgICBDbGVhciBCcmVha3BvaW50IChlZGl0b3Igb25seSkKKyAgRGVmaW5lZCBpbiBkZWJ1Z2dlcgorICAgIEdvIHRvIHNvdXJjZSBsaW5lCisgICAgU2hvdyBzdGFjayBmcmFtZQorCis8Tm8gbWVudT4KK0NlbnRlciBJbnNlcnQgICAgICAjIGVFVy5jZW50ZXJfaW5zZXJ0X2V2ZW50CisKKyAgCitDT0RFIFNUWUxFIC0tIEdlbmVyYWxseSBQRVAgOC4KKworaW1wb3J0CistLS0tLS0KK1B1dCBpbXBvcnQgYXQgdGhlIHRvcCwgdW5sZXNzIHRoZXJlIGlzIGEgZ29vZCByZWFzb24gb3RoZXJ3aXNlLgorUEVQIDggc2F5cyB0byBncm91cCBzdGRsaWIsIDNyZC1wYXJ0eSBkZXBlbmRlbmNpZXMsIGFuZCBwYWNrYWdlIGltcG9ydHMuCitGb3IgaWRsZWxpYiwgdGhlIGdyb3VwcyBhcmUgZ2VuZXJhbCBzdGRsaWIsIHRraW50ZXIsIGFuZCBpZGxlbGliLgorU29ydCBtb2R1bGVzIHdpdGhpbiBlYWNoIGdyb3VwLCBleGNlcHQgdGhhdCB0a2ludGVyLnR0ayBmb2xsb3dzIHRraW50ZXIuCitTb3J0ICdmcm9tIGlkbGVsaWIgaW1wb3J0IG1vZDEnIGFuZCAnZnJvbSBpZGxlbGliLm1vZDIgaW1wb3J0IG9iamVjdCcKK3RvZ2V0aGVyIGJ5IG1vZHVsZSwgaWdub3Jpbmcgd2l0aGluIG1vZHVsZSBvYmplY3RzLgorUHV0ICdpbXBvcnQgX19tYWluX18nIGFmdGVyIG90aGVyIGlkbGVsaWIgaW1wb3J0cy4KKworSW1wb3J0cyBvbmx5IG5lZWRlZCBmb3IgdGVzdGluZyBhcmUgcHV0IG5vdCBhdCB0aGUgdG9wIGJ1dCBpbiBhbgoraHRlc3QgZnVuY3Rpb24gZGVmIG9yICJpZiBfX25hbWVfXyA9PSAnX19tYWluX18nIiBjbGF1c2UuCisKK1dpdGhpbiBtb2R1bGUgaW1wb3J0cyBsaWtlICJmcm9tIGlkbGVsaWIubW9kIGltcG9ydCBjbGFzcyIgbWF5IGNhdXNlCitjaXJjdWxhciBpbXBvcnRzIHRvIGRlYWRsb2NrLiAgRXZlbiB3aXRob3V0IHRoaXMsIGNpcmN1bGFyIGltcG9ydHMgbWF5CityZXF1aXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgaW1wb3J0cyB0byBiZSBkZWxheWVkIHVudGlsIGEgZnVuY3Rpb24gY2FsbC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL19faW5pdF9fLnB5IGIvTGliL2lkbGVsaWIvX19pbml0X18ucHkKaW5kZXggNzExZjYxYi4uNzkxZGRlYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvX19pbml0X18ucHkKKysrIGIvTGliL2lkbGVsaWIvX19pbml0X18ucHkKQEAgLTEsOCArMSwxMCBAQAogIiIiVGhlIGlkbGVsaWIgcGFja2FnZSBpbXBsZW1lbnRzIHRoZSBJZGxlIGFwcGxpY2F0aW9uLgogCiBJZGxlIGluY2x1ZGVzIGFuIGludGVyYWN0aXZlIHNoZWxsIGFuZCBlZGl0b3IuCitTdGFydGluZyB3aXRoIFB5dGhvbiAzLjYsIElETEUgcmVxdWlyZXMgdGNsL3RrIDguNSBvciBsYXRlci4KIFVzZSB0aGUgZmlsZXMgbmFtZWQgaWRsZS4qIHRvIHN0YXJ0IElkbGUuCiAKIFRoZSBvdGhlciBmaWxlcyBhcmUgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbnMuICBUaGVpciBkZXRhaWxzIGFyZSBzdWJqZWN0IHRvCiBjaGFuZ2UuICBTZWUgUEVQIDQzNCBmb3IgbW9yZS4gIEltcG9ydCB0aGVtIGF0IHlvdXIgb3duIHJpc2suCiAiIiIKK3Rlc3RpbmcgPSBGYWxzZSAgIyBTZXQgVHJ1ZSBieSB0ZXN0LnRlc3RfaWRsZS4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5IGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKaW5kZXggMmVkZjVmNy4uNjM0OWVjNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvX19tYWluX18ucHkKKysrIGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKQEAgLTMsNiArMyw2IEBACiAKIFJ1biBJRExFIGFzIHB5dGhvbiAtbSBpZGxlbGliCiAiIiIKLWltcG9ydCBpZGxlbGliLlB5U2hlbGwKLWlkbGVsaWIuUHlTaGVsbC5tYWluKCkKK2ltcG9ydCBpZGxlbGliLnB5c2hlbGwKK2lkbGVsaWIucHlzaGVsbC5tYWluKCkKICMgVGhpcyBmaWxlIGRvZXMgbm90IHdvcmsgZm9yIDIuNzsgU2VlIGlzc3VlIDI0MjEyLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlLnB5CnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlLnB5CmluZGV4IGZmMDg1ZDUuLjFlNDRmYTUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGUucHkKQEAgLTEsMjkgKzEsMzAgQEAKLSIiIkF1dG9Db21wbGV0ZS5weSAtIEFuIElETEUgZXh0ZW5zaW9uIGZvciBhdXRvbWF0aWNhbGx5IGNvbXBsZXRpbmcgbmFtZXMuCisiIiJhdXRvY29tcGxldGUucHkgLSBBbiBJRExFIGV4dGVuc2lvbiBmb3IgYXV0b21hdGljYWxseSBjb21wbGV0aW5nIG5hbWVzLgogCiBUaGlzIGV4dGVuc2lvbiBjYW4gY29tcGxldGUgZWl0aGVyIGF0dHJpYnV0ZSBuYW1lcyBvciBmaWxlIG5hbWVzLiBJdCBjYW4gcG9wCiBhIHdpbmRvdyB3aXRoIGFsbCBhdmFpbGFibGUgbmFtZXMsIGZvciB0aGUgdXNlciB0byBzZWxlY3QgZnJvbS4KICIiIgogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotCi0jIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCi1JRF9DSEFSUyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICJfIgotCi0jIFRoZXNlIGNvbnN0YW50cyByZXByZXNlbnQgdGhlIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcGxldGlvbnMKKyMgVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBjb21wbGV0aW9ucy4KKyMgVGhleSBtdXN0IGJlIGRlZmluZWQgaGVyZSBzbyBhdXRvY29tcGxlX3cgY2FuIGltcG9ydCB0aGVtLgogQ09NUExFVEVfQVRUUklCVVRFUywgQ09NUExFVEVfRklMRVMgPSByYW5nZSgxLCAyKzEpCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgQXV0b0NvbXBsZXRlV2luZG93Ci1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCi0KK2Zyb20gaWRsZWxpYiBpbXBvcnQgYXV0b2NvbXBsZXRlX3cKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCiBpbXBvcnQgX19tYWluX18KIAorIyBUaGlzIHN0cmluZyBpbmNsdWRlcyBhbGwgY2hhcnMgdGhhdCBtYXkgYmUgaW4gYW4gaWRlbnRpZmllci4KKyMgVE9ETyBVcGRhdGUgdGhpcyBoZXJlIGFuZCBlbHNld2hlcmUuCitJRF9DSEFSUyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICJfIgorCiBTRVBTID0gb3Muc2VwCiBpZiBvcy5hbHRzZXA6ICAjIGUuZy4gJy8nIG9uIFdpbmRvd3MuLi4KICAgICBTRVBTICs9IG9zLmFsdHNlcAogCisKIGNsYXNzIEF1dG9Db21wbGV0ZToKIAogICAgIG1lbnVkZWZzID0gWwpAQCAtMzcsMTkgKzM4LDE3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbj1Ob25lKToKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgotICAgICAgICBpZiBlZGl0d2luIGlzIE5vbmU6ICAjIHN1YnByb2Nlc3MgYW5kIHRlc3QKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLnRleHQgPSBlZGl0d2luLnRleHQKLSAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgPSBOb25lCi0KLSAgICAgICAgIyBpZCBvZiBkZWxheWVkIGNhbGwsIGFuZCB0aGUgaW5kZXggb2YgdGhlIHRleHQgaW5zZXJ0IHdoZW4gdGhlIGRlbGF5ZWQKLSAgICAgICAgIyBjYWxsIHdhcyBpc3N1ZWQuIElmIF9kZWxheWVkX2NvbXBsZXRpb25faWQgaXMgTm9uZSwgdGhlcmUgaXMgbm8KLSAgICAgICAgIyBkZWxheWVkIGNhbGwuCi0gICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pZCA9IE5vbmUKLSAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4ID0gTm9uZQorICAgICAgICBpZiBlZGl0d2luIGlzIG5vdCBOb25lOiAgIyBub3QgaW4gc3VicHJvY2VzcyBvciB0ZXN0CisgICAgICAgICAgICBzZWxmLnRleHQgPSBlZGl0d2luLnRleHQKKyAgICAgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93ID0gTm9uZQorICAgICAgICAgICAgIyBpZCBvZiBkZWxheWVkIGNhbGwsIGFuZCB0aGUgaW5kZXggb2YgdGhlIHRleHQgaW5zZXJ0IHdoZW4KKyAgICAgICAgICAgICMgdGhlIGRlbGF5ZWQgY2FsbCB3YXMgaXNzdWVkLiBJZiBfZGVsYXllZF9jb21wbGV0aW9uX2lkIGlzCisgICAgICAgICAgICAjIE5vbmUsIHRoZXJlIGlzIG5vIGRlbGF5ZWQgY2FsbC4KKyAgICAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pZCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleCA9IE5vbmUKIAogICAgIGRlZiBfbWFrZV9hdXRvY29tcGxldGVfd2luZG93KHNlbGYpOgotICAgICAgICByZXR1cm4gQXV0b0NvbXBsZXRlV2luZG93LkF1dG9Db21wbGV0ZVdpbmRvdyhzZWxmLnRleHQpCisgICAgICAgIHJldHVybiBhdXRvY29tcGxldGVfdy5BdXRvQ29tcGxldGVXaW5kb3coc2VsZi50ZXh0KQogCiAgICAgZGVmIF9yZW1vdmVfYXV0b2NvbXBsZXRlX3dpbmRvdyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgaWYgc2VsZi5hdXRvY29tcGxldGV3aW5kb3c6CkBAIC04MCwxNiArNzksMTcgQEAKICAgICAgICAgb3BlbiBhIGNvbXBsZXRpb24gbGlzdCBhZnRlciB0aGF0IChpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lCiAgICAgICAgIGNvbXBsZXRpb24pCiAgICAgICAgICIiIgotICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAibWNfc3RhdGUiKSBhbmQgZXZlbnQubWNfc3RhdGU6Ci0gICAgICAgICAgICAjIEEgbW9kaWZpZXIgd2FzIHByZXNzZWQgYWxvbmcgd2l0aCB0aGUgdGFiLCBjb250aW51ZSBhcyB1c3VhbC4KLSAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAibWNfc3RhdGUiKSBhbmQgZXZlbnQubWNfc3RhdGUgb3JcCisgICAgICAgICAgICAgICAgbm90IHNlbGYudGV4dC5nZXQoImluc2VydCBsaW5lc3RhcnQiLCAiaW5zZXJ0Iikuc3RyaXAoKToKKyAgICAgICAgICAgICMgQSBtb2RpZmllciB3YXMgcHJlc3NlZCBhbG9uZyB3aXRoIHRoZSB0YWIgb3IKKyAgICAgICAgICAgICMgdGhlcmUgaXMgb25seSBwcmV2aW91cyB3aGl0ZXNwYWNlIG9uIHRoaXMgbGluZSwgc28gdGFiLgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgaWYgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgYW5kIHNlbGYuYXV0b2NvbXBsZXRld2luZG93LmlzX2FjdGl2ZSgpOgogICAgICAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cuY29tcGxldGUoKQogICAgICAgICAgICAgcmV0dXJuICJicmVhayIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9wZW5lZCA9IHNlbGYub3Blbl9jb21wbGV0aW9ucyhGYWxzZSwgVHJ1ZSwgVHJ1ZSkKLSAgICAgICAgICAgIGlmIG9wZW5lZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gImJyZWFrIgorICAgICAgICAgICAgcmV0dXJuICJicmVhayIgaWYgb3BlbmVkIGVsc2UgTm9uZQogCiAgICAgZGVmIF9vcGVuX2NvbXBsZXRpb25zX2xhdGVyKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4ID0gc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKQpAQCAtMTAxLDkgKzEwMSw4IEBACiAKICAgICBkZWYgX2RlbGF5ZWRfb3Blbl9jb21wbGV0aW9ucyhzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pZCA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKSAhPSBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5vcGVuX2NvbXBsZXRpb25zKCphcmdzKQorICAgICAgICBpZiBzZWxmLnRleHQuaW5kZXgoImluc2VydCIpID09IHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleDoKKyAgICAgICAgICAgIHNlbGYub3Blbl9jb21wbGV0aW9ucygqYXJncykKIAogICAgIGRlZiBvcGVuX2NvbXBsZXRpb25zKHNlbGYsIGV2YWxmdW5jcywgY29tcGxldGUsIHVzZXJXYW50c1dpbiwgbW9kZT1Ob25lKToKICAgICAgICAgIiIiRmluZCB0aGUgY29tcGxldGlvbnMgYW5kIGNyZWF0ZSB0aGUgQXV0b0NvbXBsZXRlV2luZG93LgpAQCAtMTQ4LDE3ICsxNDcsMTcgQEAKICAgICAgICAgICAgICAgICBjb21wX3doYXQgPSBocC5nZXRfZXhwcmVzc2lvbigpCiAgICAgICAgICAgICAgICAgaWYgbm90IGNvbXBfd2hhdCBvciBcCiAgICAgICAgICAgICAgICAgICAgKG5vdCBldmFsZnVuY3MgYW5kIGNvbXBfd2hhdC5maW5kKCcoJykgIT0gLTEpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY29tcF93aGF0ID0gIiIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBpZiBjb21wbGV0ZSBhbmQgbm90IGNvbXBfd2hhdCBhbmQgbm90IGNvbXBfc3RhcnQ6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGNvbXBfbGlzdHMgPSBzZWxmLmZldGNoX2NvbXBsZXRpb25zKGNvbXBfd2hhdCwgbW9kZSkKICAgICAgICAgaWYgbm90IGNvbXBfbGlzdHNbMF06Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93ID0gc2VsZi5fbWFrZV9hdXRvY29tcGxldGVfd2luZG93KCkKICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdy5zaG93X3dpbmRvdygKICAgICAgICAgICAgICAgICBjb21wX2xpc3RzLCAiaW5zZXJ0LSVkYyIgJSBsZW4oY29tcF9zdGFydCksCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGVXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGVfdy5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9BdXRvQ29tcGxldGVXaW5kb3cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2F1dG9jb21wbGV0ZV93LnB5CmluZGV4IDJlZTY4NzguLjMzNzRjNmUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZVdpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGVfdy5weQpAQCAtMSw5ICsxLDExIEBACiAiIiIKLUFuIGF1dG8tY29tcGxldGlvbiB3aW5kb3cgZm9yIElETEUsIHVzZWQgYnkgdGhlIEF1dG9Db21wbGV0ZSBleHRlbnNpb24KK0FuIGF1dG8tY29tcGxldGlvbiB3aW5kb3cgZm9yIElETEUsIHVzZWQgYnkgdGhlIGF1dG9jb21wbGV0ZSBleHRlbnNpb24KICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuTXVsdGlDYWxsIGltcG9ydCBNQ19TSElGVAotZnJvbSBpZGxlbGliLkF1dG9Db21wbGV0ZSBpbXBvcnQgQ09NUExFVEVfRklMRVMsIENPTVBMRVRFX0FUVFJJQlVURVMKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorCitmcm9tIGlkbGVsaWIuYXV0b2NvbXBsZXRlIGltcG9ydCBDT01QTEVURV9GSUxFUywgQ09NUExFVEVfQVRUUklCVVRFUworZnJvbSBpZGxlbGliLm11bHRpY2FsbCBpbXBvcnQgTUNfU0hJRlQKIAogSElERV9WSVJUVUFMX0VWRU5UX05BTUUgPSAiPDxhdXRvY29tcGxldGV3aW5kb3ctaGlkZT4+IgogSElERV9TRVFVRU5DRVMgPSAoIjxGb2N1c091dD4iLCAiPEJ1dHRvblByZXNzPiIpCkBAIC0zNCw4ICszNiw4IEBACiAgICAgICAgIHNlbGYuY29tcGxldGlvbnMgPSBOb25lCiAgICAgICAgICMgQSBsaXN0IHdpdGggbW9yZSBjb21wbGV0aW9ucywgb3IgTm9uZQogICAgICAgICBzZWxmLm1vcmVjb21wbGV0aW9ucyA9IE5vbmUKLSAgICAgICAgIyBUaGUgY29tcGxldGlvbiBtb2RlLiBFaXRoZXIgQXV0b0NvbXBsZXRlLkNPTVBMRVRFX0FUVFJJQlVURVMgb3IKLSAgICAgICAgIyBBdXRvQ29tcGxldGUuQ09NUExFVEVfRklMRVMKKyAgICAgICAgIyBUaGUgY29tcGxldGlvbiBtb2RlLiBFaXRoZXIgYXV0b2NvbXBsZXRlLkNPTVBMRVRFX0FUVFJJQlVURVMgb3IKKyAgICAgICAgIyBhdXRvY29tcGxldGUuQ09NUExFVEVfRklMRVMKICAgICAgICAgc2VsZi5tb2RlID0gTm9uZQogICAgICAgICAjIFRoZSBjdXJyZW50IGNvbXBsZXRpb24gc3RhcnQsIG9uIHRoZSB0ZXh0IGJveCAoYSBzdHJpbmcpCiAgICAgICAgIHNlbGYuc3RhcnQgPSBOb25lCkBAIC0yMTUsNiArMjE3LDcgQEAKICAgICAgICAgc2VsZi53aW5jb25maWdpZCA9IGFjdy5iaW5kKFdJTkNPTkZJR19TRVFVRU5DRSwgc2VsZi53aW5jb25maWdfZXZlbnQpCiAgICAgICAgIHNlbGYuZG91YmxlY2xpY2tpZCA9IGxpc3Rib3guYmluZChET1VCTEVDTElDS19TRVFVRU5DRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG91YmxlY2xpY2tfZXZlbnQpCisgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgd2luY29uZmlnX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6CkBAIC0yMzgsMTYgKzI0MSwxNCBAQAogICAgICAgICBhY3cud21fZ2VvbWV0cnkoIislZCslZCIgJSAobmV3X3gsIG5ld195KSkKIAogICAgIGRlZiBoaWRlX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCisgICAgICAgIGlmIHNlbGYuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKIAogICAgIGRlZiBsaXN0c2VsZWN0X2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi51c2Vyd2FudHN3aW5kb3cgPSBUcnVlCi0gICAgICAgIGN1cnNlbCA9IGludChzZWxmLmxpc3Rib3guY3Vyc2VsZWN0aW9uKClbMF0pCi0gICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLmNvbXBsZXRpb25zW2N1cnNlbF0pCisgICAgICAgIGlmIHNlbGYuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICBzZWxmLnVzZXJ3YW50c3dpbmRvdyA9IFRydWUKKyAgICAgICAgICAgIGN1cnNlbCA9IGludChzZWxmLmxpc3Rib3guY3Vyc2VsZWN0aW9uKClbMF0pCisgICAgICAgICAgICBzZWxmLl9jaGFuZ2Vfc3RhcnQoc2VsZi5jb21wbGV0aW9uc1tjdXJzZWxdKQogCiAgICAgZGVmIGRvdWJsZWNsaWNrX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgIyBQdXQgdGhlIHNlbGVjdGVkIGNvbXBsZXRpb24gaW4gdGhlIHRleHQsIGFuZCBjbG9zZSB0aGUgbGlzdApAQCAtMjU3LDcgKzI1OCw3IEBACiAKICAgICBkZWYga2V5cHJlc3NfZXZlbnQoc2VsZiwgZXZlbnQpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAga2V5c3ltID0gZXZlbnQua2V5c3ltCiAgICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICJtY19zdGF0ZSIpOgogICAgICAgICAgICAgc3RhdGUgPSBldmVudC5tY19zdGF0ZQpAQCAtMjgyLDcgKzI4Myw3IEBACiAgICAgICAgICAgICAgICAgIyBrZXlzeW0gPT0gIkJhY2tTcGFjZSIKICAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5zdGFydCkgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLnN0YXJ0WzotMV0pCiAgICAgICAgICAgICBzZWxmLmxhc3R0eXBlZHN0YXJ0ID0gc2VsZi5zdGFydAogICAgICAgICAgICAgc2VsZi5saXN0Ym94LnNlbGVjdF9jbGVhcigwLCBpbnQoc2VsZi5saXN0Ym94LmN1cnNlbGVjdGlvbigpWzBdKSkKQEAgLTI5Miw3ICsyOTMsNyBAQAogCiAgICAgICAgIGVsaWYga2V5c3ltID09ICJSZXR1cm4iOgogICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiAoc2VsZi5tb2RlID09IENPTVBMRVRFX0FUVFJJQlVURVMgYW5kIGtleXN5bSBpbgogICAgICAgICAgICAgICAoInBlcmlvZCIsICJzcGFjZSIsICJwYXJlbmxlZnQiLCAicGFyZW5yaWdodCIsICJicmFja2V0bGVmdCIsCkBAIC0zMDgsNyArMzA5LDcgQEAKICAgICAgICAgICAgICAgIGFuZCAoc2VsZi5tb2RlID09IENPTVBMRVRFX0FUVFJJQlVURVMgb3Igc2VsZi5zdGFydCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2hhbmdlX3N0YXJ0KHNlbGYuY29tcGxldGlvbnNbY3Vyc2VsXSkKICAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYga2V5c3ltIGluICgiSG9tZSIsICJFbmQiLCAiUHJpb3IiLCAiTmV4dCIsICJVcCIsICJEb3duIikgYW5kIFwKICAgICAgICAgICAgICBub3Qgc3RhdGU6CkBAIC0zNDksMTIgKzM1MCwxMiBAQAogICAgICAgICAgICAgICAgICMgZmlyc3QgdGFiOyBsZXQgQXV0b0NvbXBsZXRlIGhhbmRsZSB0aGUgY29tcGxldGlvbgogICAgICAgICAgICAgICAgIHNlbGYudXNlcndhbnRzd2luZG93ID0gVHJ1ZQogICAgICAgICAgICAgICAgIHNlbGYubGFzdGtleV93YXNfdGFiID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiBhbnkocyBpbiBrZXlzeW0gZm9yIHMgaW4gKCJTaGlmdCIsICJDb250cm9sIiwgIkFsdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWV0YSIsICJDb21tYW5kIiwgIk9wdGlvbiIpKToKICAgICAgICAgICAgICMgQSBtb2RpZmllciBrZXksIHNvIGlnbm9yZQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYgZXZlbnQuY2hhciBhbmQgZXZlbnQuY2hhciA+PSAnICc6CiAgICAgICAgICAgICAjIFJlZ3VsYXIgY2hhcmFjdGVyIHdpdGggYSBub24tbGVuZ3RoLTEga2V5Y29kZQpAQCAtMzY4LDcgKzM2OSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFVua25vd24gZXZlbnQsIGNsb3NlIHRoZSB3aW5kb3cgYW5kIGxldCBpdCB0aHJvdWdoLgogICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYga2V5cmVsZWFzZV9ldmVudChzZWxmLCBldmVudCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0V4cGFuZC5weSBiL0xpYi9pZGxlbGliL2F1dG9leHBhbmQucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQXV0b0V4cGFuZC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYXV0b2V4cGFuZC5weQppbmRleCA3MDU5MDU0Li42YjQ2YmVlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9BdXRvRXhwYW5kLnB5CisrKyBiL0xpYi9pZGxlbGliL2F1dG9leHBhbmQucHkKQEAgLTEyLDggKzEyLDggQEAKIAogVGhpcyBpcyBhbiBleHRlbnNpb24gZmlsZSBhbmQgdGhlcmUgaXMgb25seSBvbmUgaW5zdGFuY2Ugb2YgQXV0b0V4cGFuZC4KICcnJwotaW1wb3J0IHN0cmluZwogaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCiAKICMjIyQgZXZlbnQgPDxleHBhbmQtd29yZD4+CiAjIyMkIHdpbiA8QWx0LXNsYXNoPgpAQCAtMzEsNiArMzEsNyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVkaXR3aW4pOgogICAgICAgICBzZWxmLnRleHQgPSBlZGl0d2luLnRleHQKKyAgICAgICAgc2VsZi5iZWxsID0gc2VsZi50ZXh0LmJlbGwKICAgICAgICAgc2VsZi5zdGF0ZSA9IE5vbmUKIAogICAgIGRlZiBleHBhbmRfd29yZF9ldmVudChzZWxmLCBldmVudCk6CkBAIC00NiwxNCArNDcsMTQgQEAKICAgICAgICAgICAgICAgICB3b3JkcyA9IHNlbGYuZ2V0d29yZHMoKQogICAgICAgICAgICAgICAgIGluZGV4ID0gMAogICAgICAgICBpZiBub3Qgd29yZHM6Ci0gICAgICAgICAgICBzZWxmLnRleHQuYmVsbCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuICJicmVhayIKICAgICAgICAgd29yZCA9IHNlbGYuZ2V0cHJldndvcmQoKQogICAgICAgICBzZWxmLnRleHQuZGVsZXRlKCJpbnNlcnQgLSAlZCBjaGFycyIgJSBsZW4od29yZCksICJpbnNlcnQiKQogICAgICAgICBuZXd3b3JkID0gd29yZHNbaW5kZXhdCiAgICAgICAgIGluZGV4ID0gKGluZGV4ICsgMSkgJSBsZW4od29yZHMpCiAgICAgICAgIGlmIGluZGV4ID09IDA6Ci0gICAgICAgICAgICBzZWxmLnRleHQuYmVsbCgpICAgICAgICAgICAgIyBXYXJuIHdlIGN5Y2xlZCBhcm91bmQKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpICAgICAgICAgICAgIyBXYXJuIHdlIGN5Y2xlZCBhcm91bmQKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgiaW5zZXJ0IiwgbmV3d29yZCkKICAgICAgICAgY3VyaW5zZXJ0ID0gc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKQogICAgICAgICBjdXJsaW5lID0gc2VsZi50ZXh0LmdldCgiaW5zZXJ0IGxpbmVzdGFydCIsICJpbnNlcnQgbGluZWVuZCIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9DbGFzc0Jyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9icm93c2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NsYXNzQnJvd3Nlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYnJvd3Nlci5weQppbmRleCBkMDljNTJmLi5lYTA1NjM4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9DbGFzc0Jyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvYnJvd3Nlci5weQpAQCAtMTEsMTYgKzExLDE2IEBACiAiIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgcHljbGJyCitpbXBvcnQgc3lzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAotZnJvbSBpZGxlbGliLldpbmRvd0xpc3QgaW1wb3J0IExpc3RlZFRvcGxldmVsCi1mcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcwotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcworZnJvbSBpZGxlbGliLndpbmRvd3MgaW1wb3J0IExpc3RlZFRvcGxldmVsCiAKIGZpbGVfb3BlbiA9IE5vbmUgICMgTWV0aG9kLi4uSXRlbSBhbmQgQ2xhc3MuLi5JdGVtIHVzZSB0aGlzLgotIyBOb3JtYWxseSBQeVNoZWxsLmZsaXN0Lm9wZW4sIGJ1dCB0aGVyZSBpcyBubyBQeVNoZWxsLmZsaXN0IGZvciBodGVzdC4KKyMgTm9ybWFsbHkgcHlzaGVsbC5mbGlzdC5vcGVuLCBidXQgdGhlcmUgaXMgbm8gcHlzaGVsbC5mbGlzdCBmb3IgaHRlc3QuCiAKIGNsYXNzIENsYXNzQnJvd3NlcjoKIApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgZ2xvYmFsIGZpbGVfb3BlbgogICAgICAgICBpZiBub3QgX2h0ZXN0OgotICAgICAgICAgICAgZmlsZV9vcGVuID0gUHlTaGVsbC5mbGlzdC5vcGVuCisgICAgICAgICAgICBmaWxlX29wZW4gPSBweXNoZWxsLmZsaXN0Lm9wZW4KICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLmZpbGUgPSBvcy5wYXRoLmpvaW4ocGF0aFswXSwgc2VsZi5uYW1lICsgIi5weSIpCiAgICAgICAgIHNlbGYuX2h0ZXN0ID0gX2h0ZXN0CkBAIC05NSw3ICs5NSw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuZmlsZSk6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgUHlTaGVsbC5mbGlzdC5vcGVuKHNlbGYuZmlsZSkKKyAgICAgICAgcHlzaGVsbC5mbGlzdC5vcGVuKHNlbGYuZmlsZSkKIAogICAgIGRlZiBJc0V4cGFuZGFibGUoc2VsZik6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1jYXNlKHNlbGYuZmlsZVstMzpdKSA9PSAiLnB5IgpAQCAtMjI2LDcgKzIyNiw3IEBACiAgICAgICAgICAgICBmaWxlID0gc3lzLmFyZ3ZbMF0KICAgICBkaXIsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KGZpbGUpCiAgICAgbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZSlbMF0KLSAgICBmbGlzdCA9IFB5U2hlbGwuUHlTaGVsbEZpbGVMaXN0KHBhcmVudCkKKyAgICBmbGlzdCA9IHB5c2hlbGwuUHlTaGVsbEZpbGVMaXN0KHBhcmVudCkKICAgICBnbG9iYWwgZmlsZV9vcGVuCiAgICAgZmlsZV9vcGVuID0gZmxpc3Qub3BlbgogICAgIENsYXNzQnJvd3NlcihmbGlzdCwgbmFtZSwgW2Rpcl0sIF9odGVzdD1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ2FsbFRpcFdpbmRvdy5weSBiL0xpYi9pZGxlbGliL2NhbGx0aXBfdy5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9DYWxsVGlwV2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jYWxsdGlwX3cucHkKaW5kZXggOWVlYzE3NS4uYzczNjFkMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2FsbFRpcFdpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9jYWxsdGlwX3cucHkKQEAgLTEsNyArMSw3IEBACiAiIiJBIENhbGxUaXAgd2luZG93IGNsYXNzIGZvciBUa2ludGVyL0lETEUuCiAKLUFmdGVyIFRvb2xUaXAucHksIHdoaWNoIHVzZXMgaWRlYXMgZ2xlYW5lZCBmcm9tIFB5U29sCi1Vc2VkIGJ5IHRoZSBDYWxsVGlwcyBJRExFIGV4dGVuc2lvbi4KK0FmdGVyIHRvb2x0aXAucHksIHdoaWNoIHVzZXMgaWRlYXMgZ2xlYW5lZCBmcm9tIFB5U29sCitVc2VkIGJ5IHRoZSBjYWxsdGlwcyBJRExFIGV4dGVuc2lvbi4KICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgTGFiZWwsIExFRlQsIFNPTElELCBUY2xFcnJvcgogCkBAIC0xMzgsOCArMTM4LDggQEAKIAogICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKICAgICB0b3AudGl0bGUoIlRlc3QgY2FsbHRpcHMiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgdGV4dCA9IFRleHQodG9wKQogICAgIHRleHQucGFjayhzaWRlPUxFRlQsIGZpbGw9Qk9USCwgZXhwYW5kPTEpCiAgICAgdGV4dC5pbnNlcnQoImluc2VydCIsICJzdHJpbmcuc3BsaXQiKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ2FsbFRpcHMucHkgYi9MaWIvaWRsZWxpYi9jYWxsdGlwcy5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9DYWxsVGlwcy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY2FsbHRpcHMucHkKaW5kZXggODFiZDVmMS4uNGM1YWVhMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2FsbFRpcHMucHkKKysrIGIvTGliL2lkbGVsaWIvY2FsbHRpcHMucHkKQEAgLTEsMTkgKzEsMTkgQEAKLSIiIkNhbGxUaXBzLnB5IC0gQW4gSURMRSBFeHRlbnNpb24gdG8gSm9nIFlvdXIgTWVtb3J5CisiIiJjYWxsdGlwcy5weSAtIEFuIElETEUgRXh0ZW5zaW9uIHRvIEpvZyBZb3VyIE1lbW9yeQogCiBDYWxsIFRpcHMgYXJlIGZsb2F0aW5nIHdpbmRvd3Mgd2hpY2ggZGlzcGxheSBmdW5jdGlvbiwgY2xhc3MsIGFuZCBtZXRob2QKIHBhcmFtZXRlciBhbmQgZG9jc3RyaW5nIGluZm9ybWF0aW9uIHdoZW4geW91IHR5cGUgYW4gb3BlbmluZyBwYXJlbnRoZXNpcywgYW5kCiB3aGljaCBkaXNhcHBlYXIgd2hlbiB5b3UgdHlwZSBhIGNsb3NpbmcgcGFyZW50aGVzaXMuCiAKICIiIgotaW1wb3J0IF9fbWFpbl9fCiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0eXBlcwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IENhbGxUaXBXaW5kb3cKLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY2FsbHRpcF93Citmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitpbXBvcnQgX19tYWluX18KIAogY2xhc3MgQ2FsbFRpcHM6CiAKQEAgLTM3LDcgKzM3LDcgQEAKIAogICAgIGRlZiBfbWFrZV90a19jYWxsdGlwX3dpbmRvdyhzZWxmKToKICAgICAgICAgIyBTZWUgX19pbml0X18gZm9yIHVzYWdlCi0gICAgICAgIHJldHVybiBDYWxsVGlwV2luZG93LkNhbGxUaXAoc2VsZi50ZXh0KQorICAgICAgICByZXR1cm4gY2FsbHRpcF93LkNhbGxUaXAoc2VsZi50ZXh0KQogCiAgICAgZGVmIF9yZW1vdmVfY2FsbHRpcF93aW5kb3coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NhbGx0aXA6CkBAIC0xMjAsNyArMTIwLDcgQEAKIF9NQVhfQ09MUyA9IDg1CiBfTUFYX0xJTkVTID0gNSAgIyBlbm91Z2ggZm9yIGJ5dGVzCiBfSU5ERU5UID0gJyAnKjQgICMgZm9yIHdyYXBwZWQgc2lnbmF0dXJlcwotX2ZpcnN0X3BhcmFtID0gcmUuY29tcGlsZSgnKD88PVwoKVx3KlwsP1xzKicpCitfZmlyc3RfcGFyYW0gPSByZS5jb21waWxlKHInKD88PVwoKVx3KlwsP1xzKicpCiBfZGVmYXVsdF9jYWxsYWJsZV9hcmdzcGVjID0gIlNlZSBzb3VyY2Ugb3IgZG9jIgogCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5IGIvTGliL2lkbGVsaWIvY29kZWNvbnRleHQucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvZGVjb250ZXh0LnB5CmluZGV4IDdkMjVhZGEuLmYyNWUxYjMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5CisrKyBiL0xpYi9pZGxlbGliL2NvZGVjb250ZXh0LnB5CkBAIC0xLDE5ICsxLDIxIEBACi0iIiJDb2RlQ29udGV4dCAtIEV4dGVuc2lvbiB0byBkaXNwbGF5IHRoZSBibG9jayBjb250ZXh0IGFib3ZlIHRoZSBlZGl0IHdpbmRvdworIiIiY29kZWNvbnRleHQgLSBFeHRlbnNpb24gdG8gZGlzcGxheSB0aGUgYmxvY2sgY29udGV4dCBhYm92ZSB0aGUgZWRpdCB3aW5kb3cKIAogT25jZSBjb2RlIGhhcyBzY3JvbGxlZCBvZmYgdGhlIHRvcCBvZiBhIHdpbmRvdywgaXQgY2FuIGJlIGRpZmZpY3VsdCB0bwogZGV0ZXJtaW5lIHdoaWNoIGJsb2NrIHlvdSBhcmUgaW4uICBUaGlzIGV4dGVuc2lvbiBpbXBsZW1lbnRzIGEgcGFuZSBhdCB0aGUgdG9wCiBvZiBlYWNoIElETEUgZWRpdCB3aW5kb3cgd2hpY2ggcHJvdmlkZXMgYmxvY2sgc3RydWN0dXJlIGhpbnRzLiAgVGhlc2UgaGludHMgYXJlCiB0aGUgbGluZXMgd2hpY2ggY29udGFpbiB0aGUgYmxvY2sgb3BlbmluZyBrZXl3b3JkcywgZS5nLiAnaWYnLCBmb3IgdGhlCiBlbmNsb3NpbmcgYmxvY2suICBUaGUgbnVtYmVyIG9mIGhpbnQgbGluZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgbnVtbGluZXMKLXZhcmlhYmxlIGluIHRoZSBDb2RlQ29udGV4dCBzZWN0aW9uIG9mIGNvbmZpZy1leHRlbnNpb25zLmRlZi4gTGluZXMgd2hpY2ggZG8KK3ZhcmlhYmxlIGluIHRoZSBjb2RlY29udGV4dCBzZWN0aW9uIG9mIGNvbmZpZy1leHRlbnNpb25zLmRlZi4gTGluZXMgd2hpY2ggZG8KIG5vdCBvcGVuIGJsb2NrcyBhcmUgbm90IHNob3duIGluIHRoZSBjb250ZXh0IGhpbnRzIHBhbmUuCiAKICIiIgotaW1wb3J0IHRraW50ZXIKLWZyb20gdGtpbnRlci5jb25zdGFudHMgaW1wb3J0IFRPUCwgTEVGVCwgWCwgVywgU1VOS0VOCiBpbXBvcnQgcmUKIGZyb20gc3lzIGltcG9ydCBtYXhzaXplIGFzIElORklOSVRZCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKKworaW1wb3J0IHRraW50ZXIKK2Zyb20gdGtpbnRlci5jb25zdGFudHMgaW1wb3J0IFRPUCwgTEVGVCwgWCwgVywgU1VOS0VOCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKIEJMT0NLT1BFTkVSUyA9IHsiY2xhc3MiLCAiZGVmIiwgImVsaWYiLCAiZWxzZSIsICJleGNlcHQiLCAiZmluYWxseSIsICJmb3IiLAogICAgICAgICAgICAgICAgICAgICAiaWYiLCAidHJ5IiwgIndoaWxlIiwgIndpdGgifQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9jb2xvcml6ZXIucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbG9yaXplci5weQppbmRleCAwMmVhYzQ3Li43MzEwYmIyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Db2xvckRlbGVnYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9jb2xvcml6ZXIucHkKQEAgLTEsMTAgKzEsMTAgQEAKLWltcG9ydCB0aW1lCi1pbXBvcnQgcmUKLWltcG9ydCBrZXl3b3JkCiBpbXBvcnQgYnVpbHRpbnMKLWZyb20gdGtpbnRlciBpbXBvcnQgVGtWZXJzaW9uCi1mcm9tIGlkbGVsaWIuRGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgoraW1wb3J0IGtleXdvcmQKK2ltcG9ydCByZQoraW1wb3J0IHRpbWUKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5kZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgogCiBERUJVRyA9IEZhbHNlCiAKQEAgLTQ5LDExICs0OSw4IEBACiAgICAgICAgIGluc2VydGJhY2tncm91bmQ9Y3Vyc29yX2NvbG9yLAogICAgICAgICBzZWxlY3Rmb3JlZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2ZvcmVncm91bmQnXSwKICAgICAgICAgc2VsZWN0YmFja2dyb3VuZD1zZWxlY3RfY29sb3JzWydiYWNrZ3JvdW5kJ10sCi0gICAgICAgICkKLSAgICBpZiBUa1ZlcnNpb24gPj0gOC41OgotICAgICAgICB0ZXh0LmNvbmZpZygKLSAgICAgICAgICAgIGluYWN0aXZlc2VsZWN0YmFja2dyb3VuZD1zZWxlY3RfY29sb3JzWydiYWNrZ3JvdW5kJ10pCi0KKyAgICAgICAgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2JhY2tncm91bmQnXSwgICMgbmV3IGluIDguNQorICAgICkKIAogY2xhc3MgQ29sb3JEZWxlZ2F0b3IoRGVsZWdhdG9yKToKIApAQCAtMjU5LDEyICsyNTYsMTIgQEAKIAogZGVmIF9jb2xvcl9kZWxlZ2F0b3IocGFyZW50KTogICMgaHRlc3QgIwogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKLSAgICBmcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIGZyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCiAKICAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXN0IENvbG9yRGVsZWdhdG9yIikKLSAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHBhcmVudC53aW5mb19yb290eCgpICsgMjAwLAotICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHggKyAyNTAsIHkgKyAxNzUpKQogICAgIHNvdXJjZSA9ICJpZiBzb21lbmFtZTogeCA9ICdhYmMnICMgY29tbWVudFxucHJpbnRcbiIKICAgICB0ZXh0ID0gVGV4dCh0b3AsIGJhY2tncm91bmQ9IndoaXRlIikKICAgICB0ZXh0LnBhY2soZXhwYW5kPTEsIGZpbGw9ImJvdGgiKQpAQCAtMjc3LDUgKzI3NCw5IEBACiAgICAgcC5pbnNlcnRmaWx0ZXIoZCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbG9yaXplcicsCisgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfY29sb3JfZGVsZWdhdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmIGIvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmCmluZGV4IDNiZmNiNjkuLjY0Nzg4ZjkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZy1rZXlzLmRlZgorKysgYi9MaWIvaWRsZWxpYi9jb25maWcta2V5cy5kZWYKQEAgLTEwOSw2ICsxMDksNTcgQEAKIGRlbC13b3JkLWxlZnQ9PEFsdC1LZXktQmFja1NwYWNlPgogZGVsLXdvcmQtcmlnaHQ9PEFsdC1LZXktZD4KIAorW0lETEUgTW9kZXJuIFVuaXhdCitjb3B5ID0gPENvbnRyb2wtU2hpZnQtS2V5LUM+IDxDb250cm9sLUtleS1JbnNlcnQ+CitjdXQgPSA8Q29udHJvbC1LZXkteD4gPFNoaWZ0LUtleS1EZWxldGU+CitwYXN0ZSA9IDxDb250cm9sLUtleS12PiA8U2hpZnQtS2V5LUluc2VydD4KK2JlZ2lubmluZy1vZi1saW5lID0gPEtleS1Ib21lPgorY2VudGVyLWluc2VydCA9IDxDb250cm9sLUtleS1sPgorY2xvc2UtYWxsLXdpbmRvd3MgPSA8Q29udHJvbC1LZXktcT4KK2Nsb3NlLXdpbmRvdyA9IDxDb250cm9sLUtleS13PiA8Q29udHJvbC1TaGlmdC1LZXktVz4KK2RvLW5vdGhpbmcgPSA8Q29udHJvbC1LZXktRjEyPgorZW5kLW9mLWZpbGUgPSA8Q29udHJvbC1LZXktZD4KK2hpc3RvcnktbmV4dCA9IDxBbHQtS2V5LW4+IDxNZXRhLUtleS1uPgoraGlzdG9yeS1wcmV2aW91cyA9IDxBbHQtS2V5LXA+IDxNZXRhLUtleS1wPgoraW50ZXJydXB0LWV4ZWN1dGlvbiA9IDxDb250cm9sLUtleS1jPgordmlldy1yZXN0YXJ0ID0gPEtleS1GNj4KK3Jlc3RhcnQtc2hlbGwgPSA8Q29udHJvbC1LZXktRjY+CitvcGVuLWNsYXNzLWJyb3dzZXIgPSA8Q29udHJvbC1LZXktYj4KK29wZW4tbW9kdWxlID0gPENvbnRyb2wtS2V5LW0+CitvcGVuLW5ldy13aW5kb3cgPSA8Q29udHJvbC1LZXktbj4KK29wZW4td2luZG93LWZyb20tZmlsZSA9IDxDb250cm9sLUtleS1vPgorcGxhaW4tbmV3bGluZS1hbmQtaW5kZW50ID0gPENvbnRyb2wtS2V5LWo+CitwcmludC13aW5kb3cgPSA8Q29udHJvbC1LZXktcD4KK3B5dGhvbi1jb250ZXh0LWhlbHAgPSA8U2hpZnQtS2V5LUYxPgorcHl0aG9uLWRvY3MgPSA8S2V5LUYxPgorcmVkbyA9IDxDb250cm9sLVNoaWZ0LUtleS1aPgorcmVtb3ZlLXNlbGVjdGlvbiA9IDxLZXktRXNjYXBlPgorc2F2ZS1jb3B5LW9mLXdpbmRvdy1hcy1maWxlID0gPEFsdC1TaGlmdC1LZXktUz4KK3NhdmUtd2luZG93LWFzLWZpbGUgPSA8Q29udHJvbC1TaGlmdC1LZXktUz4KK3NhdmUtd2luZG93ID0gPENvbnRyb2wtS2V5LXM+CitzZWxlY3QtYWxsID0gPENvbnRyb2wtS2V5LWE+Cit0b2dnbGUtYXV0by1jb2xvcmluZyA9IDxDb250cm9sLUtleS1zbGFzaD4KK3VuZG8gPSA8Q29udHJvbC1LZXktej4KK2ZpbmQgPSA8Q29udHJvbC1LZXktZj4KK2ZpbmQtYWdhaW4gPSA8S2V5LUYzPgorZmluZC1pbi1maWxlcyA9IDxDb250cm9sLVNoaWZ0LUtleS1mPgorZmluZC1zZWxlY3Rpb24gPSA8Q29udHJvbC1LZXktaD4KK3JlcGxhY2UgPSA8Q29udHJvbC1LZXktcj4KK2dvdG8tbGluZSA9IDxDb250cm9sLUtleS1nPgorc21hcnQtYmFja3NwYWNlID0gPEtleS1CYWNrU3BhY2U+CituZXdsaW5lLWFuZC1pbmRlbnQgPSA8S2V5LVJldHVybj4gPEtleS1LUF9FbnRlcj4KK3NtYXJ0LWluZGVudCA9IDxLZXktVGFiPgoraW5kZW50LXJlZ2lvbiA9IDxDb250cm9sLUtleS1icmFja2V0cmlnaHQ+CitkZWRlbnQtcmVnaW9uID0gPENvbnRyb2wtS2V5LWJyYWNrZXRsZWZ0PgorY29tbWVudC1yZWdpb24gPSA8Q29udHJvbC1LZXktZD4KK3VuY29tbWVudC1yZWdpb24gPSA8Q29udHJvbC1TaGlmdC1LZXktRD4KK3RhYmlmeS1yZWdpb24gPSA8QWx0LUtleS01PgordW50YWJpZnktcmVnaW9uID0gPEFsdC1LZXktNj4KK3RvZ2dsZS10YWJzID0gPENvbnRyb2wtS2V5LVQ+CitjaGFuZ2UtaW5kZW50d2lkdGggPSA8QWx0LUtleS11PgorZGVsLXdvcmQtbGVmdCA9IDxDb250cm9sLUtleS1CYWNrU3BhY2U+CitkZWwtd29yZC1yaWdodCA9IDxDb250cm9sLUtleS1EZWxldGU+CisKIFtJRExFIENsYXNzaWMgTWFjXQogY29weT08Q29tbWFuZC1LZXktYz4KIGN1dD08Q29tbWFuZC1LZXkteD4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZiBiL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZgppbmRleCA4ZWJiYzFiLi5hNjFiYmE3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWctbWFpbi5kZWYKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmCkBAIC03MCw3ICs3MCw5IEBACiAKIFtLZXlzXQogZGVmYXVsdD0gMQotbmFtZT0gSURMRSBDbGFzc2ljIFdpbmRvd3MKK25hbWU9CituYW1lMj0KKyMgbmFtZTIgc2V0IGluIHVzZXIgY29uZmlnLW1haW4uY2ZnIGZvciBrZXlzIGFkZGVkIGFmdGVyIDIwMTYgSnVseSAxCiAKIFtIaXN0b3J5XQogY3ljbGljPTEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkgYi9MaWIvaWRsZWxpYi9jb25maWcucHkKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnLnB5CmluZGV4IDg5NTQ0ODguLjEwZmUzYmEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLnB5CkBAIC03LDcgKzcsNyBAQAogYW5kIGlmIGEgZmlsZSBiZWNvbWVzIGVtcHR5LCBpdCB3aWxsIGJlIGRlbGV0ZWQuCiAKIFRoZSBjb250ZW50cyBvZiB0aGUgdXNlciBmaWxlcyBtYXkgYmUgYWx0ZXJlZCB1c2luZyB0aGUgT3B0aW9ucy9Db25maWd1cmUgSURMRQotbWVudSB0byBhY2Nlc3MgdGhlIGNvbmZpZ3VyYXRpb24gR1VJIChjb25maWdEaWFsb2cucHkpLCBvciBtYW51YWxseS4KK21lbnUgdG8gYWNjZXNzIHRoZSBjb25maWd1cmF0aW9uIEdVSSAoY29uZmlnZGlhbG9nLnB5KSwgb3IgbWFudWFsbHkuCiAKIFRocm91Z2hvdXQgdGhpcyBtb2R1bGUgdGhlcmUgaXMgYW4gZW1waGFzaXMgb24gcmV0dXJuaW5nIHVzZWFibGUgZGVmYXVsdHMKIHdoZW4gYSBwcm9ibGVtIG9jY3VycyBpbiByZXR1cm5pbmcgYSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiB2YWx1ZSBiYWNrIHRvCkBAIC0xOCwxMSArMTgsMTAgQEAKICIiIgogIyBUT0RPcyBhZGRlZCBPY3QgMjAxNCwgdGpyCiAKK2Zyb20gY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1mcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrVmVyc2lvbgogZnJvbSB0a2ludGVyLmZvbnQgaW1wb3J0IEZvbnQsIG5hbWV0b2ZvbnQKIAogY2xhc3MgSW52YWxpZENvbmZpZ1R5cGUoRXhjZXB0aW9uKTogcGFzcwpAQCAtMjMwLDE1ICsyMjksMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi51c2VyQ2ZnW2NvbmZpZ1R5cGVdLkdldChzZWN0aW9uLCBvcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT10eXBlLCByYXc9cmF3KQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJworICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBpbnZhbGlkICVyIHZhbHVlIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbiAlclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIGZyb20gc2VjdGlvbiAlcjogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUsIG9wdGlvbiwgc2VjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51c2VyQ2ZnW2NvbmZpZ1R5cGVdLkdldChzZWN0aW9uLCBvcHRpb24sIHJhdz1yYXcpKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCBjb25maWdUeXBlLCBzZWN0aW9uLCBvcHRpb24pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHNlbGYuZGVmYXVsdENmZ1tjb25maWdUeXBlXS5oYXNfb3B0aW9uKHNlY3Rpb24sb3B0aW9uKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0Q2ZnW2NvbmZpZ1R5cGVdLkdldCgKQEAgLTI0NywxNSArMjQzLDEyIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICNyZXR1cm5pbmcgZGVmYXVsdCwgcHJpbnQgd2FybmluZwogICAgICAgICBpZiB3YXJuX29uX2RlZmF1bHQ6Ci0gICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKKyAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZy5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgcHJvYmxlbSByZXRyaWV2aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uICVyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgZnJvbSBzZWN0aW9uICVyLlxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IHZhbHVlOiAlcicgJQogICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uLCBzZWN0aW9uLCBkZWZhdWx0KSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCBjb25maWdUeXBlLCBzZWN0aW9uLCBvcHRpb24pCiAgICAgICAgIHJldHVybiBkZWZhdWx0CiAKICAgICBkZWYgU2V0T3B0aW9uKHNlbGYsIGNvbmZpZ1R5cGUsIHNlY3Rpb24sIG9wdGlvbiwgdmFsdWUpOgpAQCAtMzU4LDUyICszNTEsNzMgQEAKICAgICAgICAgZm9yIGVsZW1lbnQgaW4gdGhlbWU6CiAgICAgICAgICAgICBpZiBub3QgY2ZnUGFyc2VyLmhhc19vcHRpb24odGhlbWVOYW1lLCBlbGVtZW50KToKICAgICAgICAgICAgICAgICAjIFByaW50IHdhcm5pbmcgdGhhdCB3aWxsIHJldHVybiBhIGRlZmF1bHQgY29sb3IKLSAgICAgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLklkbGVDb25mLkdldFRoZW1lRGljdCcKKyAgICAgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWcuSWRsZUNvbmYuR2V0VGhlbWVEaWN0JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtXG4gcHJvYmxlbSByZXRyaWV2aW5nIHRoZW1lIGVsZW1lbnQgJXInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4gZnJvbSB0aGVtZSAlci5cbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgY29sb3I6ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWxlbWVudCwgdGhlbWVOYW1lLCB0aGVtZVtlbGVtZW50XSkpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCAnaGlnaGxpZ2h0JywgdGhlbWVOYW1lLCBlbGVtZW50KQogICAgICAgICAgICAgdGhlbWVbZWxlbWVudF0gPSBjZmdQYXJzZXIuR2V0KAogICAgICAgICAgICAgICAgICAgICB0aGVtZU5hbWUsIGVsZW1lbnQsIGRlZmF1bHQ9dGhlbWVbZWxlbWVudF0pCiAgICAgICAgIHJldHVybiB0aGVtZQogCiAgICAgZGVmIEN1cnJlbnRUaGVtZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRleHQgY29sb3IgdGhlbWUuCisgICAgICAgICJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGV4dCBjb2xvciB0aGVtZS4iCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfY29sb3JzX2FuZF9rZXlzKCdUaGVtZScpCiAKLSAgICAgICAgaWRsZWxpYi5jb25maWctbWFpbi5kZWYgaW5jbHVkZXMgdGhpcyBzZWN0aW9uCisgICAgZGVmIEN1cnJlbnRLZXlzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5IHNldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMoJ0tleXMnKQorCisgICAgZGVmIGN1cnJlbnRfY29sb3JzX2FuZF9rZXlzKHNlbGYsIHNlY3Rpb24pOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbmFtZSBmb3IgVGhlbWUgb3IgS2V5cyBzZWN0aW9uLgorCisgICAgICAgIGlkbGVsaWIuY29uZmlnLW1haW4uZGVmICgnZGVmYXVsdCcpIGluY2x1ZGVzIHRoZXNlIHNlY3Rpb25zCisKICAgICAgICAgW1RoZW1lXQogICAgICAgICBkZWZhdWx0PSAxCiAgICAgICAgIG5hbWU9IElETEUgQ2xhc3NpYwogICAgICAgICBuYW1lMj0KLSAgICAgICAgIyBuYW1lMiBzZXQgaW4gdXNlciBjb25maWctbWFpbi5jZmcgZm9yIHRoZW1lcyBhZGRlZCBhZnRlciAyMDE1IE9jdCAxCiAKLSAgICAgICAgSXRlbSBuYW1lMiBpcyBuZWVkZWQgYmVjYXVzZSBzZXR0aW5nIG5hbWUgdG8gYSBuZXcgYnVpbHRpbgotICAgICAgICBjYXVzZXMgb2xkZXIgSURMRXMgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlcyBvciBxdWl0LgorICAgICAgICBbS2V5c10KKyAgICAgICAgZGVmYXVsdD0gMQorICAgICAgICBuYW1lPQorICAgICAgICBuYW1lMj0KKworICAgICAgICBJdGVtICduYW1lMicsIGlzIHVzZWQgZm9yIGJ1aWx0LWluICgnZGVmYXVsdCcpIHRoZW1lcyBhbmQga2V5cworICAgICAgICBhZGRlZCBhZnRlciAyMDE1IE9jdCAxIGFuZCAyMDE2IEp1bHkgMS4gIFRoaXMga2x1ZGdlIGlzIG5lZWRlZAorICAgICAgICBiZWNhdXNlIHNldHRpbmcgJ25hbWUnIHRvIGEgYnVpbHRpbiBub3QgZGVmaW5lZCBpbiBvbGRlciBJRExFcworICAgICAgICB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzIG9yIHF1aXQuCiAgICAgICAgIFNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI1MzEzLgotICAgICAgICBXaGVuIGRlZmF1bHQgPSBUcnVlLCBuYW1lMiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbmFtZSwKLSAgICAgICAgd2hpbGUgb2xkZXIgSURMRXMgd2lsbCBqdXN0IHVzZSBuYW1lLgorICAgICAgICBXaGVuIGRlZmF1bHQgPSBUcnVlLCAnbmFtZTInIHRha2VzIHByZWNlZGVuY2Ugb3ZlciAnbmFtZScsCisgICAgICAgIHdoaWxlIG9sZGVyIElETEVzIHdpbGwganVzdCB1c2UgbmFtZS4gIFdoZW4gZGVmYXVsdCA9IEZhbHNlLAorICAgICAgICAnbmFtZTInIG1heSBzdGlsbCBiZSBzZXQsIGJ1dCBpdCBpcyBpZ25vcmVkLgogICAgICAgICAiIiIKLSAgICAgICAgZGVmYXVsdCA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ2RlZmF1bHQnLAorICAgICAgICBjZmduYW1lID0gJ2hpZ2hsaWdodCcgaWYgc2VjdGlvbiA9PSAnVGhlbWUnIGVsc2UgJ2tleXMnCisgICAgICAgIGRlZmF1bHQgPSBzZWxmLkdldE9wdGlvbignbWFpbicsIHNlY3Rpb24sICdkZWZhdWx0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Jvb2wnLCBkZWZhdWx0PVRydWUpCisgICAgICAgIG5hbWUgPSAnJwogICAgICAgICBpZiBkZWZhdWx0OgotICAgICAgICAgICAgdGhlbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lMicsIGRlZmF1bHQ9JycpCi0gICAgICAgIGlmIGRlZmF1bHQgYW5kIG5vdCB0aGVtZSBvciBub3QgZGVmYXVsdDoKLSAgICAgICAgICAgIHRoZW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScsIGRlZmF1bHQ9JycpCi0gICAgICAgIHNvdXJjZSA9IHNlbGYuZGVmYXVsdENmZyBpZiBkZWZhdWx0IGVsc2Ugc2VsZi51c2VyQ2ZnCi0gICAgICAgIGlmIHNvdXJjZVsnaGlnaGxpZ2h0J10uaGFzX3NlY3Rpb24odGhlbWUpOgotICAgICAgICAgICAgcmV0dXJuIHRoZW1lCisgICAgICAgICAgICBuYW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCBzZWN0aW9uLCAnbmFtZTInLCBkZWZhdWx0PScnKQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsIHNlY3Rpb24sICduYW1lJywgZGVmYXVsdD0nJykKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIHNvdXJjZSA9IHNlbGYuZGVmYXVsdENmZyBpZiBkZWZhdWx0IGVsc2Ugc2VsZi51c2VyQ2ZnCisgICAgICAgICAgICBpZiBzb3VyY2VbY2ZnbmFtZV0uaGFzX3NlY3Rpb24obmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICAgICAgcmV0dXJuICJJRExFIENsYXNzaWMiIGlmIHNlY3Rpb24gPT0gJ1RoZW1lJyBlbHNlIHNlbGYuZGVmYXVsdF9rZXlzKCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZGVmYXVsdF9rZXlzKCk6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6CisgICAgICAgICAgICByZXR1cm4gJ0lETEUgQ2xhc3NpYyBXaW5kb3dzJworICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHJldHVybiAnSURMRSBDbGFzc2ljIE9TWCcKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiSURMRSBDbGFzc2ljIgorICAgICAgICAgICAgcmV0dXJuICdJRExFIE1vZGVybiBVbml4JwogCi0gICAgZGVmIEN1cnJlbnRLZXlzKHNlbGYpOgotICAgICAgICAiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGtleSBzZXQuIgotICAgICAgICByZXR1cm4gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnS2V5cycsICduYW1lJywgZGVmYXVsdD0nJykKLQotICAgIGRlZiBHZXRFeHRlbnNpb25zKHNlbGYsIGFjdGl2ZV9vbmx5PVRydWUsIGVkaXRvcl9vbmx5PUZhbHNlLCBzaGVsbF9vbmx5PUZhbHNlKToKKyAgICBkZWYgR2V0RXh0ZW5zaW9ucyhzZWxmLCBhY3RpdmVfb25seT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcl9vbmx5PUZhbHNlLCBzaGVsbF9vbmx5PUZhbHNlKToKICAgICAgICAgIiIiUmV0dXJuIGV4dGVuc2lvbnMgaW4gZGVmYXVsdCBhbmQgdXNlciBjb25maWctZXh0ZW5zaW9ucyBmaWxlcy4KIAogICAgICAgICBJZiBhY3RpdmVfb25seSBUcnVlLCBvbmx5IHJldHVybiBhY3RpdmUgKGVuYWJsZWQpIGV4dGVuc2lvbnMKQEAgLTQyMyw3ICs0MzcsNyBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYuR2V0T3B0aW9uKCdleHRlbnNpb25zJywgZXh0biwgJ2VuYWJsZScsIGRlZmF1bHQ9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdib29sJyk6CiAgICAgICAgICAgICAgICAgICAgICN0aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQKLSAgICAgICAgICAgICAgICAgICAgaWYgZWRpdG9yX29ubHkgb3Igc2hlbGxfb25seTogICMgVE9ETyBpZiBib3RoLCBjb250cmFkaWN0b3J5CisgICAgICAgICAgICAgICAgICAgIGlmIGVkaXRvcl9vbmx5IG9yIHNoZWxsX29ubHk6ICAjIFRPRE8gYm90aCBUcnVlIGNvbnRyYWRpY3QKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVkaXRvcl9vbmx5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9ICJlbmFibGVfZWRpdG9yIgogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTUyOCw3ICs1NDIsOCBAQAogICAgICAgICBldmVudFN0ciAtIHZpcnR1YWwgZXZlbnQsIGluY2x1ZGluZyBicmFja2V0cywgYXMgaW4gJzw8ZXZlbnQ+PicuCiAgICAgICAgICIiIgogICAgICAgICBldmVudE5hbWUgPSBldmVudFN0clsyOi0yXSAjdHJpbSBvZmYgdGhlIGFuZ2xlIGJyYWNrZXRzCi0gICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldE9wdGlvbigna2V5cycsIGtleVNldE5hbWUsIGV2ZW50TmFtZSwgZGVmYXVsdD0nJykuc3BsaXQoKQorICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRPcHRpb24oJ2tleXMnLCBrZXlTZXROYW1lLCBldmVudE5hbWUsIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuX29uX2RlZmF1bHQ9RmFsc2UpLnNwbGl0KCkKICAgICAgICAgcmV0dXJuIGJpbmRpbmcKIAogICAgIGRlZiBHZXRDdXJyZW50S2V5U2V0KHNlbGYpOgpAQCAtNjM5LDIwICs2NTQsMjggQEAKICAgICAgICAgICAgICc8PGRlbC13b3JkLXJpZ2h0Pj4nOiBbJzxDb250cm9sLUtleS1EZWxldGU+J10KICAgICAgICAgICAgIH0KICAgICAgICAgaWYga2V5U2V0TmFtZToKLSAgICAgICAgICAgIGZvciBldmVudCBpbiBrZXlCaW5kaW5nczoKLSAgICAgICAgICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRLZXlCaW5kaW5nKGtleVNldE5hbWUsIGV2ZW50KQotICAgICAgICAgICAgICAgIGlmIGJpbmRpbmc6Ci0gICAgICAgICAgICAgICAgICAgIGtleUJpbmRpbmdzW2V2ZW50XSA9IGJpbmRpbmcKLSAgICAgICAgICAgICAgICBlbHNlOiAjd2UgYXJlIGdvaW5nIHRvIHJldHVybiBhIGRlZmF1bHQsIHByaW50IHdhcm5pbmcKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZz0oJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIucHkgLSBJZGxlQ29uZi5HZXRDb3JlS2V5cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1cbiBwcm9ibGVtIHJldHJpZXZpbmcga2V5IGJpbmRpbmcgZm9yIGV2ZW50ICVyJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiBmcm9tIGtleSBzZXQgJXIuXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZTogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQsIGtleVNldE5hbWUsIGtleUJpbmRpbmdzW2V2ZW50XSkpCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBpZiBub3QgKHNlbGYudXNlckNmZ1sna2V5cyddLmhhc19zZWN0aW9uKGtleVNldE5hbWUpIG9yCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVmYXVsdENmZ1sna2V5cyddLmhhc19zZWN0aW9uKGtleVNldE5hbWUpKToKKyAgICAgICAgICAgICAgICB3YXJuaW5nID0gKAorICAgICAgICAgICAgICAgICAgICAnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0Q29yZUtleXMgLVxuJworICAgICAgICAgICAgICAgICAgICAnIGtleSBzZXQgJXIgaXMgbm90IGRlZmluZWQsIHVzaW5nIGRlZmF1bHQgYmluZGluZ3MuJyAlCisgICAgICAgICAgICAgICAgICAgIChrZXlTZXROYW1lLCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgX3dhcm4od2FybmluZywgJ2tleXMnLCBrZXlTZXROYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgZXZlbnQgaW4ga2V5QmluZGluZ3M6CisgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldEtleUJpbmRpbmcoa2V5U2V0TmFtZSwgZXZlbnQpCisgICAgICAgICAgICAgICAgICAgIGlmIGJpbmRpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlCaW5kaW5nc1tldmVudF0gPSBiaW5kaW5nCisgICAgICAgICAgICAgICAgICAgIGVsc2U6ICN3ZSBhcmUgZ29pbmcgdG8gcmV0dXJuIGEgZGVmYXVsdCwgcHJpbnQgd2FybmluZworICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0Q29yZUtleXMgLVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcHJvYmxlbSByZXRyaWV2aW5nIGtleSBiaW5kaW5nIGZvciBldmVudCAlclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZnJvbSBrZXkgc2V0ICVyLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWU6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LCBrZXlTZXROYW1lLCBrZXlCaW5kaW5nc1tldmVudF0pCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCAna2V5cycsIGtleVNldE5hbWUsIGV2ZW50KQogICAgICAgICByZXR1cm4ga2V5QmluZGluZ3MKIAogICAgIGRlZiBHZXRFeHRyYUhlbHBTb3VyY2VMaXN0KHNlbGYsIGNvbmZpZ1NldCk6CkBAIC03MTMsMTYgKzczNiwxMyBAQAogICAgICAgICBib2xkID0gc2VsZi5HZXRPcHRpb24oY29uZmlnVHlwZSwgc2VjdGlvbiwgJ2ZvbnQtYm9sZCcsIGRlZmF1bHQ9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Jvb2wnKQogICAgICAgICBpZiAoZmFtaWx5ID09ICdUa0ZpeGVkRm9udCcpOgotICAgICAgICAgICAgaWYgVGtWZXJzaW9uIDwgOC41OgotICAgICAgICAgICAgICAgIGZhbWlseSA9ICdDb3VyaWVyJwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmID0gRm9udChuYW1lPSdUa0ZpeGVkRm9udCcsIGV4aXN0cz1UcnVlLCByb290PXJvb3QpCi0gICAgICAgICAgICAgICAgYWN0dWFsRm9udCA9IEZvbnQuYWN0dWFsKGYpCi0gICAgICAgICAgICAgICAgZmFtaWx5ID0gYWN0dWFsRm9udFsnZmFtaWx5J10KLSAgICAgICAgICAgICAgICBzaXplID0gYWN0dWFsRm9udFsnc2l6ZSddCi0gICAgICAgICAgICAgICAgaWYgc2l6ZSA8PSAwOgotICAgICAgICAgICAgICAgICAgICBzaXplID0gMTAgICMgaWYgZm9udCBpbiBwaXhlbHMsIGlnbm9yZSBhY3R1YWwgc2l6ZQotICAgICAgICAgICAgICAgIGJvbGQgPSBhY3R1YWxGb250Wyd3ZWlnaHQnXT09J2JvbGQnCisgICAgICAgICAgICBmID0gRm9udChuYW1lPSdUa0ZpeGVkRm9udCcsIGV4aXN0cz1UcnVlLCByb290PXJvb3QpCisgICAgICAgICAgICBhY3R1YWxGb250ID0gRm9udC5hY3R1YWwoZikKKyAgICAgICAgICAgIGZhbWlseSA9IGFjdHVhbEZvbnRbJ2ZhbWlseSddCisgICAgICAgICAgICBzaXplID0gYWN0dWFsRm9udFsnc2l6ZSddCisgICAgICAgICAgICBpZiBzaXplIDw9IDA6CisgICAgICAgICAgICAgICAgc2l6ZSA9IDEwICAjIGlmIGZvbnQgaW4gcGl4ZWxzLCBpZ25vcmUgYWN0dWFsIHNpemUKKyAgICAgICAgICAgIGJvbGQgPSBhY3R1YWxGb250Wyd3ZWlnaHQnXSA9PSAnYm9sZCcKICAgICAgICAgcmV0dXJuIChmYW1pbHksIHNpemUsICdib2xkJyBpZiBib2xkIGVsc2UgJ25vcm1hbCcpCiAKICAgICBkZWYgTG9hZENmZ0ZpbGVzKHNlbGYpOgpAQCAtNzM5LDYgKzc1OSwxOCBAQAogCiBpZGxlQ29uZiA9IElkbGVDb25mKCkKIAorCitfd2FybmVkID0gc2V0KCkKK2RlZiBfd2Fybihtc2csICprZXkpOgorICAgIGtleSA9IChtc2csKSArIGtleQorICAgIGlmIGtleSBub3QgaW4gX3dhcm5lZDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBfd2FybmVkLmFkZChrZXkpCisKKwogIyBUT0RPIFJldmlzZSB0ZXN0IG91dHB1dCwgd3JpdGUgZXhwYW5kZWQgdW5pdHRlc3QKICMKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGU4MTE4Li4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLSJEaWFsb2cgdG8gc3BlY2lmeSBvciBlZGl0IHRoZSBwYXJhbWV0ZXJzIGZvciBhIHVzZXIgY29uZmlndXJlZCBoZWxwIHNvdXJjZS4iCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1pbXBvcnQgdGtpbnRlci5maWxlZGlhbG9nIGFzIHRrRmlsZURpYWxvZwotCi1jbGFzcyBHZXRIZWxwU291cmNlRGlhbG9nKFRvcGxldmVsKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVudUl0ZW09JycsIGZpbGVQYXRoPScnLCBfaHRlc3Q9RmFsc2UpOgotICAgICAgICAiIiJHZXQgbWVudSBlbnRyeSBhbmQgdXJsLyBsb2NhbCBmaWxlIGxvY2F0aW9uIGZvciBBZGRpdGlvbmFsIEhlbHAKLQotICAgICAgICBVc2VyIHNlbGVjdHMgYSBuYW1lIGZvciB0aGUgSGVscCByZXNvdXJjZSBhbmQgcHJvdmlkZXMgYSB3ZWIgdXJsCi0gICAgICAgIG9yIGEgbG9jYWwgZmlsZSBhcyBpdHMgc291cmNlLiAgVGhlIHVzZXIgY2FuIGVudGVyIGEgdXJsIG9yIGJyb3dzZQotICAgICAgICBmb3IgdGhlIGZpbGUuCi0KLSAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKLSAgICAgICAgIiIiCi0gICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKLSAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLCB3aWR0aD1GQUxTRSkKLSAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKLSAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQotICAgICAgICBzZWxmLmdyYWJfc2V0KCkKLSAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2FuY2VsKQotICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAotICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKLSAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCi0gICAgICAgIHNlbGYubWVudS5zZXQobWVudUl0ZW0pCi0gICAgICAgIHNlbGYucGF0aC5zZXQoZmlsZVBhdGgpCi0gICAgICAgIHNlbGYud2l0aGRyYXcoKSAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5Ci0gICAgICAgICNuZWVkcyB0byBiZSBkb25lIGhlcmUgc28gdGhhdCB0aGUgd2luZm9fcmVxd2lkdGggaXMgdmFsaWQKLSAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkKLSAgICAgICAgI2NlbnRyZSBkaWFsb2cgb3ZlciBwYXJlbnQuIGJlbG93IHBhcmVudCBpZiBydW5uaW5nIGh0ZXN0LgotICAgICAgICBzZWxmLmdlb21ldHJ5KAotICAgICAgICAgICAgICAgICIrJWQrJWQiICUgKAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArCi0gICAgICAgICAgICAgICAgICAgIChwYXJlbnQud2luZm9fd2lkdGgoKS8yIC0gc2VsZi53aW5mb19yZXF3aWR0aCgpLzIpLAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArCi0gICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxNTApKSkKLSAgICAgICAgc2VsZi5kZWljb25pZnkoKSAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKLSAgICAgICAgc2VsZi5iaW5kKCc8UmV0dXJuPicsIHNlbGYub2spCi0gICAgICAgIHNlbGYud2FpdF93aW5kb3coKQotCi0gICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgotICAgICAgICBzZWxmLm1lbnUgPSBTdHJpbmdWYXIoc2VsZikKLSAgICAgICAgc2VsZi5wYXRoID0gU3RyaW5nVmFyKHNlbGYpCi0gICAgICAgIHNlbGYuZm9udFNpemUgPSBTdHJpbmdWYXIoc2VsZikKLSAgICAgICAgc2VsZi5mcmFtZU1haW4gPSBGcmFtZShzZWxmLCBib3JkZXJ3aWR0aD0yLCByZWxpZWY9R1JPT1ZFKQotICAgICAgICBzZWxmLmZyYW1lTWFpbi5wYWNrKHNpZGU9VE9QLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQotICAgICAgICBsYWJlbE1lbnUgPSBMYWJlbChzZWxmLmZyYW1lTWFpbiwgYW5jaG9yPVcsIGp1c3RpZnk9TEVGVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0nTWVudSBJdGVtOicpCi0gICAgICAgIHNlbGYuZW50cnlNZW51ID0gRW50cnkoc2VsZi5mcmFtZU1haW4sIHRleHR2YXJpYWJsZT1zZWxmLm1lbnUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MzApCi0gICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgIGxhYmVsUGF0aCA9IExhYmVsKHNlbGYuZnJhbWVNYWluLCBhbmNob3I9VywganVzdGlmeT1MRUZULAotICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSdIZWxwIEZpbGUgUGF0aDogRW50ZXIgVVJMIG9yIGJyb3dzZSBmb3IgZmlsZScpCi0gICAgICAgIHNlbGYuZW50cnlQYXRoID0gRW50cnkoc2VsZi5mcmFtZU1haW4sIHRleHR2YXJpYWJsZT1zZWxmLnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9NDApCi0gICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgIGxhYmVsTWVudS5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIGxhYmVsUGF0aC5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgc2VsZi5lbnRyeVBhdGgucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIGJyb3dzZUJ1dHRvbiA9IEJ1dHRvbihzZWxmLmZyYW1lTWFpbiwgdGV4dD0nQnJvd3NlJywgd2lkdGg9OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5icm93c2VfZmlsZSkKLSAgICAgICAgYnJvd3NlQnV0dG9uLnBhY2socGFkeT0zKQotICAgICAgICBmcmFtZUJ1dHRvbnMgPSBGcmFtZShzZWxmKQotICAgICAgICBmcmFtZUJ1dHRvbnMucGFjayhzaWRlPUJPVFRPTSwgZmlsbD1YKQotICAgICAgICBzZWxmLmJ1dHRvbk9rID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nT0snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTgsIGRlZmF1bHQ9QUNUSVZFLCAgY29tbWFuZD1zZWxmLm9rKQotICAgICAgICBzZWxmLmJ1dHRvbk9rLmdyaWQocm93PTAsIGNvbHVtbj0wLCBwYWR4PTUscGFkeT01KQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbCA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0NhbmNlbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTgsIGNvbW1hbmQ9c2VsZi5jYW5jZWwpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsLmdyaWQocm93PTAsIGNvbHVtbj0xLCBwYWR4PTUsIHBhZHk9NSkKLQotICAgIGRlZiBicm93c2VfZmlsZShzZWxmKToKLSAgICAgICAgZmlsZXR5cGVzID0gWwotICAgICAgICAgICAgKCJIVE1MIEZpbGVzIiwgIiouaHRtICouaHRtbCIsICJURVhUIiksCi0gICAgICAgICAgICAoIlBERiBGaWxlcyIsICIqLnBkZiIsICJURVhUIiksCi0gICAgICAgICAgICAoIldpbmRvd3MgSGVscCBGaWxlcyIsICIqLmNobSIpLAotICAgICAgICAgICAgKCJUZXh0IEZpbGVzIiwgIioudHh0IiwgIlRFWFQiKSwKLSAgICAgICAgICAgICgiQWxsIEZpbGVzIiwgIioiKV0KLSAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKQotICAgICAgICBpZiBwYXRoOgotICAgICAgICAgICAgZGlyLCBiYXNlID0gb3MucGF0aC5zcGxpdChwYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYmFzZSA9IE5vbmUKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6Ci0gICAgICAgICAgICAgICAgZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSksICdEb2MnKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRpcik6Ci0gICAgICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgIG9wZW5kaWFsb2cgPSB0a0ZpbGVEaWFsb2cuT3BlbihwYXJlbnQ9c2VsZiwgZmlsZXR5cGVzPWZpbGV0eXBlcykKLSAgICAgICAgZmlsZSA9IG9wZW5kaWFsb2cuc2hvdyhpbml0aWFsZGlyPWRpciwgaW5pdGlhbGZpbGU9YmFzZSkKLSAgICAgICAgaWYgZmlsZToKLSAgICAgICAgICAgIHNlbGYucGF0aC5zZXQoZmlsZSkKLQotICAgIGRlZiBtZW51X29rKHNlbGYpOgotICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBhIHNlbnNpYmxlIG1lbnUgaXRlbSBuYW1lIgotICAgICAgICBtZW51X29rID0gVHJ1ZQotICAgICAgICBtZW51ID0gc2VsZi5tZW51LmdldCgpCi0gICAgICAgIG1lbnUuc3RyaXAoKQotICAgICAgICBpZiBub3QgbWVudToKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J01lbnUgSXRlbSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05vIG1lbnUgaXRlbSBzcGVjaWZpZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgICAgICBtZW51X29rID0gRmFsc2UKLSAgICAgICAgZWxpZiBsZW4obWVudSkgPiAzMDoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J01lbnUgSXRlbSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J01lbnUgaXRlbSB0b28gbG9uZzonCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuTGltaXQgMzAgY2hhcmFjdGVycy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgICAgICBtZW51X29rID0gRmFsc2UKLSAgICAgICAgcmV0dXJuIG1lbnVfb2sKLQotICAgIGRlZiBwYXRoX29rKHNlbGYpOgotICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBtZW51IGZpbGUgcGF0aCIKLSAgICAgICAgcGF0aF9vayA9IFRydWUKLSAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKQotICAgICAgICBwYXRoLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IHBhdGg6ICNubyBwYXRoIHNwZWNpZmllZAotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nRmlsZSBQYXRoIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gaGVscCBmaWxlIHBhdGggc3BlY2lmaWVkLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgc2VsZi5lbnRyeVBhdGguZm9jdXNfc2V0KCkKLSAgICAgICAgICAgIHBhdGhfb2sgPSBGYWxzZQotICAgICAgICBlbGlmIHBhdGguc3RhcnRzd2l0aCgoJ3d3dy4nLCAnaHR0cCcpKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHBhdGhbOjVdID09ICdmaWxlOic6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhbNTpdCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nRmlsZSBQYXRoIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbHAgZmlsZSBwYXRoIGRvZXMgbm90IGV4aXN0LicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLmVudHJ5UGF0aC5mb2N1c19zZXQoKQotICAgICAgICAgICAgICAgIHBhdGhfb2sgPSBGYWxzZQotICAgICAgICByZXR1cm4gcGF0aF9vawotCi0gICAgZGVmIG9rKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBpZiBzZWxmLm1lbnVfb2soKSBhbmQgc2VsZi5wYXRoX29rKCk6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IChzZWxmLm1lbnUuZ2V0KCkuc3RyaXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0aC5nZXQoKS5zdHJpcCgpKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAgICAgIHBhdGggPSBzZWxmLnJlc3VsdFsxXQotICAgICAgICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCgoJ3d3dycsICdmaWxlOicsICdodHRwOicsICdodHRwczonKSk6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIE1hYyBTYWZhcmkgaW5zaXN0cyBvbiB1c2luZyB0aGUgVVJJIGZvcm0gZm9yIGxvY2FsIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gbGlzdChzZWxmLnJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRbMV0gPSAiZmlsZTovLyIgKyBwYXRoCi0gICAgICAgICAgICBzZWxmLmRlc3Ryb3koKQotCi0gICAgZGVmIGNhbmNlbChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCi0gICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9jb25maWdfaGVscCcsCi0gICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCi0KLSAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KLSAgICBydW4oR2V0SGVscFNvdXJjZURpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMzc4MzYuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0iIiIKLURpYWxvZyB0aGF0IGFsbG93cyB1c2VyIHRvIHNwZWNpZnkgYSBuZXcgY29uZmlnIGZpbGUgc2VjdGlvbiBuYW1lLgotVXNlZCB0byBnZXQgbmV3IGhpZ2hsaWdodCB0aGVtZSBhbmQga2V5YmluZGluZyBzZXQgbmFtZXMuCi1UaGUgJ3JldHVybiB2YWx1ZScgZm9yIHRoZSBkaWFsb2csIHVzZWQgdHdvIHBsYWNlZCBpbiBjb25maWdEaWFsb2cucHksCi1pcyB0aGUgLnJlc3VsdCBhdHRyaWJ1dGUgc2V0IGluIHRoZSBPayBhbmQgQ2FuY2VsIG1ldGhvZHMuCi0iIiIKLWZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLQotY2xhc3MgR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2coVG9wbGV2ZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB1c2VkX25hbWVzLCBfaHRlc3Q9RmFsc2UpOgotICAgICAgICAiIiIKLSAgICAgICAgbWVzc2FnZSAtIHN0cmluZywgaW5mb3JtYXRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkKLSAgICAgICAgdXNlZF9uYW1lcyAtIHN0cmluZyBjb2xsZWN0aW9uLCBuYW1lcyBhbHJlYWR5IGluIHVzZSBmb3IgdmFsaWRpdHkgY2hlY2sKLSAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKLSAgICAgICAgIiIiCi0gICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKLSAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLCB3aWR0aD1GQUxTRSkKLSAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKLSAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQotICAgICAgICBzZWxmLmdyYWJfc2V0KCkKLSAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuQ2FuY2VsKQotICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCi0gICAgICAgIHNlbGYudXNlZF9uYW1lcyA9IHVzZWRfbmFtZXMKLSAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCi0gICAgICAgIHNlbGYud2l0aGRyYXcoKSAgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQotICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKQotICAgICAgICAjbmVlZHMgdG8gYmUgZG9uZSBoZXJlIHNvIHRoYXQgdGhlIHdpbmZvX3JlcXdpZHRoIGlzIHZhbGlkCi0gICAgICAgIHNlbGYubWVzc2FnZUluZm8uY29uZmlnKHdpZHRoPXNlbGYuZnJhbWVNYWluLndpbmZvX3JlcXdpZHRoKCkpCi0gICAgICAgIHNlbGYuZ2VvbWV0cnkoCi0gICAgICAgICAgICAgICAgIislZCslZCIgJSAoCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsKLSAgICAgICAgICAgICAgICAgICAgKHBhcmVudC53aW5mb193aWR0aCgpLzIgLSBzZWxmLndpbmZvX3JlcXdpZHRoKCkvMiksCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsKLSAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDEwMCkKLSAgICAgICAgICAgICAgICApICkgICNjZW50cmUgZGlhbG9nIG92ZXIgcGFyZW50IChvciBiZWxvdyBodGVzdCBib3gpCi0gICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgICNnZW9tZXRyeSBzZXQsIHVuaGlkZQotICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKLQotICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5uYW1lID0gU3RyaW5nVmFyKHNlbGYucGFyZW50KQotICAgICAgICBzZWxmLmZvbnRTaXplID0gU3RyaW5nVmFyKHNlbGYucGFyZW50KQotICAgICAgICBzZWxmLmZyYW1lTWFpbiA9IEZyYW1lKHNlbGYsIGJvcmRlcndpZHRoPTIsIHJlbGllZj1TVU5LRU4pCi0gICAgICAgIHNlbGYuZnJhbWVNYWluLnBhY2soc2lkZT1UT1AsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCi0gICAgICAgIHNlbGYubWVzc2FnZUluZm8gPSBNZXNzYWdlKHNlbGYuZnJhbWVNYWluLCBhbmNob3I9VywganVzdGlmeT1MRUZULAotICAgICAgICAgICAgICAgICAgICBwYWR4PTUsIHBhZHk9NSwgdGV4dD1zZWxmLm1lc3NhZ2UpICMsYXNwZWN0PTIwMCkKLSAgICAgICAgZW50cnlOYW1lID0gRW50cnkoc2VsZi5mcmFtZU1haW4sIHRleHR2YXJpYWJsZT1zZWxmLm5hbWUsIHdpZHRoPTMwKQotICAgICAgICBlbnRyeU5hbWUuZm9jdXNfc2V0KCkKLSAgICAgICAgc2VsZi5tZXNzYWdlSW5mby5wYWNrKHBhZHg9NSwgcGFkeT01KSAjLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQotICAgICAgICBlbnRyeU5hbWUucGFjayhwYWR4PTUsIHBhZHk9NSkKLQotICAgICAgICBmcmFtZUJ1dHRvbnMgPSBGcmFtZShzZWxmLCBwYWR5PTIpCi0gICAgICAgIGZyYW1lQnV0dG9ucy5wYWNrKHNpZGU9Qk9UVE9NKQotICAgICAgICBzZWxmLmJ1dHRvbk9rID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nT2snLAotICAgICAgICAgICAgICAgIHdpZHRoPTgsIGNvbW1hbmQ9c2VsZi5PaykKLSAgICAgICAgc2VsZi5idXR0b25Pay5wYWNrKHNpZGU9TEVGVCwgcGFkeD01KQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbCA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0NhbmNlbCcsCi0gICAgICAgICAgICAgICAgd2lkdGg9OCwgY29tbWFuZD1zZWxmLkNhbmNlbCkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwucGFjayhzaWRlPVJJR0hULCBwYWR4PTUpCi0KLSAgICBkZWYgbmFtZV9vayhzZWxmKToKLSAgICAgICAgJycnIEFmdGVyIHN0cmlwcGluZyBlbnRlcmVkIG5hbWUsIGNoZWNrIHRoYXQgaXQgaXMgYSAgc2Vuc2libGUKLSAgICAgICAgQ29uZmlnUGFyc2VyIGZpbGUgc2VjdGlvbiBuYW1lLiBSZXR1cm4gaXQgaWYgaXQgaXMsICcnIGlmIG5vdC4KLSAgICAgICAgJycnCi0gICAgICAgIG5hbWUgPSBzZWxmLm5hbWUuZ2V0KCkuc3RyaXAoKQotICAgICAgICBpZiBub3QgbmFtZTogI25vIG5hbWUgc3BlY2lmaWVkCi0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdOYW1lIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gbmFtZSBzcGVjaWZpZWQuJywgcGFyZW50PXNlbGYpCi0gICAgICAgIGVsaWYgbGVuKG5hbWUpPjMwOiAjbmFtZSB0b28gbG9uZwotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTmFtZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05hbWUgdG9vIGxvbmcuIEl0IHNob3VsZCBiZSBubyBtb3JlIHRoYW4gJysKLSAgICAgICAgICAgICAgICAgICAgJzMwIGNoYXJhY3RlcnMuJywgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBuYW1lID0gJycKLSAgICAgICAgZWxpZiBuYW1lIGluIHNlbGYudXNlZF9uYW1lczoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J05hbWUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdUaGlzIG5hbWUgaXMgYWxyZWFkeSBpbiB1c2UuJywgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBuYW1lID0gJycKLSAgICAgICAgcmV0dXJuIG5hbWUKLQotICAgIGRlZiBPayhzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgbmFtZSA9IHNlbGYubmFtZV9vaygpCi0gICAgICAgIGlmIG5hbWU6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IG5hbWUKLSAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLSAgICBkZWYgQ2FuY2VsKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBzZWxmLnJlc3VsdCA9ICcnCi0gICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9jb25maWdfbmFtZScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQotCi0gICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCi0gICAgcnVuKEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIva2V5YmluZGluZ0RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ19rZXkucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIva2V5YmluZGluZ0RpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnX2tleS5weQppbmRleCBlNjQzOGJmLi4yNjAyMjkzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ19rZXkucHkKQEAgLTIsMzEgKzIsMzUgQEAKIERpYWxvZyBmb3IgYnVpbGRpbmcgVGtpbnRlciBhY2NlbGVyYXRvciBrZXkgYmluZGluZ3MKICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiAKIGNsYXNzIEdldEtleXNEaWFsb2coVG9wbGV2ZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLHBhcmVudCx0aXRsZSxhY3Rpb24sY3VycmVudEtleVNlcXVlbmNlcyxfaHRlc3Q9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBhY3Rpb24sIGN1cnJlbnRLZXlTZXF1ZW5jZXMsCisgICAgICAgICAgICAgICAgIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIGFjdGlvbiAtIHN0cmluZywgdGhlIG5hbWUgb2YgdGhlIHZpcnR1YWwgZXZlbnQgdGhlc2Uga2V5cyB3aWxsIGJlCiAgICAgICAgICAgICAgICAgIG1hcHBlZCB0bwogICAgICAgICBjdXJyZW50S2V5cyAtIGxpc3QsIGEgbGlzdCBvZiBhbGwga2V5IHNlcXVlbmNlIGxpc3RzIGN1cnJlbnRseSBtYXBwZWQKICAgICAgICAgICAgICAgICAgdG8gdmlydHVhbCBldmVudHMsIGZvciBvdmVybGFwIGNoZWNraW5nCisgICAgICAgIF91dGVzdCAtIGJvb2wsIGRvIG5vdCB3YWl0IHdoZW4gcnVubmluZyB1bml0dGVzdAogICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAogICAgICAgICAiIiIKICAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQorICAgICAgICBzZWxmLndpdGhkcmF3KCkgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQogICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0Usd2lkdGg9RkFMU0UpCisgICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSwgd2lkdGg9RkFMU0UpCiAgICAgICAgIHNlbGYudGl0bGUodGl0bGUpCiAgICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKICAgICAgICAgc2VsZi5ncmFiX3NldCgpCiAgICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLkNhbmNlbCkKICAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKICAgICAgICAgc2VsZi5hY3Rpb249YWN0aW9uCi0gICAgICAgIHNlbGYuY3VycmVudEtleVNlcXVlbmNlcz1jdXJyZW50S2V5U2VxdWVuY2VzCi0gICAgICAgIHNlbGYucmVzdWx0PScnCi0gICAgICAgIHNlbGYua2V5U3RyaW5nPVN0cmluZ1ZhcihzZWxmKQorICAgICAgICBzZWxmLmN1cnJlbnRLZXlTZXF1ZW5jZXMgPSBjdXJyZW50S2V5U2VxdWVuY2VzCisgICAgICAgIHNlbGYucmVzdWx0ID0gJycKKyAgICAgICAgc2VsZi5rZXlTdHJpbmcgPSBTdHJpbmdWYXIoc2VsZikKICAgICAgICAgc2VsZi5rZXlTdHJpbmcuc2V0KCcnKQogICAgICAgICBzZWxmLlNldE1vZGlmaWVyc0ZvclBsYXRmb3JtKCkgIyBzZXQgc2VsZi5tb2RpZmllcnMsIHNlbGYubW9kaWZpZXJfbGFiZWwKICAgICAgICAgc2VsZi5tb2RpZmllcl92YXJzID0gW10KQEAgLTM3LDcgKzQxLDYgQEAKICAgICAgICAgc2VsZi5hZHZhbmNlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuQ3JlYXRlV2lkZ2V0cygpCiAgICAgICAgIHNlbGYuTG9hZEZpbmFsS2V5TGlzdCgpCi0gICAgICAgIHNlbGYud2l0aGRyYXcoKSAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5CiAgICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpCiAgICAgICAgIHNlbGYuZ2VvbWV0cnkoCiAgICAgICAgICAgICAgICAgIislZCslZCIgJSAoCkBAIC00Nyw4ICs1MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxNTApCiAgICAgICAgICAgICAgICAgKSApICAjY2VudHJlIGRpYWxvZyBvdmVyIHBhcmVudCAob3IgYmVsb3cgaHRlc3QgYm94KQotICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICNnZW9tZXRyeSBzZXQsIHVuaGlkZQotICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKKyAgICAgICAgaWYgbm90IF91dGVzdDoKKyAgICAgICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgI2dlb21ldHJ5IHNldCwgdW5oaWRlCisgICAgICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKIAogICAgIGRlZiBDcmVhdGVXaWRnZXRzKHNlbGYpOgogICAgICAgICBmcmFtZU1haW4gPSBGcmFtZShzZWxmLGJvcmRlcndpZHRoPTIscmVsaWVmPVNVTktFTikKQEAgLTI2MSw2ICsyNjUsNyBAQAogICAgICAgICAgICAga2V5c09LID0gVHJ1ZQogICAgICAgICByZXR1cm4ga2V5c09LCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oR2V0S2V5c0RpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ2RpYWxvZy5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbmZpZ2RpYWxvZy5weQppbmRleCA1ZjViZDM2Li5mYTQ3YWFhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnZGlhbG9nLnB5CkBAIC0xMCwxOCArMTAsMTggQEAKIAogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKIGltcG9ydCB0a2ludGVyLmNvbG9yY2hvb3NlciBhcyB0a0NvbG9yQ2hvb3NlcgogaW1wb3J0IHRraW50ZXIuZm9udCBhcyB0a0ZvbnQKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliLmR5bk9wdGlvbk1lbnVXaWRnZXQgaW1wb3J0IER5bk9wdGlvbk1lbnUKLWZyb20gaWRsZWxpYi5rZXliaW5kaW5nRGlhbG9nIGltcG9ydCBHZXRLZXlzRGlhbG9nCi1mcm9tIGlkbGVsaWIuY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cgaW1wb3J0IEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nCi1mcm9tIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQgaW1wb3J0IEdldEhlbHBTb3VyY2VEaWFsb2cKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnX2tleSBpbXBvcnQgR2V0S2V5c0RpYWxvZworZnJvbSBpZGxlbGliLmR5bm9wdGlvbiBpbXBvcnQgRHluT3B0aW9uTWVudQorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5xdWVyeSBpbXBvcnQgU2VjdGlvbk5hbWUsIEhlbHBTb3VyY2UKIGZyb20gaWRsZWxpYi50YWJiZWRwYWdlcyBpbXBvcnQgVGFiYmVkUGFnZVNldAotZnJvbSBpZGxlbGliLnRleHRWaWV3IGltcG9ydCB2aWV3X3RleHQKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSBpZGxlbGliLnRleHR2aWV3IGltcG9ydCB2aWV3X3RleHQKIAogY2xhc3MgQ29uZmlnRGlhbG9nKFRvcGxldmVsKToKIApAQCAtOTEsNyArOTEsNyBAQAogICAgICAgICBzZWxmLmNyZWF0ZV9hY3Rpb25fYnV0dG9ucygpLnBhY2soc2lkZT1CT1RUT00pCiAKICAgICBkZWYgY3JlYXRlX2FjdGlvbl9idXR0b25zKHNlbGYpOgotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBDaGFuZ2luZyB0aGUgZGVmYXVsdCBwYWRkaW5nIG9uIE9TWCByZXN1bHRzIGluIHVucmVhZGFibGUKICAgICAgICAgICAgICMgdGV4dCBpbiB0aGUgYnV0dG9ucwogICAgICAgICAgICAgcGFkZGluZ0FyZ3MgPSB7fQpAQCAtMzQxLDYgKzM0MSw3IEBACiAgICAgICAgIGJ1dHRvblNhdmVDdXN0b21LZXlzID0gQnV0dG9uKAogICAgICAgICAgICAgICAgIGZyYW1lc1sxXSwgdGV4dD0nU2F2ZSBhcyBOZXcgQ3VzdG9tIEtleSBTZXQnLAogICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5TYXZlQXNOZXdLZXlTZXQpCisgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzID0gTGFiZWwoZnJhbWVzWzBdLCBiZD0yKQogCiAgICAgICAgICMjd2lkZ2V0IHBhY2tpbmcKICAgICAgICAgI2JvZHkKQEAgLTM2MSw2ICszNjIsNyBAQAogICAgICAgICBzZWxmLnJhZGlvS2V5c0N1c3RvbS5ncmlkKHJvdz0xLCBjb2x1bW49MCwgc3RpY2t5PVcrTlMpCiAgICAgICAgIHNlbGYub3B0TWVudUtleXNCdWlsdGluLmdyaWQocm93PTAsIGNvbHVtbj0xLCBzdGlja3k9TlNFVykKICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0N1c3RvbS5ncmlkKHJvdz0xLCBjb2x1bW49MSwgc3RpY2t5PU5TRVcpCisgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmdyaWQocm93PTAsIGNvbHVtbj0yLCBzdGlja3k9TlNFVywgcGFkeD01LCBwYWR5PTUpCiAgICAgICAgIHNlbGYuYnV0dG9uRGVsZXRlQ3VzdG9tS2V5cy5wYWNrKHNpZGU9TEVGVCwgZmlsbD1YLCBleHBhbmQ9VHJ1ZSwgcGFkeD0yKQogICAgICAgICBidXR0b25TYXZlQ3VzdG9tS2V5cy5wYWNrKHNpZGU9TEVGVCwgZmlsbD1YLCBleHBhbmQ9VHJ1ZSwgcGFkeD0yKQogICAgICAgICBmcmFtZXNbMF0ucGFjayhzaWRlPVRPUCwgZmlsbD1CT1RILCBleHBhbmQ9VHJ1ZSkKQEAgLTQ2NCwyNCArNDY2LDI0IEBACiAgICAgICAgIHJldHVybiBmcmFtZQogCiAgICAgZGVmIEF0dGFjaFZhckNhbGxiYWNrcyhzZWxmKToKLSAgICAgICAgc2VsZi5mb250U2l6ZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQotICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCi0gICAgICAgIHNlbGYuZm9udEJvbGQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKLSAgICAgICAgc2VsZi5zcGFjZU51bS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKLSAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY29sb3VyKQotICAgICAgICBzZWxmLmJ1aWx0aW5UaGVtZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluVGhlbWUpCi0gICAgICAgIHNlbGYuY3VzdG9tVGhlbWUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCi0gICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfdGhlbWVJc0J1aWx0aW4pCi0gICAgICAgIHNlbGYuaGlnaGxpZ2h0VGFyZ2V0LnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2hpZ2hsaWdodFRhcmdldCkKLSAgICAgICAgc2VsZi5rZXlCaW5kaW5nLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCi0gICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpbktleXMpCi0gICAgICAgIHNlbGYuY3VzdG9tS2V5cy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21LZXlzKQotICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQotICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3dpbldpZHRoKQotICAgICAgICBzZWxmLndpbkhlaWdodC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF93aW5IZWlnaHQpCi0gICAgICAgIHNlbGYuc3RhcnR1cEVkaXQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCi0gICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYXV0b1NhdmUpCi0gICAgICAgIHNlbGYuZW5jb2RpbmcudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZW5jb2RpbmcpCisgICAgICAgIHNlbGYuZm9udFNpemUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQorICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKKyAgICAgICAgc2VsZi5mb250Qm9sZC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCisgICAgICAgIHNlbGYuc3BhY2VOdW0udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKKyAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9jb2xvdXIpCisgICAgICAgIHNlbGYuYnVpbHRpblRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpblRoZW1lKQorICAgICAgICBzZWxmLmN1c3RvbVRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCisgICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF90aGVtZUlzQnVpbHRpbikKKyAgICAgICAgc2VsZi5oaWdobGlnaHRUYXJnZXQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9oaWdobGlnaHRUYXJnZXQpCisgICAgICAgIHNlbGYua2V5QmluZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCisgICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluS2V5cykKKyAgICAgICAgc2VsZi5jdXN0b21LZXlzLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tS2V5cykKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQorICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luV2lkdGgpCisgICAgICAgIHNlbGYud2luSGVpZ2h0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luSGVpZ2h0KQorICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCisgICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9hdXRvU2F2ZSkKKyAgICAgICAgc2VsZi5lbmNvZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2VuY29kaW5nKQogCiAgICAgZGVmIHJlbW92ZV92YXJfY2FsbGJhY2tzKHNlbGYpOgogICAgICAgICAiUmVtb3ZlIGNhbGxiYWNrcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4iCkBAIC00OTIsNyArNDk0LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmtleUJpbmRpbmcsIHNlbGYuYnVpbHRpbktleXMsIHNlbGYuY3VzdG9tS2V5cywKICAgICAgICAgICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLCBzZWxmLndpbldpZHRoLCBzZWxmLndpbkhlaWdodCwKICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LCBzZWxmLmF1dG9TYXZlLCBzZWxmLmVuY29kaW5nLCk6Ci0gICAgICAgICAgICB2YXIudHJhY2VfdmRlbGV0ZSgndycsIHZhci50cmFjZV92aW5mbygpWzBdWzFdKQorICAgICAgICAgICAgdmFyLnRyYWNlX3JlbW92ZSgnd3JpdGUnLCB2YXIudHJhY2VfaW5mbygpWzBdWzFdKQogCiAgICAgZGVmIFZhckNoYW5nZWRfZm9udChzZWxmLCAqcGFyYW1zKToKICAgICAgICAgJycnV2hlbiBvbmUgZm9udCBhdHRyaWJ1dGUgY2hhbmdlcywgc2F2ZSB0aGVtIGFsbCwgYXMgdGhleSBhcmUKQEAgLTUxNCwxMCArNTE2LDExIEBACiAgICAgICAgIHNlbGYuT25OZXdDb2xvdXJTZXQoKQogCiAgICAgZGVmIFZhckNoYW5nZWRfYnVpbHRpblRoZW1lKHNlbGYsICpwYXJhbXMpOgorICAgICAgICBvbGR0aGVtZXMgPSAoJ0lETEUgQ2xhc3NpYycsICdJRExFIE5ldycpCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluVGhlbWUuZ2V0KCkKLSAgICAgICAgaWYgdmFsdWUgPT0gJ0lETEUgRGFyayc6Ci0gICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpICE9ICdJRExFIE5ldyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgJ0lETEUgQ2xhc3NpYycpCisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgb2xkdGhlbWVzWzBdKQogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lMicsIHZhbHVlKQogICAgICAgICAgICAgc2VsZi5uZXdfY3VzdG9tX3RoZW1lLmNvbmZpZyh0ZXh0PSdOZXcgdGhlbWUsIHNlZSBIZWxwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9JyM1MDAwMDAnKQpAQCAtNTU3LDggKzU2MCwyMyBAQAogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnZXh0ZW5zaW9ucycsIGV4dEtleWJpbmRTZWN0aW9uLCBldmVudCwgdmFsdWUpCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9idWlsdGluS2V5cyhzZWxmLCAqcGFyYW1zKToKKyAgICAgICAgb2xka2V5cyA9ICgKKyAgICAgICAgICAgICdJRExFIENsYXNzaWMgV2luZG93cycsCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIFVuaXgnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBNYWMnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBPU1gnLAorICAgICAgICApCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluS2V5cy5nZXQoKQotICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIHZhbHVlKQorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgIGlmIGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdLZXlzJywgJ25hbWUnKSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIG9sZGtleXNbMF0pCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PSdOZXcga2V5IHNldCwgc2VlIEhlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZnPScjNTAwMDAwJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lJywgdmFsdWUpCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCAnJykKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PScnLCBmZz0nYmxhY2snKQogICAgICAgICBzZWxmLkxvYWRLZXlzTGlzdCh2YWx1ZSkKIAogICAgIGRlZiBWYXJDaGFuZ2VkX2N1c3RvbUtleXMoc2VsZiwgKnBhcmFtcyk6CkBAIC02ODMsNyArNzAxLDcgQEAKICAgICBkZWYgR2V0TmV3S2V5c05hbWUoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHVzZWROYW1lcyA9IChpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgndXNlcicsICdrZXlzJykgKwogICAgICAgICAgICAgICAgIGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCdkZWZhdWx0JywgJ2tleXMnKSkKLSAgICAgICAgbmV3S2V5U2V0ID0gR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2coCisgICAgICAgIG5ld0tleVNldCA9IFNlY3Rpb25OYW1lKAogICAgICAgICAgICAgICAgIHNlbGYsICdOZXcgQ3VzdG9tIEtleSBTZXQnLCBtZXNzYWdlLCB1c2VkTmFtZXMpLnJlc3VsdAogICAgICAgICByZXR1cm4gbmV3S2V5U2V0CiAKQEAgLTc2Nyw4ICs3ODUsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgaXRlbUxpc3RbMF0pCiAgICAgICAgICNyZXZlcnQgdG8gZGVmYXVsdCBrZXkgc2V0Ci0gICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4uc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXS5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQotICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKSkKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi5zZXQoaWRsZUNvbmYuZGVmYXVsdENmZ1snbWFpbiddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQorICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKSkKICAgICAgICAgI3VzZXIgY2FuJ3QgYmFjayBvdXQgb2YgdGhlc2UgY2hhbmdlcywgdGhleSBtdXN0IGJlIGFwcGxpZWQgbm93CiAgICAgICAgIHNlbGYuU2F2ZUFsbENoYW5nZWRDb25maWdzKCkKICAgICAgICAgc2VsZi5BY3RpdmF0ZUNvbmZpZ0NoYW5nZXMoKQpAQCAtODM2LDcgKzg1Niw3IEBACiAgICAgZGVmIEdldE5ld1RoZW1lTmFtZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgdXNlZE5hbWVzID0gKGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCd1c2VyJywgJ2hpZ2hsaWdodCcpICsKICAgICAgICAgICAgICAgICBpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgnZGVmYXVsdCcsICdoaWdobGlnaHQnKSkKLSAgICAgICAgbmV3VGhlbWUgPSBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZygKKyAgICAgICAgbmV3VGhlbWUgPSBTZWN0aW9uTmFtZSgKICAgICAgICAgICAgICAgICBzZWxmLCAnTmV3IEN1c3RvbSBUaGVtZScsIG1lc3NhZ2UsIHVzZWROYW1lcykucmVzdWx0CiAgICAgICAgIHJldHVybiBuZXdUaGVtZQogCkBAIC05MzksNyArOTU5LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmJ1dHRvbkhlbHBMaXN0UmVtb3ZlLmNvbmZpZyhzdGF0ZT1ESVNBQkxFRCkKIAogICAgIGRlZiBIZWxwTGlzdEl0ZW1BZGQoc2VsZik6Ci0gICAgICAgIGhlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKHNlbGYsICdOZXcgSGVscCBTb3VyY2UnKS5yZXN1bHQKKyAgICAgICAgaGVscFNvdXJjZSA9IEhlbHBTb3VyY2Uoc2VsZiwgJ05ldyBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkucmVzdWx0CiAgICAgICAgIGlmIGhlbHBTb3VyY2U6CiAgICAgICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdC5hcHBlbmQoKGhlbHBTb3VyY2VbMF0sIGhlbHBTb3VyY2VbMV0pKQogICAgICAgICAgICAgc2VsZi5saXN0SGVscC5pbnNlcnQoRU5ELCBoZWxwU291cmNlWzBdKQpAQCAtOTQ5LDE2ICs5NzAsMTcgQEAKICAgICBkZWYgSGVscExpc3RJdGVtRWRpdChzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCiAgICAgICAgIGhlbHBTb3VyY2UgPSBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdCi0gICAgICAgIG5ld0hlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKAotICAgICAgICAgICAgICAgIHNlbGYsICdFZGl0IEhlbHAgU291cmNlJywgbWVudUl0ZW09aGVscFNvdXJjZVswXSwKLSAgICAgICAgICAgICAgICBmaWxlUGF0aD1oZWxwU291cmNlWzFdKS5yZXN1bHQKLSAgICAgICAgaWYgKG5vdCBuZXdIZWxwU291cmNlKSBvciAobmV3SGVscFNvdXJjZSA9PSBoZWxwU291cmNlKToKLSAgICAgICAgICAgIHJldHVybiAjbm8gY2hhbmdlcwotICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdID0gbmV3SGVscFNvdXJjZQotICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCi0gICAgICAgIHNlbGYubGlzdEhlbHAuaW5zZXJ0KGl0ZW1JbmRleCwgbmV3SGVscFNvdXJjZVswXSkKLSAgICAgICAgc2VsZi5VcGRhdGVVc2VySGVscENoYW5nZWRJdGVtcygpCi0gICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQorICAgICAgICBuZXdIZWxwU291cmNlID0gSGVscFNvdXJjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAnRWRpdCBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgbWVudWl0ZW09aGVscFNvdXJjZVswXSwKKyAgICAgICAgICAgICAgICBmaWxlcGF0aD1oZWxwU291cmNlWzFdLAorICAgICAgICAgICAgICAgICkucmVzdWx0CisgICAgICAgIGlmIG5ld0hlbHBTb3VyY2UgYW5kIG5ld0hlbHBTb3VyY2UgIT0gaGVscFNvdXJjZToKKyAgICAgICAgICAgIHNlbGYudXNlckhlbHBMaXN0W2l0ZW1JbmRleF0gPSBuZXdIZWxwU291cmNlCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmluc2VydChpdGVtSW5kZXgsIG5ld0hlbHBTb3VyY2VbMF0pCisgICAgICAgICAgICBzZWxmLlVwZGF0ZVVzZXJIZWxwQ2hhbmdlZEl0ZW1zKCkKKyAgICAgICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQogCiAgICAgZGVmIEhlbHBMaXN0SXRlbVJlbW92ZShzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCkBAIC05OTYsNyArMTAxOCw4IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMjZm9udCBzaXplIGRyb3Bkb3duCiAgICAgICAgIHNlbGYub3B0TWVudUZvbnRTaXplLlNldE1lbnUoKCc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMicsICcxMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicpLCBmb250U2l6ZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNScsICcyOScsICczNCcsICc0MCcpLCBmb250U2l6ZSApCiAgICAgICAgICMjZm9udFdlaWdodAogICAgICAgICBzZWxmLmZvbnRCb2xkLnNldChmb250Qm9sZCkKICAgICAgICAgIyNmb250IHNhbXBsZQpAQCAtMTA2NSw3ICsxMDg4LDcgQEAKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgY3VycmVudE9wdGlvbikKICAgICAgICAgICAgIGl0ZW1MaXN0ID0gaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ2RlZmF1bHQnLCAna2V5cycpCiAgICAgICAgICAgICBpdGVtTGlzdC5zb3J0KCkKLSAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNCdWlsdGluLlNldE1lbnUoaXRlbUxpc3QsIGl0ZW1MaXN0WzBdKQorICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uU2V0TWVudShpdGVtTGlzdCwgaWRsZUNvbmYuZGVmYXVsdF9rZXlzKCkpCiAgICAgICAgIHNlbGYuU2V0S2V5c1R5cGUoKQogICAgICAgICAjI2xvYWQga2V5c2V0IGVsZW1lbnQgbGlzdAogICAgICAgICBrZXlTZXROYW1lID0gaWRsZUNvbmYuQ3VycmVudEtleXMoKQpAQCAtMTM2NywxMiArMTM5MCwxOCBAQAogW0NhbmNlbF0gb25seSBjYW5jZWxzIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCBzYXZlLgogJycnCiBoZWxwX3BhZ2VzID0gewotICAgICdIaWdobGlnaHRpbmcnOicnJworICAgICdIaWdobGlnaHRpbmcnOiAnJycKIEhpZ2hsaWdodGluZzoKIFRoZSBJRExFIERhcmsgY29sb3IgdGhlbWUgaXMgbmV3IGluIE9jdG9iZXIgMjAxNS4gIEl0IGNhbiBvbmx5CiBiZSB1c2VkIHdpdGggb2xkZXIgSURMRSByZWxlYXNlcyBpZiBpdCBpcyBzYXZlZCBhcyBhIGN1c3RvbQogdGhlbWUsIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLScnJworJycnLAorICAgICdLZXlzJzogJycnCitLZXlzOgorVGhlIElETEUgTW9kZXJuIFVuaXgga2V5IHNldCBpcyBuZXcgaW4gSnVuZSAyMDE2LiAgSXQgY2FuIG9ubHkKK2JlIHVzZWQgd2l0aCBvbGRlciBJRExFIHJlbGVhc2VzIGlmIGl0IGlzIHNhdmVkIGFzIGEgY3VzdG9tCitrZXkgc2V0LCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCisnJycsCiB9CiAKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9EZWJ1Z2dlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVidWdnZXIucHkKaW5kZXggZDVlMjE3ZC4uMTE0ZDBkMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdnZXIucHkKQEAgLTEsOSArMSwxMiBAQAotaW1wb3J0IG9zCiBpbXBvcnQgYmRiCitpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuV2luZG93TGlzdCBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKLWZyb20gaWRsZWxpYi5TY3JvbGxlZExpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5zY3JvbGxlZGxpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAorZnJvbSBpZGxlbGliLndpbmRvd3MgaW1wb3J0IExpc3RlZFRvcGxldmVsCiAKIAogY2xhc3MgSWRiKGJkYi5CZGIpOgpAQCAtMzQsOCArMzcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmV2X2ZyYW1lID0gZnJhbWUuZl9iYWNrCi0gICAgICAgICAgICBpZiBwcmV2X2ZyYW1lLmZfY29kZS5jb19maWxlbmFtZS5jb3VudCgnRGVidWdnZXIucHknKToKLSAgICAgICAgICAgICAgICAjICh0aGF0IHRlc3Qgd2lsbCBjYXRjaCBib3RoIERlYnVnZ2VyLnB5IGFuZCBSZW1vdGVEZWJ1Z2dlci5weSkKKyAgICAgICAgICAgIHByZXZfbmFtZSA9IHByZXZfZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBpZiAnaWRsZWxpYicgaW4gcHJldl9uYW1lIGFuZCAnZGVidWdnZXInIGluIHByZXZfbmFtZToKKyAgICAgICAgICAgICAgICAjIGNhdGNoIGJvdGggaWRsZWxpYi9kZWJ1Z2dlci5weSBhbmQgaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CisgICAgICAgICAgICAgICAgIyBvbiBib3RoIHBvc2l4IGFuZCB3aW5kb3dzCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbl9ycGNfY29kZShwcmV2X2ZyYW1lKQogCkBAIC0zNzAsNyArMzc1LDcgQEAKIGNsYXNzIFN0YWNrVmlld2VyKFNjcm9sbGVkTGlzdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCBmbGlzdCwgZ3VpKToKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgICMgQXQgbGVhc3Qgb24gd2l0aCB0aGUgc3RvY2sgQXF1YVRrIHZlcnNpb24gb24gT1NYIDEwLjQgeW91J2xsCiAgICAgICAgICAgICAjIGdldCBhIHNoYWtpbmcgR1VJIHRoYXQgZXZlbnR1YWxseSBraWxscyBJRExFIGlmIHRoZSB3aWR0aAogICAgICAgICAgICAgIyBhcmd1bWVudCBpcyBzcGVjaWZpZWQuCkBAIC01MDIsNyArNTA3LDcgQEAKICAgICAgICAgICAgICMKICAgICAgICAgICAgICMgVGhlcmUgaXMgYWxzbyBhbiBvYnNjdXJlIGJ1ZyBpbiBzb3J0ZWQoZGljdCkgd2hlcmUgdGhlCiAgICAgICAgICAgICAjIGludGVycHJldGVyIGdldHMgaW50byBhIGxvb3AgcmVxdWVzdGluZyBub24tZXhpc3RpbmcgZGljdFswXSwKLSAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIFJlbW90ZURlYnVnZ2VyLkRpY3RQcm94eS4KKyAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIGRlYnVnZ2VyX3IuRGljdFByb3h5LgogICAgICAgICAgICAgIyMjCiAgICAgICAgICAgICBrZXlzX2xpc3QgPSBkaWN0LmtleXMoKQogICAgICAgICAgICAgbmFtZXMgPSBzb3J0ZWQoa2V5c19saXN0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUmVtb3RlRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CmluZGV4IGJlMjI2MmYuLmJjOTcxMjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyX3IucHkKQEAgLTIxLDcgKzIxLDcgQEAKICIiIgogCiBpbXBvcnQgdHlwZXMKLWZyb20gaWRsZWxpYiBpbXBvcnQgRGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKIAogZGVidWdnaW5nID0gMAogCkBAIC0xODcsNyArMTg3LDcgQEAKIAogICAgICIiIgogICAgIGd1aV9wcm94eSA9IEdVSVByb3h5KHJwY2hhbmRsZXIsIGd1aV9hZGFwX29pZCkKLSAgICBpZGIgPSBEZWJ1Z2dlci5JZGIoZ3VpX3Byb3h5KQorICAgIGlkYiA9IGRlYnVnZ2VyLklkYihndWlfcHJveHkpCiAgICAgaWRiX2FkYXAgPSBJZGJBZGFwdGVyKGlkYikKICAgICBycGNoYW5kbGVyLnJlZ2lzdGVyKGlkYl9hZGFwX29pZCwgaWRiX2FkYXApCiAgICAgcmV0dXJuIGlkYl9hZGFwX29pZApAQCAtMzYyLDcgKzM2Miw3IEBACiAgICAgaWRiX2FkYXBfb2lkID0gcnBjY2x0LnJlbW90ZWNhbGwoImV4ZWMiLCAic3RhcnRfdGhlX2RlYnVnZ2VyIixcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChndWlfYWRhcF9vaWQsKSwge30pCiAgICAgaWRiX3Byb3h5ID0gSWRiUHJveHkocnBjY2x0LCBweXNoZWxsLCBpZGJfYWRhcF9vaWQpCi0gICAgZ3VpID0gRGVidWdnZXIuRGVidWdnZXIocHlzaGVsbCwgaWRiX3Byb3h5KQorICAgIGd1aSA9IGRlYnVnZ2VyLkRlYnVnZ2VyKHB5c2hlbGwsIGlkYl9wcm94eSkKICAgICBndWlfYWRhcCA9IEdVSUFkYXB0ZXIocnBjY2x0LCBndWkpCiAgICAgcnBjY2x0LnJlZ2lzdGVyKGd1aV9hZGFwX29pZCwgZ3VpX2FkYXApCiAgICAgcmV0dXJuIGd1aQpAQCAtMzczLDcgKzM3Myw3IEBACiAgICAgUmVxdWVzdCB0aGF0IHRoZSBSUENTZXJ2ZXIgc2h1dCBkb3duIHRoZSBzdWJwcm9jZXNzIGRlYnVnZ2VyIGFuZCBsaW5rLgogICAgIFVucmVnaXN0ZXIgdGhlIEdVSUFkYXB0ZXIsIHdoaWNoIHdpbGwgY2F1c2UgYSBHQyBvbiB0aGUgSWRsZSBwcm9jZXNzCiAgICAgZGVidWdnZXIgYW5kIFJQQyBsaW5rIG9iamVjdHMuICAoVGhlIHNlY29uZCByZWZlcmVuY2UgdG8gdGhlIGRlYnVnZ2VyIEdVSQotICAgIGlzIGRlbGV0ZWQgaW4gUHlTaGVsbC5jbG9zZV9yZW1vdGVfZGVidWdnZXIoKS4pCisgICAgaXMgZGVsZXRlZCBpbiBweXNoZWxsLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcigpLikKIAogICAgICIiIgogICAgIGNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIocnBjY2x0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvT2JqZWN0QnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnb2JqLnB5CnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnb2JqLnB5CmluZGV4IDdiNTdhYTQuLmI3MGIxM2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdvYmoucHkKQEAgLTgsMTMgKzgsMTAgQEAKIAogIyBYWFggVE8gRE86CiAjIC0gZm9yIGNsYXNzZXMvbW9kdWxlcywgYWRkICJvcGVuIHNvdXJjZSIgdG8gb2JqZWN0IGJyb3dzZXIKLQotaW1wb3J0IHJlCi0KLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbSwgVHJlZU5vZGUsIFNjcm9sbGVkQ2FudmFzCi0KIGZyb20gcmVwcmxpYiBpbXBvcnQgUmVwcgogCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZUl0ZW0sIFRyZWVOb2RlLCBTY3JvbGxlZENhbnZhcworCiBteXJlcHIgPSBSZXByKCkKIG15cmVwci5tYXhzdHJpbmcgPSAxMDAKIG15cmVwci5tYXhvdGhlciA9IDEwMApAQCAtMTIyLDIxICsxMTksMjAgQEAKICAgICByZXR1cm4gYyhsYWJlbHRleHQsIG9iamVjdCwgc2V0ZnVuY3Rpb24pCiAKIAotZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOgorZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgaW1wb3J0IHN5cwotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgT2JqZWN0QnJvd3NlciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHJvb3QuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQotICAgIHJvb3QuZm9jdXNfc2V0KCkKLSAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBkZWJ1ZyBvYmplY3QgYnJvd3NlciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgMTAwLCB5ICsgMTc1KSkKKyAgICB0b3AuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQorICAgIHRvcC5mb2N1c19zZXQoKQorICAgIHNjID0gU2Nyb2xsZWRDYW52YXModG9wLCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCiAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIpCiAgICAgaXRlbSA9IG1ha2Vfb2JqZWN0dHJlZWl0ZW0oInN5cyIsIHN5cykKICAgICBub2RlID0gVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQogICAgIG5vZGUudXBkYXRlKCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JlbW90ZU9iamVjdEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZW1vdGVPYmplY3RCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9EZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9kZWxlZ2F0b3IucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVsZWdhdG9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5IGIvTGliL2lkbGVsaWIvZHlub3B0aW9uLnB5CnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2R5bk9wdGlvbk1lbnVXaWRnZXQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2R5bm9wdGlvbi5weQppbmRleCA1MTViNGJhLi45YzZmZmE0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5CisrKyBiL0xpYi9pZGxlbGliL2R5bm9wdGlvbi5weQpAQCAtMyw2ICszLDcgQEAKIGFuZCBzZXR0aW5nIG9mIGhpZ2hsaWdodHRoaWNrbmVzcwogIiIiCiBpbXBvcnQgY29weQorCiBmcm9tIHRraW50ZXIgaW1wb3J0IE9wdGlvbk1lbnUsIF9zZXRpdCwgU3RyaW5nVmFyLCBCdXR0b24KIAogY2xhc3MgRHluT3B0aW9uTWVudShPcHRpb25NZW51KToKQEAgLTM0LDEyICszNSwxMiBAQAogICAgICAgICAgICAgc2VsZi52YXJpYWJsZS5zZXQodmFsdWUpCiAKIGRlZiBfZHluX29wdGlvbl9tZW51KHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCAjICsgU3RyaW5nVmFyLCBCdXR0b24KIAotICAgIHRvcCA9IFRvcGxldmVsKCkKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXRzIGR5bmFtaWMgb3B0aW9uIG1lbnUiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgdG9wLmZvY3VzX3NldCgpCiAKICAgICB2YXIgPSBTdHJpbmdWYXIodG9wKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5IGIvTGliL2lkbGVsaWIvZWRpdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZWRpdG9yLnB5CmluZGV4IDk5NDRkYTMuLmFlNDc1Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9lZGl0b3IucHkKQEAgLTYsMjggKzYsMzQgQEAKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpbXBvcnQgdG9rZW5pemUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB3ZWJicm93c2VyCiAKLWZyb20gaWRsZWxpYi5NdWx0aUNhbGwgaW1wb3J0IE11bHRpQ2FsbENyZWF0b3IKLWZyb20gaWRsZWxpYiBpbXBvcnQgV2luZG93TGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hEaWFsb2cKLWZyb20gaWRsZWxpYiBpbXBvcnQgR3JlcERpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBSZXBsYWNlRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5UGFyc2UKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZywgdGV4dFZpZXcsIGNvbmZpZ0RpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgoraW1wb3J0IHRraW50ZXIuc2ltcGxlZGlhbG9nIGFzIHRrU2ltcGxlRGlhbG9nCitpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdkaWFsb2cKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZ3JlcAogZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCitmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIubXVsdGljYWxsIGltcG9ydCBNdWx0aUNhbGxDcmVhdG9yCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5cGFyc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcXVlcnkKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcmVwbGFjZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2gKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgd2luZG93cwogCiAjIFRoZSBkZWZhdWx0IHRhYiBzZXR0aW5nIGZvciBhIFRleHQgd2lkZ2V0LCBpbiBhdmVyYWdlLXdpZHRoIGNoYXJhY3RlcnMuCiBUS19UQUJXSURUSF9ERUZBVUxUID0gOAotCiBfcHlfdmVyc2lvbiA9ICcgKCVzKScgJSBwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpCiAKKwogZGVmIF9zcGhpbnhfdmVyc2lvbigpOgogICAgICJGb3JtYXQgc3lzLnZlcnNpb25faW5mbyB0byBwcm9kdWNlIHRoZSBTcGhpbnggdmVyc2lvbiBzdHJpbmcgdXNlZCB0byBpbnN0YWxsIHRoZSBjaG0gZG9jcyIKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwpAQCAtNDAsNjMgKzQ2LDE2IEBACiAgICAgcmV0dXJuIHJlbGVhc2UKIAogCi1jbGFzcyBIZWxwRGlhbG9nKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gTm9uZSAgICAgICMgcGFyZW50IG9mIGhlbHAgd2luZG93Ci0gICAgICAgIHNlbGYuZGxnID0gTm9uZSAgICAgICAgICMgdGhlIGhlbHAgd2luZG93IGl0ZXNlbGYKLQotICAgIGRlZiBkaXNwbGF5KHNlbGYsIHBhcmVudCwgbmVhcj1Ob25lKToKLSAgICAgICAgIiIiIERpc3BsYXkgdGhlIGhlbHAgZGlhbG9nLgotCi0gICAgICAgICAgICBwYXJlbnQgLSBwYXJlbnQgd2lkZ2V0IGZvciB0aGUgaGVscCB3aW5kb3cKLQotICAgICAgICAgICAgbmVhciAtIGEgVG9wbGV2ZWwgd2lkZ2V0IChlLmcuIEVkaXRvcldpbmRvdyBvciBQeVNoZWxsKQotICAgICAgICAgICAgICAgICAgIHRvIHVzZSBhcyBhIHJlZmVyZW5jZSBmb3IgcGxhY2luZyB0aGUgaGVscCB3aW5kb3cKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncyBhcyB3Ci0gICAgICAgIHcud2FybigiRWRpdG9yV2luZG93LkhlbHBEaWFsb2cgaXMgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS5cbiIKLSAgICAgICAgICAgICAgICJJdCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42IG9yIGxhdGVyLlxuIgotICAgICAgICAgICAgICAgIkl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHByaXZhdGUgaGVscC5IZWxwV2luZG93XG4iLAotICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIGlmIHNlbGYuZGxnIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNob3dfZGlhbG9nKHBhcmVudCkKLSAgICAgICAgaWYgbmVhcjoKLSAgICAgICAgICAgIHNlbGYubmVhcndpbmRvdyhuZWFyKQotCi0gICAgZGVmIHNob3dfZGlhbG9nKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIGZuPW9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksJ2hlbHAudHh0JykKLSAgICAgICAgc2VsZi5kbGcgPSBkbGcgPSB0ZXh0Vmlldy52aWV3X2ZpbGUocGFyZW50LCdIZWxwJyxmbiwgbW9kYWw9RmFsc2UpCi0gICAgICAgIGRsZy5iaW5kKCc8RGVzdHJveT4nLCBzZWxmLmRlc3Ryb3ksICcrJykKLQotICAgIGRlZiBuZWFyd2luZG93KHNlbGYsIG5lYXIpOgotICAgICAgICAjIFBsYWNlIHRoZSBoZWxwIGRpYWxvZyBuZWFyIHRoZSB3aW5kb3cgc3BlY2lmaWVkIGJ5IHBhcmVudC4KLSAgICAgICAgIyBOb3RlIC0gdGhpcyBtYXkgbm90IHJlcG9zaXRpb24gdGhlIHdpbmRvdyBpbiBNZXRhY2l0eQotICAgICAgICAjICBpZiAiL2FwcHMvbWV0YWNpdHkvZ2VuZXJhbC9kaXNhYmxlX3dvcmthcm91bmRzIiBpcyBlbmFibGVkCi0gICAgICAgIGRsZyA9IHNlbGYuZGxnCi0gICAgICAgIGdlb20gPSAobmVhci53aW5mb19yb290eCgpICsgMTAsIG5lYXIud2luZm9fcm9vdHkoKSArIDEwKQotICAgICAgICBkbGcud2l0aGRyYXcoKQotICAgICAgICBkbGcuZ2VvbWV0cnkoIj0rJWQrJWQiICUgZ2VvbSkKLSAgICAgICAgZGxnLmRlaWNvbmlmeSgpCi0gICAgICAgIGRsZy5saWZ0KCkKLQotICAgIGRlZiBkZXN0cm95KHNlbGYsIGV2PU5vbmUpOgotICAgICAgICBzZWxmLmRsZyA9IE5vbmUKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lCi0KLWhlbHBEaWFsb2cgPSBIZWxwRGlhbG9nKCkgICMgc2luZ2xldG9uIGluc3RhbmNlLCBubyBsb25nZXIgdXNlZAotCi0KIGNsYXNzIEVkaXRvcldpbmRvdyhvYmplY3QpOgotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi0gICAgZnJvbSBpZGxlbGliLkNvbG9yRGVsZWdhdG9yIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCi0gICAgZnJvbSBpZGxlbGliLlVuZG9EZWxlZ2F0b3IgaW1wb3J0IFVuZG9EZWxlZ2F0b3IKLSAgICBmcm9tIGlkbGVsaWIuSU9CaW5kaW5nIGltcG9ydCBJT0JpbmRpbmcsIGZpbGVzeXN0ZW1lbmNvZGluZywgZW5jb2RpbmcKLSAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IEJpbmRpbmdzCisgICAgZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKKyAgICBmcm9tIGlkbGVsaWIuY29sb3JpemVyIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCisgICAgZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKKyAgICBmcm9tIGlkbGVsaWIuaW9tZW51IGltcG9ydCBJT0JpbmRpbmcsIGVuY29kaW5nCisgICAgZnJvbSBpZGxlbGliIGltcG9ydCBtYWlubWVudQogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwKLSAgICBmcm9tIGlkbGVsaWIuTXVsdGlTdGF0dXNCYXIgaW1wb3J0IE11bHRpU3RhdHVzQmFyCisgICAgZnJvbSBpZGxlbGliLnN0YXR1c2JhciBpbXBvcnQgTXVsdGlTdGF0dXNCYXIKIAorICAgIGZpbGVzeXN0ZW1lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAgIyBmb3IgZmlsZSBuYW1lcwogICAgIGhlbHBfdXJsID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIGZpbGVuYW1lPU5vbmUsIGtleT1Ob25lLCByb290PU5vbmUpOgpAQCAtMTM2LDExICs5NSwxMSBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBzeXMucHMxID0gJz4+PiAnCiAgICAgICAgIHNlbGYubWVudWJhciA9IE1lbnUocm9vdCkKLSAgICAgICAgc2VsZi50b3AgPSB0b3AgPSBXaW5kb3dMaXN0Lkxpc3RlZFRvcGxldmVsKHJvb3QsIG1lbnU9c2VsZi5tZW51YmFyKQorICAgICAgICBzZWxmLnRvcCA9IHRvcCA9IHdpbmRvd3MuTGlzdGVkVG9wbGV2ZWwocm9vdCwgbWVudT1zZWxmLm1lbnViYXIpCiAgICAgICAgIGlmIGZsaXN0OgogICAgICAgICAgICAgc2VsZi50a2ludGVyX3ZhcnMgPSBmbGlzdC52YXJzCiAgICAgICAgICAgICAjc2VsZi50b3AuaW5zdGFuY2VfZGljdCBtYWtlcyBmbGlzdC5pbnZlcnNlZGljdCBhdmFpbGFibGUgdG8KLSAgICAgICAgICAgICNjb25maWdEaWFsb2cucHkgc28gaXQgY2FuIGFjY2VzcyBhbGwgRWRpdG9yV2luZG93IGluc3RhbmNlcworICAgICAgICAgICAgI2NvbmZpZ2RpYWxvZy5weSBzbyBpdCBjYW4gYWNjZXNzIGFsbCBFZGl0b3JXaW5kb3cgaW5zdGFuY2VzCiAgICAgICAgICAgICBzZWxmLnRvcC5pbnN0YW5jZV9kaWN0ID0gZmxpc3QuaW52ZXJzZWRpY3QKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGtpbnRlcl92YXJzID0ge30gICMga2V5czogVGtpbnRlciBldmVudCBuYW1lcwpAQCAtMTU4LDEzICsxMTcsMTAgQEAKICAgICAgICAgICAgICAgICAnd3JhcCc6ICdub25lJywKICAgICAgICAgICAgICAgICAnaGlnaGxpZ2h0dGhpY2tuZXNzJzogMCwKICAgICAgICAgICAgICAgICAnd2lkdGgnOiBzZWxmLndpZHRoLAotICAgICAgICAgICAgICAgICdoZWlnaHQnOiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnRWRpdG9yV2luZG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLCB0eXBlPSdpbnQnKX0KLSAgICAgICAgaWYgVGtWZXJzaW9uID49IDguNToKLSAgICAgICAgICAgICMgU3RhcnRpbmcgd2l0aCB0ayA4LjUgd2UgaGF2ZSB0byBzZXQgdGhlIG5ldyB0YWJzdHlsZSBvcHRpb24KLSAgICAgICAgICAgICMgdG8gJ3dvcmRwcm9jZXNzb3InIHRvIGFjaGlldmUgdGhlIHNhbWUgZGlzcGxheSBvZiB0YWJzIGFzIGluCi0gICAgICAgICAgICAjIG9sZGVyIHRrIHZlcnNpb25zLgotICAgICAgICAgICAgdGV4dF9vcHRpb25zWyd0YWJzdHlsZSddID0gJ3dvcmRwcm9jZXNzb3InCisgICAgICAgICAgICAgICAgJ3RhYnN0eWxlJzogJ3dvcmRwcm9jZXNzb3InLCAgIyBuZXcgaW4gOC41CisgICAgICAgICAgICAgICAgJ2hlaWdodCc6IGlkbGVDb25mLkdldE9wdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdtYWluJywgJ0VkaXRvcldpbmRvdycsICdoZWlnaHQnLCB0eXBlPSdpbnQnKSwKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBNdWx0aUNhbGxDcmVhdG9yKFRleHQpKHRleHRfZnJhbWUsICoqdGV4dF9vcHRpb25zKQogICAgICAgICBzZWxmLnRvcC5mb2N1c2VkX3dpZGdldCA9IHNlbGYudGV4dAogCkBAIC0xNzMsNyArMTI5LDcgQEAKIAogICAgICAgICBzZWxmLnRvcC5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2xvc2UpCiAgICAgICAgIHNlbGYudG9wLmJpbmQoIjw8Y2xvc2Utd2luZG93Pj4iLCBzZWxmLmNsb3NlX2V2ZW50KQotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBDb21tYW5kLVcgb24gZWRpdG9yd2luZG93cyBkb2Vzbid0IHdvcmsgd2l0aG91dCB0aGlzLgogICAgICAgICAgICAgdGV4dC5iaW5kKCc8PGNsb3NlLXdpbmRvdz4+Jywgc2VsZi5jbG9zZV9ldmVudCkKICAgICAgICAgICAgICMgU29tZSBPUyBYIHN5c3RlbXMgaGF2ZSBvbmx5IG9uZSBtb3VzZSBidXR0b24sIHNvIHVzZQpAQCAtMzA5LDcgKzI2NSw3IEBACiAgICAgICAgICAgICAgICAgbWVudS5hZGRfc2VwYXJhdG9yKCkKICAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCiAgICAgICAgICAgICBzZWxmLndtZW51X2VuZCA9IGVuZAotICAgICAgICAgICAgV2luZG93TGlzdC5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgICAgIHdpbmRvd3MucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAKICAgICAgICAgIyBTb21lIGFic3RyYWN0aW9ucyBzbyBJRExFIGV4dGVuc2lvbnMgYXJlIGNyb3NzLUlERQogICAgICAgICBzZWxmLmFza3llc25vID0gdGtNZXNzYWdlQm94LmFza3llc25vCkBAIC00MTgsNyArMzc0LDcgQEAKICAgICAgICAgICAgIHVuZGVybGluZSwgbGFiZWwgPSBwcmVwc3RyKGxhYmVsKQogICAgICAgICAgICAgbWVudWRpY3RbbmFtZV0gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPW5hbWUsIHRlYXJvZmY9MCkKICAgICAgICAgICAgIG1iYXIuYWRkX2Nhc2NhZGUobGFiZWw9bGFiZWwsIG1lbnU9bWVudSwgdW5kZXJsaW5lPXVuZGVybGluZSkKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0NhcmJvblRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0NhcmJvblRrKCk6CiAgICAgICAgICAgICAjIEluc2VydCB0aGUgYXBwbGljYXRpb24gbWVudQogICAgICAgICAgICAgbWVudWRpY3RbJ2FwcGxpY2F0aW9uJ10gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPSdhcHBsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJvZmY9MCkKQEAgLTQzOSw3ICszOTUsNyBAQAogICAgICAgICAgICAgZW5kID0gLTEKICAgICAgICAgaWYgZW5kID4gc2VsZi53bWVudV9lbmQ6CiAgICAgICAgICAgICBtZW51LmRlbGV0ZShzZWxmLndtZW51X2VuZCsxLCBlbmQpCi0gICAgICAgIFdpbmRvd0xpc3QuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQorICAgICAgICB3aW5kb3dzLmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKIAogICAgIHJtZW51ID0gTm9uZQogCkBAIC01MDcsMTcgKzQ2MywxNyBAQAogCiAgICAgZGVmIGFib3V0X2RpYWxvZyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdBYm91dCBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuYWJvdXRfZGlhbG9nLgotICAgICAgICBhYm91dERpYWxvZy5BYm91dERpYWxvZyhzZWxmLnRvcCwnQWJvdXQgSURMRScpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5hYm91dF9kaWFsb2cuCisgICAgICAgIGhlbHBfYWJvdXQuQWJvdXREaWFsb2coc2VsZi50b3AsJ0Fib3V0IElETEUnKQogCiAgICAgZGVmIGNvbmZpZ19kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgT3B0aW9ucyAnQ29uZmlndXJlIElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgotICAgICAgICBjb25maWdEaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgorICAgICAgICBjb25maWdkaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCiAKICAgICBkZWYgaGVscF9kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnSURMRSBIZWxwJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuaGVscF9kaWFsb2cuCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5oZWxwX2RpYWxvZy4KICAgICAgICAgaWYgc2VsZi5yb290OgogICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5yb290CiAgICAgICAgIGVsc2U6CkBAIC01OTAsMjMgKzU0NiwyMyBAQAogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZChzZWxmLnRleHQpCisgICAgICAgIHNlYXJjaC5maW5kKHNlbGYudGV4dCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBmaW5kX2FnYWluX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgU2VhcmNoRGlhbG9nLmZpbmRfYWdhaW4oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9hZ2FpbihzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9zZWxlY3Rpb25fZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfaW5fZmlsZXNfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBHcmVwRGlhbG9nLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQorICAgICAgICBncmVwLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIHJlcGxhY2VfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBSZXBsYWNlRGlhbG9nLnJlcGxhY2Uoc2VsZi50ZXh0KQorICAgICAgICByZXBsYWNlLnJlcGxhY2Uoc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGdvdG9fbGluZV9ldmVudChzZWxmLCBldmVudCk6CkBAIC02MjIsNDYgKzU3OCwyNyBAQAogICAgICAgICB0ZXh0LnNlZSgiaW5zZXJ0IikKIAogICAgIGRlZiBvcGVuX21vZHVsZShzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgIyBYWFggU2hvdWxkbid0IHRoaXMgYmUgaW4gSU9CaW5kaW5nPworICAgICAgICAiIiJHZXQgbW9kdWxlIG5hbWUgZnJvbSB1c2VyIGFuZCBvcGVuIGl0LgorCisgICAgICAgIFJldHVybiBtb2R1bGUgcGF0aCBvciBOb25lIGZvciBjYWxscyBieSBvcGVuX2NsYXNzX2Jyb3dzZXIKKyAgICAgICAgd2hlbiBsYXR0ZXIgaXMgbm90IGludm9rZWQgaW4gbmFtZWQgZWRpdG9yIHdpbmRvdy4KKyAgICAgICAgIiIiCisgICAgICAgICMgWFhYIFRoaXMsIG9wZW5fY2xhc3NfYnJvd3NlciwgYW5kIG9wZW5fcGF0aF9icm93c2VyCisgICAgICAgICMgd291bGQgZml0IGJldHRlciBpbiBpb21lbnUuSU9CaW5kaW5nLgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBuYW1lID0gc2VsZi50ZXh0LmdldCgic2VsLmZpcnN0IiwgInNlbC5sYXN0IikKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLnRleHQuZ2V0KCJzZWwuZmlyc3QiLCAic2VsLmxhc3QiKS5zdHJpcCgpCiAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKLSAgICAgICAgICAgIG5hbWUgPSAiIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3RyaXAoKQotICAgICAgICBuYW1lID0gdGtTaW1wbGVEaWFsb2cuYXNrc3RyaW5nKCJNb2R1bGUiLAotICAgICAgICAgICAgICAgICAiRW50ZXIgdGhlIG5hbWUgb2YgYSBQeXRob24gbW9kdWxlXG4iCi0gICAgICAgICAgICAgICAgICJ0byBzZWFyY2ggb24gc3lzLnBhdGggYW5kIG9wZW46IiwKLSAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCwgaW5pdGlhbHZhbHVlPW5hbWUpCi0gICAgICAgIGlmIG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgWFhYIE91Z2h0IHRvIGluc2VydCBjdXJyZW50IGZpbGUncyBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgcGF0aAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW1wb3J0RXJyb3IpIGFzIG1zZzoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsIHN0cihtc2cpLCBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsICJtb2R1bGUgbm90IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIpOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwgIm5vdCBhIHNvdXJjZS1iYXNlZCBtb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGVfcGF0aCA9IHNwZWMubG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJbXBvcnQgZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9hZGVyIGRvZXMgbm90IHN1cHBvcnQgZ2V0X2ZpbGVuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzZWxmLmZsaXN0OgotICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuaW8ubG9hZGZpbGUoZmlsZV9wYXRoKQorICAgICAgICAgICAgbmFtZSA9ICcnCisgICAgICAgIGZpbGVfcGF0aCA9IHF1ZXJ5Lk1vZHVsZU5hbWUoCisgICAgICAgICAgICAgICAgc2VsZi50ZXh0LCAiT3BlbiBNb2R1bGUiLAorICAgICAgICAgICAgICAgICJFbnRlciB0aGUgbmFtZSBvZiBhIFB5dGhvbiBtb2R1bGVcbiIKKyAgICAgICAgICAgICAgICAidG8gc2VhcmNoIG9uIHN5cy5wYXRoIGFuZCBvcGVuOiIsCisgICAgICAgICAgICAgICAgbmFtZSkucmVzdWx0CisgICAgICAgIGlmIGZpbGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuZmxpc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5pby5sb2FkZmlsZShmaWxlX3BhdGgpCiAgICAgICAgIHJldHVybiBmaWxlX3BhdGgKIAogICAgIGRlZiBvcGVuX2NsYXNzX2Jyb3dzZXIoc2VsZiwgZXZlbnQ9Tm9uZSk6CkBAIC02NzMsMTIgKzYxMCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICBoZWFkLCB0YWlsID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dCh0YWlsKQotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IENsYXNzQnJvd3NlcgotICAgICAgICBDbGFzc0Jyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBicm93c2VyCisgICAgICAgIGJyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKIAogICAgIGRlZiBvcGVuX3BhdGhfYnJvd3NlcihzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBQYXRoQnJvd3NlcgotICAgICAgICBQYXRoQnJvd3Nlci5QYXRoQnJvd3NlcihzZWxmLmZsaXN0KQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHBhdGhicm93c2VyCisgICAgICAgIHBhdGhicm93c2VyLlBhdGhCcm93c2VyKHNlbGYuZmxpc3QpCiAKICAgICBkZWYgb3Blbl90dXJ0bGVfZGVtbyhzZWxmLCBldmVudCA9IE5vbmUpOgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwpAQCAtNzM5LDcgKzY3Niw3IEBACiAKICAgICBkZWYgUmVzZXRDb2xvcml6ZXIoc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIGNvbG9yIHRoZW1lIgotICAgICAgICAjIENhbGxlZCBmcm9tIHNlbGYuZmlsZW5hbWVfY2hhbmdlX2hvb2sgYW5kIGZyb20gY29uZmlnRGlhbG9nLnB5CisgICAgICAgICMgQ2FsbGVkIGZyb20gc2VsZi5maWxlbmFtZV9jaGFuZ2VfaG9vayBhbmQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgc2VsZi5fcm1jb2xvcml6ZXIoKQogICAgICAgICBzZWxmLl9hZGRjb2xvcml6ZXIoKQogICAgICAgICBFZGl0b3JXaW5kb3cuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKQEAgLTc1OSwxNCArNjk2LDE0IEBACiAKICAgICBkZWYgUmVzZXRGb250KHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSB0ZXh0IHdpZGdldHMnIGZvbnQgaWYgaXQgaXMgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKIAogICAgICAgICBzZWxmLnRleHRbJ2ZvbnQnXSA9IGlkbGVDb25mLkdldEZvbnQoc2VsZi5yb290LCAnbWFpbicsJ0VkaXRvcldpbmRvdycpCiAKICAgICBkZWYgUmVtb3ZlS2V5YmluZGluZ3Moc2VsZik6CiAgICAgICAgICJSZW1vdmUgdGhlIGtleWJpbmRpbmdzIGJlZm9yZSB0aGV5IGFyZSBjaGFuZ2VkLiIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi50ZXh0LmV2ZW50X2RlbGV0ZShldmVudCwgKmtleWxpc3QpCiAgICAgICAgIGZvciBleHRlbnNpb25OYW1lIGluIHNlbGYuZ2V0X3N0YW5kYXJkX2V4dGVuc2lvbl9uYW1lcygpOgpAQCAtNzc3LDggKzcxNCw4IEBACiAKICAgICBkZWYgQXBwbHlLZXliaW5kaW5ncyhzZWxmKToKICAgICAgICAgIlVwZGF0ZSB0aGUga2V5YmluZGluZ3MgYWZ0ZXIgdGhleSBhcmUgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKCkKICAgICAgICAgZm9yIGV4dGVuc2lvbk5hbWUgaW4gc2VsZi5nZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKCk6CiAgICAgICAgICAgICB4a2V5ZGVmcyA9IGlkbGVDb25mLkdldEV4dGVuc2lvbkJpbmRpbmdzKGV4dGVuc2lvbk5hbWUpCkBAIC03ODYsNyArNzIzLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKHhrZXlkZWZzKQogICAgICAgICAjdXBkYXRlIG1lbnUgYWNjZWxlcmF0b3JzCiAgICAgICAgIG1lbnVFdmVudERpY3QgPSB7fQotICAgICAgICBmb3IgbWVudSBpbiBzZWxmLkJpbmRpbmdzLm1lbnVkZWZzOgorICAgICAgICBmb3IgbWVudSBpbiBzZWxmLm1haW5tZW51Lm1lbnVkZWZzOgogICAgICAgICAgICAgbWVudUV2ZW50RGljdFttZW51WzBdXSA9IHt9CiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBtZW51WzFdOgogICAgICAgICAgICAgICAgIGlmIGl0ZW06CkBAIC04MTMsNyArNzUwLDcgQEAKIAogICAgIGRlZiBzZXRfbm90YWJzX2luZGVudHdpZHRoKHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSBpbmRlbnR3aWR0aCBpZiBjaGFuZ2VkIGFuZCBub3QgdXNpbmcgdGFicyBpbiB0aGlzIHdpbmRvdyIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgaWYgbm90IHNlbGYudXNldGFiczoKICAgICAgICAgICAgIHNlbGYuaW5kZW50d2lkdGggPSBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnSW5kZW50JywnbnVtLXNwYWNlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcpCkBAIC05OTMsNyArOTMwLDcgQEAKICAgICBkZWYgX2Nsb3NlKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmlvLmZpbGVuYW1lOgogICAgICAgICAgICAgc2VsZi51cGRhdGVfcmVjZW50X2ZpbGVzX2xpc3QobmV3X2ZpbGU9c2VsZi5pby5maWxlbmFtZSkKLSAgICAgICAgV2luZG93TGlzdC51bnJlZ2lzdGVyX2NhbGxiYWNrKHNlbGYucG9zdHdpbmRvd3NtZW51KQorICAgICAgICB3aW5kb3dzLnVucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAgICAgICAgIHNlbGYudW5sb2FkX2V4dGVuc2lvbnMoKQogICAgICAgICBzZWxmLmlvLmNsb3NlKCkKICAgICAgICAgc2VsZi5pbyA9IE5vbmUKQEAgLTEwMzEsMTIgKzk2OCwyNSBAQAogICAgIGRlZiBnZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKHNlbGYpOgogICAgICAgICByZXR1cm4gaWRsZUNvbmYuR2V0RXh0ZW5zaW9ucyhlZGl0b3Jfb25seT1UcnVlKQogCisgICAgZXh0ZmlsZXMgPSB7ICAjIG1hcCBjb25maWctZXh0ZW5zaW9uIHNlY3Rpb24gbmFtZXMgdG8gbmV3IGZpbGUgbmFtZXMKKyAgICAgICAgJ0F1dG9Db21wbGV0ZSc6ICdhdXRvY29tcGxldGUnLAorICAgICAgICAnQXV0b0V4cGFuZCc6ICdhdXRvZXhwYW5kJywKKyAgICAgICAgJ0NhbGxUaXBzJzogJ2NhbGx0aXBzJywKKyAgICAgICAgJ0NvZGVDb250ZXh0JzogJ2NvZGVjb250ZXh0JywKKyAgICAgICAgJ0Zvcm1hdFBhcmFncmFwaCc6ICdwYXJhZ3JhcGgnLAorICAgICAgICAnUGFyZW5NYXRjaCc6ICdwYXJlbm1hdGNoJywKKyAgICAgICAgJ1JzdHJpcEV4dGVuc2lvbic6ICdyc3RyaXAnLAorICAgICAgICAnU2NyaXB0QmluZGluZyc6ICdydW5zY3JpcHQnLAorICAgICAgICAnWm9vbUhlaWdodCc6ICd6b29taGVpZ2h0JywKKyAgICAgICAgfQorCiAgICAgZGVmIGxvYWRfZXh0ZW5zaW9uKHNlbGYsIG5hbWUpOgorICAgICAgICBmbmFtZSA9IHNlbGYuZXh0ZmlsZXMuZ2V0KG5hbWUsIG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLicgKyBuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuJyArIGZuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQogICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgVHlwZUVycm9yKToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGZuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwcmludCgiXG5GYWlsZWQgdG8gaW1wb3J0IGV4dGVuc2lvbjogIiwgbmFtZSkKICAgICAgICAgICAgIHJhaXNlCkBAIC0xMDYwLDcgKzEwMTAsNyBAQAogCiAgICAgZGVmIGFwcGx5X2JpbmRpbmdzKHNlbGYsIGtleWRlZnM9Tm9uZSk6CiAgICAgICAgIGlmIGtleWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcworICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgdGV4dC5rZXlkZWZzID0ga2V5ZGVmcwogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgpAQCAtMTA3Myw5ICsxMDIzLDkgQEAKICAgICAgICAgTWVudXMgdGhhdCBhcmUgYWJzZW50IG9yIE5vbmUgaW4gc2VsZi5tZW51ZGljdCBhcmUgaWdub3JlZC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1lbnVkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBtZW51ZGVmcyA9IHNlbGYuQmluZGluZ3MubWVudWRlZnMKKyAgICAgICAgICAgIG1lbnVkZWZzID0gc2VsZi5tYWlubWVudS5tZW51ZGVmcwogICAgICAgICBpZiBrZXlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBrZXlkZWZzID0gc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMKKyAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLm1haW5tZW51LmRlZmF1bHRfa2V5ZGVmcwogICAgICAgICBtZW51ZGljdCA9IHNlbGYubWVudWRpY3QKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICBmb3IgbW5hbWUsIGVudHJ5bGlzdCBpbiBtZW51ZGVmczoKQEAgLTEzMDIsNyArMTI1Miw3IEBACiAgICAgICAgICAgICAjIGFkanVzdCBpbmRlbnRhdGlvbiBmb3IgY29udGludWF0aW9ucyBhbmQgYmxvY2sKICAgICAgICAgICAgICMgb3Blbi9jbG9zZSBmaXJzdCBuZWVkIHRvIGZpbmQgdGhlIGxhc3Qgc3RtdAogICAgICAgICAgICAgbG5vID0gaW5kZXgybGluZSh0ZXh0LmluZGV4KCdpbnNlcnQnKSkKLSAgICAgICAgICAgIHkgPSBQeVBhcnNlLlBhcnNlcihzZWxmLmluZGVudHdpZHRoLCBzZWxmLnRhYndpZHRoKQorICAgICAgICAgICAgeSA9IHB5cGFyc2UuUGFyc2VyKHNlbGYuaW5kZW50d2lkdGgsIHNlbGYudGFid2lkdGgpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb250ZXh0X3VzZV9wczE6CiAgICAgICAgICAgICAgICAgZm9yIGNvbnRleHQgaW4gc2VsZi5udW1fY29udGV4dF9saW5lczoKICAgICAgICAgICAgICAgICAgICAgc3RhcnRhdCA9IG1heChsbm8gLSBjb250ZXh0LCAxKQpAQCAtMTMyNiwyMiArMTI3NiwyMiBAQAogICAgICAgICAgICAgICAgIHkuc2V0X2xvKDApCiAKICAgICAgICAgICAgIGMgPSB5LmdldF9jb250aW51YXRpb25fdHlwZSgpCi0gICAgICAgICAgICBpZiBjICE9IFB5UGFyc2UuQ19OT05FOgorICAgICAgICAgICAgaWYgYyAhPSBweXBhcnNlLkNfTk9ORToKICAgICAgICAgICAgICAgICAjIFRoZSBjdXJyZW50IHN0bXQgaGFzbid0IGVuZGVkIHlldC4KLSAgICAgICAgICAgICAgICBpZiBjID09IFB5UGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKKyAgICAgICAgICAgICAgICBpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKICAgICAgICAgICAgICAgICAgICAgIyBhZnRlciB0aGUgZmlyc3QgbGluZSBvZiBhIHN0cmluZzsgZG8gbm90IGluZGVudCBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBQeVBhcnNlLkNfU1RSSU5HX05FWFRfTElORVM6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfTkVYVF9MSU5FUzoKICAgICAgICAgICAgICAgICAgICAgIyBpbnNpZGUgYSBzdHJpbmcgd2hpY2ggc3RhcnRlZCBiZWZvcmUgdGhpcyBsaW5lOwogICAgICAgICAgICAgICAgICAgICAjIGp1c3QgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50CiAgICAgICAgICAgICAgICAgICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCBpbmRlbnQpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CUkFDS0VUOgorICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBweXBhcnNlLkNfQlJBQ0tFVDoKICAgICAgICAgICAgICAgICAgICAgIyBsaW5lIHVwIHdpdGggdGhlIGZpcnN0IChpZiBhbnkpIGVsZW1lbnQgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICMgbGFzdCBvcGVuIGJyYWNrZXQgc3RydWN0dXJlOyBlbHNlIGluZGVudCBvbmUKICAgICAgICAgICAgICAgICAgICAgIyBsZXZlbCBiZXlvbmQgdGhlIGluZGVudCBvZiB0aGUgbGluZSB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAjIGxhc3Qgb3BlbiBicmFja2V0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVpbmRlbnRfdG8oeS5jb21wdXRlX2JyYWNrZXRfaW5kZW50KCkpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CQUNLU0xBU0g6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19CQUNLU0xBU0g6CiAgICAgICAgICAgICAgICAgICAgICMgaWYgbW9yZSB0aGFuIG9uZSBsaW5lIGluIHRoaXMgc3RtdCBhbHJlYWR5LCBqdXN0CiAgICAgICAgICAgICAgICAgICAgICMgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50OyBlbHNlIGlmIGluaXRpYWwgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGhhcyBhIHN0YXJ0IG9uIGFuIGFzc2lnbm1lbnQgc3RtdCwgaW5kZW50IHRvCkBAIC0xNTY5LDkgKzE1MTksNiBAQAogICAgICAgICAgICAgYnJlYWsKICAgICByZXR1cm4gcmF3LCBlZmZlY3RpdmUKIAotaW1wb3J0IHRva2VuaXplCi1fdG9rZW5pemUgPSB0b2tlbml6ZQotZGVsIHRva2VuaXplCiAKIGNsYXNzIEluZGVudFNlYXJjaGVyKG9iamVjdCk6CiAKQEAgLTE1OTYsOCArMTU0Myw4IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRleHQuZ2V0KG1hcmssIG1hcmsgKyAiIGxpbmVlbmQrMWMiKQogCiAgICAgZGVmIHRva2VuZWF0ZXIoc2VsZiwgdHlwZSwgdG9rZW4sIHN0YXJ0LCBlbmQsIGxpbmUsCi0gICAgICAgICAgICAgICAgICAgSU5ERU5UPV90b2tlbml6ZS5JTkRFTlQsCi0gICAgICAgICAgICAgICAgICAgTkFNRT1fdG9rZW5pemUuTkFNRSwKKyAgICAgICAgICAgICAgICAgICBJTkRFTlQ9dG9rZW5pemUuSU5ERU5ULAorICAgICAgICAgICAgICAgICAgIE5BTUU9dG9rZW5pemUuTkFNRSwKICAgICAgICAgICAgICAgICAgICBPUEVORVJTPSgnY2xhc3MnLCAnZGVmJywgJ2ZvcicsICdpZicsICd0cnknLCAnd2hpbGUnKSk6CiAgICAgICAgIGlmIHNlbGYuZmluaXNoZWQ6CiAgICAgICAgICAgICBwYXNzCkBAIC0xNjA4LDE5ICsxNTU1LDE5IEBACiAgICAgICAgICAgICBzZWxmLmZpbmlzaGVkID0gMQogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2F2ZV90YWJzaXplID0gX3Rva2VuaXplLnRhYnNpemUKLSAgICAgICAgX3Rva2VuaXplLnRhYnNpemUgPSBzZWxmLnRhYndpZHRoCisgICAgICAgIHNhdmVfdGFic2l6ZSA9IHRva2VuaXplLnRhYnNpemUKKyAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNlbGYudGFid2lkdGgKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRva2VucyA9IF90b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKKyAgICAgICAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKICAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuZWF0ZXIoKnRva2VuKQotICAgICAgICAgICAgZXhjZXB0IChfdG9rZW5pemUuVG9rZW5FcnJvciwgU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhjZXB0ICh0b2tlbml6ZS5Ub2tlbkVycm9yLCBTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgIyBzaW5jZSB3ZSBjdXQgb2ZmIHRoZSB0b2tlbml6ZXIgZWFybHksIHdlIGNhbiB0cmlnZ2VyCiAgICAgICAgICAgICAgICAgIyBzcHVyaW91cyBlcnJvcnMKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQorICAgICAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQogICAgICAgICByZXR1cm4gc2VsZi5ibGtvcGVubGluZSwgc2VsZi5pbmRlbnRlZGxpbmUKIAogIyMjIGVuZCBhdXRvaW5kZW50IGNvZGUgIyMjCkBAIC0xNjQ0LDcgKzE1OTEsNyBAQAogICAgIGtleWxpc3QgPSBrZXlkZWZzLmdldChldmVudG5hbWUpCiAgICAgIyBpc3N1ZTEwOTQwOiB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byBwcmV2ZW50IGhhbmcgd2l0aCBPUyBYIENvY29hIFRrIDguNQogICAgICMgaWYgbm90IGtleWxpc3Q6Ci0gICAgaWYgKG5vdCBrZXlsaXN0KSBvciAobWFjb3N4U3VwcG9ydC5pc0NvY29hVGsoKSBhbmQgZXZlbnRuYW1lIGluIHsKKyAgICBpZiAobm90IGtleWxpc3QpIG9yIChtYWNvc3guaXNDb2NvYVRrKCkgYW5kIGV2ZW50bmFtZSBpbiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8b3Blbi1tb2R1bGU+PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8Z290by1saW5lPj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8PGNoYW5nZS1pbmRlbnR3aWR0aD4+In0pOgpAQCAtMTY3OSwxMiArMTYyNiwxNSBAQAogICAgICAgICBmaWxlbmFtZSA9IHN5cy5hcmd2WzFdCiAgICAgZWxzZToKICAgICAgICAgZmlsZW5hbWUgPSBOb25lCi0gICAgbWFjb3N4U3VwcG9ydC5zZXR1cEFwcChyb290LCBOb25lKQorICAgIG1hY29zeC5zZXR1cEFwcChyb290LCBOb25lKQogICAgIGVkaXQgPSBFZGl0b3JXaW5kb3cocm9vdD1yb290LCBmaWxlbmFtZT1maWxlbmFtZSkKICAgICBlZGl0LnRleHQuYmluZCgiPDxjbG9zZS1hbGwtd2luZG93cz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKICAgICAjIERvZXMgbm90IHN0b3AgZXJyb3IsIG5laXRoZXIgZG9lcyBmb2xsb3dpbmcKICAgICAjIGVkaXQudGV4dC5iaW5kKCI8PGNsb3NlLXdpbmRvdz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2VkaXRvcicsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9lZGl0b3Jfd2luZG93KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkgYi9MaWIvaWRsZWxpYi9maWxlbGlzdC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9GaWxlTGlzdC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKaW5kZXggYTk5ODlhOC4uZjQ2YWQ3YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCkBAIC02LDcgKzcsNyBAQAogY2xhc3MgRmlsZUxpc3Q6CiAKICAgICAjIE4uQi4gdGhpcyBpbXBvcnQgb3ZlcnJpZGRlbiBpbiBQeVNoZWxsRmlsZUxpc3QuCi0gICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93CisgICAgZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCk6CiAgICAgICAgIHNlbGYucm9vdCA9IHJvb3QKQEAgLTExMSw3ICsxMTIsNyBAQAogCiAKIGRlZiBfdGVzdCgpOgotICAgIGZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IGZpeHdvcmRicmVha3MKKyAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBmaXh3b3JkYnJlYWtzCiAgICAgaW1wb3J0IHN5cwogICAgIHJvb3QgPSBUaygpCiAgICAgZml4d29yZGJyZWFrcyhyb290KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weSBiL0xpYi9pZGxlbGliL2dyZXAucHkKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZ3JlcC5weQppbmRleCA3MjFiMjMxLi42NGJhMjhkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2dyZXAucHkKQEAgLTEsMTcgKzEsMTkgQEAKLWltcG9ydCBvcwogaW1wb3J0IGZubWF0Y2gKLWltcG9ydCByZSAgIyBmb3IgaHRlc3QKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIsIENoZWNrYnV0dG9uICAjIGZvciBHcmVwRGlhbG9nCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0LCBCdXR0b24sIFNFTCwgRU5EICAjIGZvciBodGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCi0jIEltcG9ydGluZyBPdXRwdXRXaW5kb3cgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBCb29sZWFuVmFyCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBDaGVja2J1dHRvbgorCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKKworIyBJbXBvcnRpbmcgT3V0cHV0V2luZG93IGhlcmUgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCiAjIEVkaXRvcldpbmRvdyAtPiBHcmVwRGlhbG9wIC0+IE91dHB1dFdpbmRvdyAtPiBFZGl0b3JXaW5kb3cKIAogZGVmIGdyZXAodGV4dCwgaW89Tm9uZSwgZmxpc3Q9Tm9uZSk6CiAgICAgcm9vdCA9IHRleHQuX3Jvb3QoKQotICAgIGVuZ2luZSA9IFNlYXJjaEVuZ2luZS5nZXQocm9vdCkKKyAgICBlbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHJvb3QpCiAgICAgaWYgbm90IGhhc2F0dHIoZW5naW5lLCAiX2dyZXBkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9ncmVwZGlhbG9nID0gR3JlcERpYWxvZyhyb290LCBlbmdpbmUsIGZsaXN0KQogICAgIGRpYWxvZyA9IGVuZ2luZS5fZ3JlcGRpYWxvZwpAQCAtNDcsMTMgKzQ5LDEwIEBACiAgICAgICAgIHNlbGYuZ2xvYmVudCA9IHNlbGYubWFrZV9lbnRyeSgiSW4gZmlsZXM6Iiwgc2VsZi5nbG9idmFyKVswXQogCiAgICAgZGVmIGNyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5tYWtlX2ZyYW1lKClbMF0KLQotICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmLCBhbmNob3I9InciLAotICAgICAgICAgICAgICAgIHZhcmlhYmxlPXNlbGYucmVjdmFyLAorICAgICAgICBidG4gPSBDaGVja2J1dHRvbigKKyAgICAgICAgICAgICAgICBzZWxmLm1ha2VfZnJhbWUoKVswXSwgdmFyaWFibGU9c2VsZi5yZWN2YXIsCiAgICAgICAgICAgICAgICAgdGV4dD0iUmVjdXJzZSBkb3duIHN1YmRpcmVjdG9yaWVzIikKICAgICAgICAgYnRuLnBhY2soc2lkZT0idG9wIiwgZmlsbD0iYm90aCIpCi0gICAgICAgIGJ0bi5zZWxlY3QoKQogCiAgICAgZGVmIGNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoc2VsZik6CiAgICAgICAgIFNlYXJjaERpYWxvZ0Jhc2UuY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKQpAQCAtNjcsNyArNjYsNyBAQAogICAgICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgICAgIHNlbGYudG9wLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZyb20gaWRsZWxpYi5PdXRwdXRXaW5kb3cgaW1wb3J0IE91dHB1dFdpbmRvdyAgIyBsZWF2ZSBoZXJlIQorICAgICAgICBmcm9tIGlkbGVsaWIub3V0d2luIGltcG9ydCBPdXRwdXRXaW5kb3cgICMgbGVhdmUgaGVyZSEKICAgICAgICAgc2F2ZSA9IHN5cy5zdGRvdXQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IE91dHB1dFdpbmRvdyhzZWxmLmZsaXN0KQpAQCAtMTMxLDE0ICsxMzAsMTYgQEAKIAogCiBkZWYgX2dyZXBfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBTRUwsIEVORAorICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IEJ1dHRvbgorICAgIGZyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKLSAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChyb290KQotICAgIHRleHQgPSBUZXh0KHJvb3QsIGhlaWdodD01KQorICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHRvcCkKKyAgICB0ZXh0ID0gVGV4dCh0b3AsIGhlaWdodD01KQogICAgIHRleHQucGFjaygpCiAKICAgICBkZWYgc2hvd19ncmVwX2RpYWxvZygpOgpAQCAtMTQ2LDkgKzE0Nyw4IEBACiAgICAgICAgIGdyZXAodGV4dCwgZmxpc3Q9Zmxpc3QpCiAgICAgICAgIHRleHQudGFnX3JlbW92ZShTRUwsICIxLjAiLCBFTkQpCiAKLSAgICBidXR0b24gPSBCdXR0b24ocm9vdCwgdGV4dD0iU2hvdyBHcmVwRGlhbG9nIiwgY29tbWFuZD1zaG93X2dyZXBfZGlhbG9nKQorICAgIGJ1dHRvbiA9IEJ1dHRvbih0b3AsIHRleHQ9IlNob3cgR3JlcERpYWxvZyIsIGNvbW1hbmQ9c2hvd19ncmVwX2RpYWxvZykKICAgICBidXR0b24ucGFjaygpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnB5IGIvTGliL2lkbGVsaWIvaGVscC5weQppbmRleCBhNzAwOGU5Li43N2UwMWEzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9oZWxwLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHAucHkKQEAgLTQsNyArNCw3IEBACiAKIEhlbHAgPT4gQWJvdXQgSURMRTogZGlwbGF5IEFib3V0IElkbGUgZGlhbG9nCiAKLTx0byBiZSBtb3ZlZCBoZXJlIGZyb20gYWJvdXREaWFsb2cucHk+Cis8dG8gYmUgbW92ZWQgaGVyZSBmcm9tIGhlbHBfYWJvdXQucHk+CiAKIAogSGVscCA9PiBJRExFIEhlbHA6IERpc3BsYXkgaGVscC5odG1sIHdpdGggcHJvcGVyIGZvcm1hdHRpbmcuCkBAIC0yNSwxNSArMjUsMTQgQEAKIHNob3dfaWRsZWhlbHAgLSBDcmVhdGUgSGVscFdpbmRvdy4gIENhbGxlZCBpbiBFZGl0b3JXaW5kb3cuaGVscF9kaWFsb2cuCiAiIiIKIGZyb20gaHRtbC5wYXJzZXIgaW1wb3J0IEhUTUxQYXJzZXIKLWZyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aCwgZGlybmFtZSwgaXNkaXIsIGlzZmlsZSwgam9pbgorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBpc2ZpbGUsIGpvaW4KIGZyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIFNjcm9sbGJhciwgTWVudSwgTWVudWJ1dHRvbgotZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCiAKLXVzZV90dGsgPSBGYWxzZSAjIHVudGlsIGF2YWlsYWJsZSB0byBpbXBvcnQKLWlmIHVzZV90dGs6Ci0gICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgTWVudWJ1dHRvbgorZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIE1lbnUKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IE1lbnVidXR0b24sIFNjcm9sbGJhcgorZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCiAjIyBBYm91dCBJRExFICMjCiAKQEAgLTE5NywxNSArMTk2LDE4IEBACiAgICAgIkRpc3BsYXkgaHRtbCB0ZXh0LCBzY3JvbGxiYXIsIGFuZCB0b2MuIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGZpbGVuYW1lKToKICAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCisgICAgICAgICMga2VlcCByZWZlcmVuY2VzIHRvIHdpZGdldHMgZm9yIHRlc3QgYWNjZXNzLgorICAgICAgICBzZWxmLnRleHQgPSB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCiAgICAgICAgIHNlbGZbJ2JhY2tncm91bmQnXSA9IHRleHRbJ2JhY2tncm91bmQnXQotICAgICAgICBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQorICAgICAgICBzZWxmLnRvYyA9IHRvYyA9IHNlbGYudG9jX21lbnUodGV4dCkKKyAgICAgICAgc2VsZi5zY3JvbGwgPSBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgICAgICB0ZXh0Wyd5c2Nyb2xsY29tbWFuZCddID0gc2Nyb2xsLnNldAorCiAgICAgICAgIHNlbGYucm93Y29uZmlndXJlKDAsIHdlaWdodD0xKQogICAgICAgICBzZWxmLmNvbHVtbmNvbmZpZ3VyZSgxLCB3ZWlnaHQ9MSkgICMgdGV4dAotICAgICAgICBzZWxmLnRvY19tZW51KHRleHQpLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBzdGlja3k9J253JykKLSAgICAgICAgdGV4dC5ncmlkKGNvbHVtbj0xLCByb3c9MCwgc3RpY2t5PSduc2V3JykKLSAgICAgICAgc2Nyb2xsLmdyaWQoY29sdW1uPTIsIHJvdz0wLCBzdGlja3k9J25zJykKKyAgICAgICAgdG9jLmdyaWQocm93PTAsIGNvbHVtbj0wLCBzdGlja3k9J253JykKKyAgICAgICAgdGV4dC5ncmlkKHJvdz0wLCBjb2x1bW49MSwgc3RpY2t5PSduc2V3JykKKyAgICAgICAgc2Nyb2xsLmdyaWQocm93PTAsIGNvbHVtbj0yLCBzdGlja3k9J25zJykKIAogICAgIGRlZiB0b2NfbWVudShzZWxmLCB0ZXh0KToKICAgICAgICAgIkNyZWF0ZSB0YWJsZSBvZiBjb250ZW50cyBhcyBkcm9wLWRvd24gbWVudS4iCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnR4dCBiL0xpYi9pZGxlbGliL2hlbHAudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWZiZTBiLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2hlbHAudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzcyICswLDAgQEAKLVRoaXMgZmlsZSwgaWRsZWxpYi9oZWxwLnR4dCBpcyBvdXQtb2YtZGF0ZSBhbmQgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS4KLUl0IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLCBwb3NzaWJseSBpbiAzLjYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotW1NlZSB0aGUgZW5kIG9mIHRoaXMgZmlsZSBmb3IgKiogVElQUyAqKiBvbiB1c2luZyBJRExFICEhXQotCi1JRExFIGlzIHRoZSBQeXRob24gSURFIGJ1aWx0IHdpdGggdGhlIHRraW50ZXIgR1VJIHRvb2xraXQuCi0KLUlETEUgaGFzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6Ci0tY29kZWQgaW4gMTAwJSBwdXJlIFB5dGhvbiwgdXNpbmcgdGhlIHRraW50ZXIgR1VJIHRvb2xraXQKLS1jcm9zcy1wbGF0Zm9ybTogd29ya3Mgb24gV2luZG93cywgVW5peCwgYW5kIE9TIFgKLS1tdWx0aS13aW5kb3cgdGV4dCBlZGl0b3Igd2l0aCBtdWx0aXBsZSB1bmRvLCBQeXRob24gY29sb3JpemluZywgc21hcnQgaW5kZW50LAotY2FsbCB0aXBzLCBhbmQgbWFueSBvdGhlciBmZWF0dXJlcwotLVB5dGhvbiBzaGVsbCB3aW5kb3cgKGEuay5hIGludGVyYWN0aXZlIGludGVycHJldGVyKQotLWRlYnVnZ2VyIChub3QgY29tcGxldGUsIGJ1dCB5b3UgY2FuIHNldCBicmVha3BvaW50cywgdmlldyBhbmQgc3RlcCkKLQotTWVudXM6Ci0KLUlETEUgaGFzIHR3byB3aW5kb3cgdHlwZXMgdGhlIFNoZWxsIHdpbmRvdyBhbmQgdGhlIEVkaXRvciB3aW5kb3cuIEl0IGlzCi1wb3NzaWJsZSB0byBoYXZlIG11bHRpcGxlIGVkaXRvciB3aW5kb3dzIHNpbXVsdGFuZW91c2x5LiBJRExFJ3MKLW1lbnVzIGR5bmFtaWNhbGx5IGNoYW5nZSBiYXNlZCBvbiB3aGljaCB3aW5kb3cgaXMgY3VycmVudGx5IHNlbGVjdGVkLiBFYWNoIG1lbnUKLWRvY3VtZW50ZWQgYmVsb3cgaW5kaWNhdGVzIHdoaWNoIHdpbmRvdyB0eXBlIGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4gCi0KLUZpbGUgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgTmV3IEZpbGUgICAgICAgICAtLSBDcmVhdGUgYSBuZXcgZmlsZSBlZGl0aW5nIHdpbmRvdwotICAgICAgICBPcGVuLi4uICAgICAgICAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgZmlsZQotICAgICAgICBPcGVuIE1vZHVsZS4uLiAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgbW9kdWxlIChzZWFyY2hlcyBzeXMucGF0aCkKLSAgICAgICAgUmVjZW50IEZpbGVzLi4uICAtLSBPcGVuIGEgbGlzdCBvZiByZWNlbnQgZmlsZXMKLSAgICAgICAgQ2xhc3MgQnJvd3NlciAgICAtLSBTaG93IGNsYXNzZXMgYW5kIG1ldGhvZHMgaW4gY3VycmVudCBmaWxlCi0gICAgICAgIFBhdGggQnJvd3NlciAgICAgLS0gU2hvdyBzeXMucGF0aCBkaXJlY3RvcmllcywgbW9kdWxlcywgY2xhc3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbWV0aG9kcwotICAgICAgICAtLS0KLSAgICAgICAgU2F2ZSAgICAgICAgICAgICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIHRoZSBhc3NvY2lhdGVkIGZpbGUgKHVuc2F2ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dzIGhhdmUgYSAqIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHdpbmRvdyB0aXRsZSkKLQotICAgICAgICBTYXZlIEFzLi4uICAgICAgIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gbmV3IGZpbGUsIHdoaWNoIGJlY29tZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXNzb2NpYXRlZCBmaWxlCi0gICAgICAgIFNhdmUgQ29weSBBcy4uLiAgLS0gU2F2ZSBjdXJyZW50IHdpbmRvdyB0byBkaWZmZXJlbnQgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGFzc29jaWF0ZWQgZmlsZQotICAgICAgICAtLS0KLSAgICAgICAgUHJpbnQgV2luZG93ICAgICAtLSBQcmludCB0aGUgY3VycmVudCB3aW5kb3cKLSAgICAgICAgLS0tCi0gICAgICAgIENsb3NlICAgICAgICAgICAgLS0gQ2xvc2UgY3VycmVudCB3aW5kb3cgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQotICAgICAgICBFeGl0ICAgICAgICAgICAgIC0tIENsb3NlIGFsbCB3aW5kb3dzLCBxdWl0IChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKLQotRWRpdCBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBVbmRvICAgICAgICAgICAgIC0tIFVuZG8gbGFzdCBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSBtYXhpbXVtIG9mIDEwMDAgY2hhbmdlcyBtYXkgYmUgdW5kb25lKQotICAgICAgICBSZWRvICAgICAgICAgICAgIC0tIFJlZG8gbGFzdCB1bmRvbmUgY2hhbmdlIHRvIGN1cnJlbnQgd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZWxlY3QgQWxsICAgICAgIC0tIFNlbGVjdCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBlZGl0IGJ1ZmZlcgotICAgICAgICAtLS0KLSAgICAgICAgRmluZC4uLiAgICAgICAgICAtLSBPcGVuIGEgc2VhcmNoIGRpYWxvZyBib3ggd2l0aCBtYW55IG9wdGlvbnMKLSAgICAgICAgRmluZCBBZ2FpbiAgICAgICAtLSBSZXBlYXQgbGFzdCBzZWFyY2gKLSAgICAgICAgRmluZCBTZWxlY3Rpb24gICAtLSBTZWFyY2ggZm9yIHRoZSBzdHJpbmcgaW4gdGhlIHNlbGVjdGlvbgotICAgICAgICBGaW5kIGluIEZpbGVzLi4uIC0tIE9wZW4gYSBzZWFyY2ggZGlhbG9nIGJveCBmb3Igc2VhcmNoaW5nIGZpbGVzCi0gICAgICAgIFJlcGxhY2UuLi4gICAgICAgLS0gT3BlbiBhIHNlYXJjaC1hbmQtcmVwbGFjZSBkaWFsb2cgYm94Ci0gICAgICAgIEdvIHRvIExpbmUgICAgICAgLS0gQXNrIGZvciBhIGxpbmUgbnVtYmVyIGFuZCBzaG93IHRoYXQgbGluZQotICAgICAgICBFeHBhbmQgV29yZCAgICAgIC0tIEV4cGFuZCB0aGUgd29yZCB5b3UgaGF2ZSB0eXBlZCB0byBtYXRjaCBhbm90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCBpbiB0aGUgc2FtZSBidWZmZXI7IHJlcGVhdCB0byBnZXQgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBleHBhbnNpb24KLSAgICAgICAgU2hvdyBDYWxsdGlwICAgICAtLSBBZnRlciBhbiB1bmNsb3NlZCBwYXJlbnRoZXNpcyBmb3IgYSBmdW5jdGlvbiwgb3BlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc21hbGwgd2luZG93IHdpdGggZnVuY3Rpb24gcGFyYW1ldGVyIGhpbnRzCi0gICAgICAgIFNob3cgUGFyZW5zICAgICAgLS0gSGlnaGxpZ2h0IHRoZSBzdXJyb3VuZGluZyBwYXJlbnRoZXNpcwotICAgICAgICBTaG93IENvbXBsZXRpb25zIC0tIE9wZW4gYSBzY3JvbGwgd2luZG93IGFsbG93aW5nIHNlbGVjdGlvbiBrZXl3b3JkcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhdHRyaWJ1dGVzLiAoc2VlICcqVElQUyonLCBiZWxvdykKLQotRm9ybWF0IE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgSW5kZW50IFJlZ2lvbiAgICAgICAtLSBTaGlmdCBzZWxlY3RlZCBsaW5lcyByaWdodCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIERlZGVudCBSZWdpb24gICAgICAgLS0gU2hpZnQgc2VsZWN0ZWQgbGluZXMgbGVmdCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIENvbW1lbnQgT3V0IFJlZ2lvbiAgLS0gSW5zZXJ0ICMjIGluIGZyb250IG9mIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFVuY29tbWVudCBSZWdpb24gICAgLS0gUmVtb3ZlIGxlYWRpbmcgIyBvciAjIyBmcm9tIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFRhYmlmeSBSZWdpb24gICAgICAgLS0gVHVybnMgKmxlYWRpbmcqIHN0cmV0Y2hlcyBvZiBzcGFjZXMgaW50byB0YWJzLgotICAgICAgICAgICAgICAgIChOb3RlOiBXZSByZWNvbW1lbmQgdXNpbmcgNCBzcGFjZSBibG9ja3MgdG8gaW5kZW50IFB5dGhvbiBjb2RlLikKLSAgICAgICAgVW50YWJpZnkgUmVnaW9uICAgICAtLSBUdXJuICphbGwqIHRhYnMgaW50byB0aGUgY29ycmVudCBudW1iZXIgb2Ygc3BhY2VzCi0gICAgICAgIFRvZ2dsZSB0YWJzICAgICAgICAgLS0gT3BlbiBhIGRpYWxvZyB0byBzd2l0Y2ggYmV0d2VlbiBpbmRlbnRpbmcgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlcyBhbmQgdGFicy4KLSAgICAgICAgTmV3IEluZGVudCBXaWR0aC4uLiAtLSBPcGVuIGEgZGlhbG9nIHRvIGNoYW5nZSBpbmRlbnQgd2lkdGguICBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZCBkZWZhdWx0IGJ5IHRoZSBQeXRob24gY29tbXVuaXR5IGlzIDQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXMuCi0gICAgICAgIEZvcm1hdCBQYXJhZ3JhcGggICAgLS0gUmVmb3JtYXQgdGhlIGN1cnJlbnQgYmxhbmstbGluZS1zZXBhcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGguIEFsbCBsaW5lcyBpbiB0aGUgcGFyYWdyYXBoIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgdG8gbGVzcyB0aGFuIDgwIGNvbHVtbnMuCi0gICAgICAgIC0tLQotICAgICAgICBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlIC0tIFJlbW92ZWQgYW55IHNwYWNlIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsYXN0IG5vbi1zcGFjZSBjaGFyYWN0ZXIKLQotUnVuIE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgUHl0aG9uIFNoZWxsIC0tIE9wZW4gb3Igd2FrZSB1cCB0aGUgUHl0aG9uIHNoZWxsIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgQ2hlY2sgTW9kdWxlIC0tIENoZWNrIHRoZSBzeW50YXggb2YgdGhlIG1vZHVsZSBjdXJyZW50bHkgb3BlbiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRvciB3aW5kb3cuICBJZiB0aGUgbW9kdWxlIGhhcyBub3QgYmVlbiBzYXZlZCBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHByb21wdCB0aGUgdXNlciB0byBzYXZlIHRoZSBjb2RlLgotICAgICAgICBSdW4gTW9kdWxlICAgLS0gUmVzdGFydCB0aGUgc2hlbGwgdG8gY2xlYW4gdGhlIGVudmlyb25tZW50LCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBjdXJyZW50bHkgb3BlbiBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBub3QgYmVlbiBzYXZlZCBJRExFIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIHNhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2RlLgotCi1TaGVsbCBNZW51IChTaGVsbCB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgVmlldyBMYXN0IFJlc3RhcnQgLS0gU2Nyb2xsIHRoZSBzaGVsbCB3aW5kb3cgdG8gdGhlIGxhc3QgU2hlbGwgcmVzdGFydAotICAgICAgICBSZXN0YXJ0IFNoZWxsICAgICAtLSBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQKLQotRGVidWcgTWVudSAoU2hlbGwgd2luZG93IG9ubHkpOgotCi0gICAgICAgIEdvIHRvIEZpbGUvTGluZSAgIC0tIExvb2sgYXJvdW5kIHRoZSBpbnNlcnQgcG9pbnQgZm9yIGEgZmlsZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxpbmUgbnVtYmVyLCBvcGVuIHRoZSBmaWxlLCBhbmQgc2hvdyB0aGUgbGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlZnVsIHRvIHZpZXcgdGhlIHNvdXJjZSBsaW5lcyByZWZlcmVuY2VkIGluIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiB0cmFjZWJhY2suICBBdmFpbGFibGUgaW4gdGhlIGNvbnRleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSBvZiB0aGUgU2hlbGwgd2luZG93LgotICAgICAgICBEZWJ1Z2dlciAodG9nZ2xlKSAtLSBUaGlzIGZlYXR1cmUgaXMgbm90IGNvbXBsZXRlIGFuZCBjb25zaWRlcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbC4gUnVuIGNvbW1hbmRzIGluIHRoZSBzaGVsbCB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXIuCi0gICAgICAgIFN0YWNrIFZpZXdlciAgICAgIC0tIFNob3cgdGhlIHN0YWNrIHRyYWNlYmFjayBvZiB0aGUgbGFzdCBleGNlcHRpb24KLSAgICAgICAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAodG9nZ2xlKSAtLSBUb2dnbGUgYXV0b21hdGljYWxseSBvcGVuaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrIHZpZXdlciBvbiB1bmhhbmRsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24KLQotT3B0aW9ucyBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBDb25maWd1cmUgSURMRSAtLSBPcGVuIGEgY29uZmlndXJhdGlvbiBkaWFsb2cuICBGb250cywgaW5kZW50YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGtleWJpbmRpbmdzLCBhbmQgY29sb3IgdGhlbWVzIG1heSBiZSBhbHRlcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydHVwIFByZWZlcmVuY2VzIG1heSBiZSBzZXQsIGFuZCBhZGRpdGlvbmFsIEhlbHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlcyBjYW4gYmUgc3BlY2lmaWVkLiAgT24gT1MgWCwgb3BlbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkaWFsb2cgYnkgc2VsZWN0aW5nIFByZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBhcHBsaWNhdGlvbiBtZW51LgotCi0gICAgICAgIC0tLQotICAgICAgICBDb2RlIENvbnRleHQgKHRvZ2dsZSkgLS0gT3BlbiBhIHBhbmUgYXQgdGhlIHRvcCBvZiB0aGUgZWRpdCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHNob3dzIHRoZSBibG9jayBjb250ZXh0IG9mIHRoZSBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBjb2RlIHdoaWNoIGlzIHNjcm9sbGluZyBvZmYgdGhlIHRvcCBvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy4gVGhpcyBpcyBub3QgcHJlc2VudCBpbiB0aGUgU2hlbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdyBvbmx5IHRoZSBFZGl0b3Igd2luZG93LgotCi1XaW5kb3cgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgWm9vbSBIZWlnaHQgLS0gVG9nZ2xlcyB0aGUgd2luZG93IGJldHdlZW4gbm9ybWFsIHNpemUgKDQweDgwIGluaXRpYWwKLSAgICAgICAgc2V0dGluZykgYW5kIG1heGltdW0gaGVpZ2h0LiAgVGhlIGluaXRpYWwgc2l6ZSBpcyBpbiB0aGUgQ29uZmlndXJlCi0gICAgICAgIElETEUgZGlhbG9nIHVuZGVyIHRoZSBnZW5lcmFsIHRhYi4KLSAgICAgICAgLS0tCi0gICAgICAgIFRoZSByZXN0IG9mIHRoaXMgbWVudSBsaXN0cyB0aGUgbmFtZXMgb2YgYWxsIG9wZW4gd2luZG93czsKLSAgICAgICAgc2VsZWN0IG9uZSB0byBicmluZyBpdCB0byB0aGUgZm9yZWdyb3VuZCAoZGVpY29uaWZ5aW5nIGl0IGlmCi0gICAgICAgIG5lY2Vzc2FyeSkuCi0KLUhlbHAgTWVudToKLQotICAgICAgICBBYm91dCBJRExFICAtLSBWZXJzaW9uLCBjb3B5cmlnaHQsIGxpY2Vuc2UsIGNyZWRpdHMKLSAgICAgICAgLS0tCi0gICAgICAgIElETEUgSGVscCAgIC0tIERpc3BsYXkgdGhpcyBmaWxlIHdoaWNoIGlzIGEgaGVscCBmaWxlIGZvciBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgIGRldGFpbGluZyB0aGUgbWVudSBvcHRpb25zLCBiYXNpYyBlZGl0aW5nIGFuZCBuYXZpZ2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgdGlwcy4KLSAgICAgICAgUHl0aG9uIERvY3MgLS0gQWNjZXNzIGxvY2FsIFB5dGhvbiBkb2N1bWVudGF0aW9uLCBpZgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuICBPciB3aWxsIHN0YXJ0IGEgd2ViIGJyb3dzZXIgYW5kIG9wZW4KLSAgICAgICAgICAgICAgICAgICAgICAgZG9jcy5weXRob24ub3JnIHNob3dpbmcgdGhlIGxhdGVzdCBQeXRob24gZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgLS0tCi0gICAgICAgIEFkZGl0aW9uYWwgaGVscCBzb3VyY2VzIG1heSBiZSBhZGRlZCBoZXJlIHdpdGggdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUgR2VuZXJhbCB0YWIuCi0KLUVkaXRvciBjb250ZXh0IG1lbnUgKFJpZ2h0LWNsaWNrIC8gQ29udHJvbC1jbGljayBvbiBPUyBYIGluIEVkaXQgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZXQgQnJlYWtwb2ludCAgIC0tIFNldHMgYSBicmVha3BvaW50LiBCcmVha3BvaW50cyBhcmUgb25seSBlbmFibGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgZGVidWdnZXIgaXMgb3Blbi4KLSAgICAgICAgQ2xlYXIgQnJlYWtwb2ludCAtLSBDbGVhcnMgdGhlIGJyZWFrcG9pbnQgb24gdGhhdCBsaW5lCi0KLVNoZWxsIGNvbnRleHQgbWVudSAoUmlnaHQtY2xpY2sgLyBDb250cm9sLWNsaWNrIG9uIE9TIFggaW4gU2hlbGwgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgR28gdG8gZmlsZS9saW5lICAtLSBTYW1lIGFzIGluIERlYnVnIG1lbnUKLQotCi0qKiBUSVBTICoqCi09PT09PT09PT09Ci0KLUFkZGl0aW9uYWwgSGVscCBTb3VyY2VzOgotCi0gICAgICAgIFdpbmRvd3MgdXNlcnMgY2FuIEdvb2dsZSBvbiB6b3Blc2hlbGYuY2htIHRvIGFjY2VzcyBab3BlIGhlbHAgZmlsZXMgaW4KLSAgICAgICAgdGhlIFdpbmRvd3MgaGVscCBmb3JtYXQuICBUaGUgQWRkaXRpb25hbCBIZWxwIFNvdXJjZXMgZmVhdHVyZSBvZiB0aGUKLSAgICAgICAgY29uZmlndXJhdGlvbiBHVUkgc3VwcG9ydHMgLmNobSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZmlsZXR5cGVzCi0gICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyb3dzZXIuICBTdXBwbHkgYSBNZW51IEl0ZW0gdGl0bGUsIGFuZCBlbnRlciB0aGUKLSAgICAgICAgbG9jYXRpb24gaW4gdGhlIEhlbHAgRmlsZSBQYXRoIHNsb3Qgb2YgdGhlIE5ldyBIZWxwIFNvdXJjZSBkaWFsb2cuICBVc2UKLSAgICAgICAgaHR0cDovLyBhbmQvb3Igd3d3LiB0byBpZGVudGlmeSBleHRlcm5hbCBVUkxzLCBvciBkb3dubG9hZCB0aGUgZmlsZSBhbmQKLSAgICAgICAgYnJvd3NlIGZvciBpdHMgcGF0aCBvbiB5b3VyIG1hY2hpbmUgdXNpbmcgdGhlIEJyb3dzZSBidXR0b24uCi0KLSAgICAgICAgQWxsIHVzZXJzIGNhbiBhY2Nlc3MgdGhlIGV4dGVuc2l2ZSBzb3VyY2VzIG9mIGhlbHAsIGluY2x1ZGluZwotICAgICAgICB0dXRvcmlhbHMsIGF2YWlsYWJsZSBhdCBkb2NzLnB5dGhvbi5vcmcuICBTZWxlY3RlZCBVUkxzIGNhbiBiZSBhZGRlZAotICAgICAgICBvciByZW1vdmVkIGZyb20gdGhlIEhlbHAgbWVudSBhdCBhbnkgdGltZSB1c2luZyBDb25maWd1cmUgSURMRS4KLQotQmFzaWMgZWRpdGluZyBhbmQgbmF2aWdhdGlvbjoKLQotICAgICAgICBCYWNrc3BhY2UgZGVsZXRlcyBjaGFyIHRvIHRoZSBsZWZ0OyBERUwgZGVsZXRlcyBjaGFyIHRvIHRoZSByaWdodC4KLSAgICAgICAgQ29udHJvbC1iYWNrc3BhY2UgZGVsZXRlcyB3b3JkIGxlZnQsIENvbnRyb2wtREVMIGRlbGV0ZXMgd29yZCByaWdodC4KLSAgICAgICAgQXJyb3cga2V5cyBhbmQgUGFnZSBVcC9Eb3duIG1vdmUgYXJvdW5kLgotICAgICAgICBDb250cm9sLWxlZnQvcmlnaHQgQXJyb3cgbW92ZXMgYnkgd29yZHMgaW4gYSBzdHJhbmdlIGJ1dCB1c2VmdWwgd2F5LgotICAgICAgICBIb21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgbGluZS4KLSAgICAgICAgQ29udHJvbC1Ib21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgZmlsZS4KLSAgICAgICAgU29tZSB1c2VmdWwgRW1hY3MgYmluZGluZ3MgYXJlIGluaGVyaXRlZCBmcm9tIFRjbC9UazoKLSAgICAgICAgICAgICAgICBDb250cm9sLWEgICAgIGJlZ2lubmluZyBvZiBsaW5lCi0gICAgICAgICAgICAgICAgQ29udHJvbC1lICAgICBlbmQgb2YgbGluZQotICAgICAgICAgICAgICAgIENvbnRyb2wtayAgICAga2lsbCBsaW5lIChidXQgZG9lc24ndCBwdXQgaXQgaW4gY2xpcGJvYXJkKQotICAgICAgICAgICAgICAgIENvbnRyb2wtbCAgICAgY2VudGVyIHdpbmRvdyBhcm91bmQgdGhlIGluc2VydGlvbiBwb2ludAotICAgICAgICBTdGFuZGFyZCBrZXliaW5kaW5ncyAobGlrZSBDb250cm9sLWMgdG8gY29weSBhbmQgQ29udHJvbC12IHRvCi0gICAgICAgIHBhc3RlKSBtYXkgd29yay4gIEtleWJpbmRpbmdzIGFyZSBzZWxlY3RlZCBpbiB0aGUgQ29uZmlndXJlIElETEUKLSAgICAgICAgZGlhbG9nLgotCi1BdXRvbWF0aWMgaW5kZW50YXRpb246Ci0KLSAgICAgICAgQWZ0ZXIgYSBibG9jay1vcGVuaW5nIHN0YXRlbWVudCwgdGhlIG5leHQgbGluZSBpcyBpbmRlbnRlZCBieSA0IHNwYWNlcwotICAgICAgICAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgYnkgb25lIHRhYikuICBBZnRlciBjZXJ0YWluIGtleXdvcmRzCi0gICAgICAgIChicmVhaywgcmV0dXJuIGV0Yy4pIHRoZSBuZXh0IGxpbmUgaXMgZGVkZW50ZWQuICBJbiBsZWFkaW5nCi0gICAgICAgIGluZGVudGF0aW9uLCBCYWNrc3BhY2UgZGVsZXRlcyB1cCB0byA0IHNwYWNlcyBpZiB0aGV5IGFyZSB0aGVyZS4gIFRhYgotICAgICAgICBpbnNlcnRzIHNwYWNlcyAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgb25lIHRhYiksIG51bWJlciBkZXBlbmRzIG9uCi0gICAgICAgIEluZGVudCBXaWR0aC4gQ3VycmVudGx5IHRhYnMgYXJlIHJlc3RyaWN0ZWQgdG8gZm91ciBzcGFjZXMgZHVlCi0gICAgICAgIHRvIFRjbC9UayBsaW1pdGF0aW9ucy4KLQotICAgICAgICBTZWUgYWxzbyB0aGUgaW5kZW50L2RlZGVudCByZWdpb24gY29tbWFuZHMgaW4gdGhlIGVkaXQgbWVudS4KLQotQ29tcGxldGlvbnM6Ci0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIHN1cHBsaWVkIGZvciBmdW5jdGlvbnMsIGNsYXNzZXMsIGFuZCBhdHRyaWJ1dGVzIG9mCi0gICAgICAgIGNsYXNzZXMsIGJvdGggYnVpbHQtaW4gYW5kIHVzZXItZGVmaW5lZC4gIENvbXBsZXRpb25zIGFyZSBhbHNvIHByb3ZpZGVkCi0gICAgICAgIGZvciBmaWxlbmFtZXMuCi0KLSAgICAgICAgVGhlIEF1dG9Db21wbGV0ZVdpbmRvdyAoQUNXKSB3aWxsIG9wZW4gYWZ0ZXIgYSBwcmVkZWZpbmVkIGRlbGF5Ci0gICAgICAgIChkZWZhdWx0IGlzIHR3byBzZWNvbmRzKSBhZnRlciBhICcuJyBvciAoaW4gYSBzdHJpbmcpIGFuIG9zLnNlcCBpcwotICAgICAgICB0eXBlZC4gIElmIGFmdGVyIG9uZSBvZiB0aG9zZSBjaGFyYWN0ZXJzIChwbHVzIHplcm8gb3IgbW9yZSBvdGhlcgotICAgICAgICBjaGFyYWN0ZXJzKSBhIHRhYiBpcyB0eXBlZCB0aGUgQUNXIHdpbGwgb3BlbiBpbW1lZGlhdGVseSBpZiBhIHBvc3NpYmxlCi0gICAgICAgIGNvbnRpbnVhdGlvbiBpcyBmb3VuZC4KLQotICAgICAgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIGZvciB0aGUgY2hhcmFjdGVycyBlbnRlcmVkLCBhCi0gICAgICAgIHRhYiB3aWxsIHN1cHBseSB0aGF0IGNvbXBsZXRpb24gd2l0aG91dCBvcGVuaW5nIHRoZSBBQ1cuCi0KLSAgICAgICAgJ1Nob3cgQ29tcGxldGlvbnMnIHdpbGwgZm9yY2Ugb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdywgYnkgZGVmYXVsdCB0aGUKLSAgICAgICAgQ29udHJvbC1zcGFjZSBrZXlzIHdpbGwgb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdy4gIEluIGFuIGVtcHR5Ci0gICAgICAgIHN0cmluZywgdGhpcyB3aWxsIGNvbnRhaW4gdGhlIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIE9uIGEKLSAgICAgICAgYmxhbmsgbGluZSwgaXQgd2lsbCBjb250YWluIHRoZSBidWlsdC1pbiBhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQKLSAgICAgICAgY2xhc3NlcyBpbiB0aGUgY3VycmVudCBuYW1lIHNwYWNlcywgcGx1cyBhbnkgbW9kdWxlcyBpbXBvcnRlZC4gIElmIHNvbWUKLSAgICAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gZW50ZXJlZCwgdGhlIEFDVyB3aWxsIGF0dGVtcHQgdG8gYmUgbW9yZSBzcGVjaWZpYy4KLQotICAgICAgICBJZiBzdHJpbmcgb2YgY2hhcmFjdGVycyBpcyB0eXBlZCwgdGhlIEFDVyBzZWxlY3Rpb24gd2lsbCBqdW1wIHRvIHRoZQotICAgICAgICBlbnRyeSBtb3N0IGNsb3NlbHkgbWF0Y2hpbmcgdGhvc2UgY2hhcmFjdGVycy4gRW50ZXJpbmcgYSB0YWIgd2lsbCBjYXVzZQotICAgICAgICB0aGUgbG9uZ2VzdCBub24tYW1iaWd1b3VzIG1hdGNoIHRvIGJlIGVudGVyZWQgaW4gdGhlIEVkaXQgd2luZG93IG9yCi0gICAgICAgIFNoZWxsLiAgVHdvIHRhYnMgaW4gYSByb3cgd2lsbCBzdXBwbHkgdGhlIGN1cnJlbnQgQUNXIHNlbGVjdGlvbiwgYXMKLSAgICAgICAgd2lsbCByZXR1cm4gb3IgYSBkb3VibGUgY2xpY2suICBDdXJzb3Iga2V5cywgUGFnZSBVcC9Eb3duLCBtb3VzZQotICAgICAgICBzZWxlY3Rpb24sIGFuZCB0aGUgc2Nyb2xsIHdoZWVsIGFsbCBvcGVyYXRlIG9uIHRoZSBBQ1cuCi0KLSAgICAgICAgIkhpZGRlbiIgYXR0cmlidXRlcyBjYW4gYmUgYWNjZXNzZWQgYnkgdHlwaW5nIHRoZSBiZWdpbm5pbmcgb2YgaGlkZGVuCi0gICAgICAgIG5hbWUgYWZ0ZXIgYSAnLicsICBlLmcuICdfJy4gIFRoaXMgYWxsb3dzIGFjY2VzcyB0byBtb2R1bGVzIHdpdGgKLSAgICAgICAgJ19fYWxsX18nIHNldCwgb3IgdG8gY2xhc3MtcHJpdmF0ZSBhdHRyaWJ1dGVzLgotCi0gICAgICAgIENvbXBsZXRpb25zIGFuZCB0aGUgJ0V4cGFuZCBXb3JkJyBmYWNpbGl0eSBjYW4gc2F2ZSBhIGxvdCBvZiB0eXBpbmchCi0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIGN1cnJlbnRseSBsaW1pdGVkIHRvIHRob3NlIGluIHRoZSBuYW1lc3BhY2VzLiAgTmFtZXMgaW4KLSAgICAgICAgYW4gRWRpdG9yIHdpbmRvdyB3aGljaCBhcmUgbm90IHZpYSBfX21haW5fXyBvciBzeXMubW9kdWxlcyB3aWxsIG5vdCBiZQotICAgICAgICBmb3VuZC4gIFJ1biB0aGUgbW9kdWxlIG9uY2Ugd2l0aCB5b3VyIGltcG9ydHMgdG8gY29ycmVjdCB0aGlzCi0gICAgICAgIHNpdHVhdGlvbi4gIE5vdGUgdGhhdCBJRExFIGl0c2VsZiBwbGFjZXMgcXVpdGUgYSBmZXcgbW9kdWxlcyBpbgotICAgICAgICBzeXMubW9kdWxlcywgc28gbXVjaCBjYW4gYmUgZm91bmQgYnkgZGVmYXVsdCwgZS5nLiB0aGUgcmUgbW9kdWxlLgotCi0gICAgICAgIElmIHlvdSBkb24ndCBsaWtlIHRoZSBBQ1cgcG9wcGluZyB1cCB1bmJpZGRlbiwgc2ltcGx5IG1ha2UgdGhlIGRlbGF5Ci0gICAgICAgIGxvbmdlciBvciBkaXNhYmxlIHRoZSBleHRlbnNpb24uICBPciBhbm90aGVyIG9wdGlvbiBpcyB0aGUgZGVsYXkgY291bGQKLSAgICAgICAgYmUgc2V0IHRvIHplcm8uIEFub3RoZXIgYWx0ZXJuYXRpdmUgdG8gcHJldmVudGluZyBBQ1cgcG9wdXBzIGlzIHRvCi0gICAgICAgIGRpc2FibGUgdGhlIGNhbGwgdGlwcyBleHRlbnNpb24uCi0KLVB5dGhvbiBTaGVsbCB3aW5kb3c6Ci0KLSAgICAgICAgQ29udHJvbC1jIGludGVycnVwdHMgZXhlY3V0aW5nIGNvbW1hbmQuCi0gICAgICAgIENvbnRyb2wtZCBzZW5kcyBlbmQtb2YtZmlsZTsgY2xvc2VzIHdpbmRvdyBpZiB0eXBlZCBhdCA+Pj4gcHJvbXB0LgotICAgICAgICBBbHQtLyBleHBhbmQgd29yZCBpcyBhbHNvIHVzZWZ1bCB0byByZWR1Y2UgdHlwaW5nLgotCi0gICAgQ29tbWFuZCBoaXN0b3J5OgotCi0gICAgICAgIEFsdC1wIHJldHJpZXZlcyBwcmV2aW91cyBjb21tYW5kIG1hdGNoaW5nIHdoYXQgeW91IGhhdmUgdHlwZWQuIE9uIE9TIFgKLSAgICAgICAgdXNlIENvbnRyb2wtcC4KLSAgICAgICAgQWx0LW4gcmV0cmlldmVzIG5leHQuIE9uIE9TIFggdXNlIENvbnRyb2wtbi4KLSAgICAgICAgUmV0dXJuIHdoaWxlIGN1cnNvciBpcyBvbiBhIHByZXZpb3VzIGNvbW1hbmQgcmV0cmlldmVzIHRoYXQgY29tbWFuZC4KLQotICAgIFN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgVGhlIGNvbG9yaW5nIGlzIGFwcGxpZWQgaW4gYSBiYWNrZ3JvdW5kICJ0aHJlYWQiLCBzbyB5b3UgbWF5Ci0gICAgICAgIG9jY2FzaW9uYWxseSBzZWUgdW5jb2xvcml6ZWQgdGV4dC4gIFRvIGNoYW5nZSB0aGUgY29sb3IKLSAgICAgICAgc2NoZW1lLCB1c2UgdGhlIENvbmZpZ3VyZSBJRExFIC8gSGlnaGxpZ2h0aW5nIGRpYWxvZy4KLQotICAgIFB5dGhvbiBkZWZhdWx0IHN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgS2V5d29yZHMgICAgICAgIG9yYW5nZQotICAgICAgICBCdWlsdGlucyAgICAgICAgcm95YWwgcHVycGxlCi0gICAgICAgIFN0cmluZ3MgICAgICAgICBncmVlbgotICAgICAgICBDb21tZW50cyAgICAgICAgcmVkCi0gICAgICAgIERlZmluaXRpb25zICAgICBibHVlCi0KLSAgICBTaGVsbCBkZWZhdWx0IGNvbG9yczoKLQotICAgICAgICBDb25zb2xlIG91dHB1dCAgYnJvd24KLSAgICAgICAgc3Rkb3V0ICAgICAgICAgIGJsdWUKLSAgICAgICAgc3RkZXJyICAgICAgICAgIHJlZAotICAgICAgICBzdGRpbiAgICAgICAgICAgYmxhY2sKLQotT3RoZXIgcHJlZmVyZW5jZXM6Ci0KLSAgICAgICAgVGhlIGZvbnQgcHJlZmVyZW5jZXMsIGhpZ2hsaWdodGluZywga2V5cywgYW5kIGdlbmVyYWwgcHJlZmVyZW5jZXMgY2FuCi0gICAgICAgIGJlIGNoYW5nZWQgdmlhIHRoZSBDb25maWd1cmUgSURMRSBtZW51IG9wdGlvbi4gIEJlIHN1cmUgdG8gbm90ZSB0aGF0Ci0gICAgICAgIGtleXMgY2FuIGJlIHVzZXIgZGVmaW5lZCwgSURMRSBzaGlwcyB3aXRoIGZvdXIgYnVpbHQgaW4ga2V5IHNldHMuIEluCi0gICAgICAgIGFkZGl0aW9uIGEgdXNlciBjYW4gY3JlYXRlIGEgY3VzdG9tIGtleSBzZXQgaW4gdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUga2V5cyB0YWIuCi0KLUNvbW1hbmQgbGluZSB1c2FnZToKLQotICAgICAgICBFbnRlciBpZGxlIC1oIGF0IHRoZSBjb21tYW5kIHByb21wdCB0byBnZXQgYSB1c2FnZSBtZXNzYWdlLgotCi0gICAgICAgIGlkbGUucHkgWy1jIGNvbW1hbmRdIFstZF0gWy1lXSBbLXNdIFstdCB0aXRsZV0gW2FyZ10gLi4uCi0KLSAgICAgICAgLWMgY29tbWFuZCAgcnVuIHRoaXMgY29tbWFuZAotICAgICAgICAtZCAgICAgICAgICBlbmFibGUgZGVidWdnZXIKLSAgICAgICAgLWUgICAgICAgICAgZWRpdCBtb2RlOyBhcmd1bWVudHMgYXJlIGZpbGVzIHRvIGJlIGVkaXRlZAotICAgICAgICAtcyAgICAgICAgICBydW4gJElETEVTVEFSVFVQIG9yICRQWVRIT05TVEFSVFVQIGZpcnN0Ci0gICAgICAgIC10IHRpdGxlICAgIHNldCB0aXRsZSBvZiBzaGVsbCB3aW5kb3cKLQotICAgICAgICBJZiB0aGVyZSBhcmUgYXJndW1lbnRzOgotICAgICAgICAxLiBJZiAtZSBpcyB1c2VkLCBhcmd1bWVudHMgYXJlIGZpbGVzIG9wZW5lZCBmb3IgZWRpdGluZyBhbmQgc3lzLmFyZ3YKLSAgICAgICAgICAgcmVmbGVjdHMgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gSURMRSBpdHNlbGYuCi0gICAgICAgIDIuIE90aGVyd2lzZSwgaWYgLWMgaXMgdXNlZCwgYWxsIGFyZ3VtZW50cyBhcmUgcGxhY2VkIGluCi0gICAgICAgICAgIHN5cy5hcmd2WzE6Li4uXSwgd2l0aCBzeXMuYXJndlswXSBzZXQgdG8gLWMuCi0gICAgICAgIDMuIE90aGVyd2lzZSwgaWYgbmVpdGhlciAtZSBub3IgLWMgaXMgdXNlZCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEKLSAgICAgICAgICAgc2NyaXB0IHdoaWNoIGlzIGV4ZWN1dGVkIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgaW4KLSAgICAgICAgICAgc3lzLmFyZ3ZbMTouLi5dICBhbmQgc3lzLmFyZ3ZbMF0gc2V0IHRvIHRoZSBzY3JpcHQgbmFtZS4gIElmIHRoZQotICAgICAgICAgICBzY3JpcHQgbmFtZSBpcyAtLCBubyBzY3JpcHQgaXMgZXhlY3V0ZWQgYnV0IGFuIGludGVyYWN0aXZlIFB5dGhvbgotICAgICAgICAgICBzZXNzaW9uIGlzIHN0YXJ0ZWQ7IHRoZSBhcmd1bWVudHMgYXJlIHN0aWxsIGF2YWlsYWJsZSBpbiBzeXMuYXJndi4KLQotUnVubmluZyB3aXRob3V0IGEgc3VicHJvY2VzczogKERFUFJFQ0FURUQgaW4gUHl0aG9uIDMuNCBzZWUgSXNzdWUgMTYxMjMpCi0KLSAgICAgICAgSWYgSURMRSBpcyBzdGFydGVkIHdpdGggdGhlIC1uIGNvbW1hbmQgbGluZSBzd2l0Y2ggaXQgd2lsbCBydW4gaW4gYQotICAgICAgICBzaW5nbGUgcHJvY2VzcyBhbmQgd2lsbCBub3QgY3JlYXRlIHRoZSBzdWJwcm9jZXNzIHdoaWNoIHJ1bnMgdGhlIFJQQwotICAgICAgICBQeXRob24gZXhlY3V0aW9uIHNlcnZlci4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiBQeXRob24gY2Fubm90IGNyZWF0ZQotICAgICAgICB0aGUgc3VicHJvY2VzcyBvciB0aGUgUlBDIHNvY2tldCBpbnRlcmZhY2Ugb24geW91ciBwbGF0Zm9ybS4gIEhvd2V2ZXIsCi0gICAgICAgIGluIHRoaXMgbW9kZSB1c2VyIGNvZGUgaXMgbm90IGlzb2xhdGVkIGZyb20gSURMRSBpdHNlbGYuICBBbHNvLCB0aGUKLSAgICAgICAgZW52aXJvbm1lbnQgaXMgbm90IHJlc3RhcnRlZCB3aGVuIFJ1bi9SdW4gTW9kdWxlIChGNSkgaXMgc2VsZWN0ZWQuICBJZgotICAgICAgICB5b3VyIGNvZGUgaGFzIGJlZW4gbW9kaWZpZWQsIHlvdSBtdXN0IHJlbG9hZCgpIHRoZSBhZmZlY3RlZCBtb2R1bGVzIGFuZAotICAgICAgICByZS1pbXBvcnQgYW55IHNwZWNpZmljIGl0ZW1zIChlLmcuIGZyb20gZm9vIGltcG9ydCBiYXopIGlmIHRoZSBjaGFuZ2VzCi0gICAgICAgIGFyZSB0byB0YWtlIGVmZmVjdC4gIEZvciB0aGVzZSByZWFzb25zLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHJ1biBJRExFCi0gICAgICAgIHdpdGggdGhlIGRlZmF1bHQgc3VicHJvY2VzcyBpZiBhdCBhbGwgcG9zc2libGUuCi0KLUV4dGVuc2lvbnM6Ci0KLSAgICAgICAgSURMRSBjb250YWlucyBhbiBleHRlbnNpb24gZmFjaWxpdHkuICBTZWUgdGhlIGJlZ2lubmluZyBvZgotICAgICAgICBjb25maWctZXh0ZW5zaW9ucy5kZWYgaW4gdGhlIGlkbGVsaWIgZGlyZWN0b3J5IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgotICAgICAgICBUaGUgZGVmYXVsdCBleHRlbnNpb25zIGFyZSBjdXJyZW50bHk6Ci0KLSAgICAgICAgICAgICAgICBGb3JtYXRQYXJhZ3JhcGgKLSAgICAgICAgICAgICAgICBBdXRvRXhwYW5kCi0gICAgICAgICAgICAgICAgWm9vbUhlaWdodAotICAgICAgICAgICAgICAgIFNjcmlwdEJpbmRpbmcKLSAgICAgICAgICAgICAgICBDYWxsVGlwcwotICAgICAgICAgICAgICAgIFBhcmVuTWF0Y2gKLSAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGUKLSAgICAgICAgICAgICAgICBDb2RlQ29udGV4dApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CmluZGV4IGE4Zjc1ZDIuLjA3MWJkM2UgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHBfYWJvdXQucHkKQEAgLTEsMTEgKzEsMTMgQEAKICIiIkFib3V0IERpYWxvZyBmb3IgSURMRQogCiAiIiIKLQogaW1wb3J0IG9zCiBmcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgorCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcKKworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldworCiAKIGNsYXNzIEFib3V0RGlhbG9nKFRvcGxldmVsKToKICAgICAiIiJNb2RhbCBhYm91dCBkaWFsb2cgZm9yIGlkbGUKQEAgLTEzNSwxNyArMTM3LDE4IEBACiAgICAgZGVmIGRpc3BsYXlfcHJpbnRlcl90ZXh0KHNlbGYsIHRpdGxlLCBwcmludGVyKToKICAgICAgICAgcHJpbnRlci5fUHJpbnRlcl9fc2V0dXAoKQogICAgICAgICB0ZXh0ID0gJ1xuJy5qb2luKHByaW50ZXIuX1ByaW50ZXJfX2xpbmVzKQotICAgICAgICB0ZXh0Vmlldy52aWV3X3RleHQoc2VsZiwgdGl0bGUsIHRleHQpCisgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dChzZWxmLCB0aXRsZSwgdGV4dCkKIAogICAgIGRlZiBkaXNwbGF5X2ZpbGVfdGV4dChzZWxmLCB0aXRsZSwgZmlsZW5hbWUsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICBmbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksIGZpbGVuYW1lKQotICAgICAgICB0ZXh0Vmlldy52aWV3X2ZpbGUoc2VsZiwgdGl0bGUsIGZuLCBlbmNvZGluZykKKyAgICAgICAgdGV4dHZpZXcudmlld19maWxlKHNlbGYsIHRpdGxlLCBmbiwgZW5jb2RpbmcpCiAKICAgICBkZWYgT2soc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hlbHBhYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaGVscF9hYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihBYm91dERpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lkbGVIaXN0b3J5LnB5IGIvTGliL2lkbGVsaWIvaGlzdG9yeS5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaGlzdG9yeS5weQppbmRleCAwNzhhZjI5Li41NmY1M2EwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQorKysgYi9MaWIvaWRsZWxpYi9oaXN0b3J5LnB5CkBAIC0xLDExICsxLDEyIEBACiAiSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20gd2l0aCBIaXN0b3J5IGNsYXNzIgogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCisKIAogY2xhc3MgSGlzdG9yeToKICAgICAnJycgSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20uCiAKLSAgICBzdG9yZSAtIFN0b3JlIHNvdXJjZSBzdGF0ZW1lbnQgKGNhbGxlZCBmcm9tIFB5U2hlbGwucmVzZXRvdXRwdXQpLgorICAgIHN0b3JlIC0gU3RvcmUgc291cmNlIHN0YXRlbWVudCAoY2FsbGVkIGZyb20gcHlzaGVsbC5yZXNldG91dHB1dCkuCiAgICAgZmV0Y2ggLSBGZXRjaCBzdG9yZWQgc3RhdGVtZW50IG1hdGNoaW5nIHByZWZpeCBhbHJlYWR5IGVudGVyZWQuCiAgICAgaGlzdG9yeV9uZXh0IC0gQm91bmQgdG8gPDxoaXN0b3J5LW5leHQ+PiBldmVudCAoZGVmYXVsdCBBbHQtTikuCiAgICAgaGlzdG9yeV9wcmV2IC0gQm91bmQgdG8gPDxoaXN0b3J5LXByZXY+PiBldmVudCAoZGVmYXVsdCBBbHQtUCkuCkBAIC05OSw2ICsxMDAsNyBAQAogICAgICAgICBzZWxmLnBvaW50ZXIgPSBOb25lCiAgICAgICAgIHNlbGYucHJlZml4ID0gTm9uZQogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbWFpbgotICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaWRsZWhpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICBtYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvaHlwZXJwYXJzZXIucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CmluZGV4IDc3Y2IwNTcuLjQ1MGE3MDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CkBAIC00LDExICs0LDEwIEBACiBwcm9wZXIgaW5kZW50YXRpb24gb2YgY29kZS4gIEh5cGVyUGFyc2VyIGdpdmVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24KIHRoZSBzdHJ1Y3R1cmUgb2YgY29kZS4KICIiIgotCi1pbXBvcnQgc3RyaW5nCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVBhcnNlCitpbXBvcnQgc3RyaW5nCiAKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlwYXJzZQogCiAjIGFsbCBBU0NJSSBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCiBfQVNDSUlfSURfQ0hBUlMgPSBmcm96ZW5zZXQoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iKQpAQCAtMzAsNyArMjksNyBAQAogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBlZGl0d2luLnRleHQKIAotICAgICAgICBwYXJzZXIgPSBQeVBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQorICAgICAgICBwYXJzZXIgPSBweXBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQogCiAgICAgICAgIGRlZiBpbmRleDJsaW5lKGluZGV4KToKICAgICAgICAgICAgIHJldHVybiBpbnQoZmxvYXQoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZS5weSBiL0xpYi9pZGxlbGliL2lkbGUucHkKaW5kZXggYTI0OTU1Ny4uYzAxY2Y5OSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlLnB5CkBAIC03LDUgKzcsNSBAQAogaWRsZWxpYl9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKQogc3lzLnBhdGguaW5zZXJ0KDAsIGlkbGVsaWJfZGlyKQogCi1pbXBvcnQgaWRsZWxpYi5QeVNoZWxsCi1pZGxlbGliLlB5U2hlbGwubWFpbigpCitpbXBvcnQgaWRsZWxpYi5weXNoZWxsCitpZGxlbGliLnB5c2hlbGwubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlLnB5dyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CmluZGV4IDE0MmNiMzIuLmU3M2MwNDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGUucHl3CisrKyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CkBAIC0xLDEwICsxLDEwIEBACiB0cnk6Ci0gICAgaW1wb3J0IGlkbGVsaWIuUHlTaGVsbAorICAgIGltcG9ydCBpZGxlbGliLnB5c2hlbGwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIElETEUgaXMgbm90IGluc3RhbGxlZCwgYnV0IG1heWJlIFB5U2hlbGwgaXMgb24gc3lzLnBhdGg6Ci0gICAgZnJvbSAuIGltcG9ydCBQeVNoZWxsCisgICAgIyBJRExFIGlzIG5vdCBpbnN0YWxsZWQsIGJ1dCBtYXliZSBweXNoZWxsIGlzIG9uIHN5cy5wYXRoOgorICAgIGZyb20gLiBpbXBvcnQgcHlzaGVsbAogICAgIGltcG9ydCBvcwotICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKFB5U2hlbGwuX19maWxlX18pKQorICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHB5c2hlbGwuX19maWxlX18pKQogICAgIGlmIGlkbGVkaXIgIT0gb3MuZ2V0Y3dkKCk6CiAgICAgICAgICMgV2UncmUgbm90IGluIHRoZSBJRExFIGRpcmVjdG9yeSwgaGVscCB0aGUgc3VicHJvY2VzcyBmaW5kIHJ1bi5weQogICAgICAgICBweXBhdGggPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OUEFUSCcsICcnKQpAQCAtMTIsNiArMTIsNiBAQAogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gcHlwYXRoICsgJzonICsgaWRsZWRpcgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gaWRsZWRpcgotICAgIFB5U2hlbGwubWFpbigpCisgICAgcHlzaGVsbC5tYWluKCkKIGVsc2U6Ci0gICAgaWRsZWxpYi5QeVNoZWxsLm1haW4oKQorICAgIGlkbGVsaWIucHlzaGVsbC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weQppbmRleCA4NDVjOTJkLi5hZDA2N2I0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvX19pbml0X18ucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5CkBAIC0xLDYgKzEsOCBAQAogJycnaWRsZWxpYi5pZGxlX3Rlc3QgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlLAogd2hpY2ggdGVzdHMgdGhlIElETEUgYXBwbGljYXRpb24gYXMgcGFydCBvZiB0aGUgc3RkbGliIHRlc3Qgc3VpdGUuCiBSdW4gSURMRSB0ZXN0cyBhbG9uZSB3aXRoICJweXRob24gLW0gdGVzdC50ZXN0X2lkbGUiLgorU3RhcnRpbmcgd2l0aCBQeXRob24gMy42LCBJRExFIHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgbGF0ZXIuCisKIFRoaXMgcGFja2FnZSBhbmQgaXRzIGNvbnRhaW5lZCBtb2R1bGVzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSBhbmQKIGFueSBkaXJlY3QgdXNlIGlzIGF0IHlvdXIgb3duIHJpc2suCiAnJycKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weQppbmRleCA1OGU2MmNiLi42ZjY3NmFlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5CkBAIC01OSwxOSArNTksMjAgQEAKIAogCiBNb2R1bGVzIGFuZCBjbGFzc2VzIG5vdCBiZWluZyB0ZXN0ZWQgYXQgdGhlIG1vbWVudDoKLVB5U2hlbGwuUHlTaGVsbEVkaXRvcldpbmRvdwotRGVidWdnZXIuRGVidWdnZXIKLUF1dG9Db21wbGV0ZVdpbmRvdy5BdXRvQ29tcGxldGVXaW5kb3cKLU91dHB1dFdpbmRvdy5PdXRwdXRXaW5kb3cgKGluZGlyZWN0bHkgYmVpbmcgdGVzdGVkIHdpdGggZ3JlcCB0ZXN0KQorcHlzaGVsbC5QeVNoZWxsRWRpdG9yV2luZG93CitkZWJ1Z2dlci5EZWJ1Z2dlcgorYXV0b2NvbXBsZXRlX3cuQXV0b0NvbXBsZXRlV2luZG93CitvdXR3aW4uT3V0cHV0V2luZG93IChpbmRpcmVjdGx5IGJlaW5nIHRlc3RlZCB3aXRoIGdyZXAgdGVzdCkKICcnJwogCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgaW1wb3J0X21vZHVsZQotZnJvbSBpZGxlbGliLm1hY29zeFN1cHBvcnQgaW1wb3J0IF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMKIGltcG9ydCB0a2ludGVyIGFzIHRrCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKK3RrLk5vRGVmYXVsdFJvb3QoKQogCiBBYm91dERpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2Fib3V0RGlhbG9nJywKLSAgICAna3dkcyc6IHsndGl0bGUnOiAnYWJvdXREaWFsb2cgdGVzdCcsCisgICAgJ2ZpbGUnOiAnaGVscF9hYm91dCcsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ2hlbHBfYWJvdXQgdGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsCiAgICAgICAgICAgICAgfSwKICAgICAnbXNnJzogIlRlc3QgZXZlcnkgYnV0dG9uLiBFbnN1cmUgUHl0aG9uLCBUSyBhbmQgSURMRSB2ZXJzaW9ucyAiCkBAIC03OSwxNCArODAsMTQgQEAKICAgICB9CiAKIF9jYWxsdGlwX3dpbmRvd19zcGVjID0gewotICAgICdmaWxlJzogJ0NhbGxUaXBXaW5kb3cnLAorICAgICdmaWxlJzogJ2NhbGx0aXBfdycsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlR5cGluZyAnKCcgc2hvdWxkIGRpc3BsYXkgYSBjYWxsdGlwLlxuIgogICAgICAgICAgICAiVHlwaW5nICcpIHNob3VsZCBoaWRlIHRoZSBjYWxsdGlwLlxuIgogICAgIH0KIAogX2NsYXNzX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdDbGFzc0Jyb3dzZXInLAorICAgICdmaWxlJzogJ2Jyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJJbnNwZWN0IG5hbWVzIG9mIG1vZHVsZSwgY2xhc3Mod2l0aCBzdXBlcmNsYXNzIGlmICIKICAgICAgICAgICAgImFwcGxpY2FibGUpLCBtZXRob2RzIGFuZCBmdW5jdGlvbnMuXG5Ub2dnbGUgbmVzdGVkIGl0ZW1zLlxuIgpAQCAtOTUsNyArOTYsNyBAQAogICAgIH0KIAogX2NvbG9yX2RlbGVnYXRvcl9zcGVjID0gewotICAgICdmaWxlJzogJ0NvbG9yRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICdjb2xvcml6ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgdGV4dCBpcyBzYW1wbGUgUHl0aG9uIGNvZGUuXG4iCiAgICAgICAgICAgICJFbnN1cmUgY29tcG9uZW50cyBsaWtlIGNvbW1lbnRzLCBrZXl3b3JkcywgYnVpbHRpbnMsXG4iCkBAIC0xMDQsNyArMTA1LDcgQEAKICAgICB9CiAKIENvbmZpZ0RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2NvbmZpZ0RpYWxvZycsCisgICAgJ2ZpbGUnOiAnY29uZmlnZGlhbG9nJywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnQ29uZmlnRGlhbG9nVGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsfSwKICAgICAnbXNnJzogIklETEUgcHJlZmVyZW5jZXMgZGlhbG9nLlxuIgpAQCAtMTIxLDcgKzEyMiw3IEBACiAKICMgVE9ETyBJbXByb3ZlIG1lc3NhZ2UKIF9keW5fb3B0aW9uX21lbnVfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdkeW5PcHRpb25NZW51V2lkZ2V0JywKKyAgICAnZmlsZSc6ICdkeW5vcHRpb24nLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJTZWxlY3Qgb25lIG9mIHRoZSBtYW55IG9wdGlvbnMgaW4gdGhlICdvbGQgb3B0aW9uIHNldCcuXG4iCiAgICAgICAgICAgICJDbGljayB0aGUgYnV0dG9uIHRvIGNoYW5nZSB0aGUgb3B0aW9uIHNldC5cbiIKQEAgLTEzMCwzOSArMTMxLDE1IEBACiAKICMgVE9ETyBlZGl0IHdyYXBwZXIKIF9lZGl0b3Jfd2luZG93X3NwZWMgPSB7Ci0gICAnZmlsZSc6ICdFZGl0b3JXaW5kb3cnLAorICAgJ2ZpbGUnOiAnZWRpdG9yJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGVzdCBlZGl0b3IgZnVuY3Rpb25zIG9mIGludGVyZXN0LlxuIgogICAgICAgICAgICAiQmVzdCB0byBjbG9zZSBlZGl0b3IgZmlyc3QuIgogICAgIH0KIAotR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdTZWN0aW9uTmFtZURpYWxvZycsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzonR2V0IE5hbWUnLAotICAgICAgICAgICAgICdtZXNzYWdlJzonRW50ZXIgc29tZXRoaW5nJywKLSAgICAgICAgICAgICAndXNlZF9uYW1lcyc6IHsnYWJjJ30sCi0gICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAotICAgICdtc2cnOiAiQWZ0ZXIgdGhlIHRleHQgZW50ZXJlZCB3aXRoIFtPa10gaXMgc3RyaXBwZWQsIDxub3RoaW5nPiwgIgotICAgICAgICAgICAiJ2FiYycsIG9yIG1vcmUgdGhhdCAzMCBjaGFycyBhcmUgZXJyb3JzLlxuIgotICAgICAgICAgICAiQ2xvc2UgJ0dldCBOYW1lJyB3aXRoIGEgdmFsaWQgZW50cnkgKHByaW50ZWQgdG8gU2hlbGwpLCAiCi0gICAgICAgICAgICJbQ2FuY2VsXSwgb3IgW1hdIiwKLSAgICB9Ci0KLUdldEhlbHBTb3VyY2VEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdIZWxwU291cmNlRWRpdCcsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ0dldCBoZWxwc291cmNlJywKLSAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCi0gICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiAiCi0gICAgICAgICAgICI8bm90aGluZz4gYW5kIG1vcmUgdGhhbiAzMCBjaGFycyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCi0gICAgICAgICAgICI8bm90aGluZz4sIGZpbGUgZG9lcyBub3QgZXhpc3QgYXJlIGludmFsaWQgcGF0aCBpdGVtcy5cbiIKLSAgICAgICAgICAgIlRlc3QgZm9yIGluY29tcGxldGUgd2ViIGFkZHJlc3MgZm9yIGhlbHAgZmlsZSBwYXRoLlxuIgotICAgICAgICAgICAiQSB2YWxpZCBlbnRyeSB3aWxsIGJlIHByaW50ZWQgdG8gc2hlbGwgd2l0aCBbMGtdLlxuIgotICAgICAgICAgICAiW0NhbmNlbF0gd2lsbCBwcmludCBOb25lIHRvIHNoZWxsIiwKLSAgICB9Ci0KICMgVXBkYXRlIG9uY2UgaXNzdWUyMTUxOSBpcyByZXNvbHZlZC4KIEdldEtleXNEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdrZXliaW5kaW5nRGlhbG9nJywKKyAgICAnZmlsZSc6ICdjb25maWdfa2V5JywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnVGVzdCBrZXliaW5kaW5ncycsCiAgICAgICAgICAgICAgJ2FjdGlvbic6ICdmaW5kLWFnYWluJywKICAgICAgICAgICAgICAnY3VycmVudEtleVNlcXVlbmNlcyc6IFsnJ10gLApAQCAtMTc3LDcgKzE1NCw3IEBACiAgICAgfQogCiBfZ3JlcF9kaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdHcmVwRGlhbG9nJywKKyAgICAnZmlsZSc6ICdncmVwJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTaG93IEdyZXBEaWFsb2cnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdGhlIHZhcmlvdXMgJ0ZpbmQtaW4tZmlsZXMnIGZ1bmN0aW9ucy5cbiIKQEAgLTE4Niw4ICsxNjMsMjQgQEAKICAgICAgICAgICAgInNob3VsZCBvcGVuIHRoYXQgZmlsZSBcbmluIGEgbmV3IEVkaXRvcldpbmRvdy4iCiAgICAgfQogCitIZWxwU291cmNlX3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdIZWxwIG5hbWUgYW5kIHNvdXJjZScsCisgICAgICAgICAgICAgJ21lbnVpdGVtJzogJ3Rlc3QnLAorICAgICAgICAgICAgICdmaWxlcGF0aCc6IF9fZmlsZV9fLAorICAgICAgICAgICAgICd1c2VkX25hbWVzJzogeydhYmMnfSwKKyAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCisgICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiIKKyAgICAgICAgICAgIicnLCA+IHRoYW4gMzAgY2hhcnMsIGFuZCAnYWJjJyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCisgICAgICAgICAgICInJyBhbmQgZmlsZSBkb2VzIG5vdCBleGlzdCBhcmUgaW52YWxpZCBwYXRoIGl0ZW1zLlxuIgorICAgICAgICAgICAiQW55IHVybCAoJ3d3dy4uLicsICdodHRwLi4uJykgaXMgYWNjZXB0ZWQuXG4iCisgICAgICAgICAgICJUZXN0IEJyb3dzZSB3aXRoIGFuZCB3aXRob3V0IHBhdGgsIGFzIGNhbm5vdCB1bml0dGVzdC5cbiIKKyAgICAgICAgICAgIltPa10gb3IgPFJldHVybj4gcHJpbnRzIHZhbGlkIGVudHJ5IHRvIHNoZWxsXG4iCisgICAgICAgICAgICJbQ2FuY2VsXSBvciA8RXNjYXBlPiBwcmludHMgTm9uZSB0byBzaGVsbCIKKyAgICB9CisKIF9pb19iaW5kaW5nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnSU9CaW5kaW5nJywKKyAgICAnZmlsZSc6ICdpb21lbnUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IHRoZSBmb2xsb3dpbmcgYmluZGluZ3MuXG4iCiAgICAgICAgICAgICI8Q29udHJvbC1vPiB0byBvcGVuIGZpbGUgZnJvbSBkaWFsb2cuXG4iCkBAIC0yMDAsNyArMTkzLDcgQEAKICAgICB9CiAKIF9tdWx0aV9jYWxsX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlDYWxsJywKKyAgICAnZmlsZSc6ICdtdWx0aWNhbGwnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgZm9sbG93aW5nIGFjdGlvbnMgc2hvdWxkIHRyaWdnZXIgYSBwcmludCB0byBjb25zb2xlIG9yIElETEUiCiAgICAgICAgICAgICIgU2hlbGwuXG5FbnRlcmluZyBhbmQgbGVhdmluZyB0aGUgdGV4dCBhcmVhLCBrZXkgZW50cnksICIKQEAgLTIxMCwxNCArMjAzLDE0IEBACiAgICAgfQogCiBfbXVsdGlzdGF0dXNfYmFyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlTdGF0dXNCYXInLAorICAgICdmaWxlJzogJ3N0YXR1c2JhcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkVuc3VyZSBwcmVzZW5jZSBvZiBtdWx0aS1zdGF0dXMgYmFyIGJlbG93IHRleHQgYXJlYS5cbiIKICAgICAgICAgICAgIkNsaWNrICdVcGRhdGUgU3RhdHVzJyB0byBjaGFuZ2UgdGhlIG11bHRpLXN0YXR1cyB0ZXh0IgogICAgIH0KIAogX29iamVjdF9icm93c2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnT2JqZWN0QnJvd3NlcicsCisgICAgJ2ZpbGUnOiAnZGVidWdvYmonLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJEb3VibGUgY2xpY2sgb24gaXRlbXMgdXB0byB0aGUgbG93ZXN0IGxldmVsLlxuIgogICAgICAgICAgICAiQXR0cmlidXRlcyBvZiB0aGUgb2JqZWN0cyBhbmQgcmVsYXRlZCBpbmZvcm1hdGlvbiAiCkBAIC0yMjUsNyArMjE4LDcgQEAKICAgICB9CiAKIF9wYXRoX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdQYXRoQnJvd3NlcicsCisgICAgJ2ZpbGUnOiAncGF0aGJyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IGZvciBjb3JyZWN0IGRpc3BsYXkgb2YgYWxsIHBhdGhzIGluIHN5cy5wYXRoLlxuIgogICAgICAgICAgICAiVG9nZ2xlIG5lc3RlZCBpdGVtcyB1cHRvIHRoZSBsb3dlc3QgbGV2ZWwuXG4iCkBAIC0yMzQsNyArMjI3LDcgQEAKICAgICB9CiAKIF9wZXJjb2xhdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUGVyY29sYXRvcicsCisgICAgJ2ZpbGUnOiAncGVyY29sYXRvcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZXJlIGFyZSB0d28gdHJhY2VycyB3aGljaCBjYW4gYmUgdG9nZ2xlZCB1c2luZyBhIGNoZWNrYm94LlxuIgogICAgICAgICAgICAiVG9nZ2xpbmcgYSB0cmFjZXIgJ29uJyBieSBjaGVja2luZyBpdCBzaG91bGQgcHJpbnQgdHJhY2VyIgpAQCAtMjQ0LDggKzIzNywyMCBAQAogICAgICAgICAgICAiVGVzdCBmb3IgYWN0aW9ucyBsaWtlIHRleHQgZW50cnksIGFuZCByZW1vdmFsLiIKICAgICB9CiAKK1F1ZXJ5X3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdRdWVyeScsCisgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnRW50ZXIgc29tZXRoaW5nJywKKyAgICAgICAgICAgICAndGV4dDAnOiAnR28nLAorICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKKyAgICAnbXNnJzogIkVudGVyIHdpdGggPFJldHVybj4gb3IgW09rXS4gIFByaW50IHZhbGlkIGVudHJ5IHRvIFNoZWxsXG4iCisgICAgICAgICAgICJCbGFuayBsaW5lLCBhZnRlciBzdHJpcHBpbmcsIGlzIGlnbm9yZWRcbiIKKyAgICAgICAgICAgIkNsb3NlIGRpYWxvZyB3aXRoIHZhbGlkIGVudHJ5LCA8RXNjYXBlPiwgW0NhbmNlbF0sIFtYXSIKKyAgICB9CisKKwogX3JlcGxhY2VfZGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUmVwbGFjZURpYWxvZycsCisgICAgJ2ZpbGUnOiAncmVwbGFjZScsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkNsaWNrIHRoZSAnUmVwbGFjZScgYnV0dG9uLlxuIgogICAgICAgICAgICAiVGVzdCB2YXJpb3VzIHJlcGxhY2Ugb3B0aW9ucyBpbiB0aGUgJ1JlcGxhY2UgZGlhbG9nJy5cbiIKQEAgLTI1MywxNSArMjU4LDIyIEBACiAgICAgfQogCiBfc2VhcmNoX2RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ1NlYXJjaERpYWxvZycsCisgICAgJ2ZpbGUnOiAnc2VhcmNoJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTZWFyY2gnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdmFyaW91cyBzZWFyY2ggb3B0aW9ucyBpbiB0aGUgJ1NlYXJjaCBkaWFsb2cnLlxuIgogICAgICAgICAgICAiQ2xpY2sgW0Nsb3NlXSBvciBbWF0gdG8gY2xvc2UgdGhlICdTZWFyY2ggRGlhbG9nJy4iCiAgICAgfQogCitfc2VhcmNoYmFzZV9zcGVjID0geworICAgICdmaWxlJzogJ3NlYXJjaGJhc2UnLAorICAgICdrd2RzJzoge30sCisgICAgJ21zZyc6ICJDaGVjayB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYmFzZSBzZWFyY2ggZGlhbG9nXG4iCisgICAgICAgICAgICJJdHMgb25seSBhY3Rpb24gaXMgdG8gY2xvc2UuIgorICAgIH0KKwogX3Njcm9sbGVkX2xpc3Rfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTY3JvbGxlZExpc3QnLAorICAgICdmaWxlJzogJ3Njcm9sbGVkbGlzdCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIllvdSBzaG91bGQgc2VlIGEgc2Nyb2xsYWJsZSBsaXN0IG9mIGl0ZW1zXG4iCiAgICAgICAgICAgICJTZWxlY3RpbmcgKGNsaWNraW5nKSBvciBkb3VibGUgY2xpY2tpbmcgYW4gaXRlbSAiCkBAIC0yNzcsNyArMjg5LDcgQEAKICAgICB9CiAKIF9zdGFja192aWV3ZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTdGFja1ZpZXdlcicsCisgICAgJ2ZpbGUnOiAnc3RhY2t2aWV3ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJBIHN0YWNrdHJhY2UgZm9yIGEgTmFtZUVycm9yIGV4Y2VwdGlvbi5cbiIKICAgICAgICAgICAgIkV4cGFuZCAnaWRsZWxpYiAuLi4nIGFuZCAnPGxvY2Fscz4nLlxuIgpAQCAtMjk1LDggKzMwNyw4IEBACiAgICAgfQogCiBUZXh0Vmlld2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAndGV4dFZpZXcnLAotICAgICdrd2RzJzogeyd0aXRsZSc6ICdUZXN0IHRleHRWaWV3JywKKyAgICAnZmlsZSc6ICd0ZXh0dmlldycsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1Rlc3QgdGV4dHZpZXcnLAogICAgICAgICAgICAgICd0ZXh0JzonVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy5cbicqMzUsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAogICAgICdtc2cnOiAiVGVzdCBmb3IgcmVhZC1vbmx5IHByb3BlcnR5IG9mIHRleHQuXG4iCkBAIC0zMDQsMjEgKzMxNiwyMSBAQAogICAgICB9CiAKIF90b29sdGlwX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnVG9vbFRpcCcsCisgICAgJ2ZpbGUnOiAndG9vbHRpcCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlBsYWNlIG1vdXNlIGN1cnNvciBvdmVyIGJvdGggdGhlIGJ1dHRvbnNcbiIKICAgICAgICAgICAgIkEgdG9vbHRpcCBzaG91bGQgYXBwZWFyIHdpdGggc29tZSB0ZXh0LiIKICAgICB9CiAKIF90cmVlX3dpZGdldF9zcGVjID0gewotICAgICdmaWxlJzogJ1RyZWVXaWRnZXQnLAorICAgICdmaWxlJzogJ3RyZWUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgY2FudmFzIGlzIHNjcm9sbGFibGUuXG4iCiAgICAgICAgICAgICJDbGljayBvbiBmb2xkZXJzIHVwdG8gdG8gdGhlIGxvd2VzdCBsZXZlbC4iCiAgICAgfQogCiBfdW5kb19kZWxlZ2F0b3Jfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdVbmRvRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICd1bmRvJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgW1VuZG9dIHRvIHVuZG8gYW55IGFjdGlvbi5cbiIKICAgICAgICAgICAgIkNsaWNrIFtSZWRvXSB0byByZWRvIGFueSBhY3Rpb24uXG4iCkBAIC0zMjcsNyArMzM5LDcgQEAKICAgICB9CiAKIF93aWRnZXRfcmVkaXJlY3Rvcl9zcGVjID0gewotICAgICdmaWxlJzogJ1dpZGdldFJlZGlyZWN0b3InLAorICAgICdmaWxlJzogJ3JlZGlyZWN0b3InLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJFdmVyeSB0ZXh0IGluc2VydCBzaG91bGQgYmUgcHJpbnRlZCB0byB0aGUgY29uc29sZS4iCiAgICAgICAgICAgICJvciB0aGUgSURMRSBzaGVsbC4iCkBAIC0zMzcsMTQgKzM0OSwxMyBAQAogICAgIHJvb3QgPSB0ay5UaygpCiAgICAgcm9vdC50aXRsZSgnSURMRSBodGVzdCcpCiAgICAgcm9vdC5yZXNpemFibGUoMCwgMCkKLSAgICBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKHJvb3QpCiAKICAgICAjIGEgc2Nyb2xsYWJsZSBMYWJlbCBsaWtlIGNvbnN0YW50IHdpZHRoIHRleHQgd2lkZ2V0LgogICAgIGZyYW1lTGFiZWwgPSB0ay5GcmFtZShyb290LCBwYWR4PTEwKQogICAgIGZyYW1lTGFiZWwucGFjaygpCiAgICAgdGV4dCA9IHRrLlRleHQoZnJhbWVMYWJlbCwgd3JhcD0nd29yZCcpCiAgICAgdGV4dC5jb25maWd1cmUoYmc9cm9vdC5jZ2V0KCdiZycpLCByZWxpZWY9J2ZsYXQnLCBoZWlnaHQ9NCwgd2lkdGg9NzApCi0gICAgc2Nyb2xsYmFyID0gdGsuU2Nyb2xsYmFyKGZyYW1lTGFiZWwsIGNvbW1hbmQ9dGV4dC55dmlldykKKyAgICBzY3JvbGxiYXIgPSBTY3JvbGxiYXIoZnJhbWVMYWJlbCwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgIHRleHQuY29uZmlnKHlzY3JvbGxjb21tYW5kPXNjcm9sbGJhci5zZXQpCiAgICAgc2Nyb2xsYmFyLnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd5JywgZXhwYW5kPUZhbHNlKQogICAgIHRleHQucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlKQpAQCAtMzY1LDExICszNzYsMTEgQEAKICAgICAgICAgICAgICAgICB0ZXN0ID0gZ2V0YXR0cihtb2QsIHRlc3RfbmFtZSkKICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QuYXBwZW5kKCh0ZXN0X3NwZWMsIHRlc3QpKQogCi0gICAgdGVzdF9uYW1lID0gdGsuU3RyaW5nVmFyKCcnKQorICAgIHRlc3RfbmFtZSA9IHRrLlN0cmluZ1Zhcihyb290KQogICAgIGNhbGxhYmxlX29iamVjdCA9IE5vbmUKICAgICB0ZXN0X2t3ZHMgPSBOb25lCiAKLSAgICBkZWYgbmV4dCgpOgorICAgIGRlZiBuZXh0X3Rlc3QoKToKIAogICAgICAgICBub25sb2NhbCB0ZXN0X25hbWUsIGNhbGxhYmxlX29iamVjdCwgdGVzdF9rd2RzCiAgICAgICAgIGlmIGxlbih0ZXN0X2xpc3QpID09IDE6CkBAIC0zODQsMjAgKzM5NSwyNiBAQAogICAgICAgICB0ZXh0Lmluc2VydCgiMS4wIix0ZXN0X3NwZWNbJ21zZyddKQogICAgICAgICB0ZXh0LmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKSAjIHByZXNlcnZlIHJlYWQtb25seSBwcm9wZXJ0eQogCi0gICAgZGVmIHJ1bl90ZXN0KCk6CisgICAgZGVmIHJ1bl90ZXN0KF89Tm9uZSk6CiAgICAgICAgIHdpZGdldCA9IGNhbGxhYmxlX29iamVjdCgqKnRlc3Rfa3dkcykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcHJpbnQod2lkZ2V0LnJlc3VsdCkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHR2YXJpYWJsZT10ZXN0X25hbWUsIGNvbW1hbmQ9cnVuX3Rlc3QpCisgICAgZGVmIGNsb3NlKF89Tm9uZSk6CisgICAgICAgIHJvb3QuZGVzdHJveSgpCisKKyAgICBidXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dHZhcmlhYmxlPXRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nYWN0aXZlJywgY29tbWFuZD1ydW5fdGVzdCkKKyAgICBuZXh0X2J1dHRvbiA9IHRrLkJ1dHRvbihyb290LCB0ZXh0PSJOZXh0IiwgY29tbWFuZD1uZXh0X3Rlc3QpCiAgICAgYnV0dG9uLnBhY2soKQotICAgIG5leHRfYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHQ9Ik5leHQiLCBjb21tYW5kPW5leHQpCiAgICAgbmV4dF9idXR0b24ucGFjaygpCisgICAgbmV4dF9idXR0b24uZm9jdXNfc2V0KCkKKyAgICByb290LmJpbmQoJzxLZXktUmV0dXJuPicsIHJ1bl90ZXN0KQorICAgIHJvb3QuYmluZCgnPEtleS1Fc2NhcGU+JywgY2xvc2UpCiAKLSAgICBuZXh0KCkKLQorICAgIG5leHRfdGVzdCgpCiAgICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L21vY2tfaWRsZS5weQppbmRleCAxNjcyYTM0Li5jN2I0OWVmIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkKQEAgLTMzLDcgKzMzLDcgQEAKIAogCiBjbGFzcyBFZGl0b3I6Ci0gICAgJycnTWluaW1hbGx5IGltaXRhdGUgRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdyBjbGFzcy4KKyAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBlZGl0b3IuRWRpdG9yV2luZG93IGNsYXNzLgogICAgICcnJwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCBmaWxlbmFtZT1Ob25lLCBrZXk9Tm9uZSwgcm9vdD1Ob25lKToKICAgICAgICAgc2VsZi50ZXh0ID0gVGV4dCgpCkBAIC00Niw3ICs0Niw3IEBACiAKIAogY2xhc3MgVW5kb0RlbGVnYXRvcjoKLSAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBVbmRvRGVsZWdhdG9yLFVuZG9EZWxlZ2F0b3IgY2xhc3MuCisgICAgJycnTWluaW1hbGx5IGltaXRhdGUgdW5kby5VbmRvRGVsZWdhdG9yIGNsYXNzLgogICAgICcnJwogICAgICMgQSByZWFsIHVuZG8gYmxvY2sgaXMgb25seSBuZWVkZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgZGVmIHVuZG9fYmxvY2tfc3RhcnQoKmFyZ3MpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5CmluZGV4IDVmYzg5OWQuLmYzZjJkZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9jb21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkKQEAgLTEsOSArMSwxMyBAQAorJycnIFRlc3QgYXV0b2NvbXBsZXRlIGFuZCBhdXRvY29tcGxlX3cKKworQ292ZXJhZ2Ugb2YgYXV0b2NvbXBsZTogNTYlCisnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiAKLWltcG9ydCBpZGxlbGliLkF1dG9Db21wbGV0ZSBhcyBhYwotaW1wb3J0IGlkbGVsaWIuQXV0b0NvbXBsZXRlV2luZG93IGFzIGFjdworaW1wb3J0IGlkbGVsaWIuYXV0b2NvbXBsZXRlIGFzIGFjCitpbXBvcnQgaWRsZWxpYi5hdXRvY29tcGxldGVfdyBhcyBhY3cKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IEV2ZW50CiAKQEAgLTkxLDYgKzk1LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVfZXZlbnQoZXYpKQogICAgICAgICBkZWwgZXYubWNfc3RhdGUKIAorICAgICAgICAjIFRlc3QgdGhhdCB0YWIgYWZ0ZXIgd2hpdGVzcGFjZSBpcyBpZ25vcmVkLgorICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCcxLjAnLCAnICAgICAgICAiIiJEb2NzdHJpbmcuXG4gICAgJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZV9ldmVudChldikpCisgICAgICAgIHNlbGYudGV4dC5kZWxldGUoJzEuMCcsICdlbmQnKQorCiAgICAgICAgICMgSWYgYXV0b2NvbXBsZXRlIHdpbmRvdyBpcyBvcGVuLCBjb21wbGV0ZSgpIG1ldGhvZCBpcyBjYWxsZWQKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJ3JlLicpCiAgICAgICAgICMgVGhpcyBtdXN0IGNhbGwgYXV0b2NvbXBsZXRlLl9tYWtlX2F1dG9jb21wbGV0ZV93aW5kb3coKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9leHBhbmQucHkKaW5kZXggZDJhMzE1Ni4uYWU4MTg2YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5CkBAIC0xLDkgKzEsOSBAQAotIiIiVW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5BdXRvRXhwYW5kIiIiCisiIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmF1dG9leHBhbmQiIiIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQsIFRrCiAjZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBUZXh0Ci1mcm9tIGlkbGVsaWIuQXV0b0V4cGFuZCBpbXBvcnQgQXV0b0V4cGFuZAorZnJvbSBpZGxlbGliLmF1dG9leHBhbmQgaW1wb3J0IEF1dG9FeHBhbmQKIAogCiBjbGFzcyBEdW1teV9FZGl0d2luOgpAQCAtMjIsNiArMjIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2xzLnRleHQgPSBUZXh0KCkKICAgICAgICAgY2xzLmF1dG9fZXhwYW5kID0gQXV0b0V4cGFuZChEdW1teV9FZGl0d2luKGNscy50ZXh0KSkKKyAgICAgICAgY2xzLmF1dG9fZXhwYW5kLmJlbGwgPSBsYW1iZGE6IE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0xMzcsNSArMTM4LDYgQEAKICAgICAgICAgbmV3X3N0YXRlID0gc2VsZi5hdXRvX2V4cGFuZC5zdGF0ZQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluaXRpYWxfc3RhdGUsIG5ld19zdGF0ZSkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jYWxsdGlwcy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CmluZGV4IGIyYTczM2MuLjBiMTE2MDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaWRsZWxpYi5DYWxsVGlwcyBhcyBjdAoraW1wb3J0IGlkbGVsaWIuY2FsbHRpcHMgYXMgY3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHR5cGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzhiYzNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29sb3JpemVyLnB5CkBAIC0wLDAgKzEsNTYgQEAKKycnJ1Rlc3QgaWRsZWxpYi9jb2xvcml6ZXIucHkKKworUGVyZm9ybSBtaW5pbWFsIHNhbml0eSBjaGVja3MgdGhhdCBtb2R1bGUgaW1wb3J0cyBhbmQgc29tZSB0aGluZ3MgcnVuLgorCitDb3ZlcmFnZSAyMiUuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29sb3JpemVyICAjIGFsd2F5cyB0ZXN0IGltcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBGdW5jdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29sb3JpemVyLmFueSgndGVzdCcsICgnYScsICdiJykpKQorCisgICAgZGVmIHRlc3RfbWFrZV9wYXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xvcml6ZXIubWFrZV9wYXQoKSkKKworCitjbGFzcyBDb2xvckNvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMudGV4dCA9IFRleHQoY2xzLnJvb3QpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLnRleHQKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfY29sb3JpemVyKHNlbGYpOgorICAgICAgICBjb2xvcml6ZXIuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKKworY2xhc3MgQ29sb3JEZWxlZ2F0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2NvbG9yaXplcihzZWxmKToKKyAgICAgICAgY29sb3JpemVyLkNvbG9yRGVsZWdhdG9yKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNmYTFhMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZy5weQpAQCAtMCwwICsxLDE2MCBAQAorJycnVGVzdCBpZGxlbGliLmNvbmZpZy4KKworTXVjaCBpcyB0ZXN0ZWQgYnkgb3BlbmluZyBjb25maWcgZGlhbG9nIGxpdmUgb3IgaW4gdGVzdF9jb25maWdkaWFsb2cuCitDb3ZlcmFnZTogMjclCisnJycKK2Zyb20gc3lzIGltcG9ydCBtb2R1bGVzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnCisKKyMgVGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24gZm9ydHVpdG91cyB1c2VyIGNvbmZpZ3VyYXRpb25zLgorIyBUaGV5IG11c3Qgbm90IGFmZmVjdCBhY3R1YWwgdXNlciAuY2ZnIGZpbGVzLgorIyBSZXBsYWNlIHVzZXIgcGFyc2VycyB3aXRoIGVtcHR5IHBhcnNlcnMgdGhhdCBjYW5ub3QgYmUgc2F2ZWQuCisKK2lkbGVDb25mID0gY29uZmlnLmlkbGVDb25mCit1c2VyY2ZnID0gaWRsZUNvbmYudXNlckNmZwordGVzdGNmZyA9IHt9Cit1c2VybWFpbiA9IHRlc3RjZmdbJ21haW4nXSA9IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpICAjIGZpbGVuYW1lCit1c2VyaGlnaCA9IHRlc3RjZmdbJ2hpZ2hsaWdodCddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKK3VzZXJrZXlzID0gdGVzdGNmZ1sna2V5cyddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKKworZGVmIHNldFVwTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHRlc3RjZmcKKworZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHVzZXJjZmcKKworCitjbGFzcyBDdXJyZW50Q29sb3JLZXlzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiIFRlc3QgY29sb3JrZXlzIGZ1bmN0aW9uIHdpdGggdXNlciBjb25maWcgW1RoZW1lXSBhbmQgW0tleXNdIHBhdHRlcm5zLgorCisgICAgICAgIGNvbG9ya2V5cyA9IGNvbmZpZy5JZGxlQ29uZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cworICAgICAgICBUZXN0IGFsbCBwYXR0ZXJucyB3cml0dGVuIGJ5IElETEUgYW5kIHNvbWUgZXJyb3JzCisgICAgICAgIEl0ZW0gJ2RlZmF1bHQnIHNob3VsZCByZWFsbHkgYmUgJ2J1aWx0aW4nICh2ZXJzdXMgJ2N1c3RvbSkuCisgICAgIiIiCisgICAgY29sb3JrZXlzID0gaWRsZUNvbmYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMKKyAgICBkZWZhdWx0X3RoZW1lID0gJ0lETEUgQ2xhc3NpYycKKyAgICBkZWZhdWx0X2tleXMgPSBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKQorCisgICAgZGVmIHRlc3Rfb2xkX2J1aWx0aW5fdGhlbWUoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICAjIEZvciBvbGQgZGVmYXVsdCwgbmFtZTIgbXVzdCBiZSBibGFuay4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgJycnKQorICAgICAgICAjIElETEUgb21pdHMgJ25hbWUnIGZvciBkZWZhdWx0IG9sZCBidWlsdGluIHRoZW1lLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgSURMRSBhZGRzICduYW1lJyBmb3Igbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gdGhlbWUuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIE5ldycpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG9sZCBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUnXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKworICAgIGRlZiB0ZXN0X25ld19idWlsdGluX3RoZW1lKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW1RoZW1lXQorICAgICAgICAgICAgZGVmYXVsdCA9IFRydWUKKyAgICAgICAgICAgIG5hbWUyID0gSURMRSBEYXJrCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIEVycm9uZW91cyBub24tZGVmYXVsdCBuZXcgYnVpbHRpbiByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignVGhlbWUnKQorCisgICAgZGVmIHRlc3RfdXNlcl9vdmVycmlkZV90aGVtZShzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gRmFsc2UKKyAgICAgICAgICAgIG5hbWUgPSBDdXN0b20gRGFyaworICAgICAgICAgICAgJycnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJoaWdoLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIERhcmtdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnQ3VzdG9tIERhcmsnKQorICAgICAgICAjIE5hbWUyIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0N1c3RvbSBEYXJrJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKyAgICAgICAgdXNlcmhpZ2gucmVtb3ZlX3NlY3Rpb24oJ0N1c3RvbSBEYXJrJykKKworICAgIGRlZiB0ZXN0X29sZF9idWlsdGluX2tleXMoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgIyBGb3Igb2xkIGRlZmF1bHQsIG5hbWUyIG11c3QgYmUgYmxhbmssIG5hbWUgaXMgYWx3YXlzIHVzZWQuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZSA9IElETEUgQ2xhc3NpYyBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgQ2xhc3NpYyBVbml4JykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksIHNlbGYuZGVmYXVsdF9rZXlzKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignS2V5cycpCisKKyAgICBkZWYgdGVzdF9uZXdfYnVpbHRpbl9rZXlzKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZTIgPSBJRExFIE1vZGVybiBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgTW9kZXJuIFVuaXgnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydLZXlzJ11bJ25hbWUnXSA9ICdJRExFIENsYXNzaWMgVW5peCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnSURMRSBNb2Rlcm4gVW5peCcpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG5ldyBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdLZXlzJykKKworICAgIGRlZiB0ZXN0X3VzZXJfb3ZlcnJpZGVfa2V5cyhzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbS2V5c10KKyAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZQorICAgICAgICAgICAgbmFtZSA9IEN1c3RvbSBLZXlzCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJrZXlzLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIEtleXNdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdDdXN0b20gS2V5cycpCisgICAgICAgICMgTmFtZTIgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0N1c3RvbSBLZXlzJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ0tleXMnKQorICAgICAgICB1c2Vya2V5cy5yZW1vdmVfc2VjdGlvbignQ3VzdG9tIEtleXMnKQorCisKK2NsYXNzIFdhcm5pbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dhcm4oc2VsZik6CisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBjb25maWcuX3dhcm5lZCA9IHNldCgpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5Jyl9KQorICAgICAgICBFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJ3dhcm5pbmcnKydcbicpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBjb25maWcuX3dhcm4oJ3dhcm4yJywgJ3llaycpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5JyksICgnd2FybjInLCd5ZWsnKX0pCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnd2FybjInKydcbicpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2hlbHAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0ZjhlZC4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0iIiJVbml0dGVzdHMgZm9yIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQiIiIKLWltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gsIEVudHJ5Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ0hlbHBTb3VyY2VFZGl0IGFzIGhlbHBfZGlhbG9nX21vZHVsZQotCi1oZWxwX2RpYWxvZyA9IGhlbHBfZGlhbG9nX21vZHVsZS5HZXRIZWxwU291cmNlRGlhbG9nCi0KLQotY2xhc3MgRHVtbXlfaGVscF9kaWFsb2c6Ci0gICAgIyBNb2NrIGZvciB0ZXN0aW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvZiBoZWxwX2RpYWxvZwotICAgIG1lbnVfb2sgPSBoZWxwX2RpYWxvZy5tZW51X29rCi0gICAgcGF0aF9vayA9IGhlbHBfZGlhbG9nLnBhdGhfb2sKLSAgICBvayA9IGhlbHBfZGlhbG9nLm9rCi0gICAgY2FuY2VsID0gaGVscF9kaWFsb2cuY2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIG1lbnUgPSBWYXIoKQotICAgIGVudHJ5TWVudSA9IEVudHJ5KCkKLSAgICBwYXRoID0gVmFyKCkKLSAgICBlbnRyeVBhdGggPSBFbnRyeSgpCi0gICAgcmVzdWx0ID0gTm9uZQotICAgIGRlc3Ryb3llZCA9IEZhbHNlCi0KLSAgICBkZWYgZGVzdHJveShzZWxmKToKLSAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBUcnVlCi0KLQotIyBtZW51X29rIGFuZCBwYXRoX29rIGNhbGwgTWJveC5zaG93ZXJyb3IgaWYgbWVudSBhbmQgcGF0aCBhcmUgbm90IG9rLgotb3JpZ19tYm94ID0gaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveAotc2hvd2Vycm9yID0gTWJveC5zaG93ZXJyb3IKLQotCi1jbGFzcyBDb25maWdIZWxwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfaGVscF9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGhlbHBfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX21lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCcnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLm1lbnVfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdNZW51IEl0ZW0gRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfbG9uZ19tZW51KHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVsbG8nICogMTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cubWVudV9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ01lbnUgSXRlbSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xvbmcnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfbWVudShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubWVudS5zZXQoJ2hlbHAnKQotICAgICAgICBzaG93ZXJyb3IudGl0bGUgPSAnTm8gRXJyb3InICAjIHNob3VsZCBub3QgYmUgY2FsbGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5tZW51X29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTm8gRXJyb3InKQotCi0gICAgZGVmIHRlc3RfYmxhbmtfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2ZpbGVfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2Zvb2JhcicgKiAxMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF91cmxfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ3d3LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnaHR0LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVscCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCdodHRwczovL2RvY3MucHl0aG9uLm9yZycpCi0gICAgICAgIHNlbGYuZGlhbG9nLm9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICgnaGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLSAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLmNhbmNlbCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cucmVzdWx0LCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfa2V5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTNmMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpAQCAtMCwwICsxLDMzIEBACisnJycgVGVzdCBpZGxlbGliLmNvbmZpZ19rZXkuCisKK0NvdmVyYWdlOiA1NiUgZnJvbSBjcmVhdGluZyBhbmQgY2xvc2luZyBkaWFsb2cuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnX2tleQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAorCisKK2NsYXNzIEdldEtleXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGUoKSAgIyBTdG9wICJjYW4ndCBydW4gZXZlbnQgY29tbWFuZCIgd2FybmluZy4KKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBkaWEgPSBjb25maWdfa2V5LkdldEtleXNEaWFsb2coCisgICAgICAgICAgICBzZWxmLnJvb3QsICd0ZXN0JywgJzw8VGVzdD4+JywgWyc8S2V5LUYxMj4nXSwgX3V0ZXN0PVRydWUpCisgICAgICAgIGRpYS5DYW5jZWwoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19uYW1lLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTcyYjkuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0iIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIiIiCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyLCBNYm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIGFzIG5hbWVfZGlhbG9nX21vZHVsZQotCi1uYW1lX2RpYWxvZyA9IG5hbWVfZGlhbG9nX21vZHVsZS5HZXRDZmdTZWN0aW9uTmFtZURpYWxvZwotCi1jbGFzcyBEdW1teV9uYW1lX2RpYWxvZzoKLSAgICAjIE1vY2sgZm9yIHRlc3RpbmcgdGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIG5hbWVfZGlhbG9nCi0gICAgbmFtZV9vayA9IG5hbWVfZGlhbG9nLm5hbWVfb2sKLSAgICBPayA9IG5hbWVfZGlhbG9nLk9rCi0gICAgQ2FuY2VsID0gbmFtZV9kaWFsb2cuQ2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIHVzZWRfbmFtZXMgPSBbJ3VzZWQnXQotICAgIG5hbWUgPSBWYXIoKQotICAgIHJlc3VsdCA9IE5vbmUKLSAgICBkZXN0cm95ZWQgPSBGYWxzZQotICAgIGRlZiBkZXN0cm95KHNlbGYpOgotICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKLQotIyBuYW1lX29rIGNhbGxzIE1ib3guc2hvd2Vycm9yIGlmIG5hbWUgaXMgbm90IG9rCi1vcmlnX21ib3ggPSBuYW1lX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94Ci1zaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgotCi1jbGFzcyBDb25maWdOYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfbmFtZV9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgbmFtZV9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIG5hbWVfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5uYW1lX29rKCksICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05hbWUgRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfdXNlZF9uYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgndXNlZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdOYW1lIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9sb25nX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCdnb29kJyo4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTmFtZSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3RvbyBsb25nJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9nb29kX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgIGdvb2QgJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJ2dvb2QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgnZ29vZCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLk9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICdnb29kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmRlc3Ryb3llZCkKLQotICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5kaWFsb2cuQ2FuY2VsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICcnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weQppbmRleCA1YzA5NzkwLi43MGJkMTRlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5CkBAIC0xLDE0ICsxLDEzIEBACi0nJydUZXN0IGlkbGVsaWIuY29uZmlnRGlhbG9nLgorJycnVGVzdCBpZGxlbGliLmNvbmZpZ2RpYWxvZy4KIAogQ292ZXJhZ2U6IDQ2JSBqdXN0IGJ5IGNyZWF0aW5nIGRpYWxvZy4KIFRoZSBvdGhlciBoYWxmIGlzIGNvZGUgZm9yIHdvcmtpbmcgd2l0aCB1c2VyIGN1c3RvbWl6YXRpb25zLgogJycnCi1mcm9tIGlkbGVsaWIuY29uZmlnRGlhbG9nIGltcG9ydCBDb25maWdEaWFsb2cgICMgYWx3YXlzIHRlc3QgaW1wb3J0Citmcm9tIGlkbGVsaWIuY29uZmlnZGlhbG9nIGltcG9ydCBDb25maWdEaWFsb2cgICMgYWx3YXlzIHRlc3QgaW1wb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogZnJvbSB0a2ludGVyIGltcG9ydCBUawogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQgYXMgbWFjb3N4CiAKIGNsYXNzIENvbmZpZ0RpYWxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNiw3ICsxNSw2IEBACiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLnJvb3QgPSBUaygpCiAgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKLSAgICAgICAgbWFjb3N4Ll9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMoY2xzLnJvb3QpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgpAQCAtMjQsNyArMjIsNyBAQAogICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKICAgICAgICAgZGVsIGNscy5yb290CiAKLSAgICBkZWYgdGVzdF9kaWFsb2coc2VsZik6CisgICAgZGVmIHRlc3RfY29uZmlnZGlhbG9nKHNlbGYpOgogICAgICAgICBkID0gQ29uZmlnRGlhbG9nKHNlbGYucm9vdCwgJ1Rlc3QnLCBfdXRlc3Q9VHJ1ZSkKICAgICAgICAgZC5yZW1vdmVfdmFyX2NhbGxiYWNrcygpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVidWdnZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNiYTlhNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5CkBAIC0wLDAgKzEsMjkgQEAKKycnJyBUZXN0IGlkbGVsaWIuZGVidWdnZXIuCisKK0NvdmVyYWdlOiAxOSUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaworCisKK2NsYXNzIE5hbWVTcGFjZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIGRlYnVnZ2VyLk5hbWVzcGFjZVZpZXdlcihzZWxmLnJvb3QsICdUZXN0JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkKaW5kZXggMWYwYmFhOS4uODU2MjRmYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlbGVnYXRvci5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKIAogY2xhc3MgRGVsZWdhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKaW5kZXggYTI1OGUyOS4uMTdlYjI1YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKQEAgLTUsOCArNSw5IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogaW1wb3J0IHRraW50ZXIgYXMgdGsKK2Zyb20gdGtpbnRlciBpbXBvcnQgdHRrCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCiAKIGNsYXNzIFBhc3RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVGVzdCBwYXN0aW5nIGludG8gd2lkZ2V0cyB0aGF0IGFsbG93IHBhc3RpbmcuCkBAIC0xNiwxNyArMTcsMTggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMucm9vdCA9IHJvb3QgPSB0ay5UaygpCi0gICAgICAgIHJvb3Qud2l0aGRyYXcoKQotICAgICAgICBQeVNoZWxsLmZpeF94MTFfcGFzdGUocm9vdCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBweXNoZWxsLmZpeF94MTFfcGFzdGUocm9vdCkKICAgICAgICAgY2xzLnRleHQgPSB0ay5UZXh0KHJvb3QpCiAgICAgICAgIGNscy5lbnRyeSA9IHRrLkVudHJ5KHJvb3QpCisgICAgICAgIGNscy50ZW50cnkgPSB0dGsuRW50cnkocm9vdCkKICAgICAgICAgY2xzLnNwaW4gPSB0ay5TcGluYm94KHJvb3QpCiAgICAgICAgIHJvb3QuY2xpcGJvYXJkX2NsZWFyKCkKICAgICAgICAgcm9vdC5jbGlwYm9hcmRfYXBwZW5kKCd0d28nKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgZGVsIGNscy50ZXh0LCBjbHMuZW50cnksIGNscy5zcGluCisgICAgICAgIGRlbCBjbHMudGV4dCwgY2xzLmVudHJ5LCBjbHMudGVudHJ5CiAgICAgICAgIGNscy5yb290LmNsaXBib2FyZF9jbGVhcigpCiAgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQogICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKQEAgLTQ0LDE2ICs0NiwxNiBAQAogCiAgICAgZGVmIHRlc3RfcGFzdGVfZW50cnkoc2VsZik6CiAgICAgICAgICJUZXN0IHBhc3RpbmcgaW50byBhbiBlbnRyeSB3aXRoIGFuZCB3aXRob3V0IGEgc2VsZWN0aW9uLiIKLSAgICAgICAgIyBPbiAzLjYsIGdlbmVyYXRlZCA8PFBhc3RlPj4gZmFpbHMgd2l0aG91dCBlbXB0eSBzZWxlY3QgcmFuZ2UKLSAgICAgICAgIyBmb3IgJ25vIHNlbGVjdGlvbicuICBMaXZlIHdpZGdldCB3b3JrcyBmaW5lLgotICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnkKLSAgICAgICAgZm9yIGVuZCwgYW5zIGluICgwLCAnb25ldHdvJyksICgnZW5kJywgJ3R3bycpOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW50cnk9ZW50cnksIGVuZD1lbmQsIGFucz1hbnMpOgotICAgICAgICAgICAgICAgIGVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKLSAgICAgICAgICAgICAgICBlbnRyeS5pbnNlcnQoMCwgJ29uZScpCi0gICAgICAgICAgICAgICAgZW50cnkuc2VsZWN0X3JhbmdlKDAsIGVuZCkgICMgc2VlIG5vdGUKLSAgICAgICAgICAgICAgICBlbnRyeS5ldmVudF9nZW5lcmF0ZSgnPDxQYXN0ZT4+JykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmdldCgpLCBhbnMpCisgICAgICAgICMgR2VuZXJhdGVkIDw8UGFzdGU+PiBmYWlscyBmb3IgdGsgZW50cnkgd2l0aG91dCBlbXB0eSBzZWxlY3QKKyAgICAgICAgIyByYW5nZSBmb3IgJ25vIHNlbGVjdGlvbicuICBMaXZlIHdpZGdldCB3b3JrcyBmaW5lLgorICAgICAgICBmb3IgZW50cnkgaW4gc2VsZi5lbnRyeSwgc2VsZi50ZW50cnk6CisgICAgICAgICAgICBmb3IgZW5kLCBhbnMgaW4gKDAsICdvbmV0d28nKSwgKCdlbmQnLCAndHdvJyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW50cnk9ZW50cnksIGVuZD1lbmQsIGFucz1hbnMpOgorICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5Lmluc2VydCgwLCAnb25lJykKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuc2VsZWN0X3JhbmdlKDAsIGVuZCkKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuZXZlbnRfZ2VuZXJhdGUoJzw8UGFzdGU+PicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuZ2V0KCksIGFucykKIAogICAgIGRlZiB0ZXN0X3Bhc3RlX3NwaW4oc2VsZik6CiAgICAgICAgICJUZXN0IHBhc3RpbmcgaW50byBhIHNwaW5ib3ggd2l0aCBhbmQgd2l0aG91dCBhIHNlbGVjdGlvbi4iCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkKaW5kZXggYTMxZDI2ZC4uZTlkMjlkNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRvci5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogCiBjbGFzcyBFZGl0b3JfZnVuY190ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5CmluZGV4IDBkOGZmMGQuLjZiNTRjMTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZ3JlcC5weQpAQCAtMSw1ICsxLDUgQEAKICIiIiAhQ2hhbmdpbmcgdGhpcyBsaW5lIHdpbGwgYnJlYWsgVGVzdF9maW5kZmlsZS50ZXN0X2ZvdW5kIQotTm9uLWd1aSB1bml0IHRlc3RzIGZvciBpZGxlbGliLkdyZXBEaWFsb2cgbWV0aG9kcy4KK05vbi1ndWkgdW5pdCB0ZXN0cyBmb3IgZ3JlcC5HcmVwRGlhbG9nIG1ldGhvZHMuCiBkdW1teV9jb21tYW5kIGNhbGxzIGdyZXBfaXQgY2FsbHMgZmluZGZpbGVzLgogQW4gZXhjZXB0aW9uIHJhaXNlZCBpbiBvbmUgbWV0aG9kIHdpbGwgZmFpbCBjYWxsZXJzLgogT3RoZXJ3aXNlLCB0ZXN0cyBhcmUgbW9zdGx5IGluZGVwZW5kZW50LgpAQCAtOCw3ICs4LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKLWZyb20gaWRsZWxpYi5HcmVwRGlhbG9nIGltcG9ydCBHcmVwRGlhbG9nCitmcm9tIGlkbGVsaWIuZ3JlcCBpbXBvcnQgR3JlcERpYWxvZwogaW1wb3J0IHJlCiAKIGNsYXNzIER1bW15X3NlYXJjaGVuZ2luZToKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzRdLnN0YXJ0c3dpdGgoJyhIaW50OicpKQogCiBjbGFzcyBEZWZhdWx0X2NvbW1hbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRvIHdyaXRlIHRoaXMsIG1vZGUgT3V0cHV0V2luZG93IGltcG9ydCB0byB0b3Agb2YgR3JlcERpYWxvZworICAgICMgVG8gd3JpdGUgdGhpcywgbW92ZSBvdXR3aW4gaW1wb3J0IHRvIHRvcCBvZiBHcmVwRGlhbG9nCiAgICAgIyBzbyBpdCBjYW4gYmUgcmVwbGFjZWQgYnkgY2FwdHVyZWRfc3Rkb3V0IGluIGNsYXNzIHNldHVwL3RlYXJkb3duLgogICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2OGUyMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkKQEAgLTAsMCArMSwzNCBAQAorJycnVGVzdCBpZGxlbGliLmhlbHAuCisKK0NvdmVyYWdlOiA4NyUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBqb2luCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKKworY2xhc3MgSGVscEZyYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICAiQnkgaXRzZWxmLCB0aGlzIHRlc3RzIHRoYXQgZmlsZSBwYXJzZWQgd2l0aG91dCBleGNlcHRpb24uIgorICAgICAgICBjbHMucm9vdCA9IHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBoZWxwZmlsZSA9IGpvaW4oZGlybmFtZShkaXJuYW1lKGFic3BhdGgoX19maWxlX18pKSksICdoZWxwLmh0bWwnKQorICAgICAgICBjbHMuZnJhbWUgPSBoZWxwLkhlbHBGcmFtZShyb290LCBoZWxwZmlsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGRlbCBjbHMuZnJhbWUKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2xpbmUxKHNlbGYpOgorICAgICAgICB0ZXh0ID0gc2VsZi5mcmFtZS50ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5nZXQoJzEuMCcsICcxLmVuZCcpLCAnIElETEUgJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkKaW5kZXggZDBhMDEyNy4uODQzZWZiOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwX2Fib3V0LnB5CkBAIC0yLDEwICsyLDEwIEBACiAKIENvdmVyYWdlOgogJycnCi1mcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nIGFzIGhlbHBfYWJvdXQKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcgYXMgdGV4dHZpZXcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaGVscF9hYm91dAorZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAorZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94X2Z1bmMKIGltcG9ydCB1bml0dGVzdAogCiBBYm91dCA9IGhlbHBfYWJvdXQuQWJvdXREaWFsb2cKQEAgLTE5LDMzICsxOSwzMyBAQAogCiAKIGNsYXNzIERpc3BsYXlGaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIlRlc3QgdGhhdCAudHh0IGZpbGVzIGFyZSBmb3VuZCBhbmQgcHJvcGVybHkgZGVjb2RlZC4iCiAgICAgZGlhbG9nID0gRHVtbXlfYWJvdXRfZGlhbG9nKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5vcmlnX21ib3ggPSB0ZXh0dmlldy50a01lc3NhZ2VCb3gKKyAgICAgICAgY2xzLm9yaWdfZXJyb3IgPSB0ZXh0dmlldy5zaG93ZXJyb3IKICAgICAgICAgY2xzLm9yaWdfdmlldyA9IHRleHR2aWV3LnZpZXdfdGV4dAotICAgICAgICBjbHMubWJveCA9IE1ib3goKQorICAgICAgICBjbHMuZXJyb3IgPSBNYm94X2Z1bmMoKQogICAgICAgICBjbHMudmlldyA9IEZ1bmMoKQotICAgICAgICB0ZXh0dmlldy50a01lc3NhZ2VCb3ggPSBjbHMubWJveAorICAgICAgICB0ZXh0dmlldy5zaG93ZXJyb3IgPSBjbHMuZXJyb3IKICAgICAgICAgdGV4dHZpZXcudmlld190ZXh0ID0gY2xzLnZpZXcKICAgICAgICAgY2xzLkFib3V0ID0gRHVtbXlfYWJvdXRfZGlhbG9nKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIHRleHR2aWV3LnRrTWVzc2FnZUJveCA9IGNscy5vcmlnX21ib3gKKyAgICAgICAgdGV4dHZpZXcuc2hvd2Vycm9yID0gY2xzLm9yaWdfZXJyb3IKICAgICAgICAgdGV4dHZpZXcudmlld190ZXh0ID0gY2xzLm9yaWdfdmlldwogCiAgICAgZGVmIHRlc3RfZmlsZV9pc3BsYXkoc2VsZik6CiAgICAgICAgIGZvciBoYW5kbGVyIGluIChzZWxmLmRpYWxvZy5pZGxlX2NyZWRpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpYWxvZy5pZGxlX3JlYWRtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlhbG9nLmlkbGVfbmV3cyk6Ci0gICAgICAgICAgICBzZWxmLm1ib3guc2hvd2Vycm9yLm1lc3NhZ2UgPSAnJworICAgICAgICAgICAgc2VsZi5lcnJvci5tZXNzYWdlID0gJycKICAgICAgICAgICAgIHNlbGYudmlldy5jYWxsZWQgPSBGYWxzZQotICAgICAgICAgICAgaGFuZGxlcigpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubWJveC5zaG93ZXJyb3IubWVzc2FnZSwgJycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudmlldy5jYWxsZWQsIFRydWUpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChoYW5kbGVyPWhhbmRsZXIpOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5lcnJvci5tZXNzYWdlLCAnJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudmlldy5jYWxsZWQsIFRydWUpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lkbGVoaXN0b3J5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQppbmRleCA2ZTdjNmMzLi5iMjc4MDEwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oaXN0b3J5LnB5CkBAIC00LDggKzQsOCBAQAogaW1wb3J0IHRraW50ZXIgYXMgdGsKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCBhcyB0a1RleHQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dCBhcyBta1RleHQKLWZyb20gaWRsZWxpYi5JZGxlSGlzdG9yeSBpbXBvcnQgSGlzdG9yeQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuaGlzdG9yeSBpbXBvcnQgSGlzdG9yeQorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogbGluZTEgPSAnYSA9IDcnCiBsaW5lMiA9ICdiID0gYScKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKaW5kZXggOWNlM2YyYy4uNzNjODI4MSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKQEAgLTEsOSArMSw5IEBACi0iIiJVbml0dGVzdCBmb3IgaWRsZWxpYi5IeXBlclBhcnNlciIiIgorIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuaHlwZXJwYXJzZXIucHkuIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Ci1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKIAogY2xhc3MgRHVtbXlFZGl0d2luOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pb21lbnUucHkKaW5kZXggZTBlM2I5OC4uNjViZjU5MyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW8KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQc2V1ZG9JbnB1dEZpbGUsIFBzZXVkb091dHB1dEZpbGUKKworZnJvbSBpZGxlbGliLnJ1biBpbXBvcnQgUHNldWRvSW5wdXRGaWxlLCBQc2V1ZG9PdXRwdXRGaWxlCiAKIAogY2xhc3MgUyhzdHIpOgpAQCAtMjMwLDQgKzIzMSw0IEBACiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZTc1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9tYWNvc3gucHkKQEAgLTAsMCArMSwxMDMgQEAKKycnJ1Rlc3QgaWRsZWxpYi5tYWNvc3gucHkuCisKK0NvdmVyYWdlOiA3MSUgb24gV2luZG93cy4KKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworaW1wb3J0IHN5cworaW1wb3J0IHRraW50ZXIgYXMgdGsKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sgYXMgbW9jaworZnJvbSBpZGxlbGliLmZpbGVsaXN0IGltcG9ydCBGaWxlTGlzdAorCittYWN0eXBlcyA9IHsnY2FyYm9uJywgJ2NvY29hJywgJ3hxdWFydHonfQorbm9udHlwZXMgPSB7J290aGVyJ30KK2FsbHR5cGVzID0gbWFjdHlwZXMgfCBub250eXBlcworCisKK2NsYXNzIEluaXRUa3R5cGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBfaW5pdF90a190eXBlLiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IHRrLlRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBjbHMub3JpZ19wbGF0Zm9ybSA9IG1hY29zeC5wbGF0Zm9ybQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKyAgICAgICAgbWFjb3N4LnBsYXRmb3JtID0gY2xzLm9yaWdfcGxhdGZvcm0KKworICAgIGRlZiB0ZXN0X2luaXRfc2V0c190a3R5cGUoc2VsZik6CisgICAgICAgICJUZXN0IHRoYXQgX2luaXRfdGtfdHlwZSBzZXRzIF90a190eXBlIGFjY29yZGluZyB0byBwbGF0Zm9ybS4iCisgICAgICAgIGZvciBwbGF0Zm9ybSwgdHlwZXMgaW4gKCdkYXJ3aW4nLCBhbGx0eXBlcyksICgnb3RoZXInLCBub250eXBlcyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwbGF0Zm9ybT1wbGF0Zm9ybSk6CisgICAgICAgICAgICAgICAgbWFjb3N4LnBsYXRmb3JtID0gcGxhdGZvcm0KKyAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPT0gTm9uZQorICAgICAgICAgICAgICAgIG1hY29zeC5faW5pdF90a190eXBlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1hY29zeC5fdGtfdHlwZSwgdHlwZXMpCisKKworY2xhc3MgSXNUeXBlVGtUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBlYWNoIG9mIHRoZSBmb3VyIGlzVHlwZVRrIHByZWRlY2F0ZXMuIgorICAgIGlzZnVuY3MgPSAoKG1hY29zeC5pc0FxdWFUaywgKCdjYXJib24nLCAnY29jb2EnKSksCisgICAgICAgICAgICAgICAobWFjb3N4LmlzQ2FyYm9uVGssICgnY2FyYm9uJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc0NvY29hVGssICgnY29jb2EnKSksCisgICAgICAgICAgICAgICAobWFjb3N4LmlzWFF1YXJ0eiwgKCd4cXVhcnR6JykpLAorICAgICAgICAgICAgICAgKQorCisgICAgQG1vY2sucGF0Y2goJ2lkbGVsaWIubWFjb3N4Ll9pbml0X3RrX3R5cGUnKQorICAgIGRlZiB0ZXN0X2lzX2NhbGxzX2luaXQoc2VsZiwgbW9ja2luaXQpOgorICAgICAgICAiVGVzdCB0aGF0IGVhY2ggaXNUeXBlVGsgY2FsbHMgX2luaXRfdGtfdHlwZSB3aGVuIF90a190eXBlIGlzIE5vbmUuIgorICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSBOb25lCisgICAgICAgIGZvciBmdW5jLCB3aGVudHJ1ZSBpbiBzZWxmLmlzZnVuY3M6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWZ1bmMpOgorICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NraW5pdC5jYWxsZWQpCisgICAgICAgICAgICAgICAgbW9ja2luaXQucmVzZXRfbW9jaygpCisKKyAgICBkZWYgdGVzdF9pc2Z1bmNzKHNlbGYpOgorICAgICAgICAiVGVzdCB0aGF0IGVhY2ggaXNUeXBlVGsgcmV0dXJuIGNvcnJlY3QgYm9vbC4iCisgICAgICAgIGZvciBmdW5jLCB3aGVudHJ1ZSBpbiBzZWxmLmlzZnVuY3M6CisgICAgICAgICAgICBmb3IgdGt0eXBlIGluIGFsbHR5cGVzOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYywgd2hlbnRydWU9d2hlbnRydWUsIHRrdHlwZT10a3R5cGUpOgorICAgICAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSB0a3R5cGUKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYuYXNzZXJ0VHJ1ZSBpZiB0a3R5cGUgaW4gd2hlbnRydWUgZWxzZSBzZWxmLmFzc2VydEZhbHNlKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuYygpKQorCisKK2NsYXNzIFNldHVwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3Qgc2V0dXBBcHAuIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gdGsuVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGVfaWRsZXRhc2tzKCkKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgQG1vY2sucGF0Y2goJ2lkbGVsaWIubWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUnKSAgIzI3MzEyCisgICAgZGVmIHRlc3Rfc2V0dXBhcHAoc2VsZiwgb3ZlcnJpZGVSb290TWVudSk6CisgICAgICAgICJDYWxsIHNldHVwQXBwIHdpdGggZWFjaCBwb3NzaWJsZSBncmFwaGljcyB0eXBlLiIKKyAgICAgICAgcm9vdCA9IHNlbGYucm9vdAorICAgICAgICBmbGlzdCA9IEZpbGVMaXN0KHJvb3QpCisgICAgICAgIGZvciB0a3R5cGUgaW4gYWxsdHlwZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0a3R5cGU9dGt0eXBlKToKKyAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSB0a3R5cGUKKyAgICAgICAgICAgICAgICBtYWNvc3guc2V0dXBBcHAocm9vdCwgZmxpc3QpCisgICAgICAgICAgICAgICAgaWYgdGt0eXBlIGluICgnY2FyYm9uJywgJ2NvY29hJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdmVycmlkZVJvb3RNZW51LmNhbGxlZCkKKyAgICAgICAgICAgICAgICBvdmVycmlkZVJvb3RNZW51LnJlc2V0X21vY2soKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2Zvcm1hdHBhcmFncmFwaC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQppbmRleCBiNmViMmYzLi5iYTM1MGM5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyYWdyYXBoLnB5CkBAIC0xLDcgKzEsNyBAQAotIyBUZXN0IHRoZSBmdW5jdGlvbnMgYW5kIG1haW4gY2xhc3MgbWV0aG9kIG9mIEZvcm1hdFBhcmFncmFwaC5weQorIyBUZXN0IHRoZSBmdW5jdGlvbnMgYW5kIG1haW4gY2xhc3MgbWV0aG9kIG9mIHBhcmFncmFwaC5weQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IEZvcm1hdFBhcmFncmFwaCBhcyBmcAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIgaW1wb3J0IHBhcmFncmFwaCBhcyBmcAorZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIApAQCAtMzgsNyArMzgsNyBAQAogCiAKIGNsYXNzIEZpbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0IHRoZSBmaW5kX3BhcmFncmFwaCBmdW5jdGlvbiBpbiBGb3JtYXRQYXJhZ3JhcGguCisgICAgIiIiVGVzdCB0aGUgZmluZF9wYXJhZ3JhcGggZnVuY3Rpb24gaW4gcGFyYWdyYXBoIG1vZHVsZS4KIAogICAgIFVzaW5nIHRoZSBydW5jYXNlKCkgZnVuY3Rpb24sIGZpbmRfcGFyYWdyYXBoKCkgaXMgY2FsbGVkIHdpdGggJ21hcmsnIHNldCBhdAogICAgIG11bHRpcGxlIGluZGV4ZXMgYmVmb3JlIGFuZCBpbnNpZGUgdGhlIHRlc3QgcGFyYWdyYXBoLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkKaW5kZXggOTVjYzIyYy4uMDUxZjdlYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJlbm1hdGNoLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBpZGxlbGliLlBhcmVuTWF0Y2guCisnJydUZXN0IGlkbGVsaWIucGFyZW5tYXRjaC4KIAogVGhpcyBtdXN0IGN1cnJlbnRseSBiZSBhIGd1aSB0ZXN0IGJlY2F1c2UgUGFyZW5NYXRjaCBtZXRob2RzIHVzZQogc2V2ZXJhbCB0ZXh0IG1ldGhvZHMgbm90IGRlZmluZWQgb24gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ay5UZXh0LgpAQCAtOSw3ICs5LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0Ci1mcm9tIGlkbGVsaWIuUGFyZW5NYXRjaCBpbXBvcnQgUGFyZW5NYXRjaAorZnJvbSBpZGxlbGliLnBhcmVubWF0Y2ggaW1wb3J0IFBhcmVuTWF0Y2gKIAogY2xhc3MgRHVtbXlFZGl0d2luOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKQEAgLTM4LDEyICszOCwxNyBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi50ZXh0LmRlbGV0ZSgnMS4wJywgJ2VuZCcpCiAKKyAgICBkZWYgZ2V0X3BhcmVubWF0Y2goc2VsZik6CisgICAgICAgIHBtID0gUGFyZW5NYXRjaChzZWxmLmVkaXR3aW4pCisgICAgICAgIHBtLmJlbGwgPSBsYW1iZGE6IE5vbmUKKyAgICAgICAgcmV0dXJuIHBtCisKICAgICBkZWYgdGVzdF9wYXJlbl9leHByZXNzaW9uKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgVGVzdCBQYXJlbk1hdGNoIHdpdGggJ2V4cHJlc3Npb24nIHN0eWxlLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5zZXRfc3R5bGUoJ2V4cHJlc3Npb24nKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnZGVmIGZvb2JhcihhLCBiJykKQEAgLTY2LDcgKzcxLDcgQEAKICAgICAgICAgVGVzdCBQYXJlbk1hdGNoIHdpdGggJ2RlZmF1bHQnIHN0eWxlLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5zZXRfc3R5bGUoJ2RlZmF1bHQnKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnZGVmIGZvb2JhcihhLCBiJykKQEAgLTg2LDcgKzkxLDcgQEAKICAgICAgICAgVGhlc2UgY2FzZXMgZm9yY2UgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbmQgYWx0ZXJuYXRlIHBhdGhzLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnIyB0aGlzIGlzIGEgY29tbWVuKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBtLnBhcmVuX2Nsb3NlZF9ldmVudCgnZXZlbnQnKSkKQEAgLTk5LDcgKzEwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBtLnBhcmVuX2Nsb3NlZF9ldmVudCgnZXZlbnQnKSkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXN0b3JlX3RpbWVyKHNlbGYpOgotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5yZXN0b3JlX2V2ZW50ID0gTW9jaygpCiAgICAgICAgIHBtLmhhbmRsZV9yZXN0b3JlX3RpbWVyKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwbS5yZXN0b3JlX2V2ZW50LmNhbGxlZCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKaW5kZXggYWZiODg2Zi4uODEzY2JjYyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKQEAgLTIsMTMgKzIsMTMgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGlkbGVsaWIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUGF0aEJyb3dzZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcGF0aGJyb3dzZXIKIAogY2xhc3MgUGF0aEJyb3dzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X0RpckJyb3dzZXJUcmVlSXRlbShzZWxmKToKICAgICAgICAgIyBJc3N1ZTE2MjI2IC0gbWFrZSBzdXJlIHRoYXQgZ2V0dGluZyBhIHN1Ymxpc3Qgd29ya3MKLSAgICAgICAgZCA9IFBhdGhCcm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSgnJykKKyAgICAgICAgZCA9IHBhdGhicm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSgnJykKICAgICAgICAgZC5HZXRTdWJMaXN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZC5HZXRUZXh0KCkpCiAKQEAgLTE3LDExICsxNywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuaXNwYWNrYWdlZGlyKGRpciArICcvSWNvbnMnKSwgRmFsc2UpCiAKICAgICBkZWYgdGVzdF9QYXRoQnJvd3NlclRyZWVJdGVtKHNlbGYpOgotICAgICAgICBwID0gUGF0aEJyb3dzZXIuUGF0aEJyb3dzZXJUcmVlSXRlbSgpCisgICAgICAgIHAgPSBwYXRoYnJvd3Nlci5QYXRoQnJvd3NlclRyZWVJdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLkdldFRleHQoKSwgJ3N5cy5wYXRoJykKICAgICAgICAgc3ViID0gcC5HZXRTdWJMaXN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3ViKSwgbGVuKHN5cy5wYXRoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHN1YlswXSksIFBhdGhCcm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHN1YlswXSksIHBhdGhicm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkKaW5kZXggNGMwYTdhZC4uNTczYjlhMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wZXJjb2xhdG9yLnB5CkBAIC0xLDEwICsxLDEwIEBACi0nJydUZXN0IFBlcmNvbGF0b3InJycKKycnJ1Rlc3QgcGVyY29sYXRvci5weS4nJycKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0a2ludGVyIGltcG9ydCBUZXh0LCBUaywgRU5ECi1mcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvciwgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvciwgRGVsZWdhdG9yCiAKIAogY2xhc3MgTXlGaWx0ZXIoRGVsZWdhdG9yKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcXVlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhZjhlYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5CkBAIC0wLDAgKzEsMzUzIEBACisiIiJUZXN0IGlkbGVsaWIucXVlcnkuCisKK05vbi1ndWkgdGVzdHMgZm9yIFF1ZXJ5LCBTZWN0aW9uTmFtZSwgTW9kdWxlTmFtZSwgYW5kIEhlbHBTb3VyY2UgdXNlCitkdW1teSB2ZXJzaW9ucyB0aGF0IGV4dHJhY3QgdGhlIG5vbi1ndWkgbWV0aG9kcyBhbmQgYWRkIG90aGVyIG5lZWRlZAorYXR0cmlidXRlcy4gIEdVSSB0ZXN0cyBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgZWFjaCBjbGFzcyBhbmQgc2ltdWxhdGUKK2VudHJpZXMgYW5kIGJ1dHRvbiBjbGlja3MuICBTdWJjbGFzcyB0ZXN0cyBvbmx5IHRhcmdldCB0aGUgbmV3IGNvZGUgaW4KK3RoZSBzdWJjbGFzcyBkZWZpbml0aW9uLgorCitUaGUgYXBwZWFyYW5jZSBvZiB0aGUgd2lkZ2V0cyBpcyBjaGVja2VkIGJ5IHRoZSBRdWVyeSBhbmQKK0hlbHBTb3VyY2UgaHRlc3RzLiAgVGhlc2UgYXJlIHJ1biBieSBydW5uaW5nIHF1ZXJ5LnB5LgorCitDb3ZlcmFnZTogOTQlICgxMDAlIGZvciBRdWVyeSBhbmQgU2VjdGlvbk5hbWUpLgorNiBvZiA4IG1pc3NpbmcgYXJlIE1vZHVsZU5hbWUgZXhjZXB0aW9ucyBJIGRvbid0IGtub3cgaG93IHRvIHRyaWdnZXIuCisiIiIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworaW1wb3J0IHN5cworZnJvbSB0a2ludGVyIGltcG9ydCBUaworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhcgorZnJvbSBpZGxlbGliIGltcG9ydCBxdWVyeQorCisKKyMgTk9OLUdVSSBURVNUUworCitjbGFzcyBRdWVyeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IFF1ZXJ5IGJhc2UgY2xhc3MuIgorCisgICAgY2xhc3MgRHVtbXlfUXVlcnk6CisgICAgICAgICMgVGVzdCB0aGUgZm9sbG93aW5nIFF1ZXJ5IG1ldGhvZHMuCisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuUXVlcnkuZW50cnlfb2sKKyAgICAgICAgb2sgPSBxdWVyeS5RdWVyeS5vaworICAgICAgICBjYW5jZWwgPSBxdWVyeS5RdWVyeS5jYW5jZWwKKyAgICAgICAgIyBBZGQgYXR0cmlidXRlcyBhbmQgaW5pdGlhbGl6YXRpb24gbmVlZGVkIGZvciB0ZXN0cy4KKyAgICAgICAgZW50cnkgPSBWYXIoKQorICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9lbnRyeSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5LnNldChkdW1teV9lbnRyeSkKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuZGVzdHJveWVkID0gRmFsc2UKKyAgICAgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9IG1lc3NhZ2UKKyAgICAgICAgZGVmIGRlc3Ryb3koc2VsZik6CisgICAgICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2JsYW5rIGxpbmUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2dvb2Qoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJyAgZ29vZCAnKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5X29rKCksICdnb29kJykKKyAgICAgICAgRXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorICAgICAgICBFcXVhbChkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSwgJycpCisKKyAgICBkZWYgdGVzdF9va19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnJykKKyAgICAgICAgZGlhbG9nLmVudHJ5LmZvY3VzX3NldCA9IG1vY2suTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLm9rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZW50cnkuZm9jdXNfc2V0LmNhbGxlZCkKKyAgICAgICAgZGVsIGRpYWxvZy5lbnRyeS5mb2N1c19zZXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBGYWxzZSkpCisKKyAgICBkZWYgdGVzdF9va19nb29kKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCdnb29kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cub2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksICgnZ29vZCcsIFRydWUpKQorCisgICAgZGVmIHRlc3RfY2FuY2VsKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCdkb2VzIG5vdCBtYXR0ZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5jYW5jZWwoKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBUcnVlKSkKKworCitjbGFzcyBTZWN0aW9uTmFtZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IFNlY3Rpb25OYW1lIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X1NlY3Rpb25OYW1lOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LlNlY3Rpb25OYW1lLmVudHJ5X29rICAjIEZ1bmN0aW9uIGJlaW5nIHRlc3RlZC4KKyAgICAgICAgdXNlZF9uYW1lcyA9IFsndXNlZCddCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgZGVmIHRlc3RfYmxhbmtfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gbmFtZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfdXNlZF9zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJ3VzZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCd1c2UnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2xvbmdfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCdnb29kJyo4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdsb25nZXIgdGhhbiAzMCcsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfZ29vZF9zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJyAgZ29vZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCAnZ29vZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisKK2NsYXNzIE1vZHVsZU5hbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBNb2R1bGVOYW1lIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X01vZHVsZU5hbWU6CisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuTW9kdWxlTmFtZS5lbnRyeV9vayAgIyBGdW5jdGlvbiBiZWluZyB0ZXN0ZWQuCisgICAgICAgIHRleHQwID0gJycKKyAgICAgICAgZW50cnkgPSBWYXIoKQorICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9lbnRyeSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5LnNldChkdW1teV9lbnRyeSkKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisKKyAgICBkZWYgdGVzdF9ibGFua19tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9Nb2R1bGVOYW1lKCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gbmFtZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfYm9ndXNfbW9kdWxlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnX19uYW1lX3h5ejEyM19zaG91bGRfbm90X2V4aXN0X18nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZm91bmQnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2Nfc291cmNlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnaXRlcnRvb2xzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc291cmNlLWJhc2VkJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9nb29kX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ2lkbGVsaWInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLmVudHJ5X29rKCkuZW5kc3dpdGgoJ19faW5pdF9fLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisKKyMgMyBIZWxwU291cmNlIHRlc3QgY2xhc3NlcyBlYWNoIHRlc3Qgb25lIGZ1bmN0aW9uLgorCitvcmlnX3BsYXRmb3JtID0gcXVlcnkucGxhdGZvcm0KKworY2xhc3MgSGVscHNvdXJjZUJyb3dzZWZpbGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBicm93c2VfZmlsZSBtZXRob2Qgb2YgTW9kdWxlTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBicm93c2VfZmlsZSA9IHF1ZXJ5LkhlbHBTb3VyY2UuYnJvd3NlX2ZpbGUKKyAgICAgICAgcGF0aHZhciA9IFZhcigpCisKKyAgICBkZWYgdGVzdF9maWxlX3JlcGxhY2VzX3BhdGgoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgpCisgICAgICAgICMgUGF0aCBpcyB3aWRnZXQgZW50cnksIGVpdGhlciAnJyBvciBzb21ldGhpbmcuCisgICAgICAgICMgRnVuYyByZXR1cm4gaXMgZmlsZSBkaWFsb2cgcmV0dXJuLCBlaXRoZXIgJycgb3Igc29tZXRoaW5nLgorICAgICAgICAjIEZ1bmMgcmV0dXJuIHNob3VsZCBvdmVycmlkZSB3aWRnZXQgZW50cnkuCisgICAgICAgICMgV2UgbmVlZCBhbGwgNCBjb21iaW5hdGlvbiB0byB0ZXN0IGFsbCAobW9zdCkgY29kZSBwYXRocy4KKyAgICAgICAgZm9yIHBhdGgsIGZ1bmMsIHJlc3VsdCBpbiAoCisgICAgICAgICAgICAgICAgKCcnLCBsYW1iZGEgYSxiLGM6JycsICcnKSwKKyAgICAgICAgICAgICAgICAoJycsIGxhbWJkYSBhLGIsYzogX19maWxlX18sIF9fZmlsZV9fKSwKKyAgICAgICAgICAgICAgICAoJ2h0ZXN0JywgbGFtYmRhIGEsYixjOicnLCAnaHRlc3QnKSwKKyAgICAgICAgICAgICAgICAoJ2h0ZXN0JywgbGFtYmRhIGEsYixjOiBfX2ZpbGVfXywgX19maWxlX18pKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLnBhdGh2YXIuc2V0KHBhdGgpCisgICAgICAgICAgICAgICAgZGlhbG9nLmFza2ZpbGVuYW1lID0gZnVuYworICAgICAgICAgICAgICAgIGRpYWxvZy5icm93c2VfZmlsZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aHZhci5nZXQoKSwgcmVzdWx0KQorCisKK2NsYXNzIEhlbHBzb3VyY2VQYXRob2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBwYXRoX29rIG1ldGhvZCBvZiBIZWxwU291cmNlIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X0hlbHBTb3VyY2U6CisgICAgICAgIHBhdGhfb2sgPSBxdWVyeS5IZWxwU291cmNlLnBhdGhfb2sKKyAgICAgICAgcGF0aCA9IFZhcigpCisgICAgICAgIHBhdGhfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfcGF0aCk6CisgICAgICAgICAgICBzZWxmLnBhdGguc2V0KGR1bW15X3BhdGgpCisgICAgICAgICAgICBzZWxmLnBhdGhfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSwgd2lkZ2V0PU5vbmUpOgorICAgICAgICAgICAgc2VsZi5wYXRoX2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBxdWVyeS5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfYmxhbmsoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gaGVscCBmaWxlJywgZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfYmFkKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoX19maWxlX18gKyAnYmFkLWJhZC1iYWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX3dlYihzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCcnKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZm9yIHVybCBpbiAnd3d3LnB5Lm9yZycsICdodHRwOi8vcHkub3JnJzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLnBhdGguc2V0KHVybCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIHVybCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10sICcnKQorCisgICAgZGVmIHRlc3RfcGF0aF9va19maWxlKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoJycpCisgICAgICAgIGZvciBwbGF0Zm9ybSwgcHJlZml4IGluICgnZGFyd2luJywgJ2ZpbGU6Ly8nKSwgKCdvdGhlcicsICcnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgcXVlcnkucGxhdGZvcm0gPSBwbGF0Zm9ybQorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRoLnNldChfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIHByZWZpeCArIF9fZmlsZV9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSwgJycpCisKKworY2xhc3MgSGVscHNvdXJjZUVudHJ5b2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBlbnRyeV9vayBtZXRob2Qgb2YgSGVscFNvdXJjZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LkhlbHBTb3VyY2UuZW50cnlfb2sKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBwYXRoX2Vycm9yID0ge30KKyAgICAgICAgZGVmIGl0ZW1fb2soc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisgICAgICAgIGRlZiBwYXRoX29rKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHRlc3RfZW50cnlfb2tfaGVscHNvdXJjZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCkKKyAgICAgICAgZm9yIG5hbWUsIHBhdGgsIHJlc3VsdCBpbiAoKE5vbmUsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2RvYy50eHQnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkb2MnLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkb2MnLCAnZG9jLnR4dCcsICgnZG9jJywgJ2RvYy50eHQnKSkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoKToKKyAgICAgICAgICAgICAgICBkaWFsb2cubmFtZSwgZGlhbG9nLnBhdGggPSBuYW1lLCBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgcmVzdWx0KQorCisKKyMgR1VJIFRFU1RTCisKK2NsYXNzIFF1ZXJ5R3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSByb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisgICAgICAgIGNscy5kaWFsb2cgPSBxdWVyeS5RdWVyeShyb290LCAnVEVTVCcsICd0ZXN0JywgX3V0ZXN0PVRydWUpCisgICAgICAgIGNscy5kaWFsb2cuZGVzdHJveSA9IG1vY2suTW9jaygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLmRpYWxvZworICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLmVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKKyAgICAgICAgc2VsZi5kaWFsb2cucmVzdWx0ID0gTm9uZQorICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95LnJlc2V0X21vY2soKQorCisgICAgZGVmIHRlc3RfY2xpY2tfb2soc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuZGlhbG9nCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ2FiYycpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCAnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5kZXN0cm95LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X2NsaWNrX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jbGlja19jYW5jZWwoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuZGlhbG9nCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ2FiYycpCisgICAgICAgIGRpYWxvZy5idXR0b25fY2FuY2VsLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5kZXN0cm95LmNhbGxlZCkKKworCitjbGFzcyBTZWN0aW9ubmFtZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBkaWFsb2cgPSAgcXVlcnkuU2VjdGlvbk5hbWUocm9vdCwgJ1QnLCAndCcsIHsnYWJjJ30sIF91dGVzdD1UcnVlKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cudXNlZF9uYW1lcywgeydhYmMnfSkKKyAgICAgICAgZGlhbG9nLmVudHJ5Lmluc2VydCgwLCAnb2theScpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCAnb2theScpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitjbGFzcyBNb2R1bGVuYW1lR3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKworICAgIGRlZiB0ZXN0X2NsaWNrX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5Lk1vZHVsZU5hbWUocm9vdCwgJ1QnLCAndCcsICdpZGxlbGliJywgX3V0ZXN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnRleHQwLCAnaWRsZWxpYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5LmdldCgpLCAnaWRsZWxpYicpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5yZXN1bHQuZW5kc3dpdGgoJ19faW5pdF9fLnB5JykpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitjbGFzcyBIZWxwc291cmNlR3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKworICAgIGRlZiB0ZXN0X2NsaWNrX2hlbHBfc291cmNlKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5LkhlbHBTb3VyY2Uocm9vdCwgJ1QnLCBtZW51aXRlbT0nX190ZXN0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcGF0aD1fX2ZpbGVfXywgX3V0ZXN0PVRydWUpCisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBFcXVhbChkaWFsb2cuZW50cnkuZ2V0KCksICdfX3Rlc3RfXycpCisgICAgICAgIEVxdWFsKGRpYWxvZy5wYXRoLmdldCgpLCBfX2ZpbGVfXykKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBwcmVmaXggPSAiZmlsZTovLyIgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGVsc2UgJycKKyAgICAgICAgRXF1YWwoZGlhbG9nLnJlc3VsdCwgKCdfX3Rlc3RfXycsIHByZWZpeCArIF9fZmlsZV9fKSkKKyAgICAgICAgZGVsIGRpYWxvZworICAgICAgICByb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgcm9vdAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dpZGdldHJlZGlyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQppbmRleCBiYWE5NzVkLi5iMDM4NWZhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZWRpcmVjdG9yLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBpZGxlbGliLldpZGdldFJlZGlyZWN0b3IuCisnJydUZXN0IGlkbGVsaWIucmVkaXJlY3Rvci4KIAogMTAwJSBjb3ZlcmFnZQogJycnCkBAIC02LDcgKzYsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dCwgVGNsRXJyb3IKLWZyb20gaWRsZWxpYi5XaWRnZXRSZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCitmcm9tIGlkbGVsaWIucmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgogCiAKIGNsYXNzIEluaXRDbG9zZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTIwLDYgKzEyMCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yb290LmNhbGwoc2VsZi50ZXh0Ll93LCAnaW5zZXJ0JywgJ2JvbycpLCAnJykKIAogCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2UucHkKaW5kZXggZmY0NDgyMC4uOTkxM2VkMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZWRpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuUmVwbGFjZURpYWxvZyIiIgorIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIucmVwbGFjZS5weSIiIgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIApAQCAtNiw4ICs2LDggQEAKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jawogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94Ci1pbXBvcnQgaWRsZWxpYi5TZWFyY2hFbmdpbmUgYXMgc2UKLWltcG9ydCBpZGxlbGliLlJlcGxhY2VEaWFsb2cgYXMgcmQKK2ltcG9ydCBpZGxlbGliLnNlYXJjaGVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliLnJlcGxhY2UgaW1wb3J0IFJlcGxhY2VEaWFsb2cKIAogb3JpZ19tYm94ID0gc2UudGtNZXNzYWdlQm94CiBzaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgpAQCAtMjEsNyArMjEsOCBAQAogICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCiAgICAgICAgIHNlLnRrTWVzc2FnZUJveCA9IE1ib3gKICAgICAgICAgY2xzLmVuZ2luZSA9IHNlLlNlYXJjaEVuZ2luZShjbHMucm9vdCkKLSAgICAgICAgY2xzLmRpYWxvZyA9IHJkLlJlcGxhY2VEaWFsb2coY2xzLnJvb3QsIGNscy5lbmdpbmUpCisgICAgICAgIGNscy5kaWFsb2cgPSBSZXBsYWNlRGlhbG9nKGNscy5yb290LCBjbHMuZW5naW5lKQorICAgICAgICBjbHMuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgY2xzLmRpYWxvZy5vayA9IE1vY2soKQogICAgICAgICBjbHMudGV4dCA9IFRleHQoY2xzLnJvb3QpCiAgICAgICAgIGNscy50ZXh0LnVuZG9fYmxvY2tfc3RhcnQgPSBNb2NrKCkKQEAgLTcwLDcgKzcxLDYgQEAKICAgICAgICAgIyB0ZXh0IGZvdW5kIGFuZCByZXBsYWNlZAogICAgICAgICBwdi5zZXQoJ2EnKQogICAgICAgICBydi5zZXQoJ2FzZGYnKQotICAgICAgICBzZWxmLmRpYWxvZy5vcGVuKHNlbGYudGV4dCkKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGVxdWFsKHRleHQuZ2V0KCcxLjgnLCAnMS4xMicpLCAnYXNkZicpCiAKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgICAgdGV4dC5tYXJrX3NldCgnaW5zZXJ0JywgJ2VuZCcpCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnXG5saW5lNDI6JykKICAgICAgICAgYmVmb3JlX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCi0gICAgICAgIHB2LnNldCgnW2Etel1bXGRdKycpCisgICAgICAgIHB2LnNldChyJ1thLXpdW1xkXSsnKQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgYWZ0ZXJfdGV4dCA9IHRleHQuZ2V0KCcxLjAnLCAnZW5kJykKICAgICAgICAgZXF1YWwoYmVmb3JlX3RleHQsIGFmdGVyX3RleHQpCkBAIC0xOTIsNyArMTkyLDcgQEAKICAgICAgICAgc2VsZi5lbmdpbmUucmV2YXIuc2V0KFRydWUpCiAKICAgICAgICAgYmVmb3JlX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCi0gICAgICAgIHB2LnNldCgnW2Etel1bXGRdKycpCisgICAgICAgIHB2LnNldChyJ1thLXpdW1xkXSsnKQogICAgICAgICBydi5zZXQoJ2hlbGxvJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGFmdGVyX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCkBAIC0yMDcsNyArMjA3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignZXJyb3InLCBzaG93ZXJyb3IudGl0bGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VtcHR5Jywgc2hvd2Vycm9yLm1lc3NhZ2UpCiAKLSAgICAgICAgcHYuc2V0KCdbXGQnKQorICAgICAgICBwdi5zZXQocidbXGQnKQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignZXJyb3InLCBzaG93ZXJyb3IudGl0bGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1BhdHRlcm4nLCBzaG93ZXJyb3IubWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weQppbmRleCAxYzkwYjkzLi4xMzBlNmJlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcnN0cmlwLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaWRsZWxpYi5Sc3RyaXBFeHRlbnNpb24gYXMgcnMKK2ltcG9ydCBpZGxlbGliLnJzdHJpcCBhcyBycwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEVkaXRvcgogCiBjbGFzcyByc3RyaXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIxLDcgKzIxLDcgQEAKICAgICBkZWYgdGVzdF9yc3RyaXBfbXVsdGlwbGUoc2VsZik6CiAgICAgICAgIGVkaXRvciA9IEVkaXRvcigpCiAgICAgICAgICMgIFVuY29tbWVudCBmb2xsb3dpbmcgdG8gdmVyaWZ5IHRoYXQgdGVzdCBwYXNzZXMgd2l0aCByZWFsIHdpZGdldHMuCi0jIyAgICAgICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93IGFzIEVkaXRvcgorIyMgICAgICAgIGZyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdyBhcyBFZGl0b3IKICMjICAgICAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRrCiAjIyAgICAgICAgZWRpdG9yID0gRWRpdG9yKHJvb3Q9VGsoKSkKICAgICAgICAgdGV4dCA9IGVkaXRvci50ZXh0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhYWJmZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3Njcm9sbGVkbGlzdC5weQpAQCAtMCwwICsxLDI5IEBACisnJycgVGVzdCBpZGxlbGliLnNjcm9sbGVkbGlzdC4KKworQ292ZXJhZ2U6IDM5JQorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNjcm9sbGVkbGlzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaworCisKK2NsYXNzIFNjcm9sbGVkTGlzdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIHNjcm9sbGVkbGlzdC5TY3JvbGxlZExpc3Qoc2VsZi5yb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQppbmRleCAxOTBjODY2Li44MGZhOTNhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiVGVzdCBTZWFyY2hEaWFsb2cgY2xhc3MgaW4gU2VhcmNoRGlhbG9ndWUucHkiIiIKKyIiIlRlc3QgU2VhcmNoRGlhbG9nIGNsYXNzIGluIGlkbGVsaWIuc2VhcmNoLnB5IiIiCiAKICMgRG9lcyBub3QgY3VycmVudGx5IHRlc3QgdGhlIGV2ZW50IGhhbmRsZXIgd3JhcHBlcnMuCiAjIEEgdXNhZ2UgdGVzdCBzaG91bGQgc2ltdWxhdGUgY2xpY2tzIGFuZCBjaGVjayBoaWxpZ2h0aW5nLgpAQCAtMTEsOCArMTEsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGtpbnRlciBhcyB0awogZnJvbSB0a2ludGVyIGltcG9ydCBCb29sZWFuVmFyCi1pbXBvcnQgaWRsZWxpYi5TZWFyY2hFbmdpbmUgYXMgc2UKLWltcG9ydCBpZGxlbGliLlNlYXJjaERpYWxvZyBhcyBzZAoraW1wb3J0IGlkbGVsaWIuc2VhcmNoZW5naW5lIGFzIHNlCitpbXBvcnQgaWRsZWxpYi5zZWFyY2ggYXMgc2QKIAogCiBjbGFzcyBTZWFyY2hEaWFsb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI5LDYgKzI5LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZW5naW5lID0gc2UuU2VhcmNoRW5naW5lKHNlbGYucm9vdCkKICAgICAgICAgc2VsZi5kaWFsb2cgPSBzZC5TZWFyY2hEaWFsb2coc2VsZi5yb290LCBzZWxmLmVuZ2luZSkKKyAgICAgICAgc2VsZi5kaWFsb2cuYmVsbCA9IGxhbWJkYTogTm9uZQogICAgICAgICBzZWxmLnRleHQgPSB0ay5UZXh0KHNlbGYucm9vdCkKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJ0hlbGxvIFdvcmxkIScpCiAKQEAgLTM4LDYgKzM5LDcgQEAKIAogICAgICAgICBzZWxmLmVuZ2luZS5zZXRwYXQoJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cuZmluZF9hZ2Fpbih0ZXh0KSkKKyAgICAgICAgc2VsZi5kaWFsb2cuYmVsbCA9IGxhbWJkYTogTm9uZQogCiAgICAgICAgIHNlbGYuZW5naW5lLnNldHBhdCgnSGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZmluZF9hZ2Fpbih0ZXh0KSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGJhc2UucHkKaW5kZXggODAzNmI5MS4uZDc2OWZhMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nYmFzZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CkBAIC0xLDE0ICsxLDEzIEBACi0nJydVbml0dGVzdHMgZm9yIGlkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQorJycndGVzdHMgaWRsZWxpYi5zZWFyY2hiYXNlLgogCiBDb3ZlcmFnZTogOTklLiBUaGUgb25seSB0aGluZyBub3QgY292ZXJlZCBpcyBpbmNvbnNlcXVlbnRpYWwgLS0KIHRlc3Rpbmcgc2tpcHBpbmcgb2Ygc3VpdGUgd2hlbiBzZWxmLm5lZWR3cmFwYnV0dG9uIGlzIGZhbHNlLgotCiAnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUb3BsZXZlbCwgRnJhbWUgIyMsIEJvb2xlYW5WYXIsIFN0cmluZ1ZhcgotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUgYXMgc2UKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZSBhcyBzZGIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lIGFzIHNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGJhc2UgYXMgc2RiCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwogIyMgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKIApAQCAtNzQsNyArNzMsNyBAQAogICAgIGRlZiB0ZXN0X21ha2VfZW50cnkoc2VsZik6CiAgICAgICAgIGVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCi0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIGVudHJ5LCBsYWJlbCA9IHNlbGYuZGlhbG9nLm1ha2VfZW50cnkoIlRlc3Q6IiwgJ2hlbGxvJykKICAgICAgICAgZXF1YWwobGFiZWxbJ3RleHQnXSwgJ1Rlc3Q6JykKIApAQCAtODcsNiArODYsNyBAQAogICAgICAgICBlcXVhbChzZWxmLmRpYWxvZy5yb3csIDEpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfZW50cmllcyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKICAgICAgICAgc2VsZi5lbmdpbmUuc2V0cGF0KCdoZWxsbycpCiAgICAgICAgIHNlbGYuZGlhbG9nLmNyZWF0ZV9lbnRyaWVzKCkKQEAgLTk0LDcgKzk0LDcgQEAKIAogICAgIGRlZiB0ZXN0X21ha2VfZnJhbWUoc2VsZik6CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKLSAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgZnJhbWUsIGxhYmVsID0gc2VsZi5kaWFsb2cubWFrZV9mcmFtZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGFiZWwsICcnKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnJhbWUsIEZyYW1lKQpAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmcmFtZSwgRnJhbWUpCiAKICAgICBkZWYgYnRuX3Rlc3Rfc2V0dXAoc2VsZiwgbWV0aCk6Ci0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKICAgICAgICAgcmV0dXJuIG1ldGgoKQogCkBAIC0xMTksMTEgKzExOSw2IEBACiAgICAgICAgICAgICAgICAgdmFyLCBsYWJlbCA9IHNwZWMKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1dHRvblsndGV4dCddLCBsYWJlbCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCi0gICAgICAgICAgICAgICAgaWYgc3RhdGUgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmRlc2VsZWN0KCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBidXR0b24uc2VsZWN0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgMSAtIHN0YXRlKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6CiAgICAgICAgIGZvciBzdGF0ZSBpbiAoRmFsc2UsIFRydWUpOgpAQCAtMTM5LDE4ICsxMzQsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIyBoaXQgb3RoZXIgYnV0dG9uLCB0aGVuIHRoaXMgb25lCiAgICAgICAgICAgICAgICAgICAgICMgaW5kZXhlcyBkZXBlbmQgb24gYnV0dG9uIG9yZGVyCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCBzdGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uc1t2YWxdLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCAxIC0gc3RhdGUpCi0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNbMS12YWxdLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCBzdGF0ZSkKIAogICAgIGRlZiB0ZXN0X21ha2VfYnV0dG9uKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5idXR0b25mcmFtZSA9IEZyYW1lKHNlbGYuZGlhbG9nLnRvcCkKICAgICAgICAgYnRuID0gc2VsZi5kaWFsb2cubWFrZV9idXR0b24oJ1Rlc3QnLCBzZWxmLmRpYWxvZy5jbG9zZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidG5bJ3RleHQnXSwgJ1Rlc3QnKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLmNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoKQogICAgICAgICAjIExvb2sgZm9yIGNsb3NlIGJ1dHRvbiBjb21tYW5kIGluIGJ1dHRvbmZyYW1lCiAgICAgICAgIGNsb3NlYnV0dG9uY29tbWFuZCA9ICcnCkBAIC0xNjAsNiArMTUyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignY2xvc2UnLCBjbG9zZWJ1dHRvbmNvbW1hbmQpCiAKIAotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQppbmRleCBlZGJkNTU4Li5iM2FhOGViIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBmdW5jdGlvbnMgYW5kIFNlYXJjaEVuZ2luZSBjbGFzcyBpbiBTZWFyY2hFbmdpbmUucHkuJycnCisnJydUZXN0IGZ1bmN0aW9ucyBhbmQgU2VhcmNoRW5naW5lIGNsYXNzIGluIGlkbGVsaWIuc2VhcmNoZW5naW5lLnB5LicnJwogCiAjIFdpdGggbW9jayByZXBsYWNlbWVudHMsIHRoZSBtb2R1bGUgZG9lcyBub3QgdXNlIGFueSBndWkgd2lkZ2V0cy4KICMgVGhlIHVzZSBvZiB0ay5UZXh0IGlzIGF2b2lkZWQgKGZvciBub3csIHVudGlsIG1vY2sgVGV4dCBpcyBpbXByb3ZlZCkKQEAgLTEwLDcgKzEwLDcgQEAKICMgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0ICBCb29sZWFuVmFyLCBTdHJpbmdWYXIsIFRjbEVycm9yICAjICxUaywgVGV4dAogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lIGFzIHNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZSBhcyBzZQogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dCBhcyBtb2NrVGV4dAogCkBAIC0xMzksMTAgKzEzOSwxMCBAQAogCiAgICAgZGVmIHRlc3Rfc2V0Y29va2VkcGF0KHNlbGYpOgogICAgICAgICBlbmdpbmUgPSBzZWxmLmVuZ2luZQotICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KCdccycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5naW5lLmdldHBhdCgpLCAnXHMnKQorICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KHInXHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgcidccycpCiAgICAgICAgIGVuZ2luZS5yZXZhci5zZXQoMSkKLSAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdCgnXHMnKQorICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KHInXHMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgcidcXHMnKQogCiAgICAgZGVmIHRlc3RfZ2V0Y29va2VkcGF0KHNlbGYpOgpAQCAtMTU2LDEwICsxNTYsMTAgQEAKICAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCByJ1xiaGVsbG9cYicpCiAgICAgICAgIGVuZ2luZS53b3JkdmFyLnNldChGYWxzZSkKIAotICAgICAgICBlbmdpbmUuc2V0cGF0KCdccycpCisgICAgICAgIGVuZ2luZS5zZXRwYXQocidccycpCiAgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidcXHMnKQogICAgICAgICBlbmdpbmUucmV2YXIuc2V0KFRydWUpCi0gICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgJ1xzJykKKyAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCByJ1xzJykKIAogICAgIGRlZiB0ZXN0X2dldHByb2coc2VsZik6CiAgICAgICAgIGVuZ2luZSA9IHNlbGYuZW5naW5lCkBAIC0yODIsNyArMjgyLDcgQEAKICAgICAgICAgY2xzLnBhdCA9IHJlLmNvbXBpbGUoJ3RhcmdldCcpCiAgICAgICAgIGNscy5yZXMgPSAoMiwgKDEwLCAxNikpICAjIGxpbmUsIHNsaWNlIGluZGV4ZXMgb2YgJ3RhcmdldCcKICAgICAgICAgY2xzLmZhaWxwYXQgPSByZS5jb21waWxlKCd4eXonKSAgIyBub3QgaW4gdGV4dAotICAgICAgICBjbHMuZW1wdHlwYXQgPSByZS5jb21waWxlKCdcdyonKSAgIyBlbXB0eSBtYXRjaCBwb3NzaWJsZQorICAgICAgICBjbHMuZW1wdHlwYXQgPSByZS5jb21waWxlKHInXHcqJykgICMgZW1wdHkgbWF0Y2ggcG9zc2libGUKIAogICAgIGRlZiBtYWtlX3NlYXJjaChzZWxmLCBmdW5jKToKICAgICAgICAgZGVmIHNlYXJjaChwYXQsIGxpbmUsIGNvbCwgd3JhcCwgb2s9MCk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weQppbmRleCA3ZTgyM2RmLi5hNWJhN2JiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHQucHkKQEAgLTEsMTcgKzEsMTkgQEAKLSMgVGVzdCBtb2NrX3RrLlRleHQgY2xhc3MgYWdhaW5zdCB0a2ludGVyLlRleHQgY2xhc3MgYnkgcnVubmluZyBzYW1lIHRlc3RzIHdpdGggYm90aC4KKycnJyBUZXN0IG1vY2tfdGsuVGV4dCBjbGFzcyBhZ2FpbnN0IHRraW50ZXIuVGV4dCBjbGFzcworCitSdW4gc2FtZSB0ZXN0cyB3aXRoIGJvdGggYnkgY3JlYXRpbmcgYSBtaXhpbiBjbGFzcy4KKycnJwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKLQogZnJvbSBfdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIAogY2xhc3MgVGV4dFRlc3Qob2JqZWN0KToKKyAgICAiRGVmaW5lIGl0ZW1zIGNvbW1vbiB0byBib3RoIHNldHMgb2YgdGVzdHMuIgogCi0gICAgaHcgPSAnaGVsbG9cbndvcmxkJyAgIyB1c3VhbCBpbml0aWFsIGluc2VydCBhZnRlciBpbml0aWFsaXphdGlvbgorICAgIGh3ID0gJ2hlbGxvXG53b3JsZCcgICMgU2V2ZXJhbCB0ZXN0cyBpbnNlcnQgdGhpcyBhZnRlciBhZnRlciBpbml0aWFsaXphdGlvbi4KICAgICBod24gPSBodysnXG4nICAjIFxuIHByZXNlbnQgYXQgaW5pdGlhbGl6YXRpb24sIGJlZm9yZSBpbnNlcnQKIAotICAgIFRleHQgPSBOb25lCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnRleHQgPSBzZWxmLlRleHQoKQorICAgICMgc2V0VXBDbGFzcyBkZWZpbmVzIGNscy5UZXh0IGFuZCBtYXliZSBjbHMucm9vdC4KKyAgICAjIHNldFVwIGRlZmluZXMgc2VsZi50ZXh0IGZyb20gVGV4dCBhbmQgbWF5YmUgcm9vdC4KIAogICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZXh0LmdldCgnMS4wJyksICdcbicpCkBAIC0xOTYsNiArMTk4LDEwIEBACiAgICAgICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dAogICAgICAgICBjbHMuVGV4dCA9IFRleHQKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KCkKKworCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgogICAgICAgICAjIHRlc3QgZW5kZmxhZ3MgKC0xLCAwKSBub3QgdGVzdGVkIGJ5IHRlc3RfaW5kZXggKHdoaWNoIHVzZXMgKzEpCiAgICAgICAgIGRlY29kZSA9IHNlbGYudGV4dC5fZGVjb2RlCkBAIC0yMjIsNiArMjI4LDkgQEAKICAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCiAgICAgICAgIGRlbCBjbHMucm9vdAogCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRleHQgPSBzZWxmLlRleHQoc2VsZi5yb290KQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKaW5kZXggNWQyZTYwMC4uZjAxOGY1ZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKQEAgLTEsMjEgKzEsMjEgQEAKLScnJ1Rlc3QgaWRsZWxpYi50ZXh0Vmlldy4KKycnJ1Rlc3QgaWRsZWxpYi50ZXh0dmlldy4KIAogU2luY2UgYWxsIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBjcmVhdGUgKG9yIGRlc3Ryb3kpIGEgVGV4dFZpZXdlciwgd2hpY2gKIGlzIGEgd2lkZ2V0IGNvbnRhaW5pbmcgbXVsdGlwbGUgd2lkZ2V0cywgYWxsIHRlc3RzIG11c3QgYmUgZ3VpIHRlc3RzLgogVXNpbmcgbW9jayBUZXh0IHdvdWxkIG5vdCBjaGFuZ2UgdGhpcy4gIE90aGVyIG1vY2tzIGFyZSB1c2VkIHRvIHJldHJpZXZlCiBpbmZvcm1hdGlvbiBhYm91dCBjYWxscy4KIAotVGhlIGNvdmVyYWdlIGlzIGVzc2VudGlhbGx5IDEwMCUuCitDb3ZlcmFnZTogOTQlLgogJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRleHR2aWV3IGFzIHR2CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogZnJvbSB0a2ludGVyIGltcG9ydCBUawotZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0VmlldyBhcyB0dgogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAorZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94X2Z1bmMKIAogZGVmIHNldFVwTW9kdWxlKCk6CiAgICAgZ2xvYmFsIHJvb3QKQEAgLTY0LDE3ICs2NCwxNyBAQAogICAgICAgICB2aWV3LmRlc3Ryb3koKQogCiAKLWNsYXNzIHRleHR2aWV3VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBWaWV3RnVuY3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5vcmlnX21ib3ggPSB0di50a01lc3NhZ2VCb3gKLSAgICAgICAgdHYudGtNZXNzYWdlQm94ID0gTWJveAorICAgICAgICBjbHMub3JpZ19lcnJvciA9IHR2LnNob3dlcnJvcgorICAgICAgICB0di5zaG93ZXJyb3IgPSBNYm94X2Z1bmMoKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgdHYudGtNZXNzYWdlQm94ID0gY2xzLm9yaWdfbWJveAotICAgICAgICBkZWwgY2xzLm9yaWdfbWJveAorICAgICAgICB0di5zaG93ZXJyb3IgPSBjbHMub3JpZ19lcnJvcgorICAgICAgICBkZWwgY2xzLm9yaWdfZXJyb3IKIAogICAgIGRlZiB0ZXN0X3ZpZXdfdGV4dChzZWxmKToKICAgICAgICAgIyBJZiBtb2RhbCBUcnVlLCBnZXQgdGsgZXJyb3IgJ2Nhbid0IGludm9rZSAiZXZlbnQiIGNvbW1hbmQnLgpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdUZXN0Jywgdmlldy50ZXh0Vmlldy5nZXQoJzEuMCcsICcxLmVuZCcpKQogICAgICAgICB2aWV3Lk9rKCkKIAotICAgICAgICAjIE1vY2sgbWVzc2FnZWJveCB3aWxsIGJlIHVzZWQgYW5kIHZpZXdfZmlsZSB3aWxsIG5vdCByZXR1cm4gYW55dGhpbmcKKyAgICAgICAgIyBNb2NrIHNob3dlcnJvciB3aWxsIGJlIHVzZWQ7IHZpZXdfZmlsZSB3aWxsIHJldHVybiBOb25lLgogICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJy4uL25vdHRoZXJlLnB5JykKICAgICAgICAgdmlldyA9IHR2LnZpZXdfZmlsZShyb290LCAnVGl0bGUnLCB0ZXN0ZmlsZSwgbW9kYWw9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90cmVlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWJhOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weQpAQCAtMCwwICsxLDM2IEBACisnJycgVGVzdCBpZGxlbGliLnRyZWUuCisKK0NvdmVyYWdlOiA1NiUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCB0cmVlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBUcmVlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgIyBTdGFydCB3aXRoIGNvZGUgc2xpZ2h0bHkgYWRhcHRlZCBmcm9tIGh0ZXN0LgorICAgICAgICBzYyA9IHRyZWUuU2Nyb2xsZWRDYW52YXMoCisgICAgICAgICAgICBzZWxmLnJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKKyAgICAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIsIHNpZGU9J2xlZnQnKQorICAgICAgICBpdGVtID0gdHJlZS5GaWxlVHJlZUl0ZW0odHJlZS5JQ09ORElSKQorICAgICAgICBub2RlID0gdHJlZS5UcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCisgICAgICAgIG5vZGUuZXhwYW5kKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvLnB5CmluZGV4IDJiODNjOTkuLmU4NzI5MjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG9kZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlVuaXR0ZXN0IGZvciBVbmRvRGVsZWdhdG9yIGluIGlkbGVsaWIuVW5kb0RlbGVnYXRvci4KKyIiIlVuaXR0ZXN0IGZvciBVbmRvRGVsZWdhdG9yIGluIGlkbGVsaWIudW5kby5weS4KIAogQ292ZXJhZ2UgYWJvdXQgODAlIChyZXRlc3QpLgogIiIiCkBAIC04LDggKzgsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCwgVGsKLWZyb20gaWRsZWxpYi5VbmRvRGVsZWdhdG9yIGltcG9ydCBVbmRvRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCiAKIAogY2xhc3MgVW5kb0RlbGVnYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjksOCArMjksOCBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmRlbGVnYXRvciA9IFVuZG9EZWxlZ2F0b3IoKQorICAgICAgICBzZWxmLmRlbGVnYXRvci5iZWxsID0gTW9jaygpCiAgICAgICAgIHNlbGYucGVyY29sYXRvci5pbnNlcnRmaWx0ZXIoc2VsZi5kZWxlZ2F0b3IpCi0gICAgICAgIHNlbGYuZGVsZWdhdG9yLmJlbGwgPSBNb2NrKHdyYXBzPXNlbGYuZGVsZWdhdG9yLmJlbGwpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYucGVyY29sYXRvci5yZW1vdmVmaWx0ZXIoc2VsZi5kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weQppbmRleCAxODYyN2RkLi5mMzI2OWYxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dhcm5pbmcucHkKQEAgLTEsNCArMSw0IEBACi0nJydUZXN0IHdhcm5pbmdzIHJlcGxhY2VtZW50IGluIFB5U2hlbGwucHkgYW5kIHJ1bi5weS4KKycnJ1Rlc3Qgd2FybmluZ3MgcmVwbGFjZW1lbnQgaW4gcHlzaGVsbC5weSBhbmQgcnVuLnB5LgogCiBUaGlzIGZpbGUgY291bGQgYmUgZXhwYW5kZWQgdG8gaW5jbHVkZSB0cmFjZWJhY2sgb3ZlcnJpZGVzCiAoaW4gc2FtZSB0d28gbW9kdWxlcykuIElmIHNvLCBjaGFuZ2UgbmFtZS4KQEAgLTE3LDkgKzE3LDkgQEAKIHJ1bm5pbmdfaW5faWRsZSA9ICdpZGxlJyBpbiBzaG93d2FybmluZy5fX25hbWVfXwogCiBmcm9tIGlkbGVsaWIgaW1wb3J0IHJ1bgotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsIGFzIHNoZWxsCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5c2hlbGwgYXMgc2hlbGwKIAotIyBUaGUgZm9sbG93aW5nIHdhcyBnZW5lcmF0ZWQgZnJvbSBQeVNoZWxsLmlkbGVfZm9ybWF0d2FybmluZworIyBUaGUgZm9sbG93aW5nIHdhcyBnZW5lcmF0ZWQgZnJvbSBweXNoZWxsLmlkbGVfZm9ybWF0d2FybmluZwogIyBhbmQgY2hlY2tlZCBhcyBtYXRjaGluZyBleHBlY3RhdGlvbi4KIGlkbGVtc2cgPSAnJycKIFdhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTlmNjlhLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0iIiIKLVRoZSBzZXBhcmF0ZSBJZGxlIHZlcnNpb24gd2FzIGVsaW1pbmF0ZWQgeWVhcnMgYWdvOwotaWRsZWxpYi5pZGxldmVyIGlzIG5vIGxvbmdlciB1c2VkIGJ5IElkbGUKLWFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42IG9yIGxhdGVyLiAgVXNlCi0gICAgZnJvbSBzeXMgaW1wb3J0IHZlcnNpb24KLSAgICBJRExFX1ZFUlNJT04gPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldCi0iIiIKLSMgS2VwdCBmb3Igbm93IG9ubHkgZm9yIHBvc3NpYmxlIGV4aXN0aW5nIGV4dGVuc2lvbiB1c2UKLWltcG9ydCB3YXJuaW5ncyBhcyB3Ci13Lndhcm4oX19kb2NfXywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi1mcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgotSURMRV9WRVJTSU9OID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5IGIvTGliL2lkbGVsaWIvaW9tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0lPQmluZGluZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaW9tZW51LnB5CmluZGV4IDg0ZjM5YTIuLjM0MTRjN2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQorKysgYi9MaWIvaWRsZWxpYi9pb21lbnUucHkKQEAgLTEwLDU3ICsxMCw2MCBAQAogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIGZyb20gdGtpbnRlci5zaW1wbGVkaWFsb2cgaW1wb3J0IGFza3N0cmluZwogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2ltcG9ydCBpZGxlbGliCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCi0KLSMgVHJ5IHNldHRpbmcgdGhlIGxvY2FsZSwgc28gdGhhdCB3ZSBjYW4gZmluZCBvdXQKLSMgd2hhdCBlbmNvZGluZyB0byB1c2UKLXRyeToKLSAgICBpbXBvcnQgbG9jYWxlCi0gICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUsICIiKQotZXhjZXB0IChJbXBvcnRFcnJvciwgbG9jYWxlLkVycm9yKToKLSAgICBwYXNzCi0KLSMgRW5jb2RpbmcgZm9yIGZpbGUgbmFtZXMKLWZpbGVzeXN0ZW1lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAgIyMjIGN1cnJlbnRseSB1bnVzZWQKLQotbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgIyBPbiBXaW5kb3dzLCB3ZSBjb3VsZCB1c2UgIm1iY3MiLiBIb3dldmVyLCB0byBnaXZlIHRoZSB1c2VyCi0gICAgIyBhIHBvcnRhYmxlIGVuY29kaW5nIG5hbWUsIHdlIG5lZWQgdG8gZmluZCB0aGUgY29kZSBwYWdlCi0gICAgdHJ5OgotICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0ZGVmYXVsdGxvY2FsZSgpWzFdCi0gICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQotICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKLSAgICAgICAgcGFzcworaWYgaWRsZWxpYi50ZXN0aW5nOiAgIyBTZXQgVHJ1ZSBieSB0ZXN0LnRlc3RfaWRsZSB0byBhdm9pZCBzZXRsb2NhbGUuCisgICAgZW5jb2RpbmcgPSAndXRmLTgnCiBlbHNlOgorICAgICMgVHJ5IHNldHRpbmcgdGhlIGxvY2FsZSwgc28gdGhhdCB3ZSBjYW4gZmluZCBvdXQKKyAgICAjIHdoYXQgZW5jb2RpbmcgdG8gdXNlCiAgICAgdHJ5OgotICAgICAgICAjIERpZmZlcmVudCB0aGluZ3MgY2FuIGZhaWwgaGVyZTogdGhlIGxvY2FsZSBtb2R1bGUgbWF5IG5vdCBiZQotICAgICAgICAjIGxvYWRlZCwgaXQgbWF5IG5vdCBvZmZlciBubF9sYW5naW5mbywgb3IgQ09ERVNFVCwgb3IgdGhlCi0gICAgICAgICMgcmVzdWx0aW5nIGNvZGVzZXQgbWF5IGJlIHVua25vd24gdG8gUHl0aG9uLiBXZSBpZ25vcmUgYWxsCi0gICAgICAgICMgdGhlc2UgcHJvYmxlbXMsIGZhbGxpbmcgYmFjayB0byBBU0NJSQotICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUubmxfbGFuZ2luZm8obG9jYWxlLkNPREVTRVQpCi0gICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKLSAgICAgICAgICAgICMgc2l0dWF0aW9uIG9jY3VycyBvbiBNYWMgT1MgWAotICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwotICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICBleGNlcHQgKE5hbWVFcnJvciwgQXR0cmlidXRlRXJyb3IsIExvb2t1cEVycm9yKToKLSAgICAgICAgIyBUcnkgZ2V0ZGVmYXVsdGxvY2FsZTogaXQgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcywKLSAgICAgICAgIyB3aGljaCBtYXkgZ2l2ZSBhIGNsdWUuIFVuZm9ydHVuYXRlbHksIGdldGRlZmF1bHRsb2NhbGUgaGFzCi0gICAgICAgICMgYnVncyB0aGF0IGNhbiBjYXVzZSBWYWx1ZUVycm9yLgorICAgICAgICBpbXBvcnQgbG9jYWxlCisgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFLCAiIikKKyAgICBleGNlcHQgKEltcG9ydEVycm9yLCBsb2NhbGUuRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICBsb2NhbGVfZGVjb2RlID0gJ2FzY2lpJworICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAjIE9uIFdpbmRvd3MsIHdlIGNvdWxkIHVzZSAibWJjcyIuIEhvd2V2ZXIsIHRvIGdpdmUgdGhlIHVzZXIKKyAgICAgICAgIyBhIHBvcnRhYmxlIGVuY29kaW5nIG5hbWUsIHdlIG5lZWQgdG8gZmluZCB0aGUgY29kZSBwYWdlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRkZWZhdWx0bG9jYWxlKClbMV0KKyAgICAgICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQorICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBEaWZmZXJlbnQgdGhpbmdzIGNhbiBmYWlsIGhlcmU6IHRoZSBsb2NhbGUgbW9kdWxlIG1heSBub3QgYmUKKyAgICAgICAgICAgICMgbG9hZGVkLCBpdCBtYXkgbm90IG9mZmVyIG5sX2xhbmdpbmZvLCBvciBDT0RFU0VULCBvciB0aGUKKyAgICAgICAgICAgICMgcmVzdWx0aW5nIGNvZGVzZXQgbWF5IGJlIHVua25vd24gdG8gUHl0aG9uLiBXZSBpZ25vcmUgYWxsCisgICAgICAgICAgICAjIHRoZXNlIHByb2JsZW1zLCBmYWxsaW5nIGJhY2sgdG8gQVNDSUkKKyAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5ubF9sYW5naW5mbyhsb2NhbGUuQ09ERVNFVCkKICAgICAgICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKICAgICAgICAgICAgICAgICAjIHNpdHVhdGlvbiBvY2N1cnMgb24gTWFjIE9TIFgKICAgICAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSAnYXNjaWknCiAgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBMb29rdXBFcnJvcik6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgIGV4Y2VwdCAoTmFtZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgIyBUcnkgZ2V0ZGVmYXVsdGxvY2FsZTogaXQgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcywKKyAgICAgICAgICAgICMgd2hpY2ggbWF5IGdpdmUgYSBjbHVlLiBVbmZvcnR1bmF0ZWx5LCBnZXRkZWZhdWx0bG9jYWxlIGhhcworICAgICAgICAgICAgIyBidWdzIHRoYXQgY2FuIGNhdXNlIFZhbHVlRXJyb3IuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldGRlZmF1bHRsb2NhbGUoKVsxXQorICAgICAgICAgICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKKyAgICAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gb2NjdXJzIG9uIE1hYyBPUyBYCisgICAgICAgICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKKyAgICAgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKIAotbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nLmxvd2VyKCkKKyAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcubG93ZXIoKQogCi1lbmNvZGluZyA9IGxvY2FsZV9lbmNvZGluZyAgIyMjIEtCSyAwN1NlcDA3ICBUaGlzIGlzIHVzZWQgYWxsIG92ZXIgSURMRSwgY2hlY2shCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjICdlbmNvZGluZycgaXMgdXNlZCBiZWxvdyBpbiBlbmNvZGUoKSwgY2hlY2shCisgICAgZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcKKyAgICAjIEVuY29kaW5nIGlzIHVzZWQgaW4gbXVsdGlwbGUgZmlsZXM7IGxvY2FsZV9lbmNvZGluZyBub3doZXJlLgorICAgICMgVGhlIG9ubHkgdXNlIG9mICdlbmNvZGluZycgYmVsb3cgaXMgaW4gX2RlY29kZSBhcyBpbml0aWFsIHZhbHVlCisgICAgIyBvZiBkZXByZWNhdGVkIGJsb2NrIGFza2luZyB1c2VyIGZvciBlbmNvZGluZy4KKyAgICAjIFBlcmhhcHMgdXNlIGVsc2V3aGVyZSBzaG91bGQgYmUgcmV2aWV3ZWQuCiAKIGNvZGluZ19yZSA9IHJlLmNvbXBpbGUocideWyBcdFxmXSojLio/Y29kaW5nWzo9XVsgXHRdKihbLVx3Ll0rKScsIHJlLkFTQ0lJKQogYmxhbmtfcmUgPSByZS5jb21waWxlKHInXlsgXHRcZl0qKD86WyNcclxuXXwkKScsIHJlLkFTQ0lJKQpAQCAtMTA3LDYgKzExMCw5IEBACiAKIAogY2xhc3MgSU9CaW5kaW5nOgorIyBPbmUgaW5zdGFuY2UgcGVyIGVkaXRvciBXaW5kb3cgc28gbWV0aG9kcyBrbm93IHdoaWNoIHRvIHNhdmUsIGNsb3NlLgorIyBPcGVuIHJldHVybnMgZm9jdXMgdG8gc2VsZi5lZGl0d2luIGlmIGFib3J0ZWQuCisjIEVkaXRvcldpbmRvdy5vcGVuX21vZHVsZSwgb3RoZXJzLCBiZWxvbmcgaGVyZS4KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luKToKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgpAQCAtMzAxLDcgKzMwNyw3IEBACiAgICAgICAgICAgICAgICAgIlRoZSBmaWxlJ3MgZW5jb2RpbmcgaXMgaW52YWxpZCBmb3IgUHl0aG9uIDMueC5cbiIKICAgICAgICAgICAgICAgICAiSURMRSB3aWxsIGNvbnZlcnQgaXQgdG8gVVRGLTguXG4iCiAgICAgICAgICAgICAgICAgIldoYXQgaXMgdGhlIGN1cnJlbnQgZW5jb2Rpbmcgb2YgdGhlIGZpbGU/IiwKLSAgICAgICAgICAgICAgICBpbml0aWFsdmFsdWUgPSBsb2NhbGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgaW5pdGlhbHZhbHVlID0gZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5lZGl0d2luLnRleHQpCiAKICAgICAgICAgICAgIGlmIGVuYzoKQEAgLTUyOSw4ICs1MzUsOCBAQAogCiAgICAgcm9vdCA9IFRvcGxldmVsKHBhcmVudCkKICAgICByb290LnRpdGxlKCJUZXN0IElPQmluZGluZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIGNsYXNzIE15RWRpdFdpbjoKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQpOgogICAgICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dApAQCAtNTYxLDUgKzU2Nyw4IEBACiAgICAgSU9CaW5kaW5nKGVkaXR3aW4pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9pb21lbnUnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfaW9fYmluZGluZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkgYi9MaWIvaWRsZWxpYi9tYWNvc3gucHkKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbWFjb3N4LnB5CmluZGV4IGI5NmJhZTEuLmMyMjVkZDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKKysrIGIvTGliL2lkbGVsaWIvbWFjb3N4LnB5CkBAIC0xLDMwICsxLDI1IEBACiAiIiIKIEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyB0aGF0IGVuaGFuY2UgSURMRSBvbiBNYWMgT1NYLgogIiIiCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGtpbnRlcgotZnJvbSBvcyBpbXBvcnQgcGF0aAorZnJvbSBzeXMgaW1wb3J0IHBsYXRmb3JtICAjIFVzZWQgaW4gX2luaXRfdGtfdHlwZSwgY2hhbmdlZCBieSB0ZXN0LgogaW1wb3J0IHdhcm5pbmdzCiAKLWRlZiBydW5uaW5nQXNPU1hBcHAoKToKLSAgICB3YXJuaW5ncy53YXJuKCJydW5uaW5nQXNPU1hBcHAoKSBpcyBkZXByZWNhdGVkLCB1c2UgaXNBcXVhVGsoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gaXNBcXVhVGsoKQoraW1wb3J0IHRraW50ZXIKIAotZGVmIGlzQ2FyYm9uQXF1YVRrKHJvb3QpOgotICAgIHdhcm5pbmdzLndhcm4oImlzQ2FyYm9uQXF1YVRrKHJvb3QpIGlzIGRlcHJlY2F0ZWQsIHVzZSBpc0NhcmJvblRrKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuIGlzQ2FyYm9uVGsoKQorCisjIyBEZWZpbmUgZnVuY3Rpb25zIHRoYXQgcXVlcnkgdGhlIE1hYyBncmFwaGljcyB0eXBlLgorIyMgX3RrX3R5cGUgYW5kIGl0cyBpbml0aWFsaXplciBhcmUgcHJpdmF0ZSB0byB0aGlzIHNlY3Rpb24uCiAKIF90a190eXBlID0gTm9uZQogCi1kZWYgX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cyhyb290KToKK2RlZiBfaW5pdF90a190eXBlKCk6CiAgICAgIiIiCiAgICAgSW5pdGlhbGl6ZXMgT1MgWCBUayB2YXJpYW50IHZhbHVlcyBmb3IKICAgICBpc0FxdWFUaygpLCBpc0NhcmJvblRrKCksIGlzQ29jb2FUaygpLCBhbmQgaXNYUXVhcnR6KCkuCiAgICAgIiIiCiAgICAgZ2xvYmFsIF90a190eXBlCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICByb290ID0gdGtpbnRlci5UaygpCiAgICAgICAgIHdzID0gcm9vdC50ay5jYWxsKCd0aycsICd3aW5kb3dpbmdzeXN0ZW0nKQogICAgICAgICBpZiAneDExJyBpbiB3czoKICAgICAgICAgICAgIF90a190eXBlID0gInhxdWFydHoiCkBAIC0zNCw2ICsyOSw3IEBACiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJjb2NvYSIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF90a190eXBlID0gImNhcmJvbiIKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKICAgICBlbHNlOgogICAgICAgICBfdGtfdHlwZSA9ICJvdGhlciIKIApAQCAtNDEsNyArMzcsOCBAQAogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgbmF0aXZlIE9TIFggVGsgKENvY29hIG9yIENhcmJvbikuCiAgICAgIiIiCi0gICAgYXNzZXJ0IF90a190eXBlIGlzIG5vdCBOb25lCisgICAgaWYgbm90IF90a190eXBlOgorICAgICAgICBfaW5pdF90a190eXBlKCkKICAgICByZXR1cm4gX3RrX3R5cGUgPT0gImNvY29hIiBvciBfdGtfdHlwZSA9PSAiY2FyYm9uIgogCiBkZWYgaXNDYXJib25UaygpOgpAQCAtNDksMjMgKzQ2LDI3IEBACiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYSBDYXJib24gQXF1YSBUayAoaW5zdGVhZCBvZiB0aGUKICAgICBuZXdlciBDb2NvYSBBcXVhIFRrKS4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAiY2FyYm9uIgogCiBkZWYgaXNDb2NvYVRrKCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYSBDb2NvYSBBcXVhIFRrLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJjb2NvYSIKIAogZGVmIGlzWFF1YXJ0eigpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGFuIE9TIFggWDExIFRrLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJ4cXVhcnR6IgogCisKIGRlZiB0a1ZlcnNpb25XYXJuaW5nKHJvb3QpOgogICAgICIiIgogICAgIFJldHVybnMgYSBzdHJpbmcgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBUayB2ZXJzaW9uIGluIHVzZSBhcHBlYXJzIHRvCkBAIC04Niw2ICs4Nyw5IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKworIyMgRml4IHRoZSBtZW51IGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4KKwogZGVmIGFkZE9wZW5FdmVudFN1cHBvcnQocm9vdCwgZmxpc3QpOgogICAgICIiIgogICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlc3BvbmQgdG8gb3BlbiBBcHBsZUV2ZW50cywgd2hpY2gKQEAgLTEyNCwyMyArMTI4LDIzIEBACiAgICAgIyBEdWUgdG8gYSAobWlzLSlmZWF0dXJlIG9mIFRrQXF1YSB0aGUgdXNlciB3aWxsIGFsc28gc2VlIGFuIGVtcHR5IEhlbHAKICAgICAjIG1lbnUuCiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBNZW51Ci0gICAgZnJvbSBpZGxlbGliIGltcG9ydCBCaW5kaW5ncwotICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgV2luZG93TGlzdAorICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgbWFpbm1lbnUKKyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHdpbmRvd3MKIAotICAgIGNsb3NlSXRlbSA9IEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdWy0yXQorICAgIGNsb3NlSXRlbSA9IG1haW5tZW51Lm1lbnVkZWZzWzBdWzFdWy0yXQogCiAgICAgIyBSZW1vdmUgdGhlIGxhc3QgMyBpdGVtcyBvZiB0aGUgZmlsZSBtZW51OiBhIHNlcGFyYXRvciwgY2xvc2Ugd2luZG93IGFuZAogICAgICMgcXVpdC4gQ2xvc2Ugd2luZG93IHdpbGwgYmUgcmVpbnNlcnRlZCBqdXN0IGFib3ZlIHRoZSBzYXZlIGl0ZW0sIHdoZXJlCiAgICAgIyBpdCBzaG91bGQgYmUgYWNjb3JkaW5nIHRvIHRoZSBISUcuIFF1aXQgaXMgaW4gdGhlIGFwcGxpY2F0aW9uIG1lbnUuCi0gICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdWy0zOl0KLSAgICBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXS5pbnNlcnQoNiwgY2xvc2VJdGVtKQorICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1swXVsxXVstMzpdCisgICAgbWFpbm1lbnUubWVudWRlZnNbMF1bMV0uaW5zZXJ0KDYsIGNsb3NlSXRlbSkKIAogICAgICMgUmVtb3ZlIHRoZSAnQWJvdXQnIGVudHJ5IGZyb20gdGhlIGhlbHAgbWVudSwgaXQgaXMgaW4gdGhlIGFwcGxpY2F0aW9uCiAgICAgIyBtZW51Ci0gICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWy0xXVsxXVswOjJdCisgICAgZGVsIG1haW5tZW51Lm1lbnVkZWZzWy0xXVsxXVswOjJdCiAgICAgIyBSZW1vdmUgdGhlICdDb25maWd1cmUgSWRsZScgZW50cnkgZnJvbSB0aGUgb3B0aW9ucyBtZW51LCBpdCBpcyBpbiB0aGUKICAgICAjIGFwcGxpY2F0aW9uIG1lbnUgYXMgJ1ByZWZlcmVuY2VzJwotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1stMl1bMV1bMF0KKyAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbLTJdWzFdWzBdCiAgICAgbWVudWJhciA9IE1lbnUocm9vdCkKICAgICByb290LmNvbmZpZ3VyZShtZW51PW1lbnViYXIpCiAgICAgbWVudWRpY3QgPSB7fQpAQCAtMTU1LDMwICsxNTksMzAgQEAKIAogICAgICAgICBpZiBlbmQgPiAwOgogICAgICAgICAgICAgbWVudS5kZWxldGUoMCwgZW5kKQotICAgICAgICBXaW5kb3dMaXN0LmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKLSAgICBXaW5kb3dMaXN0LnJlZ2lzdGVyX2NhbGxiYWNrKHBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgd2luZG93cy5hZGRfd2luZG93c190b19tZW51KG1lbnUpCisgICAgd2luZG93cy5yZWdpc3Rlcl9jYWxsYmFjayhwb3N0d2luZG93c21lbnUpCiAKICAgICBkZWYgYWJvdXRfZGlhbG9nKGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0Fib3V0IElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIEVkaXRvcldpbmRvdy5FZGl0b3JXaW5kb3cuYWJvdXRfZGlhbG9nLgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nCi0gICAgICAgIGFib3V0RGlhbG9nLkFib3V0RGlhbG9nKHJvb3QsICdBYm91dCBJRExFJykKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuYWJvdXRfZGlhbG9nLgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKKyAgICAgICAgaGVscF9hYm91dC5BYm91dERpYWxvZyhyb290LCAnQWJvdXQgSURMRScpCiAKICAgICBkZWYgY29uZmlnX2RpYWxvZyhldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBPcHRpb25zICdDb25maWd1cmUgSURMRScgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdy5jb25maWdfZGlhbG9nLgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ0RpYWxvZworICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggZWRpdG9yLkVkaXRvcldpbmRvdy5jb25maWdfZGlhbG9nLgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ2RpYWxvZwogCiAgICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIHJvb3Qgb2JqZWN0IGhhcyBhbiBpbnN0YW5jZV9kaWN0IGF0dHJpYnV0ZSwKICAgICAgICAgIyBtaXJyb3JzIGNvZGUgaW4gRWRpdG9yV2luZG93IChhbHRob3VnaCB0aGF0IHNldHMgdGhlIGF0dHJpYnV0ZQogICAgICAgICAjIG9uIGFuIEVkaXRvcldpbmRvdyBpbnN0YW5jZSB0aGF0IGlzIHRoZW4gcGFzc2VkIGFzIHRoZSBmaXJzdAogICAgICAgICAjIGFyZ3VtZW50IHRvIENvbmZpZ0RpYWxvZykKICAgICAgICAgcm9vdC5pbnN0YW5jZV9kaWN0ID0gZmxpc3QuaW52ZXJzZWRpY3QKLSAgICAgICAgY29uZmlnRGlhbG9nLkNvbmZpZ0RpYWxvZyhyb290LCAnU2V0dGluZ3MnKQorICAgICAgICBjb25maWdkaWFsb2cuQ29uZmlnRGlhbG9nKHJvb3QsICdTZXR0aW5ncycpCiAKICAgICBkZWYgaGVscF9kaWFsb2coZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnSURMRSBIZWxwJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93LmhlbHBfZGlhbG9nLgorICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggZWRpdG9yLkVkaXRvcldpbmRvdy5oZWxwX2RpYWxvZy4KICAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCiAgICAgICAgIGhlbHAuc2hvd19pZGxlaGVscChyb290KQogCkBAIC0xOTgsMjkgKzIwMiwzMyBAQAogICAgICAgICBtZW51ZGljdFsnYXBwbGljYXRpb24nXSA9IG1lbnUgPSBNZW51KG1lbnViYXIsIG5hbWU9J2FwcGxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFyb2ZmPTApCiAgICAgICAgIG1lbnViYXIuYWRkX2Nhc2NhZGUobGFiZWw9J0lETEUnLCBtZW51PW1lbnUpCi0gICAgICAgIEJpbmRpbmdzLm1lbnVkZWZzLmluc2VydCgwLAorICAgICAgICBtYWlubWVudS5tZW51ZGVmcy5pbnNlcnQoMCwKICAgICAgICAgICAgICgnYXBwbGljYXRpb24nLCBbCiAgICAgICAgICAgICAgICAgKCdBYm91dCBJRExFJywgJzw8YWJvdXQtaWRsZT4+JyksCiAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgXSkpCi0gICAgICAgIHRrdmVyc2lvbiA9IHJvb3QudGsuZXZhbCgnaW5mbyBwYXRjaGxldmVsJykKLSAgICAgICAgaWYgdHVwbGUobWFwKGludCwgdGt2ZXJzaW9uLnNwbGl0KCcuJykpKSA8ICg4LCA0LCAxNCk6Ci0gICAgICAgICAgICAjIGZvciBlYXJsaWVyIEFxdWFUayB2ZXJzaW9ucywgc3VwcGx5IGEgUHJlZmVyZW5jZXMgbWVudSBpdGVtCi0gICAgICAgICAgICBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICgnX1ByZWZlcmVuY2VzLi4uLicsICc8PG9wZW4tY29uZmlnLWRpYWxvZz4+JyksCi0gICAgICAgICAgICAgICAgKQogICAgIGlmIGlzQ29jb2FUaygpOgogICAgICAgICAjIHJlcGxhY2UgZGVmYXVsdCBBYm91dCBkaWFsb2cgd2l0aCBBYm91dCBJRExFIG9uZQogICAgICAgICByb290LmNyZWF0ZWNvbW1hbmQoJ3RrQWJvdXREaWFsb2cnLCBhYm91dF9kaWFsb2cpCiAgICAgICAgICMgcmVwbGFjZSBkZWZhdWx0ICJIZWxwIiBpdGVtIGluIEhlbHAgbWVudQogICAgICAgICByb290LmNyZWF0ZWNvbW1hbmQoJzo6dGs6Om1hYzo6U2hvd0hlbHAnLCBoZWxwX2RpYWxvZykKICAgICAgICAgIyByZW1vdmUgcmVkdW5kYW50ICJJRExFIEhlbHAiIGZyb20gbWVudQotICAgICAgICBkZWwgQmluZGluZ3MubWVudWRlZnNbLTFdWzFdWzBdCisgICAgICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1stMV1bMV1bMF0KKworZGVmIGZpeGIyY29udGV4dChyb290KToKKyAgICAnJydSZW1vdmVkIGJhZCBBcXVhVGsgQnV0dG9uLTIgKHJpZ2h0KSBhbmQgUGFzdGUgYmluZGluZ3MuCisKKyAgICBUaGV5IHByZXZlbnQgY29udGV4dCBtZW51IGFjY2VzcyBhbmQgc2VlbSB0byBiZSBnb25lIGluIEFxdWFUazguNi4KKyAgICBTZWUgaXNzdWUgIzI0ODAxLgorICAgICcnJworICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMj4nKQorICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMi1Nb3Rpb24+JykKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8PFBhc3RlU2VsZWN0aW9uPj4nKQogCiBkZWYgc2V0dXBBcHAocm9vdCwgZmxpc3QpOgogICAgICIiIgogICAgIFBlcmZvcm0gaW5pdGlhbCBPUyBYIGN1c3RvbWl6YXRpb25zIGlmIG5lZWRlZC4KLSAgICBDYWxsZWQgZnJvbSBQeVNoZWxsLm1haW4oKSBhZnRlciBpbml0aWFsIGNhbGxzIHRvIFRrKCkKKyAgICBDYWxsZWQgZnJvbSBweXNoZWxsLm1haW4oKSBhZnRlciBpbml0aWFsIGNhbGxzIHRvIFRrKCkKIAogICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdGhyZWUgbWFqb3IgdmVyc2lvbnMgb2YgVGsgaW4gdXNlIG9uIE9TIFg6CiAgICAgICAgIDEuIEFxdWEgQ29jb2EgVGsgKG5hdGl2ZSBkZWZhdWx0IHNpbmNlIE9TIFggMTAuNikKQEAgLTIzMyw4ICsyNDEsMTMgQEAKICAgICBpc0FxdWFUaygpLCBpc0NhcmJvblRrKCksIGlzQ29jb2FUaygpLCBpc1hRdWFydHooKSBmdW5jdGlvbnMgd2hpY2gKICAgICBhcmUgaW5pdGlhbGl6ZWQgaGVyZSBhcyB3ZWxsLgogICAgICIiIgotICAgIF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMocm9vdCkKICAgICBpZiBpc0FxdWFUaygpOgogICAgICAgICBoaWRlVGtDb25zb2xlKHJvb3QpCiAgICAgICAgIG92ZXJyaWRlUm9vdE1lbnUocm9vdCwgZmxpc3QpCiAgICAgICAgIGFkZE9wZW5FdmVudFN1cHBvcnQocm9vdCwgZmxpc3QpCisgICAgICAgIGZpeGIyY29udGV4dChyb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbWFpbgorICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfbWFjb3N4JywgdmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9CaW5kaW5ncy5weSBiL0xpYi9pZGxlbGliL21haW5tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0JpbmRpbmdzLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9tYWlubWVudS5weQppbmRleCBlMTlhMjc5Li42NTM0NWNkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9CaW5kaW5ncy5weQorKysgYi9MaWIvaWRsZWxpYi9tYWlubWVudS5weQpAQCAtMTAsOSArMTAsOSBAQAogIiIiCiBmcm9tIGltcG9ydGxpYi51dGlsIGltcG9ydCBmaW5kX3NwZWMKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCi0jICAgV2FybmluZzogbWVudWRlZnMgaXMgYWx0ZXJlZCBpbiBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUoKQorIyAgIFdhcm5pbmc6IG1lbnVkZWZzIGlzIGFsdGVyZWQgaW4gbWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUoKQogIyAgIGFmdGVyIGl0IGlzIGRldGVybWluZWQgdGhhdCBhbiBPUyBYIEFxdWEgVGsgaXMgaW4gdXNlLAogIyAgIHdoaWNoIGNhbm5vdCBiZSBkb25lIHVudGlsIGFmdGVyIFRrKCkgaXMgZmlyc3QgY2FsbGVkLgogIyAgIERvIG5vdCBhbHRlciB0aGUgJ2ZpbGUnLCAnb3B0aW9ucycsIG9yICdoZWxwJyBjYXNjYWRlcyBoZXJlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9NdWx0aUNhbGwucHkgYi9MaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKaW5kZXggODQ2Mjg1NC4uYjc0ZmVkNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL211bHRpY2FsbC5weQpAQCAtMjgsOSArMjgsOSBAQAogICAgdW5sZXNzIHRoaXMgY29uZmxpY3RzIHdpdGggdGhlIGZpcnN0IHJ1bGUuCiBFYWNoIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGF0IG1vc3Qgb25jZSBmb3IgZWFjaCBldmVudC4KICIiIgotCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwogaW1wb3J0IHRraW50ZXIKIAogIyB0aGUgZXZlbnQgdHlwZSBjb25zdGFudHMsIHdoaWNoIGRlZmluZSB0aGUgbWVhbmluZyBvZiBtY190eXBlCkBAIC00MTQsMTIgKzQxNCwxMiBAQAogICAgIHJldHVybiBNdWx0aUNhbGwKIAogCi1kZWYgX211bHRpX2NhbGwocGFyZW50KToKLSAgICByb290ID0gdGtpbnRlci5UaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBNdWx0aUNhbGwiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICB0ZXh0ID0gTXVsdGlDYWxsQ3JlYXRvcih0a2ludGVyLlRleHQpKHJvb3QpCitkZWYgX211bHRpX2NhbGwocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IHRraW50ZXIuVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBNdWx0aUNhbGwiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdGV4dCA9IE11bHRpQ2FsbENyZWF0b3IodGtpbnRlci5UZXh0KSh0b3ApCiAgICAgdGV4dC5wYWNrKCkKICAgICBkZWYgYmluZHNlcShzZXEsIG49WzBdKToKICAgICAgICAgZGVmIGhhbmRsZXIoZXZlbnQpOgpAQCAtNDM5LDcgKzQzOSw2IEBACiAgICAgYmluZHNlcSgiPEZvY3VzT3V0PiIpCiAgICAgYmluZHNlcSgiPEVudGVyPiIpCiAgICAgYmluZHNlcSgiPExlYXZlPiIpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9PdXRwdXRXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9vdXR3aW4ucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9vdXR3aW4ucHkKaW5kZXggZTYxNGY5Yi4uZjZkMjkxNSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL291dHdpbi5weQpAQCAtMSw4ICsxLDExIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdwogaW1wb3J0IHJlCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgKgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCisKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKKwogCiBjbGFzcyBPdXRwdXRXaW5kb3coRWRpdG9yV2luZG93KToKIApAQCAtMzYsNyArMzksNyBAQAogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHMsIHRhZ3M9KCksIG1hcms9Imluc2VydCIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHMsIChieXRlcywgYnl0ZXMpKToKLSAgICAgICAgICAgIHMgPSBzLmRlY29kZShJT0JpbmRpbmcuZW5jb2RpbmcsICJyZXBsYWNlIikKKyAgICAgICAgICAgIHMgPSBzLmRlY29kZShpb21lbnUuZW5jb2RpbmcsICJyZXBsYWNlIikKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydChtYXJrLCBzLCB0YWdzKQogICAgICAgICBzZWxmLnRleHQuc2VlKG1hcmspCiAgICAgICAgIHNlbGYudGV4dC51cGRhdGUoKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRm9ybWF0UGFyYWdyYXBoLnB5IGIvTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CmluZGV4IDdhOWQxODUuLmYxMWJkYWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weQorKysgYi9MaWIvaWRsZWxpYi9wYXJhZ3JhcGgucHkKQEAgLTE0LDkgKzE0LDEwIEBACiAgIHNwYWNlcywgdGhleSB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNhbWUgYmxvY2suCiAqIEZhbmN5IGNvbW1lbnRzLCBsaWtlIHRoaXMgYnVsbGV0ZWQgbGlzdCwgYXJlbid0IGhhbmRsZWQgOi0pCiAiIiIKLQogaW1wb3J0IHJlCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKKwogCiBjbGFzcyBGb3JtYXRQYXJhZ3JhcGg6CiAKQEAgLTEyOSw3ICsxMzAsNyBAQAogICAgIHBhcnRpYWwgPSBpbmRlbnQxCiAgICAgd2hpbGUgaSA8IG4gYW5kIG5vdCBpc19hbGxfd2hpdGUobGluZXNbaV0pOgogICAgICAgICAjIFhYWCBTaG91bGQgdGFrZSBkb3VibGUgc3BhY2UgYWZ0ZXIgcGVyaW9kIChldGMuKSBpbnRvIGFjY291bnQKLSAgICAgICAgd29yZHMgPSByZS5zcGxpdCgiKFxzKykiLCBsaW5lc1tpXSkKKyAgICAgICAgd29yZHMgPSByZS5zcGxpdChyIihccyspIiwgbGluZXNbaV0pCiAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIGxlbih3b3JkcyksIDIpOgogICAgICAgICAgICAgd29yZCA9IHdvcmRzW2pdCiAgICAgICAgICAgICBpZiBub3Qgd29yZDoKQEAgLTE4OSw3ICsxOTAsOCBAQAogICAgIGlmIG0gaXMgTm9uZTogcmV0dXJuICIiCiAgICAgcmV0dXJuIG0uZ3JvdXAoMSkKIAorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfZm9ybWF0cGFyYWdyYXBoJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3BhcmFncmFwaCcsCiAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkgYi9MaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BhcmVubWF0Y2gucHkKaW5kZXggNDdlMTBmMy4uY2NlYzcwOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGFyZW5NYXRjaC5weQorKysgYi9MaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CkBAIC00LDkgKzQsOCBAQAogcGFyZW4uICBQYXJlbiBoZXJlIGlzIHVzZWQgZ2VuZXJpY2FsbHk7IHRoZSBtYXRjaGluZyBhcHBsaWVzIHRvCiBwYXJlbnRoZXNlcywgc3F1YXJlIGJyYWNrZXRzLCBhbmQgY3VybHkgYnJhY2VzLgogIiIiCi0KLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmh5cGVycGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogX29wZW5lcnMgPSB7JyknOicoJywnXSc6J1snLCd9Jzoneyd9CiBDSEVDS19ERUxBWSA9IDEwMCAjIG1pbGxpc2Vjb25kcwpAQCAtNjQsNiArNjMsNyBAQAogICAgICAgICAjIGFuZCBkZWFjdGl2YXRlX3Jlc3RvcmUgKHdoaWNoIGNhbGxzIGV2ZW50X2RlbGV0ZSkuCiAgICAgICAgIGVkaXR3aW4udGV4dC5iaW5kKHNlbGYuUkVTVE9SRV9WSVJUVUFMX0VWRU5UX05BTUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdG9yZV9ldmVudCkKKyAgICAgICAgc2VsZi5iZWxsID0gc2VsZi50ZXh0LmJlbGwgaWYgc2VsZi5CRUxMIGVsc2UgbGFtYmRhOiBOb25lCiAgICAgICAgIHNlbGYuY291bnRlciA9IDAKICAgICAgICAgc2VsZi5pc19yZXN0b3JlX2FjdGl2ZSA9IDAKICAgICAgICAgc2VsZi5zZXRfc3R5bGUoc2VsZi5TVFlMRSkKQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgICAgaW5kaWNlcyA9IChIeXBlclBhcnNlcihzZWxmLmVkaXR3aW4sICJpbnNlcnQiKQogICAgICAgICAgICAgICAgICAgIC5nZXRfc3Vycm91bmRpbmdfYnJhY2tldHMoKSkKICAgICAgICAgaWYgaW5kaWNlcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi53YXJuX21pc21hdGNoZWQoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFjdGl2YXRlX3Jlc3RvcmUoKQogICAgICAgICBzZWxmLmNyZWF0ZV90YWcoaW5kaWNlcykKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGluZGljZXMgPSBocC5nZXRfc3Vycm91bmRpbmdfYnJhY2tldHMoX29wZW5lcnNbY2xvc2VyXSwgVHJ1ZSkKICAgICAgICAgaWYgaW5kaWNlcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi53YXJuX21pc21hdGNoZWQoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFjdGl2YXRlX3Jlc3RvcmUoKQogICAgICAgICBzZWxmLmNyZWF0ZV90YWcoaW5kaWNlcykKQEAgLTEyNCwxMCArMTI0LDYgQEAKICAgICAgICAgaWYgdGltZXJfY291bnQgPT0gc2VsZi5jb3VudGVyOgogICAgICAgICAgICAgc2VsZi5yZXN0b3JlX2V2ZW50KCkKIAotICAgIGRlZiB3YXJuX21pc21hdGNoZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuQkVMTDoKLSAgICAgICAgICAgIHNlbGYudGV4dC5iZWxsKCkKLQogICAgICMgYW55IG9uZSBvZiB0aGUgY3JlYXRlX3RhZ19YWFggbWV0aG9kcyBjYW4gYmUgdXNlZCBkZXBlbmRpbmcgb24KICAgICAjIHRoZSBzdHlsZQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL3BhdGhicm93c2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQppbmRleCA5YWI3NjMyLi42YzE5NTA4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQpAQCAtMSwxMCArMSwxMCBAQAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIAotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVJdGVtCi1mcm9tIGlkbGVsaWIuQ2xhc3NCcm93c2VyIGltcG9ydCBDbGFzc0Jyb3dzZXIsIE1vZHVsZUJyb3dzZXJUcmVlSXRlbQotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorZnJvbSBpZGxlbGliLmJyb3dzZXIgaW1wb3J0IENsYXNzQnJvd3NlciwgTW9kdWxlQnJvd3NlclRyZWVJdGVtCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Citmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZUl0ZW0KIAogCiBjbGFzcyBQYXRoQnJvd3NlcihDbGFzc0Jyb3dzZXIpOgpAQCAtMjQsNiArMjQsNyBAQAogICAgIGRlZiByb290bm9kZShzZWxmKToKICAgICAgICAgcmV0dXJuIFBhdGhCcm93c2VyVHJlZUl0ZW0oKQogCisKIGNsYXNzIFBhdGhCcm93c2VyVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIEdldFRleHQoc2VsZik6CkBAIC0zNiw2ICszNyw3IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCisKIGNsYXNzIERpckJyb3dzZXJUcmVlSXRlbShUcmVlSXRlbSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGlyLCBwYWNrYWdlcz1bXSk6CkBAIC05NSw2ICs5Nyw3IEBACiAgICAgICAgIHNvcnRlZC5zb3J0KCkKICAgICAgICAgcmV0dXJuIHNvcnRlZAogCisKIGRlZiBfcGF0aF9icm93c2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChwYXJlbnQpCiAgICAgUGF0aEJyb3dzZXIoZmxpc3QsIF9odGVzdD1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUGVyY29sYXRvci5weSBiL0xpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUGVyY29sYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGVyY29sYXRvci5weQppbmRleCBiOGJlMmFhLi5kMThkYWYwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QZXJjb2xhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKQEAgLTEsNSArMSw1IEBACi1mcm9tIGlkbGVsaWIuV2lkZ2V0UmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5yZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCiAKIAogY2xhc3MgUGVyY29sYXRvcjoKQEAgLTU3LDcgKzU3LDYgQEAKIAogZGVmIF9wZXJjb2xhdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBpbXBvcnQgdGtpbnRlciBhcyB0awotICAgIGltcG9ydCByZQogCiAgICAgY2xhc3MgVHJhY2VyKERlbGVnYXRvcik6CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKQEAgLTc0LDggKzczLDggQEAKIAogICAgIGJveCA9IHRrLlRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgUGVyY29sYXRvciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIHRleHQgPSB0ay5UZXh0KGJveCkKICAgICBwID0gUGVyY29sYXRvcih0ZXh0KQogICAgIHBpbiA9IHAuaW5zZXJ0ZmlsdGVyCkBAIC04OSwxMCArODgsMTAgQEAKICAgICAgICAgKHBpbiBpZiB2YXIyLmdldCgpIGVsc2UgcG91dCkodDIpCiAKICAgICB0ZXh0LnBhY2soKQotICAgIHZhcjEgPSB0ay5JbnRWYXIoKQorICAgIHZhcjEgPSB0ay5JbnRWYXIocGFyZW50KQogICAgIGNiMSA9IHRrLkNoZWNrYnV0dG9uKGJveCwgdGV4dD0iVHJhY2VyMSIsIGNvbW1hbmQ9dG9nZ2xlMSwgdmFyaWFibGU9dmFyMSkKICAgICBjYjEucGFjaygpCi0gICAgdmFyMiA9IHRrLkludFZhcigpCisgICAgdmFyMiA9IHRrLkludFZhcihwYXJlbnQpCiAgICAgY2IyID0gdGsuQ2hlY2tidXR0b24oYm94LCB0ZXh0PSJUcmFjZXIyIiwgY29tbWFuZD10b2dnbGUyLCB2YXJpYWJsZT12YXIyKQogICAgIGNiMi5wYWNrKCkKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlQYXJzZS5weSBiL0xpYi9pZGxlbGliL3B5cGFyc2UucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUHlQYXJzZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcHlwYXJzZS5weQppbmRleCA5Y2NiYjI1Li42NzM5ZGZkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QeVBhcnNlLnB5CisrKyBiL0xpYi9pZGxlbGliL3B5cGFyc2UucHkKQEAgLTEsNiArMSw2IEBACitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE1hcHBpbmcKIAogIyBSZWFzb24gbGFzdCBzdG10IGlzIGNvbnRpbnVlZCAob3IgQ19OT05FIGlmIGl0J3Mgbm90KS4KIChDX05PTkUsIENfQkFDS1NMQVNILCBDX1NUUklOR19GSVJTVF9MSU5FLApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weSBiL0xpYi9pZGxlbGliL3B5c2hlbGwucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUHlTaGVsbC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcHlzaGVsbC5weQppbmRleCA1ZGVjNjhlLi5lMWVhZGUxIDEwMDc1NQotLS0gYS9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL3B5c2hlbGwucHkKQEAgLTEsMjEgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotaW1wb3J0IGdldG9wdAotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHJlCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHRpbWUKLWltcG9ydCB0b2tlbml6ZQotaW1wb3J0IGlvCi0KLWltcG9ydCBsaW5lY2FjaGUKLWZyb20gY29kZSBpbXBvcnQgSW50ZXJhY3RpdmVJbnRlcnByZXRlcgotZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX3ZlcnNpb24sIHN5c3RlbQotCiB0cnk6CiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCAqCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMywxNyArNyw0MiBAQAogICAgICAgICAgICJZb3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrLiAqKiIsIGZpbGU9c3lzLl9fc3RkZXJyX18pCiAgICAgc3lzLmV4aXQoMSkKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpZiBUa1ZlcnNpb24gPCA4LjU6CisgICAgcm9vdCA9IFRrKCkgICMgb3RoZXJ3aXNlIGNyZWF0ZSByb290IGluIG1haW4KKyAgICByb290LndpdGhkcmF3KCkKKyAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJZGxlIENhbm5vdCBTdGFydCIsCisgICAgICAgICAgICAiSWRsZSByZXF1aXJlcyB0Y2wvdGsgOC41Kywgbm90ICRzLiIgJSBUa1ZlcnNpb24sCisgICAgICAgICAgICBwYXJlbnQ9cm9vdCkKKyAgICBzeXMuZXhpdCgxKQogCi1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3csIGZpeHdvcmRicmVha3MKLWZyb20gaWRsZWxpYi5GaWxlTGlzdCBpbXBvcnQgRmlsZUxpc3QKLWZyb20gaWRsZWxpYi5Db2xvckRlbGVnYXRvciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IKLWZyb20gaWRsZWxpYi5VbmRvRGVsZWdhdG9yIGltcG9ydCBVbmRvRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuT3V0cHV0V2luZG93IGltcG9ydCBPdXRwdXRXaW5kb3cKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBjb2RlIGltcG9ydCBJbnRlcmFjdGl2ZUludGVycHJldGVyCitpbXBvcnQgZ2V0b3B0CitpbXBvcnQgaW8KK2ltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2Zyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uLCBzeXN0ZW0KK2ltcG9ydCByZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB3YXJuaW5ncworCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRlc3RpbmcgICMgYm9vbCB2YWx1ZQorZnJvbSBpZGxlbGliLmNvbG9yaXplciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyX3IKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdywgZml4d29yZGJyZWFrcworZnJvbSBpZGxlbGliLmZpbGVsaXN0IGltcG9ydCBGaWxlTGlzdAorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5vdXR3aW4gaW1wb3J0IE91dHB1dFdpbmRvdwogZnJvbSBpZGxlbGliIGltcG9ydCBycGMKLWZyb20gaWRsZWxpYiBpbXBvcnQgRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSBpZGxlbGliLnJ1biBpbXBvcnQgaWRsZV9mb3JtYXR3YXJuaW5nLCBQc2V1ZG9JbnB1dEZpbGUsIFBzZXVkb091dHB1dEZpbGUKK2Zyb20gaWRsZWxpYi51bmRvIGltcG9ydCBVbmRvRGVsZWdhdG9yCiAKIEhPU1QgPSAnMTI3LjAuMC4xJyAjIHB5dGhvbiBleGVjdXRpb24gc2VydmVyIG9uIGxvY2FsaG9zdCBsb29wYmFjawogUE9SVCA9IDAgICMgc29tZWRheSBwYXNzIGluIGhvc3QsIHBvcnQgZm9yIHJlbW90ZSBkZWJ1ZyBjYXBhYmlsaXR5CkBAIC00MywyMCArNTIsNiBAQAogIyB0ZW1wb3JhcmlseSByZWRpcmVjdCB0aGUgc3RyZWFtIHRvIHRoZSBzaGVsbCB3aW5kb3cgdG8gZGlzcGxheSB3YXJuaW5ncyB3aGVuCiAjIGNoZWNraW5nIHVzZXIncyBjb2RlLgogd2FybmluZ19zdHJlYW0gPSBzeXMuX19zdGRlcnJfXyAgIyBOb25lLCBhdCBsZWFzdCBvbiBXaW5kb3dzLCBpZiBubyBjb25zb2xlLgotaW1wb3J0IHdhcm5pbmdzCi0KLWRlZiBpZGxlX2Zvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6Ci0gICAgIiIiRm9ybWF0IHdhcm5pbmdzIHRoZSBJRExFIHdheS4iIiIKLQotICAgIHMgPSAiXG5XYXJuaW5nIChmcm9tIHdhcm5pbmdzIG1vZHVsZSk6XG4iCi0gICAgcyArPSAnICBGaWxlIFwiJXNcIiwgbGluZSAlc1xuJyAlIChmaWxlbmFtZSwgbGluZW5vKQotICAgIGlmIGxpbmUgaXMgTm9uZToKLSAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCi0gICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgIGlmIGxpbmU6Ci0gICAgICAgIHMgKz0gIiAgICAlc1xuIiAlIGxpbmUKLSAgICBzICs9ICIlczogJXNcbiIgJSAoY2F0ZWdvcnkuX19uYW1lX18sIG1lc3NhZ2UpCi0gICAgcmV0dXJuIHMKIAogZGVmIGlkbGVfc2hvd3dhcm5pbmcoCiAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CkBAIC00MTAsNyArNDA1LDcgQEAKICAgICAgICAgIyBydW4gZnJvbSB0aGUgSURMRSBzb3VyY2UgZGlyZWN0b3J5LgogICAgICAgICBkZWxfZXhpdGYgPSBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnR2VuZXJhbCcsICdkZWxldGUtZXhpdGZ1bmMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgdHlwZT0nYm9vbCcpCi0gICAgICAgIGlmIF9fbmFtZV9fID09ICdpZGxlbGliLlB5U2hlbGwnOgorICAgICAgICBpZiBfX25hbWVfXyA9PSAnaWRsZWxpYi5weXNoZWxsJzoKICAgICAgICAgICAgIGNvbW1hbmQgPSAiX19pbXBvcnRfXygnaWRsZWxpYi5ydW4nKS5ydW4ubWFpbiglcikiICUgKGRlbF9leGl0ZiwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb21tYW5kID0gIl9faW1wb3J0X18oJ3J1bicpLm1haW4oJXIpIiAlIChkZWxfZXhpdGYsKQpAQCAtNDY4LDcgKzQ2Myw3IEBACiAgICAgICAgIGlmIGRlYnVnOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgT25seSBjbG9zZSBzdWJwcm9jZXNzIGRlYnVnZ2VyLCBkb24ndCB1bnJlZ2lzdGVyIGd1aV9hZGFwIQotICAgICAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLmNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCisgICAgICAgICAgICAgICAgZGVidWdnZXJfci5jbG9zZV9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBLaWxsIHN1YnByb2Nlc3MsIHNwYXduIGEgbmV3IG9uZSwgYWNjZXB0IGNvbm5lY3Rpb24uCkBAIC00OTcsNyArNDkyLDcgQEAKICAgICAgICAgIyByZXN0YXJ0IHN1YnByb2Nlc3MgZGVidWdnZXIKICAgICAgICAgaWYgZGVidWc6CiAgICAgICAgICAgICAjIFJlc3RhcnRlZCBkZWJ1Z2dlciBjb25uZWN0cyB0byBjdXJyZW50IGluc3RhbmNlIG9mIGRlYnVnIEdVSQotICAgICAgICAgICAgUmVtb3RlRGVidWdnZXIucmVzdGFydF9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQorICAgICAgICAgICAgZGVidWdnZXJfci5yZXN0YXJ0X3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCiAgICAgICAgICAgICAjIHJlbG9hZCByZW1vdGUgZGVidWdnZXIgYnJlYWtwb2ludHMgZm9yIGFsbCBQeVNoZWxsRWRpdFdpbmRvd3MKICAgICAgICAgICAgIGRlYnVnLmxvYWRfYnJlYWtwb2ludHMoKQogICAgICAgICBzZWxmLmNvbXBpbGUuY29tcGlsZXIuZmxhZ3MgPSBzZWxmLm9yaWdpbmFsX2NvbXBpbGVyX2ZsYWdzCkBAIC01NzgsNyArNTczLDcgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnRrY29uc29sZS5nZXR2YXIoIjw8dG9nZ2xlLWppdC1zdGFjay12aWV3ZXI+PiIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW90ZV9zdGFja192aWV3ZXIoKQogICAgICAgICAgICAgZWxpZiBob3cgPT0gIkVSUk9SIjoKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAiUHlTaGVsbC5Nb2RpZmllZEludGVycHJldGVyOiBTdWJwcm9jZXNzIEVSUk9SOlxuIgorICAgICAgICAgICAgICAgIGVycm1zZyA9ICJweXNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXI6IFN1YnByb2Nlc3MgRVJST1I6XG4iCiAgICAgICAgICAgICAgICAgcHJpbnQoZXJybXNnLCB3aGF0LCBmaWxlPXN5cy5fX3N0ZGVycl9fKQogICAgICAgICAgICAgICAgIHByaW50KGVycm1zZywgd2hhdCwgZmlsZT1jb25zb2xlKQogICAgICAgICAgICAgIyB3ZSByZWNlaXZlZCBhIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIHNlcSBudW1iZXI6CkBAIC02MTMsMTMgKzYwOCwxMyBAQAogICAgICAgICByZXR1cm4KIAogICAgIGRlZiByZW1vdGVfc3RhY2tfdmlld2VyKHNlbGYpOgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZU9iamVjdEJyb3dzZXIKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z29ial9yCiAgICAgICAgIG9pZCA9IHNlbGYucnBjY2x0LnJlbW90ZXF1ZXVlKCJleGVjIiwgInN0YWNrdmlld2VyIiwgKCJmbGlzdCIsKSwge30pCiAgICAgICAgIGlmIG9pZCBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi50a2NvbnNvbGUucm9vdC5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpdGVtID0gUmVtb3RlT2JqZWN0QnJvd3Nlci5TdHViT2JqZWN0VHJlZUl0ZW0oc2VsZi5ycGNjbHQsIG9pZCkKLSAgICAgICAgZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFNjcm9sbGVkQ2FudmFzLCBUcmVlTm9kZQorICAgICAgICBpdGVtID0gZGVidWdvYmpfci5TdHViT2JqZWN0VHJlZUl0ZW0oc2VsZi5ycGNjbHQsIG9pZCkKKyAgICAgICAgZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFNjcm9sbGVkQ2FudmFzLCBUcmVlTm9kZQogICAgICAgICB0b3AgPSBUb3BsZXZlbChzZWxmLnRrY29uc29sZS5yb290KQogICAgICAgICB0aGVtZSA9IGlkbGVDb25mLkN1cnJlbnRUaGVtZSgpCiAgICAgICAgIGJhY2tncm91bmQgPSBpZGxlQ29uZi5HZXRIaWdobGlnaHQodGhlbWUsICdub3JtYWwnKVsnYmFja2dyb3VuZCddCkBAIC02NjIsOSArNjU3LDkgQEAKICAgICAgICAgIyBhdCB0aGUgbW9tZW50LCBJbnRlcmFjdGl2ZUludGVycHJldGVyIGV4cGVjdHMgc3RyCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNvdXJjZSwgc3RyKQogICAgICAgICAjaWYgaXNpbnN0YW5jZShzb3VyY2UsIHN0cik6Ci0gICAgICAgICMgICAgZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKKyAgICAgICAgIyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGlvbWVudQogICAgICAgICAjICAgIHRyeToKLSAgICAgICAgIyAgICAgICAgc291cmNlID0gc291cmNlLmVuY29kZShJT0JpbmRpbmcuZW5jb2RpbmcpCisgICAgICAgICMgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5lbmNvZGUoaW9tZW51LmVuY29kaW5nKQogICAgICAgICAjICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgICMgICAgICAgIHNlbGYudGtjb25zb2xlLnJlc2V0b3V0cHV0KCkKICAgICAgICAgIyAgICAgICAgc2VsZi53cml0ZSgiVW5zdXBwb3J0ZWQgY2hhcmFjdGVycyBpbiBpbnB1dFxuIikKQEAgLTg1MCw3ICs4NDUsNyBAQAogCiAKICAgICAjIE5ldyBjbGFzc2VzCi0gICAgZnJvbSBpZGxlbGliLklkbGVIaXN0b3J5IGltcG9ydCBIaXN0b3J5CisgICAgZnJvbSBpZGxlbGliLmhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lKToKICAgICAgICAgaWYgdXNlX3N1YnByb2Nlc3M6CkBAIC04ODgsMTEgKzg4MywxMSBAQAogICAgICAgICBzZWxmLnNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzZWxmLnNhdmVfc3RkZXJyID0gc3lzLnN0ZGVycgogICAgICAgICBzZWxmLnNhdmVfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKLSAgICAgICAgc2VsZi5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLCAic3RkaW4iLCBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3Rkb3V0IiwgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzZWxmLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZGVyciIsIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc2VsZi5jb25zb2xlID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAiY29uc29sZSIsIElPQmluZGluZy5lbmNvZGluZykKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKKyAgICAgICAgc2VsZi5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLCAic3RkaW4iLCBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3Rkb3V0IiwgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzZWxmLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZGVyciIsIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc2VsZi5jb25zb2xlID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAiY29uc29sZSIsIGlvbWVudS5lbmNvZGluZykKICAgICAgICAgaWYgbm90IHVzZV9zdWJwcm9jZXNzOgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuc3Rkb3V0CiAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc2VsZi5zdGRlcnIKQEAgLTkwMCw3ICs4OTUsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCiAgICAgICAgICAgICBpbXBvcnQgcHlkb2MgIyBpbXBvcnQgbXVzdCBiZSBkb25lIGhlcmUgdG8gY2FwdHVyZSBpL28gcmViaW5kaW5nLgotICAgICAgICAgICAgIyBYWFggS0JLIDI3RGVjMDcgdXNlIGEgdGV4dFZpZXcgc29tZWRheSwgYnV0IG11c3Qgd29yayB3L28gc3VicHJvYworICAgICAgICAgICAgIyBYWFggS0JLIDI3RGVjMDcgdXNlIFRleHRWaWV3ZXIgc29tZWRheSwgYnV0IG11c3Qgd29yayB3L28gc3VicHJvYwogICAgICAgICAgICAgcHlkb2MucGFnZXIgPSBweWRvYy5wbGFpbnBhZ2VyCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwpAQCAtOTU0LDcgKzk0OSw3IEBACiAgICAgICAgICAgICBzZWxmLmludGVycC5zZXRkZWJ1Z2dlcihOb25lKQogICAgICAgICAgICAgZGIuY2xvc2UoKQogICAgICAgICAgICAgaWYgc2VsZi5pbnRlcnAucnBjY2x0OgotICAgICAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQpCisgICAgICAgICAgICAgICAgZGVidWdnZXJfci5jbG9zZV9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0KQogICAgICAgICAgICAgc2VsZi5yZXNldG91dHB1dCgpCiAgICAgICAgICAgICBzZWxmLmNvbnNvbGUud3JpdGUoIltERUJVRyBPRkZdXG4iKQogICAgICAgICAgICAgc3lzLnBzMSA9ICI+Pj4gIgpAQCAtOTYzLDEwICs5NTgsMTAgQEAKIAogICAgIGRlZiBvcGVuX2RlYnVnZ2VyKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmludGVycC5ycGNjbHQ6Ci0gICAgICAgICAgICBkYmdfZ3VpID0gUmVtb3RlRGVidWdnZXIuc3RhcnRfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCwKKyAgICAgICAgICAgIGRiZ19ndWkgPSBkZWJ1Z2dlcl9yLnN0YXJ0X3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYmdfZ3VpID0gRGVidWdnZXIuRGVidWdnZXIoc2VsZikKKyAgICAgICAgICAgIGRiZ19ndWkgPSBkZWJ1Z2dlci5EZWJ1Z2dlcihzZWxmKQogICAgICAgICBzZWxmLmludGVycC5zZXRkZWJ1Z2dlcihkYmdfZ3VpKQogICAgICAgICBkYmdfZ3VpLmxvYWRfYnJlYWtwb2ludHMoKQogICAgICAgICBzeXMucHMxID0gIltERUJVRyBPTl1cbj4+PiAiCkBAIC0xMjQxLDcgKzEyMzYsNyBAQAogICAgICAgICAgICAgICAgICIoc3lzLmxhc3RfdHJhY2ViYWNrIGlzIG5vdCBkZWZpbmVkKSIsCiAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBmcm9tIGlkbGVsaWIuU3RhY2tWaWV3ZXIgaW1wb3J0IFN0YWNrQnJvd3NlcgorICAgICAgICBmcm9tIGlkbGVsaWIuc3RhY2t2aWV3ZXIgaW1wb3J0IFN0YWNrQnJvd3NlcgogICAgICAgICBTdGFja0Jyb3dzZXIoc2VsZi5yb290LCBzZWxmLmZsaXN0KQogCiAgICAgZGVmIHZpZXdfcmVzdGFydF9tYXJrKHNlbGYsIGV2ZW50PU5vbmUpOgpAQCAtMTMwOSw5MiArMTMwNCw2IEBACiAgICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJwogICAgICAgICByZXR1cm4gc3VwZXIoKS5ybWVudV9jaGVja19wYXN0ZSgpCiAKLWNsYXNzIFBzZXVkb0ZpbGUoaW8uVGV4dElPQmFzZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICBzZWxmLnNoZWxsID0gc2hlbGwKLSAgICAgICAgc2VsZi50YWdzID0gdGFncwotICAgICAgICBzZWxmLl9lbmNvZGluZyA9IGVuY29kaW5nCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgZW5jb2Rpbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9lbmNvZGluZwotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnPCVzPicgJSBzZWxmLnRhZ3MKLQotICAgIGRlZiBpc2F0dHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLQotY2xhc3MgUHNldWRvT3V0cHV0RmlsZShQc2V1ZG9GaWxlKToKLQotICAgIGRlZiB3cml0YWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiB3cml0ZShzZWxmLCBzKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSB0byBjbG9zZWQgZmlsZSIpCi0gICAgICAgIGlmIHR5cGUocykgaXMgbm90IHN0cjoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIHN0cik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIHN0ciwgbm90ICcgKyB0eXBlKHMpLl9fbmFtZV9fKQotICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzE5NDgxCi0gICAgICAgICAgICBzID0gc3RyLl9fc3RyX18ocykKLSAgICAgICAgcmV0dXJuIHNlbGYuc2hlbGwud3JpdGUocywgc2VsZi50YWdzKQotCi0KLWNsYXNzIFBzZXVkb0lucHV0RmlsZShQc2V1ZG9GaWxlKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgICAgIFBzZXVkb0ZpbGUuX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nKQotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCi0KLSAgICBkZWYgcmVhZGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQotICAgICAgICBpZiBzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICBzaXplID0gLTEKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQotICAgICAgICByZXN1bHQgPSBzZWxmLl9saW5lX2J1ZmZlcgotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCi0gICAgICAgIGlmIHNpemUgPCAwOgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdoaWxlIGxlbihyZXN1bHQpIDwgc2l6ZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKLSAgICAgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gcmVzdWx0W3NpemU6XQotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzpzaXplXQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgc2l6ZSA9IC0xCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKLSAgICAgICAgbGluZSA9IHNlbGYuX2xpbmVfYnVmZmVyIG9yIHNlbGYuc2hlbGwucmVhZGxpbmUoKQotICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgIHNpemUgPSBsZW4obGluZSkKLSAgICAgICAgZW9sID0gbGluZS5maW5kKCdcbicsIDAsIHNpemUpCi0gICAgICAgIGlmIGVvbCA+PSAwOgotICAgICAgICAgICAgc2l6ZSA9IGVvbCArIDEKLSAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSBsaW5lW3NpemU6XQotICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5zaGVsbC5jbG9zZSgpCi0KIAogZGVmIGZpeF94MTFfcGFzdGUocm9vdCk6CiAgICAgIk1ha2UgcGFzdGUgcmVwbGFjZSBzZWxlY3Rpb24gb24geDExLiAgU2VlIGlzc3VlICM1MTI0LiIKQEAgLTE1NDAsNyArMTQ0OSwxMCBAQAogICAgIGVuYWJsZV9lZGl0ID0gZW5hYmxlX2VkaXQgb3IgZWRpdF9zdGFydAogICAgIGVuYWJsZV9zaGVsbCA9IGVuYWJsZV9zaGVsbCBvciBub3QgZW5hYmxlX2VkaXQKIAotICAgICMgc3RhcnQgZWRpdG9yIGFuZC9vciBzaGVsbCB3aW5kb3dzOgorICAgICMgU2V0dXAgcm9vdC4gIERvbid0IGJyZWFrIHVzZXIgY29kZSBydW4gaW4gSURMRSBwcm9jZXNzLgorICAgICMgRG9uJ3QgY2hhbmdlIGVudmlyb25tZW50IHdoZW4gdGVzdGluZy4KKyAgICBpZiB1c2Vfc3VicHJvY2VzcyBhbmQgbm90IHRlc3Rpbmc6CisgICAgICAgIE5vRGVmYXVsdFJvb3QoKQogICAgIHJvb3QgPSBUayhjbGFzc05hbWU9IklkbGUiKQogICAgIHJvb3Qud2l0aGRyYXcoKQogCkBAIC0xNTQ5LDI1ICsxNDYxLDE5IEBACiAgICAgaWYgc3lzdGVtKCkgPT0gJ1dpbmRvd3MnOgogICAgICAgICBpY29uZmlsZSA9IG9zLnBhdGguam9pbihpY29uZGlyLCAnaWRsZS5pY28nKQogICAgICAgICByb290LndtX2ljb25iaXRtYXAoZGVmYXVsdD1pY29uZmlsZSkKLSAgICBlbGlmIFRrVmVyc2lvbiA+PSA4LjU6CisgICAgZWxzZToKICAgICAgICAgZXh0ID0gJy5wbmcnIGlmIFRrVmVyc2lvbiA+PSA4LjYgZWxzZSAnLmdpZicKICAgICAgICAgaWNvbmZpbGVzID0gW29zLnBhdGguam9pbihpY29uZGlyLCAnaWRsZV8lZCVzJyAlIChzaXplLCBleHQpKQogICAgICAgICAgICAgICAgICAgICAgZm9yIHNpemUgaW4gKDE2LCAzMiwgNDgpXQotICAgICAgICBpY29ucyA9IFtQaG90b0ltYWdlKGZpbGU9aWNvbmZpbGUpIGZvciBpY29uZmlsZSBpbiBpY29uZmlsZXNdCisgICAgICAgIGljb25zID0gW1Bob3RvSW1hZ2UobWFzdGVyPXJvb3QsIGZpbGU9aWNvbmZpbGUpCisgICAgICAgICAgICAgICAgIGZvciBpY29uZmlsZSBpbiBpY29uZmlsZXNdCiAgICAgICAgIHJvb3Qud21faWNvbnBob3RvKFRydWUsICppY29ucykKIAorICAgICMgc3RhcnQgZWRpdG9yIGFuZC9vciBzaGVsbCB3aW5kb3dzOgogICAgIGZpeHdvcmRicmVha3Mocm9vdCkKICAgICBmaXhfeDExX3Bhc3RlKHJvb3QpCiAgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3Qocm9vdCkKLSAgICBtYWNvc3hTdXBwb3J0LnNldHVwQXBwKHJvb3QsIGZsaXN0KQotCi0gICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgotICAgICAgICAjIFRoZXJlIGFyZSBzb21lIHNjcmV3ZWQgdXAgPDI+IGNsYXNzIGJpbmRpbmdzIGZvciB0ZXh0Ci0gICAgICAgICMgd2lkZ2V0cyBkZWZpbmVkIGluIFRrIHdoaWNoIHdlIG5lZWQgdG8gZG8gYXdheSB3aXRoLgotICAgICAgICAjIFNlZSBpc3N1ZSAjMjQ4MDEuCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMj4nKQotICAgICAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjItTW90aW9uPicpCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzw8UGFzdGVTZWxlY3Rpb24+PicpCisgICAgbWFjb3N4LnNldHVwQXBwKHJvb3QsIGZsaXN0KQogCiAgICAgaWYgZW5hYmxlX2VkaXQ6CiAgICAgICAgIGlmIG5vdCAoY21kIG9yIHNjcmlwdCk6CkBAIC0xNTgyLDcgKzE0ODgsNyBAQAogICAgICAgICBzaGVsbCA9IGZsaXN0Lm9wZW5fc2hlbGwoKQogICAgICAgICBpZiBub3Qgc2hlbGw6CiAgICAgICAgICAgICByZXR1cm4gIyBjb3VsZG4ndCBvcGVuIHNoZWxsCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKSBhbmQgZmxpc3QuZGljdDoKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCkgYW5kIGZsaXN0LmRpY3Q6CiAgICAgICAgICAgICAjIE9uIE9TWDogd2hlbiB0aGUgdXNlciBoYXMgZG91YmxlLWNsaWNrZWQgb24gYSBmaWxlIHRoYXQgY2F1c2VzCiAgICAgICAgICAgICAjIElETEUgdG8gYmUgbGF1bmNoZWQgdGhlIHNoZWxsIHdpbmRvdyB3aWxsIG9wZW4ganVzdCBpbiBmcm9udCBvZgogICAgICAgICAgICAgIyB0aGUgZmlsZSBzaGUgd2FudHMgdG8gc2VlLiBMb3dlciB0aGUgaW50ZXJwcmV0ZXIgd2luZG93IHdoZW4KQEAgLTE2MTYsNyArMTUyMiw3IEBACiAgICAgICAgICMgY2hlY2sgZm9yIHByb2JsZW1hdGljIE9TIFggVGsgdmVyc2lvbnMgYW5kIHByaW50IGEgd2FybmluZwogICAgICAgICAjIG1lc3NhZ2UgaW4gdGhlIElETEUgc2hlbGwgd2luZG93OyB0aGlzIGlzIGxlc3MgaW50cnVzaXZlCiAgICAgICAgICMgdGhhbiBhbHdheXMgb3BlbmluZyBhIHNlcGFyYXRlIHdpbmRvdy4KLSAgICAgICAgdGt2ZXJzaW9ud2FybmluZyA9IG1hY29zeFN1cHBvcnQudGtWZXJzaW9uV2FybmluZyhyb290KQorICAgICAgICB0a3ZlcnNpb253YXJuaW5nID0gbWFjb3N4LnRrVmVyc2lvbldhcm5pbmcocm9vdCkKICAgICAgICAgaWYgdGt2ZXJzaW9ud2FybmluZzoKICAgICAgICAgICAgIHNoZWxsLmludGVycC5ydW5jb21tYW5kKCJwcmludCgnJXMnKSIgJSB0a3ZlcnNpb253YXJuaW5nKQogCkBAIC0xNjI2LDcgKzE1MzIsNyBAQAogICAgIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgc3lzLm1vZHVsZXNbJ1B5U2hlbGwnXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCisgICAgc3lzLm1vZHVsZXNbJ3B5c2hlbGwnXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCiAgICAgbWFpbigpCiAKIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpICAjIE1ha2Ugc3VyZSB0dXJuZWQgb2ZmOyBzZWUgaXNzdWUgMTgwODEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3F1ZXJ5LnB5IGIvTGliL2lkbGVsaWIvcXVlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxZjFlMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL3F1ZXJ5LnB5CkBAIC0wLDAgKzEsMzA4IEBACisiIiIKK0RpYWxvZ3MgdGhhdCBxdWVyeSB1c2VycyBhbmQgdmVyaWZ5IHRoZSBhbnN3ZXIgYmVmb3JlIGFjY2VwdGluZy4KK1VzZSB0dGsgd2lkZ2V0cywgbGltaXRpbmcgdXNlIHRvIHRjbC90ayA4LjUrLCBhcyBpbiBJRExFIDMuNisuCisKK1F1ZXJ5IGlzIHRoZSBnZW5lcmljIGJhc2UgY2xhc3MgZm9yIGEgcG9wdXAgZGlhbG9nLgorVGhlIHVzZXIgbXVzdCBlaXRoZXIgZW50ZXIgYSB2YWxpZCBhbnN3ZXIgb3IgY2xvc2UgdGhlIGRpYWxvZy4KK0VudHJpZXMgYXJlIHZhbGlkYXRlZCB3aGVuIDxSZXR1cm4+IGlzIGVudGVyZWQgb3IgW09rXSBpcyBjbGlja2VkLgorRW50cmllcyBhcmUgaWdub3JlZCB3aGVuIFtDYW5jZWxdIG9yIFtYXSBhcmUgY2xpY2tlZC4KK1RoZSAncmV0dXJuIHZhbHVlJyBpcyAucmVzdWx0IHNldCB0byBlaXRoZXIgYSB2YWxpZCBhbnN3ZXIgb3IgTm9uZS4KKworU3ViY2xhc3MgU2VjdGlvbk5hbWUgZ2V0cyBhIG5hbWUgZm9yIGEgbmV3IGNvbmZpZyBmaWxlIHNlY3Rpb24uCitDb25maWdkaWFsb2cgdXNlcyBpdCBmb3IgbmV3IGhpZ2hsaWdodCB0aGVtZSBhbmQga2V5YmluZGluZyBzZXQgbmFtZXMuCitTdWJjbGFzcyBNb2R1bGVOYW1lIGdldHMgYSBuYW1lIGZvciBGaWxlID0+IE9wZW4gTW9kdWxlLgorU3ViY2xhc3MgSGVscFNvdXJjZSBnZXRzIG1lbnUgaXRlbSBhbmQgcGF0aCBmb3IgYWRkaXRpb25zIHRvIEhlbHAgbWVudS4KKyIiIgorIyBRdWVyeSBhbmQgU2VjdGlvbiBuYW1lIHJlc3VsdCBmcm9tIHNwbGl0dGluZyBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZworIyBvZiBjb25maWdTZWN0aW9uTmFtZURpYWxvZy5weSAodGVtcG9yYXJpbHkgY29uZmlnX3NlYy5weSkgaW50bworIyBnZW5lcmljIGFuZCBzcGVjaWZpYyBwYXJ0cy4gIDMuNiBvbmx5LCBKdWx5IDIwMTYuCisjIE1vZHVsZU5hbWUuZW50cnlfb2sgY2FtZSBmcm9tIGVkaXRvci5FZGl0b3JXaW5kb3cubG9hZF9tb2R1bGUuCisjIEhlbHBTb3VyY2Ugd2FzIGV4dHJhY3RlZCBmcm9tIGNvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5ICh0ZW1wb3JhcmlseQorIyBjb25maWdfaGVscC5weSksIHdpdGggZGFyd2luIGNvZGUgbW92ZWQgZnJvbSBvayB0byBwYXRoX29rLgorCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgb3MKK2Zyb20gc3lzIGltcG9ydCBleGVjdXRhYmxlLCBwbGF0Zm9ybSAgIyBQbGF0Zm9ybSBpcyBzZXQgZm9yIG9uZSB0ZXN0LgorCitmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBTdHJpbmdWYXIsIFcsIEUsIE4sIFMKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IEZyYW1lLCBCdXR0b24sIEVudHJ5LCBMYWJlbAorZnJvbSB0a2ludGVyIGltcG9ydCBmaWxlZGlhbG9nCitmcm9tIHRraW50ZXIuZm9udCBpbXBvcnQgRm9udAorCitjbGFzcyBRdWVyeShUb3BsZXZlbCk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgZ2V0dGluZyB2ZXJpZmllZCBhbnN3ZXIgZnJvbSBhIHVzZXIuCisKKyAgICBGb3IgdGhpcyBiYXNlIGNsYXNzLCBhY2NlcHQgYW55IG5vbi1ibGFuayBzdHJpbmcuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsICosIHRleHQwPScnLCB1c2VkX25hbWVzPXt9LAorICAgICAgICAgICAgICAgICBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgICIiIkNyZWF0ZSBwb3B1cCwgZG8gbm90IHJldHVybiB1bnRpbCB0ayB3aWRnZXQgZGVzdHJveWVkLgorCisgICAgICAgIEFkZGl0aW9uYWwgc3ViY2xhc3MgaW5pdCBtdXN0IGJlIGRvbmUgYmVmb3JlIGNhbGxpbmcgdGhpcworICAgICAgICB1bmxlc3MgIF91dGVzdD1UcnVlIGlzIHBhc3NlZCB0byBzdXBwcmVzcyB3YWl0X3dpbmRvdygpLgorCisgICAgICAgIHRpdGxlIC0gc3RyaW5nLCB0aXRsZSBvZiBwb3B1cCBkaWFsb2cKKyAgICAgICAgbWVzc2FnZSAtIHN0cmluZywgaW5mb3JtYXRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkKKyAgICAgICAgdGV4dDAgLSBpbml0aWFsIHZhbHVlIGZvciBlbnRyeQorICAgICAgICB1c2VkX25hbWVzIC0gbmFtZXMgYWxyZWFkeSBpbiB1c2UKKyAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKKyAgICAgICAgX3V0ZXN0IC0gYm9vbCwgbGVhdmUgd2luZG93IGhpZGRlbiBhbmQgbm90IG1vZGFsCisgICAgICAgICIiIgorICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCisgICAgICAgIHNlbGYud2l0aGRyYXcoKSAgIyBIaWRlIHdoaWxlIGNvbmZpZ3VyaW5nLCBlc3BlY2lhbGx5IGdlb21ldHJ5LgorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQorICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCisgICAgICAgIHNlbGYudGV4dDAgPSB0ZXh0MAorICAgICAgICBzZWxmLnVzZWRfbmFtZXMgPSB1c2VkX25hbWVzCisgICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKKyAgICAgICAgc2VsZi5ncmFiX3NldCgpCisgICAgICAgIHdpbmRvd2luZ3N5c3RlbSA9IHNlbGYudGsuY2FsbCgndGsnLCAnd2luZG93aW5nc3lzdGVtJykKKyAgICAgICAgaWYgd2luZG93aW5nc3lzdGVtID09ICdhcXVhJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJzo6dGs6OnVuc3VwcG9ydGVkOjpNYWNXaW5kb3dTdHlsZScsICdzdHlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3csICdtb3ZlYWJsZU1vZGFsJywgJycpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5iaW5kKCI8Q29tbWFuZC0uPiIsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLmJpbmQoJzxLZXktRXNjYXBlPicsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5jYW5jZWwpCisgICAgICAgIHNlbGYuYmluZCgnPEtleS1SZXR1cm4+Jywgc2VsZi5vaykKKyAgICAgICAgc2VsZi5iaW5kKCI8S1BfRW50ZXI+Iiwgc2VsZi5vaykKKyAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZhbHNlLCB3aWR0aD1GYWxzZSkKKyAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCisgICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpICAjIE5lZWRlZCBoZXJlIGZvciB3aW5mb19yZXF3aWR0aCBiZWxvdy4KKyAgICAgICAgc2VsZi5nZW9tZXRyeSggICMgQ2VudGVyIGRpYWxvZyBvdmVyIHBhcmVudCAob3IgYmVsb3cgaHRlc3QgYm94KS4KKyAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKworICAgICAgICAgICAgICAgICAgICAocGFyZW50LndpbmZvX3dpZHRoKCkvMiAtIHNlbGYud2luZm9fcmVxd2lkdGgoKS8yKSwKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKworICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTUwKQorICAgICAgICAgICAgICAgICkgKQorICAgICAgICBpZiBub3QgX3V0ZXN0OgorICAgICAgICAgICAgc2VsZi5kZWljb25pZnkoKSAgIyBVbmhpZGUgbm93IHRoYXQgZ2VvbWV0cnkgc2V0LgorICAgICAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCisKKyAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6ICAjIENhbGwgZnJvbSBvdmVycmlkZSwgaWYgYW55LgorICAgICAgICAjIEJpbmQgdG8gc2VsZiB3aWRnZXRzIG5lZWRlZCBmb3IgZW50cnlfb2sgb3IgdW5pdHRlc3QuCisgICAgICAgIHNlbGYuZnJhbWUgPSBmcmFtZSA9IEZyYW1lKHNlbGYsIHBhZGRpbmc9MTApCisgICAgICAgIGZyYW1lLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBzdGlja3k9J25ld3MnKQorICAgICAgICBmcmFtZS5ncmlkX2NvbHVtbmNvbmZpZ3VyZSgwLCB3ZWlnaHQ9MSkKKworICAgICAgICBlbnRyeWxhYmVsID0gTGFiZWwoZnJhbWUsIGFuY2hvcj0ndycsIGp1c3RpZnk9J2xlZnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1zZWxmLm1lc3NhZ2UpCisgICAgICAgIHNlbGYuZW50cnl2YXIgPSBTdHJpbmdWYXIoc2VsZiwgc2VsZi50ZXh0MCkKKyAgICAgICAgc2VsZi5lbnRyeSA9IEVudHJ5KGZyYW1lLCB3aWR0aD0zMCwgdGV4dHZhcmlhYmxlPXNlbGYuZW50cnl2YXIpCisgICAgICAgIHNlbGYuZW50cnkuZm9jdXNfc2V0KCkKKyAgICAgICAgc2VsZi5lcnJvcl9mb250ID0gRm9udChuYW1lPSdUa0NhcHRpb25Gb250JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHM9VHJ1ZSwgcm9vdD1zZWxmLnBhcmVudCkKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvciA9IExhYmVsKGZyYW1lLCB0ZXh0PScgJywgZm9yZWdyb3VuZD0ncmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ9c2VsZi5lcnJvcl9mb250KQorICAgICAgICBzZWxmLmJ1dHRvbl9vayA9IEJ1dHRvbigKKyAgICAgICAgICAgICAgICBmcmFtZSwgdGV4dD0nT0snLCBkZWZhdWx0PSdhY3RpdmUnLCBjb21tYW5kPXNlbGYub2spCisgICAgICAgIHNlbGYuYnV0dG9uX2NhbmNlbCA9IEJ1dHRvbigKKyAgICAgICAgICAgICAgICBmcmFtZSwgdGV4dD0nQ2FuY2VsJywgY29tbWFuZD1zZWxmLmNhbmNlbCkKKworICAgICAgICBlbnRyeWxhYmVsLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwgc3RpY2t5PVcpCisgICAgICAgIHNlbGYuZW50cnkuZ3JpZChjb2x1bW49MCwgcm93PTEsIGNvbHVtbnNwYW49MywgcGFkeD01LCBzdGlja3k9VytFLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFkeT1bMTAsMF0pCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3IuZ3JpZChjb2x1bW49MCwgcm93PTIsIGNvbHVtbnNwYW49MywgcGFkeD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PVcrRSkKKyAgICAgICAgc2VsZi5idXR0b25fb2suZ3JpZChjb2x1bW49MSwgcm93PTk5LCBwYWR4PTUpCisgICAgICAgIHNlbGYuYnV0dG9uX2NhbmNlbC5ncmlkKGNvbHVtbj0yLCByb3c9OTksIHBhZHg9NSkKKworICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSwgd2lkZ2V0PU5vbmUpOgorICAgICAgICAjc2VsZi5iZWxsKGRpc3BsYXlvZj1zZWxmKQorICAgICAgICAod2lkZ2V0IG9yIHNlbGYuZW50cnlfZXJyb3IpWyd0ZXh0J10gPSAnRVJST1I6ICcgKyBtZXNzYWdlCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6ICAjIEV4YW1wbGU6IHVzdWFsbHkgcmVwbGFjZS4KKyAgICAgICAgIlJldHVybiBub24tYmxhbmsgZW50cnkgb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGVudHJ5ID0gc2VsZi5lbnRyeS5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBlbnRyeToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdibGFuayBsaW5lLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZW50cnkKKworICAgIGRlZiBvayhzZWxmLCBldmVudD1Ob25lKTogICMgRG8gbm90IHJlcGxhY2UuCisgICAgICAgICcnJ0lmIGVudHJ5IGlzIHZhbGlkLCBiaW5kIGl0IHRvICdyZXN1bHQnIGFuZCBkZXN0cm95IHRrIHdpZGdldC4KKworICAgICAgICBPdGhlcndpc2UgbGVhdmUgZGlhbG9nIG9wZW4gZm9yIHVzZXIgdG8gY29ycmVjdCBlbnRyeSBvciBjYW5jZWwuCisgICAgICAgICcnJworICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnlfb2soKQorICAgICAgICBpZiBlbnRyeSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gZW50cnkKKyAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFtPa10gbW92ZXMgZm9jdXMuICAoPFJldHVybj4gZG9lcyBub3QuKSAgTW92ZSBpdCBiYWNrLgorICAgICAgICAgICAgc2VsZi5lbnRyeS5mb2N1c19zZXQoKQorCisgICAgZGVmIGNhbmNlbChzZWxmLCBldmVudD1Ob25lKTogICMgRG8gbm90IHJlcGxhY2UuCisgICAgICAgICJTZXQgZGlhbG9nIHJlc3VsdCB0byBOb25lIGFuZCBkZXN0cm95IHRrIHdpZGdldC4iCisgICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQorICAgICAgICBzZWxmLmRlc3Ryb3koKQorCisKK2NsYXNzIFNlY3Rpb25OYW1lKFF1ZXJ5KToKKyAgICAiR2V0IGEgbmFtZSBmb3IgYSBjb25maWcgZmlsZSBzZWN0aW9uIG5hbWUuIgorICAgICMgVXNlZCBpbiBDb25maWdEaWFsb2cuR2V0TmV3S2V5c05hbWUsIC5HZXROZXdUaGVtZU5hbWUgKDgzNykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB1c2VkX25hbWVzLAorICAgICAgICAgICAgICAgICAqLCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdXNlZF9uYW1lcz11c2VkX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gc2Vuc2libGUgQ29uZmlnUGFyc2VyIHNlY3Rpb24gbmFtZSBvciBOb25lLiIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuZW50cnkuZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBuYW1lIHNwZWNpZmllZC4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBsZW4obmFtZSk+MzA6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbmFtZSBpcyBsb25nZXIgdGhhbiAzMCBjaGFyYWN0ZXJzLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbGlmIG5hbWUgaW4gc2VsZi51c2VkX25hbWVzOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25hbWUgaXMgYWxyZWFkeSBpbiB1c2UuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBuYW1lCisKKworY2xhc3MgTW9kdWxlTmFtZShRdWVyeSk6CisgICAgIkdldCBhIG1vZHVsZSBuYW1lIGZvciBPcGVuIE1vZHVsZSBtZW51IGVudHJ5LiIKKyAgICAjIFVzZWQgaW4gb3Blbl9tb2R1bGUgKGVkaXRvci5FZGl0b3JXaW5kb3cgdW50aWwgbW92ZSB0byBpb2JpbmRpbmcpLgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHRleHQwLAorICAgICAgICAgICAgICAgICAqLCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDA9dGV4dDAsCisgICAgICAgICAgICAgICAgICAgICAgIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gZW50ZXJlZCBtb2R1bGUgbmFtZSBhcyBmaWxlIHBhdGggb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIG5hbWUgPSBzZWxmLmVudHJ5LmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbm8gbmFtZSBzcGVjaWZpZWQuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgWFhYIE91Z2h0IHRvIGluc2VydCBjdXJyZW50IGZpbGUncyBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgcGF0aC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEltcG9ydEVycm9yKSBhcyBtc2c6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcihzdHIobXNnKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCJtb2R1bGUgbm90IGZvdW5kIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNwZWMubG9hZGVyLCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcik6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcigibm90IGEgc291cmNlLWJhc2VkIG1vZHVsZSIpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlX3BhdGggPSBzcGVjLmxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoImxvYWRlciBkb2VzIG5vdCBzdXBwb3J0IGdldF9maWxlbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZmlsZV9wYXRoCisKKworY2xhc3MgSGVscFNvdXJjZShRdWVyeSk6CisgICAgIkdldCBtZW51IG5hbWUgYW5kIGhlbHAgc291cmNlIGZvciBIZWxwIG1lbnUuIgorICAgICMgVXNlZCBpbiBDb25maWdEaWFsb2cuSGVscExpc3RJdGVtQWRkL0VkaXQsICg5NDEvOSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCAqLCBtZW51aXRlbT0nJywgZmlsZXBhdGg9JycsCisgICAgICAgICAgICAgICAgIHVzZWRfbmFtZXM9e30sIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgIiIiR2V0IG1lbnUgZW50cnkgYW5kIHVybC9sb2NhbCBmaWxlIGZvciBBZGRpdGlvbmFsIEhlbHAuCisKKyAgICAgICAgVXNlciBlbnRlcnMgYSBuYW1lIGZvciB0aGUgSGVscCByZXNvdXJjZSBhbmQgYSB3ZWIgdXJsIG9yIGZpbGUKKyAgICAgICAgbmFtZS4gVGhlIHVzZXIgY2FuIGJyb3dzZSBmb3IgdGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmZpbGVwYXRoID0gZmlsZXBhdGgKKyAgICAgICAgbWVzc2FnZSA9ICdOYW1lIGZvciBpdGVtIG9uIEhlbHAgbWVudTonCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oCisgICAgICAgICAgICAgICAgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDA9bWVudWl0ZW0sCisgICAgICAgICAgICAgICAgdXNlZF9uYW1lcz11c2VkX25hbWVzLCBfaHRlc3Q9X2h0ZXN0LCBfdXRlc3Q9X3V0ZXN0KQorCisgICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgorICAgICAgICBzdXBlcigpLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgZnJhbWUgPSBzZWxmLmZyYW1lCisgICAgICAgIHBhdGhsYWJlbCA9IExhYmVsKGZyYW1lLCBhbmNob3I9J3cnLCBqdXN0aWZ5PSdsZWZ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0nSGVscCBGaWxlIFBhdGg6IEVudGVyIFVSTCBvciBicm93c2UgZm9yIGZpbGUnKQorICAgICAgICBzZWxmLnBhdGh2YXIgPSBTdHJpbmdWYXIoc2VsZiwgc2VsZi5maWxlcGF0aCkKKyAgICAgICAgc2VsZi5wYXRoID0gRW50cnkoZnJhbWUsIHRleHR2YXJpYWJsZT1zZWxmLnBhdGh2YXIsIHdpZHRoPTQwKQorICAgICAgICBicm93c2UgPSBCdXR0b24oZnJhbWUsIHRleHQ9J0Jyb3dzZScsIHdpZHRoPTgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuYnJvd3NlX2ZpbGUpCisgICAgICAgIHNlbGYucGF0aF9lcnJvciA9IExhYmVsKGZyYW1lLCB0ZXh0PScgJywgZm9yZWdyb3VuZD0ncmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udD1zZWxmLmVycm9yX2ZvbnQpCisKKyAgICAgICAgcGF0aGxhYmVsLmdyaWQoY29sdW1uPTAsIHJvdz0xMCwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsIHBhZHk9WzEwLDBdLAorICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VykKKyAgICAgICAgc2VsZi5wYXRoLmdyaWQoY29sdW1uPTAsIHJvdz0xMSwgY29sdW1uc3Bhbj0yLCBwYWR4PTUsIHN0aWNreT1XK0UsCisgICAgICAgICAgICAgICAgICAgICAgIHBhZHk9WzEwLDBdKQorICAgICAgICBicm93c2UuZ3JpZChjb2x1bW49Miwgcm93PTExLCBwYWR4PTUsIHN0aWNreT1XK1MpCisgICAgICAgIHNlbGYucGF0aF9lcnJvci5ncmlkKGNvbHVtbj0wLCByb3c9MTIsIGNvbHVtbnNwYW49MywgcGFkeD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VytFKQorCisgICAgZGVmIGFza2ZpbGVuYW1lKHNlbGYsIGZpbGV0eXBlcywgaW5pdGRpciwgaW5pdGZpbGUpOiAgIyBodGVzdCAjCisgICAgICAgICMgRXh0cmFjdGVkIGZyb20gYnJvd3NlX2ZpbGUgc28gY2FuIG1vY2sgZm9yIHVuaXR0ZXN0cy4KKyAgICAgICAgIyBDYW5ub3QgdW5pdHRlc3QgYXMgY2Fubm90IHNpbXVsYXRlIGJ1dHRvbiBjbGlja3MuCisgICAgICAgICMgVGVzdCBieSBydW5uaW5nIGh0ZXN0LCBzdWNoIGFzIGJ5IHJ1bm5pbmcgdGhpcyBmaWxlLgorICAgICAgICByZXR1cm4gZmlsZWRpYWxvZy5PcGVuKHBhcmVudD1zZWxmLCBmaWxldHlwZXM9ZmlsZXR5cGVzKVwKKyAgICAgICAgICAgICAgIC5zaG93KGluaXRpYWxkaXI9aW5pdGRpciwgaW5pdGlhbGZpbGU9aW5pdGZpbGUpCisKKyAgICBkZWYgYnJvd3NlX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGV0eXBlcyA9IFsKKyAgICAgICAgICAgICgiSFRNTCBGaWxlcyIsICIqLmh0bSAqLmh0bWwiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJQREYgRmlsZXMiLCAiKi5wZGYiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJXaW5kb3dzIEhlbHAgRmlsZXMiLCAiKi5jaG0iKSwKKyAgICAgICAgICAgICgiVGV4dCBGaWxlcyIsICIqLnR4dCIsICJURVhUIiksCisgICAgICAgICAgICAoIkFsbCBGaWxlcyIsICIqIildCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGh2YXIuZ2V0KCkKKyAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgIGRpciwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJhc2UgPSBOb25lCisgICAgICAgICAgICBpZiBwbGF0Zm9ybVs6M10gPT0gJ3dpbic6CisgICAgICAgICAgICAgICAgZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlKSwgJ0RvYycpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGlyKToKKyAgICAgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgZmlsZSA9IHNlbGYuYXNrZmlsZW5hbWUoZmlsZXR5cGVzLCBkaXIsIGJhc2UpCisgICAgICAgIGlmIGZpbGU6CisgICAgICAgICAgICBzZWxmLnBhdGh2YXIuc2V0KGZpbGUpCisKKyAgICBpdGVtX29rID0gU2VjdGlvbk5hbWUuZW50cnlfb2sgICMgbG9jYWxpemUgZm9yIHRlc3Qgb3ZlcnJpZGUKKworICAgIGRlZiBwYXRoX29rKHNlbGYpOgorICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBtZW51IGZpbGUgcGF0aCIKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBwYXRoOiAjbm8gcGF0aCBzcGVjaWZpZWQKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBoZWxwIGZpbGUgcGF0aCBzcGVjaWZpZWQuJywgc2VsZi5wYXRoX2Vycm9yKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBub3QgcGF0aC5zdGFydHN3aXRoKCgnd3d3LicsICdodHRwJykpOgorICAgICAgICAgICAgaWYgcGF0aFs6NV0gPT0gJ2ZpbGU6JzoKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFs1Ol0KKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignaGVscCBmaWxlIHBhdGggZG9lcyBub3QgZXhpc3QuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGhfZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOiAgIyBmb3IgTWFjIFNhZmFyaQorICAgICAgICAgICAgICAgIHBhdGggPSAgImZpbGU6Ly8iICsgcGF0aAorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOgorICAgICAgICAiUmV0dXJuIGFwcGFyZW50bHkgdmFsaWQgKG5hbWUsIHBhdGgpIG9yIE5vbmUiCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIHNlbGYucGF0aF9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuaXRlbV9vaygpCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGhfb2soKQorICAgICAgICByZXR1cm4gTm9uZSBpZiBuYW1lIGlzIE5vbmUgb3IgcGF0aCBpcyBOb25lIGVsc2UgKG5hbWUsIHBhdGgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3F1ZXJ5JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKKyAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KKyAgICBydW4oUXVlcnksIEhlbHBTb3VyY2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5IGIvTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yZWRpcmVjdG9yLnB5CmluZGV4IGI2NmJlOWUuLmVjNjgxZGUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQpAQCAtMTA0LDcgKzEwNCw3IEBACiAKICAgICAgICAgTm90ZSB0aGF0IGlmIGEgcmVnaXN0ZXJlZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSBvcGVyYXRpb24gaXMgbm90CiAgICAgICAgIHBhc3NlZCB0aHJvdWdoIHRvIFRrLiAgQXBwbHkgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IHNlbGYucmVnaXN0ZXIoKQotICAgICAgICB0byAqYXJncyB0byBhY2NvbXBsaXNoIHRoYXQuICBGb3IgYW4gZXhhbXBsZSwgc2VlIENvbG9yRGVsZWdhdG9yLnB5LgorICAgICAgICB0byAqYXJncyB0byBhY2NvbXBsaXNoIHRoYXQuICBGb3IgYW4gZXhhbXBsZSwgc2VlIGNvbG9yaXplci5weS4KIAogICAgICAgICAnJycKICAgICAgICAgbSA9IHNlbGYuX29wZXJhdGlvbnMuZ2V0KG9wZXJhdGlvbikKQEAgLTE1MSwxNCArMTUxLDEzIEBACiAKIAogZGVmIF93aWRnZXRfcmVkaXJlY3RvcihwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotICAgIGltcG9ydCByZQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKIAotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBXaWRnZXRSZWRpcmVjdG9yIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgdGV4dCA9IFRleHQocm9vdCkKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IFdpZGdldFJlZGlyZWN0b3IiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdGV4dCA9IFRleHQodG9wKQogICAgIHRleHQucGFjaygpCiAgICAgdGV4dC5mb2N1c19zZXQoKQogICAgIHJlZGlyID0gV2lkZ2V0UmVkaXJlY3Rvcih0ZXh0KQpAQCAtMTY2LDExICsxNjUsMTEgQEAKICAgICAgICAgcHJpbnQoImluc2VydCIsIGFyZ3MpCiAgICAgICAgIG9yaWdpbmFsX2luc2VydCgqYXJncykKICAgICBvcmlnaW5hbF9pbnNlcnQgPSByZWRpci5yZWdpc3RlcigiaW5zZXJ0IiwgbXlfaW5zZXJ0KQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfd2lkZ2V0cmVkaXInLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVkaXJlY3RvcicsCiAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfd2lkZ2V0X3JlZGlyZWN0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvcmVwbGFjZS5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yZXBsYWNlLnB5CmluZGV4IGYyZWEyMmUuLmFiZDllNTkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JlcGxhY2VEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvcmVwbGFjZS5weQpAQCAtMywxOCArMywxOCBAQAogRGVmaW5lcyB2YXJpb3VzIHJlcGxhY2UgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSByZXBsYWNlLCByZXBsYWNlIGFsbCwKIHJlcGxhY2UrZmluZC4KICIiIgotZnJvbSB0a2ludGVyIGltcG9ydCAqCi0KLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lCi1mcm9tIGlkbGVsaWIuU2VhcmNoRGlhbG9nQmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQogaW1wb3J0IHJlCiAKK2Zyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBUY2xFcnJvcgorCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKIAogZGVmIHJlcGxhY2UodGV4dCk6CiAgICAgIiIiUmV0dXJucyBhIHNpbmdsZXRvbiBSZXBsYWNlRGlhbG9nIGluc3RhbmNlLlRoZSBzaW5nbGUgZGlhbG9nCiAgICAgIHNhdmVzIHVzZXIgZW50cmllcyBhbmQgcHJlZmVyZW5jZXMgYWNyb3NzIGluc3RhbmNlcy4iIiIKICAgICByb290ID0gdGV4dC5fcm9vdCgpCi0gICAgZW5naW5lID0gU2VhcmNoRW5naW5lLmdldChyb290KQorICAgIGVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocm9vdCkKICAgICBpZiBub3QgaGFzYXR0cihlbmdpbmUsICJfcmVwbGFjZWRpYWxvZyIpOgogICAgICAgICBlbmdpbmUuX3JlcGxhY2VkaWFsb2cgPSBSZXBsYWNlRGlhbG9nKHJvb3QsIGVuZ2luZSkKICAgICBkaWFsb2cgPSBlbmdpbmUuX3JlcGxhY2VkaWFsb2cKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICByZXMgPSBzZWxmLmVuZ2luZS5zZWFyY2hfdGV4dCh0ZXh0LCBwcm9nKQogICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdGV4dC50YWdfcmVtb3ZlKCJzZWwiLCAiMS4wIiwgImVuZCIpCiAgICAgICAgIHRleHQudGFnX3JlbW92ZSgiaGl0IiwgIjEuMCIsICJlbmQiKQpAQCAtMTQyLDcgKzE0Miw3IEBACiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgcmVzID0gc2VsZi5lbmdpbmUuc2VhcmNoX3RleHQodGV4dCwgTm9uZSwgb2spCiAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBsaW5lLCBtID0gcmVzCiAgICAgICAgIGksIGogPSBtLnNwYW4oKQpAQCAtMTY0LDcgKzE2NCw3IEBACiAgICAgICAgICAgICBwb3MgPSBOb25lCiAgICAgICAgIGlmIG5vdCBwb3M6CiAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBwb3MgPSB0ZXh0LmluZGV4KCJpbnNlcnQiKQotICAgICAgICBsaW5lLCBjb2wgPSBTZWFyY2hFbmdpbmUuZ2V0X2xpbmVfY29sKHBvcykKKyAgICAgICAgbGluZSwgY29sID0gc2VhcmNoZW5naW5lLmdldF9saW5lX2NvbChwb3MpCiAgICAgICAgIGNoYXJzID0gdGV4dC5nZXQoIiVkLjAiICUgbGluZSwgIiVkLjAiICUgKGxpbmUrMSkpCiAgICAgICAgIG0gPSBwcm9nLm1hdGNoKGNoYXJzLCBjb2wpCiAgICAgICAgIGlmIG5vdCBwcm9nOgpAQCAtMjA0LDExICsyMDQsMTMgQEAKIAogCiBkZWYgX3JlcGxhY2VfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICAiIiJodGVzdCB3cmFwcGVyIGZ1bmN0aW9uIiIiCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dCwgRU5ELCBTRUwKKyAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBCdXR0b24KKwogICAgIGJveCA9IFRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgUmVwbGFjZURpYWxvZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKIAogICAgICMgbW9jayB1bmRvIGRlbGVnYXRvciBtZXRob2RzCiAgICAgZGVmIHVuZG9fYmxvY2tfc3RhcnQoKToKQEAgLTIzNCw3ICsyMzYsNyBAQAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVwbGFjZWRpYWxvZycsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9yZXBsYWNlJywKICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKIAogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnBjLnB5IGIvTGliL2lkbGVsaWIvcnBjLnB5CmluZGV4IDQ4MTA1ZjIuLjhmNTdlZGI4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ycGMucHkKKysrIGIvTGliL2lkbGVsaWIvcnBjLnB5CkBAIC0yNiwyMyArMjYsMjEgQEAKIGFjY29tcGxpc2hlZCBpbiBJZGxlLgogCiAiIiIKLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBjb3B5cmVnCiBpbXBvcnQgaW8KLWltcG9ydCBzb2NrZXQKK2ltcG9ydCBtYXJzaGFsCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBxdWV1ZQogaW1wb3J0IHNlbGVjdAoraW1wb3J0IHNvY2tldAogaW1wb3J0IHNvY2tldHNlcnZlcgogaW1wb3J0IHN0cnVjdAotaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cwogaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHF1ZXVlCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgY29weXJlZwogaW1wb3J0IHR5cGVzCi1pbXBvcnQgbWFyc2hhbAotaW1wb3J0IGJ1aWx0aW5zCi0KIAogZGVmIHVucGlja2xlX2NvZGUobXMpOgogICAgIGNvID0gbWFyc2hhbC5sb2FkcyhtcykKQEAgLTYwLDEwICs1OCwxMiBAQAogICAgIHAuZHVtcChvYmopCiAgICAgcmV0dXJuIGYuZ2V0dmFsdWUoKQogCisKIGNsYXNzIENvZGVQaWNrbGVyKHBpY2tsZS5QaWNrbGVyKToKICAgICBkaXNwYXRjaF90YWJsZSA9IHt0eXBlcy5Db2RlVHlwZTogcGlja2xlX2NvZGV9CiAgICAgZGlzcGF0Y2hfdGFibGUudXBkYXRlKGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUpCiAKKwogQlVGU0laRSA9IDgqMTAyNAogTE9DQUxIT1NUID0gJzEyNy4wLjAuMScKIApAQCAtNDg3LDE2ICs0ODcsMTkgQEAKICAgICAjIFRva2VuIG1peC1pbiBjbGFzcwogICAgIHBhc3MKIAorCiBkZWYgcmVtb3RlcmVmKG9iaik6CiAgICAgb2lkID0gaWQob2JqKQogICAgIG9iamVjdHRhYmxlW29pZF0gPSBvYmoKICAgICByZXR1cm4gUmVtb3RlUHJveHkob2lkKQogCisKIGNsYXNzIFJlbW90ZVByb3h5KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb2lkKToKICAgICAgICAgc2VsZi5vaWQgPSBvaWQKIAorCiBjbGFzcyBSUENIYW5kbGVyKHNvY2tldHNlcnZlci5CYXNlUmVxdWVzdEhhbmRsZXIsIFNvY2tldElPKToKIAogICAgIGRlYnVnZ2luZyA9IEZhbHNlCkBAIC01MTQsNiArNTE3LDcgQEAKICAgICBkZWYgZ2V0X3JlbW90ZV9wcm94eShzZWxmLCBvaWQpOgogICAgICAgICByZXR1cm4gUlBDUHJveHkoc2VsZiwgb2lkKQogCisKIGNsYXNzIFJQQ0NsaWVudChTb2NrZXRJTyk6CiAKICAgICBkZWJ1Z2dpbmcgPSBGYWxzZQpAQCAtNTM5LDYgKzU0Myw3IEBACiAgICAgZGVmIGdldF9yZW1vdGVfcHJveHkoc2VsZiwgb2lkKToKICAgICAgICAgcmV0dXJuIFJQQ1Byb3h5KHNlbGYsIG9pZCkKIAorCiBjbGFzcyBSUENQcm94eShvYmplY3QpOgogCiAgICAgX19tZXRob2RzID0gTm9uZQpAQCAtNTg3LDYgKzU5Miw3IEBACiAgICAgICAgIGlmIG5vdCBjYWxsYWJsZShhdHRyKToKICAgICAgICAgICAgIGF0dHJpYnV0ZXNbbmFtZV0gPSAxCiAKKwogY2xhc3MgTWV0aG9kUHJveHkob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NraW8sIG9pZCwgbmFtZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Sc3RyaXBFeHRlbnNpb24ucHkgYi9MaWIvaWRsZWxpYi9yc3RyaXAucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JzdHJpcEV4dGVuc2lvbi5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcnN0cmlwLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ydW4ucHkgYi9MaWIvaWRsZWxpYi9ydW4ucHkKaW5kZXggMjhjZTQyMC4uYWZhOTc0NCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnVuLnB5CisrKyBiL0xpYi9pZGxlbGliL3J1bi5weQpAQCAtMSwzMyArMSw0NSBAQAotaW1wb3J0IHN5cworaW1wb3J0IGlvCiBpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgcXVldWUKK2ltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKIGltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCBxdWV1ZQotaW1wb3J0IHRraW50ZXIKK2ltcG9ydCB3YXJuaW5ncwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IENhbGxUaXBzCi1mcm9tIGlkbGVsaWIgaW1wb3J0IEF1dG9Db21wbGV0ZQoraW1wb3J0IHRraW50ZXIgICMgVGNsLCBkZWxldGlvbnMsIG1lc3NhZ2Vib3ggaWYgc3RhcnR1cCBmYWlscwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZURlYnVnZ2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZU9iamVjdEJyb3dzZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgU3RhY2tWaWV3ZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgcnBjCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKLWZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCi0KK2Zyb20gaWRsZWxpYiBpbXBvcnQgYXV0b2NvbXBsZXRlICAjIEF1dG9Db21wbGV0ZSwgZmV0Y2hfZW5jb2RpbmdzCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNhbGx0aXBzICAjIENhbGxUaXBzCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyX3IgICMgc3RhcnRfZGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdvYmpfciAgIyByZW1vdGVfb2JqZWN0X3RyZWVfaXRlbQorZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUgICMgZW5jb2RpbmcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcnBjICAjIG11bHRpcGxlIG9iamVjdHMKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc3RhY2t2aWV3ZXIgICMgU3RhY2tUcmVlSXRlbQogaW1wb3J0IF9fbWFpbl9fCiAKIGZvciBtb2QgaW4gKCdzaW1wbGVkaWFsb2cnLCAnbWVzc2FnZWJveCcsICdmb250JywKICAgICAgICAgICAgICdkaWFsb2cnLCAnZmlsZWRpYWxvZycsICdjb21tb25kaWFsb2cnLAotICAgICAgICAgICAgJ2NvbG9yY2hvb3NlcicpOgorICAgICAgICAgICAgJ3R0aycpOgogICAgIGRlbGF0dHIodGtpbnRlciwgbW9kKQogICAgIGRlbCBzeXMubW9kdWxlc1sndGtpbnRlci4nICsgbW9kXQogCiBMT0NBTEhPU1QgPSAnMTI3LjAuMC4xJwogCi1pbXBvcnQgd2FybmluZ3MKKworZGVmIGlkbGVfZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZT1Ob25lKToKKyAgICAiIiJGb3JtYXQgd2FybmluZ3MgdGhlIElETEUgd2F5LiIiIgorCisgICAgcyA9ICJcbldhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKTpcbiIKKyAgICBzICs9ICcgIEZpbGUgXCIlc1wiLCBsaW5lICVzXG4nICUgKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykKKyAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgaWYgbGluZToKKyAgICAgICAgcyArPSAiICAgICVzXG4iICUgbGluZQorICAgIHMgKz0gIiVzOiAlc1xuIiAlIChjYXRlZ29yeS5fX25hbWVfXywgbWVzc2FnZSkKKyAgICByZXR1cm4gcwogCiBkZWYgaWRsZV9zaG93d2FybmluZ19zdWJwcm9jKAogICAgICAgICBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgpAQCAtMzgsNyArNTAsNyBAQAogICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKICAgICB0cnk6Ci0gICAgICAgIGZpbGUud3JpdGUoUHlTaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcoCisgICAgICAgIGZpbGUud3JpdGUoaWRsZV9mb3JtYXR3YXJuaW5nKAogICAgICAgICAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKSkKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcGFzcyAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgpAQCAtODgsNyArMTAwLDcgQEAKICAgICBNeUhhbmRsZXIgb2JqZWN0LiAgVGhhdCByZWZlcmVuY2UgaXMgc2F2ZWQgYXMgYXR0cmlidXRlIHJwY2hhbmRsZXIgb2YgdGhlCiAgICAgRXhlY3V0aXZlIGluc3RhbmNlLiAgVGhlIEV4ZWN1dGl2ZSBtZXRob2RzIGhhdmUgYWNjZXNzIHRvIHRoZSByZWZlcmVuY2UgYW5kCiAgICAgY2FuIHBhc3MgaXQgb24gdG8gZW50aXRpZXMgdGhhdCB0aGV5IGNvbW1hbmQKLSAgICAoZS5nLiBSZW1vdGVEZWJ1Z2dlci5EZWJ1Z2dlci5zdGFydF9kZWJ1Z2dlcigpKS4gIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGNhbgorICAgIChlLmcuIGRlYnVnZ2VyX3IuRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoKSkuICBUaGUgbGF0dGVyLCBpbiB0dXJuLCBjYW4KICAgICBjYWxsIE15SGFuZGxlcihTb2NrZXRJTykgcmVnaXN0ZXIvdW5yZWdpc3RlciBtZXRob2RzIHZpYSB0aGUgcmVmZXJlbmNlIHRvCiAgICAgcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgdGhlbXNlbHZlcy4KIApAQCAtMjEwLDcgKzIyMiw3IEBACiAgICAgICAgICAgICB0YmUgPSB0cmFjZWJhY2suZXh0cmFjdF90Yih0YikKICAgICAgICAgICAgIHByaW50KCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JywgZmlsZT1lZmlsZSkKICAgICAgICAgICAgIGV4Y2x1ZGUgPSAoInJ1bi5weSIsICJycGMucHkiLCAidGhyZWFkaW5nLnB5IiwgInF1ZXVlLnB5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIlJlbW90ZURlYnVnZ2VyLnB5IiwgImJkYi5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICJkZWJ1Z2dlcl9yLnB5IiwgImJkYi5weSIpCiAgICAgICAgICAgICBjbGVhbnVwX3RyYWNlYmFjayh0YmUsIGV4Y2x1ZGUpCiAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfbGlzdCh0YmUsIGZpbGU9ZWZpbGUpCiAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0eXAsIGV4YykKQEAgLTI2Nyw2ICsyNzksNyBAQAogICAgIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpCiAgICAgc3lzLmV4aXQoMCkKIAorCiBjbGFzcyBNeVJQQ1NlcnZlcihycGMuUlBDU2VydmVyKToKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgpAQCAtMjk3LDYgKzMxMCw5NiBAQAogICAgICAgICAgICAgcXVpdHRpbmcgPSBUcnVlCiAgICAgICAgICAgICB0aHJlYWQuaW50ZXJydXB0X21haW4oKQogCisKKyMgUHNldWRvZmlsZXMgZm9yIHNoZWxsLXJlbW90ZSBjb21tdW5pY2F0aW9uIChhbHNvIHVzZWQgaW4gcHlzaGVsbCkKKworY2xhc3MgUHNldWRvRmlsZShpby5UZXh0SU9CYXNlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6CisgICAgICAgIHNlbGYuc2hlbGwgPSBzaGVsbAorICAgICAgICBzZWxmLnRhZ3MgPSB0YWdzCisgICAgICAgIHNlbGYuX2VuY29kaW5nID0gZW5jb2RpbmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbmNvZGluZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2VuY29kaW5nCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICc8JXM+JyAlIHNlbGYudGFncworCisgICAgZGVmIGlzYXR0eShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworCitjbGFzcyBQc2V1ZG9PdXRwdXRGaWxlKFBzZXVkb0ZpbGUpOgorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIHMpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlIHRvIGNsb3NlZCBmaWxlIikKKyAgICAgICAgaWYgdHlwZShzKSBpcyBub3Qgc3RyOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgc3RyLCBub3QgJyArIHR5cGUocykuX19uYW1lX18pCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTk0ODEKKyAgICAgICAgICAgIHMgPSBzdHIuX19zdHJfXyhzKQorICAgICAgICByZXR1cm4gc2VsZi5zaGVsbC53cml0ZShzLCBzZWxmLnRhZ3MpCisKKworY2xhc3MgUHNldWRvSW5wdXRGaWxlKFBzZXVkb0ZpbGUpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKKyAgICAgICAgUHNldWRvRmlsZS5fX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSAtMQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2xpbmVfYnVmZmVyCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKKyAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2hpbGUgbGVuKHJlc3VsdCkgPCBzaXplOgorICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQorICAgICAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSByZXN1bHRbc2l6ZTpdCisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbOnNpemVdCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQorICAgICAgICBpZiBzaXplIGlzIE5vbmU6CisgICAgICAgICAgICBzaXplID0gLTEKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQorICAgICAgICBsaW5lID0gc2VsZi5fbGluZV9idWZmZXIgb3Igc2VsZi5zaGVsbC5yZWFkbGluZSgpCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgc2l6ZSA9IGxlbihsaW5lKQorICAgICAgICBlb2wgPSBsaW5lLmZpbmQoJ1xuJywgMCwgc2l6ZSkKKyAgICAgICAgaWYgZW9sID49IDA6CisgICAgICAgICAgICBzaXplID0gZW9sICsgMQorICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IGxpbmVbc2l6ZTpdCisgICAgICAgIHJldHVybiBsaW5lWzpzaXplXQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLnNoZWxsLmNsb3NlKCkKKworCiBjbGFzcyBNeUhhbmRsZXIocnBjLlJQQ0hhbmRsZXIpOgogCiAgICAgZGVmIGhhbmRsZShzZWxmKToKQEAgLTMwNCwxMiArNDA3LDEyIEBACiAgICAgICAgIGV4ZWN1dGl2ZSA9IEV4ZWN1dGl2ZShzZWxmKQogICAgICAgICBzZWxmLnJlZ2lzdGVyKCJleGVjIiwgZXhlY3V0aXZlKQogICAgICAgICBzZWxmLmNvbnNvbGUgPSBzZWxmLmdldF9yZW1vdGVfcHJveHkoImNvbnNvbGUiKQotICAgICAgICBzeXMuc3RkaW4gPSBQeVNoZWxsLlBzZXVkb0lucHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRpbiIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzeXMuc3Rkb3V0ID0gUHlTaGVsbC5Qc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZG91dCIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzeXMuc3RkZXJyID0gUHlTaGVsbC5Qc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGVyciIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQorICAgICAgICBzeXMuc3RkaW4gPSBQc2V1ZG9JbnB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkaW4iLAorICAgICAgICAgICAgICAgIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc3lzLnN0ZG91dCA9IFBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3Rkb3V0IiwKKyAgICAgICAgICAgICAgICBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHN5cy5zdGRlcnIgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGVyciIsCisgICAgICAgICAgICAgICAgaW9tZW51LmVuY29kaW5nKQogCiAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHJwYy5kaXNwbGF5aG9vawogICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCkBAIC0zNDUsOCArNDQ4LDggQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcnBjaGFuZGxlcik6CiAgICAgICAgIHNlbGYucnBjaGFuZGxlciA9IHJwY2hhbmRsZXIKICAgICAgICAgc2VsZi5sb2NhbHMgPSBfX21haW5fXy5fX2RpY3RfXwotICAgICAgICBzZWxmLmNhbGx0aXAgPSBDYWxsVGlwcy5DYWxsVGlwcygpCi0gICAgICAgIHNlbGYuYXV0b2NvbXBsZXRlID0gQXV0b0NvbXBsZXRlLkF1dG9Db21wbGV0ZSgpCisgICAgICAgIHNlbGYuY2FsbHRpcCA9IGNhbGx0aXBzLkNhbGxUaXBzKCkKKyAgICAgICAgc2VsZi5hdXRvY29tcGxldGUgPSBhdXRvY29tcGxldGUuQXV0b0NvbXBsZXRlKCkKIAogICAgIGRlZiBydW5jb2RlKHNlbGYsIGNvZGUpOgogICAgICAgICBnbG9iYWwgaW50ZXJydXB0YWJsZQpAQCAtMzc4LDcgKzQ4MSw3IEBACiAgICAgICAgICAgICB0aHJlYWQuaW50ZXJydXB0X21haW4oKQogCiAgICAgZGVmIHN0YXJ0X3RoZV9kZWJ1Z2dlcihzZWxmLCBndWlfYWRhcF9vaWQpOgotICAgICAgICByZXR1cm4gUmVtb3RlRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoc2VsZi5ycGNoYW5kbGVyLCBndWlfYWRhcF9vaWQpCisgICAgICAgIHJldHVybiBkZWJ1Z2dlcl9yLnN0YXJ0X2RlYnVnZ2VyKHNlbGYucnBjaGFuZGxlciwgZ3VpX2FkYXBfb2lkKQogCiAgICAgZGVmIHN0b3BfdGhlX2RlYnVnZ2VyKHNlbGYsIGlkYl9hZGFwX29pZCk6CiAgICAgICAgICJVbnJlZ2lzdGVyIHRoZSBJZGIgQWRhcHRlci4gIExpbmsgb2JqZWN0cyBhbmQgSWRiIHRoZW4gc3ViamVjdCB0byBHQyIKQEAgLTQwMiw3ICs1MDUsNyBAQAogICAgICAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CiAgICAgICAgIHN5cy5sYXN0X3R5cGUgPSB0eXAKICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWwKLSAgICAgICAgaXRlbSA9IFN0YWNrVmlld2VyLlN0YWNrVHJlZUl0ZW0oZmxpc3QsIHRiKQotICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0QnJvd3Nlci5yZW1vdGVfb2JqZWN0X3RyZWVfaXRlbShpdGVtKQorICAgICAgICBpdGVtID0gc3RhY2t2aWV3ZXIuU3RhY2tUcmVlSXRlbShmbGlzdCwgdGIpCisgICAgICAgIHJldHVybiBkZWJ1Z29ial9yLnJlbW90ZV9vYmplY3RfdHJlZV9pdGVtKGl0ZW0pCiAKIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpICAjIE1ha2Ugc3VyZSB0dXJuZWQgb2ZmOyBzZWUgaXNzdWUgMTgwODEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9ydW5zY3JpcHQucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CmluZGV4IDVjYjgxOGQuLjc5ZDg2YWQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CkBAIC0yMCwxMSArMjAsMTIgQEAKIGltcG9ydCBvcwogaW1wb3J0IHRhYm5hbm55CiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCiAKIGluZGVudF9tZXNzYWdlID0gIiIiRXJyb3I6IEluY29uc2lzdGVudCBpbmRlbnRhdGlvbiBkZXRlY3RlZCEKIApAQCAtNDYsMTIgKzQ3LDEyIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbik6CiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KLSAgICAgICAgIyBQcm92aWRlIGluc3RhbmNlIHZhcmlhYmxlcyByZWZlcmVuY2VkIGJ5IERlYnVnZ2VyCisgICAgICAgICMgUHJvdmlkZSBpbnN0YW5jZSB2YXJpYWJsZXMgcmVmZXJlbmNlZCBieSBkZWJ1Z2dlcgogICAgICAgICAjIFhYWCBUaGlzIHNob3VsZCBiZSBkb25lIGRpZmZlcmVudGx5CiAgICAgICAgIHNlbGYuZmxpc3QgPSBzZWxmLmVkaXR3aW4uZmxpc3QKICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5lZGl0d2luLnJvb3QKIAotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNDb2NvYVRrKCk6CiAgICAgICAgICAgICBzZWxmLmVkaXR3aW4udGV4dF9mcmFtZS5iaW5kKCc8PHJ1bi1tb2R1bGUtZXZlbnQtMj4+Jywgc2VsZi5fcnVuX21vZHVsZV9ldmVudCkKIAogICAgIGRlZiBjaGVja19tb2R1bGVfZXZlbnQoc2VsZiwgZXZlbnQpOgpAQCAtMTEyLDcgKzExMyw3IEBACiAgICAgICAgICAgICBzaGVsbC5zZXRfd2FybmluZ19zdHJlYW0oc2F2ZWRfc3RyZWFtKQogCiAgICAgZGVmIHJ1bl9tb2R1bGVfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNDb2NvYVRrKCk6CiAgICAgICAgICAgICAjIFRrLUNvY29hIGluIE1hY09TWCBpcyBicm9rZW4gdW50aWwgYXQgbGVhc3QKICAgICAgICAgICAgICMgVGsgOC41LjksIGFuZCB3aXRob3V0IHRoaXMgcmF0aGVyCiAgICAgICAgICAgICAjIGNydWRlIHdvcmthcm91bmQgSURMRSB3b3VsZCBoYW5nIHdoZW4gYSB1c2VyCkBAIC0xNDIsNyArMTQzLDcgQEAKICAgICAgICAgaWYgbm90IHNlbGYudGFibmFubnkoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmV0dXJuICdicmVhaycKICAgICAgICAgaW50ZXJwID0gc2VsZi5zaGVsbC5pbnRlcnAKLSAgICAgICAgaWYgUHlTaGVsbC51c2Vfc3VicHJvY2VzczoKKyAgICAgICAgaWYgcHlzaGVsbC51c2Vfc3VicHJvY2VzczoKICAgICAgICAgICAgIGludGVycC5yZXN0YXJ0X3N1YnByb2Nlc3Mod2l0aF9jd2Q9RmFsc2UsIGZpbGVuYW1lPQogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lZGl0d2luLl9maWxlbmFtZV90b191bmljb2RlKGZpbGVuYW1lKSkKICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKQEAgLTE2MSw3ICsxNjIsNyBAQAogICAgICAgICBpbnRlcnAucHJlcGVuZF9zeXNwYXRoKGZpbGVuYW1lKQogICAgICAgICAjIFhYWCBLQksgMDNKdWwwNCBXaGVuIHJ1biB3L28gc3VicHJvY2VzcywgcnVudGltZSB3YXJuaW5ncyBzdGlsbAogICAgICAgICAjICAgICAgICAgZ28gdG8gX19zdGRlcnJfXy4gIFdpdGggc3VicHJvY2VzcywgdGhleSBnbyB0byB0aGUgc2hlbGwuCi0gICAgICAgICMgICAgICAgICBOZWVkIHRvIGNoYW5nZSBzdHJlYW1zIGluIFB5U2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlci4KKyAgICAgICAgIyAgICAgICAgIE5lZWQgdG8gY2hhbmdlIHN0cmVhbXMgaW4gcHlzaGVsbC5Nb2RpZmllZEludGVycHJldGVyLgogICAgICAgICBpbnRlcnAucnVuY29kZShjb2RlKQogICAgICAgICByZXR1cm4gJ2JyZWFrJwogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TY3JvbGxlZExpc3QucHkgYi9MaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKaW5kZXggNTM1NzZiNS4uY2MwOGMyNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5CisrKyBiL0xpYi9pZGxlbGliL3Njcm9sbGVkbGlzdC5weQpAQCAtMSw1ICsxLDggQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKKwogCiBjbGFzcyBTY3JvbGxlZExpc3Q6CiAKQEAgLTIzLDcgKzI2LDcgQEAKICAgICAgICAgIyBCaW5kIGV2ZW50cyB0byB0aGUgbGlzdCBib3gKICAgICAgICAgbGlzdGJveC5iaW5kKCI8QnV0dG9uUmVsZWFzZS0xPiIsIHNlbGYuY2xpY2tfZXZlbnQpCiAgICAgICAgIGxpc3Rib3guYmluZCgiPERvdWJsZS1CdXR0b25SZWxlYXNlLTE+Iiwgc2VsZi5kb3VibGVfY2xpY2tfZXZlbnQpCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICBsaXN0Ym94LmJpbmQoIjxCdXR0b25QcmVzcy0yPiIsIHNlbGYucG9wdXBfZXZlbnQpCiAgICAgICAgICAgICBsaXN0Ym94LmJpbmQoIjxDb250cm9sLUJ1dHRvbi0xPiIsIHNlbGYucG9wdXBfZXZlbnQpCiAgICAgICAgIGVsc2U6CkBAIC0xMjQsMjIgKzEyNywyMCBAQAogICAgICAgICBwYXNzCiAKIAotZGVmIF9zY3JvbGxlZF9saXN0KHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFNjcm9sbGVkTGlzdCIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorZGVmIF9zY3JvbGxlZF9saXN0KHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4KzIwMCwgeSArIDE3NSkpCiAgICAgY2xhc3MgTXlTY3JvbGxlZExpc3QoU2Nyb2xsZWRMaXN0KToKICAgICAgICAgZGVmIGZpbGxfbWVudShzZWxmKTogc2VsZi5tZW51LmFkZF9jb21tYW5kKGxhYmVsPSJyaWdodCBjbGljayIpCiAgICAgICAgIGRlZiBvbl9zZWxlY3Qoc2VsZiwgaW5kZXgpOiBwcmludCgic2VsZWN0Iiwgc2VsZi5nZXQoaW5kZXgpKQogICAgICAgICBkZWYgb25fZG91YmxlKHNlbGYsIGluZGV4KTogcHJpbnQoImRvdWJsZSIsIHNlbGYuZ2V0KGluZGV4KSkKIAotICAgIHNjcm9sbGVkX2xpc3QgPSBNeVNjcm9sbGVkTGlzdChyb290KQorICAgIHNjcm9sbGVkX2xpc3QgPSBNeVNjcm9sbGVkTGlzdCh0b3ApCiAgICAgZm9yIGkgaW4gcmFuZ2UoMzApOgogICAgICAgICBzY3JvbGxlZF9saXN0LmFwcGVuZCgiSXRlbSAlMDJkIiAlIGkpCiAKLSAgICByb290Lm1haW5sb29wKCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICAjIEF0IHRoZSBtb21lbnQsIHRlc3Rfc2Nyb2xsZWRsaXN0IG1lcmVseSBjcmVhdGVzIGluc3RhbmNlLCBsaWtlIGh0ZXN0LgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfc2Nyb2xsZWRfbGlzdCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZy5weSBiL0xpYi9pZGxlbGliL3NlYXJjaC5weQpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaC5weQppbmRleCA3NjVkNTNmLi40YjkwNjU5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoLnB5CkBAIC0xLDEyICsxLDEyIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorZnJvbSBpZGxlbGliLnNlYXJjaGJhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKIAogZGVmIF9zZXR1cCh0ZXh0KToKICAgICAiQ3JlYXRlIG9yIGZpbmQgdGhlIHNpbmdsZXRvbiBTZWFyY2hEaWFsb2cgaW5zdGFuY2UuIgogICAgIHJvb3QgPSB0ZXh0Ll9yb290KCkKLSAgICBlbmdpbmUgPSBTZWFyY2hFbmdpbmUuZ2V0KHJvb3QpCisgICAgZW5naW5lID0gc2VhcmNoZW5naW5lLmdldChyb290KQogICAgIGlmIG5vdCBoYXNhdHRyKGVuZ2luZSwgIl9zZWFyY2hkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9zZWFyY2hkaWFsb2cgPSBTZWFyY2hEaWFsb2cocm9vdCwgZW5naW5lKQogICAgIHJldHVybiBlbmdpbmUuX3NlYXJjaGRpYWxvZwpAQCAtMjQsNiArMjQsNyBAQAogICAgICJIYW5kbGUgdGhlIGVkaXRvciBlZGl0IG1lbnUgaXRlbSBhbmQgY29ycmVzcG9uZGluZyBldmVudC4iCiAgICAgcmV0dXJuIF9zZXR1cCh0ZXh0KS5maW5kX3NlbGVjdGlvbih0ZXh0KQogCisKIGNsYXNzIFNlYXJjaERpYWxvZyhTZWFyY2hEaWFsb2dCYXNlKToKIAogICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKQEAgLTUxLDcgKzUyLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmaXJzdCA9IHRleHQuaW5kZXgoInNlbC5maXJzdCIpCiAgICAgICAgICAgICAgICAgc2VsbGFzdCA9IHRleHQuaW5kZXgoInNlbC5sYXN0IikKICAgICAgICAgICAgICAgICBpZiBzZWxmaXJzdCA9PSBmaXJzdCBhbmQgc2VsbGFzdCA9PSBsYXN0OgotICAgICAgICAgICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCkBAIC02MSw3ICs2Miw3IEBACiAgICAgICAgICAgICB0ZXh0LnNlZSgiaW5zZXJ0IikKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGZpbmRfc2VsZWN0aW9uKHNlbGYsIHRleHQpOgpAQCAtNzIsMjYgKzczLDMwIEBACiAKIAogZGVmIF9zZWFyY2hfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICAnJydEaXNwbGF5IHNlYXJjaCB0ZXN0IGJveC4nJycKKyAgICAiRGlzcGxheSBzZWFyY2ggdGVzdCBib3guIgorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKKyAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBCdXR0b24KKwogICAgIGJveCA9IFRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgU2VhcmNoRGlhbG9nIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIHRleHQgPSBUZXh0KGJveCwgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPSdncmF5JykKICAgICB0ZXh0LnBhY2soKQogICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCJUaGlzIGlzIGEgc2FtcGxlIHN0cmluZy5cbiIqNSkKIAogICAgIGRlZiBzaG93X2ZpbmQoKToKLSAgICAgICAgdGV4dC50YWdfYWRkKFNFTCwgIjEuMCIsIEVORCkKKyAgICAgICAgdGV4dC50YWdfYWRkKCdzZWwnLCAnMS4wJywgJ2VuZCcpCiAgICAgICAgIF9zZXR1cCh0ZXh0KS5vcGVuKHRleHQpCi0gICAgICAgIHRleHQudGFnX3JlbW92ZShTRUwsICIxLjAiLCBFTkQpCisgICAgICAgIHRleHQudGFnX3JlbW92ZSgnc2VsJywgJzEuMCcsICdlbmQnKQogCiAgICAgYnV0dG9uID0gQnV0dG9uKGJveCwgdGV4dD0iU2VhcmNoIChzZWxlY3Rpb24gaWdub3JlZCkiLCBjb21tYW5kPXNob3dfZmluZCkKICAgICBidXR0b24ucGFjaygpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2hkaWFsb2cnLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoJywKICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9zZWFyY2hfZGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weSBiL0xpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2VhcmNoYmFzZS5weQppbmRleCA1ZmE4NGUyLi41ZjgxNzg1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2dCYXNlLnB5CisrKyBiL0xpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKQEAgLTEsNyArMSw4IEBACiAnJydEZWZpbmUgU2VhcmNoRGlhbG9nQmFzZSB1c2VkIGJ5IFNlYXJjaCwgUmVwbGFjZSwgYW5kIEdyZXAgZGlhbG9ncy4nJycKIAotZnJvbSB0a2ludGVyIGltcG9ydCAoVG9wbGV2ZWwsIEZyYW1lLCBFbnRyeSwgTGFiZWwsIEJ1dHRvbiwKLSAgICAgICAgICAgICAgICAgICAgIENoZWNrYnV0dG9uLCBSYWRpb2J1dHRvbikKK2Zyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIEZyYW1lCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBFbnRyeSwgTGFiZWwsIEJ1dHRvbiwgQ2hlY2tidXR0b24sIFJhZGlvYnV0dG9uCisKIAogY2xhc3MgU2VhcmNoRGlhbG9nQmFzZToKICAgICAnJydDcmVhdGUgbW9zdCBvZiBhIDMgb3IgNCByb3csIDMgY29sdW1uIHNlYXJjaCBkaWFsb2cuCkBAIC03OSw2ICs4MCw3IEBACiAgICAgICAgIHRvcC53bV90aXRsZShzZWxmLnRpdGxlKQogICAgICAgICB0b3Aud21faWNvbm5hbWUoc2VsZi5pY29uKQogICAgICAgICBzZWxmLnRvcCA9IHRvcAorICAgICAgICBzZWxmLmJlbGwgPSB0b3AuYmVsbAogCiAgICAgICAgIHNlbGYucm93ID0gMAogICAgICAgICBzZWxmLnRvcC5ncmlkX2NvbHVtbmNvbmZpZ3VyZSgwLCBwYWQ9Miwgd2VpZ2h0PTApCkBAIC0xMjUsNyArMTI3LDcgQEAKICAgICBkZWYgY3JlYXRlX29wdGlvbl9idXR0b25zKHNlbGYpOgogICAgICAgICAnJydSZXR1cm4gKGZpbGxlZCBmcmFtZSwgb3B0aW9ucykgZm9yIHRlc3RpbmcuCiAKLSAgICAgICAgT3B0aW9ucyBpcyBhIGxpc3Qgb2YgU2VhcmNoRW5naW5lIGJvb2xlYW52YXIsIGxhYmVsIHBhaXJzLgorICAgICAgICBPcHRpb25zIGlzIGEgbGlzdCBvZiBzZWFyY2hlbmdpbmUgYm9vbGVhbnZhciwgbGFiZWwgcGFpcnMuCiAgICAgICAgIEEgZ3JpZGRlZCBmcmFtZSBmcm9tIG1ha2VfZnJhbWUgaXMgZmlsbGVkIHdpdGggYSBDaGVja2J1dHRvbgogICAgICAgICBmb3IgZWFjaCBwYWlyLCBib3VuZCB0byB0aGUgdmFyLCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGxhYmVsLgogICAgICAgICAnJycKQEAgLTEzNywxMCArMTM5LDggQEAKICAgICAgICAgaWYgc2VsZi5uZWVkd3JhcGJ1dHRvbjoKICAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5kKChlbmdpbmUud3JhcHZhciwgIldyYXAgYXJvdW5kIikpCiAgICAgICAgIGZvciB2YXIsIGxhYmVsIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmcmFtZSwgYW5jaG9yPSJ3IiwgdmFyaWFibGU9dmFyLCB0ZXh0PWxhYmVsKQorICAgICAgICAgICAgYnRuID0gQ2hlY2tidXR0b24oZnJhbWUsIHZhcmlhYmxlPXZhciwgdGV4dD1sYWJlbCkKICAgICAgICAgICAgIGJ0bi5wYWNrKHNpZGU9ImxlZnQiLCBmaWxsPSJib3RoIikKLSAgICAgICAgICAgIGlmIHZhci5nZXQoKToKLSAgICAgICAgICAgICAgICBidG4uc2VsZWN0KCkKICAgICAgICAgcmV0dXJuIGZyYW1lLCBvcHRpb25zCiAKICAgICBkZWYgY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6CkBAIC0xNTMsMTEgKzE1Myw4IEBACiAgICAgICAgIHZhciA9IHNlbGYuZW5naW5lLmJhY2t2YXIKICAgICAgICAgb3RoZXJzID0gWygxLCAnVXAnKSwgKDAsICdEb3duJyldCiAgICAgICAgIGZvciB2YWwsIGxhYmVsIGluIG90aGVyczoKLSAgICAgICAgICAgIGJ0biA9IFJhZGlvYnV0dG9uKGZyYW1lLCBhbmNob3I9InciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU9dmFyLCB2YWx1ZT12YWwsIHRleHQ9bGFiZWwpCisgICAgICAgICAgICBidG4gPSBSYWRpb2J1dHRvbihmcmFtZSwgdmFyaWFibGU9dmFyLCB2YWx1ZT12YWwsIHRleHQ9bGFiZWwpCiAgICAgICAgICAgICBidG4ucGFjayhzaWRlPSJsZWZ0IiwgZmlsbD0iYm90aCIpCi0gICAgICAgICAgICBpZiB2YXIuZ2V0KCkgPT0gdmFsOgotICAgICAgICAgICAgICAgIGJ0bi5zZWxlY3QoKQogICAgICAgICByZXR1cm4gZnJhbWUsIG90aGVycwogCiAgICAgZGVmIG1ha2VfYnV0dG9uKHNlbGYsIGxhYmVsLCBjb21tYW5kLCBpc2RlZj0wKToKQEAgLTE3OCw3ICsxNzUsMjYgQEAKICAgICAgICAgYiA9IHNlbGYubWFrZV9idXR0b24oImNsb3NlIiwgc2VsZi5jbG9zZSkKICAgICAgICAgYi5sb3dlcigpCiAKKworY2xhc3MgX3NlYXJjaGJhc2UoU2VhcmNoRGlhbG9nQmFzZSk6ICAjIGh0ZXN0ICMKKyAgICAiQ3JlYXRlIGF1dG8tb3BlbmluZyBkaWFsb2cgd2l0aCBubyB0ZXh0IGNvbm5lY3Rpb24uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgIGltcG9ydCByZQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorCisgICAgICAgIHNlbGYucm9vdCA9IHBhcmVudAorICAgICAgICBzZWxmLmVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocGFyZW50KQorICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgcHJpbnQocGFyZW50Lmdlb21ldHJ5KCkpCisgICAgICAgIHdpZHRoLGhlaWdodCwgeCx5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCisgICAgICAgIHNlbGYudG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHggKyA0MCwgeSArIDE3NSkpCisKKyAgICBkZWYgZGVmYXVsdF9jb21tYW5kKHNlbGYsIGR1bW15KTogcGFzcworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oCi0gICAgICAgICdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UnLCB2ZXJib3NpdHk9MikKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGJhc2UnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKworICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihfc2VhcmNoYmFzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaEVuZ2luZS5weSBiL0xpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQppbmRleCAzNzg4M2JmLi4yNTNmMWIwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoZW5naW5lLnB5CkBAIC0xLDUgKzEsNiBAQAogJycnRGVmaW5lIFNlYXJjaEVuZ2luZSBmb3Igc2VhcmNoIGRpYWxvZ3MuJycnCiBpbXBvcnQgcmUKKwogZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIsIFRjbEVycm9yCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCkBAIC0xNCw2ICsxNSw3IEBACiAgICAgICAgICMgVGhpcyBjcmVhdGVzIGEgY3ljbGUgdGhhdCBwZXJzaXN0cyB1bnRpbCByb290IGlzIGRlbGV0ZWQuCiAgICAgcmV0dXJuIHJvb3QuX3NlYXJjaGVuZ2luZQogCisKIGNsYXNzIFNlYXJjaEVuZ2luZToKICAgICAiIiJIYW5kbGVzIHNlYXJjaGluZyBhIHRleHQgd2lkZ2V0IGZvciBGaW5kLCBSZXBsYWNlLCBhbmQgR3JlcC4iIiIKIApAQCAtNTcsNyArNTksNyBAQAogCiAgICAgZGVmIHNldGNvb2tlZHBhdChzZWxmLCBwYXQpOgogICAgICAgICAiU2V0IHBhdHRlcm4gYWZ0ZXIgZXNjYXBpbmcgaWYgcmUuIgotICAgICAgICAjIGNhbGxlZCBvbmx5IGluIFNlYXJjaERpYWxvZy5weTogNjYKKyAgICAgICAgIyBjYWxsZWQgb25seSBpbiBzZWFyY2gucHk6IDY2CiAgICAgICAgIGlmIHNlbGYuaXNyZSgpOgogICAgICAgICAgICAgcGF0ID0gcmUuZXNjYXBlKHBhdCkKICAgICAgICAgc2VsZi5zZXRwYXQocGF0KQpAQCAtMTg2LDYgKzE4OCw3IEBACiAgICAgICAgICAgICBjb2wgPSBsZW4oY2hhcnMpIC0gMQogICAgICAgICByZXR1cm4gTm9uZQogCisKIGRlZiBzZWFyY2hfcmV2ZXJzZShwcm9nLCBjaGFycywgY29sKToKICAgICAnJydTZWFyY2ggYmFja3dhcmRzIGFuZCByZXR1cm4gYW4gcmUgbWF0Y2ggb2JqZWN0IG9yIE5vbmUuCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5IGIvTGliL2lkbGVsaWIvc3RhY2t2aWV3ZXIucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU3RhY2tWaWV3ZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CmluZGV4IGNjYzc1NWMuLjA2OThkZWYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CkBAIC0xLDEyICsxLDEyIEBACi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKIGltcG9ydCB0a2ludGVyIGFzIHRrCiAKLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCi1mcm9tIGlkbGVsaWIuT2JqZWN0QnJvd3NlciBpbXBvcnQgT2JqZWN0VHJlZUl0ZW0sIG1ha2Vfb2JqZWN0dHJlZWl0ZW0KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKK2Zyb20gaWRsZWxpYi5kZWJ1Z29iaiBpbXBvcnQgT2JqZWN0VHJlZUl0ZW0sIG1ha2Vfb2JqZWN0dHJlZWl0ZW0KK2Zyb20gaWRsZWxpYi50cmVlIGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCiAKIGRlZiBTdGFja0Jyb3dzZXIocm9vdCwgZmxpc3Q9Tm9uZSwgdGI9Tm9uZSwgdG9wPU5vbmUpOgogICAgIGlmIHRvcCBpcyBOb25lOgpAQCAtMTcsNiArMTcsNyBAQAogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS5leHBhbmQoKQogCisKIGNsYXNzIFN0YWNrVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIHRiPU5vbmUpOgpAQCAtNTUsNiArNTYsNyBAQAogICAgICAgICAgICAgc3VibGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICAgcmV0dXJuIHN1Ymxpc3QKIAorCiBjbGFzcyBGcmFtZVRyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmZvLCBmbGlzdCk6CkBAIC05Niw2ICs5OCw3IEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGlzdC5nb3RvZmlsZWxpbmUoZmlsZW5hbWUsIGxpbmVubykKIAorCiBjbGFzcyBWYXJpYWJsZXNUcmVlSXRlbShPYmplY3RUcmVlSXRlbSk6CiAKICAgICBkZWYgR2V0VGV4dChzZWxmKToKQEAgLTEyMCwxNSArMTIzLDE0IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCi0gICAgZGVmIGtleXMoc2VsZik6ICAjIHVudXNlZCwgbGVmdCBmb3IgcG9zc2libGUgM3JkIHBhcnR5IHVzZQotICAgICAgICByZXR1cm4gbGlzdChzZWxmLm9iamVjdC5rZXlzKCkpCiAKLWRlZiBfc3RhY2tfdmlld2VyKHBhcmVudCk6Ci0gICAgcm9vdCA9IHRrLlRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFN0YWNrVmlld2VyIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3Qocm9vdCkKK2RlZiBfc3RhY2tfdmlld2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICBmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0CisgICAgdG9wID0gdGsuVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBTdGFja1ZpZXdlciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgNTAsIHkgKyAxNzUpKQorICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHRvcCkKICAgICB0cnk6ICMgdG8gb2J0YWluIGEgdHJhY2ViYWNrIG9iamVjdAogICAgICAgICBpbnRlbnRpb25hbF9uYW1lX2Vycm9yCiAgICAgZXhjZXB0IE5hbWVFcnJvcjoKQEAgLTEzOSw3ICsxNDEsNyBAQAogICAgIHN5cy5sYXN0X3ZhbHVlID0gZXhjX3ZhbHVlCiAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gZXhjX3RiCiAKLSAgICBTdGFja0Jyb3dzZXIocm9vdCwgZmxpc3Q9Zmxpc3QsIHRvcD1yb290LCB0Yj1leGNfdGIpCisgICAgU3RhY2tCcm93c2VyKHRvcCwgZmxpc3Q9Zmxpc3QsIHRvcD10b3AsIHRiPWV4Y190YikKIAogICAgICMgcmVzdG9yZSBzeXMgdG8gb3JpZ2luYWwgc3RhdGUKICAgICBkZWwgc3lzLmxhc3RfdHlwZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5IGIvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTg1MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9zdGF0dXNiYXIucHkKQEAgLTAsMCArMSw0NiBAQAorZnJvbSB0a2ludGVyIGltcG9ydCBGcmFtZSwgTGFiZWwKKworCitjbGFzcyBNdWx0aVN0YXR1c0JhcihGcmFtZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KToKKyAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KQorICAgICAgICBzZWxmLmxhYmVscyA9IHt9CisKKyAgICBkZWYgc2V0X2xhYmVsKHNlbGYsIG5hbWUsIHRleHQ9JycsIHNpZGU9J2xlZnQnLCB3aWR0aD0wKToKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5sYWJlbHM6CisgICAgICAgICAgICBsYWJlbCA9IExhYmVsKHNlbGYsIGJvcmRlcndpZHRoPTAsIGFuY2hvcj0ndycpCisgICAgICAgICAgICBsYWJlbC5wYWNrKHNpZGU9c2lkZSwgcGFkeT0wLCBwYWR4PTQpCisgICAgICAgICAgICBzZWxmLmxhYmVsc1tuYW1lXSA9IGxhYmVsCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsYWJlbCA9IHNlbGYubGFiZWxzW25hbWVdCisgICAgICAgIGlmIHdpZHRoICE9IDA6CisgICAgICAgICAgICBsYWJlbC5jb25maWcod2lkdGg9d2lkdGgpCisgICAgICAgIGxhYmVsLmNvbmZpZyh0ZXh0PXRleHQpCisKKworZGVmIF9tdWx0aXN0YXR1c19iYXIocGFyZW50KTogICMgaHRlc3QgIworICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIEZyYW1lLCBUZXh0LCBCdXR0b24KKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlKHgsIHkgKyAxNzUpKQorICAgIHRvcC50aXRsZSgiVGVzdCBtdWx0aXN0YXR1cyBiYXIiKQorICAgIGZyYW1lID0gRnJhbWUodG9wKQorICAgIHRleHQgPSBUZXh0KGZyYW1lLCBoZWlnaHQ9NSwgd2lkdGg9NDApCisgICAgdGV4dC5wYWNrKCkKKyAgICBtc2IgPSBNdWx0aVN0YXR1c0JhcihmcmFtZSkKKyAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiaGVsbG8iKQorICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJ3b3JsZCIpCisgICAgbXNiLnBhY2soc2lkZT0nYm90dG9tJywgZmlsbD0neCcpCisKKyAgICBkZWYgY2hhbmdlKCk6CisgICAgICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJmb28iKQorICAgICAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAiYmFyIikKKworICAgIGJ1dHRvbiA9IEJ1dHRvbih0b3AsIHRleHQ9IlVwZGF0ZSBzdGF0dXMiLCBjb21tYW5kPWNoYW5nZSkKKyAgICBidXR0b24ucGFjayhzaWRlPSdib3R0b20nKQorICAgIGZyYW1lLnBhY2soKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihfbXVsdGlzdGF0dXNfYmFyKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkgYi9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQppbmRleCA5NjVmOWY4Li40MTg2ZmEyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQorKysgYi9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQpAQCAtMjg1LDYgKzI4NSw3IEBACiAgICAgICAgICAgICAjIHBsYWNlZCBoaWRlIGl0CiAgICAgICAgICAgICBzZWxmLnRhYl9zZXQubG93ZXIoKQogCisKIGNsYXNzIFRhYmJlZFBhZ2VTZXQoRnJhbWUpOgogICAgICIiIkEgVGtpbnRlciB0YWJiZWQtcGFuZSB3aWRnZXQuCiAKQEAgLTMwMiw2ICszMDMsNyBAQAogICAgIHJlbW92ZV9wYWdlKCkgbWV0aG9kcy4KIAogICAgICIiIgorCiAgICAgY2xhc3MgUGFnZShvYmplY3QpOgogICAgICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBUYWJiZWRQYWdlU2V0J3MgcGFnZXMuCiAKQEAgLTQ2NywzMSArNDY5LDI5IEBACiAKICAgICAgICAgc2VsZi5fdGFiX3NldC5zZXRfc2VsZWN0ZWRfdGFiKHBhZ2VfbmFtZSkKIAotZGVmIF90YWJiZWRfcGFnZXMocGFyZW50KToKLSAgICAjIHRlc3QgZGlhbG9nCi0gICAgcm9vdD1UaygpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNzUpKQotICAgIHJvb3QudGl0bGUoIlRlc3QgdGFiYmVkIHBhZ2VzIikKLSAgICB0YWJQYWdlPVRhYmJlZFBhZ2VTZXQocm9vdCwgcGFnZV9uYW1lcz1bJ0Zvb2JhcicsJ0JheiddLCBuX3Jvd3M9MCwKKworZGVmIF90YWJiZWRfcGFnZXMocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcD1Ub3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKKyAgICB0b3AudGl0bGUoIlRlc3QgdGFiYmVkIHBhZ2VzIikKKyAgICB0YWJQYWdlPVRhYmJlZFBhZ2VTZXQodG9wLCBwYWdlX25hbWVzPVsnRm9vYmFyJywnQmF6J10sIG5fcm93cz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRfdGFicz1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgIHRhYlBhZ2UucGFjayhzaWRlPVRPUCwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKICAgICBMYWJlbCh0YWJQYWdlLnBhZ2VzWydGb29iYXInXS5mcmFtZSwgdGV4dD0nRm9vJywgcGFkeT0yMCkucGFjaygpCiAgICAgTGFiZWwodGFiUGFnZS5wYWdlc1snRm9vYmFyJ10uZnJhbWUsIHRleHQ9J0JhcicsIHBhZHk9MjApLnBhY2soKQogICAgIExhYmVsKHRhYlBhZ2UucGFnZXNbJ0JheiddLmZyYW1lLCB0ZXh0PSdCYXonKS5wYWNrKCkKLSAgICBlbnRyeVBnTmFtZT1FbnRyeShyb290KQotICAgIGJ1dHRvbkFkZD1CdXR0b24ocm9vdCwgdGV4dD0nQWRkIFBhZ2UnLAorICAgIGVudHJ5UGdOYW1lPUVudHJ5KHRvcCkKKyAgICBidXR0b25BZGQ9QnV0dG9uKHRvcCwgdGV4dD0nQWRkIFBhZ2UnLAogICAgICAgICAgICAgY29tbWFuZD1sYW1iZGE6dGFiUGFnZS5hZGRfcGFnZShlbnRyeVBnTmFtZS5nZXQoKSkpCi0gICAgYnV0dG9uUmVtb3ZlPUJ1dHRvbihyb290LCB0ZXh0PSdSZW1vdmUgUGFnZScsCisgICAgYnV0dG9uUmVtb3ZlPUJ1dHRvbih0b3AsIHRleHQ9J1JlbW92ZSBQYWdlJywKICAgICAgICAgICAgIGNvbW1hbmQ9bGFtYmRhOnRhYlBhZ2UucmVtb3ZlX3BhZ2UoZW50cnlQZ05hbWUuZ2V0KCkpKQotICAgIGxhYmVsUGdOYW1lPUxhYmVsKHJvb3QsIHRleHQ9J25hbWUgb2YgcGFnZSB0byBhZGQvcmVtb3ZlOicpCisgICAgbGFiZWxQZ05hbWU9TGFiZWwodG9wLCB0ZXh0PSduYW1lIG9mIHBhZ2UgdG8gYWRkL3JlbW92ZTonKQogICAgIGJ1dHRvbkFkZC5wYWNrKHBhZHg9NSwgcGFkeT01KQogICAgIGJ1dHRvblJlbW92ZS5wYWNrKHBhZHg9NSwgcGFkeT01KQogICAgIGxhYmVsUGdOYW1lLnBhY2socGFkeD01KQogICAgIGVudHJ5UGdOYW1lLnBhY2socGFkeD01KQotICAgIHJvb3QubWFpbmxvb3AoKQotCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weSBiL0xpYi9pZGxlbGliL3RleHR2aWV3LnB5CnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL3RleHRWaWV3LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90ZXh0dmlldy5weQppbmRleCAxMmFjMzE5Li5hZGVlMzI2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weQorKysgYi9MaWIvaWRsZWxpYi90ZXh0dmlldy5weQpAQCAtMSwxNCArMSwxNCBAQAogIiIiU2ltcGxlIHRleHQgYnJvd3NlciBmb3IgSURMRQogCiAiIiIKLQogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCitmcm9tIHRraW50ZXIubWVzc2FnZWJveCBpbXBvcnQgc2hvd2Vycm9yCisKIAogY2xhc3MgVGV4dFZpZXdlcihUb3BsZXZlbCk6Ci0gICAgIiIiQSBzaW1wbGUgdGV4dCB2aWV3ZXIgZGlhbG9nIGZvciBJRExFCisgICAgIkEgc2ltcGxlIHRleHQgdmlld2VyIGRpYWxvZyBmb3IgSURMRS4iCiAKLSAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgdGV4dCwgbW9kYWw9VHJ1ZSwgX2h0ZXN0PUZhbHNlKToKICAgICAgICAgIiIiU2hvdyB0aGUgZ2l2ZW4gdGV4dCBpbiBhIHNjcm9sbGFibGUgd2luZG93IHdpdGggYSAnY2xvc2UnIGJ1dHRvbgogCkBAIC0yMCwxMSArMjAsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKICAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgIyBwbGFjZSBkaWFsb2cgYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QKKyAgICAgICAgIyBQbGFjZSBkaWFsb2cgYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QuCiAgICAgICAgIHNlbGYuZ2VvbWV0cnkoIj0lZHglZCslZCslZCIgJSAoNzUwLCA1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAoMTAgaWYgbm90IF9odGVzdCBlbHNlIDEwMCkpKQotICAgICAgICAjZWxndWF2YXMgLSBjb25maWcgcGxhY2Vob2xkZXJzIHRpbCBjb25maWcgc3R1ZmYgY29tcGxldGVkCisgICAgICAgICMgVE9ETzogZ2V0IGZnL2JnIGZyb20gdGhlbWUuCiAgICAgICAgIHNlbGYuYmcgPSAnI2ZmZmZmZicKICAgICAgICAgc2VsZi5mZyA9ICcjMDAwMDAwJwogCkBAIC0zMyw5ICszMyw5IEBACiAgICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLk9rKQogICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgICBzZWxmLnRleHRWaWV3LmZvY3VzX3NldCgpCi0gICAgICAgICNrZXkgYmluZGluZ3MgZm9yIHRoaXMgZGlhbG9nCi0gICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLHNlbGYuT2spICNkaXNtaXNzIGRpYWxvZwotICAgICAgICBzZWxmLmJpbmQoJzxFc2NhcGU+JyxzZWxmLk9rKSAjZGlzbWlzcyBkaWFsb2cKKyAgICAgICAgIyBCaW5kIGtleXMgZm9yIGNsb3NpbmcgdGhpcyBkaWFsb2cuCisgICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLHNlbGYuT2spCisgICAgICAgIHNlbGYuYmluZCgnPEVzY2FwZT4nLHNlbGYuT2spCiAgICAgICAgIHNlbGYudGV4dFZpZXcuaW5zZXJ0KDAuMCwgdGV4dCkKICAgICAgICAgc2VsZi50ZXh0Vmlldy5jb25maWcoc3RhdGU9RElTQUJMRUQpCiAKQEAgLTUwLDcgKzUwLDcgQEAKICAgICAgICAgc2VsZi5idXR0b25PayA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0Nsb3NlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuT2ssIHRha2Vmb2N1cz1GQUxTRSkKICAgICAgICAgc2VsZi5zY3JvbGxiYXJWaWV3ID0gU2Nyb2xsYmFyKGZyYW1lVGV4dCwgb3JpZW50PVZFUlRJQ0FMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZWZvY3VzPUZBTFNFLCBoaWdobGlnaHR0aGlja25lc3M9MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vmb2N1cz1GQUxTRSkKICAgICAgICAgc2VsZi50ZXh0VmlldyA9IFRleHQoZnJhbWVUZXh0LCB3cmFwPVdPUkQsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1zZWxmLmZnLCBiZz1zZWxmLmJnKQogICAgICAgICBzZWxmLnNjcm9sbGJhclZpZXcuY29uZmlnKGNvbW1hbmQ9c2VsZi50ZXh0Vmlldy55dmlldykKQEAgLTcyLDE0ICs3MiwxNCBAQAogICAgIHRyeToKICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgogICAgICAgICAgICAgY29udGVudHMgPSBmaWxlLnJlYWQoKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIExvYWQgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1VuYWJsZSB0byBsb2FkIGZpbGUgJXIgLicgJSBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBzaG93ZXJyb3IodGl0bGU9J0ZpbGUgTG9hZCBFcnJvcicsCisgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdVbmFibGUgdG8gbG9hZCBmaWxlICVyIC4nICUgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQogICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgotICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdVbmljb2RlIERlY29kZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1zdHIoZXJyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQorICAgICAgICBzaG93ZXJyb3IodGl0bGU9J1VuaWNvZGUgRGVjb2RlIEVycm9yJywKKyAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9c3RyKGVyciksCisgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiB2aWV3X3RleHQocGFyZW50LCB0aXRsZSwgY29udGVudHMsIG1vZGFsKQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Ub29sVGlwLnB5IGIvTGliL2lkbGVsaWIvdG9vbHRpcC5weQpzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Ub29sVGlwLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90b29sdGlwLnB5CmluZGV4IDk2NDEwN2UuLjg0M2ZiNGEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1Rvb2xUaXAucHkKKysrIGIvTGliL2lkbGVsaWIvdG9vbHRpcC5weQpAQCAtMSw0ICsxLDQgQEAKLSMgZ2VuZXJhbCBwdXJwb3NlICd0b29sdGlwJyByb3V0aW5lcyAtIGN1cnJlbnRseSB1bnVzZWQgaW4gaWRsZWZvcmsKKyMgZ2VuZXJhbCBwdXJwb3NlICd0b29sdGlwJyByb3V0aW5lcyAtIGN1cnJlbnRseSB1bnVzZWQgaW4gaWRsZWxpYgogIyAoYWx0aG91Z2ggdGhlICdjYWxsdGlwcycgZXh0ZW5zaW9uIGlzIHBhcnRseSBiYXNlZCBvbiB0aGlzIGNvZGUpCiAjIG1heSBiZSB1c2VmdWwgZm9yIHNvbWUgcHVycG9zZXMgaW4gKG9yIGFsbW9zdCBpbiA7KSB0aGUgY3VycmVudCBwcm9qZWN0IHNjb3BlCiAjIElkZWFzIGdsZWFuZWQgZnJvbSBQeVNvbApAQCAtNzYsMjEgKzc2LDIwIEBACiAgICAgICAgIGZvciBpdGVtIGluIHNlbGYuaXRlbXM6CiAgICAgICAgICAgICBsaXN0Ym94Lmluc2VydChFTkQsIGl0ZW0pCiAKLWRlZiBfdG9vbHRpcChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCB0b29sdGlwIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgbGFiZWwgPSBMYWJlbChyb290LCB0ZXh0PSJQbGFjZSB5b3VyIG1vdXNlIG92ZXIgYnV0dG9ucyIpCitkZWYgX3Rvb2x0aXAocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgdG9vbHRpcCIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTUwKSkKKyAgICBsYWJlbCA9IExhYmVsKHRvcCwgdGV4dD0iUGxhY2UgeW91ciBtb3VzZSBvdmVyIGJ1dHRvbnMiKQogICAgIGxhYmVsLnBhY2soKQotICAgIGJ1dHRvbjEgPSBCdXR0b24ocm9vdCwgdGV4dD0iQnV0dG9uIDEiKQotICAgIGJ1dHRvbjIgPSBCdXR0b24ocm9vdCwgdGV4dD0iQnV0dG9uIDIiKQorICAgIGJ1dHRvbjEgPSBCdXR0b24odG9wLCB0ZXh0PSJCdXR0b24gMSIpCisgICAgYnV0dG9uMiA9IEJ1dHRvbih0b3AsIHRleHQ9IkJ1dHRvbiAyIikKICAgICBidXR0b24xLnBhY2soKQogICAgIGJ1dHRvbjIucGFjaygpCiAgICAgVG9vbFRpcChidXR0b24xLCAiVGhpcyBpcyB0b29sdGlwIHRleHQgZm9yIGJ1dHRvbjEuIikKICAgICBMaXN0Ym94VG9vbFRpcChidXR0b24yLCBbIlRoaXMgaXMiLCJtdWx0aXBsZSBsaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG9vbHRpcCB0ZXh0IiwiZm9yIGJ1dHRvbjIiXSkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkgYi9MaWIvaWRsZWxpYi90cmVlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3RyZWUucHkKaW5kZXggYTE5NTc4Zi4uMjkyY2UzNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weQorKysgYi9MaWIvaWRsZWxpYi90cmVlLnB5CkBAIC0xNSwxMCArMTUsMTIgQEAKICMgLSBvcHRpbWl6ZSB0cmVlIHJlZHJhdyBhZnRlciBleHBhbmQgb2Ygc3Vibm9kZQogCiBpbXBvcnQgb3MKLWZyb20gdGtpbnRlciBpbXBvcnQgKgogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFpvb21IZWlnaHQKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgem9vbWhlaWdodAogCiBJQ09ORElSID0gIkljb25zIgogCkBAIC00NDUsMjIgKzQ0NywyMSBAQAogICAgICAgICBzZWxmLmNhbnZhcy55dmlld19zY3JvbGwoMSwgInVuaXQiKQogICAgICAgICByZXR1cm4gImJyZWFrIgogICAgIGRlZiB6b29tX2hlaWdodChzZWxmLCBldmVudCk6Ci0gICAgICAgIFpvb21IZWlnaHQuem9vbV9oZWlnaHQoc2VsZi5tYXN0ZXIpCisgICAgICAgIHpvb21oZWlnaHQuem9vbV9oZWlnaHQoc2VsZi5tYXN0ZXIpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKIAotZGVmIF90cmVlX3dpZGdldChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBUcmVlV2lkZ2V0IikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgc2MgPSBTY3JvbGxlZENhbnZhcyhyb290LCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCitkZWYgX3RyZWVfd2lkZ2V0KHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4KzUwLCB5KzE3NSkpCisgICAgc2MgPSBTY3JvbGxlZENhbnZhcyh0b3AsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKICAgICBzYy5mcmFtZS5wYWNrKGV4cGFuZD0xLCBmaWxsPSJib3RoIiwgc2lkZT1MRUZUKQotICAgIGl0ZW0gPSBGaWxlVHJlZUl0ZW0ob3MuZ2V0Y3dkKCkpCisgICAgaXRlbSA9IEZpbGVUcmVlSXRlbShJQ09ORElSKQogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS5leHBhbmQoKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICMgdGVzdF90cmVlIGlzIGN1cnJlbnRseSBhIGNvcHkgb2YgdGhpcwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfdHJlZV93aWRnZXQpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvdW5kby5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi91bmRvLnB5CmluZGV4IDFjMjUwMmQuLjQzMzJmMTAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1VuZG9EZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvdW5kby5weQpAQCAtMSw3ICsxLDkgQEAKIGltcG9ydCBzdHJpbmcKLWZyb20gdGtpbnRlciBpbXBvcnQgKgogCi1mcm9tIGlkbGVsaWIuRGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5kZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorCisjIHRraW50dGVyIGltcG9ydCBub3QgbmVlZGVkIGJlY2F1c2UgbW9kdWxlIGRvZXMgbm90IGNyZWF0ZSB3aWRnZXRzLAorIyBhbHRob3VnaCBtYW55IG1ldGhvZHMgb3BlcmF0ZSBvbiB0ZXh0IHdpZGdldCBhcmd1bWVudHMuCiAKICMkIGV2ZW50IDw8cmVkbz4+CiAjJCB3aW4gPENvbnRyb2wteT4KQEAgLTE1OCw3ICsxNjAsNiBAQAogCiAKIGNsYXNzIENvbW1hbmQ6Ci0KICAgICAjIEJhc2UgY2xhc3MgZm9yIFVuZG9hYmxlIGNvbW1hbmRzCiAKICAgICB0YWdzID0gTm9uZQpAQCAtMjA0LDcgKzIwNSw2IEBACiAKIAogY2xhc3MgSW5zZXJ0Q29tbWFuZChDb21tYW5kKToKLQogICAgICMgVW5kb2FibGUgaW5zZXJ0IGNvbW1hbmQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleDEsIGNoYXJzLCB0YWdzPU5vbmUpOgpAQCAtMjYyLDcgKzI2Miw2IEBACiAKIAogY2xhc3MgRGVsZXRlQ29tbWFuZChDb21tYW5kKToKLQogICAgICMgVW5kb2FibGUgZGVsZXRlIGNvbW1hbmQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleDEsIGluZGV4Mj1Ob25lKToKQEAgLTI5Nyw4ICsyOTYsOCBAQAogICAgICAgICB0ZXh0LnNlZSgnaW5zZXJ0JykKICAgICAgICAgIyNzeXMuX19zdGRlcnJfXy53cml0ZSgidW5kbzogJXNcbiIgJSBzZWxmKQogCi1jbGFzcyBDb21tYW5kU2VxdWVuY2UoQ29tbWFuZCk6CiAKK2NsYXNzIENvbW1hbmRTZXF1ZW5jZShDb21tYW5kKToKICAgICAjIFdyYXBwZXIgZm9yIGEgc2VxdWVuY2Ugb2YgdW5kb2FibGUgY21kcyB0byBiZSB1bmRvbmUvcmVkb25lCiAgICAgIyBhcyBhIHVuaXQKIApAQCAtMzM4LDEzICszMzcsMTIgQEAKIAogCiBkZWYgX3VuZG9fZGVsZWdhdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBpbXBvcnQgcmUKLSAgICBpbXBvcnQgdGtpbnRlciBhcyB0awotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi0gICAgdW5kb3dpbiA9IHRrLlRvcGxldmVsKCkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBCdXR0b24KKyAgICBmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIHVuZG93aW4gPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdW5kb3dpbi50aXRsZSgiVGVzdCBVbmRvRGVsZWdhdG9yIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgdW5kb3dpbi5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHVuZG93aW4uZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKICAgICB0ZXh0ID0gVGV4dCh1bmRvd2luLCBoZWlnaHQ9MTApCiAgICAgdGV4dC5wYWNrKCkKQEAgLTM2Miw3ICszNjAsNyBAQAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfdW5kb2RlbGVnYXRvcicsIHZlcmJvc2l0eT0yLAotICAgICAgICAgICAgICAgICAgZXhpdD1GYWxzZSkKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3VuZG8nLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfdW5kb19kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5IGIvTGliL2lkbGVsaWIvd2luZG93cy5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi93aW5kb3dzLnB5CmluZGV4IGJjNzQzNDguLmEzZjg1OGEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1dpbmRvd0xpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvd2luZG93cy5weQpAQCAtMSw1ICsxLDYgQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogCisKIGNsYXNzIFdpbmRvd0xpc3Q6CiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC00OCw2ICs0OSw3IEBACiAgICAgICAgICAgICAgICAgdCwgdiwgdGIgPSBzeXMuZXhjX2luZm8oKQogICAgICAgICAgICAgICAgIHByaW50KCJ3YXJuaW5nOiBjYWxsYmFjayBmYWlsZWQgaW4gV2luZG93TGlzdCIsIHQsICI6IiwgdikKIAorCiByZWdpc3RyeSA9IFdpbmRvd0xpc3QoKQogCiBhZGRfd2luZG93c190b19tZW51ID0gcmVnaXN0cnkuYWRkX3dpbmRvd3NfdG9fbWVudQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weSBiL0xpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvem9vbWhlaWdodC5weQppbmRleCBhNWQ2NzllLi5hYTRhNDI3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ab29tSGVpZ2h0LnB5CisrKyBiL0xpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKQEAgLTMsNyArMyw4IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorCiAKIGNsYXNzIFpvb21IZWlnaHQ6CiAKQEAgLTIwLDYgKzIxLDcgQEAKICAgICAgICAgdG9wID0gc2VsZi5lZGl0d2luLnRvcAogICAgICAgICB6b29tX2hlaWdodCh0b3ApCiAKKwogZGVmIHpvb21faGVpZ2h0KHRvcCk6CiAgICAgZ2VvbSA9IHRvcC53bV9nZW9tZXRyeSgpCiAgICAgbSA9IHJlLm1hdGNoKHIiKFxkKyl4KFxkKylcKygtP1xkKylcKygtP1xkKykiLCBnZW9tKQpAQCAtMzIsNyArMzQsNyBAQAogICAgICAgICBuZXd5ID0gMAogICAgICAgICBuZXdoZWlnaHQgPSBuZXdoZWlnaHQgLSA3MgogCi0gICAgZWxpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgZWxpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgIyBUaGUgJzg4JyBiZWxvdyBpcyBhIG1hZ2ljIG51bWJlciB0aGF0IGF2b2lkcyBwbGFjaW5nIHRoZSBib3R0b20KICAgICAgICAgIyBvZiB0aGUgd2luZG93IGJlbG93IHRoZSBwYW5lbCBvbiBteSBtYWNoaW5lLiBJIGRvbid0IGtub3cgaG93CiAgICAgICAgICMgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHZhbHVlIGZvciB0aGlzIHdpdGggdGtpbnRlci4KZGlmZiAtLWdpdCBhL0xpYi9pbWFwbGliLnB5IGIvTGliL2ltYXBsaWIucHkKaW5kZXggNGU4YTRiYi4uY2FkNTA4YSAxMDA2NDQKLS0tIGEvTGliL2ltYXBsaWIucHkKKysrIGIvTGliL2ltYXBsaWIucHkKQEAgLTExMSw3ICsxMTEsMTUgQEAKICMgTGl0ZXJhbCBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIExpdGVyYWwgPSByZS5jb21waWxlKGJyJy4qeyg/UDxzaXplPlxkKyl9JCcsIHJlLkFTQ0lJKQogTWFwQ1JMRiA9IHJlLmNvbXBpbGUoYnInXHJcbnxccnxcbicpCi1SZXNwb25zZV9jb2RlID0gcmUuY29tcGlsZShicidcWyg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT5bXlxdXSopKT9cXScpCisjIFdlIG5vIGxvbmdlciBleGNsdWRlIHRoZSAnXScgY2hhcmFjdGVyIGZyb20gdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgcmVzcG9uc2UKKyMgY29kZSwgZXZlbiB0aG91Z2ggaXQgdmlvbGF0ZXMgdGhlIFJGQy4gIFBvcHVsYXIgSU1BUCBzZXJ2ZXJzIHN1Y2ggYXMgR21haWwKKyMgYWxsb3cgZmxhZ3Mgd2l0aCAnXScsIGFuZCB0aGVyZSBhcmUgcHJvZ3JhbXMgKGluY2x1ZGluZyBpbWFwbGliISkgdGhhdCBjYW4KKyMgcHJvZHVjZSB0aGVtLiAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGlzIGlmIHRoZSAndGV4dCcgcG9ydGlvbiBvZiB0aGUgcmVzcG9uc2UKKyMgaW5jbHVkZXMgYSAnXScgd2UnbGwgcGFyc2UgdGhlIHJlc3BvbnNlIHdyb25nICh3aGljaCBpcyB0aGUgcG9pbnQgb2YgdGhlIFJGQworIyByZXN0cmljdGlvbikuICBIb3dldmVyLCB0aGF0IHNlZW1zIGxlc3MgbGlrZWx5IHRvIGJlIGEgcHJvYmxlbSBpbiBwcmFjdGljZQorIyB0aGFuIGJlaW5nIHVuYWJsZSB0byBjb3JyZWN0bHkgcGFyc2UgZmxhZ3MgdGhhdCBpbmNsdWRlICddJyBjaGFycywgd2hpY2gKKyMgd2FzIHJlcG9ydGVkIGFzIGEgcmVhbC13b3JsZCBwcm9ibGVtIGluIGlzc3VlICMyMTgxNS4KK1Jlc3BvbnNlX2NvZGUgPSByZS5jb21waWxlKGJyJ1xbKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/XF0nKQogVW50YWdnZWRfcmVzcG9uc2UgPSByZS5jb21waWxlKGJyJ1wqICg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT4uKikpPycpCiAjIFVudGFnZ2VkX3N0YXR1cyBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZSgKQEAgLTEyNCw3ICsxMzIsNyBAQAogCiBjbGFzcyBJTUFQNDoKIAotICAgICIiIklNQVA0IGNsaWVudCBjbGFzcy4KKyAgICByIiIiSU1BUDQgY2xpZW50IGNsYXNzLgogCiAgICAgSW5zdGFudGlhdGUgd2l0aDogSU1BUDQoW2hvc3RbLCBwb3J0XV0pCiAKQEAgLTEyNTksNyArMTI2NywxMCBAQAogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNzbF9jb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQotCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gc3NsX2NvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgTm9uZToKQEAgLTE1MjcsNyArMTUzOCw3IEBACiAgICAgKCdzZWxlY3QnLCAoJy90bXAveXl6IDInLCkpLAogICAgICgnc2VhcmNoJywgKE5vbmUsICdTVUJKRUNUJywgJ3Rlc3QnKSksCiAgICAgKCdmZXRjaCcsICgnMScsICcoRkxBR1MgSU5URVJOQUxEQVRFIFJGQzgyMiknKSksCi0gICAgKCdzdG9yZScsICgnMScsICdGTEFHUycsICcoXERlbGV0ZWQpJykpLAorICAgICgnc3RvcmUnLCAoJzEnLCAnRkxBR1MnLCByJyhcRGVsZXRlZCknKSksCiAgICAgKCduYW1lc3BhY2UnLCAoKSksCiAgICAgKCdleHB1bmdlJywgKCkpLAogICAgICgncmVjZW50JywgKCkpLApkaWZmIC0tZ2l0IGEvTGliL2ltcC5weSBiL0xpYi9pbXAucHkKaW5kZXggZTI2NDM5MS4uNzgxZmYyMyAxMDA2NDQKLS0tIGEvTGliL2ltcC5weQorKysgYi9MaWIvaW1wLnB5CkBAIC0zMCw3ICszMCw3IEBACiAKIHdhcm5pbmdzLndhcm4oInRoZSBpbXAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGltcG9ydGxpYjsgIgogICAgICAgICAgICAgICAic2VlIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBhbHRlcm5hdGl2ZSB1c2VzIiwKLSAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKIAogIyBERVBSRUNBVEVECiBTRUFSQ0hfRVJST1IgPSAwCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggOWVlY2JmZS4uYTUzMWEwMyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtMzYsMjMgKzM2LDYgQEAKICAgICByZXR1cm4gdHlwZShzeXMpKG5hbWUpCiAKIAotY2xhc3MgX01hbmFnZVJlbG9hZDoKLQotICAgICIiIk1hbmFnZXMgdGhlIHBvc3NpYmxlIGNsZWFuLXVwIG9mIHN5cy5tb2R1bGVzIGZvciBsb2FkX21vZHVsZSgpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5faXNfcmVsb2FkID0gc2VsZi5fbmFtZSBpbiBzeXMubW9kdWxlcwotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKLSAgICAgICAgaWYgYW55KGFyZyBpcyBub3QgTm9uZSBmb3IgYXJnIGluIGFyZ3MpIGFuZCBub3Qgc2VsZi5faXNfcmVsb2FkOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tzZWxmLl9uYW1lXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQogIyBNb2R1bGUtbGV2ZWwgbG9ja2luZyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIEEgZGljdCBtYXBwaW5nIG1vZHVsZSBuYW1lcyB0byB3ZWFrcmVmcyBvZiBfTW9kdWxlTG9jayBpbnN0YW5jZXMKQEAgLTI3MCw3ICsyNTMsNyBAQAogIyBNb2R1bGUgc3BlY2lmaWNhdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBkZWYgX21vZHVsZV9yZXByKG1vZHVsZSk6Ci0gICAgIyBUaGUgaW1wbGVtZW50YXRpb24gb2YgTW9kdWxlVHlwZV9fcmVwcl9fKCkuCisgICAgIyBUaGUgaW1wbGVtZW50YXRpb24gb2YgTW9kdWxlVHlwZS5fX3JlcHJfXygpLgogICAgIGxvYWRlciA9IGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpCiAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdtb2R1bGVfcmVwcicpOgogICAgICAgICAjIEFzIHNvb24gYXMgQnVpbHRpbkltcG9ydGVyLCBGcm96ZW5JbXBvcnRlciwgYW5kIE5hbWVzcGFjZUxvYWRlcgpAQCAtNTc2LDkgKzU1OSw4IEBACiAgICAgICAgICMgbW9kdWxlIGNyZWF0aW9uIHNob3VsZCBiZSB1c2VkLgogICAgICAgICBtb2R1bGUgPSBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCiAgICAgZWxpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKLSAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N0YXJ0aW5nIGluIFB5dGhvbiAzLjYsIGxvYWRlcnMgZGVmaW5pbmcgZXhlY19tb2R1bGUoKSAnCi0gICAgICAgICAgICAgICAgICAgICAgICdtdXN0IGFsc28gZGVmaW5lIGNyZWF0ZV9tb2R1bGUoKScsCi0gICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbG9hZGVycyB0aGF0IGRlZmluZSBleGVjX21vZHVsZSgpICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJykKICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgbW9kdWxlID0gX25ld19tb2R1bGUoc3BlYy5uYW1lKQogICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUpCkBAIC02MDMsNyArNTg1LDcgQEAKIAogIyBVc2VkIGJ5IGltcG9ydGxpYi5yZWxvYWQoKSBhbmQgX2xvYWRfbW9kdWxlX3NoaW0oKS4KIGRlZiBfZXhlYyhzcGVjLCBtb2R1bGUpOgotICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgorICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMncyBzcGVjaWZpZWQgbW9kdWxlIGluIGFuIGV4aXN0aW5nIG1vZHVsZSdzIG5hbWVzcGFjZS4iIiIKICAgICBuYW1lID0gc3BlYy5uYW1lCiAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQogICAgIHdpdGggX01vZHVsZUxvY2tNYW5hZ2VyKG5hbWUpOgpAQCAtODc3LDE0ICs4NTksMjEgQEAKIAogCiBkZWYgX2ZpbmRfc3BlYyhuYW1lLCBwYXRoLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgIiIiRmluZCBhIG1vZHVsZSdzIGxvYWRlci4iIiIKLSAgICBpZiBzeXMubWV0YV9wYXRoIGlzIG5vdCBOb25lIGFuZCBub3Qgc3lzLm1ldGFfcGF0aDoKKyAgICAiIiJGaW5kIGEgbW9kdWxlJ3Mgc3BlYy4iIiIKKyAgICBtZXRhX3BhdGggPSBzeXMubWV0YV9wYXRoCisgICAgaWYgbWV0YV9wYXRoIGlzIE5vbmU6CisgICAgICAgICMgUHlJbXBvcnRfQ2xlYW51cCgpIGlzIHJ1bm5pbmcgb3IgaGFzIGJlZW4gY2FsbGVkLgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigic3lzLm1ldGFfcGF0aCBpcyBOb25lLCBQeXRob24gaXMgbGlrZWx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNodXR0aW5nIGRvd24iKQorCisgICAgaWYgbm90IG1ldGFfcGF0aDoKICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5tZXRhX3BhdGggaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQorCiAgICAgIyBXZSBjaGVjayBzeXMubW9kdWxlcyBoZXJlIGZvciB0aGUgcmVsb2FkIGNhc2UuICBXaGlsZSBhIHBhc3NlZC1pbgogICAgICMgdGFyZ2V0IHdpbGwgdXN1YWxseSBpbmRpY2F0ZSBhIHJlbG9hZCB0aGVyZSBpcyBubyBndWFyYW50ZWUsIHdoZXJlYXMKICAgICAjIHN5cy5tb2R1bGVzIHByb3ZpZGVzIG9uZS4KICAgICBpc19yZWxvYWQgPSBuYW1lIGluIHN5cy5tb2R1bGVzCi0gICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgIGZvciBmaW5kZXIgaW4gbWV0YV9wYXRoOgogICAgICAgICB3aXRoIF9JbXBvcnRMb2NrQ29udGV4dCgpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZpbmRfc3BlYyA9IGZpbmRlci5maW5kX3NwZWMKQEAgLTkyNSw2ICs5MTQsOSBAQAogICAgIGlmIGxldmVsID4gMDoKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFja2FnZSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19wYWNrYWdlX18gbm90IHNldCB0byBhIHN0cmluZycpCisgICAgICAgIGVsaWYgbm90IHBhY2thZ2U6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCB3aXRoIG5vIGtub3duIHBhcmVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFja2FnZScpCiAgICAgICAgIGVsaWYgcGFja2FnZSBub3QgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICBtc2cgPSAoJ1BhcmVudCBtb2R1bGUgeyFyfSBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAnCiAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCcpCkBAIC05NTAsMTAgKzk0MiwxMCBAQAogICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuX19wYXRoX18KICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsgeyFyfSBpcyBub3QgYSBwYWNrYWdlJykuZm9ybWF0KG5hbWUsIHBhcmVudCkKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKSBmcm9tIE5vbmUKKyAgICAgICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IobXNnLCBuYW1lPW5hbWUpIGZyb20gTm9uZQogICAgIHNwZWMgPSBfZmluZF9zcGVjKG5hbWUsIHBhdGgpCiAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihfRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKKyAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihfRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKICAgICBlbHNlOgogICAgICAgICBtb2R1bGUgPSBfbG9hZF91bmxvY2tlZChzcGVjKQogICAgIGlmIHBhcmVudDoKQEAgLTk4OSwxMCArOTgxLDExIEBACiAgICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKICAgICAgICAgbWVzc2FnZSA9ICgnaW1wb3J0IG9mIHt9IGhhbHRlZDsgJwogICAgICAgICAgICAgICAgICAgICdOb25lIGluIHN5cy5tb2R1bGVzJy5mb3JtYXQobmFtZSkpCi0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKKyAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihtZXNzYWdlLCBuYW1lPW5hbWUpCiAgICAgX2xvY2tfdW5sb2NrX21vZHVsZShuYW1lKQogICAgIHJldHVybiBtb2R1bGUKIAorCiBkZWYgX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBpbXBvcnRfKToKICAgICAiIiJGaWd1cmUgb3V0IHdoYXQgX19pbXBvcnRfXyBzaG91bGQgcmV0dXJuLgogCkBAIC0xMDE0LDEzICsxMDA3LDEyIEBACiAgICAgICAgICAgICAgICAgZnJvbV9uYW1lID0gJ3t9Lnt9Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fLCB4KQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChpbXBvcnRfLCBmcm9tX25hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZGljdGF0ZXMgd2UgaWdub3JlIGZhaWxlZAogICAgICAgICAgICAgICAgICAgICAjIGltcG9ydHMgdHJpZ2dlcmVkIGJ5IGZyb21saXN0IGZvciBtb2R1bGVzIHRoYXQgZG9uJ3QKICAgICAgICAgICAgICAgICAgICAgIyBleGlzdC4KLSAgICAgICAgICAgICAgICAgICAgaWYgc3RyKGV4Yykuc3RhcnRzd2l0aChfRVJSX01TR19QUkVGSVgpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gZnJvbV9uYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09IGZyb21fbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgcmV0dXJuIG1vZHVsZQogCkBAIC0xMDMzLDcgKzEwMjUsMTkgQEAKIAogICAgICIiIgogICAgIHBhY2thZ2UgPSBnbG9iYWxzLmdldCgnX19wYWNrYWdlX18nKQotICAgIGlmIHBhY2thZ2UgaXMgTm9uZToKKyAgICBzcGVjID0gZ2xvYmFscy5nZXQoJ19fc3BlY19fJykKKyAgICBpZiBwYWNrYWdlIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBwYWNrYWdlICE9IHNwZWMucGFyZW50OgorICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oIl9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmIih7cGFja2FnZSFyfSAhPSB7c3BlYy5wYXJlbnQhcn0pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydFdhcm5pbmcsIHN0YWNrbGV2ZWw9MykKKyAgICAgICAgcmV0dXJuIHBhY2thZ2UKKyAgICBlbGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBzcGVjLnBhcmVudAorICAgIGVsc2U6CisgICAgICAgIF93YXJuaW5ncy53YXJuKCJjYW4ndCByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXywgIgorICAgICAgICAgICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIG9uIF9fbmFtZV9fIGFuZCBfX3BhdGhfXyIsCisgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydFdhcm5pbmcsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgcGFja2FnZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KICAgICAgICAgaWYgJ19fcGF0aF9fJyBub3QgaW4gZ2xvYmFsczoKICAgICAgICAgICAgIHBhY2thZ2UgPSBwYWNrYWdlLnJwYXJ0aXRpb24oJy4nKVswXQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CmluZGV4IGU1NGQ2OTEuLmJmYjg5ZGEgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQorKysgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKQEAgLTEzNywxMCArMTM3LDYgQEAKICMgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCiAjIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCiAjCi0jIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKLSMgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgotIyBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLSMKICMgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KICMgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQogIyAxMC4KQEAgLTIzMSw2ICsyMjcsMTcgQEAKICMgICAgIFB5dGhvbiAzLjViMiAgMzM0MCAoZml4IGRpY3Rpb25hcnkgZGlzcGxheSBldmFsdWF0aW9uIG9yZGVyICMxMTIwNSkKICMgICAgIFB5dGhvbiAzLjViMiAgMzM1MCAoYWRkIEdFVF9ZSUVMRF9GUk9NX0lURVIgb3Bjb2RlICMyNDQwMCkKICMgICAgIFB5dGhvbiAzLjUuMiAgMzM1MSAoZml4IEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMIG9wY29kZSAjMjcyODYpCisjICAgICBQeXRob24gMy42YTAgIDMzNjAgKGFkZCBGT1JNQVRfVkFMVUUgb3Bjb2RlICMyNTQ4MworIyAgICAgUHl0aG9uIDMuNmEwICAzMzYxIChsaW5lbm8gZGVsdGEgb2YgY29kZS5jb19sbm90YWIgYmVjb21lcyBzaWduZWQpCisjICAgICBQeXRob24gMy42YTEgIDMzNzAgKDE2IGJpdCB3b3JkY29kZSkKKyMgICAgIFB5dGhvbiAzLjZhMSAgMzM3MSAoYWRkIEJVSUxEX0NPTlNUX0tFWV9NQVAgb3Bjb2RlICMyNzE0MCkKKyMgICAgIFB5dGhvbiAzLjZhMSAgMzM3MiAoTUFLRV9GVU5DVElPTiBzaW1wbGlmaWNhdGlvbiwgcmVtb3ZlIE1BS0VfQ0xPU1VSRQorIyAgICAgICAgICAgICAgICAgICAgICAgICAjMjcwOTUpCisjICAgICBQeXRob24gMy42YjEgIDMzNzMgKGFkZCBCVUlMRF9TVFJJTkcgb3Bjb2RlICMyNzA3OCkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3NSAoYWRkIFNFVFVQX0FOTk9UQVRJT05TIGFuZCBTVE9SRV9BTk5PVEFUSU9OIG9wY29kZXMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIzI3OTg1KQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzc2IChzaW1wbGlmeSBDQUxMX0ZVTkNUSU9OcyAmIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMKQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzc3IChzZXQgX19jbGFzc19fIGNlbGwgZnJvbSB0eXBlLl9fbmV3X18gIzIzNzIyKQogIwogIyBNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCiAjIGxvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5CkBAIC0yMzksNyArMjQ2LDcgQEAKICMgV2hlbmV2ZXIgTUFHSUNfTlVNQkVSIGlzIGNoYW5nZWQsIHRoZSByYW5nZXMgaW4gdGhlIG1hZ2ljX3ZhbHVlcyBhcnJheQogIyBpbiBQQy9sYXVuY2hlci5jIG11c3QgYWxzbyBiZSB1cGRhdGVkLgogCi1NQUdJQ19OVU1CRVIgPSAoMzM1MSkudG9fYnl0ZXMoMiwgJ2xpdHRsZScpICsgYidcclxuJworTUFHSUNfTlVNQkVSID0gKDMzNzcpLnRvX2J5dGVzKDIsICdsaXR0bGUnKSArIGInXHJcbicKIF9SQVdfTUFHSUNfTlVNQkVSID0gaW50LmZyb21fYnl0ZXMoTUFHSUNfTlVNQkVSLCAnbGl0dGxlJykgICMgRm9yIGltcG9ydC5jCiAKIF9QWUNBQ0hFID0gJ19fcHljYWNoZV9fJwpAQCAtMjc2LDYgKzI4Myw3IEBACiAgICAgICAgICAgICBtZXNzYWdlID0gJ2RlYnVnX292ZXJyaWRlIG9yIG9wdGltaXphdGlvbiBtdXN0IGJlIHNldCB0byBOb25lJwogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1lc3NhZ2UpCiAgICAgICAgIG9wdGltaXphdGlvbiA9ICcnIGlmIGRlYnVnX292ZXJyaWRlIGVsc2UgMQorICAgIHBhdGggPSBfb3MuZnNwYXRoKHBhdGgpCiAgICAgaGVhZCwgdGFpbCA9IF9wYXRoX3NwbGl0KHBhdGgpCiAgICAgYmFzZSwgc2VwLCByZXN0ID0gdGFpbC5ycGFydGl0aW9uKCcuJykKICAgICB0YWcgPSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCkBAIC0zMDYsNiArMzE0LDcgQEAKICAgICAiIiIKICAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCisgICAgcGF0aCA9IF9vcy5mc3BhdGgocGF0aCkKICAgICBoZWFkLCBweWNhY2hlX2ZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKICAgICBoZWFkLCBweWNhY2hlID0gX3BhdGhfc3BsaXQoaGVhZCkKICAgICBpZiBweWNhY2hlICE9IF9QWUNBQ0hFOgpAQCAtMzcxLDE0ICszODAsNiBAQAogICAgIHJldHVybiBtb2RlCiAKIAotZGVmIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSwgKmFyZ3MsIHZlcmJvc2l0eT0xKToKLSAgICAiIiJQcmludCB0aGUgbWVzc2FnZSB0byBzdGRlcnIgaWYgLXYvUFlUSE9OVkVSQk9TRSBpcyB0dXJuZWQgb24uIiIiCi0gICAgaWYgc3lzLmZsYWdzLnZlcmJvc2UgPj0gdmVyYm9zaXR5OgotICAgICAgICBpZiBub3QgbWVzc2FnZS5zdGFydHN3aXRoKCgnIycsICdpbXBvcnQgJykpOgotICAgICAgICAgICAgbWVzc2FnZSA9ICcjICcgKyBtZXNzYWdlCi0gICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQotCi0KIGRlZiBfY2hlY2tfbmFtZShtZXRob2QpOgogICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhhdCB0aGUgbW9kdWxlIGJlaW5nIHJlcXVlc3RlZCBtYXRjaGVzIHRoZSBvbmUgdGhlCiAgICAgbG9hZGVyIGNhbiBoYW5kbGUuCkBAIC00NDgsMTUgKzQ0OSwxNSBAQAogICAgIHJhd19zaXplID0gZGF0YVs4OjEyXQogICAgIGlmIG1hZ2ljICE9IE1BR0lDX05VTUJFUjoKICAgICAgICAgbWVzc2FnZSA9ICdiYWQgbWFnaWMgbnVtYmVyIGluIHshcn06IHshcn0nLmZvcm1hdChuYW1lLCBtYWdpYykKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKICAgICBlbGlmIGxlbihyYXdfdGltZXN0YW1wKSAhPSA0OgogICAgICAgICBtZXNzYWdlID0gJ3JlYWNoZWQgRU9GIHdoaWxlIHJlYWRpbmcgdGltZXN0YW1wIGluIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQogICAgIGVsaWYgbGVuKHJhd19zaXplKSAhPSA0OgogICAgICAgICBtZXNzYWdlID0gJ3JlYWNoZWQgRU9GIHdoaWxlIHJlYWRpbmcgc2l6ZSBvZiBzb3VyY2UgaW4geyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCiAgICAgaWYgc291cmNlX3N0YXRzIGlzIG5vdCBOb25lOgogICAgICAgICB0cnk6CkBAIC00NjYsNyArNDY3LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3RpbWVzdGFtcCkgIT0gc291cmNlX210aW1lOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb3VyY2Vfc2l6ZSA9IHNvdXJjZV9zdGF0c1snc2l6ZSddICYgMHhGRkZGRkZGRgpAQCAtNDgzLDcgKzQ4NCw3IEBACiAgICAgIiIiQ29tcGlsZSBieXRlY29kZSBhcyByZXR1cm5lZCBieSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKCkuIiIiCiAgICAgY29kZSA9IG1hcnNoYWwubG9hZHMoZGF0YSkKICAgICBpZiBpc2luc3RhbmNlKGNvZGUsIF9jb2RlX3R5cGUpOgotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBieXRlY29kZV9wYXRoKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgX2ltcC5fZml4X2NvX2ZpbGVuYW1lKGNvZGUsIHNvdXJjZV9wYXRoKQogICAgICAgICByZXR1cm4gY29kZQpAQCAtNTQxLDYgKzU0Miw4IEBACiAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGxvY2F0aW9uID0gX29zLmZzcGF0aChsb2NhdGlvbikKIAogICAgICMgSWYgdGhlIGxvY2F0aW9uIGlzIG9uIHRoZSBmaWxlc3lzdGVtLCBidXQgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKICAgICAjIHdlIGNvdWxkIHJldHVybiBOb25lIGhlcmUsIGluZGljYXRpbmcgdGhhdCB0aGUgbG9jYXRpb24gaXMgbm90CkBAIC02MTAsNyArNjEzLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IGNscy5SRUdJU1RSWV9LRVkKICAgICAgICAga2V5ID0gcmVnaXN0cnlfa2V5LmZvcm1hdChmdWxsbmFtZT1mdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj1zeXMudmVyc2lvbls6M10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249JyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIGNscy5fb3Blbl9yZWdpc3RyeShrZXkpIGFzIGhrZXk6CiAgICAgICAgICAgICAgICAgZmlsZXBhdGggPSBfd2lucmVnLlF1ZXJ5VmFsdWUoaGtleSwgJycpCkBAIC02NzMsNiArNjc2LDcgQEAKICAgICAgICAgX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGV4ZWMsIGNvZGUsIG1vZHVsZS5fX2RpY3RfXykKIAogICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlRoaXMgbW9kdWxlIGlzIGRlcHJlY2F0ZWQuIiIiCiAgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQogCiAKQEAgLTc2NiwyMSArNzcwLDIxIEBACiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGg9Ynl0ZWNvZGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aD1zb3VyY2VfcGF0aCkKICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKICAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9Jywgc291cmNlX3BhdGgpCiAgICAgICAgIGlmIChub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgYW5kIGJ5dGVjb2RlX3BhdGggaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgc291cmNlX210aW1lIGlzIG5vdCBOb25lKToKICAgICAgICAgICAgIGRhdGEgPSBfY29kZV90b19ieXRlY29kZShjb2RlX29iamVjdCwgc291cmNlX210aW1lLAogICAgICAgICAgICAgICAgICAgICBsZW4oc291cmNlX2J5dGVzKSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZV9ieXRlY29kZShzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSkKLSAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd3cm90ZSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKQEAgLTg2MCwxNCArODY0LDE2IEBACiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAgIyBDb3VsZCBiZSBhIHBlcm1pc3Npb24gZXJyb3IsIHJlYWQtb25seSBmaWxlc3lzdGVtOiBqdXN0IGZvcmdldAogICAgICAgICAgICAgICAgICMgYWJvdXQgd3JpdGluZyB0aGUgZGF0YS4KLSAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXJlbnQsIGV4YykKKyAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCwgZXhjKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKKyAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKKyAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGMpCiAKIAogY2xhc3MgU291cmNlbGVzc0ZpbGVMb2FkZXIoRmlsZUxvYWRlciwgX0xvYWRlckJhc2ljcyk6CkBAIC05MTIsMTQgKzkxOCwxNCBAQAogICAgICAgICAiIiJDcmVhdGUgYW4gdW5pdGlhbGl6ZWQgZXh0ZW5zaW9uIG1vZHVsZSIiIgogICAgICAgICBtb2R1bGUgPSBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoCiAgICAgICAgICAgICBfaW1wLmNyZWF0ZV9keW5hbWljLCBzcGVjKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gbG9hZGVkIGZyb20geyFyfScsCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGxvYWRlZCBmcm9tIHshcn0nLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMubmFtZSwgc2VsZi5wYXRoKQogICAgICAgICByZXR1cm4gbW9kdWxlCiAKICAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBleHRlbnNpb24gbW9kdWxlIiIiCiAgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfZHluYW1pYywgbW9kdWxlKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gZXhlY3V0ZWQgZnJvbSB7IXJ9JywKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gZXhlY3V0ZWQgZnJvbSB7IXJ9JywKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIHNlbGYucGF0aCkKIAogICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKQEAgLTk4NSw2ICs5OTEsOSBAQAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKIAorICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpbmRleCwgcGF0aCk6CisgICAgICAgIHNlbGYuX3BhdGhbaW5kZXhdID0gcGF0aAorCiAgICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5fcmVjYWxjdWxhdGUoKSkKIApAQCAtMTAzNCw3ICsxMDQzLDggQEAKIAogICAgICAgICAiIiIKICAgICAgICAgIyBUaGUgaW1wb3J0IHN5c3RlbSBuZXZlciBjYWxscyB0aGlzIG1ldGhvZC4KLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLCBzZWxmLl9wYXRoKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ25hbWVzcGFjZSBtb2R1bGUgbG9hZGVkIHdpdGggcGF0aCB7IXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhdGgpCiAgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQogCiAKQEAgLTEwNTQsMTEgKzEwNjQsNyBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCk6Ci0gICAgICAgICIiIlNlYXJjaCBzZXF1ZW5jZSBvZiBob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4KLQotICAgICAgICBJZiAnaG9va3MnIGlzIGZhbHNlIHRoZW4gdXNlIHN5cy5wYXRoX2hvb2tzLgotCi0gICAgICAgICIiIgorICAgICAgICAiIiJTZWFyY2ggc3lzLnBhdGhfaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuIiIiCiAgICAgICAgIGlmIHN5cy5wYXRoX2hvb2tzIGlzIG5vdCBOb25lIGFuZCBub3Qgc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLnBhdGhfaG9va3MgaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQogICAgICAgICBmb3IgaG9vayBpbiBzeXMucGF0aF9ob29rczoKQEAgLTExNDAsOCArMTE0NiwxMCBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKLSAgICAgICAgIiIiZmluZCB0aGUgbW9kdWxlIG9uIHN5cy5wYXRoIG9yICdwYXRoJyBiYXNlZCBvbiBzeXMucGF0aF9ob29rcyBhbmQKLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuIiIiCisgICAgICAgICIiIlRyeSB0byBmaW5kIGEgc3BlYyBmb3IgJ2Z1bGxuYW1lJyBvbiBzeXMucGF0aCBvciAncGF0aCcuCisKKyAgICAgICAgVGhlIHNlYXJjaCBpcyBiYXNlZCBvbiBzeXMucGF0aF9ob29rcyBhbmQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisgICAgICAgICIiIgogICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgICAgICBwYXRoID0gc3lzLnBhdGgKICAgICAgICAgc3BlYyA9IGNscy5fZ2V0X3NwZWMoZnVsbG5hbWUsIHBhdGgsIHRhcmdldCkKQEAgLTEyMjEsOCArMTIyOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM9c21zbCkKIAogICAgIGRlZiBmaW5kX3NwZWMoc2VsZiwgZnVsbG5hbWUsIHRhcmdldD1Ob25lKToKLSAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBzcGVjIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4gIFJldHVybnMgdGhlCi0gICAgICAgIG1hdGNoaW5nIHNwZWMsIG9yIE5vbmUgaWYgbm90IGZvdW5kLiIiIgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIHNwZWMgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLgorCisgICAgICAgIFJldHVybnMgdGhlIG1hdGNoaW5nIHNwZWMsIG9yIE5vbmUgaWYgbm90IGZvdW5kLgorICAgICAgICAiIiIKICAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKICAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KICAgICAgICAgdHJ5OgpAQCAtMTI1NCwxMiArMTI2NCwxMyBAQAogICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6CiAgICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUgKyBzdWZmaXgpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge30nLmZvcm1hdChmdWxsX3BhdGgpLCB2ZXJib3NpdHk9MikKKyAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgndHJ5aW5nIHt9JywgZnVsbF9wYXRoLCB2ZXJib3NpdHk9MikKICAgICAgICAgICAgIGlmIGNhY2hlX21vZHVsZSArIHN1ZmZpeCBpbiBjYWNoZToKICAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgTm9uZSwgdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X3NwZWMobG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgZnVsbF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgdGFyZ2V0KQogICAgICAgICBpZiBpc19uYW1lc3BhY2U6Ci0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdwb3NzaWJsZSBuYW1lc3BhY2UgZm9yIHt9Jy5mb3JtYXQoYmFzZV9wYXRoKSkKKyAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgncG9zc2libGUgbmFtZXNwYWNlIGZvciB7fScsIGJhc2VfcGF0aCkKICAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLk1vZHVsZVNwZWMoZnVsbG5hbWUsIE5vbmUpCiAgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gW2Jhc2VfcGF0aF0KICAgICAgICAgICAgIHJldHVybiBzcGVjCkBAIC0xNDMwLDggKzE0NDEsMyBAQAogICAgIGlmIF9vcy5fX25hbWVfXyA9PSAnbnQnOgogICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChXaW5kb3dzUmVnaXN0cnlGaW5kZXIpCiAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoUGF0aEZpbmRlcikKLQotICAgICMgWFhYIFdlIGV4cG9zZSBhIGNvdXBsZSBvZiBjbGFzc2VzIGluIF9ib290c3RyYXAgZm9yIHRoZSBzYWtlIG9mCi0gICAgIyBhIHNldHVwdG9vbHMgYnVnIChodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS9zZXR1cHRvb2xzL2lzc3VlLzM3OCkuCi0gICAgX2Jvb3RzdHJhcF9tb2R1bGUuRmlsZUZpbmRlciA9IEZpbGVGaW5kZXIKLSAgICBfYm9vdHN0cmFwX21vZHVsZS5Tb3VyY2VGaWxlTG9hZGVyID0gU291cmNlRmlsZUxvYWRlcgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi91dGlsLnB5IGIvTGliL2ltcG9ydGxpYi91dGlsLnB5CmluZGV4IGUxZmEwN2EuLjZiZGYwZDQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdXRpbC5weQorKysgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKQEAgLTIyLDggKzIyLDggQEAKICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCcuJyk6CiAgICAgICAgIHJldHVybiBuYW1lCiAgICAgZWxpZiBub3QgcGFja2FnZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSByZWxhdGl2ZSBuYW1lICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKG5vIGxlYWRpbmcgZG90KScuZm9ybWF0KG5hbWUpKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnbm8gcGFja2FnZSBzcGVjaWZpZWQgZm9yIHtyZXByKG5hbWUpfSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhyZXF1aXJlZCBmb3IgcmVsYXRpdmUgbW9kdWxlIG5hbWVzKScpCiAgICAgbGV2ZWwgPSAwCiAgICAgZm9yIGNoYXJhY3RlciBpbiBuYW1lOgogICAgICAgICBpZiBjaGFyYWN0ZXIgIT0gJy4nOgpAQCAtMjA0LDExICsyMDQsNiBAQAogICAgIHJldHVybiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyCiAKIAotY2xhc3MgX01vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKLQotICAgICIiIkEgc3ViY2xhc3Mgb2YgdGhlIG1vZHVsZSB0eXBlIHRvIGFsbG93IF9fY2xhc3NfXyBtYW5pcHVsYXRpb24uIiIiCi0KLQogY2xhc3MgX0xhenlNb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CiAKICAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB3aGljaCB0cmlnZ2VycyBsb2FkaW5nIHVwb24gYXR0cmlidXRlIGFjY2Vzcy4iIiIKQEAgLTIxOCwxMyArMjEzLDE0IEBACiAgICAgICAgICMgQWxsIG1vZHVsZSBtZXRhZGF0YSBtdXN0IGJlIGdhcm5lcmVkIGZyb20gX19zcGVjX18gaW4gb3JkZXIgdG8gYXZvaWQKICAgICAgICAgIyB1c2luZyBtdXRhdGVkIHZhbHVlcy4KICAgICAgICAgIyBTdG9wIHRyaWdnZXJpbmcgdGhpcyBtZXRob2QuCi0gICAgICAgIHNlbGYuX19jbGFzc19fID0gX01vZHVsZQorICAgICAgICBzZWxmLl9fY2xhc3NfXyA9IHR5cGVzLk1vZHVsZVR5cGUKICAgICAgICAgIyBHZXQgdGhlIG9yaWdpbmFsIG5hbWUgdG8gbWFrZSBzdXJlIG5vIG9iamVjdCBzdWJzdGl0dXRpb24gb2NjdXJyZWQKICAgICAgICAgIyBpbiBzeXMubW9kdWxlcy4KICAgICAgICAgb3JpZ2luYWxfbmFtZSA9IHNlbGYuX19zcGVjX18ubmFtZQogICAgICAgICAjIEZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0IGF0dHJpYnV0ZXMgd2VyZSBtdXRhdGVkIGJldHdlZW4gdGhlIGNyZWF0aW9uCiAgICAgICAgICMgb2YgdGhlIG1vZHVsZSBhbmQgbm93LgotICAgICAgICBhdHRyc190aGVuID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGUKKyAgICAgICAgYXR0cnNfdGhlbiA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlWydfX2RpY3RfXyddCisgICAgICAgIG9yaWdpbmFsX3R5cGUgPSBzZWxmLl9fc3BlY19fLmxvYWRlcl9zdGF0ZVsnX19jbGFzc19fJ10KICAgICAgICAgYXR0cnNfbm93ID0gc2VsZi5fX2RpY3RfXwogICAgICAgICBhdHRyc191cGRhdGVkID0ge30KICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXR0cnNfbm93Lml0ZW1zKCk6CkBAIC0yMzksOSArMjM1LDkgQEAKICAgICAgICAgIyBvYmplY3Qgd2FzIHB1dCBpbnRvIHN5cy5tb2R1bGVzLgogICAgICAgICBpZiBvcmlnaW5hbF9uYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgaWYgaWQoc2VsZikgIT0gaWQoc3lzLm1vZHVsZXNbb3JpZ2luYWxfbmFtZV0pOgotICAgICAgICAgICAgICAgIG1zZyA9ICgnbW9kdWxlIG9iamVjdCBmb3IgeyFyfSBzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyAnCi0gICAgICAgICAgICAgICAgICAgICAgICdkdXJpbmcgYSBsYXp5IGxvYWQnKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnLmZvcm1hdChvcmlnaW5hbF9uYW1lKSkKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYibW9kdWxlIG9iamVjdCBmb3Ige29yaWdpbmFsX25hbWUhcn0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyBkdXJpbmcgYSBsYXp5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9hZCIpCiAgICAgICAgICMgVXBkYXRlIGFmdGVyIGxvYWRpbmcgc2luY2UgdGhhdCdzIHdoYXQgd291bGQgaGFwcGVuIGluIGFuIGVhZ2VyCiAgICAgICAgICMgbG9hZGluZyBzaXR1YXRpb24uCiAgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGF0dHJzX3VwZGF0ZWQpCkBAIC0yNzUsOCArMjcxLDcgQEAKICAgICAgICAgc2VsZi5sb2FkZXIgPSBsb2FkZXIKIAogICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgotICAgICAgICAiIiJDcmVhdGUgYSBtb2R1bGUgd2hpY2ggY2FuIGhhdmUgaXRzIF9fY2xhc3NfXyBtYW5pcHVsYXRlZC4iIiIKLSAgICAgICAgcmV0dXJuIF9Nb2R1bGUoc3BlYy5uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQogCiAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIk1ha2UgdGhlIG1vZHVsZSBsb2FkIGxhemlseS4iIiIKQEAgLTI4Niw1ICsyODEsOCBAQAogICAgICAgICAjIG9uIGFuIG9iamVjdCB3b3VsZCBoYXZlIHRyaWdnZXJlZCB0aGUgbG9hZCwKICAgICAgICAgIyBlLmcuIGBgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IE5vbmVgYCB3b3VsZCB0cmlnZ2VyIGEgbG9hZCBmcm9tCiAgICAgICAgICMgdHJ5aW5nIHRvIGFjY2VzcyBtb2R1bGUuX19zcGVjX18uCi0gICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBtb2R1bGUuX19kaWN0X18uY29weSgpCisgICAgICAgIGxvYWRlcl9zdGF0ZSA9IHt9CisgICAgICAgIGxvYWRlcl9zdGF0ZVsnX19kaWN0X18nXSA9IG1vZHVsZS5fX2RpY3RfXy5jb3B5KCkKKyAgICAgICAgbG9hZGVyX3N0YXRlWydfX2NsYXNzX18nXSA9IG1vZHVsZS5fX2NsYXNzX18KKyAgICAgICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlcl9zdGF0ZSA9IGxvYWRlcl9zdGF0ZQogICAgICAgICBtb2R1bGUuX19jbGFzc19fID0gX0xhenlNb2R1bGUKZGlmZiAtLWdpdCBhL0xpYi9pbnNwZWN0LnB5IGIvTGliL2luc3BlY3QucHkKaW5kZXggY2ExZDU1MS4uMjM4MDA5NSAxMDA2NDQKLS0tIGEvTGliL2luc3BlY3QucHkKKysrIGIvTGliL2luc3BlY3QucHkKQEAgLTE2LDcgKzE2LDcgQEAKICAgICBnZXRtb2R1bGUoKSAtIGRldGVybWluZSB0aGUgbW9kdWxlIHRoYXQgYW4gb2JqZWN0IGNhbWUgZnJvbQogICAgIGdldGNsYXNzdHJlZSgpIC0gYXJyYW5nZSBjbGFzc2VzIHNvIGFzIHRvIHJlcHJlc2VudCB0aGVpciBoaWVyYXJjaHkKIAotICAgIGdldGFyZ3NwZWMoKSwgZ2V0YXJndmFsdWVzKCksIGdldGNhbGxhcmdzKCkgLSBnZXQgaW5mbyBhYm91dCBmdW5jdGlvbiBhcmd1bWVudHMKKyAgICBnZXRhcmd2YWx1ZXMoKSwgZ2V0Y2FsbGFyZ3MoKSAtIGdldCBpbmZvIGFib3V0IGZ1bmN0aW9uIGFyZ3VtZW50cwogICAgIGdldGZ1bGxhcmdzcGVjKCkgLSBzYW1lLCB3aXRoIHN1cHBvcnQgZm9yIFB5dGhvbiAzIGZlYXR1cmVzCiAgICAgZm9ybWF0YXJnc3BlYygpLCBmb3JtYXRhcmd2YWx1ZXMoKSAtIGZvcm1hdCBhbiBhcmd1bWVudCBzcGVjCiAgICAgZ2V0b3V0ZXJmcmFtZXMoKSwgZ2V0aW5uZXJmcmFtZXMoKSAtIGdldCBpbmZvIGFib3V0IGZyYW1lcwpAQCAtMTg1LDYgKzE4NSwxMyBAQAogICAgIHJldHVybiBib29sKChpc2Z1bmN0aW9uKG9iamVjdCkgb3IgaXNtZXRob2Qob2JqZWN0KSkgYW5kCiAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgQ09fQ09ST1VUSU5FKQogCitkZWYgaXNhc3luY2dlbmZ1bmN0aW9uKG9iamVjdCk6CisgICAgcmV0dXJuIGJvb2woKGlzZnVuY3Rpb24ob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpKSBhbmQKKyAgICAgICAgICAgICAgICBvYmplY3QuX19jb2RlX18uY29fZmxhZ3MgJiBDT19BU1lOQ19HRU5FUkFUT1IpCisKK2RlZiBpc2FzeW5jZ2VuKG9iamVjdCk6CisgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5Bc3luY0dlbmVyYXRvclR5cGUpCisKIGRlZiBpc2dlbmVyYXRvcihvYmplY3QpOgogICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBnZW5lcmF0b3IuCiAKQEAgLTYyMywyMyArNjMwLDYgQEAKICAgICByYWlzZSBUeXBlRXJyb3IoJ3shcn0gaXMgbm90IGEgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCAnCiAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwgb3IgY29kZSBvYmplY3QnLmZvcm1hdChvYmplY3QpKQogCi1Nb2R1bGVJbmZvID0gbmFtZWR0dXBsZSgnTW9kdWxlSW5mbycsICduYW1lIHN1ZmZpeCBtb2RlIG1vZHVsZV90eXBlJykKLQotZGVmIGdldG1vZHVsZWluZm8ocGF0aCk6Ci0gICAgIiIiR2V0IHRoZSBtb2R1bGUgbmFtZSwgc3VmZml4LCBtb2RlLCBhbmQgbW9kdWxlIHR5cGUgZm9yIGEgZ2l2ZW4gZmlsZS4iIiIKLSAgICB3YXJuaW5ncy53YXJuKCdpbnNwZWN0LmdldG1vZHVsZWluZm8oKSBpcyBkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgMikKLSAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgaW1wb3J0IGltcAotICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCi0gICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIG10eXBlIGluIGltcC5nZXRfc3VmZml4ZXMoKV0KLSAgICBzdWZmaXhlcy5zb3J0KCkgIyB0cnkgbG9uZ2VzdCBzdWZmaXhlcyBmaXJzdCwgaW4gY2FzZSB0aGV5IG92ZXJsYXAKLSAgICBmb3IgbmVnbGVuLCBzdWZmaXgsIG1vZGUsIG10eXBlIGluIHN1ZmZpeGVzOgotICAgICAgICBpZiBmaWxlbmFtZVtuZWdsZW46XSA9PSBzdWZmaXg6Ci0gICAgICAgICAgICByZXR1cm4gTW9kdWxlSW5mbyhmaWxlbmFtZVs6bmVnbGVuXSwgc3VmZml4LCBtb2RlLCBtdHlwZSkKLQogZGVmIGdldG1vZHVsZW5hbWUocGF0aCk6CiAgICAgIiIiUmV0dXJuIHRoZSBtb2R1bGUgbmFtZSBmb3IgYSBnaXZlbiBmaWxlLCBvciBOb25lLiIiIgogICAgIGZuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQpAQCAtMTA2MCw4ICsxMDUwLDYgQEAKICAgICAna3dvbmx5ZGVmYXVsdHMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzIGZyb20ga3dvbmx5YXJncyB0byBkZWZhdWx0cy4KICAgICAnYW5ub3RhdGlvbnMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGFyZ3VtZW50IG5hbWVzIHRvIGFubm90YXRpb25zLgogCi0gICAgVGhlIGZpcnN0IGZvdXIgaXRlbXMgaW4gdGhlIHR1cGxlIGNvcnJlc3BvbmQgdG8gZ2V0YXJnc3BlYygpLgotCiAgICAgVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgaW5zcGVjdC5zaWduYXR1cmUoKSBpbnN0ZWFkLgogICAgICIiIgogCkBAIC0xMTcyLDggKzExNjAsNyBAQAogICAgICAgICAgICAgICAgICAgZm9ybWF0dmFsdWU9bGFtYmRhIHZhbHVlOiAnPScgKyByZXByKHZhbHVlKSwKICAgICAgICAgICAgICAgICAgIGZvcm1hdHJldHVybnM9bGFtYmRhIHRleHQ6ICcgLT4gJyArIHRleHQsCiAgICAgICAgICAgICAgICAgICBmb3JtYXRhbm5vdGF0aW9uPWZvcm1hdGFubm90YXRpb24pOgotICAgICIiIkZvcm1hdCBhbiBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieSBnZXRhcmdzcGVjCi0gICAgb3IgZ2V0ZnVsbGFyZ3NwZWMuCisgICAgIiIiRm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IGdldGZ1bGxhcmdzcGVjLgogCiAgICAgVGhlIGZpcnN0IHNldmVuIGFyZ3VtZW50cyBhcmUgKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywKICAgICBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnMpLiAgVGhlIG90aGVyIGZpdmUgYXJndW1lbnRzCkBAIC0yNDE1LDYgKzI0MDIsMjAgQEAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibmFtZSBtdXN0IGJlIGEgc3RyLCBub3QgYSB7IXJ9Ii5mb3JtYXQobmFtZSkpCiAKKyAgICAgICAgaWYgbmFtZVswXSA9PSAnLicgYW5kIG5hbWVbMTpdLmlzZGlnaXQoKToKKyAgICAgICAgICAgICMgVGhlc2UgYXJlIGltcGxpY2l0IGFyZ3VtZW50cyBnZW5lcmF0ZWQgYnkgY29tcHJlaGVuc2lvbnMuIEluCisgICAgICAgICAgICAjIG9yZGVyIHRvIHByb3ZpZGUgYSBmcmllbmRsaWVyIGludGVyZmFjZSB0byB1c2Vycywgd2UgcmVjYXN0CisgICAgICAgICAgICAjIHRoZWlyIG5hbWUgYXMgImltcGxpY2l0TiIgYW5kIHRyZWF0IHRoZW0gYXMgcG9zaXRpb25hbC1vbmx5LgorICAgICAgICAgICAgIyBTZWUgaXNzdWUgMTk2MTEuCisgICAgICAgICAgICBpZiBraW5kICE9IF9QT1NJVElPTkFMX09SX0tFWVdPUkQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ2ltcGxpY2l0IGFyZ3VtZW50cyBtdXN0IGJlIHBhc3NlZCBpbiBhcyB7fScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgX1BPU0lUSU9OQUxfT1JfS0VZV09SRAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fa2luZCA9IF9QT1NJVElPTkFMX09OTFkKKyAgICAgICAgICAgIG5hbWUgPSAnaW1wbGljaXR7fScuZm9ybWF0KG5hbWVbMTpdKQorCiAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScuZm9ybWF0KG5hbWUpKQogCmRpZmYgLS1naXQgYS9MaWIvaW8ucHkgYi9MaWIvaW8ucHkKaW5kZXggZTAzZGI5Ny4uOTY4ZWU1MCAxMDA2NDQKLS0tIGEvTGliL2lvLnB5CisrKyBiL0xpYi9pby5weQpAQCAtOTAsMyArOTAsMTAgQEAKIGZvciBrbGFzcyBpbiAoU3RyaW5nSU8sIFRleHRJT1dyYXBwZXIpOgogICAgIFRleHRJT0Jhc2UucmVnaXN0ZXIoa2xhc3MpCiBkZWwga2xhc3MKKwordHJ5OgorICAgIGZyb20gX2lvIGltcG9ydCBfV2luZG93c0NvbnNvbGVJTworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgUmF3SU9CYXNlLnJlZ2lzdGVyKF9XaW5kb3dzQ29uc29sZUlPKQpkaWZmIC0tZ2l0IGEvTGliL2lwYWRkcmVzcy5weSBiL0xpYi9pcGFkZHJlc3MucHkKaW5kZXggMWY5MDA1OC4uMjBmMzNjYiAxMDA2NDQKLS0tIGEvTGliL2lwYWRkcmVzcy5weQorKysgYi9MaWIvaXBhZGRyZXNzLnB5CkBAIC02MzYsMTIgKzYzNiwxMiBAQAogICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKICAgICAgICAgaWYgbiA+PSAwOgogICAgICAgICAgICAgaWYgbmV0d29yayArIG4gPiBicm9hZGNhc3Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoJ2FkZHJlc3Mgb3V0IG9mIHJhbmdlJykKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKG5ldHdvcmsgKyBuKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbiArPSAxCiAgICAgICAgICAgICBpZiBicm9hZGNhc3QgKyBuIDwgbmV0d29yazoKLSAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcignYWRkcmVzcyBvdXQgb2YgcmFuZ2UnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NfY2xhc3MoYnJvYWRjYXN0ICsgbikKIAogICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgpkaWZmIC0tZ2l0IGEvTGliL2pzb24vX19pbml0X18ucHkgYi9MaWIvanNvbi9fX2luaXRfXy5weQppbmRleCBmNzJiMDU4Li44ZGNjNjc4IDEwMDY0NAotLS0gYS9MaWIvanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvanNvbi9fX2luaXRfXy5weQpAQCAtMTA1LDYgKzEwNSw3IEBACiAKIGZyb20gLmRlY29kZXIgaW1wb3J0IEpTT05EZWNvZGVyLCBKU09ORGVjb2RlRXJyb3IKIGZyb20gLmVuY29kZXIgaW1wb3J0IEpTT05FbmNvZGVyCitpbXBvcnQgY29kZWNzCiAKIF9kZWZhdWx0X2VuY29kZXIgPSBKU09ORW5jb2RlcigKICAgICBza2lwa2V5cz1GYWxzZSwKQEAgLTExNiw3ICsxMTcsNyBAQAogICAgIGRlZmF1bHQ9Tm9uZSwKICkKIAotZGVmIGR1bXAob2JqLCBmcCwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAorZGVmIGR1bXAob2JqLCBmcCwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAogICAgICAgICBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsCiAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgc29ydF9rZXlzPUZhbHNlLCAqKmt3KToKICAgICAiIiJTZXJpYWxpemUgYGBvYmpgYCBhcyBhIEpTT04gZm9ybWF0dGVkIHN0cmVhbSB0byBgYGZwYGAgKGEKQEAgLTE3OSw3ICsxODAsNyBAQAogICAgICAgICBmcC53cml0ZShjaHVuaykKIAogCi1kZWYgZHVtcHMob2JqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCitkZWYgZHVtcHMob2JqLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCiAgICAgICAgIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwKICAgICAgICAgZGVmYXVsdD1Ob25lLCBzb3J0X2tleXM9RmFsc2UsICoqa3cpOgogICAgICIiIlNlcmlhbGl6ZSBgYG9iamBgIHRvIGEgSlNPTiBmb3JtYXR0ZWQgYGBzdHJgYC4KQEAgLTI0MCw3ICsyNDEsMzYgQEAKIF9kZWZhdWx0X2RlY29kZXIgPSBKU09ORGVjb2RlcihvYmplY3RfaG9vaz1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKQogCiAKLWRlZiBsb2FkKGZwLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKK2RlZiBkZXRlY3RfZW5jb2RpbmcoYik6CisgICAgYnN0YXJ0c3dpdGggPSBiLnN0YXJ0c3dpdGgKKyAgICBpZiBic3RhcnRzd2l0aCgoY29kZWNzLkJPTV9VVEYzMl9CRSwgY29kZWNzLkJPTV9VVEYzMl9MRSkpOgorICAgICAgICByZXR1cm4gJ3V0Zi0zMicKKyAgICBpZiBic3RhcnRzd2l0aCgoY29kZWNzLkJPTV9VVEYxNl9CRSwgY29kZWNzLkJPTV9VVEYxNl9MRSkpOgorICAgICAgICByZXR1cm4gJ3V0Zi0xNicKKyAgICBpZiBic3RhcnRzd2l0aChjb2RlY3MuQk9NX1VURjgpOgorICAgICAgICByZXR1cm4gJ3V0Zi04LXNpZycKKworICAgIGlmIGxlbihiKSA+PSA0OgorICAgICAgICBpZiBub3QgYlswXToKKyAgICAgICAgICAgICMgMDAgMDAgLS0gLS0gLSB1dGYtMzItYmUKKyAgICAgICAgICAgICMgMDAgWFggLS0gLS0gLSB1dGYtMTYtYmUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWJlJyBpZiBiWzFdIGVsc2UgJ3V0Zi0zMi1iZScKKyAgICAgICAgaWYgbm90IGJbMV06CisgICAgICAgICAgICAjIFhYIDAwIDAwIDAwIC0gdXRmLTMyLWxlCisgICAgICAgICAgICAjIFhYIDAwIFhYIFhYIC0gdXRmLTE2LWxlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1sZScgaWYgYlsyXSBvciBiWzNdIGVsc2UgJ3V0Zi0zMi1sZScKKyAgICBlbGlmIGxlbihiKSA9PSAyOgorICAgICAgICBpZiBub3QgYlswXToKKyAgICAgICAgICAgICMgMDAgWFggLSB1dGYtMTYtYmUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWJlJworICAgICAgICBpZiBub3QgYlsxXToKKyAgICAgICAgICAgICMgWFggMDAgLSB1dGYtMTYtbGUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWxlJworICAgICMgZGVmYXVsdAorICAgIHJldHVybiAndXRmLTgnCisKKworZGVmIGxvYWQoZnAsICosIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAogICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdyk6CiAgICAgIiIiRGVzZXJpYWxpemUgYGBmcGBgIChhIGBgLnJlYWQoKWBgLXN1cHBvcnRpbmcgZmlsZS1saWtlIG9iamVjdCBjb250YWluaW5nCiAgICAgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QuCkBAIC0yNjgsMTAgKzI5OCwxMCBAQAogICAgICAgICBwYXJzZV9jb25zdGFudD1wYXJzZV9jb25zdGFudCwgb2JqZWN0X3BhaXJzX2hvb2s9b2JqZWN0X3BhaXJzX2hvb2ssICoqa3cpCiAKIAotZGVmIGxvYWRzKHMsIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAorZGVmIGxvYWRzKHMsICosIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAogICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdyk6Ci0gICAgIiIiRGVzZXJpYWxpemUgYGBzYGAgKGEgYGBzdHJgYCBpbnN0YW5jZSBjb250YWluaW5nIGEgSlNPTgotICAgIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QuCisgICAgIiIiRGVzZXJpYWxpemUgYGBzYGAgKGEgYGBzdHJgYCwgYGBieXRlc2BgIG9yIGBgYnl0ZWFycmF5YGAgaW5zdGFuY2UKKyAgICBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0LgogCiAgICAgYGBvYmplY3RfaG9va2BgIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUKICAgICByZXN1bHQgb2YgYW55IG9iamVjdCBsaXRlcmFsIGRlY29kZSAoYSBgYGRpY3RgYCkuIFRoZSByZXR1cm4gdmFsdWUgb2YKQEAgLTMwNywxMiArMzM3LDE2IEBACiAgICAgVGhlIGBgZW5jb2RpbmdgYCBhcmd1bWVudCBpcyBpZ25vcmVkIGFuZCBkZXByZWNhdGVkLgogCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHIsIG5vdCB7IXJ9Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5fX2NsYXNzX18uX19uYW1lX18pKQotICAgIGlmIHMuc3RhcnRzd2l0aCh1J1x1ZmVmZicpOgotICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAwKQorICAgIGlmIGlzaW5zdGFuY2Uocywgc3RyKToKKyAgICAgICAgaWYgcy5zdGFydHN3aXRoKCdcdWZlZmYnKToKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW5leHBlY3RlZCBVVEYtOCBCT00gKGRlY29kZSB1c2luZyB1dGYtOC1zaWcpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAwKQorICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0ciwgYnl0ZXMgb3IgYnl0ZWFycmF5LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCB7IXJ9Jy5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQorICAgICAgICBzID0gcy5kZWNvZGUoZGV0ZWN0X2VuY29kaW5nKHMpLCAnc3Vycm9nYXRlcGFzcycpCisKICAgICBpZiAoY2xzIGlzIE5vbmUgYW5kIG9iamVjdF9ob29rIGlzIE5vbmUgYW5kCiAgICAgICAgICAgICBwYXJzZV9pbnQgaXMgTm9uZSBhbmQgcGFyc2VfZmxvYXQgaXMgTm9uZSBhbmQKICAgICAgICAgICAgIHBhcnNlX2NvbnN0YW50IGlzIE5vbmUgYW5kIG9iamVjdF9wYWlyc19ob29rIGlzIE5vbmUgYW5kIG5vdCBrdyk6CmRpZmYgLS1naXQgYS9MaWIvanNvbi9kZWNvZGVyLnB5IGIvTGliL2pzb24vZGVjb2Rlci5weQppbmRleCAwZjAzZjIwLi4yNDIyYzZhIDEwMDY0NAotLS0gYS9MaWIvanNvbi9kZWNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2RlY29kZXIucHkKQEAgLTI4MCw3ICsyODAsNyBAQAogCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICAgICAgIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwKICAgICAgICAgICAgIG9iamVjdF9wYWlyc19ob29rPU5vbmUpOgogICAgICAgICAiIiJgYG9iamVjdF9ob29rYGAsIGlmIHNwZWNpZmllZCwgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0CmRpZmYgLS1naXQgYS9MaWIvanNvbi9lbmNvZGVyLnB5IGIvTGliL2pzb24vZW5jb2Rlci5weQppbmRleCBkNTk2NDg5Li40MWE0OTdjIDEwMDY0NAotLS0gYS9MaWIvanNvbi9lbmNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2VuY29kZXIucHkKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgICIiIgogICAgIGl0ZW1fc2VwYXJhdG9yID0gJywgJwogICAgIGtleV9zZXBhcmF0b3IgPSAnOiAnCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLAogICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIHNvcnRfa2V5cz1GYWxzZSwKICAgICAgICAgICAgIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yIGZvciBKU09ORW5jb2Rlciwgd2l0aCBzZW5zaWJsZSBkZWZhdWx0cy4KQEAgLTE3Niw3ICsxNzYsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBKU09ORW5jb2Rlci5kZWZhdWx0KHNlbGYsIG8pCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcihyZXByKG8pICsgIiBpcyBub3QgSlNPTiBzZXJpYWxpemFibGUiKQorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIk9iamVjdCBvZiB0eXBlICclcycgaXMgbm90IEpTT04gc2VyaWFsaXphYmxlIiAlCisgICAgICAgICAgICAgICAgICAgICAgICBvLl9fY2xhc3NfXy5fX25hbWVfXykKIAogICAgIGRlZiBlbmNvZGUoc2VsZiwgbyk6CiAgICAgICAgICIiIlJldHVybiBhIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIGRhdGEgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQgYi9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dAppbmRleCA4OGY3ODg0Li4yZjAyZTZmIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dAorKysgYi9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dApAQCAtNTQsMTIgKzU0LDEzIEBACiBzaW1wbGVfc3RtdDogc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXSBORVdMSU5FCiBzbWFsbF9zdG10OiAoZXhwcl9zdG10IHwgcHJpbnRfc3RtdCAgfCBkZWxfc3RtdCB8IHBhc3Nfc3RtdCB8IGZsb3dfc3RtdCB8CiAgICAgICAgICAgICAgaW1wb3J0X3N0bXQgfCBnbG9iYWxfc3RtdCB8IGV4ZWNfc3RtdCB8IGFzc2VydF9zdG10KQotZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAorZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGFubmFzc2lnbiB8IGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAogICAgICAgICAgICAgICAgICAgICAgKCc9JyAoeWllbGRfZXhwcnx0ZXN0bGlzdF9zdGFyX2V4cHIpKSopCithbm5hc3NpZ246ICc6JyB0ZXN0IFsnPScgdGVzdF0KIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnICh0ZXN0fHN0YXJfZXhwcikpKiBbJywnXQogYXVnYXNzaWduOiAoJys9JyB8ICctPScgfCAnKj0nIHwgJ0A9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nIHwKICAgICAgICAgICAgICc8PD0nIHwgJz4+PScgfCAnKio9JyB8ICcvLz0nKQotIyBGb3Igbm9ybWFsIGFzc2lnbm1lbnRzLCBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSB0aGUgaW50ZXJwcmV0ZXIKKyMgRm9yIG5vcm1hbCBhbmQgYW5ub3RhdGVkIGFzc2lnbm1lbnRzLCBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSB0aGUgaW50ZXJwcmV0ZXIKIHByaW50X3N0bXQ6ICdwcmludCcgKCBbIHRlc3QgKCcsJyB0ZXN0KSogWycsJ10gXSB8CiAgICAgICAgICAgICAgICAgICAgICAgJz4+JyB0ZXN0IFsgKCcsJyB0ZXN0KSsgWycsJ10gXSApCiBkZWxfc3RtdDogJ2RlbCcgZXhwcmxpc3QKQEAgLTE2MCw3ICsxNjEsNyBAQAogCSAgICBzdGFyX2V4cHIgKQogCiBjb21wX2l0ZXI6IGNvbXBfZm9yIHwgY29tcF9pZgotY29tcF9mb3I6ICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3Rfc2FmZSBbY29tcF9pdGVyXQorY29tcF9mb3I6IFtBU1lOQ10gJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0bGlzdF9zYWZlIFtjb21wX2l0ZXJdCiBjb21wX2lmOiAnaWYnIG9sZF90ZXN0IFtjb21wX2l0ZXJdCiAKIHRlc3RsaXN0MTogdGVzdCAoJywnIHRlc3QpKgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weSBiL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkKaW5kZXggNDQ1MDJiZi4uYmFiZTZjYiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVXRpbGl0eSBmdW5jdGlvbnMsIG5vZGUgY29uc3RydWN0aW9uIG1hY3JvcywgZXRjLiIiIgogIyBBdXRob3I6IENvbGxpbiBXaW50ZXIKIAotZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZQotCiAjIExvY2FsIGltcG9ydHMKIGZyb20gLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAucHl0cmVlIGltcG9ydCBMZWFmLCBOb2RlCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5CmluZGV4IDk2M2Y5NTIuLmQzNjU1YzkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5CkBAIC0zMCw5ICszMCw4IEBACiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IHB5dHJlZQogZnJvbSAuLiBpbXBvcnQgcGF0Y29tcAotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIExQYXJlbiwgUlBhcmVuLCBBcmdMaXN0LCBEb3QKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBEb3QKIGZyb20gLi4gaW1wb3J0IGZpeGVyX3V0aWwKIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5CmluZGV4IDJjOWI3MmQuLmFiOTIxZWUgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5CkBAIC0xMCw3ICsxMCw2IEBACiAiIiIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIC4uIGltcG9ydCBweXRyZWUKIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBDb21tYSwgTmFtZSwgQ2FsbAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weQppbmRleCAzOTE4ODlmLi5iYjY3MThjIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkKQEAgLTE0LDcgKzE0LDYgQEAKICIiIgogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBMaXN0Q29tcCwgaW5fc3BlY2lhbF9jb250ZXh0CiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkKaW5kZXggMThjNTYwZi4uNDM5NzA4YyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkKQEAgLTMxLDcgKzMxLDYgQEAKIAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBweXRyZWUKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBwYXJlbnRoZXNpemUKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkKaW5kZXggNDZjN2FhZi4uOGUzNDQ2MyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5CkBAIC0yMCw3ICsyMCw3IEBACiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5weWdyYW0gaW1wb3J0IHRva2VuCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgc3ltcywgTm9kZSwgTGVhZgorZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IHN5bXMsIE5vZGUsIExlYWYKIAogCiBkZWYgaGFzX21ldGFjbGFzcyhwYXJlbnQpOgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weQppbmRleCBhZDkxYTI5Li5jMjI5NTk2IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weQpAQCAtMyw3ICszLDcgQEAKIAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgc3ltcworZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUKIAogY2xhc3MgRml4Tm9uemVybyhmaXhlcl9iYXNlLkJhc2VGaXgpOgogICAgIEJNX2NvbXBhdGlibGUgPSBUcnVlCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkKaW5kZXggYTFmZTJmNS4uODc4MDMyMiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weQpAQCAtMTgsNyArMTgsNyBAQAogZnJvbSAuLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgQ29tbWEsIFN0cmluZywgaXNfdHVwbGUKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBDb21tYSwgU3RyaW5nCiAKIAogcGFyZW5kX2V4cHIgPSBwYXRjb21wLmNvbXBpbGVfcGF0dGVybigKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weQppbmRleCBkYjM0MTA0Li42N2JmNTFmIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5CkBAIC0yMCw3ICsyMCw2IEBACiAiIiIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZQogCkBAIC00Miw3ICs0MSw3IEBACiAgICAgICAgICdOb3RJbXBsZW1lbnRlZFR5cGUnIDogJ3R5cGUoTm90SW1wbGVtZW50ZWQpJywKICAgICAgICAgJ1NsaWNlVHlwZScgOiAnc2xpY2UnLAogICAgICAgICAnU3RyaW5nVHlwZSc6ICdieXRlcycsICMgWFhYID8KLSAgICAgICAgJ1N0cmluZ1R5cGVzJyA6ICdzdHInLCAjIFhYWCA/CisgICAgICAgICdTdHJpbmdUeXBlcycgOiAnKHN0ciwpJywgIyBYWFggPwogICAgICAgICAnVHVwbGVUeXBlJzogJ3R1cGxlJywKICAgICAgICAgJ1R5cGVUeXBlJyA6ICd0eXBlJywKICAgICAgICAgJ1VuaWNvZGVUeXBlJzogJ3N0cicsCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weQppbmRleCAxNDgxY2Q5Li41YTM2MDQ5IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkKQEAgLTYsNyArNiw2IEBACiAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSBsaWIydG8zLmZpeGVzLmZpeF9pbXBvcnRzIGltcG9ydCBhbHRlcm5hdGVzLCBGaXhJbXBvcnRzCi1mcm9tIGxpYjJ0bzMgaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gbGliMnRvMy5maXhlcl91dGlsIGltcG9ydCAoTmFtZSwgQ29tbWEsIEZyb21JbXBvcnQsIE5ld2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfaW5kZW50YXRpb24sIE5vZGUsIHN5bXMpCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5IGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKaW5kZXggMDcyODA4My4uYzVhMWFhMiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKKysrIGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKQEAgLTgsOCArOCw2IEBACiBwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSB0byB3cml0ZSB5b3VyIG93biByZWZhY3RvcmluZyB0b29sLgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogX19hdXRob3JfXyA9ICJHdWlkbyB2YW4gUm9zc3VtIDxndWlkb0BweXRob24ub3JnPiIKIAogCkBAIC0yNiw3ICsyNCw2IEBACiBmcm9tIC5wZ2VuMiBpbXBvcnQgZHJpdmVyLCB0b2tlbml6ZSwgdG9rZW4KIGZyb20gLmZpeGVyX3V0aWwgaW1wb3J0IGZpbmRfcm9vdAogZnJvbSAuIGltcG9ydCBweXRyZWUsIHB5Z3JhbQotZnJvbSAuIGltcG9ydCBidG1fdXRpbHMgYXMgYnUKIGZyb20gLiBpbXBvcnQgYnRtX21hdGNoZXIgYXMgYm0KIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkgYi9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkKaW5kZXggYzBiZjdmMi4uY2YzMWE1NCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weQpAQCAtMzE5LDcgKzMxOSw3IEBACiAgICAgICAgIGRlZiBmKHgpIC0+IGxpc3Q6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZi5fX2Fubm90YXRpb25zX18sIHsncmV0dXJuJzogbGlzdH0pCiAKLSAgICAgICAgIyB0ZXN0IE1BS0VfQ0xPU1VSRSB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZydzCisgICAgICAgICMgdGVzdCBjbG9zdXJlcyB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZydzCiAgICAgICAgIGNsb3N1cmUgPSAxCiAgICAgICAgIGRlZiBmKCk6IHJldHVybiBjbG9zdXJlCiAgICAgICAgIGRlZiBmKHg9MSk6IHJldHVybiBjbG9zdXJlCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weQppbmRleCAwODk3MTc3Li5hZTdjZmU4IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkKQEAgLTMsMTAgKzMsOCBAQAogCiAjIFB5dGhvbiBpbXBvcnRzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKLWltcG9ydCByZQogZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CiAKICMgTG9jYWwgaW1wb3J0cwpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5CmluZGV4IDE1MDc5ZmUuLmMwNTA3Y2YgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkKQEAgLTEwLDcgKzEwLDYgQEAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIGxpYjJ0bzMgaW1wb3J0IHJlZmFjdG9yCiBmcm9tIC4gaW1wb3J0IHN1cHBvcnQKIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5CmluZGV4IDY0MGRjZWYuLmIzZjI2ODAgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5CkBAIC0yLDEyICsyLDExIEBACiAKICMgUHl0aG9uIGltcG9ydHMKIGltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4KIGZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIGxpYjJ0bzMgaW1wb3J0IHB5Z3JhbSwgcHl0cmVlLCByZWZhY3RvciwgZml4ZXJfdXRpbAorZnJvbSBsaWIydG8zIGltcG9ydCBweWdyYW0sIGZpeGVyX3V0aWwKIGZyb20gbGliMnRvMy50ZXN0cyBpbXBvcnQgc3VwcG9ydAogCiAKQEAgLTMyMzQsNiArMzIzMywxMCBAQAogICAgICAgICBhID0gIiIidHlwZShOb25lKSIiIgogICAgICAgICBzZWxmLmNoZWNrKGIsIGEpCiAKKyAgICAgICAgYiA9ICJ0eXBlcy5TdHJpbmdUeXBlcyIKKyAgICAgICAgYSA9ICIoc3RyLCkiCisgICAgICAgIHNlbGYuY2hlY2soYiwgYSkKKwogY2xhc3MgVGVzdF9pZGlvbXMoRml4ZXJUZXN0Q2FzZSk6CiAgICAgZml4ZXIgPSAiaWRpb21zIgogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CmluZGV4IGU0YTAxOTQuLjlhOTY5ZTggMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CkBAIC04LDcgKzgsNyBAQAogCiAjIFRlc3RpbmcgaW1wb3J0cwogZnJvbSAuIGltcG9ydCBzdXBwb3J0Ci1mcm9tIC5zdXBwb3J0IGltcG9ydCBkcml2ZXIsIHRlc3RfZGlyCitmcm9tIC5zdXBwb3J0IGltcG9ydCBkcml2ZXIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlCiAKICMgUHl0aG9uIGltcG9ydHMKQEAgLTEzNCw2ICsxMzQsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAiIiIpCiAKICAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGJdCisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aSBmb3IgaSBpbiBiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIGEgaWYgYXdhaXQgaQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGl9CisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBiIGlmIGF3YWl0IGNdCisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIGkgZm9yIGkgaW4gYiBpZiBjXQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKIAogICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCiAKQEAgLTI3Miw2ICsyOTAsMzYgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZShzKQogCiAKKyMgQWRhcHRlZCBmcm9tIFB5dGhvbiAzJ3MgTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5OkdyYW1tYXJUZXN0cy50ZXN0X3Zhcl9hbm5vdAorY2xhc3MgVGVzdFZhckFubm90YXRpb25zKEdyYW1tYXJUZXN0KToKKyAgICBkZWYgdGVzdF8xKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJ2YXIxOiBpbnQgPSA1IikKKworICAgIGRlZiB0ZXN0XzIoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoInZhcjI6IFtpbnQsIHN0cl0iKQorCisgICAgZGVmIHRlc3RfMyhzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHN0OiBzdHIgPSAnSGVsbG8nXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBhLmI6IGludCA9ICgxLCAyKVxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHN0XG4iKQorCisgICAgZGVmIHRlc3RfNChzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiZGVmIGZiYWQoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgcHJpbnQoeClcbiIpCisKKyAgICBkZWYgdGVzdF81KHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBzOiBzdHIgPSAnYXR0cidcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHogPSAyXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgc2VsZi54OiBpbnQgPSB4XG4iKQorCisgICAgZGVmIHRlc3RfNihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgibHN0OiBMaXN0W2ludF0gPSBbXSIpCisKIGNsYXNzIFRlc3RFeGNlcHQoR3JhbW1hclRlc3QpOgogICAgIGRlZiB0ZXN0X25ldyhzZWxmKToKICAgICAgICAgcyA9ICIiIgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQppbmRleCA0ZDU4NWE4Li4xNzcxMjZkIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQpAQCAtOSwxMSArOSw2IEBACiBlc3BlY2lhbGx5IHdoZW4gZGVidWdnaW5nIGEgdGVzdC4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncwotCiAjIFRlc3RpbmcgaW1wb3J0cwogZnJvbSAuIGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5CmluZGV4IDg1NjMwMDEuLmU5YmFlNWUgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weQpAQCAtMiwyNCArMiwxOCBAQAogVW5pdCB0ZXN0cyBmb3IgcmVmYWN0b3IucHkuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBjb2RlY3MKLWltcG9ydCBvcGVyYXRvcgogaW1wb3J0IGlvCiBpbXBvcnQgcmUKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKIAogZnJvbSBsaWIydG8zIGltcG9ydCByZWZhY3RvciwgcHlncmFtLCBmaXhlcl9iYXNlCiBmcm9tIGxpYjJ0bzMucGdlbjIgaW1wb3J0IHRva2VuCiAKLWZyb20gLiBpbXBvcnQgc3VwcG9ydAotCiAKIFRFU1RfREFUQV9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImRhdGEiKQogRklYRVJfRElSID0gb3MucGF0aC5qb2luKFRFU1RfREFUQV9ESVIsICJmaXhlcnMiKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5CmluZGV4IGQyYmU4MmMuLmM2YzYxMzkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkKQEAgLTMsOSArMyw2IEBACiAjIFRlc3RpbmcgaW1wb3J0cwogZnJvbSAuIGltcG9ydCBzdXBwb3J0CiAKLSMgUHl0aG9uIGltcG9ydHMKLWltcG9ydCBvcy5wYXRoCi0KICMgTG9jYWwgaW1wb3J0cwogZnJvbSBsaWIydG8zLnB5dHJlZSBpbXBvcnQgTm9kZSwgTGVhZgogZnJvbSBsaWIydG8zIGltcG9ydCBmaXhlcl91dGlsCmRpZmYgLS1naXQgYS9MaWIvbG9jYWxlLnB5IGIvTGliL2xvY2FsZS5weQppbmRleCA2ZDU5Y2Q4Li40ZGUwMDkwIDEwMDY0NAotLS0gYS9MaWIvbG9jYWxlLnB5CisrKyBiL0xpYi9sb2NhbGUucHkKQEAgLTMwMiwxMiArMzAyLDE2IEBACiAKIGRlZiBkZWxvY2FsaXplKHN0cmluZyk6CiAgICAgIlBhcnNlcyBhIHN0cmluZyBhcyBhIG5vcm1hbGl6ZWQgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKKworICAgIGNvbnYgPSBsb2NhbGVjb252KCkKKwogICAgICNGaXJzdCwgZ2V0IHJpZCBvZiB0aGUgZ3JvdXBpbmcKLSAgICB0cyA9IGxvY2FsZWNvbnYoKVsndGhvdXNhbmRzX3NlcCddCisgICAgdHMgPSBjb252Wyd0aG91c2FuZHNfc2VwJ10KICAgICBpZiB0czoKICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UodHMsICcnKQorCiAgICAgI25leHQsIHJlcGxhY2UgdGhlIGRlY2ltYWwgcG9pbnQgd2l0aCBhIGRvdAotICAgIGRkID0gbG9jYWxlY29udigpWydkZWNpbWFsX3BvaW50J10KKyAgICBkZCA9IGNvbnZbJ2RlY2ltYWxfcG9pbnQnXQogICAgIGlmIGRkOgogICAgICAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShkZCwgJy4nKQogICAgIHJldHVybiBzdHJpbmcKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5IGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKaW5kZXggMjI3NDRlMS4uMjU5MGQ2NSAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKKysrIGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKQEAgLTMzLDggKzMzLDkgQEAKICAgICAgICAgICAgJ1N0cmVhbUhhbmRsZXInLCAnV0FSTicsICdXQVJOSU5HJywgJ2FkZExldmVsTmFtZScsICdiYXNpY0NvbmZpZycsCiAgICAgICAgICAgICdjYXB0dXJlV2FybmluZ3MnLCAnY3JpdGljYWwnLCAnZGVidWcnLCAnZGlzYWJsZScsICdlcnJvcicsCiAgICAgICAgICAgICdleGNlcHRpb24nLCAnZmF0YWwnLCAnZ2V0TGV2ZWxOYW1lJywgJ2dldExvZ2dlcicsICdnZXRMb2dnZXJDbGFzcycsCi0gICAgICAgICAgICdpbmZvJywgJ2xvZycsICdtYWtlTG9nUmVjb3JkJywgJ3NldExvZ2dlckNsYXNzJywgJ3dhcm4nLCAnd2FybmluZycsCi0gICAgICAgICAgICdnZXRMb2dSZWNvcmRGYWN0b3J5JywgJ3NldExvZ1JlY29yZEZhY3RvcnknLCAnbGFzdFJlc29ydCddCisgICAgICAgICAgICdpbmZvJywgJ2xvZycsICdtYWtlTG9nUmVjb3JkJywgJ3NldExvZ2dlckNsYXNzJywgJ3NodXRkb3duJywKKyAgICAgICAgICAgJ3dhcm4nLCAnd2FybmluZycsICdnZXRMb2dSZWNvcmRGYWN0b3J5JywgJ3NldExvZ1JlY29yZEZhY3RvcnknLAorICAgICAgICAgICAnbGFzdFJlc29ydCcsICdyYWlzZUV4Y2VwdGlvbnMnXQogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtMTA3LDYgKzEwOCw3IEBACiB9CiBfbmFtZVRvTGV2ZWwgPSB7CiAgICAgJ0NSSVRJQ0FMJzogQ1JJVElDQUwsCisgICAgJ0ZBVEFMJzogRkFUQUwsCiAgICAgJ0VSUk9SJzogRVJST1IsCiAgICAgJ1dBUk4nOiBXQVJOSU5HLAogICAgICdXQVJOSU5HJzogV0FSTklORywKQEAgLTkzNSw2ICs5MzcsMTAgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZGVsIHQsIHYsIHRiCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYubGV2ZWwpCisgICAgICAgIHJldHVybiAnPCVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbGV2ZWwpCisKIGNsYXNzIFN0cmVhbUhhbmRsZXIoSGFuZGxlcik6CiAgICAgIiIiCiAgICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHdyaXRlcyBsb2dnaW5nIHJlY29yZHMsIGFwcHJvcHJpYXRlbHkgZm9ybWF0dGVkLApAQCAtOTg2LDYgKzk5MiwxNCBAQAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYubGV2ZWwpCisgICAgICAgIG5hbWUgPSBnZXRhdHRyKHNlbGYuc3RyZWFtLCAnbmFtZScsICcnKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgbmFtZSArPSAnICcKKyAgICAgICAgcmV0dXJuICc8JXMgJXMoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUsIGxldmVsKQorCisKIGNsYXNzIEZpbGVIYW5kbGVyKFN0cmVhbUhhbmRsZXIpOgogICAgICIiIgogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgZm9ybWF0dGVkIGxvZ2dpbmcgcmVjb3JkcyB0byBkaXNrIGZpbGVzLgpAQCAtOTk0LDYgKzEwMDgsOCBAQAogICAgICAgICAiIiIKICAgICAgICAgT3BlbiB0aGUgc3BlY2lmaWVkIGZpbGUgYW5kIHVzZSBpdCBhcyB0aGUgc3RyZWFtIGZvciBsb2dnaW5nLgogICAgICAgICAiIiIKKyAgICAgICAgIyBJc3N1ZSAjMjc0OTM6IGFkZCBzdXBwb3J0IGZvciBQYXRoIG9iamVjdHMgdG8gYmUgcGFzc2VkIGluCisgICAgICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgICAgICAja2VlcCB0aGUgYWJzb2x1dGUgcGF0aCwgb3RoZXJ3aXNlIGRlcml2ZWQgY2xhc3NlcyB3aGljaCB1c2UgdGhpcwogICAgICAgICAjbWF5IGNvbWUgYSBjcm9wcGVyIHdoZW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGNoYW5nZXMKICAgICAgICAgc2VsZi5iYXNlRmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpCkBAIC0xMDQ4LDYgKzEwNjQsMTEgQEAKICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAgICAgICAgIFN0cmVhbUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYubGV2ZWwpCisgICAgICAgIHJldHVybiAnPCVzICVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5iYXNlRmlsZW5hbWUsIGxldmVsKQorCisKIGNsYXNzIF9TdGRlcnJIYW5kbGVyKFN0cmVhbUhhbmRsZXIpOgogICAgICIiIgogICAgIFRoaXMgY2xhc3MgaXMgbGlrZSBhIFN0cmVhbUhhbmRsZXIgdXNpbmcgc3lzLnN0ZGVyciwgYnV0IGFsd2F5cyB1c2VzCkBAIC0xNTQwLDYgKzE1NjEsMTEgQEAKICAgICAgICAgICAgIHN1ZmZpeCA9ICcuJy5qb2luKChzZWxmLm5hbWUsIHN1ZmZpeCkpCiAgICAgICAgIHJldHVybiBzZWxmLm1hbmFnZXIuZ2V0TG9nZ2VyKHN1ZmZpeCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5nZXRFZmZlY3RpdmVMZXZlbCgpKQorICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSwgbGV2ZWwpCisKKwogY2xhc3MgUm9vdExvZ2dlcihMb2dnZXIpOgogICAgICIiIgogICAgIEEgcm9vdCBsb2dnZXIgaXMgbm90IHRoYXQgZGlmZmVyZW50IHRvIGFueSBvdGhlciBsb2dnZXIsIGV4Y2VwdCB0aGF0CkBAIC0xNjY2LDYgKzE2OTIsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLmxvZ2dlci5oYXNIYW5kbGVycygpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxvZ2dlciA9IHNlbGYubG9nZ2VyCisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKGxvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpKQorICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGxvZ2dlci5uYW1lLCBsZXZlbCkKKwogcm9vdCA9IFJvb3RMb2dnZXIoV0FSTklORykKIExvZ2dlci5yb290ID0gcm9vdAogTG9nZ2VyLm1hbmFnZXIgPSBNYW5hZ2VyKExvZ2dlci5yb290KQpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkgYi9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQppbmRleCBjMzlhNTZmLi43ZDc3OTczIDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQorKysgYi9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQpAQCAtMjQ2LDYgKzI0Niw5IEBACiAKICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHJlLmNvbXBpbGUoc2VsZi5leHRNYXRjaCwgcmUuQVNDSUkpCiAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSBzZWxmLmludGVydmFsICogaW50ZXJ2YWwgIyBtdWx0aXBseSBieSB1bml0cyByZXF1ZXN0ZWQKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIGxpbmUgYWRkZWQgYmVjYXVzZSB0aGUgZmlsZW5hbWUgcGFzc2VkIGluIGNvdWxkIGJlIGEKKyAgICAgICAgIyBwYXRoIG9iamVjdCAoc2VlIElzc3VlICMyNzQ5MyksIGJ1dCBzZWxmLmJhc2VGaWxlbmFtZSB3aWxsIGJlIGEgc3RyaW5nCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5iYXNlRmlsZW5hbWUKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgdCA9IG9zLnN0YXQoZmlsZW5hbWUpW1NUX01USU1FXQogICAgICAgICBlbHNlOgpAQCAtNDQwLDExICs0NDMsMTEgQEAKICAgICAgICAgICAgIHNyZXMgPSBvcy5mc3RhdChzZWxmLnN0cmVhbS5maWxlbm8oKSkKICAgICAgICAgICAgIHNlbGYuZGV2LCBzZWxmLmlubyA9IHNyZXNbU1RfREVWXSwgc3Jlc1tTVF9JTk9dCiAKLSAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgorICAgIGRlZiByZW9wZW5JZk5lZWRlZChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEVtaXQgYSByZWNvcmQuCisgICAgICAgIFJlb3BlbiBsb2cgZmlsZSBpZiBuZWVkZWQuCiAKLSAgICAgICAgRmlyc3QgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgYW5kIGlmIGl0CisgICAgICAgIENoZWNrcyBpZiB0aGUgdW5kZXJseWluZyBmaWxlIGhhcyBjaGFuZ2VkLCBhbmQgaWYgaXQKICAgICAgICAgaGFzLCBjbG9zZSB0aGUgb2xkIHN0cmVhbSBhbmQgcmVvcGVuIHRoZSBmaWxlIHRvIGdldCB0aGUKICAgICAgICAgY3VycmVudCBzdHJlYW0uCiAgICAgICAgICIiIgpAQCAtNDY3LDYgKzQ3MCwxNSBAQAogICAgICAgICAgICAgICAgICMgb3BlbiBhIG5ldyBmaWxlIGhhbmRsZSBhbmQgZ2V0IG5ldyBzdGF0IGluZm8gZnJvbSB0aGF0IGZkCiAgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0gPSBzZWxmLl9vcGVuKCkKICAgICAgICAgICAgICAgICBzZWxmLl9zdGF0c3RyZWFtKCkKKworICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CisgICAgICAgICIiIgorICAgICAgICBFbWl0IGEgcmVjb3JkLgorCisgICAgICAgIElmIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgcmVvcGVuIHRoZSBmaWxlIGJlZm9yZSBlbWl0dGluZyB0aGUKKyAgICAgICAgcmVjb3JkIHRvIGl0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZW9wZW5JZk5lZWRlZCgpCiAgICAgICAgIGxvZ2dpbmcuRmlsZUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQpCiAKIApAQCAtMTIyOSwxNyArMTI0MSwyNSBAQAogICAgIGZsdXNoaW5nIHRoZW0gdG8gYSB0YXJnZXQgaGFuZGxlci4gRmx1c2hpbmcgb2NjdXJzIHdoZW5ldmVyIHRoZSBidWZmZXIKICAgICBpcyBmdWxsLCBvciB3aGVuIGFuIGV2ZW50IG9mIGEgY2VydGFpbiBzZXZlcml0eSBvciBncmVhdGVyIGlzIHNlZW4uCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhcGFjaXR5LCBmbHVzaExldmVsPWxvZ2dpbmcuRVJST1IsIHRhcmdldD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2FwYWNpdHksIGZsdXNoTGV2ZWw9bG9nZ2luZy5FUlJPUiwgdGFyZ2V0PU5vbmUsCisgICAgICAgICAgICAgICAgIGZsdXNoT25DbG9zZT1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAgIEluaXRpYWxpemUgdGhlIGhhbmRsZXIgd2l0aCB0aGUgYnVmZmVyIHNpemUsIHRoZSBsZXZlbCBhdCB3aGljaAogICAgICAgICBmbHVzaGluZyBzaG91bGQgb2NjdXIgYW5kIGFuIG9wdGlvbmFsIHRhcmdldC4KIAogICAgICAgICBOb3RlIHRoYXQgd2l0aG91dCBhIHRhcmdldCBiZWluZyBzZXQgZWl0aGVyIGhlcmUgb3IgdmlhIHNldFRhcmdldCgpLAogICAgICAgICBhIE1lbW9yeUhhbmRsZXIgaXMgbm8gdXNlIHRvIGFueW9uZSEKKworICAgICAgICBUaGUgYGBmbHVzaE9uQ2xvc2VgYCBhcmd1bWVudCBpcyBgYFRydWVgYCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorICAgICAgICByZWFzb25zIC0gdGhlIG9sZCBiZWhhdmlvdXIgaXMgdGhhdCB3aGVuIHRoZSBoYW5kbGVyIGlzIGNsb3NlZCwgdGhlCisgICAgICAgIGJ1ZmZlciBpcyBmbHVzaGVkLCBldmVuIGlmIHRoZSBmbHVzaCBsZXZlbCBoYXNuJ3QgYmVlbiBleGNlZWRlZCBub3IgdGhlCisgICAgICAgIGNhcGFjaXR5IGV4Y2VlZGVkLiBUbyBwcmV2ZW50IHRoaXMsIHNldCBgYGZsdXNoT25DbG9zZWBgIHRvIGBgRmFsc2VgYC4KICAgICAgICAgIiIiCiAgICAgICAgIEJ1ZmZlcmluZ0hhbmRsZXIuX19pbml0X18oc2VsZiwgY2FwYWNpdHkpCiAgICAgICAgIHNlbGYuZmx1c2hMZXZlbCA9IGZsdXNoTGV2ZWwKICAgICAgICAgc2VsZi50YXJnZXQgPSB0YXJnZXQKKyAgICAgICAgIyBTZWUgSXNzdWUgIzI2NTU5IGZvciB3aHkgdGhpcyBoYXMgYmVlbiBhZGRlZAorICAgICAgICBzZWxmLmZsdXNoT25DbG9zZSA9IGZsdXNoT25DbG9zZQogCiAgICAgZGVmIHNob3VsZEZsdXNoKHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtMTI3MywxMCArMTI5MywxMiBAQAogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgRmx1c2gsIHNldCB0aGUgdGFyZ2V0IHRvIE5vbmUgYW5kIGxvc2UgdGhlIGJ1ZmZlci4KKyAgICAgICAgRmx1c2gsIGlmIGFwcHJvcHJpYXRlbHkgY29uZmlndXJlZCwgc2V0IHRoZSB0YXJnZXQgdG8gTm9uZSBhbmQgbG9zZSB0aGUKKyAgICAgICAgYnVmZmVyLgogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5mbHVzaCgpCisgICAgICAgICAgICBpZiBzZWxmLmZsdXNoT25DbG9zZToKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuYWNxdWlyZSgpCiAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IDAyNzBlMjUuLjBlMjM5ODcgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0yMyw5ICsyMywxMCBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZjbnRsID0gTm9uZQogCi1fX2FsbF9fID0gWyAnTWFpbGJveCcsICdNYWlsZGlyJywgJ21ib3gnLCAnTUgnLCAnQmFieWwnLCAnTU1ERicsCi0gICAgICAgICAgICAnTWVzc2FnZScsICdNYWlsZGlyTWVzc2FnZScsICdtYm94TWVzc2FnZScsICdNSE1lc3NhZ2UnLAotICAgICAgICAgICAgJ0JhYnlsTWVzc2FnZScsICdNTURGTWVzc2FnZSddCitfX2FsbF9fID0gWydNYWlsYm94JywgJ01haWxkaXInLCAnbWJveCcsICdNSCcsICdCYWJ5bCcsICdNTURGJywKKyAgICAgICAgICAgJ01lc3NhZ2UnLCAnTWFpbGRpck1lc3NhZ2UnLCAnbWJveE1lc3NhZ2UnLCAnTUhNZXNzYWdlJywKKyAgICAgICAgICAgJ0JhYnlsTWVzc2FnZScsICdNTURGTWVzc2FnZScsICdFcnJvcicsICdOb1N1Y2hNYWlsYm94RXJyb3InLAorICAgICAgICAgICAnTm90RW1wdHlFcnJvcicsICdFeHRlcm5hbENsYXNoRXJyb3InLCAnRm9ybWF0RXJyb3InXQogCiBsaW5lc2VwID0gb3MubGluZXNlcC5lbmNvZGUoJ2FzY2lpJykKIApkaWZmIC0tZ2l0IGEvTGliL21pbWV0eXBlcy5weSBiL0xpYi9taW1ldHlwZXMucHkKaW5kZXggMGJlNzZhZC4uOWE4ODY4MCAxMDA2NDQKLS0tIGEvTGliL21pbWV0eXBlcy5weQorKysgYi9MaWIvbWltZXR5cGVzLnB5CkBAIC0zMyw4ICszMywxMCBAQAogICAgIF93aW5yZWcgPSBOb25lCiAKIF9fYWxsX18gPSBbCi0gICAgImd1ZXNzX3R5cGUiLCJndWVzc19leHRlbnNpb24iLCJndWVzc19hbGxfZXh0ZW5zaW9ucyIsCi0gICAgImFkZF90eXBlIiwicmVhZF9taW1lX3R5cGVzIiwiaW5pdCIKKyAgICAia25vd25maWxlcyIsICJpbml0ZWQiLCAiTWltZVR5cGVzIiwKKyAgICAiZ3Vlc3NfdHlwZSIsICJndWVzc19hbGxfZXh0ZW5zaW9ucyIsICJndWVzc19leHRlbnNpb24iLAorICAgICJhZGRfdHlwZSIsICJpbml0IiwgInJlYWRfbWltZV90eXBlcyIsCisgICAgInN1ZmZpeF9tYXAiLCAiZW5jb2RpbmdzX21hcCIsICJ0eXBlc19tYXAiLCAiY29tbW9uX3R5cGVzIgogXQogCiBrbm93bmZpbGVzID0gWwpkaWZmIC0tZ2l0IGEvTGliL21vZHVsZWZpbmRlci5weSBiL0xpYi9tb2R1bGVmaW5kZXIucHkKaW5kZXggODEwMzUwMi4uZTIyMDMxNSAxMDA2NDQKLS0tIGEvTGliL21vZHVsZWZpbmRlci5weQorKysgYi9MaWIvbW9kdWxlZmluZGVyLnB5CkBAIC0xMCw3ICsxMCw3IEBACiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgd2FybmluZ3MKIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgaW1wb3J0IGltcAogCiBMT0FEX0NPTlNUID0gZGlzLm9wbWFwWydMT0FEX0NPTlNUJ10KQEAgLTMzNiw4ICszMzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUgPSBuYW1lICsgIi4iICsgc3ViCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfYmFkbW9kdWxlKGZ1bGxuYW1lLCBjYWxsZXIpCiAKLSAgICBkZWYgc2Nhbl9vcGNvZGVzXzI1KHNlbGYsIGNvLAotICAgICAgICAgICAgICAgICAgICAgdW5wYWNrID0gc3RydWN0LnVucGFjayk6CisgICAgZGVmIHNjYW5fb3Bjb2RlcyhzZWxmLCBjbyk6CiAgICAgICAgICMgU2NhbiB0aGUgY29kZSwgYW5kIHlpZWxkICdpbnRlcmVzdGluZycgb3Bjb2RlIGNvbWJpbmF0aW9ucwogICAgICAgICBjb2RlID0gY28uY29fY29kZQogICAgICAgICBuYW1lcyA9IGNvLmNvX25hbWVzCkBAIC0zNjAsNyArMzU5LDcgQEAKIAogICAgIGRlZiBzY2FuX2NvZGUoc2VsZiwgY28sIG0pOgogICAgICAgICBjb2RlID0gY28uY29fY29kZQotICAgICAgICBzY2FubmVyID0gc2VsZi5zY2FuX29wY29kZXNfMjUKKyAgICAgICAgc2Nhbm5lciA9IHNlbGYuc2Nhbl9vcGNvZGVzCiAgICAgICAgIGZvciB3aGF0LCBhcmdzIGluIHNjYW5uZXIoY28pOgogICAgICAgICAgICAgaWYgd2hhdCA9PSAic3RvcmUiOgogICAgICAgICAgICAgICAgIG5hbWUsID0gYXJncwpkaWZmIC0tZ2l0IGEvTGliL21zaWxpYi9fX2luaXRfXy5weSBiL0xpYi9tc2lsaWIvX19pbml0X18ucHkKaW5kZXggNmQwYTI4Zi4uZjAzNzBjMiAxMDA2NDQKLS0tIGEvTGliL21zaWxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvbXNpbGliL19faW5pdF9fLnB5CkBAIC0xLDcgKzEsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDUgTWFydGluIHYuIEzDtndpcwogIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiBmcm9tIF9tc2kgaW1wb3J0ICoKLWltcG9ydCBnbG9iCitpbXBvcnQgZm5tYXRjaAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzdHJpbmcKQEAgLTI4OSw3ICsyODksNyBAQAogICAgIGRlZiBtYWtlX3Nob3J0KHNlbGYsIGZpbGUpOgogICAgICAgICBvbGRmaWxlID0gZmlsZQogICAgICAgICBmaWxlID0gZmlsZS5yZXBsYWNlKCcrJywgJ18nKQotICAgICAgICBmaWxlID0gJycuam9pbihjIGZvciBjIGluIGZpbGUgaWYgbm90IGMgaW4gJyAiL1xbXTo7PSwnKQorICAgICAgICBmaWxlID0gJycuam9pbihjIGZvciBjIGluIGZpbGUgaWYgbm90IGMgaW4gcicgIi9cW106Oz0sJykKICAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIikKICAgICAgICAgaWYgbGVuKHBhcnRzKSA+IDE6CiAgICAgICAgICAgICBwcmVmaXggPSAiIi5qb2luKHBhcnRzWzotMV0pLnVwcGVyKCkKQEAgLTM3OSw3ICszNzksMTMgQEAKICAgICBkZWYgZ2xvYihzZWxmLCBwYXR0ZXJuLCBleGNsdWRlID0gTm9uZSk6CiAgICAgICAgICIiIkFkZCBhIGxpc3Qgb2YgZmlsZXMgdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50IGFzIHNwZWNpZmllZCBpbiB0aGUKICAgICAgICAgZ2xvYiBwYXR0ZXJuLiBJbmRpdmlkdWFsIGZpbGVzIGNhbiBiZSBleGNsdWRlZCBpbiB0aGUgZXhjbHVkZSBsaXN0LiIiIgotICAgICAgICBmaWxlcyA9IGdsb2IuZ2xvYjEoc2VsZi5hYnNvbHV0ZSwgcGF0dGVybikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZXMgPSBvcy5saXN0ZGlyKHNlbGYuYWJzb2x1dGUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIGlmIHBhdHRlcm5bOjFdICE9ICcuJzoKKyAgICAgICAgICAgIGZpbGVzID0gKGYgZm9yIGYgaW4gZmlsZXMgaWYgZlswXSAhPSAnLicpCisgICAgICAgIGZpbGVzID0gZm5tYXRjaC5maWx0ZXIoZmlsZXMsIHBhdHRlcm4pCiAgICAgICAgIGZvciBmIGluIGZpbGVzOgogICAgICAgICAgICAgaWYgZXhjbHVkZSBhbmQgZiBpbiBleGNsdWRlOiBjb250aW51ZQogICAgICAgICAgICAgc2VsZi5hZGRfZmlsZShmKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CmluZGV4IGQwYTFiODYuLmQ0OWU4ZjAgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKQEAgLTIwLDExICsyMCwxMSBAQAogCiBpbXBvcnQgX211bHRpcHJvY2Vzc2luZwogCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIGZyb20gLiBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwgQnVmZmVyVG9vU2hvcnQKLWZyb20gLnJlZHVjdGlvbiBpbXBvcnQgRm9ya2luZ1BpY2tsZXIKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgorX0ZvcmtpbmdQaWNrbGVyID0gcmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyCiAKIHRyeToKICAgICBpbXBvcnQgX3dpbmFwaQpAQCAtMjAzLDcgKzIwMyw3IEBACiAgICAgICAgICIiIlNlbmQgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICAgc2VsZi5fY2hlY2tfd3JpdGFibGUoKQotICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikpCisgICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikpCiAKICAgICBkZWYgcmVjdl9ieXRlcyhzZWxmLCBtYXhsZW5ndGg9Tm9uZSk6CiAgICAgICAgICIiIgpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKICAgICAgICAgYnVmID0gc2VsZi5fcmVjdl9ieXRlcygpCi0gICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhidWYuZ2V0YnVmZmVyKCkpCisgICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMoYnVmLmdldGJ1ZmZlcigpKQogCiAgICAgZGVmIHBvbGwoc2VsZiwgdGltZW91dD0wLjApOgogICAgICAgICAiIiJXaGV0aGVyIHRoZXJlIGlzIGFueSBpbnB1dCBhdmFpbGFibGUgdG8gYmUgcmVhZCIiIgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5CmluZGV4IDYzODQ5ZjkuLjA5NDU1ZTIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkKQEAgLTMsNiArMyw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gLiBpbXBvcnQgcHJvY2VzcworZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIAogX19hbGxfXyA9IFtdICAgICAgICAgICAgIyB0aGluZ3MgYXJlIGNvcGllZCBmcm9tIGhlcmUgdG8gX19pbml0X18ucHkKIApAQCAtMTk4LDYgKzE5OSwxNiBAQAogICAgIGRlZiBzZXRfc3RhcnRfbWV0aG9kKHNlbGYsIG1ldGhvZD1Ob25lKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBzdGFydCBtZXRob2Qgb2YgY29uY3JldGUgY29udGV4dCcpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmVkdWNlcihzZWxmKToKKyAgICAgICAgJycnQ29udHJvbHMgaG93IG9iamVjdHMgd2lsbCBiZSByZWR1Y2VkIHRvIGEgZm9ybSB0aGF0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBvdGhlciBwcm9jZXNzZXMuJycnCisgICAgICAgIHJldHVybiBnbG9iYWxzKCkuZ2V0KCdyZWR1Y3Rpb24nKQorCisgICAgQHJlZHVjZXIuc2V0dGVyCisgICAgZGVmIHJlZHVjZXIoc2VsZiwgcmVkdWN0aW9uKToKKyAgICAgICAgZ2xvYmFscygpWydyZWR1Y3Rpb24nXSA9IHJlZHVjdGlvbgorCiAgICAgZGVmIF9jaGVja19hdmFpbGFibGUoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMjQ1LDcgKzI1Niw2IEBACiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgcmV0dXJuIFsnc3Bhd24nXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KICAgICAgICAgICAgIGlmIHJlZHVjdGlvbi5IQVZFX1NFTkRfSEFORExFOgogICAgICAgICAgICAgICAgIHJldHVybiBbJ2ZvcmsnLCAnc3Bhd24nLCAnZm9ya3NlcnZlciddCiAgICAgICAgICAgICBlbHNlOgpAQCAtMjkyLDcgKzMwMiw2IEBACiAgICAgICAgIF9uYW1lID0gJ2ZvcmtzZXJ2ZXInCiAgICAgICAgIFByb2Nlc3MgPSBGb3JrU2VydmVyUHJvY2VzcwogICAgICAgICBkZWYgX2NoZWNrX2F2YWlsYWJsZShzZWxmKToKLSAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiAgICAgICAgICAgICBpZiBub3QgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZm9ya3NlcnZlciBzdGFydCBtZXRob2Qgbm90IGF2YWlsYWJsZScpCiAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQppbmRleCBhZDAxZWRlLi5mMmMxNzllIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CkBAIC05LDcgKzksNyBAQAogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCBzZW1hcGhvcmVfdHJhY2tlcgogZnJvbSAuIGltcG9ydCBzcGF3bgogZnJvbSAuIGltcG9ydCB1dGlsCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKaW5kZXggNDRkOTYzOC4uNDQzMzIxNSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQpAQCAtMTQsOCArMTQsNyBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGhyZWFkaW5nCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgYXNzZXJ0X3NwYXduaW5nCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnQnVmZmVyV3JhcHBlciddCkBAIC00OCw3ICs0Nyw3IEBACiAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IChzZWxmLnNpemUsIHNlbGYubmFtZSkKIAogICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgotICAgICAgICAgICAgY29udGV4dC5hc3NlcnRfc3Bhd25pbmcoc2VsZikKKyAgICAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlCiAKICAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQppbmRleCBiMTc1NDcwLi5iOWNlODRiIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKQEAgLTIzLDEwICsyMyw5IEBACiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YwogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBnZXRfc3Bhd25pbmdfcG9wZW4KIGZyb20gLiBpbXBvcnQgcG9vbAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IGdldF9jb250ZXh0CiAKQEAgLTE0Miw3ICsxNDEsOCBAQAogCiAgICAgICAgIHNlbGYuaWRfdG9fb2JqID0geycwJzogKE5vbmUsICgpKX0KICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudCA9IHt9Ci0gICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuUkxvY2soKQorICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iaiA9IHt9CisgICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuTG9jaygpCiAKICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmKToKICAgICAgICAgJycnCkBAIC0yMjcsNyArMjI3LDE0IEBACiAgICAgICAgICAgICAgICAgbWV0aG9kbmFtZSA9IG9iaiA9IE5vbmUKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gcmVjdigpCiAgICAgICAgICAgICAgICAgaWRlbnQsIG1ldGhvZG5hbWUsIGFyZ3MsIGt3ZHMgPSByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBpZF90b19vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IGlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMga2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqW2lkZW50XQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgc2Vjb25kX2tlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Uga2UKIAogICAgICAgICAgICAgICAgIGlmIG1ldGhvZG5hbWUgbm90IGluIGV4cG9zZWQ6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKApAQCAtMzA4LDcgKzMxNSw3IEBACiAgICAgICAgICcnJwogICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICAgICAga2V5cyA9IGxpc3Qoc2VsZi5pZF90b19vYmoua2V5cygpKQorICAgICAgICAgICAga2V5cyA9IGxpc3Qoc2VsZi5pZF90b19yZWZjb3VudC5rZXlzKCkpCiAgICAgICAgICAgICBrZXlzLnNvcnQoKQogICAgICAgICAgICAgZm9yIGlkZW50IGluIGtleXM6CiAgICAgICAgICAgICAgICAgaWYgaWRlbnQgIT0gJzAnOgpAQCAtMzIxLDcgKzMyOCw4IEBACiAgICAgICAgICcnJwogICAgICAgICBOdW1iZXIgb2Ygc2hhcmVkIG9iamVjdHMKICAgICAgICAgJycnCi0gICAgICAgIHJldHVybiBsZW4oc2VsZi5pZF90b19vYmopIC0gMSAgICAgICMgZG9uJ3QgY291bnQgaWRlbnQ9JzAnCisgICAgICAgICMgRG9lc24ndCB1c2UgKGxlbihzZWxmLmlkX3RvX29iaikgLSAxKSBhcyB3ZSBzaG91bGRuJ3QgY291bnQgaWRlbnQ9JzAnCisgICAgICAgIHJldHVybiBsZW4oc2VsZi5pZF90b19yZWZjb3VudCkKIAogICAgIGRlZiBzaHV0ZG93bihzZWxmLCBjKToKICAgICAgICAgJycnCkBAIC0zNjMsMTMgKzM3MSw5IEBACiAgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSAob2JqLCBzZXQoZXhwb3NlZCksIG1ldGhvZF90b190eXBlaWQpCiAgICAgICAgICAgICBpZiBpZGVudCBub3QgaW4gc2VsZi5pZF90b19yZWZjb3VudDoKICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9IDAKLSAgICAgICAgICAgICMgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgaW1tZWRpYXRlbHksIHRvIGF2b2lkCi0gICAgICAgICAgICAjIHRoaXMgb2JqZWN0IGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkIGJlZm9yZSBhIFByb3h5Ci0gICAgICAgICAgICAjIG9iamVjdCBmb3IgaXQgY2FuIGJlIGNyZWF0ZWQuICBUaGUgY2FsbGVyIG9mIGNyZWF0ZSgpCi0gICAgICAgICAgICAjIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBhIGRlY3JlZiBvbmNlIHRoZSBQcm94eSBvYmplY3QKLSAgICAgICAgICAgICMgaGFzIGJlZW4gY3JlYXRlZC4KLSAgICAgICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQotICAgICAgICAgICAgcmV0dXJuIGlkZW50LCB0dXBsZShleHBvc2VkKQorCisgICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQorICAgICAgICByZXR1cm4gaWRlbnQsIHR1cGxlKGV4cG9zZWQpCiAKICAgICBkZWYgZ2V0X21ldGhvZHMoc2VsZiwgYywgdG9rZW4pOgogICAgICAgICAnJycKQEAgLTM4NywxNSArMzkxLDQ1IEBACiAKICAgICBkZWYgaW5jcmVmKHNlbGYsIGMsIGlkZW50KToKICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgotICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gKz0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdICs9IDEKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBrZToKKyAgICAgICAgICAgICAgICAjIElmIG5vIGV4dGVybmFsIHJlZmVyZW5jZXMgZXhpc3QgYnV0IGFuIGludGVybmFsICh0byB0aGUKKyAgICAgICAgICAgICAgICAjIG1hbmFnZXIpIHN0aWxsIGRvZXMgYW5kIGEgbmV3IGV4dGVybmFsIHJlZmVyZW5jZSBpcyBjcmVhdGVkCisgICAgICAgICAgICAgICAgIyBmcm9tIGl0LCByZXN0b3JlIHRoZSBtYW5hZ2VyJ3MgdHJhY2tpbmcgb2YgaXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAjIHByZXZpb3VzbHkgc3Rhc2hlZCBpbnRlcm5hbCByZWYuCisgICAgICAgICAgICAgICAgaWYgaWRlbnQgaW4gc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmo6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID0gMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSBcCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBzZWxmLmlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnU2VydmVyIHJlLWVuYWJsZWQgdHJhY2tpbmcgJiBJTkNSRUYgJXInLCBpZGVudCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBrZQogCiAgICAgZGVmIGRlY3JlZihzZWxmLCBjLCBpZGVudCk6CisgICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50IGFuZCBcCisgICAgICAgICAgICBpZGVudCBpbiBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iajoKKyAgICAgICAgICAgIHV0aWwuZGVidWcoJ1NlcnZlciBERUNSRUYgc2tpcHBpbmcgJXInLCBpZGVudCkKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIGFzc2VydCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA+PSAxCiAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9PSAwOgotICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX29ialtpZGVudF0sIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCi0gICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCisKKyAgICAgICAgaWYgaWRlbnQgbm90IGluIHNlbGYuaWRfdG9fcmVmY291bnQ6CisgICAgICAgICAgICAjIFR3by1zdGVwIHByb2Nlc3MgaW4gY2FzZSB0aGUgb2JqZWN0IHR1cm5zIG91dCB0byBjb250YWluIG90aGVyCisgICAgICAgICAgICAjIHByb3h5IG9iamVjdHMgKGUuZy4gYSBtYW5hZ2VkIGxpc3Qgb2YgbWFuYWdlZCBsaXN0cykuCisgICAgICAgICAgICAjIE90aGVyd2lzZSwgZGVsZXRpbmcgc2VsZi5pZF90b19vYmpbaWRlbnRdIHdvdWxkIHRyaWdnZXIgdGhlCisgICAgICAgICAgICAjIGRlbGV0aW5nIG9mIHRoZSBzdG9yZWQgdmFsdWUgKGFub3RoZXIgbWFuYWdlZCBvYmplY3QpIHdoaWNoIHdvdWxkCisgICAgICAgICAgICAjIGluIHR1cm4gYXR0ZW1wdCB0byBhY3F1aXJlIHRoZSBtdXRleCB0aGF0IGlzIGFscmVhZHkgaGVsZCBoZXJlLgorICAgICAgICAgICAgc2VsZi5pZF90b19vYmpbaWRlbnRdID0gKE5vbmUsICgpLCBOb25lKSAgIyB0aHJlYWQtc2FmZQorICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCisgICAgICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fb2JqW2lkZW50XQorCiAKICMKICMgQ2xhc3MgdG8gcmVwcmVzZW50IHN0YXRlIG9mIGEgbWFuYWdlcgpAQCAtNjU4LDcgKzY5Miw3IEBACiAgICAgX211dGV4ID0gdXRpbC5Gb3JrQXdhcmVUaHJlYWRMb2NrKCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b2tlbiwgc2VyaWFsaXplciwgbWFuYWdlcj1Ob25lLAotICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUpOgorICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUsIG1hbmFnZXJfb3duZWQ9RmFsc2UpOgogICAgICAgICB3aXRoIEJhc2VQcm94eS5fbXV0ZXg6CiAgICAgICAgICAgICB0bHNfaWRzZXQgPSBCYXNlUHJveHkuX2FkZHJlc3NfdG9fbG9jYWwuZ2V0KHRva2VuLmFkZHJlc3MsIE5vbmUpCiAgICAgICAgICAgICBpZiB0bHNfaWRzZXQgaXMgTm9uZToKQEAgLTY4MCw2ICs3MTQsMTIgQEAKICAgICAgICAgc2VsZi5fc2VyaWFsaXplciA9IHNlcmlhbGl6ZXIKICAgICAgICAgc2VsZi5fQ2xpZW50ID0gbGlzdGVuZXJfY2xpZW50W3NlcmlhbGl6ZXJdWzFdCiAKKyAgICAgICAgIyBTaG91bGQgYmUgc2V0IHRvIFRydWUgb25seSB3aGVuIGEgcHJveHkgb2JqZWN0IGlzIGJlaW5nIGNyZWF0ZWQKKyAgICAgICAgIyBvbiB0aGUgbWFuYWdlciBzZXJ2ZXI7IHByaW1hcnkgdXNlIGNhc2U6IG5lc3RlZCBwcm94eSBvYmplY3RzLgorICAgICAgICAjIFJlYnVpbGRQcm94eSBkZXRlY3RzIHdoZW4gYSBwcm94eSBpcyBiZWluZyBjcmVhdGVkIG9uIHRoZSBtYW5hZ2VyCisgICAgICAgICMgYW5kIHNldHMgdGhpcyB2YWx1ZSBhcHByb3ByaWF0ZWx5LgorICAgICAgICBzZWxmLl9vd25lZF9ieV9tYW5hZ2VyID0gbWFuYWdlcl9vd25lZAorCiAgICAgICAgIGlmIGF1dGhrZXkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9hdXRoa2V5ID0gcHJvY2Vzcy5BdXRoZW50aWNhdGlvblN0cmluZyhhdXRoa2V5KQogICAgICAgICBlbGlmIHNlbGYuX21hbmFnZXIgaXMgbm90IE5vbmU6CkBAIC03MzgsNiArNzc4LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCcjR0VUVkFMVUUnKQogCiAgICAgZGVmIF9pbmNyZWYoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX293bmVkX2J5X21hbmFnZXI6CisgICAgICAgICAgICB1dGlsLmRlYnVnKCdvd25lZF9ieV9tYW5hZ2VyIHNraXBwZWQgSU5DUkVGIG9mICVyJywgc2VsZi5fdG9rZW4uaWQpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICBjb25uID0gc2VsZi5fQ2xpZW50KHNlbGYuX3Rva2VuLmFkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkKICAgICAgICAgZGlzcGF0Y2goY29ubiwgTm9uZSwgJ2luY3JlZicsIChzZWxmLl9pZCwpKQogICAgICAgICB1dGlsLmRlYnVnKCdJTkNSRUYgJXInLCBzZWxmLl90b2tlbi5pZCkKQEAgLTc4OCw3ICs4MzIsNyBAQAogCiAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgIGt3ZHMgPSB7fQotICAgICAgICBpZiBjb250ZXh0LmdldF9zcGF3bmluZ19wb3BlbigpIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBnZXRfc3Bhd25pbmdfcG9wZW4oKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGt3ZHNbJ2F1dGhrZXknXSA9IHNlbGYuX2F1dGhrZXkKIAogICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfaXNhdXRvJywgRmFsc2UpOgpAQCAtODIyLDE5ICs4NjYsMTkgQEAKIGRlZiBSZWJ1aWxkUHJveHkoZnVuYywgdG9rZW4sIHNlcmlhbGl6ZXIsIGt3ZHMpOgogICAgICcnJwogICAgIEZ1bmN0aW9uIHVzZWQgZm9yIHVucGlja2xpbmcgcHJveHkgb2JqZWN0cy4KLQotICAgIElmIHBvc3NpYmxlIHRoZSBzaGFyZWQgb2JqZWN0IGlzIHJldHVybmVkLCBvciBvdGhlcndpc2UgYSBwcm94eSBmb3IgaXQuCiAgICAgJycnCiAgICAgc2VydmVyID0gZ2V0YXR0cihwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLCAnX21hbmFnZXJfc2VydmVyJywgTm9uZSkKLQogICAgIGlmIHNlcnZlciBhbmQgc2VydmVyLmFkZHJlc3MgPT0gdG9rZW4uYWRkcmVzczoKLSAgICAgICAgcmV0dXJuIHNlcnZlci5pZF90b19vYmpbdG9rZW4uaWRdWzBdCi0gICAgZWxzZToKLSAgICAgICAgaW5jcmVmID0gKAotICAgICAgICAgICAga3dkcy5wb3AoJ2luY3JlZicsIFRydWUpIGFuZAotICAgICAgICAgICAgbm90IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19pbmhlcml0aW5nJywgRmFsc2UpCi0gICAgICAgICAgICApCi0gICAgICAgIHJldHVybiBmdW5jKHRva2VuLCBzZXJpYWxpemVyLCBpbmNyZWY9aW5jcmVmLCAqKmt3ZHMpCisgICAgICAgIHV0aWwuZGVidWcoJ1JlYnVpbGQgYSBwcm94eSBvd25lZCBieSBtYW5hZ2VyLCB0b2tlbj0lcicsIHRva2VuKQorICAgICAgICBrd2RzWydtYW5hZ2VyX293bmVkJ10gPSBUcnVlCisgICAgICAgIGlmIHRva2VuLmlkIG5vdCBpbiBzZXJ2ZXIuaWRfdG9fbG9jYWxfcHJveHlfb2JqOgorICAgICAgICAgICAgc2VydmVyLmlkX3RvX2xvY2FsX3Byb3h5X29ialt0b2tlbi5pZF0gPSBcCisgICAgICAgICAgICAgICAgc2VydmVyLmlkX3RvX29ialt0b2tlbi5pZF0KKyAgICBpbmNyZWYgPSAoCisgICAgICAgIGt3ZHMucG9wKCdpbmNyZWYnLCBUcnVlKSBhbmQKKyAgICAgICAgbm90IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19pbmhlcml0aW5nJywgRmFsc2UpCisgICAgICAgICkKKyAgICByZXR1cm4gZnVuYyh0b2tlbiwgc2VyaWFsaXplciwgaW5jcmVmPWluY3JlZiwgKiprd2RzKQogCiAjCiAjIEZ1bmN0aW9ucyB0byBjcmVhdGUgcHJveGllcyBhbmQgcHJveHkgdHlwZXMKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQppbmRleCA2ZDI1NDY5Li5mZmRmNDI2IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CkBAIC02MzgsMjIgKzYzOCwyNiBAQAogICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgPSBsZW5ndGgvL2NodW5rc2l6ZSArIGJvb2wobGVuZ3RoICUgY2h1bmtzaXplKQogCiAgICAgZGVmIF9zZXQoc2VsZiwgaSwgc3VjY2Vzc19yZXN1bHQpOgorICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCAtPSAxCiAgICAgICAgIHN1Y2Nlc3MsIHJlc3VsdCA9IHN1Y2Nlc3NfcmVzdWx0Ci0gICAgICAgIGlmIHN1Y2Nlc3M6CisgICAgICAgIGlmIHN1Y2Nlc3MgYW5kIHNlbGYuX3N1Y2Nlc3M6CiAgICAgICAgICAgICBzZWxmLl92YWx1ZVtpKnNlbGYuX2NodW5rc2l6ZTooaSsxKSpzZWxmLl9jaHVua3NpemVdID0gcmVzdWx0Ci0gICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLl9udW1iZXJfbGVmdCA9PSAwOgogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQogICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zdWNjZXNzID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gcmVzdWx0Ci0gICAgICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjazoKLSAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKLSAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQorICAgICAgICAgICAgaWYgbm90IHN1Y2Nlc3MgYW5kIHNlbGYuX3N1Y2Nlc3M6CisgICAgICAgICAgICAgICAgIyBvbmx5IHN0b3JlIGZpcnN0IGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gcmVzdWx0CisgICAgICAgICAgICBpZiBzZWxmLl9udW1iZXJfbGVmdCA9PSAwOgorICAgICAgICAgICAgICAgICMgb25seSBjb25zaWRlciB0aGUgcmVzdWx0IHJlYWR5IG9uY2UgYWxsIGpvYnMgYXJlIGRvbmUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjazoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KKyAgICAgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuaW1hcCgpYApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5CmluZGV4IGU3OTIxOTQuLjIyMmRiMmQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkKQEAgLTEsMTAgKzEsOSBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgc2V0X3NwYXduaW5nX3BvcGVuCiBpZiBub3QgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ05vIHN1cHBvcnQgZm9yIHNlbmRpbmcgZmRzIGJldHdlZW4gcHJvY2Vzc2VzJykKLWZyb20gLiBpbXBvcnQgY29udGV4dAogZnJvbSAuIGltcG9ydCBmb3Jrc2VydmVyCiBmcm9tIC4gaW1wb3J0IHBvcGVuX2ZvcmsKIGZyb20gLiBpbXBvcnQgc3Bhd24KQEAgLTQyLDEyICs0MSwxMiBAQAogICAgIGRlZiBfbGF1bmNoKHNlbGYsIHByb2Nlc3Nfb2JqKToKICAgICAgICAgcHJlcF9kYXRhID0gc3Bhd24uZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCiAgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCBidWYpCiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgYnVmKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKKyAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihOb25lKQogCiAgICAgICAgIHNlbGYuc2VudGluZWwsIHcgPSBmb3Jrc2VydmVyLmNvbm5lY3RfdG9fbmV3X3Byb2Nlc3Moc2VsZi5fZmRzKQogICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIG9zLmNsb3NlLCAoc2VsZi5zZW50aW5lbCwpKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkKaW5kZXggNmIwYThkNi4uOThmOGYwYSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5CkBAIC0xLDkgKzEsOCBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIAotZnJvbSAuIGltcG9ydCBjb250ZXh0Citmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIHNldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBwb3Blbl9mb3JrCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCBzcGF3bgogZnJvbSAuIGltcG9ydCB1dGlsCiAKQEAgLTQyLDEyICs0MSwxMiBAQAogICAgICAgICBzZWxmLl9mZHMuYXBwZW5kKHRyYWNrZXJfZmQpCiAgICAgICAgIHByZXBfZGF0YSA9IHNwYXduLmdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQogICAgICAgICBmcCA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCBmcCkKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByb2Nlc3Nfb2JqLCBmcCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKIAogICAgICAgICBwYXJlbnRfciA9IGNoaWxkX3cgPSBjaGlsZF9yID0gcGFyZW50X3cgPSBOb25lCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5CmluZGV4IDNiNTMwNjguLjZmZDU4OGYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weQpAQCAtNCw5ICs0LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCBfd2luYXBpCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBnZXRfc3Bhd25pbmdfcG9wZW4sIHNldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBzcGF3bgotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydQb3BlbiddCkBAIC02MCwxNSArNTksMTUgQEAKICAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgX3dpbmFwaS5DbG9zZUhhbmRsZSwgKHNlbGYuc2VudGluZWwsKSkKIAogICAgICAgICAgICAgIyBzZW5kIGluZm9ybWF0aW9uIHRvIGNoaWxkCi0gICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCkKICAgICAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCiAKICAgICBkZWYgZHVwbGljYXRlX2Zvcl9jaGlsZChzZWxmLCBoYW5kbGUpOgotICAgICAgICBhc3NlcnQgc2VsZiBpcyBjb250ZXh0LmdldF9zcGF3bmluZ19wb3BlbigpCisgICAgICAgIGFzc2VydCBzZWxmIGlzIGdldF9zcGF3bmluZ19wb3BlbigpCiAgICAgICAgIHJldHVybiByZWR1Y3Rpb24uZHVwbGljYXRlKGhhbmRsZSwgc2VsZi5zZW50aW5lbCkKIAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CmluZGV4IDc4NmEzMDMuLmRkYTAzZGQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CkBAIC0yMyw5ICsyMyw5IEBACiAKIGZyb20gLiBpbXBvcnQgY29ubmVjdGlvbgogZnJvbSAuIGltcG9ydCBjb250ZXh0CitfRm9ya2luZ1BpY2tsZXIgPSBjb250ZXh0LnJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiBmcm9tIC51dGlsIGltcG9ydCBkZWJ1ZywgaW5mbywgRmluYWxpemUsIHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGlzX2V4aXRpbmcKLWZyb20gLnJlZHVjdGlvbiBpbXBvcnQgRm9ya2luZ1BpY2tsZXIKIAogIwogIyBRdWV1ZSB0eXBlIHVzaW5nIGEgcGlwZSwgYnVmZmVyIGFuZCB0aHJlYWQKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBzZWxmLl9ybG9jay5yZWxlYXNlKCkKICAgICAgICAgIyB1bnNlcmlhbGl6ZSB0aGUgZGF0YSBhZnRlciBoYXZpbmcgcmVsZWFzZWQgdGhlIGxvY2sKLSAgICAgICAgcmV0dXJuIEZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKKyAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCiAKICAgICBkZWYgcXNpemUoc2VsZik6CiAgICAgICAgICMgUmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3Igb24gTWFjIE9TWCBiZWNhdXNlIG9mIGJyb2tlbiBzZW1fZ2V0dmFsdWUoKQpAQCAtMjM4LDcgKzIzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VyaWFsaXplIHRoZSBkYXRhIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IF9Gb3JraW5nUGlja2xlci5kdW1wcyhvYmopCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiB3YWNxdWlyZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnl0ZXMob2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTM0MiwxMSArMzQyLDExIEBACiAgICAgICAgIHdpdGggc2VsZi5fcmxvY2s6CiAgICAgICAgICAgICByZXMgPSBzZWxmLl9yZWFkZXIucmVjdl9ieXRlcygpCiAgICAgICAgICMgdW5zZXJpYWxpemUgdGhlIGRhdGEgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIHRoZSBsb2NrCi0gICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCisgICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQogCiAgICAgZGVmIHB1dChzZWxmLCBvYmopOgogICAgICAgICAjIHNlcmlhbGl6ZSB0aGUgZGF0YSBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NrCi0gICAgICAgIG9iaiA9IEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKKyAgICAgICAgb2JqID0gX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKICAgICAgICAgaWYgc2VsZi5fd2xvY2sgaXMgTm9uZToKICAgICAgICAgICAgICMgd3JpdGVzIHRvIGEgbWVzc2FnZSBvcmllbnRlZCB3aW4zMiBwaXBlIGFyZSBhdG9taWMKICAgICAgICAgICAgIHNlbGYuX3dyaXRlci5zZW5kX2J5dGVzKG9iaikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKaW5kZXggOGYyMDliNC4uYzA0M2M5YSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKQEAgLTcsNiArNyw3IEBACiAjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAorZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBpbXBvcnQgY29weXJlZwogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGlvCkBAIC0yMzgsMyArMjM5LDM2IEBACiAgICAgICAgIGZkID0gZGYuZGV0YWNoKCkKICAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bywgZmlsZW5vPWZkKQogICAgIHJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIF9yZWR1Y2Vfc29ja2V0KQorCisKK2NsYXNzIEFic3RyYWN0UmVkdWNlcihtZXRhY2xhc3M9QUJDTWV0YSk6CisgICAgJycnQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdXNlIGluIGltcGxlbWVudGluZyBhIFJlZHVjdGlvbiBjbGFzcworICAgIHN1aXRhYmxlIGZvciB1c2UgaW4gcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCByZWR1Y3Rpb24gbWVjaGFuaXNtCisgICAgdXNlZCBpbiBtdWx0aXByb2Nlc3NpbmcuJycnCisgICAgRm9ya2luZ1BpY2tsZXIgPSBGb3JraW5nUGlja2xlcgorICAgIHJlZ2lzdGVyID0gcmVnaXN0ZXIKKyAgICBkdW1wID0gZHVtcAorICAgIHNlbmRfaGFuZGxlID0gc2VuZF9oYW5kbGUKKyAgICByZWN2X2hhbmRsZSA9IHJlY3ZfaGFuZGxlCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgc3RlYWxfaGFuZGxlID0gc3RlYWxfaGFuZGxlCisgICAgICAgIGR1cGxpY2F0ZSA9IGR1cGxpY2F0ZQorICAgICAgICBEdXBIYW5kbGUgPSBEdXBIYW5kbGUKKyAgICBlbHNlOgorICAgICAgICBzZW5kZmRzID0gc2VuZGZkcworICAgICAgICByZWN2ZmRzID0gcmVjdmZkcworICAgICAgICBEdXBGZCA9IER1cEZkCisKKyAgICBfcmVkdWNlX21ldGhvZCA9IF9yZWR1Y2VfbWV0aG9kCisgICAgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvciA9IF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IKKyAgICBfcmVidWlsZF9wYXJ0aWFsID0gX3JlYnVpbGRfcGFydGlhbAorICAgIF9yZWR1Y2Vfc29ja2V0ID0gX3JlZHVjZV9zb2NrZXQKKyAgICBfcmVidWlsZF9zb2NrZXQgPSBfcmVidWlsZF9zb2NrZXQKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHJlZ2lzdGVyKHR5cGUoX0MoKS5mKSwgX3JlZHVjZV9tZXRob2QpCisgICAgICAgIHJlZ2lzdGVyKHR5cGUobGlzdC5hcHBlbmQpLCBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yKQorICAgICAgICByZWdpc3Rlcih0eXBlKGludC5fX2FkZF9fKSwgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvcikKKyAgICAgICAgcmVnaXN0ZXIoZnVuY3Rvb2xzLnBhcnRpYWwsIF9yZWR1Y2VfcGFydGlhbCkKKyAgICAgICAgcmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgX3JlZHVjZV9zb2NrZXQpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CmluZGV4IDVlNDZmYzYuLmU0NGE3MjggMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CkBAIC0xNSw3ICsxNSw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ3N0b3AnXQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQppbmRleCA0MjU4ZjU5Li4yNWNiY2YyIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQpAQCAtMTMsOCArMTMsOCBAQAogZnJvbSAuIGltcG9ydCBoZWFwCiBmcm9tIC4gaW1wb3J0IGdldF9jb250ZXh0CiAKLWZyb20gLmNvbnRleHQgaW1wb3J0IGFzc2VydF9zcGF3bmluZwotZnJvbSAucmVkdWN0aW9uIGltcG9ydCBGb3JraW5nUGlja2xlcgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBhc3NlcnRfc3Bhd25pbmcKK19Gb3JraW5nUGlja2xlciA9IHJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiBfX2FsbF9fID0gWydSYXdWYWx1ZScsICdSYXdBcnJheScsICdWYWx1ZScsICdBcnJheScsICdjb3B5JywgJ3N5bmNocm9uaXplZCddCiAKQEAgLTEzNCw3ICsxMzQsNyBAQAogZGVmIHJlYnVpbGRfY3R5cGUodHlwZV8sIHdyYXBwZXIsIGxlbmd0aCk6CiAgICAgaWYgbGVuZ3RoIGlzIG5vdCBOb25lOgogICAgICAgICB0eXBlXyA9IHR5cGVfICogbGVuZ3RoCi0gICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKKyAgICBfRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKICAgICBidWYgPSB3cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkKICAgICBvYmogPSB0eXBlXy5mcm9tX2J1ZmZlcihidWYpCiAgICAgb2JqLl93cmFwcGVyID0gd3JhcHBlcgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKaW5kZXggNGQ3Njk1MS4uZGZiOWY2NSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5CkBAIC05LDEzICs5LDEzIEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IHBpY2tsZQogaW1wb3J0IHN5cwogaW1wb3J0IHJ1bnB5CiBpbXBvcnQgdHlwZXMKIAogZnJvbSAuIGltcG9ydCBnZXRfc3RhcnRfbWV0aG9kLCBzZXRfc3RhcnRfbWV0aG9kCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ19tYWluJywgJ2ZyZWV6ZV9zdXBwb3J0JywgJ3NldF9leGVjdXRhYmxlJywgJ2dldF9leGVjdXRhYmxlJywKQEAgLTk2LDggKzk2LDcgQEAKICAgICBhc3NlcnQgaXNfZm9ya2luZyhzeXMuYXJndikKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgaW1wb3J0IG1zdmNydAotICAgICAgICBmcm9tIC5yZWR1Y3Rpb24gaW1wb3J0IHN0ZWFsX2hhbmRsZQotICAgICAgICBuZXdfaGFuZGxlID0gc3RlYWxfaGFuZGxlKHBhcmVudF9waWQsIHBpcGVfaGFuZGxlKQorICAgICAgICBuZXdfaGFuZGxlID0gcmVkdWN0aW9uLnN0ZWFsX2hhbmRsZShwYXJlbnRfcGlkLCBwaXBlX2hhbmRsZSkKICAgICAgICAgZmQgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUobmV3X2hhbmRsZSwgb3MuT19SRE9OTFkpCiAgICAgZWxzZToKICAgICAgICAgZnJvbSAuIGltcG9ydCBzZW1hcGhvcmVfdHJhY2tlcgpAQCAtMTExLDkgKzExMCw5IEBACiAgICAgd2l0aCBvcy5mZG9wZW4oZmQsICdyYicsIGNsb3NlZmQ9VHJ1ZSkgYXMgZnJvbV9wYXJlbnQ6CiAgICAgICAgIHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkuX2luaGVyaXRpbmcgPSBUcnVlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHByZXBhcmF0aW9uX2RhdGEgPSBwaWNrbGUubG9hZChmcm9tX3BhcmVudCkKKyAgICAgICAgICAgIHByZXBhcmF0aW9uX2RhdGEgPSByZWR1Y3Rpb24ucGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCiAgICAgICAgICAgICBwcmVwYXJlKHByZXBhcmF0aW9uX2RhdGEpCi0gICAgICAgICAgICBzZWxmID0gcGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCisgICAgICAgICAgICBzZWxmID0gcmVkdWN0aW9uLnBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkuX2luaGVyaXRpbmcKICAgICByZXR1cm4gc2VsZi5fYm9vdHN0cmFwKCkKZGlmZiAtLWdpdCBhL0xpYi9udHBhdGgucHkgYi9MaWIvbnRwYXRoLnB5CmluZGV4IGFmNmE3MDkuLmE4ZjRiMzcgMTAwNjQ0Ci0tLSBhL0xpYi9udHBhdGgucHkKKysrIGIvTGliL250cGF0aC5weQpAQCAtMjgsOCArMjgsNiBAQAogcGF0aHNlcCA9ICc7JwogYWx0c2VwID0gJy8nCiBkZWZwYXRoID0gJy47QzpcXGJpbicKLWlmICdjZScgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgIGRlZnBhdGggPSAnXFxXaW5kb3dzJwogZGV2bnVsbCA9ICdudWwnCiAKIGRlZiBfZ2V0X2JvdGhzZXBzKHBhdGgpOgpAQCAtNDYsNiArNDQsNyBAQAogICAgICIiIk5vcm1hbGl6ZSBjYXNlIG9mIHBhdGhuYW1lLgogCiAgICAgTWFrZXMgYWxsIGNoYXJhY3RlcnMgbG93ZXJjYXNlIGFuZCBhbGwgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzLiIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICB0cnk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpOgogICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZShiJy8nLCBiJ1xcJykubG93ZXIoKQpAQCAtNjYsMTIgKzY1LDE0IEBACiAKIGRlZiBpc2FicyhzKToKICAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGFic29sdXRlIiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIHMgPSBzcGxpdGRyaXZlKHMpWzFdCiAgICAgcmV0dXJuIGxlbihzKSA+IDAgYW5kIHNbMF0gaW4gX2dldF9ib3Roc2VwcyhzKQogCiAKICMgSm9pbiB0d28gKG9yIG1vcmUpIHBhdGhzLgogZGVmIGpvaW4ocGF0aCwgKnBhdGhzKToKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIHNlcHMgPSBiJ1xcLycKQEAgLTg0LDcgKzg1LDcgQEAKICAgICAgICAgaWYgbm90IHBhdGhzOgogICAgICAgICAgICAgcGF0aFs6MF0gKyBzZXAgICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgogICAgICAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQotICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgZm9yIHAgaW4gbWFwKG9zLmZzcGF0aCwgcGF0aHMpOgogICAgICAgICAgICAgcF9kcml2ZSwgcF9wYXRoID0gc3BsaXRkcml2ZShwKQogICAgICAgICAgICAgaWYgcF9wYXRoIGFuZCBwX3BhdGhbMF0gaW4gc2VwczoKICAgICAgICAgICAgICAgICAjIFNlY29uZCBwYXRoIGlzIGFic29sdXRlCkBAIC0xMzYsNiArMTM3LDcgQEAKICAgICBQYXRocyBjYW5ub3QgY29udGFpbiBib3RoIGEgZHJpdmUgbGV0dGVyIGFuZCBhIFVOQyBwYXRoLgogCiAgICAgIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIGlmIGxlbihwKSA+PSAyOgogICAgICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgICAgIHNlcCA9IGInXFwnCkBAIC0xOTksNyArMjAxLDcgQEAKIAogICAgIFJldHVybiB0dXBsZSAoaGVhZCwgdGFpbCkgd2hlcmUgdGFpbCBpcyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4KICAgICBFaXRoZXIgcGFydCBtYXkgYmUgZW1wdHkuIiIiCi0KKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocCkKICAgICBkLCBwID0gc3BsaXRkcml2ZShwKQogICAgICMgc2V0IGkgdG8gaW5kZXggYmV5b25kIHAncyBsYXN0IHNsYXNoCkBAIC0yMTgsNiArMjIwLDcgQEAKICMgSXQgaXMgYWx3YXlzIHRydWUgdGhhdCByb290ICsgZXh0ID09IHAuCiAKIGRlZiBzcGxpdGV4dChwKToKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CiAgICAgICAgIHJldHVybiBnZW5lcmljcGF0aC5fc3BsaXRleHQocCwgYidcXCcsIGInLycsIGInLicpCiAgICAgZWxzZToKQEAgLTI3OCw2ICsyODEsNyBAQAogZGVmIGlzbW91bnQocGF0aCk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIG1vdW50IHBvaW50IChhIGRyaXZlIHJvb3QsIHRoZSByb290IG9mIGEKICAgICBzaGFyZSwgb3IgYSBtb3VudGVkIHZvbHVtZSkiIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocGF0aCkKICAgICBwYXRoID0gYWJzcGF0aChwYXRoKQogICAgIHJvb3QsIHJlc3QgPSBzcGxpdGRyaXZlKHBhdGgpCkBAIC0zMDUsNiArMzA5LDcgQEAKICAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0cy4KIAogICAgIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwgZG8gbm90aGluZy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHRpbGRlID0gYid+JwogICAgIGVsc2U6CkBAIC0zNTQsNiArMzU5LDcgQEAKICAgICAiIiJFeHBhbmQgc2hlbGwgdmFyaWFibGVzIG9mIHRoZSBmb3JtcyAkdmFyLCAke3Zhcn0gYW5kICV2YXIlLgogCiAgICAgVW5rbm93biB2YXJpYWJsZXMgYXJlIGxlZnQgdW5jaGFuZ2VkLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgaWYgYickJyBub3QgaW4gcGF0aCBhbmQgYiclJyBub3QgaW4gcGF0aDoKICAgICAgICAgICAgIHJldHVybiBwYXRoCkBAIC00NjQsNiArNDcwLDcgQEAKIAogZGVmIG5vcm1wYXRoKHBhdGgpOgogICAgICIiIk5vcm1hbGl6ZSBwYXRoLCBlbGltaW5hdGluZyBkb3VibGUgc2xhc2hlcywgZXRjLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgYWx0c2VwID0gYicvJwpAQCAtNTE4LDYgKzUyNSw3IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6ICMgbm90IHJ1bm5pbmcgb24gV2luZG93cyAtIG1vY2sgdXAgc29tZXRoaW5nIHNlbnNpYmxlCiAgICAgZGVmIGFic3BhdGgocGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgdmVyc2lvbiBvZiBhIHBhdGguIiIiCisgICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICAgICAgaWYgbm90IGlzYWJzKHBhdGgpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkYigpCkBAIC01MzEsNiArNTM5LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBhYnNvbHV0ZSB2ZXJzaW9uIG9mIGEgcGF0aC4iIiIKIAogICAgICAgICBpZiBwYXRoOiAjIEVtcHR5IHBhdGggbXVzdCByZXR1cm4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwYXRoID0gX2dldGZ1bGxwYXRobmFtZShwYXRoKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CkBAIC01NDksNiArNTU4LDcgQEAKIAogZGVmIHJlbHBhdGgocGF0aCwgc3RhcnQ9Tm9uZSk6CiAgICAgIiIiUmV0dXJuIGEgcmVsYXRpdmUgdmVyc2lvbiBvZiBhIHBhdGgiIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIGN1cmRpciA9IGInLicKQEAgLTU2NCw2ICs1NzQsNyBAQAogICAgIGlmIG5vdCBwYXRoOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJubyBwYXRoIHNwZWNpZmllZCIpCiAKKyAgICBzdGFydCA9IG9zLmZzcGF0aChzdGFydCkKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0X2FicyA9IGFic3BhdGgobm9ybXBhdGgoc3RhcnQpKQogICAgICAgICBwYXRoX2FicyA9IGFic3BhdGgobm9ybXBhdGgocGF0aCkpCkBAIC02MDcsNiArNjE4LDcgQEAKICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQogCisgICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBhbHRzZXAgPSBiJy8nCmRpZmYgLS1naXQgYS9MaWIvb3Bjb2RlLnB5IGIvTGliL29wY29kZS5weQppbmRleCA0YzgyNmE3Li5iZTI2NDc1IDEwMDY0NAotLS0gYS9MaWIvb3Bjb2RlLnB5CisrKyBiL0xpYi9vcGNvZGUucHkKQEAgLTMxLDEyICszMSwxMCBAQAogaGFzbG9jYWwgPSBbXQogaGFzY29tcGFyZSA9IFtdCiBoYXNmcmVlID0gW10KLWhhc25hcmdzID0gW10KK2hhc25hcmdzID0gW10gIyB1bnVzZWQKIAogb3BtYXAgPSB7fQotb3BuYW1lID0gWycnXSAqIDI1NgotZm9yIG9wIGluIHJhbmdlKDI1Nik6IG9wbmFtZVtvcF0gPSAnPCVyPicgJSAob3AsKQotZGVsIG9wCitvcG5hbWUgPSBbJzwlcj4nICUgKG9wLCkgZm9yIG9wIGluIHJhbmdlKDI1NildCiAKIGRlZiBkZWZfb3AobmFtZSwgb3ApOgogICAgIG9wbmFtZVtvcF0gPSBuYW1lCkBAIC0xMjEsNyArMTE5LDcgQEAKIAogZGVmX29wKCdSRVRVUk5fVkFMVUUnLCA4MykKIGRlZl9vcCgnSU1QT1JUX1NUQVInLCA4NCkKLQorZGVmX29wKCdTRVRVUF9BTk5PVEFUSU9OUycsIDg1KQogZGVmX29wKCdZSUVMRF9WQUxVRScsIDg2KQogZGVmX29wKCdQT1BfQkxPQ0snLCA4NykKIGRlZl9vcCgnRU5EX0ZJTkFMTFknLCA4OCkKQEAgLTE3MSwxMyArMTY5LDEyIEBACiBoYXNsb2NhbC5hcHBlbmQoMTI1KQogZGVmX29wKCdERUxFVEVfRkFTVCcsIDEyNikgICAgICAjIExvY2FsIHZhcmlhYmxlIG51bWJlcgogaGFzbG9jYWwuYXBwZW5kKDEyNikKK25hbWVfb3AoJ1NUT1JFX0FOTk9UQVRJT04nLCAxMjcpICMgSW5kZXggaW4gbmFtZSBsaXN0CiAKIGRlZl9vcCgnUkFJU0VfVkFSQVJHUycsIDEzMCkgICAgIyBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyLCBvciAzKQotZGVmX29wKCdDQUxMX0ZVTkNUSU9OJywgMTMxKSAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxMzEpCi1kZWZfb3AoJ01BS0VfRlVOQ1RJT04nLCAxMzIpICAgICMgTnVtYmVyIG9mIGFyZ3Mgd2l0aCBkZWZhdWx0IHZhbHVlcworZGVmX29wKCdDQUxMX0ZVTkNUSU9OJywgMTMxKSAgICAjICNhcmdzCitkZWZfb3AoJ01BS0VfRlVOQ1RJT04nLCAxMzIpICAgICMgRmxhZ3MKIGRlZl9vcCgnQlVJTERfU0xJQ0UnLCAxMzMpICAgICAgIyBOdW1iZXIgb2YgaXRlbXMKLWRlZl9vcCgnTUFLRV9DTE9TVVJFJywgMTM0KQogZGVmX29wKCdMT0FEX0NMT1NVUkUnLCAxMzUpCiBoYXNmcmVlLmFwcGVuZCgxMzUpCiBkZWZfb3AoJ0xPQURfREVSRUYnLCAxMzYpCkBAIC0xODcsMTIgKzE4NCw4IEBACiBkZWZfb3AoJ0RFTEVURV9ERVJFRicsIDEzOCkKIGhhc2ZyZWUuYXBwZW5kKDEzOCkKIAotZGVmX29wKCdDQUxMX0ZVTkNUSU9OX1ZBUicsIDE0MCkgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDE0MCkKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTl9LVycsIDE0MSkgICAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxNDEpCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSX0tXJywgMTQyKSAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTQyKQorZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0tXJywgMTQxKSAgIyAjYXJncyArICNrd2FyZ3MKK2RlZl9vcCgnQ0FMTF9GVU5DVElPTl9FWCcsIDE0MikgICMgRmxhZ3MKIAoganJlbF9vcCgnU0VUVVBfV0lUSCcsIDE0MykKIApAQCAtMjE0LDQgKzIwNyw4IEBACiBkZWZfb3AoJ0JVSUxEX1RVUExFX1VOUEFDSycsIDE1MikKIGRlZl9vcCgnQlVJTERfU0VUX1VOUEFDSycsIDE1MykKIAorZGVmX29wKCdGT1JNQVRfVkFMVUUnLCAxNTUpCitkZWZfb3AoJ0JVSUxEX0NPTlNUX0tFWV9NQVAnLCAxNTYpCitkZWZfb3AoJ0JVSUxEX1NUUklORycsIDE1NykKKwogZGVsIGRlZl9vcCwgbmFtZV9vcCwganJlbF9vcCwgamFic19vcApkaWZmIC0tZ2l0IGEvTGliL29wdHBhcnNlLnB5IGIvTGliL29wdHBhcnNlLnB5CmluZGV4IDc0YjNiMzYuLmU4YWMxZTEgMTAwNjQ0Ci0tLSBhL0xpYi9vcHRwYXJzZS5weQorKysgYi9MaWIvb3B0cGFyc2UucHkKQEAgLTM4LDcgKzM4LDggQEAKICAgICAgICAgICAgJ09wdGlvbkVycm9yJywKICAgICAgICAgICAgJ09wdGlvbkNvbmZsaWN0RXJyb3InLAogICAgICAgICAgICAnT3B0aW9uVmFsdWVFcnJvcicsCi0gICAgICAgICAgICdCYWRPcHRpb25FcnJvciddCisgICAgICAgICAgICdCYWRPcHRpb25FcnJvcicsCisgICAgICAgICAgICdjaGVja19jaG9pY2UnXQogCiBfX2NvcHlyaWdodF9fID0gIiIiCiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNiBHcmVnb3J5IFAuIFdhcmQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpkaWZmIC0tZ2l0IGEvTGliL29zLnB5IGIvTGliL29zLnB5CmluZGV4IGI0YzY1MWQuLjczNzlkYWQgMTAwNjQ0Ci0tLSBhL0xpYi9vcy5weQorKysgYi9MaWIvb3MucHkKQEAgLTEsOSArMSw5IEBACiByIiIiT1Mgcm91dGluZXMgZm9yIE5UIG9yIFBvc2l4IGRlcGVuZGluZyBvbiB3aGF0IHN5c3RlbSB3ZSdyZSBvbi4KIAogVGhpcyBleHBvcnRzOgotICAtIGFsbCBmdW5jdGlvbnMgZnJvbSBwb3NpeCwgbnQgb3IgY2UsIGUuZy4gdW5saW5rLCBzdGF0LCBldGMuCisgIC0gYWxsIGZ1bmN0aW9ucyBmcm9tIHBvc2l4IG9yIG50LCBlLmcuIHVubGluaywgc3RhdCwgZXRjLgogICAtIG9zLnBhdGggaXMgZWl0aGVyIHBvc2l4cGF0aCBvciBudHBhdGgKLSAgLSBvcy5uYW1lIGlzIGVpdGhlciAncG9zaXgnLCAnbnQnIG9yICdjZScuCisgIC0gb3MubmFtZSBpcyBlaXRoZXIgJ3Bvc2l4JyBvciAnbnQnCiAgIC0gb3MuY3VyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKCcuJyBvciAnOicpCiAgIC0gb3MucGFyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFyZW50IGRpcmVjdG9yeSAoJy4uJyBvciAnOjonKQogICAtIG9zLnNlcCBpcyB0aGUgKG9yIGEgbW9zdCBjb21tb24pIHBhdGhuYW1lIHNlcGFyYXRvciAoJy8nIG9yICc6JyBvciAnXFwnKQpAQCAtMjIsNyArMjIsNyBAQAogIiIiCiAKICMnCi0KK2ltcG9ydCBhYmMKIGltcG9ydCBzeXMsIGVycm5vCiBpbXBvcnQgc3RhdCBhcyBzdAogCkBAIC04NSwyNyArODUsNiBAQAogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogCi1lbGlmICdjZScgaW4gX25hbWVzOgotICAgIG5hbWUgPSAnY2UnCi0gICAgbGluZXNlcCA9ICdcclxuJwotICAgIGZyb20gY2UgaW1wb3J0ICoKLSAgICB0cnk6Ci0gICAgICAgIGZyb20gY2UgaW1wb3J0IF9leGl0Ci0gICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0gICAgIyBXZSBjYW4gdXNlIHRoZSBzdGFuZGFyZCBXaW5kb3dzIHBhdGguCi0gICAgaW1wb3J0IG50cGF0aCBhcyBwYXRoCi0KLSAgICBpbXBvcnQgY2UKLSAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChjZSkpCi0gICAgZGVsIGNlCi0KLSAgICB0cnk6Ci0gICAgICAgIGZyb20gY2UgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotCiBlbHNlOgogICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBvcyBzcGVjaWZpYyBtb2R1bGUgZm91bmQnKQogCkBAIC0zNTMsOSArMzMyLDEwIEBACiAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCiAKICAgICAiIiIKLQorICAgIHRvcCA9IGZzcGF0aCh0b3ApCiAgICAgZGlycyA9IFtdCiAgICAgbm9uZGlycyA9IFtdCisgICAgd2Fsa19kaXJzID0gW10KIAogICAgICMgV2UgbWF5IG5vdCBoYXZlIHJlYWQgcGVybWlzc2lvbiBmb3IgdG9wLCBpbiB3aGljaCBjYXNlIHdlIGNhbid0CiAgICAgIyBnZXQgYSBsaXN0IG9mIHRoZSBmaWxlcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zLiAgb3Mud2FsawpAQCAtMzY5LDQyICszNDksNTIgQEAKICAgICAgICAgICAgICMgTm90ZSB0aGF0IHNjYW5kaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQogICAgICAgICAgICAgIyB0byBlYXJsaWVyIGltcG9ydC0qLgogICAgICAgICAgICAgc2NhbmRpcl9pdCA9IHNjYW5kaXIodG9wKQotICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyX2l0KQogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgogICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb25lcnJvcihlcnJvcikKICAgICAgICAgcmV0dXJuCiAKLSAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaXNfZGlyID0gZW50cnkuaXNfZGlyKCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAjIElmIGlzX2RpcigpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZSBlbnRyeSBpcyBub3QKLSAgICAgICAgICAgICMgYSBkaXJlY3RvcnksIHNhbWUgYmVoYXZpb3VyIHRoYW4gb3MucGF0aC5pc2RpcigpLgotICAgICAgICAgICAgaXNfZGlyID0gRmFsc2UKLQotICAgICAgICBpZiBpc19kaXI6Ci0gICAgICAgICAgICBkaXJzLmFwcGVuZChlbnRyeS5uYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQoZW50cnkubmFtZSkKLQotICAgICAgICBpZiBub3QgdG9wZG93biBhbmQgaXNfZGlyOgotICAgICAgICAgICAgIyBCb3R0b20tdXA6IHJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3J5LCBidXQgZXhjbHVkZSBzeW1saW5rcyB0bwotICAgICAgICAgICAgIyBkaXJlY3RvcmllcyBpZiBmb2xsb3dsaW5rcyBpcyBGYWxzZQotICAgICAgICAgICAgaWYgZm9sbG93bGlua3M6Ci0gICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKKyAgICB3aXRoIHNjYW5kaXJfaXQ6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gZW50cnkuaXNfc3ltbGluaygpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgSWYgaXNfc3ltbGluaygpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZQotICAgICAgICAgICAgICAgICAgICAjIGVudHJ5IGlzIG5vdCBhIHN5bWJvbGljIGxpbmssIHNhbWUgYmVoYXZpb3VyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgIyBvcy5wYXRoLmlzbGluaygpLgotICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gRmFsc2UKLSAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBub3QgaXNfc3ltbGluaworICAgICAgICAgICAgICAgICAgICBlbnRyeSA9IG5leHQoc2NhbmRpcl9pdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgorICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgICAgIGlmIHdhbGtfaW50bzoKLSAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsoZW50cnkucGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXNfZGlyID0gZW50cnkuaXNfZGlyKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICMgSWYgaXNfZGlyKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlIGVudHJ5IGlzIG5vdAorICAgICAgICAgICAgICAgICMgYSBkaXJlY3RvcnksIHNhbWUgYmVoYXZpb3VyIHRoYW4gb3MucGF0aC5pc2RpcigpLgorICAgICAgICAgICAgICAgIGlzX2RpciA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIGlzX2RpcjoKKyAgICAgICAgICAgICAgICBkaXJzLmFwcGVuZChlbnRyeS5uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBub25kaXJzLmFwcGVuZChlbnRyeS5uYW1lKQorCisgICAgICAgICAgICBpZiBub3QgdG9wZG93biBhbmQgaXNfZGlyOgorICAgICAgICAgICAgICAgICMgQm90dG9tLXVwOiByZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yeSwgYnV0IGV4Y2x1ZGUgc3ltbGlua3MgdG8KKyAgICAgICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGlmIGZvbGxvd2xpbmtzIGlzIEZhbHNlCisgICAgICAgICAgICAgICAgaWYgZm9sbG93bGlua3M6CisgICAgICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gZW50cnkuaXNfc3ltbGluaygpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBpc19zeW1saW5rKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVudHJ5IGlzIG5vdCBhIHN5bWJvbGljIGxpbmssIHNhbWUgYmVoYXZpb3VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICMgb3MucGF0aC5pc2xpbmsoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBub3QgaXNfc3ltbGluaworCisgICAgICAgICAgICAgICAgaWYgd2Fsa19pbnRvOgorICAgICAgICAgICAgICAgICAgICB3YWxrX2RpcnMuYXBwZW5kKGVudHJ5LnBhdGgpCiAKICAgICAjIFlpZWxkIGJlZm9yZSByZWN1cnNpb24gaWYgZ29pbmcgdG9wIGRvd24KICAgICBpZiB0b3Bkb3duOgpAQCAtNDIxLDYgKzQxMSw5IEBACiAgICAgICAgICAgICBpZiBmb2xsb3dsaW5rcyBvciBub3QgaXNsaW5rKG5ld19wYXRoKToKICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQogICAgIGVsc2U6CisgICAgICAgICMgUmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcmllcworICAgICAgICBmb3IgbmV3X3BhdGggaW4gd2Fsa19kaXJzOgorICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKICAgICAgICAgIyBZaWVsZCBhZnRlciByZWN1cnNpb24gaWYgZ29pbmcgYm90dG9tIHVwCiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwogCkBAIC00NjcsMTAgKzQ2MCwyMyBAQAogICAgICAgICBzdGF0ID0gc2VsZi5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKICAgICAgICAgcmV0dXJuIHN0LlNfSVNMTksoc3RhdC5zdF9tb2RlKQogCi1kZWYgX2R1bW15X3NjYW5kaXIoZGlyKToKK2NsYXNzIF9kdW1teV9zY2FuZGlyOgogICAgICMgbGlzdGRpci1iYXNlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYnl0ZXMgcGF0Y2hlcyBvbiBXaW5kb3dzCi0gICAgZm9yIG5hbWUgaW4gbGlzdGRpcihkaXIpOgotICAgICAgICB5aWVsZCBfRHVtbXlEaXJFbnRyeShkaXIsIG5hbWUpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpcik6CisgICAgICAgIHNlbGYuZGlyID0gZGlyCisgICAgICAgIHNlbGYuaXQgPSBpdGVyKGxpc3RkaXIoZGlyKSkKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIF9EdW1teURpckVudHJ5KHNlbGYuZGlyLCBuZXh0KHNlbGYuaXQpKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuaXQgPSBpdGVyKCgpKQogCiBfX2FsbF9fLmFwcGVuZCgid2FsayIpCiAKQEAgLTUwOSw2ICs1MTUsOCBAQAogICAgICAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCiAgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0b3AsIGludCkgb3Igbm90IGhhc2F0dHIodG9wLCAnX19pbmRleF9fJyk6CisgICAgICAgICAgICB0b3AgPSBmc3BhdGgodG9wKQogICAgICAgICAjIE5vdGU6IFRvIGd1YXJkIGFnYWluc3Qgc3ltbGluayByYWNlcywgd2UgdXNlIHRoZSBzdGFuZGFyZAogICAgICAgICAjIGxzdGF0KCkvb3BlbigpL2ZzdGF0KCkgdHJpY2suCiAgICAgICAgIG9yaWdfc3QgPSBzdGF0KHRvcCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9ZGlyX2ZkKQpAQCAtODQzLDM2ICs4NTEsMzEgQEAKIAogZGVmIF9mc2NvZGVjKCk6CiAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKLSAgICBpZiBlbmNvZGluZyA9PSAnbWJjcyc6Ci0gICAgICAgIGVycm9ycyA9ICdzdHJpY3QnCi0gICAgZWxzZToKLSAgICAgICAgZXJyb3JzID0gJ3N1cnJvZ2F0ZWVzY2FwZScKKyAgICBlcnJvcnMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycygpCiAKICAgICBkZWYgZnNlbmNvZGUoZmlsZW5hbWUpOgorICAgICAgICAiIiJFbmNvZGUgZmlsZW5hbWUgKGFuIG9zLlBhdGhMaWtlLCBieXRlcywgb3Igc3RyKSB0byB0aGUgZmlsZXN5c3RlbQorICAgICAgICBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIHJldHVybiBieXRlcyB1bmNoYW5nZWQuCisgICAgICAgIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcworICAgICAgICAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KICAgICAgICAgIiIiCi0gICAgICAgIEVuY29kZSBmaWxlbmFtZSB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yCi0gICAgICAgIGhhbmRsZXIsIHJldHVybiBieXRlcyB1bmNoYW5nZWQuIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmCi0gICAgICAgIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIGJ5dGVzKToKLSAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6CisgICAgICAgIGZpbGVuYW1lID0gZnNwYXRoKGZpbGVuYW1lKSAgIyBEb2VzIHR5cGUtY2hlY2tpbmcgb2YgYGZpbGVuYW1lYC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgc3RyKToKICAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0IGJ5dGVzIG9yIHN0ciwgbm90ICVzIiAlIHR5cGUoZmlsZW5hbWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKICAgICBkZWYgZnNkZWNvZGUoZmlsZW5hbWUpOgorICAgICAgICAiIiJEZWNvZGUgZmlsZW5hbWUgKGFuIG9zLlBhdGhMaWtlLCBieXRlcywgb3Igc3RyKSBmcm9tIHRoZSBmaWxlc3lzdGVtCisgICAgICAgIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlciwgcmV0dXJuIHN0ciB1bmNoYW5nZWQuIE9uCisgICAgICAgIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcworICAgICAgICAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KICAgICAgICAgIiIiCi0gICAgICAgIERlY29kZSBmaWxlbmFtZSBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IKLSAgICAgICAgaGFuZGxlciwgcmV0dXJuIHN0ciB1bmNoYW5nZWQuIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmCi0gICAgICAgIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBieXRlcyk6CisgICAgICAgIGZpbGVuYW1lID0gZnNwYXRoKGZpbGVuYW1lKSAgIyBEb2VzIHR5cGUtY2hlY2tpbmcgb2YgYGZpbGVuYW1lYC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgYnl0ZXMpOgogICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3QgYnl0ZXMgb3Igc3RyLCBub3QgJXMiICUgdHlwZShmaWxlbmFtZSkuX19uYW1lX18pCisgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIHJldHVybiBmc2VuY29kZSwgZnNkZWNvZGUKIApAQCAtMTA3MCwzICsxMDczLDU1IEBACiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBmZCB0eXBlICglcywgZXhwZWN0ZWQgaW50ZWdlcikiICUgdHlwZShmZCkpCiAgICAgaW1wb3J0IGlvCiAgICAgcmV0dXJuIGlvLm9wZW4oZmQsICphcmdzLCAqKmt3YXJncykKKworCisjIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCBtYWtlIHN1cmUgdGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSB3aGVuIHRoZSBDCisjIGltcGxlbWVudGF0aW9uIGV4aXN0cy4KK2RlZiBfZnNwYXRoKHBhdGgpOgorICAgICIiIlJldHVybiB0aGUgcGF0aCByZXByZXNlbnRhdGlvbiBvZiBhIHBhdGgtbGlrZSBvYmplY3QuCisKKyAgICBJZiBzdHIgb3IgYnl0ZXMgaXMgcGFzc2VkIGluLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuIE90aGVyd2lzZSB0aGUKKyAgICBvcy5QYXRoTGlrZSBpbnRlcmZhY2UgaXMgdXNlZCB0byBnZXQgdGhlIHBhdGggcmVwcmVzZW50YXRpb24uIElmIHRoZQorICAgIHBhdGggcmVwcmVzZW50YXRpb24gaXMgbm90IHN0ciBvciBieXRlcywgVHlwZUVycm9yIGlzIHJhaXNlZC4gSWYgdGhlCisgICAgcHJvdmlkZWQgcGF0aCBpcyBub3Qgc3RyLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIFR5cGVFcnJvciBpcyByYWlzZWQuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShwYXRoLCAoc3RyLCBieXRlcykpOgorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgIyBXb3JrIGZyb20gdGhlIG9iamVjdCdzIHR5cGUgdG8gbWF0Y2ggbWV0aG9kIHJlc29sdXRpb24gb2Ygb3RoZXIgbWFnaWMKKyAgICAjIG1ldGhvZHMuCisgICAgcGF0aF90eXBlID0gdHlwZShwYXRoKQorICAgIHRyeToKKyAgICAgICAgcGF0aF9yZXByID0gcGF0aF90eXBlLl9fZnNwYXRoX18ocGF0aCkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIGlmIGhhc2F0dHIocGF0aF90eXBlLCAnX19mc3BhdGhfXycpOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgc3RyLCBieXRlcyBvciBvcy5QYXRoTGlrZSBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICIgKyBwYXRoX3R5cGUuX19uYW1lX18pCisgICAgaWYgaXNpbnN0YW5jZShwYXRoX3JlcHIsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIHJldHVybiBwYXRoX3JlcHIKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIHt9Ll9fZnNwYXRoX18oKSB0byByZXR1cm4gc3RyIG9yIGJ5dGVzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IHt9Ii5mb3JtYXQocGF0aF90eXBlLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUocGF0aF9yZXByKS5fX25hbWVfXykpCisKKyMgSWYgdGhlcmUgaXMgbm8gQyBpbXBsZW1lbnRhdGlvbiwgbWFrZSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbiB0aGUKKyMgaW1wbGVtZW50YXRpb24gYXMgdHJhbnNwYXJlbnRseSBhcyBwb3NzaWJsZS4KK2lmIG5vdCBfZXhpc3RzKCdmc3BhdGgnKToKKyAgICBmc3BhdGggPSBfZnNwYXRoCisgICAgZnNwYXRoLl9fbmFtZV9fID0gImZzcGF0aCIKKworCitjbGFzcyBQYXRoTGlrZShhYmMuQUJDKToKKworICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcGxlbWVudGluZyB0aGUgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbC4iIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgc3ViY2xhc3MpOgorICAgICAgICByZXR1cm4gaGFzYXR0cihzdWJjbGFzcywgJ19fZnNwYXRoX18nKQpkaWZmIC0tZ2l0IGEvTGliL3BhdGhsaWIucHkgYi9MaWIvcGF0aGxpYi5weQppbmRleCAxNDgwZTJmLi4xYjVhYjM4IDEwMDY0NAotLS0gYS9MaWIvcGF0aGxpYi5weQorKysgYi9MaWIvcGF0aGxpYi5weQpAQCAtMzg1LDYgKzM4NSw4IEBACiAKICAgICBsaXN0ZGlyID0gX3dyYXBfc3RyZnVuYyhvcy5saXN0ZGlyKQogCisgICAgc2NhbmRpciA9IF93cmFwX3N0cmZ1bmMob3Muc2NhbmRpcikKKwogICAgIGNobW9kID0gX3dyYXBfc3RyZnVuYyhvcy5jaG1vZCkKIAogICAgIGlmIGhhc2F0dHIob3MsICJsY2htb2QiKToKQEAgLTQyOSwyNSArNDMxLDYgQEAKICMgR2xvYmJpbmcgaGVscGVycwogIwogCi1AY29udGV4dG1hbmFnZXIKLWRlZiBfY2FjaGVkKGZ1bmMpOgotICAgIHRyeToKLSAgICAgICAgZnVuYy5fX2NhY2hlZF9fCi0gICAgICAgIHlpZWxkIGZ1bmMKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIGNhY2hlID0ge30KLSAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVthcmdzXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHZhbHVlID0gY2FjaGVbYXJnc10gPSBmdW5jKCphcmdzKQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQotICAgICAgICB3cmFwcGVyLl9fY2FjaGVkX18gPSBUcnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkIHdyYXBwZXIKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKLQogZGVmIF9tYWtlX3NlbGVjdG9yKHBhdHRlcm5fcGFydHMpOgogICAgIHBhdCA9IHBhdHRlcm5fcGFydHNbMF0KICAgICBjaGlsZF9wYXJ0cyA9IHBhdHRlcm5fcGFydHNbMTpdCkBAIC00NzMsOCArNDU2LDEwIEBACiAgICAgICAgIHNlbGYuY2hpbGRfcGFydHMgPSBjaGlsZF9wYXJ0cwogICAgICAgICBpZiBjaGlsZF9wYXJ0czoKICAgICAgICAgICAgIHNlbGYuc3VjY2Vzc29yID0gX21ha2Vfc2VsZWN0b3IoY2hpbGRfcGFydHMpCisgICAgICAgICAgICBzZWxmLmRpcm9ubHkgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9UZXJtaW5hdGluZ1NlbGVjdG9yKCkKKyAgICAgICAgICAgIHNlbGYuZGlyb25seSA9IEZhbHNlCiAKICAgICBkZWYgc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgpOgogICAgICAgICAiIiJJdGVyYXRlIG92ZXIgYWxsIGNoaWxkIHBhdGhzIG9mIGBwYXJlbnRfcGF0aGAgbWF0Y2hlZCBieSB0aGlzCkBAIC00ODIsMTMgKzQ2NywxNSBAQAogICAgICAgICBwYXRoX2NscyA9IHR5cGUocGFyZW50X3BhdGgpCiAgICAgICAgIGlzX2RpciA9IHBhdGhfY2xzLmlzX2RpcgogICAgICAgICBleGlzdHMgPSBwYXRoX2Nscy5leGlzdHMKLSAgICAgICAgbGlzdGRpciA9IHBhcmVudF9wYXRoLl9hY2Nlc3Nvci5saXN0ZGlyCi0gICAgICAgIHJldHVybiBzZWxmLl9zZWxlY3RfZnJvbShwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpCisgICAgICAgIHNjYW5kaXIgPSBwYXJlbnRfcGF0aC5fYWNjZXNzb3Iuc2NhbmRpcgorICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKKyAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQorICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0X2Zyb20ocGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKQogCiAKIGNsYXNzIF9UZXJtaW5hdGluZ1NlbGVjdG9yOgogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgeWllbGQgcGFyZW50X3BhdGgKIAogCkBAIC00OTgsMTMgKzQ4NSwxMSBAQAogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgoc2VsZi5uYW1lKQotICAgICAgICAgICAgaWYgZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgICAgICAgICBpZiAoaXNfZGlyIGlmIHNlbGYuZGlyb25seSBlbHNlIGV4aXN0cykocGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCkBAIC01MTYsMTcgKzUwMSwxOCBAQAogICAgICAgICBzZWxmLnBhdCA9IHJlLmNvbXBpbGUoZm5tYXRjaC50cmFuc2xhdGUocGF0KSkKICAgICAgICAgX1NlbGVjdG9yLl9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzKQogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBjZiA9IHBhcmVudF9wYXRoLl9mbGF2b3VyLmNhc2Vmb2xkCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBjYXNlZm9sZGVkID0gY2YobmFtZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnBhdC5tYXRjaChjYXNlZm9sZGVkKToKLSAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKKyAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXIocGFyZW50X3BhdGgpKQorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuZGlyb25seSBvciBlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGVudHJ5Lm5hbWUKKyAgICAgICAgICAgICAgICAgICAgY2FzZWZvbGRlZCA9IGNmKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucGF0Lm1hdGNoKGNhc2Vmb2xkZWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTUzNywzMiArNTIzLDMwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdCwgY2hpbGRfcGFydHMpOgogICAgICAgICBfU2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpCiAKLSAgICBkZWYgX2l0ZXJhdGVfZGlyZWN0b3JpZXMoc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgZGVmIF9pdGVyYXRlX2RpcmVjdG9yaWVzKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIHNjYW5kaXIpOgogICAgICAgICB5aWVsZCBwYXJlbnRfcGF0aAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChuYW1lKQotICAgICAgICAgICAgICAgIGlmIGlzX2RpcihwYXRoKSBhbmQgbm90IHBhdGguaXNfc3ltbGluaygpOgotICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyKHBhcmVudF9wYXRoKSkKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICAgICAgICAgIGlmIGVudHJ5LmlzX2RpcigpIGFuZCBub3QgZW50cnkuaXNfc3ltbGluaygpOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChlbnRyeS5uYW1lKQorICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2Rpciwgc2NhbmRpcik6CiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgd2l0aCBfY2FjaGVkKGxpc3RkaXIpIGFzIGxpc3RkaXI6Ci0gICAgICAgICAgICAgICAgeWllbGRlZCA9IHNldCgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzb3Jfc2VsZWN0ID0gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tCi0gICAgICAgICAgICAgICAgICAgIGZvciBzdGFydGluZ19wb2ludCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhcmVudF9wYXRoLCBpc19kaXIsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHlpZWxkZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICB5aWVsZGVkLmNsZWFyKCkKKyAgICAgICAgICAgIHlpZWxkZWQgPSBzZXQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3Nvcl9zZWxlY3QgPSBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20KKyAgICAgICAgICAgICAgICBmb3Igc3RhcnRpbmdfcG9pbnQgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXJlbnRfcGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcCBub3QgaW4geWllbGRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGRlZC5jbGVhcigpCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtNjM0LDEzICs2MTgsMTYgQEAKICAgICAgICAgZm9yIGEgaW4gYXJnczoKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgUHVyZVBhdGgpOgogICAgICAgICAgICAgICAgIHBhcnRzICs9IGEuX3BhcnRzCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKLSAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCi0gICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHN0cihhKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgcGF0aCBvciBzdHIgb2JqZWN0LCBub3QgJXIiCi0gICAgICAgICAgICAgICAgICAgICUgdHlwZShhKSkKKyAgICAgICAgICAgICAgICBhID0gb3MuZnNwYXRoKGEpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgorICAgICAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCisgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChzdHIoYSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBhIHN0ciBvYmplY3Qgb3IgYW4gb3MuUGF0aExpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCByZXR1cm5pbmcgc3RyLCBub3QgJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUoYSkpCiAgICAgICAgIHJldHVybiBjbHMuX2ZsYXZvdXIucGFyc2VfcGFydHMocGFydHMpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTY5Myw2ICs2ODAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJ0cykgb3IgJy4nCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RyCiAKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQorCiAgICAgZGVmIGFzX3Bvc2l4KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aCB3aXRoIGZvcndhcmQgKC8pCiAgICAgICAgIHNsYXNoZXMuIiIiCkBAIC05NDMsNiArOTMzLDEwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyMgQ2FuJ3Qgc3ViY2xhc3Mgb3MuUGF0aExpa2UgZnJvbSBQdXJlUGF0aCBhbmQga2VlcCB0aGUgY29uc3RydWN0b3IKKyMgb3B0aW1pemF0aW9ucyBpbiBQdXJlUGF0aC5fcGFyc2VfYXJncygpLgorb3MuUGF0aExpa2UucmVnaXN0ZXIoUHVyZVBhdGgpCisKIAogY2xhc3MgUHVyZVBvc2l4UGF0aChQdXJlUGF0aCk6CiAgICAgX2ZsYXZvdXIgPSBfcG9zaXhfZmxhdm91cgpkaWZmIC0tZ2l0IGEvTGliL3BkYi5weSBiL0xpYi9wZGIucHkKaW5kZXggYjExYWMwYS4uN2ViNzhiOSAxMDA3NTUKLS0tIGEvTGliL3BkYi5weQorKysgYi9MaWIvcGRiLnB5CkBAIC01Miw3ICs1Miw4IEBACiBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuIHR5cGVkIGF0IHRoZQogZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBhbGlhc2VzLiAgSWYgYm90aAogZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgYW5kIGFsaWFzZXMKLWRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuCitkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLiAgVGhpcyBiZWhhdmlvciBjYW4gYmUKK2Rpc2FibGVkIGJ5IHBhc3NpbmcgdGhlICJyZWFkcmM9RmFsc2UiIGFyZ3VtZW50IHRvIHRoZSBQZGIgY29uc3RydWN0b3IuCiAKIEFzaWRlIGZyb20gYWxpYXNlcywgdGhlIGRlYnVnZ2VyIGlzIG5vdCBkaXJlY3RseSBwcm9ncmFtbWFibGU7IGJ1dCBpdAogaXMgaW1wbGVtZW50ZWQgYXMgYSBjbGFzcyBmcm9tIHdoaWNoIHlvdSBjYW4gZGVyaXZlIHlvdXIgb3duIGRlYnVnZ2VyCkBAIC0xMzUsNyArMTM2LDcgQEAKIGNsYXNzIFBkYihiZGIuQmRiLCBjbWQuQ21kKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21wbGV0ZWtleT0ndGFiJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwKLSAgICAgICAgICAgICAgICAgbm9zaWdpbnQ9RmFsc2UpOgorICAgICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSwgcmVhZHJjPVRydWUpOgogICAgICAgICBiZGIuQmRiLl9faW5pdF9fKHNlbGYsIHNraXA9c2tpcCkKICAgICAgICAgY21kLkNtZC5fX2luaXRfXyhzZWxmLCBjb21wbGV0ZWtleSwgc3RkaW4sIHN0ZG91dCkKICAgICAgICAgaWYgc3Rkb3V0OgpAQCAtMTU4LDE4ICsxNTksMTkgQEAKIAogICAgICAgICAjIFJlYWQgJEhPTUUvLnBkYnJjIGFuZCAuLy5wZGJyYwogICAgICAgICBzZWxmLnJjTGluZXMgPSBbXQotICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgIGVudkhvbWUgPSBvcy5lbnZpcm9uWydIT01FJ10KKyAgICAgICAgaWYgcmVhZHJjOgorICAgICAgICAgICAgaWYgJ0hPTUUnIGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgZW52SG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihlbnZIb21lLCAiLnBkYnJjIikpIGFzIHJjRmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmNMaW5lcy5leHRlbmQocmNGaWxlKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihlbnZIb21lLCAiLnBkYnJjIikpIGFzIHJjRmlsZToKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oIi5wZGJyYyIpIGFzIHJjRmlsZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3BlbigiLnBkYnJjIikgYXMgcmNGaWxlOgotICAgICAgICAgICAgICAgIHNlbGYucmNMaW5lcy5leHRlbmQocmNGaWxlKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBzZWxmLmNvbW1hbmRzID0ge30gIyBhc3NvY2lhdGVzIGEgY29tbWFuZCBsaXN0IHRvIGJyZWFrcG9pbnQgbnVtYmVycwogICAgICAgICBzZWxmLmNvbW1hbmRzX2RvcHJvbXB0ID0ge30gIyBmb3IgZWFjaCBicCBudW0sIHRlbGxzIGlmIHRoZSBwcm9tcHQKZGlmZiAtLWdpdCBhL0xpYi9waWNrbGUucHkgYi9MaWIvcGlja2xlLnB5CmluZGV4IDA0MGVjYjIuLmM4MzcwYzkgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGUucHkKKysrIGIvTGliL3BpY2tsZS5weQpAQCAtMjcsNiArMjcsNyBAQAogZnJvbSBjb3B5cmVnIGltcG9ydCBkaXNwYXRjaF90YWJsZQogZnJvbSBjb3B5cmVnIGltcG9ydCBfZXh0ZW5zaW9uX3JlZ2lzdHJ5LCBfaW52ZXJ0ZWRfcmVnaXN0cnksIF9leHRlbnNpb25fY2FjaGUKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiBpbXBvcnQgc3lzCiBmcm9tIHN5cyBpbXBvcnQgbWF4c2l6ZQogZnJvbSBzdHJ1Y3QgaW1wb3J0IHBhY2ssIHVucGFjawpAQCAtNTQ4LDcgKzU0OSw3IEBACiAgICAgICAgIHdyaXRlID0gc2VsZi53cml0ZQogCiAgICAgICAgIGZ1bmNfbmFtZSA9IGdldGF0dHIoZnVuYywgIl9fbmFtZV9fIiwgIiIpCi0gICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNCBhbmQgZnVuY19uYW1lID09ICJfX25ld29ial9leF9fIjoKKyAgICAgICAgaWYgc2VsZi5wcm90byA+PSAyIGFuZCBmdW5jX25hbWUgPT0gIl9fbmV3b2JqX2V4X18iOgogICAgICAgICAgICAgY2xzLCBhcmdzLCBrd2FyZ3MgPSBhcmdzCiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihjbHMsICJfX25ld19fIik6CiAgICAgICAgICAgICAgICAgcmFpc2UgUGlja2xpbmdFcnJvcigiYXJnc1swXSBmcm9tIHt9IGFyZ3MgaGFzIG5vIF9fbmV3X18iCkBAIC01NTYsMTAgKzU1NywxNiBAQAogICAgICAgICAgICAgaWYgb2JqIGlzIG5vdCBOb25lIGFuZCBjbHMgaXMgbm90IG9iai5fX2NsYXNzX186CiAgICAgICAgICAgICAgICAgcmFpc2UgUGlja2xpbmdFcnJvcigiYXJnc1swXSBmcm9tIHt9IGFyZ3MgaGFzIHRoZSB3cm9uZyBjbGFzcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZnVuY19uYW1lKSkKLSAgICAgICAgICAgIHNhdmUoY2xzKQotICAgICAgICAgICAgc2F2ZShhcmdzKQotICAgICAgICAgICAgc2F2ZShrd2FyZ3MpCi0gICAgICAgICAgICB3cml0ZShORVdPQkpfRVgpCisgICAgICAgICAgICBpZiBzZWxmLnByb3RvID49IDQ6CisgICAgICAgICAgICAgICAgc2F2ZShjbHMpCisgICAgICAgICAgICAgICAgc2F2ZShhcmdzKQorICAgICAgICAgICAgICAgIHNhdmUoa3dhcmdzKQorICAgICAgICAgICAgICAgIHdyaXRlKE5FV09CSl9FWCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnVuYyA9IHBhcnRpYWwoY2xzLl9fbmV3X18sIGNscywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIHNhdmUoZnVuYykKKyAgICAgICAgICAgICAgICBzYXZlKCgpKQorICAgICAgICAgICAgICAgIHdyaXRlKFJFRFVDRSkKICAgICAgICAgZWxpZiBzZWxmLnByb3RvID49IDIgYW5kIGZ1bmNfbmFtZSA9PSAiX19uZXdvYmpfXyI6CiAgICAgICAgICAgICAjIEEgX19yZWR1Y2VfXyBpbXBsZW1lbnRhdGlvbiBjYW4gZGlyZWN0IHByb3RvY29sIDIgb3IgbmV3ZXIgdG8KICAgICAgICAgICAgICMgdXNlIHRoZSBtb3JlIGVmZmljaWVudCBORVdPQkogb3Bjb2RlLCB3aGlsZSBzdGlsbApAQCAtMTAyOCw3ICsxMDM1LDcgQEAKICAgICAgICAgc2VsZi5fdW5mcmFtZXIgPSBfVW5mcmFtZXIoc2VsZi5fZmlsZV9yZWFkLCBzZWxmLl9maWxlX3JlYWRsaW5lKQogICAgICAgICBzZWxmLnJlYWQgPSBzZWxmLl91bmZyYW1lci5yZWFkCiAgICAgICAgIHNlbGYucmVhZGxpbmUgPSBzZWxmLl91bmZyYW1lci5yZWFkbGluZQotICAgICAgICBzZWxmLm1hcmsgPSBvYmplY3QoKSAjIGFueSBuZXcgdW5pcXVlIG9iamVjdAorICAgICAgICBzZWxmLm1ldGFzdGFjayA9IFtdCiAgICAgICAgIHNlbGYuc3RhY2sgPSBbXQogICAgICAgICBzZWxmLmFwcGVuZCA9IHNlbGYuc3RhY2suYXBwZW5kCiAgICAgICAgIHNlbGYucHJvdG8gPSAwCkBAIC0xMDQ0LDIwICsxMDUxLDEyIEBACiAgICAgICAgIGV4Y2VwdCBfU3RvcCBhcyBzdG9waW5zdDoKICAgICAgICAgICAgIHJldHVybiBzdG9waW5zdC52YWx1ZQogCi0gICAgIyBSZXR1cm4gbGFyZ2VzdCBpbmRleCBrIHN1Y2ggdGhhdCBzZWxmLnN0YWNrW2tdIGlzIHNlbGYubWFyay4KLSAgICAjIElmIHRoZSBzdGFjayBkb2Vzbid0IGNvbnRhaW4gYSBtYXJrLCBldmVudHVhbGx5IHJhaXNlcyBJbmRleEVycm9yLgotICAgICMgVGhpcyBjb3VsZCBiZSBzcGVkIGJ5IG1haW50YWluaW5nIGFub3RoZXIgc3RhY2ssIG9mIGluZGljZXMgYXQgd2hpY2gKLSAgICAjIHRoZSBtYXJrIGFwcGVhcnMuICBGb3IgdGhhdCBtYXR0ZXIsIHRoZSBsYXR0ZXIgc3RhY2sgd291bGQgc3VmZmljZSwKLSAgICAjIGFuZCB3ZSB3b3VsZG4ndCBuZWVkIHRvIHB1c2ggbWFyayBvYmplY3RzIG9uIHNlbGYuc3RhY2sgYXQgYWxsLgotICAgICMgRG9pbmcgc28gaXMgcHJvYmFibHkgYSBnb29kIHRoaW5nLCB0aG91Z2gsIHNpbmNlIGlmIHRoZSBwaWNrbGUgaXMKLSAgICAjIGNvcnJ1cHQgKG9yIGhvc3RpbGUpIHdlIG1heSBnZXQgYSBjbHVlIGZyb20gZmluZGluZyBzZWxmLm1hcmsgZW1iZWRkZWQKLSAgICAjIGluIHVucGlja2xlZCBvYmplY3RzLgotICAgIGRlZiBtYXJrZXIoc2VsZik6Ci0gICAgICAgIHN0YWNrID0gc2VsZi5zdGFjawotICAgICAgICBtYXJrID0gc2VsZi5tYXJrCi0gICAgICAgIGsgPSBsZW4oc3RhY2spLTEKLSAgICAgICAgd2hpbGUgc3RhY2tba10gaXMgbm90IG1hcms6IGsgPSBrLTEKLSAgICAgICAgcmV0dXJuIGsKKyAgICAjIFJldHVybiBhIGxpc3Qgb2YgaXRlbXMgcHVzaGVkIGluIHRoZSBzdGFjayBhZnRlciBsYXN0IE1BUksgaW5zdHJ1Y3Rpb24uCisgICAgZGVmIHBvcF9tYXJrKHNlbGYpOgorICAgICAgICBpdGVtcyA9IHNlbGYuc3RhY2sKKyAgICAgICAgc2VsZi5zdGFjayA9IHNlbGYubWV0YXN0YWNrLnBvcCgpCisgICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5zdGFjay5hcHBlbmQKKyAgICAgICAgcmV0dXJuIGl0ZW1zCiAKICAgICBkZWYgcGVyc2lzdGVudF9sb2FkKHNlbGYsIHBpZCk6CiAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigidW5zdXBwb3J0ZWQgcGVyc2lzdGVudCBpZCBlbmNvdW50ZXJlZCIpCkBAIC0xMjM4LDggKzEyMzcsOCBAQAogICAgIGRpc3BhdGNoW1NIT1JUX0JJTlVOSUNPREVbMF1dID0gbG9hZF9zaG9ydF9iaW51bmljb2RlCiAKICAgICBkZWYgbG9hZF90dXBsZShzZWxmKToKLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgc2VsZi5zdGFja1trOl0gPSBbdHVwbGUoc2VsZi5zdGFja1trKzE6XSldCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNlbGYuYXBwZW5kKHR1cGxlKGl0ZW1zKSkKICAgICBkaXNwYXRjaFtUVVBMRVswXV0gPSBsb2FkX3R1cGxlCiAKICAgICBkZWYgbG9hZF9lbXB0eV90dXBsZShzZWxmKToKQEAgLTEyNzEsMjEgKzEyNzAsMjAgQEAKICAgICBkaXNwYXRjaFtFTVBUWV9TRVRbMF1dID0gbG9hZF9lbXB0eV9zZXQKIAogICAgIGRlZiBsb2FkX2Zyb3plbnNldChzZWxmKToKLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgc2VsZi5zdGFja1trOl0gPSBbZnJvemVuc2V0KHNlbGYuc3RhY2tbaysxOl0pXQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBzZWxmLmFwcGVuZChmcm96ZW5zZXQoaXRlbXMpKQogICAgIGRpc3BhdGNoW0ZST1pFTlNFVFswXV0gPSBsb2FkX2Zyb3plbnNldAogCiAgICAgZGVmIGxvYWRfbGlzdChzZWxmKToKLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgc2VsZi5zdGFja1trOl0gPSBbc2VsZi5zdGFja1trKzE6XV0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgc2VsZi5hcHBlbmQoaXRlbXMpCiAgICAgZGlzcGF0Y2hbTElTVFswXV0gPSBsb2FkX2xpc3QKIAogICAgIGRlZiBsb2FkX2RpY3Qoc2VsZik6Ci0gICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIGl0ZW1zID0gc2VsZi5zdGFja1trKzE6XQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQogICAgICAgICBkID0ge2l0ZW1zW2ldOiBpdGVtc1tpKzFdCiAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGl0ZW1zKSwgMil9Ci0gICAgICAgIHNlbGYuc3RhY2tbazpdID0gW2RdCisgICAgICAgIHNlbGYuYXBwZW5kKGQpCiAgICAgZGlzcGF0Y2hbRElDVFswXV0gPSBsb2FkX2RpY3QKIAogICAgICMgSU5TVCBhbmQgT0JKIGRpZmZlciBvbmx5IGluIGhvdyB0aGV5IGdldCBhIGNsYXNzIG9iamVjdC4gIEl0J3Mgbm90CkBAIC0xMjkzLDkgKzEyOTEsNyBAQAogICAgICMgcHJldmlvdXNseSBkaXZlcmdlZCBhbmQgZ3JldyBkaWZmZXJlbnQgYnVncy4KICAgICAjIGtsYXNzIGlzIHRoZSBjbGFzcyB0byBpbnN0YW50aWF0ZSwgYW5kIGsgcG9pbnRzIHRvIHRoZSB0b3Btb3N0IG1hcmsKICAgICAjIG9iamVjdCwgZm9sbG93aW5nIHdoaWNoIGFyZSB0aGUgYXJndW1lbnRzIGZvciBrbGFzcy5fX2luaXRfXy4KLSAgICBkZWYgX2luc3RhbnRpYXRlKHNlbGYsIGtsYXNzLCBrKToKLSAgICAgICAgYXJncyA9IHR1cGxlKHNlbGYuc3RhY2tbaysxOl0pCi0gICAgICAgIGRlbCBzZWxmLnN0YWNrW2s6XQorICAgIGRlZiBfaW5zdGFudGlhdGUoc2VsZiwga2xhc3MsIGFyZ3MpOgogICAgICAgICBpZiAoYXJncyBvciBub3QgaXNpbnN0YW5jZShrbGFzcywgdHlwZSkgb3IKICAgICAgICAgICAgIGhhc2F0dHIoa2xhc3MsICJfX2dldGluaXRhcmdzX18iKSk6CiAgICAgICAgICAgICB0cnk6CkBAIC0xMzExLDE0ICsxMzA3LDE0IEBACiAgICAgICAgIG1vZHVsZSA9IHNlbGYucmVhZGxpbmUoKVs6LTFdLmRlY29kZSgiYXNjaWkiKQogICAgICAgICBuYW1lID0gc2VsZi5yZWFkbGluZSgpWzotMV0uZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgIGtsYXNzID0gc2VsZi5maW5kX2NsYXNzKG1vZHVsZSwgbmFtZSkKLSAgICAgICAgc2VsZi5faW5zdGFudGlhdGUoa2xhc3MsIHNlbGYubWFya2VyKCkpCisgICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGtsYXNzLCBzZWxmLnBvcF9tYXJrKCkpCiAgICAgZGlzcGF0Y2hbSU5TVFswXV0gPSBsb2FkX2luc3QKIAogICAgIGRlZiBsb2FkX29iaihzZWxmKToKICAgICAgICAgIyBTdGFjayBpcyAuLi4gbWFya29iamVjdCBjbGFzc29iamVjdCBhcmcxIGFyZzIgLi4uCi0gICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIGtsYXNzID0gc2VsZi5zdGFjay5wb3AoaysxKQotICAgICAgICBzZWxmLl9pbnN0YW50aWF0ZShrbGFzcywgaykKKyAgICAgICAgYXJncyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBjbHMgPSBhcmdzLnBvcCgwKQorICAgICAgICBzZWxmLl9pbnN0YW50aWF0ZShjbHMsIGFyZ3MpCiAgICAgZGlzcGF0Y2hbT0JKWzBdXSA9IGxvYWRfb2JqCiAKICAgICBkZWYgbG9hZF9uZXdvYmooc2VsZik6CkBAIC0xNDAzLDEyICsxMzk5LDE0IEBACiAgICAgZGlzcGF0Y2hbUkVEVUNFWzBdXSA9IGxvYWRfcmVkdWNlCiAKICAgICBkZWYgbG9hZF9wb3Aoc2VsZik6Ci0gICAgICAgIGRlbCBzZWxmLnN0YWNrWy0xXQorICAgICAgICBpZiBzZWxmLnN0YWNrOgorICAgICAgICAgICAgZGVsIHNlbGYuc3RhY2tbLTFdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnBvcF9tYXJrKCkKICAgICBkaXNwYXRjaFtQT1BbMF1dID0gbG9hZF9wb3AKIAogICAgIGRlZiBsb2FkX3BvcF9tYXJrKHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBkZWwgc2VsZi5zdGFja1trOl0KKyAgICAgICAgc2VsZi5wb3BfbWFyaygpCiAgICAgZGlzcGF0Y2hbUE9QX01BUktbMF1dID0gbG9hZF9wb3BfbWFyawogCiAgICAgZGVmIGxvYWRfZHVwKHNlbGYpOgpAQCAtMTQ2NCwxNyArMTQ2MiwxNCBAQAogICAgIGRpc3BhdGNoW0FQUEVORFswXV0gPSBsb2FkX2FwcGVuZAogCiAgICAgZGVmIGxvYWRfYXBwZW5kcyhzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIGxpc3Rfb2JqID0gc3RhY2tbbWFyayAtIDFdCi0gICAgICAgIGl0ZW1zID0gc3RhY2tbbWFyayArIDE6XQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBsaXN0X29iaiA9IHNlbGYuc3RhY2tbLTFdCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobGlzdF9vYmosIGxpc3QpOgogICAgICAgICAgICAgbGlzdF9vYmouZXh0ZW5kKGl0ZW1zKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXBwZW5kID0gbGlzdF9vYmouYXBwZW5kCiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgICAgICBhcHBlbmQoaXRlbSkKLSAgICAgICAgZGVsIHN0YWNrW21hcms6XQogICAgIGRpc3BhdGNoW0FQUEVORFNbMF1dID0gbG9hZF9hcHBlbmRzCiAKICAgICBkZWYgbG9hZF9zZXRpdGVtKHNlbGYpOgpAQCAtMTQ4NiwyNyArMTQ4MSwyMSBAQAogICAgIGRpc3BhdGNoW1NFVElURU1bMF1dID0gbG9hZF9zZXRpdGVtCiAKICAgICBkZWYgbG9hZF9zZXRpdGVtcyhzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIGRpY3QgPSBzdGFja1ttYXJrIC0gMV0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobWFyayArIDEsIGxlbihzdGFjayksIDIpOgotICAgICAgICAgICAgZGljdFtzdGFja1tpXV0gPSBzdGFja1tpICsgMV0KLQotICAgICAgICBkZWwgc3RhY2tbbWFyazpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIGRpY3QgPSBzZWxmLnN0YWNrWy0xXQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oaXRlbXMpLCAyKToKKyAgICAgICAgICAgIGRpY3RbaXRlbXNbaV1dID0gaXRlbXNbaSArIDFdCiAgICAgZGlzcGF0Y2hbU0VUSVRFTVNbMF1dID0gbG9hZF9zZXRpdGVtcwogCiAgICAgZGVmIGxvYWRfYWRkaXRlbXMoc2VsZik6Ci0gICAgICAgIHN0YWNrID0gc2VsZi5zdGFjawotICAgICAgICBtYXJrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZXRfb2JqID0gc3RhY2tbbWFyayAtIDFdCi0gICAgICAgIGl0ZW1zID0gc3RhY2tbbWFyayArIDE6XQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBzZXRfb2JqID0gc2VsZi5zdGFja1stMV0KICAgICAgICAgaWYgaXNpbnN0YW5jZShzZXRfb2JqLCBzZXQpOgogICAgICAgICAgICAgc2V0X29iai51cGRhdGUoaXRlbXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhZGQgPSBzZXRfb2JqLmFkZAogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAgICAgICAgICAgYWRkKGl0ZW0pCi0gICAgICAgIGRlbCBzdGFja1ttYXJrOl0KICAgICBkaXNwYXRjaFtBRERJVEVNU1swXV0gPSBsb2FkX2FkZGl0ZW1zCiAKICAgICBkZWYgbG9hZF9idWlsZChzZWxmKToKQEAgLTE1MzQsNyArMTUyMyw5IEBACiAgICAgZGlzcGF0Y2hbQlVJTERbMF1dID0gbG9hZF9idWlsZAogCiAgICAgZGVmIGxvYWRfbWFyayhzZWxmKToKLSAgICAgICAgc2VsZi5hcHBlbmQoc2VsZi5tYXJrKQorICAgICAgICBzZWxmLm1ldGFzdGFjay5hcHBlbmQoc2VsZi5zdGFjaykKKyAgICAgICAgc2VsZi5zdGFjayA9IFtdCisgICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5zdGFjay5hcHBlbmQKICAgICBkaXNwYXRjaFtNQVJLWzBdXSA9IGxvYWRfbWFyawogCiAgICAgZGVmIGxvYWRfc3RvcChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9waWNrbGV0b29scy5weSBiL0xpYi9waWNrbGV0b29scy5weQppbmRleCAxNmFlN2Q1Li41ZTEyOWI1IDEwMDY0NAotLS0gYS9MaWIvcGlja2xldG9vbHMucHkKKysrIGIvTGliL3BpY2tsZXRvb2xzLnB5CkBAIC03MDcsNyArNzA3LDcgQEAKICAgICA+Pj4gZW5jID0gcy5lbmNvZGUoJ3V0Zi04JykKICAgICA+Pj4gZW5jCiAgICAgYidhYmNkXHhlYVx4YWZceDhkJwotICAgID4+PiBuID0gYnl0ZXMoW2xlbihlbmMpXSkgKyBieXRlcyg3KSAgIyBsaXR0bGUtZW5kaWFuIDgtYnl0ZSBsZW5ndGgKKyAgICA+Pj4gbiA9IGJ5dGVzKFtsZW4oZW5jKV0pICsgYidcMCcgKiA3ICAjIGxpdHRsZS1lbmRpYW4gOC1ieXRlIGxlbmd0aAogICAgID4+PiB0ID0gcmVhZF91bmljb2Rlc3RyaW5nOChpby5CeXRlc0lPKG4gKyBlbmMgKyBiJ2p1bmsnKSkKICAgICA+Pj4gcyA9PSB0CiAgICAgVHJ1ZQpAQCAtMjQ0MCw2ICsyNDQwLDcgQEAKICAgICAgICAgaWYgb3Bjb2RlLm5hbWUgaW4gKCJQVVQiLCAiQklOUFVUIiwgIkxPTkdfQklOUFVUIiwgIk1FTU9JWkUiKToKICAgICAgICAgICAgIGlmIG9wY29kZS5uYW1lID09ICJNRU1PSVpFIjoKICAgICAgICAgICAgICAgICBtZW1vX2lkeCA9IGxlbihtZW1vKQorICAgICAgICAgICAgICAgIG1hcmttc2cgPSAiKGFzICVkKSIgJSBtZW1vX2lkeAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBhc3NlcnQgYXJnIGlzIG5vdCBOb25lCiAgICAgICAgICAgICAgICAgbWVtb19pZHggPSBhcmcKZGlmZiAtLWdpdCBhL0xpYi9wa2d1dGlsLnB5IGIvTGliL3BrZ3V0aWwucHkKaW5kZXggODFkNDE4ZC4uZTM3YWQ0NSAxMDA2NDQKLS0tIGEvTGliL3BrZ3V0aWwucHkKKysrIGIvTGliL3BrZ3V0aWwucHkKQEAgLTEsNSArMSw2IEBACiAiIiJVdGlsaXRpZXMgdG8gc3VwcG9ydCBwYWNrYWdlcy4iIiIKIAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHNpbmdsZWRpc3BhdGNoIGFzIHNpbXBsZWdlbmVyaWMKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXBvcnRsaWIudXRpbApAQCAtMTQsOSArMTUsMTQgQEAKICAgICAnZ2V0X2ltcG9ydGVyJywgJ2l0ZXJfaW1wb3J0ZXJzJywgJ2dldF9sb2FkZXInLCAnZmluZF9sb2FkZXInLAogICAgICd3YWxrX3BhY2thZ2VzJywgJ2l0ZXJfbW9kdWxlcycsICdnZXRfZGF0YScsCiAgICAgJ0ltcEltcG9ydGVyJywgJ0ltcExvYWRlcicsICdyZWFkX2NvZGUnLCAnZXh0ZW5kX3BhdGgnLAorICAgICdNb2R1bGVJbmZvJywKIF0KIAogCitNb2R1bGVJbmZvID0gbmFtZWR0dXBsZSgnTW9kdWxlSW5mbycsICdtb2R1bGVfZmluZGVyIG5hbWUgaXNwa2cnKQorTW9kdWxlSW5mby5fX2RvY19fID0gJ0EgbmFtZWR0dXBsZSB3aXRoIG1pbmltYWwgaW5mbyBhYm91dCBhIG1vZHVsZS4nCisKKwogZGVmIF9nZXRfc3BlYyhmaW5kZXIsIG5hbWUpOgogICAgICIiIlJldHVybiB0aGUgZmluZGVyLXNwZWNpZmljIG1vZHVsZSBzcGVjLiIiIgogICAgICMgV29ya3Mgd2l0aCBsZWdhY3kgZmluZGVycy4KQEAgLTQ1LDcgKzUxLDcgQEAKIAogCiBkZWYgd2Fsa19wYWNrYWdlcyhwYXRoPU5vbmUsIHByZWZpeD0nJywgb25lcnJvcj1Ob25lKToKLSAgICAiIiJZaWVsZHMgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKSBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkKKyAgICAiIiJZaWVsZHMgTW9kdWxlSW5mbyBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkKICAgICBvbiBwYXRoLCBvciwgaWYgcGF0aCBpcyBOb25lLCBhbGwgYWNjZXNzaWJsZSBtb2R1bGVzLgogCiAgICAgJ3BhdGgnIHNob3VsZCBiZSBlaXRoZXIgTm9uZSBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IKQEAgLTc4LDMxICs4NCwzMSBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgbVtwXSA9IFRydWUKIAotICAgIGZvciBpbXBvcnRlciwgbmFtZSwgaXNwa2cgaW4gaXRlcl9tb2R1bGVzKHBhdGgsIHByZWZpeCk6Ci0gICAgICAgIHlpZWxkIGltcG9ydGVyLCBuYW1lLCBpc3BrZworICAgIGZvciBpbmZvIGluIGl0ZXJfbW9kdWxlcyhwYXRoLCBwcmVmaXgpOgorICAgICAgICB5aWVsZCBpbmZvCiAKLSAgICAgICAgaWYgaXNwa2c6CisgICAgICAgIGlmIGluZm8uaXNwa2c6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX19pbXBvcnRfXyhuYW1lKQorICAgICAgICAgICAgICAgIF9faW1wb3J0X18oaW5mby5uYW1lKQogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIG9uZXJyb3IobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgb25lcnJvcihpbmZvLm5hbWUpCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIG9uZXJyb3IobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgb25lcnJvcihpbmZvLm5hbWUpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IGdldGF0dHIoc3lzLm1vZHVsZXNbbmFtZV0sICdfX3BhdGhfXycsIE5vbmUpIG9yIFtdCisgICAgICAgICAgICAgICAgcGF0aCA9IGdldGF0dHIoc3lzLm1vZHVsZXNbaW5mby5uYW1lXSwgJ19fcGF0aF9fJywgTm9uZSkgb3IgW10KIAogICAgICAgICAgICAgICAgICMgZG9uJ3QgdHJhdmVyc2UgcGF0aCBpdGVtcyB3ZSd2ZSBzZWVuIGJlZm9yZQogICAgICAgICAgICAgICAgIHBhdGggPSBbcCBmb3IgcCBpbiBwYXRoIGlmIG5vdCBzZWVuKHApXQogCi0gICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrX3BhY2thZ2VzKHBhdGgsIG5hbWUrJy4nLCBvbmVycm9yKQorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2Fsa19wYWNrYWdlcyhwYXRoLCBpbmZvLm5hbWUrJy4nLCBvbmVycm9yKQogCiAKIGRlZiBpdGVyX21vZHVsZXMocGF0aD1Ob25lLCBwcmVmaXg9JycpOgotICAgICIiIllpZWxkcyAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpIGZvciBhbGwgc3VibW9kdWxlcyBvbiBwYXRoLAorICAgICIiIllpZWxkcyBNb2R1bGVJbmZvIGZvciBhbGwgc3VibW9kdWxlcyBvbiBwYXRoLAogICAgIG9yLCBpZiBwYXRoIGlzIE5vbmUsIGFsbCB0b3AtbGV2ZWwgbW9kdWxlcyBvbiBzeXMucGF0aC4KIAogICAgICdwYXRoJyBzaG91bGQgYmUgZWl0aGVyIE5vbmUgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yCkBAIC0xMTEsNyArMTE3LDYgQEAKICAgICAncHJlZml4JyBpcyBhIHN0cmluZyB0byBvdXRwdXQgb24gdGhlIGZyb250IG9mIGV2ZXJ5IG1vZHVsZSBuYW1lCiAgICAgb24gb3V0cHV0LgogICAgICIiIgotCiAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICBpbXBvcnRlcnMgPSBpdGVyX2ltcG9ydGVycygpCiAgICAgZWxzZToKQEAgLTEyMiw3ICsxMjcsNyBAQAogICAgICAgICBmb3IgbmFtZSwgaXNwa2cgaW4gaXRlcl9pbXBvcnRlcl9tb2R1bGVzKGksIHByZWZpeCk6CiAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiB5aWVsZGVkOgogICAgICAgICAgICAgICAgIHlpZWxkZWRbbmFtZV0gPSAxCi0gICAgICAgICAgICAgICAgeWllbGQgaSwgbmFtZSwgaXNwa2cKKyAgICAgICAgICAgICAgICB5aWVsZCBNb2R1bGVJbmZvKGksIG5hbWUsIGlzcGtnKQogCiAKIEBzaW1wbGVnZW5lcmljCkBAIC0xODAsNyArMTg1LDcgQEAKIGRlZiBfaW1wb3J0X2ltcCgpOgogICAgIGdsb2JhbCBpbXAKICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIGltcCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdpbXAnKQogCiBjbGFzcyBJbXBJbXBvcnRlcjoKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWFpeDQvSU4ucHkgYi9MaWIvcGxhdC1haXg0L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2Y4ZjIzLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWFpeDQvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIG5ldC9uaC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbWFjaGluZS5oCi1MSVRUTEVfRU5ESUFOID0gMTIzNAotQklHX0VORElBTiA9IDQzMjEKLVBEUF9FTkRJQU4gPSAzNDEyCi1CWVRFX09SREVSID0gQklHX0VORElBTgotREVGQVVMVF9HUFIgPSAweERFQURCRUVGCi1NU1JfRUUgPSAweDgwMDAKLU1TUl9QUiA9IDB4NDAwMAotTVNSX0ZQID0gMHgyMDAwCi1NU1JfTUUgPSAweDEwMDAKLU1TUl9GRSA9IDB4MDgwMAotTVNSX0ZFMCA9IDB4MDgwMAotTVNSX1NFID0gMHgwNDAwCi1NU1JfQkUgPSAweDAyMDAKLU1TUl9JRSA9IDB4MDEwMAotTVNSX0ZFMSA9IDB4MDEwMAotTVNSX0FMID0gMHgwMDgwCi1NU1JfSVAgPSAweDAwNDAKLU1TUl9JUiA9IDB4MDAyMAotTVNSX0RSID0gMHgwMDEwCi1NU1JfUE0gPSAweDAwMDQKLURFRkFVTFRfTVNSID0gKE1TUl9FRSB8IE1TUl9NRSB8IE1TUl9BTCB8IE1TUl9JUiB8IE1TUl9EUikKLURFRkFVTFRfVVNFUl9NU1IgPSAoREVGQVVMVF9NU1IgfCBNU1JfUFIpCi1DUl9MVCA9IDB4ODAwMDAwMDAKLUNSX0dUID0gMHg0MDAwMDAwMAotQ1JfRVEgPSAweDIwMDAwMDAwCi1DUl9TTyA9IDB4MTAwMDAwMDAKLUNSX0ZYID0gMHgwODAwMDAwMAotQ1JfRkVYID0gMHgwNDAwMDAwMAotQ1JfVlggPSAweDAyMDAwMDAwCi1DUl9PWCA9IDB4MDEwMDAwMDAKLVhFUl9TTyA9IDB4ODAwMDAwMDAKLVhFUl9PViA9IDB4NDAwMDAwMDAKLVhFUl9DQSA9IDB4MjAwMDAwMDAKLWRlZiBYRVJfQ09NUF9CWVRFKHhlcik6IHJldHVybiAoKHhlciA+PiA4KSAmIDB4MDAwMDAwRkYpCi0KLWRlZiBYRVJfTEVOR1RIKHhlcik6IHJldHVybiAoeGVyICYgMHgwMDAwMDA3RikKLQotRFNJU1JfSU8gPSAweDgwMDAwMDAwCi1EU0lTUl9QRlQgPSAweDQwMDAwMDAwCi1EU0lTUl9MT0NLID0gMHgyMDAwMDAwMAotRFNJU1JfRlBJTyA9IDB4MTAwMDAwMDAKLURTSVNSX1BST1QgPSAweDA4MDAwMDAwCi1EU0lTUl9MT09QID0gMHgwNDAwMDAwMAotRFNJU1JfRFJTVCA9IDB4MDQwMDAwMDAKLURTSVNSX1NUID0gMHgwMjAwMDAwMAotRFNJU1JfU0VHQiA9IDB4MDEwMDAwMDAKLURTSVNSX0RBQlIgPSAweDAwNDAwMDAwCi1EU0lTUl9FQVIgPSAweDAwMTAwMDAwCi1TUlJfSVNfUEZUID0gMHg0MDAwMDAwMAotU1JSX0lTX0lTUEVDID0gMHgyMDAwMDAwMAotU1JSX0lTX0lJTyA9IDB4MTAwMDAwMDAKLVNSUl9JU19HVUFSRCA9IDB4MTAwMDAwMDAKLVNSUl9JU19QUk9UID0gMHgwODAwMDAwMAotU1JSX0lTX0xPT1AgPSAweDA0MDAwMDAwCi1TUlJfUFJfRlBFTiA9IDB4MDAxMDAwMDAKLVNSUl9QUl9JTlZBTCA9IDB4MDAwODAwMDAKLVNSUl9QUl9QUklWID0gMHgwMDA0MDAwMAotU1JSX1BSX1RSQVAgPSAweDAwMDIwMDAwCi1TUlJfUFJfSU1QUkUgPSAweDAwMDEwMDAwCi1kZWYgQlVJRF83Rl9TUlZBTChyYWRkcik6IHJldHVybiAoMHg4N0YwMDAwMCB8ICgoKHVpbnQpKHJhZGRyKSkgPj4gMjgpKQotCi1CVF8yNTZNID0gMHgxRkZDCi1CVF8xMjhNID0gMHgwRkZDCi1CVF82NE0gPSAweDA3RkMKLUJUXzMyTSA9IDB4MDNGQwotQlRfMTZNID0gMHgwMUZDCi1CVF84TSA9IDB4MDBGQwotQlRfNE0gPSAweDAwN0MKLUJUXzJNID0gMHgwMDNDCi1CVF8xTSA9IDB4MDAxQwotQlRfNTEySyA9IDB4MDAwQwotQlRfMjU2SyA9IDB4MDAwNAotQlRfMTI4SyA9IDB4MDAwMAotQlRfTk9BQ0NFU1MgPSAweDAKLUJUX1JET05MWSA9IDB4MQotQlRfV1JJVEUgPSAweDIKLUJUX1ZTID0gMHgyCi1CVF9WUCA9IDB4MQotZGVmIEJBVF9FU0VHKGRiYXR1KTogcmV0dXJuICgoKHVpbnQpKGRiYXR1KSA+PiAyOCkpCi0KLU1JTl9CQVRfU0laRSA9IDB4MDAwMjAwMDAKLU1BWF9CQVRfU0laRSA9IDB4MTAwMDAwMDAKLWRlZiBudG9obCh4KTogcmV0dXJuICh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuICh4KQotCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0xPQ0FMID0gNjMKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fQklQID0gMHg1MwotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotSVBQT1JUX1RJTUVTRVJWRVIgPSAzNwotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKGludCkoaSkgJiAweDgwMDAwMDAwKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gMHhmZjAwMDAwMAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhjMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKLQotSU5fQ0xBU1NCX05FVCA9IDB4ZmZmZjAwMDAKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhjMDAwMDAwMCkKLQotSU5fQ0xBU1NDX05FVCA9IDB4ZmZmZmZmMDAKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLUlOQUREUl9VTlNQRUNfR1JPVVAgPSAweGUwMDAwMDAwCi1JTkFERFJfQUxMSE9TVFNfR1JPVVAgPSAweGUwMDAwMDAxCi1JTkFERFJfTUFYX0xPQ0FMX0dST1VQID0gMHhlMDAwMDBmZgotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX0FOWSA9IDB4MDAwMDAwMDAKLUlOQUREUl9CUk9BRENBU1QgPSAweGZmZmZmZmZmCi1JTkFERFJfTE9PUEJBQ0sgPSAweDdmMDAwMDAxCi1JTkFERFJfTk9ORSA9IDB4ZmZmZmZmZmYKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWFpeDQvcmVnZW4gYi9MaWIvcGxhdC1haXg0L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1N2E3MWM0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWFpeDQvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSMhIC9iaW4vc2gKLWNhc2UgYHVuYW1lIC1zdmAgaW4KLSdBSVggNCcqKSAgOzsKLSopICAgICAgZWNobyBQcm9iYWJseSBub3Qgb24gYW4gQUlYIDQgc3lzdGVtIDE+JjIKLSAgICAgICAgZXhpdCAxOzsKLWVzYWMKLXNldCAtdgotaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWRhcndpbi9JTi5weSBiL0xpYi9wbGF0LWRhcndpbi9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI2YmUzMy4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1kYXJ3aW4vSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NjIgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9hcHBsZWFwaW9wdHMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL190eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuICgpCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICJ4IgotCi1kZWYgX19hdHRyaWJ1dGVfXyh4KTogcmV0dXJuCi0KLWRlZiBfX0NPUFlSSUdIVChzKTogcmV0dXJuIF9fSURTVFJJTkcoY29weXJpZ2h0LHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhyY3NpZCxzKQotCi1kZWYgX19TQ0NTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKHNjY3NpZCxzKQotCi1kZWYgX19QUk9KRUNUX1ZFUlNJT04ocyk6IHJldHVybiBfX0lEU1RSSU5HKHByb2plY3RfdmVyc2lvbixzKQotCi1fX0RBUldJTl9VTklYMDMgPSAxCi1fX0RBUldJTl9VTklYMDMgPSAwCi1fX0RBUldJTl9VTklYMDMgPSAwCi1fX0RBUldJTl9VTklYMDMgPSAxCi1fX0RBUldJTl82NF9CSVRfSU5PX1QgPSAxCi1fX0RBUldJTl82NF9CSVRfSU5PX1QgPSAwCi1fX0RBUldJTl82NF9CSVRfSU5PX1QgPSAwCi1fX0RBUldJTl9OT05fQ0FOQ0VMQUJMRSA9IDAKLV9fREFSV0lOX1ZFUlNfMTA1MCA9IDEKLV9fREFSV0lOX1ZFUlNfMTA1MCA9IDAKLV9fREFSV0lOX1NVRl9VTklYMDMgPSAiJFVOSVgyMDAzIgotX19EQVJXSU5fU1VGX1VOSVgwM19TRVQgPSAxCi1fX0RBUldJTl9TVUZfVU5JWDAzX1NFVCA9IDAKLV9fREFSV0lOX1NVRl82NF9CSVRfSU5PX1QgPSAiJElOT0RFNjQiCi1fX0RBUldJTl9TVUZfTk9OX0NBTkNFTEFCTEUgPSAiJE5PQ0FOQ0VMIgotX19EQVJXSU5fU1VGXzEwNTAgPSAiJDEwNTAiCi1fX0RBUldJTl9TVUZfVU5JWDAzX1NFVCA9IDAKLV9fREFSV0lOX1NVRl9FWFRTTiA9ICIkREFSV0lOX0VYVFNOIgotX19EQVJXSU5fTE9OR19ET1VCTEVfSVNfRE9VQkxFID0gMAotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUKHgpOiByZXR1cm4KLQotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUMih4KTogcmV0dXJuCi0KLV9fREFSV0lOX0xPTkdfRE9VQkxFX0lTX0RPVUJMRSA9IDEKLWRlZiBfX0RBUldJTl9MREJMX0NPTVBBVCh4KTogcmV0dXJuCi0KLWRlZiBfX0RBUldJTl9MREJMX0NPTVBBVDIoeCk6IHJldHVybgotCi1fX0RBUldJTl9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAwCi1fREFSV0lOX0ZFQVRVUkVfTE9OR19ET1VCTEVfSVNfRE9VQkxFID0gMQotX0RBUldJTl9GRUFUVVJFX1VOSVhfQ09ORk9STUFOQ0UgPSAzCi1fREFSV0lOX0ZFQVRVUkVfNjRfQklUX0lOT0RFID0gMQotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fdHlwZXMuaAotX19QVEhSRUFEX1NJWkVfXyA9IDExNjgKLV9fUFRIUkVBRF9BVFRSX1NJWkVfXyA9IDU2Ci1fX1BUSFJFQURfTVVURVhBVFRSX1NJWkVfXyA9IDgKLV9fUFRIUkVBRF9NVVRFWF9TSVpFX18gPSA1NgotX19QVEhSRUFEX0NPTkRBVFRSX1NJWkVfXyA9IDgKLV9fUFRIUkVBRF9DT05EX1NJWkVfXyA9IDQwCi1fX1BUSFJFQURfT05DRV9TSVpFX18gPSA4Ci1fX1BUSFJFQURfUldMT0NLX1NJWkVfXyA9IDE5MgotX19QVEhSRUFEX1JXTE9DS0FUVFJfU0laRV9fID0gMTYKLV9fUFRIUkVBRF9TSVpFX18gPSA1OTYKLV9fUFRIUkVBRF9BVFRSX1NJWkVfXyA9IDM2Ci1fX1BUSFJFQURfTVVURVhBVFRSX1NJWkVfXyA9IDgKLV9fUFRIUkVBRF9NVVRFWF9TSVpFX18gPSA0MAotX19QVEhSRUFEX0NPTkRBVFRSX1NJWkVfXyA9IDQKLV9fUFRIUkVBRF9DT05EX1NJWkVfXyA9IDI0Ci1fX1BUSFJFQURfT05DRV9TSVpFX18gPSA0Ci1fX1BUSFJFQURfUldMT0NLX1NJWkVfXyA9IDEyNAotX19QVEhSRUFEX1JXTE9DS0FUVFJfU0laRV9fID0gMTIKLV9fREFSV0lOX05VTEwgPSAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzdGRpbnQuaAotX19XT1JEU0laRSA9IDY0Ci1fX1dPUkRTSVpFID0gMzIKLUlOVDhfTUFYID0gMTI3Ci1JTlQxNl9NQVggPSAzMjc2NwotSU5UMzJfTUFYID0gMjE0NzQ4MzY0NwotSU5UOF9NSU4gPSAtMTI4Ci1JTlQxNl9NSU4gPSAtMzI3NjgKLUlOVDMyX01JTiA9ICgtSU5UMzJfTUFYLTEpCi1VSU5UOF9NQVggPSAyNTUKLVVJTlQxNl9NQVggPSA2NTUzNQotSU5UX0xFQVNUOF9NSU4gPSBJTlQ4X01JTgotSU5UX0xFQVNUMTZfTUlOID0gSU5UMTZfTUlOCi1JTlRfTEVBU1QzMl9NSU4gPSBJTlQzMl9NSU4KLUlOVF9MRUFTVDhfTUFYID0gSU5UOF9NQVgKLUlOVF9MRUFTVDE2X01BWCA9IElOVDE2X01BWAotSU5UX0xFQVNUMzJfTUFYID0gSU5UMzJfTUFYCi1VSU5UX0xFQVNUOF9NQVggPSBVSU5UOF9NQVgKLVVJTlRfTEVBU1QxNl9NQVggPSBVSU5UMTZfTUFYCi1JTlRfRkFTVDhfTUlOID0gSU5UOF9NSU4KLUlOVF9GQVNUMTZfTUlOID0gSU5UMTZfTUlOCi1JTlRfRkFTVDMyX01JTiA9IElOVDMyX01JTgotSU5UX0ZBU1Q4X01BWCA9IElOVDhfTUFYCi1JTlRfRkFTVDE2X01BWCA9IElOVDE2X01BWAotSU5UX0ZBU1QzMl9NQVggPSBJTlQzMl9NQVgKLVVJTlRfRkFTVDhfTUFYID0gVUlOVDhfTUFYCi1VSU5UX0ZBU1QxNl9NQVggPSBVSU5UMTZfTUFYCi1JTlRQVFJfTUlOID0gSU5UMzJfTUlOCi1JTlRQVFJfTUFYID0gSU5UMzJfTUFYCi1QVFJESUZGX01JTiA9IElOVDMyX01JTgotUFRSRElGRl9NQVggPSBJTlQzMl9NQVgKLVdDSEFSX01BWCA9IDB4N2ZmZmZmZmYKLVdDSEFSX01JTiA9IDAKLVdDSEFSX01JTiA9ICgtV0NIQVJfTUFYLTEpCi1XSU5UX01JTiA9IElOVDMyX01JTgotV0lOVF9NQVggPSBJTlQzMl9NQVgKLVNJR19BVE9NSUNfTUlOID0gSU5UMzJfTUlOCi1TSUdfQVRPTUlDX01BWCA9IElOVDMyX01BWAotZGVmIElOVDhfQyh2KTogcmV0dXJuICh2KQotCi1kZWYgSU5UMTZfQyh2KTogcmV0dXJuICh2KQotCi1kZWYgSU5UMzJfQyh2KTogcmV0dXJuICh2KQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc29ja2V0LmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3BhcmFtLmgKLVNPQ0tfU1RSRUFNID0gMQotU09DS19ER1JBTSA9IDIKLVNPQ0tfUkFXID0gMwotU09DS19SRE0gPSA0Ci1TT0NLX1NFUVBBQ0tFVCA9IDUKLVNPX0RFQlVHID0gMHgwMDAxCi1TT19BQ0NFUFRDT05OID0gMHgwMDAyCi1TT19SRVVTRUFERFIgPSAweDAwMDQKLVNPX0tFRVBBTElWRSA9IDB4MDAwOAotU09fRE9OVFJPVVRFID0gMHgwMDEwCi1TT19CUk9BRENBU1QgPSAweDAwMjAKLVNPX1VTRUxPT1BCQUNLID0gMHgwMDQwCi1TT19MSU5HRVIgPSAweDAwODAKLVNPX0xJTkdFUiA9IDB4MTA4MAotU09fT09CSU5MSU5FID0gMHgwMTAwCi1TT19SRVVTRVBPUlQgPSAweDAyMDAKLVNPX1RJTUVTVEFNUCA9IDB4MDQwMAotU09fQUNDRVBURklMVEVSID0gMHgxMDAwCi1TT19ET05UVFJVTkMgPSAweDIwMDAKLVNPX1dBTlRNT1JFID0gMHg0MDAwCi1TT19XQU5UT09CRkxBRyA9IDB4ODAwMAotU09fU05EQlVGID0gMHgxMDAxCi1TT19SQ1ZCVUYgPSAweDEwMDIKLVNPX1NORExPV0FUID0gMHgxMDAzCi1TT19SQ1ZMT1dBVCA9IDB4MTAwNAotU09fU05EVElNRU8gPSAweDEwMDUKLVNPX1JDVlRJTUVPID0gMHgxMDA2Ci1TT19FUlJPUiA9IDB4MTAwNwotU09fVFlQRSA9IDB4MTAwOAotU09fTlJFQUQgPSAweDEwMjAKLVNPX05LRSA9IDB4MTAyMQotU09fTk9TSUdQSVBFID0gMHgxMDIyCi1TT19OT0FERFJFUlIgPSAweDEwMjMKLVNPX05XUklURSA9IDB4MTAyNAotU09fUkVVU0VTSEFSRVVJRCA9IDB4MTAyNQotU09fTk9USUZZQ09ORkxJQ1QgPSAweDEwMjYKLVNPX0xJTkdFUl9TRUMgPSAweDEwODAKLVNPX1JFU1RSSUNUSU9OUyA9IDB4MTA4MQotU09fUkVTVFJJQ1RfREVOWUlOID0gMHgwMDAwMDAwMQotU09fUkVTVFJJQ1RfREVOWU9VVCA9IDB4MDAwMDAwMDIKLVNPX1JFU1RSSUNUX0RFTllTRVQgPSAoLTIxNDc0ODM2NDgpCi1TT19MQUJFTCA9IDB4MTAxMAotU09fUEVFUkxBQkVMID0gMHgxMDExCi1TT0xfU09DS0VUID0gMHhmZmZmCi1BRl9VTlNQRUMgPSAwCi1BRl9VTklYID0gMQotQUZfTE9DQUwgPSBBRl9VTklYCi1BRl9JTkVUID0gMgotQUZfSU1QTElOSyA9IDMKLUFGX1BVUCA9IDQKLUFGX0NIQU9TID0gNQotQUZfTlMgPSA2Ci1BRl9JU08gPSA3Ci1BRl9PU0kgPSBBRl9JU08KLUFGX0VDTUEgPSA4Ci1BRl9EQVRBS0lUID0gOQotQUZfQ0NJVFQgPSAxMAotQUZfU05BID0gMTEKLUFGX0RFQ25ldCA9IDEyCi1BRl9ETEkgPSAxMwotQUZfTEFUID0gMTQKLUFGX0hZTElOSyA9IDE1Ci1BRl9BUFBMRVRBTEsgPSAxNgotQUZfUk9VVEUgPSAxNwotQUZfTElOSyA9IDE4Ci1wc2V1ZG9fQUZfWFRQID0gMTkKLUFGX0NPSVAgPSAyMAotQUZfQ05UID0gMjEKLXBzZXVkb19BRl9SVElQID0gMjIKLUFGX0lQWCA9IDIzCi1BRl9TSVAgPSAyNAotcHNldWRvX0FGX1BJUCA9IDI1Ci1BRl9ORFJWID0gMjcKLUFGX0lTRE4gPSAyOAotQUZfRTE2NCA9IEFGX0lTRE4KLXBzZXVkb19BRl9LRVkgPSAyOQotQUZfSU5FVDYgPSAzMAotQUZfTkFUTSA9IDMxCi1BRl9TWVNURU0gPSAzMgotQUZfTkVUQklPUyA9IDMzCi1BRl9QUFAgPSAzNAotQUZfQVRNID0gMzAKLXBzZXVkb19BRl9IRFJDTVBMVCA9IDM1Ci1BRl9SRVNFUlZFRF8zNiA9IDM2Ci1BRl9ORVRHUkFQSCA9IDMyCi1BRl9NQVggPSAzNwotU09DS19NQVhBRERSTEVOID0gMjU1Ci1fU1NfTUFYU0laRSA9IDEyOAotUEZfVU5TUEVDID0gQUZfVU5TUEVDCi1QRl9MT0NBTCA9IEFGX0xPQ0FMCi1QRl9VTklYID0gUEZfTE9DQUwKLVBGX0lORVQgPSBBRl9JTkVUCi1QRl9JTVBMSU5LID0gQUZfSU1QTElOSwotUEZfUFVQID0gQUZfUFVQCi1QRl9DSEFPUyA9IEFGX0NIQU9TCi1QRl9OUyA9IEFGX05TCi1QRl9JU08gPSBBRl9JU08KLVBGX09TSSA9IEFGX0lTTwotUEZfRUNNQSA9IEFGX0VDTUEKLVBGX0RBVEFLSVQgPSBBRl9EQVRBS0lUCi1QRl9DQ0lUVCA9IEFGX0NDSVRUCi1QRl9TTkEgPSBBRl9TTkEKLVBGX0RFQ25ldCA9IEFGX0RFQ25ldAotUEZfRExJID0gQUZfRExJCi1QRl9MQVQgPSBBRl9MQVQKLVBGX0hZTElOSyA9IEFGX0hZTElOSwotUEZfQVBQTEVUQUxLID0gQUZfQVBQTEVUQUxLCi1QRl9ST1VURSA9IEFGX1JPVVRFCi1QRl9MSU5LID0gQUZfTElOSwotUEZfWFRQID0gcHNldWRvX0FGX1hUUAotUEZfQ09JUCA9IEFGX0NPSVAKLVBGX0NOVCA9IEFGX0NOVAotUEZfU0lQID0gQUZfU0lQCi1QRl9JUFggPSBBRl9JUFgKLVBGX1JUSVAgPSBwc2V1ZG9fQUZfUlRJUAotUEZfUElQID0gcHNldWRvX0FGX1BJUAotUEZfTkRSViA9IEFGX05EUlYKLVBGX0lTRE4gPSBBRl9JU0ROCi1QRl9LRVkgPSBwc2V1ZG9fQUZfS0VZCi1QRl9JTkVUNiA9IEFGX0lORVQ2Ci1QRl9OQVRNID0gQUZfTkFUTQotUEZfU1lTVEVNID0gQUZfU1lTVEVNCi1QRl9ORVRCSU9TID0gQUZfTkVUQklPUwotUEZfUFBQID0gQUZfUFBQCi1QRl9SRVNFUlZFRF8zNiA9IEFGX1JFU0VSVkVEXzM2Ci1QRl9BVE0gPSBBRl9BVE0KLVBGX05FVEdSQVBIID0gQUZfTkVUR1JBUEgKLVBGX01BWCA9IEFGX01BWAotTkVUX01BWElEID0gQUZfTUFYCi1ORVRfUlRfRFVNUCA9IDEKLU5FVF9SVF9GTEFHUyA9IDIKLU5FVF9SVF9JRkxJU1QgPSAzCi1ORVRfUlRfU1RBVCA9IDQKLU5FVF9SVF9UUkFTSCA9IDUKLU5FVF9SVF9JRkxJU1QyID0gNgotTkVUX1JUX0RVTVAyID0gNwotTkVUX1JUX01BWElEID0gOAotU09NQVhDT05OID0gMTI4Ci1NU0dfT09CID0gMHgxCi1NU0dfUEVFSyA9IDB4MgotTVNHX0RPTlRST1VURSA9IDB4NAotTVNHX0VPUiA9IDB4OAotTVNHX1RSVU5DID0gMHgxMAotTVNHX0NUUlVOQyA9IDB4MjAKLU1TR19XQUlUQUxMID0gMHg0MAotTVNHX0RPTlRXQUlUID0gMHg4MAotTVNHX0VPRiA9IDB4MTAwCi1NU0dfV0FJVFNUUkVBTSA9IDB4MjAwCi1NU0dfRkxVU0ggPSAweDQwMAotTVNHX0hPTEQgPSAweDgwMAotTVNHX1NFTkQgPSAweDEwMDAKLU1TR19IQVZFTU9SRSA9IDB4MjAwMAotTVNHX1JDVk1PUkUgPSAweDQwMDAKLU1TR19ORUVEU0EgPSAweDEwMDAwCi1DTUdST1VQX01BWCA9IDE2Ci1TQ01fUklHSFRTID0gMHgwMQotU0NNX1RJTUVTVEFNUCA9IDB4MDIKLVNDTV9DUkVEUyA9IDB4MDMKLVNIVVRfUkQgPSAwCi1TSFVUX1dSID0gMQotU0hVVF9SRFdSID0gMgotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9lbmRpYW4uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL19lbmRpYW4uaAotZGVmIG50b2hsKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBOVE9ITCh4KTogcmV0dXJuICh4KQotCi1kZWYgTlRPSFMoeCk6IHJldHVybiAoeCkKLQotZGVmIEhUT05MKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBIVE9OUyh4KTogcmV0dXJuICh4KQotCi0KLSMgSW5jbHVkZWQgZnJvbSBsaWJrZXJuL19PU0J5dGVPcmRlci5oCi1kZWYgX19EQVJXSU5fT1NTd2FwQ29uc3RJbnQxNih4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcENvbnN0SW50MzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBDb25zdEludDY0KHgpOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBsaWJrZXJuL2kzODYvX09TQnl0ZU9yZGVyLmgKLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQxNih4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcEludDMyKHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50NjQoeCk6IHJldHVybiBcCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQxNih4KTogcmV0dXJuIF9PU1N3YXBJbnQxNih4KQotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50MzIoeCk6IHJldHVybiBfT1NTd2FwSW50MzIoeCkKLQotZGVmIF9fREFSV0lOX09TU3dhcEludDY0KHgpOiByZXR1cm4gX09TU3dhcEludDY0KHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuIF9fREFSV0lOX09TU3dhcEludDE2KHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuIF9fREFSV0lOX09TU3dhcEludDE2KHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fREFSV0lOX09TU3dhcEludDMyKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuIF9fREFSV0lOX09TU3dhcEludDMyKHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19ESVZFUlQgPSAyNTQKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQUk9UT19ET05FID0gMjU3Ci1fX0RBUldJTl9JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfUkVTRVJWRUQgPSBfX0RBUldJTl9JUFBPUlRfUkVTRVJWRUQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yMTQ3NDgzNjQ4KSkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9ICgtMTY3NzcyMTYpCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTEwNzM3NDE4MjQpKSA9PSAoLTIxNDc0ODM2NDgpKQotCi1JTl9DTEFTU0JfTkVUID0gKC02NTUzNikKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC01MzY4NzA5MTIpKSA9PSAoLTEwNzM3NDE4MjQpKQotCi1JTl9DTEFTU0NfTkVUID0gKC0yNTYpCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC01MzY4NzA5MTIpKQotCi1JTl9DTEFTU0RfTkVUID0gKC0yNjg0MzU0NTYpCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLUlOQUREUl9OT05FID0gKC0xKQotZGVmIElOX0xJTktMT0NBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiBJTl9DTEFTU0JfTkVUKSA9PSBJTl9MSU5LTE9DQUxORVROVU0pCi0KLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9TVFJJUEhEUiA9IDIzCi1JUF9SRUNWVFRMID0gMjQKLUlQX0ZXX0FERCA9IDQwCi1JUF9GV19ERUwgPSA0MQotSVBfRldfRkxVU0ggPSA0MgotSVBfRldfWkVSTyA9IDQzCi1JUF9GV19HRVQgPSA0NAotSVBfRldfUkVTRVRMT0cgPSA0NQotSVBfT0xEX0ZXX0FERCA9IDUwCi1JUF9PTERfRldfREVMID0gNTEKLUlQX09MRF9GV19GTFVTSCA9IDUyCi1JUF9PTERfRldfWkVSTyA9IDUzCi1JUF9PTERfRldfR0VUID0gNTQKLUlQX05BVF9fWFhYID0gNTUKLUlQX09MRF9GV19SRVNFVExPRyA9IDU2Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9UUkFGRklDX01HVF9CQUNLR1JPVU5EID0gNjUKLUlQX0ZPUkNFX09VVF9JRlAgPSA2OQotVFJBRkZJQ19NR1RfU09fQkFDS0dST1VORCA9IDB4MDAwMQotVFJBRkZJQ19NR1RfU09fQkdfU1VQUFJFU1NFRCA9IDB4MDAwMgotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JUF9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQX1BPUlRSQU5HRV9ISUdIID0gMQotSVBfUE9SVFJBTkdFX0xPVyA9IDIKLUlQUFJPVE9fTUFYSUQgPSAoSVBQUk9UT19BSCArIDEpCi1JUENUTF9GT1JXQVJESU5HID0gMQotSVBDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQQ1RMX0RFRlRUTCA9IDMKLUlQQ1RMX0RFRk1UVSA9IDQKLUlQQ1RMX1JURVhQSVJFID0gNQotSVBDVExfUlRNSU5FWFBJUkUgPSA2Ci1JUENUTF9SVE1BWENBQ0hFID0gNwotSVBDVExfU09VUkNFUk9VVEUgPSA4Ci1JUENUTF9ESVJFQ1RFREJST0FEQ0FTVCA9IDkKLUlQQ1RMX0lOVFJRTUFYTEVOID0gMTAKLUlQQ1RMX0lOVFJRRFJPUFMgPSAxMQotSVBDVExfU1RBVFMgPSAxMgotSVBDVExfQUNDRVBUU09VUkNFUk9VVEUgPSAxMwotSVBDVExfRkFTVEZPUldBUkRJTkcgPSAxNAotSVBDVExfS0VFUEZBSVRIID0gMTUKLUlQQ1RMX0dJRl9UVEwgPSAxNgotSVBDVExfTUFYSUQgPSAxNwotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldDYvaW42LmgKLV9fS0FNRV9WRVJTSU9OID0gIjIwMDEwNTI4L2FwcGxlLWRhcndpbiIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl9QS1RJTkZPID0gMTkKLUlQVjZfSE9QTElNSVQgPSAyMAotSVBWNl9ORVhUSE9QID0gMjEKLUlQVjZfSE9QT1BUUyA9IDIyCi1JUFY2X0RTVE9QVFMgPSAyMwotSVBWNl9SVEhEUiA9IDI0Ci1JUFY2X1BLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X1Y2T05MWSA9IDI3Ci1JUFY2X0JJTkRWNk9OTFkgPSBJUFY2X1Y2T05MWQotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9WNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX1VTRVRFTVBBRERSID0gMzIKLUlQVjZDVExfVEVNUFBMVElNRSA9IDMzCi1JUFY2Q1RMX1RFTVBWTFRJTUUgPSAzNAotSVBWNkNUTF9BVVRPX0xJTktMT0NBTCA9IDM1Ci1JUFY2Q1RMX1JJUDZTVEFUUyA9IDM2Ci1JUFY2Q1RMX01BWEZSQUdTID0gNDEKLUlQVjZDVExfTUFYSUQgPSA0MgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZGFyd2luL3JlZ2VuIGIvTGliL3BsYXQtZGFyd2luL3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhMjBjZGMxLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWRhcndpbi9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24kRVhFIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q0L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDQvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYTI0MTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDQvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNTUgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19ESVZFUlQgPSAyNTQKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQUk9UT19ET05FID0gMjU3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotSVBQT1JUX0hJRklSU1RBVVRPID0gNDkxNTIKLUlQUE9SVF9ISUxBU1RBVVRPID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRFNUQVJUID0gNjAwCi1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3F1ZXVlLmgKLWRlZiBTTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU0xJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBTVEFJTFFfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIExJU1RfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIExJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgVEFJTFFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBDSVJDTEVRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1fX0tBTUVfVkVSU0lPTiA9ICIyMDAwMDcwMS9GcmVlQlNELWN1cnJlbnQiCi1JUFY2UE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQVjZQT1JUX0FOT05NSU4gPSA0OTE1MgotSVBWNlBPUlRfQU5PTk1BWCA9IDY1NTM1Ci1JUFY2UE9SVF9SRVNFUlZFRE1JTiA9IDYwMAotSVBWNlBPUlRfUkVTRVJWRURNQVggPSAoSVBWNlBPUlRfUkVTRVJWRUQtMSkKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDEKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAyCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHhmZjAxMDAwMAotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4ZmYwMjAwMDAKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4ZmZmZjAwMDAKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweDgwZmUKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGMwZmUKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweDAyZmYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl9QS1RJTkZPID0gMTkKLUlQVjZfSE9QTElNSVQgPSAyMAotSVBWNl9ORVhUSE9QID0gMjEKLUlQVjZfSE9QT1BUUyA9IDIyCi1JUFY2X0RTVE9QVFMgPSAyMwotSVBWNl9SVEhEUiA9IDI0Ci1JUFY2X1BLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X0JJTkRWNk9OTFkgPSAyNwotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9CSU5EVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9NQVhJRCA9IDI4CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNC9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q0L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q0L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNS9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q1L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2EyNDE4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q1L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzU1ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQVjQgPSA0Ci1JUFBST1RPX0lQSVAgPSBJUFBST1RPX0lQVjQKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19TVCA9IDcKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QSUdQID0gOQotSVBQUk9UT19SQ0NNT04gPSAxMAotSVBQUk9UT19OVlBJSSA9IDExCi1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX0FSR1VTID0gMTMKLUlQUFJPVE9fRU1DT04gPSAxNAotSVBQUk9UT19YTkVUID0gMTUKLUlQUFJPVE9fQ0hBT1MgPSAxNgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19NVVggPSAxOAotSVBQUk9UT19NRUFTID0gMTkKLUlQUFJPVE9fSE1QID0gMjAKLUlQUFJPVE9fUFJNID0gMjEKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFJVTksxID0gMjMKLUlQUFJPVE9fVFJVTksyID0gMjQKLUlQUFJPVE9fTEVBRjEgPSAyNQotSVBQUk9UT19MRUFGMiA9IDI2Ci1JUFBST1RPX1JEUCA9IDI3Ci1JUFBST1RPX0lSVFAgPSAyOAotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0JMVCA9IDMwCi1JUFBST1RPX05TUCA9IDMxCi1JUFBST1RPX0lOUCA9IDMyCi1JUFBST1RPX1NFUCA9IDMzCi1JUFBST1RPXzNQQyA9IDM0Ci1JUFBST1RPX0lEUFIgPSAzNQotSVBQUk9UT19YVFAgPSAzNgotSVBQUk9UT19ERFAgPSAzNwotSVBQUk9UT19DTVRQID0gMzgKLUlQUFJPVE9fVFBYWCA9IDM5Ci1JUFBST1RPX0lMID0gNDAKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1NEUlAgPSA0MgotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19JRFJQID0gNDUKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0dSRSA9IDQ3Ci1JUFBST1RPX01IUlAgPSA0OAotSVBQUk9UT19CSEEgPSA0OQotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lOTFNQID0gNTIKLUlQUFJPVE9fU1dJUEUgPSA1MwotSVBQUk9UT19OSFJQID0gNTQKLUlQUFJPVE9fSUNNUFY2ID0gNTgKLUlQUFJPVE9fTk9ORSA9IDU5Ci1JUFBST1RPX0RTVE9QVFMgPSA2MAotSVBQUk9UT19BSElQID0gNjEKLUlQUFJPVE9fQ0ZUUCA9IDYyCi1JUFBST1RPX0hFTExPID0gNjMKLUlQUFJPVE9fU0FURVhQQUsgPSA2NAotSVBQUk9UT19LUllQVE9MQU4gPSA2NQotSVBQUk9UT19SVkQgPSA2NgotSVBQUk9UT19JUFBDID0gNjcKLUlQUFJPVE9fQURGUyA9IDY4Ci1JUFBST1RPX1NBVE1PTiA9IDY5Ci1JUFBST1RPX1ZJU0EgPSA3MAotSVBQUk9UT19JUENWID0gNzEKLUlQUFJPVE9fQ1BOWCA9IDcyCi1JUFBST1RPX0NQSEIgPSA3MwotSVBQUk9UT19XU04gPSA3NAotSVBQUk9UT19QVlAgPSA3NQotSVBQUk9UT19CUlNBVE1PTiA9IDc2Ci1JUFBST1RPX05EID0gNzcKLUlQUFJPVE9fV0JNT04gPSA3OAotSVBQUk9UT19XQkVYUEFLID0gNzkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fVk1UUCA9IDgxCi1JUFBST1RPX1NWTVRQID0gODIKLUlQUFJPVE9fVklORVMgPSA4MwotSVBQUk9UT19UVFAgPSA4NAotSVBQUk9UT19JR1AgPSA4NQotSVBQUk9UT19ER1AgPSA4NgotSVBQUk9UT19UQ0YgPSA4NwotSVBQUk9UT19JR1JQID0gODgKLUlQUFJPVE9fT1NQRklHUCA9IDg5Ci1JUFBST1RPX1NSUEMgPSA5MAotSVBQUk9UT19MQVJQID0gOTEKLUlQUFJPVE9fTVRQID0gOTIKLUlQUFJPVE9fQVgyNSA9IDkzCi1JUFBST1RPX0lQRUlQID0gOTQKLUlQUFJPVE9fTUlDUCA9IDk1Ci1JUFBST1RPX1NDQ1NQID0gOTYKLUlQUFJPVE9fRVRIRVJJUCA9IDk3Ci1JUFBST1RPX0VOQ0FQID0gOTgKLUlQUFJPVE9fQVBFUyA9IDk5Ci1JUFBST1RPX0dNVFAgPSAxMDAKLUlQUFJPVE9fSVBDT01QID0gMTA4Ci1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19QR00gPSAxMTMKLUlQUFJPVE9fRElWRVJUID0gMjU0Ci1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweDgwMDAwMDAwKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gMHhmZjAwMDAwMAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhjMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKLQotSU5fQ0xBU1NCX05FVCA9IDB4ZmZmZjAwMDAKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhjMDAwMDAwMCkKLQotSU5fQ0xBU1NDX05FVCA9IDB4ZmZmZmZmMDAKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotSU5fQ0xBU1NEX05FVCA9IDB4ZjAwMDAwMDAKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLUlOQUREUl9OT05FID0gMHhmZmZmZmZmZgotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX0ZXX0FERCA9IDUwCi1JUF9GV19ERUwgPSA1MQotSVBfRldfRkxVU0ggPSA1MgotSVBfRldfWkVSTyA9IDUzCi1JUF9GV19HRVQgPSA1NAotSVBfRldfUkVTRVRMT0cgPSA1NQotSVBfRFVNTVlORVRfQ09ORklHVVJFID0gNjAKLUlQX0RVTU1ZTkVUX0RFTCA9IDYxCi1JUF9EVU1NWU5FVF9GTFVTSCA9IDYyCi1JUF9EVU1NWU5FVF9HRVQgPSA2NAotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JUF9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQX1BPUlRSQU5HRV9ISUdIID0gMQotSVBfUE9SVFJBTkdFX0xPVyA9IDIKLUlQUFJPVE9fTUFYSUQgPSAoSVBQUk9UT19BSCArIDEpCi1JUENUTF9GT1JXQVJESU5HID0gMQotSVBDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQQ1RMX0RFRlRUTCA9IDMKLUlQQ1RMX0RFRk1UVSA9IDQKLUlQQ1RMX1JURVhQSVJFID0gNQotSVBDVExfUlRNSU5FWFBJUkUgPSA2Ci1JUENUTF9SVE1BWENBQ0hFID0gNwotSVBDVExfU09VUkNFUk9VVEUgPSA4Ci1JUENUTF9ESVJFQ1RFREJST0FEQ0FTVCA9IDkKLUlQQ1RMX0lOVFJRTUFYTEVOID0gMTAKLUlQQ1RMX0lOVFJRRFJPUFMgPSAxMQotSVBDVExfU1RBVFMgPSAxMgotSVBDVExfQUNDRVBUU09VUkNFUk9VVEUgPSAxMwotSVBDVExfRkFTVEZPUldBUkRJTkcgPSAxNAotSVBDVExfS0VFUEZBSVRIID0gMTUKLUlQQ1RMX0dJRl9UVEwgPSAxNgotSVBDVExfTUFYSUQgPSAxNwotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldDYvaW42LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9xdWV1ZS5oCi1kZWYgU0xJU1RfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIFNMSVNUX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgU1RBSUxRX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBTVEFJTFFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBMSVNUX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBMSVNUX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgVEFJTFFfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIFRBSUxRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgQ0lSQ0xFUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotX19LQU1FX1ZFUlNJT04gPSAiMjAwMDA3MDEvRnJlZUJTRC1jdXJyZW50IgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAxCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMgotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4ZmYwMTAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweGZmMDIwMDAwCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHgwMDAwZmZmZgotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ZmU4MAotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4ZmVjMAotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4ZmYwMgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDB4MDEwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAweDAyMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHgwMDAwMDFmZgotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4MDAwMDAyZmYKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweGZmZmYwMDAwCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHg4MGZlCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhjMGZlCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHgwMmZmCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLUlQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLUlQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLUlQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1fX0lQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1fX0lQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1fX0lQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1fX0lQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLV9fSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotSVBWNl9PUFRJT05TID0gMQotSVBWNl9SRUNWT1BUUyA9IDUKLUlQVjZfUkVDVlJFVE9QVFMgPSA2Ci1JUFY2X1JFQ1ZEU1RBRERSID0gNwotSVBWNl9SRVRPUFRTID0gOAotSVBWNl9TT0NLT1BUX1JFU0VSVkVEMSA9IDMKLUlQVjZfVU5JQ0FTVF9IT1BTID0gNAotSVBWNl9NVUxUSUNBU1RfSUYgPSA5Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTAKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBWNl9KT0lOX0dST1VQID0gMTIKLUlQVjZfTEVBVkVfR1JPVVAgPSAxMwotSVBWNl9QT1JUUkFOR0UgPSAxNAotSUNNUDZfRklMVEVSID0gMTgKLUlQVjZfUEtUSU5GTyA9IDE5Ci1JUFY2X0hPUExJTUlUID0gMjAKLUlQVjZfTkVYVEhPUCA9IDIxCi1JUFY2X0hPUE9QVFMgPSAyMgotSVBWNl9EU1RPUFRTID0gMjMKLUlQVjZfUlRIRFIgPSAyNAotSVBWNl9QS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9CSU5EVjZPTkxZID0gMjcKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0hPUFMgPSAxCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBWNl9QT1JUUkFOR0VfSElHSCA9IDEKLUlQVjZfUE9SVFJBTkdFX0xPVyA9IDIKLUlQVjZQUk9UT19NQVhJRCA9IChJUFBST1RPX1BJTSArIDEpCi1JUFY2Q1RMX0ZPUldBUkRJTkcgPSAxCi1JUFY2Q1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUFY2Q1RMX0RFRkhMSU0gPSAzCi1JUFY2Q1RMX0RFRk1UVSA9IDQKLUlQVjZDVExfRk9SV1NSQ1JUID0gNQotSVBWNkNUTF9TVEFUUyA9IDYKLUlQVjZDVExfTVJUU1RBVFMgPSA3Ci1JUFY2Q1RMX01SVFBST1RPID0gOAotSVBWNkNUTF9NQVhGUkFHUEFDS0VUUyA9IDkKLUlQVjZDVExfU09VUkNFQ0hFQ0sgPSAxMAotSVBWNkNUTF9TT1VSQ0VDSEVDS19MT0dJTlQgPSAxMQotSVBWNkNUTF9BQ0NFUFRfUlRBRFYgPSAxMgotSVBWNkNUTF9LRUVQRkFJVEggPSAxMwotSVBWNkNUTF9MT0dfSU5URVJWQUwgPSAxNAotSVBWNkNUTF9IRFJORVNUTElNSVQgPSAxNQotSVBWNkNUTF9EQURfQ09VTlQgPSAxNgotSVBWNkNUTF9BVVRPX0ZMT1dMQUJFTCA9IDE3Ci1JUFY2Q1RMX0RFRk1DQVNUSExJTSA9IDE4Ci1JUFY2Q1RMX0dJRl9ITElNID0gMTkKLUlQVjZDVExfS0FNRV9WRVJTSU9OID0gMjAKLUlQVjZDVExfVVNFX0RFUFJFQ0FURUQgPSAyMQotSVBWNkNUTF9SUl9QUlVORSA9IDIyCi1JUFY2Q1RMX01BUFBFRF9BRERSID0gMjMKLUlQVjZDVExfQklORFY2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfTUFYSUQgPSAyOApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDUvcmVnZW4gYi9MaWIvcGxhdC1mcmVlYnNkNS9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNS9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDYvSU4ucHkgYi9MaWIvcGxhdC1mcmVlYnNkNi9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYwYmY4NC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNi9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDU1MSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLV9fR05VQ0xJS0VfQVNNID0gMwotX19HTlVDTElLRV9BU00gPSAyCi1fX0dOVUNMSUtFX19fVFlQRU9GID0gMQotX19HTlVDTElLRV9fX09GRlNFVE9GID0gMQotX19HTlVDTElLRV9fX1NFQ1RJT04gPSAxCi1fX0dOVUNMSUtFX0FUVFJJQlVURV9NT0RFX0RJID0gMQotX19HTlVDTElLRV9DVE9SX1NFQ1RJT05fSEFORExJTkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fQ09OU1RBTlRfUCA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9WQVJBUkdTID0gMQotX19HTlVDTElLRV9CVUlMVElOX1NUREFSRyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9WQUFMSVNUID0gMQotX19HTlVDX1ZBX0xJU1RfQ09NUEFUSUJJTElUWSA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9ORVhUX0FSRyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9NRU1DUFkgPSAxCi1fX0NDX1NVUFBPUlRTX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkUgPSAxCi1fX0NDX1NVUFBPUlRTX19fSU5MSU5FX18gPSAxCi1fX0NDX1NVUFBPUlRTX19fRlVOQ19fID0gMQotX19DQ19TVVBQT1JUU19XQVJOSU5HID0gMQotX19DQ19TVVBQT1JUU19WQVJBRElDX1hYWCA9IDEKLV9fQ0NfU1VQUE9SVFNfRFlOQU1JQ19BUlJBWV9JTklUID0gMQotX19DQ19JTlRfSVNfMzJCSVQgPSAxCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiBwcm90b3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotZGVmIF9fWFNUUklORyh4KTogcmV0dXJuIF9fU1RSSU5HKHgpCi0KLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuICgpCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICJ4IgotCi1kZWYgX19hbGlnbmVkKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oeCkpKQotCi1kZWYgX19zZWN0aW9uKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oeCkpKQotCi1kZWYgX19hbGlnbmVkKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oeCkpKQotCi1kZWYgX19zZWN0aW9uKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oeCkpKQotCi1kZWYgX19ub25udWxsKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oeCkpKQotCi1kZWYgX19wcmVkaWN0X3RydWUoZXhwKTogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoKGV4cCksIDEpCi0KLWRlZiBfX3ByZWRpY3RfZmFsc2UoZXhwKTogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoKGV4cCksIDApCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gKGV4cCkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gKGV4cCkKLQotZGVmIF9fZm9ybWF0X2FyZyhmbXRhcmcpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfYXJnX18gKGZtdGFyZykpKQotCi1kZWYgX19GQlNESUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19SQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEX1NPVVJDRShzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF9zb3VyY2VfLF9fTElORV9fKSxzKQotCi1kZWYgX19TQ0NTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fc2Njc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fQ09QWVJJR0hUKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX2NvcHlyaWdodF8sX19MSU5FX18pLHMpCi0KLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTAwOQotX1BPU0lYX0NfU09VUkNFID0gMTk5MjA5Ci1fX1hTSV9WSVNJQkxFID0gNjAwCi1fUE9TSVhfQ19TT1VSQ0UgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA1MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1BPU0lYX0NfU09VUkNFID0gMTk4ODA4Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTUwNgotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MzA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkyMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTAwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk4ODA4Ci1fX0lTT19DX1ZJU0lCTEUgPSAwCi1fX1BPU0lYX1ZJU0lCTEUgPSAwCi1fX1hTSV9WSVNJQkxFID0gMAotX19CU0RfVklTSUJMRSA9IDAKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMjAwMTEyCi1fX1hTSV9WSVNJQkxFID0gNjAwCi1fX0JTRF9WSVNJQkxFID0gMQotX19JU09fQ19WSVNJQkxFID0gMTk5OQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL190eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL190eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL2VuZGlhbi5oCi1fUVVBRF9ISUdIV09SRCA9IDEKLV9RVUFEX0xPV1dPUkQgPSAwCi1fTElUVExFX0VORElBTiA9IDEyMzQKLV9CSUdfRU5ESUFOID0gNDMyMQotX1BEUF9FTkRJQU4gPSAzNDEyCi1fQllURV9PUkRFUiA9IF9MSVRUTEVfRU5ESUFOCi1MSVRUTEVfRU5ESUFOID0gX0xJVFRMRV9FTkRJQU4KLUJJR19FTkRJQU4gPSBfQklHX0VORElBTgotUERQX0VORElBTiA9IF9QRFBfRU5ESUFOCi1CWVRFX09SREVSID0gX0JZVEVfT1JERVIKLWRlZiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX193b3JkX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX193b3JkX3N3YXBfaW50KHgpOiByZXR1cm4gX193b3JkX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfaW50X3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX2ludF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX2ludCh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX2ludF92YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX2xvbmdfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfbG9uZ19jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX2xvbmcoeCk6IHJldHVybiBfX2J5dGVfc3dhcF9sb25nX3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfd29yZF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfd29yZCh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX3dvcmRfdmFyKHgpCi0KLWRlZiBfX2h0b25sKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX2h0b25zKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLWRlZiBfX250b2hsKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX250b2hzKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fVURQID0gMTcKLWRlZiBodG9ubCh4KTogcmV0dXJuIF9faHRvbmwoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19odG9ucyh4KQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiBfX250b2hsKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuIF9fbnRvaHMoeCkKLQotSVBQUk9UT19SQVcgPSAyNTUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19TVCA9IDcKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QSUdQID0gOQotSVBQUk9UT19SQ0NNT04gPSAxMAotSVBQUk9UT19OVlBJSSA9IDExCi1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX0FSR1VTID0gMTMKLUlQUFJPVE9fRU1DT04gPSAxNAotSVBQUk9UT19YTkVUID0gMTUKLUlQUFJPVE9fQ0hBT1MgPSAxNgotSVBQUk9UT19NVVggPSAxOAotSVBQUk9UT19NRUFTID0gMTkKLUlQUFJPVE9fSE1QID0gMjAKLUlQUFJPVE9fUFJNID0gMjEKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFJVTksxID0gMjMKLUlQUFJPVE9fVFJVTksyID0gMjQKLUlQUFJPVE9fTEVBRjEgPSAyNQotSVBQUk9UT19MRUFGMiA9IDI2Ci1JUFBST1RPX1JEUCA9IDI3Ci1JUFBST1RPX0lSVFAgPSAyOAotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0JMVCA9IDMwCi1JUFBST1RPX05TUCA9IDMxCi1JUFBST1RPX0lOUCA9IDMyCi1JUFBST1RPX1NFUCA9IDMzCi1JUFBST1RPXzNQQyA9IDM0Ci1JUFBST1RPX0lEUFIgPSAzNQotSVBQUk9UT19YVFAgPSAzNgotSVBQUk9UT19ERFAgPSAzNwotSVBQUk9UT19DTVRQID0gMzgKLUlQUFJPVE9fVFBYWCA9IDM5Ci1JUFBST1RPX0lMID0gNDAKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1NEUlAgPSA0MgotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19JRFJQID0gNDUKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0dSRSA9IDQ3Ci1JUFBST1RPX01IUlAgPSA0OAotSVBQUk9UT19CSEEgPSA0OQotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lOTFNQID0gNTIKLUlQUFJPVE9fU1dJUEUgPSA1MwotSVBQUk9UT19OSFJQID0gNTQKLUlQUFJPVE9fTU9CSUxFID0gNTUKLUlQUFJPVE9fVExTUCA9IDU2Ci1JUFBST1RPX1NLSVAgPSA1NwotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fU0NUUCA9IDEzMgotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fQ0FSUCA9IDExMgotSVBQUk9UT19QR00gPSAxMTMKLUlQUFJPVE9fUEZTWU5DID0gMjQwCi1JUFBST1RPX09MRF9ESVZFUlQgPSAyNTQKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUFJPVE9fRElWRVJUID0gMjU4Ci1JUFBST1RPX1NQQUNFUiA9IDMyNzY3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLUlQUE9SVF9NQVggPSA2NTUzNQotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweDgwMDAwMDAwKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gMHhmZjAwMDAwMAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhjMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKLQotSU5fQ0xBU1NCX05FVCA9IDB4ZmZmZjAwMDAKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhjMDAwMDAwMCkKLQotSU5fQ0xBU1NDX05FVCA9IDB4ZmZmZmZmMDAKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotSU5fQ0xBU1NEX05FVCA9IDB4ZjAwMDAwMDAKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLUlOQUREUl9OT05FID0gMHhmZmZmZmZmZgotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfU0VORFNSQ0FERFIgPSBJUF9SRUNWRFNUQUREUgotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfT05FU0JDQVNUID0gMjMKLUlQX0ZXX1RBQkxFX0FERCA9IDQwCi1JUF9GV19UQUJMRV9ERUwgPSA0MQotSVBfRldfVEFCTEVfRkxVU0ggPSA0MgotSVBfRldfVEFCTEVfR0VUU0laRSA9IDQzCi1JUF9GV19UQUJMRV9MSVNUID0gNDQKLUlQX0ZXX0FERCA9IDUwCi1JUF9GV19ERUwgPSA1MQotSVBfRldfRkxVU0ggPSA1MgotSVBfRldfWkVSTyA9IDUzCi1JUF9GV19HRVQgPSA1NAotSVBfRldfUkVTRVRMT0cgPSA1NQotSVBfRFVNTVlORVRfQ09ORklHVVJFID0gNjAKLUlQX0RVTU1ZTkVUX0RFTCA9IDYxCi1JUF9EVU1NWU5FVF9GTFVTSCA9IDYyCi1JUF9EVU1NWU5FVF9HRVQgPSA2NAotSVBfUkVDVlRUTCA9IDY1Ci1JUF9NSU5UVEwgPSA2NgotSVBfRE9OVEZSQUcgPSA2NwotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JUF9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQX1BPUlRSQU5HRV9ISUdIID0gMQotSVBfUE9SVFJBTkdFX0xPVyA9IDIKLUlQUFJPVE9fTUFYSUQgPSAoSVBQUk9UT19BSCArIDEpCi1JUENUTF9GT1JXQVJESU5HID0gMQotSVBDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQQ1RMX0RFRlRUTCA9IDMKLUlQQ1RMX0RFRk1UVSA9IDQKLUlQQ1RMX1JURVhQSVJFID0gNQotSVBDVExfUlRNSU5FWFBJUkUgPSA2Ci1JUENUTF9SVE1BWENBQ0hFID0gNwotSVBDVExfU09VUkNFUk9VVEUgPSA4Ci1JUENUTF9ESVJFQ1RFREJST0FEQ0FTVCA9IDkKLUlQQ1RMX0lOVFJRTUFYTEVOID0gMTAKLUlQQ1RMX0lOVFJRRFJPUFMgPSAxMQotSVBDVExfU1RBVFMgPSAxMgotSVBDVExfQUNDRVBUU09VUkNFUk9VVEUgPSAxMwotSVBDVExfRkFTVEZPUldBUkRJTkcgPSAxNAotSVBDVExfS0VFUEZBSVRIID0gMTUKLUlQQ1RMX0dJRl9UVEwgPSAxNgotSVBDVExfTUFYSUQgPSAxNwotZGVmIGluX251bGxob3N0KHgpOiByZXR1cm4gKCh4KS5zX2FkZHIgPT0gSU5BRERSX0FOWSkKLQotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldDYvaW42LmgKLV9fS0FNRV9WRVJTSU9OID0gIkZyZWVCU0QiCi1JUFY2UE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQVjZQT1JUX0FOT05NSU4gPSA0OTE1MgotSVBWNlBPUlRfQU5PTk1BWCA9IDY1NTM1Ci1JUFY2UE9SVF9SRVNFUlZFRE1JTiA9IDYwMAotSVBWNlBPUlRfUkVTRVJWRURNQVggPSAoSVBWNlBPUlRfUkVTRVJWRUQtMSkKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDEKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAyCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHhmZjAxMDAwMAotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4ZmYwMjAwMDAKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4ZmZmZjAwMDAKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweDgwZmUKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGMwZmUKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweDAyZmYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9JTlRGQUNFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLUlQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLUlQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1fX0lQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1fX0lQVjZfQUREUl9TQ09QRV9JTlRGQUNFTE9DQUwgPSAweDAxCi1fX0lQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1fX0lQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1fX0lQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLV9fSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19JTlRGQUNFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElGQTZfSVNfREVQUkVDQVRFRChhKTogcmV0dXJuIFwKLQotZGVmIElGQTZfSVNfSU5WQUxJRChhKTogcmV0dXJuIFwKLQotSVBWNl9PUFRJT05TID0gMQotSVBWNl9SRUNWT1BUUyA9IDUKLUlQVjZfUkVDVlJFVE9QVFMgPSA2Ci1JUFY2X1JFQ1ZEU1RBRERSID0gNwotSVBWNl9SRVRPUFRTID0gOAotSVBWNl9TT0NLT1BUX1JFU0VSVkVEMSA9IDMKLUlQVjZfVU5JQ0FTVF9IT1BTID0gNAotSVBWNl9NVUxUSUNBU1RfSUYgPSA5Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTAKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBWNl9KT0lOX0dST1VQID0gMTIKLUlQVjZfTEVBVkVfR1JPVVAgPSAxMwotSVBWNl9QT1JUUkFOR0UgPSAxNAotSUNNUDZfRklMVEVSID0gMTgKLUlQVjZfMjI5MlBLVElORk8gPSAxOQotSVBWNl8yMjkySE9QTElNSVQgPSAyMAotSVBWNl8yMjkyTkVYVEhPUCA9IDIxCi1JUFY2XzIyOTJIT1BPUFRTID0gMjIKLUlQVjZfMjI5MkRTVE9QVFMgPSAyMwotSVBWNl8yMjkyUlRIRFIgPSAyNAotSVBWNl8yMjkyUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfVjZPTkxZID0gMjcKLUlQVjZfQklORFY2T05MWSA9IElQVjZfVjZPTkxZCi1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJEU1RPUFRTID0gMzUKLUlQVjZfUkVDVlBLVElORk8gPSAzNgotSVBWNl9SRUNWSE9QTElNSVQgPSAzNwotSVBWNl9SRUNWUlRIRFIgPSAzOAotSVBWNl9SRUNWSE9QT1BUUyA9IDM5Ci1JUFY2X1JFQ1ZEU1RPUFRTID0gNDAKLUlQVjZfUkVDVlJUSERSRFNUT1BUUyA9IDQxCi1JUFY2X1VTRV9NSU5fTVRVID0gNDIKLUlQVjZfUkVDVlBBVEhNVFUgPSA0MwotSVBWNl9QQVRITVRVID0gNDQKLUlQVjZfUkVBQ0hDT05GID0gNDUKLUlQVjZfUEtUSU5GTyA9IDQ2Ci1JUFY2X0hPUExJTUlUID0gNDcKLUlQVjZfTkVYVEhPUCA9IDQ4Ci1JUFY2X0hPUE9QVFMgPSA0OQotSVBWNl9EU1RPUFRTID0gNTAKLUlQVjZfUlRIRFIgPSA1MQotSVBWNl9QS1RPUFRJT05TID0gNTIKLUlQVjZfUkVDVlRDTEFTUyA9IDU3Ci1JUFY2X0FVVE9GTE9XTEFCRUwgPSA1OQotSVBWNl9UQ0xBU1MgPSA2MQotSVBWNl9ET05URlJBRyA9IDYyCi1JUFY2X1BSRUZFUl9URU1QQUREUiA9IDYzCi1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9WNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX1VTRVRFTVBBRERSID0gMzIKLUlQVjZDVExfVEVNUFBMVElNRSA9IDMzCi1JUFY2Q1RMX1RFTVBWTFRJTUUgPSAzNAotSVBWNkNUTF9BVVRPX0xJTktMT0NBTCA9IDM1Ci1JUFY2Q1RMX1JJUDZTVEFUUyA9IDM2Ci1JUFY2Q1RMX1BSRUZFUl9URU1QQUREUiA9IDM3Ci1JUFY2Q1RMX0FERFJDVExQT0xJQ1kgPSAzOAotSVBWNkNUTF9VU0VfREVGQVVMVFpPTkUgPSAzOQotSVBWNkNUTF9NQVhGUkFHUyA9IDQxCi1JUFY2Q1RMX0lGUSA9IDQyCi1JUFY2Q1RMX0lTQVRBUFJUUiA9IDQzCi1JUFY2Q1RMX01DQVNUX1BNVFUgPSA0NAotSVBWNkNUTF9TVEVBTFRIID0gNDUKLUlQVjZDVExfTUFYSUQgPSA0NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDYvcmVnZW4gYi9MaWIvcGxhdC1mcmVlYnNkNi9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNi9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDcvSU4ucHkgYi9MaWIvcGxhdC1mcmVlYnNkNy9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUzYjNhMi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNy9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDU3MSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLV9fR05VQ0xJS0VfQVNNID0gMwotX19HTlVDTElLRV9BU00gPSAyCi1fX0dOVUNMSUtFX19fVFlQRU9GID0gMQotX19HTlVDTElLRV9fX09GRlNFVE9GID0gMQotX19HTlVDTElLRV9fX1NFQ1RJT04gPSAxCi1fX0dOVUNMSUtFX0FUVFJJQlVURV9NT0RFX0RJID0gMQotX19HTlVDTElLRV9DVE9SX1NFQ1RJT05fSEFORExJTkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fQ09OU1RBTlRfUCA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9WQVJBUkdTID0gMQotX19HTlVDTElLRV9CVUlMVElOX1NUREFSRyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9WQUFMSVNUID0gMQotX19HTlVDX1ZBX0xJU1RfQ09NUEFUSUJJTElUWSA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9ORVhUX0FSRyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9NRU1DUFkgPSAxCi1fX0NDX1NVUFBPUlRTX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkUgPSAxCi1fX0NDX1NVUFBPUlRTX19fSU5MSU5FX18gPSAxCi1fX0NDX1NVUFBPUlRTX19fRlVOQ19fID0gMQotX19DQ19TVVBQT1JUU19XQVJOSU5HID0gMQotX19DQ19TVVBQT1JUU19WQVJBRElDX1hYWCA9IDEKLV9fQ0NfU1VQUE9SVFNfRFlOQU1JQ19BUlJBWV9JTklUID0gMQotX19DQ19JTlRfSVNfMzJCSVQgPSAxCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiBwcm90b3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotZGVmIF9fWFNUUklORyh4KTogcmV0dXJuIF9fU1RSSU5HKHgpCi0KLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuICgpCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICJ4IgotCi1kZWYgX19hbGlnbmVkKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oeCkpKQotCi1kZWYgX19zZWN0aW9uKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oeCkpKQotCi1kZWYgX19hbGlnbmVkKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oeCkpKQotCi1kZWYgX19zZWN0aW9uKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oeCkpKQotCi1kZWYgX19ub25udWxsKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oeCkpKQotCi1kZWYgX19wcmVkaWN0X3RydWUoZXhwKTogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoKGV4cCksIDEpCi0KLWRlZiBfX3ByZWRpY3RfZmFsc2UoZXhwKTogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoKGV4cCksIDApCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gKGV4cCkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gKGV4cCkKLQotZGVmIF9fZm9ybWF0X2FyZyhmbXRhcmcpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfYXJnX18gKGZtdGFyZykpKQotCi1kZWYgX19GQlNESUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19SQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEX1NPVVJDRShzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF9zb3VyY2VfLF9fTElORV9fKSxzKQotCi1kZWYgX19TQ0NTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fc2Njc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fQ09QWVJJR0hUKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX2NvcHlyaWdodF8sX19MSU5FX18pLHMpCi0KLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTAwOQotX1BPU0lYX0NfU09VUkNFID0gMTk5MjA5Ci1fX1hTSV9WSVNJQkxFID0gNjAwCi1fUE9TSVhfQ19TT1VSQ0UgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA1MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1BPU0lYX0NfU09VUkNFID0gMTk4ODA4Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTUwNgotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MzA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkyMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTAwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk4ODA4Ci1fX0lTT19DX1ZJU0lCTEUgPSAwCi1fX1BPU0lYX1ZJU0lCTEUgPSAwCi1fX1hTSV9WSVNJQkxFID0gMAotX19CU0RfVklTSUJMRSA9IDAKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMjAwMTEyCi1fX1hTSV9WSVNJQkxFID0gNjAwCi1fX0JTRF9WSVNJQkxFID0gMQotX19JU09fQ19WSVNJQkxFID0gMTk5OQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL190eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL190eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL2VuZGlhbi5oCi1fUVVBRF9ISUdIV09SRCA9IDEKLV9RVUFEX0xPV1dPUkQgPSAwCi1fTElUVExFX0VORElBTiA9IDEyMzQKLV9CSUdfRU5ESUFOID0gNDMyMQotX1BEUF9FTkRJQU4gPSAzNDEyCi1fQllURV9PUkRFUiA9IF9MSVRUTEVfRU5ESUFOCi1MSVRUTEVfRU5ESUFOID0gX0xJVFRMRV9FTkRJQU4KLUJJR19FTkRJQU4gPSBfQklHX0VORElBTgotUERQX0VORElBTiA9IF9QRFBfRU5ESUFOCi1CWVRFX09SREVSID0gX0JZVEVfT1JERVIKLWRlZiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX193b3JkX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX193b3JkX3N3YXBfaW50KHgpOiByZXR1cm4gX193b3JkX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfaW50X3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX2ludF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX2ludCh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX2ludF92YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfd29yZF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmQoeCk6IHJldHVybiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KQotCi1kZWYgX19odG9ubCh4KTogcmV0dXJuIF9fYnN3YXAzMih4KQotCi1kZWYgX19odG9ucyh4KTogcmV0dXJuIF9fYnN3YXAxNih4KQotCi1kZWYgX19udG9obCh4KTogcmV0dXJuIF9fYnN3YXAzMih4KQotCi1kZWYgX19udG9ocyh4KTogcmV0dXJuIF9fYnN3YXAxNih4KQotCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX1VEUCA9IDE3Ci1kZWYgaHRvbmwoeCk6IHJldHVybiBfX2h0b25sKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuIF9faHRvbnMoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19udG9obCh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiBfX250b2hzKHgpCi0KLUlQUFJPVE9fUkFXID0gMjU1Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQVjQgPSA0Ci1JUFBST1RPX0lQSVAgPSBJUFBST1RPX0lQVjQKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX01PQklMRSA9IDU1Ci1JUFBST1RPX1RMU1AgPSA1NgotSVBQUk9UT19TS0lQID0gNTcKLUlQUFJPVE9fSUNNUFY2ID0gNTgKLUlQUFJPVE9fTk9ORSA9IDU5Ci1JUFBST1RPX0RTVE9QVFMgPSA2MAotSVBQUk9UT19BSElQID0gNjEKLUlQUFJPVE9fQ0ZUUCA9IDYyCi1JUFBST1RPX0hFTExPID0gNjMKLUlQUFJPVE9fU0FURVhQQUsgPSA2NAotSVBQUk9UT19LUllQVE9MQU4gPSA2NQotSVBQUk9UT19SVkQgPSA2NgotSVBQUk9UT19JUFBDID0gNjcKLUlQUFJPVE9fQURGUyA9IDY4Ci1JUFBST1RPX1NBVE1PTiA9IDY5Ci1JUFBST1RPX1ZJU0EgPSA3MAotSVBQUk9UT19JUENWID0gNzEKLUlQUFJPVE9fQ1BOWCA9IDcyCi1JUFBST1RPX0NQSEIgPSA3MwotSVBQUk9UT19XU04gPSA3NAotSVBQUk9UT19QVlAgPSA3NQotSVBQUk9UT19CUlNBVE1PTiA9IDc2Ci1JUFBST1RPX05EID0gNzcKLUlQUFJPVE9fV0JNT04gPSA3OAotSVBQUk9UT19XQkVYUEFLID0gNzkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fVk1UUCA9IDgxCi1JUFBST1RPX1NWTVRQID0gODIKLUlQUFJPVE9fVklORVMgPSA4MwotSVBQUk9UT19UVFAgPSA4NAotSVBQUk9UT19JR1AgPSA4NQotSVBQUk9UT19ER1AgPSA4NgotSVBQUk9UT19UQ0YgPSA4NwotSVBQUk9UT19JR1JQID0gODgKLUlQUFJPVE9fT1NQRklHUCA9IDg5Ci1JUFBST1RPX1NSUEMgPSA5MAotSVBQUk9UT19MQVJQID0gOTEKLUlQUFJPVE9fTVRQID0gOTIKLUlQUFJPVE9fQVgyNSA9IDkzCi1JUFBST1RPX0lQRUlQID0gOTQKLUlQUFJPVE9fTUlDUCA9IDk1Ci1JUFBST1RPX1NDQ1NQID0gOTYKLUlQUFJPVE9fRVRIRVJJUCA9IDk3Ci1JUFBST1RPX0VOQ0FQID0gOTgKLUlQUFJPVE9fQVBFUyA9IDk5Ci1JUFBST1RPX0dNVFAgPSAxMDAKLUlQUFJPVE9fSVBDT01QID0gMTA4Ci1JUFBST1RPX1NDVFAgPSAxMzIKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX0NBUlAgPSAxMTIKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX1BGU1lOQyA9IDI0MAotSVBQUk9UT19PTERfRElWRVJUID0gMjU0Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQUk9UT19ET05FID0gMjU3Ci1JUFBST1RPX0RJVkVSVCA9IDI1OAotSVBQUk9UT19TUEFDRVIgPSAzMjc2NwotSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX0hJRklSU1RBVVRPID0gNDkxNTIKLUlQUE9SVF9ISUxBU1RBVVRPID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRFNUQVJUID0gNjAwCi1JUFBPUlRfTUFYID0gNjU1MzUKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yMTQ3NDgzNjQ4KSkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9ICgtMTY3NzcyMTYpCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTEwNzM3NDE4MjQpKSA9PSAoLTIxNDc0ODM2NDgpKQotCi1JTl9DTEFTU0JfTkVUID0gKC02NTUzNikKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC01MzY4NzA5MTIpKSA9PSAoLTEwNzM3NDE4MjQpKQotCi1JTl9DTEFTU0NfTkVUID0gKC0yNTYpCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC01MzY4NzA5MTIpKQotCi1JTl9DTEFTU0RfTkVUID0gKC0yNjg0MzU0NTYpCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9MSU5LTE9DQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC02NTUzNikpID09ICgtMTQ0Mjk3MTY0OCkpCi0KLWRlZiBJTl9MT0NBTF9HUk9VUChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI1NikpID09ICgtNTM2ODcwOTEyKSkKLQotSU5BRERSX05PTkUgPSAoLTEpCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9TRU5EU1JDQUREUiA9IElQX1JFQ1ZEU1RBRERSCi1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9PTkVTQkNBU1QgPSAyMwotSVBfRldfVEFCTEVfQUREID0gNDAKLUlQX0ZXX1RBQkxFX0RFTCA9IDQxCi1JUF9GV19UQUJMRV9GTFVTSCA9IDQyCi1JUF9GV19UQUJMRV9HRVRTSVpFID0gNDMKLUlQX0ZXX1RBQkxFX0xJU1QgPSA0NAotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9GV19OQVRfQ0ZHID0gNTYKLUlQX0ZXX05BVF9ERUwgPSA1NwotSVBfRldfTkFUX0dFVF9DT05GSUcgPSA1OAotSVBfRldfTkFUX0dFVF9MT0cgPSA1OQotSVBfRFVNTVlORVRfQ09ORklHVVJFID0gNjAKLUlQX0RVTU1ZTkVUX0RFTCA9IDYxCi1JUF9EVU1NWU5FVF9GTFVTSCA9IDYyCi1JUF9EVU1NWU5FVF9HRVQgPSA2NAotSVBfUkVDVlRUTCA9IDY1Ci1JUF9NSU5UVEwgPSA2NgotSVBfRE9OVEZSQUcgPSA2NwotSVBfQUREX1NPVVJDRV9NRU1CRVJTSElQID0gNzAKLUlQX0RST1BfU09VUkNFX01FTUJFUlNISVAgPSA3MQotSVBfQkxPQ0tfU09VUkNFID0gNzIKLUlQX1VOQkxPQ0tfU09VUkNFID0gNzMKLUlQX01TRklMVEVSID0gNzQKLU1DQVNUX0pPSU5fR1JPVVAgPSA4MAotTUNBU1RfTEVBVkVfR1JPVVAgPSA4MQotTUNBU1RfSk9JTl9TT1VSQ0VfR1JPVVAgPSA4MgotTUNBU1RfTEVBVkVfU09VUkNFX0dST1VQID0gODMKLU1DQVNUX0JMT0NLX1NPVVJDRSA9IDg0Ci1NQ0FTVF9VTkJMT0NLX1NPVVJDRSA9IDg1Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUlOX01FTUJFUlNISVBTID0gMzEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDQwOTUKLUlQX01BWF9TT1VSQ0VfRklMVEVSID0gMTAyNAotTUNBU1RfSU5DTFVERSA9IDEKLU1DQVNUX0VYQ0xVREUgPSAyCi1JUF9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQX1BPUlRSQU5HRV9ISUdIID0gMQotSVBfUE9SVFJBTkdFX0xPVyA9IDIKLUlQUFJPVE9fTUFYSUQgPSAoSVBQUk9UT19BSCArIDEpCi1JUENUTF9GT1JXQVJESU5HID0gMQotSVBDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQQ1RMX0RFRlRUTCA9IDMKLUlQQ1RMX0RFRk1UVSA9IDQKLUlQQ1RMX1JURVhQSVJFID0gNQotSVBDVExfUlRNSU5FWFBJUkUgPSA2Ci1JUENUTF9SVE1BWENBQ0hFID0gNwotSVBDVExfU09VUkNFUk9VVEUgPSA4Ci1JUENUTF9ESVJFQ1RFREJST0FEQ0FTVCA9IDkKLUlQQ1RMX0lOVFJRTUFYTEVOID0gMTAKLUlQQ1RMX0lOVFJRRFJPUFMgPSAxMQotSVBDVExfU1RBVFMgPSAxMgotSVBDVExfQUNDRVBUU09VUkNFUk9VVEUgPSAxMwotSVBDVExfRkFTVEZPUldBUkRJTkcgPSAxNAotSVBDVExfS0VFUEZBSVRIID0gMTUKLUlQQ1RMX0dJRl9UVEwgPSAxNgotSVBDVExfTUFYSUQgPSAxNwotZGVmIGluX251bGxob3N0KHgpOiByZXR1cm4gKCh4KS5zX2FkZHIgPT0gSU5BRERSX0FOWSkKLQotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldDYvaW42LmgKLV9fS0FNRV9WRVJTSU9OID0gIkZyZWVCU0QiCi1JUFY2UE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQVjZQT1JUX0FOT05NSU4gPSA0OTE1MgotSVBWNlBPUlRfQU5PTk1BWCA9IDY1NTM1Ci1JUFY2UE9SVF9SRVNFUlZFRE1JTiA9IDYwMAotSVBWNlBPUlRfUkVTRVJWRURNQVggPSAoSVBWNlBPUlRfUkVTRVJWRUQtMSkKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDEKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAyCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gKC0xNjcxMTY4MCkKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAoLTE2NjQ2MTQ0KQotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gKC02NTUzNikKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweDgwZmUKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGMwZmUKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweDAyZmYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9JTlRGQUNFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLUlQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLUlQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1fX0lQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1fX0lQVjZfQUREUl9TQ09QRV9JTlRGQUNFTE9DQUwgPSAweDAxCi1fX0lQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1fX0lQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1fX0lQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLV9fSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19JTlRGQUNFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9FTUJFRChhKTogcmV0dXJuIFwKLQotZGVmIElGQTZfSVNfREVQUkVDQVRFRChhKTogcmV0dXJuIFwKLQotZGVmIElGQTZfSVNfSU5WQUxJRChhKTogcmV0dXJuIFwKLQotSVBWNl9PUFRJT05TID0gMQotSVBWNl9SRUNWT1BUUyA9IDUKLUlQVjZfUkVDVlJFVE9QVFMgPSA2Ci1JUFY2X1JFQ1ZEU1RBRERSID0gNwotSVBWNl9SRVRPUFRTID0gOAotSVBWNl9TT0NLT1BUX1JFU0VSVkVEMSA9IDMKLUlQVjZfVU5JQ0FTVF9IT1BTID0gNAotSVBWNl9NVUxUSUNBU1RfSUYgPSA5Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTAKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBWNl9KT0lOX0dST1VQID0gMTIKLUlQVjZfTEVBVkVfR1JPVVAgPSAxMwotSVBWNl9QT1JUUkFOR0UgPSAxNAotSUNNUDZfRklMVEVSID0gMTgKLUlQVjZfMjI5MlBLVElORk8gPSAxOQotSVBWNl8yMjkySE9QTElNSVQgPSAyMAotSVBWNl8yMjkyTkVYVEhPUCA9IDIxCi1JUFY2XzIyOTJIT1BPUFRTID0gMjIKLUlQVjZfMjI5MkRTVE9QVFMgPSAyMwotSVBWNl8yMjkyUlRIRFIgPSAyNAotSVBWNl8yMjkyUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfVjZPTkxZID0gMjcKLUlQVjZfQklORFY2T05MWSA9IElQVjZfVjZPTkxZCi1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJEU1RPUFRTID0gMzUKLUlQVjZfUkVDVlBLVElORk8gPSAzNgotSVBWNl9SRUNWSE9QTElNSVQgPSAzNwotSVBWNl9SRUNWUlRIRFIgPSAzOAotSVBWNl9SRUNWSE9QT1BUUyA9IDM5Ci1JUFY2X1JFQ1ZEU1RPUFRTID0gNDAKLUlQVjZfUkVDVlJUSERSRFNUT1BUUyA9IDQxCi1JUFY2X1VTRV9NSU5fTVRVID0gNDIKLUlQVjZfUkVDVlBBVEhNVFUgPSA0MwotSVBWNl9QQVRITVRVID0gNDQKLUlQVjZfUkVBQ0hDT05GID0gNDUKLUlQVjZfUEtUSU5GTyA9IDQ2Ci1JUFY2X0hPUExJTUlUID0gNDcKLUlQVjZfTkVYVEhPUCA9IDQ4Ci1JUFY2X0hPUE9QVFMgPSA0OQotSVBWNl9EU1RPUFRTID0gNTAKLUlQVjZfUlRIRFIgPSA1MQotSVBWNl9QS1RPUFRJT05TID0gNTIKLUlQVjZfUkVDVlRDTEFTUyA9IDU3Ci1JUFY2X0FVVE9GTE9XTEFCRUwgPSA1OQotSVBWNl9UQ0xBU1MgPSA2MQotSVBWNl9ET05URlJBRyA9IDYyCi1JUFY2X1BSRUZFUl9URU1QQUREUiA9IDYzCi1JUFY2X01TRklMVEVSID0gNzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfUFJFRkVSX1RFTVBBRERSID0gMzcKLUlQVjZDVExfQUREUkNUTFBPTElDWSA9IDM4Ci1JUFY2Q1RMX1VTRV9ERUZBVUxUWk9ORSA9IDM5Ci1JUFY2Q1RMX01BWEZSQUdTID0gNDEKLUlQVjZDVExfSUZRID0gNDIKLUlQVjZDVExfSVNBVEFQUlRSID0gNDMKLUlQVjZDVExfTUNBU1RfUE1UVSA9IDQ0Ci1JUFY2Q1RMX1NURUFMVEggPSA0NQotSVBWNkNUTF9NQVhJRCA9IDQ2CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNy9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q3L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q3L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkOC9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q4L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTNiM2EyLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q4L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTcxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX19HTlVDTElLRV9BU00gPSAzCi1fX0dOVUNMSUtFX0FTTSA9IDIKLV9fR05VQ0xJS0VfX19UWVBFT0YgPSAxCi1fX0dOVUNMSUtFX19fT0ZGU0VUT0YgPSAxCi1fX0dOVUNMSUtFX19fU0VDVElPTiA9IDEKLV9fR05VQ0xJS0VfQVRUUklCVVRFX01PREVfREkgPSAxCi1fX0dOVUNMSUtFX0NUT1JfU0VDVElPTl9IQU5ETElORyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9DT05TVEFOVF9QID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBUkFSR1MgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fU1REQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBQUxJU1QgPSAxCi1fX0dOVUNfVkFfTElTVF9DT01QQVRJQklMSVRZID0gMQotX19HTlVDTElLRV9CVUlMVElOX05FWFRfQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX01FTUNQWSA9IDEKLV9fQ0NfU1VQUE9SVFNfSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkVfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfX19GVU5DX18gPSAxCi1fX0NDX1NVUFBPUlRTX1dBUk5JTkcgPSAxCi1fX0NDX1NVUFBPUlRTX1ZBUkFESUNfWFhYID0gMQotX19DQ19TVVBQT1JUU19EWU5BTUlDX0FSUkFZX0lOSVQgPSAxCi1fX0NDX0lOVF9JU18zMkJJVCA9IDEKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19YU1RSSU5HKHgpOiByZXR1cm4gX19TVFJJTkcoeCkKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX25vbm51bGwoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyh4KSkpCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMSkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMCkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19mb3JtYXRfYXJnKGZtdGFyZyk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9hcmdfXyAoZm10YXJnKSkpCi0KLWRlZiBfX0ZCU0RJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSURfU09VUkNFKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkX3NvdXJjZV8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19zY2NzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fY29weXJpZ2h0XyxfX0xJTkVfXykscykKLQotX1BPU0lYX0NfU09VUkNFID0gMTk5MDA5Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkyMDkKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDUwMAotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTg4MDgKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMTk5NTA2Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkzMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTIwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MDA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTg4MDgKLV9fSVNPX0NfVklTSUJMRSA9IDAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9fQlNEX1ZJU0lCTEUgPSAxCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLV9RVUFEX0hJR0hXT1JEID0gMQotX1FVQURfTE9XV09SRCA9IDAKLV9MSVRUTEVfRU5ESUFOID0gMTIzNAotX0JJR19FTkRJQU4gPSA0MzIxCi1fUERQX0VORElBTiA9IDM0MTIKLV9CWVRFX09SREVSID0gX0xJVFRMRV9FTkRJQU4KLUxJVFRMRV9FTkRJQU4gPSBfTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfQllURV9PUkRFUgotZGVmIF9fd29yZF9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnQoeCk6IHJldHVybiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50KHgpOiByZXR1cm4gX19ieXRlX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfd29yZF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfd29yZCh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX3dvcmRfdmFyKHgpCi0KLWRlZiBfX2h0b25sKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX2h0b25zKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLWRlZiBfX250b2hsKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX250b2hzKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fVURQID0gMTcKLWRlZiBodG9ubCh4KTogcmV0dXJuIF9faHRvbmwoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19odG9ucyh4KQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiBfX250b2hsKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuIF9fbnRvaHMoeCkKLQotSVBQUk9UT19SQVcgPSAyNTUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19TVCA9IDcKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QSUdQID0gOQotSVBQUk9UT19SQ0NNT04gPSAxMAotSVBQUk9UT19OVlBJSSA9IDExCi1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX0FSR1VTID0gMTMKLUlQUFJPVE9fRU1DT04gPSAxNAotSVBQUk9UT19YTkVUID0gMTUKLUlQUFJPVE9fQ0hBT1MgPSAxNgotSVBQUk9UT19NVVggPSAxOAotSVBQUk9UT19NRUFTID0gMTkKLUlQUFJPVE9fSE1QID0gMjAKLUlQUFJPVE9fUFJNID0gMjEKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFJVTksxID0gMjMKLUlQUFJPVE9fVFJVTksyID0gMjQKLUlQUFJPVE9fTEVBRjEgPSAyNQotSVBQUk9UT19MRUFGMiA9IDI2Ci1JUFBST1RPX1JEUCA9IDI3Ci1JUFBST1RPX0lSVFAgPSAyOAotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0JMVCA9IDMwCi1JUFBST1RPX05TUCA9IDMxCi1JUFBST1RPX0lOUCA9IDMyCi1JUFBST1RPX1NFUCA9IDMzCi1JUFBST1RPXzNQQyA9IDM0Ci1JUFBST1RPX0lEUFIgPSAzNQotSVBQUk9UT19YVFAgPSAzNgotSVBQUk9UT19ERFAgPSAzNwotSVBQUk9UT19DTVRQID0gMzgKLUlQUFJPVE9fVFBYWCA9IDM5Ci1JUFBST1RPX0lMID0gNDAKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1NEUlAgPSA0MgotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19JRFJQID0gNDUKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0dSRSA9IDQ3Ci1JUFBST1RPX01IUlAgPSA0OAotSVBQUk9UT19CSEEgPSA0OQotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lOTFNQID0gNTIKLUlQUFJPVE9fU1dJUEUgPSA1MwotSVBQUk9UT19OSFJQID0gNTQKLUlQUFJPVE9fTU9CSUxFID0gNTUKLUlQUFJPVE9fVExTUCA9IDU2Ci1JUFBST1RPX1NLSVAgPSA1NwotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fU0NUUCA9IDEzMgotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fQ0FSUCA9IDExMgotSVBQUk9UT19QR00gPSAxMTMKLUlQUFJPVE9fUEZTWU5DID0gMjQwCi1JUFBST1RPX09MRF9ESVZFUlQgPSAyNTQKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUFJPVE9fRElWRVJUID0gMjU4Ci1JUFBST1RPX1NQQUNFUiA9IDMyNzY3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLUlQUE9SVF9NQVggPSA2NTUzNQotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOX0NMQVNTRF9ORVQgPSAoLTI2ODQzNTQ1NikKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0xJTktMT0NBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTY1NTM2KSkgPT0gKC0xNDQyOTcxNjQ4KSkKLQotZGVmIElOX0xPQ0FMX0dST1VQKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjU2KSkgPT0gKC01MzY4NzA5MTIpKQotCi1JTkFERFJfTk9ORSA9ICgtMSkKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1NFTkRTUkNBRERSID0gSVBfUkVDVkRTVEFERFIKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX09ORVNCQ0FTVCA9IDIzCi1JUF9GV19UQUJMRV9BREQgPSA0MAotSVBfRldfVEFCTEVfREVMID0gNDEKLUlQX0ZXX1RBQkxFX0ZMVVNIID0gNDIKLUlQX0ZXX1RBQkxFX0dFVFNJWkUgPSA0MwotSVBfRldfVEFCTEVfTElTVCA9IDQ0Ci1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0ZXX05BVF9DRkcgPSA1NgotSVBfRldfTkFUX0RFTCA9IDU3Ci1JUF9GV19OQVRfR0VUX0NPTkZJRyA9IDU4Ci1JUF9GV19OQVRfR0VUX0xPRyA9IDU5Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9SRUNWVFRMID0gNjUKLUlQX01JTlRUTCA9IDY2Ci1JUF9ET05URlJBRyA9IDY3Ci1JUF9BRERfU09VUkNFX01FTUJFUlNISVAgPSA3MAotSVBfRFJPUF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcxCi1JUF9CTE9DS19TT1VSQ0UgPSA3MgotSVBfVU5CTE9DS19TT1VSQ0UgPSA3MwotSVBfTVNGSUxURVIgPSA3NAotTUNBU1RfSk9JTl9HUk9VUCA9IDgwCi1NQ0FTVF9MRUFWRV9HUk9VUCA9IDgxCi1NQ0FTVF9KT0lOX1NPVVJDRV9HUk9VUCA9IDgyCi1NQ0FTVF9MRUFWRV9TT1VSQ0VfR1JPVVAgPSA4MwotTUNBU1RfQkxPQ0tfU09VUkNFID0gODQKLU1DQVNUX1VOQkxPQ0tfU09VUkNFID0gODUKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NSU5fTUVNQkVSU0hJUFMgPSAzMQotSVBfTUFYX01FTUJFUlNISVBTID0gNDA5NQotSVBfTUFYX1NPVVJDRV9GSUxURVIgPSAxMDI0Ci1NQ0FTVF9JTkNMVURFID0gMQotTUNBU1RfRVhDTFVERSA9IDIKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiRnJlZUJTRCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAoLTE2NzExNjgwKQotSVBWNl9BRERSX0lOVDMyX01MTCA9ICgtMTY2NDYxNDQpCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHgwMDAwZmZmZgotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ZmU4MAotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4ZmVjMAotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4ZmYwMgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDB4MDEwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAweDAyMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHgwMDAwMDFmZgotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4MDAwMDAyZmYKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAoLTY1NTM2KQotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0lOVEZBQ0VMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0VNQkVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19ERVBSRUNBVEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19JTlZBTElEKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl8yMjkyUEtUSU5GTyA9IDE5Ci1JUFY2XzIyOTJIT1BMSU1JVCA9IDIwCi1JUFY2XzIyOTJORVhUSE9QID0gMjEKLUlQVjZfMjI5MkhPUE9QVFMgPSAyMgotSVBWNl8yMjkyRFNUT1BUUyA9IDIzCi1JUFY2XzIyOTJSVEhEUiA9IDI0Ci1JUFY2XzIyOTJQS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUkRTVE9QVFMgPSAzNQotSVBWNl9SRUNWUEtUSU5GTyA9IDM2Ci1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDM3Ci1JUFY2X1JFQ1ZSVEhEUiA9IDM4Ci1JUFY2X1JFQ1ZIT1BPUFRTID0gMzkKLUlQVjZfUkVDVkRTVE9QVFMgPSA0MAotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gNDEKLUlQVjZfVVNFX01JTl9NVFUgPSA0MgotSVBWNl9SRUNWUEFUSE1UVSA9IDQzCi1JUFY2X1BBVEhNVFUgPSA0NAotSVBWNl9SRUFDSENPTkYgPSA0NQotSVBWNl9QS1RJTkZPID0gNDYKLUlQVjZfSE9QTElNSVQgPSA0NwotSVBWNl9ORVhUSE9QID0gNDgKLUlQVjZfSE9QT1BUUyA9IDQ5Ci1JUFY2X0RTVE9QVFMgPSA1MAotSVBWNl9SVEhEUiA9IDUxCi1JUFY2X1BLVE9QVElPTlMgPSA1MgotSVBWNl9SRUNWVENMQVNTID0gNTcKLUlQVjZfQVVUT0ZMT1dMQUJFTCA9IDU5Ci1JUFY2X1RDTEFTUyA9IDYxCi1JUFY2X0RPTlRGUkFHID0gNjIKLUlQVjZfUFJFRkVSX1RFTVBBRERSID0gNjMKLUlQVjZfTVNGSUxURVIgPSA3NAotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0hPUFMgPSAxCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBWNl9QT1JUUkFOR0VfSElHSCA9IDEKLUlQVjZfUE9SVFJBTkdFX0xPVyA9IDIKLUlQVjZQUk9UT19NQVhJRCA9IChJUFBST1RPX1BJTSArIDEpCi1JUFY2Q1RMX0ZPUldBUkRJTkcgPSAxCi1JUFY2Q1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUFY2Q1RMX0RFRkhMSU0gPSAzCi1JUFY2Q1RMX0RFRk1UVSA9IDQKLUlQVjZDVExfRk9SV1NSQ1JUID0gNQotSVBWNkNUTF9TVEFUUyA9IDYKLUlQVjZDVExfTVJUU1RBVFMgPSA3Ci1JUFY2Q1RMX01SVFBST1RPID0gOAotSVBWNkNUTF9NQVhGUkFHUEFDS0VUUyA9IDkKLUlQVjZDVExfU09VUkNFQ0hFQ0sgPSAxMAotSVBWNkNUTF9TT1VSQ0VDSEVDS19MT0dJTlQgPSAxMQotSVBWNkNUTF9BQ0NFUFRfUlRBRFYgPSAxMgotSVBWNkNUTF9LRUVQRkFJVEggPSAxMwotSVBWNkNUTF9MT0dfSU5URVJWQUwgPSAxNAotSVBWNkNUTF9IRFJORVNUTElNSVQgPSAxNQotSVBWNkNUTF9EQURfQ09VTlQgPSAxNgotSVBWNkNUTF9BVVRPX0ZMT1dMQUJFTCA9IDE3Ci1JUFY2Q1RMX0RFRk1DQVNUSExJTSA9IDE4Ci1JUFY2Q1RMX0dJRl9ITElNID0gMTkKLUlQVjZDVExfS0FNRV9WRVJTSU9OID0gMjAKLUlQVjZDVExfVVNFX0RFUFJFQ0FURUQgPSAyMQotSVBWNkNUTF9SUl9QUlVORSA9IDIyCi1JUFY2Q1RMX01BUFBFRF9BRERSID0gMjMKLUlQVjZDVExfVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9VU0VURU1QQUREUiA9IDMyCi1JUFY2Q1RMX1RFTVBQTFRJTUUgPSAzMwotSVBWNkNUTF9URU1QVkxUSU1FID0gMzQKLUlQVjZDVExfQVVUT19MSU5LTE9DQUwgPSAzNQotSVBWNkNUTF9SSVA2U1RBVFMgPSAzNgotSVBWNkNUTF9QUkVGRVJfVEVNUEFERFIgPSAzNwotSVBWNkNUTF9BRERSQ1RMUE9MSUNZID0gMzgKLUlQVjZDVExfVVNFX0RFRkFVTFRaT05FID0gMzkKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9JRlEgPSA0MgotSVBWNkNUTF9JU0FUQVBSVFIgPSA0MwotSVBWNkNUTF9NQ0FTVF9QTVRVID0gNDQKLUlQVjZDVExfU1RFQUxUSCA9IDQ1Ci1JUFY2Q1RMX01BWElEID0gNDYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q4L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDgvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDgvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWdlbmVyaWMvcmVnZW4gYi9MaWIvcGxhdC1nZW5lcmljL3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjOTYxNjdkLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWdlbmVyaWMvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotZXZhbCAkUFlUSE9OX0ZPUl9CVUlMRCAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgIicodV9sb25nKSciIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4L0NEUk9NLnB5IGIvTGliL3BsYXQtbGludXgvQ0RST00ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzNDA5MzYuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtbGludXgvQ0RST00ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9saW51eC9jZHJvbS5oCi0KLUNEUk9NUEFVU0UgPSAweDUzMDEKLUNEUk9NUkVTVU1FID0gMHg1MzAyCi1DRFJPTVBMQVlNU0YgPSAweDUzMDMKLUNEUk9NUExBWVRSS0lORCA9IDB4NTMwNAotQ0RST01SRUFEVE9DSERSID0gMHg1MzA1Ci1DRFJPTVJFQURUT0NFTlRSWSA9IDB4NTMwNgotQ0RST01TVE9QID0gMHg1MzA3Ci1DRFJPTVNUQVJUID0gMHg1MzA4Ci1DRFJPTUVKRUNUID0gMHg1MzA5Ci1DRFJPTVZPTENUUkwgPSAweDUzMGEKLUNEUk9NU1VCQ0hOTCA9IDB4NTMwYgotQ0RST01SRUFETU9ERTIgPSAweDUzMGMKLUNEUk9NUkVBRE1PREUxID0gMHg1MzBkCi1DRFJPTVJFQURBVURJTyA9IDB4NTMwZQotQ0RST01FSkVDVF9TVyA9IDB4NTMwZgotQ0RST01NVUxUSVNFU1NJT04gPSAweDUzMTAKLUNEUk9NX0dFVF9NQ04gPSAweDUzMTEKLUNEUk9NX0dFVF9VUEMgPSBDRFJPTV9HRVRfTUNOCi1DRFJPTVJFU0VUID0gMHg1MzEyCi1DRFJPTVZPTFJFQUQgPSAweDUzMTMKLUNEUk9NUkVBRFJBVyA9IDB4NTMxNAotQ0RST01SRUFEQ09PS0VEID0gMHg1MzE1Ci1DRFJPTVNFRUsgPSAweDUzMTYKLUNEUk9NUExBWUJMSyA9IDB4NTMxNwotQ0RST01SRUFEQUxMID0gMHg1MzE4Ci1DRFJPTUdFVFNQSU5ET1dOID0gMHg1MzFkCi1DRFJPTVNFVFNQSU5ET1dOID0gMHg1MzFlCi1DRFJPTUNMT1NFVFJBWSA9IDB4NTMxOQotQ0RST01fU0VUX09QVElPTlMgPSAweDUzMjAKLUNEUk9NX0NMRUFSX09QVElPTlMgPSAweDUzMjEKLUNEUk9NX1NFTEVDVF9TUEVFRCA9IDB4NTMyMgotQ0RST01fU0VMRUNUX0RJU0MgPSAweDUzMjMKLUNEUk9NX01FRElBX0NIQU5HRUQgPSAweDUzMjUKLUNEUk9NX0RSSVZFX1NUQVRVUyA9IDB4NTMyNgotQ0RST01fRElTQ19TVEFUVVMgPSAweDUzMjcKLUNEUk9NX0NIQU5HRVJfTlNMT1RTID0gMHg1MzI4Ci1DRFJPTV9MT0NLRE9PUiA9IDB4NTMyOQotQ0RST01fREVCVUcgPSAweDUzMzAKLUNEUk9NX0dFVF9DQVBBQklMSVRZID0gMHg1MzMxCi1DRFJPTUFVRElPQlVGU0laID0gMHg1MzgyCi1EVkRfUkVBRF9TVFJVQ1QgPSAweDUzOTAKLURWRF9XUklURV9TVFJVQ1QgPSAweDUzOTEKLURWRF9BVVRIID0gMHg1MzkyCi1DRFJPTV9TRU5EX1BBQ0tFVCA9IDB4NTM5MwotQ0RST01fTkVYVF9XUklUQUJMRSA9IDB4NTM5NAotQ0RST01fTEFTVF9XUklUVEVOID0gMHg1Mzk1Ci1DRFJPTV9QQUNLRVRfU0laRSA9IDEyCi1DR0NfREFUQV9VTktOT1dOID0gMAotQ0dDX0RBVEFfV1JJVEUgPSAxCi1DR0NfREFUQV9SRUFEID0gMgotQ0dDX0RBVEFfTk9ORSA9IDMKLUNEX01JTlMgPSA3NAotQ0RfU0VDUyA9IDYwCi1DRF9GUkFNRVMgPSA3NQotQ0RfU1lOQ19TSVpFID0gMTIKLUNEX01TRl9PRkZTRVQgPSAxNTAKLUNEX0NIVU5LX1NJWkUgPSAyNAotQ0RfTlVNX09GX0NIVU5LUyA9IDk4Ci1DRF9GUkFNRVNJWkVfU1VCID0gOTYKLUNEX0hFQURfU0laRSA9IDQKLUNEX1NVQkhFQURfU0laRSA9IDgKLUNEX0VEQ19TSVpFID0gNAotQ0RfWkVST19TSVpFID0gOAotQ0RfRUNDX1NJWkUgPSAyNzYKLUNEX0ZSQU1FU0laRSA9IDIwNDgKLUNEX0ZSQU1FU0laRV9SQVcgPSAyMzUyCi1DRF9GUkFNRVNJWkVfUkFXRVIgPSAyNjQ2Ci1DRF9GUkFNRVNJWkVfUkFXMSA9IChDRF9GUkFNRVNJWkVfUkFXLUNEX1NZTkNfU0laRSkKLUNEX0ZSQU1FU0laRV9SQVcwID0gKENEX0ZSQU1FU0laRV9SQVctQ0RfU1lOQ19TSVpFLUNEX0hFQURfU0laRSkKLUNEX1hBX0hFQUQgPSAoQ0RfSEVBRF9TSVpFK0NEX1NVQkhFQURfU0laRSkKLUNEX1hBX1RBSUwgPSAoQ0RfRURDX1NJWkUrQ0RfRUNDX1NJWkUpCi1DRF9YQV9TWU5DX0hFQUQgPSAoQ0RfU1lOQ19TSVpFK0NEX1hBX0hFQUQpCi1DRFJPTV9MQkEgPSAweDAxCi1DRFJPTV9NU0YgPSAweDAyCi1DRFJPTV9EQVRBX1RSQUNLID0gMHgwNAotQ0RST01fTEVBRE9VVCA9IDB4QUEKLUNEUk9NX0FVRElPX0lOVkFMSUQgPSAweDAwCi1DRFJPTV9BVURJT19QTEFZID0gMHgxMQotQ0RST01fQVVESU9fUEFVU0VEID0gMHgxMgotQ0RST01fQVVESU9fQ09NUExFVEVEID0gMHgxMwotQ0RST01fQVVESU9fRVJST1IgPSAweDE0Ci1DRFJPTV9BVURJT19OT19TVEFUVVMgPSAweDE1Ci1DRENfQ0xPU0VfVFJBWSA9IDB4MQotQ0RDX09QRU5fVFJBWSA9IDB4MgotQ0RDX0xPQ0sgPSAweDQKLUNEQ19TRUxFQ1RfU1BFRUQgPSAweDgKLUNEQ19TRUxFQ1RfRElTQyA9IDB4MTAKLUNEQ19NVUxUSV9TRVNTSU9OID0gMHgyMAotQ0RDX01DTiA9IDB4NDAKLUNEQ19NRURJQV9DSEFOR0VEID0gMHg4MAotQ0RDX1BMQVlfQVVESU8gPSAweDEwMAotQ0RDX1JFU0VUID0gMHgyMDAKLUNEQ19JT0NUTFMgPSAweDQwMAotQ0RDX0RSSVZFX1NUQVRVUyA9IDB4ODAwCi1DRENfR0VORVJJQ19QQUNLRVQgPSAweDEwMDAKLUNEQ19DRF9SID0gMHgyMDAwCi1DRENfQ0RfUlcgPSAweDQwMDAKLUNEQ19EVkQgPSAweDgwMDAKLUNEQ19EVkRfUiA9IDB4MTAwMDAKLUNEQ19EVkRfUkFNID0gMHgyMDAwMAotQ0RTX05PX0lORk8gPSAwCi1DRFNfTk9fRElTQyA9IDEKLUNEU19UUkFZX09QRU4gPSAyCi1DRFNfRFJJVkVfTk9UX1JFQURZID0gMwotQ0RTX0RJU0NfT0sgPSA0Ci1DRFNfQVVESU8gPSAxMDAKLUNEU19EQVRBXzEgPSAxMDEKLUNEU19EQVRBXzIgPSAxMDIKLUNEU19YQV8yXzEgPSAxMDMKLUNEU19YQV8yXzIgPSAxMDQKLUNEU19NSVhFRCA9IDEwNQotQ0RPX0FVVE9fQ0xPU0UgPSAweDEKLUNET19BVVRPX0VKRUNUID0gMHgyCi1DRE9fVVNFX0ZGTEFHUyA9IDB4NAotQ0RPX0xPQ0sgPSAweDgKLUNET19DSEVDS19UWVBFID0gMHgxMAotQ0RfUEFSVF9NQVggPSA2NAotQ0RfUEFSVF9NQVNLID0gKENEX1BBUlRfTUFYIC0gMSkKLUdQQ01EX0JMQU5LID0gMHhhMQotR1BDTURfQ0xPU0VfVFJBQ0sgPSAweDViCi1HUENNRF9GTFVTSF9DQUNIRSA9IDB4MzUKLUdQQ01EX0ZPUk1BVF9VTklUID0gMHgwNAotR1BDTURfR0VUX0NPTkZJR1VSQVRJT04gPSAweDQ2Ci1HUENNRF9HRVRfRVZFTlRfU1RBVFVTX05PVElGSUNBVElPTiA9IDB4NGEKLUdQQ01EX0dFVF9QRVJGT1JNQU5DRSA9IDB4YWMKLUdQQ01EX0lOUVVJUlkgPSAweDEyCi1HUENNRF9MT0FEX1VOTE9BRCA9IDB4YTYKLUdQQ01EX01FQ0hBTklTTV9TVEFUVVMgPSAweGJkCi1HUENNRF9NT0RFX1NFTEVDVF8xMCA9IDB4NTUKLUdQQ01EX01PREVfU0VOU0VfMTAgPSAweDVhCi1HUENNRF9QQVVTRV9SRVNVTUUgPSAweDRiCi1HUENNRF9QTEFZX0FVRElPXzEwID0gMHg0NQotR1BDTURfUExBWV9BVURJT19NU0YgPSAweDQ3Ci1HUENNRF9QTEFZX0FVRElPX1RJID0gMHg0OAotR1BDTURfUExBWV9DRCA9IDB4YmMKLUdQQ01EX1BSRVZFTlRfQUxMT1dfTUVESVVNX1JFTU9WQUwgPSAweDFlCi1HUENNRF9SRUFEXzEwID0gMHgyOAotR1BDTURfUkVBRF8xMiA9IDB4YTgKLUdQQ01EX1JFQURfQ0RWRF9DQVBBQ0lUWSA9IDB4MjUKLUdQQ01EX1JFQURfQ0QgPSAweGJlCi1HUENNRF9SRUFEX0NEX01TRiA9IDB4YjkKLUdQQ01EX1JFQURfRElTQ19JTkZPID0gMHg1MQotR1BDTURfUkVBRF9EVkRfU1RSVUNUVVJFID0gMHhhZAotR1BDTURfUkVBRF9GT1JNQVRfQ0FQQUNJVElFUyA9IDB4MjMKLUdQQ01EX1JFQURfSEVBREVSID0gMHg0NAotR1BDTURfUkVBRF9UUkFDS19SWk9ORV9JTkZPID0gMHg1MgotR1BDTURfUkVBRF9TVUJDSEFOTkVMID0gMHg0MgotR1BDTURfUkVBRF9UT0NfUE1BX0FUSVAgPSAweDQzCi1HUENNRF9SRVBBSVJfUlpPTkVfVFJBQ0sgPSAweDU4Ci1HUENNRF9SRVBPUlRfS0VZID0gMHhhNAotR1BDTURfUkVRVUVTVF9TRU5TRSA9IDB4MDMKLUdQQ01EX1JFU0VSVkVfUlpPTkVfVFJBQ0sgPSAweDUzCi1HUENNRF9TQ0FOID0gMHhiYQotR1BDTURfU0VFSyA9IDB4MmIKLUdQQ01EX1NFTkRfRFZEX1NUUlVDVFVSRSA9IDB4YWQKLUdQQ01EX1NFTkRfRVZFTlQgPSAweGEyCi1HUENNRF9TRU5EX0tFWSA9IDB4YTMKLUdQQ01EX1NFTkRfT1BDID0gMHg1NAotR1BDTURfU0VUX1JFQURfQUhFQUQgPSAweGE3Ci1HUENNRF9TRVRfU1RSRUFNSU5HID0gMHhiNgotR1BDTURfU1RBUlRfU1RPUF9VTklUID0gMHgxYgotR1BDTURfU1RPUF9QTEFZX1NDQU4gPSAweDRlCi1HUENNRF9URVNUX1VOSVRfUkVBRFkgPSAweDAwCi1HUENNRF9WRVJJRllfMTAgPSAweDJmCi1HUENNRF9XUklURV8xMCA9IDB4MmEKLUdQQ01EX1dSSVRFX0FORF9WRVJJRllfMTAgPSAweDJlCi1HUENNRF9TRVRfU1BFRUQgPSAweGJiCi1HUENNRF9QTEFZQVVESU9fVEkgPSAweDQ4Ci1HUENNRF9HRVRfTUVESUFfU1RBVFVTID0gMHhkYQotR1BNT0RFX1JfV19FUlJPUl9QQUdFID0gMHgwMQotR1BNT0RFX1dSSVRFX1BBUk1TX1BBR0UgPSAweDA1Ci1HUE1PREVfQVVESU9fQ1RMX1BBR0UgPSAweDBlCi1HUE1PREVfUE9XRVJfUEFHRSA9IDB4MWEKLUdQTU9ERV9GQVVMVF9GQUlMX1BBR0UgPSAweDFjCi1HUE1PREVfVE9fUFJPVEVDVF9QQUdFID0gMHgxZAotR1BNT0RFX0NBUEFCSUxJVElFU19QQUdFID0gMHgyYQotR1BNT0RFX0FMTF9QQUdFUyA9IDB4M2YKLUdQTU9ERV9DRFJPTV9QQUdFID0gMHgwZAotRFZEX1NUUlVDVF9QSFlTSUNBTCA9IDB4MDAKLURWRF9TVFJVQ1RfQ09QWVJJR0hUID0gMHgwMQotRFZEX1NUUlVDVF9ESVNDS0VZID0gMHgwMgotRFZEX1NUUlVDVF9CQ0EgPSAweDAzCi1EVkRfU1RSVUNUX01BTlVGQUNUID0gMHgwNAotRFZEX0xBWUVSUyA9IDQKLURWRF9MVV9TRU5EX0FHSUQgPSAwCi1EVkRfSE9TVF9TRU5EX0NIQUxMRU5HRSA9IDEKLURWRF9MVV9TRU5EX0tFWTEgPSAyCi1EVkRfTFVfU0VORF9DSEFMTEVOR0UgPSAzCi1EVkRfSE9TVF9TRU5EX0tFWTIgPSA0Ci1EVkRfQVVUSF9FU1RBQkxJU0hFRCA9IDUKLURWRF9BVVRIX0ZBSUxVUkUgPSA2Ci1EVkRfTFVfU0VORF9USVRMRV9LRVkgPSA3Ci1EVkRfTFVfU0VORF9BU0YgPSA4Ci1EVkRfSU5WQUxJREFURV9BR0lEID0gOQotRFZEX0xVX1NFTkRfUlBDX1NUQVRFID0gMTAKLURWRF9IT1NUX1NFTkRfUlBDX1NUQVRFID0gMTEKLURWRF9DUE1fTk9fQ09QWVJJR0hUID0gMAotRFZEX0NQTV9DT1BZUklHSFRFRCA9IDEKLURWRF9DUF9TRUNfTk9ORSA9IDAKLURWRF9DUF9TRUNfRVhJU1QgPSAxCi1EVkRfQ0dNU19VTlJFU1RSSUNURUQgPSAwCi1EVkRfQ0dNU19TSU5HTEUgPSAyCi1EVkRfQ0dNU19SRVNUUklDVEVEID0gMwotCi1DRFJPTV9NQVhfU0xPVFMgPSAyNTYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4L0RMRkNOLnB5IGIvTGliL3BsYXQtbGludXgvRExGQ04ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMTBhYzQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtbGludXgvRExGQ04ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL2RsZmNuLmgKLV9ETEZDTl9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZmVhdHVyZXMuaAotX0ZFQVRVUkVTX0ggPSAxCi1fX1VTRV9BTlNJID0gMQotX19GQVZPUl9CU0QgPSAxCi1fSVNPQzk5X1NPVVJDRSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9YT1BFTl9TT1VSQ0UgPSA2MDAKLV9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0JTRF9TT1VSQ0UgPSAxCi1fU1ZJRF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9fVVNFX1BPU0lYID0gMQotX19VU0VfUE9TSVgyID0gMQotX19VU0VfUE9TSVgxOTkzMDkgPSAxCi1fX1VTRV9QT1NJWDE5OTUwNiA9IDEKLV9fVVNFX1hPUEVOID0gMQotX19VU0VfWE9QRU5fRVhURU5ERUQgPSAxCi1fX1VTRV9VTklYOTggPSAxCi1fTEFSR0VGSUxFX1NPVVJDRSA9IDEKLV9fVVNFX1hPUEVOMksgPSAxCi1fX1VTRV9JU09DOTkgPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRklMRV9PRkZTRVQ2NCA9IDEKLV9fVVNFX01JU0MgPSAxCi1fX1VTRV9CU0QgPSAxCi1fX1VTRV9TVklEID0gMQotX19VU0VfR05VID0gMQotX19VU0VfUkVFTlRSQU5UID0gMQotX19TVERDX0lFQ181NTlfXyA9IDEKLV9fU1REQ19JRUNfNTU5X0NPTVBMRVhfXyA9IDEKLV9fU1REQ19JU09fMTA2NDZfXyA9IDIwMDAwOQotX19HTlVfTElCUkFSWV9fID0gNgotX19HTElCQ19fID0gMgotX19HTElCQ19NSU5PUl9fID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLV9TWVNfQ0RFRlNfSCA9IDEKLWRlZiBfX1BNVChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzBdCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzFdCi1kZWYgX19BU01OQU1FKGNuYW1lKTogcmV0dXJuIF9fQVNNTkFNRTIgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgY25hbWUpCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHh5eik6IHJldHVybgotCi1kZWYgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X2FyZ19fICh4KSkpCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybgotCi1fX1VTRV9MQVJHRUZJTEUgPSAxCi1fX1VTRV9MQVJHRUZJTEU2NCA9IDEKLV9fVVNFX0VYVEVSTl9JTkxJTkVTID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZ251L3N0dWJzLmgKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvZGxmY24uaAotUlRMRF9MQVpZID0gMHgwMDAwMQotUlRMRF9OT1cgPSAweDAwMDAyCi1SVExEX0JJTkRJTkdfTUFTSyA9IDB4MwotUlRMRF9OT0xPQUQgPSAweDAwMDA0Ci1SVExEX0dMT0JBTCA9IDB4MDAxMDAKLVJUTERfTE9DQUwgPSAwCi1SVExEX05PREVMRVRFID0gMHgwMTAwMApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvSU4ucHkgYi9MaWIvcGxhdC1saW51eC9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdkMzAwMi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDYxNSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotX05FVElORVRfSU5fSCA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGZlYXR1cmVzLmgKLV9GRUFUVVJFU19IID0gMQotX19VU0VfQU5TSSA9IDEKLV9fRkFWT1JfQlNEID0gMQotX0lTT0M5OV9TT1VSQ0UgPSAxCi1fUE9TSVhfU09VUkNFID0gMQotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fWE9QRU5fU09VUkNFID0gNjAwCi1fWE9QRU5fU09VUkNFX0VYVEVOREVEID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX0JTRF9TT1VSQ0UgPSAxCi1fU1ZJRF9TT1VSQ0UgPSAxCi1fX1VTRV9JU09DOTkgPSAxCi1fUE9TSVhfU09VUkNFID0gMQotX1BPU0lYX0NfU09VUkNFID0gMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fX1VTRV9QT1NJWCA9IDEKLV9fVVNFX1BPU0lYMiA9IDEKLV9fVVNFX1BPU0lYMTk5MzA5ID0gMQotX19VU0VfUE9TSVgxOTk1MDYgPSAxCi1fX1VTRV9YT1BFTiA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfVU5JWDk4ID0gMQotX0xBUkdFRklMRV9TT1VSQ0UgPSAxCi1fX1VTRV9YT1BFTjJLID0gMQotX19VU0VfSVNPQzk5ID0gMQotX19VU0VfWE9QRU5fRVhURU5ERUQgPSAxCi1fX1VTRV9MQVJHRUZJTEUgPSAxCi1fX1VTRV9MQVJHRUZJTEU2NCA9IDEKLV9fVVNFX0ZJTEVfT0ZGU0VUNjQgPSAxCi1fX1VTRV9NSVNDID0gMQotX19VU0VfQlNEID0gMQotX19VU0VfU1ZJRCA9IDEKLV9fVVNFX0dOVSA9IDEKLV9fVVNFX1JFRU5UUkFOVCA9IDEKLV9fU1REQ19JRUNfNTU5X18gPSAxCi1fX1NURENfSUVDXzU1OV9DT01QTEVYX18gPSAxCi1fX1NURENfSVNPXzEwNjQ2X18gPSAyMDAwMDkKLV9fR05VX0xJQlJBUllfXyA9IDYKLV9fR0xJQkNfXyA9IDIKLV9fR0xJQkNfTUlOT1JfXyA9IDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1fU1lTX0NERUZTX0ggPSAxCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1AoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1BNVChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotX19mbGV4YXJyID0gW10KLV9fZmxleGFyciA9IFswXQotX19mbGV4YXJyID0gW10KLV9fZmxleGFyciA9IFsxXQotZGVmIF9fQVNNTkFNRShjbmFtZSk6IHJldHVybiBfX0FTTU5BTUUyIChfX1VTRVJfTEFCRUxfUFJFRklYX18sIGNuYW1lKQotCi1kZWYgX19hdHRyaWJ1dGVfXyh4eXopOiByZXR1cm4KLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9hcmdfXyAoeCkpKQotCi1kZWYgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpOiByZXR1cm4KLQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9FWFRFUk5fSU5MSU5FUyA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGdudS9zdHVicy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzdGRpbnQuaAotX1NURElOVF9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy93Y2hhci5oCi1fQklUU19XQ0hBUl9IID0gMQotX19XQ0hBUl9NSU4gPSAoLTIxNDc0ODM2NDcgLSAxKQotX19XQ0hBUl9NQVggPSAoMjE0NzQ4MzY0NykKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvd29yZHNpemUuaAotX19XT1JEU0laRSA9IDMyCi1kZWYgX19JTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMCi0KLWRlZiBfX1VJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTAotCi1kZWYgX19JTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMTAotCi1kZWYgX19VSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgVUxMCi0KLUlOVDhfTUlOID0gKC0xMjgpCi1JTlQxNl9NSU4gPSAoLTMyNzY3LTEpCi1JTlQzMl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVDY0X01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlQ4X01BWCA9ICgxMjcpCi1JTlQxNl9NQVggPSAoMzI3NjcpCi1JTlQzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVDY0X01BWCA9IChfX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNykpCi1VSU5UOF9NQVggPSAoMjU1KQotVUlOVDE2X01BWCA9ICg2NTUzNSkKLVVJTlQ2NF9NQVggPSAoX19VSU5UNjRfQygxODQ0Njc0NDA3MzcwOTU1MTYxNSkpCi1JTlRfTEVBU1Q4X01JTiA9ICgtMTI4KQotSU5UX0xFQVNUMTZfTUlOID0gKC0zMjc2Ny0xKQotSU5UX0xFQVNUMzJfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfTEVBU1Q2NF9NSU4gPSAoLV9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KS0xKQotSU5UX0xFQVNUOF9NQVggPSAoMTI3KQotSU5UX0xFQVNUMTZfTUFYID0gKDMyNzY3KQotSU5UX0xFQVNUMzJfTUFYID0gKDIxNDc0ODM2NDcpCi1JTlRfTEVBU1Q2NF9NQVggPSAoX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKQotVUlOVF9MRUFTVDhfTUFYID0gKDI1NSkKLVVJTlRfTEVBU1QxNl9NQVggPSAoNjU1MzUpCi1VSU5UX0xFQVNUNjRfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotSU5UX0ZBU1Q4X01JTiA9ICgtMTI4KQotSU5UX0ZBU1QxNl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLUlOVF9GQVNUMzJfTUlOID0gKC05MjIzMzcyMDM2ODU0Nzc1ODA3LTEpCi1JTlRfRkFTVDE2X01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UX0ZBU1QzMl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9GQVNUNjRfTUlOID0gKC1fX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNyktMSkKLUlOVF9GQVNUOF9NQVggPSAoMTI3KQotSU5UX0ZBU1QxNl9NQVggPSAoOTIyMzM3MjAzNjg1NDc3NTgwNykKLUlOVF9GQVNUMzJfTUFYID0gKDkyMjMzNzIwMzY4NTQ3NzU4MDcpCi1JTlRfRkFTVDE2X01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UX0ZBU1QzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVF9GQVNUNjRfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlRfRkFTVDhfTUFYID0gKDI1NSkKLVVJTlRfRkFTVDY0X01BWCA9IChfX1VJTlQ2NF9DKDE4NDQ2NzQ0MDczNzA5NTUxNjE1KSkKLUlOVFBUUl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLUlOVFBUUl9NQVggPSAoOTIyMzM3MjAzNjg1NDc3NTgwNykKLUlOVFBUUl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVFBUUl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVE1BWF9NSU4gPSAoLV9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KS0xKQotSU5UTUFYX01BWCA9IChfX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNykpCi1VSU5UTUFYX01BWCA9IChfX1VJTlQ2NF9DKDE4NDQ2NzQ0MDczNzA5NTUxNjE1KSkKLVBUUkRJRkZfTUlOID0gKC05MjIzMzcyMDM2ODU0Nzc1ODA3LTEpCi1QVFJESUZGX01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotUFRSRElGRl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLVBUUkRJRkZfTUFYID0gKDIxNDc0ODM2NDcpCi1TSUdfQVRPTUlDX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotU0lHX0FUT01JQ19NQVggPSAoMjE0NzQ4MzY0NykKLVdDSEFSX01JTiA9IF9fV0NIQVJfTUlOCi1XQ0hBUl9NQVggPSBfX1dDSEFSX01BWAotZGVmIElOVDhfQyhjKTogcmV0dXJuIGMKLQotZGVmIElOVDE2X0MoYyk6IHJldHVybiBjCi0KLWRlZiBJTlQzMl9DKGMpOiByZXR1cm4gYwotCi1kZWYgSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgTAotCi1kZWYgSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgTEwKLQotZGVmIFVJTlQ4X0MoYyk6IHJldHVybiBjICMjIFUKLQotZGVmIFVJTlQxNl9DKGMpOiByZXR1cm4gYyAjIyBVCi0KLWRlZiBVSU5UMzJfQyhjKTogcmV0dXJuIGMgIyMgVQotCi1kZWYgVUlOVDY0X0MoYyk6IHJldHVybiBjICMjIFVMCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgVUxMCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgTAotCi1kZWYgVUlOVE1BWF9DKGMpOiByZXR1cm4gYyAjIyBVTAotCi1kZWYgSU5UTUFYX0MoYyk6IHJldHVybiBjICMjIExMCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBjICMjIFVMTAotCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3R5cGVzLmgKLV9CSVRTX1RZUEVTX0ggPSAxCi1fX0ZEX1NFVFNJWkUgPSAxMDI0Ci0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3B0aHJlYWR0eXBlcy5oCi1fQklUU19QVEhSRUFEVFlQRVNfSCA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc2NoZWQuaAotU0NIRURfT1RIRVIgPSAwCi1TQ0hFRF9GSUZPID0gMQotU0NIRURfUlIgPSAyCi1DU0lHTkFMID0gMHgwMDAwMDBmZgotQ0xPTkVfVk0gPSAweDAwMDAwMTAwCi1DTE9ORV9GUyA9IDB4MDAwMDAyMDAKLUNMT05FX0ZJTEVTID0gMHgwMDAwMDQwMAotQ0xPTkVfU0lHSEFORCA9IDB4MDAwMDA4MDAKLUNMT05FX1BJRCA9IDB4MDAwMDEwMDAKLUNMT05FX1BUUkFDRSA9IDB4MDAwMDIwMDAKLUNMT05FX1ZGT1JLID0gMHgwMDAwNDAwMAotX19kZWZpbmVkX3NjaGVkcGFyYW0gPSAxCi1kZWYgSU5fQ0xBU1NBKGEpOiByZXR1cm4gKCgoKGluX2FkZHJfdCkoYSkpICYgKC0yMTQ3NDgzNjQ4KSkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9ICgtMTY3NzcyMTYpCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gKCgtMSkgJiB+SU5fQ0xBU1NBX05FVCkKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTEwNzM3NDE4MjQpKSA9PSAoLTIxNDc0ODM2NDgpKQotCi1JTl9DTEFTU0JfTkVUID0gKC02NTUzNikKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAoKC0xKSAmIH5JTl9DTEFTU0JfTkVUKQotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGEpOiByZXR1cm4gKCgoKGluX2FkZHJfdCkoYSkpICYgKC01MzY4NzA5MTIpKSA9PSAoLTEwNzM3NDE4MjQpKQotCi1JTl9DTEFTU0NfTkVUID0gKC0yNTYpCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAoKC0xKSAmIH5JTl9DTEFTU0NfTkVUKQotZGVmIElOX0NMQVNTRChhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC01MzY4NzA5MTIpKQotCi1kZWYgSU5fTVVMVElDQVNUKGEpOiByZXR1cm4gSU5fQ0xBU1NEKGEpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTUzNjg3MDkxMikpID09ICgtNTM2ODcwOTEyKSkKLQotZGVmIElOX0JBRENMQVNTKGEpOiByZXR1cm4gKCgoKGluX2FkZHJfdCkoYSkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBsaW1pdHMuaAotX0xJQkNfTElNSVRTX0hfID0gMQotTUJfTEVOX01BWCA9IDE2Ci1fTElNSVRTX0ggPSAxCi1DSEFSX0JJVCA9IDgKLVNDSEFSX01JTiA9ICgtMTI4KQotU0NIQVJfTUFYID0gMTI3Ci1VQ0hBUl9NQVggPSAyNTUKLUNIQVJfTUlOID0gMAotQ0hBUl9NQVggPSBVQ0hBUl9NQVgKLUNIQVJfTUlOID0gU0NIQVJfTUlOCi1DSEFSX01BWCA9IFNDSEFSX01BWAotU0hSVF9NSU4gPSAoLTMyNzY4KQotU0hSVF9NQVggPSAzMjc2NwotVVNIUlRfTUFYID0gNjU1MzUKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01BWCA9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLUxPTkdfTUFYID0gMjE0NzQ4MzY0NwotTE9OR19NSU4gPSAoLUxPTkdfTUFYIC0gMSkKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvcG9zaXgxX2xpbS5oCi1fQklUU19QT1NJWDFfTElNX0ggPSAxCi1fUE9TSVhfQUlPX0xJU1RJT19NQVggPSAyCi1fUE9TSVhfQUlPX01BWCA9IDEKLV9QT1NJWF9BUkdfTUFYID0gNDA5NgotX1BPU0lYX0NISUxEX01BWCA9IDYKLV9QT1NJWF9ERUxBWVRJTUVSX01BWCA9IDMyCi1fUE9TSVhfTElOS19NQVggPSA4Ci1fUE9TSVhfTUFYX0NBTk9OID0gMjU1Ci1fUE9TSVhfTUFYX0lOUFVUID0gMjU1Ci1fUE9TSVhfTVFfT1BFTl9NQVggPSA4Ci1fUE9TSVhfTVFfUFJJT19NQVggPSAzMgotX1BPU0lYX05HUk9VUFNfTUFYID0gMAotX1BPU0lYX09QRU5fTUFYID0gMTYKLV9QT1NJWF9GRF9TRVRTSVpFID0gX1BPU0lYX09QRU5fTUFYCi1fUE9TSVhfTkFNRV9NQVggPSAxNAotX1BPU0lYX1BBVEhfTUFYID0gMjU2Ci1fUE9TSVhfUElQRV9CVUYgPSA1MTIKLV9QT1NJWF9SVFNJR19NQVggPSA4Ci1fUE9TSVhfU0VNX05TRU1TX01BWCA9IDI1NgotX1BPU0lYX1NFTV9WQUxVRV9NQVggPSAzMjc2NwotX1BPU0lYX1NJR1FVRVVFX01BWCA9IDMyCi1fUE9TSVhfU1NJWkVfTUFYID0gMzI3NjcKLV9QT1NJWF9TVFJFQU1fTUFYID0gOAotX1BPU0lYX1RaTkFNRV9NQVggPSA2Ci1fUE9TSVhfUUxJTUlUID0gMQotX1BPU0lYX0hJV0FUID0gX1BPU0lYX1BJUEVfQlVGCi1fUE9TSVhfVUlPX01BWElPViA9IDE2Ci1fUE9TSVhfVFRZX05BTUVfTUFYID0gOQotX1BPU0lYX1RJTUVSX01BWCA9IDMyCi1fUE9TSVhfTE9HSU5fTkFNRV9NQVggPSA5Ci1fUE9TSVhfQ0xPQ0tSRVNfTUlOID0gMjAwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvbG9jYWxfbGltLmgKLQotIyBJbmNsdWRlZCBmcm9tIGxpbnV4L2xpbWl0cy5oCi1OUl9PUEVOID0gMTAyNAotTkdST1VQU19NQVggPSAzMgotQVJHX01BWCA9IDEzMTA3MgotQ0hJTERfTUFYID0gOTk5Ci1PUEVOX01BWCA9IDI1NgotTElOS19NQVggPSAxMjcKLU1BWF9DQU5PTiA9IDI1NQotTUFYX0lOUFVUID0gMjU1Ci1OQU1FX01BWCA9IDI1NQotUEFUSF9NQVggPSA0MDk2Ci1QSVBFX0JVRiA9IDQwOTYKLVJUU0lHX01BWCA9IDMyCi1fUE9TSVhfVEhSRUFEX0tFWVNfTUFYID0gMTI4Ci1QVEhSRUFEX0tFWVNfTUFYID0gMTAyNAotX1BPU0lYX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMgPSA0Ci1QVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IF9QT1NJWF9USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TCi1fUE9TSVhfVEhSRUFEX1RIUkVBRFNfTUFYID0gNjQKLVBUSFJFQURfVEhSRUFEU19NQVggPSAxMDI0Ci1BSU9fUFJJT19ERUxUQV9NQVggPSAyMAotUFRIUkVBRF9TVEFDS19NSU4gPSAxNjM4NAotVElNRVJfTUFYID0gMjU2Ci1TU0laRV9NQVggPSBMT05HX01BWAotTkdST1VQU19NQVggPSBfUE9TSVhfTkdST1VQU19NQVgKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvcG9zaXgyX2xpbS5oCi1fQklUU19QT1NJWDJfTElNX0ggPSAxCi1fUE9TSVgyX0JDX0JBU0VfTUFYID0gOTkKLV9QT1NJWDJfQkNfRElNX01BWCA9IDIwNDgKLV9QT1NJWDJfQkNfU0NBTEVfTUFYID0gOTkKLV9QT1NJWDJfQkNfU1RSSU5HX01BWCA9IDEwMDAKLV9QT1NJWDJfQ09MTF9XRUlHSFRTX01BWCA9IDIKLV9QT1NJWDJfRVhQUl9ORVNUX01BWCA9IDMyCi1fUE9TSVgyX0xJTkVfTUFYID0gMjA0OAotX1BPU0lYMl9SRV9EVVBfTUFYID0gMjU1Ci1fUE9TSVgyX0NIQVJDTEFTU19OQU1FX01BWCA9IDE0Ci1CQ19CQVNFX01BWCA9IF9QT1NJWDJfQkNfQkFTRV9NQVgKLUJDX0RJTV9NQVggPSBfUE9TSVgyX0JDX0RJTV9NQVgKLUJDX1NDQUxFX01BWCA9IF9QT1NJWDJfQkNfU0NBTEVfTUFYCi1CQ19TVFJJTkdfTUFYID0gX1BPU0lYMl9CQ19TVFJJTkdfTUFYCi1DT0xMX1dFSUdIVFNfTUFYID0gMjU1Ci1FWFBSX05FU1RfTUFYID0gX1BPU0lYMl9FWFBSX05FU1RfTUFYCi1MSU5FX01BWCA9IF9QT1NJWDJfTElORV9NQVgKLUNIQVJDTEFTU19OQU1FX01BWCA9IDIwNDgKLVJFX0RVUF9NQVggPSAoMHg3ZmZmKQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy94b3Blbl9saW0uaAotX1hPUEVOX0xJTV9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zdGRpb19saW0uaAotTF90bXBuYW0gPSAyMAotVE1QX01BWCA9IDIzODMyOAotRklMRU5BTUVfTUFYID0gNDA5NgotTF9jdGVybWlkID0gOQotTF9jdXNlcmlkID0gOQotRk9QRU5fTUFYID0gMTYKLUlPVl9NQVggPSAxMDI0Ci1fWE9QRU5fSU9WX01BWCA9IF9QT1NJWF9VSU9fTUFYSU9WCi1OTF9BUkdNQVggPSBfUE9TSVhfQVJHX01BWAotTkxfTEFOR01BWCA9IF9QT1NJWDJfTElORV9NQVgKLU5MX01TR01BWCA9IElOVF9NQVgKLU5MX05NQVggPSBJTlRfTUFYCi1OTF9TRVRNQVggPSBJTlRfTUFYCi1OTF9URVhUTUFYID0gSU5UX01BWAotTlpFUk8gPSAyMAotV09SRF9CSVQgPSAxNgotV09SRF9CSVQgPSAzMgotV09SRF9CSVQgPSA2NAotV09SRF9CSVQgPSAxNgotV09SRF9CSVQgPSAzMgotV09SRF9CSVQgPSA2NAotV09SRF9CSVQgPSAzMgotTE9OR19CSVQgPSAzMgotTE9OR19CSVQgPSA2NAotTE9OR19CSVQgPSAzMgotTE9OR19CSVQgPSA2NAotTE9OR19CSVQgPSA2NAotTE9OR19CSVQgPSAzMgotZnJvbSBUWVBFUyBpbXBvcnQgKgotUEZfVU5TUEVDID0gMAotUEZfTE9DQUwgPSAxCi1QRl9VTklYID0gUEZfTE9DQUwKLVBGX0ZJTEUgPSBQRl9MT0NBTAotUEZfSU5FVCA9IDIKLVBGX0FYMjUgPSAzCi1QRl9JUFggPSA0Ci1QRl9BUFBMRVRBTEsgPSA1Ci1QRl9ORVRST00gPSA2Ci1QRl9CUklER0UgPSA3Ci1QRl9BVE1QVkMgPSA4Ci1QRl9YMjUgPSA5Ci1QRl9JTkVUNiA9IDEwCi1QRl9ST1NFID0gMTEKLVBGX0RFQ25ldCA9IDEyCi1QRl9ORVRCRVVJID0gMTMKLVBGX1NFQ1VSSVRZID0gMTQKLVBGX0tFWSA9IDE1Ci1QRl9ORVRMSU5LID0gMTYKLVBGX1JPVVRFID0gUEZfTkVUTElOSwotUEZfUEFDS0VUID0gMTcKLVBGX0FTSCA9IDE4Ci1QRl9FQ09ORVQgPSAxOQotUEZfQVRNU1ZDID0gMjAKLVBGX1NOQSA9IDIyCi1QRl9JUkRBID0gMjMKLVBGX1BQUE9YID0gMjQKLVBGX1dBTlBJUEUgPSAyNQotUEZfQkxVRVRPT1RIID0gMzEKLVBGX01BWCA9IDMyCi1BRl9VTlNQRUMgPSBQRl9VTlNQRUMKLUFGX0xPQ0FMID0gUEZfTE9DQUwKLUFGX1VOSVggPSBQRl9VTklYCi1BRl9GSUxFID0gUEZfRklMRQotQUZfSU5FVCA9IFBGX0lORVQKLUFGX0FYMjUgPSBQRl9BWDI1Ci1BRl9JUFggPSBQRl9JUFgKLUFGX0FQUExFVEFMSyA9IFBGX0FQUExFVEFMSwotQUZfTkVUUk9NID0gUEZfTkVUUk9NCi1BRl9CUklER0UgPSBQRl9CUklER0UKLUFGX0FUTVBWQyA9IFBGX0FUTVBWQwotQUZfWDI1ID0gUEZfWDI1Ci1BRl9JTkVUNiA9IFBGX0lORVQ2Ci1BRl9ST1NFID0gUEZfUk9TRQotQUZfREVDbmV0ID0gUEZfREVDbmV0Ci1BRl9ORVRCRVVJID0gUEZfTkVUQkVVSQotQUZfU0VDVVJJVFkgPSBQRl9TRUNVUklUWQotQUZfS0VZID0gUEZfS0VZCi1BRl9ORVRMSU5LID0gUEZfTkVUTElOSwotQUZfUk9VVEUgPSBQRl9ST1VURQotQUZfUEFDS0VUID0gUEZfUEFDS0VUCi1BRl9BU0ggPSBQRl9BU0gKLUFGX0VDT05FVCA9IFBGX0VDT05FVAotQUZfQVRNU1ZDID0gUEZfQVRNU1ZDCi1BRl9TTkEgPSBQRl9TTkEKLUFGX0lSREEgPSBQRl9JUkRBCi1BRl9QUFBPWCA9IFBGX1BQUE9YCi1BRl9XQU5QSVBFID0gUEZfV0FOUElQRQotQUZfQkxVRVRPT1RIID0gUEZfQkxVRVRPT1RICi1BRl9NQVggPSBQRl9NQVgKLVNPTF9SQVcgPSAyNTUKLVNPTF9ERUNORVQgPSAyNjEKLVNPTF9YMjUgPSAyNjIKLVNPTF9QQUNLRVQgPSAyNjMKLVNPTF9BVE0gPSAyNjQKLVNPTF9BQUwgPSAyNjUKLVNPTF9JUkRBID0gMjY2Ci1TT01BWENPTk4gPSAxMjgKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc29ja2FkZHIuaAotX0JJVFNfU09DS0FERFJfSCA9IDEKLWRlZiBfX1NPQ0tBRERSX0NPTU1PTihzYV9wcmVmaXgpOiByZXR1cm4gXAotCi1fU1NfU0laRSA9IDEyOAotZGVmIENNU0dfRklSU1RIRFIobWhkcik6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIGFzbS9zb2NrZXQuaAotCi0jIEluY2x1ZGVkIGZyb20gYXNtL3NvY2tpb3MuaAotRklPU0VUT1dOID0gMHg4OTAxCi1TSU9DU1BHUlAgPSAweDg5MDIKLUZJT0dFVE9XTiA9IDB4ODkwMwotU0lPQ0dQR1JQID0gMHg4OTA0Ci1TSU9DQVRNQVJLID0gMHg4OTA1Ci1TSU9DR1NUQU1QID0gMHg4OTA2Ci1TT0xfU09DS0VUID0gMQotU09fREVCVUcgPSAxCi1TT19SRVVTRUFERFIgPSAyCi1TT19UWVBFID0gMwotU09fRVJST1IgPSA0Ci1TT19ET05UUk9VVEUgPSA1Ci1TT19CUk9BRENBU1QgPSA2Ci1TT19TTkRCVUYgPSA3Ci1TT19SQ1ZCVUYgPSA4Ci1TT19LRUVQQUxJVkUgPSA5Ci1TT19PT0JJTkxJTkUgPSAxMAotU09fTk9fQ0hFQ0sgPSAxMQotU09fUFJJT1JJVFkgPSAxMgotU09fTElOR0VSID0gMTMKLVNPX0JTRENPTVBBVCA9IDE0Ci1TT19QQVNTQ1JFRCA9IDE2Ci1TT19QRUVSQ1JFRCA9IDE3Ci1TT19SQ1ZMT1dBVCA9IDE4Ci1TT19TTkRMT1dBVCA9IDE5Ci1TT19SQ1ZUSU1FTyA9IDIwCi1TT19TTkRUSU1FTyA9IDIxCi1TT19TRUNVUklUWV9BVVRIRU5USUNBVElPTiA9IDIyCi1TT19TRUNVUklUWV9FTkNSWVBUSU9OX1RSQU5TUE9SVCA9IDIzCi1TT19TRUNVUklUWV9FTkNSWVBUSU9OX05FVFdPUksgPSAyNAotU09fQklORFRPREVWSUNFID0gMjUKLVNPX0FUVEFDSF9GSUxURVIgPSAyNgotU09fREVUQUNIX0ZJTFRFUiA9IDI3Ci1TT19QRUVSTkFNRSA9IDI4Ci1TT19USU1FU1RBTVAgPSAyOQotU0NNX1RJTUVTVEFNUCA9IFNPX1RJTUVTVEFNUAotU09fQUNDRVBUQ09OTiA9IDMwCi1TT0NLX1NUUkVBTSA9IDEKLVNPQ0tfREdSQU0gPSAyCi1TT0NLX1JBVyA9IDMKLVNPQ0tfUkRNID0gNAotU09DS19TRVFQQUNLRVQgPSA1Ci1TT0NLX1BBQ0tFVCA9IDEwCi1TT0NLX01BWCA9IChTT0NLX1BBQ0tFVCsxKQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9pbi5oCi1JUF9UT1MgPSAxCi1JUF9UVEwgPSAyCi1JUF9IRFJJTkNMID0gMwotSVBfT1BUSU9OUyA9IDQKLUlQX1JPVVRFUl9BTEVSVCA9IDUKLUlQX1JFQ1ZPUFRTID0gNgotSVBfUkVUT1BUUyA9IDcKLUlQX1BLVElORk8gPSA4Ci1JUF9QS1RPUFRJT05TID0gOQotSVBfUE1UVURJU0MgPSAxMAotSVBfTVRVX0RJU0NPVkVSID0gMTAKLUlQX1JFQ1ZFUlIgPSAxMQotSVBfUkVDVlRUTCA9IDEyCi1JUF9SRUNWVE9TID0gMTMKLUlQX01VTFRJQ0FTVF9JRiA9IDMyCi1JUF9NVUxUSUNBU1RfVFRMID0gMzMKLUlQX01VTFRJQ0FTVF9MT09QID0gMzQKLUlQX0FERF9NRU1CRVJTSElQID0gMzUKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDM2Ci1JUF9SRUNWUkVUT1BUUyA9IElQX1JFVE9QVFMKLUlQX1BNVFVESVNDX0RPTlQgPSAwCi1JUF9QTVRVRElTQ19XQU5UID0gMQotSVBfUE1UVURJU0NfRE8gPSAyCi1TT0xfSVAgPSAwCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQVjZfQUREUkZPUk0gPSAxCi1JUFY2X1BLVElORk8gPSAyCi1JUFY2X0hPUE9QVFMgPSAzCi1JUFY2X0RTVE9QVFMgPSA0Ci1JUFY2X1JUSERSID0gNQotSVBWNl9QS1RPUFRJT05TID0gNgotSVBWNl9DSEVDS1NVTSA9IDcKLUlQVjZfSE9QTElNSVQgPSA4Ci1JUFY2X05FWFRIT1AgPSA5Ci1JUFY2X0FVVEhIRFIgPSAxMAotSVBWNl9VTklDQVNUX0hPUFMgPSAxNgotSVBWNl9NVUxUSUNBU1RfSUYgPSAxNwotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDE4Ci1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTkKLUlQVjZfSk9JTl9HUk9VUCA9IDIwCi1JUFY2X0xFQVZFX0dST1VQID0gMjEKLUlQVjZfUk9VVEVSX0FMRVJUID0gMjIKLUlQVjZfTVRVX0RJU0NPVkVSID0gMjMKLUlQVjZfTVRVID0gMjQKLUlQVjZfUkVDVkVSUiA9IDI1Ci1JUFY2X1JYSE9QT1BUUyA9IElQVjZfSE9QT1BUUwotSVBWNl9SWERTVE9QVFMgPSBJUFY2X0RTVE9QVFMKLUlQVjZfQUREX01FTUJFUlNISVAgPSBJUFY2X0pPSU5fR1JPVVAKLUlQVjZfRFJPUF9NRU1CRVJTSElQID0gSVBWNl9MRUFWRV9HUk9VUAotSVBWNl9QTVRVRElTQ19ET05UID0gMAotSVBWNl9QTVRVRElTQ19XQU5UID0gMQotSVBWNl9QTVRVRElTQ19ETyA9IDIKLVNPTF9JUFY2ID0gNDEKLVNPTF9JQ01QVjYgPSA1OAotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi0KLSMgSW5jbHVkZWQgZnJvbSBlbmRpYW4uaAotX0VORElBTl9IID0gMQotX19MSVRUTEVfRU5ESUFOID0gMTIzNAotX19CSUdfRU5ESUFOID0gNDMyMQotX19QRFBfRU5ESUFOID0gMzQxMgotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9lbmRpYW4uaAotX19CWVRFX09SREVSID0gX19MSVRUTEVfRU5ESUFOCi1fX0ZMT0FUX1dPUkRfT1JERVIgPSBfX0JZVEVfT1JERVIKLUxJVFRMRV9FTkRJQU4gPSBfX0xJVFRMRV9FTkRJQU4KLUJJR19FTkRJQU4gPSBfX0JJR19FTkRJQU4KLVBEUF9FTkRJQU4gPSBfX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfX0JZVEVfT1JERVIKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvYnl0ZXN3YXAuaAotX0JJVFNfQllURVNXQVBfSCA9IDEKLWRlZiBfX2Jzd2FwX2NvbnN0YW50XzE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8xNih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnN3YXBfMTYoeCk6IHJldHVybiBfX2Jzd2FwX2NvbnN0YW50XzE2ICh4KQotCi1kZWYgX19ic3dhcF9jb25zdGFudF8zMih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnN3YXBfMzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzMyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8zMih4KTogcmV0dXJuIF9fYnN3YXBfY29uc3RhbnRfMzIgKHgpCi0KLWRlZiBfX2Jzd2FwX2NvbnN0YW50XzY0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF82NCh4KTogcmV0dXJuIFwKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fYnN3YXBfMzIgKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuIF9fYnN3YXBfMTYgKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuIF9fYnN3YXBfMzIgKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuIF9fYnN3YXBfMTYgKHgpCi0KLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4KZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4L1RZUEVTLnB5IGIvTGliL3BsYXQtbGludXgvVFlQRVMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3YTMyNGIuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtbGludXgvVFlQRVMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaAotX1NZU19UWVBFU19IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZmVhdHVyZXMuaAotX0ZFQVRVUkVTX0ggPSAxCi1fX1VTRV9BTlNJID0gMQotX19GQVZPUl9CU0QgPSAxCi1fSVNPQzk5X1NPVVJDRSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9YT1BFTl9TT1VSQ0UgPSA2MDAKLV9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0JTRF9TT1VSQ0UgPSAxCi1fU1ZJRF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9fVVNFX1BPU0lYID0gMQotX19VU0VfUE9TSVgyID0gMQotX19VU0VfUE9TSVgxOTkzMDkgPSAxCi1fX1VTRV9QT1NJWDE5OTUwNiA9IDEKLV9fVVNFX1hPUEVOID0gMQotX19VU0VfWE9QRU5fRVhURU5ERUQgPSAxCi1fX1VTRV9VTklYOTggPSAxCi1fTEFSR0VGSUxFX1NPVVJDRSA9IDEKLV9fVVNFX1hPUEVOMksgPSAxCi1fX1VTRV9JU09DOTkgPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRklMRV9PRkZTRVQ2NCA9IDEKLV9fVVNFX01JU0MgPSAxCi1fX1VTRV9CU0QgPSAxCi1fX1VTRV9TVklEID0gMQotX19VU0VfR05VID0gMQotX19VU0VfUkVFTlRSQU5UID0gMQotX19TVERDX0lFQ181NTlfXyA9IDEKLV9fU1REQ19JRUNfNTU5X0NPTVBMRVhfXyA9IDEKLV9fU1REQ19JU09fMTA2NDZfXyA9IDIwMDAwOQotX19HTlVfTElCUkFSWV9fID0gNgotX19HTElCQ19fID0gMgotX19HTElCQ19NSU5PUl9fID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLV9TWVNfQ0RFRlNfSCA9IDEKLWRlZiBfX1BNVChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzBdCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzFdCi1kZWYgX19BU01OQU1FKGNuYW1lKTogcmV0dXJuIF9fQVNNTkFNRTIgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgY25hbWUpCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHh5eik6IHJldHVybgotCi1kZWYgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X2FyZ19fICh4KSkpCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybgotCi1fX1VTRV9MQVJHRUZJTEUgPSAxCi1fX1VTRV9MQVJHRUZJTEU2NCA9IDEKLV9fVVNFX0VYVEVSTl9JTkxJTkVTID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZ251L3N0dWJzLmgKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvdHlwZXMuaAotX0JJVFNfVFlQRVNfSCA9IDEKLV9fRkRfU0VUU0laRSA9IDEwMjQKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvcHRocmVhZHR5cGVzLmgKLV9CSVRTX1BUSFJFQURUWVBFU19IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zY2hlZC5oCi1TQ0hFRF9PVEhFUiA9IDAKLVNDSEVEX0ZJRk8gPSAxCi1TQ0hFRF9SUiA9IDIKLUNTSUdOQUwgPSAweDAwMDAwMGZmCi1DTE9ORV9WTSA9IDB4MDAwMDAxMDAKLUNMT05FX0ZTID0gMHgwMDAwMDIwMAotQ0xPTkVfRklMRVMgPSAweDAwMDAwNDAwCi1DTE9ORV9TSUdIQU5EID0gMHgwMDAwMDgwMAotQ0xPTkVfUElEID0gMHgwMDAwMTAwMAotQ0xPTkVfUFRSQUNFID0gMHgwMDAwMjAwMAotQ0xPTkVfVkZPUksgPSAweDAwMDA0MDAwCi1fX2RlZmluZWRfc2NoZWRwYXJhbSA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIHRpbWUuaAotX1RJTUVfSCA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvdGltZS5oCi1fQklUU19USU1FX0ggPSAxCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLUNMT0NLX1JFQUxUSU1FID0gMAotQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEID0gMgotQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQgPSAzCi1USU1FUl9BQlNUSU1FID0gMQotX1NUUlVDVF9USU1FVkFMID0gMQotQ0xLX1RDSyA9IENMT0NLU19QRVJfU0VDCi1fX2Nsb2NrX3RfZGVmaW5lZCA9IDEKLV9fdGltZV90X2RlZmluZWQgPSAxCi1fX2Nsb2NraWRfdF9kZWZpbmVkID0gMQotX190aW1lcl90X2RlZmluZWQgPSAxCi1fX3RpbWVzcGVjX2RlZmluZWQgPSAxCi1kZWYgX19pc2xlYXAoeWVhcik6IHJldHVybiBcCi0KLV9fQklUX1RZUEVTX0RFRklORURfXyA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGVuZGlhbi5oCi1fRU5ESUFOX0ggPSAxCi1fX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fX0JJR19FTkRJQU4gPSA0MzIxCi1fX1BEUF9FTkRJQU4gPSAzNDEyCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2VuZGlhbi5oCi1fX0JZVEVfT1JERVIgPSBfX0xJVFRMRV9FTkRJQU4KLV9fRkxPQVRfV09SRF9PUkRFUiA9IF9fQllURV9PUkRFUgotTElUVExFX0VORElBTiA9IF9fTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9fQklHX0VORElBTgotUERQX0VORElBTiA9IF9fUERQX0VORElBTgotQllURV9PUkRFUiA9IF9fQllURV9PUkRFUgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbGVjdC5oCi1fU1lTX1NFTEVDVF9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zZWxlY3QuaAotZGVmIF9fRkRfWkVSTyhmZHNwKTogcmV0dXJuIFwKLQotZGVmIF9fRkRfWkVSTyhzZXQpOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NpZ3NldC5oCi1fU0lHU0VUX0hfdHlwZXMgPSAxCi1fU0lHU0VUX0hfZm5zID0gMQotZGVmIF9fc2lnbWFzayhzaWcpOiByZXR1cm4gXAotCi1kZWYgX19zaWdlbXB0eXNldChzZXQpOiByZXR1cm4gXAotCi1kZWYgX19zaWdmaWxsc2V0KHNldCk6IHJldHVybiBcCi0KLWRlZiBfX3NpZ2lzZW1wdHlzZXQoc2V0KTogcmV0dXJuIFwKLQotZGVmIF9fRkRFTFQoZCk6IHJldHVybiAoKGQpIC8gX19ORkRCSVRTKQotCi1GRF9TRVRTSVpFID0gX19GRF9TRVRTSVpFCi1kZWYgRkRfWkVSTyhmZHNldHApOiByZXR1cm4gX19GRF9aRVJPIChmZHNldHApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zeXNtYWNyb3MuaAotX1NZU19TWVNNQUNST1NfSCA9IDEKLWRlZiBtYWpvcihkZXYpOiByZXR1cm4gKChpbnQpKCgoZGV2KSA+PiA4KSAmIDB4ZmYpKQotCi1kZWYgbWlub3IoZGV2KTogcmV0dXJuICgoaW50KSgoZGV2KSAmIDB4ZmYpKQotCi1kZWYgbWFqb3IoZGV2KTogcmV0dXJuICgoKGRldikuX192YWxbMV0gPj4gOCkgJiAweGZmKQotCi1kZWYgbWlub3IoZGV2KTogcmV0dXJuICgoZGV2KS5fX3ZhbFsxXSAmIDB4ZmYpCi0KLWRlZiBtYWpvcihkZXYpOiByZXR1cm4gKCgoZGV2KS5fX3ZhbFswXSA+PiA4KSAmIDB4ZmYpCi0KLWRlZiBtaW5vcihkZXYpOiByZXR1cm4gKChkZXYpLl9fdmFsWzBdICYgMHhmZikKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4L3JlZ2VuIGIvTGliL3BsYXQtbGludXgvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM3Njk1MGUuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtbGludXgvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSMhIC9iaW4vc2gKLWNhc2UgYHVuYW1lYCBpbgotTGludXgqKQk7OwotKikJZWNobyBQcm9iYWJseSBub3Qgb24gYSBMaW51eCBzeXN0ZW0gMT4mMgotCWV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCAvdXNyL2luY2x1ZGUvZGxmY24uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbmV0YnNkMS9JTi5weSBiL0xpYi9wbGF0LW5ldGJzZDEvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NGM1MWUuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtbmV0YnNkMS9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQSVAgPSA0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX0VOQ0FQID0gOTgKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKLWRlZiBfX0lQQUREUih4KTogcmV0dXJuICgodV9pbnQzMl90KSh4KSkKLQotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfTUFYID0gMTI4Ci1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfUkVDVklGID0gMjAKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0lEUCArIDEpCi1JUENUTF9GT1JXQVJESU5HID0gMQotSVBDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQQ1RMX0RFRlRUTCA9IDMKLUlQQ1RMX0RFRk1UVSA9IDQKLUlQQ1RMX0ZPUldTUkNSVCA9IDUKLUlQQ1RMX0RJUkVDVEVEQkNBU1QgPSA2Ci1JUENUTF9BTExPV1NSQ1JUID0gNwotSVBDVExfTUFYSUQgPSA4Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbmV0YnNkMS9yZWdlbiBiL0xpYi9wbGF0LW5ldGJzZDEvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtbmV0YnNkMS9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbmV4dDMvcmVnZW4gYi9MaWIvcGxhdC1uZXh0My9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggN2EwMzYxMy4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1uZXh0My9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1JTkNMVURFPSIvTmV4dERldmVsb3Blci9IZWFkZXJzOy9OZXh0RGV2ZWxvcGVyL0hlYWRlcnMvYW5zaTsvTmV4dERldmVsb3Blci9IZWFkZXJzL2JzZCIKLWV4cG9ydCBJTkNMVURFCi0KLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvYnNkL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L0NESU8ucHkgYi9MaWIvcGxhdC1zdW5vczUvQ0RJTy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc2NmI1MC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvQ0RJTy5weQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvc3lzL2NkaW8uaAotQ0RST01fTEJBID0gMHgwMQotQ0RST01fTVNGID0gMHgwMgotQ0RST01fREFUQV9UUkFDSyA9IDB4MDQKLUNEUk9NX0xFQURPVVQgPSAweEFBCi1DRFJPTV9BVURJT19JTlZBTElEID0gMHgwMAotQ0RST01fQVVESU9fUExBWSA9IDB4MTEKLUNEUk9NX0FVRElPX1BBVVNFRCA9IDB4MTIKLUNEUk9NX0FVRElPX0NPTVBMRVRFRCA9IDB4MTMKLUNEUk9NX0FVRElPX0VSUk9SID0gMHgxNAotQ0RST01fQVVESU9fTk9fU1RBVFVTID0gMHgxNQotQ0RST01fREFfTk9fU1VCQ09ERSA9IDB4MDAKLUNEUk9NX0RBX1NVQlEgPSAweDAxCi1DRFJPTV9EQV9BTExfU1VCQ09ERSA9IDB4MDIKLUNEUk9NX0RBX1NVQkNPREVfT05MWSA9IDB4MDMKLUNEUk9NX1hBX0RBVEEgPSAweDAwCi1DRFJPTV9YQV9TRUNUT1JfREFUQSA9IDB4MDEKLUNEUk9NX1hBX0RBVEFfV19FUlJPUiA9IDB4MDIKLUNEUk9NX0JMS181MTIgPSA1MTIKLUNEUk9NX0JMS18xMDI0ID0gMTAyNAotQ0RST01fQkxLXzIwNDggPSAyMDQ4Ci1DRFJPTV9CTEtfMjA1NiA9IDIwNTYKLUNEUk9NX0JMS18yMzM2ID0gMjMzNgotQ0RST01fQkxLXzIzNDAgPSAyMzQwCi1DRFJPTV9CTEtfMjM1MiA9IDIzNTIKLUNEUk9NX0JMS18yMzY4ID0gMjM2OAotQ0RST01fQkxLXzI0NDggPSAyNDQ4Ci1DRFJPTV9CTEtfMjY0NiA9IDI2NDYKLUNEUk9NX0JMS18yNjQ3ID0gMjY0NwotQ0RST01fQkxLX1NVQkNPREUgPSA5NgotQ0RST01fTk9STUFMX1NQRUVEID0gMHgwMAotQ0RST01fRE9VQkxFX1NQRUVEID0gMHgwMQotQ0RST01fUVVBRF9TUEVFRCA9IDB4MDMKLUNEUk9NX1RXRUxWRV9TUEVFRCA9IDB4MEMKLUNEUk9NX01BWElNVU1fU1BFRUQgPSAweGZmCi1DRElPQyA9ICgweDA0IDw8IDgpCi1DRFJPTVBBVVNFID0gKENESU9DfDE1MSkKLUNEUk9NUkVTVU1FID0gKENESU9DfDE1MikKLUNEUk9NUExBWU1TRiA9IChDRElPQ3wxNTMpCi1DRFJPTVBMQVlUUktJTkQgPSAoQ0RJT0N8MTU0KQotQ0RST01SRUFEVE9DSERSID0gKENESU9DfDE1NSkKLUNEUk9NUkVBRFRPQ0VOVFJZID0gKENESU9DfDE1NikKLUNEUk9NU1RPUCA9IChDRElPQ3wxNTcpCi1DRFJPTVNUQVJUID0gKENESU9DfDE1OCkKLUNEUk9NRUpFQ1QgPSAoQ0RJT0N8MTU5KQotQ0RST01WT0xDVFJMID0gKENESU9DfDE2MCkKLUNEUk9NU1VCQ0hOTCA9IChDRElPQ3wxNjEpCi1DRFJPTVJFQURNT0RFMiA9IChDRElPQ3wxNjIpCi1DRFJPTVJFQURNT0RFMSA9IChDRElPQ3wxNjMpCi1DRFJPTVJFQURPRkZTRVQgPSAoQ0RJT0N8MTY0KQotQ0RST01HQkxLTU9ERSA9IChDRElPQ3wxNjUpCi1DRFJPTVNCTEtNT0RFID0gKENESU9DfDE2NikKLUNEUk9NQ0REQSA9IChDRElPQ3wxNjcpCi1DRFJPTUNEWEEgPSAoQ0RJT0N8MTY4KQotQ0RST01TVUJDT0RFID0gKENESU9DfDE2OSkKLUNEUk9NR0RSVlNQRUVEID0gKENESU9DfDE3MCkKLUNEUk9NU0RSVlNQRUVEID0gKENESU9DfDE3MSkKLVNDTURfUkVBRF9UT0MgPSAweDQzCi1TQ01EX1BMQVlBVURJT19NU0YgPSAweDQ3Ci1TQ01EX1BMQVlBVURJT19USSA9IDB4NDgKLVNDTURfUEFVU0VfUkVTVU1FID0gMHg0QgotU0NNRF9SRUFEX1NVQkNIQU5ORUwgPSAweDQyCi1TQ01EX1BMQVlBVURJTzEwID0gMHg0NQotU0NNRF9QTEFZVFJBQ0tfUkVMMTAgPSAweDQ5Ci1TQ01EX1JFQURfSEVBREVSID0gMHg0NAotU0NNRF9QTEFZQVVESU8xMiA9IDB4QTUKLVNDTURfUExBWVRSQUNLX1JFTDEyID0gMHhBOQotU0NNRF9DRF9QTEFZQkFDS19DT05UUk9MID0gMHhDOQotU0NNRF9DRF9QTEFZQkFDS19TVEFUVVMgPSAweEM0Ci1TQ01EX1JFQURfQ0REQSA9IDB4RDgKLVNDTURfUkVBRF9DRFhBID0gMHhEQgotU0NNRF9SRUFEX0FMTF9TVUJDT0RFUyA9IDB4REYKLUNEUk9NX01PREUyX1NJWkUgPSAyMzM2CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvRExGQ04ucHkgYi9MaWIvcGxhdC1zdW5vczUvRExGQ04ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0OTIzNTAuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtc3Vub3M1L0RMRkNOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9kbGZjbi5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1SVExEX0xBWlkgPSAweDAwMDAxCi1SVExEX05PVyA9IDB4MDAwMDIKLVJUTERfTk9MT0FEID0gMHgwMDAwNAotUlRMRF9HTE9CQUwgPSAweDAwMTAwCi1SVExEX0xPQ0FMID0gMHgwMDAwMAotUlRMRF9QQVJFTlQgPSAweDAwMjAwCi1SVExEX0dST1VQID0gMHgwMDQwMAotUlRMRF9XT1JMRCA9IDB4MDA4MDAKLVJUTERfTk9ERUxFVEUgPSAweDAxMDAwCi1SVExEX0NPTkZHRU4gPSAweDEwMDAwCi1SVExEX1JFTF9SRUxBVElWRSA9IDB4MDAwMDEKLVJUTERfUkVMX0VYRUMgPSAweDAwMDAyCi1SVExEX1JFTF9ERVBFTkRTID0gMHgwMDAwNAotUlRMRF9SRUxfUFJFTE9BRCA9IDB4MDAwMDgKLVJUTERfUkVMX1NFTEYgPSAweDAwMDEwCi1SVExEX1JFTF9XRUFLID0gMHgwMDAyMAotUlRMRF9SRUxfQUxMID0gMHgwMGZmZgotUlRMRF9NRU1PUlkgPSAweDAxMDAwCi1SVExEX1NUUklQID0gMHgwMjAwMAotUlRMRF9OT0hFQVAgPSAweDA0MDAwCi1SVExEX0NPTkZTRVQgPSAweDEwMDAwCi1SVExEX0RJX0xNSUQgPSAxCi1SVExEX0RJX0xJTktNQVAgPSAyCi1SVExEX0RJX0NPTkZJR0FERFIgPSAzCi1SVExEX0RJX01BWCA9IDMKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9JTi5weSBiL0xpYi9wbGF0LXN1bm9zNS9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU3MmVhZC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZmVhdHVyZV90ZXN0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaXNhX2RlZnMuaAotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gOAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA4Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gNAotX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gNAotX1BPSU5URVJfQUxJR05NRU5UID0gNAotX01BWF9BTElHTk1FTlQgPSA0Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMAotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA4Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAxCi1fTE9OR19BTElHTk1FTlQgPSA0Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gOAotX1BPSU5URVJfQUxJR05NRU5UID0gNAotX01BWF9BTElHTk1FTlQgPSA4Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gMTYKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDgKLV9NQVhfQUxJR05NRU5UID0gMTYKLV9QT1NJWF9DX1NPVVJDRSA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fTEFSR0VGSUxFX1NPVVJDRSA9IDEKLV9GSUxFX09GRlNFVF9CSVRTID0gNjQKLV9GSUxFX09GRlNFVF9CSVRTID0gMzIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTID0gMQotX1hPUEVOX1ZFUlNJT04gPSA1MDAKLV9YT1BFTl9WRVJTSU9OID0gNAotX1hPUEVOX1ZFUlNJT04gPSAzCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RyZWFtLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92bm9kZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdF9sb2NrLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNobG9jay5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1MT0NLX0hFTERfVkFMVUUgPSAweGZmCi1kZWYgU1BJTl9MT0NLKHBsKTogcmV0dXJuICgocGwpID4gaXBsdG9zcGwoTE9DS19MRVZFTCkpCi0KLWRlZiBMT0NLX1NBTVBMRV9JTlRFUlZBTChpKTogcmV0dXJuICgoKGkpICYgMHhmZikgPT0gMCkKLQotQ0xPQ0tfTEVWRUwgPSAxMAotTE9DS19MRVZFTCA9IDEwCi1ESVNQX0xFVkVMID0gKExPQ0tfTEVWRUwgKyAxKQotUFRSMjRfTFNCID0gNQotUFRSMjRfTVNCID0gKFBUUjI0X0xTQiArIDI0KQotUFRSMjRfQUxJR04gPSAzMgotUFRSMjRfQkFTRSA9IDB4ZTAwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wYXJhbS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1fUE9TSVhfVkRJU0FCTEUgPSAwCi1NQVhfSU5QVVQgPSA1MTIKLU1BWF9DQU5PTiA9IDI1NgotVUlEX05PQk9EWSA9IDYwMDAxCi1HSURfTk9CT0RZID0gVUlEX05PQk9EWQotVUlEX05PQUNDRVNTID0gNjAwMDIKLU1BWF9UQVNLSUQgPSA5OTk5OTkKLU1BWF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfTUFYUElEID0gOTk5OTk5Ci1ERUZBVUxUX0pVTVBQSUQgPSAxMDAwMDAKLURFRkFVTFRfTUFYUElEID0gMzAwMDAKLURFRkFVTFRfSlVNUFBJRCA9IDAKLU1BWFVJRCA9IDIxNDc0ODM2NDcKLU1BWFBST0pJRCA9IE1BWFVJRAotTUFYTElOSyA9IDMyNzY3Ci1OTU9VTlQgPSA0MAotQ0FOQlNJWiA9IDI1NgotTk9GSUxFID0gMjAKLU5HUk9VUFNfVU1JTiA9IDAKLU5HUk9VUFNfVU1BWCA9IDMyCi1OR1JPVVBTX01BWF9ERUZBVUxUID0gMTYKLU5aRVJPID0gMjAKLU5VTEwgPSAwCi1OVUxMID0gMAotQ01BU0sgPSAwbzIyCi1DRExJTUlUID0gKDE8PDExKQotTkJQUyA9IDB4MjAwMDAKLU5CUFNDVFIgPSA1MTIKLVVCU0laRSA9IDUxMgotU0NUUlNIRlQgPSA5Ci1TWVNOQU1FID0gOQotUFJFTU9URSA9IDM5Ci1NQVhQQVRITEVOID0gMTAyNAotTUFYU1lNTElOS1MgPSAyMAotTUFYTkFNRUxFTiA9IDI1NgotTkFERFIgPSAxMwotUElQRV9CVUYgPSA1MTIwCi1QSVBFX01BWCA9IDUxMjAKLU5CQlkgPSA4Ci1NQVhCU0laRSA9IDgxOTIKLURFVl9CU0laRSA9IDUxMgotREVWX0JTSElGVCA9IDkKLU1BWEZSQUcgPSA4Ci1NQVhPRkYzMl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRlNFVF9UID0gMHg3ZmZmZmZmZmZmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmYKLU1BWE9GRlNFVF9UID0gMHg3ZmZmZmZmZgotZGVmIGJ0b2RiKGJ5dGVzKTogcmV0dXJuICAgXAotCi1kZWYgZGJ0b2IoZGIpOiByZXR1cm4gICBcCi0KLWRlZiBsYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBsZGJ0b2IoZGIpOiByZXR1cm4gICBcCi0KLU5DQVJHUzMyID0gMHgxMDAwMDAKLU5DQVJHUzY0ID0gMHgyMDAwMDAKLU5DQVJHUyA9IE5DQVJHUzY0Ci1OQ0FSR1MgPSBOQ0FSR1MzMgotRlNISUZUID0gOAotRlNDQUxFID0gKDE8PEZTSElGVCkKLWRlZiBERUxBWShuKTogcmV0dXJuIGRydl91c2Vjd2FpdChuKQotCi1kZWYgbW11X3B0b2IoeCk6IHJldHVybiAoKHgpIDw8IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcCh4KTogcmV0dXJuICgoKHgpKSA+PiBNTVVfUEFHRVNISUZUKQotCi1kZWYgbW11X2J0b3ByKHgpOiByZXR1cm4gKCgoKHgpICsgTU1VX1BBR0VPRkZTRVQpID4+IE1NVV9QQUdFU0hJRlQpKQotCi1kZWYgbW11X3B0b2QoeCk6IHJldHVybiAoKHgpIDw8IChNTVVfUEFHRVNISUZUIC0gREVWX0JTSElGVCkpCi0KLWRlZiBwdG9kKHgpOiByZXR1cm4gKCh4KSA8PCAoUEFHRVNISUZUIC0gREVWX0JTSElGVCkpCi0KLWRlZiBwdG9iKHgpOiByZXR1cm4gKCh4KSA8PCBQQUdFU0hJRlQpCi0KLWRlZiBidG9wKHgpOiByZXR1cm4gKCgoeCkgPj4gUEFHRVNISUZUKSkKLQotZGVmIGJ0b3ByKHgpOiByZXR1cm4gKCgoKHgpICsgUEFHRU9GRlNFVCkgPj4gUEFHRVNISUZUKSkKLQotZGVmIGR0b3AoREQpOiByZXR1cm4gKCgoREQpICsgTkRQUCAtIDEpID4+IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIGR0b3B0KEREKTogcmV0dXJuICgoREQpID4+IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotX0FJT19MSVNUSU9fTUFYID0gKDQwOTYpCi1fQUlPX01BWCA9ICgtMSkKLV9NUV9PUEVOX01BWCA9ICgzMikKLV9NUV9QUklPX01BWCA9ICgzMikKLV9TRU1fTlNFTVNfTUFYID0gSU5UX01BWAotX1NFTV9WQUxVRV9NQVggPSBJTlRfTUFYCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdW5pc3RkLmgKLV9DU19QQVRIID0gNjUKLV9DU19MRlNfQ0ZMQUdTID0gNjgKLV9DU19MRlNfTERGTEFHUyA9IDY5Ci1fQ1NfTEZTX0xJQlMgPSA3MAotX0NTX0xGU19MSU5URkxBR1MgPSA3MQotX0NTX0xGUzY0X0NGTEFHUyA9IDcyCi1fQ1NfTEZTNjRfTERGTEFHUyA9IDczCi1fQ1NfTEZTNjRfTElCUyA9IDc0Ci1fQ1NfTEZTNjRfTElOVEZMQUdTID0gNzUKLV9DU19YQlM1X0lMUDMyX09GRjMyX0NGTEFHUyA9IDcwMAotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTERGTEFHUyA9IDcwMQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUyA9IDcwMgotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElOVEZMQUdTID0gNzAzCi1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfQ0ZMQUdTID0gNzA1Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUyA9IDcwNgotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMgPSA3MDcKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1MgPSA3MDgKLV9DU19YQlM1X0xQNjRfT0ZGNjRfQ0ZMQUdTID0gNzA5Ci1fQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MgPSA3MTAKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTElCUyA9IDcxMQotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MgPSA3MTIKLV9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MgPSA3MTMKLV9DU19YQlM1X0xQQklHX09GRkJJR19MREZMQUdTID0gNzE0Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUyA9IDcxNQotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUyA9IDcxNgotX1NDX0FSR19NQVggPSAxCi1fU0NfQ0hJTERfTUFYID0gMgotX1NDX0NMS19UQ0sgPSAzCi1fU0NfTkdST1VQU19NQVggPSA0Ci1fU0NfT1BFTl9NQVggPSA1Ci1fU0NfSk9CX0NPTlRST0wgPSA2Ci1fU0NfU0FWRURfSURTID0gNwotX1NDX1ZFUlNJT04gPSA4Ci1fU0NfUEFTU19NQVggPSA5Ci1fU0NfTE9HTkFNRV9NQVggPSAxMAotX1NDX1BBR0VTSVpFID0gMTEKLV9TQ19YT1BFTl9WRVJTSU9OID0gMTIKLV9TQ19OUFJPQ0VTU09SU19DT05GID0gMTQKLV9TQ19OUFJPQ0VTU09SU19PTkxOID0gMTUKLV9TQ19TVFJFQU1fTUFYID0gMTYKLV9TQ19UWk5BTUVfTUFYID0gMTcKLV9TQ19BSU9fTElTVElPX01BWCA9IDE4Ci1fU0NfQUlPX01BWCA9IDE5Ci1fU0NfQUlPX1BSSU9fREVMVEFfTUFYID0gMjAKLV9TQ19BU1lOQ0hST05PVVNfSU8gPSAyMQotX1NDX0RFTEFZVElNRVJfTUFYID0gMjIKLV9TQ19GU1lOQyA9IDIzCi1fU0NfTUFQUEVEX0ZJTEVTID0gMjQKLV9TQ19NRU1MT0NLID0gMjUKLV9TQ19NRU1MT0NLX1JBTkdFID0gMjYKLV9TQ19NRU1PUllfUFJPVEVDVElPTiA9IDI3Ci1fU0NfTUVTU0FHRV9QQVNTSU5HID0gMjgKLV9TQ19NUV9PUEVOX01BWCA9IDI5Ci1fU0NfTVFfUFJJT19NQVggPSAzMAotX1NDX1BSSU9SSVRJWkVEX0lPID0gMzEKLV9TQ19QUklPUklUWV9TQ0hFRFVMSU5HID0gMzIKLV9TQ19SRUFMVElNRV9TSUdOQUxTID0gMzMKLV9TQ19SVFNJR19NQVggPSAzNAotX1NDX1NFTUFQSE9SRVMgPSAzNQotX1NDX1NFTV9OU0VNU19NQVggPSAzNgotX1NDX1NFTV9WQUxVRV9NQVggPSAzNwotX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUyA9IDM4Ci1fU0NfU0lHUVVFVUVfTUFYID0gMzkKLV9TQ19TSUdSVF9NSU4gPSA0MAotX1NDX1NJR1JUX01BWCA9IDQxCi1fU0NfU1lOQ0hST05JWkVEX0lPID0gNDIKLV9TQ19USU1FUlMgPSA0MwotX1NDX1RJTUVSX01BWCA9IDQ0Ci1fU0NfMl9DX0JJTkQgPSA0NQotX1NDXzJfQ19ERVYgPSA0NgotX1NDXzJfQ19WRVJTSU9OID0gNDcKLV9TQ18yX0ZPUlRfREVWID0gNDgKLV9TQ18yX0ZPUlRfUlVOID0gNDkKLV9TQ18yX0xPQ0FMRURFRiA9IDUwCi1fU0NfMl9TV19ERVYgPSA1MQotX1NDXzJfVVBFID0gNTIKLV9TQ18yX1ZFUlNJT04gPSA1MwotX1NDX0JDX0JBU0VfTUFYID0gNTQKLV9TQ19CQ19ESU1fTUFYID0gNTUKLV9TQ19CQ19TQ0FMRV9NQVggPSA1NgotX1NDX0JDX1NUUklOR19NQVggPSA1NwotX1NDX0NPTExfV0VJR0hUU19NQVggPSA1OAotX1NDX0VYUFJfTkVTVF9NQVggPSA1OQotX1NDX0xJTkVfTUFYID0gNjAKLV9TQ19SRV9EVVBfTUFYID0gNjEKLV9TQ19YT1BFTl9DUllQVCA9IDYyCi1fU0NfWE9QRU5fRU5IX0kxOE4gPSA2MwotX1NDX1hPUEVOX1NITSA9IDY0Ci1fU0NfMl9DSEFSX1RFUk0gPSA2NgotX1NDX1hPUEVOX1hDVV9WRVJTSU9OID0gNjcKLV9TQ19BVEVYSVRfTUFYID0gNzYKLV9TQ19JT1ZfTUFYID0gNzcKLV9TQ19YT1BFTl9VTklYID0gNzgKLV9TQ19QQUdFX1NJWkUgPSBfU0NfUEFHRVNJWkUKLV9TQ19UX0lPVl9NQVggPSA3OQotX1NDX1BIWVNfUEFHRVMgPSA1MDAKLV9TQ19BVlBIWVNfUEFHRVMgPSA1MDEKLV9TQ19DT0hFUl9CTEtTWiA9IDUwMwotX1NDX1NQTElUX0NBQ0hFID0gNTA0Ci1fU0NfSUNBQ0hFX1NaID0gNTA1Ci1fU0NfRENBQ0hFX1NaID0gNTA2Ci1fU0NfSUNBQ0hFX0xJTkVTWiA9IDUwNwotX1NDX0RDQUNIRV9MSU5FU1ogPSA1MDgKLV9TQ19JQ0FDSEVfQkxLU1ogPSA1MDkKLV9TQ19EQ0FDSEVfQkxLU1ogPSA1MTAKLV9TQ19EQ0FDSEVfVEJMS1NaID0gNTExCi1fU0NfSUNBQ0hFX0FTU09DID0gNTEyCi1fU0NfRENBQ0hFX0FTU09DID0gNTEzCi1fU0NfTUFYUElEID0gNTE0Ci1fU0NfU1RBQ0tfUFJPVCA9IDUxNQotX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMgPSA1NjgKLV9TQ19HRVRHUl9SX1NJWkVfTUFYID0gNTY5Ci1fU0NfR0VUUFdfUl9TSVpFX01BWCA9IDU3MAotX1NDX0xPR0lOX05BTUVfTUFYID0gNTcxCi1fU0NfVEhSRUFEX0tFWVNfTUFYID0gNTcyCi1fU0NfVEhSRUFEX1NUQUNLX01JTiA9IDU3MwotX1NDX1RIUkVBRF9USFJFQURTX01BWCA9IDU3NAotX1NDX1RUWV9OQU1FX01BWCA9IDU3NQotX1NDX1RIUkVBRFMgPSA1NzYKLV9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIgPSA1NzcKLV9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUgPSA1NzgKLV9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDU3OQotX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQgPSA1ODAKLV9TQ19USFJFQURfUFJJT19QUk9URUNUID0gNTgxCi1fU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVEID0gNTgyCi1fU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TID0gNTgzCi1fU0NfWE9QRU5fTEVHQUNZID0gNzE3Ci1fU0NfWE9QRU5fUkVBTFRJTUUgPSA3MTgKLV9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTID0gNzE5Ci1fU0NfWEJTNV9JTFAzMl9PRkYzMiA9IDcyMAotX1NDX1hCUzVfSUxQMzJfT0ZGQklHID0gNzIxCi1fU0NfWEJTNV9MUDY0X09GRjY0ID0gNzIyCi1fU0NfWEJTNV9MUEJJR19PRkZCSUcgPSA3MjMKLV9QQ19MSU5LX01BWCA9IDEKLV9QQ19NQVhfQ0FOT04gPSAyCi1fUENfTUFYX0lOUFVUID0gMwotX1BDX05BTUVfTUFYID0gNAotX1BDX1BBVEhfTUFYID0gNQotX1BDX1BJUEVfQlVGID0gNgotX1BDX05PX1RSVU5DID0gNwotX1BDX1ZESVNBQkxFID0gOAotX1BDX0NIT1dOX1JFU1RSSUNURUQgPSA5Ci1fUENfQVNZTkNfSU8gPSAxMAotX1BDX1BSSU9fSU8gPSAxMQotX1BDX1NZTkNfSU8gPSAxMgotX1BDX0ZJTEVTSVpFQklUUyA9IDY3Ci1fUENfTEFTVCA9IDY3Ci1fUE9TSVhfVkVSU0lPTiA9IDE5OTUwNgotX1BPU0lYMl9WRVJTSU9OID0gMTk5MjA5Ci1fUE9TSVgyX0NfVkVSU0lPTiA9IDE5OTIwOQotX1hPUEVOX1hDVV9WRVJTSU9OID0gNAotX1hPUEVOX1JFQUxUSU1FID0gMQotX1hPUEVOX0VOSF9JMThOID0gMQotX1hPUEVOX1NITSA9IDEKLV9QT1NJWDJfQ19CSU5EID0gMQotX1BPU0lYMl9DSEFSX1RFUk0gPSAxCi1fUE9TSVgyX0xPQ0FMRURFRiA9IDEKLV9QT1NJWDJfQ19ERVYgPSAxCi1fUE9TSVgyX1NXX0RFViA9IDEKLV9QT1NJWDJfVVBFID0gMQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL211dGV4LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLWRlZiBNVVRFWF9IRUxEKHgpOiByZXR1cm4gKG11dGV4X293bmVkKHgpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcndsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLWRlZiBSV19SRUFEX0hFTEQoeCk6IHJldHVybiAocndfcmVhZF9oZWxkKCh4KSkpCi0KLWRlZiBSV19XUklURV9IRUxEKHgpOiByZXR1cm4gKHJ3X3dyaXRlX2hlbGQoKHgpKSkKLQotZGVmIFJXX0xPQ0tfSEVMRCh4KTogcmV0dXJuIChyd19sb2NrX2hlbGQoKHgpKSkKLQotZGVmIFJXX0lTV1JJVEVSKHgpOiByZXR1cm4gKHJ3X2lzd3JpdGVyKHgpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VtYXBob3JlLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aHJlYWQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2tsd3AuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvbmR2YXIuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3R5cGVzMzIuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF90eXBlcy5oCi1USU1FMzJfTUFYID0gSU5UMzJfTUFYCi1USU1FMzJfTUlOID0gSU5UMzJfTUlOCi1kZWYgVElNRVZBTF9PVkVSRkxPVyh0dik6IHJldHVybiBcCi0KLWZyb20gVFlQRVMgaW1wb3J0ICoKLURTVF9OT05FID0gMAotRFNUX1VTQSA9IDEKLURTVF9BVVNUID0gMgotRFNUX1dFVCA9IDMKLURTVF9NRVQgPSA0Ci1EU1RfRUVUID0gNQotRFNUX0NBTiA9IDYKLURTVF9HQiA9IDcKLURTVF9SVU0gPSA4Ci1EU1RfVFVSID0gOQotRFNUX0FVU1RBTFQgPSAxMAotSVRJTUVSX1JFQUwgPSAwCi1JVElNRVJfVklSVFVBTCA9IDEKLUlUSU1FUl9QUk9GID0gMgotSVRJTUVSX1JFQUxQUk9GID0gMwotZGVmIElUSU1FUlZBTF9PVkVSRkxPVyhpdHYpOiByZXR1cm4gXAotCi1TRUMgPSAxCi1NSUxMSVNFQyA9IDEwMDAKLU1JQ1JPU0VDID0gMTAwMDAwMAotTkFOT1NFQyA9IDEwMDAwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX2ltcGwuaAotZGVmIFRJTUVTUEVDX09WRVJGTE9XKHRzKTogcmV0dXJuIFwKLQotZGVmIElUSU1FUlNQRUNfT1ZFUkZMT1coaXQpOiByZXR1cm4gXAotCi1fX0NMT0NLX1JFQUxUSU1FMCA9IDAKLUNMT0NLX1ZJUlRVQUwgPSAxCi1DTE9DS19QUk9GID0gMgotX19DTE9DS19SRUFMVElNRTMgPSAzCi1DTE9DS19ISUdIUkVTID0gNAotQ0xPQ0tfTUFYID0gNQotQ0xPQ0tfUkVBTFRJTUUgPSBfX0NMT0NLX1JFQUxUSU1FMwotQ0xPQ0tfUkVBTFRJTUUgPSBfX0NMT0NLX1JFQUxUSU1FMAotVElNRVJfUkVMVElNRSA9IDB4MAotVElNRVJfQUJTVElNRSA9IDB4MQotZGVmIFRJQ0tfVE9fU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAvIGh6KQotCi1kZWYgU0VDX1RPX1RJQ0soc2VjKTogcmV0dXJuICgoc2VjKSAqIGh6KQotCi1kZWYgVElDS19UT19NU0VDKHRpY2spOiByZXR1cm4gXAotCi1kZWYgTVNFQ19UT19USUNLKG1zZWMpOiByZXR1cm4gXAotCi1kZWYgTVNFQ19UT19USUNLX1JPVU5EVVAobXNlYyk6IHJldHVybiBcCi0KLWRlZiBUSUNLX1RPX1VTRUModGljayk6IHJldHVybiAoKHRpY2spICogdXNlY19wZXJfdGljaykKLQotZGVmIFVTRUNfVE9fVElDSyh1c2VjKTogcmV0dXJuICgodXNlYykgLyB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLX1JPVU5EVVAodXNlYyk6IHJldHVybiBcCi0KLWRlZiBUSUNLX1RPX05TRUModGljayk6IHJldHVybiAoKHRpY2spICogbnNlY19wZXJfdGljaykKLQotZGVmIE5TRUNfVE9fVElDSyhuc2VjKTogcmV0dXJuICgobnNlYykgLyBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLX1JPVU5EVVAobnNlYyk6IHJldHVybiBcCi0KLWRlZiBUSU1FVkFMX1RPX1RJQ0sodHZwKTogcmV0dXJuIFwKLQotZGVmIFRJTUVTVFJVQ19UT19USUNLKHRzcCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIHRpbWUuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gaXNvL3RpbWVfaXNvLmgKLU5VTEwgPSAwCi1OVUxMID0gMAotQ0xPQ0tTX1BFUl9TRUMgPSAxMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLUZEX1NFVFNJWkUgPSA2NTUzNgotRkRfU0VUU0laRSA9IDEwMjQKLV9OQkJZID0gOAotTkJCWSA9IF9OQkJZCi1kZWYgRkRfWkVSTyhwKTogcmV0dXJuIGJ6ZXJvKChwKSwgc2l6ZW9mICgqKHApKSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ25hbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaXNvL3NpZ25hbF9pc28uaAotU0lHSFVQID0gMQotU0lHSU5UID0gMgotU0lHUVVJVCA9IDMKLVNJR0lMTCA9IDQKLVNJR1RSQVAgPSA1Ci1TSUdJT1QgPSA2Ci1TSUdBQlJUID0gNgotU0lHRU1UID0gNwotU0lHRlBFID0gOAotU0lHS0lMTCA9IDkKLVNJR0JVUyA9IDEwCi1TSUdTRUdWID0gMTEKLVNJR1NZUyA9IDEyCi1TSUdQSVBFID0gMTMKLVNJR0FMUk0gPSAxNAotU0lHVEVSTSA9IDE1Ci1TSUdVU1IxID0gMTYKLVNJR1VTUjIgPSAxNwotU0lHQ0xEID0gMTgKLVNJR0NITEQgPSAxOAotU0lHUFdSID0gMTkKLVNJR1dJTkNIID0gMjAKLVNJR1VSRyA9IDIxCi1TSUdQT0xMID0gMjIKLVNJR0lPID0gU0lHUE9MTAotU0lHU1RPUCA9IDIzCi1TSUdUU1RQID0gMjQKLVNJR0NPTlQgPSAyNQotU0lHVFRJTiA9IDI2Ci1TSUdUVE9VID0gMjcKLVNJR1ZUQUxSTSA9IDI4Ci1TSUdQUk9GID0gMjkKLVNJR1hDUFUgPSAzMAotU0lHWEZTWiA9IDMxCi1TSUdXQUlUSU5HID0gMzIKLVNJR0xXUCA9IDMzCi1TSUdGUkVFWkUgPSAzNAotU0lHVEhBVyA9IDM1Ci1TSUdDQU5DRUwgPSAzNgotU0lHTE9TVCA9IDM3Ci1fU0lHUlRNSU4gPSAzOAotX1NJR1JUTUFYID0gNDUKLVNJR19CTE9DSyA9IDEKLVNJR19VTkJMT0NLID0gMgotU0lHX1NFVE1BU0sgPSAzCi1TSUdOT19NQVNLID0gMHhGRgotU0lHREVGRVIgPSAweDEwMAotU0lHSE9MRCA9IDB4MjAwCi1TSUdSRUxTRSA9IDB4NDAwCi1TSUdJR05PUkUgPSAweDgwMAotU0lHUEFVU0UgPSAweDEwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zaWdpbmZvLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJR0VWX05PTkUgPSAxCi1TSUdFVl9TSUdOQUwgPSAyCi1TSUdFVl9USFJFQUQgPSAzCi1TSV9OT0lORk8gPSAzMjc2NwotU0lfVVNFUiA9IDAKLVNJX0xXUCA9ICgtMSkKLVNJX1FVRVVFID0gKC0yKQotU0lfVElNRVIgPSAoLTMpCi1TSV9BU1lOQ0lPID0gKC00KQotU0lfTUVTR1EgPSAoLTUpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbWFjaHNpZy5oCi1JTExfSUxMT1BDID0gMQotSUxMX0lMTE9QTiA9IDIKLUlMTF9JTExBRFIgPSAzCi1JTExfSUxMVFJQID0gNAotSUxMX1BSVk9QQyA9IDUKLUlMTF9QUlZSRUcgPSA2Ci1JTExfQ09QUk9DID0gNwotSUxMX0JBRFNUSyA9IDgKLU5TSUdJTEwgPSA4Ci1FTVRfVEFHT1ZGID0gMQotRU1UX0NQQ09WRiA9IDIKLU5TSUdFTVQgPSAyCi1GUEVfSU5URElWID0gMQotRlBFX0lOVE9WRiA9IDIKLUZQRV9GTFRESVYgPSAzCi1GUEVfRkxUT1ZGID0gNAotRlBFX0ZMVFVORCA9IDUKLUZQRV9GTFRSRVMgPSA2Ci1GUEVfRkxUSU5WID0gNwotRlBFX0ZMVFNVQiA9IDgKLU5TSUdGUEUgPSA4Ci1TRUdWX01BUEVSUiA9IDEKLVNFR1ZfQUNDRVJSID0gMgotTlNJR1NFR1YgPSAyCi1CVVNfQURSQUxOID0gMQotQlVTX0FEUkVSUiA9IDIKLUJVU19PQkpFUlIgPSAzCi1OU0lHQlVTID0gMwotVFJBUF9CUktQVCA9IDEKLVRSQVBfVFJBQ0UgPSAyCi1UUkFQX1JXQVRDSCA9IDMKLVRSQVBfV1dBVENIID0gNAotVFJBUF9YV0FUQ0ggPSA1Ci1OU0lHVFJBUCA9IDUKLUNMRF9FWElURUQgPSAxCi1DTERfS0lMTEVEID0gMgotQ0xEX0RVTVBFRCA9IDMKLUNMRF9UUkFQUEVEID0gNAotQ0xEX1NUT1BQRUQgPSA1Ci1DTERfQ09OVElOVUVEID0gNgotTlNJR0NMRCA9IDYKLVBPTExfSU4gPSAxCi1QT0xMX09VVCA9IDIKLVBPTExfTVNHID0gMwotUE9MTF9FUlIgPSA0Ci1QT0xMX1BSSSA9IDUKLVBPTExfSFVQID0gNgotTlNJR1BPTEwgPSA2Ci1QUk9GX1NJRyA9IDEKLU5TSUdQUk9GID0gMQotU0lfTUFYU1ogPSAyNTYKLVNJX01BWFNaID0gMTI4Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZV9zdGRfaW1wbC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1TSTMyX01BWFNaID0gMTI4Ci1kZWYgU0lfQ0FOUVVFVUUoYyk6IHJldHVybiAoKGMpIDw9IFNJX1FVRVVFKQotCi1TQV9OT0NMRFNUT1AgPSAweDAwMDIwMDAwCi1TQV9PTlNUQUNLID0gMHgwMDAwMDAwMQotU0FfUkVTRVRIQU5EID0gMHgwMDAwMDAwMgotU0FfUkVTVEFSVCA9IDB4MDAwMDAwMDQKLVNBX1NJR0lORk8gPSAweDAwMDAwMDA4Ci1TQV9OT0RFRkVSID0gMHgwMDAwMDAxMAotU0FfTk9DTERXQUlUID0gMHgwMDAxMDAwMAotU0FfV0FJVFNJRyA9IDB4MDAwMTAwMDAKLU5TSUcgPSA0NgotTUFYU0lHID0gNDUKLVNfU0lHTkFMID0gMQotU19TSUdTRVQgPSAyCi1TX1NJR0FDVElPTiA9IDMKLVNfTk9ORSA9IDQKLU1JTlNJR1NUS1NaID0gMjA0OAotU0lHU1RLU1ogPSA4MTkyCi1TU19PTlNUQUNLID0gMHgwMDAwMDAwMQotU1NfRElTQUJMRSA9IDB4MDAwMDAwMDIKLVNOX1BST0MgPSAxCi1TTl9DQU5DRUwgPSAyCi1TTl9TRU5EID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Vjb250ZXh0LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yZWdzZXQuaAotUkVHX0NDUiA9ICgwKQotUkVHX1BTUiA9ICgwKQotUkVHX1BTUiA9ICgwKQotUkVHX1BDID0gKDEpCi1SRUdfblBDID0gKDIpCi1SRUdfWSA9ICgzKQotUkVHX0cxID0gKDQpCi1SRUdfRzIgPSAoNSkKLVJFR19HMyA9ICg2KQotUkVHX0c0ID0gKDcpCi1SRUdfRzUgPSAoOCkKLVJFR19HNiA9ICg5KQotUkVHX0c3ID0gKDEwKQotUkVHX08wID0gKDExKQotUkVHX08xID0gKDEyKQotUkVHX08yID0gKDEzKQotUkVHX08zID0gKDE0KQotUkVHX080ID0gKDE1KQotUkVHX081ID0gKDE2KQotUkVHX082ID0gKDE3KQotUkVHX083ID0gKDE4KQotUkVHX0FTSSA9ICgxOSkKLVJFR19GUFJTID0gKDIwKQotUkVHX1BTID0gUkVHX1BTUgotUkVHX1NQID0gUkVHX082Ci1SRUdfUjAgPSBSRUdfTzAKLVJFR19SMSA9IFJFR19PMQotX05HUkVHID0gMjEKLV9OR1JFRyA9IDE5Ci1OR1JFRyA9IF9OR1JFRwotX05HUkVHMzIgPSAxOQotX05HUkVHNjQgPSAyMQotU1BBUkNfTUFYUkVHV0lORE9XID0gMzEKLU1BWEZQUSA9IDE2Ci1YUlNfSUQgPSAweDc4NzI3MzAwCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHJpdnJlZ3MuaAotCi0jIEluY2x1ZGVkIGZyb20gdjcvc3lzL3Bzci5oCi1QU1JfQ1dQID0gMHgwMDAwMDAxRgotUFNSX0VUID0gMHgwMDAwMDAyMAotUFNSX1BTID0gMHgwMDAwMDA0MAotUFNSX1MgPSAweDAwMDAwMDgwCi1QU1JfUElMID0gMHgwMDAwMEYwMAotUFNSX0VGID0gMHgwMDAwMTAwMAotUFNSX0VDID0gMHgwMDAwMjAwMAotUFNSX1JTViA9IDB4MDAwRkMwMDAKLVBTUl9JQ0MgPSAweDAwRjAwMDAwCi1QU1JfQyA9IDB4MDAxMDAwMDAKLVBTUl9WID0gMHgwMDIwMDAwMAotUFNSX1ogPSAweDAwNDAwMDAwCi1QU1JfTiA9IDB4MDA4MDAwMDAKLVBTUl9WRVIgPSAweDBGMDAwMDAwCi1QU1JfSU1QTCA9IDB4RjAwMDAwMDAKLVBTTF9BTExDQyA9IFBTUl9JQ0MKLVBTTF9VU0VSID0gKFBTUl9TKQotUFNMX1VTRVJNQVNLID0gKFBTUl9JQ0MpCi1QU0xfVUJJVFMgPSAoUFNSX0lDQ3xQU1JfRUYpCi1kZWYgVVNFUk1PREUocHMpOiByZXR1cm4gKCgocHMpICYgUFNSX1BTKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZnNyLmgKLUZTUl9DRVhDID0gMHgwMDAwMDAxZgotRlNSX0FFWEMgPSAweDAwMDAwM2UwCi1GU1JfRkNDID0gMHgwMDAwMGMwMAotRlNSX1BSID0gMHgwMDAwMTAwMAotRlNSX1FORSA9IDB4MDAwMDIwMDAKLUZTUl9GVFQgPSAweDAwMDFjMDAwCi1GU1JfVkVSID0gMHgwMDBlMDAwMAotRlNSX1RFTSA9IDB4MGY4MDAwMDAKLUZTUl9SUCA9IDB4MzAwMDAwMDAKLUZTUl9SRCA9IDB4YzAwMDAwMDAKLUZTUl9WRVJfU0hJRlQgPSAxNwotRlNSX0ZDQzEgPSAweDAwMDAwMDAzCi1GU1JfRkNDMiA9IDB4MDAwMDAwMEMKLUZTUl9GQ0MzID0gMHgwMDAwMDAzMAotRlNSX0NFWENfTlggPSAweDAwMDAwMDAxCi1GU1JfQ0VYQ19EWiA9IDB4MDAwMDAwMDIKLUZTUl9DRVhDX1VGID0gMHgwMDAwMDAwNAotRlNSX0NFWENfT0YgPSAweDAwMDAwMDA4Ci1GU1JfQ0VYQ19OViA9IDB4MDAwMDAwMTAKLUZTUl9BRVhDX05YID0gKDB4MSA8PCA1KQotRlNSX0FFWENfRFogPSAoMHgyIDw8IDUpCi1GU1JfQUVYQ19VRiA9ICgweDQgPDwgNSkKLUZTUl9BRVhDX09GID0gKDB4OCA8PCA1KQotRlNSX0FFWENfTlYgPSAoMHgxMCA8PCA1KQotRlRUX05PTkUgPSAwCi1GVFRfSUVFRSA9IDEKLUZUVF9VTkZJTiA9IDIKLUZUVF9VTklNUCA9IDMKLUZUVF9TRVEgPSA0Ci1GVFRfQUxJR04gPSA1Ci1GVFRfREZBVUxUID0gNgotRlNSX0ZUVF9TSElGVCA9IDE0Ci1GU1JfRlRUX0lFRUUgPSAoRlRUX0lFRUUgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9VTkZJTiA9IChGVFRfVU5GSU4gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VOSU1QID0gKEZUVF9VTklNUCAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfU0VRID0gKEZUVF9TRVEgICAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfQUxJR04gPSAoRlRUX0FMSUdOICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9ERkFVTFQgPSAoRlRUX0RGQVVMVCA8PCBGU1JfRlRUX1NISUZUKQotRlNSX1RFTV9OWCA9ICgweDEgPDwgMjMpCi1GU1JfVEVNX0RaID0gKDB4MiA8PCAyMykKLUZTUl9URU1fVUYgPSAoMHg0IDw8IDIzKQotRlNSX1RFTV9PRiA9ICgweDggPDwgMjMpCi1GU1JfVEVNX05WID0gKDB4MTAgPDwgMjMpCi1SUF9EQkxFWFQgPSAwCi1SUF9TSU5HTEUgPSAxCi1SUF9ET1VCTEUgPSAyCi1SUF9SRVNFUlZFRCA9IDMKLVJEX05FQVIgPSAwCi1SRF9aRVIwID0gMQotUkRfUE9TSU5GID0gMgotUkRfTkVHSU5GID0gMwotRlBSU19ETCA9IDB4MQotRlBSU19EVSA9IDB4MgotRlBSU19GRUYgPSAweDQKLVBJTF9NQVggPSAweGYKLWRlZiBTQVZFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9HTE9CQUxTKFJQKTogcmV0dXJuIFwKLQotZGVmIFNBVkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX09VVFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfV0lORE9XKFNCUCk6IHJldHVybiBcCi0KLWRlZiBTVE9SRV9GUFJFR1MoRlApOiByZXR1cm4gXAotCi1kZWYgTE9BRF9GUFJFR1MoRlApOiByZXR1cm4gXAotCi1fU1BBUkNfTUFYUkVHV0lORE9XID0gMzEKLV9YUlNfSUQgPSAweDc4NzI3MzAwCi1HRVRDT05URVhUID0gMAotU0VUQ09OVEVYVCA9IDEKLVVDX1NJR01BU0sgPSAwbzAxCi1VQ19TVEFDSyA9IDBvMDIKLVVDX0NQVSA9IDBvMDQKLVVDX01BVSA9IDBvMTAKLVVDX0ZQVSA9IFVDX01BVQotVUNfSU5UUiA9IDBvMjAKLVVDX0FTUiA9IDBvNDAKLVVDX01DT05URVhUID0gKFVDX0NQVXxVQ19GUFV8VUNfQVNSKQotVUNfQUxMID0gKFVDX1NJR01BU0t8VUNfU1RBQ0t8VUNfTUNPTlRFWFQpCi1fU0lHUVVFVUVfTUFYID0gMzIKLV9TSUdOT1RJRllfTUFYID0gMzIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wY2IuaAotSU5TVFJfVkFMSUQgPSAweDAyCi1OT1JNQUxfU1RFUCA9IDB4MDQKLVdBVENIX1NURVAgPSAweDA4Ci1DUENfT1ZFUkZMT1cgPSAweDEwCi1BU1lOQ19IV0VSUiA9IDB4MjAKLVNURVBfTk9ORSA9IDAKLVNURVBfUkVRVUVTVEVEID0gMQotU1RFUF9BQ1RJVkUgPSAyCi1TVEVQX1dBU0FDVElWRSA9IDMKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tc2FjY3QuaAotTE1TX1VTRVIgPSAwCi1MTVNfU1lTVEVNID0gMQotTE1TX1RSQVAgPSAyCi1MTVNfVEZBVUxUID0gMwotTE1TX0RGQVVMVCA9IDQKLUxNU19LRkFVTFQgPSA1Ci1MTVNfVVNFUl9MT0NLID0gNgotTE1TX1NMRUVQID0gNwotTE1TX1dBSVRfQ1BVID0gOAotTE1TX1NUT1BQRUQgPSA5Ci1OTVNUQVRFUyA9IDEwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbHdwLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zeW5jaC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1VU1lOQ19USFJFQUQgPSAweDAwCi1VU1lOQ19QUk9DRVNTID0gMHgwMQotTE9DS19OT1JNQUwgPSAweDAwCi1MT0NLX0VSUk9SQ0hFQ0sgPSAweDAyCi1MT0NLX1JFQ1VSU0lWRSA9IDB4MDQKLVVTWU5DX1BST0NFU1NfUk9CVVNUID0gMHgwOAotTE9DS19QUklPX05PTkUgPSAweDAwCi1MT0NLX1BSSU9fSU5IRVJJVCA9IDB4MTAKLUxPQ0tfUFJJT19QUk9URUNUID0gMHgyMAotTE9DS19TVEFMTF9OUCA9IDB4MDAKLUxPQ0tfUk9CVVNUX05QID0gMHg0MAotTE9DS19PV05FUkRFQUQgPSAweDEKLUxPQ0tfTk9UUkVDT1ZFUkFCTEUgPSAweDIKLUxPQ0tfSU5JVEVEID0gMHg0Ci1MT0NLX1VOTUFQUEVEID0gMHg4Ci1MV1BfREVUQUNIRUQgPSAweDAwMDAwMDQwCi1MV1BfU1VTUEVOREVEID0gMHgwMDAwMDA4MAotX19MV1BfQVNMV1AgPSAweDAwMDAwMTAwCi1NQVhTWVNBUkdTID0gOAotTk9STUFMUkVUVVJOID0gMAotSlVTVFJFVFVSTiA9IDEKLUxXUF9VU0VSID0gMHgwMQotTFdQX1NZUyA9IDB4MDIKLVRTX0ZSRUUgPSAweDAwCi1UU19TTEVFUCA9IDB4MDEKLVRTX1JVTiA9IDB4MDIKLVRTX09OUFJPQyA9IDB4MDQKLVRTX1pPTUIgPSAweDA4Ci1UU19TVE9QUEVEID0gMHgxMAotVF9JTlRSX1RIUkVBRCA9IDB4MDAwMQotVF9XQUtFQUJMRSA9IDB4MDAwMgotVF9UT01BU0sgPSAweDAwMDQKLVRfVEFMTE9DU1RLID0gMHgwMDA4Ci1UX1dPVUxEQkxPQ0sgPSAweDAwMjAKLVRfRE9OVEJMT0NLID0gMHgwMDQwCi1UX0RPTlRQRU5EID0gMHgwMDgwCi1UX1NZU19QUk9GID0gMHgwMTAwCi1UX1dBSVRDVlNFTSA9IDB4MDIwMAotVF9XQVRDSFBUID0gMHgwNDAwCi1UX1BBTklDID0gMHgwODAwCi1UUF9IT0xETFdQID0gMHgwMDAyCi1UUF9UV0FJVCA9IDB4MDAwNAotVFBfTFdQRVhJVCA9IDB4MDAwOAotVFBfUFJTVE9QID0gMHgwMDEwCi1UUF9DSEtQVCA9IDB4MDAyMAotVFBfRVhJVExXUCA9IDB4MDA0MAotVFBfUFJWU1RPUCA9IDB4MDA4MAotVFBfTVNBQ0NUID0gMHgwMTAwCi1UUF9TVE9QUElORyA9IDB4MDIwMAotVFBfV0FUQ0hQVCA9IDB4MDQwMAotVFBfUEFVU0UgPSAweDA4MDAKLVRQX0NIQU5HRUJJTkQgPSAweDEwMDAKLVRTX0xPQUQgPSAweDAwMDEKLVRTX0RPTlRfU1dBUCA9IDB4MDAwMgotVFNfU1dBUEVOUSA9IDB4MDAwNAotVFNfT05fU1dBUFEgPSAweDAwMDgKLVRTX0NTVEFSVCA9IDB4MDEwMAotVFNfVU5QQVVTRSA9IDB4MDIwMAotVFNfWFNUQVJUID0gMHgwNDAwCi1UU19QU1RBUlQgPSAweDA4MDAKLVRTX1JFU1VNRSA9IDB4MTAwMAotVFNfQ1JFQVRFID0gMHgyMDAwCi1UU19BTExTVEFSVCA9IFwKLSAgICAgICAgKFRTX0NTVEFSVHxUU19VTlBBVVNFfFRTX1hTVEFSVHxUU19QU1RBUlR8VFNfUkVTVU1FfFRTX0NSRUFURSkKLWRlZiBDUFJfVlNUT1BQRUQodCk6IHJldHVybiBcCi0KLWRlZiBUSFJFQURfVFJBTlNJVElPTih0cCk6IHJldHVybiB0aHJlYWRfdHJhbnNpdGlvbih0cCk7Ci0KLWRlZiBUSFJFQURfU1RPUCh0cCk6IHJldHVybiBcCi0KLWRlZiBUSFJFQURfWk9NQih0cCk6IHJldHVybiBUSFJFQURfU0VUX1NUQVRFKHRwLCBUU19aT01CLCBOVUxMKQotCi1kZWYgU0VNQV9IRUxEKHgpOiByZXR1cm4gKHNlbWFfaGVsZCgoeCkpKQotCi1OT19MT0NLU19IRUxEID0gMQotTk9fQ09NUEVUSU5HX1RIUkVBRFMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY3JlZC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWlvLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yZXNvdXJjZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1QUklPX1BST0NFU1MgPSAwCi1QUklPX1BHUlAgPSAxCi1QUklPX1VTRVIgPSAyCi1STElNSVRfQ1BVID0gMAotUkxJTUlUX0ZTSVpFID0gMQotUkxJTUlUX0RBVEEgPSAyCi1STElNSVRfU1RBQ0sgPSAzCi1STElNSVRfQ09SRSA9IDQKLVJMSU1JVF9OT0ZJTEUgPSA1Ci1STElNSVRfVk1FTSA9IDYKLVJMSU1JVF9BUyA9IFJMSU1JVF9WTUVNCi1STElNX05MSU1JVFMgPSA3Ci1STElNX0lORklOSVRZID0gKC0zKQotUkxJTV9TQVZFRF9NQVggPSAoLTIpCi1STElNX1NBVkVEX0NVUiA9ICgtMSkKLVJMSU1fSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU1fU0FWRURfQ1VSID0gMHg3ZmZmZmZmZAotUkxJTTMyX0lORklOSVRZID0gMHg3ZmZmZmZmZgotUkxJTTMyX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU0zMl9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbW9kZWwuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RlYnVnLmgKLWRlZiBBU1NFUlQ2NCh4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1kZWYgQVNTRVJUMzIoeCk6IHJldHVybiBBU1NFUlQoeCkKLQotREFUQU1PREVMX01BU0sgPSAweDBGRjAwMDAwCi1EQVRBTU9ERUxfSUxQMzIgPSAweDAwMTAwMDAwCi1EQVRBTU9ERUxfTFA2NCA9IDB4MDAyMDAwMDAKLURBVEFNT0RFTF9OT05FID0gMAotREFUQU1PREVMX05BVElWRSA9IERBVEFNT0RFTF9MUDY0Ci1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0lMUDMyCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIFwKLQotZGVmIFNUUlVDVF9CVUYoaGFuZGxlKTogcmV0dXJuICgoaGFuZGxlKS5wdHIubTY0KQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIChzaXplb2YgKCooaGFuZGxlKS5wdHIpKQotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0cikKLQotZGVmIFNJWkVPRl9QVFIodW1vZGVsKTogcmV0dXJuIHNpemVvZiAoY2FkZHJfdCkKLQotZGVmIGx3cF9nZXRkYXRhbW9kZWwodCk6IHJldHVybiBEQVRBTU9ERUxfSUxQMzIKLQotUlVTQUdFX1NFTEYgPSAwCi1SVVNBR0VfQ0hJTERSRU4gPSAtMQotCi0jIEluY2x1ZGVkIGZyb20gdm0vc2VnX2VudW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J1Zi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N0YXQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotS1NUQVRfU1RSTEVOID0gMzEKLWRlZiBLU1RBVF9FTlRFUihrKTogcmV0dXJuIFwKLQotZGVmIEtTVEFUX0VYSVQoayk6IHJldHVybiBcCi0KLUtTVEFUX1RZUEVfUkFXID0gMAotS1NUQVRfVFlQRV9OQU1FRCA9IDEKLUtTVEFUX1RZUEVfSU5UUiA9IDIKLUtTVEFUX1RZUEVfSU8gPSAzCi1LU1RBVF9UWVBFX1RJTUVSID0gNAotS1NUQVRfTlVNX1RZUEVTID0gNQotS1NUQVRfRkxBR19WSVJUVUFMID0gMHgwMQotS1NUQVRfRkxBR19WQVJfU0laRSA9IDB4MDIKLUtTVEFUX0ZMQUdfV1JJVEFCTEUgPSAweDA0Ci1LU1RBVF9GTEFHX1BFUlNJU1RFTlQgPSAweDA4Ci1LU1RBVF9GTEFHX0RPUk1BTlQgPSAweDEwCi1LU1RBVF9GTEFHX0lOVkFMSUQgPSAweDIwCi1LU1RBVF9SRUFEID0gMAotS1NUQVRfV1JJVEUgPSAxCi1LU1RBVF9EQVRBX0NIQVIgPSAwCi1LU1RBVF9EQVRBX0lOVDMyID0gMQotS1NUQVRfREFUQV9VSU5UMzIgPSAyCi1LU1RBVF9EQVRBX0lOVDY0ID0gMwotS1NUQVRfREFUQV9VSU5UNjQgPSA0Ci1LU1RBVF9EQVRBX0xPTkcgPSBLU1RBVF9EQVRBX0lOVDMyCi1LU1RBVF9EQVRBX1VMT05HID0gS1NUQVRfREFUQV9VSU5UMzIKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQ2NAotS1NUQVRfREFUQV9MT05HID0gNwotS1NUQVRfREFUQV9VTE9ORyA9IDgKLUtTVEFUX0RBVEFfTE9OR0xPTkcgPSBLU1RBVF9EQVRBX0lOVDY0Ci1LU1RBVF9EQVRBX1VMT05HTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0ZMT0FUID0gNQotS1NUQVRfREFUQV9ET1VCTEUgPSA2Ci1LU1RBVF9JTlRSX0hBUkQgPSAwCi1LU1RBVF9JTlRSX1NPRlQgPSAxCi1LU1RBVF9JTlRSX1dBVENIRE9HID0gMgotS1NUQVRfSU5UUl9TUFVSSU9VUyA9IDMKLUtTVEFUX0lOVFJfTVVMVFNWQyA9IDQKLUtTVEFUX05VTV9JTlRSUyA9IDUKLUJfQlVTWSA9IDB4MDAwMQotQl9ET05FID0gMHgwMDAyCi1CX0VSUk9SID0gMHgwMDA0Ci1CX1BBR0VJTyA9IDB4MDAxMAotQl9QSFlTID0gMHgwMDIwCi1CX1JFQUQgPSAweDAwNDAKLUJfV1JJVEUgPSAweDAxMDAKLUJfS0VSTkJVRiA9IDB4MDAwOAotQl9XQU5URUQgPSAweDAwODAKLUJfQUdFID0gMHgwMDAyMDAKLUJfQVNZTkMgPSAweDAwMDQwMAotQl9ERUxXUkkgPSAweDAwMDgwMAotQl9TVEFMRSA9IDB4MDAxMDAwCi1CX0RPTlRORUVEID0gMHgwMDIwMDAKLUJfUkVNQVBQRUQgPSAweDAwNDAwMAotQl9GUkVFID0gMHgwMDgwMDAKLUJfSU5WQUwgPSAweDAxMDAwMAotQl9GT1JDRSA9IDB4MDIwMDAwCi1CX0hFQUQgPSAweDA0MDAwMAotQl9OT0NBQ0hFID0gMHgwODAwMDAKLUJfVFJVTkMgPSAweDEwMDAwMAotQl9TSEFET1cgPSAweDIwMDAwMAotQl9SRVRSWVdSSSA9IDB4NDAwMDAwCi1kZWYgbm90YXZhaWwoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFKGJwKTogcmV0dXJuIFwKLQotZGVmIEJXUklURTIoYnApOiByZXR1cm4gXAotCi1WUk9PVCA9IDB4MDEKLVZOT0NBQ0hFID0gMHgwMgotVk5PTUFQID0gMHgwNAotVkRVUCA9IDB4MDgKLVZOT1NXQVAgPSAweDEwCi1WTk9NT1VOVCA9IDB4MjAKLVZJU1NXQVAgPSAweDQwCi1WU1dBUExJS0UgPSAweDgwCi1WVkZTTE9DSyA9IDB4MTAwCi1WVkZTV0FJVCA9IDB4MjAwCi1WVk1MT0NLID0gMHg0MDAKLVZESVJPUEVOID0gMHg4MDAKLVZWTUVYRUMgPSAweDEwMDAKLVZQWEZTID0gMHgyMDAwCi1BVF9UWVBFID0gMHgwMDAxCi1BVF9NT0RFID0gMHgwMDAyCi1BVF9VSUQgPSAweDAwMDQKLUFUX0dJRCA9IDB4MDAwOAotQVRfRlNJRCA9IDB4MDAxMAotQVRfTk9ERUlEID0gMHgwMDIwCi1BVF9OTElOSyA9IDB4MDA0MAotQVRfU0laRSA9IDB4MDA4MAotQVRfQVRJTUUgPSAweDAxMDAKLUFUX01USU1FID0gMHgwMjAwCi1BVF9DVElNRSA9IDB4MDQwMAotQVRfUkRFViA9IDB4MDgwMAotQVRfQkxLU0laRSA9IDB4MTAwMAotQVRfTkJMT0NLUyA9IDB4MjAwMAotQVRfVkNPREUgPSAweDQwMDAKLUFUX0FMTCA9IChBVF9UWVBFfEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9OTElOS3xBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX1JERVZ8QVRfQkxLU0laRXxBVF9OQkxPQ0tTfEFUX1ZDT0RFKQotQVRfU1RBVCA9IChBVF9NT0RFfEFUX1VJRHxBVF9HSUR8QVRfRlNJRHxBVF9OT0RFSUR8QVRfTkxJTkt8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfU0laRXxBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRXxBVF9SREVWKQotQVRfVElNRVMgPSAoQVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUUpCi1BVF9OT1NFVCA9IChBVF9OTElOS3xBVF9SREVWfEFUX0ZTSUR8QVRfTk9ERUlEfEFUX1RZUEV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfQkxLU0laRXxBVF9OQkxPQ0tTfEFUX1ZDT0RFKQotVlNVSUQgPSAwbzQwMDAKLVZTR0lEID0gMG8yMDAwCi1WU1ZUWCA9IDBvMTAwMAotVlJFQUQgPSAwbzA0MDAKLVZXUklURSA9IDBvMDIwMAotVkVYRUMgPSAwbzAxMDAKLU1PREVNQVNLID0gMG83Nzc3Ci1QRVJNTUFTSyA9IDBvMDc3NwotZGVmIE1BTkRNT0RFKG1vZGUpOiByZXR1cm4gKCgobW9kZSkgJiAoVlNHSUR8KFZFWEVDPj4zKSkpID09IFZTR0lEKQotCi1WU0FfQUNMID0gMHgwMDAxCi1WU0FfQUNMQ05UID0gMHgwMDAyCi1WU0FfREZBQ0wgPSAweDAwMDQKLVZTQV9ERkFDTENOVCA9IDB4MDAwOAotTE9PS1VQX0RJUiA9IDB4MDEKLURVTVBfQUxMT0MgPSAwCi1EVU1QX0ZSRUUgPSAxCi1EVU1QX1NDQU4gPSAyCi1BVFRSX1VUSU1FID0gMHgwMQotQVRUUl9FWEVDID0gMHgwMgotQVRUUl9DT01NID0gMHgwNAotQVRUUl9ISU5UID0gMHgwOAotQVRUUl9SRUFMID0gMHgxMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BvbGwuaAotUE9MTElOID0gMHgwMDAxCi1QT0xMUFJJID0gMHgwMDAyCi1QT0xMT1VUID0gMHgwMDA0Ci1QT0xMUkROT1JNID0gMHgwMDQwCi1QT0xMV1JOT1JNID0gUE9MTE9VVAotUE9MTFJEQkFORCA9IDB4MDA4MAotUE9MTFdSQkFORCA9IDB4MDEwMAotUE9MTE5PUk0gPSBQT0xMUkROT1JNCi1QT0xMRVJSID0gMHgwMDA4Ci1QT0xMSFVQID0gMHgwMDEwCi1QT0xMTlZBTCA9IDB4MDAyMAotUE9MTFJFTU9WRSA9IDB4MDgwMAotUE9MTFJEREFUQSA9IDB4MDIwMAotUE9MTE5PRVJSID0gMHgwNDAwCi1QT0xMQ0xPU0VEID0gMHg4MDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RybWRlcC5oCi1kZWYgc3RyX2FsaWduZWQoWCk6IHJldHVybiAoKCh1bG9uZ190KShYKSAmIChzaXplb2YgKGludCkgLSAxKSkgPT0gMCkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N0cmZ0LmgKLXRkZWx0YV90X3N6ID0gMTIKLUZURVZfTUFTSyA9IDB4MUZGRgotRlRFVl9JU1dSID0gMHg4MDAwCi1GVEVWX0NTID0gMHg0MDAwCi1GVEVWX1BTID0gMHgyMDAwCi1GVEVWX1FNQVNLID0gMHgxRjAwCi1GVEVWX0FMTE9DTUFTSyA9IDB4MUZGOAotRlRFVl9BTExPQ0IgPSAweDAwMDAKLUZURVZfRVNCQUxMT0MgPSAweDAwMDEKLUZURVZfREVTQkFMTE9DID0gMHgwMDAyCi1GVEVWX0VTQkFMTE9DQSA9IDB4MDAwMwotRlRFVl9ERVNCQUxMT0NBID0gMHgwMDA0Ci1GVEVWX0FMTE9DQklHID0gMHgwMDA1Ci1GVEVWX0FMTE9DQlcgPSAweDAwMDYKLUZURVZfRlJFRUIgPSAweDAwMDgKLUZURVZfRFVQQiA9IDB4MDAwOQotRlRFVl9DT1BZQiA9IDB4MDAwQQotRlRFVl9DQUxMRVIgPSAweDAwMEYKLUZURVZfUFVUID0gMHgwMTAwCi1GVEVWX0ZTWU5DUSA9IDB4MDEwMwotRlRFVl9EU1lOQ1EgPSAweDAxMDQKLUZURVZfUFVUUSA9IDB4MDEwNQotRlRFVl9HRVRRID0gMHgwMTA2Ci1GVEVWX1JNVlEgPSAweDAxMDcKLUZURVZfSU5TUSA9IDB4MDEwOAotRlRFVl9QVVRCUSA9IDB4MDEwOQotRlRFVl9GTFVTSFEgPSAweDAxMEEKLUZURVZfUkVQTFlRID0gMHgwMTBCCi1GVEVWX1BVVE5FWFQgPSAweDAxMEQKLUZURVZfUldORVhUID0gMHgwMTBFCi1GVEVWX1FXSU5ORVIgPSAweDAxMEYKLUZURVZfR0VXUklURSA9IDB4MDEwMQotZGVmIEZURkxXX0hBU0goaCk6IHJldHVybiAoKCh1bnNpZ25lZCkoaCkpJWZ0Zmx3X2hhc2hfc3opCi0KLUZUQkxLX0VWTlRTID0gMHg5Ci1RRU5BQiA9IDB4MDAwMDAwMDEKLVFXQU5UUiA9IDB4MDAwMDAwMDIKLVFXQU5UVyA9IDB4MDAwMDAwMDQKLVFGVUxMID0gMHgwMDAwMDAwOAotUVJFQURSID0gMHgwMDAwMDAxMAotUVVTRSA9IDB4MDAwMDAwMjAKLVFOT0VOQiA9IDB4MDAwMDAwNDAKLVFCQUNLID0gMHgwMDAwMDEwMAotUUhMSVNUID0gMHgwMDAwMDIwMAotUVBBSVIgPSAweDAwMDAwODAwCi1RUEVSUSA9IDB4MDAwMDEwMDAKLVFQRVJNT0QgPSAweDAwMDAyMDAwCi1RTVRTQUZFID0gMHgwMDAwNDAwMAotUU1UT1VUUEVSSU0gPSAweDAwMDA4MDAwCi1RTVRfVFlQRU1BU0sgPSAoUVBBSVJ8UVBFUlF8UVBFUk1PRHxRTVRTQUZFfFFNVE9VVFBFUklNKQotUUlOU0VSVklDRSA9IDB4MDAwMTAwMDAKLVFXQ0xPU0UgPSAweDAwMDIwMDAwCi1RRU5EID0gMHgwMDA0MDAwMAotUVdBTlRXU1lOQyA9IDB4MDAwODAwMDAKLVFTWU5DU1RSID0gMHgwMDEwMDAwMAotUUlTRFJWID0gMHgwMDIwMDAwMAotUUhPVCA9IDB4MDA0MDAwMDAKLVFORVhUSE9UID0gMHgwMDgwMDAwMAotX1FJTlNFUlRJTkcgPSAweDA0MDAwMDAwCi1fUVJFTU9WSU5HID0gMHgwODAwMDAwMAotUV9TUVFVRVVFRCA9IDB4MDEKLVFfU1FEUkFJTklORyA9IDB4MDIKLVFCX0ZVTEwgPSAweDAxCi1RQl9XQU5UVyA9IDB4MDIKLVFCX0JBQ0sgPSAweDA0Ci1OQkFORCA9IDI1NgotU1RSVUlPVF9OT05FID0gLTEKLVNUUlVJT1RfRE9OVENBUkUgPSAwCi1TVFJVSU9UX1NUQU5EQVJEID0gMQotU1RSVUlPVF9JUCA9IDIKLURCTEtfUkVGTUlOID0gMHgwMQotU1RSVUlPX1NQRUMgPSAweDAxCi1TVFJVSU9fRE9ORSA9IDB4MDIKLVNUUlVJT19JUCA9IDB4MDQKLVNUUlVJT19aQyA9IDB4MDgKLVNUUlVJT19JQ0sgPSAweDEwCi1NU0dNQVJLID0gMHgwMQotTVNHTk9MT09QID0gMHgwMgotTVNHREVMSU0gPSAweDA0Ci1NU0dOT0dFVCA9IDB4MDgKLU1TR01BUktORVhUID0gMHgxMAotTVNHTk9UTUFSS05FWFQgPSAweDIwCi1NX0RBVEEgPSAweDAwCi1NX1BST1RPID0gMHgwMQotTV9CUkVBSyA9IDB4MDgKLU1fUEFTU0ZQID0gMHgwOQotTV9FVkVOVCA9IDB4MGEKLU1fU0lHID0gMHgwYgotTV9ERUxBWSA9IDB4MGMKLU1fQ1RMID0gMHgwZAotTV9JT0NUTCA9IDB4MGUKLU1fU0VUT1BUUyA9IDB4MTAKLU1fUlNFID0gMHgxMQotTV9JT0NBQ0sgPSAweDgxCi1NX0lPQ05BSyA9IDB4ODIKLU1fUENQUk9UTyA9IDB4ODMKLU1fUENTSUcgPSAweDg0Ci1NX1JFQUQgPSAweDg1Ci1NX0ZMVVNIID0gMHg4NgotTV9TVE9QID0gMHg4NwotTV9TVEFSVCA9IDB4ODgKLU1fSEFOR1VQID0gMHg4OQotTV9FUlJPUiA9IDB4OGEKLU1fQ09QWUlOID0gMHg4YgotTV9DT1BZT1VUID0gMHg4YwotTV9JT0NEQVRBID0gMHg4ZAotTV9QQ1JTRSA9IDB4OGUKLU1fU1RPUEkgPSAweDhmCi1NX1NUQVJUSSA9IDB4OTAKLU1fUENFVkVOVCA9IDB4OTEKLU1fVU5IQU5HVVAgPSAweDkyCi1RTk9STSA9IDB4MDAKLVFQQ1RMID0gMHg4MAotSU9DX01PREVMUyA9IERBVEFNT0RFTF9NQVNLCi1JT0NfSUxQMzIgPSBEQVRBTU9ERUxfSUxQMzIKLUlPQ19MUDY0ID0gREFUQU1PREVMX0xQNjQKLUlPQ19OQVRJVkUgPSBEQVRBTU9ERUxfTkFUSVZFCi1JT0NfTk9ORSA9IERBVEFNT0RFTF9OT05FCi1TVFJDQU5PTiA9IDB4MDEKLVJFQ09QWSA9IDB4MDIKLVNPX0FMTCA9IDB4MDAzZgotU09fUkVBRE9QVCA9IDB4MDAwMQotU09fV1JPRkYgPSAweDAwMDIKLVNPX01JTlBTWiA9IDB4MDAwNAotU09fTUFYUFNaID0gMHgwMDA4Ci1TT19ISVdBVCA9IDB4MDAxMAotU09fTE9XQVQgPSAweDAwMjAKLVNPX01SRUFET04gPSAweDAwNDAKLVNPX01SRUFET0ZGID0gMHgwMDgwCi1TT19OREVMT04gPSAweDAxMDAKLVNPX05ERUxPRkYgPSAweDAyMDAKLVNPX0lTVFRZID0gMHgwNDAwCi1TT19JU05UVFkgPSAweDA4MDAKLVNPX1RPU1RPUCA9IDB4MTAwMAotU09fVE9OU1RPUCA9IDB4MjAwMAotU09fQkFORCA9IDB4NDAwMAotU09fREVMSU0gPSAweDgwMDAKLVNPX05PREVMSU0gPSAweDAxMDAwMAotU09fU1RSSE9MRCA9IDB4MDIwMDAwCi1TT19FUlJPUFQgPSAweDA0MDAwMAotU09fQ09QWU9QVCA9IDB4MDgwMDAwCi1TT19NQVhCTEsgPSAweDEwMDAwMAotREVGX0lPVl9NQVggPSAxNgotSU5GT0RfRklSU1RCWVRFUyA9IDB4MDIKLUlORk9EX0JZVEVTID0gMHgwNAotSU5GT0RfQ09VTlQgPSAweDA4Ci1JTkZPRF9DT1BZT1VUID0gMHgxMAotTU9ET1BFTiA9IDB4MQotQ0xPTkVPUEVOID0gMHgyCi1DT05TT1BFTiA9IDB4NAotT1BFTkZBSUwgPSAtMQotQlBSSV9MTyA9IDEKLUJQUklfTUVEID0gMgotQlBSSV9ISSA9IDMKLUJQUklfRlQgPSA0Ci1JTkZQU1ogPSAtMQotRkxVU0hBTEwgPSAxCi1GTFVTSERBVEEgPSAwCi1TVFJISUdIID0gNTEyMAotU1RSTE9XID0gMTAyNAotTUFYSU9DQlNaID0gMTAyNAotUEVSSU1fSU5ORVIgPSAxCi1QRVJJTV9PVVRFUiA9IDIKLWRlZiBkYXRhbXNnKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgc3RyYWxuKGEpOiByZXR1cm4gKGNhZGRyX3QpKChpbnRwdHJfdCkoYSkgJiB+KHNpemVvZiAoaW50KS0xKSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J5dGVvcmRlci5oCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19FTkNBUCA9IDQKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0hFTExPID0gNjMKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQT1JUX0VDSE8gPSA3Ci1JUFBPUlRfRElTQ0FSRCA9IDkKLUlQUE9SVF9TWVNUQVQgPSAxMQotSVBQT1JUX0RBWVRJTUUgPSAxMwotSVBQT1JUX05FVFNUQVQgPSAxNQotSVBQT1JUX0ZUUCA9IDIxCi1JUFBPUlRfVEVMTkVUID0gMjMKLUlQUE9SVF9TTVRQID0gMjUKLUlQUE9SVF9USU1FU0VSVkVSID0gMzcKLUlQUE9SVF9OQU1FU0VSVkVSID0gNDIKLUlQUE9SVF9XSE9JUyA9IDQzCi1JUFBPUlRfTVRQID0gNTcKLUlQUE9SVF9CT09UUFMgPSA2NwotSVBQT1JUX0JPT1RQQyA9IDY4Ci1JUFBPUlRfVEZUUCA9IDY5Ci1JUFBPUlRfUkpFID0gNzcKLUlQUE9SVF9GSU5HRVIgPSA3OQotSVBQT1JUX1RUWUxJTksgPSA4NwotSVBQT1JUX1NVUERVUCA9IDk1Ci1JUFBPUlRfRVhFQ1NFUlZFUiA9IDUxMgotSVBQT1JUX0xPR0lOU0VSVkVSID0gNTEzCi1JUFBPUlRfQ01EU0VSVkVSID0gNTE0Ci1JUFBPUlRfRUZTU0VSVkVSID0gNTIwCi1JUFBPUlRfQklGRlVEUCA9IDUxMgotSVBQT1JUX1dIT1NFUlZFUiA9IDUxMwotSVBQT1JUX1JPVVRFU0VSVkVSID0gNTIwCi1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotSU1QTElOS19JUCA9IDE1NQotSU1QTElOS19MT1dFWFBFUiA9IDE1NgotSU1QTElOS19ISUdIRVhQRVIgPSAxNTgKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX01BWCA9IDEyOAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0RfTlNISUZUID0gMjgKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLWRlZiBJTl9TRVRfTE9PUEJBQ0tfQUREUihhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01VTFRJQ0FTVChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01VTFRJQ0FTVChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRF9BTlkoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRF9BTlkoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfUkVTRVJWRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19SRVNFUlZFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYWRkcik6IHJldHVybiBcCi0KLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDB4MTAKLUlQX01VTFRJQ0FTVF9UVEwgPSAweDExCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDB4MTIKLUlQX0FERF9NRU1CRVJTSElQID0gMHgxMwotSVBfRFJPUF9NRU1CRVJTSElQID0gMHgxNAotSVBfU0VDX09QVCA9IDB4MjIKLUlQU0VDX1BSRUZfTkVWRVIgPSAweDAxCi1JUFNFQ19QUkVGX1JFUVVJUkVEID0gMHgwMgotSVBTRUNfUFJFRl9VTklRVUUgPSAweDA0Ci1JUF9BRERfUFJPWFlfQUREUiA9IDB4NDAKLUlQX0JPVU5EX0lGID0gMHg0MQotSVBfVU5TUEVDX1NSQyA9IDB4NDIKLUlQX1JFVVNFQUREUiA9IDB4MTA0Ci1JUF9ET05UUk9VVEUgPSAweDEwNQotSVBfQlJPQURDQVNUID0gMHgxMDYKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfVU5JQ0FTVF9IT1BTID0gMHg1Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDB4NgotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDB4NwotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDB4OAotSVBWNl9KT0lOX0dST1VQID0gMHg5Ci1JUFY2X0xFQVZFX0dST1VQID0gMHhhCi1JUFY2X0FERF9NRU1CRVJTSElQID0gMHg5Ci1JUFY2X0RST1BfTUVNQkVSU0hJUCA9IDB4YQotSVBWNl9QS1RJTkZPID0gMHhiCi1JUFY2X0hPUExJTUlUID0gMHhjCi1JUFY2X05FWFRIT1AgPSAweGQKLUlQVjZfSE9QT1BUUyA9IDB4ZQotSVBWNl9EU1RPUFRTID0gMHhmCi1JUFY2X1JUSERSID0gMHgxMAotSVBWNl9SVEhEUkRTVE9QVFMgPSAweDExCi1JUFY2X1JFQ1ZQS1RJTkZPID0gMHgxMgotSVBWNl9SRUNWSE9QTElNSVQgPSAweDEzCi1JUFY2X1JFQ1ZIT1BPUFRTID0gMHgxNAotSVBWNl9SRUNWRFNUT1BUUyA9IDB4MTUKLUlQVjZfUkVDVlJUSERSID0gMHgxNgotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gMHgxNwotSVBWNl9DSEVDS1NVTSA9IDB4MTgKLUlQVjZfQk9VTkRfSUYgPSAweDQxCi1JUFY2X1VOU1BFQ19TUkMgPSAweDQyCi1JTkVUX0FERFJTVFJMRU4gPSAxNgotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X1BBRDFfT1BUID0gMApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L1NUUk9QVFMucHkgYi9MaWIvcGxhdC1zdW5vczUvU1RST1BUUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY3MzVjNC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvU1RST1BUUy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4MTMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZmVhdHVyZV90ZXN0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaXNhX2RlZnMuaAotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gOAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA4Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gNAotX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gNAotX1BPSU5URVJfQUxJR05NRU5UID0gNAotX01BWF9BTElHTk1FTlQgPSA0Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMAotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA4Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAxCi1fTE9OR19BTElHTk1FTlQgPSA0Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gOAotX1BPSU5URVJfQUxJR05NRU5UID0gNAotX01BWF9BTElHTk1FTlQgPSA4Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gMTYKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDgKLV9NQVhfQUxJR05NRU5UID0gMTYKLV9QT1NJWF9DX1NPVVJDRSA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fTEFSR0VGSUxFX1NPVVJDRSA9IDEKLV9GSUxFX09GRlNFVF9CSVRTID0gNjQKLV9GSUxFX09GRlNFVF9CSVRTID0gMzIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTID0gMQotX1hPUEVOX1ZFUlNJT04gPSA1MDAKLV9YT1BFTl9WRVJTSU9OID0gNAotX1hPUEVOX1ZFUlNJT04gPSAzCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdF9sb2NrLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNobG9jay5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1MT0NLX0hFTERfVkFMVUUgPSAweGZmCi1kZWYgU1BJTl9MT0NLKHBsKTogcmV0dXJuICgocGwpID4gaXBsdG9zcGwoTE9DS19MRVZFTCkpCi0KLWRlZiBMT0NLX1NBTVBMRV9JTlRFUlZBTChpKTogcmV0dXJuICgoKGkpICYgMHhmZikgPT0gMCkKLQotQ0xPQ0tfTEVWRUwgPSAxMAotTE9DS19MRVZFTCA9IDEwCi1ESVNQX0xFVkVMID0gKExPQ0tfTEVWRUwgKyAxKQotUFRSMjRfTFNCID0gNQotUFRSMjRfTVNCID0gKFBUUjI0X0xTQiArIDI0KQotUFRSMjRfQUxJR04gPSAzMgotUFRSMjRfQkFTRSA9IDB4ZTAwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wYXJhbS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1fUE9TSVhfVkRJU0FCTEUgPSAwCi1NQVhfSU5QVVQgPSA1MTIKLU1BWF9DQU5PTiA9IDI1NgotVUlEX05PQk9EWSA9IDYwMDAxCi1HSURfTk9CT0RZID0gVUlEX05PQk9EWQotVUlEX05PQUNDRVNTID0gNjAwMDIKLU1BWF9UQVNLSUQgPSA5OTk5OTkKLU1BWF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfTUFYUElEID0gOTk5OTk5Ci1ERUZBVUxUX0pVTVBQSUQgPSAxMDAwMDAKLURFRkFVTFRfTUFYUElEID0gMzAwMDAKLURFRkFVTFRfSlVNUFBJRCA9IDAKLU1BWFVJRCA9IDIxNDc0ODM2NDcKLU1BWFBST0pJRCA9IE1BWFVJRAotTUFYTElOSyA9IDMyNzY3Ci1OTU9VTlQgPSA0MAotQ0FOQlNJWiA9IDI1NgotTk9GSUxFID0gMjAKLU5HUk9VUFNfVU1JTiA9IDAKLU5HUk9VUFNfVU1BWCA9IDMyCi1OR1JPVVBTX01BWF9ERUZBVUxUID0gMTYKLU5aRVJPID0gMjAKLU5VTEwgPSAwCi1OVUxMID0gMAotQ01BU0sgPSAwbzIyCi1DRExJTUlUID0gKDE8PDExKQotTkJQUyA9IDB4MjAwMDAKLU5CUFNDVFIgPSA1MTIKLVVCU0laRSA9IDUxMgotU0NUUlNIRlQgPSA5Ci1TWVNOQU1FID0gOQotUFJFTU9URSA9IDM5Ci1NQVhQQVRITEVOID0gMTAyNAotTUFYU1lNTElOS1MgPSAyMAotTUFYTkFNRUxFTiA9IDI1NgotTkFERFIgPSAxMwotUElQRV9CVUYgPSA1MTIwCi1QSVBFX01BWCA9IDUxMjAKLU5CQlkgPSA4Ci1NQVhCU0laRSA9IDgxOTIKLURFVl9CU0laRSA9IDUxMgotREVWX0JTSElGVCA9IDkKLU1BWEZSQUcgPSA4Ci1NQVhPRkYzMl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRlNFVF9UID0gMHg3ZmZmZmZmZmZmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmYKLU1BWE9GRlNFVF9UID0gMHg3ZmZmZmZmZgotZGVmIGJ0b2RiKGJ5dGVzKTogcmV0dXJuICAgXAotCi1kZWYgZGJ0b2IoZGIpOiByZXR1cm4gICBcCi0KLWRlZiBsYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBsZGJ0b2IoZGIpOiByZXR1cm4gICBcCi0KLU5DQVJHUzMyID0gMHgxMDAwMDAKLU5DQVJHUzY0ID0gMHgyMDAwMDAKLU5DQVJHUyA9IE5DQVJHUzY0Ci1OQ0FSR1MgPSBOQ0FSR1MzMgotRlNISUZUID0gOAotRlNDQUxFID0gKDE8PEZTSElGVCkKLWRlZiBERUxBWShuKTogcmV0dXJuIGRydl91c2Vjd2FpdChuKQotCi1kZWYgbW11X3B0b2IoeCk6IHJldHVybiAoKHgpIDw8IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcCh4KTogcmV0dXJuICgoKHgpKSA+PiBNTVVfUEFHRVNISUZUKQotCi1kZWYgbW11X2J0b3ByKHgpOiByZXR1cm4gKCgoKHgpICsgTU1VX1BBR0VPRkZTRVQpID4+IE1NVV9QQUdFU0hJRlQpKQotCi1kZWYgbW11X3B0b2QoeCk6IHJldHVybiAoKHgpIDw8IChNTVVfUEFHRVNISUZUIC0gREVWX0JTSElGVCkpCi0KLWRlZiBwdG9kKHgpOiByZXR1cm4gKCh4KSA8PCAoUEFHRVNISUZUIC0gREVWX0JTSElGVCkpCi0KLWRlZiBwdG9iKHgpOiByZXR1cm4gKCh4KSA8PCBQQUdFU0hJRlQpCi0KLWRlZiBidG9wKHgpOiByZXR1cm4gKCgoeCkgPj4gUEFHRVNISUZUKSkKLQotZGVmIGJ0b3ByKHgpOiByZXR1cm4gKCgoKHgpICsgUEFHRU9GRlNFVCkgPj4gUEFHRVNISUZUKSkKLQotZGVmIGR0b3AoREQpOiByZXR1cm4gKCgoREQpICsgTkRQUCAtIDEpID4+IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIGR0b3B0KEREKTogcmV0dXJuICgoREQpID4+IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotX0FJT19MSVNUSU9fTUFYID0gKDQwOTYpCi1fQUlPX01BWCA9ICgtMSkKLV9NUV9PUEVOX01BWCA9ICgzMikKLV9NUV9QUklPX01BWCA9ICgzMikKLV9TRU1fTlNFTVNfTUFYID0gSU5UX01BWAotX1NFTV9WQUxVRV9NQVggPSBJTlRfTUFYCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdW5pc3RkLmgKLV9DU19QQVRIID0gNjUKLV9DU19MRlNfQ0ZMQUdTID0gNjgKLV9DU19MRlNfTERGTEFHUyA9IDY5Ci1fQ1NfTEZTX0xJQlMgPSA3MAotX0NTX0xGU19MSU5URkxBR1MgPSA3MQotX0NTX0xGUzY0X0NGTEFHUyA9IDcyCi1fQ1NfTEZTNjRfTERGTEFHUyA9IDczCi1fQ1NfTEZTNjRfTElCUyA9IDc0Ci1fQ1NfTEZTNjRfTElOVEZMQUdTID0gNzUKLV9DU19YQlM1X0lMUDMyX09GRjMyX0NGTEFHUyA9IDcwMAotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTERGTEFHUyA9IDcwMQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUyA9IDcwMgotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElOVEZMQUdTID0gNzAzCi1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfQ0ZMQUdTID0gNzA1Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUyA9IDcwNgotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMgPSA3MDcKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1MgPSA3MDgKLV9DU19YQlM1X0xQNjRfT0ZGNjRfQ0ZMQUdTID0gNzA5Ci1fQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MgPSA3MTAKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTElCUyA9IDcxMQotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MgPSA3MTIKLV9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MgPSA3MTMKLV9DU19YQlM1X0xQQklHX09GRkJJR19MREZMQUdTID0gNzE0Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUyA9IDcxNQotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUyA9IDcxNgotX1NDX0FSR19NQVggPSAxCi1fU0NfQ0hJTERfTUFYID0gMgotX1NDX0NMS19UQ0sgPSAzCi1fU0NfTkdST1VQU19NQVggPSA0Ci1fU0NfT1BFTl9NQVggPSA1Ci1fU0NfSk9CX0NPTlRST0wgPSA2Ci1fU0NfU0FWRURfSURTID0gNwotX1NDX1ZFUlNJT04gPSA4Ci1fU0NfUEFTU19NQVggPSA5Ci1fU0NfTE9HTkFNRV9NQVggPSAxMAotX1NDX1BBR0VTSVpFID0gMTEKLV9TQ19YT1BFTl9WRVJTSU9OID0gMTIKLV9TQ19OUFJPQ0VTU09SU19DT05GID0gMTQKLV9TQ19OUFJPQ0VTU09SU19PTkxOID0gMTUKLV9TQ19TVFJFQU1fTUFYID0gMTYKLV9TQ19UWk5BTUVfTUFYID0gMTcKLV9TQ19BSU9fTElTVElPX01BWCA9IDE4Ci1fU0NfQUlPX01BWCA9IDE5Ci1fU0NfQUlPX1BSSU9fREVMVEFfTUFYID0gMjAKLV9TQ19BU1lOQ0hST05PVVNfSU8gPSAyMQotX1NDX0RFTEFZVElNRVJfTUFYID0gMjIKLV9TQ19GU1lOQyA9IDIzCi1fU0NfTUFQUEVEX0ZJTEVTID0gMjQKLV9TQ19NRU1MT0NLID0gMjUKLV9TQ19NRU1MT0NLX1JBTkdFID0gMjYKLV9TQ19NRU1PUllfUFJPVEVDVElPTiA9IDI3Ci1fU0NfTUVTU0FHRV9QQVNTSU5HID0gMjgKLV9TQ19NUV9PUEVOX01BWCA9IDI5Ci1fU0NfTVFfUFJJT19NQVggPSAzMAotX1NDX1BSSU9SSVRJWkVEX0lPID0gMzEKLV9TQ19QUklPUklUWV9TQ0hFRFVMSU5HID0gMzIKLV9TQ19SRUFMVElNRV9TSUdOQUxTID0gMzMKLV9TQ19SVFNJR19NQVggPSAzNAotX1NDX1NFTUFQSE9SRVMgPSAzNQotX1NDX1NFTV9OU0VNU19NQVggPSAzNgotX1NDX1NFTV9WQUxVRV9NQVggPSAzNwotX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUyA9IDM4Ci1fU0NfU0lHUVVFVUVfTUFYID0gMzkKLV9TQ19TSUdSVF9NSU4gPSA0MAotX1NDX1NJR1JUX01BWCA9IDQxCi1fU0NfU1lOQ0hST05JWkVEX0lPID0gNDIKLV9TQ19USU1FUlMgPSA0MwotX1NDX1RJTUVSX01BWCA9IDQ0Ci1fU0NfMl9DX0JJTkQgPSA0NQotX1NDXzJfQ19ERVYgPSA0NgotX1NDXzJfQ19WRVJTSU9OID0gNDcKLV9TQ18yX0ZPUlRfREVWID0gNDgKLV9TQ18yX0ZPUlRfUlVOID0gNDkKLV9TQ18yX0xPQ0FMRURFRiA9IDUwCi1fU0NfMl9TV19ERVYgPSA1MQotX1NDXzJfVVBFID0gNTIKLV9TQ18yX1ZFUlNJT04gPSA1MwotX1NDX0JDX0JBU0VfTUFYID0gNTQKLV9TQ19CQ19ESU1fTUFYID0gNTUKLV9TQ19CQ19TQ0FMRV9NQVggPSA1NgotX1NDX0JDX1NUUklOR19NQVggPSA1NwotX1NDX0NPTExfV0VJR0hUU19NQVggPSA1OAotX1NDX0VYUFJfTkVTVF9NQVggPSA1OQotX1NDX0xJTkVfTUFYID0gNjAKLV9TQ19SRV9EVVBfTUFYID0gNjEKLV9TQ19YT1BFTl9DUllQVCA9IDYyCi1fU0NfWE9QRU5fRU5IX0kxOE4gPSA2MwotX1NDX1hPUEVOX1NITSA9IDY0Ci1fU0NfMl9DSEFSX1RFUk0gPSA2NgotX1NDX1hPUEVOX1hDVV9WRVJTSU9OID0gNjcKLV9TQ19BVEVYSVRfTUFYID0gNzYKLV9TQ19JT1ZfTUFYID0gNzcKLV9TQ19YT1BFTl9VTklYID0gNzgKLV9TQ19QQUdFX1NJWkUgPSBfU0NfUEFHRVNJWkUKLV9TQ19UX0lPVl9NQVggPSA3OQotX1NDX1BIWVNfUEFHRVMgPSA1MDAKLV9TQ19BVlBIWVNfUEFHRVMgPSA1MDEKLV9TQ19DT0hFUl9CTEtTWiA9IDUwMwotX1NDX1NQTElUX0NBQ0hFID0gNTA0Ci1fU0NfSUNBQ0hFX1NaID0gNTA1Ci1fU0NfRENBQ0hFX1NaID0gNTA2Ci1fU0NfSUNBQ0hFX0xJTkVTWiA9IDUwNwotX1NDX0RDQUNIRV9MSU5FU1ogPSA1MDgKLV9TQ19JQ0FDSEVfQkxLU1ogPSA1MDkKLV9TQ19EQ0FDSEVfQkxLU1ogPSA1MTAKLV9TQ19EQ0FDSEVfVEJMS1NaID0gNTExCi1fU0NfSUNBQ0hFX0FTU09DID0gNTEyCi1fU0NfRENBQ0hFX0FTU09DID0gNTEzCi1fU0NfTUFYUElEID0gNTE0Ci1fU0NfU1RBQ0tfUFJPVCA9IDUxNQotX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMgPSA1NjgKLV9TQ19HRVRHUl9SX1NJWkVfTUFYID0gNTY5Ci1fU0NfR0VUUFdfUl9TSVpFX01BWCA9IDU3MAotX1NDX0xPR0lOX05BTUVfTUFYID0gNTcxCi1fU0NfVEhSRUFEX0tFWVNfTUFYID0gNTcyCi1fU0NfVEhSRUFEX1NUQUNLX01JTiA9IDU3MwotX1NDX1RIUkVBRF9USFJFQURTX01BWCA9IDU3NAotX1NDX1RUWV9OQU1FX01BWCA9IDU3NQotX1NDX1RIUkVBRFMgPSA1NzYKLV9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIgPSA1NzcKLV9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUgPSA1NzgKLV9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDU3OQotX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQgPSA1ODAKLV9TQ19USFJFQURfUFJJT19QUk9URUNUID0gNTgxCi1fU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVEID0gNTgyCi1fU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TID0gNTgzCi1fU0NfWE9QRU5fTEVHQUNZID0gNzE3Ci1fU0NfWE9QRU5fUkVBTFRJTUUgPSA3MTgKLV9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTID0gNzE5Ci1fU0NfWEJTNV9JTFAzMl9PRkYzMiA9IDcyMAotX1NDX1hCUzVfSUxQMzJfT0ZGQklHID0gNzIxCi1fU0NfWEJTNV9MUDY0X09GRjY0ID0gNzIyCi1fU0NfWEJTNV9MUEJJR19PRkZCSUcgPSA3MjMKLV9QQ19MSU5LX01BWCA9IDEKLV9QQ19NQVhfQ0FOT04gPSAyCi1fUENfTUFYX0lOUFVUID0gMwotX1BDX05BTUVfTUFYID0gNAotX1BDX1BBVEhfTUFYID0gNQotX1BDX1BJUEVfQlVGID0gNgotX1BDX05PX1RSVU5DID0gNwotX1BDX1ZESVNBQkxFID0gOAotX1BDX0NIT1dOX1JFU1RSSUNURUQgPSA5Ci1fUENfQVNZTkNfSU8gPSAxMAotX1BDX1BSSU9fSU8gPSAxMQotX1BDX1NZTkNfSU8gPSAxMgotX1BDX0ZJTEVTSVpFQklUUyA9IDY3Ci1fUENfTEFTVCA9IDY3Ci1fUE9TSVhfVkVSU0lPTiA9IDE5OTUwNgotX1BPU0lYMl9WRVJTSU9OID0gMTk5MjA5Ci1fUE9TSVgyX0NfVkVSU0lPTiA9IDE5OTIwOQotX1hPUEVOX1hDVV9WRVJTSU9OID0gNAotX1hPUEVOX1JFQUxUSU1FID0gMQotX1hPUEVOX0VOSF9JMThOID0gMQotX1hPUEVOX1NITSA9IDEKLV9QT1NJWDJfQ19CSU5EID0gMQotX1BPU0lYMl9DSEFSX1RFUk0gPSAxCi1fUE9TSVgyX0xPQ0FMRURFRiA9IDEKLV9QT1NJWDJfQ19ERVYgPSAxCi1fUE9TSVgyX1NXX0RFViA9IDEKLV9QT1NJWDJfVVBFID0gMQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL211dGV4LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLWRlZiBNVVRFWF9IRUxEKHgpOiByZXR1cm4gKG11dGV4X293bmVkKHgpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcndsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLWRlZiBSV19SRUFEX0hFTEQoeCk6IHJldHVybiAocndfcmVhZF9oZWxkKCh4KSkpCi0KLWRlZiBSV19XUklURV9IRUxEKHgpOiByZXR1cm4gKHJ3X3dyaXRlX2hlbGQoKHgpKSkKLQotZGVmIFJXX0xPQ0tfSEVMRCh4KTogcmV0dXJuIChyd19sb2NrX2hlbGQoKHgpKSkKLQotZGVmIFJXX0lTV1JJVEVSKHgpOiByZXR1cm4gKHJ3X2lzd3JpdGVyKHgpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VtYXBob3JlLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aHJlYWQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2tsd3AuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvbmR2YXIuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3R5cGVzMzIuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF90eXBlcy5oCi1USU1FMzJfTUFYID0gSU5UMzJfTUFYCi1USU1FMzJfTUlOID0gSU5UMzJfTUlOCi1kZWYgVElNRVZBTF9PVkVSRkxPVyh0dik6IHJldHVybiBcCi0KLWZyb20gVFlQRVMgaW1wb3J0ICoKLURTVF9OT05FID0gMAotRFNUX1VTQSA9IDEKLURTVF9BVVNUID0gMgotRFNUX1dFVCA9IDMKLURTVF9NRVQgPSA0Ci1EU1RfRUVUID0gNQotRFNUX0NBTiA9IDYKLURTVF9HQiA9IDcKLURTVF9SVU0gPSA4Ci1EU1RfVFVSID0gOQotRFNUX0FVU1RBTFQgPSAxMAotSVRJTUVSX1JFQUwgPSAwCi1JVElNRVJfVklSVFVBTCA9IDEKLUlUSU1FUl9QUk9GID0gMgotSVRJTUVSX1JFQUxQUk9GID0gMwotZGVmIElUSU1FUlZBTF9PVkVSRkxPVyhpdHYpOiByZXR1cm4gXAotCi1TRUMgPSAxCi1NSUxMSVNFQyA9IDEwMDAKLU1JQ1JPU0VDID0gMTAwMDAwMAotTkFOT1NFQyA9IDEwMDAwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX2ltcGwuaAotZGVmIFRJTUVTUEVDX09WRVJGTE9XKHRzKTogcmV0dXJuIFwKLQotZGVmIElUSU1FUlNQRUNfT1ZFUkZMT1coaXQpOiByZXR1cm4gXAotCi1fX0NMT0NLX1JFQUxUSU1FMCA9IDAKLUNMT0NLX1ZJUlRVQUwgPSAxCi1DTE9DS19QUk9GID0gMgotX19DTE9DS19SRUFMVElNRTMgPSAzCi1DTE9DS19ISUdIUkVTID0gNAotQ0xPQ0tfTUFYID0gNQotQ0xPQ0tfUkVBTFRJTUUgPSBfX0NMT0NLX1JFQUxUSU1FMwotQ0xPQ0tfUkVBTFRJTUUgPSBfX0NMT0NLX1JFQUxUSU1FMAotVElNRVJfUkVMVElNRSA9IDB4MAotVElNRVJfQUJTVElNRSA9IDB4MQotZGVmIFRJQ0tfVE9fU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAvIGh6KQotCi1kZWYgU0VDX1RPX1RJQ0soc2VjKTogcmV0dXJuICgoc2VjKSAqIGh6KQotCi1kZWYgVElDS19UT19NU0VDKHRpY2spOiByZXR1cm4gXAotCi1kZWYgTVNFQ19UT19USUNLKG1zZWMpOiByZXR1cm4gXAotCi1kZWYgTVNFQ19UT19USUNLX1JPVU5EVVAobXNlYyk6IHJldHVybiBcCi0KLWRlZiBUSUNLX1RPX1VTRUModGljayk6IHJldHVybiAoKHRpY2spICogdXNlY19wZXJfdGljaykKLQotZGVmIFVTRUNfVE9fVElDSyh1c2VjKTogcmV0dXJuICgodXNlYykgLyB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLX1JPVU5EVVAodXNlYyk6IHJldHVybiBcCi0KLWRlZiBUSUNLX1RPX05TRUModGljayk6IHJldHVybiAoKHRpY2spICogbnNlY19wZXJfdGljaykKLQotZGVmIE5TRUNfVE9fVElDSyhuc2VjKTogcmV0dXJuICgobnNlYykgLyBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLX1JPVU5EVVAobnNlYyk6IHJldHVybiBcCi0KLWRlZiBUSU1FVkFMX1RPX1RJQ0sodHZwKTogcmV0dXJuIFwKLQotZGVmIFRJTUVTVFJVQ19UT19USUNLKHRzcCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIHRpbWUuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gaXNvL3RpbWVfaXNvLmgKLU5VTEwgPSAwCi1OVUxMID0gMAotQ0xPQ0tTX1BFUl9TRUMgPSAxMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLUZEX1NFVFNJWkUgPSA2NTUzNgotRkRfU0VUU0laRSA9IDEwMjQKLV9OQkJZID0gOAotTkJCWSA9IF9OQkJZCi1kZWYgRkRfWkVSTyhwKTogcmV0dXJuIGJ6ZXJvKChwKSwgc2l6ZW9mICgqKHApKSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ25hbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaXNvL3NpZ25hbF9pc28uaAotU0lHSFVQID0gMQotU0lHSU5UID0gMgotU0lHUVVJVCA9IDMKLVNJR0lMTCA9IDQKLVNJR1RSQVAgPSA1Ci1TSUdJT1QgPSA2Ci1TSUdBQlJUID0gNgotU0lHRU1UID0gNwotU0lHRlBFID0gOAotU0lHS0lMTCA9IDkKLVNJR0JVUyA9IDEwCi1TSUdTRUdWID0gMTEKLVNJR1NZUyA9IDEyCi1TSUdQSVBFID0gMTMKLVNJR0FMUk0gPSAxNAotU0lHVEVSTSA9IDE1Ci1TSUdVU1IxID0gMTYKLVNJR1VTUjIgPSAxNwotU0lHQ0xEID0gMTgKLVNJR0NITEQgPSAxOAotU0lHUFdSID0gMTkKLVNJR1dJTkNIID0gMjAKLVNJR1VSRyA9IDIxCi1TSUdQT0xMID0gMjIKLVNJR0lPID0gU0lHUE9MTAotU0lHU1RPUCA9IDIzCi1TSUdUU1RQID0gMjQKLVNJR0NPTlQgPSAyNQotU0lHVFRJTiA9IDI2Ci1TSUdUVE9VID0gMjcKLVNJR1ZUQUxSTSA9IDI4Ci1TSUdQUk9GID0gMjkKLVNJR1hDUFUgPSAzMAotU0lHWEZTWiA9IDMxCi1TSUdXQUlUSU5HID0gMzIKLVNJR0xXUCA9IDMzCi1TSUdGUkVFWkUgPSAzNAotU0lHVEhBVyA9IDM1Ci1TSUdDQU5DRUwgPSAzNgotU0lHTE9TVCA9IDM3Ci1fU0lHUlRNSU4gPSAzOAotX1NJR1JUTUFYID0gNDUKLVNJR19CTE9DSyA9IDEKLVNJR19VTkJMT0NLID0gMgotU0lHX1NFVE1BU0sgPSAzCi1TSUdOT19NQVNLID0gMHhGRgotU0lHREVGRVIgPSAweDEwMAotU0lHSE9MRCA9IDB4MjAwCi1TSUdSRUxTRSA9IDB4NDAwCi1TSUdJR05PUkUgPSAweDgwMAotU0lHUEFVU0UgPSAweDEwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zaWdpbmZvLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJR0VWX05PTkUgPSAxCi1TSUdFVl9TSUdOQUwgPSAyCi1TSUdFVl9USFJFQUQgPSAzCi1TSV9OT0lORk8gPSAzMjc2NwotU0lfVVNFUiA9IDAKLVNJX0xXUCA9ICgtMSkKLVNJX1FVRVVFID0gKC0yKQotU0lfVElNRVIgPSAoLTMpCi1TSV9BU1lOQ0lPID0gKC00KQotU0lfTUVTR1EgPSAoLTUpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbWFjaHNpZy5oCi1JTExfSUxMT1BDID0gMQotSUxMX0lMTE9QTiA9IDIKLUlMTF9JTExBRFIgPSAzCi1JTExfSUxMVFJQID0gNAotSUxMX1BSVk9QQyA9IDUKLUlMTF9QUlZSRUcgPSA2Ci1JTExfQ09QUk9DID0gNwotSUxMX0JBRFNUSyA9IDgKLU5TSUdJTEwgPSA4Ci1FTVRfVEFHT1ZGID0gMQotRU1UX0NQQ09WRiA9IDIKLU5TSUdFTVQgPSAyCi1GUEVfSU5URElWID0gMQotRlBFX0lOVE9WRiA9IDIKLUZQRV9GTFRESVYgPSAzCi1GUEVfRkxUT1ZGID0gNAotRlBFX0ZMVFVORCA9IDUKLUZQRV9GTFRSRVMgPSA2Ci1GUEVfRkxUSU5WID0gNwotRlBFX0ZMVFNVQiA9IDgKLU5TSUdGUEUgPSA4Ci1TRUdWX01BUEVSUiA9IDEKLVNFR1ZfQUNDRVJSID0gMgotTlNJR1NFR1YgPSAyCi1CVVNfQURSQUxOID0gMQotQlVTX0FEUkVSUiA9IDIKLUJVU19PQkpFUlIgPSAzCi1OU0lHQlVTID0gMwotVFJBUF9CUktQVCA9IDEKLVRSQVBfVFJBQ0UgPSAyCi1UUkFQX1JXQVRDSCA9IDMKLVRSQVBfV1dBVENIID0gNAotVFJBUF9YV0FUQ0ggPSA1Ci1OU0lHVFJBUCA9IDUKLUNMRF9FWElURUQgPSAxCi1DTERfS0lMTEVEID0gMgotQ0xEX0RVTVBFRCA9IDMKLUNMRF9UUkFQUEVEID0gNAotQ0xEX1NUT1BQRUQgPSA1Ci1DTERfQ09OVElOVUVEID0gNgotTlNJR0NMRCA9IDYKLVBPTExfSU4gPSAxCi1QT0xMX09VVCA9IDIKLVBPTExfTVNHID0gMwotUE9MTF9FUlIgPSA0Ci1QT0xMX1BSSSA9IDUKLVBPTExfSFVQID0gNgotTlNJR1BPTEwgPSA2Ci1QUk9GX1NJRyA9IDEKLU5TSUdQUk9GID0gMQotU0lfTUFYU1ogPSAyNTYKLVNJX01BWFNaID0gMTI4Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZV9zdGRfaW1wbC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1TSTMyX01BWFNaID0gMTI4Ci1kZWYgU0lfQ0FOUVVFVUUoYyk6IHJldHVybiAoKGMpIDw9IFNJX1FVRVVFKQotCi1TQV9OT0NMRFNUT1AgPSAweDAwMDIwMDAwCi1TQV9PTlNUQUNLID0gMHgwMDAwMDAwMQotU0FfUkVTRVRIQU5EID0gMHgwMDAwMDAwMgotU0FfUkVTVEFSVCA9IDB4MDAwMDAwMDQKLVNBX1NJR0lORk8gPSAweDAwMDAwMDA4Ci1TQV9OT0RFRkVSID0gMHgwMDAwMDAxMAotU0FfTk9DTERXQUlUID0gMHgwMDAxMDAwMAotU0FfV0FJVFNJRyA9IDB4MDAwMTAwMDAKLU5TSUcgPSA0NgotTUFYU0lHID0gNDUKLVNfU0lHTkFMID0gMQotU19TSUdTRVQgPSAyCi1TX1NJR0FDVElPTiA9IDMKLVNfTk9ORSA9IDQKLU1JTlNJR1NUS1NaID0gMjA0OAotU0lHU1RLU1ogPSA4MTkyCi1TU19PTlNUQUNLID0gMHgwMDAwMDAwMQotU1NfRElTQUJMRSA9IDB4MDAwMDAwMDIKLVNOX1BST0MgPSAxCi1TTl9DQU5DRUwgPSAyCi1TTl9TRU5EID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Vjb250ZXh0LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yZWdzZXQuaAotUkVHX0NDUiA9ICgwKQotUkVHX1BTUiA9ICgwKQotUkVHX1BTUiA9ICgwKQotUkVHX1BDID0gKDEpCi1SRUdfblBDID0gKDIpCi1SRUdfWSA9ICgzKQotUkVHX0cxID0gKDQpCi1SRUdfRzIgPSAoNSkKLVJFR19HMyA9ICg2KQotUkVHX0c0ID0gKDcpCi1SRUdfRzUgPSAoOCkKLVJFR19HNiA9ICg5KQotUkVHX0c3ID0gKDEwKQotUkVHX08wID0gKDExKQotUkVHX08xID0gKDEyKQotUkVHX08yID0gKDEzKQotUkVHX08zID0gKDE0KQotUkVHX080ID0gKDE1KQotUkVHX081ID0gKDE2KQotUkVHX082ID0gKDE3KQotUkVHX083ID0gKDE4KQotUkVHX0FTSSA9ICgxOSkKLVJFR19GUFJTID0gKDIwKQotUkVHX1BTID0gUkVHX1BTUgotUkVHX1NQID0gUkVHX082Ci1SRUdfUjAgPSBSRUdfTzAKLVJFR19SMSA9IFJFR19PMQotX05HUkVHID0gMjEKLV9OR1JFRyA9IDE5Ci1OR1JFRyA9IF9OR1JFRwotX05HUkVHMzIgPSAxOQotX05HUkVHNjQgPSAyMQotU1BBUkNfTUFYUkVHV0lORE9XID0gMzEKLU1BWEZQUSA9IDE2Ci1YUlNfSUQgPSAweDc4NzI3MzAwCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHJpdnJlZ3MuaAotCi0jIEluY2x1ZGVkIGZyb20gdjcvc3lzL3Bzci5oCi1QU1JfQ1dQID0gMHgwMDAwMDAxRgotUFNSX0VUID0gMHgwMDAwMDAyMAotUFNSX1BTID0gMHgwMDAwMDA0MAotUFNSX1MgPSAweDAwMDAwMDgwCi1QU1JfUElMID0gMHgwMDAwMEYwMAotUFNSX0VGID0gMHgwMDAwMTAwMAotUFNSX0VDID0gMHgwMDAwMjAwMAotUFNSX1JTViA9IDB4MDAwRkMwMDAKLVBTUl9JQ0MgPSAweDAwRjAwMDAwCi1QU1JfQyA9IDB4MDAxMDAwMDAKLVBTUl9WID0gMHgwMDIwMDAwMAotUFNSX1ogPSAweDAwNDAwMDAwCi1QU1JfTiA9IDB4MDA4MDAwMDAKLVBTUl9WRVIgPSAweDBGMDAwMDAwCi1QU1JfSU1QTCA9IDB4RjAwMDAwMDAKLVBTTF9BTExDQyA9IFBTUl9JQ0MKLVBTTF9VU0VSID0gKFBTUl9TKQotUFNMX1VTRVJNQVNLID0gKFBTUl9JQ0MpCi1QU0xfVUJJVFMgPSAoUFNSX0lDQ3xQU1JfRUYpCi1kZWYgVVNFUk1PREUocHMpOiByZXR1cm4gKCgocHMpICYgUFNSX1BTKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZnNyLmgKLUZTUl9DRVhDID0gMHgwMDAwMDAxZgotRlNSX0FFWEMgPSAweDAwMDAwM2UwCi1GU1JfRkNDID0gMHgwMDAwMGMwMAotRlNSX1BSID0gMHgwMDAwMTAwMAotRlNSX1FORSA9IDB4MDAwMDIwMDAKLUZTUl9GVFQgPSAweDAwMDFjMDAwCi1GU1JfVkVSID0gMHgwMDBlMDAwMAotRlNSX1RFTSA9IDB4MGY4MDAwMDAKLUZTUl9SUCA9IDB4MzAwMDAwMDAKLUZTUl9SRCA9IDB4YzAwMDAwMDAKLUZTUl9WRVJfU0hJRlQgPSAxNwotRlNSX0ZDQzEgPSAweDAwMDAwMDAzCi1GU1JfRkNDMiA9IDB4MDAwMDAwMEMKLUZTUl9GQ0MzID0gMHgwMDAwMDAzMAotRlNSX0NFWENfTlggPSAweDAwMDAwMDAxCi1GU1JfQ0VYQ19EWiA9IDB4MDAwMDAwMDIKLUZTUl9DRVhDX1VGID0gMHgwMDAwMDAwNAotRlNSX0NFWENfT0YgPSAweDAwMDAwMDA4Ci1GU1JfQ0VYQ19OViA9IDB4MDAwMDAwMTAKLUZTUl9BRVhDX05YID0gKDB4MSA8PCA1KQotRlNSX0FFWENfRFogPSAoMHgyIDw8IDUpCi1GU1JfQUVYQ19VRiA9ICgweDQgPDwgNSkKLUZTUl9BRVhDX09GID0gKDB4OCA8PCA1KQotRlNSX0FFWENfTlYgPSAoMHgxMCA8PCA1KQotRlRUX05PTkUgPSAwCi1GVFRfSUVFRSA9IDEKLUZUVF9VTkZJTiA9IDIKLUZUVF9VTklNUCA9IDMKLUZUVF9TRVEgPSA0Ci1GVFRfQUxJR04gPSA1Ci1GVFRfREZBVUxUID0gNgotRlNSX0ZUVF9TSElGVCA9IDE0Ci1GU1JfRlRUX0lFRUUgPSAoRlRUX0lFRUUgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9VTkZJTiA9IChGVFRfVU5GSU4gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VOSU1QID0gKEZUVF9VTklNUCAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfU0VRID0gKEZUVF9TRVEgICAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfQUxJR04gPSAoRlRUX0FMSUdOICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9ERkFVTFQgPSAoRlRUX0RGQVVMVCA8PCBGU1JfRlRUX1NISUZUKQotRlNSX1RFTV9OWCA9ICgweDEgPDwgMjMpCi1GU1JfVEVNX0RaID0gKDB4MiA8PCAyMykKLUZTUl9URU1fVUYgPSAoMHg0IDw8IDIzKQotRlNSX1RFTV9PRiA9ICgweDggPDwgMjMpCi1GU1JfVEVNX05WID0gKDB4MTAgPDwgMjMpCi1SUF9EQkxFWFQgPSAwCi1SUF9TSU5HTEUgPSAxCi1SUF9ET1VCTEUgPSAyCi1SUF9SRVNFUlZFRCA9IDMKLVJEX05FQVIgPSAwCi1SRF9aRVIwID0gMQotUkRfUE9TSU5GID0gMgotUkRfTkVHSU5GID0gMwotRlBSU19ETCA9IDB4MQotRlBSU19EVSA9IDB4MgotRlBSU19GRUYgPSAweDQKLVBJTF9NQVggPSAweGYKLWRlZiBTQVZFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9HTE9CQUxTKFJQKTogcmV0dXJuIFwKLQotZGVmIFNBVkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX09VVFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfV0lORE9XKFNCUCk6IHJldHVybiBcCi0KLWRlZiBTVE9SRV9GUFJFR1MoRlApOiByZXR1cm4gXAotCi1kZWYgTE9BRF9GUFJFR1MoRlApOiByZXR1cm4gXAotCi1fU1BBUkNfTUFYUkVHV0lORE9XID0gMzEKLV9YUlNfSUQgPSAweDc4NzI3MzAwCi1HRVRDT05URVhUID0gMAotU0VUQ09OVEVYVCA9IDEKLVVDX1NJR01BU0sgPSAwbzAxCi1VQ19TVEFDSyA9IDBvMDIKLVVDX0NQVSA9IDBvMDQKLVVDX01BVSA9IDBvMTAKLVVDX0ZQVSA9IFVDX01BVQotVUNfSU5UUiA9IDBvMjAKLVVDX0FTUiA9IDBvNDAKLVVDX01DT05URVhUID0gKFVDX0NQVXxVQ19GUFV8VUNfQVNSKQotVUNfQUxMID0gKFVDX1NJR01BU0t8VUNfU1RBQ0t8VUNfTUNPTlRFWFQpCi1fU0lHUVVFVUVfTUFYID0gMzIKLV9TSUdOT1RJRllfTUFYID0gMzIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wY2IuaAotSU5TVFJfVkFMSUQgPSAweDAyCi1OT1JNQUxfU1RFUCA9IDB4MDQKLVdBVENIX1NURVAgPSAweDA4Ci1DUENfT1ZFUkZMT1cgPSAweDEwCi1BU1lOQ19IV0VSUiA9IDB4MjAKLVNURVBfTk9ORSA9IDAKLVNURVBfUkVRVUVTVEVEID0gMQotU1RFUF9BQ1RJVkUgPSAyCi1TVEVQX1dBU0FDVElWRSA9IDMKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tc2FjY3QuaAotTE1TX1VTRVIgPSAwCi1MTVNfU1lTVEVNID0gMQotTE1TX1RSQVAgPSAyCi1MTVNfVEZBVUxUID0gMwotTE1TX0RGQVVMVCA9IDQKLUxNU19LRkFVTFQgPSA1Ci1MTVNfVVNFUl9MT0NLID0gNgotTE1TX1NMRUVQID0gNwotTE1TX1dBSVRfQ1BVID0gOAotTE1TX1NUT1BQRUQgPSA5Ci1OTVNUQVRFUyA9IDEwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbHdwLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zeW5jaC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1VU1lOQ19USFJFQUQgPSAweDAwCi1VU1lOQ19QUk9DRVNTID0gMHgwMQotTE9DS19OT1JNQUwgPSAweDAwCi1MT0NLX0VSUk9SQ0hFQ0sgPSAweDAyCi1MT0NLX1JFQ1VSU0lWRSA9IDB4MDQKLVVTWU5DX1BST0NFU1NfUk9CVVNUID0gMHgwOAotTE9DS19QUklPX05PTkUgPSAweDAwCi1MT0NLX1BSSU9fSU5IRVJJVCA9IDB4MTAKLUxPQ0tfUFJJT19QUk9URUNUID0gMHgyMAotTE9DS19TVEFMTF9OUCA9IDB4MDAKLUxPQ0tfUk9CVVNUX05QID0gMHg0MAotTE9DS19PV05FUkRFQUQgPSAweDEKLUxPQ0tfTk9UUkVDT1ZFUkFCTEUgPSAweDIKLUxPQ0tfSU5JVEVEID0gMHg0Ci1MT0NLX1VOTUFQUEVEID0gMHg4Ci1MV1BfREVUQUNIRUQgPSAweDAwMDAwMDQwCi1MV1BfU1VTUEVOREVEID0gMHgwMDAwMDA4MAotX19MV1BfQVNMV1AgPSAweDAwMDAwMTAwCi1NQVhTWVNBUkdTID0gOAotTk9STUFMUkVUVVJOID0gMAotSlVTVFJFVFVSTiA9IDEKLUxXUF9VU0VSID0gMHgwMQotTFdQX1NZUyA9IDB4MDIKLVRTX0ZSRUUgPSAweDAwCi1UU19TTEVFUCA9IDB4MDEKLVRTX1JVTiA9IDB4MDIKLVRTX09OUFJPQyA9IDB4MDQKLVRTX1pPTUIgPSAweDA4Ci1UU19TVE9QUEVEID0gMHgxMAotVF9JTlRSX1RIUkVBRCA9IDB4MDAwMQotVF9XQUtFQUJMRSA9IDB4MDAwMgotVF9UT01BU0sgPSAweDAwMDQKLVRfVEFMTE9DU1RLID0gMHgwMDA4Ci1UX1dPVUxEQkxPQ0sgPSAweDAwMjAKLVRfRE9OVEJMT0NLID0gMHgwMDQwCi1UX0RPTlRQRU5EID0gMHgwMDgwCi1UX1NZU19QUk9GID0gMHgwMTAwCi1UX1dBSVRDVlNFTSA9IDB4MDIwMAotVF9XQVRDSFBUID0gMHgwNDAwCi1UX1BBTklDID0gMHgwODAwCi1UUF9IT0xETFdQID0gMHgwMDAyCi1UUF9UV0FJVCA9IDB4MDAwNAotVFBfTFdQRVhJVCA9IDB4MDAwOAotVFBfUFJTVE9QID0gMHgwMDEwCi1UUF9DSEtQVCA9IDB4MDAyMAotVFBfRVhJVExXUCA9IDB4MDA0MAotVFBfUFJWU1RPUCA9IDB4MDA4MAotVFBfTVNBQ0NUID0gMHgwMTAwCi1UUF9TVE9QUElORyA9IDB4MDIwMAotVFBfV0FUQ0hQVCA9IDB4MDQwMAotVFBfUEFVU0UgPSAweDA4MDAKLVRQX0NIQU5HRUJJTkQgPSAweDEwMDAKLVRTX0xPQUQgPSAweDAwMDEKLVRTX0RPTlRfU1dBUCA9IDB4MDAwMgotVFNfU1dBUEVOUSA9IDB4MDAwNAotVFNfT05fU1dBUFEgPSAweDAwMDgKLVRTX0NTVEFSVCA9IDB4MDEwMAotVFNfVU5QQVVTRSA9IDB4MDIwMAotVFNfWFNUQVJUID0gMHgwNDAwCi1UU19QU1RBUlQgPSAweDA4MDAKLVRTX1JFU1VNRSA9IDB4MTAwMAotVFNfQ1JFQVRFID0gMHgyMDAwCi1UU19BTExTVEFSVCA9IFwKLSAgICAgICAgKFRTX0NTVEFSVHxUU19VTlBBVVNFfFRTX1hTVEFSVHxUU19QU1RBUlR8VFNfUkVTVU1FfFRTX0NSRUFURSkKLWRlZiBDUFJfVlNUT1BQRUQodCk6IHJldHVybiBcCi0KLWRlZiBUSFJFQURfVFJBTlNJVElPTih0cCk6IHJldHVybiB0aHJlYWRfdHJhbnNpdGlvbih0cCk7Ci0KLWRlZiBUSFJFQURfU1RPUCh0cCk6IHJldHVybiBcCi0KLWRlZiBUSFJFQURfWk9NQih0cCk6IHJldHVybiBUSFJFQURfU0VUX1NUQVRFKHRwLCBUU19aT01CLCBOVUxMKQotCi1kZWYgU0VNQV9IRUxEKHgpOiByZXR1cm4gKHNlbWFfaGVsZCgoeCkpKQotCi1OT19MT0NLU19IRUxEID0gMQotTk9fQ09NUEVUSU5HX1RIUkVBRFMgPSAxCi1GTU5BTUVTWiA9IDgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zeXN0bS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcHJvYy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY3JlZC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdXNlci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcmVzb3VyY2UuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotUFJJT19QUk9DRVNTID0gMAotUFJJT19QR1JQID0gMQotUFJJT19VU0VSID0gMgotUkxJTUlUX0NQVSA9IDAKLVJMSU1JVF9GU0laRSA9IDEKLVJMSU1JVF9EQVRBID0gMgotUkxJTUlUX1NUQUNLID0gMwotUkxJTUlUX0NPUkUgPSA0Ci1STElNSVRfTk9GSUxFID0gNQotUkxJTUlUX1ZNRU0gPSA2Ci1STElNSVRfQVMgPSBSTElNSVRfVk1FTQotUkxJTV9OTElNSVRTID0gNwotUkxJTV9JTkZJTklUWSA9ICgtMykKLVJMSU1fU0FWRURfTUFYID0gKC0yKQotUkxJTV9TQVZFRF9DVVIgPSAoLTEpCi1STElNX0lORklOSVRZID0gMHg3ZmZmZmZmZgotUkxJTV9TQVZFRF9NQVggPSAweDdmZmZmZmZlCi1STElNX1NBVkVEX0NVUiA9IDB4N2ZmZmZmZmQKLVJMSU0zMl9JTkZJTklUWSA9IDB4N2ZmZmZmZmYKLVJMSU0zMl9TQVZFRF9NQVggPSAweDdmZmZmZmZlCi1STElNMzJfU0FWRURfQ1VSID0gMHg3ZmZmZmZmZAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21vZGVsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZWJ1Zy5oCi1kZWYgQVNTRVJUNjQoeCk6IHJldHVybiBBU1NFUlQoeCkKLQotZGVmIEFTU0VSVDMyKHgpOiByZXR1cm4gQVNTRVJUKHgpCi0KLURBVEFNT0RFTF9NQVNLID0gMHgwRkYwMDAwMAotREFUQU1PREVMX0lMUDMyID0gMHgwMDEwMDAwMAotREFUQU1PREVMX0xQNjQgPSAweDAwMjAwMDAwCi1EQVRBTU9ERUxfTk9ORSA9IDAKLURBVEFNT0RFTF9OQVRJVkUgPSBEQVRBTU9ERUxfTFA2NAotREFUQU1PREVMX05BVElWRSA9IERBVEFNT0RFTF9JTFAzMgotZGVmIFNUUlVDVF9TSVpFKGhhbmRsZSk6IHJldHVybiBcCi0KLWRlZiBTVFJVQ1RfQlVGKGhhbmRsZSk6IHJldHVybiAoKGhhbmRsZSkucHRyLm02NCkKLQotZGVmIFNJWkVPRl9QVFIodW1vZGVsKTogcmV0dXJuIFwKLQotZGVmIFNUUlVDVF9TSVpFKGhhbmRsZSk6IHJldHVybiAoc2l6ZW9mICgqKGhhbmRsZSkucHRyKSkKLQotZGVmIFNUUlVDVF9CVUYoaGFuZGxlKTogcmV0dXJuICgoaGFuZGxlKS5wdHIpCi0KLWRlZiBTSVpFT0ZfUFRSKHVtb2RlbCk6IHJldHVybiBzaXplb2YgKGNhZGRyX3QpCi0KLWRlZiBsd3BfZ2V0ZGF0YW1vZGVsKHQpOiByZXR1cm4gREFUQU1PREVMX0lMUDMyCi0KLVJVU0FHRV9TRUxGID0gMAotUlVTQUdFX0NISUxEUkVOID0gLTEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9hdXh2LmgKLUFUX05VTEwgPSAwCi1BVF9JR05PUkUgPSAxCi1BVF9FWEVDRkQgPSAyCi1BVF9QSERSID0gMwotQVRfUEhFTlQgPSA0Ci1BVF9QSE5VTSA9IDUKLUFUX1BBR0VTWiA9IDYKLUFUX0JBU0UgPSA3Ci1BVF9GTEFHUyA9IDgKLUFUX0VOVFJZID0gOQotQVRfRENBQ0hFQlNJWkUgPSAxMAotQVRfSUNBQ0hFQlNJWkUgPSAxMQotQVRfVUNBQ0hFQlNJWkUgPSAxMgotQVRfU1VOX1VJRCA9IDIwMDAKLUFUX1NVTl9SVUlEID0gMjAwMQotQVRfU1VOX0dJRCA9IDIwMDIKLUFUX1NVTl9SR0lEID0gMjAwMwotQVRfU1VOX0xERUxGID0gMjAwNAotQVRfU1VOX0xEU0hEUiA9IDIwMDUKLUFUX1NVTl9MRE5BTUUgPSAyMDA2Ci1BVF9TVU5fTFBBR0VTWiA9IDIwMDcKLUFUX1NVTl9QTEFURk9STSA9IDIwMDgKLUFUX1NVTl9IV0NBUCA9IDIwMDkKLUFUX1NVTl9JRkxVU0ggPSAyMDEwCi1BVF9TVU5fQ1BVID0gMjAxMQotQVRfU1VOX0VNVUxfRU5UUlkgPSAyMDEyCi1BVF9TVU5fRU1VTF9FWEVDRkQgPSAyMDEzCi1BVF9TVU5fRVhFQ05BTUUgPSAyMDE0Ci1BVF9TVU5fTU1VID0gMjAxNQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2Vycm5vLmgKLUVQRVJNID0gMQotRU5PRU5UID0gMgotRVNSQ0ggPSAzCi1FSU5UUiA9IDQKLUVJTyA9IDUKLUVOWElPID0gNgotRTJCSUcgPSA3Ci1FTk9FWEVDID0gOAotRUJBREYgPSA5Ci1FQ0hJTEQgPSAxMAotRUFHQUlOID0gMTEKLUVOT01FTSA9IDEyCi1FQUNDRVMgPSAxMwotRUZBVUxUID0gMTQKLUVOT1RCTEsgPSAxNQotRUJVU1kgPSAxNgotRUVYSVNUID0gMTcKLUVYREVWID0gMTgKLUVOT0RFViA9IDE5Ci1FTk9URElSID0gMjAKLUVJU0RJUiA9IDIxCi1FSU5WQUwgPSAyMgotRU5GSUxFID0gMjMKLUVNRklMRSA9IDI0Ci1FTk9UVFkgPSAyNQotRVRYVEJTWSA9IDI2Ci1FRkJJRyA9IDI3Ci1FTk9TUEMgPSAyOAotRVNQSVBFID0gMjkKLUVST0ZTID0gMzAKLUVNTElOSyA9IDMxCi1FUElQRSA9IDMyCi1FRE9NID0gMzMKLUVSQU5HRSA9IDM0Ci1FTk9NU0cgPSAzNQotRUlEUk0gPSAzNgotRUNIUk5HID0gMzcKLUVMMk5TWU5DID0gMzgKLUVMM0hMVCA9IDM5Ci1FTDNSU1QgPSA0MAotRUxOUk5HID0gNDEKLUVVTkFUQ0ggPSA0MgotRU5PQ1NJID0gNDMKLUVMMkhMVCA9IDQ0Ci1FREVBRExLID0gNDUKLUVOT0xDSyA9IDQ2Ci1FQ0FOQ0VMRUQgPSA0NwotRU5PVFNVUCA9IDQ4Ci1FRFFVT1QgPSA0OQotRUJBREUgPSA1MAotRUJBRFIgPSA1MQotRVhGVUxMID0gNTIKLUVOT0FOTyA9IDUzCi1FQkFEUlFDID0gNTQKLUVCQURTTFQgPSA1NQotRURFQURMT0NLID0gNTYKLUVCRk9OVCA9IDU3Ci1FT1dORVJERUFEID0gNTgKLUVOT1RSRUNPVkVSQUJMRSA9IDU5Ci1FTk9TVFIgPSA2MAotRU5PREFUQSA9IDYxCi1FVElNRSA9IDYyCi1FTk9TUiA9IDYzCi1FTk9ORVQgPSA2NAotRU5PUEtHID0gNjUKLUVSRU1PVEUgPSA2NgotRU5PTElOSyA9IDY3Ci1FQURWID0gNjgKLUVTUk1OVCA9IDY5Ci1FQ09NTSA9IDcwCi1FUFJPVE8gPSA3MQotRUxPQ0tVTk1BUFBFRCA9IDcyCi1FTk9UQUNUSVZFID0gNzMKLUVNVUxUSUhPUCA9IDc0Ci1FQkFETVNHID0gNzcKLUVOQU1FVE9PTE9ORyA9IDc4Ci1FT1ZFUkZMT1cgPSA3OQotRU5PVFVOSVEgPSA4MAotRUJBREZEID0gODEKLUVSRU1DSEcgPSA4MgotRUxJQkFDQyA9IDgzCi1FTElCQkFEID0gODQKLUVMSUJTQ04gPSA4NQotRUxJQk1BWCA9IDg2Ci1FTElCRVhFQyA9IDg3Ci1FSUxTRVEgPSA4OAotRU5PU1lTID0gODkKLUVMT09QID0gOTAKLUVSRVNUQVJUID0gOTEKLUVTVFJQSVBFID0gOTIKLUVOT1RFTVBUWSA9IDkzCi1FVVNFUlMgPSA5NAotRU5PVFNPQ0sgPSA5NQotRURFU1RBRERSUkVRID0gOTYKLUVNU0dTSVpFID0gOTcKLUVQUk9UT1RZUEUgPSA5OAotRU5PUFJPVE9PUFQgPSA5OQotRVBST1RPTk9TVVBQT1JUID0gMTIwCi1FU09DS1ROT1NVUFBPUlQgPSAxMjEKLUVPUE5PVFNVUFAgPSAxMjIKLUVQRk5PU1VQUE9SVCA9IDEyMwotRUFGTk9TVVBQT1JUID0gMTI0Ci1FQUREUklOVVNFID0gMTI1Ci1FQUREUk5PVEFWQUlMID0gMTI2Ci1FTkVURE9XTiA9IDEyNwotRU5FVFVOUkVBQ0ggPSAxMjgKLUVORVRSRVNFVCA9IDEyOQotRUNPTk5BQk9SVEVEID0gMTMwCi1FQ09OTlJFU0VUID0gMTMxCi1FTk9CVUZTID0gMTMyCi1FSVNDT05OID0gMTMzCi1FTk9UQ09OTiA9IDEzNAotRVNIVVRET1dOID0gMTQzCi1FVE9PTUFOWVJFRlMgPSAxNDQKLUVUSU1FRE9VVCA9IDE0NQotRUNPTk5SRUZVU0VEID0gMTQ2Ci1FSE9TVERPV04gPSAxNDcKLUVIT1NUVU5SRUFDSCA9IDE0OAotRVdPVUxEQkxPQ0sgPSBFQUdBSU4KLUVBTFJFQURZID0gMTQ5Ci1FSU5QUk9HUkVTUyA9IDE1MAotRVNUQUxFID0gMTUxCi1QU0FSR1NaID0gODAKLVBTQ09NU0laID0gMTQKLU1BWENPTUxFTiA9IDE2Ci1fX0tFUk5fTkFVWFZfSU1QTCA9IDE5Ci1fX0tFUk5fTkFVWFZfSU1QTCA9IDIxCi1fX0tFUk5fTkFVWFZfSU1QTCA9IDIxCi1QU0FSR1NaID0gODAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy93YXRjaHBvaW50LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHZtL3NlZ19lbnVtLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jb3B5b3BzLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9idWYuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2tzdGF0LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUtTVEFUX1NUUkxFTiA9IDMxCi1kZWYgS1NUQVRfRU5URVIoayk6IHJldHVybiBcCi0KLWRlZiBLU1RBVF9FWElUKGspOiByZXR1cm4gXAotCi1LU1RBVF9UWVBFX1JBVyA9IDAKLUtTVEFUX1RZUEVfTkFNRUQgPSAxCi1LU1RBVF9UWVBFX0lOVFIgPSAyCi1LU1RBVF9UWVBFX0lPID0gMwotS1NUQVRfVFlQRV9USU1FUiA9IDQKLUtTVEFUX05VTV9UWVBFUyA9IDUKLUtTVEFUX0ZMQUdfVklSVFVBTCA9IDB4MDEKLUtTVEFUX0ZMQUdfVkFSX1NJWkUgPSAweDAyCi1LU1RBVF9GTEFHX1dSSVRBQkxFID0gMHgwNAotS1NUQVRfRkxBR19QRVJTSVNURU5UID0gMHgwOAotS1NUQVRfRkxBR19ET1JNQU5UID0gMHgxMAotS1NUQVRfRkxBR19JTlZBTElEID0gMHgyMAotS1NUQVRfUkVBRCA9IDAKLUtTVEFUX1dSSVRFID0gMQotS1NUQVRfREFUQV9DSEFSID0gMAotS1NUQVRfREFUQV9JTlQzMiA9IDEKLUtTVEFUX0RBVEFfVUlOVDMyID0gMgotS1NUQVRfREFUQV9JTlQ2NCA9IDMKLUtTVEFUX0RBVEFfVUlOVDY0ID0gNAotS1NUQVRfREFUQV9MT05HID0gS1NUQVRfREFUQV9JTlQzMgotS1NUQVRfREFUQV9VTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDMyCi1LU1RBVF9EQVRBX0xPTkcgPSBLU1RBVF9EQVRBX0lOVDY0Ci1LU1RBVF9EQVRBX1VMT05HID0gS1NUQVRfREFUQV9VSU5UNjQKLUtTVEFUX0RBVEFfTE9ORyA9IDcKLUtTVEFUX0RBVEFfVUxPTkcgPSA4Ci1LU1RBVF9EQVRBX0xPTkdMT05HID0gS1NUQVRfREFUQV9JTlQ2NAotS1NUQVRfREFUQV9VTE9OR0xPTkcgPSBLU1RBVF9EQVRBX1VJTlQ2NAotS1NUQVRfREFUQV9GTE9BVCA9IDUKLUtTVEFUX0RBVEFfRE9VQkxFID0gNgotS1NUQVRfSU5UUl9IQVJEID0gMAotS1NUQVRfSU5UUl9TT0ZUID0gMQotS1NUQVRfSU5UUl9XQVRDSERPRyA9IDIKLUtTVEFUX0lOVFJfU1BVUklPVVMgPSAzCi1LU1RBVF9JTlRSX01VTFRTVkMgPSA0Ci1LU1RBVF9OVU1fSU5UUlMgPSA1Ci1CX0JVU1kgPSAweDAwMDEKLUJfRE9ORSA9IDB4MDAwMgotQl9FUlJPUiA9IDB4MDAwNAotQl9QQUdFSU8gPSAweDAwMTAKLUJfUEhZUyA9IDB4MDAyMAotQl9SRUFEID0gMHgwMDQwCi1CX1dSSVRFID0gMHgwMTAwCi1CX0tFUk5CVUYgPSAweDAwMDgKLUJfV0FOVEVEID0gMHgwMDgwCi1CX0FHRSA9IDB4MDAwMjAwCi1CX0FTWU5DID0gMHgwMDA0MDAKLUJfREVMV1JJID0gMHgwMDA4MDAKLUJfU1RBTEUgPSAweDAwMTAwMAotQl9ET05UTkVFRCA9IDB4MDAyMDAwCi1CX1JFTUFQUEVEID0gMHgwMDQwMDAKLUJfRlJFRSA9IDB4MDA4MDAwCi1CX0lOVkFMID0gMHgwMTAwMDAKLUJfRk9SQ0UgPSAweDAyMDAwMAotQl9IRUFEID0gMHgwNDAwMDAKLUJfTk9DQUNIRSA9IDB4MDgwMDAwCi1CX1RSVU5DID0gMHgxMDAwMDAKLUJfU0hBRE9XID0gMHgyMDAwMDAKLUJfUkVUUllXUkkgPSAweDQwMDAwMAotZGVmIG5vdGF2YWlsKGJwKTogcmV0dXJuIFwKLQotZGVmIEJXUklURShicCk6IHJldHVybiBcCi0KLWRlZiBCV1JJVEUyKGJwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2Fpb19yZXEuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Vpby5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1XUF9OT1dBVENIID0gMHgwMQotV1BfU0VUUFJPVCA9IDB4MDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1fVElNRVJfTUFYID0gMzIKLUlUTEtfTE9DS0VEID0gMHgwMQotSVRMS19XQU5URUQgPSAweDAyCi1JVExLX1JFTU9WRSA9IDB4MDQKLUlUX1BFUkxXUCA9IDB4MDEKLUlUX1NJR05BTCA9IDB4MDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91dHJhcC5oCi1VVF9JTlNUUlVDVElPTl9ESVNBQkxFRCA9IDEKLVVUX0lOU1RSVUNUSU9OX0VSUk9SID0gMgotVVRfSU5TVFJVQ1RJT05fUFJPVEVDVElPTiA9IDMKLVVUX0lMTFRSQVBfSU5TVFJVQ1RJT04gPSA0Ci1VVF9JTExFR0FMX0lOU1RSVUNUSU9OID0gNQotVVRfUFJJVklMRUdFRF9PUENPREUgPSA2Ci1VVF9GUF9ESVNBQkxFRCA9IDcKLVVUX0ZQX0VYQ0VQVElPTl9JRUVFXzc1NCA9IDgKLVVUX0ZQX0VYQ0VQVElPTl9PVEhFUiA9IDkKLVVUX1RBR19PVkVSRkxPVyA9IDEwCi1VVF9ESVZJU0lPTl9CWV9aRVJPID0gMTEKLVVUX0RBVEFfRVhDRVBUSU9OID0gMTIKLVVUX0RBVEFfRVJST1IgPSAxMwotVVRfREFUQV9QUk9URUNUSU9OID0gMTQKLVVUX01FTV9BRERSRVNTX05PVF9BTElHTkVEID0gMTUKLVVUX1BSSVZJTEVHRURfQUNUSU9OID0gMTYKLVVUX0FTWU5DX0RBVEFfRVJST1IgPSAxNwotVVRfVFJBUF9JTlNUUlVDVElPTl8xNiA9IDE4Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzE3ID0gMTkKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMTggPSAyMAotVVRfVFJBUF9JTlNUUlVDVElPTl8xOSA9IDIxCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzIwID0gMjIKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjEgPSAyMwotVVRfVFJBUF9JTlNUUlVDVElPTl8yMiA9IDI0Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzIzID0gMjUKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjQgPSAyNgotVVRfVFJBUF9JTlNUUlVDVElPTl8yNSA9IDI3Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI2ID0gMjgKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjcgPSAyOQotVVRfVFJBUF9JTlNUUlVDVElPTl8yOCA9IDMwCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzI5ID0gMzEKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMzAgPSAzMgotVVRfVFJBUF9JTlNUUlVDVElPTl8zMSA9IDMzCi1VVFJBUF9WOFBfRlBfRElTQUJMRUQgPSBVVF9GUF9ESVNBQkxFRAotVVRSQVBfVjhQX01FTV9BRERSRVNTX05PVF9BTElHTkVEID0gVVRfTUVNX0FERFJFU1NfTk9UX0FMSUdORUQKLVVUX1BSRUNJU0VfTUFYVFJBUFMgPSAzMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3JlZnN0ci5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGFzay5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1UQVNLX05PUk1BTCA9IDB4MAotVEFTS19GSU5BTCA9IDB4MQotVEFTS19GSU5BTElUWSA9IDB4MQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lkX3NwYWNlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92bWVtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVZNX1NMRUVQID0gMHgwMDAwMDAwMAotVk1fTk9TTEVFUCA9IDB4MDAwMDAwMDEKLVZNX1BBTklDID0gMHgwMDAwMDAwMgotVk1fS01GTEFHUyA9IDB4MDAwMDAwZmYKLVZNX0JFU1RGSVQgPSAweDAwMDAwMTAwCi1WTUVNX0FMTE9DID0gMHgwMQotVk1FTV9GUkVFID0gMHgwMgotVk1FTV9TUEFOID0gMHgxMAotSVNQX05PUk1BTCA9IDB4MAotSVNQX1JFU0VSVkUgPSAweDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9leGFjY3RfaW1wbC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva21lbS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1LTV9TTEVFUCA9IDB4MDAwMAotS01fTk9TTEVFUCA9IDB4MDAwMQotS01fUEFOSUMgPSAweDAwMDIKLUtNX1ZNRkxBR1MgPSAweDAwZmYKLUtNX0ZMQUdTID0gMHhmZmZmCi1LTUNfTk9UT1VDSCA9IDB4MDAwMTAwMDAKLUtNQ19OT0RFQlVHID0gMHgwMDAyMDAwMAotS01DX05PTUFHQVpJTkUgPSAweDAwMDQwMDAwCi1LTUNfTk9IQVNIID0gMHgwMDA4MDAwMAotS01DX1FDQUNIRSA9IDB4MDAxMDAwMDAKLV9JU0FfSUEzMiA9IDAKLV9JU0FfSUE2NCA9IDEKLVNTTEVFUCA9IDEKLVNSVU4gPSAyCi1TWk9NQiA9IDMKLVNTVE9QID0gNAotU0lETCA9IDUKLVNPTlBST0MgPSA2Ci1DTERQRU5EID0gMHgwMDAxCi1DTERDT05UID0gMHgwMDAyCi1TU1lTID0gMHgwMDAwMDAwMQotU1RSQyA9IDB4MDAwMDAwMDIKLVNMT0FEID0gMHgwMDAwMDAwOAotU0xPQ0sgPSAweDAwMDAwMDEwCi1TUFJFWEVDID0gMHgwMDAwMDAyMAotU1BST0NUUiA9IDB4MDAwMDAwNDAKLVNQUkZPUksgPSAweDAwMDAwMDgwCi1TS0lMTEVEID0gMHgwMDAwMDEwMAotU1VMT0FEID0gMHgwMDAwMDIwMAotU1JVTkxDTCA9IDB4MDAwMDA0MDAKLVNCUFRBREogPSAweDAwMDAwODAwCi1TS0lMTENMID0gMHgwMDAwMTAwMAotU09XRVVQQyA9IDB4MDAwMDIwMDAKLVNFWEVDRUQgPSAweDAwMDA0MDAwCi1TUEFTWU5DID0gMHgwMDAwODAwMAotU0pDVEwgPSAweDAwMDEwMDAwCi1TTk9XQUlUID0gMHgwMDAyMDAwMAotU1ZGT1JLID0gMHgwMDA0MDAwMAotU1ZGV0FJVCA9IDB4MDAwODAwMDAKLUVYSVRMV1BTID0gMHgwMDEwMDAwMAotSE9MREZPUksgPSAweDAwMjAwMDAwCi1TV0FJVFNJRyA9IDB4MDA0MDAwMDAKLUhPTERGT1JLMSA9IDB4MDA4MDAwMDAKLUNPUkVEVU1QID0gMHgwMTAwMDAwMAotU01TQUNDVCA9IDB4MDIwMDAwMDAKLUFTTFdQID0gMHgwNDAwMDAwMAotU1BSTE9DSyA9IDB4MDgwMDAwMDAKLU5PQ0QgPSAweDEwMDAwMDAwCi1IT0xEV0FUQ0ggPSAweDIwMDAwMDAwCi1TTVNGT1JLID0gMHg0MDAwMDAwMAotU0RPQ09SRSA9IDB4ODAwMDAwMDAKLUZPUlJFQUwgPSAwCi1KVVNUTE9PS0lORyA9IDEKLVNVU1BFTkRfTk9STUFMID0gMAotU1VTUEVORF9QQVVTRSA9IDEKLU5PQ0xBU1MgPSAoLTEpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGRpdHlwZXMuaAotRERJX0RFVklDRV9BVFRSX1YwID0gMHgwMDAxCi1ERElfTkVWRVJTV0FQX0FDQyA9IDB4MDAKLURESV9TVFJVQ1RVUkVfTEVfQUNDID0gMHgwMQotRERJX1NUUlVDVFVSRV9CRV9BQ0MgPSAweDAyCi1ERElfU1RSSUNUT1JERVJfQUNDID0gMHgwMAotRERJX1VOT1JERVJFRF9PS19BQ0MgPSAweDAxCi1ERElfTUVSR0lOR19PS19BQ0MgPSAweDAyCi1ERElfTE9BRENBQ0hJTkdfT0tfQUNDID0gMHgwMwotRERJX1NUT1JFQ0FDSElOR19PS19BQ0MgPSAweDA0Ci1ERElfREFUQV9TWjAxX0FDQyA9IDEKLURESV9EQVRBX1NaMDJfQUNDID0gMgotRERJX0RBVEFfU1owNF9BQ0MgPSA0Ci1ERElfREFUQV9TWjA4X0FDQyA9IDgKLVZFUlNfQUNDSERMID0gMHgwMDAxCi1ERVZJRF9OT05FID0gMAotREVWSURfU0NTSTNfV1dOID0gMQotREVWSURfU0NTSV9TRVJJQUwgPSAyCi1ERVZJRF9GQUIgPSAzCi1ERVZJRF9FTkNBUCA9IDQKLURFVklEX01BWFRZUEUgPSA0Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdmFyYXJncy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdmFfbGlzdC5oCi1WQV9BTElHTiA9IDgKLWRlZiBfQVJHU0laRU9GKHQpOiByZXR1cm4gKChzaXplb2YgKHQpICsgVkFfQUxJR04gLSAxKSAmIH4oVkFfQUxJR04gLSAxKSkKLQotVkFfQUxJR04gPSA4Ci1kZWYgX0FSR1NJWkVPRih0KTogcmV0dXJuICgoc2l6ZW9mICh0KSArIFZBX0FMSUdOIC0gMSkgJiB+KFZBX0FMSUdOIC0gMSkpCi0KLU5TWVNDQUxMID0gMjU2Ci1TRV8zMlJWQUwxID0gMHgwCi1TRV8zMlJWQUwyID0gMHgxCi1TRV82NFJWQUwgPSAweDIKLVNFX1JWQUxfTUFTSyA9IDB4MwotU0VfTE9BREFCTEUgPSAweDA4Ci1TRV9MT0FERUQgPSAweDEwCi1TRV9OT1VOTE9BRCA9IDB4MjAKLVNFX0FSR0MgPSAweDQwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGV2b3BzLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wb2xsLmgKLVBPTExJTiA9IDB4MDAwMQotUE9MTFBSSSA9IDB4MDAwMgotUE9MTE9VVCA9IDB4MDAwNAotUE9MTFJETk9STSA9IDB4MDA0MAotUE9MTFdSTk9STSA9IFBPTExPVVQKLVBPTExSREJBTkQgPSAweDAwODAKLVBPTExXUkJBTkQgPSAweDAxMDAKLVBPTExOT1JNID0gUE9MTFJETk9STQotUE9MTEVSUiA9IDB4MDAwOAotUE9MTEhVUCA9IDB4MDAxMAotUE9MTE5WQUwgPSAweDAwMjAKLVBPTExSRU1PVkUgPSAweDA4MDAKLVBPTExSRERBVEEgPSAweDAyMDAKLVBPTExOT0VSUiA9IDB4MDQwMAotUE9MTENMT1NFRCA9IDB4ODAwMAotCi0jIEluY2x1ZGVkIGZyb20gdm0vYXMuaAotCi0jIEluY2x1ZGVkIGZyb20gdm0vc2VnLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92bm9kZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1WUk9PVCA9IDB4MDEKLVZOT0NBQ0hFID0gMHgwMgotVk5PTUFQID0gMHgwNAotVkRVUCA9IDB4MDgKLVZOT1NXQVAgPSAweDEwCi1WTk9NT1VOVCA9IDB4MjAKLVZJU1NXQVAgPSAweDQwCi1WU1dBUExJS0UgPSAweDgwCi1WVkZTTE9DSyA9IDB4MTAwCi1WVkZTV0FJVCA9IDB4MjAwCi1WVk1MT0NLID0gMHg0MDAKLVZESVJPUEVOID0gMHg4MDAKLVZWTUVYRUMgPSAweDEwMDAKLVZQWEZTID0gMHgyMDAwCi1BVF9UWVBFID0gMHgwMDAxCi1BVF9NT0RFID0gMHgwMDAyCi1BVF9VSUQgPSAweDAwMDQKLUFUX0dJRCA9IDB4MDAwOAotQVRfRlNJRCA9IDB4MDAxMAotQVRfTk9ERUlEID0gMHgwMDIwCi1BVF9OTElOSyA9IDB4MDA0MAotQVRfU0laRSA9IDB4MDA4MAotQVRfQVRJTUUgPSAweDAxMDAKLUFUX01USU1FID0gMHgwMjAwCi1BVF9DVElNRSA9IDB4MDQwMAotQVRfUkRFViA9IDB4MDgwMAotQVRfQkxLU0laRSA9IDB4MTAwMAotQVRfTkJMT0NLUyA9IDB4MjAwMAotQVRfVkNPREUgPSAweDQwMDAKLUFUX0FMTCA9IChBVF9UWVBFfEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9OTElOS3xBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX1JERVZ8QVRfQkxLU0laRXxBVF9OQkxPQ0tTfEFUX1ZDT0RFKQotQVRfU1RBVCA9IChBVF9NT0RFfEFUX1VJRHxBVF9HSUR8QVRfRlNJRHxBVF9OT0RFSUR8QVRfTkxJTkt8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfU0laRXxBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRXxBVF9SREVWKQotQVRfVElNRVMgPSAoQVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUUpCi1BVF9OT1NFVCA9IChBVF9OTElOS3xBVF9SREVWfEFUX0ZTSUR8QVRfTk9ERUlEfEFUX1RZUEV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfQkxLU0laRXxBVF9OQkxPQ0tTfEFUX1ZDT0RFKQotVlNVSUQgPSAwbzQwMDAKLVZTR0lEID0gMG8yMDAwCi1WU1ZUWCA9IDBvMTAwMAotVlJFQUQgPSAwbzA0MDAKLVZXUklURSA9IDBvMDIwMAotVkVYRUMgPSAwbzAxMDAKLU1PREVNQVNLID0gMG83Nzc3Ci1QRVJNTUFTSyA9IDBvMDc3NwotZGVmIE1BTkRNT0RFKG1vZGUpOiByZXR1cm4gKCgobW9kZSkgJiAoVlNHSUR8KFZFWEVDPj4zKSkpID09IFZTR0lEKQotCi1WU0FfQUNMID0gMHgwMDAxCi1WU0FfQUNMQ05UID0gMHgwMDAyCi1WU0FfREZBQ0wgPSAweDAwMDQKLVZTQV9ERkFDTENOVCA9IDB4MDAwOAotTE9PS1VQX0RJUiA9IDB4MDEKLURVTVBfQUxMT0MgPSAwCi1EVU1QX0ZSRUUgPSAxCi1EVU1QX1NDQU4gPSAyCi1BVFRSX1VUSU1FID0gMHgwMQotQVRUUl9FWEVDID0gMHgwMgotQVRUUl9DT01NID0gMHgwNAotQVRUUl9ISU5UID0gMHgwOAotQVRUUl9SRUFMID0gMHgxMAotCi0jIEluY2x1ZGVkIGZyb20gdm0vZmF1bHRjb2RlLmgKLUZDX0hXRVJSID0gMHgxCi1GQ19BTElHTiA9IDB4MgotRkNfT0JKRVJSID0gMHgzCi1GQ19QUk9UID0gMHg0Ci1GQ19OT01BUCA9IDB4NQotRkNfTk9TVVBQT1JUID0gMHg2Ci1kZWYgRkNfTUFLRV9FUlIoZSk6IHJldHVybiAoKChlKSA8PCA4KSB8IEZDX09CSkVSUikKLQotZGVmIEZDX0NPREUoZmMpOiByZXR1cm4gKChmYykgJiAweGZmKQotCi1kZWYgRkNfRVJSTk8oZmMpOiByZXR1cm4gKCh1bnNpZ25lZCkoZmMpID4+IDgpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHZtL2hhdC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9wYWdlLmgKLVBBR0VfSEFTSEFWRUxFTiA9IDQKLVBBR0VfSEFTSFZQU0hJRlQgPSA2Ci1QR19FWENMID0gMHgwMDAxCi1QR19XQUlUID0gMHgwMDAyCi1QR19QSFlTQ09OVElHID0gMHgwMDA0Ci1QR19NQVRDSF9DT0xPUiA9IDB4MDAwOAotUEdfTk9SRUxPQyA9IDB4MDAxMAotUEdfRlJFRV9MSVNUID0gMQotUEdfQ0FDSEVfTElTVCA9IDIKLVBHX0xJU1RfVEFJTCA9IDAKLVBHX0xJU1RfSEVBRCA9IDEKLWRlZiBwYWdlX25leHRfcmF3KFBQKTogcmV0dXJuIHBhZ2VfbmV4dG5fcmF3KChQUCksIDEpCi0KLVBBR0VfSU9fSU5VU0UgPSAweDEKLVBBR0VfSU9fV0FOVEVEID0gMHgyCi1QR1JFTF9OT1RSRUwgPSAweDEKLVBHUkVMX0NMRUFOID0gMHgyCi1QR1JFTF9NT0QgPSAweDMKLVBfRlJFRSA9IDB4ODAKLVBfTk9SRUxPQyA9IDB4NDAKLWRlZiBQUF9TRVRBR0VEKHBwKTogcmV0dXJuIEFTU0VSVChQUF9JU0FHRUQocHApKQotCi1IQVRfRkxBR1NfUkVTViA9IDB4RkYwMDAwMDAKLUhBVF9MT0FEID0gMHgwMAotSEFUX0xPQURfTE9DSyA9IDB4MDEKLUhBVF9MT0FEX0FEViA9IDB4MDQKLUhBVF9MT0FEX0NPTlRJRyA9IDB4MTAKLUhBVF9MT0FEX05PQ09OU0lTVCA9IDB4MjAKLUhBVF9MT0FEX1NIQVJFID0gMHg0MAotSEFUX0xPQURfUkVNQVAgPSAweDgwCi1IQVRfUkVMT0FEX1NIQVJFID0gMHgxMDAKLUhBVF9QTEFUX0FUVFJfTUFTSyA9IDB4RjAwMDAwCi1IQVRfUFJPVF9NQVNLID0gMHgwRgotSEFUX05PRkFVTFQgPSAweDEwCi1IQVRfTk9TWU5DID0gMHgyMAotSEFUX1NUUklDVE9SREVSID0gMHgwMDAwCi1IQVRfVU5PUkRFUkVEX09LID0gMHgwMTAwCi1IQVRfTUVSR0lOR19PSyA9IDB4MDIwMAotSEFUX0xPQURDQUNISU5HX09LID0gMHgwMzAwCi1IQVRfU1RPUkVDQUNISU5HX09LID0gMHgwNDAwCi1IQVRfT1JERVJfTUFTSyA9IDB4MDcwMAotSEFUX05FVkVSU1dBUCA9IDB4MDAwMAotSEFUX1NUUlVDVFVSRV9CRSA9IDB4MTAwMAotSEFUX1NUUlVDVFVSRV9MRSA9IDB4MjAwMAotSEFUX0VORElBTl9NQVNLID0gMHgzMDAwCi1IQVRfQ09XID0gMHgwMDAxCi1IQVRfVU5MT0FEID0gMHgwMAotSEFUX1VOTE9BRF9OT1NZTkMgPSAweDAyCi1IQVRfVU5MT0FEX1VOTE9DSyA9IDB4MDQKLUhBVF9VTkxPQURfT1RIRVIgPSAweDA4Ci1IQVRfVU5MT0FEX1VOTUFQID0gMHgxMAotSEFUX1NZTkNfRE9OVFpFUk8gPSAweDAwCi1IQVRfU1lOQ19aRVJPUk0gPSAweDAxCi1IQVRfU1lOQ19TVE9QT05fUkVGID0gMHgwMgotSEFUX1NZTkNfU1RPUE9OX01PRCA9IDB4MDQKLUhBVF9TWU5DX1NUT1BPTl9STSA9IChIQVRfU1lOQ19TVE9QT05fUkVGIHwgSEFUX1NZTkNfU1RPUE9OX01PRCkKLUhBVF9EVVBfQUxMID0gMQotSEFUX0RVUF9DT1cgPSAyCi1IQVRfTUFQID0gMHgwMAotSEFUX0FEVl9QR1VOTE9BRCA9IDB4MDAKLUhBVF9GT1JDRV9QR1VOTE9BRCA9IDB4MDEKLVBfTU9EID0gMHgxCi1QX1JFRiA9IDB4MgotUF9STyA9IDB4NAotZGVmIGhhdF9pc21vZChwcCk6IHJldHVybiAoaGF0X3BhZ2VfZ2V0YXR0cihwcCwgUF9NT0QpKQotCi1kZWYgaGF0X2lzcmVmKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRhdHRyKHBwLCBQX1JFRikpCi0KLWRlZiBoYXRfaXNybyhwcCk6IHJldHVybiAoaGF0X3BhZ2VfZ2V0YXR0cihwcCwgUF9STykpCi0KLWRlZiBoYXRfc2V0bW9kKHBwKTogcmV0dXJuIChoYXRfcGFnZV9zZXRhdHRyKHBwLCBQX01PRCkpCi0KLWRlZiBoYXRfc2V0cmVmKHBwKTogcmV0dXJuIChoYXRfcGFnZV9zZXRhdHRyKHBwLCBQX1JFRikpCi0KLWRlZiBoYXRfc2V0cmVmbW9kKHBwKTogcmV0dXJuIChoYXRfcGFnZV9zZXRhdHRyKHBwLCBQX1JFRnxQX01PRCkpCi0KLWRlZiBoYXRfY2xybW9kKHBwKTogcmV0dXJuIChoYXRfcGFnZV9jbHJhdHRyKHBwLCBQX01PRCkpCi0KLWRlZiBoYXRfY2xycmVmKHBwKTogcmV0dXJuIChoYXRfcGFnZV9jbHJhdHRyKHBwLCBQX1JFRikpCi0KLWRlZiBoYXRfY2xycmVmbW9kKHBwKTogcmV0dXJuIChoYXRfcGFnZV9jbHJhdHRyKHBwLCBQX1JFRnxQX01PRCkpCi0KLWRlZiBoYXRfcGFnZV9pc19tYXBwZWQocHApOiByZXR1cm4gKGhhdF9wYWdlX2dldHNoYXJlKHBwKSkKLQotSEFUX0RPTlRBTExPQyA9IDAKLUhBVF9BTExPQyA9IDEKLUhSTV9TSElGVCA9IDQKLUhSTV9CWVRFUyA9ICgxIDw8IEhSTV9TSElGVCkKLUhSTV9QQUdFUyA9ICgoSFJNX0JZVEVTICogTkJCWSkgLyAyKQotSFJNX1BHUEVSQllURSA9IChOQkJZLzIpCi1IUk1fUEdCWVRFTUFTSyA9IChIUk1fUEdQRVJCWVRFLTEpCi1IUk1fSEFTSFNJWkUgPSAweDIwMAotSFJNX0hBU0hNQVNLID0gKEhSTV9IQVNIU0laRSAtIDEpCi1IUk1fQkxJU1RfSU5DUiA9IDB4MjAwCi1IUk1fU1dTTU9OSUQgPSAxCi1TU0xfTkxFVkVMUyA9IDQKLVNTTF9CRkFDVE9SID0gNAotU1NMX0xPRzJCRiA9IDIKLVNFR1BfQVNZTkNfRkxVU0ggPSAweDEKLVNFR1BfRk9SQ0VfV0lSRUQgPSAweDIKLVNFR1BfU1VDQ0VTUyA9IDAKLVNFR1BfRkFJTCA9IDEKLWRlZiBzZWdfcGFnZXMoc2VnKTogcmV0dXJuIFwKLQotSUVfTk9NRU0gPSAtMQotQVNfUEFHTENLID0gMHg4MAotQVNfQ0xBSU1HQVAgPSAweDQwCi1BU19VTk1BUFdBSVQgPSAweDIwCi1kZWYgQVNfVFlQRV82NEJJVChhc18pOiByZXR1cm4gXAotCi1BU19MUkVQX0xJTktFRExJU1QgPSAwCi1BU19MUkVQX1NLSVBMSVNUID0gMQotQVNfTVVUQVRJT05fVEhSRVNIID0gMjI1Ci1BSF9ESVIgPSAweDEKLUFIX0xPID0gMHgwCi1BSF9ISSA9IDB4MQotQUhfQ09OVEFJTiA9IDB4MgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaWRtYXJlcS5oCi1ETUFfVU5JVF84ID0gMQotRE1BX1VOSVRfMTYgPSAyCi1ETUFfVU5JVF8zMiA9IDQKLURNQUxJTV9WRVIwID0gKCgweDg2MDAwMDAwKSArIDApCi1ERElfRE1BX0ZPUkNFX1BIWVNJQ0FMID0gMHgwMTAwCi1ETUFfQVRUUl9WMCA9IDAKLURNQV9BVFRSX1ZFUlNJT04gPSBETUFfQVRUUl9WMAotRERJX0RNQV9DQUxMQkFDS19SVU5PVVQgPSAwCi1ERElfRE1BX0NBTExCQUNLX0RPTkUgPSAxCi1ERElfRE1BX1dSSVRFID0gMHgwMDAxCi1ERElfRE1BX1JFQUQgPSAweDAwMDIKLURESV9ETUFfUkRXUiA9IChERElfRE1BX1JFQUQgfCBERElfRE1BX1dSSVRFKQotRERJX0RNQV9SRURaT05FID0gMHgwMDA0Ci1ERElfRE1BX1BBUlRJQUwgPSAweDAwMDgKLURESV9ETUFfQ09OU0lTVEVOVCA9IDB4MDAxMAotRERJX0RNQV9FWENMVVNJVkUgPSAweDAwMjAKLURESV9ETUFfU1RSRUFNSU5HID0gMHgwMDQwCi1ERElfRE1BX1NCVVNfNjRCSVQgPSAweDIwMDAKLURESV9ETUFfTUFQUEVEID0gMAotRERJX0RNQV9NQVBPSyA9IDAKLURESV9ETUFfUEFSVElBTF9NQVAgPSAxCi1ERElfRE1BX0RPTkUgPSAyCi1ERElfRE1BX05PUkVTT1VSQ0VTID0gLTEKLURESV9ETUFfTk9NQVBQSU5HID0gLTIKLURESV9ETUFfVE9PQklHID0gLTMKLURESV9ETUFfVE9PU01BTEwgPSAtNAotRERJX0RNQV9MT0NLRUQgPSAtNQotRERJX0RNQV9CQURMSU1JVFMgPSAtNgotRERJX0RNQV9TVEFMRSA9IC03Ci1ERElfRE1BX0JBREFUVFIgPSAtOAotRERJX0RNQV9JTlVTRSA9IC05Ci1ERElfRE1BX1NZTkNfRk9SREVWID0gMHgwCi1ERElfRE1BX1NZTkNfRk9SQ1BVID0gMHgxCi1ERElfRE1BX1NZTkNfRk9SS0VSTkVMID0gMHgyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGRpbWFwcmVxLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tbWFuLmgKLVBST1RfUkVBRCA9IDB4MQotUFJPVF9XUklURSA9IDB4MgotUFJPVF9FWEVDID0gMHg0Ci1QUk9UX1VTRVIgPSAweDgKLVBST1RfWkZPRCA9IChQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDIHwgUFJPVF9VU0VSKQotUFJPVF9BTEwgPSAoUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQyB8IFBST1RfVVNFUikKLVBST1RfTk9ORSA9IDB4MAotTUFQX1NIQVJFRCA9IDEKLU1BUF9QUklWQVRFID0gMgotTUFQX1RZUEUgPSAweGYKLU1BUF9GSVhFRCA9IDB4MTAKLU1BUF9OT1JFU0VSVkUgPSAweDQwCi1NQVBfQU5PTiA9IDB4MTAwCi1NQVBfQU5PTllNT1VTID0gTUFQX0FOT04KLU1BUF9SRU5BTUUgPSAweDIwCi1QUk9DX1RFWFQgPSAoUFJPVF9FWEVDIHwgUFJPVF9SRUFEKQotUFJPQ19EQVRBID0gKFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMpCi1TSEFSRUQgPSAweDEwCi1QUklWQVRFID0gMHgyMAotVkFMSURfQVRUUiA9IChQUk9UX1JFQUR8UFJPVF9XUklURXxQUk9UX0VYRUN8U0hBUkVEfFBSSVZBVEUpCi1QUk9UX0VYQ0wgPSAweDIwCi1fTUFQX0xPVzMyID0gMHg4MAotX01BUF9ORVcgPSAweDgwMDAwMDAwCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1NQURWX05PUk1BTCA9IDAKLU1BRFZfUkFORE9NID0gMQotTUFEVl9TRVFVRU5USUFMID0gMgotTUFEVl9XSUxMTkVFRCA9IDMKLU1BRFZfRE9OVE5FRUQgPSA0Ci1NQURWX0ZSRUUgPSA1Ci1NU19PTERTWU5DID0gMHgwCi1NU19TWU5DID0gMHg0Ci1NU19BU1lOQyA9IDB4MQotTVNfSU5WQUxJREFURSA9IDB4MgotTUNfU1lOQyA9IDEKLU1DX0xPQ0sgPSAyCi1NQ19VTkxPQ0sgPSAzCi1NQ19BRFZJU0UgPSA0Ci1NQ19MT0NLQVMgPSA1Ci1NQ19VTkxPQ0tBUyA9IDYKLU1DTF9DVVJSRU5UID0gMHgxCi1NQ0xfRlVUVVJFID0gMHgyCi1ERElfTUFQX1ZFUlNJT04gPSAweDAwMDEKLURESV9NRl9VU0VSX01BUFBJTkcgPSAweDEKLURESV9NRl9LRVJORUxfTUFQUElORyA9IDB4MgotRERJX01GX0RFVklDRV9NQVBQSU5HID0gMHg0Ci1ERElfTUVfR0VORVJJQyA9ICgtMSkKLURESV9NRV9VTklNUExFTUVOVEVEID0gKC0yKQotRERJX01FX05PUkVTT1VSQ0VTID0gKC0zKQotRERJX01FX1VOU1VQUE9SVEVEID0gKC00KQotRERJX01FX1JFR1NQRUNfUkFOR0UgPSAoLTUpCi1ERElfTUVfUk5VTUJFUl9SQU5HRSA9ICgtNikKLURESV9NRV9JTlZBTCA9ICgtNykKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGlwcm9wZGVmcy5oCi1kZWYgQ0VMTFNfMTI3NV9UT19CWVRFUyhuKTogcmV0dXJuICgobikgKiBQUk9QXzEyNzVfQ0VMTF9TSVpFKQotCi1kZWYgQllURVNfVE9fMTI3NV9DRUxMUyhuKTogcmV0dXJuICgobikgLyBQUk9QXzEyNzVfQ0VMTF9TSVpFKQotCi1QSF9GUk9NX1BST00gPSAweDAxCi1ERElfUFJPUF9TVUNDRVNTID0gMAotRERJX1BST1BfTk9UX0ZPVU5EID0gMQotRERJX1BST1BfVU5ERUZJTkVEID0gMgotRERJX1BST1BfTk9fTUVNT1JZID0gMwotRERJX1BST1BfSU5WQUxfQVJHID0gNAotRERJX1BST1BfQlVGX1RPT19TTUFMTCA9IDUKLURESV9QUk9QX0NBTk5PVF9ERUNPREUgPSA2Ci1ERElfUFJPUF9DQU5OT1RfRU5DT0RFID0gNwotRERJX1BST1BfRU5EX09GX0RBVEEgPSA4Ci1ERElfUFJPUF9GT1VORF8xMjc1ID0gMjU1Ci1QUk9QXzEyNzVfSU5UX1NJWkUgPSA0Ci1ERElfUFJPUF9ET05UUEFTUyA9IDB4MDAwMQotRERJX1BST1BfQ0FOU0xFRVAgPSAweDAwMDIKLURESV9QUk9QX1NZU1RFTV9ERUYgPSAweDAwMDQKLURESV9QUk9QX05PVFBST00gPSAweDAwMDgKLURESV9QUk9QX0RPTlRTTEVFUCA9IDB4MDAxMAotRERJX1BST1BfU1RBQ0tfQ1JFQVRFID0gMHgwMDIwCi1ERElfUFJPUF9VTkRFRl9JVCA9IDB4MDA0MAotRERJX1BST1BfSFdfREVGID0gMHgwMDgwCi1ERElfUFJPUF9UWVBFX0lOVCA9IDB4MDEwMAotRERJX1BST1BfVFlQRV9TVFJJTkcgPSAweDAyMDAKLURESV9QUk9QX1RZUEVfQllURSA9IDB4MDQwMAotRERJX1BST1BfVFlQRV9DT01QT1NJVEUgPSAweDA4MDAKLURESV9QUk9QX1RZUEVfQU5ZID0gKERESV9QUk9QX1RZUEVfSU5UICB8ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERElfUFJPUF9UWVBFX1NUUklORyAgICB8ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERElfUFJPUF9UWVBFX0JZVEUgICAgICB8ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERElfUFJPUF9UWVBFX0NPTVBPU0lURSkKLURESV9QUk9QX1RZUEVfTUFTSyA9IChERElfUFJPUF9UWVBFX0lOVCB8ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERElfUFJPUF9UWVBFX1NUUklORyAgICB8ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERElfUFJPUF9UWVBFX0JZVEUgICAgICB8ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERElfUFJPUF9UWVBFX0NPTVBPU0lURSkKLURESV9SRUxBVElWRV9BRERSRVNTSU5HID0gInJlbGF0aXZlLWFkZHJlc3NpbmciCi1ERElfR0VORVJJQ19BRERSRVNTSU5HID0gImdlbmVyaWMtYWRkcmVzc2luZyIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGlkZXZtYXAuaAotS01FTV9QQUdFQUJMRSA9IDB4MTAwCi1LTUVNX05PTl9QQUdFQUJMRSA9IDB4MjAwCi1VTUVNX0xPQ0tFRCA9IDB4NDAwCi1VTUVNX1RSQVNIID0gMHg4MDAKLURFVk1BUF9PUFNfUkVWID0gMQotREVWTUFQX0RFRkFVTFRTID0gMHgwMAotREVWTUFQX01BUFBJTkdfSU5WQUxJRCA9IDB4MDEKLURFVk1BUF9BTExPV19SRU1BUCA9IDB4MDIKLURFVk1BUF9VU0VfUEFHRVNJWkUgPSAweDA0Ci1ERVZNQVBfU0VUVVBfRkxBR1MgPSBcCi0gICAgICAgIChERVZNQVBfTUFQUElOR19JTlZBTElEIHwgREVWTUFQX0FMTE9XX1JFTUFQIHwgREVWTUFQX1VTRV9QQUdFU0laRSkKLURFVk1BUF9TRVRVUF9ET05FID0gMHgxMDAKLURFVk1BUF9MT0NLX0lOSVRFRCA9IDB4MjAwCi1ERVZNQVBfRkFVTFRJTkcgPSAweDQwMAotREVWTUFQX0xPQ0tFRCA9IDB4ODAwCi1ERVZNQVBfRkxBR19MQVJHRSA9IDB4MTAwMAotRERJX1VNRU1fU0xFRVAgPSAweDAKLURESV9VTUVNX05PU0xFRVAgPSAweDAxCi1ERElfVU1FTV9QQUdFQUJMRSA9IDB4MDIKLURESV9VTUVNX1RSQVNIID0gMHgwNAotRERJX1VNRU1MT0NLX1JFQUQgPSAweDAxCi1ERElfVU1FTUxPQ0tfV1JJVEUgPSAweDAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbmV4dXNkZWZzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9uZXh1c2ludHIuaAotQlVTT19SRVYgPSA0Ci1CVVNPX1JFVl8zID0gMwotQlVTT19SRVZfNCA9IDQKLURFVk9fUkVWID0gMwotQ0JfUkVWID0gMQotRERJX0lERU5USUZJRUQgPSAoMCkKLURESV9OT1RfSURFTlRJRklFRCA9ICgtMSkKLURESV9QUk9CRV9GQUlMVVJFID0gRU5YSU8KLURESV9QUk9CRV9ET05UQ0FSRSA9IDAKLURESV9QUk9CRV9QQVJUSUFMID0gMQotRERJX1BST0JFX1NVQ0NFU1MgPSAyCi1NQVBERVZfUkVWID0gMQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRF9ORVcgPSAweDAwCi1fRF9PTEQgPSAweDAxCi1EX1RBUEUgPSAweDA4Ci1EX01UU0FGRSA9IDB4MDAyMAotX0RfUU5FWFRMRVNTID0gMHgwMDQwCi1fRF9NVE9DU0hBUkVEID0gMHgwMDgwCi1EX01UT0NFWENMID0gMHgwODAwCi1EX01UUFVUU0hBUkVEID0gMHgxMDAwCi1EX01UUEVSUSA9IDB4MjAwMAotRF9NVFFQQUlSID0gMHg0MDAwCi1EX01UUEVSTU9EID0gMHg2MDAwCi1EX01UT1VUUEVSSU0gPSAweDgwMDAKLV9EX01UQ0JTSEFSRUQgPSAweDEwMDAwCi1EX01USU5ORVJfTU9EID0gKERfTVRQVVRTSEFSRUR8X0RfTVRPQ1NIQVJFRHxfRF9NVENCU0hBUkVEKQotRF9NVE9VVEVSX01PRCA9IChEX01UT0NFWENMKQotRF9NUCA9IERfTVRTQUZFCi1EXzY0QklUID0gMHgyMDAKLURfU1lOQ1NUUiA9IDB4NDAwCi1EX0RFVk1BUCA9IDB4MTAwCi1EX0hPVFBMVUcgPSAweDQKLVNORFpFUk8gPSAweDAwMQotU05EUElQRSA9IDB4MDAyCi1STk9STSA9IDB4MDAwCi1STVNHRCA9IDB4MDAxCi1STVNHTiA9IDB4MDAyCi1STU9ERU1BU0sgPSAweDAwMwotUlBST1REQVQgPSAweDAwNAotUlBST1RESVMgPSAweDAwOAotUlBST1ROT1JNID0gMHgwMTAKLVJQUk9UTUFTSyA9IDB4MDFjCi1SRkxVU0hNQVNLID0gMHgwMjAKLVJGTFVTSFBDUFJPVCA9IDB4MDIwCi1SRVJSTk9STSA9IDB4MDAxCi1SRVJSTk9OUEVSU0lTVCA9IDB4MDAyCi1SRVJSTUFTSyA9IChSRVJSTk9STXxSRVJSTk9OUEVSU0lTVCkKLVdFUlJOT1JNID0gMHgwMDQKLVdFUlJOT05QRVJTSVNUID0gMHgwMDgKLVdFUlJNQVNLID0gKFdFUlJOT1JNfFdFUlJOT05QRVJTSVNUKQotRkxVU0hSID0gMHgwMQotRkxVU0hXID0gMHgwMgotRkxVU0hSVyA9IDB4MDMKLUZMVVNIQkFORCA9IDB4MDQKLU1BUElOT0sgPSAweDAxCi1OT01BUElOID0gMHgwMgotUkVNQVBPSyA9IDB4MDQKLU5PUkVNQVAgPSAweDA4Ci1TX0lOUFVUID0gMHgwMDAxCi1TX0hJUFJJID0gMHgwMDAyCi1TX09VVFBVVCA9IDB4MDAwNAotU19NU0cgPSAweDAwMDgKLVNfRVJST1IgPSAweDAwMTAKLVNfSEFOR1VQID0gMHgwMDIwCi1TX1JETk9STSA9IDB4MDA0MAotU19XUk5PUk0gPSBTX09VVFBVVAotU19SREJBTkQgPSAweDAwODAKLVNfV1JCQU5EID0gMHgwMTAwCi1TX0JBTkRVUkcgPSAweDAyMDAKLVJTX0hJUFJJID0gMHgwMQotU1RSVUlPX1BPU1RQT05FID0gMHgwOAotU1RSVUlPX01BUElOID0gMHgxMAotTVNHX0hJUFJJID0gMHgwMQotTVNHX0FOWSA9IDB4MDIKLU1TR19CQU5EID0gMHgwNAotTVNHX1hQRzQgPSAweDA4Ci1NU0dfSVBFRUsgPSAweDEwCi1NU0dfRElTQ0FSRFRBSUwgPSAweDIwCi1NU0dfSE9MRFNJRyA9IDB4NDAKLU1TR19JR05FUlJPUiA9IDB4ODAKLU1TR19ERUxBWUVSUk9SID0gMHgxMDAKLU1TR19JR05GTE9XID0gMHgyMDAKLU1TR19OT01BUksgPSAweDQwMAotTU9SRUNUTCA9IDEKLU1PUkVEQVRBID0gMgotTVVYSURfQUxMID0gKC0xKQotQU5ZTUFSSyA9IDB4MDEKLUxBU1RNQVJLID0gMHgwMgotX0lORlRJTSA9IC0xCi1JTkZUSU0gPSBfSU5GVElNCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvVFlQRVMucHkgYi9MaWIvcGxhdC1zdW5vczUvVFlQRVMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNGU2YjEuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtc3Vub3M1L1RZUEVTLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzEzICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc2FfZGVmcy5oCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA0Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDQKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAwCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDgKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ZlYXR1cmVfdGVzdHMuaAotX1BPU0lYX0NfU09VUkNFID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX0ZJTEVfT0ZGU0VUX0JJVFMgPSA2NAotX0ZJTEVfT0ZGU0VUX0JJVFMgPSAzMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgPSAxCi1fWE9QRU5fVkVSU0lPTiA9IDUwMAotX1hPUEVOX1ZFUlNJT04gPSA0Ci1fWE9QRU5fVkVSU0lPTiA9IDMKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNodHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludHR5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnRfdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF9saW1pdHMuaAotSU5UOF9NQVggPSAoMTI3KQotSU5UMTZfTUFYID0gKDMyNzY3KQotSU5UMzJfTUFYID0gKDIxNDc0ODM2NDcpCi1JTlRNQVhfTUFYID0gSU5UMzJfTUFYCi1JTlRfTEVBU1Q4X01BWCA9IElOVDhfTUFYCi1JTlRfTEVBU1QxNl9NQVggPSBJTlQxNl9NQVgKLUlOVF9MRUFTVDMyX01BWCA9IElOVDMyX01BWAotSU5UOF9NSU4gPSAoLTEyOCkKLUlOVDE2X01JTiA9ICgtMzI3NjctMSkKLUlOVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UTUFYX01JTiA9IElOVDMyX01JTgotSU5UX0xFQVNUOF9NSU4gPSBJTlQ4X01JTgotSU5UX0xFQVNUMTZfTUlOID0gSU5UMTZfTUlOCi1JTlRfTEVBU1QzMl9NSU4gPSBJTlQzMl9NSU4KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnRfY29uc3QuaAotZGVmIElOVDhfQyhjKTogcmV0dXJuIChjKQotCi1kZWYgSU5UMTZfQyhjKTogcmV0dXJuIChjKQotCi1kZWYgSU5UMzJfQyhjKTogcmV0dXJuIChjKQotCi1kZWYgSU5UNjRfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyxsKQotCi1kZWYgSU5UNjRfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyxsbCkKLQotZGVmIFVJTlQ4X0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdSkKLQotZGVmIFVJTlQxNl9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHUpCi0KLWRlZiBVSU5UMzJfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1KQotCi1kZWYgVUlOVDY0X0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdWwpCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bGwpCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyxsKQotCi1kZWYgVUlOVE1BWF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHVsKQotCi1kZWYgSU5UTUFYX0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsbGwpCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdWxsKQotCi1kZWYgSU5UTUFYX0MoYyk6IHJldHVybiAoYykKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIChjKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X2ZtdGlvLmgKLVBSSWQ4ID0gImQiCi1QUklkMTYgPSAiZCIKLVBSSWQzMiA9ICJkIgotUFJJZDY0ID0gImxkIgotUFJJZDY0ID0gImxsZCIKLVBSSWRMRUFTVDggPSAiZCIKLVBSSWRMRUFTVDE2ID0gImQiCi1QUklkTEVBU1QzMiA9ICJkIgotUFJJZExFQVNUNjQgPSAibGQiCi1QUklkTEVBU1Q2NCA9ICJsbGQiCi1QUklpOCA9ICJpIgotUFJJaTE2ID0gImkiCi1QUklpMzIgPSAiaSIKLVBSSWk2NCA9ICJsaSIKLVBSSWk2NCA9ICJsbGkiCi1QUklpTEVBU1Q4ID0gImkiCi1QUklpTEVBU1QxNiA9ICJpIgotUFJJaUxFQVNUMzIgPSAiaSIKLVBSSWlMRUFTVDY0ID0gImxpIgotUFJJaUxFQVNUNjQgPSAibGxpIgotUFJJbzggPSAibyIKLVBSSW8xNiA9ICJvIgotUFJJbzMyID0gIm8iCi1QUklvNjQgPSAibG8iCi1QUklvNjQgPSAibGxvIgotUFJJb0xFQVNUOCA9ICJvIgotUFJJb0xFQVNUMTYgPSAibyIKLVBSSW9MRUFTVDMyID0gIm8iCi1QUklvTEVBU1Q2NCA9ICJsbyIKLVBSSW9MRUFTVDY0ID0gImxsbyIKLVBSSXg4ID0gIngiCi1QUkl4MTYgPSAieCIKLVBSSXgzMiA9ICJ4IgotUFJJeDY0ID0gImx4IgotUFJJeDY0ID0gImxseCIKLVBSSXhMRUFTVDggPSAieCIKLVBSSXhMRUFTVDE2ID0gIngiCi1QUkl4TEVBU1QzMiA9ICJ4IgotUFJJeExFQVNUNjQgPSAibHgiCi1QUkl4TEVBU1Q2NCA9ICJsbHgiCi1QUklYOCA9ICJYIgotUFJJWDE2ID0gIlgiCi1QUklYMzIgPSAiWCIKLVBSSVg2NCA9ICJsWCIKLVBSSVg2NCA9ICJsbFgiCi1QUklYTEVBU1Q4ID0gIlgiCi1QUklYTEVBU1QxNiA9ICJYIgotUFJJWExFQVNUMzIgPSAiWCIKLVBSSVhMRUFTVDY0ID0gImxYIgotUFJJWExFQVNUNjQgPSAibGxYIgotUFJJdTggPSAidSIKLVBSSXUxNiA9ICJ1IgotUFJJdTMyID0gInUiCi1QUkl1NjQgPSAibHUiCi1QUkl1NjQgPSAibGx1IgotUFJJdUxFQVNUOCA9ICJ1IgotUFJJdUxFQVNUMTYgPSAidSIKLVBSSXVMRUFTVDMyID0gInUiCi1QUkl1TEVBU1Q2NCA9ICJsdSIKLVBSSXVMRUFTVDY0ID0gImxsdSIKLVNDTmQxNiA9ICJoZCIKLVNDTmQzMiA9ICJkIgotU0NOZDY0ID0gImxkIgotU0NOZDY0ID0gImxsZCIKLVNDTmkxNiA9ICJoaSIKLVNDTmkzMiA9ICJpIgotU0NOaTY0ID0gImxpIgotU0NOaTY0ID0gImxsaSIKLVNDTm8xNiA9ICJobyIKLVNDTm8zMiA9ICJvIgotU0NObzY0ID0gImxvIgotU0NObzY0ID0gImxsbyIKLVNDTnUxNiA9ICJodSIKLVNDTnUzMiA9ICJ1IgotU0NOdTY0ID0gImx1IgotU0NOdTY0ID0gImxsdSIKLVNDTngxNiA9ICJoeCIKLVNDTngzMiA9ICJ4IgotU0NOeDY0ID0gImx4IgotU0NOeDY0ID0gImxseCIKLVBSSWRNQVggPSAibGQiCi1QUklvTUFYID0gImxvIgotUFJJeE1BWCA9ICJseCIKLVBSSXVNQVggPSAibHUiCi1QUklkTUFYID0gImxsZCIKLVBSSW9NQVggPSAibGxvIgotUFJJeE1BWCA9ICJsbHgiCi1QUkl1TUFYID0gImxsdSIKLVBSSWRNQVggPSAiZCIKLVBSSW9NQVggPSAibyIKLVBSSXhNQVggPSAieCIKLVBSSXVNQVggPSAidSIKLVNDTmlNQVggPSAibGkiCi1TQ05kTUFYID0gImxkIgotU0NOb01BWCA9ICJsbyIKLVNDTnhNQVggPSAibHgiCi1TQ05pTUFYID0gImxsaSIKLVNDTmRNQVggPSAibGxkIgotU0NOb01BWCA9ICJsbG8iCi1TQ054TUFYID0gImxseCIKLVNDTmlNQVggPSAiaSIKLVNDTmRNQVggPSAiZCIKLVNDTm9NQVggPSAibyIKLVNDTnhNQVggPSAieCIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90eXBlczMyLmgKLVNIUlRfTUlOID0gKC0zMjc2OCkKLVNIUlRfTUFYID0gMzI3NjcKLVVTSFJUX01BWCA9IDY1NTM1Ci1JTlRfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfTUFYID0gMjE0NzQ4MzY0NwotTE9OR19NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLUxPTkdfTUFYID0gOTIyMzM3MjAzNjg1NDc3NTgwNwotTE9OR19NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUxPTkdfTUFYID0gMjE0NzQ4MzY0NwotUF9NWUlEID0gKC0xKQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbGVjdC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi1USU1FMzJfTUFYID0gSU5UMzJfTUFYCi1USU1FMzJfTUlOID0gSU5UMzJfTUlOCi1kZWYgVElNRVZBTF9PVkVSRkxPVyh0dik6IHJldHVybiBcCi0KLWZyb20gVFlQRVMgaW1wb3J0ICoKLURTVF9OT05FID0gMAotRFNUX1VTQSA9IDEKLURTVF9BVVNUID0gMgotRFNUX1dFVCA9IDMKLURTVF9NRVQgPSA0Ci1EU1RfRUVUID0gNQotRFNUX0NBTiA9IDYKLURTVF9HQiA9IDcKLURTVF9SVU0gPSA4Ci1EU1RfVFVSID0gOQotRFNUX0FVU1RBTFQgPSAxMAotSVRJTUVSX1JFQUwgPSAwCi1JVElNRVJfVklSVFVBTCA9IDEKLUlUSU1FUl9QUk9GID0gMgotSVRJTUVSX1JFQUxQUk9GID0gMwotZGVmIElUSU1FUlZBTF9PVkVSRkxPVyhpdHYpOiByZXR1cm4gXAotCi1TRUMgPSAxCi1NSUxMSVNFQyA9IDEwMDAKLU1JQ1JPU0VDID0gMTAwMDAwMAotTkFOT1NFQyA9IDEwMDAwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX2ltcGwuaAotZGVmIFRJTUVTUEVDX09WRVJGTE9XKHRzKTogcmV0dXJuIFwKLQotZGVmIElUSU1FUlNQRUNfT1ZFUkZMT1coaXQpOiByZXR1cm4gXAotCi1fX0NMT0NLX1JFQUxUSU1FMCA9IDAKLUNMT0NLX1ZJUlRVQUwgPSAxCi1DTE9DS19QUk9GID0gMgotX19DTE9DS19SRUFMVElNRTMgPSAzCi1DTE9DS19ISUdIUkVTID0gNAotQ0xPQ0tfTUFYID0gNQotQ0xPQ0tfUkVBTFRJTUUgPSBfX0NMT0NLX1JFQUxUSU1FMwotQ0xPQ0tfUkVBTFRJTUUgPSBfX0NMT0NLX1JFQUxUSU1FMAotVElNRVJfUkVMVElNRSA9IDB4MAotVElNRVJfQUJTVElNRSA9IDB4MQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL211dGV4LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLWRlZiBNVVRFWF9IRUxEKHgpOiByZXR1cm4gKG11dGV4X293bmVkKHgpKQotCi1kZWYgVElDS19UT19TRUModGljayk6IHJldHVybiAoKHRpY2spIC8gaHopCi0KLWRlZiBTRUNfVE9fVElDSyhzZWMpOiByZXR1cm4gKChzZWMpICogaHopCi0KLWRlZiBUSUNLX1RPX01TRUModGljayk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0sobXNlYyk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0tfUk9VTkRVUChtc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fVVNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLKHVzZWMpOiByZXR1cm4gKCh1c2VjKSAvIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0tfUk9VTkRVUCh1c2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fTlNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLKG5zZWMpOiByZXR1cm4gKChuc2VjKSAvIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0tfUk9VTkRVUChuc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJTUVWQUxfVE9fVElDSyh0dnApOiByZXR1cm4gXAotCi1kZWYgVElNRVNUUlVDX1RPX1RJQ0sodHNwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBpc28vdGltZV9pc28uaAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLUZEX1NFVFNJWkUgPSA2NTUzNgotRkRfU0VUU0laRSA9IDEwMjQKLV9OQkJZID0gOAotTkJCWSA9IF9OQkJZCi1kZWYgRkRfWkVSTyhwKTogcmV0dXJuIGJ6ZXJvKChwKSwgc2l6ZW9mICgqKHApKSkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9yZWdlbiBiL0xpYi9wbGF0LXN1bm9zNS9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzhjYjdkZS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSMhIC9iaW4vc2gKLWNhc2UgYHVuYW1lIC1zcmAgaW4KLSdTdW5PUyA1LicqKQk7OwotKikJZWNobyBQcm9iYWJseSBub3Qgb24gYSBTb2xhcmlzIDIgc3lzdGVtIDE+JjIKLQlleGl0IDE7OwotZXNhYwotc2V0IC12Ci1oMnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmggL3Vzci9pbmNsdWRlL3N5cy9zdHJvcHRzLmggL3Vzci9pbmNsdWRlL2RsZmNuLmgKLQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtdW5peHdhcmU3L0lOLnB5IGIvTGliL3BsYXQtdW5peHdhcmU3L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjAyM2I0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXVuaXh3YXJlNy9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDgzNiArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldC9pbl9mLmgKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHg4MDAwMDAwMCkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9IDB4ZmYwMDAwMDAKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4YzAwMDAwMDApID09IDB4ODAwMDAwMDApCi0KLUlOX0NMQVNTQl9ORVQgPSAweGZmZmYwMDAwCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZTAwMDAwMDApID09IDB4YzAwMDAwMDApCi0KLUlOX0NMQVNTQ19ORVQgPSAweGZmZmZmZjAwCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZTAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfQU5ZID0gMHgwMDAwMDAwMAotSU5BRERSX0xPT1BCQUNLID0gMHg3ZjAwMDAwMQotSU5BRERSX0JST0FEQ0FTVCA9IDB4ZmZmZmZmZmYKLUlOQUREUl9OT05FID0gMHhmZmZmZmZmZgotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlOQUREUl9VTlNQRUNfR1JPVVAgPSAweGUwMDAwMDAwCi1JTkFERFJfQUxMSE9TVFNfR1JPVVAgPSAweGUwMDAwMDAxCi1JTkFERFJfQUxMUlRSU19HUk9VUCA9IDB4ZTAwMDAwMDIKLUlOQUREUl9NQVhfTE9DQUxfR1JPVVAgPSAweGUwMDAwMGZmCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luNi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAotZGVmIHF1YWRfbG93KHgpOiByZXR1cm4geC52YWxbMF0KLQotQURUX0VNQVNLU0laRSA9IDgKLVNIUlRfTUlOID0gLTMyNzY4Ci1TSFJUX01BWCA9IDMyNzY3Ci1JTlRfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfTUFYID0gMjE0NzQ4MzY0NwotTE9OR19NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUxPTkdfTUFYID0gMjE0NzQ4MzY0NwotT0ZGMzJfTUFYID0gTE9OR19NQVgKLUlTVEFUX0FTU0VSVEVEID0gMAotSVNUQVRfQVNTVU1FRCA9IDEKLUlTVEFUX05PTkUgPSAyCi1PRkZfTUFYID0gT0ZGMzJfTUFYCi1DTE9DS19NQVggPSBMT05HX01BWAotUF9NWUlEID0gKC0xKQotUF9NWUhPU1RJRCA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDQwOTYKLU5CQlkgPSA4Ci1OVUxMID0gMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2JpdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldC9pbjZfZi5oCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBJTjZfQUREUl9FUVVBTF9MKGEsIDAsIDAsIDAsIDApCi0KLWRlZiBJTjZfU0VUX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBJTjZfQUREUl9DT1BZX0woYSwgMCwgMCwgMCwgMCkKLQotZGVmIElONl9JU19BRERSX0FOWShhKTogcmV0dXJuIElONl9BRERSX0VRVUFMX0woYSwgMCwgMCwgMCwgMCkKLQotZGVmIElONl9TRVRfQUREUl9BTlkoYSk6IHJldHVybiBJTjZfQUREUl9DT1BZX0woYSwgMCwgMCwgMCwgMCkKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gSU42X0FERFJfRVFVQUxfTChhLCAwLCAwLCAwLCAweDAxMDAwMDAwKQotCi1kZWYgSU42X1NFVF9BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gSU42X0FERFJfQ09QWV9MKGEsIDAsIDAsIDAsIDB4MDEwMDAwMDApCi0KLUlONl9NQ19GTEFHX1BFUk1BTkVOVCA9IDB4MAotSU42X01DX0ZMQUdfVFJBTlNJRU5UID0gMHgxCi1JTjZfTUNfU0NPUEVfTk9ERUxPQ0FMID0gMHgxCi1JTjZfTUNfU0NPUEVfTElOS0xPQ0FMID0gMHgyCi1JTjZfTUNfU0NPUEVfU0lURUxPQ0FMID0gMHg1Ci1JTjZfTUNfU0NPUEVfT1JHTE9DQUwgPSAweDgKLUlONl9NQ19TQ09QRV9HTE9CQUwgPSAweEUKLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvbnZzYS5oCi1fX05FVExJQl9VVzIxMV9TVlI0ID0gMQotX19ORVRMSUJfVVcyMTFfWFBHNCA9IDIKLV9fTkVUTElCX0dFTUlOSV9TVlI0ID0gMwotX19ORVRMSUJfR0VNSU5JX1hQRzQgPSA0Ci1fX05FVExJQl9GUDFfU1ZSNCA9IDUKLV9fTkVUTElCX0ZQMV9YUEc0ID0gNgotX19ORVRMSUJfQkFTRV9WRVJTSU9OX18gPSBfX05FVExJQl9VVzIxMV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9GUDFfU1ZSNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfRlAxX1hQRzQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0dFTUlOSV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9HRU1JTklfWFBHNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfVVcyMTFfU1ZSNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfVVcyMTFfWFBHNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfRlAxX1hQRzQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9ieXRlb3JkZXIuaAotTElUVExFX0VORElBTiA9IDEyMzQKLUJJR19FTkRJQU4gPSA0MzIxCi1QRFBfRU5ESUFOID0gMzQxMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J5dGVvcmRlcl9mLmgKLUJZVEVfT1JERVIgPSBMSVRUTEVfRU5ESUFOCi1kZWYgaHRvbmwoaGwpOiByZXR1cm4gX19odG9ubChobCkKLQotZGVmIG50b2hsKG5sKTogcmV0dXJuIF9fbnRvaGwobmwpCi0KLWRlZiBodG9ucyhocyk6IHJldHVybiBfX2h0b25zKGhzKQotCi1kZWYgbnRvaHMobnMpOiByZXR1cm4gX19udG9ocyhucykKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBfX05FVExJQl9WRVJTSU9OX0lTX1hQRzQodmVyc2lvbik6IHJldHVybiAoKCh2ZXJzaW9uKSAlIDIpID09IDApCi0KLWRlZiBfX05FVExJQl9WRVJTSU9OX0hBU19TQUxFTih2ZXJzaW9uKTogcmV0dXJuICgodmVyc2lvbikgPj0gX19ORVRMSUJfR0VNSU5JX1NWUjQpCi0KLWRlZiBfX05FVExJQl9WRVJTSU9OX0lTX0lLUyh2ZXJzaW9uKTogcmV0dXJuICgodmVyc2lvbikgPj0gX19ORVRMSUJfRlAxX1NWUjQpCi0KLWRlZiBTQV9GQU1JTFlfR0VUKHNhKTogcmV0dXJuIFwKLQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X1VOSUNBU1RfSE9QUyA9IDMKLUlQVjZfQUREUkZPUk0gPSAyNAotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDI1Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDI2Ci1JUFY2X01VTFRJQ0FTVF9MT09QID0gMjcKLUlQVjZfQUREX01FTUJFUlNISVAgPSAyOAotSVBWNl9EUk9QX01FTUJFUlNISVAgPSAyOQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2luc3JlbS5oCi1kZWYgTElTVF9JTklUKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgTElTVF9JTklUKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgcmVtcXVlKGEpOiByZXR1cm4gUkVNUVVFKGEpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zb2NrZXQuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Vpby5oCi1TSFVUX1JEID0gMAotU0hVVF9XUiA9IDEKLVNIVVRfUkRXUiA9IDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9uZXRjb25maWcuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiAoKQotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAieCIKLQotTkVUQ09ORklHID0gIi9ldGMvbmV0Y29uZmlnIgotTkVUUEFUSCA9ICJORVRQQVRIIgotTkNfVFBJX0NMVFMgPSAxCi1OQ19UUElfQ09UUyA9IDIKLU5DX1RQSV9DT1RTX09SRCA9IDMKLU5DX1RQSV9SQVcgPSA0Ci1OQ19OT0ZMQUcgPSAwMAotTkNfVklTSUJMRSA9IDBvMQotTkNfQlJPQURDQVNUID0gMG8yCi1OQ19OT1BST1RPRk1MWSA9ICItIgotTkNfTE9PUEJBQ0sgPSAibG9vcGJhY2siCi1OQ19JTkVUID0gImluZXQiCi1OQ19JTkVUNiA9ICJpbmV0NiIKLU5DX0lNUExJTksgPSAiaW1wbGluayIKLU5DX1BVUCA9ICJwdXAiCi1OQ19DSEFPUyA9ICJjaGFvcyIKLU5DX05TID0gIm5zIgotTkNfTkJTID0gIm5icyIKLU5DX0VDTUEgPSAiZWNtYSIKLU5DX0RBVEFLSVQgPSAiZGF0YWtpdCIKLU5DX0NDSVRUID0gImNjaXR0IgotTkNfU05BID0gInNuYSIKLU5DX0RFQ05FVCA9ICJkZWNuZXQiCi1OQ19ETEkgPSAiZGxpIgotTkNfTEFUID0gImxhdCIKLU5DX0hZTElOSyA9ICJoeWxpbmsiCi1OQ19BUFBMRVRBTEsgPSAiYXBwbGV0YWxrIgotTkNfTklUID0gIm5pdCIKLU5DX0lFRUU4MDIgPSAiaWVlZTgwMiIKLU5DX09TSSA9ICJvc2kiCi1OQ19YMjUgPSAieDI1IgotTkNfT1NJTkVUID0gIm9zaW5ldCIKLU5DX0dPU0lQID0gImdvc2lwIgotTkNfTkVUV0FSRSA9ICJuZXR3YXJlIgotTkNfTk9QUk9UTyA9ICItIgotTkNfVENQID0gInRjcCIKLU5DX1VEUCA9ICJ1ZHAiCi1OQ19JQ01QID0gImljbXAiCi1OQ19JUFggPSAiaXB4IgotTkNfU1BYID0gInNweCIKLU5DX1RQSV9DTFRTID0gMQotTkNfVFBJX0NPVFMgPSAyCi1OQ19UUElfQ09UU19PUkQgPSAzCi1OQ19UUElfUkFXID0gNAotU09DS19TVFJFQU0gPSAyCi1TT0NLX0RHUkFNID0gMQotU09DS19SQVcgPSA0Ci1TT0NLX1JETSA9IDUKLVNPQ0tfU0VRUEFDS0VUID0gNgotU09fREVCVUcgPSAweDAwMDEKLVNPX0FDQ0VQVENPTk4gPSAweDAwMDIKLVNPX1JFVVNFQUREUiA9IDB4MDAwNAotU09fS0VFUEFMSVZFID0gMHgwMDA4Ci1TT19ET05UUk9VVEUgPSAweDAwMTAKLVNPX0JST0FEQ0FTVCA9IDB4MDAyMAotU09fVVNFTE9PUEJBQ0sgPSAweDAwNDAKLVNPX0xJTkdFUiA9IDB4MDA4MAotU09fT09CSU5MSU5FID0gMHgwMTAwCi1TT19PUkRSRUwgPSAweDAyMDAKLVNPX0lNQVNPQ0tFVCA9IDB4MDQwMAotU09fTUdNVCA9IDB4MDgwMAotU09fUkVVU0VQT1JUID0gMHgxMDAwCi1TT19MSVNURU5JTkcgPSAweDIwMDAKLVNPX1JEV1IgPSAweDQwMDAKLVNPX1NFTUEgPSAweDgwMDAKLVNPX0RPTlRMSU5HRVIgPSAoflNPX0xJTkdFUikKLVNPX1NOREJVRiA9IDB4MTAwMQotU09fUkNWQlVGID0gMHgxMDAyCi1TT19TTkRMT1dBVCA9IDB4MTAwMwotU09fUkNWTE9XQVQgPSAweDEwMDQKLVNPX1NORFRJTUVPID0gMHgxMDA1Ci1TT19SQ1ZUSU1FTyA9IDB4MTAwNgotU09fRVJST1IgPSAweDEwMDcKLVNPX1RZUEUgPSAweDEwMDgKLVNPX1BST1RPVFlQRSA9IDB4MTAwOQotU09fQUxMUkFXID0gMHgxMDBhCi1TT0xfU09DS0VUID0gMHhmZmZmCi1BRl9VTlNQRUMgPSAwCi1BRl9VTklYID0gMQotQUZfTE9DQUwgPSBBRl9VTklYCi1BRl9JTkVUID0gMgotQUZfSU1QTElOSyA9IDMKLUFGX1BVUCA9IDQKLUFGX0NIQU9TID0gNQotQUZfTlMgPSA2Ci1BRl9OQlMgPSA3Ci1BRl9FQ01BID0gOAotQUZfREFUQUtJVCA9IDkKLUFGX0NDSVRUID0gMTAKLUFGX1NOQSA9IDExCi1BRl9ERUNuZXQgPSAxMgotQUZfRExJID0gMTMKLUFGX0xBVCA9IDE0Ci1BRl9IWUxJTksgPSAxNQotQUZfQVBQTEVUQUxLID0gMTYKLUFGX05JVCA9IDE3Ci1BRl84MDIgPSAxOAotQUZfT1NJID0gMTkKLUFGX0lTTyA9IEFGX09TSQotQUZfWDI1ID0gMjAKLUFGX09TSU5FVCA9IDIxCi1BRl9HT1NJUCA9IDIyCi1BRl9ZTkVUID0gMjMKLUFGX1JPVVRFID0gMjQKLUFGX0xJTksgPSAyNQotcHNldWRvX0FGX1hUUCA9IDI2Ci1BRl9JTkVUNiA9IDI3Ci1BRl9NQVggPSAyNwotQUZfSU5FVF9CU1dBUCA9IDB4MDIwMAotUEZfVU5TUEVDID0gQUZfVU5TUEVDCi1QRl9VTklYID0gQUZfVU5JWAotUEZfTE9DQUwgPSBBRl9MT0NBTAotUEZfSU5FVCA9IEFGX0lORVQKLVBGX0lNUExJTksgPSBBRl9JTVBMSU5LCi1QRl9QVVAgPSBBRl9QVVAKLVBGX0NIQU9TID0gQUZfQ0hBT1MKLVBGX05TID0gQUZfTlMKLVBGX05CUyA9IEFGX05CUwotUEZfRUNNQSA9IEFGX0VDTUEKLVBGX0RBVEFLSVQgPSBBRl9EQVRBS0lUCi1QRl9DQ0lUVCA9IEFGX0NDSVRUCi1QRl9TTkEgPSBBRl9TTkEKLVBGX0RFQ25ldCA9IEFGX0RFQ25ldAotUEZfRExJID0gQUZfRExJCi1QRl9MQVQgPSBBRl9MQVQKLVBGX0hZTElOSyA9IEFGX0hZTElOSwotUEZfQVBQTEVUQUxLID0gQUZfQVBQTEVUQUxLCi1QRl9OSVQgPSBBRl9OSVQKLVBGXzgwMiA9IEFGXzgwMgotUEZfT1NJID0gQUZfT1NJCi1QRl9JU08gPSBQRl9PU0kKLVBGX1gyNSA9IEFGX1gyNQotUEZfT1NJTkVUID0gQUZfT1NJTkVUCi1QRl9HT1NJUCA9IEFGX0dPU0lQCi1QRl9ZTkVUID0gQUZfWU5FVAotUEZfUk9VVEUgPSBBRl9ST1VURQotUEZfTElOSyA9IEFGX0xJTksKLXBzZXVkb19QRl9YVFAgPSBwc2V1ZG9fQUZfWFRQCi1QRl9JTkVUNiA9IEFGX0lORVQ2Ci1QRl9NQVggPSBBRl9NQVgKLVNPTUFYQ09OTiA9IDUKLVNDTV9SSUdIVFMgPSAxCi1NU0dfT09CID0gMHgxCi1NU0dfUEVFSyA9IDB4MgotTVNHX0RPTlRST1VURSA9IDB4NAotTVNHX0NUUlVOQyA9IDB4OAotTVNHX1RSVU5DID0gMHgxMAotTVNHX0VPUiA9IDB4MzAKLU1TR19XQUlUQUxMID0gMHgyMAotTVNHX01BWElPVkxFTiA9IDE2Ci1kZWYgT1BUTEVOKHgpOiByZXR1cm4gKCgoKHgpICsgc2l6ZW9mKGludCkgLSAxKSAvIHNpemVvZihpbnQpKSAqIHNpemVvZihpbnQpKQotCi1HSUFSRyA9IDB4MQotQ09OVEkgPSAweDIKLUdJVEFCID0gMHg0Ci1TT0NLRVRTWVMgPSA4OAotU09DS0VUU1lTID0gODMKLVNPX0FDQ0VQVCA9IDEKLVNPX0JJTkQgPSAyCi1TT19DT05ORUNUID0gMwotU09fR0VUUEVFUk5BTUUgPSA0Ci1TT19HRVRTT0NLTkFNRSA9IDUKLVNPX0dFVFNPQ0tPUFQgPSA2Ci1TT19MSVNURU4gPSA3Ci1TT19SRUNWID0gOAotU09fUkVDVkZST00gPSA5Ci1TT19TRU5EID0gMTAKLVNPX1NFTkRUTyA9IDExCi1TT19TRVRTT0NLT1BUID0gMTIKLVNPX1NIVVRET1dOID0gMTMKLVNPX1NPQ0tFVCA9IDE0Ci1TT19TT0NLUE9MTCA9IDE1Ci1TT19HRVRJUERPTUFJTiA9IDE2Ci1TT19TRVRJUERPTUFJTiA9IDE3Ci1TT19BREpUSU1FID0gMTgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJlYW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NyZWQuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2tzeW5jaC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGwuaAotU0lHTkJJVCA9IDB4ODAwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pcGwuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2Rpc3BfcC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHJhcC5oCi1ESVZFUlIgPSAwCi1TR0xTVFAgPSAxCi1OTUlGTFQgPSAyCi1CUFRGTFQgPSAzCi1JTlRPRkxUID0gNAotQk9VTkRGTFQgPSA1Ci1JTlZPUEZMVCA9IDYKLU5PRVhURkxUID0gNwotREJMRkxUID0gOAotRVhUT1ZSRkxUID0gOQotSU5WVFNTRkxUID0gMTAKLVNFR05QRkxUID0gMTEKLVNUS0ZMVCA9IDEyCi1HUEZMVCA9IDEzCi1QR0ZMVCA9IDE0Ci1FWFRFUlJGTFQgPSAxNgotQUxJR05GTFQgPSAxNwotTUNFRkxUID0gMTgKLVVTRVJGTFQgPSAweDEwMAotVFJQX1BSRUVNUFQgPSAweDIwMAotVFJQX1VOVVNFRCA9IDB4MjAxCi1QRl9FUlJfTUFTSyA9IDB4MDEKLVBGX0VSUl9QQUdFID0gMAotUEZfRVJSX1BST1QgPSAxCi1QRl9FUlJfV1JJVEUgPSAyCi1QRl9FUlJfVVNFUiA9IDQKLUVWVF9TVFJTQ0hFRCA9IDB4MDQKLUVWVF9HTE9CQ0FMTE9VVCA9IDB4MDgKLUVWVF9MQ0xDQUxMT1VUID0gMHgxMAotRVZUX1NPRlRJTlRNQVNLID0gKEVWVF9TVFJTQ0hFRHxFVlRfR0xPQkNBTExPVVR8RVZUX0xDTENBTExPVVQpCi1QTDAgPSAwCi1QTDEgPSAxCi1QTDIgPSAyCi1QTDMgPSAzCi1QTDQgPSA0Ci1QTDUgPSA1Ci1QTDYgPSA2Ci1QTEhJID0gOAotUEw3ID0gUExISQotUExCQVNFID0gUEwwCi1QTFRJTUVPVVQgPSBQTDEKLVBMRElTSyA9IFBMNQotUExTVFIgPSBQTDYKLVBMVFRZID0gUExTVFIKLVBMTUlOID0gUEwwCi1QTE1JTiA9IFBMMQotTUFYX0lOVFJfTEVWRUxTID0gMTAKLU1BWF9JTlRSX05FU1RJTkcgPSA1MAotU1RSU0NIRUQgPSBFVlRfU1RSU0NIRUQKLUdMT0JBTFNPRlRJTlQgPSBFVlRfR0xPQkNBTExPVVQKLUxPQ0FMU09GVElOVCA9IEVWVF9MQ0xDQUxMT1VUCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N5bmNoX3AuaAotZGVmIEdFVF9USU1FKHRpbWVwKTogcmV0dXJuIFwKLQotTEtfVEhSRVNIT0xEID0gNTAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbGlzdC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbGlzdGFzbS5oCi1kZWYgcmVtcXVlX251bGwoZSk6IHJldHVybiBcCi0KLWRlZiBMU19JU0VNUFRZKGxpc3RwKTogcmV0dXJuIFwKLQotTEtfQkFTSUMgPSAweDEKLUxLX1NMRUVQID0gMHgyCi1MS19OT1NUQVRTID0gMHg0Ci1kZWYgQ1lDTEVTX1NJTkNFKGMpOiByZXR1cm4gQ1lDTEVTX0JFVFdFRU4oKGMpLCBDWUNMRVMoKSkKLQotTFNCX05MS0RTID0gOTIKLUVWVF9SVU5SVU4gPSAweDAxCi1FVlRfS1BSVU5SVU4gPSAweDAyCi1TUF9VTkxPQ0tFRCA9IDAKLVNQX0xPQ0tFRCA9IDEKLUtTX0xPQ0tURVNUID0gMHgwMQotS1NfTVBTVEFUUyA9IDB4MDIKLUtTX0RFSU5JVEVEID0gMHgwNAotS1NfTlZMVFRSQUNFID0gMHgwOAotUldTX1JFQUQgPSAob3JkKCdyJykpCi1SV1NfV1JJVEUgPSAob3JkKCd3JykpCi1SV1NfVU5MT0NLRUQgPSAob3JkKCd1JykpCi1SV1NfQlVTWSA9IChvcmQoJ2InKSkKLWRlZiBTTEVFUF9MT0NLT1dORUQobGtwKTogcmV0dXJuIFwKLQotZGVmIFNMRUVQX0RJU09XTihsa3ApOiByZXR1cm4gXAotCi1LU19OT1BSTVBUID0gMHgwMDAwMDAwMQotX19LU19MT0NLVEVTVCA9IEtTX0xPQ0tURVNUCi1fX0tTX0xPQ0tURVNUID0gMAotX19LU19NUFNUQVRTID0gS1NfTVBTVEFUUwotX19LU19NUFNUQVRTID0gMAotX19LU19OVkxUVFJBQ0UgPSBLU19OVkxUVFJBQ0UKLV9fS1NfTlZMVFRSQUNFID0gMAotS1NGTEFHUyA9IChfX0tTX0xPQ0tURVNUfF9fS1NfTVBTVEFUU3xfX0tTX05WTFRUUkFDRSkKLUtTVlVOSVBST0MgPSAxCi1LU1ZNUERFQlVHID0gMgotS1NWTVBOT0RFQlVHID0gMwotS1NWRkxBRyA9IEtTVlVOSVBST0MKLUtTVkZMQUcgPSBLU1ZNUERFQlVHCi1LU1ZGTEFHID0gS1NWTVBOT0RFQlVHCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3NpbmxpbmUuaAotX0FfU1BfTE9DS0VEID0gMQotX0FfU1BfVU5MT0NLRUQgPSAwCi1fQV9JTlZQTCA9IC0xCi1kZWYgX0FUT01JQ19JTlRfSU5DUihhdG9taWNfaW50cCk6IHJldHVybiBcCi0KLWRlZiBfQVRPTUlDX0lOVF9ERUNSKGF0b21pY19pbnRwKTogcmV0dXJuIFwKLQotZGVmIEFUT01JQ19JTlRfUkVBRChhdG9taWNfaW50cCk6IHJldHVybiBfQVRPTUlDX0lOVF9SRUFEKGF0b21pY19pbnRwKQotCi1kZWYgQVRPTUlDX0lOVF9JTkNSKGF0b21pY19pbnRwKTogcmV0dXJuIF9BVE9NSUNfSU5UX0lOQ1IoYXRvbWljX2ludHApCi0KLWRlZiBBVE9NSUNfSU5UX0RFQ1IoYXRvbWljX2ludHApOiByZXR1cm4gX0FUT01JQ19JTlRfREVDUihhdG9taWNfaW50cCkKLQotZGVmIEZTUElOX0lOSVQobHApOiByZXR1cm4KLQotZGVmIEZTUElOX0xPQ0sobCk6IHJldHVybiBESVNBQkxFKCkKLQotZGVmIEZTUElOX1RSWUxPQ0sobCk6IHJldHVybiAoRElTQUJMRSgpLCBCX1RSVUUpCi0KLWRlZiBGU1BJTl9VTkxPQ0sobCk6IHJldHVybiBFTkFCTEUoKQotCi1kZWYgTE9DS19ERUlOSVQobHApOiByZXR1cm4KLQotZGVmIExPQ0tfREVBTExPQyhscCk6IHJldHVybgotCi1kZWYgTE9DS19PV05FRChscCk6IHJldHVybiAoQl9UUlVFKQotCi1kZWYgUldfREVJTklUKGxwKTogcmV0dXJuCi0KLWRlZiBSV19ERUFMTE9DKGxwKTogcmV0dXJuCi0KLWRlZiBSV19PV05FRChscCk6IHJldHVybiAoQl9UUlVFKQotCi1kZWYgSVNfTE9DS0VEKGxvY2twKTogcmV0dXJuIEJfRkFMU0UKLQotZGVmIExPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gXAotCi1kZWYgVFJZTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1BMTUlOKGxvY2twKQotCi1kZWYgTE9DS19TSF9QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1BMTUlOKGxvY2twKQotCi1kZWYgUldfUkRMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBSV19XUkxPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gTE9DS19QTE1JTihsb2NrcCkKLQotZGVmIExPQ0tfREVJTklUKGwpOiByZXR1cm4KLQotZGVmIExPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gTE9DSygobG9ja3ApLCBQTE1JTikKLQotZGVmIFRSWUxPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gVFJZTE9DSygobG9ja3ApLCBQTE1JTikKLQotZGVmIExPQ0tfU0hfUExNSU4obG9ja3ApOiByZXR1cm4gTE9DS19TSCgobG9ja3ApLCBQTE1JTikKLQotZGVmIFJXX1JETE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBSV19SRExPQ0soKGxvY2twKSwgUExNSU4pCi0KLWRlZiBSV19XUkxPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gUldfV1JMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgRlNQSU5fSVNfTE9DS0VEKGZzcCk6IHJldHVybiBCX0ZBTFNFCi0KLWRlZiBTUElOX0lTX0xPQ0tFRChsb2NrcCk6IHJldHVybiBCX0ZBTFNFCi0KLWRlZiBGU1BJTl9PV05FRChsKTogcmV0dXJuIChCX1RSVUUpCi0KLUNSX01MRFJFQUwgPSAweDAwMDAwMDAxCi1DUl9SRFVNUCA9IDB4MDAwMDAwMDIKLWRlZiBjcmhvbGQoY3JlZHApOiByZXR1cm4gY3Job2xkbigoY3JlZHApLCAxKQotCi1kZWYgY3JmcmVlKGNyZWRwKTogcmV0dXJuIGNyZnJlZW4oKGNyZWRwKSwgMSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N0cm1kZXAuaAotZGVmIHN0cl9hbGlnbmVkKFgpOiByZXR1cm4gKCgodWludCkoWCkgJiAoc2l6ZW9mKGludCkgLSAxKSkgPT0gMCkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2VuZ2luZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2xvY2suaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWUuaAotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1GRF9TRVRTSVpFID0gNDA5NgotRkRfTkJCWSA9IDgKLQotIyBJbmNsdWRlZCBmcm9tIHRpbWUuaAotTlVMTCA9IDAKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2Nsb2NrX3AuaAotQ0dCSVRTID0gNAotSURCSVRTID0gMjgKLWRlZiB0b2lkX3VucGFja2NnKGlkdmFsKTogcmV0dXJuICgoKGlkdmFsKSA+PiBJREJJVFMpICYgMHhmKQotCi1kZWYgdG9pZF91bnBhY2tpZChpZHZhbCk6IHJldHVybiAoKGlkdmFsKSAmIDB4ZmZmZmZmZikKLQotZGVmIHRvaWRfdW5wYWNrY2coaWR2YWwpOiByZXR1cm4gMAotCi1kZWYgdG9pZF91bnBhY2tpZChpZHZhbCk6IHJldHVybiAoaWR2YWwpCi0KLU5DQUxMT1VUX0hBU0ggPSAxMDI0Ci1DQUxMT1VUX01BWFZBTCA9IDB4N2ZmZmZmZmYKLVRPX1BFUklPRElDID0gMHg4MDAwMDAwMAotVE9fSU1NRURJQVRFID0gMHg4MDAwMDAwMAotU0VDID0gMQotTUlMTElTRUMgPSAxMDAwCi1NSUNST1NFQyA9IDEwMDAwMDAKLU5BTk9TRUMgPSAxMDAwMDAwMDAwCi1TRUNIUiA9ICg2MCo2MCkKLVNFQ0RBWSA9ICgyNCpTRUNIUikKLVNFQ1lSID0gKDM2NSpTRUNEQVkpCi1kZWYgVElNRV9PV05FRF9SKGNnbnVtKTogcmV0dXJuIChCX1RSVUUpCi0KLUxPT1BTRUNPTkRTID0gMTgwMAotTE9PUE1JQ1JPU0VDT05EUyA9IChMT09QU0VDT05EUyAqIE1JQ1JPU0VDKQotZGVmIFRJQ0tTX1NJTkNFKHQpOiByZXR1cm4gVElDS1NfQkVUV0VFTih0LCBUSUNLUygpKQotCi1NQVhSUVMgPSAyCi1FX09GRkxJTkUgPSAweDAxCi1FX0JBRCA9IDB4MDIKLUVfU0hVVERPV04gPSAweDA0Ci1FX0RSSVZFUiA9IDB4MDgKLUVfREVGQVVMVEtFRVAgPSAweDEwMAotRV9EUklWRVJCT1VORCA9IDB4MjAwCi1FX0VYQ0xVU0lWRSA9IDB4NDAwCi1FX0NHTEVBREVSID0gMHg4MDAKLUVfTk9XQVkgPSAoRV9PRkZMSU5FfEVfQkFEfEVfU0hVVERPV04pCi1FX0JPVU5EID0gMHgwMQotRV9HTE9CQUwgPSAweDAwCi1FX1VOQVZBSUwgPSAtMQotRU5HSU5FX09OTElORSA9IDEKLWRlZiBQUk9DRVNTT1JfVU5NQVAoZSk6IHJldHVybiAoKGUpIC0gZW5naW5lKQotCi1CT09URU5HID0gMAotUU1PVkVEID0gMHgwMDAxCi1RV0FOVFIgPSAweDAwMDIKLVFXQU5UVyA9IDB4MDAwNAotUUZVTEwgPSAweDAwMDgKLVFSRUFEUiA9IDB4MDAxMAotUVVTRSA9IDB4MDAyMAotUU5PRU5CID0gMHgwMDQwCi1RVVAgPSAweDAwODAKLVFCQUNLID0gMHgwMTAwCi1RSU5URVIgPSAweDAyMDAKLVFQUk9DU09OID0gMHgwNDAwCi1RVE9FTkFCID0gMHgwODAwCi1RRlJFRVpFID0gMHgxMDAwCi1RQk9VTkQgPSAweDIwMDAKLVFERUZDTlQgPSAweDQwMDAKLVFFTkFCID0gMHgwMDAxCi1RU1ZDQlVTWSA9IDB4MDAwMgotU1RSTV9QVVRDTlRfVEFCTEVTID0gMzEKLWRlZiBTVFJNX01ZRU5HX1BVVENOVChzZHApOiByZXR1cm4gU1RSTV9QVVRDTlQobC5lbmdfbnVtLCBzZHApCi0KLVFCX0ZVTEwgPSAweDAxCi1RQl9XQU5UVyA9IDB4MDIKLVFCX0JBQ0sgPSAweDA0Ci1OQkFORCA9IDI1NgotREJfV0FTRFVQRUQgPSAweDEKLURCXzJQSUVDRSA9IDB4MgotU1RSTEVBS0hBU0hTWiA9IDEwMjEKLU1TR01BUksgPSAweDAxCi1NU0dOT0xPT1AgPSAweDAyCi1NU0dERUxJTSA9IDB4MDQKLU1TR05PR0VUID0gMHgwOAotTVNHTE9HID0gMHgxMAotTV9EQVRBID0gMHgwMAotTV9QUk9UTyA9IDB4MDEKLU1fQlJFQUsgPSAweDA4Ci1NX1BBU1NGUCA9IDB4MDkKLU1fU0lHID0gMHgwYgotTV9ERUxBWSA9IDB4MGMKLU1fQ1RMID0gMHgwZAotTV9JT0NUTCA9IDB4MGUKLU1fU0VUT1BUUyA9IDB4MTAKLU1fUlNFID0gMHgxMQotTV9UUkFJTCA9IDB4MTIKLU1fSU9DQUNLID0gMHg4MQotTV9JT0NOQUsgPSAweDgyCi1NX1BDUFJPVE8gPSAweDgzCi1NX1BDU0lHID0gMHg4NAotTV9SRUFEID0gMHg4NQotTV9GTFVTSCA9IDB4ODYKLU1fU1RPUCA9IDB4ODcKLU1fU1RBUlQgPSAweDg4Ci1NX0hBTkdVUCA9IDB4ODkKLU1fRVJST1IgPSAweDhhCi1NX0NPUFlJTiA9IDB4OGIKLU1fQ09QWU9VVCA9IDB4OGMKLU1fSU9DREFUQSA9IDB4OGQKLU1fUENSU0UgPSAweDhlCi1NX1NUT1BJID0gMHg4ZgotTV9TVEFSVEkgPSAweDkwCi1NX1BDQ1RMID0gMHg5MQotTV9QQ1NFVE9QVFMgPSAweDkyCi1RTk9STSA9IDB4MDAKLVFQQ1RMID0gMHg4MAotU1RSQ0FOT04gPSAweDAxCi1SRUNPUFkgPSAweDAyCi1TT19BTEwgPSAweDAwM2YKLVNPX1JFQURPUFQgPSAweDAwMDEKLVNPX1dST0ZGID0gMHgwMDAyCi1TT19NSU5QU1ogPSAweDAwMDQKLVNPX01BWFBTWiA9IDB4MDAwOAotU09fSElXQVQgPSAweDAwMTAKLVNPX0xPV0FUID0gMHgwMDIwCi1TT19NUkVBRE9OID0gMHgwMDQwCi1TT19NUkVBRE9GRiA9IDB4MDA4MAotU09fTkRFTE9OID0gMHgwMTAwCi1TT19OREVMT0ZGID0gMHgwMjAwCi1TT19JU1RUWSA9IDB4MDQwMAotU09fSVNOVFRZID0gMHgwODAwCi1TT19UT1NUT1AgPSAweDEwMDAKLVNPX1RPTlNUT1AgPSAweDIwMDAKLVNPX0JBTkQgPSAweDQwMDAKLVNPX0RFTElNID0gMHg4MDAwCi1TT19OT0RFTElNID0gMHgwMTAwMDAKLVNPX1NUUkhPTEQgPSAweDAyMDAwMAotU09fTE9PUCA9IDB4MDQwMDAwCi1EUlZPUEVOID0gMHgwCi1NT0RPUEVOID0gMHgxCi1DTE9ORU9QRU4gPSAweDIKLU9QRU5GQUlMID0gLTEKLUJQUklfTE8gPSAxCi1CUFJJX01FRCA9IDIKLUJQUklfSEkgPSAzCi1JTkZQU1ogPSAtMQotRkxVU0hBTEwgPSAxCi1GTFVTSERBVEEgPSAwCi1TVFJISUdIID0gNTEyMAotU1RSTE9XID0gMTAyNAotTUFYSU9DQlNaID0gMTAyNAotZGVmIHN0cmFsbihhKTogcmV0dXJuIChjYWRkcl90KSgoaW50KShhKSAmIH4oc2l6ZW9mKGludCktMSkpCi0KLUlQTV9JRCA9IDIwMAotSUNNUE1fSUQgPSAyMDEKLVRDUE1fSUQgPSAyMDIKLVVEUE1fSUQgPSAyMDMKLUFSUE1fSUQgPSAyMDQKLUFQUE1fSUQgPSAyMDUKLVJJUE1fSUQgPSAyMDYKLVBQUE1fSUQgPSAyMDcKLUFIRExDTV9JRCA9IDIwOAotTUhETENSSVBNX0lEID0gMjA5Ci1IRExDTV9JRCA9IDIxMAotUFBDSURfSUQgPSAyMTEKLUlHTVBNX0lEID0gMjEyCi1JUElQTV9JRCA9IDIxMwotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUElQID0gNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0hFTExPID0gNjMKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfRUNITyA9IDcKLUlQUE9SVF9ESVNDQVJEID0gOQotSVBQT1JUX1NZU1RBVCA9IDExCi1JUFBPUlRfREFZVElNRSA9IDEzCi1JUFBPUlRfTkVUU1RBVCA9IDE1Ci1JUFBPUlRfRlRQID0gMjEKLUlQUE9SVF9URUxORVQgPSAyMwotSVBQT1JUX1NNVFAgPSAyNQotSVBQT1JUX1RJTUVTRVJWRVIgPSAzNwotSVBQT1JUX05BTUVTRVJWRVIgPSA0MgotSVBQT1JUX1dIT0lTID0gNDMKLUlQUE9SVF9NVFAgPSA1NwotSVBQT1JUX1RGVFAgPSA2OQotSVBQT1JUX1JKRSA9IDc3Ci1JUFBPUlRfRklOR0VSID0gNzkKLUlQUE9SVF9UVFlMSU5LID0gODcKLUlQUE9SVF9TVVBEVVAgPSA5NQotSVBQT1JUX0VYRUNTRVJWRVIgPSA1MTIKLUlQUE9SVF9MT0dJTlNFUlZFUiA9IDUxMwotSVBQT1JUX0NNRFNFUlZFUiA9IDUxNAotSVBQT1JUX0VGU1NFUlZFUiA9IDUyMAotSVBQT1JUX0JJRkZVRFAgPSA1MTIKLUlQUE9SVF9XSE9TRVJWRVIgPSA1MTMKLUlQUE9SVF9ST1VURVNFUlZFUiA9IDUyMAotSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURfTE9XID0gNTEyCi1JUFBPUlRfUkVTRVJWRURfSElHSCA9IDEwMjMKLUlQUE9SVF9VU0VSUkVTRVJWRURfTE9XID0gMzI3NjgKLUlQUE9SVF9VU0VSUkVTRVJWRURfSElHSCA9IDY1NTM1Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBfT1BUSU9OUyA9IDEKLUlQX1RPUyA9IDIKLUlQX1RUTCA9IDMKLUlQX0hEUklOQ0wgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX0xPT1AgPSAxMAotSVBfQUREX01FTUJFUlNISVAgPSAxMQotSVBfRFJPUF9NRU1CRVJTSElQID0gMTIKLUlQX0JST0FEQ0FTVF9JRiA9IDE0Ci1JUF9SRUNWSUZJTkRFWCA9IDE1Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTYKLU1SVF9JTklUID0gMTcKLU1SVF9ET05FID0gMTgKLU1SVF9BRERfVklGID0gMTkKLU1SVF9ERUxfVklGID0gMjAKLU1SVF9BRERfTUZDID0gMjEKLU1SVF9ERUxfTUZDID0gMjIKLU1SVF9WRVJTSU9OID0gMjMKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSU5BRERSX1VOU1BFQ19HUk9VUCA9IDB4ZTAwMDAwMDAKLUlOQUREUl9BTExIT1NUU19HUk9VUCA9IDB4ZTAwMDAwMDEKLUlOQUREUl9BTExSVFJTX0dST1VQID0gMHhlMDAwMDAwMgotSU5BRERSX01BWF9MT0NBTF9HUk9VUCA9IDB4ZTAwMDAwZmYKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQvaW5fbXAuaAotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldC9pbl9tcF9kZGkuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lubGluZS5oCi1JUF9ISUVSX0JBU0UgPSAoMjApCi1kZWYgQVNTRVJUX0xPQ0soeCk6IHJldHVybgotCi1kZWYgQVNTRVJUX1dSTE9DSyh4KTogcmV0dXJuCi0KLWRlZiBBU1NFUlRfVU5MT0NLKHgpOiByZXR1cm4KLQotZGVmIENBTlBVVChxKTogcmV0dXJuIGNhbnB1dCgocSkpCi0KLWRlZiBDQU5QVVRORVhUKHEpOiByZXR1cm4gY2FucHV0bmV4dCgocSkpCi0KLUlORVRfREVCVUcgPSAxCmRpZmYgLS1naXQgYS9MaWIvcGxhdC11bml4d2FyZTcvU1RST1BUUy5weSBiL0xpYi9wbGF0LXVuaXh3YXJlNy9TVFJPUFRTLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjUwYTljLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXVuaXh3YXJlNy9TVFJPUFRTLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvc3lzL3N0cm9wdHMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3R5cGVzLmgKLWRlZiBxdWFkX2xvdyh4KTogcmV0dXJuIHgudmFsWzBdCi0KLUFEVF9FTUFTS1NJWkUgPSA4Ci1TSFJUX01JTiA9IC0zMjc2OAotU0hSVF9NQVggPSAzMjc2NwotSU5UX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UX01BWCA9IDIxNDc0ODM2NDcKLUxPTkdfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1MT05HX01BWCA9IDIxNDc0ODM2NDcKLU9GRjMyX01BWCA9IExPTkdfTUFYCi1JU1RBVF9BU1NFUlRFRCA9IDAKLUlTVEFUX0FTU1VNRUQgPSAxCi1JU1RBVF9OT05FID0gMgotT0ZGX01BWCA9IE9GRjMyX01BWAotQ0xPQ0tfTUFYID0gTE9OR19NQVgKLVBfTVlJRCA9ICgtMSkKLVBfTVlIT1NUSUQgPSAoLTEpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLUZEX1NFVFNJWkUgPSA0MDk2Ci1OQkJZID0gOAotTlVMTCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jb25mLmgKLURfTkVXID0gMHgwMAotRF9PTEQgPSAweDAxCi1EX0RNQSA9IDB4MDIKLURfQkxLT0ZGID0gMHg0MDAKLURfTEZTID0gMHg4MDAwCi1EX1NUUiA9IDB4MDgwMAotRF9NT0QgPSAweDEwMDAKLURfUFNFVURPID0gMHgyMDAwCi1EX1JBTkRPTSA9IDB4NDAwMAotRF9IT1QgPSAweDEwMDAwCi1EX1NFRUtORUcgPSAweDA0Ci1EX1RBUEUgPSAweDA4Ci1EX05PQlJLVVAgPSAweDEwCi1EX0lOSVRQVUIgPSAweDIwCi1EX05PU1BFQ01BQ0RBVEEgPSAweDQwCi1EX1JEV0VRID0gMHg4MAotU0VDTUFTSyA9IChEX0lOSVRQVUJ8RF9OT1NQRUNNQUNEQVRBfERfUkRXRVEpCi1EQUZfUkVRRE1BID0gMHgxCi1EQUZfUEhZU1JFUSA9IDB4MgotREFGX1BSRTggPSAweDQKLURBRl9TVEFUSUMgPSAweDgKLURBRl9TVFIgPSAweDEwCi1EX01QID0gMHgxMDAKLURfVVBGID0gMHgyMDAKLVJPT1RGU19OQU1FU1ogPSA3Ci1GTU5BTUVTWiA9IDgKLU1DRF9WRVJTSU9OID0gMQotRElfQkNCUCA9IDAKLURJX01FRElBID0gMQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlY3N5cy5oCi1FU19NQUNPUEVOTElEID0gMQotRVNfTUFDU1lTTElEID0gMgotRVNfTUFDUk9PVExJRCA9IDMKLUVTX1BSVklORk8gPSA0Ci1FU19QUlZTRVRDTlQgPSA1Ci1FU19QUlZTRVRTID0gNgotRVNfTUFDQURUTElEID0gNwotRVNfUFJWSUQgPSA4Ci1FU19UUEdFVE1BSk9SID0gOQotU0FfRVhFQyA9IDBvMDEKLVNBX1dSSVRFID0gMG8wMgotU0FfUkVBRCA9IDBvMDQKLVNBX1NVQlNJWkUgPSAwbzEwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3Ryb3B0c19mLmgKLVhfU1RSID0gKG9yZCgnUycpPDw4KQotWF9JX0JBU0UgPSAoWF9TVFJ8MG8yMDApCi1YX0lfTlJFQUQgPSAoWF9TVFJ8MG8yMDEpCi1YX0lfUFVTSCA9IChYX1NUUnwwbzIwMikKLVhfSV9QT1AgPSAoWF9TVFJ8MG8yMDMpCi1YX0lfTE9PSyA9IChYX1NUUnwwbzIwNCkKLVhfSV9GTFVTSCA9IChYX1NUUnwwbzIwNSkKLVhfSV9TUkRPUFQgPSAoWF9TVFJ8MG8yMDYpCi1YX0lfR1JET1BUID0gKFhfU1RSfDBvMjA3KQotWF9JX1NUUiA9IChYX1NUUnwwbzIxMCkKLVhfSV9TRVRTSUcgPSAoWF9TVFJ8MG8yMTEpCi1YX0lfR0VUU0lHID0gKFhfU1RSfDBvMjEyKQotWF9JX0ZJTkQgPSAoWF9TVFJ8MG8yMTMpCi1YX0lfTElOSyA9IChYX1NUUnwwbzIxNCkKLVhfSV9VTkxJTksgPSAoWF9TVFJ8MG8yMTUpCi1YX0lfUEVFSyA9IChYX1NUUnwwbzIxNykKLVhfSV9GRElOU0VSVCA9IChYX1NUUnwwbzIyMCkKLVhfSV9TRU5ERkQgPSAoWF9TVFJ8MG8yMjEpCi1YX0lfUkVDVkZEID0gKFhfU1RSfDBvMjIyKQotCi0jIEluY2x1ZGVkIGZyb20gdW5pc3RkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91bmlzdGQuaAotUl9PSyA9IDBvMDQKLVdfT0sgPSAwbzAyCi1YX09LID0gMG8wMQotRl9PSyA9IDAwMAotRUZGX09OTFlfT0sgPSAwbzEwCi1FWF9PSyA9IDBvMjAKLVNFRUtfU0VUID0gMAotU0VFS19DVVIgPSAxCi1TRUVLX0VORCA9IDIKLV9TQ19BUkdfTUFYID0gMQotX1NDX0NISUxEX01BWCA9IDIKLV9TQ19DTEtfVENLID0gMwotX1NDX05HUk9VUFNfTUFYID0gNAotX1NDX09QRU5fTUFYID0gNQotX1NDX0pPQl9DT05UUk9MID0gNgotX1NDX1NBVkVEX0lEUyA9IDcKLV9TQ19WRVJTSU9OID0gOAotX1NDX1BBU1NfTUFYID0gOQotX1NDX0xPR05BTUVfTUFYID0gMTAKLV9TQ19QQUdFU0laRSA9IDExCi1fU0NfUEFHRV9TSVpFID0gX1NDX1BBR0VTSVpFCi1fU0NfWE9QRU5fVkVSU0lPTiA9IDEyCi1fU0NfTkFDTFNfTUFYID0gMTMKLV9TQ19OUFJPQ0VTU09SU19DT05GID0gMTQKLV9TQ19OUFJPQ0VTU09SU19PTkxOID0gMTUKLV9TQ19OUFJPQ0VTU0VTID0gMzkKLV9TQ19UT1RBTF9NRU1PUlkgPSA0MAotX1NDX1VTRUFCTEVfTUVNT1JZID0gNDEKLV9TQ19HRU5FUkFMX01FTU9SWSA9IDQyCi1fU0NfREVESUNBVEVEX01FTU9SWSA9IDQzCi1fU0NfTkNHU19DT05GID0gNDQKLV9TQ19OQ0dTX09OTE4gPSA0NQotX1NDX01BWF9DUFVTX1BFUl9DRyA9IDQ2Ci1fU0NfQ0dfU0lNUExFX0lNUEwgPSA0NwotX1NDX0NBQ0hFX0xJTkUgPSA0OAotX1NDX1NZU1RFTV9JRCA9IDQ5Ci1fU0NfVEhSRUFEUyA9IDUxCi1fU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSID0gNTIKLV9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUgPSA1MwotX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMgPSA1NAotX1NDX1RIUkVBRF9LRVlTX01BWCA9IDU1Ci1fU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSA1NgotX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQgPSA1NwotX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgPSA1OAotX1NDX1RIUkVBRF9TVEFDS19NSU4gPSA1OQotX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCA9IDYwCi1fU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TID0gNjEKLV9TQ19USFJFQURfVEhSRUFEU19NQVggPSA2MgotX1NDX0tFUk5FTF9WTSA9IDYzCi1fU0NfVFpOQU1FX01BWCA9IDMyMAotX1NDX1NUUkVBTV9NQVggPSAzMjEKLV9TQ19YT1BFTl9DUllQVCA9IDMyMwotX1NDX1hPUEVOX0VOSF9JMThOID0gMzI0Ci1fU0NfWE9QRU5fU0hNID0gMzI1Ci1fU0NfWE9QRU5fWENVX1ZFUlNJT04gPSAzMjcKLV9TQ19BRVNfT1NfVkVSU0lPTiA9IDMzMAotX1NDX0FURVhJVF9NQVggPSAzMzEKLV9TQ18yX0NfQklORCA9IDM1MAotX1NDXzJfQ19ERVYgPSAzNTEKLV9TQ18yX0NfVkVSU0lPTiA9IDM1MgotX1NDXzJfQ0hBUl9URVJNID0gMzUzCi1fU0NfMl9GT1JUX0RFViA9IDM1NAotX1NDXzJfRk9SVF9SVU4gPSAzNTUKLV9TQ18yX0xPQ0FMRURFRiA9IDM1NgotX1NDXzJfU1dfREVWID0gMzU3Ci1fU0NfMl9VUEUgPSAzNTgKLV9TQ18yX1ZFUlNJT04gPSAzNTkKLV9TQ19CQ19CQVNFX01BWCA9IDM3MAotX1NDX0JDX0RJTV9NQVggPSAzNzEKLV9TQ19CQ19TQ0FMRV9NQVggPSAzNzIKLV9TQ19CQ19TVFJJTkdfTUFYID0gMzczCi1fU0NfQ09MTF9XRUlHSFRTX01BWCA9IDM4MAotX1NDX0VYUFJfTkVTVF9NQVggPSAzODEKLV9TQ19MSU5FX01BWCA9IDM4MgotX1NDX1JFX0RVUF9NQVggPSAzODMKLV9TQ19JT1ZfTUFYID0gMzkwCi1fU0NfTlBST0NfQ09ORiA9IDM5MQotX1NDX05QUk9DX09OTE4gPSAzOTIKLV9TQ19YT1BFTl9VTklYID0gNDAwCi1fU0NfU0VNQVBIT1JFUyA9IDQ0MAotX0NTX1BBVEggPSAxCi1fX09fQ1NfSE9TVE5BTUUgPSAyCi1fQ1NfUkVMRUFTRSA9IDMKLV9DU19WRVJTSU9OID0gNAotX19PX0NTX01BQ0hJTkUgPSA1Ci1fX09fQ1NfQVJDSElURUNUVVJFID0gNgotX0NTX0hXX1NFUklBTCA9IDcKLV9fT19DU19IV19QUk9WSURFUiA9IDgKLV9DU19TUlBDX0RPTUFJTiA9IDkKLV9DU19JTklUVEFCX05BTUUgPSAxMAotX19PX0NTX1NZU05BTUUgPSAxMQotX0NTX0xGU19DRkxBR1MgPSAyMAotX0NTX0xGU19MREZMQUdTID0gMjEKLV9DU19MRlNfTElCUyA9IDIyCi1fQ1NfTEZTX0xJTlRGTEFHUyA9IDIzCi1fQ1NfTEZTNjRfQ0ZMQUdTID0gMjQKLV9DU19MRlM2NF9MREZMQUdTID0gMjUKLV9DU19MRlM2NF9MSUJTID0gMjYKLV9DU19MRlM2NF9MSU5URkxBR1MgPSAyNwotX0NTX0FSQ0hJVEVDVFVSRSA9IDEwMAotX0NTX0JVU1RZUEVTID0gMTAxCi1fQ1NfSE9TVE5BTUUgPSAxMDIKLV9DU19IV19QUk9WSURFUiA9IDEwMwotX0NTX0tFUk5FTF9TVEFNUCA9IDEwNAotX0NTX01BQ0hJTkUgPSAxMDUKLV9DU19PU19CQVNFID0gMTA2Ci1fQ1NfT1NfUFJPVklERVIgPSAxMDcKLV9DU19TWVNOQU1FID0gMTA4Ci1fQ1NfVVNFUl9MSU1JVCA9IDEwOQotX1BDX0xJTktfTUFYID0gMQotX1BDX01BWF9DQU5PTiA9IDIKLV9QQ19NQVhfSU5QVVQgPSAzCi1fUENfTkFNRV9NQVggPSA0Ci1fUENfUEFUSF9NQVggPSA1Ci1fUENfUElQRV9CVUYgPSA2Ci1fUENfTk9fVFJVTkMgPSA3Ci1fUENfVkRJU0FCTEUgPSA4Ci1fUENfQ0hPV05fUkVTVFJJQ1RFRCA9IDkKLV9QQ19GSUxFU0laRUJJVFMgPSAxMAotX1BPU0lYX1ZFUlNJT04gPSAxOTkwMDkKLV9YT1BFTl9WRVJTSU9OID0gNAotR0ZfUEFUSCA9ICIvZXRjL2dyb3VwIgotUEZfUEFUSCA9ICIvZXRjL3Bhc3N3ZCIKLUZfVUxPQ0sgPSAwCi1GX0xPQ0sgPSAxCi1GX1RMT0NLID0gMgotRl9URVNUID0gMwotX1BPU0lYX0pPQl9DT05UUk9MID0gMQotX1BPU0lYX1NBVkVEX0lEUyA9IDEKLV9QT1NJWF9WRElTQUJMRSA9IDAKLU5VTEwgPSAwCi1TVERJTl9GSUxFTk8gPSAwCi1TVERPVVRfRklMRU5PID0gMQotU1RERVJSX0ZJTEVOTyA9IDIKLV9YT1BFTl9VTklYID0gMQotX1hPUEVOX0VOSF9JMThOID0gMQotX1hPUEVOX1hQRzQgPSAxCi1fUE9TSVgyX0NfVkVSU0lPTiA9IDE5OTIwOQotX1BPU0lYMl9WRVJTSU9OID0gMTk5MjA5Ci1fWE9QRU5fWENVX1ZFUlNJT04gPSA0Ci1fUE9TSVhfU0VNQVBIT1JFUyA9IDEKLV9QT1NJWF9USFJFQURTID0gMQotX1BPU0lYX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDEKLV9QT1NJWF9USFJFQURfQVRUUl9TVEFDS1NJWkUgPSAxCi1fUE9TSVhfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSAxCi1fUE9TSVhfVEhSRUFEX1BST0NFU1NfU0hBUkVEID0gMQotX1BPU0lYX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUyA9IDEKLV9QT1NJWDJfQ19CSU5EID0gMQotX1BPU0lYMl9DSEFSX1RFUk0gPSAxCi1fUE9TSVgyX0ZPUlRfUlVOID0gMQotX1BPU0lYMl9MT0NBTEVERUYgPSAxCi1fUE9TSVgyX1VQRSA9IDEKLV9MRlNfQVNZTkNIUk9OT1VTX0lPID0gMQotX0xGU19MQVJHRUZJTEUgPSAxCi1fTEZTNjRfQVNZTkNIUk9OT1VTX0lPID0gMQotX0xGUzY0X0xBUkdFRklMRSA9IDEKLV9MRlM2NF9TVERJTyA9IDEKLUZNTkFNRVNaID0gOAotU05EWkVSTyA9IDB4MDAxCi1TTkRQSVBFID0gMHgwMDIKLVJOT1JNID0gMHgwMDAKLVJNU0dEID0gMHgwMDEKLVJNU0dOID0gMHgwMDIKLVJNT0RFTUFTSyA9IDB4MDAzCi1SUFJPVERBVCA9IDB4MDA0Ci1SUFJPVERJUyA9IDB4MDA4Ci1SUFJPVE5PUk0gPSAweDAxMAotUlBST1RNQVNLID0gMHgwMWMKLUZMVVNIUiA9IDB4MDEKLUZMVVNIVyA9IDB4MDIKLUZMVVNIUlcgPSAweDAzCi1GTFVTSEJBTkQgPSAweDA0Ci1TX0lOUFVUID0gMHgwMDAxCi1TX0hJUFJJID0gMHgwMDAyCi1TX09VVFBVVCA9IDB4MDAwNAotU19NU0cgPSAweDAwMDgKLVNfRVJST1IgPSAweDAwMTAKLVNfSEFOR1VQID0gMHgwMDIwCi1TX1JETk9STSA9IDB4MDA0MAotU19XUk5PUk0gPSBTX09VVFBVVAotU19SREJBTkQgPSAweDAwODAKLVNfV1JCQU5EID0gMHgwMTAwCi1TX0JBTkRVUkcgPSAweDAyMDAKLVJTX0hJUFJJID0gMHgwMQotTVNHX0hJUFJJID0gMHgwMQotTVNHX0FOWSA9IDB4MDIKLU1TR19CQU5EID0gMHgwNAotTVNHX0RJU0NBUkQgPSAweDA4Ci1NU0dfUEVFS0lPQ1RMID0gMHgxMAotTU9SRUNUTCA9IDEKLU1PUkVEQVRBID0gMgotTVVYSURfQUxMID0gKC0xKQotQU5ZTUFSSyA9IDB4MDEKLUxBU1RNQVJLID0gMHgwMgotU1RSID0gKG9yZCgnUycpPDw4KQotSV9OUkVBRCA9IChTVFJ8MG8xKQotSV9QVVNIID0gKFNUUnwwbzIpCi1JX1BPUCA9IChTVFJ8MG8zKQotSV9MT09LID0gKFNUUnwwbzQpCi1JX0ZMVVNIID0gKFNUUnwwbzUpCi1JX1NSRE9QVCA9IChTVFJ8MG82KQotSV9HUkRPUFQgPSAoU1RSfDBvNykKLUlfU1RSID0gKFNUUnwwbzEwKQotSV9TRVRTSUcgPSAoU1RSfDBvMTEpCi1JX0dFVFNJRyA9IChTVFJ8MG8xMikKLUlfRklORCA9IChTVFJ8MG8xMykKLUlfTElOSyA9IChTVFJ8MG8xNCkKLUlfVU5MSU5LID0gKFNUUnwwbzE1KQotSV9QRUVLID0gKFNUUnwwbzE3KQotSV9GRElOU0VSVCA9IChTVFJ8MG8yMCkKLUlfU0VOREZEID0gKFNUUnwwbzIxKQotSV9SRUNWRkQgPSAoU1RSfDBvMjIpCi1JX0VfUkVDVkZEID0gKFNUUnwwbzE2KQotSV9SRUNWRkQgPSAoU1RSfDBvMTYpCi1JX1JFQ1ZGRCA9IChTVFJ8MG8yMikKLUlfU1dST1BUID0gKFNUUnwwbzIzKQotSV9HV1JPUFQgPSAoU1RSfDBvMjQpCi1JX0xJU1QgPSAoU1RSfDBvMjUpCi1JX1BMSU5LID0gKFNUUnwwbzI2KQotSV9QVU5MSU5LID0gKFNUUnwwbzI3KQotSV9GTFVTSEJBTkQgPSAoU1RSfDBvMzQpCi1JX0NLQkFORCA9IChTVFJ8MG8zNSkKLUlfR0VUQkFORCA9IChTVFJ8MG8zNikKLUlfQVRNQVJLID0gKFNUUnwwbzM3KQotSV9TRVRDTFRJTUUgPSAoU1RSfDBvNDApCi1JX0dFVENMVElNRSA9IChTVFJ8MG80MSkKLUlfQ0FOUFVUID0gKFNUUnwwbzQyKQotSV9TX1JFQ1ZGRCA9IChTVFJ8MG80MykKLUlfU1RBVFMgPSAoU1RSfDBvNDQpCi1JX0JJR1BJUEUgPSAoU1RSfDBvNDUpCi1JX0dFVFRQID0gKFNUUnwwbzQ2KQotSU5GVElNID0gLTEKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXVuaXh3YXJlNy9yZWdlbiBiL0xpYi9wbGF0LXVuaXh3YXJlNy9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjg5OThhNy4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC11bml4d2FyZTcvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSMhIC9iaW4vc2gKLWNhc2UgYHVuYW1lIC1zcmAgaW4KLVVuaXhXYXJlKikJOzsKLSopCWVjaG8gUHJvYmFibHkgbm90IG9uIGEgVW5peFdhcmUgc3lzdGVtIDE+JjIKLQlleGl0IDE7OwotZXNhYwotc2V0IC12Ci1oMnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotaDJweSAvdXNyL2luY2x1ZGUvc3lzL3N0cm9wdHMuaApkaWZmIC0tZ2l0IGEvTGliL3BsYXRmb3JtLnB5IGIvTGliL3BsYXRmb3JtLnB5CmluZGV4IDNlNzI2YTcuLmU0OGFkMGIgMTAwNzU1Ci0tLSBhL0xpYi9wbGF0Zm9ybS5weQorKysgYi9MaWIvcGxhdGZvcm0ucHkKQEAgLTEzLDcgKzEzLDYgQEAKICMgICAgUHl0aG9uIGJ1ZyB0cmFja2VyIChodHRwOi8vYnVncy5weXRob24ub3JnKSBhbmQgYXNzaWduIHRoZW0gdG8gImxlbWJ1cmciLgogIwogIyAgICBTdGlsbCBuZWVkZWQ6Ci0jICAgICogbW9yZSBzdXBwb3J0IGZvciBXaW5DRQogIyAgICAqIHN1cHBvcnQgZm9yIE1TLURPUyAoUHl0aG9uRFggPykKICMgICAgKiBzdXBwb3J0IGZvciBBbWlnYSBhbmQgb3RoZXIgc3RpbGwgdW5zdXBwb3J0ZWQgcGxhdGZvcm1zIHJ1bm5pbmcgUHl0aG9uCiAjICAgICogc3VwcG9ydCBmb3IgYWRkaXRpb25hbCBMaW51eCBkaXN0cmlidXRpb25zCkBAIC0yNTIsMTMgKzI1MSwxMyBAQAogCiBfcmVsZWFzZV9maWxlbmFtZSA9IHJlLmNvbXBpbGUocicoXHcrKVstX10ocmVsZWFzZXx2ZXJzaW9uKScsIHJlLkFTQ0lJKQogX2xzYl9yZWxlYXNlX3ZlcnNpb24gPSByZS5jb21waWxlKHInKC4rKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZWxlYXNlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhbXGQuXSspJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW14oXSooPzpcKCguKylcKSk/JywgcmUuQVNDSUkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicgcmVsZWFzZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicoW1xkLl0rKScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1teKF0qKD86XCgoLispXCkpPycsIHJlLkFTQ0lJKQogX3JlbGVhc2VfdmVyc2lvbiA9IHJlLmNvbXBpbGUocicoW14wLTldKyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyg/OiByZWxlYXNlICk/JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoW1xkLl0rKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW14oXSooPzpcKCguKylcKSk/JywgcmUuQVNDSUkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyg/OiByZWxlYXNlICk/JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicoW1xkLl0rKScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInW14oXSooPzpcKCguKylcKSk/JywgcmUuQVNDSUkpCiAKICMgU2VlIGFsc28gaHR0cDovL3d3dy5ub3ZlbGwuY29tL2Nvb2xzb2x1dGlvbnMvZmVhdHVyZS8xMTI1MS5odG1sCiAjIGFuZCBodHRwOi8vbGludXhtYWZpYS5jb20vZmFxL0FkbWluL3JlbGVhc2UtZmlsZXMuaHRtbApAQCAtNDA4LDggKzQwNyw4IEBACiAgICAgcmV0dXJuIHZlcnNpb24KIAogX3Zlcl9vdXRwdXQgPSByZS5jb21waWxlKHInKD86KFtcdyBdKykgKFtcdy5dKykgJwotICAgICAgICAgICAgICAgICAgICAgICAgICcuKicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXFsuKiAoW1xkLl0rKVxdKScpCisgICAgICAgICAgICAgICAgICAgICAgICAgcicuKicKKyAgICAgICAgICAgICAgICAgICAgICAgICByJ1xbLiogKFtcZC5dKylcXSknKQogCiAjIEV4YW1wbGVzIG9mIFZFUiBjb21tYW5kIG91dHB1dDoKICMKQEAgLTUwOSw3ICs1MDgsNyBAQAogICAgICAgICBmcm9tIF93aW5yZWcgaW1wb3J0IE9wZW5LZXlFeCwgUXVlcnlWYWx1ZUV4LCBDbG9zZUtleSwgSEtFWV9MT0NBTF9NQUNISU5FCiAKICAgICB3aW52ZXIgPSBnZXR3aW5kb3dzdmVyc2lvbigpCi0gICAgbWFqLCBtaW4sIGJ1aWxkID0gd2ludmVyLl9wbGF0Zm9ybV92ZXJzaW9uIG9yIHdpbnZlcls6M10KKyAgICBtYWosIG1pbiwgYnVpbGQgPSB3aW52ZXIucGxhdGZvcm1fdmVyc2lvbiBvciB3aW52ZXJbOjNdCiAgICAgdmVyc2lvbiA9ICd7MH0uezF9LnsyfScuZm9ybWF0KG1haiwgbWluLCBidWlsZCkKIAogICAgIHJlbGVhc2UgPSAoX1dJTjMyX0NMSUVOVF9SRUxFQVNFUy5nZXQoKG1haiwgbWluKSkgb3IKQEAgLTEwOTUsMjIgKzEwOTQsMjIgQEAKIAogX2lyb25weXRob25fc3lzX3ZlcnNpb25fcGFyc2VyID0gcmUuY29tcGlsZSgKICAgICByJ0lyb25QeXRob25ccyonCi0gICAgJyhbXGRcLl0rKScKLSAgICAnKD86IFwoKFtcZFwuXSspXCkpPycKLSAgICAnIG9uICguTkVUIFtcZFwuXSspJywgcmUuQVNDSUkpCisgICAgcicoW1xkXC5dKyknCisgICAgcicoPzogXCgoW1xkXC5dKylcKSk/JworICAgIHInIG9uICguTkVUIFtcZFwuXSspJywgcmUuQVNDSUkpCiAKICMgSXJvblB5dGhvbiBjb3ZlcmluZyAyLjYgYW5kIDIuNwogX2lyb25weXRob24yNl9zeXNfdmVyc2lvbl9wYXJzZXIgPSByZS5jb21waWxlKAogICAgIHInKFtcZC5dKylccyonCi0gICAgJ1woSXJvblB5dGhvblxzKicKLSAgICAnW1xkLl0rXHMqJwotICAgICdcKChbXGQuXSspXCkgb24gKFtcdy5dKyBbXGQuXSsoPzogXChcZCstYml0XCkpPylcKScKKyAgICByJ1woSXJvblB5dGhvblxzKicKKyAgICByJ1tcZC5dK1xzKicKKyAgICByJ1woKFtcZC5dKylcKSBvbiAoW1x3Ll0rIFtcZC5dKyg/OiBcKFxkKy1iaXRcKSk/KVwpJwogKQogCiBfcHlweV9zeXNfdmVyc2lvbl9wYXJzZXIgPSByZS5jb21waWxlKAogICAgIHInKFtcdy4rXSspXHMqJwotICAgICdcKCM/KFteLF0rKSxccyooW1x3IF0rKSxccyooW1x3IDpdKylcKVxzKicKLSAgICAnXFtQeVB5IFteXF1dK1xdPycpCisgICAgcidcKCM/KFteLF0rKSxccyooW1x3IF0rKSxccyooW1x3IDpdKylcKVxzKicKKyAgICByJ1xbUHlQeSBbXlxdXStcXT8nKQogCiBfc3lzX3ZlcnNpb25fY2FjaGUgPSB7fQogCkBAIC0xMzQ1LDcgKzEzNDQsNyBAQAogICAgICAgICAgICAgIyBzZWUgaXNzdWUgIzEzMjIgZm9yIG1vcmUgaW5mb3JtYXRpb24KICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAogICAgICAgICAgICAgICAgICdpZ25vcmUnLAotICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgcidkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCiAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCiAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xpYi9wbGlzdGxpYi5weSBiL0xpYi9wbGlzdGxpYi5weQppbmRleCBiNjY2MzljLi40ZjM2MGYzIDEwMDY0NAotLS0gYS9MaWIvcGxpc3RsaWIucHkKKysrIGIvTGliL3BsaXN0bGliLnB5CkBAIC00Nyw3ICs0Nyw3IEBACiAiIiIKIF9fYWxsX18gPSBbCiAgICAgInJlYWRQbGlzdCIsICJ3cml0ZVBsaXN0IiwgInJlYWRQbGlzdEZyb21CeXRlcyIsICJ3cml0ZVBsaXN0VG9CeXRlcyIsCi0gICAgIlBsaXN0IiwgIkRhdGEiLCAiRGljdCIsICJGTVRfWE1MIiwgIkZNVF9CSU5BUlkiLAorICAgICJQbGlzdCIsICJEYXRhIiwgIkRpY3QiLCAiSW52YWxpZEZpbGVFeGNlcHRpb24iLCAiRk1UX1hNTCIsICJGTVRfQklOQVJZIiwKICAgICAibG9hZCIsICJkdW1wIiwgImxvYWRzIiwgImR1bXBzIgogXQogCmRpZmYgLS1naXQgYS9MaWIvcG9wbGliLnB5IGIvTGliL3BvcGxpYi5weQppbmRleCBmNjcyMzkwLi5jYWU2OTUwIDEwMDY0NAotLS0gYS9MaWIvcG9wbGliLnB5CisrKyBiL0xpYi9wb3BsaWIucHkKQEAgLTQzMSw2ICs0MzEsMTAgQEAKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvcG9zaXhwYXRoLnB5IGIvTGliL3Bvc2l4cGF0aC5weQppbmRleCBkOWYzZjk5Li42ZGJkYWIyIDEwMDY0NAotLS0gYS9MaWIvcG9zaXhwYXRoLnB5CisrKyBiL0xpYi9wb3NpeHBhdGgucHkKQEAgLTQ5LDYgKzQ5LDcgQEAKIAogZGVmIG5vcm1jYXNlKHMpOgogICAgICIiIk5vcm1hbGl6ZSBjYXNlIG9mIHBhdGhuYW1lLiAgSGFzIG5vIGVmZmVjdCB1bmRlciBQb3NpeCIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCAoYnl0ZXMsIHN0cikpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5vcm1jYXNlKCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsICIKICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJ3t9JyIuZm9ybWF0KHMuX19jbGFzc19fLl9fbmFtZV9fKSkKQEAgLTYwLDYgKzYxLDcgQEAKIAogZGVmIGlzYWJzKHMpOgogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYWJzb2x1dGUiIiIKKyAgICBzID0gb3MuZnNwYXRoKHMpCiAgICAgc2VwID0gX2dldF9zZXAocykKICAgICByZXR1cm4gcy5zdGFydHN3aXRoKHNlcCkKIApAQCAtNzMsMTIgKzc1LDEzIEBACiAgICAgSWYgYW55IGNvbXBvbmVudCBpcyBhbiBhYnNvbHV0ZSBwYXRoLCBhbGwgcHJldmlvdXMgcGF0aCBjb21wb25lbnRzCiAgICAgd2lsbCBiZSBkaXNjYXJkZWQuICBBbiBlbXB0eSBsYXN0IHBhcnQgd2lsbCByZXN1bHQgaW4gYSBwYXRoIHRoYXQKICAgICBlbmRzIHdpdGggYSBzZXBhcmF0b3IuIiIiCisgICAgYSA9IG9zLmZzcGF0aChhKQogICAgIHNlcCA9IF9nZXRfc2VwKGEpCiAgICAgcGF0aCA9IGEKICAgICB0cnk6CiAgICAgICAgIGlmIG5vdCBwOgogICAgICAgICAgICAgcGF0aFs6MF0gKyBzZXAgICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgotICAgICAgICBmb3IgYiBpbiBwOgorICAgICAgICBmb3IgYiBpbiBtYXAob3MuZnNwYXRoLCBwKToKICAgICAgICAgICAgIGlmIGIuc3RhcnRzd2l0aChzZXApOgogICAgICAgICAgICAgICAgIHBhdGggPSBiCiAgICAgICAgICAgICBlbGlmIG5vdCBwYXRoIG9yIHBhdGguZW5kc3dpdGgoc2VwKToKQEAgLTk5LDYgKzEwMiw3IEBACiBkZWYgc3BsaXQocCk6CiAgICAgIiIiU3BsaXQgYSBwYXRobmFtZS4gIFJldHVybnMgdHVwbGUgIihoZWFkLCB0YWlsKSIgd2hlcmUgInRhaWwiIGlzCiAgICAgZXZlcnl0aGluZyBhZnRlciB0aGUgZmluYWwgc2xhc2guICBFaXRoZXIgcGFydCBtYXkgYmUgZW1wdHkuIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcCA9IF9nZXRfc2VwKHApCiAgICAgaSA9IHAucmZpbmQoc2VwKSArIDEKICAgICBoZWFkLCB0YWlsID0gcFs6aV0sIHBbaTpdCkBAIC0xMTMsNiArMTE3LDcgQEAKICMgSXQgaXMgYWx3YXlzIHRydWUgdGhhdCByb290ICsgZXh0ID09IHAuCiAKIGRlZiBzcGxpdGV4dChwKToKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInLycKICAgICAgICAgZXh0c2VwID0gYicuJwpAQCAtMTI4LDYgKzEzMyw3IEBACiBkZWYgc3BsaXRkcml2ZShwKToKICAgICAiIiJTcGxpdCBhIHBhdGhuYW1lIGludG8gZHJpdmUgYW5kIHBhdGguIE9uIFBvc2l4LCBkcml2ZSBpcyBhbHdheXMKICAgICBlbXB0eS4iIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgcmV0dXJuIHBbOjBdLCBwCiAKIApAQCAtMTM1LDYgKzE0MSw3IEBACiAKIGRlZiBiYXNlbmFtZShwKToKICAgICAiIiJSZXR1cm5zIHRoZSBmaW5hbCBjb21wb25lbnQgb2YgYSBwYXRobmFtZSIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBzZXAgPSBfZ2V0X3NlcChwKQogICAgIGkgPSBwLnJmaW5kKHNlcCkgKyAxCiAgICAgcmV0dXJuIHBbaTpdCkBAIC0xNDQsNiArMTUxLDcgQEAKIAogZGVmIGRpcm5hbWUocCk6CiAgICAgIiIiUmV0dXJucyB0aGUgZGlyZWN0b3J5IGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcCA9IF9nZXRfc2VwKHApCiAgICAgaSA9IHAucmZpbmQoc2VwKSArIDEKICAgICBoZWFkID0gcFs6aV0KQEAgLTIyMiw2ICsyMzAsNyBAQAogZGVmIGV4cGFuZHVzZXIocGF0aCk6CiAgICAgIiIiRXhwYW5kIH4gYW5kIH51c2VyIGNvbnN0cnVjdGlvbnMuICBJZiB1c2VyIG9yICRIT01FIGlzIHVua25vd24sCiAgICAgZG8gbm90aGluZy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHRpbGRlID0gYid+JwogICAgIGVsc2U6CkBAIC0yNjcsNiArMjc2LDcgQEAKIGRlZiBleHBhbmR2YXJzKHBhdGgpOgogICAgICIiIkV4cGFuZCBzaGVsbCB2YXJpYWJsZXMgb2YgZm9ybSAkdmFyIGFuZCAke3Zhcn0uICBVbmtub3duIHZhcmlhYmxlcwogICAgIGFyZSBsZWZ0IHVuY2hhbmdlZC4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgZ2xvYmFsIF92YXJwcm9nLCBfdmFycHJvZ2IKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgaWYgYickJyBub3QgaW4gcGF0aDoKQEAgLTMxOCw2ICszMjgsNyBAQAogCiBkZWYgbm9ybXBhdGgocGF0aCk6CiAgICAgIiIiTm9ybWFsaXplIHBhdGgsIGVsaW1pbmF0aW5nIGRvdWJsZSBzbGFzaGVzLCBldGMuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJy8nCiAgICAgICAgIGVtcHR5ID0gYicnCkBAIC0zNTUsNiArMzY2LDcgQEAKIAogZGVmIGFic3BhdGgocGF0aCk6CiAgICAgIiIiUmV0dXJuIGFuIGFic29sdXRlIHBhdGguIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIG5vdCBpc2FicyhwYXRoKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgICAgICBjd2QgPSBvcy5nZXRjd2RiKCkKQEAgLTM3MCw2ICszODIsNyBAQAogZGVmIHJlYWxwYXRoKGZpbGVuYW1lKToKICAgICAiIiJSZXR1cm4gdGhlIGNhbm9uaWNhbCBwYXRoIG9mIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUsIGVsaW1pbmF0aW5nIGFueQogc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgaW4gdGhlIHBhdGguIiIiCisgICAgZmlsZW5hbWUgPSBvcy5mc3BhdGgoZmlsZW5hbWUpCiAgICAgcGF0aCwgb2sgPSBfam9pbnJlYWxwYXRoKGZpbGVuYW1lWzowXSwgZmlsZW5hbWUsIHt9KQogICAgIHJldHVybiBhYnNwYXRoKHBhdGgpCiAKQEAgLTQzNCw2ICs0NDcsNyBAQAogICAgIGlmIG5vdCBwYXRoOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJubyBwYXRoIHNwZWNpZmllZCIpCiAKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIGN1cmRpciA9IGInLicKICAgICAgICAgc2VwID0gYicvJwpAQCAtNDQ1LDYgKzQ1OSw4IEBACiAKICAgICBpZiBzdGFydCBpcyBOb25lOgogICAgICAgICBzdGFydCA9IGN1cmRpcgorICAgIGVsc2U6CisgICAgICAgIHN0YXJ0ID0gb3MuZnNwYXRoKHN0YXJ0KQogCiAgICAgdHJ5OgogICAgICAgICBzdGFydF9saXN0ID0gW3ggZm9yIHggaW4gYWJzcGF0aChzdGFydCkuc3BsaXQoc2VwKSBpZiB4XQpAQCAtNDcyLDYgKzQ4OCw3IEBACiAgICAgaWYgbm90IHBhdGhzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb21tb25wYXRoKCkgYXJnIGlzIGFuIGVtcHR5IHNlcXVlbmNlJykKIAorICAgIHBhdGhzID0gdHVwbGUobWFwKG9zLmZzcGF0aCwgcGF0aHMpKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aHNbMF0sIGJ5dGVzKToKICAgICAgICAgc2VwID0gYicvJwogICAgICAgICBjdXJkaXIgPSBiJy4nCmRpZmYgLS1naXQgYS9MaWIvcHljbGJyLnB5IGIvTGliL3B5Y2xici5weQppbmRleCA0ZDQwYjg3Li5kN2RiYTk3IDEwMDY0NAotLS0gYS9MaWIvcHljbGJyLnB5CisrKyBiL0xpYi9weWNsYnIucHkKQEAgLTQwLDEyICs0MCwxMCBAQAogIiIiCiAKIGltcG9ydCBpbwotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCB0b2tlbml6ZQogZnJvbSB0b2tlbiBpbXBvcnQgTkFNRSwgREVERU5ULCBPUAotZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogCiBfX2FsbF9fID0gWyJyZWFkbW9kdWxlIiwgInJlYWRtb2R1bGVfZXgiLCAiQ2xhc3MiLCAiRnVuY3Rpb24iXQogCkBAIC0zMjgsNiArMzI2LDcgQEAKIGRlZiBfbWFpbigpOgogICAgICMgTWFpbiBwcm9ncmFtIGZvciB0ZXN0aW5nLgogICAgIGltcG9ydCBvcworICAgIGZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKICAgICBtb2QgPSBzeXMuYXJndlsxXQogICAgIGlmIG9zLnBhdGguZXhpc3RzKG1vZCk6CiAgICAgICAgIHBhdGggPSBbb3MucGF0aC5kaXJuYW1lKG1vZCldCmRpZmYgLS1naXQgYS9MaWIvcHlkb2MucHkgYi9MaWIvcHlkb2MucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAwZDBkMGFiLi4zOWRiMzkxCi0tLSBhL0xpYi9weWRvYy5weQorKysgYi9MaWIvcHlkb2MucHkKQEAgLTIwOSw2ICsyMDksMTggQEAKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKG5hbWUsIGtpbmQsIGNscywgdmFsdWUpKQogICAgIHJldHVybiByZXN1bHRzCiAKK2RlZiBzb3J0X2F0dHJpYnV0ZXMoYXR0cnMsIG9iamVjdCk6CisgICAgJ1NvcnQgdGhlIGF0dHJzIGxpc3QgaW4tcGxhY2UgYnkgX2ZpZWxkcyBhbmQgdGhlbiBhbHBoYWJldGljYWxseSBieSBuYW1lJworICAgICMgVGhpcyBhbGxvd3MgZGF0YSBkZXNjcmlwdG9ycyB0byBiZSBvcmRlcmVkIGFjY29yZGluZworICAgICMgdG8gYSBfZmllbGRzIGF0dHJpYnV0ZSBpZiBwcmVzZW50LgorICAgIGZpZWxkcyA9IGdldGF0dHIob2JqZWN0LCAnX2ZpZWxkcycsIFtdKQorICAgIHRyeToKKyAgICAgICAgZmllbGRfb3JkZXIgPSB7bmFtZSA6IGktbGVuKGZpZWxkcykgZm9yIChpLCBuYW1lKSBpbiBlbnVtZXJhdGUoZmllbGRzKX0KKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICBmaWVsZF9vcmRlciA9IHt9CisgICAga2V5ZnVuYyA9IGxhbWJkYSBhdHRyOiAoZmllbGRfb3JkZXIuZ2V0KGF0dHJbMF0sIDApLCBhdHRyWzBdKQorICAgIGF0dHJzLnNvcnQoa2V5PWtleWZ1bmMpCisKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbW9kdWxlIG1hbmlwdWxhdGlvbgogCiBkZWYgaXNwYWNrYWdlKHBhdGgpOgpAQCAtMzM4LDcgKzM1MCw3IEBACiAgICAgICAgIGVsaWYgZXhjIGlzIFN5bnRheEVycm9yOgogICAgICAgICAgICAgIyBBIFN5bnRheEVycm9yIG9jY3VycmVkIGJlZm9yZSB3ZSBjb3VsZCBleGVjdXRlIHRoZSBtb2R1bGUuCiAgICAgICAgICAgICByYWlzZSBFcnJvckR1cmluZ0ltcG9ydCh2YWx1ZS5maWxlbmFtZSwgaW5mbykKLSAgICAgICAgZWxpZiBleGMgaXMgSW1wb3J0RXJyb3IgYW5kIHZhbHVlLm5hbWUgPT0gcGF0aDoKKyAgICAgICAgZWxpZiBpc3N1YmNsYXNzKGV4YywgSW1wb3J0RXJyb3IpIGFuZCB2YWx1ZS5uYW1lID09IHBhdGg6CiAgICAgICAgICAgICAjIE5vIHN1Y2ggbW9kdWxlIGluIHRoZSBwYXRoLgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgZWxzZToKQEAgLTg2OCw4ICs4ODAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QuX19tb2R1bGVfXykKICAgICAgICAgICAgIHRhZyArPSAnOjxicj5cbicKIAotICAgICAgICAgICAgIyBTb3J0IGF0dHJzIGJ5IG5hbWUuCi0gICAgICAgICAgICBhdHRycy5zb3J0KGtleT1sYW1iZGEgdDogdFswXSkKKyAgICAgICAgICAgIHNvcnRfYXR0cmlidXRlcyhhdHRycywgb2JqZWN0KQogCiAgICAgICAgICAgICAjIFB1bXAgb3V0IHRoZSBhdHRycywgc2VncmVnYXRlZCBieSBraW5kLgogICAgICAgICAgICAgYXR0cnMgPSBzcGlsbCgnTWV0aG9kcyAlcycgJSB0YWcsIGF0dHJzLApAQCAtMTI4Nyw4ICsxMjk4LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdGFnID0gImluaGVyaXRlZCBmcm9tICVzIiAlIGNsYXNzbmFtZSh0aGlzY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QuX19tb2R1bGVfXykKLSAgICAgICAgICAgICMgU29ydCBhdHRycyBieSBuYW1lLgotICAgICAgICAgICAgYXR0cnMuc29ydCgpCisKKyAgICAgICAgICAgIHNvcnRfYXR0cmlidXRlcyhhdHRycywgb2JqZWN0KQogCiAgICAgICAgICAgICAjIFB1bXAgb3V0IHRoZSBhdHRycywgc2VncmVnYXRlZCBieSBraW5kLgogICAgICAgICAgICAgYXR0cnMgPSBzcGlsbCgiTWV0aG9kcyAlczpcbiIgJSB0YWcsIGF0dHJzLApAQCAtMTQxOCwxMyArMTQyOSwxNCBAQAogICAgICAgICByZXR1cm4gcGxhaW5wYWdlcgogICAgIGlmIG5vdCBzeXMuc3RkaW4uaXNhdHR5KCkgb3Igbm90IHN5cy5zdGRvdXQuaXNhdHR5KCk6CiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCi0gICAgaWYgJ1BBR0VSJyBpbiBvcy5lbnZpcm9uOgorICAgIHVzZV9wYWdlciA9IG9zLmVudmlyb24uZ2V0KCdNQU5QQUdFUicpIG9yIG9zLmVudmlyb24uZ2V0KCdQQUdFUicpCisgICAgaWYgdXNlX3BhZ2VyOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzogIyBwaXBlcyBjb21wbGV0ZWx5IGJyb2tlbiBpbiBXaW5kb3dzCi0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHRlbXBmaWxlcGFnZXIocGxhaW4odGV4dCksIG9zLmVudmlyb25bJ1BBR0VSJ10pCisgICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHRlbXBmaWxlcGFnZXIocGxhaW4odGV4dCksIHVzZV9wYWdlcikKICAgICAgICAgZWxpZiBvcy5lbnZpcm9uLmdldCgnVEVSTScpIGluICgnZHVtYicsICdlbWFjcycpOgotICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIocGxhaW4odGV4dCksIG9zLmVudmlyb25bJ1BBR0VSJ10pCisgICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcihwbGFpbih0ZXh0KSwgdXNlX3BhZ2VyKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHRleHQsIHVzZV9wYWdlcikKICAgICBpZiBvcy5lbnZpcm9uLmdldCgnVEVSTScpIGluICgnZHVtYicsICdlbWFjcycpOgogICAgICAgICByZXR1cm4gcGxhaW5wYWdlcgogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgpAQCAtMTkwMSwxMCArMTkxMywxMCBAQAogCiAgICAgZGVmIGludHJvKHNlbGYpOgogICAgICAgICBzZWxmLm91dHB1dC53cml0ZSgnJycKLVdlbGNvbWUgdG8gUHl0aG9uICVzJ3MgaGVscCB1dGlsaXR5IQorV2VsY29tZSB0byBQeXRob24gezB9J3MgaGVscCB1dGlsaXR5IQogCiBJZiB0aGlzIGlzIHlvdXIgZmlyc3QgdGltZSB1c2luZyBQeXRob24sIHlvdSBzaG91bGQgZGVmaW5pdGVseSBjaGVjayBvdXQKLXRoZSB0dXRvcmlhbCBvbiB0aGUgSW50ZXJuZXQgYXQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8lcy90dXRvcmlhbC8uCit0aGUgdHV0b3JpYWwgb24gdGhlIEludGVybmV0IGF0IGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvezB9L3R1dG9yaWFsLy4KIAogRW50ZXIgdGhlIG5hbWUgb2YgYW55IG1vZHVsZSwga2V5d29yZCwgb3IgdG9waWMgdG8gZ2V0IGhlbHAgb24gd3JpdGluZwogUHl0aG9uIHByb2dyYW1zIGFuZCB1c2luZyBQeXRob24gbW9kdWxlcy4gIFRvIHF1aXQgdGhpcyBoZWxwIHV0aWxpdHkgYW5kCkBAIC0xOTE0LDcgKzE5MjYsNyBAQAogIm1vZHVsZXMiLCAia2V5d29yZHMiLCAic3ltYm9scyIsIG9yICJ0b3BpY3MiLiAgRWFjaCBtb2R1bGUgYWxzbyBjb21lcwogd2l0aCBhIG9uZS1saW5lIHN1bW1hcnkgb2Ygd2hhdCBpdCBkb2VzOyB0byBsaXN0IHRoZSBtb2R1bGVzIHdob3NlIG5hbWUKIG9yIHN1bW1hcnkgY29udGFpbiBhIGdpdmVuIHN0cmluZyBzdWNoIGFzICJzcGFtIiwgdHlwZSAibW9kdWxlcyBzcGFtIi4KLScnJyAlIHR1cGxlKFtzeXMudmVyc2lvbls6M11dKjIpKQorJycnLmZvcm1hdCgnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pKQogCiAgICAgZGVmIGxpc3Qoc2VsZiwgaXRlbXMsIGNvbHVtbnM9NCwgd2lkdGg9ODApOgogICAgICAgICBpdGVtcyA9IGxpc3Qoc29ydGVkKGl0ZW1zKSkKZGlmZiAtLWdpdCBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weSBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQppbmRleCBkNmYxMzY2Li4zNTc5NDg0IDEwMDY0NAotLS0gYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKKysrIGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CkBAIC0xLDc5ICsxLDEyOTQ5IEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotIyBBdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueCBvbiBTYXQgSnVuIDI1IDE0OjA4OjQ0IDIwMTYKLXRvcGljcyA9IHsnYXNzZXJ0JzogdSdcblRoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyBhc3NlcnRpb25zXG5pbnRvIGEgcHJvZ3JhbTpcblxuICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuXG5UaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuXG5UaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuXG5UaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgcmVmZXJcbnRvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxubm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkIChjb21tYW5kXG5saW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgTm90ZVxudGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIGV4cHJlc3Npb25cbnRoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mIHRoZVxuc3RhY2sgdHJhY2UuXG5cbkFzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgYnVpbHQtaW5cbnZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKLSAnYXNzaWdubWVudCc6IHUnXG5Bc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCB0b1xubW9kaWZ5IGF0dHJpYnV0ZXMgb3IgaXRlbXMgb2YgbXV0YWJsZSBvYmplY3RzOlxuXG4gICBhc3NpZ25tZW50X3N0bXQgOjo9ICh0YXJnZXRfbGlzdCAiPSIpKyAoc3RhcnJlZF9leHByZXNzaW9uIHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbiAgIHRhcmdldCAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgICAgICAgICB8ICIoIiB0YXJnZXRfbGlzdCAiKSJcbiAgICAgICAgICAgICAgfCAiWyIgW3RhcmdldF9saXN0XSAiXSJcbiAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbiAgICAgICAgICAgICAgfCBzdWJzY3JpcHRpb25cbiAgICAgICAgICAgICAgfCBzbGljaW5nXG4gICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yXG4qYXR0cmlidXRlcmVmKiwgKnN1YnNjcmlwdGlvbiosIGFuZCAqc2xpY2luZyouKVxuXG5BbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAocmVtZW1iZXIgdGhhdFxudGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgbGF0dGVyXG55aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gZWFjaCBvZlxudGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5Bc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSB0YXJnZXRcbihsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuIGF0dHJpYnV0ZVxucmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCBtdXN0XG51bHRpbWF0ZWx5IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQgYW5kIGRlY2lkZSBhYm91dCBpdHMgdmFsaWRpdHksIGFuZFxubWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICBUaGUgcnVsZXNcbm9ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gd2l0aCB0aGVcbmRlZmluaXRpb24gb2YgdGhlIG9iamVjdCB0eXBlcyAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlXG5oaWVyYXJjaHkqKS5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCBpblxucGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzIGZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGVtcHR5OiBUaGUgb2JqZWN0IG11c3QgYWxzbyBiZSBhbiBlbXB0eVxuICBpdGVyYWJsZS5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0IGluIHBhcmVudGhlc2VzOiBUaGUgb2JqZWN0XG4gIGlzIGFzc2lnbmVkIHRvIHRoYXQgdGFyZ2V0LlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRhcmdldHMsIG9yIGFcbiAgc2luZ2xlIHRhcmdldCBpbiBzcXVhcmUgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZVxuICB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0XG4gIGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZVxuICBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbiAgKiBJZiB0aGUgdGFyZ2V0IGxpc3QgY29udGFpbnMgb25lIHRhcmdldCBwcmVmaXhlZCB3aXRoIGFuXG4gICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSBhblxuICAgIGl0ZXJhYmxlIHdpdGggYXQgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGVcbiAgICB0YXJnZXQgbGlzdCwgbWludXMgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBpdGVyYWJsZSBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlIHN0YXJyZWRcbiAgICB0YXJnZXQuICBUaGUgZmluYWwgaXRlbXMgb2YgdGhlIGl0ZXJhYmxlIGFyZSBhc3NpZ25lZCB0byB0aGVcbiAgICB0YXJnZXRzIGFmdGVyIHRoZSBzdGFycmVkIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nIGl0ZW1zXG4gICAgaW4gdGhlIGl0ZXJhYmxlIGlzIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICh0aGUgbGlzdFxuICAgIGNhbiBiZSBlbXB0eSkuXG5cbiAgKiBFbHNlOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2ZcbiAgICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlXG4gICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXNcbmZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcblxuICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgImdsb2JhbCIgb3IgIm5vbmxvY2FsIiBzdGF0ZW1lbnRcbiAgICBpbiB0aGUgY3VycmVudCBjb2RlIGJsb2NrOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZVxuICAgIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuXG4gICogT3RoZXJ3aXNlOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSBnbG9iYWxcbiAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICJub25sb2NhbCIsXG4gICAgcmVzcGVjdGl2ZWx5LlxuXG4gIFRoZSBuYW1lIGlzIHJlYm91bmQgaWYgaXQgd2FzIGFscmVhZHkgYm91bmQuICBUaGlzIG1heSBjYXVzZSB0aGVcbiAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgdG8gcmVhY2hcbiAgemVybywgY2F1c2luZyB0aGUgb2JqZWN0IHRvIGJlIGRlYWxsb2NhdGVkIGFuZCBpdHMgZGVzdHJ1Y3RvciAoaWYgaXRcbiAgaGFzIG9uZSkgdG8gYmUgY2FsbGVkLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpblxuICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiBpc1xuICByYWlzZWQuICBUaGF0IG9iamVjdCBpcyB0aGVuIGFza2VkIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgb2JqZWN0IHRvXG4gIHRoZSBnaXZlbiBhdHRyaWJ1dGU7IGlmIGl0IGNhbm5vdCBwZXJmb3JtIHRoZSBhc3NpZ25tZW50LCBpdCByYWlzZXNcbiAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgIkF0dHJpYnV0ZUVycm9yIikuXG5cbiAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlIHJlZmVyZW5jZVxuICBvY2N1cnMgb24gYm90aCBzaWRlcyBvZiB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgdGhlIFJIUyBleHByZXNzaW9uLFxuICAiYS54IiBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vIGluc3RhbmNlXG4gIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgaXMgYWx3YXlzXG4gIHNldCBhcyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGNyZWF0aW5nIGl0IGlmIG5lY2Vzc2FyeS4gIFRodXMsIHRoZVxuICB0d28gb2NjdXJyZW5jZXMgb2YgImEueCIgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZSBzYW1lXG4gIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzIGF0dHJpYnV0ZSwgdGhlXG4gIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuICBhc3NpZ25tZW50OlxuXG4gICAgIGNsYXNzIENsczpcbiAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbiAgICAgaW5zdCA9IENscygpXG4gICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54IGFzIDNcblxuICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbiAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHN1YnNjcmlwdGlvbjogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbiAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBlaXRoZXIgYSBtdXRhYmxlIHNlcXVlbmNlXG4gIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KS5cbiAgTmV4dCwgdGhlIHN1YnNjcmlwdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZC5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGEgbGlzdCksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSBzZXF1ZW5jZVwnc1xuICBsZW5ndGggaXMgYWRkZWQgdG8gaXQuICBUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZVxuICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoLCBhbmQgdGhlIHNlcXVlbmNlIGlzIGFza2VkXG4gIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgb2JqZWN0IHRvIGl0cyBpdGVtIHdpdGggdGhhdCBpbmRleC4gIElmIHRoZVxuICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gYVxuICBzdWJzY3JpcHRlZCBzZXF1ZW5jZSBjYW5ub3QgYWRkIG5ldyBpdGVtcyB0byBhIGxpc3QpLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZ1wncyBrZXkgdHlwZSxcbiAgYW5kIHRoZSBtYXBwaW5nIGlzIHRoZW4gYXNrZWQgdG8gY3JlYXRlIGEga2V5L2RhdHVtIHBhaXIgd2hpY2ggbWFwc1xuICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgcmVwbGFjZSBhblxuICBleGlzdGluZyBrZXkvdmFsdWUgcGFpciB3aXRoIHRoZSBzYW1lIGtleSB2YWx1ZSwgb3IgaW5zZXJ0IGEgbmV3XG4gIGtleS92YWx1ZSBwYWlyIChpZiBubyBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZSBleGlzdGVkKS5cblxuICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzIGNhbGxlZCB3aXRoXG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbiAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0XG4gIChzdWNoIGFzIGEgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlIG9iamVjdFxuICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBleHByZXNzaW9ucyBhcmVcbiAgZXZhbHVhdGVkLCBpbnNvZmFyIHRoZXkgYXJlIHByZXNlbnQ7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCB0aGVcbiAgc2VxdWVuY2VcJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuIElmXG4gIGVpdGhlciBib3VuZCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZVxuICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwnc1xuICBsZW5ndGgsIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgdG8gcmVwbGFjZVxuICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlIGxlbmd0aCBvZlxuICB0aGUgc2xpY2UgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLFxuICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlIHRhcmdldFxuICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZVxuc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciBleHByZXNzaW9ucywgYW5kXG5pbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgY2F1c2luZ1xubGVzcyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcy5cblxuQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHMgYmV0d2VlblxudGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSBcJ3NpbXVsdGFuZW91c1wnIChmb3JcbmV4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogdGhlXG5jb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBvY2N1ciBsZWZ0LXRvLXJpZ2h0LCBzb21ldGltZXNcbnJlc3VsdGluZyBpbiBjb25mdXNpb24uICBGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbSBwcmludHNcbiJbMCwgMl0iOlxuXG4gICB4ID0gWzAsIDFdXG4gICBpID0gMFxuICAgaSwgeFtpXSA9IDEsIDIgICAgICAgICAjIGkgaXMgdXBkYXRlZCwgdGhlbiB4W2ldIGlzIHVwZGF0ZWRcbiAgIHByaW50KHgpXG5cblNlZSBhbHNvOiAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICIqdGFyZ2V0IiBmZWF0dXJlLlxuXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdhdG9tLWlkZW50aWZpZXJzJzogdSdcbklkZW50aWZpZXJzIChOYW1lcylcbioqKioqKioqKioqKioqKioqKipcblxuQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgc2VjdGlvblxuKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyogZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiAqTmFtaW5nXG5hbmQgYmluZGluZyogZm9yIGRvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuXG5XaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgYXRvbSB5aWVsZHNcbnRoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gZXZhbHVhdGUgaXRcbnJhaXNlcyBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbi5cblxuKipQcml2YXRlIG5hbWUgbWFuZ2xpbmc6KiogV2hlbiBhbiBpZGVudGlmaWVyIHRoYXQgdGV4dHVhbGx5IG9jY3VycyBpblxuYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgY2hhcmFjdGVycyBhbmRcbmRvZXMgbm90IGVuZCBpbiB0d28gb3IgbW9yZSB1bmRlcnNjb3JlcywgaXQgaXMgY29uc2lkZXJlZCBhICpwcml2YXRlXG5uYW1lKiBvZiB0aGF0IGNsYXNzLiBQcml2YXRlIG5hbWVzIGFyZSB0cmFuc2Zvcm1lZCB0byBhIGxvbmdlciBmb3JtXG5iZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gaW5zZXJ0cyB0aGVcbmNsYXNzIG5hbWUsIHdpdGggbGVhZGluZyB1bmRlcnNjb3JlcyByZW1vdmVkIGFuZCBhIHNpbmdsZSB1bmRlcnNjb3JlXG5pbnNlcnRlZCwgaW4gZnJvbnQgb2YgdGhlIG5hbWUuICBGb3IgZXhhbXBsZSwgdGhlIGlkZW50aWZpZXIgIl9fc3BhbSJcbm9jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkICJIYW0iIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gIl9IYW1fX3NwYW0iLlxuVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZiB0aGUgc3ludGFjdGljYWwgY29udGV4dCBpbiB3aGljaFxudGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZSB0cmFuc2Zvcm1lZCBuYW1lIGlzIGV4dHJlbWVseSBsb25nXG4obG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHRydW5jYXRpb24gbWF5XG5oYXBwZW4uIElmIHRoZSBjbGFzcyBuYW1lIGNvbnNpc3RzIG9ubHkgb2YgdW5kZXJzY29yZXMsIG5vXG50cmFuc2Zvcm1hdGlvbiBpcyBkb25lLlxuJywKLSAnYXRvbS1saXRlcmFscyc6IHUiXG5MaXRlcmFsc1xuKioqKioqKipcblxuUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgbnVtZXJpY1xubGl0ZXJhbHM6XG5cbiAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBieXRlc2xpdGVyYWxcbiAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuXG5FdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlIChzdHJpbmcsXG5ieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgd2l0aCB0aGUgZ2l2ZW5cbnZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgZmxvYXRpbmcgcG9pbnRcbmFuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gKkxpdGVyYWxzKiBmb3IgZGV0YWlscy5cblxuQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSB0aGVcbm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgTXVsdGlwbGVcbmV2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgc2FtZVxub2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpIG1heSBvYnRhaW5cbnRoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS5cbiIsCi0gJ2F0dHJpYnV0ZS1hY2Nlc3MnOiB1J1xuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICJ4Lm5hbWUiKSBmb3JcbmNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlIG5hbWUuIFRoaXNcbiAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgZG9uZSBib3RoIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgdGhhdCBhdFxuICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnkgbm90XG4gICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgIl9fZ2V0YXR0cl9fKCkiLFxuICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyBtZXRob2RcbiAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluXG4gICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzc1xuICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvclxuICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsXG4gICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXhcbiAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgb2JqLm5hbWUiIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyAiX19kaWN0X18iLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgIk5vbmUiIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAiQXR0cmlidXRlRXJyb3IiXG4gICBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblRoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiBtb2R1bGUgYXNcbnNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXNcbmFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzc1xuYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlIG9mIHRoZVxuZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlIGZpcnN0XG5wb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgYXR0cmlidXRlIGZvclxudW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsIGl0XG5pcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICJhLngiIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4idHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbiJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICJhLngiLiBIb3dcbnRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICJzdXBlcihCLFxuICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSBjbGFzcyAiQSJcbiAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciB3aXRoIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGwgcmV0dXJuXG50aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSBvYmplY3RcJ3Ncbmluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiIGFuZC9vclxuIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzIG5laXRoZXIsIGl0IGlzXG5hIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgYm90aFxuIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4iX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICJfX2dldF9fKCkiXG5kZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW5cbmNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgImNsYXNzbWV0aG9kKCkiKSBhcmVcbmltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgKl9fc2xvdHNfXypcbiAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyB0aGVcbiAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciBlYWNoXG4gICBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICJBdHRyaWJ1dGVFcnJvciIuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3Nlc1xuICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzXG4gIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4gICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlXG4gIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGVcbiAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLlxuICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgYW5kICJ0dXBsZSIuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5nc1xuICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG4nLAotICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6IHUnXG5BdHRyaWJ1dGUgcmVmZXJlbmNlc1xuKioqKioqKioqKioqKioqKioqKipcblxuQW4gYXR0cmlidXRlIHJlZmVyZW5jZSBpcyBhIHByaW1hcnkgZm9sbG93ZWQgYnkgYSBwZXJpb2QgYW5kIGEgbmFtZTpcblxuICAgYXR0cmlidXRlcmVmIDo6PSBwcmltYXJ5ICIuIiBpZGVudGlmaWVyXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IG9mIGEgdHlwZSB0aGF0IHN1cHBvcnRzXG5hdHRyaWJ1dGUgcmVmZXJlbmNlcywgd2hpY2ggbW9zdCBvYmplY3RzIGRvLiAgVGhpcyBvYmplY3QgaXMgdGhlblxuYXNrZWQgdG8gcHJvZHVjZSB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXMgdGhlIGlkZW50aWZpZXIuICBUaGlzXG5wcm9kdWN0aW9uIGNhbiBiZSBjdXN0b21pemVkIGJ5IG92ZXJyaWRpbmcgdGhlICJfX2dldGF0dHJfXygpIiBtZXRob2QuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uICJBdHRyaWJ1dGVFcnJvciIgaXNcbnJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIHRoZSBvYmplY3QgcHJvZHVjZWQgaXNcbmRldGVybWluZWQgYnkgdGhlIG9iamVjdC4gIE11bHRpcGxlIGV2YWx1YXRpb25zIG9mIHRoZSBzYW1lIGF0dHJpYnV0ZVxucmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCi0gJ2F1Z2Fzc2lnbic6IHUnXG5BdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LCBvZiBhXG5iaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcblxuICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8IHN1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbiAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0IHRocmVlXG5zeW1ib2xzLilcblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2Ugbm9ybWFsXG5hc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgZXhwcmVzc2lvblxubGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgYXNzaWdubWVudFxub24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgdGFyZ2V0LlxuVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlIHJld3JpdHRlbiBhc1xuInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluIHRoZVxuYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuIHBvc3NpYmxlLFxudGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCByYXRoZXIgdGhhblxuY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgb2xkIG9iamVjdFxuaXMgbW9kaWZpZWQgaW5zdGVhZC5cblxuVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSBsZWZ0LVxuaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciBleGFtcGxlLCAiYVtpXVxuKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kIHBlcmZvcm1zXG50aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gImFbaV0iLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYmluYXJ5JzogdSdcbkJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgaGF2ZSB0aGUgY29udmVudGlvbmFsIHByaW9yaXR5XG5sZXZlbHMuICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBvcGVyYXRpb25zIGFsc28gYXBwbHkgdG8gY2VydGFpbiBub24tXG5udW1lcmljIHR5cGVzLiAgQXBhcnQgZnJvbSB0aGUgcG93ZXIgb3BlcmF0b3IsIHRoZXJlIGFyZSBvbmx5IHR3b1xubGV2ZWxzLCBvbmUgZm9yIG11bHRpcGxpY2F0aXZlIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZVxub3BlcmF0b3JzOlxuXG4gICBtX2V4cHIgOjo9IHVfZXhwciB8IG1fZXhwciAiKiIgdV9leHByIHwgbV9leHByICJAIiBtX2V4cHIgfFxuICAgICAgICAgICAgICBtX2V4cHIgIi8vIiB1X2V4cHJ8IG1fZXhwciAiLyIgdV9leHByIHxcbiAgICAgICAgICAgICAgbV9leHByICIlIiB1X2V4cHJcbiAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuXG5UaGUgIioiIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0cyBhcmd1bWVudHMuXG5UaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50IG11c3QgYmUgYW5cbmludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlXG5udW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkIHRvZ2V0aGVyLlxuSW4gdGhlIGxhdHRlciBjYXNlLCBzZXF1ZW5jZSByZXBldGl0aW9uIGlzIHBlcmZvcm1lZDsgYSBuZWdhdGl2ZVxucmVwZXRpdGlvbiBmYWN0b3IgeWllbGRzIGFuIGVtcHR5IHNlcXVlbmNlLlxuXG5UaGUgIkAiIChhdCkgb3BlcmF0b3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbWF0cml4XG5tdWx0aXBsaWNhdGlvbi4gIE5vIGJ1aWx0aW4gUHl0aG9uIHR5cGVzIGltcGxlbWVudCB0aGlzIG9wZXJhdG9yLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjUuXG5cblRoZSAiLyIgKGRpdmlzaW9uKSBhbmQgIi8vIiAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbnF1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBEaXZpc2lvbiBvZiBpbnRlZ2VycyB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uXG5cblRoZSAiJSIgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gb2ZcbnRoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgIjMuMTQlMC43IiBlcXVhbHMgIjAuMzQiIChzaW5jZSAiMy4xNCIgZXF1YWxzICI0KjAuNyArXG4wLjM0Ii4pICBUaGUgbW9kdWxvIG9wZXJhdG9yIGFsd2F5cyB5aWVsZHMgYSByZXN1bHQgd2l0aCB0aGUgc2FtZSBzaWduXG5hcyBpdHMgc2Vjb25kIG9wZXJhbmQgKG9yIHplcm8pOyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHJlc3VsdCBpc1xuc3RyaWN0bHkgc21hbGxlciB0aGFuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogInggPT0gKHgvL3kpKnkgKyAoeCV5KSIuICBGbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIGFyZSBhbHNvXG5jb25uZWN0ZWQgd2l0aCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImRpdm1vZCgpIjogImRpdm1vZCh4LCB5KSA9PVxuKHgvL3ksIHgleSkiLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlICIlIlxub3BlcmF0b3IgaXMgYWxzbyBvdmVybG9hZGVkIGJ5IHN0cmluZyBvYmplY3RzIHRvIHBlcmZvcm0gb2xkLXN0eWxlXG5zdHJpbmcgZm9ybWF0dGluZyAoYWxzbyBrbm93biBhcyBpbnRlcnBvbGF0aW9uKS4gIFRoZSBzeW50YXggZm9yXG5zdHJpbmcgZm9ybWF0dGluZyBpcyBkZXNjcmliZWQgaW4gdGhlIFB5dGhvbiBMaWJyYXJ5IFJlZmVyZW5jZSxcbnNlY3Rpb24gKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyouXG5cblRoZSBmbG9vciBkaXZpc2lvbiBvcGVyYXRvciwgdGhlIG1vZHVsbyBvcGVyYXRvciwgYW5kIHRoZSAiZGl2bW9kKCkiXG5mdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gYVxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSAiYWJzKCkiIGZ1bmN0aW9uIGlmIGFwcHJvcHJpYXRlLlxuXG5UaGUgIisiIChhZGRpdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBzdW0gb2YgaXRzIGFyZ3VtZW50cy4gIFRoZVxuYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycyBvciBib3RoIGJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZVxudHlwZS4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIG51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlXG5hbmQgdGhlbiBhZGRlZCB0b2dldGhlci4gSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2VxdWVuY2VzIGFyZVxuY29uY2F0ZW5hdGVkLlxuXG5UaGUgIi0iIChzdWJ0cmFjdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBkaWZmZXJlbmNlIG9mIGl0cyBhcmd1bWVudHMuXG5UaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLlxuJywKLSAnYml0d2lzZSc6IHUnXG5CaW5hcnkgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkVhY2ggb2YgdGhlIHRocmVlIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXMgYSBkaWZmZXJlbnQgcHJpb3JpdHkgbGV2ZWw6XG5cbiAgIGFuZF9leHByIDo6PSBzaGlmdF9leHByIHwgYW5kX2V4cHIgIiYiIHNoaWZ0X2V4cHJcbiAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuICAgb3JfZXhwciAgOjo9IHhvcl9leHByIHwgb3JfZXhwciAifCIgeG9yX2V4cHJcblxuVGhlICImIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgQU5EIG9mIGl0cyBhcmd1bWVudHMsIHdoaWNoIG11c3RcbmJlIGludGVnZXJzLlxuXG5UaGUgIl4iIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBYT1IgKGV4Y2x1c2l2ZSBPUikgb2YgaXRzXG5hcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG5cblRoZSAifCIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyBhcmd1bWVudHMsXG53aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKLSAnYmx0aW4tY29kZS1vYmplY3RzJzogdSdcbkNvZGUgT2JqZWN0c1xuKioqKioqKioqKioqXG5cbkNvZGUgb2JqZWN0cyBhcmUgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gdG8gcmVwcmVzZW50ICJwc2V1ZG8tXG5jb21waWxlZCIgZXhlY3V0YWJsZSBQeXRob24gY29kZSBzdWNoIGFzIGEgZnVuY3Rpb24gYm9keS4gVGhleSBkaWZmZXJcbmZyb20gZnVuY3Rpb24gb2JqZWN0cyBiZWNhdXNlIHRoZXkgZG9uXCd0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlaXJcbmdsb2JhbCBleGVjdXRpb24gZW52aXJvbm1lbnQuICBDb2RlIG9iamVjdHMgYXJlIHJldHVybmVkIGJ5IHRoZSBidWlsdC1cbmluICJjb21waWxlKCkiIGZ1bmN0aW9uIGFuZCBjYW4gYmUgZXh0cmFjdGVkIGZyb20gZnVuY3Rpb24gb2JqZWN0c1xudGhyb3VnaCB0aGVpciAiX19jb2RlX18iIGF0dHJpYnV0ZS4gU2VlIGFsc28gdGhlICJjb2RlIiBtb2R1bGUuXG5cbkEgY29kZSBvYmplY3QgY2FuIGJlIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCBieSBwYXNzaW5nIGl0IChpbnN0ZWFkIG9mIGFcbnNvdXJjZSBzdHJpbmcpIHRvIHRoZSAiZXhlYygpIiBvciAiZXZhbCgpIiAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5TZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiB1J1xuVGhlIEVsbGlwc2lzIE9iamVjdFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSAqU2xpY2luZ3MqKS4gIEl0IHN1cHBvcnRzXG5ubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBlbGxpcHNpcyBvYmplY3QsIG5hbWVkXG4iRWxsaXBzaXMiIChhIGJ1aWx0LWluIG5hbWUpLiAgInR5cGUoRWxsaXBzaXMpKCkiIHByb2R1Y2VzIHRoZVxuIkVsbGlwc2lzIiBzaW5nbGV0b24uXG5cbkl0IGlzIHdyaXR0ZW4gYXMgIkVsbGlwc2lzIiBvciAiLi4uIi5cbicsCi0gJ2JsdGluLW51bGwtb2JqZWN0JzogdSdcblRoZSBOdWxsIE9iamVjdFxuKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVybiBhXG52YWx1ZS4gIEl0IHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIG51bGxcbm9iamVjdCwgbmFtZWQgIk5vbmUiIChhIGJ1aWx0LWluIG5hbWUpLiAgInR5cGUoTm9uZSkoKSIgcHJvZHVjZXMgdGhlXG5zYW1lIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyAiTm9uZSIuXG4nLAotICdibHRpbi10eXBlLW9iamVjdHMnOiB1J1xuVHlwZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuVHlwZSBvYmplY3RzIHJlcHJlc2VudCB0aGUgdmFyaW91cyBvYmplY3QgdHlwZXMuICBBbiBvYmplY3RcJ3MgdHlwZSBpc1xuYWNjZXNzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJ0eXBlKCkiLiAgVGhlcmUgYXJlIG5vIHNwZWNpYWxcbm9wZXJhdGlvbnMgb24gdHlwZXMuICBUaGUgc3RhbmRhcmQgbW9kdWxlICJ0eXBlcyIgZGVmaW5lcyBuYW1lcyBmb3JcbmFsbCBzdGFuZGFyZCBidWlsdC1pbiB0eXBlcy5cblxuVHlwZXMgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAiPGNsYXNzIFwnaW50XCc+Ii5cbicsCi0gJ2Jvb2xlYW5zJzogdSdcbkJvb2xlYW4gb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqXG5cbiAgIG9yX3Rlc3QgIDo6PSBhbmRfdGVzdCB8IG9yX3Rlc3QgIm9yIiBhbmRfdGVzdFxuICAgYW5kX3Rlc3QgOjo9IG5vdF90ZXN0IHwgYW5kX3Rlc3QgImFuZCIgbm90X3Rlc3RcbiAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcblxuSW4gdGhlIGNvbnRleHQgb2YgQm9vbGVhbiBvcGVyYXRpb25zLCBhbmQgYWxzbyB3aGVuIGV4cHJlc3Npb25zIGFyZVxudXNlZCBieSBjb250cm9sIGZsb3cgc3RhdGVtZW50cywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyBmYWxzZTogIkZhbHNlIiwgIk5vbmUiLCBudW1lcmljIHplcm8gb2YgYWxsIHR5cGVzLCBhbmQgZW1wdHlcbnN0cmluZ3MgYW5kIGNvbnRhaW5lcnMgKGluY2x1ZGluZyBzdHJpbmdzLCB0dXBsZXMsIGxpc3RzLFxuZGljdGlvbmFyaWVzLCBzZXRzIGFuZCBmcm96ZW5zZXRzKS4gIEFsbCBvdGhlciB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyB0cnVlLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIGN1c3RvbWl6ZSB0aGVpciB0cnV0aCB2YWx1ZSBieVxucHJvdmlkaW5nIGEgIl9fYm9vbF9fKCkiIG1ldGhvZC5cblxuVGhlIG9wZXJhdG9yICJub3QiIHlpZWxkcyAiVHJ1ZSIgaWYgaXRzIGFyZ3VtZW50IGlzIGZhbHNlLCAiRmFsc2UiXG5vdGhlcndpc2UuXG5cblRoZSBleHByZXNzaW9uICJ4IGFuZCB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgZmFsc2UsIGl0c1xudmFsdWUgaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZVxuaXMgcmV0dXJuZWQuXG5cblRoZSBleHByZXNzaW9uICJ4IG9yIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHMgdmFsdWVcbmlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgdmFsdWUgaXNcbnJldHVybmVkLlxuXG4oTm90ZSB0aGF0IG5laXRoZXIgImFuZCIgbm9yICJvciIgcmVzdHJpY3QgdGhlIHZhbHVlIGFuZCB0eXBlIHRoZXlcbnJldHVybiB0byAiRmFsc2UiIGFuZCAiVHJ1ZSIsIGJ1dCByYXRoZXIgcmV0dXJuIHRoZSBsYXN0IGV2YWx1YXRlZFxuYXJndW1lbnQuICBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwsIGUuZy4sIGlmICJzIiBpcyBhIHN0cmluZyB0aGF0XG5zaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBkZWZhdWx0IHZhbHVlIGlmIGl0IGlzIGVtcHR5LCB0aGUgZXhwcmVzc2lvblxuInMgb3IgXCdmb29cJyIgeWllbGRzIHRoZSBkZXNpcmVkIHZhbHVlLiAgQmVjYXVzZSAibm90IiBoYXMgdG8gY3JlYXRlIGFcbm5ldyB2YWx1ZSwgaXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgcmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBpdHNcbmFyZ3VtZW50IChmb3IgZXhhbXBsZSwgIm5vdCBcJ2Zvb1wnIiBwcm9kdWNlcyAiRmFsc2UiIHJhdGhlciB0aGFuICJcJ1wnIi4pXG4nLAotICdicmVhayc6IHUnXG5UaGUgImJyZWFrIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBicmVha19zdG10IDo6PSAiYnJlYWsiXG5cbiJicmVhayIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG5sb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gd2l0aGluIHRoYXRcbmxvb3AuXG5cbkl0IHRlcm1pbmF0ZXMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AsIHNraXBwaW5nIHRoZSBvcHRpb25hbCAiZWxzZSJcbmNsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuXG5JZiBhICJmb3IiIGxvb3AgaXMgdGVybWluYXRlZCBieSAiYnJlYWsiLCB0aGUgbG9vcCBjb250cm9sIHRhcmdldFxua2VlcHMgaXRzIGN1cnJlbnQgdmFsdWUuXG5cbldoZW4gImJyZWFrIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICJmaW5hbGx5IlxuY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nIHRoZVxubG9vcC5cbicsCi0gJ2NhbGxhYmxlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nLAotICdjYWxscyc6IHUnXG5DYWxsc1xuKioqKipcblxuQSBjYWxsIGNhbGxzIGEgY2FsbGFibGUgb2JqZWN0IChlLmcuLCBhICpmdW5jdGlvbiopIHdpdGggYSBwb3NzaWJseVxuZW1wdHkgc2VyaWVzIG9mICphcmd1bWVudHMqOlxuXG4gICBjYWxsICAgICAgICAgICAgICAgICA6Oj0gcHJpbWFyeSAiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl0gfCBjb21wcmVoZW5zaW9uXSAiKSJcbiAgIGFyZ3VtZW50X2xpc3QgICAgICAgIDo6PSBwb3NpdGlvbmFsX2FyZ3VtZW50cyBbIiwiIHN0YXJyZWRfYW5kX2tleXdvcmRzXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiIGtleXdvcmRzX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgIHwgc3RhcnJlZF9hbmRfa2V5d29yZHMgWyIsIiBrZXl3b3Jkc19hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmRzX2FyZ3VtZW50c1xuICAgcG9zaXRpb25hbF9hcmd1bWVudHMgOjo9IFsiKiJdIGV4cHJlc3Npb24gKCIsIiBbIioiXSBleHByZXNzaW9uKSpcbiAgIHN0YXJyZWRfYW5kX2tleXdvcmRzIDo6PSAoIioiIGV4cHJlc3Npb24gfCBrZXl3b3JkX2l0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiAiKiIgZXhwcmVzc2lvbiB8ICIsIiBrZXl3b3JkX2l0ZW0pKlxuICAga2V5d29yZHNfYXJndW1lbnRzICAgOjo9IChrZXl3b3JkX2l0ZW0gfCAiKioiIGV4cHJlc3Npb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgiLCIga2V5d29yZF9pdGVtIHwgIioqIiBleHByZXNzaW9uKSpcbiAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG5cbkFuIG9wdGlvbmFsIHRyYWlsaW5nIGNvbW1hIG1heSBiZSBwcmVzZW50IGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFuZFxua2V5d29yZCBhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGEgY2FsbGFibGUgb2JqZWN0ICh1c2VyLWRlZmluZWRcbmZ1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG5vYmplY3RzLCBtZXRob2RzIG9mIGNsYXNzIGluc3RhbmNlcywgYW5kIGFsbCBvYmplY3RzIGhhdmluZyBhXG4iX19jYWxsX18oKSIgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4qRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cblxuSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIGZpcnN0IGNvbnZlcnRlZCB0b1xucG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzIGlzXG5jcmVhdGVkIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcnMuICBJZiB0aGVyZSBhcmUgTiBwb3NpdGlvbmFsXG5hcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG5rZXl3b3JkIGFyZ3VtZW50LCB0aGUgaWRlbnRpZmllciBpcyB1c2VkIHRvIGRldGVybWluZSB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdCAoaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGZvcm1hbFxucGFyYW1ldGVyIG5hbWUsIHRoZSBmaXJzdCBzbG90IGlzIHVzZWQsIGFuZCBzbyBvbikuICBJZiB0aGUgc2xvdCBpc1xuYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbnZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgdGhlXG5leHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbmJlZW4gcHJvY2Vzc2VkLCB0aGUgc2xvdHMgdGhhdCBhcmUgc3RpbGwgdW5maWxsZWQgYXJlIGZpbGxlZCB3aXRoIHRoZVxuY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAoRGVmYXVsdFxudmFsdWVzIGFyZSBjYWxjdWxhdGVkLCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkOyB0aHVzLCBhXG5tdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSB3aWxsXG5iZSBzaGFyZWQgYnkgYWxsIGNhbGxzIHRoYXQgZG9uXCd0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yIHRoZVxuY29ycmVzcG9uZGluZyBzbG90OyB0aGlzIHNob3VsZCB1c3VhbGx5IGJlIGF2b2lkZWQuKSAgSWYgdGhlcmUgYXJlIGFueVxudW5maWxsZWQgc2xvdHMgZm9yIHdoaWNoIG5vIGRlZmF1bHQgdmFsdWUgaXMgc3BlY2lmaWVkLCBhICJUeXBlRXJyb3IiXG5leGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCBhc1xudGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSBjYWxsLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEFuIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlXG5idWlsdC1pbiBmdW5jdGlvbnMgd2hvc2UgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIG5hbWVzLCBldmVuXG5pZiB0aGV5IGFyZSBcJ25hbWVkXCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxudGhlcmVmb3JlIGNhbm5vdCBiZSBzdXBwbGllZCBieSBrZXl3b3JkLiAgSW4gQ1B5dGhvbiwgdGhpcyBpcyB0aGUgY2FzZVxuZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvIHBhcnNlXG50aGVpciBhcmd1bWVudHMuXG5cbklmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCBwYXJhbWV0ZXJcbnNsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHNcbihvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG5cbklmIGFueSBrZXl3b3JkIGFyZ3VtZW50IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBmb3JtYWwgcGFyYW1ldGVyXG5uYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIioqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuYXJndW1lbnRzICh1c2luZyB0aGUga2V5d29yZHMgYXMga2V5cyBhbmQgdGhlIGFyZ3VtZW50IHZhbHVlcyBhc1xuY29ycmVzcG9uZGluZyB2YWx1ZXMpLCBvciBhIChuZXcpIGVtcHR5IGRpY3Rpb25hcnkgaWYgdGhlcmUgd2VyZSBub1xuZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLlxuXG5JZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgImV4cHJlc3Npb24iXG5tdXN0IGV2YWx1YXRlIHRvIGFuICppdGVyYWJsZSouICBFbGVtZW50cyBmcm9tIHRoZXNlIGl0ZXJhYmxlcyBhcmVcbnRyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlIGFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHMuICBGb3IgdGhlIGNhbGxcbiJmKHgxLCB4MiwgKnksIHgzLCB4NCkiLCBpZiAqeSogZXZhbHVhdGVzIHRvIGEgc2VxdWVuY2UgKnkxKiwgLi4uLFxuKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbCB3aXRoIE0rNCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLFxuKngyKiwgKnkxKiwgLi4uLCAqeU0qLCAqeDMqLCAqeDQqLlxuXG5BIGNvbnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdCBhbHRob3VnaCB0aGUgIipleHByZXNzaW9uIiBzeW50YXggbWF5XG5hcHBlYXIgKmFmdGVyKiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICpiZWZvcmUqXG50aGUga2V5d29yZCBhcmd1bWVudHMgKGFuZCBhbnkgIioqZXhwcmVzc2lvbiIgYXJndW1lbnRzIC0tIHNlZSBiZWxvdykuXG5TbzpcblxuICAgPj4+IGRlZiBmKGEsIGIpOlxuICAgLi4uICAgICBwcmludChhLCBiKVxuICAgLi4uXG4gICA+Pj4gZihiPTEsICooMiwpKVxuICAgMiAxXG4gICA+Pj4gZihhPTEsICooMiwpKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50IFwnYVwnXG4gICA+Pj4gZigxLCAqKDIsKSlcbiAgIDEgMlxuXG5JdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgIipleHByZXNzaW9uIiBzeW50YXhcbnRvIGJlIHVzZWQgaW4gdGhlIHNhbWUgY2FsbCwgc28gaW4gcHJhY3RpY2UgdGhpcyBjb25mdXNpb24gZG9lcyBub3RcbmFyaXNlLlxuXG5JZiB0aGUgc3ludGF4ICIqKmV4cHJlc3Npb24iIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG4iZXhwcmVzc2lvbiIgbXVzdCBldmFsdWF0ZSB0byBhICptYXBwaW5nKiwgdGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZVxudHJlYXRlZCBhcyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLiAgSWYgYSBrZXl3b3JkIGlzIGFscmVhZHlcbnByZXNlbnQgKGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsIG9yIGZyb20gYW5vdGhlciB1bnBhY2tpbmcpLFxuYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuXG5Gb3JtYWwgcGFyYW1ldGVycyB1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciJcbmNhbm5vdCBiZSB1c2VkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgc2xvdHMgb3IgYXMga2V5d29yZCBhcmd1bWVudFxubmFtZXMuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjU6IEZ1bmN0aW9uIGNhbGxzIGFjY2VwdCBhbnkgbnVtYmVyIG9mICIqIiBhbmRcbiIqKiIgdW5wYWNraW5ncywgcG9zaXRpb25hbCBhcmd1bWVudHMgbWF5IGZvbGxvdyBpdGVyYWJsZSB1bnBhY2tpbmdzXG4oIioiKSwgYW5kIGtleXdvcmQgYXJndW1lbnRzIG1heSBmb2xsb3cgZGljdGlvbmFyeSB1bnBhY2tpbmdzICgiKioiKS5cbk9yaWdpbmFsbHkgcHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG5cbkEgY2FsbCBhbHdheXMgcmV0dXJucyBzb21lIHZhbHVlLCBwb3NzaWJseSAiTm9uZSIsIHVubGVzcyBpdCByYWlzZXMgYW5cbmV4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG5jYWxsYWJsZSBvYmplY3QuXG5cbklmIGl0IGlzLS0tXG5cbmEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uOlxuICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbiAgIGFyZ3VtZW50IGxpc3QuICBUaGUgZmlyc3QgdGhpbmcgdGhlIGNvZGUgYmxvY2sgd2lsbCBkbyBpcyBiaW5kIHRoZVxuICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gc2VjdGlvblxuICAgKkZ1bmN0aW9uIGRlZmluaXRpb25zKi4gIFdoZW4gdGhlIGNvZGUgYmxvY2sgZXhlY3V0ZXMgYSAicmV0dXJuIlxuICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLlxuXG5hIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbiAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgKkJ1aWx0LWluIEZ1bmN0aW9ucyogZm9yXG4gICB0aGUgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cblxuYSBjbGFzcyBvYmplY3Q6XG4gICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuXG5hIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbiAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gYXJndW1lbnRcbiAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuICAgaW5zdGFuY2UgYmVjb21lcyB0aGUgZmlyc3QgYXJndW1lbnQuXG5cbmEgY2xhc3MgaW5zdGFuY2U6XG4gICBUaGUgY2xhc3MgbXVzdCBkZWZpbmUgYSAiX19jYWxsX18oKSIgbWV0aG9kOyB0aGUgZWZmZWN0IGlzIHRoZW4gdGhlXG4gICBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAotICdjbGFzcyc6IHUnXG5DbGFzcyBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW2FyZ3VtZW50X2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvbiAiInNlbGYubmFtZSIiLFxuYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lIG5hbWVcbndoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzIGRlZmF1bHRzXG5mb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzIHRoZXJlIGNhbiBsZWFkIHRvXG51bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxudmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuICBDbGFzcyBEZWNvcmF0b3JzXG4nLAotICdjb21wYXJpc29ucyc6IHUnXG5Db21wYXJpc29uc1xuKioqKioqKioqKipcblxuVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHksXG53aGljaCBpcyBsb3dlciB0aGFuIHRoYXQgb2YgYW55IGFyaXRobWV0aWMsIHNoaWZ0aW5nIG9yIGJpdHdpc2Vcbm9wZXJhdGlvbi4gIEFsc28gdW5saWtlIEMsIGV4cHJlc3Npb25zIGxpa2UgImEgPCBiIDwgYyIgaGF2ZSB0aGVcbmludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuXG4gICBjb21wYXJpc29uICAgIDo6PSBvcl9leHByICggY29tcF9vcGVyYXRvciBvcl9leHByICkqXG4gICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4gICAgICAgICAgICAgICAgICAgICB8ICJpcyIgWyJub3QiXSB8IFsibm90Il0gImluIlxuXG5Db21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogIlRydWUiIG9yICJGYWxzZSIuXG5cbkNvbXBhcmlzb25zIGNhbiBiZSBjaGFpbmVkIGFyYml0cmFyaWx5LCBlLmcuLCAieCA8IHkgPD0geiIgaXNcbmVxdWl2YWxlbnQgdG8gInggPCB5IGFuZCB5IDw9IHoiLCBleGNlcHQgdGhhdCAieSIgaXMgZXZhbHVhdGVkIG9ubHlcbm9uY2UgKGJ1dCBpbiBib3RoIGNhc2VzICJ6IiBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuICJ4IDwgeSIgaXNcbmZvdW5kIHRvIGJlIGZhbHNlKS5cblxuRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAqb3AxKixcbipvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiAiYSBvcDEgYiBvcDIgYyAuLi4geVxub3BOIHoiIGlzIGVxdWl2YWxlbnQgdG8gImEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6IiwgZXhjZXB0XG50aGF0IGVhY2ggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYXQgbW9zdCBvbmNlLlxuXG5Ob3RlIHRoYXQgImEgb3AxIGIgb3AyIGMiIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb24gYmV0d2VlblxuKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sICJ4IDwgeSA+IHoiIGlzIHBlcmZlY3RseSBsZWdhbCAodGhvdWdoXG5wZXJoYXBzIG5vdCBwcmV0dHkpLlxuXG5cblZhbHVlIGNvbXBhcmlzb25zXG49PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0b3JzICI8IiwgIj4iLCAiPT0iLCAiPj0iLCAiPD0iLCBhbmQgIiE9IiBjb21wYXJlIHRoZSB2YWx1ZXNcbm9mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgZG8gbm90IG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSB0eXBlLlxuXG5DaGFwdGVyICpPYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzKiBzdGF0ZXMgdGhhdCBvYmplY3RzIGhhdmUgYSB2YWx1ZVxuKGluIGFkZGl0aW9uIHRvIHR5cGUgYW5kIGlkZW50aXR5KS4gIFRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaXMgYVxucmF0aGVyIGFic3RyYWN0IG5vdGlvbiBpbiBQeXRob246IEZvciBleGFtcGxlLCB0aGVyZSBpcyBubyBjYW5vbmljYWxcbmFjY2VzcyBtZXRob2QgZm9yIGFuIG9iamVjdFwncyB2YWx1ZS4gIEFsc28sIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50XG50aGF0IHRoZSB2YWx1ZSBvZiBhbiBvYmplY3Qgc2hvdWxkIGJlIGNvbnN0cnVjdGVkIGluIGEgcGFydGljdWxhciB3YXksXG5lLmcuIGNvbXByaXNlZCBvZiBhbGwgaXRzIGRhdGEgYXR0cmlidXRlcy4gQ29tcGFyaXNvbiBvcGVyYXRvcnNcbmltcGxlbWVudCBhIHBhcnRpY3VsYXIgbm90aW9uIG9mIHdoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcy4gIE9uZVxuY2FuIHRoaW5rIG9mIHRoZW0gYXMgZGVmaW5pbmcgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpbmRpcmVjdGx5LCBieVxubWVhbnMgb2YgdGhlaXIgY29tcGFyaXNvbiBpbXBsZW1lbnRhdGlvbi5cblxuQmVjYXVzZSBhbGwgdHlwZXMgYXJlIChkaXJlY3Qgb3IgaW5kaXJlY3QpIHN1YnR5cGVzIG9mICJvYmplY3QiLCB0aGV5XG5pbmhlcml0IHRoZSBkZWZhdWx0IGNvbXBhcmlzb24gYmVoYXZpb3IgZnJvbSAib2JqZWN0Ii4gIFR5cGVzIGNhblxuY3VzdG9taXplIHRoZWlyIGNvbXBhcmlzb24gYmVoYXZpb3IgYnkgaW1wbGVtZW50aW5nICpyaWNoIGNvbXBhcmlzb25cbm1ldGhvZHMqIGxpa2UgIl9fbHRfXygpIiwgZGVzY3JpYmVkIGluICpCYXNpYyBjdXN0b21pemF0aW9uKi5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb24gKCI9PSIgYW5kICIhPSIpIGlzIGJhc2VkXG5vbiB0aGUgaWRlbnRpdHkgb2YgdGhlIG9iamVjdHMuICBIZW5jZSwgZXF1YWxpdHkgY29tcGFyaXNvbiBvZlxuaW5zdGFuY2VzIHdpdGggdGhlIHNhbWUgaWRlbnRpdHkgcmVzdWx0cyBpbiBlcXVhbGl0eSwgYW5kIGVxdWFsaXR5XG5jb21wYXJpc29uIG9mIGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBpZGVudGl0aWVzIHJlc3VsdHMgaW5cbmluZXF1YWxpdHkuICBBIG1vdGl2YXRpb24gZm9yIHRoaXMgZGVmYXVsdCBiZWhhdmlvciBpcyB0aGUgZGVzaXJlIHRoYXRcbmFsbCBvYmplY3RzIHNob3VsZCBiZSByZWZsZXhpdmUgKGkuZS4gInggaXMgeSIgaW1wbGllcyAieCA9PSB5IikuXG5cbkEgZGVmYXVsdCBvcmRlciBjb21wYXJpc29uICgiPCIsICI+IiwgIjw9IiwgYW5kICI+PSIpIGlzIG5vdCBwcm92aWRlZDtcbmFuIGF0dGVtcHQgcmFpc2VzICJUeXBlRXJyb3IiLiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgYmVoYXZpb3JcbmlzIHRoZSBsYWNrIG9mIGEgc2ltaWxhciBpbnZhcmlhbnQgYXMgZm9yIGVxdWFsaXR5LlxuXG5UaGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgZXF1YWxpdHkgY29tcGFyaXNvbiwgdGhhdCBpbnN0YW5jZXMgd2l0aFxuZGlmZmVyZW50IGlkZW50aXRpZXMgYXJlIGFsd2F5cyB1bmVxdWFsLCBtYXkgYmUgaW4gY29udHJhc3QgdG8gd2hhdFxudHlwZXMgd2lsbCBuZWVkIHRoYXQgaGF2ZSBhIHNlbnNpYmxlIGRlZmluaXRpb24gb2Ygb2JqZWN0IHZhbHVlIGFuZFxudmFsdWUtYmFzZWQgZXF1YWxpdHkuICBTdWNoIHR5cGVzIHdpbGwgbmVlZCB0byBjdXN0b21pemUgdGhlaXJcbmNvbXBhcmlzb24gYmVoYXZpb3IsIGFuZCBpbiBmYWN0LCBhIG51bWJlciBvZiBidWlsdC1pbiB0eXBlcyBoYXZlIGRvbmVcbnRoYXQuXG5cblRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgdGhlIGNvbXBhcmlzb24gYmVoYXZpb3Igb2YgdGhlIG1vc3RcbmltcG9ydGFudCBidWlsdC1pbiB0eXBlcy5cblxuKiBOdW1iZXJzIG9mIGJ1aWx0LWluIG51bWVyaWMgdHlwZXMgKCpOdW1lcmljIFR5cGVzIC0tLSBpbnQsIGZsb2F0LFxuICBjb21wbGV4KikgYW5kIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IHR5cGVzICJmcmFjdGlvbnMuRnJhY3Rpb24iIGFuZFxuICAiZGVjaW1hbC5EZWNpbWFsIiBjYW4gYmUgY29tcGFyZWQgd2l0aGluIGFuZCBhY3Jvc3MgdGhlaXIgdHlwZXMsXG4gIHdpdGggdGhlIHJlc3RyaWN0aW9uIHRoYXQgY29tcGxleCBudW1iZXJzIGRvIG5vdCBzdXBwb3J0IG9yZGVyXG4gIGNvbXBhcmlzb24uICBXaXRoaW4gdGhlIGxpbWl0cyBvZiB0aGUgdHlwZXMgaW52b2x2ZWQsIHRoZXkgY29tcGFyZVxuICBtYXRoZW1hdGljYWxseSAoYWxnb3JpdGhtaWNhbGx5KSBjb3JyZWN0IHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uXG5cbiAgVGhlIG5vdC1hLW51bWJlciB2YWx1ZXMgImZsb2F0KFwnTmFOXCcpIiBhbmQgIkRlY2ltYWwoXCdOYU5cJykiIGFyZVxuICBzcGVjaWFsLiAgVGhleSBhcmUgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMgKCJ4IGlzIHgiIGlzIHRydWUpIGJ1dFxuICBhcmUgbm90IGVxdWFsIHRvIHRoZW1zZWx2ZXMgKCJ4ID09IHgiIGlzIGZhbHNlKS4gIEFkZGl0aW9uYWxseSxcbiAgY29tcGFyaW5nIGFueSBudW1iZXIgdG8gYSBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gIkZhbHNlIi5cbiAgRm9yIGV4YW1wbGUsIGJvdGggIjMgPCBmbG9hdChcJ05hTlwnKSIgYW5kICJmbG9hdChcJ05hTlwnKSA8IDMiIHdpbGxcbiAgcmV0dXJuICJGYWxzZSIuXG5cbiogQmluYXJ5IHNlcXVlbmNlcyAoaW5zdGFuY2VzIG9mICJieXRlcyIgb3IgImJ5dGVhcnJheSIpIGNhbiBiZVxuICBjb21wYXJlZCB3aXRoaW4gYW5kIGFjcm9zcyB0aGVpciB0eXBlcy4gIFRoZXkgY29tcGFyZVxuICBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpYyB2YWx1ZXMgb2YgdGhlaXIgZWxlbWVudHMuXG5cbiogU3RyaW5ncyAoaW5zdGFuY2VzIG9mICJzdHIiKSBjb21wYXJlIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZVxuICBudW1lcmljYWwgVW5pY29kZSBjb2RlIHBvaW50cyAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgIm9yZCgpIikgb2YgdGhlaXIgY2hhcmFjdGVycy4gWzNdXG5cbiAgU3RyaW5ncyBhbmQgYmluYXJ5IHNlcXVlbmNlcyBjYW5ub3QgYmUgZGlyZWN0bHkgY29tcGFyZWQuXG5cbiogU2VxdWVuY2VzIChpbnN0YW5jZXMgb2YgInR1cGxlIiwgImxpc3QiLCBvciAicmFuZ2UiKSBjYW4gYmVcbiAgY29tcGFyZWQgb25seSB3aXRoaW4gZWFjaCBvZiB0aGVpciB0eXBlcywgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdFxuICByYW5nZXMgZG8gbm90IHN1cHBvcnQgb3JkZXIgY29tcGFyaXNvbi4gIEVxdWFsaXR5IGNvbXBhcmlzb24gYWNyb3NzXG4gIHRoZXNlIHR5cGVzIHJlc3VsdHMgaW4gdW5lcXVhbGl0eSwgYW5kIG9yZGVyaW5nIGNvbXBhcmlzb24gYWNyb3NzXG4gIHRoZXNlIHR5cGVzIHJhaXNlcyAiVHlwZUVycm9yIi5cblxuICBTZXF1ZW5jZXMgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uIG9mXG4gIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMsIHdoZXJlYnkgcmVmbGV4aXZpdHkgb2YgdGhlIGVsZW1lbnRzIGlzXG4gIGVuZm9yY2VkLlxuXG4gIEluIGVuZm9yY2luZyByZWZsZXhpdml0eSBvZiBlbGVtZW50cywgdGhlIGNvbXBhcmlzb24gb2YgY29sbGVjdGlvbnNcbiAgYXNzdW1lcyB0aGF0IGZvciBhIGNvbGxlY3Rpb24gZWxlbWVudCAieCIsICJ4ID09IHgiIGlzIGFsd2F5cyB0cnVlLlxuICBCYXNlZCBvbiB0aGF0IGFzc3VtcHRpb24sIGVsZW1lbnQgaWRlbnRpdHkgaXMgY29tcGFyZWQgZmlyc3QsIGFuZFxuICBlbGVtZW50IGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIG9ubHkgZm9yIGRpc3RpbmN0IGVsZW1lbnRzLiAgVGhpc1xuICBhcHByb2FjaCB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0IGFzIGEgc3RyaWN0IGVsZW1lbnQgY29tcGFyaXNvblxuICB3b3VsZCwgaWYgdGhlIGNvbXBhcmVkIGVsZW1lbnRzIGFyZSByZWZsZXhpdmUuICBGb3Igbm9uLXJlZmxleGl2ZVxuICBlbGVtZW50cywgdGhlIHJlc3VsdCBpcyBkaWZmZXJlbnQgdGhhbiBmb3Igc3RyaWN0IGVsZW1lbnRcbiAgY29tcGFyaXNvbiwgYW5kIG1heSBiZSBzdXJwcmlzaW5nOiAgVGhlIG5vbi1yZWZsZXhpdmUgbm90LWEtbnVtYmVyXG4gIHZhbHVlcyBmb3IgZXhhbXBsZSByZXN1bHQgaW4gdGhlIGZvbGxvd2luZyBjb21wYXJpc29uIGJlaGF2aW9yIHdoZW5cbiAgdXNlZCBpbiBhIGxpc3Q6XG5cbiAgICAgPj4+IG5hbiA9IGZsb2F0KFwnTmFOXCcpXG4gICAgID4+PiBuYW4gaXMgbmFuXG4gICAgIFRydWVcbiAgICAgPj4+IG5hbiA9PSBuYW5cbiAgICAgRmFsc2UgICAgICAgICAgICAgICAgIDwtLSB0aGUgZGVmaW5lZCBub24tcmVmbGV4aXZlIGJlaGF2aW9yIG9mIE5hTlxuICAgICA+Pj4gW25hbl0gPT0gW25hbl1cbiAgICAgVHJ1ZSAgICAgICAgICAgICAgICAgIDwtLSBsaXN0IGVuZm9yY2VzIHJlZmxleGl2aXR5IGFuZCB0ZXN0cyBpZGVudGl0eSBmaXJzdFxuXG4gIExleGljb2dyYXBoaWNhbCBjb21wYXJpc29uIGJldHdlZW4gYnVpbHQtaW4gY29sbGVjdGlvbnMgd29ya3MgYXNcbiAgZm9sbG93czpcblxuICAqIEZvciB0d28gY29sbGVjdGlvbnMgdG8gY29tcGFyZSBlcXVhbCwgdGhleSBtdXN0IGJlIG9mIHRoZSBzYW1lXG4gICAgdHlwZSwgaGF2ZSB0aGUgc2FtZSBsZW5ndGgsIGFuZCBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZ1xuICAgIGVsZW1lbnRzIG11c3QgY29tcGFyZSBlcXVhbCAoZm9yIGV4YW1wbGUsICJbMSwyXSA9PSAoMSwyKSIgaXNcbiAgICBmYWxzZSBiZWNhdXNlIHRoZSB0eXBlIGlzIG5vdCB0aGUgc2FtZSkuXG5cbiAgKiBDb2xsZWN0aW9ucyB0aGF0IHN1cHBvcnQgb3JkZXIgY29tcGFyaXNvbiBhcmUgb3JkZXJlZCB0aGUgc2FtZVxuICAgIGFzIHRoZWlyIGZpcnN0IHVuZXF1YWwgZWxlbWVudHMgKGZvciBleGFtcGxlLCAiWzEsMix4XSA8PSBbMSwyLHldIlxuICAgIGhhcyB0aGUgc2FtZSB2YWx1ZSBhcyAieCA8PSB5IikuICBJZiBhIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzXG4gICAgbm90IGV4aXN0LCB0aGUgc2hvcnRlciBjb2xsZWN0aW9uIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLFxuICAgICJbMSwyXSA8IFsxLDIsM10iIGlzIHRydWUpLlxuXG4qIE1hcHBpbmdzIChpbnN0YW5jZXMgb2YgImRpY3QiKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXlcbiAgaGF2ZSBlcXVhbCAqKGtleSwgdmFsdWUpKiBwYWlycy4gRXF1YWxpdHkgY29tcGFyaXNvbiBvZiB0aGUga2V5cyBhbmRcbiAgZWxlbWVudHMgZW5mb3JjZXMgcmVmbGV4aXZpdHkuXG5cbiAgT3JkZXIgY29tcGFyaXNvbnMgKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgcmFpc2UgIlR5cGVFcnJvciIuXG5cbiogU2V0cyAoaW5zdGFuY2VzIG9mICJzZXQiIG9yICJmcm96ZW5zZXQiKSBjYW4gYmUgY29tcGFyZWQgd2l0aGluXG4gIGFuZCBhY3Jvc3MgdGhlaXIgdHlwZXMuXG5cbiAgVGhleSBkZWZpbmUgb3JkZXIgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiBzdWJzZXQgYW5kIHN1cGVyc2V0XG4gIHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzIChmb3IgZXhhbXBsZSxcbiAgdGhlIHR3byBzZXRzICJ7MSwyfSIgYW5kICJ7MiwzfSIgYXJlIG5vdCBlcXVhbCwgbm9yIHN1YnNldHMgb2Ygb25lXG4gIGFub3RoZXIsIG5vciBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXIpLiAgQWNjb3JkaW5nbHksIHNldHMgYXJlIG5vdFxuICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgb3JkZXJpbmdcbiAgKGZvciBleGFtcGxlLCAibWluKCkiLCAibWF4KCkiLCBhbmQgInNvcnRlZCgpIiBwcm9kdWNlIHVuZGVmaW5lZFxuICByZXN1bHRzIGdpdmVuIGEgbGlzdCBvZiBzZXRzIGFzIGlucHV0cykuXG5cbiAgQ29tcGFyaXNvbiBvZiBzZXRzIGVuZm9yY2VzIHJlZmxleGl2aXR5IG9mIGl0cyBlbGVtZW50cy5cblxuKiBNb3N0IG90aGVyIGJ1aWx0LWluIHR5cGVzIGhhdmUgbm8gY29tcGFyaXNvbiBtZXRob2RzIGltcGxlbWVudGVkLFxuICBzbyB0aGV5IGluaGVyaXQgdGhlIGRlZmF1bHQgY29tcGFyaXNvbiBiZWhhdmlvci5cblxuVXNlci1kZWZpbmVkIGNsYXNzZXMgdGhhdCBjdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBzaG91bGRcbmZvbGxvdyBzb21lIGNvbnNpc3RlbmN5IHJ1bGVzLCBpZiBwb3NzaWJsZTpcblxuKiBFcXVhbGl0eSBjb21wYXJpc29uIHNob3VsZCBiZSByZWZsZXhpdmUuIEluIG90aGVyIHdvcmRzLCBpZGVudGljYWxcbiAgb2JqZWN0cyBzaG91bGQgY29tcGFyZSBlcXVhbDpcblxuICAgICAieCBpcyB5IiBpbXBsaWVzICJ4ID09IHkiXG5cbiogQ29tcGFyaXNvbiBzaG91bGQgYmUgc3ltbWV0cmljLiBJbiBvdGhlciB3b3JkcywgdGhlIGZvbGxvd2luZ1xuICBleHByZXNzaW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSByZXN1bHQ6XG5cbiAgICAgInggPT0geSIgYW5kICJ5ID09IHgiXG5cbiAgICAgInggIT0geSIgYW5kICJ5ICE9IHgiXG5cbiAgICAgInggPCB5IiBhbmQgInkgPiB4IlxuXG4gICAgICJ4IDw9IHkiIGFuZCAieSA+PSB4IlxuXG4qIENvbXBhcmlzb24gc2hvdWxkIGJlIHRyYW5zaXRpdmUuIFRoZSBmb2xsb3dpbmcgKG5vbi1leGhhdXN0aXZlKVxuICBleGFtcGxlcyBpbGx1c3RyYXRlIHRoYXQ6XG5cbiAgICAgInggPiB5IGFuZCB5ID4geiIgaW1wbGllcyAieCA+IHoiXG5cbiAgICAgInggPCB5IGFuZCB5IDw9IHoiIGltcGxpZXMgInggPCB6IlxuXG4qIEludmVyc2UgY29tcGFyaXNvbiBzaG91bGQgcmVzdWx0IGluIHRoZSBib29sZWFuIG5lZ2F0aW9uLiBJbiBvdGhlclxuICB3b3JkcywgdGhlIGZvbGxvd2luZyBleHByZXNzaW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSByZXN1bHQ6XG5cbiAgICAgInggPT0geSIgYW5kICJub3QgeCAhPSB5IlxuXG4gICAgICJ4IDwgeSIgYW5kICJub3QgeCA+PSB5IiAoZm9yIHRvdGFsIG9yZGVyaW5nKVxuXG4gICAgICJ4ID4geSIgYW5kICJub3QgeCA8PSB5IiAoZm9yIHRvdGFsIG9yZGVyaW5nKVxuXG4gIFRoZSBsYXN0IHR3byBleHByZXNzaW9ucyBhcHBseSB0byB0b3RhbGx5IG9yZGVyZWQgY29sbGVjdGlvbnMgKGUuZy5cbiAgdG8gc2VxdWVuY2VzLCBidXQgbm90IHRvIHNldHMgb3IgbWFwcGluZ3MpLiBTZWUgYWxzbyB0aGVcbiAgInRvdGFsX29yZGVyaW5nKCkiIGRlY29yYXRvci5cblxuUHl0aG9uIGRvZXMgbm90IGVuZm9yY2UgdGhlc2UgY29uc2lzdGVuY3kgcnVsZXMuIEluIGZhY3QsIHRoZVxubm90LWEtbnVtYmVyIHZhbHVlcyBhcmUgYW4gZXhhbXBsZSBmb3Igbm90IGZvbGxvd2luZyB0aGVzZSBydWxlcy5cblxuXG5NZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxubm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiB0ZXN0c1xud2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xubGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KSIuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXNcbmEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG5zdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4iaW4iLlxuXG5cbklkZW50aXR5IGNvbXBhcmlzb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0b3JzICJpcyIgYW5kICJpcyBub3QiIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogInggaXMgeSIgaXNcbnRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gICJ4IGlzIG5vdCB5IlxueWllbGRzIHRoZSBpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCi0gJ2NvbXBvdW5kJzogdSdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSAiaWYiLCAid2hpbGUiIGFuZCAiZm9yIiBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbCBjb250cm9sXG5mbG93IGNvbnN0cnVjdHMuICAidHJ5IiBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwXG5jb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50IGFsbG93cyB0aGVcbmV4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGEgYmxvY2sgb2ZcbmNvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseSBjb21wb3VuZFxuc3RhdGVtZW50cy5cblxuQSBjb21wb3VuZCBzdGF0ZW1lbnQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIGEgc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggImlmIiBjbGF1c2UgYSBmb2xsb3dpbmcgImVsc2UiIGNsYXVzZSB3b3VsZCBiZWxvbmc6XG5cbiAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG4icHJpbnQoKSIgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY193aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZm9yX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZnVuY2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhICJORVdMSU5FIiBwb3NzaWJseSBmb2xsb3dlZCBieSBhXG4iREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyBiZWdpblxud2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkICJpZiIgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlICJpZiIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT1cblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSAid2hpbGUiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzIGJhY2tcbnRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlICJmb3IiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHNlcXVlbmNlXG4oc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbiJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24pLFxudGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbml0ZW0uXG5cblRoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgbGlzdC5cblRoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzIGluY2x1ZGluZ1xudGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuXG4gICBmb3IgaSBpbiByYW5nZSgxMCk6XG4gICAgICAgcHJpbnQoaSlcbiAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG5hbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciBpXG46PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4gIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSAidHJ5IiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cblxuXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT09PT1cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKiBbIiwiICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgKmFyZ3VtZW50KiBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gdGhpc1xuaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB3aGVuIHRoZVxuZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXNcbmV2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLVxuY29tcHV0ZWQiIHZhbHVlIGlzIHVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnRcbnRvIHVuZGVyc3RhbmQgd2hlbiBhIGRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYVxubGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5XG5hcHBlbmRpbmcgYW4gaXRlbSB0byBhIGxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuXG5UaGlzIGlzIGdlbmVyYWxseSBub3Qgd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2VcbiJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlXG5mdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iIippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmcgYW55XG5leGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmIHRoZVxuZm9ybSAiIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICIiKiIiIG9yICIiKmlkZW50aWZpZXIiIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiIjogZXhwcmVzc2lvbiIiIGZvbGxvd2luZ1xudGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uIGV2ZW4gdGhvc2Vcbm9mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5IGhhdmVcbiJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gIiItPiBleHByZXNzaW9uIiIgYWZ0ZXIgdGhlIHBhcmFtZXRlclxubGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gYW5kIGFyZVxuZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyBtYXlcbmJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgY29kZS5cblRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiBhXG5mdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzIHZhbHVlcyBvZiBhXG5kaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlICJfX2Fubm90YXRpb25zX18iXG5hdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhXG5leHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGFcbmV4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjtcbmEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhICIiZGVmIiIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yXG5hc3NpZ25lZCB0byBhbm90aGVyIG5hbWUganVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYVxuZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGUgc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgIiJkZWYiIlxuc3RhdGVtZW50IGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsXG5mdW5jdGlvbiB0aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZFxuaW4gdGhlIG5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG5cbiAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuXG5cbkNsYXNzIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PVxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcblxuXG5Db3JvdXRpbmVzXG49PT09PT09PT09XG5cbk5ldyBpbiB2ZXJzaW9uIDMuNS5cblxuXG5Db3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5pdGlvblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgYXN5bmNfZnVuY2RlZiA6Oj0gW2RlY29yYXRvcnNdICJhc3luYyIgImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuXG5FeGVjdXRpb24gb2YgUHl0aG9uIGNvcm91dGluZXMgY2FuIGJlIHN1c3BlbmRlZCBhbmQgcmVzdW1lZCBhdCBtYW55XG5wb2ludHMgKHNlZSAqY29yb3V0aW5lKikuICBJbiB0aGUgYm9keSBvZiBhIGNvcm91dGluZSwgYW55ICJhd2FpdCIgYW5kXG4iYXN5bmMiIGlkZW50aWZpZXJzIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkczsgImF3YWl0IiBleHByZXNzaW9ucyxcbiJhc3luYyBmb3IiIGFuZCAiYXN5bmMgd2l0aCIgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb3JvdXRpbmUgYm9kaWVzLlxuXG5GdW5jdGlvbnMgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheCBhcmUgYWx3YXlzIGNvcm91dGluZVxuZnVuY3Rpb25zLCBldmVuIGlmIHRoZXkgZG8gbm90IGNvbnRhaW4gImF3YWl0IiBvciAiYXN5bmMiIGtleXdvcmRzLlxuXG5JdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJ5aWVsZCIgZXhwcmVzc2lvbnMgaW4gImFzeW5jIGRlZiJcbmNvcm91dGluZXMuXG5cbkFuIGV4YW1wbGUgb2YgYSBjb3JvdXRpbmUgZnVuY3Rpb246XG5cbiAgIGFzeW5jIGRlZiBmdW5jKHBhcmFtMSwgcGFyYW0yKTpcbiAgICAgICBkb19zdHVmZigpXG4gICAgICAgYXdhaXQgc29tZV9jb3JvdXRpbmUoKVxuXG5cblRoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnRcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgYXN5bmNfZm9yX3N0bXQgOjo9ICJhc3luYyIgZm9yX3N0bXRcblxuQW4gKmFzeW5jaHJvbm91cyBpdGVyYWJsZSogaXMgYWJsZSB0byBjYWxsIGFzeW5jaHJvbm91cyBjb2RlIGluIGl0c1xuKml0ZXIqIGltcGxlbWVudGF0aW9uLCBhbmQgKmFzeW5jaHJvbm91cyBpdGVyYXRvciogY2FuIGNhbGxcbmFzeW5jaHJvbm91cyBjb2RlIGluIGl0cyAqbmV4dCogbWV0aG9kLlxuXG5UaGUgImFzeW5jIGZvciIgc3RhdGVtZW50IGFsbG93cyBjb252ZW5pZW50IGl0ZXJhdGlvbiBvdmVyXG5hc3luY2hyb25vdXMgaXRlcmF0b3JzLlxuXG5UaGUgZm9sbG93aW5nIGNvZGU6XG5cbiAgIGFzeW5jIGZvciBUQVJHRVQgaW4gSVRFUjpcbiAgICAgICBCTE9DS1xuICAgZWxzZTpcbiAgICAgICBCTE9DSzJcblxuSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG5cbiAgIGl0ZXIgPSAoSVRFUilcbiAgIGl0ZXIgPSB0eXBlKGl0ZXIpLl9fYWl0ZXJfXyhpdGVyKVxuICAgcnVubmluZyA9IFRydWVcbiAgIHdoaWxlIHJ1bm5pbmc6XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBUQVJHRVQgPSBhd2FpdCB0eXBlKGl0ZXIpLl9fYW5leHRfXyhpdGVyKVxuICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246XG4gICAgICAgICAgIHJ1bm5pbmcgPSBGYWxzZVxuICAgICAgIGVsc2U6XG4gICAgICAgICAgIEJMT0NLXG4gICBlbHNlOlxuICAgICAgIEJMT0NLMlxuXG5TZWUgYWxzbyAiX19haXRlcl9fKCkiIGFuZCAiX19hbmV4dF9fKCkiIGZvciBkZXRhaWxzLlxuXG5JdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJhc3luYyBmb3IiIHN0YXRlbWVudCBvdXRzaWRlIG9mIGFuXG4iYXN5bmMgZGVmIiBmdW5jdGlvbi5cblxuXG5UaGUgImFzeW5jIHdpdGgiIHN0YXRlbWVudFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgYXN5bmNfd2l0aF9zdG10IDo6PSAiYXN5bmMiIHdpdGhfc3RtdFxuXG5BbiAqYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciogaXMgYSAqY29udGV4dCBtYW5hZ2VyKiB0aGF0IGlzIGFibGVcbnRvIHN1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyAqZW50ZXIqIGFuZCAqZXhpdCogbWV0aG9kcy5cblxuVGhlIGZvbGxvd2luZyBjb2RlOlxuXG4gICBhc3luYyB3aXRoIEVYUFIgYXMgVkFSOlxuICAgICAgIEJMT0NLXG5cbklzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOlxuXG4gICBtZ3IgPSAoRVhQUilcbiAgIGFleGl0ID0gdHlwZShtZ3IpLl9fYWV4aXRfX1xuICAgYWVudGVyID0gdHlwZShtZ3IpLl9fYWVudGVyX18obWdyKVxuICAgZXhjID0gVHJ1ZVxuXG4gICBWQVIgPSBhd2FpdCBhZW50ZXJcbiAgIHRyeTpcbiAgICAgICBCTE9DS1xuICAgZXhjZXB0OlxuICAgICAgIGlmIG5vdCBhd2FpdCBhZXhpdChtZ3IsICpzeXMuZXhjX2luZm8oKSk6XG4gICAgICAgICAgIHJhaXNlXG4gICBlbHNlOlxuICAgICAgIGF3YWl0IGFleGl0KG1nciwgTm9uZSwgTm9uZSwgTm9uZSlcblxuU2VlIGFsc28gIl9fYWVudGVyX18oKSIgYW5kICJfX2FleGl0X18oKSIgZm9yIGRldGFpbHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIHdpdGgiIHN0YXRlbWVudCBvdXRzaWRlIG9mIGFuXG4iYXN5bmMgZGVmIiBmdW5jdGlvbi5cblxuU2VlIGFsc286ICoqUEVQIDQ5MioqIC0gQ29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCBzeW50YXhcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzXG4gICAgdGhlcmUgaXMgYSAiZmluYWxseSIgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlclxuICAgIGV4Y2VwdGlvbi4gVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mXG4gICAgYW4gZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSAicmV0dXJuIiwgImNvbnRpbnVlIiwgb3JcbiAgICAiYnJlYWsiIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlXG4gICAgZnVuY3Rpb24gYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyAiX19kb2NfXyJcbiAgICBhdHRyaWJ1dGUgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzICJfX2RvY19fIiBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAotICdjb250ZXh0LW1hbmFnZXJzJzogdSdcbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gKlRoZSB3aXRoXG5zdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgbWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuJywKLSAnY29udGludWUnOiB1J1xuVGhlICJjb250aW51ZSIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgY29udGludWVfc3RtdCA6Oj0gImNvbnRpbnVlIlxuXG4iY29udGludWUiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgIndoaWxlIlxubG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uIG9yICJmaW5hbGx5IlxuY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZSBvZiB0aGVcbm5lYXJlc3QgZW5jbG9zaW5nIGxvb3AuXG5cbldoZW4gImNvbnRpbnVlIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhXG4iZmluYWxseSIgY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxuc3RhcnRpbmcgdGhlIG5leHQgbG9vcCBjeWNsZS5cbicsCi0gJ2NvbnZlcnNpb25zJzogdSdcbkFyaXRobWV0aWMgY29udmVyc2lvbnNcbioqKioqKioqKioqKioqKioqKioqKipcblxuV2hlbiBhIGRlc2NyaXB0aW9uIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IgYmVsb3cgdXNlcyB0aGUgcGhyYXNlXG4idGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwiIHRoaXMgbWVhbnNcbnRoYXQgdGhlIG9wZXJhdG9yIGltcGxlbWVudGF0aW9uIGZvciBidWlsdC1pbiB0eXBlcyB3b3JrcyBhcyBmb2xsb3dzOlxuXG4qIElmIGVpdGhlciBhcmd1bWVudCBpcyBhIGNvbXBsZXggbnVtYmVyLCB0aGUgb3RoZXIgaXMgY29udmVydGVkIHRvXG4gIGNvbXBsZXg7XG5cbiogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIHRoZVxuICBvdGhlciBpcyBjb252ZXJ0ZWQgdG8gZmxvYXRpbmcgcG9pbnQ7XG5cbiogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5LlxuXG5Tb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhIHN0cmluZyBhcyBhXG5sZWZ0IGFyZ3VtZW50IHRvIHRoZSBcJyVcJyBvcGVyYXRvcikuICBFeHRlbnNpb25zIG11c3QgZGVmaW5lIHRoZWlyIG93blxuY29udmVyc2lvbiBiZWhhdmlvci5cbicsCi0gJ2N1c3RvbWl6YXRpb24nOiB1J1xuQmFzaWMgY3VzdG9taXphdGlvblxuKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCBpbnZlcnRzIHRoZVxuICAgcmVzdWx0IHVubGVzcyBpdCBpcyAiTm90SW1wbGVtZW50ZWQiLiAgVGhlcmUgYXJlIG5vIG90aGVyIGltcGxpZWRcbiAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgZXhhbXBsZSwgdGhlXG4gICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyBhdXRvbWF0aWNhbGx5XG4gICBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdCBvcGVyYXRpb24sIHNlZVxuICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cblxuICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzIHJlZmxlY3Rpb24sXG4gICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uIElmIHRoZVxuICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhXG4gICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwncyB0eXBlLCB0aGVcbiAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCBvdGhlcndpc2UgdGhlXG4gICBsZWZ0IG9wZXJhbmRcJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgaXMgbm90XG4gICBjb25zaWRlcmVkLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlOyBpdCBpc1xuICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpIHRoZSBoYXNoXG4gICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluXG4gICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAiX19lcV9fKCkiXG4gICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgaXRlbXMgaW5cbiAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyBhbmRcbiAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4gICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSBjb2xsZWN0aW9uc1xuICAgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlIG9iamVjdFwncyBoYXNoXG4gICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiIG1ldGhvZHMgYnlcbiAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gaGFzaCh5KSIuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICJfX2hhc2hfXygpIlxuICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgV2hlbiB0aGVcbiAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3NcbiAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG9cbiAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlIGludGVycHJldGVyXG4gICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gc3VwcHJlc3NcbiAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgdGhhdFxuICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmRcbiAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90XG4gICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0IGlzXG4gICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzIGFyZVxuICAgY29uc2lkZXJlZCB0cnVlLlxuJywKLSAnZGVidWdnZXInOiB1J1xuInBkYiIgLS0tIFRoZSBQeXRob24gRGVidWdnZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbioqU291cmNlIGNvZGU6KiogTGliL3BkYi5weVxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSBjbGFzc1xuIlBkYiIuIFRoaXMgaXMgY3VycmVudGx5IHVuZG9jdW1lbnRlZCBidXQgZWFzaWx5IHVuZGVyc3Rvb2QgYnkgcmVhZGluZ1xudGhlIHNvdXJjZS4gIFRoZSBleHRlbnNpb24gaW50ZXJmYWNlIHVzZXMgdGhlIG1vZHVsZXMgImJkYiIgYW5kICJjbWQiLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzICIoUGRiKSIuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgcHJvZ3JhbSB1bmRlclxuY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gcGRiLnJ1bihcJ215bW9kdWxlLnRlc3QoKVwnKVxuICAgPiA8c3RyaW5nPigwKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICBOYW1lRXJyb3I6IFwnc3BhbVwnXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBUYWItY29tcGxldGlvbiB2aWEgdGhlICJyZWFkbGluZSIgbW9kdWxlIGlzXG5hdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZCBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCBnbG9iYWxcbmFuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlICJwIiBjb21tYW5kLlxuXG4icGRiLnB5IiBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuICBGb3JcbmV4YW1wbGU6XG5cbiAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG5cbldoZW4gaW52b2tlZCBhcyBhIHNjcmlwdCwgcGRiIHdpbGwgYXV0b21hdGljYWxseSBlbnRlciBwb3N0LW1vcnRlbVxuZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuICBBZnRlciBwb3N0LVxubW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgd2lsbFxucmVzdGFydCB0aGUgcHJvZ3JhbS4gIEF1dG9tYXRpYyByZXN0YXJ0aW5nIHByZXNlcnZlcyBwZGJcJ3Mgc3RhdGUgKHN1Y2hcbmFzIGJyZWFrcG9pbnRzKSBhbmQgaW4gbW9zdCBjYXNlcyBpcyBtb3JlIHVzZWZ1bCB0aGFuIHF1aXR0aW5nIHRoZVxuZGVidWdnZXIgdXBvbiBwcm9ncmFtXCdzIGV4aXQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMjogInBkYi5weSIgbm93IGFjY2VwdHMgYSAiLWMiIG9wdGlvbiB0aGF0IGV4ZWN1dGVzXG5jb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhICIucGRicmMiIGZpbGUsIHNlZSAqRGVidWdnZXIgQ29tbWFuZHMqLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyBwcm9ncmFtIGlzXG50byBpbnNlcnRcblxuICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG5cbmF0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gdGhlblxuc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlIHJ1bm5pbmdcbndpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSAiY29udGludWUiIGNvbW1hbmQuXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGluc3BlY3QgYSBjcmFzaGVkIHByb2dyYW0gaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gbXltb2R1bGUudGVzdCgpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdFxuICAgICAgIHRlc3QyKClcbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbiAgICAgICBwcmludChzcGFtKVxuICAgTmFtZUVycm9yOiBzcGFtXG4gICA+Pj4gcGRiLnBtKClcbiAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbiAgIC0+IHByaW50KHNwYW0pXG4gICAoUGRiKVxuXG5UaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSBkZWJ1Z2dlclxuaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuXG5wZGIucnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpIHVuZGVyXG4gICBkZWJ1Z2dlciBjb250cm9sLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgY29kZSBpc1xuICAgZXhlY3V0ZWQ7IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzIGFuZCB0eXBlICJjb250aW51ZSIsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nICJzdGVwIiBvciAibmV4dCIgKGFsbCB0aGVzZVxuICAgY29tbWFuZHMgYXJlIGV4cGxhaW5lZCBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAqbG9jYWxzKlxuICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzIGV4ZWN1dGVkOyBieVxuICAgZGVmYXVsdCB0aGUgZGljdGlvbmFyeSBvZiB0aGUgbW9kdWxlICJfX21haW5fXyIgaXMgdXNlZC4gIChTZWUgdGhlXG4gICBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgb3IgImV2YWwoKSIgZnVuY3Rpb25zLilcblxucGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdClcbiAgIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuICBXaGVuICJydW5ldmFsKCkiIHJldHVybnMsIGl0IHJldHVybnMgdGhlXG4gICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG9cbiAgICJydW4oKSIuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gInJ1bmNhbGwoKSIgcmV0dXJucywgaXQgcmV0dXJuc1xuICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnNcbiAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG5cbnBkYi5zZXRfdHJhY2UoKVxuXG4gICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiB0aGVcbiAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuICAgZmFpbHMpLlxuXG5wZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgSWYgbm9cbiAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzXG4gICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCBpZiB0aGVcbiAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG5cbnBkYi5wbSgpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4gICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cblxuVGhlICJydW4qIiBmdW5jdGlvbnMgYW5kICJzZXRfdHJhY2UoKSIgYXJlIGFsaWFzZXMgZm9yIGluc3RhbnRpYXRpbmdcbnRoZSAiUGRiIiBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWUuICBJZiB5b3Ugd2FudFxudG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG5cbmNsYXNzIGNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9XCd0YWJcJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UpXG5cbiAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cblxuICAgVGhlICpjb21wbGV0ZWtleSosICpzdGRpbiogYW5kICpzdGRvdXQqIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZVxuICAgdW5kZXJseWluZyAiY21kLkNtZCIgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgIkN0cmwtQyIgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgYVxuICAgImNvbnRpbnVlIiBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXJcbiAgIGFnYWluIGJ5IHByZXNzaW5nICJDdHJsLUMiLiAgSWYgeW91IHdhbnQgUGRiIG5vdCB0byB0b3VjaCB0aGVcbiAgIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0b3QgdHJ1ZS5cblxuICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuXG4gICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9W1wnZGphbmdvLipcJ10pLnNldF90cmFjZSgpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgKm5vc2lnaW50KiBhcmd1bWVudC4gIFByZXZpb3VzbHksIGEgU0lHSU5UXG4gICBoYW5kbGVyIHdhcyBuZXZlciBzZXQgYnkgUGRiLlxuXG4gICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuICAgcnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuICAgcnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcbiAgIHNldF90cmFjZSgpXG5cbiAgICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZ1bmN0aW9ucyBleHBsYWluZWQgYWJvdmUuXG5cblxuRGVidWdnZXIgQ29tbWFuZHNcbj09PT09PT09PT09PT09PT09XG5cblRoZSBjb21tYW5kcyByZWNvZ25pemVkIGJ5IHRoZSBkZWJ1Z2dlciBhcmUgbGlzdGVkIGJlbG93LiAgTW9zdFxuY29tbWFuZHMgY2FuIGJlIGFiYnJldmlhdGVkIHRvIG9uZSBvciB0d28gbGV0dGVycyBhcyBpbmRpY2F0ZWQ7IGUuZy5cbiJoKGVscCkiIG1lYW5zIHRoYXQgZWl0aGVyICJoIiBvciAiaGVscCIgY2FuIGJlIHVzZWQgdG8gZW50ZXIgdGhlIGhlbHBcbmNvbW1hbmQgKGJ1dCBub3QgImhlIiBvciAiaGVsIiwgbm9yICJIIiBvciAiSGVscCIgb3IgIkhFTFAiKS5cbkFyZ3VtZW50cyB0byBjb21tYW5kcyBtdXN0IGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIChzcGFjZXMgb3JcbnRhYnMpLiAgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHMgKCJbXSIpIGluXG50aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG5BbHRlcm5hdGl2ZXMgaW4gdGhlIGNvbW1hbmQgc3ludGF4IGFyZSBzZXBhcmF0ZWQgYnkgYSB2ZXJ0aWNhbCBiYXJcbigifCIpLlxuXG5FbnRlcmluZyBhIGJsYW5rIGxpbmUgcmVwZWF0cyB0aGUgbGFzdCBjb21tYW5kIGVudGVyZWQuICBFeGNlcHRpb246IGlmXG50aGUgbGFzdCBjb21tYW5kIHdhcyBhICJsaXN0IiBjb21tYW5kLCB0aGUgbmV4dCAxMSBsaW5lcyBhcmUgbGlzdGVkLlxuXG5Db21tYW5kcyB0aGF0IHRoZSBkZWJ1Z2dlciBkb2VzblwndCByZWNvZ25pemUgYXJlIGFzc3VtZWQgdG8gYmUgUHl0aG9uXG5zdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkLiAgUHl0aG9uIHN0YXRlbWVudHMgY2FuIGFsc28gYmUgcHJlZml4ZWQgd2l0aCBhbiBleGNsYW1hdGlvblxucG9pbnQgKCIhIikuICBUaGlzIGlzIGEgcG93ZXJmdWwgd2F5IHRvIGluc3BlY3QgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSBmdW5jdGlvbi5cbldoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBzdWNoIGEgc3RhdGVtZW50LCB0aGUgZXhjZXB0aW9uIG5hbWUgaXNcbnByaW50ZWQgYnV0IHRoZSBkZWJ1Z2dlclwncyBzdGF0ZSBpcyBub3QgY2hhbmdlZC5cblxuVGhlIGRlYnVnZ2VyIHN1cHBvcnRzICphbGlhc2VzKi4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyB3aGljaFxuYWxsb3dzIG9uZSBhIGNlcnRhaW4gbGV2ZWwgb2YgYWRhcHRhYmlsaXR5IHRvIHRoZSBjb250ZXh0IHVuZGVyXG5leGFtaW5hdGlvbi5cblxuTXVsdGlwbGUgY29tbWFuZHMgbWF5IGJlIGVudGVyZWQgb24gYSBzaW5nbGUgbGluZSwgc2VwYXJhdGVkIGJ5ICI7OyIuXG4oQSBzaW5nbGUgIjsiIGlzIG5vdCB1c2VkIGFzIGl0IGlzIHRoZSBzZXBhcmF0b3IgZm9yIG11bHRpcGxlIGNvbW1hbmRzXG5pbiBhIGxpbmUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIFB5dGhvbiBwYXJzZXIuKSAgTm8gaW50ZWxsaWdlbmNlIGlzXG5hcHBsaWVkIHRvIHNlcGFyYXRpbmcgdGhlIGNvbW1hbmRzOyB0aGUgaW5wdXQgaXMgc3BsaXQgYXQgdGhlIGZpcnN0XG4iOzsiIHBhaXIsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHF1b3RlZCBzdHJpbmcuXG5cbklmIGEgZmlsZSAiLnBkYnJjIiBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gdGhlXG5jdXJyZW50IGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkIGJlZW4gdHlwZWRcbmF0IHRoZSBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGFsaWFzZXMuICBJZlxuYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCBhbmRcbmFsaWFzZXMgZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIi5wZGJyYyIgY2FuIG5vdyBjb250YWluIGNvbW1hbmRzIHRoYXRcbmNvbnRpbnVlIGRlYnVnZ2luZywgc3VjaCBhcyAiY29udGludWUiIG9yICJuZXh0Ii4gIFByZXZpb3VzbHksIHRoZXNlXG5jb21tYW5kcyBoYWQgbm8gZWZmZWN0LlxuXG5oKGVscCkgW2NvbW1hbmRdXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIHByaW50IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4gIFdpdGggYVxuICAgKmNvbW1hbmQqIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4gICJoZWxwIHBkYiJcbiAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlICJwZGIiXG4gICBtb2R1bGUpLiAgU2luY2UgdGhlICpjb21tYW5kKiBhcmd1bWVudCBtdXN0IGJlIGFuIGlkZW50aWZpZXIsICJoZWxwXG4gICBleGVjIiBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlICIhIiBjb21tYW5kLlxuXG53KGhlcmUpXG5cbiAgIFByaW50IGEgc3RhY2sgdHJhY2UsIHdpdGggdGhlIG1vc3QgcmVjZW50IGZyYW1lIGF0IHRoZSBib3R0b20uICBBblxuICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb250ZXh0IG9mXG4gICBtb3N0IGNvbW1hbmRzLlxuXG5kKG93bikgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiB0aGVcbiAgIHN0YWNrIHRyYWNlICh0byBhIG5ld2VyIGZyYW1lKS5cblxudShwKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgc3RhY2tcbiAgIHRyYWNlICh0byBhbiBvbGRlciBmcmFtZSkuXG5cbmIocmVhaykgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50IGZpbGUuXG4gICBXaXRoIGEgKmZ1bmN0aW9uKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgYXQgdGhlIGZpcnN0IGV4ZWN1dGFibGVcbiAgIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gIFRoZSBsaW5lIG51bWJlciBtYXkgYmUgcHJlZml4ZWRcbiAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gYW5vdGhlclxuICAgZmlsZSAocHJvYmFibHkgb25lIHRoYXQgaGFzblwndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgaXNcbiAgIHNlYXJjaGVkIG9uICJzeXMucGF0aCIuICBOb3RlIHRoYXQgZWFjaCBicmVha3BvaW50IGlzIGFzc2lnbmVkIGFcbiAgIG51bWJlciB0byB3aGljaCBhbGwgdGhlIG90aGVyIGJyZWFrcG9pbnQgY29tbWFuZHMgcmVmZXIuXG5cbiAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC5cblxuICAgV2l0aG91dCBhcmd1bWVudCwgbGlzdCBhbGwgYnJlYWtzLCBpbmNsdWRpbmcgZm9yIGVhY2ggYnJlYWtwb2ludCxcbiAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlIGN1cnJlbnRcbiAgIGlnbm9yZSBjb3VudCwgYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBpZiBhbnkuXG5cbnRicmVhayBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCBpc1xuICAgZmlyc3QgaGl0LiBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgImJyZWFrIi5cblxuY2woZWFyKSBbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyBhdFxuICAgdGhpcyBsaW5lLiBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCBjbGVhclxuICAgdGhvc2UgYnJlYWtwb2ludHMuIFdpdGhvdXQgYXJndW1lbnQsIGNsZWFyIGFsbCBicmVha3MgKGJ1dCBmaXJzdFxuICAgYXNrIGNvbmZpcm1hdGlvbikuXG5cbmRpc2FibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBEaXNhYmxlIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mXG4gICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdCBjYXVzZVxuICAgdGhlIHByb2dyYW0gdG8gc3RvcCBleGVjdXRpb24sIGJ1dCB1bmxpa2UgY2xlYXJpbmcgYSBicmVha3BvaW50LCBpdFxuICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cblxuZW5hYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRW5hYmxlIHRoZSBicmVha3BvaW50cyBzcGVjaWZpZWQuXG5cbmlnbm9yZSBicG51bWJlciBbY291bnRdXG5cbiAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZiBjb3VudCBpc1xuICAgb21pdHRlZCwgdGhlIGlnbm9yZSBjb3VudCBpcyBzZXQgdG8gMC4gIEEgYnJlYWtwb2ludCBiZWNvbWVzIGFjdGl2ZVxuICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbiAgIGRlY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgYnJlYWtwb2ludCBpcyByZWFjaGVkIGFuZCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUuXG5cbmNvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuXG4gICBTZXQgYSBuZXcgKmNvbmRpdGlvbiogZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZiAqY29uZGl0aW9uKlxuICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSBicmVha3BvaW50XG4gICBpcyBtYWRlIHVuY29uZGl0aW9uYWwuXG5cbmNvbW1hbmRzIFticG51bWJlcl1cblxuICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICBUaGVcbiAgIGNvbW1hbmRzIHRoZW1zZWx2ZXMgYXBwZWFyIG9uIHRoZSBmb2xsb3dpbmcgbGluZXMuICBUeXBlIGEgbGluZVxuICAgY29udGFpbmluZyBqdXN0ICJlbmQiIHRvIHRlcm1pbmF0ZSB0aGUgY29tbWFuZHMuIEFuIGV4YW1wbGU6XG5cbiAgICAgIChQZGIpIGNvbW1hbmRzIDFcbiAgICAgIChjb20pIHAgc29tZV92YXJpYWJsZVxuICAgICAgKGNvbSkgZW5kXG4gICAgICAoUGRiKVxuXG4gICBUbyByZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gYSBicmVha3BvaW50LCB0eXBlIGNvbW1hbmRzIGFuZCBmb2xsb3dcbiAgIGl0IGltbWVkaWF0ZWx5IHdpdGggImVuZCI7IHRoYXQgaXMsIGdpdmUgbm8gY29tbWFuZHMuXG5cbiAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0IGJyZWFrcG9pbnRcbiAgIHNldC5cblxuICAgWW91IGNhbiB1c2UgYnJlYWtwb2ludCBjb21tYW5kcyB0byBzdGFydCB5b3VyIHByb2dyYW0gdXAgYWdhaW4uXG4gICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgY29tbWFuZCB0aGF0XG4gICByZXN1bWVzIGV4ZWN1dGlvbi5cblxuICAgU3BlY2lmeWluZyBhbnkgY29tbWFuZCByZXN1bWluZyBleGVjdXRpb24gKGN1cnJlbnRseSBjb250aW51ZSxcbiAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgdGVybWluYXRlc1xuICAgdGhlIGNvbW1hbmQgbGlzdCAoYXMgaWYgdGhhdCBjb21tYW5kIHdhcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieVxuICAgZW5kKS4gVGhpcyBpcyBiZWNhdXNlIGFueSB0aW1lIHlvdSByZXN1bWUgZXhlY3V0aW9uIChldmVuIHdpdGggYVxuICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgYnJlYWtwb2ludC0td2hpY2hcbiAgIGNvdWxkIGhhdmUgaXRzIG93biBjb21tYW5kIGxpc3QsIGxlYWRpbmcgdG8gYW1iaWd1aXRpZXMgYWJvdXQgd2hpY2hcbiAgIGxpc3QgdG8gZXhlY3V0ZS5cblxuICAgSWYgeW91IHVzZSB0aGUgXCdzaWxlbnRcJyBjb21tYW5kIGluIHRoZSBjb21tYW5kIGxpc3QsIHRoZSB1c3VhbFxuICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzIG1heSBiZVxuICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljIG1lc3NhZ2UgYW5kXG4gICB0aGVuIGNvbnRpbnVlLiAgSWYgbm9uZSBvZiB0aGUgb3RoZXIgY29tbWFuZHMgcHJpbnQgYW55dGhpbmcsIHlvdVxuICAgc2VlIG5vIHNpZ24gdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcmVhY2hlZC5cblxucyh0ZXApXG5cbiAgIEV4ZWN1dGUgdGhlIGN1cnJlbnQgbGluZSwgc3RvcCBhdCB0aGUgZmlyc3QgcG9zc2libGUgb2NjYXNpb25cbiAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBvbiB0aGUgbmV4dCBsaW5lIGluIHRoZVxuICAgY3VycmVudCBmdW5jdGlvbikuXG5cbm4oZXh0KVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiBpc1xuICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIm5leHQiIGFuZCAic3RlcCJcbiAgIGlzIHRoYXQgInN0ZXAiIHN0b3BzIGluc2lkZSBhIGNhbGxlZCBmdW5jdGlvbiwgd2hpbGUgIm5leHQiXG4gICBleGVjdXRlcyBjYWxsZWQgZnVuY3Rpb25zIGF0IChuZWFybHkpIGZ1bGwgc3BlZWQsIG9ubHkgc3RvcHBpbmcgYXRcbiAgIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24uKVxuXG51bnQoaWwpIFtsaW5lbm9dXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lIGlzIHJlYWNoZWQuXG5cbiAgIFdpdGggYSBsaW5lIG51bWJlciwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIGEgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoYXQgaXMgcmVhY2hlZC4gIEluIGJvdGggY2FzZXMsIGFsc28gc3RvcCB3aGVuXG4gICB0aGUgY3VycmVudCBmcmFtZSByZXR1cm5zLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBBbGxvdyBnaXZpbmcgYW4gZXhwbGljaXQgbGluZSBudW1iZXIuXG5cbnIoZXR1cm4pXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY3VycmVudCBmdW5jdGlvbiByZXR1cm5zLlxuXG5jKG9udChpbnVlKSlcblxuICAgQ29udGludWUgZXhlY3V0aW9uLCBvbmx5IHN0b3Agd2hlbiBhIGJyZWFrcG9pbnQgaXMgZW5jb3VudGVyZWQuXG5cbmoodW1wKSBsaW5lbm9cblxuICAgU2V0IHRoZSBuZXh0IGxpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLiAgT25seSBhdmFpbGFibGUgaW4gdGhlXG4gICBib3R0b20tbW9zdCBmcmFtZS4gIFRoaXMgbGV0cyB5b3UganVtcCBiYWNrIGFuZCBleGVjdXRlIGNvZGUgYWdhaW4sXG4gICBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvblwndCB3YW50IHRvIHJ1bi5cblxuICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbm90IGFsbCBqdW1wcyBhcmUgYWxsb3dlZCAtLSBmb3IgaW5zdGFuY2VcbiAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBqdW1wIGludG8gdGhlIG1pZGRsZSBvZiBhICJmb3IiIGxvb3Agb3Igb3V0XG4gICBvZiBhICJmaW5hbGx5IiBjbGF1c2UuXG5cbmwoaXN0KSBbZmlyc3RbLCBsYXN0XV1cblxuICAgTGlzdCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gIFdpdGhvdXQgYXJndW1lbnRzLCBsaXN0IDExXG4gICBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZSBvciBjb250aW51ZSB0aGUgcHJldmlvdXMgbGlzdGluZy5cbiAgIFdpdGggIi4iIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lLiAgV2l0aFxuICAgb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBsZXNzXG4gICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cblxuICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgIi0+Ii4gIElmIGFuXG4gICBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gd2FzXG4gICBvcmlnaW5hbGx5IHJhaXNlZCBvciBwcm9wYWdhdGVkIGlzIGluZGljYXRlZCBieSAiPj4iLCBpZiBpdCBkaWZmZXJzXG4gICBmcm9tIHRoZSBjdXJyZW50IGxpbmUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICI+PiIgbWFya2VyLlxuXG5sbCB8IGxvbmdsaXN0XG5cbiAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbiAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yICJsaXN0Ii5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hKHJncylcblxuICAgUHJpbnQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uXG5cbnAgZXhwcmVzc2lvblxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50IGl0c1xuICAgdmFsdWUuXG5cbiAgIE5vdGU6ICJwcmludCgpIiBjYW4gYWxzbyBiZSB1c2VkLCBidXQgaXMgbm90IGEgZGVidWdnZXIgY29tbWFuZFxuICAgICAtLS0gdGhpcyBleGVjdXRlcyB0aGUgUHl0aG9uICJwcmludCgpIiBmdW5jdGlvbi5cblxucHAgZXhwcmVzc2lvblxuXG4gICBMaWtlIHRoZSAicCIgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpcyBwcmV0dHktXG4gICBwcmludGVkIHVzaW5nIHRoZSAicHByaW50IiBtb2R1bGUuXG5cbndoYXRpcyBleHByZXNzaW9uXG5cbiAgIFByaW50IHRoZSB0eXBlIG9mIHRoZSAqZXhwcmVzc2lvbiouXG5cbnNvdXJjZSBleHByZXNzaW9uXG5cbiAgIFRyeSB0byBnZXQgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBvYmplY3QgYW5kIGRpc3BsYXkgaXQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaWYgaXQgY2hhbmdlZCwgZWFjaCB0aW1lXG4gICBleGVjdXRpb24gc3RvcHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnVuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRG8gbm90IGRpc3BsYXkgdGhlIGV4cHJlc3Npb24gYW55IG1vcmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGNsZWFyIGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuaW50ZXJhY3RcblxuICAgU3RhcnQgYW4gaW50ZXJhdGl2ZSBpbnRlcnByZXRlciAodXNpbmcgdGhlICJjb2RlIiBtb2R1bGUpIHdob3NlXG4gICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzIGZvdW5kIGluXG4gICB0aGUgY3VycmVudCBzY29wZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hbGlhcyBbbmFtZSBbY29tbWFuZF1dXG5cbiAgIENyZWF0ZSBhbiBhbGlhcyBjYWxsZWQgKm5hbWUqIHRoYXQgZXhlY3V0ZXMgKmNvbW1hbmQqLiAgVGhlIGNvbW1hbmRcbiAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gYmVcbiAgIGluZGljYXRlZCBieSAiJTEiLCAiJTIiLCBhbmQgc28gb24sIHdoaWxlICIlKiIgaXMgcmVwbGFjZWQgYnkgYWxsXG4gICB0aGUgcGFyYW1ldGVycy4gSWYgbm8gY29tbWFuZCBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgYWxpYXMgZm9yXG4gICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSBsaXN0ZWQuXG5cbiAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgbGVnYWxseVxuICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICpjYW4qIGJlXG4gICBvdmVycmlkZGVuIGJ5IGFsaWFzZXMuICBTdWNoIGEgY29tbWFuZCBpcyB0aGVuIGhpZGRlbiB1bnRpbCB0aGVcbiAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlIGxlZnRcbiAgIGFsb25lLlxuXG4gICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiBwbGFjZWRcbiAgIGluIHRoZSAiLnBkYnJjIiBmaWxlKTpcblxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgKHVzYWdlICJwaSBjbGFzc0luc3QiKVxuICAgICAgYWxpYXMgcGkgZm9yIGsgaW4gJTEuX19kaWN0X18ua2V5cygpOiBwcmludCgiJTEuIixrLCI9IiwlMS5fX2RpY3RfX1trXSlcbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzIGluIHNlbGZcbiAgICAgIGFsaWFzIHBzIHBpIHNlbGZcblxudW5hbGlhcyBuYW1lXG5cbiAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLlxuXG4hIHN0YXRlbWVudFxuXG4gICBFeGVjdXRlIHRoZSAob25lLWxpbmUpICpzdGF0ZW1lbnQqIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50XG4gICBzdGFjayBmcmFtZS4gVGhlIGV4Y2xhbWF0aW9uIHBvaW50IGNhbiBiZSBvbWl0dGVkIHVubGVzcyB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8gc2V0IGFcbiAgIGdsb2JhbCB2YXJpYWJsZSwgeW91IGNhbiBwcmVmaXggdGhlIGFzc2lnbm1lbnQgY29tbWFuZCB3aXRoIGFcbiAgICJnbG9iYWwiIHN0YXRlbWVudCBvbiB0aGUgc2FtZSBsaW5lLCBlLmcuOlxuXG4gICAgICAoUGRiKSBnbG9iYWwgbGlzdF9vcHRpb25zOyBsaXN0X29wdGlvbnMgPSBbXCctbFwnXVxuICAgICAgKFBkYilcblxucnVuIFthcmdzIC4uLl1cbnJlc3RhcnQgW2FyZ3MgLi4uXVxuXG4gICBSZXN0YXJ0IHRoZSBkZWJ1Z2dlZCBQeXRob24gcHJvZ3JhbS4gIElmIGFuIGFyZ3VtZW50IGlzIHN1cHBsaWVkLFxuICAgaXQgaXMgc3BsaXQgd2l0aCAic2hsZXgiIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuICAgInN5cy5hcmd2Ii4gSGlzdG9yeSwgYnJlYWtwb2ludHMsIGFjdGlvbnMgYW5kIGRlYnVnZ2VyIG9wdGlvbnMgYXJlXG4gICBwcmVzZXJ2ZWQuICJyZXN0YXJ0IiBpcyBhbiBhbGlhcyBmb3IgInJ1biIuXG5cbnEodWl0KVxuXG4gICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiAgVGhlIHByb2dyYW0gYmVpbmcgZXhlY3V0ZWQgaXMgYWJvcnRlZC5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluIG1vZHVsZVxuICAgIGlzIGRldGVybWluZWQgYnkgdGhlICJfX25hbWVfXyIgaW4gdGhlIGZyYW1lIGdsb2JhbHMuXG4nLAotICdkZWwnOiB1J1xuVGhlICJkZWwiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKlxuXG4gICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcblxuRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50IGlzXG5kZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSBzb21lXG5oaW50cy5cblxuRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tIGxlZnRcbnRvIHJpZ2h0LlxuXG5EZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgZnJvbSB0aGUgbG9jYWwgb3Jcbmdsb2JhbCBuYW1lc3BhY2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuYW1lIG9jY3VycyBpbiBhICJnbG9iYWwiXG5zdGF0ZW1lbnQgaW4gdGhlIHNhbWUgY29kZSBibG9jay4gIElmIHRoZSBuYW1lIGlzIHVuYm91bmQsIGFcbiJOYW1lRXJyb3IiIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cblxuRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzIHBhc3NlZFxudG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgZXZlblxudGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lXG5mcm9tIHRoZSBsb2NhbCBuYW1lc3BhY2UgaWYgaXQgb2NjdXJzIGFzIGEgZnJlZSB2YXJpYWJsZSBpbiBhIG5lc3RlZFxuYmxvY2suXG4nLAotICdkaWN0JzogdSdcbkRpY3Rpb25hcnkgZGlzcGxheXNcbioqKioqKioqKioqKioqKioqKipcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtIHBhaXJzXG5lbmNsb3NlZCBpbiBjdXJseSBicmFjZXM6XG5cbiAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8IGRpY3RfY29tcHJlaGVuc2lvbl0gIn0iXG4gICBrZXlfZGF0dW1fbGlzdCAgICAgOjo9IGtleV9kYXR1bSAoIiwiIGtleV9kYXR1bSkqIFsiLCJdXG4gICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gfCAiKioiIG9yX2V4cHJcbiAgIGRpY3RfY29tcHJlaGVuc2lvbiA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiBjb21wX2ZvclxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG5cbklmIGEgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlIG9mIGtleS9kYXR1bSBwYWlycyBpcyBnaXZlbiwgdGhleSBhcmVcbmV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgdG8gZGVmaW5lIHRoZSBlbnRyaWVzIG9mIHRoZSBkaWN0aW9uYXJ5OlxuZWFjaCBrZXkgb2JqZWN0IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgZGljdGlvbmFyeSB0byBzdG9yZSB0aGVcbmNvcnJlc3BvbmRpbmcgZGF0dW0uICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHRoZSBzYW1lIGtleVxubXVsdGlwbGUgdGltZXMgaW4gdGhlIGtleS9kYXR1bSBsaXN0LCBhbmQgdGhlIGZpbmFsIGRpY3Rpb25hcnlcJ3MgdmFsdWVcbmZvciB0aGF0IGtleSB3aWxsIGJlIHRoZSBsYXN0IG9uZSBnaXZlbi5cblxuQSBkb3VibGUgYXN0ZXJpc2sgIioqIiBkZW5vdGVzICpkaWN0aW9uYXJ5IHVucGFja2luZyouIEl0cyBvcGVyYW5kXG5tdXN0IGJlIGEgKm1hcHBpbmcqLiAgRWFjaCBtYXBwaW5nIGl0ZW0gaXMgYWRkZWQgdG8gdGhlIG5ld1xuZGljdGlvbmFyeS4gIExhdGVyIHZhbHVlcyByZXBsYWNlIHZhbHVlcyBhbHJlYWR5IHNldCBieSBlYXJsaWVyXG5rZXkvZGF0dW0gcGFpcnMgYW5kIGVhcmxpZXIgZGljdGlvbmFyeSB1bnBhY2tpbmdzLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjU6IFVucGFja2luZyBpbnRvIGRpY3Rpb25hcnkgZGlzcGxheXMsIG9yaWdpbmFsbHlcbnByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuXG5BIGRpY3QgY29tcHJlaGVuc2lvbiwgaW4gY29udHJhc3QgdG8gbGlzdCBhbmQgc2V0IGNvbXByZWhlbnNpb25zLFxubmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlIHVzdWFsXG4iZm9yIiBhbmQgImlmIiBjbGF1c2VzLiBXaGVuIHRoZSBjb21wcmVoZW5zaW9uIGlzIHJ1biwgdGhlIHJlc3VsdGluZ1xua2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSBvcmRlclxudGhleSBhcmUgcHJvZHVjZWQuXG5cblJlc3RyaWN0aW9ucyBvbiB0aGUgdHlwZXMgb2YgdGhlIGtleSB2YWx1ZXMgYXJlIGxpc3RlZCBlYXJsaWVyIGluXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqLiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG5zaG91bGQgYmUgKmhhc2hhYmxlKiwgd2hpY2ggZXhjbHVkZXMgYWxsIG11dGFibGUgb2JqZWN0cy4pICBDbGFzaGVzXG5iZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICh0ZXh0dWFsbHlcbnJpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCi0gJ2R5bmFtaWMtZmVhdHVyZXMnOiB1J1xuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgY29tcGlsZVxudGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuXG4gICBpID0gMTBcbiAgIGRlZiBmKCk6XG4gICAgICAgcHJpbnQoaSlcbiAgIGkgPSA0MlxuICAgZigpXG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cblRoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbFxuZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWxcbmFuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZFxuaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgWzFdXG5UaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAotICdlbHNlJzogdSdcblRoZSAiaWYiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqXG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCi0gJ2V4Y2VwdGlvbnMnOiB1J1xuRXhjZXB0aW9uc1xuKioqKioqKioqKlxuXG5FeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgY29udHJvbFxub2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgZXhjZXB0aW9uYWxcbmNvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBlcnJvciBpc1xuZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgYnkgYW55XG5jb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrIHdoZXJlXG50aGUgZXJyb3Igb2NjdXJyZWQuXG5cblRoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSBydW4tdGltZVxuZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG5leHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gRXhjZXB0aW9uXG5oYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICBUaGVcbiJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNsZWFudXBcbmNvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCB3aGV0aGVyIGFuXG5leGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cblxuUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0IGFuIG91dGVyXG5sZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgdGhlXG5mYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2Ugb2YgY29kZVxuZnJvbSB0aGUgdG9wKS5cblxuV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgdGVybWluYXRlc1xuZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluIGxvb3AuICBJblxuZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlIGV4Y2VwdGlvbiBpc1xuIlN5c3RlbUV4aXQiLlxuXG5FeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiBjbGF1c2UgaXNcbnNlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0IHJlZmVyZW5jZSB0aGVcbmNsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSBjYW4gYmVcbnJlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbmV4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cblxuTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gIFRoZWlyXG4gIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgd2l0aG91dFxuICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuIHVuZGVyXG4gIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cblxuU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHRyeVxuc3RhdGVtZW50KiBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgYnlcbiAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSBpc1xuICAgIGNvbXBpbGVkLlxuJywKLSAnZXhlY21vZGVsJzogdSdcbkV4ZWN1dGlvbiBtb2RlbFxuKioqKioqKioqKioqKioqXG5cblxuU3RydWN0dXJlIG9mIGEgcHJvZ3JhbVxuPT09PT09PT09PT09PT09PT09PT09PVxuXG5BIFB5dGhvbiBwcm9ncmFtIGlzIGNvbnN0cnVjdGVkIGZyb20gY29kZSBibG9ja3MuIEEgKmJsb2NrKiBpcyBhIHBpZWNlXG5vZiBQeXRob24gcHJvZ3JhbSB0ZXh0IHRoYXQgaXMgZXhlY3V0ZWQgYXMgYSB1bml0LiBUaGUgZm9sbG93aW5nIGFyZVxuYmxvY2tzOiBhIG1vZHVsZSwgYSBmdW5jdGlvbiBib2R5LCBhbmQgYSBjbGFzcyBkZWZpbml0aW9uLiBFYWNoXG5jb21tYW5kIHR5cGVkIGludGVyYWN0aXZlbHkgaXMgYSBibG9jay4gIEEgc2NyaXB0IGZpbGUgKGEgZmlsZSBnaXZlblxuYXMgc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGludGVycHJldGVyIG9yIHNwZWNpZmllZCBhcyBhIGNvbW1hbmQgbGluZVxuYXJndW1lbnQgdG8gdGhlIGludGVycHJldGVyKSBpcyBhIGNvZGUgYmxvY2suICBBIHNjcmlwdCBjb21tYW5kIChhXG5jb21tYW5kIHNwZWNpZmllZCBvbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIHdpdGggdGhlIFwnKiotYyoqXCdcbm9wdGlvbikgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIHN0cmluZyBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIGJ1aWx0LWluXG5mdW5jdGlvbnMgImV2YWwoKSIgYW5kICJleGVjKCkiIGlzIGEgY29kZSBibG9jay5cblxuQSBjb2RlIGJsb2NrIGlzIGV4ZWN1dGVkIGluIGFuICpleGVjdXRpb24gZnJhbWUqLiAgQSBmcmFtZSBjb250YWluc1xuc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvcm1hdGlvbiAodXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZGV0ZXJtaW5lc1xud2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBjb2RlIGJsb2NrXCdzIGV4ZWN1dGlvbiBoYXNcbmNvbXBsZXRlZC5cblxuXG5OYW1pbmcgYW5kIGJpbmRpbmdcbj09PT09PT09PT09PT09PT09PVxuXG5cbkJpbmRpbmcgb2YgbmFtZXNcbi0tLS0tLS0tLS0tLS0tLS1cblxuKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5UaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gZnVuY3Rpb25zLFxuImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kIHRoZVxuY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0IGFyZVxuaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciBhZnRlclxuImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgc3RhdGVtZW50XG5vZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgZm9ybVxubWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuXG5BIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kIGZvclxudGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgbmFtZSkuXG5cbkVhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkIGJ5IGFcbmNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlIHRvcC1sZXZlbFxuY29kZSBibG9jaykuXG5cbklmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgYmxvY2ssXG51bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCB0aGVcbm1vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgbW9kdWxlXG5jb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhIGNvZGVcbmJsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG5cbkVhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICpiaW5kaW5nKlxub2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uIHJ1bGVzLlxuXG5cblJlc29sdXRpb24gb2YgbmFtZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSBsb2NhbFxudmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmIHRoZVxuZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55IGJsb2Nrc1xuY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgaW50cm9kdWNlc1xuYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG5cbldoZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgbmVhcmVzdFxuZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgYmxvY2tcbmlzIGNhbGxlZCB0aGUgYmxvY2tcJ3MgKmVudmlyb25tZW50Ki5cblxuV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBJZlxudGhlIGN1cnJlbnQgc2NvcGUgaXMgYSBmdW5jdGlvbiBzY29wZSwgYW5kIHRoZSBuYW1lIHJlZmVycyB0byBhIGxvY2FsXG52YXJpYWJsZSB0aGF0IGhhcyBub3QgeWV0IGJlZW4gYm91bmQgdG8gYSB2YWx1ZSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlXG5uYW1lIGlzIHVzZWQsIGFuICJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbiJVbmJvdW5kTG9jYWxFcnJvciIgaXMgYSBzdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cblxuSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlIGJsb2NrLCBhbGxcbnVzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzIHRvIHRoZVxuY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgd2l0aGluIGFcbmJsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbmRlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyIGFueXdoZXJlXG53aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuIGJlXG5kZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy5cblxuSWYgdGhlICJnbG9iYWwiIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mIHRoZSBuYW1lXG5zcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgaW4gdGhlXG50b3AtbGV2ZWwgbmFtZXNwYWNlLiAgTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgbmFtZXNwYWNlIGJ5XG5zZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlXG5jb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlIG5hbWVzcGFjZVxub2YgdGhlIG1vZHVsZSAiYnVpbHRpbnMiLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgZmlyc3QuICBJZlxudGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzIHNlYXJjaGVkLiAgVGhlXG4iZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyBvcGVyYXRpb25cbmluIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgdmFyaWFibGVcbmNvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhIGdsb2JhbC5cblxuVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyBjb3JyZXNwb25kaW5nIG5hbWVzIHRvIHJlZmVyIHRvXG5wcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG4iU3ludGF4RXJyb3IiIGlzIHJhaXNlZCBhdCBjb21waWxlIHRpbWUgaWYgdGhlIGdpdmVuIG5hbWUgZG9lcyBub3RcbmV4aXN0IGluIGFueSBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG5cblRoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSBhXG5tb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyBjYWxsZWRcbiJfX21haW5fXyIuXG5cbkNsYXNzIGRlZmluaXRpb24gYmxvY2tzIGFuZCBhcmd1bWVudHMgdG8gImV4ZWMoKSIgYW5kICJldmFsKCkiIGFyZVxuc3BlY2lhbCBpbiB0aGUgY29udGV4dCBvZiBuYW1lIHJlc29sdXRpb24uIEEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhblxuZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmUgbmFtZXMuIFRoZXNlIHJlZmVyZW5jZXNcbmZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24gd2l0aCBhbiBleGNlcHRpb24gdGhhdFxudW5ib3VuZCBsb2NhbCB2YXJpYWJsZXMgYXJlIGxvb2tlZCB1cCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gVGhlXG5uYW1lc3BhY2Ugb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gYmVjb21lcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkgb2ZcbnRoZSBjbGFzcy4gVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgaW4gYSBjbGFzcyBibG9jayBpcyBsaW1pdGVkIHRvXG50aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCB0byB0aGUgY29kZSBibG9ja3Mgb2YgbWV0aG9kcyAtLVxudGhpcyBpbmNsdWRlcyBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIHNpbmNlIHRoZXkgYXJlXG5pbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmdcbndpbGwgZmFpbDpcblxuICAgY2xhc3MgQTpcbiAgICAgICBhID0gNDJcbiAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG5cblxuQnVpbHRpbnMgYW5kIHJlc3RyaWN0ZWQgZXhlY3V0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhIGNvZGUgYmxvY2tcbmlzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gaXRzIGdsb2JhbFxubmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSBsYXR0ZXIgY2FzZVxudGhlIG1vZHVsZVwncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIl9fbWFpbl9fIlxubW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gaW4gYW55XG5vdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiB0aGVcbiJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSB1c2VyLWNyZWF0ZWRcbmRpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbiJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBVc2Vyc1xud2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgImltcG9ydCJcbnRoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG5cblxuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgY29tcGlsZVxudGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuXG4gICBpID0gMTBcbiAgIGRlZiBmKCk6XG4gICAgICAgcHJpbnQoaSlcbiAgIGkgPSA0MlxuICAgZigpXG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cblRoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbFxuZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWxcbmFuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZFxuaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgWzFdXG5UaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG5cblxuRXhjZXB0aW9uc1xuPT09PT09PT09PVxuXG5FeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgY29udHJvbFxub2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgZXhjZXB0aW9uYWxcbmNvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBlcnJvciBpc1xuZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgYnkgYW55XG5jb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrIHdoZXJlXG50aGUgZXJyb3Igb2NjdXJyZWQuXG5cblRoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSBydW4tdGltZVxuZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG5leHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gRXhjZXB0aW9uXG5oYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICBUaGVcbiJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNsZWFudXBcbmNvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCB3aGV0aGVyIGFuXG5leGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cblxuUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0IGFuIG91dGVyXG5sZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgdGhlXG5mYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2Ugb2YgY29kZVxuZnJvbSB0aGUgdG9wKS5cblxuV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgdGVybWluYXRlc1xuZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluIGxvb3AuICBJblxuZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlIGV4Y2VwdGlvbiBpc1xuIlN5c3RlbUV4aXQiLlxuXG5FeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiBjbGF1c2UgaXNcbnNlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0IHJlZmVyZW5jZSB0aGVcbmNsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSBjYW4gYmVcbnJlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbmV4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cblxuTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gIFRoZWlyXG4gIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgd2l0aG91dFxuICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuIHVuZGVyXG4gIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cblxuU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHRyeVxuc3RhdGVtZW50KiBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgYnlcbiAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSBpc1xuICAgIGNvbXBpbGVkLlxuJywKLSAnZXhwcmxpc3RzJzogdSdcbkV4cHJlc3Npb24gbGlzdHNcbioqKioqKioqKioqKioqKipcblxuICAgZXhwcmVzc2lvbl9saXN0ICAgIDo6PSBleHByZXNzaW9uICggIiwiIGV4cHJlc3Npb24gKSogWyIsIl1cbiAgIHN0YXJyZWRfbGlzdCAgICAgICA6Oj0gc3RhcnJlZF9pdGVtICggIiwiIHN0YXJyZWRfaXRlbSApKiBbIiwiXVxuICAgc3RhcnJlZF9leHByZXNzaW9uIDo6PSBleHByZXNzaW9uIHwgKCBzdGFycmVkX2l0ZW0gIiwiICkqIFtzdGFycmVkX2l0ZW1dXG4gICBzdGFycmVkX2l0ZW0gICAgICAgOjo9IGV4cHJlc3Npb24gfCAiKiIgb3JfZXhwclxuXG5FeGNlcHQgd2hlbiBwYXJ0IG9mIGEgbGlzdCBvciBzZXQgZGlzcGxheSwgYW4gZXhwcmVzc2lvbiBsaXN0XG5jb250YWluaW5nIGF0IGxlYXN0IG9uZSBjb21tYSB5aWVsZHMgYSB0dXBsZS4gIFRoZSBsZW5ndGggb2YgdGhlIHR1cGxlXG5pcyB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSBsaXN0LiAgVGhlIGV4cHJlc3Npb25zIGFyZVxuZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodC5cblxuQW4gYXN0ZXJpc2sgIioiIGRlbm90ZXMgKml0ZXJhYmxlIHVucGFja2luZyouICBJdHMgb3BlcmFuZCBtdXN0IGJlIGFuXG4qaXRlcmFibGUqLiAgVGhlIGl0ZXJhYmxlIGlzIGV4cGFuZGVkIGludG8gYSBzZXF1ZW5jZSBvZiBpdGVtcywgd2hpY2hcbmFyZSBpbmNsdWRlZCBpbiB0aGUgbmV3IHR1cGxlLCBsaXN0LCBvciBzZXQsIGF0IHRoZSBzaXRlIG9mIHRoZVxudW5wYWNraW5nLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjU6IEl0ZXJhYmxlIHVucGFja2luZyBpbiBleHByZXNzaW9uIGxpc3RzLCBvcmlnaW5hbGx5XG5wcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cblxuVGhlIHRyYWlsaW5nIGNvbW1hIGlzIHJlcXVpcmVkIG9ubHkgdG8gY3JlYXRlIGEgc2luZ2xlIHR1cGxlIChhLmsuYS4gYVxuKnNpbmdsZXRvbiopOyBpdCBpcyBvcHRpb25hbCBpbiBhbGwgb3RoZXIgY2FzZXMuICBBIHNpbmdsZSBleHByZXNzaW9uXG53aXRob3V0IGEgdHJhaWxpbmcgY29tbWEgZG9lc25cJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgeWllbGRzIHRoZVxudmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gZW1wdHkgcGFpclxub2YgcGFyZW50aGVzZXM6ICIoKSIuKVxuJywKLSAnZmxvYXRpbmcnOiB1J1xuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cbkZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsXG5kZWZpbml0aW9uczpcblxuICAgZmxvYXRudW1iZXIgICA6Oj0gcG9pbnRmbG9hdCB8IGV4cG9uZW50ZmxvYXRcbiAgIHBvaW50ZmxvYXQgICAgOjo9IFtpbnRwYXJ0XSBmcmFjdGlvbiB8IGludHBhcnQgIi4iXG4gICBleHBvbmVudGZsb2F0IDo6PSAoaW50cGFydCB8IHBvaW50ZmxvYXQpIGV4cG9uZW50XG4gICBpbnRwYXJ0ICAgICAgIDo6PSBkaWdpdCtcbiAgIGZyYWN0aW9uICAgICAgOjo9ICIuIiBkaWdpdCtcbiAgIGV4cG9uZW50ICAgICAgOjo9ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGRpZ2l0K1xuXG5Ob3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIGFyZSBhbHdheXMgaW50ZXJwcmV0ZWQgdXNpbmdcbnJhZGl4IDEwLiBGb3IgZXhhbXBsZSwgIjA3N2UwMTAiIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSBudW1iZXJcbmFzICI3N2UxMCIuIFRoZSBhbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzXG5pbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG5cbiAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAiLTEiXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAiLSIgYW5kIHRoZVxubGl0ZXJhbCAiMSIuXG4nLAotICdmb3InOiB1J1xuVGhlICJmb3IiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHNlcXVlbmNlXG4oc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbiJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24pLFxudGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbml0ZW0uXG5cblRoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgbGlzdC5cblRoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzIGluY2x1ZGluZ1xudGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuXG4gICBmb3IgaSBpbiByYW5nZSgxMCk6XG4gICAgICAgcHJpbnQoaSlcbiAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG5hbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciBpXG46PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4gIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKLSAnZm9ybWF0c3RyaW5ncyc6IHUnXG5Gb3JtYXQgU3RyaW5nIFN5bnRheFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBhbmQgdGhlICJGb3JtYXR0ZXIiIGNsYXNzIHNoYXJlIHRoZSBzYW1lXG5zeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiAiRm9ybWF0dGVyIixcbnN1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLlxuXG5Gb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgY3VybHkgYnJhY2VzXG4ie30iLiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzIGNvbnNpZGVyZWQgbGl0ZXJhbFxudGV4dCwgd2hpY2ggaXMgY29waWVkIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0LiAgSWYgeW91IG5lZWQgdG8gaW5jbHVkZVxuYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgYnkgZG91Ymxpbmc6XG4ie3siIGFuZCAifX0iLlxuXG5UaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuXG4gICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiIGNvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuICAgICAgZmllbGRfbmFtZSAgICAgICAgOjo9IGFyZ19uYW1lICgiLiIgYXR0cmlidXRlX25hbWUgfCAiWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbiAgICAgIGF0dHJpYnV0ZV9uYW1lICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIl0iPiArXG4gICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4gICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uPlxuXG5JbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoIGFcbipmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlIGZvcm1hdHRlZFxuYW5kIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSByZXBsYWNlbWVudCBmaWVsZC4gVGhlXG4qZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogZmllbGQsIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCAiXCchXCciLCBhbmQgYSAqZm9ybWF0X3NwZWMqLCB3aGljaCBpc1xucHJlY2VkZWQgYnkgYSBjb2xvbiAiXCc6XCciLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0IGZvcm1hdCBmb3IgdGhlXG5yZXBsYWNlbWVudCB2YWx1ZS5cblxuU2VlIGFsc28gdGhlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBzZWN0aW9uLlxuXG5UaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgZWl0aGVyIGFcbm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdFwncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgcG9zaXRpb25hbFxuYXJndW1lbnQsIGFuZCBpZiBpdFwncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkIGtleXdvcmRcbmFyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nIGFyZSAwLCAxLCAyLFxuLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgYW5kIHRoZVxubnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluIHRoYXQgb3JkZXIuXG5CZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvXG5zcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzICJcJzEwXCciIG9yXG4iXCc6LV1cJyIpIHdpdGhpbiBhIGZvcm1hdCBzdHJpbmcuIFRoZSAqYXJnX25hbWUqIGNhbiBiZSBmb2xsb3dlZCBieSBhbnlcbm51bWJlciBvZiBpbmRleCBvciBhdHRyaWJ1dGUgZXhwcmVzc2lvbnMuIEFuIGV4cHJlc3Npb24gb2YgdGhlIGZvcm1cbiJcJy5uYW1lXCciIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyAiZ2V0YXR0cigpIiwgd2hpbGUgYW5cbmV4cHJlc3Npb24gb2YgdGhlIGZvcm0gIlwnW2luZGV4XVwnIiBkb2VzIGFuIGluZGV4IGxvb2t1cCB1c2luZ1xuIl9fZ2V0aXRlbV9fKCkiLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzIGNhbiBiZVxub21pdHRlZCwgc28gIlwne30ge31cJyIgaXMgZXF1aXZhbGVudCB0byAiXCd7MH0gezF9XCciLlxuXG5Tb21lIHNpbXBsZSBmb3JtYXQgc3RyaW5nIGV4YW1wbGVzOlxuXG4gICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAgIyBSZWZlcmVuY2VzIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJCcmluZyBtZSBhIHt9IiAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0bHkgcmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgICMgU2FtZSBhcyAiRnJvbSB7MH0gdG8gezF9IlxuICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkIGFyZ3VtZW50IFwnbmFtZVwnXG4gICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSBvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuICAgIlVuaXRzIGRlc3Ryb3llZDoge3BsYXllcnNbMF19IiAgICMgRmlyc3QgZWxlbWVudCBvZiBrZXl3b3JkIGFyZ3VtZW50IFwncGxheWVyc1wnLlxuXG5UaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlIGZvcm1hdHRpbmcuXG5Ob3JtYWxseSwgdGhlIGpvYiBvZiBmb3JtYXR0aW5nIGEgdmFsdWUgaXMgZG9uZSBieSB0aGUgIl9fZm9ybWF0X18oKSJcbm1ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyBpdCBpcyBkZXNpcmFibGUgdG9cbmZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsIG92ZXJyaWRpbmcgaXRzIG93blxuZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWUgdG8gYSBzdHJpbmcgYmVmb3JlXG5jYWxsaW5nICJfX2Zvcm1hdF9fKCkiLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmcgbG9naWMgaXMgYnlwYXNzZWQuXG5cblRocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6ICJcJyFzXCciIHdoaWNoIGNhbGxzXG4ic3RyKCkiIG9uIHRoZSB2YWx1ZSwgIlwnIXJcJyIgd2hpY2ggY2FsbHMgInJlcHIoKSIgYW5kICJcJyFhXCciIHdoaWNoXG5jYWxscyAiYXNjaWkoKSIuXG5cblNvbWUgZXhhbXBsZXM6XG5cbiAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG5cblRoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlIHZhbHVlXG5zaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCBhbGlnbm1lbnQsXG5wYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuIGRlZmluZSBpdHNcbm93biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgKmZvcm1hdF9zcGVjKi5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSwgd2hpY2hcbmlzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuXG5BICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzXG53aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgbWF5IGNvbnRhaW4gYSBmaWVsZCBuYW1lLFxuY29udmVyc2lvbiBmbGFnIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbiwgYnV0IGRlZXBlciBuZXN0aW5nIGlzIG5vdFxuYWxsb3dlZC4gIFRoZSByZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyBhcmVcbnN1YnN0aXR1dGVkIGJlZm9yZSB0aGUgKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuIFRoaXNcbmFsbG93cyB0aGUgZm9ybWF0dGluZyBvZiBhIHZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5IHNwZWNpZmllZC5cblxuU2VlIHRoZSAqRm9ybWF0IGV4YW1wbGVzKiBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuXG5cbkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Vcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyBjb250YWluZWRcbndpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgcHJlc2VudGVkXG4oc2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCopLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlXG5idWlsdC1pbiAiZm9ybWF0KCkiIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93XG50aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgZm9ybWF0XG5zcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSBvbmx5XG5zdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG5cbkEgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAoIiIiIikgcHJvZHVjZXNcbnRoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCAic3RyKCkiIG9uIHRoZSB2YWx1ZS4gQSBub24tZW1wdHlcbmZvcm1hdCBzdHJpbmcgdHlwaWNhbGx5IG1vZGlmaWVzIHRoZSByZXN1bHQuXG5cblRoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6XG5cbiAgIGZvcm1hdF9zcGVjIDo6PSBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXVxuICAgZmlsbCAgICAgICAgOjo9IDxhbnkgY2hhcmFjdGVyPlxuICAgYWxpZ24gICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuICAgc2lnbiAgICAgICAgOjo9ICIrIiB8ICItIiB8ICIgIlxuICAgd2lkdGggICAgICAgOjo9IGludGVnZXJcbiAgIHByZWNpc2lvbiAgIDo6PSBpbnRlZ2VyXG4gICB0eXBlICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiXG5cbklmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCBieSBhICpmaWxsKlxuY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgaWZcbm9taXR0ZWQuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYSBsaXRlcmFsIGN1cmx5IGJyYWNlICgiInsiIiBvclxuIiJ9IiIpIGFzIHRoZSAqZmlsbCogY2hhcmFjdGVyIHdoZW4gdXNpbmcgdGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZC5cbkhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGluc2VydCBhIGN1cmx5IGJyYWNlIHdpdGggYSBuZXN0ZWRcbnJlcGxhY2VtZW50IGZpZWxkLiAgVGhpcyBsaW1pdGF0aW9uIGRvZXNuXCd0IGFmZmVjdCB0aGUgImZvcm1hdCgpIlxuZnVuY3Rpb24uXG5cblRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzIGZvbGxvd3M6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnPFwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3Qgb2JqZWN0cykuICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCc+XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJz1cJyIgICAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciB0aGUgc2lnbiAoaWYgYW55KSAgICB8XG4gICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgcHJpbnRpbmcgZmllbGRzICAgfFxuICAgfCAgICAgICAgICAgfCBpbiB0aGUgZm9ybSBcJyswMDAwMDAxMjBcJy4gVGhpcyBhbGlnbm1lbnQgb3B0aW9uIGlzIG9ubHkgICAgfFxuICAgfCAgICAgICAgICAgfCB2YWxpZCBmb3IgbnVtZXJpYyB0eXBlcy4gIEl0IGJlY29tZXMgdGhlIGRlZmF1bHQgd2hlbiBcJzBcJyAgfFxuICAgfCAgICAgICAgICAgfCBpbW1lZGlhdGVseSBwcmVjZWRlcyB0aGUgZmllbGQgd2lkdGguICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ15cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZSB0aGF0IHVubGVzcyBhIG1pbmltdW0gZmllbGQgd2lkdGggaXMgZGVmaW5lZCwgdGhlIGZpZWxkIHdpZHRoXG53aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvIHRoYXQgdGhlXG5hbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cblxuVGhlICpzaWduKiBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgbnVtYmVyIHR5cGVzLCBhbmQgY2FuIGJlIG9uZSBvZlxudGhlIGZvbGxvd2luZzpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCcrXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgYm90aCBwb3NpdGl2ZSBhcyAgfFxuICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJy1cJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIG5lZ2F0aXZlICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSB1c2VkIG9uIHBvc2l0aXZlICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlICJcJyNcJyIgb3B0aW9uIGNhdXNlcyB0aGUgImFsdGVybmF0ZSBmb3JtIiB0byBiZSB1c2VkIGZvciB0aGVcbmNvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgZGlmZmVyZW50XG50eXBlcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXIsIGZsb2F0LCBjb21wbGV4IGFuZFxuRGVjaW1hbCB0eXBlcy4gRm9yIGludGVnZXJzLCB3aGVuIGJpbmFyeSwgb2N0YWwsIG9yIGhleGFkZWNpbWFsIG91dHB1dFxuaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgIlwnMGJcJyIsICJcJzBvXCciLCBvclxuIlwnMHhcJyIgdG8gdGhlIG91dHB1dCB2YWx1ZS4gRm9yIGZsb2F0cywgY29tcGxleCBhbmQgRGVjaW1hbCB0aGVcbmFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IG9mIHRoZSBjb252ZXJzaW9uIHRvIGFsd2F5cyBjb250YWluIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuIE5vcm1hbGx5LCBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgdGhlc2UgY29udmVyc2lvbnNcbm9ubHkgaWYgYSBkaWdpdCBmb2xsb3dzIGl0LiBJbiBhZGRpdGlvbiwgZm9yICJcJ2dcJyIgYW5kICJcJ0dcJyJcbmNvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LlxuXG5UaGUgIlwnLFwnIiBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgdGhvdXNhbmRzIHNlcGFyYXRvci5cbkZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgIlwnblwnIiBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlXG5pbnN0ZWFkLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgIlwnLFwnIiBvcHRpb24gKHNlZSBhbHNvICoqUEVQIDM3OCoqKS5cblxuKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdFxuc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuXG5cbldoZW4gbm8gZXhwbGljaXQgYWxpZ25tZW50IGlzIGdpdmVuLCBwcmVjZWRpbmcgdGhlICp3aWR0aCogZmllbGQgYnkgYVxuemVybyAoIlwnMFwnIikgY2hhcmFjdGVyIGVuYWJsZXMgc2lnbi1hd2FyZSB6ZXJvLXBhZGRpbmcgZm9yIG51bWVyaWNcbnR5cGVzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgKmZpbGwqIGNoYXJhY3RlciBvZiAiXCcwXCciIHdpdGggYW5cbiphbGlnbm1lbnQqIHR5cGUgb2YgIlwnPVwnIi5cblxuVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaWdpdHMgc2hvdWxkXG5iZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWVcbmZvcm1hdHRlZCB3aXRoICJcJ2ZcJyIgYW5kICJcJ0ZcJyIsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnRcbmZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoICJcJ2dcJyIgb3IgIlwnR1wnIi4gIEZvciBub24tXG5udW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gaW4gb3RoZXJcbndvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCBjb250ZW50LiBUaGVcbipwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cblxuRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgcHJlc2VudGVkLlxuXG5UaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJ3NcJyIgICAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBzdHJpbmdzIGFuZCAgICB8XG4gICB8ICAgICAgICAgICB8IG1heSBiZSBvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgIlwnc1wnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJ2JcJyIgICAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMi4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdjXCciICAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgfFxuICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgcHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2RcJyIgICAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxMC4gICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdvXCciICAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgOC4gICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwneFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgbG93ZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdYXCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyB1cHBlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2RcJyIsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIHxcbiAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlIG51bWJlciAgICB8XG4gICB8ICAgICAgICAgICB8IHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgIlwnZFwnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiBiZSBmb3JtYXR0ZWRcbndpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgKGV4Y2VwdCAiXCduXCciXG5hbmQgTm9uZSkuIFdoZW4gZG9pbmcgc28sICJmbG9hdCgpIiBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlIGludGVnZXIgdG9cbmEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnZVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgIHwgICAgICAgICAgIHwgVGhlIGRlZmF1bHQgcHJlY2lzaW9uIGlzICI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdFXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzICJcJ2VcJyIgZXhjZXB0IGl0IHVzZXMgYW4gdXBwZXIgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgXCdFXCcgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdmXCciICAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgIlwnZlwnIiwgYnV0IGNvbnZlcnRzICJuYW4iIHRvICJOQU4iICAgIHxcbiAgIHwgICAgICAgICAgIHwgYW5kICJpbmYiIHRvICJJTkYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdnXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uICJwID49IDEiLCB0aGlzICAgICAgfFxuICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byAicCIgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0cyB0aGUgcmVzdWx0IGluIGVpdGhlciBmaXhlZC1wb2ludCBmb3JtYXQgb3IgaW4gICAgICB8XG4gICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgbWFnbml0dWRlLiAgVGhlICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgdGhlIHJlc3VsdCAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiBhbmQgcHJlY2lzaW9uICJwLTEiIHxcbiAgIHwgICAgICAgICAgIHwgd291bGQgaGF2ZSBleHBvbmVudCAiZXhwIi4gIFRoZW4gaWYgIi00IDw9IGV4cCA8IHAiLCB0aGUgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdmXCciIGFuZCAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2lvbiAicC0xLWV4cCIuICBPdGhlcndpc2UsIHRoZSBudW1iZXIgaXMgZm9ybWF0dGVkICAgfFxuICAgfCAgICAgICAgICAgfCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgYW5kIHByZWNpc2lvbiAicC0xIi4gSW4gYm90aCAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSByZW1vdmVkIGZyb20gdGhlICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyBhbHNvIHJlbW92ZWQgaWYgICAgICB8XG4gICB8ICAgICAgICAgICB8IHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyBpdC4gIFBvc2l0aXZlIGFuZCAgfFxuICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHplcm8sIGFuZCBuYW5zLCAgIHxcbiAgIHwgICAgICAgICAgIHwgYXJlIGZvcm1hdHRlZCBhcyAiaW5mIiwgIi1pbmYiLCAiMCIsICItMCIgYW5kICJuYW4iICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgcHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgfFxuICAgfCAgICAgICAgICAgfCAiMCIgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIGEgcHJlY2lzaW9uIG9mICIxIi4gVGhlICAgIHxcbiAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdHXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzICJcJ2dcJyIgZXhjZXB0IHN3aXRjaGVzIHRvICJcJ0VcJyIgaWYgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIG51bWJlciBnZXRzIHRvbyBsYXJnZS4gVGhlIHJlcHJlc2VudGF0aW9ucyBvZiBpbmZpbml0eSB8XG4gICB8ICAgICAgICAgICB8IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsIHRvby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZ1wnIiwgZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCclXCciICAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAxMDAgYW5kIGRpc3BsYXlzIGluICAgfFxuICAgfCAgICAgICAgICAgfCBmaXhlZCAoIlwnZlwnIikgZm9ybWF0LCBmb2xsb3dlZCBieSBhIHBlcmNlbnQgc2lnbi4gICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgU2ltaWxhciB0byAiXCdnXCciLCBleGNlcHQgdGhhdCBmaXhlZC1wb2ludCBub3RhdGlvbiwgd2hlbiAgIHxcbiAgIHwgICAgICAgICAgIHwgdXNlZCwgaGFzIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0IHRoZSBkZWNpbWFsIHBvaW50LiBUaGUgICB8XG4gICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzIGFzIGhpZ2ggYXMgbmVlZGVkIHRvIHJlcHJlc2VudCB0aGUgICAgfFxuICAgfCAgICAgICAgICAgfCBwYXJ0aWN1bGFyIHZhbHVlLiBUaGUgb3ZlcmFsbCBlZmZlY3QgaXMgdG8gbWF0Y2ggdGhlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgb3V0cHV0IG9mICJzdHIoKSIgYXMgYWx0ZXJlZCBieSB0aGUgb3RoZXIgZm9ybWF0ICAgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG1vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuXG5Gb3JtYXQgZXhhbXBsZXNcbj09PT09PT09PT09PT09PVxuXG5UaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlICJzdHIuZm9ybWF0KCkiIHN5bnRheCBhbmRcbmNvbXBhcmlzb24gd2l0aCB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLlxuXG5JbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZCAiJSItZm9ybWF0dGluZyxcbndpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSAie30iIGFuZCB3aXRoICI6IiB1c2VkIGluc3RlYWQgb2YgIiUiLiBGb3JcbmV4YW1wbGUsICJcJyUwMy4yZlwnIiBjYW4gYmUgdHJhbnNsYXRlZCB0byAiXCd7OjAzLjJmfVwnIi5cblxuVGhlIG5ldyBmb3JtYXQgc3ludGF4IGFsc28gc3VwcG9ydHMgbmV3IGFuZCBkaWZmZXJlbnQgb3B0aW9ucywgc2hvd25cbmluIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgcG9zaXRpb246XG5cbiAgID4+PiBcJ3swfSwgezF9LCB7Mn1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7fSwge30sIHt9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpICAjIDMuMSsgb25seVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KCpcJ2FiY1wnKSAgICAgICMgdW5wYWNraW5nIGFyZ3VtZW50IHNlcXVlbmNlXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezB9ezF9ezB9XCcuZm9ybWF0KFwnYWJyYVwnLCBcJ2NhZFwnKSAgICMgYXJndW1lbnRzXCcgaW5kaWNlcyBjYW4gYmUgcmVwZWF0ZWRcbiAgIFwnYWJyYWNhZGFicmFcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IG5hbWU6XG5cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdChsYXRpdHVkZT1cJzM3LjI0TlwnLCBsb25naXR1ZGU9XCctMTE1LjgxV1wnKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG4gICA+Pj4gY29vcmQgPSB7XCdsYXRpdHVkZVwnOiBcJzM3LjI0TlwnLCBcJ2xvbmdpdHVkZVwnOiBcJy0xMTUuODFXXCd9XG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQoKipjb29yZClcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgYXR0cmlidXRlczpcblxuICAgPj4+IGMgPSAzLTVqXG4gICA+Pj4gKFwnVGhlIGNvbXBsZXggbnVtYmVyIHswfSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IHswLnJlYWx9IFwnXG4gICAuLi4gIFwnYW5kIHRoZSBpbWFnaW5hcnkgcGFydCB7MC5pbWFnfS5cJykuZm9ybWF0KGMpXG4gICBcJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCAzLjAgYW5kIHRoZSBpbWFnaW5hcnkgcGFydCAtNS4wLlwnXG4gICA+Pj4gY2xhc3MgUG9pbnQ6XG4gICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4LCB5KTpcbiAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuICAgLi4uICAgICBkZWYgX19zdHJfXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ1BvaW50KHtzZWxmLnh9LCB7c2VsZi55fSlcJy5mb3JtYXQoc2VsZj1zZWxmKVxuICAgLi4uXG4gICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuICAgXCdQb2ludCg0LCAyKVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBpdGVtczpcblxuICAgPj4+IGNvb3JkID0gKDMsIDUpXG4gICA+Pj4gXCdYOiB7MFswXX07ICBZOiB7MFsxXX1cJy5mb3JtYXQoY29vcmQpXG4gICBcJ1g6IDM7ICBZOiA1XCdcblxuUmVwbGFjaW5nICIlcyIgYW5kICIlciI6XG5cbiAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6IHshc30iLmZvcm1hdChcJ3Rlc3QxXCcsIFwndGVzdDJcJylcbiAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcblxuQWxpZ25pbmcgdGhlIHRleHQgYW5kIHNwZWNpZnlpbmcgYSB3aWR0aDpcblxuICAgPj4+IFwnezo8MzB9XCcuZm9ybWF0KFwnbGVmdCBhbGlnbmVkXCcpXG4gICBcJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7Oj4zMH1cJy5mb3JtYXQoXCdyaWdodCBhbGlnbmVkXCcpXG4gICBcJyAgICAgICAgICAgICAgICAgcmlnaHQgYWxpZ25lZFwnXG4gICA+Pj4gXCd7Ol4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKVxuICAgXCcgICAgICAgICAgIGNlbnRlcmVkICAgICAgICAgICBcJ1xuICAgPj4+IFwnezoqXjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpICAjIHVzZSBcJypcJyBhcyBhIGZpbGwgY2hhclxuICAgXCcqKioqKioqKioqKmNlbnRlcmVkKioqKioqKioqKipcJ1xuXG5SZXBsYWNpbmcgIiUrZiIsICIlLWYiLCBhbmQgIiUgZiIgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuXG4gICA+Pj4gXCd7OitmfTsgezorZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgYWx3YXlzXG4gICBcJyszLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6IGZ9OyB7OiBmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBhIHNwYWNlIGZvciBwb3NpdGl2ZSBudW1iZXJzXG4gICBcJyAzLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6LWZ9OyB7Oi1mfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBvbmx5IHRoZSBtaW51cyAtLSBzYW1lIGFzIFwnezpmfTsgezpmfVwnXG4gICBcJzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuXG5SZXBsYWNpbmcgIiV4IiBhbmQgIiVvIiBhbmQgY29udmVydGluZyB0aGUgdmFsdWUgdG8gZGlmZmVyZW50IGJhc2VzOlxuXG4gICA+Pj4gIyBmb3JtYXQgYWxzbyBzdXBwb3J0cyBiaW5hcnkgbnVtYmVyc1xuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDp4fTsgIG9jdDogezA6b307ICBiaW46IHswOmJ9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwXCdcbiAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOiN4fTsgIG9jdDogezA6I299OyAgYmluOiB7MDojYn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMHgyYTsgIG9jdDogMG81MjsgIGJpbjogMGIxMDEwMTBcJ1xuXG5Vc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuXG4gICA+Pj4gXCd7Oix9XCcuZm9ybWF0KDEyMzQ1Njc4OTApXG4gICBcJzEsMjM0LDU2Nyw4OTBcJ1xuXG5FeHByZXNzaW5nIGEgcGVyY2VudGFnZTpcblxuICAgPj4+IHBvaW50cyA9IDE5XG4gICA+Pj4gdG90YWwgPSAyMlxuICAgPj4+IFwnQ29ycmVjdCBhbnN3ZXJzOiB7Oi4yJX1cJy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuICAgXCdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JVwnXG5cblVzaW5nIHR5cGUtc3BlY2lmaWMgZm9ybWF0dGluZzpcblxuICAgPj4+IGltcG9ydCBkYXRldGltZVxuICAgPj4+IGQgPSBkYXRldGltZS5kYXRldGltZSgyMDEwLCA3LCA0LCAxMiwgMTUsIDU4KVxuICAgPj4+IFwnezolWS0lbS0lZCAlSDolTTolU31cJy5mb3JtYXQoZClcbiAgIFwnMjAxMC0wNy0wNCAxMjoxNTo1OFwnXG5cbk5lc3RpbmcgYXJndW1lbnRzIGFuZCBtb3JlIGNvbXBsZXggZXhhbXBsZXM6XG5cbiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKFwnPF4+XCcsIFtcJ2xlZnRcJywgXCdjZW50ZXJcJywgXCdyaWdodFwnXSk6XG4gICAuLi4gICAgIFwnezA6e2ZpbGx9e2FsaWdufTE2fVwnLmZvcm1hdCh0ZXh0LCBmaWxsPWFsaWduLCBhbGlnbj1hbGlnbilcbiAgIC4uLlxuICAgXCdsZWZ0PDw8PDw8PDw8PDw8XCdcbiAgIFwnXl5eXl5jZW50ZXJeXl5eXlwnXG4gICBcJz4+Pj4+Pj4+Pj4+cmlnaHRcJ1xuICAgPj4+XG4gICA+Pj4gb2N0ZXRzID0gWzE5MiwgMTY4LCAwLCAxXVxuICAgPj4+IFwnezowMlh9ezowMlh9ezowMlh9ezowMlh9XCcuZm9ybWF0KCpvY3RldHMpXG4gICBcJ0MwQTgwMDAxXCdcbiAgID4+PiBpbnQoXywgMTYpXG4gICAzMjMyMjM1NTIxXG4gICA+Pj5cbiAgID4+PiB3aWR0aCA9IDVcbiAgID4+PiBmb3IgbnVtIGluIHJhbmdlKDUsMTIpOiAjZG9jdGVzdDogK05PUk1BTElaRV9XSElURVNQQUNFXG4gICAuLi4gICAgIGZvciBiYXNlIGluIFwnZFhvYlwnOlxuICAgLi4uICAgICAgICAgcHJpbnQoXCd7MDp7d2lkdGh9e2Jhc2V9fVwnLmZvcm1hdChudW0sIGJhc2U9YmFzZSwgd2lkdGg9d2lkdGgpLCBlbmQ9XCcgXCcpXG4gICAuLi4gICAgIHByaW50KClcbiAgIC4uLlxuICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbiAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4gICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbiAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4gICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCi0gJ2Z1bmN0aW9uJzogdSdcbkZ1bmN0aW9uIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG4nLAotICdnbG9iYWwnOiB1J1xuVGhlICJnbG9iYWwiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBnbG9iYWxfc3RtdCA6Oj0gImdsb2JhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGlzIGEgZGVjbGFyYXRpb24gd2hpY2ggaG9sZHMgZm9yIHRoZSBlbnRpcmVcbmN1cnJlbnQgY29kZSBibG9jay4gIEl0IG1lYW5zIHRoYXQgdGhlIGxpc3RlZCBpZGVudGlmaWVycyBhcmUgdG8gYmVcbmludGVycHJldGVkIGFzIGdsb2JhbHMuICBJdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFzc2lnbiB0byBhIGdsb2JhbFxudmFyaWFibGUgd2l0aG91dCAiZ2xvYmFsIiwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG5nbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgdXNlZCBpbiB0aGUgc2FtZSBjb2RlXG5ibG9jayB0ZXh0dWFsbHkgcHJlY2VkaW5nIHRoYXQgImdsb2JhbCIgc3RhdGVtZW50LlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyBmb3JtYWxcbnBhcmFtZXRlcnMgb3IgaW4gYSAiZm9yIiBsb29wIGNvbnRyb2wgdGFyZ2V0LCAiY2xhc3MiIGRlZmluaXRpb24sXG5mdW5jdGlvbiBkZWZpbml0aW9uLCBvciAiaW1wb3J0IiBzdGF0ZW1lbnQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RcbmVuZm9yY2UgdGhlIHR3byByZXN0cmljdGlvbnMsIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlIHRoaXNcbmZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseSBjaGFuZ2VcbnRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgImdsb2JhbCIgaXMgYSBkaXJlY3RpdmUgdG8gdGhlIHBhcnNlci4gIEl0XG5hcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgImdsb2JhbCJcbnN0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgc3RyaW5nXG5vciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgZnVuY3Rpb24gZG9lcyBub3RcbmFmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlIGZ1bmN0aW9uIGNhbGwsIGFuZCBjb2RlXG5jb250YWluZWQgaW4gc3VjaCBhIHN0cmluZyBpcyB1bmFmZmVjdGVkIGJ5ICJnbG9iYWwiIHN0YXRlbWVudHMgaW4gdGhlXG5jb2RlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGwuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZSAiZXZhbCgpIlxuYW5kICJjb21waWxlKCkiIGZ1bmN0aW9ucy5cbicsCi0gJ2lkLWNsYXNzZXMnOiB1J1xuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG4iXyoiXG4gICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXIgIl8iXG4gICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZVxuICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgV2hlbiBub3RcbiAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgZGVmaW5lZC5cbiAgIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbiJfXypfXyJcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXMgbm90XG4gICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSB3aXRob3V0XG4gICB3YXJuaW5nLlxuXG4iX18qIlxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCi0gJ2lkZW50aWZpZXJzJzogdSdcbklkZW50aWZpZXJzIGFuZCBrZXl3b3Jkc1xuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbklkZW50aWZpZXJzIChhbHNvIHJlZmVycmVkIHRvIGFzICpuYW1lcyopIGFyZSBkZXNjcmliZWQgYnkgdGhlXG5mb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9ucy5cblxuVGhlIHN5bnRheCBvZiBpZGVudGlmaWVycyBpbiBQeXRob24gaXMgYmFzZWQgb24gdGhlIFVuaWNvZGUgc3RhbmRhcmRcbmFubmV4IFVBWC0zMSwgd2l0aCBlbGFib3JhdGlvbiBhbmQgY2hhbmdlcyBhcyBkZWZpbmVkIGJlbG93OyBzZWUgYWxzb1xuKipQRVAgMzEzMSoqIGZvciBmdXJ0aGVyIGRldGFpbHMuXG5cbldpdGhpbiB0aGUgQVNDSUkgcmFuZ2UgKFUrMDAwMS4uVSswMDdGKSwgdGhlIHZhbGlkIGNoYXJhY3RlcnMgZm9yXG5pZGVudGlmaWVycyBhcmUgdGhlIHNhbWUgYXMgaW4gUHl0aG9uIDIueDogdGhlIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlXG5sZXR0ZXJzICJBIiB0aHJvdWdoICJaIiwgdGhlIHVuZGVyc2NvcmUgIl8iIGFuZCwgZXhjZXB0IGZvciB0aGUgZmlyc3RcbmNoYXJhY3RlciwgdGhlIGRpZ2l0cyAiMCIgdGhyb3VnaCAiOSIuXG5cblB5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSBBU0NJSVxucmFuZ2UgKHNlZSAqKlBFUCAzMTMxKiopLiAgRm9yIHRoZXNlIGNoYXJhY3RlcnMsIHRoZSBjbGFzc2lmaWNhdGlvblxudXNlcyB0aGUgdmVyc2lvbiBvZiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgYXMgaW5jbHVkZWQgaW4gdGhlXG4idW5pY29kZWRhdGEiIG1vZHVsZS5cblxuSWRlbnRpZmllcnMgYXJlIHVubGltaXRlZCBpbiBsZW5ndGguICBDYXNlIGlzIHNpZ25pZmljYW50LlxuXG4gICBpZGVudGlmaWVyICAgOjo9IHhpZF9zdGFydCB4aWRfY29udGludWUqXG4gICBpZF9zdGFydCAgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBnZW5lcmFsIGNhdGVnb3JpZXMgTHUsIExsLCBMdCwgTG0sIExvLCBObCwgdGhlIHVuZGVyc2NvcmUsIGFuZCBjaGFyYWN0ZXJzIHdpdGggdGhlIE90aGVyX0lEX1N0YXJ0IHByb3BlcnR5PlxuICAgaWRfY29udGludWUgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQsIHBsdXMgY2hhcmFjdGVycyBpbiB0aGUgY2F0ZWdvcmllcyBNbiwgTWMsIE5kLCBQYyBhbmQgb3RoZXJzIHdpdGggdGhlIE90aGVyX0lEX0NvbnRpbnVlIHByb3BlcnR5PlxuICAgeGlkX3N0YXJ0ICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9zdGFydCB4aWRfY29udGludWUqIj5cbiAgIHhpZF9jb250aW51ZSA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX2NvbnRpbnVlIHdob3NlIE5GS0Mgbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfY29udGludWUqIj5cblxuVGhlIFVuaWNvZGUgY2F0ZWdvcnkgY29kZXMgbWVudGlvbmVkIGFib3ZlIHN0YW5kIGZvcjpcblxuKiAqTHUqIC0gdXBwZXJjYXNlIGxldHRlcnNcblxuKiAqTGwqIC0gbG93ZXJjYXNlIGxldHRlcnNcblxuKiAqTHQqIC0gdGl0bGVjYXNlIGxldHRlcnNcblxuKiAqTG0qIC0gbW9kaWZpZXIgbGV0dGVyc1xuXG4qICpMbyogLSBvdGhlciBsZXR0ZXJzXG5cbiogKk5sKiAtIGxldHRlciBudW1iZXJzXG5cbiogKk1uKiAtIG5vbnNwYWNpbmcgbWFya3NcblxuKiAqTWMqIC0gc3BhY2luZyBjb21iaW5pbmcgbWFya3NcblxuKiAqTmQqIC0gZGVjaW1hbCBudW1iZXJzXG5cbiogKlBjKiAtIGNvbm5lY3RvciBwdW5jdHVhdGlvbnNcblxuKiAqT3RoZXJfSURfU3RhcnQqIC0gZXhwbGljaXQgbGlzdCBvZiBjaGFyYWN0ZXJzIGluIFByb3BMaXN0LnR4dCB0b1xuICBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cbiogKk90aGVyX0lEX0NvbnRpbnVlKiAtIGxpa2V3aXNlXG5cbkFsbCBpZGVudGlmaWVycyBhcmUgY29udmVydGVkIGludG8gdGhlIG5vcm1hbCBmb3JtIE5GS0Mgd2hpbGUgcGFyc2luZztcbmNvbXBhcmlzb24gb2YgaWRlbnRpZmllcnMgaXMgYmFzZWQgb24gTkZLQy5cblxuQSBub24tbm9ybWF0aXZlIEhUTUwgZmlsZSBsaXN0aW5nIGFsbCB2YWxpZCBpZGVudGlmaWVyIGNoYXJhY3RlcnMgZm9yXG5Vbmljb2RlIDQuMSBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly93d3cuZGNsLmhwaS51bmktXG5wb3RzZGFtLmRlL2hvbWUvbG9ld2lzL3RhYmxlLTMxMzEuaHRtbC5cblxuXG5LZXl3b3Jkc1xuPT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBhcmUgdXNlZCBhcyByZXNlcnZlZCB3b3Jkcywgb3IgKmtleXdvcmRzKiBvZlxudGhlIGxhbmd1YWdlLCBhbmQgY2Fubm90IGJlIHVzZWQgYXMgb3JkaW5hcnkgaWRlbnRpZmllcnMuICBUaGV5IG11c3RcbmJlIHNwZWxsZWQgZXhhY3RseSBhcyB3cml0dGVuIGhlcmU6XG5cbiAgIEZhbHNlICAgICAgY2xhc3MgICAgICBmaW5hbGx5ICAgIGlzICAgICAgICAgcmV0dXJuXG4gICBOb25lICAgICAgIGNvbnRpbnVlICAgZm9yICAgICAgICBsYW1iZGEgICAgIHRyeVxuICAgVHJ1ZSAgICAgICBkZWYgICAgICAgIGZyb20gICAgICAgbm9ubG9jYWwgICB3aGlsZVxuICAgYW5kICAgICAgICBkZWwgICAgICAgIGdsb2JhbCAgICAgbm90ICAgICAgICB3aXRoXG4gICBhcyAgICAgICAgIGVsaWYgICAgICAgaWYgICAgICAgICBvciAgICAgICAgIHlpZWxkXG4gICBhc3NlcnQgICAgIGVsc2UgICAgICAgaW1wb3J0ICAgICBwYXNzXG4gICBicmVhayAgICAgIGV4Y2VwdCAgICAgaW4gICAgICAgICByYWlzZVxuXG5cblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuIl8qIlxuICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCBpZGVudGlmaWVyICJfIlxuICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGVcbiAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiYnVpbHRpbnMiIG1vZHVsZS4gIFdoZW4gbm90XG4gICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90IGRlZmluZWQuXG4gICBTZWUgc2VjdGlvbiAqVGhlIGltcG9ydCBzdGF0ZW1lbnQqLlxuXG4gICBOb3RlOiBUaGUgbmFtZSAiXyIgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4gICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgICJnZXR0ZXh0IiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjb252ZW50aW9uLlxuXG4iX18qX18iXG4gICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlIGludGVycHJldGVyXG4gICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgQ3VycmVudFxuICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlICpTcGVjaWFsIG1ldGhvZCBuYW1lcyogc2VjdGlvblxuICAgYW5kIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2ZcbiAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiAiX18qX18iIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzIG5vdFxuICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2Ugd2l0aG91dFxuICAgd2FybmluZy5cblxuIl9fKiJcbiAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgd2l0aGluIHRoZVxuICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhIG1hbmdsZWQgZm9ybVxuICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiBiYXNlIGFuZFxuICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAotICdpZic6IHUnXG5UaGUgImlmIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAotICdpbWFnaW5hcnknOiB1J1xuSW1hZ2luYXJ5IGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKipcblxuSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbWFnbnVtYmVyIDo6PSAoZmxvYXRudW1iZXIgfCBpbnRwYXJ0KSAoImoiIHwgIkoiKVxuXG5BbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0IG9mIDAuMC5cbkNvbXBsZXggbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnNcbmFuZCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBvbiB0aGVpciByYW5nZS4gIFRvIGNyZWF0ZSBhIGNvbXBsZXhcbm51bWJlciB3aXRoIGEgbm9uemVybyByZWFsIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byBpdCxcbmUuZy4sICIoMys0aikiLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG5cbiAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAzLjE0ZS0xMGpcbicsCi0gJ2ltcG9ydCc6IHUnXG5UaGUgImltcG9ydCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4gICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cblRoZSBiYXNpYyBpbXBvcnQgc3RhdGVtZW50IChubyAiZnJvbSIgY2xhdXNlKSBpcyBleGVjdXRlZCBpbiB0d29cbnN0ZXBzOlxuXG4xLiBmaW5kIGEgbW9kdWxlLCBsb2FkaW5nIGFuZCBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5XG5cbjIuIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIHNjb3BlXG4gICB3aGVyZSB0aGUgImltcG9ydCIgc3RhdGVtZW50IG9jY3Vycy5cblxuV2hlbiB0aGUgc3RhdGVtZW50IGNvbnRhaW5zIG11bHRpcGxlIGNsYXVzZXMgKHNlcGFyYXRlZCBieSBjb21tYXMpIHRoZVxudHdvIHN0ZXBzIGFyZSBjYXJyaWVkIG91dCBzZXBhcmF0ZWx5IGZvciBlYWNoIGNsYXVzZSwganVzdCBhcyB0aG91Z2hcbnRoZSBjbGF1c2VzIGhhZCBiZWVuIHNlcGFyYXRlZCBvdXQgaW50byBpbmRpdmlkdWFsIGltcG9ydCBzdGF0ZW1lbnRzLlxuXG5UaGUgZGV0YWlscyBvZiB0aGUgZmlyc3Qgc3RlcCwgZmluZGluZyBhbmQgbG9hZGluZyBtb2R1bGVzIGFyZVxuZGVzY3JpYmVkIGluIGdyZWF0ZXIgZGV0YWlsIGluIHRoZSBzZWN0aW9uIG9uIHRoZSAqaW1wb3J0IHN5c3RlbSosXG53aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0XG5jYW4gYmUgaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvXG5jdXN0b21pemUgdGhlIGltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5XG5pbmRpY2F0ZSBlaXRoZXIgdGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW5cbmVycm9yIG9jY3VycmVkIHdoaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb25cbm9mIHRoZSBtb2R1bGVcJ3MgY29kZS5cblxuSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSwgaXQgd2lsbCBiZSBtYWRlXG5hdmFpbGFibGUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBpbiBvbmUgb2YgdGhyZWUgd2F5czpcblxuKiBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgImFzIiwgdGhlbiB0aGUgbmFtZSBmb2xsb3dpbmdcbiAgImFzIiBpcyBib3VuZCBkaXJlY3RseSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlLlxuXG4qIElmIG5vIG90aGVyIG5hbWUgaXMgc3BlY2lmaWVkLCBhbmQgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBhXG4gIHRvcCBsZXZlbCBtb2R1bGUsIHRoZSBtb2R1bGVcJ3MgbmFtZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlXG4gIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbXBvcnRlZCBtb2R1bGVcblxuKiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICpub3QqIGEgdG9wIGxldmVsIG1vZHVsZSwgdGhlbiB0aGVcbiAgbmFtZSBvZiB0aGUgdG9wIGxldmVsIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIGlzIGJvdW5kIGluXG4gIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgYSByZWZlcmVuY2UgdG8gdGhlIHRvcCBsZXZlbCBwYWNrYWdlLiBUaGVcbiAgaW1wb3J0ZWQgbW9kdWxlIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcgaXRzIGZ1bGwgcXVhbGlmaWVkIG5hbWVcbiAgcmF0aGVyIHRoYW4gZGlyZWN0bHlcblxuVGhlICJmcm9tIiBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczpcblxuMS4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgImZyb20iIGNsYXVzZSwgbG9hZGluZyBhbmRcbiAgIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3Nhcnk7XG5cbjIuIGZvciBlYWNoIG9mIHRoZSBpZGVudGlmaWVycyBzcGVjaWZpZWQgaW4gdGhlICJpbXBvcnQiIGNsYXVzZXM6XG5cbiAgIDEuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWVcblxuICAgMi4gaWYgbm90LCBhdHRlbXB0IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSB3aXRoIHRoYXQgbmFtZSBhbmQgdGhlblxuICAgICAgY2hlY2sgdGhlIGltcG9ydGVkIG1vZHVsZSBhZ2FpbiBmb3IgdGhhdCBhdHRyaWJ1dGVcblxuICAgMy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsICJJbXBvcnRFcnJvciIgaXMgcmFpc2VkLlxuXG4gICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgc3RvcmVkIGluIHRoZSBsb2NhbFxuICAgICAgbmFtZXNwYWNlLCB1c2luZyB0aGUgbmFtZSBpbiB0aGUgImFzIiBjbGF1c2UgaWYgaXQgaXMgcHJlc2VudCxcbiAgICAgIG90aGVyd2lzZSB1c2luZyB0aGUgYXR0cmlidXRlIG5hbWVcblxuRXhhbXBsZXM6XG5cbiAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgZmJiXG4gICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBiYXpcbiAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCBhcyBhdHRyXG5cbklmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoIlwnKlwnIiksIGFsbCBwdWJsaWNcbm5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlXG5zY29wZSB3aGVyZSB0aGUgImltcG9ydCIgc3RhdGVtZW50IG9jY3Vycy5cblxuVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlXG5tb2R1bGVcJ3MgbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkICJfX2FsbF9fIjsgaWYgZGVmaW5lZCwgaXQgbXVzdFxuYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5IHRoYXRcbm1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiAiX19hbGxfXyIgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmRcbmFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmICJfX2FsbF9fIiBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiBwdWJsaWNcbm5hbWVzIGluY2x1ZGVzIGFsbCBuYW1lcyBmb3VuZCBpbiB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSB3aGljaCBkbyBub3RcbmJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKCJcJ19cJyIpLiAgIl9fYWxsX18iIHNob3VsZCBjb250YWluXG50aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkIGFjY2lkZW50YWxseSBleHBvcnRpbmdcbml0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMgbGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmVcbmltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImZyb20gbW9kdWxlIGltcG9ydCAqIiAtLS0gaXMgb25seVxuYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLiAgQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3JcbmZ1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuXG5XaGVuIHNwZWNpZnlpbmcgd2hhdCBtb2R1bGUgdG8gaW1wb3J0IHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5IHRoZVxuYWJzb2x1dGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBXaGVuIGEgbW9kdWxlIG9yIHBhY2thZ2UgaXMgY29udGFpbmVkXG53aXRoaW4gYW5vdGhlciBwYWNrYWdlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgYSByZWxhdGl2ZSBpbXBvcnQgd2l0aGluXG50aGUgc2FtZSB0b3AgcGFja2FnZSB3aXRob3V0IGhhdmluZyB0byBtZW50aW9uIHRoZSBwYWNrYWdlIG5hbWUuIEJ5XG51c2luZyBsZWFkaW5nIGRvdHMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcGFja2FnZSBhZnRlciAiZnJvbSIgeW91XG5jYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxud2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbnBhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zIHVwXG5vbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSBleGVjdXRlXG4iZnJvbSAuIGltcG9ydCBtb2QiIGZyb20gYSBtb2R1bGUgaW4gdGhlICJwa2ciIHBhY2thZ2UgdGhlbiB5b3Ugd2lsbFxuZW5kIHVwIGltcG9ydGluZyAicGtnLm1vZCIuIElmIHlvdSBleGVjdXRlICJmcm9tIC4uc3VicGtnMiBpbXBvcnQgbW9kIlxuZnJvbSB3aXRoaW4gInBrZy5zdWJwa2cxIiB5b3Ugd2lsbCBpbXBvcnQgInBrZy5zdWJwa2cyLm1vZCIuIFRoZVxuc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpcyBjb250YWluZWQgd2l0aGluICoqUEVQIDMyOCoqLlxuXG4iaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgdGhhdFxuZGV0ZXJtaW5lIGR5bmFtaWNhbGx5IHRoZSBtb2R1bGVzIHRvIGJlIGxvYWRlZC5cblxuXG5GdXR1cmUgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT1cblxuQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSBwYXJ0aWN1bGFyXG5tb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG5hdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uIHdoZXJlIHRoZSBmZWF0dXJlXG5iZWNvbWVzIHN0YW5kYXJkLlxuXG5UaGUgZnV0dXJlIHN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgdmVyc2lvbnNcbm9mIFB5dGhvbiB0aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICBJdFxuYWxsb3dzIHVzZSBvZiB0aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlXG5yZWxlYXNlIGluIHdoaWNoIHRoZSBmZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG5cbiAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4gICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSBvbmx5XG5saW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG5cbiogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG5cbiogY29tbWVudHMsXG5cbiogYmxhbmsgbGluZXMsIGFuZFxuXG4qIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuXG5UaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSAiYWJzb2x1dGVfaW1wb3J0IixcbiJkaXZpc2lvbiIsICJnZW5lcmF0b3JzIiwgInVuaWNvZGVfbGl0ZXJhbHMiLCAicHJpbnRfZnVuY3Rpb24iLFxuIm5lc3RlZF9zY29wZXMiIGFuZCAid2l0aF9zdGF0ZW1lbnQiLiAgVGhleSBhcmUgYWxsIHJlZHVuZGFudCBiZWNhdXNlXG50aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG50aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSBjYXNlXG50aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhIG5ld1xucmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxubW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbnJ1bnRpbWUuXG5cbkZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgaGF2ZVxuYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlIHN0YXRlbWVudFxuY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cblxuVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgc3RhdGVtZW50OlxudGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgIl9fZnV0dXJlX18iLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdCB3aWxsXG5iZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG5leGVjdXRlZC5cblxuVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cblxuTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuXG4gICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cblxuVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdFwncyBhbiBvcmRpbmFyeSBpbXBvcnQgc3RhdGVtZW50IHdpdGhcbm5vIHNwZWNpYWwgc2VtYW50aWNzIG9yIHN5bnRheCByZXN0cmljdGlvbnMuXG5cbkNvZGUgY29tcGlsZWQgYnkgY2FsbHMgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZXhlYygpIiBhbmRcbiJjb21waWxlKCkiIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgIk0iIGNvbnRhaW5pbmcgYSBmdXR1cmUgc3RhdGVtZW50XG53aWxsLCBieSBkZWZhdWx0LCB1c2UgdGhlIG5ldyBzeW50YXggb3Igc2VtYW50aWNzIGFzc29jaWF0ZWQgd2l0aCB0aGVcbmZ1dHVyZSBzdGF0ZW1lbnQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIGJ5IG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xuImNvbXBpbGUoKSIgLS0tIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIGZvciBkZXRhaWxzLlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgdHlwZWQgYXQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgcHJvbXB0IHdpbGxcbnRha2UgZWZmZWN0IGZvciB0aGUgcmVzdCBvZiB0aGUgaW50ZXJwcmV0ZXIgc2Vzc2lvbi4gIElmIGFuXG5pbnRlcnByZXRlciBpcyBzdGFydGVkIHdpdGggdGhlICotaSogb3B0aW9uLCBpcyBwYXNzZWQgYSBzY3JpcHQgbmFtZVxudG8gZXhlY3V0ZSwgYW5kIHRoZSBzY3JpcHQgaW5jbHVkZXMgYSBmdXR1cmUgc3RhdGVtZW50LCBpdCB3aWxsIGJlIGluXG5lZmZlY3QgaW4gdGhlIGludGVyYWN0aXZlIHNlc3Npb24gc3RhcnRlZCBhZnRlciB0aGUgc2NyaXB0IGlzXG5leGVjdXRlZC5cblxuU2VlIGFsc286ICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuXG4gICAgIFRoZSBvcmlnaW5hbCBwcm9wb3NhbCBmb3IgdGhlIF9fZnV0dXJlX18gbWVjaGFuaXNtLlxuJywKLSAnaW4nOiB1J1xuTWVtYmVyc2hpcCB0ZXN0IG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluIHMiXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgInhcbm5vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgdGVzdHNcbndoZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzIHN1Y2ggYXNcbmxpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxueSkiLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGlzXG5hIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICBFbXB0eVxuc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyIHN0cmluZyxcbnNvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSAiX19jb250YWluc19fKCkiIG1ldGhvZCwgInhcbmluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiIGJ1dCBkb1xuZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiB3aXRoICJ4ID09IHoiXG5pcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG5kdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG5leGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuImluIi5cbicsCi0gJ2ludGVnZXJzJzogdSdcbkludGVnZXIgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW50ZWdlciAgICAgICAgOjo9IGRlY2ltYWxpbnRlZ2VyIHwgb2N0aW50ZWdlciB8IGhleGludGVnZXIgfCBiaW5pbnRlZ2VyXG4gICBkZWNpbWFsaW50ZWdlciA6Oj0gbm9uemVyb2RpZ2l0IGRpZ2l0KiB8ICIwIitcbiAgIG5vbnplcm9kaWdpdCAgIDo6PSAiMSIuLi4iOSJcbiAgIGRpZ2l0ICAgICAgICAgIDo6PSAiMCIuLi4iOSJcbiAgIG9jdGludGVnZXIgICAgIDo6PSAiMCIgKCJvIiB8ICJPIikgb2N0ZGlnaXQrXG4gICBoZXhpbnRlZ2VyICAgICA6Oj0gIjAiICgieCIgfCAiWCIpIGhleGRpZ2l0K1xuICAgYmluaW50ZWdlciAgICAgOjo9ICIwIiAoImIiIHwgIkIiKSBiaW5kaWdpdCtcbiAgIG9jdGRpZ2l0ICAgICAgIDo6PSAiMCIuLi4iNyJcbiAgIGhleGRpZ2l0ICAgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuICAgYmluZGlnaXQgICAgICAgOjo9ICIwIiB8ICIxIlxuXG5UaGVyZSBpcyBubyBsaW1pdCBmb3IgdGhlIGxlbmd0aCBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0IGZyb20gd2hhdFxuY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuXG5Ob3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgYWxsb3dlZC5cblRoaXMgaXMgZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggUHl0aG9uXG51c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cblxuU29tZSBleGFtcGxlcyBvZiBpbnRlZ2VyIGxpdGVyYWxzOlxuXG4gICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTFcbiAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweGRlYWRiZWVmXG4nLAotICdsYW1iZGEnOiB1J1xuTGFtYmRhc1xuKioqKioqKlxuXG4gICBsYW1iZGFfZXhwciAgICAgICAgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25cbiAgIGxhbWJkYV9leHByX25vY29uZCA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvbl9ub2NvbmRcblxuTGFtYmRhIGV4cHJlc3Npb25zIChzb21ldGltZXMgY2FsbGVkIGxhbWJkYSBmb3JtcykgYXJlIHVzZWQgdG8gY3JlYXRlXG5hbm9ueW1vdXMgZnVuY3Rpb25zLiBUaGUgZXhwcmVzc2lvbiAibGFtYmRhIGFyZ3VtZW50czogZXhwcmVzc2lvbiJcbnlpZWxkcyBhIGZ1bmN0aW9uIG9iamVjdC4gIFRoZSB1bm5hbWVkIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBmdW5jdGlvblxub2JqZWN0IGRlZmluZWQgd2l0aFxuXG4gICBkZWYgPGxhbWJkYT4oYXJndW1lbnRzKTpcbiAgICAgICByZXR1cm4gZXhwcmVzc2lvblxuXG5TZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIHBhcmFtZXRlciBsaXN0cy5cbk5vdGUgdGhhdCBmdW5jdGlvbnMgY3JlYXRlZCB3aXRoIGxhbWJkYSBleHByZXNzaW9ucyBjYW5ub3QgY29udGFpblxuc3RhdGVtZW50cyBvciBhbm5vdGF0aW9ucy5cbicsCi0gJ2xpc3RzJzogdSdcbkxpc3QgZGlzcGxheXNcbioqKioqKioqKioqKipcblxuQSBsaXN0IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2YgZXhwcmVzc2lvbnMgZW5jbG9zZWQgaW5cbnNxdWFyZSBicmFja2V0czpcblxuICAgbGlzdF9kaXNwbGF5IDo6PSAiWyIgW3N0YXJyZWRfbGlzdCB8IGNvbXByZWhlbnNpb25dICJdIlxuXG5BIGxpc3QgZGlzcGxheSB5aWVsZHMgYSBuZXcgbGlzdCBvYmplY3QsIHRoZSBjb250ZW50cyBiZWluZyBzcGVjaWZpZWRcbmJ5IGVpdGhlciBhIGxpc3Qgb2YgZXhwcmVzc2lvbnMgb3IgYSBjb21wcmVoZW5zaW9uLiAgV2hlbiBhIGNvbW1hLVxuc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaXMgc3VwcGxpZWQsIGl0cyBlbGVtZW50cyBhcmUgZXZhbHVhdGVkXG5mcm9tIGxlZnQgdG8gcmlnaHQgYW5kIHBsYWNlZCBpbnRvIHRoZSBsaXN0IG9iamVjdCBpbiB0aGF0IG9yZGVyLlxuV2hlbiBhIGNvbXByZWhlbnNpb24gaXMgc3VwcGxpZWQsIHRoZSBsaXN0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlXG5lbGVtZW50cyByZXN1bHRpbmcgZnJvbSB0aGUgY29tcHJlaGVuc2lvbi5cbicsCi0gJ25hbWluZyc6IHUnXG5OYW1pbmcgYW5kIGJpbmRpbmdcbioqKioqKioqKioqKioqKioqKlxuXG5cbkJpbmRpbmcgb2YgbmFtZXNcbj09PT09PT09PT09PT09PT1cblxuKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5UaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gZnVuY3Rpb25zLFxuImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kIHRoZVxuY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0IGFyZVxuaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciBhZnRlclxuImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgc3RhdGVtZW50XG5vZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgZm9ybVxubWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuXG5BIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kIGZvclxudGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgbmFtZSkuXG5cbkVhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkIGJ5IGFcbmNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlIHRvcC1sZXZlbFxuY29kZSBibG9jaykuXG5cbklmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgYmxvY2ssXG51bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCB0aGVcbm1vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgbW9kdWxlXG5jb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhIGNvZGVcbmJsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG5cbkVhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICpiaW5kaW5nKlxub2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uIHJ1bGVzLlxuXG5cblJlc29sdXRpb24gb2YgbmFtZXNcbj09PT09PT09PT09PT09PT09PT1cblxuQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSBsb2NhbFxudmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmIHRoZVxuZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55IGJsb2Nrc1xuY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgaW50cm9kdWNlc1xuYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG5cbldoZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgbmVhcmVzdFxuZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgYmxvY2tcbmlzIGNhbGxlZCB0aGUgYmxvY2tcJ3MgKmVudmlyb25tZW50Ki5cblxuV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBJZlxudGhlIGN1cnJlbnQgc2NvcGUgaXMgYSBmdW5jdGlvbiBzY29wZSwgYW5kIHRoZSBuYW1lIHJlZmVycyB0byBhIGxvY2FsXG52YXJpYWJsZSB0aGF0IGhhcyBub3QgeWV0IGJlZW4gYm91bmQgdG8gYSB2YWx1ZSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlXG5uYW1lIGlzIHVzZWQsIGFuICJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbiJVbmJvdW5kTG9jYWxFcnJvciIgaXMgYSBzdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cblxuSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlIGJsb2NrLCBhbGxcbnVzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzIHRvIHRoZVxuY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgd2l0aGluIGFcbmJsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbmRlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyIGFueXdoZXJlXG53aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuIGJlXG5kZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy5cblxuSWYgdGhlICJnbG9iYWwiIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mIHRoZSBuYW1lXG5zcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgaW4gdGhlXG50b3AtbGV2ZWwgbmFtZXNwYWNlLiAgTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgbmFtZXNwYWNlIGJ5XG5zZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlXG5jb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlIG5hbWVzcGFjZVxub2YgdGhlIG1vZHVsZSAiYnVpbHRpbnMiLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgZmlyc3QuICBJZlxudGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzIHNlYXJjaGVkLiAgVGhlXG4iZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyBvcGVyYXRpb25cbmluIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgdmFyaWFibGVcbmNvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhIGdsb2JhbC5cblxuVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyBjb3JyZXNwb25kaW5nIG5hbWVzIHRvIHJlZmVyIHRvXG5wcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG4iU3ludGF4RXJyb3IiIGlzIHJhaXNlZCBhdCBjb21waWxlIHRpbWUgaWYgdGhlIGdpdmVuIG5hbWUgZG9lcyBub3RcbmV4aXN0IGluIGFueSBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG5cblRoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSBhXG5tb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyBjYWxsZWRcbiJfX21haW5fXyIuXG5cbkNsYXNzIGRlZmluaXRpb24gYmxvY2tzIGFuZCBhcmd1bWVudHMgdG8gImV4ZWMoKSIgYW5kICJldmFsKCkiIGFyZVxuc3BlY2lhbCBpbiB0aGUgY29udGV4dCBvZiBuYW1lIHJlc29sdXRpb24uIEEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhblxuZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmUgbmFtZXMuIFRoZXNlIHJlZmVyZW5jZXNcbmZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24gd2l0aCBhbiBleGNlcHRpb24gdGhhdFxudW5ib3VuZCBsb2NhbCB2YXJpYWJsZXMgYXJlIGxvb2tlZCB1cCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gVGhlXG5uYW1lc3BhY2Ugb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gYmVjb21lcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkgb2ZcbnRoZSBjbGFzcy4gVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgaW4gYSBjbGFzcyBibG9jayBpcyBsaW1pdGVkIHRvXG50aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCB0byB0aGUgY29kZSBibG9ja3Mgb2YgbWV0aG9kcyAtLVxudGhpcyBpbmNsdWRlcyBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIHNpbmNlIHRoZXkgYXJlXG5pbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmdcbndpbGwgZmFpbDpcblxuICAgY2xhc3MgQTpcbiAgICAgICBhID0gNDJcbiAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG5cblxuQnVpbHRpbnMgYW5kIHJlc3RyaWN0ZWQgZXhlY3V0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhIGNvZGUgYmxvY2tcbmlzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gaXRzIGdsb2JhbFxubmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSBsYXR0ZXIgY2FzZVxudGhlIG1vZHVsZVwncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIl9fbWFpbl9fIlxubW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gaW4gYW55XG5vdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiB0aGVcbiJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSB1c2VyLWNyZWF0ZWRcbmRpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbiJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBVc2Vyc1xud2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgImltcG9ydCJcbnRoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG5cblxuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgY29tcGlsZVxudGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuXG4gICBpID0gMTBcbiAgIGRlZiBmKCk6XG4gICAgICAgcHJpbnQoaSlcbiAgIGkgPSA0MlxuICAgZigpXG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cblRoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbFxuZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWxcbmFuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZFxuaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgWzFdXG5UaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAotICdub25sb2NhbCc6IHUnXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBub25sb2NhbF9zdG10IDo6PSAibm9ubG9jYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIHRvIHJlZmVyIHRvXG5wcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZXhjbHVkaW5nXG5nbG9iYWxzLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBiaW5kaW5nIGlzXG50byBzZWFyY2ggdGhlIGxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzXG5lbmNhcHN1bGF0ZWQgY29kZSB0byByZWJpbmQgdmFyaWFibGVzIG91dHNpZGUgb2YgdGhlIGxvY2FsIHNjb3BlXG5iZXNpZGVzIHRoZSBnbG9iYWwgKG1vZHVsZSkgc2NvcGUuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50LCB1bmxpa2UgdGhvc2UgbGlzdGVkIGluIGFcbiJnbG9iYWwiIHN0YXRlbWVudCwgbXVzdCByZWZlciB0byBwcmUtZXhpc3RpbmcgYmluZGluZ3MgaW4gYW5cbmVuY2xvc2luZyBzY29wZSAodGhlIHNjb3BlIGluIHdoaWNoIGEgbmV3IGJpbmRpbmcgc2hvdWxkIGJlIGNyZWF0ZWRcbmNhbm5vdCBiZSBkZXRlcm1pbmVkIHVuYW1iaWd1b3VzbHkpLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggcHJlLVxuZXhpc3RpbmcgYmluZGluZ3MgaW4gdGhlIGxvY2FsIHNjb3BlLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNCoqIC0gQWNjZXNzIHRvIE5hbWVzIGluIE91dGVyIFNjb3Blc1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQuXG4nLAotICdudW1iZXJzJzogdSdcbk51bWVyaWMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyBwb2ludFxubnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbihjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbmltYWdpbmFyeSBudW1iZXIpLlxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgIi0xIlxuaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgXCciLSJcJyBhbmQgdGhlXG5saXRlcmFsICIxIi5cbicsCi0gJ251bWVyaWMtdHlwZXMnOiB1J1xuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIixcbiAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgY2FsbGVkLlxuICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmdcbiAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG9cbiAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHRcbiAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluXG4gICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpXG4gICBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzXG4gICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggLVxuICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICJfX3JzdWJfXygpIlxuICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgIl9fcnBvd19fKCkiICh0aGVcbiAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kXG4gICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXNcbiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAiJT0iLCAiKio9IixcbiAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCBhdHRlbXB0IHRvXG4gICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhIHNwZWNpZmljXG4gICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZVxuICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzXG4gICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gInggPVxuICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAieS5fX3JhZGRfXyh4KSIgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluIGNlcnRhaW5cbiAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBlcnJvcnNcbiAgIChzZWUgKldoeSBkb2VzIGFfdHVwbGVbaV0gKz0gW1wnaXRlbVwnXSByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGVcbiAgIGFkZGl0aW9uIHdvcmtzPyopLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgdGhlIGRhdGFcbiAgIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicsCi0gJ29iamVjdHMnOiB1J1xuT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4qT2JqZWN0cyogYXJlIFB5dGhvblwncyBhYnN0cmFjdGlvbiBmb3IgZGF0YS4gIEFsbCBkYXRhIGluIGEgUHl0aG9uXG5wcm9ncmFtIGlzIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMgb3IgYnkgcmVsYXRpb25zIGJldHdlZW4gb2JqZWN0cy4gKEluXG5hIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm5cJ3MgbW9kZWwgb2YgYSAic3RvcmVkXG5wcm9ncmFtIGNvbXB1dGVyLCIgY29kZSBpcyBhbHNvIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMuKVxuXG5FdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3RcJ3NcbippZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgb2YgaXRcbmFzIHRoZSBvYmplY3RcJ3MgYWRkcmVzcyBpbiBtZW1vcnkuICBUaGUgXCciaXMiXCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlXG5pZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlICJpZCgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbnJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogRm9yIENQeXRob24sICJpZCh4KSIgaXMgdGhlIG1lbW9yeVxuYWRkcmVzcyB3aGVyZSAieCIgaXMgc3RvcmVkLlxuXG5BbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCBzdXBwb3J0c1xuKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzXG5mb3Igb2JqZWN0cyBvZiB0aGF0IHR5cGUuICBUaGUgInR5cGUoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3RcJ3NcbnR5cGUgKHdoaWNoIGlzIGFuIG9iamVjdCBpdHNlbGYpLiAgTGlrZSBpdHMgaWRlbnRpdHksIGFuIG9iamVjdFwnc1xuKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV1cblxuVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhblxuY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZSBpcyB1bmNoYW5nZWFibGVcbm9uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuXG5pbW11dGFibGUgY29udGFpbmVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZVxub2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyXCdzIHZhbHVlIGlzIGNoYW5nZWQ7IGhvd2V2ZXIgdGhlXG5jb250YWluZXIgaXMgc3RpbGwgY29uc2lkZXJlZCBpbW11dGFibGUsIGJlY2F1c2UgdGhlIGNvbGxlY3Rpb24gb2Zcbm9iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuc3RyaWN0bHkgdGhlIHNhbWUgYXMgaGF2aW5nIGFuIHVuY2hhbmdlYWJsZSB2YWx1ZSwgaXQgaXMgbW9yZSBzdWJ0bGUuKVxuQW4gb2JqZWN0XCdzIG11dGFiaWxpdHkgaXMgZGV0ZXJtaW5lZCBieSBpdHMgdHlwZTsgZm9yIGluc3RhbmNlLFxubnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyBhbmRcbmxpc3RzIGFyZSBtdXRhYmxlLlxuXG5PYmplY3RzIGFyZSBuZXZlciBleHBsaWNpdGx5IGRlc3Ryb3llZDsgaG93ZXZlciwgd2hlbiB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuYWxsb3dlZCB0byBwb3N0cG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3Igb21pdCBpdCBhbHRvZ2V0aGVyIC0tLSBpdCBpc1xuYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5pbXBsZW1lbnRlZCwgYXMgbG9uZyBhcyBubyBvYmplY3RzIGFyZSBjb2xsZWN0ZWQgdGhhdCBhcmUgc3RpbGxcbnJlYWNoYWJsZS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBDUHl0aG9uIGN1cnJlbnRseSB1c2VzIGEgcmVmZXJlbmNlLVxuY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5IGxpbmtlZFxuZ2FyYmFnZSwgd2hpY2ggY29sbGVjdHMgbW9zdCBvYmplY3RzIGFzIHNvb24gYXMgdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbmNpcmN1bGFyIHJlZmVyZW5jZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlICJnYyIgbW9kdWxlIGZvclxuaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuIE90aGVyXG5pbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCBkZXBlbmRcbm9uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlIChzb1xueW91IHNob3VsZCBhbHdheXMgY2xvc2UgZmlsZXMgZXhwbGljaXRseSkuXG5cbk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvblwncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgY29sbGVjdGFibGUuXG5BbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnInRyeSIuLi4iZXhjZXB0IlwnXG5zdGF0ZW1lbnQgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZS5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byAiZXh0ZXJuYWwiIHJlc291cmNlcyBzdWNoIGFzIG9wZW5cbmZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSBmcmVlZFxud2hlbiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UtY29sbGVjdGVkLCBidXQgc2luY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5ub3QgZ3VhcmFudGVlZCB0byBoYXBwZW4sIHN1Y2ggb2JqZWN0cyBhbHNvIHByb3ZpZGUgYW4gZXhwbGljaXQgd2F5IHRvXG5yZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhICJjbG9zZSgpIiBtZXRob2QuIFByb2dyYW1zXG5hcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcblwnInRyeSIuLi4iZmluYWxseSJcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJyJ3aXRoIlwnIHN0YXRlbWVudCBwcm92aWRlXG5jb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyICJhID0gMTsgYiA9IDEiLFxuImEiIGFuZCAiYiIgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlIHZhbHVlXG5vbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciAiYyA9IFtdOyBkID0gW10iLCAiYyJcbmFuZCAiZCIgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCwgdW5pcXVlLCBuZXdseVxuY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCAiYyA9IGQgPSBbXSIgYXNzaWducyB0aGUgc2FtZSBvYmplY3RcbnRvIGJvdGggImMiIGFuZCAiZCIuKVxuJywKLSAnb3BlcmF0b3Itc3VtbWFyeSc6IHUnXG5PcGVyYXRvciBwcmVjZWRlbmNlXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZSBpbiBQeXRob24sIGZyb21cbmxvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgKG1vc3RcbmJpbmRpbmcpLiAgT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByZWNlZGVuY2UuICBVbmxlc3NcbnRoZSBzeW50YXggaXMgZXhwbGljaXRseSBnaXZlbiwgb3BlcmF0b3JzIGFyZSBiaW5hcnkuICBPcGVyYXRvcnMgaW5cbnRoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yIGV4cG9uZW50aWF0aW9uLCB3aGljaFxuZ3JvdXBzIGZyb20gcmlnaHQgdG8gbGVmdCkuXG5cbk5vdGUgdGhhdCBjb21wYXJpc29ucywgbWVtYmVyc2hpcCB0ZXN0cywgYW5kIGlkZW50aXR5IHRlc3RzLCBhbGwgaGF2ZVxudGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgaGF2ZSBhIGxlZnQtdG8tcmlnaHQgY2hhaW5pbmcgZmVhdHVyZSBhc1xuZGVzY3JpYmVkIGluIHRoZSAqQ29tcGFyaXNvbnMqIHNlY3Rpb24uXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgIj49IiwgIiE9IiwgIj09IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIl4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIiYiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIjw8IiwgIj4+IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIisiLCAiLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiICAgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgbWF0cml4IG11bHRpcGxpY2F0aW9uIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXZpc2lvbiwgcmVtYWluZGVyIFs1XSAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIit4IiwgIi14IiwgIn54IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioqIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImF3YWl0IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBd2FpdCBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInhbaW5kZXhdIiwgInhbaW5kZXg6aW5kZXhdIiwgICAgICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgdmFsdWUuLi59IiwgIntleHByZXNzaW9ucy4uLn0iICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGlsZSAiYWJzKHgleSkgPCBhYnMoeSkiIGlzIHRydWUgbWF0aGVtYXRpY2FsbHksIGZvciBmbG9hdHNcbiAgICBpdCBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgRm9yIGV4YW1wbGUsIGFuZFxuICAgIGFzc3VtaW5nIGEgcGxhdGZvcm0gb24gd2hpY2ggYSBQeXRob24gZmxvYXQgaXMgYW4gSUVFRSA3NTQgZG91YmxlLVxuICAgIHByZWNpc2lvbiBudW1iZXIsIGluIG9yZGVyIHRoYXQgIi0xZS0xMDAgJSAxZTEwMCIgaGF2ZSB0aGUgc2FtZVxuICAgIHNpZ24gYXMgIjFlMTAwIiwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyAiLTFlLTEwMCArIDFlMTAwIiwgd2hpY2hcbiAgICBpcyBudW1lcmljYWxseSBleGFjdGx5IGVxdWFsIHRvICIxZTEwMCIuICBUaGUgZnVuY3Rpb25cbiAgICAibWF0aC5mbW9kKCkiIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzIHRoZSBzaWduIG9mIHRoZVxuICAgIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zICItMWUtMTAwIiBpbiB0aGlzIGNhc2UuXG4gICAgV2hpY2ggYXBwcm9hY2ggaXMgbW9yZSBhcHByb3ByaWF0ZSBkZXBlbmRzIG9uIHRoZSBhcHBsaWNhdGlvbi5cblxuWzJdIElmIHggaXMgdmVyeSBjbG9zZSB0byBhbiBleGFjdCBpbnRlZ2VyIG11bHRpcGxlIG9mIHksIGl0XCdzXG4gICAgcG9zc2libGUgZm9yICJ4Ly95IiB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gIih4LXgleSkvL3kiIGR1ZSB0b1xuICAgIHJvdW5kaW5nLiAgSW4gc3VjaCBjYXNlcywgUHl0aG9uIHJldHVybnMgdGhlIGxhdHRlciByZXN1bHQsIGluXG4gICAgb3JkZXIgdG8gcHJlc2VydmUgdGhhdCAiZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHkiIGJlIHZlcnkgY2xvc2VcbiAgICB0byAieCIuXG5cblszXSBUaGUgVW5pY29kZSBzdGFuZGFyZCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gKmNvZGUgcG9pbnRzKiAoZS5nLlxuICAgIFUrMDA0MSkgYW5kICphYnN0cmFjdCBjaGFyYWN0ZXJzKiAoZS5nLiAiTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSIpLlxuICAgIFdoaWxlIG1vc3QgYWJzdHJhY3QgY2hhcmFjdGVycyBpbiBVbmljb2RlIGFyZSBvbmx5IHJlcHJlc2VudGVkXG4gICAgdXNpbmcgb25lIGNvZGUgcG9pbnQsIHRoZXJlIGlzIGEgbnVtYmVyIG9mIGFic3RyYWN0IGNoYXJhY3RlcnNcbiAgICB0aGF0IGNhbiBpbiBhZGRpdGlvbiBiZSByZXByZXNlbnRlZCB1c2luZyBhIHNlcXVlbmNlIG9mIG1vcmUgdGhhblxuICAgIG9uZSBjb2RlIHBvaW50LiAgRm9yIGV4YW1wbGUsIHRoZSBhYnN0cmFjdCBjaGFyYWN0ZXIgIkxBVElOXG4gICAgQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEiIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIHNpbmdsZVxuICAgICpwcmVjb21wb3NlZCBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMEM3LCBvciBhcyBhIHNlcXVlbmNlXG4gICAgb2YgYSAqYmFzZSBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMDQzIChMQVRJTiBDQVBJVEFMXG4gICAgTEVUVEVSIEMpLCBmb2xsb3dlZCBieSBhICpjb21iaW5pbmcgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uXG4gICAgVSswMzI3IChDT01CSU5JTkcgQ0VESUxMQSkuXG5cbiAgICBUaGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgb24gc3RyaW5ncyBjb21wYXJlIGF0IHRoZSBsZXZlbCBvZlxuICAgIFVuaWNvZGUgY29kZSBwb2ludHMuIFRoaXMgbWF5IGJlIGNvdW50ZXItaW50dWl0aXZlIHRvIGh1bWFucy4gIEZvclxuICAgIGV4YW1wbGUsICIiXFx1MDBDNyIgPT0gIlxcdTAwNDNcXHUwMzI3IiIgaXMgIkZhbHNlIiwgZXZlbiB0aG91Z2ggYm90aFxuICAgIHN0cmluZ3MgcmVwcmVzZW50IHRoZSBzYW1lIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU4gQ0FQSVRBTFxuICAgIExFVFRFUiBDIFdJVEggQ0VESUxMQSIuXG5cbiAgICBUbyBjb21wYXJlIHN0cmluZ3MgYXQgdGhlIGxldmVsIG9mIGFic3RyYWN0IGNoYXJhY3RlcnMgKHRoYXQgaXMsXG4gICAgaW4gYSB3YXkgaW50dWl0aXZlIHRvIGh1bWFucyksIHVzZSAidW5pY29kZWRhdGEubm9ybWFsaXplKCkiLlxuXG5bNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCB0aGVcbiAgICBkeW5hbWljIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2Ugc2VlbWluZ2x5IHVudXN1YWxcbiAgICBiZWhhdmlvdXIgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSAiaXMiIG9wZXJhdG9yLCBsaWtlIHRob3NlXG4gICAgaW52b2x2aW5nIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgY29uc3RhbnRzLlxuICAgIENoZWNrIHRoZWlyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cblxuWzVdIFRoZSAiJSIgb3BlcmF0b3IgaXMgYWxzbyB1c2VkIGZvciBzdHJpbmcgZm9ybWF0dGluZzsgdGhlIHNhbWVcbiAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG5cbls2XSBUaGUgcG93ZXIgb3BlcmF0b3IgIioqIiBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBhbiBhcml0aG1ldGljXG4gICAgb3IgYml0d2lzZSB1bmFyeSBvcGVyYXRvciBvbiBpdHMgcmlnaHQsIHRoYXQgaXMsICIyKiotMSIgaXMgIjAuNSIuXG4nLAotICdwYXNzJzogdSdcblRoZSAicGFzcyIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKlxuXG4gICBwYXNzX3N0bXQgOjo9ICJwYXNzIlxuXG4icGFzcyIgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyBoYXBwZW5zLlxuSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuXG4gICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuXG4gICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCi0gJ3Bvd2VyJzogdSdcblRoZSBwb3dlciBvcGVyYXRvclxuKioqKioqKioqKioqKioqKioqXG5cblRoZSBwb3dlciBvcGVyYXRvciBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzXG5sZWZ0OyBpdCBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzIHJpZ2h0LiAgVGhlXG5zeW50YXggaXM6XG5cbiAgIHBvd2VyIDo6PSAoIGF3YWl0X2V4cHIgfCBwcmltYXJ5ICkgWyIqKiIgdV9leHByXVxuXG5UaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgdGhlXG5vcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgY29uc3RyYWluXG50aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogIi0xKioyIiByZXN1bHRzIGluICItMSIuXG5cblRoZSBwb3dlciBvcGVyYXRvciBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBidWlsdC1pbiAicG93KCkiXG5mdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgYXJndW1lbnRcbnJhaXNlZCB0byB0aGUgcG93ZXIgb2YgaXRzIHJpZ2h0IGFyZ3VtZW50LiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZVxuZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cblxuRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgdW5sZXNzXG50aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlXG5jb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG4iMTAqKjIiIHJldHVybnMgIjEwMCIsIGJ1dCAiMTAqKi0yIiByZXR1cm5zICIwLjAxIi5cblxuUmFpc2luZyAiMC4wIiB0byBhIG5lZ2F0aXZlIHBvd2VyIHJlc3VsdHMgaW4gYSAiWmVyb0RpdmlzaW9uRXJyb3IiLlxuUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXIgcmVzdWx0cyBpbiBhICJjb21wbGV4IlxubnVtYmVyLiAoSW4gZWFybGllciB2ZXJzaW9ucyBpdCByYWlzZWQgYSAiVmFsdWVFcnJvciIuKVxuJywKLSAncmFpc2UnOiB1J1xuVGhlICJyYWlzZSIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuICAgcmFpc2Vfc3RtdCA6Oj0gInJhaXNlIiBbZXhwcmVzc2lvbiBbImZyb20iIGV4cHJlc3Npb25dXVxuXG5JZiBubyBleHByZXNzaW9ucyBhcmUgcHJlc2VudCwgInJhaXNlIiByZS1yYWlzZXMgdGhlIGxhc3QgZXhjZXB0aW9uXG50aGF0IHdhcyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBubyBleGNlcHRpb24gaXMgYWN0aXZlIGluXG50aGUgY3VycmVudCBzY29wZSwgYSAiUnVudGltZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkIGluZGljYXRpbmdcbnRoYXQgdGhpcyBpcyBhbiBlcnJvci5cblxuT3RoZXJ3aXNlLCAicmFpc2UiIGV2YWx1YXRlcyB0aGUgZmlyc3QgZXhwcmVzc2lvbiBhcyB0aGUgZXhjZXB0aW9uXG5vYmplY3QuICBJdCBtdXN0IGJlIGVpdGhlciBhIHN1YmNsYXNzIG9yIGFuIGluc3RhbmNlIG9mXG4iQmFzZUV4Y2VwdGlvbiIuIElmIGl0IGlzIGEgY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBiZVxub2J0YWluZWQgd2hlbiBuZWVkZWQgYnkgaW5zdGFudGlhdGluZyB0aGUgY2xhc3Mgd2l0aCBubyBhcmd1bWVudHMuXG5cblRoZSAqdHlwZSogb2YgdGhlIGV4Y2VwdGlvbiBpcyB0aGUgZXhjZXB0aW9uIGluc3RhbmNlXCdzIGNsYXNzLCB0aGVcbip2YWx1ZSogaXMgdGhlIGluc3RhbmNlIGl0c2VsZi5cblxuQSB0cmFjZWJhY2sgb2JqZWN0IGlzIG5vcm1hbGx5IGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIGFuIGV4Y2VwdGlvblxuaXMgcmFpc2VkIGFuZCBhdHRhY2hlZCB0byBpdCBhcyB0aGUgIl9fdHJhY2ViYWNrX18iIGF0dHJpYnV0ZSwgd2hpY2hcbmlzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgaW5cbm9uZSBzdGVwIHVzaW5nIHRoZSAid2l0aF90cmFjZWJhY2soKSIgZXhjZXB0aW9uIG1ldGhvZCAod2hpY2ggcmV0dXJuc1xudGhlIHNhbWUgZXhjZXB0aW9uIGluc3RhbmNlLCB3aXRoIGl0cyB0cmFjZWJhY2sgc2V0IHRvIGl0cyBhcmd1bWVudCksXG5saWtlIHNvOlxuXG4gICByYWlzZSBFeGNlcHRpb24oImZvbyBvY2N1cnJlZCIpLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFja29iailcblxuVGhlICJmcm9tIiBjbGF1c2UgaXMgdXNlZCBmb3IgZXhjZXB0aW9uIGNoYWluaW5nOiBpZiBnaXZlbiwgdGhlIHNlY29uZFxuKmV4cHJlc3Npb24qIG11c3QgYmUgYW5vdGhlciBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UsIHdoaWNoIHdpbGxcbnRoZW4gYmUgYXR0YWNoZWQgdG8gdGhlIHJhaXNlZCBleGNlcHRpb24gYXMgdGhlICJfX2NhdXNlX18iIGF0dHJpYnV0ZVxuKHdoaWNoIGlzIHdyaXRhYmxlKS4gIElmIHRoZSByYWlzZWQgZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkLCBib3RoXG5leGNlcHRpb25zIHdpbGwgYmUgcHJpbnRlZDpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4gICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpIGZyb20gZXhjXG4gICAuLi5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbiAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cblxuICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkEgc2ltaWxhciBtZWNoYW5pc20gd29ya3MgaW1wbGljaXRseSBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGluc2lkZVxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgb3IgYSAiZmluYWxseSIgY2xhdXNlOiB0aGUgcHJldmlvdXMgZXhjZXB0aW9uIGlzXG50aGVuIGF0dGFjaGVkIGFzIHRoZSBuZXcgZXhjZXB0aW9uXCdzICJfX2NvbnRleHRfXyIgYXR0cmlidXRlOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQ6XG4gICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpXG4gICAuLi5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbiAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cblxuICAgRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBoYW5kbGluZyBleGNlcHRpb25zIGlzIGluIHNlY3Rpb25cbipUaGUgdHJ5IHN0YXRlbWVudCouXG4nLAotICdyZXR1cm4nOiB1J1xuVGhlICJyZXR1cm4iIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByZXR1cm5fc3RtdCA6Oj0gInJldHVybiIgW2V4cHJlc3Npb25fbGlzdF1cblxuInJldHVybiIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uLFxubm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuXG5JZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlICJOb25lIiBpc1xuc3Vic3RpdHV0ZWQuXG5cbiJyZXR1cm4iIGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiBjYWxsIHdpdGggdGhlIGV4cHJlc3Npb24gbGlzdCAob3JcbiJOb25lIikgYXMgcmV0dXJuIHZhbHVlLlxuXG5XaGVuICJyZXR1cm4iIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgImZpbmFsbHkiXG5jbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgdGhlXG5mdW5jdGlvbi5cblxuSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSAicmV0dXJuIiBzdGF0ZW1lbnQgaW5kaWNhdGVzIHRoYXQgdGhlXG5nZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSAiU3RvcEl0ZXJhdGlvbiIgdG8gYmUgcmFpc2VkLiBUaGVcbnJldHVybmVkIHZhbHVlIChpZiBhbnkpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gY29uc3RydWN0XG4iU3RvcEl0ZXJhdGlvbiIgYW5kIGJlY29tZXMgdGhlICJTdG9wSXRlcmF0aW9uLnZhbHVlIiBhdHRyaWJ1dGUuXG4nLAotICdzZXF1ZW5jZS10eXBlcyc6IHUnXG5FbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyIG9iamVjdHMuXG5Db250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpIG9yIG1hcHBpbmdzXG4obGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzIHdlbGwuICBUaGVcbmZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciB0b1xuZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsIHRoZVxuYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoICIwIDw9IGsgPCBOIiB3aGVyZVxuKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaCBkZWZpbmUgYVxucmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZSB0aGVcbm1ldGhvZHMgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVtcygpIiwgImdldCgpIiwgImNsZWFyKCkiLFxuInNldGRlZmF1bHQoKSIsICJwb3AoKSIsICJwb3BpdGVtKCkiLCAiY29weSgpIiwgYW5kICJ1cGRhdGUoKSJcbmJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvblwncyBzdGFuZGFyZCBkaWN0aW9uYXJ5IG9iamVjdHMuXG5UaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciIGFic3RyYWN0IGJhc2VcbmNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHMgZnJvbSBhIGJhc2Ugc2V0IG9mICJfX2dldGl0ZW1fXygpIixcbiJfX3NldGl0ZW1fXygpIiwgIl9fZGVsaXRlbV9fKCkiLCBhbmQgImtleXMoKSIuIE11dGFibGUgc2VxdWVuY2VzXG5zaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAiZXh0ZW5kKCkiLFxuImluc2VydCgpIiwgInBvcCgpIiwgInJlbW92ZSgpIiwgInJldmVyc2UoKSIgYW5kICJzb3J0KCkiLCBsaWtlIFB5dGhvblxuc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkIGltcGxlbWVudFxuYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uIChtZWFuaW5nXG5yZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyAiX19hZGRfXygpIiwgIl9fcmFkZF9fKCkiLFxuIl9faWFkZF9fKCkiLCAiX19tdWxfXygpIiwgIl9fcm11bF9fKCkiIGFuZCAiX19pbXVsX18oKSIgZGVzY3JpYmVkXG5iZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXQgaXNcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbiJfX2NvbnRhaW5zX18oKSIgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlICJpbiIgb3BlcmF0b3I7XG5mb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3Igc2VxdWVuY2VzLCBpdFxuc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyIHJlY29tbWVuZGVkIHRoYXQgYm90aFxubWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlICJfX2l0ZXJfXygpIiBtZXRob2QgdG8gYWxsb3dcbmVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICJfX2l0ZXJfXygpIlxuc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJrZXlzKCkiOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZVxudGhyb3VnaCB0aGUgdmFsdWVzLlxuXG5vYmplY3QuX19sZW5fXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyICI+PSIgMC4gIEFsc28sIGFuIG9iamVjdCB0aGF0XG4gICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAiX19sZW5fXygpIiBtZXRob2RcbiAgIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5vYmplY3QuX19sZW5ndGhfaGludF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmxlbmd0aF9oaW50KCkiLiBTaG91bGQgcmV0dXJuIGFuXG4gICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciBvciBsZXNzIHRoYW5cbiAgIHRoZSBhY3R1YWwgbGVuZ3RoKS4gVGhlIGxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIgIj49IiAwLiBUaGlzXG4gICBtZXRob2QgaXMgcHVyZWx5IGFuIG9wdGltaXphdGlvbiBhbmQgaXMgbmV2ZXIgcmVxdWlyZWQgZm9yXG4gICBjb3JyZWN0bmVzcy5cblxuICAgTmV3IGluIHZlcnNpb24gMy40LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuXG4gIEEgY2FsbCBsaWtlXG5cbiAgICAgYVsxOjJdID0gYlxuXG4gIGlzIHRyYW5zbGF0ZWQgdG9cblxuICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcblxuICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluIHdpdGggIk5vbmUiLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgInNlbGZba2V5XSIuIEZvciBzZXF1ZW5jZSB0eXBlcyxcbiAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2Ugb2JqZWN0cy4gIE5vdGUgdGhhdFxuICAgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlIGNsYXNzIHdpc2hlc1xuICAgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLiBJZlxuICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgcmFpc2VkOyBpZiBvZlxuICAgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2YgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnlcbiAgIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgdmFsdWVzKSwgIkluZGV4RXJyb3IiIHNob3VsZCBiZVxuICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluIHRoZVxuICAgY29udGFpbmVyKSwgIktleUVycm9yIiBzaG91bGQgYmUgcmFpc2VkLlxuXG4gICBOb3RlOiAiZm9yIiBsb29wcyBleHBlY3QgdGhhdCBhbiAiSW5kZXhFcnJvciIgd2lsbCBiZSByYWlzZWQgZm9yXG4gICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgdGhlXG4gICAgIHNlcXVlbmNlLlxuXG5vYmplY3QuX19taXNzaW5nX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgInNlbGZba2V5XSIgZm9yIGRpY3RcbiAgIHN1YmNsYXNzZXMgd2hlbiBrZXkgaXMgbm90IGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5vYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSBub3RlIGFzIGZvclxuICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mICJzZWxmW2tleV0iLiAgU2FtZSBub3RlIGFzIGZvclxuICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuXG4gICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgYXJlXG4gICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0ZXJhdG9yXG4gICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cblxub2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuXG4gICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlICJfX3JldmVyc2VkX18oKSIgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlICJyZXZlcnNlZCgpIlxuICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICgiX19sZW5fXygpIlxuICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2xcbiAgIHNob3VsZCBvbmx5IHByb3ZpZGUgIl9fcmV2ZXJzZWRfXygpIiBpZiB0aGV5IGNhbiBwcm92aWRlIGFuXG4gICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSBwcm92aWRlZCBieVxuICAgInJldmVyc2VkKCkiLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoImluIiBhbmQgIm5vdCBpbiIpIGFyZSBub3JtYWxseVxuaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsIGNvbnRhaW5lclxub2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIG1vcmUgZWZmaWNpZW50XG5pbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgYSBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgcmV0dXJuIHRydWVcbiAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nIG9iamVjdHMsIHRoaXNcbiAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgdmFsdWVzIG9yXG4gICB0aGUga2V5LWl0ZW0gcGFpcnMuXG5cbiAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSAiX19jb250YWluc19fKCkiLCB0aGUgbWVtYmVyc2hpcCB0ZXN0XG4gICBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhICJfX2l0ZXJfXygpIiwgdGhlbiB0aGUgb2xkIHNlcXVlbmNlXG4gICBpdGVyYXRpb24gcHJvdG9jb2wgdmlhICJfX2dldGl0ZW1fXygpIiwgc2VlICp0aGlzIHNlY3Rpb24gaW4gdGhlXG4gICBsYW5ndWFnZSByZWZlcmVuY2UqLlxuJywKLSAnc2hpZnRpbmcnOiB1J1xuU2hpZnRpbmcgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgc2hpZnRpbmcgb3BlcmF0aW9ucyBoYXZlIGxvd2VyIHByaW9yaXR5IHRoYW4gdGhlIGFyaXRobWV0aWNcbm9wZXJhdGlvbnM6XG5cbiAgIHNoaWZ0X2V4cHIgOjo9IGFfZXhwciB8IHNoaWZ0X2V4cHIgKCAiPDwiIHwgIj4+IiApIGFfZXhwclxuXG5UaGVzZSBvcGVyYXRvcnMgYWNjZXB0IGludGVnZXJzIGFzIGFyZ3VtZW50cy4gIFRoZXkgc2hpZnQgdGhlIGZpcnN0XG5hcmd1bWVudCB0byB0aGUgbGVmdCBvciByaWdodCBieSB0aGUgbnVtYmVyIG9mIGJpdHMgZ2l2ZW4gYnkgdGhlXG5zZWNvbmQgYXJndW1lbnQuXG5cbkEgcmlnaHQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBmbG9vciBkaXZpc2lvbiBieSAicG93KDIsbikiLlxuQSBsZWZ0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgbXVsdGlwbGljYXRpb24gd2l0aCAicG93KDIsbikiLlxuXG5Ob3RlOiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpc1xuICByZXF1aXJlZCB0byBiZSBhdCBtb3N0ICJzeXMubWF4c2l6ZSIuICBJZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4gIGxhcmdlciB0aGFuICJzeXMubWF4c2l6ZSIgYW4gIk92ZXJmbG93RXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAotICdzbGljaW5ncyc6IHUnXG5TbGljaW5nc1xuKioqKioqKipcblxuQSBzbGljaW5nIHNlbGVjdHMgYSByYW5nZSBvZiBpdGVtcyBpbiBhIHNlcXVlbmNlIG9iamVjdCAoZS5nLiwgYVxuc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yIGFzXG50YXJnZXRzIGluIGFzc2lnbm1lbnQgb3IgImRlbCIgc3RhdGVtZW50cy4gIFRoZSBzeW50YXggZm9yIGEgc2xpY2luZzpcblxuICAgc2xpY2luZyAgICAgIDo6PSBwcmltYXJ5ICJbIiBzbGljZV9saXN0ICJdIlxuICAgc2xpY2VfbGlzdCAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4gICBzbGljZV9pdGVtICAgOjo9IGV4cHJlc3Npb24gfCBwcm9wZXJfc2xpY2VcbiAgIHByb3Blcl9zbGljZSA6Oj0gW2xvd2VyX2JvdW5kXSAiOiIgW3VwcGVyX2JvdW5kXSBbICI6IiBbc3RyaWRlXSBdXG4gICBsb3dlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbiAgIHVwcGVyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgc3RyaWRlICAgICAgIDo6PSBleHByZXNzaW9uXG5cblRoZXJlIGlzIGFtYmlndWl0eSBpbiB0aGUgZm9ybWFsIHN5bnRheCBoZXJlOiBhbnl0aGluZyB0aGF0IGxvb2tzIGxpa2VcbmFuIGV4cHJlc3Npb24gbGlzdCBhbHNvIGxvb2tzIGxpa2UgYSBzbGljZSBsaXN0LCBzbyBhbnkgc3Vic2NyaXB0aW9uXG5jYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciBjb21wbGljYXRpbmcgdGhlXG5zeW50YXgsIHRoaXMgaXMgZGlzYW1iaWd1YXRlZCBieSBkZWZpbmluZyB0aGF0IGluIHRoaXMgY2FzZSB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHNsaWNpbmcgKHRoaXMgaXMgdGhlIGNhc2UgaWYgdGhlIHNsaWNlIGxpc3RcbmNvbnRhaW5zIG5vIHByb3BlciBzbGljZSkuXG5cblRoZSBzZW1hbnRpY3MgZm9yIGEgc2xpY2luZyBhcmUgYXMgZm9sbG93cy4gIFRoZSBwcmltYXJ5IGlzIGluZGV4ZWRcbih1c2luZyB0aGUgc2FtZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pIHdpdGggYVxua2V5IHRoYXQgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmIHRoZSBzbGljZVxubGlzdCBjb250YWlucyBhdCBsZWFzdCBvbmUgY29tbWEsIHRoZSBrZXkgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGxvbmVcbnNsaWNlIGl0ZW0gaXMgdGhlIGtleS4gIFRoZSBjb252ZXJzaW9uIG9mIGEgc2xpY2UgaXRlbSB0aGF0IGlzIGFuXG5leHByZXNzaW9uIGlzIHRoYXQgZXhwcmVzc2lvbi4gIFRoZSBjb252ZXJzaW9uIG9mIGEgcHJvcGVyIHNsaWNlIGlzIGFcbnNsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIHdob3NlXG4ic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiBhdHRyaWJ1dGVzIGFyZSB0aGUgdmFsdWVzIG9mIHRoZVxuZXhwcmVzc2lvbnMgZ2l2ZW4gYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsXG5yZXNwZWN0aXZlbHksIHN1YnN0aXR1dGluZyAiTm9uZSIgZm9yIG1pc3NpbmcgZXhwcmVzc2lvbnMuXG4nLAotICdzcGVjaWFsYXR0cnMnOiB1J1xuU3BlY2lhbCBBdHRyaWJ1dGVzXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyB0byBzZXZlcmFsXG5vYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgbm90IHJlcG9ydGVkXG5ieSB0aGUgImRpcigpIiBidWlsdC1pbiBmdW5jdGlvbi5cblxub2JqZWN0Ll9fZGljdF9fXG5cbiAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuIG9iamVjdFwnc1xuICAgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzLlxuXG5pbnN0YW5jZS5fX2NsYXNzX19cblxuICAgVGhlIGNsYXNzIHRvIHdoaWNoIGEgY2xhc3MgaW5zdGFuY2UgYmVsb25ncy5cblxuY2xhc3MuX19iYXNlc19fXG5cbiAgIFRoZSB0dXBsZSBvZiBiYXNlIGNsYXNzZXMgb2YgYSBjbGFzcyBvYmplY3QuXG5cbmNsYXNzLl9fbmFtZV9fXG5cbiAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG5jbGFzcy5fX3F1YWxuYW1lX19cblxuICAgVGhlICpxdWFsaWZpZWQgbmFtZSogb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cblxuY2xhc3MuX19tcm9fX1xuXG4gICBUaGlzIGF0dHJpYnV0ZSBpcyBhIHR1cGxlIG9mIGNsYXNzZXMgdGhhdCBhcmUgY29uc2lkZXJlZCB3aGVuXG4gICBsb29raW5nIGZvciBiYXNlIGNsYXNzZXMgZHVyaW5nIG1ldGhvZCByZXNvbHV0aW9uLlxuXG5jbGFzcy5tcm8oKVxuXG4gICBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIG1ldGFjbGFzcyB0byBjdXN0b21pemUgdGhlXG4gICBtZXRob2QgcmVzb2x1dGlvbiBvcmRlciBmb3IgaXRzIGluc3RhbmNlcy4gIEl0IGlzIGNhbGxlZCBhdCBjbGFzc1xuICAgaW5zdGFudGlhdGlvbiwgYW5kIGl0cyByZXN1bHQgaXMgc3RvcmVkIGluICJfX21yb19fIi5cblxuY2xhc3MuX19zdWJjbGFzc2VzX18oKVxuXG4gICBFYWNoIGNsYXNzIGtlZXBzIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGltbWVkaWF0ZVxuICAgc3ViY2xhc3Nlcy4gIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aG9zZSByZWZlcmVuY2VzXG4gICBzdGlsbCBhbGl2ZS4gRXhhbXBsZTpcblxuICAgICAgPj4+IGludC5fX3N1YmNsYXNzZXNfXygpXG4gICAgICBbPGNsYXNzIFwnYm9vbFwnPl1cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgZm91bmRcbiAgICBpbiB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKCpCYXNpYyBjdXN0b21pemF0aW9uKikuXG5cblsyXSBBcyBhIGNvbnNlcXVlbmNlLCB0aGUgbGlzdCAiWzEsIDJdIiBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgIlsxLjAsIDIuMF0iLCBhbmQgc2ltaWxhcmx5IGZvciB0dXBsZXMuXG5cblszXSBUaGV5IG11c3QgaGF2ZSBzaW5jZSB0aGUgcGFyc2VyIGNhblwndCB0ZWxsIHRoZSB0eXBlIG9mIHRoZVxuICAgIG9wZXJhbmRzLlxuXG5bNF0gQ2FzZWQgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICAgYmVpbmcgb25lIG9mICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgIkxsIiAoTGV0dGVyLCBsb3dlcmNhc2UpLFxuICAgIG9yICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuWzVdIFRvIGZvcm1hdCBvbmx5IGEgdHVwbGUgeW91IHNob3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBhXG4gICAgc2luZ2xldG9uIHR1cGxlIHdob3NlIG9ubHkgZWxlbWVudCBpcyB0aGUgdHVwbGUgdG8gYmUgZm9ybWF0dGVkLlxuJywKLSAnc3BlY2lhbG5hbWVzJzogdSdcblNwZWNpYWwgbWV0aG9kIG5hbWVzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGNhbiBpbXBsZW1lbnQgY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgYXJlIGludm9rZWQgYnkgc3BlY2lhbFxuc3ludGF4IChzdWNoIGFzIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvciBzdWJzY3JpcHRpbmcgYW5kIHNsaWNpbmcpIGJ5XG5kZWZpbmluZyBtZXRob2RzIHdpdGggc3BlY2lhbCBuYW1lcy4gVGhpcyBpcyBQeXRob25cJ3MgYXBwcm9hY2ggdG9cbipvcGVyYXRvciBvdmVybG9hZGluZyosIGFsbG93aW5nIGNsYXNzZXMgdG8gZGVmaW5lIHRoZWlyIG93biBiZWhhdmlvclxud2l0aCByZXNwZWN0IHRvIGxhbmd1YWdlIG9wZXJhdG9ycy4gIEZvciBpbnN0YW5jZSwgaWYgYSBjbGFzcyBkZWZpbmVzXG5hIG1ldGhvZCBuYW1lZCAiX19nZXRpdGVtX18oKSIsIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyxcbnRoZW4gInhbaV0iIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byAidHlwZSh4KS5fX2dldGl0ZW1fXyh4LCBpKSIuXG5FeGNlcHQgd2hlcmUgbWVudGlvbmVkLCBhdHRlbXB0cyB0byBleGVjdXRlIGFuIG9wZXJhdGlvbiByYWlzZSBhblxuZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseVxuIkF0dHJpYnV0ZUVycm9yIiBvciAiVHlwZUVycm9yIikuXG5cbldoZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgaXQgaXNcbmltcG9ydGFudCB0aGF0IHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgZGVncmVlIHRoYXQgaXRcbm1ha2VzIHNlbnNlIGZvciB0aGUgb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsIHNvbWVcbnNlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsIG9mIGluZGl2aWR1YWwgZWxlbWVudHMsIGJ1dFxuZXh0cmFjdGluZyBhIHNsaWNlIG1heSBub3QgbWFrZSBzZW5zZS4gIChPbmUgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZVxuIk5vZGVMaXN0IiBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuXG5cbkJhc2ljIGN1c3RvbWl6YXRpb25cbj09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICJfX25ld19fKCkiIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAodXN1YWxseSBhblxuICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuXG4gICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGJ5XG4gICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbiAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICJfX25ld19fKCkiLlxuXG4gICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBpbW11dGFibGVcbiAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlIGNyZWF0aW9uLiAgSXRcbiAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gb3JkZXIgdG9cbiAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cblxub2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuXG4gICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICJfX25ld19fKCkiKSwgYnV0XG4gICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlIHRob3NlXG4gICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgY2xhc3MgaGFzIGFuXG4gICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgbWV0aG9kLCBpZlxuICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIHRoZVxuICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuXG4gICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiBjb25zdHJ1Y3RpbmdcbiAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byBjdXN0b21pc2VcbiAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgIl9faW5pdF9fKCkiOyBkb2luZyBzb1xuICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiIG1ldGhvZCwgdGhlXG4gICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdFxuICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZS5cbiAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciB0aGVcbiAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgYnlcbiAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCBhIGxhdGVyXG4gICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0XG4gICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSB0aGUgZm9ybWVyXG4gICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXIgaXNcbiAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWUgY29tbW9uXG4gICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuIG9iamVjdCBmcm9tXG4gICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuIG9iamVjdHMgKGUuZy4sXG4gICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoIHBhcmVudCBhbmRcbiAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSBvZlxuICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhIHJlZmVyZW5jZVxuICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiB1bmhhbmRsZWRcbiAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlIHRvIHRoZVxuICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSB0aGlyZCBjYW5cbiAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gInN5cy5sYXN0X3RyYWNlYmFjayIuIENpcmN1bGFyXG4gICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkIHVwIHdoZW4gdGhlXG4gICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdFwncyBvbiBieSBkZWZhdWx0KS4gUmVmZXJcbiAgICAgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiZ2MiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgICBhYm91dCB0aGlzIHRvcGljLlxuXG4gICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaFxuICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nXG4gICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvXG4gICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzIGludm9rZWQgaW5cbiAgICAgcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmcgZGVsZXRlZCAoZS5nLiwgd2hlbiBleGVjdXRpb24gb2YgdGhlXG4gICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgIl9fZGVsX18oKSJcbiAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nXG4gICAgIHRvcm4gZG93biAoZS5nLiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzXG4gICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkXG4gICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LFxuICAgICBQeXRob24gZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuXG5vYmplY3QuX19yZXByX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSAicmVwcigpIiBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAib2ZmaWNpYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLCB0aGlzXG4gICBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkIHRvXG4gICByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyAiX19yZXByX18oKSIgYnV0XG4gICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICJpbmZvcm1hbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpcyByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgInN0cihvYmplY3QpIiBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZm9ybWF0KCkiIGFuZFxuICAgInByaW50KCkiIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5IHByaW50YWJsZSBzdHJpbmdcbiAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhICpzdHJpbmcqXG4gICBvYmplY3QuXG5cbiAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgdGhlcmUgaXMgbm9cbiAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGFcbiAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuXG4gICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICJvYmplY3QiXG4gICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBvZiBjbGFzcyAic3RyIikgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyBhXG4gICBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0b1xuICAgdGhlIHR5cGUgaW1wbGVtZW50aW5nICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgY2xhc3NlcyB3aWxsXG4gICBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvciB1c2UgYVxuICAgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG5cbiAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlXG4gICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cblxuICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICJvYmplY3QiIGl0c2VsZlxuICAgcmFpc2VzIGEgIlR5cGVFcnJvciIgaWYgcGFzc2VkIGFueSBub24tZW1wdHkgc3RyaW5nLlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAieC5fX2xlX18oeSkiLFxuICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBjYWxscyAieC5fX25lX18oeSkiLCAieD55IiBjYWxsc1xuICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uICJOb3RJbXBsZW1lbnRlZCJcbiAgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhIGdpdmVuIHBhaXIgb2ZcbiAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSByZXR1cm5lZCBmb3IgYVxuICAgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhbiByZXR1cm4gYW55IHZhbHVlLFxuICAgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhIEJvb2xlYW4gY29udGV4dCAoZS5nLixcbiAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICJib29sKCkiXG4gICBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHQgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgQnkgZGVmYXVsdCwgIl9fbmVfXygpIiBkZWxlZ2F0ZXMgdG8gIl9fZXFfXygpIiBhbmQgaW52ZXJ0cyB0aGVcbiAgIHJlc3VsdCB1bmxlc3MgaXQgaXMgIk5vdEltcGxlbWVudGVkIi4gIFRoZXJlIGFyZSBubyBvdGhlciBpbXBsaWVkXG4gICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yIGV4YW1wbGUsIHRoZVxuICAgdHJ1dGggb2YgIih4PHkgb3IgeD09eSkiIGRvZXMgbm90IGltcGx5ICJ4PD15Ii4gVG8gYXV0b21hdGljYWxseVxuICAgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3Qgb3BlcmF0aW9uLCBzZWVcbiAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG5cbiAgIFNlZSB0aGUgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyByZWZsZWN0aW9uLFxuICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiBJZiB0aGVcbiAgIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGFuZCByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYVxuICAgZGlyZWN0IG9yIGluZGlyZWN0IHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmRcJ3MgdHlwZSwgdGhlXG4gICByZWZsZWN0ZWQgbWV0aG9kIG9mIHRoZSByaWdodCBvcGVyYW5kIGhhcyBwcmlvcml0eSwgb3RoZXJ3aXNlIHRoZVxuICAgbGVmdCBvcGVyYW5kXCdzIG1ldGhvZCBoYXMgcHJpb3JpdHkuICBWaXJ0dWFsIHN1YmNsYXNzaW5nIGlzIG5vdFxuICAgY29uc2lkZXJlZC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgb24gbWVtYmVyc1xuICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAiZGljdCIuXG4gICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHlcbiAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZTsgaXQgaXNcbiAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaFxuICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgcGFydCBpblxuICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gb2JqZWN0XCdzXG4gICAgIGN1c3RvbSAiX19oYXNoX18oKSIgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgIlB5X3NzaXplX3QiLiAgVGhpc1xuICAgICBpcyB0eXBpY2FsbHkgOCBieXRlcyBvbiA2NC1iaXQgYnVpbGRzIGFuZCA0IGJ5dGVzIG9uIDMyLWJpdFxuICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0IGludGVyb3BlcmF0ZSBvbiBidWlsZHNcbiAgICAgb2YgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggb24gYWxsXG4gICAgIHN1cHBvcnRlZCBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggInB5dGhvbiAtY1xuICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIi5cblxuICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gIl9fZXFfXygpIiBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXMgIl9fZXFfXygpIlxuICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlIGFzIGl0ZW1zIGluXG4gICBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lcyBtdXRhYmxlIG9iamVjdHMgYW5kXG4gICBpbXBsZW1lbnRzIGFuICJfX2VxX18oKSIgbWV0aG9kLCBpdCBzaG91bGQgbm90IGltcGxlbWVudFxuICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgY29sbGVjdGlvbnNcbiAgIHJlcXVpcmVzIHRoYXQgYSBrZXlcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZSBvYmplY3RcJ3MgaGFzaFxuICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuXG4gICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiBtZXRob2RzIGJ5XG4gICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHN1Y2hcbiAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09IGhhc2goeSkiLlxuXG4gICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAiX19oYXNoX18oKSJcbiAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gIFdoZW4gdGhlXG4gICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzXG4gICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtIGF0dGVtcHRzIHRvXG4gICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSBpbnRlcnByZXRlclxuICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvIHN1cHByZXNzXG4gICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSBjbGFzc1xuICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiIHRoYXRcbiAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiIGNhbGwuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kXG4gICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdFxuICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlIG9iamVjdCBpc1xuICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyBhcmVcbiAgIGNvbnNpZGVyZWQgdHJ1ZS5cblxuXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbi0tLS0tLS0tLVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgInR5cGUoKSIuIFRoZSBjbGFzcyBib2R5IGlzXG5leGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlXG5yZXN1bHQgb2YgInR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkiLlxuXG5UaGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBjYW4gYmUgY3VzdG9taXNlZCBieSBwYXNzaW5nIHRoZVxuIm1ldGFjbGFzcyIga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieVxuaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW5cbnRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCAiTXlDbGFzcyIgYW5kICJNeVN1YmNsYXNzIiBhcmUgaW5zdGFuY2VzXG5vZiAiTWV0YSI6XG5cbiAgIGNsYXNzIE1ldGEodHlwZSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4gICAgICAgcGFzc1xuXG5Bbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uXG5hcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy5cblxuV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgb2NjdXI6XG5cbiogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG5cbiogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuXG4qIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG5cbiogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG5cblxuRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgZGV0ZXJtaW5lZCBhc1xuZm9sbG93czpcblxuKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiAidHlwZSgpIiBpc1xuICB1c2VkXG5cbiogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiBpbnN0YW5jZSBvZlxuICAidHlwZSgpIiwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3NcblxuKiBpZiBhbiBpbnN0YW5jZSBvZiAidHlwZSgpIiBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgbWV0YWNsYXNzLCBvclxuICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyB1c2VkXG5cblRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkXG5tZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiAidHlwZShjbHMpIikgb2YgYWxsXG5zcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgd2hpY2ggaXMgYVxuc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgdGhlXG5jYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbndpbGwgZmFpbCB3aXRoICJUeXBlRXJyb3IiLlxuXG5cblByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSxcbml0IGlzIGNhbGxlZCBhcyAibmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLFxuKiprd2RzKSIgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbVxudGhlIGNsYXNzIGRlZmluaXRpb24pLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBubyAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSAiZGljdCgpIiBpbnN0YW5jZS5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG5cbiAgICAgSW50cm9kdWNlZCB0aGUgIl9fcHJlcGFyZV9fIiBuYW1lc3BhY2UgaG9va1xuXG5cbkV4ZWN1dGluZyB0aGUgY2xhc3MgYm9keVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcyAiZXhlYyhib2R5LCBnbG9iYWxzKCksXG5uYW1lc3BhY2UpIi4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwgY2FsbCB0byAiZXhlYygpIiBpcyB0aGF0XG5sZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55IG1ldGhvZHMpIHRvXG5yZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlIGNsYXNzXG5kZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cblxuSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLFxubWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZVxuY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0XG5wYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGxcbmZyb20gc3RhdGljIG1ldGhvZHMuXG5cblxuQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3NcbmJvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nICJtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG5uYW1lc3BhY2UsICoqa3dkcykiICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcyBwYXNzZWQgaGVyZSBhcmUgdGhlIHNhbWVcbmFzIHRob3NlIHBhc3NlZCB0byAiX19wcmVwYXJlX18iKS5cblxuVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgemVyby1cbmFyZ3VtZW50IGZvcm0gb2YgInN1cGVyKCkiLiAiX19jbGFzc19fIiBpcyBhbiBpbXBsaWNpdCBjbG9zdXJlXG5yZWZlcmVuY2UgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSBjbGFzcyBib2R5IHJlZmVyXG50byBlaXRoZXIgIl9fY2xhc3NfXyIgb3IgInN1cGVyIi4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnQgZm9ybVxub2YgInN1cGVyKCkiIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBiYXNlZCBvblxubGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCB0byBtYWtlIHRoZVxuY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGVcbm1ldGhvZC5cblxuQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIGNsYXNzXG5kZWNvcmF0b3JzIGluY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy5cblxuV2hlbiBhIG5ldyBjbGFzcyBpcyBjcmVhdGVkIGJ5ICJ0eXBlLl9fbmV3X18iLCB0aGUgb2JqZWN0IHByb3ZpZGVkIGFzXG50aGUgbmFtZXNwYWNlIHBhcmFtZXRlciBpcyBjb3BpZWQgdG8gYSBzdGFuZGFyZCBQeXRob24gZGljdGlvbmFyeSBhbmRcbnRoZSBvcmlnaW5hbCBvYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgYmVjb21lcyB0aGUgIl9fZGljdF9fIlxuYXR0cmlidXRlIG9mIHRoZSBjbGFzcyBvYmplY3QuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcblxuICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0ICJfX2NsYXNzX18iIGNsb3N1cmUgcmVmZXJlbmNlXG5cblxuTWV0YWNsYXNzIGV4YW1wbGVcbi0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpY1xuZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCBmcmFtZXdvcmtzLCBhbmRcbmF1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cblxuSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyB2YXJpYWJsZXNcbmFyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICBAY2xhc3NtZXRob2RcbiAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6XG4gICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpXG5cbiAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSBtZXRob2RzIGFuZFxuYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzXG5zdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCBkaWN0aW9uYXJ5XG5pcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kcyBpblxub3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuXG4gICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAiaXNpbnN0YW5jZSgpIiBhbmRcbiAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgYW5kXG4gICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgaW5cbiAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAiYWJjIlxuICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbiAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIixcbiAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgY2FsbGVkLlxuICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmdcbiAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG9cbiAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHRcbiAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluXG4gICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpXG4gICBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzXG4gICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggLVxuICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICJfX3JzdWJfXygpIlxuICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgIl9fcnBvd19fKCkiICh0aGVcbiAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kXG4gICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXNcbiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAiJT0iLCAiKio9IixcbiAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCBhdHRlbXB0IHRvXG4gICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhIHNwZWNpZmljXG4gICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZVxuICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzXG4gICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gInggPVxuICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAieS5fX3JhZGRfXyh4KSIgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluIGNlcnRhaW5cbiAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBlcnJvcnNcbiAgIChzZWUgKldoeSBkb2VzIGFfdHVwbGVbaV0gKz0gW1wnaXRlbVwnXSByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGVcbiAgIGFkZGl0aW9uIHdvcmtzPyopLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgdGhlIGRhdGFcbiAgIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0IG1hbmFnZXJcbmhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lIGNvbnRleHRcbmZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbmludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uICpUaGUgd2l0aFxuc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyIG1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICJ3aXRoIlxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlICJOb25lIi5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cblxuXG5TcGVjaWFsIG1ldGhvZCBsb29rdXBcbj09PT09PT09PT09PT09PT09PT09PVxuXG5Gb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyBhcmUgb25seVxuZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdFwncyB0eXBlLCBub3QgaW5cbnRoZSBvYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSByZWFzb24gd2h5XG50aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18gPSBsYW1iZGE6IDVcbiAgID4+PiBsZW4oYylcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5cGUgXCdDXCcgaGFzIG5vIGxlbigpXG5cblRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgYmVoYXZpb3VyIGxpZXMgd2l0aCBhIG51bWJlciBvZiBzcGVjaWFsXG5tZXRob2RzIHN1Y2ggYXMgIl9faGFzaF9fKCkiIGFuZCAiX19yZXByX18oKSIgdGhhdCBhcmUgaW1wbGVtZW50ZWQgYnlcbmFsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwIG9mIHRoZXNlXG5tZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCBmYWlsIHdoZW5cbmludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcblxuICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yIFwnX19oYXNoX19cJyBvZiBcJ2ludFwnIG9iamVjdCBuZWVkcyBhbiBhcmd1bWVudFxuXG5JbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhIGNsYXNzIGluIHRoaXNcbndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgXCdtZXRhY2xhc3MgY29uZnVzaW9uXCcsIGFuZCBpcyBhdm9pZGVkXG5ieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG5cbiAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbiAgIFRydWVcblxuSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSBpbnRlcmVzdCBvZlxuY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyBieXBhc3Nlc1xudGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBldmVuIG9mIHRoZSBvYmplY3RcJ3MgbWV0YWNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgTWV0YSh0eXBlKTpcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIk1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgICByZXR1cm4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gY2xhc3MgQyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKTpcbiAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gMTBcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIGluc3RhbmNlXG4gICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIHR5cGVcbiAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbiAgIDEwXG5cbkJ5cGFzc2luZyB0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWFjaGluZXJ5IGluIHRoaXMgZmFzaGlvbiBwcm92aWRlc1xuc2lnbmlmaWNhbnQgc2NvcGUgZm9yIHNwZWVkIG9wdGltaXNhdGlvbnMgd2l0aGluIHRoZSBpbnRlcnByZXRlciwgYXRcbnRoZSBjb3N0IG9mIHNvbWUgZmxleGliaWxpdHkgaW4gdGhlIGhhbmRsaW5nIG9mIHNwZWNpYWwgbWV0aG9kcyAodGhlXG5zcGVjaWFsIG1ldGhvZCAqbXVzdCogYmUgc2V0IG9uIHRoZSBjbGFzcyBvYmplY3QgaXRzZWxmIGluIG9yZGVyIHRvIGJlXG5jb25zaXN0ZW50bHkgaW52b2tlZCBieSB0aGUgaW50ZXJwcmV0ZXIpLlxuJywKLSAnc3RyaW5nLW1ldGhvZHMnOiB1J1xuU3RyaW5nIE1ldGhvZHNcbioqKioqKioqKioqKioqXG5cblN0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucywgYWxvbmcgd2l0aFxudGhlIGFkZGl0aW9uYWwgbWV0aG9kcyBkZXNjcmliZWQgYmVsb3cuXG5cblN0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSBwcm92aWRpbmcgYVxubGFyZ2UgZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgInN0ci5mb3JtYXQoKSIsXG4qRm9ybWF0IFN0cmluZyBTeW50YXgqIGFuZCAqQ3VzdG9tIFN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlclxuYmFzZWQgb24gQyAicHJpbnRmIiBzdHlsZSBmb3JtYXR0aW5nIHRoYXQgaGFuZGxlcyBhIG5hcnJvd2VyIHJhbmdlIG9mXG50eXBlcyBhbmQgaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiBmYXN0ZXIgZm9yXG50aGUgY2FzZXMgaXQgY2FuIGhhbmRsZSAoKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyopLlxuXG5UaGUgKlRleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcyogc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnNcbmEgbnVtYmVyIG9mIG90aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllc1xuKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiBtb2R1bGUpLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2FzZWZvbGQoKVxuXG4gICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZVxuICAgdXNlZCBmb3IgY2FzZWxlc3MgbWF0Y2hpbmcuXG5cbiAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgYWdncmVzc2l2ZSBiZWNhdXNlXG4gICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgc3RyaW5nLiBGb3JcbiAgIGV4YW1wbGUsIHRoZSBHZXJtYW4gbG93ZXJjYXNlIGxldHRlciAiXCdceGRmXCciIGlzIGVxdWl2YWxlbnQgdG8gIiJzcyIiLlxuICAgU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsICJsb3dlcigpIiB3b3VsZCBkbyBub3RoaW5nIHRvICJcJ1x4ZGZcJyI7XG4gICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgc3BhY2UpLiBUaGVcbiAgIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0b1xuICAgImxlbihzKSIuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgIlwnc3RyaWN0XCciLFxuICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhICJVbmljb2RlRXJyb3IiLiBPdGhlciBwb3NzaWJsZVxuICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICJcJ3htbGNoYXJyZWZyZXBsYWNlXCciLFxuICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB2aWFcbiAgICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKSIsIHNlZSBzZWN0aW9uICpFcnJvciBIYW5kbGVycyouIEZvciBhIGxpc3RcbiAgIG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiAiRmFsc2UiLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBzdWZmaXhlc1xuICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnModGFic2l6ZT04KVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGFiIHBvc2l0aW9ucyBvY2N1ciBldmVyeSAqdGFic2l6ZSogY2hhcmFjdGVyc1xuICAgKGRlZmF1bHQgaXMgOCwgZ2l2aW5nIHRhYiBwb3NpdGlvbnMgYXQgY29sdW1ucyAwLCA4LCAxNiBhbmQgc28gb24pLlxuICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyBhbmQgdGhlXG4gICBzdHJpbmcgaXMgZXhhbWluZWQgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4gIElmIHRoZSBjaGFyYWN0ZXIgaXMgYVxuICAgdGFiICgiXFx0IiksIG9uZSBvciBtb3JlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGluc2VydGVkIGluIHRoZSByZXN1bHRcbiAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgcG9zaXRpb24uIChUaGVcbiAgIHRhYiBjaGFyYWN0ZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuKSAgSWYgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmVcbiAgICgiXFxuIikgb3IgcmV0dXJuICgiXFxyIiksIGl0IGlzIGNvcGllZCBhbmQgdGhlIGN1cnJlbnQgY29sdW1uIGlzXG4gICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkIGFuZCB0aGVcbiAgIGN1cnJlbnQgY29sdW1uIGlzIGluY3JlbWVudGVkIGJ5IG9uZSByZWdhcmRsZXNzIG9mIGhvdyB0aGVcbiAgIGNoYXJhY3RlciBpcyByZXByZXNlbnRlZCB3aGVuIHByaW50ZWQuXG5cbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicygpXG4gICBcJzAxICAgICAgMDEyICAgICAwMTIzICAgIDAxMjM0XCdcbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicyg0KVxuICAgXCcwMSAgMDEyIDAxMjMgICAgMDEyMzRcJ1xuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQgd2l0aGluIHRoZSBzbGljZSAic1tzdGFydDplbmRdIi4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqXG4gICBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgaWZcbiAgICpzdWIqIGlzIG5vdCBmb3VuZC5cblxuICAgTm90ZTogVGhlICJmaW5kKCkiIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3dcbiAgICAgdGhlIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LFxuICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG5cbiAgICAgICAgPj4+IFwnUHlcJyBpbiBcJ1B5dGhvblwnXG4gICAgICAgIFRydWVcblxuc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG5cbiAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uIHdoaWNoIHRoaXNcbiAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yIHJlcGxhY2VtZW50IGZpZWxkc1xuICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCBjb250YWlucyBlaXRoZXJcbiAgIHRoZSBudW1lcmljIGluZGV4IG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgb3IgdGhlIG5hbWUgb2YgYVxuICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgZWFjaFxuICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZVxuICAgY29ycmVzcG9uZGluZyBhcmd1bWVudC5cblxuICAgPj4+ICJUaGUgc3VtIG9mIDEgKyAyIGlzIHswfSIuZm9ybWF0KDErMilcbiAgIFwnVGhlIHN1bSBvZiAxICsgMiBpcyAzXCdcblxuICAgU2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlvdXNcbiAgIGZvcm1hdHRpbmcgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaW4gZm9ybWF0IHN0cmluZ3MuXG5cbnN0ci5mb3JtYXRfbWFwKG1hcHBpbmcpXG5cbiAgIFNpbWlsYXIgdG8gInN0ci5mb3JtYXQoKiptYXBwaW5nKSIsIGV4Y2VwdCB0aGF0ICJtYXBwaW5nIiBpcyB1c2VkXG4gICBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhICJkaWN0Ii4gIFRoaXMgaXMgdXNlZnVsIGlmIGZvciBleGFtcGxlXG4gICAibWFwcGluZyIgaXMgYSBkaWN0IHN1YmNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbiAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4gICAuLi5cbiAgID4+PiBcJ3tuYW1lfSB3YXMgYm9ybiBpbiB7Y291bnRyeX1cJy5mb3JtYXRfbWFwKERlZmF1bHQobmFtZT1cJ0d1aWRvXCcpKVxuICAgXCdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5XCdcblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5zdHIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSAiZmluZCgpIiwgYnV0IHJhaXNlICJWYWx1ZUVycm9yIiB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90XG4gICBmb3VuZC5cblxuc3RyLmlzYWxudW0oKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYW51bWVyaWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBIGNoYXJhY3RlciAiYyJcbiAgIGlzIGFscGhhbnVtZXJpYyBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyByZXR1cm5zICJUcnVlIjpcbiAgICJjLmlzYWxwaGEoKSIsICJjLmlzZGVjaW1hbCgpIiwgImMuaXNkaWdpdCgpIiwgb3IgImMuaXNudW1lcmljKCkiLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG4gICBVc2UgImtleXdvcmQuaXNrZXl3b3JkKCkiIHRvIHRlc3QgZm9yIHJlc2VydmVkIGlkZW50aWZpZXJzIHN1Y2ggYXNcbiAgICJkZWYiIGFuZCAiY2xhc3MiLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiAicmVwcigpIiBpc1xuICAgaW52b2tlZCBvbiBhIHN0cmluZy4gIEl0IGhhcyBubyBiZWFyaW5nIG9uIHRoZSBoYW5kbGluZyBvZiBzdHJpbmdzXG4gICB3cml0dGVuIHRvICJzeXMuc3Rkb3V0IiBvciAic3lzLnN0ZGVyciIuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBICJUeXBlRXJyb3IiIHdpbGwgYmUgcmFpc2VkIGlmIHRoZXJlIGFyZVxuICAgYW55IG5vbi1zdHJpbmcgdmFsdWVzIGluICppdGVyYWJsZSosIGluY2x1ZGluZyAiYnl0ZXMiIG9iamVjdHMuXG4gICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgdGhpcyBtZXRob2QuXG5cbnN0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFuIEFTQ0lJXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvICJsZW4ocykiLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG4gICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci5sc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgICAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcubHN0cmlwKClcbiAgICAgIFwnc3BhY2lvdXMgICBcJ1xuICAgICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcubHN0cmlwKFwnY21vd3ouXCcpXG4gICAgICBcJ2V4YW1wbGUuY29tXCdcblxuc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgInN0ci50cmFuc2xhdGUoKSIuXG5cbiAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nXG4gICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiBsZW5ndGggMSkgdG9cbiAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciBOb25lLlxuICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cblxuICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCxcbiAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggd2lsbCBiZSBtYXBwZWRcbiAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlIGlzIGEgdGhpcmRcbiAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvXG4gICBOb25lIGluIHRoZSByZXN1bHQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbnN0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpvbGQqXG4gICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzIGdpdmVuLCBvbmx5XG4gICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG5cbnN0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiAic1tzdGFydDplbmRdIi5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgb24gZmFpbHVyZS5cblxuc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlICJyZmluZCgpIiBidXQgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuIHRoZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIG5vdCBmb3VuZC5cblxuc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFuIEFTQ0lJXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvICJsZW4ocykiLlxuXG5zdHIucnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgZm9sbG93ZWQgYnlcbiAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuXG5zdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzXG4gICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yXG4gICAiTm9uZSIsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3Igc3BsaXR0aW5nXG4gICBmcm9tIHRoZSByaWdodCwgInJzcGxpdCgpIiBiZWhhdmVzIGxpa2UgInNwbGl0KCkiIHdoaWNoIGlzXG4gICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuXG5zdHIucnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgICAgXCcgICBzcGFjaW91c1wnXG4gICAgICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0ICJtYXhzcGxpdCsxIlxuICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkIG9yICItMSIsIHRoZW4gdGhlcmUgaXNcbiAgIG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzIGFyZSBtYWRlKS5cblxuICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCBncm91cGVkIHRvZ2V0aGVyXG4gICBhbmQgYXJlIGRlZW1lZCB0byBkZWxpbWl0IGVtcHR5IHN0cmluZ3MgKGZvciBleGFtcGxlLFxuICAgIlwnMSwsMlwnLnNwbGl0KFwnLFwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJ1wnLCBcJzJcJ10iKS4gIFRoZSAqc2VwKiBhcmd1bWVudFxuICAgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4gICAiXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJzJcJywgXCczXCddIikuIFNwbGl0dGluZyBhblxuICAgZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgIltcJ1wnXSIuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCcxLDIsM1wnLnNwbGl0KFwnLFwnKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCczXCddXG4gICAgICA+Pj4gXCcxLDIsM1wnLnNwbGl0KFwnLFwnLCBtYXhzcGxpdD0xKVxuICAgICAgW1wnMVwnLCBcJzIsM1wnXVxuICAgICAgPj4+IFwnMSwyLCwzLFwnLnNwbGl0KFwnLFwnKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCdcJywgXCczXCcsIFwnXCddXG5cbiAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgIk5vbmUiLCBhIGRpZmZlcmVudCBzcGxpdHRpbmdcbiAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgYXJlIHJlZ2FyZGVkXG4gICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyBlbXB0eSBzdHJpbmdzXG4gICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgdHJhaWxpbmdcbiAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmdcbiAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSAiTm9uZSIgc2VwYXJhdG9yIHJldHVybnMgIltdIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJzEgMiAzXCcuc3BsaXQoKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCczXCddXG4gICAgICA+Pj4gXCcxIDIgM1wnLnNwbGl0KG1heHNwbGl0PTEpXG4gICAgICBbXCcxXCcsIFwnMiAzXCddXG4gICAgICA+Pj4gXCcgICAxICAgMiAgIDMgICBcJy5zcGxpdCgpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuICAgVGhpcyBtZXRob2Qgc3BsaXRzIG9uIHRoZSBmb2xsb3dpbmcgbGluZSBib3VuZGFyaWVzLiAgSW5cbiAgIHBhcnRpY3VsYXIsIHRoZSBib3VuZGFyaWVzIGFyZSBhIHN1cGVyc2V0IG9mICp1bml2ZXJzYWwgbmV3bGluZXMqLlxuXG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBSZXByZXNlbnRhdGlvbiAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcXG4iICAgICAgICAgICAgICAgICAgICB8IExpbmUgRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHIiICAgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHJcXG4iICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lIEZlZWQgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx2IiBvciAiXFx4MGIiICAgICAgICAgIHwgTGluZSBUYWJ1bGF0aW9uICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcZiIgb3IgIlxceDBjIiAgICAgICAgICB8IEZvcm0gRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxYyIgICAgICAgICAgICAgICAgICB8IEZpbGUgU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxZCIgICAgICAgICAgICAgICAgICB8IEdyb3VwIFNlcGFyYXRvciAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxZSIgICAgICAgICAgICAgICAgICB8IFJlY29yZCBTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHg4NSIgICAgICAgICAgICAgICAgICB8IE5leHQgTGluZSAoQzEgQ29udHJvbCBDb2RlKSAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHUyMDI4IiAgICAgICAgICAgICAgICB8IExpbmUgU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHUyMDI5IiAgICAgICAgICAgICAgICB8IFBhcmFncmFwaCBTZXBhcmF0b3IgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6ICJcXHYiIGFuZCAiXFxmIiBhZGRlZCB0byBsaXN0IG9mIGxpbmVcbiAgIGJvdW5kYXJpZXMuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoKVxuICAgICAgW1wnYWIgY1wnLCBcJ1wnLCBcJ2RlIGZnXCcsIFwna2xcJ11cbiAgICAgID4+PiBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKVxuICAgICAgW1wnYWIgY1xcblwnLCBcJ1xcblwnLCBcJ2RlIGZnXFxyXCcsIFwna2xcXHJcXG5cJ11cblxuICAgVW5saWtlICJzcGxpdCgpIiB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgdGhpc1xuICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kIGEgdGVybWluYWxcbiAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmU6XG5cbiAgICAgID4+PiAiIi5zcGxpdGxpbmVzKClcbiAgICAgIFtdXG4gICAgICA+Pj4gIk9uZSBsaW5lXFxuIi5zcGxpdGxpbmVzKClcbiAgICAgIFtcJ09uZSBsaW5lXCddXG5cbiAgIEZvciBjb21wYXJpc29uLCAic3BsaXQoXCdcXG5cJykiIGdpdmVzOlxuXG4gICAgICA+Pj4gXCdcJy5zcGxpdChcJ1xcblwnKVxuICAgICAgW1wnXCddXG4gICAgICA+Pj4gXCdUd28gbGluZXNcXG5cJy5zcGxpdChcJ1xcblwnKVxuICAgICAgW1wnVHdvIGxpbmVzXCcsIFwnXCddXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlIHJldHVyblxuICAgIkZhbHNlIi4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rIGZvci5cbiAgIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG4gICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpc1xuICAgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICAgICBcJ3NwYWNpb3VzXCdcbiAgICAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICAgICBcJ2V4YW1wbGVcJ1xuXG4gICBUaGUgb3V0ZXJtb3N0IGxlYWRpbmcgYW5kIHRyYWlsaW5nICpjaGFycyogYXJndW1lbnQgdmFsdWVzIGFyZVxuICAgc3RyaXBwZWQgZnJvbSB0aGUgc3RyaW5nLiBDaGFyYWN0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIGxlYWRpbmdcbiAgIGVuZCB1bnRpbCByZWFjaGluZyBhIHN0cmluZyBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgaW4gKmNoYXJzKi4gQSBzaW1pbGFyIGFjdGlvbiB0YWtlcyBwbGFjZSBvbiB0aGVcbiAgIHRyYWlsaW5nIGVuZC4gRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBjb21tZW50X3N0cmluZyA9IFwnIy4uLi4uLi4gU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzIgLi4uLi4uLlwnXG4gICAgICA+Pj4gY29tbWVudF9zdHJpbmcuc3RyaXAoXCcuIyEgXCcpXG4gICAgICBcJ1NlY3Rpb24gMy4yLjEgSXNzdWUgIzMyXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0XG4gICAicy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gcyIuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnSGVsbG8gd29ybGRcJy50aXRsZSgpXG4gICAgICBcJ0hlbGxvIFdvcmxkXCdcblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAuLi4gICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgLi4uICAgICAgICAgICAgICAgICAgIHMpXG4gICAgICAuLi5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUodGFibGUpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBpbiB3aGljaCBlYWNoIGNoYXJhY3RlciBoYXMgYmVlbiBtYXBwZWRcbiAgIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiAgVGhlIHRhYmxlIG11c3QgYmUgYW4gb2JqZWN0XG4gICB0aGF0IGltcGxlbWVudHMgaW5kZXhpbmcgdmlhICJfX2dldGl0ZW1fXygpIiwgdHlwaWNhbGx5IGEgKm1hcHBpbmcqXG4gICBvciAqc2VxdWVuY2UqLiAgV2hlbiBpbmRleGVkIGJ5IGEgVW5pY29kZSBvcmRpbmFsIChhbiBpbnRlZ2VyKSwgdGhlXG4gICB0YWJsZSBvYmplY3QgY2FuIGRvIGFueSBvZiB0aGUgZm9sbG93aW5nOiByZXR1cm4gYSBVbmljb2RlIG9yZGluYWxcbiAgIG9yIGEgc3RyaW5nLCB0byBtYXAgdGhlIGNoYXJhY3RlciB0byBvbmUgb3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzO1xuICAgcmV0dXJuICJOb25lIiwgdG8gZGVsZXRlIHRoZSBjaGFyYWN0ZXIgZnJvbSB0aGUgcmV0dXJuIHN0cmluZzsgb3JcbiAgIHJhaXNlIGEgIkxvb2t1cEVycm9yIiBleGNlcHRpb24sIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIGl0c2VsZi5cblxuICAgWW91IGNhbiB1c2UgInN0ci5tYWtldHJhbnMoKSIgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIFNlZSBhbHNvIHRoZSAiY29kZWNzIiBtb2R1bGUgZm9yIGEgbW9yZSBmbGV4aWJsZSBhcHByb2FjaCB0byBjdXN0b21cbiAgIGNoYXJhY3RlciBtYXBwaW5ncy5cblxuc3RyLnVwcGVyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCAic3RyLnVwcGVyKCkuaXN1cHBlcigpIiBtaWdodCBiZVxuICAgIkZhbHNlIiBpZiAicyIgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlXG4gICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLFxuICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG4gICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggQVNDSUkgIlwnMFwnIiBkaWdpdHMgdG9cbiAgIG1ha2UgYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIEEgbGVhZGluZyBzaWduIHByZWZpeFxuICAgKCJcJytcJyIvIlwnLVwnIikgaXMgaGFuZGxlZCBieSBpbnNlcnRpbmcgdGhlIHBhZGRpbmcgKmFmdGVyKiB0aGUgc2lnblxuICAgY2hhcmFjdGVyIHJhdGhlciB0aGFuIGJlZm9yZS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZlxuICAgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gImxlbihzKSIuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gIjQyIi56ZmlsbCg1KVxuICAgICAgXCcwMDA0MlwnXG4gICAgICA+Pj4gIi00MiIuemZpbGwoNSlcbiAgICAgIFwnLTAwNDJcJ1xuJywKLSAnc3RyaW5ncyc6IHUnXG5TdHJpbmcgYW5kIEJ5dGVzIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cblN0cmluZyBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgc3RyaW5nbGl0ZXJhbCAgIDo6PSBbc3RyaW5ncHJlZml4XShzaG9ydHN0cmluZyB8IGxvbmdzdHJpbmcpXG4gICBzdHJpbmdwcmVmaXggICAgOjo9ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIlxuICAgc2hvcnRzdHJpbmcgICAgIDo6PSAiXCciIHNob3J0c3RyaW5naXRlbSogIlwnIiB8IFwnIlwnIHNob3J0c3RyaW5naXRlbSogXCciXCdcbiAgIGxvbmdzdHJpbmcgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ3N0cmluZ2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nc3RyaW5naXRlbSogXCciIiJcJ1xuICAgc2hvcnRzdHJpbmdpdGVtIDo6PSBzaG9ydHN0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbiAgIGxvbmdzdHJpbmdpdGVtICA6Oj0gbG9uZ3N0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbiAgIHNob3J0c3RyaW5nY2hhciA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ3N0cmluZ2NoYXIgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBzdHJpbmdlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBzb3VyY2UgY2hhcmFjdGVyPlxuXG4gICBieXRlc2xpdGVyYWwgICA6Oj0gYnl0ZXNwcmVmaXgoc2hvcnRieXRlcyB8IGxvbmdieXRlcylcbiAgIGJ5dGVzcHJlZml4ICAgIDo6PSAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiIHwgInJiIiB8ICJyQiIgfCAiUmIiIHwgIlJCIlxuICAgc2hvcnRieXRlcyAgICAgOjo9ICJcJyIgc2hvcnRieXRlc2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydGJ5dGVzaXRlbSogXCciXCdcbiAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ2J5dGVzaXRlbSogXCciIiJcJ1xuICAgc2hvcnRieXRlc2l0ZW0gOjo9IHNob3J0Ynl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIHNob3J0Ynl0ZXNjaGFyIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIGJ5dGVzZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgQVNDSUkgY2hhcmFjdGVyPlxuXG5PbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgdGhhdFxud2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZCBiZXR3ZWVuIHRoZSAic3RyaW5ncHJlZml4IiBvciAiYnl0ZXNwcmVmaXgiXG5hbmQgdGhlIHJlc3Qgb2YgdGhlIGxpdGVyYWwuIFRoZSBzb3VyY2UgY2hhcmFjdGVyIHNldCBpcyBkZWZpbmVkIGJ5XG50aGUgZW5jb2RpbmcgZGVjbGFyYXRpb247IGl0IGlzIFVURi04IGlmIG5vIGVuY29kaW5nIGRlY2xhcmF0aW9uIGlzXG5naXZlbiBpbiB0aGUgc291cmNlIGZpbGU7IHNlZSBzZWN0aW9uICpFbmNvZGluZyBkZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoIlwnIikgb3IgZG91YmxlIHF1b3RlcyAoIiIiKS4gIFRoZXkgY2FuIGFsc28gYmUgZW5jbG9zZWRcbmluIG1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2UgYXJlXG5nZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgKnRyaXBsZS1xdW90ZWQgc3RyaW5ncyopLiAgVGhlIGJhY2tzbGFzaFxuKCJcXCIpIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggIlwnYlwnIiBvciAiXCdCXCciOyB0aGV5IHByb2R1Y2VcbmFuIGluc3RhbmNlIG9mIHRoZSAiYnl0ZXMiIHR5cGUgaW5zdGVhZCBvZiB0aGUgInN0ciIgdHlwZS4gIFRoZXkgbWF5XG5vbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2YgMTI4IG9yXG5ncmVhdGVyIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy5cblxuQXMgb2YgUHl0aG9uIDMuMyBpdCBpcyBwb3NzaWJsZSBhZ2FpbiB0byBwcmVmaXggc3RyaW5nIGxpdGVyYWxzIHdpdGggYVxuInUiIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy5cblxuQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxubGV0dGVyICJcJ3JcJyIgb3IgIlwnUlwnIjsgc3VjaCBzdHJpbmdzIGFyZSBjYWxsZWQgKnJhdyBzdHJpbmdzKiBhbmQgdHJlYXRcbmJhY2tzbGFzaGVzIGFzIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmcgbGl0ZXJhbHMsXG4iXCdcXFVcJyIgYW5kICJcJ1xcdVwnIiBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuXG5HaXZlbiB0aGF0IFB5dGhvbiAyLnhcJ3MgcmF3IHVuaWNvZGUgbGl0ZXJhbHMgYmVoYXZlIGRpZmZlcmVudGx5IHRoYW5cblB5dGhvbiAzLnhcJ3MgdGhlICJcJ3VyXCciIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSAiXCdyYlwnIiBwcmVmaXggb2YgcmF3IGJ5dGVzIGxpdGVyYWxzIGhhcyBiZWVuXG5hZGRlZCBhcyBhIHN5bm9ueW0gb2YgIlwnYnJcJyIuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgdGhlIHVuaWNvZGUgbGVnYWN5IGxpdGVyYWxcbigidVwndmFsdWVcJyIpIHdhcyByZWludHJvZHVjZWQgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mIGR1YWxcblB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuIFNlZSAqKlBFUCA0MTQqKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuSW4gdHJpcGxlLXF1b3RlZCBsaXRlcmFscywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWRcbihhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xudGVybWluYXRlIHRoZSBsaXRlcmFsLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiB0aGVcbmxpdGVyYWwsIGkuZS4gZWl0aGVyICJcJyIgb3IgIiIiLilcblxuVW5sZXNzIGFuICJcJ3JcJyIgb3IgIlwnUlwnIiBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpbiBzdHJpbmdcbmFuZCBieXRlcyBsaXRlcmFscyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2VcbnVzZWQgYnkgU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58ICJcXG5ld2xpbmUiICAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxcXCIgICAgICAgICAgICAgIHwgQmFja3NsYXNoICgiXFwiKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxcJyIgICAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlICgiXCciKSAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFwiIiAgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKCIiIikgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcYSIgICAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGIiICAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxmIiAgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcbiIgICAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHIiICAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx0IiAgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcdiIgICAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXG9vbyIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgxLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx4aGgiICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoMiwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCAiXFxOe25hbWV9IiAgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcdXh4eHgiICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFV4eHh4eHh4eCIgICAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICg2KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cblxuMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG4zLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGVcbiAgIGJ5dGUgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXNcbiAgIGRlbm90ZSBhIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuXG40LiBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWzFdIGhhcyBiZWVuXG4gICBhZGRlZC5cblxuNS4gRXhhY3RseSBmb3VyIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG42LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXkuICBFeGFjdGx5IGVpZ2h0XG4gICBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuVW5saWtlIFN0YW5kYXJkIEMsIGFsbCB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbGVmdCBpbiB0aGVcbnN0cmluZyB1bmNoYW5nZWQsIGkuZS4sICp0aGUgYmFja3NsYXNoIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCouICAoVGhpc1xuYmVoYXZpb3IgaXMgdXNlZnVsIHdoZW4gZGVidWdnaW5nOiBpZiBhbiBlc2NhcGUgc2VxdWVuY2UgaXMgbWlzdHlwZWQsXG50aGUgcmVzdWx0aW5nIG91dHB1dCBpcyBtb3JlIGVhc2lseSByZWNvZ25pemVkIGFzIGJyb2tlbi4pICBJdCBpcyBhbHNvXG5pbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmdcbmxpdGVyYWxzIGZhbGwgaW50byB0aGUgY2F0ZWdvcnkgb2YgdW5yZWNvZ25pemVkIGVzY2FwZXMgZm9yIGJ5dGVzXG5saXRlcmFscy5cblxuRXZlbiBpbiBhIHJhdyBsaXRlcmFsLCBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCwgYnV0IHRoZVxuYmFja3NsYXNoIHJlbWFpbnMgaW4gdGhlIHJlc3VsdDsgZm9yIGV4YW1wbGUsICJyIlxcIiIiIGlzIGEgdmFsaWRcbnN0cmluZyBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhIGRvdWJsZVxucXVvdGU7ICJyIlxcIiIgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXcgc3RyaW5nIGNhbm5vdFxuZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYSByYXcgbGl0ZXJhbFxuY2Fubm90IGVuZCBpbiBhIHNpbmdsZSBiYWNrc2xhc2gqIChzaW5jZSB0aGUgYmFja3NsYXNoIHdvdWxkIGVzY2FwZVxudGhlIGZvbGxvd2luZyBxdW90ZSBjaGFyYWN0ZXIpLiAgTm90ZSBhbHNvIHRoYXQgYSBzaW5nbGUgYmFja3NsYXNoXG5mb2xsb3dlZCBieSBhIG5ld2xpbmUgaXMgaW50ZXJwcmV0ZWQgYXMgdGhvc2UgdHdvIGNoYXJhY3RlcnMgYXMgcGFydFxub2YgdGhlIGxpdGVyYWwsICpub3QqIGFzIGEgbGluZSBjb250aW51YXRpb24uXG4nLAotICdzdWJzY3JpcHRpb25zJzogdSdcblN1YnNjcmlwdGlvbnNcbioqKioqKioqKioqKipcblxuQSBzdWJzY3JpcHRpb24gc2VsZWN0cyBhbiBpdGVtIG9mIGEgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgb3IgbGlzdClcbm9yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcblxuICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgc3Vic2NyaXB0aW9uXG4obGlzdHMgb3IgZGljdGlvbmFyaWVzIGZvciBleGFtcGxlKS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBzdXBwb3J0XG5zdWJzY3JpcHRpb24gYnkgZGVmaW5pbmcgYSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5Gb3IgYnVpbHQtaW4gb2JqZWN0cywgdGhlcmUgYXJlIHR3byB0eXBlcyBvZiBvYmplY3RzIHRoYXQgc3VwcG9ydFxuc3Vic2NyaXB0aW9uOlxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcsIHRoZSBleHByZXNzaW9uIGxpc3QgbXVzdCBldmFsdWF0ZSB0byBhblxub2JqZWN0IHdob3NlIHZhbHVlIGlzIG9uZSBvZiB0aGUga2V5cyBvZiB0aGUgbWFwcGluZywgYW5kIHRoZVxuc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIHZhbHVlIGluIHRoZSBtYXBwaW5nIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhhdFxua2V5LiAgKFRoZSBleHByZXNzaW9uIGxpc3QgaXMgYSB0dXBsZSBleGNlcHQgaWYgaXQgaGFzIGV4YWN0bHkgb25lXG5pdGVtLilcblxuSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gKGxpc3QpIG11c3QgZXZhbHVhdGUgdG9cbmFuIGludGVnZXIgb3IgYSBzbGljZSAoYXMgZGlzY3Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbikuXG5cblRoZSBmb3JtYWwgc3ludGF4IG1ha2VzIG5vIHNwZWNpYWwgcHJvdmlzaW9uIGZvciBuZWdhdGl2ZSBpbmRpY2VzIGluXG5zZXF1ZW5jZXM7IGhvd2V2ZXIsIGJ1aWx0LWluIHNlcXVlbmNlcyBhbGwgcHJvdmlkZSBhICJfX2dldGl0ZW1fXygpIlxubWV0aG9kIHRoYXQgaW50ZXJwcmV0cyBuZWdhdGl2ZSBpbmRpY2VzIGJ5IGFkZGluZyB0aGUgbGVuZ3RoIG9mIHRoZVxuc2VxdWVuY2UgdG8gdGhlIGluZGV4IChzbyB0aGF0ICJ4Wy0xXSIgc2VsZWN0cyB0aGUgbGFzdCBpdGVtIG9mICJ4IikuXG5UaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbnVtYmVyXG5vZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIGl0ZW0gd2hvc2VcbmluZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuIFNpbmNlIHRoZSBzdXBwb3J0IGZvclxubmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZyBvY2N1cnMgaW4gdGhlIG9iamVjdFwncyAiX19nZXRpdGVtX18oKSJcbm1ldGhvZCwgc3ViY2xhc3NlcyBvdmVycmlkaW5nIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCB0byBleHBsaWNpdGx5IGFkZFxudGhhdCBzdXBwb3J0LlxuXG5BIHN0cmluZ1wncyBpdGVtcyBhcmUgY2hhcmFjdGVycy4gIEEgY2hhcmFjdGVyIGlzIG5vdCBhIHNlcGFyYXRlIGRhdGFcbnR5cGUgYnV0IGEgc3RyaW5nIG9mIGV4YWN0bHkgb25lIGNoYXJhY3Rlci5cbicsCi0gJ3RydXRoJzogdSdcblRydXRoIFZhbHVlIFRlc3RpbmdcbioqKioqKioqKioqKioqKioqKipcblxuQW55IG9iamVjdCBjYW4gYmUgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgZm9yIHVzZSBpbiBhbiAiaWYiIG9yXG4id2hpbGUiIGNvbmRpdGlvbiBvciBhcyBvcGVyYW5kIG9mIHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgYmVsb3cuIFRoZVxuZm9sbG93aW5nIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBmYWxzZTpcblxuKiAiTm9uZSJcblxuKiAiRmFsc2UiXG5cbiogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgIjAiLCAiMC4wIiwgIjBqIi5cblxuKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCAiXCdcJyIsICIoKSIsICJbXSIuXG5cbiogYW55IGVtcHR5IG1hcHBpbmcsIGZvciBleGFtcGxlLCAie30iLlxuXG4qIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuICAiX19ib29sX18oKSIgb3IgIl9fbGVuX18oKSIgbWV0aG9kLCB3aGVuIHRoYXQgbWV0aG9kIHJldHVybnMgdGhlXG4gIGludGVnZXIgemVybyBvciAiYm9vbCIgdmFsdWUgIkZhbHNlIi4gWzFdXG5cbkFsbCBvdGhlciB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgdHJ1ZSAtLS0gc28gb2JqZWN0cyBvZiBtYW55IHR5cGVzIGFyZVxuYWx3YXlzIHRydWUuXG5cbk9wZXJhdGlvbnMgYW5kIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYSBCb29sZWFuIHJlc3VsdCBhbHdheXNcbnJldHVybiAiMCIgb3IgIkZhbHNlIiBmb3IgZmFsc2UgYW5kICIxIiBvciAiVHJ1ZSIgZm9yIHRydWUsIHVubGVzc1xub3RoZXJ3aXNlIHN0YXRlZC4gKEltcG9ydGFudCBleGNlcHRpb246IHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgIm9yIlxuYW5kICJhbmQiIGFsd2F5cyByZXR1cm4gb25lIG9mIHRoZWlyIG9wZXJhbmRzLilcbicsCi0gJ3RyeSc6IHUnXG5UaGUgInRyeSIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSAidHJ5IiBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIGlkZW50aWZpZXJdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW4gbm9cbmV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCBmb3IgYW5cbmV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0IGNsYXVzZXNcbmluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gZXhwcmVzc2lvbi1cbmxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0IGV4cHJlc3Npb25cbmlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzIGNvbXBhdGlibGVcbndpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlIGV4Y2VwdGlvblxub2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCByYWlzZWRcbnRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsIGlmXG5wcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nICJhcyB0YXJnZXQiLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSAic3lzIiBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3NlZCB2aWFcbiJzeXMuZXhjX2luZm8oKSIuICJzeXMuZXhjX2luZm8oKSIgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZiB0aGVcbmV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiB0aGVcbnByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzIGFyZVxucmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlICJ0cnkiIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlICJlbHNlIiBjbGF1c2UgYXJlXG5ub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nICJleGNlcHQiIGNsYXVzZXMuXG5cbklmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlICJ0cnkiXG5jbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgImV4Y2VwdCIgYW5kICJlbHNlIiBjbGF1c2VzLiAgSWYgYW5cbmV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3QgaGFuZGxlZCwgdGhlXG5leGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkLiAgSWZcbnRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSAiZmluYWxseSJcbmNsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlIHNhdmVkXG5leGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiBJZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UgZXhlY3V0ZXMgYSAicmV0dXJuIiBvciAiYnJlYWsiIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvblxuaXMgZGlzY2FyZGVkOlxuXG4gICA+Pj4gZGVmIGYoKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgMS8wXG4gICAuLi4gICAgIGZpbmFsbHk6XG4gICAuLi4gICAgICAgICByZXR1cm4gNDJcbiAgIC4uLlxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSAiZmluYWxseSIgY2xhdXNlLlxuXG5XaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gdGhlXG4idHJ5IiBzdWl0ZSBvZiBhICJ0cnkiLi4uImZpbmFsbHkiIHN0YXRlbWVudCwgdGhlICJmaW5hbGx5IiBjbGF1c2UgaXNcbmFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGlsbGVnYWwgaW5cbnRoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlIGxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuVGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGxhc3QgInJldHVybiJcbnN0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgYVxuInJldHVybiIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSAiZmluYWxseSIgY2xhdXNlIHdpbGwgYWx3YXlzIGJlIHRoZVxubGFzdCBvbmUgZXhlY3V0ZWQ6XG5cbiAgID4+PiBkZWYgZm9vKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ3RyeVwnXG4gICAuLi4gICAgIGZpbmFsbHk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdmaW5hbGx5XCdcbiAgIC4uLlxuICAgPj4+IGZvbygpXG4gICBcJ2ZpbmFsbHlcJ1xuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG4nLAotICd0eXBlcyc6IHUnXG5UaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5CZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgRXh0ZW5zaW9uXG5tb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uIHRoZVxuaW1wbGVtZW50YXRpb24pIGNhbiBkZWZpbmUgYWRkaXRpb25hbCB0eXBlcy4gIEZ1dHVyZSB2ZXJzaW9ucyBvZlxuUHl0aG9uIG1heSBhZGQgdHlwZXMgdG8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuLCByYXRpb25hbCBudW1iZXJzLFxuZWZmaWNpZW50bHkgc3RvcmVkIGFycmF5cyBvZiBpbnRlZ2VycywgZXRjLiksIGFsdGhvdWdoIHN1Y2ggYWRkaXRpb25zXG53aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuXG5Tb21lIG9mIHRoZSB0eXBlIGRlc2NyaXB0aW9ucyBiZWxvdyBjb250YWluIGEgcGFyYWdyYXBoIGxpc3Rpbmdcblwnc3BlY2lhbCBhdHRyaWJ1dGVzLlwnICBUaGVzZSBhcmUgYXR0cmlidXRlcyB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZVxuaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgZGVmaW5pdGlvblxubWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuXG5Ob25lXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWUgIk5vbmUiLiBJdFxuICAgaXMgdXNlZCB0byBzaWduaWZ5IHRoZSBhYnNlbmNlIG9mIGEgdmFsdWUgaW4gbWFueSBzaXR1YXRpb25zLCBlLmcuLFxuICAgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb25cJ3QgZXhwbGljaXRseSByZXR1cm5cbiAgIGFueXRoaW5nLiBJdHMgdHJ1dGggdmFsdWUgaXMgZmFsc2UuXG5cbk5vdEltcGxlbWVudGVkXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWVcbiAgICJOb3RJbXBsZW1lbnRlZCIuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHNcbiAgIHNob3VsZCByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3JcbiAgIHRoZSBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGVcbiAgIHJlZmxlY3RlZCBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGVcbiAgIG9wZXJhdG9yLikgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG4gICBTZWUgKkltcGxlbWVudGluZyB0aGUgYXJpdGhtZXRpYyBvcGVyYXRpb25zKiBmb3IgbW9yZSBkZXRhaWxzLlxuXG5FbGxpcHNpc1xuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsICIuLi4iIG9yIHRoZVxuICAgYnVpbHQtaW4gbmFtZSAiRWxsaXBzaXMiLiAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiJudW1iZXJzLk51bWJlciJcbiAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgYnlcbiAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gIE51bWVyaWNcbiAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4gICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4gICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsIHJlcHJlc2VudGF0aW9uXG4gICBpbiBjb21wdXRlcnMuXG5cbiAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZFxuICAgY29tcGxleCBudW1iZXJzOlxuXG4gICAibnVtYmVycy5JbnRlZ3JhbCJcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mIGludGVnZXJzXG4gICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cblxuICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbnRlZ2VyczpcblxuICAgICAgSW50ZWdlcnMgKCJpbnQiKVxuXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgbnVtYmVycyBpbiBhbiB1bmxpbWl0ZWQgcmFuZ2UsIHN1YmplY3QgdG9cbiAgICAgICAgIGF2YWlsYWJsZSAodmlydHVhbCkgbWVtb3J5IG9ubHkuICBGb3IgdGhlIHB1cnBvc2Ugb2Ygc2hpZnRcbiAgICAgICAgIGFuZCBtYXNrIG9wZXJhdGlvbnMsIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGlzIGFzc3VtZWQsIGFuZFxuICAgICAgICAgbmVnYXRpdmUgbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgaW4gYSB2YXJpYW50IG9mIDJcJ3NcbiAgICAgICAgIGNvbXBsZW1lbnQgd2hpY2ggZ2l2ZXMgdGhlIGlsbHVzaW9uIG9mIGFuIGluZmluaXRlIHN0cmluZyBvZlxuICAgICAgICAgc2lnbiBiaXRzIGV4dGVuZGluZyB0byB0aGUgbGVmdC5cblxuICAgICAgQm9vbGVhbnMgKCJib29sIilcbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHRoZVxuICAgICAgICAgb25seSBCb29sZWFuIG9iamVjdHMuIFRoZSBCb29sZWFuIHR5cGUgaXMgYSBzdWJ0eXBlIG9mIHRoZVxuICAgICAgICAgaW50ZWdlciB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwIGFuZFxuICAgICAgICAgMSwgcmVzcGVjdGl2ZWx5LCBpbiBhbG1vc3QgYWxsIGNvbnRleHRzLCB0aGUgZXhjZXB0aW9uIGJlaW5nXG4gICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyAiIkZhbHNlIiIgb3JcbiAgICAgICAgICIiVHJ1ZSIiIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgdGhlXG4gICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuXG4gICAibnVtYmVycy5SZWFsIiAoImZsb2F0IilcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBtYWNoaW5lLWxldmVsIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnRcbiAgICAgIG51bWJlcnMuIFlvdSBhcmUgYXQgdGhlIG1lcmN5IG9mIHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVcbiAgICAgIGFyY2hpdGVjdHVyZSAoYW5kIEMgb3IgSmF2YSBpbXBsZW1lbnRhdGlvbikgZm9yIHRoZSBhY2NlcHRlZFxuICAgICAgcmFuZ2UgYW5kIGhhbmRsaW5nIG9mIG92ZXJmbG93LiBQeXRob24gZG9lcyBub3Qgc3VwcG9ydCBzaW5nbGUtXG4gICAgICBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgdGhlIHNhdmluZ3MgaW4gcHJvY2Vzc29yIGFuZFxuICAgICAgbWVtb3J5IHVzYWdlIHRoYXQgYXJlIHVzdWFsbHkgdGhlIHJlYXNvbiBmb3IgdXNpbmcgdGhlc2UgYXJlXG4gICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgaXNcbiAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiBmbG9hdGluZ1xuICAgICAgcG9pbnQgbnVtYmVycy5cblxuICAgIm51bWJlcnMuQ29tcGxleCIgKCJjb21wbGV4IilcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBjb21wbGV4IG51bWJlcnMgYXMgYSBwYWlyIG9mIG1hY2hpbmUtbGV2ZWxcbiAgICAgIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gIFRoZSBzYW1lIGNhdmVhdHMgYXBwbHlcbiAgICAgIGFzIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBUaGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIGFcbiAgICAgIGNvbXBsZXggbnVtYmVyICJ6IiBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuICAgICAgYXR0cmlidXRlcyAiei5yZWFsIiBhbmQgInouaW1hZyIuXG5cblNlcXVlbmNlc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBvcmRlcmVkIHNldHMgaW5kZXhlZCBieSBub24tbmVnYXRpdmVcbiAgIG51bWJlcnMuIFRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtc1xuICAgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGUgaW5kZXggc2V0XG4gICBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2Ygc2VxdWVuY2UgKmEqIGlzXG4gICBzZWxlY3RlZCBieSAiYVtpXSIuXG5cbiAgIFNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgc2xpY2luZzogImFbaTpqXSIgc2VsZWN0cyBhbGwgaXRlbXMgd2l0aFxuICAgaW5kZXggKmsqIHN1Y2ggdGhhdCAqaSogIjw9IiAqayogIjwiICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzIGltcGxpZXNcbiAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG5cbiAgIFNvbWUgc2VxdWVuY2VzIGFsc28gc3VwcG9ydCAiZXh0ZW5kZWQgc2xpY2luZyIgd2l0aCBhIHRoaXJkICJzdGVwIlxuICAgcGFyYW1ldGVyOiAiYVtpOmo6a10iIHNlbGVjdHMgYWxsIGl0ZW1zIG9mICphKiB3aXRoIGluZGV4ICp4KiB3aGVyZVxuICAgInggPSBpICsgbiprIiwgKm4qICI+PSIgIjAiIGFuZCAqaSogIjw9IiAqeCogIjwiICpqKi5cblxuICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuXG4gICBJbW11dGFibGUgc2VxdWVuY2VzXG4gICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0IGlzXG4gICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzLFxuICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7IGhvd2V2ZXIsXG4gICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gaW1tdXRhYmxlXG4gICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG5cbiAgICAgIFN0cmluZ3NcbiAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGUgY29kZVxuICAgICAgICAgcG9pbnRzLiBBbGwgdGhlIGNvZGUgcG9pbnRzIGluIHRoZSByYW5nZSAiVSswMDAwIC0gVSsxMEZGRkYiXG4gICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc25cJ3QgaGF2ZSBhICJjaGFyIlxuICAgICAgICAgdHlwZTsgaW5zdGVhZCwgZXZlcnkgY29kZSBwb2ludCBpbiB0aGUgc3RyaW5nIGlzIHJlcHJlc2VudGVkXG4gICAgICAgICBhcyBhIHN0cmluZyBvYmplY3Qgd2l0aCBsZW5ndGggIjEiLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAgICAgICAib3JkKCkiIGNvbnZlcnRzIGEgY29kZSBwb2ludCBmcm9tIGl0cyBzdHJpbmcgZm9ybSB0byBhblxuICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiOyAiY2hyKCkiIGNvbnZlcnRzIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVuZ3RoXG4gICAgICAgICAiMSIgc3RyaW5nIG9iamVjdC4gInN0ci5lbmNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhXG4gICAgICAgICAic3RyIiB0byAiYnl0ZXMiIHVzaW5nIHRoZSBnaXZlbiB0ZXh0IGVuY29kaW5nLCBhbmRcbiAgICAgICAgICJieXRlcy5kZWNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgb3Bwb3NpdGUuXG5cbiAgICAgIFR1cGxlc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzIG9mXG4gICAgICAgICB0d28gb3IgbW9yZSBpdGVtcyBhcmUgZm9ybWVkIGJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyBvZlxuICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhIFwnc2luZ2xldG9uXCcpIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiBieVxuICAgICAgICAgaXRzZWxmIGRvZXMgbm90IGNyZWF0ZSBhIHR1cGxlLCBzaW5jZSBwYXJlbnRoZXNlcyBtdXN0IGJlXG4gICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFuIGVtcHR5IHBhaXIgb2YgcGFyZW50aGVzZXMuXG5cbiAgICAgIEJ5dGVzXG4gICAgICAgICBBIGJ5dGVzIG9iamVjdCBpcyBhbiBpbW11dGFibGUgYXJyYXkuICBUaGUgaXRlbXMgYXJlIDgtYml0XG4gICAgICAgICBieXRlcywgcmVwcmVzZW50ZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cbiAgICAgICAgIEJ5dGVzIGxpdGVyYWxzIChsaWtlICJiXCdhYmNcJyIpIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJieXRlcygpIiBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gIEFsc28sXG4gICAgICAgICBieXRlcyBvYmplY3RzIGNhbiBiZSBkZWNvZGVkIHRvIHN0cmluZ3MgdmlhIHRoZSAiZGVjb2RlKCkiXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kICJkZWwiIChkZWxldGUpIHN0YXRlbWVudHMuXG5cbiAgICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzOlxuXG4gICAgICBMaXN0c1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgbGlzdCBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTGlzdHMgYXJlXG4gICAgICAgICBmb3JtZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGluXG4gICAgICAgICBzcXVhcmUgYnJhY2tldHMuIChOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIHNwZWNpYWwgY2FzZXMgbmVlZGVkXG4gICAgICAgICB0byBmb3JtIGxpc3RzIG9mIGxlbmd0aCAwIG9yIDEuKVxuXG4gICAgICBCeXRlIEFycmF5c1xuICAgICAgICAgQSBieXRlYXJyYXkgb2JqZWN0IGlzIGEgbXV0YWJsZSBhcnJheS4gVGhleSBhcmUgY3JlYXRlZCBieVxuICAgICAgICAgdGhlIGJ1aWx0LWluICJieXRlYXJyYXkoKSIgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4gICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSBwcm92aWRlXG4gICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4gICAgICAgICBvYmplY3RzLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSAiYXJyYXkiIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZiBhXG4gICAgICBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlLlxuXG5TZXQgdHlwZXNcbiAgIFRoZXNlIHJlcHJlc2VudCB1bm9yZGVyZWQsIGZpbml0ZSBzZXRzIG9mIHVuaXF1ZSwgaW1tdXRhYmxlXG4gICBvYmplY3RzLiBBcyBzdWNoLCB0aGV5IGNhbm5vdCBiZSBpbmRleGVkIGJ5IGFueSBzdWJzY3JpcHQuIEhvd2V2ZXIsXG4gICB0aGV5IGNhbiBiZSBpdGVyYXRlZCBvdmVyLCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSJcbiAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlIGZhc3RcbiAgIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZFxuICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbiAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cblxuICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yXG4gICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmRcbiAgICIxLjAiKSwgb25seSBvbmUgb2YgdGhlbSBjYW4gYmUgY29udGFpbmVkIGluIGEgc2V0LlxuXG4gICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgc2V0IHR5cGVzOlxuXG4gICBTZXRzXG4gICAgICBUaGVzZSByZXByZXNlbnQgYSBtdXRhYmxlIHNldC4gVGhleSBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgICJzZXQoKSIgY29uc3RydWN0b3IgYW5kIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIGJ5IHNldmVyYWxcbiAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgImFkZCgpIi5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluICJmcm96ZW5zZXQoKSIgY29uc3RydWN0b3IuICBBcyBhIGZyb3plbnNldCBpcyBpbW11dGFibGVcbiAgICAgIGFuZCAqaGFzaGFibGUqLCBpdCBjYW4gYmUgdXNlZCBhZ2FpbiBhcyBhbiBlbGVtZW50IG9mIGFub3RoZXJcbiAgICAgIHNldCwgb3IgYXMgYSBkaWN0aW9uYXJ5IGtleS5cblxuTWFwcGluZ3NcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgYXJiaXRyYXJ5IGluZGV4XG4gICBzZXRzLiBUaGUgc3Vic2NyaXB0IG5vdGF0aW9uICJhW2tdIiBzZWxlY3RzIHRoZSBpdGVtIGluZGV4ZWQgYnkgImsiXG4gICBmcm9tIHRoZSBtYXBwaW5nICJhIjsgdGhpcyBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9ucyBhbmQgYXMgdGhlXG4gICB0YXJnZXQgb2YgYXNzaWdubWVudHMgb3IgImRlbCIgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAibGVuKCkiIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmQgIjEuMCIpXG4gICAgICB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4gICAgICBkaWN0aW9uYXJ5IGVudHJ5LlxuXG4gICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlICJ7Li4ufSJcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgImRibS5uZGJtIiBhbmQgImRibS5nbnUiIHByb3ZpZGVcbiAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIlxuICAgICAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCAiX19kb2NfXyIgICAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yICJOb25lIiBpZiAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGU7IG5vdCBpbmhlcml0ZWQgYnkgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN1YmNsYXNzZXMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19uYW1lX18iICAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIG5hbWUgICAgICAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19xdWFsbmFtZV9fIiAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICpxdWFsaWZpZWQgbmFtZSogfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXcgaW4gdmVyc2lvbiAzLjMuICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fbW9kdWxlX18iICAgICAgICAgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiwgb3IgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RlZmF1bHRzX18iICAgICAgICAgICAgfCBBIHR1cGxlIGNvbnRhaW5pbmcgZGVmYXVsdCAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciB0aG9zZSAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyB0aGF0IGhhdmUgZGVmYXVsdHMsICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvciAiTm9uZSIgaWYgbm8gYXJndW1lbnRzIGhhdmUgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2NvZGVfXyIgICAgICAgICAgICAgICAgfCBUaGUgY29kZSBvYmplY3QgcmVwcmVzZW50aW5nICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIGJvZHkuICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2dsb2JhbHNfXyIgICAgICAgICAgICAgfCBBIHJlZmVyZW5jZSB0byB0aGUgZGljdGlvbmFyeSAgIHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgZnVuY3Rpb25cJ3MgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnbG9iYWwgdmFyaWFibGVzIC0tLSB0aGUgZ2xvYmFsIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGUgaW4gICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZC4gfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19kaWN0X18iICAgICAgICAgICAgICAgIHwgVGhlIG5hbWVzcGFjZSBzdXBwb3J0aW5nICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyYml0cmFyeSBmdW5jdGlvbiBhdHRyaWJ1dGVzLiAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19jbG9zdXJlX18iICAgICAgICAgICAgIHwgIk5vbmUiIG9yIGEgdHVwbGUgb2YgY2VsbHMgdGhhdCB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvblwncyBmcmVlIHZhcmlhYmxlcy4gICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Fubm90YXRpb25zX18iICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBhbm5vdGF0aW9ucyAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2YgcGFyYW1ldGVycy4gIFRoZSBrZXlzIG9mIHRoZSB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpY3QgYXJlIHRoZSBwYXJhbWV0ZXIgbmFtZXMsICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbmQgIlwncmV0dXJuXCciIGZvciB0aGUgcmV0dXJuICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbm5vdGF0aW9uLCBpZiBwcm92aWRlZC4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fa3dkZWZhdWx0c19fIiAgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGRlZmF1bHRzIGZvciAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycy4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcblxuICAgICAgTW9zdCBvZiB0aGUgYXR0cmlidXRlcyBsYWJlbGxlZCAiV3JpdGFibGUiIGNoZWNrIHRoZSB0eXBlIG9mIHRoZVxuICAgICAgYXNzaWduZWQgdmFsdWUuXG5cbiAgICAgIEZ1bmN0aW9uIG9iamVjdHMgYWxzbyBzdXBwb3J0IGdldHRpbmcgYW5kIHNldHRpbmcgYXJiaXRyYXJ5XG4gICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCBtZXRhZGF0YVxuICAgICAgdG8gZnVuY3Rpb25zLiAgUmVndWxhciBhdHRyaWJ1dGUgZG90LW5vdGF0aW9uIGlzIHVzZWQgdG8gZ2V0IGFuZFxuICAgICAgc2V0IHN1Y2ggYXR0cmlidXRlcy4gKk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5XG4gICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuIEZ1bmN0aW9uXG4gICAgICBhdHRyaWJ1dGVzIG9uIGJ1aWx0LWluIGZ1bmN0aW9ucyBtYXkgYmUgc3VwcG9ydGVkIGluIHRoZVxuICAgICAgZnV0dXJlLipcblxuICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZ1bmN0aW9uXCdzIGRlZmluaXRpb24gY2FuIGJlXG4gICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgaW50ZXJuYWxcbiAgICAgIHR5cGVzIGJlbG93LlxuXG4gICBJbnN0YW5jZSBtZXRob2RzXG4gICAgICBBbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGNvbWJpbmVzIGEgY2xhc3MsIGEgY2xhc3MgaW5zdGFuY2UgYW5kXG4gICAgICBhbnkgY2FsbGFibGUgb2JqZWN0IChub3JtYWxseSBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbikuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJfX3NlbGZfXyIgaXMgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICBvYmplY3QsICJfX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgIl9fZG9jX18iIGlzIHRoZVxuICAgICAgbWV0aG9kXCdzIGRvY3VtZW50YXRpb24gKHNhbWUgYXMgIl9fZnVuY19fLl9fZG9jX18iKTsgIl9fbmFtZV9fIlxuICAgICAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzICJfX2Z1bmNfXy5fX25hbWVfXyIpOyAiX19tb2R1bGVfXyJcbiAgICAgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZCBpbiwgb3IgIk5vbmUiXG4gICAgICBpZiB1bmF2YWlsYWJsZS5cblxuICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSBhcmJpdHJhcnlcbiAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4gICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyAocGVyaGFwcyB2aWEgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyksIGlmXG4gICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIHVzZXItXG4gICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgaW5zdGFuY2VzLFxuICAgICAgaXRzICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBtZXRob2Qgb2JqZWN0XG4gICAgICBpcyBzYWlkIHRvIGJlIGJvdW5kLiAgVGhlIG5ldyBtZXRob2RcJ3MgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXNcbiAgICAgIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbiAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgaXNcbiAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlICJfX2Z1bmNfXyJcbiAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgbmV3IGluc3RhbmNlIGlzIG5vdCB0aGUgb3JpZ2luYWwgbWV0aG9kIG9iamVjdFxuICAgICAgYnV0IGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZS5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgaXRzICJfX3NlbGZfXyIgYXR0cmlidXRlXG4gICAgICBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzIHRoZVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IHVuZGVybHlpbmcgdGhlIGNsYXNzIG1ldGhvZC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uICgiX19mdW5jX18iKSBpcyBjYWxsZWQsIGluc2VydGluZyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgICgiX19zZWxmX18iKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSwgd2hlblxuICAgICAgIkMiIGlzIGEgY2xhc3Mgd2hpY2ggY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uICJmKCkiLFxuICAgICAgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiAiQyIsIGNhbGxpbmcgInguZigxKSIgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgY2FsbGluZyAiQy5mKHgsIDEpIi5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzIG1ldGhvZFxuICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gIl9fc2VsZl9fIiB3aWxsIGFjdHVhbGx5XG4gICAgICBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyICJ4LmYoMSkiIG9yICJDLmYoMSkiXG4gICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgImYoQywxKSIgd2hlcmUgImYiIGlzIHRoZSB1bmRlcmx5aW5nXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgTm90ZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZ1bmN0aW9uIG9iamVjdCB0byBpbnN0YW5jZVxuICAgICAgbWV0aG9kIG9iamVjdCBoYXBwZW5zIGVhY2ggdGltZSB0aGUgYXR0cmlidXRlIGlzIHJldHJpZXZlZCBmcm9tXG4gICAgICB0aGUgaW5zdGFuY2UuICBJbiBzb21lIGNhc2VzLCBhIGZydWl0ZnVsIG9wdGltaXphdGlvbiBpcyB0b1xuICAgICAgYXNzaWduIHRoZSBhdHRyaWJ1dGUgdG8gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2FsbCB0aGF0IGxvY2FsXG4gICAgICB2YXJpYWJsZS4gQWxzbyBub3RpY2UgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIG9ubHkgaGFwcGVucyBmb3JcbiAgICAgIHVzZXItZGVmaW5lZCBmdW5jdGlvbnM7IG90aGVyIGNhbGxhYmxlIG9iamVjdHMgKGFuZCBhbGwgbm9uLVxuICAgICAgY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLiAgSXQgaXNcbiAgICAgIGFsc28gaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIHdoaWNoIGFyZVxuICAgICAgYXR0cmlidXRlcyBvZiBhIGNsYXNzIGluc3RhbmNlIGFyZSBub3QgY29udmVydGVkIHRvIGJvdW5kXG4gICAgICBtZXRob2RzOyB0aGlzICpvbmx5KiBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFuIGF0dHJpYnV0ZVxuICAgICAgb2YgdGhlIGNsYXNzLlxuXG4gICBHZW5lcmF0b3IgZnVuY3Rpb25zXG4gICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSAieWllbGQiIHN0YXRlbWVudCAoc2VlXG4gICAgICBzZWN0aW9uICpUaGUgeWllbGQgc3RhdGVtZW50KikgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciBmdW5jdGlvbiouXG4gICAgICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCBhbHdheXMgcmV0dXJucyBhbiBpdGVyYXRvciBvYmplY3RcbiAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgY2FsbGluZ1xuICAgICAgdGhlIGl0ZXJhdG9yXCdzICJpdGVyYXRvci5fX25leHRfXygpIiBtZXRob2Qgd2lsbCBjYXVzZSB0aGVcbiAgICAgIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgInlpZWxkIlxuICAgICAgc3RhdGVtZW50LiAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSAicmV0dXJuIiBzdGF0ZW1lbnQgb3JcbiAgICAgIGZhbGxzIG9mZiB0aGUgZW5kLCBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGVcbiAgICAgIGl0ZXJhdG9yIHdpbGwgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHNldCBvZiB2YWx1ZXMgdG8gYmVcbiAgICAgIHJldHVybmVkLlxuXG4gICBDb3JvdXRpbmUgZnVuY3Rpb25zXG4gICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nICJhc3luYyBkZWYiIGlzXG4gICAgICBjYWxsZWQgYSAqY29yb3V0aW5lIGZ1bmN0aW9uKi4gIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsXG4gICAgICByZXR1cm5zIGEgKmNvcm91dGluZSogb2JqZWN0LiAgSXQgbWF5IGNvbnRhaW4gImF3YWl0IlxuICAgICAgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgImFzeW5jIHdpdGgiIGFuZCAiYXN5bmMgZm9yIiBzdGF0ZW1lbnRzLlxuICAgICAgU2VlIGFsc28gdGhlICpDb3JvdXRpbmUgT2JqZWN0cyogc2VjdGlvbi5cblxuICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4gICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbiAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgImxlbigpIiBhbmQgIm1hdGguc2luKCkiXG4gICAgICAoIm1hdGgiIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZlxuICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCByZWFkLVxuICAgICAgb25seSBhdHRyaWJ1dGVzOiAiX19kb2NfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb25cbiAgICAgIHN0cmluZywgb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlOyAiX19uYW1lX18iIGlzIHRoZSBmdW5jdGlvblwnc1xuICAgICAgbmFtZTsgIl9fc2VsZl9fIiBpcyBzZXQgdG8gIk5vbmUiIChidXQgc2VlIHRoZSBuZXh0IGl0ZW0pO1xuICAgICAgIl9fbW9kdWxlX18iIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkXG4gICAgICBpbiBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGUuXG5cbiAgIEJ1aWx0LWluIG1ldGhvZHNcbiAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sIHRoaXNcbiAgICAgIHRpbWUgY29udGFpbmluZyBhbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBDIGZ1bmN0aW9uIGFzIGFuXG4gICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbiAgICAgICJhbGlzdC5hcHBlbmQoKSIsIGFzc3VtaW5nICphbGlzdCogaXMgYSBsaXN0IG9iamVjdC4gSW4gdGhpc1xuICAgICAgY2FzZSwgdGhlIHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZSAiX19zZWxmX18iIGlzIHNldCB0byB0aGVcbiAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG5cbiAgIENsYXNzZXNcbiAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgZmFjdG9yaWVzXG4gICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgZm9yXG4gICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlICJfX25ld19fKCkiLiAgVGhlIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byAiX19uZXdfXygpIiBhbmQsIGluIHRoZSB0eXBpY2FsIGNhc2UsIHRvXG4gICAgICAiX19pbml0X18oKSIgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuXG4gICBDbGFzcyBJbnN0YW5jZXNcbiAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSBkZWZpbmluZ1xuICAgICAgYSAiX19jYWxsX18oKSIgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuXG5Nb2R1bGVzXG4gICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbiAgIGNyZWF0ZWQgYnkgdGhlICppbXBvcnQgc3lzdGVtKiBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgImltcG9ydCJcbiAgIHN0YXRlbWVudCAoc2VlICJpbXBvcnQiKSwgb3IgYnkgY2FsbGluZyBmdW5jdGlvbnMgc3VjaCBhc1xuICAgImltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkiIGFuZCBidWlsdC1pbiAiX19pbXBvcnRfXygpIi4gIEEgbW9kdWxlXG4gICBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXNcbiAgIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlICJfX2dsb2JhbHNfXyIgYXR0cmlidXRlIG9mXG4gICBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZVxuICAgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIm0ueCIgaXMgZXF1aXZhbGVudFxuICAgdG8gIm0uX19kaWN0X19bIngiXSIuIEEgbW9kdWxlIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHRoZSBjb2RlXG4gICBvYmplY3QgdXNlZCB0byBpbml0aWFsaXplIHRoZSBtb2R1bGUgKHNpbmNlIGl0IGlzblwndCBuZWVkZWQgb25jZVxuICAgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksXG4gICBlLmcuLCAibS54ID0gMSIgaXMgZXF1aXZhbGVudCB0byAibS5fX2RpY3RfX1sieCJdID0gMSIuXG5cbiAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogIl9fZGljdF9fIiBpcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZVxuICAgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBCZWNhdXNlIG9mIHRoZSB3YXkgQ1B5dGhvblxuICAgY2xlYXJzIG1vZHVsZSBkaWN0aW9uYXJpZXMsIHRoZSBtb2R1bGUgZGljdGlvbmFyeSB3aWxsIGJlIGNsZWFyZWRcbiAgIHdoZW4gdGhlIG1vZHVsZSBmYWxscyBvdXQgb2Ygc2NvcGUgZXZlbiBpZiB0aGUgZGljdGlvbmFyeSBzdGlsbCBoYXNcbiAgIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkgb3Iga2VlcCB0aGVcbiAgIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiAiX19uYW1lX18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZTtcbiAgICJfX2RvY19fIiBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciAiTm9uZSIgaWZcbiAgIHVuYXZhaWxhYmxlOyAiX19maWxlX18iIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZVxuICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSAiX19maWxlX18iXG4gICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyBDXG4gICBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3JcbiAgIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzXG4gICB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUuXG5cbkN1c3RvbSBjbGFzc2VzXG4gICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWVcbiAgIHNlY3Rpb24gKkNsYXNzIGRlZmluaXRpb25zKikuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZFxuICAgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWRcbiAgIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAiQy54IiBpcyB0cmFuc2xhdGVkIHRvXG4gICAiQy5fX2RpY3RfX1sieCJdIiAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoIGFsbG93XG4gICBmb3Igb3RoZXIgbWVhbnMgb2YgbG9jYXRpbmcgYXR0cmlidXRlcykuIFdoZW4gdGhlIGF0dHJpYnV0ZSBuYW1lIGlzXG4gICBub3QgZm91bmQgdGhlcmUsIHRoZSBhdHRyaWJ1dGUgc2VhcmNoIGNvbnRpbnVlcyBpbiB0aGUgYmFzZVxuICAgY2xhc3Nlcy4gVGhpcyBzZWFyY2ggb2YgdGhlIGJhc2UgY2xhc3NlcyB1c2VzIHRoZSBDMyBtZXRob2RcbiAgIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiBpbiB0aGUgcHJlc2VuY2Ugb2ZcbiAgIFwnZGlhbW9uZFwnIGluaGVyaXRhbmNlIHN0cnVjdHVyZXMgd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlXG4gICBpbmhlcml0YW5jZSBwYXRocyBsZWFkaW5nIGJhY2sgdG8gYSBjb21tb24gYW5jZXN0b3IuIEFkZGl0aW9uYWxcbiAgIGRldGFpbHMgb24gdGhlIEMzIE1STyB1c2VkIGJ5IFB5dGhvbiBjYW4gYmUgZm91bmQgaW4gdGhlXG4gICBkb2N1bWVudGF0aW9uIGFjY29tcGFueWluZyB0aGUgMi4zIHJlbGVhc2UgYXRcbiAgIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG5cbiAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgIkMiLCBzYXkpIHdvdWxkIHlpZWxkIGFcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4gICBvYmplY3Qgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGVzIGlzICJDIi4gIFdoZW4gaXQgd291bGQgeWllbGQgYVxuICAgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkIGJ5XG4gICB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqXG4gICBmb3IgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heVxuICAgZGlmZmVyIGZyb20gdGhvc2UgYWN0dWFsbHkgY29udGFpbmVkIGluIGl0cyAiX19kaWN0X18iLlxuXG4gICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzc1wncyBkaWN0aW9uYXJ5LCBuZXZlclxuICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuXG4gICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgaW5zdGFuY2VcbiAgIChzZWUgYmVsb3cpLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIGNsYXNzIG5hbWU7ICJfX21vZHVsZV9fIiBpc1xuICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgIl9fZGljdF9fIiBpcyB0aGVcbiAgIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3NcJ3MgbmFtZXNwYWNlOyAiX19iYXNlc19fIiBpcyBhIHR1cGxlXG4gICAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gdGhlXG4gICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7ICJfX2RvY19fIiBpcyB0aGVcbiAgIGNsYXNzXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmIHVuZGVmaW5lZC5cblxuQ2xhc3MgaW5zdGFuY2VzXG4gICBBIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBhIGNsYXNzIG9iamVjdCAoc2VlIGFib3ZlKS5cbiAgIEEgY2xhc3MgaW5zdGFuY2UgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGFzIGEgZGljdGlvbmFyeSB3aGljaFxuICAgaXMgdGhlIGZpcnN0IHBsYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSBzZWFyY2hlZC5cbiAgIFdoZW4gYW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZCB0aGVyZSwgYW5kIHRoZSBpbnN0YW5jZVwncyBjbGFzcyBoYXNcbiAgIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWUsIHRoZSBzZWFyY2ggY29udGludWVzIHdpdGggdGhlIGNsYXNzXG4gICBhdHRyaWJ1dGVzLiAgSWYgYSBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQgdGhhdCBpcyBhIHVzZXItZGVmaW5lZFxuICAgZnVuY3Rpb24gb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3RcbiAgIHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzbyB0cmFuc2Zvcm1lZDsgc2VlIGFib3ZlIHVuZGVyXG4gICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKiBmb3IgYW5vdGhlciB3YXlcbiAgIGluIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5XG4gICBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzICJfX2RpY3RfXyIuXG4gICBJZiBubyBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0XCdzIGNsYXNzIGhhcyBhXG4gICAiX19nZXRhdHRyX18oKSIgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZSBsb29rdXAuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2VcJ3NcbiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3NcJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuICAgIl9fc2V0YXR0cl9fKCkiIG9yICJfX2RlbGF0dHJfXygpIiBtZXRob2QsIHRoaXMgaXMgY2FsbGVkIGluc3RlYWRcbiAgIG9mIHVwZGF0aW5nIHRoZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciBtYXBwaW5nc1xuICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuICAgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKi5cblxuICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiAiX19kaWN0X18iIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbiAgICJfX2NsYXNzX18iIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cblxuSS9PIG9iamVjdHMgKGFsc28ga25vd24gYXMgZmlsZSBvYmplY3RzKVxuICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4gICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlICJvcGVuKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLFxuICAgYW5kIGFsc28gIm9zLnBvcGVuKCkiLCAib3MuZmRvcGVuKCkiLCBhbmQgdGhlICJtYWtlZmlsZSgpIiBtZXRob2RcbiAgIG9mIHNvY2tldCBvYmplY3RzIChhbmQgcGVyaGFwcyBieSBvdGhlciBmdW5jdGlvbnMgb3IgbWV0aG9kc1xuICAgcHJvdmlkZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMpLlxuXG4gICBUaGUgb2JqZWN0cyAic3lzLnN0ZGluIiwgInN5cy5zdGRvdXQiIGFuZCAic3lzLnN0ZGVyciIgYXJlXG4gICBpbml0aWFsaXplZCB0byBmaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJwcmV0ZXJcJ3NcbiAgIHN0YW5kYXJkIGlucHV0LCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXM7IHRoZXkgYXJlIGFsbCBvcGVuIGluIHRleHRcbiAgIG1vZGUgYW5kIHRoZXJlZm9yZSBmb2xsb3cgdGhlIGludGVyZmFjZSBkZWZpbmVkIGJ5IHRoZVxuICAgImlvLlRleHRJT0Jhc2UiIGFic3RyYWN0IGNsYXNzLlxuXG5JbnRlcm5hbCB0eXBlc1xuICAgQSBmZXcgdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBpbnRlcnByZXRlciBhcmUgZXhwb3NlZCB0byB0aGVcbiAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4gICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG5cbiAgIENvZGUgb2JqZWN0c1xuICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gY29kZSxcbiAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiBleHBsaWNpdFxuICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvblwncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0IHdhc1xuICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbiAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgbm90XG4gICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgYXRcbiAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlIGltbXV0YWJsZVxuICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gbXV0YWJsZVxuICAgICAgb2JqZWN0cy5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImNvX25hbWUiIGdpdmVzIHRoZSBmdW5jdGlvbiBuYW1lO1xuICAgICAgImNvX2FyZ2NvdW50IiBpcyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIChpbmNsdWRpbmdcbiAgICAgIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzKTsgImNvX25sb2NhbHMiIGlzIHRoZSBudW1iZXIgb2ZcbiAgICAgIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nIGFyZ3VtZW50cyk7XG4gICAgICAiY29fdmFybmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGxvY2FsXG4gICAgICB2YXJpYWJsZXMgKHN0YXJ0aW5nIHdpdGggdGhlIGFyZ3VtZW50IG5hbWVzKTsgImNvX2NlbGx2YXJzIiBpcyBhXG4gICAgICB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMgdGhhdCBhcmVcbiAgICAgIHJlZmVyZW5jZWQgYnkgbmVzdGVkIGZ1bmN0aW9uczsgImNvX2ZyZWV2YXJzIiBpcyBhIHR1cGxlXG4gICAgICBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlIHZhcmlhYmxlczsgImNvX2NvZGUiIGlzIGEgc3RyaW5nXG4gICAgICByZXByZXNlbnRpbmcgdGhlIHNlcXVlbmNlIG9mIGJ5dGVjb2RlIGluc3RydWN0aW9uczsgImNvX2NvbnN0cyJcbiAgICAgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7XG4gICAgICAiY29fbmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7XG4gICAgICAiY29fZmlsZW5hbWUiIGlzIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyBjb21waWxlZDtcbiAgICAgICJjb19maXJzdGxpbmVubyIgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbiAgICAgICJjb19sbm90YWIiIGlzIGEgc3RyaW5nIGVuY29kaW5nIHRoZSBtYXBwaW5nIGZyb20gYnl0ZWNvZGVcbiAgICAgIG9mZnNldHMgdG8gbGluZSBudW1iZXJzIChmb3IgZGV0YWlscyBzZWUgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZVxuICAgICAgaW50ZXJwcmV0ZXIpOyAiY29fc3RhY2tzaXplIiBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuICAgICAgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMpOyAiY29fZmxhZ3MiIGlzIGFuIGludGVnZXIgZW5jb2RpbmcgYVxuICAgICAgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciAiY29fZmxhZ3MiOiBiaXQgIjB4MDQiXG4gICAgICBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqYXJndW1lbnRzIiBzeW50YXggdG8gYWNjZXB0IGFuXG4gICAgICBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXQgIjB4MDgiIGlzIHNldCBpZlxuICAgICAgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqKmtleXdvcmRzIiBzeW50YXggdG8gYWNjZXB0IGFyYml0cmFyeVxuICAgICAga2V5d29yZCBhcmd1bWVudHM7IGJpdCAiMHgyMCIgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiBpcyBhXG4gICAgICBnZW5lcmF0b3IuXG5cbiAgICAgIEZ1dHVyZSBmZWF0dXJlIGRlY2xhcmF0aW9ucyAoImZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24iKVxuICAgICAgYWxzbyB1c2UgYml0cyBpbiAiY29fZmxhZ3MiIHRvIGluZGljYXRlIHdoZXRoZXIgYSBjb2RlIG9iamVjdFxuICAgICAgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0ICIweDIwMDAiIGlzXG4gICAgICBzZXQgaWYgdGhlIGZ1bmN0aW9uIHdhcyBjb21waWxlZCB3aXRoIGZ1dHVyZSBkaXZpc2lvbiBlbmFibGVkO1xuICAgICAgYml0cyAiMHgxMCIgYW5kICIweDEwMDAiIHdlcmUgdXNlZCBpbiBlYXJsaWVyIHZlcnNpb25zIG9mXG4gICAgICBQeXRob24uXG5cbiAgICAgIE90aGVyIGJpdHMgaW4gImNvX2ZsYWdzIiBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cblxuICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4gICAgICAiY29fY29uc3RzIiBpcyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlIGZ1bmN0aW9uLCBvclxuICAgICAgIk5vbmUiIGlmIHVuZGVmaW5lZC5cblxuICAgRnJhbWUgb2JqZWN0c1xuICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyIGluXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImZfYmFjayIgaXMgdG8gdGhlIHByZXZpb3VzIHN0YWNrXG4gICAgICBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgIk5vbmUiIGlmIHRoaXMgaXMgdGhlIGJvdHRvbVxuICAgICAgc3RhY2sgZnJhbWU7ICJmX2NvZGUiIGlzIHRoZSBjb2RlIG9iamVjdCBiZWluZyBleGVjdXRlZCBpbiB0aGlzXG4gICAgICBmcmFtZTsgImZfbG9jYWxzIiBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXAgbG9jYWxcbiAgICAgIHZhcmlhYmxlczsgImZfZ2xvYmFscyIgaXMgdXNlZCBmb3IgZ2xvYmFsIHZhcmlhYmxlcztcbiAgICAgICJmX2J1aWx0aW5zIiBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lczsgImZfbGFzdGkiXG4gICAgICBnaXZlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbiAodGhpcyBpcyBhbiBpbmRleCBpbnRvIHRoZVxuICAgICAgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG5cbiAgICAgIFNwZWNpYWwgd3JpdGFibGUgYXR0cmlidXRlczogImZfdHJhY2UiLCBpZiBub3QgIk5vbmUiLCBpcyBhXG4gICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyBpc1xuICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyAiZl9saW5lbm8iIGlzIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyIG9mXG4gICAgICB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uIGp1bXBzXG4gICAgICB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEEgZGVidWdnZXJcbiAgICAgIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmQgKGFrYSBTZXQgTmV4dCBTdGF0ZW1lbnQpIGJ5IHdyaXRpbmdcbiAgICAgIHRvIGZfbGluZW5vLlxuXG4gICAgICBGcmFtZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcblxuICAgICAgZnJhbWUuY2xlYXIoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCBjbGVhcnMgYWxsIHJlZmVyZW5jZXMgdG8gbG9jYWwgdmFyaWFibGVzIGhlbGQgYnlcbiAgICAgICAgIHRoZSBmcmFtZS4gIEFsc28sIGlmIHRoZSBmcmFtZSBiZWxvbmdlZCB0byBhIGdlbmVyYXRvciwgdGhlXG4gICAgICAgICBnZW5lcmF0b3IgaXMgZmluYWxpemVkLiAgVGhpcyBoZWxwcyBicmVhayByZWZlcmVuY2UgY3ljbGVzXG4gICAgICAgICBpbnZvbHZpbmcgZnJhbWUgb2JqZWN0cyAoZm9yIGV4YW1wbGUgd2hlbiBjYXRjaGluZyBhblxuICAgICAgICAgZXhjZXB0aW9uIGFuZCBzdG9yaW5nIGl0cyB0cmFjZWJhY2sgZm9yIGxhdGVyIHVzZSkuXG5cbiAgICAgICAgICJSdW50aW1lRXJyb3IiIGlzIHJhaXNlZCBpZiB0aGUgZnJhbWUgaXMgY3VycmVudGx5IGV4ZWN1dGluZy5cblxuICAgICAgICAgTmV3IGluIHZlcnNpb24gMy40LlxuXG4gICBUcmFjZWJhY2sgb2JqZWN0c1xuICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgQVxuICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gdGhlXG4gICAgICBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHVud2luZHMgdGhlIGV4ZWN1dGlvbiBzdGFjaywgYXRcbiAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgb2ZcbiAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgZW50ZXJlZCxcbiAgICAgIHRoZSBzdGFjayB0cmFjZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4gKFNlZSBzZWN0aW9uXG4gICAgICAqVGhlIHRyeSBzdGF0ZW1lbnQqLikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiB0aGVcbiAgICAgIHR1cGxlIHJldHVybmVkIGJ5ICJzeXMuZXhjX2luZm8oKSIuIFdoZW4gdGhlIHByb2dyYW0gY29udGFpbnMgbm9cbiAgICAgIHN1aXRhYmxlIGhhbmRsZXIsIHRoZSBzdGFjayB0cmFjZSBpcyB3cml0dGVuIChuaWNlbHkgZm9ybWF0dGVkKVxuICAgICAgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbTsgaWYgdGhlIGludGVycHJldGVyIGlzIGludGVyYWN0aXZlLFxuICAgICAgaXQgaXMgYWxzbyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgdXNlciBhcyAic3lzLmxhc3RfdHJhY2ViYWNrIi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInRiX25leHQiIGlzIHRoZSBuZXh0IGxldmVsIGluIHRoZVxuICAgICAgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQpLCBvclxuICAgICAgIk5vbmUiIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7ICJ0Yl9mcmFtZSIgcG9pbnRzIHRvIHRoZVxuICAgICAgZXhlY3V0aW9uIGZyYW1lIG9mIHRoZSBjdXJyZW50IGxldmVsOyAidGJfbGluZW5vIiBnaXZlcyB0aGUgbGluZVxuICAgICAgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQ7ICJ0Yl9sYXN0aSIgaW5kaWNhdGVzIHRoZVxuICAgICAgcHJlY2lzZSBpbnN0cnVjdGlvbi4gIFRoZSBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiBpblxuICAgICAgdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZVxuICAgICAgb2JqZWN0IGlmIHRoZSBleGNlcHRpb24gb2NjdXJyZWQgaW4gYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBub1xuICAgICAgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG5cbiAgIFNsaWNlIG9iamVjdHNcbiAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgIl9fZ2V0aXRlbV9fKCkiXG4gICAgICBtZXRob2RzLiAgVGhleSBhcmUgYWxzbyBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pbiAic2xpY2UoKSJcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAic3RhcnQiIGlzIHRoZSBsb3dlciBib3VuZDsgInN0b3AiXG4gICAgICBpcyB0aGUgdXBwZXIgYm91bmQ7ICJzdGVwIiBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpcyAiTm9uZSIgaWZcbiAgICAgIG9taXR0ZWQuICBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBoYXZlIGFueSB0eXBlLlxuXG4gICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcblxuICAgICAgc2xpY2UuaW5kaWNlcyhzZWxmLCBsZW5ndGgpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgKmxlbmd0aCogYW5kXG4gICAgICAgICBjb21wdXRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2xpY2UgdGhhdCB0aGUgc2xpY2Ugb2JqZWN0XG4gICAgICAgICB3b3VsZCBkZXNjcmliZSBpZiBhcHBsaWVkIHRvIGEgc2VxdWVuY2Ugb2YgKmxlbmd0aCogaXRlbXMuXG4gICAgICAgICBJdCByZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgaW50ZWdlcnM7IHJlc3BlY3RpdmVseSB0aGVzZSBhcmVcbiAgICAgICAgIHRoZSAqc3RhcnQqIGFuZCAqc3RvcCogaW5kaWNlcyBhbmQgdGhlICpzdGVwKiBvciBzdHJpZGVcbiAgICAgICAgIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGFyZVxuICAgICAgICAgaGFuZGxlZCBpbiBhIG1hbm5lciBjb25zaXN0ZW50IHdpdGggcmVndWxhciBzbGljZXMuXG5cbiAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuICAgICAgU3RhdGljIG1ldGhvZCBvYmplY3RzIHByb3ZpZGUgYSB3YXkgb2YgZGVmZWF0aW5nIHRoZVxuICAgICAgdHJhbnNmb3JtYXRpb24gb2YgZnVuY3Rpb24gb2JqZWN0cyB0byBtZXRob2Qgb2JqZWN0cyBkZXNjcmliZWRcbiAgICAgIGFib3ZlLiBBIHN0YXRpYyBtZXRob2Qgb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYW55IG90aGVyXG4gICAgICBvYmplY3QsIHVzdWFsbHkgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdC4gV2hlbiBhIHN0YXRpY1xuICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgaW5zdGFuY2UsIHRoZVxuICAgICAgb2JqZWN0IGFjdHVhbGx5IHJldHVybmVkIGlzIHRoZSB3cmFwcGVkIG9iamVjdCwgd2hpY2ggaXMgbm90XG4gICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlXG4gICAgICBub3QgdGhlbXNlbHZlcyBjYWxsYWJsZSwgYWx0aG91Z2ggdGhlIG9iamVjdHMgdGhleSB3cmFwIHVzdWFsbHlcbiAgICAgIGFyZS4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInN0YXRpY21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cblxuICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbiAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhIHdyYXBwZXJcbiAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgb2JqZWN0XG4gICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgb2ZcbiAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWRcbiAgICAgIGJ5IHRoZSBidWlsdC1pbiAiY2xhc3NtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nLAotICd0eXBlc2Z1bmN0aW9ucyc6IHUnXG5GdW5jdGlvbnNcbioqKioqKioqKlxuXG5GdW5jdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgVGhlIG9ubHlcbm9wZXJhdGlvbiBvbiBhIGZ1bmN0aW9uIG9iamVjdCBpcyB0byBjYWxsIGl0OiAiZnVuYyhhcmd1bWVudC1saXN0KSIuXG5cblRoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gZnVuY3Rpb25zXG5hbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSBvcGVyYXRpb24gKHRvIGNhbGxcbnRoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSB0aGVcbmRpZmZlcmVudCBvYmplY3QgdHlwZXMuXG5cblNlZSAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAndHlwZXNtYXBwaW5nJzogdSdcbk1hcHBpbmcgVHlwZXMgLS0tICJkaWN0IlxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSBvYmplY3RzLlxuTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdGFuZGFyZFxubWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQtXG5pbiAibGlzdCIsICJzZXQiLCBhbmQgInR1cGxlIiBjbGFzc2VzLCBhbmQgdGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlLilcblxuQSBkaWN0aW9uYXJ5XCdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgdGhhdCBhcmVcbm5vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgZGljdGlvbmFyaWVzIG9yXG5vdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbmlkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5XG50aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWxcbihzdWNoIGFzICIxIiBhbmQgIjEuMCIpIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXhcbnRoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlIGNvbXB1dGVycyBzdG9yZVxuZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5IHVud2lzZSB0byB1c2VcbnRoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcblxuRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAia2V5OlxudmFsdWUiIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiAie1wnamFja1wnOiA0MDk4LCBcJ3Nqb2VyZFwnOlxuNDEyN30iIG9yICJ7NDA5ODogXCdqYWNrXCcsIDQxMjc6IFwnc2pvZXJkXCd9Iiwgb3IgYnkgdGhlICJkaWN0IlxuY29uc3RydWN0b3IuXG5cbmNsYXNzIGNsYXNzIGRpY3QoKiprd2FyZylcbmNsYXNzIGNsYXNzIGRpY3QobWFwcGluZywgKiprd2FyZylcbmNsYXNzIGNsYXNzIGRpY3QoaXRlcmFibGUsICoqa3dhcmcpXG5cbiAgIFJldHVybiBhIG5ldyBkaWN0aW9uYXJ5IGluaXRpYWxpemVkIGZyb20gYW4gb3B0aW9uYWwgcG9zaXRpb25hbFxuICAgYXJndW1lbnQgYW5kIGEgcG9zc2libHkgZW1wdHkgc2V0IG9mIGtleXdvcmQgYXJndW1lbnRzLlxuXG4gICBJZiBubyBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuLCBhbiBlbXB0eSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQuXG4gICBJZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4gYW5kIGl0IGlzIGEgbWFwcGluZyBvYmplY3QsIGFcbiAgIGRpY3Rpb25hcnkgaXMgY3JlYXRlZCB3aXRoIHRoZSBzYW1lIGtleS12YWx1ZSBwYWlycyBhcyB0aGUgbWFwcGluZ1xuICAgb2JqZWN0LiAgT3RoZXJ3aXNlLCB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGFuICppdGVyYWJsZSpcbiAgIG9iamVjdC4gIEVhY2ggaXRlbSBpbiB0aGUgaXRlcmFibGUgbXVzdCBpdHNlbGYgYmUgYW4gaXRlcmFibGUgd2l0aFxuICAgZXhhY3RseSB0d28gb2JqZWN0cy4gIFRoZSBmaXJzdCBvYmplY3Qgb2YgZWFjaCBpdGVtIGJlY29tZXMgYSBrZXlcbiAgIGluIHRoZSBuZXcgZGljdGlvbmFyeSwgYW5kIHRoZSBzZWNvbmQgb2JqZWN0IHRoZSBjb3JyZXNwb25kaW5nXG4gICB2YWx1ZS4gIElmIGEga2V5IG9jY3VycyBtb3JlIHRoYW4gb25jZSwgdGhlIGxhc3QgdmFsdWUgZm9yIHRoYXQga2V5XG4gICBiZWNvbWVzIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBuZXcgZGljdGlvbmFyeS5cblxuICAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGUga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZWlyXG4gICB2YWx1ZXMgYXJlIGFkZGVkIHRvIHRoZSBkaWN0aW9uYXJ5IGNyZWF0ZWQgZnJvbSB0aGUgcG9zaXRpb25hbFxuICAgYXJndW1lbnQuICBJZiBhIGtleSBiZWluZyBhZGRlZCBpcyBhbHJlYWR5IHByZXNlbnQsIHRoZSB2YWx1ZSBmcm9tXG4gICB0aGUga2V5d29yZCBhcmd1bWVudCByZXBsYWNlcyB0aGUgdmFsdWUgZnJvbSB0aGUgcG9zaXRpb25hbFxuICAgYXJndW1lbnQuXG5cbiAgIFRvIGlsbHVzdHJhdGUsIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgYWxsIHJldHVybiBhIGRpY3Rpb25hcnkgZXF1YWxcbiAgIHRvICJ7Im9uZSI6IDEsICJ0d28iOiAyLCAidGhyZWUiOiAzfSI6XG5cbiAgICAgID4+PiBhID0gZGljdChvbmU9MSwgdHdvPTIsIHRocmVlPTMpXG4gICAgICA+Pj4gYiA9IHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyLCBcJ3RocmVlXCc6IDN9XG4gICAgICA+Pj4gYyA9IGRpY3QoemlwKFtcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCddLCBbMSwgMiwgM10pKVxuICAgICAgPj4+IGQgPSBkaWN0KFsoXCd0d29cJywgMiksIChcJ29uZVwnLCAxKSwgKFwndGhyZWVcJywgMyldKVxuICAgICAgPj4+IGUgPSBkaWN0KHtcJ3RocmVlXCc6IDMsIFwnb25lXCc6IDEsIFwndHdvXCc6IDJ9KVxuICAgICAgPj4+IGEgPT0gYiA9PSBjID09IGQgPT0gZVxuICAgICAgVHJ1ZVxuXG4gICBQcm92aWRpbmcga2V5d29yZCBhcmd1bWVudHMgYXMgaW4gdGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3JcbiAgIGtleXMgdGhhdCBhcmUgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXJzLiAgT3RoZXJ3aXNlLCBhbnkgdmFsaWQga2V5c1xuICAgY2FuIGJlIHVzZWQuXG5cbiAgIFRoZXNlIGFyZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGRpY3Rpb25hcmllcyBzdXBwb3J0IChhbmQgdGhlcmVmb3JlLFxuICAgY3VzdG9tIG1hcHBpbmcgdHlwZXMgc2hvdWxkIHN1cHBvcnQgdG9vKTpcblxuICAgbGVuKGQpXG5cbiAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICpkKi5cblxuICAgZFtrZXldXG5cbiAgICAgIFJldHVybiB0aGUgaXRlbSBvZiAqZCogd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmXG4gICAgICAqa2V5KiBpcyBub3QgaW4gdGhlIG1hcC5cblxuICAgICAgSWYgYSBzdWJjbGFzcyBvZiBkaWN0IGRlZmluZXMgYSBtZXRob2QgIl9fbWlzc2luZ19fKCkiIGFuZCAqa2V5KlxuICAgICAgaXMgbm90IHByZXNlbnQsIHRoZSAiZFtrZXldIiBvcGVyYXRpb24gY2FsbHMgdGhhdCBtZXRob2Qgd2l0aFxuICAgICAgdGhlIGtleSAqa2V5KiBhcyBhcmd1bWVudC4gIFRoZSAiZFtrZXldIiBvcGVyYXRpb24gdGhlbiByZXR1cm5zXG4gICAgICBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuICAgICAgIl9fbWlzc2luZ19fKGtleSkiIGNhbGwuIE5vIG90aGVyIG9wZXJhdGlvbnMgb3IgbWV0aG9kcyBpbnZva2VcbiAgICAgICJfX21pc3NpbmdfXygpIi4gSWYgIl9fbWlzc2luZ19fKCkiIGlzIG5vdCBkZWZpbmVkLCAiS2V5RXJyb3IiXG4gICAgICBpcyByYWlzZWQuICJfX21pc3NpbmdfXygpIiBtdXN0IGJlIGEgbWV0aG9kOyBpdCBjYW5ub3QgYmUgYW5cbiAgICAgIGluc3RhbmNlIHZhcmlhYmxlOlxuXG4gICAgICAgICA+Pj4gY2xhc3MgQ291bnRlcihkaWN0KTpcbiAgICAgICAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAgICAgICAuLi4gICAgICAgICByZXR1cm4gMFxuICAgICAgICAgPj4+IGMgPSBDb3VudGVyKClcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAwXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXSArPSAxXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMVxuXG4gICAgICBUaGUgZXhhbXBsZSBhYm92ZSBzaG93cyBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgImNvbGxlY3Rpb25zLkNvdW50ZXIiLiAgQSBkaWZmZXJlbnQgIl9fbWlzc2luZ19fIiBtZXRob2QgaXMgdXNlZFxuICAgICAgYnkgImNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0Ii5cblxuICAgZFtrZXldID0gdmFsdWVcblxuICAgICAgU2V0ICJkW2tleV0iIHRvICp2YWx1ZSouXG5cbiAgIGRlbCBkW2tleV1cblxuICAgICAgUmVtb3ZlICJkW2tleV0iIGZyb20gKmQqLiAgUmFpc2VzIGEgIktleUVycm9yIiBpZiAqa2V5KiBpcyBub3RcbiAgICAgIGluIHRoZSBtYXAuXG5cbiAgIGtleSBpbiBkXG5cbiAgICAgIFJldHVybiAiVHJ1ZSIgaWYgKmQqIGhhcyBhIGtleSAqa2V5KiwgZWxzZSAiRmFsc2UiLlxuXG4gICBrZXkgbm90IGluIGRcblxuICAgICAgRXF1aXZhbGVudCB0byAibm90IGtleSBpbiBkIi5cblxuICAgaXRlcihkKVxuXG4gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgZGljdGlvbmFyeS4gIFRoaXMgaXMgYVxuICAgICAgc2hvcnRjdXQgZm9yICJpdGVyKGQua2V5cygpKSIuXG5cbiAgIGNsZWFyKClcblxuICAgICAgUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBjb3B5KClcblxuICAgICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBjbGFzc21ldGhvZCBmcm9ta2V5cyhzZXFbLCB2YWx1ZV0pXG5cbiAgICAgIENyZWF0ZSBhIG5ldyBkaWN0aW9uYXJ5IHdpdGgga2V5cyBmcm9tICpzZXEqIGFuZCB2YWx1ZXMgc2V0IHRvXG4gICAgICAqdmFsdWUqLlxuXG4gICAgICAiZnJvbWtleXMoKSIgaXMgYSBjbGFzcyBtZXRob2QgdGhhdCByZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnkuXG4gICAgICAqdmFsdWUqIGRlZmF1bHRzIHRvICJOb25lIi5cblxuICAgZ2V0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgZWxzZVxuICAgICAgKmRlZmF1bHQqLiBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byAiTm9uZSIsIHNvXG4gICAgICB0aGF0IHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBhICJLZXlFcnJvciIuXG5cbiAgIGl0ZW1zKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgaXRlbXMgKCIoa2V5LCB2YWx1ZSkiXG4gICAgICBwYWlycykuIFNlZSB0aGUgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAga2V5cygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGtleXMuICBTZWUgdGhlXG4gICAgICAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBwb3Aoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiBpdHMgdmFsdWUsXG4gICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhICJLZXlFcnJvciIgaXMgcmFpc2VkLlxuXG4gICBwb3BpdGVtKClcblxuICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5ICIoa2V5LCB2YWx1ZSkiIHBhaXIgZnJvbSB0aGVcbiAgICAgIGRpY3Rpb25hcnkuXG5cbiAgICAgICJwb3BpdGVtKCkiIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4gICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIGVtcHR5LCBjYWxsaW5nICJwb3BpdGVtKCkiIHJhaXNlcyBhICJLZXlFcnJvciIuXG5cbiAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgbm90LCBpbnNlcnRcbiAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAqZGVmYXVsdCpcbiAgICAgIGRlZmF1bHRzIHRvICJOb25lIi5cblxuICAgdXBkYXRlKFtvdGhlcl0pXG5cbiAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAqb3RoZXIqLFxuICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiAiTm9uZSIuXG5cbiAgICAgICJ1cGRhdGUoKSIgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciBhblxuICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgaXRlcmFibGVzIG9mXG4gICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6ICJkLnVwZGF0ZShyZWQ9MSxcbiAgICAgIGJsdWU9MikiLlxuXG4gICB2YWx1ZXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyB2YWx1ZXMuICBTZWUgdGhlXG4gICAgICAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBEaWN0aW9uYXJpZXMgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgIihrZXksXG4gICB2YWx1ZSkiIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyAoXCc8XCcsIFwnPD1cJywgXCc+PVwnLCBcJz5cJykgcmFpc2VcbiAgICJUeXBlRXJyb3IiLlxuXG5TZWUgYWxzbzogInR5cGVzLk1hcHBpbmdQcm94eVR5cGUiIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHJlYWQtb25seVxuICB2aWV3IG9mIGEgImRpY3QiLlxuXG5cbkRpY3Rpb25hcnkgdmlldyBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb2JqZWN0cyByZXR1cm5lZCBieSAiZGljdC5rZXlzKCkiLCAiZGljdC52YWx1ZXMoKSIgYW5kXG4iZGljdC5pdGVtcygpIiBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSBkeW5hbWljIHZpZXcgb24gdGhlXG5kaWN0aW9uYXJ5XCdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeSBjaGFuZ2VzLFxudGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cblxuRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciByZXNwZWN0aXZlIGRhdGEsXG5hbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuXG5sZW4oZGljdHZpZXcpXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbml0ZXIoZGljdHZpZXcpXG5cbiAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgKHJlcHJlc2VudGVkIGFzXG4gICB0dXBsZXMgb2YgIihrZXksIHZhbHVlKSIpIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgIih2YWx1ZSwga2V5KSIgcGFpcnMgdXNpbmdcbiAgICJ6aXAoKSI6ICJwYWlycyA9IHppcChkLnZhbHVlcygpLCBkLmtleXMoKSkiLiAgQW5vdGhlciB3YXkgdG9cbiAgIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzICJwYWlycyA9IFsodiwgaykgZm9yIChrLCB2KSBpbiBkLml0ZW1zKCldIi5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSAiUnVudGltZUVycm9yIiBvciBmYWlsIHRvIGl0ZXJhdGUgb3ZlciBhbGwgZW50cmllcy5cblxueCBpbiBkaWN0dmlld1xuXG4gICBSZXR1cm4gIlRydWUiIGlmICp4KiBpcyBpbiB0aGUgdW5kZXJseWluZyBkaWN0aW9uYXJ5XCdzIGtleXMsIHZhbHVlc1xuICAgb3IgaXRlbXMgKGluIHRoZSBsYXR0ZXIgY2FzZSwgKngqIHNob3VsZCBiZSBhICIoa2V5LCB2YWx1ZSkiXG4gICB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCAiKGtleSwgdmFsdWUpIiBwYWlycyBhcmUgdW5pcXVlXG5hbmQgaGFzaGFibGUsIHRoZW4gdGhlIGl0ZW1zIHZpZXcgaXMgYWxzbyBzZXQtbGlrZS4gIChWYWx1ZXMgdmlld3MgYXJlXG5ub3QgdHJlYXRlZCBhcyBzZXQtbGlrZSBzaW5jZSB0aGUgZW50cmllcyBhcmUgZ2VuZXJhbGx5IG5vdCB1bmlxdWUuKVxuRm9yIHNldC1saWtlIHZpZXdzLCBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlIGFic3RyYWN0XG5iYXNlIGNsYXNzICJjb2xsZWN0aW9ucy5hYmMuU2V0IiBhcmUgYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgIj09IixcbiI8Iiwgb3IgIl4iKS5cblxuQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG5cbiAgID4+PiBkaXNoZXMgPSB7XCdlZ2dzXCc6IDIsIFwnc2F1c2FnZVwnOiAxLCBcJ2JhY29uXCc6IDEsIFwnc3BhbVwnOiA1MDB9XG4gICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbiAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcblxuICAgPj4+ICMgaXRlcmF0aW9uXG4gICA+Pj4gbiA9IDBcbiAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbiAgIC4uLiAgICAgbiArPSB2YWxcbiAgID4+PiBwcmludChuKVxuICAgNTA0XG5cbiAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSBvcmRlclxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhdXNhZ2VcJywgXCdzcGFtXCddXG4gICA+Pj4gbGlzdCh2YWx1ZXMpXG4gICBbMiwgMSwgMSwgNTAwXVxuXG4gICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ2VnZ3NcJ11cbiAgID4+PiBkZWwgZGlzaGVzW1wnc2F1c2FnZVwnXVxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ3NwYW1cJywgXCdiYWNvblwnXVxuXG4gICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuICAgPj4+IGtleXMgJiB7XCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYWxhZFwnfVxuICAge1wnYmFjb25cJ31cbiAgID4+PiBrZXlzIF4ge1wnc2F1c2FnZVwnLCBcJ2p1aWNlXCd9XG4gICB7XCdqdWljZVwnLCBcJ3NhdXNhZ2VcJywgXCdiYWNvblwnLCBcJ3NwYW1cJ31cbicsCi0gJ3R5cGVzbWV0aG9kcyc6IHUnXG5NZXRob2RzXG4qKioqKioqXG5cbk1ldGhvZHMgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdXNpbmcgdGhlIGF0dHJpYnV0ZSBub3RhdGlvbi5cblRoZXJlIGFyZSB0d28gZmxhdm9yczogYnVpbHQtaW4gbWV0aG9kcyAoc3VjaCBhcyAiYXBwZW5kKCkiIG9uIGxpc3RzKVxuYW5kIGNsYXNzIGluc3RhbmNlIG1ldGhvZHMuICBCdWlsdC1pbiBtZXRob2RzIGFyZSBkZXNjcmliZWQgd2l0aCB0aGVcbnR5cGVzIHRoYXQgc3VwcG9ydCB0aGVtLlxuXG5JZiB5b3UgYWNjZXNzIGEgbWV0aG9kIChhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSBjbGFzcyBuYW1lc3BhY2UpXG50aHJvdWdoIGFuIGluc3RhbmNlLCB5b3UgZ2V0IGEgc3BlY2lhbCBvYmplY3Q6IGEgKmJvdW5kIG1ldGhvZCogKGFsc29cbmNhbGxlZCAqaW5zdGFuY2UgbWV0aG9kKikgb2JqZWN0LiBXaGVuIGNhbGxlZCwgaXQgd2lsbCBhZGQgdGhlICJzZWxmIlxuYXJndW1lbnQgdG8gdGhlIGFyZ3VtZW50IGxpc3QuICBCb3VuZCBtZXRob2RzIGhhdmUgdHdvIHNwZWNpYWwgcmVhZC1cbm9ubHkgYXR0cmlidXRlczogIm0uX19zZWxmX18iIGlzIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGhvZFxub3BlcmF0ZXMsIGFuZCAibS5fX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGluZyB0aGUgbWV0aG9kLlxuQ2FsbGluZyAibShhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIiBpcyBjb21wbGV0ZWx5IGVxdWl2YWxlbnQgdG9cbmNhbGxpbmcgIm0uX19mdW5jX18obS5fX3NlbGZfXywgYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIuXG5cbkxpa2UgZnVuY3Rpb24gb2JqZWN0cywgYm91bmQgbWV0aG9kIG9iamVjdHMgc3VwcG9ydCBnZXR0aW5nIGFyYml0cmFyeVxuYXR0cmlidXRlcy4gIEhvd2V2ZXIsIHNpbmNlIG1ldGhvZCBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSBzdG9yZWQgb25cbnRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdCAoIm1ldGguX19mdW5jX18iKSwgc2V0dGluZyBtZXRob2RcbmF0dHJpYnV0ZXMgb24gYm91bmQgbWV0aG9kcyBpcyBkaXNhbGxvd2VkLiAgQXR0ZW1wdGluZyB0byBzZXQgYW5cbmF0dHJpYnV0ZSBvbiBhIG1ldGhvZCByZXN1bHRzIGluIGFuICJBdHRyaWJ1dGVFcnJvciIgYmVpbmcgcmFpc2VkLiAgSW5cbm9yZGVyIHRvIHNldCBhIG1ldGhvZCBhdHRyaWJ1dGUsIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IGl0IG9uIHRoZVxudW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3Q6XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOlxuICAgLi4uICAgICAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMubWV0aG9kLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJyAgIyBjYW5cJ3Qgc2V0IG9uIHRoZSBtZXRob2RcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIEF0dHJpYnV0ZUVycm9yOiBcJ21ldGhvZFwnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlIFwnd2hvYW1pXCdcbiAgID4+PiBjLm1ldGhvZC5fX2Z1bmNfXy53aG9hbWkgPSBcJ215IG5hbWUgaXMgbWV0aG9kXCdcbiAgID4+PiBjLm1ldGhvZC53aG9hbWlcbiAgIFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuXG5TZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICd0eXBlc21vZHVsZXMnOiB1J1xuTW9kdWxlc1xuKioqKioqKlxuXG5UaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgYWNjZXNzOiAibS5uYW1lIixcbndoZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkIGluICptKlwnc1xuc3ltYm9sIHRhYmxlLiBNb2R1bGUgYXR0cmlidXRlcyBjYW4gYmUgYXNzaWduZWQgdG8uICAoTm90ZSB0aGF0IHRoZVxuImltcG9ydCIgc3RhdGVtZW50IGlzIG5vdCwgc3RyaWN0bHkgc3BlYWtpbmcsIGFuIG9wZXJhdGlvbiBvbiBhIG1vZHVsZVxub2JqZWN0OyAiaW1wb3J0IGZvbyIgZG9lcyBub3QgcmVxdWlyZSBhIG1vZHVsZSBvYmplY3QgbmFtZWQgKmZvbyogdG9cbmV4aXN0LCByYXRoZXIgaXQgcmVxdWlyZXMgYW4gKGV4dGVybmFsKSAqZGVmaW5pdGlvbiogZm9yIGEgbW9kdWxlXG5uYW1lZCAqZm9vKiBzb21ld2hlcmUuKVxuXG5BIHNwZWNpYWwgYXR0cmlidXRlIG9mIGV2ZXJ5IG1vZHVsZSBpcyAiX19kaWN0X18iLiBUaGlzIGlzIHRoZVxuZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBtb2R1bGVcJ3Mgc3ltYm9sIHRhYmxlLiBNb2RpZnlpbmcgdGhpc1xuZGljdGlvbmFyeSB3aWxsIGFjdHVhbGx5IGNoYW5nZSB0aGUgbW9kdWxlXCdzIHN5bWJvbCB0YWJsZSwgYnV0IGRpcmVjdFxuYXNzaWdubWVudCB0byB0aGUgIl9fZGljdF9fIiBhdHRyaWJ1dGUgaXMgbm90IHBvc3NpYmxlICh5b3UgY2FuIHdyaXRlXG4ibS5fX2RpY3RfX1tcJ2FcJ10gPSAxIiwgd2hpY2ggZGVmaW5lcyAibS5hIiB0byBiZSAiMSIsIGJ1dCB5b3UgY2FuXCd0XG53cml0ZSAibS5fX2RpY3RfXyA9IHt9IikuICBNb2RpZnlpbmcgIl9fZGljdF9fIiBkaXJlY3RseSBpcyBub3RcbnJlY29tbWVuZGVkLlxuXG5Nb2R1bGVzIGJ1aWx0IGludG8gdGhlIGludGVycHJldGVyIGFyZSB3cml0dGVuIGxpa2UgdGhpczogIjxtb2R1bGVcblwnc3lzXCcgKGJ1aWx0LWluKT4iLiAgSWYgbG9hZGVkIGZyb20gYSBmaWxlLCB0aGV5IGFyZSB3cml0dGVuIGFzXG4iPG1vZHVsZSBcJ29zXCcgZnJvbSBcJy91c3IvbG9jYWwvbGliL3B5dGhvblguWS9vcy5weWNcJz4iLlxuJywKLSAndHlwZXNzZXEnOiB1J1xuU2VxdWVuY2UgVHlwZXMgLS0tICJsaXN0IiwgInR1cGxlIiwgInJhbmdlIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZVxub2JqZWN0cy4gQWRkaXRpb25hbCBzZXF1ZW5jZSB0eXBlcyB0YWlsb3JlZCBmb3IgcHJvY2Vzc2luZyBvZiAqYmluYXJ5XG5kYXRhKiBhbmQgKnRleHQgc3RyaW5ncyogYXJlIGRlc2NyaWJlZCBpbiBkZWRpY2F0ZWQgc2VjdGlvbnMuXG5cblxuQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIHN1cHBvcnRlZCBieSBtb3N0IHNlcXVlbmNlXG50eXBlcywgYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSAiY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlIiBBQkNcbmlzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9uc1xub24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHkuXG5JbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAqaSosXG4qaiogYW5kICprKiBhcmUgaW50ZWdlcnMgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55XG50eXBlIGFuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG5cblRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGVcbmNvbXBhcmlzb24gb3BlcmF0aW9ucy4gVGhlICIrIiAoY29uY2F0ZW5hdGlvbikgYW5kICIqIiAocmVwZXRpdGlvbilcbm9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZyBudW1lcmljXG5vcGVyYXRpb25zLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rXG58ICJ4IGluIHMiICAgICAgICAgICAgICAgICAgIHwgIlRydWUiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIkZhbHNlIiAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJ4IG5vdCBpbiBzIiAgICAgICAgICAgICAgIHwgIkZhbHNlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIlRydWUiICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzICsgdCIgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogfCAoNikoNykgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicyAqIG4iIG9yICJuICogcyIgICAgICAgICB8IGVxdWl2YWxlbnQgdG8gYWRkaW5nICpzKiB0byAgICAgIHwgKDIpKDcpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRzZWxmICpuKiB0aW1lcyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAic1tpXSIgICAgICAgICAgICAgICAgICAgICB8ICppKnRoIGl0ZW0gb2YgKnMqLCBvcmlnaW4gMCAgICAgIHwgKDMpICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg0KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJsZW4ocykiICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAibWluKHMpIiAgICAgICAgICAgICAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgIm1heChzKSIgICAgICAgICAgICAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzLmluZGV4KHhbLCBpWywgal1dKSIgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgfCAoOCkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqIChhdCBvciBhZnRlciBpbmRleCAgICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICppKiBhbmQgYmVmb3JlIGluZGV4ICpqKikgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMuY291bnQoeCkiICAgICAgICAgICAgICAgfCB0b3RhbCBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcblxuU2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhcixcbnR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZ1xuY29ycmVzcG9uZGluZyBlbGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5XG5lbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxudHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUgKkNvbXBhcmlzb25zKiBpblxudGhlIGxhbmd1YWdlIHJlZmVyZW5jZS4pXG5cbk5vdGVzOlxuXG4xLiBXaGlsZSB0aGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciBzaW1wbGVcbiAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCBzZXF1ZW5jZXNcbiAgIChzdWNoIGFzICJzdHIiLCAiYnl0ZXMiIGFuZCAiYnl0ZWFycmF5IikgYWxzbyB1c2UgdGhlbSBmb3JcbiAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG5cbiAgICAgID4+PiAiZ2ciIGluICJlZ2dzIlxuICAgICAgVHJ1ZVxuXG4yLiBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiAiMCIgYXJlIHRyZWF0ZWQgYXMgIjAiICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgdGhhdCBpdGVtcyBpbiB0aGVcbiAgIHNlcXVlbmNlICpzKiBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZSB0aW1lcy5cbiAgIFRoaXMgb2Z0ZW4gaGF1bnRzIG5ldyBQeXRob24gcHJvZ3JhbW1lcnM7IGNvbnNpZGVyOlxuXG4gICAgICA+Pj4gbGlzdHMgPSBbW11dICogM1xuICAgICAgPj4+IGxpc3RzXG4gICAgICBbW10sIFtdLCBbXV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzNdLCBbM11dXG5cbiAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgIltbXV0iIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nXG4gICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgIltbXV0gKiAzIiBhcmUgcmVmZXJlbmNlc1xuICAgdG8gdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4gICAibGlzdHMiIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZlxuICAgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OlxuXG4gICAgICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldXG4gICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICAgICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4gICAgICA+Pj4gbGlzdHNbMl0uYXBwZW5kKDcpXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbM10sIFs1XSwgWzddXVxuXG4gICBGdXJ0aGVyIGV4cGxhbmF0aW9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgRkFRIGVudHJ5ICpIb3cgZG8gSSBjcmVhdGVcbiAgIGEgbXVsdGlkaW1lbnNpb25hbCBsaXN0PyouXG5cbjMuIElmICppKiBvciAqaiogaXMgbmVnYXRpdmUsIHRoZSBpbmRleCBpcyByZWxhdGl2ZSB0byB0aGUgZW5kIG9mXG4gICB0aGUgc3RyaW5nOiAibGVuKHMpICsgaSIgb3IgImxlbihzKSArIGoiIGlzIHN1YnN0aXR1dGVkLiAgQnV0IG5vdGVcbiAgIHRoYXQgIi0wIiBpcyBzdGlsbCAiMCIuXG5cbjQuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzIGRlZmluZWQgYXMgdGhlIHNlcXVlbmNlIG9mXG4gICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgImkgPD0gayA8IGoiLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXMgb21pdHRlZCBvciAiTm9uZSIsXG4gICB1c2UgIjAiLiAgSWYgKmoqIGlzIG9taXR0ZWQgb3IgIk5vbmUiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXNcbiAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpcyBlbXB0eS5cblxuNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkIGFzIHRoZVxuICAgc2VxdWVuY2Ugb2YgaXRlbXMgd2l0aCBpbmRleCAgInggPSBpICsgbiprIiBzdWNoIHRoYXQgIjAgPD0gbiA8XG4gICAoai1pKS9rIi4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgImkiLCAiaStrIiwgImkrMiprIixcbiAgICJpKzMqayIgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXQgbmV2ZXJcbiAgIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZVxuICAgImxlbihzKSIuICBJZiAqaSogb3IgKmoqIGFyZSBvbWl0dGVkIG9yICJOb25lIiwgdGhleSBiZWNvbWUgImVuZCJcbiAgIHZhbHVlcyAod2hpY2ggZW5kIGRlcGVuZHMgb24gdGhlIHNpZ24gb2YgKmsqKS4gIE5vdGUsICprKiBjYW5ub3QgYmVcbiAgIHplcm8uIElmICprKiBpcyAiTm9uZSIsIGl0IGlzIHRyZWF0ZWQgbGlrZSAiMSIuXG5cbjYuIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ld1xuICAgb2JqZWN0LiBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZFxuICAgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbFxuICAgc2VxdWVuY2UgbGVuZ3RoLiBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG9cbiAgIG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgInN0ciIgb2JqZWN0cywgeW91IGNhbiBidWlsZCBhIGxpc3QgYW5kIHVzZVxuICAgICAic3RyLmpvaW4oKSIgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGFuICJpby5TdHJpbmdJTyJcbiAgICAgaW5zdGFuY2UgYW5kIHJldHJpZXZlIGl0cyB2YWx1ZSB3aGVuIGNvbXBsZXRlXG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyAiYnl0ZXMiIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZVxuICAgICAiYnl0ZXMuam9pbigpIiBvciAiaW8uQnl0ZXNJTyIsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2VcbiAgICAgY29uY2F0ZW5hdGlvbiB3aXRoIGEgImJ5dGVhcnJheSIgb2JqZWN0LiAgImJ5dGVhcnJheSIgb2JqZWN0cyBhcmVcbiAgICAgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtXG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyAidHVwbGUiIG9iamVjdHMsIGV4dGVuZCBhICJsaXN0IiBpbnN0ZWFkXG5cbiAgICogZm9yIG90aGVyIHR5cGVzLCBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgY2xhc3MgZG9jdW1lbnRhdGlvblxuXG43LiBTb21lIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzICJyYW5nZSIpIG9ubHkgc3VwcG9ydCBpdGVtXG4gICBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb25cJ3Qgc3VwcG9ydFxuICAgc2VxdWVuY2UgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuXG44LiAiaW5kZXgiIHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlblxuICAgc3VwcG9ydGVkLCB0aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGluZGV4IG1ldGhvZCBhbGxvd1xuICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgdGhlXG4gICBleHRyYSBhcmd1bWVudHMgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHVzaW5nICJzW2k6al0uaW5kZXgoeCkiLFxuICAgb25seSB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4IGJlaW5nXG4gICByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCBvZiB0aGVcbiAgIHNsaWNlLlxuXG5cbkltbXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBnZW5lcmFsbHkgaW1wbGVtZW50XG50aGF0IGlzIG5vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgc3VwcG9ydCBmb3JcbnRoZSAiaGFzaCgpIiBidWlsdC1pbi5cblxuVGhpcyBzdXBwb3J0IGFsbG93cyBpbW11dGFibGUgc2VxdWVuY2VzLCBzdWNoIGFzICJ0dXBsZSIgaW5zdGFuY2VzLCB0b1xuYmUgdXNlZCBhcyAiZGljdCIga2V5cyBhbmQgc3RvcmVkIGluICJzZXQiIGFuZCAiZnJvemVuc2V0IiBpbnN0YW5jZXMuXG5cbkF0dGVtcHRpbmcgdG8gaGFzaCBhbiBpbW11dGFibGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB1bmhhc2hhYmxlXG52YWx1ZXMgd2lsbCByZXN1bHQgaW4gIlR5cGVFcnJvciIuXG5cblxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiIG9ubHlcbmFjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4IDw9IDI1NSIpLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSBsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9IFt4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsIHNbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKGZvciB0aGUgbW9zdCBwYXJ0IHRoZSBzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldID0gdCIpICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyBjb250ZW50cyAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiB0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9IFt4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0geCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbiAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2Vyc1xuICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZFxuICAgc2VxdWVuY2UuXG5cbjUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuXG42LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCBpbXBsZW1lbnRpbmdcbiAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyIHRoZSBzZXF1ZW5jZS5cbiAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZVxuICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciAqQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMqLlxuXG5cbkxpc3RzXG49PT09PVxuXG5MaXN0cyBhcmUgbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mXG5ob21vZ2VuZW91cyBpdGVtcyAod2hlcmUgdGhlIHByZWNpc2UgZGVncmVlIG9mIHNpbWlsYXJpdHkgd2lsbCB2YXJ5IGJ5XG5hcHBsaWNhdGlvbikuXG5cbmNsYXNzIGNsYXNzIGxpc3QoW2l0ZXJhYmxlXSlcblxuICAgTGlzdHMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIHNldmVyYWwgd2F5czpcblxuICAgKiBVc2luZyBhIHBhaXIgb2Ygc3F1YXJlIGJyYWNrZXRzIHRvIGRlbm90ZSB0aGUgZW1wdHkgbGlzdDogIltdIlxuXG4gICAqIFVzaW5nIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogIlthXSIsXG4gICAgICJbYSwgYiwgY10iXG5cbiAgICogVXNpbmcgYSBsaXN0IGNvbXByZWhlbnNpb246ICJbeCBmb3IgeCBpbiBpdGVyYWJsZV0iXG5cbiAgICogVXNpbmcgdGhlIHR5cGUgY29uc3RydWN0b3I6ICJsaXN0KCkiIG9yICJsaXN0KGl0ZXJhYmxlKSJcblxuICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIGxpc3Qgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiB0aGVcbiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKlwncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhXG4gICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yXG4gICBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSBsaXN0LCBhIGNvcHkgaXMgbWFkZSBhbmRcbiAgIHJldHVybmVkLCBzaW1pbGFyIHRvICJpdGVyYWJsZVs6XSIuIEZvciBleGFtcGxlLCAibGlzdChcJ2FiY1wnKSJcbiAgIHJldHVybnMgIltcJ2FcJywgXCdiXCcsIFwnY1wnXSIgYW5kICJsaXN0KCAoMSwgMiwgMykgKSIgcmV0dXJucyAiWzEsIDIsXG4gICAzXSIuIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eVxuICAgbGlzdCwgIltdIi5cblxuICAgTWFueSBvdGhlciBvcGVyYXRpb25zIGFsc28gcHJvZHVjZSBsaXN0cywgaW5jbHVkaW5nIHRoZSAic29ydGVkKCkiXG4gICBidWlsdC1pbi5cblxuICAgTGlzdHMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogYW5kICptdXRhYmxlKiBzZXF1ZW5jZVxuICAgb3BlcmF0aW9ucy4gTGlzdHMgYWxzbyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2Q6XG5cbiAgIHNvcnQoKiwga2V5PU5vbmUsIHJldmVyc2U9Tm9uZSlcblxuICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgIjwiIGNvbXBhcmlzb25zXG4gICAgICBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmIGFueSBjb21wYXJpc29uXG4gICAgICBvcGVyYXRpb25zIGZhaWwsIHRoZSBlbnRpcmUgc29ydCBvcGVyYXRpb24gd2lsbCBmYWlsIChhbmQgdGhlXG4gICAgICBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQgaW4gYSBwYXJ0aWFsbHkgbW9kaWZpZWQgc3RhdGUpLlxuXG4gICAgICAic29ydCgpIiBhY2NlcHRzIHR3byBhcmd1bWVudHMgdGhhdCBjYW4gb25seSBiZSBwYXNzZWQgYnlcbiAgICAgIGtleXdvcmQgKCprZXl3b3JkLW9ubHkgYXJndW1lbnRzKik6XG5cbiAgICAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG9cbiAgICAgIGV4dHJhY3QgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50IChmb3IgZXhhbXBsZSxcbiAgICAgICJrZXk9c3RyLmxvd2VyIikuIFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byBlYWNoIGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgIGlzIGNhbGN1bGF0ZWQgb25jZSBhbmQgdGhlbiB1c2VkIGZvciB0aGUgZW50aXJlIHNvcnRpbmcgcHJvY2Vzcy5cbiAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mICJOb25lIiBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlIHNvcnRlZFxuICAgICAgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlIGtleSB2YWx1ZS5cblxuICAgICAgVGhlICJmdW5jdG9vbHMuY21wX3RvX2tleSgpIiB1dGlsaXR5IGlzIGF2YWlsYWJsZSB0byBjb252ZXJ0IGFcbiAgICAgIDIueCBzdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLlxuXG4gICAgICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvICJUcnVlIiwgdGhlbiB0aGUgbGlzdFxuICAgICAgZWxlbWVudHMgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC5cblxuICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlXG4gICAgICB3aGVuIHNvcnRpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0IG9wZXJhdGVzXG4gICAgICBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBzb3J0ZWQgc2VxdWVuY2UgKHVzZVxuICAgICAgInNvcnRlZCgpIiB0byBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgaW5zdGFuY2UpLlxuXG4gICAgICBUaGUgInNvcnQoKSIgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0IGlzXG4gICAgICBzdGFibGUgaWYgaXQgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciBvZlxuICAgICAgZWxlbWVudHMgdGhhdCBjb21wYXJlIGVxdWFsIC0tLSB0aGlzIGlzIGhlbHBmdWwgZm9yIHNvcnRpbmcgaW5cbiAgICAgIG11bHRpcGxlIHBhc3NlcyAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgZGVwYXJ0bWVudCwgdGhlbiBieSBzYWxhcnlcbiAgICAgIGdyYWRlKS5cblxuICAgICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLFxuICAgICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgbGlzdCBpc1xuICAgICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0IGFwcGVhclxuICAgICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyAiVmFsdWVFcnJvciIgaWYgaXQgY2FuIGRldGVjdFxuICAgICAgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG5cblxuVHVwbGVzXG49PT09PT1cblxuVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZlxuaGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGUgImVudW1lcmF0ZSgpIlxuYnVpbHQtaW4pLiBUdXBsZXMgYXJlIGFsc28gdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW4gaW1tdXRhYmxlIHNlcXVlbmNlXG5vZiBob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZyBzdG9yYWdlIGluIGEgInNldCIgb3JcbiJkaWN0IiBpbnN0YW5jZSkuXG5cbmNsYXNzIGNsYXNzIHR1cGxlKFtpdGVyYWJsZV0pXG5cbiAgIFR1cGxlcyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gYSBudW1iZXIgb2Ygd2F5czpcblxuICAgKiBVc2luZyBhIHBhaXIgb2YgcGFyZW50aGVzZXMgdG8gZGVub3RlIHRoZSBlbXB0eSB0dXBsZTogIigpIlxuXG4gICAqIFVzaW5nIGEgdHJhaWxpbmcgY29tbWEgZm9yIGEgc2luZ2xldG9uIHR1cGxlOiAiYSwiIG9yICIoYSwpIlxuXG4gICAqIFNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICJhLCBiLCBjIiBvciAiKGEsIGIsIGMpIlxuXG4gICAqIFVzaW5nIHRoZSAidHVwbGUoKSIgYnVpbHQtaW46ICJ0dXBsZSgpIiBvciAidHVwbGUoaXRlcmFibGUpIlxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgdHVwbGUgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiB0aGVcbiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKlwncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhXG4gICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yXG4gICBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSB0dXBsZSwgaXQgaXMgcmV0dXJuZWRcbiAgIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsICJ0dXBsZShcJ2FiY1wnKSIgcmV0dXJucyAiKFwnYVwnLCBcJ2JcJywgXCdjXCcpIlxuICAgYW5kICJ0dXBsZSggWzEsIDIsIDNdICkiIHJldHVybnMgIigxLCAyLCAzKSIuIElmIG5vIGFyZ3VtZW50IGlzXG4gICBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdHVwbGUsICIoKSIuXG5cbiAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90IHRoZVxuICAgcGFyZW50aGVzZXMuIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgZW1wdHlcbiAgIHR1cGxlIGNhc2UsIG9yIHdoZW4gdGhleSBhcmUgbmVlZGVkIHRvIGF2b2lkIHN5bnRhY3RpYyBhbWJpZ3VpdHkuXG4gICBGb3IgZXhhbXBsZSwgImYoYSwgYiwgYykiIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlIGFyZ3VtZW50cyxcbiAgIHdoaWxlICJmKChhLCBiLCBjKSkiIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgMy10dXBsZSBhcyB0aGUgc29sZVxuICAgYXJndW1lbnQuXG5cbiAgIFR1cGxlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLlxuXG5Gb3IgaGV0ZXJvZ2VuZW91cyBjb2xsZWN0aW9ucyBvZiBkYXRhIHdoZXJlIGFjY2VzcyBieSBuYW1lIGlzIGNsZWFyZXJcbnRoYW4gYWNjZXNzIGJ5IGluZGV4LCAiY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIiBtYXkgYmUgYSBtb3JlXG5hcHByb3ByaWF0ZSBjaG9pY2UgdGhhbiBhIHNpbXBsZSB0dXBsZSBvYmplY3QuXG5cblxuUmFuZ2VzXG49PT09PT1cblxuVGhlICJyYW5nZSIgdHlwZSByZXByZXNlbnRzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBudW1iZXJzIGFuZCBpc1xuY29tbW9ubHkgdXNlZCBmb3IgbG9vcGluZyBhIHNwZWNpZmljIG51bWJlciBvZiB0aW1lcyBpbiAiZm9yIiBsb29wcy5cblxuY2xhc3MgY2xhc3MgcmFuZ2Uoc3RvcClcbmNsYXNzIGNsYXNzIHJhbmdlKHN0YXJ0LCBzdG9wWywgc3RlcF0pXG5cbiAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgKGVpdGhlclxuICAgYnVpbHQtaW4gImludCIgb3IgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlICJfX2luZGV4X18iXG4gICBzcGVjaWFsIG1ldGhvZCkuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvXG4gICAiMSIuIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICIwIi4gSWZcbiAgICpzdGVwKiBpcyB6ZXJvLCAiVmFsdWVFcnJvciIgaXMgcmFpc2VkLlxuXG4gICBGb3IgYSBwb3NpdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiBhIHJhbmdlICJyIiBhcmUgZGV0ZXJtaW5lZFxuICAgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIgd2hlcmUgImkgPj0gMCIgYW5kICJyW2ldIDxcbiAgIHN0b3AiLlxuXG4gICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4gICBkZXRlcm1pbmVkIGJ5IHRoZSBmb3JtdWxhICJyW2ldID0gc3RhcnQgKyBzdGVwKmkiLCBidXQgdGhlXG4gICBjb25zdHJhaW50cyBhcmUgImkgPj0gMCIgYW5kICJyW2ldID4gc3RvcCIuXG5cbiAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgInJbMF0iIGRvZXMgbm90IG1lZXQgdGhlIHZhbHVlXG4gICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgYXJlXG4gICBpbnRlcnByZXRlZCBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGRldGVybWluZWQgYnlcbiAgIHRoZSBwb3NpdGl2ZSBpbmRpY2VzLlxuXG4gICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhcmVcbiAgIHBlcm1pdHRlZCBidXQgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyAibGVuKCkiKSBtYXkgcmFpc2VcbiAgICJPdmVyZmxvd0Vycm9yIi5cblxuICAgUmFuZ2UgZXhhbXBsZXM6XG5cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSlcbiAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKVxuICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKVxuICAgICAgWzAsIDMsIDYsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbiAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpXG4gICAgICBbXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpXG4gICAgICBbXVxuXG4gICBSYW5nZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucyBleGNlcHRcbiAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlIG9iamVjdHNcbiAgIGNhbiBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiBhbmRcbiAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCBwYXR0ZXJuKS5cblxuICAgc3RhcnRcblxuICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RhcnQqIHBhcmFtZXRlciAob3IgIjAiIGlmIHRoZSBwYXJhbWV0ZXIgd2FzXG4gICAgICBub3Qgc3VwcGxpZWQpXG5cbiAgIHN0b3BcblxuICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RvcCogcGFyYW1ldGVyXG5cbiAgIHN0ZXBcblxuICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RlcCogcGFyYW1ldGVyIChvciAiMSIgaWYgdGhlIHBhcmFtZXRlciB3YXNcbiAgICAgIG5vdCBzdXBwbGllZClcblxuVGhlIGFkdmFudGFnZSBvZiB0aGUgInJhbmdlIiB0eXBlIG92ZXIgYSByZWd1bGFyICJsaXN0IiBvciAidHVwbGUiIGlzXG50aGF0IGEgInJhbmdlIiBvYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZSAoc21hbGwpIGFtb3VudCBvZlxubWVtb3J5LCBubyBtYXR0ZXIgdGhlIHNpemUgb2YgdGhlIHJhbmdlIGl0IHJlcHJlc2VudHMgKGFzIGl0IG9ubHlcbnN0b3JlcyB0aGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgdmFsdWVzLCBjYWxjdWxhdGluZyBpbmRpdmlkdWFsXG5pdGVtcyBhbmQgc3VicmFuZ2VzIGFzIG5lZWRlZCkuXG5cblJhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSAiY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlIiBBQkMsIGFuZFxucHJvdmlkZSBmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCxcbnNsaWNpbmcgYW5kIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSAqU2VxdWVuY2UgVHlwZXMgLS0tXG5saXN0LCB0dXBsZSwgcmFuZ2UqKTpcblxuPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbj4+PiByXG5yYW5nZSgwLCAyMCwgMilcbj4+PiAxMSBpbiByXG5GYWxzZVxuPj4+IDEwIGluIHJcblRydWVcbj4+PiByLmluZGV4KDEwKVxuNVxuPj4+IHJbNV1cbjEwXG4+Pj4gcls6NV1cbnJhbmdlKDAsIDEwLCAyKVxuPj4+IHJbLTFdXG4xOFxuXG5UZXN0aW5nIHJhbmdlIG9iamVjdHMgZm9yIGVxdWFsaXR5IHdpdGggIj09IiBhbmQgIiE9IiBjb21wYXJlcyB0aGVtIGFzXG5zZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZiB0aGV5XG5yZXByZXNlbnQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzLiAgKE5vdGUgdGhhdCB0d28gcmFuZ2Ugb2JqZWN0c1xudGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50ICJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiXG5hdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSAicmFuZ2UoMCkgPT0gcmFuZ2UoMiwgMSwgMykiIG9yICJyYW5nZSgwLCAzLFxuMikgPT0gcmFuZ2UoMCwgNCwgMikiLilcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogSW1wbGVtZW50IHRoZSBTZXF1ZW5jZSBBQkMuIFN1cHBvcnQgc2xpY2luZ1xuYW5kIG5lZ2F0aXZlIGluZGljZXMuIFRlc3QgImludCIgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiBjb25zdGFudFxudGltZSBpbnN0ZWFkIG9mIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBpdGVtcy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogRGVmaW5lIFwnPT1cJyBhbmQgXCchPVwnIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0c1xuYmFzZWQgb24gdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmdcbmJhc2VkIG9uIG9iamVjdCBpZGVudGl0eSkuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMuXG4nLAotICd0eXBlc3NlcS1tdXRhYmxlJzogdSdcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlICJjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlIiBBQkMgaXMgcHJvdmlkZWQgdG8gbWFrZVxuaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiBjdXN0b20gc2VxdWVuY2VcbnR5cGVzLlxuXG5JbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogaXMgYW55XG5pdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kXG52YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAiYnl0ZWFycmF5IiBvbmx5XG5hY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gIjAgPD0geCA8PSAyNTUiKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgInNbaTpqXSA9IFtdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAic1tpOmo6a10gPSB0IiAgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgInNbaTpqOmtdIiBhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSBbeF0iKSAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gInMiIChzYW1lIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgImRlbCBzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmNvcHkoKSIgICAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgInNbOl0iKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmV4dGVuZCh0KSIgb3IgInMgKz0gdCIgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChmb3IgdGhlIG1vc3QgcGFydCB0aGUgc2FtZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAic1tsZW4ocyk6bGVuKHMpXSA9IHQiKSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMgKj0gbiIgICAgICAgICAgICAgICAgICAgICAgIHwgdXBkYXRlcyAqcyogd2l0aCBpdHMgY29udGVudHMgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBlYXRlZCAqbiogdGltZXMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6aV0gPSBbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5wb3AoW2ldKSIgICAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09IHgiICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0IGJ5IGRlZmF1bHRcbiAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG5cbjMuICJyZW1vdmUiIHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlICJyZXZlcnNlKCkiIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yXG4gICBlY29ub215IG9mIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnNcbiAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgcmV2ZXJzZWRcbiAgIHNlcXVlbmNlLlxuXG41LiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGVcbiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uXCd0IHN1cHBvcnQgc2xpY2luZ1xuICAgb3BlcmF0aW9ucyAoc3VjaCBhcyAiZGljdCIgYW5kICJzZXQiKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cblxuNi4gVGhlIHZhbHVlICpuKiBpcyBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3QgaW1wbGVtZW50aW5nXG4gICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiBjbGVhciB0aGUgc2VxdWVuY2UuXG4gICBJdGVtcyBpbiB0aGUgc2VxdWVuY2UgYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgbXVsdGlwbGVcbiAgIHRpbWVzLCBhcyBleHBsYWluZWQgZm9yICJzICogbiIgdW5kZXIgKkNvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zKi5cbicsCi0gJ3VuYXJ5JzogdSdcblVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkFsbCB1bmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eTpcblxuICAgdV9leHByIDo6PSBwb3dlciB8ICItIiB1X2V4cHIgfCAiKyIgdV9leHByIHwgIn4iIHVfZXhwclxuXG5UaGUgdW5hcnkgIi0iIChtaW51cykgb3BlcmF0b3IgeWllbGRzIHRoZSBuZWdhdGlvbiBvZiBpdHMgbnVtZXJpY1xuYXJndW1lbnQuXG5cblRoZSB1bmFyeSAiKyIgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cblRoZSB1bmFyeSAifiIgKGludmVydCkgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiBpdHNcbmludGVnZXIgYXJndW1lbnQuICBUaGUgYml0d2lzZSBpbnZlcnNpb24gb2YgIngiIGlzIGRlZmluZWQgYXNcbiItKHgrMSkiLiAgSXQgb25seSBhcHBsaWVzIHRvIGludGVncmFsIG51bWJlcnMuXG5cbkluIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCBhXG4iVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKLSAnd2hpbGUnOiB1J1xuVGhlICJ3aGlsZSIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWRcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgYmFja1xudG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCi0gJ3dpdGgnOiB1J1xuVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxubWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiAqV2l0aCBTdGF0ZW1lbnRcbkNvbnRleHQgTWFuYWdlcnMqKS4gVGhpcyBhbGxvd3MgY29tbW9uICJ0cnkiLi4uImV4Y2VwdCIuLi4iZmluYWxseSJcbnVzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZCBmb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSAid2l0aCIgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuZm9sbG93czpcblxuMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICJ3aXRoX2l0ZW0iKVxuICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cblxuMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cblxuNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSAid2l0aCIgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4gICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSAid2l0aCIgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgIl9fZW50ZXJfXygpIlxuICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuICJfX2V4aXRfXygpIiB3aWxsIGFsd2F5cyBiZVxuICAgICBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgbWV0aG9kIGlzIGludm9rZWQuICBJZiBhblxuICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCB0aHJlZVxuICAgIk5vbmUiIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyByZXJhaXNlZC5cbiAgIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgYW5kXG4gICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuICAgc3RhdGVtZW50LlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgdGhlXG4gICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiBwcm9jZWVkc1xuICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cblxuV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbm11bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286ICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG4nLAotICd5aWVsZCc6IHUnXG5UaGUgInlpZWxkIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG5cbkEgInlpZWxkIiBzdGF0ZW1lbnQgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gYSAqeWllbGRcbmV4cHJlc3Npb24qLiBUaGUgeWllbGQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIG9taXQgdGhlIHBhcmVudGhlc2VzXG50aGF0IHdvdWxkIG90aGVyd2lzZSBiZSByZXF1aXJlZCBpbiB0aGUgZXF1aXZhbGVudCB5aWVsZCBleHByZXNzaW9uXG5zdGF0ZW1lbnQuIEZvciBleGFtcGxlLCB0aGUgeWllbGQgc3RhdGVtZW50c1xuXG4gICB5aWVsZCA8ZXhwcj5cbiAgIHlpZWxkIGZyb20gPGV4cHI+XG5cbmFyZSBlcXVpdmFsZW50IHRvIHRoZSB5aWVsZCBleHByZXNzaW9uIHN0YXRlbWVudHNcblxuICAgKHlpZWxkIDxleHByPilcbiAgICh5aWVsZCBmcm9tIDxleHByPilcblxuWWllbGQgZXhwcmVzc2lvbnMgYW5kIHN0YXRlbWVudHMgYXJlIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGFcbipnZW5lcmF0b3IqIGZ1bmN0aW9uLCBhbmQgYXJlIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yXG5mdW5jdGlvbi4gIFVzaW5nIHlpZWxkIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvIGNhdXNlXG50aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBub3JtYWxcbmZ1bmN0aW9uLlxuXG5Gb3IgZnVsbCBkZXRhaWxzIG9mICJ5aWVsZCIgc2VtYW50aWNzLCByZWZlciB0byB0aGUgKllpZWxkXG5leHByZXNzaW9ucyogc2VjdGlvbi5cbid9CisjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIE1vbiBTZXAgMTIgMTA6NDc6MTEgMjAxNgordG9waWNzID0geydhc3NlcnQnOiAnXG4nCisgICAgICAgICAgICdUaGUgImFzc2VydCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Fzc2VydCBzdGF0ZW1lbnRzIGFyZSBhIGNvbnZlbmllbnQgd2F5IHRvIGluc2VydCBkZWJ1Z2dpbmcgJworICAgICAgICAgICAnYXNzZXJ0aW9uc1xuJworICAgICAgICAgICAnaW50byBhIHByb2dyYW06XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGFzc2VydF9zdG10IDo6PSAiYXNzZXJ0IiBleHByZXNzaW9uIFsiLCIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIHNpbXBsZSBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24iLCBpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgICBpZiBub3QgZXhwcmVzc2lvbjogcmFpc2UgQXNzZXJ0aW9uRXJyb3JcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGV4dGVuZGVkIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbjEsIGV4cHJlc3Npb24yIiwgaXMgJworICAgICAgICAgICAnZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpZiBfX2RlYnVnX186XG4nCisgICAgICAgICAgICcgICAgICAgaWYgbm90IGV4cHJlc3Npb24xOiByYWlzZSBBc3NlcnRpb25FcnJvcihleHByZXNzaW9uMilcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlc2UgZXF1aXZhbGVuY2VzIGFzc3VtZSB0aGF0ICJfX2RlYnVnX18iIGFuZCAiQXNzZXJ0aW9uRXJyb3IiICcKKyAgICAgICAgICAgJ3JlZmVyXG4nCisgICAgICAgICAgICd0byB0aGUgYnVpbHQtaW4gdmFyaWFibGVzIHdpdGggdGhvc2UgbmFtZXMuICBJbiB0aGUgY3VycmVudFxuJworICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZSBidWlsdC1pbiB2YXJpYWJsZSAiX19kZWJ1Z19fIiBpcyAiVHJ1ZSIgdW5kZXJcbicKKyAgICAgICAgICAgJ25vcm1hbCBjaXJjdW1zdGFuY2VzLCAiRmFsc2UiIHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCAnCisgICAgICAgICAgICcoY29tbWFuZFxuJworICAgICAgICAgICAnbGluZSBvcHRpb24gLU8pLiAgVGhlIGN1cnJlbnQgY29kZSBnZW5lcmF0b3IgZW1pdHMgbm8gY29kZSBmb3IgYW5cbicKKyAgICAgICAgICAgJ2Fzc2VydCBzdGF0ZW1lbnQgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkIGF0IGNvbXBpbGUgdGltZS4gICcKKyAgICAgICAgICAgJ05vdGVcbicKKyAgICAgICAgICAgJ3RoYXQgaXQgaXMgdW5uZWNlc3NhcnkgdG8gaW5jbHVkZSB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSAnCisgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICd0aGF0IGZhaWxlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZTsgaXQgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgcGFydCBvZiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3N0YWNrIHRyYWNlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBc3NpZ25tZW50cyB0byAiX19kZWJ1Z19fIiBhcmUgaWxsZWdhbC4gIFRoZSB2YWx1ZSBmb3IgdGhlICcKKyAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICd2YXJpYWJsZSBpcyBkZXRlcm1pbmVkIHdoZW4gdGhlIGludGVycHJldGVyIHN0YXJ0cy5cbicsCisgJ2Fzc2lnbm1lbnQnOiAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyBhbmQgJworICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAnbW9kaWZ5IGF0dHJpYnV0ZXMgb3IgaXRlbXMgb2YgbXV0YWJsZSBvYmplY3RzOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChzdGFycmVkX2V4cHJlc3Npb24gJworICAgICAgICAgICAgICAgJ3wgeWllbGRfZXhwcmVzc2lvbilcbicKKyAgICAgICAgICAgICAgICcgICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4nCisgICAgICAgICAgICAgICAnICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICIoIiBbdGFyZ2V0X2xpc3RdICIpIlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCAiWyIgW3RhcmdldF9saXN0XSAiXSJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgYXR0cmlidXRlcmVmXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBzbGljaW5nXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICIqIiB0YXJnZXRcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcoU2VlIHNlY3Rpb24gUHJpbWFyaWVzIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvciAnCisgICAgICAgICAgICAgICAnKmF0dHJpYnV0ZXJlZiosXG4nCisgICAgICAgICAgICAgICAnKnN1YnNjcmlwdGlvbiosIGFuZCAqc2xpY2luZyouKVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0ICcKKyAgICAgICAgICAgICAgICcocmVtZW1iZXIgdGhhdFxuJworICAgICAgICAgICAgICAgJ3RoaXMgY2FuIGJlIGEgc2luZ2xlIGV4cHJlc3Npb24gb3IgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgdGhlICcKKyAgICAgICAgICAgICAgICdsYXR0ZXJcbicKKyAgICAgICAgICAgICAgICd5aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gJworICAgICAgICAgICAgICAgJ2VhY2ggb2ZcbicKKyAgICAgICAgICAgICAgICd0aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBpcyBkZWZpbmVkIHJlY3Vyc2l2ZWx5IGRlcGVuZGluZyBvbiB0aGUgZm9ybSBvZiB0aGUgJworICAgICAgICAgICAgICAgJ3RhcmdldFxuJworICAgICAgICAgICAgICAgJyhsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbicKKyAgICAgICAgICAgICAgICd1bHRpbWF0ZWx5IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQgYW5kIGRlY2lkZSBhYm91dCBpdHMgJworICAgICAgICAgICAgICAgJ3ZhbGlkaXR5LCBhbmRcbicKKyAgICAgICAgICAgICAgICdtYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSAnCisgICAgICAgICAgICAgICAncnVsZXNcbicKKyAgICAgICAgICAgICAgICdvYnNlcnZlZCBieSB2YXJpb3VzIHR5cGVzIGFuZCB0aGUgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGdpdmVuICcKKyAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2YgdGhlIG9iamVjdCB0eXBlcyAoc2VlIHNlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGVcbicKKyAgICAgICAgICAgICAgICdoaWVyYXJjaHkpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgdGFyZ2V0IGxpc3QsIG9wdGlvbmFsbHkgZW5jbG9zZWQgJworICAgICAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICAgICAncGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzICcKKyAgICAgICAgICAgICAgICdmb2xsb3dzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGVtcHR5OiBUaGUgb2JqZWN0IG11c3QgYWxzbyBiZSBhbiAnCisgICAgICAgICAgICAgICAnZW1wdHlcbicKKyAgICAgICAgICAgICAgICcgIGl0ZXJhYmxlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldCBpbiBwYXJlbnRoZXNlczogVGhlICcKKyAgICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAgICcgIGlzIGFzc2lnbmVkIHRvIHRoYXQgdGFyZ2V0LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0cywgb3IgJworICAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgICcgIHNpbmdsZSB0YXJnZXQgaW4gc3F1YXJlIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gJworICAgICAgICAgICAgICAgJ2l0ZXJhYmxlXG4nCisgICAgICAgICAgICAgICAnICB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgJworICAgICAgICAgICAgICAgJ3RhcmdldFxuJworICAgICAgICAgICAgICAgJyAgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBJZiB0aGUgdGFyZ2V0IGxpc3QgY29udGFpbnMgb25lIHRhcmdldCBwcmVmaXhlZCB3aXRoIGFuXG4nCisgICAgICAgICAgICAgICAnICAgIGFzdGVyaXNrLCBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgJworICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAnICAgIGl0ZXJhYmxlIHdpdGggYXQgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyAnCisgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICAgIHRhcmdldCBsaXN0LCBtaW51cyBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIGl0ZXJhYmxlICcKKyAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICcgICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIHRhcmdldHMgYmVmb3JlIHRoZSAnCisgICAgICAgICAgICAgICAnc3RhcnJlZFxuJworICAgICAgICAgICAgICAgJyAgICB0YXJnZXQuICBUaGUgZmluYWwgaXRlbXMgb2YgdGhlIGl0ZXJhYmxlIGFyZSBhc3NpZ25lZCB0byAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICAgIHRhcmdldHMgYWZ0ZXIgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgJworICAgICAgICAgICAgICAgJ2l0ZW1zXG4nCisgICAgICAgICAgICAgICAnICAgIGluIHRoZSBpdGVyYWJsZSBpcyB0aGVuIGFzc2lnbmVkIHRvIHRoZSBzdGFycmVkIHRhcmdldCAnCisgICAgICAgICAgICAgICAnKHRoZSBsaXN0XG4nCisgICAgICAgICAgICAgICAnICAgIGNhbiBiZSBlbXB0eSkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIEVsc2U6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciAnCisgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICcgICAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICdpdGVtcyBhcmVcbicKKyAgICAgICAgICAgICAgICcgICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICAgJ3RhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5ICcKKyAgICAgICAgICAgICAgICdkZWZpbmVkIGFzXG4nCisgICAgICAgICAgICAgICAnZm9sbG93cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYW4gaWRlbnRpZmllciAobmFtZSk6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgImdsb2JhbCIgb3IgIm5vbmxvY2FsIiAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICAnICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgJworICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgJyAgICBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogT3RoZXJ3aXNlOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSBnbG9iYWxcbicKKyAgICAgICAgICAgICAgICcgICAgbmFtZXNwYWNlIG9yIHRoZSBvdXRlciBuYW1lc3BhY2UgZGV0ZXJtaW5lZCBieSAnCisgICAgICAgICAgICAgICAnIm5vbmxvY2FsIixcbicKKyAgICAgICAgICAgICAgICcgICAgcmVzcGVjdGl2ZWx5LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgVGhlIG5hbWUgaXMgcmVib3VuZCBpZiBpdCB3YXMgYWxyZWFkeSBib3VuZC4gIFRoaXMgbWF5IGNhdXNlICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lICcKKyAgICAgICAgICAgICAgICd0byByZWFjaFxuJworICAgICAgICAgICAgICAgJyAgemVybywgY2F1c2luZyB0aGUgb2JqZWN0IHRvIGJlIGRlYWxsb2NhdGVkIGFuZCBpdHMgJworICAgICAgICAgICAgICAgJ2Rlc3RydWN0b3IgKGlmIGl0XG4nCisgICAgICAgICAgICAgICAnICBoYXMgb25lKSB0byBiZSBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2U6IFRoZSBwcmltYXJ5ICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uIGluXG4nCisgICAgICAgICAgICAgICAnICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuJworICAgICAgICAgICAgICAgJyAgYXNzaWduYWJsZSBhdHRyaWJ1dGVzOyBpZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgIlR5cGVFcnJvciIgJworICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAnICByYWlzZWQuICBUaGF0IG9iamVjdCBpcyB0aGVuIGFza2VkIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgJworICAgICAgICAgICAgICAgJ29iamVjdCB0b1xuJworICAgICAgICAgICAgICAgJyAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0ICcKKyAgICAgICAgICAgICAgICdyYWlzZXNcbicKKyAgICAgICAgICAgICAgICcgIGFuIGV4Y2VwdGlvbiAodXN1YWxseSBidXQgbm90IG5lY2Vzc2FyaWx5ICcKKyAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiKS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIE5vdGU6IElmIHRoZSBvYmplY3QgaXMgYSBjbGFzcyBpbnN0YW5jZSBhbmQgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAncmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgICAnICBvY2N1cnMgb24gYm90aCBzaWRlcyBvZiB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgdGhlIFJIUyAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbixcbicKKyAgICAgICAgICAgICAgICcgICJhLngiIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gJworICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgZXhpc3RzKSBhIGNsYXNzIGF0dHJpYnV0ZS4gIFRoZSBMSFMgdGFyZ2V0ICJhLngiICcKKyAgICAgICAgICAgICAgICdpcyBhbHdheXNcbicKKyAgICAgICAgICAgICAgICcgIHNldCBhcyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGNyZWF0aW5nIGl0IGlmIG5lY2Vzc2FyeS4gICcKKyAgICAgICAgICAgICAgICdUaHVzLCB0aGVcbicKKyAgICAgICAgICAgICAgICcgIHR3byBvY2N1cnJlbmNlcyBvZiAiYS54IiBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlICcKKyAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGU6IGlmIHRoZSBSSFMgZXhwcmVzc2lvbiByZWZlcnMgdG8gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAnYXR0cmlidXRlLCB0aGVcbicKKyAgICAgICAgICAgICAgICcgIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuJworICAgICAgICAgICAgICAgJyAgYXNzaWdubWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICAgIGNsYXNzIENsczpcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICB4ID0gMyAgICAgICAgICAgICAjIGNsYXNzIHZhcmlhYmxlXG4nCisgICAgICAgICAgICAgICAnICAgICBpbnN0ID0gQ2xzKClcbicKKyAgICAgICAgICAgICAgICcgICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54ICcKKyAgICAgICAgICAgICAgICdhcyAzXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZXMsIHN1Y2ggYXMgcHJvcGVydGllcyBjcmVhdGVkIHdpdGggInByb3BlcnR5KCkiLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHN1YnNjcmlwdGlvbjogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgJworICAgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAnICBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSBvciBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgJworICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkpLlxuJworICAgICAgICAgICAgICAgJyAgTmV4dCwgdGhlIHN1YnNjcmlwdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICAgICAnbGlzdCksIHRoZVxuJworICAgICAgICAgICAgICAgJyAgc3Vic2NyaXB0IG11c3QgeWllbGQgYW4gaW50ZWdlci4gIElmIGl0IGlzIG5lZ2F0aXZlLCB0aGUgJworICAgICAgICAgICAgICAgInNlcXVlbmNlJ3NcbiIKKyAgICAgICAgICAgICAgICcgIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhICcKKyAgICAgICAgICAgICAgICdub25uZWdhdGl2ZVxuJworICAgICAgICAgICAgICAgIiAgaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNlcXVlbmNlJ3MgbGVuZ3RoLCBhbmQgdGhlIHNlcXVlbmNlIGlzICIKKyAgICAgICAgICAgICAgICdhc2tlZFxuJworICAgICAgICAgICAgICAgJyAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgJworICAgICAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAgICAgJyAgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCAiSW5kZXhFcnJvciIgaXMgcmFpc2VkIChhc3NpZ25tZW50IHRvICcKKyAgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICAnICBzdWJzY3JpcHRlZCBzZXF1ZW5jZSBjYW5ub3QgYWRkIG5ldyBpdGVtcyB0byBhIGxpc3QpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLCAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAiICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmcncyBrZXkgIgorICAgICAgICAgICAgICAgJ3R5cGUsXG4nCisgICAgICAgICAgICAgICAnICBhbmQgdGhlIG1hcHBpbmcgaXMgdGhlbiBhc2tlZCB0byBjcmVhdGUgYSBrZXkvZGF0dW0gcGFpciAnCisgICAgICAgICAgICAgICAnd2hpY2ggbWFwc1xuJworICAgICAgICAgICAgICAgJyAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyICcKKyAgICAgICAgICAgICAgICdyZXBsYWNlIGFuXG4nCisgICAgICAgICAgICAgICAnICBleGlzdGluZyBrZXkvdmFsdWUgcGFpciB3aXRoIHRoZSBzYW1lIGtleSB2YWx1ZSwgb3IgaW5zZXJ0IGEgJworICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgJyAga2V5L3ZhbHVlIHBhaXIgKGlmIG5vIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlIGV4aXN0ZWQpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgRm9yIHVzZXItZGVmaW5lZCBvYmplY3RzLCB0aGUgIl9fc2V0aXRlbV9fKCkiIG1ldGhvZCBpcyAnCisgICAgICAgICAgICAgICAnY2FsbGVkIHdpdGhcbicKKyAgICAgICAgICAgICAgICcgIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhIG11dGFibGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAgJyAgKHN1Y2ggYXMgYSBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAgJyAgb2YgdGhlIHNhbWUgdHlwZS4gIE5leHQsIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmQgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb25zIGFyZVxuJworICAgICAgICAgICAgICAgJyAgZXZhbHVhdGVkLCBpbnNvZmFyIHRoZXkgYXJlIHByZXNlbnQ7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAiICBzZXF1ZW5jZSdzIGxlbmd0aC4gIFRoZSBib3VuZHMgc2hvdWxkIGV2YWx1YXRlIHRvIGludGVnZXJzLiAiCisgICAgICAgICAgICAgICAnSWZcbicKKyAgICAgICAgICAgICAgICIgIGVpdGhlciBib3VuZCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvICIKKyAgICAgICAgICAgICAgICdpdC4gIFRoZVxuJworICAgICAgICAgICAgICAgJyAgcmVzdWx0aW5nIGJvdW5kcyBhcmUgY2xpcHBlZCB0byBsaWUgYmV0d2VlbiB6ZXJvIGFuZCB0aGUgJworICAgICAgICAgICAgICAgInNlcXVlbmNlJ3NcbiIKKyAgICAgICAgICAgICAgICcgIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byAnCisgICAgICAgICAgICAgICAncmVwbGFjZVxuJworICAgICAgICAgICAgICAgJyAgdGhlIHNsaWNlIHdpdGggdGhlIGl0ZW1zIG9mIHRoZSBhc3NpZ25lZCBzZXF1ZW5jZS4gIFRoZSAnCisgICAgICAgICAgICAgICAnbGVuZ3RoIG9mXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc2xpY2UgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGFzc2lnbmVkICcKKyAgICAgICAgICAgICAgICdzZXF1ZW5jZSxcbicKKyAgICAgICAgICAgICAgICcgIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgJworICAgICAgICAgICAgICAgJ3RhcmdldFxuJworICAgICAgICAgICAgICAgJyAgc2VxdWVuY2UgYWxsb3dzIGl0LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSW4gdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB0aGVcbicKKyAgICAgICAgICAgICAgICdzeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCAnCisgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAnaW52YWxpZCBzeW50YXggaXMgcmVqZWN0ZWQgZHVyaW5nIHRoZSBjb2RlIGdlbmVyYXRpb24gcGhhc2UsICcKKyAgICAgICAgICAgICAgICdjYXVzaW5nXG4nCisgICAgICAgICAgICAgICAnbGVzcyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwcyAnCisgICAgICAgICAgICAgICAnYmV0d2VlblxuJworICAgICAgICAgICAgICAgInRoZSBsZWZ0LWhhbmQgc2lkZSBhbmQgdGhlIHJpZ2h0LWhhbmQgc2lkZSBhcmUgJ3NpbXVsdGFuZW91cycgIgorICAgICAgICAgICAgICAgJyhmb3JcbicKKyAgICAgICAgICAgICAgICdleGFtcGxlICJhLCBiID0gYiwgYSIgc3dhcHMgdHdvIHZhcmlhYmxlcyksIG92ZXJsYXBzICp3aXRoaW4qICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICdjb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBvY2N1ciBsZWZ0LXRvLXJpZ2h0LCAnCisgICAgICAgICAgICAgICAnc29tZXRpbWVzXG4nCisgICAgICAgICAgICAgICAncmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtICcKKyAgICAgICAgICAgICAgICdwcmludHNcbicKKyAgICAgICAgICAgICAgICciWzAsIDJdIjpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICB4ID0gWzAsIDFdXG4nCisgICAgICAgICAgICAgICAnICAgaSA9IDBcbicKKyAgICAgICAgICAgICAgICcgICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgJworICAgICAgICAgICAgICAgJ3VwZGF0ZWRcbicKKyAgICAgICAgICAgICAgICcgICBwcmludCh4KVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKipQRVAgMzEzMioqIC0gRXh0ZW5kZWQgSXRlcmFibGUgVW5wYWNraW5nXG4nCisgICAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICIqdGFyZ2V0IiBmZWF0dXJlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50LCBvZiBhXG4nCisgICAgICAgICAgICAgICAnYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wICcKKyAgICAgICAgICAgICAgICcoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbicKKyAgICAgICAgICAgICAgICcgICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgJworICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgICcgICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgJworICAgICAgICAgICAgICAgJyIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcoU2VlIHNlY3Rpb24gUHJpbWFyaWVzIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAgICd0aHJlZVxuJworICAgICAgICAgICAgICAgJ3N5bWJvbHMuKVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlICcKKyAgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgICdsaXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiAnCisgICAgICAgICAgICAgICAnYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAgJ29uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsICcKKyAgICAgICAgICAgICAgICd0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgJworICAgICAgICAgICAgICAgJ3Jld3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAgJyJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgJworICAgICAgICAgICAgICAgJ2VmZmVjdC4gSW4gdGhlXG4nCisgICAgICAgICAgICAgICAnYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuICcKKyAgICAgICAgICAgICAgICdwb3NzaWJsZSxcbicKKyAgICAgICAgICAgICAgICd0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICdyYXRoZXIgdGhhblxuJworICAgICAgICAgICAgICAgJ2NyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlICcKKyAgICAgICAgICAgICAgICdvbGQgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnaXMgbW9kaWZpZWQgaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdVbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlICcKKyAgICAgICAgICAgICAgICdsZWZ0LVxuJworICAgICAgICAgICAgICAgJ2hhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgJworICAgICAgICAgICAgICAgJ2V4YW1wbGUsICJhW2ldXG4nCisgICAgICAgICAgICAgICAnKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kICcKKyAgICAgICAgICAgICAgICdwZXJmb3Jtc1xuJworICAgICAgICAgICAgICAgJ3RoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAnCisgICAgICAgICAgICAgICAnImFbaV0iLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1dpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgICdpbiBhXG4nCisgICAgICAgICAgICAgICAnc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiAnCisgICAgICAgICAgICAgICAnU2ltaWxhcmx5LFxuJworICAgICAgICAgICAgICAgJ3dpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlICcKKyAgICAgICAgICAgICAgICdiaW5hcnlcbicKKyAgICAgICAgICAgICAgICdvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAnCisgICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICAnYmluYXJ5IG9wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSBjYXZlYXQgJworICAgICAgICAgICAgICAgJ2Fib3V0XG4nCisgICAgICAgICAgICAgICAnY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMgYXBwbGllcyBhcyBmb3IgcmVndWxhciAnCisgICAgICAgICAgICAgICAnYXNzaWdubWVudHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW5ub3RhdGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbm5vdGF0aW9uIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50LCBvZiBhXG4nCisgICAgICAgICAgICAgICAndmFyaWFibGUgb3IgYXR0cmlidXRlIGFubm90YXRpb24gYW5kIGFuIG9wdGlvbmFsIGFzc2lnbm1lbnQgJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhbm5vdGF0ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgIjoiIGV4cHJlc3Npb24gWyI9IiAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdUaGUgZGlmZmVyZW5jZSBmcm9tIG5vcm1hbCBBc3NpZ25tZW50IHN0YXRlbWVudHMgaXMgdGhhdCBvbmx5ICcKKyAgICAgICAgICAgICAgICdzaW5nbGVcbicKKyAgICAgICAgICAgICAgICd0YXJnZXQgYW5kIG9ubHkgc2luZ2xlIHJpZ2h0IGhhbmQgc2lkZSB2YWx1ZSBpcyBhbGxvd2VkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0ZvciBzaW1wbGUgbmFtZXMgYXMgYXNzaWdubWVudCB0YXJnZXRzLCBpZiBpbiBjbGFzcyBvciBtb2R1bGUgJworICAgICAgICAgICAgICAgJ3Njb3BlLFxuJworICAgICAgICAgICAgICAgJ3RoZSBhbm5vdGF0aW9ucyBhcmUgZXZhbHVhdGVkIGFuZCBzdG9yZWQgaW4gYSBzcGVjaWFsIGNsYXNzIG9yICcKKyAgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgIl9fYW5ub3RhdGlvbnNfXyIgdGhhdCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBmcm9tICcKKyAgICAgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAgICAgJ25hbWVzIChtYW5nbGVkIGlmIHByaXZhdGUpIHRvIGV2YWx1YXRlZCBhbm5vdGF0aW9ucy4gVGhpcyAnCisgICAgICAgICAgICAgICAnYXR0cmlidXRlIGlzXG4nCisgICAgICAgICAgICAgICAnd3JpdGFibGUgYW5kIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBhdCB0aGUgc3RhcnQgb2YgY2xhc3Mgb3IgJworICAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAgJ2JvZHkgZXhlY3V0aW9uLCBpZiBhbm5vdGF0aW9ucyBhcmUgZm91bmQgc3RhdGljYWxseS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdGb3IgZXhwcmVzc2lvbnMgYXMgYXNzaWdubWVudCB0YXJnZXRzLCB0aGUgYW5ub3RhdGlvbnMgYXJlICcKKyAgICAgICAgICAgICAgICdldmFsdWF0ZWRcbicKKyAgICAgICAgICAgICAgICdpZiBpbiBjbGFzcyBvciBtb2R1bGUgc2NvcGUsIGJ1dCBub3Qgc3RvcmVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBhbm5vdGF0ZWQgaW4gYSBmdW5jdGlvbiBzY29wZSwgdGhlbiB0aGlzIG5hbWUgaXMgJworICAgICAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICAgICAnZm9yIHRoYXQgc2NvcGUuIEFubm90YXRpb25zIGFyZSBuZXZlciBldmFsdWF0ZWQgYW5kIHN0b3JlZCBpbiAnCisgICAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAgICdzY29wZXMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnSWYgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyBwcmVzZW50LCBhbiBhbm5vdGF0ZWQgYXNzaWdubWVudCAnCisgICAgICAgICAgICAgICAncGVyZm9ybXNcbicKKyAgICAgICAgICAgICAgICd0aGUgYWN0dWFsIGFzc2lnbm1lbnQgYmVmb3JlIGV2YWx1YXRpbmcgYW5ub3RhdGlvbnMgKHdoZXJlXG4nCisgICAgICAgICAgICAgICAnYXBwbGljYWJsZSkuIElmIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgbm90IHByZXNlbnQgZm9yIGFuICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgICAndGFyZ2V0LCB0aGVuIHRoZSBpbnRlcnByZXRlciBldmFsdWF0ZXMgdGhlIHRhcmdldCBleGNlcHQgZm9yICcKKyAgICAgICAgICAgICAgICd0aGUgbGFzdFxuJworICAgICAgICAgICAgICAgJyJfX3NldGl0ZW1fXygpIiBvciAiX19zZXRhdHRyX18oKSIgY2FsbC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgNTI2KiogLSBWYXJpYWJsZSBhbmQgYXR0cmlidXRlIGFubm90YXRpb24gJworICAgICAgICAgICAgICAgJ3N5bnRheFxuJworICAgICAgICAgICAgICAgJyAgKipQRVAgNDg0KiogLSBUeXBlIGhpbnRzXG4nLAorICdhdG9tLWlkZW50aWZpZXJzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIChOYW1lcylcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgJworICAgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24gSWRlbnRpZmllcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbmQga2V5d29yZHMgZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiBOYW1pbmcgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBiaW5kaW5nIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJ2RvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1doZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXRvbSB5aWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGF0IG9iamVjdC4gV2hlbiBhIG5hbWUgaXMgbm90IGJvdW5kLCBhbiBhdHRlbXB0IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJ3JhaXNlcyBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgICAndGV4dHVhbGx5IG9jY3VycyBpblxuJworICAgICAgICAgICAgICAgICAgICAgJ2EgY2xhc3MgZGVmaW5pdGlvbiBiZWdpbnMgd2l0aCB0d28gb3IgbW9yZSB1bmRlcnNjb3JlICcKKyAgICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGVuZCBpbiB0d28gb3IgbW9yZSB1bmRlcnNjb3JlcywgaXQgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWQgYSAqcHJpdmF0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJ25hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2xvbmdlciBmb3JtXG4nCisgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIGNvZGUgaXMgZ2VuZXJhdGVkIGZvciB0aGVtLiAgVGhlIHRyYW5zZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnNlcnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzIG5hbWUsIHdpdGggbGVhZGluZyB1bmRlcnNjb3JlcyByZW1vdmVkIGFuZCBhICcKKyAgICAgICAgICAgICAgICAgICAgICdzaW5nbGUgdW5kZXJzY29yZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2luc2VydGVkLCBpbiBmcm9udCBvZiB0aGUgbmFtZS4gIEZvciBleGFtcGxlLCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIgIl9fc3BhbSJcbicKKyAgICAgICAgICAgICAgICAgICAgICdvY2N1cnJpbmcgaW4gYSBjbGFzcyBuYW1lZCAiSGFtIiB3aWxsIGJlIHRyYW5zZm9ybWVkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICciX0hhbV9fc3BhbSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZiB0aGUgc3ludGFjdGljYWwgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQgaW4gd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlIHRyYW5zZm9ybWVkIG5hbWUgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2V4dHJlbWVseSBsb25nXG4nCisgICAgICAgICAgICAgICAgICAgICAnKGxvbmdlciB0aGFuIDI1NSBjaGFyYWN0ZXJzKSwgaW1wbGVtZW50YXRpb24gZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICAgICAndHJ1bmNhdGlvbiBtYXlcbicKKyAgICAgICAgICAgICAgICAgICAgICdoYXBwZW4uIElmIHRoZSBjbGFzcyBuYW1lIGNvbnNpc3RzIG9ubHkgb2YgdW5kZXJzY29yZXMsICcKKyAgICAgICAgICAgICAgICAgICAgICdub1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybWF0aW9uIGlzIGRvbmUuXG4nLAorICdhdG9tLWxpdGVyYWxzJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0xpdGVyYWxzXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdQeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyAnCisgICAgICAgICAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAgJ2xpdGVyYWxzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBieXRlc2xpdGVyYWxcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICB8IGludGVnZXIgfCBmbG9hdG51bWJlciB8IGltYWdudW1iZXJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdFdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgICcoc3RyaW5nLFxuJworICAgICAgICAgICAgICAgICAgJ2J5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZ2l2ZW5cbicKKyAgICAgICAgICAgICAgICAgICd2YWx1ZS4gIFRoZSB2YWx1ZSBtYXkgYmUgYXBwcm94aW1hdGVkIGluIHRoZSBjYXNlIG9mICcKKyAgICAgICAgICAgICAgICAgICdmbG9hdGluZyBwb2ludFxuJworICAgICAgICAgICAgICAgICAgJ2FuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gTGl0ZXJhbHMgZm9yICcKKyAgICAgICAgICAgICAgICAgICdkZXRhaWxzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FsbCBsaXRlcmFscyBjb3JyZXNwb25kIHRvIGltbXV0YWJsZSBkYXRhIHR5cGVzLCBhbmQgaGVuY2UgJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgIgorICAgICAgICAgICAgICAgICAgJ011bHRpcGxlXG4nCisgICAgICAgICAgICAgICAgICAnZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSAnCisgICAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICAgJ29jY3VycmVuY2UgaW4gdGhlIHByb2dyYW0gdGV4dCBvciBhIGRpZmZlcmVudCBvY2N1cnJlbmNlKSAnCisgICAgICAgICAgICAgICAgICAnbWF5IG9idGFpblxuJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAndmFsdWUuXG4nLAorICdhdHRyaWJ1dGUtYWNjZXNzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ21lYW5pbmcgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcieC5uYW1lIikgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnbm9yIGlzIGl0IGZvdW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICAgICAnb3IgcmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsIG1lY2hhbmlzbSxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnRlbnRpb25hbCBhc3ltbWV0cnlcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnZG9uZSBib3RoIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gICcKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgYXRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyb2wgYnkgbm90XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSAoYnV0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byAnCisgICAgICAgICAgICAgICAgICAgICAnYWN0dWFsbHkgZ2V0IHRvdGFsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAgICAgJ2FjY2Vzc2VzIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJfXygpIixcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuICcKKyAgICAgICAgICAgICAgICAgICAgICdUaGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlICcKKyAgICAgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5maW5pdGUgcmVjdXJzaW9uIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBiYXNlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgJworICAgICAgICAgICAgICAgICAgICAgJ25lZWRzLCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgJworICAgICAgICAgICAgICAgICAgICAgJ3VwIHNwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSAnCisgICAgICAgICAgICAgICAgICAgICAnbGFuZ3VhZ2Ugc3ludGF4XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSBTcGVjaWFsIG1ldGhvZCBsb29rdXAuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gICcKKyAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGNhbGxlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgJworICAgICAgICAgICAgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlLCBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAib2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RlYWQgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsICcKKyAgICAgICAgICAgICAgICAgICAgICdvYmoubmFtZSIgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gImRpcigpIiBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgbXVzdCBiZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhICcKKyAgICAgICAgICAgICAgICAgICAgICdsaXN0IGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHNvcnRzIGl0LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0ltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSAnCisgICAgICAgICAgICAgICAgICAgICAnYXBwZWFycyBpbiBhblxuJworICAgICAgICAgICAgICAgICAgICAgJypvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAib3duZXIncyBjbGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgJworICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudHMpLiAgSW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnd2hvc2UgbmFtZSBpc1xuJworICAgICAgICAgICAgICAgICAgICAgInRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzcycgIgorICAgICAgICAgICAgICAgICAgICAgJyJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICcKKyAgICAgICAgICAgICAgICAgICAgICcqaW5zdGFuY2UqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgJworICAgICAgICAgICAgICAgICAgICAgJyJOb25lIiB3aGVuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAnbWV0aG9kIHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gJworICAgICAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqICcKKyAgICAgICAgICAgICAgICAgICAgICdvZiB0aGUgb3duZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb3duZXIgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYXQgdGhlIHRpbWUgdGhlIG93bmluZyBjbGFzcyAqb3duZXIqIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVkLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBkZXNjcmlwdG9yIGhhcyBiZWVuIGFzc2lnbmVkIHRvICpuYW1lKi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJyJpbnNwZWN0IiBtb2R1bGUgYXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdzcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICAgICAnKHNldHRpbmcgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgJ2R5bmFtaWMgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2dpdmVuIHR5cGUgKG9yIGEgc3ViY2xhc3MpIGlzIGV4cGVjdGVkIG9yIHJlcXVpcmVkIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICd1bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW52b2tpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0luIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgJyJiaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAnb3ZlcnJpZGRlbiBieSBtZXRob2RzXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsICcKKyAgICAgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdhbiBvYmplY3QsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAnaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCAnCisgICAgICAgICAgICAgICAgICAgICAnc2V0LCBvciBkZWxldGVcbicKKyAgICAgICAgICAgICAgICAgICAgICJ0aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0J3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiCisgICAgICAgICAgICAgICAgICAgICAnImEueCIgaGFzIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICdsb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4nCisgICAgICAgICAgICAgICAgICAgICAnInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3NlcyBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgJworICAgICAgICAgICAgICAgICAgICAgJ29uZSBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAgICAnYmVoYXZpb3IgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAgICAgJ3dlcmUgZGVmaW5lZCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICdob3cgdGhleSB3ZXJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhICcKKyAgICAgICAgICAgICAgICAgICAgICdiaW5kaW5nLCAiYS54Ii4gSG93XG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0RpcmVjdCBDYWxsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0bHlcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0luc3RhbmNlIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybWVkIGludG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0NsYXNzIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjYWxsOlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdTdXBlciBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgJworICAgICAgICAgICAgICAgICAgICAgJyJzdXBlcihCLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzICJBIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3Igd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosICcKKyAgICAgICAgICAgICAgICAgICAgICdvYmouX19jbGFzc19fKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9uIGRlcGVuZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICdvbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBjYW4gZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICAgICAnYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHdpbGwgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiAnCisgICAgICAgICAgICAgICAgICAgICAidGhlIG9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgICAgJyJfX3NldF9fKCkiIGFuZC9vclxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnbmVpdGhlciwgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyAnCisgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lIGJvdGhcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIGp1c3QgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICAgICdhbmQgIl9fZ2V0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS4gIEluXG4nCisgICAgICAgICAgICAgICAgICAgICAnY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAnImNsYXNzbWV0aG9kKCkiKSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIGNhblxuJworICAgICAgICAgICAgICAgICAgICAgJ3JlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAgICAgJ0FjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhICcKKyAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0eS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdfX3Nsb3RzX19cbicKKyAgICAgICAgICAgICAgICAgICAgICc9PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdCeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3N0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiAnCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRpbmcgbGFyZ2VcbicKKyAgICAgICAgICAgICAgICAgICAgICdudW1iZXJzIG9mIGluc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiAnCisgICAgICAgICAgICAgICAgICAgICAnYSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdvZiBpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgdG8gaG9sZCBhXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19kaWN0X18qIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCAnCisgICAgICAgICAgICAgICAgICAgICAnaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdwcmV2ZW50cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yIGVhY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gJworICAgICAgICAgICAgICAgICAgICAgJ2EgKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAgICAgJ2Fzc2lnbmVkIG5ld1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgICAgICAgICAnQXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAnCisgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIi4gSWZcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FkZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuICcKKyAgICAgICAgICAgICAgICAgICAgICdhZGRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlY2xhcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSAnCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlc2NyaXB0b3JzIChJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMpIGZvciBlYWNoICcKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZSBuYW1lLiAgQXMgYVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCAnCisgICAgICAgICAgICAgICAgICAgICAnaGF2ZSBhICpfX2RpY3RfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW4gbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlICcKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzcywgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2luYWNjZXNzaWJsZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGZ1dHVyZSwgYVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCAnCisgICAgICAgICAgICAgICAgICAgICAnZnJvbVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgJworICAgICAgICAgICAgICAgICAgICAgJyJieXRlcyIgYW5kICJ0dXBsZSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qLiBNYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICAgICAnbWVhbmluZyBtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICpfX3Nsb3RzX18qLlxuJywKKyAnYXR0cmlidXRlLXJlZmVyZW5jZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0F0dHJpYnV0ZSByZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdBbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAncGVyaW9kIGFuZCBhIG5hbWU6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IG9mIGEgdHlwZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgc3VwcG9ydHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHJlZmVyZW5jZXMsIHdoaWNoIG1vc3Qgb2JqZWN0cyBkby4gIFRoaXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICdvYmplY3QgaXMgdGhlblxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdhc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVyLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9kdWN0aW9uIGNhbiBiZSBjdXN0b21pemVkIGJ5IG92ZXJyaWRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y2VkIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldGVybWluZWQgYnkgdGhlIG9iamVjdC4gIE11bHRpcGxlIGV2YWx1YXRpb25zIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBtYXkgeWllbGQgZGlmZmVyZW50IG9iamVjdHMuXG4nLAorICdhdWdhc3NpZ24nOiAnXG4nCisgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LCAnCisgICAgICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wICcKKyAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAnICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8ICcKKyAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAnCisgICAgICAgICAgICAgICciLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbicKKyAgICAgICAgICAgICAgJyAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnKFNlZSBzZWN0aW9uIFByaW1hcmllcyBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCAnCisgICAgICAgICAgICAgICd0aHJlZVxuJworICAgICAgICAgICAgICAnc3ltYm9scy4pXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlICcKKyAgICAgICAgICAgICAgJ25vcm1hbFxuJworICAgICAgICAgICAgICAnYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgJ2xpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnRcbicKKyAgICAgICAgICAgICAgJ29uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsICcKKyAgICAgICAgICAgICAgJ3RhcmdldC5cbicKKyAgICAgICAgICAgICAgJ1RoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSAnCisgICAgICAgICAgICAgICdyZXdyaXR0ZW4gYXNcbicKKyAgICAgICAgICAgICAgJyJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiAnCisgICAgICAgICAgICAgICdJbiB0aGVcbicKKyAgICAgICAgICAgICAgJ2F1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiAnCisgICAgICAgICAgICAgICdwb3NzaWJsZSxcbicKKyAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgJworICAgICAgICAgICAgICAncmF0aGVyIHRoYW5cbicKKyAgICAgICAgICAgICAgJ2NyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCAnCisgICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAgJ2lzIG1vZGlmaWVkIGluc3RlYWQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1VubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAnbGVmdC1cbicKKyAgICAgICAgICAgICAgJ2hhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgJworICAgICAgICAgICAgICAnZXhhbXBsZSwgImFbaV1cbicKKyAgICAgICAgICAgICAgJys9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCAnCisgICAgICAgICAgICAgICdwZXJmb3Jtc1xuJworICAgICAgICAgICAgICAndGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgJworICAgICAgICAgICAgICAnaW4gYVxuJworICAgICAgICAgICAgICAnc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAnc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuICcKKyAgICAgICAgICAgICAgJ1NpbWlsYXJseSxcbicKKyAgICAgICAgICAgICAgJ3dpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlICcKKyAgICAgICAgICAgICAgJ2JpbmFyeVxuJworICAgICAgICAgICAgICAnb3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgJworICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSBjYXZlYXQgJworICAgICAgICAgICAgICAnYWJvdXRcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgJworICAgICAgICAgICAgICAnYXNzaWdubWVudHMuXG4nLAorICdiaW5hcnknOiAnXG4nCisgICAgICAgICAgICdCaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxuJworICAgICAgICAgICAnbGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvIGNlcnRhaW4gJworICAgICAgICAgICAnbm9uLVxuJworICAgICAgICAgICAnbnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSB0d29cbicKKyAgICAgICAgICAgJ2xldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbicKKyAgICAgICAgICAgJ29wZXJhdG9yczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiQCIgbV9leHByIHxcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgbV9leHByICIvLyIgdV9leHByfCBtX2V4cHIgIi8iIHVfZXhwciB8XG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgIG1fZXhwciAiJSIgdV9leHByXG4nCisgICAgICAgICAgICcgICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICIqIiAobXVsdGlwbGljYXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcHJvZHVjdCBvZiBpdHMgJworICAgICAgICAgICAnYXJndW1lbnRzLlxuJworICAgICAgICAgICAnVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudCBtdXN0IGJlICcKKyAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICdpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZVxuJworICAgICAgICAgICAnbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZCAnCisgICAgICAgICAgICd0b2dldGhlci5cbicKKyAgICAgICAgICAgJ0luIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGEgbmVnYXRpdmVcbicKKyAgICAgICAgICAgJ3JlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJAIiAoYXQpIG9wZXJhdG9yIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIG1hdHJpeFxuJworICAgICAgICAgICAnbXVsdGlwbGljYXRpb24uICBObyBidWlsdGluIFB5dGhvbiB0eXBlcyBpbXBsZW1lbnQgdGhpcyBvcGVyYXRvci5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy41LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIi8iIChkaXZpc2lvbikgYW5kICIvLyIgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG4nCisgICAgICAgICAgICdxdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG4nCisgICAgICAgICAgICdjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gRGl2aXNpb24gb2YgaW50ZWdlcnMgeWllbGRzIGEgZmxvYXQsICcKKyAgICAgICAgICAgJ3doaWxlXG4nCisgICAgICAgICAgICdmbG9vciBkaXZpc2lvbiBvZiBpbnRlZ2VycyByZXN1bHRzIGluIGFuIGludGVnZXI7IHRoZSByZXN1bHQgaXMgJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAib2YgbWF0aGVtYXRpY2FsIGRpdmlzaW9uIHdpdGggdGhlICdmbG9vcicgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbiIKKyAgICAgICAgICAgJ3Jlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSAiWmVyb0RpdmlzaW9uRXJyb3IiICcKKyAgICAgICAgICAgJ2V4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICIlIiAobW9kdWxvKSBvcGVyYXRvciB5aWVsZHMgdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBkaXZpc2lvbiAnCisgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAndGhlIGZpcnN0IGFyZ3VtZW50IGJ5IHRoZSBzZWNvbmQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICdjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIEEgemVybyByaWdodCBhcmd1bWVudCByYWlzZXMgdGhlXG4nCisgICAgICAgICAgICciWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nICcKKyAgICAgICAgICAgJ3BvaW50XG4nCisgICAgICAgICAgICdudW1iZXJzLCBlLmcuLCAiMy4xNCUwLjciIGVxdWFscyAiMC4zNCIgKHNpbmNlICIzLjE0IiBlcXVhbHMgJworICAgICAgICAgICAnIjQqMC43ICtcbicKKyAgICAgICAgICAgJzAuMzQiLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoIHRoZSBzYW1lICcKKyAgICAgICAgICAgJ3NpZ25cbicKKyAgICAgICAgICAgJ2FzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcmVzdWx0ICcKKyAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICdzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCAnCisgICAgICAgICAgICdbMV0uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSAnCisgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgJ2lkZW50aXR5OiAieCA9PSAoeC8veSkqeSArICh4JXkpIi4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlICcKKyAgICAgICAgICAgJ2Fsc29cbicKKyAgICAgICAgICAgJ2Nvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZGl2bW9kKCkiOiAiZGl2bW9kKHgsIHkpID09XG4nCisgICAgICAgICAgICcoeC8veSwgeCV5KSIuIFsyXS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgJworICAgICAgICAgICAnIiUiXG4nCisgICAgICAgICAgICdvcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSAnCisgICAgICAgICAgICdvbGQtc3R5bGVcbicKKyAgICAgICAgICAgJ3N0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbicKKyAgICAgICAgICAgJ3N0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuJworICAgICAgICAgICAnc2VjdGlvbiBwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmbG9vciBkaXZpc2lvbiBvcGVyYXRvciwgdGhlIG1vZHVsbyBvcGVyYXRvciwgYW5kIHRoZSAnCisgICAgICAgICAgICciZGl2bW9kKCkiXG4nCisgICAgICAgICAgICdmdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSAiYWJzKCkiIGZ1bmN0aW9uIGlmIGFwcHJvcHJpYXRlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIisiIChhZGRpdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBzdW0gb2YgaXRzIGFyZ3VtZW50cy4gIFRoZVxuJworICAgICAgICAgICAnYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycyBvciBib3RoIGJlIHNlcXVlbmNlcyBvZiB0aGUgJworICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAndHlwZS4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIG51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiAnCisgICAgICAgICAgICd0eXBlXG4nCisgICAgICAgICAgICdhbmQgdGhlbiBhZGRlZCB0b2dldGhlci4gSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2VxdWVuY2VzIGFyZVxuJworICAgICAgICAgICAnY29uY2F0ZW5hdGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIi0iIChzdWJ0cmFjdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBkaWZmZXJlbmNlIG9mIGl0cyAnCisgICAgICAgICAgICdhcmd1bWVudHMuXG4nCisgICAgICAgICAgICdUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLlxuJywKKyAnYml0d2lzZSc6ICdcbicKKyAgICAgICAgICAgICdCaW5hcnkgYml0d2lzZSBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0VhY2ggb2YgdGhlIHRocmVlIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXMgYSBkaWZmZXJlbnQgcHJpb3JpdHkgJworICAgICAgICAgICAgJ2xldmVsOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyAgIGFuZF9leHByIDo6PSBzaGlmdF9leHByIHwgYW5kX2V4cHIgIiYiIHNoaWZ0X2V4cHJcbicKKyAgICAgICAgICAgICcgICB4b3JfZXhwciA6Oj0gYW5kX2V4cHIgfCB4b3JfZXhwciAiXiIgYW5kX2V4cHJcbicKKyAgICAgICAgICAgICcgICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZSAiJiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIEFORCBvZiBpdHMgYXJndW1lbnRzLCB3aGljaCAnCisgICAgICAgICAgICAnbXVzdFxuJworICAgICAgICAgICAgJ2JlIGludGVnZXJzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZSAiXiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIFhPUiAoZXhjbHVzaXZlIE9SKSBvZiBpdHNcbicKKyAgICAgICAgICAgICdhcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICJ8IiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzICcKKyAgICAgICAgICAgICdhcmd1bWVudHMsXG4nCisgICAgICAgICAgICAnd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cbicsCisgJ2JsdGluLWNvZGUtb2JqZWN0cyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ0NvZGUgT2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ0NvZGUgb2JqZWN0cyBhcmUgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gdG8gJworICAgICAgICAgICAgICAgICAgICAgICAncmVwcmVzZW50ICJwc2V1ZG8tXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdjb21waWxlZCIgZXhlY3V0YWJsZSBQeXRob24gY29kZSBzdWNoIGFzIGEgZnVuY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgICAnYm9keS4gVGhleSBkaWZmZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgImZyb20gZnVuY3Rpb24gb2JqZWN0cyBiZWNhdXNlIHRoZXkgZG9uJ3QgY29udGFpbiBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0byB0aGVpclxuJworICAgICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuJworICAgICAgICAgICAgICAgICAgICAgICAnaW4gImNvbXBpbGUoKSIgZnVuY3Rpb24gYW5kIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICd0aHJvdWdoIHRoZWlyICJfX2NvZGVfXyIgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAnImNvZGUiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgJworICAgICAgICAgICAgICAgICAgICAgICAnaXQgKGluc3RlYWQgb2YgYVxuJworICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlIHN0cmluZykgdG8gdGhlICJleGVjKCkiIG9yICJldmFsKCkiICBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1NlZSBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkgZm9yIG1vcmUgJworICAgICAgICAgICAgICAgICAgICAgICAnaW5mb3JtYXRpb24uXG4nLAorICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgRWxsaXBzaXMgT2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NsaWNpbmdzKS4gIEl0IHN1cHBvcnRzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdlbGxpcHNpcyBvYmplY3QsIG5hbWVkXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICciRWxsaXBzaXMiIChhIGJ1aWx0LWluIG5hbWUpLiAgInR5cGUoRWxsaXBzaXMpKCkiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y2VzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnIkVsbGlwc2lzIiBzaW5nbGV0b24uXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0l0IGlzIHdyaXR0ZW4gYXMgIkVsbGlwc2lzIiBvciAiLi4uIi5cbicsCisgJ2JsdGluLW51bGwtb2JqZWN0JzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICdUaGUgTnVsbCBPYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBpcyByZXR1cm5lZCBieSBmdW5jdGlvbnMgdGhhdCBkb24ndCAiCisgICAgICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgcmV0dXJuIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICAndmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyAnCisgICAgICAgICAgICAgICAgICAgICAgJ2V4YWN0bHkgb25lIG51bGxcbicKKyAgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0LCBuYW1lZCAiTm9uZSIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShOb25lKSgpIiAnCisgICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y2VzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICdzYW1lIHNpbmdsZXRvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ0l0IGlzIHdyaXR0ZW4gYXMgIk5vbmUiLlxuJywKKyAnYmx0aW4tdHlwZS1vYmplY3RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnVHlwZSBPYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnVHlwZSBvYmplY3RzIHJlcHJlc2VudCB0aGUgdmFyaW91cyBvYmplY3QgdHlwZXMuICBBbiAnCisgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QncyB0eXBlIGlzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICdhY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInR5cGUoKSIuICBUaGVyZSBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAnbm8gc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgInR5cGVzIiAnCisgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzIG5hbWVzIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgICAnYWxsIHN0YW5kYXJkIGJ1aWx0LWluIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlcyBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8Y2xhc3MgXCdpbnRcJz4iLlxuJywKKyAnYm9vbGVhbnMnOiAnXG4nCisgICAgICAgICAgICAgJ0Jvb2xlYW4gb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG9yX3Rlc3QgIDo6PSBhbmRfdGVzdCB8IG9yX3Rlc3QgIm9yIiBhbmRfdGVzdFxuJworICAgICAgICAgICAgICcgICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuJworICAgICAgICAgICAgICcgICBub3RfdGVzdCA6Oj0gY29tcGFyaXNvbiB8ICJub3QiIG5vdF90ZXN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAndXNlZCBieSBjb250cm9sIGZsb3cgc3RhdGVtZW50cywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlICcKKyAgICAgICAgICAgICAnaW50ZXJwcmV0ZWRcbicKKyAgICAgICAgICAgICAnYXMgZmFsc2U6ICJGYWxzZSIsICJOb25lIiwgbnVtZXJpYyB6ZXJvIG9mIGFsbCB0eXBlcywgYW5kIGVtcHR5XG4nCisgICAgICAgICAgICAgJ3N0cmluZ3MgYW5kIGNvbnRhaW5lcnMgKGluY2x1ZGluZyBzdHJpbmdzLCB0dXBsZXMsIGxpc3RzLFxuJworICAgICAgICAgICAgICdkaWN0aW9uYXJpZXMsIHNldHMgYW5kIGZyb3plbnNldHMpLiAgQWxsIG90aGVyIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICdpbnRlcnByZXRlZFxuJworICAgICAgICAgICAgICdhcyB0cnVlLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIGN1c3RvbWl6ZSB0aGVpciB0cnV0aCB2YWx1ZSAnCisgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgJ3Byb3ZpZGluZyBhICJfX2Jvb2xfXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0b3IgIm5vdCIgeWllbGRzICJUcnVlIiBpZiBpdHMgYXJndW1lbnQgaXMgZmFsc2UsICcKKyAgICAgICAgICAgICAnIkZhbHNlIlxuJworICAgICAgICAgICAgICdvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhwcmVzc2lvbiAieCBhbmQgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIGZhbHNlLCAnCisgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICd2YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nICcKKyAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAnaXMgcmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhwcmVzc2lvbiAieCBvciB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgdHJ1ZSwgaXRzICcKKyAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAnaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3JldHVybmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKE5vdGUgdGhhdCBuZWl0aGVyICJhbmQiIG5vciAib3IiIHJlc3RyaWN0IHRoZSB2YWx1ZSBhbmQgdHlwZSAnCisgICAgICAgICAgICAgJ3RoZXlcbicKKyAgICAgICAgICAgICAncmV0dXJuIHRvICJGYWxzZSIgYW5kICJUcnVlIiwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgJworICAgICAgICAgICAgICdldmFsdWF0ZWRcbicKKyAgICAgICAgICAgICAnYXJndW1lbnQuICBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwsIGUuZy4sIGlmICJzIiBpcyBhIHN0cmluZyAnCisgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAnc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgZGVmYXVsdCB2YWx1ZSBpZiBpdCBpcyBlbXB0eSwgdGhlICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcicyBvciBcJ2Zvb1wnIiB5aWVsZHMgdGhlIGRlc2lyZWQgdmFsdWUuICBCZWNhdXNlICJub3QiIGhhcyB0byAnCisgICAgICAgICAgICAgJ2NyZWF0ZSBhXG4nCisgICAgICAgICAgICAgJ25ldyB2YWx1ZSwgaXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgcmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiAnCisgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICdhcmd1bWVudCAoZm9yIGV4YW1wbGUsICJub3QgXCdmb29cJyIgcHJvZHVjZXMgIkZhbHNlIiByYXRoZXIgJworICAgICAgICAgICAgICd0aGFuICJcJ1wnIi4pXG4nLAorICdicmVhayc6ICdcbicKKyAgICAgICAgICAnVGhlICJicmVhayIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgYnJlYWtfc3RtdCA6Oj0gImJyZWFrIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbicKKyAgICAgICAgICAnbG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uIHdpdGhpbiB0aGF0XG4nCisgICAgICAgICAgJ2xvb3AuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJdCB0ZXJtaW5hdGVzIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLCBza2lwcGluZyB0aGUgb3B0aW9uYWwgJworICAgICAgICAgICciZWxzZSJcbicKKyAgICAgICAgICAnY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBhICJmb3IiIGxvb3AgaXMgdGVybWluYXRlZCBieSAiYnJlYWsiLCB0aGUgbG9vcCBjb250cm9sIHRhcmdldFxuJworICAgICAgICAgICdrZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1doZW4gImJyZWFrIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICcKKyAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgJ2NsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdsb29wLlxuJywKKyAnY2FsbGFibGUtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmICcKKyAgICAgICAgICAgICAgICAgICAndGhpcyBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuJywKKyAnY2FsbHMnOiAnXG4nCisgICAgICAgICAgJ0NhbGxzXG4nCisgICAgICAgICAgJyoqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhICcKKyAgICAgICAgICAncG9zc2libHlcbicKKyAgICAgICAgICAnZW1wdHkgc2VyaWVzIG9mICphcmd1bWVudHMqOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgY2FsbCAgICAgICAgICAgICAgICAgOjo9IHByaW1hcnkgIigiIFthcmd1bWVudF9saXN0IFsiLCJdIHwgJworICAgICAgICAgICdjb21wcmVoZW5zaW9uXSAiKSJcbicKKyAgICAgICAgICAnICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIgJworICAgICAgICAgICdzdGFycmVkX2FuZF9rZXl3b3Jkc11cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICBbIiwiIGtleXdvcmRzX2FyZ3VtZW50c11cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBzdGFycmVkX2FuZF9rZXl3b3JkcyBbIiwiICcKKyAgICAgICAgICAna2V5d29yZHNfYXJndW1lbnRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmRzX2FyZ3VtZW50c1xuJworICAgICAgICAgICcgICBwb3NpdGlvbmFsX2FyZ3VtZW50cyA6Oj0gWyIqIl0gZXhwcmVzc2lvbiAoIiwiIFsiKiJdICcKKyAgICAgICAgICAnZXhwcmVzc2lvbikqXG4nCisgICAgICAgICAgJyAgIHN0YXJyZWRfYW5kX2tleXdvcmRzIDo6PSAoIioiIGV4cHJlc3Npb24gfCBrZXl3b3JkX2l0ZW0pXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiICIqIiBleHByZXNzaW9uIHwgIiwiICcKKyAgICAgICAgICAna2V5d29yZF9pdGVtKSpcbicKKyAgICAgICAgICAnICAga2V5d29yZHNfYXJndW1lbnRzICAgOjo9IChrZXl3b3JkX2l0ZW0gfCAiKioiIGV4cHJlc3Npb24pXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBrZXl3b3JkX2l0ZW0gfCAiKioiIGV4cHJlc3Npb24pKlxuJworICAgICAgICAgICcgICBrZXl3b3JkX2l0ZW0gICAgICAgICA6Oj0gaWRlbnRpZmllciAiPSIgZXhwcmVzc2lvblxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQW4gb3B0aW9uYWwgdHJhaWxpbmcgY29tbWEgbWF5IGJlIHByZXNlbnQgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgYW5kXG4nCisgICAgICAgICAgJ2tleXdvcmQgYXJndW1lbnRzIGJ1dCBkb2VzIG5vdCBhZmZlY3QgdGhlIHNlbWFudGljcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYSBjYWxsYWJsZSBvYmplY3QgKHVzZXItZGVmaW5lZFxuJworICAgICAgICAgICdmdW5jdGlvbnMsIGJ1aWx0LWluIGZ1bmN0aW9ucywgbWV0aG9kcyBvZiBidWlsdC1pbiBvYmplY3RzLCBjbGFzc1xuJworICAgICAgICAgICdvYmplY3RzLCBtZXRob2RzIG9mIGNsYXNzIGluc3RhbmNlcywgYW5kIGFsbCBvYmplY3RzIGhhdmluZyBhXG4nCisgICAgICAgICAgJyJfX2NhbGxfXygpIiBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbicKKyAgICAgICAgICAnZXZhbHVhdGVkIGJlZm9yZSB0aGUgY2FsbCBpcyBhdHRlbXB0ZWQuICBQbGVhc2UgcmVmZXIgdG8gc2VjdGlvblxuJworICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlIHN5bnRheCBvZiBmb3JtYWwgKnBhcmFtZXRlciogbGlzdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcHJlc2VudCwgdGhleSBhcmUgZmlyc3QgY29udmVydGVkIHRvXG4nCisgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnRzLCBhcyBmb2xsb3dzLiAgRmlyc3QsIGEgbGlzdCBvZiB1bmZpbGxlZCBzbG90cyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJ2NyZWF0ZWQgZm9yIHRoZSBmb3JtYWwgcGFyYW1ldGVycy4gIElmIHRoZXJlIGFyZSBOIHBvc2l0aW9uYWxcbicKKyAgICAgICAgICAnYXJndW1lbnRzLCB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIGZpcnN0IE4gc2xvdHMuICBOZXh0LCBmb3IgZWFjaFxuJworICAgICAgICAgICdrZXl3b3JkIGFyZ3VtZW50LCB0aGUgaWRlbnRpZmllciBpcyB1c2VkIHRvIGRldGVybWluZSB0aGVcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyBzbG90IChpZiB0aGUgaWRlbnRpZmllciBpcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgJworICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAncGFyYW1ldGVyIG5hbWUsIHRoZSBmaXJzdCBzbG90IGlzIHVzZWQsIGFuZCBzbyBvbikuICBJZiB0aGUgc2xvdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJ2FscmVhZHkgZmlsbGVkLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIE90aGVyd2lzZSwgdGhlXG4nCisgICAgICAgICAgJ3ZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiBpcyAiTm9uZSIsIGl0IGZpbGxzIHRoZSBzbG90KS4gIFdoZW4gYWxsIGFyZ3VtZW50cyBoYXZlXG4nCisgICAgICAgICAgJ2JlZW4gcHJvY2Vzc2VkLCB0aGUgc2xvdHMgdGhhdCBhcmUgc3RpbGwgdW5maWxsZWQgYXJlIGZpbGxlZCB3aXRoICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICcoRGVmYXVsdFxuJworICAgICAgICAgICd2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbicKKyAgICAgICAgICAnbXV0YWJsZSBvYmplY3Qgc3VjaCBhcyBhIGxpc3Qgb3IgZGljdGlvbmFyeSB1c2VkIGFzIGRlZmF1bHQgdmFsdWUgJworICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgImJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb24ndCBzcGVjaWZ5IGFuIGFyZ3VtZW50IHZhbHVlIGZvciAiCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdjb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgJworICAgICAgICAgICdhbnlcbicKKyAgICAgICAgICAndW5maWxsZWQgc2xvdHMgZm9yIHdoaWNoIG5vIGRlZmF1bHQgdmFsdWUgaXMgc3BlY2lmaWVkLCBhICcKKyAgICAgICAgICAnIlR5cGVFcnJvciJcbicKKyAgICAgICAgICAnZXhjZXB0aW9uIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGxpc3Qgb2YgZmlsbGVkIHNsb3RzIGlzIHVzZWQgJworICAgICAgICAgICdhc1xuJworICAgICAgICAgICd0aGUgYXJndW1lbnQgbGlzdCBmb3IgdGhlIGNhbGwuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEFuIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlXG4nCisgICAgICAgICAgJ2J1aWx0LWluIGZ1bmN0aW9ucyB3aG9zZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgbmFtZXMsICcKKyAgICAgICAgICAnZXZlblxuJworICAgICAgICAgICJpZiB0aGV5IGFyZSAnbmFtZWQnIGZvciB0aGUgcHVycG9zZSBvZiBkb2N1bWVudGF0aW9uLCBhbmQgd2hpY2hcbiIKKyAgICAgICAgICAndGhlcmVmb3JlIGNhbm5vdCBiZSBzdXBwbGllZCBieSBrZXl3b3JkLiAgSW4gQ1B5dGhvbiwgdGhpcyBpcyB0aGUgJworICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgJ2ZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgaW4gQyB0aGF0IHVzZSAiUHlBcmdfUGFyc2VUdXBsZSgpIiB0byAnCisgICAgICAgICAgJ3BhcnNlXG4nCisgICAgICAgICAgJ3RoZWlyIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCAnCisgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICdzbG90cywgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLCB1bmxlc3MgYSBmb3JtYWwgJworICAgICAgICAgICdwYXJhbWV0ZXJcbicKKyAgICAgICAgICAndXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCAnCisgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICdwYXJhbWV0ZXIgcmVjZWl2ZXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlc3MgcG9zaXRpb25hbCAnCisgICAgICAgICAgJ2FyZ3VtZW50c1xuJworICAgICAgICAgICcob3IgYW4gZW1wdHkgdHVwbGUgaWYgdGhlcmUgd2VyZSBubyBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgYW55IGtleXdvcmQgYXJndW1lbnQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGZvcm1hbCBwYXJhbWV0ZXJcbicKKyAgICAgICAgICAnbmFtZSwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLCB1bmxlc3MgYSBmb3JtYWwgcGFyYW1ldGVyXG4nCisgICAgICAgICAgJ3VzaW5nIHRoZSBzeW50YXggIioqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0ICcKKyAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciByZWNlaXZlcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgZXhjZXNzIGtleXdvcmRcbicKKyAgICAgICAgICAnYXJndW1lbnRzICh1c2luZyB0aGUga2V5d29yZHMgYXMga2V5cyBhbmQgdGhlIGFyZ3VtZW50IHZhbHVlcyBhc1xuJworICAgICAgICAgICdjb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAnZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlIHN5bnRheCAiKmV4cHJlc3Npb24iIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsICcKKyAgICAgICAgICAnImV4cHJlc3Npb24iXG4nCisgICAgICAgICAgJ211c3QgZXZhbHVhdGUgdG8gYW4gKml0ZXJhYmxlKi4gIEVsZW1lbnRzIGZyb20gdGhlc2UgaXRlcmFibGVzIGFyZVxuJworICAgICAgICAgICd0cmVhdGVkIGFzIGlmIHRoZXkgd2VyZSBhZGRpdGlvbmFsIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgRm9yIHRoZSAnCisgICAgICAgICAgJ2NhbGxcbicKKyAgICAgICAgICAnImYoeDEsIHgyLCAqeSwgeDMsIHg0KSIsIGlmICp5KiBldmFsdWF0ZXMgdG8gYSBzZXF1ZW5jZSAqeTEqLCAuLi4sXG4nCisgICAgICAgICAgJyp5TSosIHRoaXMgaXMgZXF1aXZhbGVudCB0byBhIGNhbGwgd2l0aCBNKzQgcG9zaXRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICcqeDEqLFxuJworICAgICAgICAgICcqeDIqLCAqeTEqLCAuLi4sICp5TSosICp4MyosICp4NCouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNvbnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdCBhbHRob3VnaCB0aGUgIipleHByZXNzaW9uIiBzeW50YXggJworICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAnYXBwZWFyICphZnRlciogZXhwbGljaXQga2V5d29yZCBhcmd1bWVudHMsIGl0IGlzIHByb2Nlc3NlZCAnCisgICAgICAgICAgJypiZWZvcmUqXG4nCisgICAgICAgICAgJ3RoZSBrZXl3b3JkIGFyZ3VtZW50cyAoYW5kIGFueSAiKipleHByZXNzaW9uIiBhcmd1bWVudHMgLS0gc2VlICcKKyAgICAgICAgICAnYmVsb3cpLlxuJworICAgICAgICAgICdTbzpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgID4+PiBkZWYgZihhLCBiKTpcbicKKyAgICAgICAgICAnICAgLi4uICAgICBwcmludChhLCBiKVxuJworICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAnICAgPj4+IGYoYj0xLCAqKDIsKSlcbicKKyAgICAgICAgICAnICAgMiAxXG4nCisgICAgICAgICAgJyAgID4+PiBmKGE9MSwgKigyLCkpXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4nCisgICAgICAgICAgIiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ2EnXG4iCisgICAgICAgICAgJyAgID4+PiBmKDEsICooMiwpKVxuJworICAgICAgICAgICcgICAxIDJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0l0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSAiKmV4cHJlc3Npb24iICcKKyAgICAgICAgICAnc3ludGF4XG4nCisgICAgICAgICAgJ3RvIGJlIHVzZWQgaW4gdGhlIHNhbWUgY2FsbCwgc28gaW4gcHJhY3RpY2UgdGhpcyBjb25mdXNpb24gZG9lcyAnCisgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICdhcmlzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIHRoZSBzeW50YXggIioqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbicKKyAgICAgICAgICAnImV4cHJlc3Npb24iIG11c3QgZXZhbHVhdGUgdG8gYSAqbWFwcGluZyosIHRoZSBjb250ZW50cyBvZiB3aGljaCAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICd0cmVhdGVkIGFzIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMuICBJZiBhIGtleXdvcmQgaXMgYWxyZWFkeVxuJworICAgICAgICAgICdwcmVzZW50IChhcyBhbiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50LCBvciBmcm9tIGFub3RoZXIgJworICAgICAgICAgICd1bnBhY2tpbmcpLFxuJworICAgICAgICAgICdhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdGb3JtYWwgcGFyYW1ldGVycyB1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciJcbicKKyAgICAgICAgICAnY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG4nCisgICAgICAgICAgJ25hbWVzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNTogRnVuY3Rpb24gY2FsbHMgYWNjZXB0IGFueSBudW1iZXIgb2YgIioiICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyIqKiIgdW5wYWNraW5ncywgcG9zaXRpb25hbCBhcmd1bWVudHMgbWF5IGZvbGxvdyBpdGVyYWJsZSAnCisgICAgICAgICAgJ3VucGFja2luZ3NcbicKKyAgICAgICAgICAnKCIqIiksIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBtYXkgZm9sbG93IGRpY3Rpb25hcnkgdW5wYWNraW5ncyAnCisgICAgICAgICAgJygiKioiKS5cbicKKyAgICAgICAgICAnT3JpZ2luYWxseSBwcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2FsbCBhbHdheXMgcmV0dXJucyBzb21lIHZhbHVlLCBwb3NzaWJseSAiTm9uZSIsIHVubGVzcyBpdCByYWlzZXMgJworICAgICAgICAgICdhblxuJworICAgICAgICAgICdleGNlcHRpb24uICBIb3cgdGhpcyB2YWx1ZSBpcyBjb21wdXRlZCBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIHRoZVxuJworICAgICAgICAgICdjYWxsYWJsZSBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBpdCBpcy0tLVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSB1c2VyLWRlZmluZWQgZnVuY3Rpb246XG4nCisgICAgICAgICAgJyAgIFRoZSBjb2RlIGJsb2NrIGZvciB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQsIHBhc3NpbmcgaXQgdGhlXG4nCisgICAgICAgICAgJyAgIGFyZ3VtZW50IGxpc3QuICBUaGUgZmlyc3QgdGhpbmcgdGhlIGNvZGUgYmxvY2sgd2lsbCBkbyBpcyBiaW5kICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIGZvcm1hbCBwYXJhbWV0ZXJzIHRvIHRoZSBhcmd1bWVudHM7IHRoaXMgaXMgZGVzY3JpYmVkIGluICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICcgICBGdW5jdGlvbiBkZWZpbml0aW9ucy4gIFdoZW4gdGhlIGNvZGUgYmxvY2sgZXhlY3V0ZXMgYSAicmV0dXJuIlxuJworICAgICAgICAgICcgICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAnY2FsbC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuJworICAgICAgICAgICcgICBUaGUgcmVzdWx0IGlzIHVwIHRvIHRoZSBpbnRlcnByZXRlcjsgc2VlIEJ1aWx0LWluIEZ1bmN0aW9ucyBmb3IgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgY2xhc3Mgb2JqZWN0OlxuJworICAgICAgICAgICcgICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBpbnN0YW5jZSBtZXRob2Q6XG4nCisgICAgICAgICAgJyAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gJworICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICcgICBsaXN0IHRoYXQgaXMgb25lIGxvbmdlciB0aGFuIHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjYWxsOiB0aGVcbicKKyAgICAgICAgICAnICAgaW5zdGFuY2UgYmVjb21lcyB0aGUgZmlyc3QgYXJndW1lbnQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGNsYXNzIGluc3RhbmNlOlxuJworICAgICAgICAgICcgICBUaGUgY2xhc3MgbXVzdCBkZWZpbmUgYSAiX19jYWxsX18oKSIgbWV0aG9kOyB0aGUgZWZmZWN0IGlzIHRoZW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgc2FtZSBhcyBpZiB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkLlxuJywKKyAnY2xhc3MnOiAnXG4nCisgICAgICAgICAgJ0NsYXNzIGRlZmluaXRpb25zXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAndHlwZSBoaWVyYXJjaHkpOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiAnCisgICAgICAgICAgJ3N1aXRlXG4nCisgICAgICAgICAgJyAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW2FyZ3VtZW50X2xpc3RdICIpIlxuJworICAgICAgICAgICcgICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlICcKKyAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICd1c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSBNZXRhY2xhc3NlcyBmb3IgbW9yZVxuJworICAgICAgICAgICdhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhICcKKyAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAnb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZSAnCisgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAnaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgaGVuY2UsXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjbGFzcyBGb286XG4nCisgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjbGFzcyBGb28ob2JqZWN0KTpcbicKKyAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIlRoZSBjbGFzcydzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbiIKKyAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG4nCisgICAgICAgICAgJ29yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG4nCisgICAgICAgICAgImZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCAiCisgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICdleGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gJworICAgICAgICAgICdBXG4nCisgICAgICAgICAgJ2NsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSAnCisgICAgICAgICAgJ2Jhc2VcbicKKyAgICAgICAgICAnY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgJ2RpY3Rpb25hcnkuXG4nCisgICAgICAgICAgJ1RoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxuJworICAgICAgICAgICduYW1lc3BhY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgb3JkZXIgaW4gd2hpY2ggYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MgYm9keSBpc1xuJworICAgICAgICAgICdwcmVzZXJ2ZWQgaW4gdGhlIG5ldyBjbGFzc1wncyAiX19kaWN0X18iLiAgTm90ZSB0aGF0IHRoaXMgaXMgJworICAgICAgICAgICdyZWxpYWJsZVxuJworICAgICAgICAgICdvbmx5IHJpZ2h0IGFmdGVyIHRoZSBjbGFzcyBpcyBjcmVhdGVkIGFuZCBvbmx5IGZvciBjbGFzc2VzIHRoYXQgJworICAgICAgICAgICd3ZXJlXG4nCisgICAgICAgICAgJ2RlZmluZWQgdXNpbmcgdGhlIGRlZmluaXRpb24gc3ludGF4LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nICcKKyAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQGYxKGFyZylcbicKKyAgICAgICAgICAnICAgQGYyXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjbGFzcyBGb286IHBhc3NcbicKKyAgICAgICAgICAnICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJ2Z1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IGlzIHRoZW4gYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uICIKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ2NsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSAnCisgICAgICAgICAgJ2F0dHJpYnV0ZXNcbicKKyAgICAgICAgICAnY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzIGFuZFxuJworICAgICAgICAgICdpbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICcKKyAgICAgICAgICAnIiJzZWxmLm5hbWUiIixcbicKKyAgICAgICAgICAnYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lICcKKyAgICAgICAgICAnbmFtZVxuJworICAgICAgICAgICd3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyAnCisgICAgICAgICAgJ2RlZmF1bHRzXG4nCisgICAgICAgICAgJ2ZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICd1bmV4cGVjdGVkIHJlc3VsdHMuICBEZXNjcmlwdG9ycyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbicKKyAgICAgICAgICAndmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbicKKyAgICAgICAgICAnICBDbGFzcyBEZWNvcmF0b3JzXG4nLAorICdjb21wYXJpc29ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAnQ29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAgICAnKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1VubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAncHJpb3JpdHksXG4nCisgICAgICAgICAgICAgICAgJ3doaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgJworICAgICAgICAgICAgICAgICdiaXR3aXNlXG4nCisgICAgICAgICAgICAgICAgJ29wZXJhdGlvbi4gIEFsc28gdW5saWtlIEMsIGV4cHJlc3Npb25zIGxpa2UgImEgPCBiIDwgYyIgaGF2ZSAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdpbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbicKKyAgICAgICAgICAgICAgICAnICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuJworICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8ICJpcyIgWyJub3QiXSB8IFsibm90Il0gImluIlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6ICJUcnVlIiBvciAiRmFsc2UiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiAnCisgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgJ2VxdWl2YWxlbnQgdG8gInggPCB5IGFuZCB5IDw9IHoiLCBleGNlcHQgdGhhdCAieSIgaXMgJworICAgICAgICAgICAgICAgICdldmFsdWF0ZWQgb25seVxuJworICAgICAgICAgICAgICAgICdvbmNlIChidXQgaW4gYm90aCBjYXNlcyAieiIgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiAieCA8ICcKKyAgICAgICAgICAgICAgICAneSIgaXNcbicKKyAgICAgICAgICAgICAgICAnZm91bmQgdG8gYmUgZmFsc2UpLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAnCisgICAgICAgICAgICAgICAgJypvcDEqLFxuJworICAgICAgICAgICAgICAgICcqb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gImEgb3AxIGIgb3AyICcKKyAgICAgICAgICAgICAgICAnYyAuLi4geVxuJworICAgICAgICAgICAgICAgICdvcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOICcKKyAgICAgICAgICAgICAgICAneiIsIGV4Y2VwdFxuJworICAgICAgICAgICAgICAgICd0aGF0IGVhY2ggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYXQgbW9zdCBvbmNlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnTm90ZSB0aGF0ICJhIG9wMSBiIG9wMiBjIiBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gYmV0d2VlblxuJworICAgICAgICAgICAgICAgICcqYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICcKKyAgICAgICAgICAgICAgICAnKHRob3VnaFxuJworICAgICAgICAgICAgICAgICdwZXJoYXBzIG5vdCBwcmV0dHkpLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1ZhbHVlIGNvbXBhcmlzb25zXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3JzICI8IiwgIj4iLCAiPT0iLCAiPj0iLCAiPD0iLCBhbmQgIiE9IiBjb21wYXJlICcKKyAgICAgICAgICAgICAgICAndGhlIHZhbHVlc1xuJworICAgICAgICAgICAgICAgICdvZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIGRvIG5vdCBuZWVkIHRvIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICd0eXBlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ2hhcHRlciBPYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzIHN0YXRlcyB0aGF0IG9iamVjdHMgaGF2ZSBhICcKKyAgICAgICAgICAgICAgICAndmFsdWUgKGluXG4nCisgICAgICAgICAgICAgICAgJ2FkZGl0aW9uIHRvIHR5cGUgYW5kIGlkZW50aXR5KS4gIFRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaXMgYSAnCisgICAgICAgICAgICAgICAgJ3JhdGhlclxuJworICAgICAgICAgICAgICAgICdhYnN0cmFjdCBub3Rpb24gaW4gUHl0aG9uOiBGb3IgZXhhbXBsZSwgdGhlcmUgaXMgbm8gY2Fub25pY2FsICcKKyAgICAgICAgICAgICAgICAnYWNjZXNzXG4nCisgICAgICAgICAgICAgICAgIm1ldGhvZCBmb3IgYW4gb2JqZWN0J3MgdmFsdWUuICBBbHNvLCB0aGVyZSBpcyBubyByZXF1aXJlbWVudCAiCisgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgJ3ZhbHVlIG9mIGFuIG9iamVjdCBzaG91bGQgYmUgY29uc3RydWN0ZWQgaW4gYSBwYXJ0aWN1bGFyIHdheSwgJworICAgICAgICAgICAgICAgICdlLmcuXG4nCisgICAgICAgICAgICAgICAgJ2NvbXByaXNlZCBvZiBhbGwgaXRzIGRhdGEgYXR0cmlidXRlcy4gQ29tcGFyaXNvbiBvcGVyYXRvcnMgJworICAgICAgICAgICAgICAgICdpbXBsZW1lbnQgYVxuJworICAgICAgICAgICAgICAgICdwYXJ0aWN1bGFyIG5vdGlvbiBvZiB3aGF0IHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaXMuICBPbmUgY2FuICcKKyAgICAgICAgICAgICAgICAndGhpbmsgb2ZcbicKKyAgICAgICAgICAgICAgICAndGhlbSBhcyBkZWZpbmluZyB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGluZGlyZWN0bHksIGJ5IG1lYW5zICcKKyAgICAgICAgICAgICAgICAnb2YgdGhlaXJcbicKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbXBsZW1lbnRhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0JlY2F1c2UgYWxsIHR5cGVzIGFyZSAoZGlyZWN0IG9yIGluZGlyZWN0KSBzdWJ0eXBlcyBvZiAnCisgICAgICAgICAgICAgICAgJyJvYmplY3QiLCB0aGV5XG4nCisgICAgICAgICAgICAgICAgJ2luaGVyaXQgdGhlIGRlZmF1bHQgY29tcGFyaXNvbiBiZWhhdmlvciBmcm9tICJvYmplY3QiLiAgVHlwZXMgJworICAgICAgICAgICAgICAgICdjYW5cbicKKyAgICAgICAgICAgICAgICAnY3VzdG9taXplIHRoZWlyIGNvbXBhcmlzb24gYmVoYXZpb3IgYnkgaW1wbGVtZW50aW5nICpyaWNoICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICdtZXRob2RzKiBsaWtlICJfX2x0X18oKSIsIGRlc2NyaWJlZCBpbiBCYXNpYyBjdXN0b21pemF0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb24gKCI9PSIgYW5kICIhPSIpICcKKyAgICAgICAgICAgICAgICAnaXMgYmFzZWRcbicKKyAgICAgICAgICAgICAgICAnb24gdGhlIGlkZW50aXR5IG9mIHRoZSBvYmplY3RzLiAgSGVuY2UsIGVxdWFsaXR5IGNvbXBhcmlzb24gJworICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSByZXN1bHRzIGluIGVxdWFsaXR5LCBhbmQgJworICAgICAgICAgICAgICAgICdlcXVhbGl0eVxuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIG9mIGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBpZGVudGl0aWVzIHJlc3VsdHMgaW5cbicKKyAgICAgICAgICAgICAgICAnaW5lcXVhbGl0eS4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoZSAnCisgICAgICAgICAgICAgICAgJ2Rlc2lyZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgJ2FsbCBvYmplY3RzIHNob3VsZCBiZSByZWZsZXhpdmUgKGkuZS4gInggaXMgeSIgaW1wbGllcyAieCA9PSAnCisgICAgICAgICAgICAgICAgJ3kiKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0EgZGVmYXVsdCBvcmRlciBjb21wYXJpc29uICgiPCIsICI+IiwgIjw9IiwgYW5kICI+PSIpIGlzIG5vdCAnCisgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkO1xuJworICAgICAgICAgICAgICAgICdhbiBhdHRlbXB0IHJhaXNlcyAiVHlwZUVycm9yIi4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAnYmVoYXZpb3JcbicKKyAgICAgICAgICAgICAgICAnaXMgdGhlIGxhY2sgb2YgYSBzaW1pbGFyIGludmFyaWFudCBhcyBmb3IgZXF1YWxpdHkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgZXF1YWxpdHkgY29tcGFyaXNvbiwgdGhhdCAnCisgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB3aXRoXG4nCisgICAgICAgICAgICAgICAgJ2RpZmZlcmVudCBpZGVudGl0aWVzIGFyZSBhbHdheXMgdW5lcXVhbCwgbWF5IGJlIGluIGNvbnRyYXN0ICcKKyAgICAgICAgICAgICAgICAndG8gd2hhdFxuJworICAgICAgICAgICAgICAgICd0eXBlcyB3aWxsIG5lZWQgdGhhdCBoYXZlIGEgc2Vuc2libGUgZGVmaW5pdGlvbiBvZiBvYmplY3QgJworICAgICAgICAgICAgICAgICd2YWx1ZSBhbmRcbicKKyAgICAgICAgICAgICAgICAndmFsdWUtYmFzZWQgZXF1YWxpdHkuICBTdWNoIHR5cGVzIHdpbGwgbmVlZCB0byBjdXN0b21pemUgJworICAgICAgICAgICAgICAgICd0aGVpclxuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGJlaGF2aW9yLCBhbmQgaW4gZmFjdCwgYSBudW1iZXIgb2YgYnVpbHQtaW4gdHlwZXMgJworICAgICAgICAgICAgICAgICdoYXZlIGRvbmVcbicKKyAgICAgICAgICAgICAgICAndGhhdC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgdGhlIGNvbXBhcmlzb24gYmVoYXZpb3Igb2YgdGhlICcKKyAgICAgICAgICAgICAgICAnbW9zdFxuJworICAgICAgICAgICAgICAgICdpbXBvcnRhbnQgYnVpbHQtaW4gdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIE51bWJlcnMgb2YgYnVpbHQtaW4gbnVtZXJpYyB0eXBlcyAoTnVtZXJpYyBUeXBlcyAtLS0gaW50LCAnCisgICAgICAgICAgICAgICAgJ2Zsb2F0LFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBsZXgpIGFuZCBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSB0eXBlcyAnCisgICAgICAgICAgICAgICAgJyJmcmFjdGlvbnMuRnJhY3Rpb24iIGFuZFxuJworICAgICAgICAgICAgICAgICcgICJkZWNpbWFsLkRlY2ltYWwiIGNhbiBiZSBjb21wYXJlZCB3aXRoaW4gYW5kIGFjcm9zcyB0aGVpciAnCisgICAgICAgICAgICAgICAgJ3R5cGVzLFxuJworICAgICAgICAgICAgICAgICcgIHdpdGggdGhlIHJlc3RyaWN0aW9uIHRoYXQgY29tcGxleCBudW1iZXJzIGRvIG5vdCBzdXBwb3J0ICcKKyAgICAgICAgICAgICAgICAnb3JkZXJcbicKKyAgICAgICAgICAgICAgICAnICBjb21wYXJpc29uLiAgV2l0aGluIHRoZSBsaW1pdHMgb2YgdGhlIHR5cGVzIGludm9sdmVkLCB0aGV5ICcKKyAgICAgICAgICAgICAgICAnY29tcGFyZVxuJworICAgICAgICAgICAgICAgICcgIG1hdGhlbWF0aWNhbGx5IChhbGdvcml0aG1pY2FsbHkpIGNvcnJlY3Qgd2l0aG91dCBsb3NzIG9mICcKKyAgICAgICAgICAgICAgICAncHJlY2lzaW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBUaGUgbm90LWEtbnVtYmVyIHZhbHVlcyAiZmxvYXQoXCdOYU5cJykiIGFuZCAnCisgICAgICAgICAgICAgICAgJyJEZWNpbWFsKFwnTmFOXCcpIiBhcmVcbicKKyAgICAgICAgICAgICAgICAnICBzcGVjaWFsLiAgVGhleSBhcmUgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMgKCJ4IGlzIHgiIGlzICcKKyAgICAgICAgICAgICAgICAndHJ1ZSkgYnV0XG4nCisgICAgICAgICAgICAgICAgJyAgYXJlIG5vdCBlcXVhbCB0byB0aGVtc2VsdmVzICgieCA9PSB4IiBpcyBmYWxzZSkuICAnCisgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxseSxcbicKKyAgICAgICAgICAgICAgICAnICBjb21wYXJpbmcgYW55IG51bWJlciB0byBhIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiAnCisgICAgICAgICAgICAgICAgJyJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJyAgRm9yIGV4YW1wbGUsIGJvdGggIjMgPCBmbG9hdChcJ05hTlwnKSIgYW5kICJmbG9hdChcJ05hTlwnKSAnCisgICAgICAgICAgICAgICAgJzwgMyIgd2lsbFxuJworICAgICAgICAgICAgICAgICcgIHJldHVybiAiRmFsc2UiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBCaW5hcnkgc2VxdWVuY2VzIChpbnN0YW5jZXMgb2YgImJ5dGVzIiBvciAiYnl0ZWFycmF5IikgY2FuICcKKyAgICAgICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgICAgICAnICBjb21wYXJlZCB3aXRoaW4gYW5kIGFjcm9zcyB0aGVpciB0eXBlcy4gIFRoZXkgY29tcGFyZVxuJworICAgICAgICAgICAgICAgICcgIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIHZhbHVlcyBvZiB0aGVpciAnCisgICAgICAgICAgICAgICAgJ2VsZW1lbnRzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBTdHJpbmdzIChpbnN0YW5jZXMgb2YgInN0ciIpIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgJworICAgICAgICAgICAgICAgICd1c2luZyB0aGVcbicKKyAgICAgICAgICAgICAgICAnICBudW1lcmljYWwgVW5pY29kZSBjb2RlIHBvaW50cyAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICAgICcgICJvcmQoKSIpIG9mIHRoZWlyIGNoYXJhY3RlcnMuIFszXVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBTdHJpbmdzIGFuZCBiaW5hcnkgc2VxdWVuY2VzIGNhbm5vdCBiZSBkaXJlY3RseSBjb21wYXJlZC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogU2VxdWVuY2VzIChpbnN0YW5jZXMgb2YgInR1cGxlIiwgImxpc3QiLCBvciAicmFuZ2UiKSBjYW4gJworICAgICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmVkIG9ubHkgd2l0aGluIGVhY2ggb2YgdGhlaXIgdHlwZXMsIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgICAncmVzdHJpY3Rpb24gdGhhdFxuJworICAgICAgICAgICAgICAgICcgIHJhbmdlcyBkbyBub3Qgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uLiAgRXF1YWxpdHkgJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGFjcm9zc1xuJworICAgICAgICAgICAgICAgICcgIHRoZXNlIHR5cGVzIHJlc3VsdHMgaW4gdW5lcXVhbGl0eSwgYW5kIG9yZGVyaW5nIGNvbXBhcmlzb24gJworICAgICAgICAgICAgICAgICdhY3Jvc3NcbicKKyAgICAgICAgICAgICAgICAnICB0aGVzZSB0eXBlcyByYWlzZXMgIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFNlcXVlbmNlcyBjb21wYXJlIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbicKKyAgICAgICAgICAgICAgICAnICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLCB3aGVyZWJ5IHJlZmxleGl2aXR5IG9mIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgJyAgZW5mb3JjZWQuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIEluIGVuZm9yY2luZyByZWZsZXhpdml0eSBvZiBlbGVtZW50cywgdGhlIGNvbXBhcmlzb24gb2YgJworICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uc1xuJworICAgICAgICAgICAgICAgICcgIGFzc3VtZXMgdGhhdCBmb3IgYSBjb2xsZWN0aW9uIGVsZW1lbnQgIngiLCAieCA9PSB4IiBpcyAnCisgICAgICAgICAgICAgICAgJ2Fsd2F5cyB0cnVlLlxuJworICAgICAgICAgICAgICAgICcgIEJhc2VkIG9uIHRoYXQgYXNzdW1wdGlvbiwgZWxlbWVudCBpZGVudGl0eSBpcyBjb21wYXJlZCAnCisgICAgICAgICAgICAgICAgJ2ZpcnN0LCBhbmRcbicKKyAgICAgICAgICAgICAgICAnICBlbGVtZW50IGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIG9ubHkgZm9yIGRpc3RpbmN0ICcKKyAgICAgICAgICAgICAgICAnZWxlbWVudHMuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgJyAgYXBwcm9hY2ggeWllbGRzIHRoZSBzYW1lIHJlc3VsdCBhcyBhIHN0cmljdCBlbGVtZW50ICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICcgIHdvdWxkLCBpZiB0aGUgY29tcGFyZWQgZWxlbWVudHMgYXJlIHJlZmxleGl2ZS4gIEZvciAnCisgICAgICAgICAgICAgICAgJ25vbi1yZWZsZXhpdmVcbicKKyAgICAgICAgICAgICAgICAnICBlbGVtZW50cywgdGhlIHJlc3VsdCBpcyBkaWZmZXJlbnQgdGhhbiBmb3Igc3RyaWN0IGVsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAnICBjb21wYXJpc29uLCBhbmQgbWF5IGJlIHN1cnByaXNpbmc6ICBUaGUgbm9uLXJlZmxleGl2ZSAnCisgICAgICAgICAgICAgICAgJ25vdC1hLW51bWJlclxuJworICAgICAgICAgICAgICAgICcgIHZhbHVlcyBmb3IgZXhhbXBsZSByZXN1bHQgaW4gdGhlIGZvbGxvd2luZyBjb21wYXJpc29uICcKKyAgICAgICAgICAgICAgICAnYmVoYXZpb3Igd2hlblxuJworICAgICAgICAgICAgICAgICcgIHVzZWQgaW4gYSBsaXN0OlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAiICAgICA+Pj4gbmFuID0gZmxvYXQoJ05hTicpXG4iCisgICAgICAgICAgICAgICAgJyAgICAgPj4+IG5hbiBpcyBuYW5cbicKKyAgICAgICAgICAgICAgICAnICAgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgJyAgICAgPj4+IG5hbiA9PSBuYW5cbicKKyAgICAgICAgICAgICAgICAnICAgICBGYWxzZSAgICAgICAgICAgICAgICAgPC0tIHRoZSBkZWZpbmVkIG5vbi1yZWZsZXhpdmUgJworICAgICAgICAgICAgICAgICdiZWhhdmlvciBvZiBOYU5cbicKKyAgICAgICAgICAgICAgICAnICAgICA+Pj4gW25hbl0gPT0gW25hbl1cbicKKyAgICAgICAgICAgICAgICAnICAgICBUcnVlICAgICAgICAgICAgICAgICAgPC0tIGxpc3QgZW5mb3JjZXMgcmVmbGV4aXZpdHkgYW5kICcKKyAgICAgICAgICAgICAgICAndGVzdHMgaWRlbnRpdHkgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgTGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYmV0d2VlbiBidWlsdC1pbiBjb2xsZWN0aW9ucyAnCisgICAgICAgICAgICAgICAgJ3dvcmtzIGFzXG4nCisgICAgICAgICAgICAgICAgJyAgZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgKiBGb3IgdHdvIGNvbGxlY3Rpb25zIHRvIGNvbXBhcmUgZXF1YWwsIHRoZXkgbXVzdCBiZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgJyAgICB0eXBlLCBoYXZlIHRoZSBzYW1lIGxlbmd0aCwgYW5kIGVhY2ggcGFpciBvZiAnCisgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmdcbicKKyAgICAgICAgICAgICAgICAnICAgIGVsZW1lbnRzIG11c3QgY29tcGFyZSBlcXVhbCAoZm9yIGV4YW1wbGUsICJbMSwyXSA9PSAnCisgICAgICAgICAgICAgICAgJygxLDIpIiBpc1xuJworICAgICAgICAgICAgICAgICcgICAgZmFsc2UgYmVjYXVzZSB0aGUgdHlwZSBpcyBub3QgdGhlIHNhbWUpLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAqIENvbGxlY3Rpb25zIHRoYXQgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uIGFyZSBvcmRlcmVkIHRoZSAnCisgICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICAnICAgIGFzIHRoZWlyIGZpcnN0IHVuZXF1YWwgZWxlbWVudHMgKGZvciBleGFtcGxlLCAiWzEsMix4XSA8PSAnCisgICAgICAgICAgICAgICAgJ1sxLDIseV0iXG4nCisgICAgICAgICAgICAgICAgJyAgICBoYXMgdGhlIHNhbWUgdmFsdWUgYXMgInggPD0geSIpLiAgSWYgYSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAgICAgICAnZWxlbWVudCBkb2VzXG4nCisgICAgICAgICAgICAgICAgJyAgICBub3QgZXhpc3QsIHRoZSBzaG9ydGVyIGNvbGxlY3Rpb24gaXMgb3JkZXJlZCBmaXJzdCAoZm9yICcKKyAgICAgICAgICAgICAgICAnZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAnICAgICJbMSwyXSA8IFsxLDIsM10iIGlzIHRydWUpLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBNYXBwaW5ncyAoaW5zdGFuY2VzIG9mICJkaWN0IikgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiAnCisgICAgICAgICAgICAgICAgJ3RoZXlcbicKKyAgICAgICAgICAgICAgICAnICBoYXZlIGVxdWFsICooa2V5LCB2YWx1ZSkqIHBhaXJzLiBFcXVhbGl0eSBjb21wYXJpc29uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgJ2tleXMgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgZWxlbWVudHMgZW5mb3JjZXMgcmVmbGV4aXZpdHkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIE9yZGVyIGNvbXBhcmlzb25zICgiPCIsICI+IiwgIjw9IiwgYW5kICI+PSIpIHJhaXNlICcKKyAgICAgICAgICAgICAgICAnIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIFNldHMgKGluc3RhbmNlcyBvZiAic2V0IiBvciAiZnJvemVuc2V0IikgY2FuIGJlIGNvbXBhcmVkICcKKyAgICAgICAgICAgICAgICAnd2l0aGluXG4nCisgICAgICAgICAgICAgICAgJyAgYW5kIGFjcm9zcyB0aGVpciB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgVGhleSBkZWZpbmUgb3JkZXIgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiBzdWJzZXQgYW5kICcKKyAgICAgICAgICAgICAgICAnc3VwZXJzZXRcbicKKyAgICAgICAgICAgICAgICAnICB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAoZm9yICcKKyAgICAgICAgICAgICAgICAnZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAnICB0aGUgdHdvIHNldHMgInsxLDJ9IiBhbmQgInsyLDN9IiBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyAnCisgICAgICAgICAgICAgICAgJ29mIG9uZVxuJworICAgICAgICAgICAgICAgICcgIGFub3RoZXIsIG5vciBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXIpLiAgQWNjb3JkaW5nbHksIHNldHMgJworICAgICAgICAgICAgICAgICdhcmUgbm90XG4nCisgICAgICAgICAgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsICcKKyAgICAgICAgICAgICAgICAnb3JkZXJpbmdcbicKKyAgICAgICAgICAgICAgICAnICAoZm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgJworICAgICAgICAgICAgICAgICd1bmRlZmluZWRcbicKKyAgICAgICAgICAgICAgICAnICByZXN1bHRzIGdpdmVuIGEgbGlzdCBvZiBzZXRzIGFzIGlucHV0cykuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIENvbXBhcmlzb24gb2Ygc2V0cyBlbmZvcmNlcyByZWZsZXhpdml0eSBvZiBpdHMgZWxlbWVudHMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIE1vc3Qgb3RoZXIgYnVpbHQtaW4gdHlwZXMgaGF2ZSBubyBjb21wYXJpc29uIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCxcbicKKyAgICAgICAgICAgICAgICAnICBzbyB0aGV5IGluaGVyaXQgdGhlIGRlZmF1bHQgY29tcGFyaXNvbiBiZWhhdmlvci5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1VzZXItZGVmaW5lZCBjbGFzc2VzIHRoYXQgY3VzdG9taXplIHRoZWlyIGNvbXBhcmlzb24gYmVoYXZpb3IgJworICAgICAgICAgICAgICAgICdzaG91bGRcbicKKyAgICAgICAgICAgICAgICAnZm9sbG93IHNvbWUgY29uc2lzdGVuY3kgcnVsZXMsIGlmIHBvc3NpYmxlOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBFcXVhbGl0eSBjb21wYXJpc29uIHNob3VsZCBiZSByZWZsZXhpdmUuIEluIG90aGVyIHdvcmRzLCAnCisgICAgICAgICAgICAgICAgJ2lkZW50aWNhbFxuJworICAgICAgICAgICAgICAgICcgIG9iamVjdHMgc2hvdWxkIGNvbXBhcmUgZXF1YWw6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4IGlzIHkiIGltcGxpZXMgInggPT0geSJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogQ29tcGFyaXNvbiBzaG91bGQgYmUgc3ltbWV0cmljLiBJbiBvdGhlciB3b3JkcywgdGhlICcKKyAgICAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgICAgJyAgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgcmVzdWx0OlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA9PSB5IiBhbmQgInkgPT0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggIT0geSIgYW5kICJ5ICE9IHgiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4IDwgeSIgYW5kICJ5ID4geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPD0geSIgYW5kICJ5ID49IHgiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIENvbXBhcmlzb24gc2hvdWxkIGJlIHRyYW5zaXRpdmUuIFRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICcobm9uLWV4aGF1c3RpdmUpXG4nCisgICAgICAgICAgICAgICAgJyAgZXhhbXBsZXMgaWxsdXN0cmF0ZSB0aGF0OlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA+IHkgYW5kIHkgPiB6IiBpbXBsaWVzICJ4ID4geiJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IGFuZCB5IDw9IHoiIGltcGxpZXMgInggPCB6IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBJbnZlcnNlIGNvbXBhcmlzb24gc2hvdWxkIHJlc3VsdCBpbiB0aGUgYm9vbGVhbiBuZWdhdGlvbi4gJworICAgICAgICAgICAgICAgICdJbiBvdGhlclxuJworICAgICAgICAgICAgICAgICcgIHdvcmRzLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAncmVzdWx0OlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA9PSB5IiBhbmQgIm5vdCB4ICE9IHkiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4IDwgeSIgYW5kICJub3QgeCA+PSB5IiAoZm9yIHRvdGFsIG9yZGVyaW5nKVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA+IHkiIGFuZCAibm90IHggPD0geSIgKGZvciB0b3RhbCBvcmRlcmluZylcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgVGhlIGxhc3QgdHdvIGV4cHJlc3Npb25zIGFwcGx5IHRvIHRvdGFsbHkgb3JkZXJlZCAnCisgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zIChlLmcuXG4nCisgICAgICAgICAgICAgICAgJyAgdG8gc2VxdWVuY2VzLCBidXQgbm90IHRvIHNldHMgb3IgbWFwcGluZ3MpLiBTZWUgYWxzbyB0aGVcbicKKyAgICAgICAgICAgICAgICAnICAidG90YWxfb3JkZXJpbmcoKSIgZGVjb3JhdG9yLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnUHl0aG9uIGRvZXMgbm90IGVuZm9yY2UgdGhlc2UgY29uc2lzdGVuY3kgcnVsZXMuIEluIGZhY3QsICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ25vdC1hLW51bWJlciB2YWx1ZXMgYXJlIGFuIGV4YW1wbGUgZm9yIG5vdCBmb2xsb3dpbmcgdGhlc2UgJworICAgICAgICAgICAgICAgICdydWxlcy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdNZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gJworICAgICAgICAgICAgICAgICdzIlxuJworICAgICAgICAgICAgICAgICdldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2UgJworICAgICAgICAgICAgICAgICdvdGhlcndpc2UuICAieFxuJworICAgICAgICAgICAgICAgICdub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAgICAnYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggJworICAgICAgICAgICAgICAgICciaW4iIHRlc3RzXG4nCisgICAgICAgICAgICAgICAgJ3doZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzICcKKyAgICAgICAgICAgICAgICAnc3VjaCBhc1xuJworICAgICAgICAgICAgICAgICdsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSAnCisgICAgICAgICAgICAgICAgJ2ZvciBlIGluXG4nCisgICAgICAgICAgICAgICAgJ3kpIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSAnCisgICAgICAgICAgICAgICAgJ2lmICp4KiBpc1xuJworICAgICAgICAgICAgICAgICdhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAnCisgICAgICAgICAgICAgICAgJy0xIi4gIEVtcHR5XG4nCisgICAgICAgICAgICAgICAgJ3N0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciAnCisgICAgICAgICAgICAgICAgJ3N0cmluZyxcbicKKyAgICAgICAgICAgICAgICAnc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSAiX19jb250YWluc19fKCkiICcKKyAgICAgICAgICAgICAgICAnbWV0aG9kLCAieFxuJworICAgICAgICAgICAgICAgICdpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgJworICAgICAgICAgICAgICAgICdidXQgZG9cbicKKyAgICAgICAgICAgICAgICAnZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiB3aXRoICcKKyAgICAgICAgICAgICAgICAnInggPT0geiJcbicKKyAgICAgICAgICAgICAgICAnaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAncmFpc2VkXG4nCisgICAgICAgICAgICAgICAgJ2R1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgJ2RlZmluZXNcbicKKyAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgJworICAgICAgICAgICAgICAgICdub24tXG4nCisgICAgICAgICAgICAgICAgJ25lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCAnCisgICAgICAgICAgICAgICAgJ2xvd2VyXG4nCisgICAgICAgICAgICAgICAgJ2ludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgJworICAgICAgICAgICAgICAgICdvdGhlclxuJworICAgICAgICAgICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnZXhjZXB0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSAnCisgICAgICAgICAgICAgICAgJ3ZhbHVlIG9mXG4nCisgICAgICAgICAgICAgICAgJyJpbiIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpdHkgY29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCAnCisgICAgICAgICAgICAgICAgJ2lzIHkiIGlzXG4nCisgICAgICAgICAgICAgICAgJ3RydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gIE9iamVjdCAnCisgICAgICAgICAgICAgICAgJ2lkZW50aXR5XG4nCisgICAgICAgICAgICAgICAgJ2lzIGRldGVybWluZWQgdXNpbmcgdGhlICJpZCgpIiBmdW5jdGlvbi4gICJ4IGlzIG5vdCB5IiB5aWVsZHMgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAorICdjb21wb3VuZCc6ICdcbicKKyAgICAgICAgICAgICAnQ29tcG91bmQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSAnCisgICAgICAgICAgICAgJ2FmZmVjdFxuJworICAgICAgICAgICAgICdvciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gICcKKyAgICAgICAgICAgICAnSW5cbicKKyAgICAgICAgICAgICAnZ2VuZXJhbCwgY29tcG91bmQgc3RhdGVtZW50cyBzcGFuIG11bHRpcGxlIGxpbmVzLCBhbHRob3VnaCBpbiAnCisgICAgICAgICAgICAgJ3NpbXBsZVxuJworICAgICAgICAgICAgICdpbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgJworICAgICAgICAgICAgICdsaW5lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIsICJ3aGlsZSIgYW5kICJmb3IiIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsICcKKyAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICdmbG93IGNvbnN0cnVjdHMuICAidHJ5IiBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciAnCisgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAnY29kZSBmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzLCB3aGlsZSB0aGUgIndpdGgiIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgJ2FsbG93cyB0aGVcbicKKyAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYSBibG9jayAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJ2NvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseSAnCisgICAgICAgICAgICAgJ2NvbXBvdW5kXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJBIGNvbXBvdW5kIHN0YXRlbWVudCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSAnY2xhdXNlcy4nICBBICIKKyAgICAgICAgICAgICAnY2xhdXNlXG4nCisgICAgICAgICAgICAgImNvbnNpc3RzIG9mIGEgaGVhZGVyIGFuZCBhICdzdWl0ZS4nICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxuIgorICAgICAgICAgICAgICdwYXJ0aWN1bGFyIGNvbXBvdW5kIHN0YXRlbWVudCBhcmUgYWxsIGF0IHRoZSBzYW1lIGluZGVudGF0aW9uICcKKyAgICAgICAgICAgICAnbGV2ZWwuXG4nCisgICAgICAgICAgICAgJ0VhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgJworICAgICAgICAgICAgICdhbmQgZW5kc1xuJworICAgICAgICAgICAgICd3aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbicKKyAgICAgICAgICAgICAnY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50cyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBoZWFkZXIsIGZvbGxvd2luZyB0aGUgJworICAgICAgICAgICAgICJoZWFkZXInc1xuIgorICAgICAgICAgICAgICdjb2xvbiwgb3IgaXQgY2FuIGJlIG9uZSBvciBtb3JlIGluZGVudGVkIHN0YXRlbWVudHMgb24gJworICAgICAgICAgICAgICdzdWJzZXF1ZW50XG4nCisgICAgICAgICAgICAgJ2xpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2YgYSBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgJworICAgICAgICAgICAgICdjb21wb3VuZFxuJworICAgICAgICAgICAgICJzdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkbid0ICIKKyAgICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgICAnY2xlYXIgdG8gd2hpY2ggImlmIiBjbGF1c2UgYSBmb2xsb3dpbmcgImVsc2UiIGNsYXVzZSB3b3VsZCAnCisgICAgICAgICAgICAgJ2JlbG9uZzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Fsc28gbm90ZSB0aGF0IHRoZSBzZW1pY29sb24gYmluZHMgdGlnaHRlciB0aGFuIHRoZSBjb2xvbiBpbiAnCisgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAnY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcicHJpbnQoKSIgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaWYgeCA8IHkgPCB6OiBwcmludCh4KTsgcHJpbnQoeSk7IHByaW50KHopXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTdW1tYXJpemluZzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgZm9yX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWZcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX3dpdGhfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX2Zvcl9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZnVuY2RlZlxuJworICAgICAgICAgICAgICcgICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50KyBERURFTlRcbicKKyAgICAgICAgICAgICAnICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4nCisgICAgICAgICAgICAgJyAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhICJORVdMSU5FIiBwb3NzaWJseSBmb2xsb3dlZCAnCisgICAgICAgICAgICAgJ2J5IGFcbicKKyAgICAgICAgICAgICAnIkRFREVOVCIuICBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXMgJworICAgICAgICAgICAgICdiZWdpblxuJworICAgICAgICAgICAgICd3aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbicKKyAgICAgICAgICAgICAnYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nICJlbHNlIlwnIHByb2JsZW0gaXMgc29sdmVkIGluIFB5dGhvbiAnCisgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgJ3JlcXVpcmluZyBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgJworICAgICAgICAgICAgICdwbGFjZXNcbicKKyAgICAgICAgICAgICAnZWFjaCBjbGF1c2Ugb24gYSBzZXBhcmF0ZSBsaW5lIGZvciBjbGFyaXR5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgb25lXG4nCisgICAgICAgICAgICAgJ2J5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gQm9vbGVhbiAnCisgICAgICAgICAgICAgJ29wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAgICAnKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCkuXG4nCisgICAgICAgICAgICAgJ0lmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgJworICAgICAgICAgICAgICdpZlxuJworICAgICAgICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzIHRydWU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgJworICAgICAgICAgICAgICdleGVjdXRlcyB0aGVcbicKKyAgICAgICAgICAgICAnZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAndGltZVxuJworICAgICAgICAgICAgICdpdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgICAgICdhbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlICcKKyAgICAgICAgICAgICAnbG9vcFxuJworICAgICAgICAgICAgICd3aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAgICdleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzICcKKyAgICAgICAgICAgICAnYmFja1xuJworICAgICAgICAgICAgICd0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJyhzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiICcKKyAgICAgICAgICAgICAnc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuICcKKyAgICAgICAgICAgICAnaXRlcmFibGVcbicKKyAgICAgICAgICAgICAnb2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbicKKyAgICAgICAgICAgICAnImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoICcKKyAgICAgICAgICAgICAnaXRlbVxuJworICAgICAgICAgICAgICdwcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgJworICAgICAgICAgICAgICdpdGVyYXRvci4gIEVhY2hcbicKKyAgICAgICAgICAgICAnaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgJworICAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgICdmb3IgYXNzaWdubWVudHMgKHNlZSBBc3NpZ25tZW50IHN0YXRlbWVudHMpLCBhbmQgdGhlbiB0aGUgc3VpdGUgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdleGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5ICcKKyAgICAgICAgICAgICAnd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAnc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uKSxcbicKKyAgICAgICAgICAgICAndGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAgICAndGVybWluYXRlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlICcKKyAgICAgICAgICAgICAnbG9vcFxuJworICAgICAgICAgICAgICd3aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAgICdleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCAnCisgICAgICAgICAgICAgJ2NvbnRpbnVlc1xuJworICAgICAgICAgICAgICd3aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gJworICAgICAgICAgICAgICduZXh0XG4nCisgICAgICAgICAgICAgJ2l0ZW0uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9yLWxvb3AgbWFrZXMgYXNzaWdubWVudHMgdG8gdGhlIHZhcmlhYmxlcyhzKSBpbiB0aGUgdGFyZ2V0ICcKKyAgICAgICAgICAgICAnbGlzdC5cbicKKyAgICAgICAgICAgICAnVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgJworICAgICAgICAgICAgICdpbmNsdWRpbmdcbicKKyAgICAgICAgICAgICAndGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZm9yIGkgaW4gcmFuZ2UoMTApOlxuJworICAgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgICAnICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggJworICAgICAgICAgICAgICd0aGUgbmV4dFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyAnCisgICAgICAgICAgICAgJ2ZpbmlzaGVkLFxuJworICAgICAgICAgICAgICdidXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCB0aGV5IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCAnCisgICAgICAgICAgICAgJ3RvIGF0XG4nCisgICAgICAgICAgICAgJ2FsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgIml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWwncyAiCisgICAgICAgICAgICAgJyJmb3IgaVxuJworICAgICAgICAgICAgICc6PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAnCisgICAgICAgICAgICAgJzJdIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICAnCisgICAgICAgICAgICAgJ0FuXG4nCisgICAgICAgICAgICAgJyAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkICcKKyAgICAgICAgICAgICAnbmV4dCxcbicKKyAgICAgICAgICAgICAnICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyICcKKyAgICAgICAgICAgICAnaGFzXG4nCisgICAgICAgICAgICAgJyAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyAnCisgICAgICAgICAgICAgJ21lYW5zXG4nCisgICAgICAgICAgICAgJyAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSAnCisgICAgICAgICAgICAgJ2Zyb20gdGhlXG4nCisgICAgICAgICAgICAgJyAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSAnCisgICAgICAgICAgICAgJ2luZGV4IG9mXG4nCisgICAgICAgICAgICAgJyAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsICcKKyAgICAgICAgICAgICAnaWYgdGhlXG4nCisgICAgICAgICAgICAgJyAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICdsb29wLlxuJworICAgICAgICAgICAgICcgIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4nCisgICAgICAgICAgICAgJyAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgIGZvciB4IGluIGFbOl06XG4nCisgICAgICAgICAgICAgJyAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwICcKKyAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICdmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiAnCisgICAgICAgICAgICAgJ3N1aXRlKStcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAgICAnICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiAnCisgICAgICAgICAgICAgJ1doZW4gbm9cbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuJworICAgICAgICAgICAgICdleGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggJworICAgICAgICAgICAgICdmb3IgYW5cbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgJworICAgICAgICAgICAgICdjbGF1c2VzXG4nCisgICAgICAgICAgICAgJ2luIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gJworICAgICAgICAgICAgICdleHByZXNzaW9uLVxuJworICAgICAgICAgICAgICdsZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0ICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgJworICAgICAgICAgICAgICdyZXN1bHRpbmdcbicKKyAgICAgICAgICAgICAnb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgJworICAgICAgICAgICAgICdjb21wYXRpYmxlXG4nCisgICAgICAgICAgICAgJ3dpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgJ29iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgJ2hhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiAnCisgICAgICAgICAgICAgJ3N0YWNrLlxuJworICAgICAgICAgICAgICdbMV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgJworICAgICAgICAgICAgICdjbGF1c2VcbicKKyAgICAgICAgICAgICAncmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzICcKKyAgICAgICAgICAgICAnY2FuY2VsZWQgYW5kXG4nCisgICAgICAgICAgICAgJ2Egc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgJworICAgICAgICAgICAgICdhbmQgb25cbicKKyAgICAgICAgICAgICAndGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgJworICAgICAgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgICAgICAndGhlIGV4Y2VwdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvXG4nCisgICAgICAgICAgICAgJ3RoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgJworICAgICAgICAgICAgICdjbGF1c2UsIGlmXG4nCisgICAgICAgICAgICAgInByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuIgorICAgICAgICAgICAgICdjbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgJworICAgICAgICAgICAgICdibG9jayBpc1xuJworICAgICAgICAgICAgICdyZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5ICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICcoVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uLFxuJworICAgICAgICAgICAgICdhbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ291dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzICcKKyAgICAgICAgICAgICAnY2xlYXJlZFxuJworICAgICAgICAgICAgICdhdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0IEUgYXMgTjpcbicKKyAgICAgICAgICAgICAnICAgICAgIGZvb1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnd2FzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICAgICAgJyAgICAgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgZm9vXG4nCisgICAgICAgICAgICAgJyAgICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIGRlbCBOXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvICcKKyAgICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgICAnYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlICcKKyAgICAgICAgICAgICAnY2xlYXJlZFxuJworICAgICAgICAgICAgICdiZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSAnCisgICAgICAgICAgICAgJ3JlZmVyZW5jZVxuJworICAgICAgICAgICAgICdjeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgJworICAgICAgICAgICAgICdhbGl2ZVxuJworICAgICAgICAgICAgICd1bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2UncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbiIKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkICcKKyAgICAgICAgICAgICAndmlhXG4nCisgICAgICAgICAgICAgJyJzeXMuZXhjX2luZm8oKSIuICJzeXMuZXhjX2luZm8oKSIgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyAnCisgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICdleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAnCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdyZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiAnCisgICAgICAgICAgICAgJ3JldHVybmluZ1xuJworICAgICAgICAgICAgICdmcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3MgJworICAgICAgICAgICAgICdvZmZcbicKKyAgICAgICAgICAgICAndGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nICJleGNlcHQiIGNsYXVzZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gICcKKyAgICAgICAgICAgICAnVGhlICJ0cnkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICAnCisgICAgICAgICAgICAgJ0lmIGFuXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3QgaGFuZGxlZCwgdGhlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZC4gIElmXG4nCisgICAgICAgICAgICAgJ3RoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSAnCisgICAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAgICdjbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSAnCisgICAgICAgICAgICAgJ3NhdmVkXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAnCisgICAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAgICdjbGF1c2UgZXhlY3V0ZXMgYSAicmV0dXJuIiBvciAiYnJlYWsiIHN0YXRlbWVudCwgdGhlIHNhdmVkICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgJ2lzIGRpc2NhcmRlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBkZWYgZigpOlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgMS8wXG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4nCisgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICcgICA+Pj4gZigpXG4nCisgICAgICAgICAgICAgJyAgIDQyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gJworICAgICAgICAgICAgICdkdXJpbmdcbicKKyAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSAiZmluYWxseSIgY2xhdXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiICcKKyAgICAgICAgICAgICAnY2xhdXNlIGlzXG4nCisgICAgICAgICAgICAgJ2Fsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBICJjb250aW51ZSIgc3RhdGVtZW50IGlzICcKKyAgICAgICAgICAgICAnaWxsZWdhbCBpblxuJworICAgICAgICAgICAgICd0aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbicKKyAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlIGxpZnRlZCBpbiB0aGUgJworICAgICAgICAgICAgICdmdXR1cmUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGxhc3QgJworICAgICAgICAgICAgICcicmV0dXJuIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgJworICAgICAgICAgICAgICdiZSB0aGVcbicKKyAgICAgICAgICAgICAnbGFzdCBvbmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gZGVmIGZvbygpOlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgIHRyeTpcbicKKyAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICd0cnknXG4iCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdmaW5hbGx5J1xuIgorICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAnICAgPj4+IGZvbygpXG4nCisgICAgICAgICAgICAgIiAgICdmaW5hbGx5J1xuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMsIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG8gJworICAgICAgICAgICAgICdnZW5lcmF0ZVxuJworICAgICAgICAgICAgICdleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uIFRoZSByYWlzZSBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgJworICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgJ21ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gV2l0aCAnCisgICAgICAgICAgICAgJ1N0YXRlbWVudFxuJworICAgICAgICAgICAgICdDb250ZXh0IE1hbmFnZXJzKS4gVGhpcyBhbGxvd3MgY29tbW9uICcKKyAgICAgICAgICAgICAnInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxuJworICAgICAgICAgICAgICd1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzICcKKyAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAnCisgICAgICAgICAgICAgJyJ3aXRoX2l0ZW0iKVxuJworICAgICAgICAgICAgICcgICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAnICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAnCisgICAgICAgICAgICAgJyJfX2VudGVyX18oKSJcbicKKyAgICAgICAgICAgICAnICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuICJfX2V4aXRfXygpIiB3aWxsICcKKyAgICAgICAgICAgICAnYWx3YXlzIGJlXG4nCisgICAgICAgICAgICAgJyAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciAnCisgICAgICAgICAgICAgJ29jY3VycmluZ1xuJworICAgICAgICAgICAgICcgICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc1LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc2LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgJworICAgICAgICAgICAgICd0aHJlZVxuJworICAgICAgICAgICAgICcgICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuICcKKyAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAnICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICdyZXJhaXNlZC5cbicKKyAgICAgICAgICAgICAnICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uLCB0aGVcbicKKyAgICAgICAgICAgICAnICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gJworICAgICAgICAgICAgICdwcm9jZWVkc1xuJworICAgICAgICAgICAgICcgICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgJworICAgICAgICAgICAgICdpZlxuJworICAgICAgICAgICAgICdtdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuJworICAgICAgICAgICAgICcgICAgICAgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggQSgpIGFzIGE6XG4nCisgICAgICAgICAgICAgJyAgICAgICB3aXRoIEIoKSBhcyBiOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0ICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gJworICAgICAgICAgICAgICcid2l0aCJcbicKKyAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAnCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZnVuY2RlZiAgICAgICAgICAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgJworICAgICAgICAgICAgICdbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgZGVjb3JhdG9ycyAgICAgICAgICAgICAgOjo9IGRlY29yYXRvcitcbicKKyAgICAgICAgICAgICAnICAgZGVjb3JhdG9yICAgICAgICAgICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiICcKKyAgICAgICAgICAgICAnW2FyZ3VtZW50X2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuJworICAgICAgICAgICAgICcgICBkb3R0ZWRfbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXJfbGlzdCAgICAgICAgICA6Oj0gZGVmcGFyYW1ldGVyICgiLCIgZGVmcGFyYW1ldGVyKSogJworICAgICAgICAgICAgICdbIiwiIFtwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc11dXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICB8IHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzIDo6PSAiKiIgW3BhcmFtZXRlcl0gKCIsIiAnCisgICAgICAgICAgICAgJ2RlZnBhcmFtZXRlcikqIFsiLCIgWyIqKiIgcGFyYW1ldGVyIFsiLCJdXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXIgWyIsIl1cbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBkZWZwYXJhbWV0ZXIgICAgICAgICAgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnICAgZnVuY25hbWUgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gJworICAgICAgICAgICAgICdiaW5kc1xuJworICAgICAgICAgICAgICd0aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICcoYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuJworICAgICAgICAgICAgICdmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsICcKKyAgICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyAnCisgICAgICAgICAgICAgJ2dldHNcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGlzXG4nCisgICAgICAgICAgICAgJ2RlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAncmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICdhcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG5hbWVcbicKKyAgICAgICAgICAgICAnaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCAnCisgICAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICAgJ25lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBAZjEoYXJnKVxuJworICAgICAgICAgICAgICcgICBAZjJcbicKKyAgICAgICAgICAgICAnICAgZGVmIGZ1bmMoKTogcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGlzIG5vdCB0ZW1wb3JhcmlseSBib3VuZCB0byAnCisgICAgICAgICAgICAgJ3RoZSBuYW1lXG4nCisgICAgICAgICAgICAgJyJmdW5jIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4nCisgICAgICAgICAgICAgJypleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgJworICAgICAgICAgICAgICd2YWx1ZXMuIlxuJworICAgICAgICAgICAgICdGb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAgICAnKmFyZ3VtZW50KiBtYXlcbicKKyAgICAgICAgICAgICAiYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyJ3MgZGVmYXVsdCAiCisgICAgICAgICAgICAgJ3ZhbHVlIGlzXG4nCisgICAgICAgICAgICAgJ3N1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xuJworICAgICAgICAgICAgICdwYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tICcKKyAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICdpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAnZ3JhbW1hci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyoqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpc1xuJworICAgICAgICAgICAgICdldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgJworICAgICAgICAgICAgICcicHJlLVxuJworICAgICAgICAgICAgICdjb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5ICcKKyAgICAgICAgICAgICAnaW1wb3J0YW50XG4nCisgICAgICAgICAgICAgJ3RvIHVuZGVyc3RhbmQgd2hlbiBhIGRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggJworICAgICAgICAgICAgICdhcyBhXG4nCisgICAgICAgICAgICAgJ2xpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiAnCisgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgJ2FwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCAnCisgICAgICAgICAgICAgJ21vZGlmaWVkLlxuJworICAgICAgICAgICAgICdUaGlzIGlzIGdlbmVyYWxseSBub3Qgd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyAnCisgICAgICAgICAgICAgJ3RvIHVzZVxuJworICAgICAgICAgICAgICciTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLCBlLmcuOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuJworICAgICAgICAgICAgICcgICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIHBlbmd1aW4gPSBbXVxuJworICAgICAgICAgICAgICcgICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuJworICAgICAgICAgICAgICcgICAgICAgcmV0dXJuIHBlbmd1aW5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgJ0NhbGxzLlxuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzICcKKyAgICAgICAgICAgICAnbWVudGlvbmVkIGluXG4nCisgICAgICAgICAgICAgJ3RoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tICcKKyAgICAgICAgICAgICAna2V5d29yZFxuJworICAgICAgICAgICAgICdhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybSAiIippZGVudGlmaWVyIiIgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnkgZXhjZXNzICcKKyAgICAgICAgICAgICAncG9zaXRpb25hbFxuJworICAgICAgICAgICAgICdwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gSWYgdGhlIGZvcm1cbicKKyAgICAgICAgICAgICAnIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ldyBvcmRlcmVkXG4nCisgICAgICAgICAgICAgJ21hcHBpbmcgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSAnCisgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICdlbXB0eSBtYXBwaW5nIG9mIHRoZSBzYW1lIHR5cGUuICBQYXJhbWV0ZXJzIGFmdGVyICIiKiIiIG9yXG4nCisgICAgICAgICAgICAgJyIiKmlkZW50aWZpZXIiIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlICcKKyAgICAgICAgICAgICAncGFzc2VkXG4nCisgICAgICAgICAgICAgJ3VzZWQga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdQYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgJworICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uIGV2ZW4gJworICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICdvZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSAnCisgICAgICAgICAgICAgJ2hhdmVcbicKKyAgICAgICAgICAgICAnInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgJworICAgICAgICAgICAgICdwYXJhbWV0ZXJcbicKKyAgICAgICAgICAgICAnbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gYW5kICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgJworICAgICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAgICAnYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSAnCisgICAgICAgICAgICAgJ2NvZGUuXG4nCisgICAgICAgICAgICAgJ1RoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiBhXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbicKKyAgICAgICAgICAgICAiZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVycycgbmFtZXMgaW4gdGhlICIKKyAgICAgICAgICAgICAnIl9fYW5ub3RhdGlvbnNfXyJcbicKKyAgICAgICAgICAgICAnYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90ICcKKyAgICAgICAgICAgICAnYm91bmRcbicKKyAgICAgICAgICAgICAndG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiBMYW1iZGFzLiAgTm90ZSB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbjtcbicKKyAgICAgICAgICAgICAnYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgJworICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICdhc3NpZ25lZCB0byBhbm90aGVyIG5hbWUganVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgJworICAgICAgICAgICAgICdpdFxuJworICAgICAgICAgICAgICdhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiCisgICAgICAgICAgICAgJyIiZGVmIiJcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyAnCisgICAgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAgICAnaW4gdGhlIG5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gTmFtaW5nIGFuZCBiaW5kaW5nIGZvciAnCisgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcbicKKyAgICAgICAgICAgICAnICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICAgICd0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gJworICAgICAgICAgICAgICciOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJ3VzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlIE1ldGFjbGFzc2VzIGZvciBtb3JlXG4nCisgICAgICAgICAgICAgJ2FkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGEgJworICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICdvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlICcKKyAgICAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICAgICdpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzIEZvbzpcbicKKyAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzIEZvbyhvYmplY3QpOlxuJworICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiVGhlIGNsYXNzJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgIgorICAgICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgICAgJ05hbWluZyBhbmQgYmluZGluZyksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ29yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG4nCisgICAgICAgICAgICAgImZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzJ3Mgc3VpdGUgZmluaXNoZXMgIgorICAgICAgICAgICAgICdleGVjdXRpb24sIGl0c1xuJworICAgICAgICAgICAgICdleGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiAnCisgICAgICAgICAgICAgJ1s0XSBBXG4nCisgICAgICAgICAgICAgJ2NsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSAnCisgICAgICAgICAgICAgJ2Jhc2VcbicKKyAgICAgICAgICAgICAnY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgJ2RpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgJ1RoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCAnCisgICAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICAgJ25hbWVzcGFjZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcmRlciBpbiB3aGljaCBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjbGFzcyBib2R5IGlzXG4nCisgICAgICAgICAgICAgJ3ByZXNlcnZlZCBpbiB0aGUgbmV3IGNsYXNzXCdzICJfX2RpY3RfXyIuICBOb3RlIHRoYXQgdGhpcyBpcyAnCisgICAgICAgICAgICAgJ3JlbGlhYmxlXG4nCisgICAgICAgICAgICAgJ29ubHkgcmlnaHQgYWZ0ZXIgdGhlIGNsYXNzIGlzIGNyZWF0ZWQgYW5kIG9ubHkgZm9yIGNsYXNzZXMgdGhhdCAnCisgICAgICAgICAgICAgJ3dlcmVcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCB1c2luZyB0aGUgZGVmaW5pdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgJworICAgICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBAZjEoYXJnKVxuJworICAgICAgICAgICAgICcgICBAZjJcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICAgICcgICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgaXMgdGhlbiBib3VuZCB0byB0aGUgY2xhc3MgJworICAgICAgICAgICAgICduYW1lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAiCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdjbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgJworICAgICAgICAgICAgICdhdHRyaWJ1dGVzXG4nCisgICAgICAgICAgICAgJ2NhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICdpbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICcKKyAgICAgICAgICAgICAnIiJzZWxmLm5hbWUiIixcbicKKyAgICAgICAgICAgICAnYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAnbmFtZVxuJworICAgICAgICAgICAgICd3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyAnCisgICAgICAgICAgICAgJ2RlZmF1bHRzXG4nCisgICAgICAgICAgICAgJ2ZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICd1bmV4cGVjdGVkIHJlc3VsdHMuICBEZXNjcmlwdG9ycyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAndmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbicKKyAgICAgICAgICAgICAnICBDbGFzcyBEZWNvcmF0b3JzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ29yb3V0aW5lc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ29yb3V0aW5lIGZ1bmN0aW9uIGRlZmluaXRpb25cbicKKyAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX2Z1bmNkZWYgOjo9IFtkZWNvcmF0b3JzXSAiYXN5bmMiICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRXhlY3V0aW9uIG9mIFB5dGhvbiBjb3JvdXRpbmVzIGNhbiBiZSBzdXNwZW5kZWQgYW5kIHJlc3VtZWQgYXQgJworICAgICAgICAgICAgICdtYW55XG4nCisgICAgICAgICAgICAgJ3BvaW50cyAoc2VlICpjb3JvdXRpbmUqKS4gIEluIHRoZSBib2R5IG9mIGEgY29yb3V0aW5lLCBhbnkgJworICAgICAgICAgICAgICciYXdhaXQiIGFuZFxuJworICAgICAgICAgICAgICciYXN5bmMiIGlkZW50aWZpZXJzIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkczsgImF3YWl0IiAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLFxuJworICAgICAgICAgICAgICciYXN5bmMgZm9yIiBhbmQgImFzeW5jIHdpdGgiIGNhbiBvbmx5IGJlIHVzZWQgaW4gY29yb3V0aW5lICcKKyAgICAgICAgICAgICAnYm9kaWVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb25zIGRlZmluZWQgd2l0aCAiYXN5bmMgZGVmIiBzeW50YXggYXJlIGFsd2F5cyBjb3JvdXRpbmVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb25zLCBldmVuIGlmIHRoZXkgZG8gbm90IGNvbnRhaW4gImF3YWl0IiBvciAiYXN5bmMiICcKKyAgICAgICAgICAgICAna2V5d29yZHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJ5aWVsZCIgZXhwcmVzc2lvbnMgaW4gImFzeW5jIGRlZiJcbicKKyAgICAgICAgICAgICAnY29yb3V0aW5lcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FuIGV4YW1wbGUgb2YgYSBjb3JvdXRpbmUgZnVuY3Rpb246XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luYyBkZWYgZnVuYyhwYXJhbTEsIHBhcmFtMik6XG4nCisgICAgICAgICAgICAgJyAgICAgICBkb19zdHVmZigpXG4nCisgICAgICAgICAgICAgJyAgICAgICBhd2FpdCBzb21lX2Nvcm91dGluZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luY19mb3Jfc3RtdCA6Oj0gImFzeW5jIiBmb3Jfc3RtdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQW4gKmFzeW5jaHJvbm91cyBpdGVyYWJsZSogaXMgYWJsZSB0byBjYWxsIGFzeW5jaHJvbm91cyBjb2RlIGluICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJyppdGVyKiBpbXBsZW1lbnRhdGlvbiwgYW5kICphc3luY2hyb25vdXMgaXRlcmF0b3IqIGNhbiBjYWxsXG4nCisgICAgICAgICAgICAgJ2FzeW5jaHJvbm91cyBjb2RlIGluIGl0cyAqbmV4dCogbWV0aG9kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudCBhbGxvd3MgY29udmVuaWVudCBpdGVyYXRpb24gb3ZlclxuJworICAgICAgICAgICAgICdhc3luY2hyb25vdXMgaXRlcmF0b3JzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBjb2RlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmMgZm9yIFRBUkdFVCBpbiBJVEVSOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0tcbicKKyAgICAgICAgICAgICAnICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLMlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpdGVyID0gKElURVIpXG4nCisgICAgICAgICAgICAgJyAgIGl0ZXIgPSB0eXBlKGl0ZXIpLl9fYWl0ZXJfXyhpdGVyKVxuJworICAgICAgICAgICAgICcgICBydW5uaW5nID0gVHJ1ZVxuJworICAgICAgICAgICAgICcgICB3aGlsZSBydW5uaW5nOlxuJworICAgICAgICAgICAgICcgICAgICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIFRBUkdFVCA9IGF3YWl0IHR5cGUoaXRlcikuX19hbmV4dF9fKGl0ZXIpXG4nCisgICAgICAgICAgICAgJyAgICAgICBleGNlcHQgU3RvcEFzeW5jSXRlcmF0aW9uOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIHJ1bm5pbmcgPSBGYWxzZVxuJworICAgICAgICAgICAgICcgICAgICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICcgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0syXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbyAiX19haXRlcl9fKCkiIGFuZCAiX19hbmV4dF9fKCkiIGZvciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJyJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luY193aXRoX3N0bXQgOjo9ICJhc3luYyIgd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbiAqYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciogaXMgYSAqY29udGV4dCBtYW5hZ2VyKiB0aGF0IGlzICcKKyAgICAgICAgICAgICAnYWJsZVxuJworICAgICAgICAgICAgICd0byBzdXNwZW5kIGV4ZWN1dGlvbiBpbiBpdHMgKmVudGVyKiBhbmQgKmV4aXQqIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvZGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luYyB3aXRoIEVYUFIgYXMgVkFSOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0tcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgbWdyID0gKEVYUFIpXG4nCisgICAgICAgICAgICAgJyAgIGFleGl0ID0gdHlwZShtZ3IpLl9fYWV4aXRfX1xuJworICAgICAgICAgICAgICcgICBhZW50ZXIgPSB0eXBlKG1ncikuX19hZW50ZXJfXyhtZ3IpXG4nCisgICAgICAgICAgICAgJyAgIGV4YyA9IFRydWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFZBUiA9IGF3YWl0IGFlbnRlclxuJworICAgICAgICAgICAgICcgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICcgICBleGNlcHQ6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBub3QgYXdhaXQgYWV4aXQobWdyLCAqc3lzLmV4Y19pbmZvKCkpOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIHJhaXNlXG4nCisgICAgICAgICAgICAgJyAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICBhd2FpdCBhZXhpdChtZ3IsIE5vbmUsIE5vbmUsIE5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbyAiX19hZW50ZXJfXygpIiBhbmQgIl9fYWV4aXRfXygpIiBmb3IgZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIHdpdGgiIHN0YXRlbWVudCBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnImFzeW5jIGRlZiIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgNDkyKiogLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzc1xuJworICAgICAgICAgICAgICcgICAgdGhlcmUgaXMgYSAiZmluYWxseSIgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlclxuJworICAgICAgICAgICAgICcgICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlICcKKyAgICAgICAgICAgICAnbG9zdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1syXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2UgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICAgYW4gZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSAicmV0dXJuIiwgImNvbnRpbnVlIiwgb3JcbicKKyAgICAgICAgICAgICAnICAgICJicmVhayIgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlXG4nCisgICAgICAgICAgICAgJyAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuJworICAgICAgICAgICAgICIgICAgYXR0cmlidXRlIGFuZCB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uJ3MgKmRvY3N0cmluZyouXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgJworICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICcgICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAiICAgIHRoZXJlZm9yZSB0aGUgY2xhc3MncyAqZG9jc3RyaW5nKi5cbiIsCisgJ2NvbnRleHQtbWFuYWdlcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdBICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdydW50aW1lIGNvbnRleHQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdiZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCBtYW5hZ2VyXG4nCisgICAgICAgICAgICAgICAgICAgICAnaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdydW50aW1lIGNvbnRleHRcbicKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgJworICAgICAgICAgICAgICAgICAgICAgJ21hbmFnZXJzIGFyZSBub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAgICAgJ2ludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgd2l0aFxuJworICAgICAgICAgICAgICAgICAgICAgJ3N0YXRlbWVudCksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGVpciBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1R5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAncmVzdG9yaW5nIHZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdraW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsICcKKyAgICAgICAgICAgICAgICAgICAgICdjbG9zaW5nIG9wZW5lZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVzLCBldGMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlIENvbnRleHQgJworICAgICAgICAgICAgICAgICAgICAgJ01hbmFnZXIgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcid2l0aCJcbicKKyAgICAgICAgICAgICAgICAgICAgICIgICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAndGFyZ2V0KHMpXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiAnCisgICAgICAgICAgICAgICAgICAgICAnYW55LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAnCisgICAgICAgICAgICAgICAgICAgICAncGFyYW1ldGVyc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgJworICAgICAgICAgICAgICAgICAgICAgJ2V4aXRlZC4gSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgJworICAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyB3aWxsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYmUgIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdzdXBwcmVzcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgJworICAgICAgICAgICAgICAgICAgICAgJ2l0IHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAgICdwcm9jZXNzZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAncGFzc2VkLWluXG4nCisgICAgICAgICAgICAgICAgICAgICAiICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eS5cbiIKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uICJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJywKKyAnY29udGludWUnOiAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiY29udGludWUiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNvbnRpbnVlX3N0bXQgOjo9ICJjb250aW51ZSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyJjb250aW51ZSIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAnCisgICAgICAgICAgICAgJyJ3aGlsZSJcbicKKyAgICAgICAgICAgICAnbG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uIG9yICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZSB3aXRoaW4gdGhhdCBsb29wLiAgSXQgY29udGludWVzIHdpdGggdGhlIG5leHQgY3ljbGUgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnbmVhcmVzdCBlbmNsb3NpbmcgbG9vcC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gImNvbnRpbnVlIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhXG4nCisgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgJworICAgICAgICAgICAgICdyZWFsbHlcbicKKyAgICAgICAgICAgICAnc3RhcnRpbmcgdGhlIG5leHQgbG9vcCBjeWNsZS5cbicsCisgJ2NvbnZlcnNpb25zJzogJ1xuJworICAgICAgICAgICAgICAgICdBcml0aG1ldGljIGNvbnZlcnNpb25zXG4nCisgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1doZW4gYSBkZXNjcmlwdGlvbiBvZiBhbiBhcml0aG1ldGljIG9wZXJhdG9yIGJlbG93IHVzZXMgdGhlICcKKyAgICAgICAgICAgICAgICAncGhyYXNlXG4nCisgICAgICAgICAgICAgICAgJyJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyAnCisgICAgICAgICAgICAgICAgJ21lYW5zXG4nCisgICAgICAgICAgICAgICAgJ3RoYXQgdGhlIG9wZXJhdG9yIGltcGxlbWVudGF0aW9uIGZvciBidWlsdC1pbiB0eXBlcyB3b3JrcyBhcyAnCisgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIElmIGVpdGhlciBhcmd1bWVudCBpcyBhIGNvbXBsZXggbnVtYmVyLCB0aGUgb3RoZXIgaXMgJworICAgICAgICAgICAgICAgICdjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAnICBjb21wbGV4O1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnICBvdGhlciBpcyBjb252ZXJ0ZWQgdG8gZmxvYXRpbmcgcG9pbnQ7XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIG90aGVyd2lzZSwgYm90aCBtdXN0IGJlIGludGVnZXJzIGFuZCBubyBjb252ZXJzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAnbmVjZXNzYXJ5LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnU29tZSBhZGRpdGlvbmFsIHJ1bGVzIGFwcGx5IGZvciBjZXJ0YWluIG9wZXJhdG9ycyAoZS5nLiwgYSAnCisgICAgICAgICAgICAgICAgJ3N0cmluZyBhcyBhXG4nCisgICAgICAgICAgICAgICAgImxlZnQgYXJndW1lbnQgdG8gdGhlICclJyBvcGVyYXRvcikuICBFeHRlbnNpb25zIG11c3QgZGVmaW5lICIKKyAgICAgICAgICAgICAgICAndGhlaXIgb3duXG4nCisgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24gYmVoYXZpb3IuXG4nLAorICdjdXN0b21pemF0aW9uJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0Jhc2ljIGN1c3RvbWl6YXRpb25cbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgJworICAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0ICcKKyAgICAgICAgICAgICAgICAgICdhcyBzdWNoKVxuJworICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgJworICAgICAgICAgICAgICAgICAgJ2FzIGl0c1xuJworICAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlICcKKyAgICAgICAgICAgICAgICAgICdwYXNzZWQgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICAnCisgICAgICAgICAgICAgICAgICAnVGhlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAnKHVzdWFsbHkgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSBvZiAqY2xzKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnY2xhc3MgYnlcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICcKKyAgICAgICAgICAgICAgICAgICciX19uZXdfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosICcKKyAgICAgICAgICAgICAgICAgICd0aGVuIHRoZSBuZXdcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgJworICAgICAgICAgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICdjcmVhdGlvbi4gIEl0XG4nCisgICAgICAgICAgICAgICAgICAnICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgJworICAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiKSwgYnV0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSAnCisgICAgICAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAgICAgICcgICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAgJ2NsYXNzIGhhcyBhblxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiAnCisgICAgICAgICAgICAgICAgICAnbWV0aG9kLCBpZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciAnCisgICAgICAgICAgICAgICAgICAnaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiAnCisgICAgICAgICAgICAgICAgICAnY29uc3RydWN0aW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvICcKKyAgICAgICAgICAgICAgICAgICdjdXN0b21pemVcbicKKyAgICAgICAgICAgICAgICAgICcgICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgICciX19pbml0X18oKSI7IGRvaW5nIHNvXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgJworICAgICAgICAgICAgICAgICAgJ2lzIGFsc29cbicKKyAgICAgICAgICAgICAgICAgICcgICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2QsIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgJworICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgY2FsbCBpdFxuJworICAgICAgICAgICAgICAgICAgJyAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYnlcbicKKyAgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgJworICAgICAgICAgICAgICAgICAgJ2F0IGEgbGF0ZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgJ2d1YXJhbnRlZWQgdGhhdFxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsICcKKyAgICAgICAgICAgICAgICAgICdleGlzdCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSAnCisgICAgICAgICAgICAgICAgICAndGhlIGZvcm1lclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdsYXR0ZXIgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICAnCisgICAgICAgICAgICAgICAgICAnU29tZSBjb21tb25cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3QgZnJvbVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAncGFyZW50IGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnc3RhY2sgZnJhbWUgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrICcKKyAgICAgICAgICAgICAgICAgICdzdG9yZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSAnCisgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiAnCisgICAgICAgICAgICAgICAgICAndW5oYW5kbGVkXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgJworICAgICAgICAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgJworICAgICAgICAgICAgICAgICAgJ1RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgJworICAgICAgICAgICAgICAgICAgJ3RoZSBjeWNsZXM7XG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJ3RoaXJkIGNhblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gInN5cy5sYXN0X3RyYWNlYmFjayIuICcKKyAgICAgICAgICAgICAgICAgICdDaXJjdWxhclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgJworICAgICAgICAgICAgICAgICAgJ3VwIHdoZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXQncyBvbiBieSAiCisgICAgICAgICAgICAgICAgICAnZGVmYXVsdCkuIFJlZmVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlICcKKyAgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyB0b3BpYy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciAnCisgICAgICAgICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciAnCisgICAgICAgICAgICAgICAgICAnZHVyaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCAnCisgICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzICcKKyAgICAgICAgICAgICAgICAgICdpbnZva2VkIGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuICcKKyAgICAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICciX19kZWxfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzICcKKyAgICAgICAgICAgICAgICAgICdvZiBiZWluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgJworICAgICAgICAgICAgICAgICAgJ0ZvciB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSAnCisgICAgICAgICAgICAgICAgICAnbWluaW11bSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoICcKKyAgICAgICAgICAgICAgICAgICd2ZXJzaW9uIDEuNSxcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdhIHNpbmdsZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgJworICAgICAgICAgICAgICAgICAgJ2dsb2JhbHMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgJworICAgICAgICAgICAgICAgICAgJ3RoaXMgbWF5XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgJworICAgICAgICAgICAgICAgICAgJ2F2YWlsYWJsZSBhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXByX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICcKKyAgICAgICAgICAgICAgICAgICcib2ZmaWNpYWwiXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgJworICAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAndXNlZCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtXG4nCisgICAgICAgICAgICAgICAgICAnICAgIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iIHNob3VsZCBiZSByZXR1cm5lZC4gJworICAgICAgICAgICAgICAgICAgJ1RoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICciX19yZXByX18oKSIgYnV0XG4nCisgICAgICAgICAgICAgICAgICAnICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAnCisgICAgICAgICAgICAgICAgICAnImluZm9ybWFsIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpcyAnCisgICAgICAgICAgICAgICAgICAncmVxdWlyZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgJworICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3RyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgInN0cihvYmplY3QpIiBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnImZvcm1hdCgpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAnCisgICAgICAgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ3RoZXJlIGlzIG5vXG4nCisgICAgICAgICAgICAgICAgICAnICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gJworICAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb246IGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgICcib2JqZWN0IlxuJworICAgICAgICAgICAgICAgICAgJyAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICdyZXByZXNlbnRhdGlvbiBvZiBhblxuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uLCBhbmQgYnkgJworICAgICAgICAgICAgICAgICAgJ2V4dGVuc2lvbixcbicKKyAgICAgICAgICAgICAgICAgICcgICBldmFsdWF0aW9uIG9mIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBtZXRob2QsIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gJworICAgICAgICAgICAgICAgICAgJ29mIGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyBhIHN0cmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdjb250YWlucyBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBkZXNpcmVkLiBUaGUgJworICAgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG8gdGhlIHR5cGUgJworICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgY2xhc3NlcyB3aWxsIGVpdGhlciAnCisgICAgICAgICAgICAgICAgICAnZGVsZWdhdGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhICcKKyAgICAgICAgICAgICAgICAgICdzaW1pbGFyXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFNlZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlIGZvciBhIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAnCisgICAgICAgICAgICAgICAgICAnIm9iamVjdCIgaXRzZWxmXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmFpc2VzIGEgIlR5cGVFcnJvciIgaWYgcGFzc2VkIGFueSBub24tZW1wdHkgc3RyaW5nLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgICdpcyBhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAnCisgICAgICAgICAgICAgICAgICAnInguX19sZV9fKHkpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICcKKyAgICAgICAgICAgICAgICAgICcieD55IiBjYWxsc1xuJworICAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uICcKKyAgICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiXG4nCisgICAgICAgICAgICAgICAgICAnICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciAnCisgICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgJworICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIGZvciBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhbiByZXR1cm4gJworICAgICAgICAgICAgICAgICAgJ2FueSB2YWx1ZSxcbicKKyAgICAgICAgICAgICAgICAgICcgICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICAnY29udGV4dCAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAnCisgICAgICAgICAgICAgICAgICAnImJvb2woKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHQgaXMgdHJ1ZSBvciAnCisgICAgICAgICAgICAgICAgICAnZmFsc2UuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQnkgZGVmYXVsdCwgIl9fbmVfXygpIiBkZWxlZ2F0ZXMgdG8gIl9fZXFfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJ2ludmVydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVzdWx0IHVubGVzcyBpdCBpcyAiTm90SW1wbGVtZW50ZWQiLiAgVGhlcmUgYXJlIG5vICcKKyAgICAgICAgICAgICAgICAgICdvdGhlciBpbXBsaWVkXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciAnCisgICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHJ1dGggb2YgIih4PHkgb3IgeD09eSkiIGRvZXMgbm90IGltcGx5ICJ4PD15Ii4gVG8gJworICAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgICcgICBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdCAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLCBzZWVcbicKKyAgICAgICAgICAgICAgICAgICcgICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFNlZSB0aGUgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgJworICAgICAgICAgICAgICAgICAgJ25vdGVzIG9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tICcKKyAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICAnKHRvIGJlIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnYnV0IHRoZSByaWdodFxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlICcKKyAgICAgICAgICAgICAgICAgICJlYWNoIG90aGVyJ3NcbiIKKyAgICAgICAgICAgICAgICAgICcgICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzICcKKyAgICAgICAgICAgICAgICAgICdyZWZsZWN0aW9uLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gJworICAgICAgICAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAgICAgICAgIiAgIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGFuZCByaWdodCBvcGVyYW5kJ3MgIgorICAgICAgICAgICAgICAgICAgJ3R5cGUgaXMgYVxuJworICAgICAgICAgICAgICAgICAgIiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kJ3MgdHlwZSwgIgorICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCAnCisgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlIHRoZVxuJworICAgICAgICAgICAgICAgICAgIiAgIGxlZnQgb3BlcmFuZCdzIG1ldGhvZCBoYXMgcHJpb3JpdHkuICBWaXJ0dWFsIHN1YmNsYXNzaW5nICIKKyAgICAgICAgICAgICAgICAgICdpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2hhc2hfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAgJ29uIG1lbWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICcKKyAgICAgICAgICAgICAgICAgICciZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICdyZXF1aXJlZCBwcm9wZXJ0eVxuJworICAgICAgICAgICAgICAgICAgJyAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCAnCisgICAgICAgICAgICAgICAgICAndmFsdWU7IGl0IGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgJworICAgICAgICAgICAgICAgICAgJ29yKSB0aGUgaGFzaFxuJworICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhICcKKyAgICAgICAgICAgICAgICAgICdwYXJ0IGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiAnCisgICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgICcgICAgIGN1c3RvbSAiX19oYXNoX18oKSIgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgJworICAgICAgICAgICAgICAgICAgJyJQeV9zc2l6ZV90Ii4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gJworICAgICAgICAgICAgICAgICAgJzMyLWJpdFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgb2YgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggb24gJworICAgICAgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnInB5dGhvbiAtY1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gIl9fZXFfXygpIiBtZXRob2QgaXQgJworICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAnIl9fZXFfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSAnCisgICAgICAgICAgICAgICAgICAnYXMgaXRlbXMgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lcyBtdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgJworICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlICcKKyAgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uc1xuJworICAgICAgICAgICAgICAgICAgIiAgIHJlcXVpcmVzIHRoYXQgYSBrZXkncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlICIKKyAgICAgICAgICAgICAgICAgICJvYmplY3QncyBoYXNoXG4iCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2RzIGJ5XG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCAnCisgICAgICAgICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAgICAgICAgJyAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZSBzdWNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gJworICAgICAgICAgICAgICAgICAgJ2hhc2goeSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAgICciX19oYXNoX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICAnCisgICAgICAgICAgICAgICAgICAnV2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gJworICAgICAgICAgICAgICAgICAgJ2F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCAnCisgICAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnMuSGFzaGFibGUpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgICAgJyAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuJworICAgICAgICAgICAgICAgICAgJyAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byAnCisgICAgICAgICAgICAgICAgICAnc3VwcHJlc3NcbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5ICcKKyAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiICcKKyAgICAgICAgICAgICAgICAgICdjYWxsLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgJworICAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlICcKKyAgICAgICAgICAgICAgICAgICdyYW5kb20gdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCAnCisgICAgICAgICAgICAgICAgICAnaW52b2NhdGlvbnMgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0ICcKKyAgICAgICAgICAgICAgICAgICdhIGRlbmlhbC1cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2V4cGxvaXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSAnCisgICAgICAgICAgICAgICAgICAnY29tcGxleGl0eS5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIFNlZSAnCisgICAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gJworICAgICAgICAgICAgICAgICAgJ29yZGVyIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgJworICAgICAgICAgICAgICAgICAgJ2d1YXJhbnRlZXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gJworICAgICAgICAgICAgICAgICAgJzMyLWJpdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAgJyAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2QgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgJworICAgICAgICAgICAgICAgICAgJ3RoZSBvYmplY3QgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgJworICAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZS5cbicsCisgJ2RlYnVnZ2VyJzogJ1xuJworICAgICAgICAgICAgICcicGRiIiAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipTb3VyY2UgY29kZToqKiBMaWIvcGRiLnB5XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgbW9kdWxlICJwZGIiIGRlZmluZXMgYW4gaW50ZXJhY3RpdmUgc291cmNlIGNvZGUgZGVidWdnZXIgJworICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAnUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ3NpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgJworICAgICAgICAgICAgICdmcmFtZXMsXG4nCisgICAgICAgICAgICAgJ3NvdXJjZSBjb2RlIGxpc3RpbmcsIGFuZCBldmFsdWF0aW9uIG9mIGFyYml0cmFyeSBQeXRob24gY29kZSBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gJworICAgICAgICAgICAgICdkZWJ1Z2dpbmdcbicKKyAgICAgICAgICAgICAnYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGRlYnVnZ2VyIGlzIGV4dGVuc2libGUgLS0gaXQgaXMgYWN0dWFsbHkgZGVmaW5lZCBhcyB0aGUgJworICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICciUGRiIi4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieSAnCisgICAgICAgICAgICAgJ3JlYWRpbmdcbicKKyAgICAgICAgICAgICAndGhlIHNvdXJjZS4gIFRoZSBleHRlbnNpb24gaW50ZXJmYWNlIHVzZXMgdGhlIG1vZHVsZXMgImJkYiIgYW5kICcKKyAgICAgICAgICAgICAnImNtZCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzICIoUGRiKSIuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgJworICAgICAgICAgICAgICdwcm9ncmFtIHVuZGVyXG4nCisgICAgICAgICAgICAgJ2NvbnRyb2wgb2YgdGhlIGRlYnVnZ2VyIGlzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBwZGJcbicKKyAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBteW1vZHVsZVxuJworICAgICAgICAgICAgICIgICA+Pj4gcGRiLnJ1bignbXltb2R1bGUudGVzdCgpJylcbiIKKyAgICAgICAgICAgICAnICAgPiA8c3RyaW5nPigwKT8oKVxuJworICAgICAgICAgICAgICcgICAoUGRiKSBjb250aW51ZVxuJworICAgICAgICAgICAgICcgICA+IDxzdHJpbmc+KDEpPygpXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpIGNvbnRpbnVlXG4nCisgICAgICAgICAgICAgIiAgIE5hbWVFcnJvcjogJ3NwYW0nXG4iCisgICAgICAgICAgICAgJyAgID4gPHN0cmluZz4oMSk/KClcbicKKyAgICAgICAgICAgICAnICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgInJlYWRsaW5lIiBtb2R1bGUgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdhdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZCBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAgICdhbmQgbG9jYWwgbmFtZXMgYXJlIG9mZmVyZWQgYXMgYXJndW1lbnRzIG9mIHRoZSAicCIgY29tbWFuZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyJwZGIucHkiIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgJworICAgICAgICAgICAgICdzY3JpcHRzLiAgRm9yXG4nCisgICAgICAgICAgICAgJ2V4YW1wbGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBweXRob24zIC1tIHBkYiBteXNjcmlwdC5weVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyICcKKyAgICAgICAgICAgICAncG9zdC1tb3J0ZW1cbicKKyAgICAgICAgICAgICAnZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuICBBZnRlciAnCisgICAgICAgICAgICAgJ3Bvc3QtXG4nCisgICAgICAgICAgICAgJ21vcnRlbSBkZWJ1Z2dpbmcgKG9yIGFmdGVyIG5vcm1hbCBleGl0IG9mIHRoZSBwcm9ncmFtKSwgcGRiICcKKyAgICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAgICJyZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYidzIHN0YXRlICIKKyAgICAgICAgICAgICAnKHN1Y2hcbicKKyAgICAgICAgICAgICAnYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAiZGVidWdnZXIgdXBvbiBwcm9ncmFtJ3MgZXhpdC5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMjogInBkYi5weSIgbm93IGFjY2VwdHMgYSAiLWMiIG9wdGlvbiB0aGF0ICcKKyAgICAgICAgICAgICAnZXhlY3V0ZXNcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgYXMgaWYgZ2l2ZW4gaW4gYSAiLnBkYnJjIiBmaWxlLCBzZWUgRGVidWdnZXIgQ29tbWFuZHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyAnCisgICAgICAgICAgICAgJ3Byb2dyYW0gaXNcbicKKyAgICAgICAgICAgICAndG8gaW5zZXJ0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gJworICAgICAgICAgICAgICd0aGVuXG4nCisgICAgICAgICAgICAgJ3N0ZXAgdGhyb3VnaCB0aGUgY29kZSBmb2xsb3dpbmcgdGhpcyBzdGF0ZW1lbnQsIGFuZCBjb250aW51ZSAnCisgICAgICAgICAgICAgJ3J1bm5pbmdcbicKKyAgICAgICAgICAgICAnd2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlICJjb250aW51ZSIgY29tbWFuZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSB0eXBpY2FsIHVzYWdlIHRvIGluc3BlY3QgYSBjcmFzaGVkIHByb2dyYW0gaXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IHBkYlxuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4nCisgICAgICAgICAgICAgJyAgID4+PiBteW1vZHVsZS50ZXN0KClcbicKKyAgICAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbicKKyAgICAgICAgICAgICAnICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4nCisgICAgICAgICAgICAgJyAgICAgICB0ZXN0MigpXG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbicKKyAgICAgICAgICAgICAnICAgICAgIHByaW50KHNwYW0pXG4nCisgICAgICAgICAgICAgJyAgIE5hbWVFcnJvcjogc3BhbVxuJworICAgICAgICAgICAgICcgICA+Pj4gcGRiLnBtKClcbicKKyAgICAgICAgICAgICAnICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuJworICAgICAgICAgICAgICcgICAtPiBwcmludChzcGFtKVxuJworICAgICAgICAgICAgICcgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOyBlYWNoIGVudGVycyB0aGUgJworICAgICAgICAgICAgICdkZWJ1Z2dlclxuJworICAgICAgICAgICAgICdpbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4ZWN1dGUgdGhlICpzdGF0ZW1lbnQqIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KSAnCisgICAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICAgJyAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSAnCisgICAgICAgICAgICAgJ2NvZGUgaXNcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0ZWQ7IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzIGFuZCB0eXBlICJjb250aW51ZSIsIG9yIHlvdSAnCisgICAgICAgICAgICAgJ2NhblxuJworICAgICAgICAgICAgICcgICBzdGVwIHRocm91Z2ggdGhlIHN0YXRlbWVudCB1c2luZyAic3RlcCIgb3IgIm5leHQiIChhbGwgdGhlc2VcbicKKyAgICAgICAgICAgICAnICAgY29tbWFuZHMgYXJlIGV4cGxhaW5lZCBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAnCisgICAgICAgICAgICAgJypsb2NhbHMqXG4nCisgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkOyBieVxuJworICAgICAgICAgICAgICcgICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgIl9fbWFpbl9fIiBpcyB1c2VkLiAgJworICAgICAgICAgICAgICcoU2VlIHRoZVxuJworICAgICAgICAgICAgICcgICBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgb3IgImV2YWwoKSIgZnVuY3Rpb25zLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5ydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgJworICAgICAgICAgICAgICdvYmplY3QpXG4nCisgICAgICAgICAgICAgJyAgIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuICBXaGVuICJydW5ldmFsKCkiIHJldHVybnMsIGl0IHJldHVybnMgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uICBPdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAnICAgInJ1bigpIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2FsbCB0aGUgKmZ1bmN0aW9uKiAoYSBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LCBub3QgYSAnCisgICAgICAgICAgICAgJ3N0cmluZylcbicKKyAgICAgICAgICAgICAnICAgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgV2hlbiAicnVuY2FsbCgpIiByZXR1cm5zLCBpdCAnCisgICAgICAgICAgICAgJ3JldHVybnNcbicKKyAgICAgICAgICAgICAnICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0ICcKKyAgICAgICAgICAgICAnYXBwZWFyc1xuJworICAgICAgICAgICAgICcgICBhcyBzb29uIGFzIHRoZSBmdW5jdGlvbiBpcyBlbnRlcmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzICcKKyAgICAgICAgICAgICAndXNlZnVsIHRvXG4nCisgICAgICAgICAgICAgJyAgIGhhcmQtY29kZSBhIGJyZWFrcG9pbnQgYXQgYSBnaXZlbiBwb2ludCBpbiBhIHByb2dyYW0sIGV2ZW4gaWYgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4nCisgICAgICAgICAgICAgJyAgIGZhaWxzKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgJworICAgICAgICAgICAgICdJZiBub1xuJworICAgICAgICAgICAgICcgICAqdHJhY2ViYWNrKiBpcyBnaXZlbiwgaXQgdXNlcyB0aGUgb25lIG9mIHRoZSBleGNlcHRpb24gdGhhdCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkICcKKyAgICAgICAgICAgICAnaWYgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucG0oKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbicKKyAgICAgICAgICAgICAnICAgInN5cy5sYXN0X3RyYWNlYmFjayIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInJ1bioiIGZ1bmN0aW9ucyBhbmQgInNldF90cmFjZSgpIiBhcmUgYWxpYXNlcyBmb3IgJworICAgICAgICAgICAgICdpbnN0YW50aWF0aW5nXG4nCisgICAgICAgICAgICAgJ3RoZSAiUGRiIiBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWUuICBJZiB5b3UgJworICAgICAgICAgICAgICd3YW50XG4nCisgICAgICAgICAgICAgJ3RvIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzIHlvdXJzZWxmOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT0ndGFiJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsICIKKyAgICAgICAgICAgICAnc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSwgcmVhZHJjPVRydWUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAiUGRiIiBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgJworICAgICAgICAgICAgICd0byB0aGVcbicKKyAgICAgICAgICAgICAnICAgdW5kZXJseWluZyAiY21kLkNtZCIgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgKnNraXAqIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAnCisgICAgICAgICAgICAgJ2dsb2Itc3R5bGVcbicKKyAgICAgICAgICAgICAnICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyAnCisgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAnICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuICcKKyAgICAgICAgICAgICAnWzFdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCAnCisgICAgICAgICAgICAgJ2lzIHNlbnRcbicKKyAgICAgICAgICAgICAnICAgd2hlbiB0aGUgdXNlciBwcmVzc2VzICJDdHJsLUMiIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICAiY29udGludWUiIGNvbW1hbmQuIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJyAgIGFnYWluIGJ5IHByZXNzaW5nICJDdHJsLUMiLiAgSWYgeW91IHdhbnQgUGRiIG5vdCB0byB0b3VjaCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBTSUdJTlQgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG8gdHJ1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqcmVhZHJjKiBhcmd1bWVudCBkZWZhdWx0cyB0byB0cnVlIGFuZCBjb250cm9scyB3aGV0aGVyICcKKyAgICAgICAgICAgICAnUGRiXG4nCisgICAgICAgICAgICAgJyAgIHdpbGwgbG9hZCAucGRicmMgZmlsZXMgZnJvbSB0aGUgZmlsZXN5c3RlbS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ2RqYW5nby4qJ10pLnNldF90cmFjZSgpXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSAnCisgICAgICAgICAgICAgJ1NJR0lOVFxuJworICAgICAgICAgICAgICcgICBoYW5kbGVyIHdhcyBuZXZlciBzZXQgYnkgUGRiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNjogVGhlICpyZWFkcmMqIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnICAgcnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICcgICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuJworICAgICAgICAgICAgICcgICBzZXRfdHJhY2UoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdEZWJ1Z2dlciBDb21tYW5kc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgaW5kaWNhdGVkOyAnCisgICAgICAgICAgICAgJ2UuZy5cbicKKyAgICAgICAgICAgICAnImgoZWxwKSIgbWVhbnMgdGhhdCBlaXRoZXIgImgiIG9yICJoZWxwIiBjYW4gYmUgdXNlZCB0byBlbnRlciAnCisgICAgICAgICAgICAgJ3RoZSBoZWxwXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmQgKGJ1dCBub3QgImhlIiBvciAiaGVsIiwgbm9yICJIIiBvciAiSGVscCIgb3IgIkhFTFAiKS5cbicKKyAgICAgICAgICAgICAnQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgKHNwYWNlcyAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ3RhYnMpLiAgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHMgJworICAgICAgICAgICAgICcoIltdIikgaW5cbicKKyAgICAgICAgICAgICAndGhlIGNvbW1hbmQgc3ludGF4OyB0aGUgc3F1YXJlIGJyYWNrZXRzIG11c3Qgbm90IGJlIHR5cGVkLlxuJworICAgICAgICAgICAgICdBbHRlcm5hdGl2ZXMgaW4gdGhlIGNvbW1hbmQgc3ludGF4IGFyZSBzZXBhcmF0ZWQgYnkgYSB2ZXJ0aWNhbCAnCisgICAgICAgICAgICAgJ2JhclxuJworICAgICAgICAgICAgICcoInwiKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0VudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gICcKKyAgICAgICAgICAgICAnRXhjZXB0aW9uOiBpZlxuJworICAgICAgICAgICAgICd0aGUgbGFzdCBjb21tYW5kIHdhcyBhICJsaXN0IiBjb21tYW5kLCB0aGUgbmV4dCAxMSBsaW5lcyBhcmUgJworICAgICAgICAgICAgICdsaXN0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJDb21tYW5kcyB0aGF0IHRoZSBkZWJ1Z2dlciBkb2Vzbid0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSAiCisgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVpbmdcbicKKyAgICAgICAgICAgICAnZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuICcKKyAgICAgICAgICAgICAnZXhjbGFtYXRpb25cbicKKyAgICAgICAgICAgICAncG9pbnQgKCIhIikuICBUaGlzIGlzIGEgcG93ZXJmdWwgd2F5IHRvIGluc3BlY3QgdGhlIHByb2dyYW0gJworICAgICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICAgICdkZWJ1Z2dlZDsgaXQgaXMgZXZlbiBwb3NzaWJsZSB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvciBjYWxsIGEgJworICAgICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgInByaW50ZWQgYnV0IHRoZSBkZWJ1Z2dlcidzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGRlYnVnZ2VyIHN1cHBvcnRzIGFsaWFzZXMuICBBbGlhc2VzIGNhbiBoYXZlIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICdhbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbicKKyAgICAgICAgICAgICAnZXhhbWluYXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdNdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnkgJworICAgICAgICAgICAgICciOzsiLlxuJworICAgICAgICAgICAgICcoQSBzaW5nbGUgIjsiIGlzIG5vdCB1c2VkIGFzIGl0IGlzIHRoZSBzZXBhcmF0b3IgZm9yIG11bHRpcGxlICcKKyAgICAgICAgICAgICAnY29tbWFuZHNcbicKKyAgICAgICAgICAgICAnaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vIGludGVsbGlnZW5jZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2FwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdCBhdCB0aGUgJworICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICciOzsiIHBhaXIsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHF1b3RlZCBzdHJpbmcuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiBhIGZpbGUgIi5wZGJyYyIgZXhpc3RzIGluIHRoZSB1c2VyXCdzIGhvbWUgZGlyZWN0b3J5IG9yIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2N1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiAnCisgICAgICAgICAgICAgJ3R5cGVkXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yICcKKyAgICAgICAgICAgICAnYWxpYXNlcy4gIElmXG4nCisgICAgICAgICAgICAgJ2JvdGggZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIi5wZGJyYyIgY2FuIG5vdyBjb250YWluIGNvbW1hbmRzIHRoYXRcbicKKyAgICAgICAgICAgICAnY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzICJjb250aW51ZSIgb3IgIm5leHQiLiAgUHJldmlvdXNseSwgJworICAgICAgICAgICAgICd0aGVzZVxuJworICAgICAgICAgICAgICdjb21tYW5kcyBoYWQgbm8gZWZmZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaChlbHApIFtjb21tYW5kXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgKmNvbW1hbmQqIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4gICJoZWxwICcKKyAgICAgICAgICAgICAncGRiIlxuJworICAgICAgICAgICAgICcgICBkaXNwbGF5cyB0aGUgZnVsbCBkb2N1bWVudGF0aW9uICh0aGUgZG9jc3RyaW5nIG9mIHRoZSAicGRiIlxuJworICAgICAgICAgICAgICcgICBtb2R1bGUpLiAgU2luY2UgdGhlICpjb21tYW5kKiBhcmd1bWVudCBtdXN0IGJlIGFuIGlkZW50aWZpZXIsICcKKyAgICAgICAgICAgICAnImhlbHBcbicKKyAgICAgICAgICAgICAnICAgZXhlYyIgbXVzdCBiZSBlbnRlcmVkIHRvIGdldCBoZWxwIG9uIHRoZSAiISIgY29tbWFuZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3coaGVyZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFByaW50IGEgc3RhY2sgdHJhY2UsIHdpdGggdGhlIG1vc3QgcmVjZW50IGZyYW1lIGF0IHRoZSAnCisgICAgICAgICAgICAgJ2JvdHRvbS4gIEFuXG4nCisgICAgICAgICAgICAgJyAgIGFycm93IGluZGljYXRlcyB0aGUgY3VycmVudCBmcmFtZSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgJworICAgICAgICAgICAgICdjb250ZXh0IG9mXG4nCisgICAgICAgICAgICAgJyAgIG1vc3QgY29tbWFuZHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkKG93bikgW2NvdW50XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIGRvd24gaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndShwKSBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgdXAgaW4gdGhlICcKKyAgICAgICAgICAgICAnc3RhY2tcbicKKyAgICAgICAgICAgICAnICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2IocmVhaykgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhICpsaW5lbm8qIGFyZ3VtZW50LCBzZXQgYSBicmVhayB0aGVyZSBpbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgJ2ZpbGUuXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgJworICAgICAgICAgICAgICdleGVjdXRhYmxlXG4nCisgICAgICAgICAgICAgJyAgIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gIFRoZSBsaW5lIG51bWJlciBtYXkgYmUgJworICAgICAgICAgICAgICdwcmVmaXhlZFxuJworICAgICAgICAgICAgICcgICB3aXRoIGEgZmlsZW5hbWUgYW5kIGEgY29sb24sIHRvIHNwZWNpZnkgYSBicmVha3BvaW50IGluICcKKyAgICAgICAgICAgICAnYW5vdGhlclxuJworICAgICAgICAgICAgICIgICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuJ3QgYmVlbiBsb2FkZWQgeWV0KS4gIFRoZSBmaWxlICIKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgc2VhcmNoZWQgb24gInN5cy5wYXRoIi4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgJworICAgICAgICAgICAgICdhc3NpZ25lZCBhXG4nCisgICAgICAgICAgICAgJyAgIG51bWJlciB0byB3aGljaCBhbGwgdGhlIG90aGVyIGJyZWFrcG9pbnQgY29tbWFuZHMgcmVmZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBpcyBhbiBleHByZXNzaW9uIHdoaWNoICcKKyAgICAgICAgICAgICAnbXVzdFxuJworICAgICAgICAgICAgICcgICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBhcmd1bWVudCwgbGlzdCBhbGwgYnJlYWtzLCBpbmNsdWRpbmcgZm9yIGVhY2ggJworICAgICAgICAgICAgICdicmVha3BvaW50LFxuJworICAgICAgICAgICAgICcgICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQsIHRoZSAnCisgICAgICAgICAgICAgJ2N1cnJlbnRcbicKKyAgICAgICAgICAgICAnICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3RicmVhayBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUZW1wb3JhcnkgYnJlYWtwb2ludCwgd2hpY2ggaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciAiYnJlYWsiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2woZWFyKSBbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIGEgKmZpbGVuYW1lOmxpbmVubyogYXJndW1lbnQsIGNsZWFyIGFsbCB0aGUgYnJlYWtwb2ludHMgJworICAgICAgICAgICAgICdhdFxuJworICAgICAgICAgICAgICcgICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsICcKKyAgICAgICAgICAgICAnY2xlYXJcbicKKyAgICAgICAgICAgICAnICAgdGhvc2UgYnJlYWtwb2ludHMuIFdpdGhvdXQgYXJndW1lbnQsIGNsZWFyIGFsbCBicmVha3MgKGJ1dCAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyAgIGFzayBjb25maXJtYXRpb24pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBEaXNhYmxlIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mXG4nCisgICAgICAgICAgICAgJyAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90ICcKKyAgICAgICAgICAgICAnY2F1c2VcbicKKyAgICAgICAgICAgICAnICAgdGhlIHByb2dyYW0gdG8gc3RvcCBleGVjdXRpb24sIGJ1dCB1bmxpa2UgY2xlYXJpbmcgYSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnQsIGl0XG4nCisgICAgICAgICAgICAgJyAgIHJlbWFpbnMgaW4gdGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgYW5kIGNhbiBiZSAocmUtKWVuYWJsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdlbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW5hYmxlIHRoZSBicmVha3BvaW50cyBzcGVjaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpZ25vcmUgYnBudW1iZXIgW2NvdW50XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmICcKKyAgICAgICAgICAgICAnY291bnQgaXNcbicKKyAgICAgICAgICAgICAnICAgb21pdHRlZCwgdGhlIGlnbm9yZSBjb3VudCBpcyBzZXQgdG8gMC4gIEEgYnJlYWtwb2ludCBiZWNvbWVzICcKKyAgICAgICAgICAgICAnYWN0aXZlXG4nCisgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGlnbm9yZSBjb3VudCBpcyB6ZXJvLiAgV2hlbiBub24temVybywgdGhlIGNvdW50IGlzXG4nCisgICAgICAgICAgICAgJyAgIGRlY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgYnJlYWtwb2ludCBpcyByZWFjaGVkIGFuZCB0aGUgJworICAgICAgICAgICAgICdicmVha3BvaW50XG4nCisgICAgICAgICAgICAgJyAgIGlzIG5vdCBkaXNhYmxlZCBhbmQgYW55IGFzc29jaWF0ZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byAnCisgICAgICAgICAgICAgJ3RydWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggJworICAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZiAnCisgICAgICAgICAgICAgJypjb25kaXRpb24qXG4nCisgICAgICAgICAgICAgJyAgIGlzIGFic2VudCwgYW55IGV4aXN0aW5nIGNvbmRpdGlvbiBpcyByZW1vdmVkOyBpLmUuLCB0aGUgJworICAgICAgICAgICAgICdicmVha3BvaW50XG4nCisgICAgICAgICAgICAgJyAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIFticG51bWJlcl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNwZWNpZnkgYSBsaXN0IG9mIGNvbW1hbmRzIGZvciBicmVha3BvaW50IG51bWJlciAqYnBudW1iZXIqLiAgJworICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAnICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSAnCisgICAgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAgICAnICAgY29udGFpbmluZyBqdXN0ICJlbmQiIHRvIHRlcm1pbmF0ZSB0aGUgY29tbWFuZHMuIEFuIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAoUGRiKSBjb21tYW5kcyAxXG4nCisgICAgICAgICAgICAgJyAgICAgIChjb20pIHAgc29tZV92YXJpYWJsZVxuJworICAgICAgICAgICAgICcgICAgICAoY29tKSBlbmRcbicKKyAgICAgICAgICAgICAnICAgICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kICcKKyAgICAgICAgICAgICAnZm9sbG93XG4nCisgICAgICAgICAgICAgJyAgIGl0IGltbWVkaWF0ZWx5IHdpdGggImVuZCI7IHRoYXQgaXMsIGdpdmUgbm8gY29tbWFuZHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIG5vICpicG51bWJlciogYXJndW1lbnQsIGNvbW1hbmRzIHJlZmVycyB0byB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgc2V0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgWW91IGNhbiB1c2UgYnJlYWtwb2ludCBjb21tYW5kcyB0byBzdGFydCB5b3VyIHByb2dyYW0gdXAgJworICAgICAgICAgICAgICdhZ2Fpbi5cbicKKyAgICAgICAgICAgICAnICAgU2ltcGx5IHVzZSB0aGUgY29udGludWUgY29tbWFuZCwgb3Igc3RlcCwgb3IgYW55IG90aGVyICcKKyAgICAgICAgICAgICAnY29tbWFuZCB0aGF0XG4nCisgICAgICAgICAgICAgJyAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3BlY2lmeWluZyBhbnkgY29tbWFuZCByZXN1bWluZyBleGVjdXRpb24gKGN1cnJlbnRseSAnCisgICAgICAgICAgICAgJ2NvbnRpbnVlLFxuJworICAgICAgICAgICAgICcgICBzdGVwLCBuZXh0LCByZXR1cm4sIGp1bXAsIHF1aXQgYW5kIHRoZWlyIGFiYnJldmlhdGlvbnMpICcKKyAgICAgICAgICAgICAndGVybWluYXRlc1xuJworICAgICAgICAgICAgICcgICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnICAgZW5kKS4gVGhpcyBpcyBiZWNhdXNlIGFueSB0aW1lIHlvdSByZXN1bWUgZXhlY3V0aW9uIChldmVuICcKKyAgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAgJyAgIHNpbXBsZSBuZXh0IG9yIHN0ZXApLCB5b3UgbWF5IGVuY291bnRlciBhbm90aGVyICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludC0td2hpY2hcbicKKyAgICAgICAgICAgICAnICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCAnCisgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgJyAgIGxpc3QgdG8gZXhlY3V0ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgIElmIHlvdSB1c2UgdGhlICdzaWxlbnQnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlICIKKyAgICAgICAgICAgICAndXN1YWxcbicKKyAgICAgICAgICAgICAnICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAnbWF5IGJlXG4nCisgICAgICAgICAgICAgJyAgIGRlc2lyYWJsZSBmb3IgYnJlYWtwb2ludHMgdGhhdCBhcmUgdG8gcHJpbnQgYSBzcGVjaWZpYyAnCisgICAgICAgICAgICAgJ21lc3NhZ2UgYW5kXG4nCisgICAgICAgICAgICAgJyAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgJworICAgICAgICAgICAgICd5b3VcbicKKyAgICAgICAgICAgICAnICAgc2VlIG5vIHNpZ24gdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcmVhY2hlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3ModGVwKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSAnCisgICAgICAgICAgICAgJ29jY2FzaW9uXG4nCisgICAgICAgICAgICAgJyAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBvbiB0aGUgbmV4dCBsaW5lIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGN1cnJlbnQgZnVuY3Rpb24pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbihleHQpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGlzXG4nCisgICAgICAgICAgICAgJyAgIHJlYWNoZWQgb3IgaXQgcmV0dXJucy4gIChUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICJuZXh0IiBhbmQgJworICAgICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAgICAnICAgaXMgdGhhdCAic3RlcCIgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZSAibmV4dCJcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5ICcKKyAgICAgICAgICAgICAnc3RvcHBpbmcgYXRcbicKKyAgICAgICAgICAgICAnICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bnQoaWwpIFtsaW5lbm9dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhICcKKyAgICAgICAgICAgICAnbnVtYmVyXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSBsaW5lIG51bWJlciwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIGEgbGluZSB3aXRoIGEgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvICcKKyAgICAgICAgICAgICAnc3RvcCB3aGVuXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBBbGxvdyBnaXZpbmcgYW4gZXhwbGljaXQgbGluZSAnCisgICAgICAgICAgICAgJ251bWJlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3IoZXR1cm4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Mob250KGludWUpKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ29udGludWUgZXhlY3V0aW9uLCBvbmx5IHN0b3Agd2hlbiBhIGJyZWFrcG9pbnQgaXMgJworICAgICAgICAgICAgICdlbmNvdW50ZXJlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2oodW1wKSBsaW5lbm9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSAnCisgICAgICAgICAgICAgJ2FnYWluLFxuJworICAgICAgICAgICAgICIgICBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gcnVuLlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbm90IGFsbCBqdW1wcyBhcmUgYWxsb3dlZCAtLSBmb3IgJworICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICcgICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSAiZm9yIiBsb29wIG9yICcKKyAgICAgICAgICAgICAnb3V0XG4nCisgICAgICAgICAgICAgJyAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2woaXN0KSBbZmlyc3RbLCBsYXN0XV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3Qgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZpbGUuICBXaXRob3V0IGFyZ3VtZW50cywgJworICAgICAgICAgICAgICdsaXN0IDExXG4nCisgICAgICAgICAgICAgJyAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyAnCisgICAgICAgICAgICAgJ2xpc3RpbmcuXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggIi4iIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lLiAgJworICAgICAgICAgICAgICdXaXRoXG4nCisgICAgICAgICAgICAgJyAgIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyAnCisgICAgICAgICAgICAgJ2xlc3NcbicKKyAgICAgICAgICAgICAnICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAiLT4iLiAgJworICAgICAgICAgICAgICdJZiBhblxuJworICAgICAgICAgICAgICcgICBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICAgICd3YXNcbicKKyAgICAgICAgICAgICAnICAgb3JpZ2luYWxseSByYWlzZWQgb3IgcHJvcGFnYXRlZCBpcyBpbmRpY2F0ZWQgYnkgIj4+IiwgaWYgaXQgJworICAgICAgICAgICAgICdkaWZmZXJzXG4nCisgICAgICAgICAgICAgJyAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICI+PiIgbWFya2VyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbGwgfCBsb25nbGlzdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuJworICAgICAgICAgICAgICcgICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciAibGlzdCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhKHJncylcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncCBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50ICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ2NvbW1hbmRcbicKKyAgICAgICAgICAgICAnICAgICAtLS0gdGhpcyBleGVjdXRlcyB0aGUgUHl0aG9uICJwcmludCgpIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BwIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzICcKKyAgICAgICAgICAgICAncHJldHR5LVxuJworICAgICAgICAgICAgICcgICBwcmludGVkIHVzaW5nIHRoZSAicHByaW50IiBtb2R1bGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3aGF0aXMgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3NvdXJjZSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZGlzcGxheSBbZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuJworICAgICAgICAgICAgICcgICBleGVjdXRpb24gc3RvcHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSAnCisgICAgICAgICAgICAgJ2N1cnJlbnRcbicKKyAgICAgICAgICAgICAnICAgZnJhbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bmRpc3BsYXkgW2V4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2ludGVyYWN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTdGFydCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciAodXNpbmcgdGhlICJjb2RlIiBtb2R1bGUpICcKKyAgICAgICAgICAgICAnd2hvc2VcbicKKyAgICAgICAgICAgICAnICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyAnCisgICAgICAgICAgICAgJ2ZvdW5kIGluXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjdXJyZW50IHNjb3BlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgJworICAgICAgICAgICAgICdjb21tYW5kXG4nCisgICAgICAgICAgICAgJyAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gJworICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICcgICBpbmRpY2F0ZWQgYnkgIiUxIiwgIiUyIiwgYW5kIHNvIG9uLCB3aGlsZSAiJSoiIGlzIHJlcGxhY2VkIGJ5ICcKKyAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyAnCisgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICcgICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSAnCisgICAgICAgICAgICAgJ2xpc3RlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgJworICAgICAgICAgICAgICdsZWdhbGx5XG4nCisgICAgICAgICAgICAgJyAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAnCisgICAgICAgICAgICAgJypjYW4qIGJlXG4nCisgICAgICAgICAgICAgJyAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSAnCisgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAnICAgYWxvbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiAnCisgICAgICAgICAgICAgJ3BsYWNlZFxuJworICAgICAgICAgICAgICcgICBpbiB0aGUgIi5wZGJyYyIgZmlsZSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4nCisgICAgICAgICAgICAgJyAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogJworICAgICAgICAgICAgICdwcmludCgiJTEuIixrLCI9IiwlMS5fX2RpY3RfX1trXSlcbicKKyAgICAgICAgICAgICAnICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuJworICAgICAgICAgICAgICcgICAgICBhbGlhcyBwcyBwaSBzZWxmXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bmFsaWFzIG5hbWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnISBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBzdGFjayBmcmFtZS4gVGhlIGV4Y2xhbWF0aW9uIHBvaW50IGNhbiBiZSBvbWl0dGVkIHVubGVzcyB0aGUgJworICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICcgICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICJnbG9iYWwiIHN0YXRlbWVudCBvbiB0aGUgc2FtZSBsaW5lLCBlLmcuOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gWyctbCddXG4iCisgICAgICAgICAgICAgJyAgICAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdydW4gW2FyZ3MgLi4uXVxuJworICAgICAgICAgICAgICdyZXN0YXJ0IFthcmdzIC4uLl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgJworICAgICAgICAgICAgICdzdXBwbGllZCxcbicKKyAgICAgICAgICAgICAnICAgaXQgaXMgc3BsaXQgd2l0aCAic2hsZXgiIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuJworICAgICAgICAgICAgICcgICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgJworICAgICAgICAgICAgICdvcHRpb25zIGFyZVxuJworICAgICAgICAgICAgICcgICBwcmVzZXJ2ZWQuICJyZXN0YXJ0IiBpcyBhbiBhbGlhcyBmb3IgInJ1biIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdxKHVpdClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyAnCisgICAgICAgICAgICAgJ2Fib3J0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1sxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluICcKKyAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgJyAgICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAiX19uYW1lX18iIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKKyAnZGVsJzogJ1xuJworICAgICAgICAnVGhlICJkZWwiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50ICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdkZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSBzb21lXG4nCisgICAgICAgICdoaW50cy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tIGxlZnRcbicKKyAgICAgICAgJ3RvIHJpZ2h0LlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgZnJvbSB0aGUgbG9jYWwgJworICAgICAgICAnb3JcbicKKyAgICAgICAgJ2dsb2JhbCBuYW1lc3BhY2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuYW1lIG9jY3VycyBpbiBhICJnbG9iYWwiXG4nCisgICAgICAgICdzdGF0ZW1lbnQgaW4gdGhlIHNhbWUgY29kZSBibG9jay4gIElmIHRoZSBuYW1lIGlzIHVuYm91bmQsIGFcbicKKyAgICAgICAgJyJOYW1lRXJyb3IiIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzICcKKyAgICAgICAgJ3Bhc3NlZFxuJworICAgICAgICAndG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuJworICAgICAgICAnZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgJworICAgICAgICAnZXZlblxuJworICAgICAgICAndGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lXG4nCisgICAgICAgICdmcm9tIHRoZSBsb2NhbCBuYW1lc3BhY2UgaWYgaXQgb2NjdXJzIGFzIGEgZnJlZSB2YXJpYWJsZSBpbiBhIG5lc3RlZFxuJworICAgICAgICAnYmxvY2suXG4nLAorICdkaWN0JzogJ1xuJworICAgICAgICAgJ0RpY3Rpb25hcnkgZGlzcGxheXNcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtIHBhaXJzXG4nCisgICAgICAgICAnZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8IGRpY3RfY29tcHJlaGVuc2lvbl0gJworICAgICAgICAgJyJ9IlxuJworICAgICAgICAgJyAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbicKKyAgICAgICAgICcgICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gfCAiKioiIG9yX2V4cHJcbicKKyAgICAgICAgICcgICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuJworICAgICAgICAgJ2V2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgdG8gZGVmaW5lIHRoZSBlbnRyaWVzIG9mIHRoZSAnCisgICAgICAgICAnZGljdGlvbmFyeTpcbicKKyAgICAgICAgICdlYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuJworICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZGF0dW0uICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHRoZSBzYW1lIGtleVxuJworICAgICAgICAgIm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5J3MgIgorICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAnZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZG91YmxlIGFzdGVyaXNrICIqKiIgZGVub3RlcyAqZGljdGlvbmFyeSB1bnBhY2tpbmcqLiBJdHMgb3BlcmFuZFxuJworICAgICAgICAgJ211c3QgYmUgYSAqbWFwcGluZyouICBFYWNoIG1hcHBpbmcgaXRlbSBpcyBhZGRlZCB0byB0aGUgbmV3XG4nCisgICAgICAgICAnZGljdGlvbmFyeS4gIExhdGVyIHZhbHVlcyByZXBsYWNlIHZhbHVlcyBhbHJlYWR5IHNldCBieSBlYXJsaWVyXG4nCisgICAgICAgICAna2V5L2RhdHVtIHBhaXJzIGFuZCBlYXJsaWVyIGRpY3Rpb25hcnkgdW5wYWNraW5ncy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjU6IFVucGFja2luZyBpbnRvIGRpY3Rpb25hcnkgZGlzcGxheXMsIG9yaWdpbmFsbHlcbicKKyAgICAgICAgICdwcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3QgY29tcHJlaGVuc2lvbiwgaW4gY29udHJhc3QgdG8gbGlzdCBhbmQgc2V0IGNvbXByZWhlbnNpb25zLFxuJworICAgICAgICAgJ25lZWRzIHR3byBleHByZXNzaW9ucyBzZXBhcmF0ZWQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IHRoZSB1c3VhbFxuJworICAgICAgICAgJyJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgJworICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgJ2tleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgJworICAgICAgICAgJ29yZGVyXG4nCisgICAgICAgICAndGhleSBhcmUgcHJvZHVjZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbicKKyAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeS4gIChUbyBzdW1tYXJpemUsIHRoZSBrZXkgdHlwZVxuJworICAgICAgICAgJ3Nob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgIENsYXNoZXNcbicKKyAgICAgICAgICdiZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICh0ZXh0dWFsbHlcbicKKyAgICAgICAgICdyaWdodG1vc3QgaW4gdGhlIGRpc3BsYXkpIHN0b3JlZCBmb3IgYSBnaXZlbiBrZXkgdmFsdWUgcHJldmFpbHMuXG4nLAorICdkeW5hbWljLWZlYXR1cmVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICdhdCBjb21waWxlXG4nCisgICAgICAgICAgICAgICAgICAgICAndGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGkgPSAxMFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaSA9IDQyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsIHdoZW4gdXNlZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSAnCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyAnCisgICAgICAgICAgICAgICAgICAgICAndG8gdGhlIGZ1bGxcbicKKyAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAnbm90IHJlc29sdmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZS4gIFsxXVxuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgJworICAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lICcKKyAgICAgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAorICdlbHNlJzogJ1xuJworICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudFxuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgJyAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4nCisgICAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAgICdvbmVcbicKKyAgICAgICAgICdieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uIEJvb2xlYW4gJworICAgICAgICAgJ29wZXJhdGlvbnNcbicKKyAgICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbicKKyAgICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG4nCisgICAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxuJworICAgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKKyAnZXhjZXB0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zXG4nCisgICAgICAgICAgICAgICAnKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiAnCisgICAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICAgJ29mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb25hbFxuJworICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSAnCisgICAgICAgICAgICAgICAnZXJyb3IgaXNcbicKKyAgICAgICAgICAgICAgICdkZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciAnCisgICAgICAgICAgICAgICAnYnkgYW55XG4nCisgICAgICAgICAgICAgICAnY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayAnCisgICAgICAgICAgICAgICAnd2hlcmVcbicKKyAgICAgICAgICAgICAgICd0aGUgZXJyb3Igb2NjdXJyZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhICcKKyAgICAgICAgICAgICAgICdydW4tdGltZVxuJworICAgICAgICAgICAgICAgJ2Vycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuJworICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiAnCisgICAgICAgICAgICAgICAnRXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICAnaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgJworICAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgICAgICdjbGVhbnVwXG4nCisgICAgICAgICAgICAgICAnY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkICcKKyAgICAgICAgICAgICAgICd3aGV0aGVyIGFuXG4nCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAgICdoYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgJworICAgICAgICAgICAgICAgJ2FuIG91dGVyXG4nCisgICAgICAgICAgICAgICAnbGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5ICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICdmYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2UgJworICAgICAgICAgICAgICAgJ29mIGNvZGVcbicKKyAgICAgICAgICAgICAgICdmcm9tIHRoZSB0b3ApLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyICcKKyAgICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluICcKKyAgICAgICAgICAgICAgICdsb29wLiAgSW5cbicKKyAgICAgICAgICAgICAgICdlaXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpc1xuJworICAgICAgICAgICAgICAgJyJTeXN0ZW1FeGl0Ii5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICAnY2xhdXNlIGlzXG4nCisgICAgICAgICAgICAgICAnc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgICdjbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgJ2NhbiBiZVxuJworICAgICAgICAgICAgICAgJ3JlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAnCisgICAgICAgICAgICAgICAnYWJvdXQgdGhlXG4nCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ05vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICAnCisgICAgICAgICAgICAgICAnVGhlaXJcbicKKyAgICAgICAgICAgICAgICcgIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgJworICAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgICcgIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gJworICAgICAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICAgICAnICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICAgJ3RyeVxuJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudCBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgcmFpc2UgJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdbMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgICAnICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgJyAgICBjb21waWxlZC5cbicsCisgJ2V4ZWNtb2RlbCc6ICdcbicKKyAgICAgICAgICAgICAgJ0V4ZWN1dGlvbiBtb2RlbFxuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnU3RydWN0dXJlIG9mIGEgcHJvZ3JhbVxuJworICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIFB5dGhvbiBwcm9ncmFtIGlzIGNvbnN0cnVjdGVkIGZyb20gY29kZSBibG9ja3MuIEEgKmJsb2NrKiBpcyAnCisgICAgICAgICAgICAgICdhIHBpZWNlXG4nCisgICAgICAgICAgICAgICdvZiBQeXRob24gcHJvZ3JhbSB0ZXh0IHRoYXQgaXMgZXhlY3V0ZWQgYXMgYSB1bml0LiBUaGUgJworICAgICAgICAgICAgICAnZm9sbG93aW5nIGFyZVxuJworICAgICAgICAgICAgICAnYmxvY2tzOiBhIG1vZHVsZSwgYSBmdW5jdGlvbiBib2R5LCBhbmQgYSBjbGFzcyBkZWZpbml0aW9uLiAnCisgICAgICAgICAgICAgICdFYWNoXG4nCisgICAgICAgICAgICAgICdjb21tYW5kIHR5cGVkIGludGVyYWN0aXZlbHkgaXMgYSBibG9jay4gIEEgc2NyaXB0IGZpbGUgKGEgZmlsZSAnCisgICAgICAgICAgICAgICdnaXZlblxuJworICAgICAgICAgICAgICAnYXMgc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGludGVycHJldGVyIG9yIHNwZWNpZmllZCBhcyBhIGNvbW1hbmQgJworICAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICAnYXJndW1lbnQgdG8gdGhlIGludGVycHJldGVyKSBpcyBhIGNvZGUgYmxvY2suICBBIHNjcmlwdCBjb21tYW5kICcKKyAgICAgICAgICAgICAgJyhhXG4nCisgICAgICAgICAgICAgICdjb21tYW5kIHNwZWNpZmllZCBvbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgIicqKi1jKionXG4iCisgICAgICAgICAgICAgICdvcHRpb24pIGlzIGEgY29kZSBibG9jay4gIFRoZSBzdHJpbmcgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSAnCisgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAnZnVuY3Rpb25zICJldmFsKCkiIGFuZCAiZXhlYygpIiBpcyBhIGNvZGUgYmxvY2suXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgY29kZSBibG9jayBpcyBleGVjdXRlZCBpbiBhbiAqZXhlY3V0aW9uIGZyYW1lKi4gIEEgZnJhbWUgJworICAgICAgICAgICAgICAnY29udGFpbnNcbicKKyAgICAgICAgICAgICAgJ3NvbWUgYWRtaW5pc3RyYXRpdmUgaW5mb3JtYXRpb24gKHVzZWQgZm9yIGRlYnVnZ2luZykgYW5kICcKKyAgICAgICAgICAgICAgJ2RldGVybWluZXNcbicKKyAgICAgICAgICAgICAgIndoZXJlIGFuZCBob3cgZXhlY3V0aW9uIGNvbnRpbnVlcyBhZnRlciB0aGUgY29kZSBibG9jaydzICIKKyAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBoYXNcbicKKyAgICAgICAgICAgICAgJ2NvbXBsZXRlZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmdcbicKKyAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0JpbmRpbmcgb2YgbmFtZXNcbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSAnCisgICAgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gJworICAgICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAgICAnImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0ICcKKyAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAnaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCAnCisgICAgICAgICAgICAgICdvciBhZnRlclxuJworICAgICAgICAgICAgICAnImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgJworICAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICdvZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuJworICAgICAgICAgICAgICAnaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gICcKKyAgICAgICAgICAgICAgJ1RoaXMgZm9ybVxuJworICAgICAgICAgICAgICAnbWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkICcKKyAgICAgICAgICAgICAgJ2JvdW5kIGZvclxuJworICAgICAgICAgICAgICAndGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgJworICAgICAgICAgICAgICAnbmFtZSkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0VhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayAnCisgICAgICAgICAgICAgICdkZWZpbmVkIGJ5IGFcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlICcKKyAgICAgICAgICAgICAgJ3RvcC1sZXZlbFxuJworICAgICAgICAgICAgICAnY29kZSBibG9jaykuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgJworICAgICAgICAgICAgICAnYmxvY2ssXG4nCisgICAgICAgICAgICAgICd1bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICAgICdhdCB0aGVcbicKKyAgICAgICAgICAgICAgJ21vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhICcKKyAgICAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgICAgJ2Jsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0VhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICcKKyAgICAgICAgICAgICAgJypiaW5kaW5nKlxuJworICAgICAgICAgICAgICAnb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uICcKKyAgICAgICAgICAgICAgJ3J1bGVzLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1Jlc29sdXRpb24gb2YgbmFtZXNcbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgJworICAgICAgICAgICAgICAnYSBsb2NhbFxuJworICAgICAgICAgICAgICAndmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gICcKKyAgICAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55ICcKKyAgICAgICAgICAgICAgJ2Jsb2Nrc1xuJworICAgICAgICAgICAgICAnY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgJworICAgICAgICAgICAgICAnaW50cm9kdWNlc1xuJworICAgICAgICAgICAgICAnYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgJworICAgICAgICAgICAgICAnbmVhcmVzdFxuJworICAgICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgJworICAgICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgICAgImlzIGNhbGxlZCB0aGUgYmxvY2sncyAqZW52aXJvbm1lbnQqLlxuIgorICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgICdyYWlzZWQuIElmXG4nCisgICAgICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgJworICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCAnCisgICAgICAgICAgICAgICd3aGVyZSB0aGVcbicKKyAgICAgICAgICAgICAgJ25hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICAnIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgJworICAgICAgICAgICAgICAnYmxvY2ssIGFsbFxuJworICAgICAgICAgICAgICAndXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdjdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCAnCisgICAgICAgICAgICAgICd3aXRoaW4gYVxuJworICAgICAgICAgICAgICAnYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuJworICAgICAgICAgICAgICAnZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgJworICAgICAgICAgICAgICAnYW55d2hlcmVcbicKKyAgICAgICAgICAgICAgJ3dpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gJworICAgICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgICAgJ2RldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSAnCisgICAgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgJworICAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAgJ3NwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ3RvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCAnCisgICAgICAgICAgICAgICduYW1lc3BhY2UgYnlcbicKKyAgICAgICAgICAgICAgJ3NlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgICdvZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCAnCisgICAgICAgICAgICAgICdmaXJzdC4gIElmXG4nCisgICAgICAgICAgICAgICd0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgJworICAgICAgICAgICAgICAnc2VhcmNoZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nICcKKyAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAnaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSAnCisgICAgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAgICAnY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgJworICAgICAgICAgICAgICAnZ2xvYmFsLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgJworICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICdzY29wZS5cbicKKyAgICAgICAgICAgICAgJyJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzICcKKyAgICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgICAnZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgICd0aW1lIGFcbicKKyAgICAgICAgICAgICAgJ21vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzICcKKyAgICAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAgICAnIl9fbWFpbl9fIi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgJworICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICdzcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uICcKKyAgICAgICAgICAgICAgJ2lzIGFuXG4nCisgICAgICAgICAgICAgICdleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgJworICAgICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAgICAnZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICd1bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAnCisgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvZlxuJworICAgICAgICAgICAgICAndGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzICcKKyAgICAgICAgICAgICAgJ2xpbWl0ZWQgdG9cbicKKyAgICAgICAgICAgICAgJ3RoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiAnCisgICAgICAgICAgICAgICdtZXRob2RzIC0tXG4nCisgICAgICAgICAgICAgICd0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgJworICAgICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICAnd2lsbCBmYWlsOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBjbGFzcyBBOlxuJworICAgICAgICAgICAgICAnICAgICAgIGEgPSA0MlxuJworICAgICAgICAgICAgICAnICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdCdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAgICAnaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgJworICAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgICduYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlICcKKyAgICAgICAgICAgICAgJ2xhdHRlciBjYXNlXG4nCisgICAgICAgICAgICAgICJ0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICIKKyAgICAgICAgICAgICAgJyJfX21haW5fXyJcbicKKyAgICAgICAgICAgICAgJ21vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuICcKKyAgICAgICAgICAgICAgJ2luIGFueVxuJworICAgICAgICAgICAgICAnb3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICciYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgJworICAgICAgICAgICAgICAndXNlci1jcmVhdGVkXG4nCisgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4nCisgICAgICAgICAgICAgICciX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgJworICAgICAgICAgICAgICAnVXNlcnNcbicKKyAgICAgICAgICAgICAgJ3dhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICcKKyAgICAgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgICAgICd0aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0ICcKKyAgICAgICAgICAgICAgJ2NvbXBpbGVcbicKKyAgICAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICAgICcgICBkZWYgZigpOlxuJworICAgICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgICAgJyAgIGYoKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCAnCisgICAgICAgICAgICAgICd3aGVuIHVzZWRcbicKKyAgICAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzICcKKyAgICAgICAgICAgICAgJ2lsbGVnYWwgdG9cbicKKyAgICAgICAgICAgICAgJ2RlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgICAgJ2Z1bGxcbicKKyAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgJworICAgICAgICAgICAgICAncmVzb2x2ZWRcbicKKyAgICAgICAgICAgICAgJ2luIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZS4gIFsxXVxuJworICAgICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSAnCisgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnNcbicKKyAgICAgICAgICAgICAgJz09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mICcKKyAgICAgICAgICAgICAgJ2NvbnRyb2xcbicKKyAgICAgICAgICAgICAgJ29mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG4nCisgICAgICAgICAgICAgICdjb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgJworICAgICAgICAgICAgICAnZXJyb3IgaXNcbicKKyAgICAgICAgICAgICAgJ2RldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yICcKKyAgICAgICAgICAgICAgJ2J5IGFueVxuJworICAgICAgICAgICAgICAnY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayAnCisgICAgICAgICAgICAgICd3aGVyZVxuJworICAgICAgICAgICAgICAndGhlIGVycm9yIG9jY3VycmVkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgJworICAgICAgICAgICAgICAncnVuLXRpbWVcbicKKyAgICAgICAgICAgICAgJ2Vycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuJworICAgICAgICAgICAgICAnZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuICcKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAnaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgJworICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICciZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSAnCisgICAgICAgICAgICAgICdjbGVhbnVwXG4nCisgICAgICAgICAgICAgICdjb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAnd2hldGhlciBhblxuJworICAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1B5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiAnCisgICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAgJ2hhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiAnCisgICAgICAgICAgICAgICdvdXRlclxuJworICAgICAgICAgICAgICAnbGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5ICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAnZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mICcKKyAgICAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgICAgJ2Zyb20gdGhlIHRvcCkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyICcKKyAgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXNcbicKKyAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiAnCisgICAgICAgICAgICAgICdsb29wLiAgSW5cbicKKyAgICAgICAgICAgICAgJ2VpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICdleGNlcHRpb24gaXNcbicKKyAgICAgICAgICAgICAgJyJTeXN0ZW1FeGl0Ii5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgJworICAgICAgICAgICAgICAnY2xhdXNlIGlzXG4nCisgICAgICAgICAgICAgICdzZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCAnCisgICAgICAgICAgICAgICdyZWZlcmVuY2UgdGhlXG4nCisgICAgICAgICAgICAgICdjbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgICdyZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gJworICAgICAgICAgICAgICAnYWJvdXQgdGhlXG4nCisgICAgICAgICAgICAgICdleGNlcHRpb25hbCBjb25kaXRpb24uXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICAnCisgICAgICAgICAgICAgICdUaGVpclxuJworICAgICAgICAgICAgICAnICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgJyAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biAnCisgICAgICAgICAgICAgICd1bmRlclxuJworICAgICAgICAgICAgICAnICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1NlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAgICAgJ3RyeVxuJworICAgICAgICAgICAgICAnc3RhdGVtZW50IGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSByYWlzZSAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdbMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAgJyAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSAnCisgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAnICAgIGNvbXBpbGVkLlxuJywKKyAnZXhwcmxpc3RzJzogJ1xuJworICAgICAgICAgICAgICAnRXhwcmVzc2lvbiBsaXN0c1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBleHByZXNzaW9uX2xpc3QgICAgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuJworICAgICAgICAgICAgICAnICAgc3RhcnJlZF9saXN0ICAgICAgIDo6PSBzdGFycmVkX2l0ZW0gKCAiLCIgc3RhcnJlZF9pdGVtICkqICcKKyAgICAgICAgICAgICAgJ1siLCJdXG4nCisgICAgICAgICAgICAgICcgICBzdGFycmVkX2V4cHJlc3Npb24gOjo9IGV4cHJlc3Npb24gfCAoIHN0YXJyZWRfaXRlbSAiLCIgKSogJworICAgICAgICAgICAgICAnW3N0YXJyZWRfaXRlbV1cbicKKyAgICAgICAgICAgICAgJyAgIHN0YXJyZWRfaXRlbSAgICAgICA6Oj0gZXhwcmVzc2lvbiB8ICIqIiBvcl9leHByXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdCB3aGVuIHBhcnQgb2YgYSBsaXN0IG9yIHNldCBkaXNwbGF5LCBhbiBleHByZXNzaW9uIGxpc3RcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGNvbW1hIHlpZWxkcyBhIHR1cGxlLiAgVGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICd0aGUgdHVwbGVcbicKKyAgICAgICAgICAgICAgJ2lzIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMgaW4gdGhlIGxpc3QuICBUaGUgZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICdldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhc3RlcmlzayAiKiIgZGVub3RlcyAqaXRlcmFibGUgdW5wYWNraW5nKi4gIEl0cyBvcGVyYW5kIG11c3QgJworICAgICAgICAgICAgICAnYmUgYW5cbicKKyAgICAgICAgICAgICAgJyppdGVyYWJsZSouICBUaGUgaXRlcmFibGUgaXMgZXhwYW5kZWQgaW50byBhIHNlcXVlbmNlIG9mIGl0ZW1zLCAnCisgICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICAnYXJlIGluY2x1ZGVkIGluIHRoZSBuZXcgdHVwbGUsIGxpc3QsIG9yIHNldCwgYXQgdGhlIHNpdGUgb2YgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICd1bnBhY2tpbmcuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNTogSXRlcmFibGUgdW5wYWNraW5nIGluIGV4cHJlc3Npb24gbGlzdHMsICcKKyAgICAgICAgICAgICAgJ29yaWdpbmFsbHlcbicKKyAgICAgICAgICAgICAgJ3Byb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgdHJhaWxpbmcgY29tbWEgaXMgcmVxdWlyZWQgb25seSB0byBjcmVhdGUgYSBzaW5nbGUgdHVwbGUgJworICAgICAgICAgICAgICAnKGEuay5hLiBhXG4nCisgICAgICAgICAgICAgICcqc2luZ2xldG9uKik7IGl0IGlzIG9wdGlvbmFsIGluIGFsbCBvdGhlciBjYXNlcy4gIEEgc2luZ2xlICcKKyAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgIndpdGhvdXQgYSB0cmFpbGluZyBjb21tYSBkb2Vzbid0IGNyZWF0ZSBhIHR1cGxlLCBidXQgcmF0aGVyICIKKyAgICAgICAgICAgICAgJ3lpZWxkcyB0aGVcbicKKyAgICAgICAgICAgICAgJ3ZhbHVlIG9mIHRoYXQgZXhwcmVzc2lvbi4gKFRvIGNyZWF0ZSBhbiBlbXB0eSB0dXBsZSwgdXNlIGFuICcKKyAgICAgICAgICAgICAgJ2VtcHR5IHBhaXJcbicKKyAgICAgICAgICAgICAgJ29mIHBhcmVudGhlc2VzOiAiKCkiLilcbicsCisgJ2Zsb2F0aW5nJzogJ1xuJworICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbicKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuJworICAgICAgICAgICAgICcgICBwb2ludGZsb2F0ICAgIDo6PSBbZGlnaXRwYXJ0XSBmcmFjdGlvbiB8IGRpZ2l0cGFydCAiLiJcbicKKyAgICAgICAgICAgICAnICAgZXhwb25lbnRmbG9hdCA6Oj0gKGRpZ2l0cGFydCB8IHBvaW50ZmxvYXQpIGV4cG9uZW50XG4nCisgICAgICAgICAgICAgJyAgIGRpZ2l0cGFydCAgICAgOjo9IGRpZ2l0IChbIl8iXSBkaWdpdCkqXG4nCisgICAgICAgICAgICAgJyAgIGZyYWN0aW9uICAgICAgOjo9ICIuIiBkaWdpdHBhcnRcbicKKyAgICAgICAgICAgICAnICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXRwYXJ0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIGFyZSBhbHdheXMgaW50ZXJwcmV0ZWQgJworICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICdyYWRpeCAxMC4gRm9yIGV4YW1wbGUsICIwNzdlMDEwIiBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWUgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnYXMgIjc3ZTEwIi4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbicKKyAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgQXMgaW4gaW50ZWdlciBsaXRlcmFscywgdW5kZXJzY29yZXMgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnc3VwcG9ydGVkIGZvciBkaWdpdCBncm91cGluZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMCAgICAnCisgICAgICAgICAgICAgJzMuMTRfMTVfOTNcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAnCisgICAgICAgICAgICAgJyItMSJcbicKKyAgICAgICAgICAgICAnaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgIi0iIGFuZCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdsaXRlcmFsICIxIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IFVuZGVyc2NvcmVzIGFyZSBub3cgYWxsb3dlZCBmb3IgJworICAgICAgICAgICAgICdncm91cGluZ1xuJworICAgICAgICAgICAgICdwdXJwb3NlcyBpbiBsaXRlcmFscy5cbicsCisgJ2Zvcic6ICdcbicKKyAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSAnCisgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbicKKyAgICAgICAgJ29iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4nCisgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxuJworICAgICAgICAncHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgcmV0dXJuZWQgYnkgdGhlIGl0ZXJhdG9yLiAgJworICAgICAgICAnRWFjaFxuJworICAgICAgICAnaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbicKKyAgICAgICAgJ2ZvciBhc3NpZ25tZW50cyAoc2VlIEFzc2lnbm1lbnQgc3RhdGVtZW50cyksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuJworICAgICAgICAnZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iICcKKyAgICAgICAgJ2V4Y2VwdGlvbiksXG4nCisgICAgICAgICd0aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlICcKKyAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgJ3Rlcm1pbmF0ZXMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0EgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbicKKyAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgJworICAgICAgICAnY29udGludWVzXG4nCisgICAgICAgICd3aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuJworICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCAnCisgICAgICAgICdsaXN0LlxuJworICAgICAgICAnVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgJworICAgICAgICAnaW5jbHVkaW5nXG4nCisgICAgICAgICd0aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGZvciBpIGluIHJhbmdlKDEwKTpcbicKKyAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAnICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSAnCisgICAgICAgICduZXh0XG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuJworICAgICAgICAnYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbicKKyAgICAgICAgJ2FsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuJworICAgICAgICAnaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yICcKKyAgICAgICAgJ2lcbicKKyAgICAgICAgJzo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbicKKyAgICAgICAgJyAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbicKKyAgICAgICAgJyAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4nCisgICAgICAgICcgIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4nCisgICAgICAgICcgIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgJworICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgJyAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4ICcKKyAgICAgICAgJ29mXG4nCisgICAgICAgICcgIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJyAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4nCisgICAgICAgICcgIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuJworICAgICAgICAnICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuJworICAgICAgICAnICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgICBmb3IgeCBpbiBhWzpdOlxuJworICAgICAgICAnICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAorICdmb3JtYXRzdHJpbmdzJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTdHJpbmcgU3ludGF4XG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kIGFuZCB0aGUgIkZvcm1hdHRlciIgY2xhc3Mgc2hhcmUgJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAnc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgJworICAgICAgICAgICAgICAgICAgJyJGb3JtYXR0ZXIiLFxuJworICAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICdzeW50YXggaXNcbicKKyAgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvIHRoYXQgb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscywgYnV0IHRoZXJlICcKKyAgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2N1cmx5IGJyYWNlc1xuJworICAgICAgICAgICAgICAgICAgJyJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgJworICAgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWQgbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJ3RleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkICcKKyAgICAgICAgICAgICAgICAgICd0byBpbmNsdWRlXG4nCisgICAgICAgICAgICAgICAgICAnYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2RvdWJsaW5nOlxuJworICAgICAgICAgICAgICAgICAgJyJ7eyIgYW5kICJ9fSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICcKKyAgICAgICAgICAgICAgICAgICciWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICciXSI+ICtcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgJworICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24+XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgICAgJypmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50ICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZC4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCAiXCchXCciLCBhbmQgYSAnCisgICAgICAgICAgICAgICAgICAnKmZvcm1hdF9zcGVjKiwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAncmVwbGFjZW1lbnQgdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Ugc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2VpdGhlciBhXG4nCisgICAgICAgICAgICAgICAgICAibnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0J3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhICIKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICAiYXJndW1lbnQsIGFuZCBpZiBpdCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQgIgorICAgICAgICAgICAgICAgICAgJ2tleXdvcmRcbicKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnYXJlIDAsIDEsIDIsXG4nCisgICAgICAgICAgICAgICAgICAnLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgJworICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICAnQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAncG9zc2libGUgdG9cbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzICcKKyAgICAgICAgICAgICAgICAgICciXCcxMFwnIiBvclxuJworICAgICAgICAgICAgICAgICAgJyJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgICdmb2xsb3dlZCBieSBhbnlcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9ybVxuJworICAgICAgICAgICAgICAgICAgJyJcJy5uYW1lXCciIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyAiZ2V0YXR0cigpIiwgJworICAgICAgICAgICAgICAgICAgJ3doaWxlIGFuXG4nCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwICcKKyAgICAgICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzICcKKyAgICAgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAgIyBSZWZlcmVuY2VzIGZpcnN0ICcKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSAnCisgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAgJyAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvICcKKyAgICAgICAgICAgICAgICAgICd7MX0iXG4nCisgICAgICAgICAgICAgICAgICAnICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkICcKKyAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnbmFtZSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAnb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAgIyBGaXJzdCBlbGVtZW50IG9mICcKKyAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICdwbGF5ZXJzJy5cbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0aW5nLlxuJworICAgICAgICAgICAgICAgICAgJ05vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnIl9fZm9ybWF0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgICdtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMgaXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2Rlc2lyYWJsZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ2ZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsIG92ZXJyaWRpbmcgaXRzICcKKyAgICAgICAgICAgICAgICAgICdvd25cbicKKyAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmcgYmVmb3JlXG4nCisgICAgICAgICAgICAgICAgICAnY2FsbGluZyAiX19mb3JtYXRfXygpIiwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nIGxvZ2ljIGlzICcKKyAgICAgICAgICAgICAgICAgICdieXBhc3NlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiAiXCchc1wnIiAnCisgICAgICAgICAgICAgICAgICAnd2hpY2ggY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgICcic3RyKCkiIG9uIHRoZSB2YWx1ZSwgIlwnIXJcJyIgd2hpY2ggY2FsbHMgInJlcHIoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICciXCchYVwnIiB3aGljaFxuJworICAgICAgICAgICAgICAgICAgJ2NhbGxzICJhc2NpaSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTb21lIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSAnCisgICAgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCAnCisgICAgICAgICAgICAgICAgICAnYWxpZ25tZW50LFxuJworICAgICAgICAgICAgICAgICAgJ3BhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gJworICAgICAgICAgICAgICAgICAgJ2RlZmluZSBpdHNcbicKKyAgICAgICAgICAgICAgICAgICdvd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICcqZm9ybWF0X3NwZWMqLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ01vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nICcKKyAgICAgICAgICAgICAgICAgICdtaW5pLWxhbmd1YWdlLCB3aGljaFxuJworICAgICAgICAgICAgICAgICAgJ2lzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0EgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCAnCisgICAgICAgICAgICAgICAgICAnZmllbGRzXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIG1heSBjb250YWluIGEgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkIG5hbWUsXG4nCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbiBmbGFnIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbiwgYnV0IGRlZXBlciAnCisgICAgICAgICAgICAgICAgICAnbmVzdGluZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICdhbGxvd2VkLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjICcKKyAgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzdGl0dXRlZCBiZWZvcmUgdGhlICpmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiAnCisgICAgICAgICAgICAgICAgICAnVGhpc1xuJworICAgICAgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZm9ybWF0dGluZyBvZiBhIHZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5ICcKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU2VlIHRoZSBGb3JtYXQgZXhhbXBsZXMgc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG4nCisgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgJworICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lZFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRlZFxuJworICAgICAgICAgICAgICAgICAgJyhzZWUgRm9ybWF0IFN0cmluZyBTeW50YXggYW5kIEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMpLiAnCisgICAgICAgICAgICAgICAgICAnVGhleSBjYW5cbicKKyAgICAgICAgICAgICAgICAgICdhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4gImZvcm1hdCgpIiAnCisgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24uICBFYWNoXG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0dGFibGUgdHlwZSBtYXkgZGVmaW5lIGhvdyB0aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgJworICAgICAgICAgICAgICAgICAgJ3RvIGJlXG4nCisgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0XG4nCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWNhdGlvbnMsIGFsdGhvdWdoIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAgICAgICdzdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nICgiIiIiKSAnCisgICAgICAgICAgICAgICAgICAncHJvZHVjZXNcbicKKyAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgInN0cigpIiBvbiB0aGUgdmFsdWUuICcKKyAgICAgICAgICAgICAgICAgICdBIG5vbi1lbXB0eVxuJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBzdHJpbmcgdHlwaWNhbGx5IG1vZGlmaWVzIHRoZSByZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb3JtYXRfc3BlYyAgICAgOjo9ICcKKyAgICAgICAgICAgICAgICAgICdbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVtncm91cGluZ19vcHRpb25dWy5wcmVjaXNpb25dW3R5cGVdXG4nCisgICAgICAgICAgICAgICAgICAnICAgZmlsbCAgICAgICAgICAgIDo6PSA8YW55IGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICAgICAgICcgICBhbGlnbiAgICAgICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHNpZ24gICAgICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lkdGggICAgICAgICAgIDo6PSBpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAnICAgZ3JvdXBpbmdfb3B0aW9uIDo6PSAiXyIgfCAiLCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBwcmVjaXNpb24gICAgICAgOjo9IGludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICB0eXBlICAgICAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICcKKyAgICAgICAgICAgICAgICAgICciRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgJworICAgICAgICAgICAgICAgICAgJ2J5IGEgKmZpbGwqXG4nCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgJworICAgICAgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgICAgICAnb21pdHRlZC4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBhIGxpdGVyYWwgY3VybHkgYnJhY2UgJworICAgICAgICAgICAgICAgICAgJygiInsiIiBvclxuJworICAgICAgICAgICAgICAgICAgJyIifSIiKSBhcyB0aGUgKmZpbGwqIGNoYXJhY3RlciBpbiBhIGZvcm1hdHRlZCBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ2xpdGVyYWwgb3Igd2hlblxuJworICAgICAgICAgICAgICAgICAgJ3VzaW5nIHRoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QuICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSAnCisgICAgICAgICAgICAgICAgICAndG8gaW5zZXJ0IGFcbicKKyAgICAgICAgICAgICAgICAgICdjdXJseSBicmFjZSB3aXRoIGEgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAibGltaXRhdGlvbiBkb2Vzbid0XG4iCisgICAgICAgICAgICAgICAgICAnYWZmZWN0IHRoZSAiZm9ybWF0KCkiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzICcKKyAgICAgICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgT3B0aW9uICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJzxcJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3QgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMpLiAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc9XCciICAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgJworICAgICAgICAgICAgICAgICAgJ3RoZSBzaWduIChpZiBhbnkpICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ3ByaW50aW5nIGZpZWxkcyAgIHxcbicKKyAgICAgICAgICAgICAgICAgICIgICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtICcrMDAwMDAwMTIwJy4gVGhpcyBhbGlnbm1lbnQgIgorICAgICAgICAgICAgICAgICAgJ29wdGlvbiBpcyBvbmx5ICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgSXQgYmVjb21lcyB0aGUgJworICAgICAgICAgICAgICAgICAgImRlZmF1bHQgd2hlbiAnMCcgIHxcbiIKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnd2lkdGguICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ15cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZSBhdmFpbGFibGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ3NwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkIHdpZHRoXG4nCisgICAgICAgICAgICAgICAgICAnd2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyAnCisgICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdhbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gJworICAgICAgICAgICAgICAgICAgJ2JlIG9uZSBvZlxuJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBPcHRpb24gICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnK1wnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdib3RoIHBvc2l0aXZlIGFzICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCctXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ3VzZWQgb24gcG9zaXRpdmUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnI1wnIiBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAgJ2ZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yICcKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnRcbicKKyAgICAgICAgICAgICAgICAgICd0eXBlcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXIsIGZsb2F0LCAnCisgICAgICAgICAgICAgICAgICAnY29tcGxleCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICdEZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgJworICAgICAgICAgICAgICAgICAgJ2hleGFkZWNpbWFsIG91dHB1dFxuJworICAgICAgICAgICAgICAgICAgJ2lzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlICJcJzBiXCciLCAnCisgICAgICAgICAgICAgICAgICAnIlwnMG9cJyIsIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIlwnMHhcJyIgdG8gdGhlIG91dHB1dCB2YWx1ZS4gRm9yIGZsb2F0cywgY29tcGxleCBhbmQgJworICAgICAgICAgICAgICAgICAgJ0RlY2ltYWwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gJworICAgICAgICAgICAgICAgICAgJ2Fsd2F5cyBjb250YWluIGFcbicKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiAnCisgICAgICAgICAgICAgICAgICAnTm9ybWFsbHksIGFcbicKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsLXBvaW50IGNoYXJhY3RlciBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgdGhlc2UgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zXG4nCisgICAgICAgICAgICAgICAgICAnb25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgIlwnZ1wnIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyJcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgICdyZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJcJyxcJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhICcKKyAgICAgICAgICAgICAgICAgICd0aG91c2FuZHMgc2VwYXJhdG9yLlxuJworICAgICAgICAgICAgICAgICAgJ0ZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgIlwnblwnIiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICdwcmVzZW50YXRpb24gdHlwZVxuJworICAgICAgICAgICAgICAgICAgJ2luc3RlYWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlICJcJyxcJyIgb3B0aW9uIChzZWUgYWxzbyAnCisgICAgICAgICAgICAgICAgICAnKipQRVAgMzc4KiopLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCdfXCciIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYW4gdW5kZXJzY29yZSBmb3IgYSAnCisgICAgICAgICAgICAgICAgICAndGhvdXNhbmRzXG4nCisgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGZvciBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgYW5kIGZvciAnCisgICAgICAgICAgICAgICAgICAnaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRhdGlvbiB0eXBlICJcJ2RcJyIuICBGb3IgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2JcJyIsICJcJ29cJyIsXG4nCisgICAgICAgICAgICAgICAgICAnIlwneFwnIiwgYW5kICJcJ1hcJyIsIHVuZGVyc2NvcmVzIHdpbGwgYmUgaW5zZXJ0ZWQgZXZlcnkgNCAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzLiAgRm9yXG4nCisgICAgICAgICAgICAgICAgICAnb3RoZXIgcHJlc2VudGF0aW9uIHR5cGVzLCBzcGVjaWZ5aW5nIHRoaXMgb3B0aW9uIGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICdlcnJvci5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBBZGRlZCB0aGUgIlwnX1wnIiBvcHRpb24gKHNlZSBhbHNvICcKKyAgICAgICAgICAgICAgICAgICcqKlBFUCA1MTUqKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnd2lkdGguICBJZiBub3RcbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnV2hlbiBubyBleHBsaWNpdCBhbGlnbm1lbnQgaXMgZ2l2ZW4sIHByZWNlZGluZyB0aGUgKndpZHRoKiAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgYnkgYVxuJworICAgICAgICAgICAgICAgICAgJ3plcm8gKCJcJzBcJyIpIGNoYXJhY3RlciBlbmFibGVzIHNpZ24tYXdhcmUgemVyby1wYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICdmb3IgbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAgJ3R5cGVzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgKmZpbGwqIGNoYXJhY3RlciBvZiAiXCcwXCciICcKKyAgICAgICAgICAgICAgICAgICd3aXRoIGFuXG4nCisgICAgICAgICAgICAgICAgICAnKmFsaWdubWVudCogdHlwZSBvZiAiXCc9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqcHJlY2lzaW9uKiBpcyBhIGRlY2ltYWwgbnVtYmVyIGluZGljYXRpbmcgaG93IG1hbnkgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICdiZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkIHdpdGggIlwnZlwnIiBhbmQgIlwnRlwnIiwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwgcG9pbnRcbicKKyAgICAgICAgICAgICAgICAgICdmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCAiXCdnXCciIG9yICcKKyAgICAgICAgICAgICAgICAgICciXCdHXCciLiAgRm9yIG5vbi1cbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gJworICAgICAgICAgICAgICAgICAgJ2luIG90aGVyXG4nCisgICAgICAgICAgICAgICAgICAnd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICdjb250ZW50LiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICcqcHJlY2lzaW9uKiBpcyBub3QgYWxsb3dlZCBmb3IgaW50ZWdlciB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgVHlwZSAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ3NcJyIgICAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlICcKKyAgICAgICAgICAgICAgICAgICdmb3Igc3RyaW5ncyBhbmQgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ3NcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnYlwnIiAgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2Jhc2UgMi4gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdjXCciICAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAncHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2RcJyIgICAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2Jhc2UgMTAuICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnb1wnIiAgICAgfCBPY3RhbCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlICcKKyAgICAgICAgICAgICAgICAgICc4LiAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCd4XCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlICcKKyAgICAgICAgICAgICAgICAgICcxNiwgdXNpbmcgbG93ZXItICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSAnCisgICAgICAgICAgICAgICAgICAnOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ1hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzE2LCB1c2luZyB1cHBlci0gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlICcKKyAgICAgICAgICAgICAgICAgICc5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZFwnIiwgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNlcGFyYXRvciAnCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICciXCdkXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0luIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiAnCisgICAgICAgICAgICAgICAgICAnYmUgZm9ybWF0dGVkXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAnCisgICAgICAgICAgICAgICAgICAnKGV4Y2VwdCAiXCduXCciXG4nCisgICAgICAgICAgICAgICAgICAnYW5kIE5vbmUpLiBXaGVuIGRvaW5nIHNvLCAiZmxvYXQoKSIgaXMgdXNlZCB0byBjb252ZXJ0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnaW50ZWdlciB0b1xuJworICAgICAgICAgICAgICAgICAgJ2EgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBhdmFpbGFibGUgcHJlc2VudGF0aW9uIHR5cGVzIGZvciBmbG9hdGluZyBwb2ludCBhbmQgJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgICAnYXJlOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgVHlwZSAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFByaW50cyB0aGUgbnVtYmVyIGluICcKKyAgICAgICAgICAgICAgICAgICdzY2llbnRpZmljICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciAnZScgdG8gaW5kaWNhdGUgIgorICAgICAgICAgICAgICAgICAgJ3RoZSBleHBvbmVudC4gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgVGhlIGRlZmF1bHQgcHJlY2lzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAgICciNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnRVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gU2FtZSBhcyAiXCdlXCciICcKKyAgICAgICAgICAgICAgICAgICdleGNlcHQgaXQgdXNlcyBhbiB1cHBlciAgIHxcbicKKyAgICAgICAgICAgICAgICAgICIgICB8ICAgICAgICAgICB8IGNhc2UgJ0UnIGFzIHRoZSBzZXBhcmF0b3IgIgorICAgICAgICAgICAgICAgICAgJ2NoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSAnCisgICAgICAgICAgICAgICAgICAnZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgVGhlIGRlZmF1bHQgcHJlY2lzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAgICciNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnRlwnIiAgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyAiXCdmXCciLCBidXQgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnRzICJuYW4iIHRvICJOQU4iICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGFuZCAiaW5mIiB0byAnCisgICAgICAgICAgICAgICAgICAnIklORiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gJworICAgICAgICAgICAgICAgICAgJyJwID49IDEiLCB0aGlzICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcm91bmRzIHRoZSBudW1iZXIgdG8gInAiIHNpZ25pZmljYW50ICcKKyAgICAgICAgICAgICAgICAgICdkaWdpdHMgYW5kIHRoZW4gICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZm9ybWF0cyB0aGUgcmVzdWx0IGluIGVpdGhlciBmaXhlZC1wb2ludCAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0IG9yIGluICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyAnCisgICAgICAgICAgICAgICAgICAnbWFnbml0dWRlLiAgVGhlICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcHJlY2lzZSBydWxlcyBhcmUgYXMgZm9sbG93czogc3VwcG9zZSB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0ICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiAnCisgICAgICAgICAgICAgICAgICAnYW5kIHByZWNpc2lvbiAicC0xIiB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB3b3VsZCBoYXZlIGV4cG9uZW50ICJleHAiLiAgVGhlbiBpZiAiLTQgPD0gJworICAgICAgICAgICAgICAgICAgJ2V4cCA8IHAiLCB0aGUgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBudW1iZXIgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyJcJ2ZcJyIgYW5kICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHByZWNpc2lvbiAicC0xLWV4cCIuICBPdGhlcndpc2UsIHRoZSAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVyIGlzIGZvcm1hdHRlZCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiBhbmQgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbiAicC0xIi4gSW4gYm90aCAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZXMgaW5zaWduaWZpY2FudCB0cmFpbGluZyB6ZXJvcyBhcmUgJworICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQgZnJvbSB0aGUgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyBhbHNvICcKKyAgICAgICAgICAgICAgICAgICdyZW1vdmVkIGlmICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nICcKKyAgICAgICAgICAgICAgICAgICdpdC4gIFBvc2l0aXZlIGFuZCAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbmVnYXRpdmUgaW5maW5pdHksIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnemVybywgYW5kIG5hbnMsICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYXJlIGZvcm1hdHRlZCBhcyAiaW5mIiwgIi1pbmYiLCAiMCIsICItMCIgJworICAgICAgICAgICAgICAgICAgJ2FuZCAibmFuIiAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgIjAiIGlzIHRyZWF0ZWQgYXMgZXF1aXZhbGVudCB0byBhICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gb2YgIjEiLiBUaGUgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnR1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gU2FtZSBhcyAiXCdnXCciIGV4Y2VwdCAnCisgICAgICAgICAgICAgICAgICAnc3dpdGNoZXMgdG8gIlwnRVwnIiBpZiAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdGhlIG51bWJlciBnZXRzIHRvbyBsYXJnZS4gVGhlICcKKyAgICAgICAgICAgICAgICAgICdyZXByZXNlbnRhdGlvbnMgb2YgaW5maW5pdHkgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgJworICAgICAgICAgICAgICAgICAgJ3Rvby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZ1wnIiwgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNlcGFyYXRvciAnCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJyVcJyIgICAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCAnCisgICAgICAgICAgICAgICAgICAnYW5kIGRpc3BsYXlzIGluICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZml4ZWQgKCJcJ2ZcJyIpIGZvcm1hdCwgZm9sbG93ZWQgYnkgYSAnCisgICAgICAgICAgICAgICAgICAncGVyY2VudCBzaWduLiAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvICJcJ2dcJyIsIGV4Y2VwdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdmaXhlZC1wb2ludCBub3RhdGlvbiwgd2hlbiAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHVzZWQsIGhhcyBhdCBsZWFzdCBvbmUgZGlnaXQgcGFzdCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwgcG9pbnQuIFRoZSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzIGFzIGhpZ2ggYXMgbmVlZGVkIHRvICcKKyAgICAgICAgICAgICAgICAgICdyZXByZXNlbnQgdGhlICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHBhcnRpY3VsYXIgdmFsdWUuIFRoZSBvdmVyYWxsIGVmZmVjdCBpcyB0byAnCisgICAgICAgICAgICAgICAgICAnbWF0Y2ggdGhlICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG91dHB1dCBvZiAic3RyKCkiIGFzIGFsdGVyZWQgYnkgdGhlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdtb2RpZmllcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IGV4YW1wbGVzXG4nCisgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGV4YW1wbGVzIG9mIHRoZSAic3RyLmZvcm1hdCgpIiBzeW50YXggJworICAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gd2l0aCB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0luIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkICcKKyAgICAgICAgICAgICAgICAgICciJSItZm9ybWF0dGluZyxcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgInt9IiBhbmQgd2l0aCAiOiIgdXNlZCBpbnN0ZWFkIG9mICcKKyAgICAgICAgICAgICAgICAgICciJSIuIEZvclxuJworICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsICJcJyUwMy4yZlwnIiBjYW4gYmUgdHJhbnNsYXRlZCB0byAiXCd7OjAzLjJmfVwnIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCAnCisgICAgICAgICAgICAgICAgICAnb3B0aW9ucywgc2hvd25cbicKKyAgICAgICAgICAgICAgICAgICdpbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FjY2Vzc2luZyBhcmd1bWVudHMgYnkgcG9zaXRpb246XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7MH0sIHsxfSwgezJ9Jy5mb3JtYXQoJ2EnLCAnYicsICdjJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnYSwgYiwgYydcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3t9LCB7fSwge30nLmZvcm1hdCgnYScsICdiJywgJ2MnKSAgIyAzLjErIG9ubHlcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnYSwgYiwgYydcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3syfSwgezF9LCB7MH0nLmZvcm1hdCgnYScsICdiJywgJ2MnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdjLCBiLCBhJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezJ9LCB7MX0sIHswfScuZm9ybWF0KConYWJjJykgICAgICAjIHVucGFja2luZyAiCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICIgICAnYywgYiwgYSdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3swfXsxfXswfScuZm9ybWF0KCdhYnJhJywgJ2NhZCcpICAgIyBhcmd1bWVudHMnICIKKyAgICAgICAgICAgICAgICAgICdpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuJworICAgICAgICAgICAgICAgICAgIiAgICdhYnJhY2FkYWJyYSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IG5hbWU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICdDb29yZGluYXRlczoge2xhdGl0dWRlfSwgIgorICAgICAgICAgICAgICAgICAgIntsb25naXR1ZGV9Jy5mb3JtYXQobGF0aXR1ZGU9JzM3LjI0TicsICIKKyAgICAgICAgICAgICAgICAgICJsb25naXR1ZGU9Jy0xMTUuODFXJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVcnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+IGNvb3JkID0geydsYXRpdHVkZSc6ICczNy4yNE4nLCAnbG9uZ2l0dWRlJzogIgorICAgICAgICAgICAgICAgICAgIictMTE1LjgxVyd9XG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICdDb29yZGluYXRlczoge2xhdGl0dWRlfSwgIgorICAgICAgICAgICAgICAgICAgIntsb25naXR1ZGV9Jy5mb3JtYXQoKipjb29yZClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVcnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiQWNjZXNzaW5nIGFyZ3VtZW50cycgYXR0cmlidXRlczpcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IDMtNWpcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gKCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsICIKKyAgICAgICAgICAgICAgICAgICJwYXJ0IHswLnJlYWx9ICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LicpLmZvcm1hdChjKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdUaGUgY29tcGxleCBudW1iZXIgKDMtNWopIGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgIgorICAgICAgICAgICAgICAgICAgIjMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBQb2ludDpcbicKKyAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4LCB5KTpcbicKKyAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBzZWxmLngsIHNlbGYueSA9IHgsIHlcbicKKyAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuJworICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAnUG9pbnQoe3NlbGYueH0sICIKKyAgICAgICAgICAgICAgICAgICJ7c2VsZi55fSknLmZvcm1hdChzZWxmPXNlbGYpXG4iCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHN0cihQb2ludCg0LCAyKSlcbicKKyAgICAgICAgICAgICAgICAgICIgICAnUG9pbnQoNCwgMiknXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiQWNjZXNzaW5nIGFyZ3VtZW50cycgaXRlbXM6XG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGNvb3JkID0gKDMsIDUpXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICdYOiB7MFswXX07ICBZOiB7MFsxXX0nLmZvcm1hdChjb29yZClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnWDogMzsgIFk6IDUnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUmVwbGFjaW5nICIlcyIgYW5kICIlciI6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogJworICAgICAgICAgICAgICAgICAgJ3shc30iLmZvcm1hdChcJ3Rlc3QxXCcsIFwndGVzdDJcJylcbicKKyAgICAgICAgICAgICAgICAgICcgICAicmVwcigpIHNob3dzIHF1b3RlczogXCd0ZXN0MVwnOyBzdHIoKSBkb2VzblwndDogdGVzdDIiXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWxpZ25pbmcgdGhlIHRleHQgYW5kIHNwZWNpZnlpbmcgYSB3aWR0aDpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6PDMwfScuZm9ybWF0KCdsZWZ0IGFsaWduZWQnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdsZWZ0IGFsaWduZWQgICAgICAgICAgICAgICAgICAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Oj4zMH0nLmZvcm1hdCgncmlnaHQgYWxpZ25lZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJyAgICAgICAgICAgICAgICAgcmlnaHQgYWxpZ25lZCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6XjMwfScuZm9ybWF0KCdjZW50ZXJlZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6Kl4zMH0nLmZvcm1hdCgnY2VudGVyZWQnKSAgIyB1c2UgJyonIGFzIGEgZmlsbCAiCisgICAgICAgICAgICAgICAgICAnY2hhclxuJworICAgICAgICAgICAgICAgICAgIiAgICcqKioqKioqKioqKmNlbnRlcmVkKioqKioqKioqKionXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUmVwbGFjaW5nICIlK2YiLCAiJS1mIiwgYW5kICIlIGYiIGFuZCBzcGVjaWZ5aW5nIGEgc2lnbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6K2Z9OyB7OitmfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGl0ICIKKyAgICAgICAgICAgICAgICAgICdhbHdheXNcbicKKyAgICAgICAgICAgICAgICAgICIgICAnKzMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OiBmfTsgezogZn0nLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBhIHNwYWNlICIKKyAgICAgICAgICAgICAgICAgICdmb3IgcG9zaXRpdmUgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICAgIiAgICcgMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6LWZ9OyB7Oi1mfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlICIKKyAgICAgICAgICAgICAgICAgICJtaW51cyAtLSBzYW1lIGFzICd7OmZ9OyB7OmZ9J1xuIgorICAgICAgICAgICAgICAgICAgIiAgICczLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1JlcGxhY2luZyAiJXgiIGFuZCAiJW8iIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byAnCisgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50IGJhc2VzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDp4fTsgIG9jdDogezA6b307ICBiaW46ICcKKyAgICAgICAgICAgICAgICAgICd7MDpifSIuZm9ybWF0KDQyKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdpbnQ6IDQyOyAgaGV4OiAyYTsgIG9jdDogNTI7ICBiaW46IDEwMTAxMCdcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gIyB3aXRoIDB4LCAwbywgb3IgMGIgYXMgcHJlZml4OlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46ICcKKyAgICAgICAgICAgICAgICAgICd7MDojYn0iLmZvcm1hdCg0MilcbicKKyAgICAgICAgICAgICAgICAgICIgICAnaW50OiA0MjsgIGhleDogMHgyYTsgIG9jdDogMG81MjsgIGJpbjogMGIxMDEwMTAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVXNpbmcgdGhlIGNvbW1hIGFzIGEgdGhvdXNhbmRzIHNlcGFyYXRvcjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6LH0nLmZvcm1hdCgxMjM0NTY3ODkwKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICcxLDIzNCw1NjcsODkwJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0V4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBwb2ludHMgPSAxOVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiB0b3RhbCA9IDIyXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfScuZm9ybWF0KHBvaW50cy90b3RhbClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnQ29ycmVjdCBhbnN3ZXJzOiA4Ni4zNiUnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgZGF0ZXRpbWVcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OiVZLSVtLSVkICVIOiVNOiVTfScuZm9ybWF0KGQpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzIwMTAtMDctMDQgMTI6MTU6NTgnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gZm9yIGFsaWduLCB0ZXh0IGluIHppcCgnPF4+JywgWydsZWZ0JywgJ2NlbnRlcicsICIKKyAgICAgICAgICAgICAgICAgICIncmlnaHQnXSk6XG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAnezA6e2ZpbGx9e2FsaWdufTE2fScuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sICIKKyAgICAgICAgICAgICAgICAgICdhbGlnbj1hbGlnbilcbicKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICIgICAnbGVmdDw8PDw8PDw8PDw8PCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnXl5eXl5jZW50ZXJeXl5eXidcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnPj4+Pj4+Pj4+Pj5yaWdodCdcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gb2N0ZXRzID0gWzE5MiwgMTY4LCAwLCAxXVxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezowMlh9ezowMlh9ezowMlh9ezowMlh9Jy5mb3JtYXQoKm9jdGV0cylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnQzBBODAwMDEnXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGludChfLCAxNilcbicKKyAgICAgICAgICAgICAgICAgICcgICAzMjMyMjM1NTIxXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHdpZHRoID0gNVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBmb3IgbnVtIGluIHJhbmdlKDUsMTIpOiAjZG9jdGVzdDogJworICAgICAgICAgICAgICAgICAgJytOT1JNQUxJWkVfV0hJVEVTUEFDRVxuJworICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gJ2RYb2InOlxuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgICAgICAgIHByaW50KCd7MDp7d2lkdGh9e2Jhc2V9fScuZm9ybWF0KG51bSwgIgorICAgICAgICAgICAgICAgICAgImJhc2U9YmFzZSwgd2lkdGg9d2lkdGgpLCBlbmQ9JyAnKVxuIgorICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgcHJpbnQoKVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA1ICAgICA1ICAgICA1ICAgMTAxXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA4ICAgICA4ICAgIDEwICAxMDAwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIDExICAgICBCICAgIDEzICAxMDExXG4nLAorICdmdW5jdGlvbic6ICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAnCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZnVuY2RlZiAgICAgICAgICAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgJworICAgICAgICAgICAgICdbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgZGVjb3JhdG9ycyAgICAgICAgICAgICAgOjo9IGRlY29yYXRvcitcbicKKyAgICAgICAgICAgICAnICAgZGVjb3JhdG9yICAgICAgICAgICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiICcKKyAgICAgICAgICAgICAnW2FyZ3VtZW50X2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuJworICAgICAgICAgICAgICcgICBkb3R0ZWRfbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXJfbGlzdCAgICAgICAgICA6Oj0gZGVmcGFyYW1ldGVyICgiLCIgZGVmcGFyYW1ldGVyKSogJworICAgICAgICAgICAgICdbIiwiIFtwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc11dXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICB8IHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzIDo6PSAiKiIgW3BhcmFtZXRlcl0gKCIsIiAnCisgICAgICAgICAgICAgJ2RlZnBhcmFtZXRlcikqIFsiLCIgWyIqKiIgcGFyYW1ldGVyIFsiLCJdXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXIgWyIsIl1cbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBkZWZwYXJhbWV0ZXIgICAgICAgICAgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnICAgZnVuY25hbWUgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gJworICAgICAgICAgICAgICdiaW5kc1xuJworICAgICAgICAgICAgICd0aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICcoYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuJworICAgICAgICAgICAgICdmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsICcKKyAgICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyAnCisgICAgICAgICAgICAgJ2dldHNcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGlzXG4nCisgICAgICAgICAgICAgJ2RlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAncmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICdhcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG5hbWVcbicKKyAgICAgICAgICAgICAnaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCAnCisgICAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICAgJ25lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBAZjEoYXJnKVxuJworICAgICAgICAgICAgICcgICBAZjJcbicKKyAgICAgICAgICAgICAnICAgZGVmIGZ1bmMoKTogcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGlzIG5vdCB0ZW1wb3JhcmlseSBib3VuZCB0byAnCisgICAgICAgICAgICAgJ3RoZSBuYW1lXG4nCisgICAgICAgICAgICAgJyJmdW5jIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4nCisgICAgICAgICAgICAgJypleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgJworICAgICAgICAgICAgICd2YWx1ZXMuIlxuJworICAgICAgICAgICAgICdGb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAgICAnKmFyZ3VtZW50KiBtYXlcbicKKyAgICAgICAgICAgICAiYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyJ3MgZGVmYXVsdCAiCisgICAgICAgICAgICAgJ3ZhbHVlIGlzXG4nCisgICAgICAgICAgICAgJ3N1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xuJworICAgICAgICAgICAgICdwYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tICcKKyAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICdpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAnZ3JhbW1hci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyoqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpc1xuJworICAgICAgICAgICAgICdldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgJworICAgICAgICAgICAgICcicHJlLVxuJworICAgICAgICAgICAgICdjb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5ICcKKyAgICAgICAgICAgICAnaW1wb3J0YW50XG4nCisgICAgICAgICAgICAgJ3RvIHVuZGVyc3RhbmQgd2hlbiBhIGRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggJworICAgICAgICAgICAgICdhcyBhXG4nCisgICAgICAgICAgICAgJ2xpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiAnCisgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgJ2FwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCAnCisgICAgICAgICAgICAgJ21vZGlmaWVkLlxuJworICAgICAgICAgICAgICdUaGlzIGlzIGdlbmVyYWxseSBub3Qgd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyAnCisgICAgICAgICAgICAgJ3RvIHVzZVxuJworICAgICAgICAgICAgICciTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLCBlLmcuOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuJworICAgICAgICAgICAgICcgICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIHBlbmd1aW4gPSBbXVxuJworICAgICAgICAgICAgICcgICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuJworICAgICAgICAgICAgICcgICAgICAgcmV0dXJuIHBlbmd1aW5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgJ0NhbGxzLlxuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzICcKKyAgICAgICAgICAgICAnbWVudGlvbmVkIGluXG4nCisgICAgICAgICAgICAgJ3RoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tICcKKyAgICAgICAgICAgICAna2V5d29yZFxuJworICAgICAgICAgICAgICdhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybSAiIippZGVudGlmaWVyIiIgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnkgZXhjZXNzICcKKyAgICAgICAgICAgICAncG9zaXRpb25hbFxuJworICAgICAgICAgICAgICdwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gSWYgdGhlIGZvcm1cbicKKyAgICAgICAgICAgICAnIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ldyBvcmRlcmVkXG4nCisgICAgICAgICAgICAgJ21hcHBpbmcgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSAnCisgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICdlbXB0eSBtYXBwaW5nIG9mIHRoZSBzYW1lIHR5cGUuICBQYXJhbWV0ZXJzIGFmdGVyICIiKiIiIG9yXG4nCisgICAgICAgICAgICAgJyIiKmlkZW50aWZpZXIiIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlICcKKyAgICAgICAgICAgICAncGFzc2VkXG4nCisgICAgICAgICAgICAgJ3VzZWQga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdQYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgJworICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uIGV2ZW4gJworICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICdvZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSAnCisgICAgICAgICAgICAgJ2hhdmVcbicKKyAgICAgICAgICAgICAnInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgJworICAgICAgICAgICAgICdwYXJhbWV0ZXJcbicKKyAgICAgICAgICAgICAnbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gYW5kICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgJworICAgICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAgICAnYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSAnCisgICAgICAgICAgICAgJ2NvZGUuXG4nCisgICAgICAgICAgICAgJ1RoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiBhXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbicKKyAgICAgICAgICAgICAiZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVycycgbmFtZXMgaW4gdGhlICIKKyAgICAgICAgICAgICAnIl9fYW5ub3RhdGlvbnNfXyJcbicKKyAgICAgICAgICAgICAnYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90ICcKKyAgICAgICAgICAgICAnYm91bmRcbicKKyAgICAgICAgICAgICAndG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiBMYW1iZGFzLiAgTm90ZSB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbjtcbicKKyAgICAgICAgICAgICAnYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgJworICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICdhc3NpZ25lZCB0byBhbm90aGVyIG5hbWUganVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgJworICAgICAgICAgICAgICdpdFxuJworICAgICAgICAgICAgICdhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiCisgICAgICAgICAgICAgJyIiZGVmIiJcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyAnCisgICAgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAgICAnaW4gdGhlIG5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gTmFtaW5nIGFuZCBiaW5kaW5nIGZvciAnCisgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcbicKKyAgICAgICAgICAgICAnICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG4nLAorICdnbG9iYWwnOiAnXG4nCisgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaXMgYSBkZWNsYXJhdGlvbiB3aGljaCBob2xkcyBmb3IgdGhlICcKKyAgICAgICAgICAgJ2VudGlyZVxuJworICAgICAgICAgICAnY3VycmVudCBjb2RlIGJsb2NrLiAgSXQgbWVhbnMgdGhhdCB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIGFyZSB0byAnCisgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAnaW50ZXJwcmV0ZWQgYXMgZ2xvYmFscy4gIEl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gYXNzaWduIHRvIGEgJworICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICd2YXJpYWJsZSB3aXRob3V0ICJnbG9iYWwiLCBhbHRob3VnaCBmcmVlIHZhcmlhYmxlcyBtYXkgcmVmZXIgdG9cbicKKyAgICAgICAgICAgJ2dsb2JhbHMgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBnbG9iYWwuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lICcKKyAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgJ2Jsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCAiZ2xvYmFsIiBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzICcKKyAgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICAncGFyYW1ldGVycyBvciBpbiBhICJmb3IiIGxvb3AgY29udHJvbCB0YXJnZXQsICJjbGFzcyIgZGVmaW5pdGlvbixcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb24sICJpbXBvcnQiIHN0YXRlbWVudCwgb3IgdmFyaWFibGUgYW5ub3RhdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzICcKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnZW5mb3JjZSBzb21lIG9mIHRoZXNlIHJlc3RyaWN0aW9uLCBidXQgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZSAnCisgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICdmcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlIHRoZW0gb3Igc2lsZW50bHkgJworICAgICAgICAgICAnY2hhbmdlXG4nCisgICAgICAgICAgICd0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogdGhlICJnbG9iYWwiIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSAnCisgICAgICAgICAgICdwYXJzZXIuICBJdFxuJworICAgICAgICAgICAnYXBwbGllcyBvbmx5IHRvIGNvZGUgcGFyc2VkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlICJnbG9iYWwiXG4nCisgICAgICAgICAgICdzdGF0ZW1lbnQuIEluIHBhcnRpY3VsYXIsIGEgImdsb2JhbCIgc3RhdGVtZW50IGNvbnRhaW5lZCBpbiBhICcKKyAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAnb3IgY29kZSBvYmplY3Qgc3VwcGxpZWQgdG8gdGhlIGJ1aWx0LWluICJleGVjKCkiIGZ1bmN0aW9uIGRvZXMgJworICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICdhZmZlY3QgdGhlIGNvZGUgYmxvY2sgKmNvbnRhaW5pbmcqIHRoZSBmdW5jdGlvbiBjYWxsLCBhbmQgY29kZVxuJworICAgICAgICAgICAnY29udGFpbmVkIGluIHN1Y2ggYSBzdHJpbmcgaXMgdW5hZmZlY3RlZCBieSAiZ2xvYmFsIiBzdGF0ZW1lbnRzIGluICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnY29kZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsLiAgVGhlIHNhbWUgYXBwbGllcyB0byB0aGUgJworICAgICAgICAgICAnImV2YWwoKSJcbicKKyAgICAgICAgICAgJ2FuZCAiY29tcGlsZSgpIiBmdW5jdGlvbnMuXG4nLAorICdpZC1jbGFzc2VzJzogJ1xuJworICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlICcKKyAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAnbWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiAnCisgICAgICAgICAgICAgICAnbGVhZGluZyBhbmRcbicKKyAgICAgICAgICAgICAgICd0cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnIl8qIlxuJworICAgICAgICAgICAgICAgJyAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgJworICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIgIl8iXG4nCisgICAgICAgICAgICAgICAnICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCAnCisgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgJworICAgICAgICAgICAgICAgJ1doZW4gbm90XG4nCisgICAgICAgICAgICAgICAnICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCAnCisgICAgICAgICAgICAgICAnZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICcgICBTZWUgc2VjdGlvbiBUaGUgaW1wb3J0IHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGUgbmFtZSAiXyIgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4nCisgICAgICAgICAgICAgICAnICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuJworICAgICAgICAgICAgICAgJyAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzICcKKyAgICAgICAgICAgICAgICdjb252ZW50aW9uLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyJfXypfXyJcbicKKyAgICAgICAgICAgICAgICcgICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICdpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgJyAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICAnCisgICAgICAgICAgICAgICAnQ3VycmVudFxuJworICAgICAgICAgICAgICAgJyAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSBTcGVjaWFsIG1ldGhvZCBuYW1lcyAnCisgICAgICAgICAgICAgICAnc2VjdGlvbiBhbmRcbicKKyAgICAgICAgICAgICAgICcgICBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zICcKKyAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgJyAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiAiX18qX18iIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCAnCisgICAgICAgICAgICAgICAnZG9lcyBub3RcbicKKyAgICAgICAgICAgICAgICcgICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSAnCisgICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAgJyAgIHdhcm5pbmcuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnIl9fKiJcbicKKyAgICAgICAgICAgICAgICcgICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkICcKKyAgICAgICAgICAgICAgICd3aXRoaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhICcKKyAgICAgICAgICAgICAgICdtYW5nbGVkIGZvcm1cbicKKyAgICAgICAgICAgICAgICcgICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mICcKKyAgICAgICAgICAgICAgICdiYXNlIGFuZFxuJworICAgICAgICAgICAgICAgJyAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gSWRlbnRpZmllcnMgKE5hbWVzKS5cbicsCisgJ2lkZW50aWZpZXJzJzogJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGlmaWVycyBhbmQga2V5d29yZHNcbicKKyAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGlmaWVycyAoYWxzbyByZWZlcnJlZCB0byBhcyAqbmFtZXMqKSBhcmUgZGVzY3JpYmVkIGJ5ICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ2ZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIHN5bnRheCBvZiBpZGVudGlmaWVycyBpbiBQeXRob24gaXMgYmFzZWQgb24gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICAgICAgICdhbm5leCBVQVgtMzEsIHdpdGggZWxhYm9yYXRpb24gYW5kIGNoYW5nZXMgYXMgZGVmaW5lZCBiZWxvdzsgJworICAgICAgICAgICAgICAgICdzZWUgYWxzb1xuJworICAgICAgICAgICAgICAgICcqKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1dpdGhpbiB0aGUgQVNDSUkgcmFuZ2UgKFUrMDAwMS4uVSswMDdGKSwgdGhlIHZhbGlkIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAnaWRlbnRpZmllcnMgYXJlIHRoZSBzYW1lIGFzIGluIFB5dGhvbiAyLng6IHRoZSB1cHBlcmNhc2UgYW5kICcKKyAgICAgICAgICAgICAgICAnbG93ZXJjYXNlXG4nCisgICAgICAgICAgICAgICAgJ2xldHRlcnMgIkEiIHRocm91Z2ggIloiLCB0aGUgdW5kZXJzY29yZSAiXyIgYW5kLCBleGNlcHQgZm9yICcKKyAgICAgICAgICAgICAgICAndGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciwgdGhlIGRpZ2l0cyAiMCIgdGhyb3VnaCAiOSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdQeXRob24gMy4wIGludHJvZHVjZXMgYWRkaXRpb25hbCBjaGFyYWN0ZXJzIGZyb20gb3V0c2lkZSB0aGUgJworICAgICAgICAgICAgICAgICdBU0NJSVxuJworICAgICAgICAgICAgICAgICdyYW5nZSAoc2VlICoqUEVQIDMxMzEqKikuICBGb3IgdGhlc2UgY2hhcmFjdGVycywgdGhlICcKKyAgICAgICAgICAgICAgICAnY2xhc3NpZmljYXRpb25cbicKKyAgICAgICAgICAgICAgICAndXNlcyB0aGUgdmVyc2lvbiBvZiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgYXMgJworICAgICAgICAgICAgICAgICdpbmNsdWRlZCBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAnInVuaWNvZGVkYXRhIiBtb2R1bGUuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICBpZGVudGlmaWVyICAgOjo9IHhpZF9zdGFydCB4aWRfY29udGludWUqXG4nCisgICAgICAgICAgICAgICAgJyAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgJworICAgICAgICAgICAgICAgICdMbCwgTHQsIExtLCBMbywgTmwsIHRoZSB1bmRlcnNjb3JlLCBhbmQgY2hhcmFjdGVycyB3aXRoIHRoZSAnCisgICAgICAgICAgICAgICAgJ090aGVyX0lEX1N0YXJ0IHByb3BlcnR5PlxuJworICAgICAgICAgICAgICAgICcgICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyAnCisgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgaW4gdGhlIGNhdGVnb3JpZXMgTW4sIE1jLCBOZCwgUGMgYW5kIG90aGVycyB3aXRoICcKKyAgICAgICAgICAgICAgICAndGhlIE90aGVyX0lEX0NvbnRpbnVlIHByb3BlcnR5PlxuJworICAgICAgICAgICAgICAgICcgICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDICcKKyAgICAgICAgICAgICAgICAnbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfc3RhcnQgeGlkX2NvbnRpbnVlKiI+XG4nCisgICAgICAgICAgICAgICAgJyAgIHhpZF9jb250aW51ZSA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX2NvbnRpbnVlIHdob3NlIE5GS0MgJworICAgICAgICAgICAgICAgICdub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIFVuaWNvZGUgY2F0ZWdvcnkgY29kZXMgbWVudGlvbmVkIGFib3ZlIHN0YW5kIGZvcjpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkx1KiAtIHVwcGVyY2FzZSBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTHQqIC0gdGl0bGVjYXNlIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkxtKiAtIG1vZGlmaWVyIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkxvKiAtIG90aGVyIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk5sKiAtIGxldHRlciBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpNbiogLSBub25zcGFjaW5nIG1hcmtzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTmQqIC0gZGVjaW1hbCBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpQYyogLSBjb25uZWN0b3IgcHVuY3R1YXRpb25zXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gJworICAgICAgICAgICAgICAgICdQcm9wTGlzdC50eHQgdG9cbicKKyAgICAgICAgICAgICAgICAnICBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpPdGhlcl9JRF9Db250aW51ZSogLSBsaWtld2lzZVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSAnCisgICAgICAgICAgICAgICAgJ3BhcnNpbmc7XG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gb2YgaWRlbnRpZmllcnMgaXMgYmFzZWQgb24gTkZLQy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0Egbm9uLW5vcm1hdGl2ZSBIVE1MIGZpbGUgbGlzdGluZyBhbGwgdmFsaWQgaWRlbnRpZmllciAnCisgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgZm9yXG4nCisgICAgICAgICAgICAgICAgJ1VuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL3d3dy5kY2wuaHBpLnVuaS1cbicKKyAgICAgICAgICAgICAgICAncG90c2RhbS5kZS9ob21lL2xvZXdpcy90YWJsZS0zMTMxLmh0bWwuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnS2V5d29yZHNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICcKKyAgICAgICAgICAgICAgICAnKmtleXdvcmRzKiBvZlxuJworICAgICAgICAgICAgICAgICd0aGUgbGFuZ3VhZ2UsIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBvcmRpbmFyeSBpZGVudGlmaWVycy4gICcKKyAgICAgICAgICAgICAgICAnVGhleSBtdXN0XG4nCisgICAgICAgICAgICAgICAgJ2JlIHNwZWxsZWQgZXhhY3RseSBhcyB3cml0dGVuIGhlcmU6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICBGYWxzZSAgICAgIGNsYXNzICAgICAgZmluYWxseSAgICBpcyAgICAgICAgIHJldHVyblxuJworICAgICAgICAgICAgICAgICcgICBOb25lICAgICAgIGNvbnRpbnVlICAgZm9yICAgICAgICBsYW1iZGEgICAgIHRyeVxuJworICAgICAgICAgICAgICAgICcgICBUcnVlICAgICAgIGRlZiAgICAgICAgZnJvbSAgICAgICBub25sb2NhbCAgIHdoaWxlXG4nCisgICAgICAgICAgICAgICAgJyAgIGFuZCAgICAgICAgZGVsICAgICAgICBnbG9iYWwgICAgIG5vdCAgICAgICAgd2l0aFxuJworICAgICAgICAgICAgICAgICcgICBhcyAgICAgICAgIGVsaWYgICAgICAgaWYgICAgICAgICBvciAgICAgICAgIHlpZWxkXG4nCisgICAgICAgICAgICAgICAgJyAgIGFzc2VydCAgICAgZWxzZSAgICAgICBpbXBvcnQgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAnICAgYnJlYWsgICAgICBleGNlcHQgICAgIGluICAgICAgICAgcmFpc2VcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdSZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSAnCisgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAnbWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiAnCisgICAgICAgICAgICAgICAgJ2xlYWRpbmcgYW5kXG4nCisgICAgICAgICAgICAgICAgJ3RyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyJfKiJcbicKKyAgICAgICAgICAgICAgICAnICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIgIl8iXG4nCisgICAgICAgICAgICAgICAgJyAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgJworICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgJworICAgICAgICAgICAgICAgICdXaGVuIG5vdFxuJworICAgICAgICAgICAgICAgICcgICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAnZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAnICAgU2VlIHNlY3Rpb24gVGhlIGltcG9ydCBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGUgbmFtZSAiXyIgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4nCisgICAgICAgICAgICAgICAgJyAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICcgICAgICJnZXR0ZXh0IiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyAnCisgICAgICAgICAgICAgICAgJ2NvbnZlbnRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICciX18qX18iXG4nCisgICAgICAgICAgICAgICAgJyAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICdpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgICcgICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgJworICAgICAgICAgICAgICAgICdDdXJyZW50XG4nCisgICAgICAgICAgICAgICAgJyAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSBTcGVjaWFsIG1ldGhvZCBuYW1lcyAnCisgICAgICAgICAgICAgICAgJ3NlY3Rpb24gYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgJworICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICcgICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgJworICAgICAgICAgICAgICAgICdkb2VzIG5vdFxuJworICAgICAgICAgICAgICAgICcgICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSAnCisgICAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgICAnICAgd2FybmluZy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyJfXyoiXG4nCisgICAgICAgICAgICAgICAgJyAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgJworICAgICAgICAgICAgICAgICd3aXRoaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSAnCisgICAgICAgICAgICAgICAgJ21hbmdsZWQgZm9ybVxuJworICAgICAgICAgICAgICAgICcgICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mICcKKyAgICAgICAgICAgICAgICAnYmFzZSBhbmRcbicKKyAgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiBJZGVudGlmaWVycyAoTmFtZXMpLlxuJywKKyAnaWYnOiAnXG4nCisgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudFxuJworICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG4nCisgICAgICAgJ1xuJworICAgICAgICcgICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgJyAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4nCisgICAgICAgJyAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICdcbicKKyAgICAgICAnSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAnb25lXG4nCisgICAgICAgJ2J5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gQm9vbGVhbiBvcGVyYXRpb25zXG4nCisgICAgICAgJ2ZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuJworICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG4nCisgICAgICAgJ0lmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbicKKyAgICAgICAncHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAorICdpbWFnaW5hcnknOiAnXG4nCisgICAgICAgICAgICAgICdJbWFnaW5hcnkgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgJworICAgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGRpZ2l0cGFydCkgKCJqIiB8ICJKIilcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCAnCisgICAgICAgICAgICAgICdvZiAwLjAuXG4nCisgICAgICAgICAgICAgICdDb21wbGV4IG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGFzIGEgcGFpciBvZiBmbG9hdGluZyBwb2ludCAnCisgICAgICAgICAgICAgICdudW1iZXJzXG4nCisgICAgICAgICAgICAgICdhbmQgaGF2ZSB0aGUgc2FtZSByZXN0cmljdGlvbnMgb24gdGhlaXIgcmFuZ2UuICBUbyBjcmVhdGUgYSAnCisgICAgICAgICAgICAgICdjb21wbGV4XG4nCisgICAgICAgICAgICAgICdudW1iZXIgd2l0aCBhIG5vbnplcm8gcmVhbCBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gJworICAgICAgICAgICAgICAnaXQsXG4nCisgICAgICAgICAgICAgICdlLmcuLCAiKDMrNGopIi4gIFNvbWUgZXhhbXBsZXMgb2YgaW1hZ2luYXJ5IGxpdGVyYWxzOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgIDMuMTRlLTEwaiAgICcKKyAgICAgICAgICAgICAgJzMuMTRfMTVfOTNqXG4nLAorICdpbXBvcnQnOiAnXG4nCisgICAgICAgICAgICdUaGUgImltcG9ydCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSAnCisgICAgICAgICAgICdbImFzIiBuYW1lXSApKlxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgJworICAgICAgICAgICAnaWRlbnRpZmllciBbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuJworICAgICAgICAgICAnICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICcgICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuJworICAgICAgICAgICAnICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBiYXNpYyBpbXBvcnQgc3RhdGVtZW50IChubyAiZnJvbSIgY2xhdXNlKSBpcyBleGVjdXRlZCBpbiB0d29cbicKKyAgICAgICAgICAgJ3N0ZXBzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcxLiBmaW5kIGEgbW9kdWxlLCBsb2FkaW5nIGFuZCBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzIuIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIHNjb3BlXG4nCisgICAgICAgICAgICcgICB3aGVyZSB0aGUgImltcG9ydCIgc3RhdGVtZW50IG9jY3Vycy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiB0aGUgc3RhdGVtZW50IGNvbnRhaW5zIG11bHRpcGxlIGNsYXVzZXMgKHNlcGFyYXRlZCBieSBjb21tYXMpICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAndHdvIHN0ZXBzIGFyZSBjYXJyaWVkIG91dCBzZXBhcmF0ZWx5IGZvciBlYWNoIGNsYXVzZSwganVzdCBhcyAnCisgICAgICAgICAgICd0aG91Z2hcbicKKyAgICAgICAgICAgJ3RoZSBjbGF1c2VzIGhhZCBiZWVuIHNlcGFyYXRlZCBvdXQgaW50byBpbmRpdmlkdWFsIGltcG9ydCAnCisgICAgICAgICAgICdzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZGV0YWlscyBvZiB0aGUgZmlyc3Qgc3RlcCwgZmluZGluZyBhbmQgbG9hZGluZyBtb2R1bGVzIGFyZVxuJworICAgICAgICAgICAnZGVzY3JpYmVkIGluIGdyZWF0ZXIgZGV0YWlsIGluIHRoZSBzZWN0aW9uIG9uIHRoZSBpbXBvcnQgc3lzdGVtLCAnCisgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAnYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdCBjYW4gJworICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgJ2ltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heSBpbmRpY2F0ZSAnCisgICAgICAgICAgICdlaXRoZXJcbicKKyAgICAgICAgICAgJ3RoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuIGVycm9yIG9jY3VycmVkXG4nCisgICAgICAgICAgICd3aGlsZSBpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAibW9kdWxlJ3MgY29kZS5cbiIKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSwgaXQgd2lsbCBiZSAnCisgICAgICAgICAgICdtYWRlXG4nCisgICAgICAgICAgICdhdmFpbGFibGUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBpbiBvbmUgb2YgdGhyZWUgd2F5czpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgImFzIiwgdGhlbiB0aGUgbmFtZSBmb2xsb3dpbmdcbicKKyAgICAgICAgICAgJyAgImFzIiBpcyBib3VuZCBkaXJlY3RseSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIElmIG5vIG90aGVyIG5hbWUgaXMgc3BlY2lmaWVkLCBhbmQgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAnCisgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICIgIHRvcCBsZXZlbCBtb2R1bGUsIHRoZSBtb2R1bGUncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCAiCisgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgJyAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgJworICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgJyAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuICcKKyAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAnICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuJworICAgICAgICAgICAnICByYXRoZXIgdGhhbiBkaXJlY3RseVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImZyb20iIGZvcm0gdXNlcyBhIHNsaWdodGx5IG1vcmUgY29tcGxleCBwcm9jZXNzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcxLiBmaW5kIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIHRoZSAiZnJvbSIgY2xhdXNlLCBsb2FkaW5nIGFuZFxuJworICAgICAgICAgICAnICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgImltcG9ydCIgY2xhdXNlczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgMS4gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBoYXMgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICAyLiBpZiBub3QsIGF0dGVtcHQgdG8gaW1wb3J0IGEgc3VibW9kdWxlIHdpdGggdGhhdCBuYW1lIGFuZCAnCisgICAgICAgICAgICd0aGVuXG4nCisgICAgICAgICAgICcgICAgICBjaGVjayB0aGUgaW1wb3J0ZWQgbW9kdWxlIGFnYWluIGZvciB0aGF0IGF0dHJpYnV0ZVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICAzLiBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCwgIkltcG9ydEVycm9yIiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDQuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlIGxvY2FsXG4nCisgICAgICAgICAgICcgICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSAiYXMiIGNsYXVzZSBpZiBpdCBpcyAnCisgICAgICAgICAgICdwcmVzZW50LFxuJworICAgICAgICAgICAnICAgICAgb3RoZXJ3aXNlIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbmFtZVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdFeGFtcGxlczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaW1wb3J0IGZvbyAgICAgICAgICAgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGJvdW5kIGxvY2FsbHlcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBmb28uYmFyLmJheiAgICAgICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQsIGZvbyBib3VuZCAnCisgICAgICAgICAgICdsb2NhbGx5XG4nCisgICAgICAgICAgICcgICBpbXBvcnQgZm9vLmJhci5iYXogYXMgZmJiICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyAnCisgICAgICAgICAgICdmYmJcbicKKyAgICAgICAgICAgJyAgIGZyb20gZm9vLmJhciBpbXBvcnQgYmF6ICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzICcKKyAgICAgICAgICAgJ2JhelxuJworICAgICAgICAgICAnICAgZnJvbSBmb28gaW1wb3J0IGF0dHIgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGZvby5hdHRyIGJvdW5kIGFzICcKKyAgICAgICAgICAgJ2F0dHJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyICgiXCcqXCciKSwgYWxsICcKKyAgICAgICAgICAgJ3B1YmxpY1xuJworICAgICAgICAgICAnbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3Njb3BlIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ21vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgIl9fYWxsX18iOyBpZiBkZWZpbmVkLCBpdCAnCisgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICdiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAnbW9kdWxlLiAgVGhlIG5hbWVzIGdpdmVuIGluICJfX2FsbF9fIiBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljICcKKyAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAnYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgIl9fYWxsX18iIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgJ3B1YmxpY1xuJworICAgICAgICAgICAibmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGUncyBuYW1lc3BhY2Ugd2hpY2ggZG8gIgorICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICdiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyICgiXCdfXCciKS4gICJfX2FsbF9fIiBzaG91bGQgJworICAgICAgICAgICAnY29udGFpblxuJworICAgICAgICAgICAndGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZCB0byBhdm9pZCBhY2NpZGVudGFsbHkgJworICAgICAgICAgICAnZXhwb3J0aW5nXG4nCisgICAgICAgICAgICdpdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzIGxpYnJhcnkgbW9kdWxlcyB3aGljaCAnCisgICAgICAgICAgICd3ZXJlXG4nCisgICAgICAgICAgICdpbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIgLS0tIGlzICcKKyAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgJ2FsbG93ZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC4gIEF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yXG4nCisgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9ucyB3aWxsIHJhaXNlIGEgIlN5bnRheEVycm9yIi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2Fic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzICcKKyAgICAgICAgICAgJ2NvbnRhaW5lZFxuJworICAgICAgICAgICAnd2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0ICcKKyAgICAgICAgICAgJ3dpdGhpblxuJworICAgICAgICAgICAndGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiAnCisgICAgICAgICAgICdCeVxuJworICAgICAgICAgICAndXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgImZyb20iICcKKyAgICAgICAgICAgJ3lvdVxuJworICAgICAgICAgICAnY2FuIHNwZWNpZnkgaG93IGhpZ2ggdG8gdHJhdmVyc2UgdXAgdGhlIGN1cnJlbnQgcGFja2FnZSBoaWVyYXJjaHlcbicKKyAgICAgICAgICAgJ3dpdGhvdXQgc3BlY2lmeWluZyBleGFjdCBuYW1lcy4gT25lIGxlYWRpbmcgZG90IG1lYW5zIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICdwYWNrYWdlIHdoZXJlIHRoZSBtb2R1bGUgbWFraW5nIHRoZSBpbXBvcnQgZXhpc3RzLiBUd28gZG90cyBtZWFucyAnCisgICAgICAgICAgICd1cFxuJworICAgICAgICAgICAnb25lIHBhY2thZ2UgbGV2ZWwuIFRocmVlIGRvdHMgaXMgdXAgdHdvIGxldmVscywgZXRjLiBTbyBpZiB5b3UgJworICAgICAgICAgICAnZXhlY3V0ZVxuJworICAgICAgICAgICAnImZyb20gLiBpbXBvcnQgbW9kIiBmcm9tIGEgbW9kdWxlIGluIHRoZSAicGtnIiBwYWNrYWdlIHRoZW4geW91ICcKKyAgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAgJ2VuZCB1cCBpbXBvcnRpbmcgInBrZy5tb2QiLiBJZiB5b3UgZXhlY3V0ZSAiZnJvbSAuLnN1YnBrZzIgaW1wb3J0ICcKKyAgICAgICAgICAgJ21vZCJcbicKKyAgICAgICAgICAgJ2Zyb20gd2l0aGluICJwa2cuc3VicGtnMSIgeW91IHdpbGwgaW1wb3J0ICJwa2cuc3VicGtnMi5tb2QiLiBUaGVcbicKKyAgICAgICAgICAgJ3NwZWNpZmljYXRpb24gZm9yIHJlbGF0aXZlIGltcG9ydHMgaXMgY29udGFpbmVkIHdpdGhpbiAqKlBFUCAnCisgICAgICAgICAgICczMjgqKi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnImltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkiIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zICcKKyAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgJ2RldGVybWluZSBkeW5hbWljYWxseSB0aGUgbW9kdWxlcyB0byBiZSBsb2FkZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRnV0dXJlIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgJworICAgICAgICAgICAncGFydGljdWxhclxuJworICAgICAgICAgICAnbW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuJworICAgICAgICAgICAnYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbiB3aGVyZSB0aGUgJworICAgICAgICAgICAnZmVhdHVyZVxuJworICAgICAgICAgICAnYmVjb21lcyBzdGFuZGFyZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgaW50ZW5kZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8gZnV0dXJlICcKKyAgICAgICAgICAgJ3ZlcnNpb25zXG4nCisgICAgICAgICAgICdvZiBQeXRob24gdGhhdCBpbnRyb2R1Y2UgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGxhbmd1YWdlLiAgJworICAgICAgICAgICAnSXRcbicKKyAgICAgICAgICAgJ2FsbG93cyB1c2Ugb2YgdGhlIG5ldyBmZWF0dXJlcyBvbiBhIHBlci1tb2R1bGUgYmFzaXMgYmVmb3JlIHRoZVxuJworICAgICAgICAgICAncmVsZWFzZSBpbiB3aGljaCB0aGUgZmVhdHVyZSBiZWNvbWVzIHN0YW5kYXJkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBmdXR1cmVfc3RhdGVtZW50IDo6PSAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiIGZlYXR1cmUgWyJhcyIgJworICAgICAgICAgICAnbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgIigiIGZlYXR1cmUgJworICAgICAgICAgICAnWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqIFsiLCJdICIpIlxuJworICAgICAgICAgICAnICAgZmVhdHVyZSAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAnICAgbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIGZ1dHVyZSBzdGF0ZW1lbnQgbXVzdCBhcHBlYXIgbmVhciB0aGUgdG9wIG9mIHRoZSBtb2R1bGUuICBUaGUgJworICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAnbGluZXMgdGhhdCBjYW4gYXBwZWFyIGJlZm9yZSBhIGZ1dHVyZSBzdGF0ZW1lbnQgYXJlOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIHRoZSBtb2R1bGUgZG9jc3RyaW5nIChpZiBhbnkpLFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIGNvbW1lbnRzLFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIGJsYW5rIGxpbmVzLCBhbmRcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBvdGhlciBmdXR1cmUgc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZlYXR1cmVzIHJlY29nbml6ZWQgYnkgUHl0aG9uIDMuMCBhcmUgImFic29sdXRlX2ltcG9ydCIsXG4nCisgICAgICAgICAgICciZGl2aXNpb24iLCAiZ2VuZXJhdG9ycyIsICJ1bmljb2RlX2xpdGVyYWxzIiwgInByaW50X2Z1bmN0aW9uIixcbicKKyAgICAgICAgICAgJyJuZXN0ZWRfc2NvcGVzIiBhbmQgIndpdGhfc3RhdGVtZW50Ii4gIFRoZXkgYXJlIGFsbCByZWR1bmRhbnQgJworICAgICAgICAgICAnYmVjYXVzZVxuJworICAgICAgICAgICAndGhleSBhcmUgYWx3YXlzIGVuYWJsZWQsIGFuZCBvbmx5IGtlcHQgZm9yIGJhY2t3YXJkcyAnCisgICAgICAgICAgICdjb21wYXRpYmlsaXR5LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxuJworICAgICAgICAgICAndGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbicKKyAgICAgICAgICAgJ2ltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgJworICAgICAgICAgICAnY2FzZVxuJworICAgICAgICAgICAndGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgJ3Jlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbicKKyAgICAgICAgICAgJ21vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG4nCisgICAgICAgICAgICdydW50aW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdGb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzICcKKyAgICAgICAgICAgJ2hhdmVcbicKKyAgICAgICAgICAgJ2JlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ2NvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0ICcKKyAgICAgICAgICAgJ3N0YXRlbWVudDpcbicKKyAgICAgICAgICAgJ3RoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlICJfX2Z1dHVyZV9fIiwgZGVzY3JpYmVkIGxhdGVyLCBhbmQgaXQgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAnYmUgaW1wb3J0ZWQgaW4gdGhlIHVzdWFsIHdheSBhdCB0aGUgdGltZSB0aGUgZnV0dXJlIHN0YXRlbWVudCBpc1xuJworICAgICAgICAgICAnZXhlY3V0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBpbnRlcmVzdGluZyBydW50aW1lIHNlbWFudGljcyBkZXBlbmQgb24gdGhlIHNwZWNpZmljIGZlYXR1cmVcbicKKyAgICAgICAgICAgJ2VuYWJsZWQgYnkgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05vdGUgdGhhdCB0aGVyZSBpcyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgdGhlIHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaW1wb3J0IF9fZnV0dXJlX18gW2FzIG5hbWVdXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgIlRoYXQgaXMgbm90IGEgZnV0dXJlIHN0YXRlbWVudDsgaXQncyBhbiBvcmRpbmFyeSBpbXBvcnQgc3RhdGVtZW50ICIKKyAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgJ25vIHNwZWNpYWwgc2VtYW50aWNzIG9yIHN5bnRheCByZXN0cmljdGlvbnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0NvZGUgY29tcGlsZWQgYnkgY2FsbHMgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZXhlYygpIiBhbmRcbicKKyAgICAgICAgICAgJyJjb21waWxlKCkiIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgIk0iIGNvbnRhaW5pbmcgYSBmdXR1cmUgJworICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICd3aWxsLCBieSBkZWZhdWx0LCB1c2UgdGhlIG5ldyBzeW50YXggb3Igc2VtYW50aWNzIGFzc29jaWF0ZWQgd2l0aCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2Z1dHVyZSBzdGF0ZW1lbnQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIGJ5IG9wdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAnImNvbXBpbGUoKSIgLS0tIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIGZvciAnCisgICAgICAgICAgICdkZXRhaWxzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIGZ1dHVyZSBzdGF0ZW1lbnQgdHlwZWQgYXQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgcHJvbXB0ICcKKyAgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAgJ3Rha2UgZWZmZWN0IGZvciB0aGUgcmVzdCBvZiB0aGUgaW50ZXJwcmV0ZXIgc2Vzc2lvbi4gIElmIGFuXG4nCisgICAgICAgICAgICdpbnRlcnByZXRlciBpcyBzdGFydGVkIHdpdGggdGhlICItaSIgb3B0aW9uLCBpcyBwYXNzZWQgYSBzY3JpcHQgJworICAgICAgICAgICAnbmFtZVxuJworICAgICAgICAgICAndG8gZXhlY3V0ZSwgYW5kIHRoZSBzY3JpcHQgaW5jbHVkZXMgYSBmdXR1cmUgc3RhdGVtZW50LCBpdCB3aWxsIGJlICcKKyAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICdlZmZlY3QgaW4gdGhlIGludGVyYWN0aXZlIHNlc3Npb24gc3RhcnRlZCBhZnRlciB0aGUgc2NyaXB0IGlzXG4nCisgICAgICAgICAgICdleGVjdXRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG4nCisgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBwcm9wb3NhbCBmb3IgdGhlIF9fZnV0dXJlX18gbWVjaGFuaXNtLlxuJywKKyAnaW4nOiAnXG4nCisgICAgICAgJ01lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG4nCisgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgJ1xuJworICAgICAgICdUaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuJworICAgICAgICdldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgInhcbicKKyAgICAgICAnbm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuJworICAgICAgICdhbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iICcKKyAgICAgICAndGVzdHNcbicKKyAgICAgICAnd2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xuJworICAgICAgICdsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbicKKyAgICAgICAnZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxuJworICAgICAgICd5KSIuXG4nCisgICAgICAgJ1xuJworICAgICAgICdGb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqICcKKyAgICAgICAnaXNcbicKKyAgICAgICAnYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbicKKyAgICAgICAnc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyIHN0cmluZyxcbicKKyAgICAgICAnc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG4nCisgICAgICAgJ1xuJworICAgICAgICdGb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSAiX19jb250YWluc19fKCkiIG1ldGhvZCwgInhcbicKKyAgICAgICAnaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG4nCisgICAgICAgJ1xuJworICAgICAgICdGb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiIGJ1dCBkb1xuJworICAgICAgICdkZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbicKKyAgICAgICAnaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuJworICAgICAgICdkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24uXG4nCisgICAgICAgJ1xuJworICAgICAgICdMYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbicKKyAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxuJworICAgICAgICduZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbicKKyAgICAgICAnaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuJworICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG4nCisgICAgICAgJ1xuJworICAgICAgICdUaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbicKKyAgICAgICAnImluIi5cbicsCisgJ2ludGVnZXJzJzogJ1xuJworICAgICAgICAgICAgICdJbnRlZ2VyIGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0ludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgJworICAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGludGVnZXIgICAgICA6Oj0gZGVjaW50ZWdlciB8IGJpbmludGVnZXIgfCBvY3RpbnRlZ2VyIHwgJworICAgICAgICAgICAgICdoZXhpbnRlZ2VyXG4nCisgICAgICAgICAgICAgJyAgIGRlY2ludGVnZXIgICA6Oj0gbm9uemVyb2RpZ2l0IChbIl8iXSBkaWdpdCkqIHwgIjAiKyAoWyJfIl0gJworICAgICAgICAgICAgICciMCIpKlxuJworICAgICAgICAgICAgICcgICBiaW5pbnRlZ2VyICAgOjo9ICIwIiAoImIiIHwgIkIiKSAoWyJfIl0gYmluZGlnaXQpK1xuJworICAgICAgICAgICAgICcgICBvY3RpbnRlZ2VyICAgOjo9ICIwIiAoIm8iIHwgIk8iKSAoWyJfIl0gb2N0ZGlnaXQpK1xuJworICAgICAgICAgICAgICcgICBoZXhpbnRlZ2VyICAgOjo9ICIwIiAoIngiIHwgIlgiKSAoWyJfIl0gaGV4ZGlnaXQpK1xuJworICAgICAgICAgICAgICcgICBub256ZXJvZGlnaXQgOjo9ICIxIi4uLiI5IlxuJworICAgICAgICAgICAgICcgICBkaWdpdCAgICAgICAgOjo9ICIwIi4uLiI5IlxuJworICAgICAgICAgICAgICcgICBiaW5kaWdpdCAgICAgOjo9ICIwIiB8ICIxIlxuJworICAgICAgICAgICAgICcgICBvY3RkaWdpdCAgICAgOjo9ICIwIi4uLiI3IlxuJworICAgICAgICAgICAgICcgICBoZXhkaWdpdCAgICAgOjo9IGRpZ2l0IHwgImEiLi4uImYiIHwgIkEiLi4uIkYiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBpcyBubyBsaW1pdCBmb3IgdGhlIGxlbmd0aCBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0IGZyb20gJworICAgICAgICAgICAgICd3aGF0XG4nCisgICAgICAgICAgICAgJ2NhbiBiZSBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1VuZGVyc2NvcmVzIGFyZSBpZ25vcmVkIGZvciBkZXRlcm1pbmluZyB0aGUgbnVtZXJpYyB2YWx1ZSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdsaXRlcmFsLiAgVGhleSBjYW4gYmUgdXNlZCB0byBncm91cCBkaWdpdHMgZm9yIGVuaGFuY2VkICcKKyAgICAgICAgICAgICAncmVhZGFiaWxpdHkuXG4nCisgICAgICAgICAgICAgJ09uZSB1bmRlcnNjb3JlIGNhbiBvY2N1ciBiZXR3ZWVuIGRpZ2l0cywgYW5kIGFmdGVyIGJhc2UgJworICAgICAgICAgICAgICdzcGVjaWZpZXJzXG4nCisgICAgICAgICAgICAgJ2xpa2UgIjB4Ii5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCAnCisgICAgICAgICAgICAgJ2FsbG93ZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggJworICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAndXNlZCBiZWZvcmUgdmVyc2lvbiAzLjAuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTb21lIGV4YW1wbGVzIG9mIGludGVnZXIgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTFcbicKKyAgICAgICAgICAgICAnICAgMyAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgIDBvMzc3ICAgIDB4ZGVhZGJlZWZcbicKKyAgICAgICAgICAgICAnICAgICAgICAgMTAwXzAwMF8wMDBfMDAwICAgICAgICAgICAgICAgICAgIDBiXzExMTBfMDEwMVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNjogVW5kZXJzY29yZXMgYXJlIG5vdyBhbGxvd2VkIGZvciAnCisgICAgICAgICAgICAgJ2dyb3VwaW5nXG4nCisgICAgICAgICAgICAgJ3B1cnBvc2VzIGluIGxpdGVyYWxzLlxuJywKKyAnbGFtYmRhJzogJ1xuJworICAgICAgICAgICAnTGFtYmRhc1xuJworICAgICAgICAgICAnKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBsYW1iZGFfZXhwciAgICAgICAgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgJyAgIGxhbWJkYV9leHByX25vY29uZCA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogJworICAgICAgICAgICAnZXhwcmVzc2lvbl9ub2NvbmRcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTGFtYmRhIGV4cHJlc3Npb25zIChzb21ldGltZXMgY2FsbGVkIGxhbWJkYSBmb3JtcykgYXJlIHVzZWQgdG8gJworICAgICAgICAgICAnY3JlYXRlXG4nCisgICAgICAgICAgICdhbm9ueW1vdXMgZnVuY3Rpb25zLiBUaGUgZXhwcmVzc2lvbiAibGFtYmRhIGFyZ3VtZW50czogJworICAgICAgICAgICAnZXhwcmVzc2lvbiJcbicKKyAgICAgICAgICAgJ3lpZWxkcyBhIGZ1bmN0aW9uIG9iamVjdC4gIFRoZSB1bm5hbWVkIG9iamVjdCBiZWhhdmVzIGxpa2UgYSAnCisgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAnb2JqZWN0IGRlZmluZWQgd2l0aDpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZGVmIDxsYW1iZGE+KGFyZ3VtZW50cyk6XG4nCisgICAgICAgICAgICcgICAgICAgcmV0dXJuIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnU2VlIHNlY3Rpb24gRnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyICcKKyAgICAgICAgICAgJ2xpc3RzLlxuJworICAgICAgICAgICAnTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGV4cHJlc3Npb25zIGNhbm5vdCAnCisgICAgICAgICAgICdjb250YWluXG4nCisgICAgICAgICAgICdzdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKKyAnbGlzdHMnOiAnXG4nCisgICAgICAgICAgJ0xpc3QgZGlzcGxheXNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBsaXN0IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2YgZXhwcmVzc2lvbnMgZW5jbG9zZWQgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICdzcXVhcmUgYnJhY2tldHM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBsaXN0X2Rpc3BsYXkgOjo9ICJbIiBbc3RhcnJlZF9saXN0IHwgY29tcHJlaGVuc2lvbl0gIl0iXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGxpc3QgZGlzcGxheSB5aWVsZHMgYSBuZXcgbGlzdCBvYmplY3QsIHRoZSBjb250ZW50cyBiZWluZyAnCisgICAgICAgICAgJ3NwZWNpZmllZFxuJworICAgICAgICAgICdieSBlaXRoZXIgYSBsaXN0IG9mIGV4cHJlc3Npb25zIG9yIGEgY29tcHJlaGVuc2lvbi4gIFdoZW4gYSBjb21tYS1cbicKKyAgICAgICAgICAnc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaXMgc3VwcGxpZWQsIGl0cyBlbGVtZW50cyBhcmUgJworICAgICAgICAgICdldmFsdWF0ZWRcbicKKyAgICAgICAgICAnZnJvbSBsZWZ0IHRvIHJpZ2h0IGFuZCBwbGFjZWQgaW50byB0aGUgbGlzdCBvYmplY3QgaW4gdGhhdCBvcmRlci5cbicKKyAgICAgICAgICAnV2hlbiBhIGNvbXByZWhlbnNpb24gaXMgc3VwcGxpZWQsIHRoZSBsaXN0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlXG4nCisgICAgICAgICAgJ2VsZW1lbnRzIHJlc3VsdGluZyBmcm9tIHRoZSBjb21wcmVoZW5zaW9uLlxuJywKKyAnbmFtaW5nJzogJ1xuJworICAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nXG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdCaW5kaW5nIG9mIG5hbWVzXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJypOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgYmluZGluZ1xuJworICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvICcKKyAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgJyJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCAnCisgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgJ2lkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgb3IgJworICAgICAgICAgICAnYWZ0ZXJcbicKKyAgICAgICAgICAgJyJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnb2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbicKKyAgICAgICAgICAgJ2ltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBUaGlzICcKKyAgICAgICAgICAgJ2Zvcm1cbicKKyAgICAgICAgICAgJ21heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCAnCisgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgJ3RoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlICcKKyAgICAgICAgICAgJ25hbWUpLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdFYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgZGVmaW5lZCAnCisgICAgICAgICAgICdieSBhXG4nCisgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSAnCisgICAgICAgICAgICd0b3AtbGV2ZWxcbicKKyAgICAgICAgICAgJ2NvZGUgYmxvY2spLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0ICcKKyAgICAgICAgICAgJ2Jsb2NrLFxuJworICAgICAgICAgICAndW5sZXNzIGRlY2xhcmVkIGFzICJub25sb2NhbCIgb3IgImdsb2JhbCIuICBJZiBhIG5hbWUgaXMgYm91bmQgYXQgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdtb2R1bGUgbGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgKFRoZSB2YXJpYWJsZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAnY29kZSBibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSAnCisgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICdibG9jayBidXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgKmZyZWUgdmFyaWFibGUqLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvIHRoZSAnCisgICAgICAgICAgICcqYmluZGluZypcbicKKyAgICAgICAgICAgJ29mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBieSB0aGUgZm9sbG93aW5nIG5hbWUgcmVzb2x1dGlvbiBydWxlcy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdSZXNvbHV0aW9uIG9mIG5hbWVzXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gIElmIGEgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgYmxvY2suICBJZiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvIGFueSAnCisgICAgICAgICAgICdibG9ja3NcbicKKyAgICAgICAgICAgJ2NvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrICcKKyAgICAgICAgICAgJ2ludHJvZHVjZXNcbicKKyAgICAgICAgICAgJ2EgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlICcKKyAgICAgICAgICAgJ25lYXJlc3RcbicKKyAgICAgICAgICAgJ2VuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlICcKKyAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICJpcyBjYWxsZWQgdGhlIGJsb2NrJ3MgKmVudmlyb25tZW50Ki5cbiIKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAncmFpc2VkLiBJZlxuJworICAgICAgICAgICAndGhlIGN1cnJlbnQgc2NvcGUgaXMgYSBmdW5jdGlvbiBzY29wZSwgYW5kIHRoZSBuYW1lIHJlZmVycyB0byBhICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICd2YXJpYWJsZSB0aGF0IGhhcyBub3QgeWV0IGJlZW4gYm91bmQgdG8gYSB2YWx1ZSBhdCB0aGUgcG9pbnQgd2hlcmUgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICduYW1lIGlzIHVzZWQsIGFuICJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgJyJVbmJvdW5kTG9jYWxFcnJvciIgaXMgYSBzdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlIGJsb2NrLCAnCisgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgJ3VzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgd2l0aGluICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgJ2Jsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbicKKyAgICAgICAgICAgJ2RlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyIGFueXdoZXJlXG4nCisgICAgICAgICAgICd3aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuIGJlXG4nCisgICAgICAgICAgICdkZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgJworICAgICAgICAgICAnYmluZGluZ1xuJworICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgdGhlICJnbG9iYWwiIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mIHRoZSAnCisgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICdzcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgaW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICd0b3AtbGV2ZWwgbmFtZXNwYWNlLiAgTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgJworICAgICAgICAgICAnbmFtZXNwYWNlIGJ5XG4nCisgICAgICAgICAgICdzZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlXG4nCisgICAgICAgICAgICdjb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlICcKKyAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAnb2YgdGhlIG1vZHVsZSAiYnVpbHRpbnMiLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgJworICAgICAgICAgICAnZmlyc3QuICBJZlxuJworICAgICAgICAgICAndGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzIHNlYXJjaGVkLiAgJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICciZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyAnCisgICAgICAgICAgICdvcGVyYXRpb25cbicKKyAgICAgICAgICAgJ2luIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgJworICAgICAgICAgICAndmFyaWFibGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhICcKKyAgICAgICAgICAgJ2dsb2JhbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyBjb3JyZXNwb25kaW5nIG5hbWVzIHRvIHJlZmVyIHRvXG4nCisgICAgICAgICAgICdwcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgZnVuY3Rpb24gJworICAgICAgICAgICAnc2NvcGUuXG4nCisgICAgICAgICAgICciU3ludGF4RXJyb3IiIGlzIHJhaXNlZCBhdCBjb21waWxlIHRpbWUgaWYgdGhlIGdpdmVuIG5hbWUgZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2V4aXN0IGluIGFueSBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSAnCisgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICdtb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyAnCisgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgJyJfX21haW5fXyIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0NsYXNzIGRlZmluaXRpb24gYmxvY2tzIGFuZCBhcmd1bWVudHMgdG8gImV4ZWMoKSIgYW5kICJldmFsKCkiICcKKyAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAnc3BlY2lhbCBpbiB0aGUgY29udGV4dCBvZiBuYW1lIHJlc29sdXRpb24uIEEgY2xhc3MgZGVmaW5pdGlvbiBpcyAnCisgICAgICAgICAgICdhblxuJworICAgICAgICAgICAnZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmUgbmFtZXMuIFRoZXNlICcKKyAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgJ2ZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24gd2l0aCBhbiBleGNlcHRpb24gJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAndW5ib3VuZCBsb2NhbCB2YXJpYWJsZXMgYXJlIGxvb2tlZCB1cCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICduYW1lc3BhY2Ugb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gYmVjb21lcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkgJworICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgJ3RoZSBjbGFzcy4gVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgaW4gYSBjbGFzcyBibG9jayBpcyBsaW1pdGVkICcKKyAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICd0aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCB0byB0aGUgY29kZSBibG9ja3Mgb2YgbWV0aG9kcyAnCisgICAgICAgICAgICctLVxuJworICAgICAgICAgICAndGhpcyBpbmNsdWRlcyBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIHNpbmNlIHRoZXkgJworICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICdpbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpcyBtZWFucyB0aGF0IHRoZSAnCisgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgJ3dpbGwgZmFpbDpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgY2xhc3MgQTpcbicKKyAgICAgICAgICAgJyAgICAgICBhID0gNDJcbicKKyAgICAgICAgICAgJyAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQnVpbHRpbnMgYW5kIHJlc3RyaWN0ZWQgZXhlY3V0aW9uXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhIGNvZGUgJworICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gaXRzICcKKyAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAnbmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSBsYXR0ZXIgJworICAgICAgICAgICAnY2FzZVxuJworICAgICAgICAgICAidGhlIG1vZHVsZSdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiCisgICAgICAgICAgICciX19tYWluX18iXG4nCisgICAgICAgICAgICdtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiAnCisgICAgICAgICAgICdhbnlcbicKKyAgICAgICAgICAgJ290aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhICcKKyAgICAgICAgICAgJ3VzZXItY3JlYXRlZFxuJworICAgICAgICAgICAnZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuJworICAgICAgICAgICAnIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG4nCisgICAgICAgICAgICd3YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAnCisgICAgICAgICAgICciaW1wb3J0IlxuJworICAgICAgICAgICAndGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCAnCisgICAgICAgICAgICdjb21waWxlXG4nCisgICAgICAgICAgICd0aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGkgPSAxMFxuJworICAgICAgICAgICAnICAgZGVmIGYoKTpcbicKKyAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAnICAgaSA9IDQyXG4nCisgICAgICAgICAgICcgICBmKClcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiAnCisgICAgICAgICAgICd1c2VkXG4nCisgICAgICAgICAgICdpbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsICcKKyAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICdkZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSAnCisgICAgICAgICAgICdmdWxsXG4nCisgICAgICAgICAgICdlbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAnYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90ICcKKyAgICAgICAgICAgJ3Jlc29sdmVkXG4nCisgICAgICAgICAgICdpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICAnCisgICAgICAgICAgICdbMV1cbicKKyAgICAgICAgICAgJ1RoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG4nCisgICAgICAgICAgICdvdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgJworICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgJ3NwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCisgJ25vbmxvY2FsJzogJ1xuJworICAgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBub25sb2NhbF9zdG10IDo6PSAibm9ubG9jYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgdGhlIGxpc3RlZCBpZGVudGlmaWVycyB0byByZWZlciAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSAnCisgICAgICAgICAgICAgJ2V4Y2x1ZGluZ1xuJworICAgICAgICAgICAgICdnbG9iYWxzLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciAnCisgICAgICAgICAgICAgJ2JpbmRpbmcgaXNcbicKKyAgICAgICAgICAgICAndG8gc2VhcmNoIHRoZSBsb2NhbCBuYW1lc3BhY2UgZmlyc3QuICBUaGUgc3RhdGVtZW50IGFsbG93c1xuJworICAgICAgICAgICAgICdlbmNhcHN1bGF0ZWQgY29kZSB0byByZWJpbmQgdmFyaWFibGVzIG91dHNpZGUgb2YgdGhlIGxvY2FsICcKKyAgICAgICAgICAgICAnc2NvcGVcbicKKyAgICAgICAgICAgICAnYmVzaWRlcyB0aGUgZ2xvYmFsIChtb2R1bGUpIHNjb3BlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQsIHVubGlrZSB0aG9zZSBsaXN0ZWQgaW4gJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCwgbXVzdCByZWZlciB0byBwcmUtZXhpc3RpbmcgYmluZGluZ3MgaW4gYW5cbicKKyAgICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlICh0aGUgc2NvcGUgaW4gd2hpY2ggYSBuZXcgYmluZGluZyBzaG91bGQgYmUgJworICAgICAgICAgICAgICdjcmVhdGVkXG4nCisgICAgICAgICAgICAgJ2Nhbm5vdCBiZSBkZXRlcm1pbmVkIHVuYW1iaWd1b3VzbHkpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgbXVzdCBub3QgY29sbGlkZSB3aXRoICcKKyAgICAgICAgICAgICAncHJlLVxuJworICAgICAgICAgICAgICdleGlzdGluZyBiaW5kaW5ncyBpbiB0aGUgbG9jYWwgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgKipQRVAgMzEwNCoqIC0gQWNjZXNzIHRvIE5hbWVzIGluIE91dGVyIFNjb3Blc1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQuXG4nLAorICdudW1iZXJzJzogJ1xuJworICAgICAgICAgICAgJ051bWVyaWMgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyAnCisgICAgICAgICAgICAncG9pbnRcbicKKyAgICAgICAgICAgICdudW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm8gY29tcGxleCBsaXRlcmFsc1xuJworICAgICAgICAgICAgJyhjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbicKKyAgICAgICAgICAgICdpbWFnaW5hcnkgbnVtYmVyKS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdOb3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgJworICAgICAgICAgICAgJyItMSJcbicKKyAgICAgICAgICAgICdpcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciBcJyItIlwnICcKKyAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAnbGl0ZXJhbCAiMSIuXG4nLAorICdudW1lcmljLXR5cGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBudW1lcmljIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgJ01ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgJworICAgICAgICAgICAgICAgICAgJ2J5IHRoZVxuJworICAgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2UgJworICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAnbm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAnCisgICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UsIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyAnCisgICAgICAgICAgICAgICAgICAnY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lZCB0byBhY2NlcHRcbicKKyAgICAgICAgICAgICAgICAgICcgICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgICciZGl2bW9kKCkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkICcKKyAgICAgICAgICAgICAgICAgICcoc3dhcHBlZClcbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgJworICAgICAgICAgICAgICAgICAgJ29wZXJhbmQgZG9lc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBbM10gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAnb3BlcmFuZHMgYXJlIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGlmZmVyZW50IHR5cGVzLiBbNF0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gInggLVxuJworICAgICAgICAgICAgICAgICAgJyAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAnCisgICAgICAgICAgICAgICAgICAnIl9fcnN1Yl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiICcKKyAgICAgICAgICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICAnICAgKk5vdEltcGxlbWVudGVkKi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgICciX19ycG93X18oKSIgKHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSAiCisgICAgICAgICAgICAgICAgICAnbGVmdFxuJworICAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlICIKKyAgICAgICAgICAgICAgICAgICdyZWZsZWN0ZWQgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICd0aGUgbGVmdFxuJworICAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3MgIgorICAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAiJT0iLCAnCisgICAgICAgICAgICAgICAgICAnIioqPSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICdhdHRlbXB0IHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAndGhlIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAgJyAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhICcKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzICcKKyAgICAgICAgICAgICAgICAgICdiYWNrIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgJworICAgICAgICAgICAgICAgICAgJ2EgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAgJyJ4ID1cbicKKyAgICAgICAgICAgICAgICAgICcgICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICcieS5fX3JhZGRfXyh4KSIgYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiAnCisgICAgICAgICAgICAgICAgICAnY2VydGFpblxuJworICAgICAgICAgICAgICAgICAgJyAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gJworICAgICAgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgZXJyb3JzXG4nCisgICAgICAgICAgICAgICAgICAiICAgKHNlZSBXaHkgZG9lcyBhX3R1cGxlW2ldICs9IFsnaXRlbSddIHJhaXNlIGFuIGV4Y2VwdGlvbiAiCisgICAgICAgICAgICAgICAgICAnd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBhZGRpdGlvbiB3b3Jrcz8pLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgJworICAgICAgICAgICAgICAgICAgJ3RoZSBkYXRhXG4nCisgICAgICAgICAgICAgICAgICAnICAgbW9kZWwuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVnX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19wb3NfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Fic19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAgJygiLSIsICIrIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiYWJzKCkiIGFuZCAifiIpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgJworICAgICAgICAgICAgICAgICAgJyJpbnQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHR5cGUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgJworICAgICAgICAgICAgICAgICAgJ1B5dGhvbiBuZWVkc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHRvIGxvc3NsZXNzbHkgY29udmVydCB0aGUgbnVtZXJpYyBvYmplY3QgdG8gYW4gaW50ZWdlciAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0IChzdWNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICcib2N0KCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGlzIGFuIGludGVnZXIgdHlwZS4gIE11c3QgcmV0dXJuIGFuIGludGVnZXIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgJworICAgICAgICAgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lZCwgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBib3RoIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4nLAorICdvYmplY3RzJzogJ1xuJworICAgICAgICAgICAgJ09iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiKk9iamVjdHMqIGFyZSBQeXRob24ncyBhYnN0cmFjdGlvbiBmb3IgZGF0YS4gIEFsbCBkYXRhIGluIGEgIgorICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgJ3Byb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiAnCisgICAgICAgICAgICAnb2JqZWN0cy4gKEluXG4nCisgICAgICAgICAgICAnYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxuJworICAgICAgICAgICAgJ3Byb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0J3NcbiIKKyAgICAgICAgICAgICcqaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rICcKKyAgICAgICAgICAgICdvZiBpdFxuJworICAgICAgICAgICAgJ2FzIHRoZSBvYmplY3RcJ3MgYWRkcmVzcyBpbiBtZW1vcnkuICBUaGUgXCciaXMiXCcgb3BlcmF0b3IgJworICAgICAgICAgICAgJ2NvbXBhcmVzIHRoZVxuJworICAgICAgICAgICAgJ2lkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgImlkKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxuJworICAgICAgICAgICAgJ3JlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgImlkKHgpIiBpcyB0aGUgJworICAgICAgICAgICAgJ21lbW9yeVxuJworICAgICAgICAgICAgJ2FkZHJlc3Mgd2hlcmUgIngiIGlzIHN0b3JlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJBbiBvYmplY3QncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0ICIKKyAgICAgICAgICAgICdzdXBwb3J0c1xuJworICAgICAgICAgICAgJyhlLmcuLCAiZG9lcyBpdCBoYXZlIGEgbGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlICcKKyAgICAgICAgICAgICd2YWx1ZXNcbicKKyAgICAgICAgICAgICdmb3Igb2JqZWN0cyBvZiB0aGF0IHR5cGUuICBUaGUgInR5cGUoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiAnCisgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICd0eXBlICh3aGljaCBpcyBhbiBvYmplY3QgaXRzZWxmKS4gIExpa2UgaXRzIGlkZW50aXR5LCBhbiAnCisgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICcqdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW5cbicKKyAgICAgICAgICAgICdjaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzICcKKyAgICAgICAgICAgICd1bmNoYW5nZWFibGVcbicKKyAgICAgICAgICAgICdvbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZSB2YWx1ZSBvZiBhblxuJworICAgICAgICAgICAgJ2ltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSAnCisgICAgICAgICAgICAnbXV0YWJsZVxuJworICAgICAgICAgICAgIm9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlcidzIHZhbHVlIGlzIGNoYW5nZWQ7IGhvd2V2ZXIgIgorICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJ2NvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiAnCisgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICdvYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbicKKyAgICAgICAgICAgICdzdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlICcKKyAgICAgICAgICAgICdzdWJ0bGUuKVxuJworICAgICAgICAgICAgIkFuIG9iamVjdCdzIG11dGFiaWxpdHkgaXMgZGV0ZXJtaW5lZCBieSBpdHMgdHlwZTsgZm9yIGluc3RhbmNlLFxuIgorICAgICAgICAgICAgJ251bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgJworICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgJ2xpc3RzIGFyZSBtdXRhYmxlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ09iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgJworICAgICAgICAgICAgJ2JlY29tZVxuJworICAgICAgICAgICAgJ3VucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbicKKyAgICAgICAgICAgICdhbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tICcKKyAgICAgICAgICAgICdpdCBpc1xuJworICAgICAgICAgICAgJ2EgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuJworICAgICAgICAgICAgJ2ltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxuJworICAgICAgICAgICAgJ3JlYWNoYWJsZS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSAnCisgICAgICAgICAgICAncmVmZXJlbmNlLVxuJworICAgICAgICAgICAgJ2NvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSAnCisgICAgICAgICAgICAnbGlua2VkXG4nCisgICAgICAgICAgICAnZ2FyYmFnZSwgd2hpY2ggY29sbGVjdHMgbW9zdCBvYmplY3RzIGFzIHNvb24gYXMgdGhleSBiZWNvbWVcbicKKyAgICAgICAgICAgICd1bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG4nCisgICAgICAgICAgICAnY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgImdjIiBtb2R1bGUgJworICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgJ2luZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiAnCisgICAgICAgICAgICAnT3RoZXJcbicKKyAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCAnCisgICAgICAgICAgICAnZGVwZW5kXG4nCisgICAgICAgICAgICAnb24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgdW5yZWFjaGFibGUgJworICAgICAgICAgICAgJyhzb1xuJworICAgICAgICAgICAgJ3lvdSBzaG91bGQgYWx3YXlzIGNsb3NlIGZpbGVzIGV4cGxpY2l0bHkpLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbidzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG4iCisgICAgICAgICAgICAnZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgJworICAgICAgICAgICAgJ2NvbGxlY3RhYmxlLlxuJworICAgICAgICAgICAgJ0Fsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgXCcidHJ5Ii4uLiJleGNlcHQiXCdcbicKKyAgICAgICAgICAgICdzdGF0ZW1lbnQgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdTb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgJworICAgICAgICAgICAgJ29wZW5cbicKKyAgICAgICAgICAgICdmaWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgJworICAgICAgICAgICAgJ2ZyZWVkXG4nCisgICAgICAgICAgICAnd2hlbiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UtY29sbGVjdGVkLCBidXQgc2luY2UgZ2FyYmFnZSAnCisgICAgICAgICAgICAnY29sbGVjdGlvbiBpc1xuJworICAgICAgICAgICAgJ25vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCAnCisgICAgICAgICAgICAnd2F5IHRvXG4nCisgICAgICAgICAgICAncmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSAiY2xvc2UoKSIgbWV0aG9kLiAnCisgICAgICAgICAgICAnUHJvZ3JhbXNcbicKKyAgICAgICAgICAgICdhcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcbicKKyAgICAgICAgICAgICdcJyJ0cnkiLi4uImZpbmFsbHkiXCcgc3RhdGVtZW50IGFuZCB0aGUgXCcid2l0aCJcJyBzdGF0ZW1lbnQgJworICAgICAgICAgICAgJ3Byb3ZpZGVcbicKKyAgICAgICAgICAgICdjb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdTb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSAnCisgICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICAnKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuJworICAgICAgICAgICAgImRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyJ3MgdmFsdWUuICAiCisgICAgICAgICAgICAnSW5cbicKKyAgICAgICAgICAgICdtb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAndmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCAnCisgICAgICAgICAgICAnd2hlbiB3ZVxuJworICAgICAgICAgICAgJ3RhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgb2YgJworICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJ2ltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuJworICAgICAgICAgICAgJ2NvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgJworICAgICAgICAgICAgJ29iamVjdCwgaXRzXG4nCisgICAgICAgICAgICAndmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuJworICAgICAgICAgICAgJ2ltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciAnCisgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAndHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG4nCisgICAgICAgICAgICAncmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgJworICAgICAgICAgICAgJ3doaWxlXG4nCisgICAgICAgICAgICAnZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgImEgPSAxOyBiID0gJworICAgICAgICAgICAgJzEiLFxuJworICAgICAgICAgICAgJyJhIiBhbmQgImIiIG1heSBvciBtYXkgbm90IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCB3aXRoIHRoZSAnCisgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICdvbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciAiYyA9IFtdOyBkID0gW10iLCAnCisgICAgICAgICAgICAnImMiXG4nCisgICAgICAgICAgICAnYW5kICJkIiBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LCB1bmlxdWUsIG5ld2x5XG4nCisgICAgICAgICAgICAnY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCAiYyA9IGQgPSBbXSIgYXNzaWducyB0aGUgc2FtZSAnCisgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAndG8gYm90aCAiYyIgYW5kICJkIi4pXG4nLAorICdvcGVyYXRvci1zdW1tYXJ5JzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdG9yIHByZWNlZGVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiBQeXRob24sIGZyb21cbicKKyAgICAgICAgICAgICAgICAgICAgICdsb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICcobW9zdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2JpbmRpbmcpLiAgT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICAgICdwcmVjZWRlbmNlLiAgVW5sZXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gICcKKyAgICAgICAgICAgICAgICAgICAgICdPcGVyYXRvcnMgaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnZXhwb25lbnRpYXRpb24sIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAnZ3JvdXBzIGZyb20gcmlnaHQgdG8gbGVmdCkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IGNvbXBhcmlzb25zLCBtZW1iZXJzaGlwIHRlc3RzLCBhbmQgaWRlbnRpdHkgJworICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzLCBhbGwgaGF2ZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIHByZWNlZGVuY2UgYW5kIGhhdmUgYSBsZWZ0LXRvLXJpZ2h0IGNoYWluaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICdmZWF0dXJlIGFzXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpYmVkIGluIHRoZSBDb21wYXJpc29ucyBzZWN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IE9wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJsYW1iZGEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0xhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJpZiIgLS0gImVsc2UiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0NvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJvciIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0Jvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJhbmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0Jvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJub3QiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0Jvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJpbiIsICJub3QgaW4iLCAiaXMiLCAiaXMgbm90IiwgIjwiLCAiPD0iLCAiPiIsIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIj49IiwgIiE9IiwgIj09IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAndGVzdHMgYW5kIGlkZW50aXR5IHRlc3RzICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQml0d2lzZSBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIl4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQml0d2lzZSBYT1IgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIiYiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQml0d2lzZSBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIjw8IiwgIj4+IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnU2hpZnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIisiLCAiLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnTXVsdGlwbGljYXRpb24sIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXZpc2lvbiwgcmVtYWluZGVyIFs1XSAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiK3giLCAiLXgiLCAifngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKioiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiYXdhaXQiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdBd2FpdCBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAieFtpbmRleF0iLCAieFtpbmRleDppbmRleF0iLCAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ4KGFyZ3VtZW50cy4uLikiLCAieC5hdHRyaWJ1dGUiICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIoZXhwcmVzc2lvbnMuLi4pIiwgIltleHByZXNzaW9ucy4uLl0iLCAie2tleTogIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgdmFsdWUuLi59IiwgIntleHByZXNzaW9ucy4uLn0iICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSwgZGljdGlvbmFyeSBkaXNwbGF5LCBzZXQgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzFdIFdoaWxlICJhYnMoeCV5KSA8IGFicyh5KSIgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBmbG9hdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaXQgbWF5IG5vdCBiZSB0cnVlIG51bWVyaWNhbGx5IGR1ZSB0byByb3VuZG9mZi4gIEZvciAnCisgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGFzc3VtaW5nIGEgcGxhdGZvcm0gb24gd2hpY2ggYSBQeXRob24gZmxvYXQgaXMgYW4gJworICAgICAgICAgICAgICAgICAgICAgJ0lFRUUgNzU0IGRvdWJsZS1cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCAiLTFlLTEwMCAlIDFlMTAwIiAnCisgICAgICAgICAgICAgICAgICAgICAnaGF2ZSB0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBzaWduIGFzICIxZTEwMCIsIHRoZSBjb21wdXRlZCByZXN1bHQgaXMgIi0xZS0xMDAgKyAnCisgICAgICAgICAgICAgICAgICAgICAnMWUxMDAiLCB3aGljaFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpcyBudW1lcmljYWxseSBleGFjdGx5IGVxdWFsIHRvICIxZTEwMCIuICBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICJtYXRoLmZtb2QoKSIgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzaWduIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBmaXJzdCBhcmd1bWVudCBpbnN0ZWFkLCBhbmQgc28gcmV0dXJucyAiLTFlLTEwMCIgaW4gJworICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgV2hpY2ggYXBwcm9hY2ggaXMgbW9yZSBhcHByb3ByaWF0ZSBkZXBlbmRzIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzJdIElmIHggaXMgdmVyeSBjbG9zZSB0byBhbiBleGFjdCBpbnRlZ2VyIG11bHRpcGxlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICJ5LCBpdCdzXG4iCisgICAgICAgICAgICAgICAgICAgICAnICAgIHBvc3NpYmxlIGZvciAieC8veSIgdG8gYmUgb25lIGxhcmdlciB0aGFuICcKKyAgICAgICAgICAgICAgICAgICAgICciKHgteCV5KS8veSIgZHVlIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHJvdW5kaW5nLiAgSW4gc3VjaCBjYXNlcywgUHl0aG9uIHJldHVybnMgdGhlIGxhdHRlciAnCisgICAgICAgICAgICAgICAgICAgICAncmVzdWx0LCBpblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0ICJkaXZtb2QoeCx5KVswXSAqIHkgKyB4ICUgeSIgJworICAgICAgICAgICAgICAgICAgICAgJ2JlIHZlcnkgY2xvc2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgdG8gIngiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1szXSBUaGUgVW5pY29kZSBzdGFuZGFyZCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gKmNvZGUgJworICAgICAgICAgICAgICAgICAgICAgJ3BvaW50cyogKGUuZy5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVSswMDQxKSBhbmQgKmFic3RyYWN0IGNoYXJhY3RlcnMqIChlLmcuICJMQVRJTiAnCisgICAgICAgICAgICAgICAgICAgICAnQ0FQSVRBTCBMRVRURVIgQSIpLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBXaGlsZSBtb3N0IGFic3RyYWN0IGNoYXJhY3RlcnMgaW4gVW5pY29kZSBhcmUgb25seSAnCisgICAgICAgICAgICAgICAgICAgICAncmVwcmVzZW50ZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgdXNpbmcgb25lIGNvZGUgcG9pbnQsIHRoZXJlIGlzIGEgbnVtYmVyIG9mIGFic3RyYWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHRoYXQgY2FuIGluIGFkZGl0aW9uIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ29mIG1vcmUgdGhhblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBvbmUgY29kZSBwb2ludC4gIEZvciBleGFtcGxlLCB0aGUgYWJzdHJhY3QgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAgICciTEFUSU5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEiIGNhbiBiZSByZXByZXNlbnRlZCBhcyAnCisgICAgICAgICAgICAgICAgICAgICAnYSBzaW5nbGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgKnByZWNvbXBvc2VkIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwQzcsIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICdhcyBhIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9mIGEgKmJhc2UgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uIFUrMDA0MyAoTEFUSU4gJworICAgICAgICAgICAgICAgICAgICAgJ0NBUElUQUxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgTEVUVEVSIEMpLCBmb2xsb3dlZCBieSBhICpjb21iaW5pbmcgY2hhcmFjdGVyKiBhdCAnCisgICAgICAgICAgICAgICAgICAgICAnY29kZSBwb3NpdGlvblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBVKzAzMjcgKENPTUJJTklORyBDRURJTExBKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzIG9uIHN0cmluZ3MgY29tcGFyZSBhdCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2xldmVsIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFVuaWNvZGUgY29kZSBwb2ludHMuIFRoaXMgbWF5IGJlIGNvdW50ZXItaW50dWl0aXZlICcKKyAgICAgICAgICAgICAgICAgICAgICd0byBodW1hbnMuICBGb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgZXhhbXBsZSwgIiJcXHUwMEM3IiA9PSAiXFx1MDA0M1xcdTAzMjciIiBpcyAiRmFsc2UiLCAnCisgICAgICAgICAgICAgICAgICAgICAnZXZlbiB0aG91Z2ggYm90aFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBzdHJpbmdzIHJlcHJlc2VudCB0aGUgc2FtZSBhYnN0cmFjdCBjaGFyYWN0ZXIgIkxBVElOICcKKyAgICAgICAgICAgICAgICAgICAgICdDQVBJVEFMXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIExFVFRFUiBDIFdJVEggQ0VESUxMQSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFRvIGNvbXBhcmUgc3RyaW5ncyBhdCB0aGUgbGV2ZWwgb2YgYWJzdHJhY3QgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgKHRoYXQgaXMsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGluIGEgd2F5IGludHVpdGl2ZSB0byBodW1hbnMpLCB1c2UgJworICAgICAgICAgICAgICAgICAgICAgJyJ1bmljb2RlZGF0YS5ub3JtYWxpemUoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzRdIER1ZSB0byBhdXRvbWF0aWMgZ2FyYmFnZS1jb2xsZWN0aW9uLCBmcmVlIGxpc3RzLCBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBkeW5hbWljIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2UgJworICAgICAgICAgICAgICAgICAgICAgJ3NlZW1pbmdseSB1bnVzdWFsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGJlaGF2aW91ciBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlICJpcyIgb3BlcmF0b3IsIGxpa2UgJworICAgICAgICAgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGludm9sdmluZyBjb21wYXJpc29ucyBiZXR3ZWVuIGluc3RhbmNlIG1ldGhvZHMsIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICdjb25zdGFudHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIENoZWNrIHRoZWlyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNV0gVGhlICIlIiBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcHJlY2VkZW5jZSBhcHBsaWVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s2XSBUaGUgcG93ZXIgb3BlcmF0b3IgIioqIiBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBvciBiaXR3aXNlIHVuYXJ5IG9wZXJhdG9yIG9uIGl0cyByaWdodCwgdGhhdCBpcywgJworICAgICAgICAgICAgICAgICAgICAgJyIyKiotMSIgaXMgIjAuNSIuXG4nLAorICdwYXNzJzogJ1xuJworICAgICAgICAgJ1RoZSAicGFzcyIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBwYXNzX3N0bXQgOjo9ICJwYXNzIlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyJwYXNzIiBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nICcKKyAgICAgICAgICdoYXBwZW5zLlxuJworICAgICAgICAgJ0l0IGlzIHVzZWZ1bCBhcyBhIHBsYWNlaG9sZGVyIHdoZW4gYSBzdGF0ZW1lbnQgaXMgcmVxdWlyZWRcbicKKyAgICAgICAgICdzeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgZGVmIGYoYXJnKTogcGFzcyAgICAjIGEgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdGhpbmcgKHlldClcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCisgJ3Bvd2VyJzogJ1xuJworICAgICAgICAgICdUaGUgcG93ZXIgb3BlcmF0b3JcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgcG93ZXIgb3BlcmF0b3IgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0c1xuJworICAgICAgICAgICdsZWZ0OyBpdCBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzIHJpZ2h0LiAgJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnc3ludGF4IGlzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcG93ZXIgOjo9ICggYXdhaXRfZXhwciB8IHByaW1hcnkgKSBbIioqIiB1X2V4cHJdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnb3BlcmF0b3JzIGFyZSBldmFsdWF0ZWQgZnJvbSByaWdodCB0byBsZWZ0ICh0aGlzIGRvZXMgbm90ICcKKyAgICAgICAgICAnY29uc3RyYWluXG4nCisgICAgICAgICAgJ3RoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvciBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBidWlsdC1pbiAicG93KCkiXG4nCisgICAgICAgICAgJ2Z1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCAnCisgICAgICAgICAgJ2FyZ3VtZW50XG4nCisgICAgICAgICAgJ3JhaXNlZCB0byB0aGUgcG93ZXIgb2YgaXRzIHJpZ2h0IGFyZ3VtZW50LiAgVGhlIG51bWVyaWMgYXJndW1lbnRzICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ2ZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCBhbmQgdGhlIHJlc3VsdCBpcyBvZiB0aGF0IHR5cGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdGb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyAnCisgICAgICAgICAgJ3VubGVzc1xuJworICAgICAgICAgICd0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlXG4nCisgICAgICAgICAgJ2NvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAnIjEwKioyIiByZXR1cm5zICIxMDAiLCBidXQgIjEwKiotMiIgcmV0dXJucyAiMC4wMSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdSYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICcKKyAgICAgICAgICAnIlplcm9EaXZpc2lvbkVycm9yIi5cbicKKyAgICAgICAgICAnUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXIgcmVzdWx0cyBpbiBhICcKKyAgICAgICAgICAnImNvbXBsZXgiXG4nCisgICAgICAgICAgJ251bWJlci4gKEluIGVhcmxpZXIgdmVyc2lvbnMgaXQgcmFpc2VkIGEgIlZhbHVlRXJyb3IiLilcbicsCisgJ3JhaXNlJzogJ1xuJworICAgICAgICAgICdUaGUgInJhaXNlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBubyBleHByZXNzaW9ucyBhcmUgcHJlc2VudCwgInJhaXNlIiByZS1yYWlzZXMgdGhlIGxhc3QgJworICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAndGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ3RoZSBjdXJyZW50IHNjb3BlLCBhICJSdW50aW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xuJworICAgICAgICAgICd0aGF0IHRoaXMgaXMgYW4gZXJyb3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdPdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbicKKyAgICAgICAgICAnb2JqZWN0LiAgSXQgbXVzdCBiZSBlaXRoZXIgYSBzdWJjbGFzcyBvciBhbiBpbnN0YW5jZSBvZlxuJworICAgICAgICAgICciQmFzZUV4Y2VwdGlvbiIuIElmIGl0IGlzIGEgY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBiZVxuJworICAgICAgICAgICdvYnRhaW5lZCB3aGVuIG5lZWRlZCBieSBpbnN0YW50aWF0aW5nIHRoZSBjbGFzcyB3aXRoIG5vIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIlRoZSAqdHlwZSogb2YgdGhlIGV4Y2VwdGlvbiBpcyB0aGUgZXhjZXB0aW9uIGluc3RhbmNlJ3MgY2xhc3MsIHRoZVxuIgorICAgICAgICAgICcqdmFsdWUqIGlzIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIHRyYWNlYmFjayBvYmplY3QgaXMgbm9ybWFsbHkgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYW4gJworICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAnaXMgcmFpc2VkIGFuZCBhdHRhY2hlZCB0byBpdCBhcyB0aGUgIl9fdHJhY2ViYWNrX18iIGF0dHJpYnV0ZSwgJworICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICdpcyB3cml0YWJsZS4gWW91IGNhbiBjcmVhdGUgYW4gZXhjZXB0aW9uIGFuZCBzZXQgeW91ciBvd24gdHJhY2ViYWNrICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnb25lIHN0ZXAgdXNpbmcgdGhlICJ3aXRoX3RyYWNlYmFjaygpIiBleGNlcHRpb24gbWV0aG9kICh3aGljaCAnCisgICAgICAgICAgJ3JldHVybnNcbicKKyAgICAgICAgICAndGhlIHNhbWUgZXhjZXB0aW9uIGluc3RhbmNlLCB3aXRoIGl0cyB0cmFjZWJhY2sgc2V0IHRvIGl0cyAnCisgICAgICAgICAgJ2FyZ3VtZW50KSxcbicKKyAgICAgICAgICAnbGlrZSBzbzpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlICJmcm9tIiBjbGF1c2UgaXMgdXNlZCBmb3IgZXhjZXB0aW9uIGNoYWluaW5nOiBpZiBnaXZlbiwgdGhlICcKKyAgICAgICAgICAnc2Vjb25kXG4nCisgICAgICAgICAgJypleHByZXNzaW9uKiBtdXN0IGJlIGFub3RoZXIgZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLCB3aGljaCAnCisgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAndGhlbiBiZSBhdHRhY2hlZCB0byB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBhcyB0aGUgIl9fY2F1c2VfXyIgJworICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAnKHdoaWNoIGlzIHdyaXRhYmxlKS4gIElmIHRoZSByYWlzZWQgZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkLCBib3RoXG4nCisgICAgICAgICAgJ2V4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IHRyeTpcbicKKyAgICAgICAgICAnICAgLi4uICAgICBwcmludCgxIC8gMClcbicKKyAgICAgICAgICAnICAgLi4uIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOlxuJworICAgICAgICAgICcgICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpIGZyb20gZXhjXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nICcKKyAgICAgICAgICAnZXhjZXB0aW9uOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgJworICAgICAgICAgICdpbnNpZGVcbicKKyAgICAgICAgICAnYW4gZXhjZXB0aW9uIGhhbmRsZXIgb3IgYSAiZmluYWxseSIgY2xhdXNlOiB0aGUgcHJldmlvdXMgZXhjZXB0aW9uICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAndGhlbiBhdHRhY2hlZCBhcyB0aGUgbmV3IGV4Y2VwdGlvblwncyAiX19jb250ZXh0X18iIGF0dHJpYnV0ZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgID4+PiB0cnk6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4nCisgICAgICAgICAgJyAgIC4uLiBleGNlcHQ6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIilcbicKKyAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gJworICAgICAgICAgICdvY2N1cnJlZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuJworICAgICAgICAgICdFeGNlcHRpb25zLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiAnCisgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAnVGhlIHRyeSBzdGF0ZW1lbnQuXG4nLAorICdyZXR1cm4nOiAnXG4nCisgICAgICAgICAgICdUaGUgInJldHVybiIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcicmV0dXJuIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgJ2RlZmluaXRpb24sXG4nCisgICAgICAgICAgICdub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgIk5vbmUiIGlzXG4nCisgICAgICAgICAgICdzdWJzdGl0dXRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnInJldHVybiIgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0ICcKKyAgICAgICAgICAgJyhvclxuJworICAgICAgICAgICAnIk5vbmUiKSBhcyByZXR1cm4gdmFsdWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gInJldHVybiIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAnCisgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgJ2NsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlICJyZXR1cm4iIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2dlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlICJTdG9wSXRlcmF0aW9uIiB0byBiZSByYWlzZWQuICcKKyAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAncmV0dXJuZWQgdmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3RcbicKKyAgICAgICAgICAgJyJTdG9wSXRlcmF0aW9uIiBhbmQgYmVjb21lcyB0aGUgIlN0b3BJdGVyYXRpb24udmFsdWUiIGF0dHJpYnV0ZS5cbicsCisgJ3NlcXVlbmNlLXR5cGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICdjb250YWluZXIgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICAnQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSAnCisgICAgICAgICAgICAgICAgICAgJ29yIG1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgJyhsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgJworICAgICAgICAgICAgICAgICAgICd3ZWxsLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2ZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJ29yIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJ2VtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICdhbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gJworICAgICAgICAgICAgICAgICAgICdrIDwgTiIgd2hlcmVcbicKKyAgICAgICAgICAgICAgICAgICAnKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaCAnCisgICAgICAgICAgICAgICAgICAgJ2RlZmluZSBhXG4nCisgICAgICAgICAgICAgICAgICAgJ3JhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnbWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAnCisgICAgICAgICAgICAgICAgICAgJyJjbGVhcigpIixcbicKKyAgICAgICAgICAgICAgICAgICAnInNldGRlZmF1bHQoKSIsICJwb3AoKSIsICJwb3BpdGVtKCkiLCAiY29weSgpIiwgYW5kICcKKyAgICAgICAgICAgICAgICAgICAnInVwZGF0ZSgpIlxuJworICAgICAgICAgICAgICAgICAgICJiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob24ncyBzdGFuZGFyZCBkaWN0aW9uYXJ5ICIKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICAnVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiAnCisgICAgICAgICAgICAgICAgICAgJ2Fic3RyYWN0IGJhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJfX3NldGl0ZW1fXygpIiwgIl9fZGVsaXRlbV9fKCkiLCBhbmQgImtleXMoKSIuIE11dGFibGUgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgJworICAgICAgICAgICAgICAgICAgICciZXh0ZW5kKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnbGlrZSBQeXRob25cbicKKyAgICAgICAgICAgICAgICAgICAnc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAgJ2FkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJyhtZWFuaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJ3JlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAnCisgICAgICAgICAgICAgICAgICAgJyJfX3JhZGRfXygpIixcbicKKyAgICAgICAgICAgICAgICAgICAnIl9faWFkZF9fKCkiLCAiX19tdWxfXygpIiwgIl9fcm11bF9fKCkiIGFuZCAiX19pbXVsX18oKSIgJworICAgICAgICAgICAgICAgICAgICdkZXNjcmliZWRcbicKKyAgICAgICAgICAgICAgICAgICAnYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gICcKKyAgICAgICAgICAgICAgICAgICAnSXQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50ICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyJfX2NvbnRhaW5zX18oKSIgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlICJpbiIgJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRvcjtcbicKKyAgICAgICAgICAgICAgICAgICAnZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzLCBpdFxuJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgJworICAgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGhcbicKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlICJfX2l0ZXJfXygpIiBtZXRob2QgJworICAgICAgICAgICAgICAgICAgICd0byBhbGxvd1xuJworICAgICAgICAgICAgICAgICAgICdlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAnCisgICAgICAgICAgICAgICAgICAgJyJfX2l0ZXJfXygpIlxuJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ2l0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgICAndGhyb3VnaCB0aGUgdmFsdWVzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICAnCisgICAgICAgICAgICAgICAgICAgJ1Nob3VsZCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyICI+PSIgMC4gIEFsc28sIGFuICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgJworICAgICAgICAgICAgICAgICAgICciX19sZW5fXygpIiBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgICAnY29udGV4dC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmxlbmd0aF9oaW50KCkiLiBTaG91bGQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gYW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgJworICAgICAgICAgICAgICAgICAgICdvciBsZXNzIHRoYW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iICcKKyAgICAgICAgICAgICAgICAgICAnMC4gVGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgcHVyZWx5IGFuIG9wdGltaXphdGlvbiBhbmQgaXMgbmV2ZXIgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29ycmVjdG5lc3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdOb3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlICcKKyAgICAgICAgICAgICAgICAgICAnbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgICAnICBBIGNhbGwgbGlrZVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBhWzE6Ml0gPSBiXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgIGlzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gJworICAgICAgICAgICAgICAgICAgICd3aXRoICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgInNlbGZba2V5XSIuIEZvciAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIHR5cGVzLFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cy4gIE5vdGUgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdjbGFzcyB3aXNoZXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgICAncmFpc2VkOyBpZiBvZlxuJworICAgICAgICAgICAgICAgICAgICcgICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICcoYWZ0ZXIgYW55XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgdmFsdWVzKSwgJworICAgICAgICAgICAgICAgICAgICciSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZm9yIiBsb29wcyBleHBlY3QgdGhhdCBhbiAiSW5kZXhFcnJvciIgd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JhaXNlZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kICcKKyAgICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19taXNzaW5nX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnInNlbGZba2V5XSIgZm9yIGRpY3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgJworICAgICAgICAgICAgICAgICAgICdub3RlIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciAnCisgICAgICAgICAgICAgICAgICAgJ2lmIG5ldyBrZXlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgJworICAgICAgICAgICAgICAgICAgICdyZXBsYWNlZC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogJworICAgICAgICAgICAgICAgICAgICd2YWx1ZXMgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgJworICAgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyAnCisgICAgICAgICAgICAgICAgICAgJ2lmIGVsZW1lbnRzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyAnCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0ZXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnYSBjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdjYW4gaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAgICcgICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCAnCisgICAgICAgICAgICAgICAgICAgJ2l0IHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgJworICAgICAgICAgICAgICAgICAgICd0aGV5IGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uICcKKyAgICAgICAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cywgc2VlIEl0ZXJhdG9yIFR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvICcKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gJworICAgICAgICAgICAgICAgICAgICdyZXZlcnNlIG9yZGVyLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgdGhlICJfX3JldmVyc2VkX18oKSIgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnInJldmVyc2VkKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAnCisgICAgICAgICAgICAgICAgICAgJygiX19sZW5fXygpIlxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIHByb3RvY29sXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBvbmx5IHByb3ZpZGUgIl9fcmV2ZXJzZWRfXygpIiBpZiB0aGV5IGNhbiAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGUgYW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlZCBieVxuJworICAgICAgICAgICAgICAgICAgICcgICAicmV2ZXJzZWQoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoImluIiBhbmQgIm5vdCBpbiIpIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ25vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lclxuJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgJworICAgICAgICAgICAgICAgICAgICdtb3JlIGVmZmljaWVudFxuJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgJworICAgICAgICAgICAgICAgICAgICdhIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuIHRydWVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgJworICAgICAgICAgICAgICAgICAgICd2YWx1ZXMgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ21lbWJlcnNoaXAgdGVzdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhICJfX2l0ZXJfXygpIiwgdGhlbiB0aGUgb2xkICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSB0aGlzICcKKyAgICAgICAgICAgICAgICAgICAnc2VjdGlvbiBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGFuZ3VhZ2UgcmVmZXJlbmNlLlxuJywKKyAnc2hpZnRpbmcnOiAnXG4nCisgICAgICAgICAgICAgJ1NoaWZ0aW5nIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHNoaWZ0aW5nIG9wZXJhdGlvbnMgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSBhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgJ29wZXJhdGlvbnM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzaGlmdF9leHByIDo6PSBhX2V4cHIgfCBzaGlmdF9leHByICggIjw8IiB8ICI+PiIgKSBhX2V4cHJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgJworICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICdhcmd1bWVudCB0byB0aGUgbGVmdCBvciByaWdodCBieSB0aGUgbnVtYmVyIG9mIGJpdHMgZ2l2ZW4gYnkgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnc2Vjb25kIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGZsb29yIGRpdmlzaW9uIGJ5ICcKKyAgICAgICAgICAgICAnInBvdygyLG4pIi5cbicKKyAgICAgICAgICAgICAnQSBsZWZ0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgbXVsdGlwbGljYXRpb24gd2l0aCAnCisgICAgICAgICAgICAgJyJwb3coMixuKSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlOiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpc1xuJworICAgICAgICAgICAgICcgIHJlcXVpcmVkIHRvIGJlIGF0IG1vc3QgInN5cy5tYXhzaXplIi4gIElmIHRoZSByaWdodC1oYW5kICcKKyAgICAgICAgICAgICAnb3BlcmFuZCBpc1xuJworICAgICAgICAgICAgICcgIGxhcmdlciB0aGFuICJzeXMubWF4c2l6ZSIgYW4gIk92ZXJmbG93RXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgJ3JhaXNlZC5cbicsCisgJ3NsaWNpbmdzJzogJ1xuJworICAgICAgICAgICAgICdTbGljaW5nc1xuJworICAgICAgICAgICAgICcqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBzbGljaW5nIHNlbGVjdHMgYSByYW5nZSBvZiBpdGVtcyBpbiBhIHNlcXVlbmNlIG9iamVjdCAoZS5nLiwgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJ3N0cmluZywgdHVwbGUgb3IgbGlzdCkuICBTbGljaW5ncyBtYXkgYmUgdXNlZCBhcyBleHByZXNzaW9ucyBvciAnCisgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgJ3RhcmdldHMgaW4gYXNzaWdubWVudCBvciAiZGVsIiBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYSAnCisgICAgICAgICAgICAgJ3NsaWNpbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNlX2xpc3QgICA6Oj0gc2xpY2VfaXRlbSAoIiwiIHNsaWNlX2l0ZW0pKiBbIiwiXVxuJworICAgICAgICAgICAgICcgICBzbGljZV9pdGVtICAgOjo9IGV4cHJlc3Npb24gfCBwcm9wZXJfc2xpY2VcbicKKyAgICAgICAgICAgICAnICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiICcKKyAgICAgICAgICAgICAnW3N0cmlkZV0gXVxuJworICAgICAgICAgICAgICcgICBsb3dlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyAgIHN0cmlkZSAgICAgICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgJworICAgICAgICAgICAgICdsb29rcyBsaWtlXG4nCisgICAgICAgICAgICAgJ2FuIGV4cHJlc3Npb24gbGlzdCBhbHNvIGxvb2tzIGxpa2UgYSBzbGljZSBsaXN0LCBzbyBhbnkgJworICAgICAgICAgICAgICdzdWJzY3JpcHRpb25cbicKKyAgICAgICAgICAgICAnY2FuIGJlIGludGVycHJldGVkIGFzIGEgc2xpY2luZy4gIFJhdGhlciB0aGFuIGZ1cnRoZXIgJworICAgICAgICAgICAgICdjb21wbGljYXRpbmcgdGhlXG4nCisgICAgICAgICAgICAgJ3N5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuJworICAgICAgICAgICAgICdpbnRlcnByZXRhdGlvbiBhcyBhIHN1YnNjcmlwdGlvbiB0YWtlcyBwcmlvcml0eSBvdmVyIHRoZVxuJworICAgICAgICAgICAgICdpbnRlcnByZXRhdGlvbiBhcyBhIHNsaWNpbmcgKHRoaXMgaXMgdGhlIGNhc2UgaWYgdGhlIHNsaWNlIGxpc3RcbicKKyAgICAgICAgICAgICAnY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBzZW1hbnRpY3MgZm9yIGEgc2xpY2luZyBhcmUgYXMgZm9sbG93cy4gIFRoZSBwcmltYXJ5IGlzICcKKyAgICAgICAgICAgICAnaW5kZXhlZFxuJworICAgICAgICAgICAgICcodXNpbmcgdGhlIHNhbWUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZCBhcyBub3JtYWwgc3Vic2NyaXB0aW9uKSAnCisgICAgICAgICAgICAgJ3dpdGggYVxuJworICAgICAgICAgICAgICdrZXkgdGhhdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAnc2xpY2VcbicKKyAgICAgICAgICAgICAnbGlzdCBjb250YWlucyBhdCBsZWFzdCBvbmUgY29tbWEsIHRoZSBrZXkgaXMgYSB0dXBsZSBjb250YWluaW5nICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2NvbnZlcnNpb24gb2YgdGhlIHNsaWNlIGl0ZW1zOyBvdGhlcndpc2UsIHRoZSBjb252ZXJzaW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgJ2xvbmVcbicKKyAgICAgICAgICAgICAnc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzIHRoYXQgZXhwcmVzc2lvbi4gIFRoZSBjb252ZXJzaW9uIG9mIGEgcHJvcGVyIHNsaWNlICcKKyAgICAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICAgICdzbGljZSBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSkgd2hvc2UgJworICAgICAgICAgICAgICcic3RhcnQiLFxuJworICAgICAgICAgICAgICcic3RvcCIgYW5kICJzdGVwIiBhdHRyaWJ1dGVzIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBleHByZXNzaW9ucyAnCisgICAgICAgICAgICAgJ2dpdmVuXG4nCisgICAgICAgICAgICAgJ2FzIGxvd2VyIGJvdW5kLCB1cHBlciBib3VuZCBhbmQgc3RyaWRlLCByZXNwZWN0aXZlbHksICcKKyAgICAgICAgICAgICAnc3Vic3RpdHV0aW5nXG4nCisgICAgICAgICAgICAgJyJOb25lIiBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCisgJ3NwZWNpYWxhdHRycyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ1NwZWNpYWwgQXR0cmlidXRlc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgJworICAgICAgICAgICAgICAgICAndG8gc2V2ZXJhbFxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlICcKKyAgICAgICAgICAgICAgICAgJ25vdCByZXBvcnRlZFxuJworICAgICAgICAgICAgICAgICAnYnkgdGhlICJkaXIoKSIgYnVpbHQtaW4gZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RpY3RfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIGRpY3Rpb25hcnkgb3Igb3RoZXIgbWFwcGluZyBvYmplY3QgdXNlZCB0byBzdG9yZSBhbiAnCisgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAnICAgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZS5fX2NsYXNzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIGNsYXNzIHRvIHdoaWNoIGEgY2xhc3MgaW5zdGFuY2UgYmVsb25ncy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19iYXNlc19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSB0dXBsZSBvZiBiYXNlIGNsYXNzZXMgb2YgYSBjbGFzcyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uX19uYW1lX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzLCBmdW5jdGlvbiwgbWV0aG9kLCBkZXNjcmlwdG9yLCBvciAnCisgICAgICAgICAgICAgICAgICdnZW5lcmF0b3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uLl9fcXVhbG5hbWVfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3MsIGZ1bmN0aW9uLCBtZXRob2QsICcKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IsIG9yXG4nCisgICAgICAgICAgICAgICAgICcgICBnZW5lcmF0b3IgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19tcm9fX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIGF0dHJpYnV0ZSBpcyBhIHR1cGxlIG9mIGNsYXNzZXMgdGhhdCBhcmUgY29uc2lkZXJlZCAnCisgICAgICAgICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICBsb29raW5nIGZvciBiYXNlIGNsYXNzZXMgZHVyaW5nIG1ldGhvZCByZXNvbHV0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5tcm8oKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIG1ldGFjbGFzcyB0byBjdXN0b21pemUgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QgcmVzb2x1dGlvbiBvcmRlciBmb3IgaXRzIGluc3RhbmNlcy4gIEl0IGlzIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICdhdCBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFudGlhdGlvbiwgYW5kIGl0cyByZXN1bHQgaXMgc3RvcmVkIGluICJfX21yb19fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19zdWJjbGFzc2VzX18oKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBFYWNoIGNsYXNzIGtlZXBzIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzICcKKyAgICAgICAgICAgICAgICAgJ2ltbWVkaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgc3ViY2xhc3Nlcy4gIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aG9zZSAnCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICAgICcgICBzdGlsbCBhbGl2ZS4gRXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGludC5fX3N1YmNsYXNzZXNfXygpXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBbPGNsYXNzICdib29sJz5dXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgJ2ZvdW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgaW4gdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsIChCYXNpYyBjdXN0b21pemF0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzJdIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBsaXN0ICJbMSwgMl0iIGlzIGNvbnNpZGVyZWQgZXF1YWwgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAiWzEuMCwgMi4wXSIsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuJ3QgdGVsbCB0aGUgdHlwZSBvZiAiCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICBvcGVyYW5kcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzRdIENhc2VkIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSAnCisgICAgICAgICAgICAgICAgICdwcm9wZXJ0eVxuJworICAgICAgICAgICAgICAgICAnICAgIGJlaW5nIG9uZSBvZiAiTHUiIChMZXR0ZXIsIHVwcGVyY2FzZSksICJMbCIgKExldHRlciwgJworICAgICAgICAgICAgICAgICAnbG93ZXJjYXNlKSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICBvciAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1s1XSBUbyBmb3JtYXQgb25seSBhIHR1cGxlIHlvdSBzaG91bGQgdGhlcmVmb3JlIHByb3ZpZGUgYVxuJworICAgICAgICAgICAgICAgICAnICAgIHNpbmdsZXRvbiB0dXBsZSB3aG9zZSBvbmx5IGVsZW1lbnQgaXMgdGhlIHR1cGxlIHRvIGJlICcKKyAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlZC5cbicsCisgJ3NwZWNpYWxuYW1lcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ1NwZWNpYWwgbWV0aG9kIG5hbWVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBIGNsYXNzIGNhbiBpbXBsZW1lbnQgY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgYXJlIGludm9rZWQgYnkgJworICAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAnc3ludGF4IChzdWNoIGFzIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvciBzdWJzY3JpcHRpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgJ3NsaWNpbmcpIGJ5XG4nCisgICAgICAgICAgICAgICAgICJkZWZpbmluZyBtZXRob2RzIHdpdGggc3BlY2lhbCBuYW1lcy4gVGhpcyBpcyBQeXRob24ncyAiCisgICAgICAgICAgICAgICAgICdhcHByb2FjaCB0b1xuJworICAgICAgICAgICAgICAgICAnKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duICcKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yXG4nCisgICAgICAgICAgICAgICAgICd3aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGRlZmluZXNcbicKKyAgICAgICAgICAgICAgICAgJ2EgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICd0aGlzIGNsYXNzLFxuJworICAgICAgICAgICAgICAgICAndGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsICcKKyAgICAgICAgICAgICAgICAgJ2kpIi5cbicKKyAgICAgICAgICAgICAgICAgJ0V4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICdleGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG4nCisgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiIG9yICJUeXBlRXJyb3IiKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2V0dGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvICJOb25lIiBpbmRpY2F0ZXMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uIGlzIG5vdCBhdmFpbGFibGUuICBGb3IgZXhhbXBsZSwgaWYgYSBjbGFzcyBzZXRzICcKKyAgICAgICAgICAgICAgICAgJyJfX2l0ZXJfXygpIlxuJworICAgICAgICAgICAgICAgICAndG8gIk5vbmUiLCB0aGUgY2xhc3MgaXMgbm90IGl0ZXJhYmxlLCBzbyBjYWxsaW5nICJpdGVyKCkiIG9uICcKKyAgICAgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHdpbGwgcmFpc2UgYSAiVHlwZUVycm9yIiAod2l0aG91dCBmYWxsaW5nIGJhY2sgdG9cbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIikuIFsyXVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsICcKKyAgICAgICAgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgICAgICAgICdpbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RlZ3JlZSB0aGF0IGl0XG4nCisgICAgICAgICAgICAgICAgICdtYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICdzb21lXG4nCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ2VsZW1lbnRzLCBidXRcbicKKyAgICAgICAgICAgICAgICAgJ2V4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgdGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJOb2RlTGlzdCIgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdCYXNpYyBjdXN0b21pemF0aW9uXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAnCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiBpcyBhXG4nCisgICAgICAgICAgICAgICAgICcgICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0ICcKKyAgICAgICAgICAgICAgICAgJ2FzIHN1Y2gpXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgICAgICAgJ2FzIGl0c1xuJworICAgICAgICAgICAgICAgICAnICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkICcKKyAgICAgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICAnCisgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnKHVzdWFsbHkgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIG9mICpjbHMqKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBieVxuJworICAgICAgICAgICAgICAgICAnICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAnCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBuZXdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgJworICAgICAgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAgICAgICcgICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdjcmVhdGlvbi4gIEl0XG4nCisgICAgICAgICAgICAgICAgICcgICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAnCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiksIGJ1dFxuJworICAgICAgICAgICAgICAgICAnICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSAnCisgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAnICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGhhcyBhblxuJworICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCwgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciAnCisgICAgICAgICAgICAgICAgICdpbml0aWFsaXphdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAnICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gJworICAgICAgICAgICAgICAgICAnY29uc3RydWN0aW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gJworICAgICAgICAgICAgICAgICAnY3VzdG9taXplXG4nCisgICAgICAgICAgICAgICAgICcgICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgJworICAgICAgICAgICAgICAgICAnZG9pbmcgc29cbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgJworICAgICAgICAgICAgICAgICAnaXMgYWxzb1xuJworICAgICAgICAgICAgICAgICAnICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QsIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCAnCisgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGNhbGwgaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgJworICAgICAgICAgICAgICAgICAnYSBsYXRlclxuJworICAgICAgICAgICAgICAgICAnICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgJ2d1YXJhbnRlZWQgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgJworICAgICAgICAgICAgICAgICAnZXhpc3Qgd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gJworICAgICAgICAgICAgICAgICAndGhlIGZvcm1lclxuJworICAgICAgICAgICAgICAgICAnICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnbGF0dGVyIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICAnCisgICAgICAgICAgICAgICAgICdTb21lIGNvbW1vblxuJworICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzIChlLmcuLFxuJworICAgICAgICAgICAgICAgICAnICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCAnCisgICAgICAgICAgICAgICAgICdwYXJlbnQgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgJworICAgICAgICAgICAgICAgICAnZnJhbWUgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgJworICAgICAgICAgICAgICAgICAnc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSAnCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gJworICAgICAgICAgICAgICAgICAndW5oYW5kbGVkXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuJworICAgICAgICAgICAgICAgICAnICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBjeWNsZXM7XG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAndGhpcmQgY2FuXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiAnCisgICAgICAgICAgICAgICAgICdDaXJjdWxhclxuJworICAgICAgICAgICAgICAgICAnICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCAnCisgICAgICAgICAgICAgICAgICd1cCB3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAiICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXQncyBvbiBieSAiCisgICAgICAgICAgICAgICAgICdkZWZhdWx0KS4gUmVmZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiZ2MiIG1vZHVsZSBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIHRvcGljLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaFxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgJworICAgICAgICAgICAgICAgICAnZHVyaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzIGludm9rZWQgJworICAgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmcgZGVsZXRlZCAoZS5nLiwgd2hlbiAnCisgICAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAnIl9fZGVsX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzICcKKyAgICAgICAgICAgICAgICAgJ29mIGJlaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvcm4gZG93biAoZS5nLiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gICcKKyAgICAgICAgICAgICAgICAgJ0ZvciB0aGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlICcKKyAgICAgICAgICAgICAgICAgJ21pbmltdW0gbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gJworICAgICAgICAgICAgICAgICAnMS41LFxuJworICAgICAgICAgICAgICAgICAnICAgICBQeXRob24gZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhICcKKyAgICAgICAgICAgICAgICAgJ3NpbmdsZVxuJworICAgICAgICAgICAgICAgICAnICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICdnbG9iYWxzIGFyZVxuJworICAgICAgICAgICAgICAgICAnICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgJworICAgICAgICAgICAgICAgICAndGhpcyBtYXlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsICcKKyAgICAgICAgICAgICAgICAgJ2F2YWlsYWJsZSBhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXByX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAicmVwcigpIiBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICcib2ZmaWNpYWwiXG4nCisgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLCAnCisgICAgICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICd1c2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnZm9ybVxuJworICAgICAgICAgICAgICAgICAnICAgIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ3JldHVyblxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19yZXByX18oKSIgYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICcKKyAgICAgICAgICAgICAgICAgJyJpbmZvcm1hbCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpcyAnCisgICAgICAgICAgICAgICAgICdyZXF1aXJlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgJworICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgInN0cihvYmplY3QpIiBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAnCisgICAgICAgICAgICAgICAgICciZm9ybWF0KCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgInByaW50KCkiIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5IHByaW50YWJsZSAnCisgICAgICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ3RoZXJlIGlzIG5vXG4nCisgICAgICAgICAgICAgICAgICcgICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICdleHByZXNzaW9uOiBhXG4nCisgICAgICAgICAgICAgICAgICcgICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAnCisgICAgICAgICAgICAgICAgICcib2JqZWN0IlxuJworICAgICAgICAgICAgICAgICAnICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyAnCisgICAgICAgICAgICAgICAgICdyZXByZXNlbnRhdGlvbiBvZiBhblxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiwgYW5kIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ2V4dGVuc2lvbixcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRpb24gb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJzdHIuZm9ybWF0KCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QsIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgJworICAgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYSBzdHJpbmcgdGhhdCAnCisgICAgICAgICAgICAgICAgICdjb250YWlucyBhXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGRlc2lyZWQuIFRoZSAnCisgICAgICAgICAgICAgICAgICdpbnRlcnByZXRhdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG8gdGhlIHR5cGUgJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbCBlaXRoZXIgJworICAgICAgICAgICAgICAgICAnZGVsZWdhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGEgJworICAgICAgICAgICAgICAgICAnc2ltaWxhclxuJworICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBTZWUgRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSBmb3IgYSBkZXNjcmlwdGlvbiAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgJworICAgICAgICAgICAgICAgICAnaXRzZWxmXG4nCisgICAgICAgICAgICAgICAgICcgICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyAnCisgICAgICAgICAgICAgICAgICdpcyBhc1xuJworICAgICAgICAgICAgICAgICAnICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICcKKyAgICAgICAgICAgICAgICAgJyJ4Ll9fbGVfXyh5KSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICcKKyAgICAgICAgICAgICAgICAgJyJ4PnkiIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICcgICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gJworICAgICAgICAgICAgICAgICAnIk5vdEltcGxlbWVudGVkIlxuJworICAgICAgICAgICAgICAgICAnICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciAnCisgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkICcKKyAgICAgICAgICAgICAgICAgJ2ZvciBhXG4nCisgICAgICAgICAgICAgICAgICcgICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiAnCisgICAgICAgICAgICAgICAgICdhbnkgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICcgICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IChlLmcuLFxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgJworICAgICAgICAgICAgICAgICAnImJvb2woKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yICcKKyAgICAgICAgICAgICAgICAgJ2ZhbHNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICdpbnZlcnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVzdWx0IHVubGVzcyBpdCBpcyAiTm90SW1wbGVtZW50ZWQiLiAgVGhlcmUgYXJlIG5vIG90aGVyICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxpZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgJworICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyAnCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNhbGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdCAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb24sIHNlZVxuJworICAgICAgICAgICAgICAgICAnICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICdub3RlcyBvblxuJworICAgICAgICAgICAgICAgICAnICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tICcKKyAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgJyh0byBiZSB1c2VkXG4nCisgICAgICAgICAgICAgICAgICcgICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgJworICAgICAgICAgICAgICAgICAndGhlIHJpZ2h0XG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSAnCisgICAgICAgICAgICAgICAgICJlYWNoIG90aGVyJ3NcbiIKKyAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgJworICAgICAgICAgICAgICAgICAncmVmbGVjdGlvbixcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gJworICAgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICIgICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZCdzIHR5cGUgIgorICAgICAgICAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICAgICAgICAiICAgZGlyZWN0IG9yIGluZGlyZWN0IHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmQncyB0eXBlLCAiCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCAnCisgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgdGhlXG4nCisgICAgICAgICAgICAgICAgICIgICBsZWZ0IG9wZXJhbmQncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCBzdWJjbGFzc2luZyAiCisgICAgICAgICAgICAgICAgICdpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2hhc2hfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAgICAgJ29uIG1lbWJlcnNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgJworICAgICAgICAgICAgICAgICAnImRpY3QiLlxuJworICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5IHJlcXVpcmVkICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICcgICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggJworICAgICAgICAgICAgICAgICAndmFsdWU7IGl0IGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSBvcikgJworICAgICAgICAgICAgICAgICAndGhlIGhhc2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhICcKKyAgICAgICAgICAgICAgICAgJ3BhcnQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICcgICAgIGN1c3RvbSAiX19oYXNoX18oKSIgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgJworICAgICAgICAgICAgICAgICAnIlB5X3NzaXplX3QiLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgICBpcyB0eXBpY2FsbHkgOCBieXRlcyBvbiA2NC1iaXQgYnVpbGRzIGFuZCA0IGJ5dGVzIG9uICcKKyAgICAgICAgICAgICAgICAgJzMyLWJpdFxuJworICAgICAgICAgICAgICAgICAnICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0ICcKKyAgICAgICAgICAgICAgICAgJ2ludGVyb3BlcmF0ZSBvbiBidWlsZHNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb2YgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggb24gJworICAgICAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHN1cHBvcnRlZCBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggJworICAgICAgICAgICAgICAgICAnInB5dGhvbiAtY1xuJworICAgICAgICAgICAgICAgICAnICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gIl9fZXFfXygpIiBtZXRob2QgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnIl9fZXFfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlIGFzICcKKyAgICAgICAgICAgICAgICAgJ2l0ZW1zIGluXG4nCisgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lcyBtdXRhYmxlIG9iamVjdHMgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRzIGFuICJfX2VxX18oKSIgbWV0aG9kLCBpdCBzaG91bGQgbm90IGltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgJworICAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgIiAgIHJlcXVpcmVzIHRoYXQgYSBrZXkncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlICIKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzIGhhc2hcbiIKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBieVxuJworICAgICAgICAgICAgICAgICAnICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCAnCisgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZSBzdWNoXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSAnCisgICAgICAgICAgICAgICAgICdoYXNoKHkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgJworICAgICAgICAgICAgICAgICAnIl9faGFzaF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICAnCisgICAgICAgICAgICAgICAgICdXaGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSAnCisgICAgICAgICAgICAgICAgICdhdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAnICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgJworICAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnMuSGFzaGFibGUpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuJworICAgICAgICAgICAgICAgICAnICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byAnCisgICAgICAgICAgICAgICAgICdzdXBwcmVzc1xuJworICAgICAgICAgICAgICAgICAnICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5ICcKKyAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiAnCisgICAgICAgICAgICAgICAgICdjYWxsLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzICcKKyAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAnICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgJworICAgICAgICAgICAgICAgICAncmFuZG9tIHZhbHVlLlxuJworICAgICAgICAgICAgICAgICAnICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgJworICAgICAgICAgICAgICAgICAnaW52b2NhdGlvbnMgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSAnCisgICAgICAgICAgICAgICAgICdkZW5pYWwtXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgJworICAgICAgICAgICAgICAgICAnZXhwbG9pdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgJworICAgICAgICAgICAgICAgICAnY29tcGxleGl0eS5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCAnCisgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gJworICAgICAgICAgICAgICAgICAnb3JkZXIgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlICcKKyAgICAgICAgICAgICAgICAgJ2d1YXJhbnRlZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICczMi1iaXQgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Jvb2xfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgJworICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZWFuaW5nIG9mXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgJyJ4Lm5hbWUiKSBmb3JcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGluc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzICcKKyAgICAgICAgICAgICAgICAgJ2l0IGZvdW5kXG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ25hbWUuIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciAnCisgICAgICAgICAgICAgICAgICdyYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCAnCisgICAgICAgICAgICAgICAgICdtZWNoYW5pc20sXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsICcKKyAgICAgICAgICAgICAgICAgJ2FzeW1tZXRyeVxuJworICAgICAgICAgICAgICAgICAnICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgJworICAgICAgICAgICAgICAgICAnZG9uZSBib3RoIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgJworICAgICAgICAgICAgICAgICAnd291bGQgaGF2ZVxuJworICAgICAgICAgICAgICAgICAnICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgJworICAgICAgICAgICAgICAgICAndGhhdCBhdFxuJworICAgICAgICAgICAgICAgICAnICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgJworICAgICAgICAgICAgICAgICAnYnkgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAnKGJ1dFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ2dldCB0b3RhbFxuJworICAgICAgICAgICAgICAgICAnICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyAnCisgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiLFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICJfX2dldGF0dHJpYnV0ZV9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2VpdGhlclxuJworICAgICAgICAgICAgICAgICAnICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgJworICAgICAgICAgICAgICAgICAncmVjdXJzaW9uIGluXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgJworICAgICAgICAgICAgICAgICAnbmVlZHMsIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSAnCisgICAgICAgICAgICAgICAgICdsYW5ndWFnZSBzeW50YXhcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgU3BlY2lhbCBtZXRob2QgbG9va3VwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgJworICAgICAgICAgICAgICAgICAnaXMgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICcqdmFsdWUqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlLCBpdFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgICcgICAib2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkICcKKyAgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsICcKKyAgICAgICAgICAgICAgICAgJ29iai5uYW1lIiBpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGlyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gImRpcigpIiBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICdtdXN0IGJlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm5lZC4gImRpcigpIiBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSAnCisgICAgICAgICAgICAgICAgICdsaXN0IGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgc29ydHMgaXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSAnCisgICAgICAgICAgICAgICAgICdhcHBlYXJzIGluIGFuXG4nCisgICAgICAgICAgICAgICAgICIqb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXIncyAiCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICdwYXJlbnRzKS4gIEluIHRoZVxuJworICAgICAgICAgICAgICAgICAnZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICd3aG9zZSBuYW1lIGlzXG4nCisgICAgICAgICAgICAgICAgICd0aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyAiX19kaWN0X18iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgJworICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgJworICAgICAgICAgICAgICAgICAnIk5vbmUiIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIHNob3VsZFxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAnCisgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiXG4nCisgICAgICAgICAgICAgICAgICcgICBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgJworICAgICAgICAgICAgICAgICAndGhlIG93bmVyXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgb3duZXIgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBhdCB0aGUgdGltZSB0aGUgb3duaW5nIGNsYXNzICpvd25lciogaXMgY3JlYXRlZC4gJworICAgICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXNjcmlwdG9yIGhhcyBiZWVuIGFzc2lnbmVkIHRvICpuYW1lKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy42LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAiaW5zcGVjdCIgJworICAgICAgICAgICAgICAgICAnbW9kdWxlIGFzXG4nCisgICAgICAgICAgICAgICAgICdzcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyAnCisgICAgICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2dpdmVuIHR5cGUgKG9yIGEgc3ViY2xhc3MpIGlzIGV4cGVjdGVkIG9yIHJlcXVpcmVkIGFzIHRoZSAnCisgICAgICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBmb3JcbicKKyAgICAgICAgICAgICAgICAgJ3VuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbnZva2luZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICciYmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgJ2luIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gJworICAgICAgICAgICAgICAgICAnb2JqZWN0LCBpdFxuJworICAgICAgICAgICAgICAgICAnaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciAnCisgICAgICAgICAgICAgICAgICdkZWxldGVcbicKKyAgICAgICAgICAgICAgICAgInRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3QncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICIKKyAgICAgICAgICAgICAgICAgJyJhLngiIGhhcyBhXG4nCisgICAgICAgICAgICAgICAgICdsb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4nCisgICAgICAgICAgICAgICAgICcidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXMgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIGFuZFxuJworICAgICAgICAgICAgICAgICAnaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICdwcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2hvdyB0aGV5IHdlcmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICcKKyAgICAgICAgICAgICAgICAgJyJhLngiLiBIb3dcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGlyZWN0IENhbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgJworICAgICAgICAgICAgICAgICAnZGlyZWN0bHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luc3RhbmNlIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCAnCisgICAgICAgICAgICAgICAgICdpbnRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDbGFzcyBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NhbGw6XG4nCisgICAgICAgICAgICAgICAgICcgICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1N1cGVyIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICcKKyAgICAgICAgICAgICAgICAgJyJzdXBlcihCLFxuJworICAgICAgICAgICAgICAgICAnICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyAiQSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9uIGRlcGVuZHNcbicKKyAgICAgICAgICAgICAgICAgJ29uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAnY2FuIGRlZmluZVxuJworICAgICAgICAgICAgICAgICAnYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuJworICAgICAgICAgICAgICAgICAnZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ3dpbGwgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICd0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgJworICAgICAgICAgICAgICAgICAnYW5kL29yXG4nCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnbmVpdGhlciwgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJ2Egbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSAnCisgICAgICAgICAgICAgICAgICdib3RoXG4nCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUgJworICAgICAgICAgICAgICAgICAnanVzdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkuICBJblxuJworICAgICAgICAgICAgICAgICAnY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciY2xhc3NtZXRob2QoKSIpIGFyZVxuJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzICcKKyAgICAgICAgICAgICAgICAgJ2NhblxuJworICAgICAgICAgICAgICAgICAncmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB0b1xuJworICAgICAgICAgICAgICAgICAnYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NhbWUgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhICcKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICdBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSAnCisgICAgICAgICAgICAgICAgICdwcm9wZXJ0eS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdfX3Nsb3RzX19cbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdCeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICdzdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3ICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW5nIGxhcmdlXG4nCisgICAgICAgICAgICAgICAgICdudW1iZXJzIG9mIGluc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byAnCisgICAgICAgICAgICAgICAgICdob2xkIGFcbicKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qICcKKyAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAnY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsICcKKyAgICAgICAgICAgICAgICAgJ29yIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICcgICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yICcKKyAgICAgICAgICAgICAgICAgJ2VhY2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ05vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICd+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICcKKyAgICAgICAgICAgICAgICAgJypfX2RpY3RfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICdhc3NpZ25lZCBuZXdcbicKKyAgICAgICAgICAgICAgICAgJyAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgICAgICdBdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAnICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIi4gSWZcbicKKyAgICAgICAgICAgICAgICAgJyAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlY2xhcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICdjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICcgIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlY2xhcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgJworICAgICAgICAgICAgICAgICAnY3JlYXRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVzY3JpcHRvcnMgKEltcGxlbWVudGluZyBEZXNjcmlwdG9ycykgZm9yIGVhY2ggdmFyaWFibGUgJworICAgICAgICAgICAgICAgICAnbmFtZS4gIEFzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICcKKyAgICAgICAgICAgICAgICAgJypfX2RpY3RfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSAnCisgICAgICAgICAgICAgICAgICdjb250YWluIG5hbWVzXG4nCisgICAgICAgICAgICAgICAgICcgIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyAnCisgICAgICAgICAgICAgICAgICdpbmFjY2Vzc2libGVcbicKKyAgICAgICAgICAgICAgICAgJyAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MpLlxuJworICAgICAgICAgICAgICAgICAnICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Z1dHVyZSwgYVxuJworICAgICAgICAgICAgICAgICAnICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCAnCisgICAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAgICcgICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgJworICAgICAgICAgICAgICAgICAnYW5kICJ0dXBsZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiAnCisgICAgICAgICAgICAgICAgICdNYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAnICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgJworICAgICAgICAgICAgICAgICAnbWF5IGJlXG4nCisgICAgICAgICAgICAgICAgICcgIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICAgJyAgKl9fc2xvdHNfXyouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW5ldmVyIGEgY2xhc3MgaW5oZXJpdHMgZnJvbSBhbm90aGVyIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICcqX19pbml0X3N1YmNsYXNzX18qIGlzXG4nCisgICAgICAgICAgICAgICAgICdjYWxsZWQgb24gdGhhdCBjbGFzcy4gVGhpcyB3YXksIGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXMgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgJ2NoYW5nZSB0aGUgYmVoYXZpb3Igb2Ygc3ViY2xhc3Nlcy4gVGhpcyBpcyBjbG9zZWx5IHJlbGF0ZWQgJworICAgICAgICAgICAgICAgICAndG8gY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlY29yYXRvcnMsIGJ1dCB3aGVyZSBjbGFzcyBkZWNvcmF0b3JzIG9ubHkgYWZmZWN0IHRoZSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWZpYyBjbGFzc1xuJworICAgICAgICAgICAgICAgICAndGhleVwncmUgYXBwbGllZCB0bywgIl9faW5pdF9zdWJjbGFzc19fIiBzb2xlbHkgYXBwbGllcyB0byAnCisgICAgICAgICAgICAgICAgICdmdXR1cmVcbicKKyAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZXMgb2YgdGhlIGNsYXNzIGRlZmluaW5nIHRoZSBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzbWV0aG9kIG9iamVjdC5fX2luaXRfc3ViY2xhc3NfXyhjbHMpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgY29udGFpbmluZyBjbGFzcyBpcyAnCisgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VkLlxuJworICAgICAgICAgICAgICAgICAnICAgKmNscyogaXMgdGhlbiB0aGUgbmV3IHN1YmNsYXNzLiBJZiBkZWZpbmVkIGFzIGEgbm9ybWFsICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QsIHRoaXMgbWV0aG9kIGlzIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBLZXl3b3JkIGFyZ3VtZW50cyB3aGljaCBhcmUgZ2l2ZW4gdG8gYSBuZXcgY2xhc3MgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBhcmVudFwncyBjbGFzcyAiX19pbml0X3N1YmNsYXNzX18iLiBGb3IgY29tcGF0aWJpbGl0eSAnCisgICAgICAgICAgICAgICAgICd3aXRoIG90aGVyXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzc2VzIHVzaW5nICJfX2luaXRfc3ViY2xhc3NfXyIsIG9uZSBzaG91bGQgdGFrZSBvdXQgJworICAgICAgICAgICAgICAgICAndGhlIG5lZWRlZFxuJworICAgICAgICAgICAgICAgICAnICAga2V5d29yZCBhcmd1bWVudHMgYW5kIHBhc3MgdGhlIG90aGVycyBvdmVyIHRvIHRoZSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgaW46XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGNsYXNzIFBoaWxvc29waGVyOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIGRlZmF1bHRfbmFtZSwgJworICAgICAgICAgICAgICAgICAnKiprd2FyZ3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICBjbHMuZGVmYXVsdF9uYW1lID0gZGVmYXVsdF9uYW1lXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGNsYXNzIEF1c3RyYWxpYW5QaGlsb3NvcGhlcihQaGlsb3NvcGhlciwgJworICAgICAgICAgICAgICAgICAnZGVmYXVsdF9uYW1lPSJCcnVjZSIpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gIm9iamVjdC5fX2luaXRfc3ViY2xhc3NfXyIgJworICAgICAgICAgICAgICAgICAnZG9lcyBub3RoaW5nLFxuJworICAgICAgICAgICAgICAgICAnICAgYnV0IHJhaXNlcyBhbiBlcnJvciBpZiBpdCBpcyBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGUgbWV0YWNsYXNzIGhpbnQgIm1ldGFjbGFzcyIgaXMgY29uc3VtZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Jlc3Qgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHR5cGUgbWFjaGluZXJ5LCBhbmQgaXMgbmV2ZXIgcGFzc2VkIHRvICcKKyAgICAgICAgICAgICAgICAgJyJfX2luaXRfc3ViY2xhc3NfXyJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaW1wbGVtZW50YXRpb25zLiBUaGUgYWN0dWFsIG1ldGFjbGFzcyAocmF0aGVyIHRoYW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0XG4nCisgICAgICAgICAgICAgICAgICcgICAgIGhpbnQpIGNhbiBiZSBhY2Nlc3NlZCBhcyAidHlwZShjbHMpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy42LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGFjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdCeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyAidHlwZSgpIi4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGJvZHkgaXNcbicKKyAgICAgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgJworICAgICAgICAgICAgICAgICAnbG9jYWxseSB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3Jlc3VsdCBvZiAidHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pemVkIGJ5IHBhc3NpbmcgdGhlXG4nCisgICAgICAgICAgICAgICAgICcibWV0YWNsYXNzIiBrZXl3b3JkIGFyZ3VtZW50IGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGxpbmUsICcKKyAgICAgICAgICAgICAgICAgJ29yIGJ5XG4nCisgICAgICAgICAgICAgICAgICdpbmhlcml0aW5nIGZyb20gYW4gZXhpc3RpbmcgY2xhc3MgdGhhdCBpbmNsdWRlZCBzdWNoIGFuICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50LiBJblxuJworICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBleGFtcGxlLCBib3RoICJNeUNsYXNzIiBhbmQgIk15U3ViY2xhc3MiIGFyZSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXNcbicKKyAgICAgICAgICAgICAgICAgJ29mICJNZXRhIjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgTWV0YSh0eXBlKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU1ldGEpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgTXlTdWJjbGFzcyhNeUNsYXNzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0FueSBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb25cbicKKyAgICAgICAgICAgICAgICAgJ2FyZSBwYXNzZWQgdGhyb3VnaCB0byBhbGwgbWV0YWNsYXNzIG9wZXJhdGlvbnMgZGVzY3JpYmVkICcKKyAgICAgICAgICAgICAgICAgJ2JlbG93LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBleGVjdXRlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyAnCisgICAgICAgICAgICAgICAgICdvY2N1cjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiB0aGUgY2xhc3MgbmFtZXNwYWNlIGlzIHByZXBhcmVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgZm9yIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyAnCisgICAgICAgICAgICAgICAgICdkZXRlcm1pbmVkIGFzXG4nCisgICAgICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIGlmIG5vIGJhc2VzIGFuZCBubyBleHBsaWNpdCBtZXRhY2xhc3MgYXJlIGdpdmVuLCB0aGVuICcKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKCkiIGlzXG4nCisgICAgICAgICAgICAgICAgICcgIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICJ0eXBlKCkiLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIGlmIGFuIGluc3RhbmNlIG9mICJ0eXBlKCkiIGlzIGdpdmVuIGFzIHRoZSBleHBsaWNpdCAnCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3MsIG9yXG4nCisgICAgICAgICAgICAgICAgICcgIGJhc2VzIGFyZSBkZWZpbmVkLCB0aGVuIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZXhwbGljaXRseSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWZpZWRcbicKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzcyAoaWYgYW55KSBhbmQgdGhlIG1ldGFjbGFzc2VzIChpLmUuICJ0eXBlKGNscykiKSBvZiAnCisgICAgICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSAnCisgICAgICAgICAgICAgICAgICd3aGljaCBpcyBhXG4nCisgICAgICAgICAgICAgICAgICdzdWJ0eXBlIG9mICphbGwqIG9mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2NhbmRpZGF0ZSBtZXRhY2xhc3NlcyBtZWV0cyB0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICAgICAnd2lsbCBmYWlsIHdpdGggIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ09uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhICJfX3ByZXBhcmVfXyIgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlLFxuJworICAgICAgICAgICAgICAgICAnaXQgaXMgY2FsbGVkIGFzICJuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSwgJworICAgICAgICAgICAgICAgICAnYmFzZXMsXG4nCisgICAgICAgICAgICAgICAgICcqKmt3ZHMpIiAod2hlcmUgdGhlIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgJworICAgICAgICAgICAgICAgICAnY29tZSBmcm9tXG4nCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3MgZGVmaW5pdGlvbikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0lmIHRoZSBtZXRhY2xhc3MgaGFzIG5vICJfX3ByZXBhcmVfXyIgYXR0cmlidXRlLCB0aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlIGlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IG9yZGVyZWQgbWFwcGluZy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDBcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgSW50cm9kdWNlZCB0aGUgIl9fcHJlcGFyZV9fIiBuYW1lc3BhY2UgaG9va1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0V4ZWN1dGluZyB0aGUgY2xhc3MgYm9keVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcyAiZXhlYyhib2R5LCAnCisgICAgICAgICAgICAgICAgICdnbG9iYWxzKCksXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UpIi4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwgY2FsbCB0byAnCisgICAgICAgICAgICAgICAgICciZXhlYygpIiBpcyB0aGF0XG4nCisgICAgICAgICAgICAgICAgICdsZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55ICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMpIHRvXG4nCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uLFxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICdhY2Nlc3NlZCBhdCBhbGxcbicKKyAgICAgICAgICAgICAgICAgJ2Zyb20gc3RhdGljIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdPbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2JvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UsICoqa3dkcykiICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcyBwYXNzZWQgaGVyZSBhcmUgJworICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgJ2FzIHRob3NlIHBhc3NlZCB0byAiX19wcmVwYXJlX18iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAnemVyby1cbicKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZvcm0gb2YgInN1cGVyKCkiLiAiX19jbGFzc19fIiBpcyBhbiBpbXBsaWNpdCAnCisgICAgICAgICAgICAgICAgICdjbG9zdXJlXG4nCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2UgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdib2R5IHJlZmVyXG4nCisgICAgICAgICAgICAgICAgICd0byBlaXRoZXIgIl9fY2xhc3NfXyIgb3IgInN1cGVyIi4gVGhpcyBhbGxvd3MgdGhlIHplcm8gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZm9ybVxuJworICAgICAgICAgICAgICAgICAnb2YgInN1cGVyKCkiIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICdiYXNlZCBvblxuJworICAgICAgICAgICAgICAgICAnbGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCAnCisgICAgICAgICAgICAgICAgICd0byBtYWtlIHRoZVxuJworICAgICAgICAgICAgICAgICAnY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWNvcmF0b3JzIGluY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAncmVzdWx0aW5nXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICdjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiBhIG5ldyBjbGFzcyBpcyBjcmVhdGVkIGJ5ICJ0eXBlLl9fbmV3X18iLCB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGFzXG4nCisgICAgICAgICAgICAgICAgICd0aGUgbmFtZXNwYWNlIHBhcmFtZXRlciBpcyBjb3BpZWQgdG8gYSBuZXcgb3JkZXJlZCBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ29yaWdpbmFsIG9iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBpcyB3cmFwcGVkIGluIGEgJworICAgICAgICAgICAgICAgICAncmVhZC1vbmx5XG4nCisgICAgICAgICAgICAgICAgICdwcm94eSwgd2hpY2ggYmVjb21lcyB0aGUgIl9fZGljdF9fIiBhdHRyaWJ1dGUgb2YgdGhlIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzEzNSoqIC0gTmV3IHN1cGVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgIl9fY2xhc3NfXyIgY2xvc3VyZSByZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRhY2xhc3MgZXhhbXBsZVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgaGF2ZVxuJworICAgICAgICAgICAgICAgICAnYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgJworICAgICAgICAgICAgICAgICAnYXV0b21hdGljXG4nCisgICAgICAgICAgICAgICAgICdkZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsICcKKyAgICAgICAgICAgICAgICAgJ2ZyYW1ld29ya3MsIGFuZFxuJworICAgICAgICAgICAgICAgICAnYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG4nCisgICAgICAgICAgICAgICAgICciY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiIHRvIHJlbWVtYmVyIHRoZSBvcmRlciB0aGF0IGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlc1xuJworICAgICAgICAgICAgICAgICAnYXJlIGRlZmluZWQ6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIEBjbGFzc21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsICcKKyAgICAgICAgICAgICAgICAgJ2RpY3QobmFtZXNwYWNlKSlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJldHVybiByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBBLm1lbWJlcnNcbicKKyAgICAgICAgICAgICAgICAgIiAgICgnX19tb2R1bGVfXycsICdvbmUnLCAndHdvJywgJ3RocmVlJywgJ2ZvdXInKVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGZvciAqQSogZ2V0cyBleGVjdXRlZCwgdGhlIHByb2Nlc3MgJworICAgICAgICAgICAgICAgICAnYmVnaW5zXG4nCisgICAgICAgICAgICAgICAgICd3aXRoIGNhbGxpbmcgdGhlIG1ldGFjbGFzc1wncyAiX19wcmVwYXJlX18oKSIgbWV0aG9kIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybnMgYW5cbicKKyAgICAgICAgICAgICAgICAgJ2VtcHR5ICJjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCIuICBUaGF0IG1hcHBpbmcgcmVjb3JkcyB0aGUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMgb2YgKkEqIGFzIHRoZXkgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBib2R5IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnc3RhdGVtZW50LiBPbmNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBleGVjdXRlZCwgdGhlIG9yZGVyZWQgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnaXMgZnVsbHkgcG9wdWxhdGVkIGFuZCB0aGUgbWV0YWNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICdnZXRzXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2VkLiAgVGhhdCBtZXRob2QgYnVpbGRzIHRoZSBuZXcgdHlwZSBhbmQgaXQgc2F2ZXMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyZWRcbicKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkga2V5cyBpbiBhbiBhdHRyaWJ1dGUgY2FsbGVkICJtZW1iZXJzIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJpc2luc3RhbmNlKCkiIGFuZCAiaXNzdWJjbGFzcygpIiBidWlsdC1pbiBmdW5jdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luIHBhcnRpY3VsYXIsIHRoZSBtZXRhY2xhc3MgImFiYy5BQkNNZXRhIiBpbXBsZW1lbnRzIHRoZXNlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgaW5cbicKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvIGFsbG93IHRoZSBhZGRpdGlvbiBvZiBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpICcKKyAgICAgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgICAgICcidmlydHVhbCBiYXNlIGNsYXNzZXMiIHRvIGFueSBjbGFzcyBvciB0eXBlIChpbmNsdWRpbmcgJworICAgICAgICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgICAgICAgJ3R5cGVzKSwgaW5jbHVkaW5nIG90aGVyIEFCQ3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiAqaW5zdGFuY2UqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCAnCisgICAgICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5kaXJlY3QpIGluc3RhbmNlIG9mICpjbGFzcyouIElmIGRlZmluZWQsIGNhbGxlZCB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJpc2luc3RhbmNlKGluc3RhbmNlLCBjbGFzcykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3QgJworICAgICAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgImlzc3ViY2xhc3Moc3ViY2xhc3MsIGNsYXNzKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCB0aGVzZSBtZXRob2RzIGFyZSBsb29rZWQgdXAgb24gdGhlIHR5cGUgJworICAgICAgICAgICAgICAgICAnKG1ldGFjbGFzcykgb2YgYVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MuICBUaGV5IGNhbm5vdCBiZSBkZWZpbmVkIGFzIGNsYXNzIG1ldGhvZHMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2FjdHVhbCBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBsb29rdXAgb2Ygc3BlY2lhbCBtZXRob2RzIHRoYXQgJworICAgICAgICAgICAgICAgICAnYXJlIGNhbGxlZFxuJworICAgICAgICAgICAgICAgICAnb24gaW5zdGFuY2VzLCBvbmx5IGluIHRoaXMgY2FzZSB0aGUgaW5zdGFuY2UgaXMgaXRzZWxmIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAnICAgICBJbmNsdWRlcyB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgY3VzdG9taXppbmcgJworICAgICAgICAgICAgICAgICAnImlzaW5zdGFuY2UoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJpc3N1YmNsYXNzKCkiIGJlaGF2aW9yIHRocm91Z2ggIl9faW5zdGFuY2VjaGVja19fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19zdWJjbGFzc2NoZWNrX18oKSIsIHdpdGggbW90aXZhdGlvbiBmb3IgdGhpcyAnCisgICAgICAgICAgICAgICAgICdmdW5jdGlvbmFsaXR5IGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgJworICAgICAgICAgICAgICAgICAnImFiYyJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiAnCisgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdDb250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpICcKKyAgICAgICAgICAgICAgICAgJ29yIG1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICcobGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzICcKKyAgICAgICAgICAgICAgICAgJ3dlbGwuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoICIwIDw9IGsgJworICAgICAgICAgICAgICAgICAnPCBOIiB3aGVyZVxuJworICAgICAgICAgICAgICAgICAnKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaCAnCisgICAgICAgICAgICAgICAgICdkZWZpbmUgYVxuJworICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgJworICAgICAgICAgICAgICAgICAncHJvdmlkZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVtcygpIiwgImdldCgpIiwgJworICAgICAgICAgICAgICAgICAnImNsZWFyKCkiLFxuJworICAgICAgICAgICAgICAgICAnInNldGRlZmF1bHQoKSIsICJwb3AoKSIsICJwb3BpdGVtKCkiLCAiY29weSgpIiwgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJ1cGRhdGUoKSJcbicKKyAgICAgICAgICAgICAgICAgImJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvbidzIHN0YW5kYXJkIGRpY3Rpb25hcnkgIgorICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1RoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgJworICAgICAgICAgICAgICAgICAnYWJzdHJhY3QgYmFzZVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLFxuJworICAgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgJyJleHRlbmQoKSIsXG4nCisgICAgICAgICAgICAgICAgICciaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsICcKKyAgICAgICAgICAgICAgICAgJ2xpa2UgUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICdzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICdhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gJworICAgICAgICAgICAgICAgICAnKG1lYW5pbmdcbicKKyAgICAgICAgICAgICAgICAgJ3JlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAnCisgICAgICAgICAgICAgICAgICciX19yYWRkX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICciX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiAnCisgICAgICAgICAgICAgICAgICdkZXNjcmliZWRcbicKKyAgICAgICAgICAgICAgICAgJ2JlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCAnCisgICAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuJworICAgICAgICAgICAgICAgICAnIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRvcjtcbicKKyAgICAgICAgICAgICAgICAgJ2ZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXMsIGl0XG4nCisgICAgICAgICAgICAgICAgICdzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgJworICAgICAgICAgICAgICAgICAndGhhdCBib3RoXG4nCisgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byAnCisgICAgICAgICAgICAgICAgICdhbGxvd1xuJworICAgICAgICAgICAgICAgICAnZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgJworICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICd0aHJvdWdoIHRoZSB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlbl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICAnCisgICAgICAgICAgICAgICAgICdTaG91bGQgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gJworICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICcKKyAgICAgICAgICAgICAgICAgJyJfX2xlbl9fKCkiIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm4gYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yICcKKyAgICAgICAgICAgICAgICAgJ2xlc3MgdGhhblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuICcKKyAgICAgICAgICAgICAgICAgJ1RoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcnJlY3RuZXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ05vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgJyAgQSBjYWxsIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICBhWzE6Ml0gPSBiXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gJworICAgICAgICAgICAgICAgICAnd2l0aCAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIHR5cGVzLFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgJworICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3Mgd2lzaGVzXG4nCisgICAgICAgICAgICAgICAgICcgICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuIElmXG4nCisgICAgICAgICAgICAgICAgICcgICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQ7IGlmIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAnKGFmdGVyIGFueVxuJworICAgICAgICAgICAgICAgICAnICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgJworICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICcgICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiAnCisgICAgICAgICAgICAgICAgICdmb3IgZGljdFxuJworICAgICAgICAgICAgICAgICAnICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgJworICAgICAgICAgICAgICAgICAnYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmICcKKyAgICAgICAgICAgICAgICAgJ25ldyBrZXlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogJworICAgICAgICAgICAgICAgICAndmFsdWVzIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgJworICAgICAgICAgICAgICAgICAnYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgJworICAgICAgICAgICAgICAgICAnZWxlbWVudHNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyAnCisgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0ICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSAnCisgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gJworICAgICAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMsIHNlZSBJdGVyYXRvciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3IgJworICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSAnCisgICAgICAgICAgICAgICAgICdvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgdGhlICJfX3JldmVyc2VkX18oKSIgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJyZXZlcnNlZCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgJygiX19sZW5fXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAncHJvdG9jb2xcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBvbmx5IHByb3ZpZGUgIl9fcmV2ZXJzZWRfXygpIiBpZiB0aGV5IGNhbiBwcm92aWRlICcKKyAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlZCBieVxuJworICAgICAgICAgICAgICAgICAnICAgInJldmVyc2VkKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoImluIiBhbmQgIm5vdCBpbiIpIGFyZSAnCisgICAgICAgICAgICAgICAgICdub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lclxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIG1vcmUgJworICAgICAgICAgICAgICAgICAnZWZmaWNpZW50XG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgYSAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgJworICAgICAgICAgICAgICAgICAncmV0dXJuIHRydWVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMsIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgJworICAgICAgICAgICAgICAgICAndmFsdWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUga2V5LWl0ZW0gcGFpcnMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSAiX19jb250YWluc19fKCkiLCB0aGUgJworICAgICAgICAgICAgICAgICAnbWVtYmVyc2hpcCB0ZXN0XG4nCisgICAgICAgICAgICAgICAgICcgICBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhICJfX2l0ZXJfXygpIiwgdGhlbiB0aGUgb2xkICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyYXRpb24gcHJvdG9jb2wgdmlhICJfX2dldGl0ZW1fXygpIiwgc2VlIHRoaXMgc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIHJlZmVyZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCAnCisgICAgICAgICAgICAgICAgICdieSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2UgJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJ25vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAnCisgICAgICAgICAgICAgICAgICciZGl2bW9kKCkiLFxuJworICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICcgICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICAgICAnICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgJworICAgICAgICAgICAgICAgICAncmVsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJ3RvIGFjY2VwdFxuJworICAgICAgICAgICAgICAgICAnICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAnCisgICAgICAgICAgICAgICAgICcoc3dhcHBlZClcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCAnCisgICAgICAgICAgICAgICAgICdvcGVyYW5kIGRvZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBbM10gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdvcGVyYW5kcyBhcmUgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCB0eXBlcy4gWzRdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gInggLVxuJworICAgICAgICAgICAgICAgICAnICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICcKKyAgICAgICAgICAgICAgICAgJyJfX3JzdWJfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybnNcbicKKyAgICAgICAgICAgICAgICAgJyAgICpOb3RJbXBsZW1lbnRlZCouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgJworICAgICAgICAgICAgICAgICAnIl9fcnBvd19fKCkiICh0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgIgorICAgICAgICAgICAgICAgICAnbGVmdFxuJworICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkICIKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBsZWZ0XG4nCisgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzICIKKyAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzJyBvcGVyYXRpb25zLlxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCAnCisgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICcKKyAgICAgICAgICAgICAgICAgJyIqKj0iLFxuJworICAgICAgICAgICAgICAgICAnICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2F0dGVtcHQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gJworICAgICAgICAgICAgICAgICAndGhlIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAnICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzICcKKyAgICAgICAgICAgICAgICAgJ2JhY2sgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCAnCisgICAgICAgICAgICAgICAgICc9XG4nCisgICAgICAgICAgICAgICAgICcgICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJ5Ll9fcmFkZF9fKHgpIiBhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gJworICAgICAgICAgICAgICAgICAnY2VydGFpblxuJworICAgICAgICAgICAgICAgICAnICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkICcKKyAgICAgICAgICAgICAgICAgJ2Vycm9yc1xuJworICAgICAgICAgICAgICAgICAiICAgKHNlZSBXaHkgZG9lcyBhX3R1cGxlW2ldICs9IFsnaXRlbSddIHJhaXNlIGFuIGV4Y2VwdGlvbiAiCisgICAgICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgYWRkaXRpb24gd29ya3M/KSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBkYXRhXG4nCisgICAgICAgICAgICAgICAgICcgICBtb2RlbC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVnX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hYnNfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICgiLSIsICcKKyAgICAgICAgICAgICAgICAgJyIrIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJhYnMoKSIgYW5kICJ+IikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb2F0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgJyJpbnQoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR5cGUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luZGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciAnCisgICAgICAgICAgICAgICAgICdQeXRob24gbmVlZHNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvIGxvc3NsZXNzbHkgY29udmVydCB0aGUgbnVtZXJpYyBvYmplY3QgdG8gYW4gaW50ZWdlciAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgKHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZSBidWlsdC1pbiAiYmluKCkiLCAiaGV4KCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICcib2N0KCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGlzIGFuIGludGVnZXIgdHlwZS4gIE11c3QgcmV0dXJuIGFuIGludGVnZXIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEluIG9yZGVyIHRvIGhhdmUgYSBjb2hlcmVudCBpbnRlZ2VyIHR5cGUgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQsIGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgICBib3RoIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgJworICAgICAgICAgICAgICAgICAnY29udGV4dCB0b1xuJworICAgICAgICAgICAgICAgICAnYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgJworICAgICAgICAgICAgICAgICAnY29udGV4dCBtYW5hZ2VyXG4nCisgICAgICAgICAgICAgICAgICdoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgJworICAgICAgICAgICAgICAgICAncnVudGltZSBjb250ZXh0XG4nCisgICAgICAgICAgICAgICAgICdmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgJworICAgICAgICAgICAgICAgICAnYXJlIG5vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICdpbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAgICAgICAnc3RhdGVtZW50KSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgJ3Jlc3RvcmluZyB2YXJpb3VzXG4nCisgICAgICAgICAgICAgICAgICdraW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsICcKKyAgICAgICAgICAgICAgICAgJ2Nsb3Npbmcgb3BlbmVkXG4nCisgICAgICAgICAgICAgICAgICdmaWxlcywgZXRjLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICdNYW5hZ2VyIFR5cGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19lbnRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAiICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZCdzIHJldHVybiB2YWx1ZSB0byB0aGUgIgorICAgICAgICAgICAgICAgICAndGFyZ2V0KHMpXG4nCisgICAgICAgICAgICAgICAgICcgICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAnCisgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlICcKKyAgICAgICAgICAgICAgICAgJ2V4aXRlZC4gSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudHMgd2lsbFxuJworICAgICAgICAgICAgICAgICAnICAgYmUgIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byAnCisgICAgICAgICAgICAgICAgICdzdXBwcmVzcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCAnCisgICAgICAgICAgICAgICAgICdzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgJ3Byb2Nlc3NlZFxuJworICAgICAgICAgICAgICAgICAnICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZC1pblxuJworICAgICAgICAgICAgICAgICAiICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eS5cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAnUHl0aG9uICJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBtZXRob2QgbG9va3VwXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAnYXJlIG9ubHlcbicKKyAgICAgICAgICAgICAgICAgImd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3QncyB0eXBlLCAiCisgICAgICAgICAgICAgICAgICdub3QgaW5cbicKKyAgICAgICAgICAgICAgICAgInRoZSBvYmplY3QncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlICIKKyAgICAgICAgICAgICAgICAgJ3JlYXNvbiB3aHlcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgQzpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IEMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxlbihjKVxuJworICAgICAgICAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICAgICAgICAiICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSAnQycgaGFzIG5vIGxlbigpXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgYmVoYXZpb3VyIGxpZXMgd2l0aCBhIG51bWJlciBvZiAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzIHN1Y2ggYXMgIl9faGFzaF9fKCkiIGFuZCAiX19yZXByX18oKSIgdGhhdCBhcmUgJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgJ2FsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZXNlXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCAnCisgICAgICAgICAgICAgICAgICdmYWlsIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuJworICAgICAgICAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICAgICAgICAiICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yICdfX2hhc2hfXycgb2YgJ2ludCcgb2JqZWN0IG5lZWRzIGFuICIKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MgaW4gdGhpc1xuJworICAgICAgICAgICAgICAgICAid2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyAnbWV0YWNsYXNzIGNvbmZ1c2lvbicsIGFuZCAiCisgICAgICAgICAgICAgICAgICdpcyBhdm9pZGVkXG4nCisgICAgICAgICAgICAgICAgICdieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnRlcmVzdCBvZlxuJworICAgICAgICAgICAgICAgICAnY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyAnCisgICAgICAgICAgICAgICAgICdieXBhc3Nlc1xuJworICAgICAgICAgICAgICAgICAndGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBldmVuIG9mIHRoZSBvYmplY3RcJ3MgJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgTWV0YSh0eXBlKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcHJpbnQoIk1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgQyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gMTBcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcHJpbnQoIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICcgICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuJworICAgICAgICAgICAgICAgICAnICAgMTBcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhICcKKyAgICAgICAgICAgICAgICAgJ3R5cGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuJworICAgICAgICAgICAgICAgICAnICAgMTBcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbicKKyAgICAgICAgICAgICAgICAgJyAgIDEwXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5cGFzc2luZyB0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWFjaGluZXJ5IGluIHRoaXMgZmFzaGlvbiAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlc1xuJworICAgICAgICAgICAgICAgICAnc2lnbmlmaWNhbnQgc2NvcGUgZm9yIHNwZWVkIG9wdGltaXNhdGlvbnMgd2l0aGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlciwgYXRcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBjb3N0IG9mIHNvbWUgZmxleGliaWxpdHkgaW4gdGhlIGhhbmRsaW5nIG9mIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyAodGhlXG4nCisgICAgICAgICAgICAgICAgICdzcGVjaWFsIG1ldGhvZCAqbXVzdCogYmUgc2V0IG9uIHRoZSBjbGFzcyBvYmplY3QgaXRzZWxmIGluICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvIGJlXG4nCisgICAgICAgICAgICAgICAgICdjb25zaXN0ZW50bHkgaW52b2tlZCBieSB0aGUgaW50ZXJwcmV0ZXIpLlxuJywKKyAnc3RyaW5nLW1ldGhvZHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZyBNZXRob2RzXG4nCisgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdTdHJpbmdzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBzZXF1ZW5jZSBvcGVyYXRpb25zLCAnCisgICAgICAgICAgICAgICAgICAgJ2Fsb25nIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgICAndGhlIGFkZGl0aW9uYWwgbWV0aG9kcyBkZXNjcmliZWQgYmVsb3cuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdTdHJpbmdzIGFsc28gc3VwcG9ydCB0d28gc3R5bGVzIG9mIHN0cmluZyBmb3JtYXR0aW5nLCBvbmUgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRpbmcgYVxuJworICAgICAgICAgICAgICAgICAgICdsYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSAnCisgICAgICAgICAgICAgICAgICAgJyJzdHIuZm9ybWF0KCkiLFxuJworICAgICAgICAgICAgICAgICAgICdGb3JtYXQgU3RyaW5nIFN5bnRheCBhbmQgQ3VzdG9tIFN0cmluZyBGb3JtYXR0aW5nKSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXIgYmFzZWRcbicKKyAgICAgICAgICAgICAgICAgICAnb24gQyAicHJpbnRmIiBzdHlsZSBmb3JtYXR0aW5nIHRoYXQgaGFuZGxlcyBhIG5hcnJvd2VyICcKKyAgICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAnYW5kIGlzIHNsaWdodGx5IGhhcmRlciB0byB1c2UgY29ycmVjdGx5LCBidXQgaXMgb2Z0ZW4gJworICAgICAgICAgICAgICAgICAgICdmYXN0ZXIgZm9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgICdjYXNlcyBpdCBjYW4gaGFuZGxlIChwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIFRleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcyBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCAnCisgICAgICAgICAgICAgICAgICAgJ2xpYnJhcnkgY292ZXJzIGFcbicKKyAgICAgICAgICAgICAgICAgICAnbnVtYmVyIG9mIG90aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkICcKKyAgICAgICAgICAgICAgICAgICAndXRpbGl0aWVzXG4nCisgICAgICAgICAgICAgICAgICAgJyhpbmNsdWRpbmcgcmVndWxhciBleHByZXNzaW9uIHN1cHBvcnQgaW4gdGhlICJyZSIgJworICAgICAgICAgICAgICAgICAgICdtb2R1bGUpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmNhcGl0YWxpemUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgJ2NhcGl0YWxpemVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmNhc2Vmb2xkKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNhc2Vmb2xkZWQgY29weSBvZiB0aGUgc3RyaW5nLiBDYXNlZm9sZGVkICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5ncyBtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdXNlZCBmb3IgY2FzZWxlc3MgbWF0Y2hpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlICcKKyAgICAgICAgICAgICAgICAgICAnYWdncmVzc2l2ZSBiZWNhdXNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0IGlzIGludGVuZGVkIHRvIHJlbW92ZSBhbGwgY2FzZSBkaXN0aW5jdGlvbnMgaW4gYSAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZy4gRm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGV4YW1wbGUsIHRoZSBHZXJtYW4gbG93ZXJjYXNlIGxldHRlciAiXCfDn1wnIiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2VxdWl2YWxlbnQgdG8gIiJzcyIiLlxuJworICAgICAgICAgICAgICAgICAgICcgICBTaW5jZSBpdCBpcyBhbHJlYWR5IGxvd2VyY2FzZSwgImxvd2VyKCkiIHdvdWxkIGRvICcKKyAgICAgICAgICAgICAgICAgICAnbm90aGluZyB0byAiXCfDn1wnIjtcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImNhc2Vmb2xkKCkiIGNvbnZlcnRzIGl0IHRvICIic3MiIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBjYXNlZm9sZGluZyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyAnCisgICAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGRvbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFuIEFTQ0lJICcKKyAgICAgICAgICAgICAgICAgICAnc3BhY2UpLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yICcKKyAgICAgICAgICAgICAgICAgICAnZXF1YWwgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqc3ViKlxuJworICAgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgICAgICAgICAgJypzdGFydCogYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuIERlZmF1bHRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZW5jb2RpbmcgaXMgIlwndXRmLThcJyIuICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYSAnCisgICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudFxuJworICAgICAgICAgICAgICAgICAgICcgICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJyJcJ3N0cmljdFwnIixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhICJVbmljb2RlRXJyb3IiLiAnCisgICAgICAgICAgICAgICAgICAgJ090aGVyIHBvc3NpYmxlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBhcmUgIlwnaWdub3JlXCciLCAiXCdyZXBsYWNlXCciLCAnCisgICAgICAgICAgICAgICAgICAgJyJcJ3htbGNoYXJyZWZyZXBsYWNlXCciLFxuJworICAgICAgICAgICAgICAgICAgICcgICAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkICcKKyAgICAgICAgICAgICAgICAgICAndmlhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKSIsIHNlZSBzZWN0aW9uIEVycm9yIEhhbmRsZXJzLiAnCisgICAgICAgICAgICAgICAgICAgJ0ZvciBhIGxpc3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiBTdGFuZGFyZCBFbmNvZGluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyAnCisgICAgICAgICAgICAgICAgICAgJ2FkZGVkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gIlRydWUiIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgJworICAgICAgICAgICAgICAgICAgICcqc3VmZml4KixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3RoZXJ3aXNlIHJldHVybiAiRmFsc2UiLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSAnCisgICAgICAgICAgICAgICAgICAgJ29mIHN1ZmZpeGVzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdCAnCisgICAgICAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAncG9zaXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZXhwYW5kdGFicyh0YWJzaXplPTgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIHJlcGxhY2VkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJ5IG9uZSBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZ2l2ZW4gdGFiIHNpemUuICBUYWIgcG9zaXRpb25zIG9jY3VyIGV2ZXJ5ICp0YWJzaXplKiAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKGRlZmF1bHQgaXMgOCwgZ2l2aW5nIHRhYiBwb3NpdGlvbnMgYXQgY29sdW1ucyAwLCA4LCAxNiAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCBzbyBvbikuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRvIGV4cGFuZCB0aGUgc3RyaW5nLCB0aGUgY3VycmVudCBjb2x1bW4gaXMgc2V0IHRvIHplcm8gJworICAgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyBpcyBleGFtaW5lZCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGFiICgiXFx0IiksIG9uZSBvciBtb3JlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGluc2VydGVkICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAgICcgICB1bnRpbCB0aGUgY3VycmVudCBjb2x1bW4gaXMgZXF1YWwgdG8gdGhlIG5leHQgdGFiICcKKyAgICAgICAgICAgICAgICAgICAncG9zaXRpb24uIChUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGFiIGNoYXJhY3RlciBpdHNlbGYgaXMgbm90IGNvcGllZC4pICBJZiB0aGUgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYSBuZXdsaW5lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICgiXFxuIikgb3IgcmV0dXJuICgiXFxyIiksIGl0IGlzIGNvcGllZCBhbmQgdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICAgICAgICdjb2x1bW4gaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVzZXQgdG8gemVyby4gIEFueSBvdGhlciBjaGFyYWN0ZXIgaXMgY29waWVkIHVuY2hhbmdlZCAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY3VycmVudCBjb2x1bW4gaXMgaW5jcmVtZW50ZWQgYnkgb25lIHJlZ2FyZGxlc3Mgb2YgaG93ICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlciBpcyByZXByZXNlbnRlZCB3aGVuIHByaW50ZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICA+Pj4gJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0Jy5leHBhbmR0YWJzKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJzAxICAgICAgMDEyICAgICAwMTIzICAgIDAxMjM0J1xuIgorICAgICAgICAgICAgICAgICAgICIgICA+Pj4gJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0Jy5leHBhbmR0YWJzKDQpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICcwMSAgMDEyIDAxMjMgICAgMDEyMzQnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICcqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCB3aXRoaW4gdGhlIHNsaWNlICJzW3N0YXJ0OmVuZF0iLiAgT3B0aW9uYWwgJworICAgICAgICAgICAgICAgICAgICdhcmd1bWVudHMgKnN0YXJ0KlxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLiAgUmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICAnIi0xIiBpZlxuJworICAgICAgICAgICAgICAgICAgICcgICAqc3ViKiBpcyBub3QgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGUgImZpbmQoKSIgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91ICcKKyAgICAgICAgICAgICAgICAgICAnbmVlZCB0byBrbm93XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyBvciBub3QsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgdXNlIHRoZSAiaW4iIG9wZXJhdG9yOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgICA+Pj4gJ1B5JyBpbiAnUHl0aG9uJ1xuIgorICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gJworICAgICAgICAgICAgICAgICAgICd3aGljaCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yICcKKyAgICAgICAgICAgICAgICAgICAncmVwbGFjZW1lbnQgZmllbGRzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRlbGltaXRlZCBieSBicmFjZXMgInt9Ii4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgJworICAgICAgICAgICAgICAgICAgICdjb250YWlucyBlaXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSAnCisgICAgICAgICAgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgJworICAgICAgICAgICAgICAgICAgICdlYWNoXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgPj4+ICJUaGUgc3VtIG9mIDEgKyAyIGlzIHswfSIuZm9ybWF0KDErMilcbicKKyAgICAgICAgICAgICAgICAgICAiICAgJ1RoZSBzdW0gb2YgMSArIDIgaXMgMydcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNlZSBGb3JtYXQgU3RyaW5nIFN5bnRheCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICd2YXJpb3VzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaW4gZm9ybWF0ICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5mb3JtYXRfbWFwKG1hcHBpbmcpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTaW1pbGFyIHRvICJzdHIuZm9ybWF0KCoqbWFwcGluZykiLCBleGNlcHQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJyJtYXBwaW5nIiBpcyB1c2VkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgImRpY3QiLiAgVGhpcyBpcyB1c2VmdWwgaWYgJworICAgICAgICAgICAgICAgICAgICdmb3IgZXhhbXBsZVxuJworICAgICAgICAgICAgICAgICAgICcgICAibWFwcGluZyIgaXMgYSBkaWN0IHN1YmNsYXNzOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAne25hbWV9IHdhcyBib3JuIGluICIKKyAgICAgICAgICAgICAgICAgICAie2NvdW50cnl9Jy5mb3JtYXRfbWFwKERlZmF1bHQobmFtZT0nR3VpZG8nKSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnknXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIExpa2UgImZpbmQoKSIsIGJ1dCByYWlzZSAiVmFsdWVFcnJvciIgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzYWxudW0oKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgJworICAgICAgICAgICAgICAgICAgICdhbHBoYW51bWVyaWMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgImMiXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGlzIGFscGhhbnVtZXJpYyBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyByZXR1cm5zICcKKyAgICAgICAgICAgICAgICAgICAnIlRydWUiOlxuJworICAgICAgICAgICAgICAgICAgICcgICAiYy5pc2FscGhhKCkiLCAiYy5pc2RlY2ltYWwoKSIsICJjLmlzZGlnaXQoKSIsIG9yICcKKyAgICAgICAgICAgICAgICAgICAnImMuaXNudW1lcmljKCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzYWxwaGEoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgJworICAgICAgICAgICAgICAgICAgICdhbHBoYWJldGljIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICAnCisgICAgICAgICAgICAgICAgICAgJ0FscGhhYmV0aWNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgJworICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0eVxuJworICAgICAgICAgICAgICAgICAgICcgICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgJworICAgICAgICAgICAgICAgICAgICd0aGF0IHRoaXMgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ1VuaWNvZGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNkZWNpbWFsKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICcKKyAgICAgICAgICAgICAgICAgICAnRGVjaW1hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyAnCisgICAgICAgICAgICAgICAgICAgJ2NhdGVnb3J5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiAnCisgICAgICAgICAgICAgICAgICAgJ2JlIHVzZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgJworICAgICAgICAgICAgICAgICAgICdESUdJVCBaRVJPLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzZGlnaXQoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZXJlIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyAnCisgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUgZGVjaW1hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggJworICAgICAgICAgICAgICAgICAgICdhcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2EgY2hhcmFjdGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNpZGVudGlmaWVyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyICcKKyAgICAgICAgICAgICAgICAgICAnYWNjb3JkaW5nIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uIElkZW50aWZpZXJzIGFuZCBrZXl3b3Jkcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVzZSAia2V5d29yZC5pc2tleXdvcmQoKSIgdG8gdGVzdCBmb3IgcmVzZXJ2ZWQgJworICAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVycyBzdWNoIGFzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJkZWYiIGFuZCAiY2xhc3MiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzbG93ZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdhcmUgbG93ZXJjYXNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc251bWVyaWMoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICcKKyAgICAgICAgICAgICAgICAgICAnTnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAndGhhdCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgJworICAgICAgICAgICAgICAgICAgICdGUkFDVElPTlxuJworICAgICAgICAgICAgICAgICAgICcgICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgJworICAgICAgICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICAgICAgICcgICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc3ByaW50YWJsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ3ByaW50YWJsZSBvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UgYXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAnCisgICAgICAgICAgICAgICAgICAgJygweDIwKSB3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdpbiB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuICcKKyAgICAgICAgICAgICAgICAgICAnInJlcHIoKSIgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW52b2tlZCBvbiBhIHN0cmluZy4gIEl0IGhhcyBubyBiZWFyaW5nIG9uIHRoZSBoYW5kbGluZyAnCisgICAgICAgICAgICAgICAgICAgJ29mIHN0cmluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnICAgd3JpdHRlbiB0byAic3lzLnN0ZG91dCIgb3IgInN5cy5zdGRlcnIiLilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc3NwYWNlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSBzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gICcKKyAgICAgICAgICAgICAgICAgICAnV2hpdGVzcGFjZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggJworICAgICAgICAgICAgICAgICAgICdiaWRpcmVjdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc3RpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICd0aGVyZSBpcyBhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ21heSBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgJworICAgICAgICAgICAgICAgICAgICdjYXNlZCBvbmVzLlxuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzdXBwZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdhcmUgdXBwZXJjYXNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5qb2luKGl0ZXJhYmxlKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgIlR5cGVFcnJvciIgd2lsbCBiZSByYWlzZWQgaWYgJworICAgICAgICAgICAgICAgICAgICd0aGVyZSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW55IG5vbi1zdHJpbmcgdmFsdWVzIGluICppdGVyYWJsZSosIGluY2x1ZGluZyAiYnl0ZXMiICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nICcKKyAgICAgICAgICAgICAgICAgICAndGhpcyBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggJworICAgICAgICAgICAgICAgICAgICcqd2lkdGgqLlxuJworICAgICAgICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYW4gQVNDSUlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgJworICAgICAgICAgICAgICAgICAgICdsZXNzIHRoYW4gb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubG93ZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgWzRdXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgICczLjEzIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmxzdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAncmVtb3ZlZC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgdG8gYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSAnCisgICAgICAgICAgICAgICAgICAgJ3ByZWZpeDsgcmF0aGVyLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcgICBzcGFjaW91cyAgICcubHN0cmlwKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ3NwYWNpb3VzICAgJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ3d3dy5leGFtcGxlLmNvbScubHN0cmlwKCdjbW93ei4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnZXhhbXBsZS5jb20nXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlICcKKyAgICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJzdHIudHJhbnNsYXRlKCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2xlbmd0aCAxKSB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgJworICAgICAgICAgICAgICAgICAgICdOb25lLlxuJworICAgICAgICAgICAgICAgICAgICcgICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnZXF1YWwgbGVuZ3RoLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4ICcKKyAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSBtYXBwZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgJworICAgICAgICAgICAgICAgICAgICdpcyBhIHRoaXJkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICdtYXBwZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnBhcnRpdGlvbihzZXApXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICcgICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHR3byBlbXB0eSBzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKm9sZCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2dpdmVuLCBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnKnN1YiogaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICcKKyAgICAgICAgICAgICAgICAgICAnInNbc3RhcnQ6ZW5kXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgJworICAgICAgICAgICAgICAgICAgICdpbiBzbGljZVxuJworICAgICAgICAgICAgICAgICAgICcgICBub3RhdGlvbi4gIFJldHVybiAiLTEiIG9uIGZhaWx1cmUuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJyZmluZCgpIiBidXQgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBub3QgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAgICAnKndpZHRoKi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGFuIEFTQ0lJXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJwYXJ0aXRpb24oc2VwKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICcgICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAnKm1heHNwbGl0KiBzcGxpdHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIHNwbGl0dGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBmcm9tIHRoZSByaWdodCwgInJzcGxpdCgpIiBiZWhhdmVzIGxpa2UgInNwbGl0KCkiIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAnc3VmZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5yc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnICAgc3BhY2lvdXMnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnbWlzc2lzc2lwcGknLnJzdHJpcCgnaXB6JylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ21pc3Npc3MnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogJworICAgICAgICAgICAgICAgICAgICdhcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcqbWF4c3BsaXQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcibWF4c3BsaXQrMSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkIG9yICItMSIsICcKKyAgICAgICAgICAgICAgICAgICAndGhlbiB0aGVyZSBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSBtYWRlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgJworICAgICAgICAgICAgICAgICAgICdncm91cGVkIHRvZ2V0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgJworICAgICAgICAgICAgICAgICAgICdcJzJcJ10iKS4gIFRoZSAqc2VwKiBhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAgICcgICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsICcKKyAgICAgICAgICAgICAgICAgICAnXCczXCddIikuIFNwbGl0dGluZyBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAnCisgICAgICAgICAgICAgICAgICAgJyJbXCdcJ10iLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEsMiwzJy5zcGxpdCgnLCcpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJzMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEsMiwzJy5zcGxpdCgnLCcsIG1heHNwbGl0PTEpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyLDMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEsMiwsMywnLnNwbGl0KCcsJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnJywgJzMnLCAnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgIk5vbmUiLCBhIGRpZmZlcmVudCAnCisgICAgICAgICAgICAgICAgICAgJ3NwbGl0dGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIHJlZ2FyZGVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vICcKKyAgICAgICAgICAgICAgICAgICAnZW1wdHkgc3RyaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgJworICAgICAgICAgICAgICAgICAgICd0cmFpbGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yICcKKyAgICAgICAgICAgICAgICAgICAnYSBzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhICJOb25lIiBzZXBhcmF0b3IgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm5zICJbXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSAyIDMnLnNwbGl0KClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSAyIDMnLnNwbGl0KG1heHNwbGl0PTEpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyIDMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIDEgICAyICAgMyAgICcuc3BsaXQoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICczJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCAnCisgICAgICAgICAgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYm91bmRhcmllcy4gIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAncmVzdWx0aW5nIGxpc3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBzcGxpdHMgb24gdGhlIGZvbGxvd2luZyBsaW5lIGJvdW5kYXJpZXMuICAnCisgICAgICAgICAgICAgICAgICAgJ0luXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBhcnRpY3VsYXIsIHRoZSBib3VuZGFyaWVzIGFyZSBhIHN1cGVyc2V0IG9mICp1bml2ZXJzYWwgJworICAgICAgICAgICAgICAgICAgICduZXdsaW5lcyouXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgUmVwcmVzZW50YXRpb24gICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXG4iICAgICAgICAgICAgICAgICAgICB8IExpbmUgJworICAgICAgICAgICAgICAgICAgICdGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcciIgICAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgJworICAgICAgICAgICAgICAgICAgICdSZXR1cm4gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxyXFxuIiAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICsgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx2IiBvciAiXFx4MGIiICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ1RhYnVsYXRpb24gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxmIiBvciAiXFx4MGMiICAgICAgICAgIHwgRm9ybSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWMiICAgICAgICAgICAgICAgICAgfCBGaWxlICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxZCIgICAgICAgICAgICAgICAgICB8IEdyb3VwICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFlIiAgICAgICAgICAgICAgICAgIHwgUmVjb3JkICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4ODUiICAgICAgICAgICAgICAgICAgfCBOZXh0IExpbmUgKEMxIENvbnRyb2wgJworICAgICAgICAgICAgICAgICAgICdDb2RlKSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHUyMDI4IiAgICAgICAgICAgICAgICB8IExpbmUgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdTIwMjkiICAgICAgICAgICAgICAgIHwgUGFyYWdyYXBoICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6ICJcXHYiIGFuZCAiXFxmIiBhZGRlZCB0byBsaXN0ICcKKyAgICAgICAgICAgICAgICAgICAnb2YgbGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuJy5zcGxpdGxpbmVzKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydhYiBjJywgJycsICdkZSBmZycsICdrbCddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnYWIgY1xcblxcbmRlICIKKyAgICAgICAgICAgICAgICAgICAiZmdcXHJrbFxcclxcbicuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ2FiIGNcXG4nLCAnXFxuJywgJ2RlIGZnXFxyJywgJ2tsXFxyXFxuJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVubGlrZSAic3BsaXQoKSIgd2hlbiBhIGRlbGltaXRlciBzdHJpbmcgKnNlcCogaXMgJworICAgICAgICAgICAgICAgICAgICdnaXZlbiwgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdhIHRlcm1pbmFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIiIuc3BsaXRsaW5lcygpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIFtdXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiT25lIGxpbmVcXG4iLnNwbGl0bGluZXMoKVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICBbJ09uZSBsaW5lJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBjb21wYXJpc29uLCAic3BsaXQoXCdcXG5cJykiIGdpdmVzOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcnLnNwbGl0KCdcXG4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnVHdvIGxpbmVzXFxuJy5zcGxpdCgnXFxuJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydUd28gbGluZXMnLCAnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gIlRydWUiIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgICcgICAiRmFsc2UiLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvICcKKyAgICAgICAgICAgICAgICAgICAnbG9vayBmb3IuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAndHJhaWxpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgIk5vbmUiLCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSAqY2hhcnMqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqICcKKyAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5zdHJpcCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdzcGFjaW91cydcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICd3d3cuZXhhbXBsZS5jb20nLnN0cmlwKCdjbW93ei4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnZXhhbXBsZSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBvdXRlcm1vc3QgbGVhZGluZyBhbmQgdHJhaWxpbmcgKmNoYXJzKiBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaXBwZWQgZnJvbSB0aGUgc3RyaW5nLiBDaGFyYWN0ZXJzIGFyZSByZW1vdmVkIGZyb20gJworICAgICAgICAgICAgICAgICAgICd0aGUgbGVhZGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBlbmQgdW50aWwgcmVhY2hpbmcgYSBzdHJpbmcgY2hhcmFjdGVyIHRoYXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVkIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzZXQgb2YgY2hhcmFjdGVycyBpbiAqY2hhcnMqLiBBIHNpbWlsYXIgYWN0aW9uIHRha2VzICcKKyAgICAgICAgICAgICAgICAgICAncGxhY2Ugb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRyYWlsaW5nIGVuZC4gRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gY29tbWVudF9zdHJpbmcgPSAnIy4uLi4uLi4gU2VjdGlvbiAzLjIuMSBJc3N1ZSAiCisgICAgICAgICAgICAgICAgICAgIiMzMiAuLi4uLi4uJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gY29tbWVudF9zdHJpbmcuc3RyaXAoJy4jISAnKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzInXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3dhcGNhc2UoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci50aXRsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyAnCisgICAgICAgICAgICAgICAgICAgJ3N0YXJ0IHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2xvd2VyY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdIZWxsbyB3b3JsZCcudGl0bGUoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnSGVsbG8gV29ybGQnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnd29ya3MgaW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWFueSBjb250ZXh0cyBidXQgaXQgbWVhbnMgdGhhdCBhcG9zdHJvcGhlcyBpbiAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRyYWN0aW9ucyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnZGVzaXJlZFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcyBmcm9tIHRoZSBVSyIudGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgJworICAgICAgICAgICAgICAgICAgICdyZWd1bGFyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGV4cHJlc3Npb25zOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGltcG9ydCByZVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiAnCisgICAgICAgICAgICAgICAgICAgJ21vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgJ21vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci50cmFuc2xhdGUodGFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgaW4gd2hpY2ggZWFjaCBjaGFyYWN0ZXIgaGFzICcKKyAgICAgICAgICAgICAgICAgICAnYmVlbiBtYXBwZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuICBUaGUgdGFibGUgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ2FuIG9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGF0IGltcGxlbWVudHMgaW5kZXhpbmcgdmlhICJfX2dldGl0ZW1fXygpIiwgdHlwaWNhbGx5ICcKKyAgICAgICAgICAgICAgICAgICAnYSAqbWFwcGluZypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3IgKnNlcXVlbmNlKi4gIFdoZW4gaW5kZXhlZCBieSBhIFVuaWNvZGUgb3JkaW5hbCAoYW4gJworICAgICAgICAgICAgICAgICAgICdpbnRlZ2VyKSwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYmxlIG9iamVjdCBjYW4gZG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6IHJldHVybiBhICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZSBvcmRpbmFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9yIGEgc3RyaW5nLCB0byBtYXAgdGhlIGNoYXJhY3RlciB0byBvbmUgb3IgbW9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnM7XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybiAiTm9uZSIsIHRvIGRlbGV0ZSB0aGUgY2hhcmFjdGVyIGZyb20gdGhlIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZzsgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2UgYSAiTG9va3VwRXJyb3IiIGV4Y2VwdGlvbiwgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICd0byBpdHNlbGYuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJ21hcCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTZWUgYWxzbyB0aGUgImNvZGVjcyIgbW9kdWxlIGZvciBhIG1vcmUgZmxleGlibGUgJworICAgICAgICAgICAgICAgICAgICdhcHByb2FjaCB0byBjdXN0b21cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIG1hcHBpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnVwcGVyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIFs0XVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnInN0ci51cHBlcigpLmlzdXBwZXIoKSIgbWlnaHQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIkZhbHNlIiBpZiAicyIgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ1VuaWNvZGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgJworICAgICAgICAgICAgICAgICAgICcoTGV0dGVyLFxuJworICAgICAgICAgICAgICAgICAgICcgICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgICczLjEzIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnpmaWxsKHdpZHRoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggQVNDSUkgJworICAgICAgICAgICAgICAgICAgICciXCcwXCciIGRpZ2l0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBtYWtlIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBBIGxlYWRpbmcgc2lnbiBwcmVmaXhcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKCJcJytcJyIvIlwnLVwnIikgaXMgaGFuZGxlZCBieSBpbnNlcnRpbmcgdGhlIHBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgICcqYWZ0ZXIqIHRoZSBzaWduXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlciByYXRoZXIgdGhhbiBiZWZvcmUuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBpZlxuJworICAgICAgICAgICAgICAgICAgICcgICAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICI0MiIuemZpbGwoNSlcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJzAwMDQyJ1xuIgorICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIi00MiIuemZpbGwoNSlcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJy0wMDQyJ1xuIiwKKyAnc3RyaW5ncyc6ICdcbicKKyAgICAgICAgICAgICdTdHJpbmcgYW5kIEJ5dGVzIGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1N0cmluZyBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgc3RyaW5nbGl0ZXJhbCAgIDo6PSBbc3RyaW5ncHJlZml4XShzaG9ydHN0cmluZyB8IGxvbmdzdHJpbmcpXG4nCisgICAgICAgICAgICAnICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSIgfCAiZiIgfCAiRiJcbicKKyAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgIHwgImZyIiB8ICJGciIgfCAiZlIiIHwgIkZSIiB8ICJyZiIgfCAickYiIHwgJworICAgICAgICAgICAgJyJSZiIgfCAiUkYiXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmcgICAgIDo6PSAiXCciIHNob3J0c3RyaW5naXRlbSogIlwnIiB8IFwnIlwnICcKKyAgICAgICAgICAgICdzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4nCisgICAgICAgICAgICAnICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCAnCisgICAgICAgICAgICAnXCciIiJcJyBsb25nc3RyaW5naXRlbSogXCciIiJcJ1xuJworICAgICAgICAgICAgJyAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIHNob3J0c3RyaW5nY2hhciA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yICcKKyAgICAgICAgICAgICduZXdsaW5lIG9yIHRoZSBxdW90ZT5cbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbicKKyAgICAgICAgICAgICcgICBzdHJpbmdlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBzb3VyY2UgY2hhcmFjdGVyPlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuJworICAgICAgICAgICAgJyAgIGJ5dGVzcHJlZml4ICAgIDo6PSAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiIHwgJworICAgICAgICAgICAgJyJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzICAgICA6Oj0gIlwnIiBzaG9ydGJ5dGVzaXRlbSogIlwnIiB8IFwnIlwnICcKKyAgICAgICAgICAgICdzaG9ydGJ5dGVzaXRlbSogXCciXCdcbicKKyAgICAgICAgICAgICcgICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnICcKKyAgICAgICAgICAgICdsb25nYnl0ZXNpdGVtKiBcJyIiIlwnXG4nCisgICAgICAgICAgICAnICAgc2hvcnRieXRlc2l0ZW0gOjo9IHNob3J0Ynl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgc2hvcnRieXRlc2NoYXIgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgJworICAgICAgICAgICAgJ29yIHRoZSBxdW90ZT5cbicKKyAgICAgICAgICAgICcgICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4nCisgICAgICAgICAgICAnICAgYnl0ZXNlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBBU0NJSSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzICcKKyAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAnd2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZCBiZXR3ZWVuIHRoZSAic3RyaW5ncHJlZml4IiBvciAnCisgICAgICAgICAgICAnImJ5dGVzcHJlZml4IlxuJworICAgICAgICAgICAgJ2FuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IGlzIGRlZmluZWQgJworICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAndGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBVVEYtOCBpZiBubyBlbmNvZGluZyBkZWNsYXJhdGlvbiAnCisgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICdnaXZlbiBpbiB0aGUgc291cmNlIGZpbGU7IHNlZSBzZWN0aW9uIEVuY29kaW5nIGRlY2xhcmF0aW9ucy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiAnCisgICAgICAgICAgICAnbWF0Y2hpbmdcbicKKyAgICAgICAgICAgICdzaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSAnCisgICAgICAgICAgICAnZW5jbG9zZWRcbicKKyAgICAgICAgICAgICdpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlIGFyZVxuJworICAgICAgICAgICAgJ2dlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgJworICAgICAgICAgICAgJ2JhY2tzbGFzaFxuJworICAgICAgICAgICAgJygiXFwiKSBjaGFyYWN0ZXIgaXMgdXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyB0aGF0IG90aGVyd2lzZSBoYXZlICcKKyAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAnc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuJworICAgICAgICAgICAgJ2NoYXJhY3Rlci5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdCeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggIlwnYlwnIiBvciAiXCdCXCciOyB0aGV5ICcKKyAgICAgICAgICAgICdwcm9kdWNlXG4nCisgICAgICAgICAgICAnYW4gaW5zdGFuY2Ugb2YgdGhlICJieXRlcyIgdHlwZSBpbnN0ZWFkIG9mIHRoZSAic3RyIiB0eXBlLiAgVGhleSAnCisgICAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgICAnb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mIDEyOCAnCisgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICdncmVhdGVyIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdBcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCBzdHJpbmcgbGl0ZXJhbHMgJworICAgICAgICAgICAgJ3dpdGggYVxuJworICAgICAgICAgICAgJyJ1IiBwcmVmaXggdG8gc2ltcGxpZnkgbWFpbnRlbmFuY2Ugb2YgZHVhbCAyLnggYW5kIDMueCAnCisgICAgICAgICAgICAnY29kZWJhc2VzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0JvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGFcbicKKyAgICAgICAgICAgICdsZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqICcKKyAgICAgICAgICAgICdhbmQgdHJlYXRcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nICcKKyAgICAgICAgICAgICdsaXRlcmFscyxcbicKKyAgICAgICAgICAgICciXCdcXFVcJyIgYW5kICJcJ1xcdVwnIiBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCAnCisgICAgICAgICAgICAnc3BlY2lhbGx5LlxuJworICAgICAgICAgICAgIkdpdmVuIHRoYXQgUHl0aG9uIDIueCdzIHJhdyB1bmljb2RlIGxpdGVyYWxzIGJlaGF2ZSBkaWZmZXJlbnRseSAiCisgICAgICAgICAgICAndGhhblxuJworICAgICAgICAgICAgJ1B5dGhvbiAzLnhcJ3MgdGhlICJcJ3VyXCciIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzICcKKyAgICAgICAgICAgICdiZWVuXG4nCisgICAgICAgICAgICAnYWRkZWQgYXMgYSBzeW5vbnltIG9mICJcJ2JyXCciLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgdGhlIHVuaWNvZGUgbGVnYWN5IGxpdGVyYWxcbicKKyAgICAgICAgICAgICcoInVcJ3ZhbHVlXCciKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiAnCisgICAgICAgICAgICAnZHVhbFxuJworICAgICAgICAgICAgJ1B5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuIFNlZSAqKlBFUCA0MTQqKiBmb3IgbW9yZSAnCisgICAgICAgICAgICAnaW5mb3JtYXRpb24uXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQSBzdHJpbmcgbGl0ZXJhbCB3aXRoICJcJ2ZcJyIgb3IgIlwnRlwnIiBpbiBpdHMgcHJlZml4IGlzIGEgJworICAgICAgICAgICAgJypmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICdzdHJpbmcgbGl0ZXJhbCo7IHNlZSBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzLiAgVGhlICJcJ2ZcJyIgbWF5ICcKKyAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgJ2NvbWJpbmVkIHdpdGggIlwnclwnIiwgYnV0IG5vdCB3aXRoICJcJ2JcJyIgb3IgIlwndVwnIiwgdGhlcmVmb3JlICcKKyAgICAgICAgICAgICdyYXdcbicKKyAgICAgICAgICAgICdmb3JtYXR0ZWQgc3RyaW5ncyBhcmUgcG9zc2libGUsIGJ1dCBmb3JtYXR0ZWQgYnl0ZXMgbGl0ZXJhbHMgYXJlICcKKyAgICAgICAgICAgICdub3QuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnSW4gdHJpcGxlLXF1b3RlZCBsaXRlcmFscywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlICcKKyAgICAgICAgICAgICdhbGxvd2VkXG4nCisgICAgICAgICAgICAnKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG4nCisgICAgICAgICAgICAndGVybWluYXRlIHRoZSBsaXRlcmFsLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnbGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1VubGVzcyBhbiAiXCdyXCciIG9yICJcJ1JcJyIgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSBzZXF1ZW5jZXMgJworICAgICAgICAgICAgJ2luIHN0cmluZ1xuJworICAgICAgICAgICAgJ2FuZCBieXRlcyBsaXRlcmFscyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gJworICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAndXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICcKKyAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xuJworICAgICAgICAgICAgJ3wgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgJworICAgICAgICAgICAgJygxLDMpICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICcKKyAgICAgICAgICAgICcoMiwzKSAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG4nCisgICAgICAgICAgICAnfCAiXFxOe25hbWV9IiAgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAnCisgICAgICAgICAgICAnKDQpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAnCisgICAgICAgICAgICAnKDUpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxVeHh4eHh4eHgiICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAnCisgICAgICAgICAgICAnKDYpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcyLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgdGhlXG4nCisgICAgICAgICAgICAnICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlc1xuJworICAgICAgICAgICAgJyAgIGRlbm90ZSBhIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbicKKyAgICAgICAgICAgICcgICBhZGRlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICc1LiBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNi4gQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LiAgRXhhY3RseSBlaWdodFxuJworICAgICAgICAgICAgJyAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1VubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgaW4gJworICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJ3N0cmluZyB1bmNoYW5nZWQsIGkuZS4sICp0aGUgYmFja3NsYXNoIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCouICAnCisgICAgICAgICAgICAnKFRoaXNcbicKKyAgICAgICAgICAgICdiZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyAnCisgICAgICAgICAgICAnbWlzdHlwZWQsXG4nCisgICAgICAgICAgICAndGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgaXMgJworICAgICAgICAgICAgJ2Fsc29cbicKKyAgICAgICAgICAgICdpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiAnCisgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAnbGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgJworICAgICAgICAgICAgJ2J5dGVzXG4nCisgICAgICAgICAgICAnbGl0ZXJhbHMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNjogVW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgcHJvZHVjZSAnCisgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgJyAgIERlcHJlY2F0aW9uV2FybmluZy4gIEluIHNvbWUgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uIHRoZXkgJworICAgICAgICAgICAgJ3dpbGwgYmVcbicKKyAgICAgICAgICAgICcgICBhIFN5bnRheEVycm9yLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0V2ZW4gaW4gYSByYXcgbGl0ZXJhbCwgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsICcKKyAgICAgICAgICAgICdidXQgdGhlXG4nCisgICAgICAgICAgICAnYmFja3NsYXNoIHJlbWFpbnMgaW4gdGhlIHJlc3VsdDsgZm9yIGV4YW1wbGUsICJyIlxcIiIiIGlzIGEgJworICAgICAgICAgICAgJ3ZhbGlkXG4nCisgICAgICAgICAgICAnc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgJworICAgICAgICAgICAgJ2RvdWJsZVxuJworICAgICAgICAgICAgJ3F1b3RlOyAiciJcXCIiIGlzIG5vdCBhIHZhbGlkIHN0cmluZyBsaXRlcmFsIChldmVuIGEgcmF3IHN0cmluZyAnCisgICAgICAgICAgICAnY2Fubm90XG4nCisgICAgICAgICAgICAnZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYSByYXcgJworICAgICAgICAgICAgJ2xpdGVyYWxcbicKKyAgICAgICAgICAgICdjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2ggd291bGQgJworICAgICAgICAgICAgJ2VzY2FwZVxuJworICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmcgcXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlICcKKyAgICAgICAgICAgICdiYWNrc2xhc2hcbicKKyAgICAgICAgICAgICdmb2xsb3dlZCBieSBhIG5ld2xpbmUgaXMgaW50ZXJwcmV0ZWQgYXMgdGhvc2UgdHdvIGNoYXJhY3RlcnMgYXMgJworICAgICAgICAgICAgJ3BhcnRcbicKKyAgICAgICAgICAgICdvZiB0aGUgbGl0ZXJhbCwgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCisgJ3N1YnNjcmlwdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnU3Vic2NyaXB0aW9uc1xuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSAnCisgICAgICAgICAgICAgICAgICAnb3IgbGlzdClcbicKKyAgICAgICAgICAgICAgICAgICdvciBtYXBwaW5nIChkaWN0aW9uYXJ5KSBvYmplY3Q6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyAnCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnKGxpc3RzIG9yIGRpY3Rpb25hcmllcyBmb3IgZXhhbXBsZSkuICBVc2VyLWRlZmluZWQgb2JqZWN0cyAnCisgICAgICAgICAgICAgICAgICAnY2FuIHN1cHBvcnRcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb24gYnkgZGVmaW5pbmcgYSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0ZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnc3VwcG9ydFxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcsIHRoZSBleHByZXNzaW9uIGxpc3QgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnZXZhbHVhdGUgdG8gYW5cbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSB2YWx1ZSBpbiB0aGUgbWFwcGluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kcyB0byB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAna2V5LiAgKFRoZSBleHByZXNzaW9uIGxpc3QgaXMgYSB0dXBsZSBleGNlcHQgaWYgaXQgaGFzICcKKyAgICAgICAgICAgICAgICAgICdleGFjdGx5IG9uZVxuJworICAgICAgICAgICAgICAgICAgJ2l0ZW0uKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIHRoZSBwcmltYXJ5IGlzIGEgc2VxdWVuY2UsIHRoZSBleHByZXNzaW9uIChsaXN0KSBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ2FuIGludGVnZXIgb3IgYSBzbGljZSAoYXMgZGlzY3Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24pLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBmb3JtYWwgc3ludGF4IG1ha2VzIG5vIHNwZWNpYWwgcHJvdmlzaW9uIGZvciBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnaW5kaWNlcyBpblxuJworICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgJworICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCB0aGF0IGludGVycHJldHMgbmVnYXRpdmUgaW5kaWNlcyBieSBhZGRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICdsZW5ndGggb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdG8gdGhlIGluZGV4IChzbyB0aGF0ICJ4Wy0xXSIgc2VsZWN0cyB0aGUgbGFzdCAnCisgICAgICAgICAgICAgICAgICAnaXRlbSBvZiAieCIpLlxuJworICAgICAgICAgICAgICAgICAgJ1RoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuICcKKyAgICAgICAgICAgICAgICAgICd0aGUgbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgICAnb2YgaXRlbXMgaW4gdGhlIHNlcXVlbmNlLCBhbmQgdGhlIHN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaXRlbSB3aG9zZVxuJworICAgICAgICAgICAgICAgICAgJ2luZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuIFNpbmNlIHRoZSBzdXBwb3J0ICcKKyAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0J3MgIgorICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgc3ViY2xhc3NlcyBvdmVycmlkaW5nIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCB0byAnCisgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSBhZGRcbicKKyAgICAgICAgICAgICAgICAgICd0aGF0IHN1cHBvcnQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiQSBzdHJpbmcncyBpdGVtcyBhcmUgY2hhcmFjdGVycy4gIEEgY2hhcmFjdGVyIGlzIG5vdCBhICIKKyAgICAgICAgICAgICAgICAgICdzZXBhcmF0ZSBkYXRhXG4nCisgICAgICAgICAgICAgICAgICAndHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKKyAndHJ1dGgnOiAnXG4nCisgICAgICAgICAgJ1RydXRoIFZhbHVlIFRlc3RpbmdcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQW55IG9iamVjdCBjYW4gYmUgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgZm9yIHVzZSBpbiBhbiAiaWYiIG9yXG4nCisgICAgICAgICAgJyJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnZm9sbG93aW5nIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBmYWxzZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogIk5vbmUiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqICJGYWxzZSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgIjAiLCAiMC4wIiwgIjBqIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogYW55IGVtcHR5IHNlcXVlbmNlLCBmb3IgZXhhbXBsZSwgIlwnXCciLCAiKCkiLCAiW10iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuJworICAgICAgICAgICcgICJfX2Jvb2xfXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbicKKyAgICAgICAgICAnICBpbnRlZ2VyIHplcm8gb3IgImJvb2wiIHZhbHVlICJGYWxzZSIuIFsxXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnYWx3YXlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdPcGVyYXRpb25zIGFuZCBidWlsdC1pbiBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgQm9vbGVhbiByZXN1bHQgJworICAgICAgICAgICdhbHdheXNcbicKKyAgICAgICAgICAncmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG4nCisgICAgICAgICAgJ290aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zICcKKyAgICAgICAgICAnIm9yIlxuJworICAgICAgICAgICdhbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKKyAndHJ5JzogJ1xuJworICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuJworICAgICAgICAnZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbicKKyAgICAgICAgJyAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiICcKKyAgICAgICAgJ3N1aXRlKStcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuICcKKyAgICAgICAgJ25vXG4nCisgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG4nCisgICAgICAgICdleGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yICcKKyAgICAgICAgJ2FuXG4nCisgICAgICAgICdleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCAnCisgICAgICAgICdjbGF1c2VzXG4nCisgICAgICAgICdpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuICcKKyAgICAgICAgJ2V4cHJlc3Npb24tXG4nCisgICAgICAgICdsZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbicKKyAgICAgICAgJ2V4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG4nCisgICAgICAgICdpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG4nCisgICAgICAgICdvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG4nCisgICAgICAgICd3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSAnCisgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgJ29iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgJ3N0YWNrLlxuJworICAgICAgICAnWzFdXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0lmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG4nCisgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgJworICAgICAgICAnYW5kXG4nCisgICAgICAgICdhIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxuJworICAgICAgICAndGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgJworICAgICAgICAncmFpc2VkXG4nCisgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbicKKyAgICAgICAgJ3RoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCAnCisgICAgICAgICdpZlxuJworICAgICAgICAicHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG4iCisgICAgICAgICdjbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ3JlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgJworICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAnKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSAnCisgICAgICAgICdleGNlcHRpb24sXG4nCisgICAgICAgICdhbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxuJworICAgICAgICAnb3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nICJhcyB0YXJnZXQiLCBpdCBpcyBjbGVhcmVkXG4nCisgICAgICAgICdhdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAnICAgICAgIGZvb1xuJworICAgICAgICAnXG4nCisgICAgICAgICd3YXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgJyAgICAgICAgICAgZm9vXG4nCisgICAgICAgICcgICAgICAgZmluYWxseTpcbicKKyAgICAgICAgJyAgICAgICAgICAgZGVsIE5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuJworICAgICAgICAnYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbicKKyAgICAgICAgJ2JlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuJworICAgICAgICAnY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG4nCisgICAgICAgICd1bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICJCZWZvcmUgYW4gZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuIgorICAgICAgICAnZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuJworICAgICAgICAnInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuJworICAgICAgICAnc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiB0aGVcbicKKyAgICAgICAgJ3Byb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzIGFyZVxuJworICAgICAgICAncmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG4nCisgICAgICAgICdmcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbicKKyAgICAgICAgJ3RoZSBlbmQgb2YgdGhlICJ0cnkiIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlICJlbHNlIiBjbGF1c2UgYXJlXG4nCisgICAgICAgICdub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nICJleGNlcHQiIGNsYXVzZXMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0lmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlICcKKyAgICAgICAgJyJ0cnkiXG4nCisgICAgICAgICdjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgImV4Y2VwdCIgYW5kICJlbHNlIiBjbGF1c2VzLiAgSWYgJworICAgICAgICAnYW5cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3QgaGFuZGxlZCwgdGhlXG4nCisgICAgICAgICdleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkLiAgJworICAgICAgICAnSWZcbicKKyAgICAgICAgJ3RoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSAnCisgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgJ2NsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlIHNhdmVkXG4nCisgICAgICAgICdleGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiBJZiB0aGUgJworICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICdjbGF1c2UgZXhlY3V0ZXMgYSAicmV0dXJuIiBvciAiYnJlYWsiIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvblxuJworICAgICAgICAnaXMgZGlzY2FyZGVkOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICA+Pj4gZGVmIGYoKTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAnICAgLi4uICAgICAgICAgMS8wXG4nCisgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gNDJcbicKKyAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAnICAgPj4+IGYoKVxuJworICAgICAgICAnICAgNDJcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuJworICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSAiZmluYWxseSIgY2xhdXNlLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdXaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gdGhlXG4nCisgICAgICAgICcidHJ5IiBzdWl0ZSBvZiBhICJ0cnkiLi4uImZpbmFsbHkiIHN0YXRlbWVudCwgdGhlICJmaW5hbGx5IiBjbGF1c2UgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ2Fsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGlsbGVnYWwgJworICAgICAgICAnaW5cbicKKyAgICAgICAgJ3RoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuJworICAgICAgICAnaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlIGxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGxhc3QgInJldHVybiJcbicKKyAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgYVxuJworICAgICAgICAnInJldHVybiIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSAiZmluYWxseSIgY2xhdXNlIHdpbGwgYWx3YXlzIGJlICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnbGFzdCBvbmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgID4+PiBkZWYgZm9vKCk6XG4nCisgICAgICAgICcgICAuLi4gICAgIHRyeTpcbicKKyAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAndHJ5J1xuIgorICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdmaW5hbGx5J1xuIgorICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICcgICA+Pj4gZm9vKClcbicKKyAgICAgICAgIiAgICdmaW5hbGx5J1xuIgorICAgICAgICAnXG4nCisgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgJ0V4Y2VwdGlvbnMsIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG8gJworICAgICAgICAnZ2VuZXJhdGVcbicKKyAgICAgICAgJ2V4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gVGhlIHJhaXNlIHN0YXRlbWVudC5cbicsCisgJ3R5cGVzJzogJ1xuJworICAgICAgICAgICdUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdCZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgJworICAgICAgICAgICdFeHRlbnNpb25cbicKKyAgICAgICAgICAnbW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiB0aGVcbicKKyAgICAgICAgICAnaW1wbGVtZW50YXRpb24pIGNhbiBkZWZpbmUgYWRkaXRpb25hbCB0eXBlcy4gIEZ1dHVyZSB2ZXJzaW9ucyBvZlxuJworICAgICAgICAgICdQeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsICcKKyAgICAgICAgICAnbnVtYmVycyxcbicKKyAgICAgICAgICAnZWZmaWNpZW50bHkgc3RvcmVkIGFycmF5cyBvZiBpbnRlZ2VycywgZXRjLiksIGFsdGhvdWdoIHN1Y2ggJworICAgICAgICAgICdhZGRpdGlvbnNcbicKKyAgICAgICAgICAnd2lsbCBvZnRlbiBiZSBwcm92aWRlZCB2aWEgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW5zdGVhZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuJworICAgICAgICAgICInc3BlY2lhbCBhdHRyaWJ1dGVzLicgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gIgorICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgJworICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgJ21heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ05vbmVcbicKKyAgICAgICAgICAnICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuICcKKyAgICAgICAgICAnSXRcbicKKyAgICAgICAgICAnICAgaXMgdXNlZCB0byBzaWduaWZ5IHRoZSBhYnNlbmNlIG9mIGEgdmFsdWUgaW4gbWFueSBzaXR1YXRpb25zLCAnCisgICAgICAgICAgJ2UuZy4sXG4nCisgICAgICAgICAgIiAgIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm5cbiIKKyAgICAgICAgICAnICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ05vdEltcGxlbWVudGVkXG4nCisgICAgICAgICAgJyAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWVcbicKKyAgICAgICAgICAnICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuJworICAgICAgICAgICcgICBzaG91bGQgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuJworICAgICAgICAgICcgICByZWZsZWN0ZWQgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlXG4nCisgICAgICAgICAgJyAgIG9wZXJhdG9yLikgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2VlIEltcGxlbWVudGluZyB0aGUgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGZvciBtb3JlIGRldGFpbHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdFbGxpcHNpc1xuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsICIuLi4iIG9yIHRoZVxuJworICAgICAgICAgICcgICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyJudW1iZXJzLk51bWJlciJcbicKKyAgICAgICAgICAnICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gICcKKyAgICAgICAgICAnTnVtZXJpY1xuJworICAgICAgICAgICcgICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuJworICAgICAgICAgICcgICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4nCisgICAgICAgICAgJyAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgJworICAgICAgICAgICdyZXByZXNlbnRhdGlvblxuJworICAgICAgICAgICcgICBpbiBjb21wdXRlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICBjb21wbGV4IG51bWJlcnM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5JbnRlZ3JhbCJcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgJworICAgICAgICAgICdpbnRlZ2Vyc1xuJworICAgICAgICAgICcgICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZWdlcnM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBJbnRlZ2VycyAoImludCIpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBUaGVzZSByZXByZXNlbnQgbnVtYmVycyBpbiBhbiB1bmxpbWl0ZWQgcmFuZ2UsIHN1YmplY3QgdG9cbicKKyAgICAgICAgICAnICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiAnCisgICAgICAgICAgJ3NoaWZ0XG4nCisgICAgICAgICAgJyAgICAgICAgIGFuZCBtYXNrIG9wZXJhdGlvbnMsIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGlzIGFzc3VtZWQsICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgIiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyJ3NcbiIKKyAgICAgICAgICAnICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgICAgc2lnbiBiaXRzIGV4dGVuZGluZyB0byB0aGUgbGVmdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEJvb2xlYW5zICgiYm9vbCIpXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuJworICAgICAgICAgICcgICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgb25seSBCb29sZWFuIG9iamVjdHMuIFRoZSBCb29sZWFuIHR5cGUgaXMgYSBzdWJ0eXBlIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgdHlwZSwgYW5kIEJvb2xlYW4gdmFsdWVzIGJlaGF2ZSBsaWtlIHRoZSB2YWx1ZXMgMCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICcgICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyAiIkZhbHNlIiIgb3JcbicKKyAgICAgICAgICAnICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuUmVhbCIgKCJmbG9hdCIpXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBtYWNoaW5lLWxldmVsIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgJworICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICcgICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4nCisgICAgICAgICAgJyAgICAgIGFyY2hpdGVjdHVyZSAoYW5kIEMgb3IgSmF2YSBpbXBsZW1lbnRhdGlvbikgZm9yIHRoZSBhY2NlcHRlZFxuJworICAgICAgICAgICcgICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0ICcKKyAgICAgICAgICAnc2luZ2xlLVxuJworICAgICAgICAgICcgICAgICBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgdGhlIHNhdmluZ3MgaW4gcHJvY2Vzc29yICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGFyZVxuJworICAgICAgICAgICcgICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgJworICAgICAgICAgICdmbG9hdGluZ1xuJworICAgICAgICAgICcgICAgICBwb2ludCBudW1iZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuQ29tcGxleCIgKCJjb21wbGV4IilcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuJworICAgICAgICAgICcgICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzICcKKyAgICAgICAgICAnYXBwbHlcbicKKyAgICAgICAgICAnICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgJworICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgJyAgICAgIGNvbXBsZXggbnVtYmVyICJ6IiBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NlcXVlbmNlc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuJworICAgICAgICAgICcgICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgJworICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICcgICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCAnCisgICAgICAgICAgJ3NldFxuJworICAgICAgICAgICcgICBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2Ygc2VxdWVuY2UgKmEqICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgc2VsZWN0ZWQgYnkgImFbaV0iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4nCisgICAgICAgICAgJyAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqICI8PSIgKmsqICI8IiAqaiouICBXaGVuIHVzZWQgYXMgYW5cbicKKyAgICAgICAgICAnICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzICcKKyAgICAgICAgICAnaW1wbGllc1xuJworICAgICAgICAgICcgICB0aGF0IHRoZSBpbmRleCBzZXQgaXMgcmVudW1iZXJlZCBzbyB0aGF0IGl0IHN0YXJ0cyBhdCAwLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgJworICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAnICAgcGFyYW1ldGVyOiAiYVtpOmo6a10iIHNlbGVjdHMgYWxsIGl0ZW1zIG9mICphKiB3aXRoIGluZGV4ICp4KiAnCisgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgJyAgICJ4ID0gaSArIG4qayIsICpuKiAiPj0iICIwIiBhbmQgKmkqICI8PSIgKngqICI8IiAqaiouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBJbW11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciAnCisgICAgICAgICAgJ29iamVjdHMsXG4nCisgICAgICAgICAgJyAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyAnCisgICAgICAgICAgJ2hvd2V2ZXIsXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3RyaW5nc1xuJworICAgICAgICAgICcgICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlICcKKyAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICcgICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSAnCisgICAgICAgICAgJ1UrMTBGRkZGIlxuJworICAgICAgICAgICIgICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc24ndCBoYXZlIGEgIgorICAgICAgICAgICciY2hhciJcbicKKyAgICAgICAgICAnICAgICAgICAgdHlwZTsgaW5zdGVhZCwgZXZlcnkgY29kZSBwb2ludCBpbiB0aGUgc3RyaW5nIGlzICcKKyAgICAgICAgICAncmVwcmVzZW50ZWRcbicKKyAgICAgICAgICAnICAgICAgICAgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoICIxIi4gIFRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIjsgImNocigpIiBjb252ZXJ0cyBhblxuJworICAgICAgICAgICcgICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICdsZW5ndGhcbicKKyAgICAgICAgICAnICAgICAgICAgIjEiIHN0cmluZyBvYmplY3QuICJzdHIuZW5jb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuJworICAgICAgICAgICcgICAgICAgICAiYnl0ZXMuZGVjb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIG9wcG9zaXRlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVHVwbGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4nCisgICAgICAgICAgIiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSAnc2luZ2xldG9uJykgY2FuIGJlXG4iCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbicKKyAgICAgICAgICAnICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEJ5dGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgJworICAgICAgICAgICc4LWJpdFxuJworICAgICAgICAgICcgICAgICAgICBieXRlcywgcmVwcmVzZW50ZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cbicKKyAgICAgICAgICAnICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgICAgICJieXRlcygpIiBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gIEFsc28sXG4nCisgICAgICAgICAgJyAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICcKKyAgICAgICAgICAnImRlY29kZSgpIlxuJworICAgICAgICAgICcgICAgICAgICBtZXRob2QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBNdXRhYmxlIHNlcXVlbmNlc1xuJworICAgICAgICAgICcgICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnICAgICAgc3Vic2NyaXB0aW9uIGFuZCBzbGljaW5nIG5vdGF0aW9ucyBjYW4gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0ICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTGlzdHNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgbGlzdCBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTGlzdHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyAnCisgICAgICAgICAgJ25lZWRlZFxuJworICAgICAgICAgICcgICAgICAgICB0byBmb3JtIGxpc3RzIG9mIGxlbmd0aCAwIG9yIDEuKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQnl0ZSBBcnJheXNcbicKKyAgICAgICAgICAnICAgICAgICAgQSBieXRlYXJyYXkgb2JqZWN0IGlzIGEgbXV0YWJsZSBhcnJheS4gVGhleSBhcmUgY3JlYXRlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBidWlsdC1pbiAiYnl0ZWFycmF5KCkiIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuJworICAgICAgICAgICcgICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSAnCisgICAgICAgICAgJ3Byb3ZpZGVcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuJworICAgICAgICAgICcgICAgICAgICBvYmplY3RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgImFycmF5IiBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGV4YW1wbGUgJworICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgJyAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTZXQgdHlwZXNcbicKKyAgICAgICAgICAnICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiAnCisgICAgICAgICAgJ0hvd2V2ZXIsXG4nCisgICAgICAgICAgJyAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuJworICAgICAgICAgICcgICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSAnCisgICAgICAgICAgJ2Zhc3RcbicKKyAgICAgICAgICAnICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4nCisgICAgICAgICAgJyAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4nCisgICAgICAgICAgJyAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbicKKyAgICAgICAgICAnICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kXG4nCisgICAgICAgICAgJyAgICIxLjAiKSwgb25seSBvbmUgb2YgdGhlbSBjYW4gYmUgY29udGFpbmVkIGluIGEgc2V0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNldHNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlICcKKyAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAnICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgJworICAgICAgICAgICdzZXZlcmFsXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgImFkZCgpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZyb3plbiBzZXRzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbicKKyAgICAgICAgICAnICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIGFuZCAqaGFzaGFibGUqLCBpdCBjYW4gYmUgdXNlZCBhZ2FpbiBhcyBhbiBlbGVtZW50IG9mICcKKyAgICAgICAgICAnYW5vdGhlclxuJworICAgICAgICAgICcgICAgICBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdNYXBwaW5nc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSAnCisgICAgICAgICAgJ2luZGV4XG4nCisgICAgICAgICAgJyAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAnCisgICAgICAgICAgJyJrIlxuJworICAgICAgICAgICcgICBmcm9tIHRoZSBtYXBwaW5nICJhIjsgdGhpcyBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9ucyBhbmQgYXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yICJkZWwiIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRGljdGlvbmFyaWVzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4nCisgICAgICAgICAgJyAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgJworICAgICAgICAgICdhc1xuJworICAgICAgICAgICcgICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgICAgICBkaWN0aW9uYXJpZXMgcmVxdWlyZXMgYSBrZXkncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiIKKyAgICAgICAgICAnICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgJworICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgJyAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmQgJworICAgICAgICAgICciMS4wIilcbicKKyAgICAgICAgICAnICAgICAgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuJworICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5IGVudHJ5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSAiey4uLn0iXG4nCisgICAgICAgICAgJyAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiBEaWN0aW9uYXJ5IGRpc3BsYXlzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuJworICAgICAgICAgICcgICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlICcKKyAgICAgICAgICAnImNvbGxlY3Rpb25zIlxuJworICAgICAgICAgICcgICAgICBtb2R1bGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDYWxsYWJsZSB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4nCisgICAgICAgICAgJyAgIHNlY3Rpb24gQ2FsbHMpIGNhbiBiZSBhcHBsaWVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIGRlZmluaXRpb24gKHNlZSBzZWN0aW9uIEZ1bmN0aW9uIGRlZmluaXRpb25zKS4gIEl0IHNob3VsZCBiZVxuJworICAgICAgICAgICcgICAgICBjYWxsZWQgd2l0aCBhbiBhcmd1bWVudCBsaXN0IGNvbnRhaW5pbmcgdGhlIHNhbWUgbnVtYmVyIG9mICcKKyAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAiICAgICAgYXMgdGhlIGZ1bmN0aW9uJ3MgZm9ybWFsIHBhcmFtZXRlciBsaXN0LlxuIgorICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8IEF0dHJpYnV0ZSAgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kb2NfXyIgICAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICcKKyAgICAgICAgICAnZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nLCBvciAiTm9uZSIgaWYgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN1YmNsYXNzZXMgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgJworICAgICAgICAgICduYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fcXVhbG5hbWVfXyIgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAqcXVhbGlmaWVkICcKKyAgICAgICAgICAnbmFtZSogfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX21vZHVsZV9fIiAgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciB0aG9zZSAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIGJvZHkuICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgJworICAgICAgICAgICd8IFJlYWQtb25seSAgIHxcbicKKyAgICAgICAgICAiICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgZnVuY3Rpb24ncyAgICAgICAiCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnbG9iYWwgdmFyaWFibGVzIC0tLSB0aGUgZ2xvYmFsICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZGljdF9fIiAgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fY2xvc3VyZV9fIiAgICAgICAgICAgICB8ICJOb25lIiBvciBhIHR1cGxlIG9mIGNlbGxzIHRoYXQgJworICAgICAgICAgICd8IFJlYWQtb25seSAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICIgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbidzIGZyZWUgdmFyaWFibGVzLiAgICAgICIKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19hbm5vdGF0aW9uc19fIiAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpY3QgYXJlIHRoZSBwYXJhbWV0ZXIgbmFtZXMsICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kICJcJ3JldHVyblwnIiBmb3IgdGhlICcKKyAgICAgICAgICAncmV0dXJuICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2t3ZGVmYXVsdHNfXyIgICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTW9zdCBvZiB0aGUgYXR0cmlidXRlcyBsYWJlbGxlZCAiV3JpdGFibGUiIGNoZWNrIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIGFzc2lnbmVkIHZhbHVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggJworICAgICAgICAgICdtZXRhZGF0YVxuJworICAgICAgICAgICcgICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgc2V0IHN1Y2ggYXR0cmlidXRlcy4gKk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAnCisgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAnICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAnCisgICAgICAgICAgJ0Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGZ1dHVyZS4qXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb24ncyBkZWZpbml0aW9uIGNhbiBiZVxuIgorICAgICAgICAgICcgICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgJworICAgICAgICAgICdpbnRlcm5hbFxuJworICAgICAgICAgICcgICAgICB0eXBlcyBiZWxvdy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEluc3RhbmNlIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJfX3NlbGZfXyIgaXMgdGhlIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCAiX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBvYmplY3Q7ICJfX2RvY19fIiBpcyB0aGVcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kXCdzIGRvY3VtZW50YXRpb24gKHNhbWUgYXMgIl9fZnVuY19fLl9fZG9jX18iKTsgJworICAgICAgICAgICciX19uYW1lX18iXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSBtZXRob2QgbmFtZSAoc2FtZSBhcyAiX19mdW5jX18uX19uYW1lX18iKTsgJworICAgICAgICAgICciX19tb2R1bGVfXyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAnCisgICAgICAgICAgJyJOb25lIlxuJworICAgICAgICAgICcgICAgICBpZiB1bmF2YWlsYWJsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgJworICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgJworICAgICAgICAgICdpZlxuJworICAgICAgICAgICcgICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSBjbGFzc1xuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhICcKKyAgICAgICAgICAndXNlci1cbicKKyAgICAgICAgICAnICAgICAgZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgZnJvbSBhIGNsYXNzIHZpYSBvbmUgb2YgaXRzICcKKyAgICAgICAgICAnaW5zdGFuY2VzLFxuJworICAgICAgICAgICcgICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpcyBzYWlkIHRvIGJlIGJvdW5kLiAgVGhlIG5ldyBtZXRob2RcJ3MgIl9fZnVuY19fIiBhdHRyaWJ1dGUgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuJworICAgICAgICAgICcgICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgJworICAgICAgICAgICciX19mdW5jX18iXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgbmV3IGluc3RhbmNlIGlzIG5vdCB0aGUgb3JpZ2luYWwgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGJ1dCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgJworICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgaXRzICJfX3NlbGZfXyIgJworICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpcyB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gb2JqZWN0IHVuZGVybHlpbmcgdGhlIGNsYXNzIG1ldGhvZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZSB1bmRlcmx5aW5nXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uICgiX19mdW5jX18iKSBpcyBjYWxsZWQsIGluc2VydGluZyB0aGUgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICAoIl9fc2VsZl9fIikgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsICcKKyAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICcgICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gJworICAgICAgICAgICciZigpIixcbicKKyAgICAgICAgICAnICAgICAgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiAiQyIsIGNhbGxpbmcgInguZigxKSIgaXMgZXF1aXZhbGVudCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxpbmcgIkMuZih4LCAxKSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgJworICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gIl9fc2VsZl9fIiB3aWxsICcKKyAgICAgICAgICAnYWN0dWFsbHlcbicKKyAgICAgICAgICAnICAgICAgYmUgdGhlIGNsYXNzIGl0c2VsZiwgc28gdGhhdCBjYWxsaW5nIGVpdGhlciAieC5mKDEpIiBvciAnCisgICAgICAgICAgJyJDLmYoMSkiXG4nCisgICAgICAgICAgJyAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlICcKKyAgICAgICAgICAndW5kZXJseWluZ1xuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkICcKKyAgICAgICAgICAnZnJvbVxuJworICAgICAgICAgICcgICAgICB0aGUgaW5zdGFuY2UuICBJbiBzb21lIGNhc2VzLCBhIGZydWl0ZnVsIG9wdGltaXphdGlvbiBpcyB0b1xuJworICAgICAgICAgICcgICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuJworICAgICAgICAgICcgICAgICBtZXRob2RzOyB0aGlzICpvbmx5KiBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFuICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJyAgICAgIG9mIHRoZSBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgInlpZWxkIiBzdGF0ZW1lbnQgKHNlZVxuJworICAgICAgICAgICcgICAgICBzZWN0aW9uIFRoZSB5aWVsZCBzdGF0ZW1lbnQpIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgJworICAgICAgICAgICdmdW5jdGlvbiouXG4nCisgICAgICAgICAgJyAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgJworICAgICAgICAgICdjYWxsaW5nXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBpdGVyYXRvclwncyAiaXRlcmF0b3IuX19uZXh0X18oKSIgbWV0aG9kIHdpbGwgY2F1c2UgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgJworICAgICAgICAgICcieWllbGQiXG4nCisgICAgICAgICAgJyAgICAgIHN0YXRlbWVudC4gIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgInJldHVybiIgc3RhdGVtZW50ICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIGl0ZXJhdG9yIHdpbGwgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHNldCBvZiB2YWx1ZXMgdG8gJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICByZXR1cm5lZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENvcm91dGluZSBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggaXMgZGVmaW5lZCB1c2luZyAiYXN5bmMgZGVmIiBpc1xuJworICAgICAgICAgICcgICAgICBjYWxsZWQgYSAqY29yb3V0aW5lIGZ1bmN0aW9uKi4gIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiAnCisgICAgICAgICAgJ2NhbGxlZCxcbicKKyAgICAgICAgICAnICAgICAgcmV0dXJucyBhICpjb3JvdXRpbmUqIG9iamVjdC4gIEl0IG1heSBjb250YWluICJhd2FpdCJcbicKKyAgICAgICAgICAnICAgICAgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgImFzeW5jIHdpdGgiIGFuZCAiYXN5bmMgZm9yIiAnCisgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgJyAgICAgIFNlZSBhbHNvIHRoZSBDb3JvdXRpbmUgT2JqZWN0cyBzZWN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuJworICAgICAgICAgICcgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlICJsZW4oKSIgYW5kICJtYXRoLnNpbigpIlxuJworICAgICAgICAgICcgICAgICAoIm1hdGgiIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgJworICAgICAgICAgICdyZWFkLVxuJworICAgICAgICAgICcgICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuJworICAgICAgICAgICcgICAgICBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZTsgIl9fbmFtZV9fIiBpcyB0aGUgJworICAgICAgICAgICJmdW5jdGlvbidzXG4iCisgICAgICAgICAgJyAgICAgIG5hbWU7ICJfX3NlbGZfXyIgaXMgc2V0IHRvICJOb25lIiAoYnV0IHNlZSB0aGUgbmV4dCBpdGVtKTtcbicKKyAgICAgICAgICAnICAgICAgIl9fbW9kdWxlX18iIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGZ1bmN0aW9uIHdhcyAnCisgICAgICAgICAgJ2RlZmluZWRcbicKKyAgICAgICAgICAnICAgICAgaW4gb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQnVpbHQtaW4gbWV0aG9kc1xuJworICAgICAgICAgICcgICAgICBUaGlzIGlzIHJlYWxseSBhIGRpZmZlcmVudCBkaXNndWlzZSBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uLCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbicKKyAgICAgICAgICAnICAgICAgaW1wbGljaXQgZXh0cmEgYXJndW1lbnQuICBBbiBleGFtcGxlIG9mIGEgYnVpbHQtaW4gbWV0aG9kIGlzXG4nCisgICAgICAgICAgJyAgICAgICJhbGlzdC5hcHBlbmQoKSIsIGFzc3VtaW5nICphbGlzdCogaXMgYSBsaXN0IG9iamVjdC4gSW4gdGhpc1xuJworICAgICAgICAgICcgICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzc2VzXG4nCisgICAgICAgICAgJyAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgJworICAgICAgICAgICdmYWN0b3JpZXNcbicKKyAgICAgICAgICAnICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuJworICAgICAgICAgICcgICAgICBjYWxsIGFyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuJworICAgICAgICAgICcgICAgICAiX19pbml0X18oKSIgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3MgSW5zdGFuY2VzXG4nCisgICAgICAgICAgJyAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSAnCisgICAgICAgICAgJ2RlZmluaW5nXG4nCisgICAgICAgICAgJyAgICAgIGEgIl9fY2FsbF9fKCkiIG1ldGhvZCBpbiB0aGVpciBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ01vZHVsZXNcbicKKyAgICAgICAgICAnICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgYXJlXG4nCisgICAgICAgICAgJyAgIGNyZWF0ZWQgYnkgdGhlIGltcG9ydCBzeXN0ZW0gYXMgaW52b2tlZCBlaXRoZXIgYnkgdGhlICJpbXBvcnQiXG4nCisgICAgICAgICAgJyAgIHN0YXRlbWVudCAoc2VlICJpbXBvcnQiKSwgb3IgYnkgY2FsbGluZyBmdW5jdGlvbnMgc3VjaCBhc1xuJworICAgICAgICAgICcgICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSAnCisgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICcgICBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSAiX19nbG9iYWxzX18iIGF0dHJpYnV0ZSBvZlxuJworICAgICAgICAgICcgICBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZVxuJworICAgICAgICAgICcgICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyAnCisgICAgICAgICAgJ2VxdWl2YWxlbnRcbicKKyAgICAgICAgICAnICAgdG8gIm0uX19kaWN0X19bIngiXSIuIEEgbW9kdWxlIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHRoZSBjb2RlXG4nCisgICAgICAgICAgIiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuJ3QgbmVlZGVkICIKKyAgICAgICAgICAnb25jZVxuJworICAgICAgICAgICcgICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiIKKyAgICAgICAgICAnICAgZS5nLiwgIm0ueCA9IDEiIGlzIGVxdWl2YWxlbnQgdG8gIm0uX19kaWN0X19bIngiXSA9IDEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyAnCisgICAgICAgICAgJ25hbWU7XG4nCisgICAgICAgICAgJyAgICJfX2RvY19fIiBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciAiTm9uZSIgaWZcbicKKyAgICAgICAgICAnICAgdW5hdmFpbGFibGU7ICJfX2Fubm90YXRpb25zX18iIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgJyAgIGNvbnRhaW5pbmcgKnZhcmlhYmxlIGFubm90YXRpb25zKiBjb2xsZWN0ZWQgZHVyaW5nIG1vZHVsZSBib2R5XG4nCisgICAgICAgICAgJyAgIGV4ZWN1dGlvbjsgIl9fZmlsZV9fIiBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgJworICAgICAgICAgICdDXG4nCisgICAgICAgICAgJyAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuJworICAgICAgICAgICcgICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogIl9fZGljdF9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgJyAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4nCisgICAgICAgICAgJyAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSAnCisgICAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgICAnICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsICcKKyAgICAgICAgICAnaGFzXG4nCisgICAgICAgICAgJyAgIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkgb3Iga2VlcCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ3VzdG9tIGNsYXNzZXNcbicKKyAgICAgICAgICAnICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAnCisgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAnICAgc2VjdGlvbiBDbGFzcyBkZWZpbml0aW9ucykuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgIGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgICAnICAgIkMuX19kaWN0X19bIngiXSIgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaCAnCisgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgJyAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICBub3QgZm91bmQgdGhlcmUsIHRoZSBhdHRyaWJ1dGUgc2VhcmNoIGNvbnRpbnVlcyBpbiB0aGUgYmFzZVxuJworICAgICAgICAgICcgICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuJworICAgICAgICAgICcgICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAiICAgJ2RpYW1vbmQnIGluaGVyaXRhbmNlIHN0cnVjdHVyZXMgd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlXG4iCisgICAgICAgICAgJyAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuJworICAgICAgICAgICcgICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuJworICAgICAgICAgICcgICBkb2N1bWVudGF0aW9uIGFjY29tcGFueWluZyB0aGUgMi4zIHJlbGVhc2UgYXRcbicKKyAgICAgICAgICAnICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgIkMiLCBzYXkpIHdvdWxkICcKKyAgICAgICAgICAneWllbGQgYVxuJworICAgICAgICAgICcgICBjbGFzcyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZFxuJworICAgICAgICAgICcgICBvYmplY3Qgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGVzIGlzICJDIi4gIFdoZW4gaXQgd291bGQgeWllbGQgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXkgJworICAgICAgICAgICdkaWZmZXJcbicKKyAgICAgICAgICAnICAgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzcydzIGRpY3Rpb25hcnksICIKKyAgICAgICAgICAnbmV2ZXJcbicKKyAgICAgICAgICAnICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIGNsYXNzIG5hbWU7ICJfX21vZHVsZV9fIiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7ICJfX2RpY3RfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgJworICAgICAgICAgICd0dXBsZVxuJworICAgICAgICAgICcgICAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyAiX19kb2NfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAiICAgY2xhc3MncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZiB1bmRlZmluZWQ7XG4iCisgICAgICAgICAgJyAgICJfX2Fubm90YXRpb25zX18iIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgJworICAgICAgICAgICcqdmFyaWFibGVcbicKKyAgICAgICAgICAnICAgYW5ub3RhdGlvbnMqIGNvbGxlY3RlZCBkdXJpbmcgY2xhc3MgYm9keSBleGVjdXRpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBpbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSAnCisgICAgICAgICAgJ2Fib3ZlKS5cbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAnICAgaXMgdGhlIGZpcnN0IHBsYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSBzZWFyY2hlZC5cbicKKyAgICAgICAgICAiICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlJ3MgY2xhc3MgIgorICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAnICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSAnCisgICAgICAgICAgJ3VzZXItZGVmaW5lZFxuJworICAgICAgICAgICcgICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgIHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbicKKyAgICAgICAgICAnICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzIGZvciBhbm90aGVyIHdheSAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5ICcKKyAgICAgICAgICAnZGlmZmVyXG4nCisgICAgICAgICAgJyAgIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wncyAiX19kaWN0X18iLiAgSWYgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICIgICBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0J3MgY2xhc3MgaGFzIGFcbiIKKyAgICAgICAgICAnICAgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGUgbG9va3VwLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZSdzXG4iCisgICAgICAgICAgIiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3MncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4iCisgICAgICAgICAgJyAgICJfX3NldGF0dHJfXygpIiBvciAiX19kZWxhdHRyX18oKSIgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZCAnCisgICAgICAgICAgJ2luc3RlYWRcbicKKyAgICAgICAgICAnICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciAnCisgICAgICAgICAgJ21hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbicKKyAgICAgICAgICAnICAgU3BlY2lhbCBtZXRob2QgbmFtZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuJworICAgICAgICAgICcgICAiX19jbGFzc19fIiBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4nCisgICAgICAgICAgJyAgIEEgKmZpbGUgb2JqZWN0KiByZXByZXNlbnRzIGFuIG9wZW4gZmlsZS4gIFZhcmlvdXMgc2hvcnRjdXRzIGFyZVxuJworICAgICAgICAgICcgICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlICJvcGVuKCkiIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgJyAgIGFuZCBhbHNvICJvcy5wb3BlbigpIiwgIm9zLmZkb3BlbigpIiwgYW5kIHRoZSAibWFrZWZpbGUoKSIgJworICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAnICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4nCisgICAgICAgICAgJyAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbicKKyAgICAgICAgICAiICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyJ3NcbiIKKyAgICAgICAgICAnICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gJworICAgICAgICAgICd0ZXh0XG4nCisgICAgICAgICAgJyAgIG1vZGUgYW5kIHRoZXJlZm9yZSBmb2xsb3cgdGhlIGludGVyZmFjZSBkZWZpbmVkIGJ5IHRoZVxuJworICAgICAgICAgICcgICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJbnRlcm5hbCB0eXBlc1xuJworICAgICAgICAgICcgICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4nCisgICAgICAgICAgJyAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENvZGUgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiAnCisgICAgICAgICAgJ2NvZGUsXG4nCisgICAgICAgICAgJyAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuICcKKyAgICAgICAgICAnZXhwbGljaXRcbicKKyAgICAgICAgICAiICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbidzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgIgorICAgICAgICAgICd3YXNcbicKKyAgICAgICAgICAnICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbicKKyAgICAgICAgICAnICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCAnCisgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICcgICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgJworICAgICAgICAgICdhdFxuJworICAgICAgICAgICcgICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byAnCisgICAgICAgICAgJ211dGFibGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJjb19uYW1lIiBnaXZlcyB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICduYW1lO1xuJworICAgICAgICAgICcgICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICcoaW5jbHVkaW5nXG4nCisgICAgICAgICAgJyAgICAgIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzKTsgImNvX25sb2NhbHMiIGlzIHRoZSBudW1iZXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZyBhcmd1bWVudHMpO1xuJworICAgICAgICAgICcgICAgICAiY29fdmFybmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGxvY2FsXG4nCisgICAgICAgICAgJyAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiICcKKyAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICcgICAgICB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMgdGhhdCBhcmVcbicKKyAgICAgICAgICAnICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbicKKyAgICAgICAgICAnICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZSB2YXJpYWJsZXM7ICJjb19jb2RlIiBpcyBhICcKKyAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgJyAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAnCisgICAgICAgICAgJyJjb19jb25zdHMiXG4nCisgICAgICAgICAgJyAgICAgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSAnCisgICAgICAgICAgJ2J5dGVjb2RlO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlsZW5hbWUiIGlzIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyAnCisgICAgICAgICAgJ2NvbXBpbGVkO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlyc3RsaW5lbm8iIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4nCisgICAgICAgICAgJyAgICAgICJjb19sbm90YWIiIGlzIGEgc3RyaW5nIGVuY29kaW5nIHRoZSBtYXBwaW5nIGZyb20gYnl0ZWNvZGVcbicKKyAgICAgICAgICAnICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgaW50ZXJwcmV0ZXIpOyAiY29fc3RhY2tzaXplIiBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuJworICAgICAgICAgICcgICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciAnCisgICAgICAgICAgJ2VuY29kaW5nIGFcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgImNvX2ZsYWdzIjogYml0ICcKKyAgICAgICAgICAnIjB4MDQiXG4nCisgICAgICAgICAgJyAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgJworICAgICAgICAgICdhblxuJworICAgICAgICAgICcgICAgICBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXQgIjB4MDgiIGlzIHNldCAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKiprZXl3b3JkcyIgc3ludGF4IHRvIGFjY2VwdCAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbicKKyAgICAgICAgICAnICAgICAgZ2VuZXJhdG9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCAnCisgICAgICAgICAgJ2RpdmlzaW9uIilcbicKKyAgICAgICAgICAnICAgICAgYWxzbyB1c2UgYml0cyBpbiAiY29fZmxhZ3MiIHRvIGluZGljYXRlIHdoZXRoZXIgYSBjb2RlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdCAiMHgyMDAwIiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uICcKKyAgICAgICAgICAnZW5hYmxlZDtcbicKKyAgICAgICAgICAnICAgICAgYml0cyAiMHgxMCIgYW5kICIweDEwMDAiIHdlcmUgdXNlZCBpbiBlYXJsaWVyIHZlcnNpb25zIG9mXG4nCisgICAgICAgICAgJyAgICAgIFB5dGhvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE90aGVyIGJpdHMgaW4gImNvX2ZsYWdzIiBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuJworICAgICAgICAgICcgICAgICAiY29fY29uc3RzIiBpcyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlIGZ1bmN0aW9uLCBvclxuJworICAgICAgICAgICcgICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRnJhbWUgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgJworICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICcgICAgICBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgIk5vbmUiIGlmIHRoaXMgaXMgdGhlIGJvdHRvbVxuJworICAgICAgICAgICcgICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICBmcmFtZTsgImZfbG9jYWxzIiBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXAgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuJworICAgICAgICAgICcgICAgICAiZl9idWlsdGlucyIgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7ICcKKyAgICAgICAgICAnImZfbGFzdGkiXG4nCisgICAgICAgICAgJyAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uICcKKyAgICAgICAgICAnanVtcHNcbicKKyAgICAgICAgICAnICAgICAgdG8gdGhlIGdpdmVuIGxpbmUgKG9ubHkgZm9yIHRoZSBib3R0b20tbW9zdCBmcmFtZSkuICBBICcKKyAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAnICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgJworICAgICAgICAgICd3cml0aW5nXG4nCisgICAgICAgICAgJyAgICAgIHRvIGZfbGluZW5vLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnJhbWUgb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBmcmFtZS5jbGVhcigpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBUaGlzIG1ldGhvZCBjbGVhcnMgYWxsIHJlZmVyZW5jZXMgdG8gbG9jYWwgdmFyaWFibGVzIGhlbGQgJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgZnJhbWUuICBBbHNvLCBpZiB0aGUgZnJhbWUgYmVsb25nZWQgdG8gYSBnZW5lcmF0b3IsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSAnCisgICAgICAgICAgJ2N5Y2xlc1xuJworICAgICAgICAgICcgICAgICAgICBpbnZvbHZpbmcgZnJhbWUgb2JqZWN0cyAoZm9yIGV4YW1wbGUgd2hlbiBjYXRjaGluZyBhblxuJworICAgICAgICAgICcgICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgICJSdW50aW1lRXJyb3IiIGlzIHJhaXNlZCBpZiB0aGUgZnJhbWUgaXMgY3VycmVudGx5ICcKKyAgICAgICAgICAnZXhlY3V0aW5nLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgTmV3IGluIHZlcnNpb24gMy40LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgJworICAgICAgICAgICdBXG4nCisgICAgICAgICAgJyAgICAgIHRyYWNlYmFjayBvYmplY3QgaXMgY3JlYXRlZCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuICBXaGVuICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCAnCisgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgJyAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICB0aGUgY3VycmVudCB0cmFjZWJhY2suICBXaGVuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzICcKKyAgICAgICAgICAnZW50ZXJlZCxcbicKKyAgICAgICAgICAnICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICcgICAgICBUaGUgdHJ5IHN0YXRlbWVudC4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgJyAgICAgIHN1aXRhYmxlIGhhbmRsZXIsIHRoZSBzdGFjayB0cmFjZSBpcyB3cml0dGVuIChuaWNlbHkgJworICAgICAgICAgICdmb3JtYXR0ZWQpXG4nCisgICAgICAgICAgJyAgICAgIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpcyAnCisgICAgICAgICAgJ2ludGVyYWN0aXZlLFxuJworICAgICAgICAgICcgICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICcKKyAgICAgICAgICAnInN5cy5sYXN0X3RyYWNlYmFjayIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQpLCAnCisgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgJyAgICAgICJOb25lIiBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyAidGJfZnJhbWUiIHBvaW50cyB0byB0aGVcbicKKyAgICAgICAgICAnICAgICAgZXhlY3V0aW9uIGZyYW1lIG9mIHRoZSBjdXJyZW50IGxldmVsOyAidGJfbGluZW5vIiBnaXZlcyB0aGUgJworICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgJyAgICAgIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkOyAidGJfbGFzdGkiIGluZGljYXRlcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAnICAgICAgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTbGljZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgJworICAgICAgICAgICciX19nZXRpdGVtX18oKSJcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gInNsaWNlKCkiXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInN0YXJ0IiBpcyB0aGUgbG93ZXIgYm91bmQ7ICcKKyAgICAgICAgICAnInN0b3AiXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIG9taXR0ZWQuICBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBoYXZlIGFueSB0eXBlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgKmxlbmd0aCogYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICAgICB3b3VsZCBkZXNjcmliZSBpZiBhcHBsaWVkIHRvIGEgc2VxdWVuY2Ugb2YgKmxlbmd0aCogJworICAgICAgICAgICdpdGVtcy5cbicKKyAgICAgICAgICAnICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuJworICAgICAgICAgICcgICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgaGFuZGxlZCBpbiBhIG1hbm5lciBjb25zaXN0ZW50IHdpdGggcmVndWxhciBzbGljZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgU3RhdGljIG1ldGhvZCBvYmplY3RzIHByb3ZpZGUgYSB3YXkgb2YgZGVmZWF0aW5nIHRoZVxuJworICAgICAgICAgICcgICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzICcKKyAgICAgICAgICAnZGVzY3JpYmVkXG4nCisgICAgICAgICAgJyAgICAgIGFib3ZlLiBBIHN0YXRpYyBtZXRob2Qgb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYW55IG90aGVyXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbicKKyAgICAgICAgICAnICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJyAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgJworICAgICAgICAgICd1c3VhbGx5XG4nCisgICAgICAgICAgJyAgICAgIGFyZS4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuJworICAgICAgICAgICcgICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgJworICAgICAgICAgICd3cmFwcGVyXG4nCisgICAgICAgICAgJyAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4nCisgICAgICAgICAgJyAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSAnCisgICAgICAgICAgJ2NyZWF0ZWRcbicKKyAgICAgICAgICAnICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCisgJ3R5cGVzZnVuY3Rpb25zJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdGdW5jdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdGdW5jdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogJworICAgICAgICAgICAgICAgICAgICciZnVuYyhhcmd1bWVudC1saXN0KSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgcmVhbGx5IHR3byBmbGF2b3JzIG9mIGZ1bmN0aW9uIG9iamVjdHM6IGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAgJ2FuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uICh0byBjYWxsXG4nCisgICAgICAgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgb2JqZWN0IHR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU2VlIEZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKKyAndHlwZXNtYXBwaW5nJzogJ1xuJworICAgICAgICAgICAgICAgICAnTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdNYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lICcKKyAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgICAgICdtYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBidWlsdC1cbicKKyAgICAgICAgICAgICAgICAgJ2luICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJBIGRpY3Rpb25hcnkncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzICIKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYXJlXG4nCisgICAgICAgICAgICAgICAgICdub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcyBvclxuJworICAgICAgICAgICAgICAgICAnb3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gJworICAgICAgICAgICAgICAgICAnYnkgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICdpZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2tleXMgb2JleVxuJworICAgICAgICAgICAgICAgICAndGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyAnCisgICAgICAgICAgICAgICAgICdjb21wYXJlIGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcoc3VjaCBhcyAiMSIgYW5kICIxLjAiKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAnaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4XG4nCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSAnCisgICAgICAgICAgICAgICAgICdjb21wdXRlcnMgc3RvcmVcbicKKyAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSAnCisgICAgICAgICAgICAgICAgICd1bndpc2UgdG8gdXNlXG4nCisgICAgICAgICAgICAgICAgICd0aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkICcKKyAgICAgICAgICAgICAgICAgJ2xpc3Qgb2YgImtleTpcbicKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIiBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogIntcJ2phY2tcJzogNDA5OCwgJworICAgICAgICAgICAgICAgICAiJ3Nqb2VyZCc6XG4iCisgICAgICAgICAgICAgICAgICc0MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgJworICAgICAgICAgICAgICAgICAnImRpY3QiXG4nCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3Rvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdCgqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAnaXMgY3JlYXRlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCwgYVxuJworICAgICAgICAgICAgICAgICAnICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gJworICAgICAgICAgICAgICAgICAnKml0ZXJhYmxlKlxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYWJsZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gJworICAgICAgICAgICAgICAgICAnYmVjb21lcyBhIGtleVxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICdmb3IgdGhhdCBrZXlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgJworICAgICAgICAgICAgICAgICAndGhlaXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBlcXVhbFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBiID0geydvbmUnOiAxLCAndHdvJzogMiwgJ3RocmVlJzogM31cbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjID0gZGljdCh6aXAoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sIFsxLCAyLCAzXSkpXG4iCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZCA9IGRpY3QoWygndHdvJywgMiksICgnb25lJywgMSksICgndGhyZWUnLCAzKV0pXG4iCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZSA9IGRpY3Qoeyd0aHJlZSc6IDMsICdvbmUnOiAxLCAndHdvJzogMn0pXG4iCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ3dvcmtzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSAnCisgICAgICAgICAgICAgICAgICd2YWxpZCBrZXlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgdXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGVyZWZvcmUsXG4nCisgICAgICAgICAgICAgICAgICcgICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBsZW4oZClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkW2tleV1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICcKKyAgICAgICAgICAgICAgICAgJyJLZXlFcnJvciIgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAiX19taXNzaW5nX18oKSIgJworICAgICAgICAgICAgICAgICAnYW5kICprZXkqXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCB3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICd0aGVuIHJldHVybnNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGludm9rZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICcKKyAgICAgICAgICAgICAgICAgJyJLZXlFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCAnCisgICAgICAgICAgICAgICAgICdiZSBhblxuJworICAgICAgICAgICAgICAgICAnICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddXG4iCisgICAgICAgICAgICAgICAgICcgICAgICAgICAwXG4nCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ10gKz0gMVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddXG4iCisgICAgICAgICAgICAgICAgICcgICAgICAgICAxXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyB1c2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkW2tleV0gPSB2YWx1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZGVsIGRba2V5XVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICcKKyAgICAgICAgICAgICAgICAgJyprZXkqIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgICAgaW4gdGhlIG1hcC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5IGluIGRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleSBub3QgaW4gZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyKGQpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xlYXIoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcHkoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBzZXQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBnZXQoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LCBlbHNlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICcKKyAgICAgICAgICAgICAgICAgJyJOb25lIiwgc29cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgaXRlbXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHBhaXJzKS4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5cygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3Mga2V5cy4gIFNlZSB0aGVcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBwb3Aoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICdpdHMgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAnCisgICAgICAgICAgICAgICAgICcqa2V5KiBpc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhICJLZXlFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBwb3BpdGVtKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5ICIoa2V5LCB2YWx1ZSkiIHBhaXIgJworICAgICAgICAgICAgICAgICAnZnJvbSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJwb3BpdGVtKCkiIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIGVtcHR5LCBjYWxsaW5nICJwb3BpdGVtKCkiIHJhaXNlcyBhICJLZXlFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgJworICAgICAgICAgICAgICAgICAnbm90LCBpbnNlcnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAnCisgICAgICAgICAgICAgICAgICcqZGVmYXVsdCpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRlZmF1bHRzIHRvICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgdXBkYXRlKFtvdGhlcl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAnCisgICAgICAgICAgICAgICAgICcqb3RoZXIqLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJ1cGRhdGUoKSIgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciAnCisgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgJworICAgICAgICAgICAgICAgICAnaXRlcmFibGVzIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6ICcKKyAgICAgICAgICAgICAgICAgJyJkLnVwZGF0ZShyZWQ9MSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGJsdWU9MikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIHZhbHVlcy4gIFNlZSAiCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBEaWN0aW9uYXJpZXMgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NhbWUgIihrZXksXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSkiIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyAoXCc8XCcsIFwnPD1cJywgXCc+PVwnLCAnCisgICAgICAgICAgICAgICAgICInPicpIHJhaXNlXG4iCisgICAgICAgICAgICAgICAgICcgICAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286ICJ0eXBlcy5NYXBwaW5nUHJveHlUeXBlIiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSAnCisgICAgICAgICAgICAgICAgICdyZWFkLW9ubHlcbicKKyAgICAgICAgICAgICAgICAgJyAgdmlldyBvZiBhICJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgImRpY3Qua2V5cygpIiwgImRpY3QudmFsdWVzKCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAnImRpY3QuaXRlbXMoKSIgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyAnCisgICAgICAgICAgICAgICAgICd2aWV3IG9uIHRoZVxuJworICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeSdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICdjaGFuZ2VzLFxuJworICAgICAgICAgICAgICAgICAndGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciAnCisgICAgICAgICAgICAgICAgICdyZXNwZWN0aXZlIGRhdGEsXG4nCisgICAgICAgICAgICAgICAgICdhbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdsZW4oZGljdHZpZXcpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2l0ZXIoZGljdHZpZXcpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgJworICAgICAgICAgICAgICAgICAnKHJlcHJlc2VudGVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICB0dXBsZXMgb2YgIihrZXksIHZhbHVlKSIpIGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCAnCisgICAgICAgICAgICAgICAgICdkZXBlbmRzIG9uXG4nCisgICAgICAgICAgICAgICAgICIgICB0aGUgZGljdGlvbmFyeSdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiAiCisgICAgICAgICAgICAgICAgICdrZXlzLFxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vICcKKyAgICAgICAgICAgICAgICAgJ2ludGVydmVuaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCAnCisgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiAnCisgICAgICAgICAgICAgICAgICdwYWlycyB1c2luZ1xuJworICAgICAgICAgICAgICAgICAnICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyICcKKyAgICAgICAgICAgICAgICAgJ3dheSB0b1xuJworICAgICAgICAgICAgICAgICAnICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluICcKKyAgICAgICAgICAgICAgICAgJ2QuaXRlbXMoKV0iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCAnCisgICAgICAgICAgICAgICAgICdlbnRyaWVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICd4IGluIGRpY3R2aWV3XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3MgJworICAgICAgICAgICAgICAgICAna2V5cywgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgICcgICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR1cGxlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCAnCisgICAgICAgICAgICAgICAgICdoYXNoYWJsZS5cbicKKyAgICAgICAgICAgICAgICAgJ0lmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzIGFyZSAnCisgICAgICAgICAgICAgICAgICd1bmlxdWVcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyAnCisgICAgICAgICAgICAgICAgICd2aWV3cyBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ25vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90ICcKKyAgICAgICAgICAgICAgICAgJ3VuaXF1ZS4pXG4nCisgICAgICAgICAgICAgICAgICdGb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAnYWJzdHJhY3RcbicKKyAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICciPT0iLFxuJworICAgICAgICAgICAgICAgICAnIjwiLCBvciAiXiIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGRpc2hlcyA9IHsnZWdncyc6IDIsICdzYXVzYWdlJzogMSwgJ2JhY29uJzogMSwgIgorICAgICAgICAgICAgICAgICAiJ3NwYW0nOiA1MDB9XG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgaXRlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbiA9IDBcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgbiArPSB2YWxcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBwcmludChuKVxuJworICAgICAgICAgICAgICAgICAnICAgNTA0XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICdvcmRlclxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3Qoa2V5cylcbicKKyAgICAgICAgICAgICAgICAgIiAgIFsnZWdncycsICdiYWNvbicsICdzYXVzYWdlJywgJ3NwYW0nXVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3QodmFsdWVzKVxuJworICAgICAgICAgICAgICAgICAnICAgWzIsIDEsIDEsIDUwMF1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGRlbCBkaXNoZXNbJ2VnZ3MnXVxuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGRlbCBkaXNoZXNbJ3NhdXNhZ2UnXVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3Qoa2V5cylcbicKKyAgICAgICAgICAgICAgICAgIiAgIFsnc3BhbScsICdiYWNvbiddXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4ga2V5cyAmIHsnZWdncycsICdiYWNvbicsICdzYWxhZCd9XG4iCisgICAgICAgICAgICAgICAgICIgICB7J2JhY29uJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBrZXlzIF4geydzYXVzYWdlJywgJ2p1aWNlJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgIHsnanVpY2UnLCAnc2F1c2FnZScsICdiYWNvbicsICdzcGFtJ31cbiIsCisgJ3R5cGVzbWV0aG9kcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ25vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgJworICAgICAgICAgICAgICAgICAnb24gbGlzdHMpXG4nCisgICAgICAgICAgICAgICAgICdhbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCAnCisgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAndHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0lmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSlcbicKKyAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgJworICAgICAgICAgICAgICAgICAnbWV0aG9kKiAoYWxzb1xuJworICAgICAgICAgICAgICAgICAnY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCAnCisgICAgICAgICAgICAgICAgICd0aGUgInNlbGYiXG4nCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gJworICAgICAgICAgICAgICAgICAnc3BlY2lhbCByZWFkLVxuJworICAgICAgICAgICAgICAgICAnb25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICdvcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdDYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgJworICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICAgICAnY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgJworICAgICAgICAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3N0b3JlZCBvblxuJworICAgICAgICAgICAgICAgICAndGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvICcKKyAgICAgICAgICAgICAgICAgJ3NldCBhblxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQuICBJblxuJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgJworICAgICAgICAgICAgICAgICAnaXQgb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICd1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gJ215IG5hbWUgaXMgbWV0aG9kJyAgIyBjYW4ndCBzZXQgb24gIgorICAgICAgICAgICAgICAgICAndGhlIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICAgICAgICAiICAgQXR0cmlidXRlRXJyb3I6ICdtZXRob2QnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICIKKyAgICAgICAgICAgICAgICAgIid3aG9hbWknXG4iCisgICAgICAgICAgICAgICAgICIgICA+Pj4gYy5tZXRob2QuX19mdW5jX18ud2hvYW1pID0gJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGMubWV0aG9kLndob2FtaVxuJworICAgICAgICAgICAgICAgICAiICAgJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKKyAndHlwZXNtb2R1bGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgYWNjZXNzOiAnCisgICAgICAgICAgICAgICAgICcibS5uYW1lIixcbicKKyAgICAgICAgICAgICAgICAgJ3doZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkIGluICcKKyAgICAgICAgICAgICAgICAgIiptKidzXG4iCisgICAgICAgICAgICAgICAgICdzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnQgaXMgbm90LCBzdHJpY3RseSBzcGVha2luZywgYW4gb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29uIGEgbW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3Q7ICJpbXBvcnQgZm9vIiBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdCBuYW1lZCAnCisgICAgICAgICAgICAgICAgICcqZm9vKiB0b1xuJworICAgICAgICAgICAgICAgICAnZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKiBmb3IgYSAnCisgICAgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVkICpmb28qIHNvbWV3aGVyZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Egc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzICJfX2RpY3RfXyIuIFRoaXMgaXMgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nICIKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgIgorICAgICAgICAgICAgICAgICAnYnV0IGRpcmVjdFxuJworICAgICAgICAgICAgICAgICAnYXNzaWdubWVudCB0byB0aGUgIl9fZGljdF9fIiBhdHRyaWJ1dGUgaXMgbm90IHBvc3NpYmxlICh5b3UgJworICAgICAgICAgICAgICAgICAnY2FuIHdyaXRlXG4nCisgICAgICAgICAgICAgICAgICcibS5fX2RpY3RfX1tcJ2FcJ10gPSAxIiwgd2hpY2ggZGVmaW5lcyAibS5hIiB0byBiZSAiMSIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICJ5b3UgY2FuJ3RcbiIKKyAgICAgICAgICAgICAgICAgJ3dyaXRlICJtLl9fZGljdF9fID0ge30iKS4gIE1vZGlmeWluZyAiX19kaWN0X18iIGRpcmVjdGx5IGlzICcKKyAgICAgICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAnCisgICAgICAgICAgICAgICAgICciPG1vZHVsZVxuJworICAgICAgICAgICAgICAgICAnXCdzeXNcJyAoYnVpbHQtaW4pPiIuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3dyaXR0ZW4gYXNcbicKKyAgICAgICAgICAgICAgICAgJyI8bW9kdWxlIFwnb3NcJyBmcm9tICcKKyAgICAgICAgICAgICAgICAgJ1wnL3Vzci9sb2NhbC9saWIvcHl0aG9uWC5ZL29zLnB5Y1wnPiIuXG4nLAorICd0eXBlc3NlcSc6ICdcbicKKyAgICAgICAgICAgICAnU2VxdWVuY2UgVHlwZXMgLS0tICJsaXN0IiwgInR1cGxlIiwgInJhbmdlIlxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZVxuJworICAgICAgICAgICAgICdvYmplY3RzLiBBZGRpdGlvbmFsIHNlcXVlbmNlIHR5cGVzIHRhaWxvcmVkIGZvciBwcm9jZXNzaW5nIG9mICcKKyAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgJ2RhdGEgYW5kIHRleHQgc3RyaW5ncyBhcmUgZGVzY3JpYmVkIGluIGRlZGljYXRlZCBzZWN0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3QgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcywgYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSAnCisgICAgICAgICAgICAgJyJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQ1xuJworICAgICAgICAgICAgICdpcyBwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICdvbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgJworICAgICAgICAgICAgICdwcmlvcml0eS5cbicKKyAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlLCAqcyogYW5kICp0KiBhcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgJworICAgICAgICAgICAgICcqaSosXG4nCisgICAgICAgICAgICAgJypqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgJ21lZXRzIGFueVxuJworICAgICAgICAgICAgICd0eXBlIGFuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgIisiIChjb25jYXRlbmF0aW9uKSBhbmQgIioiICcKKyAgICAgICAgICAgICAnKHJlcGV0aXRpb24pXG4nCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZyBudW1lcmljXG4nCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCBOb3RlcyAgICAgIHxcbicKKyAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgJ3wgInggaW4gcyIgICAgICAgICAgICAgICAgICAgfCAiVHJ1ZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgICAnCisgICAgICAgICAgICAgJ3wgKDEpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIkZhbHNlIiAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJ4IG5vdCBpbiBzIiAgICAgICAgICAgICAgIHwgIkZhbHNlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgJworICAgICAgICAgICAgICd8ICgxKSAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJUcnVlIiAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyArIHQiICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqICcKKyAgICAgICAgICAgICAnfCAoNikoNykgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMgKiBuIiBvciAibiAqIHMiICAgICAgICAgfCBlcXVpdmFsZW50IHRvIGFkZGluZyAqcyogdG8gICAgICAnCisgICAgICAgICAgICAgJ3wgKDIpKDcpICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdHNlbGYgKm4qIHRpbWVzICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2ldIiAgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgJworICAgICAgICAgICAgICd8ICgzKSAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgICcKKyAgICAgICAgICAgICAnfCAoMykoNCkgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICAnCisgICAgICAgICAgICAgJ3wgKDMpKDUpICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJsZW4ocykiICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAibWluKHMpIiAgICAgICAgICAgICAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIm1heChzKSIgICAgICAgICAgICAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmluZGV4KHhbLCBpWywgal1dKSIgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgJworICAgICAgICAgICAgICd8ICg4KSAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgaW5kZXggICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jb3VudCh4KSIgICAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiAnCisgICAgICAgICAgICAgJ3BhcnRpY3VsYXIsXG4nCisgICAgICAgICAgICAgJ3R1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZ1xuJworICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbicKKyAgICAgICAgICAgICAnZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlICcKKyAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICd0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAnCisgICAgICAgICAgICAgJ0NvbXBhcmlzb25zIGluXG4nCisgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiBXaGlsZSB0aGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciAnCisgICAgICAgICAgICAgJ3NpbXBsZVxuJworICAgICAgICAgICAgICcgICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgJworICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAnICAgKHN1Y2ggYXMgInN0ciIsICJieXRlcyIgYW5kICJieXRlYXJyYXkiKSBhbHNvIHVzZSB0aGVtIGZvclxuJworICAgICAgICAgICAgICcgICBzdWJzZXF1ZW5jZSB0ZXN0aW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4nCisgICAgICAgICAgICAgJyAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuICIwIiBhcmUgdHJlYXRlZCBhcyAiMCIgKHdoaWNoIHlpZWxkcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJyAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgdGhhdCBpdGVtcyBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSAqcyogYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgbXVsdGlwbGUgJworICAgICAgICAgICAgICd0aW1lcy5cbicKKyAgICAgICAgICAgICAnICAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHMgPSBbW11dICogM1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgICAgW1tdLCBbXSwgW11dXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbM10sIFszXSwgWzNdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCAiW1tdXSIgaXMgYSBvbmUtZWxlbWVudCBsaXN0ICcKKyAgICAgICAgICAgICAnY29udGFpbmluZ1xuJworICAgICAgICAgICAgICcgICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgIltbXV0gKiAzIiBhcmUgJworICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgJyAgIHRvIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZlxuJworICAgICAgICAgICAgICcgICAibGlzdHMiIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZlxuJworICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMl0uYXBwZW5kKDcpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1xuJworICAgICAgICAgICAgICcgICAgICBbWzNdLCBbNV0sIFs3XV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZ1cnRoZXIgZXhwbGFuYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBGQVEgZW50cnkgSG93IGRvIEkgJworICAgICAgICAgICAgICdjcmVhdGUgYVxuJworICAgICAgICAgICAgICcgICBtdWx0aWRpbWVuc2lvbmFsIGxpc3Q/LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICB0aGUgc3RyaW5nOiAibGVuKHMpICsgaSIgb3IgImxlbihzKSArIGoiIGlzIHN1YnN0aXR1dGVkLiAgQnV0ICcKKyAgICAgICAgICAgICAnbm90ZVxuJworICAgICAgICAgICAgICcgICB0aGF0ICItMCIgaXMgc3RpbGwgIjAiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgImkgPD0gayA8IGoiLiAgSWYgKmkqIG9yICpqKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3IgJworICAgICAgICAgICAgICciTm9uZSIsXG4nCisgICAgICAgICAgICAgJyAgIHVzZSAiMCIuICBJZiAqaiogaXMgb21pdHRlZCBvciAiTm9uZSIsIHVzZSAibGVuKHMpIi4gIElmICppKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpcyBlbXB0eS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICAieCA9IGkgKyBuKmsiIHN1Y2ggdGhhdCAiMCA8PSBuICcKKyAgICAgICAgICAgICAnPFxuJworICAgICAgICAgICAgICcgICAoai1pKS9rIi4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgImkiLCAiaStrIiwgJworICAgICAgICAgICAgICciaSsyKmsiLFxuJworICAgICAgICAgICAgICcgICAiaSszKmsiIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0IG5ldmVyXG4nCisgICAgICAgICAgICAgJyAgIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZVxuJworICAgICAgICAgICAgICcgICAibGVuKHMpIi4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGV5IGJlY29tZSAnCisgICAgICAgICAgICAgJyJlbmQiXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlcyAod2hpY2ggZW5kIGRlcGVuZHMgb24gdGhlIHNpZ24gb2YgKmsqKS4gIE5vdGUsICprKiAnCisgICAgICAgICAgICAgJ2Nhbm5vdCBiZVxuJworICAgICAgICAgICAgICcgICB6ZXJvLiBJZiAqayogaXMgIk5vbmUiLCBpdCBpcyB0cmVhdGVkIGxpa2UgIjEiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3XG4nCisgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhpcyBtZWFucyB0aGF0IGJ1aWxkaW5nIHVwIGEgc2VxdWVuY2UgYnkgcmVwZWF0ZWRcbicKKyAgICAgICAgICAgICAnICAgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSAnCisgICAgICAgICAgICAgJ3RvdGFsXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIGxlbmd0aC4gVG8gZ2V0IGEgbGluZWFyIHJ1bnRpbWUgY29zdCwgeW91IG11c3QgJworICAgICAgICAgICAgICdzd2l0Y2ggdG9cbicKKyAgICAgICAgICAgICAnICAgb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgInN0ciIgb2JqZWN0cywgeW91IGNhbiBidWlsZCBhIGxpc3QgYW5kICcKKyAgICAgICAgICAgICAndXNlXG4nCisgICAgICAgICAgICAgJyAgICAgInN0ci5qb2luKCkiIGF0IHRoZSBlbmQgb3IgZWxzZSB3cml0ZSB0byBhbiAiaW8uU3RyaW5nSU8iXG4nCisgICAgICAgICAgICAgJyAgICAgaW5zdGFuY2UgYW5kIHJldHJpZXZlIGl0cyB2YWx1ZSB3aGVuIGNvbXBsZXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgImJ5dGVzIiBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbicKKyAgICAgICAgICAgICAnICAgICAiYnl0ZXMuam9pbigpIiBvciAiaW8uQnl0ZXNJTyIsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2VcbicKKyAgICAgICAgICAgICAnICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiAnCisgICAgICAgICAgICAgJ29iamVjdHMgYXJlXG4nCisgICAgICAgICAgICAgJyAgICAgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgInR1cGxlIiBvYmplY3RzLCBleHRlbmQgYSAibGlzdCIgaW5zdGVhZFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyAnCisgICAgICAgICAgICAgJ2RvY3VtZW50YXRpb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgInJhbmdlIikgb25seSBzdXBwb3J0IGl0ZW1cbicKKyAgICAgICAgICAgICAiICAgc2VxdWVuY2VzIHRoYXQgZm9sbG93IHNwZWNpZmljIHBhdHRlcm5zLCBhbmQgaGVuY2UgZG9uJ3QgIgorICAgICAgICAgICAgICdzdXBwb3J0XG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzguICJpbmRleCIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiAnCisgICAgICAgICAgICAgJ1doZW5cbicKKyAgICAgICAgICAgICAnICAgc3VwcG9ydGVkLCB0aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGluZGV4IG1ldGhvZCAnCisgICAgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgICAgJyAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgJworICAgICAgICAgICAgICcic1tpOmpdLmluZGV4KHgpIixcbicKKyAgICAgICAgICAgICAnICAgb25seSB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4ICcKKyAgICAgICAgICAgICAnYmVpbmdcbicKKyAgICAgICAgICAgICAnICAgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZXF1ZW5jZSByYXRoZXIgdGhhbiB0aGUgc3RhcnQgJworICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAnICAgc2xpY2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSAnCisgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICd0aGF0IGlzIG5vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgJworICAgICAgICAgICAgICdzdXBwb3J0IGZvclxuJworICAgICAgICAgICAgICd0aGUgImhhc2goKSIgYnVpbHQtaW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgInR1cGxlIiAnCisgICAgICAgICAgICAgJ2luc3RhbmNlcywgdG9cbicKKyAgICAgICAgICAgICAnYmUgdXNlZCBhcyAiZGljdCIga2V5cyBhbmQgc3RvcmVkIGluICJzZXQiIGFuZCAiZnJvemVuc2V0IiAnCisgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0F0dGVtcHRpbmcgdG8gaGFzaCBhbiBpbW11dGFibGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyAnCisgICAgICAgICAgICAgJ3VuaGFzaGFibGVcbicKKyAgICAgICAgICAgICAndmFsdWVzIHdpbGwgcmVzdWx0IGluICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ011dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAndHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvICcKKyAgICAgICAgICAgICAnbWFrZVxuJworICAgICAgICAgICAgICdpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ3R5cGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqICcKKyAgICAgICAgICAgICAnaXMgYW55XG4nCisgICAgICAgICAgICAgJ2l0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgJworICAgICAgICAgICAgICd0eXBlIGFuZFxuJworICAgICAgICAgICAgICd2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAiYnl0ZWFycmF5IiAnCisgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAnYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gJworICAgICAgICAgICAgICcyNTUiKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAnfCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgJworICAgICAgICAgICAgICdieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJyp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAnCisgICAgICAgICAgICAgJ2lzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mICcKKyAgICAgICAgICAgICAndGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgJworICAgICAgICAgICAgICcqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJkZWwgc1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgInNbaTpqXSA9ICcKKyAgICAgICAgICAgICAnW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmo6a10gPSB0IiAgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgInNbaTpqOmtdIiAnCisgICAgICAgICAgICAgJ2FyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAnCisgICAgICAgICAgICAgJyp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgJworICAgICAgICAgICAgICdvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSAnCisgICAgICAgICAgICAgJ2xpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgJworICAgICAgICAgICAgICd0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lICcKKyAgICAgICAgICAgICAnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICdbeF0iKSAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAnCisgICAgICAgICAgICAgJyhzYW1lIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsICcKKyAgICAgICAgICAgICAnc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAnCisgICAgICAgICAgICAgJyJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgJworICAgICAgICAgICAgICcic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmV4dGVuZCh0KSIgb3IgInMgKz0gdCIgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzICcKKyAgICAgICAgICAgICAnb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0IHBhcnQgdGhlICcKKyAgICAgICAgICAgICAnc2FtZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICd0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyAnCisgICAgICAgICAgICAgJ2NvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBlYXRlZCAqbiogJworICAgICAgICAgICAgICd0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgJworICAgICAgICAgICAgICd0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lICcKKyAgICAgICAgICAgICAnYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9ICcKKyAgICAgICAgICAgICAnW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogJworICAgICAgICAgICAgICdhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICcKKyAgICAgICAgICAgICAnKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAnCisgICAgICAgICAgICAgJypzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSAnCisgICAgICAgICAgICAgJ3giICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiAnCisgICAgICAgICAgICAgJ2luICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0IGJ5ICcKKyAgICAgICAgICAgICAnZGVmYXVsdFxuJworICAgICAgICAgICAgICcgICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gVGhlICJyZXZlcnNlKCkiIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yXG4nCisgICAgICAgICAgICAgJyAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCAnCisgICAgICAgICAgICAgJ3VzZXJzXG4nCisgICAgICAgICAgICAgJyAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgJworICAgICAgICAgICAgICdyZXZlcnNlZFxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuJworICAgICAgICAgICAgICIgICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvbid0IHN1cHBvcnQgc2xpY2luZ1xuIgorICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuJworICAgICAgICAgICAgICcgICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiBjbGVhciB0aGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAnICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkICcKKyAgICAgICAgICAgICAnbXVsdGlwbGVcbicKKyAgICAgICAgICAgICAnICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciBDb21tb24gU2VxdWVuY2UgJworICAgICAgICAgICAgICdPcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0xpc3RzXG4nCisgICAgICAgICAgICAgJz09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdMaXN0cyBhcmUgbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnaG9tb2dlbmVvdXMgaXRlbXMgKHdoZXJlIHRoZSBwcmVjaXNlIGRlZ3JlZSBvZiBzaW1pbGFyaXR5IHdpbGwgJworICAgICAgICAgICAgICd2YXJ5IGJ5XG4nCisgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGxpc3QoW2l0ZXJhYmxlXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiAnCisgICAgICAgICAgICAgJyJbXSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAnCisgICAgICAgICAgICAgJyJbYV0iLFxuJworICAgICAgICAgICAgICcgICAgICJbYSwgYiwgY10iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiAiW3ggZm9yIHggaW4gaXRlcmFibGVdIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogImxpc3QoKSIgb3IgImxpc3QoaXRlcmFibGUpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIGxpc3Qgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICIgICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciAiCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgJyAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuJworICAgICAgICAgICAgICcgICByZXR1cm5lZCwgc2ltaWxhciB0byAiaXRlcmFibGVbOl0iLiBGb3IgZXhhbXBsZSwgJworICAgICAgICAgICAgICcibGlzdChcJ2FiY1wnKSJcbicKKyAgICAgICAgICAgICAnICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiAnCisgICAgICAgICAgICAgJ3JldHVybnMgIlsxLCAyLFxuJworICAgICAgICAgICAgICcgICAzXSIuIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyAnCisgICAgICAgICAgICAgJ2VtcHR5XG4nCisgICAgICAgICAgICAgJyAgIGxpc3QsICJbXSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICcKKyAgICAgICAgICAgICAnInNvcnRlZCgpIlxuJworICAgICAgICAgICAgICcgICBidWlsdC1pbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBhbmQgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgIjwiICcKKyAgICAgICAgICAgICAnY29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAnICAgICAgYmV0d2VlbiBpdGVtcy4gRXhjZXB0aW9ucyBhcmUgbm90IHN1cHByZXNzZWQgLSBpZiBhbnkgJworICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgJyAgICAgIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICAgICBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQgaW4gYSBwYXJ0aWFsbHkgbW9kaWZpZWQgc3RhdGUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgInNvcnQoKSIgYWNjZXB0cyB0d28gYXJndW1lbnRzIHRoYXQgY2FuIG9ubHkgYmUgcGFzc2VkIGJ5XG4nCisgICAgICAgICAgICAgJyAgICAgIGtleXdvcmQgKGtleXdvcmQtb25seSBhcmd1bWVudHMpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJyAgICAgIGV4dHJhY3QgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50IChmb3IgJworICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICcgICAgICAia2V5PXN0ci5sb3dlciIpLiBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluICcKKyAgICAgICAgICAgICAndGhlIGxpc3RcbicKKyAgICAgICAgICAgICAnICAgICAgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyAnCisgICAgICAgICAgICAgJ3Byb2Nlc3MuXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mICJOb25lIiBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlICcKKyAgICAgICAgICAgICAnc29ydGVkXG4nCisgICAgICAgICAgICAgJyAgICAgIGRpcmVjdGx5IHdpdGhvdXQgY2FsY3VsYXRpbmcgYSBzZXBhcmF0ZSBrZXkgdmFsdWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvICcKKyAgICAgICAgICAgICAnY29udmVydCBhXG4nCisgICAgICAgICAgICAgJyAgICAgIDIueCBzdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byAiVHJ1ZSIsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICAgICcgICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mICcKKyAgICAgICAgICAgICAnc3BhY2VcbicKKyAgICAgICAgICAgICAnICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCAnCisgICAgICAgICAgICAgJ29wZXJhdGVzXG4nCisgICAgICAgICAgICAgJyAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJyh1c2VcbicKKyAgICAgICAgICAgICAnICAgICAgInNvcnRlZCgpIiB0byBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgJworICAgICAgICAgICAgICdpbnN0YW5jZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgInNvcnQoKSIgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgICAgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3IgJworICAgICAgICAgICAgICdzb3J0aW5nIGluXG4nCisgICAgICAgICAgICAgJyAgICAgIG11bHRpcGxlIHBhc3NlcyAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgZGVwYXJ0bWVudCwgdGhlbiBieSAnCisgICAgICAgICAgICAgJ3NhbGFyeVxuJworICAgICAgICAgICAgICcgICAgICBncmFkZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyAnCisgICAgICAgICAgICAgJ3NvcnRlZCxcbicKKyAgICAgICAgICAgICAnICAgICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgJworICAgICAgICAgICAgICdsaXN0IGlzXG4nCisgICAgICAgICAgICAgJyAgICAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCAnCisgICAgICAgICAgICAgJ2FwcGVhclxuJworICAgICAgICAgICAgICcgICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gJworICAgICAgICAgICAgICdkZXRlY3RcbicKKyAgICAgICAgICAgICAnICAgICAgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVHVwbGVzXG4nCisgICAgICAgICAgICAgJz09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSAnCisgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zIG9mXG4nCisgICAgICAgICAgICAgJ2hldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAnImVudW1lcmF0ZSgpIlxuJworICAgICAgICAgICAgICdidWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICdvZiBob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZyBzdG9yYWdlIGluIGEgJworICAgICAgICAgICAgICcic2V0IiBvclxuJworICAgICAgICAgICAgICciZGljdCIgaW5zdGFuY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFR1cGxlcyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gYSBudW1iZXIgb2Ygd2F5czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6ICcKKyAgICAgICAgICAgICAnIigpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIHRyYWlsaW5nIGNvbW1hIGZvciBhIHNpbmdsZXRvbiB0dXBsZTogImEsIiBvciAnCisgICAgICAgICAgICAgJyIoYSwpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiYSwgYiwgYyIgb3IgIihhLCBiLCBjKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICcKKyAgICAgICAgICAgICAnInR1cGxlKGl0ZXJhYmxlKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kICcKKyAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgIiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyICIKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuICcKKyAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkXG4nCisgICAgICAgICAgICAgJyAgIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsICJ0dXBsZShcJ2FiY1wnKSIgcmV0dXJucyAiKFwnYVwnLCAnCisgICAgICAgICAgICAgJ1wnYlwnLCBcJ2NcJykiXG4nCisgICAgICAgICAgICAgJyAgIGFuZCAidHVwbGUoIFsxLCAyLCAzXSApIiByZXR1cm5zICIoMSwgMiwgMykiLiBJZiBubyBhcmd1bWVudCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlICcKKyAgICAgICAgICAgICAnZW1wdHlcbicKKyAgICAgICAgICAgICAnICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljICcKKyAgICAgICAgICAgICAnYW1iaWd1aXR5LlxuJworICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZSwgImYoYSwgYiwgYykiIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlICcKKyAgICAgICAgICAgICAnYXJndW1lbnRzLFxuJworICAgICAgICAgICAgICcgICB3aGlsZSAiZigoYSwgYiwgYykpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGUgYXMgdGhlICcKKyAgICAgICAgICAgICAnc29sZVxuJworICAgICAgICAgICAgICcgICBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFR1cGxlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSBjb21tb24gc2VxdWVuY2Ugb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0ZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgJworICAgICAgICAgICAgICdjbGVhcmVyXG4nCisgICAgICAgICAgICAgJ3RoYW4gYWNjZXNzIGJ5IGluZGV4LCAiY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIiBtYXkgYmUgYSBtb3JlXG4nCisgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdSYW5nZXNcbicKKyAgICAgICAgICAgICAnPT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInJhbmdlIiB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnY29tbW9ubHkgdXNlZCBmb3IgbG9vcGluZyBhIHNwZWNpZmljIG51bWJlciBvZiB0aW1lcyBpbiAiZm9yIiAnCisgICAgICAgICAgICAgJ2xvb3BzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgcmFuZ2Uoc3RvcClcbicKKyAgICAgICAgICAgICAnY2xhc3MgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgJworICAgICAgICAgICAgICcoZWl0aGVyXG4nCisgICAgICAgICAgICAgJyAgIGJ1aWx0LWluICJpbnQiIG9yIGFueSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSAiX19pbmRleF9fIlxuJworICAgICAgICAgICAgICcgICBzcGVjaWFsIG1ldGhvZCkuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0ICcKKyAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAnICAgIjEiLiBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAiMCIuICcKKyAgICAgICAgICAgICAnSWZcbicKKyAgICAgICAgICAgICAnICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgYSBwb3NpdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiBhIHJhbmdlICJyIiBhcmUgJworICAgICAgICAgICAgICdkZXRlcm1pbmVkXG4nCisgICAgICAgICAgICAgJyAgIGJ5IHRoZSBmb3JtdWxhICJyW2ldID0gc3RhcnQgKyBzdGVwKmkiIHdoZXJlICJpID49IDAiIGFuZCAnCisgICAgICAgICAgICAgJyJyW2ldIDxcbicKKyAgICAgICAgICAgICAnICAgc3RvcCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4nCisgICAgICAgICAgICAgJyAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbicKKyAgICAgICAgICAgICAnICAgY29uc3RyYWludHMgYXJlICJpID49IDAiIGFuZCAicltpXSA+IHN0b3AiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICcgICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnICAgaW50ZXJwcmV0ZWQgYXMgaW5kZXhpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ2RldGVybWluZWQgYnlcbicKKyAgICAgICAgICAgICAnICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICcgICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgImxlbigpIikgbWF5IHJhaXNlXG4nCisgICAgICAgICAgICAgJyAgICJPdmVyZmxvd0Vycm9yIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuJworICAgICAgICAgICAgICcgICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDMwLCA1KSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCAzLCA2LCA5XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDApKVxuJworICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbicKKyAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSBjb21tb24gc2VxdWVuY2Ugb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgJ2V4Y2VwdFxuJworICAgICAgICAgICAgICcgICBjb25jYXRlbmF0aW9uIGFuZCByZXBldGl0aW9uIChkdWUgdG8gdGhlIGZhY3QgdGhhdCByYW5nZSAnCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAnICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCAnCisgICAgICAgICAgICAgJ3BhdHRlcm4pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc3RhcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0YXJ0KiBwYXJhbWV0ZXIgKG9yICIwIiBpZiB0aGUgJworICAgICAgICAgICAgICdwYXJhbWV0ZXIgd2FzXG4nCisgICAgICAgICAgICAgJyAgICAgIG5vdCBzdXBwbGllZClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHN0b3BcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0b3AqIHBhcmFtZXRlclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc3RlcFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RlcCogcGFyYW1ldGVyIChvciAiMSIgaWYgdGhlIHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICAgICcgICAgICBub3Qgc3VwcGxpZWQpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICcKKyAgICAgICAgICAgICAnInR1cGxlIiBpc1xuJworICAgICAgICAgICAgICd0aGF0IGEgInJhbmdlIiBvYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZSAoc21hbGwpIGFtb3VudCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJ21lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzIChhcyBpdCAnCisgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAnc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nICcKKyAgICAgICAgICAgICAnaW5kaXZpZHVhbFxuJworICAgICAgICAgICAgICdpdGVtcyBhbmQgc3VicmFuZ2VzIGFzIG5lZWRlZCkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdSYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDLCBhbmRcbicKKyAgICAgICAgICAgICAncHJvdmlkZSBmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4ICcKKyAgICAgICAgICAgICAnbG9va3VwLFxuJworICAgICAgICAgICAgICdzbGljaW5nIGFuZCBzdXBwb3J0IGZvciBuZWdhdGl2ZSBpbmRpY2VzIChzZWUgU2VxdWVuY2UgVHlwZXMgLS0tICcKKyAgICAgICAgICAgICAnbGlzdCxcbicKKyAgICAgICAgICAgICAndHVwbGUsIHJhbmdlKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJz4+PiByID0gcmFuZ2UoMCwgMjAsIDIpXG4nCisgICAgICAgICAgICAgJz4+PiByXG4nCisgICAgICAgICAgICAgJ3JhbmdlKDAsIDIwLCAyKVxuJworICAgICAgICAgICAgICc+Pj4gMTEgaW4gclxuJworICAgICAgICAgICAgICdGYWxzZVxuJworICAgICAgICAgICAgICc+Pj4gMTAgaW4gclxuJworICAgICAgICAgICAgICdUcnVlXG4nCisgICAgICAgICAgICAgJz4+PiByLmluZGV4KDEwKVxuJworICAgICAgICAgICAgICc1XG4nCisgICAgICAgICAgICAgJz4+PiByWzVdXG4nCisgICAgICAgICAgICAgJzEwXG4nCisgICAgICAgICAgICAgJz4+PiByWzo1XVxuJworICAgICAgICAgICAgICdyYW5nZSgwLCAxMCwgMilcbicKKyAgICAgICAgICAgICAnPj4+IHJbLTFdXG4nCisgICAgICAgICAgICAgJzE4XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUZXN0aW5nIHJhbmdlIG9iamVjdHMgZm9yIGVxdWFsaXR5IHdpdGggIj09IiBhbmQgIiE9IiBjb21wYXJlcyAnCisgICAgICAgICAgICAgJ3RoZW0gYXNcbicKKyAgICAgICAgICAgICAnc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWYgJworICAgICAgICAgICAgICd0aGV5XG4nCisgICAgICAgICAgICAgJ3JlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZSAnCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAndGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50ICJzdGFydCIsICJzdG9wIiBhbmQgJworICAgICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAgICAnYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgInJhbmdlKDApID09IHJhbmdlKDIsIDEsIDMpIiBvciAnCisgICAgICAgICAgICAgJyJyYW5nZSgwLCAzLFxuJworICAgICAgICAgICAgICcyKSA9PSByYW5nZSgwLCA0LCAyKSIuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogSW1wbGVtZW50IHRoZSBTZXF1ZW5jZSBBQkMuIFN1cHBvcnQgJworICAgICAgICAgICAgICdzbGljaW5nXG4nCisgICAgICAgICAgICAgJ2FuZCBuZWdhdGl2ZSBpbmRpY2VzLiBUZXN0ICJpbnQiIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gJworICAgICAgICAgICAgICdjb25zdGFudFxuJworICAgICAgICAgICAgICd0aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggYWxsIGl0ZW1zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogRGVmaW5lICc9PScgYW5kICchPScgdG8gY29tcGFyZSByYW5nZSAiCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAnYmFzZWQgb24gdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiAnCisgICAgICAgICAgICAgJ2NvbXBhcmluZ1xuJworICAgICAgICAgICAgICdiYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqIFRoZSBsaW5zcGFjZSByZWNpcGUgc2hvd3MgaG93IHRvIGltcGxlbWVudCBhIGxhenkgdmVyc2lvbiAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICByYW5nZSB0aGF0IHN1aXRhYmxlIGZvciBmbG9hdGluZyBwb2ludCBhcHBsaWNhdGlvbnMuXG4nLAorICd0eXBlc3NlcS1tdXRhYmxlJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ011dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiAnCisgICAgICAgICAgICAgICAgICAgICAnbXV0YWJsZSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyAnCisgICAgICAgICAgICAgICAgICAgICAncHJvdmlkZWQgdG8gbWFrZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2l0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gJworICAgICAgICAgICAgICAgICAgICAgJ2N1c3RvbSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0luIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICd0eXBlLCAqdCogaXMgYW55XG4nCisgICAgICAgICAgICAgICAgICAgICAnaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWV0cyBhbnkgdHlwZSBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICAgICAnImJ5dGVhcnJheSIgb25seVxuJworICAgICAgICAgICAgICAgICAgICAgJ2FjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4ICcKKyAgICAgICAgICAgICAgICAgICAgICc8PSAyNTUiKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICcqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqICcKKyAgICAgICAgICAgICAgICAgICAgICd0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgICAgICAgICAnKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICAgICAgICAgJ1tdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnInNbaTpqOmtdIiBhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgJworICAgICAgICAgICAgICAgICAgICAgJ29mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2xpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2VuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICAgICAgICAgJ1t4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyAnCisgICAgICAgICAgICAgICAgICAgICAnZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgImRlbCAnCisgICAgICAgICAgICAgICAgICAgICAnc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmNvcHkoKSIgICAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAgICAnInNbOl0iKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJ0IHRoZSBzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAic1tsZW4ocyk6bGVuKHMpXSAnCisgICAgICAgICAgICAgICAgICAgICAnPSB0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMgKj0gbiIgICAgICAgICAgICAgICAgICAgICAgIHwgdXBkYXRlcyAqcyogd2l0aCBpdHMgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiAnCisgICAgICAgICAgICAgICAgICAgICAndGltZXMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiAnCisgICAgICAgICAgICAgICAgICAgICAnYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqICcKKyAgICAgICAgICAgICAgICAgICAgICcoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6aV0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5wb3AoW2ldKSIgICAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgJworICAgICAgICAgICAgICAgICAgICAgJyppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gJworICAgICAgICAgICAgICAgICAgICAgJypzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSAnCisgICAgICAgICAgICAgICAgICAgICAnZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSAnCisgICAgICAgICAgICAgICAgICAgICAneCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAncmVwbGFjaW5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCAnCisgICAgICAgICAgICAgICAgICAgICAnYnkgZGVmYXVsdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gJworICAgICAgICAgICAgICAgICAgICAgJypzKi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc0LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gJworICAgICAgICAgICAgICAgICAgICAgJ3JlbWluZCB1c2Vyc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHJldmVyc2VkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5ICcKKyAgICAgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCAiCisgICAgICAgICAgICAgICAgICAgICAnc2xpY2luZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc2LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCAnCisgICAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJdGVtcyBpbiB0aGUgc2VxdWVuY2UgYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VkIG11bHRpcGxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciBDb21tb24gU2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbnMuXG4nLAorICd1bmFyeSc6ICdcbicKKyAgICAgICAgICAnVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAncHJpb3JpdHk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgdW5hcnkgIi0iIChtaW51cykgb3BlcmF0b3IgeWllbGRzIHRoZSBuZWdhdGlvbiBvZiBpdHMgbnVtZXJpY1xuJworICAgICAgICAgICdhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAiKyIgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCAnCisgICAgICAgICAgJ3VuY2hhbmdlZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAifiIgKGludmVydCkgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAnCisgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICdpbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICJ4IiBpcyBkZWZpbmVkIGFzXG4nCisgICAgICAgICAgJyItKHgrMSkiLiAgSXQgb25seSBhcHBsaWVzIHRvIGludGVncmFsIG51bWJlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJbiBhbGwgdGhyZWUgY2FzZXMsIGlmIHRoZSBhcmd1bWVudCBkb2VzIG5vdCBoYXZlIHRoZSBwcm9wZXIgdHlwZSwgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAorICd3aGlsZSc6ICdcbicKKyAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG4nCisgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdHJ1ZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdmaXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgJworICAgICAgICAgICd0aW1lXG4nCisgICAgICAgICAgJ2l0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyAnCisgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgJ2FuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgJworICAgICAgICAgICdiYWNrXG4nCisgICAgICAgICAgJ3RvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nLAorICd3aXRoJzogJ1xuJworICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbicKKyAgICAgICAgICdtZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uIFdpdGggU3RhdGVtZW50XG4nCisgICAgICAgICAnQ29udGV4dCBNYW5hZ2VycykuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAndXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgJyAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbicKKyAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbicKKyAgICAgICAgICcgICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc0LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbicKKyAgICAgICAgICcgICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4nCisgICAgICAgICAnICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuICJfX2V4aXRfXygpIiB3aWxsIGFsd2F5cyAnCisgICAgICAgICAnYmVcbicKKyAgICAgICAgICcgICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbicKKyAgICAgICAgICcgICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4nCisgICAgICAgICAnICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc2LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4nCisgICAgICAgICAnICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuJworICAgICAgICAgJyAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgJworICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAnICAgIk5vbmUiIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gJworICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAnICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgJworICAgICAgICAgJ3JlcmFpc2VkLlxuJworICAgICAgICAgJyAgIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgYW5kXG4nCisgICAgICAgICAnICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbicKKyAgICAgICAgICcgICBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sICcKKyAgICAgICAgICd0aGVcbicKKyAgICAgICAgICcgICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiAnCisgICAgICAgICAncHJvY2VlZHNcbicKKyAgICAgICAgICcgICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1dpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG4nCisgICAgICAgICAnbXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4nCisgICAgICAgICAnICAgICAgIHN1aXRlXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGggQSgpIGFzIGE6XG4nCisgICAgICAgICAnICAgICAgIHdpdGggQigpIGFzIGI6XG4nCisgICAgICAgICAnICAgICAgICAgICBzdWl0ZVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICcKKyAgICAgICAgICcid2l0aCJcbicKKyAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicsCisgJ3lpZWxkJzogJ1xuJworICAgICAgICAgICdUaGUgInlpZWxkIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJ5aWVsZCIgc3RhdGVtZW50IGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvIGEgeWllbGQgJworICAgICAgICAgICdleHByZXNzaW9uLlxuJworICAgICAgICAgICdUaGUgeWllbGQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIG9taXQgdGhlIHBhcmVudGhlc2VzIHRoYXQgd291bGRcbicKKyAgICAgICAgICAnb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkIGV4cHJlc3Npb24gJworICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgJ0ZvciBleGFtcGxlLCB0aGUgeWllbGQgc3RhdGVtZW50c1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgeWllbGQgPGV4cHI+XG4nCisgICAgICAgICAgJyAgIHlpZWxkIGZyb20gPGV4cHI+XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhcmUgZXF1aXZhbGVudCB0byB0aGUgeWllbGQgZXhwcmVzc2lvbiBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAoeWllbGQgPGV4cHI+KVxuJworICAgICAgICAgICcgICAoeWllbGQgZnJvbSA8ZXhwcj4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuJworICAgICAgICAgICcqZ2VuZXJhdG9yKiBmdW5jdGlvbiwgYW5kIGFyZSBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlICcKKyAgICAgICAgICAnZ2VuZXJhdG9yXG4nCisgICAgICAgICAgJ2Z1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gJworICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICd0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBub3JtYWxcbicKKyAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdGb3IgZnVsbCBkZXRhaWxzIG9mICJ5aWVsZCIgc2VtYW50aWNzLCByZWZlciB0byB0aGUgWWllbGQgJworICAgICAgICAgICdleHByZXNzaW9uc1xuJworICAgICAgICAgICdzZWN0aW9uLlxuJ30KZGlmZiAtLWdpdCBhL0xpYi9yYW5kb20ucHkgYi9MaWIvcmFuZG9tLnB5CmluZGV4IDRlZmJiMGEuLmNkODU4M2YgMTAwNjQ0Ci0tLSBhL0xpYi9yYW5kb20ucHkKKysrIGIvTGliL3JhbmRvbS5weQpAQCAtOCw2ICs4LDcgQEAKICAgICAtLS0tLS0tLS0KICAgICAgICAgICAgcGljayByYW5kb20gZWxlbWVudAogICAgICAgICAgICBwaWNrIHJhbmRvbSBzYW1wbGUKKyAgICAgICAgICAgcGljayB3ZWlnaHRlZCByYW5kb20gc2FtcGxlCiAgICAgICAgICAgIGdlbmVyYXRlIHJhbmRvbSBwZXJtdXRhdGlvbgogCiAgICAgZGlzdHJpYnV0aW9ucyBvbiB0aGUgcmVhbCBsaW5lOgpAQCAtNDMsMTIgKzQ0LDE0IEBACiBmcm9tIG9zIGltcG9ydCB1cmFuZG9tIGFzIF91cmFuZG9tCiBmcm9tIF9jb2xsZWN0aW9uc19hYmMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKIGZyb20gaGFzaGxpYiBpbXBvcnQgc2hhNTEyIGFzIF9zaGE1MTIKK2ltcG9ydCBpdGVydG9vbHMgYXMgX2l0ZXJ0b29scworaW1wb3J0IGJpc2VjdCBhcyBfYmlzZWN0CiAKIF9fYWxsX18gPSBbIlJhbmRvbSIsInNlZWQiLCJyYW5kb20iLCJ1bmlmb3JtIiwicmFuZGludCIsImNob2ljZSIsInNhbXBsZSIsCiAgICAgICAgICAgICJyYW5kcmFuZ2UiLCJzaHVmZmxlIiwibm9ybWFsdmFyaWF0ZSIsImxvZ25vcm12YXJpYXRlIiwKICAgICAgICAgICAgImV4cG92YXJpYXRlIiwidm9ubWlzZXN2YXJpYXRlIiwiZ2FtbWF2YXJpYXRlIiwidHJpYW5ndWxhciIsCiAgICAgICAgICAgICJnYXVzcyIsImJldGF2YXJpYXRlIiwicGFyZXRvdmFyaWF0ZSIsIndlaWJ1bGx2YXJpYXRlIiwKLSAgICAgICAgICAgImdldHN0YXRlIiwic2V0c3RhdGUiLCAiZ2V0cmFuZGJpdHMiLAorICAgICAgICAgICAiZ2V0c3RhdGUiLCJzZXRzdGF0ZSIsICJnZXRyYW5kYml0cyIsICJjaG9pY2VzIiwKICAgICAgICAgICAgIlN5c3RlbVJhbmRvbSJdCiAKIE5WX01BR0lDQ09OU1QgPSA0ICogX2V4cCgtMC41KS9fc3FydCgyLjApCkBAIC0xMDUsMTUgKzEwOCw2IEBACiAKICAgICAgICAgIiIiCiAKLSAgICAgICAgaWYgYSBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgU2VlZCB3aXRoIGVub3VnaCBieXRlcyB0byBzcGFuIHRoZSAxOTkzNyBiaXQKLSAgICAgICAgICAgICAgICAjIHN0YXRlIHNwYWNlIGZvciB0aGUgTWVyc2VubmUgVHdpc3RlcgotICAgICAgICAgICAgICAgIGEgPSBpbnQuZnJvbV9ieXRlcyhfdXJhbmRvbSgyNTAwKSwgJ2JpZycpCi0gICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBpbXBvcnQgdGltZQotICAgICAgICAgICAgICAgIGEgPSBpbnQodGltZS50aW1lKCkgKiAyNTYpICMgdXNlIGZyYWN0aW9uYWwgc2Vjb25kcwotCiAgICAgICAgIGlmIHZlcnNpb24gPT0gMSBhbmQgaXNpbnN0YW5jZShhLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgeCA9IG9yZChhWzBdKSA8PCA3IGlmIGEgZWxzZSAwCiAgICAgICAgICAgICBmb3IgYyBpbiBhOgpAQCAtMTIxLDEyICsxMTUsMTEgQEAKICAgICAgICAgICAgIHggXj0gbGVuKGEpCiAgICAgICAgICAgICBhID0gLTIgaWYgeCA9PSAtMSBlbHNlIHgKIAotICAgICAgICBpZiB2ZXJzaW9uID09IDI6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIChzdHIsIGJ5dGVzLCBieXRlYXJyYXkpKToKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgICAgIGEgPSBhLmVuY29kZSgpCi0gICAgICAgICAgICAgICAgYSArPSBfc2hhNTEyKGEpLmRpZ2VzdCgpCi0gICAgICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKGEsICdiaWcnKQorICAgICAgICBpZiB2ZXJzaW9uID09IDIgYW5kIGlzaW5zdGFuY2UoYSwgKHN0ciwgYnl0ZXMsIGJ5dGVhcnJheSkpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgorICAgICAgICAgICAgICAgIGEgPSBhLmVuY29kZSgpCisgICAgICAgICAgICBhICs9IF9zaGE1MTIoYSkuZGlnZXN0KCkKKyAgICAgICAgICAgIGEgPSBpbnQuZnJvbV9ieXRlcyhhLCAnYmlnJykKIAogICAgICAgICBzdXBlcigpLnNlZWQoYSkKICAgICAgICAgc2VsZi5nYXVzc19uZXh0ID0gTm9uZQpAQCAtMzQ0LDYgKzMzNywyOCBAQAogICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IHBvcHVsYXRpb25bal0KICAgICAgICAgcmV0dXJuIHJlc3VsdAogCisgICAgZGVmIGNob2ljZXMoc2VsZiwgaywgcG9wdWxhdGlvbiwgd2VpZ2h0cz1Ob25lLCAqLCBjdW1fd2VpZ2h0cz1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIGEgayBzaXplZCBsaXN0IG9mIHBvcHVsYXRpb24gZWxlbWVudHMgY2hvc2VuIHdpdGggcmVwbGFjZW1lbnQuCisKKyAgICAgICAgSWYgdGhlIHJlbGF0aXZlIHdlaWdodHMgb3IgY3VtdWxhdGl2ZSB3ZWlnaHRzIGFyZSBub3Qgc3BlY2lmaWVkLAorICAgICAgICB0aGUgc2VsZWN0aW9ucyBhcmUgbWFkZSB3aXRoIGVxdWFsIHByb2JhYmlsaXR5LgorCisgICAgICAgICIiIgorICAgICAgICBpZiBjdW1fd2VpZ2h0cyBpcyBOb25lOgorICAgICAgICAgICAgaWYgd2VpZ2h0cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNob2ljZSA9IHNlbGYuY2hvaWNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFtjaG9pY2UocG9wdWxhdGlvbikgZm9yIGkgaW4gcmFuZ2UoayldCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGN1bV93ZWlnaHRzID0gbGlzdChfaXRlcnRvb2xzLmFjY3VtdWxhdGUod2VpZ2h0cykpCisgICAgICAgIGVsaWYgd2VpZ2h0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IHNwZWNpZnkgYm90aCB3ZWlnaHRzIGFuZCBjdW11bGF0aXZlX3dlaWdodHMnKQorICAgICAgICBpZiBsZW4oY3VtX3dlaWdodHMpICE9IGxlbihwb3B1bGF0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RoZSBudW1iZXIgb2Ygd2VpZ2h0cyBkb2VzIG5vdCBtYXRjaCB0aGUgcG9wdWxhdGlvbicpCisgICAgICAgIGJpc2VjdCA9IF9iaXNlY3QuYmlzZWN0CisgICAgICAgIHJhbmRvbSA9IHNlbGYucmFuZG9tCisgICAgICAgIHRvdGFsID0gY3VtX3dlaWdodHNbLTFdCisgICAgICAgIHJldHVybiBbcG9wdWxhdGlvbltiaXNlY3QoY3VtX3dlaWdodHMsIHJhbmRvbSgpICogdG90YWwpXSBmb3IgaSBpbiByYW5nZShrKV0KKwogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVhbC12YWx1ZWQgZGlzdHJpYnV0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02MTUsMTEgKzYzMCwxMSBAQAogCiAgICAgICAgICMgVGhpcyB2ZXJzaW9uIGR1ZSB0byBKYW5uZSBTaW5ra29uZW4sIGFuZCBtYXRjaGVzIGFsbCB0aGUgc3RkCiAgICAgICAgICMgdGV4dHMgKGUuZy4sIEtudXRoIFZvbCAyIEVkIDMgcGcgMTM0ICJ0aGUgYmV0YSBkaXN0cmlidXRpb24iKS4KLSAgICAgICAgeSA9IHNlbGYuZ2FtbWF2YXJpYXRlKGFscGhhLCAxLikKKyAgICAgICAgeSA9IHNlbGYuZ2FtbWF2YXJpYXRlKGFscGhhLCAxLjApCiAgICAgICAgIGlmIHkgPT0gMDoKICAgICAgICAgICAgIHJldHVybiAwLjAKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB5IC8gKHkgKyBzZWxmLmdhbW1hdmFyaWF0ZShiZXRhLCAxLikpCisgICAgICAgICAgICByZXR1cm4geSAvICh5ICsgc2VsZi5nYW1tYXZhcmlhdGUoYmV0YSwgMS4wKSkKIAogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gUGFyZXRvIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTczNCw2ICs3NDksNyBAQAogcmFuZHJhbmdlID0gX2luc3QucmFuZHJhbmdlCiBzYW1wbGUgPSBfaW5zdC5zYW1wbGUKIHNodWZmbGUgPSBfaW5zdC5zaHVmZmxlCitjaG9pY2VzID0gX2luc3QuY2hvaWNlcwogbm9ybWFsdmFyaWF0ZSA9IF9pbnN0Lm5vcm1hbHZhcmlhdGUKIGxvZ25vcm12YXJpYXRlID0gX2luc3QubG9nbm9ybXZhcmlhdGUKIGV4cG92YXJpYXRlID0gX2luc3QuZXhwb3ZhcmlhdGUKZGlmZiAtLWdpdCBhL0xpYi9yZS5weSBiL0xpYi9yZS5weQppbmRleCBkZGU4OTAxLi4wODUwZjBkIDEwMDY0NAotLS0gYS9MaWIvcmUucHkKKysrIGIvTGliL3JlLnB5CkBAIC0xMTksNyArMTE5LDcgQEAKIAogIiIiCiAKLWltcG9ydCBzeXMKK2ltcG9ydCBlbnVtCiBpbXBvcnQgc3JlX2NvbXBpbGUKIGltcG9ydCBzcmVfcGFyc2UKIHRyeToKQEAgLTEzOCwxOCArMTM4LDI2IEBACiAKIF9fdmVyc2lvbl9fID0gIjIuMi4xIgogCi0jIGZsYWdzCi1BID0gQVNDSUkgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19BU0NJSSAjIGFzc3VtZSBhc2NpaSAibG9jYWxlIgotSSA9IElHTk9SRUNBU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19JR05PUkVDQVNFICMgaWdub3JlIGNhc2UKLUwgPSBMT0NBTEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19MT0NBTEUgIyBhc3N1bWUgY3VycmVudCA4LWJpdCBsb2NhbGUKLVUgPSBVTklDT0RFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVU5JQ09ERSAjIGFzc3VtZSB1bmljb2RlICJsb2NhbGUiCi1NID0gTVVMVElMSU5FID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTVVMVElMSU5FICMgbWFrZSBhbmNob3JzIGxvb2sgZm9yIG5ld2xpbmUKLVMgPSBET1RBTEwgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ET1RBTEwgIyBtYWtlIGRvdCBtYXRjaCBuZXdsaW5lCi1YID0gVkVSQk9TRSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1ZFUkJPU0UgIyBpZ25vcmUgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKLQotIyBzcmUgZXh0ZW5zaW9ucyAoZXhwZXJpbWVudGFsLCBkb24ndCByZWx5IG9uIHRoZXNlKQotVCA9IFRFTVBMQVRFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVEVNUExBVEUgIyBkaXNhYmxlIGJhY2t0cmFja2luZwotREVCVUcgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ERUJVRyAjIGR1bXAgcGF0dGVybiBhZnRlciBjb21waWxhdGlvbgorY2xhc3MgUmVnZXhGbGFnKGVudW0uSW50RmxhZyk6CisgICAgQVNDSUkgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19BU0NJSSAjIGFzc3VtZSBhc2NpaSAibG9jYWxlIgorICAgIElHTk9SRUNBU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19JR05PUkVDQVNFICMgaWdub3JlIGNhc2UKKyAgICBMT0NBTEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19MT0NBTEUgIyBhc3N1bWUgY3VycmVudCA4LWJpdCBsb2NhbGUKKyAgICBVTklDT0RFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVU5JQ09ERSAjIGFzc3VtZSB1bmljb2RlICJsb2NhbGUiCisgICAgTVVMVElMSU5FID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTVVMVElMSU5FICMgbWFrZSBhbmNob3JzIGxvb2sgZm9yIG5ld2xpbmUKKyAgICBET1RBTEwgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ET1RBTEwgIyBtYWtlIGRvdCBtYXRjaCBuZXdsaW5lCisgICAgVkVSQk9TRSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1ZFUkJPU0UgIyBpZ25vcmUgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKKyAgICBBID0gQVNDSUkKKyAgICBJID0gSUdOT1JFQ0FTRQorICAgIEwgPSBMT0NBTEUKKyAgICBVID0gVU5JQ09ERQorICAgIE0gPSBNVUxUSUxJTkUKKyAgICBTID0gRE9UQUxMCisgICAgWCA9IFZFUkJPU0UKKyAgICAjIHNyZSBleHRlbnNpb25zIChleHBlcmltZW50YWwsIGRvbid0IHJlbHkgb24gdGhlc2UpCisgICAgVEVNUExBVEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19URU1QTEFURSAjIGRpc2FibGUgYmFja3RyYWNraW5nCisgICAgVCA9IFRFTVBMQVRFCisgICAgREVCVUcgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ERUJVRyAjIGR1bXAgcGF0dGVybiBhZnRlciBjb21waWxhdGlvbgorZ2xvYmFscygpLnVwZGF0ZShSZWdleEZsYWcuX19tZW1iZXJzX18pCiAKICMgc3JlIGV4Y2VwdGlvbgogZXJyb3IgPSBzcmVfY29tcGlsZS5lcnJvcgpAQCAtMzUzLDcgKzM2MSw3IEBACiAgICAgICAgIGZvciBwaHJhc2UsIGFjdGlvbiBpbiBsZXhpY29uOgogICAgICAgICAgICAgZ2lkID0gcy5vcGVuZ3JvdXAoKQogICAgICAgICAgICAgcC5hcHBlbmQoc3JlX3BhcnNlLlN1YlBhdHRlcm4ocywgWwotICAgICAgICAgICAgICAgIChTVUJQQVRURVJOLCAoZ2lkLCBzcmVfcGFyc2UucGFyc2UocGhyYXNlLCBmbGFncykpKSwKKyAgICAgICAgICAgICAgICAoU1VCUEFUVEVSTiwgKGdpZCwgMCwgMCwgc3JlX3BhcnNlLnBhcnNlKHBocmFzZSwgZmxhZ3MpKSksCiAgICAgICAgICAgICAgICAgXSkpCiAgICAgICAgICAgICBzLmNsb3NlZ3JvdXAoZ2lkLCBwWy0xXSkKICAgICAgICAgcCA9IHNyZV9wYXJzZS5TdWJQYXR0ZXJuKHMsIFsoQlJBTkNILCAoTm9uZSwgcCkpXSkKZGlmZiAtLWdpdCBhL0xpYi9ybGNvbXBsZXRlci5weSBiL0xpYi9ybGNvbXBsZXRlci5weQppbmRleCA0MDFhNjI2Li5iY2E0YTdiIDEwMDY0NAotLS0gYS9MaWIvcmxjb21wbGV0ZXIucHkKKysrIGIvTGliL3JsY29tcGxldGVyLnB5CkBAIC0xMTMsNiArMTEzLDEyIEBACiAgICAgICAgIGZvciB3b3JkIGluIGtleXdvcmQua3dsaXN0OgogICAgICAgICAgICAgaWYgd29yZFs6bl0gPT0gdGV4dDoKICAgICAgICAgICAgICAgICBzZWVuLmFkZCh3b3JkKQorICAgICAgICAgICAgICAgIGlmIHdvcmQgaW4geydmaW5hbGx5JywgJ3RyeSd9OgorICAgICAgICAgICAgICAgICAgICB3b3JkID0gd29yZCArICc6JworICAgICAgICAgICAgICAgIGVsaWYgd29yZCBub3QgaW4geydGYWxzZScsICdOb25lJywgJ1RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdicmVhaycsICdjb250aW51ZScsICdwYXNzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWxzZSd9OgorICAgICAgICAgICAgICAgICAgICB3b3JkID0gd29yZCArICcgJwogICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKHdvcmQpCiAgICAgICAgIGZvciBuc3BhY2UgaW4gW3NlbGYubmFtZXNwYWNlLCBidWlsdGlucy5fX2RpY3RfX106CiAgICAgICAgICAgICBmb3Igd29yZCwgdmFsIGluIG5zcGFjZS5pdGVtcygpOgpAQCAtMTUyLDE0ICsxNTgsMzAgQEAKICAgICAgICAgICAgIHdvcmRzLnVwZGF0ZShnZXRfY2xhc3NfbWVtYmVycyh0aGlzb2JqZWN0Ll9fY2xhc3NfXykpCiAgICAgICAgIG1hdGNoZXMgPSBbXQogICAgICAgICBuID0gbGVuKGF0dHIpCi0gICAgICAgIGZvciB3b3JkIGluIHdvcmRzOgotICAgICAgICAgICAgaWYgd29yZFs6bl0gPT0gYXR0cjoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIodGhpc29iamVjdCwgd29yZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAgIyBFeGNsdWRlIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IHNldAotICAgICAgICAgICAgICAgIHdvcmQgPSBzZWxmLl9jYWxsYWJsZV9wb3N0Zml4KHZhbCwgIiVzLiVzIiAlIChleHByLCB3b3JkKSkKLSAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZCh3b3JkKQorICAgICAgICBpZiBhdHRyID09ICcnOgorICAgICAgICAgICAgbm9wcmVmaXggPSAnXycKKyAgICAgICAgZWxpZiBhdHRyID09ICdfJzoKKyAgICAgICAgICAgIG5vcHJlZml4ID0gJ19fJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbm9wcmVmaXggPSBOb25lCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBmb3Igd29yZCBpbiB3b3JkczoKKyAgICAgICAgICAgICAgICBpZiAod29yZFs6bl0gPT0gYXR0ciBhbmQKKyAgICAgICAgICAgICAgICAgICAgbm90IChub3ByZWZpeCBhbmQgd29yZFs6bisxXSA9PSBub3ByZWZpeCkpOgorICAgICAgICAgICAgICAgICAgICBtYXRjaCA9ICIlcy4lcyIgJSAoZXhwciwgd29yZCkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gZ2V0YXR0cih0aGlzb2JqZWN0LCB3b3JkKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAgIyBJbmNsdWRlIGV2ZW4gaWYgYXR0cmlidXRlIG5vdCBzZXQKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5fY2FsbGFibGVfcG9zdGZpeCh2YWwsIG1hdGNoKQorICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChtYXRjaCkKKyAgICAgICAgICAgIGlmIG1hdGNoZXMgb3Igbm90IG5vcHJlZml4OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBub3ByZWZpeCA9PSAnXyc6CisgICAgICAgICAgICAgICAgbm9wcmVmaXggPSAnX18nCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5vcHJlZml4ID0gTm9uZQogICAgICAgICBtYXRjaGVzLnNvcnQoKQogICAgICAgICByZXR1cm4gbWF0Y2hlcwogCmRpZmYgLS1naXQgYS9MaWIvc2NoZWQucHkgYi9MaWIvc2NoZWQucHkKaW5kZXggYjQ3NjQ4ZC4uYmQ3YzBmMSAxMDA2NDQKLS0tIGEvTGliL3NjaGVkLnB5CisrKyBiL0xpYi9zY2hlZC5weQpAQCAtNDYsNiArNDYsMTcgQEAKICAgICBkZWYgX19ndF9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPiAgKG8udGltZSwgby5wcmlvcml0eSkKICAgICBkZWYgX19nZV9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPj0gKG8udGltZSwgby5wcmlvcml0eSkKIAorRXZlbnQudGltZS5fX2RvY19fID0gKCcnJ051bWVyaWMgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUKK3RpbWVmdW5jIGZ1bmN0aW9uIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuJycnKQorRXZlbnQucHJpb3JpdHkuX19kb2NfXyA9ICgnJydFdmVudHMgc2NoZWR1bGVkIGZvciB0aGUgc2FtZSB0aW1lIHdpbGwgYmUgZXhlY3V0ZWQKK2luIHRoZSBvcmRlciBvZiB0aGVpciBwcmlvcml0eS4nJycpCitFdmVudC5hY3Rpb24uX19kb2NfXyA9ICgnJydFeGVjdXRpbmcgdGhlIGV2ZW50IG1lYW5zIGV4ZWN1dGluZworYWN0aW9uKCphcmd1bWVudCwgKiprd2FyZ3MpJycnKQorRXZlbnQuYXJndW1lbnQuX19kb2NfXyA9ICgnJydhcmd1bWVudCBpcyBhIHNlcXVlbmNlIGhvbGRpbmcgdGhlIHBvc2l0aW9uYWwKK2FyZ3VtZW50cyBmb3IgdGhlIGFjdGlvbi4nJycpCitFdmVudC5rd2FyZ3MuX19kb2NfXyA9ICgnJydrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGhvbGRpbmcgdGhlIGtleXdvcmQKK2FyZ3VtZW50cyBmb3IgdGhlIGFjdGlvbi4nJycpCisKIF9zZW50aW5lbCA9IG9iamVjdCgpCiAKIGNsYXNzIHNjaGVkdWxlcjoKZGlmZiAtLWdpdCBhL0xpYi9zZWNyZXRzLnB5IGIvTGliL3NlY3JldHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmYTQ1MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9zZWNyZXRzLnB5CkBAIC0wLDAgKzEsNzEgQEAKKyIiIkdlbmVyYXRlIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZyBwc2V1ZG8tcmFuZG9tIG51bWJlcnMgc3VpdGFibGUgZm9yCittYW5hZ2luZyBzZWNyZXRzIHN1Y2ggYXMgYWNjb3VudCBhdXRoZW50aWNhdGlvbiwgdG9rZW5zLCBhbmQgc2ltaWxhci4KKworU2VlIFBFUCA1MDYgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNTA2LworCisiIiIKKworX19hbGxfXyA9IFsnY2hvaWNlJywgJ3JhbmRiZWxvdycsICdyYW5kYml0cycsICdTeXN0ZW1SYW5kb20nLAorICAgICAgICAgICAndG9rZW5fYnl0ZXMnLCAndG9rZW5faGV4JywgJ3Rva2VuX3VybHNhZmUnLAorICAgICAgICAgICAnY29tcGFyZV9kaWdlc3QnLAorICAgICAgICAgICBdCisKKworaW1wb3J0IGJhc2U2NAoraW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgb3MKKworZnJvbSBobWFjIGltcG9ydCBjb21wYXJlX2RpZ2VzdAorZnJvbSByYW5kb20gaW1wb3J0IFN5c3RlbVJhbmRvbQorCitfc3lzcmFuZCA9IFN5c3RlbVJhbmRvbSgpCisKK3JhbmRiaXRzID0gX3N5c3JhbmQuZ2V0cmFuZGJpdHMKK2Nob2ljZSA9IF9zeXNyYW5kLmNob2ljZQorCitkZWYgcmFuZGJlbG93KGV4Y2x1c2l2ZV91cHBlcl9ib3VuZCk6CisgICAgIiIiUmV0dXJuIGEgcmFuZG9tIGludCBpbiB0aGUgcmFuZ2UgWzAsIG4pLiIiIgorICAgIHJldHVybiBfc3lzcmFuZC5fcmFuZGJlbG93KGV4Y2x1c2l2ZV91cHBlcl9ib3VuZCkKKworREVGQVVMVF9FTlRST1BZID0gMzIgICMgbnVtYmVyIG9mIGJ5dGVzIHRvIHJldHVybiBieSBkZWZhdWx0CisKK2RlZiB0b2tlbl9ieXRlcyhuYnl0ZXM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgcmFuZG9tIGJ5dGUgc3RyaW5nIGNvbnRhaW5pbmcgKm5ieXRlcyogYnl0ZXMuCisKKyAgICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZQorICAgIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl9ieXRlcygxNikgICNkb2N0ZXN0OitTS0lQCisgICAgYidcXHhlYnJcXHgxN0QqdFxceGFlXFx4ZDRcXHhlM1NcXHhiNlxceGUyXFx4ZWJQMVxceDhiJworCisgICAgIiIiCisgICAgaWYgbmJ5dGVzIGlzIE5vbmU6CisgICAgICAgIG5ieXRlcyA9IERFRkFVTFRfRU5UUk9QWQorICAgIHJldHVybiBvcy51cmFuZG9tKG5ieXRlcykKKworZGVmIHRva2VuX2hleChuYnl0ZXM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgcmFuZG9tIHRleHQgc3RyaW5nLCBpbiBoZXhhZGVjaW1hbC4KKworICAgIFRoZSBzdHJpbmcgaGFzICpuYnl0ZXMqIHJhbmRvbSBieXRlcywgZWFjaCBieXRlIGNvbnZlcnRlZCB0byB0d28KKyAgICBoZXggZGlnaXRzLiAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUKKyAgICBkZWZhdWx0IGlzIHVzZWQuCisKKyAgICA+Pj4gdG9rZW5faGV4KDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAnZjliZjc4YjlhMThjZTZkNDZhMGNkMmIwYjg2ZGY5ZGEnCisKKyAgICAiIiIKKyAgICByZXR1cm4gYmluYXNjaWkuaGV4bGlmeSh0b2tlbl9ieXRlcyhuYnl0ZXMpKS5kZWNvZGUoJ2FzY2lpJykKKworZGVmIHRva2VuX3VybHNhZmUobmJ5dGVzPU5vbmUpOgorICAgICIiIlJldHVybiBhIHJhbmRvbSBVUkwtc2FmZSB0ZXh0IHN0cmluZywgaW4gQmFzZTY0IGVuY29kaW5nLgorCisgICAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyogcmFuZG9tIGJ5dGVzLiAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAKKyAgICBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzIHVzZWQuCisKKyAgICA+Pj4gdG9rZW5fdXJsc2FmZSgxNikgICNkb2N0ZXN0OitTS0lQCisgICAgJ0RybWh6ZTZFUGN2MGZOXzgxQmotbkEnCisKKyAgICAiIiIKKyAgICB0b2sgPSB0b2tlbl9ieXRlcyhuYnl0ZXMpCisgICAgcmV0dXJuIGJhc2U2NC51cmxzYWZlX2I2NGVuY29kZSh0b2spLnJzdHJpcChiJz0nKS5kZWNvZGUoJ2FzY2lpJykKZGlmZiAtLWdpdCBhL0xpYi9zaGxleC5weSBiL0xpYi9zaGxleC5weQppbmRleCBlY2QyZWZkLi5lODcyNjZmIDEwMDY0NAotLS0gYS9MaWIvc2hsZXgucHkKKysrIGIvTGliL3NobGV4LnB5CkBAIC01LDYgKzUsNyBAQAogIyBwdXNoX3NvdXJjZSgpIGFuZCBwb3Bfc291cmNlKCkgbWFkZSBleHBsaWNpdCBieSBFU1IsIEphbnVhcnkgMjAwMS4KICMgUG9zaXggY29tcGxpYW5jZSwgc3BsaXQoKSwgc3RyaW5nIGFyZ3VtZW50cywgYW5kCiAjIGl0ZXJhdG9yIGludGVyZmFjZSBieSBHdXN0YXZvIE5pZW1leWVyLCBBcHJpbCAyMDAzLgorIyBjaGFuZ2VzIHRvIHRva2VuaXplIG1vcmUgbGlrZSBQb3NpeCBzaGVsbHMgYnkgVmluYXkgU2FqaXAsIEp1bHkgMjAxNi4KIAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKQEAgLTE3LDcgKzE4LDggQEAKIAogY2xhc3Mgc2hsZXg6CiAgICAgIkEgbGV4aWNhbCBhbmFseXplciBjbGFzcyBmb3Igc2ltcGxlIHNoZWxsLWxpa2Ugc3ludGF4ZXMuIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UsCisgICAgICAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzPUZhbHNlKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShpbnN0cmVhbSwgc3RyKToKICAgICAgICAgICAgIGluc3RyZWFtID0gU3RyaW5nSU8oaW5zdHJlYW0pCiAgICAgICAgIGlmIGluc3RyZWFtIGlzIG5vdCBOb25lOgpAQCAtNDksNiArNTEsMTkgQEAKICAgICAgICAgc2VsZi50b2tlbiA9ICcnCiAgICAgICAgIHNlbGYuZmlsZXN0YWNrID0gZGVxdWUoKQogICAgICAgICBzZWxmLnNvdXJjZSA9IE5vbmUKKyAgICAgICAgaWYgbm90IHB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnMgPSAnJworICAgICAgICBlbGlmIHB1bmN0dWF0aW9uX2NoYXJzIGlzIFRydWU6CisgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycyA9ICcoKTs8PnwmJworICAgICAgICBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzID0gcHVuY3R1YXRpb25fY2hhcnMKKyAgICAgICAgaWYgcHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAjIF9wdXNoYmFja19jaGFycyBpcyBhIHB1c2ggYmFjayBxdWV1ZSB1c2VkIGJ5IGxvb2thaGVhZCBsb2dpYworICAgICAgICAgICAgc2VsZi5fcHVzaGJhY2tfY2hhcnMgPSBkZXF1ZSgpCisgICAgICAgICAgICAjIHRoZXNlIGNoYXJzIGFkZGVkIGJlY2F1c2UgYWxsb3dlZCBpbiBmaWxlIG5hbWVzLCBhcmdzLCB3aWxkY2FyZHMKKyAgICAgICAgICAgIHNlbGYud29yZGNoYXJzICs9ICd+LS4vKj89JworICAgICAgICAgICAgI3JlbW92ZSBhbnkgcHVuY3R1YXRpb24gY2hhcnMgZnJvbSB3b3JkY2hhcnMKKyAgICAgICAgICAgIHQgPSBzZWxmLndvcmRjaGFycy5tYWtldHJhbnMoZGljdC5mcm9ta2V5cyhwdW5jdHVhdGlvbl9jaGFycykpCisgICAgICAgICAgICBzZWxmLndvcmRjaGFycyA9IHNlbGYud29yZGNoYXJzLnRyYW5zbGF0ZSh0KQogCiAgICAgZGVmIHB1c2hfdG9rZW4oc2VsZiwgdG9rKToKICAgICAgICAgIlB1c2ggYSB0b2tlbiBvbnRvIHRoZSBzdGFjayBwb3BwZWQgYnkgdGhlIGdldF90b2tlbiBtZXRob2QiCkBAIC0xMTUsMTIgKzEzMCwxNSBAQAogICAgICAgICBxdW90ZWQgPSBGYWxzZQogICAgICAgICBlc2NhcGVkc3RhdGUgPSAnICcKICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5pbnN0cmVhbS5yZWFkKDEpCisgICAgICAgICAgICBpZiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzIGFuZCBzZWxmLl9wdXNoYmFja19jaGFyczoKKyAgICAgICAgICAgICAgICBuZXh0Y2hhciA9IHNlbGYuX3B1c2hiYWNrX2NoYXJzLnBvcCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5pbnN0cmVhbS5yZWFkKDEpCiAgICAgICAgICAgICBpZiBuZXh0Y2hhciA9PSAnXG4nOgotICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5saW5lbm8gKyAxCisgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gKz0gMQogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAzOgotICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogaW4gc3RhdGUiLCByZXByKHNlbGYuc3RhdGUpLCBcCi0gICAgICAgICAgICAgICAgICAgICAgIkkgc2VlIGNoYXJhY3RlcjoiLCByZXByKG5leHRjaGFyKSkKKyAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IGluIHN0YXRlICVyIEkgc2VlIGNoYXJhY3RlcjogJXIiICUgKHNlbGYuc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Y2hhcikpCiAgICAgICAgICAgICBpZiBzZWxmLnN0YXRlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9ICcnICAgICAgICAjIHBhc3QgZW5kIG9mIGZpbGUKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTM3LDEzICsxNTUsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLmNvbW1lbnRlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdHJlYW0ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYubGluZW5vICsgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICAgICAgZWxpZiBzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZToKICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZHN0YXRlID0gJ2EnCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi53b3JkY2hhcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2EnCisgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICdjJwogICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5xdW90ZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnBvc2l4OgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IG5leHRjaGFyCkBAIC0xNjYsMTcgKzE4NywxNyBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyBjbG9zaW5nIHF1b3RhdGlvbiIpCiAgICAgICAgICAgICAgICAgaWYgbmV4dGNoYXIgPT0gc2VsZi5zdGF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucG9zaXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICdhJwotICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGUgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgaW4gc2VsZi5lc2NhcGVkcXVvdGVzOgorICAgICAgICAgICAgICAgIGVsaWYgKHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlIGFuZCBzZWxmLnN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgaW4gc2VsZi5lc2NhcGVkcXVvdGVzKToKICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZHN0YXRlID0gc2VsZi5zdGF0ZQogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSBpbiBzZWxmLmVzY2FwZToKICAgICAgICAgICAgICAgICBpZiBub3QgbmV4dGNoYXI6ICAgICAgIyBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDI6CkBAIC0xODUsMTIgKzIwNiwxMiBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyBlc2NhcGVkIGNoYXJhY3RlciIpCiAgICAgICAgICAgICAgICAgIyBJbiBwb3NpeCBzaGVsbHMsIG9ubHkgdGhlIHF1b3RlIGl0c2VsZiBvciB0aGUgZXNjYXBlCiAgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgbWF5IGJlIGVzY2FwZWQgd2l0aGluIHF1b3Rlcy4KLSAgICAgICAgICAgICAgICBpZiBlc2NhcGVkc3RhdGUgaW4gc2VsZi5xdW90ZXMgYW5kIFwKLSAgICAgICAgICAgICAgICAgICBuZXh0Y2hhciAhPSBzZWxmLnN0YXRlIGFuZCBuZXh0Y2hhciAhPSBlc2NhcGVkc3RhdGU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgc2VsZi5zdGF0ZQotICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZHN0YXRlIGluIHNlbGYucXVvdGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGNoYXIgIT0gc2VsZi5zdGF0ZSBhbmQgbmV4dGNoYXIgIT0gZXNjYXBlZHN0YXRlKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBzZWxmLnN0YXRlCisgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBlc2NhcGVkc3RhdGUKLSAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSAnYSc6CisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgaW4gKCdhJywgJ2MnKToKICAgICAgICAgICAgICAgICBpZiBub3QgbmV4dGNoYXI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBOb25lICAgIyBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMjA0LDcgKzIyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5jb21tZW50ZXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmluc3RyZWFtLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmxpbmVubyArIDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gKz0gMQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnBvc2l4OgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi50b2tlbiBvciAoc2VsZi5wb3NpeCBhbmQgcXVvdGVkKToKQEAgLTIxNiwxMSArMjM3LDIyIEBACiAgICAgICAgICAgICAgICAgZWxpZiBzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZToKICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZHN0YXRlID0gJ2EnCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXh0Y2hhcgotICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi53b3JkY2hhcnMgb3IgbmV4dGNoYXIgaW4gc2VsZi5xdW90ZXMgXAotICAgICAgICAgICAgICAgICAgICBvciBzZWxmLndoaXRlc3BhY2Vfc3BsaXQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gJ2MnOgorICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciBpbiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV4dGNoYXIgbm90IGluIHNlbGYud2hpdGVzcGFjZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycy5hcHBlbmQobmV4dGNoYXIpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsaWYgKG5leHRjaGFyIGluIHNlbGYud29yZGNoYXJzIG9yIG5leHRjaGFyIGluIHNlbGYucXVvdGVzCisgICAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi53aGl0ZXNwYWNlX3NwbGl0KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucHVzaGJhY2suYXBwZW5kbGVmdChuZXh0Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5wdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3B1c2hiYWNrX2NoYXJzLmFwcGVuZChuZXh0Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHVzaGJhY2suYXBwZW5kbGVmdChuZXh0Y2hhcikKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBJIHNlZSBwdW5jdHVhdGlvbiBpbiB3b3JkIHN0YXRlIikKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJwpkaWZmIC0tZ2l0IGEvTGliL3NodXRpbC5weSBiL0xpYi9zaHV0aWwucHkKaW5kZXggZGM5ZjJlYi4uOWQxOTNiNSAxMDA2NDQKLS0tIGEvTGliL3NodXRpbC5weQorKysgYi9MaWIvc2h1dGlsLnB5CkBAIC05NzQsNiArOTc0LDkgQEAKIAogICAgIF9fYWxsX18uYXBwZW5kKCdkaXNrX3VzYWdlJykKICAgICBfbnR1cGxlX2Rpc2t1c2FnZSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ3VzYWdlJywgJ3RvdGFsIHVzZWQgZnJlZScpCisgICAgX250dXBsZV9kaXNrdXNhZ2UudG90YWwuX19kb2NfXyA9ICdUb3RhbCBzcGFjZSBpbiBieXRlcycKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZS51c2VkLl9fZG9jX18gPSAnVXNlZCBzcGFjZSBpbiBieXRlcycKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZS5mcmVlLl9fZG9jX18gPSAnRnJlZSBzcGFjZSBpbiBieXRlcycKIAogICAgIGRlZiBkaXNrX3VzYWdlKHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoLgpkaWZmIC0tZ2l0IGEvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dCBiL0xpYi9zaXRlLXBhY2thZ2VzL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjczZjYyNQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9zaXRlLXBhY2thZ2VzL1JFQURNRS50eHQKQEAgLTAsMCArMSwyIEBACitUaGlzIGRpcmVjdG9yeSBleGlzdHMgc28gdGhhdCAzcmQgcGFydHkgcGFja2FnZXMgY2FuIGJlIGluc3RhbGxlZAoraGVyZS4gIFJlYWQgdGhlIHNvdXJjZSBmb3Igc2l0ZS5weSBmb3IgbW9yZSBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvTGliL3NpdGUucHkgYi9MaWIvc2l0ZS5weQppbmRleCAzZjc4ZWY1Li5iNjM3NjM1IDEwMDY0NAotLS0gYS9MaWIvc2l0ZS5weQorKysgYi9MaWIvc2l0ZS5weQpAQCAtNjAsNyArNjAsOCBAQAogCiBUaGUgcmVhZGxpbmUgbW9kdWxlIGlzIGFsc28gYXV0b21hdGljYWxseSBjb25maWd1cmVkIHRvIGVuYWJsZQogY29tcGxldGlvbiBmb3Igc3lzdGVtcyB0aGF0IHN1cHBvcnQgaXQuICBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGluCi1zaXRlY3VzdG9taXplLCB1c2VyY3VzdG9taXplIG9yIFBZVEhPTlNUQVJUVVAuCitzaXRlY3VzdG9taXplLCB1c2VyY3VzdG9taXplIG9yIFBZVEhPTlNUQVJUVVAuICBTdGFydGluZyBQeXRob24gaW4KK2lzb2xhdGVkIG1vZGUgKC1JKSBkaXNhYmxlcyBhdXRvbWF0aWMgcmVhZGxpbmUgY29uZmlndXJhdGlvbi4KIAogQWZ0ZXIgdGhlc2Ugb3BlcmF0aW9ucywgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGltcG9ydCBhIG1vZHVsZQogbmFtZWQgc2l0ZWN1c3RvbWl6ZSwgd2hpY2ggY2FuIHBlcmZvcm0gYXJiaXRyYXJ5IGFkZGl0aW9uYWwKQEAgLTEzMSwxMyArMTMyLDEzIEBACiAKIAogZGVmIF9pbml0X3BhdGhpbmZvKCk6Ci0gICAgIiIiUmV0dXJuIGEgc2V0IGNvbnRhaW5pbmcgYWxsIGV4aXN0aW5nIGRpcmVjdG9yeSBlbnRyaWVzIGZyb20gc3lzLnBhdGgiIiIKKyAgICAiIiJSZXR1cm4gYSBzZXQgY29udGFpbmluZyBhbGwgZXhpc3RpbmcgZmlsZSBzeXN0ZW0gaXRlbXMgZnJvbSBzeXMucGF0aC4iIiIKICAgICBkID0gc2V0KCkKLSAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgorICAgIGZvciBpdGVtIGluIHN5cy5wYXRoOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGRpcik6Ci0gICAgICAgICAgICAgICAgZGlyLCBkaXJjYXNlID0gbWFrZXBhdGgoZGlyKQotICAgICAgICAgICAgICAgIGQuYWRkKGRpcmNhc2UpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhpdGVtKToKKyAgICAgICAgICAgICAgICBfLCBpdGVtY2FzZSA9IG1ha2VwYXRoKGl0ZW0pCisgICAgICAgICAgICAgICAgZC5hZGQoaXRlbWNhc2UpCiAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICBjb250aW51ZQogICAgIHJldHVybiBkCkBAIC0xNTAsOSArMTUxLDkgQEAKICAgICAiIiIKICAgICBpZiBrbm93bl9wYXRocyBpcyBOb25lOgogICAgICAgICBrbm93bl9wYXRocyA9IF9pbml0X3BhdGhpbmZvKCkKLSAgICAgICAgcmVzZXQgPSAxCisgICAgICAgIHJlc2V0ID0gVHJ1ZQogICAgIGVsc2U6Ci0gICAgICAgIHJlc2V0ID0gMAorICAgICAgICByZXNldCA9IEZhbHNlCiAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4oc2l0ZWRpciwgbmFtZSkKICAgICB0cnk6CiAgICAgICAgIGYgPSBvcGVuKGZ1bGxuYW1lLCAiciIpCkBAIC0xOTAsOSArMTkxLDkgQEAKICAgICAnc2l0ZWRpciciIiIKICAgICBpZiBrbm93bl9wYXRocyBpcyBOb25lOgogICAgICAgICBrbm93bl9wYXRocyA9IF9pbml0X3BhdGhpbmZvKCkKLSAgICAgICAgcmVzZXQgPSAxCisgICAgICAgIHJlc2V0ID0gVHJ1ZQogICAgIGVsc2U6Ci0gICAgICAgIHJlc2V0ID0gMAorICAgICAgICByZXNldCA9IEZhbHNlCiAgICAgc2l0ZWRpciwgc2l0ZWRpcmNhc2UgPSBtYWtlcGF0aChzaXRlZGlyKQogICAgIGlmIG5vdCBzaXRlZGlyY2FzZSBpbiBrbm93bl9wYXRoczoKICAgICAgICAgc3lzLnBhdGguYXBwZW5kKHNpdGVkaXIpICAgICAgICAjIEFkZCBwYXRoIGNvbXBvbmVudApAQCAtMzA0LDcgKzMwNSw3IEBACiAKICAgICAgICAgaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkLiVkIiAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKHByZWZpeCkKQEAgLTMxNyw3ICszMTgsNyBAQAogICAgICAgICAgICAgaWYgZnJhbWV3b3JrOgogICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oIi9MaWJyYXJ5IiwgZnJhbWV3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwgInNpdGUtcGFja2FnZXMiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sICJzaXRlLXBhY2thZ2VzIikpCiAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwogCiBkZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzLCBwcmVmaXhlcz1Ob25lKToKQEAgLTQyMywyMSArNDI0LDYgQEAKIAogICAgIHN5cy5fX2ludGVyYWN0aXZlaG9va19fID0gcmVnaXN0ZXJfcmVhZGxpbmUKIAotZGVmIGFsaWFzbWJjcygpOgotICAgICIiIk9uIFdpbmRvd3MsIHNvbWUgZGVmYXVsdCBlbmNvZGluZ3MgYXJlIG5vdCBwcm92aWRlZCBieSBQeXRob24sCi0gICAgd2hpbGUgdGhleSBhcmUgYWx3YXlzIGF2YWlsYWJsZSBhcyAibWJjcyIgaW4gZWFjaCBsb2NhbGUuIE1ha2UKLSAgICB0aGVtIHVzYWJsZSBieSBhbGlhc2luZyB0byAibWJjcyIgaW4gc3VjaCBhIGNhc2UuIiIiCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZSwgY29kZWNzCi0gICAgICAgIGVuYyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQotICAgICAgICBpZiBlbmMuc3RhcnRzd2l0aCgnY3AnKTogICAgICAgICAgICAjICJjcCoqKiIgPwotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvZGVjcy5sb29rdXAoZW5jKQotICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgotICAgICAgICAgICAgICAgIGltcG9ydCBlbmNvZGluZ3MKLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuX2NhY2hlW2VuY10gPSBlbmNvZGluZ3MuX3Vua25vd24KLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuYWxpYXNlcy5hbGlhc2VzW2VuY10gPSAnbWJjcycKLQogQ09ORklHX0xJTkUgPSByJ14oP1A8a2V5Pihcd3xbLV9dKSspXHMqPVxzKig/UDx2YWx1ZT4uKilccyokJwogCiBkZWYgdmVudihrbm93bl9wYXRocyk6CkBAIC00NzgsMTIgKzQ2NCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fc2l0ZSA9IHZhbHVlLmxvd2VyKCkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2hvbWUnOgogICAgICAgICAgICAgICAgICAgICAgICAgc3lzLl9ob21lID0gdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2FwcGxvY2FsJyBhbmQgdmFsdWUubG93ZXIoKSA9PSAndHJ1ZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEFwcC1sb2NhbCBpbnN0YWxscyB1c2UgdGhlIGV4ZV9kaXIgYXMgcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgIyBub3Qgb25lIGxldmVsIGhpZ2hlciwgYW5kIGRvIG5vdCB1c2Ugc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHNpdGUgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXRlX3ByZWZpeCA9IGV4ZV9kaXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gJ2ZhbHNlJwogCiAgICAgICAgIHN5cy5wcmVmaXggPSBzeXMuZXhlY19wcmVmaXggPSBzaXRlX3ByZWZpeAogCkBAIC01MDQsMTEgKzQ4NCwxNSBAQAogZGVmIGV4ZWNzaXRlY3VzdG9taXplKCk6CiAgICAgIiIiUnVuIGN1c3RvbSBzaXRlIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBzaXRlY3VzdG9taXplCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBzaXRlY3VzdG9taXplCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMubmFtZSA9PSAnc2l0ZWN1c3RvbWl6ZSc6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgotICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVkVSQk9TRSIpOgorICAgICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZToKICAgICAgICAgICAgIHN5cy5leGNlcHRob29rKCpzeXMuZXhjX2luZm8oKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCkBAIC01MjAsMTEgKzUwNCwxNSBAQAogZGVmIGV4ZWN1c2VyY3VzdG9taXplKCk6CiAgICAgIiIiUnVuIGN1c3RvbSB1c2VyIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB1c2VyY3VzdG9taXplCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB1c2VyY3VzdG9taXplCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMubmFtZSA9PSAndXNlcmN1c3RvbWl6ZSc6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgotICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVkVSQk9TRSIpOgorICAgICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZToKICAgICAgICAgICAgIHN5cy5leGNlcHRob29rKCpzeXMuZXhjX2luZm8oKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCkBAIC01NTEsMTMgKzUzOSwxMyBAQAogICAgIHNldHF1aXQoKQogICAgIHNldGNvcHlyaWdodCgpCiAgICAgc2V0aGVscGVyKCkKLSAgICBlbmFibGVybGNvbXBsZXRlcigpCi0gICAgYWxpYXNtYmNzKCkKKyAgICBpZiBub3Qgc3lzLmZsYWdzLmlzb2xhdGVkOgorICAgICAgICBlbmFibGVybGNvbXBsZXRlcigpCiAgICAgZXhlY3NpdGVjdXN0b21pemUoKQogICAgIGlmIEVOQUJMRV9VU0VSX1NJVEU6CiAgICAgICAgIGV4ZWN1c2VyY3VzdG9taXplKCkKIAotIyBQcmV2ZW50IGVkaXRpb24gb2Ygc3lzLnBhdGggd2hlbiBweXRob24gd2FzIHN0YXJ0ZWQgd2l0aCAtUyBhbmQKKyMgUHJldmVudCBleHRlbmRpbmcgb2Ygc3lzLnBhdGggd2hlbiBweXRob24gd2FzIHN0YXJ0ZWQgd2l0aCAtUyBhbmQKICMgc2l0ZSBpcyBpbXBvcnRlZCBsYXRlci4KIGlmIG5vdCBzeXMuZmxhZ3Mubm9fc2l0ZToKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9zbXRwZC5weSBiL0xpYi9zbXRwZC5weQppbmRleCA3MzIwNjZlLi44MTAzY2E5IDEwMDc1NQotLS0gYS9MaWIvc210cGQucHkKKysrIGIvTGliL3NtdHBkLnB5CkBAIC04OSw3ICs4OSwxMCBAQAogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogZnJvbSBlbWFpbC5faGVhZGVyX3ZhbHVlX3BhcnNlciBpbXBvcnQgZ2V0X2FkZHJfc3BlYywgZ2V0X2FuZ2xlX2FkZHIKIAotX19hbGxfXyA9IFsiU01UUFNlcnZlciIsIkRlYnVnZ2luZ1NlcnZlciIsIlB1cmVQcm94eSIsIk1haWxtYW5Qcm94eSJdCitfX2FsbF9fID0gWworICAgICJTTVRQQ2hhbm5lbCIsICJTTVRQU2VydmVyIiwgIkRlYnVnZ2luZ1NlcnZlciIsICJQdXJlUHJveHkiLAorICAgICJNYWlsbWFuUHJveHkiLAorXQogCiBwcm9ncmFtID0gc3lzLmFyZ3ZbMF0KIF9fdmVyc2lvbl9fID0gJ1B5dGhvbiBTTVRQIHByb3h5IHZlcnNpb24gMC4zJwpAQCAtMTI4LDI0ICsxMzEsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULAotICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1Ob25lKToKKyAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4sIG1hcD1tYXApCiAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICAgc2VsZi5jb25uID0gY29ubgogICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCiAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIHNlbGYuZW5hYmxlX1NNVFBVVEY4ID0gZW5hYmxlX1NNVFBVVEY4Ci0gICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGODoKLSAgICAgICAgICAgIGlmIGRlY29kZV9kYXRhOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggY2Fubm90IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUgc2FtZSB0aW1lIikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gRmFsc2UKLSAgICAgICAgaWYgZGVjb2RlX2RhdGEgaXMgTm9uZToKLSAgICAgICAgICAgIHdhcm4oIlRoZSBkZWNvZGVfZGF0YSBkZWZhdWx0IG9mIFRydWUgd2lsbCBjaGFuZ2UgdG8gRmFsc2UgaW4gMy42OyIKLSAgICAgICAgICAgICAgICAgIiBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciB0aGlzIGtleXdvcmQiLAotICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IFRydWUKICAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEgPSBkZWNvZGVfZGF0YQorICAgICAgICBpZiBlbmFibGVfU01UUFVURjggYW5kIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYmUgc2V0IHRvIFRydWUgYXQgdGhlIHNhbWUgdGltZSIpCiAgICAgICAgIGlmIGRlY29kZV9kYXRhOgogICAgICAgICAgICAgc2VsZi5fZW1wdHlzdHJpbmcgPSAnJwogICAgICAgICAgICAgc2VsZi5fbGluZXNlcCA9ICdcclxuJwpAQCAtNjM1LDIzICs2MzEsMTUgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIsCiAgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwgbWFwPU5vbmUsCi0gICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpOgogICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBsb2NhbGFkZHIKICAgICAgICAgc2VsZi5fcmVtb3RlYWRkciA9IHJlbW90ZWFkZHIKICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjggPSBlbmFibGVfU01UUFVURjgKLSAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgotICAgICAgICAgICAgaWYgZGVjb2RlX2RhdGE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIGRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjgiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHBhcmFtZXRlcnMgY2Fubm90IGJlIHNldCB0byBUcnVlIGF0IHRoZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc2FtZSB0aW1lLiIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IEZhbHNlCi0gICAgICAgIGlmIGRlY29kZV9kYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICB3YXJuKCJUaGUgZGVjb2RlX2RhdGEgZGVmYXVsdCBvZiBUcnVlIHdpbGwgY2hhbmdlIHRvIEZhbHNlIGluIDMuNjsiCi0gICAgICAgICAgICAgICAgICIgc3BlY2lmeSBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBrZXl3b3JkIiwKLSAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBUcnVlCiAgICAgICAgIHNlbGYuX2RlY29kZV9kYXRhID0gZGVjb2RlX2RhdGEKKyAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4IGFuZCBkZWNvZGVfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggY2Fubm90IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQogICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1tYXApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGdhaV9yZXN1bHRzID0gc29ja2V0LmdldGFkZHJpbmZvKCpsb2NhbGFkZHIsCkBAIC02OTgsOSArNjg2LDkgQEAKICAgICAgICAgY29udGFpbmluZyBhIGAuJyBmb2xsb3dlZCBieSBvdGhlciB0ZXh0IGhhcyBoYWQgdGhlIGxlYWRpbmcgZG90CiAgICAgICAgIHJlbW92ZWQuCiAKLSAgICAgICAga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5Ci0gICAgICAgIHVubGVzcyBkZWNvZGVfZGF0YT1GYWxzZSBvciBlbmFibGVfU01UUFVURjg9VHJ1ZSB3YXMgZ2l2ZW4gYXMgaW5pdAotICAgICAgICBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgdXQgd2lsbCBjb250YWluIHRoZSBmb2xsb3dpbmcga2V5czoKKyAgICAgICAga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBJdCBpcworICAgICAgICBlbXB0eSBpZiBkZWNvZGVfZGF0YT1UcnVlIHdhcyBnaXZlbiBhcyBpbml0IHBhcmFtZXRlciwgb3RoZXJ3aXNlCisgICAgICAgIGl0IHdpbGwgY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6CiAgICAgICAgICAgICAnbWFpbF9vcHRpb25zJzogbGlzdCBvZiBwYXJhbWV0ZXJzIHRvIHRoZSBtYWlsIGNvbW1hbmQuICBBbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyBhcmUgdXBwZXJjYXNlIHN0cmluZ3MuICBFeGFtcGxlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddLgpkaWZmIC0tZ2l0IGEvTGliL3NtdHBsaWIucHkgYi9MaWIvc210cGxpYi5weQppbmRleCA1YjllNjY1Li5mN2MyYzc3IDEwMDc1NQotLS0gYS9MaWIvc210cGxpYi5weQorKysgYi9MaWIvc210cGxpYi5weQpAQCAtNzU5LDYgKzc1OSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPWtleWZpbGUpCkBAIC0xMDExLDYgKzEwMTUsMTAgQEAKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvc25kaGRyLnB5IGIvTGliL3NuZGhkci5weQppbmRleCBlNTkwMWVjLi43ZWNhZmI0IDEwMDY0NAotLS0gYS9MaWIvc25kaGRyLnB5CisrKyBiL0xpYi9zbmRoZHIucHkKQEAgLTM3LDYgKzM3LDE4IEBACiBTbmRIZWFkZXJzID0gbmFtZWR0dXBsZSgnU25kSGVhZGVycycsCiAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXR5cGUgZnJhbWVyYXRlIG5jaGFubmVscyBuZnJhbWVzIHNhbXB3aWR0aCcpCiAKK1NuZEhlYWRlcnMuZmlsZXR5cGUuX19kb2NfXyA9ICgiIiJUaGUgdmFsdWUgZm9yIHR5cGUgaW5kaWNhdGVzIHRoZSBkYXRhIHR5cGUKK2FuZCB3aWxsIGJlIG9uZSBvZiB0aGUgc3RyaW5ncyAnYWlmYycsICdhaWZmJywgJ2F1JywnaGNvbScsCisnc25kcicsICdzbmR0JywgJ3ZvYycsICd3YXYnLCAnOHN2eCcsICdzYicsICd1YicsIG9yICd1bCcuIiIiKQorU25kSGVhZGVycy5mcmFtZXJhdGUuX19kb2NfXyA9ICgiIiJUaGUgc2FtcGxpbmdfcmF0ZSB3aWxsIGJlIGVpdGhlciB0aGUgYWN0dWFsCit2YWx1ZSBvciAwIGlmIHVua25vd24gb3IgZGlmZmljdWx0IHRvIGRlY29kZS4iIiIpCitTbmRIZWFkZXJzLm5jaGFubmVscy5fX2RvY19fID0gKCIiIlRoZSBudW1iZXIgb2YgY2hhbm5lbHMgb3IgMCBpZiBpdCBjYW5ub3QgYmUKK2RldGVybWluZWQgb3IgaWYgdGhlIHZhbHVlIGlzIGRpZmZpY3VsdCB0byBkZWNvZGUuIiIiKQorU25kSGVhZGVycy5uZnJhbWVzLl9fZG9jX18gPSAoIiIiVGhlIHZhbHVlIGZvciBmcmFtZXMgd2lsbCBiZSBlaXRoZXIgdGhlIG51bWJlcgorb2YgZnJhbWVzIG9yIC0xLiIiIikKK1NuZEhlYWRlcnMuc2FtcHdpZHRoLl9fZG9jX18gPSAoIiIiRWl0aGVyIHRoZSBzYW1wbGUgc2l6ZSBpbiBiaXRzIG9yCisnQScgZm9yIEEtTEFXIG9yICdVJyBmb3IgdS1MQVcuIiIiKQorCiBkZWYgd2hhdChmaWxlbmFtZSk6CiAgICAgIiIiR3Vlc3MgdGhlIHR5cGUgb2YgYSBzb3VuZCBmaWxlLiIiIgogICAgIHJlcyA9IHdoYXRoZHIoZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0LnB5IGIvTGliL3NvY2tldC5weQppbmRleCBhOWNhYjMyLi43NDBlNzE3IDEwMDY0NAotLS0gYS9MaWIvc29ja2V0LnB5CisrKyBiL0xpYi9zb2NrZXQucHkKQEAgLTUwLDcgKzUwLDcgQEAKIGZyb20gX3NvY2tldCBpbXBvcnQgKgogCiBpbXBvcnQgb3MsIHN5cywgaW8sIHNlbGVjdG9ycwotZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVtCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0sIEludEZsYWcKIAogdHJ5OgogICAgIGltcG9ydCBlcnJubwpAQCAtODAsNiArODAsMTYgQEAKICAgICAgICAgX19uYW1lX18sCiAgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdTT0NLXycpKQogCitJbnRGbGFnLl9jb252ZXJ0KAorICAgICAgICAnTXNnRmxhZycsCisgICAgICAgIF9fbmFtZV9fLAorICAgICAgICBsYW1iZGEgQzogQy5pc3VwcGVyKCkgYW5kIEMuc3RhcnRzd2l0aCgnTVNHXycpKQorCitJbnRGbGFnLl9jb252ZXJ0KAorICAgICAgICAnQWRkcmVzc0luZm8nLAorICAgICAgICBfX25hbWVfXywKKyAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ0FJXycpKQorCiBfTE9DQUxIT1NUICAgID0gJzEyNy4wLjAuMScKIF9MT0NBTEhPU1RfVjYgPSAnOjoxJwogCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0c2VydmVyLnB5IGIvTGliL3NvY2tldHNlcnZlci5weQppbmRleCA4ODA4ODEzLi40MWEzNzY2IDEwMDY0NAotLS0gYS9MaWIvc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKQEAgLTEyNywxNiArMTI3LDIwIEBACiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgb3MKIGltcG9ydCBlcnJubworaW1wb3J0IHN5cwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZworZnJvbSBpbyBpbXBvcnQgQnVmZmVyZWRJT0Jhc2UKIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKIAotX19hbGxfXyA9IFsiQmFzZVNlcnZlciIsICJUQ1BTZXJ2ZXIiLCAiVURQU2VydmVyIiwgIkZvcmtpbmdVRFBTZXJ2ZXIiLAotICAgICAgICAgICAiRm9ya2luZ1RDUFNlcnZlciIsICJUaHJlYWRpbmdVRFBTZXJ2ZXIiLCAiVGhyZWFkaW5nVENQU2VydmVyIiwKK19fYWxsX18gPSBbIkJhc2VTZXJ2ZXIiLCAiVENQU2VydmVyIiwgIlVEUFNlcnZlciIsCisgICAgICAgICAgICJUaHJlYWRpbmdVRFBTZXJ2ZXIiLCAiVGhyZWFkaW5nVENQU2VydmVyIiwKICAgICAgICAgICAgIkJhc2VSZXF1ZXN0SGFuZGxlciIsICJTdHJlYW1SZXF1ZXN0SGFuZGxlciIsCi0gICAgICAgICAgICJEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyIiwgIlRocmVhZGluZ01peEluIiwgIkZvcmtpbmdNaXhJbiJdCisgICAgICAgICAgICJEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyIiwgIlRocmVhZGluZ01peEluIl0KK2lmIGhhc2F0dHIob3MsICJmb3JrIik6CisgICAgX19hbGxfXy5leHRlbmQoWyJGb3JraW5nVURQU2VydmVyIiwiRm9ya2luZ1RDUFNlcnZlciIsICJGb3JraW5nTWl4SW4iXSkKIGlmIGhhc2F0dHIoc29ja2V0LCAiQUZfVU5JWCIpOgogICAgIF9fYWxsX18uZXh0ZW5kKFsiVW5peFN0cmVhbVNlcnZlciIsIlVuaXhEYXRhZ3JhbVNlcnZlciIsCiAgICAgICAgICAgICAgICAgICAgICJUaHJlYWRpbmdVbml4U3RyZWFtU2VydmVyIiwKQEAgLTMxMSw5ICszMTUsMTIgQEAKICAgICAgICAgaWYgc2VsZi52ZXJpZnlfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Vycm9yKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKIApAQCAtMzY3LDEyICszNzQsMTggQEAKICAgICAgICAgVGhlIGRlZmF1bHQgaXMgdG8gcHJpbnQgYSB0cmFjZWJhY2sgYW5kIGNvbnRpbnVlLgogCiAgICAgICAgICIiIgotICAgICAgICBwcmludCgnLScqNDApCi0gICAgICAgIHByaW50KCdFeGNlcHRpb24gaGFwcGVuZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgcmVxdWVzdCBmcm9tJywgZW5kPScgJykKLSAgICAgICAgcHJpbnQoY2xpZW50X2FkZHJlc3MpCisgICAgICAgIHByaW50KCctJyo0MCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBwcmludCgnRXhjZXB0aW9uIGhhcHBlbmVkIGR1cmluZyBwcm9jZXNzaW5nIG9mIHJlcXVlc3QgZnJvbScsCisgICAgICAgICAgICBjbGllbnRfYWRkcmVzcywgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKSAjIFhYWCBCdXQgdGhpcyBnb2VzIHRvIHN0ZGVyciEKLSAgICAgICAgcHJpbnQoJy0nKjQwKQorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICAgICAgcHJpbnQoJy0nKjQwLCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQogCiAKIGNsYXNzIFRDUFNlcnZlcihCYXNlU2VydmVyKToKQEAgLTUyNyw4NSArNTQwLDg2IEBACiAgICAgICAgICMgTm8gbmVlZCB0byBjbG9zZSBhbnl0aGluZy4KICAgICAgICAgcGFzcwogCi1jbGFzcyBGb3JraW5nTWl4SW46CitpZiBoYXNhdHRyKG9zLCAiZm9yayIpOgorICAgIGNsYXNzIEZvcmtpbmdNaXhJbjoKKyAgICAgICAgIiIiTWl4LWluIGNsYXNzIHRvIGhhbmRsZSBlYWNoIHJlcXVlc3QgaW4gYSBuZXcgcHJvY2Vzcy4iIiIKIAotICAgICIiIk1peC1pbiBjbGFzcyB0byBoYW5kbGUgZWFjaCByZXF1ZXN0IGluIGEgbmV3IHByb2Nlc3MuIiIiCisgICAgICAgIHRpbWVvdXQgPSAzMDAKKyAgICAgICAgYWN0aXZlX2NoaWxkcmVuID0gTm9uZQorICAgICAgICBtYXhfY2hpbGRyZW4gPSA0MAogCi0gICAgdGltZW91dCA9IDMwMAotICAgIGFjdGl2ZV9jaGlsZHJlbiA9IE5vbmUKLSAgICBtYXhfY2hpbGRyZW4gPSA0MAotCi0gICAgZGVmIGNvbGxlY3RfY2hpbGRyZW4oc2VsZik6Ci0gICAgICAgICIiIkludGVybmFsIHJvdXRpbmUgdG8gd2FpdCBmb3IgY2hpbGRyZW4gdGhhdCBoYXZlIGV4aXRlZC4iIiIKLSAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgSWYgd2UncmUgYWJvdmUgdGhlIG1heCBudW1iZXIgb2YgY2hpbGRyZW4sIHdhaXQgYW5kIHJlYXAgdGhlbSB1bnRpbAotICAgICAgICAjIHdlIGdvIGJhY2sgYmVsb3cgdGhyZXNob2xkLiBOb3RlIHRoYXQgd2UgdXNlIHdhaXRwaWQoLTEpIGJlbG93IHRvIGJlCi0gICAgICAgICMgYWJsZSB0byBjb2xsZWN0IGNoaWxkcmVuIGluIHNpemUoPGRlZnVuY3QgY2hpbGRyZW4+KSBzeXNjYWxscyBpbnN0ZWFkCi0gICAgICAgICMgb2Ygc2l6ZSg8Y2hpbGRyZW4+KTogdGhlIGRvd25zaWRlIGlzIHRoYXQgdGhpcyBtaWdodCByZWFwIGNoaWxkcmVuCi0gICAgICAgICMgd2hpY2ggd2UgZGlkbid0IHNwYXduLCB3aGljaCBpcyB3aHkgd2Ugb25seSByZXNvcnQgdG8gdGhpcyB3aGVuIHdlJ3JlCi0gICAgICAgICMgYWJvdmUgbWF4X2NoaWxkcmVuLgotICAgICAgICB3aGlsZSBsZW4oc2VsZi5hY3RpdmVfY2hpbGRyZW4pID49IHNlbGYubWF4X2NoaWxkcmVuOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQoLTEsIDApCi0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCi0gICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbiwgd2UncmUgZG9uZQotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgIyBOb3cgcmVhcCBhbGwgZGVmdW5jdCBjaGlsZHJlbi4KLSAgICAgICAgZm9yIHBpZCBpbiBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jb3B5KCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZChwaWQsIG9zLldOT0hBTkcpCi0gICAgICAgICAgICAgICAgIyBpZiB0aGUgY2hpbGQgaGFzbid0IGV4aXRlZCB5ZXQsIHBpZCB3aWxsIGJlIDAgYW5kIGlnbm9yZWQgYnkKLSAgICAgICAgICAgICAgICAjIGRpc2NhcmQoKSBiZWxvdwotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgotICAgICAgICAgICAgICAgICMgc29tZW9uZSBlbHNlIHJlYXBlZCBpdAotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV90aW1lb3V0KHNlbGYpOgotICAgICAgICAiIiJXYWl0IGZvciB6b21iaWVzIGFmdGVyIHNlbGYudGltZW91dCBzZWNvbmRzIG9mIGluYWN0aXZpdHkuCi0KLSAgICAgICAgTWF5IGJlIGV4dGVuZGVkLCBkbyBub3Qgb3ZlcnJpZGUuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQotCi0gICAgZGVmIHNlcnZpY2VfYWN0aW9ucyhzZWxmKToKLSAgICAgICAgIiIiQ29sbGVjdCB0aGUgem9tYmllIGNoaWxkIHByb2Nlc3NlcyByZWd1bGFybHkgaW4gdGhlIEZvcmtpbmdNaXhJbi4KLQotICAgICAgICBzZXJ2aWNlX2FjdGlvbnMgaXMgY2FsbGVkIGluIHRoZSBCYXNlU2VydmVyJ3Mgc2VydmVfZm9ydmVyIGxvb3AuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQotCi0gICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6Ci0gICAgICAgICIiIkZvcmsgYSBuZXcgc3VicHJvY2VzcyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LiIiIgotICAgICAgICBwaWQgPSBvcy5mb3JrKCkKLSAgICAgICAgaWYgcGlkOgotICAgICAgICAgICAgIyBQYXJlbnQgcHJvY2VzcworICAgICAgICBkZWYgY29sbGVjdF9jaGlsZHJlbihzZWxmKToKKyAgICAgICAgICAgICIiIkludGVybmFsIHJvdXRpbmUgdG8gd2FpdCBmb3IgY2hpbGRyZW4gdGhhdCBoYXZlIGV4aXRlZC4iIiIKICAgICAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NoaWxkcmVuIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4gPSBzZXQoKQotICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uYWRkKHBpZCkKLSAgICAgICAgICAgIHNlbGYuY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIENoaWxkIHByb2Nlc3MuCi0gICAgICAgICAgICAjIFRoaXMgbXVzdCBuZXZlciByZXR1cm4sIGhlbmNlIG9zLl9leGl0KCkhCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBvcy5fZXhpdCgwKQotICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIElmIHdlJ3JlIGFib3ZlIHRoZSBtYXggbnVtYmVyIG9mIGNoaWxkcmVuLCB3YWl0IGFuZCByZWFwIHRoZW0gdW50aWwKKyAgICAgICAgICAgICMgd2UgZ28gYmFjayBiZWxvdyB0aHJlc2hvbGQuIE5vdGUgdGhhdCB3ZSB1c2Ugd2FpdHBpZCgtMSkgYmVsb3cgdG8gYmUKKyAgICAgICAgICAgICMgYWJsZSB0byBjb2xsZWN0IGNoaWxkcmVuIGluIHNpemUoPGRlZnVuY3QgY2hpbGRyZW4+KSBzeXNjYWxscyBpbnN0ZWFkCisgICAgICAgICAgICAjIG9mIHNpemUoPGNoaWxkcmVuPik6IHRoZSBkb3duc2lkZSBpcyB0aGF0IHRoaXMgbWlnaHQgcmVhcCBjaGlsZHJlbgorICAgICAgICAgICAgIyB3aGljaCB3ZSBkaWRuJ3Qgc3Bhd24sIHdoaWNoIGlzIHdoeSB3ZSBvbmx5IHJlc29ydCB0byB0aGlzIHdoZW4gd2UncmUKKyAgICAgICAgICAgICMgYWJvdmUgbWF4X2NoaWxkcmVuLgorICAgICAgICAgICAgd2hpbGUgbGVuKHNlbGYuYWN0aXZlX2NoaWxkcmVuKSA+PSBzZWxmLm1heF9jaGlsZHJlbjoKICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQoLTEsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbiwgd2UncmUgZG9uZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICMgTm93IHJlYXAgYWxsIGRlZnVuY3QgY2hpbGRyZW4uCisgICAgICAgICAgICBmb3IgcGlkIGluIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNvcHkoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQocGlkLCBvcy5XTk9IQU5HKQorICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBjaGlsZCBoYXNuJ3QgZXhpdGVkIHlldCwgcGlkIHdpbGwgYmUgMCBhbmQgaWdub3JlZCBieQorICAgICAgICAgICAgICAgICAgICAjIGRpc2NhcmQoKSBiZWxvdworICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgc29tZW9uZSBlbHNlIHJlYXBlZCBpdAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBoYW5kbGVfdGltZW91dChzZWxmKToKKyAgICAgICAgICAgICIiIldhaXQgZm9yIHpvbWJpZXMgYWZ0ZXIgc2VsZi50aW1lb3V0IHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KKworICAgICAgICAgICAgTWF5IGJlIGV4dGVuZGVkLCBkbyBub3Qgb3ZlcnJpZGUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCisKKyAgICAgICAgZGVmIHNlcnZpY2VfYWN0aW9ucyhzZWxmKToKKyAgICAgICAgICAgICIiIkNvbGxlY3QgdGhlIHpvbWJpZSBjaGlsZCBwcm9jZXNzZXMgcmVndWxhcmx5IGluIHRoZSBGb3JraW5nTWl4SW4uCisKKyAgICAgICAgICAgIHNlcnZpY2VfYWN0aW9ucyBpcyBjYWxsZWQgaW4gdGhlIEJhc2VTZXJ2ZXIncyBzZXJ2ZV9mb3J2ZXIgbG9vcC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKKworICAgICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKKyAgICAgICAgICAgICIiIkZvcmsgYSBuZXcgc3VicHJvY2VzcyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LiIiIgorICAgICAgICAgICAgcGlkID0gb3MuZm9yaygpCisgICAgICAgICAgICBpZiBwaWQ6CisgICAgICAgICAgICAgICAgIyBQYXJlbnQgcHJvY2VzcworICAgICAgICAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NoaWxkcmVuIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuID0gc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hZGQocGlkKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIENoaWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgIyBUaGlzIG11c3QgbmV2ZXIgcmV0dXJuLCBoZW5jZSBvcy5fZXhpdCgpIQorICAgICAgICAgICAgICAgIHN0YXR1cyA9IDEKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDAKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcihyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoMSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdChzdGF0dXMpCiAKIAogY2xhc3MgVGhyZWFkaW5nTWl4SW46CkBAIC02MjMsOSArNjM3LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCisgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKIAogICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgpAQCAtNjM2LDggKzY1MCw5IEBACiAgICAgICAgIHQuc3RhcnQoKQogCiAKLWNsYXNzIEZvcmtpbmdVRFBTZXJ2ZXIoRm9ya2luZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCi1jbGFzcyBGb3JraW5nVENQU2VydmVyKEZvcmtpbmdNaXhJbiwgVENQU2VydmVyKTogcGFzcworaWYgaGFzYXR0cihvcywgImZvcmsiKToKKyAgICBjbGFzcyBGb3JraW5nVURQU2VydmVyKEZvcmtpbmdNaXhJbiwgVURQU2VydmVyKTogcGFzcworICAgIGNsYXNzIEZvcmtpbmdUQ1BTZXJ2ZXIoRm9ya2luZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCiAKIGNsYXNzIFRocmVhZGluZ1VEUFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgVURQU2VydmVyKTogcGFzcwogY2xhc3MgVGhyZWFkaW5nVENQU2VydmVyKFRocmVhZGluZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCkBAIC03MjksNyArNzQ0LDEwIEBACiAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19UQ1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuVENQX05PREVMQVksIFRydWUpCiAgICAgICAgIHNlbGYucmZpbGUgPSBzZWxmLmNvbm5lY3Rpb24ubWFrZWZpbGUoJ3JiJywgc2VsZi5yYnVmc2l6ZSkKLSAgICAgICAgc2VsZi53ZmlsZSA9IHNlbGYuY29ubmVjdGlvbi5tYWtlZmlsZSgnd2InLCBzZWxmLndidWZzaXplKQorICAgICAgICBpZiBzZWxmLndidWZzaXplID09IDA6CisgICAgICAgICAgICBzZWxmLndmaWxlID0gX1NvY2tldFdyaXRlcihzZWxmLmNvbm5lY3Rpb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndmaWxlID0gc2VsZi5jb25uZWN0aW9uLm1ha2VmaWxlKCd3YicsIHNlbGYud2J1ZnNpemUpCiAKICAgICBkZWYgZmluaXNoKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi53ZmlsZS5jbG9zZWQ6CkBAIC03NDIsNiArNzYwLDI0IEBACiAgICAgICAgIHNlbGYud2ZpbGUuY2xvc2UoKQogICAgICAgICBzZWxmLnJmaWxlLmNsb3NlKCkKIAorY2xhc3MgX1NvY2tldFdyaXRlcihCdWZmZXJlZElPQmFzZSk6CisgICAgIiIiU2ltcGxlIHdyaXRhYmxlIEJ1ZmZlcmVkSU9CYXNlIGltcGxlbWVudGF0aW9uIGZvciBhIHNvY2tldAorCisgICAgRG9lcyBub3QgaG9sZCBkYXRhIGluIGEgYnVmZmVyLCBhdm9pZGluZyBhbnkgbmVlZCB0byBjYWxsIGZsdXNoKCkuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29jayk6CisgICAgICAgIHNlbGYuX3NvY2sgPSBzb2NrCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgYik6CisgICAgICAgIHNlbGYuX3NvY2suc2VuZGFsbChiKQorICAgICAgICB3aXRoIG1lbW9yeXZpZXcoYikgYXMgdmlldzoKKyAgICAgICAgICAgIHJldHVybiB2aWV3Lm5ieXRlcworCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2suZmlsZW5vKCkKIAogY2xhc3MgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlcihCYXNlUmVxdWVzdEhhbmRsZXIpOgogCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQppbmRleCA3ZmI4ZDdlLi5jYjg1ODE0IDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKQEAgLTE4OCw3ICsxODgsMTAgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuY3ggPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQogICAgICAgICBzZWxmLmN1ID0gc2VsZi5jeC5jdXJzb3IoKQotICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGlkIGludGVnZXIgcHJpbWFyeSBrZXksIG5hbWUgdGV4dCwgaW5jb21lIG51bWJlcikiKQorICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoCisgICAgICAgICAgICAiY3JlYXRlIHRhYmxlIHRlc3QoaWQgaW50ZWdlciBwcmltYXJ5IGtleSwgbmFtZSB0ZXh0LCAiCisgICAgICAgICAgICAiaW5jb21lIG51bWJlciwgdW5pcXVlX3Rlc3QgdGV4dCB1bmlxdWUpIgorICAgICAgICApCiAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChuYW1lKSB2YWx1ZXMgKD8pIiwgKCJmb28iLCkpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC00NjIsNiArNDY1LDQ0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIGN1ciA9IHNxbGl0ZS5DdXJzb3IoZm9vKQogCisgICAgZGVmIENoZWNrTGFzdFJvd0lET25SZXBsYWNlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgSU5TRVJUIE9SIFJFUExBQ0UgYW5kIFJFUExBQ0UgSU5UTyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSBiZWhhdmlvci4KKyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9ICd7fSBJTlRPIHRlc3QoaWQsIHVuaXF1ZV90ZXN0KSBWQUxVRVMgKD8sID8pJworICAgICAgICBmb3Igc3RhdGVtZW50IGluICgnSU5TRVJUIE9SIFJFUExBQ0UnLCAnUkVQTEFDRScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc3RhdGVtZW50PXN0YXRlbWVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5jdS5leGVjdXRlKHNxbC5mb3JtYXQoc3RhdGVtZW50KSwgKDEsICdmb28nKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY3UubGFzdHJvd2lkLCAxKQorCisgICAgZGVmIENoZWNrTGFzdFJvd0lET25JZ25vcmUoc2VsZik6CisgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgKKyAgICAgICAgICAgICJpbnNlcnQgb3IgaWdub3JlIGludG8gdGVzdCh1bmlxdWVfdGVzdCkgdmFsdWVzICg/KSIsCisgICAgICAgICAgICAoJ3Rlc3QnLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jdS5sYXN0cm93aWQsIDIpCisgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgKKyAgICAgICAgICAgICJpbnNlcnQgb3IgaWdub3JlIGludG8gdGVzdCh1bmlxdWVfdGVzdCkgdmFsdWVzICg/KSIsCisgICAgICAgICAgICAoJ3Rlc3QnLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jdS5sYXN0cm93aWQsIDIpCisKKyAgICBkZWYgQ2hlY2tMYXN0Um93SURJbnNlcnRPUihzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgIGZvciBzdGF0ZW1lbnQgaW4gKCdGQUlMJywgJ0FCT1JUJywgJ1JPTExCQUNLJyk6CisgICAgICAgICAgICBzcWwgPSAnSU5TRVJUIE9SIHt9IElOVE8gdGVzdCh1bmlxdWVfdGVzdCkgVkFMVUVTICg/KScKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0YXRlbWVudD0nSU5TRVJUIE9SIHt9Jy5mb3JtYXQoc3RhdGVtZW50KSk6CisgICAgICAgICAgICAgICAgc2VsZi5jdS5leGVjdXRlKHNxbC5mb3JtYXQoc3RhdGVtZW50KSwgKHN0YXRlbWVudCwpKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChzdGF0ZW1lbnQsIHNlbGYuY3UubGFzdHJvd2lkKSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNxbGl0ZS5JbnRlZ3JpdHlFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZShzcWwuZm9ybWF0KHN0YXRlbWVudCksIChzdGF0ZW1lbnQsKSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgoc3RhdGVtZW50LCBzZWxmLmN1Lmxhc3Ryb3dpZCkpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCdGQUlMJywgMiksICgnRkFJTCcsIDIpLAorICAgICAgICAgICAgKCdBQk9SVCcsIDMpLCAoJ0FCT1JUJywgMyksCisgICAgICAgICAgICAoJ1JPTExCQUNLJywgNCksICgnUk9MTEJBQ0snLCA0KSwKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMsIGV4cGVjdGVkKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RoaXMgdGVzdCByZXF1aXJlcyB0aHJlYWRpbmcuJykKIGNsYXNzIFRocmVhZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CmluZGV4IGEyNTM2MGEuLjQ1ZjFiMDQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CkBAIC01MiwxMyArNTIsMTMgQEAKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgQ2hlY2tETUxkb2VzQXV0b0NvbW1pdEJlZm9yZShzZWxmKToKKyAgICBkZWYgQ2hlY2tETUxEb2VzTm90QXV0b0NvbW1pdEJlZm9yZShzZWxmKToKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg1KSIpCiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdDIoaikiKQogICAgICAgICBzZWxmLmN1cjIuZXhlY3V0ZSgic2VsZWN0IGkgZnJvbSB0ZXN0IikKICAgICAgICAgcmVzID0gc2VsZi5jdXIyLmZldGNoYWxsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzKSwgMCkKIAogICAgIGRlZiBDaGVja0luc2VydFN0YXJ0c1RyYW5zYWN0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQpAQCAtMTUzLDExICsxNTMsNiBAQAogICAgICAgICBzZWxmLmNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCiAgICAgICAgIHNlbGYuY3VyID0gc2VsZi5jb24uY3Vyc29yKCkKIAotICAgIGRlZiBDaGVja1ZhY3V1bShzZWxmKToKLSAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KGkpIHZhbHVlcyAoNSkiKQotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJ2YWN1dW0iKQotCiAgICAgZGVmIENoZWNrRHJvcFRhYmxlKHNlbGYpOgogICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg1KSIpCkBAIC0xNzIsMTAgKzE2NywzNSBAQAogICAgICAgICBzZWxmLmN1ci5jbG9zZSgpCiAgICAgICAgIHNlbGYuY29uLmNsb3NlKCkKIAorY2xhc3MgVHJhbnNhY3Rpb25hbERETCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisKKyAgICBkZWYgQ2hlY2tEZGxEb2VzTm90QXV0b3N0YXJ0VHJhbnNhY3Rpb24oc2VsZik6CisgICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIERETCBzdGF0ZW1lbnRzIHNob3VsZCBub3QKKyAgICAgICAgIyBpbXBsaWNpdGx5IHN0YXJ0IGEgdHJhbnNhY3Rpb24uCisgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKKyAgICAgICAgc2VsZi5jb24ucm9sbGJhY2soKQorICAgICAgICByZXN1bHQgPSBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgKiBmcm9tIHRlc3QiKS5mZXRjaGFsbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbXSkKKworICAgIGRlZiBDaGVja1RyYW5zYWN0aW9uYWxEREwoc2VsZik6CisgICAgICAgICMgWW91IGNhbiBhY2hpZXZlIHRyYW5zYWN0aW9uYWwgRERMIGJ5IGlzc3VpbmcgYSBCRUdJTgorICAgICAgICAjIHN0YXRlbWVudCBtYW51YWxseS4KKyAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgiYmVnaW4iKQorICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCisgICAgICAgIHNlbGYuY29uLnJvbGxiYWNrKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzcWxpdGUuT3BlcmF0aW9uYWxFcnJvcik6CisgICAgICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgKiBmcm9tIHRlc3QiKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNvbi5jbG9zZSgpCisKIGRlZiBzdWl0ZSgpOgogICAgIGRlZmF1bHRfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoVHJhbnNhY3Rpb25UZXN0cywgIkNoZWNrIikKICAgICBzcGVjaWFsX2NvbW1hbmRfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoU3BlY2lhbENvbW1hbmRUZXN0cywgIkNoZWNrIikKLSAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKChkZWZhdWx0X3N1aXRlLCBzcGVjaWFsX2NvbW1hbmRfc3VpdGUpKQorICAgIGRkbF9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShUcmFuc2FjdGlvbmFsRERMLCAiQ2hlY2siKQorICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGRlZmF1bHRfc3VpdGUsIHNwZWNpYWxfY29tbWFuZF9zdWl0ZSwgZGRsX3N1aXRlKSkKIAogZGVmIHRlc3QoKToKICAgICBydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcigpCmRpZmYgLS1naXQgYS9MaWIvc3JlX2NvbXBpbGUucHkgYi9MaWIvc3JlX2NvbXBpbGUucHkKaW5kZXggNTAyYjA2MS4uNDIwZDgzZCAxMDA2NDQKLS0tIGEvTGliL3NyZV9jb21waWxlLnB5CisrKyBiL0xpYi9zcmVfY29tcGlsZS5weQpAQCAtNzEsNyArNzEsOCBAQAogICAgIEFTU0VSVF9DT0RFUyA9IF9BU1NFUlRfQ09ERVMKICAgICBpZiAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFIGFuZAogICAgICAgICAgICAgbm90IChmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkgYW5kCi0gICAgICAgICAgICBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpOgorICAgICAgICAgICAgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFIGFuZAorICAgICAgICAgICAgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKSk6CiAgICAgICAgIGZpeGVzID0gX2lnbm9yZWNhc2VfZml4ZXMKICAgICBlbHNlOgogICAgICAgICBmaXhlcyA9IE5vbmUKQEAgLTEzNywxNCArMTM4LDE1IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZW1pdChNSU5fVU5USUwpCiAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKLSAgICAgICAgICAgIGlmIGF2WzBdOgorICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKKyAgICAgICAgICAgIGlmIGdyb3VwOgogICAgICAgICAgICAgICAgIGVtaXQoTUFSSykKLSAgICAgICAgICAgICAgICBlbWl0KChhdlswXS0xKSoyKQotICAgICAgICAgICAgIyBfY29tcGlsZV9pbmZvKGNvZGUsIGF2WzFdLCBmbGFncykKLSAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzFdLCBmbGFncykKLSAgICAgICAgICAgIGlmIGF2WzBdOgorICAgICAgICAgICAgICAgIGVtaXQoKGdyb3VwLTEpKjIpCisgICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgcCwgKGZsYWdzIHwgYWRkX2ZsYWdzKSAmIH5kZWxfZmxhZ3MpCisgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBwLCAoZmxhZ3MgfCBhZGRfZmxhZ3MpICYgfmRlbF9mbGFncykKKyAgICAgICAgICAgIGlmIGdyb3VwOgogICAgICAgICAgICAgICAgIGVtaXQoTUFSSykKLSAgICAgICAgICAgICAgICBlbWl0KChhdlswXS0xKSoyKzEpCisgICAgICAgICAgICAgICAgZW1pdCgoZ3JvdXAtMSkqMisxKQogICAgICAgICBlbGlmIG9wIGluIFNVQ0NFU1NfQ09ERVM6CiAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICBlbGlmIG9wIGluIEFTU0VSVF9DT0RFUzoKQEAgLTE3Miw3ICsxNzQsNyBAQAogICAgICAgICAgICAgICAgIGF2ID0gQVRfTVVMVElMSU5FLmdldChhdiwgYXYpCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IEFUX0xPQ0FMRS5nZXQoYXYsIGF2KQotICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CisgICAgICAgICAgICBlbGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpIGFuZCBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfVU5JQ09ERS5nZXQoYXYsIGF2KQogICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6CkBAIC0xOTMsNyArMTk1LDcgQEAKICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IENIX0xPQ0FMRVthdl0KLSAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgorICAgICAgICAgICAgZWxpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKSBhbmQgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKToKICAgICAgICAgICAgICAgICBhdiA9IENIX1VOSUNPREVbYXZdCiAgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGOgpAQCAtMjM3LDcgKzIzOSw3IEBACiAgICAgICAgIGVsaWYgb3AgaXMgQ0FURUdPUlk6CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBlbWl0KENIX0xPQ0FMRVthdl0pCi0gICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKKyAgICAgICAgICAgIGVsaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgYW5kIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSk6CiAgICAgICAgICAgICAgICAgZW1pdChDSF9VTklDT0RFW2F2XSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZW1pdChhdikKQEAgLTQwOSw0MiArNDExLDQyIEBACiAgICAgICAgICAgICB0YWJsZVtpXSA9IGlkeCArIDEKICAgICByZXR1cm4gdGFibGUKIAotZGVmIF9jb21waWxlX2luZm8oY29kZSwgcGF0dGVybiwgZmxhZ3MpOgotICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgYW4gaW5mbyBibG9jay4gIGluIHRoZSBjdXJyZW50IHZlcnNpb24sCi0gICAgIyB0aGlzIGNvbnRhaW5zIG1pbi9tYXggcGF0dGVybiB3aWR0aCwgYW5kIGFuIG9wdGlvbmFsIGxpdGVyYWwKLSAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKLSAgICBsbywgaGkgPSBwYXR0ZXJuLmdldHdpZHRoKCkKLSAgICBpZiBoaSA+IE1BWENPREU6Ci0gICAgICAgIGhpID0gTUFYQ09ERQotICAgIGlmIGxvID09IDA6Ci0gICAgICAgIGNvZGUuZXh0ZW5kKFtJTkZPLCA0LCAwLCBsbywgaGldKQotICAgICAgICByZXR1cm4KLSAgICAjIGxvb2sgZm9yIGEgbGl0ZXJhbCBwcmVmaXgKK2RlZiBfZ2V0X2xpdGVyYWxfcHJlZml4KHBhdHRlcm4pOgorICAgICMgbG9vayBmb3IgbGl0ZXJhbCBwcmVmaXgKICAgICBwcmVmaXggPSBbXQogICAgIHByZWZpeGFwcGVuZCA9IHByZWZpeC5hcHBlbmQKLSAgICBwcmVmaXhfc2tpcCA9IDAKKyAgICBwcmVmaXhfc2tpcCA9IE5vbmUKKyAgICBmb3Igb3AsIGF2IGluIHBhdHRlcm4uZGF0YToKKyAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKKyAgICAgICAgICAgIHByZWZpeGFwcGVuZChhdikKKyAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOOgorICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKKyAgICAgICAgICAgIGlmIGFkZF9mbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHByZWZpeDEsIHByZWZpeF9za2lwMSwgZ290X2FsbCA9IF9nZXRfbGl0ZXJhbF9wcmVmaXgocCkKKyAgICAgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHByZWZpeF9za2lwID0gbGVuKHByZWZpeCkKKyAgICAgICAgICAgICAgICBlbGlmIHByZWZpeF9za2lwMSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4X3NraXAgPSBsZW4ocHJlZml4KSArIHByZWZpeF9za2lwMQorICAgICAgICAgICAgcHJlZml4LmV4dGVuZChwcmVmaXgxKQorICAgICAgICAgICAgaWYgbm90IGdvdF9hbGw6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyZWFrCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHByZWZpeCwgcHJlZml4X3NraXAsIFRydWUKKyAgICByZXR1cm4gcHJlZml4LCBwcmVmaXhfc2tpcCwgRmFsc2UKKworZGVmIF9nZXRfY2hhcnNldF9wcmVmaXgocGF0dGVybik6CiAgICAgY2hhcnNldCA9IFtdICMgbm90IHVzZWQKICAgICBjaGFyc2V0YXBwZW5kID0gY2hhcnNldC5hcHBlbmQKLSAgICBpZiBub3QgKGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSk6Ci0gICAgICAgICMgbG9vayBmb3IgbGl0ZXJhbCBwcmVmaXgKLSAgICAgICAgZm9yIG9wLCBhdiBpbiBwYXR0ZXJuLmRhdGE6Ci0gICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgotICAgICAgICAgICAgICAgIGlmIGxlbihwcmVmaXgpID09IHByZWZpeF9za2lwOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IHByZWZpeF9za2lwICsgMQotICAgICAgICAgICAgICAgIHByZWZpeGFwcGVuZChhdikKLSAgICAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTiBhbmQgbGVuKGF2WzFdKSA9PSAxOgotICAgICAgICAgICAgICAgIG9wLCBhdiA9IGF2WzFdWzBdCi0gICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4YXBwZW5kKGF2KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICMgaWYgbm8gcHJlZml4LCBsb29rIGZvciBjaGFyc2V0IHByZWZpeAotICAgICAgICBpZiBub3QgcHJlZml4IGFuZCBwYXR0ZXJuLmRhdGE6Ci0gICAgICAgICAgICBvcCwgYXYgPSBwYXR0ZXJuLmRhdGFbMF0KLSAgICAgICAgICAgIGlmIG9wIGlzIFNVQlBBVFRFUk4gYW5kIGF2WzFdOgotICAgICAgICAgICAgICAgIG9wLCBhdiA9IGF2WzFdWzBdCisgICAgaWYgcGF0dGVybi5kYXRhOgorICAgICAgICBvcCwgYXYgPSBwYXR0ZXJuLmRhdGFbMF0KKyAgICAgICAgaWYgb3AgaXMgU1VCUEFUVEVSTjoKKyAgICAgICAgICAgIGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCA9IGF2CisgICAgICAgICAgICBpZiBwIGFuZCBub3QgKGFkZF9mbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UpOgorICAgICAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KICAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgogICAgICAgICAgICAgICAgICAgICBjaGFyc2V0YXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgpAQCAtNDYwLDIxICs0NjIsNDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9IGMKLSAgICAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgotICAgICAgICAgICAgICAgIGMgPSBbXQotICAgICAgICAgICAgICAgIGNhcHBlbmQgPSBjLmFwcGVuZAotICAgICAgICAgICAgICAgIGZvciBwIGluIGF2WzFdOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KLSAgICAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhcHBlbmQoKG9wLCBhdikpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKKyAgICAgICAgICAgIGMgPSBbXQorICAgICAgICAgICAgY2FwcGVuZCA9IGMuYXBwZW5kCisgICAgICAgICAgICBmb3IgcCBpbiBhdlsxXToKKyAgICAgICAgICAgICAgICBpZiBub3QgcDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBvcCwgYXYgPSBwWzBdCisgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKKyAgICAgICAgICAgICAgICAgICAgY2FwcGVuZCgob3AsIGF2KSkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYwotICAgICAgICAgICAgZWxpZiBvcCBpcyBJTjoKLSAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYXYKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hhcnNldCA9IGMKKyAgICAgICAgZWxpZiBvcCBpcyBJTjoKKyAgICAgICAgICAgIGNoYXJzZXQgPSBhdgorICAgIHJldHVybiBjaGFyc2V0CisKK2RlZiBfY29tcGlsZV9pbmZvKGNvZGUsIHBhdHRlcm4sIGZsYWdzKToKKyAgICAjIGludGVybmFsOiBjb21waWxlIGFuIGluZm8gYmxvY2suICBpbiB0aGUgY3VycmVudCB2ZXJzaW9uLAorICAgICMgdGhpcyBjb250YWlucyBtaW4vbWF4IHBhdHRlcm4gd2lkdGgsIGFuZCBhbiBvcHRpb25hbCBsaXRlcmFsCisgICAgIyBwcmVmaXggb3IgYSBjaGFyYWN0ZXIgbWFwCisgICAgbG8sIGhpID0gcGF0dGVybi5nZXR3aWR0aCgpCisgICAgaWYgaGkgPiBNQVhDT0RFOgorICAgICAgICBoaSA9IE1BWENPREUKKyAgICBpZiBsbyA9PSAwOgorICAgICAgICBjb2RlLmV4dGVuZChbSU5GTywgNCwgMCwgbG8sIGhpXSkKKyAgICAgICAgcmV0dXJuCisgICAgIyBsb29rIGZvciBhIGxpdGVyYWwgcHJlZml4CisgICAgcHJlZml4ID0gW10KKyAgICBwcmVmaXhfc2tpcCA9IDAKKyAgICBjaGFyc2V0ID0gW10gIyBub3QgdXNlZAorICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFKToKKyAgICAgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAorICAgICAgICBwcmVmaXgsIHByZWZpeF9za2lwLCBnb3RfYWxsID0gX2dldF9saXRlcmFsX3ByZWZpeChwYXR0ZXJuKQorICAgICAgICAjIGlmIG5vIHByZWZpeCwgbG9vayBmb3IgY2hhcnNldCBwcmVmaXgKKyAgICAgICAgaWYgbm90IHByZWZpeDoKKyAgICAgICAgICAgIGNoYXJzZXQgPSBfZ2V0X2NoYXJzZXRfcHJlZml4KHBhdHRlcm4pCiAjIyAgICAgaWYgcHJlZml4OgogIyMgICAgICAgICBwcmludCgiKioqIFBSRUZJWCIsIHByZWZpeCwgcHJlZml4X3NraXApCiAjIyAgICAgaWYgY2hhcnNldDoKQEAgLTQ4Nyw3ICs1MTEsNyBAQAogICAgIG1hc2sgPSAwCiAgICAgaWYgcHJlZml4OgogICAgICAgICBtYXNrID0gU1JFX0lORk9fUFJFRklYCi0gICAgICAgIGlmIGxlbihwcmVmaXgpID09IHByZWZpeF9za2lwID09IGxlbihwYXR0ZXJuLmRhdGEpOgorICAgICAgICBpZiBwcmVmaXhfc2tpcCBpcyBOb25lIGFuZCBnb3RfYWxsOgogICAgICAgICAgICAgbWFzayA9IG1hc2sgfCBTUkVfSU5GT19MSVRFUkFMCiAgICAgZWxpZiBjaGFyc2V0OgogICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0NIQVJTRVQKQEAgLTUwMiw2ICs1MjYsOCBAQAogICAgICMgYWRkIGxpdGVyYWwgcHJlZml4CiAgICAgaWYgcHJlZml4OgogICAgICAgICBlbWl0KGxlbihwcmVmaXgpKSAjIGxlbmd0aAorICAgICAgICBpZiBwcmVmaXhfc2tpcCBpcyBOb25lOgorICAgICAgICAgICAgcHJlZml4X3NraXAgPSAgbGVuKHByZWZpeCkKICAgICAgICAgZW1pdChwcmVmaXhfc2tpcCkgIyBza2lwCiAgICAgICAgIGNvZGUuZXh0ZW5kKHByZWZpeCkKICAgICAgICAgIyBnZW5lcmF0ZSBvdmVybGFwIHRhYmxlCmRpZmYgLS1naXQgYS9MaWIvc3JlX3BhcnNlLnB5IGIvTGliL3NyZV9wYXJzZS5weQppbmRleCA0ZmY1MGQxLi4zZDM4NjczIDEwMDY0NAotLS0gYS9MaWIvc3JlX3BhcnNlLnB5CisrKyBiL0xpYi9zcmVfcGFyc2UucHkKQEAgLTY1LDYgKzY1LDEyIEBACiAgICAgInUiOiBTUkVfRkxBR19VTklDT0RFLAogfQogCitHTE9CQUxfRkxBR1MgPSAoU1JFX0ZMQUdfQVNDSUkgfCBTUkVfRkxBR19MT0NBTEUgfCBTUkVfRkxBR19VTklDT0RFIHwKKyAgICAgICAgICAgICAgICBTUkVfRkxBR19ERUJVRyB8IFNSRV9GTEFHX1RFTVBMQVRFKQorCitjbGFzcyBWZXJib3NlKEV4Y2VwdGlvbik6CisgICAgcGFzcworCiBjbGFzcyBQYXR0ZXJuOgogICAgICMgbWFzdGVyIHBhdHRlcm4gb2JqZWN0LiAga2VlcHMgdHJhY2sgb2YgZ2xvYmFsIGF0dHJpYnV0ZXMKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC0xODQsNyArMTkwLDcgQEAKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCiAgICAgICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46Ci0gICAgICAgICAgICAgICAgaSwgaiA9IGF2WzFdLmdldHdpZHRoKCkKKyAgICAgICAgICAgICAgICBpLCBqID0gYXZbLTFdLmdldHdpZHRoKCkKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCiAgICAgICAgICAgICBlbGlmIG9wIGluIF9SRVBFQVRDT0RFUzoKQEAgLTI3Myw2ICsyNzksOSBAQAogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICByZXN1bHQgKz0gYwogICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgQHByb3BlcnR5CisgICAgZGVmIHBvcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXggLSBsZW4oc2VsZi5uZXh0IG9yICcnKQogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5pbmRleCAtIGxlbihzZWxmLm5leHQgb3IgJycpCiAgICAgZGVmIHNlZWsoc2VsZiwgaW5kZXgpOgpAQCAtMjgyLDMzICsyOTEsNiBAQAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2csIG9mZnNldD0wKToKICAgICAgICAgcmV0dXJuIGVycm9yKG1zZywgc2VsZi5zdHJpbmcsIHNlbGYudGVsbCgpIC0gb2Zmc2V0KQogCi0jIFRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zIGFyZSBub3QgdXNlZCBpbiB0aGlzIG1vZHVsZSBhbnltb3JlLCBidXQgd2Uga2VlcAotIyB0aGVtIGhlcmUgKHdpdGggRGVwcmVjYXRpb25XYXJuaW5ncykgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgotCi1kZWYgaXNpZGVudChjaGFyKToKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICB3YXJuaW5ncy53YXJuKCdzcmVfcGFyc2UuaXNpZGVudCgpIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUnLAotICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuICJhIiA8PSBjaGFyIDw9ICJ6IiBvciAiQSIgPD0gY2hhciA8PSAiWiIgb3IgY2hhciA9PSAiXyIKLQotZGVmIGlzZGlnaXQoY2hhcik6Ci0gICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgd2FybmluZ3Mud2Fybignc3JlX3BhcnNlLmlzZGlnaXQoKSB3aWxsIGJlIHJlbW92ZWQgaW4gMy41JywKLSAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIHJldHVybiAiMCIgPD0gY2hhciA8PSAiOSIKLQotZGVmIGlzbmFtZShuYW1lKToKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICB3YXJuaW5ncy53YXJuKCdzcmVfcGFyc2UuaXNuYW1lKCkgd2lsbCBiZSByZW1vdmVkIGluIDMuNScsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAjIGNoZWNrIHRoYXQgZ3JvdXAgbmFtZSBpcyBhIHZhbGlkIHN0cmluZwotICAgIGlmIG5vdCBpc2lkZW50KG5hbWVbMF0pOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBmb3IgY2hhciBpbiBuYW1lWzE6XToKLSAgICAgICAgaWYgbm90IGlzaWRlbnQoY2hhcikgYW5kIG5vdCBpc2RpZ2l0KGNoYXIpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIFRydWUKLQogZGVmIF9jbGFzc19lc2NhcGUoc291cmNlLCBlc2NhcGUpOgogICAgICMgaGFuZGxlIGVzY2FwZSBjb2RlIGluc2lkZSBjaGFyYWN0ZXIgY2xhc3MKICAgICBjb2RlID0gRVNDQVBFUy5nZXQoZXNjYXBlKQpAQCAtMzUxLDkgKzMzMyw3IEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD04KQorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKQEAgLTQxOCwxNSArMzk4LDEzIEBACiAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwgbGVuKGVzY2FwZSkpCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD04KQorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKIAotZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgbmVzdGVkPVRydWUpOgorZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSwgbmVzdGVkPVRydWUpOgogICAgICMgcGFyc2UgYW4gYWx0ZXJuYXRpb246IGF8YnxjCiAKICAgICBpdGVtcyA9IFtdCkBAIC00MzQsNyArNDEyLDcgQEAKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIHN0YXJ0ID0gc291cmNlLnRlbGwoKQogICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGl0ZW1zYXBwZW5kKF9wYXJzZShzb3VyY2UsIHN0YXRlKSkKKyAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpKQogICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goInwiKToKICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTQ3NiwxMCArNDU0LDEwIEBACiAgICAgc3VicGF0dGVybi5hcHBlbmQoKEJSQU5DSCwgKE5vbmUsIGl0ZW1zKSkpCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAotZGVmIF9wYXJzZV9zdWJfY29uZChzb3VyY2UsIHN0YXRlLCBjb25kZ3JvdXApOgotICAgIGl0ZW1feWVzID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCitkZWYgX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCwgdmVyYm9zZSk6CisgICAgaXRlbV95ZXMgPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICBpZiBzb3VyY2UubWF0Y2goInwiKToKLSAgICAgICAgaXRlbV9ubyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlKQorICAgICAgICBpdGVtX25vID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpCiAgICAgICAgIGlmIHNvdXJjZS5uZXh0ID09ICJ8IjoKICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiY29uZGl0aW9uYWwgYmFja3JlZiB3aXRoIG1vcmUgdGhhbiB0d28gYnJhbmNoZXMiKQogICAgIGVsc2U6CkBAIC00ODgsNyArNDY2LDcgQEAKICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoR1JPVVBSRUZfRVhJU1RTLCAoY29uZGdyb3VwLCBpdGVtX3llcywgaXRlbV9ubykpKQogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKLWRlZiBfcGFyc2Uoc291cmNlLCBzdGF0ZSk6CitkZWYgX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpOgogICAgICMgcGFyc2UgYSBzaW1wbGUgcGF0dGVybgogICAgIHN1YnBhdHRlcm4gPSBTdWJQYXR0ZXJuKHN0YXRlKQogCkBAIC00OTgsNyArNDc2LDYgQEAKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIF9sZW4gPSBsZW4KICAgICBfb3JkID0gb3JkCi0gICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQogCiAgICAgd2hpbGUgVHJ1ZToKIApAQCAtNjUyLDYgKzYyOSw4IEBACiAgICAgICAgICAgICBncm91cCA9IFRydWUKICAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgICAgICBjb25kZ3JvdXAgPSBOb25lCisgICAgICAgICAgICBhZGRfZmxhZ3MgPSAwCisgICAgICAgICAgICBkZWxfZmxhZ3MgPSAwCiAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPyIpOgogICAgICAgICAgICAgICAgICMgb3B0aW9ucwogICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQpAQCAtNzEzLDcgKzY5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBsb29rYmVoaW5kZ3JvdXBzID0gc3RhdGUubG9va2JlaGluZGdyb3VwcwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5ncm91cHMKLSAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgaWYgZGlyIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvb2tiZWhpbmRncm91cHMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzID0gTm9uZQpAQCAtNzQ5LDE5ICs3MjgsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGNvbmRncm91cCwgc291cmNlKQotICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiBGTEFHUzoKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgaW4gRkxBR1Mgb3IgY2hhciA9PSAiLSI6CiAgICAgICAgICAgICAgICAgICAgICMgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmZsYWdzIHw9IEZMQUdTW2NoYXJdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGZsYWciLCBsZW4oY2hhcikpCi0gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gc291cmNlLnBvcworICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9wYXJzZV9mbGFncyhzb3VyY2UsIHN0YXRlLCBjaGFyKQorICAgICAgICAgICAgICAgICAgICBpZiBmbGFncyBpcyBOb25lOiAgIyBnbG9iYWwgZmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBvcyAhPSAzOiAgIyAiKD94IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGbGFncyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleHByZXNzaW9uICVzJXMnICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnN0cmluZ1s6MjBdLCAgIyB0cnVuY2F0ZSBsb25nIHJlZ2V4ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKHRydW5jYXRlZCknIGlmIGxlbihzb3VyY2Uuc3RyaW5nKSA+IDIwIGVsc2UgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD03CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MgPSBmbGFncworICAgICAgICAgICAgICAgICAgICBncm91cCA9IE5vbmUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID8iICsgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFyKSArIDEpCkBAIC03NzMsMTUgKzc1NiwxNyBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihlcnIubXNnLCBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGlmIGNvbmRncm91cDoKLSAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCkKKyAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCwgdmVyYm9zZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgICAgICBzdWJfdmVyYm9zZSA9ICgodmVyYm9zZSBvciAoYWRkX2ZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCAoZGVsX2ZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkpCisgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgc3ViX3ZlcmJvc2UpCiAgICAgICAgICAgICBpZiBub3Qgc291cmNlLm1hdGNoKCIpIik6CiAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIHN0YXJ0KQogICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3RhdGUuY2xvc2Vncm91cChncm91cCwgcCkKLSAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKFNVQlBBVFRFUk4sIChncm91cCwgcCkpKQorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCkpKQogCiAgICAgICAgIGVsaWYgdGhpcyA9PSAiXiI6CiAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBVCwgQVRfQkVHSU5OSU5HKSkKQEAgLTc5NCwxNCArNzc5LDU4IEBACiAKICAgICByZXR1cm4gc3VicGF0dGVybgogCitkZWYgX3BhcnNlX2ZsYWdzKHNvdXJjZSwgc3RhdGUsIGNoYXIpOgorICAgIHNvdXJjZWdldCA9IHNvdXJjZS5nZXQKKyAgICBhZGRfZmxhZ3MgPSAwCisgICAgZGVsX2ZsYWdzID0gMAorICAgIGlmIGNoYXIgIT0gIi0iOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYWRkX2ZsYWdzIHw9IEZMQUdTW2NoYXJdCisgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgLSwgOiBvciApIikKKyAgICAgICAgICAgIGlmIGNoYXIgaW4gIiktOiI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGZsYWciIGlmIGNoYXIuaXNhbHBoYSgpIGVsc2UgIm1pc3NpbmcgLSwgOiBvciApIgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjaGFyKSkKKyAgICBpZiBjaGFyID09ICIpIjoKKyAgICAgICAgaWYgKChhZGRfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSBhbmQKKyAgICAgICAgICAgIG5vdCAoc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSk6CisgICAgICAgICAgICByYWlzZSBWZXJib3NlCisgICAgICAgIHN0YXRlLmZsYWdzIHw9IGFkZF9mbGFncworICAgICAgICByZXR1cm4gTm9uZQorICAgIGlmIGFkZF9mbGFncyAmIEdMT0JBTF9GTEFHUzoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvbiBnbG9iYWwgZmxhZyIsIDEpCisgICAgaWYgY2hhciA9PSAiLSI6CisgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgZmxhZyIpCisgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyBmbGFnIgorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGVsX2ZsYWdzIHw9IEZMQUdTW2NoYXJdCisgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgOiIpCisgICAgICAgICAgICBpZiBjaGFyID09ICI6IjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyA6IgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjaGFyKSkKKyAgICBhc3NlcnQgY2hhciA9PSAiOiIKKyAgICBpZiBkZWxfZmxhZ3MgJiBHTE9CQUxfRkxBR1M6CisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb2ZmIGdsb2JhbCBmbGFnIiwgMSkKKyAgICBpZiBhZGRfZmxhZ3MgJiBkZWxfZmxhZ3M6CisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogZmxhZyB0dXJuZWQgb24gYW5kIG9mZiIsIDEpCisgICAgcmV0dXJuIGFkZF9mbGFncywgZGVsX2ZsYWdzCisKIGRlZiBmaXhfZmxhZ3Moc3JjLCBmbGFncyk6CiAgICAgIyBDaGVjayBhbmQgZml4IGZsYWdzIGFjY29yZGluZyB0byB0aGUgdHlwZSBvZiBwYXR0ZXJuIChzdHIgb3IgYnl0ZXMpCiAgICAgaWYgaXNpbnN0YW5jZShzcmMsIHN0cik6CiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJMT0NBTEUgZmxhZyB3aXRoIGEgc3RyIHBhdHRlcm4gaXMgZGVwcmVjYXRlZC4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBiZSBhbiBlcnJvciBpbiAzLjYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCB1c2UgTE9DQUxFIGZsYWcgd2l0aCBhIHN0ciBwYXR0ZXJuIikKICAgICAgICAgaWYgbm90IGZsYWdzICYgU1JFX0ZMQUdfQVNDSUk6CiAgICAgICAgICAgICBmbGFncyB8PSBTUkVfRkxBR19VTklDT0RFCiAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgpAQCAtODEwLDEwICs4MzksNyBAQAogICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgdXNlIFVOSUNPREUgZmxhZyB3aXRoIGEgYnl0ZXMgcGF0dGVybiIpCiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFIGFuZCBmbGFncyAmIFNSRV9GTEFHX0FTQ0lJOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJBU0NJSSBhbmQgTE9DQUxFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbGwgYmUgYW4gZXJyb3IgaW4gMy42IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTYpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBU0NJSSBhbmQgTE9DQUxFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUiKQogICAgIHJldHVybiBmbGFncwogCiBkZWYgcGFyc2Uoc3RyLCBmbGFncz0wLCBwYXR0ZXJuPU5vbmUpOgpAQCAtODI2LDE4ICs4NTIsMjMgQEAKICAgICBwYXR0ZXJuLmZsYWdzID0gZmxhZ3MKICAgICBwYXR0ZXJuLnN0ciA9IHN0cgogCi0gICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBwYXR0ZXJuLCAwKQorICAgIHRyeToKKyAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBwYXR0ZXJuLCBmbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UsIEZhbHNlKQorICAgIGV4Y2VwdCBWZXJib3NlOgorICAgICAgICAjIHRoZSBWRVJCT1NFIGZsYWcgd2FzIHN3aXRjaGVkIG9uIGluc2lkZSB0aGUgcGF0dGVybi4gIHRvIGJlCisgICAgICAgICMgb24gdGhlIHNhZmUgc2lkZSwgd2UnbGwgcGFyc2UgdGhlIHdob2xlIHRoaW5nIGFnYWluLi4uCisgICAgICAgIHBhdHRlcm4gPSBQYXR0ZXJuKCkKKyAgICAgICAgcGF0dGVybi5mbGFncyA9IGZsYWdzIHwgU1JFX0ZMQUdfVkVSQk9TRQorICAgICAgICBwYXR0ZXJuLnN0ciA9IHN0cgorICAgICAgICBzb3VyY2Uuc2VlaygwKQorICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIFRydWUsIEZhbHNlKQorCiAgICAgcC5wYXR0ZXJuLmZsYWdzID0gZml4X2ZsYWdzKHN0ciwgcC5wYXR0ZXJuLmZsYWdzKQogCiAgICAgaWYgc291cmNlLm5leHQgaXMgbm90IE5vbmU6CiAgICAgICAgIGFzc2VydCBzb3VyY2UubmV4dCA9PSAiKSIKICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIikKIAotICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSBhbmQgcC5wYXR0ZXJuLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRToKLSAgICAgICAgIyB0aGUgVkVSQk9TRSBmbGFnIHdhcyBzd2l0Y2hlZCBvbiBpbnNpZGUgdGhlIHBhdHRlcm4uICB0byBiZQotICAgICAgICAjIG9uIHRoZSBzYWZlIHNpZGUsIHdlJ2xsIHBhcnNlIHRoZSB3aG9sZSB0aGluZyBhZ2Fpbi4uLgotICAgICAgICByZXR1cm4gcGFyc2Uoc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCi0KICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RFQlVHOgogICAgICAgICBwLmR1bXAoKQogCkBAIC05MTQsOSArOTQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdGhpcyA9IGNocihFU0NBUEVTW3RoaXNdWzFdKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTQpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCdiYWQgZXNjYXBlICVzJyAlIHRoaXMsIGxlbih0aGlzKSkKICAgICAgICAgICAgICAgICBsYXBwZW5kKHRoaXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsYXBwZW5kKHRoaXMpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCBlMTkxMzkwLi44YWQ0YTMzIDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTUyLDYgKzUyLDggQEAKIFBST1RPQ09MX1NTTHYzCiBQUk9UT0NPTF9TU0x2MjMKIFBST1RPQ09MX1RMUworUFJPVE9DT0xfVExTX0NMSUVOVAorUFJPVE9DT0xfVExTX1NFUlZFUgogUFJPVE9DT0xfVExTdjEKIFBST1RPQ09MX1RMU3YxXzEKIFBST1RPQ09MX1RMU3YxXzIKQEAgLTk0LDE3ICs5NiwxNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIGVudW0gaW1wb3J0IEVudW0gYXMgX0VudW0sIEludEVudW0gYXMgX0ludEVudW0KK2Zyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bSwgSW50RmxhZyBhcyBfSW50RmxhZwogCiBpbXBvcnQgX3NzbCAgICAgICAgICAgICAjIGlmIHdlIGNhbid0IGltcG9ydCBpdCwgbGV0IHRoZSBlcnJvciBwcm9wYWdhdGUKIAogZnJvbSBfc3NsIGltcG9ydCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLCBPUEVOU1NMX1ZFUlNJT05fSU5GTywgT1BFTlNTTF9WRVJTSU9OCi1mcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0LCBNZW1vcnlCSU8KK2Zyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQsIE1lbW9yeUJJTywgU1NMU2Vzc2lvbgogZnJvbSBfc3NsIGltcG9ydCAoCiAgICAgU1NMRXJyb3IsIFNTTFplcm9SZXR1cm5FcnJvciwgU1NMV2FudFJlYWRFcnJvciwgU1NMV2FudFdyaXRlRXJyb3IsCiAgICAgU1NMU3lzY2FsbEVycm9yLCBTU0xFT0ZFcnJvciwKICAgICApCi1mcm9tIF9zc2wgaW1wb3J0IENFUlRfTk9ORSwgQ0VSVF9PUFRJT05BTCwgQ0VSVF9SRVFVSVJFRAogZnJvbSBfc3NsIGltcG9ydCB0eHQyb2JqIGFzIF90eHQyb2JqLCBuaWQyb2JqIGFzIF9uaWQyb2JqCiBmcm9tIF9zc2wgaW1wb3J0IFJBTkRfc3RhdHVzLCBSQU5EX2FkZCwgUkFORF9ieXRlcywgUkFORF9wc2V1ZG9fYnl0ZXMKIHRyeToKQEAgLTExMywzMiArMTE0LDQ3IEBACiAgICAgIyBMaWJyZVNTTCBkb2VzIG5vdCBwcm92aWRlIFJBTkRfZWdkCiAgICAgcGFzcwogCi1kZWYgX2ltcG9ydF9zeW1ib2xzKHByZWZpeCk6Ci0gICAgZm9yIG4gaW4gZGlyKF9zc2wpOgotICAgICAgICBpZiBuLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgIGdsb2JhbHMoKVtuXSA9IGdldGF0dHIoX3NzbCwgbikKLQotX2ltcG9ydF9zeW1ib2xzKCdPUF8nKQotX2ltcG9ydF9zeW1ib2xzKCdBTEVSVF9ERVNDUklQVElPTl8nKQotX2ltcG9ydF9zeW1ib2xzKCdTU0xfRVJST1JfJykKLV9pbXBvcnRfc3ltYm9scygnVkVSSUZZXycpCiAKIGZyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4sIEhBU19BTFBOCi0KIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAorCiBfSW50RW51bS5fY29udmVydCgKLSAgICAgICAgJ19TU0xNZXRob2QnLCBfX25hbWVfXywKLSAgICAgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnUFJPVE9DT0xfJykgYW5kIG5hbWUgIT0gJ1BST1RPQ09MX1NTTHYyMycsCi0gICAgICAgIHNvdXJjZT1fc3NsKQorICAgICdfU1NMTWV0aG9kJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnUFJPVE9DT0xfJykgYW5kIG5hbWUgIT0gJ1BST1RPQ09MX1NTTHYyMycsCisgICAgc291cmNlPV9zc2wpCisKK19JbnRGbGFnLl9jb252ZXJ0KAorICAgICdPcHRpb25zJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnT1BfJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdBbGVydERlc2NyaXB0aW9uJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnQUxFUlRfREVTQ1JJUFRJT05fJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdTU0xFcnJvck51bWJlcicsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1NTTF9FUlJPUl8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEZsYWcuX2NvbnZlcnQoCisgICAgJ1ZlcmlmeUZsYWdzJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnVkVSSUZZXycpLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RW51bS5fY29udmVydCgKKyAgICAnVmVyaWZ5TW9kZScsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ0NFUlRfJyksCisgICAgc291cmNlPV9zc2wpCisKIAogUFJPVE9DT0xfU1NMdjIzID0gX1NTTE1ldGhvZC5QUk9UT0NPTF9TU0x2MjMgPSBfU1NMTWV0aG9kLlBST1RPQ09MX1RMUwogX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBfU1NMTWV0aG9kLl9fbWVtYmVyc19fLml0ZW1zKCl9CiAKLXRyeToKLSAgICBfU1NMdjJfSUZfRVhJU1RTID0gUFJPVE9DT0xfU1NMdjIKLWV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgX1NTTHYyX0lGX0VYSVNUUyA9IE5vbmUKK19TU0x2Ml9JRl9FWElTVFMgPSBnZXRhdHRyKF9TU0xNZXRob2QsICdQUk9UT0NPTF9TU0x2MicsIE5vbmUpCisKIAogaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgZnJvbSBfc3NsIGltcG9ydCBlbnVtX2NlcnRpZmljYXRlcywgZW51bV9jcmxzCkBAIC0zNzcsMTggKzM5MywxOCBAQAogICAgIGRlZiB3cmFwX3NvY2tldChzZWxmLCBzb2NrLCBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIHNlcnZlcl9zaWRlPXNlcnZlcl9zaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PWRvX2hhbmRzaGFrZV9vbl9jb25uZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPXN1cHByZXNzX3JhZ2dlZF9lb2ZzLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9c2VsZikKKyAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmLCBfc2Vzc2lvbj1zZXNzaW9uKQogCiAgICAgZGVmIHdyYXBfYmlvKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsCi0gICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKToKKyAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSk6CiAgICAgICAgIHNzbG9iaiA9IHNlbGYuX3dyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgIHJldHVybiBTU0xPYmplY3Qoc3Nsb2JqKQorICAgICAgICByZXR1cm4gU1NMT2JqZWN0KHNzbG9iaiwgc2Vzc2lvbj1zZXNzaW9uKQogCiAgICAgZGVmIHNldF9ucG5fcHJvdG9jb2xzKHNlbGYsIG5wbl9wcm90b2NvbHMpOgogICAgICAgICBwcm90b3MgPSBieXRlYXJyYXkoKQpAQCAtNDM0LDYgKzQ1MCwzNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyhzdG9yZW5hbWUsIHB1cnBvc2UpCiAgICAgICAgIHNlbGYuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBvcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gT3B0aW9ucyhzdXBlcigpLm9wdGlvbnMpCisKKyAgICBAb3B0aW9ucy5zZXR0ZXIKKyAgICBkZWYgb3B0aW9ucyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKFNTTENvbnRleHQsIFNTTENvbnRleHQpLm9wdGlvbnMuX19zZXRfXyhzZWxmLCB2YWx1ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJpZnlfZmxhZ3Moc2VsZik6CisgICAgICAgIHJldHVybiBWZXJpZnlGbGFncyhzdXBlcigpLnZlcmlmeV9mbGFncykKKworICAgIEB2ZXJpZnlfZmxhZ3Muc2V0dGVyCisgICAgZGVmIHZlcmlmeV9mbGFncyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKFNTTENvbnRleHQsIFNTTENvbnRleHQpLnZlcmlmeV9mbGFncy5fX3NldF9fKHNlbGYsIHZhbHVlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcmlmeV9tb2RlKHNlbGYpOgorICAgICAgICB2YWx1ZSA9IHN1cGVyKCkudmVyaWZ5X21vZGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIFZlcmlmeU1vZGUodmFsdWUpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICBAdmVyaWZ5X21vZGUuc2V0dGVyCisgICAgZGVmIHZlcmlmeV9tb2RlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkudmVyaWZ5X21vZGUuX19zZXRfXyhzZWxmLCB2YWx1ZSkKKwogCiBkZWYgY3JlYXRlX2RlZmF1bHRfY29udGV4dChwdXJwb3NlPVB1cnBvc2UuU0VSVkVSX0FVVEgsICosIGNhZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwYXRoPU5vbmUsIGNhZGF0YT1Ob25lKToKQEAgLTQ0NiwzMiArNDkwLDE2IEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UocHVycG9zZSwgX0FTTjFPYmplY3QpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IocHVycG9zZSkKIAorICAgICMgU1NMQ29udGV4dCBzZXRzIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sCisgICAgIyBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UgYW5kIE9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICMgYnkgZGVmYXVsdC4KICAgICBjb250ZXh0ID0gU1NMQ29udGV4dChQUk9UT0NPTF9UTFMpCiAKLSAgICAjIFNTTHYyIGNvbnNpZGVyZWQgaGFybWZ1bC4KLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjIKLQotICAgICMgU1NMdjMgaGFzIHByb2JsZW1hdGljIHNlY3VyaXR5IGFuZCBpcyBvbmx5IHJlcXVpcmVkIGZvciByZWFsbHkgb2xkCi0gICAgIyBjbGllbnRzIHN1Y2ggYXMgSUU2IG9uIFdpbmRvd3MgWFAKLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjMKLQotICAgICMgZGlzYWJsZSBjb21wcmVzc2lvbiB0byBwcmV2ZW50IENSSU1FIGF0dGFja3MgKE9wZW5TU0wgMS4wKykKLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKQotCiAgICAgaWYgcHVycG9zZSA9PSBQdXJwb3NlLlNFUlZFUl9BVVRIOgogICAgICAgICAjIHZlcmlmeSBjZXJ0cyBhbmQgaG9zdCBuYW1lIGluIGNsaWVudCBtb2RlCiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBDRVJUX1JFUVVJUkVECiAgICAgICAgIGNvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCiAgICAgZWxpZiBwdXJwb3NlID09IFB1cnBvc2UuQ0xJRU5UX0FVVEg6Ci0gICAgICAgICMgUHJlZmVyIHRoZSBzZXJ2ZXIncyBjaXBoZXJzIGJ5IGRlZmF1bHQgc28gdGhhdCB3ZSBnZXQgc3Ryb25nZXIKLSAgICAgICAgIyBlbmNyeXB0aW9uCi0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiLCAwKQotCi0gICAgICAgICMgVXNlIHNpbmdsZSB1c2Uga2V5cyBpbiBvcmRlciB0byBpbXByb3ZlIGZvcndhcmQgc2VjcmVjeQotICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApCi0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKQotCi0gICAgICAgICMgZGlzYWxsb3cgY2lwaGVycyB3aXRoIGtub3duIHZ1bG5lcmFiaWxpdGllcwogICAgICAgICBjb250ZXh0LnNldF9jaXBoZXJzKF9SRVNUUklDVEVEX1NFUlZFUl9DSVBIRVJTKQogCiAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aCBvciBjYWRhdGE6CkBAIC00OTcsMTIgKzUyNSwxMCBAQAogICAgIGlmIG5vdCBpc2luc3RhbmNlKHB1cnBvc2UsIF9BU04xT2JqZWN0KToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKHB1cnBvc2UpCiAKKyAgICAjIFNTTENvbnRleHQgc2V0cyBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX0NPTVBSRVNTSU9OLAorICAgICMgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBPUF9TSU5HTEVfREhfVVNFIGFuZCBPUF9TSU5HTEVfRUNESF9VU0UKKyAgICAjIGJ5IGRlZmF1bHQuCiAgICAgY29udGV4dCA9IFNTTENvbnRleHQocHJvdG9jb2wpCi0gICAgIyBTU0x2MiBjb25zaWRlcmVkIGhhcm1mdWwuCi0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYyCi0gICAgIyBTU0x2MyBoYXMgcHJvYmxlbWF0aWMgc2VjdXJpdHkgYW5kIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHJlYWxseSBvbGQKLSAgICAjIGNsaWVudHMgc3VjaCBhcyBJRTYgb24gV2luZG93cyBYUAotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MwogCiAgICAgaWYgY2VydF9yZXFzIGlzIG5vdCBOb25lOgogICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gY2VydF9yZXFzCkBAIC01NDgsMTAgKzU3NCwxMiBAQAogICAgICAqIFRoZSBgYGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0YGAgYW5kIGBgc3VwcHJlc3NfcmFnZ2VkX2VvZnNgYCBtYWNoaW5lcnkuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqLCBvd25lcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqLCBvd25lcj1Ob25lLCBzZXNzaW9uPU5vbmUpOgogICAgICAgICBzZWxmLl9zc2xvYmogPSBzc2xvYmoKICAgICAgICAgIyBOb3RlOiBfc3Nsb2JqIHRha2VzIGEgd2VhayByZWZlcmVuY2UgdG8gb3duZXIKICAgICAgICAgc2VsZi5fc3Nsb2JqLm93bmVyID0gb3duZXIgb3Igc2VsZgorICAgICAgICBpZiBzZXNzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgY29udGV4dChzZWxmKToKQEAgLTU2Myw2ICs1OTEsMjAgQEAKICAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uKHNlbGYpOgorICAgICAgICAiIiJUaGUgU1NMU2Vzc2lvbiBmb3IgY2xpZW50IHNvY2tldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uCisKKyAgICBAc2Vzc2lvbi5zZXR0ZXIKKyAgICBkZWYgc2Vzc2lvbihzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXVzZWQoc2VsZik6CisgICAgICAgICIiIldhcyB0aGUgY2xpZW50IHNlc3Npb24gcmV1c2VkIGR1cmluZyBoYW5kc2hha2UiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uX3JldXNlZAorCisgICAgQHByb3BlcnR5CiAgICAgZGVmIHNlcnZlcl9zaWRlKHNlbGYpOgogICAgICAgICAiIiJXaGV0aGVyIHRoaXMgaXMgYSBzZXJ2ZXItc2lkZSBzb2NrZXQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VydmVyX3NpZGUKQEAgLTY3OSw3ICs3MjEsNyBAQAogICAgICAgICAgICAgICAgICBmYW1pbHk9QUZfSU5FVCwgdHlwZT1TT0NLX1NUUkVBTSwgcHJvdG89MCwgZmlsZW5vPU5vbmUsCiAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIG5wbl9wcm90b2NvbHM9Tm9uZSwgY2lwaGVycz1Ob25lLAogICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgX2NvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgIF9jb250ZXh0PU5vbmUsIF9zZXNzaW9uPU5vbmUpOgogCiAgICAgICAgIGlmIF9jb250ZXh0OgogICAgICAgICAgICAgc2VsZi5fY29udGV4dCA9IF9jb250ZXh0CkBAIC03MTEsMTEgKzc1MywxNiBAQAogICAgICAgICAjIG1peGVkIGluLgogICAgICAgICBpZiBzb2NrLmdldHNvY2tvcHQoU09MX1NPQ0tFVCwgU09fVFlQRSkgIT0gU09DS19TVFJFQU06CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQotICAgICAgICBpZiBzZXJ2ZXJfc2lkZSBhbmQgc2VydmVyX2hvc3RuYW1lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VydmVyX2hvc3RuYW1lIGNhbiBvbmx5IGJlIHNwZWNpZmllZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBjbGllbnQgbW9kZSIpCisgICAgICAgIGlmIHNlcnZlcl9zaWRlOgorICAgICAgICAgICAgaWYgc2VydmVyX2hvc3RuYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlcnZlcl9ob3N0bmFtZSBjYW4gb25seSBiZSBzcGVjaWZpZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGNsaWVudCBtb2RlIikKKyAgICAgICAgICAgIGlmIF9zZXNzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlc3Npb24gY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQgbW9kZSIpCiAgICAgICAgIGlmIHNlbGYuX2NvbnRleHQuY2hlY2tfaG9zdG5hbWUgYW5kIG5vdCBzZXJ2ZXJfaG9zdG5hbWU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjaGVja19ob3N0bmFtZSByZXF1aXJlcyBzZXJ2ZXJfaG9zdG5hbWUiKQorICAgICAgICBzZWxmLl9zZXNzaW9uID0gX3Nlc3Npb24KICAgICAgICAgc2VsZi5zZXJ2ZXJfc2lkZSA9IHNlcnZlcl9zaWRlCiAgICAgICAgIHNlbGYuc2VydmVyX2hvc3RuYW1lID0gc2VydmVyX2hvc3RuYW1lCiAgICAgICAgIHNlbGYuZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QgPSBkb19oYW5kc2hha2Vfb25fY29ubmVjdApAQCAtNzUxLDcgKzc5OCw4IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCisgICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbj1zZWxmLl9zZXNzaW9uKQogICAgICAgICAgICAgICAgIGlmIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0OgogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5nZXR0aW1lb3V0KCkKICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA9PSAwLjA6CkBAIC03NzIsNiArODIwLDI0IEBACiAgICAgICAgIHNlbGYuX2NvbnRleHQgPSBjdHgKICAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uKHNlbGYpOgorICAgICAgICAiIiJUaGUgU1NMU2Vzc2lvbiBmb3IgY2xpZW50IHNvY2tldC4iIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uCisKKyAgICBAc2Vzc2lvbi5zZXR0ZXIKKyAgICBkZWYgc2Vzc2lvbihzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgc2VsZi5fc2Vzc2lvbiA9IHNlc3Npb24KKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXVzZWQoc2VsZik6CisgICAgICAgICIiIldhcyB0aGUgY2xpZW50IHNlc3Npb24gcmV1c2VkIGR1cmluZyBoYW5kc2hha2UiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uX3JldXNlZAorCiAgICAgZGVmIGR1cChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQoIkNhbid0IGR1cCgpICVzIGluc3RhbmNlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKQEAgLTg5OCw3ICs5NjQsNiBAQAogICAgICAgICAgICAgd2hpbGUgKGNvdW50IDwgYW1vdW50KToKICAgICAgICAgICAgICAgICB2ID0gc2VsZi5zZW5kKGRhdGFbY291bnQ6XSkKICAgICAgICAgICAgICAgICBjb3VudCArPSB2Ci0gICAgICAgICAgICByZXR1cm4gYW1vdW50CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmRhbGwoc2VsZiwgZGF0YSwgZmxhZ3MpCiAKQEAgLTEwMDUsNyArMTA3MCw4IEBACiAgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImF0dGVtcHQgdG8gY29ubmVjdCBhbHJlYWR5LWNvbm5lY3RlZCBTU0xTb2NrZXQhIikKICAgICAgICAgc3Nsb2JqID0gc2VsZi5jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBGYWxzZSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCisgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPXNlbGYuX3Nlc3Npb24pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIGNvbm5lY3RfZXg6CiAgICAgICAgICAgICAgICAgcmMgPSBzb2NrZXQuY29ubmVjdF9leChzZWxmLCBhZGRyKQpAQCAtMTA2OCw3ICsxMTM0LDYgQEAKICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsCiAgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lKToKLQogICAgIHJldHVybiBTU0xTb2NrZXQoc29jaz1zb2NrLCBrZXlmaWxlPWtleWZpbGUsIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsIGNlcnRfcmVxcz1jZXJ0X3JlcXMsCiAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2xfdmVyc2lvbiwgY2FfY2VydHM9Y2FfY2VydHMsCmRpZmYgLS1naXQgYS9MaWIvc3RhdGlzdGljcy5weSBiL0xpYi9zdGF0aXN0aWNzLnB5CmluZGV4IDRmNWMxYzEuLjdkNTNlMGMgMTAwNjQ0Ci0tLSBhL0xpYi9zdGF0aXN0aWNzLnB5CisrKyBiL0xpYi9zdGF0aXN0aWNzLnB5CkBAIC0xLDIwICsxLDMgQEAKLSMjICBNb2R1bGUgc3RhdGlzdGljcy5weQotIyMKLSMjICBDb3B5cmlnaHQgKGMpIDIwMTMgU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4uCi0jIwotIyMgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotIyMgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSMjICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMjCi0jIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jIwotIyMgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMjICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotIyMgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSMjICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotCiAiIiIKIEJhc2ljIHN0YXRpc3RpY3MgbW9kdWxlLgogCkBAIC0yOCw2ICsxMSw4IEBACiBGdW5jdGlvbiAgICAgICAgICAgIERlc2NyaXB0aW9uCiA9PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogbWVhbiAgICAgICAgICAgICAgICBBcml0aG1ldGljIG1lYW4gKGF2ZXJhZ2UpIG9mIGRhdGEuCitnZW9tZXRyaWNfbWVhbiAgICAgIEdlb21ldHJpYyBtZWFuIG9mIGRhdGEuCitoYXJtb25pY19tZWFuICAgICAgIEhhcm1vbmljIG1lYW4gb2YgZGF0YS4KIG1lZGlhbiAgICAgICAgICAgICAgTWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIGRhdGEuCiBtZWRpYW5fbG93ICAgICAgICAgIExvdyBtZWRpYW4gb2YgZGF0YS4KIG1lZGlhbl9oaWdoICAgICAgICAgSGlnaCBtZWRpYW4gb2YgZGF0YS4KQEAgLTk1LDE2ICs4MCwxOCBAQAogX19hbGxfXyA9IFsgJ1N0YXRpc3RpY3NFcnJvcicsCiAgICAgICAgICAgICAncHN0ZGV2JywgJ3B2YXJpYW5jZScsICdzdGRldicsICd2YXJpYW5jZScsCiAgICAgICAgICAgICAnbWVkaWFuJywgICdtZWRpYW5fbG93JywgJ21lZGlhbl9oaWdoJywgJ21lZGlhbl9ncm91cGVkJywKLSAgICAgICAgICAgICdtZWFuJywgJ21vZGUnLAorICAgICAgICAgICAgJ21lYW4nLCAnbW9kZScsICdnZW9tZXRyaWNfbWVhbicsICdoYXJtb25pY19tZWFuJywKICAgICAgICAgICBdCiAKLQogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IG1hdGgKK2ltcG9ydCBudW1iZXJzCiAKIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgZ3JvdXBieQorZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnksIGNoYWluCitmcm9tIGJpc2VjdCBpbXBvcnQgYmlzZWN0X2xlZnQsIGJpc2VjdF9yaWdodAogCiAKIApAQCAtMTM0LDcgKzEyMSw4IEBACiAKICAgICBTb21lIHNvdXJjZXMgb2Ygcm91bmQtb2ZmIGVycm9yIHdpbGwgYmUgYXZvaWRlZDoKIAotICAgID4+PiBfc3VtKFsxZTUwLCAxLCAtMWU1MF0gKiAxMDAwKSAgIyBCdWlsdC1pbiBzdW0gcmV0dXJucyB6ZXJvLgorICAgICMgQnVpbHQtaW4gc3VtIHJldHVybnMgemVyby4KKyAgICA+Pj4gX3N1bShbMWU1MCwgMSwgLTFlNTBdICogMTAwMCkKICAgICAoPGNsYXNzICdmbG9hdCc+LCBGcmFjdGlvbigxMDAwLCAxKSwgMzAwMCkKIAogICAgIEZyYWN0aW9ucyBhbmQgRGVjaW1hbHMgYXJlIGFsc28gc3VwcG9ydGVkOgpAQCAtMjIzLDU2ICsyMTEsMjYgQEAKICAgICAgICAgIyBPcHRpbWlzZSB0aGUgY29tbW9uIGNhc2Ugb2YgZmxvYXRzLiBXZSBleHBlY3QgdGhhdCB0aGUgbW9zdCBvZnRlbgogICAgICAgICAjIHVzZWQgbnVtZXJpYyB0eXBlIHdpbGwgYmUgYnVpbHRpbiBmbG9hdHMsIHNvIHRyeSB0byBtYWtlIHRoaXMgYXMKICAgICAgICAgIyBmYXN0IGFzIHBvc3NpYmxlLgotICAgICAgICBpZiB0eXBlKHgpIGlzIGZsb2F0OgorICAgICAgICBpZiB0eXBlKHgpIGlzIGZsb2F0IG9yIHR5cGUoeCkgaXMgRGVjaW1hbDoKICAgICAgICAgICAgIHJldHVybiB4LmFzX2ludGVnZXJfcmF0aW8oKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHggbWF5IGJlIGFuIGludCwgRnJhY3Rpb24sIG9yIEludGVncmFsIEFCQy4KICAgICAgICAgICAgIHJldHVybiAoeC5udW1lcmF0b3IsIHguZGVub21pbmF0b3IpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgZmxvYXQgc3ViY2xhc3MuCisgICAgICAgICAgICAgICAgIyB4IG1heSBiZSBhIGZsb2F0IG9yIERlY2ltYWwgc3ViY2xhc3MuCiAgICAgICAgICAgICAgICAgcmV0dXJuIHguYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgRGVjaW1hbC4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNpbWFsX3RvX3JhdGlvKHgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAjIEp1c3QgZ2l2ZSB1cD8KLSAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICMgSnVzdCBnaXZlIHVwPworICAgICAgICAgICAgICAgIHBhc3MKICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAjIGZsb2F0IE5BTiBvciBJTkYuCi0gICAgICAgIGFzc2VydCBub3QgbWF0aC5pc2Zpbml0ZSh4KQorICAgICAgICBhc3NlcnQgbm90IF9pc2Zpbml0ZSh4KQogICAgICAgICByZXR1cm4gKHgsIE5vbmUpCiAgICAgbXNnID0gImNhbid0IGNvbnZlcnQgdHlwZSAne30nIHRvIG51bWVyYXRvci9kZW5vbWluYXRvciIKICAgICByYWlzZSBUeXBlRXJyb3IobXNnLmZvcm1hdCh0eXBlKHgpLl9fbmFtZV9fKSkKIAogCi0jIEZJWE1FIFRoaXMgaXMgZmFzdGVyIHRoYW4gRnJhY3Rpb24uZnJvbV9kZWNpbWFsLCBidXQgc3RpbGwgdG9vIHNsb3cuCi1kZWYgX2RlY2ltYWxfdG9fcmF0aW8oZCk6Ci0gICAgIiIiQ29udmVydCBEZWNpbWFsIGQgdG8gZXhhY3QgaW50ZWdlciByYXRpbyAobnVtZXJhdG9yLCBkZW5vbWluYXRvcikuCi0KLSAgICA+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi0gICAgPj4+IF9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjIuNiIpKQotICAgICgyNiwgMTApCi0KLSAgICAiIiIKLSAgICBzaWduLCBkaWdpdHMsIGV4cCA9IGQuYXNfdHVwbGUoKQotICAgIGlmIGV4cCBpbiAoJ0YnLCAnbicsICdOJyk6ICAjIElORiwgTkFOLCBzTkFOCi0gICAgICAgIGFzc2VydCBub3QgZC5pc19maW5pdGUoKQotICAgICAgICByZXR1cm4gKGQsIE5vbmUpCi0gICAgbnVtID0gMAotICAgIGZvciBkaWdpdCBpbiBkaWdpdHM6Ci0gICAgICAgIG51bSA9IG51bSoxMCArIGRpZ2l0Ci0gICAgaWYgZXhwIDwgMDoKLSAgICAgICAgZGVuID0gMTAqKi1leHAKLSAgICBlbHNlOgotICAgICAgICBudW0gKj0gMTAqKmV4cAotICAgICAgICBkZW4gPSAxCi0gICAgaWYgc2lnbjoKLSAgICAgICAgbnVtID0gLW51bQotICAgIHJldHVybiAobnVtLCBkZW4pCi0KLQogZGVmIF9jb252ZXJ0KHZhbHVlLCBUKToKICAgICAiIiJDb252ZXJ0IHZhbHVlIHRvIGdpdmVuIG51bWVyaWMgdHlwZSBULiIiIgogICAgIGlmIHR5cGUodmFsdWUpIGlzIFQ6CkBAIC0zMDUsNiArMjYzLDI1MyBAQAogICAgIHJldHVybiB0YWJsZQogCiAKK2RlZiBfZmluZF9sdGVxKGEsIHgpOgorICAgICdMb2NhdGUgdGhlIGxlZnRtb3N0IHZhbHVlIGV4YWN0bHkgZXF1YWwgdG8geCcKKyAgICBpID0gYmlzZWN0X2xlZnQoYSwgeCkKKyAgICBpZiBpICE9IGxlbihhKSBhbmQgYVtpXSA9PSB4OgorICAgICAgICByZXR1cm4gaQorICAgIHJhaXNlIFZhbHVlRXJyb3IKKworCitkZWYgX2ZpbmRfcnRlcShhLCBsLCB4KToKKyAgICAnTG9jYXRlIHRoZSByaWdodG1vc3QgdmFsdWUgZXhhY3RseSBlcXVhbCB0byB4JworICAgIGkgPSBiaXNlY3RfcmlnaHQoYSwgeCwgbG89bCkKKyAgICBpZiBpICE9IChsZW4oYSkrMSkgYW5kIGFbaS0xXSA9PSB4OgorICAgICAgICByZXR1cm4gaS0xCisgICAgcmFpc2UgVmFsdWVFcnJvcgorCisKK2RlZiBfZmFpbF9uZWcodmFsdWVzLCBlcnJtc2c9J25lZ2F0aXZlIHZhbHVlJyk6CisgICAgIiIiSXRlcmF0ZSBvdmVyIHZhbHVlcywgZmFpbGluZyBpZiBhbnkgYXJlIGxlc3MgdGhhbiB6ZXJvLiIiIgorICAgIGZvciB4IGluIHZhbHVlczoKKyAgICAgICAgaWYgeCA8IDA6CisgICAgICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoZXJybXNnKQorICAgICAgICB5aWVsZCB4CisKKworY2xhc3MgX25yb290X05TOgorICAgICIiIkhhbmRzIG9mZiEgRG9uJ3QgdG91Y2ghCisKKyAgICBFdmVyeXRoaW5nIGluc2lkZSB0aGlzIG5hbWVzcGFjZSAoY2xhc3MpIGlzIGFuIGV2ZW4tbW9yZS1wcml2YXRlCisgICAgaW1wbGVtZW50YXRpb24gZGV0YWlsIG9mIHRoZSBwcml2YXRlIF9udGhfcm9vdCBmdW5jdGlvbi4KKyAgICAiIiIKKyAgICAjIFRoaXMgY2xhc3MgZXhpc3RzIG9ubHkgdG8gYmUgdXNlZCBhcyBhIG5hbWVzcGFjZSwgZm9yIGNvbnZlbmllbmNlCisgICAgIyBvZiBiZWluZyBhYmxlIHRvIGtlZXAgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIHRvZ2V0aGVyLCBhbmQgdG8KKyAgICAjIGNvbGxhcHNlIHRoZSBncm91cCBpbiBhbiBlZGl0b3IuIElmIHRoaXMgd2VyZSBDIyBvciBDKyssIEkgd291bGQKKyAgICAjIHVzZSBhIE5hbWVzcGFjZSwgYnV0IHRoZSBjbG9zZXN0IFB5dGhvbiBoYXMgaXMgYSBjbGFzcy4KKyAgICAjCisgICAgIyBGSVhNRSBwb3NzaWJseSBtb3ZlIHRoaXMgb3V0IGludG8gYSBzZXBhcmF0ZSBtb2R1bGU/CisgICAgIyBUaGF0IGZlZWxzIGxpa2Ugb3ZlcmtpbGwsIGFuZCBtYXkgZW5jb3VyYWdlIHBlb3BsZSB0byB0cmVhdCBpdCBhcworICAgICMgYSBwdWJsaWMgZmVhdHVyZS4KKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbmFtZXNwYWNlIG9ubHksIGRvIG5vdCBpbnN0YW50aWF0ZScpCisKKyAgICBkZWYgbnRoX3Jvb3QoeCwgbik6CisgICAgICAgICIiIlJldHVybiB0aGUgcG9zaXRpdmUgbnRoIHJvb3Qgb2YgbnVtZXJpYyB4LgorCisgICAgICAgIFRoaXMgbWF5IGJlIG1vcmUgYWNjdXJhdGUgdGhhbiAqKiBvciBwb3coKToKKworICAgICAgICA+Pj4gbWF0aC5wb3coMTAwMCwgMS4wLzMpICAjZG9jdGVzdDorU0tJUAorICAgICAgICA5Ljk5OTk5OTk5OTk5OTk5OAorCisgICAgICAgID4+PiBfbnRoX3Jvb3QoMTAwMCwgMykKKyAgICAgICAgMTAuMAorICAgICAgICA+Pj4gX250aF9yb290KDExKio1LCA1KQorICAgICAgICAxMS4wCisgICAgICAgID4+PiBfbnRoX3Jvb3QoMiwgMTIpCisgICAgICAgIDEuMDU5NDYzMDk0MzU5Mjk1MworCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdkZWdyZWUgbiBtdXN0IGJlIGFuIGludCcpCisgICAgICAgIGlmIG4gPCAyOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZGVncmVlIG4gbXVzdCBiZSAyIG9yIG1vcmUnKQorICAgICAgICBpZiBpc2luc3RhbmNlKHgsIGRlY2ltYWwuRGVjaW1hbCk6CisgICAgICAgICAgICByZXR1cm4gX25yb290X05TLmRlY2ltYWxfbnJvb3QoeCwgbikKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHgsIG51bWJlcnMuUmVhbCk6CisgICAgICAgICAgICByZXR1cm4gX25yb290X05TLmZsb2F0X25yb290KHgsIG4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2V4cGVjdGVkIGEgbnVtYmVyLCBnb3QgJXMnKSAlIHR5cGUoeCkuX19uYW1lX18KKworICAgIGRlZiBmbG9hdF9ucm9vdCh4LCBuKToKKyAgICAgICAgIiIiSGFuZGxlIG50aCByb290IG9mIFJlYWxzLCB0cmVhdGVkIGFzIGEgZmxvYXQuIiIiCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG4sIGludCkgYW5kIG4gPiAxCisgICAgICAgIGlmIHggPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZG9tYWluIGVycm9yOiByb290IG9mIG5lZ2F0aXZlIG51bWJlcicpCisgICAgICAgIGVsaWYgeCA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIG1hdGguY29weXNpZ24oMC4wLCB4KQorICAgICAgICBlbGlmIHggPiAwOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzaW5maW5pdHkgPSBtYXRoLmlzaW5mKHgpCisgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gX25yb290X05TLmJpZ251bV9ucm9vdCh4LCBuKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBpc2luZmluaXR5OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQoJ2luZicpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9ucm9vdF9OUy5ucm9vdCh4LCBuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IG1hdGguaXNuYW4oeCkKKyAgICAgICAgICAgIHJldHVybiBmbG9hdCgnbmFuJykKKworICAgIGRlZiBucm9vdCh4LCBuKToKKyAgICAgICAgIiIiQ2FsY3VsYXRlIHgqKigxL24pLCB0aGVuIGltcHJvdmUgdGhlIGFuc3dlci4iIiIKKyAgICAgICAgIyBUaGlzIHVzZXMgbWF0aC5wb3coKSB0byBjYWxjdWxhdGUgYW4gaW5pdGlhbCBndWVzcyBmb3IgdGhlIHJvb3QsCisgICAgICAgICMgdGhlbiB1c2VzIHRoZSBpdGVyYXRlZCBucm9vdCBhbGdvcml0aG0gdG8gaW1wcm92ZSBpdC4KKyAgICAgICAgIworICAgICAgICAjIEJ5IG15IHRlc3RpbmcsIGFib3V0IDglIG9mIHRoZSB0aW1lIHRoZSBpdGVyYXRlZCBhbGdvcml0aG0gZW5kcworICAgICAgICAjIHVwIGNvbnZlcmdpbmcgdG8gYSByZXN1bHQgd2hpY2ggaXMgbGVzcyBhY2N1cmF0ZSB0aGFuIHRoZSBpbml0aWFsCisgICAgICAgICMgZ3Vlc3MuIFtGSVhNRTogaXMgdGhpcyBzdGlsbCB0cnVlP10gSW4gdGhhdCBjYXNlLCB3ZSB1c2UgdGhlCisgICAgICAgICMgZ3Vlc3MgaW5zdGVhZCBvZiB0aGUgImltcHJvdmVkIiB2YWx1ZS4gVGhpcyB3YXksIHdlJ3JlIG5ldmVyCisgICAgICAgICMgbGVzcyBhY2N1cmF0ZSB0aGFuIG1hdGgucG93KCkuCisgICAgICAgIHIxID0gbWF0aC5wb3coeCwgMS4wL24pCisgICAgICAgIGVwczEgPSBhYnMocjEqKm4gLSB4KQorICAgICAgICBpZiBlcHMxID09IDAuMDoKKyAgICAgICAgICAgICMgcjEgaXMgdGhlIGV4YWN0IHJvb3QsIHNvIHdlJ3JlIGRvbmUuIEJ5IG15IHRlc3RpbmcsIHRoaXMKKyAgICAgICAgICAgICMgb2NjdXJzIGFib3V0IDgwJSBvZiB0aGUgdGltZSBmb3IgeCA8IDEgYW5kIDMwJSBvZiB0aGUKKyAgICAgICAgICAgICMgdGltZSBmb3IgeCA+IDEuCisgICAgICAgICAgICByZXR1cm4gcjEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByMiA9IF9ucm9vdF9OUy5pdGVyYXRlZF9ucm9vdCh4LCBuLCByMSkKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuIHIxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVwczIgPSBhYnMocjIqKm4gLSB4KQorICAgICAgICAgICAgICAgIGlmIGVwczEgPCBlcHMyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjEKKyAgICAgICAgICAgICAgICByZXR1cm4gcjIKKworICAgIGRlZiBpdGVyYXRlZF9ucm9vdChhLCBuLCBnKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBudGggcm9vdCBvZiBhLCBzdGFydGluZyB3aXRoIGd1ZXNzIGcuCisKKyAgICAgICAgVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSBvZiBOZXd0b24ncyBNZXRob2QuCisgICAgICAgIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL050aF9yb290X2FsZ29yaXRobQorICAgICAgICAiIiIKKyAgICAgICAgbnAgPSBuIC0gMQorICAgICAgICBkZWYgaXRlcmF0ZShyKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gKG5wKnIgKyBhL21hdGgucG93KHIsIG5wKSkvbgorICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICAgICAgIyBJZiByIGlzIGxhcmdlIGVub3VnaCwgcioqbnAgbWF5IG92ZXJmbG93LiBJZiB0aGF0CisgICAgICAgICAgICAgICAgIyBoYXBwZW5zLCByKiotbnAgd2lsbCBiZSBzbWFsbCwgYnV0IG5vdCBuZWNlc3NhcmlseSB6ZXJvLgorICAgICAgICAgICAgICAgIHJldHVybiAobnAqciArIGEqbWF0aC5wb3cociwgLW5wKSkvbgorICAgICAgICAjIFdpdGggYSBnb29kIGd1ZXNzLCBzdWNoIGFzIGcgPSBhKiooMS9uKSwgdGhpcyB3aWxsIGNvbnZlcmdlIGluCisgICAgICAgICMgb25seSBhIGZldyBpdGVyYXRpb25zLiBIb3dldmVyIGEgcG9vciBndWVzcyBjYW4gdGFrZSB0aG91c2FuZHMKKyAgICAgICAgIyBvZiBpdGVyYXRpb25zIHRvIGNvbnZlcmdlLCBpZiBhdCBhbGwuIFdlIGd1YXJkIGFnYWluc3QgcG9vcgorICAgICAgICAjIGd1ZXNzZXMgYnkgc2V0dGluZyBhbiB1cHBlciBsaW1pdCB0byB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMuCisgICAgICAgIHIxID0gZworICAgICAgICByMiA9IGl0ZXJhdGUoZykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICBpZiByMSA9PSByMjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgIyBVc2UgRmxveWQncyBjeWNsZS1maW5kaW5nIGFsZ29yaXRobSB0byBhdm9pZCBiZWluZyB0cmFwcGVkCisgICAgICAgICAgICAjIGluIGEgY3ljbGUuCisgICAgICAgICAgICAjIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0N5Y2xlX2RldGVjdGlvbiNUb3J0b2lzZV9hbmRfaGFyZQorICAgICAgICAgICAgcjEgPSBpdGVyYXRlKHIxKQorICAgICAgICAgICAgcjIgPSBpdGVyYXRlKGl0ZXJhdGUocjIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiB0aGUgZ3Vlc3MgaXMgcGFydGljdWxhcmx5IGJhZCwgdGhlIGFib3ZlIG1heSBmYWlsIHRvCisgICAgICAgICAgICAjIGNvbnZlcmdlIGluIGFueSByZWFzb25hYmxlIHRpbWUuCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ250aC1yb290IGZhaWxlZCB0byBjb252ZXJnZScpCisgICAgICAgIHJldHVybiByMgorCisgICAgZGVmIGRlY2ltYWxfbnJvb3QoeCwgbik6CisgICAgICAgICIiIkhhbmRsZSBudGggcm9vdCBvZiBEZWNpbWFscy4iIiIKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoeCwgZGVjaW1hbC5EZWNpbWFsKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShuLCBpbnQpCisgICAgICAgIGlmIHguaXNfc25hbigpOgorICAgICAgICAgICAgIyBTaWduYWxsaW5nIE5BTnMgYWx3YXlzIHJhaXNlLgorICAgICAgICAgICAgcmFpc2UgZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uKCdudGgtcm9vdCBvZiBzbmFuJykKKyAgICAgICAgaWYgeC5pc19xbmFuKCk6CisgICAgICAgICAgICAjIFF1aWV0IE5BTnMgb25seSByYWlzZSBpZiB0aGUgY29udGV4dCBpcyBzZXQgdG8gcmFpc2UsCisgICAgICAgICAgICAjIG90aGVyd2lzZSByZXR1cm4gYSBOQU4uCisgICAgICAgICAgICBjdHggPSBkZWNpbWFsLmdldGNvbnRleHQoKQorICAgICAgICAgICAgaWYgY3R4LnRyYXBzW2RlY2ltYWwuSW52YWxpZE9wZXJhdGlvbl06CisgICAgICAgICAgICAgICAgcmFpc2UgZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uKCdudGgtcm9vdCBvZiBuYW4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFByZXNlcnZlIHRoZSBpbnB1dCBOQU4uCisgICAgICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgaWYgeCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdkb21haW4gZXJyb3I6IHJvb3Qgb2YgbmVnYXRpdmUgbnVtYmVyJykKKyAgICAgICAgaWYgeC5pc19pbmZpbml0ZSgpOgorICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgIyBGSVhNRSB0aGlzIGhhc24ndCBoYWQgdGhlIGV4dGVuc2l2ZSB0ZXN0aW5nIG9mIHRoZSBmbG9hdAorICAgICAgICAjIHZlcnNpb24gX2l0ZXJhdGVkX25yb290IHNvIHRoZXJlJ3MgcG9zc2libHkgc29tZSBidWdneQorICAgICAgICAjIGNvcm5lciBjYXNlcyBidXJpZWQgaW4gaGVyZS4gQ2FuIGl0IG92ZXJmbG93PyBGYWlsIHRvCisgICAgICAgICMgY29udmVyZ2Ugb3IgZ2V0IHRyYXBwZWQgaW4gYSBjeWNsZT8gQ29udmVyZ2UgdG8gYSBsZXNzCisgICAgICAgICMgYWNjdXJhdGUgcm9vdD8KKyAgICAgICAgbnAgPSBuIC0gMQorICAgICAgICBkZWYgaXRlcmF0ZShyKToKKyAgICAgICAgICAgIHJldHVybiAobnAqciArIHgvcioqbnApL24KKyAgICAgICAgcjAgPSB4KiooZGVjaW1hbC5EZWNpbWFsKDEpL24pCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHIwLCBkZWNpbWFsLkRlY2ltYWwpCisgICAgICAgIHIxID0gaXRlcmF0ZShyMCkKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIHIxID09IHIwOgorICAgICAgICAgICAgICAgIHJldHVybiByMQorICAgICAgICAgICAgcjAsIHIxID0gcjEsIGl0ZXJhdGUocjEpCisKKyAgICBkZWYgYmlnbnVtX25yb290KHgsIG4pOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG50aCByb290IG9mIGEgcG9zaXRpdmUgaHVnZSBudW1iZXIuIiIiCisgICAgICAgIGFzc2VydCB4ID4gMAorICAgICAgICAjIEkgc3RhdGUgd2l0aG91dCBwcm9vZiB0aGF0IOKBv+KImngg4omIIOKBv+KImjLCt+KBv+KImih4Ly8yKQorICAgICAgICAjIGFuZCB0aGF0IGZvciBzdWZmaWNpZW50bHkgYmlnIHggdGhlIGVycm9yIGlzIGFjY2VwdGFibGUuCisgICAgICAgICMgV2Ugbm93IGhhbHZlIHggdW50aWwgaXQgaXMgc21hbGwgZW5vdWdoIHRvIGdldCB0aGUgcm9vdC4KKyAgICAgICAgbSA9IDAKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHggLy89IDIKKyAgICAgICAgICAgIG0gKz0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHkgPSBmbG9hdCh4KQorICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGEgPSBfbnJvb3RfTlMubnJvb3QoeSwgbikKKyAgICAgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSB3YW50IHRoZSBudGgtcm9vdCBvZiAyKiptLCBvciAyKioobS9uKS4KKyAgICAgICAgIyBXZSBjYW4gd3JpdGUgdGhhdCBhcyAyKioocSArIHIvbikgPSAyKipxICog4oG/4oiaMioqciB3aGVyZSBxID0gbS8vbi4KKyAgICAgICAgcSwgciA9IGRpdm1vZChtLCBuKQorICAgICAgICBiID0gMioqcSAqIF9ucm9vdF9OUy5ucm9vdCgyKipyLCBuKQorICAgICAgICByZXR1cm4gYSAqIGIKKworCisjIFRoaXMgaXMgdGhlIChwcml2YXRlKSBmdW5jdGlvbiBmb3IgY2FsY3VsYXRpbmcgbnRoIHJvb3RzOgorX250aF9yb290ID0gX25yb290X05TLm50aF9yb290Cithc3NlcnQgdHlwZShfbnRoX3Jvb3QpIGlzIHR5cGUobGFtYmRhOiBOb25lKQorCisKK2RlZiBfcHJvZHVjdCh2YWx1ZXMpOgorICAgICIiIlJldHVybiBwcm9kdWN0IG9mIHZhbHVlcyBhcyAoZXhwb25lbnQsIG1hbnRpc3NhKS4iIiIKKyAgICBlcnJtc2cgPSAnbWl4ZWQgRGVjaW1hbCBhbmQgZmxvYXQgaXMgbm90IHN1cHBvcnRlZCcKKyAgICBwcm9kID0gMQorICAgIGZvciB4IGluIHZhbHVlczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh4LCBmbG9hdCk6CisgICAgICAgICAgICBicmVhaworICAgICAgICBwcm9kICo9IHgKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gKDAsIHByb2QpCisgICAgaWYgaXNpbnN0YW5jZShwcm9kLCBEZWNpbWFsKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKGVycm1zZykKKyAgICAjIFNpbmNlIGZsb2F0cyBjYW4gb3ZlcmZsb3cgZWFzaWx5LCB3ZSBjYWxjdWxhdGUgdGhlIHByb2R1Y3QgYXMgYQorICAgICMgc29ydCBvZiBwb29yLW1hbidzIEJpZ0Zsb2F0LiBHaXZlbiB0aGF0OgorICAgICMKKyAgICAjICAgeCA9IDIqKnAgKiBtICAjIHAgPT0gcG93ZXIgb3IgZXhwb25lbnQgKHNjYWxlKSwgbSA9IG1hbnRpc3NhCisgICAgIworICAgICMgd2UgY2FuIGNhbGN1bGF0ZSB0aGUgcHJvZHVjdCBvZiB0d28gKG9yIG1vcmUpIHggdmFsdWVzIGFzOgorICAgICMKKyAgICAjICAgeDEqeDIgPSAyKipwMSptMSAqIDIqKnAyKm0yID0gMioqKHAxK3AyKSoobTEqbTIpCisgICAgIworICAgIG1hbnQsIHNjYWxlID0gMSwgMCAgI21hdGguZnJleHAocHJvZCkgICMgRklYTUUKKyAgICBmb3IgeSBpbiBjaGFpbihbeF0sIHZhbHVlcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoeSwgRGVjaW1hbCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZXJybXNnKQorICAgICAgICBtMSwgZTEgPSBtYXRoLmZyZXhwKHkpCisgICAgICAgIG0yLCBlMiA9IG1hdGguZnJleHAobWFudCkKKyAgICAgICAgc2NhbGUgKz0gKGUxICsgZTIpCisgICAgICAgIG1hbnQgPSBtMSptMgorICAgIHJldHVybiAoc2NhbGUsIG1hbnQpCisKKwogIyA9PT0gTWVhc3VyZXMgb2YgY2VudHJhbCB0ZW5kZW5jeSAoYXZlcmFnZXMpID09PQogCiBkZWYgbWVhbihkYXRhKToKQEAgLTMzMyw2ICs1MzgsOTUgQEAKICAgICByZXR1cm4gX2NvbnZlcnQodG90YWwvbiwgVCkKIAogCitkZWYgZ2VvbWV0cmljX21lYW4oZGF0YSk6CisgICAgIiIiUmV0dXJuIHRoZSBnZW9tZXRyaWMgbWVhbiBvZiBkYXRhLgorCisgICAgVGhlIGdlb21ldHJpYyBtZWFuIGlzIGFwcHJvcHJpYXRlIHdoZW4gYXZlcmFnaW5nIHF1YW50aXRpZXMgd2hpY2gKKyAgICBhcmUgbXVsdGlwbGllZCB0b2dldGhlciByYXRoZXIgdGhhbiBhZGRlZCwgZm9yIGV4YW1wbGUgZ3Jvd3RoIHJhdGVzLgorICAgIFN1cHBvc2UgYW4gaW52ZXN0bWVudCBncm93cyBieSAxMCUgaW4gdGhlIGZpcnN0IHllYXIsIGZhbGxzIGJ5IDUlIGluCisgICAgdGhlIHNlY29uZCwgdGhlbiBncm93cyBieSAxMiUgaW4gdGhlIHRoaXJkLCB3aGF0IGlzIHRoZSBhdmVyYWdlIHJhdGUKKyAgICBvZiBncm93dGggb3ZlciB0aGUgdGhyZWUgeWVhcnM/CisKKyAgICA+Pj4gZ2VvbWV0cmljX21lYW4oWzEuMTAsIDAuOTUsIDEuMTJdKQorICAgIDEuMDUzODQ4MzEyMzM4MjE3MgorCisgICAgZ2l2aW5nIGFuIGF2ZXJhZ2UgZ3Jvd3RoIG9mIDUuMzg1JS4gVXNpbmcgdGhlIGFyaXRobWV0aWMgbWVhbiB3aWxsCisgICAgZ2l2ZSBhcHByb3hpbWF0ZWx5IDUuNjY3JSwgd2hpY2ggaXMgdG9vIGhpZ2guCisKKyAgICBgYFN0YXRpc3RpY3NFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGlmIGBgZGF0YWBgIGlzIGVtcHR5LCBvciBhbnkKKyAgICBlbGVtZW50IGlzIGxlc3MgdGhhbiB6ZXJvLgorICAgICIiIgorICAgIGlmIGl0ZXIoZGF0YSkgaXMgZGF0YToKKyAgICAgICAgZGF0YSA9IGxpc3QoZGF0YSkKKyAgICBlcnJtc2cgPSAnZ2VvbWV0cmljIG1lYW4gZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMnCisgICAgbiA9IGxlbihkYXRhKQorICAgIGlmIG4gPCAxOgorICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2dlb21ldHJpY19tZWFuIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBkYXRhIHBvaW50JykKKyAgICBlbGlmIG4gPT0gMToKKyAgICAgICAgeCA9IGRhdGFbMF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShnLCAobnVtYmVycy5SZWFsLCBEZWNpbWFsKSk6CisgICAgICAgICAgICBpZiB4IDwgMDoKKyAgICAgICAgICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoZXJybXNnKQorICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndW5zdXBwb3J0ZWQgdHlwZScpCisgICAgZWxzZToKKyAgICAgICAgc2NhbGUsIHByb2QgPSBfcHJvZHVjdChfZmFpbF9uZWcoZGF0YSwgZXJybXNnKSkKKyAgICAgICAgciA9IF9udGhfcm9vdChwcm9kLCBuKQorICAgICAgICBpZiBzY2FsZToKKyAgICAgICAgICAgIHAsIHEgPSBkaXZtb2Qoc2NhbGUsIG4pCisgICAgICAgICAgICBzID0gMioqcCAqIF9udGhfcm9vdCgyKipxLCBuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcyA9IDEKKyAgICAgICAgcmV0dXJuIHMqcgorCisKK2RlZiBoYXJtb25pY19tZWFuKGRhdGEpOgorICAgICIiIlJldHVybiB0aGUgaGFybW9uaWMgbWVhbiBvZiBkYXRhLgorCisgICAgVGhlIGhhcm1vbmljIG1lYW4sIHNvbWV0aW1lcyBjYWxsZWQgdGhlIHN1YmNvbnRyYXJ5IG1lYW4sIGlzIHRoZQorICAgIHJlY2lwcm9jYWwgb2YgdGhlIGFyaXRobWV0aWMgbWVhbiBvZiB0aGUgcmVjaXByb2NhbHMgb2YgdGhlIGRhdGEsCisgICAgYW5kIGlzIG9mdGVuIGFwcHJvcHJpYXRlIHdoZW4gYXZlcmFnaW5nIHF1YW50aXRpZXMgd2hpY2ggYXJlIHJhdGVzCisgICAgb3IgcmF0aW9zLCBmb3IgZXhhbXBsZSBzcGVlZHMuIEV4YW1wbGU6CisKKyAgICBTdXBwb3NlIGFuIGludmVzdG9yIHB1cmNoYXNlcyBhbiBlcXVhbCB2YWx1ZSBvZiBzaGFyZXMgaW4gZWFjaCBvZgorICAgIHRocmVlIGNvbXBhbmllcywgd2l0aCBQL0UgKHByaWNlL2Vhcm5pbmcpIHJhdGlvcyBvZiAyLjUsIDMgYW5kIDEwLgorICAgIFdoYXQgaXMgdGhlIGF2ZXJhZ2UgUC9FIHJhdGlvIGZvciB0aGUgaW52ZXN0b3IncyBwb3J0Zm9saW8/CisKKyAgICA+Pj4gaGFybW9uaWNfbWVhbihbMi41LCAzLCAxMF0pICAjIEZvciBhbiBlcXVhbCBpbnZlc3RtZW50IHBvcnRmb2xpby4KKyAgICAzLjYKKworICAgIFVzaW5nIHRoZSBhcml0aG1ldGljIG1lYW4gd291bGQgZ2l2ZSBhbiBhdmVyYWdlIG9mIGFib3V0IDUuMTY3LCB3aGljaAorICAgIGlzIHRvbyBoaWdoLgorCisgICAgSWYgYGBkYXRhYGAgaXMgZW1wdHksIG9yIGFueSBlbGVtZW50IGlzIGxlc3MgdGhhbiB6ZXJvLAorICAgIGBgaGFybW9uaWNfbWVhbmBgIHdpbGwgcmFpc2UgYGBTdGF0aXN0aWNzRXJyb3JgYC4KKyAgICAiIiIKKyAgICAjIEZvciBhIGp1c3RpZmljYXRpb24gZm9yIHVzaW5nIGhhcm1vbmljIG1lYW4gZm9yIFAvRSByYXRpb3MsIHNlZQorICAgICMgaHR0cDovL2ZpeHRoZXBpdGNoLnBlbGx1Y2lkLmNvbS9jb21wcy1hbmFseXNpcy10aGUtbWlzc2luZy1oYXJtb255LW9mLXN1bW1hcnktc3RhdGlzdGljcy8KKyAgICAjIGh0dHA6Ly9wYXBlcnMuc3Nybi5jb20vc29sMy9wYXBlcnMuY2ZtP2Fic3RyYWN0X2lkPTI2MjEwODcKKyAgICBpZiBpdGVyKGRhdGEpIGlzIGRhdGE6CisgICAgICAgIGRhdGEgPSBsaXN0KGRhdGEpCisgICAgZXJybXNnID0gJ2hhcm1vbmljIG1lYW4gZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMnCisgICAgbiA9IGxlbihkYXRhKQorICAgIGlmIG4gPCAxOgorICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2hhcm1vbmljX21lYW4gcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGRhdGEgcG9pbnQnKQorICAgIGVsaWYgbiA9PSAxOgorICAgICAgICB4ID0gZGF0YVswXQorICAgICAgICBpZiBpc2luc3RhbmNlKHgsIChudW1iZXJzLlJlYWwsIERlY2ltYWwpKToKKyAgICAgICAgICAgIGlmIHggPCAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcihlcnJtc2cpCisgICAgICAgICAgICByZXR1cm4geAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCB0eXBlJykKKyAgICB0cnk6CisgICAgICAgIFQsIHRvdGFsLCBjb3VudCA9IF9zdW0oMS94IGZvciB4IGluIF9mYWlsX25lZyhkYXRhLCBlcnJtc2cpKQorICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgcmV0dXJuIDAKKyAgICBhc3NlcnQgY291bnQgPT0gbgorICAgIHJldHVybiBfY29udmVydChuL3RvdGFsLCBUKQorCisKICMgRklYTUU6IGludmVzdGlnYXRlIHdheXMgdG8gY2FsY3VsYXRlIG1lZGlhbnMgd2l0aG91dCBzb3J0aW5nPyBRdWlja3NlbGVjdD8KIGRlZiBtZWRpYW4oZGF0YSk6CiAgICAgIiIiUmV0dXJuIHRoZSBtZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgbnVtZXJpYyBkYXRhLgpAQCAtNDQyLDkgKzczNiwxNSBAQAogICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICMgTWl4ZWQgdHlwZS4gRm9yIG5vdyB3ZSBqdXN0IGNvZXJjZSB0byBmbG9hdC4KICAgICAgICAgTCA9IGZsb2F0KHgpIC0gZmxvYXQoaW50ZXJ2YWwpLzIKLSAgICBjZiA9IGRhdGEuaW5kZXgoeCkgICMgTnVtYmVyIG9mIHZhbHVlcyBiZWxvdyB0aGUgbWVkaWFuIGludGVydmFsLgotICAgICMgRklYTUUgVGhlIGZvbGxvd2luZyBsaW5lIGNvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGZvciBiaWcgbGlzdHMuCi0gICAgZiA9IGRhdGEuY291bnQoeCkgICMgTnVtYmVyIG9mIGRhdGEgcG9pbnRzIGluIHRoZSBtZWRpYW4gaW50ZXJ2YWwuCisKKyAgICAjIFVzZXMgYmlzZWN0aW9uIHNlYXJjaCB0byBzZWFyY2ggZm9yIHggaW4gZGF0YSB3aXRoIGxvZyhuKSB0aW1lIGNvbXBsZXhpdHkKKyAgICAjIEZpbmQgdGhlIHBvc2l0aW9uIG9mIGxlZnRtb3N0IG9jY3VycmVuY2Ugb2YgeCBpbiBkYXRhCisgICAgbDEgPSBfZmluZF9sdGVxKGRhdGEsIHgpCisgICAgIyBGaW5kIHRoZSBwb3NpdGlvbiBvZiByaWdodG1vc3Qgb2NjdXJyZW5jZSBvZiB4IGluIGRhdGFbbDEuLi5sZW4oZGF0YSldCisgICAgIyBBc3N1bWluZyBhbHdheXMgbDEgPD0gbDIKKyAgICBsMiA9IF9maW5kX3J0ZXEoZGF0YSwgbDEsIHgpCisgICAgY2YgPSBsMQorICAgIGYgPSBsMiAtIGwxICsgMQogICAgIHJldHVybiBMICsgaW50ZXJ2YWwqKG4vMiAtIGNmKS9mCiAKIApkaWZmIC0tZ2l0IGEvTGliL3N0cmluZy5weSBiL0xpYi9zdHJpbmcucHkKaW5kZXggODkyODdjNC4uYzkwMjAwNyAxMDA2NDQKLS0tIGEvTGliL3N0cmluZy5weQorKysgYi9MaWIvc3RyaW5nLnB5CkBAIC0yOCw3ICsyOCw3IEBACiBkaWdpdHMgPSAnMDEyMzQ1Njc4OScKIGhleGRpZ2l0cyA9IGRpZ2l0cyArICdhYmNkZWYnICsgJ0FCQ0RFRicKIG9jdGRpZ2l0cyA9ICcwMTIzNDU2NycKLXB1bmN0dWF0aW9uID0gIiIiISIjJCUmJygpKissLS4vOjs8PT4/QFtcXV5fYHt8fX4iIiIKK3B1bmN0dWF0aW9uID0gciIiIiEiIyQlJicoKSorLC0uLzo7PD0+P0BbXF1eX2B7fH1+IiIiCiBwcmludGFibGUgPSBkaWdpdHMgKyBhc2NpaV9sZXR0ZXJzICsgcHVuY3R1YXRpb24gKyB3aGl0ZXNwYWNlCiAKICMgRnVuY3Rpb25zIHdoaWNoIGFyZW4ndCBhdmFpbGFibGUgYXMgc3RyaW5nIG1ldGhvZHMuCkBAIC0xMTYsMTAgKzExNiw3IEBACiAgICAgICAgICAgICAjIENoZWNrIHRoZSBtb3N0IGNvbW1vbiBwYXRoIGZpcnN0LgogICAgICAgICAgICAgbmFtZWQgPSBtby5ncm91cCgnbmFtZWQnKSBvciBtby5ncm91cCgnYnJhY2VkJykKICAgICAgICAgICAgIGlmIG5hbWVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHZhbCA9IG1hcHBpbmdbbmFtZWRdCi0gICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBpZGlvbSBpbnN0ZWFkIG9mIHN0cigpIGJlY2F1c2UgdGhlIGxhdHRlciB3aWxsCi0gICAgICAgICAgICAgICAgIyBmYWlsIGlmIHZhbCBpcyBhIFVuaWNvZGUgY29udGFpbmluZyBub24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICAgICAgICAgICAgICByZXR1cm4gJyVzJyAlICh2YWwsKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHIobWFwcGluZ1tuYW1lZF0pCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnZXNjYXBlZCcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlbGltaXRlcgogICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2ludmFsaWQnKSBpcyBub3QgTm9uZToKQEAgLTE0Niw5ICsxNDMsNyBAQAogICAgICAgICAgICAgbmFtZWQgPSBtby5ncm91cCgnbmFtZWQnKSBvciBtby5ncm91cCgnYnJhY2VkJykKICAgICAgICAgICAgIGlmIG5hbWVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBpZGlvbSBpbnN0ZWFkIG9mIHN0cigpIGJlY2F1c2UgdGhlIGxhdHRlcgotICAgICAgICAgICAgICAgICAgICAjIHdpbGwgZmFpbCBpZiB2YWwgaXMgYSBVbmljb2RlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJXMnICUgKG1hcHBpbmdbbmFtZWRdLCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihtYXBwaW5nW25hbWVkXSkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtby5ncm91cCgpCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnZXNjYXBlZCcpIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3N1YnByb2Nlc3MucHkgYi9MaWIvc3VicHJvY2Vzcy5weQppbmRleCBkOGQ2YWIyLi45ZGY5MzE4IDEwMDY0NAotLS0gYS9MaWIvc3VicHJvY2Vzcy5weQorKysgYi9MaWIvc3VicHJvY2Vzcy5weQpAQCAtMzAsNyArMzAsOCBAQAogICAgICAgICAgICAgcHJlZXhlY19mbj1Ob25lLCBjbG9zZV9mZHM9VHJ1ZSwgc2hlbGw9RmFsc2UsCiAgICAgICAgICAgICBjd2Q9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwKICAgICAgICAgICAgIHN0YXJ0dXBpbmZvPU5vbmUsIGNyZWF0aW9uZmxhZ3M9MCwKLSAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscz1UcnVlLCBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwgcGFzc19mZHM9KCkpOgorICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzPVRydWUsIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLCBwYXNzX2Zkcz0oKSwKKyAgICAgICAgICAgICosIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKIAogCiBBcmd1bWVudHMgYXJlOgpAQCAtMTA0LDIwICsxMDUsMTMgQEAKIElmIGVudiBpcyBub3QgTm9uZSwgaXQgZGVmaW5lcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgbmV3CiBwcm9jZXNzLgogCi1JZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgRmFsc2UsIHRoZSBmaWxlIG9iamVjdHMgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyCi1hcmUgb3BlbmVkIGFzIGJpbmFyeSBmaWxlcywgYW5kIG5vIGxpbmUgZW5kaW5nIGNvbnZlcnNpb24gaXMgZG9uZS4KK0lmIGVuY29kaW5nIG9yIGVycm9ycyBhcmUgc3BlY2lmaWVkIG9yIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBUcnVlLCB0aGUgZmlsZQorb2JqZWN0cyBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgb3BlbmVkIGluIHRleHQgbW9kZS4gU2VlIGlvLlRleHRJT1dyYXBwZXIgZm9yCit0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgcGFyYW1ldGVycyBhcmUgdXNlZC4KIAotSWYgdW5pdmVyc2FsX25ld2xpbmVzIGlzIFRydWUsIHRoZSBmaWxlIG9iamVjdHMgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlCi1vcGVuZWQgYXMgYSB0ZXh0IGZpbGUsIGJ1dCBsaW5lcyBtYXkgYmUgdGVybWluYXRlZCBieSBhbnkgb2YgJ1xuJywKLXRoZSBVbml4IGVuZC1vZi1saW5lIGNvbnZlbnRpb24sICdccicsIHRoZSBvbGQgTWFjaW50b3NoIGNvbnZlbnRpb24gb3IKLSdcclxuJywgdGhlIFdpbmRvd3MgY29udmVudGlvbi4gIEFsbCBvZiB0aGVzZSBleHRlcm5hbCByZXByZXNlbnRhdGlvbnMKLWFyZSBzZWVuIGFzICdcbicgYnkgdGhlIFB5dGhvbiBwcm9ncmFtLiAgQWxzbywgdGhlIG5ld2xpbmVzIGF0dHJpYnV0ZQotb2YgdGhlIGZpbGUgb2JqZWN0cyBzdGRvdXQsIHN0ZGluIGFuZCBzdGRlcnIgYXJlIG5vdCB1cGRhdGVkIGJ5IHRoZQotY29tbXVuaWNhdGUoKSBtZXRob2QuCi0KLUluIGVpdGhlciBjYXNlLCB0aGUgcHJvY2VzcyBiZWluZyBjb21tdW5pY2F0ZWQgd2l0aCBzaG91bGQgc3RhcnQgdXAKLWV4cGVjdGluZyB0byByZWNlaXZlIGJ5dGVzIG9uIGl0cyBzdGFuZGFyZCBpbnB1dCBhbmQgZGVjb2RlIHRoZW0gd2l0aAotdGhlIHNhbWUgZW5jb2RpbmcgdGhleSBhcmUgc2VudCBpbi4KK0lmIG5vIGVuY29kaW5nIGlzIHNwZWNpZmllZCBhbmQgdW5pdmVyc2FsX25ld2xpbmVzIGlzIEZhbHNlLCB0aGUgZmlsZQorb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIG9wZW5lZCBhcyBiaW5hcnkgZmlsZXMsIGFuZCBubworbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBkb25lLgogCiBUaGUgc3RhcnR1cGluZm8gYW5kIGNyZWF0aW9uZmxhZ3MsIGlmIGdpdmVuLCB3aWxsIGJlIHBhc3NlZCB0byB0aGUKIHVuZGVybHlpbmcgQ3JlYXRlUHJvY2VzcygpIGZ1bmN0aW9uLiAgVGhleSBjYW4gc3BlY2lmeSB0aGluZ3Mgc3VjaCBhcwpAQCAtMjM0LDExICsyMjgsOCBAQAogICAgIGFuZCBzdGRlcnIsIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvCiAgICAgdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBkYXRhIHRvIGJlCiAgICAgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0bwotICAgIHRoZSBjaGlsZC4gSWYgdGhlIFBvcGVuIGluc3RhbmNlIHdhcyBjb25zdHJ1Y3RlZCB3aXRoIHVuaXZlcnNhbF9uZXdsaW5lcwotICAgIHNldCB0byBUcnVlLCB0aGUgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyaW5nIGFuZCB3aWxsIGJlIGVuY29kZWQKLSAgICB1c2luZyB0aGUgcHJlZmVycmVkIHN5c3RlbSBlbmNvZGluZyAoc2VlIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyk7Ci0gICAgaWYgdW5pdmVyc2FsX25ld2xpbmVzIGlzIEZhbHNlLCB0aGUgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGEKLSAgICBieXRlIHN0cmluZy4KKyAgICB0aGUgY2hpbGQuIElmIHRoZSBQb3BlbiBpbnN0YW5jZSB3YXMgY29uc3RydWN0ZWQgaW4gdGV4dCBtb2RlLCB0aGUKKyAgICBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgYSBzdHJpbmcuIE90aGVyd2lzZSwgaXQgc2hvdWxkIGJlIGJ5dGVzLgogCiAgICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4KIApAQCAtMzcyLDkgKzM2MywxMSBAQAogCiAKIGNsYXNzIENhbGxlZFByb2Nlc3NFcnJvcihTdWJwcm9jZXNzRXJyb3IpOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgcHJvY2VzcyBydW4gYnkgY2hlY2tfY2FsbCgpIG9yCi0gICAgY2hlY2tfb3V0cHV0KCkgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgotICAgIFRoZSBleGl0IHN0YXR1cyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGU7CisgICAgIiIiUmFpc2VkIHdoZW4gYSBjaGVja19jYWxsKCkgb3IgY2hlY2tfb3V0cHV0KCkgcHJvY2VzcyByZXR1cm5zIG5vbi16ZXJvLgorCisgICAgVGhlIGV4aXQgc3RhdHVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZSwgbmVnYXRpdmUKKyAgICBpZiBpdCByZXByZXNlbnRzIGEgc2lnbmFsIG51bWJlci4KKwogICAgIGNoZWNrX291dHB1dCgpIHdpbGwgYWxzbyBzdG9yZSB0aGUgb3V0cHV0IGluIHRoZSBvdXRwdXQgYXR0cmlidXRlLgogICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXR1cm5jb2RlLCBjbWQsIG91dHB1dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CkBAIC0zODQsNyArMzc3LDE2IEBACiAgICAgICAgIHNlbGYuc3RkZXJyID0gc3RkZXJyCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQiICUgKHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCisgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBhbmQgc2VsZi5yZXR1cm5jb2RlIDwgMDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyBkaWVkIHdpdGggJXIuIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY21kLCBzaWduYWwuU2lnbmFscygtc2VsZi5yZXR1cm5jb2RlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIGRpZWQgd2l0aCB1bmtub3duIHNpZ25hbCAlZC4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbWQsIC1zZWxmLnJldHVybmNvZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZC4iICUgKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmNtZCwgc2VsZi5yZXR1cm5jb2RlKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHN0ZG91dChzZWxmKToKQEAgLTQ3MSw3ICs0NzMsOCBAQAogICAgIF9fYWxsX18uZXh0ZW5kKFsiQ1JFQVRFX05FV19DT05TT0xFIiwgIkNSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfSU5QVVRfSEFORExFIiwgIlNURF9PVVRQVVRfSEFORExFIiwKICAgICAgICAgICAgICAgICAgICAgIlNURF9FUlJPUl9IQU5ETEUiLCAiU1dfSElERSIsCi0gICAgICAgICAgICAgICAgICAgICJTVEFSVEZfVVNFU1RESEFORExFUyIsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyJdKQorICAgICAgICAgICAgICAgICAgICAiU1RBUlRGX1VTRVNUREhBTkRMRVMiLCAiU1RBUlRGX1VTRVNIT1dXSU5ET1ciLAorICAgICAgICAgICAgICAgICAgICAiU1RBUlRVUElORk8iXSkKIAogICAgIGNsYXNzIEhhbmRsZShpbnQpOgogICAgICAgICBjbG9zZWQgPSBGYWxzZQpAQCAtNTIwLDYgKzUyMywxNiBAQAogIyBidXQgaXQncyBoZXJlIHNvIHRoYXQgaXQgY2FuIGJlIGltcG9ydGVkIHdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQKICMgdGhyZWFkcy4KIAorZGVmIF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKKyAgICBvcHRpbWl6YXRpb24gc2V0dGluZ3MgaW4gc3lzLmZsYWdzLiIiIgorICAgIGFyZ3MgPSBbXQorICAgIHZhbHVlID0gc3lzLmZsYWdzLm9wdGltaXplCisgICAgaWYgdmFsdWUgPiAwOgorICAgICAgICBhcmdzLmFwcGVuZCgnLScgKyAnTycgKiB2YWx1ZSkKKyAgICByZXR1cm4gYXJncworCisKIGRlZiBfYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CiAgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCkBAIC01MjcsNyArNTQwLDYgQEAKICAgICAgICAgJ2RlYnVnJzogJ2QnLAogICAgICAgICAjICdpbnNwZWN0JzogJ2knLAogICAgICAgICAjICdpbnRlcmFjdGl2ZSc6ICdpJywKLSAgICAgICAgJ29wdGltaXplJzogJ08nLAogICAgICAgICAnZG9udF93cml0ZV9ieXRlY29kZSc6ICdCJywKICAgICAgICAgJ25vX3VzZXJfc2l0ZSc6ICdzJywKICAgICAgICAgJ25vX3NpdGUnOiAnUycsCkBAIC01MzUsOCArNTQ3LDkgQEAKICAgICAgICAgJ3ZlcmJvc2UnOiAndicsCiAgICAgICAgICdieXRlc193YXJuaW5nJzogJ2InLAogICAgICAgICAncXVpZXQnOiAncScsCisgICAgICAgICMgLU8gaXMgaGFuZGxlZCBpbiBfb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKICAgICB9Ci0gICAgYXJncyA9IFtdCisgICAgYXJncyA9IF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogICAgIGZvciBmbGFnLCBvcHQgaW4gZmxhZ19vcHRfbWFwLml0ZW1zKCk6CiAgICAgICAgIHYgPSBnZXRhdHRyKHN5cy5mbGFncywgZmxhZykKICAgICAgICAgaWYgdiA+IDA6CkBAIC03ODYsOCArNzk5LDggQEAKICAgICAiIiIgICAgUmV0dXJuIChzdGF0dXMsIG91dHB1dCkgb2YgZXhlY3V0aW5nIGNtZCBpbiBhIHNoZWxsLgogCiAgICAgRXhlY3V0ZSB0aGUgc3RyaW5nICdjbWQnIGluIGEgc2hlbGwgd2l0aCAnY2hlY2tfb3V0cHV0JyBhbmQKLSAgICByZXR1cm4gYSAyLXR1cGxlIChzdGF0dXMsIG91dHB1dCkuIFVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzIHVzZWQsCi0gICAgbWVhbmluZyB0aGF0IHRoZSByZXN1bHQgd2l0aCBiZSBkZWNvZGVkIHRvIGEgc3RyaW5nLgorICAgIHJldHVybiBhIDItdHVwbGUgKHN0YXR1cywgb3V0cHV0KS4gVGhlIGxvY2FsZSBlbmNvZGluZyBpcyB1c2VkCisgICAgdG8gZGVjb2RlIHRoZSBvdXRwdXQgYW5kIHByb2Nlc3MgbmV3bGluZXMuCiAKICAgICBBIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQgZnJvbSB0aGUgb3V0cHV0LgogICAgIFRoZSBleGl0IHN0YXR1cyBmb3IgdGhlIGNvbW1hbmQgY2FuIGJlIGludGVycHJldGVkCkBAIC04MzcsNyArODUwLDcgQEAKICAgICAgICAgICAgICAgICAgc2hlbGw9RmFsc2UsIGN3ZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLAogICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbz1Ob25lLCBjcmVhdGlvbmZsYWdzPTAsCiAgICAgICAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscz1UcnVlLCBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgcGFzc19mZHM9KCkpOgorICAgICAgICAgICAgICAgICBwYXNzX2Zkcz0oKSwgKiwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgbmV3IFBvcGVuIGluc3RhbmNlLiIiIgogICAgICAgICBfY2xlYW51cCgpCiAgICAgICAgICMgSGVsZCB3aGlsZSBhbnl0aGluZyBpcyBjYWxsaW5nIHdhaXRwaWQgYmVmb3JlIHJldHVybmNvZGUgaGFzIGJlZW4KQEAgLTg5MCw2ICs5MDMsOCBAQAogICAgICAgICBzZWxmLnBpZCA9IE5vbmUKICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQogICAgICAgICBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyA9IHVuaXZlcnNhbF9uZXdsaW5lcworICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKKyAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKIAogICAgICAgICAjIElucHV0IGFuZCBvdXRwdXQgb2JqZWN0cy4gVGhlIGdlbmVyYWwgcHJpbmNpcGxlIGlzIGxpa2UKICAgICAgICAgIyB0aGlzOgpAQCAtOTIyLDIyICs5MzcsMjggQEAKICAgICAgICAgICAgIGlmIGVycnJlYWQgIT0gLTE6CiAgICAgICAgICAgICAgICAgZXJycmVhZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShlcnJyZWFkLkRldGFjaCgpLCAwKQogCi0gICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLm9wZW4ocDJjd3JpdGUsICd3YicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRpbiwgd3JpdGVfdGhyb3VnaD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPShidWZzaXplID09IDEpKQotICAgICAgICBpZiBjMnByZWFkICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5vcGVuKGMycHJlYWQsICdyYicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3Rkb3V0KQotICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5vcGVuKGVycnJlYWQsICdyYicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkZXJyKQorICAgICAgICB0ZXh0X21vZGUgPSBlbmNvZGluZyBvciBlcnJvcnMgb3IgdW5pdmVyc2FsX25ld2xpbmVzCiAKICAgICAgICAgc2VsZi5fY2xvc2VkX2NoaWxkX3BpcGVfZmRzID0gRmFsc2UKKwogICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBwMmN3cml0ZSAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8ub3BlbihwMmN3cml0ZSwgJ3diJywgYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICBpZiB0ZXh0X21vZGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkaW4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz0oYnVmc2l6ZSA9PSAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKKyAgICAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5vcGVuKGMycHJlYWQsICdyYicsIGJ1ZnNpemUpCisgICAgICAgICAgICAgICAgaWYgdGV4dF9tb2RlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisgICAgICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gaW8ub3BlbihlcnJyZWFkLCAncmInLCBidWZzaXplKQorICAgICAgICAgICAgICAgIGlmIHRleHRfbW9kZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQorCiAgICAgICAgICAgICBzZWxmLl9leGVjdXRlX2NoaWxkKGFyZ3MsIGV4ZWN1dGFibGUsIHByZWV4ZWNfZm4sIGNsb3NlX2ZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCkBAIC05NzEsOSArOTkyLDggQEAKIAogICAgICAgICAgICAgcmFpc2UKIAotCi0gICAgZGVmIF90cmFuc2xhdGVfbmV3bGluZXMoc2VsZiwgZGF0YSwgZW5jb2RpbmcpOgotICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoZW5jb2RpbmcpCisgICAgZGVmIF90cmFuc2xhdGVfbmV3bGluZXMoc2VsZiwgZGF0YSwgZW5jb2RpbmcsIGVycm9ycyk6CisgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICByZXR1cm4gZGF0YS5yZXBsYWNlKCJcclxuIiwgIlxuIikucmVwbGFjZSgiXHIiLCAiXG4iKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTk5NSw2ICsxMDE1LDExIEBACiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGlsZF9jcmVhdGVkOgogICAgICAgICAgICAgIyBXZSBkaWRuJ3QgZ2V0IHRvIHN1Y2Nlc3NmdWxseSBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzLgogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgorICAgICAgICAgICAgIyBOb3QgcmVhZGluZyBzdWJwcm9jZXNzIGV4aXQgc3RhdHVzIGNyZWF0ZXMgYSB6b21iaSBwcm9jZXNzIHdoaWNoCisgICAgICAgICAgICAjIGlzIG9ubHkgZGVzdHJveWVkIGF0IHRoZSBwYXJlbnQgcHl0aG9uIHByb2Nlc3MgZXhpdAorICAgICAgICAgICAgd2FybmluZ3Mud2Fybigic3VicHJvY2VzcyAlcyBpcyBzdGlsbCBydW5uaW5nIiAlIHNlbGYucGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVdhcm5pbmcsIHNvdXJjZT1zZWxmKQogICAgICAgICAjIEluIGNhc2UgdGhlIGNoaWxkIGhhc24ndCBiZWVuIHdhaXRlZCBvbiwgY2hlY2sgaWYgaXQncyBkb25lLgogICAgICAgICBzZWxmLl9pbnRlcm5hbF9wb2xsKF9kZWFkc3RhdGU9X21heHNpemUpCiAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lIGFuZCBfYWN0aXZlIGlzIG5vdCBOb25lOgpAQCAtMTUyMCw5ICsxNTQ1LDE0IEBACiAKICAgICAgICAgICAgIGlmIGVycnBpcGVfZGF0YToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLndhaXRwaWQoc2VsZi5waWQsIDApCisgICAgICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gb3Mud2FpdHBpZChzZWxmLnBpZCwgMCkKKyAgICAgICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gc3lzLm1heHNpemUKICAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX25hbWUsIGhleF9lcnJubywgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX2RhdGEuc3BsaXQoYic6JywgMikpCkBAIC0xNzQ4LDEzICsxNzc4LDE1IEBACiAKICAgICAgICAgICAgICMgVHJhbnNsYXRlIG5ld2xpbmVzLCBpZiByZXF1ZXN0ZWQuCiAgICAgICAgICAgICAjIFRoaXMgYWxzbyB0dXJucyBieXRlcyBpbnRvIHN0cmluZ3MuCi0gICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKKyAgICAgICAgICAgIGlmIHNlbGYuZW5jb2Rpbmcgb3Igc2VsZi5lcnJvcnMgb3Igc2VsZi51bml2ZXJzYWxfbmV3bGluZXM6CiAgICAgICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl90cmFuc2xhdGVfbmV3bGluZXMoc3Rkb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmVycm9ycykKICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuX3RyYW5zbGF0ZV9uZXdsaW5lcyhzdGRlcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5lbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZXJyb3JzKQogCiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCkBAIC0xNzY2LDggKzE3OTgsMTAgQEAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIHNlbGYuX2lucHV0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ID0gMAogICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gaW5wdXQKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyBhbmQgaW5wdXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gc2VsZi5faW5wdXQuZW5jb2RlKHNlbGYuc3RkaW4uZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgaWYgaW5wdXQgaXMgbm90IE5vbmUgYW5kICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmNvZGluZyBvciBzZWxmLmVycm9ycyBvciBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gc2VsZi5faW5wdXQuZW5jb2RlKHNlbGYuc3RkaW4uZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uZXJyb3JzKQogCiAKICAgICAgICAgZGVmIHNlbmRfc2lnbmFsKHNlbGYsIHNpZyk6CmRpZmYgLS1naXQgYS9MaWIvc3ltYm9sLnB5IGIvTGliL3N5bWJvbC5weQppbmRleCA3NTQxNDk3Li5kOWYwMWUwIDEwMDc1NQotLS0gYS9MaWIvc3ltYm9sLnB5CisrKyBiL0xpYi9zeW1ib2wucHkKQEAgLTI3LDc0ICsyNyw3NSBAQAogc2ltcGxlX3N0bXQgPSAyNzAKIHNtYWxsX3N0bXQgPSAyNzEKIGV4cHJfc3RtdCA9IDI3MgotdGVzdGxpc3Rfc3Rhcl9leHByID0gMjczCi1hdWdhc3NpZ24gPSAyNzQKLWRlbF9zdG10ID0gMjc1Ci1wYXNzX3N0bXQgPSAyNzYKLWZsb3dfc3RtdCA9IDI3NwotYnJlYWtfc3RtdCA9IDI3OAotY29udGludWVfc3RtdCA9IDI3OQotcmV0dXJuX3N0bXQgPSAyODAKLXlpZWxkX3N0bXQgPSAyODEKLXJhaXNlX3N0bXQgPSAyODIKLWltcG9ydF9zdG10ID0gMjgzCi1pbXBvcnRfbmFtZSA9IDI4NAotaW1wb3J0X2Zyb20gPSAyODUKLWltcG9ydF9hc19uYW1lID0gMjg2Ci1kb3R0ZWRfYXNfbmFtZSA9IDI4NwotaW1wb3J0X2FzX25hbWVzID0gMjg4Ci1kb3R0ZWRfYXNfbmFtZXMgPSAyODkKLWRvdHRlZF9uYW1lID0gMjkwCi1nbG9iYWxfc3RtdCA9IDI5MQotbm9ubG9jYWxfc3RtdCA9IDI5MgotYXNzZXJ0X3N0bXQgPSAyOTMKLWNvbXBvdW5kX3N0bXQgPSAyOTQKLWFzeW5jX3N0bXQgPSAyOTUKLWlmX3N0bXQgPSAyOTYKLXdoaWxlX3N0bXQgPSAyOTcKLWZvcl9zdG10ID0gMjk4Ci10cnlfc3RtdCA9IDI5OQotd2l0aF9zdG10ID0gMzAwCi13aXRoX2l0ZW0gPSAzMDEKLWV4Y2VwdF9jbGF1c2UgPSAzMDIKLXN1aXRlID0gMzAzCi10ZXN0ID0gMzA0Ci10ZXN0X25vY29uZCA9IDMwNQotbGFtYmRlZiA9IDMwNgotbGFtYmRlZl9ub2NvbmQgPSAzMDcKLW9yX3Rlc3QgPSAzMDgKLWFuZF90ZXN0ID0gMzA5Ci1ub3RfdGVzdCA9IDMxMAotY29tcGFyaXNvbiA9IDMxMQotY29tcF9vcCA9IDMxMgotc3Rhcl9leHByID0gMzEzCi1leHByID0gMzE0Ci14b3JfZXhwciA9IDMxNQotYW5kX2V4cHIgPSAzMTYKLXNoaWZ0X2V4cHIgPSAzMTcKLWFyaXRoX2V4cHIgPSAzMTgKLXRlcm0gPSAzMTkKLWZhY3RvciA9IDMyMAotcG93ZXIgPSAzMjEKLWF0b21fZXhwciA9IDMyMgotYXRvbSA9IDMyMwotdGVzdGxpc3RfY29tcCA9IDMyNAotdHJhaWxlciA9IDMyNQotc3Vic2NyaXB0bGlzdCA9IDMyNgotc3Vic2NyaXB0ID0gMzI3Ci1zbGljZW9wID0gMzI4Ci1leHBybGlzdCA9IDMyOQotdGVzdGxpc3QgPSAzMzAKLWRpY3RvcnNldG1ha2VyID0gMzMxCi1jbGFzc2RlZiA9IDMzMgotYXJnbGlzdCA9IDMzMwotYXJndW1lbnQgPSAzMzQKLWNvbXBfaXRlciA9IDMzNQotY29tcF9mb3IgPSAzMzYKLWNvbXBfaWYgPSAzMzcKLWVuY29kaW5nX2RlY2wgPSAzMzgKLXlpZWxkX2V4cHIgPSAzMzkKLXlpZWxkX2FyZyA9IDM0MAorYW5uYXNzaWduID0gMjczCit0ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzQKK2F1Z2Fzc2lnbiA9IDI3NQorZGVsX3N0bXQgPSAyNzYKK3Bhc3Nfc3RtdCA9IDI3NworZmxvd19zdG10ID0gMjc4CiticmVha19zdG10ID0gMjc5Citjb250aW51ZV9zdG10ID0gMjgwCityZXR1cm5fc3RtdCA9IDI4MQoreWllbGRfc3RtdCA9IDI4MgorcmFpc2Vfc3RtdCA9IDI4MworaW1wb3J0X3N0bXQgPSAyODQKK2ltcG9ydF9uYW1lID0gMjg1CitpbXBvcnRfZnJvbSA9IDI4NgoraW1wb3J0X2FzX25hbWUgPSAyODcKK2RvdHRlZF9hc19uYW1lID0gMjg4CitpbXBvcnRfYXNfbmFtZXMgPSAyODkKK2RvdHRlZF9hc19uYW1lcyA9IDI5MAorZG90dGVkX25hbWUgPSAyOTEKK2dsb2JhbF9zdG10ID0gMjkyCitub25sb2NhbF9zdG10ID0gMjkzCithc3NlcnRfc3RtdCA9IDI5NAorY29tcG91bmRfc3RtdCA9IDI5NQorYXN5bmNfc3RtdCA9IDI5NgoraWZfc3RtdCA9IDI5Nword2hpbGVfc3RtdCA9IDI5OAorZm9yX3N0bXQgPSAyOTkKK3RyeV9zdG10ID0gMzAwCit3aXRoX3N0bXQgPSAzMDEKK3dpdGhfaXRlbSA9IDMwMgorZXhjZXB0X2NsYXVzZSA9IDMwMworc3VpdGUgPSAzMDQKK3Rlc3QgPSAzMDUKK3Rlc3Rfbm9jb25kID0gMzA2CitsYW1iZGVmID0gMzA3CitsYW1iZGVmX25vY29uZCA9IDMwOAorb3JfdGVzdCA9IDMwOQorYW5kX3Rlc3QgPSAzMTAKK25vdF90ZXN0ID0gMzExCitjb21wYXJpc29uID0gMzEyCitjb21wX29wID0gMzEzCitzdGFyX2V4cHIgPSAzMTQKK2V4cHIgPSAzMTUKK3hvcl9leHByID0gMzE2CithbmRfZXhwciA9IDMxNworc2hpZnRfZXhwciA9IDMxOAorYXJpdGhfZXhwciA9IDMxOQordGVybSA9IDMyMAorZmFjdG9yID0gMzIxCitwb3dlciA9IDMyMgorYXRvbV9leHByID0gMzIzCithdG9tID0gMzI0Cit0ZXN0bGlzdF9jb21wID0gMzI1Cit0cmFpbGVyID0gMzI2CitzdWJzY3JpcHRsaXN0ID0gMzI3CitzdWJzY3JpcHQgPSAzMjgKK3NsaWNlb3AgPSAzMjkKK2V4cHJsaXN0ID0gMzMwCit0ZXN0bGlzdCA9IDMzMQorZGljdG9yc2V0bWFrZXIgPSAzMzIKK2NsYXNzZGVmID0gMzMzCithcmdsaXN0ID0gMzM0Cithcmd1bWVudCA9IDMzNQorY29tcF9pdGVyID0gMzM2Citjb21wX2ZvciA9IDMzNworY29tcF9pZiA9IDMzOAorZW5jb2RpbmdfZGVjbCA9IDMzOQoreWllbGRfZXhwciA9IDM0MAoreWllbGRfYXJnID0gMzQxCiAjLS1lbmQgY29uc3RhbnRzLS0KIAogc3ltX25hbWUgPSB7fQpkaWZmIC0tZ2l0IGEvTGliL3N5bXRhYmxlLnB5IGIvTGliL3N5bXRhYmxlLnB5CmluZGV4IDg0ZmVjNGEuLmIwZTUyNjAgMTAwNjQ0Ci0tLSBhL0xpYi9zeW10YWJsZS5weQorKysgYi9MaWIvc3ltdGFibGUucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCBfc3ltdGFibGUKIGZyb20gX3N5bXRhYmxlIGltcG9ydCAoVVNFLCBERUZfR0xPQkFMLCBERUZfTE9DQUwsIERFRl9QQVJBTSwKLSAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCisgICAgIERFRl9JTVBPUlQsIERFRl9CT1VORCwgREVGX0FOTk9ULCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCiAgICAgIExPQ0FMLCBHTE9CQUxfSU1QTElDSVQsIEdMT0JBTF9FWFBMSUNJVCwgQ0VMTCkKIAogaW1wb3J0IHdlYWtyZWYKQEAgLTE5MCw2ICsxOTAsOSBAQAogICAgIGRlZiBpc19sb2NhbChzZWxmKToKICAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX2ZsYWdzICYgREVGX0JPVU5EKQogCisgICAgZGVmIGlzX2Fubm90YXRlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX2ZsYWdzICYgREVGX0FOTk9UKQorCiAgICAgZGVmIGlzX2ZyZWUoc2VsZik6CiAgICAgICAgIHJldHVybiBib29sKHNlbGYuX19zY29wZSA9PSBGUkVFKQogCmRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQppbmRleCA5YzM0YmUwLi45MzE0ZTcxIDEwMDY0NAotLS0gYS9MaWIvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9zeXNjb25maWcucHkKQEAgLTg2LDggKzg2LDggQEAKICAjIEZJWE1FIGRvbid0IHJlbHkgb24gc3lzLnZlcnNpb24gaGVyZSwgaXRzIGZvcm1hdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwKICAjIG9mIENQeXRob24sIHVzZSBzeXMudmVyc2lvbl9pbmZvIG9yIHN5cy5oZXh2ZXJzaW9uCiBfUFlfVkVSU0lPTiA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0KLV9QWV9WRVJTSU9OX1NIT1JUID0gc3lzLnZlcnNpb25bOjNdCi1fUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QgPSBfUFlfVkVSU0lPTlswXSArIF9QWV9WRVJTSU9OWzJdCitfUFlfVkVSU0lPTl9TSE9SVCA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQorX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UID0gJyVkJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIF9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCiBfQkFTRV9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkKIF9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWNfcHJlZml4KQpAQCAtMjE1LDcgKzIxNSw3IEBACiAgICAgIyBSZWdleGVzIG5lZWRlZCBmb3IgcGFyc2luZyBNYWtlZmlsZSAoYW5kIHNpbWlsYXIgc3ludGF4ZXMsCiAgICAgIyBsaWtlIG9sZC1zdHlsZSBTZXR1cCBmaWxlcykuCiAgICAgaW1wb3J0IHJlCi0gICAgX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZSgiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCisgICAgX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZShyIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQogICAgIF9maW5kdmFyMV9yeCA9IHJlLmNvbXBpbGUociJcJFwoKFtBLVphLXpdW0EtWmEtejAtOV9dKilcKSIpCiAgICAgX2ZpbmR2YXIyX3J4ID0gcmUuY29tcGlsZShyIlwkeyhbQS1aYS16XVtBLVphLXowLTlfXSopfSIpCiAKQEAgLTMzNyw4ICszMzcsMjAgQEAKICAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZy0lcyVzJyAlIChfUFlfVkVSU0lPTl9TSE9SVCwgc3lzLmFiaWZsYWdzKQogICAgIGVsc2U6CiAgICAgICAgIGNvbmZpZ19kaXJfbmFtZSA9ICdjb25maWcnCisgICAgaWYgaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJyk6CisgICAgICAgIGNvbmZpZ19kaXJfbmFtZSArPSAnLSVzJyAlIHN5cy5pbXBsZW1lbnRhdGlvbi5fbXVsdGlhcmNoCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihnZXRfcGF0aCgnc3RkbGliJyksIGNvbmZpZ19kaXJfbmFtZSwgJ01ha2VmaWxlJykKIAorCitkZWYgX2dldF9zeXNjb25maWdkYXRhX25hbWUoKToKKyAgICByZXR1cm4gb3MuZW52aXJvbi5nZXQoJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FJywKKyAgICAgICAgJ19zeXNjb25maWdkYXRhX3thYml9X3twbGF0Zm9ybX1fe211bHRpYXJjaH0nLmZvcm1hdCgKKyAgICAgICAgYWJpPXN5cy5hYmlmbGFncywKKyAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAorICAgICAgICBtdWx0aWFyY2g9Z2V0YXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJywgJycpLAorICAgICkpCisKKwogZGVmIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCk6CiAgICAgIiIiR2VuZXJhdGUgdGhlIFB5dGhvbiBtb2R1bGUgY29udGFpbmluZyBidWlsZC10aW1lIHZhcmlhYmxlcy4iIiIKICAgICBpbXBvcnQgcHByaW50CkBAIC0zNzksMTQgKzM5MSwxNCBAQAogICAgICMgX3N5c2NvbmZpZ2RhdGEgbW9kdWxlIG1hbnVhbGx5IGFuZCBwb3B1bGF0ZSBpdCB3aXRoIHRoZSBidWlsZCB2YXJzLgogICAgICMgVGhpcyBpcyBtb3JlIHRoYW4gc3VmZmljaWVudCBmb3IgZW5zdXJpbmcgdGhlIHN1YnNlcXVlbnQgY2FsbCB0bwogICAgICMgZ2V0X3BsYXRmb3JtKCkgc3VjY2VlZHMuCi0gICAgbmFtZSA9ICdfc3lzY29uZmlnZGF0YScKKyAgICBuYW1lID0gX2dldF9zeXNjb25maWdkYXRhX25hbWUoKQogICAgIGlmICdkYXJ3aW4nIGluIHN5cy5wbGF0Zm9ybToKICAgICAgICAgaW1wb3J0IHR5cGVzCiAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgbW9kdWxlLmJ1aWxkX3RpbWVfdmFycyA9IHZhcnMKICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKIAotICAgIHB5YnVpbGRkaXIgPSAnYnVpbGQvbGliLiVzLSVzJyAlIChnZXRfcGxhdGZvcm0oKSwgc3lzLnZlcnNpb25bOjNdKQorICAgIHB5YnVpbGRkaXIgPSAnYnVpbGQvbGliLiVzLSVzJyAlIChnZXRfcGxhdGZvcm0oKSwgX1BZX1ZFUlNJT05fU0hPUlQpCiAgICAgaWYgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6CiAgICAgICAgIHB5YnVpbGRkaXIgKz0gJy1weWRlYnVnJwogICAgIG9zLm1ha2VkaXJzKHB5YnVpbGRkaXIsIGV4aXN0X29rPVRydWUpCkBAIC00MDUsNyArNDE3LDkgQEAKIGRlZiBfaW5pdF9wb3NpeCh2YXJzKToKICAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCiAgICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKLSAgICBmcm9tIF9zeXNjb25maWdkYXRhIGltcG9ydCBidWlsZF90aW1lX3ZhcnMKKyAgICBuYW1lID0gX2dldF9zeXNjb25maWdkYXRhX25hbWUoKQorICAgIF90ZW1wID0gX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbJ2J1aWxkX3RpbWVfdmFycyddLCAwKQorICAgIGJ1aWxkX3RpbWVfdmFycyA9IF90ZW1wLmJ1aWxkX3RpbWVfdmFycwogICAgIHZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKIAogZGVmIF9pbml0X25vbl9wb3NpeCh2YXJzKToKQEAgLTUxOCw3ICs1MzIsNyBAQAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2V4ZWNfcHJlZml4J10gPSBfRVhFQ19QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uJ10gPSBfUFlfVkVSU0lPTgogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fc2hvcnQnXSA9IF9QWV9WRVJTSU9OX1NIT1JUCi0gICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdCddID0gX1BZX1ZFUlNJT05bMF0gKyBfUFlfVkVSU0lPTlsyXQorICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fbm9kb3QnXSA9IF9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9iYXNlJ10gPSBfQkFTRV9QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydiYXNlJ10gPSBfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX3BsYXRiYXNlJ10gPSBfQkFTRV9FWEVDX1BSRUZJWApkaWZmIC0tZ2l0IGEvTGliL3RhcmZpbGUucHkgYi9MaWIvdGFyZmlsZS5weQppbmRleCA3MjFmOWQ3Li5hNjJhYjgyIDEwMDc1NQotLS0gYS9MaWIvdGFyZmlsZS5weQorKysgYi9MaWIvdGFyZmlsZS5weQpAQCAtNjQsNyArNjQsMTAgQEAKICAgICBwYXNzCiAKICMgZnJvbSB0YXJmaWxlIGltcG9ydCAqCi1fX2FsbF9fID0gWyJUYXJGaWxlIiwgIlRhckluZm8iLCAiaXNfdGFyZmlsZSIsICJUYXJFcnJvciJdCitfX2FsbF9fID0gWyJUYXJGaWxlIiwgIlRhckluZm8iLCAiaXNfdGFyZmlsZSIsICJUYXJFcnJvciIsICJSZWFkRXJyb3IiLAorICAgICAgICAgICAiQ29tcHJlc3Npb25FcnJvciIsICJTdHJlYW1FcnJvciIsICJFeHRyYWN0RXJyb3IiLCAiSGVhZGVyRXJyb3IiLAorICAgICAgICAgICAiRU5DT0RJTkciLCAiVVNUQVJfRk9STUFUIiwgIkdOVV9GT1JNQVQiLCAiUEFYX0ZPUk1BVCIsCisgICAgICAgICAgICJERUZBVUxUX0ZPUk1BVCIsICJvcGVuIl0KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyB0YXIgY29uc3RhbnRzCkBAIC0xNDEsNyArMTQ0LDcgQEAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgaW5pdGlhbGl6YXRpb24KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWlmIG9zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgb3MubmFtZSA9PSAibnQiOgogICAgIEVOQ09ESU5HID0gInV0Zi04IgogZWxzZToKICAgICBFTkNPRElORyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQpAQCAtMjI1LDIxICsyMjgsMjEgQEAKICAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Yjh4MzU2YiIsIGJ1ZikpCiAgICAgcmV0dXJuIHVuc2lnbmVkX2Noa3N1bSwgc2lnbmVkX2Noa3N1bQogCi1kZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lLCBleGNlcHRpb249T1NFcnJvcik6CitkZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lLCBleGNlcHRpb249T1NFcnJvciwgYnVmc2l6ZT1Ob25lKToKICAgICAiIiJDb3B5IGxlbmd0aCBieXRlcyBmcm9tIGZpbGVvYmogc3JjIHRvIGZpbGVvYmogZHN0LgogICAgICAgIElmIGxlbmd0aCBpcyBOb25lLCBjb3B5IHRoZSBlbnRpcmUgY29udGVudC4KICAgICAiIiIKKyAgICBidWZzaXplID0gYnVmc2l6ZSBvciAxNiAqIDEwMjQKICAgICBpZiBsZW5ndGggPT0gMDoKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbGVuZ3RoIGlzIE5vbmU6Ci0gICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihzcmMsIGRzdCkKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZHN0LCBidWZzaXplKQogICAgICAgICByZXR1cm4KIAotICAgIEJVRlNJWkUgPSAxNiAqIDEwMjQKLSAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZChsZW5ndGgsIEJVRlNJWkUpCisgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QobGVuZ3RoLCBidWZzaXplKQogICAgIGZvciBiIGluIHJhbmdlKGJsb2Nrcyk6Ci0gICAgICAgIGJ1ZiA9IHNyYy5yZWFkKEJVRlNJWkUpCi0gICAgICAgIGlmIGxlbihidWYpIDwgQlVGU0laRToKKyAgICAgICAgYnVmID0gc3JjLnJlYWQoYnVmc2l6ZSkKKyAgICAgICAgaWYgbGVuKGJ1ZikgPCBidWZzaXplOgogICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9uKCJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIikKICAgICAgICAgZHN0LndyaXRlKGJ1ZikKIApAQCAtMTQwMCw3ICsxNDAzLDggQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIG1vZGU9InIiLCBmaWxlb2JqPU5vbmUsIGZvcm1hdD1Ob25lLAogICAgICAgICAgICAgdGFyaW5mbz1Ob25lLCBkZXJlZmVyZW5jZT1Ob25lLCBpZ25vcmVfemVyb3M9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwKLSAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIiwgcGF4X2hlYWRlcnM9Tm9uZSwgZGVidWc9Tm9uZSwgZXJyb3JsZXZlbD1Ob25lKToKKyAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIiwgcGF4X2hlYWRlcnM9Tm9uZSwgZGVidWc9Tm9uZSwKKyAgICAgICAgICAgIGVycm9ybGV2ZWw9Tm9uZSwgY29weWJ1ZnNpemU9Tm9uZSk6CiAgICAgICAgICIiIk9wZW4gYW4gKHVuY29tcHJlc3NlZCkgdGFyIGFyY2hpdmUgYG5hbWUnLiBgbW9kZScgaXMgZWl0aGVyICdyJyB0bwogICAgICAgICAgICByZWFkIGZyb20gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgJ2EnIHRvIGFwcGVuZCBkYXRhIHRvIGFuIGV4aXN0aW5nCiAgICAgICAgICAgIGZpbGUgb3IgJ3cnIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIG9uZS4gYG1vZGUnCkBAIC0xNDU2LDYgKzE0NjAsNyBAQAogICAgICAgICAgICAgc2VsZi5lcnJvcmxldmVsID0gZXJyb3JsZXZlbAogCiAgICAgICAgICMgSW5pdCBkYXRhc3RydWN0dXJlcy4KKyAgICAgICAgc2VsZi5jb3B5YnVmc2l6ZSA9IGNvcHlidWZzaXplCiAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKICAgICAgICAgc2VsZi5tZW1iZXJzID0gW10gICAgICAgIyBsaXN0IG9mIG1lbWJlcnMgYXMgVGFySW5mbyBvYmplY3RzCiAgICAgICAgIHNlbGYuX2xvYWRlZCA9IEZhbHNlICAgICMgZmxhZyBpZiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZApAQCAtMTU1NSw3ICsxNTYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2F2ZWRfcG9zID0gZmlsZW9iai50ZWxsKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKG5hbWUsICJyIiwgZmlsZW9iaiwgKiprd2FyZ3MpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChSZWFkRXJyb3IsIENvbXByZXNzaW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IChSZWFkRXJyb3IsIENvbXByZXNzaW9uRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW9iai5zZWVrKHNhdmVkX3BvcykKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTE5NjAsMTAgKzE5NjUsMTAgQEAKICAgICAgICAgYnVmID0gdGFyaW5mby50b2J1ZihzZWxmLmZvcm1hdCwgc2VsZi5lbmNvZGluZywgc2VsZi5lcnJvcnMpCiAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShidWYpCiAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGxlbihidWYpCi0KKyAgICAgICAgYnVmc2l6ZT1zZWxmLmNvcHlidWZzaXplCiAgICAgICAgICMgSWYgdGhlcmUncyBkYXRhIHRvIGZvbGxvdywgYXBwZW5kIGl0LgogICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY29weWZpbGVvYmooZmlsZW9iaiwgc2VsZi5maWxlb2JqLCB0YXJpbmZvLnNpemUpCisgICAgICAgICAgICBjb3B5ZmlsZW9iaihmaWxlb2JqLCBzZWxmLmZpbGVvYmosIHRhcmluZm8uc2l6ZSwgYnVmc2l6ZT1idWZzaXplKQogICAgICAgICAgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QodGFyaW5mby5zaXplLCBCTE9DS1NJWkUpCiAgICAgICAgICAgICBpZiByZW1haW5kZXIgPiAwOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShOVUwgKiAoQkxPQ0tTSVpFIC0gcmVtYWluZGVyKSkKQEAgLTIxNDUsMTUgKzIxNTAsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNvdXJjZSA9IHNlbGYuZmlsZW9iagogICAgICAgICBzb3VyY2Uuc2Vlayh0YXJpbmZvLm9mZnNldF9kYXRhKQorICAgICAgICBidWZzaXplID0gc2VsZi5jb3B5YnVmc2l6ZQogICAgICAgICB3aXRoIGJsdG5fb3Blbih0YXJnZXRwYXRoLCAid2IiKSBhcyB0YXJnZXQ6CiAgICAgICAgICAgICBpZiB0YXJpbmZvLnNwYXJzZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBmb3Igb2Zmc2V0LCBzaXplIGluIHRhcmluZm8uc3BhcnNlOgogICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2VlayhvZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCBzaXplLCBSZWFkRXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCBzaXplLCBSZWFkRXJyb3IsIGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgdGFyZ2V0LnNlZWsodGFyaW5mby5zaXplKQogICAgICAgICAgICAgICAgIHRhcmdldC50cnVuY2F0ZSgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCB0YXJpbmZvLnNpemUsIFJlYWRFcnJvcikKKyAgICAgICAgICAgICAgICBjb3B5ZmlsZW9iaihzb3VyY2UsIHRhcmdldCwgdGFyaW5mby5zaXplLCBSZWFkRXJyb3IsIGJ1ZnNpemUpCiAKICAgICBkZWYgbWFrZXVua25vd24oc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CiAgICAgICAgICIiIk1ha2UgYSBmaWxlIGZyb20gYSBUYXJJbmZvIG9iamVjdCB3aXRoIGFuIHVua25vd24gdHlwZQpAQCAtMjIzMiw3ICsyMjM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgb3MubGNob3duKHRhcmdldHBhdGgsIHUsIGcpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgb3MuY2hvd24odGFyZ2V0cGF0aCwgdSwgZykKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2Ugb3duZXIiKQogCiAgICAgZGVmIGNobW9kKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgpAQCAtMjI0MSw3ICsyMjQ3LDcgQEAKICAgICAgICAgaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MuY2htb2QodGFyZ2V0cGF0aCwgdGFyaW5mby5tb2RlKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBtb2RlIikKIAogICAgIGRlZiB1dGltZShzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKQEAgLTIyNTEsNyArMjI1Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MudXRpbWUodGFyZ2V0cGF0aCwgKHRhcmluZm8ubXRpbWUsIHRhcmluZm8ubXRpbWUpKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBtb2RpZmljYXRpb24gdGltZSIpCiAKICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzNzQsOSArMjM4MCwzMiBAQAogICAgICAgICAiIiJQcm92aWRlIGFuIGl0ZXJhdG9yIG9iamVjdC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuX2xvYWRlZDoKLSAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYubWVtYmVycykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBUYXJJdGVyKHNlbGYpCisgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYubWVtYmVycworICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBZaWVsZCBpdGVtcyB1c2luZyBUYXJGaWxlJ3MgbmV4dCgpIG1ldGhvZC4KKyAgICAgICAgIyBXaGVuIGFsbCBtZW1iZXJzIGhhdmUgYmVlbiByZWFkLCBzZXQgVGFyRmlsZSBhcyBfbG9hZGVkLgorICAgICAgICBpbmRleCA9IDAKKyAgICAgICAgIyBGaXggZm9yIFNGICMxMTAwNDI5OiBVbmRlciByYXJlIGNpcmN1bXN0YW5jZXMgaXQgY2FuCisgICAgICAgICMgaGFwcGVuIHRoYXQgZ2V0bWVtYmVycygpIGlzIGNhbGxlZCBkdXJpbmcgaXRlcmF0aW9uLAorICAgICAgICAjIHdoaWNoIHdpbGwgaGF2ZSBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgbmV4dCgpIG1ldGhvZC4KKyAgICAgICAgaWYgc2VsZi5maXJzdG1lbWJlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm5leHQoKQorICAgICAgICAgICAgaW5kZXggKz0gMQorICAgICAgICAgICAgeWllbGQgdGFyaW5mbworCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBpbmRleCA8IGxlbihzZWxmLm1lbWJlcnMpOgorICAgICAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm1lbWJlcnNbaW5kZXhdCisgICAgICAgICAgICBlbGlmIG5vdCBzZWxmLl9sb2FkZWQ6CisgICAgICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYubmV4dCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHRhcmluZm86CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaW5kZXggKz0gMQorICAgICAgICAgICAgeWllbGQgdGFyaW5mbwogCiAgICAgZGVmIF9kYmcoc2VsZiwgbGV2ZWwsIG1zZyk6CiAgICAgICAgICIiIldyaXRlIGRlYnVnZ2luZyBvdXRwdXQgdG8gc3lzLnN0ZGVyci4KQEAgLTIzOTcsNDUgKzI0MjYsNiBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2V4dGZpbGVvYmo6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQotIyBjbGFzcyBUYXJGaWxlCi0KLWNsYXNzIFRhckl0ZXI6Ci0gICAgIiIiSXRlcmF0b3IgQ2xhc3MuCi0KLSAgICAgICBmb3IgdGFyaW5mbyBpbiBUYXJGaWxlKC4uLik6Ci0gICAgICAgICAgIHN1aXRlLi4uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZmlsZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhIFRhckl0ZXIgb2JqZWN0LgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi50YXJmaWxlID0gdGFyZmlsZQotICAgICAgICBzZWxmLmluZGV4ID0gMAotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGl0ZXJhdG9yIG9iamVjdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmCi0gICAgZGVmIF9fbmV4dF9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgaXRlbSB1c2luZyBUYXJGaWxlJ3MgbmV4dCgpIG1ldGhvZC4KLSAgICAgICAgICAgV2hlbiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZCwgc2V0IFRhckZpbGUgYXMgX2xvYWRlZC4KLSAgICAgICAgIiIiCi0gICAgICAgICMgRml4IGZvciBTRiAjMTEwMDQyOTogVW5kZXIgcmFyZSBjaXJjdW1zdGFuY2VzIGl0IGNhbgotICAgICAgICAjIGhhcHBlbiB0aGF0IGdldG1lbWJlcnMoKSBpcyBjYWxsZWQgZHVyaW5nIGl0ZXJhdGlvbiwKLSAgICAgICAgIyB3aGljaCB3aWxsIGNhdXNlIFRhckl0ZXIgdG8gc3RvcCBwcmVtYXR1cmVseS4KLQotICAgICAgICBpZiBzZWxmLmluZGV4ID09IDAgYW5kIHNlbGYudGFyZmlsZS5maXJzdG1lbWJlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhcmZpbGUubmV4dCgpCi0gICAgICAgIGVsaWYgc2VsZi5pbmRleCA8IGxlbihzZWxmLnRhcmZpbGUubWVtYmVycyk6Ci0gICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJmaWxlLm1lbWJlcnNbc2VsZi5pbmRleF0KLSAgICAgICAgZWxpZiBub3Qgc2VsZi50YXJmaWxlLl9sb2FkZWQ6Ci0gICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJmaWxlLm5leHQoKQotICAgICAgICAgICAgaWYgbm90IHRhcmluZm86Ci0gICAgICAgICAgICAgICAgc2VsZi50YXJmaWxlLl9sb2FkZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgICAgICBzZWxmLmluZGV4ICs9IDEKLSAgICAgICAgcmV0dXJuIHRhcmluZm8KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIGV4cG9ydGVkIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvTGliL3RlbG5ldGxpYi5weSBiL0xpYi90ZWxuZXRsaWIucHkKaW5kZXggNzJkYWJjNy4uYjA4NjNiMSAxMDA2NDQKLS0tIGEvTGliL3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVsbmV0bGliLnB5CkBAIC02MzcsNiArNjM3LDEyIEBACiAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgogICAgICAgICByZXR1cm4gKC0xLCBOb25lLCB0ZXh0KQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIHRlc3QoKToKICAgICAiIiJUZXN0IHByb2dyYW0gZm9yIHRlbG5ldGxpYi4KQEAgLTY2MCwxMSArNjY2LDEwIEBACiAgICAgICAgICAgICBwb3J0ID0gaW50KHBvcnRzdHIpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcG9ydCA9IHNvY2tldC5nZXRzZXJ2YnluYW1lKHBvcnRzdHIsICd0Y3AnKQotICAgIHRuID0gVGVsbmV0KCkKLSAgICB0bi5zZXRfZGVidWdsZXZlbChkZWJ1Z2xldmVsKQotICAgIHRuLm9wZW4oaG9zdCwgcG9ydCwgdGltZW91dD0wLjUpCi0gICAgdG4uaW50ZXJhY3QoKQotICAgIHRuLmNsb3NlKCkKKyAgICB3aXRoIFRlbG5ldCgpIGFzIHRuOgorICAgICAgICB0bi5zZXRfZGVidWdsZXZlbChkZWJ1Z2xldmVsKQorICAgICAgICB0bi5vcGVuKGhvc3QsIHBvcnQsIHRpbWVvdXQ9MC41KQorICAgICAgICB0bi5pbnRlcmFjdCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdCgpCmRpZmYgLS1naXQgYS9MaWIvdGVtcGZpbGUucHkgYi9MaWIvdGVtcGZpbGUucHkKaW5kZXggYWQ2ODdiOS4uNjE0NjIzNSAxMDA2NDQKLS0tIGEvTGliL3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZW1wZmlsZS5weQpAQCAtNzk3LDcgKzc5Nyw2IEBACiAgICAgICAgIF9zaHV0aWwucm10cmVlKG5hbWUpCiAgICAgICAgIF93YXJuaW5ncy53YXJuKHdhcm5fbWVzc2FnZSwgUmVzb3VyY2VXYXJuaW5nKQogCi0KICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiPHt9IHshcn0+Ii5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX19tYWluX18ucHkgYi9MaWIvdGVzdC9fX21haW5fXy5weQppbmRleCBkNWZiZTE1Li4xOWE2YjJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9fX21haW5fXy5weQorKysgYi9MaWIvdGVzdC9fX21haW5fXy5weQpAQCAtMSwzICsxLDIgQEAKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLQotcmVncnRlc3QubWFpbl9pbl90ZW1wX2N3ZCgpCitmcm9tIHRlc3QubGlicmVncnRlc3QgaW1wb3J0IG1haW4KK21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5IGIvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IDJiZWNmYWEuLmMwMDg0NmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQorKysgYi9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKQEAgLTE2MjgsMTMgKzE2MjgsMzMgQEAKICAgICAgICAgZCA9IFthLCBiXQogICAgICAgICBlID0gc2VsZi5saXN0KGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBlWzpdLAorICAgICAgICAgICAgW2VsZW1lbnRbOl0gZm9yIGVsZW1lbnQgaW4gZV0sCiAgICAgICAgICAgICBbWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLCBbMCwgMSwgMiwgMywgNCwgMCwgMSwgMiwgMywgNF1dCiAgICAgICAgICAgICApCiAKICAgICAgICAgZiA9IHNlbGYubGlzdChbYV0pCiAgICAgICAgIGEuYXBwZW5kKCdoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZls6XSwgW1swLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAnaGVsbG8nXV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZlswXVs6XSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksICdoZWxsbyddKQorCisgICAgZGVmIHRlc3RfbGlzdF9wcm94eV9pbl9saXN0KHNlbGYpOgorICAgICAgICBhID0gc2VsZi5saXN0KFtzZWxmLmxpc3QocmFuZ2UoMykpIGZvciBfaSBpbiByYW5nZSgzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2lubmVyWzpdIGZvciBpbm5lciBpbiBhXSwgW1swLCAxLCAyXV0gKiAzKQorCisgICAgICAgIGFbMF1bLTFdID0gNTUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzBdWzpdLCBbMCwgMSwgNTVdKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYVtpXVs6XSwgWzAsIDEsIDJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYVsxXS5wb3AoKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYVsxXSksIDIpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDMsIDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYVtpXSksIDMpCisKKyAgICAgICAgZGVsIGEKKworICAgICAgICBiID0gc2VsZi5saXN0KCkKKyAgICAgICAgYi5hcHBlbmQoYikKKyAgICAgICAgZGVsIGIKIAogICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLmRpY3QoKQpAQCAtMTY0Niw2ICsxNjY2LDUyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGQudmFsdWVzKCkpLCBbY2hyKGkpIGZvciBpIGluIGluZGljZXNdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChkLml0ZW1zKCkpLCBbKGksIGNocihpKSkgZm9yIGkgaW4gaW5kaWNlc10pCiAKKyAgICBkZWYgdGVzdF9kaWN0X3Byb3h5X25lc3RlZChzZWxmKToKKyAgICAgICAgcGV0cyA9IHNlbGYuZGljdChmZXJyZXRzPTIsIGhhbXN0ZXJzPTQpCisgICAgICAgIHN1cHBsaWVzID0gc2VsZi5kaWN0KHdhdGVyPTEwLCBmZWVkPTMpCisgICAgICAgIGQgPSBzZWxmLmRpY3QocGV0cz1wZXRzLCBzdXBwbGllcz1zdXBwbGllcykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCAxMCkKKworICAgICAgICBkWydzdXBwbGllcyddWydibGFua2V0cyddID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWydibGFua2V0cyddLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10sIDUpCisKKyAgICAgICAgZFsnc3VwcGxpZXMnXVsnd2F0ZXInXSA9IDcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCA3KQorCisgICAgICAgIGRlbCBwZXRzCisgICAgICAgIGRlbCBzdXBwbGllcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3BldHMnXVsnZmVycmV0cyddLCAyKQorICAgICAgICBkWydzdXBwbGllcyddWydibGFua2V0cyddID0gMTEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWydibGFua2V0cyddLCAxMSkKKworICAgICAgICBwZXRzID0gZFsncGV0cyddCisgICAgICAgIHN1cHBsaWVzID0gZFsnc3VwcGxpZXMnXQorICAgICAgICBzdXBwbGllc1snd2F0ZXInXSA9IDcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCA3KQorCisgICAgICAgIGQuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwZXRzWydoYW1zdGVycyddLCA0KQorCisgICAgICAgIGwgPSBzZWxmLmxpc3QoW3BldHMsIHN1cHBsaWVzXSkKKyAgICAgICAgbFswXVsnbWFybW90cyddID0gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBldHNbJ21hcm1vdHMnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzBdWydtYXJtb3RzJ10sIDEpCisKKyAgICAgICAgZGVsIHBldHMKKyAgICAgICAgZGVsIHN1cHBsaWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFswXVsnbWFybW90cyddLCAxKQorCisgICAgICAgIG91dGVyID0gc2VsZi5saXN0KFtbODgsIDk5XSwgbF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShvdXRlclswXSwgbGlzdCkgICMgTm90IGEgTGlzdFByb3h5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXJbLTFdWy0xXVsnZmVlZCddLCAzKQorCiAgICAgZGVmIHRlc3RfbmFtZXNwYWNlKHNlbGYpOgogICAgICAgICBuID0gc2VsZi5OYW1lc3BhY2UoKQogICAgICAgICBuLm5hbWUgPSAnQm9iJwpAQCAtMTY2OCw2ICsxNzM0LDEwIEBACiBkZWYgbXVsKHgsIHkpOgogICAgIHJldHVybiB4KnkKIAorZGVmIHJhaXNlX2xhcmdlX3ZhbHVlcnJvcih3YWl0KToKKyAgICB0aW1lLnNsZWVwKHdhaXQpCisgICAgcmFpc2UgVmFsdWVFcnJvcigieCIgKiAxMDI0KioyKQorCiBjbGFzcyBTYXlXaGVuRXJyb3IoVmFsdWVFcnJvcik6IHBhc3MKIAogZGVmIGV4Y2VwdGlvbl90aHJvd2luZ19nZW5lcmF0b3IodG90YWwsIHdoZW4pOgpAQCAtMTkxMCw2ICsxOTgwLDI2IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CiAgICAgICAgICAgICAgICAgcC5hcHBseShzZWxmLl90ZXN0X3dyYXBwZWRfZXhjZXB0aW9uKQogCisgICAgZGVmIHRlc3RfbWFwX25vX2ZhaWxmYXN0KHNlbGYpOgorICAgICAgICAjIElzc3VlICMyMzk5MjogdGhlIGZhaWwtZmFzdCBiZWhhdmlvdXIgd2hlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkCisgICAgICAgICMgZHVyaW5nIG1hcCgpIHdvdWxkIG1ha2UgUG9vbC5qb2luKCkgZGVhZGxvY2ssIGJlY2F1c2UgYSB3b3JrZXIKKyAgICAgICAgIyBwcm9jZXNzIHdvdWxkIGZpbGwgdGhlIHJlc3VsdCBxdWV1ZSAoYWZ0ZXIgdGhlIHJlc3VsdCBoYW5kbGVyIHRocmVhZAorICAgICAgICAjIHRlcm1pbmF0ZWQsIGhlbmNlIG5vdCBkcmFpbmluZyBpdCBhbnltb3JlKS4KKworICAgICAgICB0X3N0YXJ0ID0gdGltZS50aW1lKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLlBvb2woMikgYXMgcDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHAubWFwKHJhaXNlX2xhcmdlX3ZhbHVlcnJvciwgWzAsIDFdKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC41KQorICAgICAgICAgICAgICAgICAgICBwLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKKworICAgICAgICAjIGNoZWNrIHRoYXQgd2UgaW5kZWVkIHdhaXRlZCBmb3IgYWxsIGpvYnMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHRpbWUudGltZSgpIC0gdF9zdGFydCwgMC45KQorCiAKIGRlZiByYWlzaW5nKCk6CiAgICAgcmFpc2UgS2V5RXJyb3IoImtleSIpCkBAIC0zNzY3LDcgKzM4NTcsNyBAQAogICAgICAgICBwLnN0ZGVyci5jbG9zZSgpCiAgICAgICAgIGV4cGVjdGVkID0gJ3NlbWFwaG9yZV90cmFja2VyOiBUaGVyZSBhcHBlYXIgdG8gYmUgMiBsZWFrZWQgc2VtYXBob3JlcycKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIsIGV4cGVjdGVkKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgJ3NlbWFwaG9yZV90cmFja2VyOiAlcjogXFtFcnJubycgJSBuYW1lMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIsIHInc2VtYXBob3JlX3RyYWNrZXI6ICVyOiBcW0Vycm5vJyAlIG5hbWUxKQogCiAjCiAjIE1peGlucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYW5uX21vZHVsZS5weSBiL0xpYi90ZXN0L2Fubl9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2Yjg3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUucHkKQEAgLTAsMCArMSw1MyBAQAorCisKKyIiIgorVGhlIG1vZHVsZSBmb3IgdGVzdGluZyB2YXJpYWJsZSBhbm5vdGF0aW9ucy4KK0VtcHR5IGxpbmVzIGFib3ZlIGFyZSBmb3IgZ29vZCByZWFzb24gKHRlc3RpbmcgZm9yIGNvcnJlY3QgbGluZSBudW1iZXJzKQorIiIiCisKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitfX2Fubm90YXRpb25zX19bMV0gPSAyCisKK2NsYXNzIEM6CisKKyAgICB4ID0gNTsgeTogT3B0aW9uYWxbJ0MnXSA9IE5vbmUKKworZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCit4OiBpbnQgPSA1OyB5OiBzdHIgPSB4OyBmOiBUdXBsZVtpbnQsIGludF0KKworY2xhc3MgTSh0eXBlKToKKworICAgIF9fYW5ub3RhdGlvbnNfX1snMTIzJ10gPSAxMjMKKyAgICBvOiB0eXBlID0gb2JqZWN0CisKKyhwYXJzKTogYm9vbCA9IFRydWUKKworY2xhc3MgRChDKToKKyAgICBqOiBzdHIgPSAnaGknOyBrOiBzdHI9ICdieWUnCisKK2Zyb20gdHlwZXMgaW1wb3J0IG5ld19jbGFzcworaF9jbGFzcyA9IG5ld19jbGFzcygnSCcsIChDLCkpCitqX2NsYXNzID0gbmV3X2NsYXNzKCdKJykKKworY2xhc3MgRigpOgorICAgIHo6IGludCA9IDUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgIHBhc3MKKworY2xhc3MgWShGKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKEYsIHNlbGYpLl9faW5pdF9fKDEyMykKKworY2xhc3MgTWV0YSh0eXBlKToKKyAgICBkZWYgX19uZXdfXyhtZXRhLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtZXRhLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorCitjbGFzcyBTKG1ldGFjbGFzcyA9IE1ldGEpOgorICAgIHg6IHN0ciA9ICdzb21ldGhpbmcnCisgICAgeTogc3RyID0gJ3NvbWV0aGluZyBlbHNlJworCitkZWYgZm9vKHg6IGludCA9IDEwKToKKyAgICBkZWYgYmFyKHk6IExpc3Rbc3RyXSk6CisgICAgICAgIHg6IHN0ciA9ICd5ZXMnCisgICAgYmFyKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Fubl9tb2R1bGUyLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZTIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZjZjViMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUyLnB5CkBAIC0wLDAgKzEsMzYgQEAKKyIiIgorU29tZSBjb3JyZWN0IHN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbiBoZXJlLgorTW9yZSBleGFtcGxlcyBhcmUgaW4gdGVzdF9ncmFtbWFyIGFuZCB0ZXN0X3BhcnNlci4KKyIiIgorCitmcm9tIHR5cGluZyBpbXBvcnQgbm9fdHlwZV9jaGVjaywgQ2xhc3NWYXIKKworaTogaW50ID0gMQorajogaW50Cit4OiBmbG9hdCA9IGkvMTAKKworZGVmIGYoKToKKyAgICBjbGFzcyBDOiAuLi4KKyAgICByZXR1cm4gQygpCisKK2YoKS5uZXdfYXR0cjogb2JqZWN0ID0gb2JqZWN0KCkKKworY2xhc3MgQzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZWxmLnggPSB4CisKK2MgPSBDKDUpCitjLm5ld19hdHRyOiBpbnQgPSAxMAorCitfX2Fubm90YXRpb25zX18gPSB7fQorCisKK0Bub190eXBlX2NoZWNrCitjbGFzcyBOVEM6CisgICAgZGVmIG1ldGgoc2VsZiwgcGFyYW06IGNvbXBsZXgpIC0+IE5vbmU6CisgICAgICAgIC4uLgorCitjbGFzcyBDVjoKKyAgICB2YXI6IENsYXNzVmFyWydDViddCisKK0NWLnZhciA9IENWKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Fubl9tb2R1bGUzLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZTMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNjZDdiZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUzLnB5CkBAIC0wLDAgKzEsMTggQEAKKyIiIgorQ29ycmVjdCBzeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb24gdGhhdCBzaG91bGQgZmFpbCBhdCBydW50aW1lCitpbiBhIGNlcnRhaW4gbWFubmVyLiBNb3JlIGV4YW1wbGVzIGFyZSBpbiB0ZXN0X2dyYW1tYXIgYW5kIHRlc3RfcGFyc2VyLgorIiIiCisKK2RlZiBmX2JhZF9hbm4oKToKKyAgICBfX2Fubm90YXRpb25zX19bMV0gPSAyCisKK2NsYXNzIENfT0s6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHg6IGludCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi54OiBub19zdWNoX25hbWUgPSB4ICAjIFRoaXMgb25lIGlzIE9LIGFzIHByb3Bvc2VkIGJ5IEd1aWRvCisKK2NsYXNzIERfYmFkX2FubjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZmVsLnk6IGludCA9IDAKKworZGVmIGdfYmFkX2FubigpOgorICAgIG5vX3N1Y2hfbmFtZS5hdHRyOiBpbnQgPSAwCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5IGIvTGliL3Rlc3QvYXVkaW90ZXN0cy5weQppbmRleCAwYWUyMjQyLi5kM2U4ZTllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2F1ZGlvdGVzdHMucHkKQEAgLTEsOSArMSw4IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIFRFU1RGTiwgdW5saW5rCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBhcnJheQogaW1wb3J0IGlvCiBpbXBvcnQgcGlja2xlCi1pbXBvcnQgc3lzCisKIAogY2xhc3MgVW5zZWVrYWJsZUlPKGlvLkZpbGVJTyk6CiAgICAgZGVmIHRlbGwoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hdXRvdGVzdC5weSBiL0xpYi90ZXN0L2F1dG90ZXN0LnB5CmluZGV4IDQxYzIwODguLmZhODVjYzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2F1dG90ZXN0LnB5CisrKyBiL0xpYi90ZXN0L2F1dG90ZXN0LnB5CkBAIC0xLDYgKzEsNSBAQAogIyBUaGlzIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIHJ1bm5pbmcgcmVncnRlc3QucHkgZnJvbSB0aGUgY21kbGluZS4KICMgSXQgY2FuIGJlIGVzcGVjaWFsbHkgaGFuZHkgaWYgeW91J3JlIGluIGFuIGludGVyYWN0aXZlIHNoZWxsLCBlLmcuLAogIyBmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0LgotCi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci1yZWdydGVzdC5tYWluKCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgorbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI4NWUyOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjg1ZTI5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZTFiYzUuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDMzYjI4Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICBhd2FpdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMTlhZjYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotZGVmIGZvbygpOgotICAgIGF3YWl0IHNvbWV0aGluZygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwYTIzZC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgeWllbGQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM3LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWU0YmY5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICB5aWVsZCBmcm9tIFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M2MzZmOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgYXdhaXQgYXdhaXQgZnV0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvMGU0MDE1YjkuMCBiL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmQyNTliLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDbFRDQ0FmNmdBd0lCQWdJSkFLR1U5NXdLUjhwVE1BMEdDU3FHU0liM0RRRUJCUVVBTUhBeEN6QUpCZ05WCi1CQVlUQWxoWk1SY3dGUVlEVlFRSERBNURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2d3YVVIbDBhRzl1Ci1JRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4SXpBaEJnTlZCQU1NR25ObGJHWXRjMmxuYm1Wa0xuQjVkR2h2Ci1iblJsYzNRdWJtVjBNQjRYRFRFME1URXdNakU0TURreU9Wb1hEVEkwTVRBek1ERTRNRGt5T1Zvd2NERUxNQWtHCi1BMVVFQmhNQ1dGa3hGekFWQmdOVkJBY01Ea05oYzNSc1pTQkJiblJvY21GNE1TTXdJUVlEVlFRS0RCcFFlWFJvCi1iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmpFak1DRUdBMVVFQXd3YWMyVnNaaTF6YVdkdVpXUXVjSGwwCi1hRzl1ZEdWemRDNXVaWFF3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU5EWFFYVzl0anlaCi1YdDBJdjJ0TEwxK2ppbnI0d0dnMzZpb0xETEZrTWYrMlkxR0wwdjBCbktZRzROMU9LbEFVMTVMWEdlR2VyOHZtCi1Tdi95SXZtZHJFTHZoQWJibzN3NGE5VE1ZUUE0WGtJVkxkdnUzbXZOT0FldCs4UE1KeG4yNmRiRGhHODA5QUx2Ci1FSFk1N2xRc0JTM0c1OVJaeUJQVnFBcW1JbVdOSm5WekFnTUJBQUdqTnpBMU1DVUdBMVVkRVFRZU1CeUNHbk5sCi1iR1l0YzJsbmJtVmtMbkI1ZEdodmJuUmxjM1F1Ym1WME1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOCi1BUUVGQlFBRGdZRUFJdXpBaGdNb3VKcE5kZjNVUkNISWluZXlvU3Q2V0svOStleVVjamxLT3JEb1hOWmFENzJoCi1UWE1lS1lvV3ZKeVZjU0xLTDhja1B0RG9iZ1AyT1R0MFVreUFhajBuK1pIYXFxMWxIMnlWZkdVQTFJTEp2NTE1Ci1DOEJxYnZWWnVxbTNpN3lnbXczYnFFL2xZTWdPcll0WFhucU9yejZudnNFNlljOVY5ckZmbE9NPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY2FwYXRoL2IxOTMwMjE4LjAgYi9MaWIvdGVzdC9jYXBhdGgvYjE5MzAyMTguMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzMzNDljCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvY2FwYXRoL2IxOTMwMjE4LjAKQEAgLTAsMCArMSwyMSBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlEYlRDQ0FsV2dBd0lCQWdJSkFMQ1NaTEh5MmlIUU1BMEdDU3FHU0liM0RRRUJCUVVBTUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3MHhNekF4TURReE9UUTNNRGRhRncweU16QXhNREl4CitPVFEzTURkYU1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnCitSbTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakNDQVNJd0RRWUpLb1pJCitodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9mZTZlTU1ud0Myb2Ywclc1YlNiOHpndm9hNUlGN3NBM3BWCitxK3FrNmZsSmhkSm0xZTNIZXVwV2ppMlA1MExpWWlpcG45WWJqdXUxdEp5ZkZLdmY1cFNMZGgwK2JTUmg3UXkvCitBSXBoRE45Y3lEWnpGZ0ROUjdwdHBLUjBpSU1qQ2huOENhYzhTa3ZUNXgwdDVPcE1WQ0h6SnR1Sk54alVBcnRBCitNbCtrL3kwYzk5Uzc3STdQWElLczVud0liRWlGWVFkL0plQmM0THcwWCtDNUJFZDF5RWNMamJ6V3lHaGZNNE5pCiswaUJFTmJHdGdScUt6Yncxc0Z5TFI5WVk2WndZbDh3QlBDbk02QjdrNU1HNDN1ZkNFUmlIV3BNMDJLWWw5eFJ4Cis2K1Fob3RJUExpN1VZZ0ExMDlidlhHQkxUS2tVNHQwVldFWTNNeWEzNXk1ZDdVTGt4VTBDQXdFQUFhTlFNRTR3CitIUVlEVlIwT0JCWUVGTHpkWXRsMjJodlNWR3ZQNEdhYkhoNTdWZ3dMTUI4R0ExVWRJd1FZTUJhQUZMemRZdGwyCisyaHZTVkd2UDRHYWJIaDU3Vmd3TE1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCCitBSDBLOWN1TjAxMjltWTc0S3crNjY4TFpwaWRQTG5zdkRtVFlIRFZRVHU3OGtMbU5iYWpGeGdhd3IvTXR2enU0CitRZ2ZkR0gxdGxWUlhoUmhnUnkvcmVCdjU2QmY5V2cySEZ5aXNUR3JtdkNuMDlGVndLVUxlaGVxcmJDTUdaREIxCitBbzVUdkY0Qk16Zk1IczI0cFAzSzVGOWxPNE1jaHZGVkFxQTZqOXVSdDBBVXRPZU4wdTV6dXVQbE5DMjhsRzlPCitKQWIzWDRzT3A0NXIzbDUxOURLYVVMRkVNNXJRQmVKNGd2L2Iyb3BqNjZuZDBiK2dZYTNqbm9va1hXSU81MHlSCitmKy9mTkRZN0wxMzFoTEl2eEcyVGxocHZNQ2p4MmhLYVpMUkFNeDI5M2l0VHFPcSsxcnhPbHZWRSt6SVlydFVmCis5bW12dGs1N0hWanNPNmxUbzE1WXlKND0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NhcGF0aC9jZTdiODY0My4wIGIvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDI1OWIuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUNsVENDQWY2Z0F3SUJBZ0lKQUtHVTk1d0tSOHBUTUEwR0NTcUdTSWIzRFFFQkJRVUFNSEF4Q3pBSkJnTlYKLUJBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDZ3dhVUhsMGFHOXUKLUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhJekFoQmdOVkJBTU1Hbk5sYkdZdGMybG5ibVZrTG5CNWRHaHYKLWJuUmxjM1F1Ym1WME1CNFhEVEUwTVRFd01qRTRNRGt5T1ZvWERUSTBNVEF6TURFNE1Ea3lPVm93Y0RFTE1Ba0cKLUExVUVCaE1DV0ZreEZ6QVZCZ05WQkFjTURrTmhjM1JzWlNCQmJuUm9jbUY0TVNNd0lRWURWUVFLREJwUWVYUm8KLWIyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiakVqTUNFR0ExVUVBd3dhYzJWc1ppMXphV2R1WldRdWNIbDAKLWFHOXVkR1Z6ZEM1dVpYUXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTkRYUVhXOXRqeVoKLVh0MEl2MnRMTDEramlucjR3R2czNmlvTERMRmtNZisyWTFHTDB2MEJuS1lHNE4xT0tsQVUxNUxYR2VHZXI4dm0KLVN2L3lJdm1kckVMdmhBYmJvM3c0YTlUTVlRQTRYa0lWTGR2dTNtdk5PQWV0KzhQTUp4bjI2ZGJEaEc4MDlBTHYKLUVIWTU3bFFzQlMzRzU5Ulp5QlBWcUFxbUltV05KblZ6QWdNQkFBR2pOekExTUNVR0ExVWRFUVFlTUJ5Q0duTmwKLWJHWXRjMmxuYm1Wa0xuQjVkR2h2Ym5SbGMzUXVibVYwTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y04KLUFRRUZCUUFEZ1lFQUl1ekFoZ01vdUpwTmRmM1VSQ0hJaW5leW9TdDZXSy85K2V5VWNqbEtPckRvWE5aYUQ3MmgKLVRYTWVLWW9Xdkp5VmNTTEtMOGNrUHREb2JnUDJPVHQwVWt5QWFqMG4rWkhhcXExbEgyeVZmR1VBMUlMSnY1MTUKLUM4QnFidlZadXFtM2k3eWdtdzNicUUvbFlNZ09yWXRYWG5xT3J6Nm52c0U2WWM5VjlyRmZsT009Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvY2VmZjE3MTAuMCBiL0xpYi90ZXN0L2NhcGF0aC9jZWZmMTcxMC4wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MzM0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9jYXBhdGgvY2VmZjE3MTAuMApAQCAtMCwwICsxLDIxIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSURiVENDQWxXZ0F3SUJBZ0lKQUxDU1pMSHkyaUhRTUEwR0NTcUdTSWIzRFFFQkJRVUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE16QXhNRFF4T1RRM01EZGFGdzB5TXpBeE1ESXgKK09UUTNNRGRhTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBU0l3RFFZSktvWkkKK2h2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT2ZlNmVNTW53QzJvZjByVzViU2I4emd2b2E1SUY3c0EzcFYKK3ErcWs2ZmxKaGRKbTFlM0hldXBXamkyUDUwTGlZaWlwbjlZYmp1dTF0SnlmRkt2ZjVwU0xkaDArYlNSaDdReS8KK0FJcGhETjljeURaekZnRE5SN3B0cEtSMGlJTWpDaG44Q2FjOFNrdlQ1eDB0NU9wTVZDSHpKdHVKTnhqVUFydEEKK01sK2sveTBjOTlTNzdJN1BYSUtzNW53SWJFaUZZUWQvSmVCYzRMdzBYK0M1QkVkMXlFY0xqYnpXeUdoZk00TmkKKzBpQkVOYkd0Z1JxS3pidzFzRnlMUjlZWTZad1lsOHdCUENuTTZCN2s1TUc0M3VmQ0VSaUhXcE0wMktZbDl4UngKKzYrUWhvdElQTGk3VVlnQTEwOWJ2WEdCTFRLa1U0dDBWV0VZM015YTM1eTVkN1VMa3hVMENBd0VBQWFOUU1FNHcKK0hRWURWUjBPQkJZRUZMemRZdGwyMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQjhHQTFVZEl3UVlNQmFBRkx6ZFl0bDIKKzJodlNWR3ZQNEdhYkhoNTdWZ3dMTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUIKK0FIMEs5Y3VOMDEyOW1ZNzRLdys2NjhMWnBpZFBMbnN2RG1UWUhEVlFUdTc4a0xtTmJhakZ4Z2F3ci9NdHZ6dTQKK1FnZmRHSDF0bFZSWGhSaGdSeS9yZUJ2NTZCZjlXZzJIRnlpc1RHcm12Q24wOUZWd0tVTGVoZXFyYkNNR1pEQjEKK0FvNVR2RjRCTXpmTUhzMjRwUDNLNUY5bE80TWNodkZWQXFBNmo5dVJ0MEFVdE9lTjB1NXp1dVBsTkMyOGxHOU8KK0pBYjNYNHNPcDQ1cjNsNTE5REthVUxGRU01clFCZUo0Z3YvYjJvcGo2Nm5kMGIrZ1lhM2pub29rWFdJTzUweVIKK2YrL2ZORFk3TDEzMWhMSXZ4RzJUbGhwdk1DangyaEthWkxSQU14MjkzaXRUcU9xKzFyeE9sdlZFK3pJWXJ0VWYKKzltbXZ0azU3SFZqc082bFRvMTVZeUo0PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dCBiL0xpYi90ZXN0L2NtYXRoX3Rlc3RjYXNlcy50eHQKaW5kZXggOWIwODY1My4uZGQ3ZTQ1OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dAorKysgYi9MaWIvdGVzdC9jbWF0aF90ZXN0Y2FzZXMudHh0CkBAIC01Myw2ICs1MywxMiBAQAogLS0gTVBGUiBob21lcGFnZSBhdCBodHRwOi8vd3d3Lm1wZnIub3JnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZQogLS0gTVBGUiBwcm9qZWN0LgogCistLSBBIG1pbm9yaXR5IG9mIHRoZSB0ZXN0IGNhc2VzIHdlcmUgZ2VuZXJhdGVkIHdpdGggdGhlIGhlbHAgb2YKKy0tIG1wbWF0aCAwLjE5IGF0IDEwMCBiaXQgYWNjdXJhY3kgKGh0dHA6Ly9tcG1hdGgub3JnKSB0byBpbXByb3ZlCistLSBjb3ZlcmFnZSBvZiByZWFsIGZ1bmN0aW9ucyB3aXRoIHJlYWwtdmFsdWVkIGFyZ3VtZW50cy4gVGhlc2UgYXJlCistLSB1c2VkIGluIHRlc3QudGVzdF9tYXRoLk1hdGhUZXN0cy50ZXN0X3Rlc3RmaWxlLCBhcyB3ZWxsIGFzIGluCistLSB0ZXN0X2NtYXRoLgorCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBhY29zOiBJbnZlcnNlIGNvc2luZSAtLQpAQCAtODQ4LDYgKzg1NCwxOCBAQAogYXRhbjAzMDMgYXRhbiAtMWUtMTY1IDEuMCAtPiAtMC43ODUzOTgxNjMzOTc0NDgyOCAxOTAuMzA5ODQzNzYyMjg4NzUKIGF0YW4wMzA0IGF0YW4gLTkuOTk5ODg4NjcxODI2ODMwMWUtMzIxIC0xLjAgLT4gLTAuNzg1Mzk4MTYzMzk3NDQ4MjggLTM2OC43NjAxOTQwMzU3NjY5MgogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCithdGFuMDQwMCBhdGFuIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAxLjU3MDc5NjMyNjc5NDg5NjYxOTIgMC4wCithdGFuMDQwMSBhdGFuIC0xLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCAwLjAgLT4gLTEuNTcwNzk2MzI2Nzk0ODk2NjE5MiAwLjAKK2F0YW4wNDAyIGF0YW4gMWUtMTcgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDcxNWUtMTcgMC4wCithdGFuMDQwMyBhdGFuIC0xZS0xNyAwLjAgLT4gLTEuMDAwMDAwMDAwMDAwMDAwMDcxNWUtMTcgMC4wCithdGFuMDQwNCBhdGFuIDAuMDAwMSAwLjAgLT4gMC4wMDAwOTk5OTk5OTk2NjY2NjY2NzM0NTkgMC4wCithdGFuMDQwNSBhdGFuIC0wLjAwMDEgMC4wIC0+IC0wLjAwMDA5OTk5OTk5OTY2NjY2NjY3MzQ1OSAwLjAKK2F0YW4wNDA2IGF0YW4gMC45OTk5OTk5OTk5OTk5OTkgMC4wIC0+IDAuNzg1Mzk4MTYzMzk3NDQ3ODEwMDIgMC4wCithdGFuMDQwNyBhdGFuIDEuMDAwMDAwMDAwMDAwMDAxIDAuMCAtPiAwLjc4NTM5ODE2MzM5NzQ0ODg2NDczIDAuMAorYXRhbjA0MDggYXRhbiAxNC4xMDE0MTk5NDcxNzE3MTkgMC4wIC0+IDEuNDk5OTk5OTk5OTk5OTk5OTk2OSAwLjAKK2F0YW4wNDA5IGF0YW4gMTI1NS43NjU1OTE1MDA3ODk3IDAuMCAtPiAxLjU3MDAwMDAwMDAwMDAwMDA2MjIgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBhdGFuMTAwMCBhdGFuIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiBhdGFuMTAwMSBhdGFuIG5hbiAwLjAgLT4gbmFuIDAuMApAQCAtMTUxNCw2ICsxNTMyLDExIEBACiBzcXJ0MDE0MCBzcXJ0IDEuNjk5OTk5OTk5OTk5OTk5OWUrMzA4IC0xLjY5OTk5OTk5OTk5OTk5OTllKzMwOCAtPiAxLjQzMjUwODgyMzAxNTQ1NzNlKzE1NCAtNS45MzM2NDU4MjcxMjEyMjA3ZSsxNTMKIHNxcnQwMTQxIHNxcnQgLTEuNzk3ZSszMDggLTkuOTk5OTk5OTk5OTk5OTk5OWUrMzA2IC0+IDMuNzI4NDQ3NjQzMjA1NzMwN2UrMTUyIC0xLjM0MTA0MDY4OTk4MDI5MDFlKzE1NAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitzcXJ0MDE1MCBzcXJ0IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAxLjM0MDc4MDc5Mjk5NDI1OTYzNTVlKzE1NCAwLjAKK3NxcnQwMTUxIHNxcnQgMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDggMC4wIC0+IDEuNDkxNjY4MTQ2MjQwMDQxMzQ4N2UtMTU0IDAuMAorc3FydDAxNTIgc3FydCA1ZS0zMjQgMC4wIC0+IDIuMjIyNzU4NzQ5NDg1MDc3NDgzNGUtMTYyIDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc3FydDEwMDAgc3FydCAwLjAgMC4wIC0+IDAuMCAwLjAKIHNxcnQxMDAxIHNxcnQgLTAuMCAwLjAgLT4gMC4wIDAuMApAQCAtMTYxNiw2ICsxNjM5LDIwIEBACiBleHAwMDUzIGV4cCA3MTAuMCAxLjYgLT4gLTYuNTIzMTU3OTk5NTUwMTM3MmUrMzA2IGluZiAgIG92ZXJmbG93CiBleHAwMDU0IGV4cCA3MTAuMCAyLjggLT4gLWluZiA3LjQ4MzYxNzc0MTc0NDg1MjhlKzMwNyAgIG92ZXJmbG93CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK2V4cDAwNzAgZXhwIDFlLTA4IDAuMCAtPiAxLjAwMDAwMDAxMDAwMDAwMDA1IDAuMAorZXhwMDA3MSBleHAgMC4wMDAzIDAuMCAtPiAxLjAwMDMwMDA0NTAwNDUwMDMzNzUgMC4wCitleHAwMDcyIGV4cCAwLjIgMC4wIC0+IDEuMjIxNDAyNzU4MTYwMTY5ODQ3NSAwLjAKK2V4cDAwNzMgZXhwIDEuMCAwLjAgLT4gMi43MTgyODE4Mjg0NTkwNDUyMzU0IDAuMAorZXhwMDA3NCBleHAgLTFlLTA4IDAuMCAtPiAwLjk5OTk5OTk5MDAwMDAwMDA1IDAuMAorZXhwMDA3NSBleHAgLTAuMDAwMyAwLjAgLT4gMC45OTk3MDAwNDQ5OTU1MDAzMzc1MSAwLjAKK2V4cDAwNzYgZXhwIC0xLjAgMC4wIC0+IDAuMzY3ODc5NDQxMTcxNDQyMzIxNiAwLjAKK2V4cDAwNzcgZXhwIDIuMjIwNDQ2MDQ5MjUwMzEzZS0xNiAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAyMjIgMC4wCitleHAwMDc4IGV4cCAtMS4xMTAyMjMwMjQ2MjUxNTY1ZS0xNiAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTk4ODg5OCAwLjAKK2V4cDAwNzkgZXhwIDIuMzAyNTg1MDkyOTk0MDQ2IDAuMCAtPiAxMC4wMDAwMDAwMDAwMDAwMDIxNzEgMC4wCitleHAwMDgwIGV4cCAtMi4zMDI1ODUwOTI5OTQwNDYgMC4wIC0+IDAuMDk5OTk5OTk5OTk5OTk5OTc4MjkyIDAuMAorZXhwMDA4MSBleHAgNzA5Ljc4MjcgMC4wIC0+IDEuNzk3NjY5OTU2NjYzODAxNDY1NGUrMzA4IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogZXhwMTAwMCBleHAgMC4wIDAuMCAtPiAxLjAgMC4wCiBleHAxMDAxIGV4cCAtMC4wIDAuMCAtPiAxLjAgMC4wCkBAIC0xNzA4LDYgKzE3NDUsMjMgQEAKIGNvc2gwMDMwIGNvc2ggNzEwLjUgMi4zNTE5OTk5OTk5OTk5OTk5IC0+IC0xLjI5Njc0NjUyMzkzNTU5OThlKzMwOCAxLjMwNzY3MDc5MDg4NTczMzNlKzMwOAogY29zaDAwMzEgY29zaCAtNzEwLjUgMC42OTk5OTk5OTk5OTk5OTk5NiAtPiAxLjQwODU0NjYzODEzOTI0OTllKzMwOCAtMS4xODY0MDI0NjY2NDUwMjM5ZSszMDgKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorY29zaDAwNTAgY29zaCAxZS0xNTAgMC4wIC0+IDEuMCAwLjAKK2Nvc2gwMDUxIGNvc2ggMWUtMTggMC4wIC0+IDEuMCAwLjAKK2Nvc2gwMDUyIGNvc2ggMWUtMDkgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDAwNSAwLjAKK2Nvc2gwMDUzIGNvc2ggMC4wMDAzIDAuMCAtPiAxLjAwMDAwMDA0NTAwMDAwMDMzNzUgMC4wCitjb3NoMDA1NCBjb3NoIDAuMiAwLjAgLT4gMS4wMjAwNjY3NTU2MTkwNzU4NDg1IDAuMAorY29zaDAwNTUgY29zaCAxLjAgMC4wIC0+IDEuNTQzMDgwNjM0ODE1MjQzNzc4NSAwLjAKK2Nvc2gwMDU2IGNvc2ggLTFlLTE4IDAuMCAtPiAxLjAgLTAuMAorY29zaDAwNTcgY29zaCAtMC4wMDAzIDAuMCAtPiAxLjAwMDAwMDA0NTAwMDAwMDMzNzUgLTAuMAorY29zaDAwNTggY29zaCAtMS4wIDAuMCAtPiAxLjU0MzA4MDYzNDgxNTI0Mzc3ODUgLTAuMAorY29zaDAwNTkgY29zaCAxLjMxNjk1Nzg5NjkyNDgxNjggMC4wIC0+IDIuMDAwMDAwMDAwMDAwMDAwMTUwNCAwLjAKK2Nvc2gwMDYwIGNvc2ggLTEuMzE2OTU3ODk2OTI0ODE2OCAwLjAgLT4gMi4wMDAwMDAwMDAwMDAwMDAxNTA0IC0wLjAKK2Nvc2gwMDYxIGNvc2ggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAxNjc3NzIxNi4wMDAwMDAwMjE5MzggMC4wCitjb3NoMDA2MiBjb3NoIDE4LjcxNDk3Mzg3NTExODUyNCAwLjAgLT4gNjcxMDg4NjQuMDAwMDAwMDQzNjYyIDAuMAorY29zaDAwNjMgY29zaCA3MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCitjb3NoMDA2NCBjb3NoIC03MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgLTAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogY29zaDEwMDAgY29zaCAwLjAgMC4wIC0+IDEuMCAwLjAKIGNvc2gxMDAxIGNvc2ggMC4wIGluZiAtPiBuYW4gMC4wICAgICAgICBpbnZhbGlkIGlnbm9yZS1pbWFnLXNpZ24KQEAgLTE4MDAsNiArMTg1NCwyNCBAQAogc2luaDAwMzAgc2luaCA3MTAuNSAtMi4zOTk5OTk5OTk5OTk5OTk5IC0+IC0xLjM1Nzk5NzA1NjQ4ODU5MTllKzMwOCAtMS4yNDM5NDQ3MDkwNzc5OGUrMzA4CiBzaW5oMDAzMSBzaW5oIC03MTAuNSAwLjgwMDAwMDAwMDAwMDAwMDA0IC0+IC0xLjI4MzA2NzE2MDE3MzUxNjRlKzMwOCAxLjMyMTA5NTQxOTM5OTc2NzhlKzMwOAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitzaW5oMDA1MCBzaW5oIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAorc2luaDAwNTEgc2luaCA1ZS0xNyAwLjAgLT4gNC45OTk5OTk5OTk5OTk5OTk4OTU1ZS0xNyAwLjAKK3NpbmgwMDUyIHNpbmggMWUtMTYgMC4wIC0+IDkuOTk5OTk5OTk5OTk5OTk5NzkxZS0xNyAwLjAKK3NpbmgwMDUzIHNpbmggMy43ZS0wOCAwLjAgLT4gMy43MDAwMDAwMDAwMDAwMDA4ODg1ZS04IDAuMAorc2luaDAwNTQgc2luaCAwLjAwMSAwLjAgLT4gMC4wMDEwMDAwMDAxNjY2NjY2NzUwMjA4IDAuMAorc2luaDAwNTUgc2luaCAwLjIgMC4wIC0+IDAuMjAxMzM2MDAyNTQxMDkzOTk4OTUgMC4wCitzaW5oMDA1NiBzaW5oIDEuMCAwLjAgLT4gMS4xNzUyMDExOTM2NDM4MDE0NTY5IDAuMAorc2luaDAwNTcgc2luaCAtMy43ZS0wOCAwLjAgLT4gLTMuNzAwMDAwMDAwMDAwMDAwODg4NWUtOCAwLjAKK3NpbmgwMDU4IHNpbmggLTAuMDAxIDAuMCAtPiAtMC4wMDEwMDAwMDAxNjY2NjY2NzUwMjA4IDAuMAorc2luaDAwNTkgc2luaCAtMS4wIDAuMCAtPiAtMS4xNzUyMDExOTM2NDM4MDE0NTY5IDAuMAorc2luaDAwNjAgc2luaCAxLjQ0MzYzNTQ3NTE3ODgxMDMgMC4wIC0+IDEuOTk5OTk5OTk5OTk5OTk5OTA3OCAwLjAKK3NpbmgwMDYxIHNpbmggLTEuNDQzNjM1NDc1MTc4ODEwMyAwLjAgLT4gLTEuOTk5OTk5OTk5OTk5OTk5OTA3OCAwLjAKK3NpbmgwMDYyIHNpbmggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAxNjc3NzIxNS45OTk5OTk5OTIxMzYgMC4wCitzaW5oMDA2MyBzaW5oIDE4LjcxNDk3Mzg3NTExODUyNCAwLjAgLT4gNjcxMDg4NjQuMDAwMDAwMDM2MjExIDAuMAorc2luaDAwNjQgc2luaCA3MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCitzaW5oMDA2NSBzaW5oIC03MDkuNzgyNyAwLjAgLT4gLTguOTg4MzQ5NzgzMzE5MDA3MzI3MmUrMzA3IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc2luaDEwMDAgc2luaCAwLjAgMC4wIC0+IDAuMCAwLjAKIHNpbmgxMDAxIHNpbmggMC4wIGluZiAtPiAwLjAgbmFuICAgICAgICBpbnZhbGlkIGlnbm9yZS1yZWFsLXNpZ24KQEAgLTE4OTcsNiArMTk2OSwyNCBAQAogdGFuaDAwMzIgdGFuaCAxMDAwIC0yLjMxOTk5OTk5OTk5OTk5OTggLT4gMS4wIDAuMAogdGFuaDAwMzMgdGFuaCAtMS4wMDAwMDAwMDAwMDAwMDAxZSszMDAgLTkuNjY5OTk5OTk5OTk5OTk5OSAtPiAtMS4wIC0wLjAKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQordGFuaDAwNTAgdGFuaCAxZS0xMDAgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDJlLTEwMCAwLjAKK3RhbmgwMDUxIHRhbmggNWUtMTcgMC4wIC0+IDQuOTk5OTk5OTk5OTk5OTk5ODk1NWUtMTcgMC4wCit0YW5oMDA1MiB0YW5oIDFlLTE2IDAuMCAtPiA5Ljk5OTk5OTk5OTk5OTk5OTc5MWUtMTcgMC4wCit0YW5oMDA1MyB0YW5oIDMuN2UtMDggMC4wIC0+IDMuNjk5OTk5OTk5OTk5OTk4MzU1OWUtOCAwLjAKK3RhbmgwMDU0IHRhbmggMC4wMDEgMC4wIC0+IDAuMDAwOTk5OTk5NjY2NjY2ODAwMDIwNzYgMC4wCit0YW5oMDA1NSB0YW5oIDAuMiAwLjAgLT4gMC4xOTczNzUzMjAyMjQ5MDQwMTE0MSAwLjAKK3RhbmgwMDU2IHRhbmggMS4wIDAuMCAtPiAwLjc2MTU5NDE1NTk1NTc2NDg4ODEyIDAuMAordGFuaDAwNTcgdGFuaCAtMy43ZS0wOCAwLjAgLT4gLTMuNjk5OTk5OTk5OTk5OTk4MzU1OWUtOCAwLjAKK3RhbmgwMDU4IHRhbmggLTAuMDAxIDAuMCAtPiAtMC4wMDA5OTk5OTk2NjY2NjY4MDAwMjA3NiAwLjAKK3RhbmgwMDU5IHRhbmggLTEuMCAwLjAgLT4gLTAuNzYxNTk0MTU1OTU1NzY0ODg4MTIgMC4wCit0YW5oMDA2MCB0YW5oIDAuNTQ5MzA2MTQ0MzM0MDU0OSAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwMzQwMiAwLjAKK3RhbmgwMDYxIHRhbmggLTAuNTQ5MzA2MTQ0MzM0MDU0OSAwLjAgLT4gLTAuNTAwMDAwMDAwMDAwMDAwMDM0MDIgMC4wCit0YW5oMDA2MiB0YW5oIDE3LjMyODY3OTUxMzk5ODYzMyAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTgyMjM2NCAwLjAKK3RhbmgwMDYzIHRhbmggMTguNzE0OTczODc1MTE4NTI0IDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5OTg4ODk4IDAuMAordGFuaDAwNjQgdGFuaCA3MTEgMC4wIC0+IDEuMCAwLjAKK3RhbmgwMDY1IHRhbmggMS43OTdlKzMwOCAwLjAgLT4gMS4wIDAuMAorCiAtLXNwZWNpYWwgdmFsdWVzCiB0YW5oMTAwMCB0YW5oIDAuMCAwLjAgLT4gMC4wIDAuMAogdGFuaDEwMDEgdGFuaCAwLjAgaW5mIC0+IG5hbiBuYW4gICAgICAgIGludmFsaWQKQEAgLTE5ODUsNiArMjA3NSwyMiBAQAogY29zMDAyMiBjb3MgNy45OTE0NTE1NDMzODU4NTE1IDAuNzE2NTk5NjY2MTU1MDE0MzYgLT4gLTAuMTczNzU0Mzk5MDY5MzY1NjYgLTAuNzcyMTcwNDM1MjcyOTQ1ODIKIGNvczAwMjMgY29zIDAuNDUxMjQzNTExNTI1NDAyMjYgMS42OTkyNjkzOTkzODEyMTU4IC0+IDIuNTQzNDc3OTQ4OTcyMjM3IC0xLjE1MjgxOTM2OTQ4NzU0NzcKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorY29zMDA1MCBjb3MgMWUtMTUwIDAuMCAtPiAxLjAgLTAuMAorY29zMDA1MSBjb3MgMWUtMTggMC4wIC0+IDEuMCAtMC4wCitjb3MwMDUyIGNvcyAxZS0wOSAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTk5OTk1IC0wLjAKK2NvczAwNTMgY29zIDAuMDAwMyAwLjAgLT4gMC45OTk5OTk5NTUwMDAwMDAzMzc1IC0wLjAKK2NvczAwNTQgY29zIDAuMiAwLjAgLT4gMC45ODAwNjY1Nzc4NDEyNDE2Mjg5MiAtMC4wCitjb3MwMDU1IGNvcyAxLjAgMC4wIC0+IDAuNTQwMzAyMzA1ODY4MTM5NzE3NCAtMC4wCitjb3MwMDU2IGNvcyAtMWUtMTggMC4wIC0+IDEuMCAwLjAKK2NvczAwNTcgY29zIC0wLjAwMDMgMC4wIC0+IDAuOTk5OTk5OTU1MDAwMDAwMzM3NSAwLjAKK2NvczAwNTggY29zIC0xLjAgMC4wIC0+IDAuNTQwMzAyMzA1ODY4MTM5NzE3NCAwLjAKK2NvczAwNTkgY29zIDEuMDQ3MTk3NTUxMTk2NTk3NiAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwOTk0NSAtMC4wCitjb3MwMDYwIGNvcyAyLjU3MDc5NjMyNjc5NDg5NjYgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjQ3MzU3IC0wLjAKK2NvczAwNjEgY29zIC0yLjU3MDc5NjMyNjc5NDg5NjYgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjQ3MzU3IDAuMAorY29zMDA2MiBjb3MgNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDAuNTg3Nzg1MjUyMjkyNDc0MDc1NTkgLTAuMAorY29zMDA2MyBjb3MgLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IC0wLjgwOTAxNjk5NDM3NDk0NzIyMjU1IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogY29zMTAwMCBjb3MgLTAuMCAwLjAgLT4gMS4wIDAuMAogY29zMTAwMSBjb3MgLWluZiAwLjAgLT4gbmFuIDAuMCBpbnZhbGlkIGlnbm9yZS1pbWFnLXNpZ24KQEAgLTIwNzMsNiArMjE3OSwyMiBAQAogc2luMDAyMiBzaW4gMS4xNTE4MDg3MzU0NDAzNzI1IDQuODU5NzIzNTk2NjE1MDU1OCAtPiA1OC45MTkxNDE5ODk2MDMwNDEgMjYuMjM3MDAzNDAzNzU4ODUyCiBzaW4wMDIzIHNpbiAwLjAwMDg3NzczMDc4NDA2NjQ5MTkyIDM0Ljc5MjM3OTIxMTMxMjA5NSAtPiA1NjU1NDgxNDU1NjkuMzgyNDUgNjQ0MzI5Njg1ODIyNzAwLjYyCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3NpbjAwNTAgc2luIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAorc2luMDA1MSBzaW4gMy43ZS0wOCAwLjAgLT4gMy42OTk5OTk5OTk5OTk5OTkyMDAxZS04IDAuMAorc2luMDA1MiBzaW4gMC4wMDEgMC4wIC0+IDAuMDAwOTk5OTk5ODMzMzMzMzQxNjg3NDggMC4wCitzaW4wMDUzIHNpbiAwLjIgMC4wIC0+IDAuMTk4NjY5MzMwNzk1MDYxMjI2MzQgMC4wCitzaW4wMDU0IHNpbiAxLjAgMC4wIC0+IDAuODQxNDcwOTg0ODA3ODk2NTA2NjUgMC4wCitzaW4wMDU1IHNpbiAtMy43ZS0wOCAwLjAgLT4gLTMuNjk5OTk5OTk5OTk5OTk5MjAwMWUtOCAwLjAKK3NpbjAwNTYgc2luIC0wLjAwMSAwLjAgLT4gLTAuMDAwOTk5OTk5ODMzMzMzMzQxNjg3NDggMC4wCitzaW4wMDU3IHNpbiAtMS4wIDAuMCAtPiAtMC44NDE0NzA5ODQ4MDc4OTY1MDY2NSAwLjAKK3NpbjAwNTggc2luIDAuNTIzNTk4Nzc1NTk4Mjk4OSAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwNDY0MiAwLjAKK3NpbjAwNTkgc2luIC0wLjUyMzU5ODc3NTU5ODI5ODkgMC4wIC0+IC0wLjUwMDAwMDAwMDAwMDAwMDA0NjQyIDAuMAorc2luMDA2MCBzaW4gMi42MTc5OTM4Nzc5OTE0OTQ0IDAuMCAtPiAwLjQ5OTk5OTk5OTk5OTk5OTk2MDE4IC0wLjAKK3NpbjAwNjEgc2luIC0yLjYxNzk5Mzg3Nzk5MTQ5NDQgMC4wIC0+IC0wLjQ5OTk5OTk5OTk5OTk5OTk2MDE4IC0wLjAKK3NpbjAwNjIgc2luIDcuMjI1NjYzMTAzMjU2NTIzIDAuMCAtPiAwLjgwOTAxNjk5NDM3NDk0NjczNjQ4IDAuMAorc2luMDA2MyBzaW4gLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IC0wLjU4Nzc4NTI1MjI5MjQ3MzQwNjU4IC0wLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIHNpbjEwMDAgc2luIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiBzaW4xMDAxIHNpbiAtaW5mIDAuMCAtPiBuYW4gMC4wIGludmFsaWQgaWdub3JlLWltYWctc2lnbgpAQCAtMjE2MSw2ICsyMjgzLDI1IEBACiB0YW4wMDIyIHRhbiAxLjE2MTUzMTM5MDA4ODA1NzcgMS43OTU2Mjk4NzI4NjQ3MTA3IC0+IDAuMDQxNzkzMTg2ODI2MzkwMzYyIDEuMDM3NTMzOTU0NjAzNDc5MgogdGFuMDAyMyB0YW4gMC4wNjcwMTQ3Nzk0Nzc5MDg5NDUgNS44NTE3MzYxNTc3NDU3MDk3IC0+IDIuMjA4ODYzOTc1NDgwMDAzNGUtMDYgMC45OTk5ODM2MTgyNDIwMDYxCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3RhbjAwNTAgdGFuIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAordGFuMDA1MSB0YW4gMy43ZS0wOCAwLjAgLT4gMy43MDAwMDAwMDAwMDAwMDE3MzI4ZS04IDAuMAordGFuMDA1MiB0YW4gMC4wMDEgMC4wIC0+IDAuMDAxMDAwMDAwMzMzMzMzNDY2Njg3NSAwLjAKK3RhbjAwNTMgdGFuIDAuMiAwLjAgLT4gMC4yMDI3MTAwMzU1MDg2NzI0OTQ4OCAwLjAKK3RhbjAwNTQgdGFuIDEuMCAwLjAgLT4gMS41NTc0MDc3MjQ2NTQ5MDIyMzA1IDAuMAordGFuMDA1NSB0YW4gLTMuN2UtMDggMC4wIC0+IC0zLjcwMDAwMDAwMDAwMDAwMTczMjhlLTggMC4wCit0YW4wMDU2IHRhbiAtMC4wMDEgMC4wIC0+IC0wLjAwMTAwMDAwMDMzMzMzMzQ2NjY4NzUgMC4wCit0YW4wMDU3IHRhbiAtMS4wIDAuMCAtPiAtMS41NTc0MDc3MjQ2NTQ5MDIyMzA1IDAuMAordGFuMDA1OCB0YW4gMC40NjM2NDc2MDkwMDA4MDYxIDAuMCAtPiAwLjQ5OTk5OTk5OTk5OTk5OTk3MTYzIDAuMAordGFuMDA1OSB0YW4gLTAuNDYzNjQ3NjA5MDAwODA2MSAwLjAgLT4gLTAuNDk5OTk5OTk5OTk5OTk5OTcxNjMgMC4wCit0YW4wMDYwIHRhbiAxLjEwNzE0ODcxNzc5NDA5MDQgMC4wIC0+IDEuOTk5OTk5OTk5OTk5OTk5NTI5OCAwLjAKK3RhbjAwNjEgdGFuIC0xLjEwNzE0ODcxNzc5NDA5MDQgMC4wIC0+IC0xLjk5OTk5OTk5OTk5OTk5OTUyOTggMC4wCit0YW4wMDYyIHRhbiAxLjUgMC4wIC0+IDE0LjEwMTQxOTk0NzE3MTcxOTM4OCAwLjAKK3RhbjAwNjMgdGFuIDEuNTcgMC4wIC0+IDEyNTUuNzY1NTkxNTAwNzg5NjQ3NSAwLjAKK3RhbjAwNjQgdGFuIDEuNTcwNzk2MzI2Nzk0ODk2MSAwLjAgLT4gMTk3ODkzNzk2NjA5NTIxOS4wNTM4IDAuMAordGFuMDA2NSB0YW4gNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDEuMzc2MzgxOTIwNDcxMTcwMTUyMiAwLjAKK3RhbjAwNjYgdGFuIC04Ljc5NjQ1OTQzMDA1MTQyIDAuMCAtPiAwLjcyNjU0MjUyODAwNTM2MTQwOTggMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiB0YW4xMDAwIHRhbiAtMC4wIDAuMCAtPiAtMC4wIDAuMAogdGFuMTAwMSB0YW4gLWluZiAwLjAgLT4gbmFuIG5hbiBpbnZhbGlkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weSBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CmluZGV4IDA4NjBkYjguLjk4OGM2ZjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CkBAIC0yLDE0ICsyLDIyIEBACiAKIFNlZSBodHRwOi8vd3d3LnpvcGUub3JnL01lbWJlcnMvZmRyYWtlL0RhdGVUaW1lV2lraS9UZXN0Q2FzZXMKICIiIgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGlzX3Jlc291cmNlX2VuYWJsZWQKKworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGJpc2VjdAogCiBpbXBvcnQgY29weQogaW1wb3J0IGRlY2ltYWwKIGltcG9ydCBzeXMKK2ltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN0cnVjdAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gYXJyYXkgaW1wb3J0IGFycmF5CisKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGx0LCBsZSwgZ3QsIGdlLCBlcSwgbmUsIHRydWVkaXYsIGZsb29yZGl2LCBtb2QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0yODQsNyArMjkyLDggQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOiBzZWxmLkVTVC5kc3QoNSkKIAogICAgIGRlZiB0ZXN0X3R6bmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDKzAwOjAwJywgdGltZXpvbmUoWkVSTykudHpuYW1lKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMnLCB0aW1lem9uZS51dGMudHpuYW1lKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMnLCB0aW1lem9uZShaRVJPKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQy0wNTowMCcsIHRpbWV6b25lKC01ICogSE9VUikudHpuYW1lKE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMrMDk6MzAnLCB0aW1lem9uZSg5LjUgKiBIT1VSKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQy0wMDowMScsIHRpbWV6b25lKHRpbWVkZWx0YShtaW51dGVzPS0xKSkudHpuYW1lKE5vbmUpKQpAQCAtMTU1OCwxMyArMTU2NywzMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgZHQyKQogCiAgICAgZGVmIHRlc3RfaXNvZm9ybWF0KHNlbGYpOgotICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyLCA0LCA1LCAxLCAxMjMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgICAgIjAwMDItMDMtMDJUMDQ6MDU6MDEuMDAwMTIzIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnVCcpLCAiMDAwMi0wMy0wMlQwNDowNTowMS4wMDAxMjMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAyLTAzLTAyIDA0OjA1OjAxLjAwMDEyMyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1x4MDAnKSwgIjAwMDItMDMtMDJceDAwMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSwgMTIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICAgICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1QnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnICcpLCAiMDAwMS0wMi0wMyAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCdceDAwJyksICIwMDAxLTAyLTAzXHgwMDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2hvdXJzJyksICIwMDAxLTAyLTAzVDA0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpLCAiMDAwMS0wMi0wM1QwNDowNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdChzZXA9JyAnLCB0aW1lc3BlYz0nbWludXRlcycpLCAiMDAwMS0wMi0wMyAwNDowNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuaXNvZm9ybWF0LCB0aW1lc3BlYz0nZm9vJykKICAgICAgICAgIyBzdHIgaXMgSVNPIGZvcm1hdCB3aXRoIHRoZSBzZXBhcmF0b3IgZm9yY2VkIHRvIGEgYmxhbmsuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMi0wMy0wMiAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0KSwgIjAwMDEtMDItMDMgMDQ6MDU6MDEuMDAwMTIzIikKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxLCAyLCAzLCA0LCA1LCAxLCA5OTk1MDAsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS45OTkrMDA6MDAiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDEsIDIsIDMsIDQsIDUsIDEsIDk5OTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjk5OSIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMDAwMS0wMi0wM1QwNDowNTowMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMDAwIikKIAogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICAgICIwMDAyLTAzLTAyVDAwOjAwOjAwIikKQEAgLTE1NzIsNiArMTYwMCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAyLTAzLTAyIDAwOjAwOjAwIikKICAgICAgICAgIyBzdHIgaXMgSVNPIGZvcm1hdCB3aXRoIHRoZSBzZXBhcmF0b3IgZm9yY2VkIHRvIGEgYmxhbmsuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMi0wMy0wMiAwMDowMDowMCIpCisgICAgICAgICMgSVNPIGZvcm1hdCB3aXRoIHRpbWV6b25lCisgICAgICAgIHR6ID0gRml4ZWRPZmZzZXQodGltZWRlbHRhKHNlY29uZHM9MTYpLCAnWFhYJykKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMiwgMywgMiwgdHppbmZvPXR6KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICIwMDAyLTAzLTAyVDAwOjAwOjAwKzAwOjAwOjE2IikKIAogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToKICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMDcsIDksIDEwLCA0LCA1LCAxLCAxMjMpCkBAIC0xNjkxLDYgKzE3MjMsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIDIzLCA1OSwgNTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAwMDApCisgICAgICAgICMgYmFkIGZvbGQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIGZvbGQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCBmb2xkPTIpCisgICAgICAgICMgUG9zaXRpb25hbCBmb2xkOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudGhlY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCAyMywgNTksIDU5LCAwLCBOb25lLCAxKQogCiAgICAgZGVmIHRlc3RfaGFzaF9lcXVhbGl0eShzZWxmKToKICAgICAgICAgZCA9IHNlbGYudGhlY2xhc3MoMjAwMCwgMTIsIDMxLCAyMywgMzAsIDE3KQpAQCAtMTg3NCwxNiArMTkxNCwyMCBAQAogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAuMCArIDM2MDAgKyAyKjYwICsgMyArIDQqMWUtNikKLSAgICAgICAgIyBNaXNzaW5nIGhvdXIgbWF5IHByb2R1Y2UgcGxhdGZvcm0tZGVwZW5kZW50IHJlc3VsdAotICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAzLCAxMSwgMiwgMzApCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQudGltZXN0YW1wKCkpLAotICAgICAgICAgICAgICAgICAgICAgIFt0IC0gdGltZWRlbHRhKGhvdXJzPTEpLCB0ICsgdGltZWRlbHRhKGhvdXJzPTEpXSkKKyAgICAgICAgIyBNaXNzaW5nIGhvdXIKKyAgICAgICAgdDAgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDMsIDExLCAyLCAzMCkKKyAgICAgICAgdDEgPSB0MC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodDEudGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHQwIC0gdGltZWRlbHRhKGhvdXJzPTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0MC50aW1lc3RhbXAoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdDEgKyB0aW1lZGVsdGEoaG91cnM9MSkpCiAgICAgICAgICMgQW1iaWd1b3VzIGhvdXIgZGVmYXVsdHMgdG8gRFNUCiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCAxLCAzMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksIHQpCiAKICAgICAgICAgIyBUaW1lc3RhbXAgbWF5IHJhaXNlIGFuIG92ZXJmbG93IGVycm9yIG9uIHNvbWUgcGxhdGZvcm1zCi0gICAgICAgIGZvciB0IGluIFtzZWxmLnRoZWNsYXNzKDEsMSwxKSwgc2VsZi50aGVjbGFzcyg5OTk5LDEyLDEyKV06CisgICAgICAgICMgWFhYOiBEbyB3ZSBjYXJlIHRvIHN1cHBvcnQgdGhlIGZpcnN0IGFuZCBsYXN0IHllYXI/CisgICAgICAgIGZvciB0IGluIFtzZWxmLnRoZWNsYXNzKDIsMSwxKSwgc2VsZi50aGVjbGFzcyg5OTk4LDEyLDEyKV06CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcyA9IHQudGltZXN0YW1wKCkKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgpAQCAtMTkwMiw2ICsxOTQ2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIDE4MDAwICsgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQogCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ01TSy0wMycpICAjIFNvbWV0aGluZyBlYXN0IG9mIEdyZWVud2ljaAogICAgIGRlZiB0ZXN0X21pY3Jvc2Vjb25kX3JvdW5kaW5nKHNlbGYpOgogICAgICAgICBmb3IgZnRzIGluIFtzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcF06CkBAIC0yMDc2LDExICsyMTIxLDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSkgIyBuZWVkIGFuIGFyZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQpICMgbmVlZCB0d28gYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIHQsIGQpICMgYXJncyByZXZlcnNlZAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsIHQsIDEpICMgdG9vIG1hbnkgYXJncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsIHQsIDEpICMgd3JvbmcgdHppbmZvIHR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCBkLCB0LCAxLCAyKSAgIyB0b28gbWFueSBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgImRhdGUiLCAidGltZSIpICMgd3JvbmcgdHlwZXMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCBkLCAidGltZSIpICMgd3JvbmcgdHlwZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsICJkYXRlIiwgdCkgIyB3cm9uZyB0eXBlCiAKKyAgICAgICAgIyB0emluZm89IGFyZ3VtZW50CisgICAgICAgIGR0ID0gY29tYmluZShkLCB0LCB0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZHQudHppbmZvLCB0aW1lem9uZS51dGMpCisgICAgICAgIGR0ID0gY29tYmluZShkLCB0LCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydElzKGR0LnR6aW5mbywgdGltZXpvbmUudXRjKQorICAgICAgICB0ID0gdGltZSgpCisgICAgICAgIGR0ID0gY29tYmluZShkdCwgdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5kYXRlKCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQudGltZSgpLCB0KQorCiAgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKICAgICAgICAgY2xzID0gc2VsZi50aGVjbGFzcwogICAgICAgICBhcmdzID0gWzEsIDIsIDMsIDQsIDUsIDYsIDddCkBAIC0yMTA3LDYgKzIxNjMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiYXNlLnJlcGxhY2UsIHllYXI9MjAwMSkKIAogICAgIGRlZiB0ZXN0X2FzdGltZXpvbmUoc2VsZik6CisgICAgICAgIHJldHVybiAgIyBUaGUgcmVzdCBpcyBubyBsb25nZXIgYXBwbGljYWJsZQogICAgICAgICAjIFByZXR0eSBib3JpbmchICBUaGUgVFogdGVzdCBpcyBtb3JlIGludGVyZXN0aW5nIGhlcmUuICBhc3RpbWV6b25lKCkKICAgICAgICAgIyBzaW1wbHkgY2FuJ3QgYmUgYXBwbGllZCB0byBhIG5haXZlIG9iamVjdC4KICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzLm5vdygpCkBAIC0yMzI0LDYgKzIzODEsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCAiMDA6MDA6MDAuMTAwMDAwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCBzdHIodCkpCiAKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTEyMzQ1NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0naG91cnMnKSwgIjEyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpLCAiMTI6MzQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdzZWNvbmRzJyksICIxMjozNDo1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMTI6MzQ6NTYuMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIxMjozNDo1Ni4xMjM0NTYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJyksICIxMjozNDo1Ni4xMjM0NTYiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0Lmlzb2Zvcm1hdCwgdGltZXNwZWM9J21vbmtleScpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTk5OTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIxMjozNDo1Ni45OTkiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjEyOjM0OjU2LjAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpLCAiMTI6MzQ6NTYuMDAwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMTI6MzQ6NTYiKQorCiAgICAgZGVmIHRlc3RfMTY1MzczNihzZWxmKToKICAgICAgICAgIyB2ZXJpZnkgaXQgZG9lc24ndCBhY2NlcHQgZXh0cmEga2V5d29yZCBhcmd1bWVudHMKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3Moc2Vjb25kPTEpCkBAIC0yNTgyLDkgKzI2NTYsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LnV0Y29mZnNldCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5kc3QpCiAKLSAgICAgICAgIyBOb3QgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcy4KKyAgICAgICAgIyBOb3QgYSB3aG9sZSBudW1iZXIgb2Ygc2Vjb25kcy4KICAgICAgICAgY2xhc3MgQzcodHppbmZvKToKLSAgICAgICAgICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOiByZXR1cm4gdGltZWRlbHRhKHNlY29uZHM9NjEpCisgICAgICAgICAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KTogcmV0dXJuIHRpbWVkZWx0YShtaWNyb3NlY29uZHM9NjEpCiAgICAgICAgICAgICBkZWYgZHN0KHNlbGYsIGR0KTogcmV0dXJuIHRpbWVkZWx0YShtaWNyb3NlY29uZHM9LTgxKQogICAgICAgICB0ID0gY2xzKDEsIDEsIDEsIHR6aW5mbz1DNygpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LnV0Y29mZnNldCkKQEAgLTM5MjcsMTIgKzQwMDEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUoeHgsIHh4LCB4eCwgeHgsIHh4LCB4eCwgeHgpKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYW4gaW50ZWdlciBpcyByZXF1aXJlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKGdvdCB0eXBlIHN0clwpJCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXChnb3QgdHlwZSBzdHJcKSQnKToKICAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgJzEwJykKIAogICAgICAgICBmMTAgPSBOdW1iZXIoMTAuOSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15fX2ludF9fIHJldHVybmVkIG5vbi1pbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCh0eXBlIGZsb2F0XCkkJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcKHR5cGUgZmxvYXRcKSQnKToKICAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgZjEwKQogCiAgICAgICAgIGNsYXNzIEZsb2F0KGZsb2F0KToKQEAgLTM5NTcsNSArNDAzMSw3OTAgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAuKQogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMb2NhbCBUaW1lIERpc2FtYmlndWF0aW9uCisKKyMgQW4gZXhwZXJpbWVudGFsIHJlaW1wbGVtZW50YXRpb24gb2YgZnJvbXV0YyB0aGF0IHJlc3BlY3RzIHRoZSAiZm9sZCIgZmxhZy4KKworY2xhc3MgdHppbmZvMih0emluZm8pOgorCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICAiZGF0ZXRpbWUgaW4gVVRDIC0+IGRhdGV0aW1lIGluIGxvY2FsIHRpbWUuIgorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZyb211dGMoKSByZXF1aXJlcyBhIGRhdGV0aW1lIGFyZ3VtZW50IikKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHQudHppbmZvIGlzIG5vdCBzZWxmIikKKyAgICAgICAgIyBSZXR1cm5lZCB2YWx1ZSBzYXRpc2ZpZXMKKyAgICAgICAgIyAgICAgICAgICBkdCArIGxkdC51dGNvZmZzZXQoKSA9IGxkdAorICAgICAgICBvZmYwID0gZHQucmVwbGFjZShmb2xkPTApLnV0Y29mZnNldCgpCisgICAgICAgIG9mZjEgPSBkdC5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCkKKyAgICAgICAgaWYgb2ZmMCBpcyBOb25lIG9yIG9mZjEgaXMgTm9uZSBvciBkdC5kc3QoKSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBpZiBvZmYwID09IG9mZjE6CisgICAgICAgICAgICBsZHQgPSBkdCArIG9mZjAKKyAgICAgICAgICAgIG9mZjEgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIGlmIG9mZjAgPT0gb2ZmMToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisgICAgICAgICMgTm93LCB3ZSBkaXNjb3ZlcmVkIGJvdGggcG9zc2libGUgb2Zmc2V0cywgc28KKyAgICAgICAgIyB3ZSBjYW4ganVzdCB0cnkgZm91ciBwb3NzaWJsZSBzb2x1dGlvbnM6CisgICAgICAgIGZvciBvZmYgaW4gW29mZjAsIG9mZjFdOgorICAgICAgICAgICAgbGR0ID0gZHQgKyBvZmYKKyAgICAgICAgICAgIGlmIGxkdC51dGNvZmZzZXQoKSA9PSBvZmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxkdAorICAgICAgICAgICAgbGR0ID0gbGR0LnJlcGxhY2UoZm9sZD0xKQorICAgICAgICAgICAgaWYgbGR0LnV0Y29mZnNldCgpID09IG9mZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTm8gc3VpdGFibGUgbG9jYWwgdGltZSBmb3VuZCIpCisKKyMgUmVpbXBsZW1lbnRpbmcgc2ltcGxpZmllZCBVUyB0aW1lem9uZXMgdG8gcmVzcGVjdCB0aGUgImZvbGQiIGZsYWc6CisKK2NsYXNzIFVTVGltZVpvbmUyKHR6aW5mbzIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvdXJzLCByZXBybmFtZSwgc3RkbmFtZSwgZHN0bmFtZSk6CisgICAgICAgIHNlbGYuc3Rkb2Zmc2V0ID0gdGltZWRlbHRhKGhvdXJzPWhvdXJzKQorICAgICAgICBzZWxmLnJlcHJuYW1lID0gcmVwcm5hbWUKKyAgICAgICAgc2VsZi5zdGRuYW1lID0gc3RkbmFtZQorICAgICAgICBzZWxmLmRzdG5hbWUgPSBkc3RuYW1lCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnJlcHJuYW1lCisKKyAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKKyAgICAgICAgaWYgc2VsZi5kc3QoZHQpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHN0bmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RkbmFtZQorCisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBzZWxmLnN0ZG9mZnNldCArIHNlbGYuZHN0KGR0KQorCisgICAgZGVmIGRzdChzZWxmLCBkdCk6CisgICAgICAgIGlmIGR0IGlzIE5vbmUgb3IgZHQudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICAjIEFuIGV4Y2VwdGlvbiBpbnN0ZWFkIG1heSBiZSBzZW5zaWJsZSBoZXJlLCBpbiBvbmUgb3IgbW9yZSBvZgorICAgICAgICAgICAgIyB0aGUgY2FzZXMuCisgICAgICAgICAgICByZXR1cm4gWkVSTworICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKworICAgICAgICAjIEZpbmQgZmlyc3QgU3VuZGF5IGluIEFwcmlsLgorICAgICAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihEU1RTVEFSVC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCisgICAgICAgIGFzc2VydCBzdGFydC53ZWVrZGF5KCkgPT0gNiBhbmQgc3RhcnQubW9udGggPT0gNCBhbmQgc3RhcnQuZGF5IDw9IDcKKworICAgICAgICAjIEZpbmQgbGFzdCBTdW5kYXkgaW4gT2N0b2Jlci4KKyAgICAgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKERTVEVORC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCisgICAgICAgIGFzc2VydCBlbmQud2Vla2RheSgpID09IDYgYW5kIGVuZC5tb250aCA9PSAxMCBhbmQgZW5kLmRheSA+PSAyNQorCisgICAgICAgICMgQ2FuJ3QgY29tcGFyZSBuYWl2ZSB0byBhd2FyZSBvYmplY3RzLCBzbyBzdHJpcCB0aGUgdGltZXpvbmUgZnJvbQorICAgICAgICAjIGR0IGZpcnN0LgorICAgICAgICBkdCA9IGR0LnJlcGxhY2UodHppbmZvPU5vbmUpCisgICAgICAgIGlmIHN0YXJ0ICsgSE9VUiA8PSBkdCA8IGVuZDoKKyAgICAgICAgICAgICMgRFNUIGlzIGluIGVmZmVjdC4KKyAgICAgICAgICAgIHJldHVybiBIT1VSCisgICAgICAgIGVsaWYgZW5kIDw9IGR0IDwgZW5kICsgSE9VUjoKKyAgICAgICAgICAgICMgRm9sZCAoYW4gYW1iaWd1b3VzIGhvdXIpOiB1c2UgZHQuZm9sZCB0byBkaXNhbWJpZ3VhdGUuCisgICAgICAgICAgICByZXR1cm4gWkVSTyBpZiBkdC5mb2xkIGVsc2UgSE9VUgorICAgICAgICBlbGlmIHN0YXJ0IDw9IGR0IDwgc3RhcnQgKyBIT1VSOgorICAgICAgICAgICAgIyBHYXAgKGEgbm9uLWV4aXN0ZW50IGhvdXIpOiByZXZlcnNlIHRoZSBmb2xkIHJ1bGUuCisgICAgICAgICAgICByZXR1cm4gSE9VUiBpZiBkdC5mb2xkIGVsc2UgWkVSTworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBEU1QgaXMgb2ZmLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8KKworRWFzdGVybjIgID0gVVNUaW1lWm9uZTIoLTUsICJFYXN0ZXJuMiIsICAiRVNUIiwgIkVEVCIpCitDZW50cmFsMiAgPSBVU1RpbWVab25lMigtNiwgIkNlbnRyYWwyIiwgICJDU1QiLCAiQ0RUIikKK01vdW50YWluMiA9IFVTVGltZVpvbmUyKC03LCAiTW91bnRhaW4yIiwgIk1TVCIsICJNRFQiKQorUGFjaWZpYzIgID0gVVNUaW1lWm9uZTIoLTgsICJQYWNpZmljMiIsICAiUFNUIiwgIlBEVCIpCisKKyMgRXVyb3BlX1ZpbG5pdXNfMTk0MSB0emluZm8gaW1wbGVtZW50YXRpb24gcmVwcm9kdWNlcyB0aGUgZm9sbG93aW5nCisjIDE5NDEgdHJhbnNpdGlvbiBmcm9tIE9sc29uJ3MgdHpkaXN0OgorIworIyBab25lIE5BTUUgICAgICAgICAgIEdNVE9GRiBSVUxFUyAgRk9STUFUIFtVTlRJTF0KKyMgWm9uZUV1cm9wZS9WaWxuaXVzICAxOjAwICAgLSAgICAgIENFVCAgICAxOTQwIEF1ZyAgMworIyAgICAgICAgICAgICAgICAgICAgIDM6MDAgICAtICAgICAgTVNLICAgIDE5NDEgSnVuIDI0CisjICAgICAgICAgICAgICAgICAgICAgMTowMCAgIEMtRXVyICBDRSVzVCAgMTk0NCBBdWcKKyMKKyMgJCB6ZHVtcCAtdiBFdXJvcGUvVmlsbml1cyB8IGdyZXAgMTk0MQorIyBFdXJvcGUvVmlsbml1cyAgTW9uIEp1biAyMyAyMDo1OTo1OSAxOTQxIFVUQyA9IE1vbiBKdW4gMjMgMjM6NTk6NTkgMTk0MSBNU0sgaXNkc3Q9MCBnbXRvZmY9MTA4MDAKKyMgRXVyb3BlL1ZpbG5pdXMgIE1vbiBKdW4gMjMgMjE6MDA6MDAgMTk0MSBVVEMgPSBNb24gSnVuIDIzIDIzOjAwOjAwIDE5NDEgQ0VTVCBpc2RzdD0xIGdtdG9mZj03MjAwCisKK2NsYXNzIEV1cm9wZV9WaWxuaXVzXzE5NDEodHppbmZvKToKKyAgICBkZWYgX3V0Y19mb2xkKHNlbGYpOgorICAgICAgICByZXR1cm4gW2RhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMSwgdHppbmZvPXNlbGYpLCAgIyBNb24gSnVuIDIzIDIxOjAwOjAwIDE5NDEgVVRDCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCB0emluZm89c2VsZildICAjIE1vbiBKdW4gMjMgMjI6MDA6MDAgMTk0MSBVVEMKKworICAgIGRlZiBfbG9jX2ZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBbZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIzLCB0emluZm89c2VsZiksICAjIE1vbiBKdW4gMjMgMjM6MDA6MDAgMTk0MSBNU0sgLyBDRVNUCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUoMTk0MSwgNiwgMjQsIDAsIHR6aW5mbz1zZWxmKV0gICAjIE1vbiBKdW4gMjQgMDA6MDA6MDAgMTk0MSBDRVNUCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fbG9jX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gMyAqIEhPVVIKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0b3A6CisgICAgICAgICAgICByZXR1cm4gKDIgaWYgZHQuZm9sZCBlbHNlIDMpICogSE9VUgorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gMiAqIEhPVVIKKworICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgorICAgICAgICBmb2xkX3N0YXJ0LCBmb2xkX3N0b3AgPSBzZWxmLl9sb2NfZm9sZCgpCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdGFydDoKKyAgICAgICAgICAgIHJldHVybiAwICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoMSBpZiBkdC5mb2xkIGVsc2UgMCkgKiBIT1VSCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiAxICogSE9VUgorCisgICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CisgICAgICAgIGZvbGRfc3RhcnQsIGZvbGRfc3RvcCA9IHNlbGYuX2xvY19mb2xkKCkKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0YXJ0OgorICAgICAgICAgICAgcmV0dXJuICdNU0snCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdG9wOgorICAgICAgICAgICAgcmV0dXJuICgnTVNLJywgJ0NFU1QnKVtkdC5mb2xkXQorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gJ0NFU1QnCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC5mb2xkID09IDAKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIGlmIGR0LnllYXIgIT0gMTk0MToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fdXRjX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gZHQgKyAzICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoZHQgKyAyICogSE9VUikucmVwbGFjZShmb2xkPTEpCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiBkdCArIDIgKiBIT1VSCisKKworY2xhc3MgVGVzdExvY2FsVGltZURpc2FtYmlndWF0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3ZpbG5pdXNfMTk0MV9mcm9tdXRjKHNlbGYpOgorICAgICAgICBWaWxuaXVzID0gRXVyb3BlX1ZpbG5pdXNfMTk0MSgpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIwLCA1OSwgNTksIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxkdCA9IGdkdC5hc3RpbWV6b25lKFZpbG5pdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnN0cmZ0aW1lKCIlYyAlWiV6IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjM6NTk6NTkgMTk0MSBNU0srMDMwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGR0LmRzdCgpKQorCisgICAgICAgIGdkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbGR0ID0gZ2R0LmFzdGltZXpvbmUoVmlsbml1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuc3RyZnRpbWUoIiVjICVaJXoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMzowMDowMCAxOTQxIENFU1QrMDIwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZHQuZHN0KCkpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBsZHQgPSBnZHQuYXN0aW1lem9uZShWaWxuaXVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5zdHJmdGltZSgiJWMgJVoleiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUdWUgSnVuIDI0IDAwOjAwOjAwIDE5NDEgQ0VTVCswMjAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxkdC5kc3QoKSkKKworICAgIGRlZiB0ZXN0X3ZpbG5pdXNfMTk0MV90b3V0YyhzZWxmKToKKyAgICAgICAgVmlsbml1cyA9IEV1cm9wZV9WaWxuaXVzXzE5NDEoKQorCisgICAgICAgIGxkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMiwgNTksIDU5LCB0emluZm89Vmlsbml1cykKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAxOTo1OTo1OSAxOTQxIFVUQycpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIzLCA1OSwgNTksIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIwOjU5OjU5IDE5NDEgVVRDJykKKworICAgICAgICBsZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjMsIDU5LCA1OSwgdHppbmZvPVZpbG5pdXMsIGZvbGQ9MSkKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMTo1OTo1OSAxOTQxIFVUQycpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjQsIDAsIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIyOjAwOjAwIDE5NDEgVVRDJykKKworCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3JzKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwLCBmb2xkPTEpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5mb2xkLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0aW1lKDAsIDAsIDAsIDAsIE5vbmUsIDApCisKKyAgICBkZWYgdGVzdF9tZW1iZXIoc2VsZik6CisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICB0ID0gZHQudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5mb2xkLCAxKQorICAgICAgICB0ID0gZHQudGltZXR6KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmZvbGQsIDEpCisKKyAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXBsYWNlKGZvbGQ9MSkuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKGZvbGQ9MSkuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlcGxhY2UoZm9sZD0wKS5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UoZm9sZD0wKS5mb2xkLCAwKQorICAgICAgICAjIENoZWNrIHRoYXQgcmVwbGFjZW1lbnQgb2Ygb3RoZXIgZmllbGRzIGRvZXMgbm90IGNoYW5nZSAiZm9sZCIuCisgICAgICAgIHQgPSB0LnJlcGxhY2UoZm9sZD0xLCB0emluZm89RWFzdGVybikKKyAgICAgICAgZHQgPSBkdC5yZXBsYWNlKGZvbGQ9MSwgdHppbmZvPUVhc3Rlcm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXBsYWNlKHR6aW5mbz1Ob25lKS5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UodHppbmZvPU5vbmUpLmZvbGQsIDEpCisgICAgICAgICMgQ2hlY2sgdGhhdCBmb2xkIGlzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHQucmVwbGFjZSgxLCAxLCAxLCBOb25lLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkdC5yZXBsYWNlKDEsIDEsIDEsIDEsIDEsIDEsIDEsIE5vbmUsIDEpCisKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5yZXBsYWNlKGZvbGQ9MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIGR0LnJlcGxhY2UoZm9sZD0xKSkKKworICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDApCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHQpLCBoYXNoKHQucmVwbGFjZShmb2xkPTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGR0KSwgaGFzaChkdC5yZXBsYWNlKGZvbGQ9MSkpKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfZnJvbXRpbWVzdGFtcChzZWxmKToKKyAgICAgICAgcyA9IDE0MTQ5MDYyMDAKKyAgICAgICAgZHQwID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICBkdDEgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMgKyAzNjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MS5mb2xkLCAxKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0F1c3RyYWxpYS9Mb3JkX0hvd2UnKQorICAgIGRlZiB0ZXN0X2Zyb210aW1lc3RhbXBfbG9yZF9ob3dlKHNlbGYpOgorICAgICAgICB0bSA9IF90aW1lLmxvY2FsdGltZSgxLjRlOSkKKyAgICAgICAgaWYgX3RpbWUuc3RyZnRpbWUoJyVaJXonLCB0bSkgIT0gJ0xIU1QrMTAzMCc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdBdXN0cmFsaWEvTG9yZF9Ib3dlIHRpbWV6b25lIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpCisgICAgICAgICMgJCBUWj1BdXN0cmFsaWEvTG9yZF9Ib3dlIGRhdGUgLXIgMTQyODE1ODcwMAorICAgICAgICAjIFN1biBBcHIgIDUgMDE6NDU6MDAgTEhEVCAyMDE1CisgICAgICAgICMgJCBUWj1BdXN0cmFsaWEvTG9yZF9Ib3dlIGRhdGUgLXIgMTQyODE2MDUwMAorICAgICAgICAjIFN1biBBcHIgIDUgMDE6NDU6MDAgTEhTVCAyMDE1CisgICAgICAgIHMgPSAxNDI4MTU4NzAwCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICB0MSA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocyArIDE4MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAsIHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQwLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEuZm9sZCwgMSkKKworCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfdGltZXN0YW1wKHNlbGYpOgorICAgICAgICBkdDAgPSBkYXRldGltZSgyMDE0LCAxMSwgMiwgMSwgMzApCisgICAgICAgIGR0MSA9IGR0MC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdDAudGltZXN0YW1wKCkgKyAzNjAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGR0MS50aW1lc3RhbXAoKSkKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdBdXN0cmFsaWEvTG9yZF9Ib3dlJykKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfbG9yZF9ob3dlKHNlbGYpOgorICAgICAgICB0bSA9IF90aW1lLmxvY2FsdGltZSgxLjRlOSkKKyAgICAgICAgaWYgX3RpbWUuc3RyZnRpbWUoJyVaJXonLCB0bSkgIT0gJ0xIU1QrMTAzMCc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdBdXN0cmFsaWEvTG9yZF9Ib3dlIHRpbWV6b25lIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpCisgICAgICAgIHQgPSBkYXRldGltZSgyMDE1LCA0LCA1LCAxLCA0NSkKKyAgICAgICAgczAgPSB0LnJlcGxhY2UoZm9sZD0wKS50aW1lc3RhbXAoKQorICAgICAgICBzMSA9IHQucmVwbGFjZShmb2xkPTEpLnRpbWVzdGFtcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczAgKyAxODAwLCBzMSkKKworCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfYXN0aW1lem9uZShzZWxmKToKKyAgICAgICAgZHQwID0gZGF0ZXRpbWUoMjAxNCwgMTEsIDIsIDEsIDMwKQorICAgICAgICBkdDEgPSBkdDAucmVwbGFjZShmb2xkPTEpCisgICAgICAgICMgQ29udmVydCBib3RoIG5haXZlIGluc3RhbmNlcyB0byBhd2FyZS4KKyAgICAgICAgYWR0MCA9IGR0MC5hc3RpbWV6b25lKCkKKyAgICAgICAgYWR0MSA9IGR0MS5hc3RpbWV6b25lKCkKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBmaXJzdCBpbnN0YW5jZSBpbiBEU1Qgem9uZSBhbmQgdGhlIHNlY29uZCBpbiBTVEQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwLnR6bmFtZSgpLCAnRURUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQxLnR6bmFtZSgpLCAnRVNUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwICsgSE9VUiwgYWR0MSkKKyAgICAgICAgIyBBd2FyZSBpbnN0YW5jZXMgd2l0aCBmaXhlZCBvZmZzZXQgdHppbmZvJ3MgYWx3YXlzIGhhdmUgZm9sZD0wCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWR0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDEuZm9sZCwgMCkKKworCisgICAgZGVmIHRlc3RfcGlja2xlX2ZvbGQoc2VsZik6CisgICAgICAgIHQgPSB0aW1lKGZvbGQ9MSkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxLCBmb2xkPTEpCisgICAgICAgIGZvciBwaWNrbGVyLCB1bnBpY2tsZXIsIHByb3RvIGluIHBpY2tsZV9jaG9pY2VzOgorICAgICAgICAgICAgZm9yIHggaW4gW3QsIGR0XToKKyAgICAgICAgICAgICAgICBzID0gcGlja2xlci5kdW1wcyh4LCBwcm90bykKKyAgICAgICAgICAgICAgICB5ID0gdW5waWNrbGVyLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAgaWYgcHJvdG8gPCA0IGVsc2UgeC5mb2xkKSwgeS5mb2xkKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoZm9sZD0xKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEsIGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHQpLCAnZGF0ZXRpbWUudGltZSgwLCAwLCBmb2xkPTEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0ZXRpbWUuZGF0ZXRpbWUoMSwgMSwgMSwgMCwgMCwgZm9sZD0xKScpCisKKyAgICBkZWYgdGVzdF9kc3Qoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgZHRfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgZHRfd2ludGVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAyLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLmRzdCgpLCBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3dpbnRlci5kc3QoKSwgWkVSTykKKyAgICAgICAgIyBUaGUgZGlzYW1iaWd1YXRpb24gZmxhZyBpcyBpZ25vcmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnJlcGxhY2UoZm9sZD0xKS5kc3QoKSwgSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBaRVJPKQorCisgICAgICAgICMgUGljayBsb2NhbCB0aW1lIGluIHRoZSBmb2xkLgorICAgICAgICBmb3IgbWludXRlIGluIFswLCAzMCwgNTldOgorICAgICAgICAgICAgZHQgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIG1pbnV0ZSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MCAodGhlIGRlZmF1bHQpIGl0IGlzIGluIERTVC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZHN0KCksIEhPVVIpCisgICAgICAgICAgICAjIFdpdGggZm9sZD0xIGl0IGlzIGluIFNURC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBaRVJPKQorCisgICAgICAgICMgUGljayBsb2NhbCB0aW1lIGluIHRoZSBnYXAuCisgICAgICAgIGZvciBtaW51dGUgaW4gWzAsIDMwLCA1OV06CisgICAgICAgICAgICBkdCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIG1pbnV0ZSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MCAodGhlIGRlZmF1bHQpIGl0IGlzIGluIFNURC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZHN0KCksIFpFUk8pCisgICAgICAgICAgICAjIFdpdGggZm9sZD0xIGl0IGlzIGluIERTVC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBIT1VSKQorCisKKyAgICBkZWYgdGVzdF91dGNvZmZzZXQoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgZHRfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgZHRfd2ludGVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAyLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnV0Y29mZnNldCgpLCAtNCAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfd2ludGVyLnV0Y29mZnNldCgpLCAtNSAqIEhPVVIpCisgICAgICAgICMgVGhlIGRpc2FtYmlndWF0aW9uIGZsYWcgaXMgaWdub3JlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3N1bW1lci5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCksIC00ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIucmVwbGFjZShmb2xkPTEpLnV0Y29mZnNldCgpLCAtNSAqIEhPVVIpCisKKyAgICBkZWYgdGVzdF9mcm9tdXRjKHNlbGYpOgorICAgICAgICAjIExldCdzIGZpcnN0IGVzdGFibGlzaCB0aGF0IHRoaW5ncyB3b3JrIGluIHJlZ3VsYXIgdGltZXMuCisgICAgICAgIHVfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCA2LCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgdV93aW50ZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDcsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9zdW1tZXIgPSBFYXN0ZXJuMi5mcm9tdXRjKHVfc3VtbWVyKQorICAgICAgICB0X3dpbnRlciA9IEVhc3Rlcm4yLmZyb211dGModV93aW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF9zdW1tZXIsIHVfc3VtbWVyIC0gNCAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF93aW50ZXIsIHVfd2ludGVyIC0gNSAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF9zdW1tZXIuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3dpbnRlci5mb2xkLCAwKQorCisgICAgICAgICMgV2hhdCBoYXBwZW5zIGluIHRoZSBmYWxsLWJhY2sgZm9sZD8KKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNSwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdDAgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHUgKz0gSE9VUgorICAgICAgICB0MSA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MCwgdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS5mb2xkLCAxKQorICAgICAgICAjIFRoZSB0cmlja3kgcGFydCBpcyB3aGVuIHUgaXMgaW4gdGhlIGxvY2FsIGZvbGQ6CisgICAgICAgIHUgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIDMwLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHQgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHQuZGF5LCB0LmhvdXIpLCAoMjYsIDIxKSkKKyAgICAgICAgIyAuLiBvciBnZXRzIGludG8gdGhlIGxvY2FsIGZvbGQgYWZ0ZXIgYSBzdGFuZGFyZCB0aW1lIGFkanVzdG1lbnQKKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNiwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICgyNywgMSkpCisKKyAgICAgICAgIyBXaGF0IGhhcHBlbnMgaW4gdGhlIHNwcmluZy1mb3J3YXJkIGdhcD8KKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICg2LCAyMSkpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX3JlZ3VsYXIoc2VsZik6CisgICAgICAgIHQgPSBkYXRldGltZSgyMDAwLCAxLCAxLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykpCisgICAgICAgIHQgPSBkYXRldGltZSgyMDAwLCA2LCAxLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX2ZvbGQoc2VsZik6CisgICAgICAgIHRfZm9sZCA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgNDUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9mb2xkX3V0YyA9IHRfZm9sZC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0X2ZvbGQsIHRfZm9sZF91dGMpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX2dhcChzZWxmKToKKyAgICAgICAgdF9nYXAgPSBkYXRldGltZSgyMDAyLCA0LCA3LCAyLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2dhcF91dGMgPSB0X2dhcC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0X2dhcCwgdF9nYXBfdXRjKQorCisgICAgZGVmIHRlc3RfaGFzaF9hd2FyZShzZWxmKToKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMDAsIDEsIDEsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHQpLCBoYXNoKHQucmVwbGFjZShmb2xkPTEpKSkKKyAgICAgICAgdF9mb2xkID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2dhcCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDQ1LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCh0X2ZvbGQpLCBoYXNoKHRfZm9sZC5yZXBsYWNlKGZvbGQ9MSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2godF9nYXApLCBoYXNoKHRfZ2FwLnJlcGxhY2UoZm9sZD0xKSkpCisKK1NFQyA9IHRpbWVkZWx0YSgwLCAxKQorCitkZWYgcGFpcnMoaXRlcmFibGUpOgorICAgIGEsIGIgPSBpdGVydG9vbHMudGVlKGl0ZXJhYmxlKQorICAgIG5leHQoYiwgTm9uZSkKKyAgICByZXR1cm4gemlwKGEsIGIpCisKK2NsYXNzIFpvbmVJbmZvKHR6aW5mbyk6CisgICAgem9uZXJvb3QgPSAnL3Vzci9zaGFyZS96b25laW5mbycKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXQsIHRpKToKKyAgICAgICAgIiIiCisKKyAgICAgICAgOnBhcmFtIHV0OiBhcnJheQorICAgICAgICAgICAgQXJyYXkgb2YgdHJhbnNpdGlvbiBwb2ludCB0aW1lc3RhbXBzCisgICAgICAgIDpwYXJhbSB0aTogbGlzdAorICAgICAgICAgICAgQSBsaXN0IG9mIChvZmZzZXQsIGlzZHN0LCBhYmJyKSB0dXBsZXMKKyAgICAgICAgOnJldHVybjogTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi51dCA9IHV0CisgICAgICAgIHNlbGYudGkgPSB0aQorICAgICAgICBzZWxmLmx0ID0gc2VsZi5pbnZlcnQodXQsIHRpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBpbnZlcnQodXQsIHRpKToKKyAgICAgICAgbHQgPSAoYXJyYXkoJ3EnLCB1dCksIGFycmF5KCdxJywgdXQpKQorICAgICAgICBpZiB1dDoKKyAgICAgICAgICAgIG9mZnNldCA9IHRpWzBdWzBdIC8vIFNFQworICAgICAgICAgICAgbHRbMF1bMF0gKz0gb2Zmc2V0CisgICAgICAgICAgICBsdFsxXVswXSArPSBvZmZzZXQKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbih1dCkpOgorICAgICAgICAgICAgICAgIGx0WzBdW2ldICs9IHRpW2ktMV1bMF0gLy8gU0VDCisgICAgICAgICAgICAgICAgbHRbMV1baV0gKz0gdGlbaV1bMF0gLy8gU0VDCisgICAgICAgIHJldHVybiBsdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21maWxlKGNscywgZmlsZW9iaik6CisgICAgICAgIGlmIGZpbGVvYmoucmVhZCg0KS5kZWNvZGUoKSAhPSAiVFppZiI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSB6b25laW5mbyBmaWxlIikKKyAgICAgICAgZmlsZW9iai5zZWVrKDMyKQorICAgICAgICBjb3VudHMgPSBhcnJheSgnaScpCisgICAgICAgIGNvdW50cy5mcm9tZmlsZShmaWxlb2JqLCAzKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgY291bnRzLmJ5dGVzd2FwKCkKKworICAgICAgICB1dCA9IGFycmF5KCdpJykKKyAgICAgICAgdXQuZnJvbWZpbGUoZmlsZW9iaiwgY291bnRzWzBdKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgdXQuYnl0ZXN3YXAoKQorCisgICAgICAgIHR5cGVfaW5kaWNlcyA9IGFycmF5KCdCJykKKyAgICAgICAgdHlwZV9pbmRpY2VzLmZyb21maWxlKGZpbGVvYmosIGNvdW50c1swXSkKKworICAgICAgICB0dGlzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnRzWzFdKToKKyAgICAgICAgICAgIHR0aXMuYXBwZW5kKHN0cnVjdC51bnBhY2soIj5sYmIiLCBmaWxlb2JqLnJlYWQoNikpKQorCisgICAgICAgIGFiYnJzID0gZmlsZW9iai5yZWFkKGNvdW50c1syXSkKKworICAgICAgICAjIENvbnZlcnQgdHRpcworICAgICAgICBmb3IgaSwgKGdtdG9mZiwgaXNkc3QsIGFiYnJpbmQpIGluIGVudW1lcmF0ZSh0dGlzKToKKyAgICAgICAgICAgIGFiYnIgPSBhYmJyc1thYmJyaW5kOmFiYnJzLmZpbmQoMCwgYWJicmluZCldLmRlY29kZSgpCisgICAgICAgICAgICB0dGlzW2ldID0gKHRpbWVkZWx0YSgwLCBnbXRvZmYpLCBpc2RzdCwgYWJicikKKworICAgICAgICB0aSA9IFtOb25lXSAqIGxlbih1dCkKKyAgICAgICAgZm9yIGksIGlkeCBpbiBlbnVtZXJhdGUodHlwZV9pbmRpY2VzKToKKyAgICAgICAgICAgIHRpW2ldID0gdHRpc1tpZHhdCisKKyAgICAgICAgc2VsZiA9IGNscyh1dCwgdGkpCisKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tbmFtZShjbHMsIG5hbWUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGNscy56b25lcm9vdCwgbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gY2xzLmZyb21maWxlKGYpCisKKyAgICBFUE9DSE9SRElOQUwgPSBkYXRlKDE5NzAsIDEsIDEpLnRvb3JkaW5hbCgpCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgICIiImRhdGV0aW1lIGluIFVUQyAtPiBkYXRldGltZSBpbiBsb2NhbCB0aW1lLiIiIgorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZyb211dGMoKSByZXF1aXJlcyBhIGRhdGV0aW1lIGFyZ3VtZW50IikKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHQudHppbmZvIGlzIG5vdCBzZWxmIikKKworICAgICAgICB0aW1lc3RhbXAgPSAoKGR0LnRvb3JkaW5hbCgpIC0gc2VsZi5FUE9DSE9SRElOQUwpICogODY0MDAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQuaG91ciAqIDM2MDAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQubWludXRlICogNjAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQuc2Vjb25kKQorCisgICAgICAgIGlmIHRpbWVzdGFtcCA8IHNlbGYudXRbMV06CisgICAgICAgICAgICB0dGkgPSBzZWxmLnRpWzBdCisgICAgICAgICAgICBmb2xkID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWR4ID0gYmlzZWN0LmJpc2VjdF9yaWdodChzZWxmLnV0LCB0aW1lc3RhbXApCisgICAgICAgICAgICBhc3NlcnQgc2VsZi51dFtpZHgtMV0gPD0gdGltZXN0YW1wCisgICAgICAgICAgICBhc3NlcnQgaWR4ID09IGxlbihzZWxmLnV0KSBvciB0aW1lc3RhbXAgPCBzZWxmLnV0W2lkeF0KKyAgICAgICAgICAgIHR0aV9wcmV2LCB0dGkgPSBzZWxmLnRpW2lkeC0yOmlkeF0KKyAgICAgICAgICAgICMgRGV0ZWN0IGZvbGQKKyAgICAgICAgICAgIHNoaWZ0ID0gdHRpX3ByZXZbMF0gLSB0dGlbMF0KKyAgICAgICAgICAgIGZvbGQgPSAoc2hpZnQgPiB0aW1lZGVsdGEoMCwgdGltZXN0YW1wIC0gc2VsZi51dFtpZHgtMV0pKQorICAgICAgICBkdCArPSB0dGlbMF0KKyAgICAgICAgaWYgZm9sZDoKKyAgICAgICAgICAgIHJldHVybiBkdC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBkdAorCisgICAgZGVmIF9maW5kX3RpKHNlbGYsIGR0LCBpKToKKyAgICAgICAgdGltZXN0YW1wID0gKChkdC50b29yZGluYWwoKSAtIHNlbGYuRVBPQ0hPUkRJTkFMKSAqIDg2NDAwCisgICAgICAgICAgICAgKyBkdC5ob3VyICogMzYwMAorICAgICAgICAgICAgICsgZHQubWludXRlICogNjAKKyAgICAgICAgICAgICArIGR0LnNlY29uZCkKKyAgICAgICAgbHQgPSBzZWxmLmx0W2R0LmZvbGRdCisgICAgICAgIGlkeCA9IGJpc2VjdC5iaXNlY3RfcmlnaHQobHQsIHRpbWVzdGFtcCkKKworICAgICAgICByZXR1cm4gc2VsZi50aVttYXgoMCwgaWR4IC0gMSldW2ldCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfdGkoZHQsIDApCisKKyAgICBkZWYgZHN0KHNlbGYsIGR0KToKKyAgICAgICAgaXNkc3QgPSBzZWxmLl9maW5kX3RpKGR0LCAxKQorICAgICAgICAjIFhYWDogV2UgY2Fubm90IGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSAic2F2ZSIgdmFsdWUsCisgICAgICAgICMgc28gbGV0J3MgcmV0dXJuIDFoIHdoZW5ldmVyIERTVCBpcyBpbiBlZmZlY3QuICBTaW5jZQorICAgICAgICAjIHdlIGRvbid0IHVzZSBkc3QoKSBpbiBmcm9tdXRjKCksIGl0IGlzIHVubGlrZWx5IHRoYXQKKyAgICAgICAgIyBpdCB3aWxsIGJlIG5lZWRlZCBmb3IgYW55dGhpbmcgbW9yZSB0aGFuIGJvb2woZHN0KCkpLgorICAgICAgICByZXR1cm4gWkVSTyBpZiBpc2RzdCBlbHNlIEhPVVIKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmluZF90aShkdCwgMikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB6b25lbmFtZXMoY2xzLCB6b25lZGlyPU5vbmUpOgorICAgICAgICBpZiB6b25lZGlyIGlzIE5vbmU6CisgICAgICAgICAgICB6b25lZGlyID0gY2xzLnpvbmVyb290CisgICAgICAgIHpvbmVfdGFiID0gb3MucGF0aC5qb2luKHpvbmVkaXIsICd6b25lLnRhYicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBvcGVuKHpvbmVfdGFiKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB3aXRoIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGxpbmUuc3BsaXQoKVsyXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHN0YXRzKGNscywgc3RhcnRfeWVhcj0xKToKKyAgICAgICAgY291bnQgPSBnYXBfY291bnQgPSBmb2xkX2NvdW50ID0gemVyb3NfY291bnQgPSAwCisgICAgICAgIG1pbl9nYXAgPSBtaW5fZm9sZCA9IHRpbWVkZWx0YS5tYXgKKyAgICAgICAgbWF4X2dhcCA9IG1heF9mb2xkID0gWkVSTworICAgICAgICBtaW5fZ2FwX2RhdGV0aW1lID0gbWF4X2dhcF9kYXRldGltZSA9IGRhdGV0aW1lLm1pbgorICAgICAgICBtaW5fZ2FwX3pvbmUgPSBtYXhfZ2FwX3pvbmUgPSBOb25lCisgICAgICAgIG1pbl9mb2xkX2RhdGV0aW1lID0gbWF4X2ZvbGRfZGF0ZXRpbWUgPSBkYXRldGltZS5taW4KKyAgICAgICAgbWluX2ZvbGRfem9uZSA9IG1heF9mb2xkX3pvbmUgPSBOb25lCisgICAgICAgIHN0YXRzX3NpbmNlID0gZGF0ZXRpbWUoc3RhcnRfeWVhciwgMSwgMSkgIyBTdGFydGluZyBmcm9tIDE5NzAgZWxpbWluYXRlcyBhIGxvdCBvZiBub2lzZQorICAgICAgICBmb3Igem9uZW5hbWUgaW4gY2xzLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgdHogPSBjbHMuZnJvbW5hbWUoem9uZW5hbWUpCisgICAgICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICAgICAgaWYgZHQgPCBzdGF0c19zaW5jZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBzaGlmdCA+IFpFUk86CisgICAgICAgICAgICAgICAgICAgIGdhcF9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZHQpID4gKG1heF9nYXAsIG1heF9nYXBfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhcCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2FwX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhcF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZGF0ZXRpbWUubWF4IC0gZHQpIDwgKG1pbl9nYXAsIGRhdGV0aW1lLm1heCAtIG1pbl9nYXBfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dhcCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZ2FwX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dhcF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgZWxpZiBzaGlmdCA8IFpFUk86CisgICAgICAgICAgICAgICAgICAgIGZvbGRfY291bnQgKz0gMQorICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IC1zaGlmdAorICAgICAgICAgICAgICAgICAgICBpZiAoc2hpZnQsIGR0KSA+IChtYXhfZm9sZCwgbWF4X2ZvbGRfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZvbGQgPSBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZvbGRfem9uZSA9IHpvbmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZm9sZF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZGF0ZXRpbWUubWF4IC0gZHQpIDwgKG1pbl9mb2xkLCBkYXRldGltZS5tYXggLSBtaW5fZm9sZF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZm9sZCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZm9sZF96b25lID0gem9uZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9mb2xkX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB6ZXJvc19jb3VudCArPSAxCisgICAgICAgIHRyYW5zX2NvdW50cyA9IChnYXBfY291bnQsIGZvbGRfY291bnQsIHplcm9zX2NvdW50KQorICAgICAgICBwcmludCgiTnVtYmVyIG9mIHpvbmVzOiAgICAgICAlNWQiICUgY291bnQpCisgICAgICAgIHByaW50KCJOdW1iZXIgb2YgdHJhbnNpdGlvbnM6ICU1ZCA9ICVkIChnYXBzKSArICVkIChmb2xkcykgKyAlZCAoemVyb3MpIiAlCisgICAgICAgICAgICAgICgoc3VtKHRyYW5zX2NvdW50cyksKSArIHRyYW5zX2NvdW50cykpCisgICAgICAgIHByaW50KCJNaW4gZ2FwOiAgICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1pbl9nYXAsIG1pbl9nYXBfZGF0ZXRpbWUsIG1pbl9nYXBfem9uZSkpCisgICAgICAgIHByaW50KCJNYXggZ2FwOiAgICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1heF9nYXAsIG1heF9nYXBfZGF0ZXRpbWUsIG1heF9nYXBfem9uZSkpCisgICAgICAgIHByaW50KCJNaW4gZm9sZDogICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1pbl9mb2xkLCBtaW5fZm9sZF9kYXRldGltZSwgbWluX2ZvbGRfem9uZSkpCisgICAgICAgIHByaW50KCJNYXggZm9sZDogICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1heF9mb2xkLCBtYXhfZm9sZF9kYXRldGltZSwgbWF4X2ZvbGRfem9uZSkpCisKKworICAgIGRlZiB0cmFuc2l0aW9ucyhzZWxmKToKKyAgICAgICAgZm9yIChfLCBwcmV2X3RpKSwgKHQsIHRpKSBpbiBwYWlycyh6aXAoc2VsZi51dCwgc2VsZi50aSkpOgorICAgICAgICAgICAgc2hpZnQgPSB0aVswXSAtIHByZXZfdGlbMF0KKyAgICAgICAgICAgIHlpZWxkIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodCksIHNoaWZ0CisKKyAgICBkZWYgbm9uZHN0X2ZvbGRzKHNlbGYpOgorICAgICAgICAiIiJGaW5kIGFsbCBmb2xkcyB3aXRoIHRoZSBzYW1lIHZhbHVlIG9mIGlzZHN0IG9uIGJvdGggc2lkZXMgb2YgdGhlIHRyYW5zaXRpb24uIiIiCisgICAgICAgIGZvciAoXywgcHJldl90aSksICh0LCB0aSkgaW4gcGFpcnMoemlwKHNlbGYudXQsIHNlbGYudGkpKToKKyAgICAgICAgICAgIHNoaWZ0ID0gdGlbMF0gLSBwcmV2X3RpWzBdCisgICAgICAgICAgICBpZiBzaGlmdCA8IFpFUk8gYW5kIHRpWzFdID09IHByZXZfdGlbMV06CisgICAgICAgICAgICAgICAgeWllbGQgZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0KSwgLXNoaWZ0LCBwcmV2X3RpWzJdLCB0aVsyXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHByaW50X2FsbF9ub25kc3RfZm9sZHMoY2xzLCBzYW1lX2FiYnI9RmFsc2UsIHN0YXJ0X3llYXI9MSk6CisgICAgICAgIGNvdW50ID0gMAorICAgICAgICBmb3Igem9uZW5hbWUgaW4gY2xzLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgdHogPSBjbHMuZnJvbW5hbWUoem9uZW5hbWUpCisgICAgICAgICAgICBmb3IgZHQsIHNoaWZ0LCBwcmV2X2FiYnIsIGFiYnIgaW4gdHoubm9uZHN0X2ZvbGRzKCk6CisgICAgICAgICAgICAgICAgaWYgZHQueWVhciA8IHN0YXJ0X3llYXIgb3Igc2FtZV9hYmJyIGFuZCBwcmV2X2FiYnIgIT0gYWJicjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICAgICAgcHJpbnQoIiUzZCkgJS0zMHMgJXMgJTEwcyAlNXMgLT4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAoY291bnQsIHpvbmVuYW1lLCBkdCwgc2hpZnQsIHByZXZfYWJiciwgYWJicikpCisKKyAgICBkZWYgZm9sZHMoc2VsZik6CisgICAgICAgIGZvciB0LCBzaGlmdCBpbiBzZWxmLnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICBpZiBzaGlmdCA8IFpFUk86CisgICAgICAgICAgICAgICAgeWllbGQgdCwgLXNoaWZ0CisKKyAgICBkZWYgZ2FwcyhzZWxmKToKKyAgICAgICAgZm9yIHQsIHNoaWZ0IGluIHNlbGYudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgIGlmIHNoaWZ0ID4gWkVSTzoKKyAgICAgICAgICAgICAgICB5aWVsZCB0LCBzaGlmdAorCisgICAgZGVmIHplcm9zKHNlbGYpOgorICAgICAgICBmb3IgdCwgc2hpZnQgaW4gc2VsZi50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgaWYgbm90IHNoaWZ0OgorICAgICAgICAgICAgICAgIHlpZWxkIHQKKworCitjbGFzcyBab25lSW5mb1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHpvbmVuYW1lID0gJ0FtZXJpY2EvTmV3X1lvcmsnCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgem9uZWluZm8gdGVzdHMgb24gV2luZG93cyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudHogPSBab25lSW5mby5mcm9tbmFtZShzZWxmLnpvbmVuYW1lKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgJXM6ICVzIiAlIChzZWxmLnpvbmVuYW1lLCBlcnIpKQorCisgICAgZGVmIGFzc2VydEVxdWl2RGF0ZXRpbWVzKHNlbGYsIGEsIGIpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhLnJlcGxhY2UodHppbmZvPU5vbmUpLCBhLmZvbGQsIGlkKGEudHppbmZvKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKGIucmVwbGFjZSh0emluZm89Tm9uZSksIGIuZm9sZCwgaWQoYi50emluZm8pKSkKKworICAgIGRlZiB0ZXN0X2ZvbGRzKHNlbGYpOgorICAgICAgICB0eiA9IHNlbGYudHoKKyAgICAgICAgZm9yIGR0LCBzaGlmdCBpbiB0ei5mb2xkcygpOgorICAgICAgICAgICAgZm9yIHggaW4gWzAgKiBzaGlmdCwgMC41ICogc2hpZnQsIHNoaWZ0IC0gdGltZWRlbHRhLnJlc29sdXRpb25dOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGModWR0LnJlcGxhY2UodHppbmZvPXR6KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAxKQorICAgICAgICAgICAgICAgIGFkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpLmFzdGltZXpvbmUodHopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhhZHQsIGxkdCkKKyAgICAgICAgICAgICAgICB1dGNvZmZzZXQgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSwgdWR0ICsgdXRjb2Zmc2V0KQorICAgICAgICAgICAgICAgICMgUm91bmQgdHJpcAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMobGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpKQorCisKKyAgICAgICAgICAgIGZvciB4IGluIFstdGltZWRlbHRhLnJlc29sdXRpb24sIHNoaWZ0XToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICB1ZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dHopCisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKworICAgIGRlZiB0ZXN0X2dhcHMoc2VsZik6CisgICAgICAgIHR6ID0gc2VsZi50egorICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LmdhcHMoKToKKyAgICAgICAgICAgIGZvciB4IGluIFswICogc2hpZnQsIDAuNSAqIHNoaWZ0LCBzaGlmdCAtIHRpbWVkZWx0YS5yZXNvbHV0aW9uXToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICB1ZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dHopCisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgICAgICAgICBhZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dGltZXpvbmUudXRjKS5hc3RpbWV6b25lKHR6KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMoYWR0LCBsZHQpCisgICAgICAgICAgICAgICAgdXRjb2Zmc2V0ID0gbGR0LnV0Y29mZnNldCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQucmVwbGFjZSh0emluZm89Tm9uZSksIHVkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSArIHV0Y29mZnNldCkKKyAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIGxvY2FsIHRpbWUgaW5zaWRlIHRoZSBnYXAKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKGR0LnJlcGxhY2UodHppbmZvPXR6KSkgLSBzaGlmdCArIHgKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGR0LnJlcGxhY2UoZm9sZD0xKS51dGNvZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGR0LnJlcGxhY2UoZm9sZD0wKS51dGNvZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0ICVzLiIgJSBsZHQpCisKKyAgICAgICAgICAgIGZvciB4IGluIFstdGltZWRlbHRhLnJlc29sdXRpb24sIHNoaWZ0XToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKHVkdC5yZXBsYWNlKHR6aW5mbz10eikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKworICAgIGRlZiB0ZXN0X3N5c3RlbV90cmFuc2l0aW9ucyhzZWxmKToKKyAgICAgICAgaWYgKCdSaXlhZGg4JyBpbiBzZWxmLnpvbmVuYW1lIG9yCisgICAgICAgICAgICAjIEZyb20gdHpkYXRhIE5FV1MgZmlsZToKKyAgICAgICAgICAgICMgVGhlIGZpbGVzIHNvbGFyODcsIHNvbGFyODgsIGFuZCBzb2xhcjg5IGFyZSBubyBsb25nZXIgZGlzdHJpYnV0ZWQuCisgICAgICAgICAgICAjIFRoZXkgd2VyZSBhIG5lZ2F0aXZlIGV4cGVyaW1lbnQgLSB0aGF0IGlzLCBhIGRlbW9uc3RyYXRpb24gdGhhdAorICAgICAgICAgICAgIyB0eiBkYXRhIGNhbiByZXByZXNlbnQgc29sYXIgdGltZSBvbmx5IHdpdGggc29tZSBkaWZmaWN1bHR5IGFuZCBlcnJvci4KKyAgICAgICAgICAgICMgVGhlaXIgcHJlc2VuY2UgaW4gdGhlIGRpc3RyaWJ1dGlvbiBjYXVzZWQgY29uZnVzaW9uLCBhcyBSaXlhZGgKKyAgICAgICAgICAgICMgY2l2aWwgdGltZSB3YXMgZ2VuZXJhbGx5IG5vdCBzb2xhciB0aW1lIGluIHRob3NlIHllYXJzLgorICAgICAgICAgICAgICAgIHNlbGYuem9uZW5hbWUuc3RhcnRzd2l0aCgncmlnaHQvJykpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgJXMiICUgc2VsZi56b25lbmFtZSkKKyAgICAgICAgdHogPSBzZWxmLnR6CisgICAgICAgIFRaID0gb3MuZW52aXJvbi5nZXQoJ1RaJykKKyAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IHNlbGYuem9uZW5hbWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3RpbWUudHpzZXQoKQorICAgICAgICAgICAgZm9yIHVkdCwgc2hpZnQgaW4gdHoudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgICAgICBpZiB1ZHQueWVhciA+PSAyMDM3OgorICAgICAgICAgICAgICAgICAgICAjIFN5c3RlbSBzdXBwb3J0IGZvciB0aW1lcyBhcm91bmQgdGhlIGVuZCBvZiAzMi1iaXQgdGltZV90CisgICAgICAgICAgICAgICAgICAgICMgYW5kIGxhdGVyIGlzIGZsYWt5IG9uIG1hbnkgc3lzdGVtcy4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzMCA9ICh1ZHQgLSBkYXRldGltZSgxOTcwLCAxLCAxKSkgLy8gU0VDCisgICAgICAgICAgICAgICAgc3MgPSBzaGlmdCAvLyBTRUMgICAjIHNoaWZ0IHNlY29uZHMKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiBbLTQwICogMzYwMCwgLTIwKjM2MDAsIC0xLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzcyAtIDEsIHNzICsgMjAgKiAzNjAwLCBzcyArIDQwICogMzYwMF06CisgICAgICAgICAgICAgICAgICAgIHMgPSBzMCArIHgKKyAgICAgICAgICAgICAgICAgICAgc2R0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICAgICAgICAgICAgICB0emR0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzLCB0eikucmVwbGFjZSh0emluZm89Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhzZHQsIHR6ZHQpCisgICAgICAgICAgICAgICAgICAgIHMxID0gc2R0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgczEpCisgICAgICAgICAgICAgICAgaWYgc3MgPiAwOiAgIyBnYXAKKyAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgbG9jYWwgdGltZSBpbnNpZGUgdGhlIGdhcAorICAgICAgICAgICAgICAgICAgICBkdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAoczApIC0gc2hpZnQgLyAyCisgICAgICAgICAgICAgICAgICAgIHRzMCA9IGR0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHRzMSA9IGR0LnJlcGxhY2UoZm9sZD0xKS50aW1lc3RhbXAoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRzMCwgczAgKyBzcyAvIDIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHMxLCBzMCAtIHNzIC8gMikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIFRaIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1RaJ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IFRaCisgICAgICAgICAgICBfdGltZS50enNldCgpCisKKworY2xhc3MgWm9uZUluZm9Db21wbGV0ZVRlc3QodW5pdHRlc3QuVGVzdFN1aXRlKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHRlc3RzID0gW10KKyAgICAgICAgaWYgaXNfcmVzb3VyY2VfZW5hYmxlZCgndHpkYXRhJyk6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiBab25lSW5mby56b25lbmFtZXMoKToKKyAgICAgICAgICAgICAgICBUZXN0ID0gdHlwZSgnWm9uZUluZm9UZXN0WyVzXScgJSBuYW1lLCAoWm9uZUluZm9UZXN0LCksIHt9KQorICAgICAgICAgICAgICAgIFRlc3Quem9uZW5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiBkaXIoVGVzdCk6CisgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZC5zdGFydHN3aXRoKCd0ZXN0XycpOgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3QobWV0aG9kKSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyh0ZXN0cykKKworIyBJcmFuIGhhZCBhIHN1Yi1taW51dGUgVVRDIG9mZnNldCBiZWZvcmUgMTk0Ni4KK2NsYXNzIElyYW5UZXN0KFpvbmVJbmZvVGVzdCk6CisgICAgem9uZW5hbWUgPSAnQXNpYS9UZWhyYW4nCisKK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIHBhdHRlcm4pOgorICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3QoWm9uZUluZm9Db21wbGV0ZVRlc3QoKSkKKyAgICByZXR1cm4gc3RhbmRhcmRfdGVzdHMKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjJkNGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLmQKQEAgLTAsMCArMSw1IEBACitCRUdJTgoreworICAgIHByaW50ZigicHJvYmU6IHN1Y2Nlc3NcbiIpOworICAgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGU3ZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLnN0cApAQCAtMCwwICsxLDUgQEAKK3Byb2JlIGJlZ2luCit7CisgIHByaW50bG4oInByb2JlOiBzdWNjZXNzIikKKyAgZXhpdCAoKQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTBlOTM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQKQEAgLTAsMCArMSwzMSBAQAorc2VsZiBpbnQgaW5kZW50OworCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDE7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorL3NlbGYtPnRyYWNlLworeworICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgIHByaW50ZigiJSpzIiwgc2VsZi0+aW5kZW50LCAiIik7IAorICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgc2VsZi0+aW5kZW50Kys7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKy9zZWxmLT50cmFjZS8KK3sKKyAgICBzZWxmLT5pbmRlbnQtLTsKKyAgICBwcmludGYoIiVkXHQlKnM6IiwgdGltZXN0YW1wLCAxNSwgcHJvYmVuYW1lKTsKKyAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOyAKKyAgICBwcmludGYoIiVzOiVzOiVkXG4iLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLCBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAwOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzg0OWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSwxOCBAQAorIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjUKKyBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCisgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uLXJldHVybjogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjE0CisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2Z1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2sucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU5ZjNhZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5weQpAQCAtMCwwICsxLDMwIEBACitkZWYgZnVuY3Rpb25fMSgpOgorICAgIGZ1bmN0aW9uXzMoMSwgMikKKworIyBDaGVjayBzdGFja3RyYWNlCitkZWYgZnVuY3Rpb25fMigpOgorICAgIGZ1bmN0aW9uXzEoKQorCisjIENBTExfRlVOQ1RJT05fVkFSCitkZWYgZnVuY3Rpb25fMyhkdW1teSwgZHVtbXkyKToKKyAgICBwYXNzCisKKyMgQ0FMTF9GVU5DVElPTl9LVworZGVmIGZ1bmN0aW9uXzQoKipkdW1teSk6CisgICAgcmV0dXJuIDEKKyAgICByZXR1cm4gMiAgIyB1bnJlYWNoYWJsZQorCisjIENBTExfRlVOQ1RJT05fVkFSX0tXCitkZWYgZnVuY3Rpb25fNShkdW1teSwgZHVtbXkyLCAqKmR1bW15Myk6CisgICAgaWYgRmFsc2U6CisgICAgICAgIHJldHVybiA3CisgICAgcmV0dXJuIDgKKworZGVmIHN0YXJ0KCk6CisgICAgZnVuY3Rpb25fMSgpCisgICAgZnVuY3Rpb25fMigpCisgICAgZnVuY3Rpb25fMygxLCAyKQorICAgIGZ1bmN0aW9uXzQodGVzdD00MikKKyAgICBmdW5jdGlvbl81KCooMSwgMiksICoqeyJ0ZXN0IjogNDJ9KQorCitzdGFydCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDA4MmMyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cApAQCAtMCwwICsxLDQxIEBACitnbG9iYWwgdHJhY2luZworCitmdW5jdGlvbiBiYXNlbmFtZTpzdHJpbmcocGF0aDpzdHJpbmcpCit7CisgICAgbGFzdF90b2tlbiA9IHRva2VuID0gdG9rZW5pemUocGF0aCwgIi8iKTsKKyAgICB3aGlsZSAodG9rZW4gIT0gIiIpIHsKKyAgICAgICAgbGFzdF90b2tlbiA9IHRva2VuOworICAgICAgICB0b2tlbiA9IHRva2VuaXplKCIiLCAiLyIpOworICAgIH0KKyAgICByZXR1cm4gbGFzdF90b2tlbjsKK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDE7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpLCBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgIGxpbmVubyA9ICRhcmczOworCisgICAgaWYgKHRyYWNpbmcpIHsKKyAgICAgICAgcHJpbnRmKCIlZFx0JXM6JXM6JXM6JWRcbiIsIGdldHRpbWVvZmRheV91cygpLCAkJG5hbWUsCisgICAgICAgICAgICAgICBiYXNlbmFtZShmaWxlbmFtZSksIGZ1bmNuYW1lLCBsaW5lbm8pOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyY2YzOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwLmV4cGVjdGVkCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjEzCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkOTE0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQKQEAgLTAsMCArMSwxOCBAQAorcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAxOworfQorCitweXRob24kdGFyZ2V0Ojo6Z2Mtc3RhcnQsCitweXRob24kdGFyZ2V0Ojo6Z2MtZG9uZQorL3NlbGYtPnRyYWNlLworeworICAgIHByaW50ZigiJWRcdCVzOiVsZFxuIiwgdGltZXN0YW1wLCBwcm9iZW5hbWUsIGFyZzApOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAwOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNWFjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSw4IEBACitnYy1zdGFydDowCitnYy1kb25lOjAKK2djLXN0YXJ0OjEKK2djLWRvbmU6MAorZ2Mtc3RhcnQ6MgorZ2MtZG9uZTowCitnYy1zdGFydDoyCitnYy1kb25lOjEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NGE3ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnB5CkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBnYworCitkZWYgc3RhcnQoKToKKyAgICBnYy5jb2xsZWN0KDApCisgICAgZ2MuY29sbGVjdCgxKQorICAgIGdjLmNvbGxlY3QoMikKKyAgICBsID0gW10KKyAgICBsLmFwcGVuZChsKQorICAgIGRlbCBsCisgICAgZ2MuY29sbGVjdCgyKQorCitnYy5jb2xsZWN0KCkKK3N0YXJ0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyYzZkMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwCkBAIC0wLDAgKzEsMjYgQEAKK2dsb2JhbCB0cmFjaW5nCisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX2VudHJ5IikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAxOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJnY19fc3RhcnQiKSwgcHJvY2Vzcy5tYXJrKCJnY19fZG9uZSIpCit7CisgICAgaWYgKHRyYWNpbmcpIHsKKyAgICAgICAgcHJpbnRmKCIlZFx0JXM6JWxkXG4iLCBnZXR0aW1lb2ZkYXlfdXMoKSwgJCRuYW1lLCAkYXJnMSk7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTZlNjIyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAuZXhwZWN0ZWQKQEAgLTAsMCArMSw4IEBACitnY19fc3RhcnQ6MAorZ2NfX2RvbmU6MAorZ2NfX3N0YXJ0OjEKK2djX19kb25lOjAKK2djX19zdGFydDoyCitnY19fZG9uZTowCitnY19fc3RhcnQ6MgorZ2NfX2RvbmU6MQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9pbnN0YW5jZS5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvaW5zdGFuY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE0MjEzNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvaW5zdGFuY2UucHkKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGdjCisKK2NsYXNzIG9sZF9zdHlsZV9jbGFzcygpOgorICAgIHBhc3MKK2NsYXNzIG5ld19zdHlsZV9jbGFzcyhvYmplY3QpOgorICAgIHBhc3MKKworYSA9IG9sZF9zdHlsZV9jbGFzcygpCitkZWwgYQorZ2MuY29sbGVjdCgpCitiID0gbmV3X3N0eWxlX2NsYXNzKCkKK2RlbCBiCitnYy5jb2xsZWN0KCkKKworYSA9IG9sZF9zdHlsZV9jbGFzcygpCitkZWwgb2xkX3N0eWxlX2NsYXNzCitnYy5jb2xsZWN0KCkKK2IgPSBuZXdfc3R5bGVfY2xhc3MoKQorZGVsIG5ld19zdHlsZV9jbGFzcworZ2MuY29sbGVjdCgpCitkZWwgYQorZ2MuY29sbGVjdCgpCitkZWwgYgorZ2MuY29sbGVjdCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjIyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZApAQCAtMCwwICsxLDcgQEAKK3B5dGhvbiR0YXJnZXQ6OjpsaW5lCisvKGNvcHlpbnN0cihhcmcxKT09InRlc3RfbGluZSIpLworeworICAgIHByaW50ZigiJWRcdCVzOiVzOiVzOiVkXG4iLCB0aW1lc3RhbXAsCisgICAgICAgIHByb2JlbmFtZSwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwKKyAgICAgICAgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIxNmNlNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kLmV4cGVjdGVkCkBAIC0wLDAgKzEsMjAgQEAKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MgorbGluZTpsaW5lLnB5OnRlc3RfbGluZTozCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo2CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjcKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6OAorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo5CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEwCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjExCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo2CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjcKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6OAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo0CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEyCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzMGZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5weQpAQCAtMCwwICsxLDE3IEBACitkZWYgdGVzdF9saW5lKCk6CisgICAgYSA9IDEKKyAgICBwcmludCgnIyBQcmVhbWJsZScsIGEpCisgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgIGEgPSBpCisgICAgICAgIGIgPSBpKzIKKyAgICAgICAgYyA9IGkrMworICAgICAgICBpZiBjIDwgNDoKKyAgICAgICAgICAgIGEgPSBjCisgICAgICAgIGQgPSBhICsgYiArYworICAgICAgICBwcmludCgnIycsIGEsIGIsIGMsIGQpCisgICAgYSA9IDEKKyAgICBwcmludCgnIyBFcGlsb2d1ZScsIGEpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X2xpbmUoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weSBiL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkKaW5kZXggZTNmMWFhNS4uOWZiZTA0ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weQorKysgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CkBAIC05LDcgKzksNyBAQAogIiIiCiAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgaW8KK2ltcG9ydCBmYXVsdGhhbmRsZXIKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbApAQCAtNTAsNiArNTAsMTAgQEAKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIGNscy5zaWduYWxfZGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNpZ25hbF9wZXJpb2QpCiAKKyAgICAgICAgIyBJc3N1ZSAjMjUyNzc6IFVzZSBmYXVsdGhhbmRsZXIgdG8gdHJ5IHRvIGRlYnVnIGEgaGFuZyBvbiBGcmVlQlNECisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigxMCAqIDYwLCBleGl0PVRydWUpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc3RvcF9hbGFybShjbHMpOgogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgMCwgMCkKQEAgLTU4LDYgKzYyLDggQEAKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgogICAgICAgICBjbHMuc3RvcF9hbGFybSgpCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGNscy5vcmlnX2hhbmRsZXIpCisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKIAogICAgIGRlZiBzdWJwcm9jZXNzKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICAgY21kX2FyZ3MgPSAoc3lzLmV4ZWN1dGFibGUsICctYycpICsgYXJncwpAQCAtNzcsNiArODMsOSBAQAogICAgICAgICBwcm9jZXNzZXMgPSBbc2VsZi5uZXdfc2xlZXBfcHJvY2VzcygpIGZvciBfIGluIHJhbmdlKG51bSldCiAgICAgICAgIGZvciBfIGluIHJhbmdlKG51bSk6CiAgICAgICAgICAgICB3YWl0X2Z1bmMoKQorICAgICAgICAjIENhbGwgdGhlIFBvcGVuIG1ldGhvZCB0byBhdm9pZCBhIFJlc291cmNlV2FybmluZworICAgICAgICBmb3IgcHJvYyBpbiBwcm9jZXNzZXM6CisgICAgICAgICAgICBwcm9jLndhaXQoKQogCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF93YWl0X211bHRpcGxlKG9zLndhaXQpCkBAIC04OCw2ICs5Nyw4IEBACiAgICAgZGVmIF90ZXN0X3dhaXRfc2luZ2xlKHNlbGYsIHdhaXRfZnVuYyk6CiAgICAgICAgIHByb2MgPSBzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkKICAgICAgICAgd2FpdF9mdW5jKHByb2MucGlkKQorICAgICAgICAjIENhbGwgdGhlIFBvcGVuIG1ldGhvZCB0byBhdm9pZCBhIFJlc291cmNlV2FybmluZworICAgICAgICBwcm9jLndhaXQoKQogCiAgICAgZGVmIHRlc3Rfd2FpdHBpZChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF93YWl0X3NpbmdsZShsYW1iZGEgcGlkOiBvcy53YWl0cGlkKHBpZCwgMCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dCBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CmluZGV4IDA1MTM3NjUuLjczMzNiMmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CisrKyBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgICArLS0gQnVmZmVyRXJyb3IKICAgICAgICstLSBFT0ZFcnJvcgogICAgICAgKy0tIEltcG9ydEVycm9yCisgICAgICAgICAgICstLSBNb2R1bGVOb3RGb3VuZEVycm9yCiAgICAgICArLS0gTG9va3VwRXJyb3IKICAgICAgIHwgICAgKy0tIEluZGV4RXJyb3IKICAgICAgIHwgICAgKy0tIEtleUVycm9yCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTBlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDUgQEAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKKworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LmNtZGxpbmUgaW1wb3J0IF9wYXJzZV9hcmdzLCBSRVNPVVJDRV9OQU1FUworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0Lm1haW4gaW1wb3J0IG1haW4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L2NtZGxpbmUucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9jbWRsaW5lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZTJmM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9jbWRsaW5lLnB5CkBAIC0wLDAgKzEsMzQ0IEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworVVNBR0UgPSAiIiJcCitweXRob24gLW0gdGVzdCBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgW3Rlc3RfbmFtZTIgLi4uXV0KK3B5dGhvbiBwYXRoL3RvL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQorIiIiCisKK0RFU0NSSVBUSU9OID0gIiIiXAorUnVuIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLgorCitJZiBubyBhcmd1bWVudHMgb3Igb3B0aW9ucyBhcmUgcHJvdmlkZWQsIGZpbmRzIGFsbCBmaWxlcyBtYXRjaGluZwordGhlIHBhdHRlcm4gInRlc3RfKiIgaW4gdGhlIExpYi90ZXN0IHN1YmRpcmVjdG9yeSBhbmQgcnVucwordGhlbSBpbiBhbHBoYWJldGljYWwgb3JkZXIgKGJ1dCBzZWUgLU0gYW5kIC11LCBiZWxvdywgZm9yIGV4Y2VwdGlvbnMpLgorCitGb3IgbW9yZSByaWdvcm91cyB0ZXN0aW5nLCBpdCBpcyB1c2VmdWwgdG8gdXNlIHRoZSBmb2xsb3dpbmcKK2NvbW1hbmQgbGluZToKKworcHl0aG9uIC1FIC1XZCAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSAuLi5dCisiIiIKKworRVBJTE9HID0gIiIiXAorQWRkaXRpb25hbCBvcHRpb24gZGV0YWlsczoKKworLXIgcmFuZG9taXplcyB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4gWW91IGNhbiB1c2UgLS1yYW5kc2VlZD1pbnQgdG8gcHJvdmlkZSBhbgoraW50IHNlZWQgdmFsdWUgZm9yIHRoZSByYW5kb21pemVyOyB0aGlzIGlzIHVzZWZ1bCBmb3IgcmVwcm9kdWNpbmcgdHJvdWJsZXNvbWUKK3Rlc3Qgb3JkZXJzLgorCistcyBPbiB0aGUgZmlyc3QgaW52b2NhdGlvbiBvZiByZWdydGVzdCB1c2luZyAtcywgdGhlIGZpcnN0IHRlc3QgZmlsZSBmb3VuZAorb3IgdGhlIGZpcnN0IHRlc3QgZmlsZSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIHJ1biwgYW5kIHRoZSBuYW1lIG9mCit0aGUgbmV4dCB0ZXN0IGlzIHJlY29yZGVkIGluIGEgZmlsZSBuYW1lZCBweW5leHR0ZXN0LiAgSWYgcnVuIGZyb20gdGhlCitQeXRob24gYnVpbGQgZGlyZWN0b3J5LCBweW5leHR0ZXN0IGlzIGxvY2F0ZWQgaW4gdGhlICdidWlsZCcgc3ViZGlyZWN0b3J5LAorb3RoZXJ3aXNlIGl0IGlzIGxvY2F0ZWQgaW4gdGVtcGZpbGUuZ2V0dGVtcGRpcigpLiAgT24gc3Vic2VxdWVudCBydW5zLAordGhlIHRlc3QgaW4gcHluZXh0dGVzdCBpcyBydW4sIGFuZCB0aGUgbmV4dCB0ZXN0IGlzIHdyaXR0ZW4gdG8gcHluZXh0dGVzdC4KK1doZW4gdGhlIGxhc3QgdGVzdCBoYXMgYmVlbiBydW4sIHB5bmV4dHRlc3QgaXMgZGVsZXRlZC4gIEluIHRoaXMgd2F5IGl0CitpcyBwb3NzaWJsZSB0byBzaW5nbGUgc3RlcCB0aHJvdWdoIHRoZSB0ZXN0IGZpbGVzLiAgVGhpcyBpcyB1c2VmdWwgd2hlbgorZG9pbmcgbWVtb3J5IGFuYWx5c2lzIG9uIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIHdoaWNoIHByb2Nlc3MgdGVuZHMgdG8KK2NvbnN1bWUgdG9vIG1hbnkgcmVzb3VyY2VzIHRvIHJ1biB0aGUgZnVsbCByZWdyZXNzaW9uIHRlc3Qgbm9uLXN0b3AuCisKKy1TIGlzIHVzZWQgdG8gY29udGludWUgcnVubmluZyB0ZXN0cyBhZnRlciBhbiBhYm9ydGVkIHJ1bi4gIEl0IHdpbGwKK21haW50YWluIHRoZSBvcmRlciBhIHN0YW5kYXJkIHJ1biAoaWUsIHRoaXMgYXNzdW1lcyAtciBpcyBub3QgdXNlZCkuCitUaGlzIGlzIHVzZWZ1bCBhZnRlciB0aGUgdGVzdHMgaGF2ZSBwcmVtYXR1cmVseSBzdG9wcGVkIGZvciBzb21lIGV4dGVybmFsCityZWFzb24gYW5kIHlvdSB3YW50IHRvIHN0YXJ0IHJ1bm5pbmcgZnJvbSB3aGVyZSB5b3UgbGVmdCBvZmYgcmF0aGVyCit0aGFuIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZy4KKworLWYgcmVhZHMgdGhlIG5hbWVzIG9mIHRlc3RzIGZyb20gdGhlIGZpbGUgZ2l2ZW4gYXMgZidzIGFyZ3VtZW50LCBvbmUKK29yIG1vcmUgdGVzdCBuYW1lcyBwZXIgbGluZS4gIFdoaXRlc3BhY2UgaXMgaWdub3JlZC4gIEJsYW5rIGxpbmVzIGFuZAorbGluZXMgYmVnaW5uaW5nIHdpdGggJyMnIGFyZSBpZ25vcmVkLiAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IKK3doaXR0bGluZyBkb3duIGZhaWx1cmVzIGludm9sdmluZyBpbnRlcmFjdGlvbnMgYW1vbmcgdGVzdHMuCisKKy1MIGNhdXNlcyB0aGUgbGVha3MoMSkgY29tbWFuZCB0byBiZSBydW4ganVzdCBiZWZvcmUgZXhpdCBpZiBpdCBleGlzdHMuCitsZWFrcygxKSBpcyBhdmFpbGFibGUgb24gTWFjIE9TIFggYW5kIHByZXN1bWFibHkgb24gc29tZSBvdGhlcgorRnJlZUJTRC1kZXJpdmVkIHN5c3RlbXMuCisKKy1SIHJ1bnMgZWFjaCB0ZXN0IHNldmVyYWwgdGltZXMgYW5kIGV4YW1pbmVzIHN5cy5nZXR0b3RhbHJlZmNvdW50KCkgdG8KK3NlZSBpZiB0aGUgdGVzdCBhcHBlYXJzIHRvIGJlIGxlYWtpbmcgcmVmZXJlbmNlcy4gIFRoZSBhcmd1bWVudCBzaG91bGQKK2JlIG9mIHRoZSBmb3JtIHN0YWI6cnVuOmZuYW1lIHdoZXJlICdzdGFiJyBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZQordGVzdCBpcyBydW4gdG8gbGV0IGdldHRvdGFscmVmY291bnQgc2V0dGxlIGRvd24sICdydW4nIGlzIHRoZSBudW1iZXIKK29mIHRpbWVzIGZ1cnRoZXIgaXQgaXMgcnVuIGFuZCAnZm5hbWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRoZQorcmVwb3J0cyBhcmUgd3JpdHRlbiB0by4gIFRoZXNlIHBhcmFtZXRlcnMgYWxsIGhhdmUgZGVmYXVsdHMgKDUsIDQgYW5kCisicmVmbG9nLnR4dCIgcmVzcGVjdGl2ZWx5KSwgYW5kIHRoZSBtaW5pbWFsIGludm9jYXRpb24gaXMgJy1SIDonLgorCistTSBydW5zIHRlc3RzIHRoYXQgcmVxdWlyZSBhbiBleG9yYml0YW50IGFtb3VudCBvZiBtZW1vcnkuIFRoZXNlIHRlc3RzCit0eXBpY2FsbHkgdHJ5IHRvIGFzY2VydGFpbiBjb250YWluZXJzIGtlZXAgd29ya2luZyB3aGVuIGNvbnRhaW5pbmcgbW9yZSB0aGFuCisyIGJpbGxpb24gb2JqZWN0cywgd2hpY2ggb25seSB3b3JrcyBvbiA2NC1iaXQgc3lzdGVtcy4gVGhlcmUgYXJlIGFsc28gc29tZQordGVzdHMgdGhhdCB0cnkgdG8gZXhoYXVzdCB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGUgcHJvY2Vzcywgd2hpY2ggb25seSBtYWtlcworc2Vuc2Ugb24gMzItYml0IHN5c3RlbXMgd2l0aCBhdCBsZWFzdCAyR2Igb2YgbWVtb3J5LiBUaGUgcGFzc2VkLWluIG1lbWxpbWl0LAord2hpY2ggaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YgJzIuNUdiJywgZGV0ZXJtaW5lcyBob3dtdWNoIG1lbW9yeSB0aGUKK3Rlc3RzIHdpbGwgbGltaXQgdGhlbXNlbHZlcyB0byAoYnV0IHRoZXkgbWF5IGdvIHNsaWdodGx5IG92ZXIuKSBUaGUgbnVtYmVyCitzaG91bGRuJ3QgYmUgbW9yZSBtZW1vcnkgdGhhbiB0aGUgbWFjaGluZSBoYXMgKGluY2x1ZGluZyBzd2FwIG1lbW9yeSkuIFlvdQorc2hvdWxkIGFsc28ga2VlcCBpbiBtaW5kIHRoYXQgc3dhcCBtZW1vcnkgaXMgZ2VuZXJhbGx5IG11Y2gsIG11Y2ggc2xvd2VyCit0aGFuIFJBTSwgYW5kIHNldHRpbmcgbWVtbGltaXQgdG8gYWxsIGF2YWlsYWJsZSBSQU0gb3IgaGlnaGVyIHdpbGwgaGVhdmlseQordGF4IHRoZSBtYWNoaW5lLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaXMgbm8gdXNlIHJ1bm5pbmcgdGhlc2UgdGVzdHMgd2l0aCBhCitsaW1pdCBvZiBsZXNzIHRoYW4gMi41R2IsIGFuZCBtYW55IHJlcXVpcmUgbW9yZSB0aGFuIDIwR2IuIFRlc3RzIHRoYXQgZXhwZWN0Cit0byB1c2UgbW9yZSB0aGFuIG1lbWxpbWl0IG1lbW9yeSB3aWxsIGJlIHNraXBwZWQuIFRoZSBiaWctbWVtb3J5IHRlc3RzCitnZW5lcmFsbHkgcnVuIHZlcnksIHZlcnkgbG9uZy4KKworLXUgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzIHRvIHJ1biwKK3N1Y2ggYXMgdGhvc2UgcmVxdWlyaW5nIGxhcmdlIGZpbGUgc3VwcG9ydCBvciBuZXR3b3JrIGNvbm5lY3Rpdml0eS4KK1RoZSBhcmd1bWVudCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHdvcmRzIGluZGljYXRpbmcgdGhlCityZXNvdXJjZXMgdG8gdGVzdC4gIEN1cnJlbnRseSBvbmx5IHRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQ6CisKKyAgICBhbGwgLSAgICAgICBFbmFibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzLgorCisgICAgbm9uZSAtICAgICAgRGlzYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLgorCisgICAgYXVkaW8gLSAgICAgVGVzdHMgdGhhdCB1c2UgdGhlIGF1ZGlvIGRldmljZS4gIChUaGVyZSBhcmUga25vd24KKyAgICAgICAgICAgICAgICBjYXNlcyBvZiBicm9rZW4gYXVkaW8gZHJpdmVycyB0aGF0IGNhbiBjcmFzaCBQeXRob24gb3IKKyAgICAgICAgICAgICAgICBldmVuIHRoZSBMaW51eCBrZXJuZWwuKQorCisgICAgY3Vyc2VzIC0gICAgVGVzdHMgdGhhdCB1c2UgY3Vyc2VzIGFuZCB3aWxsIG1vZGlmeSB0aGUgdGVybWluYWwncworICAgICAgICAgICAgICAgIHN0YXRlIGFuZCBvdXRwdXQgbW9kZXMuCisKKyAgICBsYXJnZWZpbGUgLSBJdCBpcyBva2F5IHRvIHJ1biBzb21lIHRlc3QgdGhhdCBtYXkgY3JlYXRlIGh1Z2UKKyAgICAgICAgICAgICAgICBmaWxlcy4gIFRoZXNlIHRlc3RzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBtYXkKKyAgICAgICAgICAgICAgICBjb25zdW1lID4yR0Igb2YgZGlzayBzcGFjZSB0ZW1wb3JhcmlseS4KKworICAgIG5ldHdvcmsgLSAgIEl0IGlzIG9rYXkgdG8gcnVuIHRlc3RzIHRoYXQgdXNlIGV4dGVybmFsIG5ldHdvcmsKKyAgICAgICAgICAgICAgICByZXNvdXJjZSwgZS5nLiB0ZXN0aW5nIFNTTCBzdXBwb3J0IGZvciBzb2NrZXRzLgorCisgICAgZGVjaW1hbCAtICAgVGVzdCB0aGUgZGVjaW1hbCBtb2R1bGUgYWdhaW5zdCBhIGxhcmdlIHN1aXRlIHRoYXQKKyAgICAgICAgICAgICAgICB2ZXJpZmllcyBjb21wbGlhbmNlIHdpdGggc3RhbmRhcmRzLgorCisgICAgY3B1IC0gICAgICAgVXNlZCBmb3IgY2VydGFpbiBDUFUtaGVhdnkgdGVzdHMuCisKKyAgICBzdWJwcm9jZXNzICBSdW4gYWxsIHRlc3RzIGZvciB0aGUgc3VicHJvY2VzcyBtb2R1bGUuCisKKyAgICB1cmxmZXRjaCAtICBJdCBpcyBva2F5IHRvIGRvd25sb2FkIGZpbGVzIHJlcXVpcmVkIG9uIHRlc3RpbmcuCisKKyAgICBndWkgLSAgICAgICBSdW4gdGVzdHMgdGhhdCByZXF1aXJlIGEgcnVubmluZyBHVUkuCisKKyAgICB0emRhdGEgLSAgICBSdW4gdGVzdHMgdGhhdCByZXF1aXJlIHRpbWV6b25lIGRhdGEuCisKK1RvIGVuYWJsZSBhbGwgcmVzb3VyY2VzIGV4Y2VwdCBvbmUsIHVzZSAnLXVhbGwsLTxyZXNvdXJjZT4nLiAgRm9yCitleGFtcGxlLCB0byBydW4gYWxsIHRoZSB0ZXN0cyBleGNlcHQgZm9yIHRoZSBndWkgdGVzdHMsIGdpdmUgdGhlCitvcHRpb24gJy11YWxsLC1ndWknLgorIiIiCisKKworUkVTT1VSQ0VfTkFNRVMgPSAoJ2F1ZGlvJywgJ2N1cnNlcycsICdsYXJnZWZpbGUnLCAnbmV0d29yaycsCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCcsICdjcHUnLCAnc3VicHJvY2VzcycsICd1cmxmZXRjaCcsICdndWknLCAndHpkYXRhJykKKworY2xhc3MgX0FyZ1BhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6CisKKyAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHN1cGVyKCkuZXJyb3IobWVzc2FnZSArICJcblBhc3MgLWggb3IgLS1oZWxwIGZvciBjb21wbGV0ZSBoZWxwLiIpCisKKworZGVmIF9jcmVhdGVfcGFyc2VyKCk6CisgICAgIyBTZXQgcHJvZyB0byBwcmV2ZW50IHRoZSB1bmluZm9ybWF0aXZlICJfX21haW5fXy5weSIgZnJvbSBkaXNwbGF5aW5nIGluCisgICAgIyBlcnJvciBtZXNzYWdlcyB3aGVuIHVzaW5nICJweXRob24gLW0gdGVzdCAuLi4iLgorICAgIHBhcnNlciA9IF9BcmdQYXJzZXIocHJvZz0ncmVncnRlc3QucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U9VVNBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1ERVNDUklQVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz1FUElMT0csCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRfaGVscD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpCisKKyAgICAjIEFyZ3VtZW50cyB3aXRoIHRoaXMgY2xhdXNlIGFkZGVkIHRvIGl0cyBoZWxwIGFyZSBkZXNjcmliZWQgZnVydGhlciBpbgorICAgICMgdGhlIGVwaWxvZydzICJBZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzIiBzZWN0aW9uLgorICAgIG1vcmVfZGV0YWlscyA9ICcgIFNlZSB0aGUgc2VjdGlvbiBhdCBib3R0b20gZm9yIG1vcmUgZGV0YWlscy4nCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ0dlbmVyYWwgb3B0aW9ucycpCisgICAgIyBXZSBhZGQgaGVscCBleHBsaWNpdGx5IHRvIGNvbnRyb2wgd2hhdCBhcmd1bWVudCBncm91cCBpdCByZW5kZXJzIHVuZGVyLgorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWgnLCAnLS1oZWxwJywgYWN0aW9uPSdoZWxwJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXRpbWVvdXQnLCBtZXRhdmFyPSdUSU1FT1VUJywgdHlwZT1mbG9hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2R1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBuZWdhdGl2ZSBvciBlcXVhbHMgdG8gemVybycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdhaXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd3YWl0IGZvciB1c2VyIGlucHV0LCBlLmcuLCBhbGxvdyBhIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gYmUgYXR0YWNoZWQnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zbGF2ZWFyZ3MnLCBtZXRhdmFyPSdBUkdTJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3RhcnQnLCBtZXRhdmFyPSdTVEFSVCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3RoZSBuYW1lIG9mIHRoZSB0ZXN0IGF0IHdoaWNoIHRvIHN0YXJ0LicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnVmVyYm9zaXR5JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGVzdHMgaW4gdmVyYm9zZSBtb2RlIHdpdGggb3V0cHV0IHRvIHN0ZG91dCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdycsICctLXZlcmJvc2UyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmUtcnVuIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVcnLCAnLS12ZXJib3NlMycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2Rpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbm8gb3V0cHV0IHVubGVzcyBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1vJywgJy0tc2xvd2VzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3ByaW50X3Nsb3cnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCB0aGUgc2xvd2VzdCAxMCB0ZXN0cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IGhlYWRlciB3aXRoIGludGVycHJldGVyIGluZm8nKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTZWxlY3RpbmcgdGVzdHMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYW5kb21pemUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyYW5kb21pemUgdGVzdCBleGVjdXRpb24gb3JkZXIuJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcmFuZHNlZWQnLCBtZXRhdmFyPSdTRUVEJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmFuZG9tX3NlZWQnLCB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncGFzcyBhIHJhbmRvbSBzZWVkIHRvIHJlcHJvZHVjZSBhIHByZXZpb3VzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZG9tIHJ1bicpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctZicsICctLWZyb21maWxlJywgbWV0YXZhcj0nRklMRScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlYWQgbmFtZXMgb2YgdGVzdHMgdG8gcnVuIGZyb20gYSBmaWxlLicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy14JywgJy0tZXhjbHVkZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyBhcmUgdGVzdHMgdG8gKmV4Y2x1ZGUqJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2luZ2xlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2luZ2xlIHN0ZXAgdGhyb3VnaCBhIHNldCBvZiB0ZXN0cy4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbScsICctLW1hdGNoJywgbWV0YXZhcj0nUEFUJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWF0Y2hfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdtYXRjaCB0ZXN0IGNhc2VzIGFuZCBtZXRob2RzIHdpdGggZ2xvYiBwYXR0ZXJuIFBBVCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRycsICctLWZhaWxmYXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmFpbCBhcyBzb29uIGFzIGEgdGVzdCBmYWlscyAob25seSB3aXRoIC12IG9yIC1XKScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdScsICctLXVzZScsIG1ldGF2YXI9J1JFUzEsUkVTMiwuLi4nLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2FwcGVuZCcsIHR5cGU9cmVzb3VyY2VzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBydW4uJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1NJywgJy0tbWVtbGltaXQnLCBtZXRhdmFyPSdMSU1JVCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB2ZXJ5IGxhcmdlIG1lbW9yeS1jb25zdW1pbmcgdGVzdHMuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10ZXN0ZGlyJywgbWV0YXZhcj0nRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZXhlY3V0ZSB0ZXN0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGluc3RlYWQgb2YgdGhlIFB5dGhvbiBzdGRsaWIgdGVzdCBzdWl0ZSknKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTcGVjaWFsIHJ1bnMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1maW5kbGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdpZiBHQyBpcyBhdmFpbGFibGUgZGV0ZWN0IHRlc3RzIHRoYXQgbGVhayBtZW1vcnknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUwnLCAnLS1ydW5sZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgbGVha3MoMSkgY29tbWFuZCBqdXN0IGJlZm9yZSBleGl0LicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1SJywgJy0taHVudHJsZWFrcycsIG1ldGF2YXI9J1JVTkNPVU5UUycsCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aHVudHJsZWFrcywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VhcmNoIGZvciByZWZlcmVuY2UgbGVha3MgKG5lZWRzIGRlYnVnIGJ1aWxkLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zlcnkgc2xvdykuJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1qJywgJy0tbXVsdGlwcm9jZXNzJywgbWV0YXZhcj0nUFJPQ0VTU0VTJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX21wJywgdHlwZT1pbnQsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biBQUk9DRVNTRVMgcHJvY2Vzc2VzIGF0IG9uY2UnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVQnLCAnLS1jb3ZlcmFnZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3RyYWNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndHVybiBvbiBjb2RlIGNvdmVyYWdlIHRyYWNpbmcgdXNpbmcgdGhlIHRyYWNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kdWxlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1EJywgJy0tY292ZXJkaXInLCBtZXRhdmFyPSdESVInLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXJlbGF0aXZlX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXJlY3Rvcnkgd2hlcmUgY292ZXJhZ2UgZmlsZXMgYXJlIHB1dCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTicsICctLW5vY292ZXJkaXInLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Tm9uZSwgZGVzdD0nY292ZXJkaXInLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwdXQgY292ZXJhZ2UgZmlsZXMgYWxvbmdzaWRlIG1vZHVsZXMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10aHJlc2hvbGQnLCBtZXRhdmFyPSdUSFJFU0hPTEQnLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY2FsbCBnYy5zZXRfdGhyZXNob2xkKFRIUkVTSE9MRCknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1ub3dpbmRvd3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzdXBwcmVzcyBlcnJvciBtZXNzYWdlIGJveGVzIG9uIFdpbmRvd3MnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUYnLCAnLS1mb3JldmVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRoZSBzcGVjaWZpZWQgdGVzdHMgaW4gYSBsb29wLCB1bnRpbCBhbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yIGhhcHBlbnMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1saXN0LXRlc3RzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ib25seSB3cml0ZSB0aGUgbmFtZSBvZiB0ZXN0cyB0aGF0IHdpbGwgYmUgcnVuLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbid0IGV4ZWN1dGUgdGhlbSIpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUCcsICctLXBnbycsIGRlc3Q9J3BnbycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2VuYWJsZSBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24gdHJhaW5pbmcnKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnYXJncycsIG5hcmdzPScqJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCisKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIHJlbGF0aXZlX2ZpbGVuYW1lKHN0cmluZyk6CisgICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQorICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc3RyaW5nKQorCisKK2RlZiBodW50cmxlYWtzKHN0cmluZyk6CisgICAgYXJncyA9IHN0cmluZy5zcGxpdCgnOicpCisgICAgaWYgbGVuKGFyZ3MpIG5vdCBpbiAoMiwgMyk6CisgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKAorICAgICAgICAgICAgJ25lZWRzIDIgb3IgMyBjb2xvbi1zZXBhcmF0ZWQgYXJndW1lbnRzJykKKyAgICBud2FybXVwID0gaW50KGFyZ3NbMF0pIGlmIGFyZ3NbMF0gZWxzZSA1CisgICAgbnRyYWNrZWQgPSBpbnQoYXJnc1sxXSkgaWYgYXJnc1sxXSBlbHNlIDQKKyAgICBmbmFtZSA9IGFyZ3NbMl0gaWYgbGVuKGFyZ3MpID4gMiBhbmQgYXJnc1syXSBlbHNlICdyZWZsb2cudHh0JworICAgIHJldHVybiBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUKKworCitkZWYgcmVzb3VyY2VzX2xpc3Qoc3RyaW5nKToKKyAgICB1ID0gW3gubG93ZXIoKSBmb3IgeCBpbiBzdHJpbmcuc3BsaXQoJywnKV0KKyAgICBmb3IgciBpbiB1OgorICAgICAgICBpZiByID09ICdhbGwnIG9yIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgclswXSA9PSAnLSc6CisgICAgICAgICAgICByID0gclsxOl0KKyAgICAgICAgaWYgciBub3QgaW4gUkVTT1VSQ0VfTkFNRVM6CisgICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcignaW52YWxpZCByZXNvdXJjZTogJyArIHIpCisgICAgcmV0dXJuIHUKKworCitkZWYgX3BhcnNlX2FyZ3MoYXJncywgKiprd2FyZ3MpOgorICAgICMgRGVmYXVsdHMKKyAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSh0ZXN0ZGlyPU5vbmUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsCisgICAgICAgICBleGNsdWRlPUZhbHNlLCBzaW5nbGU9RmFsc2UsIHJhbmRvbWl6ZT1GYWxzZSwgZnJvbWZpbGU9Tm9uZSwKKyAgICAgICAgIGZpbmRsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLCB0cmFjZT1GYWxzZSwgY292ZXJkaXI9J2NvdmVyYWdlJywKKyAgICAgICAgIHJ1bmxlYWtzPUZhbHNlLCBodW50cmxlYWtzPUZhbHNlLCB2ZXJib3NlMj1GYWxzZSwgcHJpbnRfc2xvdz1GYWxzZSwKKyAgICAgICAgIHJhbmRvbV9zZWVkPU5vbmUsIHVzZV9tcD1Ob25lLCB2ZXJib3NlMz1GYWxzZSwgZm9yZXZlcj1GYWxzZSwKKyAgICAgICAgIGhlYWRlcj1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHBnbz1GYWxzZSkKKyAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIobnMsIGspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhpcyBmdW5jdGlvbicgJSBrKQorICAgICAgICBzZXRhdHRyKG5zLCBrLCB2KQorICAgIGlmIG5zLnVzZV9yZXNvdXJjZXMgaXMgTm9uZToKKyAgICAgICAgbnMudXNlX3Jlc291cmNlcyA9IFtdCisKKyAgICBwYXJzZXIgPSBfY3JlYXRlX3BhcnNlcigpCisgICAgcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzLCBuYW1lc3BhY2U9bnMpCisKKyAgICBpZiBucy5zaW5nbGUgYW5kIG5zLmZyb21maWxlOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1zIGFuZCAtZiBkb24ndCBnbyB0b2dldGhlciEiKQorICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMudHJhY2U6CisgICAgICAgIHBhcnNlci5lcnJvcigiLVQgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgbnMudXNlX21wIGFuZCBucy5maW5kbGVha3M6CisgICAgICAgIHBhcnNlci5lcnJvcigiLWwgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgbnMuZmFpbGZhc3QgYW5kIG5vdCAobnMudmVyYm9zZSBvciBucy52ZXJib3NlMyk6CisgICAgICAgIHBhcnNlci5lcnJvcigiLUcvLS1mYWlsZmFzdCBuZWVkcyBlaXRoZXIgLXYgb3IgLVciKQorICAgIGlmIG5zLnBnbyBhbmQgKG5zLnZlcmJvc2Ugb3IgbnMudmVyYm9zZTIgb3IgbnMudmVyYm9zZTMpOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi0tcGdvLy12IGRvbid0IGdvIHRvZ2V0aGVyISIpCisKKyAgICBpZiBucy5ub3dpbmRvd3M6CisgICAgICAgIHByaW50KCJXYXJuaW5nOiB0aGUgLS1ub3dpbmRvd3MgKC1uKSBvcHRpb24gaXMgZGVwcmVjYXRlZC4gIgorICAgICAgICAgICAgICAiVXNlIC12diB0byBkaXNwbGF5IGFzc2VydGlvbnMgaW4gc3RkZXJyLiIsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGlmIG5zLnF1aWV0OgorICAgICAgICBucy52ZXJib3NlID0gMAorICAgIGlmIG5zLnRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIG5zLnRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgIG5zLnRpbWVvdXQgPSBOb25lCisgICAgaWYgbnMudXNlX21wIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBucy51c2VfbXAgPD0gMDoKKyAgICAgICAgICAgICMgVXNlIGFsbCBjb3JlcyArIGV4dHJhcyBmb3IgdGVzdHMgdGhhdCBsaWtlIHRvIHNsZWVwCisgICAgICAgICAgICBucy51c2VfbXAgPSAyICsgKG9zLmNwdV9jb3VudCgpIG9yIDEpCisgICAgaWYgbnMudXNlOgorICAgICAgICBmb3IgYSBpbiBucy51c2U6CisgICAgICAgICAgICBmb3IgciBpbiBhOgorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ2FsbCc6CisgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXNbOl0gPSBSRVNPVVJDRV9OQU1FUworICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgICAgICAgICBkZWwgbnMudXNlX3Jlc291cmNlc1s6XQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHJlbW92ZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgclswXSA9PSAnLSc6CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgciA9IHJbMTpdCisgICAgICAgICAgICAgICAgaWYgcmVtb3ZlOgorICAgICAgICAgICAgICAgICAgICBpZiByIGluIG5zLnVzZV9yZXNvdXJjZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgIGVsaWYgciBub3QgaW4gbnMudXNlX3Jlc291cmNlczoKKyAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlcy5hcHBlbmQocikKKyAgICBpZiBucy5yYW5kb21fc2VlZCBpcyBub3QgTm9uZToKKyAgICAgICAgbnMucmFuZG9taXplID0gVHJ1ZQorCisgICAgcmV0dXJuIG5zCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9tYWluLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGVmZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weQpAQCAtMCwwICsxLDUzMiBAQAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgbG9jYWxlCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHRpbWUKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5jbWRsaW5lIGltcG9ydCBfcGFyc2VfYXJncworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3QgaW1wb3J0ICgKKyAgICBmaW5kdGVzdHMsIHJ1bnRlc3QsCisgICAgU1REVEVTVFMsIE5PVFRFU1RTLCBQQVNTRUQsIEZBSUxFRCwgRU5WX0NIQU5HRUQsIFNLSVBQRUQsIFJFU09VUkNFX0RFTklFRCwKKyAgICBJTlRFUlJVUFRFRCwgQ0hJTERfRVJST1IsCisgICAgUFJPR1JFU1NfTUlOX1RJTUUsIGZvcm1hdF90ZXN0X3Jlc3VsdCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5zZXR1cCBpbXBvcnQgc2V0dXBfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCBnYworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGdjID0gTm9uZQorCisKKyMgV2hlbiB0ZXN0cyBhcmUgcnVuIGZyb20gdGhlIFB5dGhvbiBidWlsZCBkaXJlY3RvcnksIGl0IGlzIGJlc3QgcHJhY3RpY2UKKyMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIFRoaXMgZWFzZXMgdGhlIGNsZWFudXAgb2YgbGVmdG92ZXIKKyMgZmlsZXMgdXNpbmcgdGhlICJtYWtlIGRpc3RjbGVhbiIgY29tbWFuZC4KK2lmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICBURU1QRElSID0gb3MucGF0aC5qb2luKHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdidWlsZCcpCitlbHNlOgorICAgIFRFTVBESVIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKK1RFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKKworCitkZWYgZm9ybWF0X2R1cmF0aW9uKHNlY29uZHMpOgorICAgIGlmIHNlY29uZHMgPCAxLjA6CisgICAgICAgIHJldHVybiAnJS4wZiBtcycgJSAoc2Vjb25kcyAqIDFlMykKKyAgICBpZiBzZWNvbmRzIDwgNjAuMDoKKyAgICAgICAgcmV0dXJuICclLjBmIHNlYycgJSBzZWNvbmRzCisKKyAgICBtaW51dGVzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDYwLjApCisgICAgcmV0dXJuICclLjBmIG1pbiAlLjBmIHNlYycgJSAobWludXRlcywgc2Vjb25kcykKKworCitjbGFzcyBSZWdydGVzdDoKKyAgICAiIiJFeGVjdXRlIGEgdGVzdCBzdWl0ZS4KKworICAgIFRoaXMgYWxzbyBwYXJzZXMgY29tbWFuZC1saW5lIG9wdGlvbnMgYW5kIG1vZGlmaWVzIGl0cyBiZWhhdmlvcgorICAgIGFjY29yZGluZ2x5LgorCisgICAgdGVzdHMgLS0gYSBsaXN0IG9mIHN0cmluZ3MgY29udGFpbmluZyB0ZXN0IG5hbWVzIChvcHRpb25hbCkKKyAgICB0ZXN0ZGlyIC0tIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gbG9vayBmb3IgdGVzdHMgKG9wdGlvbmFsKQorCisgICAgVXNlcnMgb3RoZXIgdGhhbiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2lsbCBjZXJ0YWlubHkgd2FudCB0bworICAgIHNwZWNpZnkgdGVzdGRpcjsgaWYgaXQncyBvbWl0dGVkLCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlCisgICAgUHl0aG9uIHRlc3Qgc3VpdGUgaXMgc2VhcmNoZWQgZm9yLgorCisgICAgSWYgdGhlIHRlc3RzIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHRoZSB0ZXN0cyBsaXN0ZWQgb24gdGhlCisgICAgY29tbWFuZC1saW5lIHdpbGwgYmUgdXNlZC4gIElmIHRoYXQncyBlbXB0eSwgdG9vLCB0aGVuIGFsbCAqLnB5CisgICAgZmlsZXMgYmVnaW5uaW5nIHdpdGggdGVzdF8gd2lsbCBiZSB1c2VkLgorCisgICAgVGhlIG90aGVyIGRlZmF1bHQgYXJndW1lbnRzICh2ZXJib3NlLCBxdWlldCwgZXhjbHVkZSwKKyAgICBzaW5nbGUsIHJhbmRvbWl6ZSwgZmluZGxlYWtzLCB1c2VfcmVzb3VyY2VzLCB0cmFjZSwgY292ZXJkaXIsCisgICAgcHJpbnRfc2xvdywgYW5kIHJhbmRvbV9zZWVkKSBhbGxvdyBwcm9ncmFtbWVycyBjYWxsaW5nIG1haW4oKQorICAgIGRpcmVjdGx5IHRvIHNldCB0aGUgdmFsdWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgc2V0IGJ5IGZsYWdzCisgICAgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICMgTmFtZXNwYWNlIG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgICAgIHNlbGYubnMgPSBOb25lCisKKyAgICAgICAgIyB0ZXN0cworICAgICAgICBzZWxmLnRlc3RzID0gW10KKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IFtdCisKKyAgICAgICAgIyB0ZXN0IHJlc3VsdHMKKyAgICAgICAgc2VsZi5nb29kID0gW10KKyAgICAgICAgc2VsZi5iYWQgPSBbXQorICAgICAgICBzZWxmLnNraXBwZWQgPSBbXQorICAgICAgICBzZWxmLnJlc291cmNlX2RlbmllZHMgPSBbXQorICAgICAgICBzZWxmLmVudmlyb25tZW50X2NoYW5nZWQgPSBbXQorICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKKworICAgICAgICAjIHVzZWQgYnkgLS1zbG93CisgICAgICAgIHNlbGYudGVzdF90aW1lcyA9IFtdCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tY292ZXJhZ2UsIHRyYWNlLlRyYWNlIGluc3RhbmNlCisgICAgICAgIHNlbGYudHJhY2VyID0gTm9uZQorCisgICAgICAgICMgdXNlZCBieSAtLWZpbmRsZWFrcywgc3RvcmUgZm9yIGdjLmdhcmJhZ2UKKyAgICAgICAgc2VsZi5mb3VuZF9nYXJiYWdlID0gW10KKworICAgICAgICAjIHVzZWQgdG8gZGlzcGxheSB0aGUgcHJvZ3Jlc3MgYmFyICJbIDMvMTAwXSIKKyAgICAgICAgc2VsZi5zdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBzZWxmLnRlc3RfY291bnQgPSAnJworICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSAxCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tc2luZ2xlCisgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfdGVzdCA9IE5vbmUKKyAgICAgICAgc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSA9IE5vbmUKKworICAgIGRlZiBhY2N1bXVsYXRlX3Jlc3VsdChzZWxmLCB0ZXN0LCByZXN1bHQpOgorICAgICAgICBvaywgdGVzdF90aW1lID0gcmVzdWx0CisgICAgICAgIGlmIG9rIG5vdCBpbiAoQ0hJTERfRVJST1IsIElOVEVSUlVQVEVEKToKKyAgICAgICAgICAgIHNlbGYudGVzdF90aW1lcy5hcHBlbmQoKHRlc3RfdGltZSwgdGVzdCkpCisgICAgICAgIGlmIG9rID09IFBBU1NFRDoKKyAgICAgICAgICAgIHNlbGYuZ29vZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBGQUlMRUQ6CisgICAgICAgICAgICBzZWxmLmJhZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBFTlZfQ0hBTkdFRDoKKyAgICAgICAgICAgIHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBTS0lQUEVEOgorICAgICAgICAgICAgc2VsZi5za2lwcGVkLmFwcGVuZCh0ZXN0KQorICAgICAgICBlbGlmIG9rID09IFJFU09VUkNFX0RFTklFRDoKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgICAgIHNlbGYucmVzb3VyY2VfZGVuaWVkcy5hcHBlbmQodGVzdCkKKworICAgIGRlZiBkaXNwbGF5X3Byb2dyZXNzKHNlbGYsIHRlc3RfaW5kZXgsIHRlc3QpOgorICAgICAgICBpZiBzZWxmLm5zLnF1aWV0OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYuYmFkIGFuZCBub3Qgc2VsZi5ucy5wZ286CisgICAgICAgICAgICBmbXQgPSAie3RpbWV9IFt7dGVzdF9pbmRleDp7Y291bnRfd2lkdGh9fXt0ZXN0X2NvdW50fS97bmJhZH1dIHt0ZXN0X25hbWV9IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm10ID0gInt0aW1lfSBbe3Rlc3RfaW5kZXg6e2NvdW50X3dpZHRofX17dGVzdF9jb3VudH1dIHt0ZXN0X25hbWV9IgorICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpIC0gc2VsZi5zdGFydF90aW1lCisgICAgICAgIHRlc3RfdGltZSA9IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWludCh0ZXN0X3RpbWUpKQorICAgICAgICBsaW5lID0gZm10LmZvcm1hdChjb3VudF93aWR0aD1zZWxmLnRlc3RfY291bnRfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5kZXg9dGVzdF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb3VudD1zZWxmLnRlc3RfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5iYWQ9bGVuKHNlbGYuYmFkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lPXRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU9dGVzdF90aW1lKQorICAgICAgICBwcmludChsaW5lLCBmbHVzaD1UcnVlKQorCisgICAgZGVmIHBhcnNlX2FyZ3Moc2VsZiwga3dhcmdzKToKKyAgICAgICAgbnMgPSBfcGFyc2VfYXJncyhzeXMuYXJndlsxOl0sICoqa3dhcmdzKQorCisgICAgICAgIGlmIG5zLnRpbWVvdXQgYW5kIG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBwcmludCgiV2FybmluZzogVGhlIHRpbWVvdXQgb3B0aW9uIHJlcXVpcmVzICIKKyAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQorCisgICAgICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZSBhbmQgZ2MgaXMgTm9uZToKKyAgICAgICAgICAgIHByaW50KCdObyBHQyBhdmFpbGFibGUsIGlnbm9yZSAtLXRocmVzaG9sZC4nLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBucy50aHJlc2hvbGQgPSBOb25lCisKKyAgICAgICAgaWYgbnMuZmluZGxlYWtzOgorICAgICAgICAgICAgaWYgZ2MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgdG8gcmVwb3J0IGdhcmJhZ2UgdGhhdCBpcyBub3QKKyAgICAgICAgICAgICAgICAjIGZyZWVhYmxlIGJ5IHJlZmVyZW5jZSBjb3VudGluZyBhbG9uZS4gIEJ5IGRlZmF1bHQgb25seQorICAgICAgICAgICAgICAgICMgZ2FyYmFnZSB0aGF0IGlzIG5vdCBjb2xsZWN0YWJsZSBieSB0aGUgR0MgaXMgcmVwb3J0ZWQuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICNnYy5zZXRfZGVidWcoZ2MuREVCVUdfU0FWRUFMTCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoJ05vIEdDIGF2YWlsYWJsZSwgZGlzYWJsaW5nIC0tZmluZGxlYWtzJywKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgbnMuZmluZGxlYWtzID0gRmFsc2UKKworICAgICAgICAjIFN0cmlwIC5weSBleHRlbnNpb25zLgorICAgICAgICByZW1vdmVweShucy5hcmdzKQorCisgICAgICAgIHJldHVybiBucworCisgICAgZGVmIGZpbmRfdGVzdHMoc2VsZiwgdGVzdHMpOgorICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKKworICAgICAgICBpZiBzZWxmLm5zLnNpbmdsZToKKyAgICAgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgJ3B5bmV4dHRlc3QnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lLCAncicpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3QgPSBmcC5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RzID0gW25leHRfdGVzdF0KKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBzZWxmLm5zLmZyb21maWxlOgorICAgICAgICAgICAgc2VsZi50ZXN0cyA9IFtdCisgICAgICAgICAgICAjIHJlZ2V4IHRvIG1hdGNoICd0ZXN0X2J1aWx0aW4nIGluIGxpbmU6CisgICAgICAgICAgICAjICcwOjAwOjAwIFsgIDQvNDAwXSB0ZXN0X2J1aWx0aW4gLS0gdGVzdF9kaWN0IHRvb2sgMSBzZWMnCisgICAgICAgICAgICByZWdleCA9IChyJ14oPzpbMC05XSs6WzAtOV0rOlswLTldKyAqKT8nCisgICAgICAgICAgICAgICAgICAgICByJyg/OlxbWzAtOS8gXStcXSAqKT8nCisgICAgICAgICAgICAgICAgICAgICByJyh0ZXN0X1thLXpBLVowLTlfXSspJykKKyAgICAgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyZWdleCkKKyAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc2VsZi5ucy5mcm9tZmlsZSkpIGFzIGZwOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZwOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSByZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0cy5hcHBlbmQobWF0Y2guZ3JvdXAoMSkpCisKKyAgICAgICAgcmVtb3ZlcHkoc2VsZi50ZXN0cykKKworICAgICAgICBzdGR0ZXN0cyA9IFNURFRFU1RTWzpdCisgICAgICAgIG5vdHRlc3RzID0gTk9UVEVTVFMuY29weSgpCisgICAgICAgIGlmIHNlbGYubnMuZXhjbHVkZToKKyAgICAgICAgICAgIGZvciBhcmcgaW4gc2VsZi5ucy5hcmdzOgorICAgICAgICAgICAgICAgIGlmIGFyZyBpbiBzdGR0ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgc3RkdGVzdHMucmVtb3ZlKGFyZykKKyAgICAgICAgICAgICAgICBub3R0ZXN0cy5hZGQoYXJnKQorICAgICAgICAgICAgc2VsZi5ucy5hcmdzID0gW10KKworICAgICAgICAjIGlmIHRlc3RkaXIgaXMgc2V0LCB0aGVuIHdlIGFyZSBub3QgcnVubmluZyB0aGUgcHl0aG9uIHRlc3RzIHN1aXRlLCBzbworICAgICAgICAjIGRvbid0IGFkZCBkZWZhdWx0IHRlc3RzIHRvIGJlIGV4ZWN1dGVkIG9yIHNraXBwZWQgKHBhc3MgZW1wdHkgdmFsdWVzKQorICAgICAgICBpZiBzZWxmLm5zLnRlc3RkaXI6CisgICAgICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhzZWxmLm5zLnRlc3RkaXIsIGxpc3QoKSwgc2V0KCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhzZWxmLm5zLnRlc3RkaXIsIHN0ZHRlc3RzLCBub3R0ZXN0cykKKworICAgICAgICBpZiBub3Qgc2VsZi5ucy5mcm9tZmlsZToKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSBzZWxmLnRlc3RzIG9yIHNlbGYubnMuYXJncyBvciBhbGx0ZXN0cworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZCA9IHNlbGYudGVzdHMKKyAgICAgICAgaWYgc2VsZi5ucy5zaW5nbGU6CisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkID0gc2VsZi5zZWxlY3RlZFs6MV0KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwb3MgPSBhbGx0ZXN0cy5pbmRleChzZWxmLnNlbGVjdGVkWzBdKQorICAgICAgICAgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfdGVzdCA9IGFsbHRlc3RzW3BvcyArIDFdCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBSZW1vdmUgYWxsIHRoZSBzZWxlY3RlZCB0ZXN0cyB0aGF0IHByZWNlZGUgc3RhcnQgaWYgaXQncyBzZXQuCisgICAgICAgIGlmIHNlbGYubnMuc3RhcnQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuc2VsZWN0ZWRbOnNlbGYuc2VsZWN0ZWQuaW5kZXgoc2VsZi5ucy5zdGFydCldCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBzdGFydGluZyB0ZXN0ICglcyksIHVzaW5nIGFsbCB0ZXN0cyIKKyAgICAgICAgICAgICAgICAgICAgICAlIHNlbGYubnMuc3RhcnQsIGZpbGU9c3lzLnN0ZGVycikKKworICAgICAgICBpZiBzZWxmLm5zLnJhbmRvbWl6ZToKKyAgICAgICAgICAgIGlmIHNlbGYubnMucmFuZG9tX3NlZWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLm5zLnJhbmRvbV9zZWVkID0gcmFuZG9tLnJhbmRyYW5nZSgxMDAwMDAwMCkKKyAgICAgICAgICAgIHJhbmRvbS5zZWVkKHNlbGYubnMucmFuZG9tX3NlZWQpCisgICAgICAgICAgICByYW5kb20uc2h1ZmZsZShzZWxmLnNlbGVjdGVkKQorCisgICAgZGVmIGxpc3RfdGVzdHMoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIHNlbGYuc2VsZWN0ZWQ6CisgICAgICAgICAgICBwcmludChuYW1lKQorCisgICAgZGVmIHJlcnVuX2ZhaWxlZF90ZXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5ucy52ZXJib3NlID0gVHJ1ZQorICAgICAgICBzZWxmLm5zLmZhaWxmYXN0ID0gRmFsc2UKKyAgICAgICAgc2VsZi5ucy52ZXJib3NlMyA9IEZhbHNlCisgICAgICAgIHNlbGYubnMubWF0Y2hfdGVzdHMgPSBOb25lCisKKyAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZSIpCisgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuYmFkWzpdOgorICAgICAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdCwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLm5zLnZlcmJvc2UgPSBUcnVlCisgICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHNlbGYubnMsIHRlc3QpCisgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQworICAgICAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBva1swXSBpbiB7UEFTU0VELCBFTlZfQ0hBTkdFRCwgU0tJUFBFRCwgUkVTT1VSQ0VfREVOSUVEfToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5iYWQucmVtb3ZlKHRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5iYWQpLCAndGVzdCcpLCAiZmFpbGVkIGFnYWluOiIpCisgICAgICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuYmFkKQorCisgICAgZGVmIGRpc3BsYXlfcmVzdWx0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgorICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgYWZ0ZXIgXkMKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCJUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuIikKKyAgICAgICAgICAgIGV4ZWN1dGVkID0gc2V0KHNlbGYuZ29vZCkgfCBzZXQoc2VsZi5iYWQpIHwgc2V0KHNlbGYuc2tpcHBlZCkKKyAgICAgICAgICAgIG9taXR0ZWQgPSBzZXQoc2VsZi5zZWxlY3RlZCkgLSBleGVjdXRlZAorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKG9taXR0ZWQpLCAidGVzdCIpLCAib21pdHRlZDoiKQorICAgICAgICAgICAgcHJpbnRsaXN0KG9taXR0ZWQpCisKKyAgICAgICAgIyBJZiBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIGZvciBQR08gdGhlbiBubyBvbmUgY2FyZXMgYWJvdXQKKyAgICAgICAgIyByZXN1bHRzLgorICAgICAgICBpZiBzZWxmLm5zLnBnbzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuZ29vZCBhbmQgbm90IHNlbGYubnMucXVpZXQ6CisgICAgICAgICAgICBpZiAobm90IHNlbGYuYmFkCisgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLnNraXBwZWQKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuaW50ZXJydXB0ZWQKKyAgICAgICAgICAgICAgICBhbmQgbGVuKHNlbGYuZ29vZCkgPiAxKToKKyAgICAgICAgICAgICAgICBwcmludCgiQWxsIiwgZW5kPScgJykKKyAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihzZWxmLmdvb2QpLCAidGVzdCIpLCAiT0suIikKKworICAgICAgICBpZiBzZWxmLm5zLnByaW50X3Nsb3c6CisgICAgICAgICAgICBzZWxmLnRlc3RfdGltZXMuc29ydChyZXZlcnNlPVRydWUpCisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludCgiMTAgc2xvd2VzdCB0ZXN0czoiKQorICAgICAgICAgICAgZm9yIHRpbWUsIHRlc3QgaW4gc2VsZi50ZXN0X3RpbWVzWzoxMF06CisgICAgICAgICAgICAgICAgcHJpbnQoIi0gJXM6ICVzIiAlICh0ZXN0LCBmb3JtYXRfZHVyYXRpb24odGltZSkpKQorCisgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKHNlbGYuYmFkKSwgInRlc3QiKSwgImZhaWxlZDoiKQorICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuYmFkKQorCisgICAgICAgIGlmIHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZDoKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCJ7fSBhbHRlcmVkIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQ6Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICBjb3VudChsZW4oc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkKSwgInRlc3QiKSkpCisgICAgICAgICAgICBwcmludGxpc3Qoc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkKQorCisgICAgICAgIGlmIHNlbGYuc2tpcHBlZCBhbmQgbm90IHNlbGYubnMucXVpZXQ6CisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5za2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKKyAgICAgICAgICAgIHByaW50bGlzdChzZWxmLnNraXBwZWQpCisKKyAgICBkZWYgcnVuX3Rlc3RzX3NlcXVlbnRpYWwoc2VsZik6CisgICAgICAgIGlmIHNlbGYubnMudHJhY2U6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2UKKyAgICAgICAgICAgIHNlbGYudHJhY2VyID0gdHJhY2UuVHJhY2UodHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCisKKyAgICAgICAgc2F2ZV9tb2R1bGVzID0gc3lzLm1vZHVsZXMua2V5cygpCisKKyAgICAgICAgcHJpbnQoIlJ1biB0ZXN0cyBzZXF1ZW50aWFsbHkiKQorCisgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBOb25lCisgICAgICAgIGZvciB0ZXN0X2luZGV4LCB0ZXN0IGluIGVudW1lcmF0ZShzZWxmLnRlc3RzLCAxKToKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisKKyAgICAgICAgICAgIHRleHQgPSB0ZXN0CisgICAgICAgICAgICBpZiBwcmV2aW91c190ZXN0OgorICAgICAgICAgICAgICAgIHRleHQgPSAnJXMgLS0gJXMnICUgKHRleHQsIHByZXZpb3VzX3Rlc3QpCisgICAgICAgICAgICBzZWxmLmRpc3BsYXlfcHJvZ3Jlc3ModGVzdF9pbmRleCwgdGV4dCkKKworICAgICAgICAgICAgaWYgc2VsZi50cmFjZXI6CisgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSB0cmFjaW5nIGNvZGUgY292ZXJhZ2UsIHRoZW4gd2UgZG9uJ3QgZXhpdCB3aXRoIHN0YXR1cworICAgICAgICAgICAgICAgICMgaWYgb24gYSBmYWxzZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluLgorICAgICAgICAgICAgICAgIGNtZCA9ICgncmVzdWx0ID0gcnVudGVzdChzZWxmLm5zLCB0ZXN0KTsgJworICAgICAgICAgICAgICAgICAgICAgICAnc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpJykKKyAgICAgICAgICAgICAgICBucyA9IGRpY3QobG9jYWxzKCkpCisgICAgICAgICAgICAgICAgc2VsZi50cmFjZXIucnVuY3R4KGNtZCwgZ2xvYmFscz1nbG9iYWxzKCksIGxvY2Fscz1ucykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBuc1sncmVzdWx0J10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KHNlbGYubnMsIHRlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIChJTlRFUlJVUFRFRCwgTm9uZSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisKKyAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdCwgcmVzdWx0WzBdKQorICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0X3RpbWUKKyAgICAgICAgICAgIGlmIHRlc3RfdGltZSA+PSBQUk9HUkVTU19NSU5fVElNRToKKyAgICAgICAgICAgICAgICBwcmV2aW91c190ZXN0ID0gIiVzIGluICVzIiAlIChwcmV2aW91c190ZXN0LCBmb3JtYXRfZHVyYXRpb24odGVzdF90aW1lKSkKKyAgICAgICAgICAgIGVsaWYgcmVzdWx0WzBdID09IFBBU1NFRDoKKyAgICAgICAgICAgICAgICAjIGJlIHF1aWV0OiBzYXkgbm90aGluZyBpZiB0aGUgdGVzdCBwYXNzZWQgc2hvcnRseQorICAgICAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBOb25lCisKKyAgICAgICAgICAgIGlmIHNlbGYubnMuZmluZGxlYWtzOgorICAgICAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgICAgIGlmIGdjLmdhcmJhZ2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiB0ZXN0IGNyZWF0ZWQiLCBsZW4oZ2MuZ2FyYmFnZSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCJ1bmNvbGxlY3RhYmxlIG9iamVjdChzKS4iKQorICAgICAgICAgICAgICAgICAgICAjIG1vdmUgdGhlIHVuY29sbGVjdGFibGUgb2JqZWN0cyBzb21ld2hlcmUgc28gd2UgZG9uJ3Qgc2VlCisgICAgICAgICAgICAgICAgICAgICMgdGhlbSBhZ2FpbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZvdW5kX2dhcmJhZ2UuZXh0ZW5kKGdjLmdhcmJhZ2UpCisgICAgICAgICAgICAgICAgICAgIGRlbCBnYy5nYXJiYWdlWzpdCisKKyAgICAgICAgICAgICMgVW5sb2FkIHRoZSBuZXdseSBpbXBvcnRlZCBtb2R1bGVzIChiZXN0IGVmZm9ydCBmaW5hbGl6YXRpb24pCisgICAgICAgICAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLmtleXMoKToKKyAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNhdmVfbW9kdWxlcyBhbmQgbW9kdWxlLnN0YXJ0c3dpdGgoInRlc3QuIik6CisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKG1vZHVsZSkKKworICAgICAgICBpZiBwcmV2aW91c190ZXN0OgorICAgICAgICAgICAgcHJpbnQocHJldmlvdXNfdGVzdCkKKworICAgIGRlZiBfdGVzdF9mb3JldmVyKHNlbGYsIHRlc3RzKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYpOgorICAgICAgICAjIEZvciBhIHBhcnRpYWwgcnVuLCB3ZSBkbyBub3QgbmVlZCB0byBjbHV0dGVyIHRoZSBvdXRwdXQuCisgICAgICAgIGlmIChzZWxmLm5zLnZlcmJvc2UKKyAgICAgICAgICAgIG9yIHNlbGYubnMuaGVhZGVyCisgICAgICAgICAgICBvciBub3QgKHNlbGYubnMucGdvIG9yIHNlbGYubnMucXVpZXQgb3Igc2VsZi5ucy5zaW5nbGUKKyAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi50ZXN0cyBvciBzZWxmLm5zLmFyZ3MpKToKKyAgICAgICAgICAgICMgUHJpbnQgYmFzaWMgcGxhdGZvcm0gaW5mb3JtYXRpb24KKyAgICAgICAgICAgIHByaW50KCI9PSIsIHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLCAqc3lzLnZlcnNpb24uc3BsaXQoKSkKKyAgICAgICAgICAgIHByaW50KCI9PSAgIiwgcGxhdGZvcm0ucGxhdGZvcm0oYWxpYXNlZD1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLWVuZGlhbiIgJSBzeXMuYnl0ZW9yZGVyKQorICAgICAgICAgICAgcHJpbnQoIj09ICAiLCAiaGFzaCBhbGdvcml0aG06Iiwgc3lzLmhhc2hfaW5mby5hbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAiNjRiaXQiIGlmIHN5cy5tYXhzaXplID4gMioqMzIgZWxzZSAiMzJiaXQiKQorICAgICAgICAgICAgcHJpbnQoIj09ICBjd2Q6Iiwgb3MuZ2V0Y3dkKCkpCisgICAgICAgICAgICBwcmludCgiPT0gIGVuY29kaW5nczogbG9jYWxlPSVzLCBGUz0lcyIKKyAgICAgICAgICAgICAgICAgICUgKGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQorICAgICAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy5yYW5kb21pemU6CisgICAgICAgICAgICBwcmludCgiVXNpbmcgcmFuZG9tIHNlZWQiLCBzZWxmLm5zLnJhbmRvbV9zZWVkKQorCisgICAgICAgIGlmIHNlbGYubnMuZm9yZXZlcjoKKyAgICAgICAgICAgIHNlbGYudGVzdHMgPSBzZWxmLl90ZXN0X2ZvcmV2ZXIobGlzdChzZWxmLnNlbGVjdGVkKSkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudCA9ICcnCisgICAgICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSAzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnRlc3RzID0gaXRlcihzZWxmLnNlbGVjdGVkKQorICAgICAgICAgICAgc2VsZi50ZXN0X2NvdW50ID0gJy97fScuZm9ybWF0KGxlbihzZWxmLnNlbGVjdGVkKSkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudF93aWR0aCA9IGxlbihzZWxmLnRlc3RfY291bnQpIC0gMQorCisgICAgICAgIGlmIHNlbGYubnMudXNlX21wOgorICAgICAgICAgICAgZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3RfbXAgaW1wb3J0IHJ1bl90ZXN0c19tdWx0aXByb2Nlc3MKKyAgICAgICAgICAgIHJ1bl90ZXN0c19tdWx0aXByb2Nlc3Moc2VsZikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucnVuX3Rlc3RzX3NlcXVlbnRpYWwoKQorCisgICAgZGVmIGZpbmFsaXplKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lOgorICAgICAgICAgICAgaWYgc2VsZi5uZXh0X3NpbmdsZV90ZXN0OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lLCAndycpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBmcC53cml0ZShzZWxmLm5leHRfc2luZ2xlX3Rlc3QgKyAnXG4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSkKKworICAgICAgICBpZiBzZWxmLnRyYWNlcjoKKyAgICAgICAgICAgIHIgPSBzZWxmLnRyYWNlci5yZXN1bHRzKCkKKyAgICAgICAgICAgIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgc3VtbWFyeT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyZGlyPXNlbGYubnMuY292ZXJkaXIpCisKKyAgICAgICAgcHJpbnQoKQorICAgICAgICBkdXJhdGlvbiA9IHRpbWUubW9ub3RvbmljKCkgLSBzZWxmLnN0YXJ0X3RpbWUKKyAgICAgICAgcHJpbnQoIlRvdGFsIGR1cmF0aW9uOiAlcyIgJSBmb3JtYXRfZHVyYXRpb24oZHVyYXRpb24pKQorCisgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgcmVzdWx0ID0gIkZBSUxVUkUiCisgICAgICAgIGVsaWYgc2VsZi5pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICJJTlRFUlJVUFRFRCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTVUNDRVNTIgorICAgICAgICBwcmludCgiVGVzdHMgcmVzdWx0OiAlcyIgJSByZXN1bHQpCisKKyAgICAgICAgaWYgc2VsZi5ucy5ydW5sZWFrczoKKyAgICAgICAgICAgIG9zLnN5c3RlbSgibGVha3MgJWQiICUgb3MuZ2V0cGlkKCkpCisKKyAgICBkZWYgbWFpbihzZWxmLCB0ZXN0cz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGdsb2JhbCBURU1QRElSCisKKyAgICAgICAgaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLm1rZGlyKFRFTVBESVIpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIERlZmluZSBhIHdyaXRhYmxlIHRlbXAgZGlyIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGN3ZCB3aGlsZSBydW5uaW5nCisgICAgICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKKyAgICAgICAgIyB0ZXN0aW5nIChzZWUgdGhlIC1qIG9wdGlvbikuCisgICAgICAgIHRlc3RfY3dkID0gJ3Rlc3RfcHl0aG9uX3t9Jy5mb3JtYXQob3MuZ2V0cGlkKCkpCisgICAgICAgIHRlc3RfY3dkID0gb3MucGF0aC5qb2luKFRFTVBESVIsIHRlc3RfY3dkKQorCisgICAgICAgICMgUnVuIHRoZSB0ZXN0cyBpbiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIENXRCB0byBhCisgICAgICAgICMgdGVtcG9yYXJ5IGFuZCB3cml0YWJsZSBkaXJlY3RvcnkuICBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgb3IKKyAgICAgICAgIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuICBUaGUgb3JpZ2luYWwgQ1dEIGlzCisgICAgICAgICMgYXZhaWxhYmxlIGZyb20gc3VwcG9ydC5TQVZFRENXRC4KKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHRlc3RfY3dkLCBxdWlldD1UcnVlKToKKyAgICAgICAgICAgIHNlbGYuX21haW4odGVzdHMsIGt3YXJncykKKworICAgIGRlZiBfbWFpbihzZWxmLCB0ZXN0cywga3dhcmdzKToKKyAgICAgICAgc2VsZi5ucyA9IHNlbGYucGFyc2VfYXJncyhrd2FyZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy5zbGF2ZWFyZ3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmcm9tIHRlc3QubGlicmVncnRlc3QucnVudGVzdF9tcCBpbXBvcnQgcnVuX3Rlc3RzX3NsYXZlCisgICAgICAgICAgICBydW5fdGVzdHNfc2xhdmUoc2VsZi5ucy5zbGF2ZWFyZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy53YWl0OgorICAgICAgICAgICAgaW5wdXQoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKQorCisgICAgICAgIHN1cHBvcnQuUEdPID0gc2VsZi5ucy5wZ28KKworICAgICAgICBzZXR1cF90ZXN0cyhzZWxmLm5zKQorCisgICAgICAgIHNlbGYuZmluZF90ZXN0cyh0ZXN0cykKKworICAgICAgICBpZiBzZWxmLm5zLmxpc3RfdGVzdHM6CisgICAgICAgICAgICBzZWxmLmxpc3RfdGVzdHMoKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgICAgICBzZWxmLnJ1bl90ZXN0cygpCisgICAgICAgIHNlbGYuZGlzcGxheV9yZXN1bHQoKQorCisgICAgICAgIGlmIHNlbGYubnMudmVyYm9zZTIgYW5kIHNlbGYuYmFkOgorICAgICAgICAgICAgc2VsZi5yZXJ1bl9mYWlsZWRfdGVzdHMoKQorCisgICAgICAgIHNlbGYuZmluYWxpemUoKQorICAgICAgICBzeXMuZXhpdChsZW4oc2VsZi5iYWQpID4gMCBvciBzZWxmLmludGVycnVwdGVkKQorCisKK2RlZiByZW1vdmVweShuYW1lcyk6CisgICAgaWYgbm90IG5hbWVzOgorICAgICAgICByZXR1cm4KKyAgICBmb3IgaWR4LCBuYW1lIGluIGVudW1lcmF0ZShuYW1lcyk6CisgICAgICAgIGJhc2VuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIGV4dCA9PSAnLnB5JzoKKyAgICAgICAgICAgIG5hbWVzW2lkeF0gPSBiYXNlbmFtZQorCisKK2RlZiBjb3VudChuLCB3b3JkKToKKyAgICBpZiBuID09IDE6CisgICAgICAgIHJldHVybiAiJWQgJXMiICUgKG4sIHdvcmQpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICIlZCAlc3MiICUgKG4sIHdvcmQpCisKKworZGVmIHByaW50bGlzdCh4LCB3aWR0aD03MCwgaW5kZW50PTQpOgorICAgICIiIlByaW50IHRoZSBlbGVtZW50cyBvZiBpdGVyYWJsZSB4IHRvIHN0ZG91dC4KKworICAgIE9wdGlvbmFsIGFyZyB3aWR0aCAoZGVmYXVsdCA3MCkgaXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGguCisgICAgT3B0aW9uYWwgYXJnIGluZGVudCAoZGVmYXVsdCA0KSBpcyB0aGUgbnVtYmVyIG9mIGJsYW5rcyB3aXRoIHdoaWNoIHRvCisgICAgYmVnaW4gZWFjaCBsaW5lLgorICAgICIiIgorCisgICAgYmxhbmtzID0gJyAnICogaW5kZW50CisgICAgIyBQcmludCB0aGUgc29ydGVkIGxpc3Q6ICd4JyBtYXkgYmUgYSAnLS1yYW5kb20nIGxpc3Qgb3IgYSBzZXQoKQorICAgIHByaW50KHRleHR3cmFwLmZpbGwoJyAnLmpvaW4oc3RyKGVsdCkgZm9yIGVsdCBpbiBzb3J0ZWQoeCkpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PWJsYW5rcywgc3Vic2VxdWVudF9pbmRlbnQ9YmxhbmtzKSkKKworCitkZWYgbWFpbih0ZXN0cz1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUnVuIHRoZSBQeXRob24gc3VpdGUuIiIiCisgICAgUmVncnRlc3QoKS5tYWluKHRlc3RzPXRlc3RzLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3JlZmxlYWsucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZGM0OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5CkBAIC0wLDAgKzEsMjAyIEBACitpbXBvcnQgZXJybm8KK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gaW5zcGVjdCBpbXBvcnQgaXNhYnN0cmFjdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKwordHJ5OgorICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQorZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICBNQVhGRCA9IDI1NgorCisKK2RlZiBmZF9jb3VudCgpOgorICAgICIiIkNvdW50IHRoZSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIiIiCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdmcmVlYnNkJykpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoIi9wcm9jL3NlbGYvZmQiKQorICAgICAgICAgICAgcmV0dXJuIGxlbihuYW1lcykKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgY291bnQgPSAwCisgICAgZm9yIGZkIGluIHJhbmdlKE1BWEZEKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBQcmVmZXIgZHVwKCkgb3ZlciBmc3RhdCgpLiBmc3RhdCgpIGNhbiByZXF1aXJlIGlucHV0L291dHB1dAorICAgICAgICAgICAgIyB3aGVyZWFzIGR1cCgpIGRvZXNuJ3QuCisgICAgICAgICAgICBmZDIgPSBvcy5kdXAoZmQpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVCQURGOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcy5jbG9zZShmZDIpCisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgcmV0dXJuIGNvdW50CisKKworZGVmIGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCBpbmRpcmVjdF90ZXN0LCBodW50cmxlYWtzKToKKyAgICAiIiJSdW4gYSB0ZXN0IG11bHRpcGxlIHRpbWVzLCBsb29raW5nIGZvciByZWZlcmVuY2UgbGVha3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBGYWxzZSBpZiB0aGUgdGVzdCBkaWRuJ3QgbGVhayByZWZlcmVuY2VzOyBUcnVlIGlmIHdlIGRldGVjdGVkIHJlZmxlYWtzLgorICAgICIiIgorICAgICMgVGhpcyBjb2RlIGlzIGhhY2tpc2ggYW5kIGluZWxlZ2FudCwgYnV0IGl0IHNlZW1zIHRvIGRvIHRoZSBqb2IuCisgICAgaW1wb3J0IGNvcHlyZWcKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCisKKyAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVHJhY2tpbmcgcmVmZXJlbmNlIGxlYWtzIHJlcXVpcmVzIGEgZGVidWcgYnVpbGQgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9mIFB5dGhvbiIpCisKKyAgICAjIFNhdmUgY3VycmVudCB2YWx1ZXMgZm9yIGRhc2hfUl9jbGVhbnVwKCkgdG8gcmVzdG9yZS4KKyAgICBmcyA9IHdhcm5pbmdzLmZpbHRlcnNbOl0KKyAgICBwcyA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICAgcGljID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY29weSgpCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgemlwaW1wb3J0CisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICB6ZGMgPSBOb25lICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKKyAgICBlbHNlOgorICAgICAgICB6ZGMgPSB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY29weSgpCisgICAgYWJjcyA9IHt9CisgICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKKyAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKKyAgICAgICAgICAgIGFiY3Nbb2JqXSA9IG9iai5fYWJjX3JlZ2lzdHJ5LmNvcHkoKQorCisgICAgbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lID0gaHVudHJsZWFrcworICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIGZuYW1lKQorICAgIHJlcGNvdW50ID0gbndhcm11cCArIG50cmFja2VkCisgICAgcmNfZGVsdGFzID0gWzBdICogcmVwY291bnQKKyAgICBhbGxvY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAorICAgIGZkX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50CisKKyAgICBwcmludCgiYmVnaW5uaW5nIiwgcmVwY291bnQsICJyZXBldGl0aW9ucyIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBwcmludCgoIjEyMzQ1Njc4OTAiKihyZXBjb3VudC8vMTAgKyAxKSlbOnJlcGNvdW50XSwgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgIGZsdXNoPVRydWUpCisgICAgIyBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBtYWtlIHB5Zmxha2VzIHF1aWV0CisgICAgcmNfYmVmb3JlID0gYWxsb2NfYmVmb3JlID0gZmRfYmVmb3JlID0gMAorICAgIGZvciBpIGluIHJhbmdlKHJlcGNvdW50KToKKyAgICAgICAgaW5kaXJlY3RfdGVzdCgpCisgICAgICAgIGFsbG9jX2FmdGVyLCByY19hZnRlciwgZmRfYWZ0ZXIgPSBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJjcykKKyAgICAgICAgcHJpbnQoJy4nLCBlbmQ9JycsIGZsdXNoPVRydWUpCisgICAgICAgIGlmIGkgPj0gbndhcm11cDoKKyAgICAgICAgICAgIHJjX2RlbHRhc1tpXSA9IHJjX2FmdGVyIC0gcmNfYmVmb3JlCisgICAgICAgICAgICBhbGxvY19kZWx0YXNbaV0gPSBhbGxvY19hZnRlciAtIGFsbG9jX2JlZm9yZQorICAgICAgICAgICAgZmRfZGVsdGFzW2ldID0gZmRfYWZ0ZXIgLSBmZF9iZWZvcmUKKyAgICAgICAgYWxsb2NfYmVmb3JlID0gYWxsb2NfYWZ0ZXIKKyAgICAgICAgcmNfYmVmb3JlID0gcmNfYWZ0ZXIKKyAgICAgICAgZmRfYmVmb3JlID0gZmRfYWZ0ZXIKKyAgICBwcmludChmaWxlPXN5cy5zdGRlcnIpCisgICAgIyBUaGVzZSBjaGVja2VycyByZXR1cm4gRmFsc2Ugb24gc3VjY2VzcywgVHJ1ZSBvbiBmYWlsdXJlCisgICAgZGVmIGNoZWNrX3JjX2RlbHRhcyhkZWx0YXMpOgorICAgICAgICByZXR1cm4gYW55KGRlbHRhcykKKyAgICBkZWYgY2hlY2tfYWxsb2NfZGVsdGFzKGRlbHRhcyk6CisgICAgICAgICMgQXQgbGVhc3QgMS8zcmQgb2YgMHMKKyAgICAgICAgaWYgMyAqIGRlbHRhcy5jb3VudCgwKSA8IGxlbihkZWx0YXMpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgIyBOb3RoaW5nIGVsc2UgdGhhbiAxcywgMHMgYW5kIC0xcworICAgICAgICBpZiBub3Qgc2V0KGRlbHRhcykgPD0gezEsMCwtMX06CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBmYWlsZWQgPSBGYWxzZQorICAgIGZvciBkZWx0YXMsIGl0ZW1fbmFtZSwgY2hlY2tlciBpbiBbCisgICAgICAgIChyY19kZWx0YXMsICdyZWZlcmVuY2VzJywgY2hlY2tfcmNfZGVsdGFzKSwKKyAgICAgICAgKGFsbG9jX2RlbHRhcywgJ21lbW9yeSBibG9ja3MnLCBjaGVja19hbGxvY19kZWx0YXMpLAorICAgICAgICAoZmRfZGVsdGFzLCAnZmlsZSBkZXNjcmlwdG9ycycsIGNoZWNrX3JjX2RlbHRhcyldOgorICAgICAgICBpZiBjaGVja2VyKGRlbHRhcyk6CisgICAgICAgICAgICBtc2cgPSAnJXMgbGVha2VkICVzICVzLCBzdW09JXMnICUgKAorICAgICAgICAgICAgICAgIHRlc3QsIGRlbHRhc1tud2FybXVwOl0sIGl0ZW1fbmFtZSwgc3VtKGRlbHRhcykpCisgICAgICAgICAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgImEiKSBhcyByZWZyZXA6CisgICAgICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXJlZnJlcCkKKyAgICAgICAgICAgICAgICByZWZyZXAuZmx1c2goKQorICAgICAgICAgICAgZmFpbGVkID0gVHJ1ZQorICAgIHJldHVybiBmYWlsZWQKKworCitkZWYgZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcyk6CisgICAgaW1wb3J0IGdjLCBjb3B5cmVnCisgICAgaW1wb3J0IF9zdHJwdGltZSwgbGluZWNhY2hlCisgICAgaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QsIG1pbWV0eXBlcywgZG9jdGVzdAorICAgIGltcG9ydCBzdHJ1Y3QsIGZpbGVjbXAsIGNvbGxlY3Rpb25zLmFiYworICAgIGZyb20gZGlzdHV0aWxzLmRpcl91dGlsIGltcG9ydCBfcGF0aF9jcmVhdGVkCisgICAgZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CisKKyAgICAjIENsZWFyIHRoZSB3YXJuaW5ncyByZWdpc3RyeSwgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGFnYWluCisgICAgZm9yIG1vZCBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKKyAgICAgICAgaWYgaGFzYXR0cihtb2QsICdfX3dhcm5pbmdyZWdpc3RyeV9fJyk6CisgICAgICAgICAgICBkZWwgbW9kLl9fd2FybmluZ3JlZ2lzdHJ5X18KKworICAgICMgUmVzdG9yZSBzb21lIG9yaWdpbmFsIHZhbHVlcy4KKyAgICB3YXJuaW5ncy5maWx0ZXJzWzpdID0gZnMKKyAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNsZWFyKCkKKyAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLnVwZGF0ZShwcykKKyAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCisgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudXBkYXRlKHBpYykKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCB6aXBpbXBvcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAorICAgIGVsc2U6CisgICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jbGVhcigpCisgICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS51cGRhdGUoemRjKQorCisgICAgIyBjbGVhciB0eXBlIGNhY2hlCisgICAgc3lzLl9jbGVhcl90eXBlX2NhY2hlKCkKKworICAgICMgQ2xlYXIgQUJDIHJlZ2lzdHJpZXMsIHJlc3RvcmluZyBwcmV2aW91c2x5IHNhdmVkIEFCQyByZWdpc3RyaWVzLgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CisgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CisgICAgICAgICAgICBvYmouX2FiY19yZWdpc3RyeSA9IGFiY3MuZ2V0KG9iaiwgV2Vha1NldCgpKS5jb3B5KCkKKyAgICAgICAgICAgIG9iai5fYWJjX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgICAgIG9iai5fYWJjX25lZ2F0aXZlX2NhY2hlLmNsZWFyKCkKKworICAgICMgRmx1c2ggc3RhbmRhcmQgb3V0cHV0LCBzbyB0aGF0IGJ1ZmZlcmVkIGRhdGEgaXMgc2VudCB0byB0aGUgT1MgYW5kCisgICAgIyBhc3NvY2lhdGVkIFB5dGhvbiBvYmplY3RzIGFyZSByZWNsYWltZWQuCisgICAgZm9yIHN0cmVhbSBpbiAoc3lzLnN0ZG91dCwgc3lzLnN0ZGVyciwgc3lzLl9fc3Rkb3V0X18sIHN5cy5fX3N0ZGVycl9fKToKKyAgICAgICAgaWYgc3RyZWFtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3RyZWFtLmZsdXNoKCkKKworICAgICMgQ2xlYXIgYXNzb3J0ZWQgbW9kdWxlIGNhY2hlcy4KKyAgICBfcGF0aF9jcmVhdGVkLmNsZWFyKCkKKyAgICByZS5wdXJnZSgpCisgICAgX3N0cnB0aW1lLl9yZWdleF9jYWNoZS5jbGVhcigpCisgICAgdXJsbGliLnBhcnNlLmNsZWFyX2NhY2hlKCkKKyAgICB1cmxsaWIucmVxdWVzdC51cmxjbGVhbnVwKCkKKyAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgbWltZXR5cGVzLl9kZWZhdWx0X21pbWVfdHlwZXMoKQorICAgIGZpbGVjbXAuX2NhY2hlLmNsZWFyKCkKKyAgICBzdHJ1Y3QuX2NsZWFyY2FjaGUoKQorICAgIGRvY3Rlc3QubWFzdGVyID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IGN0eXBlcworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgIyBEb24ndCB3b3JyeSBhYm91dCByZXNldHRpbmcgdGhlIGNhY2hlIGlmIGN0eXBlcyBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBjdHlwZXMuX3Jlc2V0X2NhY2hlKCkKKworICAgICMgQ29sbGVjdCBjeWNsaWMgdHJhc2ggYW5kIHJlYWQgbWVtb3J5IHN0YXRpc3RpY3MgaW1tZWRpYXRlbHkgYWZ0ZXIuCisgICAgZnVuYzEgPSBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzCisgICAgZnVuYzIgPSBzeXMuZ2V0dG90YWxyZWZjb3VudAorICAgIGdjLmNvbGxlY3QoKQorICAgIHJldHVybiBmdW5jMSgpLCBmdW5jMigpLCBmZF9jb3VudCgpCisKKworZGVmIHdhcm1fY2FjaGVzKCk6CisgICAgIyBjaGFyIGNhY2hlCisgICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCisgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKKyAgICAgICAgc1tpOmkrMV0KKyAgICAjIHVuaWNvZGUgY2FjaGUKKyAgICBbY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NildCisgICAgIyBpbnQgY2FjaGUKKyAgICBsaXN0KHJhbmdlKC01LCAyNTcpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdC5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q1MjkwZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkKQEAgLTAsMCArMSwyNDQgQEAKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5yZWZsZWFrIGltcG9ydCBkYXNoX1IKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5zYXZlX2VudiBpbXBvcnQgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudAorCisKKyMgVGVzdCByZXN1bHQgY29uc3RhbnRzLgorUEFTU0VEID0gMQorRkFJTEVEID0gMAorRU5WX0NIQU5HRUQgPSAtMQorU0tJUFBFRCA9IC0yCitSRVNPVVJDRV9ERU5JRUQgPSAtMworSU5URVJSVVBURUQgPSAtNAorQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCisKK19GT1JNQVRfVEVTVF9SRVNVTFQgPSB7CisgICAgUEFTU0VEOiAnJXMgcGFzc2VkJywKKyAgICBGQUlMRUQ6ICclcyBmYWlsZWQnLAorICAgIEVOVl9DSEFOR0VEOiAnJXMgZmFpbGVkIChlbnYgY2hhbmdlZCknLAorICAgIFNLSVBQRUQ6ICclcyBza2lwcGVkJywKKyAgICBSRVNPVVJDRV9ERU5JRUQ6ICclcyBza2lwcGVkIChyZXNvdXJjZSBkZW5pZWQpJywKKyAgICBJTlRFUlJVUFRFRDogJyVzIGludGVycnVwdGVkJywKKyAgICBDSElMRF9FUlJPUjogJyVzIGNyYXNoZWQnLAorfQorCisjIE1pbmltdW0gZHVyYXRpb24gb2YgYSB0ZXN0IHRvIGRpc3BsYXkgaXRzIGR1cmF0aW9uIG9yIHRvIG1lbnRpb24gdGhhdAorIyB0aGUgdGVzdCBpcyBydW5uaW5nIGluIGJhY2tncm91bmQKK1BST0dSRVNTX01JTl9USU1FID0gMzAuMCAgICMgc2Vjb25kcworCisjIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgorIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCitTVERURVNUUyA9IFsKKyAgICAndGVzdF9ncmFtbWFyJywKKyAgICAndGVzdF9vcGNvZGVzJywKKyAgICAndGVzdF9kaWN0JywKKyAgICAndGVzdF9idWlsdGluJywKKyAgICAndGVzdF9leGNlcHRpb25zJywKKyAgICAndGVzdF90eXBlcycsCisgICAgJ3Rlc3RfdW5pdHRlc3QnLAorICAgICd0ZXN0X2RvY3Rlc3QnLAorICAgICd0ZXN0X2RvY3Rlc3QyJywKKyAgICAndGVzdF9zdXBwb3J0JworXQorCisjIHNldCBvZiB0ZXN0cyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB1c2luZyByZWdydGVzdAorTk9UVEVTVFMgPSBzZXQoKQorCisKK2RlZiBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCByZXN1bHQpOgorICAgIGZtdCA9IF9GT1JNQVRfVEVTVF9SRVNVTFQuZ2V0KHJlc3VsdCwgIiVzIikKKyAgICByZXR1cm4gZm10ICUgdGVzdF9uYW1lCisKKworZGVmIGZpbmR0ZXN0cyh0ZXN0ZGlyPU5vbmUsIHN0ZHRlc3RzPVNURFRFU1RTLCBub3R0ZXN0cz1OT1RURVNUUyk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXBwbGljYWJsZSB0ZXN0IG1vZHVsZXMuIiIiCisgICAgdGVzdGRpciA9IGZpbmR0ZXN0ZGlyKHRlc3RkaXIpCisgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHRlc3RkaXIpCisgICAgdGVzdHMgPSBbXQorICAgIG90aGVycyA9IHNldChzdGR0ZXN0cykgfCBub3R0ZXN0cworICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICBtb2QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKKyAgICAgICAgaWYgbW9kWzo1XSA9PSAidGVzdF8iIGFuZCBleHQgaW4gKCIucHkiLCAiIikgYW5kIG1vZCBub3QgaW4gb3RoZXJzOgorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKG1vZCkKKyAgICByZXR1cm4gc3RkdGVzdHMgKyBzb3J0ZWQodGVzdHMpCisKKworZGVmIHJ1bnRlc3QobnMsIHRlc3QpOgorICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0LgorCisgICAgbnMgLS0gcmVncnRlc3QgbmFtZXNwYWNlIG9mIG9wdGlvbnMKKyAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0CisKKyAgICBSZXR1cm5zIHRoZSB0dXBsZSAocmVzdWx0LCB0ZXN0X3RpbWUpLCB3aGVyZSByZXN1bHQgaXMgb25lIG9mIHRoZQorICAgIGNvbnN0YW50czoKKworICAgICAgICBJTlRFUlJVUFRFRCAgICAgIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gcnVuIHVuZGVyIC1qCisgICAgICAgIFJFU09VUkNFX0RFTklFRCAgdGVzdCBza2lwcGVkIGJlY2F1c2UgcmVzb3VyY2UgZGVuaWVkCisgICAgICAgIFNLSVBQRUQgICAgICAgICAgdGVzdCBza2lwcGVkIGZvciBzb21lIG90aGVyIHJlYXNvbgorICAgICAgICBFTlZfQ0hBTkdFRCAgICAgIHRlc3QgZmFpbGVkIGJlY2F1c2UgaXQgY2hhbmdlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50CisgICAgICAgIEZBSUxFRCAgICAgICAgICAgdGVzdCBmYWlsZWQKKyAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAorICAgICIiIgorCisgICAgb3V0cHV0X29uX2ZhaWx1cmUgPSBucy52ZXJib3NlMworCisgICAgdXNlX3RpbWVvdXQgPSAobnMudGltZW91dCBpcyBub3QgTm9uZSkKKyAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKG5zLnRpbWVvdXQsIGV4aXQ9VHJ1ZSkKKyAgICB0cnk6CisgICAgICAgIHN1cHBvcnQubWF0Y2hfdGVzdHMgPSBucy5tYXRjaF90ZXN0cworICAgICAgICBpZiBucy5mYWlsZmFzdDoKKyAgICAgICAgICAgIHN1cHBvcnQuZmFpbGZhc3QgPSBUcnVlCisgICAgICAgIGlmIG91dHB1dF9vbl9mYWlsdXJlOgorICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gVHJ1ZQorCisgICAgICAgICAgICAjIFJldXNlIHRoZSBzYW1lIGluc3RhbmNlIHRvIGFsbCBjYWxscyB0byBydW50ZXN0KCkuIFNvbWUKKyAgICAgICAgICAgICMgdGVzdHMga2VlcCBhIHJlZmVyZW5jZSB0byBzeXMuc3Rkb3V0IG9yIHN5cy5zdGRlcnIKKyAgICAgICAgICAgICMgKGVnLiB0ZXN0X2FyZ3BhcnNlKS4KKyAgICAgICAgICAgIGlmIHJ1bnRlc3Quc3RyaW5naW8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICAgICAgcnVudGVzdC5zdHJpbmdpbyA9IHN0cmVhbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBydW50ZXN0LnN0cmluZ2lvCisgICAgICAgICAgICAgICAgc3RyZWFtLnNlZWsoMCkKKyAgICAgICAgICAgICAgICBzdHJlYW0udHJ1bmNhdGUoKQorCisgICAgICAgICAgICBvcmlnX3N0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgICAgIG9yaWdfc3RkZXJyID0gc3lzLnN0ZGVycgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzdHJlYW0KKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3RyZWFtCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcihucywgdGVzdCwgZGlzcGxheV9mYWlsdXJlPUZhbHNlKQorICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBGQUlMRUQ6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLndyaXRlKG91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIuZmx1c2goKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gb3JpZ19zdGRvdXQKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IG5zLnZlcmJvc2UgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0CisgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKG5zLCB0ZXN0LCBkaXNwbGF5X2ZhaWx1cmU9bm90IG5zLnZlcmJvc2UpCisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIG5zLnZlcmJvc2UpCitydW50ZXN0LnN0cmluZ2lvID0gTm9uZQorCisKK2RlZiBydW50ZXN0X2lubmVyKG5zLCB0ZXN0LCBkaXNwbGF5X2ZhaWx1cmU9VHJ1ZSk6CisgICAgc3VwcG9ydC51bmxvYWQodGVzdCkKKworICAgIHRlc3RfdGltZSA9IDAuMAorICAgIHJlZmxlYWsgPSBGYWxzZSAgIyBUcnVlIGlmIHRoZSB0ZXN0IGxlYWtlZCByZWZlcmVuY2VzLgorICAgIHRyeToKKyAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKCd0ZXN0LicpIG9yIG5zLnRlc3RkaXI6CisgICAgICAgICAgICBhYnN0ZXN0ID0gdGVzdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBbHdheXMgaW1wb3J0IGl0IGZyb20gdGhlIHRlc3QgcGFja2FnZQorICAgICAgICAgICAgYWJzdGVzdCA9ICd0ZXN0LicgKyB0ZXN0CisgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0LCBucy52ZXJib3NlLCBucy5xdWlldCwgcGdvPW5zLnBnbykgYXMgZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShhYnN0ZXN0KQorICAgICAgICAgICAgIyBJZiB0aGUgdGVzdCBoYXMgYSB0ZXN0X21haW4sIHRoYXQgd2lsbCBydW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAjIHRlc3RzLiAgSWYgbm90LCB1c2Ugbm9ybWFsIHVuaXR0ZXN0IHRlc3QgbG9hZGluZy4KKyAgICAgICAgICAgIHRlc3RfcnVubmVyID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKKyAgICAgICAgICAgIGlmIHRlc3RfcnVubmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVubmVyKCk6CisgICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCisgICAgICAgICAgICAgICAgICAgIGZvciBlcnJvciBpbiBsb2FkZXIuZXJyb3JzOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyb3IsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXJyb3JzIHdoaWxlIGxvYWRpbmcgdGVzdHMiKQorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKKyAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKKyAgICAgICAgICAgIGlmIG5zLmh1bnRybGVha3M6CisgICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCB0ZXN0X3J1bm5lciwgbnMuaHVudHJsZWFrcykKKyAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQorICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkIGFzIG1zZzoKKyAgICAgICAgaWYgbm90IG5zLnF1aWV0IGFuZCBub3QgbnMucGdvOgorICAgICAgICAgICAgcHJpbnQodGVzdCwgInNraXBwZWQgLS0iLCBtc2csIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBSRVNPVVJDRV9ERU5JRUQsIHRlc3RfdGltZQorICAgIGV4Y2VwdCB1bml0dGVzdC5Ta2lwVGVzdCBhcyBtc2c6CisgICAgICAgIGlmIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKKyAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnLCBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gU0tJUFBFRCwgdGVzdF90aW1lCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICByYWlzZQorICAgIGV4Y2VwdCBzdXBwb3J0LlRlc3RGYWlsZWQgYXMgbXNnOgorICAgICAgICBpZiBub3QgbnMucGdvOgorICAgICAgICAgICAgaWYgZGlzcGxheV9mYWlsdXJlOgorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgIGZsdXNoPVRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCIsIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgZXhjZXB0OgorICAgICAgICBtc2cgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCisgICAgICAgIGlmIG5vdCBucy5wZ286CisgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJjcmFzaGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIsCisgICAgICAgICAgICAgICAgICBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKKyAgICBlbHNlOgorICAgICAgICBpZiByZWZsZWFrOgorICAgICAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgICAgIGlmIGVudmlyb25tZW50LmNoYW5nZWQ6CisgICAgICAgICAgICByZXR1cm4gRU5WX0NIQU5HRUQsIHRlc3RfdGltZQorICAgICAgICByZXR1cm4gUEFTU0VELCB0ZXN0X3RpbWUKKworCitkZWYgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0bmFtZSwgdmVyYm9zZSk6CisgICAgaW1wb3J0IHNodXRpbAorICAgIGltcG9ydCBzdGF0CisgICAgaW1wb3J0IGdjCisKKyAgICAjIEZpcnN0IGtpbGwgYW55IGRhbmdsaW5nIHJlZmVyZW5jZXMgdG8gb3BlbiBmaWxlcyBldGMuCisgICAgIyBUaGlzIGNhbiBhbHNvIGlzc3VlIHNvbWUgUmVzb3VyY2VXYXJuaW5ncyB3aGljaCB3b3VsZCBvdGhlcndpc2UgZ2V0CisgICAgIyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBmb2xsb3dpbmcgdGVzdCBydW4sIGFuZCBwb3NzaWJseSBwcm9kdWNlIGZhaWx1cmVzLgorICAgIGdjLmNvbGxlY3QoKQorCisgICAgIyBUcnkgdG8gY2xlYW4gdXAganVuayBjb21tb25seSBsZWZ0IGJlaGluZC4gIFdoaWxlIHRlc3RzIHNob3VsZG4ndCBsZWF2ZQorICAgICMgYW55IGZpbGVzIG9yIGRpcmVjdG9yaWVzIGJlaGluZCwgd2hlbiBhIHRlc3QgZmFpbHMgdGhhdCBjYW4gYmUgdGVkaW91cworICAgICMgZm9yIGl0IHRvIGFycmFuZ2UuICBUaGUgY29uc2VxdWVuY2VzIGNhbiBiZSBlc3BlY2lhbGx5IG5hc3R5IG9uIFdpbmRvd3MsCisgICAgIyBzaW5jZSBpZiBhIHRlc3QgbGVhdmVzIGEgZmlsZSBvcGVuLCBpdCBjYW5ub3QgYmUgZGVsZXRlZCBieSBuYW1lICh3aGlsZQorICAgICMgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCB0aGF0IGhlcmUgZWl0aGVyLCB3ZSBjYW4gZGlzcGxheSB0aGUKKyAgICAjIG5hbWUgb2YgdGhlIG9mZmVuZGluZyB0ZXN0LCB3aGljaCBpcyBhIHJlYWwgaGVscCkuCisgICAgZm9yIG5hbWUgaW4gKHN1cHBvcnQuVEVTVEZOLAorICAgICAgICAgICAgICAgICAiZGJfaG9tZSIsCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5hbWUpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG5hbWUpOgorICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZGlyZWN0b3J5Iiwgc2h1dGlsLnJtdHJlZQorICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZmlsZSIsIG9zLnVubGluaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoIm9zLnBhdGggc2F5cyAlciBleGlzdHMgYnV0IGlzIG5laXRoZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdG9yeSBub3IgZmlsZSIgJSBuYW1lKQorCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBpZiB3ZSBoYXZlIGNobW9kLCBmaXggcG9zc2libGUgcGVybWlzc2lvbnMgcHJvYmxlbXMKKyAgICAgICAgICAgICMgdGhhdCBtaWdodCBwcmV2ZW50IGNsZWFudXAKKyAgICAgICAgICAgIGlmIChoYXNhdHRyKG9zLCAnY2htb2QnKSk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QobmFtZSwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hHIHwgc3RhdC5TX0lSV1hPKQorICAgICAgICAgICAgbnVrZXIobmFtZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBtc2c6CisgICAgICAgICAgICBwcmludCgoIiVyIGxlZnQgYmVoaW5kICVzICVyIGFuZCBpdCBjb3VsZG4ndCBiZSAiCisgICAgICAgICAgICAgICAgInJlbW92ZWQ6ICVzIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSwgbXNnKSksIGZpbGU9c3lzLnN0ZGVycikKKworCitkZWYgZmluZHRlc3RkaXIocGF0aD1Ob25lKToKKyAgICByZXR1cm4gcGF0aCBvciBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkgb3Igb3MuY3VyZGlyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0X21wLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjA0YzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weQpAQCAtMCwwICsxLDI0NSBAQAoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHF1ZXVlCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHR5cGVzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcHJpbnQoIk11bHRpcHJvY2VzcyBvcHRpb24gcmVxdWlyZXMgdGhyZWFkIHN1cHBvcnQiKQorICAgIHN5cy5leGl0KDIpCisKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0IGltcG9ydCAoCisgICAgcnVudGVzdCwgSU5URVJSVVBURUQsIENISUxEX0VSUk9SLCBQUk9HUkVTU19NSU5fVElNRSwKKyAgICBmb3JtYXRfdGVzdF9yZXN1bHQpCitmcm9tIHRlc3QubGlicmVncnRlc3Quc2V0dXAgaW1wb3J0IHNldHVwX3Rlc3RzCisKKworIyBEaXNwbGF5IHRoZSBydW5uaW5nIHRlc3RzIGlmIG5vdGhpbmcgaGFwcGVuZWQgbGFzdCBOIHNlY29uZHMKK1BST0dSRVNTX1VQREFURSA9IDMwLjAgICAjIHNlY29uZHMKKworIyBJZiBpbnRlcnJ1cHRlZCwgZGlzcGxheSB0aGUgd2FpdCBwcm9ncmVzcyBldmVyeSBOIHNlY29uZHMKK1dBSVRfUFJPR1JFU1MgPSAyLjAgICAjIHNlY29uZHMKKworCitkZWYgcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0bmFtZSwgbnMpOgorICAgICIiIlJ1biB0aGUgZ2l2ZW4gdGVzdCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCAtLXNsYXZlYXJncy4KKworICAgIG5zIGlzIHRoZSBvcHRpb24gTmFtZXNwYWNlIHBhcnNlZCBmcm9tIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIHJlZ3J0ZXN0CisgICAgaXMgaW52b2tlZCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCB0aGUgLS1zbGF2ZWFyZ3MgYXJndW1lbnQ7IHdoZW4gdGhlCisgICAgc3VicHJvY2VzcyBleGl0cywgaXRzIHJldHVybiBjb2RlLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgcmV0dXJuZWQgYXMgYQorICAgIDMtdHVwbGUuCisgICAgIiIiCisgICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQorCisgICAgbnNfZGljdCA9IHZhcnMobnMpCisgICAgc2xhdmVhcmdzID0gKG5zX2RpY3QsIHRlc3RuYW1lKQorICAgIHNsYXZlYXJncyA9IGpzb24uZHVtcHMoc2xhdmVhcmdzKQorCisgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAqc3VwcG9ydC5hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgJy1YJywgJ2ZhdWx0aGFuZGxlcicsCisgICAgICAgICAgICctbScsICd0ZXN0LnJlZ3J0ZXN0JywKKyAgICAgICAgICAgJy0tc2xhdmVhcmdzJywgc2xhdmVhcmdzXQorICAgIGlmIG5zLnBnbzoKKyAgICAgICAgY21kICs9IFsnLS1wZ28nXQorCisgICAgIyBSdW5uaW5nIHRoZSBjaGlsZCBmcm9tIHRoZSBzYW1lIHdvcmtpbmcgZGlyZWN0b3J5IGFzIHJlZ3J0ZXN0J3Mgb3JpZ2luYWwKKyAgICAjIGludm9jYXRpb24gZW5zdXJlcyB0aGF0IFRFTVBESVIgZm9yIHRoZSBjaGlsZCBpcyB0aGUgc2FtZSB3aGVuCisgICAgIyBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCkgaXMgdHJ1ZS4gU2VlIGlzc3VlIDE1MzAwLgorICAgIHBvcGVuID0gUG9wZW4oY21kLAorICAgICAgICAgICAgICAgICAgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLAorICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCisgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9KG9zLm5hbWUgIT0gJ250JyksCisgICAgICAgICAgICAgICAgICBjd2Q9c3VwcG9ydC5TQVZFRENXRCkKKyAgICB3aXRoIHBvcGVuOgorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKKyAgICAgICAgcmV0Y29kZSA9IHBvcGVuLndhaXQoKQorICAgIHJldHVybiByZXRjb2RlLCBzdGRvdXQsIHN0ZGVycgorCisKK2RlZiBydW5fdGVzdHNfc2xhdmUoc2xhdmVhcmdzKToKKyAgICBuc19kaWN0LCB0ZXN0bmFtZSA9IGpzb24ubG9hZHMoc2xhdmVhcmdzKQorICAgIG5zID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCoqbnNfZGljdCkKKworICAgIHNldHVwX3Rlc3RzKG5zKQorCisgICAgdHJ5OgorICAgICAgICByZXN1bHQgPSBydW50ZXN0KG5zLCB0ZXN0bmFtZSkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHJlc3VsdCA9IElOVEVSUlVQVEVELCAnJworICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICByZXN1bHQgPSBDSElMRF9FUlJPUiwgc3RyKGUpCisKKyAgICBwcmludCgpICAgIyBGb3JjZSBhIG5ld2xpbmUgKGp1c3QgaW4gY2FzZSkKKyAgICBwcmludChqc29uLmR1bXBzKHJlc3VsdCksIGZsdXNoPVRydWUpCisgICAgc3lzLmV4aXQoMCkKKworCisjIFdlIGRvIG5vdCB1c2UgYSBnZW5lcmF0b3Igc28gbXVsdGlwbGUgdGhyZWFkcyBjYW4gY2FsbCBuZXh0KCkuCitjbGFzcyBNdWx0aXByb2Nlc3NJdGVyYXRvcjoKKworICAgICIiIkEgdGhyZWFkLXNhZmUgaXRlcmF0b3Igb3ZlciB0ZXN0cyBmb3IgbXVsdGlwcm9jZXNzIG1vZGUuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHMpOgorICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmxvY2s6CisgICAgICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oJ3Rlc3RzIGludGVycnVwdGVkJykKKyAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGVzdHMpCisKKworY2xhc3MgTXVsdGlwcm9jZXNzVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwZW5kaW5nLCBvdXRwdXQsIG5zKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYucGVuZGluZyA9IHBlbmRpbmcKKyAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgc2VsZi5ucyA9IG5zCisgICAgICAgIHNlbGYuY3VycmVudF90ZXN0ID0gTm9uZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisKKyAgICBkZWYgX3J1bnRlc3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3QgPSBuZXh0KHNlbGYucGVuZGluZykKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IHRlc3QKKworICAgICAgICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBydW5fdGVzdF9pbl9zdWJwcm9jZXNzKHRlc3QsIHNlbGYubnMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IE5vbmUKKworICAgICAgICBzdGRvdXQsIF8sIHJlc3VsdCA9IHN0ZG91dC5zdHJpcCgpLnJwYXJ0aXRpb24oIlxuIikKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgorICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN1bHQpCisgICAgICAgIHNlbGYub3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdG9wID0gRmFsc2UKKyAgICAgICAgICAgIHdoaWxlIG5vdCBzdG9wOgorICAgICAgICAgICAgICAgIHN0b3AgPSBzZWxmLl9ydW50ZXN0KCkKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgcmFpc2UKKworCitkZWYgcnVuX3Rlc3RzX211bHRpcHJvY2VzcyhyZWdydGVzdCk6CisgICAgb3V0cHV0ID0gcXVldWUuUXVldWUoKQorICAgIHBlbmRpbmcgPSBNdWx0aXByb2Nlc3NJdGVyYXRvcihyZWdydGVzdC50ZXN0cykKKyAgICB0ZXN0X3RpbWVvdXQgPSByZWdydGVzdC5ucy50aW1lb3V0CisgICAgdXNlX3RpbWVvdXQgPSAodGVzdF90aW1lb3V0IGlzIG5vdCBOb25lKQorCisgICAgd29ya2VycyA9IFtNdWx0aXByb2Nlc3NUaHJlYWQocGVuZGluZywgb3V0cHV0LCByZWdydGVzdC5ucykKKyAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHJlZ3J0ZXN0Lm5zLnVzZV9tcCldCisgICAgcHJpbnQoIlJ1biB0ZXN0cyBpbiBwYXJhbGxlbCB1c2luZyAlcyBjaGlsZCBwcm9jZXNzZXMiCisgICAgICAgICAgJSBsZW4od29ya2VycykpCisgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICB3b3JrZXIuc3RhcnQoKQorCisgICAgZGVmIGdldF9ydW5uaW5nKHdvcmtlcnMpOgorICAgICAgICBydW5uaW5nID0gW10KKyAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICAgICAgY3VycmVudF90ZXN0ID0gd29ya2VyLmN1cnJlbnRfdGVzdAorICAgICAgICAgICAgaWYgbm90IGN1cnJlbnRfdGVzdDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gd29ya2VyLnN0YXJ0X3RpbWUKKyAgICAgICAgICAgIGlmIGR0ID49IFBST0dSRVNTX01JTl9USU1FOgorICAgICAgICAgICAgICAgIHJ1bm5pbmcuYXBwZW5kKCclcyAoJS4wZiBzZWMpJyAlIChjdXJyZW50X3Rlc3QsIGR0KSkKKyAgICAgICAgcmV0dXJuIHJ1bm5pbmcKKworICAgIGZpbmlzaGVkID0gMAorICAgIHRlc3RfaW5kZXggPSAxCisgICAgZ2V0X3RpbWVvdXQgPSBtYXgoUFJPR1JFU1NfVVBEQVRFLCBQUk9HUkVTU19NSU5fVElNRSkKKyAgICB0cnk6CisgICAgICAgIHdoaWxlIGZpbmlzaGVkIDwgcmVncnRlc3QubnMudXNlX21wOgorICAgICAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKHRlc3RfdGltZW91dCwgZXhpdD1UcnVlKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXRlbSA9IG91dHB1dC5nZXQodGltZW91dD1nZXRfdGltZW91dCkKKyAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBydW5uaW5nID0gZ2V0X3J1bm5pbmcod29ya2VycykKKyAgICAgICAgICAgICAgICBpZiBydW5uaW5nIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgICAgICBwcmludCgncnVubmluZzogJXMnICUgJywgJy5qb2luKHJ1bm5pbmcpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRlc3QsIHN0ZG91dCwgc3RkZXJyLCByZXN1bHQgPSBpdGVtCisgICAgICAgICAgICBpZiB0ZXN0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZmluaXNoZWQgKz0gMQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZWdydGVzdC5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisKKyAgICAgICAgICAgICMgRGlzcGxheSBwcm9ncmVzcworICAgICAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAorICAgICAgICAgICAgdGV4dCA9IGZvcm1hdF90ZXN0X3Jlc3VsdCh0ZXN0LCBvaykKKyAgICAgICAgICAgIGlmIChvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCkKKyAgICAgICAgICAgICAgICBhbmQgdGVzdF90aW1lID49IFBST0dSRVNTX01JTl9USU1FCisgICAgICAgICAgICAgICAgYW5kIG5vdCByZWdydGVzdC5ucy5wZ28pOgorICAgICAgICAgICAgICAgIHRleHQgKz0gJyAoJS4wZiBzZWMpJyAlIHRlc3RfdGltZQorICAgICAgICAgICAgcnVubmluZyA9IGdldF9ydW5uaW5nKHdvcmtlcnMpCisgICAgICAgICAgICBpZiBydW5uaW5nIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgIHRleHQgKz0gJyAtLSBydW5uaW5nOiAlcycgJSAnLCAnLmpvaW4ocnVubmluZykKKyAgICAgICAgICAgIHJlZ3J0ZXN0LmRpc3BsYXlfcHJvZ3Jlc3ModGVzdF9pbmRleCwgdGV4dCkKKworICAgICAgICAgICAgIyBDb3B5IHN0ZG91dCBhbmQgc3RkZXJyIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MKKyAgICAgICAgICAgIGlmIHN0ZG91dDoKKyAgICAgICAgICAgICAgICBwcmludChzdGRvdXQsIGZsdXNoPVRydWUpCisgICAgICAgICAgICBpZiBzdGRlcnIgYW5kIG5vdCByZWdydGVzdC5ucy5wZ286CisgICAgICAgICAgICAgICAgcHJpbnQoc3RkZXJyLCBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisKKyAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBJTlRFUlJVUFRFRDoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IENISUxEX0VSUk9SOgorICAgICAgICAgICAgICAgIG1zZyA9ICJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKG1zZykKKyAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcmVncnRlc3QuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIHBlbmRpbmcuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIHByaW50KCkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorCisgICAgIyBJZiB0ZXN0cyBhcmUgaW50ZXJydXB0ZWQsIHdhaXQgdW50aWwgdGVzdHMgY29tcGxldGUKKyAgICB3YWl0X3N0YXJ0ID0gdGltZS5tb25vdG9uaWMoKQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHJ1bm5pbmcgPSBbd29ya2VyLmN1cnJlbnRfdGVzdCBmb3Igd29ya2VyIGluIHdvcmtlcnNdCisgICAgICAgIHJ1bm5pbmcgPSBsaXN0KGZpbHRlcihib29sLCBydW5uaW5nKSkKKyAgICAgICAgaWYgbm90IHJ1bm5pbmc6CisgICAgICAgICAgICBicmVhaworCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHdhaXRfc3RhcnQKKyAgICAgICAgbGluZSA9ICJXYWl0aW5nIGZvciAlcyAoJXMgdGVzdHMpIiAlICgnLCAnLmpvaW4ocnVubmluZyksIGxlbihydW5uaW5nKSkKKyAgICAgICAgaWYgZHQgPj0gV0FJVF9QUk9HUkVTUzoKKyAgICAgICAgICAgIGxpbmUgPSAiJXMgc2luY2UgJS4wZiBzZWMiICUgKGxpbmUsIGR0KQorICAgICAgICBwcmludChsaW5lKQorICAgICAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6CisgICAgICAgICAgICB3b3JrZXIuam9pbihXQUlUX1BST0dSRVNTKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zYXZlX2Vudi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmFkM2FmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkKQEAgLTAsMCArMSwyODUgQEAKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGxvY2FsZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHdhcm5pbmdzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nLCBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKKworCisjIFVuaXQgdGVzdHMgYXJlIHN1cHBvc2VkIHRvIGxlYXZlIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgdW5jaGFuZ2VkCisjIG9uY2UgdGhleSBjb21wbGV0ZS4gIEJ1dCBzb21ldGltZXMgdGVzdHMgaGF2ZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4KKyMgdGVzdHMgZmFpbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGVudmlyb25tZW50IGdvIG9uIHRvIG1lc3MgdXAgb3RoZXIKKyMgdGVzdHMuICBUaGlzIGNhbiBjYXVzZSBpc3N1ZXMgd2l0aCBidWlsZGJvdCBzdGFiaWxpdHksIHNpbmNlIHRlc3RzCisjIGFyZSBydW4gaW4gcmFuZG9tIG9yZGVyIGFuZCBzbyBwcm9ibGVtcyBtYXkgYXBwZWFyIHRvIGNvbWUgYW5kIGdvLgorIyBUaGVyZSBhcmUgYSBmZXcgdGhpbmdzIHdlIGNhbiBzYXZlIGFuZCByZXN0b3JlIHRvIG1pdGlnYXRlIHRoaXMsIGFuZAorIyB0aGUgZm9sbG93aW5nIGNvbnRleHQgbWFuYWdlciBoYW5kbGVzIHRoaXMgdGFzay4KKworY2xhc3Mgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudDoKKyAgICAiIiJTYXZlIGJpdHMgb2YgdGhlIHRlc3QgZW52aXJvbm1lbnQgYW5kIHJlc3RvcmUgdGhlbSBhdCBibG9jayBleGl0LgorCisgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0bmFtZSwgdmVyYm9zZSwgcXVpZXQpOgorICAgICAgICAgICAgI3N0dWZmCisKKyAgICBVbmxlc3MgcXVpZXQgaXMgVHJ1ZSwgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gc3RkZXJyIGlmIGFueSBvZgorICAgIHRoZSBzYXZlZCBpdGVtcyB3YXMgY2hhbmdlZCBieSB0aGUgdGVzdC4gIFRoZSBhdHRyaWJ1dGUgJ2NoYW5nZWQnCisgICAgaXMgaW5pdGlhbGx5IEZhbHNlLCBidXQgaXMgc2V0IHRvIFRydWUgaWYgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCisKKyAgICBJZiB2ZXJib3NlIGlzIG1vcmUgdGhhbiAxLCB0aGUgYmVmb3JlIGFuZCBhZnRlciBzdGF0ZSBvZiBjaGFuZ2VkCisgICAgaXRlbXMgaXMgYWxzbyBwcmludGVkLgorICAgICIiIgorCisgICAgY2hhbmdlZCA9IEZhbHNlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdG5hbWUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsICosIHBnbz1GYWxzZSk6CisgICAgICAgIHNlbGYudGVzdG5hbWUgPSB0ZXN0bmFtZQorICAgICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCisgICAgICAgIHNlbGYucXVpZXQgPSBxdWlldAorICAgICAgICBzZWxmLnBnbyA9IHBnbworCisgICAgIyBUbyBhZGQgdGhpbmdzIHRvIHNhdmUgYW5kIHJlc3RvcmUsIGFkZCBhIG5hbWUgWFhYIHRvIHRoZSByZXNvdXJjZXMgbGlzdAorICAgICMgYW5kIGFkZCBjb3JyZXNwb25kaW5nIGdldF9YWFgvcmVzdG9yZV9YWFggZnVuY3Rpb25zLiAgZ2V0X1hYWCBzaG91bGQKKyAgICAjIHJldHVybiB0aGUgdmFsdWUgdG8gYmUgc2F2ZWQgYW5kIGNvbXBhcmVkIGFnYWluc3QgYSBzZWNvbmQgY2FsbCB0byB0aGUKKyAgICAjIGdldCBmdW5jdGlvbiB3aGVuIHRlc3QgZXhlY3V0aW9uIGNvbXBsZXRlcy4gIHJlc3RvcmVfWFhYIHNob3VsZCBhY2NlcHQKKyAgICAjIHRoZSBzYXZlZCB2YWx1ZSBhbmQgcmVzdG9yZSB0aGUgcmVzb3VyY2UgdXNpbmcgaXQuICBJdCB3aWxsIGJlIGNhbGxlZCBpZgorICAgICMgYW5kIG9ubHkgaWYgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIGlzIGRldGVjdGVkLgorICAgICMKKyAgICAjIE5vdGU6IFhYWCB3aWxsIGhhdmUgYW55ICcuJyByZXBsYWNlZCB3aXRoICdfJyBjaGFyYWN0ZXJzIHdoZW4gZGV0ZXJtaW5pbmcKKyAgICAjIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBuYW1lcy4KKworICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAorICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKKyAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzLmZpbHRlcnMnLCAnYXN5bmNvcmUuc29ja2V0X21hcCcsCisgICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsICdzeXMuZ2V0dHJhY2UnLAorICAgICAgICAgICAgICAgICAnc3lzLndhcm5vcHRpb25zJywKKyAgICAgICAgICAgICAgICAgIyBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpIG1heSByZWxlYXNlIHJlZgorICAgICAgICAgICAgICAgICAjIHRvIGEgdGhyZWFkLCBzbyBjaGVjayBwcm9jZXNzZXMgZmlyc3QuCisgICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCisgICAgICAgICAgICAgICAgICdzeXNjb25maWcuX0NPTkZJR19WQVJTJywgJ3N5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTJywKKyAgICAgICAgICAgICAgICAgJ2ZpbGVzJywgJ2xvY2FsZScsICd3YXJuaW5ncy5zaG93d2FybmluZycsCisgICAgICAgICAgICAgICAgICdzaHV0aWxfYXJjaGl2ZV9mb3JtYXRzJywgJ3NodXRpbF91bnBhY2tfZm9ybWF0cycsCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIGdldF9zeXNfYXJndihzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHN5cy5hcmd2KSwgc3lzLmFyZ3YsIHN5cy5hcmd2WzpdCisgICAgZGVmIHJlc3RvcmVfc3lzX2FyZ3Yoc2VsZiwgc2F2ZWRfYXJndik6CisgICAgICAgIHN5cy5hcmd2ID0gc2F2ZWRfYXJndlsxXQorICAgICAgICBzeXMuYXJndls6XSA9IHNhdmVkX2FyZ3ZbMl0KKworICAgIGRlZiBnZXRfY3dkKHNlbGYpOgorICAgICAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKKyAgICBkZWYgcmVzdG9yZV9jd2Qoc2VsZiwgc2F2ZWRfY3dkKToKKyAgICAgICAgb3MuY2hkaXIoc2F2ZWRfY3dkKQorCisgICAgZGVmIGdldF9zeXNfc3Rkb3V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZG91dAorICAgIGRlZiByZXN0b3JlX3N5c19zdGRvdXQoc2VsZiwgc2F2ZWRfc3Rkb3V0KToKKyAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVkX3N0ZG91dAorCisgICAgZGVmIGdldF9zeXNfc3RkZXJyKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZGVycgorICAgIGRlZiByZXN0b3JlX3N5c19zdGRlcnIoc2VsZiwgc2F2ZWRfc3RkZXJyKToKKyAgICAgICAgc3lzLnN0ZGVyciA9IHNhdmVkX3N0ZGVycgorCisgICAgZGVmIGdldF9zeXNfc3RkaW4oc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuc3RkaW4KKyAgICBkZWYgcmVzdG9yZV9zeXNfc3RkaW4oc2VsZiwgc2F2ZWRfc3RkaW4pOgorICAgICAgICBzeXMuc3RkaW4gPSBzYXZlZF9zdGRpbgorCisgICAgZGVmIGdldF9vc19lbnZpcm9uKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQob3MuZW52aXJvbiksIG9zLmVudmlyb24sIGRpY3Qob3MuZW52aXJvbikKKyAgICBkZWYgcmVzdG9yZV9vc19lbnZpcm9uKHNlbGYsIHNhdmVkX2Vudmlyb24pOgorICAgICAgICBvcy5lbnZpcm9uID0gc2F2ZWRfZW52aXJvblsxXQorICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoc2F2ZWRfZW52aXJvblsyXSkKKworICAgIGRlZiBnZXRfc3lzX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiBpZChzeXMucGF0aCksIHN5cy5wYXRoLCBzeXMucGF0aFs6XQorICAgIGRlZiByZXN0b3JlX3N5c19wYXRoKHNlbGYsIHNhdmVkX3BhdGgpOgorICAgICAgICBzeXMucGF0aCA9IHNhdmVkX3BhdGhbMV0KKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzYXZlZF9wYXRoWzJdCisKKyAgICBkZWYgZ2V0X3N5c19wYXRoX2hvb2tzKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGhfaG9va3MpLCBzeXMucGF0aF9ob29rcywgc3lzLnBhdGhfaG9va3NbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aF9ob29rcyhzZWxmLCBzYXZlZF9ob29rcyk6CisgICAgICAgIHN5cy5wYXRoX2hvb2tzID0gc2F2ZWRfaG9va3NbMV0KKyAgICAgICAgc3lzLnBhdGhfaG9va3NbOl0gPSBzYXZlZF9ob29rc1syXQorCisgICAgZGVmIGdldF9zeXNfZ2V0dHJhY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuZ2V0dHJhY2UoKQorICAgIGRlZiByZXN0b3JlX3N5c19nZXR0cmFjZShzZWxmLCB0cmFjZV9meG4pOgorICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VfZnhuKQorCisgICAgZGVmIGdldF9fX2ltcG9ydF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYnVpbHRpbnMuX19pbXBvcnRfXworICAgIGRlZiByZXN0b3JlX19faW1wb3J0X18oc2VsZiwgaW1wb3J0Xyk6CisgICAgICAgIGJ1aWx0aW5zLl9faW1wb3J0X18gPSBpbXBvcnRfCisKKyAgICBkZWYgZ2V0X3dhcm5pbmdzX2ZpbHRlcnMoc2VsZik6CisgICAgICAgIHJldHVybiBpZCh3YXJuaW5ncy5maWx0ZXJzKSwgd2FybmluZ3MuZmlsdGVycywgd2FybmluZ3MuZmlsdGVyc1s6XQorICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX2ZpbHRlcnMoc2VsZiwgc2F2ZWRfZmlsdGVycyk6CisgICAgICAgIHdhcm5pbmdzLmZpbHRlcnMgPSBzYXZlZF9maWx0ZXJzWzFdCisgICAgICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBzYXZlZF9maWx0ZXJzWzJdCisKKyAgICBkZWYgZ2V0X2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZik6CisgICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCisgICAgICAgICMgWFhYIE1ha2luZyBhIGNvcHkga2VlcHMgb2JqZWN0cyBhbGl2ZSB1bnRpbCBfX2V4aXRfXyBnZXRzIGNhbGxlZC4KKyAgICAgICAgcmV0dXJuIGFzeW5jb3JlIGFuZCBhc3luY29yZS5zb2NrZXRfbWFwLmNvcHkoKSBvciB7fQorICAgIGRlZiByZXN0b3JlX2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZiwgc2F2ZWRfbWFwKToKKyAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKKyAgICAgICAgaWYgYXN5bmNvcmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoaWdub3JlX2FsbD1UcnVlKQorICAgICAgICAgICAgYXN5bmNvcmUuc29ja2V0X21hcC51cGRhdGUoc2F2ZWRfbWFwKQorCisgICAgZGVmIGdldF9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYpOgorICAgICAgICAjIHdlIGNvdWxkIGNhbGwgZ2V0X2FyY2hpdmVzX2Zvcm1hdHMoKSBidXQgdGhhdCBvbmx5IHJldHVybnMgdGhlCisgICAgICAgICMgcmVnaXN0cnkga2V5czsgd2Ugd2FudCB0byBjaGVjayB0aGUgdmFsdWVzIHRvbyAodGhlIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgICMgYXJlIHJlZ2lzdGVyZWQpCisgICAgICAgIHJldHVybiBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUywgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTID0gc2F2ZWRbMF0KKyAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY2xlYXIoKQorICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCisKKyAgICBkZWYgZ2V0X3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMsIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUyA9IHNhdmVkWzBdCisgICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY2xlYXIoKQorICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKKworICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlcnMoc2VsZik6CisgICAgICAgICMgX2hhbmRsZXJzIGlzIGEgV2Vha1ZhbHVlRGljdGlvbmFyeQorICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlcnMpLCBsb2dnaW5nLl9oYW5kbGVycywgbG9nZ2luZy5faGFuZGxlcnMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlcnMoc2VsZiwgc2F2ZWRfaGFuZGxlcnMpOgorICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKKyAgICAgICAgcGFzcworCisgICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmKToKKyAgICAgICAgIyBfaGFuZGxlckxpc3QgaXMgYSBsaXN0IG9mIHdlYWtyZWZzIHRvIGhhbmRsZXJzCisgICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVyTGlzdCksIGxvZ2dpbmcuX2hhbmRsZXJMaXN0LCBsb2dnaW5nLl9oYW5kbGVyTGlzdFs6XQorICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYsIHNhdmVkX2hhbmRsZXJMaXN0KToKKyAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCisgICAgICAgIHBhc3MKKworICAgIGRlZiBnZXRfc3lzX3dhcm5vcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLndhcm5vcHRpb25zKSwgc3lzLndhcm5vcHRpb25zLCBzeXMud2Fybm9wdGlvbnNbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfd2Fybm9wdGlvbnMoc2VsZiwgc2F2ZWRfb3B0aW9ucyk6CisgICAgICAgIHN5cy53YXJub3B0aW9ucyA9IHNhdmVkX29wdGlvbnNbMV0KKyAgICAgICAgc3lzLndhcm5vcHRpb25zWzpdID0gc2F2ZWRfb3B0aW9uc1syXQorCisgICAgIyBDb250cm9sbGluZyBkYW5nbGluZyByZWZlcmVuY2VzIHRvIFRocmVhZCBvYmplY3RzIGNhbiBtYWtlIGl0IGVhc2llcgorICAgICMgdG8gdHJhY2sgcmVmZXJlbmNlIGxlYWtzLgorICAgIGRlZiBnZXRfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmKToKKyAgICAgICAgaWYgbm90IHRocmVhZGluZzoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCisgICAgICAgIHJldHVybiB0aHJlYWRpbmcuX2RhbmdsaW5nLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgorICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcuY2xlYXIoKQorICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKKworICAgICMgU2FtZSBmb3IgUHJvY2VzcyBvYmplY3RzCisgICAgZGVmIGdldF9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZik6CisgICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIFVuam9pbmVkIHByb2Nlc3Mgb2JqZWN0cyBjYW4gc3Vydml2ZSBhZnRlciBwcm9jZXNzIGV4aXRzCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkKKyAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKKyAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jb3B5KCkKKyAgICBkZWYgcmVzdG9yZV9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgorICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCisKKyAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6CisgICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCisgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKKyAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQorICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQorCisgICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAorICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCisKKyAgICBkZWYgZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc29ydGVkKGZuICsgKCcvJyBpZiBvcy5wYXRoLmlzZGlyKGZuKSBlbHNlICcnKQorICAgICAgICAgICAgICAgICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKCkpCisgICAgZGVmIHJlc3RvcmVfZmlsZXMoc2VsZiwgc2F2ZWRfdmFsdWUpOgorICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGlmIGZuIG5vdCBpbiBzYXZlZF92YWx1ZSBhbmQgKGZuICsgJy8nKSBub3QgaW4gc2F2ZWRfdmFsdWU6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6CisgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoZm4pCisgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZm4pOgorICAgICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGZuKQorCisgICAgX2xjID0gW2dldGF0dHIobG9jYWxlLCBsYykgZm9yIGxjIGluIGRpcihsb2NhbGUpCisgICAgICAgICAgIGlmIGxjLnN0YXJ0c3dpdGgoJ0xDXycpXQorICAgIGRlZiBnZXRfbG9jYWxlKHNlbGYpOgorICAgICAgICBwYWlyaW5ncyA9IFtdCisgICAgICAgIGZvciBsYyBpbiBzZWxmLl9sYzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYWlyaW5ncy5hcHBlbmQoKGxjLCBsb2NhbGUuc2V0bG9jYWxlKGxjLCBOb25lKSkpCisgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIHBhaXJpbmdzCisgICAgZGVmIHJlc3RvcmVfbG9jYWxlKHNlbGYsIHNhdmVkKToKKyAgICAgICAgZm9yIGxjLCBzZXR0aW5nIGluIHNhdmVkOgorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsYywgc2V0dGluZykKKworICAgIGRlZiBnZXRfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZik6CisgICAgICAgIHJldHVybiB3YXJuaW5ncy5zaG93d2FybmluZworICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYsIGZ4bik6CisgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nID0gZnhuCisKKyAgICBkZWYgcmVzb3VyY2VfaW5mbyhzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5yZXNvdXJjZXM6CisgICAgICAgICAgICBtZXRob2Rfc3VmZml4ID0gbmFtZS5yZXBsYWNlKCcuJywgJ18nKQorICAgICAgICAgICAgZ2V0X25hbWUgPSAnZ2V0XycgKyBtZXRob2Rfc3VmZml4CisgICAgICAgICAgICByZXN0b3JlX25hbWUgPSAncmVzdG9yZV8nICsgbWV0aG9kX3N1ZmZpeAorICAgICAgICAgICAgeWllbGQgbmFtZSwgZ2V0YXR0cihzZWxmLCBnZXRfbmFtZSksIGdldGF0dHIoc2VsZiwgcmVzdG9yZV9uYW1lKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zYXZlZF92YWx1ZXMgPSBkaWN0KChuYW1lLCBnZXQoKSkgZm9yIG5hbWUsIGdldCwgcmVzdG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCkpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CisgICAgICAgIHNhdmVkX3ZhbHVlcyA9IHNlbGYuc2F2ZWRfdmFsdWVzCisgICAgICAgIGRlbCBzZWxmLnNhdmVkX3ZhbHVlcworICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKSAgIyBTb21lIHJlc291cmNlcyB1c2Ugd2VhayByZWZlcmVuY2VzCisgICAgICAgIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCk6CisgICAgICAgICAgICBjdXJyZW50ID0gZ2V0KCkKKyAgICAgICAgICAgIG9yaWdpbmFsID0gc2F2ZWRfdmFsdWVzLnBvcChuYW1lKQorICAgICAgICAgICAgIyBDaGVjayBmb3IgY2hhbmdlcyB0byB0aGUgcmVzb3VyY2UncyB2YWx1ZQorICAgICAgICAgICAgaWYgY3VycmVudCAhPSBvcmlnaW5hbDoKKyAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmVzdG9yZShvcmlnaW5hbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5xdWlldCBhbmQgbm90IHNlbGYucGdvOgorICAgICAgICAgICAgICAgICAgICBwcmludChmIldhcm5pbmcgLS0ge25hbWV9IHdhcyBtb2RpZmllZCBieSB7c2VsZi50ZXN0bmFtZX0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZSA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludChmIiAgQmVmb3JlOiB7b3JpZ2luYWx9XG4gIEFmdGVyOiAge2N1cnJlbnR9ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDI0NTMxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkKQEAgLTAsMCArMSwxMjEgQEAKK2ltcG9ydCBhdGV4aXQKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgZ2MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnYyA9IE5vbmUKKworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJlZmxlYWsgaW1wb3J0IHdhcm1fY2FjaGVzCisKKworZGVmIHNldHVwX3Rlc3RzKG5zKToKKyAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzIChlLmcuIHNlZ2ZhdWx0KQorICAgIGZhdWx0aGFuZGxlci5lbmFibGUoYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBTSUdBTFJNIG9yIFNJR1VTUjEgc2lnbmFsCisgICAgc2lnbmFscyA9IFtdCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdBTFJNKQorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHVVNSMScpOgorICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHVVNSMSkKKyAgICBmb3Igc2lnbnVtIGluIHNpZ25hbHM6CisgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWdudW0sIGNoYWluPVRydWUpCisKKyAgICByZXBsYWNlX3N0ZG91dCgpCisgICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCisKKyAgICBpZiBucy50ZXN0ZGlyOgorICAgICAgICAjIFByZXBlbmQgdGVzdCBkaXJlY3RvcnkgdG8gc3lzLnBhdGgsIHNvIHJ1bnRlc3QoKSB3aWxsIGJlIGFibGUKKyAgICAgICAgIyB0byBsb2NhdGUgdGVzdHMKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aChucy50ZXN0ZGlyKSkKKworICAgICMgU29tZSB0aW1lcyBfX3BhdGhfXyBhbmQgX19maWxlX18gYXJlIG5vdCBhYnNvbHV0ZSAoZS5nLiB3aGlsZSBydW5uaW5nIGZyb20KKyAgICAjIExpYi8pIGFuZCwgaWYgd2UgY2hhbmdlIHRoZSBDV0QgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHRlbXBvcmFyeSBkaXIsIHNvbWUKKyAgICAjIGltcG9ydHMgbWlnaHQgZmFpbC4gIFRoaXMgYWZmZWN0cyBvbmx5IHRoZSBtb2R1bGVzIGltcG9ydGVkIGJlZm9yZSBvcy5jaGRpcigpLgorICAgICMgVGhlc2UgbW9kdWxlcyBhcmUgc2VhcmNoZWQgZmlyc3QgaW4gc3lzLnBhdGhbMF0gKHNvICcnIC0tIHRoZSBDV0QpIGFuZCBpZgorICAgICMgdGhleSBhcmUgZm91bmQgaW4gdGhlIENXRCB0aGVpciBfX2ZpbGVfXyBhbmQgX19wYXRoX18gd2lsbCBiZSByZWxhdGl2ZSAodGhpcworICAgICMgaGFwcGVucyBiZWZvcmUgdGhlIGNoZGlyKS4gIEFsbCB0aGUgbW9kdWxlcyBpbXBvcnRlZCBhZnRlciB0aGUgY2hkaXIsIGFyZQorICAgICMgbm90IGZvdW5kIGluIHRoZSBDV0QsIGFuZCBzaW5jZSB0aGUgb3RoZXIgcGF0aHMgaW4gc3lzLnBhdGhbMTpdIGFyZSBhYnNvbHV0ZQorICAgICMgKHNpdGUucHkgYWJzb2x1dGl6ZSB0aGVtKSwgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIGFic29sdXRlIHRvby4KKyAgICAjIFRoZXJlZm9yZSBpdCBpcyBuZWNlc3NhcnkgdG8gYWJzb2x1dGl6ZSBtYW51YWxseSB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIG9mCisgICAgIyB0aGUgcGFja2FnZXMgdG8gcHJldmVudCBsYXRlciBpbXBvcnRzIHRvIGZhaWwgd2hlbiB0aGUgQ1dEIGlzIGRpZmZlcmVudC4KKyAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLnZhbHVlcygpOgorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICBmb3IgaW5kZXgsIHBhdGggaW4gZW51bWVyYXRlKG1vZHVsZS5fX3BhdGhfXyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fW2luZGV4XSA9IG9zLnBhdGguYWJzcGF0aChwYXRoKQorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6CisgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBvcy5wYXRoLmFic3BhdGgobW9kdWxlLl9fZmlsZV9fKQorCisgICAgIyBNYWNPU1ggKGEuay5hLiBEYXJ3aW4pIGhhcyBhIGRlZmF1bHQgc3RhY2sgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAorICAgICMgZm9yIGRlZXBseSByZWN1cnNpdmUgcmVndWxhciBleHByZXNzaW9ucy4gIFdlIHNlZSB0aGlzIGFzIGNyYXNoZXMgaW4KKyAgICAjIHRoZSBQeXRob24gdGVzdCBzdWl0ZSB3aGVuIHJ1bm5pbmcgdGVzdF9yZS5weSBhbmQgdGVzdF9zcmUucHkuICBUaGUKKyAgICAjIGZpeCBpcyB0byBzZXQgdGhlIHN0YWNrIGxpbWl0IHRvIDIwNDguCisgICAgIyBUaGlzIGFwcHJvYWNoIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3Igb3RoZXIgVW5peHkgcGxhdGZvcm1zIHRoYXQKKyAgICAjIHN1ZmZlciBmcm9tIHNtYWxsIGRlZmF1bHQgc3RhY2sgbGltaXRzLgorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHJlc291cmNlCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNvZnQsIGhhcmQgPSByZXNvdXJjZS5nZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLKQorICAgICAgICAgICAgbmV3c29mdCA9IG1pbihoYXJkLCBtYXgoc29mdCwgMTAyNCoyMDQ4KSkKKyAgICAgICAgICAgIHJlc291cmNlLnNldHJsaW1pdChyZXNvdXJjZS5STElNSVRfU1RBQ0ssIChuZXdzb2Z0LCBoYXJkKSkKKworICAgIGlmIG5zLmh1bnRybGVha3M6CisgICAgICAgIHVuaXR0ZXN0LkJhc2VUZXN0U3VpdGUuX2NsZWFudXAgPSBGYWxzZQorCisgICAgICAgICMgQXZvaWQgZmFsc2UgcG9zaXRpdmVzIGR1ZSB0byB2YXJpb3VzIGNhY2hlcworICAgICAgICAjIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGE6CisgICAgICAgIHdhcm1fY2FjaGVzKCkKKworICAgIGlmIG5zLm1lbWxpbWl0IGlzIG5vdCBOb25lOgorICAgICAgICBzdXBwb3J0LnNldF9tZW1saW1pdChucy5tZW1saW1pdCkKKworICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZToKKyAgICAgICAgZ2Muc2V0X3RocmVzaG9sZChucy50aHJlc2hvbGQpCisKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBtc3ZjcnQuU2V0RXJyb3JNb2RlKG1zdmNydC5TRU1fRkFJTENSSVRJQ0FMRVJST1JTfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PR1BGQVVMVEVSUk9SQk9YfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9PUEVORklMRUVSUk9SQk9YKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIHJlbGVhc2UgYnVpbGQKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICBpZiBucy52ZXJib3NlIGFuZCBucy52ZXJib3NlID49IDI6CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShtLCBtc3ZjcnQuQ1JUREJHX0ZJTEVfU1RERVJSKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCisKKyAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSBucy51c2VfcmVzb3VyY2VzCisKKworZGVmIHJlcGxhY2Vfc3Rkb3V0KCk6CisgICAgIiIiU2V0IHN0ZG91dCBlbmNvZGVyIGVycm9yIGhhbmRsZXIgdG8gYmFja3NsYXNocmVwbGFjZSAoYXMgc3RkZXJyIGVycm9yCisgICAgaGFuZGxlcikgdG8gYXZvaWQgVW5pY29kZUVuY29kZUVycm9yIHdoZW4gcHJpbnRpbmcgYSB0cmFjZWJhY2siIiIKKyAgICBzdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgc3lzLnN0ZG91dCA9IG9wZW4oc3Rkb3V0LmZpbGVubygpLCAndycsCisgICAgICAgIGVuY29kaW5nPXN0ZG91dC5lbmNvZGluZywKKyAgICAgICAgZXJyb3JzPSJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgY2xvc2VmZD1GYWxzZSwKKyAgICAgICAgbmV3bGluZT0nXG4nKQorCisgICAgZGVmIHJlc3RvcmVfc3Rkb3V0KCk6CisgICAgICAgIHN5cy5zdGRvdXQuY2xvc2UoKQorICAgICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CisgICAgYXRleGl0LnJlZ2lzdGVyKHJlc3RvcmVfc3Rkb3V0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weSBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKaW5kZXggZjIwZmRjMC4uMjZlOTM2OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CkBAIC0yNjYsOSArMjY2LDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgbGlzdCgic3BhbWVnZ3MiKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGEuZXh0ZW5kLCBOb25lKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5leHRlbmQpCiAKKyAgICAgICAgIyBvdmVyZmxvdyB0ZXN0LiBpc3N1ZTE2MjEKKyAgICAgICAgY2xhc3MgQ3VzdG9tSXRlcjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgIGRlZiBfX2xlbmd0aF9oaW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tYXhzaXplCisgICAgICAgIGEgPSBzZWxmLnR5cGUydGVzdChbMSwyLDMsNF0pCisgICAgICAgIGEuZXh0ZW5kKEN1c3RvbUl0ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBbMSwyLDMsNF0pCisKKwogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IHNlbGYudHlwZTJ0ZXN0KFswLCAxLCAyXSkKICAgICAgICAgYS5pbnNlcnQoMCwgLTIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5IGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQppbmRleCBhNjRhYTE4Li5hNmNiM2IxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIF90aHJlYWQgaW1wb3J0IHN0YXJ0X25ld190aHJlYWQsIFRJTUVPVVRfTUFYCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0xOTgsNiArMTk5LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzdWx0c1swXSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1lb3V0KHJlc3VsdHNbMV0sIDAuNSkKIAorICAgIGRlZiB0ZXN0X3dlYWtyZWZfZXhpc3RzKHNlbGYpOgorICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlZigpKQorCisgICAgZGVmIHRlc3Rfd2Vha3JlZl9kZWxldGVkKHNlbGYpOgorICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIGRlbCBsb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZigpKQorCiAKIGNsYXNzIExvY2tUZXN0cyhCYXNlTG9ja1Rlc3RzKToKICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5IGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKaW5kZXggYTFmMjk4ZC4uNGQ5ZjAxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKKysrIGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKQEAgLTMsNyArMyw2IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0ICoKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IDc5MjJiNTQuLjVjODMzNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTEwMDAsNyArMTAwMCw3IEBACiAgICAgICAgICAgICBiJzAnLCAgICAgICAgICAgICAgICAgICAgICAgIyBQT1AKICAgICAgICAgICAgIGInMScsICAgICAgICAgICAgICAgICAgICAgICAjIFBPUF9NQVJLCiAgICAgICAgICAgICBiJzInLCAgICAgICAgICAgICAgICAgICAgICAgIyBEVVAKLSAgICAgICAgICAgICMgYicoMicsICAgICAgICAgICAgICAgICAgICAjIFB5VW5waWNrbGVyIGRvZXNuJ3QgcmFpc2UKKyAgICAgICAgICAgIGInKDInLAogICAgICAgICAgICAgYidSJywgICAgICAgICAgICAgICAgICAgICAgICMgUkVEVUNFCiAgICAgICAgICAgICBiJylSJywKICAgICAgICAgICAgIGInYScsICAgICAgICAgICAgICAgICAgICAgICAjIEFQUEVORApAQCAtMTAwOSw3ICsxMDA5LDcgQEAKICAgICAgICAgICAgIGInTmInLAogICAgICAgICAgICAgYidkJywgICAgICAgICAgICAgICAgICAgICAgICMgRElDVAogICAgICAgICAgICAgYidlJywgICAgICAgICAgICAgICAgICAgICAgICMgQVBQRU5EUwotICAgICAgICAgICAgIyBiJyhlJywgICAgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCisgICAgICAgICAgICBiJyhlJywKICAgICAgICAgICAgIGInaWJ1aWx0aW5zXG5saXN0XG4nLCAgICAgICAjIElOU1QKICAgICAgICAgICAgIGInbCcsICAgICAgICAgICAgICAgICAgICAgICAjIExJU1QKICAgICAgICAgICAgIGInbycsICAgICAgICAgICAgICAgICAgICAgICAjIE9CSgpAQCAtMTAyMiw3ICsxMDIyLDcgQEAKICAgICAgICAgICAgIGInTk5zJywKICAgICAgICAgICAgIGIndCcsICAgICAgICAgICAgICAgICAgICAgICAjIFRVUExFCiAgICAgICAgICAgICBiJ3UnLCAgICAgICAgICAgICAgICAgICAgICAgIyBTRVRJVEVNUwotICAgICAgICAgICAgIyBiJyh1JywgICAgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgZG9lc24ndCByYWlzZQorICAgICAgICAgICAgYicodScsCiAgICAgICAgICAgICBiJ30oTnUnLAogICAgICAgICAgICAgYidceDgxJywgICAgICAgICAgICAgICAgICAgICMgTkVXT0JKCiAgICAgICAgICAgICBiJylceDgxJywKQEAgLTEwMzMsNyArMTAzMyw3IEBACiAgICAgICAgICAgICBiJ05ceDg3JywKICAgICAgICAgICAgIGInTk5ceDg3JywKICAgICAgICAgICAgIGInXHg5MCcsICAgICAgICAgICAgICAgICAgICAjIEFERElURU1TCi0gICAgICAgICAgICAjIGInKFx4OTAnLCAgICAgICAgICAgICAgICAgIyBQeVVucGlja2xlciByYWlzZXMgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgICAgIGInKFx4OTAnLAogICAgICAgICAgICAgYidceDkxJywgICAgICAgICAgICAgICAgICAgICMgRlJPWkVOU0VUCiAgICAgICAgICAgICBiJ1x4OTInLCAgICAgICAgICAgICAgICAgICAgIyBORVdPQkpfRVgKICAgICAgICAgICAgIGInKX1ceDkyJywKQEAgLTEwNDYsNyArMTA0Niw3IEBACiAKICAgICBkZWYgdGVzdF9iYWRfbWFyayhzZWxmKToKICAgICAgICAgYmFkcGlja2xlcyA9IFsKLSAgICAgICAgICAgICMgYidOKC4nLCAgICAgICAgICAgICAgICAgICAgICMgU1RPUAorICAgICAgICAgICAgYidOKC4nLCAgICAgICAgICAgICAgICAgICAgICMgU1RPUAogICAgICAgICAgICAgYidOKDInLCAgICAgICAgICAgICAgICAgICAgICMgRFVQCiAgICAgICAgICAgICBiJ2NidWlsdGluc1xubGlzdFxuKShSJywgICAgIyBSRURVQ0UKICAgICAgICAgICAgIGInY2J1aWx0aW5zXG5saXN0XG4oKVInLApAQCAtMTA4MSw3ICsxMDgxLDcgQEAKICAgICAgICAgICAgIGInTihceDk0JywgICAgICAgICAgICAgICAgICAjIE1FTU9JWkUKICAgICAgICAgXQogICAgICAgICBmb3IgcCBpbiBiYWRwaWNrbGVzOgotICAgICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKHNlbGYuYmFkX21hcmtfZXJyb3JzLCBwKQorICAgICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKHNlbGYuYmFkX3N0YWNrX2Vycm9ycywgcCkKIAogICAgIGRlZiB0ZXN0X3RydW5jYXRlZF9kYXRhKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3VucGlja2xpbmdfZXJyb3IoRU9GRXJyb3IsIGInJykKQEAgLTE4NTUsMTYgKzE4NTUsMTQgQEAKICAgICAgICAgeC5hYmMgPSA2NjYKICAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKLSAgICAgICAgICAgICAgICBpZiAyIDw9IHByb3RvIDwgNDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5kdW1wcywgeCwgcHJvdG8pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoeCwgcHJvdG8pCiAgICAgICAgICAgICAgICAgaWYgcHJvdG8gPCAxOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInXG5MNjQyMDYnLCBzKSAgIyBMT05HCiAgICAgICAgICAgICAgICAgZWxpZiBwcm90byA8IDI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidNXHhjZVx4ZmEnLCBzKSAgIyBCSU5JTlQyCisgICAgICAgICAgICAgICAgZWxpZiBwcm90byA8IDQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidYXHgwNFx4MDBceDAwXHgwMEZBQ0UnLCBzKSAgIyBCSU5VTklDT0RFCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHByb3RvID49IDQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1x4OGNceDA0RkFDRScsIHMpICAjIFNIT1JUX0JJTlVOSUNPREUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSiwgcykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkpfRVgsIHMpLApAQCAtMjU4MywxMSArMjU4MSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHBpY2tsZS5QaWNrbGluZ0Vycm9yLCBCYWRQaWNrbGVyKCkuZHVtcCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocGlja2xlLlVucGlja2xpbmdFcnJvciwgQmFkVW5waWNrbGVyKCkubG9hZCkKIAotICAgIGRlZiB0ZXN0X2JhZF9pbnB1dChzZWxmKToKLSAgICAgICAgIyBUZXN0IGlzc3VlNDI5OAotICAgICAgICBzID0gYnl0ZXMoWzB4NTgsIDAsIDAsIDAsIDB4NTRdKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvciwgcGlja2xlLmxvYWRzLCBzKQotCiAKIGNsYXNzIEFic3RyYWN0UGVyc2lzdGVudFBpY2tsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3B5ZG9jX21vZC5weSBiL0xpYi90ZXN0L3B5ZG9jX21vZC5weQppbmRleCBjZGExYzllLi45YzFmZmY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9weWRvY19tb2QucHkKKysrIGIvTGliL3Rlc3QvcHlkb2NfbW9kLnB5CkBAIC0xMiw3ICsxMiw3IEBACiAgICAgICAgIHBhc3MKIAogY2xhc3MgQihvYmplY3QpOgotICAgIE5PX01FQU5JTkcgPSAiZWdncyIKKyAgICBOT19NRUFOSU5HOiBzdHIgPSAiZWdncyIKICAgICBwYXNzCiAKIGNsYXNzIEMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5IGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKaW5kZXggOGMxNThmOC4uYTM3OWQzMyAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKQEAgLTEwNiw4ICsxMDYsOCBAQAogICAgICgnYS4qYicsICdhY2NcbmNjYicsIEZBSUwpLAogICAgICgnYS57NCw1fWInLCAnYWNjXG5jY2InLCBGQUlMKSwKICAgICAoJ2EuYicsICdhXHJiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FccmInKSwKLSAgICAoJ2EuYig/cyknLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCi0gICAgKCdhLiooP3MpYicsICdhY2NcbmNjYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhY2NcbmNjYicpLAorICAgICgnKD9zKWEuYicsICdhXG5iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FcbmInKSwKKyAgICAoJyg/cylhLipiJywgJ2FjY1xuY2NiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FjY1xuY2NiJyksCiAgICAgKCcoP3MpYS57NCw1fWInLCAnYWNjXG5jY2InLCBTVUNDRUVELCAnZm91bmQnLCAnYWNjXG5jY2InKSwKICAgICAoJyg/cylhLmInLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCiAKQEAgLTE1OCw3ICsxNTgsNyBAQAogICAgICgnKGFiYycsICctJywgU1lOVEFYX0VSUk9SKSwKICAgICAoJ2FdJywgJ2FdJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdJyksCiAgICAgKCdhW11dYicsICdhXWInLCBTVUNDRUVELCAnZm91bmQnLCAnYV1iJyksCi0gICAgKCdhW1xdXWInLCAnYV1iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdYicpLAorICAgICgnYVtcXF1dYicsICdhXWInLCBTVUNDRUVELCAnZm91bmQnLCAnYV1iJyksCiAgICAgKCdhW15iY11kJywgJ2FlZCcsIFNVQ0NFRUQsICdmb3VuZCcsICdhZWQnKSwKICAgICAoJ2FbXmJjXWQnLCAnYWJkJywgRkFJTCksCiAgICAgKCdhW14tYl1jJywgJ2FkYycsIFNVQ0NFRUQsICdmb3VuZCcsICdhZGMnKSwKQEAgLTU1MSw3ICs1NTEsNyBAQAogICAgICMgbG9va2JlaGluZDogc3BsaXQgYnkgOiBidXQgbm90IGlmIGl0IGlzIGVzY2FwZWQgYnkgLS4KICAgICAoJyg/PCEtKTooLio/KSg/PCEtKTonLCAnYTpiYy06ZGU6ZicsIFNVQ0NFRUQsICdnMScsICdiYy06ZGUnICksCiAgICAgIyBlc2NhcGluZyB3aXRoIFwgYXMgd2Uga25vdyBpdAotICAgICgnKD88IVxcXCk6KC4qPykoPzwhXFxcKTonLCAnYTpiY1xcOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmNcXDpkZScgKSwKKyAgICAoJyg/PCFcXFxcKTooLio/KSg/PCFcXFxcKTonLCAnYTpiY1xcOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmNcXDpkZScgKSwKICAgICAjIHRlcm1pbmF0aW5nIHdpdGggJyBhbmQgZXNjYXBpbmcgd2l0aCA/IGFzIGluIGVkaWZhY3QKICAgICAoIig/PCFcXD8pJyguKj8pKD88IVxcPyknIiwgImEnYmM/J2RlJ2YiLCBTVUNDRUVELCAnZzEnLCAiYmM/J2RlIiApLAogCkBAIC01NjMsNyArNTYzLDcgQEAKICAgICAjIENoZWNrIG9kZCBwbGFjZW1lbnQgb2YgZW1iZWRkZWQgcGF0dGVybiBtb2RpZmllcnMKIAogICAgICMgbm90IGFuIGVycm9yIHVuZGVyIFBDUkUvUFJFOgotICAgICgndyg/aSknLCAnVycsIFNVQ0NFRUQsICdmb3VuZCcsICdXJyksCisgICAgKCcoP2kpdycsICdXJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1cnKSwKICAgICAjICgndyg/aSknLCAnVycsIFNZTlRBWF9FUlJPUiksCiAKICAgICAjIENvbW1lbnRzIHVzaW5nIHRoZSB4IGVtYmVkZGVkIHBhdHRlcm4gbW9kaWZpZXIKQEAgLTYyNyw3ICs2MjcsNyBAQAogICAgICMgYnVnIDExNDAzMzogbm90aGluZyB0byByZXBlYXQKICAgICAocicoeD8pPycsICd4JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ3gnKSwKICAgICAjIGJ1ZyAxMTUwNDA6IHJlc2NhbiBpZiBmbGFncyBhcmUgbW9kaWZpZWQgaW5zaWRlIHBhdHRlcm4KLSAgICAocicgKD94KWZvbyAnLCAnZm9vJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2ZvbycpLAorICAgIChyJyg/eCkgZm9vICcsICdmb28nLCBTVUNDRUVELCAnZm91bmQnLCAnZm9vJyksCiAgICAgIyBidWcgMTE1NjE4OiBuZWdhdGl2ZSBsb29rYWhlYWQKICAgICAocicoPzwhYWJjKShkLmYpJywgJ2FiY2RlZmRvZicsIFNVQ0NFRUQsICdmb3VuZCcsICdkb2YnKSwKICAgICAjIGJ1ZyAxMTYyNTE6IGNoYXJhY3RlciBjbGFzcyBidWcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvcmVncnRlc3QucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCA4NTA5ZjU1Li4yMWIwZWRmCi0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC02LDE2MDUgKzYsMzMgQEAKIFJ1biB0aGlzIHNjcmlwdCB3aXRoIC1oIG9yIC0taGVscCBmb3IgZG9jdW1lbnRhdGlvbi4KICIiIgogCi1VU0FHRSA9ICIiIlwKLXB5dGhvbiAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQotcHl0aG9uIHBhdGgvdG8vTGliL3Rlc3QvcmVncnRlc3QucHkgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCi0iIiIKLQotREVTQ1JJUFRJT04gPSAiIiJcCi1SdW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuCi0KLUlmIG5vIGFyZ3VtZW50cyBvciBvcHRpb25zIGFyZSBwcm92aWRlZCwgZmluZHMgYWxsIGZpbGVzIG1hdGNoaW5nCi10aGUgcGF0dGVybiAidGVzdF8qIiBpbiB0aGUgTGliL3Rlc3Qgc3ViZGlyZWN0b3J5IGFuZCBydW5zCi10aGVtIGluIGFscGhhYmV0aWNhbCBvcmRlciAoYnV0IHNlZSAtTSBhbmQgLXUsIGJlbG93LCBmb3IgZXhjZXB0aW9ucykuCi0KLUZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIGl0IGlzIHVzZWZ1bCB0byB1c2UgdGhlIGZvbGxvd2luZwotY29tbWFuZCBsaW5lOgotCi1weXRob24gLUUgLVdkIC1tIHRlc3QgW29wdGlvbnNdIFt0ZXN0X25hbWUxIC4uLl0KLSIiIgotCi1FUElMT0cgPSAiIiJcCi1BZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzOgotCi0tciByYW5kb21pemVzIHRlc3QgZXhlY3V0aW9uIG9yZGVyLiBZb3UgY2FuIHVzZSAtLXJhbmRzZWVkPWludCB0byBwcm92aWRlIGFuCi1pbnQgc2VlZCB2YWx1ZSBmb3IgdGhlIHJhbmRvbWl6ZXI7IHRoaXMgaXMgdXNlZnVsIGZvciByZXByb2R1Y2luZyB0cm91Ymxlc29tZQotdGVzdCBvcmRlcnMuCi0KLS1zIE9uIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHJlZ3J0ZXN0IHVzaW5nIC1zLCB0aGUgZmlyc3QgdGVzdCBmaWxlIGZvdW5kCi1vciB0aGUgZmlyc3QgdGVzdCBmaWxlIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgcnVuLCBhbmQgdGhlIG5hbWUgb2YKLXRoZSBuZXh0IHRlc3QgaXMgcmVjb3JkZWQgaW4gYSBmaWxlIG5hbWVkIHB5bmV4dHRlc3QuICBJZiBydW4gZnJvbSB0aGUKLVB5dGhvbiBidWlsZCBkaXJlY3RvcnksIHB5bmV4dHRlc3QgaXMgbG9jYXRlZCBpbiB0aGUgJ2J1aWxkJyBzdWJkaXJlY3RvcnksCi1vdGhlcndpc2UgaXQgaXMgbG9jYXRlZCBpbiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkuICBPbiBzdWJzZXF1ZW50IHJ1bnMsCi10aGUgdGVzdCBpbiBweW5leHR0ZXN0IGlzIHJ1biwgYW5kIHRoZSBuZXh0IHRlc3QgaXMgd3JpdHRlbiB0byBweW5leHR0ZXN0LgotV2hlbiB0aGUgbGFzdCB0ZXN0IGhhcyBiZWVuIHJ1biwgcHluZXh0dGVzdCBpcyBkZWxldGVkLiAgSW4gdGhpcyB3YXkgaXQKLWlzIHBvc3NpYmxlIHRvIHNpbmdsZSBzdGVwIHRocm91Z2ggdGhlIHRlc3QgZmlsZXMuICBUaGlzIGlzIHVzZWZ1bCB3aGVuCi1kb2luZyBtZW1vcnkgYW5hbHlzaXMgb24gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgd2hpY2ggcHJvY2VzcyB0ZW5kcyB0bwotY29uc3VtZSB0b28gbWFueSByZXNvdXJjZXMgdG8gcnVuIHRoZSBmdWxsIHJlZ3Jlc3Npb24gdGVzdCBub24tc3RvcC4KLQotLVMgaXMgdXNlZCB0byBjb250aW51ZSBydW5uaW5nIHRlc3RzIGFmdGVyIGFuIGFib3J0ZWQgcnVuLiAgSXQgd2lsbAotbWFpbnRhaW4gdGhlIG9yZGVyIGEgc3RhbmRhcmQgcnVuIChpZSwgdGhpcyBhc3N1bWVzIC1yIGlzIG5vdCB1c2VkKS4KLVRoaXMgaXMgdXNlZnVsIGFmdGVyIHRoZSB0ZXN0cyBoYXZlIHByZW1hdHVyZWx5IHN0b3BwZWQgZm9yIHNvbWUgZXh0ZXJuYWwKLXJlYXNvbiBhbmQgeW91IHdhbnQgdG8gc3RhcnQgcnVubmluZyBmcm9tIHdoZXJlIHlvdSBsZWZ0IG9mZiByYXRoZXIKLXRoYW4gc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nLgotCi0tZiByZWFkcyB0aGUgbmFtZXMgb2YgdGVzdHMgZnJvbSB0aGUgZmlsZSBnaXZlbiBhcyBmJ3MgYXJndW1lbnQsIG9uZQotb3IgbW9yZSB0ZXN0IG5hbWVzIHBlciBsaW5lLiAgV2hpdGVzcGFjZSBpcyBpZ25vcmVkLiAgQmxhbmsgbGluZXMgYW5kCi1saW5lcyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIGlnbm9yZWQuICBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvcgotd2hpdHRsaW5nIGRvd24gZmFpbHVyZXMgaW52b2x2aW5nIGludGVyYWN0aW9ucyBhbW9uZyB0ZXN0cy4KLQotLUwgY2F1c2VzIHRoZSBsZWFrcygxKSBjb21tYW5kIHRvIGJlIHJ1biBqdXN0IGJlZm9yZSBleGl0IGlmIGl0IGV4aXN0cy4KLWxlYWtzKDEpIGlzIGF2YWlsYWJsZSBvbiBNYWMgT1MgWCBhbmQgcHJlc3VtYWJseSBvbiBzb21lIG90aGVyCi1GcmVlQlNELWRlcml2ZWQgc3lzdGVtcy4KLQotLVIgcnVucyBlYWNoIHRlc3Qgc2V2ZXJhbCB0aW1lcyBhbmQgZXhhbWluZXMgc3lzLmdldHRvdGFscmVmY291bnQoKSB0bwotc2VlIGlmIHRoZSB0ZXN0IGFwcGVhcnMgdG8gYmUgbGVha2luZyByZWZlcmVuY2VzLiAgVGhlIGFyZ3VtZW50IHNob3VsZAotYmUgb2YgdGhlIGZvcm0gc3RhYjpydW46Zm5hbWUgd2hlcmUgJ3N0YWInIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlCi10ZXN0IGlzIHJ1biB0byBsZXQgZ2V0dG90YWxyZWZjb3VudCBzZXR0bGUgZG93biwgJ3J1bicgaXMgdGhlIG51bWJlcgotb2YgdGltZXMgZnVydGhlciBpdCBpcyBydW4gYW5kICdmbmFtZScgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhlCi1yZXBvcnRzIGFyZSB3cml0dGVuIHRvLiAgVGhlc2UgcGFyYW1ldGVycyBhbGwgaGF2ZSBkZWZhdWx0cyAoNSwgNCBhbmQKLSJyZWZsb2cudHh0IiByZXNwZWN0aXZlbHkpLCBhbmQgdGhlIG1pbmltYWwgaW52b2NhdGlvbiBpcyAnLVIgOicuCi0KLS1NIHJ1bnMgdGVzdHMgdGhhdCByZXF1aXJlIGFuIGV4b3JiaXRhbnQgYW1vdW50IG9mIG1lbW9yeS4gVGhlc2UgdGVzdHMKLXR5cGljYWxseSB0cnkgdG8gYXNjZXJ0YWluIGNvbnRhaW5lcnMga2VlcCB3b3JraW5nIHdoZW4gY29udGFpbmluZyBtb3JlIHRoYW4KLTIgYmlsbGlvbiBvYmplY3RzLCB3aGljaCBvbmx5IHdvcmtzIG9uIDY0LWJpdCBzeXN0ZW1zLiBUaGVyZSBhcmUgYWxzbyBzb21lCi10ZXN0cyB0aGF0IHRyeSB0byBleGhhdXN0IHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCB3aGljaCBvbmx5IG1ha2VzCi1zZW5zZSBvbiAzMi1iaXQgc3lzdGVtcyB3aXRoIGF0IGxlYXN0IDJHYiBvZiBtZW1vcnkuIFRoZSBwYXNzZWQtaW4gbWVtbGltaXQsCi13aGljaCBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybSBvZiAnMi41R2InLCBkZXRlcm1pbmVzIGhvd211Y2ggbWVtb3J5IHRoZQotdGVzdHMgd2lsbCBsaW1pdCB0aGVtc2VsdmVzIHRvIChidXQgdGhleSBtYXkgZ28gc2xpZ2h0bHkgb3Zlci4pIFRoZSBudW1iZXIKLXNob3VsZG4ndCBiZSBtb3JlIG1lbW9yeSB0aGFuIHRoZSBtYWNoaW5lIGhhcyAoaW5jbHVkaW5nIHN3YXAgbWVtb3J5KS4gWW91Ci1zaG91bGQgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBzd2FwIG1lbW9yeSBpcyBnZW5lcmFsbHkgbXVjaCwgbXVjaCBzbG93ZXIKLXRoYW4gUkFNLCBhbmQgc2V0dGluZyBtZW1saW1pdCB0byBhbGwgYXZhaWxhYmxlIFJBTSBvciBoaWdoZXIgd2lsbCBoZWF2aWx5Ci10YXggdGhlIG1hY2hpbmUuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpcyBubyB1c2UgcnVubmluZyB0aGVzZSB0ZXN0cyB3aXRoIGEKLWxpbWl0IG9mIGxlc3MgdGhhbiAyLjVHYiwgYW5kIG1hbnkgcmVxdWlyZSBtb3JlIHRoYW4gMjBHYi4gVGVzdHMgdGhhdCBleHBlY3QKLXRvIHVzZSBtb3JlIHRoYW4gbWVtbGltaXQgbWVtb3J5IHdpbGwgYmUgc2tpcHBlZC4gVGhlIGJpZy1tZW1vcnkgdGVzdHMKLWdlbmVyYWxseSBydW4gdmVyeSwgdmVyeSBsb25nLgotCi0tdSBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuLAotc3VjaCBhcyB0aG9zZSByZXF1aXJpbmcgbGFyZ2UgZmlsZSBzdXBwb3J0IG9yIG5ldHdvcmsgY29ubmVjdGl2aXR5LgotVGhlIGFyZ3VtZW50IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgaW5kaWNhdGluZyB0aGUKLXJlc291cmNlcyB0byB0ZXN0LiAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lZDoKLQotICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCi0KLSAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCi0KLSAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgotICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgotICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCi0KLSAgICBjdXJzZXMgLSAgICBUZXN0cyB0aGF0IHVzZSBjdXJzZXMgYW5kIHdpbGwgbW9kaWZ5IHRoZSB0ZXJtaW5hbCdzCi0gICAgICAgICAgICAgICAgc3RhdGUgYW5kIG91dHB1dCBtb2Rlcy4KLQotICAgIGxhcmdlZmlsZSAtIEl0IGlzIG9rYXkgdG8gcnVuIHNvbWUgdGVzdCB0aGF0IG1heSBjcmVhdGUgaHVnZQotICAgICAgICAgICAgICAgIGZpbGVzLiAgVGhlc2UgdGVzdHMgY2FuIHRha2UgYSBsb25nIHRpbWUgYW5kIG1heQotICAgICAgICAgICAgICAgIGNvbnN1bWUgPjJHQiBvZiBkaXNrIHNwYWNlIHRlbXBvcmFyaWx5LgotCi0gICAgbmV0d29yayAtICAgSXQgaXMgb2theSB0byBydW4gdGVzdHMgdGhhdCB1c2UgZXh0ZXJuYWwgbmV0d29yawotICAgICAgICAgICAgICAgIHJlc291cmNlLCBlLmcuIHRlc3RpbmcgU1NMIHN1cHBvcnQgZm9yIHNvY2tldHMuCi0KLSAgICBkZWNpbWFsIC0gICBUZXN0IHRoZSBkZWNpbWFsIG1vZHVsZSBhZ2FpbnN0IGEgbGFyZ2Ugc3VpdGUgdGhhdAotICAgICAgICAgICAgICAgIHZlcmlmaWVzIGNvbXBsaWFuY2Ugd2l0aCBzdGFuZGFyZHMuCi0KLSAgICBjcHUgLSAgICAgICBVc2VkIGZvciBjZXJ0YWluIENQVS1oZWF2eSB0ZXN0cy4KLQotICAgIHN1YnByb2Nlc3MgIFJ1biBhbGwgdGVzdHMgZm9yIHRoZSBzdWJwcm9jZXNzIG1vZHVsZS4KLQotICAgIHVybGZldGNoIC0gIEl0IGlzIG9rYXkgdG8gZG93bmxvYWQgZmlsZXMgcmVxdWlyZWQgb24gdGVzdGluZy4KLQotICAgIGd1aSAtICAgICAgIFJ1biB0ZXN0cyB0aGF0IHJlcXVpcmUgYSBydW5uaW5nIEdVSS4KLQotVG8gZW5hYmxlIGFsbCByZXNvdXJjZXMgZXhjZXB0IG9uZSwgdXNlICctdWFsbCwtPHJlc291cmNlPicuICBGb3IKLWV4YW1wbGUsIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGV4Y2VwdCBmb3IgdGhlIGd1aSB0ZXN0cywgZ2l2ZSB0aGUKLW9wdGlvbiAnLXVhbGwsLWd1aScuCi0iIiIKLQogIyBXZSBpbXBvcnQgaW1wb3J0bGliICpBU0FQKiBpbiBvcmRlciB0byB0ZXN0ICMxNTM4NgogaW1wb3J0IGltcG9ydGxpYgogCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBidWlsdGlucwotaW1wb3J0IGZhdWx0aGFuZGxlcgotaW1wb3J0IGlvCi1pbXBvcnQganNvbgotaW1wb3J0IGxvY2FsZQotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKLWltcG9ydCBzeXNjb25maWcKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHRpbWUKLWltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgogCi10cnk6Ci0gICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRocmVhZGluZyA9IE5vbmUKLXRyeToKLSAgICBpbXBvcnQgX211bHRpcHJvY2Vzc2luZywgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCiAKKyMgQWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGp1c3QgaW4gY2FzZSkKK21haW5faW5fdGVtcF9jd2QgPSBtYWluCiAKLSMgU29tZSB0aW1lcyBfX3BhdGhfXyBhbmQgX19maWxlX18gYXJlIG5vdCBhYnNvbHV0ZSAoZS5nLiB3aGlsZSBydW5uaW5nIGZyb20KLSMgTGliLykgYW5kLCBpZiB3ZSBjaGFuZ2UgdGhlIENXRCB0byBydW4gdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpciwgc29tZQotIyBpbXBvcnRzIG1pZ2h0IGZhaWwuICBUaGlzIGFmZmVjdHMgb25seSB0aGUgbW9kdWxlcyBpbXBvcnRlZCBiZWZvcmUgb3MuY2hkaXIoKS4KLSMgVGhlc2UgbW9kdWxlcyBhcmUgc2VhcmNoZWQgZmlyc3QgaW4gc3lzLnBhdGhbMF0gKHNvICcnIC0tIHRoZSBDV0QpIGFuZCBpZgotIyB0aGV5IGFyZSBmb3VuZCBpbiB0aGUgQ1dEIHRoZWlyIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIHJlbGF0aXZlICh0aGlzCi0jIGhhcHBlbnMgYmVmb3JlIHRoZSBjaGRpcikuICBBbGwgdGhlIG1vZHVsZXMgaW1wb3J0ZWQgYWZ0ZXIgdGhlIGNoZGlyLCBhcmUKLSMgbm90IGZvdW5kIGluIHRoZSBDV0QsIGFuZCBzaW5jZSB0aGUgb3RoZXIgcGF0aHMgaW4gc3lzLnBhdGhbMTpdIGFyZSBhYnNvbHV0ZQotIyAoc2l0ZS5weSBhYnNvbHV0aXplIHRoZW0pLCB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIHdpbGwgYmUgYWJzb2x1dGUgdG9vLgotIyBUaGVyZWZvcmUgaXQgaXMgbmVjZXNzYXJ5IHRvIGFic29sdXRpemUgbWFudWFsbHkgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyBvZgotIyB0aGUgcGFja2FnZXMgdG8gcHJldmVudCBsYXRlciBpbXBvcnRzIHRvIGZhaWwgd2hlbiB0aGUgQ1dEIGlzIGRpZmZlcmVudC4KLWZvciBtb2R1bGUgaW4gc3lzLm1vZHVsZXMudmFsdWVzKCk6Ci0gICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbb3MucGF0aC5hYnNwYXRoKHBhdGgpIGZvciBwYXRoIGluIG1vZHVsZS5fX3BhdGhfX10KLSAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6Ci0gICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChtb2R1bGUuX19maWxlX18pCiAKLQotIyBNYWNPU1ggKGEuay5hLiBEYXJ3aW4pIGhhcyBhIGRlZmF1bHQgc3RhY2sgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAotIyBmb3IgZGVlcGx5IHJlY3Vyc2l2ZSByZWd1bGFyIGV4cHJlc3Npb25zLiAgV2Ugc2VlIHRoaXMgYXMgY3Jhc2hlcyBpbgotIyB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2hlbiBydW5uaW5nIHRlc3RfcmUucHkgYW5kIHRlc3Rfc3JlLnB5LiAgVGhlCi0jIGZpeCBpcyB0byBzZXQgdGhlIHN0YWNrIGxpbWl0IHRvIDIwNDguCi0jIFRoaXMgYXBwcm9hY2ggbWF5IGFsc28gYmUgdXNlZnVsIGZvciBvdGhlciBVbml4eSBwbGF0Zm9ybXMgdGhhdAotIyBzdWZmZXIgZnJvbSBzbWFsbCBkZWZhdWx0IHN0YWNrIGxpbWl0cy4KLWlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCByZXNvdXJjZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIHNvZnQsIGhhcmQgPSByZXNvdXJjZS5nZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLKQotICAgICAgICBuZXdzb2Z0ID0gbWluKGhhcmQsIG1heChzb2Z0LCAxMDI0KjIwNDgpKQotICAgICAgICByZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLLCAobmV3c29mdCwgaGFyZCkpCi0KLSMgVGVzdCByZXN1bHQgY29uc3RhbnRzLgotUEFTU0VEID0gMQotRkFJTEVEID0gMAotRU5WX0NIQU5HRUQgPSAtMQotU0tJUFBFRCA9IC0yCi1SRVNPVVJDRV9ERU5JRUQgPSAtMwotSU5URVJSVVBURUQgPSAtNAotQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCi0KLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1SRVNPVVJDRV9OQU1FUyA9ICgnYXVkaW8nLCAnY3Vyc2VzJywgJ2xhcmdlZmlsZScsICduZXR3b3JrJywKLSAgICAgICAgICAgICAgICAgICdkZWNpbWFsJywgJ2NwdScsICdzdWJwcm9jZXNzJywgJ3VybGZldGNoJywgJ2d1aScpCi0KLSMgV2hlbiB0ZXN0cyBhcmUgcnVuIGZyb20gdGhlIFB5dGhvbiBidWlsZCBkaXJlY3RvcnksIGl0IGlzIGJlc3QgcHJhY3RpY2UKLSMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIFRoaXMgZWFzZXMgdGhlIGNsZWFudXAgb2YgbGVmdG92ZXIKLSMgZmlsZXMgdXNpbmcgdGhlICJtYWtlIGRpc3RjbGVhbiIgY29tbWFuZC4KLWlmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKLSAgICBURU1QRElSID0gb3MucGF0aC5qb2luKHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdidWlsZCcpCi1lbHNlOgotICAgIFRFTVBESVIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLVRFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKLQotY2xhc3MgX0FyZ1BhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6Ci0KLSAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHN1cGVyKCkuZXJyb3IobWVzc2FnZSArICJcblBhc3MgLWggb3IgLS1oZWxwIGZvciBjb21wbGV0ZSBoZWxwLiIpCi0KLWRlZiBfY3JlYXRlX3BhcnNlcigpOgotICAgICMgU2V0IHByb2cgdG8gcHJldmVudCB0aGUgdW5pbmZvcm1hdGl2ZSAiX19tYWluX18ucHkiIGZyb20gZGlzcGxheWluZyBpbgotICAgICMgZXJyb3IgbWVzc2FnZXMgd2hlbiB1c2luZyAicHl0aG9uIC1tIHRlc3QgLi4uIi4KLSAgICBwYXJzZXIgPSBfQXJnUGFyc2VyKHByb2c9J3JlZ3J0ZXN0LnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlPVVTQUdFLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249REVTQ1JJUFRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9RVBJTE9HLAotICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKQotCi0gICAgIyBBcmd1bWVudHMgd2l0aCB0aGlzIGNsYXVzZSBhZGRlZCB0byBpdHMgaGVscCBhcmUgZGVzY3JpYmVkIGZ1cnRoZXIgaW4KLSAgICAjIHRoZSBlcGlsb2cncyAiQWRkaXRpb25hbCBvcHRpb24gZGV0YWlscyIgc2VjdGlvbi4KLSAgICBtb3JlX2RldGFpbHMgPSAnICBTZWUgdGhlIHNlY3Rpb24gYXQgYm90dG9tIGZvciBtb3JlIGRldGFpbHMuJwotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdHZW5lcmFsIG9wdGlvbnMnKQotICAgICMgV2UgYWRkIGhlbHAgZXhwbGljaXRseSB0byBjb250cm9sIHdoYXQgYXJndW1lbnQgZ3JvdXAgaXQgcmVuZGVycyB1bmRlci4KLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1oJywgJy0taGVscCcsIGFjdGlvbj0naGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10aW1lb3V0JywgbWV0YXZhcj0nVElNRU9VVCcsIHR5cGU9ZmxvYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGhhbiBUSU1FT1VUIHNlY29uZHM7IGRpc2FibGVkIGlmIFRJTUVPVVQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgbmVnYXRpdmUgb3IgZXF1YWxzIHRvIHplcm8nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS13YWl0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nd2FpdCBmb3IgdXNlciBpbnB1dCwgZS5nLiwgYWxsb3cgYSBkZWJ1Z2dlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvIGJlIGF0dGFjaGVkJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc2xhdmVhcmdzJywgbWV0YXZhcj0nQVJHUycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUycsICctLXN0YXJ0JywgbWV0YXZhcj0nU1RBUlQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgbmFtZSBvZiB0aGUgdGVzdCBhdCB3aGljaCB0byBzdGFydC4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0KLSAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1ZlcmJvc2l0eScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2UnLCBhY3Rpb249J2NvdW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRlc3RzIGluIHZlcmJvc2UgbW9kZSB3aXRoIG91dHB1dCB0byBzdGRvdXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXcnLCAnLS12ZXJib3NlMicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlLXJ1biBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1XJywgJy0tdmVyYm9zZTMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J25vIG91dHB1dCB1bmxlc3Mgb25lIG9yIG1vcmUgdGVzdHMgZmFpbCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbycsICctLXNsb3cnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdwcmludF9zbG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHJpbnQgdGhlIHNsb3dlc3QgMTAgdGVzdHMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1oZWFkZXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCBoZWFkZXIgd2l0aCBpbnRlcnByZXRlciBpbmZvJykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU2VsZWN0aW5nIHRlc3RzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmFuZG9taXplJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmFuZG9taXplIHRlc3QgZXhlY3V0aW9uIG9yZGVyLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJhbmRzZWVkJywgbWV0YXZhcj0nU0VFRCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3JhbmRvbV9zZWVkJywgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Bhc3MgYSByYW5kb20gc2VlZCB0byByZXByb2R1Y2UgYSBwcmV2aW91cyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmRvbSBydW4nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1mcm9tZmlsZScsIG1ldGF2YXI9J0ZJTEUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZWFkIG5hbWVzIG9mIHRlc3RzIHRvIHJ1biBmcm9tIGEgZmlsZS4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCcteCcsICctLWV4Y2x1ZGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdhcmd1bWVudHMgYXJlIHRlc3RzIHRvICpleGNsdWRlKicpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcycsICctLXNpbmdsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NpbmdsZSBzdGVwIHRocm91Z2ggYSBzZXQgb2YgdGVzdHMuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1tYXRjaCcsIG1ldGF2YXI9J1BBVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J21hdGNoX3Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbWF0Y2ggdGVzdCBjYXNlcyBhbmQgbWV0aG9kcyB3aXRoIGdsb2IgcGF0dGVybiBQQVQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUcnLCAnLS1mYWlsZmFzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZhaWwgYXMgc29vbiBhcyBhIHRlc3QgZmFpbHMgKG9ubHkgd2l0aCAtdiBvciAtVyknKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11c2UnLCBtZXRhdmFyPSdSRVMxLFJFUzIsLi4uJywKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdhcHBlbmQnLCB0eXBlPXJlc291cmNlc19saXN0LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gcnVuLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTScsICctLW1lbWxpbWl0JywgbWV0YXZhcj0nTElNSVQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdmVyeSBsYXJnZSBtZW1vcnktY29uc3VtaW5nIHRlc3RzLicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGVzdGRpcicsIG1ldGF2YXI9J0RJUicsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9cmVsYXRpdmVfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2V4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhpbnN0ZWFkIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpJykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU3BlY2lhbCBydW5zJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1sJywgJy0tZmluZGxlYWtzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0naWYgR0MgaXMgYXZhaWxhYmxlIGRldGVjdCB0ZXN0cyB0aGF0IGxlYWsgbWVtb3J5JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1MJywgJy0tcnVubGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGhlIGxlYWtzKDEpIGNvbW1hbmQganVzdCBiZWZvcmUgZXhpdC4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUicsICctLWh1bnRybGVha3MnLCBtZXRhdmFyPSdSVU5DT1VOVFMnLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlYXJjaCBmb3IgcmVmZXJlbmNlIGxlYWtzIChuZWVkcyBkZWJ1ZyBidWlsZCwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ5IHNsb3cpLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctaicsICctLW11bHRpcHJvY2VzcycsIG1ldGF2YXI9J1BST0NFU1NFUycsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9tcCcsIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gUFJPQ0VTU0VTIHByb2Nlc3NlcyBhdCBvbmNlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1UJywgJy0tY292ZXJhZ2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0cmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3R1cm4gb24gY29kZSBjb3ZlcmFnZSB0cmFjaW5nIHVzaW5nIHRoZSB0cmFjZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZHVsZScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRCcsICctLWNvdmVyZGlyJywgbWV0YXZhcj0nRElSJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlyZWN0b3J5IHdoZXJlIGNvdmVyYWdlIGZpbGVzIGFyZSBwdXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLU4nLCAnLS1ub2NvdmVyZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PU5vbmUsIGRlc3Q9J2NvdmVyZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHV0IGNvdmVyYWdlIGZpbGVzIGFsb25nc2lkZSBtb2R1bGVzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy10JywgJy0tdGhyZXNob2xkJywgbWV0YXZhcj0nVEhSRVNIT0xEJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2NhbGwgZ2Muc2V0X3RocmVzaG9sZChUSFJFU0hPTEQpJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1uJywgJy0tbm93aW5kb3dzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBib3hlcyBvbiBXaW5kb3dzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1GJywgJy0tZm9yZXZlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgc3BlY2lmaWVkIHRlc3RzIGluIGEgbG9vcCwgdW50aWwgYW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvciBoYXBwZW5zJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1QJywgJy0tcGdvJywgZGVzdD0ncGdvJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiB0cmFpbmluZycpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdhcmdzJywgbmFyZ3M9JyonLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1hcmdwYXJzZS5TVVBQUkVTUykKLQotICAgIHJldHVybiBwYXJzZXIKLQotZGVmIHJlbGF0aXZlX2ZpbGVuYW1lKHN0cmluZyk6Ci0gICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQotICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc3RyaW5nKQotCi1kZWYgaHVudHJsZWFrcyhzdHJpbmcpOgotICAgIGFyZ3MgPSBzdHJpbmcuc3BsaXQoJzonKQotICAgIGlmIGxlbihhcmdzKSBub3QgaW4gKDIsIDMpOgotICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigKLSAgICAgICAgICAgICduZWVkcyAyIG9yIDMgY29sb24tc2VwYXJhdGVkIGFyZ3VtZW50cycpCi0gICAgbndhcm11cCA9IGludChhcmdzWzBdKSBpZiBhcmdzWzBdIGVsc2UgNQotICAgIG50cmFja2VkID0gaW50KGFyZ3NbMV0pIGlmIGFyZ3NbMV0gZWxzZSA0Ci0gICAgZm5hbWUgPSBhcmdzWzJdIGlmIGxlbihhcmdzKSA+IDIgYW5kIGFyZ3NbMl0gZWxzZSAncmVmbG9nLnR4dCcKLSAgICByZXR1cm4gbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lCi0KLWRlZiByZXNvdXJjZXNfbGlzdChzdHJpbmcpOgotICAgIHUgPSBbeC5sb3dlcigpIGZvciB4IGluIHN0cmluZy5zcGxpdCgnLCcpXQotICAgIGZvciByIGluIHU6Ci0gICAgICAgIGlmIHIgPT0gJ2FsbCcgb3IgciA9PSAnbm9uZSc6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiByWzBdID09ICctJzoKLSAgICAgICAgICAgIHIgPSByWzE6XQotICAgICAgICBpZiByIG5vdCBpbiBSRVNPVVJDRV9OQU1FUzoKLSAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCdpbnZhbGlkIHJlc291cmNlOiAnICsgcikKLSAgICByZXR1cm4gdQotCi1kZWYgX3BhcnNlX2FyZ3MoYXJncywgKiprd2FyZ3MpOgotICAgICMgRGVmYXVsdHMKLSAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSh0ZXN0ZGlyPU5vbmUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsCi0gICAgICAgICBleGNsdWRlPUZhbHNlLCBzaW5nbGU9RmFsc2UsIHJhbmRvbWl6ZT1GYWxzZSwgZnJvbWZpbGU9Tm9uZSwKLSAgICAgICAgIGZpbmRsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLCB0cmFjZT1GYWxzZSwgY292ZXJkaXI9J2NvdmVyYWdlJywKLSAgICAgICAgIHJ1bmxlYWtzPUZhbHNlLCBodW50cmxlYWtzPUZhbHNlLCB2ZXJib3NlMj1GYWxzZSwgcHJpbnRfc2xvdz1GYWxzZSwKLSAgICAgICAgIHJhbmRvbV9zZWVkPU5vbmUsIHVzZV9tcD1Ob25lLCB2ZXJib3NlMz1GYWxzZSwgZm9yZXZlcj1GYWxzZSwKLSAgICAgICAgIGhlYWRlcj1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHBnbz1GYWxzZSkKLSAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIobnMsIGspOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhpcyBmdW5jdGlvbicgJSBrKQotICAgICAgICBzZXRhdHRyKG5zLCBrLCB2KQotICAgIGlmIG5zLnVzZV9yZXNvdXJjZXMgaXMgTm9uZToKLSAgICAgICAgbnMudXNlX3Jlc291cmNlcyA9IFtdCi0KLSAgICBwYXJzZXIgPSBfY3JlYXRlX3BhcnNlcigpCi0gICAgcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzLCBuYW1lc3BhY2U9bnMpCi0KLSAgICBpZiBucy5zaW5nbGUgYW5kIG5zLmZyb21maWxlOgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1zIGFuZCAtZiBkb24ndCBnbyB0b2dldGhlciEiKQotICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMudHJhY2U6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLVQgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMudXNlX21wIGFuZCBucy5maW5kbGVha3M6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLWwgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMudXNlX21wIGFuZCBucy5tZW1saW1pdDoKLSAgICAgICAgcGFyc2VyLmVycm9yKCItTSBhbmQgLWogZG9uJ3QgZ28gdG9nZXRoZXIhIikKLSAgICBpZiBucy5mYWlsZmFzdCBhbmQgbm90IChucy52ZXJib3NlIG9yIG5zLnZlcmJvc2UzKToKLSAgICAgICAgcGFyc2VyLmVycm9yKCItRy8tLWZhaWxmYXN0IG5lZWRzIGVpdGhlciAtdiBvciAtVyIpCi0KLSAgICBpZiBucy5xdWlldDoKLSAgICAgICAgbnMudmVyYm9zZSA9IDAKLSAgICBpZiBucy50aW1lb3V0IGlzIG5vdCBOb25lOgotICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6Ci0gICAgICAgICAgICBpZiBucy50aW1lb3V0IDw9IDA6Ci0gICAgICAgICAgICAgICAgbnMudGltZW91dCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiBUaGUgdGltZW91dCBvcHRpb24gcmVxdWlyZXMgIgotICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlciIpCi0gICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQotICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgbnMudXNlX21wIDw9IDA6Ci0gICAgICAgICAgICAjIFVzZSBhbGwgY29yZXMgKyBleHRyYXMgZm9yIHRlc3RzIHRoYXQgbGlrZSB0byBzbGVlcAotICAgICAgICAgICAgbnMudXNlX21wID0gMiArIChvcy5jcHVfY291bnQoKSBvciAxKQotICAgICAgICBpZiBucy51c2VfbXAgPT0gMToKLSAgICAgICAgICAgIG5zLnVzZV9tcCA9IE5vbmUKLSAgICBpZiBucy51c2U6Ci0gICAgICAgIGZvciBhIGluIG5zLnVzZToKLSAgICAgICAgICAgIGZvciByIGluIGE6Ci0gICAgICAgICAgICAgICAgaWYgciA9PSAnYWxsJzoKLSAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlc1s6XSA9IFJFU09VUkNFX05BTUVTCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgciA9PSAnbm9uZSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBucy51c2VfcmVzb3VyY2VzWzpdCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgcmVtb3ZlID0gRmFsc2UKLSAgICAgICAgICAgICAgICBpZiByWzBdID09ICctJzoKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICByID0gclsxOl0KLSAgICAgICAgICAgICAgICBpZiByZW1vdmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHIgaW4gbnMudXNlX3Jlc291cmNlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMucmVtb3ZlKHIpCi0gICAgICAgICAgICAgICAgZWxpZiByIG5vdCBpbiBucy51c2VfcmVzb3VyY2VzOgotICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLmFwcGVuZChyKQotICAgIGlmIG5zLnJhbmRvbV9zZWVkIGlzIG5vdCBOb25lOgotICAgICAgICBucy5yYW5kb21pemUgPSBUcnVlCi0KLSAgICByZXR1cm4gbnMKLQotCi1kZWYgcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0bmFtZSwgbnMpOgotICAgICIiIlJ1biB0aGUgZ2l2ZW4gdGVzdCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCAtLXNsYXZlYXJncy4KLQotICAgIG5zIGlzIHRoZSBvcHRpb24gTmFtZXNwYWNlIHBhcnNlZCBmcm9tIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIHJlZ3J0ZXN0Ci0gICAgaXMgaW52b2tlZCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCB0aGUgLS1zbGF2ZWFyZ3MgYXJndW1lbnQ7IHdoZW4gdGhlCi0gICAgc3VicHJvY2VzcyBleGl0cywgaXRzIHJldHVybiBjb2RlLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgcmV0dXJuZWQgYXMgYQotICAgIDMtdHVwbGUuCi0gICAgIiIiCi0gICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQotICAgIGJhc2VfY21kID0gKFtzeXMuZXhlY3V0YWJsZV0gKyBzdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpICsKLSAgICAgICAgICAgICAgICBbJy1YJywgJ2ZhdWx0aGFuZGxlcicsICctbScsICd0ZXN0LnJlZ3J0ZXN0J10pCi0gICAgIyByZXF1aXJlZCB0byBzcGF3biBhIG5ldyBwcm9jZXNzIHdpdGggUEdPIGZsYWcgb24vb2ZmCi0gICAgaWYgbnMucGdvOgotICAgICAgICBiYXNlX2NtZCA9IGJhc2VfY21kICsgWyctLXBnbyddCi0gICAgc2xhdmVhcmdzID0gKAotICAgICAgICAgICAgKHRlc3RuYW1lLCBucy52ZXJib3NlLCBucy5xdWlldCksCi0gICAgICAgICAgICBkaWN0KGh1bnRybGVha3M9bnMuaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgdXNlX3Jlc291cmNlcz1ucy51c2VfcmVzb3VyY2VzLAotICAgICAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1ucy52ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgdGltZW91dD1ucy50aW1lb3V0LCBmYWlsZmFzdD1ucy5mYWlsZmFzdCwKLSAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bnMubWF0Y2hfdGVzdHMsIHBnbz1ucy5wZ28pKQotICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBhcyByZWdydGVzdCdzIG9yaWdpbmFsCi0gICAgIyBpbnZvY2F0aW9uIGVuc3VyZXMgdGhhdCBURU1QRElSIGZvciB0aGUgY2hpbGQgaXMgdGhlIHNhbWUgd2hlbgotICAgICMgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpIGlzIHRydWUuIFNlZSBpc3N1ZSAxNTMwMC4KLSAgICBwb3BlbiA9IFBvcGVuKGJhc2VfY21kICsgWyctLXNsYXZlYXJncycsIGpzb24uZHVtcHMoc2xhdmVhcmdzKV0sCi0gICAgICAgICAgICAgICAgICBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsCi0gICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz0ob3MubmFtZSAhPSAnbnQnKSwKLSAgICAgICAgICAgICAgICAgIGN3ZD1zdXBwb3J0LlNBVkVEQ1dEKQotICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoKQotICAgIHJldGNvZGUgPSBwb3Blbi53YWl0KCkKLSAgICByZXR1cm4gcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIKLQotCi1kZWYgbWFpbih0ZXN0cz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgIiIiRXhlY3V0ZSBhIHRlc3Qgc3VpdGUuCi0KLSAgICBUaGlzIGFsc28gcGFyc2VzIGNvbW1hbmQtbGluZSBvcHRpb25zIGFuZCBtb2RpZmllcyBpdHMgYmVoYXZpb3IKLSAgICBhY2NvcmRpbmdseS4KLQotICAgIHRlc3RzIC0tIGEgbGlzdCBvZiBzdHJpbmdzIGNvbnRhaW5pbmcgdGVzdCBuYW1lcyAob3B0aW9uYWwpCi0gICAgdGVzdGRpciAtLSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGxvb2sgZm9yIHRlc3RzIChvcHRpb25hbCkKLQotICAgIFVzZXJzIG90aGVyIHRoYW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHdpbGwgY2VydGFpbmx5IHdhbnQgdG8KLSAgICBzcGVjaWZ5IHRlc3RkaXI7IGlmIGl0J3Mgb21pdHRlZCwgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZQotICAgIFB5dGhvbiB0ZXN0IHN1aXRlIGlzIHNlYXJjaGVkIGZvci4KLQotICAgIElmIHRoZSB0ZXN0cyBhcmd1bWVudCBpcyBvbWl0dGVkLCB0aGUgdGVzdHMgbGlzdGVkIG9uIHRoZQotICAgIGNvbW1hbmQtbGluZSB3aWxsIGJlIHVzZWQuICBJZiB0aGF0J3MgZW1wdHksIHRvbywgdGhlbiBhbGwgKi5weQotICAgIGZpbGVzIGJlZ2lubmluZyB3aXRoIHRlc3RfIHdpbGwgYmUgdXNlZC4KLQotICAgIFRoZSBvdGhlciBkZWZhdWx0IGFyZ3VtZW50cyAodmVyYm9zZSwgcXVpZXQsIGV4Y2x1ZGUsCi0gICAgc2luZ2xlLCByYW5kb21pemUsIGZpbmRsZWFrcywgdXNlX3Jlc291cmNlcywgdHJhY2UsIGNvdmVyZGlyLAotICAgIHByaW50X3Nsb3csIGFuZCByYW5kb21fc2VlZCkgYWxsb3cgcHJvZ3JhbW1lcnMgY2FsbGluZyBtYWluKCkKLSAgICBkaXJlY3RseSB0byBzZXQgdGhlIHZhbHVlcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHNldCBieSBmbGFncwotICAgIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgIiIiCi0gICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycyAoZS5nLiBzZWdmYXVsdCkKLSAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKGFsbF90aHJlYWRzPVRydWUpCi0KLSAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gU0lHQUxSTSBvciBTSUdVU1IxIHNpZ25hbAotICAgIHNpZ25hbHMgPSBbXQotICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHQUxSTScpOgotICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHQUxSTSkKLSAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKToKLSAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR1VTUjEpCi0gICAgZm9yIHNpZ251bSBpbiBzaWduYWxzOgotICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBjaGFpbj1UcnVlKQotCi0gICAgcmVwbGFjZV9zdGRvdXQoKQotCi0gICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCi0KLSAgICBucyA9IF9wYXJzZV9hcmdzKHN5cy5hcmd2WzE6XSwgKiprd2FyZ3MpCi0KLSAgICBpZiBucy5odW50cmxlYWtzOgotICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdmFyaW91cyBjYWNoZXMKLSAgICAgICAgIyBmaWxsaW5nIHNsb3dseSB3aXRoIHJhbmRvbSBkYXRhOgotICAgICAgICB3YXJtX2NhY2hlcygpCi0gICAgaWYgbnMubWVtbGltaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgIHN1cHBvcnQuc2V0X21lbWxpbWl0KG5zLm1lbWxpbWl0KQotICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGdjLnNldF90aHJlc2hvbGQobnMudGhyZXNob2xkKQotICAgIGlmIG5zLm5vd2luZG93czoKLSAgICAgICAgcHJpbnQoJ1RoZSAtLW5vd2luZG93cyAoLW4pIG9wdGlvbiBpcyBkZXByZWNhdGVkLiAnCi0gICAgICAgICAgICAgICdVc2UgLXZ2IHRvIGRpc3BsYXkgYXNzZXJ0aW9ucyBpbiBzdGRlcnIuJykKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBtc3ZjcnQKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBtc3ZjcnQuU2V0RXJyb3JNb2RlKG1zdmNydC5TRU1fRkFJTENSSVRJQ0FMRVJST1JTfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PR1BGQVVMVEVSUk9SQk9YfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9PUEVORklMRUVSUk9SQk9YKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAjIHJlbGVhc2UgYnVpbGQKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKLSAgICAgICAgICAgICAgICBpZiBucy52ZXJib3NlIGFuZCBucy52ZXJib3NlID49IDI6Ci0gICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQotICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShtLCBtc3ZjcnQuQ1JUREJHX0ZJTEVfU1RERVJSKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCi0gICAgaWYgbnMud2FpdDoKLSAgICAgICAgaW5wdXQoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKQotCi0gICAgaWYgbnMuc2xhdmVhcmdzIGlzIG5vdCBOb25lOgotICAgICAgICBhcmdzLCBrd2FyZ3MgPSBqc29uLmxvYWRzKG5zLnNsYXZlYXJncykKLSAgICAgICAgaWYga3dhcmdzLmdldCgnaHVudHJsZWFrcycpOgotICAgICAgICAgICAgdW5pdHRlc3QuQmFzZVRlc3RTdWl0ZS5fY2xlYW51cCA9IEZhbHNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgJycKLSAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgcmVzdWx0ID0gQ0hJTERfRVJST1IsIHN0cihlKQotICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcHJpbnQoKSAgICMgRm9yY2UgYSBuZXdsaW5lIChqdXN0IGluIGNhc2UpCi0gICAgICAgIHByaW50KGpzb24uZHVtcHMocmVzdWx0KSkKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgIGdvb2QgPSBbXQotICAgIGJhZCA9IFtdCi0gICAgc2tpcHBlZCA9IFtdCi0gICAgcmVzb3VyY2VfZGVuaWVkcyA9IFtdCi0gICAgZW52aXJvbm1lbnRfY2hhbmdlZCA9IFtdCi0gICAgaW50ZXJydXB0ZWQgPSBGYWxzZQotCi0gICAgaWYgbnMuZmluZGxlYWtzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcHJpbnQoJ05vIEdDIGF2YWlsYWJsZSwgZGlzYWJsaW5nIGZpbmRsZWFrcy4nKQotICAgICAgICAgICAgbnMuZmluZGxlYWtzID0gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IHRvIHJlcG9ydCBnYXJiYWdlIHRoYXQgaXMgbm90Ci0gICAgICAgICAgICAjIGZyZWVhYmxlIGJ5IHJlZmVyZW5jZSBjb3VudGluZyBhbG9uZS4gIEJ5IGRlZmF1bHQgb25seQotICAgICAgICAgICAgIyBnYXJiYWdlIHRoYXQgaXMgbm90IGNvbGxlY3RhYmxlIGJ5IHRoZSBHQyBpcyByZXBvcnRlZC4KLSAgICAgICAgICAgICNnYy5zZXRfZGVidWcoZ2MuREVCVUdfU0FWRUFMTCkKLSAgICAgICAgICAgIGZvdW5kX2dhcmJhZ2UgPSBbXQotCi0gICAgaWYgbnMuaHVudHJsZWFrczoKLSAgICAgICAgdW5pdHRlc3QuQmFzZVRlc3RTdWl0ZS5fY2xlYW51cCA9IEZhbHNlCi0KLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICdweW5leHR0ZXN0JykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG5leHRfdGVzdCA9IGZwLnJlYWQoKS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgdGVzdHMgPSBbbmV4dF90ZXN0XQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGlmIG5zLmZyb21maWxlOgotICAgICAgICB0ZXN0cyA9IFtdCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgbnMuZnJvbWZpbGUpKSBhcyBmcDoKLSAgICAgICAgICAgIGNvdW50X3BhdCA9IHJlLmNvbXBpbGUocidcW1xzKlxkKy9ccypcZCtcXScpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBmcDoKLSAgICAgICAgICAgICAgICBsaW5lID0gY291bnRfcGF0LnN1YignJywgbGluZSkKLSAgICAgICAgICAgICAgICBndXRzID0gbGluZS5zcGxpdCgpICMgYXNzdW1pbmcgbm8gdGVzdCBoYXMgd2hpdGVzcGFjZSBpbiBpdHMgbmFtZQotICAgICAgICAgICAgICAgIGlmIGd1dHMgYW5kIG5vdCBndXRzWzBdLnN0YXJ0c3dpdGgoJyMnKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKGd1dHMpCi0KLSAgICAjIFN0cmlwIC5weSBleHRlbnNpb25zLgotICAgIHJlbW92ZXB5KG5zLmFyZ3MpCi0gICAgcmVtb3ZlcHkodGVzdHMpCi0KLSAgICBzdGR0ZXN0cyA9IFNURFRFU1RTWzpdCi0gICAgbm90dGVzdHMgPSBOT1RURVNUUy5jb3B5KCkKLSAgICBpZiBucy5leGNsdWRlOgotICAgICAgICBmb3IgYXJnIGluIG5zLmFyZ3M6Ci0gICAgICAgICAgICBpZiBhcmcgaW4gc3RkdGVzdHM6Ci0gICAgICAgICAgICAgICAgc3RkdGVzdHMucmVtb3ZlKGFyZykKLSAgICAgICAgICAgIG5vdHRlc3RzLmFkZChhcmcpCi0gICAgICAgIG5zLmFyZ3MgPSBbXQotCi0gICAgIyBGb3IgYSBwYXJ0aWFsIHJ1biwgd2UgZG8gbm90IG5lZWQgdG8gY2x1dHRlciB0aGUgb3V0cHV0LgotICAgIGlmIChucy52ZXJib3NlIG9yIG5zLmhlYWRlciBvcgotICAgICAgICAgICAgbm90IChucy5wZ28gb3IgbnMucXVpZXQgb3IgbnMuc2luZ2xlIG9yIHRlc3RzIG9yIG5zLmFyZ3MpKToKLSAgICAgICAgIyBQcmludCBiYXNpYyBwbGF0Zm9ybSBpbmZvcm1hdGlvbgotICAgICAgICBwcmludCgiPT0iLCBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwgKnN5cy52ZXJzaW9uLnNwbGl0KCkpCi0gICAgICAgIHByaW50KCI9PSAgIiwgcGxhdGZvcm0ucGxhdGZvcm0oYWxpYXNlZD1UcnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlcy1lbmRpYW4iICUgc3lzLmJ5dGVvcmRlcikKLSAgICAgICAgcHJpbnQoIj09ICAiLCAiaGFzaCBhbGdvcml0aG06Iiwgc3lzLmhhc2hfaW5mby5hbGdvcml0aG0sCi0gICAgICAgICAgICAgICAgIjY0Yml0IiBpZiBzeXMubWF4c2l6ZSA+IDIqKjMyIGVsc2UgIjMyYml0IikKLSAgICAgICAgcHJpbnQoIj09ICAiLCBvcy5nZXRjd2QoKSkKLSAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCi0KLSAgICAjIGlmIHRlc3RkaXIgaXMgc2V0LCB0aGVuIHdlIGFyZSBub3QgcnVubmluZyB0aGUgcHl0aG9uIHRlc3RzIHN1aXRlLCBzbwotICAgICMgZG9uJ3QgYWRkIGRlZmF1bHQgdGVzdHMgdG8gYmUgZXhlY3V0ZWQgb3Igc2tpcHBlZCAocGFzcyBlbXB0eSB2YWx1ZXMpCi0gICAgaWYgbnMudGVzdGRpcjoKLSAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMobnMudGVzdGRpciwgbGlzdCgpLCBzZXQoKSkKLSAgICBlbHNlOgotICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhucy50ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCi0KLSAgICBzZWxlY3RlZCA9IHRlc3RzIG9yIG5zLmFyZ3Mgb3IgYWxsdGVzdHMKLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIHNlbGVjdGVkID0gc2VsZWN0ZWRbOjFdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5leHRfc2luZ2xlX3Rlc3QgPSBhbGx0ZXN0c1thbGx0ZXN0cy5pbmRleChzZWxlY3RlZFswXSkrMV0KLSAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICBuZXh0X3NpbmdsZV90ZXN0ID0gTm9uZQotICAgICMgUmVtb3ZlIGFsbCB0aGUgc2VsZWN0ZWQgdGVzdHMgdGhhdCBwcmVjZWRlIHN0YXJ0IGlmIGl0J3Mgc2V0LgotICAgIGlmIG5zLnN0YXJ0OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWwgc2VsZWN0ZWRbOnNlbGVjdGVkLmluZGV4KG5zLnN0YXJ0KV0KLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBzdGFydGluZyB0ZXN0ICglcyksIHVzaW5nIGFsbCB0ZXN0cyIgJSBucy5zdGFydCkKLSAgICBpZiBucy5yYW5kb21pemU6Ci0gICAgICAgIGlmIG5zLnJhbmRvbV9zZWVkIGlzIE5vbmU6Ci0gICAgICAgICAgICBucy5yYW5kb21fc2VlZCA9IHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDApCi0gICAgICAgIHJhbmRvbS5zZWVkKG5zLnJhbmRvbV9zZWVkKQotICAgICAgICBwcmludCgiVXNpbmcgcmFuZG9tIHNlZWQiLCBucy5yYW5kb21fc2VlZCkKLSAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZWN0ZWQpCi0gICAgaWYgbnMudHJhY2U6Ci0gICAgICAgIGltcG9ydCB0cmFjZSwgdGVtcGZpbGUKLSAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuZ2V0dGVtcGRpcigpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCi0KLSAgICB0ZXN0X3RpbWVzID0gW10KLSAgICBzdXBwb3J0LnZlcmJvc2UgPSBucy52ZXJib3NlICAgICAgIyBUZWxsIHRlc3RzIHRvIGJlIG1vZGVyYXRlbHkgcXVpZXQKLSAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSBucy51c2VfcmVzb3VyY2VzCi0gICAgc2F2ZV9tb2R1bGVzID0gc3lzLm1vZHVsZXMua2V5cygpCi0KLSAgICBkZWYgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KToKLSAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAotICAgICAgICBpZiBvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCk6Ci0gICAgICAgICAgICB0ZXN0X3RpbWVzLmFwcGVuZCgodGVzdF90aW1lLCB0ZXN0KSkKLSAgICAgICAgaWYgb2sgPT0gUEFTU0VEOgotICAgICAgICAgICAgZ29vZC5hcHBlbmQodGVzdCkKLSAgICAgICAgZWxpZiBvayA9PSBGQUlMRUQ6Ci0gICAgICAgICAgICBiYWQuYXBwZW5kKHRlc3QpCi0gICAgICAgIGVsaWYgb2sgPT0gRU5WX0NIQU5HRUQ6Ci0gICAgICAgICAgICBlbnZpcm9ubWVudF9jaGFuZ2VkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IFNLSVBQRUQ6Ci0gICAgICAgICAgICBza2lwcGVkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IFJFU09VUkNFX0RFTklFRDoKLSAgICAgICAgICAgIHNraXBwZWQuYXBwZW5kKHRlc3QpCi0gICAgICAgICAgICByZXNvdXJjZV9kZW5pZWRzLmFwcGVuZCh0ZXN0KQotCi0gICAgaWYgbnMuZm9yZXZlcjoKLSAgICAgICAgZGVmIHRlc3RfZm9yZXZlcih0ZXN0cz1saXN0KHNlbGVjdGVkKSk6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICB0ZXN0cyA9IHRlc3RfZm9yZXZlcigpCi0gICAgICAgIHRlc3RfY291bnQgPSAnJwotICAgICAgICB0ZXN0X2NvdW50X3dpZHRoID0gMwotICAgIGVsc2U6Ci0gICAgICAgIHRlc3RzID0gaXRlcihzZWxlY3RlZCkKLSAgICAgICAgdGVzdF9jb3VudCA9ICcve30nLmZvcm1hdChsZW4oc2VsZWN0ZWQpKQotICAgICAgICB0ZXN0X2NvdW50X3dpZHRoID0gbGVuKHRlc3RfY291bnQpIC0gMQotCi0gICAgaWYgbnMudXNlX21wOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJNdWx0aXByb2Nlc3Mgb3B0aW9uIHJlcXVpcmVzIHRocmVhZCBzdXBwb3J0IikKLSAgICAgICAgICAgIHN5cy5leGl0KDIpCi0gICAgICAgIGZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCi0gICAgICAgIGRlYnVnX291dHB1dF9wYXQgPSByZS5jb21waWxlKHIiXFtcZCsgcmVmcywgXGQrIGJsb2Nrc1xdJCIpCi0gICAgICAgIG91dHB1dCA9IFF1ZXVlKCkKLSAgICAgICAgcGVuZGluZyA9IE11bHRpcHJvY2Vzc1Rlc3RzKHRlc3RzKQotICAgICAgICBkZWYgd29yaygpOgotICAgICAgICAgICAgIyBBIHdvcmtlciB0aHJlYWQuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IG5leHQocGVuZGluZykKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHJ1bl90ZXN0X2luX3N1YnByb2Nlc3ModGVzdCwgbnMpCi0gICAgICAgICAgICAgICAgICAgICMgU3RyaXAgbGFzdCByZWZjb3VudCBvdXRwdXQgbGluZSBpZiBpdCBleGlzdHMsIHNpbmNlIGl0Ci0gICAgICAgICAgICAgICAgICAgICMgY29tZXMgZnJvbSB0aGUgc2h1dGRvd24gb2YgdGhlIGludGVycHJldGVyIGluIHRoZSBzdWJjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBkZWJ1Z19vdXRwdXRfcGF0LnN1YigiIiwgc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIF8sIHJlc3VsdCA9IHN0ZG91dC5zdHJpcCgpLnJwYXJ0aXRpb24oIlxuIikKLSAgICAgICAgICAgICAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwgcmVzdWx0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLCByZXN1bHQpKQotICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgd29ya2VycyA9IFtUaHJlYWQodGFyZ2V0PXdvcmspIGZvciBpIGluIHJhbmdlKG5zLnVzZV9tcCldCi0gICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKLSAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCi0gICAgICAgIGZpbmlzaGVkID0gMAotICAgICAgICB0ZXN0X2luZGV4ID0gMQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBmaW5pc2hlZCA8IG5zLnVzZV9tcDoKLSAgICAgICAgICAgICAgICB0ZXN0LCBzdGRvdXQsIHN0ZGVyciwgcmVzdWx0ID0gb3V0cHV0LmdldCgpCi0gICAgICAgICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBmaW5pc2hlZCArPSAxCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQotICAgICAgICAgICAgICAgIGlmIG5vdCBucy5xdWlldDoKLSAgICAgICAgICAgICAgICAgICAgaWYgYmFkIGFuZCBub3QgbnMucGdvOgotICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IgotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9XSB7NH0iCi0gICAgICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50X3dpZHRoLCB0ZXN0X2luZGV4LCB0ZXN0X2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGJhZCksIHRlc3QpKQotICAgICAgICAgICAgICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoc3Rkb3V0KQotICAgICAgICAgICAgICAgIGlmIHN0ZGVyciBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoc3RkZXJyLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IElOVEVSUlVQVEVEOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBDSElMRF9FUlJPUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pKQotICAgICAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgIHBlbmRpbmcuaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKLSAgICAgICAgICAgIHdvcmtlci5qb2luKCkKLSAgICBlbHNlOgotICAgICAgICBmb3IgdGVzdF9pbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgotICAgICAgICAgICAgaWYgbm90IG5zLnF1aWV0OgotICAgICAgICAgICAgICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfV0gezR9IgotICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfY291bnRfd2lkdGgsIHRlc3RfaW5kZXgsIHRlc3RfY291bnQsIGxlbihiYWQpLCB0ZXN0KSkKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgIGlmIG5zLnRyYWNlOgotICAgICAgICAgICAgICAgICMgSWYgd2UncmUgdHJhY2luZyBjb2RlIGNvdmVyYWdlLCB0aGVuIHdlIGRvbid0IGV4aXQgd2l0aCBzdGF0dXMKLSAgICAgICAgICAgICAgICAjIGlmIG9uIGEgZmFsc2UgcmV0dXJuIHZhbHVlIGZyb20gbWFpbi4KLSAgICAgICAgICAgICAgICB0cmFjZXIucnVuY3R4KCdydW50ZXN0KHRlc3QsIG5zLnZlcmJvc2UsIG5zLnF1aWV0LCB0aW1lb3V0PW5zLnRpbWVvdXQpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscygpLCBsb2NhbHM9dmFycygpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QodGVzdCwgbnMudmVyYm9zZSwgbnMucXVpZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnMuaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1ucy52ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PW5zLnRpbWVvdXQsIGZhaWxmYXN0PW5zLmZhaWxmYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW5zLm1hdGNoX3Rlc3RzLCBwZ289bnMucGdvKQotICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG5zLmZpbmRsZWFrczoKLSAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgICAgICBpZiBnYy5nYXJiYWdlOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZzogdGVzdCBjcmVhdGVkIiwgbGVuKGdjLmdhcmJhZ2UpLCBlbmQ9JyAnKQotICAgICAgICAgICAgICAgICAgICBwcmludCgidW5jb2xsZWN0YWJsZSBvYmplY3QocykuIikKLSAgICAgICAgICAgICAgICAgICAgIyBtb3ZlIHRoZSB1bmNvbGxlY3RhYmxlIG9iamVjdHMgc29tZXdoZXJlIHNvIHdlIGRvbid0IHNlZQotICAgICAgICAgICAgICAgICAgICAjIHRoZW0gYWdhaW4KLSAgICAgICAgICAgICAgICAgICAgZm91bmRfZ2FyYmFnZS5leHRlbmQoZ2MuZ2FyYmFnZSkKLSAgICAgICAgICAgICAgICAgICAgZGVsIGdjLmdhcmJhZ2VbOl0KLSAgICAgICAgICAgICMgVW5sb2FkIHRoZSBuZXdseSBpbXBvcnRlZCBtb2R1bGVzIChiZXN0IGVmZm9ydCBmaW5hbGl6YXRpb24pCi0gICAgICAgICAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLmtleXMoKToKLSAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNhdmVfbW9kdWxlcyBhbmQgbW9kdWxlLnN0YXJ0c3dpdGgoInRlc3QuIik6Ci0gICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKG1vZHVsZSkKLQotICAgIGlmIGludGVycnVwdGVkIGFuZCBub3QgbnMucGdvOgotICAgICAgICAjIHByaW50IGEgbmV3bGluZSBhZnRlciBeQwotICAgICAgICBwcmludCgpCi0gICAgICAgIHByaW50KCJUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuIikKLSAgICAgICAgb21pdHRlZCA9IHNldChzZWxlY3RlZCkgLSBzZXQoZ29vZCkgLSBzZXQoYmFkKSAtIHNldChza2lwcGVkKQotICAgICAgICBwcmludChjb3VudChsZW4ob21pdHRlZCksICJ0ZXN0IiksICJvbWl0dGVkOiIpCi0gICAgICAgIHByaW50bGlzdChvbWl0dGVkKQotICAgIGlmIGdvb2QgYW5kIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgaWYgbm90IGJhZCBhbmQgbm90IHNraXBwZWQgYW5kIG5vdCBpbnRlcnJ1cHRlZCBhbmQgbGVuKGdvb2QpID4gMToKLSAgICAgICAgICAgIHByaW50KCJBbGwiLCBlbmQ9JyAnKQotICAgICAgICBwcmludChjb3VudChsZW4oZ29vZCksICJ0ZXN0IiksICJPSy4iKQotICAgIGlmIG5zLnByaW50X3Nsb3c6Ci0gICAgICAgIHRlc3RfdGltZXMuc29ydChyZXZlcnNlPVRydWUpCi0gICAgICAgIHByaW50KCIxMCBzbG93ZXN0IHRlc3RzOiIpCi0gICAgICAgIGZvciB0aW1lLCB0ZXN0IGluIHRlc3RfdGltZXNbOjEwXToKLSAgICAgICAgICAgIHByaW50KCIlczogJS4xZnMiICUgKHRlc3QsIHRpbWUpKQotICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgcHJpbnQoY291bnQobGVuKGJhZCksICJ0ZXN0IiksICJmYWlsZWQ6IikKLSAgICAgICAgcHJpbnRsaXN0KGJhZCkKLSAgICBpZiBlbnZpcm9ubWVudF9jaGFuZ2VkIGFuZCBub3QgbnMucGdvOgotICAgICAgICBwcmludCgie30gYWx0ZXJlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50OiIuZm9ybWF0KAotICAgICAgICAgICAgICAgICBjb3VudChsZW4oZW52aXJvbm1lbnRfY2hhbmdlZCksICJ0ZXN0IikpKQotICAgICAgICBwcmludGxpc3QoZW52aXJvbm1lbnRfY2hhbmdlZCkKLSAgICBpZiBza2lwcGVkIGFuZCBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgIHByaW50KGNvdW50KGxlbihza2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKLSAgICAgICAgcHJpbnRsaXN0KHNraXBwZWQpCi0KLSAgICBpZiBucy52ZXJib3NlMiBhbmQgYmFkOgotICAgICAgICBwcmludCgiUmUtcnVubmluZyBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIikKLSAgICAgICAgZm9yIHRlc3QgaW4gYmFkWzpdOgotICAgICAgICAgICAgaWYgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICBwcmludCgiUmUtcnVubmluZyB0ZXN0ICVyIGluIHZlcmJvc2UgbW9kZSIgJSB0ZXN0KQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbnMudmVyYm9zZSA9IFRydWUKLSAgICAgICAgICAgICAgICBvayA9IHJ1bnRlc3QodGVzdCwgVHJ1ZSwgbnMucXVpZXQsIG5zLmh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9bnMudGltZW91dCwgcGdvPW5zLnBnbykKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQwotICAgICAgICAgICAgICAgIHByaW50KCkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBva1swXSBpbiB7UEFTU0VELCBFTlZfQ0hBTkdFRCwgU0tJUFBFRCwgUkVTT1VSQ0VfREVOSUVEfToKLSAgICAgICAgICAgICAgICAgICAgYmFkLnJlbW92ZSh0ZXN0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgYmFkOgotICAgICAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihiYWQpLCAndGVzdCcpLCAiZmFpbGVkIGFnYWluOiIpCi0gICAgICAgICAgICAgICAgcHJpbnRsaXN0KGJhZCkKLQotICAgIGlmIG5zLnNpbmdsZToKLSAgICAgICAgaWYgbmV4dF9zaW5nbGVfdGVzdDoKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3cnKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBmcC53cml0ZShuZXh0X3NpbmdsZV90ZXN0ICsgJ1xuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKLQotICAgIGlmIG5zLnRyYWNlOgotICAgICAgICByID0gdHJhY2VyLnJlc3VsdHMoKQotICAgICAgICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIHN1bW1hcnk9VHJ1ZSwgY292ZXJkaXI9bnMuY292ZXJkaXIpCi0KLSAgICBpZiBucy5ydW5sZWFrczoKLSAgICAgICAgb3Muc3lzdGVtKCJsZWFrcyAlZCIgJSBvcy5nZXRwaWQoKSkKLQotICAgIHN5cy5leGl0KGxlbihiYWQpID4gMCBvciBpbnRlcnJ1cHRlZCkKLQotCi0jIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgotIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCi1TVERURVNUUyA9IFsKLSAgICAndGVzdF9ncmFtbWFyJywKLSAgICAndGVzdF9vcGNvZGVzJywKLSAgICAndGVzdF9kaWN0JywKLSAgICAndGVzdF9idWlsdGluJywKLSAgICAndGVzdF9leGNlcHRpb25zJywKLSAgICAndGVzdF90eXBlcycsCi0gICAgJ3Rlc3RfdW5pdHRlc3QnLAotICAgICd0ZXN0X2RvY3Rlc3QnLAotICAgICd0ZXN0X2RvY3Rlc3QyJywKLSAgICAndGVzdF9zdXBwb3J0JwotXQotCi0jIHNldCBvZiB0ZXN0cyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB1c2luZyByZWdydGVzdAotTk9UVEVTVFMgPSBzZXQoKQotCi1kZWYgZmluZHRlc3RzKHRlc3RkaXI9Tm9uZSwgc3RkdGVzdHM9U1REVEVTVFMsIG5vdHRlc3RzPU5PVFRFU1RTKToKLSAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhcHBsaWNhYmxlIHRlc3QgbW9kdWxlcy4iIiIKLSAgICB0ZXN0ZGlyID0gZmluZHRlc3RkaXIodGVzdGRpcikKLSAgICBuYW1lcyA9IG9zLmxpc3RkaXIodGVzdGRpcikKLSAgICB0ZXN0cyA9IFtdCi0gICAgb3RoZXJzID0gc2V0KHN0ZHRlc3RzKSB8IG5vdHRlc3RzCi0gICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIG1vZCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBtb2RbOjVdID09ICJ0ZXN0XyIgYW5kIGV4dCBpbiAoIi5weSIsICIiKSBhbmQgbW9kIG5vdCBpbiBvdGhlcnM6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kKQotICAgIHJldHVybiBzdGR0ZXN0cyArIHNvcnRlZCh0ZXN0cykKLQotIyBXZSBkbyBub3QgdXNlIGEgZ2VuZXJhdG9yIHNvIG11bHRpcGxlIHRocmVhZHMgY2FuIGNhbGwgbmV4dCgpLgotY2xhc3MgTXVsdGlwcm9jZXNzVGVzdHMob2JqZWN0KToKLQotICAgICIiIkEgdGhyZWFkLXNhZmUgaXRlcmF0b3Igb3ZlciB0ZXN0cyBmb3IgbXVsdGlwcm9jZXNzIG1vZGUuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHMpOgotICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQotICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX25leHRfXyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmxvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oJ3Rlc3RzIGludGVycnVwdGVkJykKLSAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGVzdHMpCi0KLWRlZiByZXBsYWNlX3N0ZG91dCgpOgotICAgICIiIlNldCBzdGRvdXQgZW5jb2RlciBlcnJvciBoYW5kbGVyIHRvIGJhY2tzbGFzaHJlcGxhY2UgKGFzIHN0ZGVyciBlcnJvcgotICAgIGhhbmRsZXIpIHRvIGF2b2lkIFVuaWNvZGVFbmNvZGVFcnJvciB3aGVuIHByaW50aW5nIGEgdHJhY2ViYWNrIiIiCi0gICAgaW1wb3J0IGF0ZXhpdAotCi0gICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgIHN5cy5zdGRvdXQgPSBvcGVuKHN0ZG91dC5maWxlbm8oKSwgJ3cnLAotICAgICAgICBlbmNvZGluZz1zdGRvdXQuZW5jb2RpbmcsCi0gICAgICAgIGVycm9ycz0iYmFja3NsYXNocmVwbGFjZSIsCi0gICAgICAgIGNsb3NlZmQ9RmFsc2UsCi0gICAgICAgIG5ld2xpbmU9J1xuJykKLQotICAgIGRlZiByZXN0b3JlX3N0ZG91dCgpOgotICAgICAgICBzeXMuc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAotICAgIGF0ZXhpdC5yZWdpc3RlcihyZXN0b3JlX3N0ZG91dCkKLQotZGVmIHJ1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsCi0gICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsCi0gICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsCi0gICAgICAgICAgICB0aW1lb3V0PU5vbmUsICosIHBnbz1GYWxzZSk6Ci0gICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QuCi0KLSAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0Ci0gICAgdmVyYm9zZSAtLSBpZiB0cnVlLCBwcmludCBtb3JlIG1lc3NhZ2VzCi0gICAgcXVpZXQgLS0gaWYgdHJ1ZSwgZG9uJ3QgcHJpbnQgJ3NraXBwZWQnIG1lc3NhZ2VzIChwcm9iYWJseSByZWR1bmRhbnQpCi0gICAgaHVudHJsZWFrcyAtLSBydW4gbXVsdGlwbGUgdGltZXMgdG8gdGVzdCBmb3IgbGVha3M7IHJlcXVpcmVzIGEgZGVidWcKLSAgICAgICAgICAgICAgICAgIGJ1aWxkOyBhIHRyaXBsZSBjb3JyZXNwb25kaW5nIHRvIC1SJ3MgdGhyZWUgYXJndW1lbnRzCi0gICAgdXNlX3Jlc291cmNlcyAtLSBsaXN0IG9mIGV4dHJhIHJlc291cmNlcyB0byB1c2UKLSAgICBvdXRwdXRfb25fZmFpbHVyZSAtLSBpZiB0cnVlLCBkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUKLSAgICB0aW1lb3V0IC0tIGR1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgbW9yZSB0aGFuCi0gICAgICAgICAgICAgICB0aW1lb3V0IHNlY29uZHMKLSAgICBmYWlsZmFzdCwgbWF0Y2hfdGVzdHMgLS0gU2VlIHJlZ3J0ZXN0IGNvbW1hbmQtbGluZSBmbGFncyBmb3IgdGhlc2UuCi0gICAgcGdvIC0tIGlmIHRydWUsIGRvIG5vdCBwcmludCB1bm5lY2Vzc2FyeSBpbmZvIHdoZW4gcnVubmluZyB0aGUgdGVzdAotICAgICAgICAgICBmb3IgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIGJ1aWxkCi0KLSAgICBSZXR1cm5zIHRoZSB0dXBsZSByZXN1bHQsIHRlc3RfdGltZSwgd2hlcmUgcmVzdWx0IGlzIG9uZSBvZiB0aGUgY29uc3RhbnRzOgotICAgICAgICBJTlRFUlJVUFRFRCAgICAgIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gcnVuIHVuZGVyIC1qCi0gICAgICAgIFJFU09VUkNFX0RFTklFRCAgdGVzdCBza2lwcGVkIGJlY2F1c2UgcmVzb3VyY2UgZGVuaWVkCi0gICAgICAgIFNLSVBQRUQgICAgICAgICAgdGVzdCBza2lwcGVkIGZvciBzb21lIG90aGVyIHJlYXNvbgotICAgICAgICBFTlZfQ0hBTkdFRCAgICAgIHRlc3QgZmFpbGVkIGJlY2F1c2UgaXQgY2hhbmdlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50Ci0gICAgICAgIEZBSUxFRCAgICAgICAgICAgdGVzdCBmYWlsZWQKLSAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAotICAgICIiIgotICAgIGlmIHVzZV9yZXNvdXJjZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgIHN1cHBvcnQudXNlX3Jlc291cmNlcyA9IHVzZV9yZXNvdXJjZXMKLSAgICB1c2VfdGltZW91dCA9ICh0aW1lb3V0IGlzIG5vdCBOb25lKQotICAgIGlmIHVzZV90aW1lb3V0OgotICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgZXhpdD1UcnVlKQotICAgIHRyeToKLSAgICAgICAgc3VwcG9ydC5tYXRjaF90ZXN0cyA9IG1hdGNoX3Rlc3RzCi0gICAgICAgIGlmIGZhaWxmYXN0OgotICAgICAgICAgICAgc3VwcG9ydC5mYWlsZmFzdCA9IFRydWUKLSAgICAgICAgaWYgb3V0cHV0X29uX2ZhaWx1cmU6Ci0gICAgICAgICAgICBzdXBwb3J0LnZlcmJvc2UgPSBUcnVlCi0KLSAgICAgICAgICAgICMgUmV1c2UgdGhlIHNhbWUgaW5zdGFuY2UgdG8gYWxsIGNhbGxzIHRvIHJ1bnRlc3QoKS4gU29tZQotICAgICAgICAgICAgIyB0ZXN0cyBrZWVwIGEgcmVmZXJlbmNlIHRvIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVycgotICAgICAgICAgICAgIyAoZWcuIHRlc3RfYXJncGFyc2UpLgotICAgICAgICAgICAgaWYgcnVudGVzdC5zdHJpbmdpbyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgICAgICBydW50ZXN0LnN0cmluZ2lvID0gc3RyZWFtCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0cmVhbSA9IHJ1bnRlc3Quc3RyaW5naW8KLSAgICAgICAgICAgICAgICBzdHJlYW0uc2VlaygwKQotICAgICAgICAgICAgICAgIHN0cmVhbS50cnVuY2F0ZSgpCi0KLSAgICAgICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgICAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN0cmVhbQotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzdHJlYW0KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPUZhbHNlLCBwZ289cGdvKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBGQUlMRUQgYW5kIG5vdCBwZ286Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cmVhbS5nZXR2YWx1ZSgpCi0gICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLndyaXRlKG91dHB1dCkKLSAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gb3JpZ19zdGRvdXQKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IHZlcmJvc2UgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0Ci0gICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2ZhaWx1cmU9bm90IHZlcmJvc2UsIHBnbz1wZ28pCi0gICAgICAgIHJldHVybiByZXN1bHQKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiB1c2VfdGltZW91dDoKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQotICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIHZlcmJvc2UpCi1ydW50ZXN0LnN0cmluZ2lvID0gTm9uZQotCi0jIFVuaXQgdGVzdHMgYXJlIHN1cHBvc2VkIHRvIGxlYXZlIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgdW5jaGFuZ2VkCi0jIG9uY2UgdGhleSBjb21wbGV0ZS4gIEJ1dCBzb21ldGltZXMgdGVzdHMgaGF2ZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4KLSMgdGVzdHMgZmFpbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGVudmlyb25tZW50IGdvIG9uIHRvIG1lc3MgdXAgb3RoZXIKLSMgdGVzdHMuICBUaGlzIGNhbiBjYXVzZSBpc3N1ZXMgd2l0aCBidWlsZGJvdCBzdGFiaWxpdHksIHNpbmNlIHRlc3RzCi0jIGFyZSBydW4gaW4gcmFuZG9tIG9yZGVyIGFuZCBzbyBwcm9ibGVtcyBtYXkgYXBwZWFyIHRvIGNvbWUgYW5kIGdvLgotIyBUaGVyZSBhcmUgYSBmZXcgdGhpbmdzIHdlIGNhbiBzYXZlIGFuZCByZXN0b3JlIHRvIG1pdGlnYXRlIHRoaXMsIGFuZAotIyB0aGUgZm9sbG93aW5nIGNvbnRleHQgbWFuYWdlciBoYW5kbGVzIHRoaXMgdGFzay4KLQotY2xhc3Mgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudDoKLSAgICAiIiJTYXZlIGJpdHMgb2YgdGhlIHRlc3QgZW52aXJvbm1lbnQgYW5kIHJlc3RvcmUgdGhlbSBhdCBibG9jayBleGl0LgotCi0gICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0bmFtZSwgdmVyYm9zZSwgcXVpZXQpOgotICAgICAgICAgICAgI3N0dWZmCi0KLSAgICBVbmxlc3MgcXVpZXQgaXMgVHJ1ZSwgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gc3RkZXJyIGlmIGFueSBvZgotICAgIHRoZSBzYXZlZCBpdGVtcyB3YXMgY2hhbmdlZCBieSB0aGUgdGVzdC4gIFRoZSBhdHRyaWJ1dGUgJ2NoYW5nZWQnCi0gICAgaXMgaW5pdGlhbGx5IEZhbHNlLCBidXQgaXMgc2V0IHRvIFRydWUgaWYgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCi0KLSAgICBJZiB2ZXJib3NlIGlzIG1vcmUgdGhhbiAxLCB0aGUgYmVmb3JlIGFuZCBhZnRlciBzdGF0ZSBvZiBjaGFuZ2VkCi0gICAgaXRlbXMgaXMgYWxzbyBwcmludGVkLgotICAgICIiIgotCi0gICAgY2hhbmdlZCA9IEZhbHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdG5hbWUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsICosIHBnbz1GYWxzZSk6Ci0gICAgICAgIHNlbGYudGVzdG5hbWUgPSB0ZXN0bmFtZQotICAgICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCi0gICAgICAgIHNlbGYucXVpZXQgPSBxdWlldAotICAgICAgICBzZWxmLnBnbyA9IHBnbwotCi0gICAgIyBUbyBhZGQgdGhpbmdzIHRvIHNhdmUgYW5kIHJlc3RvcmUsIGFkZCBhIG5hbWUgWFhYIHRvIHRoZSByZXNvdXJjZXMgbGlzdAotICAgICMgYW5kIGFkZCBjb3JyZXNwb25kaW5nIGdldF9YWFgvcmVzdG9yZV9YWFggZnVuY3Rpb25zLiAgZ2V0X1hYWCBzaG91bGQKLSAgICAjIHJldHVybiB0aGUgdmFsdWUgdG8gYmUgc2F2ZWQgYW5kIGNvbXBhcmVkIGFnYWluc3QgYSBzZWNvbmQgY2FsbCB0byB0aGUKLSAgICAjIGdldCBmdW5jdGlvbiB3aGVuIHRlc3QgZXhlY3V0aW9uIGNvbXBsZXRlcy4gIHJlc3RvcmVfWFhYIHNob3VsZCBhY2NlcHQKLSAgICAjIHRoZSBzYXZlZCB2YWx1ZSBhbmQgcmVzdG9yZSB0aGUgcmVzb3VyY2UgdXNpbmcgaXQuICBJdCB3aWxsIGJlIGNhbGxlZCBpZgotICAgICMgYW5kIG9ubHkgaWYgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIGlzIGRldGVjdGVkLgotICAgICMKLSAgICAjIE5vdGU6IFhYWCB3aWxsIGhhdmUgYW55ICcuJyByZXBsYWNlZCB3aXRoICdfJyBjaGFyYWN0ZXJzIHdoZW4gZGV0ZXJtaW5pbmcKLSAgICAjIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBuYW1lcy4KLQotICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAotICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKLSAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzLmZpbHRlcnMnLCAnYXN5bmNvcmUuc29ja2V0X21hcCcsCi0gICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsICdzeXMuZ2V0dHJhY2UnLAotICAgICAgICAgICAgICAgICAnc3lzLndhcm5vcHRpb25zJywKLSAgICAgICAgICAgICAgICAgIyBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpIG1heSByZWxlYXNlIHJlZgotICAgICAgICAgICAgICAgICAjIHRvIGEgdGhyZWFkLCBzbyBjaGVjayBwcm9jZXNzZXMgZmlyc3QuCi0gICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCi0gICAgICAgICAgICAgICAgICdzeXNjb25maWcuX0NPTkZJR19WQVJTJywgJ3N5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTJywKLSAgICAgICAgICAgICAgICAgJ2ZpbGVzJywgJ2xvY2FsZScsICd3YXJuaW5ncy5zaG93d2FybmluZycsCi0gICAgICAgICAgICAgICAgICdzaHV0aWxfYXJjaGl2ZV9mb3JtYXRzJywgJ3NodXRpbF91bnBhY2tfZm9ybWF0cycsCi0gICAgICAgICAgICAgICAgKQotCi0gICAgZGVmIGdldF9zeXNfYXJndihzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHN5cy5hcmd2KSwgc3lzLmFyZ3YsIHN5cy5hcmd2WzpdCi0gICAgZGVmIHJlc3RvcmVfc3lzX2FyZ3Yoc2VsZiwgc2F2ZWRfYXJndik6Ci0gICAgICAgIHN5cy5hcmd2ID0gc2F2ZWRfYXJndlsxXQotICAgICAgICBzeXMuYXJndls6XSA9IHNhdmVkX2FyZ3ZbMl0KLQotICAgIGRlZiBnZXRfY3dkKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKLSAgICBkZWYgcmVzdG9yZV9jd2Qoc2VsZiwgc2F2ZWRfY3dkKToKLSAgICAgICAgb3MuY2hkaXIoc2F2ZWRfY3dkKQotCi0gICAgZGVmIGdldF9zeXNfc3Rkb3V0KHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLnN0ZG91dAotICAgIGRlZiByZXN0b3JlX3N5c19zdGRvdXQoc2VsZiwgc2F2ZWRfc3Rkb3V0KToKLSAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVkX3N0ZG91dAotCi0gICAgZGVmIGdldF9zeXNfc3RkZXJyKHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLnN0ZGVycgotICAgIGRlZiByZXN0b3JlX3N5c19zdGRlcnIoc2VsZiwgc2F2ZWRfc3RkZXJyKToKLSAgICAgICAgc3lzLnN0ZGVyciA9IHNhdmVkX3N0ZGVycgotCi0gICAgZGVmIGdldF9zeXNfc3RkaW4oc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuc3RkaW4KLSAgICBkZWYgcmVzdG9yZV9zeXNfc3RkaW4oc2VsZiwgc2F2ZWRfc3RkaW4pOgotICAgICAgICBzeXMuc3RkaW4gPSBzYXZlZF9zdGRpbgotCi0gICAgZGVmIGdldF9vc19lbnZpcm9uKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQob3MuZW52aXJvbiksIG9zLmVudmlyb24sIGRpY3Qob3MuZW52aXJvbikKLSAgICBkZWYgcmVzdG9yZV9vc19lbnZpcm9uKHNlbGYsIHNhdmVkX2Vudmlyb24pOgotICAgICAgICBvcy5lbnZpcm9uID0gc2F2ZWRfZW52aXJvblsxXQotICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKLSAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoc2F2ZWRfZW52aXJvblsyXSkKLQotICAgIGRlZiBnZXRfc3lzX3BhdGgoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChzeXMucGF0aCksIHN5cy5wYXRoLCBzeXMucGF0aFs6XQotICAgIGRlZiByZXN0b3JlX3N5c19wYXRoKHNlbGYsIHNhdmVkX3BhdGgpOgotICAgICAgICBzeXMucGF0aCA9IHNhdmVkX3BhdGhbMV0KLSAgICAgICAgc3lzLnBhdGhbOl0gPSBzYXZlZF9wYXRoWzJdCi0KLSAgICBkZWYgZ2V0X3N5c19wYXRoX2hvb2tzKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGhfaG9va3MpLCBzeXMucGF0aF9ob29rcywgc3lzLnBhdGhfaG9va3NbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aF9ob29rcyhzZWxmLCBzYXZlZF9ob29rcyk6Ci0gICAgICAgIHN5cy5wYXRoX2hvb2tzID0gc2F2ZWRfaG9va3NbMV0KLSAgICAgICAgc3lzLnBhdGhfaG9va3NbOl0gPSBzYXZlZF9ob29rc1syXQotCi0gICAgZGVmIGdldF9zeXNfZ2V0dHJhY2Uoc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuZ2V0dHJhY2UoKQotICAgIGRlZiByZXN0b3JlX3N5c19nZXR0cmFjZShzZWxmLCB0cmFjZV9meG4pOgotICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VfZnhuKQotCi0gICAgZGVmIGdldF9fX2ltcG9ydF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gYnVpbHRpbnMuX19pbXBvcnRfXwotICAgIGRlZiByZXN0b3JlX19faW1wb3J0X18oc2VsZiwgaW1wb3J0Xyk6Ci0gICAgICAgIGJ1aWx0aW5zLl9faW1wb3J0X18gPSBpbXBvcnRfCi0KLSAgICBkZWYgZ2V0X3dhcm5pbmdzX2ZpbHRlcnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZCh3YXJuaW5ncy5maWx0ZXJzKSwgd2FybmluZ3MuZmlsdGVycywgd2FybmluZ3MuZmlsdGVyc1s6XQotICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX2ZpbHRlcnMoc2VsZiwgc2F2ZWRfZmlsdGVycyk6Ci0gICAgICAgIHdhcm5pbmdzLmZpbHRlcnMgPSBzYXZlZF9maWx0ZXJzWzFdCi0gICAgICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBzYXZlZF9maWx0ZXJzWzJdCi0KLSAgICBkZWYgZ2V0X2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZik6Ci0gICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCi0gICAgICAgICMgWFhYIE1ha2luZyBhIGNvcHkga2VlcHMgb2JqZWN0cyBhbGl2ZSB1bnRpbCBfX2V4aXRfXyBnZXRzIGNhbGxlZC4KLSAgICAgICAgcmV0dXJuIGFzeW5jb3JlIGFuZCBhc3luY29yZS5zb2NrZXRfbWFwLmNvcHkoKSBvciB7fQotICAgIGRlZiByZXN0b3JlX2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZiwgc2F2ZWRfbWFwKToKLSAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKLSAgICAgICAgaWYgYXN5bmNvcmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoaWdub3JlX2FsbD1UcnVlKQotICAgICAgICAgICAgYXN5bmNvcmUuc29ja2V0X21hcC51cGRhdGUoc2F2ZWRfbWFwKQotCi0gICAgZGVmIGdldF9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYpOgotICAgICAgICAjIHdlIGNvdWxkIGNhbGwgZ2V0X2FyY2hpdmVzX2Zvcm1hdHMoKSBidXQgdGhhdCBvbmx5IHJldHVybnMgdGhlCi0gICAgICAgICMgcmVnaXN0cnkga2V5czsgd2Ugd2FudCB0byBjaGVjayB0aGUgdmFsdWVzIHRvbyAodGhlIGZ1bmN0aW9ucyB0aGF0Ci0gICAgICAgICMgYXJlIHJlZ2lzdGVyZWQpCi0gICAgICAgIHJldHVybiBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUywgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTID0gc2F2ZWRbMF0KLSAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY2xlYXIoKQotICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCi0KLSAgICBkZWYgZ2V0X3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMsIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYsIHNhdmVkKToKLSAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUyA9IHNhdmVkWzBdCi0gICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY2xlYXIoKQotICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKLQotICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlcnMoc2VsZik6Ci0gICAgICAgICMgX2hhbmRsZXJzIGlzIGEgV2Vha1ZhbHVlRGljdGlvbmFyeQotICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlcnMpLCBsb2dnaW5nLl9oYW5kbGVycywgbG9nZ2luZy5faGFuZGxlcnMuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlcnMoc2VsZiwgc2F2ZWRfaGFuZGxlcnMpOgotICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmKToKLSAgICAgICAgIyBfaGFuZGxlckxpc3QgaXMgYSBsaXN0IG9mIHdlYWtyZWZzIHRvIGhhbmRsZXJzCi0gICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVyTGlzdCksIGxvZ2dpbmcuX2hhbmRsZXJMaXN0LCBsb2dnaW5nLl9oYW5kbGVyTGlzdFs6XQotICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYsIHNhdmVkX2hhbmRsZXJMaXN0KToKLSAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBnZXRfc3lzX3dhcm5vcHRpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLndhcm5vcHRpb25zKSwgc3lzLndhcm5vcHRpb25zLCBzeXMud2Fybm9wdGlvbnNbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfd2Fybm9wdGlvbnMoc2VsZiwgc2F2ZWRfb3B0aW9ucyk6Ci0gICAgICAgIHN5cy53YXJub3B0aW9ucyA9IHNhdmVkX29wdGlvbnNbMV0KLSAgICAgICAgc3lzLndhcm5vcHRpb25zWzpdID0gc2F2ZWRfb3B0aW9uc1syXQotCi0gICAgIyBDb250cm9sbGluZyBkYW5nbGluZyByZWZlcmVuY2VzIHRvIFRocmVhZCBvYmplY3RzIGNhbiBtYWtlIGl0IGVhc2llcgotICAgICMgdG8gdHJhY2sgcmVmZXJlbmNlIGxlYWtzLgotICAgIGRlZiBnZXRfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmKToKLSAgICAgICAgaWYgbm90IHRocmVhZGluZzoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCi0gICAgICAgIHJldHVybiB0aHJlYWRpbmcuX2RhbmdsaW5nLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgotICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcuY2xlYXIoKQotICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKLQotICAgICMgU2FtZSBmb3IgUHJvY2VzcyBvYmplY3RzCi0gICAgZGVmIGdldF9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIFVuam9pbmVkIHByb2Nlc3Mgb2JqZWN0cyBjYW4gc3Vydml2ZSBhZnRlciBwcm9jZXNzIGV4aXRzCi0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkKLSAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKLSAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgotICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCi0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCi0KLSAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6Ci0gICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCi0gICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKLSAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKLSAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQotICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KLSAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCi0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQotCi0gICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAotICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKLSAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KLSAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQotICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCi0KLSAgICBkZWYgZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICByZXR1cm4gc29ydGVkKGZuICsgKCcvJyBpZiBvcy5wYXRoLmlzZGlyKGZuKSBlbHNlICcnKQotICAgICAgICAgICAgICAgICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKCkpCi0gICAgZGVmIHJlc3RvcmVfZmlsZXMoc2VsZiwgc2F2ZWRfdmFsdWUpOgotICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCi0gICAgICAgIGlmIGZuIG5vdCBpbiBzYXZlZF92YWx1ZSBhbmQgKGZuICsgJy8nKSBub3QgaW4gc2F2ZWRfdmFsdWU6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6Ci0gICAgICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoZm4pCi0gICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZm4pOgotICAgICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGZuKQotCi0gICAgX2xjID0gW2dldGF0dHIobG9jYWxlLCBsYykgZm9yIGxjIGluIGRpcihsb2NhbGUpCi0gICAgICAgICAgIGlmIGxjLnN0YXJ0c3dpdGgoJ0xDXycpXQotICAgIGRlZiBnZXRfbG9jYWxlKHNlbGYpOgotICAgICAgICBwYWlyaW5ncyA9IFtdCi0gICAgICAgIGZvciBsYyBpbiBzZWxmLl9sYzoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwYWlyaW5ncy5hcHBlbmQoKGxjLCBsb2NhbGUuc2V0bG9jYWxlKGxjLCBOb25lKSkpCi0gICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcmV0dXJuIHBhaXJpbmdzCi0gICAgZGVmIHJlc3RvcmVfbG9jYWxlKHNlbGYsIHNhdmVkKToKLSAgICAgICAgZm9yIGxjLCBzZXR0aW5nIGluIHNhdmVkOgotICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsYywgc2V0dGluZykKLQotICAgIGRlZiBnZXRfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiB3YXJuaW5ncy5zaG93d2FybmluZwotICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYsIGZ4bik6Ci0gICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nID0gZnhuCi0KLSAgICBkZWYgcmVzb3VyY2VfaW5mbyhzZWxmKToKLSAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5yZXNvdXJjZXM6Ci0gICAgICAgICAgICBtZXRob2Rfc3VmZml4ID0gbmFtZS5yZXBsYWNlKCcuJywgJ18nKQotICAgICAgICAgICAgZ2V0X25hbWUgPSAnZ2V0XycgKyBtZXRob2Rfc3VmZml4Ci0gICAgICAgICAgICByZXN0b3JlX25hbWUgPSAncmVzdG9yZV8nICsgbWV0aG9kX3N1ZmZpeAotICAgICAgICAgICAgeWllbGQgbmFtZSwgZ2V0YXR0cihzZWxmLCBnZXRfbmFtZSksIGdldGF0dHIoc2VsZiwgcmVzdG9yZV9uYW1lKQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zYXZlZF92YWx1ZXMgPSBkaWN0KChuYW1lLCBnZXQoKSkgZm9yIG5hbWUsIGdldCwgcmVzdG9yZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCkpCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6Ci0gICAgICAgIHNhdmVkX3ZhbHVlcyA9IHNlbGYuc2F2ZWRfdmFsdWVzCi0gICAgICAgIGRlbCBzZWxmLnNhdmVkX3ZhbHVlcwotICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKSAgIyBTb21lIHJlc291cmNlcyB1c2Ugd2VhayByZWZlcmVuY2VzCi0gICAgICAgIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCk6Ci0gICAgICAgICAgICBjdXJyZW50ID0gZ2V0KCkKLSAgICAgICAgICAgIG9yaWdpbmFsID0gc2F2ZWRfdmFsdWVzLnBvcChuYW1lKQotICAgICAgICAgICAgIyBDaGVjayBmb3IgY2hhbmdlcyB0byB0aGUgcmVzb3VyY2UncyB2YWx1ZQotICAgICAgICAgICAgaWYgY3VycmVudCAhPSBvcmlnaW5hbDoKLSAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgcmVzdG9yZShvcmlnaW5hbCkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5xdWlldCBhbmQgbm90IHNlbGYucGdvOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZyAtLSB7fSB3YXMgbW9kaWZpZWQgYnkge30iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLnRlc3RuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZSA+IDEgYW5kIG5vdCBzZWxmLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIgIEJlZm9yZToge31cbiAgQWZ0ZXI6ICB7fSAiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwsIGN1cnJlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LAotICAgICAgICAgICAgICAgICAgaHVudHJsZWFrcz1GYWxzZSwgZGlzcGxheV9mYWlsdXJlPVRydWUsIHBnbz1GYWxzZSk6Ci0gICAgc3VwcG9ydC51bmxvYWQodGVzdCkKLQotICAgIHRlc3RfdGltZSA9IDAuMAotICAgIHJlZmxlYWsgPSBGYWxzZSAgIyBUcnVlIGlmIHRoZSB0ZXN0IGxlYWtlZCByZWZlcmVuY2VzLgotICAgIHRyeToKLSAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKCd0ZXN0LicpOgotICAgICAgICAgICAgYWJzdGVzdCA9IHRlc3QKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQWx3YXlzIGltcG9ydCBpdCBmcm9tIHRoZSB0ZXN0IHBhY2thZ2UKLSAgICAgICAgICAgIGFic3Rlc3QgPSAndGVzdC4nICsgdGVzdAotICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdCwgdmVyYm9zZSwgcXVpZXQsIHBnbz1wZ28pIGFzIGVudmlyb25tZW50OgotICAgICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICB0aGVfbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoYWJzdGVzdCkKLSAgICAgICAgICAgICMgSWYgdGhlIHRlc3QgaGFzIGEgdGVzdF9tYWluLCB0aGF0IHdpbGwgcnVuIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgIyB0ZXN0cy4gIElmIG5vdCwgdXNlIG5vcm1hbCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcuCi0gICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGdldGF0dHIodGhlX21vZHVsZSwgInRlc3RfbWFpbiIsIE5vbmUpCi0gICAgICAgICAgICBpZiB0ZXN0X3J1bm5lciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bm5lcigpOgotICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSh0aGVfbW9kdWxlKQotICAgICAgICAgICAgICAgICAgICBmb3IgZXJyb3IgaW4gbG9hZGVyLmVycm9yczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGVycm9yLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxvYWRlci5lcnJvcnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImVycm9ycyB3aGlsZSBsb2FkaW5nIHRlc3RzIikKLSAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCi0gICAgICAgICAgICB0ZXN0X3J1bm5lcigpCi0gICAgICAgICAgICBpZiBodW50cmxlYWtzOgotICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgdGVzdF9ydW5uZXIsIGh1bnRybGVha3MpCi0gICAgICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUKLSAgICBleGNlcHQgc3VwcG9ydC5SZXNvdXJjZURlbmllZCBhcyBtc2c6Ci0gICAgICAgIGlmIG5vdCBxdWlldCBhbmQgbm90IHBnbzoKLSAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHJldHVybiBSRVNPVVJDRV9ERU5JRUQsIHRlc3RfdGltZQotICAgIGV4Y2VwdCB1bml0dGVzdC5Ta2lwVGVzdCBhcyBtc2c6Ci0gICAgICAgIGlmIG5vdCBxdWlldCBhbmQgbm90IHBnbzoKLSAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHJldHVybiBTS0lQUEVELCB0ZXN0X3RpbWUKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHJhaXNlCi0gICAgZXhjZXB0IHN1cHBvcnQuVGVzdEZhaWxlZCBhcyBtc2c6Ci0gICAgICAgIGlmIG5vdCBwZ286Ci0gICAgICAgICAgICBpZiBkaXNwbGF5X2ZhaWx1cmU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiZmFpbGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCIsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQotICAgIGV4Y2VwdDoKLSAgICAgICAgbXNnID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQotICAgICAgICBpZiBub3QgcGdvOgotICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiY3Jhc2hlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCi0gICAgZWxzZToKLSAgICAgICAgaWYgcmVmbGVhazoKLSAgICAgICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQotICAgICAgICBpZiBlbnZpcm9ubWVudC5jaGFuZ2VkOgotICAgICAgICAgICAgcmV0dXJuIEVOVl9DSEFOR0VELCB0ZXN0X3RpbWUKLSAgICAgICAgcmV0dXJuIFBBU1NFRCwgdGVzdF90aW1lCi0KLWRlZiBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3RuYW1lLCB2ZXJib3NlKToKLSAgICBpbXBvcnQgc2h1dGlsCi0gICAgaW1wb3J0IHN0YXQKLSAgICBpbXBvcnQgZ2MKLQotICAgICMgRmlyc3Qga2lsbCBhbnkgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBvcGVuIGZpbGVzIGV0Yy4KLSAgICAjIFRoaXMgY2FuIGFsc28gaXNzdWUgc29tZSBSZXNvdXJjZVdhcm5pbmdzIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBnZXQKLSAgICAjIHRyaWdnZXJlZCBkdXJpbmcgdGhlIGZvbGxvd2luZyB0ZXN0IHJ1biwgYW5kIHBvc3NpYmx5IHByb2R1Y2UgZmFpbHVyZXMuCi0gICAgZ2MuY29sbGVjdCgpCi0KLSAgICAjIFRyeSB0byBjbGVhbiB1cCBqdW5rIGNvbW1vbmx5IGxlZnQgYmVoaW5kLiAgV2hpbGUgdGVzdHMgc2hvdWxkbid0IGxlYXZlCi0gICAgIyBhbnkgZmlsZXMgb3IgZGlyZWN0b3JpZXMgYmVoaW5kLCB3aGVuIGEgdGVzdCBmYWlscyB0aGF0IGNhbiBiZSB0ZWRpb3VzCi0gICAgIyBmb3IgaXQgdG8gYXJyYW5nZS4gIFRoZSBjb25zZXF1ZW5jZXMgY2FuIGJlIGVzcGVjaWFsbHkgbmFzdHkgb24gV2luZG93cywKLSAgICAjIHNpbmNlIGlmIGEgdGVzdCBsZWF2ZXMgYSBmaWxlIG9wZW4sIGl0IGNhbm5vdCBiZSBkZWxldGVkIGJ5IG5hbWUgKHdoaWxlCi0gICAgIyB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IHRoYXQgaGVyZSBlaXRoZXIsIHdlIGNhbiBkaXNwbGF5IHRoZQotICAgICMgbmFtZSBvZiB0aGUgb2ZmZW5kaW5nIHRlc3QsIHdoaWNoIGlzIGEgcmVhbCBoZWxwKS4KLSAgICBmb3IgbmFtZSBpbiAoc3VwcG9ydC5URVNURk4sCi0gICAgICAgICAgICAgICAgICJkYl9ob21lIiwKLSAgICAgICAgICAgICAgICApOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobmFtZSk6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIobmFtZSk6Ci0gICAgICAgICAgICBraW5kLCBudWtlciA9ICJkaXJlY3RvcnkiLCBzaHV0aWwucm10cmVlCi0gICAgICAgIGVsaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6Ci0gICAgICAgICAgICBraW5kLCBudWtlciA9ICJmaWxlIiwgb3MudW5saW5rCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcigib3MucGF0aCBzYXlzICVyIGV4aXN0cyBidXQgaXMgbmVpdGhlciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5IG5vciBmaWxlIiAlIG5hbWUpCi0KLSAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCIlciBsZWZ0IGJlaGluZCAlcyAlciIgJSAodGVzdG5hbWUsIGtpbmQsIG5hbWUpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIGlmIHdlIGhhdmUgY2htb2QsIGZpeCBwb3NzaWJsZSBwZXJtaXNzaW9ucyBwcm9ibGVtcwotICAgICAgICAgICAgIyB0aGF0IG1pZ2h0IHByZXZlbnQgY2xlYW51cAotICAgICAgICAgICAgaWYgKGhhc2F0dHIob3MsICdjaG1vZCcpKToKLSAgICAgICAgICAgICAgICBvcy5jaG1vZChuYW1lLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWEcgfCBzdGF0LlNfSVJXWE8pCi0gICAgICAgICAgICBudWtlcihuYW1lKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIG1zZzoKLSAgICAgICAgICAgIHByaW50KCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIgYW5kIGl0IGNvdWxkbid0IGJlICIKLSAgICAgICAgICAgICAgICAicmVtb3ZlZDogJXMiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lLCBtc2cpKSwgZmlsZT1zeXMuc3RkZXJyKQotCi1kZWYgZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIGluZGlyZWN0X3Rlc3QsIGh1bnRybGVha3MpOgotICAgICIiIlJ1biBhIHRlc3QgbXVsdGlwbGUgdGltZXMsIGxvb2tpbmcgZm9yIHJlZmVyZW5jZSBsZWFrcy4KLQotICAgIFJldHVybnM6Ci0gICAgICAgIEZhbHNlIGlmIHRoZSB0ZXN0IGRpZG4ndCBsZWFrIHJlZmVyZW5jZXM7IFRydWUgaWYgd2UgZGV0ZWN0ZWQgcmVmbGVha3MuCi0gICAgIiIiCi0gICAgIyBUaGlzIGNvZGUgaXMgaGFja2lzaCBhbmQgaW5lbGVnYW50LCBidXQgaXQgc2VlbXMgdG8gZG8gdGhlIGpvYi4KLSAgICBpbXBvcnQgY29weXJlZwotICAgIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLQotICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUcmFja2luZyByZWZlcmVuY2UgbGVha3MgcmVxdWlyZXMgYSBkZWJ1ZyBidWlsZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAib2YgUHl0aG9uIikKLQotICAgICMgU2F2ZSBjdXJyZW50IHZhbHVlcyBmb3IgZGFzaF9SX2NsZWFudXAoKSB0byByZXN0b3JlLgotICAgIGZzID0gd2FybmluZ3MuZmlsdGVyc1s6XQotICAgIHBzID0gY29weXJlZy5kaXNwYXRjaF90YWJsZS5jb3B5KCkKLSAgICBwaWMgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jb3B5KCkKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB6aXBpbXBvcnQKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHpkYyA9IE5vbmUgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAotICAgIGVsc2U6Ci0gICAgICAgIHpkYyA9IHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jb3B5KCkKLSAgICBhYmNzID0ge30KLSAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgotICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgotICAgICAgICAgICAgYWJjc1tvYmpdID0gb2JqLl9hYmNfcmVnaXN0cnkuY29weSgpCi0KLSAgICBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUgPSBodW50cmxlYWtzCi0gICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgZm5hbWUpCi0gICAgcmVwY291bnQgPSBud2FybXVwICsgbnRyYWNrZWQKLSAgICByY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAotICAgIGFsbG9jX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50Ci0KLSAgICBwcmludCgiYmVnaW5uaW5nIiwgcmVwY291bnQsICJyZXBldGl0aW9ucyIsIGZpbGU9c3lzLnN0ZGVycikKLSAgICBwcmludCgoIjEyMzQ1Njc4OTAiKihyZXBjb3VudC8vMTAgKyAxKSlbOnJlcGNvdW50XSwgZmlsZT1zeXMuc3RkZXJyKQotICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgIGZvciBpIGluIHJhbmdlKHJlcGNvdW50KToKLSAgICAgICAgaW5kaXJlY3RfdGVzdCgpCi0gICAgICAgIGFsbG9jX2FmdGVyLCByY19hZnRlciA9IGRhc2hfUl9jbGVhbnVwKGZzLCBwcywgcGljLCB6ZGMsIGFiY3MpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJy4nKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgaWYgaSA+PSBud2FybXVwOgotICAgICAgICAgICAgcmNfZGVsdGFzW2ldID0gcmNfYWZ0ZXIgLSByY19iZWZvcmUKLSAgICAgICAgICAgIGFsbG9jX2RlbHRhc1tpXSA9IGFsbG9jX2FmdGVyIC0gYWxsb2NfYmVmb3JlCi0gICAgICAgIGFsbG9jX2JlZm9yZSwgcmNfYmVmb3JlID0gYWxsb2NfYWZ0ZXIsIHJjX2FmdGVyCi0gICAgcHJpbnQoZmlsZT1zeXMuc3RkZXJyKQotICAgICMgVGhlc2UgY2hlY2tlcnMgcmV0dXJuIEZhbHNlIG9uIHN1Y2Nlc3MsIFRydWUgb24gZmFpbHVyZQotICAgIGRlZiBjaGVja19yY19kZWx0YXMoZGVsdGFzKToKLSAgICAgICAgcmV0dXJuIGFueShkZWx0YXMpCi0gICAgZGVmIGNoZWNrX2FsbG9jX2RlbHRhcyhkZWx0YXMpOgotICAgICAgICAjIEF0IGxlYXN0IDEvM3JkIG9mIDBzCi0gICAgICAgIGlmIDMgKiBkZWx0YXMuY291bnQoMCkgPCBsZW4oZGVsdGFzKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICMgTm90aGluZyBlbHNlIHRoYW4gMXMsIDBzIGFuZCAtMXMKLSAgICAgICAgaWYgbm90IHNldChkZWx0YXMpIDw9IHsxLDAsLTF9OgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZmFpbGVkID0gRmFsc2UKLSAgICBmb3IgZGVsdGFzLCBpdGVtX25hbWUsIGNoZWNrZXIgaW4gWwotICAgICAgICAocmNfZGVsdGFzLCAncmVmZXJlbmNlcycsIGNoZWNrX3JjX2RlbHRhcyksCi0gICAgICAgIChhbGxvY19kZWx0YXMsICdtZW1vcnkgYmxvY2tzJywgY2hlY2tfYWxsb2NfZGVsdGFzKV06Ci0gICAgICAgIGlmIGNoZWNrZXIoZGVsdGFzKToKLSAgICAgICAgICAgIG1zZyA9ICclcyBsZWFrZWQgJXMgJXMsIHN1bT0lcycgJSAoCi0gICAgICAgICAgICAgICAgdGVzdCwgZGVsdGFzW253YXJtdXA6XSwgaXRlbV9uYW1lLCBzdW0oZGVsdGFzKSkKLSAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJhIikgYXMgcmVmcmVwOgotICAgICAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1yZWZyZXApCi0gICAgICAgICAgICAgICAgcmVmcmVwLmZsdXNoKCkKLSAgICAgICAgICAgIGZhaWxlZCA9IFRydWUKLSAgICByZXR1cm4gZmFpbGVkCi0KLWRlZiBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKToKLSAgICBpbXBvcnQgZ2MsIGNvcHlyZWcKLSAgICBpbXBvcnQgX3N0cnB0aW1lLCBsaW5lY2FjaGUKLSAgICBpbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdCwgbWltZXR5cGVzLCBkb2N0ZXN0Ci0gICAgaW1wb3J0IHN0cnVjdCwgZmlsZWNtcCwgY29sbGVjdGlvbnMuYWJjCi0gICAgZnJvbSBkaXN0dXRpbHMuZGlyX3V0aWwgaW1wb3J0IF9wYXRoX2NyZWF0ZWQKLSAgICBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtTZXQKLQotICAgICMgQ2xlYXIgdGhlIHdhcm5pbmdzIHJlZ2lzdHJ5LCBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgYWdhaW4KLSAgICBmb3IgbW9kIGluIHN5cy5tb2R1bGVzLnZhbHVlcygpOgotICAgICAgICBpZiBoYXNhdHRyKG1vZCwgJ19fd2FybmluZ3JlZ2lzdHJ5X18nKToKLSAgICAgICAgICAgIGRlbCBtb2QuX193YXJuaW5ncmVnaXN0cnlfXwotCi0gICAgIyBSZXN0b3JlIHNvbWUgb3JpZ2luYWwgdmFsdWVzLgotICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBmcwotICAgIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY2xlYXIoKQotICAgIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUudXBkYXRlKHBzKQotICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKLSAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS51cGRhdGUocGljKQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHppcGltcG9ydAotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcyAjIFJ1biB1bm1vZGlmaWVkIG9uIHBsYXRmb3JtcyB3aXRob3V0IHppcGltcG9ydCBzdXBwb3J0Ci0gICAgZWxzZToKLSAgICAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNsZWFyKCkKLSAgICAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLnVwZGF0ZSh6ZGMpCi0KLSAgICAjIGNsZWFyIHR5cGUgY2FjaGUKLSAgICBzeXMuX2NsZWFyX3R5cGVfY2FjaGUoKQotCi0gICAgIyBDbGVhciBBQkMgcmVnaXN0cmllcywgcmVzdG9yaW5nIHByZXZpb3VzbHkgc2F2ZWQgQUJDIHJlZ2lzdHJpZXMuCi0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKLSAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKLSAgICAgICAgICAgIG9iai5fYWJjX3JlZ2lzdHJ5ID0gYWJjcy5nZXQob2JqLCBXZWFrU2V0KCkpLmNvcHkoKQotICAgICAgICAgICAgb2JqLl9hYmNfY2FjaGUuY2xlYXIoKQotICAgICAgICAgICAgb2JqLl9hYmNfbmVnYXRpdmVfY2FjaGUuY2xlYXIoKQotCi0gICAgIyBGbHVzaCBzdGFuZGFyZCBvdXRwdXQsIHNvIHRoYXQgYnVmZmVyZWQgZGF0YSBpcyBzZW50IHRvIHRoZSBPUyBhbmQKLSAgICAjIGFzc29jaWF0ZWQgUHl0aG9uIG9iamVjdHMgYXJlIHJlY2xhaW1lZC4KLSAgICBmb3Igc3RyZWFtIGluIChzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyLCBzeXMuX19zdGRvdXRfXywgc3lzLl9fc3RkZXJyX18pOgotICAgICAgICBpZiBzdHJlYW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzdHJlYW0uZmx1c2goKQotCi0gICAgIyBDbGVhciBhc3NvcnRlZCBtb2R1bGUgY2FjaGVzLgotICAgIF9wYXRoX2NyZWF0ZWQuY2xlYXIoKQotICAgIHJlLnB1cmdlKCkKLSAgICBfc3RycHRpbWUuX3JlZ2V4X2NhY2hlLmNsZWFyKCkKLSAgICB1cmxsaWIucGFyc2UuY2xlYXJfY2FjaGUoKQotICAgIHVybGxpYi5yZXF1ZXN0LnVybGNsZWFudXAoKQotICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKLSAgICBtaW1ldHlwZXMuX2RlZmF1bHRfbWltZV90eXBlcygpCi0gICAgZmlsZWNtcC5fY2FjaGUuY2xlYXIoKQotICAgIHN0cnVjdC5fY2xlYXJjYWNoZSgpCi0gICAgZG9jdGVzdC5tYXN0ZXIgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgY3R5cGVzCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAjIERvbid0IHdvcnJ5IGFib3V0IHJlc2V0dGluZyB0aGUgY2FjaGUgaWYgY3R5cGVzIGlzIG5vdCBzdXBwb3J0ZWQKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGN0eXBlcy5fcmVzZXRfY2FjaGUoKQotCi0gICAgIyBDb2xsZWN0IGN5Y2xpYyB0cmFzaCBhbmQgcmVhZCBtZW1vcnkgc3RhdGlzdGljcyBpbW1lZGlhdGVseSBhZnRlci4KLSAgICBmdW5jMSA9IHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MKLSAgICBmdW5jMiA9IHN5cy5nZXR0b3RhbHJlZmNvdW50Ci0gICAgZ2MuY29sbGVjdCgpCi0gICAgcmV0dXJuIGZ1bmMxKCksIGZ1bmMyKCkKLQotZGVmIHdhcm1fY2FjaGVzKCk6Ci0gICAgIyBjaGFyIGNhY2hlCi0gICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCi0gICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKLSAgICAgICAgc1tpOmkrMV0KLSAgICAjIHVuaWNvZGUgY2FjaGUKLSAgICB4ID0gW2NocihpKSBmb3IgaSBpbiByYW5nZSgyNTYpXQotICAgICMgaW50IGNhY2hlCi0gICAgeCA9IGxpc3QocmFuZ2UoLTUsIDI1NykpCi0KLWRlZiBmaW5kdGVzdGRpcihwYXRoPU5vbmUpOgotICAgIHJldHVybiBwYXRoIG9yIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyCi0KLWRlZiByZW1vdmVweShuYW1lcyk6Ci0gICAgaWYgbm90IG5hbWVzOgotICAgICAgICByZXR1cm4KLSAgICBmb3IgaWR4LCBuYW1lIGluIGVudW1lcmF0ZShuYW1lcyk6Ci0gICAgICAgIGJhc2VuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCi0gICAgICAgIGlmIGV4dCA9PSAnLnB5JzoKLSAgICAgICAgICAgIG5hbWVzW2lkeF0gPSBiYXNlbmFtZQotCi1kZWYgY291bnQobiwgd29yZCk6Ci0gICAgaWYgbiA9PSAxOgotICAgICAgICByZXR1cm4gIiVkICVzIiAlIChuLCB3b3JkKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAiJWQgJXNzIiAlIChuLCB3b3JkKQotCi1kZWYgcHJpbnRsaXN0KHgsIHdpZHRoPTcwLCBpbmRlbnQ9NCk6Ci0gICAgIiIiUHJpbnQgdGhlIGVsZW1lbnRzIG9mIGl0ZXJhYmxlIHggdG8gc3Rkb3V0LgotCi0gICAgT3B0aW9uYWwgYXJnIHdpZHRoIChkZWZhdWx0IDcwKSBpcyB0aGUgbWF4aW11bSBsaW5lIGxlbmd0aC4KLSAgICBPcHRpb25hbCBhcmcgaW5kZW50IChkZWZhdWx0IDQpIGlzIHRoZSBudW1iZXIgb2YgYmxhbmtzIHdpdGggd2hpY2ggdG8KLSAgICBiZWdpbiBlYWNoIGxpbmUuCi0gICAgIiIiCi0KLSAgICBmcm9tIHRleHR3cmFwIGltcG9ydCBmaWxsCi0gICAgYmxhbmtzID0gJyAnICogaW5kZW50Ci0gICAgIyBQcmludCB0aGUgc29ydGVkIGxpc3Q6ICd4JyBtYXkgYmUgYSAnLS1yYW5kb20nIGxpc3Qgb3IgYSBzZXQoKQotICAgIHByaW50KGZpbGwoJyAnLmpvaW4oc3RyKGVsdCkgZm9yIGVsdCBpbiBzb3J0ZWQoeCkpLCB3aWR0aCwKLSAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PWJsYW5rcywgc3Vic2VxdWVudF9pbmRlbnQ9YmxhbmtzKSkKLQotCi1kZWYgbWFpbl9pbl90ZW1wX2N3ZCgpOgotICAgICIiIlJ1biBtYWluKCkgaW4gYSB0ZW1wb3Jhcnkgd29ya2luZyBkaXJlY3RvcnkuIiIiCi0gICAgaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5ta2RpcihURU1QRElSKQotICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgIyBEZWZpbmUgYSB3cml0YWJsZSB0ZW1wIGRpciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBjd2Qgd2hpbGUgcnVubmluZwotICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKLSAgICAjIHRlc3RpbmcgKHNlZSB0aGUgLWogb3B0aW9uKS4KLSAgICB0ZXN0X2N3ZCA9ICd0ZXN0X3B5dGhvbl97fScuZm9ybWF0KG9zLmdldHBpZCgpKQotICAgIHRlc3RfY3dkID0gb3MucGF0aC5qb2luKFRFTVBESVIsIHRlc3RfY3dkKQotCi0gICAgIyBSdW4gdGhlIHRlc3RzIGluIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgQ1dEIHRvIGEKLSAgICAjIHRlbXBvcmFyeSBhbmQgd3JpdGFibGUgZGlyZWN0b3J5LiAgSWYgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG9yCi0gICAgIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuICBUaGUgb3JpZ2luYWwgQ1dEIGlzCi0gICAgIyBhdmFpbGFibGUgZnJvbSBzdXBwb3J0LlNBVkVEQ1dELgotICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCh0ZXN0X2N3ZCwgcXVpZXQ9VHJ1ZSk6Ci0gICAgICAgIG1haW4oKQotCitkZWYgX21haW4oKToKKyAgICBnbG9iYWwgX19maWxlX18KIAotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAjIFJlbW92ZSByZWdydGVzdC5weSdzIG93biBkaXJlY3RvcnkgZnJvbSB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoLiBEZXNwaXRlCiAgICAgIyB0aGUgZWxpbWluYXRpb24gb2YgaW1wbGljaXQgcmVsYXRpdmUgaW1wb3J0cywgdGhpcyBpcyBzdGlsbCBuZWVkZWQgdG8KICAgICAjIGVuc3VyZSB0aGF0IHN1Ym1vZHVsZXMgb2YgdGhlIHRlc3QgcGFja2FnZSBkbyBub3QgaW5hcHByb3ByaWF0ZWx5IGFwcGVhcgogICAgICMgYXMgdG9wLWxldmVsIG1vZHVsZXMgZXZlbiB3aGVuIHBlb3BsZSAob3IgYnVpbGRib3RzISkgaW52b2tlIHJlZ3J0ZXN0LnB5CiAgICAgIyBkaXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSAtbSBzd2l0Y2gKICAgICBteWRpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSkpKQotICAgIGkgPSBsZW4oc3lzLnBhdGgpCisgICAgaSA9IGxlbihzeXMucGF0aCkgLSAxCiAgICAgd2hpbGUgaSA+PSAwOgotICAgICAgICBpIC09IDEKICAgICAgICAgaWYgb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgubm9ybXBhdGgoc3lzLnBhdGhbaV0pKSA9PSBteWRpcjoKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFtpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaSAtPSAxCiAKICAgICAjIGZpbmR0ZXN0ZGlyKCkgZ2V0cyB0aGUgZGlybmFtZSBvdXQgb2YgX19maWxlX18sIHNvIHdlIGhhdmUgdG8gbWFrZSBpdAogICAgICMgYWJzb2x1dGUgYmVmb3JlIGNoYW5naW5nIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4KQEAgLTE2MTUsNCArNDMsOCBAQAogICAgICMgc2FuaXR5IGNoZWNrCiAgICAgYXNzZXJ0IF9fZmlsZV9fID09IG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkKIAotICAgIG1haW5faW5fdGVtcF9jd2QoKQorICAgIG1haW4oKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgX21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CmluZGV4IDcyZjQ4NDUuLjFlN2E2ZjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NlcV90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKQEAgLTMxOCw3ICszMTgsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChzKSwgaWQocyoxKSkKIAogICAgIGRlZiB0ZXN0X2JpZ3JlcGVhdChzZWxmKToKLSAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICBpZiBzeXMubWF4c2l6ZSA8PSAyMTQ3NDgzNjQ3OgogICAgICAgICAgICAgeCA9IHNlbGYudHlwZTJ0ZXN0KFswXSkKICAgICAgICAgICAgIHggKj0gMioqMTYKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NpZ25hbGludGVycHJvY3Rlc3Rlci5weSBiL0xpYi90ZXN0L3NpZ25hbGludGVycHJvY3Rlc3Rlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2FlMTcwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qvc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5CkBAIC0wLDAgKzEsODQgQEAKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBTSUdVU1IxRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNzIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZ290X3NpZ25hbHMgPSB7J1NJR0hVUCc6IDAsICdTSUdVU1IxJzogMCwgJ1NJR0FMUk0nOiAwfQorCisgICAgZGVmIHNpZ2h1cF9oYW5kbGVyKHNlbGYsIHNpZ251bSwgZnJhbWUpOgorICAgICAgICBzZWxmLmdvdF9zaWduYWxzWydTSUdIVVAnXSArPSAxCisKKyAgICBkZWYgc2lndXNyMV9oYW5kbGVyKHNlbGYsIHNpZ251bSwgZnJhbWUpOgorICAgICAgICBzZWxmLmdvdF9zaWduYWxzWydTSUdVU1IxJ10gKz0gMQorICAgICAgICByYWlzZSBTSUdVU1IxRXhjZXB0aW9uCisKKyAgICBkZWYgd2FpdF9zaWduYWwoc2VsZiwgY2hpbGQsIHNpZ25hbWUsIGV4Y19jbGFzcz1Ob25lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgY2hpbGQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBUaGlzIHdhaXQgc2hvdWxkIGJlIGludGVycnVwdGVkIGJ5IGV4Y19jbGFzcworICAgICAgICAgICAgICAgICMgKGlmIHNldCkKKyAgICAgICAgICAgICAgICBjaGlsZC53YWl0KCkKKworICAgICAgICAgICAgdGltZW91dCA9IDEwLjAKKyAgICAgICAgICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIHRpbWVvdXQKKworICAgICAgICAgICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSA8IGRlYWRsaW5lOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuZ290X3NpZ25hbHNbc2lnbmFtZV06CisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIHNpZ25hbC5wYXVzZSgpCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Y19jbGFzcyBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZShleGMsIGV4Y19jbGFzcyk6CisgICAgICAgICAgICAgICAgIyBnb3QgdGhlIGV4cGVjdGVkIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBzZWxmLmZhaWwoJ3NpZ25hbCAlcyBub3QgcmVjZWl2ZWQgYWZ0ZXIgJXMgc2Vjb25kcycKKyAgICAgICAgICAgICAgICAgICUgKHNpZ25hbWUsIHRpbWVvdXQpKQorCisgICAgZGVmIHN1YnByb2Nlc3Nfc2VuZF9zaWduYWwoc2VsZiwgcGlkLCBzaWduYW1lKToKKyAgICAgICAgY29kZSA9ICdpbXBvcnQgb3MsIHNpZ25hbDsgb3Mua2lsbCglcywgc2lnbmFsLiVzKScgJSAocGlkLCBzaWduYW1lKQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLUknLCAnLWMnLCBjb2RlXQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3BlbihhcmdzKQorCisgICAgZGVmIHRlc3RfaW50ZXJwcm9jZXNzX3NpZ25hbChzZWxmKToKKyAgICAgICAgIyBJbnN0YWxsIGhhbmRsZXJzLiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gYSBzdWItcHJvY2Vzcywgc28gd2UKKyAgICAgICAgIyBkb24ndCB3b3JyeSBhYm91dCByZS1zZXR0aW5nIHRoZSBkZWZhdWx0IGhhbmRsZXJzLgorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYuc2lnaHVwX2hhbmRsZXIpCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNlbGYuc2lndXNyMV9oYW5kbGVyKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IyLCBzaWduYWwuU0lHX0lHTikKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgc2lnbmFsLmRlZmF1bHRfaW50X2hhbmRsZXIpCisKKyAgICAgICAgIyBMZXQgdGhlIHN1Yi1wcm9jZXNzZXMga25vdyB3aG8gdG8gc2VuZCBzaWduYWxzIHRvLgorICAgICAgICBwaWQgPSBzdHIob3MuZ2V0cGlkKCkpCisKKyAgICAgICAgd2l0aCBzZWxmLnN1YnByb2Nlc3Nfc2VuZF9zaWduYWwocGlkLCAiU0lHSFVQIikgYXMgY2hpbGQ6CisgICAgICAgICAgICBzZWxmLndhaXRfc2lnbmFsKGNoaWxkLCAnU0lHSFVQJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdvdF9zaWduYWxzLCB7J1NJR0hVUCc6IDEsICdTSUdVU1IxJzogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NJR0FMUk0nOiAwfSkKKworICAgICAgICB3aXRoIHNlbGYuc3VicHJvY2Vzc19zZW5kX3NpZ25hbChwaWQsICJTSUdVU1IxIikgYXMgY2hpbGQ6CisgICAgICAgICAgICBzZWxmLndhaXRfc2lnbmFsKGNoaWxkLCAnU0lHVVNSMScsIFNJR1VTUjFFeGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nb3Rfc2lnbmFscywgeydTSUdIVVAnOiAxLCAnU0lHVVNSMSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTSUdBTFJNJzogMH0pCisKKyAgICAgICAgd2l0aCBzZWxmLnN1YnByb2Nlc3Nfc2VuZF9zaWduYWwocGlkLCAiU0lHVVNSMiIpIGFzIGNoaWxkOgorICAgICAgICAgICAgIyBOb3RoaW5nIHNob3VsZCBoYXBwZW46IFNJR1VTUjIgaXMgaWdub3JlZAorICAgICAgICAgICAgY2hpbGQud2FpdCgpCisKKyAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgIHNlbGYud2FpdF9zaWduYWwoTm9uZSwgJ1NJR0FMUk0nLCBLZXlib2FyZEludGVycnVwdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdvdF9zaWduYWxzLCB7J1NJR0hVUCc6IDEsICdTSUdVU1IxJzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NJR0FMUk0nOiAwfSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc29ydHBlcmYucHkgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQppbmRleCA5MDcyMmY3Li4xNzFlNWNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zb3J0cGVyZi5weQorKysgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQpAQCAtNjQsNyArNjQsNyBAQAogICAgIGZsdXNoKCkKIAogZGVmIHRhYnVsYXRlKHIpOgotICAgICIiIlRhYnVsYXRlIHNvcnQgc3BlZWQgZm9yIGxpc3RzIG9mIHZhcmlvdXMgc2l6ZXMuCisgICAgciIiIlRhYnVsYXRlIHNvcnQgc3BlZWQgZm9yIGxpc3RzIG9mIHZhcmlvdXMgc2l6ZXMuCiAKICAgICBUaGUgc2l6ZXMgYXJlIDIqKmkgZm9yIGkgaW4gciAodGhlIGFyZ3VtZW50LCBhIGxpc3QpLgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5IGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQppbmRleCAwMDdmM2JjLi44YjY2Zjk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKQEAgLTI2LDYgKzI2LDcgQEAKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKK2ltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdXJsbGliLmVycm9yCiBpbXBvcnQgd2FybmluZ3MKQEAgLTg5LDggKzkwLDkgQEAKICAgICAiYmlnbWVtdGVzdCIsICJiaWdhZGRyc3BhY2V0ZXN0IiwgImNweXRob25fb25seSIsICJnZXRfYXR0cmlidXRlIiwKICAgICAicmVxdWlyZXNfSUVFRV83NTQiLCAic2tpcF91bmxlc3NfeGF0dHIiLCAicmVxdWlyZXNfemxpYiIsCiAgICAgImFudGljaXBhdGVfZmFpbHVyZSIsICJsb2FkX3BhY2thZ2VfdGVzdHMiLCAiZGV0ZWN0X2FwaV9taXNtYXRjaCIsCisgICAgImNoZWNrX19hbGxfXyIsCiAgICAgIyBzeXMKLSAgICAiaXNfanl0aG9uIiwgImNoZWNrX2ltcGxfZGV0YWlsIiwKKyAgICAiaXNfanl0aG9uIiwgImlzX2FuZHJvaWQiLCAiY2hlY2tfaW1wbF9kZXRhaWwiLCAidW5peF9zaGVsbCIsCiAgICAgIyBuZXR3b3JrCiAgICAgIkhPU1QiLCAiSVBWNl9FTkFCTEVEIiwgImZpbmRfdW51c2VkX3BvcnQiLCAiYmluZF9wb3J0IiwgIm9wZW5fdXJscmVzb3VyY2UiLAogICAgICMgcHJvY2Vzc2VzCkBAIC0xMDMsNyArMTA1LDcgQEAKICAgICAiY2hlY2tfd2FybmluZ3MiLCAiY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZyIsICJFbnZpcm9ubWVudFZhckd1YXJkIiwKICAgICAicnVuX3dpdGhfbG9jYWxlIiwgInN3YXBfaXRlbSIsCiAgICAgInN3YXBfYXR0ciIsICJNYXRjaGVyIiwgInNldF9tZW1saW1pdCIsICJTdXBwcmVzc0NyYXNoUmVwb3J0IiwgInNvcnRkaWN0IiwKLSAgICAicnVuX3dpdGhfdHoiLAorICAgICJydW5fd2l0aF90eiIsICJQR08iLAogICAgIF0KIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKQEAgLTczMyw2ICs3MzUsMTMgQEAKIAogaXNfanl0aG9uID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKQogCitpc19hbmRyb2lkID0gYm9vbChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0FORFJPSURfQVBJX0xFVkVMJykpCisKK2lmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgIHVuaXhfc2hlbGwgPSAnL3N5c3RlbS9iaW4vc2gnIGlmIGlzX2FuZHJvaWQgZWxzZSAnL2Jpbi9zaCcKK2Vsc2U6CisgICAgdW5peF9zaGVsbCA9IE5vbmUKKwogIyBGaWxlbmFtZSB1c2VkIGZvciB0ZXN0aW5nCiBpZiBvcy5uYW1lID09ICdqYXZhJzoKICAgICAjIEp5dGhvbiBkaXNhbGxvd3MgQCBpbiBtb2R1bGUgbmFtZXMKQEAgLTgwMiw3ICs4MTEsNyBAQAogIyBlbmNvZGVkIGJ5IHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIChpbiBzdHJpY3QgbW9kZSkuIEl0IGNhbiBiZSBOb25lIGlmIHdlCiAjIGNhbm5vdCBnZW5lcmF0ZSBzdWNoIGZpbGVuYW1lLgogVEVTVEZOX1VORU5DT0RBQkxFID0gTm9uZQotaWYgb3MubmFtZSBpbiAoJ250JywgJ2NlJyk6CitpZiBvcy5uYW1lID09ICdudCc6CiAgICAgIyBza2lwIHdpbjMycyAoMCkgb3IgV2luZG93cyA5eC9NRSAoMSkKICAgICBpZiBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKS5wbGF0Zm9ybSA+PSAyOgogICAgICAgICAjIERpZmZlcmVudCBraW5kcyBvZiBjaGFyYWN0ZXJzIGZyb20gdmFyaW91cyBsYW5ndWFnZXMgdG8gbWluaW1pemUgdGhlCkBAIC04NjksNiArODc4LDEwIEBACiAjIFNhdmUgdGhlIGluaXRpYWwgY3dkCiBTQVZFRENXRCA9IG9zLmdldGN3ZCgpCiAKKyMgU2V0IGJ5IGxpYnJlZ3J0ZXN0L21haW4ucHkgc28gd2UgY2FuIHNraXAgdGVzdHMgdGhhdCBhcmUgbm90CisjIHVzZWZ1bCBmb3IgUEdPCitQR08gPSBGYWxzZQorCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHRlbXBfZGlyKHBhdGg9Tm9uZSwgcXVpZXQ9RmFsc2UpOgogICAgICIiIlJldHVybiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IGNyZWF0ZXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgpAQCAtOTAxLDcgKzkxNCw3IEBACiAgICAgICAgIHlpZWxkIHBhdGgKICAgICBmaW5hbGx5OgogICAgICAgICBpZiBkaXJfY3JlYXRlZDoKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCkKKyAgICAgICAgICAgIHJtdHJlZShwYXRoKQogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIGNoYW5nZV9jd2QocGF0aCwgcXVpZXQ9RmFsc2UpOgpAQCAtMjA3OCw2ICsyMDkxLDExIEBACiAgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCiAgICAgcmV0dXJuIHN1YnByb2Nlc3MuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAKK2RlZiBvcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKKyAgICBvcHRpbWl6YXRpb24gc2V0dGluZ3MgaW4gc3lzLmZsYWdzLiIiIgorICAgIHJldHVybiBzdWJwcm9jZXNzLl9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQorCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFN1cHBvcnQgZm9yIGFzc2VydGlvbnMgYWJvdXQgbG9nZ2luZy4KICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTIxODQsNyArMjIwMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKICAgICAgICAgICAgICAgICAgICAgIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCiAgICAgICAgICAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCi0gICAgICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQorICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2gociIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCiAgICAgICAgICAgICAgICAgICAgIGNhbiA9IG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgY2FuID0gRmFsc2UKQEAgLTIyMjksNiArMjI0Nyw2NSBAQAogICAgIHJldHVybiBtaXNzaW5nX2l0ZW1zCiAKIAorZGVmIGNoZWNrX19hbGxfXyh0ZXN0X2Nhc2UsIG1vZHVsZSwgbmFtZV9vZl9tb2R1bGU9Tm9uZSwgZXh0cmE9KCksCisgICAgICAgICAgICAgICAgIGJsYWNrbGlzdD0oKSk6CisgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIF9fYWxsX18gdmFyaWFibGUgb2YgJ21vZHVsZScgY29udGFpbnMgYWxsIHB1YmxpYyBuYW1lcy4KKworICAgIFRoZSBtb2R1bGUncyBwdWJsaWMgbmFtZXMgKGl0cyBBUEkpIGFyZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uCisgICAgd2hldGhlciB0aGV5IG1hdGNoIHRoZSBwdWJsaWMgbmFtZSBjb252ZW50aW9uIGFuZCB3ZXJlIGRlZmluZWQgaW4KKyAgICAnbW9kdWxlJy4KKworICAgIFRoZSAnbmFtZV9vZl9tb2R1bGUnIGFyZ3VtZW50IGNhbiBzcGVjaWZ5IChhcyBhIHN0cmluZyBvciB0dXBsZSB0aGVyZW9mKQorICAgIHdoYXQgbW9kdWxlKHMpIGFuIEFQSSBjb3VsZCBiZSBkZWZpbmVkIGluIGluIG9yZGVyIHRvIGJlIGRldGVjdGVkIGFzIGEKKyAgICBwdWJsaWMgQVBJLiBPbmUgY2FzZSBmb3IgdGhpcyBpcyB3aGVuICdtb2R1bGUnIGltcG9ydHMgcGFydCBvZiBpdHMgcHVibGljCisgICAgQVBJIGZyb20gb3RoZXIgbW9kdWxlcywgcG9zc2libHkgYSBDIGJhY2tlbmQgKGxpa2UgJ2NzdicgYW5kIGl0cyAnX2NzdicpLgorCisgICAgVGhlICdleHRyYScgYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgd291bGRuJ3Qgb3RoZXJ3aXNlIGJlCisgICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBhcyAicHVibGljIiwgbGlrZSBvYmplY3RzIHdpdGhvdXQgYSBwcm9wZXIKKyAgICAnX19tb2R1bGVfXycgYXR0cml1YnV0ZS4gSWYgcHJvdmlkZWQsIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlCisgICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBvbmVzLgorCisgICAgVGhlICdibGFja2xpc3QnIGFyZ3VtZW50IGNhbiBiZSBhIHNldCBvZiBuYW1lcyB0aGF0IG11c3Qgbm90IGJlIHRyZWF0ZWQKKyAgICBhcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGV2ZW4gdGhvdWdoIHRoZWlyIG5hbWVzIGluZGljYXRlIG90aGVyd2lzZS4KKworICAgIFVzYWdlOgorICAgICAgICBpbXBvcnQgYmFyCisgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisgICAgICAgIGNsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZm9vKQorCisgICAgICAgIGNsYXNzIE90aGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGV4dHJhID0geydCQVJfQ09OU1QnLCAnRk9PX0NPTlNUJ30KKyAgICAgICAgICAgICAgICBibGFja2xpc3QgPSB7J2Jheid9ICAjIFVuZG9jdW1lbnRlZCBuYW1lLgorICAgICAgICAgICAgICAgICMgYmFyIGltcG9ydHMgcGFydCBvZiBpdHMgQVBJIGZyb20gX2Jhci4KKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBiYXIsICgnYmFyJywgJ19iYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICIiIgorCisgICAgaWYgbmFtZV9vZl9tb2R1bGUgaXMgTm9uZToKKyAgICAgICAgbmFtZV9vZl9tb2R1bGUgPSAobW9kdWxlLl9fbmFtZV9fLCApCisgICAgZWxpZiBpc2luc3RhbmNlKG5hbWVfb2ZfbW9kdWxlLCBzdHIpOgorICAgICAgICBuYW1lX29mX21vZHVsZSA9IChuYW1lX29mX21vZHVsZSwgKQorCisgICAgZXhwZWN0ZWQgPSBzZXQoZXh0cmEpCisKKyAgICBmb3IgbmFtZSBpbiBkaXIobW9kdWxlKToKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJykgb3IgbmFtZSBpbiBibGFja2xpc3Q6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBvYmogPSBnZXRhdHRyKG1vZHVsZSwgbmFtZSkKKyAgICAgICAgaWYgKGdldGF0dHIob2JqLCAnX19tb2R1bGVfXycsIE5vbmUpIGluIG5hbWVfb2ZfbW9kdWxlIG9yCisgICAgICAgICAgICAgICAgKG5vdCBoYXNhdHRyKG9iaiwgJ19fbW9kdWxlX18nKSBhbmQKKyAgICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Nb2R1bGVUeXBlKSkpOgorICAgICAgICAgICAgZXhwZWN0ZWQuYWRkKG5hbWUpCisgICAgdGVzdF9jYXNlLmFzc2VydENvdW50RXF1YWwobW9kdWxlLl9fYWxsX18sIGV4cGVjdGVkKQorCisKIGNsYXNzIFN1cHByZXNzQ3Jhc2hSZXBvcnQ6CiAgICAgIiIiVHJ5IHRvIHByZXZlbnQgYSBjcmFzaCByZXBvcnQgZnJvbSBwb3BwaW5nIHVwLgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkgYi9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkKaW5kZXggZTk0ZDk4NC4uYWU5MTE0ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weQpAQCAtMzgsNiArMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RuYW1lLCBlLl9fY2xhc3NfXy5fX25hbWVfXywgZSkpCiAgICAgICAgICAgICBpZiAiX19idWlsdGluc19fIiBpbiBuYW1lczoKICAgICAgICAgICAgICAgICBkZWwgbmFtZXNbIl9fYnVpbHRpbnNfXyJdCisgICAgICAgICAgICBpZiAnX19hbm5vdGF0aW9uc19fJyBpbiBuYW1lczoKKyAgICAgICAgICAgICAgICBkZWwgbmFtZXNbJ19fYW5ub3RhdGlvbnNfXyddCiAgICAgICAgICAgICBrZXlzID0gc2V0KG5hbWVzKQogICAgICAgICAgICAgYWxsX2xpc3QgPSBzeXMubW9kdWxlc1ttb2RuYW1lXS5fX2FsbF9fCiAgICAgICAgICAgICBhbGxfc2V0ID0gc2V0KGFsbF9saXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CmluZGV4IDU4ZjJmMDQuLmFiNGUyNDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKQEAgLTQsNyArNCw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgbmxfbGFuZ2luZm8gPSBOb25lCiAKLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQppbmRleCBhYzYzMjVhLi5iY2JhOGNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQpAQCAtNCw3ICs0LDYgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weSBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQppbmRleCBhYjUxNDM3Li4xYmQxZjg5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IGF1ZGlvdGVzdHMKIGZyb20gYXVkaW9vcCBpbXBvcnQgYnl0ZXN3YXAKLWltcG9ydCBvcwogaW1wb3J0IGlvCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQppbmRleCBmOWVlMzk4Li41MmM2MjQ3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKQEAgLTQ1MTIsNiArNDUxMiwyMSBAQAogICAgICAgICBzdHJpbmcgPSAiTmFtZXNwYWNlKGJhcj0nc3BhbScsIGZvbz00MikiCiAgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKIAorICAgIGRlZiB0ZXN0X25hbWVzcGFjZV9zdGFya3dhcmdzX25vdGlkZW50aWZpZXIoc2VsZik6CisgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKCoqeyciJzogJ3F1b3RlJ30pCisgICAgICAgIHN0cmluZyA9ICIiIk5hbWVzcGFjZSgqKnsnIic6ICdxdW90ZSd9KSIiIgorICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKG5zLCBzdHJpbmcpCisKKyAgICBkZWYgdGVzdF9uYW1lc3BhY2Vfa3dhcmdzX2FuZF9zdGFya3dhcmdzX25vdGlkZW50aWZpZXIoc2VsZik6CisgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKGE9MSwgKip7JyInOiAncXVvdGUnfSkKKyAgICAgICAgc3RyaW5nID0gIiIiTmFtZXNwYWNlKGE9MSwgKip7JyInOiAncXVvdGUnfSkiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChucywgc3RyaW5nKQorCisgICAgZGVmIHRlc3RfbmFtZXNwYWNlX3N0YXJrd2FyZ3NfaWRlbnRpZmllcihzZWxmKToKKyAgICAgICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UoKip7J3ZhbGlkJzogVHJ1ZX0pCisgICAgICAgIHN0cmluZyA9ICJOYW1lc3BhY2UodmFsaWQ9VHJ1ZSkiCisgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKKwogICAgIGRlZiB0ZXN0X3BhcnNlcihzZWxmKToKICAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycpCiAgICAgICAgIHN0cmluZyA9ICgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CmluZGV4IDJhMjFlNzQuLjFmODk2N2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQpAQCAtNyw4ICs3LDYgQEAKIGltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgb3BlcmF0b3IKLWltcG9ydCBpbwotaW1wb3J0IG1hdGgKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwpAQCAtMzI4LDggKzMyNiwxOSBAQAogICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcygoaXRvcmlnLCBvcmlnKSwgcHJvdG8pCiAgICAgICAgICAgICBpdCwgYSA9IHBpY2tsZS5sb2FkcyhkKQogICAgICAgICAgICAgYS5mcm9tbGlzdChkYXRhMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdCksIHR5cGUoaXRvcmlnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGEyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgW10pCisKKyAgICBkZWYgdGVzdF9leGhhdXN0ZWRfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbGlzdChzZWxmLmV4YW1wbGUpKQorICAgICAgICBleGhpdCA9IGl0ZXIoYSkKKyAgICAgICAgZW1waXQgPSBpdGVyKGEpCisgICAgICAgIGZvciB4IGluIGV4aGl0OiAgIyBleGhhdXN0IHRoZSBpdGVyYXRvcgorICAgICAgICAgICAgbmV4dChlbXBpdCkgICMgbm90IGV4aGF1c3RlZAorICAgICAgICBhLmFwcGVuZChzZWxmLm91dHNpZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChleGhpdCksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZW1waXQpLCBbc2VsZi5vdXRzaWRlXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsaXN0KHNlbGYuZXhhbXBsZSkgKyBbc2VsZi5vdXRzaWRlXSkKIAogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKQEAgLTEwODAsNiArMTA4OSwxMiBAQAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0InLCBiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcsIGEpCiAKKyAgICBkZWYgdGVzdF9mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBpdGVyLCBhcnJheS5hcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi50eXBlY29kZSwpKQorICAgICAgICBzdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIHJldmVyc2VkLCBhcnJheS5hcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi50eXBlY29kZSwpKQorCiBjbGFzcyBTdHJpbmdUZXN0KEJhc2VUZXN0KToKIAogICAgIGRlZiB0ZXN0X3NldGl0ZW0oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzdC5weSBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CmluZGV4IGQzZTZkMzUuLjhjNjI0MDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CkBAIC0xLDcgKzEsOCBAQAoraW1wb3J0IGFzdAoraW1wb3J0IGRpcwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBhc3QKIGltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTE1LDYgKzExNiw4IEBACiAgICAgIyBQRVAgNDQ4OiBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKICAgICAieyoqezE6Mn0sIDI6M30iLAogICAgICJ7KnsxLCAyfSwgM30iLAorICAgICMgQXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb25zCisgICAgImFzeW5jIGRlZiBmKCk6XG4gW2kgYXN5bmMgZm9yIGIgaW4gY10iLAogXQogCiAjIFRoZXNlIGFyZSBjb21waWxlZCB0aHJvdWdoICJzaW5nbGUiCkBAIC0yMzgsNyArMjQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYXN0X3RyZWUgPSBjb21waWxlKGksICI/Iiwga2luZCwgYXN0LlB5Q0ZfT05MWV9BU1QpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9fdHVwbGUoYXN0X3RyZWUpLCBvKQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRUcnVlb3JkZXIoYXN0X3RyZWUsICgwLCAwKSkKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChhY3Rpb249ImNvbXBpbGluZyIsIGlucHV0PWkpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGFjdGlvbj0iY29tcGlsaW5nIiwgaW5wdXQ9aSwga2luZD1raW5kKToKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZShhc3RfdHJlZSwgIj8iLCBraW5kKQogCiAgICAgZGVmIHRlc3Rfc2xpY2Uoc2VsZik6CkBAIC01NDcsNiArNTUwLDE3IEBACiAgICAgICAgICAgICBjb21waWxlKG1vZCwgJ3Rlc3QnLCAnZXhlYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImludmFsaWQgaW50ZWdlciB2YWx1ZTogTm9uZSIsIHN0cihjbS5leGNlcHRpb24pKQogCisgICAgZGVmIHRlc3RfbGV2ZWxfYXNfbm9uZShzZWxmKToKKyAgICAgICAgYm9keSA9IFthc3QuSW1wb3J0RnJvbShtb2R1bGU9J3RpbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzPVthc3QuYWxpYXMobmFtZT0nc2xlZXAnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm89MCwgY29sX29mZnNldD0wKV0KKyAgICAgICAgbW9kID0gYXN0Lk1vZHVsZShib2R5KQorICAgICAgICBjb2RlID0gY29tcGlsZShtb2QsICd0ZXN0JywgJ2V4ZWMnKQorICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoY29kZSwgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NsZWVwJywgbnMpCisKIAogY2xhc3MgQVNUVmFsaWRhdG9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC03NDIsNyArNzU2LDcgQEAKIAogICAgIGRlZiB0ZXN0X2ltcG9ydGZyb20oc2VsZik6CiAgICAgICAgIGltcCA9IGFzdC5JbXBvcnRGcm9tKE5vbmUsIFthc3QuYWxpYXMoIngiLCBOb25lKV0sIC00MikKLSAgICAgICAgc2VsZi5zdG10KGltcCwgImxldmVsIGxlc3MgdGhhbiAtMSIpCisgICAgICAgIHNlbGYuc3RtdChpbXAsICJOZWdhdGl2ZSBJbXBvcnRGcm9tIGxldmVsIikKICAgICAgICAgc2VsZi5zdG10KGFzdC5JbXBvcnRGcm9tKE5vbmUsIFtdLCAwKSwgImVtcHR5IG5hbWVzIG9uIEltcG9ydEZyb20iKQogCiAgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgpAQCAtNzk3LDIxICs4MTEsMjEgQEAKICAgICBkZWYgX2NoZWNrX2NvbXByZWhlbnNpb24oc2VsZiwgZmFjKToKICAgICAgICAgc2VsZi5leHByKGZhYyhbXSksICJjb21wcmVoZW5zaW9uIHdpdGggbm8gZ2VuZXJhdG9ycyIpCiAgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW10sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQogICAgICAgICB4ID0gYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkKICAgICAgICAgeSA9IGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkKLSAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFtOb25lXSkKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFtOb25lXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAiTm9uZSBkaXNhbGxvd2VkIikKLSAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKIAogICAgIGRlZiBfc2ltcGxlX2NvbXAoc2VsZiwgZmFjKToKICAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW2ddKSwKICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKICAgICAgICAgZGVmIHdyYXAoZ2Vucyk6CkBAIC04MjksNyArODQzLDcgQEAKIAogICAgIGRlZiB0ZXN0X2RpY3Rjb21wKHNlbGYpOgogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgicCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSksIFtdLCAwKQogICAgICAgICBjID0gYXN0LkRpY3RDb21wKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSksIFtnXSkKICAgICAgICAgc2VsZi5leHByKGMsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKQEAgLTkzMyw2ICs5NDcsMTI1IEBACiAgICAgICAgICAgICBjb21waWxlKG1vZCwgZm4sICJleGVjIikKIAogCitjbGFzcyBDb25zdGFudFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBvbiB0aGUgYXN0LkNvbnN0YW50IG5vZGUgdHlwZS4iIiIKKworICAgIGRlZiBjb21waWxlX2NvbnN0YW50KHNlbGYsIHZhbHVlKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgieCA9IDEyMyIpCisKKyAgICAgICAgbm9kZSA9IHRyZWUuYm9keVswXS52YWx1ZQorICAgICAgICBuZXdfbm9kZSA9IGFzdC5Db25zdGFudCh2YWx1ZT12YWx1ZSkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X25vZGUsIG5vZGUpCisgICAgICAgIHRyZWUuYm9keVswXS52YWx1ZSA9IG5ld19ub2RlCisKKyAgICAgICAgY29kZSA9IGNvbXBpbGUodHJlZSwgIjxzdHJpbmc+IiwgImV4ZWMiKQorCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgcmV0dXJuIG5zWyd4J10KKworICAgIGRlZiB0ZXN0X3ZhbGlkYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuY29tcGlsZV9jb25zdGFudChbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhbiBpbnZhbGlkIHR5cGUgaW4gQ29uc3RhbnQ6IGxpc3QiKQorCisgICAgZGVmIHRlc3Rfc2luZ2xldG9ucyhzZWxmKToKKyAgICAgICAgZm9yIGNvbnN0IGluIChOb25lLCBGYWxzZSwgVHJ1ZSwgRWxsaXBzaXMsIGInJywgZnJvemVuc2V0KCkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29uc3Q9Y29uc3QpOgorICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5jb21waWxlX2NvbnN0YW50KGNvbnN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModmFsdWUsIGNvbnN0KQorCisgICAgZGVmIHRlc3RfdmFsdWVzKHNlbGYpOgorICAgICAgICBuZXN0ZWRfdHVwbGUgPSAoMSwpCisgICAgICAgIG5lc3RlZF9mcm96ZW5zZXQgPSBmcm96ZW5zZXQoezF9KQorICAgICAgICBmb3IgbGV2ZWwgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICBuZXN0ZWRfdHVwbGUgPSAobmVzdGVkX3R1cGxlLCAyKQorICAgICAgICAgICAgbmVzdGVkX2Zyb3plbnNldCA9IGZyb3plbnNldCh7bmVzdGVkX2Zyb3plbnNldCwgMn0pCisgICAgICAgIHZhbHVlcyA9ICgxMjMsIDEyMy4wLCAxMjNqLAorICAgICAgICAgICAgICAgICAgInVuaWNvZGUiLCBiJ2J5dGVzJywKKyAgICAgICAgICAgICAgICAgIHR1cGxlKCJ0dXBsZSIpLCBmcm96ZW5zZXQoImZyb3plbnNldCIpLAorICAgICAgICAgICAgICAgICAgbmVzdGVkX3R1cGxlLCBuZXN0ZWRfZnJvemVuc2V0KQorICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodmFsdWU9dmFsdWUpOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuY29tcGlsZV9jb25zdGFudCh2YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgdmFsdWUpCisKKyAgICBkZWYgdGVzdF9hc3NpZ25fdG9fY29uc3RhbnQoc2VsZik6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoInggPSAxIikKKworICAgICAgICB0YXJnZXQgPSB0cmVlLmJvZHlbMF0udGFyZ2V0c1swXQorICAgICAgICBuZXdfdGFyZ2V0ID0gYXN0LkNvbnN0YW50KHZhbHVlPTEpCisgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld190YXJnZXQsIHRhcmdldCkKKyAgICAgICAgdHJlZS5ib2R5WzBdLnRhcmdldHNbMF0gPSBuZXdfdGFyZ2V0CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbXBpbGUodHJlZSwgInN0cmluZyIsICJleGVjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiB3aGljaCBjYW4ndCBiZSBhc3NpZ25lZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInRvIGluIFN0b3JlIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvY3N0cmluZyhzZWxmKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgiJ2RvY3N0cmluZydcbnggPSAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZ2V0X2RvY3N0cmluZyh0cmVlKSwgJ2RvY3N0cmluZycpCisKKyAgICAgICAgdHJlZS5ib2R5WzBdLnZhbHVlID0gYXN0LkNvbnN0YW50KHZhbHVlPSdjb25zdGFudCBkb2NzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5nZXRfZG9jc3RyaW5nKHRyZWUpLCAnY29uc3RhbnQgZG9jc3RyaW5nJykKKworICAgIGRlZiBnZXRfbG9hZF9jb25zdChzZWxmLCB0cmVlKToKKyAgICAgICAgIyBDb21waWxlIHRvIGJ5dGVjb2RlLCBkaXNhc3NlbWJsZSBhbmQgZ2V0IHBhcmFtZXRlciBvZiBMT0FEX0NPTlNUCisgICAgICAgICMgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGNvID0gY29tcGlsZSh0cmVlLCAnPHN0cmluZz4nLCAnZXhlYycpCisgICAgICAgIGNvbnN0cyA9IFtdCisgICAgICAgIGZvciBpbnN0ciBpbiBkaXMuZ2V0X2luc3RydWN0aW9ucyhjbyk6CisgICAgICAgICAgICBpZiBpbnN0ci5vcG5hbWUgPT0gJ0xPQURfQ09OU1QnOgorICAgICAgICAgICAgICAgIGNvbnN0cy5hcHBlbmQoaW5zdHIuYXJndmFsKQorICAgICAgICByZXR1cm4gY29uc3RzCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9sb2FkX2NvbnN0KHNlbGYpOgorICAgICAgICBjb25zdHMgPSBbTm9uZSwKKyAgICAgICAgICAgICAgICAgIFRydWUsIEZhbHNlLAorICAgICAgICAgICAgICAgICAgMTI0LAorICAgICAgICAgICAgICAgICAgMi4wLAorICAgICAgICAgICAgICAgICAgM2osCisgICAgICAgICAgICAgICAgICAidW5pY29kZSIsCisgICAgICAgICAgICAgICAgICBiJ2J5dGVzJywKKyAgICAgICAgICAgICAgICAgICgxLCAyLCAzKV0KKworICAgICAgICBjb2RlID0gJ1xuJy5qb2luKFsneD17IXJ9Jy5mb3JtYXQoY29uc3QpIGZvciBjb25zdCBpbiBjb25zdHNdKQorICAgICAgICBjb2RlICs9ICdcbnggPSAuLi4nCisgICAgICAgIGNvbnN0cy5leHRlbmQoKEVsbGlwc2lzLCBOb25lKSkKKworICAgICAgICB0cmVlID0gYXN0LnBhcnNlKGNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfbG9hZF9jb25zdCh0cmVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMpCisKKyAgICAgICAgIyBSZXBsYWNlIGV4cHJlc3Npb24gbm9kZXMgd2l0aCBjb25zdGFudHMKKyAgICAgICAgZm9yIGFzc2lnbiwgY29uc3QgaW4gemlwKHRyZWUuYm9keSwgY29uc3RzKToKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGFzc2lnbiwgYXN0LkFzc2lnbiksIGFzdC5kdW1wKGFzc2lnbikKKyAgICAgICAgICAgIG5ld19ub2RlID0gYXN0LkNvbnN0YW50KHZhbHVlPWNvbnN0KQorICAgICAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X25vZGUsIGFzc2lnbi52YWx1ZSkKKyAgICAgICAgICAgIGFzc2lnbi52YWx1ZSA9IG5ld19ub2RlCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9sb2FkX2NvbnN0KHRyZWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cykKKworICAgIGRlZiB0ZXN0X2xpdGVyYWxfZXZhbChzZWxmKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgiMSArIDIiKQorICAgICAgICBiaW5vcCA9IHRyZWUuYm9keVswXS52YWx1ZQorCisgICAgICAgIG5ld19sZWZ0ID0gYXN0LkNvbnN0YW50KHZhbHVlPTEwKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfbGVmdCwgYmlub3AubGVmdCkKKyAgICAgICAgYmlub3AubGVmdCA9IG5ld19sZWZ0CisKKyAgICAgICAgbmV3X3JpZ2h0ID0gYXN0LkNvbnN0YW50KHZhbHVlPTIwKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfcmlnaHQsIGJpbm9wLnJpZ2h0KQorICAgICAgICBiaW5vcC5yaWdodCA9IG5ld19yaWdodAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbChiaW5vcCksIDMwKQorCisKIGRlZiBtYWluKCk6CiAgICAgaWYgX19uYW1lX18gIT0gJ19fbWFpbl9fJzoKICAgICAgICAgcmV0dXJuCkBAIC05NDAsOCArMTA3Myw5IEBACiAgICAgICAgIGZvciBzdGF0ZW1lbnRzLCBraW5kIGluICgoZXhlY190ZXN0cywgImV4ZWMiKSwgKHNpbmdsZV90ZXN0cywgInNpbmdsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWxfdGVzdHMsICJldmFsIikpOgogICAgICAgICAgICAgcHJpbnQoa2luZCsiX3Jlc3VsdHMgPSBbIikKLSAgICAgICAgICAgIGZvciBzIGluIHN0YXRlbWVudHM6Ci0gICAgICAgICAgICAgICAgcHJpbnQocmVwcih0b190dXBsZShjb21waWxlKHMsICI/Iiwga2luZCwgMHg0MDApKSkrIiwiKQorICAgICAgICAgICAgZm9yIHN0YXRlbWVudCBpbiBzdGF0ZW1lbnRzOgorICAgICAgICAgICAgICAgIHRyZWUgPSBhc3QucGFyc2Uoc3RhdGVtZW50LCAiPyIsIGtpbmQpCisgICAgICAgICAgICAgICAgcHJpbnQoIiVyLCIgJSAodG9fdHVwbGUodHJlZSksKSkKICAgICAgICAgICAgIHByaW50KCJdIikKICAgICAgICAgcHJpbnQoIm1haW4oKSIpCiAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKQEAgLTk3OSwxOSArMTExMywyMCBAQAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ0JyZWFrJywgKDEsIDExKSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdDb250aW51ZScsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdUdXBsZScsICgxLCA0KSwgWygnTmFtZScsICgxLCA0KSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDYpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMSksICdjJywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCAxNCkpXSwgW10pXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTGlzdENvbXAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDEyKSwgWygnTmFtZScsICgxLCAxMiksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDIwKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMiwgNCksICgnVHVwbGUnLCAoMywgNCksIFsoJ05hbWUnLCAoMywgNCksICdBYScsICgnTG9hZCcsKSksICgnTmFtZScsICg1LCA3KSwgJ0JiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDgsIDQpLCBbKCdOYW1lJywgKDgsIDQpLCAnQWEnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCA0KSwgJ0JiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCAxMCksICdDYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMTEpLCAndycsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTYpLCAneCcsICgnTG9hZCcsKSksIFtdKSwgKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDIyKSwgJ20nLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDI3KSwgJ3AnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDMyKSwgJ2cnLCAoJ0xvYWQnLCkpXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAndycsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICd4JywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDcpLCBbKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICdtJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTIpLCBbKCdOYW1lJywgKDEsIDEyKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjApLCAnYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgyLCA0KSwgKCdUdXBsZScsICgzLCA0KSwgWygnTmFtZScsICgzLCA0KSwgJ0FhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDUsIDcpLCAnQmInLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoOCwgNCksIFsoJ05hbWUnLCAoOCwgNCksICdBYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDQpLCAnQmInLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDEwKSwgJ0NjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAxMSksICd3JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNiksICd4JywgKCdMb2FkJywpKSwgW10sIDApLCAoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMjIpLCAnbScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjcpLCAncCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMzIpLCAnZycsICgnTG9hZCcsKSldLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICd3JywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ3gnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2cnLCAoJ0xvYWQnLCkpXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgNyksIFsoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ20nLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAneCcsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdFeHByJywgKDIsIDEpLCAoJ0F3YWl0JywgKDIsIDEpLCAoJ0NhbGwnLCAoMiwgNyksICgnTmFtZScsICgyLCA3KSwgJ3NvbWV0aGluZycsICgnTG9hZCcsKSksIFtdLCBbXSkpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdBc3luY0ZvcicsICgyLCA3KSwgKCdOYW1lJywgKDIsIDExKSwgJ2UnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDIsIDE2KSwgJ2knLCAoJ0xvYWQnLCkpLCBbKCdFeHByJywgKDIsIDE5KSwgKCdOdW0nLCAoMiwgMTkpLCAxKSldLCBbKCdFeHByJywgKDMsIDcpLCAoJ051bScsICgzLCA3KSwgMikpXSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnQXN5bmNXaXRoJywgKDIsIDcpLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgyLCAxMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDIsIDE3KSwgJ2InLCAoJ1N0b3JlJywpKSldLCBbKCdFeHByJywgKDIsIDIwKSwgKCdOdW0nLCAoMiwgMjApLCAxKSldKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3QnLCAoMSwgMCksIFtOb25lLCAoJ051bScsICgxLCAxMCksIDIpXSwgWygnRGljdCcsICgxLCAzKSwgWygnTnVtJywgKDEsIDQpLCAxKV0sIFsoJ051bScsICgxLCA2KSwgMildKSwgKCdOdW0nLCAoMSwgMTIpLCAzKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldCcsICgxLCAwKSwgWygnU3RhcnJlZCcsICgxLCAxKSwgKCdTZXQnLCAoMSwgMiksIFsoJ051bScsICgxLCAzKSwgMSksICgnTnVtJywgKDEsIDYpLCAyKV0pLCAoJ0xvYWQnLCkpLCAoJ051bScsICgxLCAxMCksIDMpXSkpXSksCisoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0V4cHInLCAoMiwgMSksICgnTGlzdENvbXAnLCAoMiwgMiksICgnTmFtZScsICgyLCAyKSwgJ2knLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDIsIDE0KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDIsIDE5KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMSldKSldLCBbXSwgTm9uZSldKSwKIF0KIHNpbmdsZV9yZXN1bHRzID0gWwogKCdJbnRlcmFjdGl2ZScsIFsoJ0V4cHInLCAoMSwgMCksICgnQmluT3AnLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSwgKCdBZGQnLCksICgnTnVtJywgKDEsIDIpLCAyKSkpXSksCkBAIC0xMDA2LDggKzExNDEsOCBAQAogKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbXSwgW10pKSwKICgnRXhwcmVzc2lvbicsICgnU2V0JywgKDEsIDApLCBbKCdOYW1lQ29uc3RhbnQnLCAoMSwgMSksIE5vbmUpXSkpLAogKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbKCdOdW0nLCAoMiwgNiksIDEpXSwgWygnTnVtJywgKDQsIDEwKSwgMildKSksCi0oJ0V4cHJlc3Npb24nLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSldKSksCi0oJ0V4cHJlc3Npb24nLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAorKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0sIDApXSkpLAorKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldLCAwKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ29tcGFyZScsICgxLCAwKSwgKCdOdW0nLCAoMSwgMCksIDEpLCBbKCdMdCcsKSwgKCdMdCcsKV0sIFsoJ051bScsICgxLCA0KSwgMiksICgnTnVtJywgKDEsIDgpLCAzKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnZicsICgnTG9hZCcsKSksIFsoJ051bScsICgxLCAyKSwgMSksICgnTnVtJywgKDEsIDQpLCAyKSwgKCdTdGFycmVkJywgKDEsIDEwKSwgKCdOYW1lJywgKDEsIDExKSwgJ2QnLCAoJ0xvYWQnLCkpLCAoJ0xvYWQnLCkpXSwgWygna2V5d29yZCcsICdjJywgKCdOdW0nLCAoMSwgOCksIDMpKSwgKCdrZXl3b3JkJywgTm9uZSwgKCdOYW1lJywgKDEsIDE1KSwgJ2UnLCAoJ0xvYWQnLCkpKV0pKSwKICgnRXhwcmVzc2lvbicsICgnTnVtJywgKDEsIDApLCAxMCkpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY2dlbi5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNnZW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFiMWI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNnZW4ucHkKQEAgLTAsMCArMSw4MjMgQEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworCisKK2NsYXNzIEF3YWl0RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK0B0eXBlcy5jb3JvdXRpbmUKK2RlZiBhd2FpdGFibGUoKiwgdGhyb3c9RmFsc2UpOgorICAgIGlmIHRocm93OgorICAgICAgICB5aWVsZCAoJ3Rocm93JywpCisgICAgZWxzZToKKyAgICAgICAgeWllbGQgKCdyZXN1bHQnLCkKKworCitkZWYgcnVuX3VudGlsX2NvbXBsZXRlKGNvcm8pOgorICAgIGV4YyA9IEZhbHNlCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZXhjOgorICAgICAgICAgICAgICAgIGV4YyA9IEZhbHNlCisgICAgICAgICAgICAgICAgZnV0ID0gY29yby50aHJvdyhBd2FpdEV4Y2VwdGlvbikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnV0ID0gY29yby5zZW5kKE5vbmUpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmV0dXJuIGV4LmFyZ3NbMF0KKworICAgICAgICBpZiBmdXQgPT0gKCd0aHJvdycsKToKKyAgICAgICAgICAgIGV4YyA9IFRydWUKKworCitkZWYgdG9fbGlzdChnZW4pOgorICAgIGFzeW5jIGRlZiBpdGVyYXRlKCk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGFzeW5jIGZvciBpIGluIGdlbjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoaSkKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgcmV0dXJuIHJ1bl91bnRpbF9jb21wbGV0ZShpdGVyYXRlKCkpCisKKworY2xhc3MgQXN5bmNHZW5TeW50YXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDEoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkIGZyb20gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3lpZWxkIGZyb20uKmluc2lkZSBhc3luYycpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzAyKHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAneWllbGQgZnJvbS4qaW5zaWRlIGFzeW5jJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDMoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3JldHVybi4qdmFsdWUuKmFzeW5jIGdlbicpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzA0KHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDUoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBpZiAwOgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworCitjbGFzcyBBc3luY0dlblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGNvbXBhcmVfZ2VuZXJhdG9ycyhzZWxmLCBzeW5jX2dlbiwgYXN5bmNfZ2VuKToKKyAgICAgICAgZGVmIHN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnLl9fbmV4dF9fKCkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoJ1NUT1AnKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHR5cGUoZXgpKSkKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICBkZWYgYXN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZy5fX2FuZXh0X18oKS5fX25leHRfXygpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgnU1RPUCcpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIGlmIGV4LmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGV4LmFyZ3NbMF0pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKCdFTVBUWSBTdG9wSXRlcmF0aW9uJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzdHIodHlwZShleCkpKQorICAgICAgICAgICAgcmV0dXJuIHJlcworCisgICAgICAgIHN5bmNfZ2VuX3Jlc3VsdCA9IHN5bmNfaXRlcmF0ZShzeW5jX2dlbikKKyAgICAgICAgYXN5bmNfZ2VuX3Jlc3VsdCA9IGFzeW5jX2l0ZXJhdGUoYXN5bmNfZ2VuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5bmNfZ2VuX3Jlc3VsdCwgYXN5bmNfZ2VuX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl9yZXN1bHQKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9pdGVyYXRpb25fMDEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICBhID0geWllbGQgMTIzCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGEsIE5vbmUpCisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNDU2CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNzg5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b19saXN0KGdlbigpKSwgWzEyMywgNDU2LCA3ODldKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2l0ZXJhdGlvbl8wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCksICgncmVzdWx0JywpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEFzeW5jSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSh0aHJvdz1UcnVlKQorICAgICAgICAgICAgeWllbGQgNDU2CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBd2FpdEV4Y2VwdGlvbik6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3luYyBnZW5lcmF0b3IuKlN0b3BBc3luY0l0ZXJhdGlvbicpOgorICAgICAgICAgICAgdG9fbGlzdChnZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXN5bmMgZ2VuZXJhdG9yLipTdG9wSXRlcmF0aW9uJyk6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNyhzZWxmKToKKyAgICAgICAgZGVmIHN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA4KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA5KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzEwKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tTm9uZSB2YWx1ZSAuKiBhc3luYyBnZW5lcmF0b3IiKToKKyAgICAgICAgICAgIGdlbigpLl9fYW5leHRfXygpLnNlbmQoMTAwKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FwaV8wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMTIzCisKKyAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLl9fbmFtZV9fLCAnZ2VuJykKKyAgICAgICAgZy5fX25hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX25hbWVfXywgJzEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbignLmdlbicsIGcuX19xdWFsbmFtZV9fKQorICAgICAgICBnLl9fcXVhbG5hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX3F1YWxuYW1lX18sICcxMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuYWdfYXdhaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShnLmFnX2ZyYW1lLCB0eXBlcy5GcmFtZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZy5hZ19ydW5uaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZy5hZ19jb2RlLCB0eXBlcy5Db2RlVHlwZSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2F3YWl0YWJsZShnLmFjbG9zZSgpKSkKKworCitjbGFzcyBBc3luY0dlbkFzeW5jaW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCisgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AoTm9uZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wID0gTm9uZQorCisgICAgYXN5bmMgZGVmIHRvX2xpc3Qoc2VsZiwgZ2VuKToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgYXN5bmMgZm9yIGkgaW4gZ2VuOgorICAgICAgICAgICAgcmVzLmFwcGVuZChpKQorICAgICAgICByZXR1cm4gcmVzCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICByZXMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMSwgMl0pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMyhzZWxmKToKKyAgICAgICAgbG9vcCA9IHNlbGYubG9vcAorCisgICAgICAgIGNsYXNzIEdlbjoKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKworICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnRvX2xpc3QoR2VuKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgWzEsIDJdKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYW5leHRfMDQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCAxMDAwCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgeWllbGQgNAorCisgICAgICAgIGFzeW5jIGRlZiBydW4xKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDQpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4yKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnRocm93KFplcm9EaXZpc2lvbkVycm9yKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMDAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgNCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuMSgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bjIoKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FuZXh0XzA1KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgdiA9IHlpZWxkIHYKKyAgICAgICAgICAgIHlpZWxkIHYgKiAxMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKE5vbmUpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKDEwKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnNlbmQoMTIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEyMDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hY2xvc2VfMDYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCAxMgorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdlbiA9IGZvbygpCisgICAgICAgICAgICBpdCA9IGdlbi5fX2FpdGVyX18oKQorICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGF3YWl0IGdlbi5hY2xvc2UoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImFzeW5jIGdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hY2xvc2VfMDcoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSArPSAxCisgICAgICAgICAgICBET05FICs9IDEwMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnZW4uYWNsb3NlKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hY2xvc2VfMDgoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBmdXQKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FICs9IDEKKyAgICAgICAgICAgIERPTkUgKz0gMTAwMAorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdlbiA9IGZvbygpCisgICAgICAgICAgICBpdCA9IGdlbi5fX2FpdGVyX18oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMSkKKyAgICAgICAgICAgIHQgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2soaXQuX19hbmV4dF9fKCkpCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgYXdhaXQgZ2VuLmFjbG9zZSgpCisgICAgICAgICAgICByZXR1cm4gdAorCisgICAgICAgIHQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICAgICAgIyBTaWxlbmNlIFJlc291cmNlV2FybmluZ3MKKyAgICAgICAgZnV0LmNhbmNlbCgpCisgICAgICAgIHQuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2djX2FjbG9zZV8wOShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgICAgIGF3YWl0IGcuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGF3YWl0IGcuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGRlbCBnCisKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICAjIFNhbml0eSBjaGVjazoKKyAgICAgICAgZGVmIHNnZW4oKToKKyAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICBzZyA9IHNnZW4oKQorICAgICAgICB2ID0gc2cuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisgICAgICAgIHYgPSBzZy5zZW5kKDEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAyMDApCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKDEwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hc2VuZChOb25lKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FzZW5kXzAyKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBzbGVlcF9uX2NyYXNoKGRlbGF5KToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwX25fY3Jhc2goMC4wMSkKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgYXdhaXQgZy5hc2VuZCgxMDApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMyhzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBmdXQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoYXN5bmNpby5zbGVlcChkZWxheSwgbG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoZGVsYXkgLyAyLCBsYW1iZGE6IGZ1dC5jYW5jZWwoKSkKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdXQKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwX25fY3Jhc2goMC4wMSkKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgYXdhaXQgZy5hc2VuZCgxMDApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2F0aHJvd18wMShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBjbGFzcyBGb29FcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgU2FuaXR5IGNoZWNrOgorICAgICAgICBkZWYgc2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgRm9vRXI6CisgICAgICAgICAgICAgICAgdiA9IDEwMDAKKyAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgIHNnID0gc2dlbigpCisgICAgICAgIHYgPSBzZy5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKyAgICAgICAgdiA9IHNnLnRocm93KEZvb0VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICBzZy5zZW5kKE5vbmUpCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGV4Y2VwdCBGb29FcjoKKyAgICAgICAgICAgICAgICAgICAgdiA9IDEwMDAKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgIyByZXR1cm4KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmF0aHJvdyhGb29FcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwMCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hdGhyb3dfMDIoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgY2xhc3MgRm9vRXIoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBmdXQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoYXN5bmNpby5zbGVlcChkZWxheSwgbG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoZGVsYXkgLyAyLCBsYW1iZGE6IGZ1dC5jYW5jZWwoKSkKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdXQKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgZXhjZXB0IEZvb0VyOgorICAgICAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgICMgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hdGhyb3coRm9vRXIpCisgICAgICAgICAgICBleGNlcHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYW5jZWxsZWRFcnJvciB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX3NodXRkb3duXzAxKHNlbGYpOgorICAgICAgICBmaW5hbGl6ZWQgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXRlcih0aW1lb3V0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGZpbmFsaXplZAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGZpbmFsaXplZCArPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXQoKToKKyAgICAgICAgICAgIGFzeW5jIGZvciBfIGluIHdhaXRlcigxKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdDEgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICB0MiA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayh3YWl0KCkpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmFsaXplZCwgMikKKworICAgICAgICAjIFNpbGVuY2Ugd2FybmluZ3MKKyAgICAgICAgdDEuY2FuY2VsKCkKKyAgICAgICAgdDIuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fc2h1dGRvd25fMDIoc2VsZik6CisgICAgICAgIGxvZ2dlZCA9IDAKKworICAgICAgICBkZWYgbG9nZ2VyKGxvb3AsIGNvbnRleHQpOgorICAgICAgICAgICAgbm9ubG9jYWwgbG9nZ2VkCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhc3luY2dlbicsIGNvbnRleHQpCisgICAgICAgICAgICBleHBlY3RlZCA9ICdhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xvc2luZyBvZiBhc3luY2hyb25vdXMnCisgICAgICAgICAgICBpZiBleHBlY3RlZCBpbiBjb250ZXh0WydtZXNzYWdlJ106CisgICAgICAgICAgICAgICAgbG9nZ2VkICs9IDEKKworICAgICAgICBhc3luYyBkZWYgd2FpdGVyKHRpbWVvdXQpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAxIC8gMAorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0KCk6CisgICAgICAgICAgICBhc3luYyBmb3IgXyBpbiB3YWl0ZXIoMSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHQgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICAgICAgc2VsZi5sb29wLnNldF9leGNlcHRpb25faGFuZGxlcihsb2dnZXIpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2VkLCAxKQorCisgICAgICAgICMgU2lsZW5jZSB3YXJuaW5ncworICAgICAgICB0LmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CmluZGV4IDNhMzNmYzguLjBlYmE3NmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QubW9jawogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTI5NywzNyArMjk2LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3luY2hhdC5maW5kX3ByZWZpeF9hdF9lbmQoInF3ZXJ0eWRramYiLCAiXHJcbiIpLCAwKQogCiAKLWNsYXNzIFRlc3RGaWZvKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgY206Ci0gICAgICAgICAgICBmID0gYXN5bmNoYXQuZmlmbygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgZi5wdXNoKDcpCi0gICAgICAgIGYucHVzaChiJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIDcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIGInYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5pc19lbXB0eSgpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgYidhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuaXNfZW1wdHkoKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMCwgTm9uZSkpCi0KLSAgICBkZWYgdGVzdF9naXZlbl9saXN0KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKLSAgICAgICAgICAgIGYgPSBhc3luY2hhdC5maWZvKFtiJ3gnLCAxNywgM10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIGIneCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCAxNykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgwLCBOb25lKSkKLQotCiBjbGFzcyBUZXN0Tm90Q29ubmVjdGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kaXNhbGxvd19uZWdhdGl2ZV90ZXJtaW5hdG9yKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTI1OQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKaW5kZXggMzg1NzkxNi4uZGJlZTU5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CkBAIC0xMSw2ICsxMSw5IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAoraWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weSBiL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CmluZGV4IDUwOTNlOWQuLjU5MzBkOWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CkBAIC04Myw2ICs4MywxMCBAQAogICAgICAgICAgICAgZGVmIF9faWFkZF9fKHNlbGYsIHZhbCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGF1Z190ZXN0MyhzZWxmLnZhbCArIHZhbCkKIAorICAgICAgICBjbGFzcyBhdWdfdGVzdDQoYXVnX3Rlc3QzKToKKyAgICAgICAgICAgICIiIkJsb2NrcyBpbmhlcml0YW5jZSwgYW5kIGZhbGxiYWNrIHRvIF9fYWRkX18iIiIKKyAgICAgICAgICAgIF9faWFkZF9fID0gTm9uZQorCiAgICAgICAgIHggPSBhdWdfdGVzdCgxKQogICAgICAgICB5ID0geAogICAgICAgICB4ICs9IDEwCkBAIC0xMDYsNiArMTEwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudmFsLCAxMykKIAorICAgICAgICB4ID0gYXVnX3Rlc3Q0KDQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHggKz0gMTAKKwogCiAgICAgZGVmIHRlc3RDdXN0b21NZXRob2RzMih0ZXN0X3NlbGYpOgogICAgICAgICBvdXRwdXQgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzNTIucHkgYi9MaWIvdGVzdC90ZXN0X2Jhc2VleGNlcHRpb24ucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzNTIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfYmFzZWV4Y2VwdGlvbi5weQppbmRleCA3Yzk4YzQ2Li4yN2Q1MTRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDM1Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jhc2VleGNlcHRpb24ucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBidWlsdGlucwotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgb3MKIGZyb20gcGxhdGZvcm0gaW1wb3J0IHN5c3RlbSBhcyBwbGF0Zm9ybV9zeXN0ZW0KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQppbmRleCA0MGFjOWJmLi42MTMzYmJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQpAQCAtMTQsNyArMTQsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzeXMKLWltcG9ydCBmdW5jdG9vbHMKIAogIyBUaGVzZSB0ZXN0cyBhbGwgdXNlIG9uZSBvZiB0aGUgYmlnbWVtdGVzdCBkZWNvcmF0b3JzIHRvIGluZGljYXRlIGhvdyBtdWNoCiAjIG1lbW9yeSB0aGV5IHVzZSBhbmQgaG93IG11Y2ggbWVtb3J5IHRoZXkgbmVlZCB0byBiZSBldmVuIG1lYW5pbmdmdWwuICBUaGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CmluZGV4IDAzNDI0NWQuLjZiM2U0MzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQpAQCAtMTU5LDExICsxNTksMjUgQEAKICAgICAgICAgIyBUaGVuIGNhbGN1bGF0ZSB0aGUgaGV4YmluNCBiaW5hcnktdG8tQVNDSUkgdHJhbnNsYXRpb24KICAgICAgICAgcmxlID0gYmluYXNjaWkucmxlY29kZV9ocXgoc2VsZi5kYXRhKQogICAgICAgICBhID0gYmluYXNjaWkuYjJhX2hxeChzZWxmLnR5cGUydGVzdChybGUpKQorCiAgICAgICAgIGIsIF8gPSBiaW5hc2NpaS5hMmJfaHF4KHNlbGYudHlwZTJ0ZXN0KGEpKQogICAgICAgICByZXMgPSBiaW5hc2NpaS5ybGVkZWNvZGVfaHF4KGIpCi0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHNlbGYucmF3ZGF0YSkKIAorICAgIGRlZiB0ZXN0X3JsZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IHJlcGV0aXRpb24gd2l0aCBhIHJlcGV0aXRpb24gbG9uZ2VyIHRoYW4gdGhlIGxpbWl0IG9mIDI1NQorICAgICAgICBkYXRhID0gKGInYScgKiAxMDAgKyBiJ2InICsgYidjJyAqIDMwMCkKKworICAgICAgICBlbmNvZGVkID0gYmluYXNjaWkucmxlY29kZV9ocXgoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIChiJ2FceDkwZCcgICAgICAjICdhJyAqIDEwMAorICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2InICAgICAgICAgICAjICdiJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2NceDkwXHhmZicgICAjICdjJyAqIDI1NQorICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2NceDkwLScpKSAgICAjICdjJyAqIDQ1CisKKyAgICAgICAgZGVjb2RlZCA9IGJpbmFzY2lpLnJsZWRlY29kZV9ocXgoZW5jb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBkYXRhKQorCiAgICAgZGVmIHRlc3RfaGV4KHNlbGYpOgogICAgICAgICAjIHRlc3QgaGV4bGlmaWNhdGlvbgogICAgICAgICBzID0gYid7c1wwMDVcMDAwXDAwMFwwMDB3b3JsZGlcMDAyXDAwMFwwMDBcMDAwc1wwMDVcMDAwXDAwMFwwMDBoZWxsb2lcMDAxXDAwMFwwMDBcMDAwMCcKQEAgLTMzMSw2ICszNDUsMTYgQEAKICAgICAgICAgICAgICMgbm9uLUFTQ0lJIHN0cmluZwogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYTJiLCAiXHg4MCIpCiAKKyAgICBkZWYgdGVzdF9iMmFfYmFzZTY0X25ld2xpbmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI1MzU3OiB0ZXN0IG5ld2xpbmUgcGFyYW1ldGVyCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW5hc2NpaS5iMmFfYmFzZTY0KGIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYUdWc2JHOD1cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmluYXNjaWkuYjJhX2Jhc2U2NChiLCBuZXdsaW5lPVRydWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYUdWc2JHOD1cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmluYXNjaWkuYjJhX2Jhc2U2NChiLCBuZXdsaW5lPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FHVnNiRzg9JykKKwogCiBjbGFzcyBBcnJheUJpbkFTQ0lJVGVzdChCaW5BU0NJSVRlc3QpOgogICAgIGRlZiB0eXBlMnRlc3Qoc2VsZiwgcyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpbmhleC5weSBiL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5CmluZGV4IDlkNGM4NWEuLjIxZjQ0NjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5CkBAIC00LDcgKzQsNiBAQAogICAgQmFzZWQgb24gYW4gb3JpZ2luYWwgdGVzdCBieSBSb2dlciBFLiBNYXNzZS4KICIiIgogaW1wb3J0IGJpbmhleAotaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQppbmRleCBlOWRiZGRjLi4zZWQwMThlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIG9wZXJhdG9yIGltcG9ydCBlcSwgbmUsIGx0LCBndCwgbGUsIGdlCitmcm9tIG9wZXJhdG9yIGltcG9ydCBlcSwgbGUsIG5lCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YQogCiBkZWYgZ2NkKGEsIGIpOgpAQCAtMzg4LDYgKzM4OCw1NCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGVxLCBCLCBWKSwgWydCLl9fZXFfXycsICdWLl9fZXFfXyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGxlLCBCLCBWKSwgWydCLl9fbGVfXycsICdWLl9fZ2VfXyddKQogCitjbGFzcyBTdXBFcShvYmplY3QpOgorICAgICIiIkNsYXNzIHRoYXQgY2FuIHRlc3QgZXF1YWxpdHkiIiIKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworY2xhc3MgUyhTdXBFcSk6CisgICAgIiIiU3ViY2xhc3Mgb2YgU3VwRXEgdGhhdCBzaG91bGQgZmFpbCIiIgorICAgIF9fZXFfXyA9IE5vbmUKKworY2xhc3MgRihvYmplY3QpOgorICAgICIiIkluZGVwZW5kZW50IGNsYXNzIHRoYXQgc2hvdWxkIGZhbGwgYmFjayIiIgorCitjbGFzcyBYKG9iamVjdCk6CisgICAgIiIiSW5kZXBlbmRlbnQgY2xhc3MgdGhhdCBzaG91bGQgZmFpbCIiIgorICAgIF9fZXFfXyA9IE5vbmUKKworY2xhc3MgU04oU3VwRXEpOgorICAgICIiIlN1YmNsYXNzIG9mIFN1cEVxIHRoYXQgY2FuIHRlc3QgZXF1YWxpdHksIGJ1dCBub3Qgbm9uLWVxdWFsaXR5IiIiCisgICAgX19uZV9fID0gTm9uZQorCitjbGFzcyBYTjoKKyAgICAiIiJJbmRlcGVuZGVudCBjbGFzcyB0aGF0IGNhbiB0ZXN0IGVxdWFsaXR5LCBidXQgbm90IG5vbi1lcXVhbGl0eSIiIgorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIF9fbmVfXyA9IE5vbmUKKworY2xhc3MgRmFsbGJhY2tCbG9ja2luZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBOb25lIG1ldGhvZCBibG9ja2luZyIiIgorCisgICAgZGVmIHRlc3RfZmFsbGJhY2tfcm1ldGhvZF9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgZSwgZiwgcywgeCA9IFN1cEVxKCksIEYoKSwgUygpLCBYKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgZSkKKyAgICAgICAgIyBsZWZ0IG9wZXJhbmQgaXMgY2hlY2tlZCBmaXJzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXEsIHgsIGUpCisgICAgICAgICMgUyBpcyBhIHN1YmNsYXNzLCBzbyBpdCdzIGFsd2F5cyBjaGVja2VkIGZpcnN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXEsIGUsIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXEsIHMsIGUpCisKKyAgICBkZWYgdGVzdF9mYWxsYmFja19uZV9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgZSwgc24sIHhuID0gU3VwRXEoKSwgU04oKSwgWE4oKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUgIT0gZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZSwgZSwgc24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmUsIHNuLCBlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUgIT0geG4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmUsIHhuLCBlKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5IGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CmluZGV4IGQzMGEzYjkuLjlmOGYwZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKQEAgLTk2LDYgKzk2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UvMSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGYWxzZS8xLCBGYWxzZSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUlMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChUcnVlJTEsIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUlMiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChUcnVlJTIsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UlMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGYWxzZSUxLCBGYWxzZSkKKwogICAgICAgICBmb3IgYiBpbiBGYWxzZSwgVHJ1ZToKICAgICAgICAgICAgIGZvciBpIGluIDAsIDEsIDI6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiKippLCBpbnQoYikqKmkpCkBAIC0zMzMsNiArMzQwLDE3IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IChFeGNlcHRpb24pIGFzIGVfbGVuOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlX2Jvb2wpLCBzdHIoZV9sZW4pKQogCisgICAgZGVmIHRlc3RfYmxvY2tlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIF9fYm9vbF9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJvb2wsIEEoKSkKKworICAgICAgICBjbGFzcyBCOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEwCisgICAgICAgICAgICBfX2Jvb2xfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBib29sLCBCKCkpCisKICAgICBkZWYgdGVzdF9yZWFsX2FuZF9pbWFnKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUucmVhbCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLmltYWcsIDApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CmluZGV4IDJlZWY5ZmMuLmI4M2YyZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CkBAIC0xNiw3ICsxNiw2IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBwZXJtdXRhdGlvbnMsIHByb2R1Y3QKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNhbXBsZSwgY2hvaWNlCi1mcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXIKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHN5cywgYXJyYXksIGlvCiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CmluZGV4IDk5MzFjODQuLmZlYTZkYTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZpby5weQpAQCAtNTksNyArNTksNyBAQAogICAgICAgICBzZWxmLmRyaXZlX29uZShiIjEyMzQ1Njc4OTBcMDBcMDFcMDJcMDNcMDRcMDVcMDYiKQogCiAgICAgZGVmIHRlc3RfbnVsbHBhdChzZWxmKToKLSAgICAgICAgc2VsZi5kcml2ZV9vbmUoYnl0ZXMoMTAwMCkpCisgICAgICAgIHNlbGYuZHJpdmVfb25lKGInXDAnICogMTAwMCkKIAogCiBjbGFzcyBDQnVmZmVyU2l6ZVRlc3QoQnVmZmVyU2l6ZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weSBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQppbmRleCAzOWM4MGIwLi5lMGNmZmUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CkBAIC04MSw3ICs4MSw3IEBACiAgICAgICAgICgnJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICcsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAgXHRcdCAgJywgVmFsdWVFcnJvciksCi0gICAgICAgIChzdHIoYidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCisgICAgICAgIChzdHIoYnInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAogICAgICAgICAoY2hyKDB4MjAwKSwgVmFsdWVFcnJvciksCiBdCiAKQEAgLTEwMyw3ICsxMDMsNyBAQAogICAgICAgICAoJycsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgIFx0XHQgICcsIFZhbHVlRXJyb3IpLAotICAgICAgICAoc3RyKGInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAorICAgICAgICAoc3RyKGJyJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKICAgICAgICAgKGNocigweDIwMCksIFZhbHVlRXJyb3IpLAogXQogCkBAIC0xNzEwLDIxICsxNzEwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5zcGFtKCksICdzcGFtNDInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9fYnl0ZXMoMiwgJ2xpdHRsZScpLCBiJ1x4MmFceDAwJykKIAotICAgIGRlZiB0ZXN0X3R5cGVfbmV3X2tleXdvcmRzKHNlbGYpOgotICAgICAgICBjbGFzcyBCOgotICAgICAgICAgICAgZGVmIGhhbShzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2hhbSVkJyAlIHNlbGYKLSAgICAgICAgQyA9IHR5cGUuX19uZXdfXyh0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9J0MnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VzPShCLCBpbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Q9eydzcGFtJzogbGFtYmRhIHNlbGY6ICdzcGFtJXMnICUgc2VsZn0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX25hbWVfXywgJ0MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19xdWFsbmFtZV9fLCAnQycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX21vZHVsZV9fLCBfX25hbWVfXykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYmFzZXNfXywgKEIsIGludCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5fX2Jhc2VfXywgaW50KQotICAgICAgICBzZWxmLmFzc2VydEluKCdzcGFtJywgQy5fX2RpY3RfXykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaGFtJywgQy5fX2RpY3RfXykKKyAgICBkZWYgdGVzdF90eXBlX25va3dhcmdzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKCdhJywgKCksIHt9LCB4PTUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGUoJ2EnLCAoKSwgZGljdD17fSkKIAogICAgIGRlZiB0ZXN0X3R5cGVfbmFtZShzZWxmKToKICAgICAgICAgZm9yIG5hbWUgaW4gJ0EnLCAnXHhjNCcsICdcVTAwMDFmNDBkJywgJ0IuQScsICc0MicsICcnOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKaW5kZXggY2MzMTJiMS4uMjIyNDQyNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CkBAIC0yMTYsNyArMjE2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLnR5cGUydGVzdChzYW1wbGVbOi0zXSwgInV0Zi04IikpCiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6Ci0gICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjXGRlZjBcZGVmMCIKKyAgICAgICAgc2FtcGxlID0gIkhlbGxvIHdvcmxkXG5cdTEyMzRcdTU2NzhcdTlhYmMiCiAgICAgICAgIGZvciBlbmMgaW4gKCJ1dGYtOCIsICJ1dGYtMTYiKToKICAgICAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsIGVuYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoZW5jKSwgc2FtcGxlKQpAQCAtMjY5LDYgKzI2OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oMjAwLCBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IDMwMCBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IC0xIGluIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogc3lzLm1heHNpemUrMSBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTm9uZSBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogZmxvYXQob3JkKCdhJykpIGluIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAiYSIgaW4gYikKQEAgLTMwMCw2ICszMDEsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QuZnJvbWhleCwgJ1x4MDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnR5cGUydGVzdC5mcm9taGV4LCAnMTIgICBceDAwICAgMzQnKQogCisgICAgICAgIGZvciBkYXRhLCBwb3MgaW4gKAorICAgICAgICAgICAgIyBpbnZhbGlkIGZpcnN0IGhleGFkZWNpbWFsIGNoYXJhY3RlcgorICAgICAgICAgICAgKCcxMiB4NCA1NicsIDMpLAorICAgICAgICAgICAgIyBpbnZhbGlkIHNlY29uZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICgnMTIgM3ggNTYnLCA0KSwKKyAgICAgICAgICAgICMgdHdvIGludmFsaWQgaGV4YWRlY2ltYWwgY2hhcmFjdGVycworICAgICAgICAgICAgKCcxMiB4eSA1NicsIDMpLAorICAgICAgICAgICAgIyB0ZXN0IG5vbi1BU0NJSSBzdHJpbmcKKyAgICAgICAgICAgICgnMTIgM1x4ZmYgNTYnLCA0KSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi50eXBlMnRlc3QuZnJvbWhleChkYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignYXQgcG9zaXRpb24gJXMnICUgcG9zLCBzdHIoY20uZXhjZXB0aW9uKSkKKwogICAgIGRlZiB0ZXN0X2hleChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5oZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QuaGV4LCAxKQpAQCAtNjc0LDYgKzY4OSwzNyBAQAogICAgICAgICB0ZXN0LnN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgaXRlciwgc2VsZi50eXBlMnRlc3QpCiAgICAgICAgIHRlc3Quc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCByZXZlcnNlZCwgc2VsZi50eXBlMnRlc3QpCiAKKyAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKKyAgICAgICAgcm9zZXR0YSA9IGJ5dGVhcnJheShyYW5nZSgyNTYpKQorICAgICAgICByb3NldHRhW29yZCgnbycpXSA9IG9yZCgnZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiLnRyYW5zbGF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiLnRyYW5zbGF0ZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi50cmFuc2xhdGUsIGJ5dGVzKHJhbmdlKDI1NSkpKQorCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIHNlbGYudHlwZTJ0ZXN0KQorCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhKQorICAgICAgICBkID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYicnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWxsZScpCisKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQorICAgICAgICBjID0gYi50cmFuc2xhdGUoTm9uZSwgYidlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQorCisgICAgICAgICMgdGVzdCBkZWxldGUgYXMgYSBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBkZWxldGU9YicnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVsbGUnKQorICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgZGVsZXRlPWInbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQorICAgICAgICBjID0gYi50cmFuc2xhdGUoTm9uZSwgZGVsZXRlPWInZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKKwogCiBjbGFzcyBCeXRlc1Rlc3QoQmFzZUJ5dGVzVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVzCkBAIC03MjIsMzEgKzc2OCwxNDIgQEAKIAogICAgICMgVGVzdCBQeUJ5dGVzX0Zyb21Gb3JtYXQoKQogICAgIGRlZiB0ZXN0X2Zyb21fZm9ybWF0KHNlbGYpOgotICAgICAgICB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY3R5cGVzJykKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IHB5dGhvbmFwaSwgcHlfb2JqZWN0LCBjX2ludCwgY19jaGFyX3AKKyAgICAgICAgY3R5cGVzID0gdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2N0eXBlcycpCisgICAgICAgIF90ZXN0Y2FwaSA9IHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgcHl0aG9uYXBpLCBweV9vYmplY3QKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0ICgKKyAgICAgICAgICAgIGNfaW50LCBjX3VpbnQsCisgICAgICAgICAgICBjX2xvbmcsIGNfdWxvbmcsCisgICAgICAgICAgICBjX3NpemVfdCwgY19zc2l6ZV90LAorICAgICAgICAgICAgY19jaGFyX3ApCisKICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0ID0gcHl0aG9uYXBpLlB5Qnl0ZXNfRnJvbUZvcm1hdAogICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQucmVzdHlwZSA9IHB5X29iamVjdAogCisgICAgICAgICMgYmFzaWMgdGVzdHMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidmb3JtYXQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2Zvcm1hdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInSGVsbG8gJXMgIScsIGInd29ybGQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ0hlbGxvIHdvcmxkICEnKQogCisgICAgICAgICMgdGVzdCBmb3JtYXR0ZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYz0lYycsIGNfaW50KDApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M9XDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M9JWMnLCBjX2ludChvcmQoJ0AnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYz1AJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjPSVjJywgY19pbnQoMjU1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidjPVx4ZmYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2Q9JWQgbGQ9JWxkIHpkPSV6ZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfaW50KDEpLCBjX2xvbmcoMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfc2l6ZV90KDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2Q9MSBsZD0yIHpkPTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2Q9JWQgbGQ9JWxkIHpkPSV6ZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfaW50KC0xKSwgY19sb25nKC0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19zaXplX3QoLTMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2Q9LTEgbGQ9LTIgemQ9LTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3U9JXUgbHU9JWx1IHp1PSV6dScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfdWludCgxMjMpLCBjX3Vsb25nKDQ1NiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfc2l6ZV90KDc4OSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIndT0xMjMgbHU9NDU2IHp1PTc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInaT0laScsIGNfaW50KDEyMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInaT0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2k9JWknLCBjX2ludCgtMTIzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidpPS0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3g9JXgnLCBjX2ludCgweGFiYykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIneD1hYmMnKQorCisgICAgICAgIHNpemVvZl9wdHIgPSBjdHlwZXMuc2l6ZW9mKGNfY2hhcl9wKQorCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgICMgV2luZG93cyAoTVNDUlQpCisgICAgICAgICAgICBwdHJfZm9ybWF0ID0gJzB4JTB7fVgnLmZvcm1hdCgyICogc2l6ZW9mX3B0cikKKyAgICAgICAgICAgIGRlZiBwdHJfZm9ybWF0dGVyKHB0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIChwdHJfZm9ybWF0ICUgcHRyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBVTklYIChnbGliYykKKyAgICAgICAgICAgIGRlZiBwdHJfZm9ybWF0dGVyKHB0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuICclI3gnICUgcHRyCisKKyAgICAgICAgcHRyID0gMHhhYmNkZWYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidwdHI9JXAnLCBjX2NoYXJfcChwdHIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJ3B0cj0nICsgcHRyX2Zvcm1hdHRlcihwdHIpKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIncz0lcycsIGNfY2hhcl9wKGInY3N0cicpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3M9Y3N0cicpCisKKyAgICAgICAgIyB0ZXN0IG1pbmltdW0gYW5kIG1heGltdW0gaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgc2l6ZV9tYXggPSBjX3NpemVfdCgtMSkudmFsdWUKKyAgICAgICAgZm9yIGZvcm1hdHN0ciwgY3R5cGVzX3R5cGUsIHZhbHVlLCBweV9mb3JtYXR0ZXIgaW4gKAorICAgICAgICAgICAgKGInJWQnLCBjX2ludCwgX3Rlc3RjYXBpLklOVF9NSU4sIHN0ciksCisgICAgICAgICAgICAoYiclZCcsIGNfaW50LCBfdGVzdGNhcGkuSU5UX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyVsZCcsIGNfbG9uZywgX3Rlc3RjYXBpLkxPTkdfTUlOLCBzdHIpLAorICAgICAgICAgICAgKGInJWxkJywgY19sb25nLCBfdGVzdGNhcGkuTE9OR19NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclbHUnLCBjX3Vsb25nLCBfdGVzdGNhcGkuVUxPTkdfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJXpkJywgY19zc2l6ZV90LCBfdGVzdGNhcGkuUFlfU1NJWkVfVF9NSU4sIHN0ciksCisgICAgICAgICAgICAoYiclemQnLCBjX3NzaXplX3QsIF90ZXN0Y2FwaS5QWV9TU0laRV9UX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyV6dScsIGNfc2l6ZV90LCBzaXplX21heCwgc3RyKSwKKyAgICAgICAgICAgIChiJyVwJywgY19jaGFyX3AsIHNpemVfbWF4LCBwdHJfZm9ybWF0dGVyKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGZvcm1hdHN0ciwgY3R5cGVzX3R5cGUodmFsdWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHlfZm9ybWF0dGVyKHZhbHVlKS5lbmNvZGUoJ2FzY2lpJykpLAorCisgICAgICAgICMgd2lkdGggYW5kIHByZWNpc2lvbiAod2lkdGggaXMgY3VycmVudGx5IGlnbm9yZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJTVzJywgYidhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclLjNzJywgYidhYmNkZWYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FiYycpCisKKyAgICAgICAgIyAnJSUnIGZvcm1hdHRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiclJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidbJSVdJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbJV0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJWMnLCBjX2ludChvcmQoJ18nKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJV8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJXMnKQorCisgICAgICAgICMgSW52YWxpZCBmb3JtYXRzIGFuZCBwYXJ0aWFsIGZvcm1hdHRpbmcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJyksIGInJScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUnKSwgYiclJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJXMnKSwgYiclcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInWyUlXScpLCBiJ1slXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUlYycsIGNfaW50KG9yZCgnXycpKSksIGInJV8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3g9JWkgeT0lJywgY19pbnQoMiksIGNfaW50KDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3g9MiB5PSUnKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYzolYycsIGNfaW50KDI1NSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInYzpceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidzOiVzJywgY19jaGFyX3AoYidjc3RyJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInczpjc3RyJykKLQotICAgICAgICAjIElzc3VlICMxOTk2OQorICAgICAgICAjIElzc3VlICMxOTk2OTogJWMgbXVzdCByYWlzZSBPdmVyZmxvd0Vycm9yIGZvciB2YWx1ZXMKKyAgICAgICAgIyBub3QgaW4gdGhlIHJhbmdlIFswOyAyNTVdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdCwgYiclYycsIGNfaW50KC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0LCBiJyVjJywgY19pbnQoMjU2KSkKIAorICAgIGRlZiB0ZXN0X2J5dGVzX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBjbGFzcyBJdGVyYXRpb25CbG9ja2VkKGxpc3QpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBpID0gWzAsIDEsIDIsIDNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoaSksIGInXHgwMFx4MDFceDAyXHgwMycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIEl0ZXJhdGlvbkJsb2NrZWQoaSkpCisKKyAgICAgICAgIyBBdCBsZWFzdCBpbiBDUHl0aG9uLCBiZWNhdXNlIGJ5dGVzLl9fbmV3X18gYW5kIHRoZSBDIEFQSQorICAgICAgICAjIFB5Qnl0ZXNfRnJvbU9iamVjdCBoYXZlIGRpZmZlcmVudCBmYWxsYmFjayBydWxlcywgaW50ZWdlcgorICAgICAgICAjIGZhbGxiYWNrIGlzIGhhbmRsZWQgc3BlY2lhbGx5LCBzbyB0ZXN0IHNlcGFyYXRlbHkuCisgICAgICAgIGNsYXNzIEludEJsb2NrZWQoaW50KToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygzKSwgYidcMFwwXDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBJbnRCbG9ja2VkKDMpKQorCisgICAgICAgICMgV2hpbGUgdGhlcmUgaXMgbm8gc2VwYXJhdGVseS1kZWZpbmVkIHJ1bGUgZm9yIGhhbmRsaW5nIGJ5dGVzCisgICAgICAgICMgc3ViY2xhc3NlcyBkaWZmZXJlbnRseSBmcm9tIG90aGVyIGJ1ZmZlci1pbnRlcmZhY2UgY2xhc3NlcywKKyAgICAgICAgIyBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgd2VsbCBzcGVjaWFsLWNhc2UgdGhlbSAoYXMgQ1B5dGhvbiAyLngKKyAgICAgICAgIyBzdHIgZGlkKSwgc28gdGVzdCB0aGVtIHNlcGFyYXRlbHkuCisgICAgICAgIGNsYXNzIEJ5dGVzU3ViY2xhc3NCbG9ja2VkKGJ5dGVzKToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiJ2FiJyksIGInYWInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBCeXRlc1N1YmNsYXNzQmxvY2tlZChiJ2FiJykpCisKKyAgICAgICAgY2xhc3MgQnVmZmVyQmxvY2tlZChieXRlYXJyYXkpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBiYSwgYmIgPSBieXRlYXJyYXkoYidhYicpLCBCdWZmZXJCbG9ja2VkKGInYWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGJhKSwgYidhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIGJiKQorCiAKIGNsYXNzIEJ5dGVBcnJheVRlc3QoQmFzZUJ5dGVzVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVhcnJheQpAQCAtMTMyMywyNCArMTQ4MCw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiIiVzIicgJSBjaHIoYykpCiAKLSAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZik6Ci0gICAgICAgIGIgPSBiJ2hlbGxvJwotICAgICAgICBiYSA9IGJ5dGVhcnJheShiKQotICAgICAgICByb3NldHRhID0gYnl0ZWFycmF5KHJhbmdlKDAsIDI1NikpCi0gICAgICAgIHJvc2V0dGFbb3JkKCdvJyldID0gb3JkKCdlJykKLSAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQotICAgICAgICBjID0gYmEudHJhbnNsYXRlKHJvc2V0dGEsIGInbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGInaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKLSAgICAgICAgYyA9IGIudHJhbnNsYXRlKE5vbmUsIGInZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKLSAgICAgICAgYyA9IGJhLnRyYW5zbGF0ZShOb25lLCBiJ2UnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYi50cmFuc2xhdGUsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmEudHJhbnNsYXRlLCBOb25lLCBOb25lKQotCiAgICAgZGVmIHRlc3Rfc3BsaXRfYnl0ZWFycmF5KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYSBiJy5zcGxpdChtZW1vcnl2aWV3KGInICcpKSwgW2InYScsIGInYiddKQogCkBAIC0xNTA0LDcgKzE2NDMsMzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShhKSwgdHlwZShiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShhLnkpLCB0eXBlKGIueSkpCiAKLSAgICB0ZXN0X2Zyb21oZXggPSBCYXNlQnl0ZXNUZXN0LnRlc3RfZnJvbWhleAorICAgIGRlZiB0ZXN0X2Zyb21oZXgoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdC5mcm9taGV4KCcxYTJCMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInXHgxYVx4MmJceDMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGIpLCBzZWxmLnR5cGUydGVzdCkKKworICAgICAgICBjbGFzcyBCMShzZWxmLmJhc2V0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgdmFsdWUpOgorICAgICAgICAgICAgICAgIG1lID0gc2VsZi5iYXNldHlwZS5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgICAgICAgICAgbWUuZm9vID0gJ2JhcicKKyAgICAgICAgICAgICAgICByZXR1cm4gbWUKKworICAgICAgICBiID0gQjEuZnJvbWhleCgnMWEyQjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ1x4MWFceDJiXHgzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShiKSwgQjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mb28sICdiYXInKQorCisgICAgICAgIGNsYXNzIEIyKHNlbGYuYmFzZXR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKG1lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuYmFzZXR5cGUgaXMgbm90IGJ5dGVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmJhc2V0eXBlLl9faW5pdF9fKG1lLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgbWUuZm9vID0gJ2JhcicKKworICAgICAgICBiID0gQjIuZnJvbWhleCgnMWEyQjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ1x4MWFceDJiXHgzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShiKSwgQjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mb28sICdiYXInKQogCiAKIGNsYXNzIEJ5dGVBcnJheVN1YmNsYXNzKGJ5dGVhcnJheSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J6Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CmluZGV4IGExZTRiOGQuLjQ1MGFiMmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CkBAIC01NjIsMTEgKzU2MiwxMSBAQAogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzTGltaXRlZChzZWxmKToKICAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCi0gICAgICAgIGJvbWIgPSBiejIuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBjb21wcmVzc2xldmVsPTkpCisgICAgICAgIGJvbWIgPSBiejIuY29tcHJlc3MoYidcMCcgKiBpbnQoMmU2KSwgY29tcHJlc3NsZXZlbD05KQogICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUpCiAKICAgICAgICAgZGVjb21wID0gQloyRmlsZShCeXRlc0lPKGJvbWIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvbXAucmVhZCgxKSwgYidcMCcpCiAgICAgICAgIG1heF9kZWNvbXAgPSAxICsgREVGQVVMVF9CVUZGRVJfU0laRQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAogICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CmluZGV4IDgwZWQ2MzIuLjZkYWQwNTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQpAQCAtNzAyLDE5ICs3MDIsMTkgQEAKIAogICAgIGRlZiBhc3NlcnRGYWlsdXJlKHNlbGYsICphcmdzKToKICAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctbScsICdjYWxlbmRhcicsICphcmdzKQotICAgICAgICBzZWxmLmFzc2VydEluKGInVXNhZ2U6Jywgc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEluKGIndXNhZ2U6Jywgc3RkZXJyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAyKQogCiAgICAgZGVmIHRlc3RfaGVscChzZWxmKToKICAgICAgICAgc3Rkb3V0ID0gc2VsZi5ydW5fb2soJy1oJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1VzYWdlOicsIHN0ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3VzYWdlOicsIHN0ZG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ2NhbGVuZGFyLnB5Jywgc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydEluKGInLS1oZWxwJywgc3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfaWxsZWdhbF9hcmd1bWVudHMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnLXonKQotICAgICAgICAjc2VsZi5hc3NlcnRGYWlsdXJlKCdzcGFtJykKLSAgICAgICAgI3NlbGYuYXNzZXJ0RmFpbHVyZSgnMjAwNCcsICdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCcyMDA0JywgJ3NwYW0nKQogICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJy10JywgJ2h0bWwnLCAnMjAwNCcsICcxJykKIAogICAgIGRlZiB0ZXN0X291dHB1dF9jdXJyZW50X3llYXIoc2VsZik6CkBAIC04MTUsNSArODE1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgYidocmVmPSJjdXN0b20uY3NzIiAvPicsIHN0ZG91dCkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydtZGF5cycsICdKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ0VQT0NIJywKKyAgICAgICAgICAgICAgICAgICAgICdNT05EQVknLCAnVFVFU0RBWScsICdXRURORVNEQVknLCAnVEhVUlNEQVknLCAnRlJJREFZJywKKyAgICAgICAgICAgICAgICAgICAgICdTQVRVUkRBWScsICdTVU5EQVknLCAnZGlmZmVyZW50X2xvY2FsZScsICdjJywKKyAgICAgICAgICAgICAgICAgICAgICdwcndlZWsnLCAnd2VlaycsICdmb3JtYXQnLCAnZm9ybWF0c3RyaW5nJywgJ21haW4nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjYWxlbmRhciwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CmluZGV4IDFlYWRkMjIuLjU1MjFlNzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKQEAgLTQsOCArNCwxMCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTQ0Miw2ICs0NDQsNyBAQAogICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGV4cGVjdGVkX291dHB1dCkKIAorCiBjbGFzcyBTa2lwaXRlbVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rfc2tpcGl0ZW0oc2VsZik6CkBAIC00OTEsMTAgKzQ5NCwxMCBAQAogICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHModHVwbGVfMSwgZGljdF9iLAogICAgICAgICAgICAgICAgICAgICBmb3JtYXQuZW5jb2RlKCJhc2NpaSIpLCBrZXl3b3JkcykKICAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIHMgPSAiYXJndW1lbnQgMSAoaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+KSIKICAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gKHN0cihlKSA9PSBzKQotICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKIAogICAgICAgICAgICAgIyB0ZXN0IHRoZSBmb3JtYXQgdW5pdCB3aGVuIHNraXBwZWQKQEAgLTUwMyw3ICs1MDYsNyBAQAogICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMoZW1wdHlfdHVwbGUsIGRpY3RfYiwKICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCiAgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gRmFsc2UKLSAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIHMgPSAiaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+OiAne30nIi5mb3JtYXQoZm9ybWF0KQogICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IChzdHIoZSkgPT0gcykKIApAQCAtNTI0LDYgKzUyNywzMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoKSwge30sIGInJywgWzQyXSkKIAorICAgIGRlZiB0ZXN0X3Bvc2l0aW9uYWxfb25seShzZWxmKToKKyAgICAgICAgcGFyc2UgPSBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzCisKKyAgICAgICAgcGFyc2UoKDEsIDIsIDMpLCB7fSwgYidPT08nLCBbJycsICcnLCAnYSddKQorICAgICAgICBwYXJzZSgoMSwgMiksIHsnYSc6IDN9LCBiJ09PTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgxIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHsnYSc6IDN9LCBiJ09PTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098T08nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoKSwge30sIGInT3xPTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCAyKSwgeydhJzogM30sIGInT08kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGV4YWN0bHkgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDEgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwgeydhJzogM30sIGInT08kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098TyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKCksIHt9LCBiJ098TyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5c3RlbUVycm9yLCByJ0VtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyIFwkJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7fSwgYidPfCRPTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeXN0ZW1FcnJvciwgJ0VtcHR5IGtleXdvcmQnKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098T08nLCBbJycsICdhJywgJyddKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBUZXN0VGhyZWFkU3RhdGUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01NDgsNiArNTc3LDcgQEAKICAgICAgICAgdC5zdGFydCgpCiAgICAgICAgIHQuam9pbigpCiAKKwogY2xhc3MgVGVzdF90ZXN0Y2FwaSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfX3Rlc3RjYXBpKHNlbGYpOgogICAgICAgICBmb3IgbmFtZSBpbiBkaXIoX3Rlc3RjYXBpKToKQEAgLTU1Niw1ICs1ODYsODQgQEAKICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IGdldGF0dHIoX3Rlc3RjYXBpLCBuYW1lKQogICAgICAgICAgICAgICAgICAgICB0ZXN0KCkKIAorCitjbGFzcyBQeU1lbURlYnVnVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIFBZVEhPTk1BTExPQyA9ICdkZWJ1ZycKKyAgICAjICcweDA0YzA2ZTAnIG9yICcwNEMwNkUwJworICAgIFBUUl9SRUdFWCA9IHInKD86MHgpP1swLTlhLWZBLUZdKycKKworICAgIGRlZiBjaGVjayhzZWxmLCBjb2RlKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKKyAgICAgICAgICAgIG91dCA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZVEhPTk1BTExPQz1zZWxmLlBZVEhPTk1BTExPQykKKyAgICAgICAgc3RkZXJyID0gb3V0LmVycgorICAgICAgICByZXR1cm4gc3RkZXJyLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCisKKyAgICBkZWYgdGVzdF9idWZmZXJfb3ZlcmZsb3coc2VsZik6CisgICAgICAgIG91dCA9IHNlbGYuY2hlY2soJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW1lbV9idWZmZXJfb3ZlcmZsb3coKScpCisgICAgICAgIHJlZ2V4ID0gKHIiRGVidWcgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgcD17cHRyfTogQVBJICdtJ1xuIgorICAgICAgICAgICAgICAgICByIiAgICAxNiBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZFxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHAtWzAtOV0gYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHRhaWw9e3B0cn0gYXJlIG5vdCBhbGwgRk9SQklEREVOQllURSBcKDB4WzAtOWEtZl17ezJ9fVwpOlxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgYXQgdGFpbFwrMDogMHg3OCBcKlwqXCogT1VDSFxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgYXQgdGFpbFwrMTogMHhmYlxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgYXQgdGFpbFwrMjogMHhmYlxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgLipcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIGJsb2NrIHdhcyBtYWRlIGJ5IGNhbGwgI1swLTldKyB0byBkZWJ1ZyBtYWxsb2MvcmVhbGxvYy5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgRGF0YSBhdCBwOiBjYiBjYiBjYiAuKlxuIgorICAgICAgICAgICAgICAgICByIlxuIgorICAgICAgICAgICAgICAgICByIkZhdGFsIFB5dGhvbiBlcnJvcjogYmFkIHRyYWlsaW5nIHBhZCBieXRlIikKKyAgICAgICAgcmVnZXggPSByZWdleC5mb3JtYXQocHRyPXNlbGYuUFRSX1JFR0VYKQorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocmVnZXgsIGZsYWdzPXJlLkRPVEFMTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXQsIHJlZ2V4KQorCisgICAgZGVmIHRlc3RfYXBpX21pc3VzZShzZWxmKToKKyAgICAgICAgb3V0ID0gc2VsZi5jaGVjaygnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5bWVtX2FwaV9taXN1c2UoKScpCisgICAgICAgIHJlZ2V4ID0gKHIiRGVidWcgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgcD17cHRyfTogQVBJICdtJ1xuIgorICAgICAgICAgICAgICAgICByIiAgICAxNiBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZFxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHAtWzAtOV0gYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHRhaWw9e3B0cn0gYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgYmxvY2sgd2FzIG1hZGUgYnkgY2FsbCAjWzAtOV0rIHRvIGRlYnVnIG1hbGxvYy9yZWFsbG9jLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBEYXRhIGF0IHA6IGNiIGNiIGNiIC4qXG4iCisgICAgICAgICAgICAgICAgIHIiXG4iCisgICAgICAgICAgICAgICAgIHIiRmF0YWwgUHl0aG9uIGVycm9yOiBiYWQgSUQ6IEFsbG9jYXRlZCB1c2luZyBBUEkgJ20nLCB2ZXJpZmllZCB1c2luZyBBUEkgJ3InXG4iKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdChwdHI9c2VsZi5QVFJfUkVHRVgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0LCByZWdleCkKKworICAgIGRlZiBjaGVja19tYWxsb2Nfd2l0aG91dF9naWwoc2VsZiwgY29kZSk6CisgICAgICAgIG91dCA9IHNlbGYuY2hlY2soY29kZSkKKyAgICAgICAgZXhwZWN0ZWQgPSAoJ0ZhdGFsIFB5dGhvbiBlcnJvcjogUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgICAgJ3dpdGhvdXQgaG9sZGluZyB0aGUgR0lMJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCwgb3V0KQorCisgICAgZGVmIHRlc3RfcHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIERlYnVnIGhvb2tzIG11c3QgcmFpc2UgYW4gZXJyb3IgaWYgUHlNZW1fTWFsbG9jKCkgaXMgY2FsbGVkCisgICAgICAgICMgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwKKyAgICAgICAgY29kZSA9ICdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsKCknCisgICAgICAgIHNlbGYuY2hlY2tfbWFsbG9jX3dpdGhvdXRfZ2lsKGNvZGUpCisKKyAgICBkZWYgdGVzdF9weW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwoc2VsZik6CisgICAgICAgICMgRGVidWcgaG9va3MgbXVzdCByYWlzZSBhbiBlcnJvciBpZiBQeU9iamVjdF9NYWxsb2MoKSBpcyBjYWxsZWQKKyAgICAgICAgIyB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTAorICAgICAgICBjb2RlID0gJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwoKScKKyAgICAgICAgc2VsZi5jaGVja19tYWxsb2Nfd2l0aG91dF9naWwoY29kZSkKKworCitjbGFzcyBQeU1lbU1hbGxvY0RlYnVnVGVzdHMoUHlNZW1EZWJ1Z1Rlc3RzKToKKyAgICBQWVRIT05NQUxMT0MgPSAnbWFsbG9jX2RlYnVnJworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9QWU1BTExPQycpID09IDEsCisgICAgICAgICAgICAgICAgICAgICAnbmVlZCBweW1hbGxvYycpCitjbGFzcyBQeU1lbVB5bWFsbG9jRGVidWdUZXN0cyhQeU1lbURlYnVnVGVzdHMpOgorICAgIFBZVEhPTk1BTExPQyA9ICdweW1hbGxvY19kZWJ1ZycKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhQeV9ERUJVRywgJ25lZWQgUHlfREVCVUcnKQorY2xhc3MgUHlNZW1EZWZhdWx0VGVzdHMoUHlNZW1EZWJ1Z1Rlc3RzKToKKyAgICAjIHRlc3QgZGVmYXVsdCBhbGxvY2F0b3Igb2YgUHl0aG9uIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUKKyAgICBQWVRIT05NQUxMT0MgPSAnJworCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NnaS5weSBiL0xpYi90ZXN0L3Rlc3RfY2dpLnB5CmluZGV4IGFiOWY2YWIuLjYzNzMyMjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2dpLnB5CkBAIC03LDYgKzcsNyBAQAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIEhhY2tlZFN5c01vZHVsZToKICAgICAjIFRoZSByZWdyZXNzaW9uIHRlc3Qgd2lsbCBoYXZlIHJlYWwgdmFsdWVzIGluIHN5cy5hcmd2LCB3aGljaApAQCAtMTQ3LDcgKzE0OCw3IEBACiAgICAgZGVmIHRlc3RfZXNjYXBlKHNlbGYpOgogICAgICAgICAjIGNnaS5lc2NhcGUoKSBpcyBkZXByZWNhdGVkLgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgJ2NnaVwuZXNjYXBlJywKKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnLCByJ2NnaVwuZXNjYXBlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0ICZhbXA7IHN0cmluZyIsIGNnaS5lc2NhcGUoInRlc3QgJiBzdHJpbmciKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZsdDt0ZXN0IHN0cmluZyZndDsiLCBjZ2kuZXNjYXBlKCI8dGVzdCBzdHJpbmc+IikpCkBAIC00NzMsNiArNDc0LDExIEBACiAgICAgICAgICAgICBjZ2kucGFyc2VfaGVhZGVyKCdmb3JtLWRhdGE7IG5hbWU9ImZpbGVzIjsgZmlsZW5hbWU9ImZvXFwibztiYXIiJyksCiAgICAgICAgICAgICAoImZvcm0tZGF0YSIsIHsibmFtZSI6ICJmaWxlcyIsICJmaWxlbmFtZSI6ICdmbyJvO2Jhcid9KSkKIAorICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyJsb2dmaWxlIiwgImxvZ2ZwIiwgImluaXRsb2ciLCAiZG9sb2ciLCAibm9sb2ciLAorICAgICAgICAgICAgICAgICAgICAgImNsb3NlbG9nIiwgImxvZyIsICJtYXhsZW4iLCAidmFsaWRfYm91bmRhcnkifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjZ2ksIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKIAogQk9VTkRBUlkgPSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tNzIxODM3MzczMzUwNzA1NTI2Njg4MTY0Njg0IgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weSBiL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5CmluZGV4IDQwNjRhZWYuLjBkNDU5NGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5CkBAIC05LDcgKzksNyBAQAogCiAiIiIjIgogCi1pbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCBjb2RlY3MKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKaW5kZXggMWY4ODRlNS4uMDQ1MWZiMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CkBAIC00LDYgKzQsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY21hdGgsIG1hdGgKIGZyb20gY21hdGggaW1wb3J0IHBoYXNlLCBwb2xhciwgcmVjdCwgcGkKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHN5cwogaW1wb3J0IHN5c2NvbmZpZwogCiBJTkYgPSBmbG9hdCgnaW5mJykKQEAgLTE1NCw2ICsxNTYsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjbWF0aC5lLCBlX2V4cGVjdGVkLCBwbGFjZXM9OSwKICAgICAgICAgICAgIG1zZz0iY21hdGguZSBpcyB7fTsgc2hvdWxkIGJlIHt9Ii5mb3JtYXQoY21hdGguZSwgZV9leHBlY3RlZCkpCiAKKyAgICBkZWYgdGVzdF9pbmZpbml0eV9hbmRfbmFuX2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5pbmYucmVhbCwgbWF0aC5pbmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mLmltYWcsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5pbmZqLnJlYWwsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5pbmZqLmltYWcsIG1hdGguaW5mKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGNtYXRoLm5hbi5yZWFsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5uYW4uaW1hZywgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLm5hbmoucmVhbCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihjbWF0aC5uYW5qLmltYWcpKQorCisgICAgICAgICMgQ2hlY2sgY29uc2lzdGVuY3kgd2l0aCByZXBycy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLmluZiksICJpbmYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGguaW5maiksICJpbmZqIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLm5hbiksICJuYW4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGgubmFuaiksICJuYW5qIikKKwogICAgIGRlZiB0ZXN0X3VzZXJfb2JqZWN0KHNlbGYpOgogICAgICAgICAjIFRlc3QgYXV0b21hdGljIGNhbGxpbmcgb2YgX19jb21wbGV4X18gYW5kIF9fZmxvYXRfXyBieSBjbWF0aAogICAgICAgICAjIGZ1bmN0aW9ucwpAQCAtMzE1LDYgKzMzNCwxOCBAQAogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3Rfc3BlY2lmaWNfdmFsdWVzKHNlbGYpOgorICAgICAgICAjIFNvbWUgdGVzdHMgbmVlZCB0byBiZSBza2lwcGVkIG9uIGFuY2llbnQgT1MgWCB2ZXJzaW9ucy4KKyAgICAgICAgIyBTZWUgaXNzdWUgIzI3OTUzLgorICAgICAgICBTS0lQX09OX1RJR0VSID0geyd0YW4wMDY0J30KKworICAgICAgICBvc3hfdmVyc2lvbiA9IE5vbmUKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgdmVyc2lvbl90eHQgPSBwbGF0Zm9ybS5tYWNfdmVyKClbMF0KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvc3hfdmVyc2lvbiA9IHR1cGxlKG1hcChpbnQsIHZlcnNpb25fdHh0LnNwbGl0KCcuJykpKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgIGRlZiByZWN0X2NvbXBsZXgoeik6CiAgICAgICAgICAgICAiIiJXcmFwcGVkIHZlcnNpb24gb2YgcmVjdCB0aGF0IGFjY2VwdHMgYSBjb21wbGV4IG51bWJlciBpbnN0ZWFkIG9mCiAgICAgICAgICAgICB0d28gZmxvYXQgYXJndW1lbnRzLiIiIgpAQCAtMzI4LDYgKzM1OSwxMiBAQAogICAgICAgICBmb3IgaWQsIGZuLCBhciwgYWksIGVyLCBlaSwgZmxhZ3MgaW4gcGFyc2VfdGVzdGZpbGUodGVzdF9maWxlKToKICAgICAgICAgICAgIGFyZyA9IGNvbXBsZXgoYXIsIGFpKQogICAgICAgICAgICAgZXhwZWN0ZWQgPSBjb21wbGV4KGVyLCBlaSkKKworICAgICAgICAgICAgIyBTa2lwIGNlcnRhaW4gdGVzdHMgb24gT1MgWCAxMC40LgorICAgICAgICAgICAgaWYgb3N4X3ZlcnNpb24gaXMgbm90IE5vbmUgYW5kIG9zeF92ZXJzaW9uIDwgKDEwLCA1KToKKyAgICAgICAgICAgICAgICBpZiBpZCBpbiBTS0lQX09OX1RJR0VSOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICBpZiBmbiA9PSAncmVjdCc6CiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSByZWN0X2NvbXBsZXgKICAgICAgICAgICAgIGVsaWYgZm4gPT0gJ3BvbGFyJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CmluZGV4IDNkMmY3NjkuLjg3NTcxZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQpAQCAtMzQ4LDggKzM0OCw5IEBACiAgICAgICAgICAgICB0ZXN0LnN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpLl9fZW50ZXJfXygpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCd4JykKICAgICAgICAgICAgIG9zLmNsb3NlKHN5cy5zdGRvdXQuZmlsZW5vKCkpIiIiCi0gICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsIGNvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIwLCByYykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIuZGVjb2RlKCdhc2NpaScsICdpZ25vcmUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhjZXB0aW9uIGlnbm9yZWQgaW4uKlxuT1NFcnJvcjogLionKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CmluZGV4IGJlZmUwZTQuLjM4Y2IyZTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CkBAIC0xMzgsOSArMTM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9hcmd2MCwgZXhwZWN0ZWRfcGF0aDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcyk6Ci0gICAgICAgIGlmIG5vdCBfX2RlYnVnX186Ci0gICAgICAgICAgICBjbWRfbGluZV9zd2l0Y2hlcyArPSAoJy0nICsgJ08nICogc3lzLmZsYWdzLm9wdGltaXplLCkKLSAgICAgICAgcnVuX2FyZ3MgPSBjbWRfbGluZV9zd2l0Y2hlcyArIChzY3JpcHRfbmFtZSwpICsgdHVwbGUoZXhhbXBsZV9hcmdzKQorICAgICAgICBydW5fYXJncyA9IFsqc3VwcG9ydC5vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgICAgICAgICAgKmNtZF9saW5lX3N3aXRjaGVzLCBzY3JpcHRfbmFtZSwgKmV4YW1wbGVfYXJnc10KICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqcnVuX2FyZ3MsIF9faXNvbGF0ZWQ9RmFsc2UpCiAgICAgICAgIHNlbGYuX2NoZWNrX291dHB1dChzY3JpcHRfbmFtZSwgcmMsIG91dCArIGVyciwgZXhwZWN0ZWRfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwKQEAgLTQyOSw3ICs0MjgsNyBAQAogICAgICAgICAgICAgKCdidWlsdGlucy54JywgYnInRXJyb3Igd2hpbGUgZmluZGluZyBtb2R1bGUgc3BlY2lmaWNhdGlvbi4qJwogICAgICAgICAgICAgICAgIGJyJ0F0dHJpYnV0ZUVycm9yJyksCiAgICAgICAgICAgICAoJ2J1aWx0aW5zLngueScsIGJyJ0Vycm9yIHdoaWxlIGZpbmRpbmcgbW9kdWxlIHNwZWNpZmljYXRpb24uKicKLSAgICAgICAgICAgICAgICBicidJbXBvcnRFcnJvci4qTm8gbW9kdWxlIG5hbWVkLipub3QgYSBwYWNrYWdlJyksCisgICAgICAgICAgICAgICAgYnInTW9kdWxlTm90Rm91bmRFcnJvci4qTm8gbW9kdWxlIG5hbWVkLipub3QgYSBwYWNrYWdlJyksCiAgICAgICAgICAgICAoJ29zLnBhdGgnLCBicidsb2FkZXIuKmNhbm5vdCBoYW5kbGUnKSwKICAgICAgICAgICAgICgnaW1wb3J0bGliJywgYnInTm8gbW9kdWxlIG5hbWVkLionCiAgICAgICAgICAgICAgICAgYnInaXMgYSBwYWNrYWdlIGFuZCBjYW5ub3QgYmUgZGlyZWN0bHkgZXhlY3V0ZWQnKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CmluZGV4IDMzOTRiMzkuLjFhOGY2OTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpAQCAtNjksNyArNjksNyBAQAogICAgICAgICAjIHdpdGggYmFubmVyCiAgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKICAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nRm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMykKICAgICAgICAgYmFubmVyX2NhbGwgPSBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYW5uZXJfY2FsbCwgWyd3cml0ZScsICgnRm9vXG4nLCksIHt9XSkKIApAQCAtNzcsOCArNzcsMzYgQEAKICAgICAgICAgc2VsZi5zdGRlcnIucmVzZXRfbW9jaygpCiAgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKICAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKworICAgIGRlZiB0ZXN0X2V4aXRfbXNnKHNlbGYpOgorICAgICAgICAjIGRlZmF1bHQgZXhpdCBtZXNzYWdlCisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKyAgICAgICAgZXJyX21zZyA9IHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsc1sxXQorICAgICAgICBleHBlY3RlZCA9ICdub3cgZXhpdGluZyBJbnRlcmFjdGl2ZUNvbnNvbGUuLi5cbicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJfbXNnLCBbJ3dyaXRlJywgKGV4cGVjdGVkLCksIHt9XSkKKworICAgICAgICAjIG5vIGV4aXQgbWVzc2FnZQorICAgICAgICBzZWxmLnN0ZGVyci5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnLCBleGl0bXNnPScnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAxKQogCisgICAgICAgICMgY3VzdG9tIGV4aXQgbWVzc2FnZQorICAgICAgICBzZWxmLnN0ZGVyci5yZXNldF9tb2NrKCkKKyAgICAgICAgbWVzc2FnZSA9ICgKKyAgICAgICAgICAgICdieWUhIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBaRVRBfVxOe0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEV9JworICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycsIGV4aXRtc2c9bWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKyAgICAgICAgZXJyX21zZyA9IHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsc1sxXQorICAgICAgICBleHBlY3RlZCA9IG1lc3NhZ2UgKyAnXG4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyX21zZywgWyd3cml0ZScsIChleHBlY3RlZCwpLCB7fV0pCisKKwogICAgIGRlZiB0ZXN0X2NhdXNlX3RiKHNlbGYpOgogICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsicmFpc2UgVmFsdWVFcnJvcignJykgZnJvbSBBdHRyaWJ1dGVFcnJvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFT0ZFcnJvcignRmluaXNoZWQnKV0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CmluZGV4IGVlMWUyOGEuLjZhM2U5OTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGltcG9ydCB1bmljb2RlZGF0YQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKIAogY2xhc3MgUG9zUmV0dXJuOgogICAgICMgdGhpcyBjYW4gYmUgdXNlZCBmb3IgY29uZmlndXJhYmxlIGNhbGxiYWNrcwpAQCAtMjgxLDEyICsyODAsMTIgQEAKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBiIlxcdTMwNDJcdTN4eHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAorICAgICAgICAgICAgYiJcXHUzMDQyXFx1M3h4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCiAgICAgICAgICAgICAiXHUzMDQyWzw5Mj48MTE3Pjw1MT5deHh4IgogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGIiXFx1MzA0Mlx1M3h4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKKyAgICAgICAgICAgIGIiXFx1MzA0MlxcdTN4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCiAgICAgICAgICAgICAiXHUzMDQyWzw5Mj48MTE3Pjw1MT5deHgiCiAgICAgICAgICkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKaW5kZXggZDBlM2ExNS4uM2JkZjdkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBQUkMgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CmluZGV4IGJiOWJlMTEuLmM1ZTJmOTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSG9uZ0tvbmcgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQppbmRleCA4YTNjYTcwLi4wMGVhMWMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CkBAIC0xLDYgKzEsNSBAQAogIyBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSVNPIDIwMjIgZW5jb2RpbmdzLgogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CmluZGV4IDQ0YjYzYTAuLjk0Mzc4ZDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSmFwYW5lc2UgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CmluZGV4IGI2YTc0ZmIuLjg2M2QxNmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgUk9LIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQppbmRleCA5MTc0Mjk2Li5iYjFkMTMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIFJPQyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQppbmRleCBmMWJkMzg0Li44OWU1MWM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBQUkMgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQppbmRleCA0YzBjNDE1Li43YTQ4ZDI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBIb25nS29uZyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5CmluZGV4IDU3NzM4MjMuLmZkZmVjODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIEphcGFuZXNlIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKaW5kZXggNmNiNDFjOC4uNDcxY2Q3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgUk9LIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKaW5kZXggMmVhNDRiNS4uMTQ1YTk3ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgUk9DIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggMDEzZWM2NC4uMWU2M2VkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTQsMTYgKzQsMTAgQEAKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZW5jb2RpbmdzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCi1pZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICBWSVNUQV9PUl9MQVRFUiA9IChzeXMuZ2V0d2luZG93c3ZlcnNpb24oKS5tYWpvciA+PSA2KQotZWxzZToKLSAgICBWSVNUQV9PUl9MQVRFUiA9IEZhbHNlCi0KIHRyeToKICAgICBpbXBvcnQgY3R5cGVzCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yNyw2ICsyMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZXIoaW5wdXQpLCAoZXhwZWN0LCBsZW4oaW5wdXQpKSkKICAgICByZXR1cm4gY2hlY2sKIAorCiBjbGFzcyBRdWV1ZShvYmplY3QpOgogICAgICIiIgogICAgIHF1ZXVlOiB3cml0ZSBieXRlcyBhdCBvbmUgZW5kLCByZWFkIGJ5dGVzIGZyb20gdGhlIG90aGVyIGVuZApAQCAtNDcsNiArNDIsNyBAQAogICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NpemU6XQogICAgICAgICAgICAgcmV0dXJuIHMKIAorCiBjbGFzcyBNaXhJbkNoZWNrU3RhdGVIYW5kbGluZzoKICAgICBkZWYgY2hlY2tfc3RhdGVfaGFuZGxpbmdfZGVjb2RlKHNlbGYsIGVuY29kaW5nLCB1LCBzKToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHMpKzEpOgpAQCAtODAsNiArNzYsNyBAQAogICAgICAgICAgICAgcGFydDIgPSBkLmVuY29kZSh1W2k6XSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgcGFydDErcGFydDIpCiAKKwogY2xhc3MgUmVhZFRlc3QoTWl4SW5DaGVja1N0YXRlSGFuZGxpbmcpOgogICAgIGRlZiBjaGVja19wYXJ0aWFsKHNlbGYsIGlucHV0LCBwYXJ0aWFscmVzdWx0cyk6CiAgICAgICAgICMgZ2V0IGEgU3RyZWFtUmVhZGVyIGZvciB0aGUgZW5jb2RpbmcgYW5kIGZlZWQgdGhlIGJ5dGVzdHJpbmcgdmVyc2lvbgpAQCAtMzU4LDYgKzM1NSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIls/XSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQogCisgICAgICAgICMgc2VxdWVudGlhbCBzdXJyb2dhdGUgY2hhcmFjdGVycworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEODAwXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJpZ25vcmUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW10iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1RDgwMFx1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbPz9dIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCisKICAgICAgICAgYm9tID0gIiIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpCiAgICAgICAgIGZvciBiZWZvcmUsIGFmdGVyIGluIFsoIlxVMDAwMTBmZmYiLCAiQSIpLCAoIlsiLCAiXSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJBIiwgIlxVMDAwMTBmZmYiKV06CkBAIC0zODMsNiArMzg2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9zZXF1ZW5jZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlICsgYmFja3NsYXNocmVwbGFjZSArIGFmdGVyKQogCisKIGNsYXNzIFVURjMyVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMiIKICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgpAQCAtNDc4LDYgKzQ4Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTAwMDAnICogMTAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MudXRmXzMyX2RlY29kZShlbmNvZGVkX2JlKVswXSkKIAorCiBjbGFzcyBVVEYzMkxFVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMi1sZSIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlID0gYiJceDgwXHhkY1x4MDBceDAwIgpAQCAtNTIzLDYgKzUyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTAwMDAnICogMTAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MudXRmXzMyX2xlX2RlY29kZShlbmNvZGVkKVswXSkKIAorCiBjbGFzcyBVVEYzMkJFVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMi1iZSIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlID0gYiJceDAwXHgwMFx4ZGNceDgwIgpAQCAtNzQ3LDYgKzc1Myw3IEBACiAgICAgZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZSA9IGIiXHhlZFx4YjJceDgwIgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2VfcmVwbGFjZSA9ICJcdWZmZmQiICogMworICAgIEJPTSA9IGInJwogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19wYXJ0aWFsKApAQCAtNzc1LDI3ICs3ODIsNDkgQEAKICAgICAgICAgc2VsZi5jaGVja19zdGF0ZV9oYW5kbGluZ19kZWNvZGUoc2VsZi5lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdS5lbmNvZGUoc2VsZi5lbmNvZGluZykpCiAKKyAgICBkZWYgdGVzdF9kZWNvZGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkYzgwXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdiYWNrc2xhc2hyZXBsYWNlJywgJ1tcXHg4MFxceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZShzZWxmLmVuY29kaW5nLCBlcnJvcl9oYW5kbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfbG9uZV9zdXJyb2dhdGVzKHNlbGYpOgogICAgICAgICBzdXBlcigpLnRlc3RfbG9uZV9zdXJyb2dhdGVzKCkKICAgICAgICAgIyBub3Qgc3VyZSBpZiB0aGlzIGlzIG1ha2luZyBzZW5zZSBmb3IKICAgICAgICAgIyBVVEYtMTYgYW5kIFVURi0zMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCd1dGYtOCcsICJzdXJyb2dhdGVlc2NhcGUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tceDgwXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYidbXHg4MF0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICJbXHVEQzgwXHVEODAwXHVERkZGXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVlc2NhcGUiKQorICAgICAgICBleGMgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMub2JqZWN0W2V4Yy5zdGFydDpleGMuZW5kXSwgJ1x1RDgwMFx1REZGRicpCiAKICAgICBkZWYgdGVzdF9zdXJyb2dhdGVwYXNzX2hhbmRsZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYiJhYmNceGVkXHhhMFx4ODBkZWYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiYWJjXHhlZFx4YTBceDgwZGVmIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEODAwXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiJ1tceGVkXHhhMFx4ODBceGVkXHhiMlx4ODBdJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiYWJjXHhlZFx4YTBceDgwZGVmIi5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjXHVkODAwZGVmIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTBmZmZcdUQ4MDAiKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKLSAgICAgICAgICAgIGIiYWJjXHhlZFx4YTAiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpCisgICAgICAgICAgICBiImFiY1x4ZWRceGEwIi5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6Ci0gICAgICAgICAgICBiImFiY1x4ZWRceGEweiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIikKKyAgICAgICAgICAgIGIiYWJjXHhlZFx4YTB6Ii5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAogICAgICAgICAgICAgICAgICAgICAgJ2NwNjUwMDEgaXMgYSBXaW5kb3dzLW9ubHkgY29kZWMnKQpAQCAtODA3LDE4ICs4MzYsMTMgQEAKICAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCiAgICAgICAgICAgICAoJ1x4ZTlcdTIwYWMnLCAnc3RyaWN0JywgIGInXHhjM1x4YTlceGUyXHg4Mlx4YWMnKSwKICAgICAgICAgICAgICgnXFUwMDEwZmZmZicsICdzdHJpY3QnLCBiJ1x4ZjRceDhmXHhiZlx4YmYnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnaWdub3JlJywgYicnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ25hbWVyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdXJyb2dhdGVwYXNzJywgYidceGVkXHhiMlx4ODAnKSwKICAgICAgICAgXQotICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKLSAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgTm9uZSksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnaWdub3JlJywgYicnKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdyZXBsYWNlJywgYic/JyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnYmFja3NsYXNocmVwbGFjZScsIGInXFx1ZGM4MCcpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ25hbWVyZXBsYWNlJywgYidcXHVkYzgwJyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCi0gICAgICAgICAgICApKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKCgnXHVkYzgwJywgJ3N0cmljdCcsIGInXHhlZFx4YjJceDgwJykpCiAgICAgICAgIGZvciB0ZXh0LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtODQ1LDE3ICs4NjksMTAgQEAKICAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKICAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXHVmZmZkXScpLAogICAgICAgICBdCi0gICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgotICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdpZ25vcmUnLCAnW10nKSwKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRcdWZmZmRdJyksCi0gICAgICAgICAgICApKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCAnW1x1ZGM4MF0nKSwKLSAgICAgICAgICAgICkpCiAgICAgICAgIGZvciByYXcsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CiAgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC04NzAsNyArODg3LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIHJhdy5kZWNvZGUsICdjcDY1MDAxJywgZXJyb3JzKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQogICAgIGRlZiB0ZXN0X2xvbmVfc3Vycm9nYXRlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCAiXHVkODAwIi5lbmNvZGUsICJjcDY1MDAxIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiIlx4ZWRceGEwXHg4MCIuZGVjb2RlLCAiY3A2NTAwMSIpCkBAIC04ODcsNyArOTAzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYidbP10nKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQogICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZXBhc3NfaGFuZGxlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKQEAgLTEwNTksNiArMTA3NCw3IEBACiAKIGNsYXNzIFVURjhTaWdUZXN0KFVURjhUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTgtc2lnIgorICAgIEJPTSA9IGNvZGVjcy5CT01fVVRGOAogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19wYXJ0aWFsKApAQCAtMTE1OSw3ICsxMTc1LDcgQEAKICAgICAgICAgY2hlY2soYiJbXFxcbl0iLCBiIltdIikKICAgICAgICAgY2hlY2soYnInW1wiXScsIGInWyJdJykKICAgICAgICAgY2hlY2soYnIiW1wnXSIsIGIiWyddIikKLSAgICAgICAgY2hlY2soYnIiW1xcXSIsIGJyIltcXSIpCisgICAgICAgIGNoZWNrKGJyIltcXF0iLCBiIltcXF0iKQogICAgICAgICBjaGVjayhiciJbXGFdIiwgYiJbXHgwN10iKQogICAgICAgICBjaGVjayhiciJbXGJdIiwgYiJbXHgwOF0iKQogICAgICAgICBjaGVjayhiciJbXHRdIiwgYiJbXHgwOV0iKQpAQCAtMTE2OCw3ICsxMTg0LDYgQEAKICAgICAgICAgY2hlY2soYnIiW1xmXSIsIGIiW1x4MGNdIikKICAgICAgICAgY2hlY2soYnIiW1xyXSIsIGIiW1x4MGRdIikKICAgICAgICAgY2hlY2soYnIiW1w3XSIsIGIiW1x4MDddIikKLSAgICAgICAgY2hlY2soYnIiW1w4XSIsIGJyIltcOF0iKQogICAgICAgICBjaGVjayhiciJbXDc4XSIsIGIiW1x4MDc4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDFdIiwgYiJbIV0iKQogICAgICAgICBjaGVjayhiciJbXDQxOF0iLCBiIlshOF0iKQpAQCAtMTE3NiwxMiArMTE5MSwxOCBAQAogICAgICAgICBjaGVjayhiciJbXDEwMTBdIiwgYiJbQTBdIikKICAgICAgICAgY2hlY2soYnIiW1w1MDFdIiwgYiJbQV0iKQogICAgICAgICBjaGVjayhiciJbXHg0MV0iLCBiIltBXSIpCi0gICAgICAgIGNoZWNrKGJyIltcWDQxXSIsIGJyIltcWDQxXSIpCiAgICAgICAgIGNoZWNrKGJyIltceDQxMF0iLCBiIltBMF0iKQotICAgICAgICBmb3IgYiBpbiByYW5nZSgyNTYpOgotICAgICAgICAgICAgaWYgYiBub3QgaW4gYidcbiJcJ1xcYWJ0bnZmcjAxMjM0NTY3eCc6Ci0gICAgICAgICAgICAgICAgYiA9IGJ5dGVzKFtiXSkKLSAgICAgICAgICAgICAgICBjaGVjayhiJ1xcJyArIGIsIGInXFwnICsgYikKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOTcsIDEyMyk6CisgICAgICAgICAgICBiID0gYnl0ZXMoW2ldKQorICAgICAgICAgICAgaWYgYiBub3QgaW4gYidhYmZucnR2eCc6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYiwgYiJcXCIgKyBiKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLnVwcGVyKCksIGIiXFwiICsgYi51cHBlcigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw4IiwgYiJcXDgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw5IiwgYiJcXDkiKQogCiAgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgogICAgICAgICBkZWNvZGUgPSBjb2RlY3MuZXNjYXBlX2RlY29kZQpAQCAtMTE5NCw2ICsxMjE1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGUoYnIiW1x4MF1ceDAiLCAiaWdub3JlIiksIChiIltdIiwgOCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlKGJyIltceDBdXHgwIiwgInJlcGxhY2UiKSwgKGIiWz9dPyIsIDgpKQogCisKIGNsYXNzIFJlY29kaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVjb2Rpbmcoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKQEAgLTEzMTMsNiArMTMzNSw3IEBACiAgICAgaWYgbGVuKGkpIT0yOgogICAgICAgICBwcmludChyZXByKGkpKQogCisKIGNsYXNzIFB1bnljb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgogICAgICAgICBmb3IgdW5pLCBwdW55IGluIHB1bnljb2RlX3Rlc3RjYXNlczoKQEAgLTEzMzIsNiArMTM1NSw3IEBACiAgICAgICAgICAgICBwdW55ID0gcHVueS5kZWNvZGUoImFzY2lpIikuZW5jb2RlKCJhc2NpaSIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaSwgcHVueS5kZWNvZGUoInB1bnljb2RlIikpCiAKKwogY2xhc3MgVW5pY29kZUludGVybmFsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9idWcxMjUxMzAwKHNlbGYpOgpAQCAtMTU4Niw2ICsxNjEwLDcgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiVGVzdCAzLiVkOiAlcyIgJSAocG9zKzEsIHN0cihlKSkpCiAKKwogY2xhc3MgSUROQUNvZGVjVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYnVpbHRpbl9kZWNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGIicHl0aG9uLm9yZyIsICJpZG5hIiksICJweXRob24ub3JnIikKQEAgLTE2NzIsNiArMTY5Nyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgYiJweXRob24ub3JnIi5kZWNvZGUsICJpZG5hIiwgZXJyb3JzKQogCisKIGNsYXNzIENvZGVjc01vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgpAQCAtMTc4MCw2ICsxODA2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwKICAgICAgICAgICAgICAgICBjb2RlY3MuZGVjb2RlLCBiJ2FiYycsICd1bmRlZmluZWQnLCBlcnJvcnMpCiAKKwogY2xhc3MgU3RyZWFtUmVhZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xNzkwLDYgKzE4MTcsNyBAQAogICAgICAgICBmID0gc2VsZi5yZWFkZXIoc2VsZi5zdHJlYW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgWydcdWQ1NWNcbicsICdcdWFlMDAnXSkKIAorCiBjbGFzcyBFbmNvZGVkRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CkBAIC0xOTA5LDYgKzE5MzcsOCBAQAogCiBpZiBoYXNhdHRyKGNvZGVjcywgIm1iY3NfZW5jb2RlIik6CiAgICAgYWxsX3VuaWNvZGVfZW5jb2RpbmdzLmFwcGVuZCgibWJjcyIpCitpZiBoYXNhdHRyKGNvZGVjcywgIm9lbV9lbmNvZGUiKToKKyAgICBhbGxfdW5pY29kZV9lbmNvZGluZ3MuYXBwZW5kKCJvZW0iKQogCiAjIFRoZSBmb2xsb3dpbmcgZW5jb2RpbmcgaXMgbm90IHRlc3RlZCwgYmVjYXVzZSBpdCdzIG5vdCBzdXBwb3NlZAogIyB0byB3b3JrOgpAQCAtMTkyMCw2ICsxOTUwLDcgQEAKICAgICAidW5pY29kZV9pbnRlcm5hbCIKIF0KIAorCiBjbGFzcyBCYXNpY1VuaWNvZGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBNaXhJbkNoZWNrU3RhdGVIYW5kbGluZyk6CiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgogICAgICAgICBzID0gImFiYzEyMyIgICMgYWxsIGNvZGVjcyBzaG91bGQgYmUgYWJsZSB0byBlbmNvZGUgdGhlc2UKQEAgLTIwODIsNiArMjExMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0ZV9oYW5kbGluZ19kZWNvZGUoZW5jb2RpbmcsIHUsIHUuZW5jb2RlKGVuY29kaW5nKSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXRlX2hhbmRsaW5nX2VuY29kZShlbmNvZGluZywgdSwgdS5lbmNvZGUoZW5jb2RpbmcpKQogCisKIGNsYXNzIENoYXJtYXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZWNvZGVfd2l0aF9zdHJpbmdfbWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMjMzMiw2ICsyMzY0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uc3RyZWFtd3JpdGVyLCAnc3RyaWN0JykgYXMgc3J3OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcncucmVhZCgpLCAiXHhmYyIpCiAKKwogY2xhc3MgVHlwZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZWNvZGVfdW5pY29kZShzZWxmKToKICAgICAgICAgIyBNb3N0IGRlY29kZXJzIGRvbid0IGFjY2VwdCB1bmljb2RlIGlucHV0CkBAIC0yNDIwLDcgKzI0NTMsNiBAQAogICAgICAgICBjaGVjayhiciJbXGZdIiwgIltceDBjXSIpCiAgICAgICAgIGNoZWNrKGJyIltccl0iLCAiW1x4MGRdIikKICAgICAgICAgY2hlY2soYnIiW1w3XSIsICJbXHgwN10iKQotICAgICAgICBjaGVjayhiciJbXDhdIiwgciJbXDhdIikKICAgICAgICAgY2hlY2soYnIiW1w3OF0iLCAiW1x4MDc4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDFdIiwgIlshXSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDE4XSIsICJbIThdIikKQEAgLTI0MzAsOSArMjQ2MiwxOCBAQAogICAgICAgICBjaGVjayhiciJbXHg0MTBdIiwgIltBMF0iKQogICAgICAgICBjaGVjayhiciJcdTIwYWMiLCAiXHUyMGFjIikKICAgICAgICAgY2hlY2soYnIiXFUwMDAxZDEyMCIsICJcVTAwMDFkMTIwIikKLSAgICAgICAgZm9yIGIgaW4gcmFuZ2UoMjU2KToKLSAgICAgICAgICAgIGlmIGIgbm90IGluIGInXG4iXCdcXGFidG52ZnIwMTIzNDU2N3h1VU4nOgotICAgICAgICAgICAgICAgIGNoZWNrKGInXFwnICsgYnl0ZXMoW2JdKSwgJ1xcJyArIGNocihiKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOTcsIDEyMyk6CisgICAgICAgICAgICBiID0gYnl0ZXMoW2ldKQorICAgICAgICAgICAgaWYgYiBub3QgaW4gYidhYmZucnR1dngnOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIsICJcXCIgKyBjaHIoaSkpCisgICAgICAgICAgICBpZiBiLnVwcGVyKCkgbm90IGluIGInVU4nOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIudXBwZXIoKSwgIlxcIiArIGNocihpLTMyKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOCIsICJcXDgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw5IiwgIlxcOSIpCiAKICAgICBkZWYgdGVzdF9kZWNvZGVfZXJyb3JzKHNlbGYpOgogICAgICAgICBkZWNvZGUgPSBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlCkBAIC0yNjQyLDYgKzI2ODMsNyBAQAogICAgIGJ5dGVzX3RyYW5zZm9ybV9lbmNvZGluZ3MuYXBwZW5kKCJiejJfY29kZWMiKQogICAgIHRyYW5zZm9ybV9hbGlhc2VzWyJiejJfY29kZWMiXSA9IFsiYnoyIl0KIAorCiBjbGFzcyBUcmFuc2Zvcm1Db2RlY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgpAQCAtMjY5NCw4ICsyNzM2LDggQEAKICAgICAgICAgYmFkX2lucHV0ID0gImJhZCBpbnB1dCB0eXBlIgogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gYnl0ZXNfdHJhbnNmb3JtX2VuY29kaW5nczoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVuY29kaW5nPWVuY29kaW5nKToKLSAgICAgICAgICAgICAgICBmbXQgPSAoICJ7IXJ9IGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgIGZtdCA9IChyInshcn0gaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgorICAgICAgICAgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgICAgICAgICAgbXNnID0gZm10LmZvcm1hdChlbmNvZGluZykKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZykgYXMgZmFpbHVyZToKICAgICAgICAgICAgICAgICAgICAgYmFkX2lucHV0LmVuY29kZShlbmNvZGluZykKQEAgLTI3MDQsNyArMjc0Niw3IEBACiAgICAgZGVmIHRlc3RfdGV4dF90b19iaW5hcnlfYmxhY2tsaXN0c190ZXh0X3RyYW5zZm9ybXMoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgc3RyLmVuY29kZSBnaXZlcyBhIGdvb2QgZXJyb3IgbWVzc2FnZSBmb3Igc3RyIC0+IHN0ciBjb2RlY3MKICAgICAgICAgbXNnID0gKHIiXidyb3RfMTMnIGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpOgogICAgICAgICAgICAgImp1c3QgYW4gZXhhbXBsZSBtZXNzYWdlIi5lbmNvZGUoInJvdF8xMyIpCiAKQEAgLTI3MTYsNyArMjc1OCw3IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChlbmNvZGluZz1lbmNvZGluZyk6CiAgICAgICAgICAgICAgICAgZW5jb2RlZF9kYXRhID0gY29kZWNzLmVuY29kZShkYXRhLCBlbmNvZGluZykKICAgICAgICAgICAgICAgICBmbXQgPSAociJ7IXJ9IGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgICAgICAgICAgbXNnID0gZm10LmZvcm1hdChlbmNvZGluZykKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfZGF0YS5kZWNvZGUoZW5jb2RpbmcpCkBAIC0yNzI4LDcgKzI3NzAsNyBAQAogICAgICAgICBmb3IgYmFkX2lucHV0IGluIChiImltbXV0YWJsZSIsIGJ5dGVhcnJheShiIm11dGFibGUiKSk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChiYWRfaW5wdXQ9YmFkX2lucHV0KToKICAgICAgICAgICAgICAgICBtc2cgPSAociJeJ3JvdF8xMycgaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgotICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZykgYXMgZmFpbHVyZToKICAgICAgICAgICAgICAgICAgICAgYmFkX2lucHV0LmRlY29kZSgicm90XzEzIikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmYWlsdXJlLmV4Y2VwdGlvbi5fX2NhdXNlX18pCkBAIC0yOTQ3LDEyICsyOTg5LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgYiJub3Qgc3RyISIpCiAgICAgICAgICMgVGV4dCBtb2RlbCBtZXRob2RzIHNob3VsZCBjb21wbGFpbgogICAgICAgICBmbXQgPSAociJeeyFyfSBlbmNvZGVyIHJldHVybmVkICdzdHInIGluc3RlYWQgb2YgJ2J5dGVzJzsgIgotICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gZW5jb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQorICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gZW5jb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQogICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KHNlbGYuY29kZWNfbmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgICJzdHJfaW5wdXQiLmVuY29kZShzZWxmLmNvZGVjX25hbWUpCiAgICAgICAgIGZtdCA9IChyIl57IXJ9IGRlY29kZXIgcmV0dXJuZWQgJ2J5dGVzJyBpbnN0ZWFkIG9mICdzdHInOyAiCi0gICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBkZWNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCisgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBkZWNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCiAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoc2VsZi5jb2RlY19uYW1lKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgYiJieXRlcyBpbnB1dCIuZGVjb2RlKHNlbGYuY29kZWNfbmFtZSkKQEAgLTMwOTMsMTEgKzMxMzUsMTAgQEAKICAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ2lnbm9yZScsICdcVTAwMTBmZmZmJyksCiAgICAgICAgICAgICAoYidceGZmXHhmNFx4OGZceGJmXHhiZicsICdyZXBsYWNlJywgJ1x1ZmZmZFxVMDAxMGZmZmYnKSwKICAgICAgICAgKSkKLSAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrX2VuY29kZShzZWxmLkNQX1VURjgsICgKLSAgICAgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdpZ25vcmUnLCBiJ1tceGY0XHg4Zlx4YmZceGJmXScpLAotICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ3JlcGxhY2UnLCBiJ1tceGY0XHg4Zlx4YmZceGJmP10nKSwKLSAgICAgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAnaWdub3JlJywgYidbXHhmNFx4OGZceGJmXHhiZl0nKSwKKyAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ3JlcGxhY2UnLCBiJ1tceGY0XHg4Zlx4YmZceGJmP10nKSwKKyAgICAgICAgKSkKIAogICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsKHNlbGYpOgogICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLCBiJ1x4ODInLCAnc3RyaWN0JywgRmFsc2UpCkBAIC0zMTE4LDYgKzMxNTksOTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnYWJjJywgMykpCiAKKyAgICBkZWYgdGVzdF9tYmNzX2FsaWFzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbG9va2luZyB1cCBvdXIgJ2RlZmF1bHQnIGNvZGVwYWdlIHdpbGwgcmV0dXJuCisgICAgICAgICMgbWJjcyB3aGVuIHdlIGRvbid0IGhhdmUgYSBtb3JlIHNwZWNpZmljIG9uZSBhdmFpbGFibGUKKyAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCisgICAgICAgIGRlZiBfZ2V0X2Zha2VfY29kZXBhZ2UoKmEpOgorICAgICAgICAgICAgcmV0dXJuICdjcDEyMycKKyAgICAgICAgb2xkX2dldHByZWZlcnJlZGVuY29kaW5nID0gX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcKKyAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBfZ2V0X2Zha2VfY29kZXBhZ2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29kZWMgPSBjb2RlY3MubG9va3VwKCdjcDEyMycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjLm5hbWUsICdtYmNzJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nID0gb2xkX2dldHByZWZlcnJlZGVuY29kaW5nCisKKworY2xhc3MgQVNDSUlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYzEyMycuZW5jb2RlKCdhc2NpaScpLCBiJ2FiYzEyMycpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY10nLCAnaWdub3JlJywgYidbXScpLAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNdJywgJ3JlcGxhY2UnLCBiJ1s/Pz9dJyksCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY10nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzEyODsmIzI1NTsmIzgzNjQ7XScpLAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNcVTAwMGFiY2RlXScsICdiYWNrc2xhc2hyZXBsYWNlJywKKyAgICAgICAgICAgICBiJ1tcXHg4MFxceGZmXFx1MjBhY1xcVTAwMGFiY2RlXScpLAorICAgICAgICAgICAgKCdbXHVkYzgwXHVkY2ZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1tceDgwXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5lbmNvZGUoJ2FzY2lpJywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kZV9zdXJyb2dhdGVlc2NhcGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yKToKKyAgICAgICAgICAgICMgdGhlIGZpcnN0IGNoYXJhY3RlciBjYW4gYmUgZGVjb2RlZCwgYnV0IG5vdCB0aGUgc2Vjb25kCisgICAgICAgICAgICAnXHVkYzgwXHhmZicuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYWJjJy5kZWNvZGUoJ2FzY2lpJyksICdhYmMnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGM4MFx1ZGNmZl0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnYmFja3NsYXNocmVwbGFjZScsICdbXFx4ODBcXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoJ2FzY2lpJywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworCitjbGFzcyBMYXRpbjFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ2FiYycsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x4ODBceGU5XHhmZicsIGInXHg4MFx4ZTlceGZmJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZW5jb2RlKCdsYXRpbjEnKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZXJyb3JzKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdbXHUyMGFjXHVkYzgwXScsICdpZ25vcmUnLCBiJ1tdJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNcdWRjODBdJywgJ3JlcGxhY2UnLCBiJ1s/P10nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY1xVMDAwYWJjZGVdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLAorICAgICAgICAgICAgIGInW1xcdTIwYWNcXFUwMDBhYmNkZV0nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY1x1ZGM4MF0nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzgzNjQ7JiM1NjQ0ODtdJyksCisgICAgICAgICAgICAoJ1tcdWRjODBcdWRjZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsIGInW1x4ODBceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmVuY29kZSgnbGF0aW4xJywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kZV9zdXJyb2dhdGVlc2NhcGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yKToKKyAgICAgICAgICAgICMgdGhlIGZpcnN0IGNoYXJhY3RlciBjYW4gYmUgZGVjb2RlZCwgYnV0IG5vdCB0aGUgc2Vjb25kCisgICAgICAgICAgICAnXHVkYzgwXHUyMGFjJy5lbmNvZGUoJ2xhdGluMScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKGInYWJjJywgJ2FiYycpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdbXHg4MFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCdsYXRpbjEnKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKaW5kZXggNTA5YmY1ZC4uOThkYTI2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKQEAgLTI4Miw3ICsyODIsNiBAQAogICAgICAgICBhaSgiaWYgKGEgPT0gMSBhbmQgYiA9IDIpOiBwYXNzIikKIAogICAgICAgICBhaSgiZGVsIDEiKQotICAgICAgICBhaSgiZGVsICgpIikKICAgICAgICAgYWkoImRlbCAoMSwpIikKICAgICAgICAgYWkoImRlbCBbMV0iKQogICAgICAgICBhaSgiZGVsICcxJyIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQppbmRleCA1MjM4MzgyLi41MmZmMjU2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKQEAgLTIwLDEwICsyMCwxMCBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQXdhaXRhYmxlLCBDb3JvdXRpbmUsIEFzeW5jSXRlcmF0b3IsIEFzeW5jSXRlcmFibGUKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBHZW5lcmF0b3IKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIEdlbmVyYXRvciwgUmV2ZXJzaWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlLCBDb2xsZWN0aW9uCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0Ci1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIEl0ZW1zVmlldywgVmFsdWVzVmlldwogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNlcXVlbmNlLCBNdXRhYmxlU2VxdWVuY2UKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBCeXRlU3RyaW5nCiAKQEAgLTI0Miw2ICsyNDIsMTAgQEAKICAgICAgICAgXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZWR0dXBsZSgnTlQnLCBzcGVjLCByZW5hbWU9VHJ1ZSkuX2ZpZWxkcywgcmVuYW1lZCkKIAorICAgIGRlZiB0ZXN0X21vZHVsZV9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ3gnLCAneSddLCBtb2R1bGU9Y29sbGVjdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlQuX19tb2R1bGVfXywgY29sbGVjdGlvbnMpCisKICAgICBkZWYgdGVzdF9pbnN0YW5jZShzZWxmKToKICAgICAgICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKQogICAgICAgICBwID0gUG9pbnQoMTEsIDIyKQpAQCAtNDEyLDYgKzQxNiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5UQ29sb3IuX2ZpZWxkcywgKCdyZWQnLCAnZ3JlZW4nLCAnYmx1ZScpKQogICAgICAgICBnbG9iYWxzKCkucG9wKCdOVENvbG9yJywgTm9uZSkgICAgICAgICAgIyBjbGVhbi11cCBhZnRlciB0aGlzIHRlc3QKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRfb25seV9hcmd1bWVudHMoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlIDI1NjI4CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyB0ZW1wbGF0ZToKKyAgICAgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ3gnLCAneSddLCB2ZXJib3NlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NsYXNzIE5UJywgTlQuX3NvdXJjZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsneCcsICd5J10sIFRydWUpCisKKyAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsnYWJjJywgJ2RlZiddLCByZW5hbWU9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVC5fZmllbGRzLCAoJ2FiYycsICdfMScpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWydhYmMnLCAnZGVmJ10sIEZhbHNlLCBUcnVlKQogCiAgICAgZGVmIHRlc3RfbmFtZWR0dXBsZV9zdWJjbGFzc19pc3N1ZV8yNDkzMShzZWxmKToKICAgICAgICAgY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnX1BvaW50JywgWyd4JywgJ3knXSkpOgpAQCAtNDg3LDYgKzUwMyw5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3RoZXIucmlnaHRfc2lkZSwnUmlnaHQgc2lkZSBub3QgY2FsbGVkIGZvciAlcy4lcycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh0eXBlKGluc3RhbmNlKSwgbmFtZSkpCiAKK2RlZiBfdGVzdF9nZW4oKToKKyAgICB5aWVsZAorCiBjbGFzcyBUZXN0T25lVHJpY2tQb255QUJDcyhBQkNUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9Bd2FpdGFibGUoc2VsZik6CkBAIC02NzQsNyArNjkzLDcgQEAKICAgICAgICAgc2FtcGxlcyA9IFtieXRlcygpLCBzdHIoKSwKICAgICAgICAgICAgICAgICAgICB0dXBsZSgpLCBsaXN0KCksIHNldCgpLCBmcm96ZW5zZXQoKSwgZGljdCgpLAogICAgICAgICAgICAgICAgICAgIGRpY3QoKS5rZXlzKCksIGRpY3QoKS5pdGVtcygpLCBkaWN0KCkudmFsdWVzKCksCi0gICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgpAQCAtNjg4LDYgKzcwNywxNjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHN0ciwgSSkpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhJdGVyYWJsZSwgJ19faXRlcl9fJykKICAgICAgICAgc2VsZi52YWxpZGF0ZV9pc2luc3RhbmNlKEl0ZXJhYmxlLCAnX19pdGVyX18nKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcKKyAgICAgICAgY2xhc3MgSXQ6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICBjbGFzcyBJdEJsb2NrZWQoSXQpOgorICAgICAgICAgICAgX19pdGVyX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEl0LCBJdGVyYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKEl0KCksIEl0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEl0QmxvY2tlZCwgSXRlcmFibGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoSXRCbG9ja2VkKCksIEl0ZXJhYmxlKSkKKworICAgIGRlZiB0ZXN0X1JldmVyc2libGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgc29tZSBub24tcmV2ZXJzaWJsZXMKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLCBkaWN0KCksIHNldCgpLCBmcm96ZW5zZXQoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgUmV2ZXJzaWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBSZXZlcnNpYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1yZXZlcnNpYmxlIGl0ZXJhYmxlcworICAgICAgICBub25fcmV2ZXJzaWJsZXMgPSBbZGljdCgpLmtleXMoKSwgZGljdCgpLml0ZW1zKCksIGRpY3QoKS52YWx1ZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIoKSwgQ291bnRlcigpLmtleXMoKSwgQ291bnRlcigpLml0ZW1zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyKCkudmFsdWVzKCksIF90ZXN0X2dlbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLCBpdGVyKFtdKSwgcmV2ZXJzZWQoW10pXQorICAgICAgICBmb3IgeCBpbiBub25fcmV2ZXJzaWJsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgUmV2ZXJzaWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBSZXZlcnNpYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIHJldmVyc2libGUgaXRlcmFibGVzCisgICAgICAgIHNhbXBsZXMgPSBbYnl0ZXMoKSwgc3RyKCksIHR1cGxlKCksIGxpc3QoKSwgT3JkZXJlZERpY3QoKSwKKyAgICAgICAgICAgICAgICAgICBPcmRlcmVkRGljdCgpLmtleXMoKSwgT3JkZXJlZERpY3QoKS5pdGVtcygpLAorICAgICAgICAgICAgICAgICAgIE9yZGVyZWREaWN0KCkudmFsdWVzKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgUmV2ZXJzaWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIFJldmVyc2libGUpLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIGFsc28gTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIGFuZCBTZXF1ZW5jZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXF1ZW5jZSwgUmV2ZXJzaWJsZSksIHJlcHIoU2VxdWVuY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoTWFwcGluZywgUmV2ZXJzaWJsZSksIHJlcHIoTWFwcGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhNdXRhYmxlTWFwcGluZywgUmV2ZXJzaWJsZSksIHJlcHIoTXV0YWJsZU1hcHBpbmcpKQorICAgICAgICAjIENoZWNrIGRpcmVjdCBzdWJjbGFzc2luZworICAgICAgICBjbGFzcyBSKFJldmVyc2libGUpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIobGlzdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQoUigpKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoZmxvYXQsIFIpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoUmV2ZXJzaWJsZSwgJ19fcmV2ZXJzZWRfXycsICdfX2l0ZXJfXycpCisgICAgICAgICMgQ2hlY2sgcmV2ZXJzaWJsZSBub24taXRlcmFibGUgKHdoaWNoIGlzIG5vdCBSZXZlcnNpYmxlKQorICAgICAgICBjbGFzcyBSZXZOb0l0ZXI6CisgICAgICAgICAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOiByZXR1cm4gcmV2ZXJzZWQoW10pCisgICAgICAgIGNsYXNzIFJldlBsdXNJdGVyKFJldk5vSXRlcik6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoUmV2Tm9JdGVyLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFJldk5vSXRlcigpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoUmV2UGx1c0l0ZXIsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShSZXZQbHVzSXRlcigpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nCisgICAgICAgIGNsYXNzIFJldjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOiByZXR1cm4gcmV2ZXJzZWQoW10pCisgICAgICAgIGNsYXNzIFJldkl0QmxvY2tlZChSZXYpOgorICAgICAgICAgICAgX19pdGVyX18gPSBOb25lCisgICAgICAgIGNsYXNzIFJldlJldkJsb2NrZWQoUmV2KToKKyAgICAgICAgICAgIF9fcmV2ZXJzZWRfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoUmV2LCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoUmV2KCksIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoUmV2SXRCbG9ja2VkLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFJldkl0QmxvY2tlZCgpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFJldlJldkJsb2NrZWQsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoUmV2UmV2QmxvY2tlZCgpLCBSZXZlcnNpYmxlKSkKKworICAgIGRlZiB0ZXN0X0NvbGxlY3Rpb24oc2VsZik6CisgICAgICAgICMgQ2hlY2sgc29tZSBub24tY29sbGVjdGlvbnMKKyAgICAgICAgbm9uX2NvbGxlY3Rpb25zID0gW05vbmUsIDQyLCAzLjE0LCAxaiwgbGFtYmRhIHg6IDIqeF0KKyAgICAgICAgZm9yIHggaW4gbm9uX2NvbGxlY3Rpb25zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIENvbGxlY3Rpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgQ29sbGVjdGlvbiksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSBub24tY29sbGVjdGlvbiBpdGVyYWJsZXMKKyAgICAgICAgbm9uX2NvbF9pdGVyYWJsZXMgPSBbX3Rlc3RfZ2VuKCksIGl0ZXIoYicnKSwgaXRlcihieXRlYXJyYXkoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwgZGljdCgpLnZhbHVlcygpXQorICAgICAgICBmb3IgeCBpbiBub25fY29sX2l0ZXJhYmxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBDb2xsZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIENvbGxlY3Rpb24pLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgY29sbGVjdGlvbnMKKyAgICAgICAgc2FtcGxlcyA9IFtzZXQoKSwgZnJvemVuc2V0KCksIGRpY3QoKSwgYnl0ZXMoKSwgc3RyKCksIHR1cGxlKCksCisgICAgICAgICAgICAgICAgICAgbGlzdCgpLCBkaWN0KCkua2V5cygpLCBkaWN0KCkuaXRlbXMoKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBDb2xsZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgQ29sbGVjdGlvbiksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgYWxzbyBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgZXRjLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXF1ZW5jZSwgQ29sbGVjdGlvbiksIHJlcHIoU2VxdWVuY2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYXBwaW5nLCBDb2xsZWN0aW9uKSwgcmVwcihNYXBwaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTXV0YWJsZU1hcHBpbmcsIENvbGxlY3Rpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihNdXRhYmxlTWFwcGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNldCwgQ29sbGVjdGlvbiksIHJlcHIoU2V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTXV0YWJsZVNldCwgQ29sbGVjdGlvbiksIHJlcHIoTXV0YWJsZVNldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNlcXVlbmNlLCBDb2xsZWN0aW9uKSwgcmVwcihNdXRhYmxlU2V0KSkKKyAgICAgICAgIyBDaGVjayBkaXJlY3Qgc3ViY2xhc3NpbmcKKyAgICAgICAgY2xhc3MgQ29sKENvbGxlY3Rpb24pOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBEZXJDb2woQ29sKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihDb2woKSkpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGxpc3QsIENvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzZXQsIENvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhmbG9hdCwgQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoRGVyQ29sKCkpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhsaXN0LCBEZXJDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc2V0LCBEZXJDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoZmxvYXQsIERlckNvbCkpCisgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhDb2xsZWN0aW9uLCAnX19sZW5fXycsICdfX2l0ZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19jb250YWluc19fJykKKyAgICAgICAgIyBDaGVjayBzaXplZCBjb250YWluZXIgbm9uLWl0ZXJhYmxlICh3aGljaCBpcyBub3QgQ29sbGVjdGlvbikgZXRjLgorICAgICAgICBjbGFzcyBDb2xOb0l0ZXI6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6IHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBDb2xOb1NpemU6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKTogcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIENvbE5vQ29udDoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDAKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbE5vSXRlciwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShDb2xOb0l0ZXIoKSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb2xOb1NpemUsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoQ29sTm9TaXplKCksIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29sTm9Db250LCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvbE5vQ29udCgpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nCisgICAgICAgIGNsYXNzIFNpemVCbG9jazoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYpOiByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIF9fbGVuX18gPSBOb25lCisgICAgICAgIGNsYXNzIEl0ZXJCbG9jazoKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmKTogcmV0dXJuIFRydWUKKyAgICAgICAgICAgIF9faXRlcl9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoU2l6ZUJsb2NrLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFNpemVCbG9jaygpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEl0ZXJCbG9jaywgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShJdGVyQmxvY2soKSwgQ29sbGVjdGlvbikpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZyBpbiBzdWJjbGFzcworICAgICAgICBjbGFzcyBDb2xJbXBsOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBOb25Db2woQ29sSW1wbCk6CisgICAgICAgICAgICBfX2NvbnRhaW5zX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhOb25Db2wsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoTm9uQ29sKCksIENvbGxlY3Rpb24pKQorCiAKICAgICBkZWYgdGVzdF9JdGVyYXRvcihzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLCBiIiIsICIiLCAoKSwgW10sIHt9LCBzZXQoKV0KQEAgLTY5OSw3ICs4NzMsNyBAQAogICAgICAgICAgICAgICAgICAgIGl0ZXIoc2V0KCkpLCBpdGVyKGZyb3plbnNldCgpKSwKICAgICAgICAgICAgICAgICAgICBpdGVyKGRpY3QoKS5rZXlzKCkpLCBpdGVyKGRpY3QoKS5pdGVtcygpKSwKICAgICAgICAgICAgICAgICAgICBpdGVyKGRpY3QoKS52YWx1ZXMoKSksCi0gICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgpAQCAtNzg3LDcgKzk2MSw3IEBACiAKICAgICBkZWYgdGVzdF9TaXplZChzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLAotICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgpAQCAtODA1LDcgKzk3OSw3IEBACiAKICAgICBkZWYgdGVzdF9Db250YWluZXIoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKQEAgLTgyNCw3ICs5OTgsNyBAQAogICAgIGRlZiB0ZXN0X0NhbGxhYmxlKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosCiAgICAgICAgICAgICAgICAgICAgICAgICIiLCBiIiIsICgpLCBbXSwge30sIHNldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgpAQCAtODQyLDE0ICsxMDE2LDE0IEBACiAgICAgICAgIHNlbGYudmFsaWRhdGVfaXNpbnN0YW5jZShDYWxsYWJsZSwgJ19fY2FsbF9fJykKIAogICAgIGRlZiB0ZXN0X2RpcmVjdF9zdWJjbGFzc2luZyhzZWxmKToKLSAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CisgICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFJldmVyc2libGUsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgogICAgICAgICAgICAgY2xhc3MgQyhCKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCBCKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhpbnQsIEMpKQogCiAgICAgZGVmIHRlc3RfcmVnaXN0cmF0aW9uKHNlbGYpOgotICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKKyAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgUmV2ZXJzaWJsZSwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CiAgICAgICAgICAgICBjbGFzcyBDOgogICAgICAgICAgICAgICAgIF9faGFzaF9fID0gTm9uZSAgIyBNYWtlIHN1cmUgaXQgaXNuJ3QgaGFzaGFibGUgYnkgZGVmYXVsdAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEMsIEIpLCBCLl9fbmFtZV9fKQpAQCAtMTA0OSw2ICsxMjIzLDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmNzID4gY3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuY3MgPj0gY3MpCiAKKyAgICBkZWYgdGVzdF9pc3N1ZTI2OTE1KHNlbGYpOgorICAgICAgICAjIENvbnRhaW5lciBtZW1iZXJzaGlwIHRlc3Qgc2hvdWxkIGNoZWNrIGlkZW50aXR5IGZpcnN0CisgICAgICAgIGNsYXNzIEN1c3RvbUVxdWFsT2JqZWN0OgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIEN1c3RvbVNlcXVlbmNlKGxpc3QpOgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFNlcXVlbmNlLl9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSkKKworICAgICAgICBuYW4gPSBmbG9hdCgnbmFuJykKKyAgICAgICAgb2JqID0gQ3VzdG9tRXF1YWxPYmplY3QoKQorICAgICAgICBjb250YWluZXJzID0gWworICAgICAgICAgICAgQ3VzdG9tU2VxdWVuY2UoW25hbiwgb2JqXSksCisgICAgICAgICAgICBJdGVtc1ZpZXcoezE6IG5hbiwgMjogb2JqfSksCisgICAgICAgICAgICBWYWx1ZXNWaWV3KHsxOiBuYW4sIDI6IG9ian0pCisgICAgICAgIF0KKyAgICAgICAgZm9yIGNvbnRhaW5lciBpbiBjb250YWluZXJzOgorICAgICAgICAgICAgZm9yIGVsZW0gaW4gY29udGFpbmVyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgY29udGFpbmVyKQorCiAgICAgZGVmIGFzc2VydFNhbWVTZXQoc2VsZiwgczEsIHMyKToKICAgICAgICAgIyBjb2VyY2UgYm90aCB0byBhIHJlYWwgc2V0IHRoZW4gY2hlY2sgZXF1YWxpdHkKICAgICAgICAgc2VsZi5hc3NlcnRTZXRFcXVhbChzZXQoczEpLCBzZXQoczIpKQpAQCAtMTIxOSw2ICsxNDEzLDcgQEAKICAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcigoKSkKICAgICAgICAgc2VsZi52YWxpZGF0ZV9jb21wYXJpc29uKE15TWFwcGluZygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBNeU1hcHBpbmcoKSkKIAogICAgIGRlZiB0ZXN0X011dGFibGVNYXBwaW5nKHNlbGYpOgogICAgICAgICBmb3Igc2FtcGxlIGluIFtkaWN0XToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQppbmRleCA4MjRlODQzLi40MDllYzg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CkBAIC00NzMsMTAgKzQ3MywxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHsxOiAyLCAzOiA0fSkKIAogICAgIGRlZiB0ZXN0X2NvbXBpbGVfZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIGZvciBmaWxlbmFtZSBpbiAoJ2ZpbGUucHknLCBiJ2ZpbGUucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKSk6CisgICAgICAgIGZvciBmaWxlbmFtZSBpbiAnZmlsZS5weScsIGInZmlsZS5weSc6CiAgICAgICAgICAgICBjb2RlID0gY29tcGlsZSgncGFzcycsIGZpbGVuYW1lLCAnZXhlYycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKCdwYXNzJywgZmlsZW5hbWUsICdleGVjJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBpbGUsICdwYXNzJywgbGlzdChiJ2ZpbGUucHknKSwgJ2V4ZWMnKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CkBAIC02NjEsNiArNjY0LDE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMSgwKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYyKDAuMCkpCiAKKyAgICBkZWYgdGVzdF9wYXRoX2xpa2Vfb2JqZWN0cyhzZWxmKToKKyAgICAgICAgIyBBbiBpbXBsaWNpdCB0ZXN0IGZvciBQeVVuaWNvZGVfRlNEZWNvZGVyKCkuCisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAorCisgICAgICAgIGNvbXBpbGUoIjQyIiwgUGF0aExpa2UoInRlc3RfY29tcGlsZV9wYXRobGlrZSIpLCAic2luZ2xlIikKKwogCiBjbGFzcyBUZXN0U3RhY2tTaXplKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIFRoZXNlIHRlc3RzIGNoZWNrIHRoYXQgdGhlIGNvbXB1dGVkIHN0YWNrIHNpemUgZm9yIGEgY29kZSBvYmplY3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weSBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQppbmRleCAyY2U4YTYxLi45YjQyNGE3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGNvbXBpbGVhbGwKIGltcG9ydCBpbXBvcnRsaWIudXRpbAoraW1wb3J0IHRlc3QudGVzdF9pbXBvcnRsaWIudXRpbAogaW1wb3J0IG9zCiBpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHB5X2NvbXBpbGUKQEAgLTQwLDYgKzQxLDExIEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZGlyZWN0b3J5KQogCisgICAgZGVmIGFkZF9iYWRfc291cmNlX2ZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuYmFkX3NvdXJjZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZGlyZWN0b3J5LCAnX3Rlc3RfYmFkLnB5JykKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuYmFkX3NvdXJjZV9wYXRoLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKCd4IChcbicpCisKICAgICBkZWYgZGF0YShzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuYmNfcGF0aCwgJ3JiJykgYXMgZmlsZToKICAgICAgICAgICAgIGRhdGEgPSBmaWxlLnJlYWQoOCkKQEAgLTc4LDE1ICs4NCw0MyBAQAogICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHNlbGYuc291cmNlX3BhdGgsIGZvcmNlPUZhbHNlLCBxdWlldD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX2ZpbGUoc2VsZi5zb3VyY2VfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPUZhbHNlLCBxdWlldD1UcnVlKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICBub3Qgb3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoMikpCiAgICAgICAgIG9zLnVubGluayhzZWxmLmJjX3BhdGgpCi0gICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIGZvcmNlPUZhbHNlLCBxdWlldD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgZm9yY2U9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0PVRydWUpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aDIpKQogICAgICAgICBvcy51bmxpbmsoc2VsZi5iY19wYXRoKQogICAgICAgICBvcy51bmxpbmsoc2VsZi5iY19wYXRoMikKKyAgICAgICAgIyBUZXN0IGFnYWluc3QgYmFkIGZpbGVzCisgICAgICAgIHNlbGYuYWRkX2JhZF9zb3VyY2VfZmlsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29tcGlsZWFsbC5jb21waWxlX2ZpbGUoc2VsZi5iYWRfc291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9RmFsc2UsIHF1aWV0PTIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZT1GYWxzZSwgcXVpZXQ9MikpCisKKyAgICBkZWYgdGVzdF9jb21waWxlX3BhdGgoc2VsZik6CisgICAgICAgICMgRXhjbHVkZSBMaWIvdGVzdC8gd2hpY2ggY29udGFpbnMgaW52YWxpZCBQeXRob24gZmlsZXMgbGlrZQorICAgICAgICAjIExpYi90ZXN0L2JhZHN5bnRheF9wZXAzMTIwLnB5CisgICAgICAgIHRlc3RkaXIgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCisgICAgICAgIGlmIHRlc3RkaXIgaW4gc3lzLnBhdGg6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgc3lzLCAncGF0aCcsIHN5cy5wYXRoKQorCisgICAgICAgICAgICBzeXMucGF0aCA9IGxpc3Qoc3lzLnBhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3lzLnBhdGgucmVtb3ZlKHRlc3RkaXIpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9wYXRoKHF1aWV0PTIpKQorCisgICAgICAgIHdpdGggdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtzZWxmLmRpcmVjdG9yeV0pOgorICAgICAgICAgICAgc2VsZi5hZGRfYmFkX3NvdXJjZV9maWxlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29tcGlsZWFsbC5jb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPVRydWUsIHF1aWV0PTIpKQogCiAgICAgZGVmIHRlc3Rfbm9fcHljYWNoZV9pbl9ub25fcGFja2FnZShzZWxmKToKICAgICAgICAgIyBCdWcgODU2MyByZXBvcnRlZCB0aGF0IF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGdvdCBjcmVhdGVkIGJ5CkBAIC0xOTcsMTAgKzIzMSw5IEBACiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnbm90IGFsbCBlbnRyaWVzIG9uIHN5cy5wYXRoIGFyZSB3cml0YWJsZScpCiAKICAgICBkZWYgX2dldF9ydW5fYXJncyhzZWxmLCBhcmdzKToKLSAgICAgICAgaW50ZXJwX2FyZ3MgPSBbJy1TJ10KLSAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplOgotICAgICAgICAgICAgaW50ZXJwX2FyZ3MuYXBwZW5kKHsxIDogJy1PJywgMiA6ICctT08nfVtzeXMuZmxhZ3Mub3B0aW1pemVdKQotICAgICAgICByZXR1cm4gaW50ZXJwX2FyZ3MgKyBbJy1tJywgJ2NvbXBpbGVhbGwnXSArIGxpc3QoYXJncykKKyAgICAgICAgcmV0dXJuIFsqc3VwcG9ydC5vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgICAgICAnLVMnLCAnLW0nLCAnY29tcGlsZWFsbCcsCisgICAgICAgICAgICAgICAgKmFyZ3NdCiAKICAgICBkZWYgYXNzZXJ0UnVuT0soc2VsZiwgKmFyZ3MsICoqZW52X3ZhcnMpOgogICAgICAgICByYywgb3V0LCBlcnIgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKaW5kZXggMGVmOWE3YS4uNjYzM2E3YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQpAQCAtMSw1ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QudGVzdF9ncmFtbWFyIGltcG9ydCAoVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMpCiAKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kb20KIGZyb20gbWF0aCBpbXBvcnQgYXRhbjIsIGlzbmFuLCBjb3B5c2lnbgpAQCAtMzc3LDYgKzM3OSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNvbXBsZXgoY29tcGxleDEoMWopKSwgMmopCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGxleCwgY29tcGxleDIoMWopKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgICMgY2hlY2sgdW5kZXJzY29yZXMKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbm90IGFueShjaCBpbiBsaXQgZm9yIGNoIGluICd4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgobGl0KSwgZXZhbChsaXQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleChsaXQpLCBjb21wbGV4KGxpdC5yZXBsYWNlKCdfJywgJycpKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBsaXQgaW4gKCcwXzcnLCAnMDlfOTknKTogICMgb2N0YWxzIGFyZSBub3QgcmVjb2duaXplZCBoZXJlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAneFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGxleCwgbGl0KQorCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKICAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTMwLCAzMCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goeCksIGhhc2goY29tcGxleCh4LCAwKSkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CmluZGV4IDc1MTM4MTUuLjIzZTk1YjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CkBAIC0xNTQsNiArMTU0LDMwIEBACiAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgICAgICB0LmpvaW4oKQogCisgICAgZGVmIHRlc3RfdGhyZWFkX25hbWVzX2Fzc2lnbmVkKHNlbGYpOgorICAgICAgICBleGVjdXRvciA9IGZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKAorICAgICAgICAgICAgbWF4X3dvcmtlcnM9NSwgdGhyZWFkX25hbWVfcHJlZml4PSdTcGVjaWFsUG9vbCcpCisgICAgICAgIGV4ZWN1dG9yLm1hcChhYnMsIHJhbmdlKC01LCA1KSkKKyAgICAgICAgdGhyZWFkcyA9IGV4ZWN1dG9yLl90aHJlYWRzCisgICAgICAgIGRlbCBleGVjdXRvcgorCisgICAgICAgIGZvciB0IGluIHRocmVhZHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHQubmFtZSwgcideU3BlY2lhbFBvb2xfWzAtNF0kJykKKyAgICAgICAgICAgIHQuam9pbigpCisKKyAgICBkZWYgdGVzdF90aHJlYWRfbmFtZXNfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBmdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz01KQorICAgICAgICBleGVjdXRvci5tYXAoYWJzLCByYW5nZSgtNSwgNSkpCisgICAgICAgIHRocmVhZHMgPSBleGVjdXRvci5fdGhyZWFkcworICAgICAgICBkZWwgZXhlY3V0b3IKKworICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgIyBXZSBkb24ndCBwYXJ0aWN1bGFybHkgY2FyZSB3aGF0IHRoZSBkZWZhdWx0IG5hbWUgaXMsIGp1c3QgdGhhdAorICAgICAgICAgICAgIyBpdCBoYXMgYSBkZWZhdWx0IG5hbWUgaW1wbHlpbmcgdGhhdCBpdCBpcyBhIFRocmVhZFBvb2xFeGVjdXRvcgorICAgICAgICAgICAgIyBmb2xsb3dlZCBieSB3aGF0IGxvb2tzIGxpa2UgYSB0aHJlYWQgbnVtYmVyLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0Lm5hbWUsIHInXi4qVGhyZWFkUG9vbEV4ZWN1dG9yLipfWzAtNF0kJykKKyAgICAgICAgICAgIHQuam9pbigpCisKIAogY2xhc3MgUHJvY2Vzc1Bvb2xTaHV0ZG93blRlc3QoUHJvY2Vzc1Bvb2xNaXhpbiwgRXhlY3V0b3JTaHV0ZG93blRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX3ByaW1lX2V4ZWN1dG9yKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQppbmRleCA3MWE4ZjNmLi4yYjA4MTk4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpAQCAtMjA1Miw1ICsyMDUyLDExIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCdvbmUnKSwgNSkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyJFcnJvciJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNvbmZpZ3BhcnNlciwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKaW5kZXggM2M2YmRlZi4uMDM2YTFkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CkBAIC04NCw2ICs4NCwzMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRhaW5lciA9PSBjb25zdHJ1Y3Rvcih2YWx1ZXMpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRhaW5lciA9PSBjb250YWluZXIpCiAKKyAgICBkZWYgdGVzdF9ibG9ja19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgIyBibG9ja2luZyBmYWxsYmFjayB3aXRoIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgY2xhc3MgQnlDb250YWlucyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGMgPSBCeUNvbnRhaW5zKCkKKyAgICAgICAgY2xhc3MgQmxvY2tDb250YWlucyhCeUNvbnRhaW5zKToKKyAgICAgICAgICAgICIiIklzIG5vdCBhIGNvbnRhaW5lcgorCisgICAgICAgICAgICBUaGlzIGNsYXNzIGlzIGEgcGVyZmVjdGx5IGdvb2QgaXRlcmFibGUgKGFzIHRlc3RlZCBieQorICAgICAgICAgICAgbGlzdChiYykpLCBhcyB3ZWxsIGFzIGluaGVyaXRpbmcgZnJvbSBhIHBlcmZlY3RseSBnb29kCisgICAgICAgICAgICBjb250YWluZXIsIGJ1dCBfX2NvbnRhaW5zX18gPSBOb25lIHByZXZlbnRzIHRoZSB1c3VhbAorICAgICAgICAgICAgZmFsbGJhY2sgdG8gaXRlcmF0aW9uIGluIHRoZSBjb250YWluZXIgcHJvdG9jb2wuIFRoYXQKKyAgICAgICAgICAgIGlzLCBub3JtYWxseSwgMCBpbiBiYyB3b3VsZCBmYWxsIGJhY2sgdG8gdGhlIGVxdWl2YWxlbnQKKyAgICAgICAgICAgIG9mIGFueSh4PT0wIGZvciB4IGluIGJjKSwgYnV0IGhlcmUgaXQncyBibG9ja2VkIGZyb20KKyAgICAgICAgICAgIGRvaW5nIHNvLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgd2hpbGUgRmFsc2U6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIE5vbmUKKyAgICAgICAgICAgIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgYmMgPSBCbG9ja0NvbnRhaW5zKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgwIGluIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiBsaXN0KGJjKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IDAgaW4gYmMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKaW5kZXggNTE2NDAzZS4uYzA0YzgwNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQpAQCAtMTIsNiArMTIsMzkgQEAKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKIAorY2xhc3MgVGVzdEFic3RyYWN0Q29udGV4dE1hbmFnZXIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZW50ZXIoc2VsZik6CisgICAgICAgIGNsYXNzIERlZmF1bHRFbnRlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2V4aXRfXygqYXJncykKKworICAgICAgICBtYW5hZ2VyID0gRGVmYXVsdEVudGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYW5hZ2VyLl9fZW50ZXJfXygpLCBtYW5hZ2VyKQorCisgICAgZGVmIHRlc3RfZXhpdF9pc19hYnN0cmFjdChzZWxmKToKKyAgICAgICAgY2xhc3MgTWlzc2luZ0V4aXQoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTWlzc2luZ0V4aXQoKQorCisgICAgZGVmIHRlc3Rfc3RydWN0dXJhbF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgY2xhc3MgTWFuYWdlckZyb21TY3JhdGNoOgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYW5hZ2VyRnJvbVNjcmF0Y2gsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpKQorCisgICAgICAgIGNsYXNzIERlZmF1bHRFbnRlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2V4aXRfXygqYXJncykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEZWZhdWx0RW50ZXIsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpKQorCisKIGNsYXNzIENvbnRleHRNYW5hZ2VyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfY29udGV4dG1hbmFnZXJfcGxhaW4oc2VsZik6CkBAIC04OSw3ICsxMjIsNyBAQAogICAgICAgICBkZWYgd29vaG9vKCk6CiAgICAgICAgICAgICB5aWVsZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgICAgICB3aXRoIHdvb2hvbygpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzdG9wX2V4YwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5IGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CmluZGV4IDBlMWY2NzAuLjQ1YTY5MjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgICAgdGVzdHMgPSBbTm9uZSwgLi4uLCBOb3RJbXBsZW1lbnRlZCwKICAgICAgICAgICAgICAgICAgNDIsIDIqKjEwMCwgMy4xNCwgVHJ1ZSwgRmFsc2UsIDFqLAogICAgICAgICAgICAgICAgICAiaGVsbG8iLCAiaGVsbG9cdTEyMzQiLCBmLl9fY29kZV9fLAotICAgICAgICAgICAgICAgICBiIndvcmxkIiwgYnl0ZXMocmFuZ2UoMjU2KSksIHJhbmdlKDEwKSwKKyAgICAgICAgICAgICAgICAgYiJ3b3JsZCIsIGJ5dGVzKHJhbmdlKDI1NikpLCByYW5nZSgxMCksIHNsaWNlKDEsIDEwLCAyKSwKICAgICAgICAgICAgICAgICAgTmV3U3R5bGUsIENsYXNzaWMsIG1heCwgV2l0aE1ldGFjbGFzc10KICAgICAgICAgZm9yIHggaW4gdGVzdHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuY29weSh4KSwgeCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQppbmRleCBlNTI2NTRjLi5mMjgzOWE3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3JvdXRpbmVzLnB5CkBAIC02OSw1NSArNjksMTMwIEBACiBjbGFzcyBBc3luY0JhZFN5bnRheFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFkc3ludGF4XzEoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMQotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzIoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMgotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMzCi0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfNChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzQKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF81KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNQotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzYoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKToKLQotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNgotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4Xzcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkIGZyb20nIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOgotCi0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM3Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfOChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzgKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF85KHNlbGYpOgotICAgICAgICBucyA9IHt9Ci0gICAgICAgIGZvciBjb21wIGluIHsnKGF3YWl0IGEgZm9yIGEgaW4gYiknLAotICAgICAgICAgICAgICAgICAgICAgJ1thd2FpdCBhIGZvciBhIGluIGJdJywKLSAgICAgICAgICAgICAgICAgICAgICd7YXdhaXQgYSBmb3IgYSBpbiBifScsCi0gICAgICAgICAgICAgICAgICAgICAne2F3YWl0IGE6IGMgZm9yIGEgaW4gYn0nfToKLQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnYXdhaXQuKmluIGNvbXByZWhlbicpOgotICAgICAgICAgICAgICAgIGV4ZWMoJ2FzeW5jIGRlZiBmKCk6XG5cdHt9Jy5mb3JtYXQoY29tcCksIG5zLCBucykKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8xMChzZWxmKToKLSAgICAgICAgIyBUZXN0cyBmb3IgaXNzdWUgMjQ2MTkKLQogICAgICAgICBzYW1wbGVzID0gWworICAgICAgICAgICAgIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGF3YWl0IHNvbWV0aGluZygpCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImF3YWl0IHNvbWV0aGluZygpIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBbXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXQgZnV0CisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGE6YXdhaXQgc29tZXRoaW5nKCkpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgYXN5bmMgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhd2FpdCBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscyBpZiBhd2FpdCBpXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYgorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXdhaXQgYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzIGlmIGF3YWl0IGldCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdAorICAgICAgICAgICAgIiIiLAorCiAgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CiAgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOiBwYXNzCiAgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAxCkBAIC0yODMsNTcgKzM1OCwxMTAgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBjb21waWxlKGNvZGUsICI8dGVzdD4iLCAiZXhlYyIpCiAKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMihzZWxmKToKKyAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdCA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgQmFyOgorICAgICAgICAgICAgICAgIGRlZiBhc3luYygpOiBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIEJhcjoKKyAgICAgICAgICAgICAgICBhc3luYyA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgYXN5bmM6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJjbGFzcyBhd2FpdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImltcG9ydCBtYXRoIGFzIGF3YWl0IiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYXN5bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCosIGF3YWl0PTEpOgorICAgICAgICAgICAgICAgIHBhc3MiIiIKKworICAgICAgICAgICAgIiIiYXN5bmMgPSAxIiIiLAorCisgICAgICAgICAgICAiIiJwcmludChhd2FpdD0xKSIiIgorICAgICAgICBdCisKKyAgICAgICAgZm9yIGNvZGUgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAiJ2F3YWl0JyB3aWxsIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkcyIpOgorICAgICAgICAgICAgICAgIGNvbXBpbGUoY29kZSwgIjx0ZXN0PiIsICJleGVjIikKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8zKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIpCisgICAgICAgICAgICAgICAgY29tcGlsZSgiYXN5bmMgPSAxIiwgIjx0ZXN0PiIsICJleGVjIikKKwogICAgIGRlZiB0ZXN0X2dvb2RzeW50YXhfMShzZWxmKToKICAgICAgICAgIyBUZXN0cyBmb3IgaXNzdWUgMjQ2MTkKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMTApLCAxMSkKKyAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKKyAgICAgICAgICAgICcnJywKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKIAotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCiAKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwogCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgotICAgICAgICAgICAgIiIic3BhbSIiIgotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBcCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgIyAxMjMKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgIyA0NTYKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMjApLCAyMikKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgICIiInNwYW0iIiIKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IFwKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICMgMTIzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgIyA0NTYKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiByZXR1cm4gYXdhaXRfCi0gICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJhcigpLnNlbmQoTm9uZSkKLSAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgotICAgICAgICAgICAgICAgIHJldHVybiBleC5hcmdzWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDQyKSwgNDIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHJldHVybiBhd2FpdF8KKyAgICAgICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYmFyKCkuc2VuZChOb25lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXguYXJnc1swXSArIDEKKyAgICAgICAgICAgICcnJworICAgICAgICBdCiAKLSAgICAgICAgYXN5bmMgZGVmIGYoKToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBnKCk6IHBhc3MKLSAgICAgICAgICAgIGF3YWl0IHoKLSAgICAgICAgYXdhaXQgPSAxCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oZikpCisgICAgICAgIGZvciBjb2RlIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpOgorICAgICAgICAgICAgICAgIGxvYyA9IHt9CisKKyAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgICAgICAgICAgZXhlYyhjb2RlLCBsb2MsIGxvYykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jWydmb28nXSgxMCksIDExKQogCiAKIGNsYXNzIFRva2VuaXplclJlZ3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTg5MSw3ICsxMDE5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBhd2FpdCBBd2FpdGFibGUoKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFR5cGVFcnJvciwgIl9fYXdhaXRfX1woXCkgcmV0dXJuZWQgYSBjb3JvdXRpbmUiKToKKyAgICAgICAgICAgIFR5cGVFcnJvciwgciJfX2F3YWl0X19cKFwpIHJldHVybmVkIGEgY29yb3V0aW5lIik6CiAKICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIApAQCAtMTMzMyw3ICsxNDYxLDcgQEAKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCiAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CisgICAgICAgICAgICAgICAgciJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CiAKICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIApAQCAtMTUzNyw2ICsxNjY1LDE4NSBAQAogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiKQogICAgICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIAorICAgIGRlZiB0ZXN0X2NvbXBfMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaSk6CisgICAgICAgICAgICByZXR1cm4gaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFthd2FpdCBjIGZvciBjIGluIFtmKDEpLCBmKDQxKV1dCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgYyBmb3IgYyBpbiBbZigxKSwgZig0MSldfQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdDEoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgYzogJ2EnIGZvciBjIGluIFtmKDEpLCBmKDQxKV19CisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0MigpOgorICAgICAgICAgICAgcmV0dXJuIHtpOiBhd2FpdCBjIGZvciBpLCBjIGluIGVudW1lcmF0ZShbZigxKSwgZig0MSldKX0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhydW5fbGlzdCgpKSwgKFtdLCBbMSwgNDFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX3NldCgpKSwgKFtdLCB7MSwgNDF9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2RpY3QxKCkpLCAoW10sIHsxOiAnYScsIDQxOiAnYSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2RpY3QyKCkpLCAoW10sIHswOiAxLCAxOiA0MX0pKQorCisgICAgZGVmIHRlc3RfY29tcF8yKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpKToKKyAgICAgICAgICAgIHJldHVybiBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW3MgZm9yIGMgaW4gW2YoJycpLCBmKCdhYmMnKSwgZignJyksIGYoWydkZScsICdmZyddKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgY10KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbJ2EnLCAnYicsICdjJywgJ2RlJywgJ2ZnJ10pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge2QKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gW2YoW2YoWzEwLCAzMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZihbMjBdKV0pXQorICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiBhd2FpdCBjCisgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGF3YWl0IHN9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0KCkpLAorICAgICAgICAgICAgKFtdLCB7MTAsIDIwLCAzMH0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0MigpOgorICAgICAgICAgICAgcmV0dXJuIHthd2FpdCBzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIFtmKFtmKDEwKSwgZigyMCldKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgY30KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9zZXQyKCkpLAorICAgICAgICAgICAgKFtdLCB7MTAsIDIwfSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFsxMSwgMjFdKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0KCkpLAorICAgICAgICAgICAgKFtdLCB7MTEsIDIxfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxOiBpICsgMiBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fZGljdCgpKSwKKyAgICAgICAgICAgIChbXSwgezExOiAxMiwgMjE6IDIyfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9nZW4oKToKKyAgICAgICAgICAgIGdlbiA9IChpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSkKKyAgICAgICAgICAgIHJldHVybiBbZyArIDEwMCBhc3luYyBmb3IgZyBpbiBnZW5dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2dlbigpKSwKKyAgICAgICAgICAgIChbXSwgWzExMSwgMTIxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbMjFdKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezIxfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxOiBpICsgMiBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2RpY3QoKSksCisgICAgICAgICAgICAoW10sIHsyMTogMjJ9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2dlbigpOgorICAgICAgICAgICAgZ2VuID0gKGkgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pIGlmIGkgPiAxMCkKKyAgICAgICAgICAgIHJldHVybiBbZyArIDEwMCBhc3luYyBmb3IgZyBpbiBnZW5dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2dlbigpKSwKKyAgICAgICAgICAgIChbXSwgWzEyMV0pKQorCisgICAgZGVmIHRlc3RfY29tcF81KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGZvciBwYWlyIGluIChbMTAsIDIwXSwgWzMwLCA0MF0pIGlmIHBhaXJbMF0gPiAxMAorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBmKHBhaXIpIGlmIGkgPiAzMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzQxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIHNlcSBpbiBmKFsoMTAsIDIwKSwgKDMwLCldKQorICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBzZXFdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzExLCAyMSwgMzFdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfNyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignYWFhJykKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSBhc3luYyBmb3IgaSBpbiBmKCldCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgJ2FhYScpOgorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9jb21wXzgoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICByZXR1cm4gW2kgZm9yIGkgaW4gWzEsIDIsIDNdXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgWzEsIDIsIDNdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfOShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgeWllbGQgMgorICAgICAgICBhc3luYyBkZWYgZigpOgorICAgICAgICAgICAgbCA9IFtpIGFzeW5jIGZvciBpIGluIGdlbigpXQorICAgICAgICAgICAgcmV0dXJuIFtpIGZvciBpIGluIGxdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmKCkpLAorICAgICAgICAgICAgKFtdLCBbMSwgMl0pKQorCisgICAgZGVmIHRlc3RfY29tcF8xMChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIHh4ID0ge2kgZm9yIGkgaW4gWzEsIDIsIDNdfQorICAgICAgICAgICAgcmV0dXJuIHt4OiB4IGZvciB4IGluIHh4fQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgezE6IDEsIDI6IDIsIDM6IDN9KSkKKwogICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CiAgICAgICAgIGFzeW5jIGRlZiBmdW5jKCk6IHBhc3MKICAgICAgICAgY29ybyA9IGZ1bmMoKQpAQCAtMTY2Nyw4ICsxOTc0LDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKICAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgImNvcm91dGluZSB3cmFwcGVyLipcLndyYXBwZXIgYXQgMHguKmF0dGVtcHRlZCB0byAiCi0gICAgICAgICAgICAgICAgInJlY3Vyc2l2ZWx5IHdyYXAgLiogd3JhcCAuKiIpOgorICAgICAgICAgICAgICAgIHIiY29yb3V0aW5lIHdyYXBwZXIuKlwud3JhcHBlciBhdCAweC4qYXR0ZW1wdGVkIHRvICIKKyAgICAgICAgICAgICAgICByInJlY3Vyc2l2ZWx5IHdyYXAgLiogd3JhcCAuKiIpOgogCiAgICAgICAgICAgICAgICAgZm9vKCkKICAgICAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CmluZGV4IGYxODk4M2YuLjUzZjg5MTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQpAQCAtNiw3ICs2LDcgQEAKICMgcmlwIG9mZiBhbGwgaW50ZXJlc3Rpbmcgc3R1ZmYgZnJvbSB0ZXN0X3Byb2ZpbGUKIGltcG9ydCBjUHJvZmlsZQogZnJvbSB0ZXN0LnRlc3RfcHJvZmlsZSBpbXBvcnQgUHJvZmlsZVRlc3QsIHJlZ2VuZXJhdGVfZXhwZWN0ZWRfb3V0cHV0Ci1mcm9tIHRlc3QucHJvZmlsZWUgaW1wb3J0IHRlc3RmdW5jCisKIAogY2xhc3MgQ1Byb2ZpbGVUZXN0KFByb2ZpbGVUZXN0KToKICAgICBwcm9maWxlcmNsYXNzID0gY1Byb2ZpbGUuUHJvZmlsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jc3YucHkgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQppbmRleCA3N2MzMTVlLi43ZGNlYTljIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nzdi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQpAQCAtMiw5ICsyLDcgQEAKICMgY3N2IHBhY2thZ2UgdW5pdCB0ZXN0cwogCiBpbXBvcnQgY29weQotaW1wb3J0IGlvCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gdGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKQEAgLTEyLDYgKzEwLDkgQEAKIGltcG9ydCBnYwogaW1wb3J0IHBpY2tsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zCitmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiAKIGNsYXNzIFRlc3RfQ3N2KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiIKQEAgLTQyNiwxNyArNDI3LDE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3N2LnJlYWRlciwgW10sIHF1b3RpbmcgPSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjc3YucmVhZGVyLCBbXSwgcXVvdGluZyA9IDEwMCkKIAotICAgICMgU2VlIGlzc3VlICMyMjk5NQotICAgICMjIGRlZiB0ZXN0X2NvcHkoc2VsZik6Ci0gICAgIyMgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6Ci0gICAgIyMgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCi0gICAgIyMgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvcHkuY29weSwgZGlhbGVjdCkKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgorICAgICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb3B5LmNvcHksIGRpYWxlY3QpCiAKLSAgICAjIyBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgIyMgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6Ci0gICAgIyMgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCi0gICAgIyMgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAjIyAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgZGlhbGVjdCwgcHJvdG8pCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgorICAgICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGRpYWxlY3QsIHByb3RvKQogCiBjbGFzcyBUZXN0Q3N2QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHJlYWRlckFzc2VydEVxdWFsKHNlbGYsIGlucHV0LCBleHBlY3RlZF9yZXN1bHQpOgpAQCAtMTA4MCw3ICsxMDgwLDYgQEAKICAgICAgICAgICAgICAiRnJhbsOnb2lzIFBpbmFyZCJdCiAKICAgICBkZWYgdGVzdF91bmljb2RlX3JlYWQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBpbwogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iajoKICAgICAgICAgICAgIGZpbGVvYmoud3JpdGUoIiwiLmpvaW4oc2VsZi5uYW1lcykgKyAiXHJcbiIpCiAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKQEAgLTEwODksNyArMTA4OCw2IEBACiAKIAogICAgIGRlZiB0ZXN0X3VuaWNvZGVfd3JpdGUoc2VsZik6Ci0gICAgICAgIGltcG9ydCBpbwogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iajoKICAgICAgICAgICAgIHdyaXRlciA9IGNzdi53cml0ZXIoZmlsZW9iaikKICAgICAgICAgICAgIHdyaXRlci53cml0ZXJvdyhzZWxmLm5hbWVzKQpAQCAtMTA5Nyw2ICsxMDk1LDYzIEBACiAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5yZWFkKCksIGV4cGVjdGVkKQogCitjbGFzcyBLZXlPcmRlcmluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfb3JkZXJpbmdfZm9yX3RoZV9kaWN0X3JlYWRlcl9hbmRfd3JpdGVyKHNlbGYpOgorICAgICAgICByZXN1bHRzZXQgPSBzZXQoKQorICAgICAgICBmb3Iga2V5cyBpbiBwZXJtdXRhdGlvbnMoImFiY2RlIik6CisgICAgICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoJ3crJywgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iamVjdDoKKyAgICAgICAgICAgICAgICBkdyA9IGNzdi5EaWN0V3JpdGVyKGZpbGVvYmplY3QsIGtleXMpCisgICAgICAgICAgICAgICAgZHcud3JpdGVoZWFkZXIoKQorICAgICAgICAgICAgICAgIGZpbGVvYmplY3Quc2VlaygwKQorICAgICAgICAgICAgICAgIGRyID0gY3N2LkRpY3RSZWFkZXIoZmlsZW9iamVjdCkKKyAgICAgICAgICAgICAgICBrdCA9IHR1cGxlKGRyLmZpZWxkbmFtZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBrdCkKKyAgICAgICAgICAgICAgICByZXN1bHRzZXQuYWRkKGt0KQorICAgICAgICAjIEZpbmFsIHNhbml0eSBjaGVjazogd2VyZSBhbGwgcGVybXV0YXRpb25zIHVuaXF1ZT8KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0c2V0KSwgMTIwLCAiS2V5IG9yZGVyaW5nOiBzb21lIGtleSBwZXJtdXRhdGlvbnMgbm90IGNvbGxlY3RlZCAoZXhwZWN0ZWQgMTIwKSIpCisKKyAgICBkZWYgdGVzdF9vcmRlcmVkX2RpY3RfcmVhZGVyKHNlbGYpOgorICAgICAgICBkYXRhID0gZGVkZW50KCcnJ1wKKyAgICAgICAgICAgIEZpcnN0TmFtZSxMYXN0TmFtZQorICAgICAgICAgICAgRXJpYyxJZGxlCisgICAgICAgICAgICBHcmFoYW0sQ2hhcG1hbixPdmVyMSxPdmVyMgorCisgICAgICAgICAgICBVbmRlcjEKKyAgICAgICAgICAgIEpvaG4sQ2xlZXNlCisgICAgICAgICcnJykuc3BsaXRsaW5lcygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNzdi5EaWN0UmVhZGVyKGRhdGEpKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnRXJpYycpLCAoJ0xhc3ROYW1lJywgJ0lkbGUnKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdHcmFoYW0nKSwgKCdMYXN0TmFtZScsICdDaGFwbWFuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBbJ092ZXIxJywgJ092ZXIyJ10pXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ1VuZGVyMScpLCAoJ0xhc3ROYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnSm9obicpLCAoJ0xhc3ROYW1lJywgJ0NsZWVzZScpXSksCisgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjc3YuRGljdFJlYWRlcihkYXRhLCByZXN0a2V5PSdPdGhlckluZm8nKSksCisgICAgICAgICAgICBbT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0VyaWMnKSwgKCdMYXN0TmFtZScsICdJZGxlJyldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnR3JhaGFtJyksICgnTGFzdE5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ090aGVySW5mbycsIFsnT3ZlcjEnLCAnT3ZlcjInXSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnVW5kZXIxJyksICgnTGFzdE5hbWUnLCBOb25lKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdKb2huJyksICgnTGFzdE5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAgZGVsIGRhdGFbMF0gICAgICAgICAgICAjIFJlbW92ZSB0aGUgaGVhZGVyIHJvdworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3N2LkRpY3RSZWFkZXIoZGF0YSwgZmllbGRuYW1lcz1bJ2ZuYW1lJywgJ2xuYW1lJ10pKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdmbmFtZScsICdFcmljJyksICgnbG5hbWUnLCAnSWRsZScpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnR3JhaGFtJyksICgnbG5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgWydPdmVyMScsICdPdmVyMiddKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ1VuZGVyMScpLCAoJ2xuYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdmbmFtZScsICdKb2huJyksICgnbG5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geydfX2RvY19fJywgJ19fdmVyc2lvbl9fJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY3N2LCAoJ2NzdicsICdfY3N2JyksIGV4dHJhPWV4dHJhKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQppbmRleCAyZDRlYjUyLi4yNDJlMWJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKQEAgLTIzLDkgKzIzLDE2IEBACiB0ZXN0X2NsYXNzZXMgPSBbXQogCiBmb3IgbW9kdWxlLCBzdWZmaXggaW4gemlwKHRlc3RfbW9kdWxlcywgdGVzdF9zdWZmaXhlcyk6CisgICAgdGVzdF9jbGFzc2VzID0gW10KICAgICBmb3IgbmFtZSwgY2xzIGluIG1vZHVsZS5fX2RpY3RfXy5pdGVtcygpOgotICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UoY2xzLCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RDYXNlKSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNscywgdHlwZSk6CiAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgdGVzdF9jbGFzc2VzLmFwcGVuZChjbHMpCisgICAgICAgIGVsaWYgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSk6CisgICAgICAgICAgICBzdWl0ID0gY2xzKCkKKyAgICAgICAgICAgIHRlc3RfY2xhc3Nlcy5leHRlbmQodHlwZSh0ZXN0KSBmb3IgdGVzdCBpbiBzdWl0KQorICAgIGZvciBjbHMgaW4gdGVzdF9jbGFzc2VzOgogICAgICAgICBjbHMuX19uYW1lX18gPSBuYW1lICsgc3VmZml4CiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgc2V0VXBDbGFzcyhjbHNfLCBtb2R1bGU9bW9kdWxlKToKQEAgLTM5LDcgKzQ2LDYgQEAKICAgICAgICAgICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShjbHNfLl9zYXZlX3N5c19tb2R1bGVzKQogICAgICAgICBjbHMuc2V0VXBDbGFzcyA9IHNldFVwQ2xhc3MKICAgICAgICAgY2xzLnRlYXJEb3duQ2xhc3MgPSB0ZWFyRG93bkNsYXNzCi0gICAgICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQoY2xzKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CmluZGV4IDYyM2Q5OTIuLmYwYTQyOGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCBzY3JpcHQgZm9yIHRoZSBkYm0ub3BlbiBmdW5jdGlvbiBiYXNlZCBvbiB0ZXN0ZHVtYmRibS5weSIiIgogCi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGdsb2IKIGltcG9ydCB0ZXN0LnN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CmluZGV4IGZmNjNjODguLjJkNzdmMDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGRibS5kdW1iIGFzIGR1bWJkYm0KIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKQEAgLTc4LDYgKzc5LDEyIEBACiAgICAgICAgIHNlbGYuaW5pdF9kYigpCiAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAncicpCiAgICAgICAgIHNlbGYucmVhZF9oZWxwZXIoZikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5Jyk6CisgICAgICAgICAgICBmW2InZyddID0gYid4JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknKToKKyAgICAgICAgICAgIGRlbCBmW2InYSddCiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZHVtYmRibV9rZXlzKHNlbGYpOgpAQCAtMTQ4LDcgKzE1NSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2RpY3Rba2V5XSwgZltrZXldKQogCiAgICAgZGVmIGluaXRfZGIoc2VsZik6Ci0gICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAndycpCisgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAnbicpCiAgICAgICAgIGZvciBrIGluIHNlbGYuX2RpY3Q6CiAgICAgICAgICAgICBmW2tdID0gc2VsZi5fZGljdFtrXQogICAgICAgICBmLmNsb3NlKCkKQEAgLTIzNCw2ICsyNDEsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJycpCiAKKyAgICBkZWYgdGVzdF93YXJuX29uX2lnbm9yZWRfZmxhZ3Moc2VsZik6CisgICAgICAgIGZvciB2YWx1ZSBpbiAoJ3InLCAndycpOgorICAgICAgICAgICAgX2RlbGV0ZV9maWxlcygpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGRhdGFiYXNlIGZpbGUgaXMgbWlzc2luZywgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW1hbnRpY3Mgb2YgdGhlICdjJyBmbGFnIHdpbGwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIHVzZWQuIik6CisgICAgICAgICAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsIHZhbHVlKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2ZsYWcoc2VsZik6CisgICAgICAgIGZvciBmbGFnIGluICgneCcsICdyZicsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZsYWcgbXVzdCBiZSBvbmUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidyJywgJ3cnLCAnYycsIG9yICduJyIpOgorICAgICAgICAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCBmbGFnKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIF9kZWxldGVfZmlsZXMoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkKaW5kZXggYTc4MDhmNS4uMzA0YjMzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weQpAQCAtMiw3ICsyLDcgQEAKIGdkYm0gPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5nbnUiKSAjc2tpcCBpZiBub3Qgc3VwcG9ydGVkCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCB1bmxpbmsKIAogCiBmaWxlbmFtZSA9IFRFU1RGTgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkKaW5kZXggMjI5MTU2MS4uNDlmNDQyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5CkBAIC0xLDggKzEsNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5uZGJtIikgI3NraXAgaWYgbm90IHN1cHBvcnRlZAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KIGltcG9ydCBkYm0ubmRibQogZnJvbSBkYm0ubmRibSBpbXBvcnQgZXJyb3IKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IDFhYTBiZjguLjYxN2EzN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTU1NCw2ICs1NTQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnICAtNy44OScpKSwgJy03Ljg5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiICAzLjQ1Njc5ICAiKSksICczLjQ1Njc5JykKIAorICAgICAgICAjIHVuZGVyc2NvcmVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJzFfMy4zZTRfMCcpKSwgJzEuMzNFKzQxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnMV8wXzBfMCcpKSwgJzEwMDAnKQorCiAgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCiAgICAgICAgIGZvciBsZWFkIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgogICAgICAgICAgICAgZm9yIHRyYWlsIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgpAQCAtNTc4LDYgKzU4Miw5IEBACiAgICAgICAgICAgICAjIGVtYmVkZGVkIE5VTAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjEyXHUwMDAwMyIpCiAKKyAgICAgICAgICAgICMgdW5kZXJzY29yZXMgZG9uJ3QgcHJldmVudCBlcnJvcnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICIxXzJfXHUwMDAwMyIpCisKICAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfZnJvbV9sZWdhY3lfc3RyaW5ncyhzZWxmKToKICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQpAQCAtNzcyLDYgKzc3OSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAieHl6IikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICgxLCAieHl6IiwgLTI1KSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyMzQiLCAiNTY3OCIpCisgICAgICAgICMgbm8gd2hpdGVzcGFjZSBhbmQgdW5kZXJzY29yZSBzdHJpcHBpbmcgaXMgZG9uZSB3aXRoIHRoaXMgbWV0aG9kCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAiIDEyMzQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyXzM0IikKIAogICAgICAgICAjIHRvbyBtYW55IE5hTiBwYXlsb2FkIGRpZ2l0cwogICAgICAgICBuYy5wcmVjID0gMwpAQCAtMjA0Nyw2ICsyMDU3LDM5IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDAsIDIsIDcsIDEpLCAnRicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoMCwpLCAnRicpKQogCisgICAgZGVmIHRlc3RfYXNfaW50ZWdlcl9yYXRpbyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgIyBleGNlcHRpb25hbCBjYXNlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJ2luZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJy1pbmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvLCBEZWNpbWFsKCctbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnc25hbjEyMycpKQorCisgICAgICAgIGZvciBleHAgaW4gcmFuZ2UoLTQsIDIpOgorICAgICAgICAgICAgZm9yIGNvZWZmIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgICAgIGZvciBzaWduIGluICcrJywgJy0nOgorICAgICAgICAgICAgICAgICAgICBkID0gRGVjaW1hbCgnJXMlZEUlZCcgJSAoc2lnbiwgY29lZmYsIGV4cCkpCisgICAgICAgICAgICAgICAgICAgIHBxID0gZC5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgICAgICAgICAgICAgcCwgcSA9IHBxCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayByZXR1cm4gdHlwZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocHEsIHR1cGxlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocCwgaW50KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocSwgaW50KQorCisgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgbm9ybWFsaXphdGlvbjogIHEgc2hvdWxkIGJlIHBvc2l0aXZlOworICAgICAgICAgICAgICAgICAgICAjIHAgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcHJpbWUgdG8gcS4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHEsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5nY2QocCwgcSksIDEpCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IHAvcSBhY3R1YWxseSBnaXZlcyB0aGUgY29ycmVjdCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwocCkgLyBEZWNpbWFsKHEpLCBkKQorCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CiAgICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCiAgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKaW5kZXggMThlMWRmMC4uY2U1MTdiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CkBAIC0yODksNyArMjg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCksIHRhcmdldCkKIAotICAgIGRlZiB0ZXN0X2luc2VydF9idWdfMjQ5MTMoc2VsZik6CisgICAgZGVmIHRlc3RfaW5kZXhfYnVnXzI0OTEzKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ0EnICogMykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIGkgPSBkLmluZGV4KCJIZWxsbyB3b3JsZCIsIDAsIDQpCkBAIC02MjIsMjAgKzYyMiwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGQgPSBkZXF1ZShyYW5nZSgyMDApKQotICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhkLCBpKQotICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCisgICAgICAgIGZvciBkIGluIGRlcXVlKHJhbmdlKDIwMCkpLCBkZXF1ZShyYW5nZSgyMDApLCAxMDApOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBzID0gcGlja2xlLmR1bXBzKGQsIGkpCisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChlKSwgbGlzdChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKLSMjICAgICAgICBkID0gZGVxdWUoJ2FiYycpCi0jIyAgICAgICAgZC5hcHBlbmQoZCkKLSMjICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotIyMgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBpKSkKLSMjICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0jIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGVbLTFdKSkKKyAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBmb3IgZCBpbiBkZXF1ZSgnYWJjJyksIGRlcXVlKCdhYmMnLCAzKToKKyAgICAgICAgICAgIGQuYXBwZW5kKGQpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIGkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZVstMV0pLCBpZChlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKICAgICAgICAgb3JpZyA9IGRlcXVlKHJhbmdlKDIwMCkpCkBAIC02OTYsNiArNjk4LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBmb3IgbWF4bGVuIGluIHJhbmdlKC0xLCA2KToKKyAgICAgICAgICAgICAgICBzID0gW3JhbmRvbS5yYW5kb20oKSBmb3IgaiBpbiByYW5nZShpKV0KKyAgICAgICAgICAgICAgICBkID0gZGVxdWUocykgaWYgbWF4bGVuID09IC0xIGVsc2UgZGVxdWUocywgbWF4bGVuKQorICAgICAgICAgICAgICAgIGUgPSBkLmNvcHkoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQubWF4bGVuLCBlLm1heGxlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKHggaXMgeSBmb3IgeCwgeSBpbiB6aXAoZCwgZSkpKQorCiAgICAgZGVmIHRlc3RfY29weV9tZXRob2Qoc2VsZik6CiAgICAgICAgIG11dCA9IFsxMF0KICAgICAgICAgZCA9IGRlcXVlKFttdXRdKQpAQCAtODQ1LDI0ICs4NTYsMjYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKSwgdHlwZShlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotIyMgICAgICAgIGQgPSBEZXF1ZSgnYWJjJykKLSMjICAgICAgICBkLmFwcGVuZChkKQotIyMKLSMjICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkKSkKLSMjICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKLSMjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZCksIHR5cGUoZSkpCi0jIyAgICAgICAgZGQgPSBkLnBvcCgpCi0jIyAgICAgICAgZWUgPSBlLnBvcCgpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZWUpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKLSMjCi0jIyAgICAgICAgZC54ID0gZAotIyMgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGUueCkpCi0jIwotIyMgICAgICAgIGQgPSBEZXF1ZVdpdGhCYWRJdGVyKCdhYmMnKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkKQorICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWUoJ2FiYycpLCBEZXF1ZSgnYWJjJywgMyk6CisgICAgICAgICAgICAgICAgZC5hcHBlbmQoZCkKKworICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGUpLCBpZChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZSksIHR5cGUoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm1heGxlbiwgZC5tYXhsZW4pCisgICAgICAgICAgICAgICAgZGQgPSBkLnBvcCgpCisgICAgICAgICAgICAgICAgZWUgPSBlLnBvcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlZSksIGlkKGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZCkKKworICAgICAgICAgICAgICAgIGQueCA9IGQKKyAgICAgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlLngpLCBpZChlKSkKKworICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWVXaXRoQmFkSXRlcignYWJjJyksIERlcXVlV2l0aEJhZEl0ZXIoJ2FiYycsIDIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkLCBwcm90bykKIAogICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnZ2FsbGFoYWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggNDE4ZjhkMi4uMWUwOGVkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC00NzM4LDExICs0NzM4LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKGFyZ3MsIGt3YXJncykKICAgICAgICAgb2JqID0gQzMoKQogICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgotICAgICAgICAgICAgaWYgcHJvdG8gPj0gNDoKKyAgICAgICAgICAgIGlmIHByb3RvID49IDI6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVkdWNlKHByb3RvLCBvYmosIGFyZ3MsIGt3YXJncykKLSAgICAgICAgICAgIGVsaWYgcHJvdG8gPj0gMjoKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBvYmouX19yZWR1Y2VfZXhfXyhwcm90bykKIAogICAgICAgICBjbGFzcyBDNDoKICAgICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfZXhfXyhzZWxmKToKQEAgLTUwNjEsMTAgKzUwNTgsNiBAQAogICAgICAgICAgICAgICAgIGt3YXJncyA9IGdldGF0dHIoY2xzLCAnS1dBUkdTJywge30pCiAgICAgICAgICAgICAgICAgb2JqID0gY2xzKCpjbHMuQVJHUywgKiprd2FyZ3MpCiAgICAgICAgICAgICAgICAgcHJvdG8gPSBwaWNrbGVfY29waWVyLnByb3RvCi0gICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQgYW5kIGhhc2F0dHIoY2xzLCAnX19nZXRuZXdhcmdzX2V4X18nKToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZV9jb3BpZXIuZHVtcHMob2JqLCBwcm90bykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBvYmpjb3B5ID0gcGlja2xlX2NvcGllci5jb3B5KG9iaikKICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfaXNfY29weShvYmosIG9iamNvcHkpCiAgICAgICAgICAgICAgICAgIyBGb3IgdGVzdCBjbGFzc2VzIHRoYXQgc3VwcG9ydHMgdGhpcywgbWFrZSBzdXJlIHdlIGRpZG4ndCBnbwpAQCAtNTEyMywxMiArNTExNiwxNCBAQAogICAgICAgICBhLCBiID0gQSgpLCBCKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGEueCwgYS55LCBhLnosIGEudyA9IHJhbmdlKDQpCisgICAgICAgICMgSW5pdGlhbCBoYXNoIHRhYmxlIGNhbiBjb250YWluIGF0IG1vc3QgNSBlbGVtZW50cy4KKyAgICAgICAgIyBTZXQgNiBhdHRyaWJ1dGVzIHRvIGNhdXNlIGludGVybmFsIHJlc2l6aW5nLgorICAgICAgICBhLngsIGEueSwgYS56LCBhLncsIGEudiwgYS51ID0gcmFuZ2UoNikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBhMiA9IEEoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2YodmFycyhhMikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGIudSwgYi52LCBiLncsIGIudCA9IHJhbmdlKDQpCisgICAgICAgIGIudSwgYi52LCBiLncsIGIudCwgYi5zLCBiLnIgPSByYW5nZSg2KQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGIpKSwgc3lzLmdldHNpemVvZih7fSkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKaW5kZXggNTA2ZDFhYi4uYjg0ZDY0NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CkBAIC0xODIsNiArMTgyLDcgQEAKICAgICAgJ19faWFkZF9fJywKICAgICAgJ19faW11bF9fJywKICAgICAgJ19faW5pdF9fJywKKyAgICAgJ19faW5pdF9zdWJjbGFzc19fJywKICAgICAgJ19faXRlcl9fJywKICAgICAgJ19fbGVfXycsCiAgICAgICdfX2xlbl9fJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQppbmRleCA5NTU2MThhLi5jMTMzYzgxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CkBAIC01LDkgKzUsOCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc2VsZWN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcHl0aG9uX29ubHkKIAogaWYgbm90IGhhc2F0dHIoc2VsZWN0LCAnZGV2cG9sbCcpIDoKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgndGVzdCB3b3JrcyBvbmx5IG9uIFNvbGFyaXMgT1MgZmFtaWx5JykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQppbmRleCA2ZDY4ZTc2Li5lZDY2ZGRiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CkBAIC0xLDEwICsxLDEzIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1pbXBvcnQgY29sbGVjdGlvbnMsIHJhbmRvbSwgc3RyaW5nCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLWltcG9ydCBnYywgd2Vha3JlZgoraW1wb3J0IGdjCiBpbXBvcnQgcGlja2xlCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBEaWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC04MzYsNiArODM5LDgzIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX3RyYWNrZWQoTXlEaWN0KCkpCiAKKyAgICBkZWYgbWFrZV9zaGFyZWRfa2V5X2RpY3Qoc2VsZiwgbik6CisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGljdHMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIGEgPSBDKCkKKyAgICAgICAgICAgIGEueCwgYS55LCBhLnogPSAxLCAyLCAzCisgICAgICAgICAgICBkaWN0cy5hcHBlbmQoYS5fX2RpY3RfXykKKworICAgICAgICByZXR1cm4gZGljdHMKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfZGVsKHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gZGVsIGRba10iIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBvcmlnX3NpemUgPSBzeXMuZ2V0c2l6ZW9mKGEpCisKKyAgICAgICAgZGVsIGFbJ3knXSAgIyBzcGxpdCB0YWJsZSBpcyBjb21iaW5lZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGRlbCBhWyd5J10KKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihhKSwgb3JpZ19zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgICAgICMgVHdvIGRpY3RzIGhhdmUgZGlmZmVyZW50IGluc2VydGlvbiBvcmRlci4KKyAgICAgICAgYVsneSddID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneicsICd5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9wb3Aoc2VsZik6CisgICAgICAgICIiInNwbGl0IHRhYmxlIG11c3QgYmUgY29tYmluZWQgd2hlbiBkLnBvcChrKSIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIG9yaWdfc2l6ZSA9IHN5cy5nZXRzaXplb2YoYSkKKworICAgICAgICBhLnBvcCgneScpICAjIHNwbGl0IHRhYmxlIGlzIGNvbWJpbmVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgYS5wb3AoJ3knKQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKGEpLCBvcmlnX3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICAgICAgIyBUd28gZGljdHMgaGF2ZSBkaWZmZXJlbnQgaW5zZXJ0aW9uIG9yZGVyLgorICAgICAgICBhWyd5J10gPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6JywgJ3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX3BvcF9wZW5kaW5nKHNlbGYpOgorICAgICAgICAiIiJwb3AgYSBwZW5kaW5nIGtleSBpbiBhIHNwbGl0dGVkIHRhYmxlIHNob3VsZCBub3QgY3Jhc2giIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBhWydhJ10gPSA0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgYi5wb3AoJ2EnKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9wb3BpdGVtKHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gZC5wb3BpdGVtKCkiIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBvcmlnX3NpemUgPSBzeXMuZ2V0c2l6ZW9mKGEpCisKKyAgICAgICAgaXRlbSA9IGEucG9waXRlbSgpICAjIHNwbGl0IHRhYmxlIGlzIGNvbWJpbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbSwgKCd6JywgMykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGFbJ3onXQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKGEpLCBvcmlnX3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKICAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBkYXRhID0gezE6ImEiLCAyOiJiIiwgMzoiYyJ9CkBAIC05NjksNSArMTA0OSw2IEBACiBjbGFzcyBTdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CiAgICAgdHlwZTJ0ZXN0ID0gRGljdAogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdF92ZXJzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NzFmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weQpAQCAtMCwwICsxLDE4NiBAQAorIiIiCitUZXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQRVAgNTA5OiBkaWN0aW9uYXJ5IHZlcnNpb25uaW5nLgorIiIiCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisjIFBFUCA1MDkgaXMgaW1wbGVtZW50ZWQgaW4gQ1B5dGhvbiBidXQgb3RoZXIgUHl0aG9uIGltcGxlbWVudGF0aW9ucworIyBkb24ndCByZXF1aXJlIHRvIGltcGxlbWVudCBpdAorX3Rlc3RjYXBpID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQorCisKK2NsYXNzIERpY3RWZXJzaW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHR5cGUydGVzdCA9IGRpY3QKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZWVuX3ZlcnNpb25zID0gc2V0KCkKKyAgICAgICAgc2VsZi5kaWN0ID0gTm9uZQorCisgICAgZGVmIGNoZWNrX3ZlcnNpb25fdW5pcXVlKHNlbGYsIG15ZGljdCk6CisgICAgICAgIHZlcnNpb24gPSBfdGVzdGNhcGkuZGljdF9nZXRfdmVyc2lvbihteWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odmVyc2lvbiwgc2VsZi5zZWVuX3ZlcnNpb25zKQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24pCisKKyAgICBkZWYgY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX3VuaXF1ZShteWRpY3QpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBjaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHZlcnNpb24xID0gX3Rlc3RjYXBpLmRpY3RfZ2V0X3ZlcnNpb24obXlkaWN0KQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24xKQorCisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKworICAgICAgICB2ZXJzaW9uMiA9IF90ZXN0Y2FwaS5kaWN0X2dldF92ZXJzaW9uKG15ZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uMiwgdmVyc2lvbjEsICJ2ZXJzaW9uIGNoYW5nZWQiKQorCisgICAgICAgIHJldHVybiAgcmVzdWx0CisKKyAgICBkZWYgbmV3X2RpY3Qoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBkID0gc2VsZi50eXBlMnRlc3QoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZCkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICAjIG5ldyBlbXB0eSBkaWN0aW9uYXJpZXMgbXVzdCBhbGwgaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBlbXB0eTEgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgZW1wdHkyID0gc2VsZi5uZXdfZGljdCgpCisgICAgICAgIGVtcHR5MyA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgbm9uLWVtcHR5IGRpY3Rpb25hcmllcyBtdXN0IGFsc28gaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBub25lbXB0eTEgPSBzZWxmLm5ld19kaWN0KHg9J3gnKQorICAgICAgICBub25lbXB0eTIgPSBzZWxmLm5ld19kaWN0KHg9J3gnLCB5PSd5JykKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGE9MSwgYj0yKQorCisgICAgICAgIGQyID0gc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIGQuY29weSkKKworICAgICAgICAjIGRpY3QuY29weSgpIG11c3QgY3JlYXRlIGEgZGljdGlvbmFyeSB3aXRoIGEgbmV3IHVuaXF1ZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisKKyAgICAgICAgIyBjcmVhdGluZyBuZXcga2V5cyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneCcsICd4JykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3knLCAneScpCisKKyAgICAgICAgIyBjaGFuZ2luZyB2YWx1ZXMgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3gnLCAxKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneScsIDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtX3NhbWVfdmFsdWUoc2VsZik6CisgICAgICAgIHZhbHVlID0gb2JqZWN0KCkKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIHRoZSBzYW1lIHZhbHVlIHdpdGggZGljdC5fX3NldGl0ZW1fXworICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gdGhlIHNhbWUgdmFsdWUgd2l0aCBkaWN0LnVwZGF0ZQorICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9dmFsdWUpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZSkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGQyKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbV9lcXVhbChzZWxmKToKKyAgICAgICAgY2xhc3MgQWx3YXlzRXF1YWw6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHZhbHVlMSA9IEFsd2F5c0VxdWFsKCkKKyAgICAgICAgdmFsdWUyID0gQWx3YXlzRXF1YWwoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUxID09IHZhbHVlMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2YWx1ZTEgIT0gdmFsdWUyKQorCisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ2tleScsIHZhbHVlMSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gYSB2YWx1ZSBlcXVhbCB0byB0aGUgY3VycmVudCB2YWx1ZQorICAgICAgICAjIHdpdGggZGljdC5fX3NldGl0ZW1fXygpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZTIpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgIyB3aXRoIGRpY3QudXBkYXRlKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGtleT12YWx1ZTEpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZTIpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgd2l0aCBkaWN0LnNldGRlZmF1bHQoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUxJykKKworICAgICAgICAjIGRvbid0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUyJykKKworICAgIGRlZiB0ZXN0X2RlbGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgZGVsZXRpbmcgYSBrZXkgd2l0aCBkaWN0Ll9fZGVsaXRlbV9fKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX2RlbGl0ZW1fXywgJ2tleScpCisKKyAgICAgICAgIyBkb24ndCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBzZWxmLmFzc2VydFJhaXNlcywgS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLl9fZGVsaXRlbV9fLCAna2V5JykKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnBvcCwgJ2tleScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdAorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgc2VsZi5hc3NlcnRSYWlzZXMsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wb3AsICdrZXknKQorCisgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3BpdGVtKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQucG9waXRlbSkKKworICAgICAgICAjIHBvcGl0ZW0oKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgZW1wdHkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIHNlbGYuYXNzZXJ0UmFpc2VzLCBLZXlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucG9waXRlbSkKKworICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyB1cGRhdGUoKSBjYWxsaW5nIHdpdGggbm8gYXJndW1lbnQgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnVwZGF0ZSkKKworICAgICAgICAjIHVwZGF0ZSgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9J25ldyB2YWx1ZScpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUgMycpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIGNsZWFyKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuY2xlYXIpCisKKyAgICAgICAgIyBjbGVhcigpIG11c3Qgbm90IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUgZGljdCBpcyBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC5jbGVhcikKKworCitjbGFzcyBEaWN0KGRpY3QpOgorICAgIHBhc3MKKworCitjbGFzcyBEaWN0U3VidHlwZVZlcnNpb25UZXN0cyhEaWN0VmVyc2lvblRlc3RzKToKKyAgICB0eXBlMnRlc3QgPSBEaWN0CisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKaW5kZXggM2M4Yjk1Yy4uMDg3MzA3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKQEAgLTEsNyArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KICMgRm9yIHNjb3BlIHRlc3RpbmcuCiBnID0gIkdsb2JhbCB2YXJpYWJsZSIKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQppbmRleCBhYjIzY2ExLi40YzI5MGZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGltcG9ydCB1bml0dGVzdApAQCAtMjE5LDYgKzIyMCwyNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpLAogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcywgZC5pdGVtcygpLCBwcm90bykKIAorICAgIGRlZiB0ZXN0X2FiY19yZWdpc3RyeShzZWxmKToKKyAgICAgICAgZCA9IGRpY3QoYT0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuS2V5c1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuTWFwcGluZ1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLlNpemVkKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuVmFsdWVzVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQudmFsdWVzKCksIGNvbGxlY3Rpb25zLk1hcHBpbmdWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuU2l6ZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlbXNWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5NYXBwaW5nVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5TaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CmluZGV4IGFiOWRlYmYuLjE1NmI1MjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKQEAgLTEyMiwxNyArMTIyLDE3IEBACiAiIiIKIAogcGF0Y2g5MTQ1NzVfZnJvbTIgPSAiIiIKLVx0XHRMaW5lIDE6IHByZWNlZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCi0gIFx0XHRMaW5lIDI6IHByZWNlZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCi0gIFx0IFx0TGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCitcdFx0TGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgIFx0XHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgXHQgXHRMaW5lIDM6IHByZWNlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQogTGluZSA0OiAgXHRoYXMgZnJvbTpbc3N0XSB0bzpbc3NzXSBhZnRlciA6CiBMaW5lIDU6IGhhcyBmcm9tOlt0XSB0bzpbc3NdIGF0IGVuZFx0CiAiIiIKIAogcGF0Y2g5MTQ1NzVfdG8yID0gIiIiCi0gICAgTGluZSAxOiBwcmVjZWVkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQotICAgIFx0TGluZSAyOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQotICAgICAgTGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCisgICAgTGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgICAgXHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgICAgIExpbmUgMzogcHJlY2VkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCiBMaW5lIDQ6ICAgaGFzIGZyb206W3NzdF0gdG86W3Nzc10gYWZ0ZXIgOgogTGluZSA1OiBoYXMgZnJvbTpbdF0gdG86W3NzXSBhdCBlbmQKICIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCmluZGV4IGVhN2EyNGUuLjNlNmE3YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKQEAgLTM4Nyw5ICszODcsOSBAQAogICAgICAgICAKICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0IiBpZD0iZGlmZmxpYl9jaGdfdG85X18wIj48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzEiPjE8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV82Ij42PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs1OiZuYnNwO2hhcyZuYnNwO2Zyb206W3RdJm5ic3A7dG86W3NzXSZuYnNwO2F0Jm5ic3A7ZW5kPHNwYW4gY2xhc3M9ImRpZmZfc3ViIj4mbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzYiPjY8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzU6Jm5ic3A7aGFzJm5ic3A7ZnJvbTpbdF0mbmJzcDt0bzpbc3NdJm5ic3A7YXQmbmJzcDtlbmQ8L3RkPjwvdHI+CiAgICAgICAgIDwvdGJvZHk+CkBAIC00MDMsOSArNDAzLDkgQEAKICAgICAgICAgCiAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCIgaWQ9ImRpZmZsaWJfY2hnX3RvMTBfXzAiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8xIj4xPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNSI+NTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NDombmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5oYXMmbmJzcDtmcm9tOltzc3RdJm5ic3A7dG86W3Nzc10mbmJzcDthZnRlciZuYnNwOzo8L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDxzcGFuIGNsYXNzPSJkaWZmX3N1YiI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDwvdGQ+PC90cj4KICAgICAgICAgPC90Ym9keT4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKaW5kZXggMGZkMTM0OC4uZjMxOTMzNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKQEAgLTQwLDQxICs0MCw0MSBAQAogCiBkaXNfY19pbnN0YW5jZV9tZXRob2QgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChzZWxmKQotICAgICAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICAgICAgNiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoc2VsZikKKyAgICAgICAgICAgICAgOCBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIiAlIChfQy5fX2luaXRfXy5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsKQogCiBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMgPSAiIiJcCiAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICA2IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgIDggU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc19jX2NsYXNzX21ldGhvZCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCi0gICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGNscykKLSAgICAgICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxOCBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGNscykKKyAgICAgICAgICAgICAgOCBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIiAlIChfQy5jbS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDIsKQogCiBkaXNfY19zdGF0aWNfbWV0aG9kID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKLSAgICAgICAgICAgICAgOSBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxNSBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX0Muc20uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyLCkKIAogIyBDbGFzcyBkaXNhc3NlbWJsaW5nIGluZm8gaGFzIGFuIGV4dHJhIG5ld2xpbmUgYXQgZW5kLgpAQCAtOTUsMjMgKzk1LDIzIEBACiAKIGRpc19mID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChwcmludCkKLSAgICAgICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYSkKLSAgICAgICAgICAgICAgNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICAgICAgOSBQT1BfVE9QCisgICAgICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGEpCisgICAgICAgICAgICAgIDQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgNiBQT1BfVE9QCiAKLSUzZCAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyUzZCAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKICIiIiAlIChfZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgX2YuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyKQogCiAKIGRpc19mX2NvX2NvZGUgPSAiIiJcCiAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgOSBQT1BfVE9QCi0gICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgIDEzIFJFVFVSTl9WQUxVRQorICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAgNCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgIDYgUE9QX1RPUAorICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKICIiIgogCiAKQEAgLTEyMSwyMCArMTIxLDIwIEBACiAgICAgICAgIHBhc3MKIAogZGlzX2J1ZzcwODkwMSA9ICIiIlwKLSUzZCAgICAgICAgICAgMCBTRVRVUF9MT09QICAgICAgICAgICAgICAyMyAodG8gMjYpCi0gICAgICAgICAgICAgIDMgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHJhbmdlKQotICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorJTNkICAgICAgICAgICAwIFNFVFVQX0xPT1AgICAgICAgICAgICAgIDE4ICh0byAyMCkKKyAgICAgICAgICAgICAgMiBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAocmFuZ2UpCisgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCiAKLSUzZCAgICAgICAgICAgOSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMTApCi0gICAgICAgICAgICAgMTIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIgKDIgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgICAgMTUgR0VUX0lURVIKLSAgICAgICAgPj4gICAxNiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNiAodG8gMjUpCi0gICAgICAgICAgICAgMTkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKKyUzZCAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMTApCisgICAgICAgICAgICAgIDggQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIKKyAgICAgICAgICAgICAxMCBHRVRfSVRFUgorICAgICAgICA+PiAgIDEyIEZPUl9JVEVSICAgICAgICAgICAgICAgICA0ICh0byAxOCkKKyAgICAgICAgICAgICAxNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAocmVzKQogCi0lM2QgICAgICAgICAgMjIgSlVNUF9BQlNPTFVURSAgICAgICAgICAgMTYKLSAgICAgICAgPj4gICAyNSBQT1BfQkxPQ0sKLSAgICAgICAgPj4gICAyNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAyOSBSRVRVUk5fVkFMVUUKKyUzZCAgICAgICAgICAxNiBKVU1QX0FCU09MVVRFICAgICAgICAgICAxMgorICAgICAgICA+PiAgIDE4IFBPUF9CTE9DSworICAgICAgICA+PiAgIDIwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDIyIFJFVFVSTl9WQUxVRQogIiIiICUgKGJ1ZzcwODkwMS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgYnVnNzA4OTAxLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMiwKICAgICAgICBidWc3MDg5MDEuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAzKQpAQCAtMTQ3LDIyICsxNDcsMjIgQEAKIAogZGlzX2J1ZzEzMzM5ODIgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDApCi0gICAgICAgICAgICAgIDMgUE9QX0pVTVBfSUZfVFJVRSAgICAgICAgMzUKLSAgICAgICAgICAgICAgNiBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoQXNzZXJ0aW9uRXJyb3IpCi0gICAgICAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDxjb2RlIG9iamVjdCA8bGlzdGNvbXA+IGF0IDB4Li4uLCBmaWxlICIlcyIsIGxpbmUgJWQ+KQotICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAzICgnYnVnMTMzMzk4Mi48bG9jYWxzPi48bGlzdGNvbXA+JykKLSAgICAgICAgICAgICAxNSBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAgMAotICAgICAgICAgICAgIDE4IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDIxIEdFVF9JVEVSCi0gICAgICAgICAgICAgMjIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCisgICAgICAgICAgICAgIDIgUE9QX0pVTVBfSUZfVFJVRSAgICAgICAgMjYKKyAgICAgICAgICAgICAgNCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoQXNzZXJ0aW9uRXJyb3IpCisgICAgICAgICAgICAgIDYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDxjb2RlIG9iamVjdCA8bGlzdGNvbXA+IGF0IDB4Li4uLCBmaWxlICIlcyIsIGxpbmUgJWQ+KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAzICgnYnVnMTMzMzk4Mi48bG9jYWxzPi48bGlzdGNvbXA+JykKKyAgICAgICAgICAgICAxMCBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAgMAorICAgICAgICAgICAgIDEyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgIDE0IEdFVF9JVEVSCisgICAgICAgICAgICAgMTYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKIAotJTNkICAgICAgICAgIDI1IExPQURfQ09OU1QgICAgICAgICAgICAgICA0ICgxKQotICAgICAgICAgICAgIDI4IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAyOSBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICAgICAzMiBSQUlTRV9WQVJBUkdTICAgICAgICAgICAgMQorJTNkICAgICAgICAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICA0ICgxKQorICAgICAgICAgICAgIDIwIEJJTkFSWV9BREQKKyAgICAgICAgICAgICAyMiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgIDI0IFJBSVNFX1ZBUkFSR1MgICAgICAgICAgICAxCiAKLSUzZCAgICAgPj4gICAzNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAzOCBSRVRVUk5fVkFMVUUKKyUzZCAgICAgPj4gICAyNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAyOCBSRVRVUk5fVkFMVUUKICIiIiAlIChidWcxMzMzOTgyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKICAgICAgICBfX2ZpbGVfXywKICAgICAgICBidWcxMzMzOTgyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKQEAgLTE3MSwxOSArMTcxLDE5IEBACiAKIF9CSUdfTElORU5PX0ZPUk1BVCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoc3BhbSkKLSAgICAgICAgICAgICAgMyBQT1BfVE9QCisgICAgICAgICAgICAgIDIgUE9QX1RPUAogICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgICA3IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICA2IFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc19tb2R1bGVfZXhwZWN0ZWRfcmVzdWx0cyA9ICIiIlwKIERpc2Fzc2VtYmx5IG9mIGY6CiAgIDQgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgIDMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgUkVUVVJOX1ZBTFVFCiAKIERpc2Fzc2VtYmx5IG9mIGc6CiAgIDUgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgIDMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgUkVUVVJOX1ZBTFVFCiAKICIiIgogCkBAIC0xOTEsMjAgKzE5MSw1MiBAQAogCiBkaXNfZXhwcl9zdHIgPSAiIiJcCiAgIDEgICAgICAgICAgIDAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCi0gICAgICAgICAgICAgIDYgQklOQVJZX0FERAotICAgICAgICAgICAgICA3IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgICA0IEJJTkFSWV9BREQKKyAgICAgICAgICAgICAgNiBSRVRVUk5fVkFMVUUKICIiIgogCiBzaW1wbGVfc3RtdF9zdHIgPSAieCA9IHggKyAxIgogCiBkaXNfc2ltcGxlX3N0bXRfc3RyID0gIiIiXAogICAxICAgICAgICAgICAwIExPQURfTkFNRSAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQotICAgICAgICAgICAgICA2IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAgNyBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoTm9uZSkKLSAgICAgICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAgNCBCSU5BUllfQURECisgICAgICAgICAgICAgIDYgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKE5vbmUpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCisiIiIKKworYW5ub3Rfc3RtdF9zdHIgPSAiIiJcCisKK3g6IGludCA9IDEKK3k6IGZ1bigxKQorbHN0W2Z1bigwKV06IGludCA9IDEKKyIiIgorIyBsZWFkaW5nIG5ld2xpbmUgaXMgZm9yIGEgcmVhc29uICh0ZXN0cyBsaW5lbm8pCisKK2Rpc19hbm5vdF9zdG10X3N0ciA9ICIiIlwKKyAgMiAgICAgICAgICAgMCBTRVRVUF9BTk5PVEFUSU9OUworICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgICA0IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA2IExPQURfTkFNRSAgICAgICAgICAgICAgICAxIChpbnQpCisgICAgICAgICAgICAgIDggU1RPUkVfQU5OT1RBVElPTiAgICAgICAgIDAgKHgpCisKKyAgMyAgICAgICAgICAxMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMiAoZnVuKQorICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgIDE0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgMTYgU1RPUkVfQU5OT1RBVElPTiAgICAgICAgIDMgKHkpCisKKyAgNCAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAyMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgNCAobHN0KQorICAgICAgICAgICAgIDIyIExPQURfTkFNRSAgICAgICAgICAgICAgICAyIChmdW4pCisgICAgICAgICAgICAgMjQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDApCisgICAgICAgICAgICAgMjYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAyOCBTVE9SRV9TVUJTQ1IKKyAgICAgICAgICAgICAzMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMSAoaW50KQorICAgICAgICAgICAgIDMyIFBPUF9UT1AKKyAgICAgICAgICAgICAzNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoTm9uZSkKKyAgICAgICAgICAgICAzNiBSRVRVUk5fVkFMVUUKICIiIgogCiBjb21wb3VuZF9zdG10X3N0ciA9ICIiIlwKQEAgLTIxNSw1NCArMjQ3LDU0IEBACiAKIGRpc19jb21wb3VuZF9zdG10X3N0ciA9ICIiIlwKICAgMSAgICAgICAgICAgMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICAgICAgMyBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAgMiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKIAotICAyICAgICAgICAgICA2IFNFVFVQX0xPT1AgICAgICAgICAgICAgIDE0ICh0byAyMykKKyAgMiAgICAgICAgICAgNCBTRVRVUF9MT09QICAgICAgICAgICAgICAxMiAodG8gMTgpCiAKLSAgMyAgICAgPj4gICAgOSBMT0FEX05BTUUgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxNSBJTlBMQUNFX0FERAotICAgICAgICAgICAgIDE2IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDE5IEpVTVBfQUJTT0xVVEUgICAgICAgICAgICA5Ci0gICAgICAgICAgICAgMjIgUE9QX0JMT0NLCi0gICAgICAgID4+ICAgMjMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKE5vbmUpCi0gICAgICAgICAgICAgMjYgUkVUVVJOX1ZBTFVFCisgIDMgICAgID4+ICAgIDYgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgMTAgSU5QTEFDRV9BREQKKyAgICAgICAgICAgICAxMiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxNCBKVU1QX0FCU09MVVRFICAgICAgICAgICAgNgorICAgICAgICAgICAgIDE2IFBPUF9CTE9DSworICAgICAgICA+PiAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICAyIChOb25lKQorICAgICAgICAgICAgIDIwIFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc190cmFjZWJhY2sgPSAiIiJcCi0lM2QgICAgICAgICAgIDAgU0VUVVBfRVhDRVBUICAgICAgICAgICAgMTIgKHRvIDE1KQorJTNkICAgICAgICAgICAwIFNFVFVQX0VYQ0VQVCAgICAgICAgICAgIDEyICh0byAxNCkKIAotJTNkICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgwKQotICAgIC0tPiAgICAgICA5IEJJTkFSWV9UUlVFX0RJVklERQotICAgICAgICAgICAgIDEwIFBPUF9UT1AKLSAgICAgICAgICAgICAxMSBQT1BfQkxPQ0sKLSAgICAgICAgICAgICAxMiBKVU1QX0ZPUldBUkQgICAgICAgICAgICA0NiAodG8gNjEpCislM2QgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDApCisgICAgLS0+ICAgICAgIDYgQklOQVJZX1RSVUVfRElWSURFCisgICAgICAgICAgICAgIDggUE9QX1RPUAorICAgICAgICAgICAgIDEwIFBPUF9CTE9DSworICAgICAgICAgICAgIDEyIEpVTVBfRk9SV0FSRCAgICAgICAgICAgIDQwICh0byA1NCkKIAotJTNkICAgICA+PiAgIDE1IERVUF9UT1AKKyUzZCAgICAgPj4gICAxNCBEVVBfVE9QCiAgICAgICAgICAgICAgMTYgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKEV4Y2VwdGlvbikKLSAgICAgICAgICAgICAxOSBDT01QQVJFX09QICAgICAgICAgICAgICAxMCAoZXhjZXB0aW9uIG1hdGNoKQotICAgICAgICAgICAgIDIyIFBPUF9KVU1QX0lGX0ZBTFNFICAgICAgIDYwCi0gICAgICAgICAgICAgMjUgUE9QX1RPUAotICAgICAgICAgICAgIDI2IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChlKQotICAgICAgICAgICAgIDI5IFBPUF9UT1AKLSAgICAgICAgICAgICAzMCBTRVRVUF9GSU5BTExZICAgICAgICAgICAxNCAodG8gNDcpCisgICAgICAgICAgICAgMTggQ09NUEFSRV9PUCAgICAgICAgICAgICAgMTAgKGV4Y2VwdGlvbiBtYXRjaCkKKyAgICAgICAgICAgICAyMCBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICA1MgorICAgICAgICAgICAgIDIyIFBPUF9UT1AKKyAgICAgICAgICAgICAyNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKKyAgICAgICAgICAgICAyNiBQT1BfVE9QCisgICAgICAgICAgICAgMjggU0VUVVBfRklOQUxMWSAgICAgICAgICAgMTIgKHRvIDQyKQogCi0lM2QgICAgICAgICAgMzMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGUpCi0gICAgICAgICAgICAgMzYgTE9BRF9BVFRSICAgICAgICAgICAgICAgIDEgKF9fdHJhY2ViYWNrX18pCi0gICAgICAgICAgICAgMzkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDEgKHRiKQotICAgICAgICAgICAgIDQyIFBPUF9CTE9DSwotICAgICAgICAgICAgIDQzIFBPUF9FWENFUFQKLSAgICAgICAgICAgICA0NCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgPj4gICA0NyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICA1MCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICA1MyBERUxFVEVfRkFTVCAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICA1NiBFTkRfRklOQUxMWQotICAgICAgICAgICAgIDU3IEpVTVBfRk9SV0FSRCAgICAgICAgICAgICAxICh0byA2MSkKLSAgICAgICAgPj4gICA2MCBFTkRfRklOQUxMWQorJTNkICAgICAgICAgIDMwIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChlKQorICAgICAgICAgICAgIDMyIExPQURfQVRUUiAgICAgICAgICAgICAgICAxIChfX3RyYWNlYmFja19fKQorICAgICAgICAgICAgIDM0IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAxICh0YikKKyAgICAgICAgICAgICAzNiBQT1BfQkxPQ0sKKyAgICAgICAgICAgICAzOCBQT1BfRVhDRVBUCisgICAgICAgICAgICAgNDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgID4+ICAgNDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgNDQgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgNDYgREVMRVRFX0ZBU1QgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgNDggRU5EX0ZJTkFMTFkKKyAgICAgICAgICAgICA1MCBKVU1QX0ZPUldBUkQgICAgICAgICAgICAgMiAodG8gNTQpCisgICAgICAgID4+ICAgNTIgRU5EX0ZJTkFMTFkKIAotJTNkICAgICA+PiAgIDYxIExPQURfRkFTVCAgICAgICAgICAgICAgICAxICh0YikKLSAgICAgICAgICAgICA2NCBSRVRVUk5fVkFMVUUKKyUzZCAgICAgPj4gICA1NCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAodGIpCisgICAgICAgICAgICAgNTYgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyAxLAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgMiwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDMsCkBAIC0zNDUsNiArMzc3LDcgQEAKICAgICBkZWYgdGVzdF9kaXNhc3NlbWJsZV9zdHIoc2VsZik6CiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChleHByX3N0ciwgZGlzX2V4cHJfc3RyKQogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3Qoc2ltcGxlX3N0bXRfc3RyLCBkaXNfc2ltcGxlX3N0bXRfc3RyKQorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoYW5ub3Rfc3RtdF9zdHIsIGRpc19hbm5vdF9zdG10X3N0cikKICAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KGNvbXBvdW5kX3N0bXRfc3RyLCBkaXNfY29tcG91bmRfc3RtdF9zdHIpCiAKICAgICBkZWYgdGVzdF9kaXNhc3NlbWJsZV9ieXRlcyhzZWxmKToKQEAgLTU0MSw3ICs1NzQsNyBAQAogS3ctb25seSBhcmd1bWVudHM6IDAKIE51bWJlciBvZiBsb2NhbHM6ICAyCiBTdGFjayBzaXplOiAgICAgICAgMTcKLUZsYWdzOiAgICAgICAgICAgICBPUFRJTUlaRUQsIE5FV0xPQ0FMUywgR0VORVJBVE9SLCBOT0ZSRUUsIENPUk9VVElORQorRmxhZ3M6ICAgICAgICAgICAgIE9QVElNSVpFRCwgTkVXTE9DQUxTLCBOT0ZSRUUsIENPUk9VVElORQogQ29uc3RhbnRzOgogICAgMDogTm9uZQogICAgMTogMSIiIgpAQCAtNjQ5LDE3MSArNjgyLDE2OSBAQAogCiBJbnN0cnVjdGlvbiA9IGRpcy5JbnN0cnVjdGlvbgogZXhwZWN0ZWRfb3BpbmZvX291dGVyID0gWwotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTMsIGFyZ3JlcHI9JzMnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPWNvZGVfb2JqZWN0X2YsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9mKSwgb2Zmc2V0PTE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYnLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZiciLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0NMT1NVUkUnLCBvcGNvZGU9MTM0LCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MiwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yNywgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0zMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPScnLCBhcmdyZXByPSInJyIsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9MSVNUJywgb3Bjb2RlPTEwMywgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9NDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9NQVAnLCBvcGNvZGU9MTA1LCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD00NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPSdIZWxsbyB3b3JsZCEnLCBhcmdyZXByPSInSGVsbG8gd29ybGQhJyIsIG9mZnNldD00OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NywgYXJndmFsPTcsIGFyZ3JlcHI9JzcgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9NTUsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9KDMsIDQpLCBhcmdyZXByPScoMywgNCknLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD00LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfZiwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2YpLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYnIiwgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9GVU5DVElPTicsIG9wY29kZT0xMzIsIGFyZz05LCBhcmd2YWw9OSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9JycsIGFyZ3JlcHI9IicnIiwgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX0xJU1QnLCBvcGNvZGU9MTAzLCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD0yNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX01BUCcsIG9wY29kZT0xMDUsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9J0hlbGxvIHdvcmxkIScsIGFyZ3JlcHI9IidIZWxsbyB3b3JsZCEnIiwgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz03LCBhcmd2YWw9NywgYXJncmVwcj0nJywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiBleHBlY3RlZF9vcGluZm9fZiA9IFsKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD01LCBhcmdyZXByPSc1Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9MTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfaW5uZXIsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9pbm5lciksIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInIiwgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9DTE9TVVJFJywgb3Bjb2RlPTEzNCwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0zMywgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0zOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD00Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD00NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JzQgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD01Miwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0oNSwgNiksIGFyZ3JlcHI9Jyg1LCA2KScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTIsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0zLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTQsIGFyZ3ZhbD00LCBhcmdyZXByPScnLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9pbm5lciwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2lubmVyKSwgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZi48bG9jYWxzPi5pbm5lciciLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMiwgYXJnPTksIGFyZ3ZhbD05LCBhcmdyZXByPScnLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD0yNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JycsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MiwgYXJndmFsPSdpbm5lcicsIGFyZ3JlcHI9J2lubmVyJywgb2Zmc2V0PTM0LCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiBleHBlY3RlZF9vcGluZm9faW5uZXIgPSBbCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0yLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTMsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdlJywgYXJncmVwcj0nZScsIG9mZnNldD0xNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0xLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz02LCBhcmd2YWw9NiwgYXJncmVwcj0nNiBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTI1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTIsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD04LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0nZScsIGFyZ3JlcHI9J2UnLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MSwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NiwgYXJndmFsPTYsIGFyZ3JlcHI9JycsIG9mZnNldD0xNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiBleHBlY3RlZF9vcGluZm9fanVtcHkgPSBbCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz02OCwgYXJndmFsPTcxLCBhcmdyZXByPSd0byA3MScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdyYW5nZScsIGFyZ3JlcHI9J3JhbmdlJywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nMTAnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0dFVF9JVEVSJywgb3Bjb2RlPTY4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0ZPUl9JVEVSJywgb3Bjb2RlPTkzLCBhcmc9NDQsIGFyZ3ZhbD02MCwgYXJncmVwcj0ndG8gNjAnLCBvZmZzZXQ9MTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xOSwgc3RhcnRzX2xpbmU9NCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yOSwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz00NCwgYXJndmFsPTQ0LCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD00MSwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTQ0LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTQ3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTUzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTYsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD01Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD02MSwgc3RhcnRzX2xpbmU9MTAsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nSSBjYW4gaGF6IGVsc2UgY2xhdXNlPycsIGFyZ3JlcHI9IidJIGNhbiBoYXogZWxzZSBjbGF1c2U/JyIsIG9mZnNldD02NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz02OCwgYXJndmFsPTE0MiwgYXJncmVwcj0ndG8gMTQyJywgb2Zmc2V0PTcxLCBzdGFydHNfbGluZT0xMSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEzMSwgYXJndmFsPTEzMSwgYXJncmVwcj0nJywgb2Zmc2V0PTc3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTgwLCBzdGFydHNfbGluZT0xMiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD04Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9ODksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD05MCwgc3RhcnRzX2xpbmU9MTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTkzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSU5QTEFDRV9TVUJUUkFDVCcsIG9wY29kZT01NiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9OTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMDAsIHN0YXJ0c19saW5lPTE0LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0xMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9MTA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTE1LCBhcmd2YWw9MTE1LCBhcmdyZXByPScnLCBvZmZzZXQ9MTA5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTEyLCBzdGFydHNfbGluZT0xNSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTExNSwgc3RhcnRzX2xpbmU9MTYsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTEyMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjcsIHN0YXJ0c19saW5lPTE3LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xMzIsIHN0YXJ0c19saW5lPTE5LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9J1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nLCBhcmdyZXByPSInV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyciLCBvZmZzZXQ9MTM1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xMzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0ZJTkFMTFknLCBvcGNvZGU9MTIyLCBhcmc9NzMsIGFyZ3ZhbD0yMTgsIGFyZ3JlcHI9J3RvIDIxOCcsIG9mZnNldD0xNDIsIHN0YXJ0c19saW5lPTIwLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9FWENFUFQnLCBvcGNvZGU9MTIxLCBhcmc9MTIsIGFyZ3ZhbD0xNjAsIGFyZ3JlcHI9J3RvIDE2MCcsIG9mZnNldD0xNDUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTE0OCwgc3RhcnRzX2xpbmU9MjEsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0wLCBhcmdyZXByPScwJywgb2Zmc2V0PTE1MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JJTkFSWV9UUlVFX0RJVklERScsIG9wY29kZT0yNywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yOCwgYXJndmFsPTE4OCwgYXJncmVwcj0ndG8gMTg4Jywgb2Zmc2V0PTE1Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0RVUF9UT1AnLCBvcGNvZGU9NCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYwLCBzdGFydHNfbGluZT0yMiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MiwgYXJndmFsPSdaZXJvRGl2aXNpb25FcnJvcicsIGFyZ3JlcHI9J1plcm9EaXZpc2lvbkVycm9yJywgb2Zmc2V0PTE2MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MTAsIGFyZ3ZhbD0nZXhjZXB0aW9uIG1hdGNoJywgYXJncmVwcj0nZXhjZXB0aW9uIG1hdGNoJywgb2Zmc2V0PTE2NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTE4NywgYXJndmFsPTE4NywgYXJncmVwcj0nJywgb2Zmc2V0PTE2Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNzMsIHN0YXJ0c19saW5lPTIzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9J0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nLCBhcmdyZXByPSInSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLiciLCBvZmZzZXQ9MTc2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xNzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9FWENFUFQnLCBvcGNvZGU9ODksIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yNywgYXJndmFsPTIxNCwgYXJncmVwcj0ndG8gMjE0Jywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE4OCwgc3RhcnRzX2xpbmU9MjUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX1dJVEgnLCBvcGNvZGU9MTQzLCBhcmc9MTcsIGFyZ3ZhbD0yMTEsIGFyZ3JlcHI9J3RvIDIxMScsIG9mZnNldD0xOTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTEsIGFyZ3ZhbD0nZG9kZ3knLCBhcmdyZXByPSdkb2RneScsIG9mZnNldD0xOTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTk3LCBzdGFydHNfbGluZT0yNiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OSwgYXJndmFsPSdOZXZlciByZWFjaCB0aGlzJywgYXJncmVwcj0iJ05ldmVyIHJlYWNoIHRoaXMnIiwgb2Zmc2V0PTIwMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjA4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX1NUQVJUJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9GSU5JU0gnLCBvcGNvZGU9ODIsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjE4LCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MjIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIyOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz01MiwgYXJndmFsPTU0LCBhcmdyZXByPSd0byA1NCcsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdyYW5nZScsIGFyZ3JlcHI9J3JhbmdlJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nMTAnLCBvZmZzZXQ9NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nR0VUX0lURVInLCBvcGNvZGU9NjgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTMyLCBhcmd2YWw9NDQsIGFyZ3JlcHI9J3RvIDQ0Jywgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0zMiwgYXJndmFsPTMyLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEwLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JycsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTM0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTAsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NDAsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEwLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JycsIG9mZnNldD00Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NDQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD00Niwgc3RhcnRzX2xpbmU9MTAsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nSSBjYW4gaGF6IGVsc2UgY2xhdXNlPycsIGFyZ3JlcHI9IidJIGNhbiBoYXogZWxzZSBjbGF1c2U/JyIsIG9mZnNldD00OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD01MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTUyLCBhcmd2YWw9MTA4LCBhcmdyZXByPSd0byAxMDgnLCBvZmZzZXQ9NTQsIHN0YXJ0c19saW5lPTExLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD01Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9OTgsIGFyZ3ZhbD05OCwgYXJncmVwcj0nJywgb2Zmc2V0PTU4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTYwLCBzdGFydHNfbGluZT0xMiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTYyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD02Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTY4LCBzdGFydHNfbGluZT0xMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9NzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdJTlBMQUNFX1NVQlRSQUNUJywgb3Bjb2RlPTU2LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD03Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD03NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTc2LCBzdGFydHNfbGluZT0xNCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9NzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9ODAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz04NiwgYXJndmFsPTg2LCBhcmdyZXByPScnLCBvZmZzZXQ9ODIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTU2LCBhcmd2YWw9NTYsIGFyZ3JlcHI9JycsIG9mZnNldD04NCwgc3RhcnRzX2xpbmU9MTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04Niwgc3RhcnRzX2xpbmU9MTYsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9ODgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9OTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz01NiwgYXJndmFsPTU2LCBhcmdyZXByPScnLCBvZmZzZXQ9OTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05NCwgc3RhcnRzX2xpbmU9MTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTU2LCBhcmd2YWw9NTYsIGFyZ3JlcHI9JycsIG9mZnNldD05Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xMDAsIHN0YXJ0c19saW5lPTE5LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9J1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nLCBhcmdyZXByPSInV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyciLCBvZmZzZXQ9MTAyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRklOQUxMWScsIG9wY29kZT0xMjIsIGFyZz03MCwgYXJndmFsPTE4MCwgYXJncmVwcj0ndG8gMTgwJywgb2Zmc2V0PTEwOCwgc3RhcnRzX2xpbmU9MjAsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0VYQ0VQVCcsIG9wY29kZT0xMjEsIGFyZz0xMiwgYXJndmFsPTEyNCwgYXJncmVwcj0ndG8gMTI0Jywgb2Zmc2V0PTExMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MTEyLCBzdGFydHNfbGluZT0yMSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPTAsIGFyZ3JlcHI9JzAnLCBvZmZzZXQ9MTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQklOQVJZX1RSVUVfRElWSURFJywgb3Bjb2RlPTI3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTExOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI4LCBhcmd2YWw9MTUyLCBhcmdyZXByPSd0byAxNTInLCBvZmZzZXQ9MTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRFVQX1RPUCcsIG9wY29kZT00LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjQsIHN0YXJ0c19saW5lPTIyLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0yLCBhcmd2YWw9J1plcm9EaXZpc2lvbkVycm9yJywgYXJncmVwcj0nWmVyb0RpdmlzaW9uRXJyb3InLCBvZmZzZXQ9MTI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0xMCwgYXJndmFsPSdleGNlcHRpb24gbWF0Y2gnLCBhcmdyZXByPSdleGNlcHRpb24gbWF0Y2gnLCBvZmZzZXQ9MTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTUwLCBhcmd2YWw9MTUwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTEzOCwgc3RhcnRzX2xpbmU9MjMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0nSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLicsIGFyZ3JlcHI9IidIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJyIsIG9mZnNldD0xNDAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfRVhDRVBUJywgb3Bjb2RlPTg5LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjYsIGFyZ3ZhbD0xNzYsIGFyZ3JlcHI9J3RvIDE3NicsIG9mZnNldD0xNDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNTIsIHN0YXJ0c19saW5lPTI1LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9XSVRIJywgb3Bjb2RlPTE0MywgYXJnPTE0LCBhcmd2YWw9MTcwLCBhcmdyZXByPSd0byAxNzAnLCBvZmZzZXQ9MTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0xLCBhcmd2YWw9J2RvZGd5JywgYXJncmVwcj0nZG9kZ3knLCBvZmZzZXQ9MTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE1OCwgc3RhcnRzX2xpbmU9MjYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTksIGFyZ3ZhbD0nTmV2ZXIgcmVhY2ggdGhpcycsIGFyZ3JlcHI9IidOZXZlciByZWFjaCB0aGlzJyIsIG9mZnNldD0xNjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTY4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX1NUQVJUJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9GSU5JU0gnLCBvcGNvZGU9ODIsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0xNzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTgwLCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTkwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xOTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogIyBPbmUgbGFzdCBwaWVjZSBvZiBpbnNwZWN0IGZvZGRlciB0byBjaGVjayB0aGUgZGVmYXVsdCBsaW5lIG51bWJlciBoYW5kbGluZwogZGVmIHNpbXBsZSgpOiBwYXNzCiBleHBlY3RlZF9vcGluZm9fc2ltcGxlID0gWwogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9c2ltcGxlLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSkKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKQogXQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQppbmRleCAzMzE2M2I5Li4yMjU4YzZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CkBAIC0yOTEsNyArMjkxLDcgQEAKICAgICAuLi4KICAgICAuLi4gTm9uLWV4YW1wbGUgdGV4dC4KICAgICAuLi4KLSAgICAuLi4gICAgID4+PiBwcmludCgnYW5vdGhlclxleGFtcGxlJykKKyAgICAuLi4gICAgID4+PiBwcmludCgnYW5vdGhlclxcZXhhbXBsZScpCiAgICAgLi4uICAgICBhbm90aGVyCiAgICAgLi4uICAgICBleGFtcGxlCiAgICAgLi4uICcnJwpAQCAtMTg3Niw3ICsxODc2LDYgQEAKICAgICAgICAgVG8gZGVtb25zdHJhdGUgdGhpcywgd2UnbGwgY3JlYXRlIGEgZmFrZSBzdGFuZGFyZCBpbnB1dCB0aGF0CiAgICAgICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKIAotICAgICAgICAgID4+PiBpbXBvcnQgdGVtcGZpbGUKICAgICAgICAgICA+Pj4gcmVhbF9zdGRpbiA9IHN5cy5zdGRpbgogICAgICAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKICAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCkBAIC0xOTE3LDcgKzE5MTYsNyBAQAogICAgICAgICAgIC4uLiBmaW5hbGx5OgogICAgICAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgogICAgICAgICAgIC0tUmV0dXJuLS0KLSAgICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZVs4XT4oMyljYWxsc19zZXRfdHJhY2UoKS0+Tm9uZQorICAgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlWzddPigzKWNhbGxzX3NldF90cmFjZSgpLT5Ob25lCiAgICAgICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCiAgICAgICAgICAgKFBkYikgcHJpbnQoeSkKICAgICAgICAgICAyCkBAIC0yNzk4LDcgKzI3OTcsNiBAQAogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCIgICAgICAgJ2FiYyBkZWYnXG4iKQogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCJcbiIpCiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJyAgIFwiXCJcIlxuJykKLSAgICAuLi4gICAgIGltcG9ydCBzaHV0aWwKICAgICAuLi4gICAgIHJjMSwgb3V0MSwgZXJyMSA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKAogICAgIC4uLiAgICAgICAgICAgICAnLW0nLCAnZG9jdGVzdCcsIGZuLCBmbjIpCiAgICAgLi4uICAgICByYzIsIG91dDIsIGVycjIgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soCkBAIC0yOTQyLDEyICsyOTQwLDExIEBACiBkZWYgdGVzdF9tYWluKCk6CiAgICAgIyBDaGVjayB0aGUgZG9jdGVzdCBjYXNlcyBpbiBkb2N0ZXN0IGl0c2VsZjoKICAgICByZXQgPSBzdXBwb3J0LnJ1bl9kb2N0ZXN0KGRvY3Rlc3QsIHZlcmJvc2l0eT1UcnVlKQorCiAgICAgIyBDaGVjayB0aGUgZG9jdGVzdCBjYXNlcyBkZWZpbmVkIGhlcmU6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2RvY3Rlc3QKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCiAKLWltcG9ydCBzeXMsIHJlLCBpbwotCiBkZWYgdGVzdF9jb3ZlcmFnZShjb3ZlcmRpcik6CiAgICAgdHJhY2UgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3RyYWNlJykKICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LF0sCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3RfZHRyYWNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMjM5YjMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2R0cmFjZS5weQpAQCAtMCwwICsxLDE3OCBAQAoraW1wb3J0IGRpcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgcnVuX3VuaXR0ZXN0CisKKworZGVmIGFic3BhdGgoZmlsZW5hbWUpOgorICAgIHJldHVybiBvcy5wYXRoLmFic3BhdGgoZmluZGZpbGUoZmlsZW5hbWUsIHN1YmRpcj0iZHRyYWNlZGF0YSIpKQorCisKK2RlZiBub3JtYWxpemVfdHJhY2Vfb3V0cHV0KG91dHB1dCk6CisgICAgIiIiTm9ybWFsaXplIERUcmFjZSBvdXRwdXQgZm9yIGNvbXBhcmlzb24uCisKKyAgICBEVHJhY2Uga2VlcHMgYSBwZXItQ1BVIGJ1ZmZlciwgYW5kIHdoZW4gc2hvd2luZyB0aGUgZmlyZWQgcHJvYmVzLCBidWZmZXJzCisgICAgYXJlIGNvbmNhdGVuYXRlZC4gU28gaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gbW92ZXMgb3VyIHRocmVhZCBhcm91bmQsIHRoZQorICAgIHN0cmFpZ2h0IHJlc3VsdCBjYW4gYmUgIm5vbi1jYXVzYWwiLiBTbyB3ZSBhZGQgdGltZXN0YW1wcyB0byB0aGUgcHJvYmUKKyAgICBmaXJpbmcsIHNvcnQgYnkgdGhhdCBmaWVsZCwgdGhlbiBzdHJpcCBpdCBmcm9tIHRoZSBvdXRwdXQiIiIKKworICAgICMgV2hlbiBjb21waWxpbmcgd2l0aCAnLS13aXRoLXB5ZGVidWcnLCBzdHJpcCAnWyMgcmVmc10nIGRlYnVnIG91dHB1dC4KKyAgICBvdXRwdXQgPSByZS5zdWIociJcW1swLTldKyByZWZzXF0iLCAiIiwgb3V0cHV0KQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gWworICAgICAgICAgICAgcm93LnNwbGl0KCJcdCIpCisgICAgICAgICAgICBmb3Igcm93IGluIG91dHB1dC5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgIGlmIHJvdyBhbmQgbm90IHJvdy5zdGFydHN3aXRoKCcjJykKKyAgICAgICAgXQorICAgICAgICByZXN1bHQuc29ydChrZXk9bGFtYmRhIHJvdzogaW50KHJvd1swXSkpCisgICAgICAgIHJlc3VsdCA9IFtyb3dbMV0gZm9yIHJvdyBpbiByZXN1bHRdCisgICAgICAgIHJldHVybiAiXG4iLmpvaW4ocmVzdWx0KQorICAgIGV4Y2VwdCAoSW5kZXhFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgInRyYWNlciBwcm9kdWNlZCB1bnBhcnNlYWJsZSBvdXRwdXQ6XG57fSIuZm9ybWF0KG91dHB1dCkKKyAgICAgICAgKQorCisKK2NsYXNzIFRyYWNlQmFja2VuZDoKKyAgICBFWFRFTlNJT04gPSBOb25lCisgICAgQ09NTUFORCA9IE5vbmUKKyAgICBDT01NQU5EX0FSR1MgPSBbXQorCisgICAgZGVmIHJ1bl9jYXNlKHNlbGYsIG5hbWUsIG9wdGltaXplX3B5dGhvbj1Ob25lKToKKyAgICAgICAgYWN0dWFsX291dHB1dCA9IG5vcm1hbGl6ZV90cmFjZV9vdXRwdXQoc2VsZi50cmFjZV9weXRob24oCisgICAgICAgICAgICBzY3JpcHRfZmlsZT1hYnNwYXRoKG5hbWUgKyBzZWxmLkVYVEVOU0lPTiksCisgICAgICAgICAgICBweXRob25fZmlsZT1hYnNwYXRoKG5hbWUgKyAiLnB5IiksCisgICAgICAgICAgICBvcHRpbWl6ZV9weXRob249b3B0aW1pemVfcHl0aG9uKSkKKworICAgICAgICB3aXRoIG9wZW4oYWJzcGF0aChuYW1lICsgc2VsZi5FWFRFTlNJT04gKyAiLmV4cGVjdGVkIikpIGFzIGY6CisgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSBmLnJlYWQoKS5yc3RyaXAoKQorCisgICAgICAgIHJldHVybiAoZXhwZWN0ZWRfb3V0cHV0LCBhY3R1YWxfb3V0cHV0KQorCisgICAgZGVmIGdlbmVyYXRlX3RyYWNlX2NvbW1hbmQoc2VsZiwgc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQ9Tm9uZSk6CisgICAgICAgIGNvbW1hbmQgPSBzZWxmLkNPTU1BTkQgKyBbc2NyaXB0X2ZpbGVdCisgICAgICAgIGlmIHN1YmNvbW1hbmQ6CisgICAgICAgICAgICBjb21tYW5kICs9IFsiLWMiLCBzdWJjb21tYW5kXQorICAgICAgICByZXR1cm4gY29tbWFuZAorCisgICAgZGVmIHRyYWNlKHNlbGYsIHNjcmlwdF9maWxlLCBzdWJjb21tYW5kPU5vbmUpOgorICAgICAgICBjb21tYW5kID0gc2VsZi5nZW5lcmF0ZV90cmFjZV9jb21tYW5kKHNjcmlwdF9maWxlLCBzdWJjb21tYW5kKQorICAgICAgICBzdGRvdXQsIF8gPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpLmNvbW11bmljYXRlKCkKKyAgICAgICAgcmV0dXJuIHN0ZG91dAorCisgICAgZGVmIHRyYWNlX3B5dGhvbihzZWxmLCBzY3JpcHRfZmlsZSwgcHl0aG9uX2ZpbGUsIG9wdGltaXplX3B5dGhvbj1Ob25lKToKKyAgICAgICAgcHl0aG9uX2ZsYWdzID0gW10KKyAgICAgICAgaWYgb3B0aW1pemVfcHl0aG9uOgorICAgICAgICAgICAgcHl0aG9uX2ZsYWdzLmV4dGVuZChbIi1PIl0gKiBvcHRpbWl6ZV9weXRob24pCisgICAgICAgIHN1YmNvbW1hbmQgPSAiICIuam9pbihbc3lzLmV4ZWN1dGFibGVdICsgcHl0aG9uX2ZsYWdzICsgW3B5dGhvbl9maWxlXSkKKyAgICAgICAgcmV0dXJuIHNlbGYudHJhY2Uoc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQpCisKKyAgICBkZWYgYXNzZXJ0X3VzYWJsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi50cmFjZShhYnNwYXRoKCJhc3NlcnRfdXNhYmxlIiArIHNlbGYuRVhURU5TSU9OKSkKKyAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5zdHJpcCgpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvciBhcyBmbmZlOgorICAgICAgICAgICAgb3V0cHV0ID0gc3RyKGZuZmUpCisgICAgICAgIGlmIG91dHB1dCAhPSAicHJvYmU6IHN1Y2Nlc3MiOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAgICAgICAgICAgInt9KDEpIGZhaWxlZDoge30iLmZvcm1hdChzZWxmLkNPTU1BTkRbMF0sIG91dHB1dCkKKyAgICAgICAgICAgICkKKworCitjbGFzcyBEVHJhY2VCYWNrZW5kKFRyYWNlQmFja2VuZCk6CisgICAgRVhURU5TSU9OID0gIi5kIgorICAgIENPTU1BTkQgPSBbImR0cmFjZSIsICItcSIsICItcyJdCisKKworY2xhc3MgU3lzdGVtVGFwQmFja2VuZChUcmFjZUJhY2tlbmQpOgorICAgIEVYVEVOU0lPTiA9ICIuc3RwIgorICAgIENPTU1BTkQgPSBbInN0YXAiLCAiLWciXQorCisKK2NsYXNzIFRyYWNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdW5pdHRlc3QuVGVzdENhc2Ugb3B0aW9ucworICAgIG1heERpZmYgPSBOb25lCisKKyAgICAjIFRyYWNlVGVzdHMgb3B0aW9ucworICAgIGJhY2tlbmQgPSBOb25lCisgICAgb3B0aW1pemVfcHl0aG9uID0gMAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYmFja2VuZC5hc3NlcnRfdXNhYmxlKCkKKworICAgIGRlZiBydW5fY2FzZShzZWxmLCBuYW1lKToKKyAgICAgICAgYWN0dWFsX291dHB1dCwgZXhwZWN0ZWRfb3V0cHV0ID0gc2VsZi5iYWNrZW5kLnJ1bl9jYXNlKAorICAgICAgICAgICAgbmFtZSwgb3B0aW1pemVfcHl0aG9uPXNlbGYub3B0aW1pemVfcHl0aG9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9vdXRwdXQsIGV4cGVjdGVkX291dHB1dCkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2VudHJ5X3JldHVybihzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgiY2FsbF9zdGFjayIpCisKKyAgICBkZWYgdGVzdF92ZXJpZnlfY2FsbF9vcGNvZGVzKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgb3VyIGNhbGwgc3RhY2sgdGVzdCBoaXRzIGFsbCBmdW5jdGlvbiBjYWxsIG9wY29kZXMiIiIKKworICAgICAgICBvcGNvZGVzID0gc2V0KFsiQ0FMTF9GVU5DVElPTiIsICJDQUxMX0ZVTkNUSU9OX0VYIiwgIkNBTExfRlVOQ1RJT05fS1ciXSkKKworICAgICAgICB3aXRoIG9wZW4oYWJzcGF0aCgiY2FsbF9zdGFjay5weSIpKSBhcyBmOgorICAgICAgICAgICAgY29kZV9zdHJpbmcgPSBmLnJlYWQoKQorCisgICAgICAgIGRlZiBnZXRfZnVuY3Rpb25faW5zdHJ1Y3Rpb25zKGZ1bmNuYW1lKToKKyAgICAgICAgICAgICMgUmVjb21waWxlIHdpdGggYXBwcm9wcmlhdGUgb3B0aW1pemF0aW9uIHNldHRpbmcKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKHNvdXJjZT1jb2RlX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSI8c3RyaW5nPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlPSJleGVjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPXNlbGYub3B0aW1pemVfcHl0aG9uKQorCisgICAgICAgICAgICBmb3IgYyBpbiBjb2RlLmNvX2NvbnN0czoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGMsIHR5cGVzLkNvZGVUeXBlKSBhbmQgYy5jb19uYW1lID09IGZ1bmNuYW1lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlzLmdldF9pbnN0cnVjdGlvbnMoYykKKyAgICAgICAgICAgIHJldHVybiBbXQorCisgICAgICAgIGZvciBpbnN0cnVjdGlvbiBpbiBnZXRfZnVuY3Rpb25faW5zdHJ1Y3Rpb25zKCdzdGFydCcpOgorICAgICAgICAgICAgb3Bjb2Rlcy5kaXNjYXJkKGluc3RydWN0aW9uLm9wbmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCBvcGNvZGVzKQorCisgICAgZGVmIHRlc3RfZ2Moc2VsZik6CisgICAgICAgIHNlbGYucnVuX2Nhc2UoImdjIikKKworICAgIGRlZiB0ZXN0X2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2Nhc2UoImxpbmUiKQorCisKK2NsYXNzIERUcmFjZU5vcm1hbFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBEVHJhY2VCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKworY2xhc3MgRFRyYWNlT3B0aW1pemVkVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IERUcmFjZUJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDIKKworCitjbGFzcyBTeXN0ZW1UYXBOb3JtYWxUZXN0cyhUcmFjZVRlc3RzKToKKyAgICBiYWNrZW5kID0gU3lzdGVtVGFwQmFja2VuZCgpCisgICAgb3B0aW1pemVfcHl0aG9uID0gMAorCisKK2NsYXNzIFN5c3RlbVRhcE9wdGltaXplZFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBTeXN0ZW1UYXBCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAyCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChEVHJhY2VOb3JtYWxUZXN0cywgRFRyYWNlT3B0aW1pemVkVGVzdHMsIFN5c3RlbVRhcE5vcm1hbFRlc3RzLAorICAgICAgICAgICAgICAgICBTeXN0ZW1UYXBPcHRpbWl6ZWRUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKaW5kZXggNTA4MGVjOS4uM2FlMDkwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQpAQCAtMSw3ICsxLDYgQEAKICMgVGVzdCB0aGUgbW9zdCBkeW5hbWljIGNvcm5lciBjYXNlcyBvZiBQeXRob24ncyBydW50aW1lIHNlbWFudGljcy4KIAogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzd2FwX2l0ZW0sIHN3YXBfYXR0cgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9laW50ci5weSBiL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKaW5kZXggYWFiYWQ4My4uMjVmODZkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9laW50ci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5CkBAIC0xLDcgKzEsNSBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTYsMTQgKzE0LDggQEAKICAgICAgICAgIyBSdW4gdGhlIHRlc3RlciBpbiBhIHN1Yi1wcm9jZXNzLCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUKICAgICAgICAgIyB0aHJlYWQgKGZvciByZWxpYWJsZSBzaWduYWwgZGVsaXZlcnkpLgogICAgICAgICB0ZXN0ZXIgPSBzdXBwb3J0LmZpbmRmaWxlKCJlaW50cl90ZXN0ZXIucHkiLCBzdWJkaXI9ImVpbnRyZGF0YSIpCi0KLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgdGVzdGVyXQotICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpIGFzIHByb2M6Ci0gICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jLndhaXQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayh0ZXN0ZXIpCisgICAgICAgICMgdXNlIC11IHRvIHRyeSB0byBnZXQgdGhlIGZ1bGwgb3V0cHV0IGlmIHRoZSB0ZXN0IGhhbmdzIG9yIGNyYXNoCisgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygiLXUiLCB0ZXN0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5CmluZGV4IGQ0YTAzZWUuLjg4ODc1MWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBlbWFpbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IGY3YWMwZTMuLjI2ZWNlNjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTU4MSw3ICs1ODEsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXVvdGVkX3BhcmVucyhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCi0gICAgICAgICAgICAnKGZvb1wpIFwoXCliYXIpJywgJyhmb29cKSBcKFwpYmFyKScsICcgJywgW10sICcnLCBbJ2ZvbykgKCliYXInXSkKKyAgICAgICAgICAgIHInKGZvb1wpIFwoXCliYXIpJywgcicoZm9vXCkgXChcKWJhciknLCAnICcsIFtdLCAnJywgWydmb28pICgpYmFyJ10pCiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub25fcHJpbnRhYmxlKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKQEAgLTYyNSw3ICs2MjUsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXNfaW5fbmVzdGVkX2NvbW1lbnQoc2VsZik6CiAgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKLSAgICAgICAgICAgICcoZm9vIChiXCkpKScsICcoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbJ2ZvbyAoYlwpKSddKQorICAgICAgICAgICAgcicoZm9vIChiXCkpKScsIHInKGZvbyAoYlwpKSknLCAnICcsIFtdLCAnJywgW3InZm9vIChiXCkpJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudFsyXS5jb250ZW50LCAnYiknKQogCiAgICAgIyBnZXRfY2Z3cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKaW5kZXggZjljZDdkOS4uMWUwY2FlZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CkBAIC0zLDcgKzMsNiBAQAogIyBlbWFpbCBwYWNrYWdlIHVuaXQgdGVzdHMgZm9yIChvcHRpb25hbCkgQXNpYW4gY29kZWNzCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQogZnJvbSBlbWFpbC5jaGFyc2V0IGltcG9ydCBDaGFyc2V0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKaW5kZXggYTUzY2M5Yi4uZGFhMTI4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMzEsNiArMzEsNyBAQAogZnJvbSBlbWFpbC5taW1lLmJhc2UgaW1wb3J0IE1JTUVCYXNlCiBmcm9tIGVtYWlsLm1pbWUubWVzc2FnZSBpbXBvcnQgTUlNRU1lc3NhZ2UKIGZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKK2Zyb20gZW1haWwubWltZS5ub25tdWx0aXBhcnQgaW1wb3J0IE1JTUVOb25NdWx0aXBhcnQKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IGVuY29kZXJzCkBAIC0yMDc3LDcgKzIwNzgsMTMgQEAKIC0tPT09PT09PT09PT09PT09MDAxMjM5NDE2ND09LS0iIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5nZXRfcGF5bG9hZCgwKS5nZXRfcGF5bG9hZCgpLCAnWVhOa1pnPT0nKQogCisgICAgZGVmIHRlc3RfbWltZWJhc2VfZGVmYXVsdF9wb2xpY3koc2VsZik6CisgICAgICAgIG0gPSBNSU1FQmFzZSgnbXVsdGlwYXJ0JywgJ21peGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmNvbXBhdDMyKQogCisgICAgZGVmIHRlc3RfbWltZWJhc2VfY3VzdG9tX3BvbGljeShzZWxmKToKKyAgICAgICAgbSA9IE1JTUVCYXNlKCdtdWx0aXBhcnQnLCAnbWl4ZWQnLCBwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5kZWZhdWx0KQogCiAjIFRlc3Qgc29tZSBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMKIGNsYXNzIFRlc3ROb25Db25mb3JtYW50KFRlc3RFbWFpbEJhc2UpOgpAQCAtMjY3OSw2ICsyNjg2LDE5IEBACiAgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobXNnLmlzX211bHRpcGFydCgpKQogCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2RlZmF1bHRfcG9saWN5KHNlbGYpOgorICAgICAgICBtc2cgPSBNSU1FTXVsdGlwYXJ0KCkKKyAgICAgICAgbXNnWydUbyddID0gJ2FAYi5jb20nCisgICAgICAgIG1zZ1snVG8nXSA9ICdjQGQuY29tJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfYWxsKCd0bycpLCBbJ2FAYi5jb20nLCAnY0BkLmNvbSddKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2N1c3RvbV9wb2xpY3koc2VsZik6CisgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQocG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0KQorICAgICAgICBtc2dbJ1RvJ10gPSAnYUBiLmNvbScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIG1zZ1snVG8nXSA9ICdjQGQuY29tJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUaGVyZSBtYXkgYmUgYXQgbW9zdCAxIFRvIGhlYWRlcnMgaW4gYSBtZXNzYWdlJykKIAogIyBBIGdlbmVyYWwgdGVzdCBvZiBwYXJzZXItPm1vZGVsLT5nZW5lcmF0b3IgaWRlbXBvdGVuY3kuICBJT1csIHJlYWQgYSBtZXNzYWdlCiAjIGluLCBwYXJzZSBpdCBpbnRvIGEgbWVzc2FnZSBvYmplY3QgdHJlZSwgdGhlbiB3aXRob3V0IHRvdWNoaW5nIHRoZSB0cmVlLApAQCAtMzAzMiw3ICszMDUyLDcgQEAKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV9iYWNrc2xhc2hlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHV0aWxzLmZvcm1hdGFkZHIoKCdBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJywgJ3BlcnNvbkBkb20uYWluJykpLAorICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigocidBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJywgJ3BlcnNvbkBkb20uYWluJykpLAogICAgICAgICAgICAgciciQXJ0aHVyIFxcQmFja3NsYXNoXFwgRm9vYmFyIiA8cGVyc29uQGRvbS5haW4+JykKICAgICAgICAgYSA9IHInQXJ0aHVyIFxCYWNrc2xhc2hcIEZvb2JhcicKICAgICAgICAgYiA9ICdwZXJzb25AZG9tLmFpbicKQEAgLTMzMjgsNiArMzM0OCwyNyBAQAogICAgICAgICBnLmZsYXR0ZW4obXNnLCBsaW5lc2VwPSdcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIG1zZ3R4dCkKIAorICAgIGRlZiB0ZXN0X21pbWVfY2xhc3Nlc19wb2xpY3lfYXJndW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ2F1ZGlvdGVzdC5hdScsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgYXVkaW9kYXRhID0gZnAucmVhZCgpCisgICAgICAgIHdpdGggb3BlbmZpbGUoJ1B5QmFubmVyMDQ4LmdpZicsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgYmluZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICBjbGFzc2VzID0gWworICAgICAgICAgICAgKE1JTUVBcHBsaWNhdGlvbiwgKCcnLCkpLAorICAgICAgICAgICAgKE1JTUVBdWRpbywgKGF1ZGlvZGF0YSwpKSwKKyAgICAgICAgICAgIChNSU1FSW1hZ2UsIChiaW5kYXRhLCkpLAorICAgICAgICAgICAgKE1JTUVNZXNzYWdlLCAoTWVzc2FnZSgpLCkpLAorICAgICAgICAgICAgKE1JTUVOb25NdWx0aXBhcnQsICgnbXVsdGlwYXJ0JywgJ21peGVkJykpLAorICAgICAgICAgICAgKE1JTUVUZXh0LCAoJycsKSksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGNscywgY29uc3RydWN0b3IgaW4gY2xhc3NlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNscz1jbHMuX19uYW1lX18sIHBvbGljeT0nY29tcGF0MzInKToKKyAgICAgICAgICAgICAgICBtID0gY2xzKCpjb25zdHJ1Y3RvcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0ucG9saWN5LCBlbWFpbC5wb2xpY3kuY29tcGF0MzIpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbHM9Y2xzLl9fbmFtZV9fLCBwb2xpY3k9J2RlZmF1bHQnKToKKyAgICAgICAgICAgICAgICBtID0gY2xzKCpjb25zdHJ1Y3RvciwgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5kZWZhdWx0KQorCiAKICMgVGVzdCB0aGUgaXRlcmF0b3IvZ2VuZXJhdG9ycwogY2xhc3MgVGVzdEl0ZXJhdG9ycyhUZXN0RW1haWxCYXNlKToKQEAgLTM0MzYsNyArMzQ3Nyw2IEBACiBjbGFzcyBUZXN0RmVlZFBhcnNlcnMoVGVzdEVtYWlsQmFzZSk6CiAKICAgICBkZWYgcGFyc2Uoc2VsZiwgY2h1bmtzKToKLSAgICAgICAgZnJvbSBlbWFpbC5mZWVkcGFyc2VyIGltcG9ydCBGZWVkUGFyc2VyCiAgICAgICAgIGZlZWRwYXJzZXIgPSBGZWVkUGFyc2VyKCkKICAgICAgICAgZm9yIGNodW5rIGluIGNodW5rczoKICAgICAgICAgICAgIGZlZWRwYXJzZXIuZmVlZChjaHVuaykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CmluZGV4IGIxY2JjZTIuLjdjODg3N2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQpAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgZGVmIHRlc3Rfc2V0X21hbmdsZV9mcm9tX3ZpYV9wb2xpY3koc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCiAgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0IHRoYXQKLSAgICAgICAgICAgICBmcm9tIGlzIG1hbmdlbGQgaW4gdGhlIGJvZHkhCisgICAgICAgICAgICAgZnJvbSBpcyBtYW5nbGVkIGluIHRoZSBib2R5IQogCiAgICAgICAgICAgICBGcm9tIHRpbWUgdG8gdGltZSBJIHdyaXRlIGEgcmh5bWUuCiAgICAgICAgICAgICAiIiIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKaW5kZXggNTVlY2RlYS4uYWY4MzZkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQpAQCAtMSw3ICsxLDYgQEAKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0eXBlcwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCiBmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQppbmRleCA0MzQ1MTYyLi5mM2E1N2RmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQpAQCAtNzY0LDYgKzc2NCwyNiBAQAogICAgICAgICBtLnNldF9jb250ZW50KGNvbnRlbnRfbWFuYWdlcj1jbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydNSU1FLVZlcnNpb24nXSwgJzEuMCcpCiAKKyAgICBkZWYgdGVzdF9hc19zdHJpbmdfdXNlc19tYXhfaGVhZGVyX2xlbmd0aF9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmFzX3N0cmluZygpLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwgMykKKworICAgIGRlZiB0ZXN0X2FzX3N0cmluZ19hbGxvd3NfbWF4aGVhZGVybGVuKHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmFzX3N0cmluZyhtYXhoZWFkZXJsZW49MCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKG1heGhlYWRlcmxlbj0zNCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDYpCisKKyAgICBkZWYgdGVzdF9zdHJfZGVmYXVsdHNfdG9fcG9saWN5X21heF9saW5lX2xlbmd0aChzZWxmKToKKyAgICAgICAgbSA9IHNlbGYuX3N0cl9tc2coJ1N1YmplY3Q6IGxvbmcgbGluZScgKyAnIGFiJyo1MCArICdcblxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RyKG0pLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwgMykKKworICAgIGRlZiB0ZXN0X3N0cl9kZWZhdWx0c190b191dGY4KHNlbGYpOgorICAgICAgICBtID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbVsnU3ViamVjdCddID0gJ3VuaWPDtmRlJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtKSwgJ1N1YmplY3Q6IHVuaWPDtmRlXG5cbicpCisKIAogY2xhc3MgVGVzdE1JTUVQYXJ0KFRlc3RFbWFpbE1lc3NhZ2VCYXNlLCBUZXN0RW1haWxCYXNlKToKICAgICAjIERvaW5nIHRoZSBmdWxsIHRlc3QgcnVuIGhlcmUgbWF5IHNlZW0gYSBiaXQgcmVkdW5kYW50LCBzaW5jZSB0aGUgdHdvCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQppbmRleCA4ZGRjMTc2My4uMDZjODY0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgZW1haWwKIGltcG9ydCB1bml0dGVzdAotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UsIEVtYWlsTWVzc2FnZQogZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiAKQEAgLTM5LDM4ICszOSw3MSBAQAogICAgICAgICAjIFRoZSB1bmljb2RlIGxpbmUgc3BsaXR0ZXIgc3BsaXRzIG9uIHVuaWNvZGUgbGluZWJyZWFrcywgd2hpY2ggYXJlCiAgICAgICAgICMgbW9yZSBudW1lcm91cyB0aGFuIGFsbG93ZWQgYnkgdGhlIGVtYWlsIFJGQ3M7IG1ha2Ugc3VyZSB3ZSBhcmUgb25seQogICAgICAgICAjIHNwbGl0dGluZyBvbiB0aG9zZSB0d28uCi0gICAgICAgIG1zZyA9IHNlbGYucGFyc2VyKAotICAgICAgICAgICAgIk5leHQtTGluZTogbm90XHg4NWJyb2tlblxyXG4iCi0gICAgICAgICAgICAiTnVsbDogbm90XHgwMGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiVmVydGljYWwtVGFiOiBub3RcdmJyb2tlblxyXG4iCi0gICAgICAgICAgICAiRm9ybS1GZWVkOiBub3RcZmJyb2tlblxyXG4iCi0gICAgICAgICAgICAiRmlsZS1TZXBhcmF0b3I6IG5vdFx4MUNicm9rZW5cclxuIgotICAgICAgICAgICAgIkdyb3VwLVNlcGFyYXRvcjogbm90XHgxRGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiUmVjb3JkLVNlcGFyYXRvcjogbm90XHgxRWJyb2tlblxyXG4iCi0gICAgICAgICAgICAiTGluZS1TZXBhcmF0b3I6IG5vdFx1MjAyOGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiUGFyYWdyYXBoLVNlcGFyYXRvcjogbm90XHUyMDI5YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJcclxuIiwKLSAgICAgICAgICAgIHBvbGljeT1kZWZhdWx0LAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLml0ZW1zKCksIFsKLSAgICAgICAgICAgICgiTmV4dC1MaW5lIiwgIm5vdFx4ODVicm9rZW4iKSwKLSAgICAgICAgICAgICgiTnVsbCIsICJub3RceDAwYnJva2VuIiksCi0gICAgICAgICAgICAoIlZlcnRpY2FsLVRhYiIsICJub3RcdmJyb2tlbiIpLAotICAgICAgICAgICAgKCJGb3JtLUZlZWQiLCAibm90XGZicm9rZW4iKSwKLSAgICAgICAgICAgICgiRmlsZS1TZXBhcmF0b3IiLCAibm90XHgxQ2Jyb2tlbiIpLAotICAgICAgICAgICAgKCJHcm91cC1TZXBhcmF0b3IiLCAibm90XHgxRGJyb2tlbiIpLAotICAgICAgICAgICAgKCJSZWNvcmQtU2VwYXJhdG9yIiwgIm5vdFx4MUVicm9rZW4iKSwKLSAgICAgICAgICAgICgiTGluZS1TZXBhcmF0b3IiLCAibm90XHUyMDI4YnJva2VuIiksCi0gICAgICAgICAgICAoIlBhcmFncmFwaC1TZXBhcmF0b3IiLCAibm90XHUyMDI5YnJva2VuIiksCi0gICAgICAgIF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICIiKQorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigKKyAgICAgICAgICAgICAgICAgICAgIk5leHQtTGluZTogbm90XHg4NWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJOdWxsOiBub3RceDAwYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlZlcnRpY2FsLVRhYjogbm90XHZicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiRm9ybS1GZWVkOiBub3RcZmJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJGaWxlLVNlcGFyYXRvcjogbm90XHgxQ2Jyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJHcm91cC1TZXBhcmF0b3I6IG5vdFx4MURicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiUmVjb3JkLVNlcGFyYXRvcjogbm90XHgxRWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJMaW5lLVNlcGFyYXRvcjogbm90XHUyMDI4YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlBhcmFncmFwaC1TZXBhcmF0b3I6IG5vdFx1MjAyOWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgcG9saWN5PWRlZmF1bHQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLml0ZW1zKCksIFsKKyAgICAgICAgICAgICAgICAgICAgKCJOZXh0LUxpbmUiLCAibm90XHg4NWJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIk51bGwiLCAibm90XHgwMGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlZlcnRpY2FsLVRhYiIsICJub3RcdmJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkZvcm0tRmVlZCIsICJub3RcZmJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkZpbGUtU2VwYXJhdG9yIiwgIm5vdFx4MUNicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJHcm91cC1TZXBhcmF0b3IiLCAibm90XHgxRGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlJlY29yZC1TZXBhcmF0b3IiLCAibm90XHgxRWJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkxpbmUtU2VwYXJhdG9yIiwgIm5vdFx1MjAyOGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlBhcmFncmFwaC1TZXBhcmF0b3IiLCAibm90XHUyMDI5YnJva2VuIiksCisgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgpLCAiIikKKworICAgIGNsYXNzIE15TWVzc2FnZShFbWFpbE1lc3NhZ2UpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9mYWN0b3J5X29uX3BvbGljeShzZWxmKToKKyAgICAgICAgZm9yIHBhcnNlciBpbiBzZWxmLnBhcnNlcnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXJzZXI9cGFyc2VyLl9fbmFtZV9fKToKKyAgICAgICAgICAgICAgICBNeVBvbGljeSA9IGRlZmF1bHQuY2xvbmUobWVzc2FnZV9mYWN0b3J5PXNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigiVG86IGZvb1xuXG50ZXN0IiwgcG9saWN5PU15UG9saWN5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKQorCisgICAgZGVmIHRlc3RfZmFjdG9yeV9hcmdfb3ZlcnJpZGVzX3BvbGljeShzZWxmKToKKyAgICAgICAgZm9yIHBhcnNlciBpbiBzZWxmLnBhcnNlcnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXJzZXI9cGFyc2VyLl9fbmFtZV9fKToKKyAgICAgICAgICAgICAgICBNeVBvbGljeSA9IGRlZmF1bHQuY2xvbmUobWVzc2FnZV9mYWN0b3J5PXNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigiVG86IGZvb1xuXG50ZXN0IiwgTWVzc2FnZSwgcG9saWN5PU15UG9saWN5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIE1lc3NhZ2UpCisKKyMgUGxheSBzb21lIGdhbWVzIHRvIGdldCBuaWNlIG91dHB1dCBpbiBzdWJUZXN0LiAgVGhpcyBjb2RlIGNvdWxkIGJlIGNsZWFyZXIKKyMgaWYgc3RhdGljbWV0aG9kIHN1cHBvcnRlZCBfX25hbWVfXy4KKworZGVmIG1lc3NhZ2VfZnJvbV9maWxlKHMsICphcmdzLCAqKmt3KToKKyAgICBmID0gaW8uU3RyaW5nSU8ocykKKyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgKmFyZ3MsICoqa3cpCiAKIGNsYXNzIFRlc3RQYXJzZXIoVGVzdFBhcnNlckJhc2UsIFRlc3RFbWFpbEJhc2UpOgotICAgIHBhcnNlciA9IHN0YXRpY21ldGhvZChlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKQorICAgIHBhcnNlcnMgPSAoZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZywgbWVzc2FnZV9mcm9tX2ZpbGUpCisKK2RlZiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgKmFyZ3MsICoqa3cpOgorICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMocy5lbmNvZGUoKSwgKmFyZ3MsICoqa3cpCisKK2RlZiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUocywgKmFyZ3MsICoqa3cpOgorICAgIGYgPSBpby5CeXRlc0lPKHMuZW5jb2RlKCkpCisgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmLCAqYXJncywgKiprdykKIAogY2xhc3MgVGVzdEJ5dGVzUGFyc2VyKFRlc3RQYXJzZXJCYXNlLCBUZXN0RW1haWxCYXNlKToKLSAgICBkZWYgcGFyc2VyKHNlbGYsIHMsICphcmdzLCAqKmt3KToKLSAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhzLmVuY29kZSgpLCAqYXJncywgKiprdykKKyAgICBwYXJzZXJzID0gKG1lc3NhZ2VfZnJvbV9ieXRlcywgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQppbmRleCA3MGFjNGRiLi44ZmVjYjhhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKQEAgLTUsNiArNSw3IEBACiBpbXBvcnQgZW1haWwucG9saWN5CiBpbXBvcnQgZW1haWwucGFyc2VyCiBpbXBvcnQgZW1haWwuZ2VuZXJhdG9yCitpbXBvcnQgZW1haWwubWVzc2FnZQogZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKIAogZGVmIG1ha2VfZGVmYXVsdHMoYmFzZV9kZWZhdWx0cywgZGlmZmVyZW5jZXMpOgpAQCAtMjMsNiArMjQsNyBAQAogICAgICAgICAnY3RlX3R5cGUnOiAgICAgICAgICAgICAgICAgJzhiaXQnLAogICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCiAgICAgICAgICdtYW5nbGVfZnJvbV8nOiAgICAgICAgICAgICBUcnVlLAorICAgICAgICAnbWVzc2FnZV9mYWN0b3J5JzogICAgICAgICAgTm9uZSwKICAgICAgICAgfQogICAgICMgVGhlc2UgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZSBvbmVzIHNldCBvbiBlbWFpbC5wb2xpY3kuZGVmYXVsdC4KICAgICAjIElmIGFueSBvZiB0aGVzZSBkZWZhdWx0cyBjaGFuZ2UsIHRoZSBkb2NzIG11c3QgYmUgdXBkYXRlZC4KQEAgLTM0LDYgKzM2LDcgQEAKICAgICAgICAgJ3JlZm9sZF9zb3VyY2UnOiAgICAgICAgICAgICdsb25nJywKICAgICAgICAgJ2NvbnRlbnRfbWFuYWdlcic6ICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5jb250ZW50X21hbmFnZXIsCiAgICAgICAgICdtYW5nbGVfZnJvbV8nOiAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ21lc3NhZ2VfZmFjdG9yeSc6ICAgICAgICAgIGVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLAogICAgICAgICB9KQogCiAgICAgIyBGb3IgZWFjaCBwb2xpY3kgdW5kZXIgdGVzdCwgd2UgZ2l2ZSBoZXJlIHdoYXQgd2UgZXhwZWN0IHRoZSBkZWZhdWx0cyB0bwpAQCAtNjIsMjAgKzY1LDIyIEBACiAgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CiAgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlZCIpLmZvcm1hdChwb2xpY3kpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wb2xpY3ksIGF0dHI9YXR0cik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiY2hhbmdlIHt9IGRvY3MvZG9jc3RyaW5ncyBpZiBkZWZhdWx0cyBoYXZlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2VkIikuZm9ybWF0KHBvbGljeSkpCiAKICAgICBkZWYgdGVzdF9hbGxfYXR0cmlidXRlc19jb3ZlcmVkKHNlbGYpOgogICAgICAgICBmb3IgcG9saWN5LCBleHBlY3RlZCBpbiBzZWxmLnBvbGljaWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBmb3IgYXR0ciBpbiBkaXIocG9saWN5KToKLSAgICAgICAgICAgICAgICBpZiAoYXR0ci5zdGFydHN3aXRoKCdfJykgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZ2V0YXR0cihlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3ksIGF0dHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlKSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie30gaXMgbm90IGZ1bGx5IHRlc3RlZCIuZm9ybWF0KGF0dHIpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wb2xpY3ksIGF0dHI9YXR0cik6CisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyLnN0YXJ0c3dpdGgoJ18nKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZ2V0YXR0cihlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3ksIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7fSBpcyBub3QgZnVsbHkgdGVzdGVkIi5mb3JtYXQoYXR0cikpCiAKICAgICBkZWYgdGVzdF9hYmMoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKQEAgLTIzNyw2ICsyNDIsOSBAQAogICAgICMgd2lucyksIGJ1dCB0aGF0IHRoZSBvcmRlciBzdGlsbCB3b3JrcyAocmlnaHQgb3ZlcnJpZGVzIGxlZnQpLgogCiAKK2NsYXNzIFRlc3RFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGNsYXNzIFRlc3RQb2xpY3lQcm9wYWdhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIFRoZSBhYnN0cmFjdCBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgYnV0IG5vdCBieSB0aGUgd3JhcHBlcgpAQCAtMjQ0LDQwICsyNTIsNDAgQEAKICAgICAjIHBvbGljeSB3YXMgYWN0dWFsbHkgcHJvcGFnYXRlZCBhbGwgdGhlIHdheSB0byBmZWVkcGFyc2VyLgogICAgIGNsYXNzIE15UG9saWN5KGVtYWlsLnBvbGljeS5Qb2xpY3kpOgogICAgICAgICBkZWYgYmFkbWV0aG9kKHNlbGYsICphcmdzLCAqKmt3KToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidGVzdCIpCisgICAgICAgICAgICByYWlzZSBUZXN0RXhjZXB0aW9uKCJ0ZXN0IikKICAgICAgICAgZm9sZCA9IGZvbGRfYmluYXJ5ID0gaGVhZGVyX2ZldGNoX3BhcnNlciA9IGJhZG1ldGhvZAogICAgICAgICBoZWFkZXJfc291cmNlX3BhcnNlID0gaGVhZGVyX3N0b3JlX3BhcnNlID0gYmFkbWV0aG9kCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fc3RyaW5nKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCJTdWJqZWN0OiB0ZXN0XG5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2J5dGVzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMoYiJTdWJqZWN0OiB0ZXN0XG5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fZmlsZShzZWxmKToKICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCdTdWJqZWN0OiB0ZXN0XG5cbicpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKHNlbGYpOgogICAgICAgICBmID0gaW8uQnl0ZXNJTyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgIyBUaGVzZSBhcmUgcmVkdW5kYW50LCBidXQgd2UgbmVlZCB0aGVtIGZvciBibGFjay1ib3ggY29tcGxldGVuZXNzLgogCiAgICAgZGVmIHRlc3RfcGFyc2VyKHNlbGYpOgogICAgICAgICBwID0gZW1haWwucGFyc2VyLlBhcnNlcihwb2xpY3k9c2VsZi5NeVBvbGljeSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgcC5wYXJzZXN0cignU3ViamVjdDogdGVzdFxuXG4nKQogCiAgICAgZGVmIHRlc3RfYnl0ZXNfcGFyc2VyKHNlbGYpOgogICAgICAgICBwID0gZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBwLnBhcnNlYnl0ZXMoYidTdWJqZWN0OiB0ZXN0XG5cbicpCiAKICAgICAjIE5vdyB0aGF0IHdlJ3ZlIGVzdGFibGlzaGVkIHRoYXQgYWxsIHRoZSBwYXJzZSBtZXRob2RzIGdldCB0aGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weSBiL0xpYi90ZXN0L3Rlc3RfZW51bS5weQppbmRleCA2MzBiMTU1Li4xNTNiZmI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VudW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CkBAIC0zLDkgKzMsMTAgQEAKIGltcG9ydCBweWRvYwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBJbnRFbnVtLCBFbnVtTWV0YSwgdW5pcXVlCitmcm9tIGVudW0gaW1wb3J0IEVudW0sIEludEVudW0sIEVudW1NZXRhLCBGbGFnLCBJbnRGbGFnLCB1bmlxdWUsIGF1dG8KIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzLCBQaWNrbGluZ0Vycm9yLCBISUdIRVNUX1BST1RPQ09MCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogIyBmb3IgcGlja2xlIHRlc3RzCiB0cnk6CkBAIC0zMiw2ICszMywxNCBAQAogZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgRmxvYXRTdG9vZ2VzID0gZXhjCiAKK3RyeToKKyAgICBjbGFzcyBGbGFnU3Rvb2dlcyhGbGFnKToKKyAgICAgICAgTEFSUlkgPSAxCisgICAgICAgIENVUkxZID0gMgorICAgICAgICBNT0UgPSAzCitleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICBGbGFnU3Rvb2dlcyA9IGV4YworCiAjIGZvciBwaWNrbGUgdGVzdCBhbmQgc3ViY2xhc3MgdGVzdHMKIHRyeToKICAgICBjbGFzcyBTdHJFbnVtKHN0ciwgRW51bSk6CkBAIC0xMDQsNiArMTEzLDcgQEAKICAgICAgICAgICAgICAgICAnX18nLCAnX19fJywgJ19fX18nLCAnX19fX18nLCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudW0uX2lzX2R1bmRlcihzKSkKIAorIyB0ZXN0cwogCiBjbGFzcyBUZXN0RW51bSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTI4Myw2ICsyOTMsMjggQEAKICAgICAgICAgICAgIGNsYXNzIFdyb25nKEVudW0pOgogICAgICAgICAgICAgICAgIF9hbnlfbmFtZV8gPSA5CiAKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICAjIHBsYWluIEVudW0gbWVtYmVycyBhcmUgYWx3YXlzIFRydWUKKyAgICAgICAgY2xhc3MgTG9naWMoRW51bSk6CisgICAgICAgICAgICB0cnVlID0gVHJ1ZQorICAgICAgICAgICAgZmFsc2UgPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTG9naWMudHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKExvZ2ljLmZhbHNlKQorICAgICAgICAjIHVubGVzcyBvdmVycmlkZGVuCisgICAgICAgIGNsYXNzIFJlYWxMb2dpYyhFbnVtKToKKyAgICAgICAgICAgIHRydWUgPSBUcnVlCisgICAgICAgICAgICBmYWxzZSA9IEZhbHNlCisgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdmFsdWVfKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUmVhbExvZ2ljLnRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUmVhbExvZ2ljLmZhbHNlKQorICAgICAgICAjIG1peGVkIEVudW1zIGRlcGVuZCBvbiBtaXhlZC1pbiB0eXBlCisgICAgICAgIGNsYXNzIEludExvZ2ljKGludCwgRW51bSk6CisgICAgICAgICAgICB0cnVlID0gMQorICAgICAgICAgICAgZmFsc2UgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJbnRMb2dpYy50cnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEludExvZ2ljLmZhbHNlKQorCiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CiAgICAgICAgIFNlYXNvbiA9IHNlbGYuU2Vhc29uCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oU2Vhc29uLkFVVFVNTiwgU2Vhc29uKQpAQCAtMTU0Nyw2ICsxNTc5LDY1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExhYmVsbGVkTGlzdC51bnByb2Nlc3NlZCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMYWJlbGxlZExpc3QoMSksIExhYmVsbGVkTGlzdC51bnByb2Nlc3NlZCkKIAorICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsIDMpCisKKyAgICBkZWYgdGVzdF9hdXRvX25hbWUoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3QpOgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgJ3JlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgJ2JsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAnZ3JlZW4nKQorCisgICAgZGVmIHRlc3RfYXV0b19uYW1lX2luaGVyaXQoc2VsZik6CisgICAgICAgIGNsYXNzIEF1dG9OYW1lRW51bShFbnVtKToKKyAgICAgICAgICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgICAgICBjbGFzcyBDb2xvcihBdXRvTmFtZUVudW0pOgorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsICdyZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsICdibHVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgJ2dyZWVuJykKKworICAgIGRlZiB0ZXN0X2F1dG9fZ2FyYmFnZShzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICByZWQgPSAncmVkJworICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDEpCisKKyAgICBkZWYgdGVzdF9hdXRvX2dhcmJhZ2VfY29ycmVjdGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9ICdyZWQnCisgICAgICAgICAgICBibHVlID0gMgorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAncmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAzKQorCisKK2NsYXNzIFRlc3RPcmRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zYW1lX21lbWJlcnMoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgYmx1ZSA9IDMKKworICAgIGRlZiB0ZXN0X3NhbWVfbWVtYmVyc193aXRoX2FsaWFzZXMoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgIHZlcmRlID0gZ3JlZW4KKworICAgIGRlZiB0ZXN0X3NhbWVfbWVtYmVyc193cm9uZ19vcmRlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIGdyZWVuID0gMgorCisgICAgZGVmIHRlc3Rfb3JkZXJfaGFzX2V4dHJhX21lbWJlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZSBwdXJwbGUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisKKyAgICBkZWYgdGVzdF9vcmRlcl9oYXNfZXh0cmFfbWVtYmVyc193aXRoX2FsaWFzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZSBwdXJwbGUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgdmVyZGUgPSBncmVlbgorCisgICAgZGVmIHRlc3RfZW51bV9oYXNfZXh0cmFfbWVtYmVycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIHB1cnBsZSA9IDQKKworICAgIGRlZiB0ZXN0X2VudW1faGFzX2V4dHJhX21lbWJlcnNfd2l0aF9hbGlhc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgcHVycGxlID0gNAorICAgICAgICAgICAgICAgIHZlcmRlID0gZ3JlZW4KKworCitjbGFzcyBUZXN0RmxhZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgb2YgdGhlIEZsYWdzLiIiIgorCisgICAgY2xhc3MgUGVybShGbGFnKToKKyAgICAgICAgUiwgVywgWCA9IDQsIDIsIDEKKworICAgIGNsYXNzIE9wZW4oRmxhZyk6CisgICAgICAgIFJPID0gMAorICAgICAgICBXTyA9IDEKKyAgICAgICAgUlcgPSAyCisgICAgICAgIEFDID0gMworICAgICAgICBDRSA9IDE8PDE5CisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SKSwgJ1Blcm0uUicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uVyksICdQZXJtLlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlgpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XKSwgJ1Blcm0uUnxXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSwgJ1Blcm0uUnxXfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKDApKSwgJ1Blcm0uMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlIpLCAnUGVybS5XfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5XKSwgJ1Blcm0uUnxYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uWCksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XKSksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCkpLCAnUGVybS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSh+MCkpLCAnUGVybS5SfFd8WCcpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPKSwgJ09wZW4uUk8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLldPKSwgJ09wZW4uV08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLkFDKSwgJ09wZW4uQUMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPIHwgT3Blbi5DRSksICdPcGVuLkNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnT3Blbi5DRXxXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLlJPKSwgJ09wZW4uQ0V8QUMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5XTyksICdPcGVuLkNFfFJXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uQUMpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJ09wZW4uQUMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uV08gfCBPcGVuLkNFKSksICdPcGVuLlJXJykKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiksICc8UGVybS5SOiA0PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlcpLCAnPFBlcm0uVzogMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5YKSwgJzxQZXJtLlg6IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyksICc8UGVybS5SfFc6IDY+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICc8UGVybS5SfFd8WDogNz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSgwKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5SKSwgJzxQZXJtLld8WDogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uVyksICc8UGVybS5SfFg6IDU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlgpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IFBlcm0uVykpLCAnPFBlcm0uWDogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJzxQZXJtLjA6IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0ofjApKSwgJzxQZXJtLlJ8V3xYOiA3PicpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyksICc8T3Blbi5STzogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyksICc8T3Blbi5XTzogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5BQyksICc8T3Blbi5BQzogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0U6IDUyNDI4OD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0V8V086IDUyNDI4OT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uUk8pLCAnPE9wZW4uQ0V8QUM6IDUyNDI5MT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uV08pLCAnPE9wZW4uQ0V8Ulc6IDUyNDI5MD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uQUMpLCAnPE9wZW4uQ0U6IDUyNDI4OD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnPE9wZW4uQUM6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJzxPcGVuLlJXOiAyPicpCisKKyAgICBkZWYgdGVzdF9vcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaiksIFBlcm0oaS52YWx1ZSB8IGoudmFsdWUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKS52YWx1ZSwgaS52YWx1ZSB8IGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgfCBqKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSB8IGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIHwgT3Blbi5DRSwgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X2FuZChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIGZvciBqIGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpICYgaikudmFsdWUsIGkudmFsdWUgJiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpICYgaiksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiBpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgUldYLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhSV1ggJiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyAmIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF94b3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSBeIGopLnZhbHVlLCBpLnZhbHVlIF4gai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSBeIGopLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIF4gUGVybSgwKSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUGVybSgwKSBeIGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIF4gT3Blbi5DRSwgT3Blbi5DRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLkNFIF4gT3Blbi5DRSwgT3Blbi5STykKKworICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSh+aSksIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKH5+aSwgaSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMofn5pLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5XTyAmIH5PcGVuLldPLCBPcGVuLlJPKQorICAgICAgICBzZWxmLmFzc2VydElzKChPcGVuLldPfE9wZW4uQ0UpICYgfk9wZW4uV08sIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBmIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZikKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBmb3IgZiBpbiBPcGVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib29sKGYudmFsdWUpLCBib29sKGYpKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nKHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsICdSIFcgWCcpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCAnUiBXIFgnLCBzdGFydD04KQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDg8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX2xpc3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgWydSJywgJ1cnLCAnWCddKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25faXRlcmFibGUoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCBPcmRlcmVkRGljdCgoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShGbGFnU3Rvb2dlcywgRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIEZsYWdTdG9vZ2VzCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBGbGFnU3Rvb2dlcy5DVVJMWXxGbGFnU3Rvb2dlcy5NT0UpCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBGbGFnU3Rvb2dlcykKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5tZW50KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFIsIFcsIFggPSBQZXJtCisgICAgICAgIFJXID0gUiB8IFcKKyAgICAgICAgUlggPSBSIHwgWAorICAgICAgICBXWCA9IFcgfCBYCisgICAgICAgIFJXWCA9IFIgfCBXIHwgWAorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFIgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVyBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShYIGluIFJXKQorCisgICAgZGVmIHRlc3RfYXV0b19udW1iZXIoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEZsYWcpOgorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgNCkKKworICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyX2dhcmJhZ2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdJbnZhbGlkIEZsYWcgdmFsdWU6IC5ub3QgYW4gaW50LicpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRmxhZyk6CisgICAgICAgICAgICAgICAgcmVkID0gJ25vdCBhbiBpbnQnCisgICAgICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorCisKK2NsYXNzIFRlc3RJbnRGbGFnKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBvZiB0aGUgSW50RmxhZ3MuIiIiCisKKyAgICBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgICAgICBYID0gMSA8PCAwCisgICAgICAgIFcgPSAxIDw8IDEKKyAgICAgICAgUiA9IDEgPDwgMgorCisgICAgY2xhc3MgT3BlbihJbnRGbGFnKToKKyAgICAgICAgUk8gPSAwCisgICAgICAgIFdPID0gMQorICAgICAgICBSVyA9IDIKKyAgICAgICAgQUMgPSAzCisgICAgICAgIENFID0gMTw8MTkKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIpLCAnUGVybS5SJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5XKSwgJ1Blcm0uVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uWCksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnUGVybS5SfFd8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IDgpLCAnUGVybS44fFInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKDApKSwgJ1Blcm0uMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0oOCkpLCAnUGVybS44JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uUiksICdQZXJtLld8WHwtOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlcpLCAnUGVybS5SfFh8LTgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5YKSwgJ1Blcm0uUnxXfC04JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJ1Blcm0uWHwtOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICdQZXJtLi04JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCA4KSksICdQZXJtLld8WHwtMTYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKH4wKSksICdQZXJtLlJ8V3xYfC04JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSh+OCkpLCAnUGVybS5SfFd8WHwtMTYnKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyksICdPcGVuLlJPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyksICdPcGVuLldPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5BQyksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08gfCBPcGVuLkNFKSwgJ09wZW4uQ0V8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuKDQpKSwgJ09wZW4uNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLlJPKSwgJ09wZW4uQ0V8QUN8LTUyNDI5MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLldPKSwgJ09wZW4uQ0V8Uld8LTUyNDI5MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLkFDKSwgJ09wZW4uQ0V8LTUyNDI5MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJ09wZW4uQUN8LTUyNDI5MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJ09wZW4uUld8LTUyNDI5MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4ofjQpKSwgJ09wZW4uQ0V8QUN8LTUyNDI5NicpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIpLCAnPFBlcm0uUjogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5XKSwgJzxQZXJtLlc6IDI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uWCksICc8UGVybS5YOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnPFBlcm0uUnxXfFg6IDc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IDgpLCAnPFBlcm0uOHxSOiAxMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSgwKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKDgpKSwgJzxQZXJtLjg6IDg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlIpLCAnPFBlcm0uV3xYfC04OiAtNT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uVyksICc8UGVybS5SfFh8LTg6IC0zPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5YKSwgJzxQZXJtLlJ8V3wtODogLTI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XKSksICc8UGVybS5YfC04OiAtNz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJzxQZXJtLi04OiAtOD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCA4KSksICc8UGVybS5XfFh8LTE2OiAtMTM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0ofjApKSwgJzxQZXJtLlJ8V3xYfC04OiAtMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSh+OCkpLCAnPFBlcm0uUnxXfFh8LTE2OiAtOT4nKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8pLCAnPE9wZW4uUk86IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08pLCAnPE9wZW4uV086IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uQUMpLCAnPE9wZW4uQUM6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8gfCBPcGVuLkNFKSwgJzxPcGVuLkNFOiA1MjQyODg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08gfCBPcGVuLkNFKSwgJzxPcGVuLkNFfFdPOiA1MjQyODk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4oNCkpLCAnPE9wZW4uNDogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uUk8pLCAnPE9wZW4uQ0V8QUN8LTUyNDI5MjogLTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLldPKSwgJzxPcGVuLkNFfFJXfC01MjQyOTI6IC0yPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5BQyksICc8T3Blbi5DRXwtNTI0MjkyOiAtND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnPE9wZW4uQUN8LTUyNDI5MjogLTUyNDI4OT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnPE9wZW4uUld8LTUyNDI5MjogLTUyNDI5MD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbih+NCkpLCAnPE9wZW4uQ0V8QUN8LTUyNDI5NjogLTU+JykKKworICAgIGRlZiB0ZXN0X29yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSB8IGosIGkudmFsdWUgfCBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKS52YWx1ZSwgaS52YWx1ZSB8IGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgfCBqKSwgUGVybSkKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSB8IGosIGkudmFsdWUgfCBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKS52YWx1ZSwgaS52YWx1ZSB8IGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgfCBqKSwgUGVybSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGogfCBpLCBqIHwgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChqIHwgaSkudmFsdWUsIGogfCBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShqIHwgaSksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgfCBpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIHwgMCwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoMCB8IGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIHwgT3Blbi5DRSwgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X2FuZChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIGZvciBqIGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgJiBqLCBpLnZhbHVlICYgai52YWx1ZSwgJ2kgaXMgJXIsIGogaXMgJXInICUgKGksIGopKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgJiBqKS52YWx1ZSwgaS52YWx1ZSAmIGoudmFsdWUsICdpIGlzICVyLCBqIGlzICVyJyAlIChpLCBqKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSAmIGopLCBQZXJtLCAnaSBpcyAlciwgaiBpcyAlcicgJSAoaSwgaikpCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSg4KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgJiBqLCBpLnZhbHVlICYgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpICYgaikudmFsdWUsIGkudmFsdWUgJiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpICYgaiksIFBlcm0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqICYgaSwgaiAmIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaiAmIGkpLnZhbHVlLCBqICYgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaiAmIGkpLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgaSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIDcsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKDcgJiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyAmIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF94b3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIF4gaiwgaS52YWx1ZSBeIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSBeIGopLnZhbHVlLCBpLnZhbHVlIF4gai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSBeIGopLCBQZXJtKQorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoOCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIF4gaiwgaS52YWx1ZSBeIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSBeIGopLnZhbHVlLCBpLnZhbHVlIF4gaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSBeIGopLCBQZXJtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaiBeIGksIGogXiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGogXiBpKS52YWx1ZSwgaiBeIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGogXiBpKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSBeIDAsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKDAgXiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyBeIE9wZW4uQ0UsIE9wZW4uQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5DRSBeIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF9pbnZlcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKH5pLCB+aS52YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKH5pKS52YWx1ZSwgfmkudmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUofmkpLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh+fmksIGkpCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKH5+aSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uV08gJiB+T3Blbi5XTywgT3Blbi5STykKKyAgICAgICAgc2VsZi5hc3NlcnRJcygoT3Blbi5XT3xPcGVuLkNFKSAmIH5PcGVuLldPLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nKHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsICdSIFcgWCcpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCAnUiBXIFgnLCBzdGFydD04KQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDg8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX2xpc3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgWydSJywgJ1cnLCAnWCddKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25faXRlcmFibGUoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCBPcmRlcmVkRGljdCgoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworCisgICAgZGVmIHRlc3RfY29udGFpbm1lbnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUiwgVywgWCA9IFBlcm0KKyAgICAgICAgUlcgPSBSIHwgVworICAgICAgICBSWCA9IFIgfCBYCisgICAgICAgIFdYID0gVyB8IFgKKyAgICAgICAgUldYID0gUiB8IFcgfCBYCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUiBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShXIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFggaW4gUlcpCisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBmIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZikKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBmb3IgZiBpbiBPcGVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib29sKGYudmFsdWUpLCBib29sKGYpKQogCiBjbGFzcyBUZXN0VW5pcXVlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTczOSw1ICsyNDE3LDQ3IEBACiAgICAgICAgIGlmIGZhaWxlZDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgicmVzdWx0IGRvZXMgbm90IGVxdWFsIGV4cGVjdGVkLCBzZWUgcHJpbnQgYWJvdmUiKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBlbnVtKQorCisKKyMgVGhlc2UgYXJlIHVub3JkZXJlZCBoZXJlIG9uIHB1cnBvc2UgdG8gZW5zdXJlIHRoYXQgZGVjbGFyYXRpb24gb3JkZXIKKyMgbWFrZXMgbm8gZGlmZmVyZW5jZS4KK0NPTlZFUlRfVEVTVF9OQU1FX0QgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9DID0gNQorQ09OVkVSVF9URVNUX05BTUVfQiA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0EgPSA1ICAjIFRoaXMgb25lIHNob3VsZCBzb3J0IGZpcnN0LgorQ09OVkVSVF9URVNUX05BTUVfRSA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0YgPSA1CisKK2NsYXNzIFRlc3RJbnRFbnVtQ29udmVydCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY29udmVydF92YWx1ZV9sb29rdXBfcHJpb3JpdHkoc2VsZik6CisgICAgICAgIHRlc3RfdHlwZSA9IGVudW0uSW50RW51bS5fY29udmVydCgKKyAgICAgICAgICAgICAgICAnVW5pdHRlc3RDb252ZXJ0JywgJ3Rlc3QudGVzdF9lbnVtJywKKyAgICAgICAgICAgICAgICBmaWx0ZXI9bGFtYmRhIHg6IHguc3RhcnRzd2l0aCgnQ09OVkVSVF9URVNUXycpKQorICAgICAgICAjIFdlIGRvbid0IHdhbnQgdGhlIHJldmVyc2UgbG9va3VwIHZhbHVlIHRvIHZhcnkgd2hlbiB0aGVyZSBhcmUKKyAgICAgICAgIyBtdWx0aXBsZSBwb3NzaWJsZSBuYW1lcyBmb3IgYSBnaXZlbiB2YWx1ZS4gIEl0IHNob3VsZCBhbHdheXMKKyAgICAgICAgIyByZXBvcnQgdGhlIGZpcnN0IGxleGlncmFwaGljYWwgbmFtZSBpbiB0aGF0IGNhc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlKDUpLm5hbWUsICdDT05WRVJUX1RFU1RfTkFNRV9BJykKKworICAgIGRlZiB0ZXN0X2NvbnZlcnQoc2VsZik6CisgICAgICAgIHRlc3RfdHlwZSA9IGVudW0uSW50RW51bS5fY29udmVydCgKKyAgICAgICAgICAgICAgICAnVW5pdHRlc3RDb252ZXJ0JywgJ3Rlc3QudGVzdF9lbnVtJywKKyAgICAgICAgICAgICAgICBmaWx0ZXI9bGFtYmRhIHg6IHguc3RhcnRzd2l0aCgnQ09OVkVSVF9URVNUXycpKQorICAgICAgICAjIEVuc3VyZSB0aGF0IHRlc3RfdHlwZSBoYXMgYWxsIG9mIHRoZSBkZXNpcmVkIG5hbWVzIGFuZCB2YWx1ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0EpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0IsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0MsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0QsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0UsIDUpCisgICAgICAgICMgRW5zdXJlIHRoYXQgdGVzdF90eXBlIG9ubHkgcGlja2VkIHVwIG5hbWVzIG1hdGNoaW5nIHRoZSBmaWx0ZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW25hbWUgZm9yIG5hbWUgaW4gZGlyKHRlc3RfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZVswOjJdIG5vdCBpbiAoJ0NPJywgJ19fJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLCBtc2c9J05hbWVzIG90aGVyIHRoYW4gQ09OVkVSVF9URVNUXyogZm91bmQuJykKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQppbmRleCAyNjMwY2YyLi5lNDU1YWRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgZGVmIHRlc3Rfb2JqbWV0aG9kcyhzZWxmKToKICAgICAgICAgIyBPYmplY3RzIG11c3QgaGF2ZSBfX2xlbl9fKCkgYW5kIF9fZ2V0aXRlbV9fKCkgaW1wbGVtZW50ZWQuCiAgICAgICAgIGNsYXNzIE5vTGVuKG9iamVjdCk6Ci0gICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZik6IHJldHVybiAxCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6IHJldHVybiAxCiAgICAgICAgIG5sID0gTm9MZW4oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBubCkKIApAQCAtMjMyLDYgKzIzMiwxMyBAQAogICAgICAgICBuZ2kgPSBOb0dldEl0ZW0oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBuZ2kpCiAKKyAgICAgICAgY2xhc3MgQmxvY2tlZChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOiByZXR1cm4gMQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAyCisgICAgICAgICAgICBfX3JldmVyc2VkX18gPSBOb25lCisgICAgICAgIGIgPSBCbG9ja2VkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgYikKKwogICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKICAgICAgICAgZm9yIGRhdGEgaW4gJ2FiYycsIHJhbmdlKDUpLCB0dXBsZShlbnVtZXJhdGUoJ2FiYycpKSwgcmFuZ2UoMSwxNyw1KToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfcGlja2xlKHJldmVyc2VkKGRhdGEpLCBsaXN0KGRhdGEpWzo6LTFdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKaW5kZXggYTczNTllOS4uYTdhZmY4YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CkBAIC0yOCw3ICsyOCw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaWYgbm90IGhhc2F0dHIoc2VsZWN0LCAiZXBvbGwiKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCB3b3JrcyBvbmx5IG9uIExpbnV4IDIuNiIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeS5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeS5weQppbmRleCA3YjBkNDY1Li44NjQ5NTk2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25faGllcmFyY2h5LnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBlcnJubwogZnJvbSBlcnJubyBpbXBvcnQgRUVYSVNUCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weSBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CmluZGV4IDE1NjJlZWMuLjIyY2NiYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CkBAIC0yMyw2ICsyMyw3IEBACiAgICAgX3Rlc3RjYXBpID0gTm9uZQogCiBUSU1FT1VUID0gMC41CitNU19XSU5ET1dTID0gKG9zLm5hbWUgPT0gJ250JykKIAogZGVmIGV4cGVjdGVkX3RyYWNlYmFjayhsaW5lbm8xLCBsaW5lbm8yLCBoZWFkZXIsIG1pbl9jb3VudD0xKToKICAgICByZWdleCA9IGhlYWRlcgpAQCAtNTgsOCArNTksOSBAQAogICAgICAgICAgICAgcGFzc19mZHMuYXBwZW5kKGZkKQogICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgogICAgICAgICAgICAgcHJvY2VzcyA9IHNjcmlwdF9oZWxwZXIuc3Bhd25fcHl0aG9uKCctYycsIGNvZGUsIHBhc3NfZmRzPXBhc3NfZmRzKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgICAgICB3aXRoIHByb2Nlc3M6CisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCiAgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRvdXQpCiAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQogICAgICAgICBpZiBmaWxlbmFtZToKQEAgLTczLDE0ICs3NSwxMSBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKGZkLCAicmIiLCBjbG9zZWZkPUZhbHNlKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBmcC5yZWFkKCkKICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQotICAgICAgICBvdXRwdXQgPSByZS5zdWIoJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdDdXJyZW50IHRocmVhZCBYWFgnLAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQogICAgICAgICByZXR1cm4gb3V0cHV0LnNwbGl0bGluZXMoKSwgZXhpdGNvZGUKIAotICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSk6CisgICAgZGVmIGNoZWNrX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBmYXRhbF9lcnJvciwgKiwKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSwga25vd19jdXJyZW50X3RocmVhZD1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAgIENoZWNrIHRoYXQgdGhlIGZhdWx0IGhhbmRsZXIgZm9yIGZhdGFsIGVycm9ycyBpcyBlbmFibGVkIGFuZCBjaGVjayB0aGUKICAgICAgICAgdHJhY2ViYWNrIGZyb20gdGhlIGNoaWxkIHByb2Nlc3Mgb3V0cHV0LgpAQCAtODgsMTkgKzg3LDIyIEBACiAgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgYWxsX3RocmVhZHM6Ci0gICAgICAgICAgICBoZWFkZXIgPSAnQ3VycmVudCB0aHJlYWQgWFhYIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKKyAgICAgICAgICAgIGlmIGtub3dfY3VycmVudF90aHJlYWQ6CisgICAgICAgICAgICAgICAgaGVhZGVyID0gJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoZWFkZXIgPSAnVGhyZWFkIDB4WzAtOWEtZl0rJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaGVhZGVyID0gJ1N0YWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKLSAgICAgICAgcmVnZXggPSAiIiIKLSAgICAgICAgICAgIF5GYXRhbCBQeXRob24gZXJyb3I6IHtuYW1lfQorICAgICAgICAgICAgaGVhZGVyID0gJ1N0YWNrJworICAgICAgICByZWdleCA9IHIiIiIKKyAgICAgICAgICAgIF57ZmF0YWxfZXJyb3J9CiAKLSAgICAgICAgICAgIHtoZWFkZXJ9OgorICAgICAgICAgICAge2hlYWRlcn0gXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiA8bW9kdWxlPgogICAgICAgICAgICAgIiIiCiAgICAgICAgIHJlZ2V4ID0gZGVkZW50KHJlZ2V4LmZvcm1hdCgKICAgICAgICAgICAgIGxpbmVubz1saW5lX251bWJlciwKLSAgICAgICAgICAgIG5hbWU9bmFtZV9yZWdleCwKLSAgICAgICAgICAgIGhlYWRlcj1yZS5lc2NhcGUoaGVhZGVyKSkpLnN0cmlwKCkKKyAgICAgICAgICAgIGZhdGFsX2Vycm9yPWZhdGFsX2Vycm9yLAorICAgICAgICAgICAgaGVhZGVyPWhlYWRlcikpLnN0cmlwKCkKICAgICAgICAgaWYgb3RoZXJfcmVnZXg6CiAgICAgICAgICAgICByZWdleCArPSAnfCcgKyBvdGhlcl9yZWdleAogICAgICAgICBvdXRwdXQsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lPWZpbGVuYW1lLCBmZD1mZCkKQEAgLTEwOCwxNyArMTEwLDM2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKIAorICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwgKiprdyk6CisgICAgICAgIGZhdGFsX2Vycm9yID0gJ0ZhdGFsIFB5dGhvbiBlcnJvcjogJXMnICUgbmFtZV9yZWdleAorICAgICAgICBzZWxmLmNoZWNrX2Vycm9yKGNvZGUsIGxpbmVfbnVtYmVyLCBmYXRhbF9lcnJvciwgKiprdykKKworICAgIGRlZiBjaGVja193aW5kb3dzX2V4Y2VwdGlvbihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwgKiprdyk6CisgICAgICAgIGZhdGFsX2Vycm9yID0gJ1dpbmRvd3MgZmF0YWwgZXhjZXB0aW9uOiAlcycgJSBuYW1lX3JlZ2V4CisgICAgICAgIHNlbGYuY2hlY2tfZXJyb3IoY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqKmt3KQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnYWl4JyksCiAgICAgICAgICAgICAgICAgICAgICAidGhlIGZpcnN0IHBhZ2Ugb2YgbWVtb3J5IGlzIGEgbWFwcGVkIHJlYWQtb25seSBvbiBBSVgiKQogICAgIGRlZiB0ZXN0X3JlYWRfbnVsbChzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKLSAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQotICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQotICAgICAgICAgICAgIiIiLAotICAgICAgICAgICAgMywKLSAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCi0gICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScpCisgICAgICAgIGlmIG5vdCBNU19XSU5ET1dTOgorICAgICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCisgICAgICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdCcKKyAgICAgICAgICAgICAgICAgICAgJ3xCdXMgZXJyb3InCisgICAgICAgICAgICAgICAgICAgICd8SWxsZWdhbCBpbnN0cnVjdGlvbiknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja193aW5kb3dzX2V4Y2VwdGlvbigiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICdhY2Nlc3MgdmlvbGF0aW9uJykKIAogICAgIGRlZiB0ZXN0X3NpZ3NlZ3Yoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCkBAIC0xMjksNiArMTUwLDE3IEBACiAgICAgICAgICAgICAzLAogICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBIQVZFX1RIUkVBRFMsICduZWVkIHRocmVhZHMnKQorICAgIGRlZiB0ZXN0X2ZhdGFsX2Vycm9yX2NfdGhyZWFkKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX2ZhdGFsX2Vycm9yX2NfdGhyZWFkKCkKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnaW4gbmV3IHRocmVhZCcsCisgICAgICAgICAgICBrbm93X2N1cnJlbnRfdGhyZWFkPUZhbHNlKQorCiAgICAgZGVmIHRlc3Rfc2lnYWJydChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTQ1OCwxNCArNDkwLDE0IEBACiAgICAgICAgICAgICBsaW5lbm8gPSA4CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaW5lbm8gPSAxMAotICAgICAgICByZWdleCA9ICIiIgorICAgICAgICByZWdleCA9IHIiIiIKICAgICAgICAgICAgIF5UaHJlYWQgMHhbMC05YS1mXSsgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAoPzogIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gW19hLXpdKwogICAgICAgICAgICAgKXt7MSwzfX0gIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyMyBpbiBydW4KICAgICAgICAgICAgICAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBfYm9vdHN0cmFwX2lubmVyCiAgICAgICAgICAgICAgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcAogCi0gICAgICAgICAgICBDdXJyZW50IHRocmVhZCBYWFggXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgICAgICAgICAgICBDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKICAgICAgICAgICAgICAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIGR1bXAKICAgICAgICAgICAgICAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDI4IGluIDxtb2R1bGU+JAogICAgICAgICAgICAgIiIiCkBAIC02MzcsOSArNjY5LDkgQEAKICAgICAgICAgdHJhY2UgPSAnXG4nLmpvaW4odHJhY2UpCiAgICAgICAgIGlmIG5vdCB1bnJlZ2lzdGVyOgogICAgICAgICAgICAgaWYgYWxsX3RocmVhZHM6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAnQ3VycmVudCB0aHJlYWQgWFhYIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgICAgIHJlZ2V4ID0gcidDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAnU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCisgICAgICAgICAgICAgICAgcmVnZXggPSByJ1N0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJwogICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soMTQsIDMyLCByZWdleCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQogICAgICAgICBlbHNlOgpAQCAtNjk2LDYgKzcyOCwyMiBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmNoZWNrX3N0ZGVycl9ub25lKCk6CiAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ25hbC5TSUdVU1IxKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoTVNfV0lORE9XUywgJ3NwZWNpZmljIHRvIFdpbmRvd3MnKQorICAgIGRlZiB0ZXN0X3JhaXNlX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgZm9yIGV4YywgbmFtZSBpbiAoCisgICAgICAgICAgICAoJ0VYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OJywgJ2FjY2VzcyB2aW9sYXRpb24nKSwKKyAgICAgICAgICAgICgnRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTycsICdpbnQgZGl2aWRlIGJ5IHplcm8nKSwKKyAgICAgICAgICAgICgnRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XJywgJ3N0YWNrIG92ZXJmbG93JyksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpbmRvd3NfZXhjZXB0aW9uKGYiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yYWlzZV9leGNlcHRpb24oZmF1bHRoYW5kbGVyLl97ZXhjfSkKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgMywKKyAgICAgICAgICAgICAgICBuYW1lKQorCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQppbmRleCA0ZTM5MmI3Li42NWJlMzBmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlLnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgX3B5aW8gYXMgcHlpbwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0CiAKIGNsYXNzIEF1dG9GaWxlVGVzdHM6CkBAIC0xMzksNyArMTM5LDcgQEAKIAogICAgIGRlZiB0ZXN0TW9kZVN0cmluZ3Moc2VsZik6CiAgICAgICAgICMgY2hlY2sgaW52YWxpZCBtb2RlIHN0cmluZ3MKLSAgICAgICAgZm9yIG1vZGUgaW4gKCIiLCAiYVUiLCAid1UrIik6CisgICAgICAgIGZvciBtb2RlIGluICgiIiwgImFVIiwgIndVKyIsICJVKyIsICIrVSIsICJyVSsiKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmID0gc2VsZi5vcGVuKFRFU1RGTiwgbW9kZSkKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQppbmRleCA3ODRiYzkyLi41NjU2MzNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQpAQCAtMjIsOCArMjIsOSBAQAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KIGZyb20gZmlsZWlucHV0IGltcG9ydCBGaWxlSW5wdXQsIGhvb2tfZW5jb2RlZAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCBjaGVja193YXJuaW5ncwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluaworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiAKIApAQCAtOTIsNyArOTMsMTEgQEAKICAgICAgICAgICAgICAgICB0MiA9IHdyaXRlVG1wKDIsIFsiTGluZSAlcyBvZiBmaWxlIDJcbiIgJSAoaSsxKSBmb3IgaSBpbiByYW5nZSgxMCldKQogICAgICAgICAgICAgICAgIHQzID0gd3JpdGVUbXAoMywgWyJMaW5lICVzIG9mIGZpbGUgM1xuIiAlIChpKzEpIGZvciBpIGluIHJhbmdlKDUpXSkKICAgICAgICAgICAgICAgICB0NCA9IHdyaXRlVG1wKDQsIFsiTGluZSAlcyBvZiBmaWxlIDRcbiIgJSAoaSsxKSBmb3IgaSBpbiByYW5nZSgxKV0pCi0gICAgICAgICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZV90ZXN0KHQxLCB0MiwgdDMsIHQ0LCBicywgcm91bmQpCisgICAgICAgICAgICAgICAgaWYgYnM6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZV90ZXN0KHQxLCB0MiwgdDMsIHQ0LCBicywgcm91bmQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZV90ZXN0KHQxLCB0MiwgdDMsIHQ0LCBicywgcm91bmQpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHJlbW92ZV90ZW1wZmlsZXModDEsIHQyLCB0MywgdDQpCiAKQEAgLTk0MCw3ICs5NDUsOCBAQAogCiAgICAgZGVmIHRlc3Qoc2VsZik6CiAgICAgICAgIGVuY29kaW5nID0gb2JqZWN0KCkKLSAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZykKKyAgICAgICAgZXJyb3JzID0gb2JqZWN0KCkKKyAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZywgZXJyb3JzPWVycm9ycykKIAogICAgICAgICBmYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQogICAgICAgICBvcmlnaW5hbF9vcGVuID0gYnVpbHRpbnMub3BlbgpAQCAtOTU4LDggKzk2NCwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMF0sIGZpbGVuYW1lKQogICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIG1vZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZW5jb2RpbmcnKSwgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZXJyb3JzJyksIGVycm9ycykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShrd2FyZ3MpCiAKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGInXHg4MGFiYycpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzYWZlX3VubGluaywgVEVTVEZOKQorCisgICAgICAgIGRlZiBjaGVjayhlcnJvcnMsIGV4cGVjdGVkX2xpbmVzKToKKyAgICAgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVRFU1RGTiwgbW9kZT0ncicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuaG9vaz1ob29rX2VuY29kZWQoJ3V0Zi04JywgZXJyb3JzPWVycm9ycykpIGFzIGZpOgorICAgICAgICAgICAgICAgIGxpbmVzID0gbGlzdChmaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIGV4cGVjdGVkX2xpbmVzKQorCisgICAgICAgIGNoZWNrKCdpZ25vcmUnLCBbJ2FiYyddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6CisgICAgICAgICAgICBjaGVjaygnc3RyaWN0JywgWydhYmMnXSkKKyAgICAgICAgY2hlY2soJ3JlcGxhY2UnLCBbJ1x1ZmZmZGFiYyddKQorICAgICAgICBjaGVjaygnYmFja3NsYXNocmVwbGFjZScsIFsnXFx4ODBhYmMnXSkKKwogICAgIGRlZiB0ZXN0X21vZGVzKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgIyBVVEYtNyBpcyBhIGNvbnZlbmllbnQsIHNlbGRvbSB1c2VkIGVuY29kaW5nCkBAIC05ODEsNSArMTAwNSwxMSBAQAogICAgICAgICAgICAgY2hlY2soJ3JiJywgWydBXG4nLCAnQlxyXG4nLCAnQ1xyJywgJ0RcdTIwYWMnXSkKIAogCitjbGFzcyBNaXNjVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZpbGVpbnB1dCkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKaW5kZXggY2IxZjZkYi4uYWM4NDczZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CkBAIC0xLDYgKzEsNCBAQAotCiBpbXBvcnQgZnJhY3Rpb25zCi1pbXBvcnQgbWF0aAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKIGltcG9ydCByYW5kb20KQEAgLTEwLDYgKzgsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogZnJvbSBtYXRoIGltcG9ydCBpc2luZiwgaXNuYW4sIGNvcHlzaWduLCBsZGV4cAogCiBJTkYgPSBmbG9hdCgiaW5mIikKQEAgLTYxLDYgKzYxLDI3IEBACiAgICAgICAgIGZsb2F0KGInLicgKyBiJzEnKjEwMDApCiAgICAgICAgIGZsb2F0KCcuJyArICcxJyoxMDAwKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnakp4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGxpdCksIGV2YWwobGl0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGxpdCksIGZsb2F0KGxpdC5yZXBsYWNlKCdfJywgJycpKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBsaXQgaW4gKCcwXzcnLCAnMDlfOTknKTogICMgb2N0YWxzIGFyZSBub3QgcmVjb2duaXplZCBoZXJlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnakp4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgbGl0KQorICAgICAgICAjIEFkZGl0aW9uYWwgdGVzdCBjYXNlczsgbmFuIGFuZCBpbmYgYXJlIG5ldmVyIHZhbGlkIGFzIGxpdGVyYWxzLAorICAgICAgICAjIG9ubHkgaW4gdGhlIGZsb2F0KCkgY29uc3RydWN0b3IsIGJ1dCB3ZSBkb24ndCBhbGxvdyB1bmRlcnNjb3JlcworICAgICAgICAjIGluIG9yIGFyb3VuZCB0aGVtLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJ19OYU4nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJ05hX04nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJ0lOX0YnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJy1fSU5GJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICctSU5GXycpCisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBoYW5kbGUgYnl0ZXMgdmFsdWVzIGNvcnJlY3RseS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsIGInMF8uXHhmZjknKQorCiAgICAgZGVmIHRlc3Rfbm9uX251bWVyaWNfaW5wdXRfdHlwZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBwb3NzaWJsZSBub24tbnVtZXJpYyB0eXBlcyBmb3IgdGhlIGFyZ3VtZW50IHgsIGluY2x1ZGluZwogICAgICAgICAjIHN1YmNsYXNzZXMgb2YgdGhlIGV4cGxpY2l0bHkgZG9jdW1lbnRlZCBhY2NlcHRlZCB0eXBlcy4KQEAgLTE2MiwxMSArMTgzLDEyIEBACiAgICAgICAgICAgICBkZWYgX19mbG9hdF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChzdHIoc2VsZikpICsgMQogCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vMSgpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvbzIoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb28zKDIxKSksIDQyLikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGb28xKCkpLCA0Mi4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vMigpKSwgNDIuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vMygyMSkpLCA0Mi4pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmxvYXQsIEZvbzQoNDIpKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvb1N0cignOCcpKSwgOS4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vU3RyKCc4JykpLCA5LikKIAogICAgICAgICBjbGFzcyBGb281OgogICAgICAgICAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKQEAgLTE3NywxMCArMTk5LDE0IEBACiAgICAgICAgIGNsYXNzIEY6CiAgICAgICAgICAgICBkZWYgX19mbG9hdF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBPdGhlckZsb2F0U3ViY2xhc3MoNDIuKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEYoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGZsb2F0KEYoKSkpLCBPdGhlckZsb2F0U3ViY2xhc3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoRmxvYXRTdWJjbGFzcyhGKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShGbG9hdFN1YmNsYXNzKEYoKSkpLCBGbG9hdFN1YmNsYXNzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRigpKSwgNDIuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShmbG9hdChGKCkpKSwgZmxvYXQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGbG9hdFN1YmNsYXNzKEYoKSksIDQyLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmxvYXRTdWJjbGFzcyhGKCkpKSwgRmxvYXRTdWJjbGFzcykKIAogICAgIGRlZiB0ZXN0X2lzX2ludGVnZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKDEuMSkuaXNfaW50ZWdlcigpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5IGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CmluZGV4IGZhMzdmOTAuLmZiNzQyNDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKQEAgLTYyLDE0ICs2MiwxNCBAQAogY2xhc3MgVHJhbnNsYXRlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnKicpLCAnLipcWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJz8nKSwgJy5cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ2E/YionKSwgJ2EuYi4qXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbYWJjXScpLCAnW2FiY11cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1tdXScpLCAnW11dXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbIXhdJyksICdbXnhdXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXnhdJyksICdbXFxeeF1cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1t4JyksICdcXFt4XFooP21zKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCcqJyksIHInKD9zOi4qKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJz8nKSwgcicoP3M6LilcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdhP2IqJyksIHInKD9zOmEuYi4qKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1thYmNdJyksIHInKD9zOlthYmNdKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1tdXScpLCByJyg/czpbXV0pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnWyF4XScpLCByJyg/czpbXnhdKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1teeF0nKSwgcicoP3M6W1xeeF0pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW3gnKSwgcicoP3M6XFt4KVxaJykKIAogCiBjbGFzcyBGaWx0ZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CmluZGV4IDliMTM2MzIuLjhhZmQ1YjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CkBAIC0yNzQsNyArMjc0LDcgQEAKICAgICAgICAgdGVzdF9leGMoJyVkJywgJzEnLCBUeXBlRXJyb3IsICIlZCBmb3JtYXQ6IGEgbnVtYmVyIGlzIHJlcXVpcmVkLCBub3Qgc3RyIikKICAgICAgICAgdGVzdF9leGMoJyV4JywgJzEnLCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQogICAgICAgICB0ZXN0X2V4YygnJXgnLCAzLjE0LCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCIpCi0gICAgICAgIHRlc3RfZXhjKCclZycsICcxJywgVHlwZUVycm9yLCAiYSBmbG9hdCBpcyByZXF1aXJlZCIpCisgICAgICAgIHRlc3RfZXhjKCclZycsICcxJywgVHlwZUVycm9yLCAibXVzdCBiZSByZWFsIG51bWJlciwgbm90IHN0ciIpCiAgICAgICAgIHRlc3RfZXhjKCdubyBmb3JtYXQnLCAnMScsIFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKQogICAgICAgICB0ZXN0X2V4YygnJWMnLCAtMSwgT3ZlcmZsb3dFcnJvciwgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIikKQEAgLTMwMCw2ICszMDAsOCBAQAogICAgICAgICB0ZXN0Y29tbW9uKGIiJWMiLCA3LCBiIlx4MDciKQogICAgICAgICB0ZXN0Y29tbW9uKGIiJWMiLCBiIloiLCBiIloiKQogICAgICAgICB0ZXN0Y29tbW9uKGIiJWMiLCBieXRlYXJyYXkoYiJaIiksIGIiWiIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlNWMiLCA2NSwgYiIgICAgQSIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlLTVjIiwgNjUsIGIiQSAgICAiKQogICAgICAgICAjICViIHdpbGwgaW5zZXJ0IGEgc2VyaWVzIG9mIGJ5dGVzLCBlaXRoZXIgZnJvbSBhIHR5cGUgdGhhdCBzdXBwb3J0cwogICAgICAgICAjIHRoZSBQeV9idWZmZXIgcHJvdG9jb2wsIG9yIHNvbWV0aGluZyB0aGF0IGhhcyBhIF9fYnl0ZXNfXyBtZXRob2QKICAgICAgICAgY2xhc3MgRmFrZUJ5dGVzKG9iamVjdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CmluZGV4IDlkZjRhNTQuLjc5MDVjMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CkBAIC0xNTAsNiArMTUwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAiMy8yIiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAzLCAwaikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAzLCAxaikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAxLCAyLCAzKQogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RJbml0RnJvbUZsb2F0KHNlbGYpOgpAQCAtMjYzLDEzICsyNjQsMTMgQEAKICAgICAgICAgbmFuID0gaW5mIC0gaW5mCiAgICAgICAgICMgYnVnIDE2NDY5OiBlcnJvciB0eXBlcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGZsb2F0IC0+IGludAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgaW5mIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZmxvYXQsIGluZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IC1pbmYgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgLWluZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IG5hbiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgVmFsdWVFcnJvciwgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgbmFuKQogCiAgICAgZGVmIHRlc3RGcm9tRGVjaW1hbChzZWxmKToKQEAgLTI4NCwxNiArMjg1LDE2IEBACiAKICAgICAgICAgIyBidWcgMTY0Njk6IGVycm9yIHR5cGVzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggZGVjaW1hbCAtPiBpbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgiaW5mIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCAtSW5maW5pdHkgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCItaW5mIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBOYU4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgibmFuIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBzTmFOIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBWYWx1ZUVycm9yLCAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoInNuYW4iKSkKIAogICAgIGRlZiB0ZXN0TGltaXREZW5vbWluYXRvcihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfZnN0cmluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mjk5NWZkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9mc3RyaW5nLnB5CkBAIC0wLDAgKzEsNzQ4IEBACitpbXBvcnQgYXN0CitpbXBvcnQgdHlwZXMKK2ltcG9ydCBkZWNpbWFsCitpbXBvcnQgdW5pdHRlc3QKKworYV9nbG9iYWwgPSAnZ2xvYmFsIHZhcmlhYmxlJworCisjIFlvdSBjb3VsZCBhcmd1ZSB0aGF0IEknbSB0b28gc3RyaWN0IGluIGxvb2tpbmcgZm9yIHNwZWNpZmljIGVycm9yCisjICB2YWx1ZXMgd2l0aCBhc3NlcnRSYWlzZXNSZWdleCwgYnV0IHdpdGhvdXQgaXQgaXQncyB3YXkgdG9vIGVhc3kgdG8KKyMgIG1ha2UgYSBzeW50YXggZXJyb3IgaW4gdGhlIHRlc3Qgc3RyaW5ncy4gRXNwZWNpYWxseSB3aXRoIGFsbCBvZiB0aGUKKyMgIHRyaXBsZSBxdW90ZXMsIHJhdyBzdHJpbmdzLCBiYWNrc2xhc2hlcywgZXRjLiBJIHRoaW5rIGl0J3MgYQorIyAgd29ydGh3aGlsZSB0cmFkZW9mZi4gV2hlbiBJIHN3aXRjaGVkIHRvIHRoaXMgbWV0aG9kLCBJIGZvdW5kIG1hbnkKKyMgIGV4YW1wbGVzIHdoZXJlIEkgd2Fzbid0IHRlc3Rpbmcgd2hhdCBJIHRob3VnaHQgSSB3YXMuCisKK2NsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgYXNzZXJ0QWxsUmFpc2Uoc2VsZiwgZXhjZXB0aW9uX3R5cGUsIHJlZ2V4LCBlcnJvcl9zdHJpbmdzKToKKyAgICAgICAgZm9yIHN0ciBpbiBlcnJvcl9zdHJpbmdzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc3RyPXN0cik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KGV4Y2VwdGlvbl90eXBlLCByZWdleCk6CisgICAgICAgICAgICAgICAgICAgIGV2YWwoc3RyKQorCisgICAgZGVmIHRlc3RfX2Zvcm1hdF9fbG9va3VwKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSBfX2Zvcm1hdF9fIGlzIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSwgbm90IHRoZSBpbnN0YW5jZS4KKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHJldHVybiAnY2xhc3MnCisKKyAgICAgICAgeCA9IFgoKQorCisgICAgICAgICMgQWRkIGEgYm91bmQgX19mb3JtYXRfXyBtZXRob2QgdG8gdGhlICd5JyBpbnN0YW5jZSwgYnV0IG5vdAorICAgICAgICAjICB0aGUgJ3gnIGluc3RhbmNlLgorICAgICAgICB5ID0gWCgpCisgICAgICAgIHkuX19mb3JtYXRfXyA9IHR5cGVzLk1ldGhvZFR5cGUobGFtYmRhIHNlbGYsIHNwZWM6ICdpbnN0YW5jZScsIHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t5fScsIGZvcm1hdCh5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t5fScsICdjbGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KHgpLCBmb3JtYXQoeSkpCisKKyAgICAgICAgIyBfX2Zvcm1hdF9fIGlzIG5vdCBjYWxsZWQgdGhpcyB3YXksIGJ1dCBzdGlsbCBtYWtlIHN1cmUgaXQKKyAgICAgICAgIyAgcmV0dXJucyB3aGF0IHdlIGV4cGVjdCAoc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSdyZSBieXBhc3NpbmcKKyAgICAgICAgIyAgaXQpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19mb3JtYXRfXygnJyksICdjbGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS5fX2Zvcm1hdF9fKCcnKSwgJ2luc3RhbmNlJykKKworICAgICAgICAjIFRoaXMgaXMgaG93IF9fZm9ybWF0X18gaXMgYWN0dWFsbHkgY2FsbGVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoeCkuX19mb3JtYXRfXyh4LCAnJyksICdjbGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh5KS5fX2Zvcm1hdF9fKHksICcnKSwgJ2NsYXNzJykKKworICAgIGRlZiB0ZXN0X2FzdChzZWxmKToKKyAgICAgICAgIyBJbnNwaXJlZCBieSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjQ5NzUKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIDQKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBleHByID0gIiIiCithID0gMTAKK2Yne2EgKiB4KCl9JyIiIgorICAgICAgICB0ID0gYXN0LnBhcnNlKGV4cHIpCisgICAgICAgIGMgPSBjb21waWxlKHQsICcnLCAnZXhlYycpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgeCB3YXMgbm90IGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh4LmNhbGxlZCkKKworICAgICAgICAjIEFjdHVhbGx5IHJ1biB0aGUgY29kZS4KKyAgICAgICAgZXhlYyhjKQorCisgICAgICAgICMgTWFrZSBzdXJlIHggd2FzIGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguY2FsbGVkKQorCisgICAgZGVmIHRlc3RfbGl0ZXJhbF9ldmFsKHNlbGYpOgorICAgICAgICAjIFdpdGggbm8gZXhwcmVzc2lvbnMsIGFuIGYtc3RyaW5nIGlzIG9rYXkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbCgiZid4JyIpLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbCgiZid4JyAneSciKSwgJ3h5JykKKworICAgICAgICAjIEJ1dCB0aGlzIHNob3VsZCByYWlzZSBhbiBlcnJvci4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdtYWxmb3JtZWQgbm9kZSBvciBzdHJpbmcnKToKKyAgICAgICAgICAgIGFzdC5saXRlcmFsX2V2YWwoImYneHszfSciKQorCisgICAgICAgICMgQXMgc2hvdWxkIHRoaXMsIHdoaWNoIHVzZXMgYSBkaWZmZXJlbnQgYXN0IG5vZGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdtYWxmb3JtZWQgbm9kZSBvciBzdHJpbmcnKToKKyAgICAgICAgICAgIGFzdC5saXRlcmFsX2V2YWwoImYnezN9JyIpCisKKyAgICBkZWYgdGVzdF9hc3RfY29tcGlsZV90aW1lX2NvbmNhdChzZWxmKToKKyAgICAgICAgeCA9IFsnJ10KKworICAgICAgICBleHByID0gIiIieFswXSA9ICdmb28nIGYnezN9JyIiIgorICAgICAgICB0ID0gYXN0LnBhcnNlKGV4cHIpCisgICAgICAgIGMgPSBjb21waWxlKHQsICcnLCAnZXhlYycpCisgICAgICAgIGV4ZWMoYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4WzBdLCAnZm9vMycpCisKKyAgICBkZWYgdGVzdF9saXRlcmFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhJywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnICcsICcgJykKKworICAgIGRlZiB0ZXN0X3VudGVybWluYXRlZF9zdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiIiJmJ3sieCciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJmJ3sieH0nIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIiZid7KCJ4JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiImYneygieH0nIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbWlzbWF0Y2hlZF9wYXJlbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogbWlzbWF0Y2hlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3soKH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RvdWJsZV9icmFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eycsICd7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7eycsICdheycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e2InLCAne2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7YicsICdhe2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX0nLCAnfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhfX0nLCAnYX0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX1iJywgJ31iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F9fWInLCAnYX1iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7fX0nLCAne30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7fX0nLCAnYXt9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7Yn19JywgJ3tifScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e319YycsICd7fWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7Yn19JywgJ2F7Yn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7fX1jJywgJ2F7fWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3tifX1jJywgJ3tifWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7Yn19YycsICdhe2J9YycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7ezEwfScsICd7MTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX17MTB9JywgJ30xMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fXt7ezEwfScsICd9ezEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319YXt7ezEwfScsICd9YXsxMCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH17eycsICcxMHsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfX19JywgJzEwfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9fX17eycsICcxMH17JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH19fWF7eycgJ30nLCAnMTB9YXt9JykKKworICAgICAgICAjIEluc2lkZSBvZiBzdHJpbmdzLCBkb24ndCBpbnRlcnByZXQgZG91YmxlZCBicmFja2V0cy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sie3t9fSJ9JywgJ3t7fX0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYneyB7e319IH0nIiwgIyBkaWN0IGluIGEgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9jb21waWxlX3RpbWVfY29uY2F0KHNlbGYpOgorICAgICAgICB4ID0gJ2RlZicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJyBmJyMjIHt4fWdoaScsICdhYmMjIyBkZWZnaGknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnIGYne3h9JyAnZ2hpJywgJ2FiY2RlZmdoaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycgZid7eH0nICdnaCcgZidpe3g6NH0nLCAnYWJjZGVmZ2hpZGVmICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t4fScgZid7eH0nLCAne3h9ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3gnIGYne3h9JywgJ3t4ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3h9JyBmJ3t4fScsICd7eH1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7e3h9fScgZid7eH0nLCAne3t4fX1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7e3gnIGYne3h9JywgJ3t7eGRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3h9fScgZid7eH0nLCAneH19ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgJ3h9fScsICdkZWZ4fX0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyAnJywgJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZid7eH0nICcnLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJ3t4fScsICdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyAnMicsICdkZWYyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMScgZid7eH0nICcyJywgJzFkZWYyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMScgZid7eH0nLCAnMWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nIGYnLXt4fScsICdkZWYtZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYnJyAnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZicnICcnIGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycgJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyAnJyBmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyAnJyBmJycgJycsICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szJyBmJ30nIiwgICMgY2FuJ3QgY29uY2F0IHRvIGdldCBhIHZhbGlkIGYtc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9jb21tZW50cyhzZWxmKToKKyAgICAgICAgIyBUaGVzZSBhcmVuJ3QgY29tbWVudHMsIHNpbmNlIHRoZXkncmUgaW4gc3RyaW5ncy4KKyAgICAgICAgZCA9IHsnIyc6ICdoYXNoJ30KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIyJ9JywgJyMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbIiMiXX0nLCAnaGFzaCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCBjYW5ub3QgaW5jbHVkZSAnIyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MSN9JyIsICAgIyBlcnJvciBiZWNhdXNlIHRoZSBleHByZXNzaW9uIGJlY29tZXMgIigxIykiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szKCMpfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7I30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneykjfSciLCAgICMgV2hlbiB3cmFwcGVkIGluIHBhcmVucywgdGhpcyBiZWNvbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAnKCkjKScuICBNYWtlIHN1cmUgdGhhdCBkb2Vzbid0IGNvbXBpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9tYW55X2V4cHJlc3Npb25zKHNlbGYpOgorICAgICAgICAjIENyZWF0ZSBhIHN0cmluZyB3aXRoIG1hbnkgZXhwcmVzc2lvbnMgaW4gaXQuIE5vdGUgdGhhdAorICAgICAgICAjICBiZWNhdXNlIHdlIGhhdmUgYSBzcGFjZSBpbiBoZXJlIGFzIGEgbGl0ZXJhbCwgd2UncmUgYWN0dWFsbHkKKyAgICAgICAgIyAgZ29pbmcgdG8gdXNlIHR3aWNlIGFzIG1hbnkgYXN0IG5vZGVzOiBvbmUgZm9yIGVhY2ggbGl0ZXJhbAorICAgICAgICAjICBwbHVzIG9uZSBmb3IgZWFjaCBleHByZXNzaW9uLgorICAgICAgICBkZWYgYnVpbGRfZnN0cihuLCBleHRyYT0nJyk6CisgICAgICAgICAgICByZXR1cm4gImYnIiArICgne3h9ICcgKiBuKSArIGV4dHJhICsgIiciCisKKyAgICAgICAgeCA9ICdYJworICAgICAgICB3aWR0aCA9IDEKKworICAgICAgICAjIFRlc3QgYXJvdW5kIDI1Ni4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjUwLCAyNjApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKGJ1aWxkX2ZzdHIoaSkpLCAoeCsnICcpKmkpCisKKyAgICAgICAgIyBUZXN0IGNvbmNhdGVuYXRpbmcgMiBsYXJncyBmc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKGJ1aWxkX2ZzdHIoMjU1KSoyNTYpLCAoeCsnICcpKigyNTUqMjU2KSkKKworICAgICAgICBzID0gYnVpbGRfZnN0cigyNTMsICd7eDp7d2lkdGh9fSAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwocyksICh4KycgJykqMjU0KQorCisgICAgICAgICMgVGVzdCBsb3RzIG9mIGV4cHJlc3Npb25zIGFuZCBjb25zdGFudHMsIGNvbmNhdGVuYXRlZC4KKyAgICAgICAgcyA9ICJmJ3sxfScgJ3gnICd5JyIgKiAxMDI0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChzKSwgJzF4eScgKiAxMDI0KQorCisgICAgZGVmIHRlc3RfZm9ybWF0X3NwZWNpZmllcl9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgd2lkdGggPSAxMAorICAgICAgICBwcmVjaXNpb24gPSA0CisgICAgICAgIHZhbHVlID0gZGVjaW1hbC5EZWNpbWFsKCcxMi4zNDU2NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGh9LntwcmVjaXNpb259fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6e3dpZHRoIXJ9LntwcmVjaXNpb259fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6e3dpZHRoOjB9LntwcmVjaXNpb246MX19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7MX17MDowfS57cHJlY2lzaW9uOjF9fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6eyAxfXsgMDowfS57IHByZWNpc2lvbjoxfX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMDojezF9MHh9JywgJyAgICAgICAweGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwOnsiIyJ9MXswfXsieCJ9fScsICcgICAgICAgMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3stMTA6LXsiIyJ9MXswfXh9JywgJyAgICAgIC0weGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYney0xMDp7Ii0ifSN7MX0weyJ4In19JywgJyAgICAgIC0weGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwOiN7MyAhPSB7NDo1fSBhbmQgd2lkdGh9eH0nLCAnICAgICAgIDB4YScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIiIiZid7InMiIXJ7IjoxMCJ9fSciIiIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGxvb2tzIGxpa2UgYSBuZXN0ZWQgZm9ybWF0IHNwZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImludmFsaWQgc3ludGF4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIyBJbnZhbGlkIHN5bnRheCBpbnNpZGUgYSBuZXN0ZWQgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezQ6ey81fX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cHJlc3Npb25zIG5lc3RlZCB0b28gZGVlcGx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIyBDYW4ndCBuZXN0IGZvcm1hdCBzcGVjaWZpZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGg6ezB9fS57cHJlY2lzaW9uOjF9fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogaW52YWxpZCBjb252ZXJzaW9uIGNoYXJhY3RlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyMgTm8gZXhwYW5zaW9uIGluc2lkZSBjb252ZXJzaW9uIG9yIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICB0aGUgOiBvciAhIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIiZid7InMiIXsiciJ9fSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9vcmRlcihzZWxmKToKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmkgPSAwCisgICAgICAgICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICBzZWxmLmkgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBzdHIoc2VsZi5pKQorCisgICAgICAgIHggPSBYKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fSB7eH0nLCAnMSAyJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZXhwcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiBlbXB0eSBleHByZXNzaW9uIG5vdCBhbGxvd2VkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyB9JyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnIHt9ICciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXJ9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXJ9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sxMDp7IH19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJyB7IH0gJyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDYXRjaCB0aGUgZW1wdHkgZXhwcmVzc2lvbiBiZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIGludmFsaWQgY29udmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyF4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICF4cn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyF4On0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyF4OmF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXhyOn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAheHI6YX0nIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezp9JyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBmaW5kIHRoZSBlbXB0eSBleHByZXNzaW9uIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgbWlzc2luZyBjbG9zaW5nIGJyYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ISciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXM6JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s6JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s6eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfcGFyZW5zX2luX2V4cHJlc3Npb25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMsfScsICcoMywpJykKKworICAgICAgICAjIEFkZCB0aGVzZSBiZWNhdXNlIHdoZW4gYW4gZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIHBhcmVucworICAgICAgICAjICBhcmUgYWRkZWQgYXJvdW5kIGl0LiBCdXQgd2Ugc2hvdWxkbid0IGdvIGZyb20gYW4gaW52YWxpZAorICAgICAgICAjICBleHByZXNzaW9uIHRvIGEgdmFsaWQgb25lLiBUaGUgYWRkZWQgcGFyZW5zIGFyZSBqdXN0CisgICAgICAgICMgIHN1cHBvc2VkIHRvIGFsbG93IHdoaXRlc3BhY2UgKGluY2x1ZGluZyBuZXdsaW5lcykuCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3ssfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7LH0nIiwgICMgdGhpcyBpcyAoLCksIHdoaWNoIGlzIGFuIGVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezMpKyg0fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdFT0wgd2hpbGUgc2Nhbm5pbmcgc3RyaW5nIGxpdGVyYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7XG59JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9iYWNrc2xhc2hlc19pbl9zdHJpbmdfcGFydChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x0JywgJ1x0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1x0JywgJ1xcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXHQnLCAnXFx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx0JywgJzJcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdHszfScsICcyXHQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x0ezN9JywgJ1x0MycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x1MDM5NCcsICdcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXHUwMzk0JywgJ1xcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1x1MDM5NCcsICdcXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx1MDM5NCcsICcyXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx1MDM5NHszfScsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdTAzOTR7M30nLCAnXHUwMzk0MycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xVMDAwMDAzOTQnLCAnXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1xVMDAwMDAzOTQnLCAnXFxVMDAwMDAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1xVMDAwMDAzOTQnLCAnXFxVMDAwMDAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XFUwMDAwMDM5NCcsICcyXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxVMDAwMDAzOTR7M30nLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXFUwMDAwMDM5NHszfScsICdcdTAzOTQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9JywgJ1x1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0nLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX17M30nLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9ezN9JywgJ1x1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfScsICcyXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJzJcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0zJywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfTMnLCAnXHUwMzk0MycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4MjAnLCAnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidceDIwJywgJ1xceDIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidceDIwJywgJ1xceDIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx4MjAnLCAnMiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHgyMHszfScsICcyIDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHgyMHszfScsICcgMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJzJceDIwJywgJzIgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJzJceDIwMycsICcyIDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHgyMDMnLCAnIDMnKQorCisgICAgZGVmIHRlc3RfbWlzZm9ybWVkX3VuaWNvZGVfY2hhcmFjdGVyX25hbWUoc2VsZik6CisgICAgICAgICMgVGhlc2UgdGVzdCBhcmUgbmVlZGVkIGJlY2F1c2UgdW5pY29kZSBuYW1lcyBhcmUgcGFyc2VkCisgICAgICAgICMgZGlmZmVyZW50bHkgaW5zaWRlIGYtc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgciJcKHVuaWNvZGUgZXJyb3JcKSAndW5pY29kZWVzY2FwZScgY29kZWMgY2FuJ3QgZGVjb2RlIGJ5dGVzIGluIHBvc2l0aW9uIC4qOiBtYWxmb3JtZWQgXFxOIGNoYXJhY3RlciBlc2NhcGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYnXE4nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ1xOeyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYnXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEEnIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEhlcmUgYXJlIHRoZSBub24tZi1zdHJpbmcgdmVyc2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIHdoaWNoIHNob3VsZCBnaXZlIHRoZSBzYW1lIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciInXE4nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciInXE57JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9ub19iYWNrc2xhc2hlc19pbl9leHByZXNzaW9uX3BhcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgY2Fubm90IGluY2x1ZGUgYSBiYWNrc2xhc2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYne1wnYVwnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYne1x0M30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3tcfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByInJmJ3tcJ2FcJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJyZid7XHQzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByInJmJ3tcfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIicmYneyJcTntMRUZUIENVUkxZIEJSQUNLRVR9In0nIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfbm9fZXNjYXBlc19mb3JfYnJhY2VzKHNlbGYpOgorICAgICAgICAjIFx4N2IgaXMgJ3snLiAgTWFrZSBzdXJlIGl0IGRvZXNuJ3Qgc3RhcnQgYW4gZXhwcmVzc2lvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4N2IyfX0nLCAnezJ9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4N2IyJywgJ3syJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x1MDA3YjInLCAnezInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXE57TEVGVCBDVVJMWSBCUkFDS0VUfTJcTntSSUdIVCBDVVJMWSBCUkFDS0VUfScsICd7Mn0nKQorCisgICAgZGVmIHRlc3RfbmV3bGluZXNfaW5fZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MH0nLCAnMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnJyd7MysKKzR9JycnLCAnNycpCisKKyAgICBkZWYgdGVzdF9sYW1iZGEoc2VsZik6CisgICAgICAgIHggPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7KGxhbWJkYSB5OngqeSkoIjgiKSFyfScsICInODg4ODgnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sobGFtYmRhIHk6eCp5KSgiOCIpIXI6MTB9JywgIic4ODg4OCcgICAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyhsYW1iZGEgeTp4KnkpKCI4Iik6MTB9JywgIjg4ODg4ICAgICAiKQorCisgICAgICAgICMgbGFtYmRhIGRvZXNuJ3Qgd29yayB3aXRob3V0IHBhcmVucywgYmVjYXVzZSB0aGUgY29sb24KKyAgICAgICAgIyAgbWFrZXMgdGhlIHBhcnNlciB0aGluayBpdCdzIGEgZm9ybWF0X3NwZWMKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ3VuZXhwZWN0ZWQgRU9GIHdoaWxlIHBhcnNpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7bGFtYmRhIHg6eH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3lpZWxkKHNlbGYpOgorICAgICAgICAjIE5vdCB0ZXJyaWJseSB1c2VmdWwsIGJ1dCBtYWtlIHN1cmUgdGhlIHlpZWxkIHR1cm5zCisgICAgICAgICMgIGEgZnVuY3Rpb24gaW50byBhIGdlbmVyYXRvcgorICAgICAgICBkZWYgZm4oeSk6CisgICAgICAgICAgICBmJ3k6e3lpZWxkIHkqMn0nCisKKyAgICAgICAgZyA9IGZuKDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnKSwgOCkKKworICAgIGRlZiB0ZXN0X3lpZWxkX3NlbmQoc2VsZik6CisgICAgICAgIGRlZiBmbih4KToKKyAgICAgICAgICAgIHlpZWxkIGYneDp7eWllbGQgKGxhbWJkYSBpOiB4ICogaSl9JworCisgICAgICAgIGcgPSBmbigxMCkKKyAgICAgICAgdGhlX2xhbWJkYSA9IG5leHQoZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfbGFtYmRhKDQpLCA0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLnNlbmQoJ3N0cmluZycpLCAneDpzdHJpbmcnKQorCisgICAgZGVmIHRlc3RfZXhwcmVzc2lvbnNfd2l0aF90cmlwbGVfcXVvdGVkX3N0cmluZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiJ7JycneCcnJ30iLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiJ7JycnZXJpYydzJycnfSIsICJlcmljJ3MiKQorCisgICAgICAgICMgVGVzdCBjb25jYXRlbmF0aW9uIHdpdGhpbiBhbiBleHByZXNzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IngiICIiImVyaWMicyIiIiAieSJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieCIgIiIiZXJpYyJzIiIifScsICd4ZXJpYyJzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIiJlcmljInMiIiIgInkifScsICdlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIiJ4IiIiICIiImVyaWMicyIiIiAieSJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIiJ4IiIiICIiImVyaWMicyIiIiAiIiJ5IiIifScsICd4ZXJpYyJzeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ciIiIngiIiIgIiIiZXJpYyJzIiIiICIiInkiIiJ9JywgJ3hlcmljInN5JykKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX3ZhcnMoc2VsZik6CisgICAgICAgIHggPSA5OAorICAgICAgICB5ID0gJ2FiYycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fXt5fScsICc5OGFiYycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH17eX0nLCAnWDk4YWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fVh7eX0nLCAnOThYYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fXt5fVgnLCAnOThhYmNYJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnWHt4fVl7eX0nLCAnWDk4WWFiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9e3l9WScsICdYOThhYmNZJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fVh7eX1ZJywgJzk4WGFiY1knKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9WXt5fVonLCAnWDk4WWFiY1onKQorCisgICAgZGVmIHRlc3RfY2xvc3VyZShzZWxmKToKKyAgICAgICAgZGVmIG91dGVyKHgpOgorICAgICAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGYneDp7eH0nCisgICAgICAgICAgICByZXR1cm4gaW5uZXIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dGVyKCc5ODcnKSgpLCAneDo5ODcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dGVyKDcpKCksICd4OjcnKQorCisgICAgZGVmIHRlc3RfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICB5ID0gMgorICAgICAgICBkZWYgZih4LCB3aWR0aCk6CisgICAgICAgICAgICByZXR1cm4gZid4PXt4Knk6e3dpZHRofX0nCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdmb28nLCAxMCksICd4PWZvb2ZvbyAgICAnKQorICAgICAgICB4ID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDEwLCAxMCksICd4PSAgICAgICAgMjAnKQorCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICB2YWx1ZSA9IDEyMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYndjp7dmFsdWV9JywgJ3Y6MTIzJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfdmFyaWFibGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGYndjp7dmFsdWV9JworCisgICAgZGVmIHRlc3RfbWlzc2luZ19mb3JtYXRfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgTzoKKyAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzcGVjOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyonCisgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKTp4fScsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tPKCl9JywgJyonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKTp9JywgJyonKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mzp9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMhczp9JywgJzMnKQorCisgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9JywgJ2c6Z2xvYmFsIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywgImc6J2dsb2JhbCB2YXJpYWJsZSciKQorCisgICAgICAgIGFfbG9jYWwgPSAnbG9jYWwgdmFyaWFibGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbH0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnOmdsb2JhbCB2YXJpYWJsZSBsOmxvY2FsIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzonZ2xvYmFsIHZhcmlhYmxlJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbCFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgImc6Z2xvYmFsIHZhcmlhYmxlIGw6J2xvY2FsIHZhcmlhYmxlJyIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbigibW9kdWxlICd1bml0dGVzdCcgZnJvbSIsIGYne3VuaXR0ZXN0fScpCisKKyAgICBkZWYgdGVzdF9zaGFkb3dlZF9nbG9iYWwoc2VsZik6CisgICAgICAgIGFfZ2xvYmFsID0gJ3JlYWxseSBhIGxvY2FsJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9JywgJ2c6cmVhbGx5IGEgbG9jYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLCAiZzoncmVhbGx5IGEgbG9jYWwnIikKKworICAgICAgICBhX2xvY2FsID0gJ2xvY2FsIHZhcmlhYmxlJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9IGw6e2FfbG9jYWx9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZzpyZWFsbHkgYSBsb2NhbCBsOmxvY2FsIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzoncmVhbGx5IGEgbG9jYWwnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzpyZWFsbHkgYSBsb2NhbCBsOidsb2NhbCB2YXJpYWJsZSciKQorCisgICAgZGVmIHRlc3RfY2FsbChzZWxmKToKKyAgICAgICAgZGVmIGZvbyh4KToKKyAgICAgICAgICAgIHJldHVybiAneD0nICsgc3RyKHgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tmb28oMTApfScsICd4PTEwJykKKworICAgIGRlZiB0ZXN0X25lc3RlZF9mc3RyaW5ncyhzZWxmKToKKyAgICAgICAgeSA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tmInswfSIqM30nLCAnMDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tmInt5fSIqM30nLCAnNTU1JykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfc3RyaW5nX3ByZWZpeGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAndW5leHBlY3RlZCBFT0Ygd2hpbGUgcGFyc2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmVScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidUYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1ZnInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdXInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJydWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGVVInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdXInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZCJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYkYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJGJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbGVhZGluZ190cmFpbGluZ19zcGFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IDN9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyAgM30nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyB9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMgIH0nLCAnMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2V4cHI9eyB7eDogeSBmb3IgeCwgeSBpbiBbKDEsIDIpLCBdfX0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleHByPXsxOiAyfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidleHByPXsge3g6IHkgZm9yIHgsIHkgaW4gWygxLCAyKSwgXX0gfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cHI9ezE6IDJ9JykKKworICAgIGRlZiB0ZXN0X25vdF9lcXVhbChzZWxmKToKKyAgICAgICAgIyBUaGVyZSdzIGEgc3BlY2lhbCB0ZXN0IGZvciB0aGlzIGJlY2F1c2UgdGhlcmUncyBhIHNwZWNpYWwKKyAgICAgICAgIyAgY2FzZSBpbiB0aGUgZi1zdHJpbmcgcGFyc2VyIHRvIGxvb2sgZm9yICE9IGFzIG5vdCBlbmRpbmcgYW4KKyAgICAgICAgIyAgZXhwcmVzc2lvbi4gTm9ybWFsbHkgaXQgd291bGQsIHdoaWxlIGxvb2tpbmcgZm9yICFzIG9yICFyLgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NH0nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NDp9JywgJ1RydWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMhPTQhc30nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NCFzOi4zfScsICdUcnUnKQorCisgICAgZGVmIHRlc3RfY29udmVyc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNDoxMC4xMH0nLCAnICAgICAgMy4xNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNCFzOjEwLjEwfScsICczLjE0ICAgICAgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0IXI6MTAuMTB9JywgJzMuMTQgICAgICAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQhYToxMC4xMH0nLCAnMy4xNCAgICAgICcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siYSJ9JywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIiFyfScsICInYSciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIiFhfScsICInYSciKQorCisgICAgICAgICMgTm90IGEgY29udmVyc2lvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siYSFyIn0nLCAiYSFyIikKKworICAgICAgICAjIE5vdCBhIGNvbnZlcnNpb24sIGJ1dCBzaG93IHRoYXQgISBpcyBhbGxvd2VkIGluIGEgZm9ybWF0IHNwZWMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNDohPDEwLjEwfScsICczLjE0ISEhISEhJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IGludmFsaWQgY29udmVyc2lvbiBjaGFyYWN0ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MyFnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFBfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFHfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEhfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyE6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEgc30nIiwgICMgbm8gc3BhY2UgYmVmb3JlIGNvbnZlcnNpb24gY2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t4IXN7eX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzczp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzOnN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9hc3NpZ25tZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZicnID0gMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3swfScgPSB4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3h9JyA9IHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZGVsIGYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWwgJycgZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X21pc21hdGNoZWRfYnJhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IHNpbmdsZSAnfScgaXMgbm90IGFsbG93ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7e30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3t9fX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid4fXgnIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENhbid0IGhhdmUgeyBvciB9IGluIGEgZm9ybWF0IHNwZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOn0+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOn19PjEwfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szOnt7PjEwfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhczonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhczozJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h7eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MzpzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t7eyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7e319eyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgIyBCdXQgdGhlc2UgYXJlIGp1c3Qgbm9ybWFsIHN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7InsifScsICd7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sifSJ9JywgJ30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezM6eyJ9In0+MTB9JywgJ319fX19fX19fTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezI6eyJ7In0+MTB9JywgJ3t7e3t7e3t7ezInKQorCisgICAgZGVmIHRlc3RfaWZfY29uZGl0aW9uYWwoc2VsZik6CisgICAgICAgICMgVGhlcmUncyBzcGVjaWFsIGxvZ2ljIGluIGNvbXBpbGUuYyB0byB0ZXN0IGlmIHRoZQorICAgICAgICAjICBjb25kaXRpb25hbCBmb3IgYW4gaWYgKGFuZCB3aGlsZSkgYXJlIGNvbnN0YW50cy4gRXhlcmNpc2UKKyAgICAgICAgIyAgdGhhdCBjb2RlLgorCisgICAgICAgIGRlZiB0ZXN0X2ZzdHJpbmcoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmIGYne3h9JzoKKyAgICAgICAgICAgICAgICBmbGFnID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmbGFnID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBleHBlY3RlZCkKKworICAgICAgICBkZWYgdGVzdF9jb25jYXRfZW1wdHkoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmICcnIGYne3h9JzoKKyAgICAgICAgICAgICAgICBmbGFnID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmbGFnID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBleHBlY3RlZCkKKworICAgICAgICBkZWYgdGVzdF9jb25jYXRfbm9uX2VtcHR5KHgsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIGZsYWcgPSAwCisgICAgICAgICAgICBpZiAnICcgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIHRlc3RfZnN0cmluZygnJywgMikKKyAgICAgICAgdGVzdF9mc3RyaW5nKCcgJywgMSkKKworICAgICAgICB0ZXN0X2NvbmNhdF9lbXB0eSgnJywgMikKKyAgICAgICAgdGVzdF9jb25jYXRfZW1wdHkoJyAnLCAxKQorCisgICAgICAgIHRlc3RfY29uY2F0X25vbl9lbXB0eSgnJywgMSkKKyAgICAgICAgdGVzdF9jb25jYXRfbm9uX2VtcHR5KCcgJywgMSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X2Zvcm1hdF9zcGVjaWZpZXIoc2VsZik6CisgICAgICAgIHggPSAndGVzdCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4On0nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eCFzOn0nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eCFyOn0nLCAiJ3Rlc3QnIikKKworICAgIGRlZiB0ZXN0X3N0cl9mb3JtYXRfZGlmZmVyZW5jZXMoc2VsZik6CisgICAgICAgIGQgPSB7J2EnOiAnc3RyaW5nJywKKyAgICAgICAgICAgICAwOiAnaW50ZWdlcicsCisgICAgICAgICAgICAgfQorICAgICAgICBhID0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbMF19JywgJ2ludGVnZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbImEiXX0nLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkW2FdfScsICdpbnRlZ2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne2RbYV19Jy5mb3JtYXQoZD1kKSwgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3tkWzBdfScuZm9ybWF0KGQ9ZCksICdpbnRlZ2VyJykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7YVs0KX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3thKDRdfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgICMgc2VlIGlzc3VlIDI2Mjg3CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoVHlwZUVycm9yLCAnbm9uLWVtcHR5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3sobGFtYmRhOiAwKTp4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYneygwLCk6eH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShWYWx1ZUVycm9yLCAnVW5rbm93biBmb3JtYXQgY29kZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7MTAwMDpqfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYnezEwMDA6an0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbG9vcChzZWxmKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnaTp7aX0nLCAnaTonICsgc3RyKGkpKQorCisgICAgZGVmIHRlc3RfZGljdChzZWxmKToKKyAgICAgICAgZCA9IHsnIic6ICdkcXVvdGUnLAorICAgICAgICAgICAgICInIjogJ3NxdW90ZScsCisgICAgICAgICAgICAgJ2Zvbyc6ICdiYXInLAorICAgICAgICAgICAgIH0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycne2RbIiciXX0nJycsICdzcXVvdGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYiIiJ7ZFsnIiddfSIiIiwgJ2RxdW90ZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkWyJmb28iXX0nLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmIntkWydmb28nXX0iLCAnYmFyJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKaW5kZXggYWVmNjZkYS4uMTJmYWJjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKQEAgLTMxMSwxMCArMzExLDEyIEBACiAgICAgICAgIF9zc2xfY2xvc2luZyA9IEZhbHNlCiAKICAgICAgICAgZGVmIHNlY3VyZV9jb25uZWN0aW9uKHNlbGYpOgotICAgICAgICAgICAgc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29ja2V0LCBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwgc2VydmVyX3NpZGU9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgc29ja2V0ID0gY29udGV4dC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5kZWxfY2hhbm5lbCgpCiAgICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQoc29ja2V0KQogICAgICAgICAgICAgc2VsZi5fc3NsX2FjY2VwdGluZyA9IFRydWUKQEAgLTEwNDksMTAgKzEwNTEsMTkgQEAKICAgICAgICAgZnRwLmNsb3NlKCkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydNU0dfT09CJywgJ0ZUUF9QT1JUJywgJ01BWExJTkUnLCAnQ1JMRicsICdCX0NSTEYnLAorICAgICAgICAgICAgICAgICAgICAgJ0Vycm9yJywgJ3BhcnNlMTUwJywgJ3BhcnNlMjI3JywgJ3BhcnNlMjI5JywgJ3BhcnNlMjU3JywKKyAgICAgICAgICAgICAgICAgICAgICdwcmludF9saW5lJywgJ2Z0cGNwJywgJ3Rlc3QnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmdHBsaWIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW1Rlc3RGVFBDbGFzcywgVGVzdFRpbWVvdXRzLAogICAgICAgICAgICAgIFRlc3RJUHY2RW52aXJvbm1lbnQsCi0gICAgICAgICAgICAgVGVzdFRMU19GVFBDbGFzc01peGluLCBUZXN0VExTX0ZUUENsYXNzXQorICAgICAgICAgICAgIFRlc3RUTFNfRlRQQ2xhc3NNaXhpbiwgVGVzdFRMU19GVFBDbGFzcywKKyAgICAgICAgICAgICBNaXNjVGVzdENhc2VdCiAKICAgICB0aHJlYWRfaW5mbyA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CmluZGV4IGFiNTFhMzUuLmZhNjY1MTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CkBAIC04LDYgKzgsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKK2ltcG9ydCBjb250ZXh0bGliCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjAsNiArMjEsMTQgQEAKIAogZGVjaW1hbCA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKIAorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiByZXBsYWNlZF9tb2R1bGUobmFtZSwgcmVwbGFjZW1lbnQpOgorICAgIG9yaWdpbmFsX21vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSByZXBsYWNlbWVudAorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG9yaWdpbmFsX21vZHVsZQogCiBkZWYgY2FwdHVyZSgqYXJncywgKiprdyk6CiAgICAgIiIiY2FwdHVyZSBhbGwgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMiIiIKQEAgLTE2Nyw1OCArMTc2LDM1IEBACiAgICAgICAgIHAyLm5ld19hdHRyID0gJ3NwYW0nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIubmV3X2F0dHIsICdzcGFtJykKIAotCi1AdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKLWNsYXNzIFRlc3RQYXJ0aWFsQyhUZXN0UGFydGlhbCwgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGlmIGNfZnVuY3Rvb2xzOgotICAgICAgICBwYXJ0aWFsID0gY19mdW5jdG9vbHMucGFydGlhbAotCi0gICAgZGVmIHRlc3RfYXR0cmlidXRlc191bndyaXRhYmxlKHNlbGYpOgotICAgICAgICAjIGF0dHJpYnV0ZXMgc2hvdWxkIG5vdCBiZSB3cml0YWJsZQotICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsIDEsIDIsIGE9MTAsIGI9MjApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnZnVuYycsIG1hcCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdhcmdzJywgKDEsIDIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2tleXdvcmRzJywgZGljdChhPTEsIGI9MikpCi0KLSAgICAgICAgcCA9IHNlbGYucGFydGlhbChoZXgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlbCBwLl9fZGljdF9fCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ3BhcnRpYWwgb2JqZWN0IGFsbG93ZWQgX19kaWN0X18gdG8gYmUgZGVsZXRlZCcpCi0KICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgogICAgICAgICBhcmdzID0gKG9iamVjdCgpLCBvYmplY3QoKSkKICAgICAgICAgYXJnc19yZXByID0gJywgJy5qb2luKHJlcHIoYSkgZm9yIGEgaW4gYXJncykKICAgICAgICAga3dhcmdzID0geydhJzogb2JqZWN0KCksICdiJzogb2JqZWN0KCl9CiAgICAgICAgIGt3YXJnc19yZXBycyA9IFsnYT17YSFyfSwgYj17YiFyfScuZm9ybWF0X21hcChrd2FyZ3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ2I9e2Ihcn0sIGE9e2Ehcn0nLmZvcm1hdF9tYXAoa3dhcmdzKV0KLSAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGlzIGNfZnVuY3Rvb2xzLnBhcnRpYWw6CisgICAgICAgIGlmIHNlbGYucGFydGlhbCBpbiAoY19mdW5jdG9vbHMucGFydGlhbCwgcHlfZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgICAgICAgbmFtZSA9ICdmdW5jdG9vbHMucGFydGlhbCcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLnBhcnRpYWwuX19uYW1lX18KIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t9KHshcn0pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihmKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tuYW1lfSh7Y2FwdHVyZSFyfSknLCByZXByKGYpKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgKmFyZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t9KHshcn0sIHt9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUsIGFyZ3NfcmVwciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihmKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tuYW1lfSh7Y2FwdHVyZSFyfSwge2FyZ3NfcmVwcn0pJywgcmVwcihmKSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEluKHJlcHIoZiksCi0gICAgICAgICAgICAgICAgICAgICAgWyd7fSh7IXJ9LCB7fSknLmZvcm1hdChuYW1lLCBjYXB0dXJlLCBrd2FyZ3NfcmVwcikKKyAgICAgICAgICAgICAgICAgICAgICBbZid7bmFtZX0oe2NhcHR1cmUhcn0sIHtrd2FyZ3NfcmVwcn0pJwogICAgICAgICAgICAgICAgICAgICAgICBmb3Iga3dhcmdzX3JlcHIgaW4ga3dhcmdzX3JlcHJzXSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXByKGYpLAotICAgICAgICAgICAgICAgICAgICAgIFsne30oeyFyfSwge30sIHt9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUsIGFyZ3NfcmVwciwga3dhcmdzX3JlcHIpCisgICAgICAgICAgICAgICAgICAgICAgW2Yne25hbWV9KHtjYXB0dXJlIXJ9LCB7YXJnc19yZXByfSwge2t3YXJnc19yZXByfSknCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrd2FyZ3NfcmVwciBpbiBrd2FyZ3NfcmVwcnNdKQogCiAgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3JlcHIoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucGFydGlhbCBpcyBjX2Z1bmN0b29scy5wYXJ0aWFsOgorICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaW4gKGNfZnVuY3Rvb2xzLnBhcnRpYWwsIHB5X2Z1bmN0b29scy5wYXJ0aWFsKToKICAgICAgICAgICAgIG5hbWUgPSAnZnVuY3Rvb2xzLnBhcnRpYWwnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuYW1lID0gc2VsZi5wYXJ0aWFsLl9fbmFtZV9fCkBAIC0yMjYsMzAgKzIxMiwzMSBAQAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChmLCAoKSwge30sIHt9KSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXMoLi4uKSknICUgKG5hbWUsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoLi4uKScgJSAobmFtZSwpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsIChmLCksIHt9LCB7fSkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCAlcyguLi4pKScgJSAobmFtZSwgY2FwdHVyZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglciwgLi4uKScgJSAobmFtZSwgY2FwdHVyZSwpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7J2EnOiBmfSwge30pKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglciwgYT0lcyguLi4pKScgJSAobmFtZSwgY2FwdHVyZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglciwgYT0uLi4pJyAlIChuYW1lLCBjYXB0dXJlLCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlLCBbJ2FzZGYnXSwgYmFyPVtUcnVlXSkKLSAgICAgICAgZi5hdHRyID0gW10KLSAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGZfY29weSksIHNpZ25hdHVyZShmKSkKKyAgICAgICAgd2l0aCBzZWxmLkFsbG93UGlja2xlKCk6CisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSwgWydhc2RmJ10sIGJhcj1bVHJ1ZV0pCisgICAgICAgICAgICBmLmF0dHIgPSBbXQorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZl9jb3B5KSwgc2lnbmF0dXJlKGYpKQogCiAgICAgZGVmIHRlc3RfY29weShzZWxmKToKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUsIFsnYXNkZiddLCBiYXI9W1RydWVdKQpAQCAtMjc0LDExICsyNjEsMTMgQEAKICAgICBkZWYgdGVzdF9zZXRzdGF0ZShzZWxmKToKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCBkaWN0KGF0dHI9W10pKSkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwgZGljdChhdHRyPVtdKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigyLCBiPTIwKSwgKCgxLCAyKSwgeydhJzogMTAsICdiJzogMjB9KSkKIAogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwgTm9uZSkpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZiksIChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCB7fSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigyLCBiPTIwKSwgKCgxLCAyKSwgeydhJzogMTAsICdiJzogMjB9KSkKIApAQCAtMzI1LDM4ICszMTQsMzkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJbMF0pLCB0dXBsZSkKIAogICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9waWNrbGUoc2VsZik6Ci0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgZi5fX3NldHN0YXRlX18oKGYsICgpLCB7fSwge30pKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKGYsIHByb3RvKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICB3aXRoIHNlbGYuQWxsb3dQaWNrbGUoKToKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKKyAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChmLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcHMoZiwgcHJvdG8pCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCi0gICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoZiwpLCB7fSwge30pKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmFyZ3NbMF0sIGZfY29weSkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKKyAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoZiwpLCB7fSwge30pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkuYXJnc1swXSwgZl9jb3B5KQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCi0gICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwgeydhJzogZn0sIHt9KSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5rZXl3b3Jkc1snYSddLCBmX2NvcHkpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCisgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHsnYSc6IGZ9LCB7fSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5rZXl3b3Jkc1snYSddLCBmX2NvcHkpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCiAgICAgIyBJc3N1ZSA2MDgzOiBSZWZlcmVuY2UgY291bnRpbmcgYnVnCiAgICAgZGVmIHRlc3Rfc2V0c3RhdGVfcmVmY291bnQoc2VsZik6CkBAIC0zNzUsMjQgKzM2NSw2MCBAQAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKG9iamVjdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLl9fc2V0c3RhdGVfXywgQmFkU2VxdWVuY2UoKSkKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCitjbGFzcyBUZXN0UGFydGlhbEMoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBpZiBjX2Z1bmN0b29sczoKKyAgICAgICAgcGFydGlhbCA9IGNfZnVuY3Rvb2xzLnBhcnRpYWwKKworICAgIGNsYXNzIEFsbG93UGlja2xlOgorICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0Yik6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfdW53cml0YWJsZShzZWxmKToKKyAgICAgICAgIyBhdHRyaWJ1dGVzIHNob3VsZCBub3QgYmUgd3JpdGFibGUKKyAgICAgICAgcCA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAxLCAyLCBhPTEwLCBiPTIwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2Z1bmMnLCBtYXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnYXJncycsICgxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdrZXl3b3JkcycsIGRpY3QoYT0xLCBiPTIpKQorCisgICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoaGV4KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgcC5fX2RpY3RfXworICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdwYXJ0aWFsIG9iamVjdCBhbGxvd2VkIF9fZGljdF9fIHRvIGJlIGRlbGV0ZWQnKQogCiBjbGFzcyBUZXN0UGFydGlhbFB5KFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgcGFydGlhbCA9IHN0YXRpY21ldGhvZChweV9mdW5jdG9vbHMucGFydGlhbCkKKyAgICBwYXJ0aWFsID0gcHlfZnVuY3Rvb2xzLnBhcnRpYWwKIAorICAgIGNsYXNzIEFsbG93UGlja2xlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBzZWxmLl9jbSA9IHJlcGxhY2VkX21vZHVsZSgiZnVuY3Rvb2xzIiwgcHlfZnVuY3Rvb2xzKQorICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtLl9fZW50ZXJfXygpCisgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdGIpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtLl9fZXhpdF9fKHR5cGUsIHZhbHVlLCB0YikKIAogaWYgY19mdW5jdG9vbHM6Ci0gICAgY2xhc3MgUGFydGlhbFN1YmNsYXNzKGNfZnVuY3Rvb2xzLnBhcnRpYWwpOgorICAgIGNsYXNzIENQYXJ0aWFsU3ViY2xhc3MoY19mdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgIHBhc3MKIAorY2xhc3MgUHlQYXJ0aWFsU3ViY2xhc3MocHlfZnVuY3Rvb2xzLnBhcnRpYWwpOgorICAgIHBhc3MKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCiBjbGFzcyBUZXN0UGFydGlhbENTdWJjbGFzcyhUZXN0UGFydGlhbEMpOgogICAgIGlmIGNfZnVuY3Rvb2xzOgotICAgICAgICBwYXJ0aWFsID0gUGFydGlhbFN1YmNsYXNzCisgICAgICAgIHBhcnRpYWwgPSBDUGFydGlhbFN1YmNsYXNzCiAKICAgICAjIHBhcnRpYWwgc3ViY2xhc3NlcyBhcmUgbm90IG9wdGltaXplZCBmb3IgbmVzdGVkIGNhbGxzCiAgICAgdGVzdF9uZXN0ZWRfb3B0aW1pemF0aW9uID0gTm9uZQogCitjbGFzcyBUZXN0UGFydGlhbFB5U3ViY2xhc3MoVGVzdFBhcnRpYWxQeSk6CisgICAgcGFydGlhbCA9IFB5UGFydGlhbFN1YmNsYXNzCiAKIGNsYXNzIFRlc3RQYXJ0aWFsTWV0aG9kKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjgzLDkgKzcwOSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuYXR0ciwgJ1RoaXMgaXMgYSBkaWZmZXJlbnQgdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5kaWN0X2F0dHIsIGYuZGljdF9hdHRyKQogCi0KK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQogY2xhc3MgVGVzdFJlZHVjZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZnVuYyA9IGZ1bmN0b29scy5yZWR1Y2UKKyAgICBpZiBjX2Z1bmN0b29sczoKKyAgICAgICAgZnVuYyA9IGNfZnVuY3Rvb2xzLnJlZHVjZQogCiAgICAgZGVmIHRlc3RfcmVkdWNlKHNlbGYpOgogICAgICAgICBjbGFzcyBTcXVhcmVzOgpAQCAtMTU0OCwxMyArMTU3NSwxNSBAQAogICAgICAgICBiYXNlcyA9IFtjLlNlcXVlbmNlLCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsIGMuU2V0XQogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oZGljdCwgaGF5c3RhY2spCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtkaWN0LCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsIGMuU2l6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwgb2JqZWN0XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW2RpY3QsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29udGFpbmVyLCBvYmplY3RdKQogICAgICAgICBiYXNlcyA9IFtjLkNvbnRhaW5lciwgYy5NYXBwaW5nLCBjLk11dGFibGVNYXBwaW5nLCBjLk9yZGVyZWREaWN0XQogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oYy5DaGFpbk1hcCwgaGF5c3RhY2spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtjLkNoYWluTWFwLCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwgb2JqZWN0XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29udGFpbmVyLCBvYmplY3RdKQogCiAgICAgICAgICMgSWYgdGhlcmUncyBhIGdlbmVyaWMgZnVuY3Rpb24gd2l0aCBpbXBsZW1lbnRhdGlvbnMgcmVnaXN0ZXJlZCBmb3IKICAgICAgICAgIyBib3RoIFNpemVkIGFuZCBDb250YWluZXIsIHBhc3NpbmcgYSBkZWZhdWx0ZGljdCB0byBpdCByZXN1bHRzIGluIGFuCkBAIC0xNTc1LDkgKzE2MDQsOSBAQAogICAgICAgICBiYXNlcyA9IFtjLk11dGFibGVTZXF1ZW5jZSwgYy5NdXRhYmxlTWFwcGluZ10KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKEQsIGJhc2VzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbRCwgYy5NdXRhYmxlU2VxdWVuY2UsIGMuU2VxdWVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmRlZmF1bHRkaWN0LCBkaWN0LCBjLk11dGFibGVNYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5NYXBwaW5nLCBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW0QsIGMuTXV0YWJsZVNlcXVlbmNlLCBjLlNlcXVlbmNlLCBjLlJldmVyc2libGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmRlZmF1bHRkaWN0LCBkaWN0LCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XSkKIAogICAgICAgICAjIENvbnRhaW5lciBhbmQgQ2FsbGFibGUgYXJlIHJlZ2lzdGVyZWQgb24gZGlmZmVyZW50IGJhc2UgY2xhc3NlcyBhbmQKQEAgLTE1OTAsNyArMTYxOSw4IEBACiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhDLCBoYXlzdGFjaykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW0MsIGMuQ2FsbGFibGUsIGMuZGVmYXVsdGRpY3QsIGRpY3QsIGMuTWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLCBvYmplY3RdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db250YWluZXIsIG9iamVjdF0pCiAKICAgICBkZWYgdGVzdF9yZWdpc3Rlcl9hYmMoc2VsZik6CiAgICAgICAgIGMgPSBjb2xsZWN0aW9ucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkgYi9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weQppbmRleCBiZWFjOTkzLi4yMTNiMmJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weQpAQCAtNCw3ICs0LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHJlCiAKLXJ4ID0gcmUuY29tcGlsZSgnXCgoXFMrKS5weSwgbGluZSAoXGQrKScpCityeCA9IHJlLmNvbXBpbGUocidcKChcUyspLnB5LCBsaW5lIChcZCspJykKIAogZGVmIGdldF9lcnJvcl9sb2NhdGlvbihtc2cpOgogICAgIG1vID0gcnguc2VhcmNoKHN0cihtc2cpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nYy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKaW5kZXggYTRkNjg0Yi4uZTcyNzQ5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2djLnB5CkBAIC02ODQsNyArNjg0LDYgQEAKICAgICAgICAgIyBDcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUgdGhyb3VnaCB0aGUgX19tYWluX18gbW9kdWxlIGFuZCBjaGVjawogICAgICAgICAjIGl0IGdldHMgY29sbGVjdGVkIGF0IGludGVycHJldGVyIHNodXRkb3duLgogICAgICAgICBjb2RlID0gIiIiaWYgMToKLSAgICAgICAgICAgIGltcG9ydCB3ZWFrcmVmCiAgICAgICAgICAgICBjbGFzcyBDOgogICAgICAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICBwcmludCgnX19kZWxfXyBjYWxsZWQnKQpAQCAtNjk5LDcgKzY5OCw2IEBACiAgICAgICAgICMgU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggYSBub24tX19tYWluX18gbW9kdWxlLgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIG1vZHVsZSA9ICIiImlmIDE6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHdlYWtyZWYKICAgICAgICAgICAgICAgICBjbGFzcyBDOgogICAgICAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdfX2RlbF9fIGNhbGxlZCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dkYi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CmluZGV4IDNkYjEwYjYuLjVmYmYxNTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CkBAIC01LDEzICs1LDE1IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgcHByaW50CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbG9jYWxlCiAKKyMgRklYTUU6IGlzc3VlICMyODAyMworcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkZJWE1FOiBpc3N1ZSAjMjgwMjMsIGNvbXBhY3QgZGljdCAoaXNzdWUgIzI3MzUwKSBicm9rZSBweXRob24tZ2RiLnB5IikKKwogIyBJcyB0aGlzIFB5dGhvbiBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhyZWFkcz8KIHRyeToKICAgICBpbXBvcnQgX3RocmVhZApAQCAtMTExLDYgKzExMyw3IEBACiAKIEJSRUFLUE9JTlRfRk49J2J1aWx0aW5faWQnCiAKK0B1bml0dGVzdC5za2lwSWYoc3VwcG9ydC5QR08sICJub3QgdXNlZnVsIGZvciBQR08iKQogY2xhc3MgRGVidWdnZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0IHRoYXQgdGhlIGRlYnVnZ2VyIGNhbiBkZWJ1ZyBQeXRob24uIiIiCkBAIC0xNzcsNiArMTgwLDcgQEAKICAgICAgICAgYXJncyA9IFsnLS1ldmFsLWNvbW1hbmQ9JXMnICUgY21kIGZvciBjbWQgaW4gY29tbWFuZHNdCiAgICAgICAgIGFyZ3MgKz0gWyItLWFyZ3MiLAogICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZV0KKyAgICAgICAgYXJncy5leHRlbmQoc3VicHJvY2Vzcy5fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkpCiAKICAgICAgICAgaWYgbm90IGltcG9ydF9zaXRlOgogICAgICAgICAgICAgIyAtUyBzdXBwcmVzc2VzIHRoZSBkZWZhdWx0ICdpbXBvcnQgc2l0ZScKQEAgLTI0MCw3ICsyNDQsNyBAQAogICAgICAgICAjIGdkYiBjYW4gaW5zZXJ0IGFkZGl0aW9uYWwgJ1xuJyBhbmQgc3BhY2UgY2hhcmFjdGVycyBpbiB2YXJpb3VzIHBsYWNlcwogICAgICAgICAjIGluIGl0cyBvdXRwdXQsIGRlcGVuZGluZyBvbiB0aGUgd2lkdGggb2YgdGhlIHRlcm1pbmFsIGl0J3MgY29ubmVjdGVkCiAgICAgICAgICMgdG8gKHVzaW5nIGl0cyAid3JhcF9oZXJlIiBmdW5jdGlvbikKLSAgICAgICAgbSA9IHJlLm1hdGNoKCcuKiMwXHMrYnVpbHRpbl9pZFxzK1woc2VsZlw9LiosXHMrdj1ccyooLio/KVwpXHMrYXRccytcUypQeXRob24vYmx0aW5tb2R1bGUuYy4qJywKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrXFMqUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCiAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LCByZS5ET1RBTEwpCiAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGdkYiBvdXRwdXQ6ICVyXG4lcycgJSAoZ2RiX291dHB1dCwgZ2RiX291dHB1dCkpCkBAIC0yOTIsNyArMjk2LDkgQEAKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIGRpY3Rpb25hcmllcycKICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHt9KQogICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoeydmb28nOiAnYmFyJ30sICJ7J2Zvbyc6ICdiYXInfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7J2Zvbyc6ICdiYXInLCAnZG91Z2xhcyc6IDQyfSwgInsnZG91Z2xhcyc6IDQyLCAnZm9vJzogJ2Jhcid9IikKKyAgICAgICAgIyBQWVRIT05IQVNIU0VFRCBpcyBuZWVkIHRvIGdldCB0aGUgZXhhY3QgaXRlbSBvcmRlcgorICAgICAgICBpZiBub3Qgc3lzLmZsYWdzLmlnbm9yZV9lbnZpcm9ubWVudDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7J2Zvbyc6ICdiYXInLCAnZG91Z2xhcyc6IDQyfSwgInsnZG91Z2xhcyc6IDQyLCAnZm9vJzogJ2Jhcid9IikKIAogICAgIGRlZiB0ZXN0X2xpc3RzKHNlbGYpOgogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2YgbGlzdHMnCkBAIC0zNTUsOSArMzYxLDEyIEBACiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBzZXRzJwogICAgICAgICBpZiAoZ2RiX21ham9yX3ZlcnNpb24sIGdkYl9taW5vcl92ZXJzaW9uKSA8ICg3LCAzKToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInByZXR0eS1wcmludGluZyBvZiBzZXRzIG5lZWRzIGdkYiA3LjMgb3IgbGF0ZXIiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KCksICdzZXQoKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWydhJywgJ2InXSksICJ7J2EnLCAnYid9IikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbNCwgNSwgNl0pLCAiezQsIDUsIDZ9IikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldCgpLCAic2V0KCkiKQorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFsnYSddKSwgInsnYSd9IikKKyAgICAgICAgIyBQWVRIT05IQVNIU0VFRCBpcyBuZWVkIHRvIGdldCB0aGUgZXhhY3QgZnJvemVuc2V0IGl0ZW0gb3JkZXIKKyAgICAgICAgaWYgbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFsnYScsICdiJ10pLCAieydhJywgJ2InfSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFs0LCA1LCA2XSksICJ7NCwgNSwgNn0iKQogCiAgICAgICAgICMgRW5zdXJlIHRoYXQgd2UgaGFuZGxlIHNldHMgY29udGFpbmluZyB0aGUgImR1bW15IiBrZXkgdmFsdWUsCiAgICAgICAgICMgd2hpY2ggaGFwcGVucyBvbiBkZWxldGlvbjoKQEAgLTM3MCw5ICszNzksMTIgQEAKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIGZyb3plbnNldHMnCiAgICAgICAgIGlmIChnZGJfbWFqb3JfdmVyc2lvbiwgZ2RiX21pbm9yX3ZlcnNpb24pIDwgKDcsIDMpOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgicHJldHR5LXByaW50aW5nIG9mIGZyb3plbnNldHMgbmVlZHMgZ2RiIDcuMyBvciBsYXRlciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoKSwgJ2Zyb3plbnNldCgpJykKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbJ2EnLCAnYiddKSwgImZyb3plbnNldCh7J2EnLCAnYid9KSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWzQsIDUsIDZdKSwgImZyb3plbnNldCh7NCwgNSwgNn0pIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldCgpLCAiZnJvemVuc2V0KCkiKQorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFsnYSddKSwgImZyb3plbnNldCh7J2EnfSkiKQorICAgICAgICAjIFBZVEhPTkhBU0hTRUVEIGlzIG5lZWQgdG8gZ2V0IHRoZSBleGFjdCBmcm96ZW5zZXQgaXRlbSBvcmRlcgorICAgICAgICBpZiBub3Qgc3lzLmZsYWdzLmlnbm9yZV9lbnZpcm9ubWVudDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWydhJywgJ2InXSksICJmcm96ZW5zZXQoeydhJywgJ2InfSkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbNCwgNSwgNl0pLCAiZnJvemVuc2V0KHs0LCA1LCA2fSkiKQogCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9ucyhzZWxmKToKICAgICAgICAgIyBUZXN0IGEgUnVudGltZUVycm9yCkBAIC01MDEsNiArNTEzLDEwIEBACiAKICAgICBkZWYgdGVzdF9idWlsdGluc19oZWxwKHNlbGYpOgogICAgICAgICAnRW5zdXJlIHRoYXQgdGhlIG5ldy1zdHlsZSBjbGFzcyBfSGVscGVyIGluIHNpdGUucHkgY2FuIGJlIGhhbmRsZWQnCisKKyAgICAgICAgaWYgc3lzLmZsYWdzLm5vX3NpdGU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJuZWVkIHNpdGUgbW9kdWxlLCBidXQgLVMgb3B0aW9uIHdhcyB1c2VkIikKKwogICAgICAgICAjICh0aGlzIHdhcyB0aGUgaXNzdWUgY2F1c2luZyB0cmFjZWJhY2tzIGluCiAgICAgICAgICMgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4MDMyI21zZzEwMDUzNyApCiAgICAgICAgIGdkYl9yZXByLCBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfZ2RiX3JlcHIoJ2lkKF9fYnVpbHRpbnNfXy5oZWxwKScsIGltcG9ydF9zaXRlPVRydWUpCkBAIC01MzYsNyArNTUyLDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTU0OSw3ICs1NjUsNyBAQAogZm9vID0gRm9vKCkKIGZvby5hbl9hdHRyID0gZm9vCiBpZChmb28pJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocic8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTYzLDcgKzU3OSw3IEBACiBhLmFuX2F0dHIgPSBiCiBiLmFuX2F0dHIgPSBhCiBpZChhKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocic8Rm9vXChhbl9hdHRyPTxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01OTgsNyArNjE0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2J1aWx0aW5fbWV0aG9kKHNlbGYpOgogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpbXBvcnQgc3lzOyBpZChzeXMuc3Rkb3V0LnJlYWRsaW5lcyknKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxidWlsdC1pbiBtZXRob2QgcmVhZGxpbmVzIG9mIF9pby5UZXh0SU9XcmFwcGVyIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocic8YnVpbHQtaW4gbWV0aG9kIHJlYWRsaW5lcyBvZiBfaW8uVGV4dElPV3JhcHBlciBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNjEzLDcgKzYyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSdidWlsdGluX2lkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3ByaW50IChQeUZyYW1lT2JqZWN0KikoKChQeUNvZGVPYmplY3QqKXYpLT5jb196b21iaWVmcmFtZSknXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJy4qXHMrXCQxID1ccytGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInLipccytcJDEgPVxzK0ZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIDxzdHJpbmc+LCBsaW5lIDMsIGluIGZvbyBcKFwpXHMrLionLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX291dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLkRPVEFMTCksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSAoZ2RiX291dHB1dCwgZ2RiX291dHB1dCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDQ3OS5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9yX3N0b3AucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwNDc5LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2dlbmVyYXRvcl9zdG9wLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggM2Y4MjQ2Mi4uZjRiMzNhZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtMjQ1LDExICsyNDUsMTEgQEAKICAgICAgICAgICAgIHlpZWxkCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSwgXAotICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CiAKICAgICAgICAgICAgIG5leHQoZ2VuKCkpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIC4qIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiksIFwKICAgICAgICAgICAgICB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogCkBAIC0yNjgsNyArMjY4LDcgQEAKICAgICAgICAgZyA9IGYoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZyksIDEpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKICAgICAgICAgICAgICAgICBuZXh0KGcpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CmluZGV4IGI3N2QxZDcuLmFlNWRkNmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQpAQCAtMTAsMTEgKzEwLDkgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKLWRlZiBzYWZlX3JtZGlyKGRpcm5hbWUpOgotICAgIHRyeToKLSAgICAgICAgb3Mucm1kaXIoZGlybmFtZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcGFzcworZGVmIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBkYXRhPWInZm9vJyk6CisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAneGInLCAwKSBhcyBmcDoKKyAgICAgICAgZnAud3JpdGUoZGF0YSkKIAogCiBjbGFzcyBHZW5lcmljVGVzdDoKQEAgLTk3LDUyICs5NSw0NyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHMxW246bisxXSwgczJbbjpuKzFdKQogCiAgICAgZGVmIHRlc3RfZ2V0c2l6ZShzZWxmKToKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aG1vZHVsZS5nZXRzaXplKHN1cHBvcnQuVEVTVEZOKSwgMykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlZDoKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCiAKLSAgICBkZWYgdGVzdF90aW1lKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAiYWIiKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidIZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRobW9kdWxlLmdldHNpemUoZmlsZW5hbWUpLCA1KQorICAgICAgICBvcy5yZW1vdmUoZmlsZW5hbWUpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGInSGVsbG8gV29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGhtb2R1bGUuZ2V0c2l6ZShmaWxlbmFtZSksIDEyKQorCisgICAgZGVmIHRlc3RfZmlsZXRpbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidmb28nKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgImFiIiwgMCkgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJiYXIiKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgInJiIikKLSAgICAgICAgICAgIGQgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGIiZm9vYmFyIikKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoCi0gICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldGN0aW1lKHN1cHBvcnQuVEVTVEZOKSwKLSAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0bXRpbWUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICApCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiLCAwKSBhcyBmOgorICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJmb29iYXIiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKAorICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldGN0aW1lKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRtdGltZShmaWxlbmFtZSkKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfZXhpc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInhiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgaWYgbm90IHNlbGYucGF0aG1vZHVsZSA9PSBnZW5lcmljcGF0aDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5sZXhpc3RzKHN1cHBvcnQuVEVTVEZOKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZSgpOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgICAgICBpZiBub3Qgc2VsZi5wYXRobW9kdWxlID09IGdlbmVyaWNwYXRoOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUubGV4aXN0cyhmaWxlbmFtZSksIFRydWUpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAicGlwZSIpLCAicmVxdWlyZXMgb3MucGlwZSgpIikKICAgICBkZWYgdGVzdF9leGlzdHNfZmQoc2VsZik6CkBAIC0xNTQsNTMgKzE0Nyw2NiBAQAogICAgICAgICAgICAgb3MuY2xvc2UodykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKHIpKQogCi0gICAgZGVmIHRlc3RfaXNkaXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgICAgIG9zLnJlbW92ZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIG9zLm1rZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZSgpOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzYWZlX3JtZGlyKHN1cHBvcnQuVEVTVEZOKQorICAgIGRlZiB0ZXN0X2lzZGlyX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoZmlsZW5hbWUpLCBGYWxzZSkKIAotICAgIGRlZiB0ZXN0X2lzZmlsZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKHN1cHBvcnQuVEVTVEZOKSwgVHJ1ZSkKLSAgICAgICAgICAgIG9zLnJlbW92ZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIG9zLm1rZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlKCk6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNhZmVfcm1kaXIoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIEZhbHNlKQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfY3JlYXRlX2ZpbGUoZmlsZW5hbWUpOgotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGInZm9vJykKKyAgICBkZWYgdGVzdF9pc2Rpcl9kaXIoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm1kaXIsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIG9zLm1rZGlyKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIFRydWUpCisKKyAgICBkZWYgdGVzdF9pc2ZpbGVfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBGYWxzZSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2lzZmlsZV9kaXIoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm1kaXIsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBGYWxzZSkKKworICAgICAgICBvcy5ta2RpcihmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKGZpbGVuYW1lKSwgRmFsc2UpCiAKICAgICBkZWYgdGVzdF9zYW1lZmlsZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbiA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuLCB0ZXN0X2ZuKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4pCisgICAgICAgIGZpbGUxID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgZmlsZTIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGUxKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGUyKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGUxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKGZpbGUxLCBmaWxlMSkpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKGZpbGUxLCBmaWxlMikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUpCisKKyAgICBkZWYgX3Rlc3Rfc2FtZWZpbGVfb25fbGlua19mdW5jKHNlbGYsIGZ1bmMpOgorICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKKworICAgICAgICBmdW5jKHRlc3RfZm4xLCB0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQorICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCiAKICAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiAgICAgZGVmIHRlc3Rfc2FtZWZpbGVfb25fc3ltbGluayhzZWxmKToKQEAgLTIwOSwzMSArMjE1LDM3IEBACiAgICAgZGVmIHRlc3Rfc2FtZWZpbGVfb25fbGluayhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMob3MubGluaykKIAotICAgIGRlZiBfdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4xKQotCi0gICAgICAgICAgICBmdW5jKHRlc3RfZm4xLCB0ZXN0X2ZuMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4xKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCiAgICAgZGVmIHRlc3Rfc2FtZXN0YXQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4gPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbikKLSAgICAgICAgICAgIHRlc3RfZm5zID0gW3Rlc3RfZm5dKjIKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4pCisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorICAgICAgICBzdGF0MSA9IG9zLnN0YXQodGVzdF9mbjEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoc3RhdDEsIG9zLnN0YXQodGVzdF9mbjEpKSkKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc3RhdDIgPSBvcy5zdGF0KHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChzdGF0MSwgc3RhdDIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KQorCisgICAgZGVmIF90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKKyAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgorICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjEpCisgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KG9zLnN0YXQodGVzdF9mbjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQodGVzdF9mbjIpKSkKKyAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChvcy5zdGF0KHRlc3RfZm4xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdCh0ZXN0X2ZuMikpKQogCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X3NhbWVzdGF0X29uX3N5bWxpbmsoc2VsZik6CkBAIC0yNDIsMzEgKzI1NCwxNyBAQAogICAgIGRlZiB0ZXN0X3NhbWVzdGF0X29uX2xpbmsoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfc2FtZXN0YXRfb25fbGlua19mdW5jKG9zLmxpbmspCiAKLSAgICBkZWYgX3Rlc3Rfc2FtZXN0YXRfb25fbGlua19mdW5jKHNlbGYsIGZ1bmMpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKLSAgICAgICAgICAgIHRlc3RfZm5zID0gKHRlc3RfZm4xLCB0ZXN0X2ZuMikKLSAgICAgICAgICAgIGZ1bmMoKnRlc3RfZm5zKQotICAgICAgICAgICAgc3RhdHMgPSBtYXAob3Muc3RhdCwgdGVzdF9mbnMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KCpzdGF0cykpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4yKQotICAgICAgICAgICAgc3RhdHMgPSBtYXAob3Muc3RhdCwgdGVzdF9mbnMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQogICAgIGRlZiB0ZXN0X3NhbWVvcGVuZmlsZShzZWxmKToKLSAgICAgICAgZm5hbWUgPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJ3YiIpIGFzIGEsIG9wZW4oZm5hbWUsICJ3YiIpIGFzIGI6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVvcGVuZmlsZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5maWxlbm8oKSwgYi5maWxlbm8oKSkpCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiLCAwKSBhcyBmcDE6CisgICAgICAgICAgICBmZDEgPSBmcDEuZmlsZW5vKCkKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIiwgMCkgYXMgZnAyOgorICAgICAgICAgICAgICAgIGZkMiA9IGZwMi5maWxlbm8oKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZW9wZW5maWxlKGZkMSwgZmQyKSkKKwogCiBjbGFzcyBUZXN0R2VuZXJpY1Rlc3QoR2VuZXJpY1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIElzc3VlIDE2ODUyOiBHZW5lcmljVGVzdCBjYW4ndCBpbmhlcml0IGZyb20gdW5pdHRlc3QuVGVzdENhc2UKQEAgLTM5MCwxMCArMzg4LDEzIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChiImZvbyIpKQogCisgICAgICAgICMgYXZvaWQgVW5pY29kZURlY29kZUVycm9yIG9uIFdpbmRvd3MKKyAgICAgICAgdW5kZWNvZGFibGVfcGF0aCA9IGInJyBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlIGInZlx4ZjJceGYyJworCiAgICAgICAgICMgQWJzcGF0aCByZXR1cm5zIGJ5dGVzIHdoZW4gdGhlIGFyZyBpcyBieXRlcwogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIGZvciBwYXRoIGluIChiJycsIGInZm9vJywgYidmXHhmMlx4ZjInLCBiJy9mb28nLCBiJ0M6XFwnKToKKyAgICAgICAgICAgIGZvciBwYXRoIGluIChiJycsIGInZm9vJywgdW5kZWNvZGFibGVfcGF0aCwgYicvZm9vJywgYidDOlxcJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKHBhdGgpLCBieXRlcykKIAogICAgIGRlZiB0ZXN0X3JlYWxwYXRoKHNlbGYpOgpAQCAtNDUyLDE2ICs0NTMsMTUgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oJ3N0cicsIGInYnl0ZXMnKQogICAgICAgICAgICAgIyByZWdyZXNzaW9uLCBzZWUgIzE1Mzc3Ci0gICAgICAgICAgICBlcnJtc2cgPSByJ2pvaW5cKFwpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCBub3QgJXInCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oNDIsICdzdHInKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKCdzdHInLCA0MikKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbig0MikKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdsaXN0Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbGlzdCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKFtdKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2J5dGVhcnJheScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2J5dGVhcnJheScpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKGJ5dGVhcnJheShiJ2ZvbycpLCBieXRlYXJyYXkoYidiYXInKSkKIAogICAgIGRlZiB0ZXN0X3JlbHBhdGhfZXJyb3JzKHNlbGYpOgpAQCAtNDczLDE0ICs0NzMsNTkgQEAKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aChiJ2J5dGVzJywgJ3N0cicpCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKCdzdHInLCBiJ2J5dGVzJykKLSAgICAgICAgICAgIGVycm1zZyA9IHIncmVscGF0aFwoXCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsIG5vdCAlcicKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCg0MiwgJ3N0cicpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoJ3N0cicsIDQyKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2J5dGVhcnJheScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2J5dGVhcnJheScpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKGJ5dGVhcnJheShiJ2ZvbycpLCBieXRlYXJyYXkoYidiYXInKSkKIAogCitjbGFzcyBQYXRoTGlrZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD0nJyk6CisgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhdGgsIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYucGF0aAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9uYW1lID0gc3VwcG9ydC5URVNURk4ubG93ZXIoKQorICAgICAgICBzZWxmLmZpbGVfcGF0aCA9IHNlbGYuUGF0aExpa2Uoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi5maWxlX25hbWUpCisgICAgICAgIGNyZWF0ZV9maWxlKHNlbGYuZmlsZV9uYW1lLCBiInRlc3RfZ2VuZXJpY3BhdGguUGF0aExpa2VUZXN0cyIpCisKKyAgICBkZWYgYXNzZXJ0UGF0aEVxdWFsKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoc2VsZi5maWxlX3BhdGgpLCBmdW5jKHNlbGYuZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhpc3RzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmV4aXN0cykKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNmaWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmlzZmlsZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNkaXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguaXNkaXIpCisKKyAgICBkZWYgdGVzdF9wYXRoX2NvbW1vbnByZWZpeChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmNvbW1vbnByZWZpeChbc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9uYW1lXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlX25hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2dldHNpemUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguZ2V0c2l6ZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZ2V0bXRpbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguZ2V0YXRpbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2dldGN0aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldGN0aW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9zYW1lZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZWZpbGUoc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9uYW1lKSkKKworCiBpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CmluZGV4IDk4NGFhYzcuLjU3NTBiZmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQpAQCAtNSwxMCArNSw2IEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIHRoZSBfdGVzdGNhcGkgbW9kdWxlIGlzbid0IGF2YWlsYWJsZS4KIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2tleXdvcmRzLCBnZXRhcmdzX2tleXdvcmRfb25seQotdHJ5OgotICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX0wsIGdldGFyZ3NfSwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGdldGFyZ3NfTCA9IE5vbmUgIyBQWV9MT05HX0xPTkcgbm90IGF2YWlsYWJsZQogCiAjID4gSG93IGFib3V0IHRoZSBmb2xsb3dpbmcgY291bnRlcnByb3Bvc2FsLiBUaGlzIGFsc28gY2hhbmdlcyBzb21lIG9mCiAjID4gdGhlIG90aGVyIGZvcm1hdCBjb2RlcyB0byBiZSBhIGxpdHRsZSBtb3JlIHJlZ3VsYXIuCkBAIC0zMDksNyArMzA1LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0YXJnc19uLCBWRVJZX0xBUkdFKQogCiAKLUB1bml0dGVzdC5za2lwSWYoZ2V0YXJnc19MIGlzIE5vbmUsICdQWV9MT05HX0xPTkcgaXMgbm90IGF2YWlsYWJsZScpCiBjbGFzcyBMb25nTG9uZ19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfTChzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfTApAQCAtMzY1LDcgKzM2MCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEZsb2F0U3ViY2xhc3MoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoRmxvYXRTdWJjbGFzczIoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2YsIEJhZEZsb2F0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEJhZEZsb2F0MigpKSwgNC4yNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDIoKSksIDQuMjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEJhZEZsb2F0Myg3LjUpKSwgNy41KQogCiAgICAgICAgIGZvciB4IGluIChGTFRfTUlOLCAtRkxUX01JTiwgRkxUX01BWCwgLUZMVF9NQVgsIElORiwgLUlORik6CkBAIC0zOTAsNyArMzg2LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoRmxvYXRTdWJjbGFzcyg3LjUpKSwgNy41KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChGbG9hdFN1YmNsYXNzMig3LjUpKSwgNy41KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZCwgQmFkRmxvYXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoQmFkRmxvYXQyKCkpLCA0LjI1KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0MigpKSwgNC4yNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoQmFkRmxvYXQzKDcuNSkpLCA3LjUpCiAKICAgICAgICAgZm9yIHggaW4gKERCTF9NSU4sIC1EQkxfTUlOLCBEQkxfTUFYLCAtREJMX01BWCwgSU5GLCAtSU5GKToKQEAgLTUxMiw3ICs1MDksNyBAQAogCiAgICAgICAgIHJldCA9IGdldF9rd2FyZ3MoKipEaWN0U3ViY2xhc3MoeydhJzogMSwgJ2InOiAyfSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LCB7J2EnOiAxLCAnYic6IDJ9KQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmV0LCBkaWN0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocmV0KSwgZGljdCkKIAogICAgICAgICByZXQgPSBnZXRfa3dhcmdzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXQsICh7fSwgTm9uZSkpCkBAIC02MjgsMjAgKzYyNSwyMCBAQAogICAgICAgICAgICAgKQogICAgICAgICAjIHJlcXVpcmVkIGFyZyBtaXNzaW5nCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CisgICAgICAgICAgICByIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkob3B0aW9uYWw9MikKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgciJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KGtleXdvcmRfb25seT0zKQogCiAgICAgZGVmIHRlc3RfdG9vX21hbnlfYXJncyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgzIGdpdmVuXCkiKToKKyAgICAgICAgICAgIHIiRnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMyBnaXZlblwpIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAzKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiZnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAzIGFyZ3VtZW50cyBcKDQgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgciJmdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDMgYXJndW1lbnRzIFwoNCBnaXZlblwpIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAzLCBrZXl3b3JkX29ubHk9NSkKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfa2V5d29yZChzZWxmKToKQEAgLTY1Niw2ICs2NTMsMzkgQEAKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsICoqeydcdURDODAnOiAxMH0pCiAKIAorY2xhc3MgUG9zaXRpb25hbE9ubHlBbmRLZXl3b3Jkc19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfcG9zaXRpb25hbF9vbmx5X2FuZF9rZXl3b3JkcyBhcyBnZXRhcmdzCisKKyAgICBkZWYgdGVzdF9wb3NpdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgdXNpbmcgYWxsIHBvc3NpYmxlIHBvc2l0aW9uYWwgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCAyLCAzKSwgKDEsIDIsIDMpKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfYXJncyhzZWxmKToKKyAgICAgICAgIyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwgMiwga2V5d29yZD0zKSwgKDEsIDIsIDMpKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uYWxfYXJncyhzZWxmKToKKyAgICAgICAgIyBtaXNzaW5nIG9wdGlvbmFsIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwgMiksICgxLCAyLCAtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIGtleXdvcmQ9MyksICgxLCAtMSwgMykpCisKKyAgICBkZWYgdGVzdF9yZXF1aXJlZF9hcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxKSwgKDEsIC0xLCAtMSkpCisgICAgICAgICMgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmcgbWlzc2luZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgciJGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpIik6CisgICAgICAgICAgICBzZWxmLmdldGFyZ3MoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICByIkZ1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDEgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgwIGdpdmVuXCkiKToKKyAgICAgICAgICAgIHNlbGYuZ2V0YXJncyhrZXl3b3JkPTMpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9rZXl3b3JkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIicnIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIpOgorICAgICAgICAgICAgc2VsZi5nZXRhcmdzKDEsIDIsICoqeycnOiA2NjZ9KQorCisKIGNsYXNzIEJ5dGVzX1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9jKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19jCkBAIC04MjIsMTAgKzg1MiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZXNfaGFzaCgnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpLCBiJ2FiY1x4ZTknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGInYWJjXHhlOVx4MDAnKSkKICAgICAgICAgYnVmID0gYnl0ZWFycmF5KGIneCcqNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2VzX2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoYid4Jyo0KSkKICAgICAgICAgYnVmID0gYnl0ZWFycmF5KCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2VzX2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCiAKICAgICBkZWYgdGVzdF9ldF9oYXNoKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19ldF9oYXNoCkBAIC04NDgsMTAgKzg3OCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZXRfaGFzaCgnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpLCBiJ2FiY1x4ZTknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGInYWJjXHhlOVx4MDAnKSkKICAgICAgICAgYnVmID0gYnl0ZWFycmF5KGIneCcqNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2V0X2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoYid4Jyo0KSkKICAgICAgICAgYnVmID0gYnl0ZWFycmF5KCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2V0X2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCiAKICAgICBkZWYgdGVzdF91KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc191CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkgYi9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKaW5kZXggZGU2MTBjNy4uZDM0NWJhYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBvcwogaW1wb3J0IGJhc2U2NAotaW1wb3J0IHNodXRpbAogaW1wb3J0IGdldHRleHQKIGltcG9ydCB1bml0dGVzdAogCkBAIC00NDAsNiArNDM5LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5fX2NsYXNzX18sIER1bW15R05VVHJhbnNsYXRpb25zKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2MycHknLCAnRU5PRU5UJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZ2V0dGV4dCwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQppbmRleCAxNTRlM2I2Li4wM2YyYzg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CkBAIC04LDYgKzgsOTUgQEAKICMgdGVzdGluZyBpbXBvcnQgKgogZnJvbSBzeXMgaW1wb3J0ICoKIAorIyBkaWZmZXJlbnQgaW1wb3J0IHBhdHRlcm5zIHRvIGNoZWNrIHRoYXQgX19hbm5vdGF0aW9uc19fIGRvZXMgbm90IGludGVyZmVyZQorIyB3aXRoIGltcG9ydCBtYWNoaW5lcnkKK2ltcG9ydCB0ZXN0LmFubl9tb2R1bGUgYXMgYW5uX21vZHVsZQoraW1wb3J0IHR5cGluZworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKK2Zyb20gdGVzdCBpbXBvcnQgYW5uX21vZHVsZTIKK2ltcG9ydCB0ZXN0CisKKyMgVGhlc2UgYXJlIHNoYXJlZCB3aXRoIHRlc3RfdG9rZW5pemUgYW5kIG90aGVyIHRlc3QgbW9kdWxlcy4KKyMKKyMgTm90ZTogc2luY2Ugc2V2ZXJhbCB0ZXN0IGNhc2VzIGZpbHRlciBvdXQgZmxvYXRzIGJ5IGxvb2tpbmcgZm9yICJlIiBhbmQgIi4iLAorIyBkb24ndCBhZGQgaGV4YWRlY2ltYWwgbGl0ZXJhbHMgdGhhdCBjb250YWluICJlIiBvciAiRSIuCitWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTID0gWworICAgICcwXzBfMCcsCisgICAgJzRfMicsCisgICAgJzFfMDAwMF8wMDAwJywKKyAgICAnMGIxMDAxXzAxMDAnLAorICAgICcweGZmZmZfZmZmZicsCisgICAgJzBvNV83XzcnLAorICAgICcxXzAwXzAwLjUnLAorICAgICcxXzAwXzAwLjVlNScsCisgICAgJzFfMDBfMDBlNV8xJywKKyAgICAnMWUxXzAnLAorICAgICcuMV80JywKKyAgICAnLjFfNGUxJywKKyAgICAnMGJfMCcsCisgICAgJzB4X2YnLAorICAgICcwb181JywKKyAgICAnMV8wMF8wMGonLAorICAgICcxXzAwXzAwLjVqJywKKyAgICAnMV8wMF8wMGU1XzFqJywKKyAgICAnLjFfNGonLAorICAgICcoMV8yLjUrM18zaiknLAorICAgICcoLjVfNmopJywKK10KK0lOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUyA9IFsKKyAgICAjIFRyYWlsaW5nIHVuZGVyc2NvcmVzOgorICAgICcwXycsCisgICAgJzQyXycsCisgICAgJzEuNGpfJywKKyAgICAnMHhfJywKKyAgICAnMGIxXycsCisgICAgJzB4Zl8nLAorICAgICcwbzVfJywKKyAgICAnMCBpZiAxX0Vsc2UgMScsCisgICAgIyBVbmRlcnNjb3JlcyBpbiB0aGUgYmFzZSBzZWxlY3RvcjoKKyAgICAnMF9iMCcsCisgICAgJzBfeGYnLAorICAgICcwX281JywKKyAgICAjIE9sZC1zdHlsZSBvY3RhbCwgc3RpbGwgZGlzYWxsb3dlZDoKKyAgICAnMF83JywKKyAgICAnMDlfOTknLAorICAgICMgTXVsdGlwbGUgY29uc2VjdXRpdmUgdW5kZXJzY29yZXM6CisgICAgJzRfX19fX19fMicsCisgICAgJzAuMV9fNCcsCisgICAgJzAuMV9fNGonLAorICAgICcwYjEwMDFfXzAxMDAnLAorICAgICcweGZmZmZfX2ZmZmYnLAorICAgICcweF9fXycsCisgICAgJzBvNV9fNzcnLAorICAgICcxZTFfXzAnLAorICAgICcxZTFfXzBqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYmVmb3JlIGEgZG90OgorICAgICcxXy40JywKKyAgICAnMV8uNGonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBhIGRvdDoKKyAgICAnMS5fNCcsCisgICAgJzEuXzRqJywKKyAgICAnLl81JywKKyAgICAnLl81aicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGFmdGVyIGEgc2lnbjoKKyAgICAnMS4wZStfMScsCisgICAgJzEuMGUrXzFqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYmVmb3JlIGo6CisgICAgJzEuNF9qJywKKyAgICAnMS40ZTVfaicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBlOgorICAgICcxX2UxJywKKyAgICAnMS40X2UxJywKKyAgICAnMS40X2UxaicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGFmdGVyIGU6CisgICAgJzFlXzEnLAorICAgICcxLjRlXzEnLAorICAgICcxLjRlXzFqJywKKyAgICAjIENvbXBsZXggY2FzZXMgd2l0aCBwYXJlbnM6CisgICAgJygxKzEuNV9qXyknLAorICAgICcoMSsxLjVfaiknLAorXQorCiAKIGNsYXNzIFRva2VuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC04Nyw2ICsxNzYsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxIGlmIDBlbHNlIDAsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiMCBpZiAxRWxzZSAwIikKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChsaXQpLCBldmFsKGxpdC5yZXBsYWNlKCdfJywgJycpKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgbGl0KQorICAgICAgICAjIFNhbml0eSBjaGVjazogbm8gbGl0ZXJhbCBiZWdpbnMgd2l0aCBhbiB1bmRlcnNjb3JlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgZXZhbCwgIl8wIikKKwogICAgIGRlZiB0ZXN0X3N0cmluZ19saXRlcmFscyhzZWxmKToKICAgICAgICAgeCA9ICcnOyB5ID0gIiI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMCBhbmQgeCA9PSB5KQogICAgICAgICB4ID0gJ1wnJzsgeSA9ICInIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAxIGFuZCB4ID09IHkgYW5kIG9yZCh4KSA9PSAzOSkKQEAgLTEzOSw2ICsyMzYsMTkgQEAKICAgICAgICAgICAgICAgICBjb21waWxlKHMsICI8dGVzdD4iLCAiZXhlYyIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ1bmV4cGVjdGVkIEVPRiIsIHN0cihjbS5leGNlcHRpb24pKQogCit2YXJfYW5ub3RfZ2xvYmFsOiBpbnQgIyBhIGdsb2JhbCBhbm5vdGF0ZWQgaXMgbmVjZXNzYXJ5IGZvciB0ZXN0X3Zhcl9hbm5vdAorCisjIGN1c3RvbSBuYW1lc3BhY2UgZm9yIHRlc3RpbmcgX19hbm5vdGF0aW9uc19fCisKK2NsYXNzIENOUzoKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2RjdCA9IHt9CisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGl0ZW0sIHZhbHVlKToKKyAgICAgICAgc2VsZi5fZGN0W2l0ZW0ubG93ZXIoKV0gPSB2YWx1ZQorICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RjdFtpdGVtXQorCisKIGNsYXNzIEdyYW1tYXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIHNpbmdsZV9pbnB1dDogTkVXTElORSB8IHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdCBORVdMSU5FCkBAIC0xNTQsNiArMjY0LDE2MyBAQAogICAgICAgICAjIHRlc3RsaXN0IEVORE1BUktFUgogICAgICAgICB4ID0gZXZhbCgnMSwgMCBvciAxJykKIAorICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9iYXNpY3Moc2VsZik6CisgICAgICAgICMgYWxsIHRoZXNlIHNob3VsZCBiZSBhbGxvd2VkCisgICAgICAgIHZhcjE6IGludCA9IDUKKyAgICAgICAgdmFyMjogW2ludCwgc3RyXQorICAgICAgICBteV9sc3QgPSBbNDJdCisgICAgICAgIGRlZiBvbmUoKToKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGludC5uZXdfYXR0cjogaW50CisgICAgICAgIFtsaXN0XVswXTogdHlwZQorICAgICAgICBteV9sc3Rbb25lKCktMV06IGludCA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9sc3QsIFs1XSkKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9zeW50YXhfZXJyb3JzKHNlbGYpOgorICAgICAgICAjIHBhcnNlciBwYXNzCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGY6IGludCIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieDogaW50OiBzdHIiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIG5vbmxvY2FsIHg6IGludFxuIikKKyAgICAgICAgIyBBU1QgcGFzcworICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIlt4LCAwXTogaW50XG4iKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImYoKTogaW50XG4iKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIih4LCk6IGludCIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgKHgsIHkpOiBpbnQgPSAoMSwgMilcbiIpCisgICAgICAgICMgc3ltdGFibGUgcGFzcworICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbG9iYWwgeFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbG9iYWwgeFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfYmFzaWNfc2VtYW50aWNzKHNlbGYpOgorICAgICAgICAjIGV4ZWN1dGlvbiBvcmRlcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIG5vX25hbWVbZG9lc19ub3RfZXhpc3RdOiBub19uYW1lX2FnYWluID0gMS8wCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIG5vX25hbWVbZG9lc19ub3RfZXhpc3RdOiAxLzAgPSAwCisgICAgICAgIGdsb2JhbCB2YXJfYW5ub3RfZ2xvYmFsCisKKyAgICAgICAgIyBmdW5jdGlvbiBzZW1hbnRpY3MKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHN0OiBzdHIgPSAiSGVsbG8iCisgICAgICAgICAgICBhLmI6IGludCA9ICgxLCAyKQorICAgICAgICAgICAgcmV0dXJuIHN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5fX2Fubm90YXRpb25zX18sIHt9KQorICAgICAgICBkZWYgZl9PSygpOgorICAgICAgICAgICAgeDogMS8wCisgICAgICAgIGZfT0soKQorICAgICAgICBkZWYgZmJhZCgpOgorICAgICAgICAgICAgeDogaW50CisgICAgICAgICAgICBwcmludCh4KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuYm91bmRMb2NhbEVycm9yKToKKyAgICAgICAgICAgIGZiYWQoKQorICAgICAgICBkZWYgZjJiYWQoKToKKyAgICAgICAgICAgIChub19zdWNoX2dsb2JhbCk6IGludAorICAgICAgICAgICAgcHJpbnQobm9fc3VjaF9nbG9iYWwpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYyYmFkKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBOYW1lRXJyb3IpCisKKyAgICAgICAgIyBjbGFzcyBzZW1hbnRpY3MKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIF9fZm9vOiBpbnQKKyAgICAgICAgICAgIHM6IHN0ciA9ICJhdHRyIgorICAgICAgICAgICAgeiA9IDIKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICBzZWxmLng6IGludCA9IHgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYW5ub3RhdGlvbnNfXywgeydfQ19fZm9vJzogaW50LCAncyc6IHN0cn0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIENCYWQ6CisgICAgICAgICAgICAgICAgbm9fc3VjaF9uYW1lX2RlZmluZWQuYXR0cjogaW50ID0gMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDYmFkMihDKToKKyAgICAgICAgICAgICAgICB4OiBpbnQKKyAgICAgICAgICAgICAgICB4Lnk6IGxpc3QgPSBbXQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X21ldGFjbGFzc19zZW1hbnRpY3Moc2VsZik6CisgICAgICAgIGNsYXNzIENNZXRhKHR5cGUpOgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHsnX19hbm5vdGF0aW9uc19fJzogQ05TKCl9CisgICAgICAgIGNsYXNzIENDKG1ldGFjbGFzcz1DTWV0YSk6CisgICAgICAgICAgICBYWDogJ0FOTk9UJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENDLl9fYW5ub3RhdGlvbnNfX1sneHgnXSwgJ0FOTk9UJykKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9tb2R1bGVfc2VtYW50aWNzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHByaW50KHRlc3QuX19hbm5vdGF0aW9uc19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFubl9tb2R1bGUuX19hbm5vdGF0aW9uc19fLAorICAgICAgICAgICAgICAgICAgICAgezE6IDIsICd4JzogaW50LCAneSc6IHN0ciwgJ2YnOiB0eXBpbmcuVHVwbGVbaW50LCBpbnRdfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbm5fbW9kdWxlLk0uX19hbm5vdGF0aW9uc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeycxMjMnOiAxMjMsICdvJzogdHlwZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5uX21vZHVsZTIuX19hbm5vdGF0aW9uc19fLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBpbmcuZ2V0X3R5cGVfaGludHMoYW5uX21vZHVsZTIuQ1YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubl9tb2R1bGUyLl9fZGljdF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDaGFpbk1hcCh7J3Zhcic6IHR5cGluZy5DbGFzc1Zhclthbm5fbW9kdWxlMi5DVl19LCB7fSkpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfaW5fbW9kdWxlKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgZnVuY3Rpb25zIGZhaWwgdGhlIHNhbWUgd2F5IHdoZW4gZXhlY3V0ZWQKKyAgICAgICAgIyBvdXRzaWRlIG9mIG1vZHVsZSB3aGVyZSB0aGV5IHdlcmUgZGVmaW5lZAorICAgICAgICBmcm9tIHRlc3QuYW5uX21vZHVsZTMgaW1wb3J0IGZfYmFkX2FubiwgZ19iYWRfYW5uLCBEX2JhZF9hbm4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZl9iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZ19iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgRF9iYWRfYW5uKDUpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Rfc2ltcGxlX2V4ZWMoc2VsZik6CisgICAgICAgIGducyA9IHt9OyBsbnM9IHt9CisgICAgICAgIGV4ZWMoIidkb2NzdHJpbmcnXG4iCisgICAgICAgICAgICAgIl9fYW5ub3RhdGlvbnNfX1sxXSA9IDJcbiIKKyAgICAgICAgICAgICAieDogaW50ID0gNVxuIiwgZ25zLCBsbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG5zWyJfX2Fubm90YXRpb25zX18iXSwgezE6IDIsICd4JzogaW50fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBnbnNbJ19fYW5ub3RhdGlvbnNfXyddCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfY3VzdG9tX21hcHMoc2VsZik6CisgICAgICAgICMgdGVzdHMgd2l0aCBjdXN0b20gbG9jYWxzKCkgYW5kIF9fYW5ub3RhdGlvbnNfXworICAgICAgICBucyA9IHsnX19hbm5vdGF0aW9uc19fJzogQ05TKCl9CisgICAgICAgIGV4ZWMoJ1g6IGludDsgWjogc3RyID0gIloiOyAodyk6IGNvbXBsZXggPSAxaicsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXVsneCddLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ19fYW5ub3RhdGlvbnNfXyddWyd6J10sIHN0cikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBuc1snX19hbm5vdGF0aW9uc19fJ11bJ3cnXQorICAgICAgICBub25sb2NfbnMgPSB7fQorICAgICAgICBjbGFzcyBDTlMyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RjdCA9IHt9CisgICAgICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaXRlbSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG5vbmxvY19ucworICAgICAgICAgICAgICAgIHNlbGYuX2RjdFtpdGVtXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgbm9ubG9jX25zW2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGN0W2l0ZW1dCisgICAgICAgIGV4ZWMoJ3g6IGludCA9IDEnLCB7fSwgQ05TMigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vbmxvY19uc1snX19hbm5vdGF0aW9uc19fJ11bJ3gnXSwgaW50KQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X3JlZmxlYWsoc2VsZik6CisgICAgICAgICMgY29tcGxleCBjYXNlOiBjdXN0b20gbG9jYWxzIHBsdXMgY3VzdG9tIF9fYW5ub3RhdGlvbnNfXworICAgICAgICAjIHRoaXMgd2FzIGNhdXNpbmcgcmVmbGVhaworICAgICAgICBjbnMgPSBDTlMoKQorICAgICAgICBub25sb2NfbnMgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgY2xhc3MgQ05TMjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kY3QgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgbm9ubG9jX25zCisgICAgICAgICAgICAgICAgc2VsZi5fZGN0W2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgICAgICBub25sb2NfbnNbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKyAgICAgICAgZXhlYygnWDogc3RyJywge30sIENOUzIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub25sb2NfbnNbJ19fYW5ub3RhdGlvbnNfXyddWyd4J10sIHN0cikKKwogICAgIGRlZiB0ZXN0X2Z1bmNkZWYoc2VsZik6CiAgICAgICAgICMjIyBbZGVjb3JhdG9yc10gJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZQogICAgICAgICAjIyMgZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKQEAgLTI5NSw2ICs1NjIsMTAgQEAKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMixrMj0xMDAsdG9rd2FyZzE9MTAwLHRva3dhcmcyPTIwMCkKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMix0b2t3YXJnMT0xMDAsdG9rd2FyZzI9MjAwLCBrMj0xMDApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqKTogcGFzcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZGVmIGYoKiwpOiBwYXNzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqLCAqKmt3ZHMpOiBwYXNzIikKKwogICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIGFmdGVyICphcmdsaXN0CiAgICAgICAgIGRlZiBmKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICByZXR1cm4gYXJncywga3dhcmdzCkBAIC0zNDEsNyArNjEyLDcgQEAKICAgICAgICAgZGVmIGYoeCkgLT4gbGlzdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19hbm5vdGF0aW9uc19fLCB7J3JldHVybic6IGxpc3R9KQogCi0gICAgICAgICMgdGVzdCBNQUtFX0NMT1NVUkUgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncworICAgICAgICAjIHRlc3QgY2xvc3VyZXMgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmdzCiAgICAgICAgIGNsb3N1cmUgPSAxCiAgICAgICAgIGRlZiBmKCk6IHJldHVybiBjbG9zdXJlCiAgICAgICAgIGRlZiBmKHg9MSk6IHJldHVybiBjbG9zdXJlCkBAIC0zNTIsNiArNjIzLDIzIEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqZygxPTIpKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqKmcoMT0yKSkiKQogCisgICAgICAgICMgQ2hlY2sgdHJhaWxpbmcgY29tbWFzIGFyZSBwZXJtaXR0ZWQgaW4gZnVuY2RlZiBhcmd1bWVudCBsaXN0CisgICAgICAgIGRlZiBmKGEsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywpOiBwYXNzCisgICAgICAgIGRlZiBmKCoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsIGIsKTogcGFzcworICAgICAgICBkZWYgZigqLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiwgYiwpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKiwgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsIGIsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICosIGIsICoqa3dkcywpOiBwYXNzCisKICAgICBkZWYgdGVzdF9sYW1iZGVmKHNlbGYpOgogICAgICAgICAjIyMgbGFtYmRlZjogJ2xhbWJkYScgW3ZhcmFyZ3NsaXN0XSAnOicgdGVzdAogICAgICAgICBsMSA9IGxhbWJkYSA6IDAKQEAgLTM3MCw2ICs2NTgsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsNigxLDIpLCAxKzIrMjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDYoMSwyLGs9MTApLCAxKzIrMTApCiAKKyAgICAgICAgIyBjaGVjayB0aGF0IHRyYWlsaW5nIGNvbW1hcyBhcmUgcGVybWl0dGVkCisgICAgICAgIGwxMCA9IGxhbWJkYSBhLDogMAorICAgICAgICBsMTEgPSBsYW1iZGEgKmFyZ3MsOiAwCisgICAgICAgIGwxMiA9IGxhbWJkYSAqKmt3ZHMsOiAwCisgICAgICAgIGwxMyA9IGxhbWJkYSBhLCAqYXJncyw6IDAKKyAgICAgICAgbDE0ID0gbGFtYmRhIGEsICoqa3dkcyw6IDAKKyAgICAgICAgbDE1ID0gbGFtYmRhICphcmdzLCBiLDogMAorICAgICAgICBsMTYgPSBsYW1iZGEgKiwgYiw6IDAKKyAgICAgICAgbDE3ID0gbGFtYmRhICphcmdzLCAqKmt3ZHMsOiAwCisgICAgICAgIGwxOCA9IGxhbWJkYSBhLCAqYXJncywgYiw6IDAKKyAgICAgICAgbDE5ID0gbGFtYmRhIGEsICosIGIsOiAwCisgICAgICAgIGwyMCA9IGxhbWJkYSBhLCAqYXJncywgKiprd2RzLDogMAorICAgICAgICBsMjEgPSBsYW1iZGEgKmFyZ3MsIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIyID0gbGFtYmRhICosIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIzID0gbGFtYmRhIGEsICphcmdzLCBiLCAqKmt3ZHMsOiAwCisgICAgICAgIGwyNCA9IGxhbWJkYSBhLCAqLCBiLCAqKmt3ZHMsOiAwCisKIAogICAgICMjIyBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwpAQCAtMTA0MCwxOCArMTM0NSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5vdGhlciwgNDIpCiAKICAgICBkZWYgdGVzdF9hc3luY19hd2FpdChzZWxmKToKLSAgICAgICAgYXN5bmMgPSAxCi0gICAgICAgIGF3YWl0ID0gMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzeW5jLCAxKQotCi0gICAgICAgIGRlZiBhc3luYygpOgotICAgICAgICAgICAgbm9ubG9jYWwgYXdhaXQKLSAgICAgICAgICAgIGF3YWl0ID0gMTAKLSAgICAgICAgYXN5bmMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0LCAxMCkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2woYXN5bmMuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCi0KICAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKICAgICAgICAgICAgIGRlZiBzdW0oKToKICAgICAgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dycC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CmluZGV4IDI3MmIwODYuLjY5MDk1YTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CkBAIC05Miw1ICs5MiwxNSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBncnAuZ2V0Z3JnaWQsIGZha2VnaWQpCiAKKyAgICBkZWYgdGVzdF9ub25pbnRlZ2VyX2dpZChzZWxmKToKKyAgICAgICAgZW50cmllcyA9IGdycC5nZXRncmFsbCgpCisgICAgICAgIGlmIG5vdCBlbnRyaWVzOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbm8gZ3JvdXBzJykKKyAgICAgICAgIyBDaG9vc2UgYW4gZXhpc3RlbnQgZ2lkLgorICAgICAgICBnaWQgPSBlbnRyaWVzWzBdWzJdCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIGZsb2F0KGdpZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIHN0cihnaWQpKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKaW5kZXggM2M1MTY3My4uMDdhOWY2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpAQCAtNDM0LDEyICs0MzQsMTIgQEAKIAogICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbGltaXRlZChzZWxmKToKICAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCi0gICAgICAgIGJvbWIgPSBnemlwLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgY29tcHJlc3NsZXZlbD05KQorICAgICAgICBib21iID0gZ3ppcC5jb21wcmVzcyhiJ1wwJyAqIGludCgyZTYpLCBjb21wcmVzc2xldmVsPTkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUpCiAKICAgICAgICAgYm9tYiA9IGlvLkJ5dGVzSU8oYm9tYikKICAgICAgICAgZGVjb21wID0gZ3ppcC5HemlwRmlsZShmaWxlb2JqPWJvbWIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29tcC5yZWFkKDEpLCBiJ1wwJykKICAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCiAgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IGM5YjExM2UuLjVhZThjMDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTcsNiArNyw3IEBACiAjCiAKIGltcG9ydCBhcnJheQorZnJvbSBiaW5hc2NpaSBpbXBvcnQgdW5oZXhsaWZ5CiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IG9zCkBAIC0xOSw2ICsyMCw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IF80RywgYmlnbWVtdGVzdCwgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogCiAjIFdlcmUgd2UgY29tcGlsZWQgLS13aXRoLXB5ZGVidWcgb3Igd2l0aCAjZGVmaW5lIFB5X0RFQlVHPwogQ09NUElMRURfV0lUSF9QWURFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKQEAgLTI2LDYgKzI4LDIxIEBACiBjX2hhc2hsaWIgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdoYXNobGliJywgZnJlc2g9WydfaGFzaGxpYiddKQogcHlfaGFzaGxpYiA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2hhc2hsaWInLCBibG9ja2VkPVsnX2hhc2hsaWInXSkKIAordHJ5OgorICAgIGltcG9ydCBfYmxha2UyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX2JsYWtlMiA9IE5vbmUKKworcmVxdWlyZXNfYmxha2UyID0gdW5pdHRlc3Quc2tpcFVubGVzcyhfYmxha2UyLCAncmVxdWlyZXMgX2JsYWtlMicpCisKK3RyeToKKyAgICBpbXBvcnQgX3NoYTMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfc2hhMyA9IE5vbmUKKworcmVxdWlyZXNfc2hhMyA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoX3NoYTMsICdyZXF1aXJlcyBfc2hhMycpCisKKwogZGVmIGhleHN0cihzKToKICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBieXRlcyksIHJlcHIocykKICAgICBoID0gIjAxMjM0NTY3ODlhYmNkZWYiCkBAIC0zNSwxMCArNTIsMzMgQEAKICAgICByZXR1cm4gcgogCiAKK1VSTCA9ICJodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0L2hhc2hsaWIve30udHh0IgorCitkZWYgcmVhZF92ZWN0b3JzKGhhc2hfbmFtZSk6CisgICAgdXJsID0gVVJMLmZvcm1hdChoYXNoX25hbWUpCisgICAgdHJ5OgorICAgICAgICB0ZXN0ZGF0YSA9IHN1cHBvcnQub3Blbl91cmxyZXNvdXJjZSh1cmwpCisgICAgZXhjZXB0IChPU0Vycm9yLCBIVFRQRXhjZXB0aW9uKToKKyAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkNvdWxkIG5vdCByZXRyaWV2ZSB7fSIuZm9ybWF0KHVybCkpCisgICAgd2l0aCB0ZXN0ZGF0YToKKyAgICAgICAgZm9yIGxpbmUgaW4gdGVzdGRhdGE6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKSBvciBub3QgbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCcsJykKKyAgICAgICAgICAgIHBhcnRzWzBdID0gYnl0ZXMuZnJvbWhleChwYXJ0c1swXSkKKyAgICAgICAgICAgIHlpZWxkIHBhcnRzCisKKwogY2xhc3MgSGFzaExpYlRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBzdXBwb3J0ZWRfaGFzaF9uYW1lcyA9ICggJ21kNScsICdNRDUnLCAnc2hhMScsICdTSEExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTIyNCcsICdTSEEyMjQnLCAnc2hhMjU2JywgJ1NIQTI1NicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWtlMmInLCAnYmxha2UycycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2JykKKworICAgIHNoYWtlcyA9IHsnc2hha2VfMTI4JywgJ3NoYWtlXzI1Nid9CiAKICAgICAjIElzc3VlICMxNDY5MzogZmFsbGJhY2sgbW9kdWxlcyBhcmUgYWx3YXlzIGNvbXBpbGVkIHVuZGVyIFBPU0lYCiAgICAgX3dhcm5fb25fZXh0ZW5zaW9uX2ltcG9ydCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBvciBDT01QSUxFRF9XSVRIX1BZREVCVUcKQEAgLTU2LDYgKzk2LDExIEBACiAgICAgICAgIGFsZ29yaXRobXMgPSBzZXQoKQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXM6CiAgICAgICAgICAgICBhbGdvcml0aG1zLmFkZChhbGdvcml0aG0ubG93ZXIoKSkKKworICAgICAgICBfYmxha2UyID0gc2VsZi5fY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZSgnX2JsYWtlMicpCisgICAgICAgIGlmIF9ibGFrZTI6CisgICAgICAgICAgICBhbGdvcml0aG1zLnVwZGF0ZSh7J2JsYWtlMmInLCAnYmxha2Uycyd9KQorCiAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QgPSB7fQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIGFsZ29yaXRobXM6CiAgICAgICAgICAgICBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W2FsZ29yaXRobV0gPSBzZXQoKQpAQCAtNjQsMTAgKzEwOSwxMCBAQAogICAgICAgICAjIG9mIGhhc2hsaWIubmV3IGdpdmVuIHRoZSBhbGdvcml0aG0gbmFtZS4KICAgICAgICAgZm9yIGFsZ29yaXRobSwgY29uc3RydWN0b3JzIGluIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QuaXRlbXMoKToKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoZ2V0YXR0cihoYXNobGliLCBhbGdvcml0aG0pKQotICAgICAgICAgICAgZGVmIF90ZXN0X2FsZ29yaXRobV92aWFfaGFzaGxpYl9uZXcoZGF0YT1Ob25lLCBfYWxnPWFsZ29yaXRobSk6CisgICAgICAgICAgICBkZWYgX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldyhkYXRhPU5vbmUsIF9hbGc9YWxnb3JpdGhtLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZywgZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hsaWIubmV3KF9hbGcsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnLCBkYXRhLCAqKmt3YXJncykKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldykKIAogICAgICAgICBfaGFzaGxpYiA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19oYXNobGliJykKQEAgLTk5LDYgKzE0NCwxOCBAQAogICAgICAgICBpZiBfc2hhNTEyOgogICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTM4NCcpCiAgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhNTEyJykKKyAgICAgICAgaWYgX2JsYWtlMjoKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJzJykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJiJykKKworICAgICAgICBfc2hhMyA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19zaGEzJykKKyAgICAgICAgaWYgX3NoYTM6CisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM18yMjQnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTNfMjU2JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzM4NCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM181MTInKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYWtlXzEyOCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hha2VfMjU2JykKIAogICAgICAgICBzdXBlcihIYXNoTGliVGVzdENhc2UsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKIApAQCAtMTExLDcgKzE2OCwxMCBAQAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoImIiLCByYW5nZSgxMCkpCiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBjID0gY29ucyhhKQotICAgICAgICAgICAgYy5oZXhkaWdlc3QoKQorICAgICAgICAgICAgaWYgYy5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIGMuaGV4ZGlnZXN0KDE2KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjLmhleGRpZ2VzdCgpCiAKICAgICBkZWYgdGVzdF9hbGdvcml0aG1zX2d1YXJhbnRlZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGxpYi5hbGdvcml0aG1zX2d1YXJhbnRlZWQsCkBAIC0xNTUsMTQgKzIxNSwyMSBAQAogICAgIGRlZiB0ZXN0X2hleGRpZ2VzdChzZWxmKToKICAgICAgICAgZm9yIGNvbnMgaW4gc2VsZi5oYXNoX2NvbnN0cnVjdG9yczoKICAgICAgICAgICAgIGggPSBjb25zKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgpLCBieXRlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQorICAgICAgICAgICAgaWYgaC5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgxNiksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KDE2KSksIGguaGV4ZGlnZXN0KDE2KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGlnZXN0KCksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQogCiAgICAgZGVmIHRlc3RfbmFtZV9hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBoID0gY29ucygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5uYW1lLCBzdHIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKKyAgICAgICAgICAgIGlmIGgubmFtZSBpbiBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaC5uYW1lLCBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCBoYXNobGliLm5ldyhoLm5hbWUpLm5hbWUpCiAKICAgICBkZWYgdGVzdF9sYXJnZV91cGRhdGUoc2VsZik6CkBAIC0xNzcsNDAgKzI0NCw0NiBAQAogICAgICAgICAgICAgbTEudXBkYXRlKGJlZXMpCiAgICAgICAgICAgICBtMS51cGRhdGUoY2VlcykKICAgICAgICAgICAgIG0xLnVwZGF0ZShkZWVzKQorICAgICAgICAgICAgaWYgbTEubmFtZSBpbiBzZWxmLnNoYWtlczoKKyAgICAgICAgICAgICAgICBhcmdzID0gKDE2LCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9ICgpCiAKICAgICAgICAgICAgIG0yID0gY29ucygpCiAgICAgICAgICAgICBtMi51cGRhdGUoYWFzICsgYmVlcyArIGNlZXMgKyBkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTIuZGlnZXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgqYXJncyksIG0yLmRpZ2VzdCgqYXJncykpCiAKICAgICAgICAgICAgIG0zID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcyArIGRlZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgpLCBtMy5kaWdlc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTMuZGlnZXN0KCphcmdzKSkKIAogICAgICAgICAgICAgIyB2ZXJpZnkgY29weSgpIGRvZXNuJ3QgdG91Y2ggb3JpZ2luYWwKICAgICAgICAgICAgIG00ID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcykKLSAgICAgICAgICAgIG00X2RpZ2VzdCA9IG00LmRpZ2VzdCgpCisgICAgICAgICAgICBtNF9kaWdlc3QgPSBtNC5kaWdlc3QoKmFyZ3MpCiAgICAgICAgICAgICBtNF9jb3B5ID0gbTQuY29weSgpCiAgICAgICAgICAgICBtNF9jb3B5LnVwZGF0ZShkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTRfY29weS5kaWdlc3QoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTQuZGlnZXN0KCksIG00X2RpZ2VzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTRfY29weS5kaWdlc3QoKmFyZ3MpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtNC5kaWdlc3QoKmFyZ3MpLCBtNF9kaWdlc3QpCiAKLSAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0KToKKyAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0LCBzaGFrZT1GYWxzZSwgKiprd2FyZ3MpOgorICAgICAgICBsZW5ndGggPSBsZW4oaGV4ZGlnZXN0KS8vMgogICAgICAgICBoZXhkaWdlc3QgPSBoZXhkaWdlc3QubG93ZXIoKQogICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCiAgICAgICAgICMgMiBpcyBmb3IgaGFzaGxpYi5uYW1lKC4uLikgYW5kIGhhc2hsaWIubmV3KG5hbWUsIC4uLikKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKGNvbnN0cnVjdG9ycyksIDIpCiAgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6Ci0gICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoZGF0YSkKLSAgICAgICAgICAgIGNvbXB1dGVkID0gbS5oZXhkaWdlc3QoKQorICAgICAgICAgICAgbSA9IGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yKGRhdGEsICoqa3dhcmdzKQorICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmhleGRpZ2VzdCgpIGlmIG5vdCBzaGFrZSBlbHNlIG0uaGV4ZGlnZXN0KGxlbmd0aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkLCBoZXhkaWdlc3QsCiAgICAgICAgICAgICAgICAgICAgICJIYXNoIGFsZ29yaXRobSAlcyBjb25zdHJ1Y3RlZCB1c2luZyAlcyByZXR1cm5lZCBoZXhkaWdlc3QiCiAgICAgICAgICAgICAgICAgICAgICIgJXIgZm9yICVkIGJ5dGUgaW5wdXQgZGF0YSB0aGF0IHNob3VsZCBoYXZlIGhhc2hlZCB0byAlci4iCiAgICAgICAgICAgICAgICAgICAgICUgKG5hbWUsIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZCwgbGVuKGRhdGEpLCBoZXhkaWdlc3QpKQotICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmRpZ2VzdCgpCisgICAgICAgICAgICBjb21wdXRlZCA9IG0uZGlnZXN0KCkgaWYgbm90IHNoYWtlIGVsc2UgbS5kaWdlc3QobGVuZ3RoKQogICAgICAgICAgICAgZGlnZXN0ID0gYnl0ZXMuZnJvbWhleChoZXhkaWdlc3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXB1dGVkLCBkaWdlc3QpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWdlc3QpLCBtLmRpZ2VzdF9zaXplKQorICAgICAgICAgICAgaWYgbm90IHNoYWtlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpZ2VzdCksIG0uZGlnZXN0X3NpemUpCiAKICAgICBkZWYgY2hlY2tfbm9fdW5pY29kZShzZWxmLCBhbGdvcml0aG1fbmFtZSk6CiAgICAgICAgICMgVW5pY29kZSBvYmplY3RzIGFyZSBub3QgYWxsb3dlZCBhcyBpbnB1dC4KQEAgLTIyNiwxMyArMjk5LDM1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhMzg0JykKICAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGE1MTInKQogCi0gICAgZGVmIGNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKHNlbGYsIG5hbWUsIGJsb2NrX3NpemU9MCwgZGlnZXN0X3NpemU9MCk6CisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X25vX3VuaWNvZGVfYmxha2UyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMmInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMnMnKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9ub191bmljb2RlX3NoYTMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM18yMjQnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfMjU2JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzM4NCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM181MTInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYWtlXzEyOCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hha2VfMjU2JykKKworICAgIGRlZiBjaGVja19ibG9ja3NpemVfbmFtZShzZWxmLCBuYW1lLCBibG9ja19zaXplPTAsIGRpZ2VzdF9zaXplPTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGg9Tm9uZSk6CiAgICAgICAgIGNvbnN0cnVjdG9ycyA9IHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbbmFtZV0KICAgICAgICAgZm9yIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yIGluIGNvbnN0cnVjdG9yczoKICAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uYmxvY2tfc2l6ZSwgYmxvY2tfc2l6ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5kaWdlc3Rfc2l6ZSwgZGlnZXN0X3NpemUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICBpZiBkaWdlc3RfbGVuZ3RoOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uZGlnZXN0KGRpZ2VzdF9sZW5ndGgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoZGlnZXN0X2xlbmd0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMipkaWdlc3RfbGVuZ3RoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoKSksIDIqZGlnZXN0X3NpemUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubmFtZSwgbmFtZSkKICAgICAgICAgICAgICMgc3BsaXQgZm9yIHNoYTNfNTEyIC8gX3NoYTMuc2hhMyBvYmplY3QKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZS5zcGxpdCgiXyIpWzBdLCByZXByKG0pKQpAQCAtMjQ0LDYgKzMzOSwxNyBAQAogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEyNTYnLCA2NCwgMzIpCiAgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTM4NCcsIDEyOCwgNDgpCiAgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTUxMicsIDEyOCwgNjQpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfMjI0JywgMTQ0LCAyOCkKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM18yNTYnLCAxMzYsIDMyKQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzM4NCcsIDEwNCwgNDgpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfNTEyJywgNzIsIDY0KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGFrZV8xMjgnLCAxNjgsIDAsIDMyKQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGFrZV8yNTYnLCAxMzYsIDAsIDY0KQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2Jsb2Nrc2l6ZV9uYW1lX2JsYWtlMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnYmxha2UyYicsIDEyOCwgNjQpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ2JsYWtlMnMnLCA2NCwgMzIpCiAKICAgICBkZWYgdGVzdF9jYXNlX21kNV8wKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrKCdtZDUnLCBiJycsICdkNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZScpCkBAIC0zNzMsNiArNDc5LDIyMSBAQAogICAgICAgICAgICJlNzE4NDgzZDBjZTc2OTY0NGUyZTQyYzdiYzE1YjQ2MzhlMWY5OGIxM2IyMDQ0Mjg1NjMyYTgwM2FmYTk3M2ViIisKICAgICAgICAgICAiZGUwZmYyNDQ4NzdlYTYwYTRjYjA0MzJjZTU3N2MzMWJlYjAwOWM1YzJjNDlhYTJlNGVhZGIyMTdhZDhjYzA5YiIpCiAKKyAgICBkZWYgY2hlY2tfYmxha2UyKHNlbGYsIGNvbnN0cnVjdG9yLCBzYWx0X3NpemUsIHBlcnNvbl9zaXplLCBrZXlfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9zaXplLCBtYXhfb2Zmc2V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5TQUxUX1NJWkUsIHNhbHRfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2FsdF9zaXplICsgMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihzYWx0PWInYScgKiBpKQorICAgICAgICBzYWx0ID0gYidhJyAqIChzYWx0X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwgc2FsdD1zYWx0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuUEVSU09OX1NJWkUsIHBlcnNvbl9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZShwZXJzb25fc2l6ZSsxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHBlcnNvbj1iJ2EnICogaSkKKyAgICAgICAgcGVyc29uID0gYidhJyAqIChwZXJzb25fc2l6ZSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBwZXJzb249cGVyc29uKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0RJR0VTVF9TSVpFLCBkaWdlc3Rfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgZGlnZXN0X3NpemUgKyAxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRpZ2VzdF9zaXplPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRpZ2VzdF9zaXplPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT1kaWdlc3Rfc2l6ZSsxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0tFWV9TSVpFLCBrZXlfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoa2V5X3NpemUrMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihrZXk9YidhJyAqIGkpCisgICAgICAgIGtleSA9IGInYScgKiAoa2V5X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwga2V5PWtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3RvcigpLmhleGRpZ2VzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGtleT1iJycpLmhleGRpZ2VzdCgpKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDI1Nik6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihmYW5vdXQ9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRlcHRoPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRlcHRoPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKG5vZGVfZGVwdGg9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfZGVwdGg9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX2RlcHRoPTI1NikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBkaWdlc3Rfc2l6ZSArIDEpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoaW5uZXJfc2l6ZT1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgaW5uZXJfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGlubmVyX3NpemU9ZGlnZXN0X3NpemUrMSkKKworICAgICAgICBjb25zdHJ1Y3RvcihsZWFmX3NpemU9MCkKKyAgICAgICAgY29uc3RydWN0b3IobGVhZl9zaXplPSgxPDwzMiktMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0xPDwzMikKKworICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD0wKQorICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD1tYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3Rvciwgbm9kZV9vZmZzZXQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX29mZnNldD1tYXhfb2Zmc2V0KzEpCisKKyAgICAgICAgY29uc3RydWN0b3IoCisgICAgICAgICAgICBzdHJpbmc9YicnLAorICAgICAgICAgICAga2V5PWInJywKKyAgICAgICAgICAgIHNhbHQ9YicnLAorICAgICAgICAgICAgcGVyc29uPWInJywKKyAgICAgICAgICAgIGRpZ2VzdF9zaXplPTE3LAorICAgICAgICAgICAgZmFub3V0PTEsCisgICAgICAgICAgICBkZXB0aD0xLAorICAgICAgICAgICAgbGVhZl9zaXplPTI1NiwKKyAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTUxMiwKKyAgICAgICAgICAgIG5vZGVfZGVwdGg9MSwKKyAgICAgICAgICAgIGlubmVyX3NpemU9NywKKyAgICAgICAgICAgIGxhc3Rfbm9kZT1UcnVlCisgICAgICAgICkKKworICAgIGRlZiBibGFrZTJfcmZjNzY5MyhzZWxmLCBjb25zdHJ1Y3RvciwgbWRfbGVuLCBpbl9sZW4pOgorICAgICAgICBkZWYgc2VsZnRlc3Rfc2VxKGxlbmd0aCwgc2VlZCk6CisgICAgICAgICAgICBtYXNrID0gKDE8PDMyKS0xCisgICAgICAgICAgICBhID0gKDB4REVBRDRCQUQgKiBzZWVkKSAmIG1hc2sKKyAgICAgICAgICAgIGIgPSAxCisgICAgICAgICAgICBvdXQgPSBieXRlYXJyYXkobGVuZ3RoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgICAgICB0ID0gKGEgKyBiKSAmIG1hc2sKKyAgICAgICAgICAgICAgICBhLCBiID0gYiwgdAorICAgICAgICAgICAgICAgIG91dFtpXSA9ICh0ID4+IDI0KSAmIDB4RkYKKyAgICAgICAgICAgIHJldHVybiBvdXQKKyAgICAgICAgb3V0ZXIgPSBjb25zdHJ1Y3RvcihkaWdlc3Rfc2l6ZT0zMikKKyAgICAgICAgZm9yIG91dGxlbiBpbiBtZF9sZW46CisgICAgICAgICAgICBmb3IgaW5sZW4gaW4gaW5fbGVuOgorICAgICAgICAgICAgICAgIGluZGF0YSA9IHNlbGZ0ZXN0X3NlcShpbmxlbiwgaW5sZW4pCisgICAgICAgICAgICAgICAga2V5ID0gc2VsZnRlc3Rfc2VxKG91dGxlbiwgb3V0bGVuKQorICAgICAgICAgICAgICAgIHVua2V5ZWQgPSBjb25zdHJ1Y3RvcihpbmRhdGEsIGRpZ2VzdF9zaXplPW91dGxlbikKKyAgICAgICAgICAgICAgICBvdXRlci51cGRhdGUodW5rZXllZC5kaWdlc3QoKSkKKyAgICAgICAgICAgICAgICBrZXllZCA9IGNvbnN0cnVjdG9yKGluZGF0YSwga2V5PWtleSwgZGlnZXN0X3NpemU9b3V0bGVuKQorICAgICAgICAgICAgICAgIG91dGVyLnVwZGF0ZShrZXllZC5kaWdlc3QoKSkKKyAgICAgICAgcmV0dXJuIG91dGVyLmhleGRpZ2VzdCgpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UyYihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJiLCAxNiwgMTYsIDY0LCA2NCwgKDE8PDY0KS0xKQorICAgICAgICBiMmJfbWRfbGVuID0gWzIwLCAzMiwgNDgsIDY0XQorICAgICAgICBiMmJfaW5fbGVuID0gWzAsIDMsIDEyOCwgMTI5LCAyNTUsIDEwMjRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmJsYWtlMl9yZmM3NjkzKGhhc2hsaWIuYmxha2UyYiwgYjJiX21kX2xlbiwgYjJiX2luX2xlbiksCisgICAgICAgICAgICAiYzIzYTc4MDBkOTgxMjNiZDEwZjUwNmM2MWUyOWRhNTYwM2Q3NjNiOGJiYWQyZTczN2Y1ZTc2NWE3YmNjZDQ3NSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJiXzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMmInLCBiIiIsCisgICAgICAgICAgIjc4NmEwMmY3NDIwMTU5MDNjNmM2ZmQ4NTI1NTJkMjcyOTEyZjQ3NDBlMTU4NDc2MThhODZlMjE3ZjcxZjU0MTkiKworICAgICAgICAgICJkMjVlMTAzMWFmZWU1ODUzMTM4OTY0NDQ5MzRlYjA0YjkwM2E2ODViMTQ0OGI3NTVkNTZmNzAxYWZlOWJlMmNlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMmJfMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIGIiYWJjIiwKKyAgICAgICAgICAiYmE4MGE1M2Y5ODFjNGQwZDZhMjc5N2I2OWYxMmY2ZTk0YzIxMmYxNDY4NWFjNGI3NGIxMmJiNmZkYmZmYTJkMSIrCisgICAgICAgICAgIjdkODdjNTM5MmFhYjc5MmRjMjUyZDVkZTQ1MzNjYzk1MThkMzhhYThkYmYxOTI1YWI5MjM4NmVkZDQwMDk5MjMiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMmJfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMmInKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UycyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJzLCA4LCA4LCAzMiwgMzIsICgxPDw0OCktMSkKKyAgICAgICAgYjJzX21kX2xlbiA9IFsxNiwgMjAsIDI4LCAzMl0KKyAgICAgICAgYjJzX2luX2xlbiA9IFswLCAzLCA2NCwgNjUsIDI1NSwgMTAyNF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuYmxha2UyX3JmYzc2OTMoaGFzaGxpYi5ibGFrZTJzLCBiMnNfbWRfbGVuLCBiMnNfaW5fbGVuKSwKKyAgICAgICAgICAgICI2YTQxMWYwOGNlMjVhZGNkZmIwMmFiYTY0MTQ1MWNlYzUzYzU5OGIyNGY0ZmM3ODdmYmRjODg3OTdmNGMxZGZlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMnNfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIGIiIiwKKyAgICAgICAgICAiNjkyMTdhMzA3OTkwODA5NGUxMTEyMWQwNDIzNTRhN2MxZjU1YjY0ODJjYTFhNTFlMWIyNTBkZmQxZWQwZWVmOSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJzXzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMnMnLCBiImFiYyIsCisgICAgICAgICAgIjUwOGM1ZThjMzI3YzE0ZTJlMWE3MmJhMzRlZWI0NTJmMzc0NThiMjA5ZWQ2M2EyOTRkOTk5YjRjODY2NzU5ODIiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMnNfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMnMnKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yMjRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yMjQnLCBiIiIsCisgICAgICAgICAgIjZiNGUwMzQyMzY2N2RiYjczYjZlMTU0NTRmMGViMWFiZDQ1OTdmOWExYjA3OGUzZjViNWE2YmM3IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzIyNF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM18yMjQnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjI0JywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIGIiIiwKKyAgICAgICAgICAiYTdmZmM2ZjhiZjFlZDc2NjUxYzE0NzU2YTA2MWQ2NjJmNTgwZmY0ZGU0M2I0OWZhODJkODBhNGI4MGY4NDM0YSIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yNTZfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMjU2Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18zODQnLCBiIiIsCisgICAgICAgICAgIjBjNjNhNzViODQ1ZTRmN2QwMTEwN2Q4NTJlNGMyNDg1YzUxYTUwYWFhYTk0ZmM2MTk5NWU3MWJiZWU5ODNhMmEiKworICAgICAgICAgICJjMzcxMzgzMTI2NGFkYjQ3ZmI2YmQxZTA1OGQ1ZjAwNCIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMzg0Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzM4NCcsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM181MTJfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM181MTInLCBiIiIsCisgICAgICAgICAgImE2OWY3M2NjYTIzYTlhYzVjOGI1NjdkYzE4NWE3NTZlOTdjOTgyMTY0ZmUyNTg1OWUwZDFkY2MxNDc1YzgwYTYiKworICAgICAgICAgICIxNWIyMTIzYWYxZjVmOTRjMTFlM2U5NDAyYzNhYzU1OGY1MDAxOTlkOTViNmQzZTMwMTc1ODU4NjI4MWRjZDI2IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzUxMl92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM181MTInKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfNTEyJywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZV8xMjhfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMTI4JywgYiIiLAorICAgICAgICAgICI3ZjljMmJhNGU4OGY4MjdkNjE2MDQ1NTA3NjA1ODUzZWQ3M2I4MDkzZjZlZmJjODhlYjFhNmVhY2ZhNjZlZjI2IiwKKyAgICAgICAgICBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBiIiIsICI3ZjljIiwgVHJ1ZSkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZTEyOF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hha2VfMTI4Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBtc2csIG1kLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8yNTYnLCBiIiIsCisgICAgICAgICAgIjQ2YjlkZDJiMGJhODhkMTMyMzNiM2ZlYjc0M2VlYjI0M2ZjZDUyZWE2MmI4MWI4MmI1MGMyNzY0NmVkNTc2MmYiLAorICAgICAgICAgIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIGIiIiwgIjQ2YjkiLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlMjU2X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGFrZV8yNTYnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIG1zZywgbWQsIFRydWUpCisKICAgICBkZWYgdGVzdF9naWwoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhpbmdzIHdvcmsgZmluZSB3aXRoIGFuIGlucHV0IGxhcmdlciB0aGFuIHRoZSBzaXplIHJlcXVpcmVkCiAgICAgICAgICMgZm9yIG11bHRpdGhyZWFkZWQgb3BlcmF0aW9uICh3aGljaCBpcyBoYXJkd2lyZWQgdG8gMjA0OCkuCkBAIC00NDcsNiArNzY4LDEyIEBACiAgICAgICAgIChiJ3Bhc3NcMHdvcmQnLCBiJ3NhXDBsdCcsIDQwOTYsIDE2KSwKICAgICBdCiAKKyAgICBzY3J5cHRfdGVzdF92ZWN0b3JzID0gWworICAgICAgICAoYicnLCBiJycsIDE2LCAxLCAxLCB1bmhleGxpZnkoJzc3ZDY1NzYyMzg2NTdiMjAzYjE5Y2E0MmMxOGEwNDk3ZjE2YjQ4NDRlMzA3NGFlOGRmZGZmYTNmZWRlMjE0NDJmY2QwMDY5ZGVkMDk0OGY4MzI2YTc1M2EwZmM4MWYxN2U4ZDNlMGZiMmUwZDM2MjhjZjM1ZTIwYzM4ZDE4OTA2JykpLAorICAgICAgICAoYidwYXNzd29yZCcsIGInTmFDbCcsIDEwMjQsIDgsIDE2LCB1bmhleGxpZnkoJ2ZkYmFiZTFjOWQzNDcyMDA3ODU2ZTcxOTBkMDFlOWZlN2M2YWQ3Y2JjODIzNzgzMGU3NzM3NjYzNGIzNzMxNjIyZWFmMzBkOTJlMjJhMzg4NmZmMTA5Mjc5ZDk4MzBkYWM3MjdhZmI5NGE4M2VlNmQ4MzYwY2JkZmEyY2MwNjQwJykpLAorICAgICAgICAoYidwbGVhc2VsZXRtZWluJywgYidTb2RpdW1DaGxvcmlkZScsIDE2Mzg0LCA4LCAxLCB1bmhleGxpZnkoJzcwMjNiZGNiM2FmZDczNDg0NjFjMDZjZDgxZmQzOGViZmRhOGZiYmE5MDRmOGUzZWE5YjU0M2Y2NTQ1ZGExZjJkNTQzMjk1NTYxM2YwZmNmNjJkNDk3MDUyNDJhOWFmOWU2MWU4NWRjMGQ2NTFlNDBkZmNmMDE3YjQ1NTc1ODg3JykpLAorICAgXQorCiAgICAgcGJrZGYyX3Jlc3VsdHMgPSB7CiAgICAgICAgICJzaGExIjogWwogICAgICAgICAgICAgIyBvZmZpY2lhbCB0ZXN0IHZlY3RvcnMgZnJvbSBSRkMgNjA3MApAQCAtNTI2LDUgKzg1Myw0NSBAQAogICAgICAgICBzZWxmLl90ZXN0X3Bia2RmMl9obWFjKGNfaGFzaGxpYi5wYmtkZjJfaG1hYykKIAogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihjX2hhc2hsaWIsICdzY3J5cHQnKSwKKyAgICAgICAgICAgICAgICAgICAgICcgICB0ZXN0IHJlcXVpcmVzIE9wZW5TU0wgPiAxLjEnKQorICAgIGRlZiB0ZXN0X3NjcnlwdChzZWxmKToKKyAgICAgICAgZm9yIHBhc3N3b3JkLCBzYWx0LCBuLCByLCBwLCBleHBlY3RlZCBpbiBzZWxmLnNjcnlwdF90ZXN0X3ZlY3RvcnM6CisgICAgICAgICAgICByZXN1bHQgPSBoYXNobGliLnNjcnlwdChwYXNzd29yZCwgc2FsdD1zYWx0LCBuPW4sIHI9ciwgcD1wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgICAgICMgdGhpcyB2YWx1ZXMgc2hvdWxkIHdvcmsKKyAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSkKKyAgICAgICAgIyBwYXNzd29yZCBhbmQgc2FsdCBtdXN0IGJlIGJ5dGVzLWxpa2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD0nc2FsdCcsIG49Miwgcj04LCBwPTEpCisgICAgICAgICMgcmVxdWlyZSBrZXl3b3JkIGFyZ3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBiJ3NhbHQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgMiwgOCwgMSwgc2FsdD1iJ3NhbHQnKQorICAgICAgICBmb3IgbiBpbiBbLTEsIDAsIDEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj1uLCByPTgsIHA9MSkKKyAgICAgICAgZm9yIHIgaW4gWy0xLCAwLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj1yLCBwPTEpCisgICAgICAgIGZvciBwIGluIFstMSwgMCwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD1wKQorICAgICAgICBmb3IgbWF4bWVtIGluIFstMSwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heG1lbT1tYXhtZW0pCisgICAgICAgIGZvciBka2xlbiBpbiBbLTEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBka2xlbj1ka2xlbikKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weSBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKaW5kZXggYjdlODI1OS4uMmY4YzY0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVW5pdHRlc3RzIGZvciBoZWFwcS4iIiIKIAotaW1wb3J0IHN5cwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCA5ODgyNmI1Li4wNjdlMTNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBkZWYgaWdub3JlX3dhcm5pbmcoZnVuYyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKaW5kZXggMTE0MjBiMi4uMzI2ZTM0MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCBodG1sLnBhcnNlcgogaW1wb3J0IHBwcmludAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBFdmVudENvbGxlY3RvcihodG1sLnBhcnNlci5IVE1MUGFyc2VyKToKQEAgLTcwMiw3ICs3MDEsNyBAQAogCiAgICAgZGVmIHRlc3RfYXR0cl9mdW5reV9uYW1lczIoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygKLSAgICAgICAgICAgICI8YSAkPjxiICQ9JT48YyBcPS8+IiwKKyAgICAgICAgICAgIHIiPGEgJD48YiAkPSU+PGMgXD0vPiIsCiAgICAgICAgICAgICBbKCJzdGFydHRhZyIsICJhIiwgWygiJCIsIE5vbmUpXSksCiAgICAgICAgICAgICAgKCJzdGFydHRhZyIsICJiIiwgWygiJCIsICIlIildKSwKICAgICAgICAgICAgICAoInN0YXJ0dGFnIiwgImMiLCBbKCJcXCIsICIvIildKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQppbmRleCA0OWMwMWFlLi42ZmVlNGRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKQEAgLTEwNTEsNyArMTA1MSw3IEBACiAgICAgICAgIHVybCA9ICJodHRwOi8vZm9vLmJhci5jb20vIgogICAgICAgICBpbnRlcmFjdF8yOTY1KGMsIHVybCwgInNwYW09ZWdnczsgVmVyc2lvbj0xOyBQb3J0IikKICAgICAgICAgaCA9IGludGVyYWN0XzI5NjUoYywgdXJsKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGgsICJcJFBvcnQoW149XXwkKSIsCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoaCwgciJcJFBvcnQoW149XXwkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInBvcnQgd2l0aCBubyB2YWx1ZSBub3QgcmV0dXJuZWQgd2l0aCBubyB2YWx1ZSIpCiAKICAgICAgICAgYyA9IENvb2tpZUphcihwb2wpCkBAIC0xMzk2LDkgKzEzOTYsOSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoY29va2llLCByJ15cJFZlcnNpb249Ij8xIj87JykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInUGFydF9OdW1iZXI9Ij9Sb2NrZXRfTGF1bmNoZXJfMDAwMSI/OycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHMqXCRQYXRoPSJcL2FjbWUiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHMqXCRQYXRoPSJcL2FjbWUiJykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInQ3VzdG9tZXI9Ij9XSUxFX0VfQ09ZT1RFIj87JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdccypcJFBhdGg9IlwvYWNtZSInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidccypcJFBhdGg9IlwvYWNtZSInKQogCiAgICAgICAgICMKICAgICAgICAgIyAgIDcuICBVc2VyIEFnZW50IC0+IFNlcnZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CmluZGV4IDE1NWFiMGYuLmM2MTNjNTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKQEAgLTM0NCw2ICszNDQsMTM0IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbm4ucHV0aGVhZGVyKG5hbWUsIHZhbHVlKQogCiAKK2NsYXNzIFRyYW5zZmVyRW5jb2RpbmdUZXN0KFRlc3RDYXNlKToKKyAgICBleHBlY3RlZF9ib2R5ID0gYiJJdCdzIGp1c3QgYSBmbGVzaCB3b3VuZCIKKworICAgIGRlZiB0ZXN0X2VuZGhlYWRlcnNfY2h1bmtlZChzZWxmKToKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5wdXRyZXF1ZXN0KCdQT1NUJywgJy8nKQorICAgICAgICBjb25uLmVuZGhlYWRlcnMoc2VsZi5fbWFrZV9ib2R5KCksIGVuY29kZV9jaHVua2VkPVRydWUpCisKKyAgICAgICAgXywgXywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgZGVmIHRlc3RfZXhwbGljaXRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIyBleHBsaWNpdCBjaHVua2VkCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgICMgdGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkgYmUgYXV0b21hdGljYWxseSBjaHVuay1lbmNvZGVkIGJlY2F1c2UgdGhlCisgICAgICAgICMgY2FsbGluZyBjb2RlIGhhcyBleHBsaWNpdGx5IHN0YXRlZCB0aGF0IGl0J3MgdGFraW5nIGNhcmUgb2YgaXQKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuX21ha2VfYm9keSgpLCB7J1RyYW5zZmVyLUVuY29kaW5nJzogJ2NodW5rZWQnfSkKKworICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnMua2V5cygpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgICAgICMgZXhwbGljaXQgY2h1bmtlZCwgc3RyaW5nIGJvZHkKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuZXhwZWN0ZWRfYm9keS5kZWNvZGUoJ2xhdGluLTEnKSwKKyAgICAgICAgICAgIHsnVHJhbnNmZXItRW5jb2RpbmcnOiAnY2h1bmtlZCd9KQorCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycy5rZXlzKCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICAgICAgIyBVc2VyLXNwZWNpZmllZCBURSwgYnV0IHJlcXVlc3QoKSBkb2VzIHRoZSBjaHVuayBlbmNvZGluZworICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsCisgICAgICAgICAgICBoZWFkZXJzPXsnVHJhbnNmZXItRW5jb2RpbmcnOiAnZ3ppcCwgY2h1bmtlZCd9LAorICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9VHJ1ZSwKKyAgICAgICAgICAgIGJvZHk9c2VsZi5fbWFrZV9ib2R5KCkpCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2d6aXAsIGNodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3BhcnNlX2NodW5rZWQoYm9keSksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKworICAgIGRlZiB0ZXN0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgIGZvciBlbXB0eV9saW5lcyBpbiAoRmFsc2UsIFRydWUsKToKKyAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgICAgICdQT1NUJywgJy8nLCBzZWxmLl9tYWtlX2JvZHkoZW1wdHlfbGluZXM9ZW1wdHlfbGluZXMpKQorCisgICAgICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2NodW5rZWQnKQorCisgICAgICAgICAgICAjIENvbnRlbnQtTGVuZ3RoIGFuZCBUcmFuc2Zlci1FbmNvZGluZyBTSE9VTEQgbm90IGJlIHNlbnQgaW4gdGhlCisgICAgICAgICAgICAjIHNhbWUgcmVxdWVzdAorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorCisgICAgZGVmIHRlc3RfZW1wdHlfYm9keShzZWxmKToKKyAgICAgICAgIyBaZXJvLWxlbmd0aCBpdGVyYWJsZSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBpdGVyYWJsZQorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsICgpKQorICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBiIjBcclxuXHJcbiIpCisKKyAgICBkZWYgX21ha2VfYm9keShzZWxmLCBlbXB0eV9saW5lcz1GYWxzZSk6CisgICAgICAgIGxpbmVzID0gc2VsZi5leHBlY3RlZF9ib2R5LnNwbGl0KGInICcpCisgICAgICAgIGZvciBpZHgsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKKyAgICAgICAgICAgICMgZm9yIHRlc3RpbmcgaGFuZGxpbmcgZW1wdHkgbGluZXMKKyAgICAgICAgICAgIGlmIGVtcHR5X2xpbmVzIGFuZCBpZHggJSAyOgorICAgICAgICAgICAgICAgIHlpZWxkIGInJworICAgICAgICAgICAgaWYgaWR4IDwgbGVuKGxpbmVzKSAtIDE6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZSArIGInICcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIF9wYXJzZV9yZXF1ZXN0KHNlbGYsIGRhdGEpOgorICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoYidcclxuJykKKyAgICAgICAgcmVxdWVzdCA9IGxpbmVzWzBdCisgICAgICAgIGhlYWRlcnMgPSB7fQorICAgICAgICBuID0gMQorICAgICAgICB3aGlsZSBuIDwgbGVuKGxpbmVzKSBhbmQgbGVuKGxpbmVzW25dKSA+IDA6CisgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmVzW25dLnNwbGl0KGInOicpCisgICAgICAgICAgICBrZXkgPSBrZXkuZGVjb2RlKCdsYXRpbi0xJykuc3RyaXAoKQorICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsLmRlY29kZSgnbGF0aW4tMScpLnN0cmlwKCkKKyAgICAgICAgICAgIG4gKz0gMQorCisgICAgICAgIHJldHVybiByZXF1ZXN0LCBoZWFkZXJzLCBiJ1xyXG4nLmpvaW4obGluZXNbbiArIDE6XSkKKworICAgIGRlZiBfcGFyc2VfY2h1bmtlZChzZWxmLCBkYXRhKToKKyAgICAgICAgYm9keSA9IFtdCisgICAgICAgIHRyYWlsZXJzID0ge30KKyAgICAgICAgbiA9IDAKKyAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KGInXHJcbicpCisgICAgICAgICMgcGFyc2UgYm9keQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgc2l6ZSwgY2h1bmsgPSBsaW5lc1tuOm4rMl0KKyAgICAgICAgICAgIHNpemUgPSBpbnQoc2l6ZSwgMTYpCisKKyAgICAgICAgICAgIGlmIHNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICBuICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihjaHVuaykpCisgICAgICAgICAgICBib2R5LmFwcGVuZChjaHVuaykKKworICAgICAgICAgICAgbiArPSAyCisgICAgICAgICAgICAjIHdlIC9zaG91bGQvIGhpdCB0aGUgZW5kIGNodW5rLCBidXQgY2hlY2sgYWdhaW5zdCB0aGUgc2l6ZSBvZgorICAgICAgICAgICAgIyBsaW5lcyBzbyB3ZSdyZSBub3Qgc3R1Y2sgaW4gYW4gaW5maW5pdGUgbG9vcCBzaG91bGQgd2UgZ2V0CisgICAgICAgICAgICAjIG1hbGZvcm1lZCBkYXRhCisgICAgICAgICAgICBpZiBuID4gbGVuKGxpbmVzKToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHJldHVybiBiJycuam9pbihib2R5KQorCisKIGNsYXNzIEJhc2ljVGVzdChUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3RhdHVzX2xpbmVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgSFRUUCBzdGF0dXMgbGluZXMKQEAgLTU2NCw3ICs2OTIsOSBAQAogCiAgICAgZGVmIHRlc3Rfc2VuZF9maWxlKHNlbGYpOgogICAgICAgICBleHBlY3RlZCA9IChiJ0dFVCAvZm9vIEhUVFAvMS4xXHJcbkhvc3Q6IGV4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICAgICAgICAgYidBY2NlcHQtRW5jb2Rpbmc6IGlkZW50aXR5XHJcbkNvbnRlbnQtTGVuZ3RoOicpCisgICAgICAgICAgICAgICAgICAgIGInQWNjZXB0LUVuY29kaW5nOiBpZGVudGl0eVxyXG4nCisgICAgICAgICAgICAgICAgICAgIGInVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuJworICAgICAgICAgICAgICAgICAgICBiJ1xyXG4nKQogCiAgICAgICAgIHdpdGggb3BlbihfX2ZpbGVfXywgJ3JiJykgYXMgYm9keToKICAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKQEAgLTU5NCwxMSArNzI0LDExIEBACiAgICAgICAgICAgICB5aWVsZCBOb25lCiAgICAgICAgICAgICB5aWVsZCAnZGF0YV90d28nCiAKLSAgICAgICAgY2xhc3MgVXBkYXRpbmdGaWxlKCk6CisgICAgICAgIGNsYXNzIFVwZGF0aW5nRmlsZShpby5UZXh0SU9CYXNlKToKICAgICAgICAgICAgIG1vZGUgPSAncicKICAgICAgICAgICAgIGQgPSBkYXRhKCkKICAgICAgICAgICAgIGRlZiByZWFkKHNlbGYsIGJsb2Nrc2l6ZT0tMSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZC5fX25leHRfXygpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoc2VsZi5kKQogCiAgICAgICAgIGV4cGVjdGVkID0gYidkYXRhJwogCkBAIC05NzAsNiArMTEwMCw3IEBACiAKICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX3NlcnZlcikKICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRocmVhZC5qb2luLCBmbG9hdCgxKSkKICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbigqc2Vydi5nZXRzb2NrbmFtZSgpKQogICAgICAgICBjb25uLnJlcXVlc3QoIkNPTk5FQ1QiLCAiZHVtbXk6MTIzNCIpCiAgICAgICAgIHJlc3BvbnNlID0gY29ubi5nZXRyZXNwb25zZSgpCkBAIC05ODMsNyArMTExNCw3IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZXNwb25zZS5jbG9zZSgpCiAgICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgIHRocmVhZC5qb2luKCkKKyAgICAgICAgdGhyZWFkLmpvaW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYiJwcm94aWVkIGRhdGFcbiIpCiAKIGNsYXNzIEV4dGVuZGVkUmVhZFRlc3QoVGVzdENhc2UpOgpAQCAtMTUxMSwxNCArMTY0MiwxNiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKToKICAgICAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICAjIFNhbWUgd2l0aCBleHBsaWNpdCBjaGVja19ob3N0bmFtZT1UcnVlCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgIyBXaXRoIGNoZWNrX2hvc3RuYW1lPUZhbHNlLCB0aGUgbWlzbWF0Y2hpbmcgaXMgaWdub3JlZAogICAgICAgICBjb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKLSAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LCBjb250ZXh0PWNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPUZhbHNlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9RmFsc2UpCiAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy9ub25leGlzdGVudCcpCiAgICAgICAgIHJlc3AgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICAgcmVzcC5jbG9zZSgpCkBAIC0xNTM1LDggKzE2NjgsOSBAQAogICAgICAgICBoLmNsb3NlKCkKICAgICAgICAgIyBQYXNzaW5nIGNoZWNrX2hvc3RuYW1lIHRvIEhUVFBTQ29ubmVjdGlvbiBzaG91bGQgb3ZlcnJpZGUgdGhlCiAgICAgICAgICMgY29udGV4dCdzIHNldHRpbmcuCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKIApAQCAtMTU3NSw2ICsxNzA5LDI2IEBACiAgICAgICAgIG1lc3NhZ2UgPSBjbGllbnQucGFyc2VfaGVhZGVycyhmKQogICAgICAgICByZXR1cm4gbWVzc2FnZSwgZgogCisgICAgZGVmIHRlc3RfbGlzdF9ib2R5KHNlbGYpOgorICAgICAgICAjIE5vdGUgdGhhdCBubyBjb250ZW50LWxlbmd0aCBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZm9yCisgICAgICAgICMgYW4gaXRlcmFibGUuICBUaGUgcmVxdWVzdCB3aWxsIGZhbGwgYmFjayB0byBzZW5kIGNodW5rZWQKKyAgICAgICAgIyB0cmFuc2ZlciBlbmNvZGluZy4KKyAgICAgICAgY2FzZXMgPSAoCisgICAgICAgICAgICAoW2InZm9vJywgYidiYXInXSwgYiczXHJcbmZvb1xyXG4zXHJcbmJhclxyXG4wXHJcblxyXG4nKSwKKyAgICAgICAgICAgICgoYidmb28nLCBiJ2JhcicpLCBiJzNcclxuZm9vXHJcbjNcclxuYmFyXHJcbjBcclxuXHJcbicpLAorICAgICAgICApCisgICAgICAgIGZvciBib2R5LCBleHBlY3RlZCBpbiBjYXNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJvZHkpOgorICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICAgICAgICAgIHNlbGYuY29ubi5zb2NrID0gc2VsZi5zb2NrID0gRmFrZVNvY2tldCgnJykKKworICAgICAgICAgICAgICAgIHNlbGYuY29ubi5yZXF1ZXN0KCdQVVQnLCAnL3VybCcsIGJvZHkpCisgICAgICAgICAgICAgICAgbXNnLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0NvbnRlbnQtVHlwZScsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdDb250ZW50LUxlbmd0aCcsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXQoJ1RyYW5zZmVyLUVuY29kaW5nJyksICdjaHVua2VkJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBmLnJlYWQoKSkKKwogICAgIGRlZiB0ZXN0X21hbnVhbF9jb250ZW50X2xlbmd0aChzZWxmKToKICAgICAgICAgIyBTZXQgYW4gaW5jb3JyZWN0IGNvbnRlbnQtbGVuZ3RoIHNvIHRoYXQgd2UgY2FuIHZlcmlmeSB0aGF0CiAgICAgICAgICMgaXQgd2lsbCBub3QgYmUgb3Zlci1yaWRkZW4gYnkgdGhlIGxpYnJhcnkuCkBAIC0xNjA4LDcgKzE3NjIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCI1IiwgbWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQogCi0gICAgZGVmIHRlc3RfZmlsZV9ib2R5KHNlbGYpOgorICAgIGRlZiB0ZXN0X3RleHRfZmlsZV9ib2R5KHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQogICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoImJvZHkiKQpAQCAtMTYxNyw4ICsxNzcxLDExIEBACiAgICAgICAgICAgICBtZXNzYWdlLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dC9wbGFpbiIsIG1lc3NhZ2UuZ2V0X2NvbnRlbnRfdHlwZSgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWVzc2FnZS5nZXRfY2hhcnNldCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiNCIsIG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2JvZHknLCBmLnJlYWQoKSkKKyAgICAgICAgICAgICMgTm8gY29udGVudC1sZW5ndGggd2lsbCBiZSBkZXRlcm1pbmVkIGZvciBmaWxlczsgdGhlIGJvZHkKKyAgICAgICAgICAgICMgd2lsbCBiZSBzZW50IHVzaW5nIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaW5zdGVhZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJ0cmFuc2Zlci1lbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzRcclxuYm9keVxyXG4wXHJcblxyXG4nLCBmLnJlYWQoKSkKIAogICAgIGRlZiB0ZXN0X2JpbmFyeV9maWxlX2JvZHkoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCkBAIC0xNjI5LDggKzE3ODYsOSBAQAogICAgICAgICAgICAgbWVzc2FnZSwgZiA9IHNlbGYuZ2V0X2hlYWRlcnNfYW5kX2ZwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRleHQvcGxhaW4iLCBtZXNzYWdlLmdldF9jb250ZW50X3R5cGUoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0X2NoYXJzZXQoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjUiLCBtZXNzYWdlLmdldCgiY29udGVudC1sZW5ndGgiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJUcmFuc2Zlci1FbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiQ29udGVudC1MZW5ndGgiLCBtZXNzYWdlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzVcclxuYm9keVx4YzFcclxuMFxyXG5cclxuJywgZi5yZWFkKCkpCiAKIAogY2xhc3MgSFRUUFJlc3BvbnNlVGVzdChUZXN0Q2FzZSk6CkBAIC0xNzQxLDEzICsxODk5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignaGVhZGVyOiB7fScuZm9ybWF0KGV4cGVjdGVkX2hlYWRlciksIGxpbmVzKQogCiAKLUBzdXBwb3J0LnJlYXBfdGhyZWFkcwotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlYWRlclRlc3RzLCBPZmZsaW5lVGVzdCwgQmFzaWNUZXN0LCBUaW1lb3V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW5jZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFNUZXN0LCBSZXF1ZXN0Qm9keVRlc3QsIFNvdXJjZUFkZHJlc3NUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBSZXNwb25zZVRlc3QsIEV4dGVuZGVkUmVhZFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWRSZWFkVGVzdENodW5rZWQsIFR1bm5lbFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IDcyZTZlMDguLjRlOTMxNDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtMTgsNiArMTgsNyBAQAogaW1wb3J0IGh0bWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTE4OSw3ICsxOTAsNyBAQAogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKLSAgICBkZWYgdGVzdF9oZWFkX2tlZXBfYWxpdmUoc2VsZik6CisgICAgZGVmIHRlc3RfaGVhZGVyX2tlZXBfYWxpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC8xLjEnCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24ucHV0aGVhZGVyKCdDb25uZWN0aW9uJywgJ2tlZXAtYWxpdmUnKQpAQCAtMzY5LDYgKzM3MCw4IEBACiAgICAgICAgIHJldHVybiBib2R5CiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA1KQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAndW5kZWNvZGFibGUgbmFtZSBjYW5ub3QgYmUgZGVjb2RlZCBvbiB3aW4zMicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUnKQogICAgIGRlZiB0ZXN0X3VuZGVjb2RhYmxlX2ZpbGVuYW1lKHNlbGYpOgpAQCAtMzg4LDcgKzM5MSw3IEBACiAgICAgICAgIHF1b3RlZG5hbWUgPSB1cmxsaWIucGFyc2UucXVvdGUoZmlsZW5hbWUsIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCdocmVmPSIlcyInICUgcXVvdGVkbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQotICAgICAgICBzZWxmLmFzc2VydEluKCgnPiVzPCcgJSBodG1sLmVzY2FwZShmaWxlbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkpCiAgICAgICAgICAgICAgICAgICAgICAgLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKSwgYm9keSkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJyArIHF1b3RlZG5hbWUpCiAgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0ssCkBAIC00NjYsNiArNDY5LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuZ2V0aGVhZGVyKCJMb2NhdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVtcGRpcl9uYW1lICsgIi8/aGk9MSIpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSAnPHRlc3QmPi50eHQnCisgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3BlbihmdWxscGF0aCwgJ3cnKS5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ0NhbiBub3QgY3JlYXRlIGZpbGUgJXMgb24gY3VycmVudCBmaWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW0nICUgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJykKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQorICAgICAgICAgICAgZW5jID0gcmVzcG9uc2UuaGVhZGVycy5nZXRfY29udGVudF9jaGFyc2V0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVubGluayhmdWxscGF0aCkgICMgYXZvaWQgYWZmZWN0aW5nIHRlc3RfdW5kZWNvZGFibGVfZmlsZW5hbWUKKworICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlbmMpCisgICAgICAgIGh0bWxfdGV4dCA9ICc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihodG1sX3RleHQuZW5jb2RlKGVuYyksIGJvZHkpCisKIAogY2dpX2ZpbGUxID0gIiIiXAogIyElcwpAQCAtOTE2LDcgKzk0MCw3IEBACiAgICAgICAgICMgSXNzdWUgIzY3OTE6IHNhbWUgZm9yIGhlYWRlcnMKICAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKICAgICAgICAgICAgIGInR0VUIC8gSFRUUC8xLjFcclxuWC1Gb286IGJhcicgKyBiJ3InICogNjU1MzcgKyBiJ1xyXG5cclxuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDAwIExpbmUgdG9vIGxvbmdcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDMxIExpbmUgdG9vIGxvbmdcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKQEAgLTkyNyw2ICs5NTEsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9vbl9lcnJvcihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKKyAgICAgICAgICAgIGInPHNjcmlwdD5hbGVydCgiaGVsbG8iKTwvc2NyaXB0PiAvIEhUVFAvMS4xJykKKyAgICAgICAgcmVzdWx0ID0gYicnLmpvaW4ocmVzdWx0KQorICAgICAgICB0ZXh0ID0gJzxzY3JpcHQ+YWxlcnQoImhlbGxvIik8L3NjcmlwdD4nCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaHRtbC5lc2NhcGUodGV4dCwgcXVvdGU9RmFsc2UpLmVuY29kZSgnYXNjaWknKSwgcmVzdWx0KQorCiAgICAgZGVmIHRlc3RfY2xvc2VfY29ubmVjdGlvbihzZWxmKToKICAgICAgICAgIyBoYW5kbGVfb25lX3JlcXVlc3QoKSBzaG91bGQgYmUgcmVwZWF0ZWRseSBjYWxsZWQgdW50aWwKICAgICAgICAgIyBpdCBzZXRzIGNsb3NlX2Nvbm5lY3Rpb24KQEAgLTk0Miw2ICs5NzMsMTkgQEAKICAgICAgICAgc2VsZi5oYW5kbGVyLmhhbmRsZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGNsb3NlX3ZhbHVlcykKIAorICAgIGRlZiB0ZXN0X2RhdGVfdGltZV9zdHJpbmcoc2VsZik6CisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgICMgdGhpcyBpcyB0aGUgb2xkIGNvZGUgdGhhdCBmb3JtYXRzIHRoZSB0aW1lc3RhbXAKKyAgICAgICAgeWVhciwgbW9udGgsIGRheSwgaGgsIG1tLCBzcywgd2QsIHksIHogPSB0aW1lLmdtdGltZShub3cpCisgICAgICAgIGV4cGVjdGVkID0gIiVzLCAlMDJkICUzcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UIiAlICgKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlci53ZWVrZGF5bmFtZVt3ZF0sCisgICAgICAgICAgICBkYXksCisgICAgICAgICAgICBzZWxmLmhhbmRsZXIubW9udGhuYW1lW21vbnRoXSwKKyAgICAgICAgICAgIHllYXIsIGhoLCBtbSwgc3MKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaGFuZGxlci5kYXRlX3RpbWVfc3RyaW5nKHRpbWVzdGFtcD1ub3cpLCBleHBlY3RlZCkKKworCiBjbGFzcyBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiIFRlc3QgdXJsIHBhcnNpbmcgIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pZGxlLnB5IGIvTGliL3Rlc3QvdGVzdF9pZGxlLnB5CmluZGV4IDE0MWU4OWUuLmRhMDVkYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaWRsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lkbGUucHkKQEAgLTEsMTYgKzEsMjMgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogCi0jIFNraXAgdGVzdCBpZiBfdGhyZWFkIG9yIF90a2ludGVyIHdhc24ndCBidWlsdCBvciBpZGxlbGliIHdhcyBkZWxldGVkLgorIyBTa2lwIHRlc3QgaWYgX3RocmVhZCBvciBfdGtpbnRlciB3YXNuJ3QgYnVpbHQsIGlmIGlkbGVsaWIgaXMgbWlzc2luZywKKyMgb3IgaWYgdGNsL3RrIGlzIG5vdCB0aGUgOC41KyBuZWVkZWQgZm9yIHR0ayB3aWRnZXRzLgogaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykgICMgaW1wb3J0ZWQgYnkgUHlTaGVsbCwgaW1wb3J0cyBfdGhyZWFkCiB0ayA9IGltcG9ydF9tb2R1bGUoJ3RraW50ZXInKSAgIyBpbXBvcnRzIF90a2ludGVyCi1pZGxldGVzdCA9IGltcG9ydF9tb2R1bGUoJ2lkbGVsaWIuaWRsZV90ZXN0JykKK2lmIHRrLlRrVmVyc2lvbiA8IDguNToKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiSURMRSByZXF1aXJlcyB0ayA4LjUgb3IgbGF0ZXIuIikKK2lkbGVsaWIgPSBpbXBvcnRfbW9kdWxlKCdpZGxlbGliJykKIAotIyBXaXRob3V0IHRlc3RfbWFpbiBwcmVzZW50LCByZWdydGVzdC5ydW50ZXN0X2lubmVyIChsaW5lMTIxOSkgY2FsbHMKLSMgdW5pdHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhpc19tb2R1bGUpIHdoaWNoIGNhbGxzCi0jIGxvYWRfdGVzdHMoKSBpZiBpdCBmaW5kcyBpdC4gKFVuaXR0ZXN0Lm1haW4gZG9lcyB0aGUgc2FtZS4pCi1sb2FkX3Rlc3RzID0gaWRsZXRlc3QubG9hZF90ZXN0cworIyBCZWZvcmUgdGVzdCBpbXBvcnRzLCB0ZWxsIElETEUgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGVudmlyb25tZW50LgoraWRsZWxpYi50ZXN0aW5nID0gVHJ1ZQorCisjIHVuaXR0ZXN0Lm1haW4gYW5kIHRlc3QubGlicmVncnRlc3QucnVudGVzdC5ydW50ZXN0X2lubmVyCisjIGNhbGwgbG9hZF90ZXN0cywgd2hlbiBwcmVzZW50LCB0byBkaXNjb3ZlciB0ZXN0cyB0byBydW4uCitmcm9tIGlkbGVsaWIuaWRsZV90ZXN0IGltcG9ydCBsb2FkX3Rlc3RzCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICB0ay5Ob0RlZmF1bHRSb290KCkKKyAgICB1bml0dGVzdC5tYWluKGV4aXQ9RmFsc2UpCisgICAgdGsuX3N1cHBvcnRfZGVmYXVsdF9yb290ID0gMQorICAgIHRrLl9kZWZhdWx0X3Jvb3QgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKaW5kZXggMDcxNTdmNS4uNjNhYzgxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQpAQCAtNzcsOSArNzcsOSBAQAogCiAgICAgICAgIGRlZiBnZXRfcmVxdWVzdChzZWxmKToKICAgICAgICAgICAgIG5ld3NvY2tldCwgZnJvbWFkZHIgPSBzZWxmLnNvY2tldC5hY2NlcHQoKQotICAgICAgICAgICAgY29ubnN0cmVhbSA9IHNzbC53cmFwX3NvY2tldChuZXdzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgY29ubnN0cmVhbSA9IGNvbnRleHQud3JhcF9zb2NrZXQobmV3c29ja2V0LCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICAgICAgcmV0dXJuIGNvbm5zdHJlYW0sIGZyb21hZGRyCiAKICAgICBJTUFQNF9TU0wgPSBpbWFwbGliLklNQVA0X1NTTApAQCAtMjQzLDYgKzI0Myw1NSBAQAogICAgICAgICAgICAgY2xpZW50LnNodXRkb3duKCkKIAogICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9icmFja2V0X2ZsYWdzKHNlbGYpOgorCisgICAgICAgICMgVGhpcyB2aW9sYXRlcyBSRkMgMzUwMSwgd2hpY2ggZGlzYWxsb3dzICddJyBjaGFyYWN0ZXJzIGluIHRhZyBuYW1lcywKKyAgICAgICAgIyBidXQgaW1hcGxpYiBoYXMgYWxsb3dlZCBwcm9kdWNpbmcgc3VjaCB0YWdzIGZvcmV2ZXIsIG90aGVyIHByb2dyYW1zCisgICAgICAgICMgYWxzbyBwcm9kdWNlIHRoZW0gKGVnOiBPdGhlckluYm94J3MgT3JnYW5pemVyIGFwcCBhcyBvZiAyMDE0MDcxNiksCisgICAgICAgICMgYW5kIEdtYWlsLCBmb3IgZXhhbXBsZSwgYWNjZXB0cyB0aGVtIGFuZCBwcm9kdWNlcyB0aGVtLiAgU28gd2UKKyAgICAgICAgIyBzdXBwb3J0IHRoZW0uICBTZWUgaXNzdWUgIzIxODE1LgorCisgICAgICAgIGNsYXNzIEJyYWNrZXRGbGFnSGFuZGxlcihTaW1wbGVJTUFQSGFuZGxlcik6CisKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mbGFncyA9IFsnQW5zd2VyZWQnLCAnRmxhZ2dlZCcsICdEZWxldGVkJywgJ1NlZW4nLCAnRHJhZnQnXQorICAgICAgICAgICAgICAgIHN1cGVyKCkuaGFuZGxlKCkKKworICAgICAgICAgICAgZGVmIGNtZF9BVVRIRU5USUNBVEUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcrJykKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXNwb25zZSA9IHlpZWxkCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnRkFLRUFVVEggc3VjY2Vzc2Z1bCcpCisKKyAgICAgICAgICAgIGRlZiBjbWRfU0VMRUNUKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgZmxhZ19tc2cgPSAnIFxcJy5qb2luKHNlbGYuZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKCgnKiBGTEFHUyAoJXMpJyAlIGZsYWdfbXNnKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAyIEVYSVNUUycpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAwIFJFQ0VOVCcpCisgICAgICAgICAgICAgICAgbXNnID0gKCcqIE9LIFtQRVJNQU5FTlRGTEFHUyAlcyBcXCopXSBGbGFncyBwZXJtaXR0ZWQuJworICAgICAgICAgICAgICAgICAgICAgICAgJSBmbGFnX21zZykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUobXNnLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdbUkVBRC1XUklURV0gU0VMRUNUIGNvbXBsZXRlZC4nKQorCisgICAgICAgICAgICBkZWYgY21kX1NUT1JFKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2ZsYWdzID0gYXJnc1syXS5zdHJpcCgnKCcpLnN0cmlwKCcpJykuc3BsaXQoKQorICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuZXh0ZW5kKG5ld19mbGFncykKKyAgICAgICAgICAgICAgICBmbGFnc19tc2cgPSAnKEZMQUdTICglcykpJyAlICcgXFwnLmpvaW4oc2VsZi5mbGFncykKKyAgICAgICAgICAgICAgICBtc2cgPSAnKiAlcyBGRVRDSCAlcycgJSAoYXJnc1swXSwgZmxhZ3NfbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZShtc2cuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ1NUT1JFIGNvbXBsZXRlZC4nKQorCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihCcmFja2V0RmxhZ0hhbmRsZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICBjb2RlLCBkYXRhID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6IGInZmFrZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwgYidabUZyWlE9PVxyXG4nKQorICAgICAgICAgICAgY2xpZW50LnNlbGVjdCgndGVzdCcpCisgICAgICAgICAgICB0eXAsIFtkYXRhXSA9IGNsaWVudC5zdG9yZShiJzEnLCAiK0ZMQUdTIiwgIlt0ZXN0XSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInW3Rlc3RdJywgZGF0YSkKKyAgICAgICAgICAgIGNsaWVudC5zZWxlY3QoJ3Rlc3QnKQorICAgICAgICAgICAgdHlwLCBbZGF0YV0gPSBjbGllbnQucmVzcG9uc2UoJ1BFUk1BTkVOVEZMQUdTJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidbdGVzdF0nLCBkYXRhKQorCisgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2lzc3VlNTk0OShzZWxmKToKIAogICAgICAgICBjbGFzcyBFT0ZIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CkBAIC01ODksOCArNjM4LDEwIEBACiAKICAgICBkZWYgdGVzdF9sb2dpbmNhcGFfd2l0aF9jbGllbnRfY2VydGZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBjZXJ0ZmlsZT1DRVJURklMRSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKIAogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9zc2xfY29udGV4dChzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKaW5kZXggZWU5ZWUxYS4uNGVjZTM2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKQEAgLTYsMTMgKzYsMTIgQEAKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAotaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICBpbXBvcnQgaW1wCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQppbmRleCAxZTMzMjc0Li43NjA5MDhlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQpAQCAtNjksNiArNjksMTggQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubG9hZChURVNURk4pCiAKKyAgICBkZWYgdGVzdF9pbXBvcnRfcmFpc2VzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgc29tZXRoaW5nX3RoYXRfc2hvdWxkX25vdF9leGlzdF9hbnl3aGVyZQorCisgICAgZGVmIHRlc3RfZnJvbV9pbXBvcnRfbWlzc2luZ19tb2R1bGVfcmFpc2VzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICBmcm9tIHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUgaW1wb3J0IGJsYWgKKworICAgIGRlZiB0ZXN0X2Zyb21faW1wb3J0X21pc3NpbmdfYXR0cl9yYWlzZXNfSW1wb3J0RXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUKKwogICAgIGRlZiB0ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkoc2VsZik6CiAgICAgICAgICMgQnJpZWYgZGlncmVzc2lvbiB0byB0ZXN0IHRoYXQgaW1wb3J0IGlzIGNhc2Utc2Vuc2l0aXZlOiAgaWYgd2UgZ290CiAgICAgICAgICMgdGhpcyBmYXIsIHdlIGtub3cgZm9yIHN1cmUgdGhhdCAicmFuZG9tIiBleGlzdHMuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCBjMTEyY2E3Li4wZGQ5Yzg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcF9leHRlcm5hbAotaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtOSw4ICs4LDYgQEAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIAotIyBYWFggZmluZF9zcGVjIHRlc3RzCi0KIEB1bml0dGVzdC5za2lwSWYodXRpbC5FWFRFTlNJT05TLmZpbGVuYW1lIGlzIE5vbmUsICdfdGVzdGNhcGkgbm90IGF2YWlsYWJsZScpCiBAdXRpbC5jYXNlX2luc2Vuc2l0aXZlX3Rlc3RzCiBjbGFzcyBFeHRlbnNpb25Nb2R1bGVDYXNlU2Vuc2l0aXZpdHlUZXN0KHV0aWwuQ0FTRU9LVGVzdEJhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CmluZGV4IDcxYmY2N2YuLmM5YjRhMzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKQEAgLTYsNyArNiw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogCi0jIFhYWCBmaW5kX3NwZWMgdGVzdHMKIAogY2xhc3MgRmluZGVyVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IDhmNGI4YmIuLmE0YjVhNjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTIsOCArMiw2IEBACiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CmluZGV4IDYwM2M3ZDcuLjI5ZWNmZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKQEAgLTMsOCArMyw2IEBACiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKLQotaW1wb3J0IHN5cwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCBjN2QzYTJhLi43ZjY0NTQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CkBAIC01LDYgKzUsNyBAQAogCiAiIiIKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIC4uIGltcG9ydCB1dGlsCiAKIApAQCAtMzMsMzEgKzM0LDUwIEBACiAKICAgICAiIiIKIAotICAgIGRlZiB0ZXN0X3VzaW5nX19fcGFja2FnZV9fKHNlbGYpOgotICAgICAgICAjIFtfX3BhY2thZ2VfX10KKyAgICBkZWYgaW1wb3J0X21vZHVsZShzZWxmLCBnbG9iYWxzXyk6CiAgICAgICAgIHdpdGggc2VsZi5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuZmFrZScpIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdwa2cuZmFrZScpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fX2ltcG9ydF9fKCcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPXsnX19wYWNrYWdlX18nOiAncGtnLmZha2UnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3Q9WydhdHRyJ10sIGxldmVsPTIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFsc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQorICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICBkZWYgdGVzdF91c2luZ19fX3BhY2thZ2VfXyhzZWxmKToKKyAgICAgICAgIyBbX19wYWNrYWdlX19dCisgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJ30pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKIAotICAgIGRlZiB0ZXN0X3VzaW5nX19fbmFtZV9fKHNlbGYsIHBhY2thZ2VfYXNfTm9uZT1GYWxzZSk6CisgICAgZGVmIHRlc3RfdXNpbmdfX19uYW1lX18oc2VsZik6CiAgICAgICAgICMgW19fbmFtZV9fXQotICAgICAgICBnbG9iYWxzXyA9IHsnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXX0KLSAgICAgICAgaWYgcGFja2FnZV9hc19Ob25lOgotICAgICAgICAgICAgZ2xvYmFsc19bJ19fcGFja2FnZV9fJ10gPSBOb25lCi0gICAgICAgIHdpdGggc2VsZi5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuZmFrZScpIGFzIGltcG9ydGVyOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdwa2cuZmFrZScpCi0gICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fX2ltcG9ydF9fKCcnLCBnbG9iYWxzPSBnbG9iYWxzXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX25hbWVfXyc6ICdwa2cuZmFrZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXyc6IFtdfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfd2Fybl93aGVuX3VzaW5nX19fbmFtZV9fKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoSW1wb3J0V2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmltcG9ydF9tb2R1bGUoeydfX25hbWVfXyc6ICdwa2cuZmFrZScsICdfX3BhdGhfXyc6IFtdfSkKIAogICAgIGRlZiB0ZXN0X05vbmVfYXNfX19wYWNrYWdlX18oc2VsZik6CiAgICAgICAgICMgW05vbmVdCi0gICAgICAgIHNlbGYudGVzdF91c2luZ19fX25hbWVfXyhwYWNrYWdlX2FzX05vbmU9VHJ1ZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbXBvcnRfbW9kdWxlKHsKKyAgICAgICAgICAgICAgICAnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXSwgJ19fcGFja2FnZV9fJzogTm9uZSB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCisKKyAgICBkZWYgdGVzdF9zcGVjX2ZhbGxiYWNrKHNlbGYpOgorICAgICAgICAjIElmIF9fcGFja2FnZV9fIGlzbid0IGRlZmluZWQsIGZhbGwgYmFjayBvbiBfX3NwZWNfXy5wYXJlbnQuCisgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7J19fc3BlY19fJzogRmFrZVNwZWMoJ3BrZy5mYWtlJyl9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCisKKyAgICBkZWYgdGVzdF93YXJuX3doZW5fcGFja2FnZV9hbmRfc3BlY19kaXNhZ3JlZShzZWxmKToKKyAgICAgICAgIyBSYWlzZSBhbiBJbXBvcnRXYXJuaW5nIGlmIF9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKEltcG9ydFdhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19wYWNrYWdlX18nOiAncGtnLmZha2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19zcGVjX18nOiBGYWtlU3BlYygncGtnLmZha2VmYWtlJyl9KQogCiAgICAgZGVmIHRlc3RfYmFkX19wYWNrYWdlX18oc2VsZik6CiAgICAgICAgIGdsb2JhbHMgPSB7J19fcGFja2FnZV9fJzogJzxub3QgcmVhbD4nfQpAQCAtNzAsNiArOTAsMTEgQEAKICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnJywgZ2xvYmFscywge30sIFsncmVsaW1wb3J0J10sIDEpCiAKIAorY2xhc3MgRmFrZVNwZWM6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisKKwogY2xhc3MgVXNpbmdfX3BhY2thZ2VfX1BFUDMwMihVc2luZ19fcGFja2FnZV9fKToKICAgICBtb2NrX21vZHVsZXMgPSB1dGlsLm1vY2tfbW9kdWxlcwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQppbmRleCA3MDY5ZDllLi5hN2JmMjc0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKQEAgLTQzLDYgKzQzLDEwIEBACiAgICAgIiIiVGVzdCBBUEktc3BlY2lmaWMgZGV0YWlscyBmb3IgX19pbXBvcnRfXyAoZS5nLiByYWlzaW5nIHRoZSByaWdodAogICAgIGV4Y2VwdGlvbiB3aGVuIHBhc3NpbmcgaW4gYW4gaW50IGZvciB0aGUgbW9kdWxlIG5hbWUpLiIiIgogCisgICAgZGVmIHRlc3RfcmFpc2VzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ3NvbWUgbW9kdWxlIHRoYXQgZG9lcyBub3QgZXhpc3QnKQorCiAgICAgZGVmIHRlc3RfbmFtZV9yZXF1aXJlc19ycGFyaXRpb24oc2VsZik6CiAgICAgICAgICMgUmFpc2UgVHlwZUVycm9yIGlmIGEgbm9uLXN0cmluZyBpcyBwYXNzZWQgaW4gZm9yIHRoZSBtb2R1bGUgbmFtZS4KICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IDgwNDU0NjUuLjE0NjQwMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKQEAgLTczLDE2ICs3MywxNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ21vZHVsZScpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZS5fX25hbWVfXywgJ3BrZy5tb2R1bGUnKQogCi0gICAgZGVmIHRlc3RfbW9kdWxlX2Zyb21fcGFja2FnZV90cmlnZ2Vyc19JbXBvcnRFcnJvcihzZWxmKToKLSAgICAgICAgIyBJZiBhIHN1Ym1vZHVsZSBjYXVzZXMgYW4gSW1wb3J0RXJyb3IgYmVjYXVzZSBpdCB0cmllcyB0byBpbXBvcnQKLSAgICAgICAgIyBhIG1vZHVsZSB3aGljaCBkb2Vzbid0IGV4aXN0LCB0aGF0IHNob3VsZCBsZXQgdGhlIEltcG9ydEVycm9yCi0gICAgICAgICMgcHJvcGFnYXRlLgorICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3BhY2thZ2VfdHJpZ2dlcnNfTW9kdWxlTm90Rm91bmRFcnJvcihzZWxmKToKKyAgICAgICAgIyBJZiBhIHN1Ym1vZHVsZSBjYXVzZXMgYW4gTW9kdWxlTm90Rm91bmRFcnJvciBiZWNhdXNlIGl0IHRyaWVzCisgICAgICAgICMgdG8gaW1wb3J0IGEgbW9kdWxlIHdoaWNoIGRvZXNuJ3QgZXhpc3QsIHRoYXQgc2hvdWxkIGxldCB0aGUKKyAgICAgICAgIyBNb2R1bGVOb3RGb3VuZEVycm9yIHByb3BhZ2F0ZS4KICAgICAgICAgZGVmIG1vZHVsZV9jb2RlKCk6CiAgICAgICAgICAgICBpbXBvcnQgaV9kb19ub3RfZXhpc3QKICAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnLm1vZCc6IG1vZHVsZV9jb2RlfSkgYXMgaW1wb3J0ZXI6CiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBleGM6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhNb2R1bGVOb3RGb3VuZEVycm9yKSBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnJywgZnJvbWxpc3Q9Wydtb2QnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpX2RvX25vdF9leGlzdCcsIGV4Yy5leGNlcHRpb24ubmFtZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CmluZGV4IDM3NTViODQuLjI0Mzk2MDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKQEAgLTEsNyArMSw2IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpbXBvcnRsaWIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKaW5kZXggYjMyYTg3Ni4uN2FhMjZiMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKQEAgLTE2LDExICsxNiwxNCBAQAogCiAgICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCiAKKyAgICBmaW5kID0gTm9uZQorICAgIGNoZWNrX2ZvdW5kID0gTm9uZQorCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBUZXN0IE5vbmUgcmV0dXJuZWQgdXBvbiBub3QgZmluZGluZyBhIHN1aXRhYmxlIGxvYWRlci4KICAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZChtb2R1bGUpKQogCiAgICAgZGVmIHRlc3Rfc3lzX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoIGlzIHVzZWQgd2hlbiAncGF0aCcgaXMgTm9uZS4KQEAgLTMwLDggKzMzLDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3VuZChmb3VuZCwgaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCAncGF0aCcgaXMgdXNlZCB3aGVuIHNldC4KQEAgLTQwLDggKzQzLDggQEAKICAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfbGlzdChzZWxmKToKICAgICAgICAgIyBBbiBlbXB0eSBsaXN0IHNob3VsZCBub3QgY291bnQgYXMgYXNraW5nIGZvciBzeXMucGF0aC4KQEAgLTUwLDcgKzUzLDcgQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ21vZHVsZScsIFtdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZCgnbW9kdWxlJywgW10pKQogCiAgICAgZGVmIHRlc3RfcGF0aF9ob29rcyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGhfaG9va3MgaXMgdXNlZC4KQEAgLTYwLDggKzYzLDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIGhvb2sgPSB1dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaG9va3M9W2hvb2tdKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0sIGltcG9ydGVyKQogCkBAIC03Myw3ICs3Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF9lbnRyeV0pOgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgnb3MnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQoJ29zJykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF9lbnRyeV0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQpAQCAtODUsOCArODgsOCBAQAogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKICAgICAgICAgaG9vayA9IHV0aWwubW9ja19wYXRoX2hvb2sob3MuZ2V0Y3dkKCksIGltcG9ydGVyPWltcG9ydGVyKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3BhdGhdLCBwYXRoX2hvb2tzPVtob29rXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5nZXRjd2QoKSwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCiAKICAgICBkZWYgdGVzdF9Ob25lX29uX3N5c19wYXRoKHNlbGYpOgpAQCAtMTgyLDE1ICsxODUsNTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicpKQogCiAKK2NsYXNzIEZpbmRNb2R1bGVUZXN0cyhGaW5kZXJUZXN0cyk6CisgICAgZGVmIGZpbmQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBjaGVja19mb3VuZChzZWxmLCBmb3VuZCwgaW1wb3J0ZXIpOgorICAgICAgICBzZWxmLmFzc2VydElzKGZvdW5kLCBpbXBvcnRlcikKIAogCi0oRnJvemVuX0ZpbmRlclRlc3RzLAotIFNvdXJjZV9GaW5kZXJUZXN0cwotICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKyhGcm96ZW5fRmluZE1vZHVsZVRlc3RzLAorIFNvdXJjZV9GaW5kTW9kdWxlVGVzdHMKKykgPSB1dGlsLnRlc3RfYm90aChGaW5kTW9kdWxlVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKworY2xhc3MgRmluZFNwZWNUZXN0cyhGaW5kZXJUZXN0cyk6CisgICAgZGVmIGZpbmQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgY2hlY2tfZm91bmQoc2VsZiwgZm91bmQsIGltcG9ydGVyKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb3VuZC5sb2FkZXIsIGltcG9ydGVyKQorCisKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIFBhdGhFbnRyeUZpbmRlclRlc3RzOgogCisgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmFpbGluZ19maW5kX3NwZWMoc2VsZik6CisgICAgICAgICMgUGF0aEVudHJ5RmluZGVyIHdpdGggZmluZF9tb2R1bGUoKSBkZWZpbmVkIHNob3VsZCB3b3JrLgorICAgICAgICAjIElzc3VlICMyMDc2My4KKyAgICAgICAgY2xhc3MgRmluZGVyOgorICAgICAgICAgICAgcGF0aF9sb2NhdGlvbiA9ICd0ZXN0X2ZpbmRlcl93aXRoX2ZpbmRfbW9kdWxlJworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIGlmIHBhdGggIT0gc2VsZi5wYXRoX2xvY2F0aW9uOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgorCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZmluZF9tb2R1bGUoZnVsbG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W0ZpbmRlci5wYXRoX2xvY2F0aW9uXStzeXMucGF0aFs6XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzPVtGaW5kZXJdKToKKyAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCdpbXBvcnRsaWInKQorCiAgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmFpbGluZ19maW5kX21vZHVsZShzZWxmKToKICAgICAgICAgIyBQYXRoRW50cnlGaW5kZXIgd2l0aCBmaW5kX21vZHVsZSgpIGRlZmluZWQgc2hvdWxkIHdvcmsuCiAgICAgICAgICMgSXNzdWUgIzIwNzYzLgpAQCAtMjA3LDcgKzI0NSw3IEBACiAKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtGaW5kZXIucGF0aF9sb2NhdGlvbl0rc3lzLnBhdGhbOl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcz1bRmluZGVyXSk6Ci0gICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnaW1wb3J0bGliJykKKyAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ2ltcG9ydGxpYicpCiAKIAogKEZyb3plbl9QRUZUZXN0cywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKaW5kZXggM2JiODE5Zi4uOGE5NWEzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKQEAgLTEsNyArMSw4IEBACiAiIiJUZXN0IHJlbGF0aXZlIGltcG9ydHMgKFBFUCAzMjgpLiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKKwogCiBjbGFzcyBSZWxhdGl2ZUltcG9ydHM6CiAKQEAgLTY1LDkgKzY2LDExIEBACiAgICAgICAgICAgICAgICAgdW5jYWNoZV9uYW1lcy5hcHBlbmQobmFtZVs6LWxlbignLl9faW5pdF9fJyldKQogICAgICAgICB3aXRoIHV0aWwubW9ja19zcGVjKCpjcmVhdGUpIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgZm9yIGdsb2JhbF8gaW4gZ2xvYmFsc186Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCp1bmNhY2hlX25hbWVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGdsb2JhbF8pCisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICAgICAgICAgIGZvciBnbG9iYWxfIGluIGdsb2JhbHNfOgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoKnVuY2FjaGVfbmFtZXMpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGdsb2JhbF8pCiAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX21vZHVsZShzZWxmKToKQEAgLTIwNCwxMSArMjA3LDE4IEBACiAKICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fZ2xvYmFscyhzZWxmKToKICAgICAgICAgIyBObyBnbG9iYWxzIGZvciBhIHJlbGF0aXZlIGltcG9ydCBpcyBhbiBlcnJvci4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3N5cycsIGxldmVsPTEpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgbGV2ZWw9MSkKKworICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF9ub19wYWNrYWdlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnYScsIHsnX19wYWNrYWdlX18nOiAnJywgJ19fc3BlY19fJzogTm9uZX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MSkKIAogICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF9ub19wYWNrYWdlX2V4aXN0c19hYnNvbHV0ZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCB7J19fcGFja2FnZV9fJzogJycsICdfX3NwZWNfXyc6IE5vbmV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTEpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1YmUxMWYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0iIiJSdW4gUHl0aG9uJ3Mgc3RhbmRhcmQgdGVzdCBzdWl0ZSB1c2luZyBpbXBvcnRsaWIuX19pbXBvcnRfXy4KLQotVGVzdHMga25vd24gdG8gZmFpbCBiZWNhdXNlIG9mIGFzc3VtcHRpb25zIHRoYXQgaW1wb3J0bGliIChwcm9wZXJseSkKLWludmFsaWRhdGVzIGFyZSBhdXRvbWF0aWNhbGx5IHNraXBwZWQgaWYgdGhlIGVudGlyZSB0ZXN0IHN1aXRlIGlzIHJ1bi4KLU90aGVyd2lzZSBhbGwgY29tbWFuZC1saW5lIG9wdGlvbnMgdmFsaWQgZm9yIHRlc3QucmVncnRlc3QgYXJlIGFsc28gdmFsaWQgZm9yCi10aGlzIHNjcmlwdC4KLQotIiIiCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRsaWIuX19pbXBvcnRfXwotICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKLQotICAgIHJlZ3J0ZXN0Lm1haW4ocXVpZXQ9VHJ1ZSwgdmVyYm9zZTI9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IDM0Yjg2Y2QuLjEyY2UwY2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtNSw3ICs1LDYgQEAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0IGFzIHRlc3Rfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKaW5kZXggNzNmNGM2Mi4uYTE1MTE0OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKQEAgLTIxNyw3ICsyMTcsNyBAQAogICAgICAgICAgICAgIyBQRVAgMzAyCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpICMgWFhYCisgICAgICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICAjIFNhbml0eSBjaGVja3MuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX2NhY2hlZF9fLCBjb21waWxlZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLngsIDUpCkBAIC0yNDUsMTIgKzI0NSw3IEBACiBjbGFzcyBCYWRCeXRlY29kZVRlc3Q6CiAKICAgICBkZWYgaW1wb3J0XyhzZWxmLCBmaWxlLCBtb2R1bGVfbmFtZSk6Ci0gICAgICAgIGxvYWRlciA9IHNlbGYubG9hZGVyKG1vZHVsZV9uYW1lLCBmaWxlKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgICMgWFhYIENoYW5nZSB0byB1c2UgZXhlY19tb2R1bGUoKS4KLSAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGVfbmFtZSwgc3lzLm1vZHVsZXMpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBtYW5pcHVsYXRlX2J5dGVjb2RlKHNlbGYsIG5hbWUsIG1hcHBpbmcsIG1hbmlwdWxhdG9yLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9RmFsc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IGU2YTI0MTUuLjc5NWQ0MzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKQEAgLTE2LDEwICsxNiwxOSBAQAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfc3BlYycpKQorCisgICAgZGVmIHRlc3Rfc3VjY2Vzc19sZWdhY3koc2VsZik6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKCcnKSwgJ2ZpbmRfc3BlYycpKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nX2xlZ2FjeShzZWxmKToKKyAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX21vZHVsZScpKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQppbmRleCAxZTA3NzFiLi45ODA4NTVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgcmUKLWltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogIyBCZWNhdXNlIHN5cy5wYXRoIGdldHMgZXNzZW50aWFsbHkgYmxhbmtlZCwgbmVlZCB0byBoYXZlIHVuaWNvZGVkYXRhIGFscmVhZHkKICMgaW1wb3J0ZWQgZm9yIHRoZSBwYXJzZXIgdG8gdXNlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQppbmRleCBkNGJmOTE1Li5jODYyNDgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQpAQCAtMjA3LDYgKzIwNywxMCBAQAogCiAgICAgU1BMSVQgPSBtYWtlX2FiY19zdWJjbGFzc2VzKExvYWRlcikKIAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9tb2R1bGUoc2VsZik6CisgICAgICAgIHNwZWMgPSAnYSBzcGVjJworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmlucy5jcmVhdGVfbW9kdWxlKHNwZWMpKQorCiAgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGUoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgc2VsZi5pbnMubG9hZF9tb2R1bGUoJ3NvbWV0aGluZycpCkBAIC01MTksNiArNTIzLDEyIEBACiAgICAgICAgIHN1cHBvcnQudW5sb2FkKHNlbGYubW9kdWxlX25hbWUpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubG9hZCwgc2VsZi5tb2R1bGVfbmFtZSkKIAorICAgIGRlZiBsb2FkKHNlbGYsIGxvYWRlcik6CisgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuc3BlY19mcm9tX2xvYWRlcihzZWxmLm1vZHVsZV9uYW1lLCBsb2FkZXIpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdC5fYm9vdHN0cmFwLl9sb2FkX3VubG9ja2VkKHNwZWMpCisKICAgICBkZWYgbW9ja19nZXRfY29kZShzZWxmKToKICAgICAgICAgcmV0dXJuIG1vY2sucGF0Y2gub2JqZWN0KHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzLCAnZ2V0X2NvZGUnKQogCkBAIC01MjgsOSArNTM4LDcgQEAKICAgICAgICAgICAgIG1vY2tlZF9nZXRfY29kZS5zaWRlX2VmZmVjdCA9IEltcG9ydEVycm9yCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLkluc3BlY3RMb2FkZXJTdWJjbGFzcygpCi0gICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5sb2FkKGxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlX05vbmUoc2VsZik6CiAgICAgICAgICMgSWYgZ2V0X2NvZGUoKSByZXR1cm5zIE5vbmUsIHJhaXNlIEltcG9ydEVycm9yLgpAQCAtNTM4LDcgKzU0Niw3IEBACiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUucmV0dXJuX3ZhbHVlID0gTm9uZQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYubG9hZChsb2FkZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV0dXJuZWQoc2VsZik6CiAgICAgICAgICMgVGhlIGxvYWRlZCBtb2R1bGUgc2hvdWxkIGJlIHJldHVybmVkLgpAQCAtNTQ2LDE0ICs1NTQsMTYgQEAKICAgICAgICAgd2l0aCBzZWxmLm1vY2tfZ2V0X2NvZGUoKSBhcyBtb2NrZWRfZ2V0X2NvZGU6CiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUucmV0dXJuX3ZhbHVlID0gY29kZQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWQobG9hZGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUsIHN5cy5tb2R1bGVzW3NlbGYubW9kdWxlX25hbWVdKQogCiAKIChGcm96ZW5fSUxMb2FkTW9kdWxlVGVzdHMsCiAgU291cmNlX0lMTG9hZE1vZHVsZVRlc3RzCiAgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlckxvYWRNb2R1bGVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwpCisgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMLAorICAgICAgICAgICAgICAgICAgICAgICAgIGluaXQ9aW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsPXV0aWwpCiAKIAogIyMjIyMgRXhlY3V0aW9uTG9hZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKaW5kZXggNmJjM2M1Ni4uYjBhOTRhYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKQEAgLTk5LDkgKzk5LDcgQEAKIAogY2xhc3MgRmluZExvYWRlclRlc3RzOgogCi0gICAgY2xhc3MgRmFrZU1ldGFGaW5kZXI6Ci0gICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGZpbmRfbW9kdWxlKG5hbWUsIHBhdGg9Tm9uZSk6IHJldHVybiBuYW1lLCBwYXRoCisgICAgRmFrZU1ldGFGaW5kZXIgPSBOb25lCiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlcyhzZWxmKToKICAgICAgICAgIyBJZiBhIG1vZHVsZSB3aXRoIF9fbG9hZGVyX18gaXMgaW4gc3lzLm1vZHVsZXMsIHRoZW4gcmV0dXJuIGl0LgpAQCAtMTcxLDkgKzE2OSwzMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5pbml0LmZpbmRfbG9hZGVyKCduZXZlcmdvaW5ndG9maW5kdGhpc21vZHVsZScpKQogCiAKLShGcm96ZW5fRmluZExvYWRlclRlc3RzLAotIFNvdXJjZV9GaW5kTG9hZGVyVGVzdHMKLSApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaW5kTG9hZGVyVGVzdHMsIGluaXQ9aW5pdCkKK2NsYXNzIEZpbmRMb2FkZXJQRVA0NTFUZXN0cyhGaW5kTG9hZGVyVGVzdHMpOgorCisgICAgY2xhc3MgRmFrZU1ldGFGaW5kZXI6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGZpbmRfc3BlYyhuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgICAgIHJldHVybiBtYWNoaW5lcnlbJ1NvdXJjZSddLk1vZHVsZVNwZWMobmFtZSwgKG5hbWUsIHBhdGgpKQorCisKKyhGcm96ZW5fRmluZExvYWRlclBFUDQ1MVRlc3RzLAorIFNvdXJjZV9GaW5kTG9hZGVyUEVQNDUxVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaW5kTG9hZGVyUEVQNDUxVGVzdHMsIGluaXQ9aW5pdCkKKworCitjbGFzcyBGaW5kTG9hZGVyUEVQMzAyVGVzdHMoRmluZExvYWRlclRlc3RzKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUsIHBhdGgKKworCisoRnJvemVuX0ZpbmRMb2FkZXJQRVAzMDJUZXN0cywKKyBTb3VyY2VfRmluZExvYWRlclBFUDMwMlRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclBFUDMwMlRlc3RzLCBpbml0PWluaXQpCiAKIAogY2xhc3MgUmVsb2FkVGVzdHM6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKaW5kZXggY2MzODNjMi4uZmZkOGRjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQpAQCAtNjYsNiArNjYsOCBAQAogICAgICAgICBzcGVjID0gdXRpbC5zcGVjX2Zyb21fbG9hZGVyKFRlc3RpbmdJbXBvcnRlci5tb2R1bGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLkxhenlMb2FkZXIobG9hZGVyKSkKICAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQorICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoVGVzdGluZ0ltcG9ydGVyLm1vZHVsZV9uYW1lKQogICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBzcGVjCiAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc3BlYy5sb2FkZXIKICAgICAgICAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKaW5kZXggZGYwYWYxMi4uYjJhYWRmZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CkBAIC0zLDcgKzMsNiBAQAogaW5pdCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQogCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2Vha3JlZgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weQppbmRleCA2NjM5NjEyLi5lMzdkOGExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKQEAgLTEsMTMgKzEsMTAgQEAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgaW1wb3J0bGliLmFiYwotaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKICMgbmVlZGVkIHRlc3RzOgogIwpAQCAtNzEsNiArNjgsNyBAQAogICAgICAgICAjIFRPRE86IHdpbGwgd2UgZXZlciB3YW50IHRvIHBhc3MgZXhjX2luZm8gdG8gX19leGl0X18/CiAgICAgICAgIHNlbGYuY3R4Ll9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKKwogY2xhc3MgU2luZ2xlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIApAQCAtODcsNyArODUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZm9vKSwgIjxtb2R1bGUgJ2ZvbycgKG5hbWVzcGFjZSk+IikKIAogCi1jbGFzcyBEeW5hbWljUGF0aGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKK2NsYXNzIER5bmFtaWNQYXRoTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIAogICAgIGRlZiB0ZXN0X2R5bmFtaWNfcGF0aChzZWxmKToKQEAgLTI4OSw1ICsyODcsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhX3Rlc3QuYXR0ciwgJ2luIG1vZHVsZScpCiAKIAorY2xhc3MgUmVsb2FkVGVzdHMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgZm9vID0gaW1wb3J0bGliLnJlbG9hZChmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvbworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIGZvbyA9IGltcG9ydGxpYi5yZWxvYWQoZm9vKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICBkZWYgdGVzdF9keW5hbWljX3BhdGgoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgICAgICAjIE5vdyBtb2RpZnkgc3lzLnBhdGggYW5kIHJlbG9hZC4KKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnJvb3QsICdwb3J0aW9uMicpKQorICAgICAgICBmb28gPSBpbXBvcnRsaWIucmVsb2FkKGZvbykKKworICAgICAgICAjIEFuZCBtYWtlIHN1cmUgZm9vLnR3byBpcyBub3cgaW1wb3J0YWJsZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKaW5kZXggOGIzMzNlOC4uNWExNmEwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQpAQCAtNSw2ICs1LDcgQEAKIHV0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQogCiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHBhdGhsaWIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBDbGVhbkltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCkBAIC02NTksNiArNjYwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5jYWNoZWQsIHNlbGYuY2FjaGVkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3BlYy5oYXNfbG9jYXRpb24pCiAKKyAgICBkZWYgdGVzdF9zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbl9wYXRoX2xpa2VfYXJnKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobGliLlB1cmVQYXRoKHNlbGYucGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5vcmlnaW4sIHNlbGYucGF0aCkKKwogICAgIGRlZiB0ZXN0X3NwZWNfZnJvbV9maWxlX2xvY2F0aW9uX2RlZmF1bHRfd2l0aG91dF9sb2NhdGlvbihzZWxmKToKICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihzZWxmLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQppbmRleCA0MWNhMzMzLi5kNjE1Mzc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CkBAIC01LDYgKzUsNyBAQAogaW1wb3J0bGliX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00NiwxNCArNDcsOCBAQAogICAgICAgICAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIExvYWRlcigpKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdjcmVhdGVfbW9kdWxlJywgc3RyKHdbMF0ubWVzc2FnZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlX3JldHVybnNfTm9uZShzZWxmKToKICAgICAgICAgY2xhc3MgTG9hZGVyKHNlbGYuYWJjLkxvYWRlcik6CkBAIC02NzcsNiArNjcyLDE1IEBACiAgICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgbm90IGJlIE5vbmUnKQorICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX3BhdGhfbGlrZV9hcmcoc2VsZik6CisgICAgICAgIHBhdGggPSBwYXRobGliLlB1cmVQYXRoKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGUoc2VsZik6CkBAIC03MzgsNiArNzQyLDE1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfcGF0aF9saWtlX2FyZyhzZWxmKToKKyAgICAgICAgcGF0aCA9IHBhdGhsaWIuUHVyZVBhdGgoJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCksIGV4cGVjdCkKKwogCiAoRnJvemVuX1BFUDMxNDdUZXN0cywKICBTb3VyY2VfUEVQMzE0N1Rlc3RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKaW5kZXggYzg5M2JjZi4uMDA1YjY4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQpAQCAtNDAsNyArNDAsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJvb3QgPSBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLlJFR0lTVFJZX0tFWQogICAgIGtleSA9IHJvb3QuZm9ybWF0KGZ1bGxuYW1lPW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPSclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICB0cnk6CiAgICAgICAgIHdpdGggdGVtcF9tb2R1bGUobmFtZSwgImEgPSAxIikgYXMgbG9jYXRpb246CiAgICAgICAgICAgICBzdWJrZXkgPSBDcmVhdGVLZXkoSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCA2NzFlMDVhLi45NzYzNGU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC0zMCw2ICszMCw3IEBACiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIgYXMgbW9kCiBmcm9tIHRlc3QgaW1wb3J0IGluc3BlY3RfZm9kZGVyMiBhcyBtb2QyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0IGltcG9ydCBfcmVhZHlfdG9faW1wb3J0CiAKQEAgLTM4LDcgKzM5LDcgQEAKICMgaXNtb2R1bGUsIGlzY2xhc3MsIGlzbWV0aG9kLCBpc2Z1bmN0aW9uLCBpc3RyYWNlYmFjaywgaXNmcmFtZSwgaXNjb2RlLAogIyBpc2J1aWx0aW4sIGlzcm91dGluZSwgaXNnZW5lcmF0b3IsIGlzZ2VuZXJhdG9yZnVuY3Rpb24sIGdldG1lbWJlcnMsCiAjIGdldGRvYywgZ2V0ZmlsZSwgZ2V0bW9kdWxlLCBnZXRzb3VyY2VmaWxlLCBnZXRjb21tZW50cywgZ2V0c291cmNlLAotIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3NwZWMsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAorIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAogIyBjdXJyZW50ZnJhbWUsIHN0YWNrLCB0cmFjZSwgaXNkYXRhZGVzY3JpcHRvcgogCiAjIE5PVEU6IFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdGVzdHMgcmVsYXRpbmcgdG8gaW50ZXJhY3Rpb24gd2l0aApAQCAtNjQsNyArNjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNmcmFtZSwgaW5zcGVjdC5pc2Z1bmN0aW9uLCBpbnNwZWN0LmlzbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNtb2R1bGUsIGluc3BlY3QuaXN0cmFjZWJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvciwgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNjb3JvdXRpbmUsIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbl0pCisgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZSwgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNhc3luY2dlbiwgaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb25dKQogCiAgICAgZGVmIGlzdGVzdChzZWxmLCBwcmVkaWNhdGUsIGV4cCk6CiAgICAgICAgIG9iaiA9IGV2YWwoZXhwKQpAQCAtNzIsNiArNzQsNyBAQAogCiAgICAgICAgIGZvciBvdGhlciBpbiBzZWxmLnByZWRpY2F0ZXMgLSBzZXQoW3ByZWRpY2F0ZV0pOgogICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24gb3IgXAorICAgICAgICAgICAgICAgcHJlZGljYXRlID09IGluc3BlY3QuaXNhc3luY2dlbmZ1bmN0aW9uIG9yIFwKICAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24pIGFuZCBcCiAgICAgICAgICAgICAgICBvdGhlciA9PSBpbnNwZWN0LmlzZnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTgxLDYgKzg0LDEwIEBACiAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgIHlpZWxkIGkKIAorYXN5bmMgZGVmIGFzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgorICAgIGFzeW5jIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICB5aWVsZCBpCisKIGFzeW5jIGRlZiBjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZShzZWxmKToKICAgICByZXR1cm4gJ3NwYW0nCiAKQEAgLTEyMSw2ICsxMjgsMTAgQEAKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2RhdGFkZXNjcmlwdG9yLCAnY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvciwgJyh4IGZvciB4IGluIHJhbmdlKDIpKScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwgJ2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKKyAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2FzeW5jZ2VuLAorICAgICAgICAgICAgICAgICAgICAnYXN5bmNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUoMSknKQorICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgJ2FzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKIAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCkBAIC00MDAsNyArNDExLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUobW9kLnNwYW0pKSwgbW9kZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoZ2l0LmFidXNlKSksIG1vZGZpbGUpCiAgICAgICAgIGZuID0gIl9ub25fZXhpc3RpbmdfZmlsZW5hbWVfdXNlZF9mb3Jfc291cmNlZmlsZV90ZXN0LnB5IgotICAgICAgICBjbyA9IGNvbXBpbGUoIk5vbmUiLCBmbiwgImV4ZWMiKQorICAgICAgICBjbyA9IGNvbXBpbGUoIng9MSIsIGZuLCAiZXhlYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSwgTm9uZSkKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCAiTm9uZSIsIGNvLmNvX2ZpbGVuYW1lKQogICAgICAgICB0cnk6CkBAIC0yOTAyLDYgKzI5MTMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJyQnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQogCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLmEnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKICAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCkBAIC0yOTg1LDYgKzMwMDAsMTcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ25hbWUgbXVzdCBiZSBhIHN0cicpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCiAKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbXBsaWNpdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wbGljaXQgYXJndW1lbnRzIG11c3QgYmUgcGFzc2VkIGluIGFzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLjAnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKworICAgICAgICBwYXJhbSA9IGluc3BlY3QuUGFyYW1ldGVyKAorICAgICAgICAgICAgJy4wJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0ua2luZCwgaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLm5hbWUsICdpbXBsaWNpdDAnKQorCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbW11dGFiaWxpdHkoc2VsZik6CiAgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignc3BhbScsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQogCkBAIC0zMjMzLDYgKzMyNTksMTcgQEAKICAgICAgICAgYmEgPSBzaWcuYmluZChhcmdzPTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEuYXJndW1lbnRzLCB7J2t3YXJncyc6IHsnYXJncyc6IDF9fSkKIAorICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9pbXBsaWNpdF9hcmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE5NjExOiBnZXRjYWxsYXJncyBzaG91bGQgd29yayB3aXRoIHNldCBjb21wcmVoZW5zaW9ucworICAgICAgICBkZWYgbWFrZV9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7eiAqIHogZm9yIHogaW4gcmFuZ2UoNSl9CisgICAgICAgIHNldGNvbXBfY29kZSA9IG1ha2Vfc2V0Ll9fY29kZV9fLmNvX2NvbnN0c1sxXQorICAgICAgICBzZXRjb21wX2Z1bmMgPSB0eXBlcy5GdW5jdGlvblR5cGUoc2V0Y29tcF9jb2RlLCB7fSkKKworICAgICAgICBpdGVyYXRvciA9IGl0ZXIocmFuZ2UoNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHNldGNvbXBfZnVuYywgaXRlcmF0b3IpLCB7MCwgMSwgNCwgOSwgMTZ9KQorCiAKIGNsYXNzIFRlc3RCb3VuZEFyZ3VtZW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNlbGYpOgpAQCAtMzU0MywxNCArMzU4MCwxNCBAQAogCiAgICAgZGVmIHRlc3RfZGV0YWlscyhzZWxmKToKICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3VuaXR0ZXN0JykKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAnaW5zcGVjdCcsCisgICAgICAgIGFyZ3MgPSBzdXBwb3J0Lm9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKmFyZ3MsICctbScsICdpbnNwZWN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pdHRlc3QnLCAnLS1kZXRhaWxzJykKICAgICAgICAgb3V0cHV0ID0gb3V0LmRlY29kZSgpCiAgICAgICAgICMgSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayBvbiB0aGUgb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fbmFtZV9fLCBvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fZmlsZV9fLCBvdXRwdXQpCi0gICAgICAgIGlmIG5vdCBzeXMuZmxhZ3Mub3B0aW1pemU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX2NhY2hlZF9fLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fY2FjaGVkX18sIG91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CmluZGV4IGI2NmM1ZDYuLjE0YmJkNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CkBAIC0yLDYgKzIsOCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogCiBMID0gWwogICAgICAgICAoJzAnLCAwKSwKQEAgLTIxMiw2ICsyMTQsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoJzJicjQ1cWMnLCAzNSksIDQyOTQ5NjcyOTcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCcxejE0MXo1JywgMzYpLCA0Mjk0OTY3Mjk3KQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBldmFsKGxpdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBpbnQobGl0LnJlcGxhY2UoJ18nLCAnJyksIDApKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIGxpdCwgMCkKKyAgICAgICAgIyBBZGRpdGlvbmFsIHRlc3QgY2FzZXMgd2l0aCBiYXNlcyAhPSAwLCBvbmx5IGZvciB0aGUgY29uc3RydWN0b3I6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIxXzAwIiwgMyksIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIwXzEwMCIpLCAxMDApICAjIG5vdCB2YWxpZCBhcyBhIGxpdGVyYWwhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGIiMV8wMCIpLCAxMDApICAjIGJ5dGUgdW5kZXJzY29yZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICJfMTAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiK18xMDAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICIxX18wMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgIjEwMF8iKQorCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc21hbGxfaW50cyhzZWxmKToKICAgICAgICAgIyBCdWcgIzMyMzY6IFJldHVybiBzbWFsbCBsb25ncyBmcm9tIFB5TG9uZ19Gcm9tU3RyaW5nCkBAIC00MzAsMjEgKzQ1MSwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBiYWRfaW50ID0gQmFkSW50MigpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgbiA9IGludChiYWRfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogCiAgICAgICAgIGJhZF9pbnQgPSBUcnVuY1JldHVybnNCYWRJbnQoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBnb29kX2ludCA9IFRydW5jUmV0dXJuc0ludFN1YmNsYXNzKCkKICAgICAgICAgbiA9IGludChnb29kX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogICAgICAgICBuID0gSW50U3ViY2xhc3MoZ29vZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBJbnRTdWJjbGFzcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDUxMTE4ODIuLjhhMjExMWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtNDk2LDcgKzQ5NiwxMSBAQAogICAgIGRlZiB0ZXN0X29wZW5faGFuZGxlc19OVUxfY2hhcnMoc2VsZik6CiAgICAgICAgIGZuX3dpdGhfTlVMID0gJ2Zvb1wwYmFyJwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGZuX3dpdGhfTlVMLCAndycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3BlbiwgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCisKKyAgICAgICAgYnl0ZXNfZm4gPSBieXRlcyhmbl93aXRoX05VTCwgJ2FzY2lpJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzX2ZuLCAndycpCiAKICAgICBkZWYgdGVzdF9yYXdfZmlsZV9pbyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIsIGJ1ZmZlcmluZz0wKSBhcyBmOgpAQCAtODU2LDYgKzg2MCwzMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihzdHJlYW0sIG1ldGhvZCkoYnVmZmVyKSwgNSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGJ1ZmZlciksIGIiMTIzNDUiKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX3N1cHBvcnQoc2VsZik6CisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgICAgIGRlZiBjaGVja19wYXRoX3N1Y2NlZWRzKHBhdGgpOgorICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoImVnZ1xuIikKKworICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJlZ2dcbiIpCisKKyAgICAgICAgY2hlY2tfcGF0aF9zdWNjZWVkcyhQYXRoTGlrZShzdXBwb3J0LlRFU1RGTikpCisgICAgICAgIGNoZWNrX3BhdGhfc3VjY2VlZHMoUGF0aExpa2Uoc3VwcG9ydC5URVNURk4uZW5jb2RlKCd1dGYtOCcpKSkKKworICAgICAgICBiYWRfcGF0aCA9IFBhdGhMaWtlKFR5cGVFcnJvcikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5vcGVuKGJhZF9wYXRoLCAndycpCisKKyAgICAgICAgIyBlbnN1cmUgdGhhdCByZWZjb3VudGluZyBpcyBjb3JyZWN0IHdpdGggc29tZSBlcnJvciBjb25kaXRpb25zCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAncmVhZC93cml0ZS9hcHBlbmQgbW9kZScpOgorICAgICAgICAgICAgc2VsZi5vcGVuKFBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKSwgJ3J3eGEnKQorCiAKIGNsYXNzIENJT1Rlc3QoSU9UZXN0KToKIApAQCAtMTc4Miw3ICsxODEyLDcgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1ldGhvZCk6CiAgICAgICAgICAgICAgICAgcGFpciA9IHNlbGYudHAoc2VsZi5CeXRlc0lPKGIiYWJjZGVmIiksIHNlbGYuTW9ja1Jhd0lPKCkpCiAKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXNsaWtlKDUpCisgICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVzbGlrZShiJ1wwJyAqIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBhaXIsIG1ldGhvZCkoZGF0YSksIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhkYXRhKSwgYiJhYmNkZSIpCiAKQEAgLTMyNDYsOCArMzI3Niw3IEBACiAKIGNsYXNzIFB5VGV4dElPV3JhcHBlclRlc3QoVGV4dElPV3JhcHBlclRlc3QpOgogICAgIGlvID0gcHlpbwotICAgICNzaHV0ZG93bl9lcnJvciA9ICJMb29rdXBFcnJvcjogdW5rbm93biBlbmNvZGluZzogYXNjaWkiCi0gICAgc2h1dGRvd25fZXJyb3IgPSAiVHlwZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiCisgICAgc2h1dGRvd25fZXJyb3IgPSAiTG9va3VwRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IGFzY2lpIgogCiAKIGNsYXNzIEluY3JlbWVudGFsTmV3bGluZURlY29kZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKaW5kZXggOTFhZThkOC4uMGUzOTUxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKQEAgLTExOSw3ICsxMTksNyBAQAogCiAgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CiAgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKLSAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBhZGRyID0gYidcMCcgKiBsZW5ndGgKICAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKICAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKQEAgLTEzOSwxMSArMTM5LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMzIzMjIzNTUyMSwgIjo6YzBhODoxIikKIAogICAgIGRlZiB0ZXN0X3BhY2tlZChzZWxmKToKLSAgICAgICAgYWRkciA9IGJ5dGVzKDEyKSArIGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIikKKyAgICAgICAgYWRkciA9IGInXDAnKjEyICsgYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKQogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OiIpCi0gICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCisgICAgICAgIGFkZHIgPSBiJ1wwJyoxMiArIGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikKICAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjpjMGE4OjEiKQotICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGJ5dGVzKDEyKQorICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGInXDAnKjEyCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgImMwYTg6MTo6IikKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2ludHNfcmVqZWN0ZWQoc2VsZik6CkBAIC0xNTgsNyArMTU4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9wYWNrZWRfbGVuZ3RoKHNlbGYpOgogICAgICAgICBkZWYgYXNzZXJ0QmFkTGVuZ3RoKGxlbmd0aCk6Ci0gICAgICAgICAgICBhZGRyID0gYnl0ZXMobGVuZ3RoKQorICAgICAgICAgICAgYWRkciA9IGInXDAnICogbGVuZ3RoCiAgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAxNikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQpAQCAtMTE3Niw2ICsxMTc2LDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29ya1s1XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjo1JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuX19nZXRpdGVtX18sIDEgPDwgNjQpCiAKICAgICBkZWYgdGVzdEdldGl0ZW0oc2VsZik6CiAgICAgICAgICMgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lwYWRkci1weS9pc3N1ZXMvZGV0YWlsP2lkPTE1CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKaW5kZXggYTkxNjcwYi4uNTQyYjI4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQpAQCAtNTQsNiArNTQsMTQgQEAKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CiAgICAgICAgIHJldHVybiBpCiAKK2NsYXNzIERlZmF1bHRJdGVyQ2xhc3M6CisgICAgcGFzcworCitjbGFzcyBOb0l0ZXJDbGFzczoKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CisgICAgICAgIHJldHVybiBpCisgICAgX19pdGVyX18gPSBOb25lCisKICMgTWFpbiB0ZXN0IHN1aXRlCiAKIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTk5NSw2ICsxMDAzLDEwIEBACiAgICAgZGVmIHRlc3RfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZik6CiAgICAgICAgIGNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIFNlcXVlbmNlQ2xhc3MsICgwLCkpCiAKKyAgICBkZWYgdGVzdF9lcnJvcl9pdGVyKHNlbGYpOgorICAgICAgICBmb3IgdHlwIGluIChEZWZhdWx0SXRlckNsYXNzLCBOb0l0ZXJDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGl0ZXIsIHR5cCgpKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoVGVzdENhc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkKaW5kZXggMTUyZjVmYy4uNDFjOTc1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weQpAQCAtNDIsNyArNDIsNiBAQAogIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcmVwZWF0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBvcGVyYXRvciBpbXBvcnQgbGVuZ3RoX2hpbnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggMTQxNzkxYy4uZDIxZDhlZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgd2Vha3JlZgogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCiBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KLWltcG9ydCBzeXMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHJhbmRvbQogaW1wb3J0IGNvcHkKQEAgLTYzMSw2ICs2MzAsNTYgQEAKICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QocHJvdG8sIGN5Y2xlKCdhYmMnKSkKIAorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICMgdGVzdCB3aXRoIHBhcnRpYWwgY29uc3VtZWQgaW5wdXQgaXRlcmFibGUKKyAgICAgICAgICAgIGl0ID0gaXRlcignYWJjZGUnKQorICAgICAgICAgICAgYyA9IGN5Y2xlKGl0KQorICAgICAgICAgICAgXyA9IFtuZXh0KGMpIGZvciBpIGluIHJhbmdlKDIpXSAgICAgICMgY29uc3VtZSAyIG9mIDUgaW5wdXRzCisgICAgICAgICAgICBwID0gcGlja2xlLmR1bXBzKGMsIHByb3RvKQorICAgICAgICAgICAgZCA9IHBpY2tsZS5sb2FkcyhwKSAgICAgICAgICAgICAgICAgICMgcmVidWlsZCB0aGUgY3ljbGUgb2JqZWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGQpLCBsaXN0KCdjZGVhYmNkZWFiY2RlYWJjZGVhYicpKQorCisgICAgICAgICAgICAjIHRlc3Qgd2l0aCBjb21wbGV0ZWx5IGNvbnN1bWVkIGlucHV0IGl0ZXJhYmxlCisgICAgICAgICAgICBpdCA9IGl0ZXIoJ2FiY2RlJykKKyAgICAgICAgICAgIGMgPSBjeWNsZShpdCkKKyAgICAgICAgICAgIF8gPSBbbmV4dChjKSBmb3IgaSBpbiByYW5nZSg3KV0gICAgICAjIGNvbnN1bWUgNyBvZiA1IGlucHV0cworICAgICAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhjLCBwcm90bykKKyAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocCkgICAgICAgICAgICAgICAgICAjIHJlYnVpbGQgdGhlIGN5Y2xlIG9iamVjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBkKSwgbGlzdCgnY2RlYWJjZGVhYmNkZWFiY2RlYWInKSkKKworICAgIGRlZiB0ZXN0X2N5Y2xlX3NldHN0YXRlKHNlbGYpOgorICAgICAgICAjIFZlcmlmeSBib3RoIG1vZGVzIGZvciByZXN0b3Jpbmcgc3RhdGUKKworICAgICAgICAjIE1vZGUgMCBpcyBlZmZpY2llbnQuICBJdCB1c2VzIGFuIGluY29tcGxldGVseSBjb25zdW1lZCBpbnB1dAorICAgICAgICAjIGl0ZXJhdG9yIHRvIGJ1aWxkIGEgY3ljbGUgb2JqZWN0IGFuZCB0aGVuIHBhc3NlcyBpbiBzdGF0ZSB3aXRoCisgICAgICAgICMgYSBsaXN0IG9mIHByZXZpb3VzbHkgY29uc3VtZWQgdmFsdWVzLiAgVGhlcmUgaXMgbm8gZGF0YQorICAgICAgICAjIG92ZXJsYXAgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBjID0gY3ljbGUoJ2RlZmcnKQorICAgICAgICBjLl9fc2V0c3RhdGVfXygobGlzdCgnYWJjJyksIDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGMpLCBsaXN0KCdkZWZnYWJjZGVmZ2FiY2RlZmdhYicpKQorCisgICAgICAgICMgTW9kZSAxIGlzIGluZWZmaWNpZW50LiAgSXQgc3RhcnRzIHdpdGggYSBjeWNsZSBvYmplY3QgYnVpbHQKKyAgICAgICAgIyBmcm9tIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIHJlbWFpbmluZyBlbGVtZW50cyBpbiBhIHBhcnRpYWwKKyAgICAgICAgIyBjeWNsZSBhbmQgdGhlbiBwYXNzZXMgaW4gc3RhdGUgd2l0aCBhbGwgb2YgdGhlIHByZXZpb3VzbHkKKyAgICAgICAgIyBzZWVuIHZhbHVlcyAodGhpcyBvdmVybGFwcyB2YWx1ZXMgaW5jbHVkZWQgaW4gdGhlIGl0ZXJhdG9yKS4KKyAgICAgICAgYyA9IGN5Y2xlKCdkZWZnJykKKyAgICAgICAgYy5fX3NldHN0YXRlX18oKGxpc3QoJ2FiY2RlZmcnKSwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgYyksIGxpc3QoJ2RlZmdhYmNkZWZnYWJjZGVmZ2FiJykpCisKKyAgICAgICAgIyBUaGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0c3RhdGUgbmVlZHMgdG8gYmUgYSB0dXBsZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKToKKyAgICAgICAgICAgIGN5Y2xlKCdkZWZnJykuX19zZXRzdGF0ZV9fKFtsaXN0KCdhYmNkZWZnJyksIDBdKQorCisgICAgICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBzZXRzdGF0ZSB0dXBsZSBtdXN0IGJlIGEgbGlzdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjID0gY3ljbGUoJ2RlZmcnKQorICAgICAgICAgICAgYy5fX3NldHN0YXRlX18oKGRpY3QuZnJvbWtleXMoJ2RlZmcnKSwgMCkpCisgICAgICAgICAgICB0YWtlKDIwLCBjKQorCisgICAgICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBzZXRzdGF0ZSB0dXBsZSBtdXN0IGJlIGEgbGlzdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjeWNsZSgnZGVmZycpLl9fc2V0c3RhdGVfXygobGlzdCgnYWJjZGVmZycpLCAneCcpKQorCiAgICAgZGVmIHRlc3RfZ3JvdXBieShzZWxmKToKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IGFjY2VwdHMgYXJndW1lbnRzIGNvcnJlY3RseQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBsaXN0KGdyb3VwYnkoW10pKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQppbmRleCAwODA3ZTZmLi5iYWMzNzBkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQganNvbgogaW1wb3J0IGRvY3Rlc3QKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CmluZGV4IGZkYWZlYjYuLjdlNTY4YmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKQEAgLTcyLDEwICs3Miw4IEBACiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2lucHV0X3R5cGUoc2VsZik6CiAgICAgICAgIG1zZyA9ICd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHInCi0gICAgICAgIGZvciB2YWx1ZSBpbiBbMSwgMy4xNCwgYidieXRlcycsIGInXHhmZlx4MDAnLCBbXSwge30sIE5vbmVdOgorICAgICAgICBmb3IgdmFsdWUgaW4gWzEsIDMuMTQsIFtdLCB7fSwgTm9uZV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnLCBzZWxmLmxvYWRzLCB2YWx1ZSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKLSAgICAgICAgICAgIHNlbGYuanNvbi5sb2FkKEJ5dGVzSU8oYidbMSwyLDNdJykpCiAKICAgICBkZWYgdGVzdF9zdHJpbmdfd2l0aF91dGY4X2JvbShzZWxmKToKICAgICAgICAgIyBzZWUgIzE4OTU4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQppbmRleCA5NWZmNWI4Li43OTEwNTIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIHRlc3QudGVzdF9qc29uIGltcG9ydCBQeVRlc3QsIENUZXN0Ci1pbXBvcnQgcmUKIAogIyAyMDA3LTEwLTA1CiBKU09ORE9DUyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF91bmljb2RlLnB5CmluZGV4IGM3Y2M4YTcuLmVkYTE3N2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBjb2RlY3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIHRlc3QudGVzdF9qc29uIGltcG9ydCBQeVRlc3QsIENUZXN0CiAKQEAgLTUyLDkgKzUzLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kdW1wcywgW2IiaGkiXSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzX2RlY29kZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvYWRzLCBiJyJoaSInKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9hZHMsIGInWyJoaSJdJykKLQorICAgICAgICBmb3IgZW5jb2RpbmcsIGJvbSBpbiBbCisgICAgICAgICAgICAgICAgKCd1dGYtOCcsIGNvZGVjcy5CT01fVVRGOCksCisgICAgICAgICAgICAgICAgKCd1dGYtMTZiZScsIGNvZGVjcy5CT01fVVRGMTZfQkUpLAorICAgICAgICAgICAgICAgICgndXRmLTE2bGUnLCBjb2RlY3MuQk9NX1VURjE2X0xFKSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0zMmJlJywgY29kZWNzLkJPTV9VVEYzMl9CRSksCisgICAgICAgICAgICAgICAgKCd1dGYtMzJsZScsIGNvZGVjcy5CT01fVVRGMzJfTEUpLAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgIGRhdGEgPSBbImFceGI1XHUyMGFjXFUwMDAxZDEyMCJdCisgICAgICAgICAgICBlbmNvZGVkID0gc2VsZi5kdW1wcyhkYXRhKS5lbmNvZGUoZW5jb2RpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoYm9tICsgZW5jb2RlZCksIGRhdGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoZW5jb2RlZCksIGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgc2VsZi5sb2FkcywgYidbIlx4ODAiXScpCiAKICAgICBkZWYgdGVzdF9vYmplY3RfcGFpcnNfaG9va193aXRoX3VuaWNvZGUoc2VsZik6CiAgICAgICAgIHMgPSAneyJ4a2QiOjEsICJrY3ciOjIsICJhcnQiOjMsICJoeG0iOjQsICJxcnQiOjUsICJwYWQiOjYsICJob3kiOjd9JwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQppbmRleCBmODIyMDI0Li45ZjQ5ODg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weSBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CmluZGV4IDQ3ZTJlZGQuLjM3NWQ5YzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CkBAIC0zLDYgKzMsOCBAQAogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdG9rZW5pemUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKQEAgLTEwLDggKzEyLDYgQEAKIE5PTkVYSVNURU5UX0ZJTEVOQU1FID0gRklMRU5BTUUgKyAnLm1pc3NpbmcnCiBJTlZBTElEX05BTUUgPSAnIUAkKSghQCNfMScKIEVNUFRZID0gJycKLVRFU1RTID0gJ2luc3BlY3RfZm9kZGVyIGluc3BlY3RfZm9kZGVyMiBtYXBwaW5nX3Rlc3RzJwotVEVTVFMgPSBURVNUUy5zcGxpdCgpCiBURVNUX1BBVEggPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCiBNT0RVTEVTID0gImxpbmVjYWNoZSBhYmMiLnNwbGl0KCkKIE1PRFVMRV9QQVRIID0gb3MucGF0aC5kaXJuYW1lKEZJTEVOQU1FKQpAQCAtMzcsNiArMzcsNjUgQEAKICAgICByZXR1cm4gMycnJyAjIE5vIGVuZGluZyBuZXdsaW5lCiAKIAorY2xhc3MgVGVtcEZpbGU6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpIGFzIGZwOgorICAgICAgICAgICAgc2VsZi5maWxlX25hbWUgPSBmcC5uYW1lCisgICAgICAgICAgICBmcC53cml0ZShzZWxmLmZpbGVfYnl0ZV9zdHJpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi5maWxlX25hbWUpCisKKworY2xhc3MgR2V0TGluZVRlc3RzR29vZERhdGEoVGVtcEZpbGUpOgorICAgICMgZmlsZV9saXN0ICAgPSBbJ2xpc3RcbicsICdvZlxuJywgJ2dvb2RcbicsICdzdHJpbmdzXG4nXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfYnl0ZV9zdHJpbmcgPSAnJy5qb2luKHNlbGYuZmlsZV9saXN0KS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgorICAgICAgICB3aXRoIHRva2VuaXplLm9wZW4oc2VsZi5maWxlX25hbWUpIGFzIGZwOgorICAgICAgICAgICAgZm9yIGluZGV4LCBsaW5lIGluIGVudW1lcmF0ZShmcCk6CisgICAgICAgICAgICAgICAgaWYgbm90IGxpbmUuZW5kc3dpdGgoJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gJ1xuJworCisgICAgICAgICAgICAgICAgY2FjaGVkX2xpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShzZWxmLmZpbGVfbmFtZSwgaW5kZXggKyAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgY2FjaGVkX2xpbmUpCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lcyhzZWxmKToKKyAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoc2VsZi5maWxlX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIHNlbGYuZmlsZV9saXN0KQorCisKK2NsYXNzIEdldExpbmVUZXN0c0JhZERhdGEoVGVtcEZpbGUpOgorICAgICMgZmlsZV9ieXRlX3N0cmluZyA9IGInQmFkIGRhdGEgZ29lcyBoZXJlJworCisgICAgZGVmIHRlc3RfZ2V0bGluZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFN5bnRheEVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZSwgc2VsZi5maWxlX25hbWUsIDEpCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFN5bnRheEVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZXMsIHNlbGYuZmlsZV9uYW1lKQorCisKK2NsYXNzIEVtcHR5RmlsZShHZXRMaW5lVGVzdHNHb29kRGF0YSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZpbGVfbGlzdCA9IFtdCisKKworY2xhc3MgU2luZ2xlRW1wdHlMaW5lKEdldExpbmVUZXN0c0dvb2REYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9saXN0ID0gWydcbiddCisKKworY2xhc3MgR29vZFVuaWNvZGUoR2V0TGluZVRlc3RzR29vZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2xpc3QgPSBbJ8OhXG4nLCAnYlxuJywgJ2FiY2RlZlxuJywgJ8Ohw6HDocOhw6FcbiddCisKKworY2xhc3MgQmFkVW5pY29kZShHZXRMaW5lVGVzdHNCYWREYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9ieXRlX3N0cmluZyA9IGInXHg4MGFiYycKKworCiBjbGFzcyBMaW5lQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgpAQCAtNTMsMTMgKzExMiw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0bGluZShFTVBUWSwgMSksIEVNUFRZKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGxpbmUoSU5WQUxJRF9OQU1FLCAxKSwgRU1QVFkpCiAKLSAgICAgICAgIyBDaGVjayB3aGV0aGVyIGxpbmVzIGNvcnJlc3BvbmQgdG8gdGhvc2UgZnJvbSBmaWxlIGl0ZXJhdGlvbgotICAgICAgICBmb3IgZW50cnkgaW4gVEVTVFM6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihURVNUX1BBVEgsIGVudHJ5KSArICcucHknCi0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZm9yIGluZGV4LCBsaW5lIGluIGVudW1lcmF0ZShmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBnZXRsaW5lKGZpbGVuYW1lLCBpbmRleCArIDEpKQotCiAgICAgICAgICMgQ2hlY2sgbW9kdWxlIGxvYWRpbmcKICAgICAgICAgZm9yIGVudHJ5IGluIE1PRFVMRVM6CiAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihNT0RVTEVfUEFUSCwgZW50cnkpICsgJy5weScKQEAgLTgwLDEyICsxMzIsMTMgQEAKIAogICAgIGRlZiB0ZXN0X2NsZWFyY2FjaGUoc2VsZik6CiAgICAgICAgIGNhY2hlZCA9IFtdCi0gICAgICAgIGZvciBlbnRyeSBpbiBURVNUUzoKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFU1RfUEFUSCwgZW50cnkpICsgJy5weScKKyAgICAgICAgZm9yIGVudHJ5IGluIE1PRFVMRVM6CisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihNT0RVTEVfUEFUSCwgZW50cnkpICsgJy5weScKICAgICAgICAgICAgIGNhY2hlZC5hcHBlbmQoZmlsZW5hbWUpCiAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgMSkKIAogICAgICAgICAjIEFyZSBhbGwgZmlsZXMgY2FjaGVkPworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNhY2hlZCwgW10pCiAgICAgICAgIGNhY2hlZF9lbXB0eSA9IFtmbiBmb3IgZm4gaW4gY2FjaGVkIGlmIGZuIG5vdCBpbiBsaW5lY2FjaGUuY2FjaGVdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FjaGVkX2VtcHR5LCBbXSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CmluZGV4IDhmODJhYjUuLmFlZTYyZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIGxpc3RfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgbGlzdF90ZXN0cwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQppbmRleCA4NTM0NGRlLi5lNDVhOTgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CkBAIC0yNiw2ICsyNiw3IEBACiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgY29uZmlncGFyc2VyCiBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgaW8KIGltcG9ydCBnYwpAQCAtMzA4LDYgKzMwOSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKCdJTkZPJyksIGxvZ2dpbmcuSU5GTykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExldmVsTmFtZShsb2dnaW5nLklORk8pLCAnSU5GTycpCiAKKyAgICBkZWYgdGVzdF9pc3N1ZTI3OTM1KHNlbGYpOgorICAgICAgICBmYXRhbCA9IGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKCdGQVRBTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmF0YWwsIGxvZ2dpbmcuRkFUQUwpCisKIGNsYXNzIEJhc2ljRmlsdGVyVGVzdChCYXNlVGVzdCk6CiAKICAgICAiIiJUZXN0IHRoZSBidW5kbGVkIEZpbHRlciBjbGFzcy4iIiIKQEAgLTU3NSw2ICs1ODAsMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoLnNob3VsZEZsdXNoKHIpKQogICAgICAgICBoLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3BhdGhfb2JqZWN0cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBQYXRoIG9iamVjdHMgYXJlIGFjY2VwdGVkIGFzIGZpbGVuYW1lIGFyZ3VtZW50cyB0byBoYW5kbGVycy4KKworICAgICAgICBTZWUgSXNzdWUgIzI3NDkzLgorICAgICAgICAiIiIKKyAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgIHBmbiA9IHBhdGhsaWIuUGF0aChmbikKKyAgICAgICAgY2FzZXMgPSAoCisgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nLkZpbGVIYW5kbGVyLCAocGZuLCAndycpKSwKKyAgICAgICAgICAgICAgICAgICAgKGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlciwgKHBmbiwgJ2EnKSksCisgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwgKHBmbiwgJ2gnKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdsaW51eCcsICdkYXJ3aW4nKToKKyAgICAgICAgICAgIGNhc2VzICs9ICgobG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIsIChwZm4sICd3JykpLCkKKyAgICAgICAgZm9yIGNscywgYXJncyBpbiBjYXNlczoKKyAgICAgICAgICAgIGggPSBjbHMoKmFyZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgaC5jbG9zZSgpCisgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisKICAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ1dhdGNoZWRGaWxlSGFuZGxlciBub3QgYXBwcm9wcmlhdGUgZm9yIFdpbmRvd3MuJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X3JhY2Uoc2VsZik6CkBAIC05NTgsNyArOTg2LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCiAgICAgICAgIHNlbGYubWVtX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLk1lbW9yeUhhbmRsZXIoMTAsIGxvZ2dpbmcuV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290X2hkbHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290X2hkbHIpCiAgICAgICAgIHNlbGYubWVtX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdtZW0nKQogICAgICAgICBzZWxmLm1lbV9sb2dnZXIucHJvcGFnYXRlID0gMAogICAgICAgICBzZWxmLm1lbV9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLm1lbV9oZGxyKQpAQCAtOTk1LDYgKzEwMjMsMzYgQEAKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmRlYnVnKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykKIAorICAgIGRlZiB0ZXN0X2ZsdXNoX29uX2Nsb3NlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBmbHVzaC1vbi1jbG9zZSBjb25maWd1cmF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmRlYnVnKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmluZm8oc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLm1lbV9oZGxyKQorICAgICAgICAjIERlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGZsdXNoIG9uIGNsb3NlLiBDaGVjayB0aGF0IGl0IGhhcHBlbnMuCisgICAgICAgIHNlbGYubWVtX2hkbHIuY2xvc2UoKQorICAgICAgICBsaW5lcyA9IFsKKyAgICAgICAgICAgICgnREVCVUcnLCAnMScpLAorICAgICAgICAgICAgKCdJTkZPJywgJzInKSwKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpCisgICAgICAgICMgTm93IGNvbmZpZ3VyZSBmb3IgZmx1c2hpbmcgbm90IHRvIGJlIGRvbmUgb24gY2xvc2UuCisgICAgICAgIHNlbGYubWVtX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLk1lbW9yeUhhbmRsZXIoMTAsIGxvZ2dpbmcuV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3RfaGRsciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5tZW1faGRscikKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmRlYnVnKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykgICMgbm8gY2hhbmdlCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykgICMgbm8gY2hhbmdlCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYubWVtX2hkbHIpCisgICAgICAgIHNlbGYubWVtX2hkbHIuY2xvc2UoKQorICAgICAgICAjIGFzc2VydCB0aGF0IG5vIG5ldyBsaW5lcyBoYXZlIGJlZW4gYWRkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKSAgIyBubyBjaGFuZ2UKKwogCiBjbGFzcyBFeGNlcHRpb25Gb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIpOgogICAgICIiIkEgc3BlY2lhbCBleGNlcHRpb24gZm9ybWF0dGVyLiIiIgpAQCAtNDIzOSw2ICs0Mjk3LDE3IEBACiAgICAgICAgIG1zZyA9ICdSZWNvcmQgbm90IGZvdW5kIGluIGV2ZW50IGxvZywgd2VudCBiYWNrICVkIHJlY29yZHMnICUgR09fQkFDSwogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIG1zZz1tc2cpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnbG9nVGhyZWFkcycsICdsb2dNdWx0aXByb2Nlc3NpbmcnLAorICAgICAgICAgICAgICAgICAgICAgJ2xvZ1Byb2Nlc3NlcycsICdjdXJyZW50ZnJhbWUnLAorICAgICAgICAgICAgICAgICAgICAgJ1BlcmNlbnRTdHlsZScsICdTdHJGb3JtYXRTdHlsZScsICdTdHJpbmdUZW1wbGF0ZVN0eWxlJywKKyAgICAgICAgICAgICAgICAgICAgICdGaWx0ZXJlcicsICdQbGFjZUhvbGRlcicsICdNYW5hZ2VyJywgJ1Jvb3RMb2dnZXInLAorICAgICAgICAgICAgICAgICAgICAgJ3Jvb3QnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBsb2dnaW5nLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKICMgU2V0IHRoZSBsb2NhbGUgdG8gdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBkZWZhdWx0LiAgSSBoYXZlIG5vIGlkZWEKICMgd2h5IHRoZSB0ZXN0IGRvZXMgdGhpcywgYnV0IGluIGFueSBjYXNlIHdlIHNhdmUgdGhlIGN1cnJlbnQgbG9jYWxlCiAjIGZpcnN0IGFuZCByZXN0b3JlIGl0IGF0IHRoZSBlbmQuCkBAIC00MjU2LDYgKzQzMjUsNyBAQAogICAgICAgICBFeGNlcHRpb25UZXN0LCBTeXNMb2dIYW5kbGVyVGVzdCwgSFRUUEhhbmRsZXJUZXN0LAogICAgICAgICBOVEV2ZW50TG9nSGFuZGxlclRlc3QsIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsCiAgICAgICAgIFVuaXhTb2NrZXRIYW5kbGVyVGVzdCwgVW5peERhdGFncmFtSGFuZGxlclRlc3QsIFVuaXhTeXNMb2dIYW5kbGVyVGVzdCwKKyAgICAgICAgTWlzY1Rlc3RDYXNlCiAgICAgXQogICAgIGlmIGhhc2F0dHIobG9nZ2luZy5oYW5kbGVycywgJ1F1ZXVlTGlzdGVuZXInKToKICAgICAgICAgdGVzdHMuYXBwZW5kKFF1ZXVlTGlzdGVuZXJUZXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CmluZGV4IDRiMmQ4MWMuLmZkMTVmMDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKQEAgLTYyMSw2ICs2MjEsOCBAQAogICAgIGRlZiB0ZXN0X19mb3JtYXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5LCAnZCcpLCAnMTIzNDU2Nzg5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5LCAnZCcpLCAnMTIzNDU2Nzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5LCAnLCcpLCAnMTIzLDQ1Niw3ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICdfJyksICcxMjNfNDU2Xzc4OScpCiAKICAgICAgICAgIyBzaWduIGFuZCBhbGlnbmluZyBhcmUgaW50ZXJkZXBlbmRlbnQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSwgIi0iKSwgJzEnKQpAQCAtNjQ5LDggKzY1MSwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdChpbnQoJ2JlJywgMTYpLCAiWCIpLCAiQkUiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtaW50KCdiZScsIDE2KSwgIngiKSwgIi1iZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC1pbnQoJ2JlJywgMTYpLCAiWCIpLCAiLUJFIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAxMjM0NTY3ODkwLCAnLHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODkwLCAnX3gnKSwgJzQ5OTZfMDJkMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OTAsICdfWCcpLCAnNDk5Nl8wMkQyJykKIAogICAgICAgICAjIG9jdGFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDMsICJvIiksICIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTMsICJvIiksICItMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICJvIiksICIyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICJvIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICItbyIpLCAiMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiLW8iKSwgIi0yMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIiBvIiksICIgMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiIG8iKSwgIi0yMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIitvIiksICIrMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiK28iKSwgIi0yMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAxMjM0NTY3ODkwLCAnLG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODkwLCAnX28nKSwgJzExMV80NTQwXzEzMjInKQorCisgICAgICAgICMgYmluYXJ5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDMsICJiIiksICIxMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0zLCAiYiIpLCAiLTExIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgImIiKSwgIjEwMDExMDEwMDEwIikKQEAgLTY2MSwxMiArNjgwLDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiIGIiKSwgIi0xMDAxMTAxMDAxMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICIrYiIpLCAiKzEwMDExMDEwMDEwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIrYiIpLCAiLTEwMDExMDEwMDEwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAxMjM0NTY3ODkwLCAnLGInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NSwgJ19iJyksICcxMV8wMDAwXzAwMTFfMTAwMScpCiAKICAgICAgICAgIyBtYWtlIHN1cmUgdGhlc2UgYXJlIGVycm9ycwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDMsICIxLjMiKSAgIyBwcmVjaXNpb24gZGlzYWxsb3dlZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDMsICJfYyIpICAgIyB1bmRlcnNjb3JlLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDMsICIsYyIpICAgIyBjb21tYSwgYW5kCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIitjIikgICAjIHNpZ24gbm90IGFsbG93ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCAnYycKIAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdDYW5ub3Qgc3BlY2lmeSBib3RoJywgZm9ybWF0LCAzLCAnXywnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdDYW5ub3Qgc3BlY2lmeSBib3RoJywgZm9ybWF0LCAzLCAnLF8nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdDYW5ub3Qgc3BlY2lmeSBib3RoJywgZm9ybWF0LCAzLCAnXyxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJyxfZCcpCisKICAgICAgICAgIyBlbnN1cmUgdGhhdCBvbmx5IGludCBhbmQgZmxvYXQgdHlwZSBzcGVjaWZpZXJzIHdvcmsKICAgICAgICAgZm9yIGZvcm1hdF9zcGVjIGluIChbY2hyKHgpIGZvciB4IGluIHJhbmdlKG9yZCgnYScpLCBvcmQoJ3onKSsxKV0gKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaHIoeCkgZm9yIHggaW4gcmFuZ2Uob3JkKCdBJyksIG9yZCgnWicpKzEpXSk6CkBAIC02ODksNiArNzE3LDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgZmxvYXQoJy1pbmYnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBmbG9hdCgnbmFuJykpCiAKKyAgICBkZWYgdGVzdF9tb2RfZGl2aXNpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgXyA9IDEgJSAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMyAlIDEwLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMyAlIDEwLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEzICUgLTEwLCAtNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTMgJSAtMTAsIC0zKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIgJSA0LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAlIDQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIgJSAtNCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgJSAtNCwgMCkKKwogICAgIGRlZiB0ZXN0X3RydWVfZGl2aXNpb24oc2VsZik6CiAgICAgICAgIGh1Z2UgPSAxIDw8IDQwMDAwCiAgICAgICAgIG1odWdlID0gLWh1Z2UKQEAgLTcyMyw2ICs3NjUsMjUgQEAKICAgICAgICAgZm9yIHplcm8gaW4gWyJodWdlIC8gMCIsICJtaHVnZSAvIDAiXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBldmFsLCB6ZXJvLCBuYW1lc3BhY2UpCiAKKyAgICBkZWYgdGVzdF9mbG9vcmRpdihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBfID0gMSAvLyAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyIC8vIDMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAvLyAtMywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTIgLy8gMywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTIgLy8gLTMsIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTEgLy8gLTMsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTExIC8vIDMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDExIC8vIC0zLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMSAvLyAzLCAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyIC8vIC0zLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAvLyAzLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAvLyAtMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIgLy8gMywgNCkKKwogICAgIGRlZiBjaGVja190cnVlZGl2KHNlbGYsIGEsIGIsIHNraXBfc21hbGw9VHJ1ZSk6CiAgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSByZXN1bHQgb2YgYS9iIGlzIGNvcnJlY3RseSByb3VuZGVkLCBieQogICAgICAgICBjb21wYXJpbmcgaXQgd2l0aCBhIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGNvcnJlY3RseQpAQCAtODQ1LDYgKzkwNiwyMSBAQAogICAgICAgICAgICAgc2VsZi5jaGVja190cnVlZGl2KC14LCB5KQogICAgICAgICAgICAgc2VsZi5jaGVja190cnVlZGl2KC14LCAteSkKIAorICAgIGRlZiB0ZXN0X2xzaGlmdF9vZl96ZXJvKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgPDwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwIDw8IDEwLCAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgMCA8PCAtMQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfaHVnZV9sc2hpZnRfb2ZfemVybyhzZWxmKToKKyAgICAgICAgIyBTaG91bGRuJ3QgdHJ5IHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgYSBodWdlIHNoaWZ0LiBTZWUgaXNzdWUgIzI3ODcwLgorICAgICAgICAjIE90aGVyIGltcGxlbWVudGF0aW9ucyBtYXkgaGF2ZSBhIGRpZmZlcmVudCBib3VuZGFyeSBmb3Igb3ZlcmZsb3csCisgICAgICAgICMgb3Igbm90IHJhaXNlIGF0IGFsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwIDw8IHN5cy5tYXhzaXplLCAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgMCA8PCAoc3lzLm1heHNpemUgKyAxKQorCiAgICAgZGVmIHRlc3Rfc21hbGxfaW50cyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDI1Nyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGksIGkgKyAwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sem1hLnB5IGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CmluZGV4IDZjNjk4ZTIuLmQzMTBiZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKQEAgLTkyOCwxMSArOTI4LDExIEBACiAKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2xpbWl0ZWQoc2VsZik6CiAgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgotICAgICAgICBib21iID0gbHptYS5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIHByZXNldD02KQorICAgICAgICBib21iID0gbHptYS5jb21wcmVzcyhiJ1wwJyAqIGludCgyZTYpLCBwcmVzZXQ9NikKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFKQogCiAgICAgICAgIGRlY29tcCA9IExaTUFGaWxlKEJ5dGVzSU8oYm9tYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29tcC5yZWFkKDEpLCBiJ1wwJykKICAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCiAgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CmluZGV4IDgwYmVjN2EuLjA2OThmZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgbWFjcGF0aAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCB0ZXN0X2dlbmVyaWNwYXRoCitmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZ2VuZXJpY3BhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQppbmRleCAwOTkxZjc0Li5hZWFiZGJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CkBAIC03LDE3ICs3LDEyIEBACiBpbXBvcnQgZW1haWwubWVzc2FnZQogaW1wb3J0IHJlCiBpbXBvcnQgaW8KLWltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IG1haWxib3gKIGltcG9ydCBnbG9iCi10cnk6Ci0gICAgaW1wb3J0IGZjbnRsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwogCiAKIGNsYXNzIFRlc3RCYXNlOgpAQCAtMjI3MywxMiArMjI2OCwxOCBAQAogIiIiKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7ImxpbmVzZXAiLCAiZmNudGwifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBtYWlsYm94LCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IChUZXN0TWFpbGJveFN1cGVyY2xhc3MsIFRlc3RNYWlsZGlyLCBUZXN0TWJveCwgVGVzdE1NREYsIFRlc3RNSCwKICAgICAgICAgICAgICBUZXN0QmFieWwsIFRlc3RNZXNzYWdlLCBUZXN0TWFpbGRpck1lc3NhZ2UsIFRlc3RNYm94TWVzc2FnZSwKICAgICAgICAgICAgICBUZXN0TUhNZXNzYWdlLCBUZXN0QmFieWxNZXNzYWdlLCBUZXN0TU1ERk1lc3NhZ2UsCiAgICAgICAgICAgICAgVGVzdE1lc3NhZ2VDb252ZXJzaW9uLCBUZXN0UHJveHlGaWxlLCBUZXN0UGFydGlhbEZpbGUsCi0gICAgICAgICAgICAgTWFpbGRpclRlc3RDYXNlLCBUZXN0RmFrZU1haWxCb3gpCisgICAgICAgICAgICAgTWFpbGRpclRlc3RDYXNlLCBUZXN0RmFrZU1haWxCb3gsIE1pc2NUZXN0Q2FzZSkKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CmluZGV4IGE4NWM2OTEuLmMwODQyM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgbWFpbGNhcAogaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgY29weQogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xMjMsNyArMTIyLDcgQEAKICAgICAgICAgICAgIChbImVjaG8gZm9vIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBmb28iKSwKICAgICAgICAgICAgIChbImVjaG8gJXMiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvby50eHQiKSwKICAgICAgICAgICAgIChbImVjaG8gJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGF1ZGlvLyoiKSwKLSAgICAgICAgICAgIChbImVjaG8gXCV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyAldCIpLAorICAgICAgICAgICAgKFsiZWNobyBcXCV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyAldCIpLAogICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyBmb28iKSwKICAgICAgICAgICAgIChbImVjaG8gJXt0b3RhbH0iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyAzIikKICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CmluZGV4IGM3ZGVmOWEuLmIzNzhmZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKQEAgLTEzNSw2ICsxMzUsMTMgQEAKICAgICAgICAgZm9yIGNvbnN0cnVjdG9yIGluIChzZXQsIGZyb3plbnNldCk6CiAgICAgICAgICAgICBzZWxmLmhlbHBlcihjb25zdHJ1Y3RvcihzZWxmLmQua2V5cygpKSkKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2VtcHR5X2Zyb3plbnNldF9zaW5nbGV0b24oc2VsZik6CisgICAgICAgICMgbWFyc2hhbC5sb2FkcygpIG11c3QgcmV1c2UgdGhlIGVtcHR5IGZyb3plbnNldCBzaW5nbGV0b24KKyAgICAgICAgb2JqID0gZnJvemVuc2V0KCkKKyAgICAgICAgb2JqMiA9IG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcyhvYmopKQorICAgICAgICBzZWxmLmFzc2VydElzKG9iajIsIG9iaikKKwogCiBjbGFzcyBCdWZmZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgSGVscGVyTWl4aW4pOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hdGgucHkgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKaW5kZXggYTM3OWE2YS4uZWFhNDFiYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQpAQCAtNywxNCArNywxNSBAQAogaW1wb3J0IG1hdGgKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiAKIGVwcyA9IDFFLTA1CiBOQU4gPSBmbG9hdCgnbmFuJykKIElORiA9IGZsb2F0KCdpbmYnKQogTklORiA9IGZsb2F0KCctaW5mJykKK0ZMT0FUX01BWCA9IHN5cy5mbG9hdF9pbmZvLm1heAogCiAjIGRldGVjdCBldmlkZW5jZSBvZiBkb3VibGUtcm91bmRpbmc6IGZzdW0gaXMgbm90IGFsd2F5cyBjb3JyZWN0bHkKICMgcm91bmRlZCBvbiBtYWNoaW5lcyB0aGF0IHN1ZmZlciBmcm9tIGRvdWJsZSByb3VuZGluZy4KQEAgLTMwLDYgKzMxLDcgQEAKIG1hdGhfdGVzdGNhc2VzID0gb3MucGF0aC5qb2luKHRlc3RfZGlyLCAnbWF0aF90ZXN0Y2FzZXMudHh0JykKIHRlc3RfZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJ2NtYXRoX3Rlc3RjYXNlcy50eHQnKQogCisKIGRlZiB0b191bHBzKHgpOgogICAgICIiIkNvbnZlcnQgYSBub24tTmFOIGZsb2F0IHggdG8gYW4gaW50ZWdlciwgaW4gc3VjaCBhIHdheSB0aGF0CiAgICAgYWRqYWNlbnQgZmxvYXRzIGFyZSBjb252ZXJ0ZWQgdG8gYWRqYWNlbnQgaW50ZWdlcnMuICBUaGVuCkBAIC0zNywyNSArMzksMzkgQEAKICAgICBmbG9hdHMuCiAKICAgICBUaGUgcmVzdWx0cyBmcm9tIHRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IG1ha2Ugc2Vuc2Ugb24gcGxhdGZvcm1zCi0gICAgd2hlcmUgQyBkb3VibGVzIGFyZSByZXByZXNlbnRlZCBpbiBJRUVFIDc1NCBiaW5hcnk2NCBmb3JtYXQuCisgICAgd2hlcmUgbmF0aXZlIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KIAorICAgIE5vdGU6IDAuMCBhbmQgLTAuMCBhcmUgY29udmVydGVkIHRvIDAgYW5kIC0xLCByZXNwZWN0aXZlbHkuCiAgICAgIiIiCiAgICAgbiA9IHN0cnVjdC51bnBhY2soJzxxJywgc3RydWN0LnBhY2soJzxkJywgeCkpWzBdCiAgICAgaWYgbiA8IDA6CiAgICAgICAgIG4gPSB+KG4rMioqNjMpCiAgICAgcmV0dXJuIG4KIAotZGVmIHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwcz0yMCk6Ci0gICAgIiIiR2l2ZW4gbm9uLU5hTiBmbG9hdHMgYGV4cGVjdGVkYCBhbmQgYGdvdGAsCi0gICAgY2hlY2sgdGhhdCB0aGV5J3JlIGVxdWFsIHRvIHdpdGhpbiB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVscHMuCiAKLSAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLiIiIgorZGVmIHVscCh4KToKKyAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgYQorICAgIGZsb2F0IHgsIHN1Y2ggdGhhdCB0aGUgZmlyc3QgZmxvYXQgYmlnZ2VyIHRoYW4geCBpcyB4K3VscCh4KS4KKyAgICBUaGVuLCBnaXZlbiBhbiBleHBlY3RlZCByZXN1bHQgeCBhbmQgYSB0b2xlcmFuY2Ugb2YgbiB1bHBzLAorICAgIHRoZSByZXN1bHQgeSBzaG91bGQgYmUgc3VjaCB0aGF0IGFicyh5LXgpIDw9IG4gKiB1bHAoeCkuCisgICAgVGhlIHJlc3VsdHMgZnJvbSB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcworICAgIHdoZXJlIG5hdGl2ZSBkb3VibGVzIGFyZSByZXByZXNlbnRlZCBpbiBJRUVFIDc1NCBiaW5hcnk2NCBmb3JtYXQuCisgICAgIiIiCisgICAgeCA9IGFicyhmbG9hdCh4KSkKKyAgICBpZiBtYXRoLmlzbmFuKHgpIG9yIG1hdGguaXNpbmYoeCk6CisgICAgICAgIHJldHVybiB4CiAKLSAgICB1bHBzX2Vycm9yID0gdG9fdWxwcyhnb3QpIC0gdG9fdWxwcyhleHBlY3RlZCkKLSAgICBpZiBhYnModWxwc19lcnJvcikgPD0gdWxwczoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gImVycm9yID0ge30gdWxwczsgcGVybWl0dGVkIGVycm9yID0ge30gdWxwcyIuZm9ybWF0KHVscHNfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bHBzKQorICAgICMgRmluZCBuZXh0IGZsb2F0IHVwIGZyb20geC4KKyAgICBuID0gc3RydWN0LnVucGFjaygnPHEnLCBzdHJ1Y3QucGFjaygnPGQnLCB4KSlbMF0KKyAgICB4X25leHQgPSBzdHJ1Y3QudW5wYWNrKCc8ZCcsIHN0cnVjdC5wYWNrKCc8cScsIG4gKyAxKSlbMF0KKyAgICBpZiBtYXRoLmlzaW5mKHhfbmV4dCk6CisgICAgICAgICMgQ29ybmVyIGNhc2U6IHggd2FzIHRoZSBsYXJnZXN0IGZpbml0ZSBmbG9hdC4gVGhlbiBpdCdzCisgICAgICAgICMgbm90IGFuIGV4YWN0IHBvd2VyIG9mIHR3bywgc28gd2UgY2FuIHRha2UgdGhlIGRpZmZlcmVuY2UKKyAgICAgICAgIyBiZXR3ZWVuIHggYW5kIHRoZSBwcmV2aW91cyBmbG9hdC4KKyAgICAgICAgeF9wcmV2ID0gc3RydWN0LnVucGFjaygnPGQnLCBzdHJ1Y3QucGFjaygnPHEnLCBuIC0gMSkpWzBdCisgICAgICAgIHJldHVybiB4IC0geF9wcmV2CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHhfbmV4dCAtIHgKIAogIyBIZXJlJ3MgYSBwdXJlIFB5dGhvbiB2ZXJzaW9uIG9mIHRoZSBtYXRoLmZhY3RvcmlhbCBhbGdvcml0aG0sIGZvcgogIyBkb2N1bWVudGF0aW9uIGFuZCBjb21wYXJpc29uIHB1cnBvc2VzLgpAQCAtMTA3LDI0ICsxMjMsMjMgQEAKICAgICAgICAgb3V0ZXIgKj0gaW5uZXIKICAgICByZXR1cm4gb3V0ZXIgPDwgKG4gLSBjb3VudF9zZXRfYml0cyhuKSkKIAotZGVmIGFjY19jaGVjayhleHBlY3RlZCwgZ290LCByZWxfZXJyPTJlLTE1LCBhYnNfZXJyID0gNWUtMzIzKToKLSAgICAiIiJEZXRlcm1pbmUgd2hldGhlciBub24tTmFOIGZsb2F0cyBhIGFuZCBiIGFyZSBlcXVhbCB0byB3aXRoaW4gYQotICAgIChzbWFsbCkgcm91bmRpbmcgZXJyb3IuICBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHJlbF9lcnIgYW5kCi0gICAgYWJzX2VyciBhcmUgY2hvc2VuIHRvIGJlIHN1aXRhYmxlIGZvciBwbGF0Zm9ybXMgd2hlcmUgYSBmbG9hdCBpcwotICAgIHJlcHJlc2VudGVkIGJ5IGFuIElFRUUgNzU0IGRvdWJsZS4gIFRoZXkgYWxsb3cgYW4gZXJyb3Igb2YgYmV0d2VlbgotICAgIDkgYW5kIDE5IHVscHMuIiIiCitkZWYgdWxwX2Fic19jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKToKKyAgICAiIiJHaXZlbiBmaW5pdGUgZmxvYXRzIGBleHBlY3RlZGAgYW5kIGBnb3RgLCBjaGVjayB0aGF0IHRoZXkncmUKKyAgICBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIHdpdGhpbiB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVscHMgb3IgdGhlCisgICAgZ2l2ZW4gYWJzb2x1dGUgdG9sZXJhbmNlLCB3aGljaGV2ZXIgaXMgYmlnZ2VyLgogCi0gICAgIyBuZWVkIHRvIHNwZWNpYWwgY2FzZSBpbmZpbml0aWVzLCBzaW5jZSBpbmYgLSBpbmYgZ2l2ZXMgbmFuCi0gICAgaWYgbWF0aC5pc2luZihleHBlY3RlZCkgYW5kIGdvdCA9PSBleHBlY3RlZDoKKyAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgorICAgICIiIgorICAgIHVscF9lcnJvciA9IGFicyh0b191bHBzKGV4cGVjdGVkKSAtIHRvX3VscHMoZ290KSkKKyAgICBhYnNfZXJyb3IgPSBhYnMoZXhwZWN0ZWQgLSBnb3QpCisKKyAgICAjIFN1Y2NlZWQgaWYgZWl0aGVyIGFic19lcnJvciA8PSBhYnNfdG9sIG9yIHVscF9lcnJvciA8PSB1bHBfdG9sLgorICAgIGlmIGFic19lcnJvciA8PSBhYnNfdG9sIG9yIHVscF9lcnJvciA8PSB1bHBfdG9sOgogICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZXJyb3IgPSBnb3QgLSBleHBlY3RlZAotCi0gICAgcGVybWl0dGVkX2Vycm9yID0gbWF4KGFic19lcnIsIHJlbF9lcnIgKiBhYnMoZXhwZWN0ZWQpKQotICAgIGlmIGFicyhlcnJvcikgPCBwZXJtaXR0ZWRfZXJyb3I6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmV0dXJuICJlcnJvciA9IHt9OyBwZXJtaXR0ZWQgZXJyb3IgPSB7fSIuZm9ybWF0KGVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXR0ZWRfZXJyb3IpCisgICAgZWxzZToKKyAgICAgICAgZm10ID0gKCJlcnJvciA9IHs6LjNnfSAoezpkfSB1bHBzKTsgIgorICAgICAgICAgICAgICAgInBlcm1pdHRlZCBlcnJvciA9IHs6LjNnfSBvciB7OmR9IHVscHMiKQorICAgICAgICByZXR1cm4gZm10LmZvcm1hdChhYnNfZXJyb3IsIHVscF9lcnJvciwgYWJzX3RvbCwgdWxwX3RvbCkKIAogZGVmIHBhcnNlX210ZXN0ZmlsZShmbmFtZSk6CiAgICAgIiIiUGFyc2UgYSBmaWxlIHdpdGggdGVzdCB2YWx1ZXMKQEAgLTE1MSw2ICsxNjYsNyBAQAogCiAgICAgICAgICAgICB5aWVsZCAoaWQsIGZuLCBmbG9hdChhcmcpLCBmbG9hdChleHApLCBmbGFncykKIAorCiBkZWYgcGFyc2VfdGVzdGZpbGUoZm5hbWUpOgogICAgICIiIlBhcnNlIGEgZmlsZSB3aXRoIHRlc3QgdmFsdWVzCiAKQEAgLTE3Miw4ICsxODgsNTMgQEAKICAgICAgICAgICAgIHlpZWxkIChpZCwgZm4sCiAgICAgICAgICAgICAgICAgICAgZmxvYXQoYXJnX3JlYWwpLCBmbG9hdChhcmdfaW1hZyksCiAgICAgICAgICAgICAgICAgICAgZmxvYXQoZXhwX3JlYWwpLCBmbG9hdChleHBfaW1hZyksCi0gICAgICAgICAgICAgICAgICAgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICBmbGFncykKKworCitkZWYgcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2w9NSwgYWJzX3RvbD0wLjApOgorICAgICMgQ29tbW9uIGxvZ2ljIG9mIE1hdGhUZXN0cy4oZnRlc3QsIHRlc3RfdGVzdGNhc2VzLCB0ZXN0X210ZXN0Y2FzZXMpCisgICAgIiIiQ29tcGFyZSBhcmd1bWVudHMgZXhwZWN0ZWQgYW5kIGdvdCwgYXMgZmxvYXRzLCBpZiBlaXRoZXIKKyAgICBpcyBhIGZsb2F0LCB1c2luZyBhIHRvbGVyYW5jZSBleHByZXNzZWQgaW4gbXVsdGlwbGVzIG9mCisgICAgdWxwKGV4cGVjdGVkKSBvciBhYnNvbHV0ZWx5IChpZiBnaXZlbiBhbmQgZ3JlYXRlcikuCisKKyAgICBBcyBhIGNvbnZlbmllbmNlLCB3aGVuIG5laXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdCwgYW5kIGZvcgorICAgIG5vbi1maW5pdGUgZmxvYXRzLCBleGFjdCBlcXVhbGl0eSBpcyBkZW1hbmRlZC4gQWxzbywgbmFuPT1uYW4KKyAgICBhcyBmYXIgYXMgdGhpcyBmdW5jdGlvbiBpcyBjb25jZXJuZWQuCisKKyAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgorICAgICIiIgorCisgICAgIyBDaGVjayBleGFjdGx5IGVxdWFsIChhcHBsaWVzIGFsc28gdG8gc3RyaW5ncyByZXByZXNlbnRpbmcgZXhjZXB0aW9ucykKKyAgICBpZiBnb3QgPT0gZXhwZWN0ZWQ6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBmYWlsdXJlID0gIm5vdCBlcXVhbCIKKworICAgICMgVHVybiBtaXhlZCBmbG9hdCBhbmQgaW50IGNvbXBhcmlzb24gKGUuZy4gZmxvb3IoKSkgdG8gYWxsLWZsb2F0CisgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGdvdCwgaW50KToKKyAgICAgICAgZ290ID0gZmxvYXQoZ290KQorICAgIGVsaWYgaXNpbnN0YW5jZShnb3QsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgaW50KToKKyAgICAgICAgZXhwZWN0ZWQgPSBmbG9hdChleHBlY3RlZCkKKworICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShnb3QsIGZsb2F0KToKKyAgICAgICAgaWYgbWF0aC5pc25hbihleHBlY3RlZCkgYW5kIG1hdGguaXNuYW4oZ290KToKKyAgICAgICAgICAgICMgUGFzcywgc2luY2UgYm90aCBuYW4KKyAgICAgICAgICAgIGZhaWx1cmUgPSBOb25lCisgICAgICAgIGVsaWYgbWF0aC5pc2luZihleHBlY3RlZCkgb3IgbWF0aC5pc2luZihnb3QpOgorICAgICAgICAgICAgIyBXZSBhbHJlYWR5IGtub3cgdGhleSdyZSBub3QgZXF1YWwsIGRyb3AgdGhyb3VnaCB0byBmYWlsdXJlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEJvdGggYXJlIGZpbml0ZSBmbG9hdHMgKG5vdykuIEFyZSB0aGV5IGNsb3NlIGVub3VnaD8KKyAgICAgICAgICAgIGZhaWx1cmUgPSB1bHBfYWJzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisKKyAgICAjIGFyZ3VtZW50cyBhcmUgbm90IGVxdWFsLCBhbmQgaWYgbnVtZXJpYywgYXJlIHRvbyBmYXIgYXBhcnQKKyAgICBpZiBmYWlsdXJlIGlzIG5vdCBOb25lOgorICAgICAgICBmYWlsX2ZtdCA9ICJleHBlY3RlZCB7IXJ9LCBnb3QgeyFyfSIKKyAgICAgICAgZmFpbF9tc2cgPSBmYWlsX2ZtdC5mb3JtYXQoZXhwZWN0ZWQsIGdvdCkKKyAgICAgICAgZmFpbF9tc2cgKz0gJyAoe30pJy5mb3JtYXQoZmFpbHVyZSkKKyAgICAgICAgcmV0dXJuIGZhaWxfbXNnCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogIyBDbGFzcyBwcm92aWRpbmcgYW4gX19pbmRleF9fIG1ldGhvZC4KIGNsYXNzIE15SW5kZXhhYmxlKG9iamVjdCk6CkBAIC0xODUsMTggKzI0NiwyNCBAQAogCiBjbGFzcyBNYXRoVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIHZhbHVlLCBleHBlY3RlZCk6Ci0gICAgICAgIGlmIGFicyh2YWx1ZS1leHBlY3RlZCkgPiBlcHM6Ci0gICAgICAgICAgICAjIFVzZSAlciBpbnN0ZWFkIG9mICVmIHNvIHRoZSBlcnJvciBtZXNzYWdlCi0gICAgICAgICAgICAjIGRpc3BsYXlzIGZ1bGwgcHJlY2lzaW9uLiBPdGhlcndpc2UgZGlzY3JlcGFuY2llcwotICAgICAgICAgICAgIyBpbiB0aGUgbGFzdCBmZXcgYml0cyB3aWxsIGxlYWQgdG8gdmVyeSBjb25mdXNpbmcKLSAgICAgICAgICAgICMgZXJyb3IgbWVzc2FnZXMKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnJXMgcmV0dXJuZWQgJXIsIGV4cGVjdGVkICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHZhbHVlLCBleHBlY3RlZCkpCisgICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIGdvdCwgZXhwZWN0ZWQsIHVscF90b2w9NSwgYWJzX3RvbD0wLjApOgorICAgICAgICAiIiJDb21wYXJlIGFyZ3VtZW50cyBleHBlY3RlZCBhbmQgZ290LCBhcyBmbG9hdHMsIGlmIGVpdGhlcgorICAgICAgICBpcyBhIGZsb2F0LCB1c2luZyBhIHRvbGVyYW5jZSBleHByZXNzZWQgaW4gbXVsdGlwbGVzIG9mCisgICAgICAgIHVscChleHBlY3RlZCkgb3IgYWJzb2x1dGVseSwgd2hpY2hldmVyIGlzIGdyZWF0ZXIuCisKKyAgICAgICAgQXMgYSBjb252ZW5pZW5jZSwgd2hlbiBuZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXQsIGFuZCBmb3IKKyAgICAgICAgbm9uLWZpbml0ZSBmbG9hdHMsIGV4YWN0IGVxdWFsaXR5IGlzIGRlbWFuZGVkLiBBbHNvLCBuYW49PW5hbgorICAgICAgICBpbiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgZmFpbHVyZSA9IHJlc3VsdF9jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKQorICAgICAgICBpZiBmYWlsdXJlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJ7fToge30iLmZvcm1hdChuYW1lLCBmYWlsdXJlKSkKIAogICAgIGRlZiB0ZXN0Q29uc3RhbnRzKHNlbGYpOgotICAgICAgICBzZWxmLmZ0ZXN0KCdwaScsIG1hdGgucGksIDMuMTQxNTkyNikKLSAgICAgICAgc2VsZi5mdGVzdCgnZScsIG1hdGguZSwgMi43MTgyODE4KQorICAgICAgICAjIFJlZjogQWJyYW1vd2l0eiAmIFN0ZWd1biAoRG92ZXIsIDE5NjUpCisgICAgICAgIHNlbGYuZnRlc3QoJ3BpJywgbWF0aC5waSwgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMpCisgICAgICAgIHNlbGYuZnRlc3QoJ2UnLCBtYXRoLmUsIDIuNzE4MjgxODI4NDU5MDQ1MjM1MzYwMjg3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgudGF1LCAyKm1hdGgucGkpCiAKICAgICBkZWYgdGVzdEFjb3Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5hY29zKQpAQCAtMjA1LDYgKzI3Miw4IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2Fjb3MoMSknLCBtYXRoLmFjb3MoMSksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgSU5GKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFjb3MsIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgMSArIGVwcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCAtMSAtIGVwcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5hY29zKE5BTikpKQogCiAgICAgZGVmIHRlc3RBY29zaChzZWxmKToKQEAgLTIyNCw2ICsyOTMsOCBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdhc2luKDEpJywgbWF0aC5hc2luKDEpLCBtYXRoLnBpLzIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFzaW4sIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgMSArIGVwcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCAtMSAtIGVwcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5hc2luKE5BTikpKQogCiAgICAgZGVmIHRlc3RBc2luaChzZWxmKToKQEAgLTM3OCw5ICs0NDksOSBAQAogCiAgICAgZGVmIHRlc3RDb3Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5jb3MpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2NvcygtcGkvMiknLCBtYXRoLmNvcygtbWF0aC5waS8yKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnY29zKC1waS8yKScsIG1hdGguY29zKC1tYXRoLnBpLzIpLCAwLCBhYnNfdG9sPXVscCgxKSkKICAgICAgICAgc2VsZi5mdGVzdCgnY29zKDApJywgbWF0aC5jb3MoMCksIDEpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaS8yKScsIG1hdGguY29zKG1hdGgucGkvMiksIDApCisgICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaS8yKScsIG1hdGguY29zKG1hdGgucGkvMiksIDAsIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MocGkpJywgbWF0aC5jb3MobWF0aC5waSksIC0xKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmNvcyhJTkYpKSkKQEAgLTQwMyw2ICs0NzQsNyBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKHBpKScsIG1hdGguZGVncmVlcyhtYXRoLnBpKSwgMTgwLjApCiAgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMocGkvMiknLCBtYXRoLmRlZ3JlZXMobWF0aC5waS8yKSwgOTAuMCkKICAgICAgICAgc2VsZi5mdGVzdCgnZGVncmVlcygtcGkvNCknLCBtYXRoLmRlZ3JlZXMoLW1hdGgucGkvNCksIC00NS4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKDApJywgbWF0aC5kZWdyZWVzKDApLCAwKQogCiAgICAgZGVmIHRlc3RFeHAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5leHApCkBAIC00MTIsNiArNDg0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmV4cChJTkYpLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5leHAoTklORiksIDAuKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmV4cChOQU4pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5leHAsIDEwMDAwMDApCiAKICAgICBkZWYgdGVzdEZhYnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5mYWJzKQpAQCAtNjU0LDYgKzcyNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5oeXBvdChJTkYsIE5BTiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KE5BTiwgTklORiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KE5JTkYsIE5BTiksIElORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5oeXBvdCwgRkxPQVRfTUFYLCBGTE9BVF9NQVgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguaHlwb3QoMS4wLCBOQU4pKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5oeXBvdChOQU4sIC0yLjApKSkKIApAQCAtNzA3LDggKzc4MSwxMCBAQAogCiAgICAgZGVmIHRlc3RMb2cxcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmxvZzFwKQotICAgICAgICBuPSAyKio5MAotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQorICAgICAgICBmb3IgbiBpbiBbMiwgMioqOTAsIDIqKjMwMF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmxvZzFwLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzFwKElORiksIElORikKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0TG9nMihzZWxmKToKQEAgLTkyMiw2ICs5OTgsNyBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDE4MCknLCBtYXRoLnJhZGlhbnMoMTgwKSwgbWF0aC5waSkKICAgICAgICAgc2VsZi5mdGVzdCgncmFkaWFucyg5MCknLCBtYXRoLnJhZGlhbnMoOTApLCBtYXRoLnBpLzIpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoLTQ1KScsIG1hdGgucmFkaWFucygtNDUpLCAtbWF0aC5waS80KQorICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDApJywgbWF0aC5yYWRpYW5zKDApLCAwKQogCiAgICAgZGVmIHRlc3RTaW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5zaW4pCkBAIC05NTEsNiArMTAyOCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ3NxcnQoMSknLCBtYXRoLnNxcnQoMSksIDEpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3NxcnQoNCknLCBtYXRoLnNxcnQoNCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5zcXJ0KElORiksIElORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5zcXJ0LCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5zcXJ0LCBOSU5GKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLnNxcnQoTkFOKSkpCiAKQEAgLTk3MCw3ICsxMDQ4LDggQEAKICAgICBkZWYgdGVzdFRhbmgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC50YW5oKQogICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKDApJywgbWF0aC50YW5oKDApLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKDEpK3RhbmgoLTEpJywgbWF0aC50YW5oKDEpK21hdGgudGFuaCgtMSksIDApCisgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMSkrdGFuaCgtMSknLCBtYXRoLnRhbmgoMSkrbWF0aC50YW5oKC0xKSwgMCwKKyAgICAgICAgICAgICAgICAgICBhYnNfdG9sPXVscCgxKSkKICAgICAgICAgc2VsZi5mdGVzdCgndGFuaChpbmYpJywgbWF0aC50YW5oKElORiksIDEpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoLWluZiknLCBtYXRoLnRhbmgoTklORiksIC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLnRhbmgoTkFOKSkpCkBAIC0xMDIwLDcgKzEwOTksOCBAQAogCiAgICAgZGVmIHRlc3RJc25hbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoIm5hbiIpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoImluZiIpKiAwLikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGZsb2F0KCItbmFuIikpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgiaW5mIikgKiAwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbihmbG9hdCgiaW5mIikpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGguaXNuYW4oMC4pKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGguaXNuYW4oMS4pKQpAQCAtMTA4NCwzMCArMTE2NCw2NCBAQAogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfdGVzdGZpbGUoc2VsZik6CisgICAgICAgICMgU29tZSB0ZXN0cyBuZWVkIHRvIGJlIHNraXBwZWQgb24gYW5jaWVudCBPUyBYIHZlcnNpb25zLgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjc5NTMuCisgICAgICAgIFNLSVBfT05fVElHRVIgPSB7J3RhbjAwNjQnfQorCisgICAgICAgIG9zeF92ZXJzaW9uID0gTm9uZQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICB2ZXJzaW9uX3R4dCA9IHBsYXRmb3JtLm1hY192ZXIoKVswXQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl90eHQuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZmFpbF9mbXQgPSAie306IHt9KHshcn0pOiB7fSIKKworICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZvciBpZCwgZm4sIGFyLCBhaSwgZXIsIGVpLCBmbGFncyBpbiBwYXJzZV90ZXN0ZmlsZSh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgIyBTa2lwIGlmIGVpdGhlciB0aGUgaW5wdXQgb3IgcmVzdWx0IGlzIGNvbXBsZXgsIG9yIGlmCi0gICAgICAgICAgICAjIGZsYWdzIGlzIG5vbmVtcHR5Ci0gICAgICAgICAgICBpZiBhaSAhPSAwLiBvciBlaSAhPSAwLiBvciBmbGFnczoKKyAgICAgICAgICAgICMgU2tpcCBpZiBlaXRoZXIgdGhlIGlucHV0IG9yIHJlc3VsdCBpcyBjb21wbGV4CisgICAgICAgICAgICBpZiBhaSAhPSAwLjAgb3IgZWkgIT0gMC4wOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBmbiBpbiBbJ3JlY3QnLCAncG9sYXInXToKICAgICAgICAgICAgICAgICAjIG5vIHJlYWwgdmVyc2lvbnMgb2YgcmVjdCwgcG9sYXIKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBTa2lwIGNlcnRhaW4gdGVzdHMgb24gT1MgWCAxMC40LgorICAgICAgICAgICAgaWYgb3N4X3ZlcnNpb24gaXMgbm90IE5vbmUgYW5kIG9zeF92ZXJzaW9uIDwgKDEwLCA1KToKKyAgICAgICAgICAgICAgICBpZiBpZCBpbiBTS0lQX09OX1RJR0VSOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihtYXRoLCBmbikKKworICAgICAgICAgICAgaWYgJ2ludmFsaWQnIGluIGZsYWdzIG9yICdkaXZpZGUtYnktemVybycgaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgZXIgPSAnVmFsdWVFcnJvcicKKyAgICAgICAgICAgIGVsaWYgJ292ZXJmbG93JyBpbiBmbGFnczoKKyAgICAgICAgICAgICAgICBlciA9ICdPdmVyZmxvd0Vycm9yJworCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZnVuYyhhcikKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCgiVW5leHBlY3RlZCBWYWx1ZUVycm9yOiAlc1xuICAgICAgICAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0ZXN0ICVzOiVzKCVyKVxuIikgJSAoZXhjLmFyZ3NbMF0sIGlkLCBmbiwgYXIpKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbChtZXNzYWdlKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gJ1ZhbHVlRXJyb3InCiAgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCJVbmV4cGVjdGVkIE92ZXJmbG93RXJyb3IgaW4gIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCAlczolcyglcilcbiIgJSAoaWQsIGZuLCBhcikpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKG1lc3NhZ2UpCi0gICAgICAgICAgICBzZWxmLmZ0ZXN0KCIlczolcyglcikiICUgKGlkLCBmbiwgYXIpLCByZXN1bHQsIGVyKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9ICdPdmVyZmxvd0Vycm9yJworCisgICAgICAgICAgICAjIERlZmF1bHQgdG9sZXJhbmNlcworICAgICAgICAgICAgdWxwX3RvbCwgYWJzX3RvbCA9IDUsIDAuMAorCisgICAgICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGVyLCByZXN1bHQsIHVscF90b2wsIGFic190b2wpCisgICAgICAgICAgICBpZiBmYWlsdXJlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXIsIGZhaWx1cmUpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQobXNnKQorCisgICAgICAgIGlmIGZhaWx1cmVzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdGYWlsdXJlcyBpbiB0ZXN0X3Rlc3RmaWxlOlxuICAnICsKKyAgICAgICAgICAgICAgICAgICAgICAnXG4gICcuam9pbihmYWlsdXJlcykpCiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9tdGVzdGZpbGUoc2VsZik6Ci0gICAgICAgIGZhaWxfZm10ID0gInt9Ont9KHshcn0pOiBleHBlY3RlZCB7IXJ9LCBnb3QgeyFyfSIKKyAgICAgICAgZmFpbF9mbXQgPSAie306IHt9KHshcn0pOiB7fSIKIAogICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZvciBpZCwgZm4sIGFyZywgZXhwZWN0ZWQsIGZsYWdzIGluIHBhcnNlX210ZXN0ZmlsZShtYXRoX3Rlc3RjYXNlcyk6CkBAIC0xMTI1LDQxICsxMjM5LDQ4IEBACiAgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKICAgICAgICAgICAgICAgICBnb3QgPSAnT3ZlcmZsb3dFcnJvcicKIAotICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IE5vbmUKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZ290LCBmbG9hdCkgYW5kIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGZsb2F0KToKLSAgICAgICAgICAgICAgICBpZiBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbWF0aC5pc25hbihnb3QpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbm90IG1hdGguaXNuYW4oZ290KToKLSAgICAgICAgICAgICAgICAgICAgaWYgZm4gPT0gJ2xnYW1tYSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHdlIHVzZSBhIHdlYWtlciBhY2N1cmFjeSB0ZXN0IGZvciBsZ2FtbWE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGxnYW1tYSBvbmx5IGFjaGlldmVzIGFuIGFic29sdXRlIGVycm9yIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgZmV3IG11bHRpcGxlcyBvZiB0aGUgbWFjaGluZSBhY2N1cmFjeSwgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgZ2VuZXJhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSBhY2NfY2hlY2soZXhwZWN0ZWQsIGdvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsX2VyciA9IDVlLTE1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfZXJyID0gNWUtMTUpCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2VyZmMnOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBlcmZjIGhhcyBsZXNzLXRoYW4taWRlYWwgYWNjdXJhY3kgZm9yIGxhcmdlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cyAoeCB+IDI1IG9yIHNvKSwgbWFpbmx5IGR1ZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZXJyb3IgaW52b2x2ZWQgaW4gY29tcHV0aW5nIGV4cCgteCp4KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYIFdvdWxkIGJlIGJldHRlciB0byB3ZWFrZW4gdGhpcyB0ZXN0IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGxhcmdlIHgsIGluc3RlYWQgb2YgZm9yIGFsbCB4LgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgMjAwMCkKKyAgICAgICAgICAgICMgRGVmYXVsdCB0b2xlcmFuY2VzCisgICAgICAgICAgICB1bHBfdG9sLCBhYnNfdG9sID0gNSwgMC4wCiAKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSB1bHBzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIDIwKQotICAgICAgICAgICAgICAgICAgICBpZiBhY2N1cmFjeV9mYWlsdXJlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBFeGNlcHRpb25zIHRvIHRoZSBkZWZhdWx0cworICAgICAgICAgICAgaWYgZm4gPT0gJ2dhbW1hJzoKKyAgICAgICAgICAgICAgICAjIEV4cGVyaW1lbnRhbCByZXN1bHRzIG9uIG9uZSBwbGF0Zm9ybSBnYXZlCisgICAgICAgICAgICAgICAgIyBhbiBhY2N1cmFjeSBvZiA8PSAxMCB1bHBzIGFjcm9zcyB0aGUgZW50aXJlIGZsb2F0CisgICAgICAgICAgICAgICAgIyBkb21haW4uIFdlIHdlYWtlbiB0aGF0IHRvIHJlcXVpcmUgMjAgdWxwIGFjY3VyYWN5LgorICAgICAgICAgICAgICAgIHVscF90b2wgPSAyMAogCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGdvdCwgc3RyKSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgc3RyKToKLSAgICAgICAgICAgICAgICBpZiBnb3QgPT0gZXhwZWN0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbGlmIGZuID09ICdsZ2FtbWEnOgorICAgICAgICAgICAgICAgICMgd2UgdXNlIGEgd2Vha2VyIGFjY3VyYWN5IHRlc3QgZm9yIGxnYW1tYTsKKyAgICAgICAgICAgICAgICAjIGxnYW1tYSBvbmx5IGFjaGlldmVzIGFuIGFic29sdXRlIGVycm9yIG9mCisgICAgICAgICAgICAgICAgIyBhIGZldyBtdWx0aXBsZXMgb2YgdGhlIG1hY2hpbmUgYWNjdXJhY3ksIGluCisgICAgICAgICAgICAgICAgIyBnZW5lcmFsLgorICAgICAgICAgICAgICAgIGFic190b2wgPSAxZS0xNQogCi0gICAgICAgICAgICBmYWlsX21zZyA9IGZhaWxfZm10LmZvcm1hdChpZCwgZm4sIGFyZywgZXhwZWN0ZWQsIGdvdCkKLSAgICAgICAgICAgIGlmIGFjY3VyYWN5X2ZhaWx1cmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZmFpbF9tc2cgKz0gJyAoe30pJy5mb3JtYXQoYWNjdXJhY3lfZmFpbHVyZSkKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChmYWlsX21zZykKKyAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2VyZmMnIGFuZCBhcmcgPj0gMC4wOgorICAgICAgICAgICAgICAgICMgZXJmYyBoYXMgbGVzcy10aGFuLWlkZWFsIGFjY3VyYWN5IGZvciBsYXJnZQorICAgICAgICAgICAgICAgICMgYXJndW1lbnRzICh4IH4gMjUgb3Igc28pLCBtYWlubHkgZHVlIHRvIHRoZQorICAgICAgICAgICAgICAgICMgZXJyb3IgaW52b2x2ZWQgaW4gY29tcHV0aW5nIGV4cCgteCp4KS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBPYnNlcnZlZCBiZXR3ZWVuIENQeXRob24gYW5kIG1wbWF0aCBhdCAyNSBkcDoKKyAgICAgICAgICAgICAgICAjICAgICAgIHggPCAgMCA6IGVyciA8PSAyIHVscAorICAgICAgICAgICAgICAgICMgIDAgPD0geCA8ICAxIDogZXJyIDw9IDEwIHVscAorICAgICAgICAgICAgICAgICMgIDEgPD0geCA8IDEwIDogZXJyIDw9IDEwMCB1bHAKKyAgICAgICAgICAgICAgICAjIDEwIDw9IHggPCAyMCA6IGVyciA8PSAzMDAgdWxwCisgICAgICAgICAgICAgICAgIyAyMCA8PSB4ICAgICAgOiA8IDYwMCB1bHAKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgaWYgYXJnIDwgMS4wOgorICAgICAgICAgICAgICAgICAgICB1bHBfdG9sID0gMTAKKyAgICAgICAgICAgICAgICBlbGlmIGFyZyA8IDEwLjA6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMDAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1bHBfdG9sID0gMTAwMAorCisgICAgICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisgICAgICAgICAgICBpZiBmYWlsdXJlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXJnLCBmYWlsdXJlKQorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKG1zZykKIAogICAgICAgICBpZiBmYWlsdXJlczoKICAgICAgICAgICAgIHNlbGYuZmFpbCgnRmFpbHVyZXMgaW4gdGVzdF9tdGVzdGZpbGU6XG4gICcgKwpAQCAtMTI3Miw3ICsxMzkzLDggQEAKIAogICAgICAgICBkZWNpbWFsX2V4YW1wbGVzID0gWyhEZWNpbWFsKCcxLjAwMDAwMDAxJyksIERlY2ltYWwoJzEuMCcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUtMjAnKSwgRGVjaW1hbCgnMS4wZS0yMCcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUtMTAwJyksIERlY2ltYWwoJzEuMGUtMTAwJykpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlMjAnKSwgRGVjaW1hbCgnMS4wZTIwJykpXQogICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKICAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShkZWNpbWFsX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCiAKQEAgLTEyODAsOCArMTQwMiwxMCBAQAogICAgICAgICAjIHRlc3Qgd2l0aCBGcmFjdGlvbiB2YWx1ZXMKICAgICAgICAgZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCiAKLSAgICAgICAgIyBjb3VsZCB1c2Ugc29tZSBtb3JlIGV4YW1wbGVzIGhlcmUhCi0gICAgICAgIGZyYWN0aW9uX2V4YW1wbGVzID0gWyhGcmFjdGlvbigxLCAxMDAwMDAwMDApICsgMSwgRnJhY3Rpb24oMSkpXQorICAgICAgICBmcmFjdGlvbl9leGFtcGxlcyA9IFsKKyAgICAgICAgICAgIChGcmFjdGlvbigxLCAxMDAwMDAwMDApICsgMSwgRnJhY3Rpb24oMSkpLAorICAgICAgICAgICAgKEZyYWN0aW9uKDEwMDAwMDAwMSksIEZyYWN0aW9uKDEwMDAwMDAwMCkpLAorICAgICAgICAgICAgKEZyYWN0aW9uKDEwKio4ICsgMSwgMTAqKjI4KSwgRnJhY3Rpb24oMSwgMTAqKjIwKSldCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZnJhY3Rpb25fZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKICAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS05KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CmluZGV4IDY4NTY1OTMuLjRlMmM5MDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CkBAIC0xMDEsNSArMTAxLDExIEBACiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UuanBnIiksICgiaW1hZ2UvanBlZyIsIE5vbmUpKQogICAgICAgICBlcShzZWxmLmRiLmd1ZXNzX3R5cGUoImltYWdlLnBuZyIpLCAoImltYWdlL3BuZyIsIE5vbmUpKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBtaW1ldHlwZXMpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weSBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQppbmRleCBiMzY1ZDg0Li5iYmI0MDcwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21tYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CkBAIC03MTMsNiArNzEzLDE0IEBACiAgICAgICAgIGdjX2NvbGxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCiAKKyAgICBkZWYgdGVzdF93cml0ZV9yZXR1cm5pbmdfdGhlX251bWJlcl9vZl9ieXRlc193cml0dGVuKHNlbGYpOgorICAgICAgICBtbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiIiKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiIngiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiInl6IiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiJweXRob24iKSwgNikKKworCiBjbGFzcyBMYXJnZU1tYXBUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CmluZGV4IDhlZjMzNGYuLmY2NTZmNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiIFRlc3Qgc3VpdGUgZm9yIHRoZSBjb2RlIGluIG1zaWxpYiAiIiIKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogbXNpbGliID0gaW1wb3J0X21vZHVsZSgnbXNpbGliJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKaW5kZXggOGQ3YTIxMy4uMDFhMWNkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CkBAIC01LDcgKzUsNyBAQAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KLWltcG9ydCB1bml0dGVzdCwgaW8sIGNvZGVjcywgc3lzLCBvcworaW1wb3J0IHVuaXR0ZXN0LCBpbywgY29kZWNzLCBzeXMKIGltcG9ydCBfbXVsdGlieXRlY29kZWMKIAogQUxMX0NKS0VOQ09ESU5HUyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5CmluZGV4IDJiZjRlNzUuLjlmMjI1MDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yay5weQpAQCAtMSw2ICsxLDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZwogCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKKwogdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcuaW5zdGFsbF90ZXN0c19pbl9tb2R1bGVfZGljdChnbG9iYWxzKCksICdmb3JrJykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5CmluZGV4IDE5M2EwNGEuLjQwN2JiM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9ya3NlcnZlci5weQpAQCAtMSw2ICsxLDExIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZwogCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLmluc3RhbGxfdGVzdHNfaW5fbW9kdWxlX2RpY3QoZ2xvYmFscygpLCAnZm9ya3NlcnZlcicpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQppbmRleCA1MjI3M2VhLi4zMjU5M2RhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKQEAgLTYsNyArNiw2IEBACiAKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5Ci1pbXBvcnQgemlwaW1wb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBvcwpAQCAtMTUsNyArMTQsMTAgQEAKIAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsCi0gICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQorICAgIGFzc2VydF9weXRob25fb2spCisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQogCiAjIExvb2sgdXAgd2hpY2ggc3RhcnQgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIHRvIHRlc3QKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKaW5kZXggMzM0YWU5ZS4uNjU1ODk1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKQEAgLTEsNiArMSwxMSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZy5pbnN0YWxsX3Rlc3RzX2luX21vZHVsZV9kaWN0KGdsb2JhbHMoKSwgJ3NwYXduJykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5IGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKaW5kZXggMzg3YTRlNy4uMjEwNzRjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9uaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKQEAgLTEsNiArMSw1IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogCiAjIFNraXAgdGVzdCBpZiBuaXMgbW9kdWxlIGRvZXMgbm90IGV4aXN0LgogbmlzID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCduaXMnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CmluZGV4IDJlZjZkMDIuLmZlYWJhM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKQEAgLTE1NDIsOCArMTU0MiwxMCBAQAogICAgICAgICAgICAgICAgIGVsaWYgY21kID09IGInU1RBUlRUTFNcclxuJzoKICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRhbGwoYiczODIgQmVnaW4gVExTIG5lZ290aWF0aW9uIG5vd1xyXG4nKQotICAgICAgICAgICAgICAgICAgICBjbGllbnQgPSBzc2wud3JhcF9zb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPWNlcnRmaWxlKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50ID0gY29udGV4dC53cmFwX3NvY2tldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCwgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY2xlYW51cC5lbnRlcl9jb250ZXh0KGNsaWVudCkKICAgICAgICAgICAgICAgICAgICAgcmVhZGVyID0gY2xlYW51cC5lbnRlcl9jb250ZXh0KGNsaWVudC5tYWtlZmlsZSgncmInKSkKICAgICAgICAgICAgICAgICBlbGlmIGNtZCA9PSBiJ1FVSVRcclxuJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weSBiL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQppbmRleCAzMGZhNjEyLi41YjU5MGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CkBAIC0zLDcgKzMsNiBAQAogCiBmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQRXhjZXB0aW9uCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKIGZyb20gdW5pY29kZWRhdGEgaW1wb3J0IG5vcm1hbGl6ZSwgdW5pZGF0YV92ZXJzaW9uCiAKIFRFU1REQVRBRklMRSA9ICJOb3JtYWxpemF0aW9uVGVzdC50eHQiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CmluZGV4IDU4MGYyMDMuLjkwZWRiNmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CkBAIC00NTIsNSArNDUyLDg4IEBACiAgICAgYXR0cmlidXRlcyA9IFsncmVscGF0aCcsICdzcGxpdHVuYyddCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBwYXRoID0gbnRwYXRoCisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlX25hbWUsICd4YicsIDApIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGIidGVzdF9udHBhdGguUGF0aExpa2VUZXN0cyIpCisKKyAgICBkZWYgYXNzZXJ0UGF0aEVxdWFsKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoc2VsZi5maWxlX3BhdGgpLCBmdW5jKHNlbGYuZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybWNhc2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtY2FzZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNhYnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2FicykKKworICAgIGRlZiB0ZXN0X3BhdGhfam9pbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGguam9pbignYScsIHNlbGYuUGF0aExpa2UoJ2InKSwgJ2MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGguam9pbignYScsICdiJywgJ2MnKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRleHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGV4dCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRkcml2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZHJpdmUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Jhc2VuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYmFzZW5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Rpcm5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5kaXJuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2xpbmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2xpbmspCisKKyAgICBkZWYgdGVzdF9wYXRoX2xleGlzdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5sZXhpc3RzKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc21vdW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNtb3VudCkKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHVzZXIpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHZhcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR2YXJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1wYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9hYnNwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYWJzcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVhbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWFscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGNvbW1vbl9wYXRoID0gc2VsZi5wYXRoLmNvbW1vbnBhdGgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uX3BhdGgsIHNlbGYuZmlsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2RpcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzZGlyKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKaW5kZXggNmVmOTNkOS4uNjgwNmM2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQpAQCAtMSw2ICsxLDcgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgMiwgb3Bjb2RlcwogCiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgYW5uX21vZHVsZQogCiBjbGFzcyBPcGNvZGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjAsNiArMjEsMzIgQEAKICAgICAgICAgaWYgbiAhPSA5MDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgndHJ5IGluc2lkZSBmb3InKQogCisgICAgZGVmIHRlc3Rfc2V0dXBfYW5ub3RhdGlvbnNfbGluZShzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IFNFVFVQX0FOTk9UQVRJT05TIGRvZXMgbm90IGNyZWF0ZSBzcHVyaW91cyBsaW5lIG51bWJlcnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKGFubl9tb2R1bGUuX19maWxlX18pIGFzIGY6CisgICAgICAgICAgICAgICAgdHh0ID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGNvID0gY29tcGlsZSh0eHQsIGFubl9tb2R1bGUuX19maWxlX18sICdleGVjJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY28uY29fZmlyc3RsaW5lbm8sIDYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfbm9fYW5ub3RhdGlvbnNfaWZfbm90X25lZWRlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQzogcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIEMuX19hbm5vdGF0aW9uc19fCisKKyAgICBkZWYgdGVzdF91c2VfZXhpc3RpbmdfYW5ub3RhdGlvbnMoc2VsZik6CisgICAgICAgIG5zID0geydfX2Fubm90YXRpb25zX18nOiB7MTogMn19CisgICAgICAgIGV4ZWMoJ3g6IGludCcsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXSwgeyd4JzogaW50LCAxOiAyfSkKKworICAgIGRlZiB0ZXN0X2RvX25vdF9yZWNyZWF0ZV9hbm5vdGF0aW9ucyhzZWxmKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlbCBfX2Fubm90YXRpb25zX18KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgICAgICB4OiBpbnQKKwogICAgIGRlZiB0ZXN0X3JhaXNlX2NsYXNzX2V4Y2VwdGlvbnMoc2VsZik6CiAKICAgICAgICAgY2xhc3MgQUNsYXNzKEV4Y2VwdGlvbik6IHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CmluZGV4IGI1YmE5NzYuLjYyNTQwOTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQpAQCAtMTIwLDYzICsxMjAsNjMgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5hZGQoMywgNCkgPT0gNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5hZGQoMywgNCksIDcpCiAKICAgICBkZWYgdGVzdF9iaXR3aXNlX2FuZChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFuZF8pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYW5kXywgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmFuZF8oMHhmLCAweGEpID09IDB4YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5hbmRfKDB4ZiwgMHhhKSwgMHhhKQogCiAgICAgZGVmIHRlc3RfY29uY2F0KHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY29uY2F0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvbmNhdCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdCgncHknLCAndGhvbicpID09ICdweXRob24nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY29uY2F0KFsxLCAyXSwgWzMsIDRdKSA9PSBbMSwgMiwgMywgNF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoU2VxMShbNSwgNl0pLCBTZXExKFs3XSkpID09IFs1LCA2LCA3XSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdChTZXEyKFs1LCA2XSksIFNlcTIoWzddKSkgPT0gWzUsIDYsIDddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdCgncHknLCAndGhvbicpLCAncHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoWzEsIDJdLCBbMywgNF0pLCBbMSwgMiwgMywgNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY29uY2F0KFNlcTEoWzUsIDZdKSwgU2VxMShbN10pKSwgWzUsIDYsIDddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdChTZXEyKFs1LCA2XSksIFNlcTIoWzddKSksIFs1LCA2LCA3XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb25jYXQsIDEzLCAyOSkKIAogICAgIGRlZiB0ZXN0X2NvdW50T2Yoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb3VudE9mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvdW50T2YsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgMykgPT0gMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCA1KSA9PSAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgNSksIDApCiAKICAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSBbNCwgMywgMiwgMV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5kZWxpdGVtLCBhKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmRlbGl0ZW0sIGEsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5kZWxpdGVtKGEsIDEpIGlzIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhID09IFs0LCAyLCAxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3BlcmF0b3IuZGVsaXRlbShhLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBbNCwgMiwgMV0pCiAKICAgICBkZWYgdGVzdF9mbG9vcmRpdihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmZsb29yZGl2LCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmZsb29yZGl2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZmxvb3JkaXYoNSwgMikgPT0gMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5mbG9vcmRpdig1LCAyKSwgMikKIAogICAgIGRlZiB0ZXN0X3RydWVkaXYoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci50cnVlZGl2LCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnRydWVkaXYsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci50cnVlZGl2KDUsIDIpID09IDIuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci50cnVlZGl2KDUsIDIpLCAyLjUpCiAKICAgICBkZWYgdGVzdF9nZXRpdGVtKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSByYW5nZSgxMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZXRpdGVtKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmdldGl0ZW0sIGEsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5nZXRpdGVtKGEsIDIpID09IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuZ2V0aXRlbShhLCAyKSwgMikKIAogICAgIGRlZiB0ZXN0X2luZGV4T2Yoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleE9mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5pbmRleE9mKFs0LCAzLCAyLCAxXSwgMykgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbmRleE9mKFs0LCAzLCAyLCAxXSwgMyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YsIFs0LCAzLCAyLCAxXSwgMCkKIAogICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKQEAgLTE4OSwyMSArMTg5LDIxIEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5sc2hpZnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubHNoaWZ0LCBOb25lLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmxzaGlmdCg1LCAxKSA9PSAxMCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmxzaGlmdCg1LCAwKSA9PSA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmxzaGlmdCg1LCAxKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubHNoaWZ0KDUsIDApLCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVyYXRvci5sc2hpZnQsIDIsIC0xKQogCiAgICAgZGVmIHRlc3RfbW9kKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubW9kKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1vZCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5tb2QoNSwgMikgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5tb2QoNSwgMiksIDEpCiAKICAgICBkZWYgdGVzdF9tdWwoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tdWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubXVsKDUsIDIpID09IDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm11bCg1LCAyKSwgMTApCiAKICAgICBkZWYgdGVzdF9tYXRtdWwoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKQEAgLTIyNyw3ICsyMjcsNyBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iub3JfKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm9yXywgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm9yXygweGEsIDB4NSkgPT0gMHhmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm9yXygweGEsIDB4NSksIDB4ZikKIAogICAgIGRlZiB0ZXN0X3BvcyhzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpAQCAtMjUwLDggKzI1MCw4IEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5yc2hpZnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IucnNoaWZ0LCBOb25lLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnJzaGlmdCg1LCAxKSA9PSAyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IucnNoaWZ0KDUsIDApID09IDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IucnNoaWZ0KDUsIDEpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnJzaGlmdCg1LCAwKSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlcmF0b3IucnNoaWZ0LCAyLCAtMSkKIAogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYpOgpAQCAtMjY2LDE1ICsyNjYsMTUgQEAKICAgICAgICAgYSA9IGxpc3QocmFuZ2UoMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zZXRpdGVtLCBhLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3Iuc2V0aXRlbShhLCAwLCAyKSBpcyBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYSA9PSBbMiwgMSwgMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9wZXJhdG9yLnNldGl0ZW0oYSwgMCwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgWzIsIDEsIDJdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBvcGVyYXRvci5zZXRpdGVtLCBhLCA0LCAyKQogCiAgICAgZGVmIHRlc3Rfc3ViKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc3ViKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnN1YiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnN1Yig1LCAyKSA9PSAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnN1Yig1LCAyKSwgMykKIAogICAgIGRlZiB0ZXN0X3RydXRoKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCkBAIC0yOTIsNyArMjkyLDcgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnhvcikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci54b3IsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci54b3IoMHhiLCAweGMpID09IDB4NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci54b3IoMHhiLCAweGMpLCAweDcpCiAKICAgICBkZWYgdGVzdF9pcyhzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKaW5kZXggNzYyMWMyNC4uOTFhMDMxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CkBAIC0xNiw2ICsxNiw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCitpbXBvcnQgb3B0cGFyc2UKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uLCBPcHRpb24sIFwKICAgICAgVGl0bGVkSGVscEZvcm1hdHRlciwgT3B0aW9uUGFyc2VyLCBPcHRpb25Hcm91cCwgXAogICAgICBTVVBQUkVTU19VU0FHRSwgT3B0aW9uRXJyb3IsIE9wdGlvbkNvbmZsaWN0RXJyb3IsIFwKQEAgLTE2NTAsNiArMTY1MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uIC1sOiBpbnZhbGlkIGludGVnZXIgdmFsdWU6ICcweDEyeCciKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2NoZWNrX2J1aWx0aW4nLCAnQW1iaWd1b3VzT3B0aW9uRXJyb3InLCAnTk9fREVGQVVMVCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG9wdHBhcnNlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkgYi9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQppbmRleCA5MDFkNGIyLi5hMzVlZDEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBidWlsdGlucwogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBjb3B5CiBpbXBvcnQgZ2MKQEAgLTk3LDYgKzk4LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QoKS51cGRhdGUsICgpLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPcmRlcmVkRGljdC51cGRhdGUpCiAKKyAgICBkZWYgdGVzdF9pbml0X2NhbGxzKHNlbGYpOgorICAgICAgICBjYWxscyA9IFtdCisgICAgICAgIGNsYXNzIFNwYW06CisgICAgICAgICAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgICAgICAgICBjYWxscy5hcHBlbmQoJ2tleXMnKQorICAgICAgICAgICAgICAgIHJldHVybiAoKQorICAgICAgICAgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICAgICAgICAgIGNhbGxzLmFwcGVuZCgnaXRlbXMnKQorICAgICAgICAgICAgICAgIHJldHVybiAoKQorCisgICAgICAgIHNlbGYuT3JkZXJlZERpY3QoU3BhbSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxzLCBbJ2tleXMnXSkKKwogICAgIGRlZiB0ZXN0X2Zyb21rZXlzKHNlbGYpOgogICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJykKQEAgLTI5OCw5ICszMTIsMTEgQEAKICAgICAgICAgIyBkbyBub3Qgc2F2ZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGlmIG5vdCBuZWVkZWQKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG9kLl9fZGljdF9fLCBkaWN0KQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvZC5fX3JlZHVjZV9fKClbMl0pCiAgICAgICAgIG9kLnggPSAxMAotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShvZC5fX3JlZHVjZV9fKClbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2QuX19kaWN0X19bJ3gnXSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2QuX19yZWR1Y2VfXygpWzJdLCB7J3gnOiAxMH0pCiAKICAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgogICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKQEAgLTQwMyw2ICs0MTksMTQgQEAKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgqKmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKG9kKSwgc3lzLmdldHNpemVvZihkKSkKIAorICAgIGRlZiB0ZXN0X3ZpZXdzKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKKyAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI0Mjg2CisgICAgICAgIHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nIHllc3RlcmRheSBiZWZvcmUgZGF3bicuc3BsaXQoKQorICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Qua2V5cygpLCBkaWN0KG9kKS5rZXlzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2QuaXRlbXMoKSwgZGljdChvZCkuaXRlbXMoKSkKKwogICAgIGRlZiB0ZXN0X292ZXJyaWRlX3VwZGF0ZShzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdXBkYXRlKCkgd2l0aG91dCBicmVha2luZyBfX2luaXRfXygpCkBAIC02MTEsNiArNjM1LDI1IEBACiAgICAgT3JkZXJlZERpY3QgPSBweV9jb2xsLk9yZGVyZWREaWN0CiAKIAorY2xhc3MgQ1B5dGhvbkJ1aWx0aW5EaWN0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJ1aWx0aW4gZGljdCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyLgorCisgICAgUmV1c2Ugc29tZSBvZiB0ZXN0cyBpbiBPcmRlcmVkRGljdCBzZWxlY3RpdmVseS4KKyAgICAiIiIKKworICAgIG1vZHVsZSA9IGJ1aWx0aW5zCisgICAgT3JkZXJlZERpY3QgPSBkaWN0CisKK2ZvciBtZXRob2QgaW4gKAorICAgICJ0ZXN0X2luaXQgdGVzdF91cGRhdGUgdGVzdF9hYmMgdGVzdF9jbGVhciB0ZXN0X2RlbGl0ZW0gIiArCisgICAgInRlc3Rfc2V0aXRlbSB0ZXN0X2RldGVjdF9kZWxldGlvbl9kdXJpbmdfaXRlcmF0aW9uICIgKworICAgICJ0ZXN0X3BvcGl0ZW0gdGVzdF9yZWluc2VydCB0ZXN0X292ZXJyaWRlX3VwZGF0ZSAiICsKKyAgICAidGVzdF9oaWdobHlfbmVzdGVkIHRlc3RfaGlnaGx5X25lc3RlZF9zdWJjbGFzcyAiICsKKyAgICAidGVzdF9kZWxpdGVtX2hhc2hfY29sbGlzaW9uICIpLnNwbGl0KCk6CisgICAgc2V0YXR0cihDUHl0aG9uQnVpbHRpbkRpY3RUZXN0cywgbWV0aG9kLCBnZXRhdHRyKE9yZGVyZWREaWN0VGVzdHMsIG1ldGhvZCkpCitkZWwgbWV0aG9kCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19jb2xsLCAncmVxdWlyZXMgdGhlIEMgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbnMgbW9kdWxlJykKIGNsYXNzIENQeXRob25PcmRlcmVkRGljdFRlc3RzKE9yZGVyZWREaWN0VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjI1LDE4ICs2NjgsMjAgQEAKICAgICAgICAgc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgogCi0gICAgICAgIGJhc2ljc2l6ZSA9IHNpemUoJ24yUCcgKyAnM1BuUG4yUCcpICsgY2FsY3NpemUoJzJuUG4nKQotICAgICAgICBlbnRyeXNpemUgPSBjYWxjc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnUCcpCisgICAgICAgIGJhc2ljc2l6ZSA9IHNpemUoJ25RMlAnICsgJzNQblBuMlAnKSArIGNhbGNzaXplKCcyblAybicpCisKKyAgICAgICAgZW50cnlzaXplID0gY2FsY3NpemUoJ24yUCcpCisgICAgICAgIHAgPSBjYWxjc2l6ZSgnUCcpCiAgICAgICAgIG5vZGVzaXplID0gY2FsY3NpemUoJ1BuMlAnKQogCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KnAgKyA4ICsgNSplbnRyeXNpemUpICAjIDhieXRlIGluZGljaWVzICsgOCoyLy8zICogZW50cnkgdGFibGUKICAgICAgICAgb2QueCA9IDEKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqZW50cnlzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplKQogICAgICAgICBvZC51cGRhdGUoWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzKV0pCi0gICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KmVudHJ5c2l6ZSArIDMqbm9kZXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KnAgKyA4ICsgNSplbnRyeXNpemUgKyAzKm5vZGVzaXplKQogICAgICAgICBvZC51cGRhdGUoWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzLCAxMCldKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgMTYqZW50cnlzaXplICsgMTAqbm9kZXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyAxNipwICsgMTYgKyAxMCplbnRyeXNpemUgKyAxMCpub2Rlc2l6ZSkKIAogICAgICAgICBjaGVjayhvZC5rZXlzKCksIHNpemUoJ1AnKSkKICAgICAgICAgY2hlY2sob2QuaXRlbXMoKSwgc2l6ZSgnUCcpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcy5weSBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKaW5kZXggOTcyMDIxMC4uMTc0NmNhNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zLnB5CkBAIC0xNSw3ICsxNSw2IEBACiBpbXBvcnQgbW1hcAogaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCi1pbXBvcnQgcGxhdGZvcm0KIGltcG9ydCByZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHNpZ25hbApAQCAtNjUsNiArNjQsOCBAQAogICAgIElOVF9NQVggPSBQWV9TU0laRV9UX01BWCA9IHN5cy5tYXhzaXplCiAKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB1bml4X3NoZWxsCisKIAogcm9vdF9pbl9wb3NpeCA9IEZhbHNlCiBpZiBoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpOgpAQCAtODIsNiArODMsMzIgQEAKICMgSXNzdWUgIzE0MTEwOiBTb21lIHRlc3RzIGZhaWwgb24gRnJlZUJTRCBpZiB0aGUgdXNlciBpcyBpbiB0aGUgd2hlZWwgZ3JvdXAuCiBIQVZFX1dIRUVMX0dST1VQID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSBhbmQgb3MuZ2V0Z2lkKCkgPT0gMAogCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgaWdub3JlX2RlcHJlY2F0aW9uX3dhcm5pbmdzKG1zZ19yZWdleCwgcXVpZXQ9RmFsc2UpOgorICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygobXNnX3JlZ2V4LCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWlldD1xdWlldCk6CisgICAgICAgIHlpZWxkCisKKworZGVmIHJlcXVpcmVzX29zX2Z1bmMobmFtZSk6CisgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgbmFtZSksICdyZXF1aXJlcyBvcy4lcycgJSBuYW1lKQorCisKK2NsYXNzIF9QYXRoTGlrZShvcy5QYXRoTGlrZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD0iIik6CisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYucGF0aCkKKworICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGF0aCwgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworCiBkZWYgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGNvbnRlbnQ9Yidjb250ZW50Jyk6CiAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAieGIiLCAwKSBhcyBmcDoKICAgICAgICAgZnAud3JpdGUoY29udGVudCkKQEAgLTE0NSw5ICsxNzIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJuZWVkcyBJTlRfTUFYIDwgUFlfU1NJWkVfVF9NQVgiKQogICAgIEBzdXBwb3J0LmJpZ21lbXRlc3Qoc2l6ZT1JTlRfTUFYICsgMTAsIG1lbXVzZT0xLCBkcnlfcnVuPUZhbHNlKQogICAgIGRlZiB0ZXN0X2xhcmdlX3JlYWQoc2VsZiwgc2l6ZSk6Ci0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShiJ3Rlc3QnKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBjcmVhdGVfZmlsZShzdXBwb3J0LlRFU1RGTiwgYid0ZXN0JykKIAogICAgICAgICAjIElzc3VlICMyMTkzMjogTWFrZSBzdXJlIHRoYXQgb3MucmVhZCgpIGRvZXMgbm90IHJhaXNlIGFuCiAgICAgICAgICMgT3ZlcmZsb3dFcnJvciBmb3Igc2l6ZSBsYXJnZXIgdGhhbiBJTlRfTUFYCkBAIC0yMDQsMTEgKzIzMCwxMiBAQAogCiAgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKICAgICAgICAgVEVTVEZOMiA9IHN1cHBvcnQuVEVTVEZOICsgIi4yIgotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoIjEiKQotICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgiMiIpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIFRFU1RGTjIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgVEVTVEZOMikKKworICAgICAgICBjcmVhdGVfZmlsZShzdXBwb3J0LlRFU1RGTiwgYiIxIikKKyAgICAgICAgY3JlYXRlX2ZpbGUoVEVTVEZOMiwgYiIyIikKKwogICAgICAgICBvcy5yZXBsYWNlKHN1cHBvcnQuVEVTVEZOLCBURVNURk4yKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgb3Muc3RhdCwgc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAncicpIGFzIGY6CkBAIC0zMDksOSArMzM2LDcgQEAKICAgICAgICAgICAgIGZuYW1lID0gc2VsZi5mbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IGVuY29kZSAlYSBmb3IgdGhlIGZpbGVzeXN0ZW0iICUgc2VsZi5mbmFtZSkKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXRfYXR0cmlidXRlcyhmbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCiAKICAgICBkZWYgdGVzdF9zdGF0X3Jlc3VsdF9waWNrbGUoc2VsZik6CiAgICAgICAgIHJlc3VsdCA9IG9zLnN0YXQoc2VsZi5mbmFtZSkKQEAgLTQ2MiwxOSArNDg3LDE0IEBACiAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzZWxmLmRpcm5hbWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYuZGlybmFtZSkKLSAgICAgICAgd2l0aCBvcGVuKHNlbGYuZm5hbWUsICd3YicpIGFzIGZwOgotICAgICAgICAgICAgZnAud3JpdGUoYiJBQkMiKQorICAgICAgICBjcmVhdGVfZmlsZShzZWxmLmZuYW1lKQogCiAgICAgICAgIGRlZiByZXN0b3JlX2Zsb2F0X3RpbWVzKHN0YXRlKToKLSAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLQorICAgICAgICAgICAgd2l0aCBpZ25vcmVfZGVwcmVjYXRpb25fd2FybmluZ3MoJ3N0YXRfZmxvYXRfdGltZXMnKToKICAgICAgICAgICAgICAgICBvcy5zdGF0X2Zsb2F0X3RpbWVzKHN0YXRlKQogCiAgICAgICAgICMgZW5zdXJlIHRoYXQgc3RfYXRpbWUgYW5kIHN0X210aW1lIGFyZSBmbG9hdAotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLQorICAgICAgICB3aXRoIGlnbm9yZV9kZXByZWNhdGlvbl93YXJuaW5ncygnc3RhdF9mbG9hdF90aW1lcycpOgogICAgICAgICAgICAgb2xkX2Zsb2F0X3RpbWVzID0gb3Muc3RhdF9mbG9hdF90aW1lcygtMSkKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2Zsb2F0X3RpbWVzLCBvbGRfZmxvYXRfdGltZXMpCiAKQEAgLTU2Niw3ICs1ODYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJmZCBzdXBwb3J0IGZvciB1dGltZSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCiAgICAgZGVmIHRlc3RfdXRpbWVfZmQoc2VsZik6CiAgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgbnMpOgotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InKSBhcyBmcDoKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJywgMCkgYXMgZnA6CiAgICAgICAgICAgICAgICAgIyB1c2UgYSBmaWxlIGRlc2NyaXB0b3IgdG8gdGVzdCBmdXRpbWVucyh0aW1lc3BlYykKICAgICAgICAgICAgICAgICAjIG9yIGZ1dGltZXModGltZXZhbCkKICAgICAgICAgICAgICAgICBvcy51dGltZShmcC5maWxlbm8oKSwgbnM9bnMpCkBAIC02NzgsMTggKzY5OCwyMCBAQAogICAgICAgICByZXR1cm4gb3MuZW52aXJvbgogCiAgICAgIyBCdWcgMTExMDQ3OAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnBhdGguZXhpc3RzKCcvYmluL3NoJyksICdyZXF1aXJlcyAvYmluL3NoJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh1bml4X3NoZWxsIGFuZCBvcy5wYXRoLmV4aXN0cyh1bml4X3NoZWxsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgYSBzaGVsbCcpCiAgICAgZGVmIHRlc3RfdXBkYXRlMihzZWxmKToKICAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCiAgICAgICAgIG9zLmVudmlyb24udXBkYXRlKEhFTExPPSJXb3JsZCIpCi0gICAgICAgIHdpdGggb3MucG9wZW4oIi9iaW4vc2ggLWMgJ2VjaG8gJEhFTExPJyIpIGFzIHBvcGVuOgorICAgICAgICB3aXRoIG9zLnBvcGVuKCIlcyAtYyAnZWNobyAkSEVMTE8nIiAlIHVuaXhfc2hlbGwpIGFzIHBvcGVuOgogICAgICAgICAgICAgdmFsdWUgPSBwb3Blbi5yZWFkKCkuc3RyaXAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgIldvcmxkIikKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnBhdGguZXhpc3RzKCcvYmluL3NoJyksICdyZXF1aXJlcyAvYmluL3NoJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh1bml4X3NoZWxsIGFuZCBvcy5wYXRoLmV4aXN0cyh1bml4X3NoZWxsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgYSBzaGVsbCcpCiAgICAgZGVmIHRlc3Rfb3NfcG9wZW5faXRlcihzZWxmKToKLSAgICAgICAgd2l0aCBvcy5wb3BlbigKLSAgICAgICAgICAgICIvYmluL3NoIC1jICdlY2hvIFwibGluZTFcbmxpbmUyXG5saW5lM1wiJyIpIGFzIHBvcGVuOgorICAgICAgICB3aXRoIG9zLnBvcGVuKCIlcyAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciCisgICAgICAgICAgICAgICAgICAgICAgJSB1bml4X3NoZWxsKSBhcyBwb3BlbjoKICAgICAgICAgICAgIGl0ID0gaXRlcihwb3BlbikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMVxuIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMlxuIikKQEAgLTgyMCw2ICs4NDIsNyBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBqb2luID0gb3MucGF0aC5qb2luCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc3VwcG9ydC5URVNURk4pCiAKICAgICAgICAgIyBCdWlsZDoKICAgICAgICAgIyAgICAgVEVTVEZOLwpAQCAtODUyLDkgKzg3NSw4IEBACiAgICAgICAgIG9zLm1ha2VkaXJzKHQyX3BhdGgpCiAKICAgICAgICAgZm9yIHBhdGggaW4gdG1wMV9wYXRoLCB0bXAyX3BhdGgsIHRtcDNfcGF0aCwgdG1wNF9wYXRoOgotICAgICAgICAgICAgZiA9IG9wZW4ocGF0aCwgInciKQotICAgICAgICAgICAgZi53cml0ZSgiSSdtICIgKyBwYXRoICsgIiBhbmQgcHJvdWQgb2YgaXQuICBCbGFtZSB0ZXN0X29zLlxuIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ4IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJJJ20gIiArIHBhdGggKyAiIGFuZCBwcm91ZCBvZiBpdC4gIEJsYW1lIHRlc3Rfb3MuXG4iKQogCiAgICAgICAgIGlmIHN1cHBvcnQuY2FuX3N5bWxpbmsoKToKICAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5hYnNwYXRoKHQyX3BhdGgpLCBzZWxmLmxpbmtfcGF0aCkKQEAgLTg3OSwxMCArOTAxLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzIgKyBmbGlwcGVkXSwgKHNlbGYuc3ViMTFfcGF0aCwgW10sIFtdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMyAtIDIgKiBmbGlwcGVkXSwgc2VsZi5zdWIyX3RyZWUpCiAKLSAgICBkZWYgdGVzdF93YWxrX3BydW5lKHNlbGYpOgorICAgIGRlZiB0ZXN0X3dhbGtfcHJ1bmUoc2VsZiwgd2Fsa19wYXRoPU5vbmUpOgorICAgICAgICBpZiB3YWxrX3BhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHdhbGtfcGF0aCA9IHNlbGYud2Fsa19wYXRoCiAgICAgICAgICMgUHJ1bmUgdGhlIHNlYXJjaC4KICAgICAgICAgYWxsID0gW10KLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIHNlbGYud2FsayhzZWxmLndhbGtfcGF0aCk6CisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBzZWxmLndhbGsod2Fsa19wYXRoKToKICAgICAgICAgICAgIGFsbC5hcHBlbmQoKHJvb3QsIGRpcnMsIGZpbGVzKSkKICAgICAgICAgICAgICMgRG9uJ3QgZGVzY2VuZCBpbnRvIFNVQjEuCiAgICAgICAgICAgICBpZiAnU1VCMScgaW4gZGlyczoKQEAgLTg5MSwxNiArOTE1LDE5IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYud2Fsa19wYXRoLCBbIlNVQjIiXSwgWyJ0bXAxIl0pKQorICAgICAgICAgICAgICAgICAgICAgICAgIChzdHIod2Fsa19wYXRoKSwgWyJTVUIyIl0sIFsidG1wMSJdKSkKIAogICAgICAgICBhbGxbMV1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxXSwgc2VsZi5zdWIyX3RyZWUpCiAKKyAgICBkZWYgdGVzdF9maWxlX2xpa2VfcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3dhbGtfcHJ1bmUoX1BhdGhMaWtlKHNlbGYud2Fsa19wYXRoKSkKKwogICAgIGRlZiB0ZXN0X3dhbGtfYm90dG9tX3VwKHNlbGYpOgogICAgICAgICAjIFdhbGsgYm90dG9tLXVwLgogICAgICAgICBhbGwgPSBsaXN0KHNlbGYud2FsayhzZWxmLndhbGtfcGF0aCwgdG9wZG93bj1GYWxzZSkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgNCwgYWxsKQogICAgICAgICAjIFdlIGNhbid0IGtub3cgd2hpY2ggb3JkZXIgU1VCMSBhbmQgU1VCMiB3aWxsIGFwcGVhciBpbi4KICAgICAgICAgIyBOb3QgZmxpcHBlZDogIFNVQjExLCBTVUIxLCBTVUIyLCBURVNURk4KICAgICAgICAgIyAgICAgZmxpcHBlZDogIFNVQjIsIFNVQjExLCBTVUIxLCBURVNURk4KQEAgLTkzMCwyMiArOTU3LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRGlkbid0IGZvbGxvdyBzeW1saW5rIHdpdGggZm9sbG93bGlua3M9VHJ1ZSIpCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICMgVGVhciBldmVyeXRoaW5nIGRvd24uICBUaGlzIGlzIGEgZGVjZW50IHVzZSBmb3IgYm90dG9tLXVwIG9uCi0gICAgICAgICMgV2luZG93cywgd2hpY2ggZG9lc24ndCBoYXZlIGEgcmVjdXJzaXZlIGRlbGV0ZSBjb21tYW5kLiAgVGhlCi0gICAgICAgICMgKG5vdCBzbykgc3VidGxldHkgaXMgdGhhdCBybWRpciB3aWxsIGZhaWwgdW5sZXNzIHRoZSBkaXIncwotICAgICAgICAjIGtpZHMgYXJlIHJlbW92ZWQgZmlyc3QsIHNvIGJvdHRvbSB1cCBpcyBlc3NlbnRpYWwuCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHN1cHBvcnQuVEVTVEZOLCB0b3Bkb3duPUZhbHNlKToKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgotICAgICAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2xpbmsoZGlybmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRpcm5hbWUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRpcm5hbWUpCi0gICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotCiAgICAgZGVmIHRlc3Rfd2Fsa19iYWRfZGlyKHNlbGYpOgogICAgICAgICAjIFdhbGsgdG9wLWRvd24uCiAgICAgICAgIGVycm9ycyA9IFtdCkBAIC0xMDI4LDI3ICsxMDM5LDExIEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgbmV3ZmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZmQsIG1pbmZkKQogCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAjIGNsZWFudXAKLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgotICAgICAgICAgICAgICAgIHN0ID0gb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgICAgICAgICAgaWYgc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpOgotICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9cm9vdGZkKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lLCBkaXJfZmQ9cm9vdGZkKQotICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLQogY2xhc3MgQnl0ZXNXYWxrVGVzdHMoV2Fsa1Rlc3RzKToKICAgICAiIiJUZXN0cyBmb3Igb3Mud2FsaygpIHdpdGggYnl0ZXMuIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBlcigpLnNldFVwKCkKICAgICAgICAgc2VsZi5zdGFjayA9IGNvbnRleHRsaWIuRXhpdFN0YWNrKCkKLSAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgotICAgICAgICAgICAgc2VsZi5zdGFjay5lbnRlcl9jb250ZXh0KHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCkpCi0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5zdGFjay5jbG9zZSgpCkBAIC0xMjI1LDggKzEyMjAsNyBAQAogICAgICAgICBvcy5ta2RpcihkaXJhKQogICAgICAgICBkaXJiID0gb3MucGF0aC5qb2luKGRpcmEsICdkaXJiJykKICAgICAgICAgb3MubWtkaXIoZGlyYikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkaXJhLCAnZmlsZS50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgndGV4dCcpCisgICAgICAgIGNyZWF0ZV9maWxlKG9zLnBhdGguam9pbihkaXJhLCAnZmlsZS50eHQnKSkKICAgICAgICAgb3MucmVtb3ZlZGlycyhkaXJiKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGRpcmIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyYSkpCkBAIC0xMjM3LDggKzEyMzEsNyBAQAogICAgICAgICBvcy5ta2RpcihkaXJhKQogICAgICAgICBkaXJiID0gb3MucGF0aC5qb2luKGRpcmEsICdkaXJiJykKICAgICAgICAgb3MubWtkaXIoZGlyYikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkaXJiLCAnZmlsZS50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgndGV4dCcpCisgICAgICAgIGNyZWF0ZV9maWxlKG9zLnBhdGguam9pbihkaXJiLCAnZmlsZS50eHQnKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKICAgICAgICAgICAgIG9zLnJlbW92ZWRpcnMoZGlyYikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRpcmIpKQpAQCAtMTI0OCw3ICsxMjQxLDcgQEAKIAogY2xhc3MgRGV2TnVsbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZXZudWxsKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3diJykgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3YicsIDApIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGInaGVsbG8nKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAncmInKSBhcyBmOgpAQCAtMTI2NSw2ICsxMjU4LDcgQEAKIAogICAgIGRlZiB0ZXN0X3VyYW5kb21fdmFsdWUoc2VsZik6CiAgICAgICAgIGRhdGExID0gb3MudXJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRhdGExLCBieXRlcykKICAgICAgICAgZGF0YTIgPSBvcy51cmFuZG9tKDE2KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhdGExLCBkYXRhMikKIApAQCAtMTI4NSw2ICsxMjc5LDQ5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRyYW5kb20nKSwgJ25lZWQgb3MuZ2V0cmFuZG9tKCknKQorY2xhc3MgR2V0UmFuZG9tVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmdldHJhbmRvbSgxKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRU5PU1lTOgorICAgICAgICAgICAgICAgICMgUHl0aG9uIGNvbXBpbGVkIG9uIGEgbW9yZSByZWNlbnQgTGludXggdmVyc2lvbgorICAgICAgICAgICAgICAgICMgdGhhbiB0aGUgY3VycmVudCBMaW51eCBrZXJuZWwKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZ2V0cmFuZG9tKCkgc3lzY2FsbCBmYWlscyB3aXRoIEVOT1NZUyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fdHlwZShzZWxmKToKKyAgICAgICAgZGF0YSA9IG9zLmdldHJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRhdGEsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb20wKHNlbGYpOgorICAgICAgICBlbXB0eSA9IG9zLmdldHJhbmRvbSgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVtcHR5LCBiJycpCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fcmFuZG9tKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvcywgJ0dSTkRfUkFORE9NJykpCisKKyAgICAgICAgIyBEb24ndCB0ZXN0IG9zLmdldHJhbmRvbSgxLCBvcy5HUk5EX1JBTkRPTSkgdG8gbm90IGNvbnN1bWUgdGhlIHJhcmUKKyAgICAgICAgIyByZXNvdXJjZSAvZGV2L3JhbmRvbQorCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tX25vbmJsb2NrKHNlbGYpOgorICAgICAgICAjIFRoZSBjYWxsIG11c3Qgbm90IGZhaWwuIENoZWNrIGFsc28gdGhhdCB0aGUgZmxhZyBleGlzdHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZ2V0cmFuZG9tKDEsIG9zLkdSTkRfTk9OQkxPQ0spCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAjIFN5c3RlbSB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV92YWx1ZShzZWxmKToKKyAgICAgICAgZGF0YTEgPSBvcy5nZXRyYW5kb20oMTYpCisgICAgICAgIGRhdGEyID0gb3MuZ2V0cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhdGExLCBkYXRhMikKKworCiAjIG9zLnVyYW5kb20oKSBkb2Vzbid0IHVzZSBhIGZpbGUgZGVzY3JpcHRvciB3aGVuIGl0IGlzIGltcGxlbWVudGVkIHdpdGggdGhlCiAjIGdldGVudHJvcHkoKSBmdW5jdGlvbiwgdGhlIGdldHJhbmRvbSgpIGZ1bmN0aW9uIG9yIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsCiBPU19VUkFORE9NX0RPTlRfVVNFX0ZEID0gKApAQCAtMTMzNSw5ICsxMzcyLDkgQEAKICAgICBkZWYgdGVzdF91cmFuZG9tX2ZkX3Jlb3BlbmVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICMyMTIwNzogdXJhbmRvbSgpIHNob3VsZCBkZXRlY3QgaXRzIGZkIHRvIC9kZXYvdXJhbmRvbQogICAgICAgICAjIGNoYW5nZWQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCByZW9wZW4gaXQuCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoYiJ4IiAqIDI1NikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiIngiICogMjU2KQorCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBpbXBvcnQgc3lzCkBAIC0xMzk5LDYgKzE0MzYsNyBAQAogICAgICAgICBvcy5leGVjdmUgPSBvcmlnX2V4ZWN2ZQogICAgICAgICBvcy5kZWZwYXRoID0gb3JpZ19kZWZwYXRoCiAKKwogY2xhc3MgRXhlY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcElmKFVTSU5HX0xJTlVYVEhSRUFEUywKICAgICAgICAgICAgICAgICAgICAgICJhdm9pZCB0cmlnZ2VyaW5nIGEgbGludXh0aHJlYWRzIGJ1Zzogc2VlIGlzc3VlICM0OTcwIikKQEAgLTE0NjYsNiArMTUwNCwxOCBAQAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKIGNsYXNzIFdpbjMyRXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBleGlzdHMgPSBGYWxzZQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBleGlzdHMgPSBUcnVlCisgICAgICAgICAgICBzZWxmLmZhaWwoImZpbGUgJXMgbXVzdCBub3QgZXhpc3Q7IG9zLnN0YXQgZmFpbGVkIHdpdGggJXMiCisgICAgICAgICAgICAgICAgICAgICAgJSAoc3VwcG9ydC5URVNURk4sIGV4YykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoImZpbGUgJXMgbXVzdCBub3QgZXhpc3QiICUgc3VwcG9ydC5URVNURk4pCisKICAgICBkZWYgdGVzdF9yZW5hbWUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnJlbmFtZSwgc3VwcG9ydC5URVNURk4sIHN1cHBvcnQuVEVTVEZOKyIuYmFrIikKIApAQCAtMTQ3NiwxMiArMTUyNiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5jaGRpciwgc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF9ta2RpcihzZWxmKToKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikKLSAgICAgICAgdHJ5OgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIngiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWtkaXIsIHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBvcy51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF91dGltZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCBOb25lKQpAQCAtMTQ4OSw2ICsxNTM3LDcgQEAKICAgICBkZWYgdGVzdF9jaG1vZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MuY2htb2QsIHN1cHBvcnQuVEVTVEZOLCAwKQogCisKIGNsYXNzIFRlc3RJbnZhbGlkRkQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHNpbmdsZXMgPSBbImZjaGRpciIsICJkdXAiLCAiZmRvcGVuIiwgImZkYXRhc3luYyIsICJmc3RhdCIsCiAgICAgICAgICAgICAgICAiZnN0YXR2ZnMiLCAiZnN5bmMiLCAidGNnZXRwZ3JwIiwgInR0eW5hbWUiXQpAQCAtMTYwMCwxMiArMTY0OSw5IEBACiAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZpbGUpCiAKICAgICBkZWYgX3Rlc3RfbGluayhzZWxmLCBmaWxlMSwgZmlsZTIpOgotICAgICAgICB3aXRoIG9wZW4oZmlsZTEsICJ3IikgYXMgZjE6Ci0gICAgICAgICAgICBmMS53cml0ZSgidGVzdCIpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGUxKQogCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgb3MubGluayhmaWxlMSwgZmlsZTIpCisgICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQogICAgICAgICB3aXRoIG9wZW4oZmlsZTEsICJyIikgYXMgZjEsIG9wZW4oZmlsZTIsICJyIikgYXMgZjI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lb3BlbmZpbGUoZjEuZmlsZW5vKCksIGYyLmZpbGVubygpKSkKIApAQCAtMTg5Niw2ICsxOTQyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihzdXBwb3J0LlRFU1RGTikpLAogICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlZF9wYXRocykKKwogICAgICAgICAjIGJ5dGVzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc29ydGVkKG9zLmxpc3RkaXIob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSksCkBAIC0xOTA5LDYgKzE5NTYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHNvcnRlZChvcy5saXN0ZGlyKHBhdGgpKSwKICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZWRfcGF0aHMpCisKICAgICAgICAgIyBieXRlcwogICAgICAgICBwYXRoID0gYidcXFxcP1xcJyArIG9zLmZzZW5jb2RlKG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0xOTg4LDUxICsyMDM2LDQzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQobGluayksIG9zLnN0YXQobGluaykpCiAKICAgICAgICAgYnl0ZXNfbGluayA9IG9zLmZzZW5jb2RlKGxpbmspCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KHRhcmdldCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KGJ5dGVzX2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKIAogICAgIGRlZiB0ZXN0XzEyMDg0KHNlbGYpOgogICAgICAgICBsZXZlbDEgPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIGxldmVsMiA9IG9zLnBhdGguam9pbihsZXZlbDEsICJsZXZlbDIiKQogICAgICAgICBsZXZlbDMgPSBvcy5wYXRoLmpvaW4obGV2ZWwyLCAibGV2ZWwzIikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBsZXZlbDEpCisKKyAgICAgICAgb3MubWtkaXIobGV2ZWwxKQorICAgICAgICBvcy5ta2RpcihsZXZlbDIpCisgICAgICAgIG9zLm1rZGlyKGxldmVsMykKKworICAgICAgICBmaWxlMSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4obGV2ZWwxLCAiZmlsZTEiKSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCisKKyAgICAgICAgb3JpZ19kaXIgPSBvcy5nZXRjd2QoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5ta2RpcihsZXZlbDEpCi0gICAgICAgICAgICBvcy5ta2RpcihsZXZlbDIpCi0gICAgICAgICAgICBvcy5ta2RpcihsZXZlbDMpCisgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDIpCisgICAgICAgICAgICBsaW5rID0gb3MucGF0aC5qb2luKGxldmVsMiwgImxpbmsiKQorICAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLnJlbHBhdGgoZmlsZTEpLCAibGluayIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJsaW5rIiwgb3MubGlzdGRpcihvcy5nZXRjd2QoKSkpCiAKLSAgICAgICAgICAgIGZpbGUxID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihsZXZlbDEsICJmaWxlMSIpKQorICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gdGhlIHNhbWUgZGlyIGFzIHRoZSBsaW5rCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLCBvcy5zdGF0KCJsaW5rIikpCiAKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlMSwgInciKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUoImZpbGUxIikKKyAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGJlbG93IHRoZSBsaW5rCisgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCiAKLSAgICAgICAgICAgIG9yaWdfZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDIpCi0gICAgICAgICAgICAgICAgbGluayA9IG9zLnBhdGguam9pbihsZXZlbDIsICJsaW5rIikKLSAgICAgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGgucmVscGF0aChmaWxlMSksICJsaW5rIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJsaW5rIiwgb3MubGlzdGRpcihvcy5nZXRjd2QoKSkpCi0KLSAgICAgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSB0aGUgc2FtZSBkaXIgYXMgdGhlIGxpbmsKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLCBvcy5zdGF0KCJsaW5rIikpCi0KLSAgICAgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBiZWxvdyB0aGUgbGluawotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQotCi0gICAgICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYWJvdmUgdGhlIGxpbmsKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDMpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgb3MuY2hkaXIob3JpZ19kaXIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgIHNlbGYuZmFpbChlcnIpCisgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBhYm92ZSB0aGUgbGluaworICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGUxKQotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShsZXZlbDEpCisgICAgICAgICAgICBvcy5jaGRpcihvcmlnX2RpcikKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKQEAgLTIwNzAsNyArMjExMCw3IEBACiBjbGFzcyBOb25Mb2NhbFN5bWxpbmtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgICIiIgorICAgICAgICByIiIiCiAgICAgICAgIENyZWF0ZSB0aGlzIHN0cnVjdHVyZToKIAogICAgICAgICBiYXNlCkBAIC0yMTQxLDExICsyMTgxLDExMCBAQAogCiAgICAgZGVmIHRlc3Rfd2FpdHBpZChzZWxmKToKICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ3Bhc3MnXQotICAgICAgICBwaWQgPSBvcy5zcGF3bnYob3MuUF9OT1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgICMgQWRkIGFuIGltcGxpY2l0IHRlc3QgZm9yIFB5VW5pY29kZV9GU0NvbnZlcnRlcigpLgorICAgICAgICBwaWQgPSBvcy5zcGF3bnYob3MuUF9OT1dBSVQsIF9QYXRoTGlrZShhcmdzWzBdKSwgYXJncykKICAgICAgICAgc3RhdHVzID0gb3Mud2FpdHBpZChwaWQsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAocGlkLCAwKSkKIAogCitjbGFzcyBTcGF3blRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgY3JlYXRlX2FyZ3Moc2VsZiwgKiwgd2l0aF9lbnY9RmFsc2UsIHVzZV9ieXRlcz1GYWxzZSk6CisgICAgICAgIHNlbGYuZXhpdGNvZGUgPSAxNworCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBpZiBub3Qgd2l0aF9lbnY6CisgICAgICAgICAgICBjb2RlID0gJ2ltcG9ydCBzeXM7IHN5cy5leGl0KCVzKScgJSBzZWxmLmV4aXRjb2RlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmVudiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICAgICAgICAgICMgY3JlYXRlIGFuIHVuaXF1ZSBrZXkKKyAgICAgICAgICAgIHNlbGYua2V5ID0gc3RyKHV1aWQudXVpZDQoKSkKKyAgICAgICAgICAgIHNlbGYuZW52W3NlbGYua2V5XSA9IHNlbGYua2V5CisgICAgICAgICAgICAjIHJlYWQgdGhlIHZhcmlhYmxlIGZyb20gb3MuZW52aXJvbiB0byBjaGVjayB0aGF0IGl0IGV4aXN0cworICAgICAgICAgICAgY29kZSA9ICgnaW1wb3J0IHN5cywgb3M7IG1hZ2ljID0gb3MuZW52aXJvblslcl07IHN5cy5leGl0KCVzKScKKyAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5rZXksIHNlbGYuZXhpdGNvZGUpKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKGNvZGUpCisKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgZmlsZW5hbWVdCisgICAgICAgIGlmIHVzZV9ieXRlczoKKyAgICAgICAgICAgIGFyZ3MgPSBbb3MuZnNlbmNvZGUoYSkgZm9yIGEgaW4gYXJnc10KKyAgICAgICAgICAgIHNlbGYuZW52ID0ge29zLmZzZW5jb2RlKGspOiBvcy5mc2VuY29kZSh2KQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5lbnYuaXRlbXMoKX0KKworICAgICAgICByZXR1cm4gYXJncworCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdubCcpCisgICAgZGVmIHRlc3Rfc3Bhd25sKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25sKG9zLlBfV0FJVCwgYXJnc1swXSwgKmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25sZScpCisgICAgZGVmIHRlc3Rfc3Bhd25sZShzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmxlKG9zLlBfV0FJVCwgYXJnc1swXSwgKmFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdubHAnKQorICAgIGRlZiB0ZXN0X3NwYXdubHAoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmxwKG9zLlBfV0FJVCwgYXJnc1swXSwgKmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25scGUnKQorICAgIGRlZiB0ZXN0X3NwYXdubHBlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubHBlKG9zLlBfV0FJVCwgYXJnc1swXSwgKmFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudicpCisgICAgZGVmIHRlc3Rfc3Bhd252KHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252KG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZlJykKKyAgICBkZWYgdGVzdF9zcGF3bnZlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudmUob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZwJykKKyAgICBkZWYgdGVzdF9zcGF3bnZwKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252cChvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252cGUnKQorICAgIGRlZiB0ZXN0X3NwYXdudnBlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudnBlKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252JykKKyAgICBkZWYgdGVzdF9ub3dhaXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgcGlkID0gb3Muc3Bhd252KG9zLlBfTk9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICByZXN1bHQgPSBvcy53YWl0cGlkKHBpZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIHBpZCkKKyAgICAgICAgc3RhdHVzID0gcmVzdWx0WzFdCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdXSUZFWElURUQnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5XSUZFWElURUQoc3RhdHVzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuV0VYSVRTVEFUVVMoc3RhdHVzKSwgc2VsZi5leGl0Y29kZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCBzZWxmLmV4aXRjb2RlIDw8IDgpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252ZScpCisgICAgZGVmIHRlc3Rfc3Bhd252ZV9ieXRlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGJ5dGVzIGhhbmRsaW5nIGluIHBhcnNlX2FyZ2xpc3QgYW5kIHBhcnNlX2Vudmxpc3QgKCMyODExNCkKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSwgdXNlX2J5dGVzPVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252ZShvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisKICMgVGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIFRlc3RDYXNlIGNhdXNlZCBhdCBsZWFzdCB0d28gZGlmZmVyZW50IGVycm9ycyBvbgogIyAqbml4IGJ1aWxkYm90cy4gVGVtcG9yYXJpbHkgc2tpcCB0aGlzIHRvIGxldCB0aGUgYnVpbGRib3RzIG1vdmUgYWxvbmcuCiBAdW5pdHRlc3Quc2tpcCgiU2tpcCBkdWUgdG8gcGxhdGZvcm0vZW52aXJvbm1lbnQgZGlmZmVyZW5jZXMgb24gKk5JWCBidWlsZGJvdHMiKQpAQCAtMjE2OCw4ICsyMzA3LDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmV3X3ByaW8gPSBvcy5nZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpKQogICAgICAgICAgICAgaWYgYmFzZSA+PSAxOSBhbmQgbmV3X3ByaW8gPD0gMTk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCi0gICAgICAidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgYXQgY3VycmVudCBuaWNlIGxldmVsIG9mICVzIiAlIGJhc2UpCisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInVuYWJsZSB0byByZWxpYWJseSB0ZXN0IHNldHByaW9yaXR5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXQgY3VycmVudCBuaWNlIGxldmVsIG9mICVzIiAlIGJhc2UpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3ByaW8sIGJhc2UgKyAxKQogICAgICAgICBmaW5hbGx5OgpAQCAtMjI3OSw4ICsyNDE4LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMua2V5ID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGNscy5EQVRBKQorICAgICAgICBjcmVhdGVfZmlsZShzdXBwb3J0LlRFU1RGTiwgY2xzLkRBVEEpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgpAQCAtMjQzMCwxMCArMjU2OCwxMSBAQAogICAgIGRlZiB0ZXN0X3RyYWlsZXJzKHNlbGYpOgogICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKICAgICAgICAgZmlsZV9kYXRhID0gYiJhYmNkZWYiCi0gICAgICAgIHdpdGggb3BlbihURVNURk4yLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShmaWxlX2RhdGEpCi0gICAgICAgIHdpdGggb3BlbihURVNURk4yLCAncmInKWFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBURVNURk4yKQorCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgVEVTVEZOMikKKyAgICAgICAgY3JlYXRlX2ZpbGUoVEVTVEZOMiwgZmlsZV9kYXRhKQorCisgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAncmInKSBhcyBmOgogICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIGYuZmlsZW5vKCksIDAsIGxlbihmaWxlX2RhdGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnM9W2IiMTIzNCJdKQogICAgICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQpAQCAtMjQ1NiwzNSArMjU5NSwzNyBAQAogZGVmIHN1cHBvcnRzX2V4dGVuZGVkX2F0dHJpYnV0ZXMoKToKICAgICBpZiBub3QgaGFzYXR0cihvcywgInNldHhhdHRyIik6CiAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgdHJ5OgotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ4YiIsIDApIGFzIGZwOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgIGZpbmFsbHk6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgotICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCi0gICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCi0gICAgcmV0dXJuIG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKKworICAgIHJldHVybiBUcnVlCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgIm5vIG5vbi1icm9rZW4gZXh0ZW5kZWQgYXR0cmlidXRlIHN1cHBvcnQiKQorIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCitAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDM5KQogY2xhc3MgRXh0ZW5kZWRBdHRyaWJ1dGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotCiAgICAgZGVmIF9jaGVja194YXR0cnNfc3RyKHNlbGYsIHMsIGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0ciwgKiprd2FyZ3MpOgogICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCi0gICAgICAgIG9wZW4oZm4sICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmbikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZm4pCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorCiAgICAgICAgIGluaXRfeGF0dHIgPSBsaXN0eGF0dHIoZm4pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbml0X3hhdHRyLCBsaXN0KQorCiAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiIiLCAqKmt3YXJncykKICAgICAgICAgeGF0dHIgPSBzZXQoaW5pdF94YXR0cikKICAgICAgICAgeGF0dHIuYWRkKCJ1c2VyLnRlc3QiKQpAQCAtMjQ5MiwxOSArMjYzMywyNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiIiKQogICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiaGVsbG8iLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiaGVsbG8iKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiYnllIiwgb3MuWEFUVFJfQ1JFQVRFLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJieWUiLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJmb28iLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQogICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdDIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCiAgICAgICAgIHJlbW92ZXhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorCiAgICAgICAgIHhhdHRyLnJlbW92ZSgidXNlci50ZXN0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksICoqa3dhcmdzKSwgYiJmb28iKQpAQCAtMjUxNywxMSArMjY2MywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgc2V0KGluaXRfeGF0dHIpIHwgc2V0KG1hbnkpKQogCiAgICAgZGVmIF9jaGVja194YXR0cnMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgZGVmIG1ha2VfYnl0ZXMocyk6Ci0gICAgICAgICAgICByZXR1cm4gYnl0ZXMocywgImFzY2lpIikKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihzdHIsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIobWFrZV9ieXRlcywgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIob3MuZnNlbmNvZGUsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhvcy5nZXR4YXR0ciwgb3Muc2V0eGF0dHIsIG9zLnJlbW92ZXhhdHRyLApAQCAtMjUzNiwxMCArMjY4MiwxMCBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgICAgIHJldHVybiBvcy5nZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCiAgICAgICAgIGRlZiBzZXR4YXR0cihwYXRoLCAqYXJncyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQogICAgICAgICBkZWYgcmVtb3ZleGF0dHIocGF0aCwgKmFyZ3MpOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIsIDApIGFzIGZwOgogICAgICAgICAgICAgICAgIG9zLnJlbW92ZXhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKICAgICAgICAgZGVmIGxpc3R4YXR0cihwYXRoLCAqYXJncyk6CiAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CkBAIC0yNTQ3LDQzICsyNjkzLDYgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0cikKIAogCi1AdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKLWNsYXNzIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkKHNlbGYpOgotICAgICAgICBpbXBvcnQgbnQKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIGZvciBmdW5jLCAqYXJncyBpbiAoCi0gICAgICAgICAgICAgICAgKG50Ll9nZXRmdWxscGF0aG5hbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAobnQuX2lzZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmFjY2VzcywgZmlsZW5hbWUsIG9zLlJfT0spLAotICAgICAgICAgICAgICAgIChvcy5jaGRpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5jaG1vZCwgZmlsZW5hbWUsIDBvNzc3KSwKLSAgICAgICAgICAgICAgICAob3MuZ2V0Y3dkYiwpLAotICAgICAgICAgICAgICAgIChvcy5saW5rLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5saXN0ZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmxzdGF0LCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLm1rZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLm9wZW4sIGZpbGVuYW1lLCBvcy5PX1JET05MWSksCi0gICAgICAgICAgICAgICAgKG9zLnJlbmFtZSwgZmlsZW5hbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Mucm1kaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Muc3RhcnRmaWxlLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLnN0YXQsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MudW5saW5rLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLnV0aW1lLCBmaWxlbmFtZSksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywgZnVuYywgKmFyZ3MpCi0KLSAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCi0gICAgZGVmIHRlc3Rfc3ltbGluayhzZWxmKToKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSkKLQotCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X3Rlcm1pbmFsX3NpemUnKSwgInJlcXVpcmVzIG9zLmdldF90ZXJtaW5hbF9zaXplIikKIGNsYXNzIFRlcm1zaXplVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2RvZXNfbm90X2NyYXNoKHNlbGYpOgpAQCAtMjY0Niw2ICsyNzU1LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVuY29kZWQgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKGVuY29kZWQpCisgICAgICAgIHNlbGYuYnl0ZXNfZmlsZW5hbWVzLmFwcGVuZChieXRlYXJyYXkoZW5jb2RlZCkpCiAgICAgICAgIHNlbGYuYnl0ZXNfZmlsZW5hbWVzLmFwcGVuZChtZW1vcnl2aWV3KGVuY29kZWQpKQogCiAgICAgICAgIHNlbGYuZmlsZW5hbWVzID0gc2VsZi5ieXRlc19maWxlbmFtZXMgKyBzZWxmLnVuaWNvZGVfZmlsZW5hbWVzCkBAIC0yNjY2LDE2ICsyNzc2LDcgQEAKICAgICAgICAgICAgICAgICAoc2VsZi5ieXRlc19maWxlbmFtZXMsIG9zLnJlcGxhY2UsIGIiZHN0IiksCiAgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLnJlbmFtZSwgImRzdCIpLAogICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5yZXBsYWNlLCAiZHN0IiksCi0gICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTY0MTQ6IERvbid0IHRlc3QgdW5kZWNvZGFibGUgbmFtZXMgd2l0aCBsaXN0ZGlyKCkKLSAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugb2YgYSBXaW5kb3dzIGJ1Zy4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBXaXRoIHRoZSBBTlNJIGNvZGUgcGFnZSA5MzIsIG9zLmxpc3RkaXIoYidceGU3JykgcmV0dXJuIGFuCi0gICAgICAgICAgICAgICAgIyBlbXB0eSBsaXN0IChpbnN0ZWFkIG9mIGZhaWxpbmcpLCB3aGVyZWFzIG9zLmxpc3RkaXIoYidceGZmJykKLSAgICAgICAgICAgICAgICAjIHJhaXNlcyBhIEZpbGVOb3RGb3VuZEVycm9yLiBJdCBsb29rcyBsaWtlIGEgV2luZG93cyBidWc6Ci0gICAgICAgICAgICAgICAgIyBiJ1x4ZTcnIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCwgRmluZEZpcnN0RmlsZUEoYidceGU3JykKLSAgICAgICAgICAgICAgICAjIGZhaWxzIHdpdGggRVJST1JfRklMRV9OT1RfRk9VTkQgKDIpLCBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgIyBFUlJPUl9QQVRIX05PVF9GT1VORCAoMykuCi0gICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLmxpc3RkaXIsKSwKKyAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MubGlzdGRpciwgKSwKICAgICAgICAgICAgICkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmdW5jcy5leHRlbmQoKApAQCAtMjcxNiwxMiArMjgxNywyNCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKHNlbGYuZmlsZW5hbWVzLCBvcy5yZWFkbGluaywpKQogCisKICAgICAgICAgZm9yIGZpbGVuYW1lcywgZnVuYywgKmZ1bmNfYXJncyBpbiBmdW5jczoKICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVuYW1lczoKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmMobmFtZSwgKmZ1bmNfYXJncykKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAnc2hvdWxkIGJlJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhlcnIuZmlsZW5hbWUsIG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXJyLmZpbGVuYW1lLCBuYW1lLCBzdHIoZnVuYykpCisgICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgICAgICAgICAjIGlzc3VlMjc3ODE6IHVuZGVjb2RhYmxlIGJ5dGVzIGN1cnJlbnRseSByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgIyBieSAzLjYuMGI0IHRoaXMgd2lsbCBiZWNvbWUgVW5pY29kZURlY29kZUVycm9yIG9yIG5vdGhpbmcKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVyci5fX2NvbnRleHRfXywgVW5pY29kZURlY29kZUVycm9yKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gZXhjZXB0aW9uIHRocm93biBieSB7fSIuZm9ybWF0KGZ1bmMpKQogCkBAIC0yODE5LDYgKzI5MzIsNjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfaW5oZXJpdGFibGUoc2xhdmVfZmQpLCBGYWxzZSkKIAogCitjbGFzcyBQYXRoVENvbnZlcnRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHR1cGxlcyBvZiAoZnVuY3Rpb24gbmFtZSwgYWxsb3dzIGZkIGFyZ3VtZW50cywgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8KKyAgICAjIGZ1bmN0aW9uLCBjbGVhbnVwIGZ1bmN0aW9uKQorICAgIGZ1bmN0aW9ucyA9IFsKKyAgICAgICAgKCdzdGF0JywgVHJ1ZSwgKCksIE5vbmUpLAorICAgICAgICAoJ2xzdGF0JywgRmFsc2UsICgpLCBOb25lKSwKKyAgICAgICAgKCdhY2Nlc3MnLCBGYWxzZSwgKG9zLkZfT0ssKSwgTm9uZSksCisgICAgICAgICgnY2hmbGFncycsIEZhbHNlLCAoMCwpLCBOb25lKSwKKyAgICAgICAgKCdsY2hmbGFncycsIEZhbHNlLCAoMCwpLCBOb25lKSwKKyAgICAgICAgKCdvcGVuJywgRmFsc2UsICgwLCksIGdldGF0dHIob3MsICdjbG9zZScsIE5vbmUpKSwKKyAgICBdCisKKyAgICBkZWYgdGVzdF9wYXRoX3RfY29udmVydGVyKHNlbGYpOgorICAgICAgICBzdHJfZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBieXRlc19mc3BhdGggPSBieXRlc19maWxlbmFtZSA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4uZW5jb2RlKCdhc2NpaScpCisgICAgICAgICAgICBieXRlc19mc3BhdGggPSBfUGF0aExpa2UoYnl0ZXNfZmlsZW5hbWUpCisgICAgICAgIGZkID0gb3Mub3BlbihfUGF0aExpa2Uoc3RyX2ZpbGVuYW1lKSwgb3MuT19XUk9OTFl8b3MuT19DUkVBVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKworICAgICAgICBpbnRfZnNwYXRoID0gX1BhdGhMaWtlKGZkKQorICAgICAgICBzdHJfZnNwYXRoID0gX1BhdGhMaWtlKHN0cl9maWxlbmFtZSkKKworICAgICAgICBmb3IgbmFtZSwgYWxsb3dfZmQsIGV4dHJhX2FyZ3MsIGNsZWFudXBfZm4gaW4gc2VsZi5mdW5jdGlvbnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lPW5hbWUpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZm4gPSBnZXRhdHRyKG9zLCBuYW1lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIChzdHJfZmlsZW5hbWUsIGJ5dGVzX2ZpbGVuYW1lLCBzdHJfZnNwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc19mc3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lPW5hbWUsIHBhdGg9cGF0aCk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmbihwYXRoLCAqZXh0cmFfYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsZWFudXBfZm4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9mbihyZXN1bHQpCisKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcycpOgorICAgICAgICAgICAgICAgICAgICBmbihpbnRfZnNwYXRoLCAqZXh0cmFfYXJncykKKworICAgICAgICAgICAgICAgIGlmIGFsbG93X2ZkOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmbihmZCwgKmV4dHJhX2FyZ3MpICAjIHNob3VsZCBub3QgZmFpbAorICAgICAgICAgICAgICAgICAgICBpZiBjbGVhbnVwX2ZuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9mbihyZXN1bHQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3MuUGF0aExpa2UnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuKGZkLCAqZXh0cmFfYXJncykKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X2Jsb2NraW5nJyksCiAgICAgICAgICAgICAgICAgICAgICAnbmVlZHMgb3MuZ2V0X2Jsb2NraW5nKCkgYW5kIG9zLnNldF9ibG9ja2luZygpJykKIGNsYXNzIEJsb2NraW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjg0MiwxNSArMzAxMiwxOCBAQAogCiAKIGNsYXNzIFRlc3RTY2FuZGlyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBjaGVja19ub19yZXNvdXJjZV93YXJuaW5nID0gc3VwcG9ydC5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nCisKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYucGF0aCA9IG9zLnBhdGgucmVhbHBhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYnl0ZXNfcGF0aCA9IG9zLmZzZW5jb2RlKHNlbGYucGF0aCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzZWxmLnBhdGgpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYucGF0aCkKIAogICAgIGRlZiBjcmVhdGVfZmlsZShzZWxmLCBuYW1lPSJmaWxlLnR4dCIpOgotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLnBhdGgsIG5hbWUpCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShiJ3B5dGhvbicpCisgICAgICAgIHBhdGggPSBzZWxmLmJ5dGVzX3BhdGggaWYgaXNpbnN0YW5jZShuYW1lLCBieXRlcykgZWxzZSBzZWxmLnBhdGgKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGIncHl0aG9uJykKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKICAgICBkZWYgZ2V0X2VudHJpZXMoc2VsZiwgbmFtZXMpOgpAQCAtMjg3Myw2ICszMDQ2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdDEsIHN0YXQyKQogCiAgICAgZGVmIGNoZWNrX2VudHJ5KHNlbGYsIGVudHJ5LCBuYW1lLCBpc19kaXIsIGlzX2ZpbGUsIGlzX3N5bWxpbmspOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZW50cnksIG9zLkRpckVudHJ5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lm5hbWUsIG5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkucGF0aCwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgbmFtZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaW5vZGUoKSwKQEAgLTI5MzgsMTUgKzMxMTIsMTYgQEAKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdzeW1saW5rX2ZpbGUudHh0JywgRmFsc2UsIFRydWUsIFRydWUpCiAKICAgICBkZWYgZ2V0X2VudHJ5KHNlbGYsIG5hbWUpOgotICAgICAgICBlbnRyaWVzID0gbGlzdChvcy5zY2FuZGlyKHNlbGYucGF0aCkpCisgICAgICAgIHBhdGggPSBzZWxmLmJ5dGVzX3BhdGggaWYgaXNpbnN0YW5jZShuYW1lLCBieXRlcykgZWxzZSBzZWxmLnBhdGgKKyAgICAgICAgZW50cmllcyA9IGxpc3Qob3Muc2NhbmRpcihwYXRoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW50cmllcyksIDEpCiAKICAgICAgICAgZW50cnkgPSBlbnRyaWVzWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKICAgICAgICAgcmV0dXJuIGVudHJ5CiAKLSAgICBkZWYgY3JlYXRlX2ZpbGVfZW50cnkoc2VsZik6Ci0gICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZSgpCisgICAgZGVmIGNyZWF0ZV9maWxlX2VudHJ5KHNlbGYsIG5hbWU9J2ZpbGUudHh0Jyk6CisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZShuYW1lPW5hbWUpCiAgICAgICAgIHJldHVybiBzZWxmLmdldF9lbnRyeShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkKIAogICAgIGRlZiB0ZXN0X2N1cnJlbnRfZGlyZWN0b3J5KHNlbGYpOgpAQCAtMjk2Nyw2ICszMTQyLDE4IEBACiAgICAgICAgIGVudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihlbnRyeSksICI8RGlyRW50cnkgJ2ZpbGUudHh0Jz4iKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX3Byb3RvY29sKHNlbGYpOgorICAgICAgICBlbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmZzcGF0aChlbnRyeSksIG9zLnBhdGguam9pbihzZWxmLnBhdGgsICdmaWxlLnR4dCcpKQorCisgICAgZGVmIHRlc3RfZnNwYXRoX3Byb3RvY29sX2J5dGVzKHNlbGYpOgorICAgICAgICBieXRlc19maWxlbmFtZSA9IG9zLmZzZW5jb2RlKCdieXRlc2ZpbGUudHh0JykKKyAgICAgICAgYnl0ZXNfZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KG5hbWU9Ynl0ZXNfZmlsZW5hbWUpCisgICAgICAgIGZzcGF0aCA9IG9zLmZzcGF0aChieXRlc19lbnRyeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZzcGF0aCwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnNwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5mc2VuY29kZShzZWxmLnBhdGgpLGJ5dGVzX2ZpbGVuYW1lKSkKKwogICAgIGRlZiB0ZXN0X3JlbW92ZWRfZGlyKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2RpcicpCiAKQEAgLTMwMzAsMTEgKzMyMTcsNiBAQAogICAgICAgICBlbnRyeS5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzKHNlbGYpOgotICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICAgICAjIE9uIFdpbmRvd3MsIG9zLnNjYW5kaXIoYnl0ZXMpIG11c3QgcmFpc2UgYW4gZXhjZXB0aW9uCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnNjYW5kaXIsIGInLicpCi0gICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCiAKICAgICAgICAgcGF0aF9ieXRlcyA9IG9zLmZzZW5jb2RlKHNlbGYucGF0aCkKQEAgLTMwNjQsNiArMzI0NiwxMTIgQEAKICAgICAgICAgZm9yIG9iaiBpbiBbMTIzNCwgMS4yMzQsIHt9LCBbXV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnNjYW5kaXIsIG9iaikKIAorICAgIGRlZiB0ZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIGl0ZXJhdG9yID0gb3Muc2NhbmRpcihzZWxmLnBhdGgpCisgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgIGl0ZXJhdG9yLmNsb3NlKCkKKyAgICAgICAgIyBtdWx0aXBsZSBjbG9zZXMKKyAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpOgorICAgICAgICAgICAgZGVsIGl0ZXJhdG9yCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpOgorICAgICAgICAgICAgZGVsIGl0ZXJhdG9yCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggb3Muc2NhbmRpcihzZWxmLnBhdGgpIGFzIGl0ZXJhdG9yOgorICAgICAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X3Jlc291cmNlX3dhcm5pbmcoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFJlc291cmNlV2FybmluZyk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKyAgICAgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgICMgZXhoYXVzdGVkIGl0ZXJhdG9yCisgICAgICAgIGl0ZXJhdG9yID0gb3Muc2NhbmRpcihzZWxmLnBhdGgpCisgICAgICAgIGxpc3QoaXRlcmF0b3IpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworCitjbGFzcyBUZXN0UEVQNTE5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgQWJzdHJhY3RlZCBzbyBpdCBjYW4gYmUgb3ZlcnJpZGRlbiB0byB0ZXN0IHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uCisgICAgIyBpZiBhIEMgdmVyc2lvbiBpcyBwcm92aWRlZC4KKyAgICBmc3BhdGggPSBzdGF0aWNtZXRob2Qob3MuZnNwYXRoKQorCisgICAgZGVmIHRlc3RfcmV0dXJuX2J5dGVzKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiBiJ2hlbGxvJywgYidnb29kYnllJywgYidzb21lL3BhdGgvYW5kL2ZpbGUnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLmZzcGF0aChiKSkKKworICAgIGRlZiB0ZXN0X3JldHVybl9zdHJpbmcoc2VsZik6CisgICAgICAgIGZvciBzIGluICdoZWxsbycsICdnb29kYnllJywgJ3NvbWUvcGF0aC9hbmQvZmlsZSc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHNlbGYuZnNwYXRoKHMpKQorCisgICAgZGVmIHRlc3RfZnNlbmNvZGVfZnNkZWNvZGUoc2VsZik6CisgICAgICAgIGZvciBwIGluICJwYXRoL2xpa2Uvb2JqZWN0IiwgYiJwYXRoL2xpa2Uvb2JqZWN0IjoKKyAgICAgICAgICAgIHBhdGhsaWtlID0gX1BhdGhMaWtlKHApCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgc2VsZi5mc3BhdGgocGF0aGxpa2UpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiInBhdGgvbGlrZS9vYmplY3QiLCBvcy5mc2VuY29kZShwYXRobGlrZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwYXRoL2xpa2Uvb2JqZWN0Iiwgb3MuZnNkZWNvZGUocGF0aGxpa2UpKQorCisgICAgZGVmIHRlc3RfcGF0aGxpa2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyNmZWVsdGhlZ2lsJywgc2VsZi5mc3BhdGgoX1BhdGhMaWtlKCcjZmVlbHRoZWdpbCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoX1BhdGhMaWtlLCBvcy5QYXRoTGlrZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKF9QYXRoTGlrZSgpLCBvcy5QYXRoTGlrZSkpCisKKyAgICBkZWYgdGVzdF9nYXJiYWdlX2luX2V4Y2VwdGlvbl9vdXQoc2VsZik6CisgICAgICAgIHZhcG9yID0gdHlwZSgnYmxhaCcsICgpLCB7fSkKKyAgICAgICAgZm9yIG8gaW4gaW50LCB0eXBlLCBvcywgdmFwb3IoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mc3BhdGgsIG8pCisKKyAgICBkZWYgdGVzdF9hcmd1bWVudF9yZXF1aXJlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCkKKworICAgIGRlZiB0ZXN0X2JhZF9wYXRobGlrZShzZWxmKToKKyAgICAgICAgIyBfX2ZzcGF0aF9fIHJldHVybnMgYSB2YWx1ZSBvdGhlciB0aGFuIHN0ciBvciBieXRlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCwgX1BhdGhMaWtlKDQyKSkKKyAgICAgICAgIyBfX2ZzcGF0aF9fIGF0dHJpYnV0ZSB0aGF0IGlzIG5vdCBjYWxsYWJsZS4KKyAgICAgICAgYyA9IHR5cGUoJ2ZvbycsICgpLCB7fSkKKyAgICAgICAgYy5fX2ZzcGF0aF9fID0gMQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoLCBjKCkpCisgICAgICAgICMgX19mc3BhdGhfXyByYWlzZXMgYW4gZXhjZXB0aW9uLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgc2VsZi5mc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9QYXRoTGlrZShaZXJvRGl2aXNpb25FcnJvcigpKSkKKworIyBPbmx5IHRlc3QgaWYgdGhlIEMgdmVyc2lvbiBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIFRlc3RQRVA1MTkgYWxyZWFkeSB0ZXN0ZWQKKyMgdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgoraWYgaGFzYXR0cihvcywgIl9mc3BhdGgiKToKKyAgICBjbGFzcyBUZXN0UEVQNTE5UHVyZVB5dGhvbihUZXN0UEVQNTE5KToKKworICAgICAgICAiIiJFeHBsaWNpdGx5IHRlc3QgdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIG9zLmZzcGF0aCgpLiIiIgorCisgICAgICAgIGZzcGF0aCA9IHN0YXRpY21ldGhvZChvcy5fZnNwYXRoKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CmluZGV4IGFiNjU3N2YuLmQ2ZTZmNzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHBhcnNlcgogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTM5LDYgKzEzOCw0NSBAQAogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhID0gYiIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgPSBiID0gYyA9IGQgPSBlIikKIAorICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieDogaW50ID0gNSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoInk6IExpc3RbVF0gPSBbXTsgejogW2xpc3RdID0gZnVuKCkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiB0dXBsZSA9ICgxLCAyKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRbZigpXTogaW50ID0gNDIiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJmKGRbeF0pOiBzdHIgPSAnYWJjJyIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIngueS56Lnc6IGNvbXBsZXggPSA0MmoiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiBpbnQiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogc3RyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB5OiBpbnQgPSA1XG4iKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogc3RyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB5OiBpbnQgPSA1XG4iKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZGVmIF9faW5pdF9fKHNlbGYsIHg6IGludCkgLT4gTm9uZTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICBzZWxmLng6IGludCA9IHhcbiIpCisgICAgICAgICMgZG91YmxlIGNoZWNrIGZvciBub25zZW5zZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIjIrMjogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIltdOiBpbnQgPSA1Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIngsICp5LCB6OiBpbnQgPSByYW5nZSg1KSIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ0OiB0dXBsZSA9IDEsIDIiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygidSA9IHY6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJGYWxzZTogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoInguRmFsc2U6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ4LnksOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiWzBdOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiZigpOiBpbnQiLCB7fSwge30pCisKICAgICBkZWYgdGVzdF9zaW1wbGVfYXVnbWVudGVkX2Fzc2lnbm1lbnRzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhICs9IGIiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhIC09IGIiKQpAQCAtNjMzLDEyICs2NzEsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnPHN5bnRheC10cmVlPicpCiAgICAgICAgIGNvZGUgPSBzdC5jb21waWxlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnPHN5bnRheC10cmVlPicpCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiAoJ2ZpbGUucHknLCBiJ2ZpbGUucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKSk6CisgICAgICAgIGZvciBmaWxlbmFtZSBpbiAnZmlsZS5weScsIGInZmlsZS5weSc6CiAgICAgICAgICAgICBjb2RlID0gcGFyc2VyLmNvbXBpbGVzdChzdCwgZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgICAgIGNvZGUgPSBzdC5jb21waWxlKGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBjb2RlID0gcGFyc2VyLmNvbXBpbGVzdChzdCwgZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNvZGUgPSBzdC5jb21waWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGFyc2VyLmNvbXBpbGVzdCwgc3QsIGxpc3QoYidmaWxlLnB5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3QuY29tcGlsZSwgbGlzdChiJ2ZpbGUucHknKSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CmluZGV4IGZhOTZkOWYuLjJmMmJhM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKQEAgLTE5MCwxMyArMTkwLDE4IEBACiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBwID0gUCgnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwLCBQKQorICAgICAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAiYS9iL2MiCiAgICAgICAgIFAoJ2EnLCAnYicsICdjJykKICAgICAgICAgUCgnL2EnLCAnYicsICdjJykKICAgICAgICAgUCgnYS9iL2MnKQogICAgICAgICBQKCcvYS9iL2MnKQorICAgICAgICBQKFBhdGhMaWtlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJykpLCBQKCdhJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksICdiJyksIFAoJ2EvYicpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCBQKCdiJykpLCBQKCdhL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgUCgnYicpLCBQKCdjJykpLCBQKFBhdGhMaWtlKCkpKQogCiAgICAgZGVmIF9jaGVja19zdHJfc3ViY2xhc3Moc2VsZiwgKmFyZ3MpOgogICAgICAgICAjIElzc3VlICMyMTEyNzogaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNvbnN0cnVjdCBhIFB1cmVQYXRoIG9iamVjdApAQCAtMzg0LDYgKzM4OSwxMiBAQAogICAgICAgICBwYXJ0cyA9IHAucGFydHMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJ0cywgKHNlcCwgJ2EnLCAnYicpKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCdhL2InKQorICAgICAgICBzZWxmLl9jaGVja19zdHIocC5fX2ZzcGF0aF9fKCksICgnYS9iJywpKQorICAgICAgICBzZWxmLl9jaGVja19zdHIob3MuZnNwYXRoKHApLCAoJ2EvYicsKSkKKwogICAgIGRlZiB0ZXN0X2VxdWl2YWxlbmNlcyhzZWxmKToKICAgICAgICAgZm9yIGssIHR1cGxlcyBpbiBzZWxmLmVxdWl2YWxlbmNlcy5pdGVtcygpOgogICAgICAgICAgICAgY2Fub24gPSBrLnJlcGxhY2UoJy8nLCBzZWxmLnNlcCkKQEAgLTE0NzQsMTMgKzE0ODUsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5nbG9iKCJkaXJBLy4uL2ZpbGUqIikpLCB7IFAoQkFTRSwgImRpckEvLi4vZmlsZUEiKSB9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLmdsb2IoIi4uL3h5enp5IikpLCBzZXQoKSkKIAotICAgIGRlZiBfY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShzZWxmLCBwLCBleHBlY3RlZCk6CisKKyAgICBkZWYgX2NoZWNrX3Jlc29sdmUoc2VsZiwgcCwgZXhwZWN0ZWQpOgogICAgICAgICBxID0gcC5yZXNvbHZlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLCBleHBlY3RlZCkKIAotICAgIGRlZiBfY2hlY2tfcmVzb2x2ZV9hYnNvbHV0ZShzZWxmLCBwLCBleHBlY3RlZCk6Ci0gICAgICAgIHEgPSBwLnJlc29sdmUoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEsIGV4cGVjdGVkKQorICAgICMgdGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjayBib3RoIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSByZXNvbHV0aW9ucworICAgIF9jaGVja19yZXNvbHZlX3JlbGF0aXZlID0gX2NoZWNrX3Jlc29sdmVfYWJzb2x1dGUgPSBfY2hlY2tfcmVzb2x2ZQogCiAgICAgQHdpdGhfc3ltbGlua3MKICAgICBkZWYgdGVzdF9yZXNvbHZlX2NvbW1vbihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGRiLnB5IGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKaW5kZXggNDViYTVhOS4uNzQ0MTdjMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKQEAgLTEsNiArMSw3IEBACiAjIEEgdGVzdCBzdWl0ZSBmb3IgcGRiOyBub3QgdmVyeSBjb21wcmVoZW5zaXZlIGF0IHRoZSBtb21lbnQuCiAKIGltcG9ydCBkb2N0ZXN0CitpbXBvcnQgb3MKIGltcG9ydCBwZGIKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwpAQCAtMzQsNyArMzUsNyBAQAogICAgICIiIlRoaXMgdGVzdHMgdGhlIGN1c3RvbSBkaXNwbGF5aG9vayBmb3IgcGRiLgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKGZvbywgYmFyKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcGFzcwogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsKQEAgLTc0LDcgKzc1LDcgQEAKICAgICAuLi4gICAgIHJldHVybiBmb28udXBwZXIoKQogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKICAgICAuLi4gICAgIHByaW50KHJldCkKIApAQCAtMTczLDcgKzE3NCw3IEBACiAgICAgIiIiVGVzdCBiYXNpYyBjb21tYW5kcyByZWxhdGVkIHRvIGJyZWFrcG9pbnRzLgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHByaW50KDEpCiAgICAgLi4uICAgICBwcmludCgyKQogICAgIC4uLiAgICAgcHJpbnQoMykKQEAgLTMwNSw3ICszMDYsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIGZvbwogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbICAjIGRvY3Rlc3Q6ICtFTExJUFNJUywgK05PUk1BTElaRV9XSElURVNQQUNFCkBAIC0zMjgsNyArMzI5LDcgQEAKICAgICAtPiByZXQgPSB0ZXN0X2Z1bmN0aW9uXzIoJ2JheicpCiAgICAgKFBkYikgbGlzdAogICAgICAgMSAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgICAzICAtPiAgICAgICAgIHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKICAgICBbRU9GXQogICAgIChQZGIpIHN0ZXAKQEAgLTM5MSw3ICszOTIsNyBAQAogICAgIC4uLiAgICAgICAgIHByaW50KCdFeGNlcHRpb24hJykKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgIC4uLiAgICAgcHJpbnQoJ05vdCByZWFjaGVkLicpCiAKQEAgLTQyNCw3ICs0MjUsNyBAQAogICAgIC0+IDEvMAogICAgIChQZGIpIGxpc3QKICAgICAgIDEgICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgICAgMyAgLT4gICAgICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgICAgNCAgICAgICAgICAgICBwcmludCgnTm90IHJlYWNoZWQuJykKICAgICBbRU9GXQpAQCAtNDQ4LDcgKzQ0OSw3IEBACiAKICAgICA+Pj4gZGVmIHNraXBfbW9kdWxlKCk6CiAgICAgLi4uICAgICBpbXBvcnQgc3RyaW5nCi0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9WydzdHJpKiddLCBub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnc3RyaSonXSwgbm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgc3RyaW5nLmNhcHdvcmRzKCdGT08nKQogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsKQEAgLTQ3Nyw3ICs0NzgsNyBAQAogICAgID4+PiBkZWYgc2tpcF9tb2R1bGUoKToKICAgICAuLi4gICAgIGRlZiBjYWxsYmFjaygpOgogICAgIC4uLiAgICAgICAgIHJldHVybiBOb25lCi0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9Wydtb2R1bGVfdG9fc2tpcConXSwgbm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ21vZHVsZV90b19za2lwKiddLCBub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBtb2QuZm9vX3BvbnkoY2FsbGJhY2spCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwpAQCAtNTE4LDcgKzUxOSw3IEBACiAgICAgIiIiVGVzdCB0aGF0ICJjb250aW51ZSIgYW5kICJuZXh0IiB3b3JrIHByb3Blcmx5IGluIGJvdHRvbSBmcmFtZSAoaXNzdWUgIzUyOTQpLgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiLCBzeXM7IGluc3QgPSBwZGIuUGRiKG5vc2lnaW50PVRydWUpCisgICAgLi4uICAgICBpbXBvcnQgcGRiLCBzeXM7IGluc3QgPSBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkKICAgICAuLi4gICAgIGluc3Quc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGluc3QuYm90ZnJhbWUgPSBzeXMuX2dldGZyYW1lKCkgICMgaGFja2VyeSB0byBnZXQgdGhlIHJpZ2h0IGJvdGZyYW1lCiAgICAgLi4uICAgICBwcmludCgxKQpAQCAtNTU4LDggKzU1OSw3IEBACiAKIGRlZiBwZGJfaW52b2tlKG1ldGhvZCwgYXJnKToKICAgICAiIiJSdW4gcGRiLm1ldGhvZChhcmcpLiIiIgotICAgIGltcG9ydCBwZGIKLSAgICBnZXRhdHRyKHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSksIG1ldGhvZCkoYXJnKQorICAgIGdldGF0dHIocGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLCBtZXRob2QpKGFyZykKIAogCiBkZWYgdGVzdF9wZGJfcnVuX3dpdGhfaW5jb3JyZWN0X2FyZ3VtZW50KCk6CkBAIC02MDgsNyArNjA4LDcgQEAKICAgICAuLi4gICAgIHggPSAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQpAQCAtNjc0LDcgKzY3NCw3IEBACiAgICAgLi4uICAgICB5aWVsZCAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgaXQgPSB0ZXN0X2dlbigpCiAgICAgLi4uICAgICB0cnk6CiAgICAgLi4uICAgICAgICAgaWYgbmV4dChpdCkgIT0gMDoKQEAgLTczNCw3ICs3MzQsNyBAQAogICAgIC4uLiAgICAgeWllbGQgMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGl0ID0gdGVzdF9nZW4oKQogICAgIC4uLiAgICAgdHJ5OgogICAgIC4uLiAgICAgICAgIGlmIG5leHQoaXQpICE9IDA6CkBAIC03ODksNyArNzg5LDcgQEAKICAgICAuLi4gICAgIHlpZWxkIDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBmb3IgaSBpbiB0ZXN0X2dlbigpOgogICAgIC4uLiAgICAgICAgIHByaW50KGkpCiAgICAgLi4uICAgICBwcmludCgiZmluaXNoZWQiKQpAQCAtODMxLDcgKzgzMSw3IEBACiAgICAgLi4uICAgICByZXR1cm4gMQogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGZvciBpIGluIHRlc3RfZ2VuKCk6CiAgICAgLi4uICAgICAgICAgcHJpbnQoJ3ZhbHVlJywgaSkKICAgICAuLi4gICAgIHggPSAxMjMKQEAgLTg3Niw3ICs4NzYsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIHgKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBmb3IgaSBpbiB0ZXN0X2dlbigpOgogICAgIC4uLiAgICAgICAgIHByaW50KCd2YWx1ZScsIGkpCiAgICAgLi4uICAgICB4ID0gMTIzCkBAIC0xMDI2LDcgKzEwMjYsNyBAQAogICAgICAgICAgICAgICAgIGltcG9ydCBwZGIKIAogICAgICAgICAgICAgICAgIGRlZiBzdGFydF9wZGIoKToKLSAgICAgICAgICAgICAgICAgICAgcGRiLlBkYigpLnNldF90cmFjZSgpCisgICAgICAgICAgICAgICAgICAgIHBkYi5QZGIocmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgICAgICAgICAgICAgICAgICB4ID0gMQogICAgICAgICAgICAgICAgICAgICB5ID0gMQogCkBAIC0xMDU1LDEzICsxMDU1LDQ1IEBACiAgICAgICAgICAgICAuZm9ybWF0KGV4cGVjdGVkLCBzdGRvdXQpKQogCiAKKyAgICBkZWYgdGVzdF9yZWFkcmNfa3dhcmcoc2VsZik6CisgICAgICAgIHNjcmlwdCA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIocmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQorCisgICAgICAgICAgICBwcmludCgnaGVsbG8nKQorICAgICAgICAiIiIpCisKKyAgICAgICAgc2F2ZV9ob21lID0gb3MuZW52aXJvbi5wb3AoJ0hPTUUnLCBOb25lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoKToKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oJy5wZGJyYycsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiaW52YWxpZFxuIikKKworICAgICAgICAgICAgICAgIHdpdGggb3BlbignbWFpbi5weScsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzY3JpcHQpCisKKyAgICAgICAgICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsICdtYWluLnB5J10KKyAgICAgICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAgICAgICAgICAgY21kLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHdpdGggcHJvYzoKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKGIncVxuJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiTmFtZUVycm9yOiBuYW1lICdpbnZhbGlkJyBpcyBub3QgZGVmaW5lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LmRlY29kZSgpKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBzYXZlX2hvbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnSE9NRSddID0gc2F2ZV9ob21lCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCiAKIGRlZiBsb2FkX3Rlc3RzKCphcmdzKToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfcGRiCi0gICAgc3VpdGVzID0gW3VuaXR0ZXN0Lm1ha2VTdWl0ZShQZGJUZXN0Q2FzZSksIGRvY3Rlc3QuRG9jVGVzdFN1aXRlKHRlc3RfcGRiKV0KKyAgICBzdWl0ZXMgPSBbdW5pdHRlc3QubWFrZVN1aXRlKFBkYlRlc3RDYXNlKV0KICAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKHN1aXRlcykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CmluZGV4IDQxZTUwOTEuLmIwMzM2NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CkBAIC0xLDkgKzEsOCBAQAogaW1wb3J0IGRpcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGlvIGltcG9ydCBTdHJpbmdJTworaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gbWF0aCBpbXBvcnQgY29weXNpZ24KIAogZnJvbSB0ZXN0LmJ5dGVjb2RlX2hlbHBlciBpbXBvcnQgQnl0ZWNvZGVUZXN0Q2FzZQogCkBAIC0zMCwyMiArMjksMjUgQEAKIAogICAgIGRlZiB0ZXN0X2dsb2JhbF9hc19jb25zdGFudChzZWxmKToKICAgICAgICAgIyBMT0FEX0dMT0JBTCBOb25lL1RydWUvRmFsc2UgIC0tPiAgTE9BRF9DT05TVCBOb25lL1RydWUvRmFsc2UKLSAgICAgICAgZGVmIGYoeCk6Ci0gICAgICAgICAgICBOb25lCi0gICAgICAgICAgICBOb25lCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB4ID0gTm9uZQorICAgICAgICAgICAgeCA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAgIGRlZiBnKHgpOgotICAgICAgICAgICAgVHJ1ZQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeCA9IFRydWUKICAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAgIGRlZiBoKHgpOgotICAgICAgICAgICAgRmFsc2UKKyAgICAgICAgZGVmIGgoKToKKyAgICAgICAgICAgIHggPSBGYWxzZQogICAgICAgICAgICAgcmV0dXJuIHgKKwogICAgICAgICBmb3IgZnVuYywgZWxlbSBpbiAoKGYsIE5vbmUpLCAoZywgVHJ1ZSksIChoLCBGYWxzZSkpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGZ1bmMsICdMT0FEX0dMT0JBTCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoZnVuYywgJ0xPQURfQ09OU1QnLCBlbGVtKQorCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAnQWRkaW5nIGEgZG9jc3RyaW5nIG1hZGUgdGhpcyB0ZXN0IGZhaWwgaW4gUHkyLjUuMCcKICAgICAgICAgICAgIHJldHVybiBOb25lCisKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGYsICdMT0FEX0dMT0JBTCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShmLCAnTE9BRF9DT05TVCcsIE5vbmUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxN2NlZWQuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0iIiIKLVRlc3Qgc3VpdGUgdG8gY2hlY2sgY29tcGxpYW5jZSB3aXRoIFBFUCAyNDcsIHRoZSBzdGFuZGFyZCBBUEkKLWZvciBoYXNoaW5nIGFsZ29yaXRobXMKLSIiIgotCi1pbXBvcnQgaG1hYwotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGhhc2hsaWIgaW1wb3J0IG1kNSwgc2hhMSwgc2hhMjI0LCBzaGEyNTYsIHNoYTM4NCwgc2hhNTEyCi0KLWNsYXNzIFBlcDI0N1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIGNoZWNrX21vZHVsZShzZWxmLCBtb2R1bGUsIGtleT1Ob25lKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnZGlnZXN0X3NpemUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZS5kaWdlc3Rfc2l6ZSBpcyBOb25lIG9yIG1vZHVsZS5kaWdlc3Rfc2l6ZSA+IDApCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KG1vZHVsZS5uZXcsIG1vZHVsZS5kaWdlc3Rfc2l6ZSwga2V5KQotCi0gICAgZGVmIGNoZWNrX29iamVjdChzZWxmLCBjbHMsIGRpZ2VzdF9zaXplLCBrZXksIGRpZ2VzdG1vZD1Ob25lKToKLSAgICAgICAgaWYga2V5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgZGlnZXN0bW9kIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZGlnZXN0bW9kID0gbWQ1Ci0gICAgICAgICAgICBvYmoxID0gY2xzKGtleSwgZGlnZXN0bW9kPWRpZ2VzdG1vZCkKLSAgICAgICAgICAgIG9iajIgPSBjbHMoa2V5LCBiJ3N0cmluZycsIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpCi0gICAgICAgICAgICBoMSA9IGNscyhrZXksIGInc3RyaW5nJywgZGlnZXN0bW9kPWRpZ2VzdG1vZCkuZGlnZXN0KCkKLSAgICAgICAgICAgIG9iajMgPSBjbHMoa2V5LCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKQotICAgICAgICAgICAgb2JqMy51cGRhdGUoYidzdHJpbmcnKQotICAgICAgICAgICAgaDIgPSBvYmozLmRpZ2VzdCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvYmoxID0gY2xzKCkKLSAgICAgICAgICAgIG9iajIgPSBjbHMoYidzdHJpbmcnKQotICAgICAgICAgICAgaDEgPSBjbHMoYidzdHJpbmcnKS5kaWdlc3QoKQotICAgICAgICAgICAgb2JqMyA9IGNscygpCi0gICAgICAgICAgICBvYmozLnVwZGF0ZShiJ3N0cmluZycpCi0gICAgICAgICAgICBoMiA9IG9iajMuZGlnZXN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG9iajEsICdkaWdlc3Rfc2l6ZScpKQotCi0gICAgICAgIGlmIGRpZ2VzdF9zaXplIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmRpZ2VzdF9zaXplLCBkaWdlc3Rfc2l6ZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuZGlnZXN0X3NpemUsIGxlbihoMSkpCi0gICAgICAgIG9iajEudXBkYXRlKGInc3RyaW5nJykKLSAgICAgICAgb2JqX2NvcHkgPSBvYmoxLmNvcHkoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuZGlnZXN0KCksIG9ial9jb3B5LmRpZ2VzdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuaGV4ZGlnZXN0KCksIG9ial9jb3B5LmhleGRpZ2VzdCgpKQotCi0gICAgICAgIGRpZ2VzdCwgaGV4ZGlnZXN0ID0gb2JqMS5kaWdlc3QoKSwgb2JqMS5oZXhkaWdlc3QoKQotICAgICAgICBoZDIgPSAiIgotICAgICAgICBmb3IgYnl0ZSBpbiBkaWdlc3Q6Ci0gICAgICAgICAgICBoZDIgKz0gJyUwMngnICUgYnl0ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhkMiwgaGV4ZGlnZXN0KQotCi0gICAgZGVmIHRlc3RfbWQ1KHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChtZDUsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9zaGEoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTEsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTIyNCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMjU2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGEzODQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTUxMiwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiB0ZXN0X2htYWMoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfbW9kdWxlKGhtYWMsIGtleT1iJ2FiYycpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CmluZGV4IGQ0NjdkNTIuLmU2YzVkMDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CkBAIC0zNCw4ICszNCw2IEBACiAKICAgICB1bnBpY2tsZXIgPSBwaWNrbGUuX1VucGlja2xlcgogICAgIGJhZF9zdGFja19lcnJvcnMgPSAoSW5kZXhFcnJvciwpCi0gICAgYmFkX21hcmtfZXJyb3JzID0gKEluZGV4RXJyb3IsIHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEVPRkVycm9yKQogICAgIHRydW5jYXRlZF9lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgRU9GRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5lcnJvciwgSW5kZXhFcnJvciwgSW1wb3J0RXJyb3IpCkBAIC03MCw4ICs2OCw2IEBACiAgICAgcGlja2xlciA9IHBpY2tsZS5fUGlja2xlcgogICAgIHVucGlja2xlciA9IHBpY2tsZS5fVW5waWNrbGVyCiAgICAgYmFkX3N0YWNrX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBJbmRleEVycm9yKQotICAgIGJhZF9tYXJrX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBJbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBFT0ZFcnJvcikKICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEVPRkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QuZXJyb3IsIEluZGV4RXJyb3IsIEltcG9ydEVycm9yKQpAQCAtMTQzLDkgKzEzOSw3IEBACiAgICAgY2xhc3MgQ1VucGlja2xlclRlc3RzKFB5VW5waWNrbGVyVGVzdHMpOgogICAgICAgICB1bnBpY2tsZXIgPSBfcGlja2xlLlVucGlja2xlcgogICAgICAgICBiYWRfc3RhY2tfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsKQotICAgICAgICBiYWRfbWFya19lcnJvcnMgPSAoRU9GRXJyb3IsKQotICAgICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEVPRkVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKQorICAgICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsKQogCiAgICAgY2xhc3MgQ1BpY2tsZXJUZXN0cyhQeVBpY2tsZXJUZXN0cyk6CiAgICAgICAgIHBpY2tsZXIgPSBfcGlja2xlLlBpY2tsZXIKQEAgLTM0MSw2ICszMzUsOSBAQAogICAgICAgICAgICAgICAgIGlmIChtb2R1bGUyLCBuYW1lMikgPT0gKCdleGNlcHRpb25zJywgJ09TRXJyb3InKToKICAgICAgICAgICAgICAgICAgICAgYXR0ciA9IGdldGF0dHJpYnV0ZShtb2R1bGUzLCBuYW1lMykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYXR0ciwgT1NFcnJvcikpCisgICAgICAgICAgICAgICAgZWxpZiAobW9kdWxlMiwgbmFtZTIpID09ICgnZXhjZXB0aW9ucycsICdJbXBvcnRFcnJvcicpOgorICAgICAgICAgICAgICAgICAgICBhdHRyID0gZ2V0YXR0cmlidXRlKG1vZHVsZTMsIG5hbWUzKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhhdHRyLCBJbXBvcnRFcnJvcikpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCBuYW1lID0gbWFwcGluZyhtb2R1bGUyLCBuYW1lMikKICAgICAgICAgICAgICAgICAgICAgaWYgbW9kdWxlM1s6MV0gIT0gJ18nOgpAQCAtNDA3LDYgKzQwNCwxMSBAQAogICAgICAgICAgICAgICAgIGlmIGV4YyBpcyBub3QgT1NFcnJvciBhbmQgaXNzdWJjbGFzcyhleGMsIE9TRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmVyc2VfbWFwcGluZygnYnVpbHRpbnMnLCBuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCAnT1NFcnJvcicpKQorICAgICAgICAgICAgICAgIGVsaWYgZXhjIGlzIG5vdCBJbXBvcnRFcnJvciBhbmQgaXNzdWJjbGFzcyhleGMsIEltcG9ydEVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgJ0ltcG9ydEVycm9yJykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFwcGluZygnZXhjZXB0aW9ucycsIG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsIG5hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2ZXJzZV9tYXBwaW5nKCdidWlsdGlucycsIG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsIG5hbWUpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkKaW5kZXggYmJlNjg3NS4uODZiZWJmYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5CkBAIC0xLDkgKzEsOSBAQAotaW1wb3J0IHN0cnVjdAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHBpY2tsZXRvb2xzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlVGVzdHMKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlTW9kdWxlVGVzdHMKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBPcHRpbWl6ZWRQaWNrbGVUZXN0cyhBYnN0cmFjdFBpY2tsZVRlc3RzLCBBYnN0cmFjdFBpY2tsZU1vZHVsZVRlc3RzKToKIApAQCAtNTksOCArNTksNDAgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihwaWNrbGUuQklOUFVULCBwaWNrbGVkMikKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydieXRlc190eXBlcycsCisgICAgICAgICAgICAgICAgICAgICAnVVBfVE9fTkVXTElORScsICdUQUtFTl9GUk9NX0FSR1VNRU5UMScsCisgICAgICAgICAgICAgICAgICAgICAnVEFLRU5fRlJPTV9BUkdVTUVOVDQnLCAnVEFLRU5fRlJPTV9BUkdVTUVOVDRVJywKKyAgICAgICAgICAgICAgICAgICAgICdUQUtFTl9GUk9NX0FSR1VNRU5UOFUnLCAnQXJndW1lbnREZXNjcmlwdG9yJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VpbnQxJywgJ3JlYWRfdWludDInLCAncmVhZF9pbnQ0JywgJ3JlYWRfdWludDQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdWludDgnLCAncmVhZF9zdHJpbmdubCcsICdyZWFkX3N0cmluZ25sX25vZXNjYXBlJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3N0cmluZ25sX25vZXNjYXBlX3BhaXInLCAncmVhZF9zdHJpbmcxJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3N0cmluZzQnLCAncmVhZF9ieXRlczEnLCAncmVhZF9ieXRlczQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfYnl0ZXM4JywgJ3JlYWRfdW5pY29kZXN0cmluZ25sJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VuaWNvZGVzdHJpbmcxJywgJ3JlYWRfdW5pY29kZXN0cmluZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdW5pY29kZXN0cmluZzgnLCAncmVhZF9kZWNpbWFsbmxfc2hvcnQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfZGVjaW1hbG5sX2xvbmcnLCAncmVhZF9mbG9hdG5sJywgJ3JlYWRfZmxvYXQ4JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX2xvbmcxJywgJ3JlYWRfbG9uZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ3VpbnQxJywgJ3VpbnQyJywgJ2ludDQnLCAndWludDQnLCAndWludDgnLCAnc3RyaW5nbmwnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZ25sX25vZXNjYXBlJywgJ3N0cmluZ25sX25vZXNjYXBlX3BhaXInLCAnc3RyaW5nMScsCisgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nNCcsICdieXRlczEnLCAnYnl0ZXM0JywgJ2J5dGVzOCcsCisgICAgICAgICAgICAgICAgICAgICAndW5pY29kZXN0cmluZ25sJywgJ3VuaWNvZGVzdHJpbmcxJywgJ3VuaWNvZGVzdHJpbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICd1bmljb2Rlc3RyaW5nOCcsICdkZWNpbWFsbmxfc2hvcnQnLCAnZGVjaW1hbG5sX2xvbmcnLAorICAgICAgICAgICAgICAgICAgICAgJ2Zsb2F0bmwnLCAnZmxvYXQ4JywgJ2xvbmcxJywgJ2xvbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICdTdGFja09iamVjdCcsCisgICAgICAgICAgICAgICAgICAgICAncHlpbnQnLCAncHlsb25nJywgJ3B5aW50ZWdlcl9vcl9ib29sJywgJ3B5Ym9vbCcsICdweWZsb2F0JywKKyAgICAgICAgICAgICAgICAgICAgICdweWJ5dGVzX29yX3N0cicsICdweXN0cmluZycsICdweWJ5dGVzJywgJ3B5dW5pY29kZScsCisgICAgICAgICAgICAgICAgICAgICAncHlub25lJywgJ3B5dHVwbGUnLCAncHlsaXN0JywgJ3B5ZGljdCcsICdweXNldCcsCisgICAgICAgICAgICAgICAgICAgICAncHlmcm96ZW5zZXQnLCAnYW55b2JqZWN0JywgJ21hcmtvYmplY3QnLCAnc3RhY2tzbGljZScsCisgICAgICAgICAgICAgICAgICAgICAnT3Bjb2RlSW5mbycsICdvcGNvZGVzJywgJ2NvZGUyb3AnLAorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBwaWNrbGV0b29scywgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoT3B0aW1pemVkUGlja2xlVGVzdHMpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTWlzY1Rlc3RDYXNlKQogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QocGlja2xldG9vbHMpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKaW5kZXggNmE3YjQ1Zi4uYWQwMWQwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CkBAIC0yLDYgKzIsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzaHV0aWwKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgdW5saW5rLCByZWFwX2NoaWxkcmVuCiAKIGlmIG9zLm5hbWUgIT0gJ3Bvc2l4JzoKQEAgLTE4LDYgKzE5LDggQEAKICAgICAgICAgICAgIHVubGluayhmKQogCiAgICAgZGVmIHRlc3RTaW1wbGVQaXBlMShzZWxmKToKKyAgICAgICAgaWYgc2h1dGlsLndoaWNoKCd0cicpIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ciBpcyBub3QgYXZhaWxhYmxlJykKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKICAgICAgICAgdC5hcHBlbmQoc19jb21tYW5kLCBwaXBlcy5TVERJTl9TVERPVVQpCiAgICAgICAgIGYgPSB0Lm9wZW4oVEVTVEZOLCAndycpCkBAIC0yNyw2ICszMCw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAnSEVMTE8gV09STEQgIzEnKQogCiAgICAgZGVmIHRlc3RTaW1wbGVQaXBlMihzZWxmKToKKyAgICAgICAgaWYgc2h1dGlsLndoaWNoKCd0cicpIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ciBpcyBub3QgYXZhaWxhYmxlJykKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgnaGVsbG8gd29ybGQgIzInKQogICAgICAgICB0ID0gcGlwZXMuVGVtcGxhdGUoKQpAQCAtMzYsNiArNDEsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgJ0hFTExPIFdPUkxEICMyJykKIAogICAgIGRlZiB0ZXN0U2ltcGxlUGlwZTMoc2VsZik6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgndHInKSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndHIgaXMgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ2hlbGxvIHdvcmxkICMyJykKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQppbmRleCBhODIwNTg3Li5mYzA0ZGNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CkBAIC04MSw4ICs4MSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzMiwgUkVTT1VSQ0VfREFUQSkKIAogICAgICAgICBuYW1lcyA9IFtdCi0gICAgICAgIGZvciBsb2FkZXIsIG5hbWUsIGlzcGtnIGluIHBrZ3V0aWwuaXRlcl9tb2R1bGVzKFt6aXBfZmlsZV0pOgotICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG5hbWUpCisgICAgICAgIGZvciBtb2R1bGVpbmZvIGluIHBrZ3V0aWwuaXRlcl9tb2R1bGVzKFt6aXBfZmlsZV0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZWluZm8sIHBrZ3V0aWwuTW9kdWxlSW5mbykKKyAgICAgICAgICAgIG5hbWVzLmFwcGVuZChtb2R1bGVpbmZvLm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZXMsIFsndGVzdF9nZXRkYXRhX3ppcGZpbGUnXSkKIAogICAgICAgICBkZWwgc3lzLnBhdGhbMF0KQEAgLTQxMyw2ICs0MTQsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJ0ZXN0LnN1cHBvcnQiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcud2FybmluZ3MpLCAwKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihfX25hbWVfXyA9PSAnX19tYWluX18nLCAnbm90IGNvbXBhdGlibGUgd2l0aCBfX21haW5fXycpCiAgICAgZGVmIHRlc3RfZ2V0X2xvYWRlcl9oYW5kbGVzX21pc3NpbmdfbG9hZGVyX2F0dHJpYnV0ZShzZWxmKToKICAgICAgICAgZ2xvYmFsIF9fbG9hZGVyX18KICAgICAgICAgdGhpc19sb2FkZXIgPSBfX2xvYWRlcl9fCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQppbmRleCAxOGRlMTEwLi41Zjg3NWVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKQEAgLTMzLDYgKzMzLDcgQEAKICAgICAgICAgICAgICAgICAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKSknXQogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICAgICAgcmV0dXJuIHAuY29tbXVuaWNhdGUoKQorCiAgICAgICAgIHJlYWwgPSBvcy5wYXRoLnJlYWxwYXRoKHN5cy5leGVjdXRhYmxlKQogICAgICAgICBsaW5rID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBvcy5zeW1saW5rKHJlYWwsIGxpbmspCkBAIC0yNjIsNyArMjYzLDcgQEAKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpAQCAtMzM4LDcgKzMzOSw3IEBACiAgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAgICAgICAgICdpZ25vcmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCiAgICAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQppbmRleCAxNjExNGY5Li42MGZmOTE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgYmluYXNjaWkKIGltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKQEAgLTUyNyw4ICs1MjYsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXIsIGluX2RhdGEpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsiUGxpc3RGb3JtYXQiLCAiUExJU1RIRUFERVIifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBwbGlzdGxpYiwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFBsaXN0bGliLCBUZXN0UGxpc3RsaWJEZXByZWNhdGVkKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQbGlzdGxpYiwgVGVzdFBsaXN0bGliRGVwcmVjYXRlZCwgTWlzY1Rlc3RDYXNlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CmluZGV4IGJjZWViOTMuLmU1YjE2ZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CkBAIC04LDcgKzgsNiBAQAogaW1wb3J0IGFzeW5jaGF0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgb3MKLWltcG9ydCB0aW1lCiBpbXBvcnQgZXJybm8KIAogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBVbmxlc3MKQEAgLTE1MywxMCArMTUyLDEyIEBACiAgICAgICAgIGRlZiBjbWRfc3RscyhzZWxmLCBhcmcpOgogICAgICAgICAgICAgaWYgc2VsZi50bHNfYWN0aXZlIGlzIEZhbHNlOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnK09LIEJlZ2luIFRMUyBuZWdvdGlhdGlvbicpCi0gICAgICAgICAgICAgICAgdGxzX3NvY2sgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsIGNlcnRmaWxlPUNFUlRGSUxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCisgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICB0bHNfc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKICAgICAgICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQodGxzX3NvY2spCiAgICAgICAgICAgICAgICAgc2VsZi50bHNfYWN0aXZlID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggMmE1OWMzOC4uZDJmNThiYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC0xMSw3ICsxMSw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHB3ZAotaW1wb3J0IHNodXRpbAogaW1wb3J0IHN0YXQKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC0zOTgsNyArMzk3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KGZwLmZpbGVubygpKSkKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGZsb2F0KGZwLmZpbGVubygpKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGZwLmNsb3NlKCkKQEAgLTQwOCwxNiArNDA3LDE4IEBACiAgICAgZGVmIHRlc3Rfc3RhdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChieXRlYXJyYXkob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgYnl0ZWFycmF5KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICdjYW5cJ3Qgc3BlY2lmeSBOb25lIGZvciBwYXRoIGFyZ3VtZW50JywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGxpc3Qoc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgbGlzdChvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ21rZmlmbycpLCAiZG9uJ3QgaGF2ZSBta2ZpZm8oKSIpCkBAIC04NjMsOSArODY0LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQogICAgICAgICAgICAgczIgPSBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9Tm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSwgbm90JywKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD1wb3NpeC5nZXRjd2QoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUsIG5vdCcsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZmxvYXQoZikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPTEwKioyMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKaW5kZXggMDc4M2MzNi4uOGExZTMzYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKQEAgLTU5Niw1ICs1OTYsODUgQEAKICAgICBhdHRyaWJ1dGVzID0gWydyZWxwYXRoJywgJ3NhbWVmaWxlJywgJ3NhbWVvcGVuZmlsZScsICdzYW1lc3RhdCddCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBwYXRoID0gcG9zaXhwYXRoCisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlX25hbWUsICd4YicsIDApIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGIidGVzdF9wb3NpeHBhdGguUGF0aExpa2VUZXN0cyIpCisKKyAgICBkZWYgYXNzZXJ0UGF0aEVxdWFsKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoc2VsZi5maWxlX3BhdGgpLCBmdW5jKHNlbGYuZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybWNhc2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtY2FzZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNhYnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2FicykKKworICAgIGRlZiB0ZXN0X3BhdGhfam9pbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGguam9pbignYScsIHNlbGYuUGF0aExpa2UoJ2InKSwgJ2MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGguam9pbignYScsICdiJywgJ2MnKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRleHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGV4dCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRkcml2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZHJpdmUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Jhc2VuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYmFzZW5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Rpcm5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5kaXJuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2xpbmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2xpbmspCisKKyAgICBkZWYgdGVzdF9wYXRoX2xleGlzdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5sZXhpc3RzKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc21vdW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNtb3VudCkKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHVzZXIpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHZhcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR2YXJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1wYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9hYnNwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYWJzcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVhbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWFscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGNvbW1vbl9wYXRoID0gc2VsZi5wYXRoLmNvbW1vbnBhdGgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uX3BhdGgsIHNlbGYuZmlsZV9uYW1lKQorCisKIGlmIF9fbmFtZV9fPT0iX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3cucHkgYi9MaWIvdGVzdC90ZXN0X3Bvdy5weQppbmRleCA2ZmVhYzQwLi5jZTk5ZmU2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvdy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvdy5weQpAQCAtMSw0ICsxLDQgQEAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgUG93VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5IGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKaW5kZXggZWY1ZTk5ZS4uMTVmODhlNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKQEAgLTI3Nyw3ICsyNzcsNiBAQAogICAgICAgICBzb2NrZXRwYWlyID0gc2VsZi5fc29ja2V0cGFpcigpCiAgICAgICAgIG1hc3RlcnMgPSBbcy5maWxlbm8oKSBmb3IgcyBpbiBzb2NrZXRwYWlyXQogCi0gICAgICAgIG9zLmNsb3NlKG1hc3RlcnNbMV0pCiAgICAgICAgIHNvY2tldHBhaXJbMV0uY2xvc2UoKQogICAgICAgICBvcy5jbG9zZSh3cml0ZV90b19zdGRpbl9mZCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CmluZGV4IDE5MzJjNmIuLjNkODllM2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgaW8KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogaW1wb3J0IHhtbC5zYXgKIAogZnJvbSB4bWwuc2F4LnhtbHJlYWRlciBpbXBvcnQgQXR0cmlidXRlc0ltcGwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5IGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKaW5kZXggNmZmYmJiZC4uMmNmZjFjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKQEAgLTE1Niw5ICsxNTYsOSBAQAogICAgICAgICAjIFRoZXNlIHdlcmUgb25jZSBhYm91dCB0aGUgMTAgbG9uZ2VzdCBtb2R1bGVzCiAgICAgICAgIGNtKCdyYW5kb20nLCBpZ25vcmU9KCdSYW5kb20nLCkpICAjIGZyb20gX3JhbmRvbSBpbXBvcnQgUmFuZG9tIGFzIENvcmVHZW5lcmF0b3IKICAgICAgICAgY20oJ2NnaScsIGlnbm9yZT0oJ2xvZycsKSkgICAgICAjIHNldCB3aXRoID0gaW4gbW9kdWxlCi0gICAgICAgIGNtKCdwaWNrbGUnKQorICAgICAgICBjbSgncGlja2xlJywgaWdub3JlPSgncGFydGlhbCcsKSkKICAgICAgICAgY20oJ2FpZmMnLCBpZ25vcmU9KCdvcGVuZnAnLCAnX2FpZmNfcGFyYW1zJykpICAjIHNldCB3aXRoID0gaW4gbW9kdWxlCi0gICAgICAgIGNtKCdzcmVfcGFyc2UnLCBpZ25vcmU9KCdkdW1wJywgJ2dyb3VwcycpKSAjIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKjsgcHJvcGVydHkKKyAgICAgICAgY20oJ3NyZV9wYXJzZScsIGlnbm9yZT0oJ2R1bXAnLCAnZ3JvdXBzJywgJ3BvcycpKSAjIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKjsgcHJvcGVydHkKICAgICAgICAgY20oJ3BkYicpCiAgICAgICAgIGNtKCdweWRvYycpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CmluZGV4IGFlZTk3OWIuLjUxNzRkNTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQpAQCAtODMsNiArODMsOCBAQAogICAgICB8ICBEYXRhIGFuZCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgaGVyZToKICAgICAgfFx4MjBceDIwCiAgICAgIHwgIE5PX01FQU5JTkcgPSAnZWdncycKKyAgICAgfFx4MjBceDIwCisgICAgIHwgIF9fYW5ub3RhdGlvbnNfXyA9IHsnTk9fTUVBTklORyc6IDxjbGFzcyAnc3RyJz59CiBceDIwXHgyMFx4MjBceDIwCiAgICAgY2xhc3MgQyhidWlsdGlucy5vYmplY3QpCiAgICAgIHwgIE1ldGhvZHMgZGVmaW5lZCBoZXJlOgpAQCAtMTk1LDYgKzE5Nyw4IEBACiBEYXRhIGFuZCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgaGVyZTo8YnI+CiA8ZGw+PGR0PjxzdHJvbmc+Tk9fTUVBTklORzwvc3Ryb25nPiA9ICdlZ2dzJzwvZGw+CiAKKzxkbD48ZHQ+PHN0cm9uZz5fX2Fubm90YXRpb25zX188L3N0cm9uZz4gPSB7J05PX01FQU5JTkcnOiAmbHQ7Y2xhc3MgJ3N0cicmZ3Q7fTwvZGw+CisKIDwvdGQ+PC90cj48L3RhYmxlPiA8cD4KIDx0YWJsZSB3aWR0aD0iMTAwJSUiIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MiBib3JkZXI9MCBzdW1tYXJ5PSJzZWN0aW9uIj4KIDx0ciBiZ2NvbG9yPSIjZmZjOGQ4Ij4KQEAgLTI2Myw3ICsyNjcsNyBAQAogVXNlIGhlbHAoc3RyKSBmb3IgaGVscCBvbiB0aGUgc3RyIGNsYXNzLicnJy5yZXBsYWNlKCdcbicsIG9zLmxpbmVzZXApCiAKICMgb3V0cHV0IHBhdHRlcm4gZm9yIG1vZHVsZSB3aXRoIGJhZCBpbXBvcnRzCi1iYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKK2JhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBNb2R1bGVOb3RGb3VuZEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXIiCiAKIGV4cGVjdGVkX2R5bmFtaWNhdHRyaWJ1dGVfcGF0dGVybiA9ICIiIgogSGVscCBvbiBjbGFzcyBEQSBpbiBtb2R1bGUgJXM6CkBAIC02MzgsOCArNjQyLDkgQEAKICAgICAgICAgZGVsIGV4cGVjdGVkWydfX2RvY19fJ10KICAgICAgICAgZGVsIGV4cGVjdGVkWydfX2NsYXNzX18nXQogICAgICAgICAjIGluc3BlY3QgcmVzb2x2ZXMgZGVzY3JpcHRvcnMgb24gdHlwZSBpbnRvIG1ldGhvZHMsIGJ1dCB2YXJzIGRvZXNuJ3QsCi0gICAgICAgICMgc28gd2UgbmVlZCB0byB1cGRhdGUgX19zdWJjbGFzc2hvb2tfXy4KKyAgICAgICAgIyBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSBfX3N1YmNsYXNzaG9va19fIGFuZCBfX2luaXRfc3ViY2xhc3NfXy4KICAgICAgICAgZXhwZWN0ZWRbJ19fc3ViY2xhc3Nob29rX18nXSA9IFRlc3RDbGFzcy5fX3N1YmNsYXNzaG9va19fCisgICAgICAgIGV4cGVjdGVkWydfX2luaXRfc3ViY2xhc3NfXyddID0gVGVzdENsYXNzLl9faW5pdF9zdWJjbGFzc19fCiAKICAgICAgICAgbWV0aG9kcyA9IHB5ZG9jLmFsbG1ldGhvZHMoVGVzdENsYXNzKQogICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChtZXRob2RzLCBleHBlY3RlZCkKQEAgLTg1NSw2ICs4NjAsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfc3VtbWFyeV9saW5lKHQud3JhcCksCiAgICAgICAgICAgICAid3JhcCh0ZXh0KSBtZXRob2Qgb2YgdGV4dHdyYXAuVGV4dFdyYXBwZXIgaW5zdGFuY2UiKQogCisgICAgZGVmIHRlc3RfZmllbGRfb3JkZXJfZm9yX25hbWVkX3R1cGxlcyhzZWxmKToKKyAgICAgICAgUGVyc29uID0gbmFtZWR0dXBsZSgnUGVyc29uJywgWyduaWNrbmFtZScsICdmaXJzdG5hbWUnLCAnYWdlZ3JvdXAnXSkKKyAgICAgICAgcyA9IHB5ZG9jLnJlbmRlcl9kb2MoUGVyc29uKQorICAgICAgICBzZWxmLmFzc2VydExlc3Mocy5pbmRleCgnbmlja25hbWUnKSwgcy5pbmRleCgnZmlyc3RuYW1lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzLmluZGV4KCdmaXJzdG5hbWUnKSwgcy5pbmRleCgnYWdlZ3JvdXAnKSkKKworICAgICAgICBjbGFzcyBOb25JdGVyYWJsZUZpZWxkczoKKyAgICAgICAgICAgIF9maWVsZHMgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTm9uSGFzaGFibGVGaWVsZHM6CisgICAgICAgICAgICBfZmllbGRzID0gW1tdXQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoZXNlIGRvZXNuJ3QgZmFpbAorICAgICAgICBweWRvYy5yZW5kZXJfZG9jKE5vbkl0ZXJhYmxlRmllbGRzKQorICAgICAgICBweWRvYy5yZW5kZXJfZG9jKE5vbkhhc2hhYmxlRmllbGRzKQorCiAgICAgQHJlcXVpcmVzX2RvY3N0cmluZ3MKICAgICBkZWYgdGVzdF9ib3VuZF9idWlsdGluX21ldGhvZChzZWxmKToKICAgICAgICAgcyA9IFN0cmluZ0lPKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5IGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKaW5kZXggN2NhYzAxMy4uNzE1NTQ0YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIAotaW1wb3J0IHN5cywgb3MsIGlvLCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzLCBpbywgc3VicHJvY2VzcwogaW1wb3J0IHF1b3ByaQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKaW5kZXggZTgwZWQxNy4uOWMxMzgzZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAogZnJvbSBtYXRoIGltcG9ydCBsb2csIGV4cCwgcGksIGZzdW0sIHNpbgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KIAogY2xhc3MgVGVzdEJhc2ljT3BzOgogICAgICMgU3VwZXJjbGFzcyB3aXRoIHRlc3RzIGNvbW1vbiB0byBhbGwgZ2VuZXJhdG9ycy4KQEAgLTE0MSw2ICsxNDIsNzMgQEAKICAgICBkZWYgdGVzdF9zYW1wbGVfb25fZGljdHMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5nZW4uc2FtcGxlLCBkaWN0LmZyb21rZXlzKCdhYmNkZWYnKSwgMikKIAorICAgIGRlZiB0ZXN0X2Nob2ljZXMoc2VsZik6CisgICAgICAgIGNob2ljZXMgPSBzZWxmLmdlbi5jaG9pY2VzCisgICAgICAgIGRhdGEgPSBbJ3JlZCcsICdncmVlbicsICdibHVlJywgJ3llbGxvdyddCisgICAgICAgIHN0cl9kYXRhID0gJ2FiY2QnCisgICAgICAgIHJhbmdlX2RhdGEgPSByYW5nZSg0KQorICAgICAgICBzZXRfZGF0YSA9IHNldChyYW5nZSg0KSkKKworICAgICAgICAjIGJhc2ljIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgZm9yIHNhbXBsZSBpbiBbCisgICAgICAgICAgICBjaG9pY2VzKDUsIGRhdGEpLAorICAgICAgICAgICAgY2hvaWNlcyg1LCBkYXRhLCByYW5nZSg0KSksCisgICAgICAgICAgICBjaG9pY2VzKGs9NSwgcG9wdWxhdGlvbj1kYXRhLCB3ZWlnaHRzPXJhbmdlKDQpKSwKKyAgICAgICAgICAgIGNob2ljZXMoaz01LCBwb3B1bGF0aW9uPWRhdGEsIGN1bV93ZWlnaHRzPXJhbmdlKDQpKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNhbXBsZSksIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2FtcGxlKSwgbGlzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoc2FtcGxlKSA8PSBzZXQoZGF0YSkpCisKKyAgICAgICAgIyB0ZXN0IGFyZ3VtZW50IGhhbmRsaW5nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtaXNzaW5nIGFyZ3VtZW50cworICAgICAgICAgICAgY2hvaWNlcygyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygwLCBkYXRhKSwgW10pICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBrID09IDAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKC0xLCBkYXRhKSwgW10pICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5lZ2F0aXZlIGsgYmVoYXZlcyBsaWtlIGBgWzBdICogLTFgYAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKDIuNSwgZGF0YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBrIGlzIGEgZmxvYXQKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoNSwgc3RyX2RhdGEpKSA8PSBzZXQoc3RyX2RhdGEpKSAgICAgICMgcG9wdWxhdGlvbiBpcyBhIHN0cmluZyBzZXF1ZW5jZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoNSwgcmFuZ2VfZGF0YSkpIDw9IHNldChyYW5nZV9kYXRhKSkgICMgcG9wdWxhdGlvbiBpcyBhIHJhbmdlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoMi41LCBzZXRfZGF0YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBvcHVsYXRpb24gaXMgbm90IGEgc2VxdWVuY2UKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoNSwgZGF0YSwgTm9uZSkpIDw9IHNldChkYXRhKSkgICAgICAgICMgd2VpZ2h0cyBpcyBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyg1LCBkYXRhLCB3ZWlnaHRzPU5vbmUpKSA8PSBzZXQoZGF0YSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKDUsIGRhdGEsIFsxLDJdKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsZW4od2VpZ2h0cykgIT0gbGVuKHBvcHVsYXRpb24pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKDUsIGRhdGEsIFswXSo0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZWlnaHRzIHN1bSB0byB6ZXJvCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoNSwgZGF0YSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1pdGVyYWJsZSB3ZWlnaHRzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoNSwgZGF0YSwgW05vbmVdKjQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1udW1lcmljIHdlaWdodHMKKyAgICAgICAgZm9yIHdlaWdodHMgaW4gWworICAgICAgICAgICAgICAgIFsxNSwgMTAsIDI1LCAzMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZWdlciB3ZWlnaHRzCisgICAgICAgICAgICAgICAgWzE1LjEsIDEwLjIsIDI1LjIsIDMwLjNdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmbG9hdCB3ZWlnaHRzCisgICAgICAgICAgICAgICAgW0ZyYWN0aW9uKDEsIDMpLCBGcmFjdGlvbigyLCA2KSwgRnJhY3Rpb24oMywgNiksIEZyYWN0aW9uKDQsIDYpXSwgIyBmcmFjdGlvbmFsIHdlaWdodHMKKyAgICAgICAgICAgICAgICBbVHJ1ZSwgRmFsc2UsIFRydWUsIEZhbHNlXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvb2xlYW5zIChpbmNsdWRlIC8gZXhjbHVkZSkKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyg1LCBkYXRhLCB3ZWlnaHRzKSkgPD0gc2V0KGRhdGEpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKDUsIGRhdGEsIGN1bV93ZWlnaHRzPVsxLDJdKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsZW4od2VpZ2h0cykgIT0gbGVuKHBvcHVsYXRpb24pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKDUsIGRhdGEsIGN1bV93ZWlnaHRzPVswXSo0KSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjdW1fd2VpZ2h0cyBzdW0gdG8gemVybworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKDUsIGRhdGEsIGN1bV93ZWlnaHRzPTEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub24taXRlcmFibGUgY3VtX3dlaWdodHMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyg1LCBkYXRhLCBjdW1fd2VpZ2h0cz1bTm9uZV0qNCkgICAgICAgICAgICAgICAgICAgICAgICMgbm9uLW51bWVyaWMgY3VtX3dlaWdodHMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyg1LCBkYXRhLCByYW5nZSg0KSwgY3VtX3dlaWdodHM9cmFuZ2UoNCkpICAgICAgICAgICAgICMgYm90aCB3ZWlnaHRzIGFuZCBjdW1fd2VpZ2h0cworICAgICAgICBmb3Igd2VpZ2h0cyBpbiBbCisgICAgICAgICAgICAgICAgWzE1LCAxMCwgMjUsIDMwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnRlZ2VyIGN1bV93ZWlnaHRzCisgICAgICAgICAgICAgICAgWzE1LjEsIDEwLjIsIDI1LjIsIDMwLjNdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmbG9hdCBjdW1fd2VpZ2h0cworICAgICAgICAgICAgICAgIFtGcmFjdGlvbigxLCAzKSwgRnJhY3Rpb24oMiwgNiksIEZyYWN0aW9uKDMsIDYpLCBGcmFjdGlvbig0LCA2KV0sICMgZnJhY3Rpb25hbCBjdW1fd2VpZ2h0cworICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKDUsIGRhdGEsIGN1bV93ZWlnaHRzPXdlaWdodHMpKSA8PSBzZXQoZGF0YSkpCisKICAgICBkZWYgdGVzdF9nYXVzcyhzZWxmKToKICAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgc2VlZCgpIG1ldGhvZCBpbml0aWFsaXplcyBhbGwgdGhlIGhpZGRlbiBzdGF0ZS4gIEluCiAgICAgICAgICMgcGFydGljdWxhciwgdGhyb3VnaCAyLjIuMSBpdCBmYWlsZWQgdG8gcmVzZXQgYSBwaWVjZSBvZiBzdGF0ZSB1c2VkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQppbmRleCAxMDZjNzMyLi5lMDNiNTcwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKQEAgLTEsNiArMSw2IEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBidWlsdC1pbiBmdW5jdGlvbnMKIAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGl0ZXJ0b29scwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKaW5kZXggZjQxNWYzZi4uNjgwM2UwMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CkBAIC0xMTMsMTAgKzExMywxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKC4pJywgcmUuZXNjYXBlKHMpLCAneCcpLCBzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKC4pJywgbGFtYmRhIG06IHMsICd4JyksIHMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgJ1xnPGE+XGc8YT4nLCAneHgnKSwgJ3h4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCAnXGc8YT5cZzwxPicsICd4eCcpLCAneHh4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPHVuaz5cZzx1bms+JywgJ3h4JyksICd4eHh4JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCAnXGc8MT5cZzwxPicsICd4eCcpLCAneHh4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsIHInXGc8YT5cZzxhPicsICd4eCcpLCAneHh4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsIHInXGc8YT5cZzwxPicsICd4eCcpLCAneHh4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgcidcZzx1bms+XGc8dW5rPicsICd4eCcpLCAneHh4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgcidcZzwxPlxnPDE+JywgJ3h4JyksICd4eHh4JykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsIHInXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGFcYicsICdhJyksICdcdFxuXHZcclxmXGFcYicpCkBAIC0xMjQsMTQgKzEyNCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIChjaHIoOSkrY2hyKDEwKStjaHIoMTEpK2NocigxMykrY2hyKDEyKStjaHIoNykrY2hyKDgpKSkKICAgICAgICAgZm9yIGMgaW4gJ2NkZWhpamtsbW9wcXN1d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcXCcgKyBjLCAnYScpLCAnXFwnICsgYykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignXlxzKicsICdYJywgJ3Rlc3QnKSwgJ1h0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocideXHMqJywgJ1gnLCAndGVzdCcpLCAnWHRlc3QnKQogCiAgICAgZGVmIHRlc3RfYnVnXzQ0OTk2NChzZWxmKToKICAgICAgICAgIyBmYWlscyBmb3IgZ3JvdXAgZm9sbG93ZWQgYnkgb3RoZXIgZXNjYXBlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInKD9QPHVuaz54KScsICdcZzwxPlxnPDE+XFxiJywgJ3h4JyksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInKD9QPHVuaz54KScsIHInXGc8MT5cZzwxPlxiJywgJ3h4JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3h4XGJ4eFxiJykKIAogICAgIGRlZiB0ZXN0X2J1Z180NDkwMDAoc2VsZik6CkBAIC0yMTgsMjYgKzIxOCwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCsnLCAnLScsICdhYnhkJyksICdhYi1kJykKIAogICAgIGRlZiB0ZXN0X3N5bWJvbGljX2dyb3VwcyhzZWxmKToKLSAgICAgICAgcmUuY29tcGlsZSgnKD9QPGE+eCkoP1A9YSkoPyhhKXkpJykKLSAgICAgICAgcmUuY29tcGlsZSgnKD9QPGExPngpKD9QPWExKSg/KGExKXkpJykKLSAgICAgICAgcmUuY29tcGlsZSgnKD9QPGExPngpXDEoPygxKXkpJykKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KSg/UDxhPiknLAorICAgICAgICByZS5jb21waWxlKHInKD9QPGE+eCkoP1A9YSkoPyhhKXkpJykKKyAgICAgICAgcmUuY29tcGlsZShyJyg/UDxhMT54KSg/UD1hMSkoPyhhMSl5KScpCisgICAgICAgIHJlLmNvbXBpbGUocicoP1A8YTE+eClcMSg/KDEpeSknKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/UDxhPiknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWRlZmluaXRpb24gb2YgZ3JvdXAgbmFtZSAnYScgYXMgZ3JvdXAgMjsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXMgZ3JvdXAgMSIpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPig/UD1hKSknLAorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KD9QPWEpKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwIiwgMTApCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UHh5KScsICd1bmtub3duIGV4dGVuc2lvbiA/UHgnKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4pKD9QPWEnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgbmFtZScsIDExKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0xKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYSciKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YTEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYTEnIikKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEuKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDwpJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8PiknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UHh5KScsICd1bmtub3duIGV4dGVuc2lvbiA/UHgnKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/UD1hJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIG5hbWUnLCAxMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD0nLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD0pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9MSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9YSknLCAidW5rbm93biBncm91cCBuYW1lICdhJyIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9YTEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYTEnIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD1hLiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPCknLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwnLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDw+KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPDE+KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhLj4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQpAQCAtMjU2LDM1ICsyNTYsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChwYXQsICd4Yzh5eicpLnNwYW4oKSwgKDAsIDUpKQogCiAgICAgZGVmIHRlc3Rfc3ltYm9saWNfcmVmcyhzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPGEnLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPGEnLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwnLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPCcsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGcnLCAneHgnLCAnbWlzc2luZyA8JywgMikKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPGEgYT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnJywgJ3h4JywgJ21pc3NpbmcgPCcsIDIpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8YSBhPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EgYSciLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8PicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8PicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8MWExPicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8MWExPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzFhMSciLCAzKQogICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPDI+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKICAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcMicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAidW5rbm93biBncm91cCBuYW1lICdhYiciKToKLSAgICAgICAgICAgIHJlLnN1YignKD9QPGE+eCknLCAnXGc8YWI+JywgJ3h4JykKKyAgICAgICAgICAgIHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGFiPicsICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXGc8Yj4nLCAneHgnKSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXDInLCAneHgnKSwgJycpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwtMT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPC0xPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJy0xJyIsIDMpCiAgICAgICAgICMgTmV3IHZhbGlkL2ludmFsaWQgaWRlbnRpZmllcnMgaW4gUHl0aG9uIDMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDzCtT54KScsIHInXGc8wrU+JywgJ3h4JyksICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A88J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoj54KScsIHInXGc88J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoj4nLCAneHgnKSwgJ3h4JykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPMKpPicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8wqk+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnwqknIiwgMykKICAgICAgICAgIyBTdXBwb3J0ID4gMTAwIGdyb3Vwcy4KICAgICAgICAgcGF0ID0gJ3wnLmpvaW4oJ3goP1A8YSVkPiV4KXknICUgKGksIGkpIGZvciBpIGluIHJhbmdlKDEsIDIwMCArIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihwYXQsICdcZzwyMDA+JywgJ3hjOHl6eGM4eScpLCAnYzh6YzgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihwYXQsIHInXGc8MjAwPicsICd4Yzh5enhjOHknKSwgJ2M4emM4JykKIAogICAgIGRlZiB0ZXN0X3JlX3N1Ym4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiKD9pKWIrIiwgIngiLCAiYmJiYiBCQkJCIiksICgneCB4JywgMikpCkBAIC00MTQsMTkgKzQxNCw3NyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYmMnKS5ncm91cHMoKSwgKCdiJywgTm9uZSwgJ2InLCAnYycpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYmMnKS5ncm91cHMoIiIpLCAoJ2InLCAiIiwgJ2InLCAnYycpKQogCi0gICAgICAgICMgQSBzaW5nbGUgZ3JvdXAKLSAgICAgICAgbSA9IHJlLm1hdGNoKCcoYSknLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgwKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDEpLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxLCAxKSwgKCdhJywgJ2EnKSkKLQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoPzooP1A8YTE+YSl8KD9QPGIyPmIpKSg/UDxjMz5jKT8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYScpLmdyb3VwKDEsIDIsIDMpLCAoJ2EnLCBOb25lLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2InKS5ncm91cCgnYTEnLCAnYjInLCAnYzMnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2InLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2FjJykuZ3JvdXAoMSwgJ2IyJywgMyksICgnYScsIE5vbmUsICdjJykpCiAKKyAgICBkZWYgdGVzdF9ncm91cChzZWxmKToKKyAgICAgICAgY2xhc3MgSW5kZXg6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9faW5kZXhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorICAgICAgICAjIEEgc2luZ2xlIGdyb3VwCisgICAgICAgIG0gPSByZS5tYXRjaCgnKGEpKGIpJywgJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKCksICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgwKSwgJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDEpLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cChJbmRleCgxKSksICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIDE8PDEwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIEluZGV4KDE8PDEwMDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAneCcpCisgICAgICAgICMgTXVsdGlwbGUgZ3JvdXBzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgyLCAxKSwgKCdiJywgJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKEluZGV4KDIpLCBJbmRleCgxKSksICgnYicsICdhJykpCisKKyAgICBkZWYgdGVzdF9tYXRjaF9nZXRpdGVtKHNlbGYpOgorICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoPzooP1A8YTE+YSl8KD9QPGIyPmIpKSg/UDxjMz5jKT8nKQorCisgICAgICAgIG0gPSBwYXQubWF0Y2goJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2ExJ10sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydiMiddLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2MzJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ExPXthMX0gYjI9e2IyfSBjMz17YzN9Jy5mb3JtYXRfbWFwKG0pLCAnYTE9YSBiMj1Ob25lIGMzPU5vbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsyXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzNdLCBOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bJ1gnXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bLTFdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVs0XQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bMCwgMV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWygwLCldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVsoMCwgMSldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChLZXlFcnJvciwgJ2EyJyk6CisgICAgICAgICAgICAnYTE9e2EyfScuZm9ybWF0X21hcChtKQorCisgICAgICAgIG0gPSBwYXQubWF0Y2goJ2FjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydhMSddLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYjInXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydjMyddLCAnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ExPXthMX0gYjI9e2IyfSBjMz17YzN9Jy5mb3JtYXRfbWFwKG0pLCAnYTE9YSBiMj1Ob25lIGMzPWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sICdhYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMl0sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVszXSwgJ2MnKQorCisgICAgICAgICMgQ2Fubm90IGFzc2lnbi4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbVswXSA9IDEKKworICAgICAgICAjIE5vIGxlbigpLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxlbiwgbSkKKwogICAgIGRlZiB0ZXN0X3JlX2Z1bGxtYXRjaChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxNjIwMzogUHJvcG9zYWw6IGFkZCByZS5mdWxsbWF0Y2goKSBtZXRob2QuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZnVsbG1hdGNoKHIiYSIsICJhIikuc3BhbigpLCAoMCwgMSkpCkBAIC00NTgsMTkgKzUxNiwxOSBAQAogICAgICAgICAgICAgcmUuY29tcGlsZShyIi4qPyIpLmZ1bGxtYXRjaCgiYWJjZCIsIHBvcz0xLCBlbmRwb3M9Mykuc3BhbigpLCAoMSwgMykpCiAKICAgICBkZWYgdGVzdF9yZV9ncm91cHJlZl9leGlzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhKScpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnKGEpJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCcoJywgJ2EnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYScpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYScpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnYScpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYSknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYSknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocideKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpYnxkKSkkJywgJ2FiJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgJ2InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSl8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnYScpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2EnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAnJykpCiAKICAgICAgICAgIyBUZXN0cyBmb3IgYnVnICMxMTc3ODMxOiBleGVyY2lzZSBncm91cHMgb3RoZXIgdGhhbiB0aGUgZmlyc3QgZ3JvdXAKQEAgLTQ5NSw3ICs1NTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0d28gYnJhbmNoZXMnLCAxMCkKIAogICAgIGRlZiB0ZXN0X3JlX2dyb3VwcmVmX292ZXJmbG93KHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKCknLCAnXGc8JXM+JyAlIHNyZV9jb25zdGFudHMuTUFYR1JPVVBTLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKCknLCByJ1xnPCVzPicgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMykKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoPyglZCkpJyAlIHNyZV9jb25zdGFudHMuTUFYR1JPVVBTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDEwKQpAQCAtNTMwLDM3ICs1ODgsMzcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiICIpCiAKICAgICBkZWYgdGVzdF9yZXBlYXRfbWlubWF4KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MX0kIiwgImFiYyIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MX0/JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezEsMn0kIiwgImFiYyIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MSwyfT8kIiwgImFiYyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl4oXHcpezF9JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxfT8kIiwgImFiYyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl4oXHcpezEsMn0kIiwgImFiYyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl4oXHcpezEsMn0/JCIsICJhYmMiKSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7MSwzfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7MSw0fSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7MSwzfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezN9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7MSwzfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsNH0kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsM30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7MSw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKIAotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7MX0kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7MX0/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezEsMn0kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7MSwyfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54ezF9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54ezEsMn0kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54ezEsMn0/JCIsICJ4eHgiKSkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezN9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDN9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDN9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDR9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDR9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7M30/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDN9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSw0fT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezMsNH0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7M30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDN9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MywzfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsNH0kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszLDR9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezN9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsM30/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSw0fT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszLDR9PyQiLCAieHh4IikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54e30kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54e30kIiwgInh7fSIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54e30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHt9JCIsICJ4e30iKSkKIAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIneHsyLDF9JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWluIHJlcGVhdCBncmVhdGVyIHRoYW4gbWF4IHJlcGVhdCcsIDIpCkBAIC02MzMsMTQgKzY5MSwxMCBAQAogICAgICAgICByZS5wdXJnZSgpICAjIGZvciB3YXJuaW5ncwogICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxeXpDRUZHSElKS0xNTk9QUVJUVlhZJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaCgnXFwlYycgJSBjLCBjKS5ncm91cCgpLCBjKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXFwlYycgJSBjLCAnYScpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnXFwlYycgJSBjKQogICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxeXpBQkNFRkdISUpLTE1OT1BRUlRWWFlaJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaCgnW1xcJWNdJyAlIGMsIGMpLmdyb3VwKCksIGMpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdbXFwlY10nICUgYywgJ2EnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJ1tcXCVjXScgJSBjKQogCiAgICAgZGVmIHRlc3Rfc3RyaW5nX2JvdW5kYXJpZXMoc2VsZik6CiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMDcxMwpAQCAtNjg3LDEwICs3NDEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiYVxuXG5iIikKIAogICAgIGRlZiB0ZXN0X2xvb2thaGVhZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1teYV0pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSg/PVxzW15hXSopKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSg/PVxzW2FiY10pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSg/PVxzW2FiY10qKSkiLCAiYSBiYyIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW15hXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW15hXSopKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1thYmNdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbYWJjXSopKSIsICJhIGJjIikuZ3JvdXAoMSksICJhIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKSg/PVxzXDEpIiwgImEgYSIpLmdyb3VwKDEpLCAiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSkoPz1cc1wxKikiLCAiYSBhYSIpLmdyb3VwKDEpLCAiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSkoPz1ccyhhYmN8YSkpIiwgImEgYSIpLmdyb3VwKDEpLCAiYSIpCkBAIC04MzgsMTIgKzg5MiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKGIiYWJjIiwgYiJBQkMiLCByZS5JfHJlLkwpLmdyb3VwKDApLCBiIkFCQyIpCiAKICAgICBkZWYgdGVzdF9ub3RfbGl0ZXJhbChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goIlxzKFteYV0pIiwgIiBiIikuZ3JvdXAoMSksICJiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goIlxzKFteYV0qKSIsICIgYmIiKS5ncm91cCgxKSwgImJiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJccyhbXmFdKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXHMoW15hXSopIiwgIiBiYiIpLmdyb3VwKDEpLCAiYmIiKQogCiAgICAgZGVmIHRlc3Rfc2VhcmNoX2NvdmVyYWdlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiXHMoYikiLCAiIGIiKS5ncm91cCgxKSwgImIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiYVxzIiwgImEgIikuZ3JvdXAoMCksICJhICIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXHMoYikiLCAiIGIiKS5ncm91cCgxKSwgImIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyImFccyIsICJhICIpLmdyb3VwKDApLCAiYSAiKQogCiAgICAgZGVmIGFzc2VydE1hdGNoKHNlbGYsIHBhdHRlcm4sIHRleHQsIG1hdGNoPU5vbmUsIHNwYW49Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcj1yZS5tYXRjaCk6CkBAIC05OTMsMTAgKzEwNDcsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4MCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiIjAiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMnh6IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IieiIpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcdTEyMzQiLCBiJ3UxMjM0JykpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlxVMDAwMTIzNDUiLCBiJ1UwMDAxMjM0NScpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiXHUxMjM0IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIlxVMDAwMTIzNDUiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDAiLCBiIlwwMDAiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwOCIsIGIiXDAwMDgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwMSIsIGIiXDAwMSIpKQpAQCAtMTAxOCwxMCArMTA3MCw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMngwXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeHpdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1x1MTIzNF0iLCBiJ3UnKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1xVMDAwMTIzNDVdIiwgYidVJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJbXHUxMjM0XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJbXFUwMDAxMjM0NV0iKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIltcNTY3XSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAxKQpAQCAtMTA0OSw4ICsxMDk5LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoYSk/YScsJ2EnKS5sYXN0aW5kZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocicoYSkoYik/YicsJ2FiJykubGFzdGluZGV4LCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInKD9QPGE+YSkoP1A8Yj5iKT9iJywnYWInKS5sYXN0Z3JvdXAsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKD9QPGE+YShiKSkiLCAiYWIiKS5sYXN0Z3JvdXAsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKChhKSkiLCAiYSIpLmxhc3RpbmRleCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIig/UDxhPmEoYikpIiwgImFiIikubGFzdGdyb3VwLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoKGEpKSIsICJhIikubGFzdGluZGV4LCAxKQogCiAgICAgZGVmIHRlc3RfYnVnXzQxODYyNihzZWxmKToKICAgICAgICAgIyBidWdzIDQxODYyNiBhdCBhbC4gLS0gVGVzdGluZyBHcmVnIENoYXBtYW4ncyBhZGRpdGlvbiBvZiBvcCBjb2RlCkBAIC0xMjIyLDcgKzEyNzIsNyBAQAogICAgICAgICAgICAgJ1x1ZmYxMCcsICMgJ1xOe0ZVTExXSURUSCBESUdJVCBaRVJPfScsIGNhdGVnb3J5ICdOZCcKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gZGVjaW1hbF9kaWdpdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeXGQkJywgeCkuZ3JvdXAoMCksIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXlxkJCcsIHgpLmdyb3VwKDApLCB4KQogCiAgICAgICAgIG5vdF9kZWNpbWFsX2RpZ2l0cyA9IFsKICAgICAgICAgICAgICdcdTIxNjUnLCAjICdcTntST01BTiBOVU1FUkFMIFNJWH0nLCBjYXRlZ29yeSAnTmwnCkBAIC0xMjMxLDcgKzEyODEsNyBAQAogICAgICAgICAgICAgJ1x1MzJiNCcsICMgJ1xOe0NJUkNMRUQgTlVNQkVSIFRISVJUWSBOSU5FfScsIGNhdGVnb3J5ICdObycKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm90X2RlY2ltYWxfZGlnaXRzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ15cZCQnLCB4KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXlxkJCcsIHgpKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfYXJyYXkoc2VsZik6CiAgICAgICAgICMgU0YgYnVmIDE2NDc1NDEKQEAgLTEyNzMsNiArMTMyMywyMiBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJyg/aXh1KSAnICsgdXBwZXJfY2hhciwgbG93ZXJfY2hhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnKD9peHUpICcgKyBsb3dlcl9jaGFyLCB1cHBlcl9jaGFyKSkKIAorICAgICAgICBwID0gdXBwZXJfY2hhciArICcoP2kpJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyB3YXJuczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChwLCBsb3dlcl9jaGFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cih3YXJucy53YXJuaW5nc1swXS5tZXNzYWdlKSwKKyAgICAgICAgICAgICdGbGFncyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleHByZXNzaW9uICVzJyAlIHAKKyAgICAgICAgKQorCisgICAgICAgIHAgPSB1cHBlcl9jaGFyICsgJyg/aSklcycgJSAoJy4/JyAqIDEwMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgd2FybnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocCwgbG93ZXJfY2hhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIod2FybnMud2FybmluZ3NbMF0ubWVzc2FnZSksCisgICAgICAgICAgICAnRmxhZ3Mgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiAlcyAodHJ1bmNhdGVkKScgJSBwWzoyMF0KKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3RfZG9sbGFyX21hdGNoZXNfdHdpY2Uoc2VsZik6CiAgICAgICAgICIkIG1hdGNoZXMgdGhlIGVuZCBvZiBzdHJpbmcsIGFuZCBqdXN0IGJlZm9yZSB0aGUgdGVybWluYXRpbmcgXG4iCiAgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCckJykKQEAgLTEzMDMsMjkgKzEzNjksMjkgQEAKICAgICAgICAgZm9yIGZsYWdzIGluICgwLCByZS5VTklDT0RFKToKICAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x4YzAnLCBmbGFncyB8IHJlLklHTk9SRUNBU0UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKCdceGUwJykpCi0gICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKCdcdycsIGZsYWdzKQorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ1x3JywgZmxhZ3MpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKCdceGUwJykpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x4YzAnLCByZS5BU0NJSSB8IHJlLklHTk9SRUNBU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoP2EpXHhjMCcsIHJlLklHTk9SRUNBU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKCdcdycsIHJlLkFTQ0lJKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHInXHcnLCByZS5BU0NJSSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyg/YSlcdycpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocicoP2EpXHcnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKICAgICAgICAgIyBCeXRlcyBwYXR0ZXJucwogICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIHJlLkFTQ0lJKToKICAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidceGMwJywgZmxhZ3MgfCByZS5JR05PUkVDQVNFKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGInXHhlMCcpKQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JywgZmxhZ3MpCisgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ1x3JywgZmxhZ3MpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYidceGUwJykpCiAgICAgICAgICMgSW5jb21wYXRpYmlsaXRpZXMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYidcdycsIHJlLlVOSUNPREUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD91KVx3JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJ1x3JywgcmUuVU5JQ09ERSB8IHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD91KVx3JywgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP2EpXHcnLCByZS5VTklDT0RFKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9hdSlcdycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGJyJ1x3JywgcmUuVU5JQ09ERSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYnInKD91KVx3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcidcdycsIHJlLlVOSUNPREUgfCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcicoP3UpXHcnLCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcicoP2EpXHcnLCByZS5VTklDT0RFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCByJyg/YXUpXHcnKQogCiAgICAgZGVmIHRlc3RfbG9jYWxlX2ZsYWcoc2VsZik6CiAgICAgICAgIGltcG9ydCBsb2NhbGUKQEAgLTEzNTYsMjcgKzE0MjIsNTkgQEAKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicGF0LCByZS5JR05PUkVDQVNFKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGJsZXR0ZXIpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHcnLCByZS5MT0NBTEUpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInXHcnLCByZS5MT0NBTEUpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInKD9MKVx3JykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicicoP0wpXHcnKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidcdycpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYmxldHRlcikpCiAgICAgICAgICMgSW5jb21wYXRpYmlsaXRpZXMKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsICcnLCByZS5MT0NBTEUpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCAnKD9MKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJycsIHJlLkxPQ0FMRSB8IHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP0wpJywgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/YSknLCByZS5MT0NBTEUpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/YUwpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJycsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/TCknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJycsIHJlLkxPQ0FMRSB8IHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/TCknLCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP2EpJywgcmUuTE9DQUxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/YUwpJykKKworICAgIGRlZiB0ZXN0X3Njb3BlZF9mbGFncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD9pOmEpYicsICdBYicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/aTphKWInLCAnYUInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPy1pOmEpYicsICdBYicsIHJlLklHTk9SRUNBU0UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPy1pOmEpYicsICdhQicsIHJlLklHTk9SRUNBU0UpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/aTooPy1pOmEpYiknLCAnQWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD9pOig/LWk6YSliKScsICdhQicpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/eDogYSkgYicsICdhIGInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP3g6IGEpIGInLCAnIGEgYicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPy14OiBhKSBiJywgJyBhYicsIHJlLlZFUkJPU0UpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/LXg6IGEpIGInLCAnYWInLCByZS5WRVJCT1NFKSkKKworICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9hOlx3KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9uIGdsb2JhbCBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/YSkoPy1hOlx3KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9mZiBnbG9iYWwgZmxhZycsIDgpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2ktaTphKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZCBpbmxpbmUgZmxhZ3M6IGZsYWcgdHVybmVkIG9uIGFuZCBvZmYnLCA1KQorCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy0nLCAnbWlzc2luZyBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LSsnLCAnbWlzc2luZyBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LXonLCAndW5rbm93biBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWknLCAnbWlzc2luZyA6JywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWkpJywgJ21pc3NpbmcgOicsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1pKycsICdtaXNzaW5nIDonLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taXonLCAndW5rbm93biBmbGFnJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aTonLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgc3VicGF0dGVybicsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pKycsICdtaXNzaW5nIC0sIDogb3IgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2l6JywgJ3Vua25vd24gZmxhZycsIDMpCiAKICAgICBkZWYgdGVzdF9idWdfNjUwOShzZWxmKToKICAgICAgICAgIyBSZXBsYWNlbWVudCBzdHJpbmdzIG9mIGJvdGggdHlwZXMgbXVzdCBwYXJzZSBwcm9wZXJseS4KICAgICAgICAgIyBhbGwgc3RyaW5ncwotICAgICAgICBwYXQgPSByZS5jb21waWxlKCdhKFx3KScpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocidhKFx3KScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YignYlxcMScsICdhYycpLCAnYmMnKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCdhKC4pJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKCdiXFwxJywgJ2FcdTEyMzQnKSwgJ2JcdTEyMzQnKQpAQCAtMTM4NCw3ICsxNDgyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKGxhbWJkYSBtOiAnc3RyJywgJ2E1JyksICdzdHInKQogCiAgICAgICAgICMgYWxsIGJ5dGVzCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidhKFx3KScpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInYShcdyknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoYidiXFwxJywgYidhYycpLCBiJ2JjJykKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ2EoLiknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoYidiXFwxJywgYidhXHhDRCcpLCBiJ2JceENEJykKQEAgLTE0MjIsMTMgKzE1MjAsNiBAQAogICAgICAgICAjIFRlc3QgYmVoYXZpb3VyIHdoZW4gbm90IGdpdmVuIGEgc3RyaW5nIG9yIHBhdHRlcm4gYXMgcGFyYW1ldGVyCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmUuY29tcGlsZSwgMCkKIAotICAgIGRlZiB0ZXN0X2J1Z18xMzg5OShzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjMTM4OTk6IHJlIHBhdHRlcm4gciJbXEFdIiBzaG91bGQgd29yayBsaWtlICJBIiBidXQgbWF0Y2hlcwotICAgICAgICAjIG5vdGhpbmcuIERpdHRvIEIgYW5kIFouCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKHInW1xBXEJcYlxDXFpdJywgJ0FCXGJDWicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0EnLCAnQicsICdcYicsICdDJywgJ1onXSkKLQogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MSkKICAgICBkZWYgdGVzdF9sYXJnZV9zZWFyY2goc2VsZiwgc2l6ZSk6CiAgICAgICAgICMgSXNzdWUgIzEwMTgyOiBpbmRpY2VzIHdlcmUgMzItYml0LXRydW5jYXRlZC4KQEAgLTE1MTMsNyArMTYwNCw3IEBACiAgICAgICAgIGZvciBzdHJpbmcgaW4gKGInW2FicmFjYWRhYnJhXScsIEIoYidbYWJyYWNhZGFicmFdJyksCiAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJ1thYnJhY2FkYWJyYV0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5dmlldyhiJ1thYnJhY2FkYWJyYV0nKSk6Ci0gICAgICAgICAgICBtID0gcmUuc2VhcmNoKHJiJyguKykoLio/KVwxJywgc3RyaW5nKQorICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChicicoLispKC4qPylcMScsIHN0cmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjwlcy4lcyBvYmplY3Q7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwYW49KDEsIDEyKSwgbWF0Y2g9YidhYnJhY2FkYWJyYSc+IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKG0pLl9fbW9kdWxlX18sIHR5cGUobSkuX19xdWFsbmFtZV9fKSkKQEAgLTE1NDIsOSArMTYzMyw5IEBACiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0OgogICAgICAgICAgICAgcmUuY29tcGlsZShwYXQsIHJlLkRFQlVHKQogICAgICAgICBkdW1wID0gJycnXAotU1VCUEFUVEVSTiAxCitTVUJQQVRURVJOIDEgMCAwCiAgIExJVEVSQUwgNDYKLVNVQlBBVFRFUk4gTm9uZQorU1VCUEFUVEVSTiBOb25lIDAgMAogICBCUkFOQ0gKICAgICBJTgogICAgICAgTElURVJBTCA5OQpAQCAtMTU1Miw3ICsxNjQzLDcgQEAKICAgT1IKICAgICBMSVRFUkFMIDExMgogICAgIExJVEVSQUwgMTIxCi1TVUJQQVRURVJOIE5vbmUKK1NVQlBBVFRFUk4gTm9uZSAwIDAKICAgR1JPVVBSRUZfRVhJU1RTIDEKICAgICBBVCBBVF9FTkQKICAgRUxTRQpAQCAtMTY2OCw3ICsxNzU5LDcgQEAKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UCcsICd1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuJywgMykKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/eiknLCAndW5rbm93biBleHRlbnNpb24gP3onLCAxKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9peiknLCAndW5rbm93biBmbGFnJywgMykKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aScsICdtaXNzaW5nICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgLSwgOiBvciApJywgMykKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/I2FiYycsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBjb21tZW50JywgMCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/PCcsICd1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuJywgMykKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/PD4pJywgJ3Vua25vd24gZXh0ZW5zaW9uID88PicsIDEpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQppbmRleCAyYzczZGYyLi4wNmE5MTQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKQEAgLTEyMSw2ICsxMjEsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURVJNPSd4dGVybS0yNTZjb2xvcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiJycpCiAKKyAgICBhdXRvX2hpc3Rvcnlfc2NyaXB0ID0gIiIiXAoraW1wb3J0IHJlYWRsaW5lCityZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5KHt9KQoraW5wdXQoKQorcHJpbnQoIkhpc3RvcnkgbGVuZ3RoOiIsIHJlYWRsaW5lLmdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoKCkpCisiIiIKKworICAgIGRlZiB0ZXN0X2F1dG9faGlzdG9yeV9lbmFibGVkKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBydW5fcHR5KHNlbGYuYXV0b19oaXN0b3J5X3NjcmlwdC5mb3JtYXQoVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJIaXN0b3J5IGxlbmd0aDogMVxyXG4iLCBvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9hdXRvX2hpc3RvcnlfZGlzYWJsZWQoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHJ1bl9wdHkoc2VsZi5hdXRvX2hpc3Rvcnlfc2NyaXB0LmZvcm1hdChGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJIaXN0b3J5IGxlbmd0aDogMFxyXG4iLCBvdXRwdXQpCisKICAgICBkZWYgdGVzdF9ub25hc2NpaShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVhZGxpbmUuYWRkX2hpc3RvcnkoIlx4RUJceEVGIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkgYi9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5CmluZGV4IGEzOThhNGYuLjdjOTViNjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQpAQCAtMSwyMSArMSw0OCBAQAogIiIiCiBUZXN0cyBvZiByZWdydGVzdC5weS4KKworTm90ZTogdGVzdF9yZWdydGVzdCBjYW5ub3QgYmUgcnVuIHR3aWNlIGluIHBhcmFsbGVsLgogIiIiCiAKLWltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBmYXVsdGhhbmRsZXIKLWltcG9ydCBnZXRvcHQKK2ltcG9ydCBpbwogaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdCwgc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBsaWJyZWdydGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworUHlfREVCVUcgPSBoYXNhdHRyKHN5cywgJ2dldG9iamVjdHMnKQorUk9PVF9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykKK1JPT1RfRElSID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgubm9ybXBhdGgoUk9PVF9ESVIpKQorCitURVNUX0lOVEVSUlVQVEVEID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgIGZyb20gc2lnbmFsIGltcG9ydCBTSUdJTlQKKyAgICB0cnk6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCByYWlzZV9zaWduYWwKKyAgICAgICAgcmFpc2Vfc2lnbmFsKFNJR0lOVCkKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIGltcG9ydCBvcworICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBTSUdJTlQpCisgICAgIiIiKQorCiAKIGNsYXNzIFBhcnNlQXJnc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgcmVncnRlc3QncyBhcmd1bWVudCBwYXJzaW5nLiIiIgorICAgICIiIgorICAgIFRlc3QgcmVncnRlc3QncyBhcmd1bWVudCBwYXJzaW5nLCBmdW5jdGlvbiBfcGFyc2VfYXJncygpLgorICAgICIiIgogCiAgICAgZGVmIGNoZWNrRXJyb3Ioc2VsZiwgYXJncywgbXNnKToKICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIGVyciwgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCk6Ci0gICAgICAgICAgICByZWdydGVzdC5fcGFyc2VfYXJncyhhcmdzKQorICAgICAgICAgICAgbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoYXJncykKICAgICAgICAgc2VsZi5hc3NlcnRJbihtc2csIGVyci5nZXR2YWx1ZSgpKQogCiAgICAgZGVmIHRlc3RfaGVscChzZWxmKToKQEAgLTIzLDgyICs1MCw4MiBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6CiAgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dCwgXAogICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCk6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgICAgICBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdSdW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuJywgb3V0LmdldHZhbHVlKCkpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigpIHJlcXVpcmVkIikKICAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10aW1lb3V0JywgJzQuMiddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10aW1lb3V0JywgJzQuMiddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnRpbWVvdXQsIDQuMikKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS10aW1lb3V0J10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXRpbWVvdXQnLCAnZm9vJ10sICdpbnZhbGlkIGZsb2F0IHZhbHVlJykKIAogICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXdhaXQnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0td2FpdCddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMud2FpdCkKIAogICAgIGRlZiB0ZXN0X3NsYXZlYXJncyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tc2xhdmVhcmdzJywgJ1tbXSwge31dJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXNsYXZlYXJncycsICdbW10sIHt9XSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnNsYXZlYXJncywgJ1tbXSwge31dJykKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS1zbGF2ZWFyZ3MnXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF9zdGFydChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVMnLCAnLS1zdGFydCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnN0YXJ0LCAnZm9vJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfdmVyYm9zZShzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy12J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctdiddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDEpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctdnZ2J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctdnZ2J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMykKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdmVyYm9zZSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMSkKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdmVyYm9zZSddICogMykKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdmVyYm9zZSddICogMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAzKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtdKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAKICAgICBkZWYgdGVzdF92ZXJib3NlMihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXcnLCAnLS12ZXJib3NlMic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnZlcmJvc2UyKQogCiAgICAgZGVmIHRlc3RfdmVyYm9zZTMoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1XJywgJy0tdmVyYm9zZTMnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy52ZXJib3NlMykKIAogICAgIGRlZiB0ZXN0X3F1aWV0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctcScsICctLXF1aWV0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogCiAgICAgZGVmIHRlc3Rfc2xvdyhzZWxmKToKLSAgICAgICAgZm9yIG9wdCBpbiAnLW8nLCAnLS1zbG93JzoKKyAgICAgICAgZm9yIG9wdCBpbiAnLW8nLCAnLS1zbG93ZXN0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucHJpbnRfc2xvdykKIAogICAgIGRlZiB0ZXN0X2hlYWRlcihzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0taGVhZGVyJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLWhlYWRlciddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuaGVhZGVyKQogCiAgICAgZGVmIHRlc3RfcmFuZG9taXplKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctcicsICctLXJhbmRvbWl6ZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnJhbmRvbWl6ZSkKIAogICAgIGRlZiB0ZXN0X3JhbmRzZWVkKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1yYW5kc2VlZCcsICcxMjM0NSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1yYW5kc2VlZCcsICcxMjM0NSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnJhbmRvbV9zZWVkLCAxMjM0NSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnJhbmRvbWl6ZSkKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS1yYW5kc2VlZCddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKQEAgLTEwNyw3ICsxMzQsNyBAQAogICAgIGRlZiB0ZXN0X2Zyb21maWxlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctZicsICctLWZyb21maWxlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuZnJvbWZpbGUsICdmb28nKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nLCAnLXMnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKQEAgLTExNSw0MiArMTQyLDQyIEBACiAgICAgZGVmIHRlc3RfZXhjbHVkZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXgnLCAnLS1leGNsdWRlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZXhjbHVkZSkKIAogICAgIGRlZiB0ZXN0X3NpbmdsZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXMnLCAnLS1zaW5nbGUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5zaW5nbGUpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICctZicsICdmb28nXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKIAogICAgIGRlZiB0ZXN0X21hdGNoKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctbScsICctLW1hdGNoJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ3BhdHRlcm4nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdwYXR0ZXJuJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5tYXRjaF90ZXN0cywgJ3BhdHRlcm4nKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF9mYWlsZmFzdChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLUcnLCAnLS1mYWlsZmFzdCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctdiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy12J10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmZhaWxmYXN0KQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy1XJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLVcnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZmFpbGZhc3QpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnLUcvLS1mYWlsZmFzdCBuZWVkcyBlaXRoZXIgLXYgb3IgLVcnKQogCiAgICAgZGVmIHRlc3RfdXNlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctdScsICctLXVzZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbmV0d29yayddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxuZXR3b3JrJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfcmVzb3VyY2VzLCBbJ2d1aScsICduZXR3b3JrJ10pCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5vbmUsbmV0d29yayddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxub25lLG5ldHdvcmsnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9yZXNvdXJjZXMsIFsnbmV0d29yayddKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbGlzdChyZWdydGVzdC5SRVNPVVJDRV9OQU1FUykKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGxpc3QobGlicmVncnRlc3QuUkVTT1VSQ0VfTkFNRVMpCiAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucmVtb3ZlKCdndWknKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2FsbCwtZ3VpJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnYWxsLC1ndWknXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9yZXNvdXJjZXMsIGV4cGVjdGVkKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nXSwgJ2ludmFsaWQgcmVzb3VyY2UnKQpAQCAtMTU4LDMxICsxODUsMzEgQEAKICAgICBkZWYgdGVzdF9tZW1saW1pdChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLU0nLCAnLS1tZW1saW1pdCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc0RyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzRHJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5tZW1saW1pdCwgJzRHJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfdGVzdGRpcihzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGVzdGRpcicsICdmb28nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGVzdGRpcicsICdmb28nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy50ZXN0ZGlyLCBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgJ2ZvbycpKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXRlc3RkaXInXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF9ydW5sZWFrcyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLUwnLCAnLS1ydW5sZWFrcyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnJ1bmxlYWtzKQogCiAgICAgZGVmIHRlc3RfaHVudHJsZWFrcyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVInLCAnLS1odW50cmxlYWtzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzonXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6J10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5odW50cmxlYWtzLCAoNSwgNCwgJ3JlZmxvZy50eHQnKSkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6J10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5odW50cmxlYWtzLCAoNiwgNCwgJ3JlZmxvZy50eHQnKSkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6MyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzozJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5odW50cmxlYWtzLCAoNSwgMywgJ3JlZmxvZy50eHQnKSkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OjM6bGVha3MubG9nJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjozOmxlYWtzLmxvZyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDYsIDMsICdsZWFrcy5sb2cnKSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnNiddLApAQCAtMTkzLDI0ICsyMjAsMjMgQEAKICAgICBkZWYgdGVzdF9tdWx0aXByb2Nlc3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1qJywgJy0tbXVsdGlwcm9jZXNzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzInXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcyJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfbXAsIDIpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbyddLCAnaW52YWxpZCBpbnQgdmFsdWUnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnMicsICctVCddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnMicsICctbCddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQotICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnMicsICctTScsICc0RyddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQogCiAgICAgZGVmIHRlc3RfY292ZXJhZ2Uoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1UJywgJy0tY292ZXJhZ2UnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy50cmFjZSkKIAogICAgIGRlZiB0ZXN0X2NvdmVyZGlyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctRCcsICctLWNvdmVyZGlyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuY292ZXJkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgJ2ZvbycpKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCkBAIC0yMTgsMTMgKzI0NCwxMyBAQAogICAgIGRlZiB0ZXN0X25vY292ZXJkaXIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1OJywgJy0tbm9jb3ZlcmRpcic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobnMuY292ZXJkaXIpCiAKICAgICBkZWYgdGVzdF90aHJlc2hvbGQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy10JywgJy0tdGhyZXNob2xkJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzEwMDAnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcxMDAwJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy50aHJlc2hvbGQsIDEwMDApCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbyddLCAnaW52YWxpZCBpbnQgdmFsdWUnKQpAQCAtMjMyLDEzICsyNTgsMTYgQEAKICAgICBkZWYgdGVzdF9ub3dpbmRvd3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1uJywgJy0tbm93aW5kb3dzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLnJlZGlyZWN0X3N0ZGVycihpby5TdHJpbmdJTygpKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLm5vd2luZG93cykKKyAgICAgICAgICAgICAgICBlcnIgPSBzdGRlcnIuZ2V0dmFsdWUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3RoZSAtLW5vd2luZG93cyAoLW4pIG9wdGlvbiBpcyBkZXByZWNhdGVkJywgZXJyKQogCiAgICAgZGVmIHRlc3RfZm9yZXZlcihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLUYnLCAnLS1mb3JldmVyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZm9yZXZlcikKIAogCkBAIC0yNDYsMzAgKzI3NSw1MTkgQEAKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS14eHgnXSwgJ3VzYWdlOicpCiAKICAgICBkZWYgdGVzdF9sb25nX29wdGlvbl9fcGFydGlhbChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKIAogICAgIGRlZiB0ZXN0X3R3b19vcHRpb25zKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWlldCcsICctLWV4Y2x1ZGUnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnLS1leGNsdWRlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZXhjbHVkZSkKIAogICAgIGRlZiB0ZXN0X29wdGlvbl93aXRoX2VtcHR5X3N0cmluZ192YWx1ZShzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tc3RhcnQnLCAnJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXN0YXJ0JywgJyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnN0YXJ0LCAnJykKIAogICAgIGRlZiB0ZXN0X2FyZyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJ2ZvbyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuYXJncywgWydmb28nXSkKIAogICAgIGRlZiB0ZXN0X29wdGlvbl9hbmRfYXJnKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWlldCcsICdmb28nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsnZm9vJ10pCiAKIAorY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBURVNUX1VOSVFVRV9JRCA9IDEKKyAgICBURVNUTkFNRV9QUkVGSVggPSAndGVzdF9yZWdydGVzdF8nCisgICAgVEVTVE5BTUVfUkVHRVggPSByJ3Rlc3RfW2EtekEtWjAtOV9dKycKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0ZGlyID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQorCisgICAgICAgIHNlbGYudG1wdGVzdGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYudG1wdGVzdGRpcikKKworICAgIGRlZiBjcmVhdGVfdGVzdChzZWxmLCBuYW1lPU5vbmUsIGNvZGU9JycpOgorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIG5hbWUgPSAnbm9vcCVzJyAlIEJhc2VUZXN0Q2FzZS5URVNUX1VOSVFVRV9JRAorICAgICAgICAgICAgQmFzZVRlc3RDYXNlLlRFU1RfVU5JUVVFX0lEICs9IDEKKworICAgICAgICAjIHRlc3RfcmVncnRlc3QgY2Fubm90IGJlIHJ1biB0d2ljZSBpbiBwYXJhbGxlbCBiZWNhdXNlCisgICAgICAgICMgb2Ygc2V0VXAoKSBhbmQgY3JlYXRlX3Rlc3QoKQorICAgICAgICBuYW1lID0gc2VsZi5URVNUTkFNRV9QUkVGSVggKyBuYW1lCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50bXB0ZXN0ZGlyLCBuYW1lICsgJy5weScpCisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICAjIFVzZSAneCcgbW9kZSB0byBlbnN1cmUgdGhhdCB3ZSBkbyBub3Qgb3ZlcnJpZGUgZXhpc3RpbmcgdGVzdHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd4JywgZW5jb2Rpbmc9J3V0Zi04JykgYXMgZnA6CisgICAgICAgICAgICAgICAgZnAud3JpdGUoY29kZSkKKyAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBub3Qgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCB3cml0ZSAlczogJXMiICUgKHBhdGgsIGV4YykpCisgICAgICAgICAgICByYWlzZQorICAgICAgICByZXR1cm4gbmFtZQorCisgICAgZGVmIHJlZ2V4X3NlYXJjaChzZWxmLCByZWdleCwgb3V0cHV0KToKKyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocmVnZXgsIG91dHB1dCwgcmUuTVVMVElMSU5FKQorICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICBzZWxmLmZhaWwoIiVyIG5vdCBmb3VuZCBpbiAlciIgJSAocmVnZXgsIG91dHB1dCkpCisgICAgICAgIHJldHVybiBtYXRjaAorCisgICAgZGVmIGNoZWNrX2xpbmUoc2VsZiwgb3V0cHV0LCByZWdleCk6CisgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyJ14nICsgcmVnZXgsIHJlLk1VTFRJTElORSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXRwdXQsIHJlZ2V4KQorCisgICAgZGVmIHBhcnNlX2V4ZWN1dGVkX3Rlc3RzKHNlbGYsIG91dHB1dCk6CisgICAgICAgIHJlZ2V4ID0gKHInXlswLTldKzpbMC05XSs6WzAtOV0rIFxbICpbMC05XSsoPzovICpbMC05XSspP1xdICglcyknCisgICAgICAgICAgICAgICAgICUgc2VsZi5URVNUTkFNRV9SRUdFWCkKKyAgICAgICAgcGFyc2VyID0gcmUuZmluZGl0ZXIocmVnZXgsIG91dHB1dCwgcmUuTVVMVElMSU5FKQorICAgICAgICByZXR1cm4gbGlzdChtYXRjaC5ncm91cCgxKSBmb3IgbWF0Y2ggaW4gcGFyc2VyKQorCisgICAgZGVmIGNoZWNrX2V4ZWN1dGVkX3Rlc3RzKHNlbGYsIG91dHB1dCwgdGVzdHMsIHNraXBwZWQ9KCksIGZhaWxlZD0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdHRlZD0oKSwgcmFuZG9taXplPUZhbHNlLCBpbnRlcnJ1cHRlZD1GYWxzZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodGVzdHMsIHN0cik6CisgICAgICAgICAgICB0ZXN0cyA9IFt0ZXN0c10KKyAgICAgICAgaWYgaXNpbnN0YW5jZShza2lwcGVkLCBzdHIpOgorICAgICAgICAgICAgc2tpcHBlZCA9IFtza2lwcGVkXQorICAgICAgICBpZiBpc2luc3RhbmNlKGZhaWxlZCwgc3RyKToKKyAgICAgICAgICAgIGZhaWxlZCA9IFtmYWlsZWRdCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob21pdHRlZCwgc3RyKToKKyAgICAgICAgICAgIG9taXR0ZWQgPSBbb21pdHRlZF0KKyAgICAgICAgbnRlc3QgPSBsZW4odGVzdHMpCisgICAgICAgIG5za2lwcGVkID0gbGVuKHNraXBwZWQpCisgICAgICAgIG5mYWlsZWQgPSBsZW4oZmFpbGVkKQorICAgICAgICBub21pdHRlZCA9IGxlbihvbWl0dGVkKQorCisgICAgICAgIGV4ZWN1dGVkID0gc2VsZi5wYXJzZV9leGVjdXRlZF90ZXN0cyhvdXRwdXQpCisgICAgICAgIGlmIHJhbmRvbWl6ZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGV4ZWN1dGVkKSwgc2V0KHRlc3RzKSwgb3V0cHV0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGVjdXRlZCwgdGVzdHMsIG91dHB1dCkKKworICAgICAgICBkZWYgcGx1cmFsKGNvdW50KToKKyAgICAgICAgICAgIHJldHVybiAncycgaWYgY291bnQgIT0gMSBlbHNlICcnCisKKyAgICAgICAgZGVmIGxpc3RfcmVnZXgobGluZV9mb3JtYXQsIHRlc3RzKToKKyAgICAgICAgICAgIGNvdW50ID0gbGVuKHRlc3RzKQorICAgICAgICAgICAgbmFtZXMgPSAnICcuam9pbihzb3J0ZWQodGVzdHMpKQorICAgICAgICAgICAgcmVnZXggPSBsaW5lX2Zvcm1hdCAlIChjb3VudCwgcGx1cmFsKGNvdW50KSkKKyAgICAgICAgICAgIHJlZ2V4ID0gciclczpcbiAgICAlcyQnICUgKHJlZ2V4LCBuYW1lcykKKyAgICAgICAgICAgIHJldHVybiByZWdleAorCisgICAgICAgIGlmIHNraXBwZWQ6CisgICAgICAgICAgICByZWdleCA9IGxpc3RfcmVnZXgoJyVzIHRlc3QlcyBza2lwcGVkJywgc2tpcHBlZCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGlmIGZhaWxlZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgdGVzdCVzIGZhaWxlZCcsIGZhaWxlZCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGlmIG9taXR0ZWQ6CisgICAgICAgICAgICByZWdleCA9IGxpc3RfcmVnZXgoJyVzIHRlc3QlcyBvbWl0dGVkJywgb21pdHRlZCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGdvb2QgPSBudGVzdCAtIG5za2lwcGVkIC0gbmZhaWxlZCAtIG5vbWl0dGVkCisgICAgICAgIGlmIGdvb2Q6CisgICAgICAgICAgICByZWdleCA9IHInJXMgdGVzdCVzIE9LXC4kJyAlIChnb29kLCBwbHVyYWwoZ29vZCkpCisgICAgICAgICAgICBpZiBub3Qgc2tpcHBlZCBhbmQgbm90IGZhaWxlZCBhbmQgZ29vZCA+IDE6CisgICAgICAgICAgICAgICAgcmVnZXggPSAnQWxsICVzJyAlIHJlZ2V4CisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBpbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsICdUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuJykKKworICAgICAgICBpZiBuZmFpbGVkOgorICAgICAgICAgICAgcmVzdWx0ID0gJ0ZBSUxVUkUnCisgICAgICAgIGVsaWYgaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICByZXN1bHQgPSAnSU5URVJSVVBURUQnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSAnU1VDQ0VTUycKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgJ1Rlc3RzIHJlc3VsdDogJXMnICUgcmVzdWx0KQorCisgICAgZGVmIHBhcnNlX3JhbmRvbV9zZWVkKHNlbGYsIG91dHB1dCk6CisgICAgICAgIG1hdGNoID0gc2VsZi5yZWdleF9zZWFyY2gocidVc2luZyByYW5kb20gc2VlZCAoWzAtOV0rKScsIG91dHB1dCkKKyAgICAgICAgcmFuZHNlZWQgPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIDw9IHJhbmRzZWVkIDw9IDEwMDAwMDAwLCByYW5kc2VlZCkKKyAgICAgICAgcmV0dXJuIHJhbmRzZWVkCisKKyAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgaW5wdXQ9Tm9uZSwgZXhpdGNvZGU9MCwgKiprdyk6CisgICAgICAgIGlmIG5vdCBpbnB1dDoKKyAgICAgICAgICAgIGlucHV0ID0gJycKKyAgICAgICAgaWYgJ3N0ZGVycicgbm90IGluIGt3OgorICAgICAgICAgICAga3dbJ3N0ZGVyciddID0gc3VicHJvY2Vzcy5QSVBFCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLnJ1bihhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dD1pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3KQorICAgICAgICBpZiBwcm9jLnJldHVybmNvZGUgIT0gZXhpdGNvZGU6CisgICAgICAgICAgICBtc2cgPSAoIkNvbW1hbmQgJXMgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVzXG4iCisgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICJzdGRvdXQ6XG4iCisgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICIlc1xuIgorICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAlIChzdHIoYXJncyksIHByb2MucmV0dXJuY29kZSwgcHJvYy5zdGRvdXQpKQorICAgICAgICAgICAgaWYgcHJvYy5zdGRlcnI6CisgICAgICAgICAgICAgICAgbXNnICs9ICgiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAic3RkZXJyOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiVzIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgJSBwcm9jLnN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuZmFpbChtc2cpCisgICAgICAgIHJldHVybiBwcm9jCisKKworICAgIGRlZiBydW5fcHl0aG9uKHNlbGYsIGFyZ3MsICoqa3cpOgorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLVgnLCAnZmF1bHRoYW5kbGVyJywgJy1JJywgKmFyZ3NdCisgICAgICAgIHByb2MgPSBzZWxmLnJ1bl9jb21tYW5kKGFyZ3MsICoqa3cpCisgICAgICAgIHJldHVybiBwcm9jLnN0ZG91dAorCisKK2NsYXNzIFByb2dyYW1zVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHZhcmlvdXMgd2F5cyB0byBydW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlLiBVc2Ugb3B0aW9ucyBjbG9zZQorICAgIHRvIG9wdGlvbnMgdXNlZCBvbiB0aGUgYnVpbGRib3QuCisgICAgIiIiCisKKyAgICBOVEVTVCA9IDQKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisKKyAgICAgICAgIyBDcmVhdGUgTlRFU1QgdGVzdHMgZG9pbmcgbm90aGluZworICAgICAgICBzZWxmLnRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaW5kZXggaW4gcmFuZ2Uoc2VsZi5OVEVTVCldCisKKyAgICAgICAgc2VsZi5weXRob25fYXJncyA9IFsnLVdkJywgJy1FJywgJy1iYiddCisgICAgICAgIHNlbGYucmVncnRlc3RfYXJncyA9IFsnLXVhbGwnLCAnLXJ3VycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpcl0KKyAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpOgorICAgICAgICAgICAgc2VsZi5yZWdydGVzdF9hcmdzLmV4dGVuZCgoJy0tdGltZW91dCcsICczNjAwJywgJy1qNCcpKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHNlbGYucmVncnRlc3RfYXJncy5hcHBlbmQoJy1uJykKKworICAgIGRlZiBjaGVja19vdXRwdXQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgc2VsZi5wYXJzZV9yYW5kb21fc2VlZChvdXRwdXQpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBzZWxmLnRlc3RzLCByYW5kb21pemU9VHJ1ZSkKKworICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgYXJncyk6CisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3B5dGhvbihhcmdzKQorICAgICAgICBzZWxmLmNoZWNrX291dHB1dChvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9zY3JpcHRfcmVncnRlc3Qoc2VsZik6CisgICAgICAgICMgTGliL3Rlc3QvcmVncnRlc3QucHkKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ3JlZ3J0ZXN0LnB5JykKKworICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCBzY3JpcHQsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3Rlc3Qoc2VsZik6CisgICAgICAgICMgLW0gdGVzdAorICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCAnLW0nLCAndGVzdCcsCisgICAgICAgICAgICAgICAgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVncnRlc3Qoc2VsZik6CisgICAgICAgICMgLW0gdGVzdC5yZWdydGVzdAorICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCAnLW0nLCAndGVzdC5yZWdydGVzdCcsCisgICAgICAgICAgICAgICAgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfYXV0b3Rlc3Qoc2VsZik6CisgICAgICAgICMgLW0gdGVzdC5hdXRvdGVzdAorICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCAnLW0nLCAndGVzdC5hdXRvdGVzdCcsCisgICAgICAgICAgICAgICAgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV90ZXN0X2F1dG90ZXN0KHNlbGYpOgorICAgICAgICAjIGZyb20gdGVzdCBpbXBvcnQgYXV0b3Rlc3QKKyAgICAgICAgY29kZSA9ICdmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0JworICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCAnLWMnLCBjb2RlLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3Rfc2NyaXB0X2F1dG90ZXN0KHNlbGYpOgorICAgICAgICAjIExpYi90ZXN0L2F1dG90ZXN0LnB5CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdhdXRvdGVzdC5weScpCisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsIHNjcmlwdCwgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bl90ZXN0cy5weSBzY3JpcHQgaXMgbm90IGluc3RhbGxlZCcpCisgICAgZGVmIHRlc3RfdG9vbHNfc2NyaXB0X3J1bl90ZXN0cyhzZWxmKToKKyAgICAgICAgIyBUb29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsICdUb29scycsICdzY3JpcHRzJywgJ3J1bl90ZXN0cy5weScpCisgICAgICAgIGFyZ3MgPSBbc2NyaXB0LCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiBydW5fYmF0Y2goc2VsZiwgKmFyZ3MpOgorICAgICAgICBwcm9jID0gc2VsZi5ydW5fY29tbWFuZChhcmdzKQorICAgICAgICBzZWxmLmNoZWNrX291dHB1dChwcm9jLnN0ZG91dCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC5iYXQgc2NyaXB0IGlzIG5vdCBpbnN0YWxsZWQnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLCAnV2luZG93cyBvbmx5JykKKyAgICBkZWYgdGVzdF90b29sc19idWlsZGJvdF90ZXN0KHNlbGYpOgorICAgICAgICAjIFRvb2xzXGJ1aWxkYm90XHRlc3QuYmF0CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihST09UX0RJUiwgJ1Rvb2xzJywgJ2J1aWxkYm90JywgJ3Rlc3QuYmF0JykKKyAgICAgICAgdGVzdF9hcmdzID0gWyctLXRlc3RkaXI9JXMnICUgc2VsZi50bXB0ZXN0ZGlyXQorICAgICAgICBpZiBwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKVswXSA9PSAnNjRiaXQnOgorICAgICAgICAgICAgdGVzdF9hcmdzLmFwcGVuZCgnLXg2NCcpICAgIyA2NC1iaXQgYnVpbGQKKyAgICAgICAgaWYgbm90IFB5X0RFQlVHOgorICAgICAgICAgICAgdGVzdF9hcmdzLmFwcGVuZCgnK2QnKSAgICAgIyBSZWxlYXNlIGJ1aWxkLCB1c2UgcHl0aG9uLmV4ZQorICAgICAgICBzZWxmLnJ1bl9iYXRjaChzY3JpcHQsICp0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzIG9ubHknKQorICAgIGRlZiB0ZXN0X3BjYnVpbGRfcnQoc2VsZik6CisgICAgICAgICMgUENidWlsZFxydC5iYXQKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKFJPT1RfRElSLCByJ1BDYnVpbGRccnQuYmF0JykKKyAgICAgICAgcnRfYXJncyA9IFsiLXEiXSAgICAgICAgICAgICAjIFF1aWNrLCBkb24ndCBydW4gdGVzdHMgdHdpY2UKKyAgICAgICAgaWYgcGxhdGZvcm0uYXJjaGl0ZWN0dXJlKClbMF0gPT0gJzY0Yml0JzoKKyAgICAgICAgICAgIHJ0X2FyZ3MuYXBwZW5kKCcteDY0JykgICAjIDY0LWJpdCBidWlsZAorICAgICAgICBpZiBQeV9ERUJVRzoKKyAgICAgICAgICAgIHJ0X2FyZ3MuYXBwZW5kKCctZCcpICAgICAjIERlYnVnIGJ1aWxkLCB1c2UgcHl0aG9uX2QuZXhlCisgICAgICAgIHNlbGYucnVuX2JhdGNoKHNjcmlwdCwgKnJ0X2FyZ3MsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzKQorCisKK2NsYXNzIEFyZ3NUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgYXJndW1lbnRzIG9mIHRoZSBQeXRob24gdGVzdCBzdWl0ZS4KKyAgICAiIiIKKworICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgKnRlc3RhcmdzLCAqKmt3KToKKyAgICAgICAgY21kYXJncyA9IFsnLW0nLCAndGVzdCcsICctLXRlc3RkaXI9JXMnICUgc2VsZi50bXB0ZXN0ZGlyLCAqdGVzdGFyZ3NdCisgICAgICAgIHJldHVybiBzZWxmLnJ1bl9weXRob24oY21kYXJncywgKiprdykKKworICAgIGRlZiB0ZXN0X2ZhaWxpbmdfdGVzdChzZWxmKToKKyAgICAgICAgIyB0ZXN0IGEgZmFpbGluZyB0ZXN0CisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKworICAgICAgICAgICAgY2xhc3MgRmFpbGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZhaWxpbmcoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiYnVnIikKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0X29rID0gc2VsZi5jcmVhdGVfdGVzdCgnb2snKQorICAgICAgICB0ZXN0X2ZhaWxpbmcgPSBzZWxmLmNyZWF0ZV90ZXN0KCdmYWlsaW5nJywgY29kZT1jb2RlKQorICAgICAgICB0ZXN0cyA9IFt0ZXN0X29rLCB0ZXN0X2ZhaWxpbmddCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoKnRlc3RzLCBleGl0Y29kZT0xKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMsIGZhaWxlZD10ZXN0X2ZhaWxpbmcpCisKKyAgICBkZWYgdGVzdF9yZXNvdXJjZXMoc2VsZik6CisgICAgICAgICMgdGVzdCAtdSBjb21tYW5kIGxpbmUgb3B0aW9uCisgICAgICAgIHRlc3RzID0ge30KKyAgICAgICAgZm9yIHJlc291cmNlIGluICgnYXVkaW8nLCAnbmV0d29yaycpOgorICAgICAgICAgICAgY29kZSA9ICdmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnRcbnN1cHBvcnQucmVxdWlyZXMoJXIpJyAlIHJlc291cmNlCisgICAgICAgICAgICB0ZXN0c1tyZXNvdXJjZV0gPSBzZWxmLmNyZWF0ZV90ZXN0KHJlc291cmNlLCBjb2RlKQorICAgICAgICB0ZXN0X25hbWVzID0gc29ydGVkKHRlc3RzLnZhbHVlcygpKQorCisgICAgICAgICMgLXUgYWxsOiAyIHJlc291cmNlcyBlbmFibGVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctdScsICdhbGwnLCAqdGVzdF9uYW1lcykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RfbmFtZXMpCisKKyAgICAgICAgIyAtdSBhdWRpbzogMSByZXNvdXJjZSBlbmFibGVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctdWF1ZGlvJywgKnRlc3RfbmFtZXMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0X25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWQ9dGVzdHNbJ25ldHdvcmsnXSkKKworICAgICAgICAjIG5vIG9wdGlvbjogMCByZXNvdXJjZXMgZW5hYmxlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygqdGVzdF9uYW1lcykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZD10ZXN0X25hbWVzKQorCisgICAgZGVmIHRlc3RfcmFuZG9tKHNlbGYpOgorICAgICAgICAjIHRlc3QgLXIgYW5kIC0tcmFuZHNlZWQgY29tbWFuZCBsaW5lIG9wdGlvbgorICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHJhbmRvbQorICAgICAgICAgICAgcHJpbnQoIlRFU1RSQU5ET006ICVzIiAlIHJhbmRvbS5yYW5kaW50KDEsIDEwMDApKQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdyYW5kb20nLCBjb2RlKQorCisgICAgICAgICMgZmlyc3QgcnVuIHRvIGdldCB0aGUgb3V0cHV0IHdpdGggdGhlIHJhbmRvbSBzZWVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctcicsIHRlc3QpCisgICAgICAgIHJhbmRzZWVkID0gc2VsZi5wYXJzZV9yYW5kb21fc2VlZChvdXRwdXQpCisgICAgICAgIG1hdGNoID0gc2VsZi5yZWdleF9zZWFyY2gocidURVNUUkFORE9NOiAoWzAtOV0rKScsIG91dHB1dCkKKyAgICAgICAgdGVzdF9yYW5kb20gPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisKKyAgICAgICAgIyB0cnkgdG8gcmVwcm9kdWNlIHdpdGggdGhlIHJhbmRvbSBzZWVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctcicsICctLXJhbmRzZWVkPSVzJyAlIHJhbmRzZWVkLCB0ZXN0KQorICAgICAgICByYW5kc2VlZDIgPSBzZWxmLnBhcnNlX3JhbmRvbV9zZWVkKG91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5kc2VlZDIsIHJhbmRzZWVkKQorCisgICAgICAgIG1hdGNoID0gc2VsZi5yZWdleF9zZWFyY2gocidURVNUUkFORE9NOiAoWzAtOV0rKScsIG91dHB1dCkKKyAgICAgICAgdGVzdF9yYW5kb20yID0gaW50KG1hdGNoLmdyb3VwKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfcmFuZG9tMiwgdGVzdF9yYW5kb20pCisKKyAgICBkZWYgdGVzdF9mcm9tZmlsZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tZnJvbWZpbGUKKyAgICAgICAgdGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpbmRleCBpbiByYW5nZSg1KV0KKworICAgICAgICAjIFdyaXRlIHRoZSBsaXN0IG9mIGZpbGVzIHVzaW5nIGEgZm9ybWF0IHNpbWlsYXIgdG8gcmVncnRlc3Qgb3V0cHV0OgorICAgICAgICAjIFsxLzJdIHRlc3RfMQorICAgICAgICAjIFsyLzJdIHRlc3RfMgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgIyB0ZXN0IGZvcm1hdCAnMDowMDowMCBbMi83XSB0ZXN0X29wY29kZXMgLS0gdGVzdF9ncmFtbWFyIHRvb2sgMCBzZWMnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIHByZXZpb3VzID0gTm9uZQorICAgICAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGVudW1lcmF0ZSh0ZXN0cywgMSk6CisgICAgICAgICAgICAgICAgbGluZSA9ICgiMDA6MDA6JTAyaSBbJXMvJXNdICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW5kZXgsIGluZGV4LCBsZW4odGVzdHMpLCBuYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBwcmV2aW91czoKKyAgICAgICAgICAgICAgICAgICAgbGluZSArPSAiIC0tICVzIHRvb2sgMCBzZWMiICUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICBwcmludChsaW5lLCBmaWxlPWZwKQorICAgICAgICAgICAgICAgIHByZXZpb3VzID0gbmFtZQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZyb21maWxlJywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKworICAgICAgICAjIHRlc3QgZm9ybWF0ICdbMi83XSB0ZXN0X29wY29kZXMnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGZvciBpbmRleCwgbmFtZSBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgorICAgICAgICAgICAgICAgIHByaW50KCJbJXMvJXNdICVzIiAlIChpbmRleCwgbGVuKHRlc3RzKSwgbmFtZSksIGZpbGU9ZnApCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZnJvbWZpbGUnLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorCisgICAgICAgICMgdGVzdCBmb3JtYXQgJ3Rlc3Rfb3Bjb2RlcycKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZm9yIG5hbWUgaW4gdGVzdHM6CisgICAgICAgICAgICAgICAgcHJpbnQobmFtZSwgZmlsZT1mcCkKKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mcm9tZmlsZScsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisKKyAgICBkZWYgdGVzdF9pbnRlcnJ1cHRlZChzZWxmKToKKyAgICAgICAgY29kZSA9IFRFU1RfSU5URVJSVVBURUQKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3NpZ2ludCcsIGNvZGU9Y29kZSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHModGVzdCwgZXhpdGNvZGU9MSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3QsIG9taXR0ZWQ9dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZD1UcnVlKQorCisgICAgZGVmIHRlc3Rfc2xvd2VzdChzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tc2xvd2VzdAorICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKDMpXQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS1zbG93ZXN0IiwgKnRlc3RzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisgICAgICAgIHJlZ2V4ID0gKCcxMCBzbG93ZXN0IHRlc3RzOlxuJworICAgICAgICAgICAgICAgICAnKD86LSAlczogLipcbil7JXN9JworICAgICAgICAgICAgICAgICAlIChzZWxmLlRFU1ROQU1FX1JFR0VYLCBsZW4odGVzdHMpKSkKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF9zbG93X2ludGVycnVwdGVkKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTM3MzogdGVzdCAtLXNsb3dlc3Qgd2l0aCBhbiBpbnRlcnJ1cHRlZCB0ZXN0CisgICAgICAgIGNvZGUgPSBURVNUX0lOVEVSUlVQVEVECisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCJzaWdpbnQiLCBjb2RlPWNvZGUpCisKKyAgICAgICAgZm9yIG11bHRpcHJvY2Vzc2luZyBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgaWYgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgICAgIGFyZ3MgPSAoIi0tc2xvd2VzdCIsICItajIiLCB0ZXN0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzID0gKCItLXNsb3dlc3QiLCB0ZXN0KQorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoKmFyZ3MsIGV4aXRjb2RlPTEpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdHRlZD10ZXN0LCBpbnRlcnJ1cHRlZD1UcnVlKQorCisgICAgICAgICAgICByZWdleCA9ICgnMTAgc2xvd2VzdCB0ZXN0czpcbicpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X2NvdmVyYWdlKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1jb3ZlcmFnZQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnY292ZXJhZ2UnKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS1jb3ZlcmFnZSIsIHRlc3QpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0pCisgICAgICAgIHJlZ2V4ID0gKHInbGluZXMgK2NvdiUgK21vZHVsZSArXChwYXRoXClcbicKKyAgICAgICAgICAgICAgICAgcicoPzogKlswLTldKyAqWzAtOV17MSwyfSUgKlteIF0rICtcKFteKV0rXCkrKSsnKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6CisgICAgICAgICMgdGVzdCAtLXdhaXQKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3dhaXQnKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS13YWl0IiwgdGVzdCwgaW5wdXQ9J2tleScpCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsICdQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlJykKKworICAgIGRlZiB0ZXN0X2ZvcmV2ZXIoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWZvcmV2ZXIKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBidWlsdGlucworICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgIGNsYXNzIEZvcmV2ZXJUZXN0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgIyBTdG9yZSB0aGUgc3RhdGUgaW4gdGhlIGJ1aWx0aW5zIG1vZHVsZSwgYmVjYXVzZSB0aGUgdGVzdAorICAgICAgICAgICAgICAgICAgICAjIG1vZHVsZSBpcyByZWxvYWQgYXQgZWFjaCBydW4KKyAgICAgICAgICAgICAgICAgICAgaWYgJ1JVTicgaW4gYnVpbHRpbnMuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGlucy5fX2RpY3RfX1snUlVOJ10gKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddID49IDM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJmYWlsIGF0IHRoZSAzcmQgcnVucyIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGlucy5fX2RpY3RfX1snUlVOJ10gPSAxCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2ZvcmV2ZXInLCBjb2RlPWNvZGUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZvcmV2ZXInLCB0ZXN0LCBleGl0Y29kZT0xKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdKjMsIGZhaWxlZD10ZXN0KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoUHlfREVCVUcsICduZWVkIGEgZGVidWcgYnVpbGQnKQorICAgIGRlZiB0ZXN0X2h1bnRybGVha3NfZmRfbGVhayhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0taHVudHJsZWFrcyBmb3IgZmlsZSBkZXNjcmlwdG9yIGxlYWsKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgICMgSXNzdWUgIzI1MzA2OiBEaXNhYmxlIHBvcHVwcyBhbmQgbG9ncyB0byBzdGRlcnIgb24gYXNzZXJ0aW9uCisgICAgICAgICAgICAjIGZhaWx1cmVzIGluIE1TQ1JUCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IG1zdmNydAorICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgIyBubyBXaW5kb3dzLCBvIHJlbGVhc2UgYnVpbGQKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUobSwgMCkKKworICAgICAgICAgICAgY2xhc3MgRkRMZWFrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfbGVhayhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKF9fZmlsZV9fLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgICAgICAgICAgIyBidWc6IG5ldmVyIGNsb2VzIHRoZSBmaWxlIGRlc2NyaXB0b3IKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnaHVudHJsZWFrcycsIGNvZGU9Y29kZSkKKworICAgICAgICBmaWxlbmFtZSA9ICdyZWZsb2cudHh0JworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1odW50cmxlYWtzJywgJzM6MzonLCB0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0Y29kZT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0sIGZhaWxlZD10ZXN0KQorCisgICAgICAgIGxpbmUgPSAnYmVnaW5uaW5nIDYgcmVwZXRpdGlvbnNcbjEyMzQ1NlxuLi4uLi4uXG4nCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlLmVzY2FwZShsaW5lKSkKKworICAgICAgICBsaW5lMiA9ICclcyBsZWFrZWQgWzEsIDEsIDFdIGZpbGUgZGVzY3JpcHRvcnMsIHN1bT0zXG4nICUgdGVzdAorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZS5lc2NhcGUobGluZTIpKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZnA6CisgICAgICAgICAgICByZWZsb2cgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAnZ2V0Y291bnRzJyk6CisgICAgICAgICAgICAgICAgIyBUeXBlcyBhcmUgaW1tcG9ydGFsIGlmIENPVU5UX0FMTE9DUyBpcyBkZWZpbmVkCisgICAgICAgICAgICAgICAgcmVmbG9nID0gcmVmbG9nLnNwbGl0bGluZXMoVHJ1ZSlbLTFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZmxvZywgbGluZTIpCisKKyAgICBkZWYgdGVzdF9saXN0X3Rlc3RzKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1saXN0LXRlc3RzCisgICAgICAgIHRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaSBpbiByYW5nZSg1KV0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tbGlzdC10ZXN0cycsICp0ZXN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQucnN0cmlwKCkuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKaW5kZXggMTU4MmNhYS4uNTg3MjlhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQpAQCAtMjUzLDYgKzI1MywzMSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSAhPSBiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSA8IGIpCiAKKyAgICBkZWYgdGVzdF9leGNlcHRpb25fbWVzc2FnZShzZWxmKToKKyAgICAgICAgY2xhc3MgU3BhbToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0ZXN0cyA9IFsKKyAgICAgICAgICAgIChsYW1iZGE6IDQyIDwgTm9uZSwgciInPCcgLiogb2YgJ2ludCcgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IE5vbmUgPCA0MiwgciInPCcgLiogb2YgJ05vbmVUeXBlJyBhbmQgJ2ludCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyID4gTm9uZSwgciInPicgLiogb2YgJ2ludCcgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6ICJmb28iIDwgTm9uZSwgciInPCcgLiogb2YgJ3N0cicgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6ICJmb28iID49IDY2NiwgciInPj0nIC4qIG9mICdzdHInIGFuZCAnaW50JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPD0gTm9uZSwgciInPD0nIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA+PSBOb25lLCByIic+PScgLiogb2YgJ2ludCcgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyIDwgW10sIHIiJzwnIC4qIG9mICdpbnQnIGFuZCAnbGlzdCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6ICgpID4gW10sIHIiJz4nIC4qIG9mICd0dXBsZScgYW5kICdsaXN0JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogTm9uZSA+PSBOb25lLCByIic+PScgLiogb2YgJ05vbmVUeXBlJyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogU3BhbSgpIDwgNDIsIHIiJzwnIC4qIG9mICdTcGFtJyBhbmQgJ2ludCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyIDwgU3BhbSgpLCByIic8JyAuKiBvZiAnaW50JyBhbmQgJ1NwYW0nIiksCisgICAgICAgICAgICAobGFtYmRhOiBTcGFtKCkgPD0gU3BhbSgpLCByIic8PScgLiogb2YgJ1NwYW0nIGFuZCAnU3BhbSciKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgaSwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodGVzdD1pKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCB0ZXN0WzFdKToKKyAgICAgICAgICAgICAgICAgICAgdGVzdFswXSgpCisKKwogY2xhc3MgRGljdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZGljdHMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQppbmRleCA4NTNlNzczLi4wZGMxMDgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKQEAgLTEsMTEgKzEsMTIgQEAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IHJsY29tcGxldGVyCiAKIGNsYXNzIENvbXBsZXRlTWU6CiAgICAgIiIiIFRyaXZpYWwgY2xhc3MgdXNlZCBpbiB0ZXN0aW5nIHJsY29tcGxldGVyLkNvbXBsZXRlci4gIiIiCiAgICAgc3BhbSA9IDEKKyAgICBfaGFtID0gMgogCiAKIGNsYXNzIFRlc3RSbGNvbXBsZXRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01MiwxOCArNTMsMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3N0ci57fSgnLmZvcm1hdCh4KSBmb3IgeCBpbiBkaXIoc3RyKQogICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoJ3MnKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGRjb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCd0dXBsZS5mb29zcGFtZWdnJyksIFtdKQorICAgICAgICBleHBlY3RlZCA9IHNvcnRlZCh7J05vbmUuJXMlcycgJSAoeCwgJygnIGlmIHggIT0gJ19fZG9jX18nIGVsc2UgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBkaXIoTm9uZSl9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnTm9uZS4nKSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGRjb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdOb25lLl8nKSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGRjb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdOb25lLl9fJyksIGV4cGVjdGVkKQogCiAgICAgICAgICMgdGVzdCB3aXRoIGEgY3VzdG9taXplZCBuYW1lc3BhY2UKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuc3AnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUuc3BhbSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVtZS5lZ2cnKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5tcm8oJywgJ0NvbXBsZXRlTWUuc3BhbSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5fJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLl9oYW0nXSkKKyAgICAgICAgbWF0Y2hlcyA9IHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5fXycpCisgICAgICAgIGZvciB4IGluIG1hdGNoZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5zdGFydHN3aXRoKCdDb21wbGV0ZU1lLl9fJyksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0NvbXBsZXRlTWUuX19uYW1lX18nLCBtYXRjaGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdDb21wbGV0ZU1lLl9fbmV3X18oJywgbWF0Y2hlcykKIAotICAgICAgICBDb21wbGV0ZU1lLm1lID0gQ29tcGxldGVNZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5tZS5tZS5zcCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5tZS5tZS5zcGFtJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdlZ2cucycpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnZWdnLnt9KCcuZm9ybWF0KHgpIGZvciB4IGluIGRpcihzdHIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aCgncycpXSkKKyAgICAgICAgd2l0aCBwYXRjaC5vYmplY3QoQ29tcGxldGVNZSwgIm1lIiwgQ29tcGxldGVNZSwgY3JlYXRlPVRydWUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUubWUubWUuc3AnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLm1lLm1lLnNwYW0nXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdlZ2cucycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2VnZy57fSgnLmZvcm1hdCh4KSBmb3IgeCBpbiBkaXIoc3RyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKCdzJyldKQogCiAgICAgZGVmIHRlc3RfZXhjZXNzaXZlX2dldGF0dHIoc2VsZik6CiAgICAgICAgICMgRW5zdXJlIGdldGF0dHIoKSBpcyBpbnZva2VkIG5vIG1vcmUgdGhhbiBvbmNlIHBlciBhdHRyaWJ1dGUKQEAgLTc4LDE0ICs5MywyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZi5iJywgMCksICdmLmJhcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5jYWxscywgMSkKIAorICAgIGRlZiB0ZXN0X3VuY3JlYXRlZF9hdHRyKHNlbGYpOgorICAgICAgICAjIEF0dHJpYnV0ZXMgbGlrZSBwcm9wZXJ0aWVzIGFuZCBzbG90cyBzaG91bGQgYmUgY29tcGxldGVkIGV2ZW4gd2hlbgorICAgICAgICAjIHRoZXkgaGF2ZW4ndCBiZWVuIGNyZWF0ZWQgb24gYW4gaW5zdGFuY2UKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgX19zbG90c19fID0gKCJiYXIiLCkKKyAgICAgICAgY29tcGxldGVyID0gcmxjb21wbGV0ZXIuQ29tcGxldGVyKGRpY3QoZj1Gb28oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdmLicsIDApLCAnZi5iYXInKQorCiAgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ3JsY29tcGxldGVyLl9yZWFkbGluZV9hdmFpbGFibGUnLCBGYWxzZSkKICAgICBkZWYgdGVzdF9jb21wbGV0ZShzZWxmKToKICAgICAgICAgY29tcGxldGVyID0gcmxjb21wbGV0ZXIuQ29tcGxldGVyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJycsIDApLCAnXHQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDApLCAnYW5kJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAxKSwgJ2FzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FzJywgMiksICdhc3NlcnQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYW4nLCAwKSwgJ2FuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMCksICdhbmQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAxKSwgJ2FzICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhcycsIDIpLCAnYXNzZXJ0ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhbicsIDApLCAnYW5kICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdwYScsIDApLCAncGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdGYScsIDApLCAnRmFsc2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZWwnLCAwKSwgJ2VsaWYgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2VsJywgMSksICdlbHNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3RyJywgMCksICd0cnk6JykKIAogICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9nbG9iYWxzKHNlbGYpOgogICAgICAgICBuYW1lc3BhY2UgPSB7CkBAIC05OCw5ICsxMjYsMTAgQEAKICAgICAgICAgY29tcGxldGVyID0gcmxjb21wbGV0ZXIuQ29tcGxldGVyKG5hbWVzcGFjZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ0ZhbHNlJywgMCksICdGYWxzZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbXBsZXRlci5jb21wbGV0ZSgnRmFsc2UnLCAxKSkgICMgTm8gZHVwbGljYXRlcwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXNzZXJ0JywgMCksICdhc3NlcnQnKQorICAgICAgICAjIFNwYWNlIG9yIGNvbG9uIGFkZGVkIGR1ZSB0byBiZWluZyBhIHJlc2VydmVkIGtleXdvcmQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2Fzc2VydCcsIDApLCAnYXNzZXJ0ICcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbXBsZXRlci5jb21wbGV0ZSgnYXNzZXJ0JywgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCd0cnknLCAwKSwgJ3RyeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCd0cnknLCAwKSwgJ3RyeTonKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21wbGV0ZXIuY29tcGxldGUoJ3RyeScsIDEpKQogICAgICAgICAjIE5vIG9wZW5pbmcgYnJhY2tldCAiKCIgYmVjYXVzZSB3ZSBvdmVycm9kZSB0aGUgYnVpbHQtaW4gY2xhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ21lbW9yeXZpZXcnLCAwKSwgJ21lbW9yeXZpZXcnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKaW5kZXggZDAxMjY2Zi4uNTFiNDhjZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CkBAIC0xLDggKzEsOCBAQAogaW1wb3J0IGlvCitpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHVybGxpYi5yb2JvdHBhcnNlcgotZnJvbSB1cmxsaWIuZXJyb3IgaW1wb3J0IFVSTEVycm9yLCBIVFRQRXJyb3IKLWZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgSFRUUFNlcnZlcgogdHJ5OgpAQCAtMTEsMjQ2ICsxMSwyMjMgQEAKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKIAotY2xhc3MgUm9ib3RUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4PU5vbmUsIHBhcnNlcj1Ob25lLCB1cmw9Tm9uZSwgZ29vZD1Ob25lLCBhZ2VudD1Ob25lKToKLSAgICAgICAgIyB3b3JrYXJvdW5kIHRvIG1ha2UgdW5pdHRlc3QgZGlzY292ZXJ5IHdvcmsgKHNlZSAjMTcwNjYpCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGluZGV4LCBpbnQpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIGlmIGdvb2Q6Ci0gICAgICAgICAgICBzZWxmLnN0ciA9ICJSb2JvdFRlc3QoJWQsIGdvb2QsICVzKSIgJSAoaW5kZXgsIHVybCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc3RyID0gIlJvYm90VGVzdCglZCwgYmFkLCAlcykiICUgKGluZGV4LCB1cmwpCi0gICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyCi0gICAgICAgIHNlbGYudXJsID0gdXJsCi0gICAgICAgIHNlbGYuZ29vZCA9IGdvb2QKLSAgICAgICAgc2VsZi5hZ2VudCA9IGFnZW50CitjbGFzcyBCYXNlUm9ib3RUZXN0OgorICAgIHJvYm90c190eHQgPSAnJworICAgIGFnZW50ID0gJ3Rlc3Rfcm9ib3RwYXJzZXInCisgICAgZ29vZCA9IFtdCisgICAgYmFkID0gW10KIAotICAgIGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYudXJsLCB0dXBsZSk6Ci0gICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi51cmwKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHVybCA9IHNlbGYudXJsCi0gICAgICAgICAgICBhZ2VudCA9IHNlbGYuYWdlbnQKLSAgICAgICAgaWYgc2VsZi5nb29kOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgbGluZXMgPSBpby5TdHJpbmdJTyhzZWxmLnJvYm90c190eHQpLnJlYWRsaW5lcygpCisgICAgICAgIHNlbGYucGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigpCisgICAgICAgIHNlbGYucGFyc2VyLnBhcnNlKGxpbmVzKQogCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnN0cgorICAgIGRlZiBnZXRfYWdlbnRfYW5kX3VybChzZWxmLCB1cmwpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHVybCwgdHVwbGUpOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHVybAorICAgICAgICAgICAgcmV0dXJuIGFnZW50LCB1cmwKKyAgICAgICAgcmV0dXJuIHNlbGYuYWdlbnQsIHVybAogCi10ZXN0cyA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgZGVmIHRlc3RfZ29vZF91cmxzKHNlbGYpOgorICAgICAgICBmb3IgdXJsIGluIHNlbGYuZ29vZDoKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLmdldF9hZ2VudF9hbmRfdXJsKHVybCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHVybD11cmwsIGFnZW50PWFnZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQogCi1kZWYgUm9ib3RUZXN0KGluZGV4LCByb2JvdHNfdHh0LCBnb29kX3VybHMsIGJhZF91cmxzLAotICAgICAgICAgICAgICBhZ2VudD0idGVzdF9yb2JvdHBhcnNlciIpOgorICAgIGRlZiB0ZXN0X2JhZF91cmxzKHNlbGYpOgorICAgICAgICBmb3IgdXJsIGluIHNlbGYuYmFkOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYuZ2V0X2FnZW50X2FuZF91cmwodXJsKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXVybCwgYWdlbnQ9YWdlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQogCi0gICAgbGluZXMgPSBpby5TdHJpbmdJTyhyb2JvdHNfdHh0KS5yZWFkbGluZXMoKQotICAgIHBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoKQotICAgIHBhcnNlci5wYXJzZShsaW5lcykKLSAgICBmb3IgdXJsIGluIGdvb2RfdXJsczoKLSAgICAgICAgdGVzdHMuYWRkVGVzdChSb2JvdFRlc3RDYXNlKGluZGV4LCBwYXJzZXIsIHVybCwgMSwgYWdlbnQpKQotICAgIGZvciB1cmwgaW4gYmFkX3VybHM6Ci0gICAgICAgIHRlc3RzLmFkZFRlc3QoUm9ib3RUZXN0Q2FzZShpbmRleCwgcGFyc2VyLCB1cmwsIDAsIGFnZW50KSkKIAotIyBFeGFtcGxlcyBmcm9tIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy93Yy9ub3JvYm90cy5odG1sIChmZXRjaGVkIDIwMDIpCi0KLSMgMS4KLWRvYyA9ICIiIgorY2xhc3MgVXNlckFnZW50V2lsZGNhcmRUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8gIyBUaGlzIGlzIGFuIGluZmluaXRlIHZpcnR1YWwgVVJMIHNwYWNlCiBEaXNhbGxvdzogL3RtcC8gIyB0aGVzZSB3aWxsIHNvb24gZGlzYXBwZWFyCiBEaXNhbGxvdzogL2Zvby5odG1sCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gWycvJywgJy90ZXN0Lmh0bWwnXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCAnL3RtcC94eHgnLCAnL2Zvby5odG1sJ10KIAotZ29vZCA9IFsnLycsJy90ZXN0Lmh0bWwnXQotYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsJy90bXAveHh4JywnL2Zvby5odG1sJ10KIAotUm9ib3RUZXN0KDEsIGRvYywgZ29vZCwgYmFkKQotCi0jIDIuCi1kb2MgPSAiIiIKK2NsYXNzIENyYXdsRGVsYXlBbmRDdXN0b21BZ2VudFRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiAjIHJvYm90cy50eHQgZm9yIGh0dHA6Ly93d3cuZXhhbXBsZS5jb20vCiAKIFVzZXItYWdlbnQ6ICoKK0NyYXdsLWRlbGF5OiAxCitSZXF1ZXN0LXJhdGU6IDMvMTUKIERpc2FsbG93OiAvY3liZXJ3b3JsZC9tYXAvICMgVGhpcyBpcyBhbiBpbmZpbml0ZSB2aXJ0dWFsIFVSTCBzcGFjZQogCiAjIEN5YmVybWFwcGVyIGtub3dzIHdoZXJlIHRvIGdvLgogVXNlci1hZ2VudDogY3liZXJtYXBwZXIKIERpc2FsbG93OgorICAgICIiIgorICAgIGdvb2QgPSBbJy8nLCAnL3Rlc3QuaHRtbCcsICgnY3liZXJtYXBwZXInLCAnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnKV0KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJ10KIAotIiIiCiAKLWdvb2QgPSBbJy8nLCcvdGVzdC5odG1sJywoJ2N5YmVybWFwcGVyJywnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnKV0KLWJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQotCi1Sb2JvdFRlc3QoMiwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMy4KLWRvYyA9ICIiIgorY2xhc3MgUmVqZWN0QWxsUm9ib3RzVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKICMgZ28gYXdheQogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC8KLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCAnLycsICcvdG1wLyddCiAKLWdvb2QgPSBbXQotYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsJy8nLCcvdG1wLyddCiAKLVJvYm90VGVzdCgzLCBkb2MsIGdvb2QsIGJhZCkKLQotIyBFeGFtcGxlcyBmcm9tIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy93Yy9ub3JvYm90cy1yZmMuaHRtbCAoZmV0Y2hlZCAyMDAyKQotCi0jIDQuCi1kb2MgPSAiIiIKK2NsYXNzIENyYXdsRGVsYXlBbmRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBmaWd0cmVlCitDcmF3bC1kZWxheTogMworUmVxdWVzdC1yYXRlOiA5LzMwCiBEaXNhbGxvdzogL3RtcAogRGlzYWxsb3c6IC9hJTNjZC5odG1sCiBEaXNhbGxvdzogL2ElMmZiLmh0bWwKIERpc2FsbG93OiAvJTdlam9lL2luZGV4Lmh0bWwKLSIiIgorICAgICIiIgorICAgIGFnZW50ID0gJ2ZpZ3RyZWUnCisgICAgcmVxdWVzdF9yYXRlID0gbmFtZWR0dXBsZSgncmVxX3JhdGUnLCAncmVxdWVzdHMgc2Vjb25kcycpKDksIDMwKQorICAgIGNyYXdsX2RlbGF5ID0gMworICAgIGdvb2QgPSBbKCdmaWd0cmVlJywgJy9mb28uaHRtbCcpXQorICAgIGJhZCA9IFsnL3RtcCcsICcvdG1wLmh0bWwnLCAnL3RtcC9hLmh0bWwnLCAnL2ElM2NkLmh0bWwnLCAnL2ElM0NkLmh0bWwnLAorICAgICAgICAgICAnL2ElMmZiLmh0bWwnLCAnL35qb2UvaW5kZXguaHRtbCddCiAKLWdvb2QgPSBbXSAjIFhGQUlMICcvYS9iLmh0bWwnCi1iYWQgPSBbJy90bXAnLCcvdG1wLmh0bWwnLCcvdG1wL2EuaHRtbCcsCi0gICAgICAgJy9hJTNjZC5odG1sJywnL2ElM0NkLmh0bWwnLCcvYSUyZmIuaHRtbCcsCi0gICAgICAgJy9+am9lL2luZGV4Lmh0bWwnCi0gICAgICAgXQorICAgIGRlZiB0ZXN0X3JlcXVlc3RfcmF0ZShzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmdvb2Q6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmw9dXJsLCBhZ2VudD1hZ2VudCk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5jcmF3bF9kZWxheToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLmNyYXdsX2RlbGF5KGFnZW50KSwgc2VsZi5jcmF3bF9kZWxheQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3JhdGUgYW5kIHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZShhZ2VudCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlci5yZXF1ZXN0X3JhdGUoYWdlbnQpLnJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0X3JhdGUucmVxdWVzdHMKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIucmVxdWVzdF9yYXRlKGFnZW50KS5zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0X3JhdGUuc2Vjb25kcworICAgICAgICAgICAgICAgICAgICApCiAKLVJvYm90VGVzdCg0LCBkb2MsIGdvb2QsIGJhZCwgJ2ZpZ3RyZWUnKQotUm9ib3RUZXN0KDUsIGRvYywgZ29vZCwgYmFkLCAnRmlnVHJlZSBSb2JvdCBsaWJ3d3ctcGVybC81LjA0JykKIAotIyA2LgotZG9jID0gIiIiCitjbGFzcyBEaWZmZXJlbnRBZ2VudFRlc3QoQ3Jhd2xEZWxheUFuZFJlcXVlc3RSYXRlVGVzdCk6CisgICAgYWdlbnQgPSAnRmlnVHJlZSBSb2JvdCBsaWJ3d3ctcGVybC81LjA0JworICAgICMgdGhlc2UgYXJlIG5vdCBhY3R1YWxseSB0ZXN0ZWQsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHBhcnNlIGl0CisgICAgIyBpbiBvcmRlciB0byBhY2NvbW1vZGF0ZSB0aGUgaW5wdXQgcGFyYW1ldGVycworICAgIHJlcXVlc3RfcmF0ZSA9IE5vbmUKKyAgICBjcmF3bF9kZWxheSA9IE5vbmUKKworCitjbGFzcyBJbnZhbGlkUmVxdWVzdFJhdGVUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC90bXAvCiBEaXNhbGxvdzogL2ElM0NkLmh0bWwKIERpc2FsbG93OiAvYS9iLmh0bWwKIERpc2FsbG93OiAvJTdlam9lL2luZGV4Lmh0bWwKLSIiIgorQ3Jhd2wtZGVsYXk6IDMKK1JlcXVlc3QtcmF0ZTogOS9iYW5hbmEKKyAgICAiIiIKKyAgICBnb29kID0gWycvdG1wJ10KKyAgICBiYWQgPSBbJy90bXAvJywgJy90bXAvYS5odG1sJywgJy9hJTNjZC5odG1sJywgJy9hJTNDZC5odG1sJywgJy9hL2IuaHRtbCcsCisgICAgICAgICAgICcvJTdFam9lL2luZGV4Lmh0bWwnXQorICAgIGNyYXdsX2RlbGF5ID0gMwogCi1nb29kID0gWycvdG1wJyxdICMgWEZBSUw6ICcvYSUyZmIuaHRtbCcKLWJhZCA9IFsnL3RtcC8nLCcvdG1wL2EuaHRtbCcsCi0gICAgICAgJy9hJTNjZC5odG1sJywnL2ElM0NkLmh0bWwnLCIvYS9iLmh0bWwiLAotICAgICAgICcvJTdFam9lL2luZGV4Lmh0bWwnXQogCi1Sb2JvdFRlc3QoNiwgZG9jLCBnb29kLCBiYWQpCi0KLSMgRnJvbSBidWcgcmVwb3J0ICM1MjMwNDEKLQotIyA3LgotZG9jID0gIiIiCitjbGFzcyBJbnZhbGlkQ3Jhd2xEZWxheVRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgRnJvbSBidWcgcmVwb3J0ICM1MjMwNDEKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1BZ2VudDogKgogRGlzYWxsb3c6IC8uCi0iIiIKK0NyYXdsLWRlbGF5OiBwZWFycworICAgICIiIgorICAgIGdvb2QgPSBbJy9mb28uaHRtbCddCisgICAgIyBidWcgcmVwb3J0IHNheXMgIi8iIHNob3VsZCBiZSBkZW5pZWQsIGJ1dCB0aGF0IGlzIG5vdCBpbiB0aGUgUkZDCisgICAgYmFkID0gW10KIAotZ29vZCA9IFsnL2Zvby5odG1sJ10KLWJhZCA9IFtdICMgQnVnIHJlcG9ydCBzYXlzICIvIiBzaG91bGQgYmUgZGVuaWVkLCBidXQgdGhhdCBpcyBub3QgaW4gdGhlIFJGQwogCi1Sb2JvdFRlc3QoNywgZG9jLCBnb29kLCBiYWQpCi0KLSMgRnJvbSBHb29nbGU6IGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zdXBwb3J0L3dlYm1hc3RlcnMvYmluL2Fuc3dlci5weT9obD1lbiZhbnN3ZXI9NDAzNjQKLQotIyA4LgotZG9jID0gIiIiCitjbGFzcyBBbm90aGVySW52YWxpZFJlcXVlc3RSYXRlVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBhbHNvIHRlc3QgdGhhdCBBbGxvdyBhbmQgRGlhc2FsbG93IHdvcmtzIHdlbGwgd2l0aCBlYWNoIG90aGVyCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdAogQWxsb3c6IC9mb2xkZXIxL215ZmlsZS5odG1sCiBEaXNhbGxvdzogL2ZvbGRlcjEvCi0iIiIKK1JlcXVlc3QtcmF0ZTogd2hhbGUvYmFuYW5hCisgICAgIiIiCisgICAgYWdlbnQgPSAnR29vZ2xlYm90JworICAgIGdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KKyAgICBiYWQgPSBbJy9mb2xkZXIxL2Fub3RoZXJmaWxlLmh0bWwnXQogCi1nb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCi1iYWQgPSBbJy9mb2xkZXIxL2Fub3RoZXJmaWxlLmh0bWwnXQogCi1Sb2JvdFRlc3QoOCwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QiKQotCi0jIDkuICBUaGlzIGZpbGUgaXMgaW5jb3JyZWN0IGJlY2F1c2UgIkdvb2dsZWJvdCIgaXMgYSBzdWJzdHJpbmcgb2YKLSMgICAgICJHb29nbGVib3QtTW9iaWxlIiwgc28gdGVzdCAxMCB3b3JrcyBqdXN0IGxpa2UgdGVzdCA5LgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRPcmRlcmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdGhlIG9yZGVyIG9mIFVzZXItYWdlbnQgc2hvdWxkIGJlIGNvcnJlY3QuIG5vdGUKKyAgICAjIHRoYXQgdGhpcyBmaWxlIGlzIGluY29ycmVjdCBiZWNhdXNlICJHb29nbGVib3QiIGlzIGEKKyAgICAjIHN1YnN0cmluZyBvZiAiR29vZ2xlYm90LU1vYmlsZSIKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogR29vZ2xlYm90CiBEaXNhbGxvdzogLwogCiBVc2VyLWFnZW50OiBHb29nbGVib3QtTW9iaWxlCiBBbGxvdzogLwotIiIiCi0KLWdvb2QgPSBbXQotYmFkID0gWycvc29tZXRoaW5nLmpwZyddCi0KLVJvYm90VGVzdCg5LCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdCIpCi0KLWdvb2QgPSBbXQotYmFkID0gWycvc29tZXRoaW5nLmpwZyddCi0KLVJvYm90VGVzdCgxMCwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QtTW9iaWxlIikKLQotIyAxMS4gIEdldCB0aGUgb3JkZXIgY29ycmVjdC4KLWRvYyA9ICIiIgotVXNlci1hZ2VudDogR29vZ2xlYm90LU1vYmlsZQotQWxsb3c6IC8KLQotVXNlci1hZ2VudDogR29vZ2xlYm90Ci1EaXNhbGxvdzogLwotIiIiCi0KLWdvb2QgPSBbXQotYmFkID0gWycvc29tZXRoaW5nLmpwZyddCi0KLVJvYm90VGVzdCgxMSwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QiKQotCi1nb29kID0gWycvc29tZXRoaW5nLmpwZyddCi1iYWQgPSBbXQotCi1Sb2JvdFRlc3QoMTIsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90LU1vYmlsZSIpCisgICAgIiIiCisgICAgYWdlbnQgPSAnR29vZ2xlYm90JworICAgIGJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQogCiAKLSMgMTMuICBHb29nbGUgYWxzbyBnb3QgdGhlIG9yZGVyIHdyb25nIGluICM4LiAgWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUKLSMgICAgICBVUkxzIGZyb20gbW9yZSBzcGVjaWZpYyB0byBtb3JlIGdlbmVyYWwuCi1kb2MgPSAiIiIKK2NsYXNzIFVzZXJBZ2VudEdvb2dsZU1vYmlsZVRlc3QoVXNlckFnZW50T3JkZXJpbmdUZXN0KToKKyAgICBhZ2VudCA9ICdHb29nbGVib3QtTW9iaWxlJworCisKK2NsYXNzIEdvb2dsZVVSTE9yZGVyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBHb29nbGUgYWxzbyBnb3QgdGhlIG9yZGVyIHdyb25nLiBZb3UgbmVlZAorICAgICMgdG8gc3BlY2lmeSB0aGUgVVJMcyBmcm9tIG1vcmUgc3BlY2lmaWMgdG8gbW9yZSBnZW5lcmFsCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdAogQWxsb3c6IC9mb2xkZXIxL215ZmlsZS5odG1sCiBEaXNhbGxvdzogL2ZvbGRlcjEvCi0iIiIKLQotZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQotYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KLQotUm9ib3RUZXN0KDEzLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Imdvb2dsZWJvdCIpCisgICAgIiIiCisgICAgYWdlbnQgPSAnZ29vZ2xlYm90JworICAgIGdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KKyAgICBiYWQgPSBbJy9mb2xkZXIxL2Fub3RoZXJmaWxlLmh0bWwnXQogCiAKLSMgMTQuIEZvciBpc3N1ZSAjNjMyNSAocXVlcnkgc3RyaW5nIHN1cHBvcnQpCi1kb2MgPSAiIiIKK2NsYXNzIERpc2FsbG93UXVlcnlTdHJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHNlZSBpc3N1ZSAjNjMyNSBmb3IgZGV0YWlscworICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL3NvbWUvcGF0aD9uYW1lPXZhbHVlCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gWycvc29tZS9wYXRoJ10KKyAgICBiYWQgPSBbJy9zb21lL3BhdGg/bmFtZT12YWx1ZSddCiAKLWdvb2QgPSBbJy9zb21lL3BhdGgnXQotYmFkID0gWycvc29tZS9wYXRoP25hbWU9dmFsdWUnXQogCi1Sb2JvdFRlc3QoMTQsIGRvYywgZ29vZCwgYmFkKQotCi0jIDE1LiBGb3IgaXNzdWUgIzQxMDggKG9iZXkgZmlyc3QgKiBlbnRyeSkKLWRvYyA9ICIiIgorY2xhc3MgVXNlRmlyc3RVc2VyQWdlbnRXaWxkY2FyZFRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgb2JleSBmaXJzdCAqIGVudHJ5ICgjNDEwOCkKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9zb21lL3BhdGgKIAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9hbm90aGVyL3BhdGgKLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy9hbm90aGVyL3BhdGgnXQorICAgIGJhZCA9IFsnL3NvbWUvcGF0aCddCiAKLWdvb2QgPSBbJy9hbm90aGVyL3BhdGgnXQotYmFkID0gWycvc29tZS9wYXRoJ10KIAotUm9ib3RUZXN0KDE1LCBkb2MsIGdvb2QsIGJhZCkKLQotIyAxNi4gRW1wdHkgcXVlcnkgKGlzc3VlICMxNzQwMykuIE5vcm1hbGl6aW5nIHRoZSB1cmwgZmlyc3QuCi1kb2MgPSAiIiIKK2NsYXNzIEVtcHR5UXVlcnlTdHJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIG5vcm1hbGl6ZSB0aGUgVVJMIGZpcnN0ICgjMTc0MDMpCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIEFsbG93OiAvc29tZS9wYXRoPwogRGlzYWxsb3c6IC9hbm90aGVyL3BhdGg/Ci0iIiIKLQotZ29vZCA9IFsnL3NvbWUvcGF0aD8nXQotYmFkID0gWycvYW5vdGhlci9wYXRoPyddCi0KLVJvYm90VGVzdCgxNiwgZG9jLCBnb29kLCBiYWQpCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3NvbWUvcGF0aD8nXQorICAgIGJhZCA9IFsnL2Fub3RoZXIvcGF0aD8nXQogCiAKIGNsYXNzIFJvYm90SGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKQEAgLTI4Myw5ICsyNjAsNyBAQAogICAgICAgICBzZWxmLnQuam9pbigpCiAgICAgICAgIHNlbGYuc2VydmVyLnNlcnZlcl9jbG9zZSgpCiAKLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgc2VsZi50ZXN0UGFzc3dvcmRQcm90ZWN0ZWRTaXRlKCkKLQorICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0UGFzc3dvcmRQcm90ZWN0ZWRTaXRlKHNlbGYpOgogICAgICAgICBhZGRyID0gc2VsZi5zZXJ2ZXIuc2VydmVyX2FkZHJlc3MKICAgICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgc3VwcG9ydC5IT1NUICsgJzonICsgc3RyKGFkZHJbMV0pCkBAIC0yOTUsMjYgKzI3MCw0NSBAQAogICAgICAgICBwYXJzZXIucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmNhbl9mZXRjaCgiKiIsIHJvYm90c191cmwpKQogCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnJXMnICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18KIAogY2xhc3MgTmV0d29ya1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIEB1bml0dGVzdC5za2lwKCdkb2VzIG5vdCBoYW5kbGUgdGhlIGd6aXAgZW5jb2RpbmcgZGVsaXZlcmVkIGJ5IHB5ZG90b3JnJykKLSAgICBkZWYgdGVzdFB5dGhvbk9yZyhzZWxmKToKLSAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoJ3d3dy5weXRob24ub3JnJyk6Ci0gICAgICAgICAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKAotICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvcm9ib3RzLnR4dCIpCi0gICAgICAgICAgICBwYXJzZXIucmVhZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoCi0gICAgICAgICAgICAgICAgcGFyc2VyLmNhbl9mZXRjaCgiKiIsICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvcm9ib3RzLnR4dCIpKQorICAgIGJhc2VfdXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvJworICAgIHJvYm90c190eHQgPSAne31lbHNld2hlcmUvcm9ib3RzLnR4dCcuZm9ybWF0KGJhc2VfdXJsKQogCi1kZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHN1aXRlLCBwYXR0ZXJuKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShOZXR3b3JrVGVzdENhc2UpCi0gICAgc3VpdGUuYWRkVGVzdCh0ZXN0cykKLSAgICBzdWl0ZS5hZGRUZXN0KFBhc3N3b3JkUHJvdGVjdGVkU2l0ZVRlc3RDYXNlKCkpCi0gICAgcmV0dXJuIHN1aXRlCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoY2xzLmJhc2VfdXJsKToKKyAgICAgICAgICAgIGNscy5wYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKGNscy5yb2JvdHNfdHh0KQorICAgICAgICAgICAgY2xzLnBhcnNlci5yZWFkKCkKKworICAgIGRlZiB1cmwoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiAne317fXt9Jy5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLmJhc2VfdXJsLCBwYXRoLCAnLycgaWYgbm90IG9zLnBhdGguc3BsaXRleHQocGF0aClbMV0gZWxzZSAnJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5kaXNhbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2VsZi5wYXJzZXIubXRpbWUoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jcmF3bF9kZWxheSgnKicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZSgnKicpKQorCisgICAgZGVmIHRlc3RfY2FuX2ZldGNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCcqJywgc2VsZi51cmwoJ2Vsc2V3aGVyZScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJ051dGNoJywgc2VsZi5iYXNlX3VybCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYudXJsKCdicmlhbicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJ051dGNoJywgc2VsZi51cmwoJ3dlYnN0YXRzJykpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYudXJsKCd3ZWJzdGF0cycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYuYmFzZV91cmwpKQorCisgICAgZGVmIHRlc3RfcmVhZF80MDQoc2VsZik6CisgICAgICAgIHBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoc2VsZi51cmwoJ2ktcm9ib3QudHh0JykpCisgICAgICAgIHBhcnNlci5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhcnNlci5hbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmRpc2FsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIubXRpbWUoKSwgMCkKIAogaWYgX19uYW1lX189PSdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5IGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQppbmRleCBkYjU1ZGI3Li4wMmI0ZDYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKQEAgLTU3NywxMyArNTc3LDE0IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLl9kZWxfcGtnLCBwa2dfZGlyKQogICAgICAgICBmb3IgZGVwdGggaW4gcmFuZ2UoMiwgbWF4X2RlcHRoKzEpOgogICAgICAgICAgICAgc2VsZi5fYWRkX3JlbGF0aXZlX21vZHVsZXMocGtnX2RpciwgIiIsIGRlcHRoKQotICAgICAgICBmb3IgZmluZGVyLCBtb2RfbmFtZSwgaXNwa2cgaW4gcGtndXRpbC53YWxrX3BhY2thZ2VzKFtwa2dfZGlyXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZGVyLAorICAgICAgICBmb3IgbW9kdWxlaW5mbyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMoW3BrZ19kaXJdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGVpbmZvLCBwa2d1dGlsLk1vZHVsZUluZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlaW5mby5tb2R1bGVfZmluZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcikKLSAgICAgICAgICAgIGlmIGlzcGtnOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLnJlbW92ZShtb2RfbmFtZSkKKyAgICAgICAgICAgIGlmIG1vZHVsZWluZm8uaXNwa2c6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMucmVtb3ZlKG1vZHVsZWluZm8ubmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5yZW1vdmUobW9kdWxlaW5mby5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9wYWNrYWdlcyksIDAsIGV4cGVjdGVkX3BhY2thZ2VzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9tb2R1bGVzKSwgMCwgZXhwZWN0ZWRfbW9kdWxlcykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKaW5kZXggZmU4ZTc4NS4uZjg2ZjU5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IHNjaGVkCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkgYi9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM2NWNmMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VjcmV0cy5weQpAQCAtMCwwICsxLDEyMyBAQAorIiIiVGVzdCB0aGUgc2VjcmV0cyBtb2R1bGUuCisKK0FzIG1vc3Qgb2YgdGhlIGZ1bmN0aW9ucyBpbiBzZWNyZXRzIGFyZSB0aGluIHdyYXBwZXJzIGFyb3VuZCBmdW5jdGlvbnMKK2RlZmluZWQgZWxzZXdoZXJlLCB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhlbSBleGhhdXN0aXZlbHkuCisiIiIKKworCitpbXBvcnQgc2VjcmV0cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3RyaW5nCisKKworIyA9PT0gVW5pdCB0ZXN0cyA9PT0KKworY2xhc3MgQ29tcGFyZV9EaWdlc3RfVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3Qgc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCBmdW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X2VxdWFsKHNlbGYpOgorICAgICAgICAjIFRlc3QgY29tcGFyZV9kaWdlc3QgZnVuY3Rpb25hbGl0eSB3aXRoIGVxdWFsIChieXRlL3RleHQpIHN0cmluZ3MuCisgICAgICAgIGZvciBzIGluICgiYSIsICJiY2QiLCAieHl6MTIzIik6CisgICAgICAgICAgICBhID0gcyoxMDAKKyAgICAgICAgICAgIGIgPSBzKjEwMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChhLmVuY29kZSgndXRmLTgnKSwgYi5lbmNvZGUoJ3V0Zi04JykpKQorCisgICAgZGVmIHRlc3RfdW5lcXVhbChzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvbXBhcmVfZGlnZXN0IGZ1bmN0aW9uYWxpdHkgd2l0aCB1bmVxdWFsIChieXRlL3RleHQpIHN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgImFiY2QiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGIiYWJjIiwgYiJhYmNkIikpCisgICAgICAgIGZvciBzIGluICgieCIsICJtbiIsICJhMWIyYzMiKToKKyAgICAgICAgICAgIGEgPSBzKjEwMCArICJxIgorICAgICAgICAgICAgYiA9IHMqMTAwICsgImsiCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYS5lbmNvZGUoJ3V0Zi04JyksIGIuZW5jb2RlKCd1dGYtOCcpKSkKKworICAgIGRlZiB0ZXN0X2JhZF90eXBlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgY29tcGFyZV9kaWdlc3QgcmFpc2VzIHdpdGggbWl4ZWQgdHlwZXMuCisgICAgICAgIGEgPSAnYWJjZGUnCisgICAgICAgIGIgPSBhLmVuY29kZSgndXRmLTgnKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGIsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlY3JldHMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCwgYiwgYSkKKworICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGNvbXBhcmVfZGlnZXN0IHJldHVybnMgYSBib29sLgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgImFiYyIpLCBib29sKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgInh5eiIpLCBib29sKQorCisKK2NsYXNzIFJhbmRvbV9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB3cmFwcGVycyBhcm91bmQgU3lzdGVtUmFuZG9tIG1ldGhvZHMuIiIiCisKKyAgICBkZWYgdGVzdF9yYW5kYml0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJhbmRiaXRzLgorICAgICAgICBlcnJtc2cgPSAicmFuZGJpdHMoJWQpIHJldHVybmVkICVkIgorICAgICAgICBmb3IgbnVtYml0cyBpbiAoMywgMTIsIDMwKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDYpOgorICAgICAgICAgICAgICAgIG4gPSBzZWNyZXRzLnJhbmRiaXRzKG51bWJpdHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPD0gbiA8IDIqKm51bWJpdHMsIGVycm1zZyAlIChudW1iaXRzLCBuKSkKKworICAgIGRlZiB0ZXN0X2Nob2ljZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGNob2ljZS4KKyAgICAgICAgaXRlbXMgPSBbMSwgMiwgNCwgOCwgMTYsIDMyLCA2NF0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY2hvaWNlKGl0ZW1zKSBpbiBpdGVtcykKKworICAgIGRlZiB0ZXN0X3JhbmRiZWxvdyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJhbmRiZWxvdy4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMiwgMTApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWNyZXRzLnJhbmRiZWxvdyhpKSwgcmFuZ2UoaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlY3JldHMucmFuZGJlbG93LCAwKQorCisKK2NsYXNzIFRva2VuX1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRva2VuIGZ1bmN0aW9ucy4iIiIKKworICAgIGRlZiB0ZXN0X3Rva2VuX2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0b2tlbl8qIGZ1bmN0aW9ucyBoYW5kbGUgZGVmYXVsdCBzaXplIGNvcnJlY3RseS4KKyAgICAgICAgZm9yIGZ1bmMgaW4gKHNlY3JldHMudG9rZW5fYnl0ZXMsIHNlY3JldHMudG9rZW5faGV4LAorICAgICAgICAgICAgICAgICAgICAgc2VjcmV0cy50b2tlbl91cmxzYWZlKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYyk6CisgICAgICAgICAgICAgICAgbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50IiAlIG5hbWUpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmdW5jKE5vbmUpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCIlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggTm9uZSIgJSBuYW1lKQorICAgICAgICBzaXplID0gc2VjcmV0cy5ERUZBVUxUX0VOVFJPUFkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhOb25lKSksIHNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlY3JldHMudG9rZW5faGV4KE5vbmUpKSwgMipzaXplKQorCisgICAgZGVmIHRlc3RfdG9rZW5fYnl0ZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9ieXRlcy4KKyAgICAgICAgZm9yIG4gaW4gKDEsIDgsIDE3LCAxMDApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy50b2tlbl9ieXRlcyhuKSwgYnl0ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhuKSksIG4pCisKKyAgICBkZWYgdGVzdF90b2tlbl9oZXgoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9oZXguCisgICAgICAgIGZvciBuIGluICgxLCAxMiwgMjUsIDkwKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG49bik6CisgICAgICAgICAgICAgICAgcyA9IHNlY3JldHMudG9rZW5faGV4KG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHMsIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMipuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBzdHJpbmcuaGV4ZGlnaXRzIGZvciBjIGluIHMpKQorCisgICAgZGVmIHRlc3RfdG9rZW5fdXJsc2FmZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRva2VuX3VybHNhZmUuCisgICAgICAgIGxlZ2FsID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJy1fJworICAgICAgICBmb3IgbiBpbiAoMSwgMTEsIDI4LCA3Nik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHMgPSBzZWNyZXRzLnRva2VuX3VybHNhZmUobikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uocywgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBsZWdhbCBmb3IgYyBpbiBzKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NldC5weQppbmRleCA3NTk0MzAzLi5hZmE2ZTdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NldC5weQpAQCAtNiwxMCArNiwxMSBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKLWltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgc3RyaW5nCiAKIGNsYXNzIFBhc3NUaHJ1KEV4Y2VwdGlvbik6CiAgICAgcGFzcwpAQCAtNzI5LDYgKzczMCwyOCBAQAogICAgICAgICAgICAgYWRkaGFzaHZhbHVlKGhhc2goZnJvemVuc2V0KFtlIGZvciBlLCBtIGluIGVsZW1tYXNrcyBpZiBtJmldKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGhhc2h2YWx1ZXMpLCAyKipuKQogCisgICAgICAgIGRlZiBsZXR0ZXJfcmFuZ2Uobik6CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLmFzY2lpX2xldHRlcnNbOm5dCisKKyAgICAgICAgZGVmIHpmX3JhbmdlKG4pOgorICAgICAgICAgICAgIyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXQtdGhlb3JldGljX2RlZmluaXRpb25fb2ZfbmF0dXJhbF9udW1iZXJzCisgICAgICAgICAgICBudW1zID0gW2Zyb3plbnNldCgpXQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobi0xKToKKyAgICAgICAgICAgICAgICBudW0gPSBmcm96ZW5zZXQobnVtcykKKyAgICAgICAgICAgICAgICBudW1zLmFwcGVuZChudW0pCisgICAgICAgICAgICByZXR1cm4gbnVtc1s6bl0KKworICAgICAgICBkZWYgcG93ZXJzZXQocyk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocykrMSk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBtYXAoZnJvemVuc2V0LCBpdGVydG9vbHMuY29tYmluYXRpb25zKHMsIGkpKQorCisgICAgICAgIGZvciBuIGluIHJhbmdlKDE4KToKKyAgICAgICAgICAgIHQgPSAyICoqIG4KKyAgICAgICAgICAgIG1hc2sgPSB0IC0gMQorICAgICAgICAgICAgZm9yIG51bXMgaW4gKHJhbmdlLCBsZXR0ZXJfcmFuZ2UsIHpmX3JhbmdlKToKKyAgICAgICAgICAgICAgICB1ID0gbGVuKHtoICYgbWFzayBmb3IgaCBpbiBtYXAoaGFzaCwgcG93ZXJzZXQobnVtcyhuKSkpfSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoNCp1LCB0KQorCiBjbGFzcyBGcm96ZW5TZXRTdWJjbGFzcyhmcm96ZW5zZXQpOgogICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKaW5kZXggNTViNTMzZC4uMzkzNmM5NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CkBAIC0xNzMsMTYgKzE3MywxMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiAlcyAhPSAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kYXRhW2ldWzBdLCBsLCBzZWxmLmRhdGFbaV1bMTpdKSkKIAorICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRBbXBlcnNhbmRBbmRQaXBlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgJiwgfCIiIgorICAgICAgICAjIENvdWxkIHRha2UgdGhlc2UgZm9ybXM6ICYmLCAmLCB8JiwgOyYsIDs7JgorICAgICAgICAjIG9mIGNvdXJzZSwgdGhlIHNhbWUgYXBwbGllcyB0byB8IGFuZCB8fAorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIGZvciBkZWxpbWl0ZXIgaW4gKCcmJicsICcmJywgJ3wmJywgJzsmJywgJzs7JicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd8fCcsICd8JywgJyZ8JywgJzt8JywgJzs7fCcpOgorICAgICAgICAgICAgc3JjID0gWydlY2hvIGhpICVzIGVjaG8gYnllJyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzZWNobyBieWUnICUgZGVsaW1pdGVyXQorICAgICAgICAgICAgcmVmID0gWydlY2hvJywgJ2hpJywgZGVsaW1pdGVyLCAnZWNobycsICdieWUnXQorICAgICAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRTZW1pY29sb24oc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiA7IiIiCisgICAgICAgICMgQ291bGQgdGFrZSB0aGVzZSBmb3JtczogOywgOzssIDsmLCA7OyYKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBmb3IgZGVsaW1pdGVyIGluICgnOycsICc7OycsICc7JicsICc7OyYnKToKKyAgICAgICAgICAgIHNyYyA9IFsnZWNobyBoaSAlcyBlY2hvIGJ5ZScgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklcyBlY2hvIGJ5ZScgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklc2VjaG8gYnllJyAlIGRlbGltaXRlcl0KKyAgICAgICAgICAgIHJlZiA9IFsnZWNobycsICdoaScsIGRlbGltaXRlciwgJ2VjaG8nLCAnYnllJ10KKyAgICAgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0UmVkaXJlY3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiA+IiIiCisgICAgICAgICMgb2YgY291cnNlLCB0aGUgc2FtZSBhcHBsaWVzIHRvIDwsIHwKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBmb3IgZGVsaW1pdGVyIGluICgnPCcsICd8Jyk6CisgICAgICAgICAgICBzcmMgPSBbJ2VjaG8gaGkgJXMgb3V0JyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzIG91dCcgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklc291dCcgJSBkZWxpbWl0ZXJdCisgICAgICAgICAgICByZWYgPSBbJ2VjaG8nLCAnaGknLCBkZWxpbWl0ZXIsICdvdXQnXQorICAgICAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRQYXJlbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mICgpIiIiCisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgc3JjID0gWycoIGVjaG8gaGkgKScsCisgICAgICAgICAgICAgICAnKGVjaG8gaGkpJ10KKyAgICAgICAgcmVmID0gWycoJywgJ2VjaG8nLCAnaGknLCAnKSddCisgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0Q3VzdG9tKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgd2l0aCBjdXN0b20gY2hhcnMiIiIKKyAgICAgICAgcmVmID0gWyd+L2EnLCAnJicsICcmJywgJ2ItYycsICctLWNvbG9yPWF1dG8nLCAnfHwnLCAnZCcsICcqLnB5PyddCisgICAgICAgIHNzID0gIn4vYSAmJiBiLWMgLS1jb2xvcj1hdXRvIHx8IGQgKi5weT8iCisgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9InwiKQorICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0VG9rZW5UeXBlcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHRva2VucyBhcmUgc3BsaXQgd2l0aCB0eXBlcyBhcyBleHBlY3RlZC4iIiIKKyAgICAgICAgZm9yIHNvdXJjZSwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EgJiYgYiB8fCBjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2EnLCAnYScpLCAoJyYmJywgJ2MnKSwgKCdiJywgJ2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3x8JywgJ2MnKSwgKCdjJywgJ2EnKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzb3VyY2UsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICBvYnNlcnZlZCA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHQgPSBzLmdldF90b2tlbigpCisgICAgICAgICAgICAgICAgaWYgdCA9PSBzLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiB0WzBdIGluIHMucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIHR0ID0gJ2MnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHQgPSAnYScKKyAgICAgICAgICAgICAgICBvYnNlcnZlZC5hcHBlbmQoKHQsIHR0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JzZXJ2ZWQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RQdW5jdHVhdGlvbkluV29yZENoYXJzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYW55IHB1bmN0dWF0aW9uIGNoYXJzIGFyZSByZW1vdmVkIGZyb20gd29yZGNoYXJzIiIiCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgnYV9iX19jJywgcHVuY3R1YXRpb25fY2hhcnM9J18nKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdfJywgcy53b3JkY2hhcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgWydhJywgJ18nLCAnYicsICdfXycsICdjJ10pCisKKyAgICBkZWYgdGVzdFB1bmN0dWF0aW9uV2l0aFdoaXRlc3BhY2VTcGxpdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHdpdGggd2hpdGVzcGFjZV9zcGxpdCwgYmVoYXZpb3VyIGlzIGFzIGV4cGVjdGVkIiIiCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgnYSAgJiYgYiAgfHwgIGMnLCBwdW5jdHVhdGlvbl9jaGFycz0nJicpCisgICAgICAgICMgd2hpdGVzcGFjZV9zcGxpdCBpcyBGYWxzZSwgc28gc3BsaXR0aW5nIHdpbGwgYmUgYmFzZWQgb24KKyAgICAgICAgIyBwdW5jdHVhdGlvbl9jaGFycworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIFsnYScsICcmJicsICdiJywgJ3wnLCAnfCcsICdjJ10pCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgnYSAgJiYgYiAgfHwgIGMnLCBwdW5jdHVhdGlvbl9jaGFycz0nJicpCisgICAgICAgIHMud2hpdGVzcGFjZV9zcGxpdCA9IFRydWUKKyAgICAgICAgIyB3aGl0ZXNwYWNlX3NwbGl0IGlzIFRydWUsIHNvIHNwbGl0dGluZyB3aWxsIGJlIGJhc2VkIG9uCisgICAgICAgICMgd2hpdGUgc3BhY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBbJ2EnLCAnJiYnLCAnYicsICd8fCcsICdjJ10pCisKICAgICBkZWYgdGVzdEVtcHR5U3RyaW5nSGFuZGxpbmcoc2VsZik6CiAgICAgICAgICIiIlRlc3QgdGhhdCBwYXJzaW5nIG9mIGVtcHR5IHN0cmluZ3MgaXMgY29ycmVjdGx5IGhhbmRsZWQuIiIiCiAgICAgICAgICMgc2VlIElzc3VlICMyMTk5OQogICAgICAgICBleHBlY3RlZCA9IFsnJywgJyknLCAnYWJjJ10KLQotICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIsIHBvc2l4PVRydWUpCi0gICAgICAgIHNsaXN0ID0gbGlzdChzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNsaXN0LCBleHBlY3RlZCkKKyAgICAgICAgZm9yIHB1bmN0IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIsIHBvc2l4PVRydWUsIHB1bmN0dWF0aW9uX2NoYXJzPXB1bmN0KQorICAgICAgICAgICAgc2xpc3QgPSBsaXN0KHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNsaXN0LCBleHBlY3RlZCkKICAgICAgICAgZXhwZWN0ZWQgPSBbIicnIiwgJyknLCAnYWJjJ10KLSAgICAgICAgcyA9IHNobGV4LnNobGV4KCInJylhYmMiKQorICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdFF1b3RlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQppbmRleCAxZDVlMDFhLi45OTBmYWU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQpAQCAtMTMyLDkgKzEzMiw3IEBACiAgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHZpY3RpbSwgJ3NvbWVmaWxlJyksICdmb28nKQogICAgICAgICB2aWN0aW0gPSBvcy5mc2VuY29kZSh2aWN0aW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2aWN0aW0sIGJ5dGVzKQotICAgICAgICB3aW4gPSAob3MubmFtZSA9PSAnbnQnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBpZiB3aW4gZWxzZSBFeGl0U3RhY2soKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodmljdGltKQorICAgICAgICBzaHV0aWwucm10cmVlKHZpY3RpbSkKIAogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9ybXRyZWVfZmFpbHNfb25fc3ltbGluayhzZWxmKToKQEAgLTEzMDYsMTAgKzEzMDQsMTAgQEAKICAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKLSAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdXNlcj0nbm9uLWV4aXNpbmcgdXNlcm5hbWUnKQorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPSdub24tZXhpc3RpbmcgdXNlcm5hbWUnKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IpOgotICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBncm91cD0nbm9uLWV4aXNpbmcgZ3JvdXBuYW1lJykKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgZ3JvdXA9J25vbi1leGlzdGluZyBncm91cG5hbWUnKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgYidzcGFtJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKaW5kZXggMWI4MGZmMC4uYWI0MmVkNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKQEAgLTIyLDI5ICsyMiw2IEBACiAgICAgX3Rlc3RjYXBpID0gTm9uZQogCiAKLWNsYXNzIEhhbmRsZXJCQ2FsbGVkKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWRlZiBleGl0X3N1YnByb2Nlc3MoKToKLSAgICAiIiJVc2Ugb3MuX2V4aXQoMCkgdG8gZXhpdCB0aGUgY3VycmVudCBzdWJwcm9jZXNzLgotCi0gICAgT3RoZXJ3aXNlLCB0aGUgdGVzdCBjYXRjaGVzIHRoZSBTeXN0ZW1FeGl0IGFuZCBjb250aW51ZXMgZXhlY3V0aW5nCi0gICAgaW4gcGFyYWxsZWwgd2l0aCB0aGUgb3JpZ2luYWwgdGVzdCwgc28geW91IHdpbmQgdXAgd2l0aCBhbgotICAgIGV4cG9uZW50aWFsIG51bWJlciBvZiB0ZXN0cyBydW5uaW5nIGNvbmN1cnJlbnRseS4KLSAgICAiIiIKLSAgICBvcy5fZXhpdCgwKQotCi0KLWRlZiBpZ25vcmluZ19laW50cihfX2Z1bmMsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gX19mdW5jKCphcmdzLCAqKmt3YXJncykKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCiBjbGFzcyBHZW5lcmljVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgQHVuaXR0ZXN0LnNraXBJZih0aHJlYWRpbmcgaXMgTm9uZSwgInRlc3QgbmVlZHMgdGhyZWFkaW5nIG1vZHVsZSIpCkBAIC02MywxNDUgKzQwLDYgQEAKIAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQotY2xhc3MgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIE1BWF9EVVJBVElPTiA9IDIwICAgIyBFbnRpcmUgdGVzdCBzaG91bGQgbGFzdCBhdCBtb3N0IDIwIHNlYy4KLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi51c2luZ19nYyA9IGdjLmlzZW5hYmxlZCgpCi0gICAgICAgIGdjLmRpc2FibGUoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnVzaW5nX2djOgotICAgICAgICAgICAgZ2MuZW5hYmxlKCkKLQotICAgIGRlZiBmb3JtYXRfZnJhbWUoc2VsZiwgZnJhbWUsIGxpbWl0PU5vbmUpOgotICAgICAgICByZXR1cm4gJycuam9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKGZyYW1lLCBsaW1pdD1saW1pdCkpCi0KLSAgICBkZWYgaGFuZGxlckEoc2VsZiwgc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgIHNlbGYuYV9jYWxsZWQgPSBUcnVlCi0KLSAgICBkZWYgaGFuZGxlckIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgIHNlbGYuYl9jYWxsZWQgPSBUcnVlCi0gICAgICAgIHJhaXNlIEhhbmRsZXJCQ2FsbGVkKHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUpKQotCi0gICAgZGVmIHdhaXQoc2VsZiwgY2hpbGQpOgotICAgICAgICAiIiJXYWl0IGZvciBjaGlsZCB0byBmaW5pc2gsIGlnbm9yaW5nIEVJTlRSLiIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNoaWxkLndhaXQoKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotCi0gICAgZGVmIHJ1bl90ZXN0KHNlbGYpOgotICAgICAgICAjIEluc3RhbGwgaGFuZGxlcnMuIFRoaXMgZnVuY3Rpb24gcnVucyBpbiBhIHN1Yi1wcm9jZXNzLCBzbyB3ZQotICAgICAgICAjIGRvbid0IHdvcnJ5IGFib3V0IHJlLXNldHRpbmcgdGhlIGRlZmF1bHQgaGFuZGxlcnMuCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgc2VsZi5oYW5kbGVyQSkKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgc2VsZi5oYW5kbGVyQikKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMiwgc2lnbmFsLlNJR19JR04pCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIHNpZ25hbC5kZWZhdWx0X2ludF9oYW5kbGVyKQotCi0gICAgICAgICMgVmFyaWFibGVzIHRoZSBzaWduYWxzIHdpbGwgbW9kaWZ5OgotICAgICAgICBzZWxmLmFfY2FsbGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5iX2NhbGxlZCA9IEZhbHNlCi0KLSAgICAgICAgIyBMZXQgdGhlIHN1Yi1wcm9jZXNzZXMga25vdyB3aG8gdG8gc2VuZCBzaWduYWxzIHRvLgotICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQotCi0gICAgICAgIGNoaWxkID0gaWdub3JpbmdfZWludHIoc3VicHJvY2Vzcy5Qb3BlbiwgWydraWxsJywgJy1IVVAnLCBzdHIocGlkKV0pCi0gICAgICAgIGlmIGNoaWxkOgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuYV9jYWxsZWQ6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKSAgIyBHaXZlIHRoZSBzaWduYWwgdGltZSB0byBiZSBkZWxpdmVyZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmFfY2FsbGVkKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYl9jYWxsZWQpCi0gICAgICAgIHNlbGYuYV9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICMgTWFrZSBzdXJlIHRoZSBzaWduYWwgaXNuJ3QgZGVsaXZlcmVkIHdoaWxlIHRoZSBwcmV2aW91cwotICAgICAgICAjIFBvcGVuIG9iamVjdCBpcyBiZWluZyBkZXN0cm95ZWQsIGJlY2F1c2UgX19kZWxfXyBzd2FsbG93cwotICAgICAgICAjIGV4Y2VwdGlvbnMuCi0gICAgICAgIGRlbCBjaGlsZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGlsZCA9IHN1YnByb2Nlc3MuUG9wZW4oWydraWxsJywgJy1VU1IxJywgc3RyKHBpZCldKQotICAgICAgICAgICAgIyBUaGlzIHdhaXQgc2hvdWxkIGJlIGludGVycnVwdGVkIGJ5IHRoZSBzaWduYWwncyBleGNlcHRpb24uCi0gICAgICAgICAgICBzZWxmLndhaXQoY2hpbGQpCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpICAjIEdpdmUgdGhlIHNpZ25hbCB0aW1lIHRvIGJlIGRlbGl2ZXJlZC4KLSAgICAgICAgICAgIHNlbGYuZmFpbCgnSGFuZGxlckJDYWxsZWQgZXhjZXB0aW9uIG5vdCByYWlzZWQnKQotICAgICAgICBleGNlcHQgSGFuZGxlckJDYWxsZWQ6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5iX2NhbGxlZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hX2NhbGxlZCkKLQotICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctVVNSMicsIHN0cihwaWQpXSkKLSAgICAgICAgaWYgY2hpbGQ6Ci0gICAgICAgICAgICBzZWxmLndhaXQoY2hpbGQpICAjIE5vdGhpbmcgc2hvdWxkIGhhcHBlbi4KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICMgVGhlIHJhY2UgY29uZGl0aW9uIGluIHBhdXNlIGRvZXNuJ3QgbWF0dGVyIGluIHRoaXMgY2FzZSwKLSAgICAgICAgICAgICMgc2luY2UgYWxhcm0gaXMgZ29pbmcgdG8gcmFpc2UgYSBLZXlib2FyZEV4Y2VwdGlvbiwgd2hpY2gKLSAgICAgICAgICAgICMgd2lsbCBza2lwIHRoZSBjYWxsLgotICAgICAgICAgICAgc2lnbmFsLnBhdXNlKCkKLSAgICAgICAgICAgICMgQnV0IGlmIGFub3RoZXIgc2lnbmFsIGFycml2ZXMgYmVmb3JlIHRoZSBhbGFybSwgcGF1c2UKLSAgICAgICAgICAgICMgbWF5IHJldHVybiBlYXJseS4KLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlNvbWUgb3RoZXIgZXhjZXB0aW9uIHdva2UgdXMgZnJvbSBwYXVzZTogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJwYXVzZSByZXR1cm5lZCBvZiBpdHMgb3duIGFjY29yZCwgYW5kIHRoZSBzaWduYWwiCi0gICAgICAgICAgICAgICAgICAgICAgIiBkaWRuJ3QgYXJyaXZlIGFmdGVyIGFub3RoZXIgc2Vjb25kLiIpCi0KLSAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm09PSdmcmVlYnNkNicsCi0gICAgICAgICdpbnRlciBwcm9jZXNzIHNpZ25hbHMgbm90IHJlbGlhYmxlIChkbyBub3QgbWl4IHdlbGwgd2l0aCB0aHJlYWRpbmcpICcKLSAgICAgICAgJ29uIGZyZWVic2Q2JykKLSAgICBkZWYgdGVzdF9tYWluKHNlbGYpOgotICAgICAgICAjIFRoaXMgZnVuY3Rpb24gc3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB0byBpbnN1bGF0ZSB0aGUgbWFpbgotICAgICAgICAjIHRlc3QtcnVubmluZyBwcm9jZXNzIGZyb20gYWxsIHRoZSBzaWduYWxzLiBJdCB0aGVuCi0gICAgICAgICMgY29tbXVuaWNhdGVzIHdpdGggdGhhdCBjaGlsZCBwcm9jZXNzIG92ZXIgYSBwaXBlIGFuZAotICAgICAgICAjIHJlLXJhaXNlcyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgZXhjZXB0aW9ucyB0aGUgY2hpbGQKLSAgICAgICAgIyByYWlzZXMuIFRoZSByZWFsIHdvcmsgaGFwcGVucyBpbiBzZWxmLnJ1bl90ZXN0KCkuCi0gICAgICAgIG9zX2RvbmVfciwgb3NfZG9uZV93ID0gb3MucGlwZSgpCi0gICAgICAgIHdpdGggY2xvc2luZyhvcy5mZG9wZW4ob3NfZG9uZV9yLCAncmInKSkgYXMgZG9uZV9yLCBcCi0gICAgICAgICAgICAgY2xvc2luZyhvcy5mZG9wZW4ob3NfZG9uZV93LCAnd2InKSkgYXMgZG9uZV93OgotICAgICAgICAgICAgY2hpbGQgPSBvcy5mb3JrKCkKLSAgICAgICAgICAgIGlmIGNoaWxkID09IDA6Ci0gICAgICAgICAgICAgICAgIyBJbiB0aGUgY2hpbGQgcHJvY2VzczsgcnVuIHRoZSB0ZXN0IGFuZCByZXBvcnQgcmVzdWx0cwotICAgICAgICAgICAgICAgICMgdGhyb3VnaCB0aGUgcGlwZS4KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGRvbmVfci5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICMgSGF2ZSB0byBjbG9zZSBkb25lX3cgYWdhaW4gaGVyZSBiZWNhdXNlCi0gICAgICAgICAgICAgICAgICAgICMgZXhpdF9zdWJwcm9jZXNzKCkgd2lsbCBza2lwIHRoZSBlbmNsb3Npbmcgd2l0aCBibG9jay4KLSAgICAgICAgICAgICAgICAgICAgd2l0aCBjbG9zaW5nKGRvbmVfdyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5fdGVzdCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAodHJhY2ViYWNrLmZvcm1hdF9leGMoKSwgZG9uZV93KQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcChOb25lLCBkb25lX3cpCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICBwcmludCgnVWggb2gsIHJhaXNlZCBmcm9tIHBpY2tsZS4nKQotICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBleGl0X3N1YnByb2Nlc3MoKQotCi0gICAgICAgICAgICBkb25lX3cuY2xvc2UoKQotICAgICAgICAgICAgIyBCbG9jayBmb3IgdXAgdG8gTUFYX0RVUkFUSU9OIHNlY29uZHMgZm9yIHRoZSB0ZXN0IHRvIGZpbmlzaC4KLSAgICAgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtkb25lX3JdLCBbXSwgW10sIHNlbGYuTUFYX0RVUkFUSU9OKQotICAgICAgICAgICAgaWYgZG9uZV9yIGluIHI6Ci0gICAgICAgICAgICAgICAgdGIgPSBwaWNrbGUubG9hZChkb25lX3IpCi0gICAgICAgICAgICAgICAgaWYgdGI6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCh0YikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3Mua2lsbChjaGlsZCwgc2lnbmFsLlNJR0tJTEwpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdUZXN0IGRlYWRsb2NrZWQgYWZ0ZXIgJWQgc2Vjb25kcy4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5NQVhfRFVSQVRJT04pCi0KLQotQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIFBvc2l4VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0cml2aWFsX3NpZ25hbF9oYW5kbGVyKHNlbGYsICphcmdzKToKICAgICAgICAgcGFzcwpAQCAtMjI0LDYgKzYyLDE1IEBACiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgaHVwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0hVUCksIGh1cCkKIAorICAgICMgSXNzdWUgMzg2NCwgdW5rbm93biBpZiB0aGlzIGFmZmVjdHMgZWFybGllciB2ZXJzaW9ucyBvZiBmcmVlYnNkIGFsc28KKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybT09J2ZyZWVic2Q2JywKKyAgICAgICAgJ2ludGVyIHByb2Nlc3Mgc2lnbmFscyBub3QgcmVsaWFibGUgKGRvIG5vdCBtaXggd2VsbCB3aXRoIHRocmVhZGluZykgJworICAgICAgICAnb24gZnJlZWJzZDYnKQorICAgIGRlZiB0ZXN0X2ludGVycHJvY2Vzc19zaWduYWwoc2VsZik6CisgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5JykKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vayhzY3JpcHQpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIHNwZWNpZmljIikKIGNsYXNzIFdpbmRvd3NTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKaW5kZXggZGEyMGEzZC4uZDJmYmI3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQpAQCAtNzUsNyArNzUsNyBAQAogICAgIGRlZiB0ZXN0X2luaXRfcGF0aGluZm8oc2VsZik6CiAgICAgICAgIGRpcl9zZXQgPSBzaXRlLl9pbml0X3BhdGhpbmZvKCkKICAgICAgICAgZm9yIGVudHJ5IGluIFtzaXRlLm1ha2VwYXRoKHBhdGgpWzFdIGZvciBwYXRoIGluIHN5cy5wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggYW5kIG9zLnBhdGguZXhpc3RzKHBhdGgpXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZW50cnksIGRpcl9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBmcm9tIHN5cy5wYXRoIG5vdCBmb3VuZCBpbiBzZXQgcmV0dXJuZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiYnkgX2luaXRfcGF0aGluZm8oKTogJXMiICUgKGVudHJ5LCBkaXJfc2V0KSkKQEAgLTEzOCwxMCArMTM4LDggQEAKICAgICAgICAgICAgIHJlLmVzY2FwZShvcy5wYXRoLmpvaW4ocHRoX2RpciwgcHRoX2ZuKSkpCiAgICAgICAgICMgWFhYOiBkaXR0byBwcmV2aW91cyBYWFggY29tbWVudC4KICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdUcmFjZWJhY2snKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ0ltcG9ydEVycm9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdNb2R1bGVOb3RGb3VuZEVycm9yJykKIAotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIGRvZXMgbm90IHJhaXNlIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgZm9yIGZpbGUgcGF0aHMgY29udGFpbmluZyBudWxsIGNoYXJhY3RlcnMiKQogICAgIGRlZiB0ZXN0X2FkZHBhY2thZ2VfaW1wb3J0X2JhZF9wdGhfZmlsZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSA1MjU4CiAgICAgICAgIHB0aF9kaXIsIHB0aF9mbiA9IHNlbGYubWFrZV9wdGgoImFiY1x4MDBkZWZcbiIpCkBAIC0yNDMsMTMgKzI0MSwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCiAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJy9MaWJyYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzFdLCB3YW50ZWQpCiAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgICMgT1MgWCBub24tZnJhbXdld29yayBidWlsZHMsIExpbnV4LCBGcmVlQlNELCBldGMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAxKQotICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdweXRob24nICsgc3lzLnZlcnNpb25bOjNdLAorICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQogICAgICAgICBlbHNlOgpAQCAtNDQ2LDEwICs0NDUsOSBAQAogICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAnLUknLCAnLXYnLCAnLWMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBwcmludChzZXQoc3lzLm1vZHVsZXMpKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JykKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHN0ZG91dCA9IHN0ZG91dC5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgc3RkZXJyID0gc3RkZXJyLmRlY29kZSgndXRmLTgnKQogICAgICAgICBtb2R1bGVzID0gZXZhbChzdGRvdXQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRJbignc2l0ZScsIG1vZHVsZXMpCkBAIC00NjksNyArNDY3LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVhcHEnLCAnaXRlcnRvb2xzJywgJ2tleXdvcmQnLCAnb3BlcmF0b3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcHJsaWInLCAndHlwZXMnLCAnd2Vha3JlZicKICAgICAgICAgICAgICAgICAgICAgICAgICAgfS5kaWZmZXJlbmNlKHN5cy5idWlsdGluX21vZHVsZV9uYW1lcykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2R1bGVzLmludGVyc2VjdGlvbihjb2xsZWN0aW9uX21vZHMpLCBzdGRlcnIpCisgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI4MDk1CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlcy5pbnRlcnNlY3Rpb24oY29sbGVjdGlvbl9tb2RzKSwgc3RkZXJyKQorCisgICAgZGVmIHRlc3Rfc3RhcnR1cF9pbnRlcmFjdGl2ZWhvb2soc2VsZik6CisgICAgICAgIHIgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1jJywKKyAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLCAiJ19faW50ZXJhY3RpdmVob29rX18nIG5vdCBhZGRlZCBieSBzaXRlIikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rX2lzb2xhdGVkKHNlbGYpOgorICAgICAgICAjIGlzc3VlMjgxOTIgcmVhZGxpbmUgaXMgbm90IGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBpbiBpc29sYXRlZCBtb2RlCisgICAgICAgIHIgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy1jJywKKyAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UociwgIidfX2ludGVyYWN0aXZlaG9va19fJyBhZGRlZCBpbiBpc29sYXRlZCBtb2RlIikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rX2lzb2xhdGVkX2V4cGxpY2l0KHNlbGYpOgorICAgICAgICAjIGlzc3VlMjgxOTIgcmVhZGxpbmUgY2FuIGJlIGV4cGxpY2l0bHkgZW5hYmxlZCBpbiBpc29sYXRlZCBtb2RlCisgICAgICAgIHIgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy1jJywKKyAgICAgICAgICAgICdpbXBvcnQgc2l0ZSwgc3lzOyBzaXRlLmVuYWJsZXJsY29tcGxldGVyKCk7IHN5cy5leGl0KGhhc2F0dHIoc3lzLCAiX19pbnRlcmFjdGl2ZWhvb2tfXyIpKSddKS53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIsICInX19pbnRlcmFjdGl2ZWhvb2tfXycgbm90IGFkZGVkIGJ5IGVuYWJsZXJsY29tcGxldGVyKCkiKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQppbmRleCA4OGRiZmRmLi4zZWViZTk0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKQEAgLTUzLDEwICs1Myw2IEBACiAgICAgICAgIHdyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgd3JpdGVfbGluZSwgYidzcGFtXHJcbi5cclxuJykKIAotICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2RlZmF1bHRfd2FybnMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCi0KICAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9hbmRfZW5hYmxlX1NNVFBVVEY4X3JhaXNlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBWYWx1ZUVycm9yLApAQCAtMTA4LDEwICsxMDQsOSBAQAogICAgICAgICAgICAgICIiIikpCiAKICAgICBkZWYgdGVzdF9wcm9jZXNzX21lc3NhZ2Vfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKLSAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKICAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oXHhjM1x4YTlsbG9ceGZmXG4nKQogICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKQEAgLTE3NSwxMyArMTcwLDExIEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgIklQdjYgbm90IGVuYWJsZWQiKQogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjYoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUNikKIAogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjQoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUKQogCiAKQEAgLTIwNCwxOCArMTk3LDE4IEBACiAgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQogCiAgICAgZGVmIHRlc3RfcGFyYW1zX3JlamVjdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+IGZvbz1iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCiAKICAgICBkZWYgdGVzdF9ub3RoaW5nX2FjY2VwdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+JykKQEAgLTI1Nyw5ICsyNTAsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAKICAgICBkZWYgdGVzdF93aXRoX2RlY29kZV9kYXRhX2ZhbHNlKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIGZvciBsaW5lIGluIFsKICAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4JywKQEAgLTc2NSwxMyArNzU4LDYgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19hZGRyID0gJ3NwYW0nCiAKLSAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQotICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCiBjbGFzcyBTTVRQRENoYW5uZWxJUHY2VGVzdChTTVRQRENoYW5uZWxUZXN0KToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC04NDUsMTIgKzgzMSw5IEBACiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KICAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQotICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQotICAgICAgICAjIFNldCBkZWNvZGVfZGF0YSB0byBGYWxzZQotICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKLSAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCkBAIC0xMDE1LDUgKzk5OCwxNiBAQAogICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndGVzdFxyXG4uJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geworICAgICAgICAgICAgInByb2dyYW0iLCAiRGV2bnVsbCIsICJERUJVR1NUUkVBTSIsICJORVdMSU5FIiwgIkNPTU1BU1BBQ0UiLAorICAgICAgICAgICAgIkRBVEFfU0laRV9ERUZBVUxUIiwgInVzYWdlIiwgIk9wdGlvbnMiLCAicGFyc2VhcmdzIiwKKworICAgICAgICB9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHNtdHBkLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IGM1OTc1YzguLjQxYzIwNmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0xMyw3ICsxMyw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBhcnJheQotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgY29udGV4dGxpYgogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQogaW1wb3J0IHNpZ25hbApAQCAtNjYsMTAgKzY1LDIyIEBACiAgICAgICAgIHMuY2xvc2UoKQogICAgIHJldHVybiBUcnVlCiAKK2RlZiBfaGF2ZV9zb2NrZXRfYWxnKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBBRl9BTEcgc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKwogSEFWRV9TT0NLRVRfQ0FOID0gX2hhdmVfc29ja2V0X2NhbigpCiAKIEhBVkVfU09DS0VUX1JEUyA9IF9oYXZlX3NvY2tldF9yZHMoKQogCitIQVZFX1NPQ0tFVF9BTEcgPSBfaGF2ZV9zb2NrZXRfYWxnKCkKKwogIyBTaXplIGluIGJ5dGVzIG9mIHRoZSBpbnQgdHlwZQogU0laRU9GX0lOVCA9IGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUKIApAQCAtMTE2MSw2ICsxMTcyLDE3IEBACiAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzb2NrLnNlbmQsIGIic3BhbSIpCiAKKyAgICBkZWYgdGVzdENsb3NlRXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNvY2tldC5zb2NrZXQoZmlsZW5vPXNvY2suZmlsZW5vKCkpLmNsb3NlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICMgV2luc29jayBhcHBhcmVudGx5IHJhaXNlcyBFTk9UU09DSworICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlcnIuZXJybm8sIChlcnJuby5FQkFERiwgZXJybm8uRU5PVFNPQ0spKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJjbG9zZSgpIHNob3VsZCByYWlzZSBFQkFERi9FTk9UU09DSyIpCisKICAgICBkZWYgdGVzdE5ld0F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgICMgdGVzdGluZyAuZmFtaWx5LCAudHlwZSBhbmQgLnByb3RvY29sCiAKQEAgLTEyMDcsNiArMTIyOSwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzLmlvY3RsLCAtMSwgTm9uZSkKICAgICAgICAgcy5pb2N0bChzb2NrZXQuU0lPX0tFRVBBTElWRV9WQUxTLCAoMSwgMTAwLCAxMDApKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLCAiV2luZG93cyBzcGVjaWZpYyIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0xvb3BiYWNrIGZhc3QgcGF0aCBzdXBwb3J0IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQorICAgIGRlZiB0ZXN0X3Npb19sb29wYmFja19mYXN0X3BhdGgoc2VsZik6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMuaW9jdGwoc29ja2V0LlNJT19MT09QQkFDS19GQVNUX1BBVEgsIFRydWUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIFdTQUVPUE5PVFNVUFAgPSAxMDA0NQorICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yID09IFdTQUVPUE5PVFNVUFA6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCBpcyBkZWZpbmVkIGJ1dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lc24ndCBpbXBsZW1lbnRlZCBpbiB0aGlzIFdpbmRvd3MgdmVyc2lvbiIpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHMuaW9jdGwsIHNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRILCBOb25lKQorCiAgICAgZGVmIHRlc3RHZXRhZGRyaW5mbyhzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCdsb2NhbGhvc3QnLCA4MCkKQEAgLTI4NDIsNiArMjg4MCw3IEBACiAgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcihbbXNnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihtc2cpKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gImRhcndpbiIsICJzZWUgaXNzdWUgIzI0NzI1IikKICAgICBkZWYgdGVzdEZEUGFzc0VtcHR5KHNlbGYpOgogICAgICAgICAjIFRyeSB0byBwYXNzIGFuIGVtcHR5IEZEIGFycmF5LiAgQ2FuIHJlY2VpdmUgZWl0aGVyIG5vIGFycmF5CiAgICAgICAgICMgb3IgYW4gZW1wdHkgYXJyYXkuCkBAIC01MzE4LDYgKzUzNTcsMTgzIEBACiAgICAgICAgIHJldHVybiBnZXRhdHRyKHNvY2ssICJfc2VuZGZpbGVfdXNlX3NlbmRmaWxlIikKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9BTEcsICdBRl9BTEcgcmVxdWlyZWQnKQorY2xhc3MgTGludXhLZXJuZWxDcnlwdG9BUEkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdGVzdHMgZm9yIEFGX0FMRworICAgIGRlZiBjcmVhdGVfYWxnKHNlbGYsIHR5cCwgbmFtZSk6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29jay5iaW5kKCh0eXAsIG5hbWUpKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgdHlwZSAvIGFsZ29yaXRobSBpcyBub3QgYXZhaWxhYmxlCisgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KHN0cihlKSwgdHlwLCBuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNvY2sKKworICAgIGRlZiB0ZXN0X3NoYTI1NihzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBieXRlcy5mcm9taGV4KCJiYTc4MTZiZjhmMDFjZmVhNDE0MTQwZGU1ZGFlMjIyM2IwMDM2MWEzOTYiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTc3YTljYjQxMGZmNjFmMjAwMTVhZCIpCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdoYXNoJywgJ3NoYTI1NicpIGFzIGFsZ286CisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChiImFiYyIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KDUxMiksIGV4cGVjdGVkKQorCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZChiJ2EnLCBzb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZChiJ2InLCBzb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZChiJ2MnLCBzb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZChiJycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KDUxMiksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfaG1hY19zaGExKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IGJ5dGVzLmZyb21oZXgoImVmZmNkZjZhZTVlYjJmYTJkMjc0MTZkNWYxODRkZjljMjU5YTdjNzkiKQorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnaGFzaCcsICdobWFjKHNoYTEpJykgYXMgYWxnbzoKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfS0VZLCBiIkplZmUiKQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYiJ3aGF0IGRvIHlhIHdhbnQgZm9yIG5vdGhpbmc/IikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YoNTEyKSwgZXhwZWN0ZWQpCisKKyAgICAjIEFsdGhvdWdoIGl0IHNob3VsZCB3b3JrIHdpdGggMy4xOSBhbmQgbmV3ZXIgdGhlIHRlc3QgYmxvY2tzIG9uCisgICAgIyBVYnVudHUgMTUuMTAgd2l0aCBLZXJuZWwgNC4yLjAtMTkuCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbig0LCAzKQorICAgIGRlZiB0ZXN0X2Flc19jYmMoc2VsZik6CisgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoJzA2YTkyMTQwMzZiOGExNWI1MTJlMDNkNTM0MTIwMDA2JykKKyAgICAgICAgaXYgPSBieXRlcy5mcm9taGV4KCczZGFmYmE0MjlkOWViNDMwYjQyMmRhODAyYzlmYWM0MScpCisgICAgICAgIG1zZyA9IGIiU2luZ2xlIGJsb2NrIG1zZyIKKyAgICAgICAgY2lwaGVydGV4dCA9IGJ5dGVzLmZyb21oZXgoJ2UzNTM3NzljMTA3OWFlYjgyNzA4OTQyZGJlNzcxODFhJykKKyAgICAgICAgbXNnbGVuID0gbGVuKG1zZykKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ3NrY2lwaGVyJywgJ2NiYyhhZXMpJykgYXMgYWxnbzoKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfS0VZLCBrZXkpCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9c29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwobXNnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdihtc2dsZW4pLCBjaXBoZXJ0ZXh0KQorCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbY2lwaGVydGV4dF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcD1zb2NrZXQuQUxHX09QX0RFQ1JZUFQsIGl2PWl2KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdihtc2dsZW4pLCBtc2cpCisKKyAgICAgICAgICAgICMgbG9uZyBtZXNzYWdlCisgICAgICAgICAgICBtdWx0aXBsaWVyID0gMTAyNAorICAgICAgICAgICAgbG9uZ21zZyA9IFttc2ddICogbXVsdGlwbGllcgorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcobG9uZ21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgaXY9aXYpCisgICAgICAgICAgICAgICAgZW5jID0gb3AucmVjdihtc2dsZW4gKiBtdWx0aXBsaWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW5jKSwgbXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbmNbOm1zZ2xlbl0sIGNpcGhlcnRleHQpCisKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFtlbmNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A9c29ja2V0LkFMR19PUF9ERUNSWVBULCBpdj1pdikKKyAgICAgICAgICAgICAgICBkZWMgPSBvcC5yZWN2KG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkZWMpLCBtc2dsZW4gKiBtdWx0aXBsaWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWMsIG1zZyAqIG11bHRpcGxpZXIpCisKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDQsIDMpICAjIHNlZSB0ZXN0X2Flc19jYmMKKyAgICBkZWYgdGVzdF9hZWFkX2Flc19nY20oc2VsZik6CisgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoJ2M5MzljYzEzMzk3YzFkMzdkZTZhZTBlMWNiN2M0MjNjJykKKyAgICAgICAgaXYgPSBieXRlcy5mcm9taGV4KCdiM2Q4Y2MwMTdjYmI4OWIzOWUwZjY3ZTInKQorICAgICAgICBwbGFpbiA9IGJ5dGVzLmZyb21oZXgoJ2MzYjNjNDFmMTEzYTMxYjczZDlhNWNkNDMyMTAzMDY5JykKKyAgICAgICAgYXNzb2MgPSBieXRlcy5mcm9taGV4KCcyNDgyNTYwMmJkMTJhOTg0ZTAwOTJkM2U0NDhlZGE1ZicpCisgICAgICAgIGV4cGVjdGVkX2N0ID0gYnl0ZXMuZnJvbWhleCgnOTNmZTdkOWU5YmZkMTAzNDhhNTYwNmU1Y2FmYTczNTQnKQorICAgICAgICBleHBlY3RlZF90YWcgPSBieXRlcy5mcm9taGV4KCcwMDMyYTFkYzg1ZjFjOTc4NjkyNWEyZTcxZDgyNzJkZCcpCisKKyAgICAgICAgdGFnbGVuID0gbGVuKGV4cGVjdGVkX3RhZykKKyAgICAgICAgYXNzb2NsZW4gPSBsZW4oYXNzb2MpCisKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ2FlYWQnLCAnZ2NtKGFlcyknKSBhcyBhbGdvOgorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGtleSkKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfQUVBRF9BVVRIU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCB0YWdsZW4pCisKKyAgICAgICAgICAgICMgc2VuZCBhc3NvYywgcGxhaW4gYW5kIHRhZyBidWZmZXIgaW4gc2VwYXJhdGUgc3RlcHMKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgaXY9aXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2xlbj1hc3NvY2xlbiwgZmxhZ3M9c29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYXNzb2MsIHNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKHBsYWluLCBzb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChiJ1x4MDAnICogdGFnbGVuKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YoYXNzb2NsZW4gKyBsZW4ocGxhaW4pICsgdGFnbGVuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfY3QsIHJlc1thc3NvY2xlbjotdGFnbGVuXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RhZywgcmVzWy10YWdsZW46XSkKKworICAgICAgICAgICAgIyBub3cgd2l0aCBtc2cKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBtc2cgPSBhc3NvYyArIHBsYWluICsgYidceDAwJyAqIHRhZ2xlbgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcoW21zZ10sIG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgaXY9aXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2xlbj1hc3NvY2xlbikKKyAgICAgICAgICAgICAgICByZXMgPSBvcC5yZWN2KGFzc29jbGVuICsgbGVuKHBsYWluKSArIHRhZ2xlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2N0LCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90YWcsIHJlc1stdGFnbGVuOl0pCisKKyAgICAgICAgICAgICMgY3JlYXRlIGFuYyBkYXRhIG1hbnVhbGx5CisgICAgICAgICAgICBwYWNrX3VpbnQzMiA9IHN0cnVjdC5TdHJ1Y3QoJ0knKS5wYWNrCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgbXNnID0gYXNzb2MgKyBwbGFpbiArIGInXHgwMCcgKiB0YWdsZW4KKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnKAorICAgICAgICAgICAgICAgICAgICBbbXNnXSwKKyAgICAgICAgICAgICAgICAgICAgKFtzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfT1AsIHBhY2tfdWludDMyKHNvY2tldC5BTEdfT1BfRU5DUllQVCldLAorICAgICAgICAgICAgICAgICAgICAgW3NvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9JViwgcGFja191aW50MzIobGVuKGl2KSkgKyBpdl0sCisgICAgICAgICAgICAgICAgICAgICBbc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0FFQURfQVNTT0NMRU4sIHBhY2tfdWludDMyKGFzc29jbGVuKV0sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihsZW4obXNnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2N0LCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90YWcsIHJlc1stdGFnbGVuOl0pCisKKyAgICAgICAgICAgICMgZGVjcnlwdCBhbmQgdmVyaWZ5CisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgbXNnID0gYXNzb2MgKyBleHBlY3RlZF9jdCArIGV4cGVjdGVkX3RhZworICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcoW21zZ10sIG9wPXNvY2tldC5BTEdfT1BfREVDUllQVCwgaXY9aXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2xlbj1hc3NvY2xlbikKKyAgICAgICAgICAgICAgICByZXMgPSBvcC5yZWN2KGxlbihtc2cpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW4sIHJlc1thc3NvY2xlbjotdGFnbGVuXSkKKworICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oNCwgMykgICMgc2VlIHRlc3RfYWVzX2NiYworICAgIGRlZiB0ZXN0X2RyYmdfcHJfc2hhMjU2KHNlbGYpOgorICAgICAgICAjIGRldGVybWluaXN0aWMgcmFuZG9tIGJpdCBnZW5lcmF0b3IsIHByZWRpY3Rpb24gcmVzaXN0YW5jZSwgc2hhMjU2CisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdybmcnLCAnZHJiZ19wcl9zaGEyNTYnKSBhcyBhbGdvOgorICAgICAgICAgICAgZXh0cmFfc2VlZCA9IG9zLnVyYW5kb20oMzIpCisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwgZXh0cmFfc2VlZCkKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBybiA9IG9wLnJlY3YoMzIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocm4pLCAzMikKKworICAgIGRlZiB0ZXN0X3NlbmRtc2dfYWZhbGdfYXJncyhzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0FMRywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgICAgICB3aXRoIHNvY2s6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZyhvcD1Ob25lKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKDEpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBhc3NvY2xlbj1Ob25lKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgYXNzb2NsZW49LTEpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW0dlbmVyYWxNb2R1bGVUZXN0cywgQmFzaWNUQ1BUZXN0LCBUQ1BDbG9zZXJUZXN0LCBUQ1BUaW1lb3V0VGVzdCwKICAgICAgICAgICAgICBUZXN0RXhjZXB0aW9ucywgQnVmZmVySU9UZXN0LCBCYXNpY1RDUFRlc3QyLCBCYXNpY1VEUFRlc3QsIFVEUFRpbWVvdXRUZXN0IF0KQEAgLTUzNDQsNiArNTU2MCw3IEBACiAgICAgdGVzdHMuZXh0ZW5kKFtUSVBDVGVzdCwgVElQQ1RocmVhZGFibGVUZXN0XSkKICAgICB0ZXN0cy5leHRlbmQoW0Jhc2ljQ0FOVGVzdCwgQ0FOVGVzdF0pCiAgICAgdGVzdHMuZXh0ZW5kKFtCYXNpY1JEU1Rlc3QsIFJEU1Rlc3RdKQorICAgIHRlc3RzLmFwcGVuZChMaW51eEtlcm5lbENyeXB0b0FQSSkKICAgICB0ZXN0cy5leHRlbmQoWwogICAgICAgICBDbXNnTWFjcm9UZXN0cywKICAgICAgICAgU2VuZG1zZ1VEUFRlc3QsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5CmluZGV4IDBkMGY4NmYuLjE0MGE2YWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5CkBAIC0zLDEyICszLDExIEBACiAiIiIKIAogaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc2VsZWN0Ci1pbXBvcnQgZXJybm8KIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc29ja2V0c2VydmVyCkBAIC00Niw3ICs0NSw3IEBACiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ0aW1lZCBvdXQgb24gJXIiICUgKHNvY2ssKSkKIAotaWYgSEFWRV9VTklYX1NPQ0tFVFM6CitpZiBIQVZFX1VOSVhfU09DS0VUUyBhbmQgSEFWRV9GT1JLSU5HOgogICAgIGNsYXNzIEZvcmtpbmdVbml4U3RyZWFtU2VydmVyKHNvY2tldHNlcnZlci5Gb3JraW5nTWl4SW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLlVuaXhTdHJlYW1TZXJ2ZXIpOgogICAgICAgICBwYXNzCkBAIC01OCw2ICs1Nyw3IEBACiAKIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgc2ltcGxlX3N1YnByb2Nlc3ModGVzdGNhc2UpOgorICAgICIiIlRlc3RzIHRoYXQgYSBjdXN0b20gY2hpbGQgcHJvY2VzcyBpcyBub3Qgd2FpdGVkIG9uIChJc3N1ZSAxNTQwMzg2KSIiIgogICAgIHBpZCA9IG9zLmZvcmsoKQogICAgIGlmIHBpZCA9PSAwOgogICAgICAgICAjIERvbid0IHJhaXNlIGFuIGV4Y2VwdGlvbjsgaXQgd291bGQgYmUgY2F1Z2h0IGJ5IHRoZSB0ZXN0IGhhcm5lc3MuCkBAIC0xMDMsNyArMTAzLDYgQEAKICAgICAgICAgY2xhc3MgTXlTZXJ2ZXIoc3ZyY2xzKToKICAgICAgICAgICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIGNsYXNzIE15SGFuZGxlcihoZGxyYmFzZSk6CkBAIC0yNzksNiArMjc4LDE4MiBAQAogICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIC0xKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcikKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBzZXJ2ZXIuc29ja2V0LmZpbGVubygpKQorCisKK2NsYXNzIEVycm9ySGFuZGxlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3QgdGhhdCB0aGUgc2VydmVycyBwYXNzIG5vcm1hbCBleGNlcHRpb25zIGZyb20gdGhlIGhhbmRsZXIgdG8KKyAgICBoYW5kbGVfZXJyb3IoKSwgYW5kIHRoYXQgZXhpdGluZyBleGNlcHRpb25zIGxpa2UgU3lzdGVtRXhpdCBhbmQKKyAgICBLZXlib2FyZEludGVycnVwdCBhcmUgbm90IHBhc3NlZC4iIiIKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayh0ZXN0LnN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfc3luY19oYW5kbGVkKHNlbGYpOgorICAgICAgICBCYXNlRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3N5bmNfbm90X2hhbmRsZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCk6CisgICAgICAgICAgICBCYXNlRXJyb3JUZXN0U2VydmVyKFN5c3RlbUV4aXQpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9RmFsc2UpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3RocmVhZGluZ19oYW5kbGVkKHNlbGYpOgorICAgICAgICBUaHJlYWRpbmdFcnJvclRlc3RTZXJ2ZXIoVmFsdWVFcnJvcikKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1UcnVlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF90aHJlYWRpbmdfbm90X2hhbmRsZWQoc2VsZik6CisgICAgICAgIFRocmVhZGluZ0Vycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgQHJlcXVpcmVzX2ZvcmtpbmcKKyAgICBkZWYgdGVzdF9mb3JraW5nX2hhbmRsZWQoc2VsZik6CisgICAgICAgIEZvcmtpbmdFcnJvclRlc3RTZXJ2ZXIoVmFsdWVFcnJvcikKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1UcnVlKQorCisgICAgQHJlcXVpcmVzX2ZvcmtpbmcKKyAgICBkZWYgdGVzdF9mb3JraW5nX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICBGb3JraW5nRXJyb3JUZXN0U2VydmVyKFN5c3RlbUV4aXQpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9RmFsc2UpCisKKyAgICBkZWYgY2hlY2tfcmVzdWx0KHNlbGYsIGhhbmRsZWQpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTikgYXMgbG9nOgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAnSGFuZGxlciBjYWxsZWRcbicgKyAnRXJyb3IgaGFuZGxlZFxuJyAqIGhhbmRsZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nLnJlYWQoKSwgZXhwZWN0ZWQpCisKKworY2xhc3MgQmFzZUVycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjZXB0aW9uKToKKyAgICAgICAgc2VsZi5leGNlcHRpb24gPSBleGNlcHRpb24KKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygoSE9TVCwgMCksIEJhZEhhbmRsZXIpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKHNlbGYuc2VydmVyX2FkZHJlc3MpOgorICAgICAgICAgICAgcGFzcworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmhhbmRsZV9yZXF1ZXN0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgc2VsZi53YWl0X2RvbmUoKQorCisgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CisgICAgICAgIHdpdGggb3Blbih0ZXN0LnN1cHBvcnQuVEVTVEZOLCAnYScpIGFzIGxvZzoKKyAgICAgICAgICAgIGxvZy53cml0ZSgnRXJyb3IgaGFuZGxlZFxuJykKKworICAgIGRlZiB3YWl0X2RvbmUoc2VsZik6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBCYWRIYW5kbGVyKHNvY2tldHNlcnZlci5CYXNlUmVxdWVzdEhhbmRsZXIpOgorICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgIHdpdGggb3Blbih0ZXN0LnN1cHBvcnQuVEVTVEZOLCAnYScpIGFzIGxvZzoKKyAgICAgICAgICAgIGxvZy53cml0ZSgnSGFuZGxlciBjYWxsZWRcbicpCisgICAgICAgIHJhaXNlIHNlbGYuc2VydmVyLmV4Y2VwdGlvbignVGVzdCBlcnJvcicpCisKKworY2xhc3MgVGhyZWFkaW5nRXJyb3JUZXN0U2VydmVyKHNvY2tldHNlcnZlci5UaHJlYWRpbmdNaXhJbiwKKyAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICpwb3MsICoqa3cpOgorICAgICAgICBzZWxmLmRvbmUgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCpwb3MsICoqa3cpCisKKyAgICBkZWYgc2h1dGRvd25fcmVxdWVzdChzZWxmLCAqcG9zLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5zaHV0ZG93bl9yZXF1ZXN0KCpwb3MsICoqa3cpCisgICAgICAgIHNlbGYuZG9uZS5zZXQoKQorCisgICAgZGVmIHdhaXRfZG9uZShzZWxmKToKKyAgICAgICAgc2VsZi5kb25lLndhaXQoKQorCisKK2lmIEhBVkVfRk9SS0lORzoKKyAgICBjbGFzcyBGb3JraW5nRXJyb3JUZXN0U2VydmVyKHNvY2tldHNlcnZlci5Gb3JraW5nTWl4SW4sIEJhc2VFcnJvclRlc3RTZXJ2ZXIpOgorICAgICAgICBkZWYgd2FpdF9kb25lKHNlbGYpOgorICAgICAgICAgICAgW2NoaWxkXSA9IHNlbGYuYWN0aXZlX2NoaWxkcmVuCisgICAgICAgICAgICBvcy53YWl0cGlkKGNoaWxkLCAwKQorICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uY2xlYXIoKQorCisKK2NsYXNzIFNvY2tldFdyaXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgY2xhc3MgSGFuZGxlcihzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICAgICAgZGVmIGhhbmRsZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci53ZmlsZSA9IHNlbGYud2ZpbGUKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci53ZmlsZV9maWxlbm8gPSBzZWxmLndmaWxlLmZpbGVubygpCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucmVxdWVzdF9maWxlbm8gPSBzZWxmLnJlcXVlc3QuZmlsZW5vKCkKKworICAgICAgICBzZXJ2ZXIgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCAwKSwgSGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlcnZlci5zZXJ2ZXJfY2xvc2UpCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KAorICAgICAgICAgICAgc2VydmVyLmFkZHJlc3NfZmFtaWx5LCBzb2NrZXQuU09DS19TVFJFQU0sIHNvY2tldC5JUFBST1RPX1RDUCkKKyAgICAgICAgd2l0aCBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlcnZlci5zZXJ2ZXJfYWRkcmVzcykKKyAgICAgICAgc2VydmVyLmhhbmRsZV9yZXF1ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlcnZlci53ZmlsZSwgaW8uQnVmZmVyZWRJT0Jhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLndmaWxlX2ZpbGVubywgc2VydmVyLnJlcXVlc3RfZmlsZW5vKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2ZpbGUud3JpdGUoKSBzZW5kcyBkYXRhIGltbWVkaWF0ZWx5LCBhbmQgdGhhdCBpdCBkb2VzCisgICAgICAgICMgbm90IHRydW5jYXRlIHNlbmRzIHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBVbml4IHNpZ25hbAorICAgICAgICBwdGhyZWFkX2tpbGwgPSB0ZXN0LnN1cHBvcnQuZ2V0X2F0dHJpYnV0ZShzaWduYWwsICdwdGhyZWFkX2tpbGwnKQorCisgICAgICAgIGNsYXNzIEhhbmRsZXIoc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKToKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VudDEgPSBzZWxmLndmaWxlLndyaXRlKGInd3JpdGUgZGF0YVxuJykKKyAgICAgICAgICAgICAgICAjIFNob3VsZCBiZSBzZW50IGltbWVkaWF0ZWx5LCB3aXRob3V0IHJlcXVpcmluZyBmbHVzaCgpCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucmVjZWl2ZWQgPSBzZWxmLnJmaWxlLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBiaWdfY2h1bmsgPSBiJ1wwJyAqIHRlc3Quc3VwcG9ydC5TT0NLX01BWF9TSVpFCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VudDIgPSBzZWxmLndmaWxlLndyaXRlKGJpZ19jaHVuaykKKworICAgICAgICBzZXJ2ZXIgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCAwKSwgSGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlcnZlci5zZXJ2ZXJfY2xvc2UpCisgICAgICAgIGludGVycnVwdGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKKworICAgICAgICBkZWYgc2lnbmFsX2hhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICBpbnRlcnJ1cHRlZC5zZXQoKQorCisgICAgICAgIG9yaWdpbmFsID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgc2lnbmFsX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHVVNSMSwgb3JpZ2luYWwpCisgICAgICAgIHJlc3BvbnNlMSA9IE5vbmUKKyAgICAgICAgcmVjZWl2ZWQyID0gTm9uZQorICAgICAgICBtYWluX3RocmVhZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQorCisgICAgICAgIGRlZiBydW5fY2xpZW50KCk6CisgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzZXJ2ZXIuYWRkcmVzc19mYW1pbHksIHNvY2tldC5TT0NLX1NUUkVBTSwKKyAgICAgICAgICAgICAgICBzb2NrZXQuSVBQUk9UT19UQ1ApCisgICAgICAgICAgICB3aXRoIHMsIHMubWFrZWZpbGUoJ3JiJykgYXMgcmVhZGVyOgorICAgICAgICAgICAgICAgIHMuY29ubmVjdChzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpCisgICAgICAgICAgICAgICAgbm9ubG9jYWwgcmVzcG9uc2UxCisgICAgICAgICAgICAgICAgcmVzcG9uc2UxID0gcmVhZGVyLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBzLnNlbmRhbGwoYidjbGllbnQgcmVzcG9uc2VcbicpCisKKyAgICAgICAgICAgICAgICByZWFkZXIucmVhZCgxMDApCisgICAgICAgICAgICAgICAgIyBUaGUgbWFpbiB0aHJlYWQgc2hvdWxkIG5vdyBiZSBibG9ja2luZyBpbiBhIHNlbmQoKSBzeXNjYWxsLgorICAgICAgICAgICAgICAgICMgQnV0IGluIHRoZW9yeSwgaXQgY291bGQgZ2V0IGludGVycnVwdGVkIGJ5IG90aGVyIHNpZ25hbHMsCisgICAgICAgICAgICAgICAgIyBhbmQgdGhlbiByZXRyaWVkLiBTbyBrZWVwIHNlbmRpbmcgdGhlIHNpZ25hbCBpbiBhIGxvb3AsIGluCisgICAgICAgICAgICAgICAgIyBjYXNlIGFuIGVhcmxpZXIgc2lnbmFsIGhhcHBlbnMgdG8gYmUgZGVsaXZlcmVkIGF0IGFuCisgICAgICAgICAgICAgICAgIyBpbmNvbnZlbmllbnQgbW9tZW50LgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHB0aHJlYWRfa2lsbChtYWluX3RocmVhZCwgc2lnbmFsLlNJR1VTUjEpCisgICAgICAgICAgICAgICAgICAgIGlmIGludGVycnVwdGVkLndhaXQodGltZW91dD1mbG9hdCgxKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJlY2VpdmVkMgorICAgICAgICAgICAgICAgIHJlY2VpdmVkMiA9IGxlbihyZWFkZXIucmVhZCgpKQorCisgICAgICAgIGJhY2tncm91bmQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ydW5fY2xpZW50KQorICAgICAgICBiYWNrZ3JvdW5kLnN0YXJ0KCkKKyAgICAgICAgc2VydmVyLmhhbmRsZV9yZXF1ZXN0KCkKKyAgICAgICAgYmFja2dyb3VuZC5qb2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc2VudDEsIGxlbihyZXNwb25zZTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlMSwgYid3cml0ZSBkYXRhXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZWNlaXZlZCwgYidjbGllbnQgcmVzcG9uc2VcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNlbnQyLCB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNlaXZlZDIsIHRlc3Quc3VwcG9ydC5TT0NLX01BWF9TSVpFIC0gMTAwKQorCiAKIGNsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQppbmRleCBhNWQwZWJmLi45OGNjYWI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CkBAIC0xLDYgKzEsNSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgcmFuZG9tCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBjbXBfdG9fa2V5CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3B3ZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3B3ZC5weQppbmRleCBiZWE3YWIxLi5lODkzZjNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Nwd2QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zcHdkLnB5CkBAIC01Niw1ICs1NiwyMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzcHdkLmdldHNwbmFtLCBieXRlc19uYW1lKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRldWlkJykgYW5kIG9zLmdldGV1aWQoKSAhPSAwLAorICAgICAgICAgICAgICAgICAgICAgJ25vbi1yb290IHVzZXIgcmVxdWlyZWQnKQorY2xhc3MgVGVzdFNwd2ROb25Sb290KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2dldHNwbmFtX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgbmFtZSA9ICdiaW4nCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUGVybWlzc2lvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzcHdkLmdldHNwbmFtKG5hbWUpCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJzcHdkIGVudHJ5ICVyIGRvZXNuJ3QgZXhpc3Q6ICVzIiAlIChuYW1lLCBleGMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgJ1tFcnJubyAxM10gUGVybWlzc2lvbiBkZW5pZWQnKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CmluZGV4IDBmNGZhYTAuLjQ2ZWM4MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CkBAIC0yMSw2ICsyMSwxMyBAQAogCiBzc2wgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoInNzbCIpCiAKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX2hhdmVfdGhyZWFkcyA9IEZhbHNlCitlbHNlOgorICAgIF9oYXZlX3RocmVhZHMgPSBUcnVlCisKIFBST1RPQ09MUyA9IHNvcnRlZChzc2wuX1BST1RPQ09MX05BTUVTKQogSE9TVCA9IHN1cHBvcnQuSE9TVAogSVNfTElCUkVTU0wgPSBzc2wuT1BFTlNTTF9WRVJTSU9OLnN0YXJ0c3dpdGgoJ0xpYnJlU1NMJykKQEAgLTU2LDEyICs2MywxMiBAQAogIyBUd28ga2V5cyBhbmQgY2VydHMgc2lnbmVkIGJ5IHRoZSBzYW1lIENBIChmb3IgU05JIHRlc3RzKQogU0lHTkVEX0NFUlRGSUxFID0gZGF0YV9maWxlKCJrZXljZXJ0My5wZW0iKQogU0lHTkVEX0NFUlRGSUxFMiA9IGRhdGFfZmlsZSgia2V5Y2VydDQucGVtIikKLVNJR05JTkdfQ0EgPSBkYXRhX2ZpbGUoInB5Y2FjZXJ0LnBlbSIpCisjIFNhbWUgY2VydGlmaWNhdGUgYXMgcHljYWNlcnQucGVtLCBidXQgd2l0aG91dCBleHRyYSB0ZXh0IGluIGZpbGUKK1NJR05JTkdfQ0EgPSBkYXRhX2ZpbGUoImNhcGF0aCIsICJjZWZmMTcxMC4wIikKICMgY2VydCB3aXRoIGFsbCBraW5kcyBvZiBzdWJqZWN0IGFsdCBuYW1lcwogQUxMU0FORklMRSA9IGRhdGFfZmlsZSgiYWxsc2Fucy5wZW0iKQogCiBSRU1PVEVfSE9TVCA9ICJzZWxmLXNpZ25lZC5weXRob250ZXN0Lm5ldCIKLVJFTU9URV9ST09UX0NFUlQgPSBkYXRhX2ZpbGUoInNlbGZzaWduZWRfcHl0aG9udGVzdGRvdG5ldC5wZW0iKQogCiBFTVBUWUNFUlQgPSBkYXRhX2ZpbGUoIm51bGxjZXJ0LnBlbSIpCiBCQURDRVJUID0gZGF0YV9maWxlKCJiYWRjZXJ0LnBlbSIpCkBAIC03Myw2ICs4MCwxMiBAQAogREhGSUxFID0gZGF0YV9maWxlKCJkaDEwMjQucGVtIikKIEJZVEVTX0RIRklMRSA9IG9zLmZzZW5jb2RlKERIRklMRSkKIAorIyBOb3QgZGVmaW5lZCBpbiBhbGwgdmVyc2lvbnMgb2YgT3BlblNTTAorT1BfTk9fQ09NUFJFU1NJT04gPSBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCkKK09QX1NJTkdMRV9ESF9VU0UgPSBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKQorT1BfU0lOR0xFX0VDREhfVVNFID0gZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKQorT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFID0gZ2V0YXR0cihzc2wsICJPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiLCAwKQorCiAKIGRlZiBoYW5kbGVfZXJyb3IocHJlZml4KToKICAgICBleGNfZm9ybWF0ID0gJyAnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpKSkKQEAgLTEzMCw2ICsxNDMsMjEgQEAKIG5lZWRzX3NuaSA9IHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19TTkksICJTTkkgc3VwcG9ydCBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCiAKIAorZGVmIHRlc3Rfd3JhcF9zb2NrZXQoc29jaywgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMUywgKiwKKyAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjYV9jZXJ0cz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBrZXlmaWxlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CisgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbF92ZXJzaW9uKQorICAgIGlmIGNlcnRfcmVxcyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IGNlcnRfcmVxcworICAgIGlmIGNhX2NlcnRzIGlzIG5vdCBOb25lOgorICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYV9jZXJ0cykKKyAgICBpZiBjZXJ0ZmlsZSBpcyBub3QgTm9uZSBvciBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZSkKKyAgICBpZiBjaXBoZXJzIGlzIG5vdCBOb25lOgorICAgICAgICBjb250ZXh0LnNldF9jaXBoZXJzKGNpcGhlcnMpCisgICAgcmV0dXJuIGNvbnRleHQud3JhcF9zb2NrZXQoc29jaywgKiprd2FyZ3MpCisKIGNsYXNzIEJhc2ljU29ja2V0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfY29uc3RhbnRzKHNlbGYpOgpAQCAtMzUwLDE3ICszNzgsMTcgQEAKICAgICAgICAgIyBJc3N1ZSAjNzk0MzogYW4gU1NMIG9iamVjdCBkb2Vzbid0IGNyZWF0ZSByZWZlcmVuY2UgY3ljbGVzIHdpdGgKICAgICAgICAgIyBpdHNlbGYuCiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzKQorICAgICAgICBzcyA9IHRlc3Rfd3JhcF9zb2NrZXQocykKICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihzcykKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiIiwgUmVzb3VyY2VXYXJuaW5nKSk6CiAgICAgICAgICAgICBkZWwgc3MKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cigpLCBOb25lKQogCiAgICAgZGVmIHRlc3Rfd3JhcHBlZF91bmNvbm5lY3RlZChzZWxmKToKICAgICAgICAgIyBNZXRob2RzIG9uIGFuIHVuY29ubmVjdGVkIFNTTFNvY2tldCBwcm9wYWdhdGUgdGhlIG9yaWdpbmFsCiAgICAgICAgICMgT1NFcnJvciByYWlzZSBieSB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LgogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNzLnJlY3YsIDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2X2ludG8sIGJ5dGVhcnJheShiJ3gnKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNzLnJlY3Zmcm9tLCAxKQpAQCAtMzc0LDEwICs0MDIsMTAgQEAKICAgICAgICAgZm9yIHRpbWVvdXQgaW4gKE5vbmUsIDAuMCwgNS4wKToKICAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQogICAgICAgICAgICAgcy5zZXR0aW1lb3V0KHRpbWVvdXQpCi0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzKSBhcyBzczoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVvdXQsIHNzLmdldHRpbWVvdXQoKSkKIAotICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICBkZWYgdGVzdF9lcnJvcnNfc3Nsd3JhcChzZWxmKToKICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2VydGZpbGUgbXVzdCBiZSBzcGVjaWZpZWQiLApAQCAtMzg3LDEwICs0MTUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldCwgc29jaywgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNlcnRmaWxlIG11c3QgYmUgc3BlY2lmaWVkIGZvciBzZXJ2ZXItc2lkZSBvcGVyYXRpb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldCwgc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9IiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0LCBzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT0iIikKICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9Q0VSVEZJTEUpIGFzIHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJjYW4ndCBjb25uZWN0IGluIHNlcnZlci1zaWRlIG1vZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0LCAoSE9TVCwgODA4MCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0LCAoSE9TVCwgODA4MCkpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBzb2NrOgogICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLCBjZXJ0ZmlsZT1OT05FWElTVElOR0NFUlQpCkBAIC00MTMsNyArNDQxLDcgQEAKICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5jbG9zZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpOgotICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0KHNvY2ssCisgICAgICAgICAgICB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQogCkBAIC02MDAsNyArNjI4LDcgQEAKICAgICAgICAgcy5saXN0ZW4oKQogICAgICAgICBjID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKICAgICAgICAgYy5jb25uZWN0KHMuZ2V0c29ja25hbWUoKSkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoYywgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpIGFzIHNzOgorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoYywgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpIGFzIHNzOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICBzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ1bmtub3duLXR5cGUiKQogICAgICAgICBzLmNsb3NlKCkKQEAgLTYxMCwxNSArNjM4LDE1IEBACiAgICAgZGVmIHRlc3RfdGxzX3VuaXF1ZV9jaGFubmVsX2JpbmRpbmcoc2VsZik6CiAgICAgICAgICMgdW5jb25uZWN0ZWQgc2hvdWxkIHJldHVybiBOb25lIGZvciBrbm93biB0eXBlCiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMpIGFzIHNzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpKQogICAgICAgICAjIHRoZSBzYW1lIGZvciBzZXJ2ZXItc2lkZQogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9Q0VSVEZJTEUpIGFzIHNzOgorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9Q0VSVEZJTEUpIGFzIHNzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpKQogCiAgICAgZGVmIHRlc3RfZGVhbGxvY193YXJuKHNlbGYpOgotICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKKyAgICAgICAgc3MgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQogICAgICAgICByID0gcmVwcihzcykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFJlc291cmNlV2FybmluZykgYXMgY206CiAgICAgICAgICAgICBzcyA9IE5vbmUKQEAgLTczNyw3ICs3NjUsNyBAQAogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfREdSQU0pCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpIGFzIGN4OgotICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0KHMsIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKQorICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldChzLCBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY3guZXhjZXB0aW9uKSwgIm9ubHkgc3RyZWFtIHNvY2tldHMgYXJlIHN1cHBvcnRlZCIpCiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcikgYXMgY3g6CkBAIC04MDksNiArODM3LDIyIEBACiAgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJGZWIgIDkgMDA6MDA6MDAgMjAwNyBHTVQiLCAxMTcwOTc5MjAwLjApCiAgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwobG9jYWxfZmVicnVhcnlfbmFtZSgpICsgIiAgOSAwMDowMDowMCAyMDA3IEdNVCIpCiAKKyAgICBkZWYgdGVzdF9jb25uZWN0X2V4X2Vycm9yKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VydmVyLmNsb3NlKQorICAgICAgICBwb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VydmVyKSAgIyBSZXNlcnZlIHBvcnQgYnV0IGRvbid0IGxpc3RlbgorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoSE9TVCwgcG9ydCkpCisgICAgICAgICMgSXNzdWUgIzE5OTE5OiBXaW5kb3dzIG1hY2hpbmVzIG9yIFZNcyBob3N0ZWQgb24gV2luZG93cworICAgICAgICAjIG1hY2hpbmVzIHNvbWV0aW1lcyByZXR1cm4gRVdPVUxEQkxPQ0suCisgICAgICAgIGVycm9ycyA9ICgKKyAgICAgICAgICAgIGVycm5vLkVDT05OUkVGVVNFRCwgZXJybm8uRUhPU1RVTlJFQUNILCBlcnJuby5FVElNRURPVVQsCisgICAgICAgICAgICBlcnJuby5FV09VTERCTE9DSywKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEluKHJjLCBlcnJvcnMpCisKIAogY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODM0LDEzICs4NzgsMjIgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgIk5vIGNpcGhlciBjYW4gYmUgc2VsZWN0ZWQiKToKICAgICAgICAgICAgIGN0eC5zZXRfY2lwaGVycygiXiQ6LDs/Kidkb3JvdGh5eCIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA8ICgxLCAwLCAyLCAwLCAwKSwgJ09wZW5TU0wgdG9vIG9sZCcpCisgICAgZGVmIHRlc3RfZ2V0X2NpcGhlcnMoc2VsZik6CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY3R4LnNldF9jaXBoZXJzKCdBRVNHQ00nKQorICAgICAgICBuYW1lcyA9IHNldChkWyduYW1lJ10gZm9yIGQgaW4gY3R4LmdldF9jaXBoZXJzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0FFUzI1Ni1HQ00tU0hBMzg0JywgbmFtZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0FFUzEyOC1HQ00tU0hBMjU2JywgbmFtZXMpCisKICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbAogICAgIGRlZiB0ZXN0X29wdGlvbnMoc2VsZik6CiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgIyBPUF9BTEwgfCBPUF9OT19TU0x2MiB8IE9QX05PX1NTTHYzIGlzIHRoZSBkZWZhdWx0IHZhbHVlCiAgICAgICAgIGRlZmF1bHQgPSAoc3NsLk9QX0FMTCB8IHNzbC5PUF9OT19TU0x2MiB8IHNzbC5PUF9OT19TU0x2MykKLSAgICAgICAgaWYgbm90IElTX0xJQlJFU1NMIGFuZCBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDEsIDEsIDApOgotICAgICAgICAgICAgZGVmYXVsdCB8PSBzc2wuT1BfTk9fQ09NUFJFU1NJT04KKyAgICAgICAgIyBTU0xDb250ZXh0IGFsc28gZW5hYmxlcyB0aGVzZSBieSBkZWZhdWx0CisgICAgICAgIGRlZmF1bHQgfD0gKE9QX05PX0NPTVBSRVNTSU9OIHwgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIHwKKyAgICAgICAgICAgICAgICAgICAgT1BfU0lOR0xFX0RIX1VTRSB8IE9QX1NJTkdMRV9FQ0RIX1VTRSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0LCBjdHgub3B0aW9ucykKICAgICAgICAgY3R4Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdCB8IHNzbC5PUF9OT19UTFN2MSwgY3R4Lm9wdGlvbnMpCkBAIC0xMjA1LDE2ICsxMjU4LDI5IEBACiAgICAgICAgICAgICBzdGF0c1sieDUwOSJdICs9IDEKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmNlcnRfc3RvcmVfc3RhdHMoKSwgc3RhdHMpCiAKKyAgICBkZWYgX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoc2VsZiwgY3R4KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBpZiBPUF9OT19DT01QUkVTU0lPTiAhPSAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIE9QX05PX0NPTVBSRVNTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9OT19DT01QUkVTU0lPTikKKyAgICAgICAgaWYgT1BfU0lOR0xFX0RIX1VTRSAhPSAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIE9QX1NJTkdMRV9ESF9VU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UpCisgICAgICAgIGlmIE9QX1NJTkdMRV9FQ0RIX1VTRSAhPSAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIE9QX1NJTkdMRV9FQ0RIX1VTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfU0lOR0xFX0VDREhfVVNFKQorICAgICAgICBpZiBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSkKKwogICAgIGRlZiB0ZXN0X2NyZWF0ZV9kZWZhdWx0X2NvbnRleHQoc2VsZik6CiAgICAgICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY3R4LmNoZWNrX2hvc3RuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKKwogCiAgICAgICAgIHdpdGggb3BlbihTSUdOSU5HX0NBKSBhcyBmOgogICAgICAgICAgICAgY2FkYXRhID0gZi5yZWFkKCkKQEAgLTEyMjIsNDAgKzEyODgsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICAgICAgY3R4ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoc3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKSwKLSAgICAgICAgKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgIGRlZiB0ZXN0X19jcmVhdGVfc3RkbGliX2NvbnRleHQoc2VsZik6CiAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGN0eC5jaGVja19ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELApAQCAtMTI2MywxMiArMTMxMywxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdHguY2hlY2tfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQocHVycG9zZT1zc2wuUHVycG9zZS5DTElFTlRfQVVUSCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgZGVmIHRlc3RfY2hlY2tfaG9zdG5hbWUoc2VsZik6CiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKQEAgLTEyOTIsNiArMTM0MiwxNyBAQAogICAgICAgICBjdHguY2hlY2tfaG9zdG5hbWUgPSBGYWxzZQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGN0eC5jaGVja19ob3N0bmFtZSkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRfY2xpZW50X3NlcnZlcihzZWxmKToKKyAgICAgICAgIyBQUk9UT0NPTF9UTFNfQ0xJRU5UIGhhcyBzYW5lIGRlZmF1bHRzCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3R4LmNoZWNrX2hvc3RuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCisKKyAgICAgICAgIyBQUk9UT0NPTF9UTFNfU0VSVkVSIGhhcyBkaWZmZXJlbnQgYnV0IGFsc28gc2FuZSBkZWZhdWx0cworICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX1NFUlZFUikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQorCiAKIGNsYXNzIFNTTEVycm9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xMzk3LDE0MCArMTQ1OCwxMDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiaW8ud3JpdGUsIDEpCiAKIAotY2xhc3MgTmV0d29ya2VkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorQHVuaXR0ZXN0LnNraXBVbmxlc3MoX2hhdmVfdGhyZWFkcywgIk5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQorY2xhc3MgU2ltcGxlQmFja2dyb3VuZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIHRoYXQgY29ubmVjdCB0byBhIHNpbXBsZSBzZXJ2ZXIgcnVubmluZyBpbiB0aGUgYmFja2dyb3VuZCIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBUaHJlYWRlZEVjaG9TZXJ2ZXIoU0lHTkVEX0NFUlRGSUxFKQorICAgICAgICBzZWxmLnNlcnZlcl9hZGRyID0gKEhPU1QsIHNlcnZlci5wb3J0KQorICAgICAgICBzZXJ2ZXIuX19lbnRlcl9fKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlcnZlci5fX2V4aXRfXywgTm9uZSwgTm9uZSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Qoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe30sIHMuZ2V0cGVlcmNlcnQoKSkKIAotICAgICAgICAgICAgIyB0aGlzIHNob3VsZCBmYWlsIGJlY2F1c2Ugd2UgaGF2ZSBubyB2ZXJpZmljYXRpb24gY2VydHMKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICMgdGhpcyBzaG91bGQgc3VjY2VlZCBiZWNhdXNlIHdlIHNwZWNpZnkgdGhlIHJvb3QgY2VydAorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCiAKLSAgICAgICAgICAgICMgdGhpcyBzaG91bGQgc3VjY2VlZCBiZWNhdXNlIHdlIHNwZWNpZnkgdGhlIHJvb3QgY2VydAotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgZGVmIHRlc3RfY29ubmVjdF9mYWlsKHNlbGYpOgorICAgICAgICAjIFRoaXMgc2hvdWxkIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vIHZlcmlmaWNhdGlvbiBjZXJ0cy4gQ29ubmVjdGlvbgorICAgICAgICAjIGZhaWx1cmUgY3Jhc2hlcyBUaHJlYWRlZEVjaG9TZXJ2ZXIsIHNvIHJ1biB0aGlzIGluIGFuIGluZGVwZW5kZW50CisgICAgICAgICMgdGVzdCBtZXRob2QuCisgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0LCBzZWxmLnNlcnZlcl9hZGRyKQogCiAgICAgZGVmIHRlc3RfY29ubmVjdF9leChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTEzMjY6IGNoZWNrIGNvbm5lY3RfZXgoKSBpbXBsZW1lbnRhdGlvbgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0MykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9U0lHTklOR19DQSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcy5jb25uZWN0X2V4KHNlbGYuc2VydmVyX2FkZHIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQogCiAgICAgZGVmIHRlc3Rfbm9uX2Jsb2NraW5nX2Nvbm5lY3RfZXgoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExMzI2OiBub24tYmxvY2tpbmcgY29ubmVjdF9leCgpIHNob3VsZCBhbGxvdyBoYW5kc2hha2UKICAgICAgICAgIyB0byBwcm9jZWVkIGFmdGVyIHRoZSBzb2NrZXQgZ2V0cyByZWFkeS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9U0lHTklOR19DQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICMgRVdPVUxEQkxPQ0sgdW5kZXIgV2luZG93cywgRUlOUFJPR1JFU1MgZWxzZXdoZXJlCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsICgwLCBlcnJuby5FSU5QUk9HUkVTUywgZXJybm8uRVdPVUxEQkxPQ0spKQorICAgICAgICAjIFdhaXQgZm9yIGNvbm5lY3QgdG8gZmluaXNoCisgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKKyAgICAgICAgIyBOb24tYmxvY2tpbmcgaGFuZHNoYWtlCisgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKLSAgICAgICAgICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgIyBFV09VTERCTE9DSyB1bmRlciBXaW5kb3dzLCBFSU5QUk9HUkVTUyBlbHNld2hlcmUKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoMCwgZXJybm8uRUlOUFJPR1JFU1MsIGVycm5vLkVXT1VMREJMT0NLKSkKLSAgICAgICAgICAgICAgICAjIFdhaXQgZm9yIGNvbm5lY3QgdG8gZmluaXNoCisgICAgICAgICAgICAgICAgcy5kb19oYW5kc2hha2UoKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSwgNS4wKQorICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgIyBOb24tYmxvY2tpbmcgaGFuZHNoYWtlCi0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgcy5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSwgNS4wKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQotICAgICAgICAgICAgICAgICMgU1NMIGVzdGFibGlzaGVkCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0KLSAgICBkZWYgdGVzdF90aW1lb3V0X2Nvbm5lY3RfZXgoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzEyMDY1OiBvbiBhIHRpbWVvdXQsIGNvbm5lY3RfZXgoKSBzaG91bGQgcmV0dXJuIHRoZSBvcmlnaW5hbAotICAgICAgICAjIGVycm5vIChtaW1pY2tpbmcgdGhlIGJlaGF2aW91ciBvZiBub24tU1NMIHNvY2tldHMpLgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcy5zZXR0aW1lb3V0KDAuMDAwMDAwMSkKLSAgICAgICAgICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgaWYgcmMgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiUkVNT1RFX0hPU1QgcmVzcG9uZGVkIHRvbyBxdWlja2x5IikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoZXJybm8uRUFHQUlOLCBlcnJuby5FV09VTERCTE9DSykpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfY29ubmVjdF9leF9lcnJvcihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDQpKQotICAgICAgICAgICAgICAgICMgSXNzdWUgIzE5OTE5OiBXaW5kb3dzIG1hY2hpbmVzIG9yIFZNcyBob3N0ZWQgb24gV2luZG93cwotICAgICAgICAgICAgICAgICMgbWFjaGluZXMgc29tZXRpbWVzIHJldHVybiBFV09VTERCTE9DSy4KLSAgICAgICAgICAgICAgICBlcnJvcnMgPSAoCi0gICAgICAgICAgICAgICAgICAgIGVycm5vLkVDT05OUkVGVVNFRCwgZXJybm8uRUhPU1RVTlJFQUNILCBlcnJuby5FVElNRURPVVQsCi0gICAgICAgICAgICAgICAgICAgIGVycm5vLkVXT1VMREJMT0NLLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJjLCBlcnJvcnMpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIFNTTCBlc3RhYmxpc2hlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQogCiAgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoX2NvbnRleHQoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgIyBTYW1lIGFzIHRlc3RfY29ubmVjdCwgYnV0IHdpdGggYSBzZXBhcmF0ZWx5IGNyZWF0ZWQgY29udGV4dAotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe30sIHMuZ2V0cGVlcmNlcnQoKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICAjIFNhbWUgd2l0aCBhIHNlcnZlciBob3N0bmFtZQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPVJFTU9URV9IT1NUKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2Ugd2UgaGF2ZSBubyB2ZXJpZmljYXRpb24gY2VydHMKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJjZXJ0aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICAjIFRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoUkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICMgU2FtZSBhcyB0ZXN0X2Nvbm5lY3QsIGJ1dCB3aXRoIGEgc2VwYXJhdGVseSBjcmVhdGVkIGNvbnRleHQKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe30sIHMuZ2V0cGVlcmNlcnQoKSkKKyAgICAgICAgIyBTYW1lIHdpdGggYSBzZXJ2ZXIgaG9zdG5hbWUKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPSJkdW1teSIpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgIyBUaGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0CisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoX2NvbnRleHRfZmFpbChzZWxmKToKKyAgICAgICAgIyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2Ugd2UgaGF2ZSBubyB2ZXJpZmljYXRpb24gY2VydHMuIENvbm5lY3Rpb24KKyAgICAgICAgIyBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbiBpbmRlcGVuZGVudAorICAgICAgICAjIHRlc3QgbWV0aG9kLgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJjZXJ0aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0LCBzZWxmLnNlcnZlcl9hZGRyKQogCiAgICAgZGVmIHRlc3RfY29ubmVjdF9jYXBhdGgoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHNlcnZlciBjZXJ0aWZpY2F0ZXMgdXNpbmcgdGhlIGBjYXBhdGhgIGFyZ3VtZW50CkBAIC0xNTM4LDE5OCArMTU2MiwxMzAgQEAKICAgICAgICAgIyBPcGVuU1NMIDAuOS44biBhbmQgMS4wLjAsIGFzIGEgcmVzdWx0IHRoZSBjYXBhdGggZGlyZWN0b3J5IG11c3QKICAgICAgICAgIyBjb250YWluIGJvdGggdmVyc2lvbnMgb2YgZWFjaCBjZXJ0aWZpY2F0ZSAoc2FtZSBjb250ZW50LCBkaWZmZXJlbnQKICAgICAgICAgIyBmaWxlbmFtZSkgZm9yIHRoaXMgdGVzdCB0byBiZSBwb3J0YWJsZSBhY3Jvc3MgT3BlblNTTCByZWxlYXNlcy4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUNBUEFUSCkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICAjIFNhbWUgd2l0aCBhIGJ5dGVzIGBjYXBhdGhgIGFyZ3VtZW50Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUJZVEVTX0NBUEFUSCkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUNBUEFUSCkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICAjIFNhbWUgd2l0aCBhIGJ5dGVzIGBjYXBhdGhgIGFyZ3VtZW50CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUJZVEVTX0NBUEFUSCkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQogCiAgICAgZGVmIHRlc3RfY29ubmVjdF9jYWRhdGEoc2VsZik6Ci0gICAgICAgIHdpdGggb3BlbihSRU1PVEVfUk9PVF9DRVJUKSBhcyBmOgorICAgICAgICB3aXRoIG9wZW4oU0lHTklOR19DQSkgYXMgZjoKICAgICAgICAgICAgIHBlbSA9IGYucmVhZCgpCiAgICAgICAgIGRlciA9IHNzbC5QRU1fY2VydF90b19ERVJfY2VydChwZW0pCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1wZW0pCi0gICAgICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9cGVtKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCiAKLSAgICAgICAgICAgICMgc2FtZSB3aXRoIERFUgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1kZXIpCi0gICAgICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgIyBzYW1lIHdpdGggREVSCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPWRlcikKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICJudCIsICJDYW4ndCB1c2UgYSBzb2NrZXQgYXMgYSBmaWxlIHVuZGVyIFdpbmRvd3MiKQogICAgIGRlZiB0ZXN0X21ha2VmaWxlX2Nsb3NlKHNlbGYpOgogICAgICAgICAjIElzc3VlICM1MjM4OiBjcmVhdGluZyBhIGZpbGUtbGlrZSBvYmplY3Qgd2l0aCBtYWtlZmlsZSgpIHNob3VsZG4ndAogICAgICAgICAjIGRlbGF5IGNsb3NpbmcgdGhlIHVuZGVybHlpbmcgInJlYWwgc29ja2V0IiAoaGVyZSB0ZXN0ZWQgd2l0aCBpdHMKICAgICAgICAgIyBmaWxlIGRlc2NyaXB0b3IsIGhlbmNlIHNraXBwaW5nIHRoZSB0ZXN0IHVuZGVyIFdpbmRvd3MpLgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgc3MuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBmZCA9IHNzLmZpbGVubygpCi0gICAgICAgICAgICBmID0gc3MubWFrZWZpbGUoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICAjIFRoZSBmZCBpcyBzdGlsbCBvcGVuCisgICAgICAgIHNzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKKyAgICAgICAgc3MuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBmZCA9IHNzLmZpbGVubygpCisgICAgICAgIGYgPSBzcy5tYWtlZmlsZSgpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAjIFRoZSBmZCBpcyBzdGlsbCBvcGVuCisgICAgICAgIG9zLnJlYWQoZmQsIDApCisgICAgICAgICMgQ2xvc2luZyB0aGUgU1NMIHNvY2tldCBzaG91bGQgY2xvc2UgdGhlIGZkIHRvbworICAgICAgICBzcy5jbG9zZSgpCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGU6CiAgICAgICAgICAgICBvcy5yZWFkKGZkLCAwKQotICAgICAgICAgICAgIyBDbG9zaW5nIHRoZSBTU0wgc29ja2V0IHNob3VsZCBjbG9zZSB0aGUgZmQgdG9vCi0gICAgICAgICAgICBzcy5jbG9zZSgpCi0gICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBvcy5yZWFkKGZkLCAwKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQogCiAgICAgZGVmIHRlc3Rfbm9uX2Jsb2NraW5nX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCi0gICAgICAgICAgICBjb3VudCA9IDAKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxCi0gICAgICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuTmVlZGVkICVkIGNhbGxzIHRvIGRvX2hhbmRzaGFrZSgpIHRvIGVzdGFibGlzaCBzZXNzaW9uLlxuIiAlIGNvdW50KQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICAgICAgcy5kb19oYW5kc2hha2UoKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSkKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSkKKyAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5OZWVkZWQgJWQgY2FsbHMgdG8gZG9faGFuZHNoYWtlKCkgdG8gZXN0YWJsaXNoIHNlc3Npb24uXG4iICUgY291bnQpCiAKICAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYpOgotICAgICAgICBkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShob3N0LCBwb3J0LCBjZXJ0PU5vbmUpOgotICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChob3N0KToKLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCkpCi0gICAgICAgICAgICAgICAgaWYgbm90IHBlbToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKKyAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmLCAqc2VsZi5zZXJ2ZXJfYWRkciwgY2VydD1TSUdOSU5HX0NBKQogCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKLSAgICAgICAgICAgICAgICAgICAgI3Nob3VsZCBmYWlsCi0gICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiVzXG4iICUgeCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yICVzOiVzISIgJSAocGVtLCBob3N0LCBwb3J0KSkKLQotICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1jZXJ0KQotICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCi0gICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcblZlcmlmaWVkIGNlcnRpZmljYXRlIGZvciAlczolcyBpc1xuJXNcbiIgJSAoaG9zdCwgcG9ydCAscGVtKSkKLQotICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKFJFTU9URV9IT1NULCA0NDMsIFJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgIGlmIHN1cHBvcnQuSVBWNl9FTkFCTEVEOgotICAgICAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgnaXB2Ni5nb29nbGUuY29tJywgNDQzKQorICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfZmFpbChzZWxmKToKKyAgICAgICAgIyBDb25uZWN0aW9uIGZhaWx1cmUgY3Jhc2hlcyBUaHJlYWRlZEVjaG9TZXJ2ZXIsIHNvIHJ1biB0aGlzIGluIGFuCisgICAgICAgICMgaW5kZXBlbmRlbnQgdGVzdCBtZXRob2QKKyAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHNlbGYsICpzZWxmLnNlcnZlcl9hZGRyKQogCiAgICAgZGVmIHRlc3RfY2lwaGVycyhzZWxmKToKLSAgICAgICAgcmVtb3RlID0gKFJFTU9URV9IT1NULCA0NDMpCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQocmVtb3RlWzBdKToKLSAgICAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9IkFMTCIpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLSAgICAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9IkRFRkFVTFQiKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0gICAgICAgICAgICAjIEVycm9yIGNoZWNraW5nIGNhbiBoYXBwZW4gYXQgaW5zdGFudGlhdGlvbiBvciB3aGVuIGNvbm5lY3RpbmcKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJObyBjaXBoZXIgY2FuIGJlIHNlbGVjdGVkIik6Ci0gICAgICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSBhcyBzb2NrOgotICAgICAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9Il4kOiw7PyonZG9yb3RoeXgiKQotICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotCi0gICAgZGVmIHRlc3RfYWxnb3JpdGhtcyhzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjODQ4NDogYWxsIGFsZ29yaXRobXMgc2hvdWxkIGJlIGF2YWlsYWJsZSB3aGVuIHZlcmlmeWluZyBhCi0gICAgICAgICMgY2VydGlmaWNhdGUuCi0gICAgICAgICMgU0hBMjU2IHdhcyBhZGRlZCBpbiBPcGVuU1NMIDAuOS44Ci0gICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA8ICgwLCA5LCA4LCAwLCAxNSk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTSEEyNTYgbm90IGF2YWlsYWJsZSBvbiAlciIgJSBzc2wuT1BFTlNTTF9WRVJTSU9OKQotICAgICAgICAjIHNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIG5lZWRzIFNOSSB0byB1c2UgdGhlIGNvcnJlY3QgY2VydGlmaWNhdGUKLSAgICAgICAgaWYgbm90IHNzbC5IQVNfU05JOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU05JIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKLSAgICAgICAgIyBodHRwczovL3NoYTIuaGJvZWNrLmRlLyB3YXMgdXNlZCB1bnRpbCAyMDExLTAxLTA4IChubyByb3V0ZSB0byBob3N0KQotICAgICAgICByZW1vdGUgPSAoInNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIiwgNDQzKQotICAgICAgICBzaGEyNTZfY2VydCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAic2hhMjU2LnBlbSIpCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoInNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIik6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhzaGEyNTZfY2VydCkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0ic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0gICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbkNpcGhlciB3aXRoICVyIGlzICVyXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3RlLCBzLmNpcGhlcigpKSkKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiQ2VydGlmaWNhdGUgaXM6XG4lc1xuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHByaW50LnBmb3JtYXQocy5nZXRwZWVyY2VydCgpKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9IkFMTCIpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iREVGQVVMVCIpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgIyBFcnJvciBjaGVja2luZyBjYW4gaGFwcGVuIGF0IGluc3RhbnRpYXRpb24gb3Igd2hlbiBjb25uZWN0aW5nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJObyBjaXBoZXIgY2FuIGJlIHNlbGVjdGVkIik6CisgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpIGFzIHNvY2s6CisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJeJDosOz8qJ2Rvcm90aHl4IikKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2dldF9jYV9jZXJ0c19jYXBhdGgoc2VsZik6CiAgICAgICAgICMgY2FwYXRoIGNlcnRzIGFyZSBsb2FkZWQgb24gcmVxdWVzdAotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9Q0FQQVRIKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHguZ2V0X2NhX2NlcnRzKCksIFtdKQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGN0eC5nZXRfY2FfY2VydHMoKSksIDEpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUNBUEFUSCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHguZ2V0X2NhX2NlcnRzKCksIFtdKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGN0eC5nZXRfY2FfY2VydHMoKSksIDEpCiAKICAgICBAbmVlZHNfc25pCiAgICAgZGVmIHRlc3RfY29udGV4dF9zZXRnZXQoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgY29udGV4dCBvZiBhIGNvbm5lY3RlZCBzb2NrZXQgY2FuIGJlIHJlcGxhY2VkLgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIGN0eDEgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCi0gICAgICAgICAgICBjdHgyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgd2l0aCBjdHgxLndyYXBfc29ja2V0KHMpIGFzIHNzOgotICAgICAgICAgICAgICAgIHNzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLl9zc2xvYmouY29udGV4dCwgY3R4MSkKLSAgICAgICAgICAgICAgICBzcy5jb250ZXh0ID0gY3R4MgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLl9zc2xvYmouY29udGV4dCwgY3R4MikKLQotCi1jbGFzcyBOZXR3b3JrZWRCSU9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgIGN0eDEgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eDIgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgd2l0aCBjdHgxLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICAgICAgc3MuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5jb250ZXh0LCBjdHgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDEpCisgICAgICAgICAgICBzcy5jb250ZXh0ID0gY3R4MgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5jb250ZXh0LCBjdHgyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDIpCiAKICAgICBkZWYgc3NsX2lvX2xvb3Aoc2VsZiwgc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAjIEEgc2ltcGxlIElPIGxvb3AuIENhbGwgZnVuYygqYXJncykgZGVwZW5kaW5nIG9uIHRoZSBlcnJvciB3ZSBnZXQKQEAgLTE3NjUsNjQgKzE3MjEsMTI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvdW50LCBmdW5jLl9fbmFtZV9fKSkKICAgICAgICAgcmV0dXJuIHJldAogCi0gICAgZGVmIHRlc3RfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgc29jay5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIGluY29taW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICBjdHguY2hlY2tfaG9zdG5hbWUgPSBUcnVlCi0gICAgICAgICAgICBzc2xvYmogPSBjdHgud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBGYWxzZSwgUkVNT1RFX0hPU1QpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzbG9iai5fc3Nsb2JqLm93bmVyLCBzc2xvYmopCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouY2lwaGVyKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzc2xvYmouc2hhcmVkX2NpcGhlcnMoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNzbG9iai5nZXRwZWVyY2VydCkKLSAgICAgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCi0gICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouY2lwaGVyKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzc2xvYmouc2hhcmVkX2NpcGhlcnMoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouZ2V0cGVlcmNlcnQoKSkKLSAgICAgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQotICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xTeXNjYWxsRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBzZWxmLXNpZ25lZC5weXRob250ZXN0Lm5ldCBwcm9iYWJseSBzaHV0cyBkb3duIHRoZSBUQ1AKLSAgICAgICAgICAgICAgICAjIGNvbm5lY3Rpb24gd2l0aG91dCBzZW5kaW5nIGEgc2VjdXJlIHNodXRkb3duIG1lc3NhZ2UsIGFuZAotICAgICAgICAgICAgICAgICMgdGhpcyBpcyByZXBvcnRlZCBhcyBTU0xfRVJST1JfU1lTQ0FMTAotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvciwgc3Nsb2JqLndyaXRlLCBiJ2ZvbycpCi0gICAgICAgICAgICBzb2NrLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGVfZGF0YShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHNvY2suY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQotICAgICAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCi0gICAgICAgICAgICBzc2xvYmogPSBjdHgud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBGYWxzZSkKLSAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmouZG9faGFuZHNoYWtlKQotICAgICAgICAgICAgcmVxID0gYidHRVQgLyBIVFRQLzEuMFxyXG5cclxuJwotICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai53cml0ZSwgcmVxKQotICAgICAgICAgICAgYnVmID0gc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5yZWFkLCAxMDI0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZbOjVdLCBiJ0hUVFAvJykKKyAgICBkZWYgdGVzdF9iaW9faGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCisgICAgICAgIHNvY2suY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgIGN0eC5jaGVja19ob3N0bmFtZSA9IFRydWUKKyAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UsICdsb2NhbGhvc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzKHNzbG9iai5fc3Nsb2JqLm93bmVyLCBzc2xvYmopCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5jaXBoZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNzbG9iai5nZXRwZWVyY2VydCkKKyAgICAgICAgaWYgJ3Rscy11bmlxdWUnIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQorICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5jaXBoZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouZ2V0cGVlcmNlcnQoKSkKKyAgICAgICAgaWYgJ3Rscy11bmlxdWUnIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKKyAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCi0gICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IHNzbC5TU0xTeXNjYWxsRXJyb3I6CisgICAgICAgICAgICAjIElmIHRoZSBzZXJ2ZXIgc2h1dHMgZG93biB0aGUgVENQIGNvbm5lY3Rpb24gd2l0aG91dCBzZW5kaW5nIGEKKyAgICAgICAgICAgICMgc2VjdXJlIHNodXRkb3duIG1lc3NhZ2UsIHRoaXMgaXMgcmVwb3J0ZWQgYXMgU1NMX0VSUk9SX1NZU0NBTEwKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yLCBzc2xvYmoud3JpdGUsIGInZm9vJykKKworICAgIGRlZiB0ZXN0X2Jpb19yZWFkX3dyaXRlX2RhdGEoc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5jbG9zZSkKKyAgICAgICAgc29jay5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGluY29taW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX05PTkUKKyAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UpCisgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmouZG9faGFuZHNoYWtlKQorICAgICAgICByZXEgPSBiJ0ZPT1xuJworICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLndyaXRlLCByZXEpCisgICAgICAgIGJ1ZiA9IHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoucmVhZCwgMTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGInZm9vXG4nKQorICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKIAogCi10cnk6Ci0gICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIF9oYXZlX3RocmVhZHMgPSBGYWxzZQotZWxzZToKLSAgICBfaGF2ZV90aHJlYWRzID0gVHJ1ZQorY2xhc3MgTmV0d29ya2VkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgZGVmIHRlc3RfdGltZW91dF9jb25uZWN0X2V4KHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMjA2NTogb24gYSB0aW1lb3V0LCBjb25uZWN0X2V4KCkgc2hvdWxkIHJldHVybiB0aGUgb3JpZ2luYWwKKyAgICAgICAgIyBlcnJubyAobWltaWNraW5nIHRoZSBiZWhhdmlvdXIgb2Ygbm9uLVNTTCBzb2NrZXRzKS4KKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6CisgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICAgICAgcy5zZXR0aW1lb3V0KDAuMDAwMDAwMSkKKyAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQzKSkKKyAgICAgICAgICAgIGlmIHJjID09IDA6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiUkVNT1RFX0hPU1QgcmVzcG9uZGVkIHRvbyBxdWlja2x5IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsIChlcnJuby5FQUdBSU4sIGVycm5vLkVXT1VMREJMT0NLKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnTmVlZHMgSVB2NicpCisgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9pcHY2KHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCdpcHY2Lmdvb2dsZS5jb20nKToKKyAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZiwgJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKyAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfZmFpbChzZWxmLCAnaXB2Ni5nb29nbGUuY29tJywgNDQzKQorCisgICAgZGVmIHRlc3RfYWxnb3JpdGhtcyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjODQ4NDogYWxsIGFsZ29yaXRobXMgc2hvdWxkIGJlIGF2YWlsYWJsZSB3aGVuIHZlcmlmeWluZyBhCisgICAgICAgICMgY2VydGlmaWNhdGUuCisgICAgICAgICMgU0hBMjU2IHdhcyBhZGRlZCBpbiBPcGVuU1NMIDAuOS44CisgICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA8ICgwLCA5LCA4LCAwLCAxNSk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTSEEyNTYgbm90IGF2YWlsYWJsZSBvbiAlciIgJSBzc2wuT1BFTlNTTF9WRVJTSU9OKQorICAgICAgICAjIHNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIG5lZWRzIFNOSSB0byB1c2UgdGhlIGNvcnJlY3QgY2VydGlmaWNhdGUKKyAgICAgICAgaWYgbm90IHNzbC5IQVNfU05JOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU05JIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICAgICAgIyBodHRwczovL3NoYTIuaGJvZWNrLmRlLyB3YXMgdXNlZCB1bnRpbCAyMDExLTAxLTA4IChubyByb3V0ZSB0byBob3N0KQorICAgICAgICByZW1vdGUgPSAoInNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIiwgNDQzKQorICAgICAgICBzaGEyNTZfY2VydCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAic2hhMjU2LnBlbSIpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoInNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIik6CisgICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhzaGEyNTZfY2VydCkKKyAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0ic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCisgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbkNpcGhlciB3aXRoICVyIGlzICVyXG4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3RlLCBzLmNpcGhlcigpKSkKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiQ2VydGlmaWNhdGUgaXM6XG4lc1xuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHByaW50LnBmb3JtYXQocy5nZXRwZWVyY2VydCgpKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisKKworZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUodGVzdCwgaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKKyAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCkpCisgICAgaWYgbm90IHBlbToKKyAgICAgICAgdGVzdC5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKKworICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwgY2FfY2VydHM9Y2VydCkKKyAgICBpZiBub3QgcGVtOgorICAgICAgICB0ZXN0LmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQorICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5WZXJpZmllZCBjZXJ0aWZpY2F0ZSBmb3IgJXM6JXMgaXNcbiVzXG4iICUgKGhvc3QsIHBvcnQgLHBlbSkpCisKK2RlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwodGVzdCwgaG9zdCwgcG9ydCk6CisgICAgdHJ5OgorICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPUNFUlRGSUxFKQorICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKKyAgICAgICAgI3Nob3VsZCBmYWlsCisgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiVzXG4iICUgeCkKKyAgICBlbHNlOgorICAgICAgICB0ZXN0LmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yICVzOiVzISIgJSAocGVtLCBob3N0LCBwb3J0KSkKKworCitpZiBfaGF2ZV90aHJlYWRzOgogICAgIGZyb20gdGVzdC5zc2xfc2VydmVycyBpbXBvcnQgbWFrZV9odHRwc19zZXJ2ZXIKIAogICAgIGNsYXNzIFRocmVhZGVkRWNob1NlcnZlcih0aHJlYWRpbmcuVGhyZWFkKToKQEAgLTE5MTAsNiArMTkzMCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0cmlwcGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZW9mLCBzbyBxdWl0IHRoaXMgaGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVubmluZyA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLnNzbGNvbm4udW53cmFwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNYW55IHRlc3RzIHNodXQgdGhlIFRDUCBjb25uZWN0aW9uIGRvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRob3V0IGFuIFNTTCBzaHV0ZG93bi4gVGhpcyBjYXVzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bndyYXAoKSB0byByYWlzZSBPU0Vycm9yIHdpdGggZXJybm89MCEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3NsY29ubiA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgc3RyaXBwZWQgPT0gYidvdmVyJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2UgYW5kIHNlbGYuc2VydmVyLmNvbm5lY3Rpb25jaGF0dHk6CkBAIC0yMDM3LDcgKzIwNjYsNyBAQAogICAgICAgICAgICAgY2xhc3MgQ29ubmVjdGlvbkhhbmRsZXIgKGFzeW5jb3JlLmRpc3BhdGNoZXJfd2l0aF9zZW5kKToKIAogICAgICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uLCBjZXJ0ZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KGNvbm4sIHNlcnZlcl9zaWRlPVRydWUsCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gdGVzdF93cmFwX3NvY2tldChjb25uLCBzZXJ2ZXJfc2lkZT1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1jZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXJfd2l0aF9zZW5kLl9faW5pdF9fKHNlbGYsIHNlbGYuc29ja2V0KQpAQCAtMjE0NSw3ICsyMTc0LDggQEAKICAgICAgICAgICAgIHNlbGYuc2VydmVyLmNsb3NlKCkKIAogICAgIGRlZiBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LCBpbmRhdGE9YiJGT09cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSwgc25pX25hbWU9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSwgc25pX25hbWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb249Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBMYXVuY2ggYSBzZXJ2ZXIsIGNvbm5lY3QgYSBjbGllbnQgdG8gaXQgYW5kIHRyeSB2YXJpb3VzIHJlYWRzCiAgICAgICAgIGFuZCB3cml0ZXMuCkBAIC0yMTU2LDcgKzIxODYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgd2l0aCBzZXJ2ZXI6CiAgICAgICAgICAgICB3aXRoIGNsaWVudF9jb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNuaV9uYW1lKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c25pX25hbWUsIHNlc3Npb249c2Vzc2lvbikgYXMgczoKICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKICAgICAgICAgICAgICAgICBmb3IgYXJnIGluIFtpbmRhdGEsIGJ5dGVhcnJheShpbmRhdGEpLCBtZW1vcnl2aWV3KGluZGF0YSldOgogICAgICAgICAgICAgICAgICAgICBpZiBjb25uZWN0aW9uY2hhdHR5OgpAQCAtMjE4NCw2ICsyMjE0LDggQEAKICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9hbHBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9hbHBuX3Byb3RvY29sKCksCiAgICAgICAgICAgICAgICAgICAgICdjbGllbnRfbnBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSwKICAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiBzLnZlcnNpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgJ3Nlc3Npb25fcmV1c2VkJzogcy5zZXNzaW9uX3JldXNlZCwKKyAgICAgICAgICAgICAgICAgICAgJ3Nlc3Npb24nOiBzLnNlc3Npb24sCiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKICAgICAgICAgICAgIHN0YXRzWydzZXJ2ZXJfYWxwbl9wcm90b2NvbHMnXSA9IHNlcnZlci5zZWxlY3RlZF9hbHBuX3Byb3RvY29scwpAQCAtMjI1OSwxMiArMjI5MSw1MyBAQAogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKICAgICAgICAgICAgIGZvciBwcm90b2NvbCBpbiBQUk9UT0NPTFM6CisgICAgICAgICAgICAgICAgaWYgcHJvdG9jb2wgaW4ge3NzbC5QUk9UT0NPTF9UTFNfQ0xJRU5ULCBzc2wuUFJPVE9DT0xfVExTX1NFUlZFUn06CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG9jb2w9c3NsLl9QUk9UT0NPTF9OQU1FU1twcm90b2NvbF0pOgogICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQocHJvdG9jb2wpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQogICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY29udGV4dCwgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCiAKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICAgICAgICAgICBjbGllbnRfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19TRVJWRVIpCisgICAgICAgICAgICAjIHNlcnZlcl9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKFNJR05FRF9DRVJURklMRTIpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSKToKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmlfbmFtZT0nZmFrZWhvc3RuYW1lJykKKworICAgICAgICAgICAgY2xpZW50X2NvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBGYWxzZQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xpZW50PXNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSLCBzZXJ2ZXI9c3NsLlBST1RPQ09MX1RMU19DTElFTlQpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQ9c2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dD1jbGllbnRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmlfbmFtZT0nZmFrZWhvc3RuYW1lJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjYWxsZWQgYSBmdW5jdGlvbiB5b3Ugc2hvdWxkIG5vdCBjYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlLmV4Y2VwdGlvbikpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUiwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9c2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhbGxlZCBhIGZ1bmN0aW9uIHlvdSBzaG91bGQgbm90IGNhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUuZXhjZXB0aW9uKSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xpZW50PXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5ULCBzZXJ2ZXI9c3NsLlBST1RPQ09MX1RMU19DTElFTlQpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQ9c2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dD1jbGllbnRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY2FsbGVkIGEgZnVuY3Rpb24geW91IHNob3VsZCBub3QgY2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZS5leGNlcHRpb24pKQorCisKICAgICAgICAgZGVmIHRlc3RfZ2V0cGVlcmNlcnQoc2VsZik6CiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQpAQCAtMjM5OCw3ICsyNDcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXIsIFwKICAgICAgICAgICAgICAgICAgICAgc29ja2V0LnNvY2tldCgpIGFzIHNvY2ssIFwKLSAgICAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0KHNvY2ssCisgICAgICAgICAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQoc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1jZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpIGFzIHM6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMjQ0NSw3ICsyNTE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYy5jb25uZWN0KChIT1NULCBwb3J0KSkKICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJfZ29uZS53YWl0KCkKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3NvY2sgPSBzc2wud3JhcF9zb2NrZXQoYykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9zb2NrID0gdGVzdF93cmFwX3NvY2tldChjKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTI2MzUsNyArMjcwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBjbGllbnQ6ICByZWFkICVyIGZyb20gc2VydmVyLCBzdGFydGluZyBUTFMuLi5cbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBtc2cpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25uID0gc3NsLndyYXBfc29ja2V0KHMsIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4gPSB0ZXN0X3dyYXBfc29ja2V0KHMsIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgaW5kYXRhID09IGIiRU5EVExTIiBhbmQgbXNnLnN0YXJ0c3dpdGgoYiJvayIpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBFTkRUTFMgb2ssIHN3aXRjaCBiYWNrIHRvIGNsZWFyIHRleHQKQEAgLTI2OTYsNyArMjc2OSw3IEBACiAgICAgICAgICAgICBpbmRhdGEgPSBiIkZPT1xuIgogICAgICAgICAgICAgc2VydmVyID0gQXN5bmNvcmVFY2hvU2VydmVyKENFUlRGSUxFKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKQogICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoJzEyNy4wLjAuMScsIHNlcnZlci5wb3J0KSkKICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoCkBAIC0yNzI5LDcgKzI4MDIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgICAgICB3aXRoIHNlcnZlcjoKLSAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCkBAIC0yNzQ3LDEyICsyODIwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBhZGRyID0gcy5yZWN2ZnJvbV9pbnRvKGIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiWzpjb3VudF0KIAotICAgICAgICAgICAgICAgICMgKG5hbWUsIG1ldGhvZCwgd2hldGhlciB0byBleHBlY3Qgc3VjY2VzcywgKmFyZ3MpCisgICAgICAgICAgICAgICAgIyAobmFtZSwgbWV0aG9kLCBleHBlY3Qgc3VjY2Vzcz8sICphcmdzLCByZXR1cm4gdmFsdWUgZnVuYykKICAgICAgICAgICAgICAgICBzZW5kX21ldGhvZHMgPSBbCi0gICAgICAgICAgICAgICAgICAgICgnc2VuZCcsIHMuc2VuZCwgVHJ1ZSwgW10pLAotICAgICAgICAgICAgICAgICAgICAoJ3NlbmR0bycsIHMuc2VuZHRvLCBGYWxzZSwgWyJzb21lLmFkZHJlc3MiXSksCi0gICAgICAgICAgICAgICAgICAgICgnc2VuZGFsbCcsIHMuc2VuZGFsbCwgVHJ1ZSwgW10pLAorICAgICAgICAgICAgICAgICAgICAoJ3NlbmQnLCBzLnNlbmQsIFRydWUsIFtdLCBsZW4pLAorICAgICAgICAgICAgICAgICAgICAoJ3NlbmR0bycsIHMuc2VuZHRvLCBGYWxzZSwgWyJzb21lLmFkZHJlc3MiXSwgbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kYWxsJywgcy5zZW5kYWxsLCBUcnVlLCBbXSwgbGFtYmRhIHg6IE5vbmUpLAogICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAjIChuYW1lLCBtZXRob2QsIHdoZXRoZXIgdG8gZXhwZWN0IHN1Y2Nlc3MsICphcmdzKQogICAgICAgICAgICAgICAgIHJlY3ZfbWV0aG9kcyA9IFsKICAgICAgICAgICAgICAgICAgICAgKCdyZWN2Jywgcy5yZWN2LCBUcnVlLCBbXSksCiAgICAgICAgICAgICAgICAgICAgICgncmVjdmZyb20nLCBzLnJlY3Zmcm9tLCBGYWxzZSwgWyJzb21lLmFkZHJlc3MiXSksCkBAIC0yNzYxLDEwICsyODM1LDEzIEBACiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgIGRhdGFfcHJlZml4ID0gIlBSRUZJWF8iCiAKLSAgICAgICAgICAgICAgICBmb3IgbWV0aF9uYW1lLCBzZW5kX21ldGgsIGV4cGVjdF9zdWNjZXNzLCBhcmdzIGluIHNlbmRfbWV0aG9kczoKKyAgICAgICAgICAgICAgICBmb3IgKG1ldGhfbmFtZSwgc2VuZF9tZXRoLCBleHBlY3Rfc3VjY2VzcywgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldF92YWxfbWV0aCkgaW4gc2VuZF9tZXRob2RzOgogICAgICAgICAgICAgICAgICAgICBpbmRhdGEgPSAoZGF0YV9wcmVmaXggKyBtZXRoX25hbWUpLmVuY29kZSgnYXNjaWknKQogICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZW5kX21ldGgoaW5kYXRhLCAqYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHNlbmRfbWV0aChpbmRhdGEsICphcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gInNlbmRpbmcgd2l0aCB7fSIuZm9ybWF0KG1ldGhfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LCByZXRfdmFsX21ldGgoaW5kYXRhKSwgbXNnPW1zZykKICAgICAgICAgICAgICAgICAgICAgICAgIG91dGRhdGEgPSBzLnJlYWQoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3V0ZGF0YSAhPSBpbmRhdGEubG93ZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoCkBAIC0yODQ5LDcgKzI5MjYsNyBAQAogICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlcnZlci5fX2V4aXRfXywgTm9uZSwgTm9uZSkKICAgICAgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKEhPU1QsIHNlcnZlci5wb3J0KSkKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKKyAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHMsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlKQogICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCiAKICAgICAgICAgICAgICMgcmVjdi9yZWFkKDApIHNob3VsZCByZXR1cm4gbm8gZGF0YQpAQCAtMjg3MSw3ICsyOTQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMjkyNSwxMiArMzAwMiwxMiBAQAogICAgICAgICAgICAgICAgICAgICBjLmNvbm5lY3QoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgICAgICAjIFdpbGwgYXR0ZW1wdCBoYW5kc2hha2UgYW5kIHRpbWUgb3V0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc29ja2V0LnRpbWVvdXQsICJ0aW1lZCBvdXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldCwgYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3dyYXBfc29ja2V0LCBjKQogICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgIGMuY2xvc2UoKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICAgICAgICAgIGMgPSBzc2wud3JhcF9zb2NrZXQoYykKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRlc3Rfd3JhcF9zb2NrZXQoYykKICAgICAgICAgICAgICAgICAgICAgYy5zZXR0aW1lb3V0KDAuMikKICAgICAgICAgICAgICAgICAgICAgIyBXaWxsIGF0dGVtcHQgaGFuZHNoYWtlIGFuZCB0aW1lIG91dAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNvY2tldC50aW1lb3V0LCAidGltZWQgb3V0IiwKQEAgLTMwNTUsNyArMzEzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTMwODAsNyArMzE1Nyw3IEBACiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKICAgICAgICAgICAgICAgICAjIG5vdywgYWdhaW4KLSAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCkBAIC0zMzkwLDYgKzM0NjcsMTExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzLnNlbmRmaWxlKGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMucmVjdigxMDI0KSwgVEVTVF9EQVRBKQogCisgICAgICAgIGRlZiB0ZXN0X3Nlc3Npb24oc2VsZik6CisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUpCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorCisgICAgICAgICAgICAjIGZpcnN0IGNvbm5jZXRpb24gd2l0aG91dCBzZXNzaW9uCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQpCisgICAgICAgICAgICBzZXNzaW9uID0gc3RhdHNbJ3Nlc3Npb24nXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aW1lLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlc3Npb24udGltZW91dCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXNzaW9uLmhhc190aWNrZXQpCisgICAgICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPiAoMSwgMCwgMSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlc3Npb24udGlja2V0X2xpZmV0aW1lX2hpbnQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAwKQorCisgICAgICAgICAgICAjIHJldXNlIHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgc2Vzc2lvbj1zZXNzaW9uKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjIgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb24yLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uMiwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc2Vzc2lvbjIsIHNlc3Npb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uMi50aW1lLCBzZXNzaW9uLnRpbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uMi50aW1lb3V0LCBzZXNzaW9uLnRpbWVvdXQpCisKKyAgICAgICAgICAgICMgYW5vdGhlciBvbmUgd2l0aG91dCBzZXNzaW9uCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjMgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlc3Npb24zLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZXNzaW9uMywgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlc3Nfc3RhdCA9IHNlcnZlcl9jb250ZXh0LnNlc3Npb25fc3RhdHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2FjY2VwdCddLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2hpdHMnXSwgMSkKKworICAgICAgICAgICAgIyByZXVzZSBzZXNzaW9uIGFnYWluCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsIHNlc3Npb249c2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0c1snc2Vzc2lvbl9yZXVzZWQnXSkKKyAgICAgICAgICAgIHNlc3Npb240ID0gc3RhdHNbJ3Nlc3Npb24nXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uNC5pZCwgc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc2lvbjQsIHNlc3Npb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uNC50aW1lLCBzZXNzaW9uLnRpbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uNC50aW1lb3V0LCBzZXNzaW9uLnRpbWVvdXQpCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDIpCisKKyAgICAgICAgZGVmIHRlc3Rfc2Vzc2lvbl9oYW5kbGluZyhzZWxmKToKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorCisgICAgICAgICAgICBjb250ZXh0MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0Mi52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjb250ZXh0Mi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0Mi5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PWNvbnRleHQsIGNoYXR0eT1GYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgc2Vzc2lvbiBpcyBOb25lIGJlZm9yZSBoYW5kc2hha2UKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb24sIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uX3JldXNlZCwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24gPSBzLnNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24pCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXNzaW9uID0gb2JqZWN0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwgJ1ZhbHVlIGlzIG5vdCBhIFNTTFNlc3Npb24uJykKKworICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXNzaW9uID0gc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UuJykKKworICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgY2FuIHNldCBzZXNzaW9uIGJlZm9yZSBoYW5kc2hha2UgYW5kIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdhcyBlc3RhYmxpc2hlZAorICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbi5pZCwgc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb24sIHNlc3Npb24pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uX3JldXNlZCwgVHJ1ZSkKKworICAgICAgICAgICAgICAgIHdpdGggY29udGV4dDIud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCByZS11c2Ugc2Vzc2lvbiB3aXRoIGEgZGlmZmVyZW50IFNTTENvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXNzaW9uID0gc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2Vzc2lvbiByZWZlcnMgdG8gYSBkaWZmZXJlbnQgU1NMQ29udGV4dC4nKQorCiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6CiAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMzQwMiw3ICszNTg0LDcgQEAKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpAQCAtMzQyNCwxOCArMzYwNiwyMCBAQAogICAgICAgICAgICAgcGFzcwogCiAgICAgZm9yIGZpbGVuYW1lIGluIFsKLSAgICAgICAgQ0VSVEZJTEUsIFJFTU9URV9ST09UX0NFUlQsIEJZVEVTX0NFUlRGSUxFLAorICAgICAgICBDRVJURklMRSwgQllURVNfQ0VSVEZJTEUsCiAgICAgICAgIE9OTFlDRVJULCBPTkxZS0VZLCBCWVRFU19PTkxZQ0VSVCwgQllURVNfT05MWUtFWSwKICAgICAgICAgU0lHTkVEX0NFUlRGSUxFLCBTSUdORURfQ0VSVEZJTEUyLCBTSUdOSU5HX0NBLAogICAgICAgICBCQURDRVJULCBCQURLRVksIEVNUFRZQ0VSVF06CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkNhbid0IHJlYWQgY2VydGlmaWNhdGUgZmlsZSAlciIgJSBmaWxlbmFtZSkKIAotICAgIHRlc3RzID0gW0NvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0cywgU1NMRXJyb3JUZXN0cywgTWVtb3J5QklPVGVzdHNdCisgICAgdGVzdHMgPSBbCisgICAgICAgIENvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0cywgU1NMRXJyb3JUZXN0cywgTWVtb3J5QklPVGVzdHMsCisgICAgICAgIFNpbXBsZUJhY2tncm91bmRUZXN0cywKKyAgICBdCiAKICAgICBpZiBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKToKICAgICAgICAgdGVzdHMuYXBwZW5kKE5ldHdvcmtlZFRlc3RzKQotICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkQklPVGVzdHMpCiAKICAgICBpZiBfaGF2ZV90aHJlYWRzOgogICAgICAgICB0aHJlYWRfaW5mbyA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weQppbmRleCAwMDg5YWU4Li42Y2FjNzA5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0YXRpc3RpY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5CkBAIC0yMSw2ICsyMSwxMCBAQAogCiAjID09PSBIZWxwZXIgZnVuY3Rpb25zIGFuZCBjbGFzcyA9PT0KIAorZGVmIHNpZ24oeCk6CisgICAgIiIiUmV0dXJuIC0xLjAgZm9yIG5lZ2F0aXZlcywgaW5jbHVkaW5nIC0wLjAsIG90aGVyd2lzZSArMS4wLiIiIgorICAgIHJldHVybiBtYXRoLmNvcHlzaWduKDEsIHgpCisKIGRlZiBfbmFuX2VxdWFsKGEsIGIpOgogICAgICIiIlJldHVybiBUcnVlIGlmIGEgYW5kIGIgYXJlIGJvdGggdGhlIHNhbWUga2luZCBvZiBOQU4uCiAKQEAgLTI2NCw2ICsyNjgsMTMgQEAKICMgPT09IFRlc3QgdGhlIGhlbHBlcnMgPT09CiAjID09PT09PT09PT09PT09PT09PT09PT09PQogCitjbGFzcyBUZXN0U2lnbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGF0IHRoZSBoZWxwZXIgZnVuY3Rpb24gc2lnbigpIHdvcmtzIGNvcnJlY3RseS4iIiIKKyAgICBkZWYgdGVzdFplcm9lcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgc2lnbmVkIHplcm9lcyByZXBvcnQgdGhlaXIgc2lnbiBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbigwLjApLCArMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduKC0wLjApLCAtMSkKKwogCiAjIC0tLSBUZXN0cyBmb3IgYXBwcm94X2VxdWFsIC0tLQogCkBAIC02NTksNyArNjcwLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtT08gYW5kIGFib3ZlIikKICAgICBkZWYgdGVzdF9kb2NfdGVzdHMoc2VsZik6Ci0gICAgICAgIGZhaWxlZCwgdHJpZWQgPSBkb2N0ZXN0LnRlc3Rtb2Qoc3RhdGlzdGljcykKKyAgICAgICAgZmFpbGVkLCB0cmllZCA9IGRvY3Rlc3QudGVzdG1vZChzdGF0aXN0aWNzLCBvcHRpb25mbGFncz1kb2N0ZXN0LkVMTElQU0lTKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodHJpZWQsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFpbGVkLCAwKQogCkBAIC03MDIsOSArNzEzLDkgQEAKICAgICBkZWYgdGVzdF9kZWNpbWFsKHNlbGYpOgogICAgICAgICBEID0gRGVjaW1hbAogICAgICAgICBfZXhhY3RfcmF0aW8gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEyNSwgMTAwMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjEyLjM0NSIpKSwgKDEyMzQ1LCAxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXhhY3RfcmF0aW8oRCgiLTEuOTgiKSksICgtMTk4LCAxMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEsIDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIxMi4zNDUiKSksICgyNDY5LCAyMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCItMS45OCIpKSwgKC05OSwgNTApKQogCiAgICAgZGVmIHRlc3RfaW5mKHNlbGYpOgogICAgICAgICBJTkYgPSBmbG9hdCgiSU5GIikKQEAgLTc0MywxOCArNzU0LDE4IEBACiAKIAogY2xhc3MgRGVjaW1hbFRvUmF0aW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRlc3QgX2RlY2ltYWxfdG9fcmF0aW8gcHJpdmF0ZSBmdW5jdGlvbi4KKyAgICAjIFRlc3QgX2V4YWN0X3JhdGlvIHByaXZhdGUgZnVuY3Rpb24uCiAKICAgICBkZWYgdGVzdF9pbmZpbml0eShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgSU5GcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGluZiA9IERlY2ltYWwoJ0lORicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhpbmYpLCAoaW5mLCBOb25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1pbmYpLCAoLWluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oaW5mKSwgKGluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oLWluZiksICgtaW5mLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0X25hbihzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgTkFOcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGZvciBuYW4gaW4gKERlY2ltYWwoJ05BTicpLCBEZWNpbWFsKCdzTkFOJykpOgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKG5hbikKKyAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8obmFuKQogICAgICAgICAgICAgIyBCZWNhdXNlIE5BTnMgYWx3YXlzIGNvbXBhcmUgbm9uLWVxdWFsLCB3ZSBjYW5ub3QgdXNlIGFzc2VydEVxdWFsLgogICAgICAgICAgICAgIyBOb3IgY2FuIHdlIHVzZSBhbiBpZGVudGl0eSB0ZXN0LCBhcyB3ZSBkb24ndCBndWFyYW50ZWUgYW55dGhpbmcKICAgICAgICAgICAgICMgYWJvdXQgdGhlIG9iamVjdCBpZGVudGl0eS4KQEAgLTc2NywzMCArNzc4LDMwIEBACiAgICAgICAgIGZvciBkIGluIG51bWJlcnM6CiAgICAgICAgICAgICAjIEZpcnN0IHRlc3QgcG9zaXRpdmUgZGVjaW1hbHMuCiAgICAgICAgICAgICBhc3NlcnQgZCA+IDAKLSAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhkKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhkKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobnVtLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbiwgMCkKICAgICAgICAgICAgICMgVGhlbiB0ZXN0IG5lZ2F0aXZlIGRlY2ltYWxzLgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1kKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbygtZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKG51bSwgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkZW4sIDApCiAKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9leHBvbmVudChzZWxmKToKICAgICAgICAgIyBUZXN0IHJlc3VsdCB3aGVuIHRoZSBleHBvbmVudCBpcyBuZWdhdGl2ZS4KLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMC4xMjM0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQsIDEwMDAwKSkKKyAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKERlY2ltYWwoIjAuMTIzNCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsICg2MTcsIDUwMDApKQogCiAgICAgZGVmIHRlc3RfcG9zaXRpdmVfZXhwb25lbnQoc2VsZik6CiAgICAgICAgICMgVGVzdCByZXN1bHRzIHdoZW4gdGhlIGV4cG9uZW50IGlzIHBvc2l0aXZlLgotICAgICAgICB0ID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQwMDAwLCAxKSkKIAogICAgIGRlZiB0ZXN0X3JlZ3Jlc3Npb25fMjA1MzYoc2VsZik6CiAgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAyMDUzNi4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwNTM2Ci0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjFlMiIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMWUyIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEwMCwgMSkpCi0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjEuNDdlNSIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMS40N2U1IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDE0NzAwMCwgMSkpCiAKIApAQCAtOTcxLDYgKzk4MiwzMDEgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfbmFuX2VxdWFsKHgsIG5hbikpCiAKIAorY2xhc3MgRmFpbE5lZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3QgX2ZhaWxfbmVnIHByaXZhdGUgZnVuY3Rpb24uIiIiCisKKyAgICBkZWYgdGVzdF9wYXNzX3Rocm91Z2goc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLgorICAgICAgICB2YWx1ZXMgPSBbMSwgMi4wLCBGcmFjdGlvbigzKSwgRGVjaW1hbCg0KV0KKyAgICAgICAgbmV3ID0gbGlzdChzdGF0aXN0aWNzLl9mYWlsX25lZyh2YWx1ZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlcywgbmV3KQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVzX3JhaXNlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBuZWdhdGl2ZXMgcmFpc2UgYW4gZXhjZXB0aW9uLgorICAgICAgICBmb3IgeCBpbiBbMSwgMi4wLCBGcmFjdGlvbigzKSwgRGVjaW1hbCg0KV06CisgICAgICAgICAgICBzZXEgPSBbLXhdCisgICAgICAgICAgICBpdCA9IHN0YXRpc3RpY3MuX2ZhaWxfbmVnKHNlcSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0YXRpc3RpY3MuU3RhdGlzdGljc0Vycm9yLCBuZXh0LCBpdCkKKworICAgIGRlZiB0ZXN0X2Vycm9yX21zZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYSBnaXZlbiBlcnJvciBtZXNzYWdlIGlzIHVzZWQuCisgICAgICAgIG1zZyA9ICJiYWRuZXNzICMlZCIgJSByYW5kb20ucmFuZGludCgxMDAwMCwgOTk5OTkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQoc3RhdGlzdGljcy5fZmFpbF9uZWcoWy0xXSwgbXNnKSkKKyAgICAgICAgZXhjZXB0IHN0YXRpc3RpY3MuU3RhdGlzdGljc0Vycm9yIGFzIGU6CisgICAgICAgICAgICBlcnJtc2cgPSBlLmFyZ3NbMF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgZXhjZXB0aW9uLCBidXQgaXQgZGlkbid0IGhhcHBlbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJybXNnLCBtc2cpCisKKworY2xhc3MgVGVzdF9Qcm9kdWN0KE51bWVyaWNUZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGUgcHJpdmF0ZSBfcHJvZHVjdCBmdW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X2ludHMoc2VsZik6CisgICAgICAgIGRhdGEgPSBbMSwgMiwgNSwgNywgOV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9wcm9kdWN0KGRhdGEpLCAoMCwgNjMwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9wcm9kdWN0KGRhdGEqMTAwKSwgKDAsIDYzMCoqMTAwKSkKKworICAgIGRlZiB0ZXN0X2Zsb2F0cyhzZWxmKToKKyAgICAgICAgZGF0YSA9IFsxLjAsIDIuMCwgNC4wLCA4LjBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fcHJvZHVjdChkYXRhKSwgKDgsIDAuMjUpKQorCisgICAgZGVmIHRlc3Rfb3ZlcmZsb3coc2VsZik6CisgICAgICAgICMgVGVzdCB3aXRoIGZsb2F0cyB0aGF0IG92ZXJmbG93LgorICAgICAgICBkYXRhID0gWzFlMzAwXSo1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fcHJvZHVjdChkYXRhKSwgKDU5ODAsIDAuNjkyODI4Nzk1MTI4MzE5MykpCisKKyAgICBkZWYgdGVzdF9mcmFjdGlvbnMoc2VsZik6CisgICAgICAgIEYgPSBGcmFjdGlvbgorICAgICAgICBkYXRhID0gW0YoMTQsIDIzKSwgRig2OSwgMSksIEYoNjY1LCA1MjkpLCBGKDI5OSwgMTA1KSwgRigxNjgzLCAzOSldCisgICAgICAgIGV4cCwgbWFudCA9IHN0YXRpc3RpY3MuX3Byb2R1Y3QoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFudCwgRigyKjMqNyoxMSoxNyoxOSwgMjMpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtYW50LCBGKSkKKyAgICAgICAgIyBNaXhlZCBGcmFjdGlvbiBhbmQgaW50LgorICAgICAgICBkYXRhID0gWzMsIDI1LCBGKDIsIDE1KV0KKyAgICAgICAgZXhwLCBtYW50ID0gc3RhdGlzdGljcy5fcHJvZHVjdChkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW50LCBGKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobWFudCwgRikpCisKKyAgICBkZWYgdGVzdF9kZWNpbWFsKHNlbGYpOgorICAgICAgICBEID0gRGVjaW1hbAorICAgICAgICBkYXRhID0gW0QoJzI0LjUnKSwgRCgnMTcuNicpLCBEKCcwLjAyNScpLCBEKCcxLjMnKV0KKyAgICAgICAgZXhwZWN0ZWQgPSBEKCcxNC4wMTQwMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRpc3RpY3MuX3Byb2R1Y3QoZGF0YSksICgwLCBleHBlY3RlZCkpCisKKyAgICBkZWYgdGVzdF9taXhlZF9kZWNpbWFsX2Zsb2F0KHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBtaXhlZCBEZWNpbWFsIGFuZCBmbG9hdCByYWlzZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3RhdGlzdGljcy5fcHJvZHVjdCwgWzEuMCwgRGVjaW1hbCgxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3RhdGlzdGljcy5fcHJvZHVjdCwgW0RlY2ltYWwoMSksIDEuMF0pCisKKworQHVuaXR0ZXN0LnNraXBJZihUcnVlLCAiRklYTUU6IHRlc3RzIGtub3duIHRvIGZhaWwsIHNlZSBpc3N1ZSAjMjcxODEiKQorY2xhc3MgVGVzdF9OdGhfUm9vdChOdW1lcmljVGVzdENhc2UpOgorICAgICIiIlRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHByaXZhdGUgX250aF9yb290IGZ1bmN0aW9uLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLm5yb290ID0gc3RhdGlzdGljcy5fbnRoX3Jvb3QKKworICAgICMgLS0tIFNwZWNpYWwgdmFsdWVzIChpbmZpbml0aWVzLCBOQU5zLCB6ZXJvZXMpIC0tLQorCisgICAgZGVmIHRlc3RfZmxvYXRfTkFOKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0aGUgcm9vdCBvZiBhIGZsb2F0IE5BTiBpcyBhIGZsb2F0IE5BTi4KKyAgICAgICAgTkFOID0gZmxvYXQoJ25hbicpCisgICAgICAgIGZvciBuIGluIHJhbmdlKDIsIDkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLm5yb290KE5BTiwgbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihyZXN1bHQpKQorCisgICAgZGVmIHRlc3RfZGVjaW1hbF9RTkFOKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlICBiZWhhdmlvdXIgd2hlbiB0YWtpbmcgdGhlIHJvb3Qgb2YgYSBEZWNpbWFsIHF1aWV0IE5BTi4KKyAgICAgICAgTkFOID0gZGVjaW1hbC5EZWNpbWFsKCduYW4nKQorICAgICAgICB3aXRoIGRlY2ltYWwubG9jYWxjb250ZXh0KCkgYXMgY3R4OgorICAgICAgICAgICAgY3R4LnRyYXBzW2RlY2ltYWwuSW52YWxpZE9wZXJhdGlvbl0gPSAxCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhkZWNpbWFsLkludmFsaWRPcGVyYXRpb24sIHNlbGYubnJvb3QsIE5BTiwgNSkKKyAgICAgICAgICAgIGN0eC50cmFwc1tkZWNpbWFsLkludmFsaWRPcGVyYXRpb25dID0gMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubnJvb3QoTkFOLCA1KS5pc19xbmFuKCkpCisKKyAgICBkZWYgdGVzdF9kZWNpbWFsX1NOQU4oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRha2luZyB0aGUgcm9vdCBvZiBhIERlY2ltYWwgc05BTiBhbHdheXMgcmFpc2VzLgorICAgICAgICBzTkFOID0gZGVjaW1hbC5EZWNpbWFsKCdzbmFuJykKKyAgICAgICAgd2l0aCBkZWNpbWFsLmxvY2FsY29udGV4dCgpIGFzIGN0eDoKKyAgICAgICAgICAgIGN0eC50cmFwc1tkZWNpbWFsLkludmFsaWRPcGVyYXRpb25dID0gMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLCBzZWxmLm5yb290LCBzTkFOLCA1KQorICAgICAgICAgICAgY3R4LnRyYXBzW2RlY2ltYWwuSW52YWxpZE9wZXJhdGlvbl0gPSAwCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhkZWNpbWFsLkludmFsaWRPcGVyYXRpb24sIHNlbGYubnJvb3QsIHNOQU4sIDUpCisKKyAgICBkZWYgdGVzdF9pbmYoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSByb290IG9mIGluZmluaXR5IGlzIGluZmluaXR5LgorICAgICAgICBmb3IgSU5GIGluIChmbG9hdCgnaW5mJyksIGRlY2ltYWwuRGVjaW1hbCgnaW5mJykpOgorICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMiwgOSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uLCBpbmY9SU5GKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm5yb290KElORiwgbiksIElORikKKworICAgICMgRklYTUU6IG5lZWQgdG8gY2hlY2sgRGVjaW1hbCB6ZXJvZXMgdG9vLgorICAgIGRlZiB0ZXN0X3plcm8oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSByb290IG9mICswLjAgaXMgKzAuMC4KKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMiwgMTEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLm5yb290KCswLjAsIG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDAuMCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ24ocmVzdWx0KSwgKzEpCisKKyAgICAjIEZJWE1FOiBuZWVkIHRvIGNoZWNrIERlY2ltYWwgemVyb2VzIHRvby4KKyAgICBkZWYgdGVzdF9uZWdfemVybyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHJvb3Qgb2YgLTAuMCBpcyAtMC4wLgorICAgICAgICBmb3IgbiBpbiByYW5nZSgyLCAxMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYubnJvb3QoLTAuMCwgbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMC4wKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbihyZXN1bHQpLCAtMSkKKworICAgICMgLS0tIFRlc3QgcmV0dXJuIHR5cGVzIC0tLQorCisgICAgZGVmIGNoZWNrX3Jlc3VsdF90eXBlKHNlbGYsIHgsIG4sIG91dHR5cGUpOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5ucm9vdCh4LCBuKSwgb3V0dHlwZSkKKyAgICAgICAgY2xhc3MgTXlTdWJjbGFzcyh0eXBlKHgpKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYubnJvb3QoTXlTdWJjbGFzcyh4KSwgbiksIG91dHR5cGUpCisKKyAgICBkZWYgdGVzdERlY2ltYWwoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IERlY2ltYWwgYXJndW1lbnRzIHJldHVybiBEZWNpbWFsIHJlc3VsdHMuCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0X3R5cGUoZGVjaW1hbC5EZWNpbWFsKCczMy4zJyksIDMsIGRlY2ltYWwuRGVjaW1hbCkKKworICAgIGRlZiB0ZXN0RmxvYXQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IG90aGVyIGFyZ3VtZW50cyByZXR1cm4gZmxvYXQgcmVzdWx0cy4KKyAgICAgICAgZm9yIHggaW4gKDAuMiwgRnJhY3Rpb24oMTEsIDcpLCA5MSk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdF90eXBlKHgsIDYsIGZsb2F0KQorCisgICAgIyAtLS0gVGVzdCBiYWQgaW5wdXQgLS0tCisKKyAgICBkZWYgdGVzdEJhZE9yZGVyVHlwZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IG5yb290IHJhaXNlcyBjb3JyZWN0bHkgd2hlbiBuIGhhcyB0aGUgd3JvbmcgdHlwZS4KKyAgICAgICAgZm9yIG4gaW4gKDUuMCwgMmosIE5vbmUsICd4JywgYid4JywgW10sIHt9LCBzZXQoKSwgc2lnbik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5ucm9vdCwgMi41LCBuKQorCisgICAgZGVmIHRlc3RCYWRPcmRlclZhbHVlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgbnJvb3QgcmFpc2VzIGNvcnJlY3RseSB3aGVuIG4gaGFzIGEgd3JvbmcgdmFsdWUuCisgICAgICAgIGZvciBuIGluICgxLCAwLCAtMSwgLTIsIC04Nyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYubnJvb3QsIDIuNSwgbikKKworICAgIGRlZiB0ZXN0QmFkVHlwZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IG5yb290IHJhaXNlcyBjb3JyZWN0bHkgd2hlbiB4IGhhcyB0aGUgd3JvbmcgdHlwZS4KKyAgICAgICAgZm9yIHggaW4gKE5vbmUsICd4JywgYid4JywgW10sIHt9LCBzZXQoKSwgc2lnbik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh4PXgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5ucm9vdCwgeCwgMykKKworICAgIGRlZiB0ZXN0TmVnYXRpdmVFcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IG5lZ2F0aXZlIHggcmFpc2VzIGNvcnJlY3RseS4KKyAgICAgICAgeCA9IHJhbmRvbS51bmlmb3JtKC0yMC4wLCAtMC4xKQorICAgICAgICBhc3NlcnQgeCA8IDAKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMywgNyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh4PXgsIG49bik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5ucm9vdCwgeCwgbikKKyAgICAgICAgIyBBbmQgRGVjaW1hbC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5ucm9vdCwgRGVjaW1hbCgtMjcpLCAzKQorCisgICAgIyAtLS0gVGVzdCB0aGF0IG5yb290IGlzIG5ldmVyIHdvcnNlIHRoYW4gY2FsbGluZyBtYXRoLnBvdygpIC0tLQorCisgICAgZGVmIGNoZWNrX2Vycm9yX2lzX25vX3dvcnNlKHNlbGYsIHgsIG4pOgorICAgICAgICB5ID0gbWF0aC5wb3coeCwgbikKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoeD14LCBuPW4sIHk9eSk6CisgICAgICAgICAgICBlcnIxID0gYWJzKHNlbGYubnJvb3QoeSwgbikgLSB4KQorICAgICAgICAgICAgZXJyMiA9IGFicyhtYXRoLnBvdyh5LCAxLjAvbikgLSB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZXJyMSwgZXJyMikKKworICAgIGRlZiB0ZXN0Q29tcGFyZVdpdGhQb3dTbWFsbChzZWxmKToKKyAgICAgICAgIyBDb21wYXJlIG5yb290IHdpdGggcG93IGZvciBzbWFsbCB2YWx1ZXMgb2YgeC4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjAwKToKKyAgICAgICAgICAgIHggPSByYW5kb20udW5pZm9ybSgxZS05LCAxLjAtMWUtOSkKKyAgICAgICAgICAgIG4gPSByYW5kb20uY2hvaWNlKHJhbmdlKDIsIDE2KSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZXJyb3JfaXNfbm9fd29yc2UoeCwgbikKKworICAgIGRlZiB0ZXN0Q29tcGFyZVdpdGhQb3dNZWRpdW0oc2VsZik6CisgICAgICAgICMgQ29tcGFyZSBucm9vdCB3aXRoIHBvdyBmb3IgbWVkaXVtLXNpemVkIHZhbHVlcyBvZiB4LgorICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgorICAgICAgICAgICAgeCA9IHJhbmRvbS51bmlmb3JtKDEuMCwgMTAwLjApCisgICAgICAgICAgICBuID0gcmFuZG9tLmNob2ljZShyYW5nZSgyLCAxNikpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Vycm9yX2lzX25vX3dvcnNlKHgsIG4pCisKKyAgICBkZWYgdGVzdENvbXBhcmVXaXRoUG93TGFyZ2Uoc2VsZik6CisgICAgICAgICMgQ29tcGFyZSBucm9vdCB3aXRoIHBvdyBmb3IgbGFyZ2lzaCB2YWx1ZXMgb2YgeC4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjAwKToKKyAgICAgICAgICAgIHggPSByYW5kb20udW5pZm9ybSgxMDAuMCwgMTAwMDAuMCkKKyAgICAgICAgICAgIG4gPSByYW5kb20uY2hvaWNlKHJhbmdlKDIsIDE2KSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZXJyb3JfaXNfbm9fd29yc2UoeCwgbikKKworICAgIGRlZiB0ZXN0Q29tcGFyZVdpdGhQb3dIdWdlKHNlbGYpOgorICAgICAgICAjIENvbXBhcmUgbnJvb3Qgd2l0aCBwb3cgZm9yIGh1Z2UgdmFsdWVzIG9mIHguCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6CisgICAgICAgICAgICB4ID0gcmFuZG9tLnVuaWZvcm0oMWUyMCwgMWU1MCkKKyAgICAgICAgICAgICMgV2UgcmVzdHJpY3QgdGhlIG9yZGVyIGhlcmUgdG8gYXZvaWQgYW4gT3ZlcmZsb3cgZXJyb3IuCisgICAgICAgICAgICBuID0gcmFuZG9tLmNob2ljZShyYW5nZSgyLCA3KSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZXJyb3JfaXNfbm9fd29yc2UoeCwgbikKKworICAgICMgLS0tIFRlc3QgZm9yIG51bWVyaWNhbGx5IGNvcnJlY3QgYW5zd2VycyAtLS0KKworICAgIGRlZiB0ZXN0RXhhY3RQb3dlcnMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHNtYWxsIGludGVnZXIgcG93ZXJzIGFyZSBjYWxjdWxhdGVkIGV4YWN0bHkuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDUxKToKKyAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKDIsIDE2KToKKyAgICAgICAgICAgICAgICBpZiAoaSwgbikgPT0gKDM1LCAxMyk6CisgICAgICAgICAgICAgICAgICAgICMgU2VlIHRlc3RFeHBlY3RlZEZhaWx1cmUzNXAxMworICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGk9aSwgbj1uKToKKyAgICAgICAgICAgICAgICAgICAgeCA9IGkqKm4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm5yb290KHgsIG4pLCBpKQorCisgICAgZGVmIHRlc3RFeHBlY3RlZEZhaWx1cmUzNXAxMyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBleHBlY3RlZCBmYWlsdXJlIDM1KioxMyBpcyBhbG1vc3QgZXhhY3QuCisgICAgICAgIHggPSAzNSoqMTMKKyAgICAgICAgZXJyID0gYWJzKHNlbGYubnJvb3QoeCwgMTMpIC0gMzUpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGVyciwgMC4wMDAwMDAwMDEpCisKKyAgICBkZWYgdGVzdE9uZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHJvb3Qgb2YgMS4wIGlzIDEuMC4KKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMiwgMTEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnJvb3QoMS4wLCBuKSwgMS4wKQorCisgICAgZGVmIHRlc3RGcmFjdGlvbihzZWxmKToKKyAgICAgICAgIyBUZXN0IEZyYWN0aW9uIHJlc3VsdHMuCisgICAgICAgIHggPSBGcmFjdGlvbig4OSwgNzUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5ucm9vdCh4KioxMiwgMTIpLCBmbG9hdCh4KSkKKworICAgIGRlZiB0ZXN0SW50KHNlbGYpOgorICAgICAgICAjIFRlc3QgaW50IHJlc3VsdHMuCisgICAgICAgIHggPSAyNzYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm5yb290KHgqKjI0LCAyNCksIHgpCisKKyAgICBkZWYgdGVzdEJpZ0ludChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaW50cyB0b28gYmlnIHRvIGNvbnZlcnQgdG8gZmxvYXRzIHdvcmsuCisgICAgICAgIGJpZ251bSA9IDEwKioyMCAgIyBUaGF0J3Mgbm90IHRoYXQgYmlnLi4uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5ucm9vdChiaWdudW0qKjI4MCwgMjgwKSwgYmlnbnVtKQorICAgICAgICAjIENhbiB3ZSBtYWtlIGl0IGJpZ2dlcj8KKyAgICAgICAgaHVnZW51bSA9IGJpZ251bSoqNTAKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBpdCBpcyB0b28gYmlnIHRvIGNvbnZlcnQgdG8gYSBmbG9hdC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeSA9IGZsb2F0KGh1Z2VudW0pCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ2h1Z2VudW0gaXMgbm90IGJpZyBlbm91Z2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnJvb3QoaHVnZW51bSwgNTApLCBmbG9hdChiaWdudW0pKQorCisgICAgZGVmIHRlc3REZWNpbWFsKHNlbGYpOgorICAgICAgICAjIFRlc3QgRGVjaW1hbCByZXN1bHRzLgorICAgICAgICBmb3IgcyBpbiAnMy43NTkgNjQuMDI3IDUyMzQuMzM4Jy5zcGxpdCgpOgorICAgICAgICAgICAgeCA9IGRlY2ltYWwuRGVjaW1hbChzKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoeD14KToKKyAgICAgICAgICAgICAgICBhID0gc2VsZi5ucm9vdCh4Kio1LCA1KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgeCkKKyAgICAgICAgICAgICAgICBhID0gc2VsZi5ucm9vdCh4KioxNywgMTcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCB4KQorCisgICAgZGVmIHRlc3RGbG9hdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGZsb2F0IHJlc3VsdHMuCisgICAgICAgIGZvciB4IGluICgzLjA0ZS0xNiwgMTguMjUsIDQ2MS4zLCAxLjllMTcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoeD14KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnJvb3QoeCoqMywgMyksIHgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm5yb290KHgqKjgsIDgpLCB4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5ucm9vdCh4KioxMSwgMTEpLCB4KQorCisKK2NsYXNzIFRlc3RfTnRoUm9vdF9OUyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCBpbnRlcm5hbHMgb2YgdGhlIG50aF9yb290IGZ1bmN0aW9uLCBoaWRkZW4gaW4gX25yb290X05TLiIiIgorCisgICAgZGVmIHRlc3RfY2xhc3NfY2Fubm90X2JlX2luc3RhbnRpYXRlZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgX25yb290X05TIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQuCisgICAgICAgICMgSXQgc2hvdWxkIGJlIGEgbmFtZXNwYWNlLCBsaWtlIGluIEMrKyBvciBDIywgYnV0IFB5dGhvbgorICAgICAgICAjIGxhY2tzIHRoYXQgZmVhdHVyZSBhbmQgc28gd2UgaGF2ZSB0byBtYWtlIGRvIHdpdGggYSBjbGFzcy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdGF0aXN0aWNzLl9ucm9vdF9OUykKKworCiAjID09PSBUZXN0cyBmb3IgcHVibGljIGZ1bmN0aW9ucyA9PT0KIAogY2xhc3MgVW5pdmFyaWF0ZUNvbW1vbk1peGluOgpAQCAtMTA4MiwxMyArMTM4OCwxMyBAQAogICAgIE5vdCBhbGwgdGVzdHMgdG8gZG8gd2l0aCB0eXBlcyBuZWVkIGdvIGluIHRoaXMgY2xhc3MuIE9ubHkgdGhvc2UgdGhhdAogICAgIHJlbHkgb24gdGhlIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgc2FtZSB0eXBlIGFzIGl0cyBpbnB1dCBkYXRhLgogICAgICIiIgotICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCi0gICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgotICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KKyAgICBkZWYgcHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3Qoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgdHlwZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGJlIGNvbnNlcnZlZC4iIiIKICAgICAgICAgY2xhc3MgTXlGbG9hdChmbG9hdCk6CiAgICAgICAgICAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX190cnVlZGl2X18ob3RoZXIpKQorICAgICAgICAgICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3J0cnVlZGl2X18ob3RoZXIpKQogICAgICAgICAgICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX19zdWJfXyhvdGhlcikpCiAgICAgICAgICAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIpOgpAQCAtMTA5OCw5ICsxNDA0LDE0IEBACiAgICAgICAgICAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX2FkZF9fKG90aGVyKSkKICAgICAgICAgICAgIF9fcmFkZF9fID0gX19hZGRfXworICAgICAgICByZXR1cm4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCkKIAorICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCisgICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgorICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KICAgICAgICAgZGF0YSA9IHNlbGYucHJlcGFyZV9kYXRhKCkKLSAgICAgICAgZm9yIGtpbmQgaW4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCk6CisgICAgICAgIGZvciBraW5kIGluIHNlbGYucHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3QoKToKICAgICAgICAgICAgIGQgPSBba2luZCh4KSBmb3IgeCBpbiBkYXRhXQogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5mdW5jKGQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocmVzdWx0KSwga2luZCkKQEAgLTEyNzUsMTIgKzE1ODYsMTYgQEAKICAgICAgICAgZm9yIHggaW4gKDIzLCA0Mi41LCAxLjNlMTUsIEZyYWN0aW9uKDE1LCAxOSksIERlY2ltYWwoJzAuMjgnKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhbeF0pLCB4KQogCisgICAgZGVmIHByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdChzZWxmKToKKyAgICAgICAgcmV0dXJuICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKQorCiAgICAgZGVmIHRlc3RfcmVwZWF0ZWRfc2luZ2xlX3ZhbHVlKHNlbGYpOgogICAgICAgICAjIFRoZSBhdmVyYWdlIG9mIGEgc2luZ2xlIHJlcGVhdGVkIHZhbHVlIGlzIHRoZSB2YWx1ZSBpdHNlbGYuCi0gICAgICAgIGZvciB4IGluICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKToKKyAgICAgICAgZm9yIHggaW4gc2VsZi5wcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3QoKToKICAgICAgICAgICAgIGZvciBjb3VudCBpbiAoMiwgNSwgMTAsIDIwKToKLSAgICAgICAgICAgICAgICBkYXRhID0gW3hdKmNvdW50Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoeD14LCBjb3VudD1jb3VudCk6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBbeF0qY291bnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCiAKIAogY2xhc3MgVGVzdE1lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgpAQCAtMTMwNCw3ICsxNjE5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDIyLjAxNTYyNSkKIAogICAgIGRlZiB0ZXN0X2RlY2ltYWxzKHNlbGYpOgotICAgICAgICAjIFRlc3QgbWVhbiB3aXRoIGludHMuCisgICAgICAgICMgVGVzdCBtZWFuIHdpdGggRGVjaW1hbHMuCiAgICAgICAgIEQgPSBEZWNpbWFsCiAgICAgICAgIGRhdGEgPSBbRCgiMS42MzQiKSwgRCgiMi41MTciKSwgRCgiMy45MTIiKSwgRCgiNC4wNzIiKSwgRCgiNS44MTMiKV0KICAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKQEAgLTEzNzksNiArMTY5NCw5NCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLm1lYW4oW3RpbnldKm4pLCB0aW55KQogCiAKK2NsYXNzIFRlc3RIYXJtb25pY01lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5mdW5jID0gc3RhdGlzdGljcy5oYXJtb25pY19tZWFuCisKKyAgICBkZWYgcHJlcGFyZV9kYXRhKHNlbGYpOgorICAgICAgICAjIE92ZXJyaWRlIG1peGluIG1ldGhvZC4KKyAgICAgICAgdmFsdWVzID0gc3VwZXIoKS5wcmVwYXJlX2RhdGEoKQorICAgICAgICB2YWx1ZXMucmVtb3ZlKDApCisgICAgICAgIHJldHVybiB2YWx1ZXMKKworICAgIGRlZiBwcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3Qoc2VsZik6CisgICAgICAgICMgT3ZlcnJpZGUgbWl4aW4gbWV0aG9kLgorICAgICAgICByZXR1cm4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC4xMjUnKSkKKworICAgIGRlZiB0ZXN0X3plcm8oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGhhcm1vbmljIG1lYW4gcmV0dXJucyB6ZXJvIHdoZW4gZ2l2ZW4gemVyby4KKyAgICAgICAgdmFsdWVzID0gWzEsIDAsIDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKHZhbHVlcyksIDApCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaGFybW9uaWMgbWVhbiByYWlzZXMgd2hlbiBnaXZlbiBhIG5lZ2F0aXZlIHZhbHVlLgorICAgICAgICBleGMgPSBzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvcgorICAgICAgICBmb3IgdmFsdWVzIGluIChbLTFdLCBbMSwgLTIsIDNdKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHZhbHVlcz12YWx1ZXMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2VsZi5mdW5jLCB2YWx1ZXMpCisKKyAgICBkZWYgdGVzdF9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFybW9uaWMgbWVhbiB3aXRoIGludHMuCisgICAgICAgIGRhdGEgPSBbMiwgNCwgNCwgOCwgMTYsIDE2XQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgNio0LzUpCisKKyAgICBkZWYgdGVzdF9mbG9hdHNfZXhhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggc29tZSBjYXJlZnVsbHkgY2hvc2VuIGZsb2F0cy4KKyAgICAgICAgZGF0YSA9IFsxLzgsIDEvNCwgMS80LCAxLzIsIDEvMl0KKyAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDEvNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoWzAuMjUsIDAuNSwgMS4wLCAxLjBdKSwgMC41KQorCisgICAgZGVmIHRlc3Rfc2luZ2xldG9uX2xpc3RzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBoYXJtb25pYyBtZWFuKFt4XSkgcmV0dXJucyAoYXBwcm94aW1hdGVseSkgeC4KKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoMSwgMTAxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFt4XSksIHgpCisKKyAgICBkZWYgdGVzdF9kZWNpbWFsc19leGFjdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBzb21lIGNhcmVmdWxseSBjaG9zZW4gRGVjaW1hbHMuCisgICAgICAgIEQgPSBEZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFtEKDE1KSwgRCgzMCksIEQoNjApLCBEKDYwKV0pLCBEKDMwKSkKKyAgICAgICAgZGF0YSA9IFtEKCIwLjA1IiksIEQoIjAuMTAiKSwgRCgiMC4yMCIpLCBEKCIwLjIwIildCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBEKCIwLjEwIikpCisgICAgICAgIGRhdGEgPSBbRCgiMS42OCIpLCBEKCIwLjMyIiksIEQoIjUuOTQiKSwgRCgiMi43NSIpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRCg2NjUyOCkvNzA3MjMpCisKKyAgICBkZWYgdGVzdF9mcmFjdGlvbnMoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggRnJhY3Rpb25zLgorICAgICAgICBGID0gRnJhY3Rpb24KKyAgICAgICAgZGF0YSA9IFtGKDEsIDIpLCBGKDIsIDMpLCBGKDMsIDQpLCBGKDQsIDUpLCBGKDUsIDYpLCBGKDYsIDcpLCBGKDcsIDgpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRig3KjQyMCwgNDAyOSkpCisKKyAgICBkZWYgdGVzdF9pbmYoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggaW5maW5pdHkuCisgICAgICAgIHZhbHVlcyA9IFsyLjAsIGZsb2F0KCdpbmYnKSwgMS4wXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyh2YWx1ZXMpLCAyLjApCisKKyAgICBkZWYgdGVzdF9uYW4oc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggTkFOcy4KKyAgICAgICAgdmFsdWVzID0gWzIuMCwgZmxvYXQoJ25hbicpLCAxLjBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKHNlbGYuZnVuYyh2YWx1ZXMpKSkKKworICAgIGRlZiB0ZXN0X211bHRpcGx5X2RhdGFfcG9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgbXVsdGlwbHlpbmcgZXZlcnkgZGF0YSBwb2ludCBieSBhIGNvbnN0YW50LgorICAgICAgICBjID0gMTExCisgICAgICAgIGRhdGEgPSBbMy40LCA0LjUsIDQuOSwgNi43LCA2LjgsIDcuMiwgOC4wLCA4LjEsIDkuNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLmZ1bmMoZGF0YSkqYworICAgICAgICByZXN1bHQgPSBzZWxmLmZ1bmMoW3gqYyBmb3IgeCBpbiBkYXRhXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZG91YmxlZF9kYXRhKHNlbGYpOgorICAgICAgICAjIEhhcm1vbmljIG1lYW4gb2YgW2EsYi4uLnpdIHNob3VsZCBiZSBzYW1lIGFzIGZvciBbYSxhLGIsYi4uLnosel0uCisgICAgICAgIGRhdGEgPSBbcmFuZG9tLnVuaWZvcm0oMSwgNSkgZm9yIF8gaW4gcmFuZ2UoMTAwMCldCisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5mdW5jKGRhdGEpCisgICAgICAgIGFjdHVhbCA9IHNlbGYuZnVuYyhkYXRhKjIpCisgICAgICAgIHNlbGYuYXNzZXJ0QXBwcm94RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworCiBjbGFzcyBUZXN0TWVkaWFuKE51bWVyaWNUZXN0Q2FzZSwgQXZlcmFnZU1peGluKToKICAgICAjIENvbW1vbiB0ZXN0cyBmb3IgbWVkaWFuIGFuZCBhbGwgbWVkaWFuLiogZnVuY3Rpb25zLgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE2MDAsNiArMjAwMywyMiBAQAogICAgICAgICBkYXRhID0gWzIyMCwgMjIwLCAyNDAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjgwLCAyODAsIDMwMCwgMzIwLCAzNDBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEsIDIwKSwgMjY1LjApCiAKKyAgICBkZWYgdGVzdF9kYXRhX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgICMgVGVzdCBtZWRpYW5fZ3JvdXBlZCB3aXRoIHN0ciwgYnl0ZXMgZGF0YSB0eXBlcyBmb3IgZGF0YSBhbmQgaW50ZXJ2YWwKKyAgICAgICAgZGF0YSA9IFsiIiwgIiIsICIiXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSkKKyAgICAgICAgIy0tLQorICAgICAgICBkYXRhID0gW2IiIiwgYiIiLCBiIiJdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhKQorICAgICAgICAjLS0tCisgICAgICAgIGRhdGEgPSBbMSwgMiwgM10KKyAgICAgICAgaW50ZXJ2YWwgPSAiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisgICAgICAgICMtLS0KKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzXQorICAgICAgICBpbnRlcnZhbCA9IGIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisKIAogY2xhc3MgVGVzdE1vZGUoTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgogICAgICMgVGVzdCBjYXNlcyBmb3IgdGhlIGRpc2NyZXRlIHZlcnNpb24gb2YgbW9kZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CmluZGV4IDc3MmNkMDYuLjcyYjE5MTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQpAQCAtMjMsOSArMjMsOSBAQAogICAgICIiIgogICAgIG5ld190ZXh0ID0gcmUuZXNjYXBlKHRleHQpCiAgICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKHJlLmVzY2FwZShhbXBtKSwgYW1wbSkKLSAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UoJ1wlJywgJyUnKQotICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZSgnXDonLCAnOicpCi0gICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKCdcPycsICc/JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcJScsICclJykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcOicsICc6JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcPycsICc/JykKICAgICByZXR1cm4gbmV3X3RleHQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQppbmRleCA4N2NmZmU4Li4zN2FjZTIzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQpAQCAtMTIxLDkgKzEyMSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYidceDAxJyAiIiIpLCBieXRlKDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBiJ1x4ODEnICIiIiksIGJ5dGUoMHg4MSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYidceDgxJyAiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGInXHUxODgxJyAiIiIpLCBiJ1xcJyArIGIndTE4ODEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidcdTE4ODEnICIiIiksIGInXFwnICsgYid1MTg4MScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYidcdTE4ODEnICIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYidcVTAwMDFkMTIwJyAiIiIpLCBiJ1xcJyArIGInVTAwMDFkMTIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXFUwMDAxZDEyMCcgIiIiKSwgYidcXCcgKyBiJ1UwMDAxZDEyMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYidcVTAwMDFkMTIwJyAiIiIpCiAKICAgICBkZWYgdGVzdF9ldmFsX2J5dGVzX2luY29tcGxldGUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQppbmRleCA4NTEyNmU2Li4yMmVhYzMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgcmUKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlIGFzIGRhdGV0aW1lX2RhdGUKIApAQCAtMTMwLDcgKzEyOSw3IEBACiAgICAgZGVmIHRlc3RfcGF0dGVybl9lc2NhcGluZyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYW55IGNoYXJhY3RlcnMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgdGhhdCBtaWdodCBiZSB0YWtlbiBhcwogICAgICAgICAjIHJlZ2V4IHN5bnRheCBpcyBlc2NhcGVkLgotICAgICAgICBwYXR0ZXJuX3N0cmluZyA9IHNlbGYudGltZV9yZS5wYXR0ZXJuKCJcZCsiKQorICAgICAgICBwYXR0ZXJuX3N0cmluZyA9IHNlbGYudGltZV9yZS5wYXR0ZXJuKHIiXGQrIikKICAgICAgICAgc2VsZi5hc3NlcnRJbihyIlxcZFwrIiwgcGF0dGVybl9zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIiVzIGRvZXMgbm90IGhhdmUgcmUgY2hhcmFjdGVycyBlc2NhcGVkIHByb3Blcmx5IiAlCiAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybl9zdHJpbmcpCkBAIC0xNTMsOCArMTUyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyB1c2luZyAnJXMnOyBncm91cCAnYScgPSAnJXMnLCBncm91cCAnYicgPSAlcyciICUKICAgICAgICAgICAgICAgICAgICAgICAgICAoZm91bmQuc3RyaW5nLCBmb3VuZC5yZS5wYXR0ZXJuLCBmb3VuZC5ncm91cCgnYScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZC5ncm91cCgnYicpKSkKLSAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ2EnLCdBJywnYicsJ0InLCdjJywnZCcsJ0gnLCdJJywnaicsJ20nLCdNJywncCcsJ1MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnVScsJ3cnLCdXJywneCcsJ1gnLCd5JywnWScsJ1onLCclJyk6CisgICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdhJywnQScsJ2InLCdCJywnYycsJ2QnLCdHJywnSCcsJ0knLCdqJywnbScsJ00nLCdwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1MnLCd1JywnVScsJ1YnLCd3JywnVycsJ3gnLCdYJywneScsJ1knLCdaJywnJScpOgogICAgICAgICAgICAgY29tcGlsZWQgPSBzZWxmLnRpbWVfcmUuY29tcGlsZSgiJSIgKyBkaXJlY3RpdmUpCiAgICAgICAgICAgICBmb3VuZCA9IGNvbXBpbGVkLm1hdGNoKHRpbWUuc3RyZnRpbWUoIiUiICsgZGlyZWN0aXZlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgIk1hdGNoaW5nIGZhaWxlZCBvbiAnJXMnIHVzaW5nICclcycgcmVnZXgiICUKQEAgLTE3MSw5ICsxNzAsOSBAQAogCiAgICAgZGVmIHRlc3RfbWF0Y2hpbmdfd2l0aF9lc2NhcGVzKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBhIGZvcm1hdCB0aGF0IHJlcXVpcmVzIGVzY2FwaW5nIG9mIGNoYXJhY3RlcnMgd29ya3MKLSAgICAgICAgY29tcGlsZWRfcmUgPSBzZWxmLnRpbWVfcmUuY29tcGlsZSgiXHcrICVtIikKLSAgICAgICAgZm91bmQgPSBjb21waWxlZF9yZS5tYXRjaCgiXHcrIDEwIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAiRXNjYXBpbmcgZmFpbGVkIG9mIGZvcm1hdCAnXHcrIDEwJyIpCisgICAgICAgIGNvbXBpbGVkX3JlID0gc2VsZi50aW1lX3JlLmNvbXBpbGUociJcdysgJW0iKQorICAgICAgICBmb3VuZCA9IGNvbXBpbGVkX3JlLm1hdGNoKHIiXHcrIDEwIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCByIkVzY2FwaW5nIGZhaWxlZCBvZiBmb3JtYXQgJ1x3KyAxMCciKQogCiAgICAgZGVmIHRlc3RfbG9jYWxlX2RhdGFfd19yZWdleF9tZXRhY2hhcmFjdGVycyhzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0IGlmIGxvY2FsZSBkYXRhIGNvbnRhaW5zIHJlZ2V4IG1ldGFjaGFyYWN0ZXJzIHRoZXkgYXJlCkBAIC0yMTksNiArMjE4LDI2IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJyVzJyBkaWQgbm90IHJhaXNlIFZhbHVlRXJyb3IiICUgYmFkX2Zvcm1hdCkKIAorICAgICAgICAjIEFtYmlndW91cyBvciBpbmNvbXBsZXRlIGNhc2VzIHVzaW5nIElTTyB5ZWFyL3dlZWsvd2Vla2RheSBkaXJlY3RpdmVzCisgICAgICAgICMgMS4gSVNPIHdlZWsgKCVWKSBpcyBzcGVjaWZpZWQsIGJ1dCB0aGUgeWVhciBpcyBzcGVjaWZpZWQgd2l0aCAlWQorICAgICAgICAjIGluc3RlYWQgb2YgJUcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgNTAiLCAiJVkgJVYiKQorICAgICAgICAjIDIuIElTTyB5ZWFyICglRykgYW5kIElTTyB3ZWVrICglVikgYXJlIHNwZWNpZmllZCwgYnV0IHdlZWtkYXkgaXMgbm90CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDUxIiwgIiVHICVWIikKKyAgICAgICAgIyAzLiBJU08geWVhciAoJUcpIGFuZCB3ZWVrZGF5IGFyZSBzcGVjaWZpZWQsIGJ1dCBJU08gd2VlayAoJVYpIGlzIG5vdAorICAgICAgICBmb3IgdyBpbiAoJ0EnLCAnYScsICd3JywgJ3UnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSA1MSIsIiVHICV7fSIuZm9ybWF0KHcpKQorICAgICAgICAjIDQuIElTTyB5ZWFyIGlzIHNwZWNpZmllZCBhbG9uZSAoZS5nLiB0aW1lLnN0cnB0aW1lKCcyMDE1JywgJyVHJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIyMDE1IiwgIiVHIikKKyAgICAgICAgIyA1LiBKdWxpYW4vb3JkaW5hbCBkYXkgKCVqKSBpcyBzcGVjaWZpZWQgd2l0aCAlRywgYnV0IG5vdCAlWQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSAyNTYiLCAiJUcgJWoiKQorCisKICAgICBkZWYgdGVzdF9zdHJwdGltZV9leGNlcHRpb25fY29udGV4dChzZWxmKToKICAgICAgICAgIyBjaGVjayB0aGF0IHRoaXMgZG9lc24ndCBjaGFpbiBleGNlcHRpb25zIG5lZWRsZXNzbHkgKHNlZSAjMTc1NzIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgZToKQEAgLTI5MCw3ICszMDksNyBAQAogCiAgICAgZGVmIHRlc3Rfd2Vla2RheShzZWxmKToKICAgICAgICAgIyBUZXN0IHdlZWtkYXkgZGlyZWN0aXZlcwotICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnQScsICdhJywgJ3cnKToKKyAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ0EnLCAnYScsICd3JywgJ3UnKToKICAgICAgICAgICAgIHNlbGYuaGVscGVyKGRpcmVjdGl2ZSw2KQogCiAgICAgZGVmIHRlc3RfanVsaWFuKHNlbGYpOgpAQCAtMzg0LDcgKzQwMyw3IEBACiAgICAgICAgICMgdW5iYWxhbmNlZCBwYXJlbnRoZXNlcyB3aGVuIHRoZSByZWdleCBpcyBjb21waWxlZCBpZiB0aGV5IGFyZSBub3QKICAgICAgICAgIyBlc2NhcGVkLgogICAgICAgICAjIFRlc3QgaW5zdGlnYXRlZCBieSBidWcgIzc5NjE0OSAuCi0gICAgICAgIG5lZWRfZXNjYXBpbmcgPSAiLl4kKis/e31cW118KSgiCisgICAgICAgIG5lZWRfZXNjYXBpbmcgPSByIi5eJCorP3t9XFtdfCkoIgogICAgICAgICBzZWxmLmFzc2VydFRydWUoX3N0cnB0aW1lLl9zdHJwdGltZV90aW1lKG5lZWRfZXNjYXBpbmcsIG5lZWRfZXNjYXBpbmcpKQogCiAgICAgZGVmIHRlc3RfZmViMjlfb25fbGVhcF95ZWFyX3dpdGhvdXRfeWVhcihzZWxmKToKQEAgLTQ1NywxNiArNDc2LDIwIEBACiAgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gaW5mZXIgZGF0ZSBpZiBnaXZlbiB5ZWFyLCB3ZWVrIG9mIHllYXIgKCVVIG9yICVXKQogICAgICAgICAjIGFuZCBkYXkgb2YgdGhlIHdlZWsKICAgICAgICAgZGVmIHRlc3RfaGVscGVyKHltZF90dXBsZSwgdGVzdF9yZWFzb24pOgotICAgICAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ1cnLCAnVScpOgotICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSAiJSVZICUlJXMgJSV3IiAlIGRpcmVjdGl2ZQotICAgICAgICAgICAgICAgIGR0X2RhdGUgPSBkYXRldGltZV9kYXRlKCp5bWRfdHVwbGUpCi0gICAgICAgICAgICAgICAgc3RycF9pbnB1dCA9IGR0X2RhdGUuc3RyZnRpbWUoZm9ybWF0X3N0cmluZykKLSAgICAgICAgICAgICAgICBzdHJwX291dHB1dCA9IF9zdHJwdGltZS5fc3RycHRpbWVfdGltZShzdHJwX2lucHV0LCBmb3JtYXRfc3RyaW5nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHJwX291dHB1dFs6M10gPT0geW1kX3R1cGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIiVzKCVzKSB0ZXN0IGZhaWxlZCB3LyAnJXMnOiAlcyAhPSAlcyAoJXMgIT0gJXMpIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfcmVhc29uLCBkaXJlY3RpdmUsIHN0cnBfaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnBfb3V0cHV0WzozXSwgeW1kX3R1cGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dFs3XSwgZHRfZGF0ZS50aW1ldHVwbGUoKVs3XSkpCisgICAgICAgICAgICBmb3IgeWVhcl93ZWVrX2Zvcm1hdCBpbiAoJyVZICVXJywgJyVZICVVJywgJyVHICVWJyk6CisgICAgICAgICAgICAgICAgZm9yIHdlZWtkYXlfZm9ybWF0IGluICgnJXcnLCAnJXUnLCAnJWEnLCAnJUEnKToKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IHllYXJfd2Vla19mb3JtYXQgKyAnICcgKyB3ZWVrZGF5X2Zvcm1hdAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0ZXN0X3JlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT15bWRfdHVwbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1mb3JtYXRfc3RyaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGR0X2RhdGUgPSBkYXRldGltZV9kYXRlKCp5bWRfdHVwbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX2lucHV0ID0gZHRfZGF0ZS5zdHJmdGltZShmb3JtYXRfc3RyaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXQgPSBfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUoc3RycF9pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiJXI6ICVzICE9ICVzIiAlIChzdHJwX2lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbN10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdF9kYXRlLnRpbWV0dXBsZSgpWzddKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJwX291dHB1dFs6M10sIHltZF90dXBsZSwgbXNnKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgMyksICJ3ZWVrIDAiKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgOCksICJjb21tb24gY2FzZSIpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCAxMyksICJkYXkgb24gU3VuZGF5IikKQEAgLTQ5OCwzMyArNTIxLDQ4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zdHJwdGltZS5fc3RycHRpbWVfdGltZSh2YWx1ZSwgZm9ybWF0KVs6LTFdLCBleHBlY3RlZCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAwJywgJyVZICVVICV3JywgMjAxNCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMCcsICclWSAlVyAldycsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMScsICclRyAlViAldScsIDIwMTQsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzYzKQogICAgICAgICBjaGVjaygnMjAxNSAwIDEnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2MykKICAgICAgICAgY2hlY2soJzIwMTUgMCAxJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMicsICclRyAlViAldScsIDIwMTQsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY0KQogICAgICAgICBjaGVjaygnMjAxNSAwIDInLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAyJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMycsICclRyAlViAldScsIDIwMTQsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY1KQogICAgICAgICBjaGVjaygnMjAxNSAwIDMnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMTUgMCAzJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNCcsICclRyAlViAldScsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVSAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVyAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNScsICclRyAlViAldScsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVSAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVyAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNicsICclRyAlViAldScsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVSAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVyAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNycsICclRyAlViAldScsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCiAKICAgICAgICAgY2hlY2soJzIwMDkgMCAwJywgJyVZICVVICV3JywgMjAwOCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMCcsICclWSAlVyAldycsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMScsICclRyAlViAldScsIDIwMDgsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzY0KQogICAgICAgICBjaGVjaygnMjAwOSAwIDEnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMDkgMCAxJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMicsICclRyAlViAldScsIDIwMDgsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY1KQogICAgICAgICBjaGVjaygnMjAwOSAwIDInLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMDkgMCAyJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMycsICclRyAlViAldScsIDIwMDgsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY2KQogICAgICAgICBjaGVjaygnMjAwOSAwIDMnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NikKICAgICAgICAgY2hlY2soJzIwMDkgMCAzJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjYpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNCcsICclRyAlViAldScsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVSAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVyAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNScsICclRyAlViAldScsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVSAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVyAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNicsICclRyAlViAldScsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVSAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVyAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNycsICclRyAlViAldScsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisKIAogY2xhc3MgQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGF0IGNhY2hpbmcgd29ya3MgcHJvcGVybHkuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CmluZGV4IGVmYmRiZmMuLjRkOWQ2MDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CkBAIC0xLDUgKzEsNiBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgYWJjCiBpbXBvcnQgYXJyYXkKK2ltcG9ydCBtYXRoCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN0cnVjdApAQCAtMTUsMjIgKzE2LDEwIEBACiBkZWYgaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoYnl0ZW9yZGVycz1ieXRlb3JkZXJzKToKICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgogICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIGJ5dGVvcmRlcnM6Ci0gICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ3EnLCAnUScpIGFuZAotICAgICAgICAgICAgICAgIG5vdCBIQVZFX0xPTkdfTE9ORyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIChieXRlb3JkZXIgbm90IGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ24nLCAnTicpKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgeWllbGQgY29kZSwgYnl0ZW9yZGVyCiAKLSMgTmF0aXZlICdxJyBwYWNraW5nIGlzbid0IGF2YWlsYWJsZSBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGUgQwotIyBsb25nIGxvbmcgdHlwZS4KLXRyeToKLSAgICBzdHJ1Y3QucGFjaygncScsIDUpCi1leGNlcHQgc3RydWN0LmVycm9yOgotICAgIEhBVkVfTE9OR19MT05HID0gRmFsc2UKLWVsc2U6Ci0gICAgSEFWRV9MT05HX0xPTkcgPSBUcnVlCi0KIGRlZiBzdHJpbmdfcmV2ZXJzZShzKToKICAgICByZXR1cm4gc1s6Oi0xXQogCkBAIC0xNTgsOSArMTQ3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgZXhwZWN0ZWRfc2l6ZVtjb2RlXSkKIAogICAgICAgICAjIG5hdGl2ZSBpbnRlZ2VyIHNpemVzCi0gICAgICAgIG5hdGl2ZV9wYWlycyA9ICdiQicsICdoSCcsICdpSScsICdsTCcsICduTicKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBuYXRpdmVfcGFpcnMgKz0gJ3FRJywKKyAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJywgJ3FRJwogICAgICAgICBmb3IgZm9ybWF0X3BhaXIgaW4gbmF0aXZlX3BhaXJzOgogICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAnJywgJ0AnOgogICAgICAgICAgICAgICAgIHNpZ25lZF9zaXplID0gc3RydWN0LmNhbGNzaXplKGJ5dGVvcmRlciArIGZvcm1hdF9wYWlyWzBdKQpAQCAtMTczLDkgKzE2MCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDQsIHN0cnVjdC5jYWxjc2l6ZSgnbCcpKQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ2gnKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnaScpLCBzdHJ1Y3QuY2FsY3NpemUoJ2wnKSkKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCg4LCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoOCwgc3RydWN0LmNhbGNzaXplKCdxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc3RydWN0LmNhbGNzaXplKCduJyksIHN0cnVjdC5jYWxjc2l6ZSgnaScpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdQJykpCiAKQEAgLTM2Niw4ICszNTIsNiBAQAogICAgICAgICAjIFNGIGJ1ZyA3MDU4MzYuICAiPGYiIGFuZCAiPmYiIGhhZCBhIHNldmVyZSByb3VuZGluZyBidWcsIHdoZXJlIGEgY2FycnkKICAgICAgICAgIyBmcm9tIHRoZSBsb3ctb3JkZXIgZGlzY2FyZGVkIGJpdHMgY291bGQgcHJvcGFnYXRlIGludG8gdGhlIGV4cG9uZW50CiAgICAgICAgICMgZmllbGQsIGNhdXNpbmcgdGhlIHJlc3VsdCB0byBiZSB3cm9uZyBieSBhIGZhY3RvciBvZiAyLgotICAgICAgICBpbXBvcnQgbWF0aAotCiAgICAgICAgIGZvciBiYXNlIGluIHJhbmdlKDEsIDMzKToKICAgICAgICAgICAgICMgc21hbGxlciA8LSBsYXJnZXN0IHJlcHJlc2VudGFibGUgZmxvYXQgbGVzcyB0aGFuIGJhc2UuCiAgICAgICAgICAgICBkZWx0YSA9IDAuNQpAQCAtNjU5LDYgKzY0MywxMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCisgICAgZGVmIHRlc3RfaGFsZl9mbG9hdChzZWxmKToKKyAgICAgICAgIyBMaXR0bGUtZW5kaWFuIGV4YW1wbGVzIGZyb206CisgICAgICAgICMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYWxmX3ByZWNpc2lvbl9mbG9hdGluZy1wb2ludF9mb3JtYXQKKyAgICAgICAgZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3QgPSBbCisgICAgICAgICAgICAoYidceDAwXHgzYycsIDEuMCksCisgICAgICAgICAgICAoYidceDAwXHhjMCcsIC0yLjApLAorICAgICAgICAgICAgKGInXHhmZlx4N2InLCA2NTUwNC4wKSwgIyAgKG1heCBoYWxmIHByZWNpc2lvbikKKyAgICAgICAgICAgIChiJ1x4MDBceDA0JywgMioqLTE0KSwgIyB+PSA2LjEwMzUyICogMTAqKi01IChtaW4gcG9zIG5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDFceDAwJywgMioqLTI0KSwgIyB+PSA1Ljk2MDQ2ICogMTAqKi04IChtaW4gcG9zIHN1Ym5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDBceDAwJywgMC4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceDgwJywgLTAuMCksCisgICAgICAgICAgICAoYidceDAwXHg3YycsIGZsb2F0KCcraW5mJykpLAorICAgICAgICAgICAgKGInXHgwMFx4ZmMnLCBmbG9hdCgnLWluZicpKSwKKyAgICAgICAgICAgIChiJ1x4NTVceDM1JywgMC4zMzMyNTE5NTMxMjUpLCAjIH49IDEvMworICAgICAgICBdCisKKyAgICAgICAgZm9yIGxlX2JpdHMsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3Q6CisgICAgICAgICAgICBiZV9iaXRzID0gbGVfYml0c1s6Oi0xXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCc8ZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZV9iaXRzLCBzdHJ1Y3QucGFjaygnPGUnLCBmKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnPmUnLCBiZV9iaXRzKVswXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmVfYml0cywgc3RydWN0LnBhY2soJz5lJywgZikpCisgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVfYml0cywgc3RydWN0LnBhY2soJ2UnLCBmKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCdlJywgYmVfYml0cylbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiZV9iaXRzLCBzdHJ1Y3QucGFjaygnZScsIGYpKQorCisgICAgICAgICMgQ2hlY2sgZm9yIE5hTiBoYW5kbGluZzoKKyAgICAgICAgZm9ybWF0X2JpdHNfX25hbl9saXN0ID0gWworICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4ZmMnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceGZlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHhmZicpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4N2MnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceDdlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHg3ZicpLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGJpdHMgaW4gZm9ybWF0X2JpdHNfX25hbl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oc3RydWN0LnVucGFjaygnPGUnLCBiaXRzKVswXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihzdHJ1Y3QudW5wYWNrKCc+ZScsIGJpdHNbOjotMV0pWzBdKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgcGFja2luZyBwcm9kdWNlcyBhIGJpdCBwYXR0ZXJuIHJlcHJlc2VudGluZyBhIHF1aWV0IE5hTjoKKyAgICAgICAgIyBhbGwgZXhwb25lbnQgYml0cyBhbmQgdGhlIG1zYiBvZiB0aGUgZnJhY3Rpb24gc2hvdWxkIGFsbCBiZSAxLgorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCBtYXRoLm5hbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZWRbMV0gJiAweDdlLCAweDdlKQorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCAtbWF0aC5uYW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2VkWzFdICYgMHg3ZSwgMHg3ZSkKKworICAgICAgICAjIENoZWNrcyBmb3Igcm91bmQtdG8tZXZlbiBiZWhhdmlvcgorICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fcm91bmRpbmdfbGlzdCA9IFsKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDBceDAxJywgMi4wKiotMjUgKyAyLjAqKi0zNSksICMgUm91bmRzIHRvIG1pbmltdW0gc3Vibm9ybWFsCisgICAgICAgICAgICAoJz5lJywgYidceDAwXHgwMCcsIDIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHgwMFx4MDAnLCAyLjAqKi0yNiksICMgVW5kZXJmbG93cyB0byB6ZXJvCisgICAgICAgICAgICAoJz5lJywgYidceDAzXHhmZicsIDIuMCoqLTE0IC0gMi4wKiotMjQpLCAjIExhcmdlc3Qgc3Vibm9ybWFsLgorICAgICAgICAgICAgKCc+ZScsIGInXHgwM1x4ZmYnLCAyLjAqKi0xNCAtIDIuMCoqLTI1IC0gMi4wKiotNjUpLAorICAgICAgICAgICAgKCc+ZScsIGInXHgwNFx4MDAnLCAyLjAqKi0xNCAtIDIuMCoqLTI1KSwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDRceDAwJywgMi4wKiotMTQpLCAjIFNtYWxsZXN0IG5vcm1hbC4KKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAxJywgMS4wKzIuMCoqLTExICsgMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTExKSwgIyByb3VuZHMgdG8gMS4wIChuZWFyZXN0IGV2ZW4gbW9kZSkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTEyKSwgIyByb3VuZHMgdG8gMS4wCisgICAgICAgICAgICAoJz5lJywgYidceDdiXHhmZicsIDY1NTA0KSwgIyBsYXJnZXN0IG5vcm1hbAorICAgICAgICAgICAgKCc+ZScsIGInXHg3Ylx4ZmYnLCA2NTUxOSksICMgcm91bmRzIHRvIDY1NTA0CisgICAgICAgICAgICAoJz5lJywgYidceDgwXHgwMScsIC0yLjAqKi0yNSAtIDIuMCoqLTM1KSwgIyBSb3VuZHMgdG8gbWluaW11bSBzdWJub3JtYWwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ODBceDAwJywgLTIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHg4MFx4MDAnLCAtMi4wKiotMjYpLCAjIFVuZGVyZmxvd3MgdG8gemVybworICAgICAgICAgICAgKCc+ZScsIGInXHhiY1x4MDEnLCAtMS4wLTIuMCoqLTExIC0gMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4YmNceDAwJywgLTEuMC0yLjAqKi0xMSksICMgcm91bmRzIHRvIDEuMCAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceGJjXHgwMCcsIC0xLjAtMi4wKiotMTIpLCAjIHJvdW5kcyB0byAxLjAKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ZmJceGZmJywgLTY1NTE5KSwgIyByb3VuZHMgdG8gNjU1MDQKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBiaXRzLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ19saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKworICAgICAgICAjIFRoaXMgb3ZlcmZsb3dzLCBhbmQgc28gcmFpc2VzIGFuIGVycm9yCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3QgPSBbCisgICAgICAgICAgICAjIFZhbHVlcyB0aGF0IHJvdW5kIHRvIGluZmluaXR5LgorICAgICAgICAgICAgKCc+ZScsIDY1NTIwLjApLAorICAgICAgICAgICAgKCc+ZScsIDY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIDFlMzAwKSwKKyAgICAgICAgICAgICgnPmUnLCAtNjU1MjAuMCksCisgICAgICAgICAgICAoJz5lJywgLTY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIC0xZTMwMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MjAuMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgMWUzMDApLAorICAgICAgICAgICAgKCc8ZScsIC02NTUyMC4wKSwKKyAgICAgICAgICAgICgnPGUnLCAtNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgLTFlMzAwKSwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0Y29kZSwgZikKKworICAgICAgICAjIERvdWJsZSByb3VuZGluZworICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0ID0gWworICAgICAgICAgICAgKCc+ZScsIGInXHg2N1x4ZmYnLCAweDFmZmRmZmZmZmYgKiAyKiotMjYpLCAjIHNob3VsZCBiZSAyMDQ3LCBpZiBkb3VibGUtcm91bmRlZCA2ND4zMj4xNiwgYmVjb21lcyAyMDQ4CisgICAgICAgIF0KKworICAgICAgICBmb3IgZm9ybWF0Y29kZSwgYml0cywgZiBpbiBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJjbGFzc2luaXQucHkgYi9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTZkZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zdWJjbGFzc2luaXQucHkKQEAgLTAsMCArMSwyNDQgQEAKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGluaXRpYWxpemVkID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygpCisgICAgICAgICAgICAgICAgY2xzLmluaXRpYWxpemVkID0gVHJ1ZQorCisgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShBLmluaXRpYWxpemVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoQi5pbml0aWFsaXplZCkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3NfZGljdChzZWxmKToKKyAgICAgICAgY2xhc3MgQShkaWN0KToKKyAgICAgICAgICAgIGluaXRpYWxpemVkID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygpCisgICAgICAgICAgICAgICAgY2xzLmluaXRpYWxpemVkID0gVHJ1ZQorCisgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShBLmluaXRpYWxpemVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoQi5pbml0aWFsaXplZCkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Nfa3dhcmdzKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGNscy5rd2FyZ3MgPSBrd2FyZ3MKKworICAgICAgICBjbGFzcyBCKEEsIHg9Myk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCLmt3YXJncywgZGljdCh4PTMpKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19lcnJvcihzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc193cm9uZyhzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIHdoYXRldmVyKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX3NraXBwZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEJhc2VXaXRoSW5pdDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5pbml0aWFsaXplZCA9IGNscworCisgICAgICAgIGNsYXNzIEJhc2VXaXRob3V0SW5pdChCYXNlV2l0aEluaXQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEEoQmFzZVdpdGhvdXRJbml0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydElzKEEuaW5pdGlhbGl6ZWQsIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQmFzZVdpdGhvdXRJbml0LmluaXRpYWxpemVkLCBCYXNlV2l0aG91dEluaXQpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2RpYW1vbmQoc2VsZik6CisgICAgICAgIGNsYXNzIEJhc2U6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuY2FsbHMgPSBbXQorCisgICAgICAgIGNsYXNzIExlZnQoQmFzZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTWlkZGxlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgbWlkZGxlLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuY2FsbHMgKz0gW21pZGRsZV0KKworICAgICAgICBjbGFzcyBSaWdodChCYXNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIHJpZ2h0PSJyaWdodCIsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5jYWxscyArPSBbcmlnaHRdCisKKyAgICAgICAgY2xhc3MgQShMZWZ0LCBNaWRkbGUsIFJpZ2h0LCBtaWRkbGU9Im1pZGRsZSIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQS5jYWxscywgWyJyaWdodCIsICJtaWRkbGUiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMZWZ0LmNhbGxzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChSaWdodC5jYWxscywgW10pCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZShzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQS5kLm5hbWUsICJkIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhBLmQub3duZXIsIEEpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9tZXRhY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgcmV0ID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LmQubmFtZSwgImQiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0LmQub3duZXIsIHJldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gb3duZXIKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQSwgMCkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX2Vycm9yKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV93cm9uZyhzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfaW5pdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpOgorICAgICAgICAgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICAgICAgc2VsZi5tZXRhX293bmVyID0gc2VsZi5vd25lcgorICAgICAgICAgICAgICAgIHNlbGYubWV0YV9uYW1lID0gc2VsZi5uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgY2xzLm93bmVyID0gY2xzLmQub3duZXIKKyAgICAgICAgICAgICAgICBjbHMubmFtZSA9IGNscy5kLm5hbWUKKworICAgICAgICBjbGFzcyBCKEEsIG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydElzKEIub3duZXIsIEIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQi5uYW1lLCAnZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQi5tZXRhX293bmVyLCBCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIubmFtZSwgJ2QnKQorCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZXMubmV3X2NsYXNzKCJNeUNsYXNzIiwgKG9iamVjdCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSkpCisgICAgICAgIHR5cGVzLnByZXBhcmVfY2xhc3MoIk15Q2xhc3MiLCAob2JqZWN0LCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKSkKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgb3RoZXJhcmcpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18obmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5vdGhlcmFyZyA9IG90aGVyYXJnCisKKyAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE15Q2xhc3Mub3RoZXJhcmcsIDEpCisKKyAgICBkZWYgdGVzdF9lcnJvcnNfY2hhbmdlZF9wZXA0ODcoc2VsZik6CisgICAgICAgICMgVGhlc2UgdGVzdHMgZmFpbGVkIGJlZm9yZSBQeXRob24gMy42LCBQRVAgNDg3CisgICAgICAgIGNsYXNzIE15TWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWU9bmFtZSwgYmFzZXM9YmFzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0PW5hbWVzcGFjZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKyAgICAgICAgICAgICAgICBzZWxmLm90aGVyYXJnID0gb3RoZXJhcmcKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeUNsYXNzLm90aGVyYXJnLCAxKQorCisgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgdCA9IHR5cGUoJ05ld0NsYXNzJywgKG9iamVjdCwpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHQsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5fX25hbWVfXywgJ05ld0NsYXNzJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKG5hbWU9J05ld0NsYXNzJywgYmFzZXM9KG9iamVjdCwpLCBkaWN0PXt9KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKaW5kZXggNzU4ZTA5NC4uMmQ5MjM5YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQpAQCAtMSwyMCArMSwxNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHNpZ25hbAogaW1wb3J0IGlvCi1pbXBvcnQgbG9jYWxlCiBpbXBvcnQgb3MKIGltcG9ydCBlcnJubwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQotaW1wb3J0IHJlCiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgc3lzY29uZmlnCi1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBnYwpAQCAtMjUsNiArMjEsOSBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKIAoraWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIG1zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKIAogIwpAQCAtNDQ4LDggKzQ0Nyw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoIm9yYW5nZSIpJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJvcmFuZ2UiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJvcmFuZ2UiKQogCiAgICAgZGVmIHRlc3Rfc3Rkb3V0X2ZpbGVkZXMoc2VsZik6CiAgICAgICAgICMgc3Rkb3V0IGlzIHNldCB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcgpAQCAtNDc5LDggKzQ3OCw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5zdGRlcnIud3JpdGUoInN0cmF3YmVycnkiKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChwLnN0ZGVyci5yZWFkKCksIGIic3RyYXdiZXJyeSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRlcnIucmVhZCgpLCBiInN0cmF3YmVycnkiKQogCiAgICAgZGVmIHRlc3Rfc3RkZXJyX2ZpbGVkZXMoc2VsZik6CiAgICAgICAgICMgc3RkZXJyIGlzIHNldCB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcgpAQCAtNTM1LDggKzUzNCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgib3JhbmdlIiknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlb3JhbmdlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIiYXBwbGVvcmFuZ2UiKQogCiAgICAgZGVmIHRlc3Rfc3Rkb3V0X3N0ZGVycl9maWxlKHNlbGYpOgogICAgICAgICAjIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIHNhbWUgb3BlbiBmaWxlCkBAIC03OTQsMTggKzc5MywxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQotICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lMVxuIikKLSAgICAgICAgcC5zdGRpbi5mbHVzaCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZGxpbmUoKSwgImxpbmUxXG4iKQotICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lM1xuIikKLSAgICAgICAgcC5zdGRpbi5jbG9zZSgpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lM1xuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgImxpbmU0XG5saW5lNVxubGluZTZcbmxpbmU3XG5saW5lOCIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoImxpbmUxXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5mbHVzaCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksICJsaW5lMVxuIikKKyAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoImxpbmUzXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCg2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUzXG4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lNFxubGluZTVcbmxpbmU2XG5saW5lN1xubGluZTgiKQogCiAgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlKHNlbGYpOgogICAgICAgICAjIHVuaXZlcnNhbCBuZXdsaW5lcyB0aHJvdWdoIGNvbW11bmljYXRlKCkKQEAgLTg5NCwzMSArODk0LDQyIEBACiAgICAgICAgICMKICAgICAgICAgIyBVVEYtMTYgYW5kIFVURi0zMi1CRSBhcmUgc3VmZmljaWVudCB0byBjaGVjayBib3RoIHdpdGggQk9NIGFuZAogICAgICAgICAjIHdpdGhvdXQsIGFuZCBVVEYtMTYgYW5kIFVURi0zMi4KLSAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiBbJ3V0Zi0xNicsICd1dGYtMzItYmUnXToKLSAgICAgICAgICAgIG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nCi0gICAgICAgICAgICAjIEluZGlyZWN0bHkgdmlhIGlvLlRleHRJT1dyYXBwZXIsIFBvcGVuKCkgZGVmYXVsdHMgdG8KLSAgICAgICAgICAgICMgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBhbmQgZWFybGllciBpbiBQeXRob24gMy4yIHRvCi0gICAgICAgICAgICAjIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpLgotICAgICAgICAgICAgZGVmIGdldHByZWZlcnJlZGVuY29kaW5nKGRvX3NldGxvY2FsZT1UcnVlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RpbmcKICAgICAgICAgICAgIGNvZGUgPSAoImltcG9ydCBzeXM7ICIKICAgICAgICAgICAgICAgICAgICAgciJzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZSgnMVxyXG4yXHIzXG40Jy5lbmNvZGUoJyVzJykpIiAlCiAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nKQogICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgY29kZV0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IGdldHByZWZlcnJlZGVuY29kaW5nCi0gICAgICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAotICAgICAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCi0gICAgICAgICAgICAgICAgIyB6ZXJvIG9yIG9uZS4KLSAgICAgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZworICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCBjb2RlIHBhdGggaXMgdXNlZCB3aGVuIHRoZSBudW1iZXIgb2YgcGlwZXMgaXMKKyAgICAgICAgICAgICMgemVybyBvciBvbmUuCisgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZykKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9JycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgJzFcbjJcbjNcbjQnKQogCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfZXJyb3JzKHNlbGYpOgorICAgICAgICBmb3IgZXJyb3JzLCBleHBlY3RlZCBpbiBbCisgICAgICAgICAgICAoJ2lnbm9yZScsICcnKSwKKyAgICAgICAgICAgICgncmVwbGFjZScsICdcdWZmZmRcdWZmZmQnKSwKKyAgICAgICAgICAgICgnc3Vycm9nYXRlZXNjYXBlJywgJ1x1ZGM4MFx1ZGM4MCcpLAorICAgICAgICAgICAgKCdiYWNrc2xhc2hyZXBsYWNlJywgJ1xceDgwXFx4ODAnKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIGNvZGUgPSAoImltcG9ydCBzeXM7ICIKKyAgICAgICAgICAgICAgICAgICAgciJzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiJ1tceDgwXHg4MF0nKSIpCisgICAgICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCBjb2RlXQorICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCBjb2RlIHBhdGggaXMgdXNlZCB3aGVuIHRoZSBudW1iZXIgb2YgcGlwZXMgaXMKKyAgICAgICAgICAgICMgemVybyBvciBvbmUuCisgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz1lcnJvcnMpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICdbe31dJy5mb3JtYXQoZXhwZWN0ZWQpKQorCiAgICAgZGVmIHRlc3Rfbm9fbGVha2luZyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgd2UgbGVhayBubyByZXNvdXJjZXMKICAgICAgICAgaWYgbm90IG1zd2luZG93czoKQEAgLTE0MzEsNiArMTQ0MiwyNyBAQAogICAgICAgICAgICAgcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtcC5yZXR1cm5jb2RlLCBzaWduYWwuU0lHQUJSVCkKIAorICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfc2lnbmFsKHNlbGYpOgorICAgICAgICBlcnIgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcigtaW50KHNpZ25hbC5TSUdBQlJUKSwgImZha2UgY21kIikKKyAgICAgICAgZXJyb3Jfc3RyaW5nID0gc3RyKGVycikKKyAgICAgICAgIyBXZSdyZSByZWx5aW5nIG9uIHRoZSByZXByKCkgb2YgdGhlIHNpZ25hbC5TaWduYWxzIGludGVudW0gdG8gcHJvdmlkZQorICAgICAgICAjIHRoZSB3b3JkIHNpZ25hbCwgdGhlIHNpZ25hbCBuYW1lIGFuZCB0aGUgbnVtZXJpYyB2YWx1ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2lnbmFsIiwgZXJyb3Jfc3RyaW5nLmxvd2VyKCkpCisgICAgICAgICMgV2UncmUgbm90IGJlaW5nIHNwZWNpZmljIGFib3V0IHRoZSBzaWduYWwgbmFtZSBhcyBzb21lIHNpZ25hbHMgaGF2ZQorICAgICAgICAjIG11bHRpcGxlIG5hbWVzIGFuZCB3aGljaCBuYW1lIGlzIHJldmVhbGVkIGNhbiB2YXJ5LgorICAgICAgICBzZWxmLmFzc2VydEluKCJTSUciLCBlcnJvcl9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RyKHNpZ25hbC5TSUdBQlJUKSwgZXJyb3Jfc3RyaW5nKQorCisgICAgZGVmIHRlc3RfQ2FsbGVkUHJvY2Vzc0Vycm9yX3N0cl91bmtub3duX3NpZ25hbChzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoLTk4NzY1NDMsICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInVua25vd24gc2lnbmFsIDk4NzY1NDMuIiwgZXJyb3Jfc3RyaW5nKQorCisgICAgZGVmIHRlc3RfQ2FsbGVkUHJvY2Vzc0Vycm9yX3N0cl9ub25femVybyhzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMiwgImZha2UgY21kIikKKyAgICAgICAgZXJyb3Jfc3RyaW5nID0gc3RyKGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRJbigibm9uLXplcm8gZXhpdCBzdGF0dXMgMi4iLCBlcnJvcl9zdHJpbmcpCisKICAgICBkZWYgdGVzdF9wcmVleGVjKHNlbGYpOgogICAgICAgICAjIERJU0NMQUlNRVI6IFNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlzICpub3QqIGEgZ29vZCB1c2UKICAgICAgICAgIyBvZiBhIHByZWV4ZWNfZm4uICBUaGlzIGlzIG1lcmVseSBhIHRlc3QuCkBAIC0xNDM5LDggKzE0NzEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQud3JpdGUob3MuZ2V0ZW52KCJGUlVJVCIpKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVleGVjX2ZuPWxhbWJkYTogb3MucHV0ZW52KCJGUlVJVCIsICJhcHBsZSIpKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3RfcHJlZXhlY19leGNlcHRpb24oc2VsZik6CiAgICAgICAgIGRlZiByYWlzZV9pdCgpOgpAQCAtMTU2MSw3ICsxNTkzLDcgQEAKICAgICAgICAgZmQsIGZuYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgICMgcmVvcGVuIGluIHRleHQgbW9kZQogICAgICAgICB3aXRoIG9wZW4oZmQsICJ3IiwgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyBmb2JqOgotICAgICAgICAgICAgZm9iai53cml0ZSgiIyEvYmluL3NoXG4iKQorICAgICAgICAgICAgZm9iai53cml0ZSgiIyElc1xuIiAlIHN1cHBvcnQudW5peF9zaGVsbCkKICAgICAgICAgICAgIGZvYmoud3JpdGUoImV4ZWMgJyVzJyAtYyAnaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpJ1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlKQogICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG83MDApCkBAIC0xNTg4LDggKzE2MjAsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbImVjaG8gJEZSVUlUIl0sIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoYiIgXHRcclxuXGYiKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJ1biBjb21tYW5kIHRocm91Z2ggdGhlIHNoZWxsIChzdHJpbmcpCkBAIC0xNTk4LDE1ICsxNjMwLDE1IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKCJlY2hvICRGUlVJVCIsIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoYiIgXHRcclxuXGYiKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3RfY2FsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggc3RyaW5nIGFyZ3VtZW50IG9uIFVOSVgKICAgICAgICAgZmQsIGZuYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgICMgcmVvcGVuIGluIHRleHQgbW9kZQogICAgICAgICB3aXRoIG9wZW4oZmQsICJ3IiwgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyBmb2JqOgotICAgICAgICAgICAgZm9iai53cml0ZSgiIyEvYmluL3NoXG4iKQorICAgICAgICAgICAgZm9iai53cml0ZSgiIyElc1xuIiAlIHN1cHBvcnQudW5peF9zaGVsbCkKICAgICAgICAgICAgIGZvYmoud3JpdGUoImV4ZWMgJyVzJyAtYyAnaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpJ1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlKQogICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG83MDApCkBAIC0xNjMxLDggKzE2NjMsOCBAQAogICAgICAgICBmb3Igc2ggaW4gc2hlbGxzOgogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oImVjaG8gJDAiLCBleGVjdXRhYmxlPXNoLCBzaGVsbD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKCksIGJ5dGVzKHNoLCAnYXNjaWknKSkKKyAgICAgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcCgpLCBieXRlcyhzaCwgJ2FzY2lpJykpCiAKICAgICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBtZXRob2QsICphcmdzKToKICAgICAgICAgIyBEbyBub3QgaW5oZXJpdCBmaWxlIGhhbmRsZXMgZnJvbSB0aGUgcGFyZW50LgpAQCAtMjI5MCw3ICsyMzIyLDkgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQogICAgICAgICBpZGVudCA9IGlkKHApCiAgICAgICAgIHBpZCA9IHAucGlkCi0gICAgICAgIGRlbCBwCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcCA9IE5vbmUKKwogICAgICAgICAjIGNoZWNrIHRoYXQgcCBpcyBpbiB0aGUgYWN0aXZlIHByb2Nlc3NlcyBsaXN0CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaWRlbnQsIFtpZChvKSBmb3IgbyBpbiBzdWJwcm9jZXNzLl9hY3RpdmVdKQogCkBAIC0yMzA5LDcgKzIzNDMsOSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCiAgICAgICAgIGlkZW50ID0gaWQocCkKICAgICAgICAgcGlkID0gcC5waWQKLSAgICAgICAgZGVsIHAKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUmVzb3VyY2VXYXJuaW5nKSk6CisgICAgICAgICAgICBwID0gTm9uZQorCiAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKICAgICAgICAgIyBjaGVjayB0aGF0IHAgaXMgaW4gdGhlIGFjdGl2ZSBwcm9jZXNzZXMgbGlzdAogICAgICAgICBzZWxmLmFzc2VydEluKGlkZW50LCBbaWQobykgZm9yIG8gaW4gc3VicHJvY2Vzcy5fYWN0aXZlXSkKQEAgLTI1MDEsOCArMjUzNyw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsic2V0Il0sIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCiAKICAgICBkZWYgdGVzdF9zaGVsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgUnVuIGNvbW1hbmQgdGhyb3VnaCB0aGUgc2hlbGwgKHN0cmluZykKQEAgLTI1MTEsOCArMjU0NywyMCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbigic2V0Iiwgc2hlbGw9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PW5ld2VudikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSkKKworICAgIGRlZiB0ZXN0X3NoZWxsX2VuY29kaW5ncyhzZWxmKToKKyAgICAgICAgIyBSdW4gY29tbWFuZCB0aHJvdWdoIHRoZSBzaGVsbCAoc3RyaW5nKQorICAgICAgICBmb3IgZW5jIGluIFsnYW5zaScsICdvZW0nXToKKyAgICAgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAicGh5c2FsaXMiCisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbigic2V0Iiwgc2hlbGw9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jKQorICAgICAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpLCBlbmMpCiAKICAgICBkZWYgdGVzdF9jYWxsX3N0cmluZyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBzdHJpbmcgYXJndW1lbnQgb24gV2luZG93cwpAQCAtMjUzMSwxNiArMjU3OSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgIyBXYWl0IGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYmUgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUKLSAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCi0gICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKLSAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQotICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKLSAgICAgICAgcmV0dXJuY29kZSA9IHAud2FpdCgpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCisgICAgICAgICAgICAjIHNlbmRpbmcgYW55IHNpZ25hbC4KKyAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKKyAgICAgICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKKyAgICAgICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKKyAgICAgICAgICAgIHJldHVybmNvZGUgPSBwLndhaXQoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJldHVybmNvZGUsIDApCiAKICAgICBkZWYgX2tpbGxfZGVhZF9wcm9jZXNzKHNlbGYsIG1ldGhvZCwgKmFyZ3MpOgpAQCAtMjU1MywxOSArMjU5OSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgIyBXYWl0IGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYmUgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUKLSAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCi0gICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKLSAgICAgICAgIyBUaGUgcHJvY2VzcyBzaG91bGQgZW5kIGFmdGVyIHRoaXMKLSAgICAgICAgdGltZS5zbGVlcCgxKQotICAgICAgICAjIFRoaXMgc2hvdWxkbid0IHJhaXNlIGV2ZW4gdGhvdWdoIHRoZSBjaGlsZCBpcyBub3cgZGVhZAotICAgICAgICBnZXRhdHRyKHAsIG1ldGhvZCkoKmFyZ3MpCi0gICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQotICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYicnKQotICAgICAgICByYyA9IHAud2FpdCgpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCisgICAgICAgICAgICAjIHNlbmRpbmcgYW55IHNpZ25hbC4KKyAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKKyAgICAgICAgICAgICMgVGhlIHByb2Nlc3Mgc2hvdWxkIGVuZCBhZnRlciB0aGlzCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IHJhaXNlIGV2ZW4gdGhvdWdoIHRoZSBjaGlsZCBpcyBub3cgZGVhZAorICAgICAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQorICAgICAgICAgICAgXywgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYicnKQorICAgICAgICAgICAgcmMgPSBwLndhaXQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCA0MikKIAogICAgIGRlZiB0ZXN0X3NlbmRfc2lnbmFsKHNlbGYpOgpAQCAtMjYwOCw4ICsyNjUyLDcgQEAKIAogICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKICAgICAgICAgIiIiRW5zdXJlIHRoYXQgX19hbGxfXyBpcyBwb3B1bGF0ZWQgcHJvcGVybHkuIiIiCi0gICAgICAgICMgU1RBUlRVUElORk8gYWRkZWQgdG8gX19hbGxfXyBpbiAzLjYKLSAgICAgICAgaW50ZW50aW9uYWxseV9leGNsdWRlZCA9IHsibGlzdDJjbWRsaW5lIiwgIlNUQVJUVVBJTkZPIiwgIkhhbmRsZSJ9CisgICAgICAgIGludGVudGlvbmFsbHlfZXhjbHVkZWQgPSB7Imxpc3QyY21kbGluZSIsICJIYW5kbGUifQogICAgICAgICBleHBvcnRlZCA9IHNldChzdWJwcm9jZXNzLl9fYWxsX18pCiAgICAgICAgIHBvc3NpYmxlX2V4cG9ydHMgPSBzZXQoKQogICAgICAgICBpbXBvcnQgdHlwZXMKQEAgLTI2NTQsMTEgKzI2OTcsMTEgQEAKICAgICBkZWYgd2l0aF9zcGFjZXMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAga3dhcmdzWydzdGRvdXQnXSA9IHN1YnByb2Nlc3MuUElQRQogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICBwLnN0ZG91dC5yZWFkICgpLmRlY29kZSgibWJjcyIpLAotICAgICAgICAgICIyIFslciwgJ2FiIGNkJ10iICUgc2VsZi5mbmFtZQotICAgICAgICApCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQgKCkuZGVjb2RlKCJtYmNzIiksCisgICAgICAgICAgICAgICIyIFslciwgJ2FiIGNkJ10iICUgc2VsZi5mbmFtZQorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nX3dpdGhfc3BhY2VzKHNlbGYpOgogICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHN0cmluZyBhcmd1bWVudCB3aXRoIHNwYWNlcyBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5hdS5weQppbmRleCAwZjQxMzRlLi5iYzFmNDZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VuYXUucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cwogZnJvbSBhdWRpb29wIGltcG9ydCBieXRlc3dhcApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKaW5kZXggYjg0ODYzZi4uYTdjZWRlZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CkBAIC0xNDMsNiArMTQzLDg3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXwogICAgICAgICBzZWxmLmFzc2VydElzKFguZigpLCBYKQogCisgICAgZGVmIHRlc3RfX19jbGFzc19fX25ldyhzZWxmKToKKyAgICAgICAgdGVzdF9jbGFzcyA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X2NsYXNzCisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgdGVzdF9jbGFzcyA9IHNlbGYuZigpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jbGFzcywgQSkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19kZWxheWVkKHNlbGYpOgorICAgICAgICB0ZXN0X25hbWVzcGFjZSA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X25hbWVzcGFjZQorICAgICAgICAgICAgICAgIHRlc3RfbmFtZXNwYWNlID0gbmFtZXNwYWNlCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQSwgTm9uZSkKKworICAgICAgICBCID0gdHlwZSgiQiIsICgpLCB0ZXN0X25hbWVzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLmYoKSwgQikKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19tcm8oc2VsZik6CisgICAgICAgIHRlc3RfY2xhc3MgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBtcm8oc2VsZik6CisgICAgICAgICAgICAgICAgIyBzZWxmLmYoKSBkb2Vzbid0IHdvcmsgeWV0Li4uCisgICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1siZiJdKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5tcm8oKQorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X2NsYXNzCisgICAgICAgICAgICAgICAgdGVzdF9jbGFzcyA9IF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jbGFzcywgQSkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NjZWxsX19fZGVsZXRlZChzZWxmKToKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgZGVsIG5hbWVzcGFjZVsnX19jbGFzc2NlbGxfXyddCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIF9fY2xhc3NfXworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIEEuZigpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzY2VsbF9fX3Jlc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBuYW1lc3BhY2VbJ19fY2xhc3NjZWxsX18nXSA9IDAKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgX19jbGFzc19fCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgQS5mKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLl9fY2xhc3NjZWxsX18sIDApCisKICAgICBkZWYgdGVzdF9vYnNjdXJlX3N1cGVyX2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIHN1cGVyKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQppbmRleCAyYzAwNDE3Li4yNjlkOWJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CkBAIC05LDEzICs5LDExIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogVEVTVEZOID0gc3VwcG9ydC5URVNURk4KLVRFU1RESVJOID0gb3MucGF0aC5iYXNlbmFtZSh0ZW1wZmlsZS5ta2R0ZW1wKGRpcj0nLicpKQogCiAKIGNsYXNzIFRlc3RTdXBwb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKLSAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCiAgICAgdGVhckRvd24gPSBzZXRVcAogCiAgICAgZGVmIHRlc3RfaW1wb3J0X21vZHVsZShzZWxmKToKQEAgLTQ4LDYgKzQ2LDEwIEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3JtdHJlZShzZWxmKToKKyAgICAgICAgVEVTVERJUk4gPSBvcy5wYXRoLmJhc2VuYW1lKHRlbXBmaWxlLm1rZHRlbXAoZGlyPScuJykpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgVEVTVERJUk4pCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorCiAgICAgICAgIG9zLm1rZGlyKFRFU1RESVJOKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oVEVTVERJUk4sIFRFU1RESVJOKSkKICAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCkBAIC0yMjgsNyArMjMwLDggQEAKIAogICAgIGRlZiB0ZXN0X2NoZWNrX3N5bnRheF9lcnJvcihzZWxmKToKICAgICAgICAgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBjbGFzcyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvciwgc2VsZiwgIjEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ4PTEiKQogCiAgICAgZGVmIHRlc3RfQ2xlYW5JbXBvcnQoc2VsZik6CiAgICAgICAgIGltcG9ydCBpbXBvcnRsaWIKQEAgLTMxMiw2ICszMTUsMjggQEAKICAgICAgICAgICAgICAgICBzZWxmLk90aGVyQ2xhc3MsIHNlbGYuUmVmQ2xhc3MsIGlnbm9yZT1pZ25vcmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIG1pc3NpbmdfaXRlbXMpCiAKKyAgICBkZWYgdGVzdF9jaGVja19fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyd0ZW1wZGlyJ30KKyAgICAgICAgYmxhY2tsaXN0ID0geyd0ZW1wbGF0ZSd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICAgICBleHRyYSA9IHsnVGV4dFRlc3RSZXN1bHQnLCAnaW5zdGFsbEhhbmRsZXInfQorICAgICAgICBibGFja2xpc3QgPSB7J2xvYWRfdGVzdHMnLCAiVGVzdFByb2dyYW0iLCAiQmFzZVRlc3RTdWl0ZSJ9CisKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidW5pdHRlc3QucmVzdWx0IiwgInVuaXR0ZXN0LmNhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXR0ZXN0LnN1aXRlIiwgInVuaXR0ZXN0LmxvYWRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3QubWFpbiIsICJ1bml0dGVzdC5ydW5uZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXR0ZXN0LnNpZ25hbHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHN1cHBvcnQuY2hlY2tfX2FsbF9fLCBzZWxmLCB1bml0dGVzdCkKKwogICAgICMgWFhYIC1mb2xsb3dzIGEgbGlzdCBvZiB1bnRlc3RlZCBBUEkKICAgICAjIG1ha2VfbGVnYWN5X3B5YwogICAgICMgaXNfcmVzb3VyY2VfZW5hYmxlZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW1ib2wucHkgYi9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTMwNmY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW1ib2wucHkKQEAgLTAsMCArMSw1NCBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKKworCitTWU1CT0xfRklMRSAgICAgICAgICAgICAgPSBzdXBwb3J0LmZpbmRmaWxlKCdzeW1ib2wucHknKQorR1JBTU1BUl9GSUxFICAgICAgICAgICAgID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4uJywgJy4uJywgJ0luY2x1ZGUnLCAnZ3JhbWluaXQuaCcpCitURVNUX1BZX0ZJTEUgICAgICAgICAgICAgPSAnc3ltYm9sX3Rlc3QucHknCisKKworY2xhc3MgVGVzdFN5bWJvbEdlbmVyYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIF9jb3B5X2ZpbGVfd2l0aG91dF9nZW5lcmF0ZWRfc3ltYm9scyhzZWxmLCBzb3VyY2VfZmlsZSwgZGVzdF9maWxlKToKKyAgICAgICAgd2l0aCBvcGVuKHNvdXJjZV9maWxlKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzID0gZnAucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBvcGVuKGRlc3RfZmlsZSwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbOmxpbmVzLmluZGV4KCIjLS1zdGFydCBjb25zdGFudHMtLVxuIikgKyAxXSkKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbbGluZXMuaW5kZXgoIiMtLWVuZCBjb25zdGFudHMtLVxuIik6XSkKKworICAgIGRlZiBfZ2VuZXJhdGVfc3ltYm9scyhzZWxmLCBncmFtbWFyX2ZpbGUsIHRhcmdldF9zeW1ib2xfcHlfZmlsZSk6CisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZTUJPTF9GSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hcl9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3N5bWJvbF9weV9maWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpWzFdCisgICAgICAgIHJldHVybiBwcm9jLnJldHVybmNvZGUsIHN0ZGVycgorCisgICAgZGVmIGNvbXBhcmVfZmlsZXMoc2VsZiwgZmlsZTEsIGZpbGUyKToKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUxKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzMSA9IGZwLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggb3BlbihmaWxlMikgYXMgZnA6CisgICAgICAgICAgICBsaW5lczIgPSBmcC5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzMSwgbGluZXMyKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3Qgb3MucGF0aC5leGlzdHMoR1JBTU1BUl9GSUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG9ubHkgd29ya3MgZnJvbSBzb3VyY2UgYnVpbGQgZGlyZWN0b3J5JykKKyAgICBkZWYgdGVzdF9yZWFsX2dyYW1tYXJfYW5kX3N5bWJvbF9maWxlKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIG91dHB1dCkKKworICAgICAgICBzZWxmLl9jb3B5X2ZpbGVfd2l0aG91dF9nZW5lcmF0ZWRfc3ltYm9scyhTWU1CT0xfRklMRSwgb3V0cHV0KQorCisgICAgICAgIGV4aXRjb2RlLCBzdGRlcnIgPSBzZWxmLl9nZW5lcmF0ZV9zeW1ib2xzKEdSQU1NQVJfRklMRSwgb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGV4aXRjb2RlKQorCisgICAgICAgIHNlbGYuY29tcGFyZV9maWxlcyhTWU1CT0xfRklMRSwgb3V0cHV0KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQppbmRleCBjNWQ3ZmFjLi4zMDQ3MTY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKQEAgLTEzMyw2ICsxMzMsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuTWluZS5sb29rdXAoImFfbWV0aG9kIikuaXNfYXNzaWduZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmludGVybmFsLmxvb2t1cCgieCIpLmlzX2Fzc2lnbmVkKCkpCiAKKyAgICBkZWYgdGVzdF9hbm5vdGF0ZWQoc2VsZik6CisgICAgICAgIHN0MSA9IHN5bXRhYmxlLnN5bXRhYmxlKCdkZWYgZigpOlxuICAgIHg6IGludFxuJywgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIHN0MiA9IHN0MS5nZXRfY2hpbGRyZW4oKVswXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3QyLmxvb2t1cCgneCcpLmlzX2xvY2FsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDIubG9va3VwKCd4JykuaXNfYW5ub3RhdGVkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3QyLmxvb2t1cCgneCcpLmlzX2dsb2JhbCgpKQorICAgICAgICBzdDMgPSBzeW10YWJsZS5zeW10YWJsZSgnZGVmIGYoKTpcbiAgICB4ID0gMVxuJywgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIHN0NCA9IHN0My5nZXRfY2hpbGRyZW4oKVswXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Q0Lmxvb2t1cCgneCcpLmlzX2xvY2FsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3Q0Lmxvb2t1cCgneCcpLmlzX2Fubm90YXRlZCgpKQorCiAgICAgZGVmIHRlc3RfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnRvcC5sb29rdXAoInN5cyIpLmlzX2ltcG9ydGVkKCkpCiAKQEAgLTE1OCw5ICsxNjksMTEgQEAKICAgICAgICAgY2hlY2tmaWxlbmFtZSgiZGVmIGYoeCk6IGZvbykoIikgICMgcGFyc2UtdGltZQogICAgICAgICBjaGVja2ZpbGVuYW1lKCJkZWYgZih4KTogZ2xvYmFsIHgiKSAgIyBzeW10YWJsZS1idWlsZC10aW1lCiAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgYiJzcGFtIiwgImV4ZWMiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgYnl0ZWFycmF5KGIic3BhbSIpLCAiZXhlYyIpCi0gICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgbWVtb3J5dmlldyhiInNwYW0iKSwgImV4ZWMiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgbWVtb3J5dmlldyhiInNwYW0iKSwgImV4ZWMiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGxpc3QoYiJzcGFtIiksICJleGVjIikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQppbmRleCA4M2Y0OWY2Li44MGUzNmZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQpAQCAtMzUsMTQgKzM1LDYgQEAKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8ga2V5d29yZAogCi1JdCdzIGEgc3ludGF4IGVycm9yIHRvIGFzc2lnbiB0byB0aGUgZW1wdHkgdHVwbGUuICBXaHkgaXNuJ3QgaXQgYW4KLWVycm9yIHRvIGFzc2lnbiB0byB0aGUgZW1wdHkgbGlzdD8gIEl0IHdpbGwgYWx3YXlzIHJhaXNlIHNvbWUgZXJyb3IgYXQKLXJ1bnRpbWUuCi0KLT4+PiAoKSA9IDEKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gKCkKLQogPj4+IGYoKSA9IDEKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gZnVuY3Rpb24gY2FsbApAQCAtMzc0LDcgKzM2NiwyMyBAQAogICAgICAuLi4KICAgIFN5bnRheEVycm9yOiB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MKIAotTWlzdXNlIG9mIHRoZSBub25sb2NhbCBzdGF0ZW1lbnQgY2FuIGxlYWQgdG8gYSBmZXcgdW5pcXVlIHN5bnRheCBlcnJvcnMuCitNaXN1c2Ugb2YgdGhlIG5vbmxvY2FsIGFuZCBnbG9iYWwgc3RhdGVtZW50IGNhbiBsZWFkIHRvIGEgZmV3IHVuaXF1ZSBzeW50YXggZXJyb3JzLgorCisgICA+Pj4gZGVmIGYoKToKKyAgIC4uLiAgICAgeCA9IDEKKyAgIC4uLiAgICAgZ2xvYmFsIHgKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBTeW50YXhFcnJvcjogbmFtZSAneCcgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbgorCisgICA+Pj4gZGVmIGYoKToKKyAgIC4uLiAgICAgeCA9IDEKKyAgIC4uLiAgICAgZGVmIGcoKToKKyAgIC4uLiAgICAgICAgIHByaW50KHgpCisgICAuLi4gICAgICAgICBub25sb2NhbCB4CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgU3ludGF4RXJyb3I6IG5hbWUgJ3gnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24KIAogICAgPj4+IGRlZiBmKHgpOgogICAgLi4uICAgICBub25sb2NhbCB4CkBAIC00OTMsMTAgKzUwMSw2IEBACiAgICAuLi4KIFN5bnRheEVycm9yOiBrZXl3b3JkIGFyZ3VtZW50IHJlcGVhdGVkCiAKLT4+PiBkZWwgKCkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiBjYW4ndCBkZWxldGUgKCkKLQogPj4+IHsxLCAyLCAzfSA9IDQyCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGxpdGVyYWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggNDQzNWQ2OS4uZGY5ZWJkNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBnYwogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgbG9jYWxlCiAKICMgY291bnQgdGhlIG51bWJlciBvZiB0ZXN0IHJ1bnMsIHVzZWQgdG8gY3JlYXRlIHVuaXF1ZQogIyBzdHJpbmdzIHRvIGludGVybiBpbiB0ZXN0X2ludGVybigpCkBAIC02MjcsNiArNjI4LDggQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRlc3Quc3VwcG9ydC5GU19OT05BU0NJSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgT1Mgc3VwcG9ydCBvZiBub24tQVNDSUkgZW5jb2RpbmdzJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgPT0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgRlMgZW5jb2RpbmcgdG8gbWF0Y2ggbG9jYWxlJykKICAgICBkZWYgdGVzdF9pb2VuY29kaW5nX25vbmFzY2lpKHNlbGYpOgogICAgICAgICBlbnYgPSBkaWN0KG9zLmVudmlyb24pCiAKQEAgLTY2OSw4ICs2NzIsNiBAQAogICAgICAgICBmc19lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBleHBlY3RlZCA9ICd1dGYtOCcKLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAgIGV4cGVjdGVkID0gJ21iY3MnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHBlY3RlZCA9IE5vbmUKICAgICAgICAgc2VsZi5jaGVja19mc2VuY29kaW5nKGZzX2VuY29kaW5nLCBleHBlY3RlZCkKQEAgLTkxMiwxMyArOTEzLDEzIEBACiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKICAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2Nsb3N1cmVfX1swXSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGNvZGUKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQotICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc2aTEzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNmkxM1AnKSkKICAgICAgICAgZGVmIGdldF9jZWxsMih4KToKICAgICAgICAgICAgIGRlZiBpbm5lcigpOgogICAgICAgICAgICAgICAgIHJldHVybiB4CiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwyLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykgKyAxKQorICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzZpMTNQJykgKyAxKQogICAgICAgICAjIGNvbXBsZXgKICAgICAgICAgY2hlY2soY29tcGxleCgwLDEpLCBzaXplKCcyZCcpKQogICAgICAgICAjIG1ldGhvZF9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKQEAgLTkzNiw5ICs5MzcsOSBAQAogICAgICAgICAjIG1ldGhvZC13cmFwcGVyIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgY2hlY2soe30uX19pdGVyX18sIHNpemUoJzJQJykpCiAgICAgICAgICMgZGljdAotICAgICAgICBjaGVjayh7fSwgc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnMm5QbicpICsgOCpjYWxjc2l6ZSgnbjJQJykpCisgICAgICAgIGNoZWNrKHt9LCBzaXplKCduUTJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKSArIDggKyAoOCoyLy8zKSpjYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgIGxvbmdkaWN0ID0gezE6MSwgMjoyLCAzOjMsIDQ6NCwgNTo1LCA2OjYsIDc6NywgODo4fQotICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnMm5QbicpICsgMTYqY2FsY3NpemUoJ24yUCcpKQorICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnblEyUCcpICsgY2FsY3NpemUoJzJuUDJuJykgKyAxNiArICgxNioyLy8zKSpjYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS1rZXl2aWV3CiAgICAgICAgIGNoZWNrKHt9LmtleXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWV2aWV3CkBAIC0xMDk2LDEzICsxMDk3LDEzIEBACiAgICAgICAgICAgICAgICAgICAnMTBQJyAgICAgICAgICAgICAgICAgIyBQeVNlcXVlbmNlTWV0aG9kcwogICAgICAgICAgICAgICAgICAgJzJQJyAgICAgICAgICAgICAgICAgICMgUHlCdWZmZXJQcm9jcwogICAgICAgICAgICAgICAgICAgJzRQJykKLSAgICAgICAgIyBTZXBhcmF0ZSBibG9jayBmb3IgUHlEaWN0S2V5c09iamVjdCB3aXRoIDQgZW50cmllcwotICAgICAgICBzICs9IGNhbGNzaXplKCIyblBuIikgKyA0KmNhbGNzaXplKCJuMlAiKQorICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggOCBrZXlzIGFuZCA1IGVudHJpZXMKKyAgICAgICAgcyArPSBjYWxjc2l6ZSgiMm5QMm4iKSArIDggKyA1KmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCiAgICAgICAgIGNsYXNzIG5ld3N0eWxlY2xhc3Mob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzLCBzKQogICAgICAgICAjIGRpY3Qgd2l0aCBzaGFyZWQga2V5cwotICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ24yUCcgKyAnMm5QbicpKQorICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ25RMlAnICsgJzJuUDJuJykpCiAgICAgICAgICMgdW5pY29kZQogICAgICAgICAjIGVhY2ggdHVwbGUgY29udGFpbnMgYSBzdHJpbmcgYW5kIGl0cyBleHBlY3RlZCBjaGFyYWN0ZXIgc2l6ZQogICAgICAgICAjIGRvbid0IHB1dCBhbnkgc3RhdGljIHN0cmluZ3MgaGVyZSwgYXMgdGhleSBtYXkgY29udGFpbgpAQCAtMTE5MSw2ICsxMTkyLDMyIEBACiAgICAgICAgICMgc3lzLmZsYWdzCiAgICAgICAgIGNoZWNrKHN5cy5mbGFncywgdnNpemUoJycpICsgc2VsZi5QICogbGVuKHN5cy5mbGFncykpCiAKKyAgICBkZWYgdGVzdF9hc3luY2dlbl9ob29rcyhzZWxmKToKKyAgICAgICAgb2xkID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9sZC5maXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9sZC5maW5hbGl6ZXIpCisKKyAgICAgICAgZmlyc3RpdGVyID0gbGFtYmRhICphOiBOb25lCisgICAgICAgIHN5cy5zZXRfYXN5bmNnZW5faG9va3MoZmlyc3RpdGVyPWZpcnN0aXRlcikKKyAgICAgICAgaG9va3MgPSBzeXMuZ2V0X2FzeW5jZ2VuX2hvb2tzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rcy5maXJzdGl0ZXIsIGZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1swXSwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpbmFsaXplciwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1sxXSwgTm9uZSkKKworICAgICAgICBmaW5hbGl6ZXIgPSBsYW1iZGEgKmE6IE5vbmUKKyAgICAgICAgc3lzLnNldF9hc3luY2dlbl9ob29rcyhmaW5hbGl6ZXI9ZmluYWxpemVyKQorICAgICAgICBob29rcyA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpcnN0aXRlciwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzBdLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmluYWxpemVyLCBmaW5hbGl6ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3NbMV0sIGZpbmFsaXplcikKKworICAgICAgICBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzKCpvbGQpCisgICAgICAgIGN1ciA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjdXIuZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjdXIuZmluYWxpemVyKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFN5c01vZHVsZVRlc3QsIFNpemVvZlRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CmluZGV4IDUwOWJjM2UuLjI1YzU4MzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CkBAIC0zMzgsOCArMzM4LDggQEAKIAogICAgIGRlZiB0ZXN0XzE0X29ubGluZXJfaWYoc2VsZik6CiAgICAgICAgIGRlZiBvbmxpbmVycygpOgotICAgICAgICAgICAgaWYgVHJ1ZTogRmFsc2UKLSAgICAgICAgICAgIGVsc2U6IFRydWUKKyAgICAgICAgICAgIGlmIFRydWU6IHg9RmFsc2UKKyAgICAgICAgICAgIGVsc2U6IHg9VHJ1ZQogICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgc2VsZi5ydW5fYW5kX2NvbXBhcmUoCiAgICAgICAgICAgICBvbmxpbmVycywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKaW5kZXggYTIzYmYwNmEuLjA5MWU5MDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0zOTQsOCArMzk0LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbGludXgnIGluIHN1ZmZpeCwgc3VmZml4KQogICAgICAgICBpZiByZS5tYXRjaCgnKGlbMy02XTg2fHg4Nl82NCkkJywgbWFjaGluZSk6CiAgICAgICAgICAgICBpZiBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX2NoYXJfcCgpKSA9PSA0OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ2kzODYtbGludXgtZ251LnNvJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnV4MzIuc28nKSwKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCdpMzg2LWxpbnV4LWdudS5zbycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5lbmRzd2l0aCgnaTY4Ni1saW51eC1hbmRyb2lkLnNvJykgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251eDMyLnNvJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCkKICAgICAgICAgICAgIGVsc2U6ICMgOCBieXRlIHBvaW50ZXIgc2l6ZQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnUuc28nKSwgc3VmZml4KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CmluZGV4IGFiZmIzNGQuLmQ3Nzg1Y2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKQEAgLTIwNzQsNiArMjA3NCwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgdGFyZmlsZS5pdG4oMHgxMDAwMDAwMDAwMCwgNiwgdGFyZmlsZS5HTlVfRk9STUFUKQogCisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J3ZlcnNpb24nLCAnZ3JwJywgJ3B3ZCcsICdzeW1saW5rX2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAnTlVMJywgJ0JMT0NLU0laRScsICdSRUNPUkRTSVpFJywgJ0dOVV9NQUdJQycsCisgICAgICAgICAgICAgICAgICAgICAnUE9TSVhfTUFHSUMnLCAnTEVOR1RIX05BTUUnLCAnTEVOR1RIX0xJTksnLAorICAgICAgICAgICAgICAgICAgICAgJ0xFTkdUSF9QUkVGSVgnLCAnUkVHVFlQRScsICdBUkVHVFlQRScsICdMTktUWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdTWU1UWVBFJywgJ0NIUlRZUEUnLCAnQkxLVFlQRScsICdESVJUWVBFJywgJ0ZJRk9UWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdDT05UVFlQRScsICdHTlVUWVBFX0xPTkdOQU1FJywgJ0dOVVRZUEVfTE9OR0xJTksnLAorICAgICAgICAgICAgICAgICAgICAgJ0dOVVRZUEVfU1BBUlNFJywgJ1hIRFRZUEUnLCAnWEdMVFlQRScsICdTT0xBUklTX1hIRFRZUEUnLAorICAgICAgICAgICAgICAgICAgICAgJ1NVUFBPUlRFRF9UWVBFUycsICdSRUdVTEFSX1RZUEVTJywgJ0dOVV9UWVBFUycsCisgICAgICAgICAgICAgICAgICAgICAnUEFYX0ZJRUxEUycsICdQQVhfTkFNRV9GSUVMRFMnLCAnUEFYX05VTUJFUl9GSUVMRFMnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0bicsICdudHMnLCAnbnRpJywgJ2l0bicsICdjYWxjX2Noa3N1bXMnLCAnY29weWZpbGVvYmonLAorICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVtb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICdFbXB0eUhlYWRlckVycm9yJywgJ1RydW5jYXRlZEhlYWRlckVycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICdFT0ZIZWFkZXJFcnJvcicsICdJbnZhbGlkSGVhZGVyRXJyb3InLAorICAgICAgICAgICAgICAgICAgICAgJ1N1YnNlcXVlbnRIZWFkZXJFcnJvcicsICdFeEZpbGVPYmplY3QnLAorICAgICAgICAgICAgICAgICAgICAgJ21haW4nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCB0YXJmaWxlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCiAKIGNsYXNzIENvbW1hbmRMaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKaW5kZXggOGUyMTlmNC4uNTFkODJlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgdGVsbmV0bGliCi1pbXBvcnQgdGltZQogaW1wb3J0IGNvbnRleHRsaWIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00Miw2ICs0MSwxMSBAQAogICAgICAgICB0ZWxuZXQgPSB0ZWxuZXRsaWIuVGVsbmV0KEhPU1QsIHNlbGYucG9ydCkKICAgICAgICAgdGVsbmV0LnNvY2suY2xvc2UoKQogCisgICAgZGVmIHRlc3RDb250ZXh0TWFuYWdlcihzZWxmKToKKyAgICAgICAgd2l0aCB0ZWxuZXRsaWIuVGVsbmV0KEhPU1QsIHNlbGYucG9ydCkgYXMgdG46CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh0bi5nZXRfc29ja2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRuLmdldF9zb2NrZXQoKSkKKwogICAgIGRlZiB0ZXN0VGltZW91dERlZmF1bHQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb2NrZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKSBpcyBOb25lKQogICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoMzApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CmluZGV4IGI2MzA1MDkuLjg0NWU3ZDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CkBAIC04LDcgKzgsNiBAQAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKIGltcG9ydCByYW5kb20KLWltcG9ydCByZQogaW1wb3J0IHN5cwogX3RocmVhZCA9IGltcG9ydF9tb2R1bGUoJ190aHJlYWQnKQogdGhyZWFkaW5nID0gaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKQEAgLTE5LDYgKzE4LDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gdGVzdCBpbXBvcnQgbG9ja190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogIyBCZXR3ZWVuIGZvcmsoKSBhbmQgZXhlYygpLCBvbmx5IGFzeW5jLXNhZmUgZnVuY3Rpb25zIGFyZSBhbGxvd2VkIChpc3N1ZXMKQEAgLTExMTcsNSArMTExNywxMiBAQAogY2xhc3MgQmFycmllclRlc3RzKGxvY2tfdGVzdHMuQmFycmllclRlc3RzKToKICAgICBiYXJyaWVydHlwZSA9IHN0YXRpY21ldGhvZCh0aHJlYWRpbmcuQmFycmllcikKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyJUaHJlYWRFcnJvciJ9CisgICAgICAgIGJsYWNrbGlzdCA9IHsnY3VycmVudFRocmVhZCcsICdhY3RpdmVDb3VudCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHRocmVhZGluZywgKCd0aHJlYWRpbmcnLCAnX3RocmVhZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQppbmRleCA3NmI4OTRlLi5mMjI0MjEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CkBAIC0xLDYgKzEsOCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IGVudW0KIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBtYXRoCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKQEAgLTIxLDE3ICsyMywyNyBAQAogVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKIFRJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCiAKK1NFQ19UT19VUyA9IDEwICoqIDYKIFVTX1RPX05TID0gMTAgKiogMwogTVNfVE9fTlMgPSAxMCAqKiA2CiBTRUNfVE9fTlMgPSAxMCAqKiA5CitOU19UT19TRUMgPSAxMCAqKiA5CiAKIGNsYXNzIF9QeVRpbWUoZW51bS5JbnRFbnVtKToKICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCiAgICAgUk9VTkRfRkxPT1IgPSAwCiAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQogICAgIFJPVU5EX0NFSUxJTkcgPSAxCisgICAgIyBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgIFJPVU5EX0hBTEZfRVZFTiA9IDIKIAotQUxMX1JPVU5ESU5HX01FVEhPRFMgPSAoX1B5VGltZS5ST1VORF9GTE9PUiwgX1B5VGltZS5ST1VORF9DRUlMSU5HKQorIyBSb3VuZGluZyBtb2RlcyBzdXBwb3J0ZWQgYnkgUHlUaW1lCitST1VORElOR19NT0RFUyA9ICgKKyAgICAjIChQeVRpbWUgcm91bmRpbmcgbWV0aG9kLCBkZWNpbWFsIHJvdW5kaW5nIG1ldGhvZCkKKyAgICAoX1B5VGltZS5ST1VORF9GTE9PUiwgZGVjaW1hbC5ST1VORF9GTE9PUiksCisgICAgKF9QeVRpbWUuUk9VTkRfQ0VJTElORywgZGVjaW1hbC5ST1VORF9DRUlMSU5HKSwKKyAgICAoX1B5VGltZS5ST1VORF9IQUxGX0VWRU4sIGRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOKSwKKykKIAogCiBjbGFzcyBUaW1lVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNjA3LDc5ICs2MTksNiBAQAogCiAKIGNsYXNzIFRlc3RQeXRpbWUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5pbnZhbGlkX3ZhbHVlcyA9ICgKLSAgICAgICAgICAgIC0oMiAqKiAxMDApLCAyICoqIDEwMCwKLSAgICAgICAgICAgIC0oMi4wICoqIDEwMC4wKSwgMi4wICoqIDEwMC4wLAotICAgICAgICApCi0KLSAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAotICAgICAgICBmb3Igb2JqLCB0aW1lX3QsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMS45LCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS45LCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVfdChvYmosIHJuZCksIHRpbWVfdCkKLQotICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQsIHJuZCkKLQotICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYwotICAgICAgICBmb3Igb2JqLCB0aW1lc3BlYywgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDAsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgxLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXNwZWM9dGltZXNwZWMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmosIHJuZCksIHRpbWVzcGVjKQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCBpbnZhbGlkLCBybmQpCi0KICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X2xvY2FsdGltZV90aW1lem9uZShzZWxmKToKIApAQCAtNzM0LDI2NiArNjczLDI5MSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX3pvbmUsIE5vbmUpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3Rlc3RjYXBpIGlzIG5vdCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGhlIF90ZXN0Y2FwaSBtb2R1bGUnKQotY2xhc3MgVGVzdFB5VGltZV90KHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKK2NsYXNzIENQeVRpbWVUZXN0Q2FzZToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIHRvIHRlc3QgdGhlIEMgX1B5VGltZV90IEFQSS4KKyAgICAiIiIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gTm9uZQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgU0laRU9GX1RJTUVfVAorICAgICAgICBiaXRzID0gU0laRU9GX1RJTUVfVCAqIDggLSAxCisgICAgICAgIHNlbGYudGltZV90X21pbiA9IC0yICoqIGJpdHMKKyAgICAgICAgc2VsZi50aW1lX3RfbWF4ID0gMiAqKiBiaXRzIC0gMQorCisgICAgZGVmIHRpbWVfdF9maWx0ZXIoc2VsZiwgc2Vjb25kcyk6CisgICAgICAgIHJldHVybiAoc2VsZi50aW1lX3RfbWluIDw9IHNlY29uZHMgPD0gc2VsZi50aW1lX3RfbWF4KQorCisgICAgZGVmIF9yb3VuZGluZ192YWx1ZXMoc2VsZiwgdXNlX2Zsb2F0KToKKyAgICAgICAgIkJ1aWxkIHRpbWVzdGFtcHMgdXNlZCB0byB0ZXN0IHJvdW5kaW5nLiIKKworICAgICAgICB1bml0cyA9IFsxLCBVU19UT19OUywgTVNfVE9fTlMsIFNFQ19UT19OU10KKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBwaWNvc2Vjb25kcyBhcmUgb25seSB0ZXN0ZWQgdG8gcHl0aW1lX2NvbnZlcnRlciBhY2NlcHRpbmcgZmxvYXRzCisgICAgICAgICAgICB1bml0cy5hcHBlbmQoMWUtMykKKworICAgICAgICB2YWx1ZXMgPSAoCisgICAgICAgICAgICAjIHNtYWxsIHZhbHVlcworICAgICAgICAgICAgMSwgMiwgNSwgNywgMTIzLCA0NTYsIDEyMzQsCisgICAgICAgICAgICAjIDEwXmsgLSAxCisgICAgICAgICAgICA5LAorICAgICAgICAgICAgOTksCisgICAgICAgICAgICA5OTksCisgICAgICAgICAgICA5OTk5LAorICAgICAgICAgICAgOTk5OTksCisgICAgICAgICAgICA5OTk5OTksCisgICAgICAgICAgICAjIHRlc3QgaGFsZiBldmVuIHJvdW5kaW5nIG5lYXIgMC41LCAxLjUsIDIuNSwgMy41LCA0LjUKKyAgICAgICAgICAgIDQ5OSwgNTAwLCA1MDEsCisgICAgICAgICAgICAxNDk5LCAxNTAwLCAxNTAxLAorICAgICAgICAgICAgMjUwMCwKKyAgICAgICAgICAgIDM1MDAsCisgICAgICAgICAgICA0NTAwLAorICAgICAgICApCisKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IFswXQorICAgICAgICBmb3IgdW5pdCBpbiB1bml0czoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgbnMgPSB2YWx1ZSAqIHVuaXQKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisgICAgICAgIGZvciBwb3cyIGluICgwLCA1LCAxMCwgMTUsIDIyLCAyMywgMjQsIDMwLCAzMyk6CisgICAgICAgICAgICBucyA9ICgyICoqIHBvdzIpICogU0VDX1RPX05TCisgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoCisgICAgICAgICAgICAgICAgLW5zLTEsIC1ucywgLW5zKzEsCisgICAgICAgICAgICAgICAgbnMtMSwgbnMsIG5zKzEKKyAgICAgICAgICAgICkpCisgICAgICAgIGZvciBzZWNvbmRzIGluIChfdGVzdGNhcGkuSU5UX01JTiwgX3Rlc3RjYXBpLklOVF9NQVgpOgorICAgICAgICAgICAgbnNfdGltZXN0YW1wcy5hcHBlbmQoc2Vjb25kcyAqIFNFQ19UT19OUykKKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBudW1iZXJzIHdpdGggYW4gZXhhY3QgcmVwcmVzZW50YXRpb24gaW4gSUVFRSA3NTQgKGJhc2UgMikKKyAgICAgICAgICAgIGZvciBwb3cyIGluICgzLCA3LCAxMCwgMTUpOgorICAgICAgICAgICAgICAgIG5zID0gMi4wICoqICgtcG93MikKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgIyBzZWNvbmRzIGNsb3NlIHRvIF9QeVRpbWVfdCB0eXBlIGxpbWl0CisgICAgICAgIG5zID0gKDIgKiogNjMgLy8gU0VDX1RPX05TKSAqIFNFQ19UT19OUworICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgcmV0dXJuIG5zX3RpbWVzdGFtcHMKKworICAgIGRlZiBfY2hlY2tfcm91bmRpbmcoc2VsZiwgcHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9mbG9hdCwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcj1Ob25lKToKKworICAgICAgICBkZWYgY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcyk6CisgICAgICAgICAgICBpZiB1c2VfZmxvYXQ6CisgICAgICAgICAgICAgICAgdW5pdF90b19ucyA9IFNFQ19UT19OUyAvIGZsb2F0KHVuaXRfdG9fc2VjKQorICAgICAgICAgICAgICAgIHZhbHVlcyA9IFtucyAvIHVuaXRfdG9fbnMgZm9yIG5zIGluIG5zX3RpbWVzdGFtcHNdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHVuaXRfdG9fbnMgPSBTRUNfVE9fTlMgLy8gdW5pdF90b19zZWMKKyAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbbnMgLy8gdW5pdF90b19ucyBmb3IgbnMgaW4gbnNfdGltZXN0YW1wc10KKworICAgICAgICAgICAgaWYgdmFsdWVfZmlsdGVyOgorICAgICAgICAgICAgICAgIHZhbHVlcyA9IGZpbHRlcih2YWx1ZV9maWx0ZXIsIHZhbHVlcykKKworICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlcyBhbmQgc29ydAorICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQodmFsdWVzKSkKKworICAgICAgICAjIHRlc3Qgcm91bmRpbmcKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IHNlbGYuX3JvdW5kaW5nX3ZhbHVlcyh1c2VfZmxvYXQpCisgICAgICAgIHZhbGlkX3ZhbHVlcyA9IGNvbnZlcnRfdmFsdWVzKG5zX3RpbWVzdGFtcHMpCisgICAgICAgIGZvciB0aW1lX3JuZCwgZGVjaW1hbF9ybmQgaW4gUk9VTkRJTkdfTU9ERVMgOgorICAgICAgICAgICAgY29udGV4dCA9IGRlY2ltYWwuZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gZGVjaW1hbF9ybmQKKworICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvID0geyd2YWx1ZSc6IHZhbHVlLCAncm91bmRpbmcnOiBkZWNpbWFsX3JuZH0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkX2Z1bmModmFsdWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXJyb3Igb24gdGltZXN0YW1wIGNvbnZlcnNpb246ICVzIiAlIGRlYnVnX2luZm8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8pCisKKyAgICAgICAgIyB0ZXN0IG92ZXJmbG93CisgICAgICAgIG5zID0gc2VsZi5PVkVSRkxPV19TRUNPTkRTICogU0VDX1RPX05TCisgICAgICAgIG5zX3RpbWVzdGFtcHMgPSAoLW5zLCBucykKKyAgICAgICAgb3ZlcmZsb3dfdmFsdWVzID0gY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcykKKyAgICAgICAgZm9yIHRpbWVfcm5kLCBfIGluIFJPVU5ESU5HX01PREVTIDoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBvdmVyZmxvd192YWx1ZXM6CisgICAgICAgICAgICAgICAgZGVidWdfaW5mbyA9IHsndmFsdWUnOiB2YWx1ZSwgJ3JvdW5kaW5nJzogdGltZV9ybmR9CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtc2c9ZGVidWdfaW5mbyk6CisgICAgICAgICAgICAgICAgICAgIHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorCisgICAgZGVmIGNoZWNrX2ludF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90b19zZWM9MSwgdmFsdWVfZmlsdGVyPU5vbmUpOgorICAgICAgICBzZWxmLl9jaGVja19yb3VuZGluZyhweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcikKKworICAgIGRlZiBjaGVja19mbG9hdF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3RvX3NlYz0xLCB2YWx1ZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NoZWNrX3JvdW5kaW5nKHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUsIHVuaXRfdG9fc2VjLCB2YWx1ZV9maWx0ZXIpCisKKyAgICBkZWYgZGVjaW1hbF9yb3VuZChzZWxmLCB4KToKKyAgICAgICAgZCA9IGRlY2ltYWwuRGVjaW1hbCh4KQorICAgICAgICBkID0gZC5xdWFudGl6ZSgxKQorICAgICAgICByZXR1cm4gaW50KGQpCisKKworY2xhc3MgVGVzdENQeVRpbWUoQ1B5VGltZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgQyBfUHlUaW1lX3QgQVBJLgorICAgICIiIgorICAgICMgX1B5VGltZV90IGlzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyCisgICAgT1ZFUkZMT1dfU0VDT05EUyA9IG1hdGguY2VpbCgoMioqNjMgKyAxKSAvIFNFQ19UT19OUykKKwogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzCi0gICAgICAgIGZvciBzZWNvbmRzIGluICgwLCAzLCAtNDU2LCBfdGVzdGNhcGkuSU5UX01BWCwgX3Rlc3RjYXBpLklOVF9NSU4pOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kcyhzZWNvbmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMgKiBTRUNfVE9fTlMpCisKKyAgICAgICAgIyBQeVRpbWVfRnJvbVNlY29uZHMoKSBleHBlY3RzIGEgQyBpbnQsIHJlamVjdCB2YWx1ZXMgb3V0IG9mIHJhbmdlCisgICAgICAgIGRlZiBjX2ludF9maWx0ZXIoc2Vjcyk6CisgICAgICAgICAgICByZXR1cm4gKF90ZXN0Y2FwaS5JTlRfTUlOIDw9IHNlY3MgPD0gX3Rlc3RjYXBpLklOVF9NQVgpCisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIHNlY3MsIHJuZDogUHlUaW1lX0Zyb21TZWNvbmRzKHNlY3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPWNfaW50X2ZpbHRlcikKIAogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzT2JqZWN0KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0CiAKLSAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCByb3VuZGluZyBtZXRob2RzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3Igb2JqLCB0cyBpbiAoCi0gICAgICAgICAgICAgICAgIyBpbnRlZ2VycwotICAgICAgICAgICAgICAgICgwLCAwKSwKLSAgICAgICAgICAgICAgICAoMSwgU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoLTMsIC0zICogU0VDX1RPX05TKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoCisgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QsCisgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUykKIAotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHN1YnNlY29uZHMKLSAgICAgICAgICAgICAgICAoMC4wLCAwKSwKLSAgICAgICAgICAgICAgICAoMWUtOSwgMSksCi0gICAgICAgICAgICAgICAgKDFlLTYsIDEwICoqIDMpLAotICAgICAgICAgICAgICAgICgxZS0zLCAxMCAqKiA2KSwKLQotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMi4wLCAyICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoMTIzLjAsIDEyMyAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKC03LjAsIC03ICogU0VDX1RPX05TKSwKLQotICAgICAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIqKjIyIC0gMWUtOSwgIDQxOTQzMDM5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMiwgICAgICAgICA0MTk0MzA0MDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjIgKyAxZS05LCAgNDE5NDMwNDAwMDAwMDAwMSksCi0gICAgICAgICAgICAgICAgKDIqKjIzIC0gMWUtOSwgIDgzODg2MDc5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMywgICAgICAgICA4Mzg4NjA4MDAwMDAwMDAwKSwKLQotICAgICAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMioqMjMgKyAxZS05LCAgODM4ODYwODAwMDAwMDAwMiksCi0KLSAgICAgICAgICAgICAgICAjIG5hbm9zZWNvbmRzIGFyZSBsb3N0IGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyKioyNCAtIDFlLTksIDE2Nzc3MjE1OTk5OTk5OTk4KSwKLSAgICAgICAgICAgICAgICAoMioqMjQsICAgICAgICAxNjc3NzIxNjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI0ICsgMWUtOSwgMTY3NzcyMTYwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyNSAtIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjUgICAgICAgLCAzMzU1NDQzMjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI1ICsgMWUtOSwgMzM1NTQ0MzIwMDAwMDAwMDApLAotCi0gICAgICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAgICAgKDkyMjMzNzIwMzYsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LjAsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNiwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNi4wLCAtOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXN0YW1wPXRzKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKLQotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qocm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNy4wLCBybmQpCi0gICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgtOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcuMCwgcm5kKQotCi0gICAgICAgICMgQ29udmVyc2lvbiBnaXZpbmcgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtZXRob2QKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG9iaiwgdHMsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIGNsb3NlIHRvIHplcm8KLSAgICAgICAgICAgICggMWUtMTAsICAwLCBGTE9PUiksCi0gICAgICAgICAgICAoIDFlLTEwLCAgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTFlLTEwLCAtMSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHRlc3Qgcm91bmRpbmcgb2YgdGhlIGxhc3QgbmFub3NlY29uZAotICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2Nzg5LCBGTE9PUiksCi0gICAgICAgICAgICAoIDEuMTIzNDU2Nzg5OSwgIDExMjM0NTY3OTAsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2NzkwLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5OSwgLTExMjM0NTY3ODksIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIGNsb3NlIHRvIDEgc2Vjb25kCi0gICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgICA5OTk5OTk5OTksIEZMT09SKSwKLSAgICAgICAgICAgICggMC45OTk5OTk5OTk5LCAgMTAwMDAwMDAwMCwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgLTEwMDAwMDAwMDAsIEZMT09SKSwKLSAgICAgICAgICAgICgtMC45OTk5OTk5OTk5LCAgLTk5OTk5OTk5OSwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZygKKyAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCwKKyAgICAgICAgICAgIGxhbWJkYSBuczogc2VsZi5kZWNpbWFsX3JvdW5kKG5zICogU0VDX1RPX05TKSkKIAogICAgIGRlZiB0ZXN0X0FzU2Vjb25kc0RvdWJsZShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1NlY29uZHNEb3VibGUKIAotICAgICAgICBmb3IgbmFub3NlY29uZHMsIHNlY29uZHMgaW4gKAotICAgICAgICAgICAgIyBuZWFyIDEgbmFub3NlY29uZAotICAgICAgICAgICAgKCAwLCAgMC4wKSwKLSAgICAgICAgICAgICggMSwgIDFlLTkpLAotICAgICAgICAgICAgKC0xLCAtMWUtOSksCisgICAgICAgIGRlZiBmbG9hdF9jb252ZXJ0ZXIobnMpOgorICAgICAgICAgICAgaWYgYWJzKG5zKSAlIFNFQ19UT19OUyA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucyAvLyBTRUNfVE9fTlMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucykgLyBTRUNfVE9fTlMKIAotICAgICAgICAgICAgIyBuZWFyIDEgc2Vjb25kCi0gICAgICAgICAgICAoU0VDX1RPX05TICsgMSwgMS4wICsgMWUtOSksCi0gICAgICAgICAgICAoU0VDX1RPX05TLCAgICAgMS4wKSwKLSAgICAgICAgICAgIChTRUNfVE9fTlMgLSAxLCAxLjAgLSAxZS05KSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIG5zLCBybmQ6IFB5VGltZV9Bc1NlY29uZHNEb3VibGUobnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdF9jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgIyBhIGZldyBzZWNvbmRzCi0gICAgICAgICAgICAoMTIzICogU0VDX1RPX05TLCAxMjMuMCksCi0gICAgICAgICAgICAoLTU2NyAqIFNFQ19UT19OUywgLTU2Ny4wKSwKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWxfY29udmVydGVyKHNlbGYsIGRlbm9taW5hdG9yKToKKyAgICAgICAgZGVub20gPSBkZWNpbWFsLkRlY2ltYWwoZGVub21pbmF0b3IpCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoNDE5NDMwMzk5OTk5OTk5OSwgMioqMjIgLSAxZS05KSwKLSAgICAgICAgICAgICg0MTk0MzA0MDAwMDAwMDAwLCAyKioyMiksCi0gICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMSwgMioqMjIgKyAxZS05KSwKKyAgICAgICAgZGVmIGNvbnZlcnRlcih2YWx1ZSk6CisgICAgICAgICAgICBkID0gZGVjaW1hbC5EZWNpbWFsKHZhbHVlKSAvIGRlbm9tCisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNpbWFsX3JvdW5kKGQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICg4Mzg4NjA4MDAwMDAwMDAyLCAyKioyMyArIDFlLTkpLAorICAgICAgICByZXR1cm4gY29udmVydGVyCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTgsIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTksIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDAsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDEsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDIsIDIqKjI0ICsgMmUtOSksCi0KLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMCwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMiwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwNCwgMioqMjUgKyA0ZS05KSwKLQotICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAoOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgOTIyMzM3MjAzNi4wKSwKLSAgICAgICAgICAgICgtOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgLTkyMjMzNzIwMzYuMCksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1uYW5vc2Vjb25kcywgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1NlY29uZHNEb3VibGUobmFub3NlY29uZHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcykKLQotICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgZGVmIHRlc3RfQXNUaW1ldmFsKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXZhbAotICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgotICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCi0gICAgICAgICAgICAgICAgIyBtaWNyb3NlY29uZHMKLSAgICAgICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICAgICAoMTAwMCwgKDAsIDEpKSwKLSAgICAgICAgICAgICAgICAoLTEwMDAsICgtMSwgOTk5OTk5KSksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgKDIsIDApKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsICgtMywgMCkpLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1ldmFsKG5zLCBybmQpLCB0dikKKyAgICAgICAgdXNfY29udmVydGVyID0gc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoVVNfVE9fTlMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCB0diwgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAoMCwgMCksIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OSksIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgKDAsIDApLCBDRUlMSU5HKSwKKyAgICAgICAgZGVmIHRpbWV2YWxfY29udmVydGVyKG5zKToKKyAgICAgICAgICAgIHVzID0gdXNfY29udmVydGVyKG5zKQorICAgICAgICAgICAgcmV0dXJuIGRpdm1vZCh1cywgU0VDX1RPX1VTKQogCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQ1NjcwMDEsICgxLCAyMzQ1NjcpLCBGTE9PUiksCi0gICAgICAgICAgICAoMTIzNDU2NzAwMSwgKDEsIDIzNDU2OCksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0NTY3MDAxLCAoLTIsIDc2NTQzMiksIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNDU2NzAwMSwgKC0yLCA3NjU0MzMpLCBDRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXZhbChucywgcm5kKSwgdHYpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IExPTkdfTUlOLCBMT05HX01BWAorCisgICAgICAgICAgICAjIE9uIFdpbmRvd3MsIHRpbWV2YWwudHZfc2VjIHR5cGUgaXMgYSBDIGxvbmcKKyAgICAgICAgICAgIGRlZiBzZWNvbmRzX2ZpbHRlcihzZWNzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTE9OR19NSU4gPD0gc2VjcyA8PSBMT05HX01BWAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vjb25kc19maWx0ZXIgPSBzZWxmLnRpbWVfdF9maWx0ZXIKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhQeVRpbWVfQXNUaW1ldmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1ldmFsX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2Vjb25kc19maWx0ZXIpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKF90ZXN0Y2FwaSwgJ1B5VGltZV9Bc1RpbWVzcGVjJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgX3Rlc3RjYXBpLlB5VGltZV9Bc1RpbWVzcGVjJykKLSAgICBkZWYgdGVzdF90aW1lc3BlYyhzZWxmKToKKyAgICBkZWYgdGVzdF9Bc1RpbWVzcGVjKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXNwZWMKLSAgICAgICAgZm9yIG5zLCB0cyBpbiAoCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSkpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OTk5OSkpLAogCi0gICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAotICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKyAgICAgICAgZGVmIHRpbWVzcGVjX2NvbnZlcnRlcihucyk6CisgICAgICAgICAgICByZXR1cm4gZGl2bW9kKG5zLCBTRUNfVE9fTlMpCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNDU2Nzg5MCwgKDEsIDIzNDU2Nzg5MCkpLAotICAgICAgICAgICAgKC0xMjM0NTY3ODkwLCAoLTIsIDc2NTQzMjExMCkpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWVzcGVjPXRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWVzcGVjKG5zKSwgdHMpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKGxhbWJkYSBucywgcm5kOiBQeVRpbWVfQXNUaW1lc3BlYyhucyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzcGVjX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQogCi0gICAgZGVmIHRlc3RfbWlsbGlzZWNvbmRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X0FzTWlsbGlzZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWlsbGlzZWNvbmRzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKLSAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcwotICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEpLAotICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMiksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMCksCi0gICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMCksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgdHYpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKFB5VGltZV9Bc01pbGxpc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoTVNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCi0gICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQgKiBNU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKLSAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgbXMpCi0KLSAgICBkZWYgdGVzdF9taWNyb3NlY29uZHMoc2VsZik6CisgICAgZGVmIHRlc3RfQXNNaWNyb3NlY29uZHMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNNaWNyb3NlY29uZHMKLSAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKLSAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAotICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBVU19UT19OUywgMSksCi0gICAgICAgICAgICAgICAgKC0yICogVVNfVE9fTlMsIC0yKSwKIAotICAgICAgICAgICAgICAgICMgbWlsbGlzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBNU19UT19OUywgMTAwMCksCi0gICAgICAgICAgICAgICAgKC0yICogTVNfVE9fTlMsIC0yMDAwKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoUHlUaW1lX0FzTWljcm9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9kZWNpbWFsX2NvbnZlcnRlcihVU19UT19OUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgICAgICMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAyMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsIC0zMDAwMDAwKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCB0dikKIAotICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORwotICAgICAgICBmb3IgbnMsIG1zLCBybmQgaW4gKAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEsIDAsIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAxLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgLTEsIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgMCwgQ0VJTElORyksCitjbGFzcyBUZXN0T2xkUHlUaW1lKENQeVRpbWVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdGhlIG9sZCBDIF9QeVRpbWVfdCBBUEk6IF9QeVRpbWVfT2JqZWN0VG9YWFgoKSBmdW5jdGlvbnMuCisgICAgIiIiCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNCAqIFVTX1RPX05TICsgMSwgMTIzNCwgRkxPT1IpLAotICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzUsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNCwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgbWlsbGlzZWNvbmRzPW1zLCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCBtcykKKyAgICAjIHRpbWVfdCBpcyBhIDMyLWJpdCBvciA2NC1iaXQgc2lnbmVkIGludGVnZXIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gMiAqKiA2NAorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVfdChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZV90CisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiBzZWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWNpbWFsX3JvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICBkZWYgY3JlYXRlX2NvbnZlcnRlcihzZWxmLCBzZWNfdG9fdW5pdCk6CisgICAgICAgIGRlZiBjb252ZXJ0ZXIoc2Vjcyk6CisgICAgICAgICAgICBmbG9hdHBhcnQsIGludHBhcnQgPSBtYXRoLm1vZGYoc2VjcykKKyAgICAgICAgICAgIGludHBhcnQgPSBpbnQoaW50cGFydCkKKyAgICAgICAgICAgIGZsb2F0cGFydCAqPSBzZWNfdG9fdW5pdAorICAgICAgICAgICAgZmxvYXRwYXJ0ID0gc2VsZi5kZWNpbWFsX3JvdW5kKGZsb2F0cGFydCkKKyAgICAgICAgICAgIGlmIGZsb2F0cGFydCA8IDA6CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ICs9IHNlY190b191bml0CisgICAgICAgICAgICAgICAgaW50cGFydCAtPSAxCisgICAgICAgICAgICBlbGlmIGZsb2F0cGFydCA+PSBzZWNfdG9fdW5pdDoKKyAgICAgICAgICAgICAgICBmbG9hdHBhcnQgLT0gc2VjX3RvX3VuaXQKKyAgICAgICAgICAgICAgICBpbnRwYXJ0ICs9IDEKKyAgICAgICAgICAgIHJldHVybiAoaW50cGFydCwgZmxvYXRwYXJ0KQorICAgICAgICByZXR1cm4gY29udmVydGVyCisKKyAgICBkZWYgdGVzdF9vYmplY3RfdG9fdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXZhbAorCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNlY3M6IChzZWNzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9jb252ZXJ0ZXIoU0VDX1RPX1VTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYworCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiAoc2VjcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2NvbnZlcnRlcihTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5IGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKaW5kZXggMmRiM2MxYi4uMWE5NWUyOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKQEAgLTM1NCw2ICszNTQsMjggQEAKICAgICAgICAgICAgIHMgPSBzZWxmLnJ1bl9tYWluKHN3aXRjaGVzPVsnLW4xJywgJzEvMCddKQogICAgICAgICBzZWxmLmFzc2VydF9leGNfc3RyaW5nKGVycm9yX3N0cmluZ2lvLmdldHZhbHVlKCksICdaZXJvRGl2aXNpb25FcnJvcicpCiAKKyAgICBkZWYgYXV0b3JhbmdlKHNlbGYsIGNhbGxiYWNrPU5vbmUpOgorICAgICAgICB0aW1lciA9IEZha2VUaW1lcihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDEpCisgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zZWxmLmZha2Vfc3RtdCwgc2V0dXA9c2VsZi5mYWtlX3NldHVwLCB0aW1lcj10aW1lcikKKyAgICAgICAgcmV0dXJuIHQuYXV0b3JhbmdlKGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfYXV0b3JhbmdlKHNlbGYpOgorICAgICAgICBudW1fbG9vcHMsIHRpbWVfdGFrZW4gPSBzZWxmLmF1dG9yYW5nZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtX2xvb3BzLCAxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVfdGFrZW4sIDEuMCkKKworICAgIGRlZiB0ZXN0X2F1dG9yYW5nZV93aXRoX2NhbGxiYWNrKHNlbGYpOgorICAgICAgICBkZWYgY2FsbGJhY2soYSwgYik6CisgICAgICAgICAgICBwcmludCgie30gezouM2Z9Ii5mb3JtYXQoYSwgYikpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIG51bV9sb29wcywgdGltZV90YWtlbiA9IHNlbGYuYXV0b3JhbmdlKGNhbGxiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bV9sb29wcywgMTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lX3Rha2VuLCAxLjApCisgICAgICAgIGV4cGVjdGVkID0gKCcxMCAwLjAxMFxuJworICAgICAgICAgICAgICAgICAgICAnMTAwIDAuMTAwXG4nCisgICAgICAgICAgICAgICAgICAgICcxMDAwIDEuMDAwXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IDNiMTdjYTYuLjVhODFhNWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtNCw2ICs0LDggQEAKICAgICAgICAgICAgICAgICAgICAgIG9wZW4gYXMgdG9rZW5pemVfb3BlbiwgVW50b2tlbml6ZXIpCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgbW9jaworZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogaW1wb3J0IG9zCiBpbXBvcnQgdG9rZW4KIApAQCAtMjQsOCArMjYsNyBAQAogICAgICAgICAgICAgaWYgdHlwZSA9PSBFTkRNQVJLRVI6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHR5cGUgPSB0b2tfbmFtZVt0eXBlXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgICUodHlwZSktMTAuMTBzICUodG9rZW4pLTEzLjEzciAlKHN0YXJ0KXMgJShlbmQpcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZiIgICAge3R5cGU6MTB9IHt0b2tlbiFyOjEzfSB7c3RhcnR9IHtlbmR9IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyIgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkiXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucnN0cmlwKCkuc3BsaXRsaW5lcygpKQpAQCAtMTMyLDE4ICsxMzMsMTggQEAKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9IDB4ZmZmZmZmZmZmZmYiLCAiIiJcCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQotICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZiAoMSwgNCkgKDEsIDE3KQorICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZmYnICgxLCA0KSAoMSwgMTcpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gMTIzMTQxMjQyMTUxMjUxNjE2MTEwIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKLSAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEgKDEsIDQpICgxLCAyNSkKKyAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEyNTE2MTYxMTAnICgxLCA0KSAoMSwgMjUpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gLTE1OTIxNTkwMjE1MDEyNTkxIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKICAgICBPUCAgICAgICAgICctJyAgICAgICAgICAgKDEsIDQpICgxLCA1KQotICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MCAoMSwgNSkgKDEsIDIyKQorICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MDEyNTkxJyAoMSwgNSkgKDEsIDIyKQogICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Zsb2F0KHNlbGYpOgpAQCAtMTg2LDYgKzE4NywyMSBAQAogICAgIE5VTUJFUiAgICAgJzMuMTRlMTU5JyAgICAoMSwgNCkgKDEsIDEyKQogICAgICIiIikKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGRlZiBudW1iZXJfdG9rZW4ocyk6CisgICAgICAgICAgICBmID0gQnl0ZXNJTyhzLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIGZvciB0b2t0eXBlLCB0b2tlbiwgc3RhcnQsIGVuZCwgbGluZSBpbiB0b2tlbml6ZShmLnJlYWRsaW5lKToKKyAgICAgICAgICAgICAgICBpZiB0b2t0eXBlID09IE5VTUJFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuCisgICAgICAgICAgICByZXR1cm4gJ2ludmFsaWQgdG9rZW4nCisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmICcoJyBpbiBsaXQ6CisgICAgICAgICAgICAgICAgIyB0aGlzIHdvbid0IHdvcmsgd2l0aCBjb21wb3VuZCBjb21wbGV4IGlucHV0cworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bWJlcl90b2tlbihsaXQpLCBsaXQpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChudW1iZXJfdG9rZW4obGl0KSwgbGl0KQorCiAgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFN0cmluZyBsaXRlcmFscwogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gJyc7IHkgPSBcIlwiIiwgIiIiXApAQCAtMzA3LDYgKzMyMyw1MCBAQAogICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKICAgICBTVFJJTkcgICAgICdSQiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCiAgICAgIiIiKQorICAgICAgICAjIENoZWNrIDAsIDEsIGFuZCAyIGNoYXJhY3RlciBzdHJpbmcgcHJlZml4ZXMuCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUociciYVwKK2RlXAorZmciJywgIiIiXAorICAgIFNUUklORyAgICAgJyJhXFxcXFxcbmRlXFxcXFxcbmZnIlwnICgxLCAwKSAoMywgMykKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1ImFcCitkZSInLCAiIiJcCisgICAgU1RSSU5HICAgICAndSJhXFxcXFxcbmRlIlwnICAoMSwgMCkgKDIsIDMpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHIncmIiYVwKK2QiJywgIiIiXAorICAgIFNUUklORyAgICAgJ3JiImFcXFxcXFxuZCJcJyAgKDEsIDApICgyLCAyKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJyIiImFcCitiIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ1wiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1IiIiYVwKK2IiIiInLCAiIiJcCisgICAgU1RSSU5HICAgICAndVwiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocidyYiIiImFcCitiXAorYyIiIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdyYiJcIiJhXFxcXFxcbmJcXFxcXFxuYyJcIiInICgxLCAwKSAoMywgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJ2YiYWJjIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgnZlIiYXtifWMiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZSImF7Yn1jIicgICAoMSwgMCkgKDEsIDkpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCdmIiIiYWJjIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZcIlwiXCJhYmNcIlwiXCInICAoMSwgMCkgKDEsIDEwKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ2YiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiY1xcXFxcXG5kZWYiJyAoMSwgMCkgKDIsIDQpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHInUmYiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdSZiJhYmNcXFxcXFxuZGVmIicgKDEsIDApICgyLCA0KQorICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJkZWYgZDIyKGEsIGIsIGM9MiwgZD0yLCAqayk6IHBhc3MiLCAiIiJcCkBAIC01MDUsNyArNTY1LDcgQEAKICAgICAgICAgIyBNZXRob2RzCiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoIkBzdGF0aWNtZXRob2RcbmRlZiBmb28oeCx5KTogcGFzcyIsICIiIlwKICAgICBPUCAgICAgICAgICdAJyAgICAgICAgICAgKDEsIDApICgxLCAxKQotICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCAoMSwgMSkgKDEsIDEzKQorICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCcgKDEsIDEpICgxLCAxMykKICAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxMykgKDEsIDE0KQogICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMiwgMCkgKDIsIDMpCiAgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgyLCA0KSAoMiwgNykKQEAgLTE0ODgsMTAgKzE1NDgsMTAgQEAKIAogICAgICAgICAjIFRva2VuaXplIGlzIGJyb2tlbiBvbiB0ZXN0X3BlcDMxMzEucHkgYmVjYXVzZSByZWd1bGFyIGV4cHJlc3Npb25zIGFyZQogICAgICAgICAjIGJyb2tlbiBvbiB0aGUgb2JzY3VyZSB1bmljb2RlIGlkZW50aWZpZXJzIGluIGl0LiAqc2lnaCoKLSAgICAgICAgIyBXaXRoIHJvdW5kdHJpcCBleHRlbmRlZCB0byB0ZXN0IHRoZSA1LXR1cGxlIG1vZGUgb2YgIHVudG9rZW5pemUsCisgICAgICAgICMgV2l0aCByb3VuZHRyaXAgZXh0ZW5kZWQgdG8gdGVzdCB0aGUgNS10dXBsZSBtb2RlIG9mIHVudG9rZW5pemUsCiAgICAgICAgICMgNyBtb3JlIHRlc3RmaWxlcyBmYWlsLiAgUmVtb3ZlIHRoZW0gYWxzbyB1bnRpbCB0aGUgZmFpbHVyZSBpcyBkaWFnbm9zZWQuCiAKLSAgICAgICAgdGVzdGZpbGVzLnJlbW92ZShvcy5wYXRoLmpvaW4odGVtcGRpciwgInRlc3RfcGVwMzEzMS5weSIpKQorICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5IikpCiAgICAgICAgIGZvciBmIGluICgnYnVmZmVyJywgJ2J1aWx0aW4nLCAnZmlsZWlvJywgJ2luc3BlY3QnLCAnb3MnLCAncGxhdGZvcm0nLCAnc3lzJyk6CiAgICAgICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF8lcy5weSIpICUgZikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvX19pbml0X18ucHkKaW5kZXggMDRjODcyNi4uNGQwZmNhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL19faW5pdF9fLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCiBiYXNlcGF0aCA9IG9zLnBhdGguZGlybmFtZSggICAgICAgICAgICAgICAgICMgPHNyYy9pbnN0YWxsIGRpcj4KICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoICAgICAgICAgICAgICAgICMgTGliCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfZ3Byb2YyaHRtbC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CmluZGV4IDBjMjk0ZWMuLjk0ODllZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CkBAIC0yLDEyICsyLDExIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgdGVtcGZpbGUKIAotZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZywgaW1wb3J0X3Rvb2wKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCiAKIHNraXBfaWZfbWlzc2luZygpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CmluZGV4IDEzMDUyOTUuLmZiNTY1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQpAQCAtMSwxMiArMSwxMSBAQAogIiIiVGVzdHMgZm9yIHRoZSBtZDVzdW0gc2NyaXB0IGluIHRoZSBUb29scyBkaXJlY3RvcnkuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCi1mcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2RpciwgaW1wb3J0X3Rvb2wsIHNraXBfaWZfbWlzc2luZworZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZwogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkKaW5kZXggMDkxZmE2YS4uMjdjYmZlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BkZXBzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9wZGVwcy5weQpAQCAtMSwxMiArMSwxMCBAQAogIiIiVGVzdHMgZm9yIHRoZSBwZGVwcyBzY3JpcHQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCitmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2tpcF9pZl9taXNzaW5nLCBpbXBvcnRfdG9vbAogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfdW5wYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CmluZGV4IDczNGJiYzIuLjY1ZGVlMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CkBAIC0xMzQsNiArMTM0LDExIEBACiBjbGFzcyBVbnBhcnNlVGVzdENhc2UoQVNUVGVzdENhc2UpOgogICAgICMgVGVzdHMgZm9yIHNwZWNpZmljIGJ1Z3MgZm91bmQgaW4gZWFybGllciB2ZXJzaW9ucyBvZiB1bnBhcnNlCiAKKyAgICBkZWYgdGVzdF9mc3RyaW5ncyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgMjUxODAKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAociIiImYne2YiezB9IiozfSciIiIpCisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHIiIiJmJ3tmInt5fSIqM30nIiIiKQorCiAgICAgZGVmIHRlc3RfZGVsX3N0YXRlbWVudChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoImRlbCB4LCB5LCB6IikKIApAQCAtMjc5LDggKzI4NCwxOCBAQAogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgnVGVzdGluZyAlcycgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHJlYWRfcHlmaWxlKGZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoc291cmNlKQorCisgICAgICAgICAgICAjIFNvbWUgZi1zdHJpbmdzIGFyZSBub3QgY29ycmVjdGx5IHJvdW5kLXRyaXBwZWQgYnkKKyAgICAgICAgICAgICMgIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5LiAgU2VlIGlzc3VlIDI4MDAyIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgIyAgV2UgbmVlZCB0byBza2lwIGZpbGVzIHRoYXQgY29udGFpbiBzdWNoIGYtc3RyaW5ncy4KKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpIGluICgndGVzdF9mc3RyaW5nLnB5JywgKToKKyAgICAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZidTa2lwcGluZyB7ZmlsZW5hbWV9OiBzZWUgaXNzdWUgMjgwMDInKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSByZWFkX3B5ZmlsZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcChzb3VyY2UpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CmluZGV4IDAzZGZmODQuLjFkODk0YWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQpAQCAtMSwxMSArMSwxMSBAQAogaW1wb3J0IG9zCi1pbXBvcnQgaW8KIGltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJtdHJlZSwgdW5saW5rLCBjYXB0dXJlZF9zdGRvdXQKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB0cmFjZQotZnJvbSB0cmFjZSBpbXBvcnQgQ292ZXJhZ2VSZXN1bHRzLCBUcmFjZQorZnJvbSB0cmFjZSBpbXBvcnQgVHJhY2UKIAogZnJvbSB0ZXN0LnRyYWNlZG1vZHVsZXMgaW1wb3J0IHRlc3Rtb2QKIApAQCAtMzY1LDUxICszNjUsMjcgQEAKICAgICAgICAgIyBNYXRjaGVkIGJlZm9yZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlnbm9yZS5uYW1lcyhqbignYmFyJywgJ2Jhei5weScpLCAnYmF6JykpCiAKK2NsYXNzIFRlc3RDb21tYW5kTGluZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLWNsYXNzIFRlc3REZXByZWNhdGVkTWV0aG9kcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmFpbHVyZXMoc2VsZik6CisgICAgICAgIF9lcnJvcnMgPSAoCisgICAgICAgICAgICAoYidmaWxlbmFtZSBpcyBtaXNzaW5nOiByZXF1aXJlZCB3aXRoIHRoZSBtYWluIG9wdGlvbnMnLCAnLWwnLCAnLVQnKSwKKyAgICAgICAgICAgIChiJ2Nhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpJywgJy1sYycpLAorICAgICAgICAgICAgKGInYXJndW1lbnQgLVIvLS1uby1yZXBvcnQ6IG5vdCBhbGxvd2VkIHdpdGggYXJndW1lbnQgLXIvLS1yZXBvcnQnLCAnLXJSJyksCisgICAgICAgICAgICAoYidtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAtLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJywgJy1nJyksCisgICAgICAgICAgICAoYictci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnLCAnLXInKSwKKyAgICAgICAgICAgIChiJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcsICctc1QnKSwKKyAgICAgICAgICAgIChiJ3VucmVjb2duaXplZCBhcmd1bWVudHM6IC15JywgJy15JykpCisgICAgICAgIGZvciBtZXNzYWdlLCAqYXJncyBpbiBfZXJyb3JzOgorICAgICAgICAgICAgKl8sIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAndHJhY2UnLCAqYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWVzc2FnZSwgc3RkZXJyKQogCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF91c2FnZShzZWxmKToKLSAgICAgICAgc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRyYWNlLnVzYWdlKHNpbykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignVXNhZ2U6Jywgc2lvLmdldHZhbHVlKCkpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX0lnbm9yZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5JZ25vcmUoKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9tb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5tb2RuYW1lKCJzcGFtIikpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Z1bGxtb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5mdWxsbW9kbmFtZSgic3BhbSIpKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX2xpbmVzX2Zyb21fY29kZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lc19mcm9tX2NvZGUoZm9vLl9fY29kZV9fLCBbImVnZ3MiXSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9saW5lcyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lcyhmb28uX19jb2RlX18sIFsiZWdncyJdKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX3N0cmluZ3Moc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdGZ1bmNzX2ZsYWdfc3VjY2VzcyhzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmZDoKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIFRFU1RGTikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5maW5kX3N0cmluZ3MoZmQubmFtZSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9leGVjdXRhYmxlX2xpbmVub3Moc2VsZik6Ci0gICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmQ6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdHJhY2UuZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmQubmFtZSkKLQorICAgICAgICAgICAgZmQud3JpdGUoImEgPSAxXG4iKQorICAgICAgICAgICAgc3RhdHVzLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ3RyYWNlJywgJy1sJywgVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ2Z1bmN0aW9ucyBjYWxsZWQ6Jywgc3Rkb3V0KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCA1NDlkOGQxLi5hYzA2N2JmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMTI5LDEyICsxMjksMTIgQEAKICAgICAgICAgZGVmIGRvX3Rlc3QoZmlyc3RsaW5lcywgbWVzc2FnZSwgY2hhcnNldCwgbGluZW5vKToKICAgICAgICAgICAgICMgUmFpc2UgdGhlIG1lc3NhZ2UgaW4gYSBzdWJwcm9jZXNzLCBhbmQgY2F0Y2ggdGhlIG91dHB1dAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IG9wZW4oVEVTVEZOLCAidyIsIGVuY29kaW5nPWNoYXJzZXQpCi0gICAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKCIiInswfWlmIDE6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignezF9JykKLSAgICAgICAgICAgICAgICAgICAgIiIiLmZvcm1hdChmaXJzdGxpbmVzLCBtZXNzYWdlKSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3IiwgZW5jb2Rpbmc9Y2hhcnNldCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQud3JpdGUoIiIiezB9aWYgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3sxfScpCisgICAgICAgICAgICAgICAgICAgICAgICAiIiIuZm9ybWF0KGZpcnN0bGluZXMsIG1lc3NhZ2UpKQorCiAgICAgICAgICAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCBURVNURk5dLAogICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKQEAgLTE3NSw4ICsxNzUsOCBAQAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQogICAgICAgICAgICAgZG9fdGVzdCgiIFx0XGZcbiMgY29kaW5nOiB7MH1cbiIuZm9ybWF0KGNoYXJzZXQpLAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQotICAgICAgICAjIElzc3VlICMxODk2MDogY29kaW5nIHNwZWMgc2hvdWxkIGhhcyBubyBlZmZlY3QKLSAgICAgICAgZG9fdGVzdCgiMFxuIyBjb2Rpbmc6IEdCS1xuIiwgImhceGU5IGhvIiwgJ3V0Zi04JywgNSkKKyAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBkb190ZXN0KCJ4PTBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc190eXBlX2NvbGxlY3RpbmcKICAgICBkZWYgdGVzdF9wcmludF90cmFjZWJhY2tfYXRfZXhpdChzZWxmKToKQEAgLTMwMyw2ICszMDMsMTM3IEBACiAgICAgICAgICAgICAnICAgIHRyYWNlYmFjay5wcmludF9zdGFjaygpJywKICAgICAgICAgXSkKIAorICAgICMgaXNzdWUgMjY4MjMgLSBTaHJpbmsgcmVjdXJzaXZlIHRyYWNlYmFja3MKKyAgICBkZWYgX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheShzZWxmLCByZW5kZXJfZXhjKToKKyAgICAgICAgIyBBbHdheXMgc2hvdyBmdWxsIGRpZmZzIHdoZW4gdGhpcyB0ZXN0IGZhaWxzCisgICAgICAgICMgTm90ZSB0aGF0IHJlYXJyYW5naW5nIHRoaW5ncyBtYXkgcmVxdWlyZSBhZGp1c3RpbmcKKyAgICAgICAgIyB0aGUgcmVsYXRpdmUgbGluZSBudW1iZXJzIGluIHRoZSBleHBlY3RlZCB0cmFjZWJhY2tzCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKworICAgICAgICAjIENoZWNrIGhpdHRpbmcgdGhlIHJlY3Vyc2lvbiBsaW1pdAorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgZigpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0ZGVycl9mOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYoKQorICAgICAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyByZWN1cnNpb24gb2NjdXJyZWQiKQorCisgICAgICAgIGxpbmVub19mID0gZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubworICAgICAgICByZXN1bHRfZiA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzV9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZisxfSwgaW4gZlxuJworICAgICAgICAgICAgJyAgICBmKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2YrMX0sIGluIGZcbicKKyAgICAgICAgICAgICcgICAgZigpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzF9LCBpbiBmXG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgIyBYWFg6IFRoZSBmb2xsb3dpbmcgbGluZSBjaGFuZ2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB0ZXN0cworICAgICAgICAgICAgIyBhcmUgcnVuIHRocm91Z2ggdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIG9yIHdpdGggLW0KKyAgICAgICAgICAgICMgSXQgYWxzbyB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSAoc3RhY2sgc2l6ZSkKKyAgICAgICAgICAgICMgRm9ydHVuYXRlbHksIHdlIGRvbid0IGNhcmUgYWJvdXQgZXhhY3RuZXNzIGhlcmUsIHNvIHdlIHVzZSByZWdleAorICAgICAgICAgICAgcicgIFxbUHJldmlvdXMgbGluZSByZXBlYXRlZCAoXGQrKSBtb3JlIHRpbWVzXF0nICdcbicKKyAgICAgICAgICAgICdSZWN1cnNpb25FcnJvcjogbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWRcbicKKyAgICAgICAgKQorCisgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0X2Yuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9mLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisKKyAgICAgICAgIyBDaGVjayB0aGUgb3V0cHV0IHRleHQgbWF0Y2hlcyBleHBlY3RhdGlvbnMKKyAgICAgICAgIyAybmQgbGFzdCBsaW5lIGNvbnRhaW5zIHRoZSByZXBldGl0aW9uIGNvdW50CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsWzotMl0sIGV4cGVjdGVkWzotMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoYWN0dWFsWy0yXSwgZXhwZWN0ZWRbLTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFstMV0sIGV4cGVjdGVkWy0xXSkKKworICAgICAgICAjIENoZWNrIHRoZSByZWN1cnNpb24gY291bnQgaXMgcm91Z2hseSBhcyBleHBlY3RlZAorICAgICAgICByZWNfbGltaXQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQorICAgICAgICBzZWxmLmFzc2VydEluKGludChyZS5zZWFyY2gociJcZCsiLCBhY3R1YWxbLTJdKS5ncm91cCgpKSwgcmFuZ2UocmVjX2xpbWl0LTYwLCByZWNfbGltaXQpKQorCisgICAgICAgICMgQ2hlY2sgYSBrbm93biAobGltaXRlZCkgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBpbnZvY2F0aW9ucworICAgICAgICBkZWYgZyhjb3VudD0xMCk6CisgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZyhjb3VudC0xKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfZzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9fZyA9IGcuX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2cgPSAoCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICAnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCA2IG1vcmUgdGltZXNdXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzN9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJhaXNlIFZhbHVlRXJyb3JcbicKKyAgICAgICAgICAgICdWYWx1ZUVycm9yXG4nCisgICAgICAgICkKKyAgICAgICAgdGJfbGluZSA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzd9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGcoKVxuJworICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gKHRiX2xpbmUgKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9nLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgICAgICAjIENoZWNrIDIgZGlmZmVyZW50IHJlcGV0aXRpdmUgc2VjdGlvbnMKKyAgICAgICAgZGVmIGgoY291bnQ9MTApOgorICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGgoY291bnQtMSkKKyAgICAgICAgICAgIGcoKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfaDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9faCA9IGguX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2ggPSAoCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCs3fSwgaW4gX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheVxuJworICAgICAgICAgICAgJyAgICBoKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgICcgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIDYgbW9yZSB0aW1lc11cbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grM30sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgZygpXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSAocmVzdWx0X2ggKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9oLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV90cmFjZWJhY2tfcHl0aG9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkodHJhY2ViYWNrLnByaW50X2V4YykKKworICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfdHJhY2ViYWNrX2NweXRob25faW50ZXJuYWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBleGNlcHRpb25fcHJpbnQKKyAgICAgICAgZGVmIHJlbmRlcl9leGMoKToKKyAgICAgICAgICAgIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGNlcHRpb25fcHJpbnQoZXhjX3ZhbHVlKQorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkocmVuZGVyX2V4YykKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9zdGFjayhzZWxmKToKICAgICAgICAgZGVmIGZtdCgpOgogICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5mb3JtYXRfc3RhY2soKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKaW5kZXggZGE4OWE5YS4uNzkwYWI3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CkBAIC0xMSw5ICsxMSwxNSBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKKwogCiBFTVBUWV9TVFJJTkdfU0laRSA9IHN5cy5nZXRzaXplb2YoYicnKQogCisKIGRlZiBnZXRfZnJhbWVzKG5mcmFtZSwgbGluZW5vX2RlbHRhKToKICAgICBmcmFtZXMgPSBbXQogICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQpAQCAtMzcsMjggKzQzLDMxIEBACiBkZWYgY3JlYXRlX3NuYXBzaG90cygpOgogICAgIHRyYWNlYmFja19saW1pdCA9IDIKIAorICAgICMgX3RyYWNlbWFsbG9jLl9nZXRfdHJhY2VzKCkgcmV0dXJucyBhIGxpc3Qgb2YgKGRvbWFpbiwgc2l6ZSwKKyAgICAjIHRyYWNlYmFja19mcmFtZXMpIHR1cGxlcy4gdHJhY2ViYWNrX2ZyYW1lcyBpcyBhIHR1cGxlIG9mIChmaWxlbmFtZSwKKyAgICAjIGxpbmVfbnVtYmVyKSB0dXBsZXMuCiAgICAgcmF3X3RyYWNlcyA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAoMiwgNjYsICgoJ2IucHknLCAxKSwpKSwKIAotICAgICAgICAoNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKICAgICBdCiAgICAgc25hcHNob3QgPSB0cmFjZW1hbGxvYy5TbmFwc2hvdChyYXdfdHJhY2VzLCB0cmFjZWJhY2tfbGltaXQpCiAKICAgICByYXdfdHJhY2VzMiA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg0MDAsICgoJ2MucHknLCA1NzgpLCkpLAorICAgICAgICAoNCwgNDAwLCAoKCdjLnB5JywgNTc4KSwpKSwKICAgICBdCiAgICAgc25hcHNob3QyID0gdHJhY2VtYWxsb2MuU25hcHNob3QocmF3X3RyYWNlczIsIHRyYWNlYmFja19saW1pdCkKIApAQCAtMTI2LDcgKzEzNSw3IEBACiAKICAgICBkZWYgZmluZF90cmFjZShzZWxmLCB0cmFjZXMsIHRyYWNlYmFjayk6CiAgICAgICAgIGZvciB0cmFjZSBpbiB0cmFjZXM6Ci0gICAgICAgICAgICBpZiB0cmFjZVsxXSA9PSB0cmFjZWJhY2suX2ZyYW1lczoKKyAgICAgICAgICAgIGlmIHRyYWNlWzJdID09IHRyYWNlYmFjay5fZnJhbWVzOgogICAgICAgICAgICAgICAgIHJldHVybiB0cmFjZQogCiAgICAgICAgIHNlbGYuZmFpbCgidHJhY2Ugbm90IGZvdW5kIikKQEAgLTE0MCw3ICsxNDksNyBAQAogICAgICAgICB0cmFjZSA9IHNlbGYuZmluZF90cmFjZSh0cmFjZXMsIG9ial90cmFjZWJhY2spCiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRyYWNlLCB0dXBsZSkKLSAgICAgICAgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIG9ial9zaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlYmFjaywgb2JqX3RyYWNlYmFjay5fZnJhbWVzKQogCkBAIC0xNjcsOSArMTc2LDggQEAKIAogICAgICAgICB0cmFjZTEgPSBzZWxmLmZpbmRfdHJhY2UodHJhY2VzLCBvYmoxX3RyYWNlYmFjaykKICAgICAgICAgdHJhY2UyID0gc2VsZi5maW5kX3RyYWNlKHRyYWNlcywgb2JqMl90cmFjZWJhY2spCi0gICAgICAgIHNpemUxLCB0cmFjZWJhY2sxID0gdHJhY2UxCi0gICAgICAgIHNpemUyLCB0cmFjZWJhY2syID0gdHJhY2UyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2ViYWNrMiwgdHJhY2ViYWNrMSkKKyAgICAgICAgZG9tYWluMSwgc2l6ZTEsIHRyYWNlYmFjazEgPSB0cmFjZTEKKyAgICAgICAgZG9tYWluMiwgc2l6ZTIsIHRyYWNlYmFjazIgPSB0cmFjZTIKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0cmFjZWJhY2syLCB0cmFjZWJhY2sxKQogCiAgICAgZGVmIHRlc3RfZ2V0X3RyYWNlZF9tZW1vcnkoc2VsZik6CkBAIC0yOTIsNyArMzAwLDcgQEAKICAgICBtYXhEaWZmID0gNDAwMAogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3NuYXBzaG90KHNlbGYpOgotICAgICAgICByYXdfdHJhY2VzID0gWyg1LCAoKCdhLnB5JywgMiksKSldCisgICAgICAgIHJhd190cmFjZXMgPSBbKDAsIDUsICgoJ2EucHknLCAyKSwpKV0KIAogICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CiAgICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KHBhdGNoLm9iamVjdCh0cmFjZW1hbGxvYywgJ2lzX3RyYWNpbmcnLApAQCAtMzIyLDExICszMzAsMTEgQEAKICAgICAgICAgIyBleGNsdWRlIGIucHkKICAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWwotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICg3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgxLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCiAgICAgICAgIF0pCiAKICAgICAgICAgIyBmaWx0ZXJfdHJhY2VzKCkgbXVzdCBub3QgdG91Y2ggdGhlIG9yaWdpbmFsIHNuYXBzaG90CkBAIC0zMzUsMTAgKzM0MywxMCBAQAogICAgICAgICAjIG9ubHkgaW5jbHVkZSB0d28gbGluZXMgb2YgYS5weQogICAgICAgICBzbmFwc2hvdDQgPSBzbmFwc2hvdDMuZmlsdGVyX3RyYWNlcygoZmlsdGVyMiwgZmlsdGVyMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3Q0LnRyYWNlcy5fdHJhY2VzLCBbCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDEsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKICAgICAgICAgXSkKIAogICAgICAgICAjIE5vIGZpbHRlcjoganVzdCBkdXBsaWNhdGUgdGhlIHNuYXBzaG90CkBAIC0zNDksNiArMzU3LDU0IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzLCBmaWx0ZXIxKQogCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW4oc2VsZik6CisgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKKyAgICAgICAgZmlsdGVyMSA9IHRyYWNlbWFsbG9jLkZpbHRlcihGYWxzZSwgImEucHkiLCBkb21haW49MSkKKyAgICAgICAgZmlsdGVyMiA9IHRyYWNlbWFsbG9jLkZpbHRlcihUcnVlLCAiYS5weSIsIGRvbWFpbj0xKQorCisgICAgICAgIG9yaWdpbmFsX3RyYWNlcyA9IGxpc3Qoc25hcHNob3QudHJhY2VzLl90cmFjZXMpCisKKyAgICAgICAgIyBleGNsdWRlIGEucHkgb2YgZG9tYWluIDEKKyAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWworICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAxCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgyLCA2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW5fZmlsdGVyKHNlbGYpOgorICAgICAgICBzbmFwc2hvdCwgc25hcHNob3QyID0gY3JlYXRlX3NuYXBzaG90cygpCisgICAgICAgIGZpbHRlcjEgPSB0cmFjZW1hbGxvYy5Eb21haW5GaWx0ZXIoRmFsc2UsIGRvbWFpbj0zKQorICAgICAgICBmaWx0ZXIyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIGRvbWFpbj0zKQorCisgICAgICAgICMgZXhjbHVkZSBkb21haW4gMgorICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAyCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjIsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgXSkKKwogICAgIGRlZiB0ZXN0X3NuYXBzaG90X2dyb3VwX2J5X2xpbmUoc2VsZik6CiAgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKICAgICAgICAgdGJfMCA9IHRyYWNlYmFja19saW5lbm8oJzx1bmtub3duPicsIDApCkBAIC04MTYsMTIgKzg3MiwxMjEgQEAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLVgnLCAndHJhY2VtYWxsb2MnLCAnLWMnLCBjb2RlKQogCiAKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCitjbGFzcyBUZXN0Q0FQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IDgwICogMjAKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgdHJhY2VtYWxsb2MuaXNfdHJhY2luZygpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidHJhY2VtYWxsb2MgbXVzdCBiZSBzdG9wcGVkIGJlZm9yZSB0aGUgdGVzdCIpCisKKyAgICAgICAgc2VsZi5kb21haW4gPSA1CisgICAgICAgIHNlbGYuc2l6ZSA9IDEyMworICAgICAgICBzZWxmLm9iaiA9IGFsbG9jYXRlX2J5dGVzKHNlbGYuc2l6ZSlbMF0KKworICAgICAgICAjIGZvciB0aGUgdHlwZSAib2JqZWN0IiwgaWQob2JqKSBpcyB0aGUgYWRkcmVzcyBvZiBpdHMgbWVtb3J5IGJsb2NrLgorICAgICAgICAjIFRoaXMgdHlwZSBpcyBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKKyAgICAgICAgc2VsZi5wdHIgPSBpZChzZWxmLm9iaikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICBkZWYgZ2V0X3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgZnJhbWVzID0gX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorICAgICAgICBpZiBmcmFtZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgdHJhY2soc2VsZiwgcmVsZWFzZV9naWw9RmFsc2UsIG5mcmFtZT0xKToKKyAgICAgICAgZnJhbWVzID0gZ2V0X2ZyYW1lcyhuZnJhbWUsIDIpCisgICAgICAgIF90ZXN0Y2FwaS50cmFjZW1hbGxvY190cmFjayhzZWxmLmRvbWFpbiwgc2VsZi5wdHIsIHNlbGYuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfZ2lsKQorICAgICAgICByZXR1cm4gZnJhbWVzCisKKyAgICBkZWYgdW50cmFjayhzZWxmKToKKyAgICAgICAgX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX3VudHJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorCisgICAgZGVmIGdldF90cmFjZWRfbWVtb3J5KHNlbGYpOgorICAgICAgICAjIEdldCB0aGUgdHJhY2VkIHNpemUgaW4gdGhlIGRvbWFpbgorICAgICAgICBzbmFwc2hvdCA9IHRyYWNlbWFsbG9jLnRha2Vfc25hcHNob3QoKQorICAgICAgICBkb21haW5fZmlsdGVyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIHNlbGYuZG9tYWluKQorICAgICAgICBzbmFwc2hvdCA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoW2RvbWFpbl9maWx0ZXJdKQorICAgICAgICByZXR1cm4gc3VtKHRyYWNlLnNpemUgZm9yIHRyYWNlIGluIHNuYXBzaG90LnRyYWNlcykKKworICAgIGRlZiBjaGVja190cmFjayhzZWxmLCByZWxlYXNlX2dpbCk6CisgICAgICAgIG5mcmFtZSA9IDUKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQobmZyYW1lKQorCisgICAgICAgIHNpemUgPSB0cmFjZW1hbGxvYy5nZXRfdHJhY2VkX21lbW9yeSgpWzBdCisKKyAgICAgICAgZnJhbWVzID0gc2VsZi50cmFjayhyZWxlYXNlX2dpbCwgbmZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlYmFjaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jLlRyYWNlYmFjayhmcmFtZXMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCBzZWxmLnNpemUpCisKKyAgICBkZWYgdGVzdF90cmFjayhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja190cmFjayhGYWxzZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19UcmFjaygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgICMgd29ya3MgdG9vCisgICAgICAgIHNlbGYuY2hlY2tfdHJhY2soVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX2FscmVhZHlfdHJhY2tlZChzZWxmKToKKyAgICAgICAgbmZyYW1lID0gNQorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydChuZnJhbWUpCisKKyAgICAgICAgIyB0cmFjayBhIGZpcnN0IHRpbWUKKyAgICAgICAgc2VsZi50cmFjaygpCisKKyAgICAgICAgIyBjYWxsaW5nIF9QeVRyYWNlTWFsbG9jX1RyYWNrKCkgbXVzdCByZW1vdmUgdGhlIG9sZCB0cmFjZSBhbmQgYWRkCisgICAgICAgICMgYSBuZXcgdHJhY2Ugd2l0aCB0aGUgbmV3IHRyYWNlYmFjaworICAgICAgICBmcmFtZXMgPSBzZWxmLnRyYWNrKG5mcmFtZT1uZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2ViYWNrKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykpCisKKyAgICBkZWYgdGVzdF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisKKyAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlZF9tZW1vcnkoKSwgc2VsZi5zaXplKQorCisgICAgICAgICMgdW50cmFjayBtdXN0IHJlbW92ZSB0aGUgdHJhY2UKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5nZXRfdHJhY2ViYWNrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCAwKQorCisgICAgICAgICMgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKCkgbXVsdGlwbGUgdGltZXMgbXVzdCBub3QgY3Jhc2gKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKworICAgIGRlZiB0ZXN0X3N0b3BfdHJhY2soc2VsZik6CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KCkKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorCisgICAgZGVmIHRlc3Rfc3RvcF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisgICAgICAgIHNlbGYudHJhY2soKQorCisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnVudHJhY2soKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGVzdFRyYWNlbWFsbG9jRW5hYmxlZCwKICAgICAgICAgVGVzdFNuYXBzaG90LAogICAgICAgICBUZXN0RmlsdGVycywKICAgICAgICAgVGVzdENvbW1hbmRMaW5lLAorICAgICAgICBUZXN0Q0FQSSwKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQppbmRleCA0OTBlNzIzLi40NjI2NjVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKaW5kZXggNTY2ZmM5ZC4uNzU0MGE0MzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CkBAIC0xLDQgKzEsMyBAQAotaW1wb3J0IG9zCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogIyBTa2lwIHRoaXMgdGVzdCBpZiBfdGtpbnRlciBkb2VzIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CmluZGV4IDVlNzQxMTUuLjM4MmNhMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQpAQCAtNDgsNiArNDgsNyBAQAogICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnNVwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICc1XzVcMCcpCiAKICAgICBkZWYgdGVzdF96ZXJvX2RpdmlzaW9uKHNlbGYpOgogICAgICAgICB0cnk6IDUuMCAvIDAuMApAQCAtMTAwMCw2ICsxMDAxLDI0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoaW50KCksIEMpKQogCisgICAgZGVmIHRlc3Rfb25lX2FyZ3VtZW50X3R5cGUoc2VsZik6CisgICAgICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAndHlwZS5fX25ld19fKCkgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cyAoMSBnaXZlbiknCisKKyAgICAgICAgIyBPbmx5IHR5cGUgaXRzZWxmIGNhbiB1c2UgdGhlIG9uZS1hcmd1bWVudCBmb3JtICgjMjcxNTcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSg1KSwgaW50KQorCisgICAgICAgIGNsYXNzIE0odHlwZSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIE0oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKworICAgICAgICBjbGFzcyBOKHR5cGUsIG1ldGFjbGFzcz1NKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgTig1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCBleHBlY3RlZF9tZXNzYWdlKQorCiAKIGNsYXNzIFNpbXBsZU5hbWVzcGFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IGEzOGU3YjEuLjI2ODRiOTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKQEAgLTk4Niw2ICs5ODcsMTkgQEAKICAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKToKICAgICAgICAgICAgICAgICByZXR1cm4gaW50Ll9fZm9ybWF0X18oc2VsZiAqIDIsIGZvcm1hdF9zcGVjKQogCisgICAgICAgIGNsYXNzIE06CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTSgnICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX3N0cl9fID0gTm9uZQorCisgICAgICAgIGNsYXNzIE46CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTignICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX2Zvcm1hdF9fID0gTm9uZQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0KCksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnLmZvcm1hdCgpLCAnYWJjJykKQEAgLTEyMDAsNiArMTIxNCwxNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjB4ezowezpkfVh9Ii5mb3JtYXQoMHgwLDE2KSwgIjB4MDAwMDAwMDAwMDAwMDAwMCIpCiAKKyAgICAgICAgIyBCbG9ja2luZyBmYWxsYmFjaworICAgICAgICBtID0gTSgnZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshcn0iLmZvcm1hdChtKSwgJ00oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7IXN9Ii5mb3JtYXQsIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgInt9Ii5mb3JtYXQsIG0pCisgICAgICAgIG4gPSBOKCdkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieyFyfSIuZm9ybWF0KG4pLCAnTihkYXRhKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshc30iLmZvcm1hdChuKSwgJ04oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7fSIuZm9ybWF0LCBuKQorCiAgICAgZGVmIHRlc3RfZm9ybWF0X21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5mb3JtYXRfbWFwKHt9KSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2EnLmZvcm1hdF9tYXAoe30pLCAnYScpCkBAIC0xNTQxLDcgKzE1NjUsNyBAQAogICAgICAgICAgICAgKCcrJywgYicrLScpLAogICAgICAgICAgICAgKCcrLScsIGInKy0tJyksCiAgICAgICAgICAgICAoJys/JywgYicrLT8nKSwKLSAgICAgICAgICAgICgnXD8nLCBiJytBRnc/JyksCisgICAgICAgICAgICAocidcPycsIGInK0FGdz8nKSwKICAgICAgICAgICAgICgnKz8nLCBiJystPycpLAogICAgICAgICAgICAgKHInXFw/JywgYicrQUZ3QVhBPycpLAogICAgICAgICAgICAgKHInXFxcPycsIGInK0FGd0FYQUJjPycpLApAQCAtMjMwMyw3ICsyMzI3LDcgQEAKICAgICAgICAgIyBub24tYXNjaWkgZm9ybWF0LCBhc2NpaSBhcmd1bWVudDogZW5zdXJlIHRoYXQgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkKICAgICAgICAgIyByYWlzZXMgYW4gZXJyb3IKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgJ15QeVVuaWNvZGVfRnJvbUZvcm1hdFZcKFwpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgJworICAgICAgICAgICAgcideUHlVbmljb2RlX0Zyb21Gb3JtYXRWXChcKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICcKICAgICAgICAgICAgICdzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweGU5JCcsCiAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbUZvcm1hdCwgYid1bmljb2RlXHhlOT0lcycsICdhc2NpaScpCiAKQEAgLTI3MjksNiArMjc1MywxMiBAQAogICAgICAgICBzdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIHN0cikKICAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCByZXZlcnNlZCwgc3RyKQogCisgICAgZGVmIHRlc3RfaW52YWxpZF9zZXF1ZW5jZXMoc2VsZik6CisgICAgICAgIGZvciBsZXR0ZXIgaW4gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyAiODkiOiAjIDAtNyBhcmUgb2N0YWwgZXNjYXBlcworICAgICAgICAgICAgaWYgbGV0dGVyIGluICJhYmZucnR1dnhOVSI6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGV2YWwociInXCVzJyIgJSBsZXR0ZXIpCiAKIGNsYXNzIFN0cmluZ01vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zvcm1hdHRlcl9wYXJzZXIoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlX2Z1bmN0aW9ucy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlX2Z1bmN0aW9ucy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdW5pY29kZV9pZGVudGlmaWVycy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKaW5kZXggNmVjYzkxMy4uNGZjMTFlYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CkBAIC0yMCw3ICsyMCw3IEBACiBjbGFzcyBVbmljb2RlTWV0aG9kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJzU5NzE3NjA4NzJiMmY5OGJiOWM3MDFlNmMwZGIzMjczZDc1NmIzZWMnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdjMWZhOTg2NzRhNjgzYWE4YThkOGRlZTBjODQ0OTRmOGQzNjM0NmU2JwogCiAgICAgZGVmIHRlc3RfbWV0aG9kX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTgwLDcgKzgwLDcgQEAKIAogICAgICMgVXBkYXRlIHRoaXMgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMuIE1ha2Ugc3VyZSB0byBkbyBhIGZ1bGwgcmVidWlsZAogICAgICMgKGUuZy4gJ21ha2UgZGlzdGNsZWFuICYmIG1ha2UnKSB0byBnZXQgdGhlIGNvcnJlY3QgY2hlY2tzdW0uCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICc1ZTc0ODI3Y2QwN2Y5ZTU0NmEzMGYzNGI3YmNmNmNjMmVhYzM4YzhjJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnZjg5MWIxZTY0MzBjNzEyNTMxYjliYzkzNWEzOGUyMmQ3OGJhMWJmMycKICAgICBkZWYgdGVzdF9mdW5jdGlvbl9jaGVja3N1bShzZWxmKToKICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtMjIyLDYgKzIyMiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVhdygnXHUyMDEwJyksICdBJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlYXcoJ1xVMDAwMjAwMDAnKSwgJ1cnKQogCisgICAgZGVmIHRlc3RfZWFzdF9hc2lhbl93aWR0aF85XzBfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLnVjZF8zXzJfMC5lYXN0X2FzaWFuX3dpZHRoKCdcdTIzMWEnKSwgJ04nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZWFzdF9hc2lhbl93aWR0aCgnXHUyMzFhJyksICdXJykKKwogY2xhc3MgVW5pY29kZU1pc2NUZXN0KFVuaWNvZGVEYXRhYmFzZVRlc3QpOgogCiAgICAgZGVmIHRlc3RfZmFpbGVkX2ltcG9ydF9kdXJpbmdfY29tcGlsaW5nKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQppbmRleCBkMWNjYjM4Li4zZmNiMThmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VucGFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQpAQCAtMTE3LDYgKzExNywyNyBAQAogICAgICAgLi4uCiAgICAgdGVzdC50ZXN0X3VucGFjay5Cb3pvRXJyb3IKIAorQWxsb3cgdW5wYWNraW5nIGVtcHR5IGl0ZXJhYmxlcworCisgICAgPj4+ICgpID0gW10KKyAgICA+Pj4gW10gPSAoKQorICAgID4+PiBbXSA9IFtdCisgICAgPj4+ICgpID0gKCkKKworVW5wYWNraW5nIG5vbi1pdGVyYWJsZXMgc2hvdWxkIHJhaXNlIFR5cGVFcnJvcgorCisgICAgPj4+ICgpID0gNDIKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6ICdpbnQnIG9iamVjdCBpcyBub3QgaXRlcmFibGUKKworVW5wYWNraW5nIHRvIGFuIGVtcHR5IGl0ZXJhYmxlIHNob3VsZCByYWlzZSBWYWx1ZUVycm9yCisKKyAgICA+Pj4gKCkgPSBbNDJdCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVmFsdWVFcnJvcjogdG9vIG1hbnkgdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgMCkKKwogIiIiCiAKIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5IGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKaW5kZXggNzQzNDZiNC4uNmJlOGY1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKQEAgLTM1Nyw3ICszNTcsNiBAQAogX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgotICAgIGltcG9ydCBzeXMKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfdW5wYWNrX2V4CiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X3VucGFja19leCwgdmVyYm9zZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKaW5kZXggMjQ3NTk4YS4uNDNlYTZiOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKQEAgLTQ2OSwxMCArNDY5LDExIEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLCAic3NsIG1vZHVsZSByZXF1aXJlZCIpCiAgICAgZGVmIHRlc3RfY2FmaWxlX2FuZF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbigKLSAgICAgICAgICAgICAgICAiaHR0cHM6Ly9sb2NhbGhvc3QiLCBjYWZpbGU9Ii9ub25leGlzdGVudC9wYXRoIiwgY29udGV4dD1jb250ZXh0Ci0gICAgICAgICAgICApCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxvcGVuKAorICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9sb2NhbGhvc3QiLCBjYWZpbGU9Ii9ub25leGlzdGVudC9wYXRoIiwgY29udGV4dD1jb250ZXh0CisgICAgICAgICAgICAgICAgKQogCiBjbGFzcyB1cmxvcGVuX0RhdGFUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB1cmxvcGVuKCkgb3BlbmluZyBhIGRhdGEgVVJMLiIiIgpAQCAtNzI5LDcgKzczMCw3IEBACiAKIAogY2xhc3MgUXVvdGluZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyBmb3IgdXJsbGliLnF1b3RlKCkgYW5kIHVybGxpYi5xdW90ZV9wbHVzKCkKKyAgICByIiIiVGVzdHMgZm9yIHVybGxpYi5xdW90ZSgpIGFuZCB1cmxsaWIucXVvdGVfcGx1cygpCiAKICAgICBBY2NvcmRpbmcgdG8gUkZDIDIzOTYgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcnMpLCB0byBlc2NhcGUgYQogICAgIGNoYXJhY3RlciB5b3Ugd3JpdGUgaXQgYXMgJyUnICsgPDIgY2hhcmFjdGVyIFVTLUFTQ0lJIGhleCB2YWx1ZT4uCkBAIC04MDQsNyArODA1LDcgQEAKICAgICAgICAgIyBNYWtlIHN1cmUgYWxsIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgcXVvdGVkIGFyZSBieSBkZWZhdWx0IHNhbnMKICAgICAgICAgIyBzcGFjZSAoc2VwYXJhdGUgdGVzdCBmb3IgdGhhdCkuCiAgICAgICAgIHNob3VsZF9xdW90ZSA9IFtjaHIobnVtKSBmb3IgbnVtIGluIHJhbmdlKDMyKV0gIyBGb3IgMHgwMCAtIDB4MUYKLSAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZCgnPD4jJSJ7fXxcXltdYCcpCisgICAgICAgIHNob3VsZF9xdW90ZS5hcHBlbmQocic8PiMlInt9fFxeW11gJykKICAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZChjaHIoMTI3KSkgIyBGb3IgMHg3RgogICAgICAgICBzaG91bGRfcXVvdGUgPSAnJy5qb2luKHNob3VsZF9xdW90ZSkKICAgICAgICAgZm9yIGNoYXIgaW4gc2hvdWxkX3F1b3RlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CmluZGV4IGVkYTdjY2MuLjM0MzI5ZjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKQEAgLTcsNiArNyw4IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgYXJyYXkKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MKIAogaW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAjIFRoZSBwcm94eSBieXBhc3MgbWV0aG9kIGltcG9ydGVkIGJlbG93IGhhcyBsb2dpYyBzcGVjaWZpYyB0byB0aGUgT1NYCkBAIC0zMzUsNyArMzM3LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3R1bm5lbF9oZWFkZXJzLmNsZWFyKCkKIAotICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9Tm9uZSk6CisgICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz1Ob25lLCAqLAorICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKICAgICAgICAgc2VsZi5zZWxlY3RvciA9IHVybAogICAgICAgICBpZiBoZWFkZXJzIGlzIG5vdCBOb25lOgpAQCAtMzQzLDYgKzM0Niw3IEBACiAgICAgICAgIHNlbGYucmVxX2hlYWRlcnMuc29ydCgpCiAgICAgICAgIGlmIGJvZHk6CiAgICAgICAgICAgICBzZWxmLmRhdGEgPSBib2R5CisgICAgICAgIHNlbGYuZW5jb2RlX2NodW5rZWQgPSBlbmNvZGVfY2h1bmtlZAogICAgICAgICBpZiBzZWxmLnJhaXNlX29uX2VuZGhlYWRlcnM6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKIApAQCAtOTA4LDQxICs5MTIsMTEwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS51bnJlZGlyZWN0ZWRfaGRyc1siSG9zdCJdLCAiYmF6IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLnVucmVkaXJlY3RlZF9oZHJzWyJTcGFtIl0sICJmb28iKQogCi0gICAgICAgICMgQ2hlY2sgaXRlcmFibGUgYm9keSBzdXBwb3J0Ci0gICAgICAgIGRlZiBpdGVyYWJsZV9ib2R5KCk6Ci0gICAgICAgICAgICB5aWVsZCBiIm9uZSIKLSAgICAgICAgICAgIHlpZWxkIGIidHdvIgotICAgICAgICAgICAgeWllbGQgYiJ0aHJlZSIKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZmlsZShzZWxmKToKKyAgICAgICAgIyBBIHJlZ3VsYXIgZmlsZSAtIGNodW5rZWQgZW5jb2RpbmcgaXMgdXNlZCB1bmxlc3MgQ29udGVudCBMZW5ndGggaXMKKyAgICAgICAgIyBhbHJlYWR5IHNldC4KIAotICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDExfToKLSAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBpdGVyYWJsZV9ib2R5KCksIGhlYWRlcnMpCi0gICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKLSAgICAgICAgICAgICAgICAjIEhhdmluZyBhbiBpdGVyYWJsZSBib2R5IHdpdGhvdXQgYSBDb250ZW50LUxlbmd0aCBzaG91bGQKLSAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGguZG9fcmVxdWVzdF8sIHJlcSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCiAKLSAgICAgICAgIyBBIGZpbGUgb2JqZWN0LgotICAgICAgICAjIFRlc3Qgb25seSBDb250ZW50LUxlbmd0aCBhdHRyaWJ1dGUgb2YgcmVxdWVzdC4KKyAgICAgICAgZmlsZV9vYmogPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJywgZGVsZXRlPUZhbHNlKQorICAgICAgICBmaWxlX3BhdGggPSBmaWxlX29iai5uYW1lCisgICAgICAgIGZpbGVfb2JqLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgZmlsZV9wYXRoKQogCisgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICJyYiIpIGFzIGY6CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZiwge30pCisgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgIHRlID0gbmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGUsICJjaHVua2VkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmLCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9KQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDMwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9maWxlb2JqKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSBvYmplY3QgLSBjaHVua2VkIGVuY29kaW5nIGlzIHVzZWQKKyAgICAgICAgIyB1bmxlc3MgQ29udGVudCBMZW5ndGggaXMgYWxyZWFkeSBzZXQuCisgICAgICAgICMgKE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzdWJ0bGUgZGlmZmVyZW5jZXMgdG8gYSByZWd1bGFyCisgICAgICAgICMgZmlsZSwgdGhhdCBpcyB3aHkgd2UgYXJlIHRlc3RpbmcgYm90aCBjYXNlcy4pCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKICAgICAgICAgZmlsZV9vYmogPSBpby5CeXRlc0lPKCkKLSAgICAgICAgZmlsZV9vYmoud3JpdGUoYiJTb21ldGhpbmdcblNvbWV0aGluZ1xuU29tZXRoaW5nXG4iKQogCi0gICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9OgotICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCBoZWFkZXJzKQotICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6Ci0gICAgICAgICAgICAgICAgIyBIYXZpbmcgYW4gaXRlcmFibGUgYm9keSB3aXRob3V0IGEgQ29udGVudC1MZW5ndGggc2hvdWxkCi0gICAgICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoLmRvX3JlcXVlc3RfLCByZXEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMzApCisgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmaWxlX29iaiwge30pCisgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpCisKKyAgICAgICAgaGVhZGVycyA9IHsiQ29udGVudC1MZW5ndGgiOiAzMH0KKyAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCBoZWFkZXJzKQorICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSkKIAogICAgICAgICBmaWxlX29iai5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfcGlwZShzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgcmVhZGluZyBmcm9tIGEgcGlwZS4KKyAgICAgICAgIyBBIHBpcGUgY2Fubm90IGJlIHNlZWsnZWQuICBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAjIGNvbnRlbnQgbGVuZ3RoIHVwIGZyb250LiAgVGh1cywgZG9fcmVxdWVzdF8oKSBzaG91bGQgZmFsbAorICAgICAgICAjIGJhY2sgdG8gVHJhbnNmZXItZW5jb2RpbmcgY2h1bmtlZC4KKworICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCisgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgciJwYXNzIl0KKyAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAzMH06CisgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKSBhcyBwcm9jOgorICAgICAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBwcm9jLnN0ZG91dCwgaGVhZGVycykKKyAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2h1bmtlZCcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICAjIEdlbmVyaWMgaXRlcmFibGUuICBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZW50CisgICAgICAgICMgbGVuZ3RoIHVwIGZyb250LiAgRmFsbCBiYWNrIHRvIFRyYW5zZmVyLWVuY29kaW5nIGNodW5rZWQuCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKworICAgICAgICBkZWYgaXRlcmFibGVfYm9keSgpOgorICAgICAgICAgICAgeWllbGQgYiJvbmUiCisKKyAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAxMX06CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgaXRlcmFibGVfYm9keSgpLCBoZWFkZXJzKQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2h1bmtlZCcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMTEpCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZW1wdHlfc2VxKHNlbGYpOgorICAgICAgICAjIFplcm8tbGVuZ3RoIGl0ZXJhYmxlIGJvZHkgc2hvdWxkIGJlIHRyZWF0ZWQgbGlrZSBhbnkgb3RoZXIgaXRlcmFibGUKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorICAgICAgICByZXEgPSBoLmRvX3JlcXVlc3RfKFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9oZWFkZXIoIlRyYW5zZmVyLWVuY29kaW5nIiksICJjaHVua2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXEuaGFzX2hlYWRlcigiQ29udGVudC1sZW5ndGgiKSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9hcnJheShzZWxmKToKICAgICAgICAgIyBhcnJheS5hcnJheSBJdGVyYWJsZSAtIENvbnRlbnQgTGVuZ3RoIGlzIGNhbGN1bGF0ZWQKIAorICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCiAgICAgICAgIGl0ZXJhYmxlX2FycmF5ID0gYXJyYXkuYXJyYXkoIkkiLFsxLDIsMyw0XSkKIAogICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDE2fToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQppbmRleCBjOGIzN2VlLi5lNmE1MjJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CkBAIC0yODksMTIgKzI4OSwxMiBAQAogICAgICAgICBkZWYgaHR0cF9zZXJ2ZXJfd2l0aF9iYXNpY19hdXRoX2hhbmRsZXIoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgICAgIHJldHVybiBCYXNpY0F1dGhIYW5kbGVyKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBMb29wYmFja0h0dHBTZXJ2ZXJUaHJlYWQoaHR0cF9zZXJ2ZXJfd2l0aF9iYXNpY19hdXRoX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnNlcnZlci5zdG9wKQogICAgICAgICBzZWxmLnNlcnZlcl91cmwgPSAnaHR0cDovLzEyNy4wLjAuMTolcycgJSBzZWxmLnNlcnZlci5wb3J0CiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKICAgICAgICAgc2VsZi5zZXJ2ZXIucmVhZHkud2FpdCgpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQogICAgICAgICBzdXBlcihCYXNpY0F1dGhUZXN0cywgc2VsZikudGVhckRvd24oKQogCiAgICAgZGVmIHRlc3RfYmFzaWNfYXV0aF9zdWNjZXNzKHNlbGYpOgpAQCAtNDM4LDE3ICs0MzgsMTMgQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwZXIoVGVzdFVybG9wZW4sIHNlbGYpLnNldFVwKCkKLSAgICAgICAgIyBJZ25vcmUgcHJveGllcyBmb3IgbG9jYWxob3N0IHRlc3RzLgotICAgICAgICBzZWxmLm9sZF9lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLSAgICAgICAgb3MuZW52aXJvblsnTk9fUFJPWFknXSA9ICcqJwotICAgICAgICBzZWxmLnNlcnZlciA9IE5vbmUKIAotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5zZXJ2ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKLSAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCi0gICAgICAgIG9zLmVudmlyb24udXBkYXRlKHNlbGYub2xkX2Vudmlyb24pCi0gICAgICAgIHN1cGVyKFRlc3RVcmxvcGVuLCBzZWxmKS50ZWFyRG93bigpCisgICAgICAgICMgSWdub3JlIHByb3hpZXMgZm9yIGxvY2FsaG9zdCB0ZXN0cy4KKyAgICAgICAgZGVmIHJlc3RvcmVfZW52aXJvbihvbGRfZW52aXJvbik6CisgICAgICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgICAgIG9zLmVudmlyb24udXBkYXRlKG9sZF9lbnZpcm9uKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9lbnZpcm9uLCBvcy5lbnZpcm9uLmNvcHkoKSkKKyAgICAgICAgb3MuZW52aXJvblsnTk9fUFJPWFknXSA9ICcqJwogCiAgICAgZGVmIHVybG9wZW4oc2VsZiwgdXJsLCBkYXRhPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgbCA9IFtdCkBAIC00NjksNiArNDY1LDcgQEAKICAgICAgICAgaGFuZGxlciA9IEdldFJlcXVlc3RIYW5kbGVyKHJlc3BvbnNlcykKIAogICAgICAgICBzZWxmLnNlcnZlciA9IExvb3BiYWNrSHR0cFNlcnZlclRocmVhZChoYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2ZXIuc3RvcCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQogICAgICAgICBzZWxmLnNlcnZlci5yZWFkeS53YWl0KCkKICAgICAgICAgcG9ydCA9IHNlbGYuc2VydmVyLnBvcnQKQEAgLTU1MSwyNiArNTQ4LDI4IEBACiAKICAgICBkZWYgdGVzdF9odHRwc193aXRoX2NhZmlsZShzZWxmKToKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfbG9jYWxob3N0KQotICAgICAgICAjIEdvb2QgY2VydAotICAgICAgICBkYXRhID0gc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9sb2NhbGhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJ3ZSBjYXJlIGEgYml0IikKLSAgICAgICAgIyBCYWQgY2VydAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKLSAgICAgICAgIyBHb29kIGNlcnQsIGJ1dCBtaXNtYXRjaGluZyBob3N0bmFtZQotICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgIyBHb29kIGNlcnQKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9sb2NhbGhvc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIid2UgY2FyZSBhIGJpdCIpCisgICAgICAgICAgICAjIEJhZCBjZXJ0CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICAgICAgIyBHb29kIGNlcnQsIGJ1dCBtaXNtYXRjaGluZyBob3N0bmFtZQorICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQogCiAgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWRlZmF1bHQoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKICAgICAgICAgIyBTZWxmLXNpZ25lZCBjZXJ0IHNob3VsZCBmYWlsIHZlcmlmaWNhdGlvbiB3aXRoIHN5c3RlbSBjZXJ0aWZpY2F0ZSBzdG9yZQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGVmYXVsdD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2h0dHBzX3NuaShzZWxmKToKICAgICAgICAgaWYgc3NsIGlzIE5vbmU6CkBAIC01OTIsNyArNTkxLDggQEAKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfc2VydmVyKCkKICAgICAgICAgcmVxID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdCgiaHR0cDovL2xvY2FsaG9zdDolcy8iICUgaGFuZGxlci5wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9eyJSYW5nZSI6ICJieXRlcz0yMC0zOSJ9KQotICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcSkKKyAgICAgICAgd2l0aCB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcSk6CisgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5oZWFkZXJzX3JlY2VpdmVkWyJSYW5nZSJdLCAiYnl0ZXM9MjAtMzkiKQogCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CkBAIC02MDgsMjIgKzYwOCwyMSBAQAogCiAgICAgZGVmIHRlc3RfaW5mbyhzZWxmKToKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3Blbl91cmwgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKAotICAgICAgICAgICAgICAgICJodHRwOi8vbG9jYWxob3N0OiVzIiAlIGhhbmRsZXIucG9ydCkKKyAgICAgICAgb3Blbl91cmwgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKAorICAgICAgICAgICAgImh0dHA6Ly9sb2NhbGhvc3Q6JXMiICUgaGFuZGxlci5wb3J0KQorICAgICAgICB3aXRoIG9wZW5fdXJsOgogICAgICAgICAgICAgaW5mb19vYmogPSBvcGVuX3VybC5pbmZvKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvX29iaiwgZW1haWwubWVzc2FnZS5NZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgcmV0dXJuZWQgYnkgJ2luZm8nIGlzIG5vdCBhbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlIG9mIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9fb2JqLmdldF9jb250ZW50X3N1YnR5cGUoKSwgInBsYWluIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mb19vYmosIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgcmV0dXJuZWQgYnkgJ2luZm8nIGlzIG5vdCBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFuY2Ugb2YgZW1haWwubWVzc2FnZS5NZXNzYWdlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvX29iai5nZXRfY29udGVudF9zdWJ0eXBlKCksICJwbGFpbiIpCiAKICAgICBkZWYgdGVzdF9nZXR1cmwoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIHNhbWUgVVJMIGFzIG9wZW5lZCBpcyByZXR1cm5lZCBieSBnZXR1cmwuCiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcigpCiAgICAgICAgIG9wZW5fdXJsID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbigiaHR0cDovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCi0gICAgICAgIHVybCA9IG9wZW5fdXJsLmdldHVybCgpCisgICAgICAgIHdpdGggb3Blbl91cmw6CisgICAgICAgICAgICB1cmwgPSBvcGVuX3VybC5nZXR1cmwoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVybCwgImh0dHA6Ly9sb2NhbGhvc3Q6JXMiICUgaGFuZGxlci5wb3J0KQogCiAgICAgZGVmIHRlc3RfaXRlcmF0aW9uKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQppbmRleCBiODExOTMwLi45NDk3MTZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGVtYWlsLm1lc3NhZ2UKIGltcG9ydCB0aW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQppbmRleCA3MWFiYzE0Li45OWM1YzAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKQEAgLTYwNywyOSArNjA3LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wb3J0LCA4MCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmdldHVybCgpLCB1cmwpCiAKLSAgICAgICAgIyBWZXJpZnkgYW4gaWxsZWdhbCBwb3J0IGlzIHJldHVybmVkIGFzIE5vbmUKKyAgICAgICAgIyBWZXJpZnkgYW4gaWxsZWdhbCBwb3J0IHJhaXNlcyBWYWx1ZUVycm9yCiAgICAgICAgIHVybCA9IGIiSFRUUDovL1dXVy5QWVRIT04uT1JHOjY1NTM2L2RvYy8jZnJhZyIKICAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wb3J0LCBOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIm91dCBvZiByYW5nZSIpOgorICAgICAgICAgICAgcC5wb3J0CiAKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX2JhZF9wb3J0KHNlbGYpOgotICAgICAgICAiIiJDaGVjayBoYW5kbGluZyBvZiBub24taW50ZWdlciBwb3J0cy4iIiIKLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCgiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCAid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQotCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJscGFyc2UoImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICAjIE9uY2UgYWdhaW4sIHJlcGVhdCBvdXJzZWx2ZXMgdG8gdGVzdCBieXRlcwotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KGIiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBiInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKGIiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBiInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKKyAgICAgICAgIiIiQ2hlY2sgaGFuZGxpbmcgb2YgaW52YWxpZCBwb3J0cy4iIiIKKyAgICAgICAgZm9yIGJ5dGVzIGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBmb3IgcGFyc2UgaW4gKHVybGxpYi5wYXJzZS51cmxzcGxpdCwgdXJsbGliLnBhcnNlLnVybHBhcnNlKToKKyAgICAgICAgICAgICAgICBmb3IgcG9ydCBpbiAoImZvbyIsICIxLjUiLCAiLTEiLCAiMHgxMCIpOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChieXRlcz1ieXRlcywgcGFyc2U9cGFyc2UsIHBvcnQ9cG9ydCk6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRsb2MgPSAid3d3LmV4YW1wbGUubmV0OiIgKyBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovLyIgKyBuZXRsb2MKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ5dGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGxvYyA9IG5ldGxvYy5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwuZW5jb2RlKCJhc2NpaSIpCisgICAgICAgICAgICAgICAgICAgICAgICBwID0gcGFyc2UodXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgbmV0bG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnBvcnQKIAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfd2l0aG91dF9uZXRsb2Moc2VsZik6CiAgICAgICAgICMgVGhpcyBleGFtcGxlIGlzIHN0cmFpZ2h0IGZyb20gUkZDIDMyNjEuICBJdCBsb29rcyBsaWtlIGl0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQppbmRleCA4MzU3ZjhiLi42NjJjN2Y2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKQEAgLTEsNiArMSw2IEBACiAjIENoZWNrIGV2ZXJ5IHBhdGggdGhyb3VnaCBldmVyeSBtZXRob2Qgb2YgVXNlckRpY3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtYXBwaW5nX3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNvbGxlY3Rpb25zCiAKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChvbmU9MSwgdHdvPTIpLCBkMikKICAgICAgICAgIyBpdGVtIHNlcXVlbmNlIGNvbnN0cnVjdG9yCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoWygnb25lJywxKSwgKCd0d28nLDIpXSksIGQyKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChkaWN0PVsoJ29uZScsMSksICgndHdvJywyKV0pLCBkMikKICAgICAgICAgIyBib3RoIHRvZ2V0aGVyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoWygnb25lJywxKSwgKCd0d28nLDIpXSwgdHdvPTMsIHRocmVlPTUpLCBkMykKQEAgLTE0OSw3ICsxNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2RpY3QnLCA0MildKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGVjdGlvbnMuVXNlckRpY3Qoe30sIGRpY3Q9Tm9uZSkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnZGljdCcsIE5vbmUpXSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsZWN0aW9ucy5Vc2VyRGljdChkaWN0PXsnYSc6IDQyfSkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2EnLCA0MildKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbGxlY3Rpb25zLlVzZXJEaWN0LCA0MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CmluZGV4IGY5MmU0ZDMuLjhkZTZjMTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQpAQCAtMSw3ICsxLDcgQEAKICMgQ2hlY2sgZXZlcnkgcGF0aCB0aHJvdWdoIGV2ZXJ5IG1ldGhvZCBvZiBVc2VyTGlzdAogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBsaXN0X3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IGxpc3RfdGVzdHMKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBVc2VyTGlzdFRlc3QobGlzdF90ZXN0cy5Db21tb25UZXN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQppbmRleCA5YmM4ZWRkLi43MTUyODIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CkBAIC0xLDkgKzEsOCBAQAogIyBVc2VyU3RyaW5nIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIG5hdGl2ZSBidWlsdGluIHN0cmluZyB0eXBlLgogIyBVc2VyU3RyaW5nIGluc3RhbmNlcyBzaG91bGQgYmVoYXZlIHNpbWlsYXIgdG8gYnVpbHRpbiBzdHJpbmcgb2JqZWN0cy4KIAotaW1wb3J0IHN0cmluZwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHN0cmluZ190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdHJpbmdfdGVzdHMKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlclN0cmluZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkgYi9MaWIvdGVzdC90ZXN0X3V0Zjhzb3VyY2UucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF91dGY4c291cmNlLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3V1LnB5IGIvTGliL3Rlc3QvdGVzdF91dS5weQppbmRleCAyNWZmZmJmLi5hZDJmMmM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3V1LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXUucHkKQEAgLTgsNyArOCw2IEBACiAKIGltcG9ydCBzeXMsIG9zCiBpbXBvcnQgdXUKLWZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGltcG9ydCBpbwogCiBwbGFpbnRleHQgPSBiIlRoZSBzbW9vdGgtc2NhbGVkIHB5dGhvbiBjcmVwdCBvdmVyIHRoZSBzbGVlcGluZyBkb2dcbiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weSBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQppbmRleCAzOTk5ZDFmLi5mNGFkN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CkBAIC0xNSw3ICsxNSw2IEBACiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBjYXB0dXJlZF9zdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rLCBFbnZpcm9ubWVudFZhckd1YXJkLCBybXRyZWUpCi1pbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHZlbnYKIApAQCAtMzksMTUgKzM4LDkgQEAKIHNraXBJblZlbnYgPSB1bml0dGVzdC5za2lwSWYoc3lzLnByZWZpeCAhPSBzeXMuYmFzZV9wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0IG5vdCBhcHByb3ByaWF0ZSBpbiBhIHZlbnYnKQogCi0jIG9zLnBhdGguZXhpc3RzKCdudWwnKSBpcyBGYWxzZTogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwNTQxCi1pZiBvcy5kZXZudWxsLmxvd2VyKCkgPT0gJ251bCc6Ci0gICAgZmFpbHNPbldpbmRvd3MgPSB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKLWVsc2U6Ci0gICAgZGVmIGZhaWxzT25XaW5kb3dzKGYpOgotICAgICAgICByZXR1cm4gZgotCiBjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgdmVudiB0ZXN0cy4iIiIKKyAgICBtYXhEaWZmID0gODAgKiA1MAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmVudl9kaXIgPSBvcy5wYXRoLnJlYWxwYXRoKHRlbXBmaWxlLm1rZHRlbXAoKSkKQEAgLTU3LDcgKzUwLDcgQEAKICAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdJbmNsdWRlJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSAnYmluJwotICAgICAgICAgICAgc2VsZi5saWIgPSAoJ2xpYicsICdweXRob24lcycgJSBzeXMudmVyc2lvbls6M10pCisgICAgICAgICAgICBzZWxmLmxpYiA9ICgnbGliJywgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICAgICAgc2VsZi5pbmNsdWRlID0gJ2luY2x1ZGUnCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCkBAIC0xMjEsNiArMTE0LDE3IEBACiAgICAgICAgICAgICBwcmludCgnICAgICVyJyAlIG9zLmxpc3RkaXIoYmQpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pLCAnRmlsZSAlciBzaG91bGQgZXhpc3QuJyAlIGZuKQogCisgICAgZGVmIHRlc3RfcHJvbXB0KHNlbGYpOgorICAgICAgICBlbnZfbmFtZSA9IG9zLnBhdGguc3BsaXQoc2VsZi5lbnZfZGlyKVsxXQorCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoKQorICAgICAgICBjb250ZXh0ID0gYnVpbGRlci5lbnN1cmVfZGlyZWN0b3JpZXMoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQucHJvbXB0LCAnKCVzKSAnICUgZW52X25hbWUpCisKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihwcm9tcHQ9J015IHByb21wdCcpCisgICAgICAgIGNvbnRleHQgPSBidWlsZGVyLmVuc3VyZV9kaXJlY3RvcmllcyhzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5wcm9tcHQsICcoTXkgcHJvbXB0KSAnKQorCiAgICAgQHNraXBJblZlbnYKICAgICBkZWYgdGVzdF9wcmVmaXhlcyhzZWxmKToKICAgICAgICAgIiIiCkBAIC0zMTgsMTYgKzMyMiwyMSBAQAogICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUodmVudi5jcmVhdGUsIHNlbGYuZW52X2Rpciwgd2l0aF9waXA9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0X3BpcF9ub3RfaW5zdGFsbGVkKCkKIAotICAgIEBmYWlsc09uV2luZG93cwotICAgIGRlZiB0ZXN0X2Rldm51bGxfZXhpc3RzX2FuZF9pc19lbXB0eShzZWxmKToKKyAgICBkZWYgdGVzdF9kZXZudWxsKHNlbGYpOgogICAgICAgICAjIEZpeCBmb3IgaXNzdWUgIzIwMDUzIHVzZXMgb3MuZGV2bnVsbCB0byBmb3JjZSBhIGNvbmZpZyBmaWxlIHRvCiAgICAgICAgICMgYXBwZWFyIGVtcHR5LiBIb3dldmVyIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDU0MSBtZWFucwogICAgICAgICAjIHRoYXQgZG9lc24ndCBjdXJyZW50bHkgd29yayBwcm9wZXJseSBvbiBXaW5kb3dzLiBPbmNlIHRoYXQgaXMKICAgICAgICAgIyBmaXhlZCwgdGhlICJ3aW5fbG9jYXRpb24iIHBhcnQgb2YgdGVzdF93aXRoX3BpcCBzaG91bGQgYmUgcmVzdG9yZWQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLmRldm51bGwpKQogICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKIAorICAgICAgICAjIElzc3VlICMyMDU0MTogb3MucGF0aC5leGlzdHMoJ251bCcpIGlzIEZhbHNlIG9uIFdpbmRvd3MKKyAgICAgICAgaWYgb3MuZGV2bnVsbC5sb3dlcigpID09ICdudWwnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKKworCiAgICAgIyBSZXF1ZXN0aW5nIHBpcCBmYWlscyB3aXRob3V0IFNTTCAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE5NzQ0KQogICAgIEB1bml0dGVzdC5za2lwSWYoc3NsIGlzIE5vbmUsIGVuc3VyZXBpcC5fTUlTU0lOR19TU0xfTUVTU0FHRSkKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdzb21lIGRlcGVuZGVuY2llcyBvZiBwaXAgaW1wb3J0IHRocmVhZGluZycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CmluZGV4IDg0YTZmYjUuLmMxMWVlNDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQpAQCAtMiw3ICsyLDkgQEAKIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCBvcwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCByZQogaW1wb3J0IHN5cworaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCkBAIC03MjAsNiArNzIyLDE3IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyZWFtLmdldHZhbHVlKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXh0LCByZXN1bHQpCiAKKyAgICBkZWYgdGVzdF9zaG93d2Fybm1zZ19taXNzaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBfc2hvd3dhcm5tc2coKSBtaXNzaW5nIGlzIG9rYXkuCisgICAgICAgIHRleHQgPSAnZGVsIF9zaG93d2Fybm1zZyB0ZXN0JworICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CisgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCisgICAgICAgICAgICBkZWwgc2VsZi5tb2R1bGUuX3Nob3d3YXJubXNnCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfb3V0cHV0KCdzdGRlcnInKSBhcyBzdHJlYW06CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2Fybih0ZXh0KQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGV4dCwgcmVzdWx0KQorCiAgICAgZGVmIHRlc3Rfc2hvd3dhcm5pbmdfbm90X2NhbGxhYmxlKHNlbGYpOgogICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCkBAIC04MjEsMTIgKzgzNCw0NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX29iamVjdCwgZXhwZWN0ZWRfZmlsZV9saW5lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgZmlsZV9vYmplY3QuZ2V0dmFsdWUoKSkKIAorCiBjbGFzcyBDV2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKIGNsYXNzIFB5V2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV93YXJuaW5ncwogCisgICAgZGVmIHRlc3RfdHJhY2VtYWxsb2Moc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUodGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKF9fZmlsZV9fKQorICAgICAgICAgICAgICAgICAgICAjIEVtaXQgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgICAgICAgICAgICAgIGYgPSBOb25lCisKKyAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgICAgICIiIikpCisKKyAgICAgICAgcmVzID0gYXNzZXJ0X3B5dGhvbl9vaygnLVdkJywgJy1YJywgJ3RyYWNlbWFsbG9jPTInLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBzdGRlcnIgPSByZXMuZXJyLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCisgICAgICAgICMgbm9ybWFsaXplIG5ld2xpbmVzCisgICAgICAgIHN0ZGVyciA9ICdcbicuam9pbihzdGRlcnIuc3BsaXRsaW5lcygpKQorICAgICAgICBzdGRlcnIgPSByZS5zdWIoJzwuKj4nLCAnPC4uLj4nLCBzdGRlcnIpCisgICAgICAgIGV4cGVjdGVkID0gdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAge2ZuYW1lfTo1OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPC4uLj4KKyAgICAgICAgICAgICAgZiA9IE5vbmUKKyAgICAgICAgICAgIE9iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgICAgICAgICBGaWxlICJ7Zm5hbWV9IiwgbGluZW5vIDMKKyAgICAgICAgICAgICAgICBmID0gb3BlbihfX2ZpbGVfXykKKyAgICAgICAgICAgICAgRmlsZSAie2ZuYW1lfSIsIGxpbmVubyA3CisgICAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICcnJykKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5mb3JtYXQoZm5hbWU9c3VwcG9ydC5URVNURk4pLnN0cmlwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIsIGV4cGVjdGVkKQorCiAKIGNsYXNzIENhdGNoV2FybmluZ1Rlc3RzKEJhc2VUZXN0KToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXZlLnB5IGIvTGliL3Rlc3QvdGVzdF93YXZlLnB5CmluZGV4IDNlZmY3NzMuLjg2NjZmNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhdmUucHkKQEAgLTEsNiArMSw2IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGF1ZGlvb3AgaW1wb3J0IGJ5dGVzd2FwCiBpbXBvcnQgc3lzCiBpbXBvcnQgd2F2ZQpAQCAtMTAzLDUgKzEwMywxMSBAQAogICAgICAgICBmcmFtZXMgPSBieXRlc3dhcChmcmFtZXMsIDQpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnV0FWRV9GT1JNQVRfUENNJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgd2F2ZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CmluZGV4IDZkNTBhNjYuLjZlNjk5MGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKQEAgLTkxMSw3ICs5MTEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIociwgIl9fZGljdF9fIikpCiAKICAgICBkZWYgdGVzdF9zdWJjbGFzc19yZWZzX3dpdGhfY3ljbGUoc2VsZik6Ci0gICAgICAgICMgQnVnICMzMTEwCisgICAgICAgICIiIkNvbmZpcm0gaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMTAwIGlzIGZpeGVkLiIiIgogICAgICAgICAjIEFuIGluc3RhbmNlIG9mIGEgd2Vha3JlZiBzdWJjbGFzcyBjYW4gaGF2ZSBhdHRyaWJ1dGVzLgogICAgICAgICAjIElmIHN1Y2ggYSB3ZWFrcmVmIGhvbGRzIHRoZSBvbmx5IHN0cm9uZyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCwKICAgICAgICAgIyBkZWxldGluZyB0aGUgd2Vha3JlZiB3aWxsIGRlbGV0ZSB0aGUgb2JqZWN0LiBJbiB0aGlzIGNhc2UsCkBAIC0xMzI1LDEzICsxMzI1LDE2IEBACiAgICAgICAgIG8gPSBPYmplY3QoMTIzNDU2KQogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBuID0gbGVuKGRpY3QpCi0gICAgICAgICAgICBkaWN0LnBvcGl0ZW0oKQorICAgICAgICAgICAgIyBTaW5jZSB1bmRlcmxheWluZyBkaWN0IGlzIG9yZGVyZWQsIGZpcnN0IGl0ZW0gaXMgcG9wcGVkCisgICAgICAgICAgICBkaWN0LnBvcChuZXh0KGRpY3Qua2V5cygpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMSkKICAgICAgICAgICAgIGRpY3Rbb10gPSBvCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbikKKyAgICAgICAgIyBsYXN0IGl0ZW0gaW4gb2JqZWN0cyBpcyByZW1vdmVkIGZyb20gZGljdCBpbiBjb250ZXh0IHNodXRkb3duCiAgICAgICAgIHdpdGggdGVzdGNvbnRleHQoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMSkKLSAgICAgICAgICAgIGRpY3QucG9wKG5leHQoZGljdC5rZXlzKCkpKQorICAgICAgICAgICAgIyBUaGVuLCAobywgbykgaXMgcG9wcGVkCisgICAgICAgICAgICBkaWN0LnBvcGl0ZW0oKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAyKQogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkgYi9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKaW5kZXggOWNlNjcyYi4uNjkxYjk1ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQpAQCAtMSwxMyArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHksIHJlZiwgV2Vha1NldAotaW1wb3J0IG9wZXJhdG9yCi1pbXBvcnQgY29weQorZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CiBpbXBvcnQgc3RyaW5nCi1pbXBvcnQgb3MKLWZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncwotaW1wb3J0IGNvbGxlY3Rpb25zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyU3RyaW5nIGFzIHVzdHIKIGltcG9ydCBnYwogaW1wb3J0IGNvbnRleHRsaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5jb25zb2xlaW8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMyNmYwNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5CkBAIC0wLDAgKzEsODcgQEAKKycnJ1Rlc3RzIGZvciBXaW5kb3dzQ29uc29sZUlPCisKK1VuZm9ydHVuYXRlbHksIG1vc3QgdGVzdGluZyByZXF1aXJlcyBpbnRlcmFjdGl2ZSB1c2UsIHNpbmNlIHdlIGhhdmUgbm8KK0FQSSB0byByZWFkIGJhY2sgZnJvbSBhIHJlYWwgY29uc29sZSwgYW5kIHRoaXMgY2xhc3MgaXMgb25seSBmb3IgdXNlCit3aXRoIHJlYWwgY29uc29sZXMuCisKK0luc3RlYWQsIHdlIHZhbGlkYXRlIHRoYXQgYmFzaWMgZnVuY3Rpb25hbGl0eSBzdWNoIGFzIG9wZW5pbmcsIGNsb3NpbmcKK2FuZCBpbiBwYXJ0aWN1bGFyIGZpbGVubygpIHdvcmssIGJ1dCBhcmUgZm9yY2VkIHRvIGxlYXZlIHJlYWwgdGVzdGluZwordG8gcmVhbCBwZW9wbGUgd2l0aCByZWFsIGtleWJvcmFkcy4KKycnJworCitpbXBvcnQgaW8KK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cworCitpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBvbmx5IHJlbGV2YW50IG9uIHdpbjMyIikKKworQ29uSU8gPSBpby5fV2luZG93c0NvbnNvbGVJTworCitjbGFzcyBXaW5kb3dzQ29uc29sZUlPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLlJhd0lPQmFzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb25JTywgaW8uQnVmZmVyZWRJT0Jhc2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLlRleHRJT0Jhc2UpKQorCisgICAgZGVmIHRlc3Rfb3Blbl9mZChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDApCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBjYW5ub3Qgb3BlbiBjb25zb2xlIGJlY2F1c2UgaXQncyBub3QgYSByZWFsIGNvbnNvbGUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZi5maWxlbm8oKSkKKyAgICAgICAgICAgIGYuY2xvc2UoKSAgICMgbXVsdGlwbGUgY2xvc2Ugc2hvdWxkIG5vdCBjcmFzaAorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDEsICd3JykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNhbm5vdCBvcGVuIGNvbnNvbGUgYmVjYXVzZSBpdCdzIG5vdCBhIHJlYWwgY29uc29sZQorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBmLmZpbGVubygpKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gQ29uSU8oMiwgJ3cnKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2Fubm90IG9wZW4gY29uc29sZSBiZWNhdXNlIGl0J3Mgbm90IGEgcmVhbCBjb25zb2xlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGYuZmlsZW5vKCkpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uYW1lKHNlbGYpOgorICAgICAgICBmID0gQ29uSU8oIkNPTiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmLmZpbGVubygpKQorICAgICAgICBmLmNsb3NlKCkgICAjIG11bHRpcGxlIGNsb3NlIHNob3VsZCBub3QgY3Jhc2gKKyAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgZiA9IENvbklPKCdDT05JTiQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZi5maWxlbm8oKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIGYgPSBDb25JTygnQ09OT1VUJCcsICd3JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGYuZmlsZW5vKCkpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmLmNsb3NlKCkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkKaW5kZXggNjAyMDdmYi4uZDY0MmIxMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkKQEAgLTM3LDYgKzM3LDcgQEAKIAogdGVzdF9kYXRhID0gWwogICAgICgiSW50IFZhbHVlIiwgICAgIDQ1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0RXT1JEKSwKKyAgICAoIlF3b3JkIFZhbHVlIiwgICAweDExMjIzMzQ0NTU2Njc3ODgsICAgICAgICAgICAgICAgICAgICAgIFJFR19RV09SRCksCiAgICAgKCJTdHJpbmcgVmFsIiwgICAgIkEgc3RyaW5nIHZhbHVlIiwgICAgICAgICAgICAgICAgICAgICAgICBSRUdfU1opLAogICAgICgiU3RyaW5nRXhwYW5kIiwgICJUaGUgcGF0aCBpcyAlcGF0aCUiLCAgICAgICAgICAgICAgICAgICAgUkVHX0VYUEFORF9TWiksCiAgICAgKCJNdWx0aS1zdHJpbmciLCAgWyJMb3RzIiwgIm9mIiwgInN0cmluZyIsICJ2YWx1ZXMiXSwgICAgICBSRUdfTVVMVElfU1opLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKaW5kZXggNGE4YWI3ZC4uMTc5ZTA2OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CkBAIC01MSw2ICs1MSwxMCBAQAogICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAsIDIwMDAsIDEwMCk6CiAgICAgICAgICAgICBzYWZlX0JlZXAoaSwgNzUpCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIHNhZmVfQmVlcChkdXJhdGlvbj03NSwgZnJlcXVlbmN5PTIwMDApCisKKwogY2xhc3MgTWVzc2FnZUJlZXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTc2LDYgKzgwLDkgQEAKICAgICBkZWYgdGVzdF9xdWVzdGlvbihzZWxmKToKICAgICAgICAgc2FmZV9NZXNzYWdlQmVlcCh3aW5zb3VuZC5NQl9JQ09OUVVFU1RJT04pCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIHNhZmVfTWVzc2FnZUJlZXAodHlwZT13aW5zb3VuZC5NQl9PSykKKwogCiBjbGFzcyBQbGF5U291bmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODcsNiArOTQsMjUgQEAKICAgICAgICAgICAgIHdpbnNvdW5kLlBsYXlTb3VuZCwKICAgICAgICAgICAgICJub25lIiwgd2luc291bmQuU05EX0FTWU5DIHwgd2luc291bmQuU05EX01FTU9SWQogICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCBiImJhZCIsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCAiYmFkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2luc291bmQuU05EX01FTU9SWSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB3aW5zb3VuZC5QbGF5U291bmQsIDEsIDApCisKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIHNhZmVfUGxheVNvdW5kKGZsYWdzPXdpbnNvdW5kLlNORF9BTElBUywgc291bmQ9IlN5c3RlbUV4aXQiKQorCisgICAgZGVmIHRlc3Rfc25kX21lbW9yeShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuZmluZGZpbGUoJ3BsdWNrLXBjbTgud2F2JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyPSdhdWRpb2RhdGEnKSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIGF1ZGlvX2RhdGEgPSBmLnJlYWQoKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChhdWRpb19kYXRhLCB3aW5zb3VuZC5TTkRfTUVNT1JZKQorICAgICAgICBhdWRpb19kYXRhID0gYnl0ZWFycmF5KGF1ZGlvX2RhdGEpCisgICAgICAgIHNhZmVfUGxheVNvdW5kKGF1ZGlvX2RhdGEsIHdpbnNvdW5kLlNORF9NRU1PUlkpCisKKyAgICBkZWYgdGVzdF9zbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZuID0gc3VwcG9ydC5maW5kZmlsZSgncGx1Y2stcGNtOC53YXYnLCBzdWJkaXI9J2F1ZGlvZGF0YScpCisgICAgICAgIHNhZmVfUGxheVNvdW5kKGZuLCB3aW5zb3VuZC5TTkRfRklMRU5BTUUgfCB3aW5zb3VuZC5TTkRfTk9ERUZBVUxUKQogCiAgICAgZGVmIHRlc3RfYWxpYXNlcyhzZWxmKToKICAgICAgICAgYWxpYXNlcyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQppbmRleCBlOGQ3ODliLi5lMjQ3ZmY2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aXRoLnB5CkBAIC0xNDAsMTEgKzE0MCw2IEBACiAgICAgICAgICAgICAnd2l0aCBtb2NrIGFzIChOb25lKTpcbicKICAgICAgICAgICAgICcgIHBhc3MnKQogCi0gICAgZGVmIHRlc3RBc3NpZ25tZW50VG9FbXB0eVR1cGxlRXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCi0gICAgICAgICAgICAnd2l0aCBtb2NrIGFzICgpOlxuJwotICAgICAgICAgICAgJyAgcGFzcycpCi0KICAgICBkZWYgdGVzdEFzc2lnbm1lbnRUb1R1cGxlT25seUNvbnRhaW5pbmdOb25lRXJyb3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoJ3dpdGggbW9jayBhcyBOb25lLDpcbiAgcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCkBAIC00NTQsNyArNDQ5LDcgQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCJmcm9tIHdpdGgiKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRTdG9wSXRlcmF0aW9uMihzZWxmKToKQEAgLTQ4Miw3ICs0NzcsNyBAQAogICAgICAgICAgICAgd2l0aCBjbSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIG5leHQoaXRlcihbXSkpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCiAKICAgICBkZWYgdGVzdFJhaXNlZEdlbmVyYXRvckV4aXQxKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CmluZGV4IDYxYTc1MGMuLjc3MDhlMjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKQEAgLTI1OCw3ICsyNTgsNyBAQAogCiAgICAgICAgIGRlZiBhcHAoZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UpOgogICAgICAgICAgICAgc3RhcnRfcmVzcG9uc2UoIjIwMCBPSyIsIFtdKQotICAgICAgICAgICAgcmV0dXJuIFtieXRlcyhzdXBwb3J0LlNPQ0tfTUFYX1NJWkUpXQorICAgICAgICAgICAgcmV0dXJuIFtiJ1wwJyAqIHN1cHBvcnQuU09DS19NQVhfU0laRV0KIAogICAgICAgICBjbGFzcyBXc2dpSGFuZGxlcihOb0xvZ1JlcXVlc3RIYW5kbGVyLCBXU0dJUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQppbmRleCBmYmZjMGIwLi4wNTRlYzhmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQpAQCAtOTEsOCArOTEsNiBAQAogCiAKIGNsYXNzIE1vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHdlIGdldCByaWQgb2YgdGhlIGdsb2JhbCBtb2R1bGUgdmFycwotCiAgICAgZGVmIHRlc3Rfc2FuaXR5KHNlbGYpOgogICAgICAgICAjIEltcG9ydCBzYW5pdHkuCiAKQEAgLTEwMCw2ICs5OCwxMCBAQAogICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKICAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIG5hbWVzID0gKCJ4bWwuZXRyZWUuRWxlbWVudFRyZWUiLCAiX2VsZW1lbnR0cmVlIikKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgRVQsIG5hbWVzLCBibGFja2xpc3Q9KCJIVE1MX0VNUFRZIiwpKQorCiAKIGRlZiBzZXJpYWxpemUoZWxlbSwgdG9fc3RyaW5nPVRydWUsIGVuY29kaW5nPSd1bmljb2RlJywgKipvcHRpb25zKToKICAgICBpZiBlbmNvZGluZyAhPSAndW5pY29kZSc6CkBAIC0xODIsMTAgKzE4NCwxMiBAQAogCiAgICAgICAgIGRlZiBjaGVja19lbGVtZW50KGVsZW1lbnQpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEVULmlzZWxlbWVudChlbGVtZW50KSwgbXNnPSJub3QgYW4gZWxlbWVudCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGFnIiksIG1zZz0ibm8gdGFnIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAiYXR0cmliIiksIG1zZz0ibm8gYXR0cmliIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGV4dCIpLCBtc2c9Im5vIHRleHQgbWVtYmVyIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsICJ0YWlsIiksIG1zZz0ibm8gdGFpbCBtZW1iZXIiKQorICAgICAgICAgICAgZGlyZWxlbSA9IGRpcihlbGVtZW50KQorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ3RhZycsICdhdHRyaWInLCAndGV4dCcsICd0YWlsJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nbm8gJXMgbWVtYmVyJyAlIGF0dHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBkaXJlbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdubyAlcyB2aXNpYmxlIGJ5IGRpcicgJSBhdHRyKQogCiAgICAgICAgICAgICBjaGVja19zdHJpbmcoZWxlbWVudC50YWcpCiAgICAgICAgICAgICBjaGVja19tYXBwaW5nKGVsZW1lbnQuYXR0cmliKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKaW5kZXggOTZiNDQ2ZS4uODdmM2YyNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CkBAIC0xLDUgKzEsNSBAQAogIyB4bWwuZXRyZWUgdGVzdCBmb3IgY0VsZW1lbnRUcmVlCi1pbXBvcnQgc3lzLCBzdHJ1Y3QKK2ltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKIGltcG9ydCB0eXBlcwpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5jYWxjc2l6ZSgnOFAnKSkKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUsIHRlc3RfeG1sX2V0cmVlX2MKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlCiAKICAgICAjIFJ1biB0aGUgdGVzdHMgc3BlY2lmaWMgdG8gdGhlIEMgaW1wbGVtZW50YXRpb24KICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggMDJkOWY1Yy4uZGY5Yzc5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC05LDcgKzEwLDYgQEAKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IGh0dHAsIGh0dHAuc2VydmVyCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGlvCiBpbXBvcnQgY29udGV4dGxpYgpAQCAtMjM4LDYgKzIzOCw1NCBAQAogICAgICAgICAgICAgICAgICc8L3N0cnVjdD48L3ZhbHVlPjwvcGFyYW0+PC9wYXJhbXM+JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVzcG9uc2VFcnJvciwgeG1scnBjbGliLmxvYWRzLCBkYXRhKQogCisgICAgZGVmIGNoZWNrX2xvYWRzKHNlbGYsIHMsIHZhbHVlLCAqKmt3YXJncyk6CisgICAgICAgIGR1bXAgPSAnPHBhcmFtcz48cGFyYW0+PHZhbHVlPiVzPC92YWx1ZT48L3BhcmFtPjwvcGFyYW1zPicgJSBzCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhkdW1wLCAqKmt3YXJncykKKyAgICAgICAgKG5ld3ZhbHVlLCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXd2YWx1ZSksIHR5cGUodmFsdWUpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgZGVmIHRlc3RfbG9hZF9zdGFuZGFyZF90eXBlcyhzZWxmKToKKyAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX2xvYWRzCisgICAgICAgIGNoZWNrKCdzdHJpbmcnLCAnc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxzdHJpbmc+c3RyaW5nPC9zdHJpbmc+JywgJ3N0cmluZycpCisgICAgICAgIGNoZWNrKCc8c3RyaW5nPvCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nPC9zdHJpbmc+JywgJ/CdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxpbnQ+MjA1NjE4Mzk0NzwvaW50PicsIDIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aW50Pi0yMDU2MTgzOTQ3PC9pbnQ+JywgLTIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aTQ+MjA1NjE4Mzk0NzwvaTQ+JywgMjA1NjE4Mzk0NykKKyAgICAgICAgY2hlY2soJzxkb3VibGU+NDYwOTMuNzgxMjU8L2RvdWJsZT4nLCA0NjA5My43ODEyNSkKKyAgICAgICAgY2hlY2soJzxib29sZWFuPjA8L2Jvb2xlYW4+JywgRmFsc2UpCisgICAgICAgIGNoZWNrKCc8YmFzZTY0PkFHSjVkR1VnYzNSeWFXNW4vdz09PC9iYXNlNjQ+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkJpbmFyeShiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnKSkKKyAgICAgICAgY2hlY2soJzxiYXNlNjQ+QUdKNWRHVWdjM1J5YVc1bi93PT08L2Jhc2U2ND4nLAorICAgICAgICAgICAgICBiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkRhdGVUaW1lKCcyMDA1MDIxMFQxMTo0MToyMycpKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwNSwgMiwgMTAsIDExLCA0MSwgMjMpLAorICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGFycmF5PjxkYXRhPicKKyAgICAgICAgICAgICAgJzx2YWx1ZT48aW50PjE8L2ludD48L3ZhbHVlPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPicKKyAgICAgICAgICAgICAgJzwvZGF0YT48L2FycmF5PicsIFsxLCAyXSkKKyAgICAgICAgY2hlY2soJzxzdHJ1Y3Q+JworICAgICAgICAgICAgICAnPG1lbWJlcj48bmFtZT5iPC9uYW1lPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPjwvbWVtYmVyPicKKyAgICAgICAgICAgICAgJzxtZW1iZXI+PG5hbWU+YTwvbmFtZT48dmFsdWU+PGludD4xPC9pbnQ+PC92YWx1ZT48L21lbWJlcj4nCisgICAgICAgICAgICAgICc8L3N0cnVjdD4nLCB7J2EnOiAxLCAnYic6IDJ9KQorCisgICAgZGVmIHRlc3RfbG9hZF9leHRlbnNpb25fdHlwZXMoc2VsZik6CisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19sb2FkcworICAgICAgICBjaGVjaygnPG5pbC8+JywgTm9uZSkKKyAgICAgICAgY2hlY2soJzxleDpuaWwvPicsIE5vbmUpCisgICAgICAgIGNoZWNrKCc8aTE+MjA1PC9pMT4nLCAyMDUpCisgICAgICAgIGNoZWNrKCc8aTI+MjA1NjE8L2kyPicsIDIwNTYxKQorICAgICAgICBjaGVjaygnPGk4Pjk4NzY1NDMyMTA8L2k4PicsIDk4NzY1NDMyMTApCisgICAgICAgIGNoZWNrKCc8YmlnaW50ZWdlcj45ODc2NTQzMjEwMDEyMzQ1Njc4OTwvYmlnaW50ZWdlcj4nLAorICAgICAgICAgICAgICA5ODc2NTQzMjEwMDEyMzQ1Njc4OSkKKyAgICAgICAgY2hlY2soJzxmbG9hdD45My43ODEyNTwvZmxvYXQ+JywgOTMuNzgxMjUpCisgICAgICAgIGNoZWNrKCc8YmlnZGVjaW1hbD45ODc2NTQzMjEwLjAxMjM0NTY3ODk8L2JpZ2RlY2ltYWw+JywKKyAgICAgICAgICAgICAgZGVjaW1hbC5EZWNpbWFsKCc5ODc2NTQzMjEwLjAxMjM0NTY3ODknKSkKKwogICAgIGRlZiB0ZXN0X2dldF9ob3N0X2luZm8oc2VsZik6CiAgICAgICAgICMgc2VlIGJ1ZyAjMzYxMywgdGhpcyByYWlzZWQgYSBUeXBlRXJyb3IKICAgICAgICAgdHJhbnNwID0geG1scnBjLmNsaWVudC5UcmFuc3BvcnQoKQpAQCAtMTE0Nyw3ICsxMTk1LDYgQEAKICAgICAiIiJBIHZhcmlhdGlvbiBvbiBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIHdoaWNoIGdpdmVzIGEgdGV4dCBzdHJlYW0KICAgICBoYXZpbmcgYSBgYnVmZmVyYCBhdHRyaWJ1dGUuCiAgICAgIiIiCi0gICAgaW1wb3J0IGlvCiAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgc3lzLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoaW8uQnl0ZXNJTygpLCBlbmNvZGluZz1lbmNvZGluZykKICAgICB0cnk6CkBAIC0xMjIwLDcgKzEyNjcsNyBAQAogICAgICAgICBjb250ZW50ID0gaGFuZGxlW2hhbmRsZS5maW5kKCI8P3htbCIpOl0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW50KHJlLnNlYXJjaCgnQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCisgICAgICAgICAgICBpbnQocmUuc2VhcmNoKHInQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCiAgICAgICAgICAgICBsZW4oY29udGVudCkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CmluZGV4IGI2MGI4MmYuLmFlMGEyOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKQEAgLTEsNyArMSw0IEBACiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCi1pbXBvcnQgZXJybm8KLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5IGIvTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDM4MC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKaW5kZXggZDI3OGUwNi4uZmY0YTZkNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQpAQCAtMSw4ICsxLDggQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgaW8KIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgdGltZQogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHppcGZpbGUKQEAgLTM4LDEwICszOCw2IEBACiAgICAgICAgIHlpZWxkIGYKICAgICAgICAgdGVzdC5hc3NlcnRGYWxzZShmLmNsb3NlZCkKIAotZGVmIG9wZW5VKHppcGZwLCBmbik6Ci0gICAgd2l0aCBjaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICByZXR1cm4gemlwZnAub3BlbihmbiwgJ3JVJykKLQogY2xhc3MgQWJzdHJhY3RUZXN0c1dpdGhTb3VyY2VGaWxlOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CkBAIC02MSw2ICs1Nyw5IEBACiAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICJhbm90aGVyLm5hbWUiKQogICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCBURVNURk4pCiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic3RyZmlsZSIsIHNlbGYuZGF0YSkKKyAgICAgICAgICAgIHdpdGggemlwZnAub3Blbignd3JpdHRlbi1vcGVuLXcnLCBtb2RlPSd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGxpbmUpCiAKICAgICBkZWYgemlwX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQpAQCAtNzYsNyArNzUsNyBAQAogICAgICAgICAgICAgemlwZnAucHJpbnRkaXIoZmlsZT1mcCkKICAgICAgICAgICAgIGRpcmVjdG9yeSA9IGZwLmdldHZhbHVlKCkKICAgICAgICAgICAgIGxpbmVzID0gZGlyZWN0b3J5LnNwbGl0bGluZXMoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA1KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgogCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdGaWxlIE5hbWUnLCBsaW5lc1swXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ01vZGlmaWVkJywgbGluZXNbMF0pCkBAIC05MCwyMyArODksMjUgQEAKIAogICAgICAgICAgICAgIyBDaGVjayB0aGUgbmFtZWxpc3QKICAgICAgICAgICAgIG5hbWVzID0gemlwZnAubmFtZWxpc3QoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCA0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihURVNURk4sIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYW5vdGhlci5uYW1lIiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzdHJmaWxlIiwgbmFtZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ3cml0dGVuLW9wZW4tdyIsIG5hbWVzKQogCiAgICAgICAgICAgICAjIENoZWNrIGluZm9saXN0CiAgICAgICAgICAgICBpbmZvcyA9IHppcGZwLmluZm9saXN0KCkKICAgICAgICAgICAgIG5hbWVzID0gW2kuZmlsZW5hbWUgZm9yIGkgaW4gaW5mb3NdCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKFRFU1RGTiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJhbm90aGVyLm5hbWUiLCBuYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInN0cmZpbGUiLCBuYW1lcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIndyaXR0ZW4tb3Blbi13IiwgbmFtZXMpCiAgICAgICAgICAgICBmb3IgaSBpbiBpbmZvczoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkuZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKIAogICAgICAgICAgICAgIyBjaGVjayBnZXRpbmZvCi0gICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIik6CisgICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIiwgIndyaXR0ZW4tb3Blbi13Iik6CiAgICAgICAgICAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8obm0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmZpbGVuYW1lLCBubSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKQEAgLTM3MiwxNCArMzczLDE4IEBACiAgICAgdGVzdF9sb3dfY29tcHJlc3Npb24gPSBOb25lCiAKICAgICBkZWYgemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGNyZWF0ZXMgZmlsZXMgd2l0aCBtb2RlIDA2MDAsCi0gICAgICAgICMgd2hlbiBpdCBpcyBwYXNzZWQgYSBuYW1lIHJhdGhlciB0aGFuIGEgWmlwSW5mbyBpbnN0YW5jZS4KKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3cml0ZXN0ciBhbmQgb3BlbiguLi4gbW9kZT0ndycpIGNyZWF0ZSBmaWxlcyB3aXRoCisgICAgICAgICMgbW9kZSAwNjAwLCB3aGVuIHRoZXkgYXJlIHBhc3NlZCBhIG5hbWUgcmF0aGVyIHRoYW4gYSBaaXBJbmZvCisgICAgICAgICMgaW5zdGFuY2UuCiAKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKICAgICAgICAgICAgIHppbmZvID0gemlwZnAuZ2V0aW5mbygnc3RyZmlsZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvLmV4dGVybmFsX2F0dHIsIDBvNjAwIDw8IDE2KQogCisgICAgICAgICAgICB6aW5mbzIgPSB6aXBmcC5nZXRpbmZvKCd3cml0dGVuLW9wZW4tdycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvMi5leHRlcm5hbF9hdHRyLCAwbzYwMCA8PCAxNikKKwogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKGYsIHppcGZpbGUuWklQX1NUT1JFRCkKQEAgLTQ0NCwxMiArNDQ5LDE2IEBACiAKICAgICBkZWYgdGVzdF93cml0ZV90b19yZWFkb25seShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCB0cnlpbmcgdG8gY2FsbCB3cml0ZSgpIG9uIGEgcmVhZG9ubHkgWmlwRmlsZSBvYmplY3QKLSAgICAgICAgcmFpc2VzIGEgUnVudGltZUVycm9yLiIiIgorICAgICAgICByYWlzZXMgYSBWYWx1ZUVycm9yLiIiIgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJ3IikgYXMgemlwZnA6CiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic29tZWZpbGUudHh0IiwgImJvZ3VzIikKIAogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGZwLndyaXRlLCBURVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQorCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgemlwZnAub3BlbihURVNURk4sIG1vZGU9J3cnKQogCiAgICAgZGVmIHRlc3RfYWRkX2ZpbGVfYmVmb3JlXzE5ODAoc2VsZik6CiAgICAgICAgICMgU2V0IGF0aW1lIGFuZCBtdGltZSB0byAxOTcwLTAxLTAxCkBAIC0xMDIyLDMyICsxMDMxLDYgQEAKICAgICAgICAgICAgICAgICBkYXRhICs9IHppcGZwLnJlYWQoaW5mbykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGF0YSwge2IiZm9vYmFyIiwgYiJiYXJmb28ifSkKIAotICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoJ3NwYW0udHh0JywgYidhYmFiYWdhbGFtYWdhJykKLQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIG1vZGUgaW4gJ1UnLCAnclUnOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICB6aXBvcGVuID0gemlwZnAub3Blbignc3BhbS50eHQnLCBtb2RlKQotICAgICAgICAgICAgICAgIHppcG9wZW4uY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdW5pdmVyc2FsX3JlYWRhaGVhZHMoc2VsZik6Ci0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLQotICAgICAgICBkYXRhID0gYidhXHJcbicgKiAxNiAqIDEwMjQKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoVEVTVEZOLCBkYXRhKQotCi0gICAgICAgIGRhdGEyID0gYicnCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICdyJykgYXMgemlwZnAsIFwKLSAgICAgICAgICAgICBvcGVuVSh6aXBmcCwgVEVTVEZOKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gemlwb3BlbjoKLSAgICAgICAgICAgICAgICBkYXRhMiArPSBsaW5lCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBkYXRhMi5yZXBsYWNlKGInXG4nLCBiJ1xyXG4nKSkKLQogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2V4dGVuZGVkX2xvY2FsX2hlYWRlcl9pc3N1ZTEyMDIoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JykgYXMgb3JpZ196aXA6CiAgICAgICAgICAgICBmb3IgZGF0YSBpbiAnYWJjZGVmZ2hpamtsbW5vcCc6CkBAIC0xMjI3LDI3ICsxMjEwLDI3IEBACiAgICAgICAgICAgICBmcC53cml0ZSgic2hvcnQgZmlsZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGZpbGUuQmFkWmlwRmlsZSwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4pCiAKLSAgICBkZWYgdGVzdF9jbG9zZWRfemlwX3JhaXNlc19SdW50aW1lRXJyb3Ioc2VsZik6CisgICAgZGVmIHRlc3RfY2xvc2VkX3ppcF9yYWlzZXNfVmFsdWVFcnJvcihzZWxmKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGVzdHppcCgpIGRvZXNuJ3Qgc3dhbGxvdyBpbmFwcHJvcHJpYXRlIGV4Y2VwdGlvbnMuIiIiCiAgICAgICAgIGRhdGEgPSBpby5CeXRlc0lPKCkKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZGF0YSwgbW9kZT0idyIpIGFzIHppcGY6CiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgICMgVGhpcyBpcyBjb3JyZWN0OyBjYWxsaW5nIC5yZWFkIG9uIGEgY2xvc2VkIFppcEZpbGUgc2hvdWxkIHJhaXNlCi0gICAgICAgICMgYSBSdW50aW1lRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKKyAgICAgICAgIyBhIFZhbHVlRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKICAgICAgICAgIyB2ZXJzaW9uIG9mIC50ZXN0emlwIHdvdWxkIHN3YWxsb3cgdGhpcyBleGNlcHRpb24gKGFuZCBhbnkgb3RoZXIpCiAgICAgICAgICMgYW5kIHJlcG9ydCB0aGF0IHRoZSBmaXJzdCBmaWxlIGluIHRoZSBhcmNoaXZlIHdhcyBjb3JydXB0LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYucmVhZCwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYudGVzdHppcCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLndyaXRlc3RyLCAiYm9ndXMudHh0IiwgImJvZ3VzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5yZWFkLCAiZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLnRlc3R6aXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYud3JpdGVzdHIsICJib2d1cy50eHQiLCAiYm9ndXMiKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCd6aXBmaWxlIHRlc3QgZGF0YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi53cml0ZSwgVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLndyaXRlLCBURVNURk4pCiAKICAgICBkZWYgdGVzdF9iYWRfY29uc3RydWN0b3JfbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUgY29uc3RydWN0b3IgYXJlIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQogCiAgICAgZGVmIHRlc3RfYmFkX29wZW5fbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUub3BlbiBhcmUgY2F1Z2h0LiIiIgpAQCAtMTI1NSw5ICsxMjM4LDEyIEBACiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTiwgbW9kZT0iciIpIGFzIHppcGY6Ci0gICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKKyAgICAgICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKICAgICAgICAgICAgIHppcGYucmVhZCgiZm9vLnR4dCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiLCAicSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgInEiKQorICAgICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgc3VwcG9ydCBpcyByZW1vdmVkCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgIlUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJyVSIpCiAKICAgICBkZWYgdGVzdF9yZWFkMChzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBjYWxsaW5nIHJlYWQoMCkgb24gYSBaaXBFeHRGaWxlIG9iamVjdCByZXR1cm5zIGFuIGVtcHR5CkBAIC0xMjgwLDcgKzEyNjYsNyBAQAogICAgIGRlZiB0ZXN0X2JhZF9jb21wcmVzc2lvbl9tb2RlKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGJhZCBjb21wcmVzc2lvbiBtZXRob2RzIHBhc3NlZCB0byBaaXBGaWxlLm9wZW4gYXJlCiAgICAgICAgIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInciLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJ3IiwgLTEpCiAKICAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9jb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgIyBkYXRhIGlzIGRlY2xhcmVkIGFzIHNocnVuaywgYnV0IGFjdHVhbGx5IGRlZmxhdGVkCkBAIC0xNDI4LDYgKzE0MTQsMzUgQEAKICAgICAgICAgICAgICMgdGVzdHppcCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBjb3JydXB0IGZpbGUsIG9yIE5vbmUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHppcGYudGVzdHppcCgpKQogCisgICAgZGVmIHRlc3Rfb3Blbl9jb25mbGljdGluZ19oYW5kbGVzKHNlbGYpOgorICAgICAgICAjIEl0J3Mgb25seSBwb3NzaWJsZSB0byBvcGVuIG9uZSB3cml0YWJsZSBmaWxlIGhhbmRsZSBhdCBhIHRpbWUKKyAgICAgICAgbXNnMSA9IGIiSXQncyBmdW4gdG8gY2hhcnRlciBhbiBhY2NvdW50YW50ISIKKyAgICAgICAgbXNnMiA9IGIiQW5kIHNhaWwgdGhlIHdpZGUgYWNjb3VudGFudCBzZWEiCisgICAgICAgIG1zZzMgPSBiIlRvIGZpbmQsIGV4cGxvcmUgdGhlIGZ1bmRzIG9mZnNob3JlIgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdmb28nLCBtb2RlPSd3JykgYXMgdzI6CisgICAgICAgICAgICAgICAgdzIud3JpdGUobXNnMSkKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdiYXInLCBtb2RlPSd3JykgYXMgdzE6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi5vcGVuKCdoYW5kbGUnLCBtb2RlPSd3JykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLm9wZW4oJ2ZvbycsIG1vZGU9J3InKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3N0cicsICdhYmNkZScpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi53cml0ZShfX2ZpbGVfXywgJ2ZpbGUnKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHcxLndyaXRlKG1zZzIpCisgICAgICAgICAgICB3aXRoIHppcGYub3BlbignYmF6JywgbW9kZT0ndycpIGFzIHcyOgorICAgICAgICAgICAgICAgIHcyLndyaXRlKG1zZzMpCisKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2ZvbycpLCBtc2cxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JhcicpLCBtc2cyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JheicpLCBtc2czKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLm5hbWVsaXN0KCksIFsnZm9vJywgJ2JhcicsICdiYXonXSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5saW5rKFRFU1RGTikKICAgICAgICAgdW5saW5rKFRFU1RGTjIpCkBAIC0xNzYxLDYgKzE3NzYsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoem9wZW4ucmVhZCgpLCBiJzIyMicpCiAKKyAgICBkZWYgdGVzdF9vcGVuX3dyaXRlKHNlbGYpOgorICAgICAgICBmb3Igd3JhcHBlciBpbiAobGFtYmRhIGY6IGYpLCBUZWxsYWJsZSwgVW5zZWVrYWJsZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdyYXBwZXI9d3JhcHBlcik6CisgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgIGYud3JpdGUoYidhYmMnKQorICAgICAgICAgICAgICAgIGJmID0gaW8uQnVmZmVyZWRXcml0ZXIoZikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh3cmFwcGVyKGJmKSwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3cnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHpvcGVuLndyaXRlKGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnLCAndycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgem9wZW4ud3JpdGUoYicyMjInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpWzo1XSwgYidhYmNQSycpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZikgYXMgemlwZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ29uZXMnKSwgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgndHdvcycpLCBiJzIyMicpCisKIAogQHJlcXVpcmVzX3psaWIKIGNsYXNzIFRlc3RzV2l0aE11bHRpcGxlT3BlbnModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTg3MSw2ICsxOTAyLDE5IEBACiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGYuZmlsZW5vKCksIDEwMCkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3doaWxlX3JlYWRpbmcoc2VsZik6CisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6CisgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ2EnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3InKSBhcyByMToKKyAgICAgICAgICAgICAgICBkYXRhMSA9IHIxLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJywgJ3cnKSBhcyB3MToKKyAgICAgICAgICAgICAgICAgICAgdzEud3JpdGUoc2VsZi5kYXRhMikKKyAgICAgICAgICAgICAgICBkYXRhMSArPSByMS5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMikgYXMgemlwZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCd0d29zJyksIHNlbGYuZGF0YTIpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubGluayhURVNURk4yKQogCkBAIC0xOTQwLDEzNyArMTk4NCwxOSBAQAogICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKIAogCi1jbGFzcyBBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0czoKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMubGluZV9nZW4gPSBbYnl0ZXMoIlRlc3Qgb2YgemlwZmlsZSBsaW5lICVkLiIgJSBpLCAiYXNjaWkiKQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoRklYRURURVNUX1NJWkUpXQotICAgICAgICBjbHMuc2VwcyA9IChiJ1xyJywgYidcclxuJywgYidcbicpCi0gICAgICAgIGNscy5hcmNkYXRhID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKGNscy5zZXBzKToKLSAgICAgICAgICAgIGNscy5hcmNkYXRhW3NdID0gcy5qb2luKGNscy5saW5lX2dlbikgKyBzCitjbGFzcyBaaXBJbmZvVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgemkgPSB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKF9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5iYXNlbmFtZSh6aS5maWxlbmFtZSksICd0ZXN0X3ppcGZpbGUucHknKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppLmlzX2RpcigpKQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmFyY2ZpbGVzID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKHNlbGYuc2Vwcyk6Ci0gICAgICAgICAgICBzZWxmLmFyY2ZpbGVzW3NdID0gJyVzLSVkJyAlIChURVNURk4sIG4pCi0gICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5hcmNmaWxlc1tzXSwgIndiIikgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXJjZGF0YVtzXSkKLQotICAgIGRlZiBtYWtlX3Rlc3RfYXJjaGl2ZShzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIsIGNvbXByZXNzaW9uKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBmbiBpbiBzZWxmLmFyY2ZpbGVzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIHppcGZwLndyaXRlKGZuLCBmbikKLQotICAgIGRlZiByZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIHppcGRhdGEgPSBmcC5yZWFkKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYXJjZGF0YVtzZXBdLCB6aXBkYXRhKQotCi0gICAgZGVmIHRlc3RfcmVhZChzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZV9yZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgemlwb3BlbjoKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCA9IHppcG9wZW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gcmVhZAotCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkID0gemlwb3Blbi5yZWFkKDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSByZWFkCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5hcmNkYXRhW2InXG4nXSkKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWQoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfcmVhZF90ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgcmVhZGxpbmVfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZWRhdGEgPSB6aXBvcGVuLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZWRhdGEsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZXNfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAgICAgemlwbGluZXMgPSBmcC5yZWFkbGluZXMoKQotICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCB6aXBsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwbGluZSwgbGluZSArIGInXG4nKQotCi0gICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgaXRlcmxpbmVzX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCBmcCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGxpbmUsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X2l0ZXJsaW5lcyhzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICB1bmxpbmsoZm4pCi0gICAgICAgIHVubGluayhURVNURk4pCi0gICAgICAgIHVubGluayhURVNURk4yKQotCi0KLWNsYXNzIFN0b3JlZFVuaXZlcnNhbE5ld2xpbmVUZXN0cyhBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9TVE9SRUQKLQotQHJlcXVpcmVzX3psaWIKLWNsYXNzIERlZmxhdGVVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0RFRkxBVEVECi0KLUByZXF1aXJlc19iejIKLWNsYXNzIEJ6aXAyVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfQlpJUDIKLQotQHJlcXVpcmVzX2x6bWEKLWNsYXNzIEx6bWFVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0xaTUEKKyAgICBkZWYgdGVzdF9mcm9tX2RpcihzZWxmKToKKyAgICAgICAgZGlycGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorICAgICAgICB6aSA9IHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoZGlycGF0aCwgJ3N0ZGxpYl90ZXN0cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZmlsZW5hbWUsICdzdGRsaWJfdGVzdHMvJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHppLmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX1NUT1JFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5maWxlX3NpemUsIDApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IGQ1YjNiMjIuLjdkZGJjNTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC0zOTgsNyArMzk4LDggQEAKICAgICAgICAgcGFja2RpcjIgPSBwYWNrZGlyICsgVEVTVFBBQ0syICsgb3Muc2VwCiAgICAgICAgIGZpbGVzID0ge3BhY2tkaXIgKyAiX19pbml0X18iICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAogICAgICAgICAgICAgICAgICBwYWNrZGlyMiArICJfX2luaXRfXyIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5YyksCi0gICAgICAgICAgICAgICAgIHBhY2tkaXIyICsgVEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKX0KKyAgICAgICAgICAgICAgICAgcGFja2RpcjIgKyBURVNUTU9EICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAorICAgICAgICAgICAgICAgICAic3BhbSIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5Yyl9CiAKICAgICAgICAgeiA9IFppcEZpbGUoVEVNUF9aSVAsICJ3IikKICAgICAgICAgdHJ5OgpAQCAtNDEyLDYgKzQxMywxNCBAQAogICAgICAgICAgICAgemkgPSB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoVEVNUF9aSVApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmFyY2hpdmUsIFRFTVBfWklQKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKFRFU1RQQUNLKSwgVHJ1ZSkKKworICAgICAgICAgICAgZmluZF9tb2QgPSB6aS5maW5kX21vZHVsZSgnc3BhbScpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kX21vZCwgemlwaW1wb3J0LnppcGltcG9ydGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaW5kX21vZC5pc19wYWNrYWdlKCdzcGFtJykpCisgICAgICAgICAgICBsb2FkX21vZCA9IGZpbmRfbW9kLmxvYWRfbW9kdWxlKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZF9tb2QuZ2V0X2ZpbGVuYW1lKCdzcGFtJyksIGxvYWRfbW9kLl9fZmlsZV9fKQorCiAgICAgICAgICAgICBtb2QgPSB6aS5sb2FkX21vZHVsZShURVNUUEFDSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZ2V0X2ZpbGVuYW1lKFRFU1RQQUNLKSwgbW9kLl9fZmlsZV9fKQogCkBAIC00NzEsNiArNDgwLDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHppLmlzX3BhY2thZ2UoVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRCksIEZhbHNlKQogCisgICAgICAgICAgICBwa2dfcGF0aCA9IFRFTVBfWklQICsgb3Muc2VwICsgcGFja2RpciArIFRFU1RQQUNLMgorICAgICAgICAgICAgemkyID0gemlwaW1wb3J0LnppcGltcG9ydGVyKHBrZ19wYXRoKQorICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkID0gemkyLmZpbmRfbW9kdWxlKFRFU1RNT0QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZF9kb3R0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZF9tb2RfZG90dGVkLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppMi5pc19wYWNrYWdlKFRFU1RNT0QpKQorICAgICAgICAgICAgbG9hZF9tb2QgPSBmaW5kX21vZF9kb3R0ZWQubG9hZF9tb2R1bGUoVEVTVE1PRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkLmdldF9maWxlbmFtZShURVNUTU9EKSwgbG9hZF9tb2QuX19maWxlX18pCisKICAgICAgICAgICAgIG1vZF9wYXRoID0gVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRAogICAgICAgICAgICAgbW9kX25hbWUgPSBtb2R1bGVfcGF0aF90b19kb3R0ZWRfbmFtZShtb2RfcGF0aCkKICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZF9uYW1lKQpAQCAtNjIzLDggKzY0MiwxMCBAQAogCiAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihmaWxlbmFtZSkKICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkKLSAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKGJ5dGVhcnJheShvcy5mc2VuY29kZShmaWxlbmFtZSkpKQotICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihieXRlYXJyYXkob3MuZnNlbmNvZGUoZmlsZW5hbWUpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQogCiAKIEBzdXBwb3J0LnJlcXVpcmVzX3psaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CmluZGV4IDU5MTM2MjIuLjg0ZDUyNmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IGRvY3Rlc3QKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgbGluZWNhY2hlCi1pbXBvcnQgcGRiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9zY3JpcHQpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3psaWIucHkgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKaW5kZXggNmZlYTg5My4uMjAxNzRkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQpAQCAtMTY0LDYgKzE2NCwxNiBAQAogICAgICAgICB4ID0gemxpYi5jb21wcmVzcyhIQU1MRVRfU0NFTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5kZWNvbXByZXNzKHgpLCBIQU1MRVRfU0NFTkUpCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgeCA9IHpsaWIuY29tcHJlc3MoSEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4KSwgSEFNTEVUX1NDRU5FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB6bGliLmNvbXByZXNzKGRhdGE9SEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Yml0cz16bGliLk1BWF9XQklUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZT16bGliLkRFRl9CVUZfU0laRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFNTEVUX1NDRU5FKQorCiAgICAgZGVmIHRlc3Rfc3BlZWNoMTI4KHNlbGYpOgogICAgICAgICAjIGNvbXByZXNzIG1vcmUgZGF0YQogICAgICAgICBkYXRhID0gSEFNTEVUX1NDRU5FICogMTI4CkBAIC0yMzQsNiArMjQ0LDI3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVuY29uc3VtZWRfdGFpbCwgYnl0ZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVudXNlZF9kYXRhLCBieXRlcykKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRzKHNlbGYpOgorICAgICAgICBsZXZlbCA9IDIKKyAgICAgICAgbWV0aG9kID0gemxpYi5ERUZMQVRFRAorICAgICAgICB3Yml0cyA9IC0xMgorICAgICAgICBtZW1MZXZlbCA9IDkKKyAgICAgICAgc3RyYXRlZ3kgPSB6bGliLlpfRklMVEVSRUQKKyAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPW1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiaXRzPXdiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtTGV2ZWw9bWVtTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT1zdHJhdGVneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpkaWN0PWIiIikKKyAgICAgICAgZG8gPSB6bGliLmRlY29tcHJlc3NvYmood2JpdHM9d2JpdHMsIHpkaWN0PWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY28uY29tcHJlc3MoZGF0YT1IQU1MRVRfU0NFTkUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRvLmRlY29tcHJlc3MoZGF0YT16bGliLmNvbXByZXNzKEhBTUxFVF9TQ0VORSkpCisgICAgICAgIHggPSBjby5jb21wcmVzcyhIQU1MRVRfU0NFTkUpICsgY28uZmx1c2goKQorICAgICAgICB5ID0gZG8uZGVjb21wcmVzcyh4LCBtYXhfbGVuZ3RoPWxlbihIQU1MRVRfU0NFTkUpKSArIGRvLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChIQU1MRVRfU0NFTkUsIHkpCisKICAgICBkZWYgdGVzdF9jb21wcmVzc29wdGlvbnMoc2VsZik6CiAgICAgICAgICMgc3BlY2lmeSBsb3RzIG9mIG9wdGlvbnMgdG8gY29tcHJlc3NvYmooKQogICAgICAgICBsZXZlbCA9IDIKQEAgLTI0OSwxMCArMjgwLDYgQEAKICAgICAgICAgeTIgPSBkY28uZmx1c2goKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEhBTUxFVF9TQ0VORSwgeTEgKyB5MikKIAotICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIHNob3VsZCBhbHNvIGJlIHN1cHBvcnRlZAotICAgICAgICB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLCBtZXRob2Q9bWV0aG9kLCB3Yml0cz13Yml0cywKLSAgICAgICAgICAgIG1lbUxldmVsPW1lbUxldmVsLCBzdHJhdGVneT1zdHJhdGVneSwgemRpY3Q9YiIiKQotCiAgICAgZGVmIHRlc3RfY29tcHJlc3NpbmNyZW1lbnRhbChzZWxmKToKICAgICAgICAgIyBjb21wcmVzcyBvYmplY3QgaW4gc3RlcHMsIGRlY29tcHJlc3Mgb2JqZWN0IGFzIG9uZS1zaG90CiAgICAgICAgIGRhdGEgPSBIQU1MRVRfU0NFTkUgKiAxMjgKZGlmZiAtLWdpdCBhL0xpYi90aHJlYWRpbmcucHkgYi9MaWIvdGhyZWFkaW5nLnB5CmluZGV4IDA2YjdiOWIuLjQ4MjlmZjQgMTAwNjQ0Ci0tLSBhL0xpYi90aHJlYWRpbmcucHkKKysrIGIvTGliL3RocmVhZGluZy5weQpAQCAtMjIsOSArMjIsMTEgQEAKICMgd2l0aCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSwgd2hpY2ggZG9lc24ndCBwcm92aWRlIHRoZSBvbGQKICMgSmF2YSBpbnNwaXJlZCBuYW1lcy4KIAotX19hbGxfXyA9IFsnYWN0aXZlX2NvdW50JywgJ0NvbmRpdGlvbicsICdjdXJyZW50X3RocmVhZCcsICdlbnVtZXJhdGUnLCAnRXZlbnQnLAotICAgICAgICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLCAnQmFycmllcicsCi0gICAgICAgICAgICdUaW1lcicsICdUaHJlYWRFcnJvcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQorX19hbGxfXyA9IFsnZ2V0X2lkZW50JywgJ2FjdGl2ZV9jb3VudCcsICdDb25kaXRpb24nLCAnY3VycmVudF90aHJlYWQnLAorICAgICAgICAgICAnZW51bWVyYXRlJywgJ21haW5fdGhyZWFkJywgJ1RJTUVPVVRfTUFYJywKKyAgICAgICAgICAgJ0V2ZW50JywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnVGhyZWFkJywKKyAgICAgICAgICAgJ0JhcnJpZXInLCAnQnJva2VuQmFycmllckVycm9yJywgJ1RpbWVyJywgJ1RocmVhZEVycm9yJywKKyAgICAgICAgICAgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCiAKICMgUmVuYW1lIHNvbWUgc3R1ZmYgc28gImZyb20gdGhyZWFkaW5nIGltcG9ydCAqIiBpcyBzYWZlCiBfc3RhcnRfbmV3X3RocmVhZCA9IF90aHJlYWQuc3RhcnRfbmV3X3RocmVhZApkaWZmIC0tZ2l0IGEvTGliL3RpbWVpdC5weSBiL0xpYi90aW1laXQucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAyZGU4OGY3Li4yNzcwZWZhCi0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtMjA3LDYgKzIwNywyNiBAQAogICAgICAgICAgICAgci5hcHBlbmQodCkKICAgICAgICAgcmV0dXJuIHIKIAorICAgIGRlZiBhdXRvcmFuZ2Uoc2VsZiwgY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIGxvb3BzIHNvIHRoYXQgdG90YWwgdGltZSA+PSAwLjIuCisKKyAgICAgICAgQ2FsbHMgdGhlIHRpbWVpdCBtZXRob2Qgd2l0aCAqbnVtYmVyKiBzZXQgdG8gc3VjY2Vzc2l2ZSBwb3dlcnMgb2YKKyAgICAgICAgdGVuICgxMCwgMTAwLCAxMDAwLCAuLi4pIHVwIHRvIGEgbWF4aW11bSBvZiBvbmUgYmlsbGlvbiwgdW50aWwKKyAgICAgICAgdGhlIHRpbWUgdGFrZW4gaXMgYXQgbGVhc3QgMC4yIHNlY29uZCwgb3IgdGhlIG1heGltdW0gaXMgcmVhY2hlZC4KKyAgICAgICAgUmV0dXJucyBgYChudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisKKyAgICAgICAgSWYgKmNhbGxiYWNrKiBpcyBnaXZlbiBhbmQgaXMgbm90IE5vbmUsIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgIGVhY2ggdHJpYWwgd2l0aCB0d28gYXJndW1lbnRzOiBgYGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbilgYC4KKyAgICAgICAgIiIiCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDEwKToKKyAgICAgICAgICAgIG51bWJlciA9IDEwKippCisgICAgICAgICAgICB0aW1lX3Rha2VuID0gc2VsZi50aW1laXQobnVtYmVyKQorICAgICAgICAgICAgaWYgY2FsbGJhY2s6CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVtYmVyLCB0aW1lX3Rha2VuKQorICAgICAgICAgICAgaWYgdGltZV90YWtlbiA+PSAwLjI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIChudW1iZXIsIHRpbWVfdGFrZW4pCisKIGRlZiB0aW1laXQoc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKICAgICAgICAgICAgbnVtYmVyPWRlZmF1bHRfbnVtYmVyLCBnbG9iYWxzPU5vbmUpOgogICAgICIiIkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBUaW1lciBvYmplY3QgYW5kIGNhbGwgdGltZWl0IG1ldGhvZC4iIiIKQEAgLTI5NSwxNyArMzE1LDE2IEBACiAgICAgdCA9IFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lcikKICAgICBpZiBudW1iZXIgPT0gMDoKICAgICAgICAgIyBkZXRlcm1pbmUgbnVtYmVyIHNvIHRoYXQgMC4yIDw9IHRvdGFsIHRpbWUgPCAyLjAKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgICAgICAgICAgbnVtYmVyID0gMTAqKmkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB4ID0gdC50aW1laXQobnVtYmVyKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHQucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgiJWQgbG9vcHMgLT4gJS4qZyBzZWNzIiAlIChudW1iZXIsIHByZWNpc2lvbiwgeCkpCi0gICAgICAgICAgICBpZiB4ID49IDAuMjoKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBjYWxsYmFjayA9IE5vbmUKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIGRlZiBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ7bnVtfSBsb29wcyAtPiB7c2Vjczoue3ByZWN9Z30gc2VjcyIKKyAgICAgICAgICAgICAgICBwcmludChtc2cuZm9ybWF0KG51bT1udW1iZXIsIHNlY3M9dGltZV90YWtlbiwgcHJlYz1wcmVjaXNpb24pKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBudW1iZXIsIF8gPSB0LmF1dG9yYW5nZShjYWxsYmFjaykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgdC5wcmludF9leGMoKQorICAgICAgICAgICAgcmV0dXJuIDEKICAgICB0cnk6CiAgICAgICAgIHIgPSB0LnJlcGVhdChyZXBlYXQsIG51bWJlcikKICAgICBleGNlcHQ6CkBAIC0zMTcsMjAgKzMzNiwyNiBAQAogICAgIHByaW50KCIlZCBsb29wcywiICUgbnVtYmVyLCBlbmQ9JyAnKQogICAgIHVzZWMgPSBiZXN0ICogMWU2IC8gbnVtYmVyCiAgICAgaWYgdGltZV91bml0IGlzIG5vdCBOb25lOgotICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyAlcyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VjL3VuaXRzW3RpbWVfdW5pdF0sIHRpbWVfdW5pdCkpCisgICAgICAgIHNjYWxlID0gdW5pdHNbdGltZV91bml0XQogICAgIGVsc2U6Ci0gICAgICAgIGlmIHVzZWMgPCAxMDAwOgotICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgdXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIHVzZWMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNlYyA9IHVzZWMgLyAxMDAwCi0gICAgICAgICAgICBpZiBtc2VjIDwgMTAwMDoKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBtc2VjIHBlciBsb29wIiAlIChyZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uLCBtc2VjKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VjID0gbXNlYyAvIDEwMDAKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwgc2VjKSkKKyAgICAgICAgc2NhbGVzID0gWyhzY2FsZSwgdW5pdCkgZm9yIHVuaXQsIHNjYWxlIGluIHVuaXRzLml0ZW1zKCldCisgICAgICAgIHNjYWxlcy5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgZm9yIHNjYWxlLCB0aW1lX3VuaXQgaW4gc2NhbGVzOgorICAgICAgICAgICAgaWYgdXNlYyA+PSBzY2FsZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnICVzIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlYy9zY2FsZSwgdGltZV91bml0KSkKKyAgICBiZXN0ID0gbWluKHIpCisgICAgdXNlYyA9IGJlc3QgKiAxZTYgLyBudW1iZXIKKyAgICB3b3JzdCA9IG1heChyKQorICAgIGlmIHdvcnN0ID49IGJlc3QgKiA0OgorICAgICAgICB1c2VjID0gd29yc3QgKiAxZTYgLyBudW1iZXIKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoCisgICAgICAgICAgICAiVGhlIHRlc3QgcmVzdWx0cyBhcmUgbGlrZWx5IHVucmVsaWFibGUuIFRoZSB3b3JzdFxuIgorICAgICAgICAgICAgInRpbWUgKCUuKmcgJXMpIHdhcyBtb3JlIHRoYW4gZm91ciB0aW1lcyBzbG93ZXIgdGhhbiB0aGUgYmVzdCB0aW1lLiIgJQorICAgICAgICAgICAgKHByZWNpc2lvbiwgdXNlYy9zY2FsZSwgdGltZV91bml0KSwKKyAgICAgICAgICAgICBVc2VyV2FybmluZywgJycsIDApCiAgICAgcmV0dXJuIE5vbmUKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggNTViZmI3Zi4uOTlhZDJhNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX19pbml0X18ucHkKKysrIGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKQEAgLTMwLDYgKzMwLDcgQEAKIHRrLm1haW5sb29wKCkKICIiIgogCitpbXBvcnQgZW51bQogaW1wb3J0IHN5cwogCiBpbXBvcnQgX3RraW50ZXIgIyBJZiB0aGlzIGZhaWxzIHlvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsKQEAgLTEzMiw2ICsxMzMsNTAgQEAKICAgICAgICAgZGljdFtrZXldID0gdmFsdWUKICAgICByZXR1cm4gZGljdAogCisKK2NsYXNzIEV2ZW50VHlwZShzdHIsIGVudW0uRW51bSk6CisgICAgS2V5UHJlc3MgPSAnMicKKyAgICBLZXkgPSBLZXlQcmVzcywKKyAgICBLZXlSZWxlYXNlID0gJzMnCisgICAgQnV0dG9uUHJlc3MgPSAnNCcKKyAgICBCdXR0b24gPSBCdXR0b25QcmVzcywKKyAgICBCdXR0b25SZWxlYXNlID0gJzUnCisgICAgTW90aW9uID0gJzYnCisgICAgRW50ZXIgPSAnNycKKyAgICBMZWF2ZSA9ICc4JworICAgIEZvY3VzSW4gPSAnOScKKyAgICBGb2N1c091dCA9ICcxMCcKKyAgICBLZXltYXAgPSAnMTEnICAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIEV4cG9zZSA9ICcxMicKKyAgICBHcmFwaGljc0V4cG9zZSA9ICcxMycgICAjIHVuZG9jdW1lbnRlZAorICAgIE5vRXhwb3NlID0gJzE0JyAgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgVmlzaWJpbGl0eSA9ICcxNScKKyAgICBDcmVhdGUgPSAnMTYnCisgICAgRGVzdHJveSA9ICcxNycKKyAgICBVbm1hcCA9ICcxOCcKKyAgICBNYXAgPSAnMTknCisgICAgTWFwUmVxdWVzdCA9ICcyMCcKKyAgICBSZXBhcmVudCA9ICcyMScKKyAgICBDb25maWd1cmUgPSAnMjInCisgICAgQ29uZmlndXJlUmVxdWVzdCA9ICcyMycKKyAgICBHcmF2aXR5ID0gJzI0JworICAgIFJlc2l6ZVJlcXVlc3QgPSAnMjUnCisgICAgQ2lyY3VsYXRlID0gJzI2JworICAgIENpcmN1bGF0ZVJlcXVlc3QgPSAnMjcnCisgICAgUHJvcGVydHkgPSAnMjgnCisgICAgU2VsZWN0aW9uQ2xlYXIgPSAnMjknICAgIyB1bmRvY3VtZW50ZWQKKyAgICBTZWxlY3Rpb25SZXF1ZXN0ID0gJzMwJyAjIHVuZG9jdW1lbnRlZAorICAgIFNlbGVjdGlvbiA9ICczMScgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgQ29sb3JtYXAgPSAnMzInCisgICAgQ2xpZW50TWVzc2FnZSA9ICczMycgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBNYXBwaW5nID0gJzM0JyAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIFZpcnR1YWxFdmVudCA9ICczNScsICAgICMgdW5kb2N1bWVudGVkCisgICAgQWN0aXZhdGUgPSAnMzYnLAorICAgIERlYWN0aXZhdGUgPSAnMzcnLAorICAgIE1vdXNlV2hlZWwgPSAnMzgnLAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisKIGNsYXNzIEV2ZW50OgogICAgICIiIkNvbnRhaW5lciBmb3IgdGhlIHByb3BlcnRpZXMgb2YgYW4gZXZlbnQuCiAKQEAgLTE3NCw3ICsyMTksNDMgQEAKICAgICB3aWRnZXQgLSB3aWRnZXQgaW4gd2hpY2ggdGhlIGV2ZW50IG9jY3VycmVkCiAgICAgZGVsdGEgLSBkZWx0YSBvZiB3aGVlbCBtb3ZlbWVudCAoTW91c2VXaGVlbCkKICAgICAiIiIKLSAgICBwYXNzCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBhdHRycyA9IHtrOiB2IGZvciBrLCB2IGluIHNlbGYuX19kaWN0X18uaXRlbXMoKSBpZiB2ICE9ICc/Pyd9CisgICAgICAgIGlmIG5vdCBzZWxmLmNoYXI6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ2NoYXInXQorICAgICAgICBlbGlmIHNlbGYuY2hhciAhPSAnPz8nOgorICAgICAgICAgICAgYXR0cnNbJ2NoYXInXSA9IHJlcHIoc2VsZi5jaGFyKQorICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCAnc2VuZF9ldmVudCcsIFRydWUpOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzZW5kX2V2ZW50J10KKyAgICAgICAgaWYgc2VsZi5zdGF0ZSA9PSAwOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzdGF0ZSddCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLnN0YXRlLCBpbnQpOgorICAgICAgICAgICAgc3RhdGUgPSBzZWxmLnN0YXRlCisgICAgICAgICAgICBtb2RzID0gKCdTaGlmdCcsICdMb2NrJywgJ0NvbnRyb2wnLAorICAgICAgICAgICAgICAgICAgICAnTW9kMScsICdNb2QyJywgJ01vZDMnLCAnTW9kNCcsICdNb2Q1JywKKyAgICAgICAgICAgICAgICAgICAgJ0J1dHRvbjEnLCAnQnV0dG9uMicsICdCdXR0b24zJywgJ0J1dHRvbjQnLCAnQnV0dG9uNScpCisgICAgICAgICAgICBzID0gW10KKyAgICAgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZShtb2RzKToKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSAmICgxIDw8IGkpOgorICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChuKQorICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZSAmIH4oKDE8PCBsZW4obW9kcykpIC0gMSkKKyAgICAgICAgICAgIGlmIHN0YXRlIG9yIG5vdCBzOgorICAgICAgICAgICAgICAgIHMuYXBwZW5kKGhleChzdGF0ZSkpCisgICAgICAgICAgICBhdHRyc1snc3RhdGUnXSA9ICd8Jy5qb2luKHMpCisgICAgICAgIGlmIHNlbGYuZGVsdGEgPT0gMDoKKyAgICAgICAgICAgIGRlbCBhdHRyc1snZGVsdGEnXQorICAgICAgICAjIHdpZGdldCB1c3VhbGx5IGlzIGtub3duCisgICAgICAgICMgc2VyaWFsIGFuZCB0aW1lIGFyZSBub3QgdmVyeSBpbnRlcmVzdGluZworICAgICAgICAjIGtleXN5bV9udW0gZHVwbGljYXRlcyBrZXlzeW0KKyAgICAgICAgIyB4X3Jvb3QgYW5kIHlfcm9vdCBtb3N0bHkgZHVwbGljYXRlIHggYW5kIHkKKyAgICAgICAga2V5cyA9ICgnc2VuZF9ldmVudCcsCisgICAgICAgICAgICAgICAgJ3N0YXRlJywgJ2tleXN5bScsICdrZXljb2RlJywgJ2NoYXInLAorICAgICAgICAgICAgICAgICdudW0nLCAnZGVsdGEnLCAnZm9jdXMnLAorICAgICAgICAgICAgICAgICd4JywgJ3knLCAnd2lkdGgnLCAnaGVpZ2h0JykKKyAgICAgICAgcmV0dXJuICc8JXMgZXZlbnQlcz4nICUgKAorICAgICAgICAgICAgc2VsZi50eXBlLAorICAgICAgICAgICAgJycuam9pbignICVzPSVzJyAlIChrLCBhdHRyc1trXSkgZm9yIGsgaW4ga2V5cyBpZiBrIGluIGF0dHJzKQorICAgICAgICApCiAKIF9zdXBwb3J0X2RlZmF1bHRfcm9vdCA9IDEKIF9kZWZhdWx0X3Jvb3QgPSBOb25lCkBAIC0yNjIsMTUgKzM0Myw4IEBACiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHZhbHVlIG9mIHZhcmlhYmxlLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpCi0gICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKLSAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgotICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KLSAgICAgICAgIiIiCisgICAgZGVmIF9yZWdpc3RlcihzZWxmLCBjYWxsYmFjayk6CiAgICAgICAgIGYgPSBDYWxsV3JhcHBlcihjYWxsYmFjaywgTm9uZSwgc2VsZi5fcm9vdCkuX19jYWxsX18KICAgICAgICAgY2JuYW1lID0gcmVwcihpZChmKSkKICAgICAgICAgdHJ5OgpAQCAtMjg1LDE4ICszNTksMzMgQEAKICAgICAgICAgaWYgc2VsZi5fdGNsQ29tbWFuZHMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzID0gW10KICAgICAgICAgc2VsZi5fdGNsQ29tbWFuZHMuYXBwZW5kKGNibmFtZSkKLSAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmFyaWFibGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCiAgICAgICAgIHJldHVybiBjYm5hbWUKLSAgICB0cmFjZSA9IHRyYWNlX3ZhcmlhYmxlCi0gICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKworICAgIGRlZiB0cmFjZV9hZGQoc2VsZiwgbW9kZSwgY2FsbGJhY2spOgorICAgICAgICAiIiJEZWZpbmUgYSB0cmFjZSBjYWxsYmFjayBmb3IgdGhlIHZhcmlhYmxlLgorCisgICAgICAgIE1vZGUgaXMgb25lIG9mICJyZWFkIiwgIndyaXRlIiwgInVuc2V0Iiwgb3IgYSBsaXN0IG9yIHR1cGxlIG9mCisgICAgICAgIHN1Y2ggc3RyaW5ncy4KKyAgICAgICAgQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSB2YXJpYWJsZSBpcworICAgICAgICByZWFkLCB3cml0dGVuIG9yIHVuc2V0LgorCisgICAgICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2suCisgICAgICAgICIiIgorICAgICAgICBjYm5hbWUgPSBzZWxmLl9yZWdpc3RlcihjYWxsYmFjaykKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgndHJhY2UnLCAnYWRkJywgJ3ZhcmlhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lLCBtb2RlLCAoY2JuYW1lLCkpCisgICAgICAgIHJldHVybiBjYm5hbWUKKworICAgIGRlZiB0cmFjZV9yZW1vdmUoc2VsZiwgbW9kZSwgY2JuYW1lKToKICAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKyAgICAgICAgTW9kZSBpcyBvbmUgb2YgInJlYWQiLCAid3JpdGUiLCAidW5zZXQiIG9yIGEgbGlzdCBvciB0dXBsZSBvZgorICAgICAgICBzdWNoIHN0cmluZ3MuICBNdXN0IGJlIHNhbWUgYXMgd2VyZSBzcGVjaWZpZWQgaW4gdHJhY2VfYWRkKCkuCisgICAgICAgIGNibmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV9hZGQoKS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCi0gICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCi0gICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX3ZpbmZvKCk6CisgICAgICAgIHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ3JlbW92ZScsICd2YXJpYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQorICAgICAgICBmb3IgbSwgY2EgaW4gc2VsZi50cmFjZV9pbmZvKCk6CiAgICAgICAgICAgICBpZiBzZWxmLl90ay5zcGxpdGxpc3QoY2EpWzBdID09IGNibmFtZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgpAQCAtMzA1LDEwICszOTQsNjQgQEAKICAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgIGRlZiB0cmFjZV92aW5mbyhzZWxmKToKKworICAgIGRlZiB0cmFjZV9pbmZvKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLiIiIgorICAgICAgICBzcGxpdGxpc3QgPSBzZWxmLl90ay5zcGxpdGxpc3QKKyAgICAgICAgcmV0dXJuIFsoc3BsaXRsaXN0KGspLCB2KSBmb3IgaywgdiBpbiBtYXAoc3BsaXRsaXN0LAorICAgICAgICAgICAgc3BsaXRsaXN0KHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ2luZm8nLCAndmFyaWFibGUnLCBzZWxmLl9uYW1lKSkpXQorCisgICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKKyAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgorICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCisKKyAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX2FkZCgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3JlZ2lzdGVyKGNhbGxiYWNrKQorICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2YXJpYWJsZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKKyAgICAgICAgcmV0dXJuIGNibmFtZQorCisgICAgdHJhY2UgPSB0cmFjZV92YXJpYWJsZQorCisgICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKyAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX3JlbW92ZSgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCisgICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX2luZm8oKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3RrLnNwbGl0bGlzdChjYSlbMF0gPT0gY2JuYW1lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl90ay5kZWxldGVjb21tYW5kKGNibmFtZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRyYWNlX3ZpbmZvKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd3JhcHMgYSBkZXByZWNhdGVkIFRjbCBtZXRob2QgdGhhdCB3aWxsCisgICAgICAgIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICBVc2UgdHJhY2VfaW5mbygpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCiAgICAgICAgIHJldHVybiBbc2VsZi5fdGsuc3BsaXRsaXN0KHgpIGZvciB4IGluIHNlbGYuX3RrLnNwbGl0bGlzdCgKICAgICAgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZpbmZvIiwgc2VsZi5fbmFtZSkpXQorCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICIiIkNvbXBhcmlzb24gZm9yIGVxdWFsaXR5ICg9PSkuCiAKQEAgLTQyNiw2ICs1NjksOSBAQAogCiAgICAgQmFzZSBjbGFzcyB3aGljaCBkZWZpbmVzIG1ldGhvZHMgY29tbW9uIGZvciBpbnRlcmlvciB3aWRnZXRzLiIiIgogCisgICAgIyB1c2VkIGZvciBnZW5lcmF0aW5nIGNoaWxkIHdpZGdldCBuYW1lcworICAgIF9sYXN0X2NoaWxkX2lkcyA9IE5vbmUKKwogICAgICMgWFhYIGZvbnQgY29tbWFuZD8KICAgICBfdGNsQ29tbWFuZHMgPSBOb25lCiAgICAgZGVmIGRlc3Ryb3koc2VsZik6CkBAIC00NzMsMTIgKzYxOSw2IEBACiAgICAgICAgIGRpc2FibGVkRm9yZWdyb3VuZCwgaW5zZXJ0QmFja2dyb3VuZCwgdHJvdWdoQ29sb3IuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgoJ3RrX3NldFBhbGV0dGUnLCkKICAgICAgICAgICAgICAgKyBfZmxhdHRlbihhcmdzKSArIF9mbGF0dGVuKGxpc3Qoa3cuaXRlbXMoKSkpKQotICAgIGRlZiB0a19tZW51QmFyKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiRG8gbm90IHVzZS4gTmVlZGVkIGluIFRrIDMuNiBhbmQgZWFybGllci4iIiIKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX21lbnVCYXIoKSBkb2VzIG5vdGhpbmcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjYnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIGRlZiB3YWl0X3ZhcmlhYmxlKHNlbGYsIG5hbWU9J1BZX1ZBUicpOgogICAgICAgICAiIiJXYWl0IHVudGlsIHRoZSB2YXJpYWJsZSBpcyBtb2RpZmllZC4KIApAQCAtODUwLDggKzk5MCw3IEBACiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2hlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19pZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGlkZW50aWZpZXIgSUQgZm9yIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2lkJywgc2VsZi5fdykpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi50ay5jYWxsKCd3aW5mbycsICdpZCcsIHNlbGYuX3cpLCAwKQogICAgIGRlZiB3aW5mb19pbnRlcnBzKHNlbGYsIGRpc3BsYXlvZj0wKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIGFsbCBUY2wgaW50ZXJwcmV0ZXJzIGZvciB0aGlzIGRpc3BsYXkuIiIiCiAgICAgICAgIGFyZ3MgPSAoJ3dpbmZvJywgJ2ludGVycHMnKSArIHNlbGYuX2Rpc3BsYXlvZihkaXNwbGF5b2YpCkBAIC05NzEsMTggKzExMTAsMTYgQEAKICAgICBkZWYgd2luZm9fdmlzdWFsaWQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgWCBpZGVudGlmaWVyIGZvciB0aGUgdmlzdWFsIGZvciB0aGlzIHdpZGdldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlzdWFsaWQnLCBzZWxmLl93KQotICAgIGRlZiB3aW5mb192aXN1YWxzYXZhaWxhYmxlKHNlbGYsIGluY2x1ZGVpZHM9MCk6CisgICAgZGVmIHdpbmZvX3Zpc3VhbHNhdmFpbGFibGUoc2VsZiwgaW5jbHVkZWlkcz1GYWxzZSk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHZpc3VhbHMgYXZhaWxhYmxlIGZvciB0aGUgc2NyZWVuCiAgICAgICAgIG9mIHRoaXMgd2lkZ2V0LgogCiAgICAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCBjb25zaXN0cyBvZiBhIHZpc3VhbCBuYW1lIChzZWUgd2luZm9fdmlzdWFsKSwgYQotICAgICAgICBkZXB0aCBhbmQgaWYgSU5DTFVERUlEUz0xIGlzIGdpdmVuIGFsc28gdGhlIFggaWRlbnRpZmllci4iIiIKLSAgICAgICAgZGF0YSA9IHNlbGYudGsuc3BsaXQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWlkcyBhbmQgJ2luY2x1ZGVpZHMnIG9yIE5vbmUpKQotICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICBkYXRhID0gW3NlbGYudGsuc3BsaXQoZGF0YSldCi0gICAgICAgIHJldHVybiBbc2VsZi5fX3dpbmZvX3BhcnNlaXRlbSh4KSBmb3IgeCBpbiAgZGF0YV0KKyAgICAgICAgZGVwdGggYW5kIGlmIGluY2x1ZGVpZHMgaXMgdHJ1ZSBpcyBnaXZlbiBhbHNvIHRoZSBYIGlkZW50aWZpZXIuIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlaWRzJyBpZiBpbmNsdWRlaWRzIGVsc2UgTm9uZSkKKyAgICAgICAgZGF0YSA9IFtzZWxmLnRrLnNwbGl0bGlzdCh4KSBmb3IgeCBpbiBzZWxmLnRrLnNwbGl0bGlzdChkYXRhKV0KKyAgICAgICAgcmV0dXJuIFtzZWxmLl9fd2luZm9fcGFyc2VpdGVtKHgpIGZvciB4IGluIGRhdGFdCiAgICAgZGVmIF9fd2luZm9fcGFyc2VpdGVtKHNlbGYsIHQpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKICAgICAgICAgcmV0dXJuIHRbOjFdICsgdHVwbGUobWFwKHNlbGYuX193aW5mb19nZXRpbnQsIHRbMTpdKSkKQEAgLTEyODMsNyArMTQyMCwxMCBAQAogICAgICAgICBleGNlcHQgVGNsRXJyb3I6IHBhc3MKICAgICAgICAgZS5rZXlzeW0gPSBLCiAgICAgICAgIGUua2V5c3ltX251bSA9IGdldGludF9ldmVudChOKQotICAgICAgICBlLnR5cGUgPSBUCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGUudHlwZSA9IEV2ZW50VHlwZShUKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGUudHlwZSA9IFQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZS53aWRnZXQgPSBzZWxmLl9uYW1ldG93aWRnZXQoVykKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtMTg5Myw5ICsyMDMzLDYgQEAKICAgICAgICAgaWYgdGNsX3ZlcnNpb24gIT0gX3RraW50ZXIuVENMX1ZFUlNJT046CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInRjbC5oIHZlcnNpb24gKCVzKSBkb2Vzbid0IG1hdGNoIGxpYnRjbC5hIHZlcnNpb24gKCVzKSIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKF90a2ludGVyLlRDTF9WRVJTSU9OLCB0Y2xfdmVyc2lvbikpCi0gICAgICAgIGlmIFRrVmVyc2lvbiA8IDQuMDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGsgNC4wIG9yIGhpZ2hlciBpcyByZXF1aXJlZDsgZm91bmQgVGsgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzdHIoVGtWZXJzaW9uKSkKICAgICAgICAgIyBDcmVhdGUgYW5kIHJlZ2lzdGVyIHRoZSB0a2Vycm9yIGFuZCBleGl0IGNvbW1hbmRzCiAgICAgICAgICMgV2UgbmVlZCB0byBpbmxpbmUgcGFydHMgb2YgX3JlZ2lzdGVyIGhlcmUsIF8gcmVnaXN0ZXIKICAgICAgICAgIyB3b3VsZCByZWdpc3RlciBkaWZmZXJlbnRseS1uYW1lZCBjb21tYW5kcy4KQEAgLTIxMTgsNyArMjI1NSwxNSBAQAogICAgICAgICAgICAgbmFtZSA9IGNuZlsnbmFtZSddCiAgICAgICAgICAgICBkZWwgY25mWyduYW1lJ10KICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gcmVwcihpZChzZWxmKSkKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXy5sb3dlcigpCisgICAgICAgICAgICBpZiBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkcyA9IHt9CisgICAgICAgICAgICBjb3VudCA9IG1hc3Rlci5fbGFzdF9jaGlsZF9pZHMuZ2V0KG5hbWUsIDApICsgMQorICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkc1tuYW1lXSA9IGNvdW50CisgICAgICAgICAgICBpZiBjb3VudCA9PSAxOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnYCVzJyAlIChuYW1lLCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdgJXMlZCcgJSAobmFtZSwgY291bnQpCiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgIGlmIG1hc3Rlci5fdz09Jy4nOgogICAgICAgICAgICAgc2VsZi5fdyA9ICcuJyArIG5hbWUKQEAgLTI3MTQsMTIgKzI4NTksNiBAQAogICAgIGRlZiB0a19wb3B1cChzZWxmLCB4LCB5LCBlbnRyeT0iIik6CiAgICAgICAgICIiIlBvc3QgdGhlIG1lbnUgYXQgcG9zaXRpb24gWCxZIHdpdGggZW50cnkgRU5UUlkuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgndGtfcG9wdXAnLCBzZWxmLl93LCB4LCB5LCBlbnRyeSkKLSAgICBkZWYgdGtfYmluZEZvclRyYXZlcnNhbChzZWxmKToKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX2JpbmRGb3JUcmF2ZXJzYWwoKSBkb2VzIG5vdGhpbmcgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSByZW1vdmVkIGluIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiQWN0aXZhdGUgZW50cnkgYXQgSU5ERVguIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnYWN0aXZhdGUnLCBpbmRleCkKQEAgLTMzNDIsOSArMzQ4MSw2IEBACiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgSW1hZ2UuX2xhc3RfaWQgKz0gMQogICAgICAgICAgICAgbmFtZSA9ICJweWltYWdlJXIiICUgKEltYWdlLl9sYXN0X2lkLCkgIyB0ayBpdHNlbGYgd291bGQgdXNlIGltYWdlPHg+Ci0gICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIGZvciBzeXN0ZW1zIHdoZXJlIGlkKHgpCi0gICAgICAgICAgICAjIGNhbiByZXR1cm4gYSBuZWdhdGl2ZSBudW1iZXIsIHN1Y2ggYXMgTGludXgvbTY4azoKLSAgICAgICAgICAgIGlmIG5hbWVbMF0gPT0gJy0nOiBuYW1lID0gJ18nICsgbmFtZVsxOl0KICAgICAgICAgaWYga3cgYW5kIGNuZjogY25mID0gX2NuZm1lcmdlKChjbmYsIGt3KSkKICAgICAgICAgZWxpZiBrdzogY25mID0ga3cKICAgICAgICAgb3B0aW9ucyA9ICgpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkKaW5kZXggZDI2ODhkYi4uMWU3NWNhZSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvY29tbW9uZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weQpAQCAtMTUsMTEgKzE1LDYgQEAKICAgICBjb21tYW5kICA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgKipvcHRpb25zKToKLQotICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhpcyBiZSBwbGFjZWQgb24gdGhlIG1vZHVsZSBsZXZlbCBpbnN0ZWFkPwotICAgICAgICBpZiBUa1ZlcnNpb24gPCA0LjI6Ci0gICAgICAgICAgICByYWlzZSBUY2xFcnJvcigidGhpcyBtb2R1bGUgcmVxdWlyZXMgVGsgNC4yIG9yIG5ld2VyIikKLQogICAgICAgICBzZWxmLm1hc3RlciAgPSBtYXN0ZXIKICAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBpZiBub3QgbWFzdGVyIGFuZCBvcHRpb25zLmdldCgncGFyZW50Jyk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9kaWFsb2cucHkKaW5kZXggYmUwODVhYi4uZjYxYzVmNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2RpYWxvZy5weQpAQCAtMywxMCArMyw3IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLWlmIFRrVmVyc2lvbiA8PSAzLjY6Ci0gICAgRElBTE9HX0lDT04gPSAnd2FybmluZycKLWVsc2U6Ci0gICAgRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJworRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJwogCiAKIGNsYXNzIERpYWxvZyhXaWRnZXQpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5IGIvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CmluZGV4IGRiZTVlODguLjMzZGM1NGEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKQEAgLTcsOCArNyw2IEBACiAiIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CmluZGV4IDg1ZWUyYzcuLjlkYzFlMzcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKQEAgLTEyLDYgKzEyLDE0IEBACiAgICAgICAgIGYgPSB0a2ludGVyLkZyYW1lKHQsIG5hbWU9J2NoaWxkJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnPHRraW50ZXIuRnJhbWUgb2JqZWN0IC50b3AuY2hpbGQ+JykKIAorICAgIGRlZiB0ZXN0X2dlbmVyYXRlZF9uYW1lcyhzZWxmKToKKyAgICAgICAgdCA9IHRraW50ZXIuVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBmID0gdGtpbnRlci5GcmFtZSh0KQorICAgICAgICBmMiA9IHRraW50ZXIuRnJhbWUodCkKKyAgICAgICAgYiA9IHRraW50ZXIuQnV0dG9uKGYyKQorICAgICAgICBmb3IgbmFtZSBpbiBzdHIoYikuc3BsaXQoJy4nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmFtZS5pc2lkZW50aWZpZXIoKSwgbXNnPXJlcHIobmFtZSkpCisKICAgICBkZWYgdGVzdF90a19zZXRQYWxldHRlKHNlbGYpOgogICAgICAgICByb290ID0gc2VsZi5yb290CiAgICAgICAgIHJvb3QudGtfc2V0UGFsZXR0ZSgnYmxhY2snKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQppbmRleCAxZjc0NDUzLi40NDg1ODE3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQpAQCAtODcsNyArODcsOCBAQAogICAgICAgICB2LnNldCgidmFsdWUiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodi5zaWRlX2VmZmVjdCkKIAotICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3RyYWNlX29sZChzZWxmKToKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCiAgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QpCiAgICAgICAgIHZuYW1lID0gc3RyKHYpCiAgICAgICAgIHRyYWNlID0gW10KQEAgLTEzNiw2ICsxMzcsNTUgQEAKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAndScpXSkKIAorICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290KQorICAgICAgICB2bmFtZSA9IHN0cih2KQorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiByZWFkX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCdyZWFkJywpICsgYXJncykKKyAgICAgICAgZGVmIHdyaXRlX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCd3cml0ZScsKSArIGFyZ3MpCisgICAgICAgIHRyMSA9IHYudHJhY2VfYWRkKCdyZWFkJywgcmVhZF90cmFjZXIpCisgICAgICAgIHRyMiA9IHYudHJhY2VfYWRkKFsnd3JpdGUnLCAndW5zZXQnXSwgd3JpdGVfdHJhY2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh2LnRyYWNlX2luZm8oKSksIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCdyZWFkJywpLCB0cjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoJ3dyaXRlJywgJ3Vuc2V0JyksIHRyMildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbXSkKKworICAgICAgICB2LnNldCgnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3JlYWQnLCB2bmFtZSwgJycsICdyZWFkJyldKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgaW5mbyA9IHNvcnRlZCh2LnRyYWNlX2luZm8oKSkKKyAgICAgICAgdi50cmFjZV9yZW1vdmUoJ3dyaXRlJywgdHIxKSAgIyBXcm9uZyBtb2RlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvcik6CisgICAgICAgICAgICB2LnRyYWNlX3JlbW92ZSgncmVhZCcsICdzcGFtJykgICMgV3JvbmcgY29tbWFuZCBuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCdyZWFkJywgdm5hbWUsICcnLCAncmVhZCcpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIHYudHJhY2VfcmVtb3ZlKCdyZWFkJywgdHIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudHJhY2VfaW5mbygpLCBbKCgnd3JpdGUnLCAndW5zZXQnKSwgdHIyKV0pCisgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgW10pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgd3JpdGVfdHJhY2VyCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICB2LnNldCgnZWdncycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgdgorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd1bnNldCcpXSkKKwogCiBjbGFzcyBUZXN0U3RyaW5nVmFyKFRlc3RCYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CmluZGV4IGM5MjRkNTUuLjgxYjUyZWEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKQEAgLTkxLDkgKzkxLDEwIEBACiAgICAgICAgIHdpZGdldCA9IHNlbGYuY3JlYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXRbJ3VzZSddLCAnJykKICAgICAgICAgcGFyZW50ID0gc2VsZi5jcmVhdGUoY29udGFpbmVyPVRydWUpCi0gICAgICAgIHdpZCA9IHBhcmVudC53aW5mb19pZCgpCi0gICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh3aWRnZXQyWyd1c2UnXSksIHdpZCkKKyAgICAgICAgd2lkID0gaGV4KHBhcmVudC53aW5mb19pZCgpKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3aWQ9d2lkKToKKyAgICAgICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXQyWyd1c2UnXSwgd2lkKQogCiAKIEBhZGRfc3RhbmRhcmRfb3B0aW9ucyhTdGFuZGFyZE9wdGlvbnNUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZnVuY3Rpb25zLnB5CmluZGV4IGM2OGE2NTAuLmExYjdjZGYgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weQpAQCAtMSw2ICsxLDUgQEAKICMgLSotIGVuY29kaW5nOiB1dGYtOCAtKi0KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgdHRrCiAKIGNsYXNzIE1vY2tUa0FwcDoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKaW5kZXggOGJkMjJkMC4uMjY3NjZhOCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKQEAgLTE0ODcsNiArMTQ4Nyw3IEBACiAKIAogICAgIGRlZiB0ZXN0X3NlbGVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR2LnNlbGVjdGlvbiwgJ3NwYW0nKQogICAgICAgICAjIGl0ZW0gJ25vbmUnIGRvZXNuJ3QgZXhpc3QKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvciwgc2VsZi50di5zZWxlY3Rpb25fc2V0LCAnbm9uZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IsIHNlbGYudHYuc2VsZWN0aW9uX2FkZCwgJ25vbmUnKQpAQCAtMTUwMCwyNSArMTUwMSwzMSBAQAogICAgICAgICBjMyA9IHNlbGYudHYuaW5zZXJ0KGl0ZW0xLCAnZW5kJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzIsKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBjMiwgaXRlbTIpKQogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoaXRlbTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgYzIsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoaXRlbTEsIGMxLCBjMiwgaXRlbTIpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZSgoaXRlbTEsIGMzKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKGl0ZW0xLCBjMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGMyLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZShjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShjMSwgYzMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShpdGVtMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKIAogICAgICAgICBzZWxmLnR2Lmluc2VydCgnJywgJ2VuZCcsIGlkPSd3aXRoIHNwYWNlcycpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgnd2l0aCBzcGFjZXMnKQpAQCAtMTUzNiw2ICsxNTQzLDQwIEBACiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChiJ2J5dGVzXHhlMlx4ODJceGFjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoJ2J5dGVzXHhlMlx4ODJceGFjJywpKQogCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKCkpCisKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKChpdGVtMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCisKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNyk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgJ0RlcHJlY2F0ZWQgQVBJIG9mIFRyZWV2aWV3LnNlbGVjdGlvbigpIHNob3VsZCBiZSByZW1vdmVkJykKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbignc2V0JywgKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ2FkZCcsIChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbigncmVtb3ZlJywgKGl0ZW0xLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ3RvZ2dsZScsIChjMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywgaXRlbTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGYudHYuc2VsZWN0aW9uKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZWN0aW9uLCAoYzMsIGl0ZW0yKSkKIAogICAgIGRlZiB0ZXN0X3NldChzZWxmKToKICAgICAgICAgc2VsZi50dlsnY29sdW1ucyddID0gWydBJywgJ0InXQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGl4LnB5IGIvTGliL3RraW50ZXIvdGl4LnB5CmluZGV4IDg5MTEzZmQuLjA0NDY1YWEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3RpeC5weQorKysgYi9MaWIvdGtpbnRlci90aXgucHkKQEAgLTMxLDEwICszMSw2IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLSMgV0FSTklORyAtIFRrVmVyc2lvbiBpcyBhIGxpbWl0ZWQgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcgotaWYgVGtWZXJzaW9uIDwgMy45OTk6Ci0gICAgcmFpc2UgSW1wb3J0RXJyb3IoIlRoaXMgdmVyc2lvbiBvZiBUaXgucHkgcmVxdWlyZXMgVGsgNC4wIG9yIGhpZ2hlciIpCi0KIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawogCiAjIFNvbWUgbW9yZSBjb25zdGFudHMgKGZvciBjb25zaXN0ZW5jeSB3aXRoIFRraW50ZXIpCkBAIC0xMTExLDcgKzExMDcsNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xMTU3LDcgKzExNTMsNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xNTgwLDggKzE1NzYsNyBAQAogICAgICAgICAnJydSZXR1cm5zIGEgbGlzdCBvZiBpdGVtcyB3aG9zZSBzdGF0dXMgbWF0Y2hlcyBzdGF0dXMuIElmIHN0YXR1cyBpcwogICAgICBub3Qgc3BlY2lmaWVkLCB0aGUgbGlzdCBvZiBpdGVtcyBpbiB0aGUgIm9uIiBzdGF0dXMgd2lsbCBiZSByZXR1cm5lZC4KICAgICAgTW9kZSBjYW4gYmUgb24sIG9mZiwgZGVmYXVsdCcnJwotICAgICAgICBjID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2dldHNlbGVjdGlvbicsIG1vZGUpKQotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3QoYykKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0c2VsZWN0aW9uJywgbW9kZSkpCiAKICAgICBkZWYgZ2V0c3RhdHVzKHNlbGYsIGVudHJ5cGF0aCk6CiAgICAgICAgICcnJ1JldHVybnMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVudHJ5UGF0aC4nJycKQEAgLTE5MDIsNyArMTg5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCisgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLl9vcHRpb25zKHt9LCBrdykpKQogCiAgICAgZGVmIHNpemVfcm93KHNlbGYsIGluZGV4LCAqKmt3KToKQEAgLTE5MjcsNyArMTkyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSByb3cgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXQoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgICAgICAgICBzZWxmLCAnc2l6ZScsICdyb3cnLCBpbmRleCwgKnNlbGYuX29wdGlvbnMoe30sIGt3KSkpCiAKICAgICBkZWYgdW5zZXQoc2VsZiwgeCwgeSk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90dGsucHkgYi9MaWIvdGtpbnRlci90dGsucHkKaW5kZXggZjRhNmQ4Yy4uYzQ3NGU2MCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdHRrLnB5CisrKyBiL0xpYi90a2ludGVyL3R0ay5weQpAQCAtMjgsNiArMjgsOCBAQAogaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZsYXR0ZW4sIF9qb2luLCBfc3RyaW5naWZ5LCBfc3BsaXRkaWN0CiAKK19zZW50aW5lbCA9IG9iamVjdCgpCisKICMgVmVyaWZ5IGlmIFRrIGlzIG5ldyBlbm91Z2ggdG8gbm90IG5lZWQgdGhlIFRpbGUgcGFja2FnZQogX1JFUVVJUkVfVElMRSA9IFRydWUgaWYgdGtpbnRlci5Ua1ZlcnNpb24gPCA4LjUgZWxzZSBGYWxzZQogCkBAIC0zODEsNyArMzgzLDkgQEAKICAgICAgICAgYSBzZXF1ZW5jZSBpZGVudGlmeWluZyB0aGUgdmFsdWUgZm9yIHRoYXQgb3B0aW9uLiIiIgogICAgICAgICBpZiBxdWVyeV9vcHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBrd1txdWVyeV9vcHRdID0gTm9uZQotICAgICAgICByZXR1cm4gX3ZhbF9vcl9kaWN0KHNlbGYudGssIGt3LCBzZWxmLl9uYW1lLCAiY29uZmlndXJlIiwgc3R5bGUpCisgICAgICAgIHJlc3VsdCA9IF92YWxfb3JfZGljdChzZWxmLnRrLCBrdywgc2VsZi5fbmFtZSwgImNvbmZpZ3VyZSIsIHN0eWxlKQorICAgICAgICBpZiByZXN1bHQgb3IgcXVlcnlfb3B0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKICAgICBkZWYgbWFwKHNlbGYsIHN0eWxlLCBxdWVyeV9vcHQ9Tm9uZSwgKiprdyk6CkBAIC00NjYsMTIgKzQ3MCwxNCBAQAogCiAgICAgZGVmIGVsZW1lbnRfbmFtZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGxpc3Qgb2YgZWxlbWVudHMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCB0aGVtZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKQorICAgICAgICByZXR1cm4gdHVwbGUobi5sc3RyaXAoJy0nKSBmb3IgbiBpbiBzZWxmLnRrLnNwbGl0bGlzdCgKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKSkKIAogCiAgICAgZGVmIGVsZW1lbnRfb3B0aW9ucyhzZWxmLCBlbGVtZW50bmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiBlbGVtZW50bmFtZSdzIG9wdGlvbnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkKKyAgICAgICAgcmV0dXJuIHR1cGxlKG8ubHN0cmlwKCctJykgZm9yIG8gaW4gc2VsZi50ay5zcGxpdGxpc3QoCisgICAgICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkpCiAKIAogICAgIGRlZiB0aGVtZV9jcmVhdGUoc2VsZiwgdGhlbWVuYW1lLCBwYXJlbnQ9Tm9uZSwgc2V0dGluZ3M9Tm9uZSk6CkBAIC0xMzkwLDMxICsxMzk2LDUzIEBACiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VlIiwgaXRlbSkKIAogCi0gICAgZGVmIHNlbGVjdGlvbihzZWxmLCBzZWxvcD1Ob25lLCBpdGVtcz1Ob25lKToKLSAgICAgICAgIiIiSWYgc2Vsb3AgaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBzZWxlY3RlZCBpdGVtcy4iIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtcywgKHN0ciwgYnl0ZXMpKToKLSAgICAgICAgICAgIGl0ZW1zID0gKGl0ZW1zLCkKKyAgICBkZWYgc2VsZWN0aW9uKHNlbGYsIHNlbG9wPV9zZW50aW5lbCwgaXRlbXM9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHR1cGxlIG9mIHNlbGVjdGVkIGl0ZW1zLiIiIgorICAgICAgICBpZiBzZWxvcCBpcyBfc2VudGluZWw6CisgICAgICAgICAgICBzZWxvcCA9IE5vbmUKKyAgICAgICAgZWxpZiBzZWxvcCBpcyBOb25lOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICJUaGUgc2Vsb3A9Tm9uZSBhcmd1bWVudCBvZiBzZWxlY3Rpb24oKSBpcyBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43IiwKKyAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCisgICAgICAgIGVsaWYgc2Vsb3AgaW4gKCdzZXQnLCAnYWRkJywgJ3JlbW92ZScsICd0b2dnbGUnKToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAiVGhlIHNlbG9wIGFyZ3VtZW50IG9mIHNlbGVjdGlvbigpIGlzIGRlcHJlY2F0ZWQgIgorICAgICAgICAgICAgICAgICJhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjcsICIKKyAgICAgICAgICAgICAgICAidXNlIHNlbGVjdGlvbl8lcygpIGluc3RlYWQiICUgKHNlbG9wLCksCisgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdVbnN1cHBvcnRlZCBvcGVyYXRpb24nKQogICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICJzZWxlY3Rpb24iLCBzZWxvcCwgaXRlbXMpKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3NldChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIml0ZW1zIGJlY29tZXMgdGhlIG5ldyBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJzZXQiLCBpdGVtcykKKyAgICBkZWYgX3NlbGVjdGlvbihzZWxmLCBzZWxvcCwgaXRlbXMpOgorICAgICAgICBpZiBsZW4oaXRlbXMpID09IDEgYW5kIGlzaW5zdGFuY2UoaXRlbXNbMF0sICh0dXBsZSwgbGlzdCkpOgorICAgICAgICAgICAgaXRlbXMgPSBpdGVtc1swXQorCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VsZWN0aW9uIiwgc2Vsb3AsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIkFkZCBpdGVtcyB0byB0aGUgc2VsZWN0aW9uLiIiIgotICAgICAgICBzZWxmLnNlbGVjdGlvbigiYWRkIiwgaXRlbXMpCisgICAgZGVmIHNlbGVjdGlvbl9zZXQoc2VsZiwgKml0ZW1zKToKKyAgICAgICAgIiIiVGhlIHNwZWNpZmllZCBpdGVtcyBiZWNvbWVzIHRoZSBuZXcgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInNldCIsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIlJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJyZW1vdmUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJBZGQgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgdG8gdGhlIHNlbGVjdGlvbi4iIiIKKyAgICAgICAgc2VsZi5fc2VsZWN0aW9uKCJhZGQiLCBpdGVtcykKIAogCi0gICAgZGVmIHNlbGVjdGlvbl90b2dnbGUoc2VsZiwgaXRlbXMpOgotICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIGl0ZW0gaW4gaXRlbXMuIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJ0b2dnbGUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJSZW1vdmUgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgZnJvbSB0aGUgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInJlbW92ZSIsIGl0ZW1zKQorCisKKyAgICBkZWYgc2VsZWN0aW9uX3RvZ2dsZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIHNwZWNpZmllZCBpdGVtLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInRvZ2dsZSIsIGl0ZW1zKQogCiAKICAgICBkZWYgc2V0KHNlbGYsIGl0ZW0sIGNvbHVtbj1Ob25lLCB2YWx1ZT1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi90b2tlbml6ZS5weSBiL0xpYi90b2tlbml6ZS5weQppbmRleCBiMWQwYzgzLi44MjVhYTkwIDEwMDY0NAotLS0gYS9MaWIvdG9rZW5pemUucHkKKysrIGIvTGliL3Rva2VuaXplLnB5CkBAIC0yOSw2ICsyOSw3IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIGZyb20gaW8gaW1wb3J0IFRleHRJT1dyYXBwZXIKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgoraW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGZyb20gdG9rZW4gaW1wb3J0ICoKQEAgLTExOSwxOSArMTIwLDQxIEBACiBJZ25vcmUgPSBXaGl0ZXNwYWNlICsgYW55KHInXFxccj9cbicgKyBXaGl0ZXNwYWNlKSArIG1heWJlKENvbW1lbnQpCiBOYW1lID0gcidcdysnCiAKLUhleG51bWJlciA9IHInMFt4WF1bMC05YS1mQS1GXSsnCi1CaW5udW1iZXIgPSByJzBbYkJdWzAxXSsnCi1PY3RudW1iZXIgPSByJzBbb09dWzAtN10rJwotRGVjbnVtYmVyID0gcicoPzowK3xbMS05XVswLTldKiknCitIZXhudW1iZXIgPSByJzBbeFhdKD86Xz9bMC05YS1mQS1GXSkrJworQmlubnVtYmVyID0gcicwW2JCXSg/Ol8/WzAxXSkrJworT2N0bnVtYmVyID0gcicwW29PXSg/Ol8/WzAtN10pKycKK0RlY251bWJlciA9IHInKD86MCg/Ol8/MCkqfFsxLTldKD86Xz9bMC05XSkqKScKIEludG51bWJlciA9IGdyb3VwKEhleG51bWJlciwgQmlubnVtYmVyLCBPY3RudW1iZXIsIERlY251bWJlcikKLUV4cG9uZW50ID0gcidbZUVdWy0rXT9bMC05XSsnCi1Qb2ludGZsb2F0ID0gZ3JvdXAocidbMC05XStcLlswLTldKicsIHInXC5bMC05XSsnKSArIG1heWJlKEV4cG9uZW50KQotRXhwZmxvYXQgPSByJ1swLTldKycgKyBFeHBvbmVudAorRXhwb25lbnQgPSByJ1tlRV1bLStdP1swLTldKD86Xz9bMC05XSkqJworUG9pbnRmbG9hdCA9IGdyb3VwKHInWzAtOV0oPzpfP1swLTldKSpcLig/OlswLTldKD86Xz9bMC05XSkqKT8nLAorICAgICAgICAgICAgICAgICAgIHInXC5bMC05XSg/Ol8/WzAtOV0pKicpICsgbWF5YmUoRXhwb25lbnQpCitFeHBmbG9hdCA9IHInWzAtOV0oPzpfP1swLTldKSonICsgRXhwb25lbnQKIEZsb2F0bnVtYmVyID0gZ3JvdXAoUG9pbnRmbG9hdCwgRXhwZmxvYXQpCi1JbWFnbnVtYmVyID0gZ3JvdXAocidbMC05XStbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQorSW1hZ251bWJlciA9IGdyb3VwKHInWzAtOV0oPzpfP1swLTldKSpbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQogTnVtYmVyID0gZ3JvdXAoSW1hZ251bWJlciwgRmxvYXRudW1iZXIsIEludG51bWJlcikKIAotU3RyaW5nUHJlZml4ID0gcicoPzpbYkJdW3JSXT98W3JSXVtiQl0/fFt1VV0pPycKKyMgUmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcsIHBsdXMgYWxsIG9mIHRoZSB2YWxpZCBzdHJpbmcgcHJlZml4ZXMuCitkZWYgX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICAjIFRoZSB2YWxpZCBzdHJpbmcgcHJlZml4ZXMuIE9ubHkgY29udGFpbiB0aGUgbG93ZXIgY2FzZSB2ZXJzaW9ucywKKyAgICAjICBhbmQgZG9uJ3QgY29udGFpbiBhbnkgcGVybXVhdGlvbnMgKGluY2x1ZGUgJ2ZyJywgYnV0IG5vdAorICAgICMgICdyZicpLiBUaGUgdmFyaW91cyBwZXJtdXRhdGlvbnMgd2lsbCBiZSBnZW5lcmF0ZWQuCisgICAgX3ZhbGlkX3N0cmluZ19wcmVmaXhlcyA9IFsnYicsICdyJywgJ3UnLCAnZicsICdicicsICdmciddCisgICAgIyBpZiB3ZSBhZGQgYmluYXJ5IGYtc3RyaW5ncywgYWRkOiBbJ2ZiJywgJ2ZiciddCisgICAgcmVzdWx0ID0gc2V0KFsnJ10pCisgICAgZm9yIHByZWZpeCBpbiBfdmFsaWRfc3RyaW5nX3ByZWZpeGVzOgorICAgICAgICBmb3IgdCBpbiBfaXRlcnRvb2xzLnBlcm11dGF0aW9ucyhwcmVmaXgpOgorICAgICAgICAgICAgIyBjcmVhdGUgYSBsaXN0IHdpdGggdXBwZXIgYW5kIGxvd2VyIHZlcnNpb25zIG9mIGVhY2gKKyAgICAgICAgICAgICMgIGNoYXJhY3RlcgorICAgICAgICAgICAgZm9yIHUgaW4gX2l0ZXJ0b29scy5wcm9kdWN0KCpbKGMsIGMudXBwZXIoKSkgZm9yIGMgaW4gdF0pOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoJycuam9pbih1KSkKKyAgICByZXR1cm4gcmVzdWx0CisKK2RlZiBfY29tcGlsZShleHByKToKKyAgICByZXR1cm4gcmUuY29tcGlsZShleHByLCByZS5VTklDT0RFKQorCisjIE5vdGUgdGhhdCBzaW5jZSBfYWxsX3N0cmluZ19wcmVmaXhlcyBpbmNsdWRlcyB0aGUgZW1wdHkgc3RyaW5nLAorIyAgU3RyaW5nUHJlZml4IGNhbiBiZSB0aGUgZW1wdHkgc3RyaW5nIChtYWtpbmcgaXQgb3B0aW9uYWwpLgorU3RyaW5nUHJlZml4ID0gZ3JvdXAoKl9hbGxfc3RyaW5nX3ByZWZpeGVzKCkpCiAKICMgVGFpbCBlbmQgb2YgJyBzdHJpbmcuCiBTaW5nbGUgPSByIlteJ1xcXSooPzpcXC5bXidcXF0qKSonIgpAQCAtMTY5LDUwICsxOTIsMjUgQEAKIFBzZXVkb0V4dHJhcyA9IGdyb3VwKHInXFxccj9cbnxcWicsIENvbW1lbnQsIFRyaXBsZSkKIFBzZXVkb1Rva2VuID0gV2hpdGVzcGFjZSArIGdyb3VwKFBzZXVkb0V4dHJhcywgTnVtYmVyLCBGdW5ueSwgQ29udFN0ciwgTmFtZSkKIAotZGVmIF9jb21waWxlKGV4cHIpOgotICAgIHJldHVybiByZS5jb21waWxlKGV4cHIsIHJlLlVOSUNPREUpCisjIEZvciBhIGdpdmVuIHN0cmluZyBwcmVmaXggcGx1cyBxdW90ZXMsIGVuZHBhdHMgbWFwcyBpdCB0byBhIHJlZ2V4CisjICB0byBtYXRjaCB0aGUgcmVtYWluZGVyIG9mIHRoYXQgc3RyaW5nLiBfcHJlZml4IGNhbiBiZSBlbXB0eSwgZm9yCisjICBhIG5vcm1hbCBzaW5nbGUgb3IgdHJpcGxlIHF1b3RlZCBzdHJpbmcgKHdpdGggbm8gcHJlZml4KS4KK2VuZHBhdHMgPSB7fQorZm9yIF9wcmVmaXggaW4gX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICBlbmRwYXRzW19wcmVmaXggKyAiJyJdID0gU2luZ2xlCisgICAgZW5kcGF0c1tfcHJlZml4ICsgJyInXSA9IERvdWJsZQorICAgIGVuZHBhdHNbX3ByZWZpeCArICInJyciXSA9IFNpbmdsZTMKKyAgICBlbmRwYXRzW19wcmVmaXggKyAnIiIiJ10gPSBEb3VibGUzCiAKLWVuZHBhdHMgPSB7IiciOiBTaW5nbGUsICciJzogRG91YmxlLAotICAgICAgICAgICAiJycnIjogU2luZ2xlMywgJyIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJyJycnIjogU2luZ2xlMywgJ3IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYicnJyI6IFNpbmdsZTMsICdiIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlInJyciOiBTaW5nbGUzLCAnUiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJCJycnIjogU2luZ2xlMywgJ0IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYnInJyciOiBTaW5nbGUzLCAnYnIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYlInJyciOiBTaW5nbGUzLCAnYlIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiQnInJyciOiBTaW5nbGUzLCAnQnIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiQlInJyciOiBTaW5nbGUzLCAnQlIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAicmInJyciOiBTaW5nbGUzLCAncmIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUmInJyciOiBTaW5nbGUzLCAnUmIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAickInJyciOiBTaW5nbGUzLCAnckIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUkInJyciOiBTaW5nbGUzLCAnUkIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAidScnJyI6IFNpbmdsZTMsICd1IiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlUnJyciOiBTaW5nbGUzLCAnVSIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICdyJzogTm9uZSwgJ1InOiBOb25lLCAnYic6IE5vbmUsICdCJzogTm9uZSwKLSAgICAgICAgICAgJ3UnOiBOb25lLCAnVSc6IE5vbmV9Ci0KLXRyaXBsZV9xdW90ZWQgPSB7fQotZm9yIHQgaW4gKCInJyciLCAnIiIiJywKLSAgICAgICAgICAicicnJyIsICdyIiIiJywgIlInJyciLCAnUiIiIicsCi0gICAgICAgICAgImInJyciLCAnYiIiIicsICJCJycnIiwgJ0IiIiInLAotICAgICAgICAgICJicicnJyIsICdiciIiIicsICJCcicnJyIsICdCciIiIicsCi0gICAgICAgICAgImJSJycnIiwgJ2JSIiIiJywgIkJSJycnIiwgJ0JSIiIiJywKLSAgICAgICAgICAicmInJyciLCAncmIiIiInLCAickInJyciLCAnckIiIiInLAotICAgICAgICAgICJSYicnJyIsICdSYiIiIicsICJSQicnJyIsICdSQiIiIicsCi0gICAgICAgICAgInUnJyciLCAndSIiIicsICJVJycnIiwgJ1UiIiInLAotICAgICAgICAgICk6Ci0gICAgdHJpcGxlX3F1b3RlZFt0XSA9IHQKLXNpbmdsZV9xdW90ZWQgPSB7fQotZm9yIHQgaW4gKCInIiwgJyInLAotICAgICAgICAgICJyJyIsICdyIicsICJSJyIsICdSIicsCi0gICAgICAgICAgImInIiwgJ2IiJywgIkInIiwgJ0IiJywKLSAgICAgICAgICAiYnInIiwgJ2JyIicsICJCciciLCAnQnIiJywKLSAgICAgICAgICAiYlInIiwgJ2JSIicsICJCUiciLCAnQlIiJyAsCi0gICAgICAgICAgInJiJyIsICdyYiInLCAickInIiwgJ3JCIicsCi0gICAgICAgICAgIlJiJyIsICdSYiInLCAiUkInIiwgJ1JCIicgLAotICAgICAgICAgICJ1JyIsICd1IicsICJVJyIsICdVIicsCi0gICAgICAgICAgKToKLSAgICBzaW5nbGVfcXVvdGVkW3RdID0gdAorIyBBIHNldCBvZiBhbGwgb2YgdGhlIHNpbmdsZSBhbmQgdHJpcGxlIHF1b3RlZCBzdHJpbmcgcHJlZml4ZXMsCisjICBpbmNsdWRpbmcgdGhlIG9wZW5pbmcgcXVvdGVzLgorc2luZ2xlX3F1b3RlZCA9IHNldCgpCit0cmlwbGVfcXVvdGVkID0gc2V0KCkKK2ZvciB0IGluIF9hbGxfc3RyaW5nX3ByZWZpeGVzKCk6CisgICAgZm9yIHUgaW4gKHQgKyAnIicsIHQgKyAiJyIpOgorICAgICAgICBzaW5nbGVfcXVvdGVkLmFkZCh1KQorICAgIGZvciB1IGluICh0ICsgJyIiIicsIHQgKyAiJycnIik6CisgICAgICAgIHRyaXBsZV9xdW90ZWQuYWRkKHUpCiAKIHRhYnNpemUgPSA4CiAKQEAgLTYyNiw2ICs2MjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKENPTU1FTlQsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorCiAgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiB0cmlwbGVfcXVvdGVkOgogICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1t0b2tlbl0pCiAgICAgICAgICAgICAgICAgICAgIGVuZG1hdGNoID0gZW5kcHJvZy5tYXRjaChsaW5lLCBwb3MpCkBAIC02MzgsMTkgKzYzNywzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciA9IGxpbmVbc3RhcnQ6XQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGxpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiBzaW5nbGVfcXVvdGVkIG9yIFwKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjJdIGluIHNpbmdsZV9xdW90ZWQgb3IgXAotICAgICAgICAgICAgICAgICAgICB0b2tlbls6M10gaW4gc2luZ2xlX3F1b3RlZDoKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgdXAgdG8gdGhlIGZpcnN0IDMgY2hhcnMgb2YgdGhlIHRva2VuIHRvIHNlZSBpZgorICAgICAgICAgICAgICAgICMgIHRoZXkncmUgaW4gdGhlIHNpbmdsZV9xdW90ZWQgc2V0LiBJZiBzbywgdGhleSBzdGFydAorICAgICAgICAgICAgICAgICMgIGEgc3RyaW5nLgorICAgICAgICAgICAgICAgICMgV2UncmUgdXNpbmcgdGhlIGZpcnN0IDMsIGJlY2F1c2Ugd2UncmUgbG9va2luZyBmb3IKKyAgICAgICAgICAgICAgICAjICAicmInIiAoZm9yIGV4YW1wbGUpIGF0IHRoZSBzdGFydCBvZiB0aGUgdG9rZW4uIElmCisgICAgICAgICAgICAgICAgIyAgd2Ugc3dpdGNoIHRvIGxvbmdlciBwcmVmaXhlcywgdGhpcyBuZWVkcyB0byBiZQorICAgICAgICAgICAgICAgICMgIGFkanVzdGVkLgorICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IGluaXRpYWwgPT0gdG9rZW5bOjFdLgorICAgICAgICAgICAgICAgICMgQWxzbyBub3RlIHRoYXQgc2luZ2xlIHF1b3RlIGNoZWNraW5nIG11c3QgY29tZSBhZnRlcgorICAgICAgICAgICAgICAgICMgIHRyaXBsZSBxdW90ZSBjaGVja2luZyAoYWJvdmUpLgorICAgICAgICAgICAgICAgIGVsaWYgKGluaXRpYWwgaW4gc2luZ2xlX3F1b3RlZCBvcgorICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzoyXSBpbiBzaW5nbGVfcXVvdGVkIG9yCisgICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjNdIGluIHNpbmdsZV9xdW90ZWQpOgogICAgICAgICAgICAgICAgICAgICBpZiB0b2tlblstMV0gPT0gJ1xuJzogICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnN0YXJ0ID0gKGxudW0sIHN0YXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbaW5pdGlhbF0gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzW3Rva2VuWzFdXSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMl1dKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBBZ2FpbiwgdXNpbmcgdGhlIGZpcnN0IDMgY2hhcnMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjICB0b2tlbi4gVGhpcyBpcyBsb29raW5nIGZvciB0aGUgbWF0Y2hpbmcgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAjICByZWdleCBmb3IgdGhlIGNvcnJlY3QgdHlwZSBvZiBxdW90ZQorICAgICAgICAgICAgICAgICAgICAgICAgIyAgY2hhcmFjdGVyLiBTbyBpdCdzIHJlYWxseSBsb29raW5nIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgIyAgZW5kcGF0c1siJyJdIG9yIGVuZHBhdHNbJyInXSwgYnkgdHJ5aW5nIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAjICBza2lwIHN0cmluZyBwcmVmaXggY2hhcmFjdGVycywgaWYgYW55LgorICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHMuZ2V0KGluaXRpYWwpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0cy5nZXQodG9rZW5bMV0pIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0cy5nZXQodG9rZW5bMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciwgbmVlZGNvbnQgPSBsaW5lW3N0YXJ0Ol0sIDEKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhTVFJJTkcsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorCiAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsLmlzaWRlbnRpZmllcigpOiAgICAgICAgICAgICAgICMgb3JkaW5hcnkgbmFtZQogICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiBpbiAoJ2FzeW5jJywgJ2F3YWl0Jyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhc3luY19kZWY6CmRpZmYgLS1naXQgYS9MaWIvdHJhY2UucHkgYi9MaWIvdHJhY2UucHkKaW5kZXggZjEwODI2Ni4uYWUxNTQ2MSAxMDA3NTUKLS0tIGEvTGliL3RyYWNlLnB5CisrKyBiL0xpYi90cmFjZS5weQpAQCAtNDgsNiArNDgsNyBAQAogICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIGNvdmVyZGlyPSIvdG1wIikKICIiIgogX19hbGxfXyA9IFsnVHJhY2UnLCAnQ292ZXJhZ2VSZXN1bHRzJ10KK2ltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKQEAgLTU4LDcgKzU5LDYgQEAKIGltcG9ydCBnYwogaW1wb3J0IGRpcwogaW1wb3J0IHBpY2tsZQotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybiBhcyBfd2FybgogZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKIAogdHJ5OgpAQCAtNzcsNTEgKzc3LDYgQEAKICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCiAgICAgICAgIHRocmVhZGluZy5zZXR0cmFjZShOb25lKQogCi1kZWYgX3VzYWdlKG91dGZpbGUpOgotICAgIG91dGZpbGUud3JpdGUoIiIiVXNhZ2U6ICVzIFtPUFRJT05TXSA8ZmlsZT4gW0FSR1NdCi0KLU1ldGEtb3B0aW9uczoKLS0taGVscCAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCB0aGVuIGV4aXQuCi0tLXZlcnNpb24gICAgICAgICAgICAgT3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24gdGhlbiBleGl0LgotCi1PdGhlcndpc2UsIGV4YWN0bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgb3B0aW9ucyBtdXN0IGJlIGdpdmVuOgotLXQsIC0tdHJhY2UgICAgICAgICAgIFByaW50IGVhY2ggbGluZSB0byBzeXMuc3Rkb3V0IGJlZm9yZSBpdCBpcyBleGVjdXRlZC4KLS1jLCAtLWNvdW50ICAgICAgICAgICBDb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbGluZSBpcyBleGVjdXRlZAotICAgICAgICAgICAgICAgICAgICAgIGFuZCB3cml0ZSB0aGUgY291bnRzIHRvIDxtb2R1bGU+LmNvdmVyIGZvciBlYWNoCi0gICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIGV4ZWN1dGVkLCBpbiB0aGUgbW9kdWxlJ3MgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgIFNlZSBhbHNvIGAtLWNvdmVyZGlyJywgYC0tZmlsZScsIGAtLW5vLXJlcG9ydCcgYmVsb3cuCi0tbCwgLS1saXN0ZnVuY3MgICAgICAgS2VlcCB0cmFjayBvZiB3aGljaCBmdW5jdGlvbnMgYXJlIGV4ZWN1dGVkIGF0IGxlYXN0Ci0gICAgICAgICAgICAgICAgICAgICAgb25jZSBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgdG8gc3lzLnN0ZG91dCBhZnRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtIGV4aXRzLgotLVQsIC0tdHJhY2tjYWxscyAgICAgIEtlZXAgdHJhY2sgb2YgY2FsbGVyL2NhbGxlZCBwYWlycyBhbmQgd3JpdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLgotLXIsIC0tcmVwb3J0ICAgICAgICAgIEdlbmVyYXRlIGEgcmVwb3J0IGZyb20gYSBjb3VudHMgZmlsZTsgZG8gbm90IGV4ZWN1dGUKLSAgICAgICAgICAgICAgICAgICAgICBhbnkgY29kZS4gIGAtLWZpbGUnIG11c3Qgc3BlY2lmeSB0aGUgcmVzdWx0cyBmaWxlIHRvCi0gICAgICAgICAgICAgICAgICAgICAgcmVhZCwgd2hpY2ggbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBpbiBhIHByZXZpb3VzIHJ1bgotICAgICAgICAgICAgICAgICAgICAgIHdpdGggYC0tY291bnQgLS1maWxlPUZJTEUnLgotCi1Nb2RpZmllcnM6Ci0tZiwgLS1maWxlPTxmaWxlPiAgICAgRmlsZSB0byBhY2N1bXVsYXRlIGNvdW50cyBvdmVyIHNldmVyYWwgcnVucy4KLS1SLCAtLW5vLXJlcG9ydCAgICAgICBEbyBub3QgZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIHJlcG9ydCBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICBVc2VmdWwgaWYgeW91IHdhbnQgdG8gYWNjdW11bGF0ZSBvdmVyIHNldmVyYWwgcnVucy4KLS1DLCAtLWNvdmVyZGlyPTxkaXI+ICBEaXJlY3Rvcnkgd2hlcmUgdGhlIHJlcG9ydCBmaWxlcy4gIFRoZSBjb3ZlcmFnZQotICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydCBmb3IgPHBhY2thZ2U+Ljxtb2R1bGU+IGlzIHdyaXR0ZW4gdG8gZmlsZQotICAgICAgICAgICAgICAgICAgICAgIDxkaXI+LzxwYWNrYWdlPi88bW9kdWxlPi5jb3Zlci4KLS1tLCAtLW1pc3NpbmcgICAgICAgICBBbm5vdGF0ZSBleGVjdXRhYmxlIGxpbmVzIHRoYXQgd2VyZSBub3QgZXhlY3V0ZWQKLSAgICAgICAgICAgICAgICAgICAgICB3aXRoICc+Pj4+Pj4gJy4KLS1zLCAtLXN1bW1hcnkgICAgICAgICBXcml0ZSBhIGJyaWVmIHN1bW1hcnkgb24gc3Rkb3V0IGZvciBlYWNoIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgKENhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLWNvdW50IG9yIC0tcmVwb3J0LikKLS1nLCAtLXRpbWluZyAgICAgICAgICBQcmVmaXggZWFjaCBsaW5lIHdpdGggdGhlIHRpbWUgc2luY2UgdGhlIHByb2dyYW0gc3RhcnRlZC4KLSAgICAgICAgICAgICAgICAgICAgICBPbmx5IHVzZWQgd2hpbGUgdHJhY2luZy4KLQotRmlsdGVycywgbWF5IGJlIHJlcGVhdGVkIG11bHRpcGxlIHRpbWVzOgotLS1pZ25vcmUtbW9kdWxlPTxtb2Q+IElnbm9yZSB0aGUgZ2l2ZW4gbW9kdWxlKHMpIGFuZCBpdHMgc3VibW9kdWxlcwotICAgICAgICAgICAgICAgICAgICAgIChpZiBpdCBpcyBhIHBhY2thZ2UpLiAgQWNjZXB0cyBjb21tYSBzZXBhcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBsaXN0IG9mIG1vZHVsZSBuYW1lcwotLS1pZ25vcmUtZGlyPTxkaXI+ICAgIElnbm9yZSBmaWxlcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IChtdWx0aXBsZQotICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGNhbiBiZSBqb2luZWQgYnkgb3MucGF0aHNlcCkuCi0iIiIgJSBzeXMuYXJndlswXSkKLQogUFJBR01BX05PQ09WRVIgPSAiI3ByYWdtYSBOTyBDT1ZFUiIKIAogIyBTaW1wbGUgcnggdG8gZmluZCBsaW5lcyB3aXRoIG5vIGNvZGUuCkBAIC0yNjUsNyArMjIwLDEzIEBACiAKICAgICBkZWYgd3JpdGVfcmVzdWx0cyhzZWxmLCBzaG93X21pc3Npbmc9VHJ1ZSwgc3VtbWFyeT1GYWxzZSwgY292ZXJkaXI9Tm9uZSk6CiAgICAgICAgICIiIgotICAgICAgICBAcGFyYW0gY292ZXJkaXIKKyAgICAgICAgV3JpdGUgdGhlIGNvdmVyYWdlIHJlc3VsdHMuCisKKyAgICAgICAgOnBhcmFtIHNob3dfbWlzc2luZzogU2hvdyBsaW5lcyB0aGF0IGhhZCBubyBoaXRzLgorICAgICAgICA6cGFyYW0gc3VtbWFyeTogSW5jbHVkZSBjb3ZlcmFnZSBzdW1tYXJ5IHBlciBtb2R1bGUuCisgICAgICAgIDpwYXJhbSBjb3ZlcmRpcjogSWYgTm9uZSwgdGhlIHJlc3VsdHMgb2YgZWFjaCBtb2R1bGUgYXJlIHBsYWNlZCBpbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIG90aGVyd2lzZSBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5jYWxsZWRmdW5jczoKICAgICAgICAgICAgIHByaW50KCkKQEAgLTY0NywyMTAgKzYwOCwxMzUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWRmdW5jcz1zZWxmLl9jYWxsZWRmdW5jcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXJzPXNlbGYuX2NhbGxlcnMpCiAKLWRlZiBfZXJyX2V4aXQobXNnKToKLSAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoc3lzLmFyZ3ZbMF0sIG1zZykpCi0gICAgc3lzLmV4aXQoMSkKK2RlZiBtYWluKCk6CiAKLWRlZiBtYWluKGFyZ3Y9Tm9uZSk6Ci0gICAgaW1wb3J0IGdldG9wdAorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSd0cmFjZSAyLjAnKQogCi0gICAgaWYgYXJndiBpcyBOb25lOgotICAgICAgICBhcmd2ID0gc3lzLmFyZ3YKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNYWluIG9wdGlvbnMnLAorICAgICAgICAgICAgJ09uZSBvZiB0aGVzZSAob3IgLS1yZXBvcnQpIG11c3QgYmUgZ2l2ZW4nKQorCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb3VudCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdDb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbGluZSBpcyBleGVjdXRlZCBhbmQgd3JpdGUgJworICAgICAgICAgICAgICAgICAndGhlIGNvdW50cyB0byA8bW9kdWxlPi5jb3ZlciBmb3IgZWFjaCBtb2R1bGUgZXhlY3V0ZWQsIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtb2R1bGVcJ3MgZGlyZWN0b3J5LiBTZWUgYWxzbyAtLWNvdmVyZGlyLCAtLWZpbGUsICcKKyAgICAgICAgICAgICAgICAgJy0tbm8tcmVwb3J0IGJlbG93LicpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10cmFjZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdQcmludCBlYWNoIGxpbmUgdG8gc3lzLnN0ZG91dCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1sJywgJy0tbGlzdGZ1bmNzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0tlZXAgdHJhY2sgb2Ygd2hpY2ggZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBhdCBsZWFzdCBvbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLiAnCisgICAgICAgICAgICAgICAgICdDYW5ub3QgYmUgc3BlY2lmaWVkIGFsb25nc2lkZSAtLXRyYWNlIG9yIC0tY291bnQuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctVCcsICctLXRyYWNrY2FsbHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nS2VlcCB0cmFjayBvZiBjYWxsZXIvY2FsbGVkIHBhaXJzIGFuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byAnCisgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLicpCisKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNb2RpZmllcnMnKQorCisgICAgX2dycCA9IGdycC5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBfZ3JwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yZXBvcnQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nR2VuZXJhdGUgYSByZXBvcnQgZnJvbSBhIGNvdW50cyBmaWxlOyBkb2VzIG5vdCBleGVjdXRlIGFueSAnCisgICAgICAgICAgICAgICAgICdjb2RlLiAtLWZpbGUgbXVzdCBzcGVjaWZ5IHRoZSByZXN1bHRzIGZpbGUgdG8gcmVhZCwgd2hpY2ggJworICAgICAgICAgICAgICAgICAnbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBpbiBhIHByZXZpb3VzIHJ1biB3aXRoIC0tY291bnQgJworICAgICAgICAgICAgICAgICAnLS1maWxlPUZJTEUnKQorICAgIF9ncnAuYWRkX2FyZ3VtZW50KCctUicsICctLW5vLXJlcG9ydCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdEbyBub3QgZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIHJlcG9ydCBmaWxlcy4gJworICAgICAgICAgICAgICAgICAnVXNlZnVsIGlmIHlvdSB3YW50IHRvIGFjY3VtdWxhdGUgb3ZlciBzZXZlcmFsIHJ1bnMuJykKKworICAgIGdycC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZScsCisgICAgICAgICAgICBoZWxwPSdGaWxlIHRvIGFjY3VtdWxhdGUgY291bnRzIG92ZXIgc2V2ZXJhbCBydW5zJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctQycsICctLWNvdmVyZGlyJywKKyAgICAgICAgICAgIGhlbHA9J0RpcmVjdG9yeSB3aGVyZSB0aGUgcmVwb3J0IGZpbGVzIGdvLiBUaGUgY292ZXJhZ2UgcmVwb3J0ICcKKyAgICAgICAgICAgICAgICAgJ2ZvciA8cGFja2FnZT4uPG1vZHVsZT4gd2lsbCBiZSB3cml0dGVuIHRvIGZpbGUgJworICAgICAgICAgICAgICAgICAnPGRpcj4vPHBhY2thZ2U+Lzxtb2R1bGU+LmNvdmVyJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctbScsICctLW1pc3NpbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nQW5ub3RhdGUgZXhlY3V0YWJsZSBsaW5lcyB0aGF0IHdlcmUgbm90IGV4ZWN1dGVkIHdpdGggJworICAgICAgICAgICAgICAgICAnIj4+Pj4+PiAiJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctcycsICctLXN1bW1hcnknLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nV3JpdGUgYSBicmllZiBzdW1tYXJ5IGZvciBlYWNoIGZpbGUgdG8gc3lzLnN0ZG91dC4gJworICAgICAgICAgICAgICAgICAnQ2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tY291bnQgb3IgLS1yZXBvcnQnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1nJywgJy0tdGltaW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J1ByZWZpeCBlYWNoIGxpbmUgd2l0aCB0aGUgdGltZSBzaW5jZSB0aGUgcHJvZ3JhbSBzdGFydGVkLiAnCisgICAgICAgICAgICAgICAgICdPbmx5IHVzZWQgd2hpbGUgdHJhY2luZycpCisKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdGaWx0ZXJzJywKKyAgICAgICAgICAgICdDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1tb2R1bGUnLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICBoZWxwPSdJZ25vcmUgdGhlIGdpdmVuIG1vZHVsZShzKSBhbmQgaXRzIHN1Ym1vZHVsZXMnCisgICAgICAgICAgICAgICAgICcoaWYgaXQgaXMgYSBwYWNrYWdlKS4gQWNjZXB0cyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUgbmFtZXMuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1kaXInLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICBoZWxwPSdJZ25vcmUgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSAnCisgICAgICAgICAgICAgICAgICcobXVsdGlwbGUgZGlyZWN0b3JpZXMgY2FuIGJlIGpvaW5lZCBieSBvcy5wYXRoc2VwKS4nKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZmlsZW5hbWUnLCBuYXJncz0nPycsCisgICAgICAgICAgICBoZWxwPSdmaWxlIHRvIHJ1biBhcyBtYWluIHByb2dyYW0nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2FyZ3VtZW50cycsIG5hcmdzPWFyZ3BhcnNlLlJFTUFJTkRFUiwKKyAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyB0byB0aGUgcHJvZ3JhbScpCisKKyAgICBvcHRzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgb3B0cy5pZ25vcmVfZGlyOgorICAgICAgICByZWxfcGF0aCA9ICdsaWInLCAncHl0aG9uezAubWFqb3J9LnswLm1pbm9yfScuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pCisgICAgICAgIF9wcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAqcmVsX3BhdGgpCisgICAgICAgIF9leGVjX3ByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgKnJlbF9wYXRoKQorCisgICAgZGVmIHBhcnNlX2lnbm9yZV9kaXIocyk6CisgICAgICAgIHMgPSBvcy5wYXRoLmV4cGFuZHVzZXIob3MucGF0aC5leHBhbmR2YXJzKHMpKQorICAgICAgICBzID0gcy5yZXBsYWNlKCckcHJlZml4JywgX3ByZWZpeCkucmVwbGFjZSgnJGV4ZWNfcHJlZml4JywgX2V4ZWNfcHJlZml4KQorICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChzKQorCisgICAgb3B0cy5pZ25vcmVfbW9kdWxlID0gW21vZC5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIG9wdHMuaWdub3JlX21vZHVsZSBmb3IgbW9kIGluIGkuc3BsaXQoJywnKV0KKyAgICBvcHRzLmlnbm9yZV9kaXIgPSBbcGFyc2VfaWdub3JlX2RpcihzKQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBvcHRzLmlnbm9yZV9kaXIgZm9yIHMgaW4gaS5zcGxpdChvcy5wYXRoc2VwKV0KKworICAgIGlmIG9wdHMucmVwb3J0OgorICAgICAgICBpZiBub3Qgb3B0cy5maWxlOgorICAgICAgICAgICAgcGFyc2VyLmVycm9yKCctci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnKQorICAgICAgICByZXN1bHRzID0gQ292ZXJhZ2VSZXN1bHRzKGluZmlsZT1vcHRzLmZpbGUsIG91dGZpbGU9b3B0cy5maWxlKQorICAgICAgICByZXR1cm4gcmVzdWx0cy53cml0ZV9yZXN1bHRzKG9wdHMubWlzc2luZywgb3B0cy5zdW1tYXJ5LCBvcHRzLmNvdmVyZGlyKQorCisgICAgaWYgbm90IGFueShbb3B0cy50cmFjZSwgb3B0cy5jb3VudCwgb3B0cy5saXN0ZnVuY3MsIG9wdHMudHJhY2tjYWxsc10pOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ211c3Qgc3BlY2lmeSBvbmUgb2YgLS10cmFjZSwgLS1jb3VudCwgLS1yZXBvcnQsICcKKyAgICAgICAgICAgICAgICAgICAgICctLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJykKKworICAgIGlmIG9wdHMubGlzdGZ1bmNzIGFuZCAob3B0cy5jb3VudCBvciBvcHRzLnRyYWNlKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdjYW5ub3Qgc3BlY2lmeSBib3RoIC0tbGlzdGZ1bmNzIGFuZCAoLS10cmFjZSBvciAtLWNvdW50KScpCisKKyAgICBpZiBvcHRzLnN1bW1hcnkgYW5kIG5vdCBvcHRzLmNvdW50OgorICAgICAgICBwYXJzZXIuZXJyb3IoJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcpCisKKyAgICBpZiBvcHRzLmZpbGVuYW1lIGlzIE5vbmU6CisgICAgICAgIHBhcnNlci5lcnJvcignZmlsZW5hbWUgaXMgbWlzc2luZzogcmVxdWlyZWQgd2l0aCB0aGUgbWFpbiBvcHRpb25zJykKKworICAgIHN5cy5hcmd2ID0gb3B0cy5maWxlbmFtZSwgKm9wdHMuYXJndW1lbnRzCisgICAgc3lzLnBhdGhbMF0gPSBvcy5wYXRoLmRpcm5hbWUob3B0cy5maWxlbmFtZSkKKworICAgIHQgPSBUcmFjZShvcHRzLmNvdW50LCBvcHRzLnRyYWNlLCBjb3VudGZ1bmNzPW9wdHMubGlzdGZ1bmNzLAorICAgICAgICAgICAgICBjb3VudGNhbGxlcnM9b3B0cy50cmFja2NhbGxzLCBpZ25vcmVtb2RzPW9wdHMuaWdub3JlX21vZHVsZSwKKyAgICAgICAgICAgICAgaWdub3JlZGlycz1vcHRzLmlnbm9yZV9kaXIsIGluZmlsZT1vcHRzLmZpbGUsCisgICAgICAgICAgICAgIG91dGZpbGU9b3B0cy5maWxlLCB0aW1pbmc9b3B0cy50aW1pbmcpCiAgICAgdHJ5OgotICAgICAgICBvcHRzLCBwcm9nX2FyZ3YgPSBnZXRvcHQuZ2V0b3B0KGFyZ3ZbMTpdLCAidGNyUmY6ZDptc0M6bFRnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImhlbHAiLCAidmVyc2lvbiIsICJ0cmFjZSIsICJjb3VudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBvcnQiLCAibm8tcmVwb3J0IiwgInN1bW1hcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZT0iLCAibWlzc2luZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZ25vcmUtbW9kdWxlPSIsICJpZ25vcmUtZGlyPSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3ZlcmRpcj0iLCAibGlzdGZ1bmNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNrY2FsbHMiLCAidGltaW5nIl0pCisgICAgICAgIHdpdGggb3BlbihvcHRzLmZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGZwLnJlYWQoKSwgb3B0cy5maWxlbmFtZSwgJ2V4ZWMnKQorICAgICAgICAjIHRyeSB0byBlbXVsYXRlIF9fbWFpbl9fIG5hbWVzcGFjZSBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGdsb2JzID0geworICAgICAgICAgICAgJ19fZmlsZV9fJzogb3B0cy5maWxlbmFtZSwKKyAgICAgICAgICAgICdfX25hbWVfXyc6ICdfX21haW5fXycsCisgICAgICAgICAgICAnX19wYWNrYWdlX18nOiBOb25lLAorICAgICAgICAgICAgJ19fY2FjaGVkX18nOiBOb25lLAorICAgICAgICB9CisgICAgICAgIHQucnVuY3R4KGNvZGUsIGdsb2JzLCBnbG9icykKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgIHN5cy5leGl0KCJDYW5ub3QgcnVuIGZpbGUgJXIgYmVjYXVzZTogJXMiICUgKHN5cy5hcmd2WzBdLCBlcnIpKQorICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgorICAgICAgICBwYXNzCiAKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKHN5cy5hcmd2WzBdLCBtc2cpKQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAlIHN5cy5hcmd2WzBdKQotICAgICAgICBzeXMuZXhpdCgxKQorICAgIHJlc3VsdHMgPSB0LnJlc3VsdHMoKQogCi0gICAgdHJhY2UgPSAwCi0gICAgY291bnQgPSAwCi0gICAgcmVwb3J0ID0gMAotICAgIG5vX3JlcG9ydCA9IDAKLSAgICBjb3VudHNfZmlsZSA9IE5vbmUKLSAgICBtaXNzaW5nID0gMAotICAgIGlnbm9yZV9tb2R1bGVzID0gW10KLSAgICBpZ25vcmVfZGlycyA9IFtdCi0gICAgY292ZXJkaXIgPSBOb25lCi0gICAgc3VtbWFyeSA9IDAKLSAgICBsaXN0ZnVuY3MgPSBGYWxzZQotICAgIGNvdW50Y2FsbGVycyA9IEZhbHNlCi0gICAgdGltaW5nID0gRmFsc2UKLQotICAgIGZvciBvcHQsIHZhbCBpbiBvcHRzOgotICAgICAgICBpZiBvcHQgPT0gIi0taGVscCI6Ci0gICAgICAgICAgICBfdXNhZ2Uoc3lzLnN0ZG91dCkKLSAgICAgICAgICAgIHN5cy5leGl0KDApCi0KLSAgICAgICAgaWYgb3B0ID09ICItLXZlcnNpb24iOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgidHJhY2UgMi4wXG4iKQotICAgICAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgICAgICBpZiBvcHQgPT0gIi1UIiBvciBvcHQgPT0gIi0tdHJhY2tjYWxscyI6Ci0gICAgICAgICAgICBjb3VudGNhbGxlcnMgPSBUcnVlCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLWwiIG9yIG9wdCA9PSAiLS1saXN0ZnVuY3MiOgotICAgICAgICAgICAgbGlzdGZ1bmNzID0gVHJ1ZQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1nIiBvciBvcHQgPT0gIi0tdGltaW5nIjoKLSAgICAgICAgICAgIHRpbWluZyA9IFRydWUKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItdCIgb3Igb3B0ID09ICItLXRyYWNlIjoKLSAgICAgICAgICAgIHRyYWNlID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1jIiBvciBvcHQgPT0gIi0tY291bnQiOgotICAgICAgICAgICAgY291bnQgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLXIiIG9yIG9wdCA9PSAiLS1yZXBvcnQiOgotICAgICAgICAgICAgcmVwb3J0ID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1SIiBvciBvcHQgPT0gIi0tbm8tcmVwb3J0IjoKLSAgICAgICAgICAgIG5vX3JlcG9ydCA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItZiIgb3Igb3B0ID09ICItLWZpbGUiOgotICAgICAgICAgICAgY291bnRzX2ZpbGUgPSB2YWwKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItbSIgb3Igb3B0ID09ICItLW1pc3NpbmciOgotICAgICAgICAgICAgbWlzc2luZyA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItQyIgb3Igb3B0ID09ICItLWNvdmVyZGlyIjoKLSAgICAgICAgICAgIGNvdmVyZGlyID0gdmFsCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLXMiIG9yIG9wdCA9PSAiLS1zdW1tYXJ5IjoKLSAgICAgICAgICAgIHN1bW1hcnkgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLS1pZ25vcmUtbW9kdWxlIjoKLSAgICAgICAgICAgIGZvciBtb2QgaW4gdmFsLnNwbGl0KCIsIik6Ci0gICAgICAgICAgICAgICAgaWdub3JlX21vZHVsZXMuYXBwZW5kKG1vZC5zdHJpcCgpKQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi0taWdub3JlLWRpciI6Ci0gICAgICAgICAgICBmb3IgcyBpbiB2YWwuc3BsaXQob3MucGF0aHNlcCk6Ci0gICAgICAgICAgICAgICAgcyA9IG9zLnBhdGguZXhwYW5kdmFycyhzKQotICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKLQotICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRwcmVmaXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgImxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRleGVjX3ByZWZpeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICJsaWIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQotICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBhc3NlcnQgMCwgIlNob3VsZCBuZXZlciBnZXQgaGVyZSIKLQotICAgIGlmIGxpc3RmdW5jcyBhbmQgKGNvdW50IG9yIHRyYWNlKToKLSAgICAgICAgX2Vycl9leGl0KCJjYW5ub3Qgc3BlY2lmeSBib3RoIC0tbGlzdGZ1bmNzIGFuZCAoLS10cmFjZSBvciAtLWNvdW50KSIpCi0KLSAgICBpZiBub3QgKGNvdW50IG9yIHRyYWNlIG9yIHJlcG9ydCBvciBsaXN0ZnVuY3Mgb3IgY291bnRjYWxsZXJzKToKLSAgICAgICAgX2Vycl9leGl0KCJtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAiCi0gICAgICAgICAgICAgICAgICAiLS1saXN0ZnVuY3MsIG9yIC0tdHJhY2tjYWxscyIpCi0KLSAgICBpZiByZXBvcnQgYW5kIG5vX3JlcG9ydDoKLSAgICAgICAgX2Vycl9leGl0KCJjYW5ub3Qgc3BlY2lmeSBib3RoIC0tcmVwb3J0IGFuZCAtLW5vLXJlcG9ydCIpCi0KLSAgICBpZiByZXBvcnQgYW5kIG5vdCBjb3VudHNfZmlsZToKLSAgICAgICAgX2Vycl9leGl0KCItLXJlcG9ydCByZXF1aXJlcyBhIC0tZmlsZSIpCi0KLSAgICBpZiBub19yZXBvcnQgYW5kIGxlbihwcm9nX2FyZ3YpID09IDA6Ci0gICAgICAgIF9lcnJfZXhpdCgibWlzc2luZyBuYW1lIG9mIGZpbGUgdG8gcnVuIikKLQotICAgICMgZXZlcnl0aGluZyBpcyByZWFkeQotICAgIGlmIHJlcG9ydDoKLSAgICAgICAgcmVzdWx0cyA9IENvdmVyYWdlUmVzdWx0cyhpbmZpbGU9Y291bnRzX2ZpbGUsIG91dGZpbGU9Y291bnRzX2ZpbGUpCi0gICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhtaXNzaW5nLCBzdW1tYXJ5PXN1bW1hcnksIGNvdmVyZGlyPWNvdmVyZGlyKQotICAgIGVsc2U6Ci0gICAgICAgIHN5cy5hcmd2ID0gcHJvZ19hcmd2Ci0gICAgICAgIHByb2duYW1lID0gcHJvZ19hcmd2WzBdCi0gICAgICAgIHN5cy5wYXRoWzBdID0gb3MucGF0aC5zcGxpdChwcm9nbmFtZSlbMF0KLQotICAgICAgICB0ID0gVHJhY2UoY291bnQsIHRyYWNlLCBjb3VudGZ1bmNzPWxpc3RmdW5jcywKLSAgICAgICAgICAgICAgICAgIGNvdW50Y2FsbGVycz1jb3VudGNhbGxlcnMsIGlnbm9yZW1vZHM9aWdub3JlX21vZHVsZXMsCi0gICAgICAgICAgICAgICAgICBpZ25vcmVkaXJzPWlnbm9yZV9kaXJzLCBpbmZpbGU9Y291bnRzX2ZpbGUsCi0gICAgICAgICAgICAgICAgICBvdXRmaWxlPWNvdW50c19maWxlLCB0aW1pbmc9dGltaW5nKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocHJvZ25hbWUpIGFzIGZwOgotICAgICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGZwLnJlYWQoKSwgcHJvZ25hbWUsICdleGVjJykKLSAgICAgICAgICAgICMgdHJ5IHRvIGVtdWxhdGUgX19tYWluX18gbmFtZXNwYWNlIGFzIG11Y2ggYXMgcG9zc2libGUKLSAgICAgICAgICAgIGdsb2JzID0gewotICAgICAgICAgICAgICAgICdfX2ZpbGVfXyc6IHByb2duYW1lLAotICAgICAgICAgICAgICAgICdfX25hbWVfXyc6ICdfX21haW5fXycsCi0gICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogTm9uZSwKLSAgICAgICAgICAgICAgICAnX19jYWNoZWRfXyc6IE5vbmUsCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0LnJ1bmN0eChjb2RlLCBnbG9icywgZ2xvYnMpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgIF9lcnJfZXhpdCgiQ2Fubm90IHJ1biBmaWxlICVyIGJlY2F1c2U6ICVzIiAlIChzeXMuYXJndlswXSwgZXJyKSkKLSAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmVzdWx0cyA9IHQucmVzdWx0cygpCi0KLSAgICAgICAgaWYgbm90IG5vX3JlcG9ydDoKLSAgICAgICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhtaXNzaW5nLCBzdW1tYXJ5PXN1bW1hcnksIGNvdmVyZGlyPWNvdmVyZGlyKQotCi0jICBEZXByZWNhdGVkIEFQSQotZGVmIHVzYWdlKG91dGZpbGUpOgotICAgIF93YXJuKCJUaGUgdHJhY2UudXNhZ2UoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICBfdXNhZ2Uob3V0ZmlsZSkKLQotY2xhc3MgSWdub3JlKF9JZ25vcmUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGVzPU5vbmUsIGRpcnM9Tm9uZSk6Ci0gICAgICAgIF93YXJuKCJUaGUgY2xhc3MgdHJhY2UuSWdub3JlIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgX0lnbm9yZS5fX2luaXRfXyhzZWxmLCBtb2R1bGVzLCBkaXJzKQotCi1kZWYgbW9kbmFtZShwYXRoKToKLSAgICBfd2FybigiVGhlIHRyYWNlLm1vZG5hbWUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX21vZG5hbWUocGF0aCkKLQotZGVmIGZ1bGxtb2RuYW1lKHBhdGgpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZnVsbG1vZG5hbWUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2Z1bGxtb2RuYW1lKHBhdGgpCi0KLWRlZiBmaW5kX2xpbmVzX2Zyb21fY29kZShjb2RlLCBzdHJzKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfbGluZXNfZnJvbV9jb2RlKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX2xpbmVzX2Zyb21fY29kZShjb2RlLCBzdHJzKQotCi1kZWYgZmluZF9saW5lcyhjb2RlLCBzdHJzKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfbGluZXMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfbGluZXMoY29kZSwgc3RycykKLQotZGVmIGZpbmRfc3RyaW5ncyhmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5maW5kX3N0cmluZ3MoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfc3RyaW5ncyhmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSkKLQotZGVmIGZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKGZpbGVuYW1lKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX2V4ZWN1dGFibGVfbGluZW5vcyhmaWxlbmFtZSkKKyAgICBpZiBub3Qgb3B0cy5ub19yZXBvcnQ6CisgICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhvcHRzLm1pc3NpbmcsIG9wdHMuc3VtbWFyeSwgb3B0cy5jb3ZlcmRpcikKIAogaWYgX19uYW1lX189PSdfX21haW5fXyc6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdHJhY2ViYWNrLnB5IGIvTGliL3RyYWNlYmFjay5weQppbmRleCBhMmViNTM5Li5hMWNiNWZiIDEwMDY0NAotLS0gYS9MaWIvdHJhY2ViYWNrLnB5CisrKyBiL0xpYi90cmFjZWJhY2sucHkKQEAgLTM4NSw5ICszODUsMzAgQEAKICAgICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCiAgICAgICAgIEVhY2ggc3RyaW5nIGVuZHMgaW4gYSBuZXdsaW5lOyB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbAogICAgICAgICBuZXdsaW5lcyBhcyB3ZWxsLCBmb3IgdGhvc2UgaXRlbXMgd2l0aCBzb3VyY2UgdGV4dCBsaW5lcy4KKworICAgICAgICBGb3IgbG9uZyBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgZnJhbWUgYW5kIGxpbmUsIHRoZSBmaXJzdCBmZXcKKyAgICAgICAgcmVwZXRpdGlvbnMgYXJlIHNob3duLCBmb2xsb3dlZCBieSBhIHN1bW1hcnkgbGluZSBzdGF0aW5nIHRoZSBleGFjdAorICAgICAgICBudW1iZXIgb2YgZnVydGhlciByZXBldGl0aW9ucy4KICAgICAgICAgIiIiCiAgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGxhc3RfZmlsZSA9IE5vbmUKKyAgICAgICAgbGFzdF9saW5lID0gTm9uZQorICAgICAgICBsYXN0X25hbWUgPSBOb25lCisgICAgICAgIGNvdW50ID0gMAogICAgICAgICBmb3IgZnJhbWUgaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIChsYXN0X2ZpbGUgaXMgbm90IE5vbmUgYW5kIGxhc3RfZmlsZSA9PSBmcmFtZS5maWxlbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBsYXN0X2xpbmUgaXMgbm90IE5vbmUgYW5kIGxhc3RfbGluZSA9PSBmcmFtZS5saW5lbm8gYW5kCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lIGlzIG5vdCBOb25lIGFuZCBsYXN0X25hbWUgPT0gZnJhbWUubmFtZSk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudCA+IDM6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZicgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudC0zfSBtb3JlIHRpbWVzXVxuJykKKyAgICAgICAgICAgICAgICBsYXN0X2ZpbGUgPSBmcmFtZS5maWxlbmFtZQorICAgICAgICAgICAgICAgIGxhc3RfbGluZSA9IGZyYW1lLmxpbmVubworICAgICAgICAgICAgICAgIGxhc3RfbmFtZSA9IGZyYW1lLm5hbWUKKyAgICAgICAgICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgICAgIGlmIGNvdW50ID49IDM6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHJvdyA9IFtdCiAgICAgICAgICAgICByb3cuYXBwZW5kKCcgIEZpbGUgInt9IiwgbGluZSB7fSwgaW4ge31cbicuZm9ybWF0KAogICAgICAgICAgICAgICAgIGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8sIGZyYW1lLm5hbWUpKQpAQCAtMzk3LDYgKzQxOCw4IEBACiAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNvcnRlZChmcmFtZS5sb2NhbHMuaXRlbXMoKSk6CiAgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgICB7bmFtZX0gPSB7dmFsdWV9XG4nLmZvcm1hdChuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJycuam9pbihyb3cpKQorICAgICAgICBpZiBjb3VudCA+IDM6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnQtM30gbW9yZSB0aW1lc11cbicpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogCkBAIC00ODcsMTAgKzUxMCw5IEBACiAgICAgICAgICAgICBzZWxmLl9sb2FkX2xpbmVzKCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2V4Y2VwdGlvbihzZWxmLCBleGMsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIGZyb21fZXhjZXB0aW9uKGNscywgZXhjLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJDcmVhdGUgYSBUcmFjZWJhY2tFeGNlcHRpb24gZnJvbSBhbiBleGNlcHRpb24uIiIiCi0gICAgICAgIHJldHVybiBUcmFjZWJhY2tFeGNlcHRpb24oCi0gICAgICAgICAgICB0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNscyh0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBfbG9hZF9saW5lcyhzZWxmKToKICAgICAgICAgIiIiUHJpdmF0ZSBBUEkuIGZvcmNlIGFsbCBsaW5lcyBpbiB0aGUgc3RhY2sgdG8gYmUgbG9hZGVkLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlbWFsbG9jLnB5IGIvTGliL3RyYWNlbWFsbG9jLnB5CmluZGV4IDYyODhkYTguLjc1YjM5MTggMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdHJhY2VtYWxsb2MucHkKQEAgLTI0NCwxNyArMjQ0LDIxIEBACiAgICAgX19zbG90c19fID0gKCJfdHJhY2UiLCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFjZSk6Ci0gICAgICAgICMgdHJhY2UgaXMgYSB0dXBsZTogKHNpemUsIHRyYWNlYmFjayksIHNlZSBUcmFjZWJhY2sgY29uc3RydWN0b3IKLSAgICAgICAgIyBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgdHJhY2ViYWNrIHR1cGxlCisgICAgICAgICMgdHJhY2UgaXMgYSB0dXBsZTogKGRvbWFpbjogaW50LCBzaXplOiBpbnQsIHRyYWNlYmFjazogdHVwbGUpLgorICAgICAgICAjIFNlZSBUcmFjZWJhY2sgY29uc3RydWN0b3IgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIHRyYWNlYmFjayB0dXBsZS4KICAgICAgICAgc2VsZi5fdHJhY2UgPSB0cmFjZQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIHNpemUoc2VsZik6CisgICAgZGVmIGRvbWFpbihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3RyYWNlWzBdCiAKICAgICBAcHJvcGVydHkKKyAgICBkZWYgc2l6ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyYWNlWzFdCisKKyAgICBAcHJvcGVydHkKICAgICBkZWYgdHJhY2ViYWNrKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJhY2ViYWNrKHNlbGYuX3RyYWNlWzFdKQorICAgICAgICByZXR1cm4gVHJhY2ViYWNrKHNlbGYuX3RyYWNlWzJdKQogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiAoc2VsZi5fdHJhY2UgPT0gb3RoZXIuX3RyYWNlKQpAQCAtMjY2LDggKzI3MCw4IEBACiAgICAgICAgIHJldHVybiAiJXM6ICVzIiAlIChzZWxmLnRyYWNlYmFjaywgX2Zvcm1hdF9zaXplKHNlbGYuc2l6ZSwgRmFsc2UpKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKCI8VHJhY2Ugc2l6ZT0lcywgdHJhY2ViYWNrPSVyPiIKLSAgICAgICAgICAgICAgICAlIChfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksIHNlbGYudHJhY2ViYWNrKSkKKyAgICAgICAgcmV0dXJuICgiPFRyYWNlIGRvbWFpbj0lcyBzaXplPSVzLCB0cmFjZWJhY2s9JXI+IgorICAgICAgICAgICAgICAgICUgKHNlbGYuZG9tYWluLCBfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksIHNlbGYudHJhY2ViYWNrKSkKIAogCiBjbGFzcyBfVHJhY2VzKFNlcXVlbmNlKToKQEAgLTMwMiwxOSArMzA2LDI5IEBACiAgICAgcmV0dXJuIGZpbGVuYW1lCiAKIAotY2xhc3MgRmlsdGVyOgorY2xhc3MgQmFzZUZpbHRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVzaXZlKToKKyAgICAgICAgc2VsZi5pbmNsdXNpdmUgPSBpbmNsdXNpdmUKKworICAgIGRlZiBfbWF0Y2goc2VsZiwgdHJhY2UpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKworY2xhc3MgRmlsdGVyKEJhc2VGaWx0ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmNsdXNpdmUsIGZpbGVuYW1lX3BhdHRlcm4sCi0gICAgICAgICAgICAgICAgIGxpbmVubz1Ob25lLCBhbGxfZnJhbWVzPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgbGluZW5vPU5vbmUsIGFsbF9mcmFtZXM9RmFsc2UsIGRvbWFpbj1Ob25lKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbmNsdXNpdmUpCiAgICAgICAgIHNlbGYuaW5jbHVzaXZlID0gaW5jbHVzaXZlCiAgICAgICAgIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4gPSBfbm9ybWFsaXplX2ZpbGVuYW1lKGZpbGVuYW1lX3BhdHRlcm4pCiAgICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCiAgICAgICAgIHNlbGYuYWxsX2ZyYW1lcyA9IGFsbF9mcmFtZXMKKyAgICAgICAgc2VsZi5kb21haW4gPSBkb21haW4KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBmaWxlbmFtZV9wYXR0ZXJuKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZW5hbWVfcGF0dGVybgogCi0gICAgZGVmIF9fbWF0Y2hfZnJhbWUoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6CisgICAgZGVmIF9tYXRjaF9mcmFtZV9pbXBsKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgogICAgICAgICBmaWxlbmFtZSA9IF9ub3JtYWxpemVfZmlsZW5hbWUoZmlsZW5hbWUpCiAgICAgICAgIGlmIG5vdCBmbm1hdGNoLmZubWF0Y2goZmlsZW5hbWUsIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4pOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0zMjQsMTEgKzMzOCwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIChsaW5lbm8gPT0gc2VsZi5saW5lbm8pCiAKICAgICBkZWYgX21hdGNoX2ZyYW1lKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgotICAgICAgICByZXR1cm4gc2VsZi5fX21hdGNoX2ZyYW1lKGZpbGVuYW1lLCBsaW5lbm8pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoX2ZyYW1lX2ltcGwoZmlsZW5hbWUsIGxpbmVubykgXiAobm90IHNlbGYuaW5jbHVzaXZlKQogCiAgICAgZGVmIF9tYXRjaF90cmFjZWJhY2soc2VsZiwgdHJhY2ViYWNrKToKICAgICAgICAgaWYgc2VsZi5hbGxfZnJhbWVzOgotICAgICAgICAgICAgaWYgYW55KHNlbGYuX19tYXRjaF9mcmFtZShmaWxlbmFtZSwgbGluZW5vKQorICAgICAgICAgICAgaWYgYW55KHNlbGYuX21hdGNoX2ZyYW1lX2ltcGwoZmlsZW5hbWUsIGxpbmVubykKICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUsIGxpbmVubyBpbiB0cmFjZWJhY2spOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmluY2x1c2l2ZQogICAgICAgICAgICAgZWxzZToKQEAgLTMzNyw2ICszNTEsMzAgQEAKICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8gPSB0cmFjZWJhY2tbMF0KICAgICAgICAgICAgIHJldHVybiBzZWxmLl9tYXRjaF9mcmFtZShmaWxlbmFtZSwgbGluZW5vKQogCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgcmVzID0gc2VsZi5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgaWYgc2VsZi5kb21haW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLmluY2x1c2l2ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzIGFuZCAoZG9tYWluID09IHNlbGYuZG9tYWluKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzIG9yIChkb21haW4gIT0gc2VsZi5kb21haW4pCisgICAgICAgIHJldHVybiByZXMKKworCitjbGFzcyBEb21haW5GaWx0ZXIoQmFzZUZpbHRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluY2x1c2l2ZSwgZG9tYWluKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbmNsdXNpdmUpCisgICAgICAgIHNlbGYuX2RvbWFpbiA9IGRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RvbWFpbgorCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgcmV0dXJuIChkb21haW4gPT0gc2VsZi5kb21haW4pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKKwogCiBjbGFzcyBTbmFwc2hvdDoKICAgICAiIiIKQEAgLTM2NSwxMyArNDAzLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gcGlja2xlLmxvYWQoZnApCiAKICAgICBkZWYgX2ZpbHRlcl90cmFjZShzZWxmLCBpbmNsdWRlX2ZpbHRlcnMsIGV4Y2x1ZGVfZmlsdGVycywgdHJhY2UpOgotICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZVsxXQogICAgICAgICBpZiBpbmNsdWRlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBpZiBub3QgYW55KHRyYWNlX2ZpbHRlci5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgICAgIGlmIG5vdCBhbnkodHJhY2VfZmlsdGVyLl9tYXRjaCh0cmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRyYWNlX2ZpbHRlciBpbiBpbmNsdWRlX2ZpbHRlcnMpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBleGNsdWRlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBpZiBhbnkobm90IHRyYWNlX2ZpbHRlci5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgICAgIGlmIGFueShub3QgdHJhY2VfZmlsdGVyLl9tYXRjaCh0cmFjZSkKICAgICAgICAgICAgICAgICAgICBmb3IgdHJhY2VfZmlsdGVyIGluIGV4Y2x1ZGVfZmlsdGVycyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0zNzksOCArNDE2LDggQEAKICAgICBkZWYgZmlsdGVyX3RyYWNlcyhzZWxmLCBmaWx0ZXJzKToKICAgICAgICAgIiIiCiAgICAgICAgIENyZWF0ZSBhIG5ldyBTbmFwc2hvdCBpbnN0YW5jZSB3aXRoIGEgZmlsdGVyZWQgdHJhY2VzIHNlcXVlbmNlLCBmaWx0ZXJzCi0gICAgICAgIGlzIGEgbGlzdCBvZiBGaWx0ZXIgaW5zdGFuY2VzLiAgSWYgZmlsdGVycyBpcyBhbiBlbXB0eSBsaXN0LCByZXR1cm4gYQotICAgICAgICBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KKyAgICAgICAgaXMgYSBsaXN0IG9mIEZpbHRlciBvciBEb21haW5GaWx0ZXIgaW5zdGFuY2VzLiAgSWYgZmlsdGVycyBpcyBhbiBlbXB0eQorICAgICAgICBsaXN0LCByZXR1cm4gYSBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbHRlcnMsIEl0ZXJhYmxlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsdGVycyBtdXN0IGJlIGEgbGlzdCBvZiBmaWx0ZXJzLCBub3QgJXMiCkBAIC00MTIsNyArNDQ5LDcgQEAKICAgICAgICAgdHJhY2ViYWNrcyA9IHt9CiAgICAgICAgIGlmIG5vdCBjdW11bGF0aXZlOgogICAgICAgICAgICAgZm9yIHRyYWNlIGluIHNlbGYudHJhY2VzLl90cmFjZXM6Ci0gICAgICAgICAgICAgICAgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgICAgICAgICBkb21haW4sIHNpemUsIHRyYWNlX3RyYWNlYmFjayA9IHRyYWNlCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tzW3RyYWNlX3RyYWNlYmFja10KICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC00MzMsNyArNDcwLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzCiAgICAgICAgICAgICBmb3IgdHJhY2UgaW4gc2VsZi50cmFjZXMuX3RyYWNlczoKLSAgICAgICAgICAgICAgICBzaXplLCB0cmFjZV90cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICAgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKICAgICAgICAgICAgICAgICBmb3IgZnJhbWUgaW4gdHJhY2VfdHJhY2ViYWNrOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tzW2ZyYW1lXQpkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQppbmRleCA3MTFkMGFiLi4wYTU4MzMyIDEwMDY0NAotLS0gYS9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQorKysgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQpAQCAtODksMTMgKzg5LDEyIEBACiBpbXBvcnQgb3MKIAogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yLCBjb2xvcl9jb25maWcKLWZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi1mcm9tIGlkbGVsaWIudGV4dFZpZXcgaW1wb3J0IHZpZXdfdGV4dAorZnJvbSBpZGxlbGliLmNvbG9yaXplciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IsIGNvbG9yX2NvbmZpZworZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKK2Zyb20gaWRsZWxpYi50ZXh0dmlldyBpbXBvcnQgdmlld190ZXh0CiBmcm9tIHR1cnRsZWRlbW8gaW1wb3J0IF9fZG9jX18gYXMgYWJvdXRfdHVydGxlZGVtbwogCiBpbXBvcnQgdHVydGxlCi1pbXBvcnQgdGltZQogCiBkZW1vX2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQogZGFyd2luID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5IGIvTGliL3R1cnRsZWRlbW8vYnl0ZWRlc2lnbi5weQppbmRleCA2NGIxZDdkLi5iM2IwOTViIDEwMDc1NQotLS0gYS9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5CisrKyBiL0xpYi90dXJ0bGVkZW1vL2J5dGVkZXNpZ24ucHkKQEAgLTIyLDcgKzIyLDYgQEAKIG1vZGUgYXMgZmFzdCBhcyBwb3NzaWJsZS4KICIiIgogCi1pbXBvcnQgbWF0aAogZnJvbSB0dXJ0bGUgaW1wb3J0IFR1cnRsZSwgbWFpbmxvb3AKIGZyb20gdGltZSBpbXBvcnQgY2xvY2sKIApkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5IGIvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5CmluZGV4IDI2YWJmZGIuLjAyMWZmOTkgMTAwNzU1Ci0tLSBhL0xpYi90dXJ0bGVkZW1vL3BsYW5ldF9hbmRfbW9vbi5weQorKysgYi9MaWIvdHVydGxlZGVtby9wbGFuZXRfYW5kX21vb24ucHkKQEAgLTE4LDcgKzE4LDYgQEAKIAogIiIiCiBmcm9tIHR1cnRsZSBpbXBvcnQgU2hhcGUsIFR1cnRsZSwgbWFpbmxvb3AsIFZlYzJEIGFzIFZlYwotZnJvbSB0aW1lIGltcG9ydCBzbGVlcAogCiBHID0gOAogCmRpZmYgLS1naXQgYS9MaWIvdHlwZXMucHkgYi9MaWIvdHlwZXMucHkKaW5kZXggNDg4OTFjZC4uZDhkODQ3MCAxMDA2NDQKLS0tIGEvTGliL3R5cGVzLnB5CisrKyBiL0xpYi90eXBlcy5weQpAQCAtMjQsNiArMjQsMTEgQEAKIENvcm91dGluZVR5cGUgPSB0eXBlKF9jKQogX2MuY2xvc2UoKSAgIyBQcmV2ZW50IFJlc291cmNlV2FybmluZwogCithc3luYyBkZWYgX2FnKCk6CisgICAgeWllbGQKK19hZyA9IF9hZygpCitBc3luY0dlbmVyYXRvclR5cGUgPSB0eXBlKF9hZykKKwogY2xhc3MgX0M6CiAgICAgZGVmIF9tKHNlbGYpOiBwYXNzCiBNZXRob2RUeXBlID0gdHlwZShfQygpLl9tKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L21vY2sucHkgYi9MaWIvdW5pdHRlc3QvbW9jay5weQppbmRleCA2Njk4OTBhLi5lYWE5YzNkIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbW9jay5weQorKysgYi9MaWIvdW5pdHRlc3QvbW9jay5weQpAQCAtNjAsMTggKzYwLDYgQEAKICAgICApCiAKIAotY2xhc3MgX3Nsb3R0ZWQob2JqZWN0KToKLSAgICBfX3Nsb3RzX18gPSBbJ2EnXQotCi0KLSMgRG8gbm90IHVzZSB0aGlzIHR1cGxlLiAgSXQgd2FzIG5ldmVyIGRvY3VtZW50ZWQgYXMgYSBwdWJsaWMgQVBJLgotIyBJdCB3aWxsIGJlIHJlbW92ZWQuICBJdCBoYXMgbm8gb2J2aW91cyBzaWducyBvZiB1c2VycyBvbiBnaXRodWIuCi1EZXNjcmlwdG9yVHlwZXMgPSAoCi0gICAgdHlwZShfc2xvdHRlZC5hKSwKLSAgICBwcm9wZXJ0eSwKLSkKLQotCiBkZWYgX2dldF9zaWduYXR1cmVfb2JqZWN0KGZ1bmMsIGFzX2luc3RhbmNlLCBlYXRfc2VsZik6CiAgICAgIiIiCiAgICAgR2l2ZW4gYW4gYXJiaXRyYXJ5LCBwb3NzaWJseSBjYWxsYWJsZSBvYmplY3QsIHRyeSB0byBjcmVhdGUgYSBzdWl0YWJsZQpAQCAtNTI1LDcgKzUxMyw3IEBACiAgICAgc2lkZV9lZmZlY3QgPSBwcm9wZXJ0eShfX2dldF9zaWRlX2VmZmVjdCwgX19zZXRfc2lkZV9lZmZlY3QpCiAKIAotICAgIGRlZiByZXNldF9tb2NrKHNlbGYsIHZpc2l0ZWQ9Tm9uZSk6CisgICAgZGVmIHJlc2V0X21vY2soc2VsZiwgIHZpc2l0ZWQ9Tm9uZSwqLCByZXR1cm5fdmFsdWU9RmFsc2UsIHNpZGVfZWZmZWN0PUZhbHNlKToKICAgICAgICAgIlJlc3RvcmUgdGhlIG1vY2sgb2JqZWN0IHRvIGl0cyBpbml0aWFsIHN0YXRlLiIKICAgICAgICAgaWYgdmlzaXRlZCBpcyBOb25lOgogICAgICAgICAgICAgdmlzaXRlZCA9IFtdCkBAIC01NDAsNiArNTI4LDExIEBACiAgICAgICAgIHNlbGYuY2FsbF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQogICAgICAgICBzZWxmLm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCiAKKyAgICAgICAgaWYgcmV0dXJuX3ZhbHVlOgorICAgICAgICAgICAgc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUgPSBERUZBVUxUCisgICAgICAgIGlmIHNpZGVfZWZmZWN0OgorICAgICAgICAgICAgc2VsZi5fbW9ja19zaWRlX2VmZmVjdCA9IE5vbmUKKwogICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5fbW9ja19jaGlsZHJlbi52YWx1ZXMoKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hpbGQsIF9TcGVjU3RhdGUpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC03NzQsNiArNzY3LDI0IEBACiAgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCiAKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZChfbW9ja19zZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBhdCBsZWFzdCBvbmNlCisgICAgICAgICIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBzZWxmLmNhbGxfY291bnQgPT0gMDoKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBoYXZlIGJlZW4gY2FsbGVkLiIgJQorICAgICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlKF9tb2NrX3NlbGYpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIG9ubHkgb25jZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIG5vdCBzZWxmLmNhbGxfY291bnQgPT0gMToKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuIENhbGxlZCAlcyB0aW1lcy4iICUKKyAgICAgICAgICAgICAgICAgICAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywgc2VsZi5jYWxsX2NvdW50KSkKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKwogICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgogCkBAIC04MjIsNyArODMzLDcgQEAKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIG5vdCBpbiBhbGxfY2FsbHM6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICdDYWxscyBub3QgZm91bmQuXG5FeHBlY3RlZDogJXJcbicKLSAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbDogJXInICUgKGNhbGxzLCBzZWxmLm1vY2tfY2FsbHMpCisgICAgICAgICAgICAgICAgICAgICdBY3R1YWw6ICVyJyAlIChfQ2FsbExpc3QoY2FsbHMpLCBzZWxmLm1vY2tfY2FsbHMpCiAgICAgICAgICAgICAgICAgKSBmcm9tIGNhdXNlCiAgICAgICAgICAgICByZXR1cm4KIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3J1bm5lci5weSBiL0xpYi91bml0dGVzdC9ydW5uZXIucHkKaW5kZXggMjExMjI2Mi4uMmM1ZWE0YSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3J1bm5lci5weQorKysgYi9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CkBAIC0xNjcsNyArMTY3LDcgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLndhcm5pbmdzIGluIFsnZGVmYXVsdCcsICdhbHdheXMnXToKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ21vZHVsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1BsZWFzZSB1c2UgYXNzZXJ0XHcrIGluc3RlYWQuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXInUGxlYXNlIHVzZSBhc3NlcnRcdysgaW5zdGVhZC4nKQogICAgICAgICAgICAgc3RhcnRUaW1lID0gdGltZS50aW1lKCkKICAgICAgICAgICAgIHN0YXJ0VGVzdFJ1biA9IGdldGF0dHIocmVzdWx0LCAnc3RhcnRUZXN0UnVuJywgTm9uZSkKICAgICAgICAgICAgIGlmIHN0YXJ0VGVzdFJ1biBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQppbmRleCBlNmUyYmMyLi4xYjBlODMzIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgICAgICAgIyBFcnJvciBtZXNzYWdlcyBhcmUgbXVsdGlsaW5lIHNvIG5vdCB0ZXN0aW5nIG9uIGZ1bGwgbWVzc2FnZQogICAgICAgICAjIGFzc2VydFR1cGxlRXF1YWwgYW5kIGFzc2VydExpc3RFcXVhbCBkZWxlZ2F0ZSB0byB0aGlzIG1ldGhvZAogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnRTZXF1ZW5jZUVxdWFsJywgKFtdLCBbTm9uZV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiXCsgXFtOb25lXF0kIiwgIl5vb3BzJCIsIHIiXCsgXFtOb25lXF0kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJcKyBcW05vbmVcXSQiLCAiXm9vcHMkIiwgciJcKyBcW05vbmVcXSQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlwrIFxbTm9uZVxdIDogb29wcyQiXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0U2V0RXF1YWwoc2VsZik6CkBAIC0yNTAsMjEgKzI1MCwyMSBAQAogCiAgICAgZGVmIHRlc3RBc3NlcnRJbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0SW4nLCAoTm9uZSwgW10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXk5vbmUgbm90IGZvdW5kIGluIFxbXF0kJywgIl5vb3BzJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeTm9uZSBub3QgZm91bmQgaW4gXFtcXSQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgbm90IGZvdW5kIGluIFxbXF0gOiBvb3BzJCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsICJeb29wcyQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgbm90IGZvdW5kIGluIFxbXF0gOiBvb3BzJCddKQogCiAgICAgZGVmIHRlc3RBc3NlcnROb3RJbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0Tm90SW4nLCAoTm9uZSwgW05vbmVdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLCAiXm9vcHMkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdIDogb29wcyQnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcideTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0kJywgIl5vb3BzJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdIDogb29wcyQnXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0RGljdEVxdWFsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnREaWN0RXF1YWwnLCAoe30sIHsna2V5JzogJ3ZhbHVlJ30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSQiLCAiXm9vcHMkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9IDogb29wcyQiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcKyBceydrZXknOiAndmFsdWUnXH0kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcKyBceydrZXknOiAndmFsdWUnXH0gOiBvb3BzJCJdKQogCiAgICAgZGVmIHRlc3RBc3NlcnREaWN0Q29udGFpbnNTdWJzZXQoc2VsZik6CiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKaW5kZXggNGI5Nzg4Mi4uYjJmOWM4OCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKQEAgLTM5MCw3ICszOTAsNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnYWJjICgpIC8vJykKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCiAgICAgICAgIGV4cGVjdGVkID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyAoKSAvLyIKLSAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKQEAgLTUwMiw3ICs1MDIsNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnYWJjICgpIC8vJywgdW5pdHRlc3QpCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQogICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgKCkgLy8nIgotICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCiAgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCkBAIC04MDksNyArODA5LDcgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10pCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQogICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9IHIiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgIGVycm9yLAogICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQpAQCAtOTI4LDcgKzkyOCw3IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddLCB1bml0dGVzdCkKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCiAgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5CmluZGV4IGY0NzM4NzkuLjIwNTQzMWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weQpAQCAtMSw1ICsxLDMgQEAKLWltcG9ydCBzeXMKLQogZGVmIGlzX2luc3RhbmNlKG9iaiwga2xhc3MpOgogICAgICIiIlZlcnNpb24gb2YgaXNfaW5zdGFuY2UgdGhhdCBkb2Vzbid0IGFjY2VzcyBfX2NsYXNzX18iIiIKICAgICByZXR1cm4gaXNzdWJjbGFzcyh0eXBlKG9iaiksIGtsYXNzKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKaW5kZXggYmI5Yjk1Ni4uMjQ1NjliNSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaW5zcGVjdAogaW1wb3J0IHN5cwogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrLCBNYWdpY01vY2ssIF9tYWdpY3MKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQppbmRleCA1ZjgyYjgyLi5iMDdhN2NjIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQpAQCAtMTIzOSw2ICsxMjM5LDI3IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgogICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCiAKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkKCkKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZCgpCisKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZCgpCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX29uY2Uoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWRfb25jZSgpCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWRfb25jZSgpCisKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkX29uY2UoKQorCiAgICAgI0lzc3VlMjEyNTYgcHJpbnRvdXQgb2Yga2V5d29yZCBhcmdzIHNob3VsZCBiZSBpbiBkZXRlcm1pbmlzdGljIG9yZGVyCiAgICAgZGVmIHRlc3Rfc29ydGVkX2NhbGxfc2lnbmF0dXJlKHNlbGYpOgogICAgICAgICBtID0gTW9jaygpCkBAIC0xMjU2LDYgKzEyNzcsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxsc1swXSwgYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxsc1sxXSwgaSkKIAorICAgIGRlZiB0ZXN0X3Jlc2V0X3JldHVybl9zaWRlZWZmZWN0KHNlbGYpOgorICAgICAgICBtID0gTW9jayhyZXR1cm5fdmFsdWU9MTAsIHNpZGVfZWZmZWN0PVsyLDNdKQorICAgICAgICBtLnJlc2V0X21vY2socmV0dXJuX3ZhbHVlPVRydWUsIHNpZGVfZWZmZWN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtLnJldHVybl92YWx1ZSwgTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNpZGVfZWZmZWN0LCBOb25lKQorCisgICAgZGVmIHRlc3RfcmVzZXRfcmV0dXJuKHNlbGYpOgorICAgICAgICBtID0gTW9jayhyZXR1cm5fdmFsdWU9MTAsIHNpZGVfZWZmZWN0PVsyLDNdKQorICAgICAgICBtLnJlc2V0X21vY2socmV0dXJuX3ZhbHVlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtLnJldHVybl92YWx1ZSwgTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtLnNpZGVfZWZmZWN0LCBOb25lKQorCisgICAgZGVmIHRlc3RfcmVzZXRfc2lkZWVmZmVjdChzZWxmKToKKyAgICAgICAgbSA9IE1vY2socmV0dXJuX3ZhbHVlPTEwLCBzaWRlX2VmZmVjdD1bMiwzXSkKKyAgICAgICAgbS5yZXNldF9tb2NrKHNpZGVfZWZmZWN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZXR1cm5fdmFsdWUsIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc2lkZV9lZmZlY3QsIE5vbmUpCisKICAgICBkZWYgdGVzdF9tb2NrX2FkZF9zcGVjKHNlbGYpOgogICAgICAgICBjbGFzcyBfT25lKG9iamVjdCk6CiAgICAgICAgICAgICBvbmUgPSAxCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKaW5kZXggZGZjZTM2OS4uMmUwYzA4ZiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQpAQCAtMTAsOSArMTAsOSBAQAogZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IFNvbWVDbGFzcywgaXNfaW5zdGFuY2UKIAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCi0gICAgTm9uQ2FsbGFibGVNb2NrLCBDYWxsYWJsZU1peGluLCBwYXRjaCwgc2VudGluZWwsCisgICAgTm9uQ2FsbGFibGVNb2NrLCBDYWxsYWJsZU1peGluLCBzZW50aW5lbCwKICAgICBNYWdpY01vY2ssIE1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBwYXRjaCwgX3BhdGNoLAotICAgIERFRkFVTFQsIGNhbGwsIF9nZXRfdGFyZ2V0LCBfcGF0Y2gKKyAgICBERUZBVUxULCBjYWxsLCBfZ2V0X3RhcmdldAogKQogCiAKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcGFyc2UucHkgYi9MaWIvdXJsbGliL3BhcnNlLnB5CmluZGV4IDU2NmZiZjcuLjk1ODc2N2EgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcGFyc2UucHkKKysrIGIvTGliL3VybGxpYi9wYXJzZS5weQpAQCAtMTU3LDkgKzE1Nyw4IEBACiAgICAgICAgIHBvcnQgPSBzZWxmLl9ob3N0aW5mb1sxXQogICAgICAgICBpZiBwb3J0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcG9ydCA9IGludChwb3J0LCAxMCkKLSAgICAgICAgICAgICMgUmV0dXJuIE5vbmUgb24gYW4gaWxsZWdhbCBwb3J0CiAgICAgICAgICAgICBpZiBub3QgKCAwIDw9IHBvcnQgPD0gNjU1MzUpOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUG9ydCBvdXQgb2YgcmFuZ2UgMC02NTUzNSIpCiAgICAgICAgIHJldHVybiBwb3J0CiAKIApAQCAtMjI2LDggKzIyNSw3MSBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogCiBfRGVmcmFnUmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoJ0RlZnJhZ1Jlc3VsdCcsICd1cmwgZnJhZ21lbnQnKQotX1NwbGl0UmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoJ1NwbGl0UmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBxdWVyeSBmcmFnbWVudCcpCi1fUGFyc2VSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgnUGFyc2VSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHBhcmFtcyBxdWVyeSBmcmFnbWVudCcpCitfU3BsaXRSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgKKyAgICAnU3BsaXRSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHF1ZXJ5IGZyYWdtZW50JykKK19QYXJzZVJlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKAorICAgICdQYXJzZVJlc3VsdCcsICdzY2hlbWUgbmV0bG9jIHBhdGggcGFyYW1zIHF1ZXJ5IGZyYWdtZW50JykKKworX0RlZnJhZ1Jlc3VsdEJhc2UuX19kb2NfXyA9ICIiIgorRGVmcmFnUmVzdWx0KHVybCwgZnJhZ21lbnQpCisKK0EgMi10dXBsZSB0aGF0IGNvbnRhaW5zIHRoZSB1cmwgd2l0aG91dCBmcmFnbWVudCBpZGVudGlmaWVyIGFuZCB0aGUgZnJhZ21lbnQKK2lkZW50aWZpZXIgYXMgYSBzZXBhcmF0ZSBhcmd1bWVudC4KKyIiIgorCitfRGVmcmFnUmVzdWx0QmFzZS51cmwuX19kb2NfXyA9ICIiIlRoZSBVUkwgd2l0aCBubyBmcmFnbWVudCBpZGVudGlmaWVyLiIiIgorCitfRGVmcmFnUmVzdWx0QmFzZS5mcmFnbWVudC5fX2RvY19fID0gIiIiCitGcmFnbWVudCBpZGVudGlmaWVyIHNlcGFyYXRlZCBmcm9tIFVSTCwgdGhhdCBhbGxvd3MgaW5kaXJlY3QgaWRlbnRpZmljYXRpb24gb2YgYQorc2Vjb25kYXJ5IHJlc291cmNlIGJ5IHJlZmVyZW5jZSB0byBhIHByaW1hcnkgcmVzb3VyY2UgYW5kIGFkZGl0aW9uYWwgaWRlbnRpZnlpbmcKK2luZm9ybWF0aW9uLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UuX19kb2NfXyA9ICIiIgorU3BsaXRSZXN1bHQoc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCkKKworQSA1LXR1cGxlIHRoYXQgY29udGFpbnMgdGhlIGRpZmZlcmVudCBjb21wb25lbnRzIG9mIGEgVVJMLiBTaW1pbGFyIHRvCitQYXJzZVJlc3VsdCwgYnV0IGRvZXMgbm90IHNwbGl0IHBhcmFtcy4KKyIiIgorCitfU3BsaXRSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fID0gIiIiU3BlY2lmaWVzIFVSTCBzY2hlbWUgZm9yIHRoZSByZXF1ZXN0LiIiIgorCitfU3BsaXRSZXN1bHRCYXNlLm5ldGxvYy5fX2RvY19fID0gIiIiCitOZXR3b3JrIGxvY2F0aW9uIHdoZXJlIHRoZSByZXF1ZXN0IGlzIG1hZGUgdG8uCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5wYXRoLl9fZG9jX18gPSAiIiIKK1RoZSBoaWVyYXJjaGljYWwgcGF0aCwgc3VjaCBhcyB0aGUgcGF0aCB0byBhIGZpbGUgdG8gZG93bmxvYWQuCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fID0gIiIiCitUaGUgcXVlcnkgY29tcG9uZW50LCB0aGF0IGNvbnRhaW5zIG5vbi1oaWVyYXJjaGljYWwgZGF0YSwgdGhhdCBhbG9uZyB3aXRoIGRhdGEKK2luIHBhdGggY29tcG9uZW50LCBpZGVudGlmaWVzIGEgcmVzb3VyY2UgaW4gdGhlIHNjb3BlIG9mIFVSSSdzIHNjaGVtZSBhbmQKK25ldHdvcmsgbG9jYXRpb24uCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5mcmFnbWVudC5fX2RvY19fID0gIiIiCitGcmFnbWVudCBpZGVudGlmaWVyLCB0aGF0IGFsbG93cyBpbmRpcmVjdCBpZGVudGlmaWNhdGlvbiBvZiBhIHNlY29uZGFyeSByZXNvdXJjZQorYnkgcmVmZXJlbmNlIHRvIGEgcHJpbWFyeSByZXNvdXJjZSBhbmQgYWRkaXRpb25hbCBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4KKyIiIgorCitfUGFyc2VSZXN1bHRCYXNlLl9fZG9jX18gPSAiIiIKK1BhcnNlUmVzdWx0KHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBwYXJhbXMsICBxdWVyeSwgZnJhZ21lbnQpCisKK0EgNi10dXBsZSB0aGF0IGNvbnRhaW5zIGNvbXBvbmVudHMgb2YgYSBwYXJzZWQgVVJMLgorIiIiCisKK19QYXJzZVJlc3VsdEJhc2Uuc2NoZW1lLl9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fCitfUGFyc2VSZXN1bHRCYXNlLm5ldGxvYy5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5uZXRsb2MuX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5wYXRoLl9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnBhdGguX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5wYXJhbXMuX19kb2NfXyA9ICIiIgorUGFyYW1ldGVycyBmb3IgbGFzdCBwYXRoIGVsZW1lbnQgdXNlZCB0byBkZXJlZmVyZW5jZSB0aGUgVVJJIGluIG9yZGVyIHRvIHByb3ZpZGUKK2FjY2VzcyB0byBwZXJmb3JtIHNvbWUgb3BlcmF0aW9uIG9uIHRoZSByZXNvdXJjZS4KKyIiIgorCitfUGFyc2VSZXN1bHRCYXNlLnF1ZXJ5Ll9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnF1ZXJ5Ll9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXworCiAKICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBhbGlhcyBfTmV0bG9jUmVzdWx0TWl4aW5TdHIKICMgUmVzdWx0QmFzZSBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgZG9jdW1lbnRlZCBBUEksIGJ1dCBpdCBpcwpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CmluZGV4IGE0YmY5N2QuLjVmMTViNzQgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKQEAgLTEzNCwxMyArMTM0LDczIEBACiBdCiAKICMgdXNlZCBpbiBVc2VyLUFnZW50IGhlYWRlciBzZW50Ci1fX3ZlcnNpb25fXyA9IHN5cy52ZXJzaW9uWzozXQorX192ZXJzaW9uX18gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIAogX29wZW5lciA9IE5vbmUKIGRlZiB1cmxvcGVuKHVybCwgZGF0YT1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKICAgICAgICAgICAgICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSwgY2FkZWZhdWx0PUZhbHNlLCBjb250ZXh0PU5vbmUpOgorICAgICcnJ09wZW4gdGhlIFVSTCB1cmwsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBSZXF1ZXN0IG9iamVjdC4KKworICAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvCisgICAgdGhlIHNlcnZlciwgb3IgTm9uZSBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgU2VlIFJlcXVlc3QgZm9yCisgICAgZGV0YWlscy4KKworICAgIHVybGxpYi5yZXF1ZXN0IG1vZHVsZSB1c2VzIEhUVFAvMS4xIGFuZCBpbmNsdWRlcyBhICJDb25uZWN0aW9uOmNsb3NlIgorICAgIGhlYWRlciBpbiBpdHMgSFRUUCByZXF1ZXN0cy4KKworICAgIFRoZSBvcHRpb25hbCAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IKKyAgICBibG9ja2luZyBvcGVyYXRpb25zIGxpa2UgdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCAoaWYgbm90IHNwZWNpZmllZCwgdGhlCisgICAgZ2xvYmFsIGRlZmF1bHQgdGltZW91dCBzZXR0aW5nIHdpbGwgYmUgdXNlZCkuIFRoaXMgb25seSB3b3JrcyBmb3IgSFRUUCwKKyAgICBIVFRQUyBhbmQgRlRQIGNvbm5lY3Rpb25zLgorCisgICAgSWYgKmNvbnRleHQqIGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZSBhIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlIGRlc2NyaWJpbmcKKyAgICB0aGUgdmFyaW91cyBTU0wgb3B0aW9ucy4gU2VlIEhUVFBTQ29ubmVjdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgVGhlIG9wdGlvbmFsICpjYWZpbGUqIGFuZCAqY2FwYXRoKiBwYXJhbWV0ZXJzIHNwZWNpZnkgYSBzZXQgb2YgdHJ1c3RlZCBDQQorICAgIGNlcnRpZmljYXRlcyBmb3IgSFRUUFMgcmVxdWVzdHMuIGNhZmlsZSBzaG91bGQgcG9pbnQgdG8gYSBzaW5nbGUgZmlsZQorICAgIGNvbnRhaW5pbmcgYSBidW5kbGUgb2YgQ0EgY2VydGlmaWNhdGVzLCB3aGVyZWFzIGNhcGF0aCBzaG91bGQgcG9pbnQgdG8gYQorICAgIGRpcmVjdG9yeSBvZiBoYXNoZWQgY2VydGlmaWNhdGUgZmlsZXMuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluCisgICAgc3NsLlNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKCkuCisKKyAgICBUaGUgKmNhZGVmYXVsdCogcGFyYW1ldGVyIGlzIGlnbm9yZWQuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGFuIG9iamVjdCB3aGljaCBjYW4gd29yayBhcyBhIGNvbnRleHQKKyAgICBtYW5hZ2VyIGFuZCBoYXMgbWV0aG9kcyBzdWNoIGFzCisKKyAgICAqIGdldHVybCgpIC0gcmV0dXJuIHRoZSBVUkwgb2YgdGhlIHJlc291cmNlIHJldHJpZXZlZCwgY29tbW9ubHkgdXNlZCB0bworICAgICAgZGV0ZXJtaW5lIGlmIGEgcmVkaXJlY3Qgd2FzIGZvbGxvd2VkCisKKyAgICAqIGluZm8oKSAtIHJldHVybiB0aGUgbWV0YS1pbmZvcm1hdGlvbiBvZiB0aGUgcGFnZSwgc3VjaCBhcyBoZWFkZXJzLCBpbiB0aGUKKyAgICAgIGZvcm0gb2YgYW4gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygpIGluc3RhbmNlIChzZWUgUXVpY2sgUmVmZXJlbmNlIHRvCisgICAgICBIVFRQIEhlYWRlcnMpCisKKyAgICAqIGdldGNvZGUoKSAtIHJldHVybiB0aGUgSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2UuICBSYWlzZXMgVVJMRXJyb3IKKyAgICAgIG9uIGVycm9ycy4KKworICAgIEZvciBIVFRQIGFuZCBIVFRQUyBVUkxzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2UKKyAgICBvYmplY3Qgc2xpZ2h0bHkgbW9kaWZpZWQuIEluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBuZXcgbWV0aG9kcyBhYm92ZSwgdGhlCisgICAgbXNnIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcyB0aGUgcmVhc29uIGF0dHJpYnV0ZSAtLS0KKyAgICB0aGUgcmVhc29uIHBocmFzZSByZXR1cm5lZCBieSB0aGUgc2VydmVyIC0tLSBpbnN0ZWFkIG9mIHRoZSByZXNwb25zZQorICAgIGhlYWRlcnMgYXMgaXQgaXMgc3BlY2lmaWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBIVFRQUmVzcG9uc2UuCisKKyAgICBGb3IgRlRQLCBmaWxlLCBhbmQgZGF0YSBVUkxzIGFuZCByZXF1ZXN0cyBleHBsaWNpdGx5IGhhbmRsZWQgYnkgbGVnYWN5CisgICAgVVJMb3BlbmVyIGFuZCBGYW5jeVVSTG9wZW5lciBjbGFzc2VzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYQorICAgIHVybGxpYi5yZXNwb25zZS5hZGRpbmZvdXJsIG9iamVjdC4KKworICAgIE5vdGUgdGhhdCBOb25lIG1heSBiZSByZXR1cm5lZCBpZiBubyBoYW5kbGVyIGhhbmRsZXMgdGhlIHJlcXVlc3QgKHRob3VnaAorICAgIHRoZSBkZWZhdWx0IGluc3RhbGxlZCBnbG9iYWwgT3BlbmVyRGlyZWN0b3IgdXNlcyBVbmtub3duSGFuZGxlciB0byBlbnN1cmUKKyAgICB0aGlzIG5ldmVyIGhhcHBlbnMpLgorCisgICAgSW4gYWRkaXRpb24sIGlmIHByb3h5IHNldHRpbmdzIGFyZSBkZXRlY3RlZCAoZm9yIGV4YW1wbGUsIHdoZW4gYSAqX3Byb3h5CisgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgbGlrZSBodHRwX3Byb3h5IGlzIHNldCksIFByb3h5SGFuZGxlciBpcyBkZWZhdWx0CisgICAgaW5zdGFsbGVkIGFuZCBtYWtlcyBzdXJlIHRoZSByZXF1ZXN0cyBhcmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwcm94eS4KKworICAgICcnJwogICAgIGdsb2JhbCBfb3BlbmVyCiAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aCBvciBjYWRlZmF1bHQ6CisgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICB3YXJuaW5ncy53YXJuKCJjYWZpbGUsIGNwYXRoIGFuZCBjYWRlZmF1bHQgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhICIKKyAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZC4iLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJZb3UgY2FuJ3QgcGFzcyBib3RoIGNvbnRleHQgYW5kIGFueSBvZiBjYWZpbGUsIGNhcGF0aCwgYW5kICIKQEAgLTExNzAsNiArMTIzMCwxMSBAQAogICAgIGRlZiBzZXRfaHR0cF9kZWJ1Z2xldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAgc2VsZi5fZGVidWdsZXZlbCA9IGxldmVsCiAKKyAgICBkZWYgX2dldF9jb250ZW50X2xlbmd0aChzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgcmV0dXJuIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLl9nZXRfY29udGVudF9sZW5ndGgoCisgICAgICAgICAgICByZXF1ZXN0LmRhdGEsCisgICAgICAgICAgICByZXF1ZXN0LmdldF9tZXRob2QoKSkKKwogICAgIGRlZiBkb19yZXF1ZXN0XyhzZWxmLCByZXF1ZXN0KToKICAgICAgICAgaG9zdCA9IHJlcXVlc3QuaG9zdAogICAgICAgICBpZiBub3QgaG9zdDoKQEAgLTExNzgsMjQgKzEyNDMsMjIgQEAKICAgICAgICAgaWYgcmVxdWVzdC5kYXRhIGlzIG5vdCBOb25lOiAgIyBQT1NUCiAgICAgICAgICAgICBkYXRhID0gcmVxdWVzdC5kYXRhCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICIgXAotICAgICAgICAgICAgICAgICAgICAgICJJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgorICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzLCBhbiBpdGVyYWJsZSBvZiBieXRlcywgIiBcCisgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgZmlsZSBvYmplY3QuIEl0IGNhbm5vdCBiZSBvZiB0eXBlIHN0ci4iCiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykKICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0NvbnRlbnQtdHlwZScpOgogICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCiAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LXR5cGUnLAogICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykKLSAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJyk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoZGF0YSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvbnRlbnQtTGVuZ3RoIHNob3VsZCBiZSBzcGVjaWZpZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGl0ZXJhYmxlIGRhdGEgb2YgdHlwZSAlciAlciIgJSAodHlwZShkYXRhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSkpCisgICAgICAgICAgICBpZiAobm90IHJlcXVlc3QuaGFzX2hlYWRlcignQ29udGVudC1sZW5ndGgnKQorICAgICAgICAgICAgICAgICAgICBhbmQgbm90IHJlcXVlc3QuaGFzX2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSk6CisgICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBzZWxmLl9nZXRfY29udGVudF9sZW5ndGgocmVxdWVzdCkKKyAgICAgICAgICAgICAgICBpZiBjb250ZW50X2xlbmd0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1sZW5ndGgnLCBzdHIoY29udGVudF9sZW5ndGgpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJywgJyVkJyAlIChsZW4obXYpICogbXYuaXRlbXNpemUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUcmFuc2Zlci1lbmNvZGluZycsICdjaHVua2VkJykKIAogICAgICAgICBzZWxfaG9zdCA9IGhvc3QKICAgICAgICAgaWYgcmVxdWVzdC5oYXNfcHJveHkoKToKQEAgLTEyNTEsNyArMTMxNCw4IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGgucmVxdWVzdChyZXEuZ2V0X21ldGhvZCgpLCByZXEuc2VsZWN0b3IsIHJlcS5kYXRhLCBoZWFkZXJzKQorICAgICAgICAgICAgICAgIGgucmVxdWVzdChyZXEuZ2V0X21ldGhvZCgpLCByZXEuc2VsZWN0b3IsIHJlcS5kYXRhLCBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1yZXEuaGFzX2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjogIyB0aW1lb3V0IGVycm9yCiAgICAgICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoZXJyKQogICAgICAgICAgICAgciA9IGguZ2V0cmVzcG9uc2UoKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weSBiL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKaW5kZXggOGI2OWZkOS4uODVhZGQxNiAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQorKysgYi9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CkBAIC0xMCw3ICsxMCw5IEBACiAgICAgaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL25vcm9ib3RzLXJmYy50eHQKICIiIgogCi1pbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdAoraW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgdXJsbGliLnBhcnNlCitpbXBvcnQgdXJsbGliLnJlcXVlc3QKIAogX19hbGxfXyA9IFsiUm9ib3RGaWxlUGFyc2VyIl0KIApAQCAtMTIwLDEwICsxMjIsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJ1bGVsaW5lcy5hcHBlbmQoUnVsZUxpbmUobGluZVsxXSwgVHJ1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmVbMF0gPT0gImNyYXdsLWRlbGF5IjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYmVmb3JlIHRyeWluZyB0byBjb252ZXJ0IHRvIGludCB3ZSBuZWVkIHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgc3VyZSB0aGF0IHJvYm90cy50eHQgaGFzIHZhbGlkIHN5bnRheCBvdGhlcndpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaXQgd2lsbCBjcmFzaAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZVsxXS5zdHJpcCgpLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZWxheSA9IGludChsaW5lWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICJyZXF1ZXN0LXJhdGUiOgorICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZSAhPSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVycyA9IGxpbmVbMV0uc3BsaXQoJy8nKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBhbGwgdmFsdWVzIGFyZSBzYW5lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuKG51bWJlcnMpID09IDIgYW5kIG51bWJlcnNbMF0uc3RyaXAoKS5pc2RpZ2l0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbnVtYmVyc1sxXS5zdHJpcCgpLmlzZGlnaXQoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxX3JhdGUgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdyZXFfcmF0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0cyBzZWNvbmRzJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5yZXFfcmF0ZSA9IHJlcV9yYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucmVxX3JhdGUucmVxdWVzdHMgPSBpbnQobnVtYmVyc1swXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5yZXFfcmF0ZS5zZWNvbmRzID0gaW50KG51bWJlcnNbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIKICAgICAgICAgaWYgc3RhdGUgPT0gMjoKICAgICAgICAgICAgIHNlbGYuX2FkZF9lbnRyeShlbnRyeSkKIAotCiAgICAgZGVmIGNhbl9mZXRjaChzZWxmLCB1c2VyYWdlbnQsIHVybCk6CiAgICAgICAgICIiInVzaW5nIHRoZSBwYXJzZWQgcm9ib3RzLnR4dCBkZWNpZGUgaWYgdXNlcmFnZW50IGNhbiBmZXRjaCB1cmwiIiIKICAgICAgICAgaWYgc2VsZi5kaXNhbGxvd19hbGw6CkBAIC0xNTMsNiArMTc0LDE4IEBACiAgICAgICAgICMgYWdlbnQgbm90IGZvdW5kID09PiBhY2Nlc3MgZ3JhbnRlZAogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIGNyYXdsX2RlbGF5KHNlbGYsIHVzZXJhZ2VudCk6CisgICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXM6CisgICAgICAgICAgICBpZiBlbnRyeS5hcHBsaWVzX3RvKHVzZXJhZ2VudCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmRlbGF5CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcmVxdWVzdF9yYXRlKHNlbGYsIHVzZXJhZ2VudCk6CisgICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXM6CisgICAgICAgICAgICBpZiBlbnRyeS5hcHBsaWVzX3RvKHVzZXJhZ2VudCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnJlcV9yYXRlCisgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICcnLmpvaW4oW3N0cihlbnRyeSkgKyAiXG4iIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXNdKQogCkBAIC0xODAsNiArMjEzLDggQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYudXNlcmFnZW50cyA9IFtdCiAgICAgICAgIHNlbGYucnVsZWxpbmVzID0gW10KKyAgICAgICAgc2VsZi5kZWxheSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZXFfcmF0ZSA9IE5vbmUKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXQgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3V1aWQucHkgYi9MaWIvdXVpZC5weQppbmRleCBlOTZlN2UwLi4yMDBjODAwIDEwMDY0NAotLS0gYS9MaWIvdXVpZC5weQorKysgYi9MaWIvdXVpZC5weQpAQCAtNDg3LDcgKzQ4Nyw2IEBACiAgICAgIyBBc3N1bWUgdGhhdCB0aGUgdXVpZF9nZW5lcmF0ZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiBmcm9tIDEwLjUgb253YXJkLAogICAgICMgdGhlIHRlc3QgY2FuIGJlIGFkanVzdGVkIHdoZW4gYSBsYXRlciB2ZXJzaW9uIGlzIGZpeGVkLgogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIGlmIGludChvcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPj0gOToKICAgICAgICAgICAgIF91dWlkX2dlbmVyYXRlX3RpbWUgPSBOb25lCiAKZGlmZiAtLWdpdCBhL0xpYi92ZW52L19faW5pdF9fLnB5IGIvTGliL3ZlbnYvX19pbml0X18ucHkKaW5kZXggNzQyNDVhYi4uMGEwOTRlMyAxMDA2NDQKLS0tIGEvTGliL3ZlbnYvX19pbml0X18ucHkKKysrIGIvTGliL3ZlbnYvX19pbml0X18ucHkKQEAgLTMsMjggKzMsNiBAQAogCiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBWaW5heSBTYWppcC4KIExpY2Vuc2VkIHRvIHRoZSBQU0YgdW5kZXIgYSBjb250cmlidXRvciBhZ3JlZW1lbnQuCi0KLXVzYWdlOiBweXRob24gLW0gdmVudiBbLWhdIFstLXN5c3RlbS1zaXRlLXBhY2thZ2VzXSBbLS1zeW1saW5rc10gWy0tY2xlYXJdCi0gICAgICAgICAgICBbLS11cGdyYWRlXQotICAgICAgICAgICAgRU5WX0RJUiBbRU5WX0RJUiAuLi5dCi0KLUNyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KLQotcG9zaXRpb25hbCBhcmd1bWVudHM6Ci0gIEVOVl9ESVIgICAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgotCi1vcHRpb25hbCBhcmd1bWVudHM6Ci0gIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgotICAtLXN5bWxpbmtzICAgICAgICAgICAgQXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkuCi0gIC0tY2xlYXIgICAgICAgICAgICAgICBEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCi0gIC0tdXBncmFkZSAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCi0gIC0td2l0aG91dC1waXAgICAgICAgICBTa2lwcyBpbnN0YWxsaW5nIG9yIHVwZ3JhZGluZyBwaXAgaW4gdGhlIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkIGJ5IGRlZmF1bHQpCiAiIiIKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKQEAgLTU4LDE1ICszNiwxNyBAQAogICAgIDpwYXJhbSB1cGdyYWRlOiBJZiBUcnVlLCB1cGdyYWRlIGFuIGV4aXN0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAgICAgOnBhcmFtIHdpdGhfcGlwOiBJZiBUcnVlLCBlbnN1cmUgcGlwIGlzIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbAogICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQKKyAgICA6cGFyYW0gcHJvbXB0OiBBbHRlcm5hdGl2ZSB0ZXJtaW5hbCBwcmVmaXggZm9yIHRoZSBlbnZpcm9ubWVudC4KICAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSwgcHJvbXB0PU5vbmUpOgogICAgICAgICBzZWxmLnN5c3RlbV9zaXRlX3BhY2thZ2VzID0gc3lzdGVtX3NpdGVfcGFja2FnZXMKICAgICAgICAgc2VsZi5jbGVhciA9IGNsZWFyCiAgICAgICAgIHNlbGYuc3ltbGlua3MgPSBzeW1saW5rcwogICAgICAgICBzZWxmLnVwZ3JhZGUgPSB1cGdyYWRlCiAgICAgICAgIHNlbGYud2l0aF9waXAgPSB3aXRoX3BpcAorICAgICAgICBzZWxmLnByb21wdCA9IHByb21wdAogCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBlbnZfZGlyKToKICAgICAgICAgIiIiCkBAIC0xMTIsNyArOTIsOCBAQAogICAgICAgICBjb250ZXh0ID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKICAgICAgICAgY29udGV4dC5lbnZfZGlyID0gZW52X2RpcgogICAgICAgICBjb250ZXh0LmVudl9uYW1lID0gb3MucGF0aC5zcGxpdChlbnZfZGlyKVsxXQotICAgICAgICBjb250ZXh0LnByb21wdCA9ICcoJXMpICcgJSBjb250ZXh0LmVudl9uYW1lCisgICAgICAgIHByb21wdCA9IHNlbGYucHJvbXB0IGlmIHNlbGYucHJvbXB0IGlzIG5vdCBOb25lIGVsc2UgY29udGV4dC5lbnZfbmFtZQorICAgICAgICBjb250ZXh0LnByb21wdCA9ICcoJXMpICcgJSBwcm9tcHQKICAgICAgICAgY3JlYXRlX2lmX25lZWRlZChlbnZfZGlyKQogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIGVudjoKQEAgLTM0OCwyNiArMzI5LDExIEBACiAKIAogZGVmIGNyZWF0ZShlbnZfZGlyLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSk6Ci0gICAgIiIiCi0gICAgQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KLQotICAgIEJ5IGRlZmF1bHQsIG1ha2VzIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcyBkaXIgKnVuKmF2YWlsYWJsZSB0bwotICAgIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LCBhbmQgdXNlcyBjb3B5aW5nIHJhdGhlciB0aGFuIHN5bWxpbmtpbmcgZm9yIGZpbGVzCi0gICAgb2J0YWluZWQgZnJvbSB0aGUgc291cmNlIFB5dGhvbiBpbnN0YWxsYXRpb24uCi0KLSAgICA6cGFyYW0gZW52X2RpcjogVGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgotICAgIDpwYXJhbSBzeXN0ZW1fc2l0ZV9wYWNrYWdlczogSWYgVHJ1ZSwgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIgaXMgYXZhaWxhYmxlIHRvIHRoZSBlbnZpcm9ubWVudC4KLSAgICA6cGFyYW0gY2xlYXI6IElmIFRydWUsIGRlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZgotICAgICAgICAgICAgICAgICAgaXQgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KLSAgICA6cGFyYW0gc3ltbGlua3M6IElmIFRydWUsIGF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5IGZpbGVzIGludG8KLSAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCi0gICAgOnBhcmFtIHdpdGhfcGlwOiBJZiBUcnVlLCBlbnN1cmUgcGlwIGlzIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbAotICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQKLSAgICAiIiIKKyAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHdpdGhfcGlwPUZhbHNlLCBwcm9tcHQ9Tm9uZSk6CisgICAgIiIiQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4iIiIKICAgICBidWlsZGVyID0gRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1zeXN0ZW1fc2l0ZV9wYWNrYWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1jbGVhciwgc3ltbGlua3M9c3ltbGlua3MsIHdpdGhfcGlwPXdpdGhfcGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPWNsZWFyLCBzeW1saW5rcz1zeW1saW5rcywgd2l0aF9waXA9d2l0aF9waXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0PXByb21wdCkKICAgICBidWlsZGVyLmNyZWF0ZShlbnZfZGlyKQogCiBkZWYgbWFpbihhcmdzPU5vbmUpOgpAQCAtNDI3LDYgKzM5Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbCBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnkgZGVmYXVsdCknKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXByb21wdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgcHJvbXB0IHByZWZpeCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgZW52aXJvbm1lbnQuJykKICAgICAgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCiAgICAgICAgIGlmIG9wdGlvbnMudXBncmFkZSBhbmQgb3B0aW9ucy5jbGVhcjoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3lvdSBjYW5ub3Qgc3VwcGx5IC0tdXBncmFkZSBhbmQgLS1jbGVhciB0b2dldGhlci4nKQpAQCAtNDM0LDcgKzQwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPW9wdGlvbnMuY2xlYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPW9wdGlvbnMuc3ltbGlua3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGU9b3B0aW9ucy51cGdyYWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoX3BpcD1vcHRpb25zLndpdGhfcGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoX3BpcD1vcHRpb25zLndpdGhfcGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ9b3B0aW9ucy5wcm9tcHQpCiAgICAgICAgIGZvciBkIGluIG9wdGlvbnMuZGlyczoKICAgICAgICAgICAgIGJ1aWxkZXIuY3JlYXRlKGQpCiAKZGlmZiAtLWdpdCBhL0xpYi93YXJuaW5ncy5weSBiL0xpYi93YXJuaW5ncy5weQppbmRleCBjNjYzMWZjLi4yYjQwN2ZmIDEwMDY0NAotLS0gYS9MaWIvd2FybmluZ3MucHkKKysrIGIvTGliL3dhcm5pbmdzLnB5CkBAIC0yLDM5ICsyLDExMiBAQAogCiBpbXBvcnQgc3lzCiAKKwogX19hbGxfXyA9IFsid2FybiIsICJ3YXJuX2V4cGxpY2l0IiwgInNob3d3YXJuaW5nIiwKICAgICAgICAgICAgImZvcm1hdHdhcm5pbmciLCAiZmlsdGVyd2FybmluZ3MiLCAic2ltcGxlZmlsdGVyIiwKICAgICAgICAgICAgInJlc2V0d2FybmluZ3MiLCAiY2F0Y2hfd2FybmluZ3MiXQogCi0KIGRlZiBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgogICAgICIiIkhvb2sgdG8gd3JpdGUgYSB3YXJuaW5nIHRvIGEgZmlsZTsgcmVwbGFjZSBpZiB5b3UgbGlrZS4iIiIKLSAgICBpZiBmaWxlIGlzIE5vbmU6Ci0gICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCi0gICAgICAgIGlmIGZpbGUgaXMgTm9uZToKLSAgICAgICAgICAgICMgc3lzLnN0ZGVyciBpcyBOb25lIHdoZW4gcnVuIHdpdGggcHl0aG9udy5leGUgLSB3YXJuaW5ncyBnZXQgbG9zdAotICAgICAgICAgICAgcmV0dXJuCi0gICAgdHJ5OgotICAgICAgICBmaWxlLndyaXRlKGZvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzICMgdGhlIGZpbGUgKHByb2JhYmx5IHN0ZGVycikgaXMgaW52YWxpZCAtIHRoaXMgd2FybmluZyBnZXRzIGxvc3QuCisgICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGUsIGxpbmUpCisgICAgX3Nob3d3YXJubXNnX2ltcGwobXNnKQogCiBkZWYgZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZT1Ob25lKToKICAgICAiIiJGdW5jdGlvbiB0byBmb3JtYXQgYSB3YXJuaW5nIHRoZSBzdGFuZGFyZCB3YXkuIiIiCi0gICAgcyA9ICAiJXM6JXM6ICVzOiAlc1xuIiAlIChmaWxlbmFtZSwgbGluZW5vLCBjYXRlZ29yeS5fX25hbWVfXywgbWVzc2FnZSkKLSAgICBpZiBsaW5lIGlzIE5vbmU6CisgICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIE5vbmUsIGxpbmUpCisgICAgcmV0dXJuIF9mb3JtYXR3YXJubXNnX2ltcGwobXNnKQorCitkZWYgX3Nob3d3YXJubXNnX2ltcGwobXNnKToKKyAgICBmaWxlID0gbXNnLmZpbGUKKyAgICBpZiBmaWxlIGlzIE5vbmU6CisgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCisgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgICMgc3lzLnN0ZGVyciBpcyBOb25lIHdoZW4gcnVuIHdpdGggcHl0aG9udy5leGU6CisgICAgICAgICAgICAjIHdhcm5pbmdzIGdldCBsb3N0CisgICAgICAgICAgICByZXR1cm4KKyAgICB0ZXh0ID0gX2Zvcm1hdHdhcm5tc2cobXNnKQorICAgIHRyeToKKyAgICAgICAgZmlsZS53cml0ZSh0ZXh0KQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgorICAgICAgICBwYXNzCisKK2RlZiBfZm9ybWF0d2Fybm1zZ19pbXBsKG1zZyk6CisgICAgcyA9ICAoIiVzOiVzOiAlczogJXNcbiIKKyAgICAgICAgICAlIChtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8sIG1zZy5jYXRlZ29yeS5fX25hbWVfXywKKyAgICAgICAgICAgICBtc2cubWVzc2FnZSkpCisKKyAgICBpZiBtc2cubGluZSBpcyBOb25lOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgbGluZWNhY2hlCi0gICAgICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8pCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAjIFdoZW4gYSB3YXJuaW5nIGlzIGxvZ2dlZCBkdXJpbmcgUHl0aG9uIHNodXRkb3duLCBsaW5lY2FjaGUKICAgICAgICAgICAgICMgYW5kIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvbid0IHdvcmsgYW55bW9yZQogICAgICAgICAgICAgbGluZSA9IE5vbmUKKyAgICAgICAgICAgIGxpbmVjYWNoZSA9IE5vbmUKKyAgICBlbHNlOgorICAgICAgICBsaW5lID0gbXNnLmxpbmUKICAgICBpZiBsaW5lOgogICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgIHMgKz0gIiAgJXNcbiIgJSBsaW5lCisKKyAgICBpZiBtc2cuc291cmNlIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2VtYWxsb2MKKyAgICAgICAgICAgIHRiID0gdHJhY2VtYWxsb2MuZ2V0X29iamVjdF90cmFjZWJhY2sobXNnLnNvdXJjZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICMgV2hlbiBhIHdhcm5pbmcgaXMgbG9nZ2VkIGR1cmluZyBQeXRob24gc2h1dGRvd24sIHRyYWNlbWFsbG9jCisgICAgICAgICAgICAjIGFuZCB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkb24ndCB3b3JrIGFueW1vcmUKKyAgICAgICAgICAgIHRiID0gTm9uZQorCisgICAgICAgIGlmIHRiIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcyArPSAnT2JqZWN0IGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4nCisgICAgICAgICAgICBmb3IgZnJhbWUgaW4gdGI6CisgICAgICAgICAgICAgICAgcyArPSAoJyAgRmlsZSAiJXMiLCBsaW5lbm8gJXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAlIChmcmFtZS5maWxlbmFtZSwgZnJhbWUubGluZW5vKSkKKworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZWNhY2hlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gTm9uZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBOb25lCisgICAgICAgICAgICAgICAgaWYgbGluZToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBzICs9ICcgICAgJXNcbicgJSBsaW5lCiAgICAgcmV0dXJuIHMKIAorIyBLZWVwIGEgcmVmZXJlbmNlIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiB3YXMgcmVwbGFjZWQKK19zaG93d2FybmluZyA9IHNob3d3YXJuaW5nCisKK2RlZiBfc2hvd3dhcm5tc2cobXNnKToKKyAgICAiIiJIb29rIHRvIHdyaXRlIGEgd2FybmluZyB0byBhIGZpbGU7IHJlcGxhY2UgaWYgeW91IGxpa2UuIiIiCisgICAgc2hvd3dhcm5pbmcgPSBnbG9iYWxzKCkuZ2V0KCdzaG93d2FybmluZycsIF9zaG93d2FybmluZykKKyAgICBpZiBzaG93d2FybmluZyBpcyBub3QgX3Nob3d3YXJuaW5nOgorICAgICAgICAjIHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgd2FzIHJlcGxhY2VkCisgICAgICAgIGlmIG5vdCBjYWxsYWJsZShzaG93d2FybmluZyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIndhcm5pbmdzLnNob3d3YXJuaW5nKCkgbXVzdCBiZSBzZXQgdG8gYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIG9yIG1ldGhvZCIpCisKKyAgICAgICAgc2hvd3dhcm5pbmcobXNnLm1lc3NhZ2UsIG1zZy5jYXRlZ29yeSwgbXNnLmZpbGVuYW1lLCBtc2cubGluZW5vLAorICAgICAgICAgICAgICAgICAgICBtc2cuZmlsZSwgbXNnLmxpbmUpCisgICAgICAgIHJldHVybgorICAgIF9zaG93d2Fybm1zZ19pbXBsKG1zZykKKworIyBLZWVwIGEgcmVmZXJlbmNlIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiB3YXMgcmVwbGFjZWQKK19mb3JtYXR3YXJuaW5nID0gZm9ybWF0d2FybmluZworCitkZWYgX2Zvcm1hdHdhcm5tc2cobXNnKToKKyAgICAiIiJGdW5jdGlvbiB0byBmb3JtYXQgYSB3YXJuaW5nIHRoZSBzdGFuZGFyZCB3YXkuIiIiCisgICAgZm9ybWF0d2FybmluZyA9IGdsb2JhbHMoKS5nZXQoJ2Zvcm1hdHdhcm5pbmcnLCBfZm9ybWF0d2FybmluZykKKyAgICBpZiBmb3JtYXR3YXJuaW5nIGlzIG5vdCBfZm9ybWF0d2FybmluZzoKKyAgICAgICAgIyB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nKCkgd2FzIHJlcGxhY2VkCisgICAgICAgIHJldHVybiBmb3JtYXR3YXJuaW5nKG1zZy5tZXNzYWdlLCBtc2cuY2F0ZWdvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5maWxlbmFtZSwgbXNnLmxpbmVubywgbGluZT1tc2cubGluZSkKKyAgICByZXR1cm4gX2Zvcm1hdHdhcm5tc2dfaW1wbChtc2cpCisKIGRlZiBmaWx0ZXJ3YXJuaW5ncyhhY3Rpb24sIG1lc3NhZ2U9IiIsIGNhdGVnb3J5PVdhcm5pbmcsIG1vZHVsZT0iIiwgbGluZW5vPTAsCiAgICAgICAgICAgICAgICAgICAgYXBwZW5kPUZhbHNlKToKICAgICAiIiJJbnNlcnQgYW4gZW50cnkgaW50byB0aGUgbGlzdCBvZiB3YXJuaW5ncyBmaWx0ZXJzIChhdCB0aGUgZnJvbnQpLgpAQCAtMTg1LDcgKzI1OCw3IEBACiAKIAogIyBDb2RlIHR5cGljYWxseSByZXBsYWNlZCBieSBfd2FybmluZ3MKLWRlZiB3YXJuKG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsIHN0YWNrbGV2ZWw9MSk6CitkZWYgd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEsIHNvdXJjZT1Ob25lKToKICAgICAiIiJJc3N1ZSBhIHdhcm5pbmcsIG9yIG1heWJlIGlnbm9yZSBpdCBvciByYWlzZSBhbiBleGNlcHRpb24uIiIiCiAgICAgIyBDaGVjayBpZiBtZXNzYWdlIGlzIGFscmVhZHkgYSBXYXJuaW5nIG9iamVjdAogICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgV2FybmluZyk6CkBAIC0yMzUsMTAgKzMwOCwxMSBAQAogICAgICAgICAgICAgZmlsZW5hbWUgPSBtb2R1bGUKICAgICByZWdpc3RyeSA9IGdsb2JhbHMuc2V0ZGVmYXVsdCgiX193YXJuaW5ncmVnaXN0cnlfXyIsIHt9KQogICAgIHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwgcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICBnbG9iYWxzKQorICAgICAgICAgICAgICAgICAgZ2xvYmFscywgc291cmNlKQogCiBkZWYgd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKToKKyAgICAgICAgICAgICAgICAgIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lLAorICAgICAgICAgICAgICAgICAgc291cmNlPU5vbmUpOgogICAgIGxpbmVubyA9IGludChsaW5lbm8pCiAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgIG1vZHVsZSA9IGZpbGVuYW1lIG9yICI8dW5rbm93bj4iCkBAIC0zMDMsMjIgKzM3NywxOCBAQAogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgYWN0aW9uICglcikgaW4gd2FybmluZ3MuZmlsdGVyczpcbiAlcyIgJQogICAgICAgICAgICAgICAoYWN0aW9uLCBpdGVtKSkKLSAgICBpZiBub3QgY2FsbGFibGUoc2hvd3dhcm5pbmcpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoIndhcm5pbmdzLnNob3d3YXJuaW5nKCkgbXVzdCBiZSBzZXQgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gb3IgbWV0aG9kIikKICAgICAjIFByaW50IG1lc3NhZ2UgYW5kIGNvbnRleHQKLSAgICBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubykKKyAgICBtc2cgPSBXYXJuaW5nTWVzc2FnZShtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgc291cmNlKQorICAgIF9zaG93d2Fybm1zZyhtc2cpCiAKIAogY2xhc3MgV2FybmluZ01lc3NhZ2Uob2JqZWN0KToKIAotICAgICIiIkhvbGRzIHRoZSByZXN1bHQgb2YgYSBzaW5nbGUgc2hvd3dhcm5pbmcoKSBjYWxsLiIiIgotCiAgICAgX1dBUk5JTkdfREVUQUlMUyA9ICgibWVzc2FnZSIsICJjYXRlZ29yeSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLCAiZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAibGluZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAibGluZSIsICJzb3VyY2UiKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIGxpbmU9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGxpbmU9Tm9uZSwgc291cmNlPU5vbmUpOgogICAgICAgICBsb2NhbF92YWx1ZXMgPSBsb2NhbHMoKQogICAgICAgICBmb3IgYXR0ciBpbiBzZWxmLl9XQVJOSU5HX0RFVEFJTFM6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGF0dHIsIGxvY2FsX3ZhbHVlc1thdHRyXSkKQEAgLTM3NiwxMSArNDQ2LDEyIEBACiAgICAgICAgIHNlbGYuX21vZHVsZS5maWx0ZXJzID0gc2VsZi5fZmlsdGVyc1s6XQogICAgICAgICBzZWxmLl9tb2R1bGUuX2ZpbHRlcnNfbXV0YXRlZCgpCiAgICAgICAgIHNlbGYuX3Nob3d3YXJuaW5nID0gc2VsZi5fbW9kdWxlLnNob3d3YXJuaW5nCisgICAgICAgIHNlbGYuX3Nob3d3YXJubXNnID0gc2VsZi5fbW9kdWxlLl9zaG93d2Fybm1zZwogICAgICAgICBpZiBzZWxmLl9yZWNvcmQ6CiAgICAgICAgICAgICBsb2cgPSBbXQotICAgICAgICAgICAgZGVmIHNob3d3YXJuaW5nKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICAgICAgbG9nLmFwcGVuZChXYXJuaW5nTWVzc2FnZSgqYXJncywgKiprd2FyZ3MpKQotICAgICAgICAgICAgc2VsZi5fbW9kdWxlLnNob3d3YXJuaW5nID0gc2hvd3dhcm5pbmcKKyAgICAgICAgICAgIGRlZiBzaG93YXJubXNnKG1zZyk6CisgICAgICAgICAgICAgICAgbG9nLmFwcGVuZChtc2cpCisgICAgICAgICAgICBzZWxmLl9tb2R1bGUuX3Nob3d3YXJubXNnID0gc2hvd2Fybm1zZwogICAgICAgICAgICAgcmV0dXJuIGxvZwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTM5MSw2ICs0NjIsNyBAQAogICAgICAgICBzZWxmLl9tb2R1bGUuZmlsdGVycyA9IHNlbGYuX2ZpbHRlcnMKICAgICAgICAgc2VsZi5fbW9kdWxlLl9maWx0ZXJzX211dGF0ZWQoKQogICAgICAgICBzZWxmLl9tb2R1bGUuc2hvd3dhcm5pbmcgPSBzZWxmLl9zaG93d2FybmluZworICAgICAgICBzZWxmLl9tb2R1bGUuX3Nob3d3YXJubXNnID0gc2VsZi5fc2hvd3dhcm5tc2cKIAogCiAjIGZpbHRlcnMgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBmaWx0ZXIgNS10dXBsZXMKZGlmZiAtLWdpdCBhL0xpYi93YXZlLnB5IGIvTGliL3dhdmUucHkKaW5kZXggOGExMDFlMy4uZjcxZjdlNSAxMDA2NDQKLS0tIGEvTGliL3dhdmUucHkKKysrIGIvTGliL3dhdmUucHkKQEAgLTczLDcgKzczLDcgQEAKIAogaW1wb3J0IGJ1aWx0aW5zCiAKLV9fYWxsX18gPSBbIm9wZW4iLCAib3BlbmZwIiwgIkVycm9yIl0KK19fYWxsX18gPSBbIm9wZW4iLCAib3BlbmZwIiwgIkVycm9yIiwgIldhdmVfcmVhZCIsICJXYXZlX3dyaXRlIl0KIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5IGIvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQppbmRleCA3ZmRkYmU4Li5mNzE1NjNhIDEwMDY0NAotLS0gYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CisrKyBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKQEAgLTExLDcgKzExLDYgQEAKICIiIgogCiBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBIVFRQU2VydmVyCi1mcm9tIGlvIGltcG9ydCBCdWZmZXJlZFdyaXRlcgogaW1wb3J0IHN5cwogaW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB3c2dpcmVmLmhhbmRsZXJzIGltcG9ydCBTaW1wbGVIYW5kbGVyCkBAIC0xMjcsMTcgKzEyNiwxMSBAQAogICAgICAgICBpZiBub3Qgc2VsZi5wYXJzZV9yZXF1ZXN0KCk6ICMgQW4gZXJyb3IgY29kZSBoYXMgYmVlbiBzZW50LCBqdXN0IGV4aXQKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICMgQXZvaWQgcGFzc2luZyB0aGUgcmF3IGZpbGUgb2JqZWN0IHdmaWxlLCB3aGljaCBjYW4gZG8gcGFydGlhbAotICAgICAgICAjIHdyaXRlcyAoSXNzdWUgMjQyOTEpCi0gICAgICAgIHN0ZG91dCA9IEJ1ZmZlcmVkV3JpdGVyKHNlbGYud2ZpbGUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRsZXIgPSBTZXJ2ZXJIYW5kbGVyKAotICAgICAgICAgICAgICAgIHNlbGYucmZpbGUsIHN0ZG91dCwgc2VsZi5nZXRfc3RkZXJyKCksIHNlbGYuZ2V0X2Vudmlyb24oKQotICAgICAgICAgICAgKQotICAgICAgICAgICAgaGFuZGxlci5yZXF1ZXN0X2hhbmRsZXIgPSBzZWxmICAgICAgIyBiYWNrcG9pbnRlciBmb3IgbG9nZ2luZwotICAgICAgICAgICAgaGFuZGxlci5ydW4oc2VsZi5zZXJ2ZXIuZ2V0X2FwcCgpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc3Rkb3V0LmRldGFjaCgpCisgICAgICAgIGhhbmRsZXIgPSBTZXJ2ZXJIYW5kbGVyKAorICAgICAgICAgICAgc2VsZi5yZmlsZSwgc2VsZi53ZmlsZSwgc2VsZi5nZXRfc3RkZXJyKCksIHNlbGYuZ2V0X2Vudmlyb24oKQorICAgICAgICApCisgICAgICAgIGhhbmRsZXIucmVxdWVzdF9oYW5kbGVyID0gc2VsZiAgICAgICMgYmFja3BvaW50ZXIgZm9yIGxvZ2dpbmcKKyAgICAgICAgaGFuZGxlci5ydW4oc2VsZi5zZXJ2ZXIuZ2V0X2FwcCgpKQogCiAKIApAQCAtMTYzLDEwICsxNTYsOSBAQAogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgZGVtb19hcHApCi0gICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQotICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24iLCBzYVswXSwgInBvcnQiLCBzYVsxXSwgIi4uLiIpCi0gICAgaW1wb3J0IHdlYmJyb3dzZXIKLSAgICB3ZWJicm93c2VyLm9wZW4oJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94eXo/YWJjJykKLSAgICBodHRwZC5oYW5kbGVfcmVxdWVzdCgpICAjIHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKLSAgICBodHRwZC5zZXJ2ZXJfY2xvc2UoKQorICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKSBhcyBodHRwZDoKKyAgICAgICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQorICAgICAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIiwgc2FbMF0sICJwb3J0Iiwgc2FbMV0sICIuLi4iKQorICAgICAgICBpbXBvcnQgd2ViYnJvd3NlcgorICAgICAgICB3ZWJicm93c2VyLm9wZW4oJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94eXo/YWJjJykKKyAgICAgICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKSAgIyBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0CmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5IGIvTGliL3htbC9kb20veG1sYnVpbGRlci5weQppbmRleCA0NDRmMGIyLi5lOWExNTM2IDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CisrKyBiL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKQEAgLTM1MywxNCArMzUzLDE0IEBACiBjbGFzcyBEb2N1bWVudExTOgogICAgICIiIk1peGluIHRvIGNyZWF0ZSBkb2N1bWVudHMgdGhhdCBjb25mb3JtIHRvIHRoZSBsb2FkL3NhdmUgc3BlYy4iIiIKIAotICAgIGFzeW5jID0gX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5KCkKICAgICBhc3luY18gPSBGYWxzZQorICAgIGxvY2FscygpWydhc3luYyddID0gX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5KCkgICMgQXZvaWQgRGVwcmVjYXRpb25XYXJuaW5nCiAKICAgICBkZWYgX2dldF9hc3luYyhzZWxmKToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgX3NldF9hc3luYyhzZWxmLCBhc3luYyk6Ci0gICAgICAgIGlmIGFzeW5jOgorICAgIGRlZiBfc2V0X2FzeW5jKHNlbGYsIGZsYWcpOgorICAgICAgICBpZiBmbGFnOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RTdXBwb3J0ZWRFcnIoCiAgICAgICAgICAgICAgICAgImFzeW5jaHJvbm91cyBkb2N1bWVudCBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKQogCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5IGIvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQppbmRleCA1ZGU0MjMyLi5hYjZiNzlhIDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKQEAgLTU5LDE1ICs1OSwxNSBAQAogaW1wb3J0IHJlCiAKIHhwYXRoX3Rva2VuaXplcl9yZSA9IHJlLmNvbXBpbGUoCi0gICAgIigiCi0gICAgIidbXiddKid8XCJbXlwiXSpcInwiCi0gICAgIjo6fCIKLSAgICAiLy8/fCIKLSAgICAiXC5cLnwiCi0gICAgIlwoXCl8IgotICAgICJbLy4qOlxbXF1cKFwpQD1dKXwiCi0gICAgIigoPzpce1tefV0rXH0pP1teL1xbXF1cKFwpQD1cc10rKXwiCi0gICAgIlxzKyIKKyAgICByIigiCisgICAgciInW14nXSonfFwiW15cIl0qXCJ8IgorICAgIHIiOjp8IgorICAgIHIiLy8/fCIKKyAgICByIlwuXC58IgorICAgIHIiXChcKXwiCisgICAgciJbLy4qOlxbXF1cKFwpQD1dKXwiCisgICAgciIoKD86XHtbXn1dK1x9KT9bXi9cW1xdXChcKUA9XHNdKyl8IgorICAgIHIiXHMrIgogICAgICkKIAogZGVmIHhwYXRoX3Rva2VuaXplcihwYXR0ZXJuLCBuYW1lc3BhY2VzPU5vbmUpOgpAQCAtMTgwLDcgKzE4MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgZWxlbS5nZXQoa2V5KSA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgeWllbGQgZWxlbQogICAgICAgICByZXR1cm4gc2VsZWN0Ci0gICAgaWYgc2lnbmF0dXJlID09ICItIiBhbmQgbm90IHJlLm1hdGNoKCJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKKyAgICBpZiBzaWduYXR1cmUgPT0gIi0iIGFuZCBub3QgcmUubWF0Y2gociJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKICAgICAgICAgIyBbdGFnXQogICAgICAgICB0YWcgPSBwcmVkaWNhdGVbMF0KICAgICAgICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgpAQCAtMTg4LDcgKzE4OCw3IEBACiAgICAgICAgICAgICAgICAgaWYgZWxlbS5maW5kKHRhZykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgcmV0dXJuIHNlbGVjdAotICAgIGlmIHNpZ25hdHVyZSA9PSAiLT0nIiBhbmQgbm90IHJlLm1hdGNoKCJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKKyAgICBpZiBzaWduYXR1cmUgPT0gIi09JyIgYW5kIG5vdCByZS5tYXRjaChyIlwtP1xkKyQiLCBwcmVkaWNhdGVbMF0pOgogICAgICAgICAjIFt0YWc9J3ZhbHVlJ10KICAgICAgICAgdGFnID0gcHJlZGljYXRlWzBdCiAgICAgICAgIHZhbHVlID0gcHJlZGljYXRlWy0xXQpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKaW5kZXggOTI4MjFjNS4uNzM1NDA1NiAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CkBAIC04NSw3ICs4NSw3IEBACiAgICAgIlRyZWVCdWlsZGVyIiwKICAgICAiVkVSU0lPTiIsCiAgICAgIlhNTCIsICJYTUxJRCIsCi0gICAgIlhNTFBhcnNlciIsCisgICAgIlhNTFBhcnNlciIsICJYTUxQdWxsUGFyc2VyIiwKICAgICAicmVnaXN0ZXJfbmFtZXNwYWNlIiwKICAgICBdCiAKQEAgLTk1LDYgKzk1LDcgQEAKIGltcG9ydCByZQogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgaW8KK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvbnRleHRsaWIKIAogZnJvbSAuIGltcG9ydCBFbGVtZW50UGF0aApAQCAtMTAyOSw3ICsxMDMwLDcgQEAKICAgICBWYWx1ZUVycm9yIGlzIHJhaXNlZCBpZiBwcmVmaXggaXMgcmVzZXJ2ZWQgb3IgaXMgaW52YWxpZC4KIAogICAgICIiIgotICAgIGlmIHJlLm1hdGNoKCJuc1xkKyQiLCBwcmVmaXgpOgorICAgIGlmIHJlLm1hdGNoKHIibnNcZCskIiwgcHJlZml4KToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUHJlZml4IGZvcm1hdCByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlIikKICAgICBmb3IgaywgdiBpbiBsaXN0KF9uYW1lc3BhY2VfbWFwLml0ZW1zKCkpOgogICAgICAgICBpZiBrID09IHVyaSBvciB2ID09IHByZWZpeDoKQEAgLTEwODQsNyArMTA4NSw3IEBACiAgICAgICAgIGlmICJcIiIgaW4gdGV4dDoKICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIlwiIiwgIiZxdW90OyIpCiAgICAgICAgICMgVGhlIGZvbGxvd2luZyBidXNpbmVzcyB3aXRoIGNhcnJpYWdlIHJldHVybnMgaXMgdG8gc2F0aXNmeQotICAgICAgICAjIFNlY3Rpb24gMi4xMSBvZiB0aGUgWE1MIHNwZWNpZmljYXRpb24sIHN0YXRpbmcgdGhhdCAKKyAgICAgICAgIyBTZWN0aW9uIDIuMTEgb2YgdGhlIFhNTCBzcGVjaWZpY2F0aW9uLCBzdGF0aW5nIHRoYXQKICAgICAgICAgIyBDUiBvciBDUiBMTiBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBqdXN0IExOCiAgICAgICAgICMgaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC8jc2VjLWxpbmUtZW5kcwogICAgICAgICBpZiAiXHJcbiIgaW4gdGV4dDoKQEAgLTEyMTEsMTYgKzEyMTIsMzcgQEAKICAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIHByb3ZpZGluZyAoZXZlbnQsIGVsZW0pIHBhaXJzLgogCiAgICAgIiIiCisgICAgIyBVc2UgdGhlIGludGVybmFsLCB1bmRvY3VtZW50ZWQgX3BhcnNlciBhcmd1bWVudCBmb3Igbm93OyBXaGVuIHRoZQorICAgICMgcGFyc2VyIGFyZ3VtZW50IG9mIGl0ZXJwYXJzZSBpcyByZW1vdmVkLCB0aGlzIGNhbiBiZSBraWxsZWQuCisgICAgcHVsbHBhcnNlciA9IFhNTFB1bGxQYXJzZXIoZXZlbnRzPWV2ZW50cywgX3BhcnNlcj1wYXJzZXIpCisgICAgZGVmIGl0ZXJhdG9yKCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBwdWxscGFyc2VyLnJlYWRfZXZlbnRzKCkKKyAgICAgICAgICAgICAgICAjIGxvYWQgZXZlbnQgYnVmZmVyCisgICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5yZWFkKDE2ICogMTAyNCkKKyAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwdWxscGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgICAgIHJvb3QgPSBwdWxscGFyc2VyLl9jbG9zZV9hbmRfcmV0dXJuX3Jvb3QoKQorICAgICAgICAgICAgeWllbGQgZnJvbSBwdWxscGFyc2VyLnJlYWRfZXZlbnRzKCkKKyAgICAgICAgICAgIGl0LnJvb3QgPSByb290CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBjbG9zZV9zb3VyY2U6CisgICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKKworICAgIGNsYXNzIEl0ZXJQYXJzZUl0ZXJhdG9yKGNvbGxlY3Rpb25zLkl0ZXJhdG9yKToKKyAgICAgICAgX19uZXh0X18gPSBpdGVyYXRvcigpLl9fbmV4dF9fCisgICAgaXQgPSBJdGVyUGFyc2VJdGVyYXRvcigpCisgICAgaXQucm9vdCA9IE5vbmUKKyAgICBkZWwgaXRlcmF0b3IsIEl0ZXJQYXJzZUl0ZXJhdG9yCisKICAgICBjbG9zZV9zb3VyY2UgPSBGYWxzZQogICAgIGlmIG5vdCBoYXNhdHRyKHNvdXJjZSwgInJlYWQiKToKICAgICAgICAgc291cmNlID0gb3Blbihzb3VyY2UsICJyYiIpCiAgICAgICAgIGNsb3NlX3NvdXJjZSA9IFRydWUKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfSXRlclBhcnNlSXRlcmF0b3Ioc291cmNlLCBldmVudHMsIHBhcnNlciwgY2xvc2Vfc291cmNlKQotICAgIGV4Y2VwdDoKLSAgICAgICAgaWYgY2xvc2Vfc291cmNlOgotICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKLSAgICAgICAgcmFpc2UKKworICAgIHJldHVybiBpdAogCiAKIGNsYXNzIFhNTFB1bGxQYXJzZXI6CkBAIC0xMjMwLDkgKzEyNTIsNyBAQAogICAgICAgICAjIHVwb24gaW4gdXNlciBjb2RlLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3NzQxIGZvciBtb3JlIGRldGFpbHMuCiAKLSAgICAgICAgIyBfZWxlbWVudHRyZWUuYyBleHBlY3RzIGEgbGlzdCwgbm90IGEgZGVxdWUKLSAgICAgICAgc2VsZi5fZXZlbnRzX3F1ZXVlID0gW10KLSAgICAgICAgc2VsZi5faW5kZXggPSAwCisgICAgICAgIHNlbGYuX2V2ZW50c19xdWV1ZSA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKICAgICAgICAgc2VsZi5fcGFyc2VyID0gX3BhcnNlciBvciBYTUxQYXJzZXIodGFyZ2V0PVRyZWVCdWlsZGVyKCkpCiAgICAgICAgICMgd2lyZSB1cCB0aGUgcGFyc2VyIGZvciBldmVudCByZXBvcnRpbmcKICAgICAgICAgaWYgZXZlbnRzIGlzIE5vbmU6CkBAIC0xMjcwLDY0ICsxMjkwLDE0IEBACiAgICAgICAgIHJldHJpZXZlZCBmcm9tIHRoZSBpdGVyYXRvci4KICAgICAgICAgIiIiCiAgICAgICAgIGV2ZW50cyA9IHNlbGYuX2V2ZW50c19xdWV1ZQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaW5kZXggPSBzZWxmLl9pbmRleAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRzW3NlbGYuX2luZGV4XQotICAgICAgICAgICAgICAgICMgQXZvaWQgcmV0YWluaW5nIHJlZmVyZW5jZXMgdG8gcGFzdCBldmVudHMKLSAgICAgICAgICAgICAgICBldmVudHNbc2VsZi5faW5kZXhdID0gTm9uZQotICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGluZGV4ICs9IDEKLSAgICAgICAgICAgICMgQ29tcGFjdCB0aGUgbGlzdCBpbiBhIE8oMSkgYW1vcnRpemVkIGZhc2hpb24KLSAgICAgICAgICAgICMgQXMgbm90ZWQgYWJvdmUsIF9lbGVtZW50cmVlLmMgbmVlZHMgYSBsaXN0LCBub3QgYSBkZXF1ZQotICAgICAgICAgICAgaWYgaW5kZXggKiAyID49IGxlbihldmVudHMpOgotICAgICAgICAgICAgICAgIGV2ZW50c1s6aW5kZXhdID0gW10KLSAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCA9IDAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSBpbmRleAorICAgICAgICB3aGlsZSBldmVudHM6CisgICAgICAgICAgICBldmVudCA9IGV2ZW50cy5wb3BsZWZ0KCkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXZlbnQKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgeWllbGQgZXZlbnQKIAogCi1jbGFzcyBfSXRlclBhcnNlSXRlcmF0b3I6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlLCBldmVudHMsIHBhcnNlciwgY2xvc2Vfc291cmNlPUZhbHNlKToKLSAgICAgICAgIyBVc2UgdGhlIGludGVybmFsLCB1bmRvY3VtZW50ZWQgX3BhcnNlciBhcmd1bWVudCBmb3Igbm93OyBXaGVuIHRoZQotICAgICAgICAjIHBhcnNlciBhcmd1bWVudCBvZiBpdGVycGFyc2UgaXMgcmVtb3ZlZCwgdGhpcyBjYW4gYmUga2lsbGVkLgotICAgICAgICBzZWxmLl9wYXJzZXIgPSBYTUxQdWxsUGFyc2VyKGV2ZW50cz1ldmVudHMsIF9wYXJzZXI9cGFyc2VyKQotICAgICAgICBzZWxmLl9maWxlID0gc291cmNlCi0gICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBjbG9zZV9zb3VyY2UKLSAgICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdCA9IE5vbmUKLQotICAgIGRlZiBfX25leHRfXyhzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICBmb3IgZXZlbnQgaW4gc2VsZi5fcGFyc2VyLnJlYWRfZXZlbnRzKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudAotICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BhcnNlci5fcGFyc2VyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlcgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQoMTYgKiAxMDI0KQotICAgICAgICAgICAgICAgIGlmIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5mZWVkKGRhdGEpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHNlbGYuX3BhcnNlci5fY2xvc2VfYW5kX3JldHVybl9yb290KCkKLSAgICAgICAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VfZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKLSAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCi0KIGRlZiBYTUwodGV4dCwgcGFyc2VyPU5vbmUpOgogICAgICIiIlBhcnNlIFhNTCBkb2N1bWVudCBmcm9tIHN0cmluZyBjb25zdGFudC4KIApkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9jbGllbnQucHkgYi9MaWIveG1scnBjL2NsaWVudC5weQppbmRleCBiYmY5ZWU2Li5iZDMyNzhlIDEwMDY0NAotLS0gYS9MaWIveG1scnBjL2NsaWVudC5weQorKysgYi9MaWIveG1scnBjL2NsaWVudC5weQpAQCAtMTMyLDYgKzEzMiw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAogaW1wb3J0IGh0dHAuY2xpZW50CiBpbXBvcnQgdXJsbGliLnBhcnNlCiBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdApAQCAtMTUxLDcgKzE1Miw3IEBACiAgICAgcmV0dXJuIHMucmVwbGFjZSgiPiIsICImZ3Q7IiwpCiAKICMgdXNlZCBpbiBVc2VyLUFnZW50IGhlYWRlciBzZW50Ci1fX3ZlcnNpb25fXyA9IHN5cy52ZXJzaW9uWzozXQorX192ZXJzaW9uX18gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIAogIyB4bWxycGMgaW50ZWdlciBsaW1pdHMKIE1BWElOVCA9ICAyKiozMS0xCkBAIC02NjcsNiArNjY4LDggQEAKIAogICAgIGRlZiBzdGFydChzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICAgIyBwcmVwYXJlIHRvIGhhbmRsZSB0aGlzIGVsZW1lbnQKKyAgICAgICAgaWYgJzonIGluIHRhZzoKKyAgICAgICAgICAgIHRhZyA9IHRhZy5zcGxpdCgnOicpWy0xXQogICAgICAgICBpZiB0YWcgPT0gImFycmF5IiBvciB0YWcgPT0gInN0cnVjdCI6CiAgICAgICAgICAgICBzZWxmLl9tYXJrcy5hcHBlbmQobGVuKHNlbGYuX3N0YWNrKSkKICAgICAgICAgc2VsZi5fZGF0YSA9IFtdCkBAIC02ODIsOSArNjg1LDEzIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZ10KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcyAjIHVua25vd24gdGFnID8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBmKHNlbGYsICIiLmpvaW4oc2VsZi5fZGF0YSkpCisgICAgICAgICAgICBpZiAnOicgbm90IGluIHRhZzoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnLnNwbGl0KCc6JylbLTFdXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgcmV0dXJuIGYoc2VsZiwgIiIuam9pbihzZWxmLl9kYXRhKSkKIAogICAgICMKICAgICAjIGFjY2VsZXJhdG9yIHN1cHBvcnQKQEAgLTY5NCw5ICs3MDEsMTMgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzICMgdW5rbm93biB0YWcgPwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwgZGF0YSkKKyAgICAgICAgICAgIGlmICc6JyBub3QgaW4gdGFnOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWcuc3BsaXQoJzonKVstMV1dCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPworICAgICAgICByZXR1cm4gZihzZWxmLCBkYXRhKQogCiAgICAgIwogICAgICMgZWxlbWVudCBkZWNvZGVycwpAQCAtNzIxLDE0ICs3MzIsMjMgQEAKICAgICBkZWYgZW5kX2ludChzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5hcHBlbmQoaW50KGRhdGEpKQogICAgICAgICBzZWxmLl92YWx1ZSA9IDAKKyAgICBkaXNwYXRjaFsiaTEiXSA9IGVuZF9pbnQKKyAgICBkaXNwYXRjaFsiaTIiXSA9IGVuZF9pbnQKICAgICBkaXNwYXRjaFsiaTQiXSA9IGVuZF9pbnQKICAgICBkaXNwYXRjaFsiaTgiXSA9IGVuZF9pbnQKICAgICBkaXNwYXRjaFsiaW50Il0gPSBlbmRfaW50CisgICAgZGlzcGF0Y2hbImJpZ2ludGVnZXIiXSA9IGVuZF9pbnQKIAogICAgIGRlZiBlbmRfZG91YmxlKHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLmFwcGVuZChmbG9hdChkYXRhKSkKICAgICAgICAgc2VsZi5fdmFsdWUgPSAwCiAgICAgZGlzcGF0Y2hbImRvdWJsZSJdID0gZW5kX2RvdWJsZQorICAgIGRpc3BhdGNoWyJmbG9hdCJdID0gZW5kX2RvdWJsZQorCisgICAgZGVmIGVuZF9iaWdkZWNpbWFsKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmFwcGVuZChEZWNpbWFsKGRhdGEpKQorICAgICAgICBzZWxmLl92YWx1ZSA9IDAKKyAgICBkaXNwYXRjaFsiYmlnZGVjaW1hbCJdID0gZW5kX2JpZ2RlY2ltYWwKIAogICAgIGRlZiBlbmRfc3RyaW5nKHNlbGYsIGRhdGEpOgogICAgICAgICBpZiBzZWxmLl9lbmNvZGluZzoKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvc2VydmVyLnB5IGIvTGliL3htbHJwYy9zZXJ2ZXIucHkKaW5kZXggNzgxNzY5My4uODQ5YmZkZCAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9zZXJ2ZXIucHkKKysrIGIvTGliL3htbHJwYy9zZXJ2ZXIucHkKQEAgLTk3MSwxNiArOTcxLDE1IEBACiAgICAgICAgICAgICBkZWYgZ2V0Q3VycmVudFRpbWUoKToKICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKIAotICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQotICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKLSAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQotICAgIHByaW50KCdJdCBpcyBhZHZpc2FibGUgdG8gcnVuIHRoaXMgZXhhbXBsZSBzZXJ2ZXIgd2l0aGluIGEgc2VjdXJlLCBjbG9zZWQgbmV0d29yay4nKQotICAgIHRyeToKLSAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQotICAgICAgICBzeXMuZXhpdCgwKQorICAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpIGFzIHNlcnZlcjoKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQorICAgICAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQorICAgICAgICBwcmludCgnSXQgaXMgYWR2aXNhYmxlIHRvIHJ1biB0aGlzIGV4YW1wbGUgc2VydmVyIHdpdGhpbiBhIHNlY3VyZSwgY2xvc2VkIG5ldHdvcmsuJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgICAgIHN5cy5leGl0KDApCmRpZmYgLS1naXQgYS9MaWIvemlwZmlsZS5weSBiL0xpYi96aXBmaWxlLnB5CmluZGV4IDU2YTI0NzkuLjdiYTRlNTkgMTAwNjQ0Ci0tLSBhL0xpYi96aXBmaWxlLnB5CisrKyBiL0xpYi96aXBmaWxlLnB5CkBAIC0zNzEsNyArMzcxLDcgQEAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlbW9kZT0lcicgJSBzdGF0LmZpbGVtb2RlKGhpKSkKICAgICAgICAgaWYgbG86CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZXh0ZXJuYWxfYXR0cj0lI3gnICUgbG8pCi0gICAgICAgIGlzZGlyID0gc2VsZi5maWxlbmFtZVstMTpdID09ICcvJworICAgICAgICBpc2RpciA9IHNlbGYuaXNfZGlyKCkKICAgICAgICAgaWYgbm90IGlzZGlyIG9yIHNlbGYuZmlsZV9zaXplOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVfc2l6ZT0lcicgJSBzZWxmLmZpbGVfc2l6ZSkKICAgICAgICAgaWYgKChub3QgaXNkaXIgb3Igc2VsZi5jb21wcmVzc19zaXplKSBhbmQKQEAgLTQ0OSw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgIGVsaWYgbG4gPT0gMDoKICAgICAgICAgICAgICAgICAgICAgY291bnRzID0gKCkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNvcnJ1cHQgZXh0cmEgZmllbGQgJXMiJShsbiwpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBCYWRaaXBGaWxlKCJDb3JydXB0IGV4dHJhIGZpZWxkICUwNHggKHNpemU9JWQpIiAlICh0cCwgbG4pKQogCiAgICAgICAgICAgICAgICAgaWR4ID0gMAogCkBAIC00NjksNiArNDY5LDQyIEBACiAKICAgICAgICAgICAgIGV4dHJhID0gZXh0cmFbbG4rNDpdCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9maWxlKGNscywgZmlsZW5hbWUsIGFyY25hbWU9Tm9uZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBhcHByb3ByaWF0ZSBaaXBJbmZvIGZvciBhIGZpbGUgb24gdGhlIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgZmlsZW5hbWUgc2hvdWxkIGJlIHRoZSBwYXRoIHRvIGEgZmlsZSBvciBkaXJlY3Rvcnkgb24gdGhlIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgYXJjbmFtZSBpcyB0aGUgbmFtZSB3aGljaCBpdCB3aWxsIGhhdmUgd2l0aGluIHRoZSBhcmNoaXZlIChieSBkZWZhdWx0LAorICAgICAgICB0aGlzIHdpbGwgYmUgdGhlIHNhbWUgYXMgZmlsZW5hbWUsIGJ1dCB3aXRob3V0IGEgZHJpdmUgbGV0dGVyIGFuZCB3aXRoCisgICAgICAgIGxlYWRpbmcgcGF0aCBzZXBhcmF0b3JzIHJlbW92ZWQpLgorICAgICAgICAiIiIKKyAgICAgICAgc3QgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICBpc2RpciA9IHN0YXQuU19JU0RJUihzdC5zdF9tb2RlKQorICAgICAgICBtdGltZSA9IHRpbWUubG9jYWx0aW1lKHN0LnN0X210aW1lKQorICAgICAgICBkYXRlX3RpbWUgPSBtdGltZVswOjZdCisgICAgICAgICMgQ3JlYXRlIFppcEluZm8gaW5zdGFuY2UgdG8gc3RvcmUgZmlsZSBpbmZvcm1hdGlvbgorICAgICAgICBpZiBhcmNuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBhcmNuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgYXJjbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5zcGxpdGRyaXZlKGFyY25hbWUpWzFdKQorICAgICAgICB3aGlsZSBhcmNuYW1lWzBdIGluIChvcy5zZXAsIG9zLmFsdHNlcCk6CisgICAgICAgICAgICBhcmNuYW1lID0gYXJjbmFtZVsxOl0KKyAgICAgICAgaWYgaXNkaXI6CisgICAgICAgICAgICBhcmNuYW1lICs9ICcvJworICAgICAgICB6aW5mbyA9IGNscyhhcmNuYW1lLCBkYXRlX3RpbWUpCisgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgPSAoc3Quc3RfbW9kZSAmIDB4RkZGRikgPDwgMTYgICMgVW5peCBhdHRyaWJ1dGVzCisgICAgICAgIGlmIGlzZGlyOgorICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAorICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwICAjIE1TLURPUyBkaXJlY3RvcnkgZmxhZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQorCisgICAgICAgIHJldHVybiB6aW5mbworCisgICAgZGVmIGlzX2RpcihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhpcyBhcmNoaXZlIG1lbWJlciBpcyBhIGRpcmVjdG9yeS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW5hbWVbLTFdID09ICcvJworCiAKIGNsYXNzIF9aaXBEZWNyeXB0ZXI6CiAgICAgIiIiQ2xhc3MgdG8gaGFuZGxlIGRlY3J5cHRpb24gb2YgZmlsZXMgc3RvcmVkIHdpdGhpbiBhIFpJUCBhcmNoaXZlLgpAQCAtNjE4LDcgKzY1NCw3IEBACiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgbHptYSBtb2R1bGUiKQogICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIlRoYXQgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiKQogCiAKIGRlZiBfZ2V0X2NvbXByZXNzb3IoY29tcHJlc3NfdHlwZSk6CkBAIC02NTEsMTQgKzY4NywxOSBAQAogCiAKIGNsYXNzIF9TaGFyZWRGaWxlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBwb3MsIGNsb3NlLCBsb2NrKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgcG9zLCBjbG9zZSwgbG9jaywgd3JpdGluZyk6CiAgICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCiAgICAgICAgIHNlbGYuX3BvcyA9IHBvcwogICAgICAgICBzZWxmLl9jbG9zZSA9IGNsb3NlCiAgICAgICAgIHNlbGYuX2xvY2sgPSBsb2NrCisgICAgICAgIHNlbGYuX3dyaXRpbmcgPSB3cml0aW5nCiAKICAgICBkZWYgcmVhZChzZWxmLCBuPS0xKToKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fd3JpdGluZygpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHJlYWQgZnJvbSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgImlzIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgd3JpdGluZyBoYW5kbGUgYmVmb3JlIHRyeWluZyB0byByZWFkLiIpCiAgICAgICAgICAgICBzZWxmLl9maWxlLnNlZWsoc2VsZi5fcG9zKQogICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZChuKQogICAgICAgICAgICAgc2VsZi5fcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKQEAgLTcwMiw5ICs3NDMsNiBAQAogICAgICMgUmVhZCBmcm9tIGNvbXByZXNzZWQgZmlsZXMgaW4gNGsgYmxvY2tzLgogICAgIE1JTl9SRUFEX1NJWkUgPSA0MDk2CiAKLSAgICAjIFNlYXJjaCBmb3IgdW5pdmVyc2FsIG5ld2xpbmVzIG9yIGxpbmUgY2h1bmtzLgotICAgIFBBVFRFUk4gPSByZS5jb21waWxlKGJyJ14oP1A8Y2h1bms+W15cclxuXSspfCg/UDxuZXdsaW5lPlxufFxyXG4/KScpCi0KICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW9iaiwgbW9kZSwgemlwaW5mbywgZGVjcnlwdGVyPU5vbmUsCiAgICAgICAgICAgICAgICAgIGNsb3NlX2ZpbGVvYmo9RmFsc2UpOgogICAgICAgICBzZWxmLl9maWxlb2JqID0gZmlsZW9iagpAQCAtNzIxLDcgKzc1OSw2IEBACiAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogCi0gICAgICAgIHNlbGYuX3VuaXZlcnNhbCA9ICdVJyBpbiBtb2RlCiAgICAgICAgIHNlbGYubmV3bGluZXMgPSBOb25lCiAKICAgICAgICAgIyBBZGp1c3QgcmVhZCBzaXplIGZvciBlbmNyeXB0ZWQgZmlsZXMgc2luY2UgdGhlIGZpcnN0IDEyIGJ5dGVzCkBAIC03NTgsNyArNzk1LDcgQEAKICAgICAgICAgSWYgbGltaXQgaXMgc3BlY2lmaWVkLCBhdCBtb3N0IGxpbWl0IGJ5dGVzIHdpbGwgYmUgcmVhZC4KICAgICAgICAgIiIiCiAKLSAgICAgICAgaWYgbm90IHNlbGYuX3VuaXZlcnNhbCBhbmQgbGltaXQgPCAwOgorICAgICAgICBpZiBsaW1pdCA8IDA6CiAgICAgICAgICAgICAjIFNob3J0Y3V0IGNvbW1vbiBjYXNlIC0gbmV3bGluZSBmb3VuZCBpbiBidWZmZXIuCiAgICAgICAgICAgICBpID0gc2VsZi5fcmVhZGJ1ZmZlci5maW5kKGInXG4nLCBzZWxmLl9vZmZzZXQpICsgMQogICAgICAgICAgICAgaWYgaSA+IDA6CkBAIC03NjYsNDEgKzgwMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gaQogICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCiAKLSAgICAgICAgaWYgbm90IHNlbGYuX3VuaXZlcnNhbDoKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBsaW1pdCkKLQotICAgICAgICBsaW5lID0gYicnCi0gICAgICAgIHdoaWxlIGxpbWl0IDwgMCBvciBsZW4obGluZSkgPCBsaW1pdDoKLSAgICAgICAgICAgIHJlYWRhaGVhZCA9IHNlbGYucGVlaygyKQotICAgICAgICAgICAgaWYgcmVhZGFoZWFkID09IGInJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIFNlYXJjaCBmb3IgdW5pdmVyc2FsIG5ld2xpbmVzIG9yIGxpbmUgY2h1bmtzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBUaGUgcGF0dGVybiByZXR1cm5zIGVpdGhlciBhIGxpbmUgY2h1bmsgb3IgYSBuZXdsaW5lLCBidXQgbm90Ci0gICAgICAgICAgICAjIGJvdGguIENvbWJpbmVkIHdpdGggcGVlaygyKSwgd2UgYXJlIGFzc3VyZWQgdGhhdCB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICMgJ1xyXG4nIGlzIGFsd2F5cyByZXRyaWV2ZWQgY29tcGxldGVseSBhbmQgbmV2ZXIgc3BsaXQgaW50bwotICAgICAgICAgICAgIyBzZXBhcmF0ZSBuZXdsaW5lcyAtICdccicsICdcbicgZHVlIHRvIGNvaW5jaWRlbnRhbCByZWFkYWhlYWRzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLlBBVFRFUk4uc2VhcmNoKHJlYWRhaGVhZCkKLSAgICAgICAgICAgIG5ld2xpbmUgPSBtYXRjaC5ncm91cCgnbmV3bGluZScpCi0gICAgICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNlbGYubmV3bGluZXMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lcyA9IFtdCi0gICAgICAgICAgICAgICAgaWYgbmV3bGluZSBub3QgaW4gc2VsZi5uZXdsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lcy5hcHBlbmQobmV3bGluZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgKz0gbGVuKG5ld2xpbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUgKyBiJ1xuJwotCi0gICAgICAgICAgICBjaHVuayA9IG1hdGNoLmdyb3VwKCdjaHVuaycpCi0gICAgICAgICAgICBpZiBsaW1pdCA+PSAwOgotICAgICAgICAgICAgICAgIGNodW5rID0gY2h1bmtbOiBsaW1pdCAtIGxlbihsaW5lKV0KLQotICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihjaHVuaykKLSAgICAgICAgICAgIGxpbmUgKz0gY2h1bmsKLQotICAgICAgICByZXR1cm4gbGluZQorICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgbGltaXQpCiAKICAgICBkZWYgcGVlayhzZWxmLCBuPTEpOgogICAgICAgICAiIiJSZXR1cm5zIGJ1ZmZlcmVkIGJ5dGVzIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBwb3NpdGlvbi4iIiIKQEAgLTk1OCw2ICs5NjEsNzYgQEAKICAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQogCiAKK2NsYXNzIF9aaXBXcml0ZUZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB6ZiwgemluZm8sIHppcDY0KToKKyAgICAgICAgc2VsZi5femluZm8gPSB6aW5mbworICAgICAgICBzZWxmLl96aXA2NCA9IHppcDY0CisgICAgICAgIHNlbGYuX3ppcGZpbGUgPSB6ZgorICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCisgICAgICAgIHNlbGYuX2ZpbGVfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fY3JjID0gMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9maWxlb2JqKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5femlwZmlsZS5mcAorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBuYnl0ZXMgPSBsZW4oZGF0YSkKKyAgICAgICAgc2VsZi5fZmlsZV9zaXplICs9IG5ieXRlcworICAgICAgICBzZWxmLl9jcmMgPSBjcmMzMihkYXRhLCBzZWxmLl9jcmMpCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzb3I6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fY29tcHJlc3Nvci5jb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSArPSBsZW4oZGF0YSkKKyAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShkYXRhKQorICAgICAgICByZXR1cm4gbmJ5dGVzCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHN1cGVyKCkuY2xvc2UoKQorICAgICAgICAjIEZsdXNoIGFueSBkYXRhIGZyb20gdGhlIGNvbXByZXNzb3IsIGFuZCB1cGRhdGUgaGVhZGVyIGluZm8KKyAgICAgICAgaWYgc2VsZi5fY29tcHJlc3NvcjoKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSArPSBsZW4oYnVmKQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShidWYpCisgICAgICAgICAgICBzZWxmLl96aW5mby5jb21wcmVzc19zaXplID0gc2VsZi5fY29tcHJlc3Nfc2l6ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSA9IHNlbGYuX2ZpbGVfc2l6ZQorICAgICAgICBzZWxmLl96aW5mby5DUkMgPSBzZWxmLl9jcmMKKyAgICAgICAgc2VsZi5femluZm8uZmlsZV9zaXplID0gc2VsZi5fZmlsZV9zaXplCisKKyAgICAgICAgIyBXcml0ZSB1cGRhdGVkIGhlYWRlciBpbmZvCisgICAgICAgIGlmIHNlbGYuX3ppbmZvLmZsYWdfYml0cyAmIDB4MDg6CisgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCisgICAgICAgICAgICBmbXQgPSAnPExRUScgaWYgc2VsZi5femlwNjQgZWxzZSAnPExMTCcKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoc3RydWN0LnBhY2soZm10LCBzZWxmLl96aW5mby5DUkMsCisgICAgICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSwgc2VsZi5femluZm8uZmlsZV9zaXplKSkKKyAgICAgICAgICAgIHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyID0gc2VsZi5fZmlsZW9iai50ZWxsKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl96aXA2NDoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGaWxlIHNpemUgdW5leHBlY3RlZGx5IGV4Y2VlZGVkIFpJUDY0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW1pdCcpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSB1bmV4cGVjdGVkbHkgZXhjZWVkZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1pJUDY0IGxpbWl0JykKKyAgICAgICAgICAgICMgU2VlayBiYWNrd2FyZHMgYW5kIHdyaXRlIGZpbGUgaGVhZGVyICh3aGljaCB3aWxsIG5vdyBpbmNsdWRlCisgICAgICAgICAgICAjIGNvcnJlY3QgQ1JDIGFuZCBmaWxlIHNpemVzKQorCisgICAgICAgICAgICAjIFByZXNlcnZlIGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZQorICAgICAgICAgICAgc2VsZi5femlwZmlsZS5zdGFydF9kaXIgPSBzZWxmLl9maWxlb2JqLnRlbGwoKQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai5zZWVrKHNlbGYuX3ppbmZvLmhlYWRlcl9vZmZzZXQpCisgICAgICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKHNlbGYuX3ppbmZvLkZpbGVIZWFkZXIoc2VsZi5femlwNjQpKQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai5zZWVrKHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyKQorCisgICAgICAgIHNlbGYuX3ppcGZpbGUuX3dyaXRpbmcgPSBGYWxzZQorCisgICAgICAgICMgU3VjY2Vzc2Z1bGx5IHdyaXR0ZW46IEFkZCBmaWxlIHRvIG91ciBjYWNoZXMKKyAgICAgICAgc2VsZi5femlwZmlsZS5maWxlbGlzdC5hcHBlbmQoc2VsZi5femluZm8pCisgICAgICAgIHNlbGYuX3ppcGZpbGUuTmFtZVRvSW5mb1tzZWxmLl96aW5mby5maWxlbmFtZV0gPSBzZWxmLl96aW5mbworCiBjbGFzcyBaaXBGaWxlOgogICAgICIiIiBDbGFzcyB3aXRoIG1ldGhvZHMgdG8gb3BlbiwgcmVhZCwgd3JpdGUsIGNsb3NlLCBsaXN0IHppcCBmaWxlcy4KIApAQCAtOTgyLDcgKzEwNTUsNyBAQAogICAgICAgICAiIiJPcGVuIHRoZSBaSVAgZmlsZSB3aXRoIG1vZGUgcmVhZCAncicsIHdyaXRlICd3JywgZXhjbHVzaXZlIGNyZWF0ZSAneCcsCiAgICAgICAgIG9yIGFwcGVuZCAnYScuIiIiCiAgICAgICAgIGlmIG1vZGUgbm90IGluICgncicsICd3JywgJ3gnLCAnYScpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJaaXBGaWxlIHJlcXVpcmVzIG1vZGUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlppcEZpbGUgcmVxdWlyZXMgbW9kZSAncicsICd3JywgJ3gnLCBvciAnYSciKQogCiAgICAgICAgIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbikKIApAQCAtMTAyMCw2ICsxMDkzLDcgQEAKICAgICAgICAgc2VsZi5fZmlsZVJlZkNudCA9IDEKICAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5STG9jaygpCiAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gVHJ1ZQorICAgICAgICBzZWxmLl93cml0aW5nID0gRmFsc2UKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBtb2RlID09ICdyJzoKQEAgLTEwNTUsNyArMTEyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIk1vZGUgbXVzdCBiZSAncicsICd3JywgJ3gnLCBvciAnYSciKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1vZGUgbXVzdCBiZSAncicsICd3JywgJ3gnLCBvciAnYSciKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBmcCA9IHNlbGYuZnAKICAgICAgICAgICAgIHNlbGYuZnAgPSBOb25lCkBAIC0xMjAzLDcgKzEyNzcsNyBAQAogICAgIGRlZiBzZXRwYXNzd29yZChzZWxmLCBwd2QpOgogICAgICAgICAiIiJTZXQgZGVmYXVsdCBwYXNzd29yZCBmb3IgZW5jcnlwdGVkIGZpbGVzLiIiIgogICAgICAgICBpZiBwd2QgYW5kIG5vdCBpc2luc3RhbmNlKHB3ZCwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpLl9fbmFtZV9fKQogICAgICAgICBpZiBwd2Q6CiAgICAgICAgICAgICBzZWxmLnB3ZCA9IHB3ZAogICAgICAgICBlbHNlOgpAQCAtMTIxNyw3ICsxMjkxLDcgQEAKICAgICBAY29tbWVudC5zZXR0ZXIKICAgICBkZWYgY29tbWVudChzZWxmLCBjb21tZW50KToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWVudCwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjb21tZW50OiBleHBlY3RlZCBieXRlcywgZ290ICVzIiAlIHR5cGUoY29tbWVudCkpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNvbW1lbnQ6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShjb21tZW50KS5fX25hbWVfXykKICAgICAgICAgIyBjaGVjayBmb3IgdmFsaWQgY29tbWVudCBsZW5ndGgKICAgICAgICAgaWYgbGVuKGNvbW1lbnQpID4gWklQX01BWF9DT01NRU5UOgogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCkBAIC0xMjMyLDMwICsxMzA2LDU1IEBACiAgICAgICAgIHdpdGggc2VsZi5vcGVuKG5hbWUsICJyIiwgcHdkKSBhcyBmcDoKICAgICAgICAgICAgIHJldHVybiBmcC5yZWFkKCkKIAotICAgIGRlZiBvcGVuKHNlbGYsIG5hbWUsIG1vZGU9InIiLCBwd2Q9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBmaWxlLWxpa2Ugb2JqZWN0IGZvciAnbmFtZScuIiIiCi0gICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJVIiwgInJVIik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ29wZW4oKSByZXF1aXJlcyBtb2RlICJyIiwgIlUiLCBvciAiclUiJykKLSAgICAgICAgaWYgJ1UnIGluIG1vZGU6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIidVJyBtb2RlIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgZGVmIG9wZW4oc2VsZiwgbmFtZSwgbW9kZT0iciIsIHB3ZD1Ob25lLCAqLCBmb3JjZV96aXA2ND1GYWxzZSk6CisgICAgICAgICIiIlJldHVybiBmaWxlLWxpa2Ugb2JqZWN0IGZvciAnbmFtZScuCisKKyAgICAgICAgbmFtZSBpcyBhIHN0cmluZyBmb3IgdGhlIGZpbGUgbmFtZSB3aXRoaW4gdGhlIFpJUCBmaWxlLCBvciBhIFppcEluZm8KKyAgICAgICAgb2JqZWN0LgorCisgICAgICAgIG1vZGUgc2hvdWxkIGJlICdyJyB0byByZWFkIGEgZmlsZSBhbHJlYWR5IGluIHRoZSBaSVAgZmlsZSwgb3IgJ3cnIHRvCisgICAgICAgIHdyaXRlIHRvIGEgZmlsZSBuZXdseSBhZGRlZCB0byB0aGUgYXJjaGl2ZS4KKworICAgICAgICBwd2QgaXMgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgZmlsZXMgKG9ubHkgdXNlZCBmb3IgcmVhZGluZykuCisKKyAgICAgICAgV2hlbiB3cml0aW5nLCBpZiB0aGUgZmlsZSBzaXplIGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIGJ1dCBtYXkgZXhjZWVkCisgICAgICAgIDIgR2lCLCBwYXNzIGZvcmNlX3ppcDY0IHRvIHVzZSB0aGUgWklQNjQgZm9ybWF0LCB3aGljaCBjYW4gaGFuZGxlIGxhcmdlCisgICAgICAgIGZpbGVzLiAgSWYgdGhlIHNpemUgaXMga25vd24gaW4gYWR2YW5jZSwgaXQgaXMgYmVzdCB0byBwYXNzIGEgWmlwSW5mbworICAgICAgICBpbnN0YW5jZSBmb3IgbmFtZSwgd2l0aCB6aW5mby5maWxlX3NpemUgc2V0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbW9kZSBub3QgaW4geyJyIiwgIncifToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ29wZW4oKSByZXF1aXJlcyBtb2RlICJyIiBvciAidyInKQogICAgICAgICBpZiBwd2QgYW5kIG5vdCBpc2luc3RhbmNlKHB3ZCwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpLl9fbmFtZV9fKQorICAgICAgICBpZiBwd2QgYW5kIChtb2RlID09ICJ3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwd2QgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHJlYWRpbmcgZmlsZXMiKQogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKLSAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byByZWFkIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gdXNlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKIAogICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGluZm8gb2JqZWN0CiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgWmlwSW5mbyk6CiAgICAgICAgICAgICAjICduYW1lJyBpcyBhbHJlYWR5IGFuIGluZm8gb2JqZWN0CiAgICAgICAgICAgICB6aW5mbyA9IG5hbWUKKyAgICAgICAgZWxpZiBtb2RlID09ICd3JzoKKyAgICAgICAgICAgIHppbmZvID0gWmlwSW5mbyhuYW1lKQorICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgR2V0IGluZm8gb2JqZWN0IGZvciBuYW1lCiAgICAgICAgICAgICB6aW5mbyA9IHNlbGYuZ2V0aW5mbyhuYW1lKQogCisgICAgICAgIGlmIG1vZGUgPT0gJ3cnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29wZW5fdG9fd3JpdGUoemluZm8sIGZvcmNlX3ppcDY0PWZvcmNlX3ppcDY0KQorCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZWFkIGZyb20gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlICIKKyAgICAgICAgICAgICAgICAgICAgImlzIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSB3cml0aW5nIGhhbmRsZSBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQuIikKKworICAgICAgICAjIE9wZW4gZm9yIHJlYWRpbmc6CiAgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgKz0gMQotICAgICAgICB6ZWZfZmlsZSA9IF9TaGFyZWRGaWxlKHNlbGYuZnAsIHppbmZvLmhlYWRlcl9vZmZzZXQsIHNlbGYuX2ZwY2xvc2UsIHNlbGYuX2xvY2spCisgICAgICAgIHplZl9maWxlID0gX1NoYXJlZEZpbGUoc2VsZi5mcCwgemluZm8uaGVhZGVyX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcGNsb3NlLCBzZWxmLl9sb2NrLCBsYW1iZGE6IHNlbGYuX3dyaXRpbmcpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgU2tpcCB0aGUgZmlsZSBoZWFkZXI6CiAgICAgICAgICAgICBmaGVhZGVyID0gemVmX2ZpbGUucmVhZChzaXplRmlsZUhlYWRlcikKQEAgLTEyOTUsNyArMTM5NCw3IEBACiAgICAgICAgICAgICAgICAgaWYgbm90IHB3ZDoKICAgICAgICAgICAgICAgICAgICAgcHdkID0gc2VsZi5wd2QKICAgICAgICAgICAgICAgICBpZiBub3QgcHdkOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkZpbGUgJXMgaXMgZW5jcnlwdGVkLCBwYXNzd29yZCAiCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiRmlsZSAlciBpcyBlbmNyeXB0ZWQsIHBhc3N3b3JkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCBmb3IgZXh0cmFjdGlvbiIgJSBuYW1lKQogCiAgICAgICAgICAgICAgICAgemQgPSBfWmlwRGVjcnlwdGVyKHB3ZCkKQEAgLTEzMTMsMTMgKzE0MTIsNTYgQEAKICAgICAgICAgICAgICAgICAgICAgIyBjb21wYXJlIGFnYWluc3QgdGhlIENSQyBvdGhlcndpc2UKICAgICAgICAgICAgICAgICAgICAgY2hlY2tfYnl0ZSA9ICh6aW5mby5DUkMgPj4gMjQpICYgMHhmZgogICAgICAgICAgICAgICAgIGlmIGhbMTFdICE9IGNoZWNrX2J5dGU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQmFkIHBhc3N3b3JkIGZvciBmaWxlIiwgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJCYWQgcGFzc3dvcmQgZm9yIGZpbGUgJXIiICUgbmFtZSkKIAogICAgICAgICAgICAgcmV0dXJuIFppcEV4dEZpbGUoemVmX2ZpbGUsIG1vZGUsIHppbmZvLCB6ZCwgVHJ1ZSkKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgemVmX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBfb3Blbl90b193cml0ZShzZWxmLCB6aW5mbywgZm9yY2VfemlwNjQ9RmFsc2UpOgorICAgICAgICBpZiBmb3JjZV96aXA2NCBhbmQgbm90IHNlbGYuX2FsbG93WmlwNjQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJmb3JjZV96aXA2NCBpcyBUcnVlLCBidXQgYWxsb3daaXA2NCB3YXMgRmFsc2Ugd2hlbiBvcGVuaW5nICIKKyAgICAgICAgICAgICAgICAidGhlIFpJUCBmaWxlLiIKKyAgICAgICAgICAgICkKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHdyaXRlIHRvIHRoZSBaSVAgZmlsZSB3aGlsZSB0aGVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbm90aGVyIHdyaXRlIGhhbmRsZSBvcGVuIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgZmlyc3QgaGFuZGxlIGJlZm9yZSBvcGVuaW5nIGFub3RoZXIuIikKKworICAgICAgICAjIFNpemVzIGFuZCBDUkMgYXJlIG92ZXJ3cml0dGVuIHdpdGggY29ycmVjdCBkYXRhIGFmdGVyIHByb2Nlc3NpbmcgdGhlIGZpbGUKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoemluZm8sICdmaWxlX3NpemUnKToKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKKyAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgemluZm8uQ1JDID0gMAorCisgICAgICAgIHppbmZvLmZsYWdfYml0cyA9IDB4MDAKKyAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgorICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwOAorCisgICAgICAgIGlmIG5vdCB6aW5mby5leHRlcm5hbF9hdHRyOgorICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9IDBvNjAwIDw8IDE2ICAjIHBlcm1pc3Npb25zOiA/cnctLS0tLS0tCisKKyAgICAgICAgIyBDb21wcmVzc2VkIHNpemUgY2FuIGJlIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplCisgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAorICAgICAgICAgICAgICAgIChmb3JjZV96aXA2NCBvciB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQpCisKKyAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKQorCisgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCisgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKworICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQorCisgICAgICAgIHNlbGYuX3dyaXRpbmcgPSBUcnVlCisgICAgICAgIHJldHVybiBfWmlwV3JpdGVGaWxlKHNlbGYsIHppbmZvLCB6aXA2NCkKKwogICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD1Ob25lLCBwd2Q9Tm9uZSk6CiAgICAgICAgICIiIkV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwKICAgICAgICAgICAgdXNpbmcgaXRzIGZ1bGwgbmFtZS4gSXRzIGZpbGUgaW5mb3JtYXRpb24gaXMgZXh0cmFjdGVkIGFzIGFjY3VyYXRlbHkKQEAgLTEzODksNyArMTUzMSw3IEBACiAgICAgICAgIGlmIHVwcGVyZGlycyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVwcGVyZGlycyk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyh1cHBlcmRpcnMpCiAKLSAgICAgICAgaWYgbWVtYmVyLmZpbGVuYW1lWy0xXSA9PSAnLyc6CisgICAgICAgIGlmIG1lbWJlci5pc19kaXIoKToKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHRhcmdldHBhdGgpOgogICAgICAgICAgICAgICAgIG9zLm1rZGlyKHRhcmdldHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0cGF0aApAQCAtMTQwNiw5ICsxNTQ4LDkgQEAKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybignRHVwbGljYXRlIG5hbWU6ICVyJyAlIHppbmZvLmZpbGVuYW1lLCBzdGFja2xldmVsPTMpCiAgICAgICAgIGlmIHNlbGYubW9kZSBub3QgaW4gKCd3JywgJ3gnLCAnYScpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ3cml0ZSgpIHJlcXVpcmVzIG1vZGUgJ3cnLCAneCcsIG9yICdhJyIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSgpIHJlcXVpcmVzIG1vZGUgJ3cnLCAneCcsIG9yICdhJyIpCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCiAgICAgICAgIF9jaGVja19jb21wcmVzc2lvbih6aW5mby5jb21wcmVzc190eXBlKQogICAgICAgICBpZiBub3Qgc2VsZi5fYWxsb3daaXA2NDoKQEAgLTE0MjcsMTA1ICsxNTY5LDQzIEBACiAgICAgICAgICIiIlB1dCB0aGUgYnl0ZXMgZnJvbSBmaWxlbmFtZSBpbnRvIHRoZSBhcmNoaXZlIHVuZGVyIHRoZSBuYW1lCiAgICAgICAgIGFyY25hbWUuIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSB0byBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJDYW4ndCB3cml0ZSB0byBaSVAgYXJjaGl2ZSB3aGlsZSBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIGV4aXN0cyIKKyAgICAgICAgICAgICkKIAotICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZW5hbWUpCi0gICAgICAgIGlzZGlyID0gc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpCi0gICAgICAgIG10aW1lID0gdGltZS5sb2NhbHRpbWUoc3Quc3RfbXRpbWUpCi0gICAgICAgIGRhdGVfdGltZSA9IG10aW1lWzA6Nl0KLSAgICAgICAgIyBDcmVhdGUgWmlwSW5mbyBpbnN0YW5jZSB0byBzdG9yZSBmaWxlIGluZm9ybWF0aW9uCi0gICAgICAgIGlmIGFyY25hbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlbmFtZQotICAgICAgICBhcmNuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLnNwbGl0ZHJpdmUoYXJjbmFtZSlbMV0pCi0gICAgICAgIHdoaWxlIGFyY25hbWVbMF0gaW4gKG9zLnNlcCwgb3MuYWx0c2VwKToKLSAgICAgICAgICAgIGFyY25hbWUgPSBhcmNuYW1lWzE6XQotICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgIGFyY25hbWUgKz0gJy8nCi0gICAgICAgIHppbmZvID0gWmlwSW5mbyhhcmNuYW1lLCBkYXRlX3RpbWUpCi0gICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgPSAoc3RbMF0gJiAweEZGRkYpIDw8IDE2ICAgICAgIyBVbml4IGF0dHJpYnV0ZXMKLSAgICAgICAgaWYgaXNkaXI6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gWklQX1NUT1JFRAotICAgICAgICBlbGlmIGNvbXByZXNzX3R5cGUgaXMgTm9uZToKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBzZWxmLmNvbXByZXNzaW9uCisgICAgICAgIHppbmZvID0gWmlwSW5mby5mcm9tX2ZpbGUoZmlsZW5hbWUsIGFyY25hbWUpCisKKyAgICAgICAgaWYgemluZm8uaXNfZGlyKCk6CisgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAorICAgICAgICAgICAgemluZm8uQ1JDID0gMAogICAgICAgICBlbHNlOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KIAotICAgICAgICB6aW5mby5maWxlX3NpemUgPSBzdC5zdF9zaXplCi0gICAgICAgIHppbmZvLmZsYWdfYml0cyA9IDB4MDAKLSAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQotICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGJ5dGVzCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICBpZiB6aW5mby5pc19kaXIoKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQorICAgICAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKKyAgICAgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgogICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCi0gICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKKyAgICAgICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKIAotICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQorICAgICAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKIAotICAgICAgICAgICAgaWYgaXNkaXI6Ci0gICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uQ1JDID0gMAotICAgICAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgfD0gMHgxMCAgIyBNUy1ET1MgZGlyZWN0b3J5IGZsYWcKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKICAgICAgICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoRmFsc2UpKQogICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgY21wciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NlZWthYmxlOgotICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDA4Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgotICAgICAgICAgICAgICAgICMgTXVzdCBvdmVyd3JpdGUgQ1JDIGFuZCBzaXplcyB3aXRoIGNvcnJlY3QgZGF0YSBsYXRlcgotICAgICAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQyA9IDAKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgc2l6ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUKLSAgICAgICAgICAgICAgICB6aXA2NCA9IHNlbGYuX2FsbG93WmlwNjQgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplICogMS4wNSA+IFpJUDY0X0xJTUlUCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IGZpbGVfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgICAgIENSQyA9IGNyYzMyKGJ1ZiwgQ1JDKQotICAgICAgICAgICAgICAgICAgICBpZiBjbXByOgotICAgICAgICAgICAgICAgICAgICAgICAgYnVmID0gY21wci5jb21wcmVzcyhidWYpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoYnVmKQotICAgICAgICAgICAgaWYgY21wcjoKLSAgICAgICAgICAgICAgICBidWYgPSBjbXByLmZsdXNoKCkKLSAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGZpbGVfc2l6ZQotICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDCi0gICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSBmaWxlX3NpemUKLSAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6Ci0gICAgICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQotICAgICAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJwotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQotICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHppcDY0IGFuZCBzZWxmLl9hbGxvd1ppcDY0OgotICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmlsZSBzaXplIGhhcyBpbmNyZWFzZWQgZHVyaW5nIGNvbXByZXNzaW5nJykKLSAgICAgICAgICAgICAgICAgICAgaWYgY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb21wcmVzc2VkIHNpemUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUnKQotICAgICAgICAgICAgICAgICMgU2VlayBiYWNrd2FyZHMgYW5kIHdyaXRlIGZpbGUgaGVhZGVyICh3aGljaCB3aWxsIG5vdyBpbmNsdWRlCi0gICAgICAgICAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKLSAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpICMgUHJlc2VydmUgY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlCi0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHppbmZvLmhlYWRlcl9vZmZzZXQpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCi0gICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBzcmMsIHNlbGYub3Blbih6aW5mbywgJ3cnKSBhcyBkZXN0OgorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihzcmMsIGRlc3QsIDEwMjQqOCkKIAogICAgIGRlZiB3cml0ZXN0cihzZWxmLCB6aW5mb19vcl9hcmNuYW1lLCBkYXRhLCBjb21wcmVzc190eXBlPU5vbmUpOgogICAgICAgICAiIiJXcml0ZSBhIGZpbGUgaW50byB0aGUgYXJjaGl2ZS4gIFRoZSBjb250ZW50cyBpcyAnZGF0YScsIHdoaWNoCkBAIC0xNTQ4LDQ3ICsxNjI4LDIwIEBACiAgICAgICAgICAgICB6aW5mbyA9IHppbmZvX29yX2FyY25hbWUKIAogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgdG8gWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQorICAgICAgICBpZiBzZWxmLl93cml0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAiQ2FuJ3Qgd3JpdGUgdG8gWklQIGFyY2hpdmUgd2hpbGUgYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBleGlzdHMuIgorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQogCiAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGxlbihkYXRhKSAgICAgICAgICAgICMgVW5jb21wcmVzc2VkIHNpemUKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQotICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKLSAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKLSAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBkYXRhCi0gICAgICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgotICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCi0gICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKLQotICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKLSAgICAgICAgICAgIHppbmZvLkNSQyA9IGNyYzMyKGRhdGEpICAgICAgICMgQ1JDLTMyIGNoZWNrc3VtCi0gICAgICAgICAgICBjbyA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQotICAgICAgICAgICAgaWYgY286Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGNvLmNvbXByZXNzKGRhdGEpICsgY28uZmx1c2goKQotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBsZW4oZGF0YSkgICAgIyBDb21wcmVzc2VkIHNpemUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQotICAgICAgICAgICAgemlwNjQgPSB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVCBvciBcCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUCi0gICAgICAgICAgICBpZiB6aXA2NCBhbmQgbm90IHNlbGYuX2FsbG93WmlwNjQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKCJGaWxlc2l6ZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQotICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZGF0YSkKLSAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6Ci0gICAgICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQotICAgICAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJwotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQotICAgICAgICAgICAgc2VsZi5mcC5mbHVzaCgpCi0gICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCi0gICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4oemluZm8sIG1vZGU9J3cnKSBhcyBkZXN0OgorICAgICAgICAgICAgICAgIGRlc3Qud3JpdGUoZGF0YSkKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAiIiJDYWxsIHRoZSAiY2xvc2UoKSIgbWV0aG9kIGluIGNhc2UgdGhlIHVzZXIgZm9yZ290LiIiIgpAQCAtMTYwMCw2ICsxNjUzLDExIEBACiAgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCBjbG9zZSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBvbiBpdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIHdyaXRpbmcgaGFuZGxlIGJlZm9yZSBjbG9zaW5nIHRoZSB6aXAuIikKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBzZWxmLm1vZGUgaW4gKCd3JywgJ3gnLCAnYScpIGFuZCBzZWxmLl9kaWRNb2RpZnk6ICMgd3JpdGUgZW5kaW5nIHJlY29yZHMKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CkBAIC0xNzQ1LDcgKzE4MDMsNyBAQAogICAgICAgICBpZiBmaWx0ZXJmdW5jIGFuZCBub3QgZmlsdGVyZnVuYyhwYXRobmFtZSk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgogICAgICAgICAgICAgICAgIGxhYmVsID0gJ3BhdGgnIGlmIG9zLnBhdGguaXNkaXIocGF0aG5hbWUpIGVsc2UgJ2ZpbGUnCi0gICAgICAgICAgICAgICAgcHJpbnQoJyVzICIlcyIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIChsYWJlbCwgcGF0aG5hbWUpKQorICAgICAgICAgICAgICAgIHByaW50KCclcyAlciBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgKGxhYmVsLCBwYXRobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZGlyLCBuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRobmFtZSk6CkBAIC0xNzc2LDcgKzE4MzQsNyBAQAogICAgICAgICAgICAgICAgICAgICBlbGlmIGV4dCA9PSAiLnB5IjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICIlcyIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICVyIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSwgYXJjbmFtZSA9IHNlbGYuX2dldF9jb2RlbmFtZShwYXRoWzA6LTNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZW5hbWUpCkBAIC0xNzkzLDcgKzE4NTEsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiBleHQgPT0gIi5weSI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWx0ZXJmdW5jIGFuZCBub3QgZmlsdGVyZnVuYyhwYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlsZSAiJXMiIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlsZSAlciBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUsIGFyY25hbWUgPSBzZWxmLl9nZXRfY29kZW5hbWUocGF0aFswOi0zXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VuYW1lKQpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weSBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKaW5kZXggZDA5ZGEyZi4uZTk4M2Y1NCAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQorKysgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CkBAIC0xMDEsNiArMTAxLDcgQEAKIAogRldfUFJFRklYID0gWyJMaWJyYXJ5IiwgIkZyYW1ld29ya3MiLCAiUHl0aG9uLmZyYW1ld29yayJdCiBGV19WRVJTSU9OX1BSRUZJWCA9ICItLXVuZGVmaW5lZC0tIiAjIGluaXRpYWxpemVkIGluIHBhcnNlT3B0aW9ucworRldfU1NMX0RJUkVDVE9SWSA9ICItLXVuZGVmaW5lZC0tIiAjIGluaXRpYWxpemVkIGluIHBhcnNlT3B0aW9ucwogCiAjIFRoZSBkaXJlY3Rvcnkgd2UnbGwgdXNlIHRvIGNyZWF0ZSB0aGUgYnVpbGQgKHdpbGwgYmUgZXJhc2VkIGFuZCByZWNyZWF0ZWQpCiBXT1JLRElSID0gIi90bXAvX3B5IgpAQCAtMjA2LDQxICsyMDcsMTEgQEAKIAogICAgIExUXzEwXzUgPSBib29sKGdldERlcHRhcmdldFR1cGxlKCkgPCAoMTAsIDUpKQogCi0gICAgaWYgbm90ICgxMCwgNSkgPCBnZXREZXB0YXJnZXRUdXBsZSgpIDwgKDEwLCAxMCk6Ci0gICAgICAgICMgVGhlIE9wZW5TU0wgbGlicyBzaGlwcGVkIHdpdGggT1MgWCAxMC41IGFuZCBlYXJsaWVyIGFyZQotICAgICAgICAjIGhvcGVsZXNzbHkgb3V0LW9mLWRhdGUgYW5kIGRvIG5vdCBpbmNsdWRlIEFwcGxlJ3MgdGllLWluIHRvCi0gICAgICAgICMgdGhlIHJvb3QgY2VydGlmaWNhdGVzIGluIHRoZSB1c2VyIGFuZCBzeXN0ZW0ga2V5Y2hhaW5zIHZpYSBURUEKLSAgICAgICAgIyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIE9TIFggMTAuNi4gIE5vdGUgdGhhdCB0aGlzIGFwcGxpZXMgdG8KLSAgICAgICAgIyBwcm9ncmFtcyBidWlsdCBhbmQgbGlua2VkIHdpdGggYSAxMC41IFNESyBldmVuIHdoZW4gcnVuIG9uCi0gICAgICAgICMgbmV3ZXIgdmVyc2lvbnMgb2YgT1MgWC4KLSAgICAgICAgIwotICAgICAgICAjIERlYWxpbmcgd2l0aCBDQXMgaXMgbWVzc3kuICBGb3Igbm93LCBqdXN0IHN1cHBseSBhCi0gICAgICAgICMgbG9jYWwgbGlic3NsIGFuZCBsaWJjcnlwdG8gZm9yIHRoZSBvbGRlciBpbnN0YWxsZXIgdmFyaWFudHMKLSAgICAgICAgIyAoZS5nLiB0aGUgcHl0aG9uLm9yZyAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIpIHRoYXQgdXNlIHRoZQotICAgICAgICAjIHNhbWUgZGVmYXVsdCBzc2wgY2VydGZpbGUgbG9jYXRpb24gYXMgdGhlIHN5c3RlbSBsaWJzIGRvOgotICAgICAgICAjICAgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wvY2VydC5wZW0KLSAgICAgICAgIyBUaGVuIGF0IGxlYXN0IFRMUyBjb25uZWN0aW9ucyBjYW4gYmUgbmVnb3RpYXRlZCB3aXRoIHNpdGVzIHRoYXQKLSAgICAgICAgIyB1c2Ugc2hhLTI1NiBjZXJ0cyBsaWtlIHB5dGhvbi5vcmcsIGFzc3VtaW5nIHRoZSBwcm9wZXIgQ0EgY2VydHMKLSAgICAgICAgIyBoYXZlIGJlZW4gc3VwcGxpZWQuICBUaGUgZGVmYXVsdCBDQSBjZXJ0IG1hbmFnZW1lbnQgaXNzdWVzIGZvcgotICAgICAgICAjIDEwLjUgYW5kIGVhcmxpZXIgYnVpbGRzIGFyZSB0aGUgc2FtZSBhcyBiZWZvcmUsIG90aGVyIHRoYW4gaXQgaXMKLSAgICAgICAgIyBub3cgbW9yZSBvYnZpb3VzIHdpdGggY2VydCBjaGVja2luZyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlCi0gICAgICAgICMgc3RhbmRhcmQgbGlicmFyeS4KLSAgICAgICAgIwotICAgICAgICAjIEZvciBidWlsZHMgd2l0aCAxMC42IHRocm91Z2ggMTAuOSBTREtzLAotICAgICAgICAjIGNvbnRpbnVlIHRvIHVzZSB0aGUgZGVwcmVjYXRlZCBidXQKLSAgICAgICAgIyBsZXNzIG91dC1vZi1kYXRlIEFwcGxlIDAuOS44IGxpYnMgZm9yIG5vdy4gIFdoaWxlIHRoZXkgYXJlIGxlc3MKLSAgICAgICAgIyBzZWN1cmUgdGhhbiB1c2luZyBhbiB1cC10by1kYXRlIDEuMC4xIHZlcnNpb24sIGRvaW5nIHNvCi0gICAgICAgICMgYXZvaWRzIHRoZSBiaWcgcHJvYmxlbXMgb2YgZm9yY2luZyB1c2VycyB0byBoYXZlIHRvIG1hbmFnZQotICAgICAgICAjIGRlZmF1bHQgQ0FzIHRoZW1zZWx2ZXMsIHRoYW5rcyB0byB0aGUgQXBwbGUgbGlicyB1c2luZyBwcml2YXRlIFRFQQotICAgICAgICAjIEFQSXMgZm9yIGNlcnQgdmFsaWRhdGlvbiBmcm9tIGtleWNoYWlucyBpZiB2YWxpZGF0aW9uIHVzaW5nIHRoZQotICAgICAgICAjIHN0YW5kYXJkIE9wZW5TU0wgbG9jYXRpb25zICgvU3lzdGVtL0xpYnJhcnkvT3BlblNTTCwgbm9ybWFsbHkgZW1wdHkpCi0gICAgICAgICMgZmFpbHMuCi0gICAgICAgICMKLSAgICAgICAgIyBTaW5jZSBBcHBsZSByZW1vdmVkIHRoZSBoZWFkZXIgZmlsZXMgZm9yIHRoZSBkZXByZWNhdGVkIHN5c3RlbQotICAgICAgICAjIE9wZW5TU0wgYXMgb2YgdGhlIFhjb2RlIDcgcmVsZWFzZSAoZm9yIE9TIFggMTAuMTArKSwgd2UgZG8gbm90Ci0gICAgICAgICMgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gYnVpbGQgb3VyIG93biBjb3B5IGhlcmUsIHRvby4KKyAgICAjIFNpbmNlIEFwcGxlIHJlbW92ZWQgdGhlIGhlYWRlciBmaWxlcyBmb3IgdGhlIGRlcHJlY2F0ZWQgc3lzdGVtCisgICAgIyBPcGVuU1NMIGFzIG9mIHRoZSBYY29kZSA3IHJlbGVhc2UgKGZvciBPUyBYIDEwLjEwKyksIHdlIGRvIG5vdAorICAgICMgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gYnVpbGQgb3VyIG93biBjb3B5IGhlcmUsIHRvby4KIAotICAgICAgICByZXN1bHQuZXh0ZW5kKFsKKyAgICByZXN1bHQuZXh0ZW5kKFsKICAgICAgICAgICBkaWN0KAogICAgICAgICAgICAgICBuYW1lPSJPcGVuU1NMIDEuMC4yaCIsCiAgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtMS4wLjJoLnRhci5neiIsCkBAIC0yNTIsNyArMjIzLDcgQEAKICAgICAgICAgICAgICAgY29uZmlndXJlPU5vbmUsCiAgICAgICAgICAgICAgIGluc3RhbGw9Tm9uZSwKICAgICAgICAgICApLAotICAgICAgICBdKQorICAgIF0pCiAKICMgICBEaXNhYmxlIGZvciBub3cKICAgICBpZiBGYWxzZTogICAjIGlmIGdldERlcHRhcmdldFR1cGxlKCkgPiAoMTAsIDUpOgpAQCAtMjk5LDkgKzI3MCw5IEBACiAgICAgaWYgUFlUSE9OXzM6CiAgICAgICAgIHJlc3VsdC5leHRlbmQoWwogICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9IlhaIDUuMC41IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vdHVrYWFuaS5vcmcveHoveHotNS4wLjUudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09JzE5ZDkyNGUwNjZiNmZmZjBiYzlkMTk4MWI0ZTUzMTk2JywKKyAgICAgICAgICAgICAgbmFtZT0iWFogNS4yLjIiLAorICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjIuMi50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nN2NmNmE4NTQ0YTdkYWU4ZTgxMDZmZGY3YWRkZmEyOGMnLAogICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKICAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJywKICAgICAgICAgICAgICAgXQpAQCAtMzQ0LDEwICszMTUsMTEgQEAKICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgKSwKICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICBuYW1lPSJTUUxpdGUgMy44LjExIiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5zcWxpdGUub3JnLzIwMTUvc3FsaXRlLWF1dG9jb25mLTMwODExMDAudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09Jzc3YjQ1MTkyNTEyMTAyOGJlZmJkZGJmNDVlYTJiYzQ5JywKKyAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuMTQuMSIsCisgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly93d3cuc3FsaXRlLm9yZy8yMDE2L3NxbGl0ZS1hdXRvY29uZi0zMTQwMTAwLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSczNjM0YTkwYTNmNDk1NDE0NjJiY2FlZDM0NzRiMjY4NCcsCiAgICAgICAgICAgICAgIGV4dHJhX2NmbGFncz0oJy1PcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFM1ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfRlRTM19QQVJFTlRIRVNJUyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9SVFJFRSAnCkBAIC02NzUsNiArNjQ3LDcgQEAKICAgICBnbG9iYWwgV09SS0RJUiwgREVQU1JDLCBTREtQQVRILCBTUkNESVIsIERFUFRBUkdFVAogICAgIGdsb2JhbCBVTklWRVJTQUxPUFRTLCBVTklWRVJTQUxBUkNIUywgQVJDSExJU1QsIENDLCBDWFgKICAgICBnbG9iYWwgRldfVkVSU0lPTl9QUkVGSVgKKyAgICBnbG9iYWwgRldfU1NMX0RJUkVDVE9SWQogCiAgICAgaWYgYXJncyBpcyBOb25lOgogICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCkBAIC03MzUsNiArNzA4LDcgQEAKICAgICBDQywgQ1hYID0gZ2V0VGFyZ2V0Q29tcGlsZXJzKCkKIAogICAgIEZXX1ZFUlNJT05fUFJFRklYID0gRldfUFJFRklYWzpdICsgWyJWZXJzaW9ucyIsIGdldFZlcnNpb24oKV0KKyAgICBGV19TU0xfRElSRUNUT1JZID0gRldfVkVSU0lPTl9QUkVGSVhbOl0gKyBbImV0YyIsICJvcGVuc3NsIl0KIAogICAgIHByaW50KCItLSBTZXR0aW5nczoiKQogICAgIHByaW50KCIgICAqIFNvdXJjZSBkaXJlY3Rvcnk6ICAgICVzIiAlIFNSQ0RJUikKQEAgLTg3Niw3ICs4NTAsNyBAQAogICAgICAgICAgICAgInNoYXJlZCIsCiAgICAgICAgICAgICAiLS1pbnN0YWxsX3ByZWZpeD0lcyIlc2hlbGxRdW90ZShhcmNoYmFzZSksCiAgICAgICAgICAgICAiLS1wcmVmaXg9JXMiJW9zLnBhdGguam9pbigiLyIsICpGV19WRVJTSU9OX1BSRUZJWCksCi0gICAgICAgICAgICAiLS1vcGVuc3NsZGlyPS9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMIiwKKyAgICAgICAgICAgICItLW9wZW5zc2xkaXI9JXMiJW9zLnBhdGguam9pbigiLyIsICpGV19TU0xfRElSRUNUT1JZKSwKICAgICAgICAgXQogICAgICAgICBpZiBub19hc206CiAgICAgICAgICAgICBjb25maWd1cmVfb3B0cy5hcHBlbmQoIm5vLWFzbSIpCkBAIC0xMTk0LDEyICsxMTY4LDE0IEBACiAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLCBnZXRWZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgJ2xpYicpKSkpCiAKLSAgICBwYXRoX3RvX2xpYiA9IG9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLCAnbGliJywgJ3B5dGhvbiVzJyUodmVyc2lvbiwpKQorICAgIGZybURpciA9IG9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywgJ1B5dGhvbi5mcmFtZXdvcmsnKQorICAgIGZybURpclZlcnNpb25lZCA9IG9zLnBhdGguam9pbihmcm1EaXIsICdWZXJzaW9ucycsIHZlcnNpb24pCisgICAgcGF0aF90b19saWIgPSBvcy5wYXRoLmpvaW4oZnJtRGlyVmVyc2lvbmVkLCAnbGliJywgJ3B5dGhvbiVzJyUodmVyc2lvbiwpKQorICAgICMgY3JlYXRlIGRpcmVjdG9yeSBmb3IgT3BlblNTTCBjZXJ0aWZpY2F0ZXMKKyAgICBzc2xEaXIgPSBvcy5wYXRoLmpvaW4oZnJtRGlyVmVyc2lvbmVkLCAnZXRjJywgJ29wZW5zc2wnKQorICAgIG9zLm1ha2VkaXJzKHNzbERpcikKIAogICAgIHByaW50KCJGaXggZmlsZSBtb2RlcyIpCi0gICAgZnJtRGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLCAnUHl0aG9uLmZyYW1ld29yaycpCiAgICAgZ2lkID0gZ3JwLmdldGdybmFtKCdhZG1pbicpLmdyX2dpZAogCiAgICAgc2hhcmVkX2xpYl9lcnJvciA9IEZhbHNlCkBAIC0xMjQ5LDYgKzEyMjUsOCBAQAogICAgICAgICBMRFZFUlNJT04gPSBMRFZFUlNJT04ucmVwbGFjZSgnJChWRVJTSU9OKScsIFZFUlNJT04pCiAgICAgICAgIExEVkVSU0lPTiA9IExEVkVSU0lPTi5yZXBsYWNlKCckKEFCSUZMQUdTKScsIEFCSUZMQUdTKQogICAgICAgICBjb25maWdfc3VmZml4ID0gJy0nICsgTERWRVJTSU9OCisgICAgICAgIGlmIGdldFZlcnNpb25NYWpvck1pbm9yKCkgPj0gKDMsIDYpOgorICAgICAgICAgICAgY29uZmlnX3N1ZmZpeCA9IGNvbmZpZ19zdWZmaXggKyAnLWRhcndpbicKICAgICBlbHNlOgogICAgICAgICBjb25maWdfc3VmZml4ID0gJycgICAgICAjIFB5dGhvbiAyLngKIApAQCAtMTI3NCw3ICsxMjUyLDcgQEAKICAgICBmcC53cml0ZShkYXRhKQogICAgIGZwLmNsb3NlKCkKIAotICAgICMgZml4IF9zeXNjb25maWdkYXRhIGlmIGl0IGV4aXN0cworICAgICMgZml4IF9zeXNjb25maWdkYXRhCiAgICAgIwogICAgICMgVE9ETzogbWFrZSB0aGlzIG1vcmUgcm9idXN0ISAgdGVzdF9zeXNjb25maWdfbW9kdWxlIG9mCiAgICAgIyBkaXN0dXRpbHMudGVzdHMudGVzdF9zeXNjb25maWcuU3lzY29uZmlnVGVzdENhc2UgdGVzdHMgdGhhdApAQCAtMTI4OCwyOCArMTI2NiwzMSBAQAogICAgICMgX3N5c2NvbmZpZ2RhdGEucHkpLgogCiAgICAgaW1wb3J0IHBwcmludAotICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YS5weScpCi0gICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgIGZwID0gb3BlbihwYXRoLCAncicpCi0gICAgICAgIGRhdGEgPSBmcC5yZWFkKCkKLSAgICAgICAgZnAuY2xvc2UoKQotICAgICAgICAjIGNyZWF0ZSBidWlsZF90aW1lX3ZhcnMgZGljdAotICAgICAgICBleGVjKGRhdGEpCi0gICAgICAgIHZhcnMgPSB7fQotICAgICAgICBmb3IgaywgdiBpbiBidWlsZF90aW1lX3ZhcnMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIHR5cGUodikgPT0gdHlwZSgnJyk6Ci0gICAgICAgICAgICAgICAgZm9yIHAgaW4gKGluY2x1ZGVfcGF0aCwgbGliX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCcgJyArIHAsICcnKQotICAgICAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKHAgKyAnICcsICcnKQotICAgICAgICAgICAgdmFyc1trXSA9IHYKKyAgICBpZiBnZXRWZXJzaW9uTWFqb3JNaW5vcigpID49ICgzLCA2KToKKyAgICAgICAgIyBYWFggdGhpcyBpcyBleHRyYS1mcmFnaWxlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YV9tX2Rhcndpbl9kYXJ3aW4ucHknKQorICAgIGVsc2U6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YS5weScpCisgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKKyAgICBkYXRhID0gZnAucmVhZCgpCisgICAgZnAuY2xvc2UoKQorICAgICMgY3JlYXRlIGJ1aWxkX3RpbWVfdmFycyBkaWN0CisgICAgZXhlYyhkYXRhKQorICAgIHZhcnMgPSB7fQorICAgIGZvciBrLCB2IGluIGJ1aWxkX3RpbWVfdmFycy5pdGVtcygpOgorICAgICAgICBpZiB0eXBlKHYpID09IHR5cGUoJycpOgorICAgICAgICAgICAgZm9yIHAgaW4gKGluY2x1ZGVfcGF0aCwgbGliX3BhdGgpOgorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoJyAnICsgcCwgJycpCisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZShwICsgJyAnLCAnJykKKyAgICAgICAgdmFyc1trXSA9IHYKIAotICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQotICAgICAgICAjIGR1cGxpY2F0ZWQgZnJvbSBzeXNjb25maWcuX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQotICAgICAgICBmcC53cml0ZSgnIyBzeXN0ZW0gY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgYW5kIHVzZWQgYnknCi0gICAgICAgICAgICAgICAgICAgICcgdGhlIHN5c2NvbmZpZyBtb2R1bGVcbicpCi0gICAgICAgIGZwLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQotICAgICAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mcCkKLSAgICAgICAgZnAuY2xvc2UoKQorICAgIGZwID0gb3BlbihwYXRoLCAndycpCisgICAgIyBkdXBsaWNhdGVkIGZyb20gc3lzY29uZmlnLl9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKKyAgICBmcC53cml0ZSgnIyBzeXN0ZW0gY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgYW5kIHVzZWQgYnknCisgICAgICAgICAgICAgICAgJyB0aGUgc3lzY29uZmlnIG1vZHVsZVxuJykKKyAgICBmcC53cml0ZSgnYnVpbGRfdGltZV92YXJzID0gJykKKyAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mcCkKKyAgICBmcC5jbG9zZSgpCiAKICAgICAjIEFkZCBzeW1saW5rcyBpbiAvdXNyL2xvY2FsL2JpbiwgdXNpbmcgcmVsYXRpdmUgbGlua3MKICAgICB1c3JfbG9jYWxfYmluID0gb3MucGF0aC5qb2luKHJvb3REaXIsICd1c3InLCAnbG9jYWwnLCAnYmluJykKQEAgLTE2MzYsNiArMTYxNyw4IEBACiAgICAgcGF0Y2hGaWxlKCJyZXNvdXJjZXMvUmVhZE1lLnJ0ZiIsICBmbikKICAgICBmbiA9IG9zLnBhdGguam9pbihmb2xkZXIsICJVcGRhdGUgU2hlbGwgUHJvZmlsZS5jb21tYW5kIikKICAgICBwYXRjaFNjcmlwdCgic2NyaXB0cy9wb3N0ZmxpZ2h0LnBhdGNoLXByb2ZpbGUiLCAgZm4pCisgICAgZm4gPSBvcy5wYXRoLmpvaW4oZm9sZGVyLCAiSW5zdGFsbCBDZXJ0aWZpY2F0ZXMuY29tbWFuZCIpCisgICAgcGF0Y2hTY3JpcHQoInJlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kIiwgIGZuKQogICAgIG9zLmNobW9kKGZvbGRlciwgU1RBVF8wbzc1NSkKICAgICBzZXRJY29uKGZvbGRlciwgIi4uL0ljb25zL1B5dGhvbiBGb2xkZXIuaWNucyIpCiAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgppbmRleCA2NWUzZjE0Li4wNGRjZWFmIDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCkBAIC0xLDEwNiArMSw3NiBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMzQ4XGNvY29hc3VicnRmMTcwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjE1MDQKIHtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQore1wqXGV4cGFuZGVkY29sb3J0Ymw7XGNzZ3JheVxjMTAwMDAwO30KIFxtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTMzODBcdmlld2gxNDYwMFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKIFxmMFxmczI0IFxjZjAgVGhpcyBwYWNrYWdlIHdpbGwgaW5zdGFsbCBQeXRob24gJEZVTExfVkVSU0lPTiBmb3IgTWFjIE9TIFggJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBmb3IgdGhlIGZvbGxvd2luZyBhcmNoaXRlY3R1cmUocyk6ICRBUkNISVRFQ1RVUkVTLlwKIFwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKIFxiIFxjZjAgXHVsIFx1bGMwIFdoaWNoIGluc3RhbGxlciB2YXJpYW50IHNob3VsZCBJIHVzZT8KIFxiMCBcdWxub25lIFwKIFwKLVB5dGhvbi5vcmcgcHJvdmlkZXMgdHdvIGluc3RhbGxlciB2YXJpYW50cyBmb3IgZG93bmxvYWQ6IG9uZSB0aGF0IGluc3RhbGxzIGEgCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIgXGNmMCAqKk5FVyoqCitcYjAgIEZvciBQeXRob24gMy42LCB0aGUgcHl0aG9uLm9yZyB3ZWJzaXRlIG5vdyBwcm92aWRlcyBvbmx5IG9uZSBpbnN0YWxsZXIgdmFyaWFudCBmb3IgZG93bmxvYWQ6IG9uZSB0aGF0IGluc3RhbGxzIGEgCiBcaSA2NC1iaXQvMzItYml0IEludGVsCiBcaTAgIFB5dGhvbiBjYXBhYmxlIG9mIHJ1bm5pbmcgb24gCiBcaSBNYWMgT1MgWCAxMC42IChTbm93IExlb3BhcmQpCi1caTAgIG9yIGxhdGVyOyBhbmQgb25lIHRoYXQgaW5zdGFsbHMgYSAKLVxpIDMyLWJpdC1vbmx5IChJbnRlbCBhbmQgUFBDKQotXGkwICBQeXRob24gY2FwYWJsZSBvZiBydW5uaW5nIG9uIAotXGkgTWFjIE9TIFggMTAuNSAoTGVvcGFyZCkKIFxpMCAgb3IgbGF0ZXIuICBUaGlzIFJlYWRNZSB3YXMgaW5zdGFsbGVkIHdpdGggdGhlIAogXGkgJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAotXGkwICB2YXJpYW50LiAgVW5sZXNzIHlvdSBhcmUgaW5zdGFsbGluZyB0byBhbiAxMC41IHN5c3RlbSBvciB5b3UgbmVlZCB0byBidWlsZCBhcHBsaWNhdGlvbnMgdGhhdCBjYW4gcnVuIG9uIDEwLjUgc3lzdGVtcywgdXNlIHRoZSAxMC42IHZhcmlhbnQgaWYgcG9zc2libGUuICBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIG9wZXJhdGluZyBzeXN0ZW0gZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBvcnRlZCBzdGFydGluZyB3aXRoIDEwLjYgYW5kIHlvdSBtYXkgc2VlIGJldHRlciBwZXJmb3JtYW5jZSB1c2luZyA2NC1iaXQgbW9kZS4gIEJ5IGRlZmF1bHQsIFB5dGhvbiB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGluIDY0LWJpdCBtb2RlIGlmIHlvdXIgc3lzdGVtIHN1cHBvcnRzIGl0LiAgQWxzbyBzZWUgCi1caSBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0wKLVxpMCAgYmVsb3cuICBUaGUgUHl0aG9ucyBpbnN0YWxsZWQgYnkgdGhlc2UgaW5zdGFsbGVycyBhcmUgYnVpbHQgd2l0aCBwcml2YXRlIGNvcGllcyBvZiBzb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBub3QgaW5jbHVkZWQgd2l0aCBvciBuZXdlciB0aGFuIHRob3NlIGluIE9TIFggaXRzZWxmLiAgVGhlIGxpc3Qgb2YgdGhlc2UgbGlicmFyaWVzIHZhcmllcyBieSBpbnN0YWxsZXIgdmFyaWFudCBhbmQgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgTGljZW5zZS5ydGYgZmlsZS4KK1xpMCAgdmFyaWFudC4gIEJ5IGRlZmF1bHQsIFB5dGhvbiB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGluIDY0LWJpdCBtb2RlIGlmIHlvdXIgc3lzdGVtIHN1cHBvcnRzIGl0LiAgVGhlIFB5dGhvbiBpbnN0YWxsZWQgYnkgdGhpcyBpbnN0YWxsZXIgaXMgYnVpbHQgd2l0aCBwcml2YXRlIGNvcGllcyBvZiBzb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBub3QgaW5jbHVkZWQgd2l0aCBvciBuZXdlciB0aGFuIHRob3NlIGluIE9TIFggaXRzZWxmLiAgVGhlIGxpc3Qgb2YgdGhlc2UgbGlicmFyaWVzIGlzIGluY2x1ZGVkIGF0IHRoZSBlbmQgb2YgdGhlIExpY2Vuc2UucnRmIGZpbGUuCiBcYiBcdWwgXAogXAotVXBkYXRlIHlvdXIgdmVyc2lvbiBvZiBUY2wvVGsgdG8gdXNlIElETEUgb3Igb3RoZXIgVGsgYXBwbGljYXRpb25zCitDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0xcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIwIFxjZjAgXHVsbm9uZSBcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIgXGNmMCAqKk5FVyoqCitcYjAgIFRoaXMgdmFyaWFudCBvZiBQeXRob24gMy42IG5vdyBpbmNsdWRlcyBpdHMgb3duIHByaXZhdGUgY29weSBvZiBPcGVuU1NMIDEuMC4yLiAgVW5saWtlIHByZXZpb3VzIHJlbGVhc2VzLCB0aGUgZGVwcmVjYXRlZCBBcHBsZS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcyBhcmUgbm8gbG9uZ2VyIHVzZWQuICBUaGlzIGFsc28gbWVhbnMgdGhhdCB0aGUgdHJ1c3QgY2VydGlmaWNhdGVzIGluIHN5c3RlbSBhbmQgdXNlciBrZXljaGFpbnMgbWFuYWdlZCBieSB0aGUgCitcaSBLZXljaGFpbiBBY2Nlc3MgCitcaTAgYXBwbGljYXRpb24gYW5kIHRoZSAKK1xpIHNlY3VyaXR5CitcaTAgIGNvbW1hbmQgbGluZSB1dGlsaXR5IGFyZSBubyBsb25nZXIgdXNlZCBhcyBkZWZhdWx0cyBieSB0aGUgUHl0aG9uIAorXGYxIHNzbAorXGYwICBtb2R1bGUuICBGb3IgMy42LjBiMSwgYSBzYW1wbGUgY29tbWFuZCBzY3JpcHQgaXMgaW5jbHVkZWQgaW4gCitcZjEgL0FwcGxpY2F0aW9ucy9QeXRob24gMy42CitcZjAgIHRvIGluc3RhbGwgYSBjdXJhdGVkIGJ1bmRsZSBvZiBkZWZhdWx0IHJvb3QgY2VydGlmaWNhdGVzIGZyb20gdGhlIHRoaXJkLXBhcnR5IAorXGYxIGNlcnRpZmkKK1xmMCAgcGFja2FnZSAoe1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpIn19e1xmbGRyc2x0IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaX19KS4gIElmIHlvdSBjaG9vc2UgdG8gdXNlIAorXGYxIGNlcnRpZmkKK1xmMCAsIHlvdSBzaG91bGQgY29uc2lkZXIgc3Vic2NyaWJpbmcgdG8gdGhle1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9jZXJ0aWZpLmlvL2VuL2xhdGVzdC8ifX17XGZsZHJzbHQgIHByb2plY3QncyBlbWFpbCB1cGRhdGUgc2VydmljZX19IHRvIGJlIG5vdGlmaWVkIHdoZW4gdGhlIGNlcnRpZmljYXRlIGJ1bmRsZSBpcyB1cGRhdGVkLlwKK1wKK1RoZSBidW5kbGVkIAorXGYxIHBpcAorXGYwICBpbmNsdWRlZCB3aXRoIHRoZSBQeXRob24gMy42IGluc3RhbGxlciBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAorXAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgXHVsIFVwZGF0ZSB5b3VyIHZlcnNpb24gb2YgVGNsL1RrIHRvIHVzZSBJRExFIG9yIG90aGVyIFRrIGFwcGxpY2F0aW9ucwogXGIwIFx1bG5vbmUgXAogXAogVG8gdXNlIElETEUgb3Igb3RoZXIgcHJvZ3JhbXMgdGhhdCB1c2UgdGhlIFRraW50ZXIgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlIHRvb2xraXQsIHlvdSBuZWVkIHRvIGluc3RhbGwgYSBuZXdlciB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mIHRoZSAKIFxpIFRjbC9UawogXGkwICBmcmFtZXdvcmtzLiAgVmlzaXQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvIn19e1xmbGRyc2x0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrL319IGZvciBjdXJyZW50IGluZm9ybWF0aW9uIGFib3V0IHN1cHBvcnRlZCBhbmQgcmVjb21tZW5kZWQgdmVyc2lvbnMgb2YgCiBcaSBUY2wvVGsKLVxpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLlwKK1xpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLiAgRm9yIHRoZSBpbml0aWFsIGFscGhhIHJlbGVhc2VzIG9mIFB5dGhvbiAzLjYsIHRoZSBpbnN0YWxsZXIgaXMgc3RpbGwgbGlua2VkIHdpdGggVGNsL1RrIDguNTsgdGhpcyB3aWxsIGNoYW5nZSBwcmlvciB0byB0aGUgYmV0YSAyIHJlbGVhc2Ugb2YgMy42LjAuXAogCiBcYiBcdWwgXAotQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAorT3RoZXIgY2hhbmdlc1wKIAogXGIwIFx1bG5vbmUgXAotUHl0aG9uIDMuNSBpbmNsdWRlcyBhIG51bWJlciBvZiBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IHdlcmUgcmVsZWFzZWQgaW4gUHl0aG9uIDMuNC4zIGFuZCBQeXRob24gMi43LjEwLiAge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3Ni8ifX17XGZsZHJzbHQgUEVQIDQ3Nn19IGNoYW5nZXMgc2V2ZXJhbCBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZXMsIGxpa2UgCi1caSBodHRwbGliCi1caTAgLCAKLVxpIHVybGxpYgotXGkwICwgYW5kIAotXGkgeG1scnBjbGliCi1caTAgLCB0byBieSBkZWZhdWx0IHZlcmlmeSBjZXJ0aWZpY2F0ZXMgcHJlc2VudGVkIGJ5IHNlcnZlcnMgb3ZlciBzZWN1cmUgKFRMUykgY29ubmVjdGlvbnMuICBUaGUgdmVyaWZpY2F0aW9uIGlzIHBlcmZvcm1lZCBieSB0aGUgT3BlblNTTCBsaWJyYXJpZXMgdGhhdCBQeXRob24gaXMgbGlua2VkIHRvLiAgUHJpb3IgdG8gMy40LjMsIGJvdGggcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKLVxpIEtleWNoYWluIEFjY2VzcyAKLVxpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAotXGkgc2VjdXJpdHkKLVxpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkuXAotXAotRm9yIE9TIFggMTAuNSwgQXBwbGUgcHJvdmlkZXMgCi1caSBPcGVuU1NMIDAuOS43Ci1caTAgIGxpYnJhcmllcy4gIFRoaXMgdmVyc2lvbiBvZiBBcHBsZSdzIE9wZW5TU0wgCi1cYiBkb2VzIG5vdAotXGIwICB1c2UgdGhlIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrLCBldmVuIHdoZW4gdXNlZCBvbiBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLiAgSW5zdGVhZCBpdCBjb25zdWx0cyBhIHRyYWRpdGlvbmFsIE9wZW5TU0wgY29uY2F0ZW5hdGVkIGNlcnRpZmljYXRlIGZpbGUgKAotXGkgY2FmaWxlCi1caTAgKSBvciBjZXJ0aWZpY2F0ZSBkaXJlY3RvcnkgKAotXGkgY2FwYXRoCi1caTAgKSwgbG9jYXRlZCBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSB0eXBpY2FsbHkgZW1wdHkgYW5kIG5vdCBtYW5hZ2VkIGJ5IE9TIFg7IHlvdSBtdXN0IG1hbmFnZSB0aGVtIHlvdXJzZWxmIG9yIHN1cHBseSB5b3VyIG93biBTU0wgY29udGV4dHMuICBPcGVuU1NMIDAuOS43IGlzIG9ic29sZXRlIGJ5IGN1cnJlbnQgc2VjdXJpdHkgc3RhbmRhcmRzLCBsYWNraW5nIGEgbnVtYmVyIG9mIGltcG9ydGFudCBmZWF0dXJlcyBmb3VuZCBpbiBsYXRlciB2ZXJzaW9ucy4gIEFtb25nIHRoZSBwcm9ibGVtcyB0aGlzIGNhdXNlcyBpcyB0aGUgaW5hYmlsaXR5IHRvIHZlcmlmeSBoaWdoZXItc2VjdXJpdHkgY2VydGlmaWNhdGVzIG5vdyB1c2VkIGJ5IHB5dGhvbi5vcmcgc2VydmljZXMsIGluY2x1ZGluZyAKLVxpIHR7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpIn19e1xmbGRyc2x0IGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4LCBQeVBJfX0KLVxpMCAuICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHRoZSAKLVxpIDEwLjUrIDMyLWJpdC1vbmx5IHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBpcyBsaW5rZWQgd2l0aCBhIHByaXZhdGUgY29weSBvZiAKLVxpIE9wZW5TU0wgMS4wLjIKLVxpMCA7IGl0IGNvbnN1bHRzIHRoZSBzYW1lIGRlZmF1bHQgY2VydGlmaWNhdGUgZGlyZWN0b3J5LCAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gICBBcyBiZWZvcmUsIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byBtYW5hZ2UgY2VydGlmaWNhdGVzIHlvdXJzZWxmIHdoZW4geW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IGFuZCwgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgeW91IG1heSBub3cgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgc3RlcHMgdG8gZW5zdXJlIHlvdXIgUHl0aG9uIHByb2dyYW1zIGhhdmUgYWNjZXNzIHRvIENBIGNlcnRpZmljYXRlcyB5b3UgdHJ1c3QuICBJZiB5b3UgdXNlIHRoaXMgUHl0aG9uIHZhcmlhbnQgdG8gYnVpbGQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB0b29scyBsaWtlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHkyYXBwLyJ9fXtcZmxkcnNsdCAKLVxmMSBweTJhcHB9fSwgeW91IG1heSBub3cgbmVlZCB0byBidW5kbGUgQ0EgY2VydGlmaWNhdGVzIGluIHRoZW0gb3Igb3RoZXJ3aXNlIHN1cHBseSBub24tZGVmYXVsdCBTU0wgY29udGV4dHMuXAotXAotRm9yIE9TIFggMTAuNissIEFwcGxlIGFsc28gcHJvdmlkZXMgCi1caSBPcGVuU1NMCi1caTAgIAotXGkgMC45LjggbGlicmFyaWVzCi1caTAgLiAgQXBwbGUncyAwLjkuOCB2ZXJzaW9uIGluY2x1ZGVzIGFuIGltcG9ydGFudCBhZGRpdGlvbmFsIGZlYXR1cmU6IGlmIGEgY2VydGlmaWNhdGUgY2Fubm90IGJlIHZlcmlmaWVkIHVzaW5nIHRoZSBtYW51YWxseSBhZG1pbmlzdGVyZWQgY2VydGlmaWNhdGVzIGluIAotXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCi1cZjAgLCB0aGUgY2VydGlmaWNhdGVzIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzZWN1cml0eSBmcmFtZXdvcmsgSW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgYXJlIGFsc28gY29uc3VsdGVkICh1c2luZyBBcHBsZSBwcml2YXRlIEFQSXMpLiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgCi1caSA2NC1iaXQvMzItYml0IDEwLjYrIHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBjb250aW51ZXMgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUncyBPcGVuU1NMIDAuOS44IHNpbmNlIGl0IHdhcyBmZWx0IHRoYXQgdGhlIGxvc3Mgb2YgdGhlIHN5c3RlbS1wcm92aWRlZCBjZXJ0aWZpY2F0ZXMgYW5kIG1hbmFnZW1lbnQgdG9vbHMgb3V0d2VpZ2hzIHRoZSBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wuICBUaGlzIHdpbGwgbGlrZWx5IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBhcyBBcHBsZSBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgdGhlIHN5c3RlbS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcy4gIElmIHlvdSBkbyBuZWVkIGZlYXR1cmVzIGZyb20gbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTCwgdGhlcmUgYXJlIHRoaXJkLXBhcnR5IE9wZW5TU0wgd3JhcHBlciBwYWNrYWdlcyBhdmFpbGFibGUgdGhyb3VnaCAKLVxpIFB5UEkKLVxpMCAuXAotXAotVGhlIGJ1bmRsZWQgCi1cZjEgcGlwCi1cZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAotXAotCi1cYiBcdWwgT3RoZXIgY2hhbmdlc1wKLQotXGIwIFx1bG5vbmUgXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIEZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKK0ZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKIFxpIFdoYXQncyBuZXcKIFxpMCAgc2VjdGlvbiBpbiB0aGUge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb2MvIn19e1xmbGRyc2x0IERvY3VtZW50YXRpb24gU2V0fX0gZm9yIHRoaXMgcmVsZWFzZSBhbmQgaXRzIAogXGkgUmVsZWFzZSBOb3RlcwogXGkwICBsaW5rIGF0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy99fS5cCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKIAotXGIgXGNmMCBcdWwgXAorXGIgXHVsIFwKIFB5dGhvbiAzIGFuZCBQeXRob24gMiBDby1leGlzdGVuY2VcCiAKIFxiMCBcdWxub25lIFwKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCmluZGV4IGRmYjc1ZDguLjNhOWFiMDQgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgpAQCAtMSw4ICsxLDkgQEAKLXtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTM0M1xjb2NvYXN1YnJ0ZjE2MAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxNTA0CiBcY29jb2FzY3JlZW5mb250czF7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQore1wqXGV4cGFuZGVkY29sb3J0Ymw7XGNzZ3JheVxjMTAwMDAwO30KIFxwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTIyMDBcdmlld2gxMDg4MFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTE2LDggKzE3LDE0IEBACiBcYiBJRExFCiBcYjAgLlwKIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAotXGIgSU1QT1JUQU5UOgorXGIgXGNmMCBORVc6CitcYjAgICBUaGVyZSBhcmUgaW1wb3J0YW50IGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlIHJlZ2FyZGluZyBuZXR3b3JrIHNlY3VyaXR5IGFuZCB0cnVzdCBjZXJ0aWZpY2F0ZXMuICBQbGVhc2Ugc2VlIHRoZSBSZWFkTWUgZm9yIG1vcmUgZGV0YWlscy5cCitcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgSU1QT1JUQU5UOgogXGIwICAKIFxiIElETEUKIFxiMCAgYW5kIG90aGVyIHByb2dyYW1zIHVzaW5nIHRoZSAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZCBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDJlMmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kCkBAIC0wLDAgKzEsNDggQEAKKyMhL2Jpbi9zaAorCisvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQFBZVkVSQC9iaW4vcHl0aG9uQFBZVkVSQCA8PCAiRU9GIgorCisjIGluc3RhbGxfY2VydGlmaS5weQorIworIyBzYW1wbGUgc2NyaXB0IHRvIGluc3RhbGwgb3IgdXBkYXRlIGEgc2V0IG9mIGRlZmF1bHQgUm9vdCBDZXJ0aWZpY2F0ZXMKKyMgZm9yIHRoZSBzc2wgbW9kdWxlLiAgVXNlcyB0aGUgY2VydGlmaWNhdGVzIHByb3ZpZGVkIGJ5IHRoZSBjZXJ0aWZpIHBhY2thZ2U6CisjICAgICAgIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaQorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3NsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworU1RBVF8wbzc3NSA9ICggc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSIHwgc3RhdC5TX0lYVVNSCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVdHUlAgfCBzdGF0LlNfSVhHUlAKKyAgICAgICAgICAgICB8IHN0YXQuU19JUk9USCB8ICAgICAgICAgICAgICAgIHN0YXQuU19JWE9USCApCisKK2RlZiBtYWluKCk6CisgICAgb3BlbnNzbF9kaXIsIG9wZW5zc2xfY2FmaWxlID0gb3MucGF0aC5zcGxpdCgKKyAgICAgICAgc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpLm9wZW5zc2xfY2FmaWxlKQorCisgICAgcHJpbnQoIiAtLSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgY2VydGlmaSIpCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgIi1FIiwgIi1zIiwgIi1tIiwgInBpcCIsICJpbnN0YWxsIiwgIi0tdXBncmFkZSIsICJjZXJ0aWZpIl0pCisKKyAgICBpbXBvcnQgY2VydGlmaQorCisgICAgIyBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIGRlZmF1bHQgU1NMIGRpcmVjdG9yeQorICAgIG9zLmNoZGlyKG9wZW5zc2xfZGlyKQorICAgIHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUgPSBvcy5wYXRoLnJlbHBhdGgoY2VydGlmaS53aGVyZSgpKQorICAgIHByaW50KCIgLS0gcmVtb3ZpbmcgYW55IGV4aXN0aW5nIGZpbGUgb3IgbGluayIpCisgICAgdHJ5OgorICAgICAgICBvcy5yZW1vdmUob3BlbnNzbF9jYWZpbGUpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwYXNzCisgICAgcHJpbnQoIiAtLSBjcmVhdGluZyBzeW1saW5rIHRvIGNlcnRpZmkgY2VydGlmaWNhdGUgYnVuZGxlIikKKyAgICBvcy5zeW1saW5rKHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUsIG9wZW5zc2xfY2FmaWxlKQorICAgIHByaW50KCIgLS0gc2V0dGluZyBwZXJtaXNzaW9ucyIpCisgICAgb3MuY2htb2Qob3BlbnNzbF9jYWZpbGUsIFNUQVRfMG83NzUpCisgICAgcHJpbnQoIiAtLSB1cGRhdGUgY29tcGxldGUiKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorRU9GCmRpZmYgLS1naXQgYS9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkgYi9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkKaW5kZXggOTg2NzYwZC4uNTk5NGMxOCAxMDA2NDQKLS0tIGEvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5CisrKyBiL01hYy9JRExFL0lETEUuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9pZGxlbWFpbi5weQpAQCAtNjgsNiArNjgsNiBAQAogICAgICAgICBicmVhawogCiAjIE5vdyBpdCBpcyBzYWZlIHRvIGltcG9ydCBpZGxlbGliLgotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCmluZGV4IDkwMTMwYTIuLjNkZGVlZGYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnByZS5pbgorKysgYi9NYWtlZmlsZS5wcmUuaW4KQEAgLTQ4LDYgKzQ4LDEwIEBACiBMTFZNX1BST0ZfTUVSR0VSPUBMTFZNX1BST0ZfTUVSR0VSQAogTExWTV9QUk9GX0ZJTEU9QExMVk1fUFJPRl9GSUxFQAogTExWTV9QUk9GX0VSUj1ATExWTV9QUk9GX0VSUkAKK0RUUkFDRT0gICAgICAgICBARFRSQUNFQAorREZMQUdTPSAgICAgICAgIEBERkxBR1NACitEVFJBQ0VfSEVBREVSUz0gQERUUkFDRV9IRUFERVJTQAorRFRSQUNFX09CSlM9ICAgIEBEVFJBQ0VfT0JKU0AKIAogR05VTEQ9CQlAR05VTERACiAKQEAgLTEwOSw2ICsxMTMsNyBAQAogCiAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKK01VTFRJQVJDSF9DUFBGTEFHUyA9IEBNVUxUSUFSQ0hfQ1BQRkxBR1NACiAKICMgSW5zdGFsbCBwcmVmaXggZm9yIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcwogcHJlZml4PQkJQHByZWZpeEAKQEAgLTIzNCw3ICsyMzksNyBAQAogIyBUaGUgdGFzayB0byBydW4gd2hpbGUgaW5zdHJ1bWVudGVkIHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldC4KICMgV2UgZXhjbHVkZSB1bml0dGVzdHMgd2l0aCAteCB0aGF0IHRha2UgYSByZWRpY3VsaW91cyBhbW91bnQgb2YgdGltZSB0bwogIyBydW4gaW4gdGhlIGluc3RydW1lbnRlZCB0cmFpbmluZyBidWlsZCBvciBkbyBub3QgcHJvdmlkZSBtdWNoIHZhbHVlLgotUFJPRklMRV9UQVNLPS1tIHRlc3QucmVncnRlc3QgLS1wZ28gLXggdGVzdF9hc3luY29yZSB0ZXN0X2dkYiB0ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrIHRlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIgdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZyB0ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3biB0ZXN0X3N1YnByb2Nlc3MKK1BST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvCiAKICMgcmVwb3J0IGZpbGVzIGZvciBnY292IC8gbGNvdiBjb3ZlcmFnZSByZXBvcnQKIENPVkVSQUdFX0lORk89CSQoYWJzX2J1aWxkZGlyKS9jb3ZlcmFnZS5pbmZvCkBAIC0yNTMsOSArMjU4LDYgQEAKIAkJTW9kdWxlcy9tYWluLm8gXAogCQlNb2R1bGVzL2djbW9kdWxlLm8KIAotIyBVc2VkIG9mIHNpZ25hbG1vZHVsZS5vIGlzIG5vdCBhdmFpbGFibGUKLVNJR05BTF9PQkpTPQlAU0lHTkFMX09CSlNACi0KIElPX0g9CQlNb2R1bGVzL19pby9faW9tb2R1bGUuaAogCiBJT19PQkpTPQlcCkBAIC0yODAsMTggKzI4Miw2IEBACiAjIFBhcnNlcgogUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCiAKLVBTUkNTPQkJXAotCQlQYXJzZXIvYWNjZWxlci5jIFwKLQkJUGFyc2VyL2dyYW1tYXIxLmMgXAotCQlQYXJzZXIvbGlzdG5vZGUuYyBcCi0JCVBhcnNlci9ub2RlLmMgXAotCQlQYXJzZXIvcGFyc2VyLmMgXAotCQlQYXJzZXIvYml0c2V0LmMgXAotCQlQYXJzZXIvbWV0YWdyYW1tYXIuYyBcCi0JCVBhcnNlci9maXJzdHNldHMuYyBcCi0JCVBhcnNlci9ncmFtbWFyLmMgXAotCQlQYXJzZXIvcGdlbi5jCi0KIFBPQkpTPQkJXAogCQlQYXJzZXIvYWNjZWxlci5vIFwKIAkJUGFyc2VyL2dyYW1tYXIxLm8gXApAQCAtMzA2LDE2ICsyOTYsNiBAQAogCiBQQVJTRVJfT0JKUz0JJChQT0JKUykgUGFyc2VyL215cmVhZGxpbmUubyBQYXJzZXIvcGFyc2V0b2subyBQYXJzZXIvdG9rZW5pemVyLm8KIAotUEdTUkNTPQkJXAotCQlPYmplY3RzL29ibWFsbG9jLmMgXAotCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5jIFwKLQkJUHl0aG9uL215c25wcmludGYuYyBcCi0JCVB5dGhvbi9weWN0eXBlLmMgXAotCQlQYXJzZXIvdG9rZW5pemVyX3BnZW4uYyBcCi0JCVBhcnNlci9wcmludGdyYW1tYXIuYyBcCi0JCVBhcnNlci9wYXJzZXRva19wZ2VuLmMgXAotCQlQYXJzZXIvcGdlbm1haW4uYwotCiBQR09CSlM9CQlcCiAJCU9iamVjdHMvb2JtYWxsb2MubyBcCiAJCVB5dGhvbi9keW5hbWljX2Fubm90YXRpb25zLm8gXApAQCAtMzMxLDcgKzMxMSw2IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmggXAogCQkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5oCiAKLVBHRU5TUkNTPQkkKFBTUkNTKSAkKFBHU1JDUykKIFBHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTM0MCw3ICszMTksNyBAQAogT1BDT0RFX0hfU0NSSVBUPSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQogT1BDT0RFX0g9CSQoT1BDT0RFX0hfRElSKS9vcGNvZGUuaAogT1BDT0RFX0hfR0VOPQkkKFBZVEhPTl9GT1JfR0VOKSAkKE9QQ09ERV9IX1NDUklQVCkgJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPUENPREVfSCkKLSMKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCiBBU1RfSF9ESVI9CUluY2x1ZGUKQEAgLTM3Niw2ICszNTUsNyBAQAogCQlQeXRob24vY29tcGlsZS5vIFwKIAkJUHl0aG9uL2NvZGVjcy5vIFwKIAkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMubyBcCisJCVB5dGhvbi9kdHJhY2Vfc3R1YnMubyBcCiAJCVB5dGhvbi9lcnJvcnMubyBcCiAJCVB5dGhvbi9mcm96ZW5tYWluLm8gXAogCQlQeXRob24vZnV0dXJlLm8gXApAQCAtNDE2LDcgKzM5Niw4IEBACiAJCVB5dGhvbi8kKERZTkxPQURGSUxFKSBcCiAJCSQoTElCT0JKUykgXAogCQkkKE1BQ0hERVBfT0JKUykgXAotCQkkKFRIUkVBRE9CSikKKwkJJChUSFJFQURPQkopIFwKKwkJJChEVFJBQ0VfT0JKUykKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDcwLDEzICs0NTEsMjEgQEAKIAkJJChPQkpFQ1RfT0JKUykgXAogCQkkKFBZVEhPTl9PQkpTKSBcCiAJCSQoTU9EVUxFX09CSlMpIFwKLQkJJChTSUdOQUxfT0JKUykgXAogCQkkKE1PRE9CSlMpCiAKIExJQlJBUllfT0JKUz0JXAogCQkkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgXAogCQlQeXRob24vZnJvemVuLm8KIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgRFRyYWNlCisKKyMgT24gc29tZSBzeXN0ZW1zLCBvYmplY3QgZmlsZXMgdGhhdCByZWZlcmVuY2UgRFRyYWNlIHByb2JlcyBuZWVkIHRvIGJlIG1vZGlmaWVkCisjIGluLXBsYWNlIGJ5IGR0cmFjZSgxKS4KK0RUUkFDRV9ERVBTID0gXAorCVB5dGhvbi9jZXZhbC5vCisjIFhYWDogc2hvdWxkIGdjbW9kdWxlLCBldGMuIGJlIGhlcmUsIHRvbz8KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBSdWxlcwogCkBAIC01NjMsNyArNTUyLDcgQEAKICMgUnVuICJBcmd1bWVudCBDbGluaWMiIG92ZXIgYWxsIHNvdXJjZSBmaWxlcwogIyAoZGVwZW5kcyBvbiBweXRob24gaGF2aW5nIGFscmVhZHkgYmVlbiBidWlsdCkKIC5QSE9OWT1jbGluaWMKLWNsaW5pYzogJChCVUlMRFBZVEhPTikKK2NsaW5pYzogJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYwogCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC4vVG9vbHMvY2xpbmljL2NsaW5pYy5weSAtLW1ha2UKIAogIyBCdWlsZCB0aGUgaW50ZXJwcmV0ZXIKQEAgLTU3MSw3ICs1NjAsNyBAQAogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgUHJvZ3JhbXMvcHl0aG9uLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAogcGxhdGZvcm06ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0Ci0JJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10pJyA+cGxhdGZvcm0KKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludCgiJXMtJWQuJWQiICUgKGdldF9wbGF0Zm9ybSgpLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pKScgPnBsYXRmb3JtCiAKICMgQ3JlYXRlIGJ1aWxkIGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEgdGhlcmUuCiAjIHB5YnVpbGRkaXIudHh0IGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBidWlsZCBkaXIgYW5kIGlzIHVzZWQgZm9yCkBAIC01OTMsNiArNTgyLDExIEBACiBNb2R1bGVzL19tYXRoLm86IE1vZHVsZXMvX21hdGguYyBNb2R1bGVzL19tYXRoLmgKIAkkKENDKSAtYyAkKENDU0hBUkVEKSAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkPAogCisjIGJsYWtlMnMgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBibGFrZTJiCiskKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jOiAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5CisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2RpcikvVG9vbHMvY2xpbmljL2NsaW5pYy5weSAtZiAkQAorCiAjIEJ1aWxkIHRoZSBzaGFyZWQgbW9kdWxlcwogIyBVbmRlciBHTlUgbWFrZSwgTUFLRUZMQUdTIGFyZSBzb3J0ZWQgYW5kIG5vcm1hbGl6ZWQ7IHRoZSAncycgZm9yCiAjIC1zLCAtLXNpbGVudCBvciAtLXF1aWV0IGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hhci4KQEAgLTYwNiw2ICs2MDAsNyBAQAogCQlfVENMVEtfSU5DTFVERVM9JyQoVENMVEtfSU5DTFVERVMpJyBfVENMVEtfTElCUz0nJChUQ0xUS19MSUJTKScgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9zZXR1cC5weSAkJHF1aWV0IGJ1aWxkCiAKKwogIyBCdWlsZCBzdGF0aWMgbGlicmFyeQogIyBhdm9pZCBsb25nIGNvbW1hbmQgbGluZXMsIHNhbWUgYXMgTElCUkFSWV9PQkpTCiAkKExJQlJBUlkpOiAkKExJQlJBUllfT0JKUykKQEAgLTYxNCw3ICs2MDksNyBAQAogCSQoQVIpICQoQVJGTEFHUykgJEAgJChQQVJTRVJfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKRUNUX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKFBZVEhPTl9PQkpTKSBQeXRob24vZnJvemVuLm8KLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9EVUxFX09CSlMpICQoU0lHTkFMX09CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRFVMRV9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RPQkpTKQogCSQoUkFOTElCKSAkQAogCkBAIC03MTgsMTEgKzcxMywxMSBAQAogUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWI6IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pCiAJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgLW8gJEAgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKLVB5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBQeXRob24vbWFyc2hhbC5jCiAJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJICAgICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCiAKLVB5dGhvbi9pbXBvcnRsaWIuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQeXRob24vaW1wb3J0bGliLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBQeXRob24vbWFyc2hhbC5jCiAJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJICAgICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHl0aG9uL2ltcG9ydGxpYi5oCiAKQEAgLTczNCw3ICs3MjksNiBAQAogCQkkKE9CSkVDVF9PQkpTKSBcCiAJCSQoUFlUSE9OX09CSlMpIFwKIAkJJChNT0RVTEVfT0JKUykgXAotCQkkKFNJR05BTF9PQkpTKSBcCiAJCSQoTU9ET0JKUykgXAogCQkkKHNyY2RpcikvTW9kdWxlcy9nZXRidWlsZGluZm8uYwogCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIFwKQEAgLTc4MCw2ICs3NzQsNyBAQAogUHl0aG9uL3N5c21vZHVsZS5vOiAkKHNyY2RpcikvUHl0aG9uL3N5c21vZHVsZS5jIE1ha2VmaWxlCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXAogCQktREFCSUZMQUdTPSciJChBQklGTEFHUykiJyBcCisJCSQoTVVMVElBUkNIX0NQUEZMQUdTKSBcCiAJCS1vICRAICQoc3JjZGlyKS9QeXRob24vc3lzbW9kdWxlLmMKIAogJChJT19PQkpTKTogJChJT19IKQpAQCAtODYxLDcgKzg1Niw4IEBACiAKIE9iamVjdHMvdW5pY29kZW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgJChVTklDT0RFX0RFUFMpCiAKLU9iamVjdHMvZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAorT2JqZWN0cy9vZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCitPYmplY3RzL2RpY3RvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmggJChzcmNkaXIpL09iamVjdHMvZGljdC1jb21tb24uaAogT2JqZWN0cy9zZXRvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKIAogJChPUENPREVUQVJHRVRTX0gpOiAkKE9QQ09ERVRBUkdFVEdFTl9GSUxFUykKQEAgLTg3MSw2ICs4NjcsMTggQEAKIAogUHl0aG9uL2Zyb3plbi5vOiBQeXRob24vaW1wb3J0bGliLmggUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCiAKKyMgR2VuZXJhdGUgRFRyYWNlIHByb2JlIG1hY3JvcywgdGhlbiByZW5hbWUgdGhlbSAoUFlUSE9OXyAtPiBQeURUcmFjZV8pIHRvCisjIGZvbGxvdyBvdXIgbmFtaW5nIGNvbnZlbnRpb25zLiBkdHJhY2UoMSkgdXNlcyB0aGUgb3V0cHV0IGZpbGVuYW1lIHRvIGdlbmVyYXRlCisjIGFuIGluY2x1ZGUgZ3VhcmQsIHNvIHdlIGNhbid0IHVzZSBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBpdHMgb3V0cHV0LgorSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaDogJChzcmNkaXIpL0luY2x1ZGUvcHlkdHJhY2UuZAorCSQoRFRSQUNFKSAkKERGTEFHUykgLW8gJEAgLWggLXMgJDwKKwk6IHNlZCBpbi1wbGFjZSBlZGl0IHdpdGggUE9TSVgtb25seSB0b29scworCXNlZCAncy9QWVRIT05fL1B5RFRyYWNlXy8nICRAID4gJEAudG1wCisJbXYgJEAudG1wICRACisKK1B5dGhvbi9weWR0cmFjZS5vOiAkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5kICQoRFRSQUNFX0RFUFMpCisJJChEVFJBQ0UpICQoREZMQUdTKSAtbyAkQCAtRyAtcyAkPCAkKERUUkFDRV9ERVBTKQorCiBPYmplY3RzL3R5cGVvYmplY3QubzogT2JqZWN0cy90eXBlc2xvdHMuaW5jCiBPYmplY3RzL3R5cGVzbG90cy5pbmM6ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weQogCSQoUFlUSE9OX0ZPUl9HRU4pICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weSA8ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oIE9iamVjdHMvdHlwZXNsb3RzLmluYwpAQCAtOTI4LDYgKzkzNiw3IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL29iamltcGwuaCBcCiAJCSQoT1BDT0RFX0gpIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvb3NkZWZzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vc21vZHVsZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbi5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbmhlYWRlcnMuaCBcCkBAIC05MzYsNiArOTQ1LDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHljYXBzdWxlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWN0eXBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWRlYnVnLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHllcnJvcnMuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZnBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWhhc2guaCBcCkBAIC05NjcsNyArOTc3LDggQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvd2Vha3JlZm9iamVjdC5oIFwKIAkJcHljb25maWcuaCBcCiAJCSQoUEFSU0VSX0hFQURFUlMpIFwKLQkJJChBU1RfSCkKKwkJJChBU1RfSCkgXAorCQkkKERUUkFDRV9IRUFERVJTKQogCiAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKIApAQCAtOTc3LDcgKzk4OCw3IEBACiBURVNUT1BUUz0JJChFWFRSQVRFU1RPUFRTKQogVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5Ci1URVNUVElNRU9VVD0JMzYwMAorVEVTVFRJTUVPVVQ9CTEyMDAKIAogIyBSdW4gYSBiYXNpYyBzZXQgb2YgcmVncmVzc2lvbiB0ZXN0cy4KICMgVGhpcyBleGNsdWRlcyBzb21lIHRlc3RzIHRoYXQgYXJlIHBhcnRpY3VsYXJseSByZXNvdXJjZS1pbnRlbnNpdmUuCkBAIC0xMDE1LDcgKzEwMjYsNyBAQAogCQktQGlmIHdoaWNoIHB5YnVpbGRib3QuaWRlbnRpZnkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKIAkJCXB5YnVpbGRib3QuaWRlbnRpZnkgIkNDPSckKENDKSciICJDWFg9JyQoQ1hYKSciOyBcCiAJCWZpCi0JCSQoVEVTVFJVTk5FUikgLWogMSAtdSBhbGwgLVcgLS10aW1lb3V0PSQoVEVTVFRJTUVPVVQpICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLWogMSAtdSBhbGwgLVcgLS1zbG93ZXN0IC0tdGltZW91dD0kKFRFU1RUSU1FT1VUKSAkKFRFU1RPUFRTKQogCiBRVUlDS1RFU1RPUFRTPQkkKFRFU1RPUFRTKSAteCB0ZXN0X3N1YnByb2Nlc3MgdGVzdF9pbyB0ZXN0X2xpYjJ0bzMgXAogCQl0ZXN0X211bHRpYnl0ZWNvZGVjIHRlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0X2l0ZXJ0b29scyBcCkBAIC0xMTY4LDE2ICsxMTc5LDE2IEBACiAJKGNkICQoREVTVERJUikkKE1BTkRJUikvbWFuMTsgJChMTikgLXMgcHl0aG9uJChWRVJTSU9OKS4xIHB5dGhvbjMuMSkKIAogIyBJbnN0YWxsIHRoZSBsaWJyYXJ5Ci1QTEFURElSPQlAUExBVERJUkAKLU1BQ0hERVBTPQkkKFBMQVRESVIpCiBYTUxMSUJTVUJESVJTPSAgeG1sIHhtbC9kb20geG1sL2V0cmVlIHhtbC9wYXJzZXJzIHhtbC9zYXgKIExJQlNVQkRJUlM9CXRraW50ZXIgdGtpbnRlci90ZXN0IHRraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIgXAogCQl0a2ludGVyL3Rlc3QvdGVzdF90dGsgc2l0ZS1wYWNrYWdlcyB0ZXN0IFwKIAkJdGVzdC9hdWRpb2RhdGEgXAogCQl0ZXN0L2NhcGF0aCB0ZXN0L2RhdGEgXAogCQl0ZXN0L2Nqa2VuY29kaW5ncyB0ZXN0L2RlY2ltYWx0ZXN0ZGF0YSB0ZXN0L3htbHRlc3RkYXRhIFwKKwkJdGVzdC9kdHJhY2VkYXRhIFwKIAkJdGVzdC9laW50cmRhdGEgXAogCQl0ZXN0L2ltZ2hkcmRhdGEgXAorCQl0ZXN0L2xpYnJlZ3J0ZXN0IFwKIAkJdGVzdC9zdWJwcm9jZXNzZGF0YSB0ZXN0L3NuZGhkcmRhdGEgdGVzdC9zdXBwb3J0IFwKIAkJdGVzdC90cmFjZWRtb2R1bGVzIHRlc3QvZW5jb2RlZF9tb2R1bGVzIFwKIAkJdGVzdC90ZXN0X2ltcG9ydCBcCkBAIC0xMjI2LDggKzEyMzcsOCBAQAogCQltdWx0aXByb2Nlc3NpbmcgbXVsdGlwcm9jZXNzaW5nL2R1bW15IFwKIAkJdW5pdHRlc3QgdW5pdHRlc3QvdGVzdCB1bml0dGVzdC90ZXN0L3Rlc3Rtb2NrIFwKIAkJdmVudiB2ZW52L3NjcmlwdHMgdmVudi9zY3JpcHRzL3Bvc2l4IFwKLQkJY3Vyc2VzIHB5ZG9jX2RhdGEgJChNQUNIREVQUykKLWxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUExBVERJUikgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYworCQljdXJzZXMgcHlkb2NfZGF0YQorbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMKIAlAZm9yIGkgaW4gJChTQ1JJUFRESVIpICQoTElCREVTVCk7IFwKIAlkbyBcCiAJCWlmIHRlc3QgISAtZCAkKERFU1RESVIpJCRpOyB0aGVuIFwKQEAgLTEyNDcsNyArMTI1OCw3IEBACiAJCWVsc2UJdHJ1ZTsgXAogCQlmaTsgXAogCWRvbmUKLQlAZm9yIGkgaW4gJChzcmNkaXIpL0xpYi8qLnB5IGBjYXQgcHlidWlsZGRpci50eHRgL19zeXNjb25maWdkYXRhLnB5OyBcCisJQGZvciBpIGluICQoc3JjZGlyKS9MaWIvKi5weTsgXAogCWRvIFwKIAkJaWYgdGVzdCAteCAkJGk7IHRoZW4gXAogCQkJJChJTlNUQUxMX1NDUklQVCkgJCRpICQoREVTVERJUikkKExJQkRFU1QpOyBcCkBAIC0xMjgyLDYgKzEyOTMsMTAgQEAKIAkJCWVzYWM7IFwKIAkJZG9uZTsgXAogCWRvbmUKKwkkKElOU1RBTExfREFUQSkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUylfJChNQUNIREVQKV8kKE1VTFRJQVJDSCkucHkgXAorCQkkKERFU1RESVIpJChMSUJERVNUKTsgXAorCWVjaG8gJChJTlNUQUxMX0RBVEEpIGBjYXQgcHlidWlsZGRpci50eHRgL19zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpLnB5IFwKKwkJJChMSUJERVNUKQogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvTElDRU5TRSAkKERFU1RESVIpJChMSUJERVNUKS9MSUNFTlNFLnR4dAogCWlmIHRlc3QgLWQgJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzOyB0aGVuIFwKIAkJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMgXApAQCAtMTMxOSwyMyArMTMzNCw2IEBACiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL1BhdHRlcm5HcmFtbWFyLnR4dAogCi0jIENyZWF0ZSB0aGUgUExBVERJUiBzb3VyY2UgZGlyZWN0b3J5LCBpZiBvbmUgd2Fzbid0IGRpc3RyaWJ1dGVkLi4KLSQoc3JjZGlyKS9MaWIvJChQTEFURElSKToKLQlta2RpciAkKHNyY2RpcikvTGliLyQoUExBVERJUikKLQljcCAkKHNyY2RpcikvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbiAkKHNyY2RpcikvTGliLyQoUExBVERJUikvcmVnZW4KLQlleHBvcnQgUEFUSDsgUEFUSD0iYHB3ZGA6JCRQQVRIIjsgXAotCWV4cG9ydCBQWVRIT05QQVRIOyBQWVRIT05QQVRIPSJgcHdkYC9MaWIiOyBcCi0JZXhwb3J0IERZTERfRlJBTUVXT1JLX1BBVEg7IERZTERfRlJBTUVXT1JLX1BBVEg9ImBwd2RgIjsgXAotCWV4cG9ydCBFWEU7IEVYRT0iJChCVUlMREVYRSkiOyBcCi0JaWYgWyAtbiAiJChNVUxUSUFSQ0gpIiBdOyB0aGVuIGV4cG9ydCBNVUxUSUFSQ0g7IE1VTFRJQVJDSD0kKE1VTFRJQVJDSCk7IGZpOyBcCi0JZXhwb3J0IFBZVEhPTl9GT1JfQlVJTEQ7IFwKLQlpZiBbICIkKEJVSUxEX0dOVV9UWVBFKSIgPSAiJChIT1NUX0dOVV9UWVBFKSIgXTsgdGhlbiBcCi0JICBQWVRIT05fRk9SX0JVSUxEPSIkKEJVSUxEUFlUSE9OKSI7IFwKLQllbHNlIFwKLQkgIFBZVEhPTl9GT1JfQlVJTEQ9IiQoUFlUSE9OX0ZPUl9CVUlMRCkiOyBcCi0JZmk7IFwKLQljZCAkKHNyY2RpcikvTGliLyQoUExBVERJUik7ICQoUlVOU0hBUkVEKSAuL3JlZ2VuCi0KIHB5dGhvbi1jb25maWc6ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gTWlzYy9weXRob24tY29uZmlnLnNoCiAJIyBTdWJzdGl0dXRpb24gaGFwcGVucyBoZXJlLCBhcyB0aGUgY29tcGxldGVseS1leHBhbmRlZCBCSU5ESVIKIAkjIGlzIG5vdCBhdmFpbGFibGUgaW4gY29uZmlndXJlCkBAIC0xNDMyLDcgKzE0MzAsNyBAQAogCQktLWluc3RhbGwtc2NyaXB0cz0kKEJJTkRJUikgXAogCQktLWluc3RhbGwtcGxhdGxpYj0kKERFU1RTSEFSRUQpIFwKIAkJLS1yb290PSQoREVTVERJUikvCi0JLXJtICQoREVTVERJUikkKERFU1RTSEFSRUQpL19zeXNjb25maWdkYXRhLnB5CisJLXJtICQoREVTVERJUikkKERFU1RTSEFSRUQpL19zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpLnB5CiAJLXJtIC1yICQoREVTVERJUikkKERFU1RTSEFSRUQpL19fcHljYWNoZV9fCiAKICMgSGVyZSBhcmUgYSBjb3VwbGUgb2YgdGFyZ2V0cyBmb3IgTWFjT1NYIGFnYWluLCB0byBpbnN0YWxsIGEgZnVsbApAQCAtMTQ3OCwxMCArMTQ3NiwxMCBAQAogIyBJbnN0YWxsIGEgbnVtYmVyIG9mIHN5bWxpbmtzIHRvIGtlZXAgc29mdHdhcmUgdGhhdCBleHBlY3RzIGEgbm9ybWFsIHVuaXgKICMgaW5zdGFsbCAod2hpY2ggaW5jbHVkZXMgcHl0aG9uLWNvbmZpZykgaGFwcHkuCiBmcmFtZXdvcmtpbnN0YWxsbWFjbGliOgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5hIgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKLQkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL3B5dGhvbiQoVkVSU0lPTikvY29uZmlnLSQoTERWRVJTSU9OKS9saWJweXRob24kKFZFUlNJT04pLmEiCi0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChWRVJTSU9OKS5keWxpYiIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKExEVkVSU0lPTikuYSIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKExEVkVSU0lPTikuZHlsaWIiCisJJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChMSUJQTCkvbGlicHl0aG9uJChWRVJTSU9OKS5hIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoVkVSU0lPTikuZHlsaWIiCiAJJChMTikgLWZzICIuLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9saWJweXRob24kKExEVkVSU0lPTikuZHlsaWIiCiAJJChMTikgLWZzICIuLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9saWJweXRob24kKFZFUlNJT04pLmR5bGliIgogCkBAIC0xNTk2LDYgKzE1OTQsNyBAQAogCS1ybSAtZiBMaWIvbGliMnRvMy8qR3JhbW1hcioucGlja2xlCiAJLXJtIC1mIFByb2dyYW1zL190ZXN0ZW1iZWQgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKIAktZmluZCBidWlsZCAtdHlwZSBmIC1hICEgLW5hbWUgJyouZ2M/PycgLWV4ZWMgcm0gLWYge30gJzsnCisJLXJtIC1mIEluY2x1ZGUvcHlkdHJhY2VfcHJvYmVzLmgKIAogcHJvZmlsZS1yZW1vdmFsOgogCWZpbmQgLiAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKQEAgLTE2NTYsNyArMTY1NSw2IEBACiAJCS1vIC1uYW1lICcqLnRtU25pcHBldCcgXAogCQktbyAtbmFtZSAnU2V0dXAnIFwKIAkJLW8gLW5hbWUgJ1NldHVwLionIFwKLQkJLW8gLW5hbWUgcmVnZW4gXAogCQktbyAtbmFtZSBSRUFETUUgXAogCQktbyAtbmFtZSBORVdTIFwKIAkJLW8gLW5hbWUgSElTVE9SWSBcCmRpZmYgLS1naXQgYS9NaXNjL0FDS1MgYi9NaXNjL0FDS1MKaW5kZXggZjU5MGY2Yy4uN2NlZWUzNSAxMDA2NDQKLS0tIGEvTWlzYy9BQ0tTCisrKyBiL01pc2MvQUNLUwpAQCAtMTIwLDYgKzEyMCw3IEBACiBUaG9tYXMgQmVsbG1hbgogQWxleGFuZGVyIOKAnNCh0LDRiNCw4oCdIEJlbG9wb2xza3kKIEVsaSBCZW5kZXJza3kKK05pa2hpbCBCZW5lc2NoCiBEYXZpZCBCZW5qYW1pbgogT3NjYXIgQmVuamFtaW4KIEFuZHJldyBCZW5uZXR0cwpAQCAtMTU1LDYgKzE1Niw3IEBACiBQYXVsIEJvZGRpZQogTWF0dGhldyBCb2VkaWNrZXIKIFJvYmluIEJvZXJkaWprCitOaWtvbGF5IEJvZ295Y2hldgogRGF2aWQgQm9sZW4KIFdvdXRlciBCb2xzdGVybGVlCiBHYXdhaW4gQm9sdG9uCkBAIC0yNDEsNiArMjQzLDcgQEAKIE1pY2hhZWwgQ2V0cnVsbwogRGF2ZSBDaGFtYmVycwogUGFzY2FsIENoYW1ib24KK05pY2hvbGFzIENoYW1tYXMKIEpvaG4gQ2hhbmRsZXIKIEh5ZS1TaGlrIENoYW5nCiBKZWZmcmV5IENoYW5nCkBAIC0zMDUsMTUgKzMwOCwxOCBAQAogRGF2aWQgQ291cm5hcGVhdQogSnVsaWVuIENvdXJ0ZWF1CiBTdGV2ZSBDb3VzaW5zCitGcmFuY2lzY28gQ291em8KIEFsZXggQ292ZW50cnkKIE1hdHRoZXcgRGl4b24gQ293bGVzCiBSeWFuIENveW5lcgogQ2hyaXN0b3BoZXIgQS4gQ3JhaWcKIEplcmVteSBDcmF2ZW4KIExhdXJhIENyZWlnaHRvbgorVHlsZXIgQ3JvbXB0b24KIFNpbW9uIENyb3NzCiBGZWxpcGUgQ3J1egogRHJldyBDc2lsbGFnCitBbGVzc2FuZHJvIEN1Y2NpCiBKb2FxdWluIEN1ZW5jYSBBYmVsYQogSm9obiBDdWdpbmkKIFRvbSBDdWxsaXRvbgpAQCAtMzU3LDYgKzM2Myw3IEBACiBZdmVzIERpb25uZQogRGFuaWVsIERpdHRtYXIKIEpvc2lwIERqb2xvbmdhCitXYWx0ZXIgRMO2cndhbGQKIEphcm9taXIgRG9sZWNlawogSXNtYWlsIERvbm1legogUm9iZXJ0IERvbm9odWUKQEAgLTM4NCw3ICszOTEsNiBAQAogS2FybWVuIER5a3N0cmEKIEpvc2lwIER6b2xvbmdhCiBNYXhpbSBEenVtYW5lbmtvCi1XYWx0ZXIgRMO2cndhbGQKIEhhbnMgRWNrYXJkdAogUm9kb2xwaG8gRWNraGFyZHQKIFVscmljaCBFY2toYXJkdApAQCAtNTQyLDggKzU0OCwxMCBAQAogTGFycyBHdXN0w6RiZWwKIFRob21hcyBHw7x0dGxlcgogSm9uYXMgSC4KK0pvc2VwaCBIYWNrbWFuCiBCYXJyeSBIYWRkb3cKIFBoaWxpcHAgSGFnZW1laXN0ZXIKK0pvaG4gSGFnZW4KIFBhdWwgdGVuIEhhZ2VuCiBSYXNtdXMgSGFobgogUGV0ZXIgSGFpZ2h0CkBAIC03NzksNiArNzg3LDcgQEAKIE1hcmtvIEtvaHRhbGEKIFZhanJhc2t5IEtvawogR3VpZG8gS29sbGVyaWUKK0phY2VrIEtvxYJvZHppZWoKIEphY2VrIEtvbmllY3pueQogQXJrYWR5IEtvcGx5YXJvdgogUGV0ZXIgQS4gS29yZW4KQEAgLTc5MCw2ICs3OTksNyBAQAogSmVyenkgS296ZXJhCiBNYWtzaW0gS296eWFyY2h1awogU3RlZmFuIEtyYWgKK1JvbGYgS3JhaGwKIEJvYiBLcmFzCiBTZWJhc3RpYW4gS3JlZnQKIEhvbGdlciBLcmVrZWwKQEAgLTgyMiw2ICs4MzIsNyBAQAogVGlubyBMYW5nZQogR2xlbm4gTGFuZ2ZvcmQKIEFuZHJldyBMYW5nbWVhZAorV29sZmdhbmcgTGFuZ25lcgogRGV0bGVmIExhbm5lcnQKIFNvcmVuIExhcnNlbgogQW1vcyBMYXR0ZWllcgpAQCAtODg0LDI0ICs4OTUsMjcgQEAKIEdyZWdvciBMaW5nbAogRXZlcmV0dCBMaXBtYW4KIE1pcmtvIExpc3MKK0FsZXhhbmRlciBMaXUKIE5pY2sgTG9ja3dvb2QKIFN0ZXBoYW5pZSBMb2Nrd29vZAorTWFydGluIHZvbiBMw7Z3aXMKIEh1Z28gTG9wZXMgVGF2YXJlcwogR3VpbGxlcm1vIEzDs3Blei1BbmdsYWRhCiBBbm5lIExvcmQKK0FsZXggTG9yZFRob3JzZW4KIFRvbSBMb3JlZG8KIEp1c3RpbiBMb3ZlCiBOZWQgSmFja3NvbiBMb3ZlbHkKIFBldGVyIExvdmV0dAogQ2hhbG1lciBMb3dlCiBKYXNvbiBMb3dlCi1NYXJ0aW4gdm9uIEzDtndpcwogVG9ueSBMb3duZHMKIFJheSBMb3l6YWdhCiBLYW5nLUhhbyAoS2VubnkpIEx1CiBMdWthcyBMdWVnCiBMb3JlbiBMdWtlCiBGcmVkcmlrIEx1bmRoCitNaWtlIEx1bmR5CiBaaG9uZ3l1ZSBMdW8KIE1hcmsgTHV0egogVGFyYXMgTHlhcHVuCkBAIC0xMTQyLDkgKzExNTYsMTEgQEAKIEdlb2ZmIFBoaWxicmljawogR2F2cmllIFBoaWxpcHNvbgogQWRyaWFuIFBoaWxsaXBzCitEdXN0eSBQaGlsbGlwcwogQ2hyaXN0b3BoZXIgSi4gUGhvZW5peAogSmFtZXMgUGlja2VyaW5nCiBOZWFsZSBQaWNrZXR0CitTdGV2ZSBQaWVyY3kKIEppbSBTdC4gUGllcnJlCiBEYW4gUGllcnNvbgogTWFydGlqbiBQaWV0ZXJzCkBAIC0xMTkzLDggKzEyMDksMTAgQEAKIEFiaGlsYXNoIFJhagogU2hvcnlhIFJhagogSmVmZiBSYW1uYW5pCitCYXlhcmQgUmFuZGVsCiBWYXJwdSBSYW50YWxhCiBCcm9kaWUgUmFvCitSw6ltaSBSYW1waW4KIFNlbmtvIFJhc2ljCiBBbnR0aSBSYXNpbmVuCiBOaWtvbGF1cyBSYXRoCkBAIC0xMjQ1LDYgKzEyNjMsNyBAQAogS2V2aW4gUm9kZ2VycwogU2VhbiBSb2RtYW4KIEdpYW1wYW9sbyBSb2RvbGEKK01hdXJvIFMuIE0uIFJvZHJpZ3VlcwogRWxzb24gUm9kcmlndWV6CiBBZGkgUm9pYmFuCiBMdWlzIFJvamFzCkBAIC0xMjg3LDYgKzEzMDYsNyBAQAogQ29uc3RhbnRpbmEgUy4KIFBhdHJpY2sgU2FiaW4KIFPDqWJhc3RpZW4gU2FibMOpCitBbWl0IFNhaGEKIFN1bWFuIFNhaGEKIEhhamltZSBTYWl0b3UKIEdlb3JnZSBTYWtraXMKQEAgLTEzOTMsNiArMTQxMyw3IEBACiBSb3kgU21pdGgKIFJ5YW4gU21pdGgtUm9iZXJ0cwogUmFmYWwgU21vdHJ6eWsKK0pvc2ggU25pZGVyCiBFcmljIFNub3cKIERpcmsgU29lZGUKIE5pciBTb2ZmZXIKQEAgLTE0MjAsMTEgKzE0NDEsMTMgQEAKIE1hcmVrIFN0ZXBuaW93c2tpCiBCYXJ1Y2ggU3RlcmluCiBDaHJpcyBTdGVybgorRWxpIFN0ZXZlbnMKIEFsZXggU3Rld2FydAogVmljdG9yIFN0aW5uZXIKIFJpY2hhcmQgU3RvYWtsZXkKIFBldGVyIFN0b2VocgogQ2FzcGVyIFN0b2VsCitEYW5pZWwgU3Rva2VzCiBNaWNoYWVsIFN0b25lCiBTZXJoaXkgU3RvcmNoYWthCiBLZW4gU3RveApAQCAtMTQ0OSw2ICsxNDcyLDcgQEAKIEpvaG4gU3pha21laXN0ZXIKIEFtaXIgU3pla2VseQogTWFjaWVqIFN6dWxpaworSm9lbCBUYWRkZWkKIEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzCiBIaWRlYWtpIFRha2FoYXNoaQogVGFrYXNlIEFyaWhpcm8KQEAgLTE0NjAsOCArMTQ4NCwxMCBAQAogQ2hyaXN0aWFuIFRhbnplcgogU3RldmVuIFRhc2NodWsKIEFteSBUYXlsb3IKK0p1bGlhbiBUYXlsb3IKIE1vbnR5IFRheWxvcgogQW5hdG9seSBUZWNodG9uaWsKK01hcnRpbiBUZWljaG1hbm4KIEd1c3Rhdm8gVGVtcGxlCiBNaWtoYWlsIFRlcmVraG92CiBWaWN0b3IgVGVycsOzbgpAQCAtMTY0Miw2ICsxNjY4LDcgQEAKIEFsYWtzaGVuZHJhIFlhZGF2CiBIaXJva2F6dSBZYW1hbW90bwogS2EtUGluZyBZZWUKK0NoaSBIc3VhbiBZZW4KIEphc29uIFllbwogRXVuZ0p1biBZaQogQm9iIFlvZGxvd3NraQpAQCAtMTY3MCw0ICsxNjk3LDMgQEAKIERvdWcgWm9uZ2tlcgogUGV0ZXIgw4VzdHJhbmQKIGV2aWx6ZXJvCi1DaGkgSHN1YW4gWWVuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggYzIzZWM5Ny4uNjcxYTliNCAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMiwyMyArMiwxOTYgQEAKIFB5dGhvbiBOZXdzCiArKysrKysrKysrKwogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMyByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGJldGEgMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVJlbGVhc2UgZGF0ZTogVEJBCisqUmVsZWFzZSBkYXRlOiBYWFhYLVhYLVhYKgogCiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMjgxOTI6IERvbid0IGltcG9ydCByZWFkbGluZSBpbiBpc29sYXRlZCBtb2RlLgorCistIFVwZ3JhZGUgaW50ZXJuYWwgdW5pY29kZSBkYXRhYmFzZXMgdG8gVW5pY29kZSB2ZXJzaW9uIDkuMC4wLgorCiAtIElzc3VlICMyODEzMTogRml4IGEgcmVncmVzc2lvbiBpbiB6aXBpbXBvcnQncyBjb21waWxlX3NvdXJjZSgpLiAgemlwaW1wb3J0CiAgIHNob3VsZCB1c2UgdGhlIHNhbWUgb3B0aW1pemF0aW9uIGxldmVsIGFzIHRoZSBpbnRlcnByZXRlci4KIAotLSBJc3N1ZSAjMjUyMjE6IEZpeCBjb3JydXB0ZWQgcmVzdWx0IGZyb20gUHlMb25nX0Zyb21Mb25nKDApIHdoZW4KLSAgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggTlNNQUxMUE9TSU5UUyA9IDAuCistIElzc3VlICMyODEyNjogUmVwbGFjZSBQeV9NRU1DUFkgd2l0aCBtZW1jcHkoKS4gVmlzdWFsIFN0dWRpbyBjYW4gcHJvcGVybHkKKyAgb3B0aW1pemUgbWVtY3B5KCkuCisKKy0gSXNzdWUgIzI4MTIwOiBGaXggZGljdC5wb3AoKSBmb3Igc3BsaXR0ZWQgZGljdGlvbmFyeSB3aGVuIHRyeWluZyB0byByZW1vdmUgYQorICAicGVuZGluZyBrZXkiIChOb3QgeWV0IGluc2VydGVkIGluIHNwbGl0LXRhYmxlKS4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2MTgyOiBSYWlzZSBEZXByZWNhdGlvbldhcm5pbmcgd2hlbiBhc3luYyBhbmQgYXdhaXQga2V5d29yZHMgYXJlCisgIHVzZWQgYXMgdmFyaWFibGUvYXR0cmlidXRlL2NsYXNzL2Z1bmN0aW9uIG5hbWUuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjc5MzI6IFByZXZlbnQgbWVtb3J5IGxlYWsgaW4gd2luMzJfdmVyKCkuCisKKy0gRml4IFVuYm91bmRMb2NhbEVycm9yIGluIHNvY2tldC5fc2VuZGZpbGVfdXNlX3NlbmRmaWxlLgorCistIElzc3VlICMyODA3NTogQ2hlY2sgZm9yIEVSUk9SX0FDQ0VTU19ERU5JRUQgaW4gV2luZG93cyBpbXBsZW1lbnRhdGlvbiBvZgorICBvcy5zdGF0KCkuICBQYXRjaCBieSBFcnlrIFN1bi4KKworLSBJc3N1ZSAjMjI0OTM6IFdhcm5pbmcgbWVzc2FnZSBlbWl0dGVkIGJ5IHVzaW5nIGlubGluZSBmbGFncyBpbiB0aGUgbWlkZGxlIG9mCisgIHJlZ3VsYXIgZXhwcmVzc2lvbiBub3cgY29udGFpbnMgYSAodHJ1bmNhdGVkKSByZWdleCBwYXR0ZXJuLgorICBQYXRjaCBieSBUaW0gR3JhaGFtLgorCistIElzc3VlICMyNTI3MDogUHJldmVudCBjb2RlY3MuZXNjYXBlX2VuY29kZSgpIGZyb20gcmFpc2luZyBTeXN0ZW1FcnJvciB3aGVuCisgIGFuIGVtcHR5IGJ5dGVzdHJpbmcgaXMgcGFzc2VkLgorCistIElzc3VlICMyODE4MTogR2V0IGFudGlncmF2aXR5IG92ZXIgSFRUUFMuIFBhdGNoIGJ5IEthYXJ0aWMgU2l2YXJhYW0uCisKKy0gSXNzdWUgIzI1ODk1OiBFbmFibGUgV2ViU29ja2V0IFVSTCBzY2hlbWVzIGluIHVybGxpYi5wYXJzZS51cmxqb2luLgorICBQYXRjaCBieSBHZXJnZWx5IEltcmVoIGFuZCBNYXJrdXMgSG9sdGVybWFubi4KKworLSBJc3N1ZSAjMjgxMTQ6IEZpeCBhIGNyYXNoIGluIHBhcnNlX2Vudmxpc3QoKSB3aGVuIGVudiBjb250YWlucyBieXRlIHN0cmluZ3MuCisgIFBhdGNoIGJ5IEVyeWsgU3VuLgorCistIElzc3VlICMyNzU5OTogRml4ZWQgYnVmZmVyIG92ZXJydW4gaW4gYmluYXNjaWkuYjJhX3FwKCkgYW5kIGJpbmFzY2lpLmEyYl9xcCgpLgorCistIElzc3VlICMyNzkwNjogRml4IHNvY2tldCBhY2NlcHQgZXhoYXVzdGlvbiBkdXJpbmcgaGlnaCBUQ1AgdHJhZmZpYy4KKyAgUGF0Y2ggYnkgS2V2aW4gQ29ud2F5LgorCistIElzc3VlICMyODE3NDogSGFuZGxlIHdoZW4gU09fUkVVU0VQT1JUIGlzbid0IHByb3Blcmx5IHN1cHBvcnRlZC4KKyAgUGF0Y2ggYnkgU2V0aCBNaWNoYWVsIExhcnNvbi4KKworLSBJc3N1ZSAjMjY2NTQ6IEluc3BlY3QgZnVuY3Rvb2xzLnBhcnRpYWwgaW4gYXN5bmNpby5IYW5kbGUuX19yZXByX18uCisgIFBhdGNoIGJ5IGljZWJveS4KKworLSBJc3N1ZSAjMjY5MDk6IEZpeCBzbG93IHBpcGVzIElPIGluIGFzeW5jaW8uCisgIFBhdGNoIGJ5IElOQURBIE5hb2tpLgorCistIElzc3VlICMyODE3NjogRml4IGNhbGxiYWNrcyByYWNlIGluIGFzeW5jaW8uU2VsZWN0b3JMb29wLnNvY2tfY29ubmVjdC4KKworLSBJc3N1ZSAjMjc3NTk6IEZpeCBzZWxlY3RvcnMgaW5jb3JyZWN0bHkgcmV0YWluIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4KKyAgUGF0Y2ggYnkgTWFyayBXaWxsaWFtcy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyODExMDogbGF1bmNoZXIubXNpIGhhcyBkaWZmZXJlbnQgcHJvZHVjdCBjb2RlcyBiZXR3ZWVuIDMyLWJpdCBhbmQKKyAgNjQtYml0CisKKy0gSXNzdWUgIzI4MTYxOiBPcGVuaW5nIENPTiBmb3Igd3JpdGUgYWNjZXNzIGZhaWxzCisKKy0gSXNzdWUgIzI4MTYyOiBXaW5kb3dzQ29uc29sZUlPIHJlYWRhbGwoKSBmYWlscyBpZiBmaXJzdCBsaW5lIHN0YXJ0cyB3aXRoCisgIEN0cmwrWgorCistIElzc3VlICMyODE2MzogV2luZG93c0NvbnNvbGVJTyBmaWxlbm8oKSBwYXNzZXMgd3JvbmcgZmxhZ3MgdG8KKyAgX29wZW5fb3NmaGFuZGxlCisKKy0gSXNzdWUgIzI4MTY0OiBfUHlJT19nZXRfY29uc29sZV90eXBlIGZhaWxzIGZvciB2YXJpb3VzIHBhdGhzCisKKy0gSXNzdWUgIzI4MTM3OiBSZW5hbWVzIFdpbmRvd3MgcGF0aCBmaWxlIHRvIC5fcHRoCisKKy0gSXNzdWUgIzI4MTM4OiBXaW5kb3dzIC5fcHRoIGZpbGUgc2hvdWxkIGFsbG93IGltcG9ydCBzaXRlCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNjY2MTogc2V0dXAucHkgbm93IGRldGVjdHMgc3lzdGVtIGxpYmZmaSB3aXRoIG11bHRpYXJjaCB3cmFwcGVyLgorCistIElzc3VlICMxNTgxOTogUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlIHNlYXJjaCBkaXJlY3Rvcnkgb3B0aW9uIGZvciBidWlsZGluZworICBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBiZXRhIDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTA5LTEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM3MjI6IFRoZSBfX2NsYXNzX18gY2VsbCB1c2VkIGJ5IHplcm8tYXJndW1lbnQgc3VwZXIoKSBpcyBub3cKKyAgaW5pdGlhbGl6ZWQgZnJvbSB0eXBlLl9fbmV3X18gcmF0aGVyIHRoYW4gX19idWlsZF9jbGFzc19fLCBzbyBjbGFzcyBtZXRob2RzCisgIHJlbHlpbmcgb24gdGhhdCB3aWxsIG5vdyB3b3JrIGNvcnJlY3RseSB3aGVuIGNhbGxlZCBmcm9tIG1ldGFjbGFzcyBtZXRob2RzCisgIGR1cmluZyBjbGFzcyBjcmVhdGlvbi4gUGF0Y2ggYnkgTWFydGluIFRlaWNobWFubi4KKworLSBJc3N1ZSAjMjUyMjE6IEZpeCBjb3JydXB0ZWQgcmVzdWx0IGZyb20gUHlMb25nX0Zyb21Mb25nKDApIHdoZW4gUHl0aG9uCisgIGlzIGNvbXBpbGVkIHdpdGggTlNNQUxMUE9TSU5UUyA9IDAuCisKKy0gSXNzdWUgIzI3MDgwOiBJbXBsZW1lbnQgZm9ybWF0dGluZyBzdXBwb3J0IGZvciBQRVAgNTE1LiAgSW5pdGlhbCBwYXRjaAorICBieSBDaHJpcyBBbmdlbGljby4KKworLSBJc3N1ZSAjMjcxOTk6IEluIHRhcmZpbGUsIGV4cG9zZSBjb3B5ZmlsZW9iaiBidWZzaXplIHRvIGltcHJvdmUgdGhyb3VnaHB1dC4KKyAgUGF0Y2ggYnkgSmFzb24gRnJpZWQuCisKKy0gSXNzdWUgIzI3OTQ4OiBJbiBmLXN0cmluZ3MsIG9ubHkgYWxsb3cgYmFja3NsYXNoZXMgaW5zaWRlIHRoZSBicmFjZXMKKyAgKHdoZXJlIHRoZSBleHByZXNzaW9ucyBhcmUpLiAgVGhpcyBpcyBhIGJyZWFraW5nIGNoYW5nZSBmcm9tIHRoZSAzLjYKKyAgYWxwaGEgcmVsZWFzZXMsIHdoZXJlIGJhY2tzbGFzaGVzIGFyZSBhbGxvd2VkIGFueXdoZXJlIGluIGFuCisgIGYtc3RyaW5nLiAgQWxzbywgcmVxdWlyZSB0aGF0IGV4cHJlc3Npb25zIGluc2lkZSBmLXN0cmluZ3MgYmUKKyAgZW5jbG9zZWQgd2l0aGluIGxpdGVyYWwgYnJhY2VzLCBhbmQgbm90IGVzY2FwZXMgbGlrZQorICBmJ1x4N2IiaGkiXHg3ZCcuCisKKy0gSXNzdWUgIzI4MDQ2OiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMgZnJvbSBzeXMucGF0aC4KKworLSBJc3N1ZSAjMjgwNzE6IEFkZCBlYXJseS1vdXQgZm9yIGRpZmZlcmVuY2luZyBmcm9tIGFuIGVtcHR5IHNldC4KIAogLSBJc3N1ZSAjMjU3NTg6IFByZXZlbnRzIHppcGltcG9ydCBmcm9tIHVubmVjZXNzYXJpbHkgZW5jb2RpbmcgYSBmaWxlbmFtZQogICAocGF0Y2ggYnkgRXJ5ayBTdW4pCiAKKy0gSXNzdWUgIzI1ODU2OiBUaGUgX19tb2R1bGVfXyBhdHRyaWJ1dGUgb2YgZXh0ZW5zaW9uIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucworICBub3cgaXMgaW50ZXJuZWQuIFRoaXMgbGVhZHMgdG8gbW9yZSBjb21wYWN0IHBpY2tsZSBkYXRhIHdpdGggcHJvdG9jb2wgNC4KKworLSBJc3N1ZSAjMjcyMTM6IFJld29yayBDQUxMX0ZVTkNUSU9OKiBvcGNvZGVzIHRvIHByb2R1Y2Ugc2hvcnRlciBhbmQgbW9yZQorICBlZmZpY2llbnQgYnl0ZWNvZGUuIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLCBkZXNpZ24gYnkgU2VyaGl5IFN0b3JjaGFrYSwKKyAgcmV2aWV3ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBhbmQgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzI2MzMxOiBJbXBsZW1lbnQgdG9rZW5pemluZyBzdXBwb3J0IGZvciBQRVAgNTE1LiBQYXRjaCBieSBHZW9yZyBCcmFuZGwuCisKKy0gSXNzdWUgIzI3OTk5OiBNYWtlICJnbG9iYWwgYWZ0ZXIgdXNlIiBhIFN5bnRheEVycm9yLCBhbmQgZGl0dG8gZm9yIG5vbmxvY2FsLgorICBQYXRjaCBieSBJdmFuIExldmtpdnNreWkuCisKKy0gSXNzdWUgIzI4MDAzOiBJbXBsZW1lbnQgUEVQIDUyNSAtLSBBc3luY2hyb25vdXMgR2VuZXJhdG9ycy4KKworLSBJc3N1ZSAjMjc5ODU6IEltcGxlbWVudCBQRVAgNTI2IC0tIFN5bnRheCBmb3IgVmFyaWFibGUgQW5ub3RhdGlvbnMuCisgIFBhdGNoIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworLSBJc3N1ZSAjMjYwNTg6IEFkZCBhIG5ldyBwcml2YXRlIHZlcnNpb24gdG8gdGhlIGJ1aWx0aW4gZGljdCB0eXBlLCBpbmNyZW1lbnRlZAorICBhdCBlYWNoIGRpY3Rpb25hcnkgY3JlYXRpb24gYW5kIGF0IGVhY2ggZGljdGlvbmFyeSBjaGFuZ2UuIEltcGxlbWVudGF0aW9uIG9mCisgIHRoZSBQRVAgNTA5LgorCistIElzc3VlICMyNzM2NDogQSBiYWNrc2xhc2gtY2hhcmFjdGVyIHBhaXIgdGhhdCBpcyBub3QgYSB2YWxpZCBlc2NhcGUgc2VxdWVuY2UKKyAgbm93IGdlbmVyYXRlcyBhIERlcHJlY2F0aW9uV2FybmluZy4gIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI3MzUwOiBgZGljdGAgaW1wbGVtZW50YXRpb24gaXMgY2hhbmdlZCBsaWtlIFB5UHkuIEl0IGlzIG1vcmUgY29tcGFjdAorICBhbmQgcHJlc2VydmVzIGluc2VydGlvbiBvcmRlci4KKyAgKENvbmNlcHQgZGV2ZWxvcGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGFuZCBwYXRjaCBieSBJbmFkYSBOYW9raS4pCisKKy0gSXNzdWUgIzI3OTExOiBSZW1vdmUgdW5uZWNlc3NhcnkgZXJyb3IgY2hlY2tzIGluCisgIGBgZXhlY19idWlsdGluX29yX2R5bmFtaWMoKWBgLgorCistIElzc3VlICMyNzA3ODogQWRkZWQgQlVJTERfU1RSSU5HIG9wY29kZS4gIE9wdGltaXplZCBmLXN0cmluZ3MgZXZhbHVhdGlvbi4KKworLSBJc3N1ZSAjMTc4ODQ6IFB5dGhvbiBub3cgcmVxdWlyZXMgc3lzdGVtcyB3aXRoIGludHR5cGVzLmggYW5kIHN0ZGludC5oCisKKy0gSXNzdWUgIzI3OTYxOiBSZXF1aXJlIHBsYXRmb3JtcyB0byBzdXBwb3J0IGBgbG9uZyBsb25nYGAuIFB5dGhvbiBoYXNuJ3QKKyAgY29tcGlsZWQgd2l0aG91dCBgYGxvbmcgbG9uZ2BgIGZvciB5ZWFycywgc28gdGhpcyBpcyBiYXNpY2FsbHkgYSBmb3JtYWxpdHkuCisKKy0gSXNzdWUgIzI3MzU1OiBSZW1vdmVkIHN1cHBvcnQgZm9yIFdpbmRvd3MgQ0UuICBJdCB3YXMgbmV2ZXIgZmluaXNoZWQsCisgIGFuZCBXaW5kb3dzIENFIGlzIG5vIGxvbmdlciBhIHJlbGV2YW50IHBsYXRmb3JtIGZvciBQeXRob24uCisKKy0gSW1wbGVtZW50IFBFUCA1MjMuCisKKy0gSXNzdWUgIzI3ODcwOiBBIGxlZnQgc2hpZnQgb2YgemVybyBieSBhIGxhcmdlIGludGVnZXIgbm8gbG9uZ2VyIGF0dGVtcHRzCisgIHRvIGFsbG9jYXRlIGxhcmdlIGFtb3VudHMgb2YgbWVtb3J5LgorCistIElzc3VlICMyNTQwMjogSW4gaW50LXRvLWRlY2ltYWwtc3RyaW5nIGNvbnZlcnNpb24sIGltcHJvdmUgdGhlIGVzdGltYXRlCisgIG9mIHRoZSBpbnRlcm1lZGlhdGUgbWVtb3J5IHJlcXVpcmVkLCBhbmQgcmVtb3ZlIGFuIHVubmVjZXNzYXJpbHkgc3RyaWN0CisgIG92ZXJmbG93IGNoZWNrLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNzIxNDogSW4gbG9uZ19pbnZlcnQsIGJlIG1vcmUgY2FyZWZ1bCBhYm91dCBtb2RpZnlpbmcgb2JqZWN0CisgIHJldHVybmVkIGJ5IGxvbmdfYWRkLCBhbmQgcmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGNoZWNrIGZvciBzbWFsbCBsb25ncy4KKyAgVGhhbmtzIE9yZW4gTWlsbWFuIGZvciBhbmFseXNpcyBhbmQgcGF0Y2guCisKKy0gSXNzdWUgIzI3NTA2OiBTdXBwb3J0IHBhc3NpbmcgdGhlIGJ5dGVzL2J5dGVhcnJheS50cmFuc2xhdGUoKSAiZGVsZXRlIgorICBhcmd1bWVudCBieSBrZXl3b3JkLgorCiAtIElzc3VlICMyNzgxMjogUHJvcGVybHkgY2xlYXIgb3V0IGEgZ2VuZXJhdG9yJ3MgZnJhbWUncyBiYWNrcmVmZXJlbmNlIHRvIHRoZQogICBnZW5lcmF0b3IgdG8gcHJldmVudCBjcmFzaGVzIGluIGZyYW1lLmNsZWFyKCkuCiAKQEAgLTI5LDcgKzIwMiwyMSBAQAogICBhZnRlciB1c2Ugb2YgJ2RlZicgaW4gX1B5U3RhdGVfQWRkTW9kdWxlKCkuCiAgIEluaXRpYWwgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KIAotLSBJc3N1ZSAjMjYwMjA6IHNldCBsaXRlcmFsIGV2YWx1YXRpb24gb3JkZXIgZGlkIG5vdCBtYXRjaCBkb2N1bWVudGVkIGJlaGF2aW91ci4KKy0gSXNzdWUgIzI3NzkyOiBUaGUgbW9kdWxvIG9wZXJhdGlvbiBhcHBsaWVkIHRvIGBgYm9vbGBgIGFuZCBvdGhlcgorICBgYGludGBgIHN1YmNsYXNzZXMgbm93IGFsd2F5cyByZXR1cm5zIGFuIGBgaW50YGAuIFByZXZpb3VzbHkKKyAgdGhlIHJldHVybiB0eXBlIGRlcGVuZGVkIG9uIHRoZSBpbnB1dCB2YWx1ZXMuIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNjk4NDogaW50KCkgbm93IGFsd2F5cyByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGV4YWN0IGludC4KKworLSBJc3N1ZSAjMjU2MDQ6IEZpeCBhIG1pbm9yIGJ1ZyBpbiBpbnRlZ2VyIHRydWUgZGl2aXNpb247IHRoaXMgYnVnIGNvdWxkCisgIHBvdGVudGlhbGx5IGhhdmUgY2F1c2VkIG9mZi1ieS1vbmUtdWxwIHJlc3VsdHMgb24gcGxhdGZvcm1zIHdpdGgKKyAgdW5yZWxpYWJsZSBsZGV4cCBpbXBsZW1lbnRhdGlvbnMuCisKKy0gSXNzdWUgIzI0MjU0OiBNYWtlIGNsYXNzIGRlZmluaXRpb24gbmFtZXNwYWNlIG9yZGVyZWQgYnkgZGVmYXVsdC4KKworLSBJc3N1ZSAjMjc2NjI6IEZpeCBhbiBvdmVyZmxvdyBjaGVjayBpbiBgYExpc3RfTmV3YGA6IHRoZSBvcmlnaW5hbCBjb2RlIHdhcworICBjaGVja2luZyBhZ2FpbnN0IGBgUHlfU0laRV9NQVhgYCBpbnN0ZWFkIG9mIHRoZSBjb3JyZWN0IHVwcGVyIGJvdW5kIG9mCisgIGBgUHlfU1NJWkVfVF9NQVhgYC4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCiAKIC0gSXNzdWUgIzI3NzgyOiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGltcG9ydCBub3cgY29ycmVjdGx5IGFsbG93cyB0aGUKICAgYGBtX21ldGhvZHNgYCBmaWVsZCB0byBiZSB1c2VkIHRvIGFkZCBtb2R1bGUgbGV2ZWwgZnVuY3Rpb25zIHRvIGluc3RhbmNlcwpAQCAtNDMsNjMgKzIzMCw4MiBAQAogICBydW5weS5ydW5fbW9kdWxlKCkgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMgYWZ0ZXIgcGFyZW50IHBhY2thZ2VzIGFyZQogICBpbXBvcnRlZCwgYnV0IGJlZm9yZSB0aGUgc3VibW9kdWxlIGlzIGV4ZWN1dGVkLgogCistIElzc3VlICMyNzE1NzogTWFrZSBvbmx5IHR5cGUoKSBpdHNlbGYgYWNjZXB0IHRoZSBvbmUtYXJndW1lbnQgZm9ybS4KKyAgUGF0Y2ggYnkgRXJ5ayBTdW4gYW5kIEVtYW51ZWwgQmFycnkuCisKIC0gSXNzdWUgIzI3NTU4OiBGaXggYSBTeXN0ZW1FcnJvciBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgInJhaXNlIiBzdGF0ZW1lbnQuCiAgIEluIGEgYnJhbmQgbmV3IHRocmVhZCwgcmFpc2UgYSBSdW50aW1lRXJyb3Igc2luY2UgdGhlcmUgaXMgbm8gYWN0aXZlCiAgIGV4Y2VwdGlvbiB0byByZXJhaXNlLiBQYXRjaCB3cml0dGVuIGJ5IFhpYW5nIFpoYW5nLgogCi0tIElzc3VlICMyNzQxOTogU3RhbmRhcmQgX19pbXBvcnRfXygpIG5vIGxvbmdlciBsb29rIHVwICJfX2ltcG9ydF9fIiBpbiBnbG9iYWxzCi0gIG9yIGJ1aWx0aW5zIGZvciBpbXBvcnRpbmcgc3VibW9kdWxlcyBvciAiZnJvbSBpbXBvcnQiLiAgRml4ZWQgaGFuZGxpbmcgYW4KLSAgZXJyb3Igb2Ygbm9uLXN0cmluZyBwYWNrYWdlIG5hbWUuCi0KLS0gSXNzdWUgIzI3MDgzOiBSZXNwZWN0IHRoZSBQWVRIT05DQVNFT0sgZW52aXJvbm1lbnQgdmFyaWFibGUgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMjc1MTQ6IE1ha2UgaGF2aW5nIHRvbyBtYW55IHN0YXRpY2FsbHkgbmVzdGVkIGJsb2NrcyBhIFN5bnRheEVycm9yCi0gIGluc3RlYWQgb2YgU3lzdGVtRXJyb3IuCi0KLS0gSXNzdWUgIzI3NDczOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIGJ5dGVzIGFuZCBieXRlYXJyYXkKLSAgY29uY2F0ZW5hdGlvbnMuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc1MDc6IEFkZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoIGJ5Ci0gIFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzU4MTogRG9uJ3QgcmVseSBvbiB3cmFwcGluZyBmb3Igb3ZlcmZsb3cgY2hlY2sgaW4KLSAgUHlTZXF1ZW5jZV9UdXBsZSgpLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NDQzOiBfX2xlbmd0aF9oaW50X18oKSBvZiBieXRlYXJyYXkgaXRlcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYQotICBuZWdhdGl2ZSBpbnRlZ2VyIGZvciBhIHJlc2l6ZWQgYnl0ZWFycmF5LgorLSBJc3N1ZSAjMjgwMDg6IEltcGxlbWVudCBQRVAgNTMwIC0tIGFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9ucy4KIAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICMyNzkzMjogUHJldmVudCBtZW1vcnkgbGVhayBpbiB3aW4zMl92ZXIoKS4KKy0gSXNzdWUgIzI4MDM3OiBVc2Ugc3FsaXRlM19nZXRfYXV0b2NvbW1pdCgpIGluc3RlYWQgb2Ygc2V0dGluZworICBDb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uIG1hbnVhbGx5LgogCi0tIEZpeCBVbmJvdW5kTG9jYWxFcnJvciBpbiBzb2NrZXQuX3NlbmRmaWxlX3VzZV9zZW5kZmlsZS4KKy0gSXNzdWUgIzI1MjgzOiBBdHRyaWJ1dGVzIHRtX2dtdG9mZiBhbmQgdG1fem9uZSBhcmUgbm93IGF2YWlsYWJsZSBvbgorICBhbGwgcGxhdGZvcm1zIGluIHRoZSByZXR1cm4gdmFsdWVzIG9mIHRpbWUubG9jYWx0aW1lKCkgYW5kCisgIHRpbWUuZ210aW1lKCkuCiAKLS0gSXNzdWUgIzI4MDc1OiBDaGVjayBmb3IgRVJST1JfQUNDRVNTX0RFTklFRCBpbiBXaW5kb3dzIGltcGxlbWVudGF0aW9uIG9mCi0gIG9zLnN0YXQoKS4gIFBhdGNoIGJ5IEVyeWsgU3VuLgorLSBJc3N1ZSAjMjQ0NTQ6IFJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaCBvYmplY3QgZ3JvdXBzIGFyZSBub3cKKyAgYWNjZXNzaWJsZSB1c2luZyBfX2dldGl0ZW1fXy4gICJtb1t4XSIgaXMgZXF1aXZhbGVudCB0bworICAibW8uZ3JvdXAoeCkiLgogCi0tIElzc3VlICMyNTI3MDogUHJldmVudCBjb2RlY3MuZXNjYXBlX2VuY29kZSgpIGZyb20gcmFpc2luZyBTeXN0ZW1FcnJvciB3aGVuCi0gIGFuIGVtcHR5IGJ5dGVzdHJpbmcgaXMgcGFzc2VkLgorLSBJc3N1ZSAjMTA3NDA6IHNxbGl0ZTMgbm8gbG9uZ2VyIGltcGxpY2l0bHkgY29tbWl0IGFuIG9wZW4gdHJhbnNhY3Rpb24KKyAgYmVmb3JlIERETCBzdGF0ZW1lbnRzLgogCi0tIElzc3VlICMyODE4MTogR2V0IGFudGlncmF2aXR5IG92ZXIgSFRUUFMuIFBhdGNoIGJ5IEthYXJ0aWMgU2l2YXJhYW0uCistIElzc3VlICMxNzk0MTogQWRkIGEgKm1vZHVsZSogcGFyYW1ldGVyIHRvIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKS4KIAotLSBJc3N1ZSAjMjU4OTU6IEVuYWJsZSBXZWJTb2NrZXQgVVJMIHNjaGVtZXMgaW4gdXJsbGliLnBhcnNlLnVybGpvaW4uCi0gIFBhdGNoIGJ5IEdlcmdlbHkgSW1yZWggYW5kIE1hcmt1cyBIb2x0ZXJtYW5uLgorLSBJc3N1ZSAjMjI0OTM6IElubGluZSBmbGFncyBub3cgc2hvdWxkIGJlIHVzZWQgb25seSBhdCB0aGUgc3RhcnQgb2YgdGhlCisgIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIERlcHJlY2F0aW9uIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiB1c2VzIHRoZW0gaW4gdGhlCisgIG1pZGRsZSBvZiB0aGUgcmVndWxhciBleHByZXNzaW9uLgogCi0tIElzc3VlICMyNzU5OTogRml4ZWQgYnVmZmVyIG92ZXJydW4gaW4gYmluYXNjaWkuYjJhX3FwKCkgYW5kIGJpbmFzY2lpLmEyYl9xcCgpLgorLSBJc3N1ZSAjMjY4ODU6IHhtbHJwYyBub3cgc3VwcG9ydHMgdW5tYXJzaGFsbGluZyBhZGRpdGlvbmFsIGRhdGEgdHlwZXMgdXNlZAorICBieSBBcGFjaGUgWE1MLVJQQyBpbXBsZW1lbnRhdGlvbiBmb3IgbnVtZXJpY3MgYW5kIE5vbmUuCiAKLS0gSXNzdWUgIzE5MDAzOm0gZW1haWwuZ2VuZXJhdG9yIG5vdyByZXBsYWNlcyBvbmx5IFxyIGFuZC9vciBcbiBsaW5lCi0gIGVuZGluZ3MsIHBlciB0aGUgUkZDLCBpbnN0ZWFkIG9mIGFsbCB1bmljb2RlIGxpbmUgZW5kaW5ncy4KKy0gSXNzdWUgIzI4MDcwOiBGaXhlZCBwYXJzaW5nIGlubGluZSB2ZXJib3NlIGZsYWcgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKworLSBJc3N1ZSAjMTk1MDA6IEFkZCBjbGllbnQtc2lkZSBTU0wgc2Vzc2lvbiByZXN1bXB0aW9uIHRvIHRoZSBzc2wgbW9kdWxlLgorCistIElzc3VlICMyODAyMjogRGVwcmVjYXRlIHNzbC1yZWxhdGVkIGFyZ3VtZW50cyBpbiBmYXZvciBvZiBTU0xDb250ZXh0LiBUaGUKKyAgZGVwcmVjYXRpb24gaW5jbHVkZSBtYW51YWwgY3JlYXRpb24gb2YgU1NMU29ja2V0IGFuZCBjZXJ0ZmlsZS9rZXlmaWxlCisgIChvciBzaW1pbGFyKSBpbiBmdHBsaWIsIGh0dHBsaWIsIGltYXBsaWIsIHNtdHBsaWIsIHBvcGxpYiBhbmQgdXJsbGliLgorCistIElzc3VlICMyODA0MzogU1NMQ29udGV4dCBoYXMgaW1wcm92ZWQgZGVmYXVsdCBzZXR0aW5nczogT1BfTk9fU1NMdjIsCisgIE9QX05PX1NTTHYzLCBPUF9OT19DT01QUkVTU0lPTiwgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLAorICBPUF9TSU5HTEVfREhfVVNFLCBPUF9TSU5HTEVfRUNESF9VU0UgYW5kIEhJR0ggY2lwaGVycyB3aXRob3V0IE1ENS4KKworLSBJc3N1ZSAjMjQ2OTM6IENoYW5nZWQgc29tZSBSdW50aW1lRXJyb3IncyBpbiB0aGUgemlwZmlsZSBtb2R1bGUgdG8gbW9yZQorICBhcHByb3ByaWF0ZSB0eXBlcy4gSW1wcm92ZWQgc29tZSBlcnJvciBtZXNzYWdlcyBhbmQgZGVidWdnaW5nIG91dHB1dC4KKworLSBJc3N1ZSAjMTc5MDk6IGBganNvbi5sb2FkYGAgYW5kIGBganNvbi5sb2Fkc2BgIG5vdyBzdXBwb3J0IGJpbmFyeSBpbnB1dAorICBlbmNvZGVkIGFzIFVURi04LCBVVEYtMTYgb3IgVVRGLTMyLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNzEzNzogdGhlIHB1cmUgUHl0aG9uIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGBgZnVuY3Rvb2xzLnBhcnRpYWxgYAorICBub3cgbWF0Y2hlcyB0aGUgYmVoYXZpb3VyIG9mIGl0cyBhY2NlbGVyYXRlZCBDIGNvdW50ZXJwYXJ0IGZvciBzdWJjbGFzc2luZywKKyAgcGlja2xpbmcgYW5kIHRleHQgcmVwcmVzZW50YXRpb24gcHVycG9zZXMuIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkgYW5kCisgIFNlcmhpeSBTdG9yY2hha2EuCiAKIC0gSXNzdWUgIzI4MDE5OiBpdGVydG9vbHMuY291bnQoKSBubyBsb25nZXIgcm91bmRzIG5vbi1pbnRlZ2VyIHN0ZXAgaW4gcmFuZ2UKICAgYmV0d2VlbiAxLjAgYW5kIDIuMCB0byAxLgogCistIElzc3VlICMxODQwMTogUGRiIG5vdyBzdXBwb3J0cyB0aGUgJ3JlYWRyYycga2V5d29yZCBhcmd1bWVudCB0byBjb250cm9sCisgIHdoZXRoZXIgLnBkYnJjIGZpbGVzIHNob3VsZCBiZSByZWFkLiAgUGF0Y2ggYnkgTWFydGluIE1hdHVzaWFrIGFuZAorICBTYW0gS2ltYnJlbC4KKwogLSBJc3N1ZSAjMjU5Njk6IFVwZGF0ZSB0aGUgbGliMnRvMyBncmFtbWFyIHRvIGhhbmRsZSB0aGUgdW5wYWNraW5nCiAgIGdlbmVyYWxpemF0aW9ucyBhZGRlZCBpbiAzLjUuCiAKIC0gSXNzdWUgIzE0OTc3OiBtYWlsY2FwIG5vdyByZXNwZWN0cyB0aGUgb3JkZXIgb2YgdGhlIGxpbmVzIGluIHRoZSBtYWlsY2FwCiAgIGZpbGVzICgiZmlyc3QgbWF0Y2giKSwgYXMgcmVxdWlyZWQgYnkgUkZDIDE1NDIuICBQYXRjaCBieSBNaWNoYWVsIExhemFyLgogCistIElzc3VlICMyODAyNTogQ29udmVydCBhbGwgc3NsIG1vZHVsZSBjb25zdGFudHMgdG8gSW50RW51bSBhbmQgSW50RmxhZ3MuCisgIFNTTENvbnRleHQgcHJvcGVydGllcyBub3cgcmV0dXJuIGZsYWdzIGFuZCBlbnVtcy4KKworLSBJc3N1ZSAjNDMzMDI4OiBBZGRlZCBzdXBwb3J0IG9mIG1vZGlmaWVyIHNwYW5zIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKIC0gSXNzdWUgIzI0NTk0OiBWYWxpZGF0ZXMgcGVyc2lzdCBwYXJhbWV0ZXIgd2hlbiBvcGVuaW5nIE1TSSBkYXRhYmFzZQogCiAtIElzc3VlICMxNzU4MjogeG1sLmV0cmVlLkVsZW1lbnRUcmVlIG5vd3MgcHJlc2VydmVzIHdoaXRlc3BhY2VzIGluIGF0dHJpYnV0ZXMKQEAgLTEwOCw5ICszMTQsMTkgQEAKIC0gSXNzdWUgIzI4MDQ3OiBGaXhlZCBjYWxjdWxhdGlvbiBvZiBsaW5lIGxlbmd0aCB1c2VkIGZvciB0aGUgYmFzZTY0IENURQogICBpbiB0aGUgbmV3IGVtYWlsIHBvbGljaWVzLgogCistIElzc3VlICMyNzU3NjogRml4IGNhbGwgb3JkZXIgaW4gT3JkZXJlZERpY3QuX19pbml0X18oKS4KKworLSBlbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvciBub3cgc3VwcG9ydHMgdGhlIHBvbGljeSBrZXl3b3JkLgorCistIElzc3VlICMyODAyNzogUmVtb3ZlIHVuZG9jdW1lbnRlZCBtb2R1bGVzIGZyb20gYGBMaWIvcGxhdC0qYGA6IElOLCBDRFJPTSwKKyAgRExGQ04sIFRZUEVTLCBDRElPLCBhbmQgU1RST1BUUy4KKwogLSBJc3N1ZSAjMjc0NDU6IERvbid0IHBhc3Mgc3RyKF9jaGFyc2V0KSB0byBNSU1FVGV4dC5zZXRfcGF5bG9hZCgpLgogICBQYXRjaCBieSBDbGF1ZGUgUGFyb3ouCiAKKy0gSXNzdWUgIzI0Mjc3OiBUaGUgbmV3IGVtYWlsIEFQSSBpcyBubyBsb25nZXIgcHJvdmlzaW9uYWwsIGFuZCB0aGUgZG9jcworICBoYXZlIGJlZW4gcmVvcmdhbml6ZWQgYW5kIHJld3JpdHRlbiB0byBlbXBoYXNpemUgdGhlIG5ldyBBUEkuCisKIC0gSXNzdWUgIzIyNDUwOiB1cmxsaWIgbm93IGluY2x1ZGVzIGFuICJBY2NlcHQ6ICovKiIgaGVhZGVyIGFtb25nIHRoZQogICBkZWZhdWx0IGhlYWRlcnMuICBUaGlzIG1ha2VzIHRoZSByZXN1bHRzIG9mIFJFU1QgQVBJIHJlcXVlc3RzIG1vcmUKICAgY29uc2lzdGVudCBhbmQgcHJlZGljdGFibGUgZXNwZWNpYWxseSB3aGVuIHByb3h5IHNlcnZlcnMgYXJlIGludm9sdmVkLgpAQCAtMTE5LDYgKzMzNSwxMCBAQAogICBiZXR3ZWVuIHJ1bnMgZ2l2ZW4gdGhlIHNhbWUgR3JhbW1hci50eHQgaW5wdXQgcmVnYXJkbGVzcyBvZiB0aGUgaGFzaAogICByYW5kb21pemF0aW9uIHNldHRpbmcuCiAKKy0gSXNzdWUgIzI4MDA1OiBBbGxvdyBJbXBvcnRFcnJvcnMgaW4gZW5jb2RpbmcgaW1wbGVtZW50YXRpb24gdG8gcHJvcGFnYXRlLgorCistIElzc3VlICMyNjY2NzogU3VwcG9ydCBwYXRoLWxpa2Ugb2JqZWN0cyBpbiBpbXBvcnRsaWIudXRpbC4KKwogLSBJc3N1ZSAjMjc1NzA6IEF2b2lkIHplcm8tbGVuZ3RoIG1lbWNweSgpIGV0YyBjYWxscyB3aXRoIG51bGwgc291cmNlCiAgIHBvaW50ZXJzIGluIHRoZSAiY3R5cGVzIiBhbmQgImFycmF5IiBtb2R1bGVzLgogCkBAIC0xMjYsMTkgKzM0Niw3MiBAQAogICBjaGFyYWN0ZXJzLCBub3Qgb24gYXJiaXRyYXJ5IHVuaWNvZGUgbGluZSBicmVha3MuICBUaGlzIGFsc28gZml4ZXMgYSBidWcgaW4KICAgSFRUUCBoZWFkZXIgcGFyc2luZy4KIAorLSBJc3N1ZSAyNzMzMTogVGhlIGVtYWlsLm1pbWUgY2xhc3NlcyBub3cgYWxsIGFjY2VwdCBhbiBvcHRpb25hbCBwb2xpY3kga2V5d29yZC4KKwogLSBJc3N1ZSAyNzk4ODogRml4IGVtYWlsIGl0ZXJfYXR0YWNobWVudHMgaW5jb3JyZWN0IG11dGF0aW9uIG9mIHBheWxvYWQgbGlzdC4KIAorLSBJc3N1ZSAjMTYxMTM6IEFkZCBTSEEtMyBhbmQgU0hBS0Ugc3VwcG9ydCB0byBoYXNobGliIG1vZHVsZS4KKworLSBFbGltaW5hdGUgYSB0YXV0b2xvZ2ljYWwtcG9pbnRlci1jb21wYXJlIHdhcm5pbmcgaW4gX3NjcHJveHkuYy4KKworLSBJc3N1ZSAjMjc3NzY6IFRoZSA6ZnVuYzpgb3MudXJhbmRvbWAgZnVuY3Rpb24gZG9lcyBub3cgYmxvY2sgb24gTGludXggMy4xNworICBhbmQgbmV3ZXIgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZQorICB0aGUgc2VjdXJpdHkuIFRoaXMgY2hhbmdlIGlzIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGAuCisKKy0gSXNzdWUgIzI3Nzc4OiBFeHBvc2UgdGhlIExpbnV4IGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGFzIGEgbmV3CisgIDpmdW5jOmBvcy5nZXRyYW5kb21gIGZ1bmN0aW9uLiBUaGlzIGNoYW5nZSBpcyBwYXJ0IG9mIHRoZSA6cGVwOmA1MjRgLgorCiAtIElzc3VlICMyNzY5MTogRml4IHNzbCBtb2R1bGUncyBwYXJzaW5nIG9mIEdFTl9SSUQgc3ViamVjdCBhbHRlcm5hdGl2ZSBuYW1lCiAgIGZpZWxkcyBpbiBYLjUwOSBjZXJ0cy4KIAorLSBJc3N1ZSAjMTg4NDQ6IEFkZCByYW5kb20uY2hvaWNlcygpLgorCistIElzc3VlICMyNTc2MTogSW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nIGFib3V0IHRydW5jYXRlZCBwaWNrbGUgZGF0YSBpbgorICBDIGltcGxlbWVudGF0aW9uIG9mIHVucGlja2xlci4gIFVucGlja2xpbmdFcnJvciBpcyBub3cgcmFpc2VkIGluc3RlYWQgb2YKKyAgQXR0cmlidXRlRXJyb3IgYW5kIFZhbHVlRXJyb3IgaW4gc29tZSBjYXNlcy4KKworLSBJc3N1ZSAjMjY3OTg6IEFkZCBCTEFLRTIgKGJsYWtlMmIgYW5kIGJsYWtlMnMpIHRvIGhhc2hsaWIuCisKKy0gSXNzdWUgIzI2MDMyOiBPcHRpbWl6ZWQgZ2xvYmJpbmcgaW4gcGF0aGxpYiBieSB1c2luZyBvcy5zY2FuZGlyKCk7IGl0IGlzIG5vdworICBhYm91dCAxLjUtLTQgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNTU5NjogT3B0aW1pemVkIGdsb2IoKSBhbmQgaWdsb2IoKSBmdW5jdGlvbnMgaW4gdGhlCisgIGdsb2IgbW9kdWxlOyB0aGV5IGFyZSBub3cgYWJvdXQgMy0tNiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI3OTI4OiBBZGQgc2NyeXB0IChwYXNzd29yZC1iYXNlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbikgdG8KKyAgaGFzaGxpYiBtb2R1bGUgKHJlcXVpcmVzIE9wZW5TU0wgMS4xLjApLgorCiAtIElzc3VlICMyNzg1MDogUmVtb3ZlIDNERVMgZnJvbSBzc2wgbW9kdWxlJ3MgZGVmYXVsdCBjaXBoZXIgbGlzdCB0byBjb3VudGVyCiAgIG1lYXN1cmUgc3dlZXQzMiBhdHRhY2sgKENWRS0yMDE2LTIxODMpLgogCiAtIElzc3VlICMyNzc2NjogQWRkIENoYUNoYTIwIFBvbHkxMzA1IHRvIHNzbCBtb2R1bGUncyBkZWZhdWx0IGNpcGVyIGxpc3QuCiAgIChSZXF1aXJlZCBPcGVuU1NMIDEuMS4wIG9yIExpYnJlU1NMKS4KIAorLSBJc3N1ZSAjMjUzODc6IENoZWNrIHJldHVybiB2YWx1ZSBvZiB3aW5zb3VuZC5NZXNzYWdlQmVlcC4KKworLSBJc3N1ZSAjMjc4NjY6IEFkZCBTU0xDb250ZXh0LmdldF9jaXBoZXJzKCkgbWV0aG9kIHRvIGdldCBhIGxpc3Qgb2YgYWxsCisgIGVuYWJsZWQgY2lwaGVycy4KKworLSBJc3N1ZSAjMjc3NDQ6IEFkZCBBRl9BTEcgKExpbnV4IEtlcm5lbCBjcnlwdG8pIHRvIHNvY2tldCBtb2R1bGUuCisKIC0gSXNzdWUgIzI2NDcwOiBQb3J0IHNzbCBhbmQgaGFzaGxpYiBtb2R1bGUgdG8gT3BlblNTTCAxLjEuMC4KIAorLSBJc3N1ZSAjMTE2MjA6IEZpeCBzdXBwb3J0IGZvciBTTkRfTUVNT1JZIGluIHdpbnNvdW5kLlBsYXlTb3VuZC4gIEJhc2VkIG9uIGEKKyAgcGF0Y2ggYnkgVGltIExlc2hlci4KKworLSBJc3N1ZSAjMTE3MzQ6IEFkZCBzdXBwb3J0IGZvciBJRUVFIDc1NCBoYWxmLXByZWNpc2lvbiBmbG9hdHMgdG8gdGhlCisgIHN0cnVjdCBtb2R1bGUuIEJhc2VkIG9uIGEgcGF0Y2ggYnkgRWxpIFN0ZXZlbnMuCisKKy0gSXNzdWUgIzI3OTE5OiBEZXByZWNhdGVkIGBgZXh0cmFfcGF0aGBgIGRpc3RyaWJ1dGlvbiBvcHRpb24gaW4gZGlzdHV0aWxzCisgIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjMjMyMjk6IEFkZCBuZXcgYGBjbWF0aGBgIGNvbnN0YW50czogYGBjbWF0aC5pbmZgYCBhbmQgYGBjbWF0aC5uYW5gYCB0bworICBtYXRjaCBgYG1hdGguaW5mYGAgYW5kIGBgbWF0aC5uYW5gYCwgYW5kIGFsc28gYGBjbWF0aC5pbmZqYGAgYW5kCisgIGBgY21hdGgubmFuamBgIHRvIG1hdGNoIHRoZSBmb3JtYXQgdXNlZCBieSBjb21wbGV4IHJlcHIuCisKKy0gSXNzdWUgIzI3ODQyOiBUaGUgY3N2LkRpY3RSZWFkZXIgbm93IHJldHVybnMgcm93cyBvZiB0eXBlIE9yZGVyZWREaWN0LgorICAoQ29udHJpYnV0ZWQgYnkgU3RldmUgSG9sZGVuLikKKwogLSBSZW1vdmUgc3VwcG9ydCBmb3IgcGFzc2luZyBhIGZpbGUgZGVzY3JpcHRvciB0byBvcy5hY2Nlc3MuIEl0IG5ldmVyIHdvcmtlZCBidXQKICAgcHJldmlvdXNseSBkaWRuJ3QgcmFpc2UuCiAKQEAgLTE2MCwyNSArNDMzLDI3NiBAQAogLSBJc3N1ZSAjMTA1MTM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gQ29ubmVjdGlvbi5jb21taXQoKS4gIFN0YXRlbWVudHMgc2hvdWxkCiAgIG5vdCBiZSByZXNldCBhZnRlciBhIGNvbW1pdC4KIAorLSBJc3N1ZSAjMTIzMTk6IENodW5rZWQgdHJhbnNmZXIgZW5jb2Rpbmcgc3VwcG9ydCBhZGRlZCB0bworICBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiByZXF1ZXN0cy4gIFRoZQorICB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyIGNsYXNzIGRvZXMgbm90IGVuZm9yY2UgYSBDb250ZW50LUxlbmd0aAorICBoZWFkZXIgYW55IG1vcmUuICBJZiBhIEhUVFAgcmVxdWVzdCBoYXMgYSBmaWxlIG9yIGl0ZXJhYmxlIGJvZHksIGJ1dCBubworICBDb250ZW50LUxlbmd0aCBoZWFkZXIsIHRoZSBsaWJyYXJ5IG5vdyBmYWxscyBiYWNrIHRvIHVzZSBjaHVua2VkIHRyYW5zZmVyLQorICBlbmNvZGluZy4KKwogLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nOgogICAtIENvbGxlY3Rpb24gKG9ubHkgZm9yIDMuNikgKElzc3VlICMyNzU5OCkKICAgLSBBZGQgRnJvemVuU2V0IHRvIF9fYWxsX18gKHVwc3RyZWFtICMyNjEpCiAgIC0gZml4IGNyYXNoIGluIF9nZXRfdHlwZV92YXJzKCkgKHVwc3RyZWFtICMyNTkpCiAgIC0gUmVtb3ZlIHRoZSBkaWN0IGNvbnN0cmFpbnQgaW4gRm9yd2FyZFJlZi5fZXZhbF90eXBlICh1cHN0cmVhbSAjMjUyKQogCistIElzc3VlICMyNzgzMjogTWFrZSBgYF9ub3JtYWxpemVgYCBwYXJhbWV0ZXIgdG8gYGBGcmFjdGlvbmBgIGNvbnN0dWN0b3IKKyAga2V5d29yZC1vbmx5LCBzbyB0aGF0IGBgRnJhY3Rpb24oMiwgMywgNClgYCBub3cgcmFpc2VzIGBgVHlwZUVycm9yYGAuCisKIC0gSXNzdWUgIzI3NTM5OiBGaXggdW5ub3JtYWxpc2VkIGBgRnJhY3Rpb24uX19wb3dfX2BgIHJlc3VsdCBpbiB0aGUgY2FzZQogICBvZiBuZWdhdGl2ZSBleHBvbmVudCBhbmQgbmVnYXRpdmUgYmFzZS4KIAogLSBJc3N1ZSAjMjE3MTg6IGN1cnNvci5kZXNjcmlwdGlvbiBpcyBub3cgYXZhaWxhYmxlIGZvciBxdWVyaWVzIHVzaW5nIENURXMuCiAKKy0gSXNzdWUgIzI3ODE5OiBJbiBkaXN0dXRpbHMgc2Rpc3RzLCBzaW1wbHkgcHJvZHVjZSB0aGUgImd6dGFyIiAoZ3ppcHBlZCB0YXIKKyAgZm9ybWF0KSBkaXN0cmlidXRpb25zIG9uIGFsbCBwbGF0Zm9ybXMgdW5sZXNzICJmb3JtYXRzIiBpcyBzdXBwbGllZC4KKwogLSBJc3N1ZSAjMjQ2NjogcG9zaXhwYXRoLmlzbW91bnQgbm93IGNvcnJlY3RseSByZWNvZ25pemVzIG1vdW50IHBvaW50cyB3aGljaAogICB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzLgogCistIElzc3VlICM5OTk4OiBPbiBMaW51eCwgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IG5vdyBsb29rcyBpbiBMRF9MSUJSQVJZX1BBVEgKKyAgZm9yIHNoYXJlZCBsaWJyYXJpZXMuCisKKy0gSXNzdWUgIzI3NTczOiBleGl0IG1lc3NhZ2UgZm9yIGNvZGUuaW50ZXJhY3QgaXMgbm93IGNvbmZpZ3VyYWJsZS4KKworLSBJc3N1ZSAjMjc5MzA6IEltcHJvdmVkIGJlaGF2aW91ciBvZiBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIuCisgIFRoYW5rcyB0byBQYXVsbyBBbmRyYWRlIGFuZCBQZXRyIFZpa3RvcmluIGZvciB0aGUgYW5hbHlzaXMgYW5kIHBhdGNoLgorCistIElzc3VlICM2NzY2OiBEaXN0cmlidXRlZCByZWZlcmVuY2UgY291bnRpbmcgYWRkZWQgdG8gbXVsdGlwcm9jZXNzaW5nCisgIHRvIHN1cHBvcnQgbmVzdGluZyBvZiBzaGFyZWQgdmFsdWVzIC8gcHJveHkgb2JqZWN0cy4KKworLSBJc3N1ZSAjMjEyMDE6IEltcHJvdmVzIHJlYWRhYmlsaXR5IG9mIG11bHRpcHJvY2Vzc2luZyBlcnJvciBtZXNzYWdlLiAgVGhhbmtzCisgIHRvIFdvamNpZWNoIFdhbGN6YWsgZm9yIHBhdGNoLgorCistIGFzeW5jaW86IEFkZCBzZXRfcHJvdG9jb2wgLyBnZXRfcHJvdG9jb2wgdG8gVHJhbnNwb3J0cy4KKworLSBJc3N1ZSAjMjc0NTY6IGFzeW5jaW86IFNldCBUQ1BfTk9ERUxBWSBieSBkZWZhdWx0LgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzE1MzA4OiBBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4KKyAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQgYnkgQmF5YXJkIFJhbmRlbC4KKworLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KKworLSBJc3N1ZSAjMjc4OTE6IENvbnNpc3RlbnRseSBncm91cCBhbmQgc29ydCBpbXBvcnRzIHdpdGhpbiBpZGxlbGliIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE3NjQyOiBhZGQgbGFyZ2VyIGZvbnQgc2l6ZXMgZm9yIGNsYXNzcm9vbSBwcm9qZWN0aW9uLgorCistIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCisKKy0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0CisgIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCisKKy0gSXNzdWUgIzI3ODIxOiBGaXggMy42LjBhMyByZWdyZXNzaW9uIHRoYXQgcHJldmVudGVkIGN1c3RvbSBrZXkgc2V0cworICBmcm9tIGJlaW5nIHNlbGVjdGVkIHdoZW4gbm8gY3VzdG9tIHRoZW1lIHdhcyBkZWZpbmVkLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjY5MDA6IEV4Y2x1ZGVkIHVuZGVyc2NvcmVkIG5hbWVzIGFuZCBvdGhlciBwcml2YXRlIEFQSSBmcm9tIGxpbWl0ZWQgQVBJLgorCistIElzc3VlICMyNjAyNzogQWRkIHN1cHBvcnQgZm9yIHBhdGgtbGlrZSBvYmplY3RzIGluIFB5VW5pY29kZV9GU0NvbnZlcnRlcigpICYKKyAgUHlVbmljb2RlX0ZTRGVjb2RlcigpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjc0Mjc6IEFkZGl0aW9uYWwgdGVzdHMgZm9yIHRoZSBtYXRoIG1vZHVsZS4gUGF0Y2ggYnkgRnJhbmNpc2NvIENvdXpvLgorCistIElzc3VlICMyNzk1MzogU2tpcCBtYXRoIGFuZCBjbWF0aCB0ZXN0cyB0aGF0IGZhaWwgb24gT1MgWCAxMC40IGR1ZSB0byBhCisgIHBvb3IgbGlibSBpbXBsZW1lbnRhdGlvbiBvZiB0YW4uCisKKy0gSXNzdWUgIzI2MDQwOiBJbXByb3ZlIHRlc3RfbWF0aCBhbmQgdGVzdF9jbWF0aCBjb3ZlcmFnZSBhbmQgcmlnb3VyLiBQYXRjaCBieQorICBKZWZmIEFsbGVuLgorCistIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCisgIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc1NjY6IEZpeCBjbGVhbiB0YXJnZXQgaW4gZnJlZXplIG1ha2VmaWxlIChwYXRjaCBieSBMaXNhIFJvYWNoKQorCistIElzc3VlICMyNzcwNTogVXBkYXRlIG1lc3NhZ2UgaW4gdmFsaWRhdGVfdWNydGJhc2UucHkKKworLSBJc3N1ZSAjMjc5NzY6IERlcHJlY2F0ZSBidWlsZGluZyBfY3R5cGVzIHdpdGggdGhlIGJ1bmRsZWQgY29weSBvZiBsaWJmZmkgb24KKyAgbm9uLU9TWCBVTklYIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMjc5ODM6IENhdXNlIGxhY2sgb2YgbGx2bS1wcm9mZGF0YSB0b29sIHdoZW4gdXNpbmcgY2xhbmcgYXMKKyAgcmVxdWlyZWQgZm9yIFBHTyBsaW5raW5nIHRvIGJlIGEgY29uZmlndXJlIHRpbWUgZXJyb3IgcmF0aGVyIHRoYW4KKyAgbWFrZSB0aW1lIHdoZW4gLS13aXRoLW9wdGltaXphdGlvbnMgaXMgZW5hYmxlZC4gIEFsc28gaW1wcm92ZSBvdXIKKyAgYWJpbGl0eSB0byBmaW5kIHRoZSBsbHZtLXByb2ZkYXRhIHRvb2wgb24gTWFjT1MgYW5kIHNvbWUgTGludXhlcy4KKworLSBJc3N1ZSAjMjE1OTA6IFN1cHBvcnQgZm9yIERUcmFjZSBhbmQgU3lzdGVtVGFwIHByb2Jlcy4KKworLSBJc3N1ZSAjMjYzMDc6IFRoZSBwcm9maWxlLW9wdCBidWlsZCBub3cgYXBwbHlzIFBHTyB0byB0aGUgYnVpbHQtaW4gbW9kdWxlcy4KKworLSBJc3N1ZSAjMjY1Mzk6IEFkZCB0aGUgLS13aXRoLW9wdGltaXphdGlvbnMgZmxhZyB0byB0dXJuIG9uIExUTyBhbmQgUEdPIGJ1aWxkCisgIHN1cHBvcnQgd2hlbiBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzI3OTE3OiBTZXQgcGxhdGZvcm0gdHJpcGxldHMgZm9yIEFuZHJvaWQgYnVpbGRzLgorCistIElzc3VlICMyNTgyNTogVXBkYXRlIHJlZmVyZW5jZXMgdG8gdGhlICQoTElCUEwpIGluc3RhbGxhdGlvbiBwYXRoIG9uIEFJWC4KKyAgVGhpcyBwYXRoIHdhcyBjaGFuZ2VkIGluIDMuMmE0LgorCistIFVwZGF0ZSBPUyBYIGluc3RhbGxlciB0byB1c2UgU1FMaXRlIDMuMTQuMSBhbmQgWFogNS4yLjIuCisKKy0gSXNzdWUgIzIxMTIyOiBGaXggTFRPIGJ1aWxkcyBvbiBPUyBYLgorCistIElzc3VlICMxNzEyODogQnVpbGQgT1MgWCBpbnN0YWxsZXIgd2l0aCBhIHByaXZhdGUgY29weSBvZiBPcGVuU1NMLgorICBBbHNvIHByb3ZpZGUgYSBzYW1wbGUgSW5zdGFsbCBDZXJ0aWZpY2F0ZXMgY29tbWFuZCBzY3JpcHQgdG8gaW5zdGFsbCBhCisgIHNldCBvZiByb290IGNlcnRpZmljYXRlcyBmcm9tIHRoZSB0aGlyZC1wYXJ0eSBjZXJ0aWZpIG1vZHVsZS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI3OTUyOiBHZXQgVG9vbHMvc2NyaXB0cy9maXhjaWQucHkgd29ya2luZyB3aXRoIFB5dGhvbiAzIGFuZCB0aGUKKyAgY3VycmVudCAicmUiIG1vZHVsZSwgYXZvaWQgaW52YWxpZCBQeXRob24gYmFja3NsYXNoIGVzY2FwZXMsIGFuZCBmaXggYSBidWcKKyAgcGFyc2luZyBlc2NhcGVkIEMgcXVvdGUgc2lnbnMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjgwNjU6IFVwZGF0ZSB4eiBkZXBlbmRlbmN5IHRvIDUuMi4yIGFuZCBidWlsZCBpdCBmcm9tIHNvdXJjZS4KKworLSBJc3N1ZSAjMjUxNDQ6IEVuc3VyZXMgVGFyZ2V0RGlyIGlzIHNldCBiZWZvcmUgY29udGludWluZyB3aXRoIGN1c3RvbQorICBpbnN0YWxsLgorCistIElzc3VlICMxNjAyOiBXaW5kb3dzIGNvbnNvbGUgZG9lc24ndCBpbnB1dCBvciBwcmludCBVbmljb2RlIChQRVAgNTI4KQorCistIElzc3VlICMyNzc4MTogQ2hhbmdlIGZpbGUgc3lzdGVtIGVuY29kaW5nIG9uIFdpbmRvd3MgdG8gVVRGLTggKFBFUCA1MjkpCisKKy0gSXNzdWUgIzI3NzMxOiBPcHQtb3V0IG9mIE1BWF9QQVRIIG9uIFdpbmRvd3MgMTAKKworLSBJc3N1ZSAjNjEzNTogQWRkcyBlbmNvZGluZyBhbmQgZXJyb3JzIHBhcmFtZXRlcnMgdG8gc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMjc5NTk6IEFkZHMgb2VtIGVuY29kaW5nLCBhbGlhcyBhbnNpIHRvIG1iY3MsIG1vdmUgYWxpYXNtYmNzIHRvCisgIGNvZGVjIGxvb2t1cC4KKworLSBJc3N1ZSAjMjc5ODI6IFRoZSBmdW5jdGlvbnMgb2YgdGhlIHdpbnNvdW5kIG1vZHVsZSBub3cgYWNjZXB0IGtleXdvcmQKKyAgYXJndW1lbnRzLgorCistIElzc3VlICMyMDM2NjogQnVpbGQgZnVsbCB0ZXh0IHNlYXJjaCBzdXBwb3J0IGludG8gU1FMaXRlIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI3NzU2OiBBZGRzIG5ldyBpY29ucyBmb3IgUHl0aG9uIGZpbGVzIGFuZCBwcm9jZXNzZXMgb24gV2luZG93cy4KKyAgRGVzaWducyBieSBDaGVycnkgV2FuZy4KKworLSBJc3N1ZSAjMjc4ODM6IFVwZGF0ZSBzcWxpdGUgdG8gMy4xNC4xLjAgb24gV2luZG93cy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSA0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDgtMTUqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNzcwNDogT3B0aW1pemVkIGNyZWF0aW5nIGJ5dGVzIGFuZCBieXRlYXJyYXkgZnJvbSBieXRlLWxpa2Ugb2JqZWN0cworICBhbmQgaXRlcmFibGVzLiAgU3BlZWQgdXAgdG8gMyB0aW1lcyBmb3Igc2hvcnQgb2JqZWN0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIE5hb2tpIEluYWRhLgorCistIElzc3VlICMyNjgyMzogTGFyZ2Ugc2VjdGlvbnMgb2YgcmVwZWF0ZWQgbGluZXMgaW4gdHJhY2ViYWNrcyBhcmUgbm93CisgIGFiYnJldmlhdGVkIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiBieSB0aGUgYnVpbHRpbgorICB0cmFjZWJhY2sgcmVuZGVyaW5nLiBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzU3NDogRGVjcmVhc2VkIGFuIG92ZXJoZWFkIG9mIHBhcnNpbmcga2V5d29yZCBhcmd1bWVudHMgaW4gZnVuY3Rpb25zCisgIGltcGxlbWVudGVkIHdpdGggdXNpbmcgQXJndW1lbnQgQ2xpbmljLgorCistIElzc3VlICMyMjU1NzogTm93IGltcG9ydGluZyBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZXMgaXMgdXAgdG8gMi41IHRpbWVzCisgIGZhc3Rlci4KKworLSBJc3N1ZSAjMTc1OTY6IEluY2x1ZGUgPHdpbmNyeXB0Lmg+IHRvIGhlbHAgd2l0aCBNaW4gR1cgYnVpbGRpbmcuCisKKy0gSXNzdWUgIzE3NTk5OiBPbiBXaW5kb3dzLCByZW5hbWUgdGhlIHByaXZhdGVseSBkZWZpbmVkIFJFUEFSU0VfREFUQV9CVUZGRVIKKyAgc3RydWN0dXJlIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggdGhlIGRlZmluaXRpb24gZnJvbSBNaW4gR1cuCisKKy0gSXNzdWUgIzI3NTA3OiBBZGQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaCBieQorICBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc1ODE6IERvbid0IHJlbHkgb24gd3JhcHBpbmcgZm9yIG92ZXJmbG93IGNoZWNrIGluCisgIFB5U2VxdWVuY2VfVHVwbGUoKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMxNjIxOiBBdm9pZCBzaWduZWQgaW50ZWdlciBvdmVyZmxvdyBpbiBsaXN0IGFuZCB0dXBsZSBvcGVyYXRpb25zLgorICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc0MTk6IFN0YW5kYXJkIF9faW1wb3J0X18oKSBubyBsb25nZXIgbG9vayB1cCAiX19pbXBvcnRfXyIgaW4gZ2xvYmFscworICBvciBidWlsdGlucyBmb3IgaW1wb3J0aW5nIHN1Ym1vZHVsZXMgb3IgImZyb20gaW1wb3J0Ii4gIEZpeGVkIGEgY3Jhc2ggaWYKKyAgcmFpc2UgYSB3YXJuaW5nIGFib3V0IHVuYWJsaW5nIHRvIHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yCisgIF9fcGFja2FnZV9fLgorCistIElzc3VlICMyNzA4MzogUmVzcGVjdCB0aGUgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI3NTE0OiBNYWtlIGhhdmluZyB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MgYSBTeW50YXhFcnJvcgorICBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yLgorCistIElzc3VlICMyNzM2NjogSW1wbGVtZW50ZWQgUEVQIDQ4NyAoU2ltcGxlciBjdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uKS4KKyAgVXBvbiBzdWJjbGFzc2luZywgdGhlIF9faW5pdF9zdWJjbGFzc19fIGNsYXNzbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgYmFzZQorICBjbGFzcy4gRGVzY3JpcHRvcnMgYXJlIGluaXRpYWxpemVkIHdpdGggX19zZXRfbmFtZV9fIGFmdGVyIGNsYXNzIGNyZWF0aW9uLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI2MDI3LCAjMjc1MjQ6IEFkZCBQRVAgNTE5L19fZnNwYXRoX18oKSBzdXBwb3J0IHRvIHRoZSBvcyBhbmQgb3MucGF0aAorICBtb2R1bGVzLiBJbmNsdWRlcyBjb2RlIGZyb20gSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI3NTk4OiBBZGQgQ29sbGVjdGlvbnMgdG8gY29sbGVjdGlvbnMuYWJjLgorICBQYXRjaCBieSBJdmFuIExldmtpdnNreWksIGRvY3MgYnkgTmVpbCBHaXJkaGFyLgorCistIElzc3VlICMyNTk1ODogU3VwcG9ydCAiYW50aS1yZWdpc3RyYXRpb24iIG9mIHNwZWNpYWwgbWV0aG9kcyBmcm9tCisgIHZhcmlvdXMgQUJDcywgbGlrZSBfX2hhc2hfXywgX19pdGVyX18gb3IgX19sZW5fXy4gIEFsbCB0aGVzZSAoYW5kCisgIHNldmVyYWwgbW9yZSkgY2FuIGJlIHNldCB0byBOb25lIGluIGFuIGltcGxlbWVudGF0aW9uIGNsYXNzIGFuZCB0aGUKKyAgYmVoYXZpb3Igd2lsbCBiZSBhcyBpZiB0aGUgbWV0aG9kIGlzIG5vdCBkZWZpbmVkIGF0IGFsbC4KKyAgKFByZXZpb3VzbHksIHRoaXMgbWVjaGFuaXNtIGV4aXN0ZWQgb25seSBmb3IgX19oYXNoX18sIHRvIG1ha2UKKyAgbXV0YWJsZSBjbGFzc2VzIHVuaGFzaGFibGUuKSAgQ29kZSBjb250cmlidXRlZCBieSBBbmRyZXcgQmFybmVydCBhbmQKKyAgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMxNjc2NDogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyB0byB6bGliLmRlY29tcHJlc3MoKS4gIFBhdGNoIGJ5CisgIFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzczNjogUHJldmVudCBzZWdmYXVsdCBhZnRlciBpbnRlcnByZXRlciByZS1pbml0aWFsaXphdGlvbiBkdWUKKyAgdG8gcmVmIGNvdW50IHByb2JsZW0gaW50cm9kdWNlZCBpbiBjb2RlIGZvciBJc3N1ZSAjMjcwMzggaW4gMy42LjBhMy4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI1NjI4OiAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBmb3IKKyAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSBhcmUgbm93IGtleXdvcmQtb25seS4KKworLSBJc3N1ZSAjMTIzNDU6IEFkZCBtYXRoZW1hdGljYWwgY29uc3RhbnQgdGF1IHRvIG1hdGggYW5kIGNtYXRoLiBTZWUgYWxzbworICBQRVAgNjI4LgorCistIElzc3VlICMyNjgyMzogdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mb3JtYXQgbm93IGFiYnJldmlhdGVzIGxhcmdlIHNlY3Rpb25zIG9mCisgIHJlcGVhdGVkIGxpbmVzIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiAodGhpcyBjaGFuZ2UKKyAgdGhlbiBmdXJ0aGVyIGFmZmVjdHMgb3RoZXIgdHJhY2ViYWNrIGRpc3BsYXkgb3BlcmF0aW9ucyBpbiB0aGUgbW9kdWxlKS4gUGF0Y2gKKyAgYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjc2NjQ6IEFkZCB0byBjb25jdXJyZW50LmZ1dHVyZXMudGhyZWFkLlRocmVhZFBvb2xFeGVjdXRvcigpCisgIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSB0aHJlYWQgbmFtZSBwcmVmaXguCisKKy0gSXNzdWUgIzI3MTgxOiBBZGQgZ2VvbWV0cmljX21lYW4gYW5kIGhhcm1vbmljX21lYW4gdG8gc3RhdGlzdGljcyBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NTczOiBjb2RlLmludGVyYWN0IG5vdyBwcmludHMgYW4gbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKKy0gSXNzdWUgIzY0MjI6IEFkZCBhdXRvcmFuZ2UgbWV0aG9kIHRvIHRpbWVpdC5UaW1lciBvYmplY3RzLgorCiAtIElzc3VlICMyNzc3MzogQ29ycmVjdCBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGVycm9ycyBzZXJ2ZXJfaG9zdG5hbWUgaW4KICAgX3NzbC53cmFwX3NvY2tldCgpLgogCiAtIElzc3VlICMyNjc1MDogdW5pdHRlc3QubW9jay5jcmVhdGVfYXV0b3NwZWMoKSBub3cgd29ya3MgcHJvcGVybHkgZm9yCi0gIHN1YmNsYXNzZXMgb2YgcHJvcGVydHkoKSBhbmQgb3RoZXIgZGF0YSBkZXNjcmlwdG9ycy4KKyAgc3ViY2xhc3NlcyBvZiBwcm9wZXJ0eSgpIGFuZCBvdGhlciBkYXRhIGRlc2NyaXB0b3JzLiAgUmVtb3ZlcyB0aGUgbmV2ZXIKKyAgcHVibGljbHkgdXNlZCwgbmV2ZXIgZG9jdW1lbnRlZCB1bml0dGVzdC5tb2NrLkRlc2NyaXB0b3JUeXBlcyB0dXBsZS4KKworLSBJc3N1ZSAjMjY3NTQ6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGggaW4gY29tcGlsZSgpIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY4MDA6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGhzIGluIG9zIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY5ODE6IEFkZCBfb3JkZXJfIGNvbXBhdGliaWxpdHkgc2hpbSB0byBlbnVtLkVudW0gZm9yCisgIFB5dGhvbiAyLzMgY29kZSBiYXNlcy4KKworLSBJc3N1ZSAjMjc2NjE6IEFkZGVkIHR6aW5mbyBrZXl3b3JkIGFyZ3VtZW50IHRvIGRhdGV0aW1lLmNvbWJpbmUuCiAKIC0gSW4gdGhlIGN1cnNlcyBtb2R1bGUsIHJhaXNlIGFuIGVycm9yIGlmIHdpbmRvdy5nZXRzdHIoKSBvciB3aW5kb3cuaW5zdHIoKSBpcwogICBwYXNzZWQgYSBuZWdhdGl2ZSB2YWx1ZS4KQEAgLTE5Nyw2ICs3MjEsOSBAQAogICBIVFRQX1BST1hZIHZhcmlhYmxlIHdoZW4gUkVRVUVTVF9NRVRIT0QgZW52aXJvbm1lbnQgaXMgc2V0LCB3aGljaCBpbmRpY2F0ZXMKICAgdGhhdCB0aGUgc2NyaXB0IGlzIGluIENHSSBtb2RlLgogCistIElzc3VlICM3MDYzOiBSZW1vdmUgZGVhZCBjb2RlIGZyb20gdGhlICJhcnJheSIgbW9kdWxlJ3Mgc2xpY2UgaGFuZGxpbmcuCisgIFBhdGNoIGJ5IENodWNrLgorCiAtIElzc3VlICMyNzY1NjogRG8gbm90IGFzc3VtZSBzY2hlZC5oIGRlZmluZXMgYW55IFNDSEVEXyogY29uc3RhbnRzLgogCiAtIElzc3VlICMyNzEzMDogSW4gdGhlICJ6bGliIiBtb2R1bGUsIGZpeCBoYW5kbGluZyBvZiBsYXJnZSBidWZmZXJzCkBAIC0yMDQsNiArNzMxLDE1IEBACiAgIHdlcmUgbGltaXRlZCB0byA0IEdpQiwgYW5kIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIG9wZXJhdGlvbnMgZGlkIG5vdAogICBwcm9wZXJseSBoYW5kbGUgcmVzdWx0cyBvZiA0IEdpQi4KIAorLSBJc3N1ZSAjMjQ3NzM6IEltcGxlbWVudGVkIFBFUCA0OTUgKExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24pLgorCistIEV4cG9zZSB0aGUgRVBPTExFWENMVVNJVkUgY29uc3RhbnQgKHdoZW4gaXQgaXMgZGVmaW5lZCkgaW4gdGhlIHNlbGVjdCBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NTY3OiBFeHBvc2UgdGhlIEVQT0xMUkRIVVAgYW5kIFBPTExSREhVUCBjb25zdGFudHMgaW4gdGhlIHNlbGVjdAorICBtb2R1bGUuCisKKy0gSXNzdWUgIzE2MjE6IEF2b2lkIHNpZ25lZCBpbnQgbmVnYXRpb24gb3ZlcmZsb3cgaW4gdGhlICJhdWRpb29wIiBtb2R1bGUuCisKIC0gSXNzdWUgIzI3NTMzOiBSZWxlYXNlIEdJTCBpbiBudC5faXNkaXIKIAogLSBJc3N1ZSAjMTc3MTE6IEZpeGVkIHVucGlja2xpbmcgYnkgdGhlIHBlcnNpc3RlbnQgSUQgd2l0aCBwcm90b2NvbCAwLgpAQCAtMjExLDYgKzc0NywxMTIgQEAKIAogLSBJc3N1ZSAjMjc1MjI6IEF2b2lkIGFuIHVuaW50ZW50aW9uYWwgcmVmZXJlbmNlIGN5Y2xlIGluIGVtYWlsLmZlZWRwYXJzZXIuCiAKKy0gSXNzdWUgIzI3NTEyOiBGaXggYSBzZWdmYXVsdCB3aGVuIG9zLmZzcGF0aCgpIGNhbGxlZCBhbiBfX2ZzcGF0aF9fKCkgbWV0aG9kCisgIHRoYXQgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCisgIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQorICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KKworLSBJc3N1ZSAjMjc2MjE6IFB1dCBxdWVyeSByZXNwb25zZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBxdWVyeQorICBib3ggaXRzZWxmIGluc3RlYWQgb2YgaW4gYSBzZXBhcmF0ZSBtYXNzYWdlYm94LiAgUmVkbyB0ZXN0cyB0byBtYXRjaC4KKyAgQWRkIE1hYyBPU1ggcmVmaW5lbWVudHMuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI3NjIwOiBFc2NhcGUga2V5IG5vdyBjbG9zZXMgUXVlcnkgYm94IGFzIGNhbmNlbGxlZC4KKworLSBJc3N1ZSAjMjc2MDk6IElETEU6IHRhYiBhZnRlciBpbml0aWFsIHdoaXRlc3BhY2Ugc2hvdWxkIHRhYiwgbm90CisgIGF1dG9jb21wbGV0ZS4gVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggd3JpdGluZyBkb2NzdHJpbmdzIGF0IGxlYXN0CisgIHR3aWNlIGluZGVudGVkLgorCistIElzc3VlICMyNzYwOTogRXhwbGljaXRseSByZXR1cm4gTm9uZSB3aGVuIHRoZXJlIGFyZSBhbHNvIG5vbi1Ob25lCisgIHJldHVybnMuIEluIGEgZmV3IGNhc2VzLCByZXZlcnNlIGEgY29uZGl0aW9uIGFuZCBlbGltaW5hdGUgYSByZXR1cm4uCisKKy0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgorICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgorCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCistIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNTgwNTogU2tpcCBhIHRlc3QgaW4gdGVzdF9wa2d1dGlsIGFzIG5lZWRlZCB0aGF0IGRvZXNuJ3Qgd29yayB3aGVuCisgIGBgX19uYW1lX18gPT0gX19tYWluX19gYC4gUGF0Y2ggYnkgU2lsZW50R2hvc3QuCisKKy0gSXNzdWUgIzI3NDcyOiBBZGQgdGVzdC5zdXBwb3J0LnVuaXhfc2hlbGwgYXMgdGhlIHBhdGggdG8gdGhlIGRlZmF1bHQgc2hlbGwuCisKKy0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAorICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgorCistIElzc3VlICMyNzU5NDogUHJldmVudCBhc3NlcnRpb24gZXJyb3Igd2hlbiBydW5uaW5nIHRlc3RfYXN0IHdpdGggY292ZXJhZ2UKKyAgZW5hYmxlZDogZW5zdXJlIGNvZGUgb2JqZWN0IGhhcyBhIHZhbGlkIGZpcnN0IGxpbmUgbnVtYmVyLgorICBQYXRjaCBzdWdnZXN0ZWQgYnkgSXZhbiBMZXZraXZza3lpLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI3NjQ3OiBVcGRhdGUgYnVuZGxlZCBUY2wvVGsgdG8gOC42LjYuCisKKy0gSXNzdWUgIzI3NjEwOiBBZGRzIFBFUCA1MTQgbWV0YWRhdGEgdG8gV2luZG93cyBpbnN0YWxsZXIKKworLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAorICB3b3JrcyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzI3MzA5OiBFbmFibGVzIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKKyAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKKworLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwLCB3aGljaCBpcworICByZXF1aXJlZCBvbiBBSVguICBUaGUgcmVmZXJlbmNlcyB3ZXJlIGFjY2lkZW50YWxseSBjaGFuZ2VkIGluIDMuNS4wYTEuCisKKy0gSXNzdWUgIzI3NDUzOiBDUFAgaW52b2NhdGlvbiBpbiBjb25maWd1cmUgbXVzdCB1c2UgQ1BQRkxBR1MuIFBhdGNoIGJ5CisgIENoaSBIc3VhbiBZZW4uCisKKy0gSXNzdWUgIzI3NjQxOiBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgaW5zZXJ0cyBjb21tZW50cyBpbnRvIHRoZSBtYWtlZmlsZQorICB0byBwcmV2ZW50IHRoZSBwZ2VuIGFuZCBfZnJlZXplX2ltcG9ydGxpYiBleGVjdXRhYmxlcyBmcm9tIGJlaW5nIGNyb3NzLQorICBjb21waWxlZC4KKworLSBJc3N1ZSAjMjY2NjI6IFNldCBQWVRIT05fRk9SX0dFTiBpbiBjb25maWd1cmUgYXMgdGhlIFB5dGhvbiBwcm9ncmFtIHRvIGJlCisgIHVzZWQgZm9yIGZpbGUgZ2VuZXJhdGlvbiBkdXJpbmcgdGhlIGJ1aWxkLgorCistIElzc3VlICMxMDkxMDogQXZvaWQgQysrIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNEIGFuZCBPUyBYLgorICBBbHNvIHVwZGF0ZSBGcmVlZEJTRCB2ZXJzaW9uIGNoZWNrcyBmb3IgdGhlIG9yaWdpbmFsIGN0eXBlIFVURi04IHdvcmthcm91bmQuCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGFscGhhIDMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0wNy0xMSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI3NDczOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIGJ5dGVzIGFuZCBieXRlYXJyYXkKKyAgY29uY2F0ZW5hdGlvbnMuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjMwMzQ6IFRoZSBvdXRwdXQgb2YgYSBzcGVjaWFsIFB5dGhvbiBidWlsZCB3aXRoIGRlZmluZWQgQ09VTlRfQUxMT0NTLAorICBTSE9XX0FMTE9DX0NPVU5UIG9yIFNIT1dfVFJBQ0tfQ09VTlQgbWFjcm9zIGlzIG5vdyBvZmYgYnkgIGRlZmF1bHQuICBJdCBjYW4KKyAgYmUgcmUtZW5hYmxlZCB1c2luZyB0aGUgIi1YIHNob3dhbGxvY2NvdW50IiBvcHRpb24uICBJdCBub3cgb3V0cHV0cyB0byBzdGRlcnIKKyAgaW5zdGVhZCBvZiBzdGRvdXQuCisKKy0gSXNzdWUgIzI3NDQzOiBfX2xlbmd0aF9oaW50X18oKSBvZiBieXRlYXJyYXkgaXRlcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYQorICBuZWdhdGl2ZSBpbnRlZ2VyIGZvciBhIHJlc2l6ZWQgYnl0ZWFycmF5LgorCistIElzc3VlICMyNzAwNzogVGhlIGZyb21oZXgoKSBjbGFzcyBtZXRob2RzIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkgc3ViY2xhc3NlcworICBub3cgcmV0dXJuIGFuIGluc3RhbmNlIG9mIGNvcnJlc3BvbmRpbmcgc3ViY2xhc3MuCisKK0xpYnJhcnkKKy0tLS0tLS0KKwogLSBJc3N1ZSAjMjY4NDQ6IEZpeCBlcnJvciBtZXNzYWdlIGZvciBpbXAuZmluZF9tb2R1bGUoKSB0byByZWZlciB0byAncGF0aCcKICAgaW5zdGVhZCBvZiAnbmFtZScuIFBhdGNoIGJ5IExldiBNYXhpbW92LgogCkBAIC0yMjEsMjIgKzg2Myw1NCBAQAogICBjb25maXJtaW5nIHRoZSBuZXRzY2FwZSBjb29raWUgZm9ybWF0IGFuZCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoCiAgIGRvY3VtZW50YXRpb24uCiAKLS0gSXNzdWUgIzI2NjY0OiBGaXggYWN0aXZhdGUuZmlzaCBieSByZW1vdmluZyBtaXMtdXNlIG9mIGBgJGBgLgorLSBJc3N1ZSAjMjE3MDg6IERlcHJlY2F0ZWQgZGJtLmR1bWIgYmVoYXZpb3IgdGhhdCBkaWZmZXJzIGZyb20gY29tbW9uIGRibQorICBiZWhhdmlvcjogY3JlYXRpbmcgYSBkYXRhYmFzZSBpbiAncicgYW5kICd3JyBtb2RlcyBhbmQgbW9kaWZ5aW5nIGEgZGF0YWJhc2UKKyAgaW4gJ3InIG1vZGUuCiAKLS0gSXNzdWUgIzIyMTE1OiBGaXhlZCB0cmFjaW5nIFRraW50ZXIgdmFyaWFibGVzOiB0cmFjZV92ZGVsZXRlKCkgd2l0aCB3cm9uZwotICBtb2RlIG5vIGxvbmdlciBicmVhayB0cmFjaW5nLCB0cmFjZV92aW5mbygpIG5vdyBhbHdheXMgcmV0dXJucyBhIGxpc3Qgb2YKLSAgcGFpcnMgb2Ygc3RyaW5ncywgdHJhY2luZyBpbiB0aGUgInUiIG1vZGUgbm93IHdvcmtzLgorLSBJc3N1ZSAjMjY3MjE6IENoYW5nZSB0aGUgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLndmaWxlIGF0dHJpYnV0ZQorICB0byBpbXBsZW1lbnQgQnVmZmVyZWRJT0Jhc2UuIEluIHBhcnRpY3VsYXIsIHRoZSB3cml0ZSgpIG1ldGhvZCBubyBsb25nZXIKKyAgZG9lcyBwYXJ0aWFsIHdyaXRlcy4KIAotLSBGaXggYSBzY29waW5nIGlzc3VlIGluIGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIgd2hpY2ggdHJpZ2dlcmVkIGFuCi0gIFVuYm91bmRMb2NhbEVycm9yIHdoZW4gbGF6eS1sb2FkaW5nIGEgbW9kdWxlIHRoYXQgd2FzIGFscmVhZHkgcHV0IGludG8KLSAgc3lzLm1vZHVsZXMuCistIElzc3VlICMyMjExNTogQWRkZWQgbWV0aG9kcyB0cmFjZV9hZGQsIHRyYWNlX3JlbW92ZSBhbmQgdHJhY2VfaW5mbyBpbiB0aGUKKyAgdGtpbnRlci5WYXJpYWJsZSBjbGFzcy4gIFRoZXkgcmVwbGFjZSBvbGQgbWV0aG9kcyB0cmFjZV92YXJpYWJsZSwgdHJhY2UsCisgIHRyYWNlX3ZkZWxldGUgYW5kIHRyYWNlX3ZpbmZvIHRoYXQgdXNlIG9ic29sZXRlIFRjbCBjb21tYW5kcyBhbmQgbWlnaHQKKyAgbm90IHdvcmsgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFRjbC4gIEZpeGVkIG9sZCB0cmFjaW5nIG1ldGhvZHM6CisgIHRyYWNlX3ZkZWxldGUoKSB3aXRoIHdyb25nIG1vZGUgbm8gbG9uZ2VyIGJyZWFrIHRyYWNpbmcsIHRyYWNlX3ZpbmZvKCkgbm93CisgIGFsd2F5cyByZXR1cm5zIGEgbGlzdCBvZiBwYWlycyBvZiBzdHJpbmdzLCB0cmFjaW5nIGluIHRoZSAidSIgbW9kZSBub3cgd29ya3MuCisKKy0gSXNzdWUgIzI2MjQzOiBPbmx5IHRoZSBsZXZlbCBhcmd1bWVudCB0byB6bGliLmNvbXByZXNzKCkgaXMga2V5d29yZCBhcmd1bWVudAorICBub3cuICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgcG9zaXRpb25hbC1vbmx5LgorCistIElzc3VlICMyNzAzODogRXhwb3NlIHRoZSBEaXJFbnRyeSB0eXBlIGFzIG9zLkRpckVudHJ5LiBDb2RlIHBhdGNoIGJ5CisgIEplbGxlIFppamxzdHJhLgorCistIElzc3VlICMyNzE4NjogVXBkYXRlIG9zLmZzcGF0aCgpL1B5T1NfRlNQYXRoKCkgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZgorICBfX2ZzcGF0aF9fKCkgdG8gYmUgZWl0aGVyIHN0ciBvciBieXRlcy4KKworLSBJc3N1ZSAjMTg3MjY6IEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIG9mIHRoZSBkdW1wKCksIGR1bXBzKCksCisgIGxvYWQoKSBhbmQgbG9hZHMoKSBmdW5jdGlvbnMgYW5kIEpTT05FbmNvZGVyIGFuZCBKU09ORGVjb2RlciBjbGFzcworICBjb25zdHJ1Y3RvcnMgaW4gdGhlIGpzb24gbW9kdWxlIGFyZSBub3cga2V5d29yZC1vbmx5LgorCistIElzc3VlICMyNzMxOTogTWV0aG9kcyBzZWxlY3Rpb25fc2V0KCksIHNlbGVjdGlvbl9hZGQoKSwgc2VsZWN0aW9uX3JlbW92ZSgpCisgIGFuZCBzZWxlY3Rpb25fdG9nZ2xlKCkgb2YgdHRrLlRyZWVWaWV3IG5vdyBhbGxvdyBwYXNzaW5nIG11bHRpcGxlIGl0ZW1zIGFzCisgIG11bHRpcGxlIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlbSBhcyBhIHR1cGxlLiAgRGVwcmVjYXRlZAorICB1bmRvY3VtZW50ZWQgYWJpbGl0eSBvZiBjYWxsaW5nIHRoZSBzZWxlY3Rpb24oKSBtZXRob2Qgd2l0aCBhcmd1bWVudHMuCiAKIC0gSXNzdWUgIzI3MDc5OiBGaXhlZCBjdXJzZXMuYXNjaWkgZnVuY3Rpb25zIGlzYmxhbmsoKSwgaXNjbnRybCgpIGFuZCBpc3B1bmN0KCkuCiAKKy0gSXNzdWUgIzI3Mjk0OiBOdW1lcmljYWwgc3RhdGUgaW4gdGhlIHJlcHIgZm9yIFRraW50ZXIgZXZlbnQgb2JqZWN0cyBpcyBub3cKKyAgcmVwcmVzZW50ZWQgYXMgYSBjb21iaW5hdGlvbiBvZiBrbm93biBmbGFncy4KKworLSBJc3N1ZSAjMjcxNzc6IE1hdGNoIG9iamVjdHMgaW4gdGhlIHJlIG1vZHVsZSBub3cgc3VwcG9ydCBpbmRleC1saWtlIG9iamVjdHMKKyAgYXMgZ3JvdXAgaW5kaWNlcy4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgSmVyb2VuIERlbWV5ZXIgYW5kIFhpYW5nIFpoYW5nLgorCiAtIElzc3VlICMyNjc1NDogU29tZSBmdW5jdGlvbnMgKGNvbXBpbGUoKSBldGMpIGFjY2VwdGVkIGEgZmlsZW5hbWUgYXJndW1lbnQKICAgZW5jb2RlZCBhcyBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZS1saWtlIG9iamVjdHMKICAgYXJlIGFjY2VwdGVkLgogCistIElzc3VlICMyNjUzNjogc29ja2V0LmlvY3RsIG5vdyBzdXBwb3J0cyBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRILiBQYXRjaCBieQorICBEYW5pZWwgU3Rva2VzLgorCiAtIElzc3VlICMyNzA0ODogUHJldmVudHMgZGlzdHV0aWxzIGZhaWxpbmcgb24gV2luZG93cyB3aGVuIGVudmlyb25tZW50CiAgIHZhcmlhYmxlcyBjb250YWluIG5vbi1BU0NJSSBjaGFyYWN0ZXJzCiAKQEAgLTI1NSw5ICs5MjksMTUgQEAKICAgTGludXguICBUcnVuY2F0ZSBzaXplIHRvIElOVF9NQVggYW5kIGxvb3AgdW50aWwgd2UgY29sbGVjdGVkIGVub3VnaCByYW5kb20KICAgYnl0ZXMsIGluc3RlYWQgb2YgY2FzdGluZyBhIGRpcmVjdGx5IFB5X3NzaXplX3QgdG8gaW50LgogCistIElzc3VlICMxNjg2NDogc3FsaXRlMy5DdXJzb3IubGFzdHJvd2lkIG5vdyBzdXBwb3J0cyBSRVBMQUNFIHN0YXRlbWVudC4KKyAgSW5pdGlhbCBwYXRjaCBieSBBbGV4IExvcmRUaG9yc2VuLgorCiAtIElzc3VlICMyNjM4NjogRml4ZWQgdHRrLlRyZWVWaWV3IHNlbGVjdGlvbiBvcGVyYXRpb25zIHdpdGggaXRlbSBpZCdzCiAgIGNvbnRhaW5pbmcgc3BhY2VzLgogCistIElzc3VlICM4NjM3OiBIb25vciBhIHBhZ2VyIHNldCBieSB0aGUgZW52IHZhciBNQU5QQUdFUiAoaW4gcHJlZmVyZW5jZSB0bworICBvbmUgc2V0IGJ5IHRoZSBlbnYgdmFyIFBBR0VSKS4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyMjYzNjogQXZvaWQgc2hlbGwgaW5qZWN0aW9uIHByb2JsZW1zIHdpdGgKICAgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCkuCiAKQEAgLTI2NSwxODAgKzk0NSw0MDAgQEAKICAgbG9jYWxlIGVuY29kaW5nLCBhbmQgZml4IGdldF9iZWdpZHgoKSBhbmQgZ2V0X2VuZGlkeCgpIHRvIHJldHVybiBjb2RlIHBvaW50CiAgIGluZGV4ZXMuCiAKLS0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJoLgotCiAtIElzc3VlICMyNzM5MjogQWRkIGxvb3AuY29ubmVjdF9hY2NlcHRlZF9zb2NrZXQoKS4KICAgUGF0Y2ggYnkgSmltIEZ1bHRvbi4KIAotLSBJc3N1ZSAjMjc5MzA6IEltcHJvdmVkIGJlaGF2aW91ciBvZiBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIuCi0gIFRoYW5rcyB0byBQYXVsbyBBbmRyYWRlIGFuZCBQZXRyIFZpa3RvcmluIGZvciB0aGUgYW5hbHlzaXMgYW5kIHBhdGNoLgotCi0tIElzc3VlICMyMTIwMTogSW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgbXVsdGlwcm9jZXNzaW5nIGVycm9yIG1lc3NhZ2UuICBUaGFua3MKLSAgdG8gV29qY2llY2ggV2FsY3phayBmb3IgcGF0Y2guCi0KLS0gSXNzdWUgIzI3NDU2OiBhc3luY2lvOiBTZXQgVENQX05PREVMQVkgYnkgZGVmYXVsdC4KLQotLSBJc3N1ZSAjMjc5MDY6IEZpeCBzb2NrZXQgYWNjZXB0IGV4aGF1c3Rpb24gZHVyaW5nIGhpZ2ggVENQIHRyYWZmaWMuCi0gIFBhdGNoIGJ5IEtldmluIENvbndheS4KLQotLSBJc3N1ZSAjMjgxNzQ6IEhhbmRsZSB3aGVuIFNPX1JFVVNFUE9SVCBpc24ndCBwcm9wZXJseSBzdXBwb3J0ZWQuCi0gIFBhdGNoIGJ5IFNldGggTWljaGFlbCBMYXJzb24uCi0KLS0gSXNzdWUgIzI2NjU0OiBJbnNwZWN0IGZ1bmN0b29scy5wYXJ0aWFsIGluIGFzeW5jaW8uSGFuZGxlLl9fcmVwcl9fLgotICBQYXRjaCBieSBpY2Vib3kuCi0KLS0gSXNzdWUgIzI2OTA5OiBGaXggc2xvdyBwaXBlcyBJTyBpbiBhc3luY2lvLgotICBQYXRjaCBieSBJTkFEQSBOYW9raS4KLQotLSBJc3N1ZSAjMjgxNzY6IEZpeCBjYWxsYmFja3MgcmFjZSBpbiBhc3luY2lvLlNlbGVjdG9yTG9vcC5zb2NrX2Nvbm5lY3QuCi0KLS0gSXNzdWUgIzI3NzU5OiBGaXggc2VsZWN0b3JzIGluY29ycmVjdGx5IHJldGFpbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCi0gIFBhdGNoIGJ5IE1hcmsgV2lsbGlhbXMuCi0KIElETEUKIC0tLS0KIAotLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KKy0gSXNzdWUgIzI3NDc3OiBJRExFIHNlYXJjaCBkaWFsb2dzIG5vdyB1c2UgdHRrIHdpZGdldHMuCiAKLS0gQWRkIHZlcnNpb24gdG8gdGl0bGUgb2YgSURMRSBoZWxwIHdpbmRvdy4KKy0gSXNzdWUgIzI3MTczOiBBZGQgJ0lETEUgTW9kZXJuIFVuaXgnIHRvIHRoZSBidWlsdC1pbiBrZXkgc2V0cy4KKyAgTWFrZSB0aGUgZGVmYXVsdCBrZXkgc2V0IGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0uCisgIEFkZCB0ZXN0cyBmb3IgdGhlIGNoYW5nZXMgdG8gdGhlIGNvbmZpZyBtb2R1bGUuCiAKLS0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0Ci0gIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCi0KLS0gSXNzdWUgIzI3NzE0OiB0ZXh0X3RleHR2aWV3IGFuZCB0ZXN0X2F1dG9jb21wbGV0ZSBub3cgcGFzcyB3aGVuIHJlLXJ1bgotICBpbiB0aGUgc2FtZSBwcm9jZXNzLiAgVGhpcyBvY2N1cnMgd2hlbiB0ZXN0X2lkbGUgZmFpbHMgd2hlbiBydW4gd2l0aCB0aGUKLSAgLXcgb3B0aW9uIGJ1dCB3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCi0KLS0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgotICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgorLSBJc3N1ZSAjMjc0NTI6IG1ha2UgY29tbWFuZCBsaW5lICJpZGxlLXRlc3Q+IHB5dGhvbiB0ZXN0X2hlbHAucHkiIHdvcmsuCisgIF9fZmlsZV9fIGlzIHJlbGF0aXZlIHdoZW4gcHl0aG9uIGlzIHN0YXJ0ZWQgaW4gdGhlIGZpbGUncyBkaXJlY3RvcnkuCiAKIC0gSXNzdWUgIzI3NDUyOiBhZGQgbGluZSBjb3VudGVyIGFuZCBjcmMgdG8gSURMRSBjb25maWdIYW5kbGVyIHRlc3QgZHVtcC4KIAorLSBJc3N1ZSAjMjczODA6IElETEU6IGFkZCBxdWVyeS5weSB3aXRoIGJhc2UgUXVlcnkgZGlhbG9nIGFuZCB0dGsgd2lkZ2V0cy4KKyAgTW9kdWxlIGhhZCBzdWJjbGFzc2VzIFNlY3Rpb25OYW1lLCBNb2R1bGVOYW1lLCBhbmQgSGVscFNvdXJjZSwgd2hpY2ggYXJlCisgIHVzZWQgdG8gZ2V0IGluZm9ybWF0aW9uIGZyb20gdXNlcnMgYnkgY29uZmlnZGlhbG9nIGFuZCBmaWxlID0+TG9hZCBNb2R1bGUuCisgIEVhY2ggc3ViY2xhc3MgaGFzIGl0dyBvd24gdmFsaWRpdHkgY2hlY2tzLiAgVXNpbmcgTW9kdWxlTmFtZSBhbGxvd3MgdXNlcnMKKyAgdG8gZWRpdCBiYWQgbW9kdWxlIG5hbWVzIGluc3RlYWQgb2Ygc3RhcnRpbmcgb3Zlci4KKyAgQWRkIHRlc3RzIGFuZCBkZWxldGUgdGhlIHR3byBmaWxlcyBjb21iaW5lZCBpbnRvIHRoZSBuZXcgb25lLgorCistIElzc3VlICMyNzM3MjogVGVzdF9pZGxlIG5vIGxvbmdlciBjaGFuZ2VzIHRoZSBsb2NhbGUuCisKIC0gSXNzdWUgIzI3MzY1OiBBbGxvdyBub24tYXNjaWkgY2hhcnMgaW4gSURMRSBORVdTLnR4dCwgZm9yIGNvbnRyaWJ1dG9yIG5hbWVzLgogCiAtIElzc3VlICMyNzI0NTogSURMRTogQ2xlYW5seSBkZWxldGUgY3VzdG9tIHRoZW1lcyBhbmQga2V5IGJpbmRpbmdzLgogICBQcmV2aW91c2x5LCB3aGVuIElETEUgd2FzIHN0YXJ0ZWQgZnJvbSBhIGNvbnNvbGUgb3IgYnkgaW1wb3J0LCBhIGNhc2NhZGUKICAgb2Ygd2FybmluZ3Mgd2FzIGVtaXR0ZWQuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMyNDEzNzogUnVuIElETEUsIHRlc3RfaWRsZSwgYW5kIGh0ZXN0IHdpdGggdGtpbnRlciBkZWZhdWx0IHJvb3QKKyAgZGlzYWJsZWQuICBGaXggY29kZSBhbmQgdGVzdHMgdGhhdCBmYWlsIHdpdGggdGhpcyByZXN0cmljdGlvbi4gIEZpeCBodGVzdHMgdG8KKyAgbm90IGNyZWF0ZSBhIHNlY29uZCBhbmQgcmVkdW5kYW50IHJvb3QgYW5kIG1haW5sb29wLgorCistIElzc3VlICMyNzMxMDogRml4IElETEUuYXBwIGZhaWx1cmUgdG8gbGF1bmNoIG9uIE9TIFggZHVlIHRvIHZlc3RpZ2lhbCBpbXBvcnQuCisKIEMgQVBJCiAtLS0tLQogCiAtIElzc3VlICMyNjc1NDogUHlVbmljb2RlX0ZTRGVjb2RlcigpIGFjY2VwdGVkIGEgZmlsZW5hbWUgYXJndW1lbnQgZW5jb2RlZCBhcwotICBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZXMtbGlrZSBvYmplY3RzIGFyZSBhY2NlcHRlZC4KKyAgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMuIE5vdyBvbmx5IHN0cmluZ3MgYW5kIGJ5dGUtbGlrZSBvYmplY3RzIGFyZSBhY2NlcHRlZC4KIAotVGVzdHMKK0J1aWxkCiAtLS0tLQogCi0tIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCi0gIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorLSBJc3N1ZSAjMjgwNjY6IEZpeCB0aGUgbG9naWMgdGhhdCBzZWFyY2hlcyBidWlsZCBkaXJlY3RvcmllcyBmb3IgZ2VuZXJhdGVkCisgIGluY2x1ZGUgZmlsZXMgd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KIAotLSBJc3N1ZSAjMjczNjk6IEluIHRlc3RfcHlleHBhdCwgYXZvaWQgdGVzdGluZyBhbiBlcnJvciBtZXNzYWdlIGRldGFpbCB0aGF0Ci0gIGNoYW5nZWQgaW4gRXhwYXQgMi4yLjAuCistIElzc3VlICMyNzQ0MjogRXhwb3NlIHRoZSBBbmRyb2lkIEFQSSBsZXZlbCB0aGF0IHB5dGhvbiB3YXMgYnVpbHQgYWdhaW5zdCwgaW4KKyAgc3lzY29uZmlnLmdldF9jb25maWdfdmFycygpIGFzICdBTkRST0lEX0FQSV9MRVZFTCcuCisKKy0gSXNzdWUgIzI3NDM0OiBUaGUgaW50ZXJwcmV0ZXIgdGhhdCBydW5zIHRoZSBjcm9zcy1idWlsZCwgZm91bmQgaW4gUEFUSCwgbXVzdAorICBub3cgYmUgb2YgdGhlIHNhbWUgZmVhdHVyZSB2ZXJzaW9uIChlLmcuIDMuNikgYXMgdGhlIHNvdXJjZSBiZWluZyBidWlsdC4KKworLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCisKKy0gSXNzdWUgIzIzOTY4OiBSZW5hbWUgdGhlIHBsYXRmb3JtIGRpcmVjdG9yeSBmcm9tIHBsYXQtJChNQUNIREVQKSB0bworICBwbGF0LSQoUExBVEZPUk1fVFJJUExFVCkuCisgIFJlbmFtZSB0aGUgY29uZmlnIGRpcmVjdG9yeSAoTElCUEwpIGZyb20gY29uZmlnLSQoTERWRVJTSU9OKSB0bworICBjb25maWctJChMRFZFUlNJT04pLSQoUExBVEZPUk1fVFJJUExFVCkuCisgIEluc3RhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmMgX3N5c2NvbmZpZ2RhdGEgbW9kdWxlIGludG8gdGhlIHBsYXRmb3JtCisgIGRpcmVjdG9yeSBhbmQgcmVuYW1lIGl0IHRvIGluY2x1ZGUgdGhlIEFCSUZMQUdTLgorCistIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQuCiAKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCi0tIElzc3VlICMyNzk1MjogR2V0IFRvb2xzL3NjcmlwdHMvZml4Y2lkLnB5IHdvcmtpbmcgd2l0aCBQeXRob24gMyBhbmQgdGhlCi0gIGN1cnJlbnQgInJlIiBtb2R1bGUsIGF2b2lkIGludmFsaWQgUHl0aG9uIGJhY2tzbGFzaCBlc2NhcGVzLCBhbmQgZml4IGEgYnVnCi0gIHBhcnNpbmcgZXNjYXBlZCBDIHF1b3RlIHNpZ25zLgotCiAtIElzc3VlICMyNzMzMjogRml4ZWQgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIG1vZHVsZS1sZXZlbCBmdW5jdGlvbnMKICAgZ2VuZXJhdGVkIGJ5IEFyZ3VtZW50IENsaW5pYy4gIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCiAKIC0gSXNzdWUgIzI3NDE4OiBGaXhlZCBUb29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weS4KIAotV2luZG93cwotLS0tLS0tLQorRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMyODExMDogbGF1bmNoZXIubXNpIGhhcyBkaWZmZXJlbnQgcHJvZHVjdCBjb2RlcyBiZXR3ZWVuIDMyLWJpdCBhbmQKLSAgNjQtYml0CistIElzc3VlICMxOTQ4OTogTW92ZWQgdGhlIHNlYXJjaCBib3ggZnJvbSB0aGUgc2lkZWJhciB0byB0aGUgaGVhZGVyIGFuZCBmb290ZXIKKyAgb2YgZWFjaCBwYWdlLiAgUGF0Y2ggYnkgQW1tYXIgQXNrYXIuCiAKLS0gSXNzdWUgIzI1MTQ0OiBFbnN1cmVzIFRhcmdldERpciBpcyBzZXQgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCBjdXN0b20KLSAgaW5zdGFsbC4KLQotLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAotICB3b3JrcyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzI3MzA5OiBFbmFibGVkIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMjY2NjE6IHNldHVwLnB5IG5vdyBkZXRlY3RzIHN5c3RlbSBsaWJmZmkgd2l0aCBtdWx0aWFyY2ggd3JhcHBlci4KLQotLSBJc3N1ZSAjMjgwNjY6IEZpeCB0aGUgbG9naWMgdGhhdCBzZWFyY2hlcyBidWlsZCBkaXJlY3RvcmllcyBmb3IgZ2VuZXJhdGVkCi0gIGluY2x1ZGUgZmlsZXMgd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KLQotLSBJc3N1ZSAjMTU4MTk6IFJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBzZWFyY2ggZGlyZWN0b3J5IG9wdGlvbiBmb3IgYnVpbGRpbmcKLSAgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCi0KLS0gSXNzdWUgIzI3NTY2OiBGaXggY2xlYW4gdGFyZ2V0IGluIGZyZWV6ZSBtYWtlZmlsZSAocGF0Y2ggYnkgTGlzYSBSb2FjaCkKLQotLSBJc3N1ZSAjMjc3MDU6IFVwZGF0ZSBtZXNzYWdlIGluIHZhbGlkYXRlX3VjcnRiYXNlLnB5Ci0KLS0gSXNzdWUgIzI3OTgzOiBDYXVzZSBsYWNrIG9mIGxsdm0tcHJvZmRhdGEgdG9vbCB3aGVuIHVzaW5nIGNsYW5nIGFzCi0gIHJlcXVpcmVkIGZvciBQR08gbGlua2luZyB0byBiZSBhIGNvbmZpZ3VyZSB0aW1lIGVycm9yIHJhdGhlciB0aGFuCi0gIG1ha2UgdGltZSB3aGVuIC0td2l0aC1vcHRpbWl6YXRpb25zIGlzIGVuYWJsZWQuICBBbHNvIGltcHJvdmUgb3VyCi0gIGFiaWxpdHkgdG8gZmluZCB0aGUgbGx2bS1wcm9mZGF0YSB0b29sIG9uIE1hY09TIGFuZCBzb21lIExpbnV4ZXMuCi0KLS0gSXNzdWUgIzI2MzA3OiBUaGUgcHJvZmlsZS1vcHQgYnVpbGQgbm93IGFwcGx5cyBQR08gdG8gdGhlIGJ1aWx0LWluIG1vZHVsZXMuCi0KLS0gSXNzdWUgIzI2MzU5OiBBZGQgdGhlIC0td2l0aC1vcHRpbWl6YXRpb25zIGNvbmZpZ3VyZSBmbGFnLgotCi0tIElzc3VlICMyNzcxMzogU3VwcHJlc3Mgc3B1cmlvdXMgYnVpbGQgd2FybmluZ3Mgd2hlbiB1cGRhdGluZyBpbXBvcnRsaWIncwotICBib290c3RyYXAgZmlsZXMuICBQYXRjaCBieSBYaWFuZyBaaGFuZwotCi0tIElzc3VlICMyNTgyNTogQ29ycmVjdCB0aGUgcmVmZXJlbmNlcyB0byBNb2R1bGVzL3B5dGhvbi5leHAgYW5kIGxkX3NvX2FpeCwKLSAgd2hpY2ggYXJlIHJlcXVpcmVkIG9uIEFJWC4gIFRoaXMgdXBkYXRlcyByZWZlcmVuY2VzIHRvIGFuIGluc3RhbGxhdGlvbiBwYXRoCi0gIHRoYXQgd2FzIGNoYW5nZWQgaW4gMy4yYTQsIGFuZCB1bmRvZXMgY2hhbmdlZCByZWZlcmVuY2VzIHRvIHRoZSBidWlsZCB0cmVlCi0gIHRoYXQgd2VyZSBtYWRlIGluIDMuNS4wYTEuCi0KLS0gSXNzdWUgIzI3NDUzOiBDUFAgaW52b2NhdGlvbiBpbiBjb25maWd1cmUgbXVzdCB1c2UgQ1BQRkxBR1MuIFBhdGNoIGJ5Ci0gIENoaSBIc3VhbiBZZW4uCi0KLS0gSXNzdWUgIzI3NjQxOiBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgaW5zZXJ0cyBjb21tZW50cyBpbnRvIHRoZSBtYWtlZmlsZQotICB0byBwcmV2ZW50IHRoZSBwZ2VuIGFuZCBfZnJlZXplX2ltcG9ydGxpYiBleGVjdXRhYmxlcyBmcm9tIGJlaW5nIGNyb3NzLQotICBjb21waWxlZC4KLQotLSBJc3N1ZSAjMjY2NjI6IFNldCBQWVRIT05fRk9SX0dFTiBpbiBjb25maWd1cmUgYXMgdGhlIFB5dGhvbiBwcm9ncmFtIHRvIGJlCi0gIHVzZWQgZm9yIGZpbGUgZ2VuZXJhdGlvbiBkdXJpbmcgdGhlIGJ1aWxkLgotCi0tIElzc3VlICMxMDkxMDogQXZvaWQgQysrIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNEIGFuZCBPUyBYLgotICBBbHNvIHVwZGF0ZSBGcmVlZEJTRCB2ZXJzaW9uIGNoZWNrcyBmb3IgdGhlIG9yaWdpbmFsIGN0eXBlIFVURi04IHdvcmthcm91bmQuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTI2Ci0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyNjkzMDogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yaC4KKy0gSXNzdWUgIzI3Mjg1OiBVcGRhdGUgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHRoZSBkZXByZWNhdGlvbiBvZiBgYHB5dmVudmBgCisgIGFuZCBub3JtYWxpemUgb24gdGhlIHRlcm0gInZpcnR1YWwgZW52aXJvbm1lbnQiLiBQYXRjaCBieSBTdGV2ZSBQaWVyY3kuCiAKIFRlc3RzCiAtLS0tLQogCi0tIElzc3VlICMyNjg2NzogVWJ1bnR1J3Mgb3BlbnNzbCBPUF9OT19TU0x2MyBpcyBmb3JjZWQgb24gYnkgZGVmYXVsdDsgZml4IHRlc3QuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMjczNjU6IEFsbG93IG5vbi1hc2NpaSBpbiBpZGxlbGliL05FV1MudHh0IC0gbWluaW1hbCBwYXJ0IGZvciAzLjUuMi4KKy0gSXNzdWUgIzI3MDI3OiBBZGRlZCB0ZXN0LnN1cHBvcnQuaXNfYW5kcm9pZCB0aGF0IGlzIFRydWUgd2hlbiB0aGlzIGlzIGFuCisgIEFuZHJvaWQgYnVpbGQuCiAKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjIgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSAyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVJlbGVhc2UgZGF0ZTogMjAxNi0wNi0xMgorKlJlbGVhc2UgZGF0ZTogMjAxNi0wNi0xMyoKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzI3MDk1OiBTaW1wbGlmaWVkIE1BS0VfRlVOQ1RJT04gYW5kIHJlbW92ZWQgTUFLRV9DTE9TVVJFIG9wY29kZXMuCisgIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICMyNzE5MDogUmFpc2UgTm90U3VwcG9ydGVkRXJyb3IgaWYgc3FsaXRlMyBpcyBvbGRlciB0aGFuIDMuMy4xLgorICBQYXRjaCBieSBEYXZlIFNhd3llci4KKworLSBJc3N1ZSAjMjcyODY6IEZpeGVkIGNvbXBpbGluZyBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCBvcGNvZGUuICBDYWxsaW5nCisgIGZ1bmN0aW9uIHdpdGggZ2VuZXJhbGl6ZWQgdW5wYWNraW5nIChQRVAgNDQ4KSBhbmQgY29uZmxpY3Rpbmcga2V5d29yZCBuYW1lcworICBjb3VsZCBjYXVzZSB1bmRlZmluZWQgYmVoYXZpb3IuCisKKy0gSXNzdWUgIzI3MTQwOiBBZGRlZCBCVUlMRF9DT05TVF9LRVlfTUFQIG9wY29kZS4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBzdXBwb3J0IGZvciBvcy5QYXRoTGlrZSBvYmplY3RzIHRvIG9wZW4oKSAocGFydCBvZiBQRVAgNTE5KS4KKwogLSBJc3N1ZSAjMjcwNjY6IEZpeGVkIFN5c3RlbUVycm9yIGlmIGEgY3VzdG9tIG9wZW5lciAoZm9yIG9wZW4oKSkgcmV0dXJucyBhCiAgIG5lZ2F0aXZlIG51bWJlciB3aXRob3V0IHNldHRpbmcgYW4gZXhjZXB0aW9uLgogCistIElzc3VlICMyNjk4MzogZmxvYXQoKSBub3cgYWx3YXlzIHJldHVybiBhbiBpbnN0YW5jZSBvZiBleGFjdCBmbG9hdC4KKyAgVGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBfX2Zsb2F0X18gcmV0dXJucyBhbiBpbnN0YW5jZSBvZgorICBhIHN0cmljdCBzdWJjbGFzcyBvZiBmbG9hdC4gIEluIGEgZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvbiB0aGlzIGNhbgorICBiZSBhbiBlcnJvci4KKworLSBJc3N1ZSAjMjcwOTc6IFB5dGhvbiBpbnRlcnByZXRlciBpcyBub3cgYWJvdXQgNyUgZmFzdGVyIGR1ZSB0byBvcHRpbWl6ZWQKKyAgaW5zdHJ1Y3Rpb24gZGVjb2RpbmcuICBCYXNlZCBvbiBwYXRjaCBieSBEZW11ciBSdW1lZC4KKworLSBJc3N1ZSAjMjY2NDc6IFB5dGhvbiBpbnRlcnByZXRlciBub3cgdXNlcyAxNi1iaXQgd29yZGNvZGUgaW5zdGVhZCBvZiBieXRlY29kZS4KKyAgUGF0Y2ggYnkgRGVtdXIgUnVtZWQuCisKKy0gSXNzdWUgIzIzMjc1OiBBbGxvdyBhc3NpZ25pbmcgdG8gYW4gZW1wdHkgdGFyZ2V0IGxpc3QgaW4gcm91bmQgYnJhY2tldHM6CisgICgpID0gaXRlcmFibGUuCisKKy0gSXNzdWUgIzI3MjQzOiBVcGRhdGUgdGhlIF9fYWl0ZXJfXyBwcm90b2NvbDogaW5zdGVhZCBvZiByZXR1cm5pbmcKKyAgYW4gYXdhaXRhYmxlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yLCB0aGUgYXN5bmNocm9ub3VzCisgIGl0ZXJhdG9yIHNob3VsZCBiZSByZXR1cm5lZCBkaXJlY3RseS4gIERvaW5nIHRoZSBmb3JtZXIgd2lsbCB0cmlnZ2VyIGEKKyAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KKworCitMaWJyYXJ5CistLS0tLS0tCisKKy0gQ29tbWVudCBvdXQgc29ja2V0IChTT19SRVVTRVBPUlQpIGFuZCBwb3NpeCAoT19TSExPQ0ssIE9fRVhMT0NLKSBjb25zdGFudHMKKyAgZXhwb3NlZCBvbiB0aGUgQVBJIHdoaWNoIGFyZSBub3QgaW1wbGVtZW50ZWQgb24gR05VL0h1cmQuIFRoZXkgd291bGQgbm90CisgIHdvcmsgYXQgcnVudGltZSBhbnl3YXkuCisKKy0gSXNzdWUgIzI1NDU1OiBGaXhlZCBjcmFzaGVzIGluIHJlcHIgb2YgcmVjdXJzaXZlIEVsZW1lbnRUcmVlLkVsZW1lbnQgYW5kCisgIGZ1bmN0b29scy5wYXJ0aWFsIG9iamVjdHMuCisKKy0gSXNzdWUgIzI3Mjk0OiBJbXByb3ZlZCByZXByIGZvciBUa2ludGVyIGV2ZW50IG9iamVjdHMuCisKKy0gSXNzdWUgIzIwNTA4OiBJbXByb3ZlIGV4Y2VwdGlvbiBtZXNzYWdlIG9mIElQdns0LDZ9TmV0d29yay5fX2dldGl0ZW1fXy4KKyAgUGF0Y2ggYnkgR2FyZXRoIFJlZXMuCisKKy0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY1NTY6IFVwZGF0ZSBleHBhdCB0byAyLjEuMSwgZml4ZXMgQ1ZFLTIwMTUtMTI4My4KKworLSBbU2VjdXJpdHldIEZpeCBUTFMgc3RyaXBwaW5nIHZ1bG5lcmFiaWxpdHkgaW4gc210cGxpYiwgQ1ZFLTIwMTYtMDc3Mi4KKyAgUmVwb3J0ZWQgYnkgVGVhbSBPc3RzdHJvbS4KKworLSBJc3N1ZSAjMjEzODY6IEltcGxlbWVudCBtaXNzaW5nIElQdjRBZGRyZXNzLmlzX2dsb2JhbCBwcm9wZXJ0eS4gIEl0IHdhcworICBkb2N1bWVudGVkIHNpbmNlIDA3YTU2MTBiYWU5ZC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9nZXIgTHVldGhpLgorCistIElzc3VlICMyNzAyOTogUmVtb3ZlZCBkZXByZWNhdGVkIHN1cHBvcnQgb2YgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgZnJvbQorICBaaXBGaWxlLm9wZW4oKS4KKworLSBJc3N1ZSAjMjcwMzA6IFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIGFuIEFTQ0lJIGxldHRlciBpbgorICByZWd1bGFyIGV4cHJlc3Npb25zIG5vdyBhcmUgZXJyb3JzLiAgVGhlIHJlLkxPQ0FMRSBmbGFnIG5vdyBjYW4gYmUgdXNlZAorICBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgb3MuUGF0aExpa2Ugc3VwcG9ydCB0byBEaXJFbnRyeSAocGFydCBvZiBQRVAgNTE5KS4KKyAgSW5pdGlhbCBwYXRjaCBieSBKZWxsZSBaaWpsc3RyYS4KKworLSBJc3N1ZSAjMjA5MDA6IGRpc3R1dGlscyByZWdpc3RlciBjb21tYW5kIG5vdyBkZWNvZGVzIEhUVFAgcmVzcG9uc2VzCisgIGNvcnJlY3RseS4gIEluaXRpYWwgcGF0Y2ggYnkgaW5ncmlkLgorCistIElzc3VlICMyNzE4NjogQWRkIG9zLlBhdGhMaWtlIHN1cHBvcnQgdG8gcGF0aGxpYiwgcmVtb3ZpbmcgaXRzIHByb3Zpc2lvbmFsCisgIHN0YXR1cyAocGFydCBvZiBQRVAgNTE5KS4gSW5pdGlhbCBwYXRjaCBieSBEdXN0eSBQaGlsbGlwcy4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBzdXBwb3J0IGZvciBvcy5QYXRoTGlrZSBvYmplY3RzIHRvIG9zLmZzZW5jb2RlKCkgYW5kCisgIG9zLmZzZGVjb2RlKCkgKHBhcnQgb2YgUEVQIDUxOSkuCisKKy0gSXNzdWUgIzI3MTg2OiBJbnRyb2R1Y2Ugb3MuUGF0aExpa2UgYW5kIG9zLmZzcGF0aCgpIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIEEgbmV3IHZlcnNpb24gb2YgdHlwaW5nLnB5IHByb3ZpZGVzIHNldmVyYWwgbmV3IGNsYXNzZXMgYW5kCisgIGZlYXR1cmVzOiBAb3ZlcmxvYWQgb3V0c2lkZSBzdHVicywgUmV2ZXJzaWJsZSwgRGVmYXVsdERpY3QsIFRleHQsCisgIENvbnRleHRNYW5hZ2VyLCBUeXBlW10sIE5ld1R5cGUoKSwgVFlQRV9DSEVDS0lORywgYW5kIG51bWVyb3VzIGJ1ZworICBmaXhlcyAobm90ZSB0aGF0IHNvbWUgb2YgdGhlIG5ldyBmZWF0dXJlcyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZCBpbgorICBteXB5IG9yIG90aGVyIHN0YXRpYyBhbmFseXplcnMpLiAgQWxzbyBjbGFzc2VzIGZvciBQRVAgNDkyCisgIChBd2FpdGFibGUsIEFzeW5jSXRlcmFibGUsIEFzeW5jSXRlcmF0b3IpIGhhdmUgYmVlbiBhZGRlZCAoaW4gZmFjdAorICB0aGV5IG1hZGUgaXQgaW50byAzLjUuMSBidXQgd2VyZSBuZXZlciBtZW50aW9uZWQpLgorCistIElzc3VlICMyNTczODogU3RvcCBodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLnNlbmRfZXJyb3IoKSBmcm9tCisgIHNlbmRpbmcgYSBtZXNzYWdlIGJvZHkgZm9yIDIwNSBSZXNldCBDb250ZW50LiAgQWxzbywgZG9uJ3Qgc2VuZCBDb250ZW50CisgIGhlYWRlciBmaWVsZHMgaW4gcmVzcG9uc2VzIHRoYXQgZG9uJ3QgaGF2ZSBhIGJvZHkuICBQYXRjaCBieSBTdXN1bXUKKyAgS29zaGliYS4KKworLSBJc3N1ZSAjMjEzMTM6IEZpeCB0aGUgInBsYXRmb3JtIiBtb2R1bGUgdG8gdG9sZXJhdGUgd2hlbiBzeXMudmVyc2lvbgorICBjb250YWlucyB0cnVuY2F0ZWQgYnVpbGQgaW5mb3JtYXRpb24uCisKKy0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY4Mzk6IE9uIExpbnV4LCA6ZnVuYzpgb3MudXJhbmRvbWAgbm93IGNhbGxzCisgIGBgZ2V0cmFuZG9tKClgYCB3aXRoIGBgR1JORF9OT05CTE9DS2BgIHRvIGZhbGwgYmFjayBvbiByZWFkaW5nCisgIGBgL2Rldi91cmFuZG9tYGAgaWYgdGhlIHVyYW5kb20gZW50cm9weSBwb29sIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQuIFBhdGNoCisgIHdyaXR0ZW4gYnkgQ29sbSBCdWNrbGV5LgorCistIElzc3VlICMyMzg4MzogQWRkZWQgbWlzc2luZyBBUElzIHRvIF9fYWxsX18gdG8gbWF0Y2ggdGhlIGRvY3VtZW50ZWQgQVBJcworICBmb3IgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiBjZ2ksIG1haWxib3gsIG1pbWV0eXBlcywgcGxpc3RsaWIgYW5kIHNtdHBkLgorICBQYXRjaGVzIGJ5IEphY2VrIEtvxYJvZHppZWouCisKKy0gSXNzdWUgIzI3MTY0OiBJbiB0aGUgemxpYiBtb2R1bGUsIGFsbG93IGRlY29tcHJlc3NpbmcgcmF3IERlZmxhdGUgc3RyZWFtcworICB3aXRoIGEgcHJlZGVmaW5lZCB6ZGljdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNDI5MTogRml4IHdzZ2lyZWYuc2ltcGxlX3NlcnZlci5XU0dJUmVxdWVzdEhhbmRsZXIgdG8gY29tcGxldGVseQorICB3cml0ZSBkYXRhIHRvIHRoZSBjbGllbnQuICBQcmV2aW91c2x5IGl0IGNvdWxkIGRvIHBhcnRpYWwgd3JpdGVzIGFuZAorICB0cnVuY2F0ZSBkYXRhLiAgQWxzbywgd3NnaXJlZi5oYW5kbGVyLlNlcnZlckhhbmRsZXIgY2FuIG5vdyBoYW5kbGUgc3Rkb3V0CisgIGRvaW5nIHBhcnRpYWwgd3JpdGVzLCBidXQgdGhpcyBpcyBkZXByZWNhdGVkLgorCistIElzc3VlICMyMTI3MjogVXNlIF9zeXNjb25maWdkYXRhLnB5IHRvIGluaXRpYWxpemUgZGlzdHV0aWxzLnN5c2NvbmZpZy4KKworLSBJc3N1ZSAjMTk2MTE6IDptb2Q6YGluc3BlY3RgIG5vdyByZXBvcnRzIHRoZSBpbXBsaWNpdCBgYC4wYGAgcGFyYW1ldGVycworICBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGZvciBjb21wcmVoZW5zaW9uIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbiBzY29wZXMKKyAgYXMgaWYgdGhleSB3ZXJlIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzIGNhbGxlZCBgYGltcGxpY2l0MGBgLgorICBQYXRjaCBieSBKZWxsZSBaaWpsc3RyYS4KKworLSBJc3N1ZSAjMjY4MDk6IEFkZCBgYF9fYWxsX19gYCB0byA6bW9kOmBzdHJpbmdgLiAgUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjYzNzM6IHN1YnByb2Nlc3MuUG9wZW4uY29tbXVuaWNhdGUgbm93IGNvcnJlY3RseSBpZ25vcmVzCisgIEJyb2tlblBpcGVFcnJvciB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRpZXMgYmVmb3JlIC5jb21tdW5pY2F0ZSgpCisgIGlzIGNhbGxlZCBpbiBtb3JlL2FsbCBjaXJjdW1zdGFuY2VzLgorCistIHNpZ25hbCwgc29ja2V0LCBhbmQgc3NsIG1vZHVsZSBJbnRFbnVtIGNvbnN0YW50IG5hbWUgbG9va3VwcyBub3cgcmV0dXJuIGEKKyAgY29uc2lzdGVudCBuYW1lIGZvciB2YWx1ZXMgaGF2aW5nIG11bHRpcGxlIG5hbWVzLiAgRXg6IHNpZ25hbC5TaWduYWxzKDYpCisgIG5vdyByZWZlcnMgdG8gaXRzZWxmIGFzIHNpZ25hbC5TSUdBTFJNIHJhdGhlciB0aGFuIGZsaXBwaW5nIGJldHdlZW4gdGhhdAorICBhbmQgc2lnbmFsLlNJR0lPVCBiYXNlZCBvbiB0aGUgaW50ZXJwcmV0ZXIncyBoYXNoIHJhbmRvbWl6YXRpb24gc2VlZC4KKworLSBJc3N1ZSAjMjcxNjc6IENsYXJpZnkgdGhlIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGVycm9yIG1lc3NhZ2UgdGV4dAorICB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRpZWQgZHVlIHRvIGEgc2lnbmFsLgorCistIElzc3VlICMyNTkzMTogRG9uJ3QgZGVmaW5lIHNvY2tldHNlcnZlci5Gb3JraW5nKiBuYW1lcyBvbiBwbGF0Zm9ybXMgc3VjaAorICBhcyBXaW5kb3dzIHRoYXQgZG8gbm90IHN1cHBvcnQgb3MuZm9yaygpLgorCistIElzc3VlICMyMTc3NjogZGlzdHV0aWxzLnVwbG9hZCBub3cgY29ycmVjdGx5IGhhbmRsZXMgSFRUUEVycm9yLgorICBJbml0aWFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMjY1MjY6IFJlcGxhY2UgY3VzdG9tIHBhcnNlIHRyZWUgdmFsaWRhdGlvbiBpbiB0aGUgcGFyc2VyCisgIG1vZHVsZSB3aXRoIGEgc2ltcGxlIERGQSB2YWxpZGF0b3IuCisKKy0gSXNzdWUgIzI3MTE0OiBGaXggU1NMQ29udGV4dC5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIHdpdGgKKyAgUGVybWlzc2lvbkVycm9yCisKKy0gSXNzdWUgIzE4MzgzOiBBdm9pZCBjcmVhdGluZyBkdXBsaWNhdGUgZmlsdGVycyB3aGVuIHVzaW5nIGZpbHRlcndhcm5pbmdzCisgIGFuZCBzaW1wbGVmaWx0ZXIuICBCYXNlZCBvbiBwYXRjaCBieSBBbGV4IFNoa29wLgorCistIElzc3VlICMyMzAyNjogd2lucmVnLlF1ZXJ5VmFsdWVFeCgpIG5vdyByZXR1cm4gYW4gaW50ZWdlciBmb3IgUkVHX1FXT1JEIHR5cGUuCisKKy0gSXNzdWUgIzI2NzQxOiBzdWJwcm9jZXNzLlBvcGVuIGRlc3RydWN0b3Igbm93IGVtaXRzIGEgUmVzb3VyY2VXYXJuaW5nIHdhcm5pbmcKKyAgaWYgdGhlIGNoaWxkIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4KKworLSBJc3N1ZSAjMjcwNTY6IE9wdGltaXplIHBpY2tsZS5sb2FkKCkgYW5kIHBpY2tsZS5sb2FkcygpLCB1cCB0byAxMCUgZmFzdGVyCisgIHRvIGRlc2VyaWFsaXplIGEgbG90IG9mIHNtYWxsIG9iamVjdHMuCisKKy0gSXNzdWUgIzIxMjcxOiBOZXcga2V5d29yZCBvbmx5IHBhcmFtZXRlcnMgaW4gcmVzZXRfbW9jayBjYWxsLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzUxMjQ6IFBhc3RlIHdpdGggdGV4dCBzZWxlY3RlZCBub3cgcmVwbGFjZXMgdGhlIHNlbGVjdGlvbiBvbiBYMTEuCisgIFRoaXMgbWF0Y2hlcyBob3cgcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLAorICBhbmQgdHRrIHdpZGdldHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNDc1MDogU3dpdGNoIGFsbCBzY3JvbGxiYXJzIGluIElETEUgdG8gdHRrIHZlcnNpb25zLgorICBXaGVyZSBuZWVkZWQsIG1pbmltYWwgdGVzdHMgYXJlIGFkZGVkIHRvIGNvdmVyIGNoYW5nZXMuCisKKy0gSXNzdWUgIzI0NzU5OiBJRExFIHJlcXVpcmVzIHRrIDguNSBhbmQgYXZhaWxhYmlsaXR5IHR0ayB3aWRnZXRzLgorICBEZWxldGUgbm93IHVubmVlZGVkIHRrIHZlcnNpb24gdGVzdHMgYW5kIGNvZGUgZm9yIG9sZGVyIHZlcnNpb25zLgorICBBZGQgdGVzdCBmb3IgSURMRSBzeW50YXggY29sb3Jpem9lci4KKworLSBJc3N1ZSAjMjcyMzk6IGlkbGVsaWIubWFjb3N4LmlzWHl6VGsgZnVuY3Rpb25zIGluaXRpYWxpemUgYXMgbmVlZGVkLgorCistIElzc3VlICMyNzI2MjogbW92ZSBBcXVhIHVuYmluZGluZyBjb2RlLCB3aGljaCBlbmFibGUgY29udGV4dCBtZW51cywgdG8gbWF4b3N4LgorCistIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKKyAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KKworLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZCcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCisgIFRoZXNlIHBlcnNpc3RlZCBhZnRlciBvdGhlciB3YXJuaW5ncyB3ZXJlIHN1cHByZXNzZWQgaW4gIzIwNTY3LgorICBBcHBseSBTZXJoaXkgU3RvcmNoYWthJ3MgdXBkYXRlX2lkbGV0YXNrcyBzb2x1dGlvbiB0byBmb3VyIHRlc3QgZmlsZXMuCisgIFJlY29yZCB0aGlzIGFkZGl0aW9uYWwgYWR2aWNlIGluIGlkbGVfdGVzdC9SRUFETUUudHh0CisKKy0gSXNzdWUgIzIwNTY3OiBSZXZpc2UgaWRsZV90ZXN0L1JFQURNRS50eHQgd2l0aCBhZHZpY2UgYWJvdXQgYXZvaWRpbmcKKyAgdGsgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRlc3RzLiAgQXBwbHkgYWR2aWNlIHRvIHNldmVyYWwgSURMRSB0ZXN0cy4KKworLSBJc3N1ZSAjMjQyMjU6IFVwZGF0ZSBpZGxlbGliL1JFQURNRS50eHQgd2l0aCBuZXcgZmlsZSBuYW1lcworICBhbmQgZXZlbnQgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzI3MTU2OiBSZW1vdmUgb2Jzb2xldGUgY29kZSBub3QgdXNlZCBieSBJRExFLiAgUmVwbGFjZW1lbnRzOgorICAxLiBoZWxwLnR4dCwgcmVwbGFjZWQgYnkgaGVscC5odG1sLCBpcyBvdXQtb2YtZGF0ZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgorICBJdHMgZGVkaWNhdGVkIHZpZXdlciBoYXMgYmUgcmVwbGFjZWQgYnkgdGhlIGh0bWwgdmlld2VyIGluIGhlbHAucHkuCisgIDIuIGBgaW1wb3J0IGlkbGV2ZXI7IEkgPSBpZGxldmVyLklETEVfVkVSU0lPTmBgIGlzIHRoZSBzYW1lIGFzCisgIGBgaW1wb3J0IHN5czsgSSA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV1gYAorICAzLiBBZnRlciBgYG9iID0gc3RhY2t2aWV3ZXIuVmFyaWFibGVzVHJlZUl0ZW0oKmFyZ3MpYGAsCisgIGBgb2Iua2V5cygpID09IGxpc3Qob2Iub2JqZWN0LmtleXMpYGAuCisgIDQuIEluIG1hY29zYywgcnVubmluZ0FzT1NYQVBQID09IGlzQXF1YVRrOyBpZENhcmJvbkFxdWFUayA9PSBpc0NhcmJvblRrCisKKy0gSXNzdWUgIzI3MTE3OiBNYWtlIGNvbG9yaXplciBodGVzdCBhbmQgdHVydGxlZGVtbyB3b3JrIHdpdGggZGFyayB0aGVtZXMuCisgIE1vdmUgY29kZSBmb3IgY29uZmlndXJpbmcgdGV4dCB3aWRnZXQgY29sb3JzIHRvIGEgbmV3IGZ1bmN0aW9uLgorCistIElzc3VlICMyNDIyNTogUmVuYW1lIG1hbnkgYGlkbGVsaWIvKi5weWAgYW5kIGBpZGxlX3Rlc3QvdGVzdF8qLnB5YCBmaWxlcy4KKyAgRWRpdCBmaWxlcyB0byByZXBsYWNlIG9sZCBuYW1lcyB3aXRoIG5ldyBuYW1lcyB3aGVuIHRoZSBvbGQgbmFtZQorICByZWZlcnJlZCB0byB0aGUgbW9kdWxlIHJhdGhlciB0aGFuIHRoZSBjbGFzcyBpdCBjb250YWluZWQuCisgIFNlZSB0aGUgaXNzdWUgYW5kIElETEUgc2VjdGlvbiBpbiBXaGF0J3MgTmV3IGluIDMuNiBmb3IgbW9yZS4KKworLSBJc3N1ZSAjMjY2NzM6IFdoZW4gdGsgcmVwb3J0cyBmb250IHNpemUgYXMgMCwgY2hhbmdlIHRvIHNpemUgMTAuCisgIFN1Y2ggZm9udHMgb24gTGludXggcHJldmVudGVkIHRoZSBjb25maWd1cmF0aW9uIGRpYWxvZyBmcm9tIG9wZW5pbmcuCisKKy0gSXNzdWUgIzIxOTM5OiBBZGQgdGVzdCBmb3IgSURMRSdzIHBlcmNvbGF0b3IuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KKworLSBJc3N1ZSAjMjE2NzY6IEFkZCB0ZXN0IGZvciBJRExFJ3MgcmVwbGFjZSBkaWFsb2cuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KKworLSBJc3N1ZSAjMTg0MTA6IEFkZCB0ZXN0IGZvciBJRExFJ3Mgc2VhcmNoIGRpYWxvZy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgV2VzdGxleSBNYXJ0w61uZXouCisKKy0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgdW5kbyBkZWxlZ2F0b3IuICBQYXRjaCBtb3N0bHkgYnkKKyAgU2FpbWFkaGF2IEhlYmxpa2FyIC4KKworLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCisKKy0gSXNzdWUgIzIzOTc3OiBBZGQgbW9yZSBhc3NlcnRzIHRvIHRlc3RfZGVsZWdhdG9yLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE2NDg0OiBDaGFuZ2UgdGhlIGRlZmF1bHQgUFlUSE9ORE9DUyBVUkwgdG8gImh0dHBzOiIsIGFuZCBmaXggdGhlCisgIHJlc3VsdGluZyBsaW5rcyB0byB1c2UgbG93ZXJjYXNlLiAgUGF0Y2ggYnkgU2VhbiBSb2RtYW4sIHRlc3QgYnkgS2F1c2hpaworICBOYWRpa3VkaXRpLgorCistIElzc3VlICMyNDEzNjogRG9jdW1lbnQgdGhlIG5ldyBQRVAgNDQ4IHVucGFja2luZyBzeW50YXggb2YgMy41LgorCistIElzc3VlICMyMjU1ODogQWRkIHJlbWFpbmluZyBkb2MgbGlua3MgdG8gc291cmNlIGNvZGUgZm9yIFB5dGhvbi1jb2RlZCBtb2R1bGVzLgorICBQYXRjaCBieSBZb25pIExhdmkuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNTI4NTogcmVncnRlc3Qgbm93IHVzZXMgc3VicHJvY2Vzc2VzIHdoZW4gdGhlIC1qMSBjb21tYW5kIGxpbmUgb3B0aW9uCisgIGlzIHVzZWQ6IGVhY2ggdGVzdCBmaWxlIHJ1bnMgaW4gYSBmcmVzaCBjaGlsZCBwcm9jZXNzLiBCZWZvcmUsIHRoZSAtajEgb3B0aW9uCisgIHdhcyBpZ25vcmVkLgorCistIElzc3VlICMyNTI4NTogVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQgc2NyaXB0IG5vdyB1c2VzIC1qMSBieSBkZWZhdWx0IHRvIHJ1bgorICBlYWNoIHRlc3QgZmlsZSBpbiBmcmVzaCBjaGlsZCBwcm9jZXNzLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI3MDY0OiBUaGUgcHkuZXhlIGxhdW5jaGVyIG5vdyBkZWZhdWx0cyB0byBQeXRob24gMy4KKyAgVGhlIFdpbmRvd3MgbGF1bmNoZXIgYGBweS5leGVgYCBubyBsb25nZXIgcHJlZmVycyBhbiBpbnN0YWxsZWQKKyAgUHl0aG9uIDIgdmVyc2lvbiBvdmVyIFB5dGhvbiAzIGJ5IGRlZmF1bHQgd2hlbiB1c2VkIGludGVyYWN0aXZlbHkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNzIyOTogRml4IHRoZSBjcm9zcy1jb21waWxpbmcgcGdlbiBydWxlIGZvciBpbi10cmVlIGJ1aWxkcy4gIFBhdGNoCisgIGJ5IFhhdmllciBkZSBHYXllLgorCistIElzc3VlICMyNjkzMDogVXBkYXRlIE9TIFggMTAuNSsgMzItYml0LW9ubHkgaW5zdGFsbGVyIHRvIGJ1aWxkCisgIGFuZCBsaW5rIHdpdGggT3BlblNTTCAxLjAuMmguCisKK01pc2MKKy0tLS0KKworLSBJc3N1ZSAjMTc1MDAsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3B5dGhvbmRvdG9yZy9pc3N1ZXMvOTQ1OiBSZW1vdmUKKyAgdW51c2VkIGFuZCBvdXRkYXRlZCBpY29ucy4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgdGhlIFB5T1NfRlNQYXRoKCkgZnVuY3Rpb24gKHBhcnQgb2YgUEVQIDUxOSkuCisKKy0gSXNzdWUgIzI2MjgyOiBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSBub3cgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5CisgIHBhcmFtZXRlcnMuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMyNjI4MjogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwb3J0cyBwb3NpdGlvbmFsLW9ubHkgYW5kIGtleXdvcmQKKyAgcGFyYW1ldGVycyBpbiB0aGUgc2FtZSBmdW5jdGlvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE2LTA1LTE2CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCiAtIElzc3VlICMyMDA0MTogRml4ZWQgVHlwZUVycm9yIHdoZW4gZnJhbWUuZl90cmFjZSBpcyBzZXQgdG8gTm9uZS4KICAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKQEAgLTQ0NywxMSArMTM0NywxNyBAQAogCiAtIElzc3VlICMyNjk5MTogRml4IHBvc3NpYmxlIHJlZmxlYWsgd2hlbiBjcmVhdGluZyBhIGZ1bmN0aW9uIHdpdGggYW5ub3RhdGlvbnMuCiAKLS0gSXNzdWUgIzI3MDM5OiBGaXhlZCBieXRlYXJyYXkucmVtb3ZlKCkgZm9yIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgUGF0Y2ggYnkKLSAgSm9lIEpldm5pay4KKy0gSXNzdWUgIzI3MDM5OiBGaXhlZCBieXRlYXJyYXkucmVtb3ZlKCkgZm9yIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgQmFzZWQgb24KKyAgcGF0Y2ggYnkgSm9lIEpldm5pay4KIAogLSBJc3N1ZSAjMjM2NDA6IGludC5mcm9tX2J5dGVzKCkgbm8gbG9uZ2VyIGJ5cGFzc2VzIGNvbnN0cnVjdG9ycyBmb3Igc3ViY2xhc3Nlcy4KIAorLSBJc3N1ZSAjMjcwMDU6IE9wdGltaXplZCB0aGUgZmxvYXQuZnJvbWhleCgpIGNsYXNzIG1ldGhvZCBmb3IgZXhhY3QgZmxvYXQuCisgIEl0IGlzIG5vdyAyIHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMTg1MzE6IFNpbmdsZSB2YXIta2V5d29yZCBhcmd1bWVudCBvZiBkaWN0IHN1YnR5cGUgd2FzIHBhc3NlZAorICB1bnNjYXRoZWQgdG8gdGhlIEMtZGVmaW5lZCBmdW5jdGlvbi4gIE5vdyBpdCBpcyBjb252ZXJ0ZWQgdG8gZXhhY3QgZGljdC4KKwogLSBJc3N1ZSAjMjY4MTE6IGdjLmdldF9vYmplY3RzKCkgbm8gbG9uZ2VyIGNvbnRhaW5zIGEgYnJva2VuIHR1cGxlIHdpdGggTlVMTAogICBwb2ludGVyLgogCkBAIC00NjEsMTEgKzEzNjcsMjYgQEAKICAgaW50ZXJwb2xhdGlvbiBpbiAucHlwaXJjIGZpbGVzLCBtYXRjaGluZyBiZWhhdmlvciBpbiBQeXRob24KICAgMi43IGFuZCBTZXR1cHRvb2xzIDE5LjAuCiAKKy0gSXNzdWUgIzI2MjQ5OiBNZW1vcnkgZnVuY3Rpb25zIG9mIHRoZSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGRvbWFpbgorICAoOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWApIG5vdyB1c2UgdGhlIDpyZWY6YHB5bWFsbG9jIGFsbG9jYXRvciA8cHltYWxsb2M+YAorICByYXRoZXIgdGhhbiBzeXN0ZW0gOmM6ZnVuYzpgbWFsbG9jYC4gQXBwbGljYXRpb25zIGNhbGxpbmcKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCBjYW4gbm93IGNyYXNoOiB1c2UKKyAgYGBQWVRIT05NQUxMT0M9ZGVidWdgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB2YWxpZGF0ZSB0aGUgdXNhZ2Ugb2YgbWVtb3J5CisgIGFsbG9jYXRvcnMgaW4geW91ciBhcHBsaWNhdGlvbi4KKworLSBJc3N1ZSAjMjY4MDI6IE9wdGltaXplIGZ1bmN0aW9uIGNhbGxzIG9ubHkgdXNpbmcgdW5wYWNraW5nIGxpa2UKKyAgYGBmdW5jKCp0dXBsZSlgYCAobm8gb3RoZXIgcG9zaXRpb25hbCBhcmd1bWVudCwgbm8ga2V5d29yZCk6IGF2b2lkIGNvcHlpbmcKKyAgdGhlIHR1cGxlLiBQYXRjaCB3cml0dGVuIGJ5IEpvZSBKZXZuaWsuCisKIC0gSXNzdWUgIzI2NjU5OiBNYWtlIHRoZSBidWlsdGluIHNsaWNlIHR5cGUgc3VwcG9ydCBjeWNsZSBjb2xsZWN0aW9uLgogCiAtIElzc3VlICMyNjcxODogc3VwZXIuX19pbml0X18gbm8gbG9uZ2VyIGxlYWtzIG1lbW9yeSBpZiBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCiAgIE5PVEU6IEEgZGlyZWN0IGNhbGwgb2Ygc3VwZXIuX19pbml0X18gaXMgbm90IGVuZG9yc2VkIQogCistIElzc3VlICMyNzEzODogRml4IHRoZSBkb2MgY29tbWVudCBmb3IgRmlsZUZpbmRlci5maW5kX3NwZWMoKS4KKworLSBJc3N1ZSAjMjcxNDc6IE1lbnRpb24gUEVQIDQyMCBpbiB0aGUgaW1wb3J0bGliIGRvY3MuCisKIC0gSXNzdWUgIzI1MzM5OiBQWVRIT05JT0VOQ09ESU5HIG5vdyBoYXMgcHJpb3JpdHkgb3ZlciBsb2NhbGUgaW4gc2V0dGluZyB0aGUKICAgZXJyb3IgaGFuZGxlciBmb3Igc3RkaW4gYW5kIHN0ZG91dC4KIApAQCAtNDc0LDkgKzEzOTUsNDEgQEAKICAgYnl0ZWFycmF5LCBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIE9yZGVyZWREaWN0LCBjb3JyZXNwb25kaW5nCiAgIHZpZXdzIGFuZCBvcy5zY2FuZGlyKCkgaXRlcmF0b3IuCiAKKy0gSXNzdWUgIzI2NTc0OiBPcHRpbWl6ZSBgYGJ5dGVzLnJlcGxhY2UoYicnLCBiJy4nKWBgIGFuZAorICBgYGJ5dGVhcnJheS5yZXBsYWNlKGInJywgYicuJylgYC4gUGF0Y2ggd3JpdHRlbiBieSBKb3NoIFNuaWRlci4KKwogLSBJc3N1ZSAjMjY1ODE6IElmIGNvZGluZyBjb29raWUgaXMgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzIG9uIGEgbGluZSBpbgogICBQeXRob24gc291cmNlIGNvZGUgZmlsZSwgb25seSB0aGUgZmlyc3Qgb25lIGlzIHRha2VuIHRvIGFjY291bnQuCiAKKy0gSXNzdWUgIzE5NzExOiBBZGQgdGVzdHMgZm9yIHJlbG9hZGluZyBuYW1lc3BhY2UgcGFja2FnZXMuCisKKy0gSXNzdWUgIzIxMDk5OiBTd2l0Y2ggYXBwbGljYWJsZSBpbXBvcnRsaWIgdGVzdHMgdG8gdXNlIFBFUCA0NTEgQVBJLgorCistIElzc3VlICMyNjU2MzogRGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG5vdyByYWlzZSBhIGZhdGFsCisgIGVycm9yIGlmIGZ1bmN0aW9ucyBvZiB0aGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBmYW1pbHkgYXJlIGNhbGxlZCB3aXRob3V0CisgIGhvbGRpbmcgdGhlIEdJTC4KKworLSBJc3N1ZSAjMjY1NjQ6IE9uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG5vdyB1c2UKKyAgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzCisgIGFsbG9jYXRlZC4KKworLSBJc3N1ZSAjMjY1NTg6IFRoZSBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgorICA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgIG5vdyBkZXRlY3Qgd2hlbiBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRob3V0CisgIGhvbGRpbmcgdGhlIEdJTC4KKworLSBJc3N1ZSAjMjY1MTY6IEFkZCA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCB0aGUKKyAgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIGFuZC9vciBpbnN0YWxsIGRlYnVnIGhvb2tzLgorCistIElzc3VlICMyNjUxNjogVGhlIDpjOmZ1bmM6YFB5TWVtX1NldHVwRGVidWdIb29rc2AgZnVuY3Rpb24gY2FuIG5vdyBhbHNvIGJlCisgIHVzZWQgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKworLSBJc3N1ZSAjMjY1MTY6IFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NTVEFUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIG5vdworICBhbHNvIGJlIHVzZWQgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4gSXQgbm93IGhhcyBubyBlZmZlY3QgaWYKKyAgc2V0IHRvIGFuIGVtcHR5IHN0cmluZy4KKworLSBJc3N1ZSAjMjY1MTY6IEluIGRlYnVnIG1vZGUsIGRlYnVnIGhvb2tzIGFyZSBub3cgYWxzbyBpbnN0YWxsZWQgb24gUHl0aG9uCisgIG1lbW9yeSBhbGxvY2F0b3JzIHdoZW4gUHl0aG9uIGlzIGNvbmZpZ3VyZWQgd2l0aG91dCBweW1hbGxvYy4KKwogLSBJc3N1ZSAjMjY0NjQ6IEZpeCBzdHIudHJhbnNsYXRlKCkgd2hlbiBzdHJpbmcgaXMgQVNDSUkgYW5kIGZpcnN0IHJlcGxhY2VtZW50cwogICByZW1vdmVzIGNoYXJhY3RlciwgYnV0IG5leHQgcmVwbGFjZW1lbnQgdXNlcyBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIgb3IgYQogICBzdHJpbmcgbG9uZ2VyIHRoYW4gMSBjaGFyYWN0ZXIuIFJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiBQeXRob24gMy41LjAuCkBAIC00ODksMTEgKzE0NDIsMzcgQEAKIC0gSXNzdWUgIzI2MzAyOiBDb3JyZWN0IGJlaGF2aW9yIHRvIHJlamVjdCBjb21tYSBhcyBhIGxlZ2FsIGNoYXJhY3RlciBmb3IKICAgY29va2llIG5hbWVzLgogCistIElzc3VlICMyNjEzNjogVXBncmFkZSB0aGUgd2FybmluZyB3aGVuIGEgZ2VuZXJhdG9yIHJhaXNlcyBTdG9wSXRlcmF0aW9uCisgIGZyb20gUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyB0byBEZXByZWNhdGlvbldhcm5pbmcuICBQYXRjaCBieSBBbmlzaAorICBTaGFoLgorCistIElzc3VlICMyNjIwNDogVGhlIGNvbXBpbGVyIG5vdyBpZ25vcmVzIGFsbCBjb25zdGFudCBzdGF0ZW1lbnRzOiBieXRlcywgc3RyLAorICBpbnQsIGZsb2F0LCBjb21wbGV4LCBuYW1lIGNvbnN0YW50cyAoTm9uZSwgRmFsc2UsIFRydWUpLCBFbGxpcHNpcworICBhbmQgYXN0LkNvbnN0YW50OyBub3Qgb25seSBzdHIgYW5kIGludC4gRm9yIGV4YW1wbGUsIGBgMS4wYGAgaXMgbm93IGlnbm9yZWQKKyAgaW4gYGBkZWYgZigpOiAxLjBgYC4KKwogLSBJc3N1ZSAjNDgwNjogQXZvaWQgbWFza2luZyB0aGUgb3JpZ2luYWwgVHlwZUVycm9yIGV4Y2VwdGlvbiB3aGVuIHVzaW5nIHN0YXIKICAgKCopIHVucGFja2luZyBpbiBmdW5jdGlvbiBjYWxscy4gIEJhc2VkIG9uIHBhdGNoIGJ5IEhhZ2VuIEbDvHJzdGVuYXUgYW5kCiAgIERhbmllbCBVcmJhbi4KIAotLSBJc3N1ZSAjMjcxMzg6IEZpeCB0aGUgZG9jIGNvbW1lbnQgZm9yIEZpbGVGaW5kZXIuZmluZF9zcGVjKCkuCistIElzc3VlICMyNjE0NjogQWRkIGEgbmV3IGtpbmQgb2YgQVNUIG5vZGU6IGBgYXN0LkNvbnN0YW50YGAuIEl0IGNhbiBiZSB1c2VkCisgIGJ5IGV4dGVybmFsIEFTVCBvcHRpbWl6ZXJzLCBidXQgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGVtaXQgZGlyZWN0bHkgc3VjaAorICBub2RlLgorCistIElzc3VlICMyMzYwMTogIFNwZWQtdXAgYWxsb2NhdGlvbiBvZiBkaWN0IGtleSBvYmplY3RzIGJ5IHVzaW5nIFB5dGhvbidzCisgIHNtYWxsIG9iamVjdCBhbGxvY2F0b3IuICAoQ29udHJpYnV0ZWQgYnkgSnVsaWFuIFRheWxvci4pCisKKy0gSXNzdWUgIzE4MDE4OiBJbXBvcnQgcmFpc2VzIEltcG9ydEVycm9yIGluc3RlYWQgb2YgU3lzdGVtRXJyb3IgaWYgYSByZWxhdGl2ZQorICBpbXBvcnQgaXMgYXR0ZW1wdGVkIHdpdGhvdXQgYSBrbm93biBwYXJlbnQgcGFja2FnZS4KKworLSBJc3N1ZSAjMjU4NDM6IFdoZW4gY29tcGlsaW5nIGNvZGUsIGRvbid0IG1lcmdlIGNvbnN0YW50cyBpZiB0aGV5IGFyZSBlcXVhbAorICBidXQgaGF2ZSBhIGRpZmZlcmVudCB0eXBlcy4gRm9yIGV4YW1wbGUsIGBgZjEsIGYyID0gbGFtYmRhOiAxLCBsYW1iZGE6IDEuMGBgCisgIGlzIG5vdyBjb3JyZWN0bHkgY29tcGlsZWQgdG8gdHdvIGRpZmZlcmVudCBmdW5jdGlvbnM6IGBgZjEoKWBgIHJldHVybnMgYGAxYGAKKyAgKGBgaW50YGApIGFuZCBgYGYyKClgYCByZXR1cm5zIGBgMS4wYGAgKGBgZmxvYXRgYCksIGV2ZW4gaWYgYGAxYGAgYW5kIGBgMS4wYGAKKyAgYXJlIGVxdWFsLgorCistIElzc3VlICMyNjEwNzogVGhlIGZvcm1hdCBvZiB0aGUgYGBjb19sbm90YWJgYCBhdHRyaWJ1dGUgb2YgY29kZSBvYmplY3RzCisgIGNoYW5nZXMgdG8gc3VwcG9ydCBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4KIAogLSBJc3N1ZSAjMjYxNTQ6IEFkZCBhIG5ldyBwcml2YXRlIF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpIGZ1bmN0aW9uIHRvIGdldAogICB0aGUgY3VycmVudCBQeXRob24gdGhyZWFkIHN0YXRlLCBidXQgZG9uJ3QgaXNzdWUgYSBmYXRhbCBlcnJvciBpZiBpdCBpcyBOVUxMLgpAQCAtNTAyLDE1ICsxNDgxLDggQEAKICAgUHl0aG9uIDMuNS4xIHRvIGhpZGUgdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIG9mIGF0b21pYyBDIHR5cGVzLCB0byBhdm9pZAogICBjb21waWxlciBpc3N1ZXMuCiAKLS0gSXNzdWUgIzI2MTk0OiAgRGVxdWUuaW5zZXJ0KCkgZ2F2ZSBvZGQgcmVzdWx0cyBmb3IgYm91bmRlZCBkZXF1ZXMgdGhhdCBoYWQKLSAgcmVhY2hlZCB0aGVpciBtYXhpbXVtIHNpemUuICBOb3cgYW4gSW5kZXhFcnJvciB3aWxsIGJlIHJhaXNlZCB3aGVuIGF0dGVtcHRpbmcKLSAgdG8gaW5zZXJ0IGludG8gYSBmdWxsIGRlcXVlLgotCi0tIElzc3VlICMyNTg0MzogV2hlbiBjb21waWxpbmcgY29kZSwgZG9uJ3QgbWVyZ2UgY29uc3RhbnRzIGlmIHRoZXkgYXJlIGVxdWFsCi0gIGJ1dCBoYXZlIGEgZGlmZmVyZW50IHR5cGVzLiBGb3IgZXhhbXBsZSwgYGBmMSwgZjIgPSBsYW1iZGE6IDEsIGxhbWJkYTogMS4wYGAKLSAgaXMgbm93IGNvcnJlY3RseSBjb21waWxlZCB0byB0d28gZGlmZmVyZW50IGZ1bmN0aW9uczogYGBmMSgpYGAgcmV0dXJucyBgYDFgYAotICAoYGBpbnRgYCkgYW5kIGBgZjIoKWBgIHJldHVybnMgYGAxLjBgYCAoYGBpbnRgYCksIGV2ZW4gaWYgYGAxYGAgYW5kIGBgMS4wYGAKLSAgYXJlIGVxdWFsLgorLSBJc3N1ZSAjMjU3OTE6IElmIF9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCBvciBpZiBuZWl0aGVyIF9fcGFja2FnZV9fIG9yCisgIF9fc3BlY19fIGFyZSBkZWZpbmVkIHRoZW4gSW1wb3J0V2FybmluZyBpcyByYWlzZWQuCiAKIC0gSXNzdWUgIzIyOTk1OiBbVVBEQVRFXSBDb21tZW50IG91dCB0aGUgb25lIG9mIHRoZSBwaWNrbGVhYmlsaXR5IHRlc3RzIGluCiAgIF9QeU9iamVjdF9HZXRTdGF0ZSgpIGR1ZSB0byByZWdyZXNzaW9ucyBvYnNlcnZlZCBpbiBDeXRob24tYmFzZWQgcHJvamVjdHMuCkBAIC01MzcsNyArMTUwOSwxMCBAQAogLSBJc3N1ZSAjMjU3MDk6IEZpeGVkIHByb2JsZW0gd2l0aCBpbi1wbGFjZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiBhbmQgdXRmLTgKICAgY2FjaGUuCiAKLS0gSXNzdWUgIzI3MTQ3OiBNZW50aW9uIFBFUCA0MjAgaW4gdGhlIGltcG9ydGxpYiBkb2NzLgorLSBJc3N1ZSAjNTMxOTogTmV3IFB5X0ZpbmFsaXplRXgoKSBBUEkgYWxsb3dpbmcgUHl0aG9uIHRvIHNldCBhbiBleGl0IHN0YXR1cworICBvZiAxMjAgb24gZmFpbHVyZSB0byBmbHVzaCBidWZmZXJlZCBzdHJlYW1zLgorCistIElzc3VlICMyNTQ4NTogdGVsbmV0bGliLlRlbG5ldCBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIuCiAKIC0gSXNzdWUgIzI0MDk3OiBGaXhlZCBjcmFzaCBpbiBvYmplY3QuX19yZWR1Y2VfXygpIGlmIHNsb3QgbmFtZSBpcyBmcmVlZCBpbnNpZGUKICAgX19nZXRhdHRyX18uCkBAIC01NDYsNiArMTUyMSw4OCBAQAogICBfX2J5dGVzX18sIF9fdHJ1bmNfXywgYW5kIF9fZmxvYXRfXyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIHN1YmNsYXNzZXMgb2YKICAgYnl0ZXMsIGludCwgYW5kIGZsb2F0IHRvIHN1YmNsYXNzZXMgb2YgYnl0ZXMsIGludCwgYW5kIGZsb2F0IGNvcnJlc3BvbmRpbmdseS4KIAorLSBJc3N1ZSAjMjU2MzA6IEZpeCBhIHBvc3NpYmxlIHNlZ2ZhdWx0IGR1cmluZyBhcmd1bWVudCBwYXJzaW5nIGluIGZ1bmN0aW9ucworICB0aGF0IGFjY2VwdCBmaWxlc3lzdGVtIHBhdGhzLgorCistIElzc3VlICMyMzU2NDogRml4ZWQgYSBwYXJ0aWFsbHkgYnJva2VuIHNhbml0eSBjaGVjayBpbiB0aGUgX3Bvc2l4c3VicHJvY2VzcworICBpbnRlcm5hbHMgcmVnYXJkaW5nIGhvdyBmZHNfdG9fcGFzcyB3ZXJlIHBhc3NlZCB0byB0aGUgY2hpbGQuICBUaGUgYnVnIGhhZAorICBubyBhY3R1YWwgaW1wYWN0IGFzIHN1YnByb2Nlc3MucHkgYWxyZWFkeSBhdm9pZGVkIGl0LgorCistIElzc3VlICMyNTM4ODogRml4ZWQgdG9rZW5pemVyIGNyYXNoIHdoZW4gcHJvY2Vzc2luZyB1bmRlY29kYWJsZSBzb3VyY2UgY29kZQorICB3aXRoIGEgbnVsbCBieXRlLgorCistIElzc3VlICMyNTQ2MjogVGhlIGhhc2ggb2YgdGhlIGtleSBub3cgaXMgY2FsY3VsYXRlZCBvbmx5IG9uY2UgaW4gbW9zdAorICBvcGVyYXRpb25zIGluIEMgaW1wbGVtZW50YXRpb24gb2YgT3JkZXJlZERpY3QuCisKKy0gSXNzdWUgIzIyOTk1OiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIF9fcmVkdWNlX18gYW5kIF9fcmVkdWNlX2V4X18gbm93CisgIHJlamVjdHMgYnVpbHRpbiB0eXBlcyB3aXRoIG5vdCBkZWZpbmVkIF9fbmV3X18uCisKKy0gSXNzdWUgIzI0ODAyOiBBdm9pZCBidWZmZXIgb3ZlcnJlYWRzIHdoZW4gaW50KCksIGZsb2F0KCksIGNvbXBpbGUoKSwgZXhlYygpCisgIGFuZCBldmFsKCkgYXJlIHBhc3NlZCBieXRlcy1saWtlIG9iamVjdHMuICBUaGVzZSBvYmplY3RzIGFyZSBub3QKKyAgbmVjZXNzYXJpbHkgdGVybWluYXRlZCBieSBhIG51bGwgYnl0ZSwgYnV0IHRoZSBmdW5jdGlvbnMgYXNzdW1lZCB0aGV5IHdlcmUuCisKKy0gSXNzdWUgIzI1NTU1OiBGaXggcGFyc2VyIGFuZCBBU1Q6IGZpbGwgbGluZW5vIGFuZCBjb2xfb2Zmc2V0IG9mICJhcmciIG5vZGUKKyAgd2hlbiBjb21waWxpbmcgQVNUIGZyb20gUHl0aG9uIG9iamVjdHMuCisKKy0gSXNzdWUgIzI0NzI2OiBGaXhlZCBhIGNyYXNoIGFuZCBsZWFraW5nIE5VTEwgaW4gcmVwcigpIG9mIE9yZGVyZWREaWN0IHRoYXQKKyAgd2FzIG11dGF0ZWQgYnkgZGlyZWN0IGNhbGxzIG9mIGRpY3QgbWV0aG9kcy4KKworLSBJc3N1ZSAjMjU0NDk6IEl0ZXJhdGluZyBPcmRlcmVkRGljdCB3aXRoIGtleXMgd2l0aCB1bnN0YWJsZSBoYXNoIG5vdyByYWlzZXMKKyAgS2V5RXJyb3IgaW4gQyBpbXBsZW1lbnRhdGlvbnMgYXMgd2VsbCBhcyBpbiBQeXRob24gaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzI1Mzk1OiBGaXhlZCBjcmFzaCB3aGVuIGhpZ2hseSBuZXN0ZWQgT3JkZXJlZERpY3Qgc3RydWN0dXJlcyB3ZXJlCisgIGdhcmJhZ2UgY29sbGVjdGVkLgorCistIElzc3VlICMyNTQwMTogT3B0aW1pemUgYnl0ZXMuZnJvbWhleCgpIGFuZCBieXRlYXJyYXkuZnJvbWhleCgpOiB0aGV5IGFyZSBub3cKKyAgYmV0d2VlbiAyeCBhbmQgMy41eCBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1Mzk5OiBPcHRpbWl6ZSBieXRlYXJyYXkgJSBhcmdzIHVzaW5nIHRoZSBuZXcgcHJpdmF0ZSBfUHlCeXRlc1dyaXRlcgorICBBUEkuIEZvcm1hdHRpbmcgaXMgbm93IGJldHdlZW4gMi41IGFuZCA1IHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjUyNzQ6IHN5cy5zZXRyZWN1cnNpb25saW1pdCgpIG5vdyByYWlzZXMgYSBSZWN1cnNpb25FcnJvciBpZiB0aGUgbmV3CisgIHJlY3Vyc2lvbiBsaW1pdCBpcyB0b28gbG93IGRlcGVuZGluZyBhdCB0aGUgY3VycmVudCByZWN1cnNpb24gZGVwdGguIE1vZGlmeQorICBhbHNvIHRoZSAibG93ZXItd2F0ZXIgbWFyayIgZm9ybXVsYSB0byBtYWtlIGl0IG1vbm90b25pYy4gVGhpcyBtYXJrIGlzIHVzZWQKKyAgdG8gZGVjaWRlIHdoZW4gdGhlIG92ZXJmbG93ZWQgZmxhZyBvZiB0aGUgdGhyZWFkIHN0YXRlIGlzIHJlc2V0LgorCistIElzc3VlICMyNDQwMjogRml4IGlucHV0KCkgdG8gcHJvbXB0IHRvIHRoZSByZWRpcmVjdGVkIHN0ZG91dCB3aGVuCisgIHN5cy5zdGRvdXQuZmlsZW5vKCkgZmFpbHMuCisKKy0gSXNzdWUgIzI1MzQ5OiBPcHRpbWl6ZSBieXRlcyAlIGFyZ3MgdXNpbmcgdGhlIG5ldyBwcml2YXRlIF9QeUJ5dGVzV3JpdGVyIEFQSS4KKyAgRm9ybWF0dGluZyBpcyBub3cgdXAgdG8gMiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI0ODA2OiBQcmV2ZW50IGJ1aWx0aW4gdHlwZXMgdGhhdCBhcmUgbm90IGFsbG93ZWQgdG8gYmUgc3ViY2xhc3NlZCBmcm9tCisgIGJlaW5nIHN1YmNsYXNzZWQgdGhyb3VnaCBtdWx0aXBsZSBpbmhlcml0YW5jZS4KKworLSBJc3N1ZSAjMjUzMDE6IFRoZSBVVEYtOCBkZWNvZGVyIGlzIG5vdyB1cCB0byAxNSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvcgorICBoYW5kbGVyczogYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAgYW5kIGBgc3Vycm9nYXRlZXNjYXBlYGAuCisKKy0gSXNzdWUgIzI0ODQ4OiBGaXhlZCBhIG51bWJlciBvZiBidWdzIGluIFVURi03IGRlY29kaW5nIG9mIG1pc2Zvcm1lZCBkYXRhLgorCistIElzc3VlICMyNTI2NzogVGhlIFVURi04IGVuY29kZXIgaXMgbm93IHVwIHRvIDc1IHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yCisgIGhhbmRsZXJzOiBgYGlnbm9yZWBgLCBgYHJlcGxhY2VgYCwgYGBzdXJyb2dhdGVlc2NhcGVgYCwgYGBzdXJyb2dhdGVwYXNzYGAuCisgIFBhdGNoIGNvLXdyaXR0ZW4gd2l0aCBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNTI4MDogSW1wb3J0IHRyYWNlIG1lc3NhZ2VzIGVtaXR0ZWQgaW4gdmVyYm9zZSAoLXYpIG1vZGUgYXJlIG5vCisgIGxvbmdlciBmb3JtYXR0ZWQgdHdpY2UuCisKKy0gSXNzdWUgIzI1MjI3OiBPcHRpbWl6ZSBBU0NJSSBhbmQgbGF0aW4xIGVuY29kZXJzIHdpdGggdGhlIGBgc3Vycm9nYXRlZXNjYXBlYGAKKyAgZXJyb3IgaGFuZGxlcjogdGhlIGVuY29kZXJzIGFyZSBub3cgdXAgdG8gMyB0aW1lcyBhcyBmYXN0LiBJbml0aWFsIHBhdGNoCisgIHdyaXR0ZW4gYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjUwMDM6IE9uIFNvbGFyaXMgMTEuMyBvciBuZXdlciwgb3MudXJhbmRvbSgpIG5vdyB1c2VzIHRoZQorICBnZXRyYW5kb20oKSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBnZXRlbnRyb3B5KCkgZnVuY3Rpb24uIFRoZSBnZXRlbnRyb3B5KCkKKyAgZnVuY3Rpb24gaXMgYmxvY2tpbmcgdG8gZ2VuZXJhdGUgdmVyeSBnb29kIHF1YWxpdHkgZW50cm9weSwgb3MudXJhbmRvbSgpCisgIGRvZXNuJ3QgbmVlZCBzdWNoIGhpZ2gtcXVhbGl0eSBlbnRyb3B5LgorCistIElzc3VlICM5MjMyOiBNb2RpZnkgUHl0aG9uJ3MgZ3JhbW1hciB0byBhbGxvdyB0cmFpbGluZyBjb21tYXMgaW4gdGhlCisgIGFyZ3VtZW50IGxpc3Qgb2YgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4gIEZvciBleGFtcGxlLCAiZGVmIGYoXCosIGEgPQorICAzLCk6IHBhc3MiIGlzIG5vdyBsZWdhbC4gUGF0Y2ggZnJvbSBNYXJrIERpY2tpbnNvbi4KKworLSBJc3N1ZSAjMjQ5NjU6IEltcGxlbWVudCBQRVAgNDk4ICJMaXRlcmFsIFN0cmluZyBJbnRlcnBvbGF0aW9uIi4gVGhpcworICBhbGxvd3MgeW91IHRvIGVtYmVkIGV4cHJlc3Npb25zIGluc2lkZSBmLXN0cmluZ3MsIHdoaWNoIGFyZQorICBjb252ZXJ0ZWQgdG8gbm9ybWFsIHN0cmluZ3MgYXQgcnVuIHRpbWUuIEdpdmVuIHg9MywgdGhlbgorICBmJ3ZhbHVlPXt4fScgPT0gJ3ZhbHVlPTMnLiBQYXRjaCBieSBFcmljIFYuIFNtaXRoLgorCiAtIElzc3VlICMyNjQ3ODogRml4IHNlbWFudGljIGJ1Z3Mgd2hlbiB1c2luZyBiaW5hcnkgb3BlcmF0b3JzIHdpdGggZGljdGlvbmFyeQogICB2aWV3cyBhbmQgdHVwbGVzLgogCkBAIC01NTQsNzkgKzE2MTEsMjcgQEAKIAogLSBJc3N1ZSAjMjU2NjA6IEZpeCBUQUIga2V5IGJlaGF2aW91ciBpbiBSRVBMIHdpdGggcmVhZGxpbmUuCiAKKy0gSXNzdWUgIzI2Mjg4OiBPcHRpbWl6ZSBQeUxvbmdfQXNEb3VibGUuCisKKy0gSXNzdWVzICMyNjI4OSBhbmQgIzI2MzE1OiBPcHRpbWl6ZSBmbG9vciBhbmQgbW9kdWxvIGRpdmlzaW9uIGZvcgorICBzaW5nbGUtZGlnaXQgbG9uZ3MuICBNaWNyb2JlbmNobWFya3Mgc2hvdyAyLTIuNXggaW1wcm92ZW1lbnQuICBCdWlsdC1pbgorICAnZGl2bW9kJyBmdW5jdGlvbiBpcyBub3cgYWxzbyB+MTAlIGZhc3Rlci4KKwogLSBJc3N1ZSAjMjU4ODc6IFJhaXNlIGEgUnVudGltZUVycm9yIHdoZW4gYSBjb3JvdXRpbmUgb2JqZWN0IGlzIGF3YWl0ZWQKICAgbW9yZSB0aGFuIG9uY2UuCiAKLS0gSXNzdWUgIzI3MjQzOiBVcGRhdGUgdGhlIF9fYWl0ZXJfXyBwcm90b2NvbDogaW5zdGVhZCBvZiByZXR1cm5pbmcKLSAgYW4gYXdhaXRhYmxlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yLCB0aGUgYXN5bmNocm9ub3VzCi0gIGl0ZXJhdG9yIHNob3VsZCBiZSByZXR1cm5lZCBkaXJlY3RseS4gIERvaW5nIHRoZSBmb3JtZXIgd2lsbCB0cmlnZ2VyIGEKLSAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KLQotCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY1NTY6IFVwZGF0ZSBleHBhdCB0byAyLjEuMSwgZml4ZXMgQ1ZFLTIwMTUtMTI4My4KLQotLSBbU2VjdXJpdHldIEZpeCBUTFMgc3RyaXBwaW5nIHZ1bG5lcmFiaWxpdHkgaW4gc210cGxpYiwgQ1ZFLTIwMTYtMDc3Mi4KLSAgUmVwb3J0ZWQgYnkgVGVhbSBPc3RzdHJvbQotCi0tIElzc3VlICMyMTM4NjogSW1wbGVtZW50IG1pc3NpbmcgSVB2NEFkZHJlc3MuaXNfZ2xvYmFsIHByb3BlcnR5LiAgSXQgd2FzCi0gIGRvY3VtZW50ZWQgc2luY2UgMDdhNTYxMGJhZTlkLiAgSW5pdGlhbCBwYXRjaCBieSBSb2dlciBMdWV0aGkuCi0KLS0gSXNzdWUgIzIwOTAwOiBkaXN0dXRpbHMgcmVnaXN0ZXIgY29tbWFuZCBub3cgZGVjb2RlcyBIVFRQIHJlc3BvbnNlcwotICBjb3JyZWN0bHkuICBJbml0aWFsIHBhdGNoIGJ5IGluZ3JpZC4KLQotLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBwcm92aWRlcyBzZXZlcmFsIG5ldyBjbGFzc2VzIGFuZAotICBmZWF0dXJlczogQG92ZXJsb2FkIG91dHNpZGUgc3R1YnMsIFJldmVyc2libGUsIERlZmF1bHREaWN0LCBUZXh0LAotICBDb250ZXh0TWFuYWdlciwgVHlwZVtdLCBOZXdUeXBlKCksIFRZUEVfQ0hFQ0tJTkcsIGFuZCBudW1lcm91cyBidWcKLSAgZml4ZXMgKG5vdGUgdGhhdCBzb21lIG9mIHRoZSBuZXcgZmVhdHVyZXMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4KLSAgbXlweSBvciBvdGhlciBzdGF0aWMgYW5hbHl6ZXJzKS4gIEFsc28gY2xhc3NlcyBmb3IgUEVQIDQ5MgotICAoQXdhaXRhYmxlLCBBc3luY0l0ZXJhYmxlLCBBc3luY0l0ZXJhdG9yKSBoYXZlIGJlZW4gYWRkZWQgKGluIGZhY3QKLSAgdGhleSBtYWRlIGl0IGludG8gMy41LjEgYnV0IHdlcmUgbmV2ZXIgbWVudGlvbmVkKS4KLQotLSBJc3N1ZSAjMjU3Mzg6IFN0b3AgaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5zZW5kX2Vycm9yKCkgZnJvbQotICBzZW5kaW5nIGEgbWVzc2FnZSBib2R5IGZvciAyMDUgUmVzZXQgQ29udGVudC4gIEFsc28sIGRvbid0IHNlbmQgQ29udGVudAotICBoZWFkZXIgZmllbGRzIGluIHJlc3BvbnNlcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5LiAgUGF0Y2ggYnkgU3VzdW11Ci0gIEtvc2hpYmEuCi0KLS0gSXNzdWUgIzIxMzEzOiBGaXggdGhlICJwbGF0Zm9ybSIgbW9kdWxlIHRvIHRvbGVyYXRlIHdoZW4gc3lzLnZlcnNpb24KLSAgY29udGFpbnMgdHJ1bmNhdGVkIGJ1aWxkIGluZm9ybWF0aW9uLgotCi0tIFtTZWN1cml0eV0gSXNzdWUgIzI2ODM5OiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBjYWxscwotICBgYGdldHJhbmRvbSgpYGAgd2l0aCBgYEdSTkRfTk9OQkxPQ0tgYCB0byBmYWxsIGJhY2sgb24gcmVhZGluZwotICBgYC9kZXYvdXJhbmRvbWBgIGlmIHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiBQYXRjaAotICB3cml0dGVuIGJ5IENvbG0gQnVja2xleS4KLQotLSBJc3N1ZSAjMjcxNjQ6IEluIHRoZSB6bGliIG1vZHVsZSwgYWxsb3cgZGVjb21wcmVzc2luZyByYXcgRGVmbGF0ZSBzdHJlYW1zCi0gIHdpdGggYSBwcmVkZWZpbmVkIHpkaWN0LiAgQmFzZWQgb24gcGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI0MjkxOiBGaXggd3NnaXJlZi5zaW1wbGVfc2VydmVyLldTR0lSZXF1ZXN0SGFuZGxlciB0byBjb21wbGV0ZWx5Ci0gIHdyaXRlIGRhdGEgdG8gdGhlIGNsaWVudC4gIFByZXZpb3VzbHkgaXQgY291bGQgZG8gcGFydGlhbCB3cml0ZXMgYW5kCi0gIHRydW5jYXRlIGRhdGEuICBBbHNvLCB3c2dpcmVmLmhhbmRsZXIuU2VydmVySGFuZGxlciBjYW4gbm93IGhhbmRsZSBzdGRvdXQKLSAgZG9pbmcgcGFydGlhbCB3cml0ZXMsIGJ1dCB0aGlzIGlzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzI2ODA5OiBBZGQgYGBfX2FsbF9fYGAgdG8gOm1vZDpgc3RyaW5nYC4gIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCi0KLS0gSXNzdWUgIzI2MzczOiBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlIG5vdyBjb3JyZWN0bHkgaWdub3JlcwotICBCcm9rZW5QaXBlRXJyb3Igd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVzIGJlZm9yZSAuY29tbXVuaWNhdGUoKQotICBpcyBjYWxsZWQgaW4gbW9yZS9hbGwgY2lyY3Vtc3RhbmNlcy4KLQotLSBJc3N1ZSAjMjE3NzY6IGRpc3R1dGlscy51cGxvYWQgbm93IGNvcnJlY3RseSBoYW5kbGVzIEhUVFBFcnJvci4KLSAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCi0KLS0gSXNzdWUgIzI3MTE0OiBGaXggU1NMQ29udGV4dC5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIHdpdGgKLSAgUGVybWlzc2lvbkVycm9yCi0KLS0gSXNzdWUgIzE4MzgzOiBBdm9pZCBjcmVhdGluZyBkdXBsaWNhdGUgZmlsdGVycyB3aGVuIHVzaW5nIGZpbHRlcndhcm5pbmdzCi0gIGFuZCBzaW1wbGVmaWx0ZXIuICBCYXNlZCBvbiBwYXRjaCBieSBBbGV4IFNoa29wLgotCiAtIElzc3VlICMyNzA1NzogRml4IG9zLnNldF9pbmhlcml0YWJsZSgpIG9uIEFuZHJvaWQsIGlvY3RsKCkgaXMgYmxvY2tlZCBieQogICBTRUxpbnV4IGFuZCBmYWlscyB3aXRoIEVBQ0NFU1MuIFRoZSBmdW5jdGlvbiBub3cgZmFsbHMgYmFjayB0byBmY250bCgpLgogICBQYXRjaCB3cml0dGVuIGJ5IE1pY2hhxYIgQmVkbmFyc2tpLgogCiAtIElzc3VlICMyNzAxNDogRml4IGluZmluaXRlIHJlY3Vyc2lvbiB1c2luZyB0eXBpbmcucHkuICBUaGFua3MgdG8gS2FsbGUgVHV1cmUhCiAKKy0gSXNzdWUgIzI3MDMxOiBSZW1vdmVkIGR1bW15IG1ldGhvZHMgaW4gVGtpbnRlciB3aWRnZXQgY2xhc3NlczogdGtfbWVudUJhcigpCisgIGFuZCB0a19iaW5kRm9yVHJhdmVyc2FsKCkuCisKIC0gSXNzdWUgIzE0MTMyOiBGaXggdXJsbGliLnJlcXVlc3QgcmVkaXJlY3QgaGFuZGxpbmcgd2hlbiB0aGUgdGFyZ2V0IG9ubHkgaGFzCiAgIGEgcXVlcnkgc3RyaW5nLiAgT3JpZ2luYWwgZml4IGJ5IErDoW4gSmFuZWNoLgogCkBAIC02MzYsNiArMTY0MSwxOCBAQAogICB0byBiZSBBU0NJSS1lbmNvZGFibGUsIG90aGVyd2lzZSBhIFVuaWNvZGVFbmNvZGVFcnJvciBpcyByYWlzZWQuICBCYXNlZCBvbgogICBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgogCistIElzc3VlICMyNzAzMzogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGRlY29kZV9kYXRhIHBhcmFtZXRlciBmb3IKKyAgc210cGQuU01UUENoYW5uZWwgYW5kIHNtdHBkLlNNVFBTZXJ2ZXIgY29uc3RydWN0b3JzIGlzIGNoYW5nZWQgdG8gRmFsc2UuCisKKy0gSXNzdWUgIzI3MDM0OiBSZW1vdmVkIGRlcHJlY2F0ZWQgY2xhc3MgYXN5bmNoYXQuZmlmby4KKworLSBJc3N1ZSAjMjY4NzA6IEFkZGVkIHJlYWRsaW5lLnNldF9hdXRvX2hpc3RvcnkoKSwgd2hpY2ggY2FuIHN0b3AgZW50cmllcworICBiZWluZyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuICBCYXNlZCBvbiBwYXRjaCBieSBUeWxlcgorICBDcm9tcHRvbi4KKworLSBJc3N1ZSAjMjYwMzk6IHppcGZpbGUuWmlwRmlsZS5vcGVuKCkgY2FuIG5vdyBiZSB1c2VkIHRvIHdyaXRlIGRhdGEgaW50byBhIFpJUAorICBmaWxlLCBhcyB3ZWxsIGFzIGZvciBleHRyYWN0aW5nIGRhdGEuICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKwogLSBJc3N1ZSAjMjY4OTI6IEhvbm9yIGRlYnVnbGV2ZWwgZmxhZyBpbiB1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlci4gUGF0Y2gKICAgY29udHJpYnV0ZWQgYnkgQ2hpIEhzdWFuIFllbi4KIApAQCAtNjUwLDYgKzE2NjcsMTQgQEAKIC0gSXNzdWUgIzI2OTc3OiBSZW1vdmVkIHVubmVjZXNzYXJ5LCBhbmQgaWdub3JlZCwgY2FsbCB0byBzdW0gb2Ygc3F1YXJlcyBoZWxwZXIKICAgaW4gc3RhdGlzdGljcy5wdmFyaWFuY2UuCiAKKy0gSXNzdWUgIzI2MDAyOiBVc2UgYmlzZWN0IGluIHN0YXRpc3RpY3MubWVkaWFuIGluc3RlYWQgb2YgYSBsaW5lYXIgc2VhcmNoLgorICBQYXRjaCBieSBVcGVuZHJhIEt1bWEuCisKKy0gSXNzdWUgIzI1OTc0OiBNYWtlIHVzZSBvZiBuZXcgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvKCkgbWV0aG9kIGluIHN0YXRpc3RpY3MKKyAgbW9kdWxlLiBQYXRjaCBieSBTdGVmYW4gS3JhaC4KKworLSBJc3N1ZSAjMjY5OTY6IEFkZCBzZWNyZXRzIG1vZHVsZSBhcyBkZXNjcmliZWQgaW4gUEVQIDUwNi4KKwogLSBJc3N1ZSAjMjY4ODE6IFRoZSBtb2R1bGVmaW5kZXIgbW9kdWxlIG5vdyBzdXBwb3J0cyBleHRlbmRlZCBvcGNvZGUgYXJndW1lbnRzLgogCiAtIElzc3VlICMyMzgxNTogRml4ZWQgY3Jhc2hlcyByZWxhdGVkIHRvIGRpcmVjdGx5IGNyZWF0ZWQgaW5zdGFuY2VzIG9mIHR5cGVzIGluCkBAIC02NjEsNiArMTY4NiwxMSBAQAogLSBJc3N1ZSAjMjY4NzM6IHhtbHJwYyBub3cgcmFpc2VzIFJlc3BvbnNlRXJyb3Igb24gdW5zdXBwb3J0ZWQgdHlwZSB0YWdzCiAgIGluc3RlYWQgb2Ygc2lsZW50bHkgcmV0dXJuIGluY29ycmVjdCByZXN1bHQuCiAKKy0gSXNzdWUgIzI2OTE1OiAgVGhlIF9fY29udGFpbnNfXyBtZXRob2RzIGluIHRoZSBjb2xsZWN0aW9ucyBBQkNzIG5vdyBjaGVjaworICBmb3IgaWRlbnRpdHkgYmVmb3JlIGNoZWNraW5nIGVxdWFsaXR5LiAgVGhpcyBiZXR0ZXIgbWF0Y2hlcyB0aGUgYmVoYXZpb3IKKyAgb2YgdGhlIGNvbmNyZXRlIGNsYXNzZXMsIGFsbG93cyBzZW5zaWJsZSBoYW5kbGluZyBvZiBOYU5zLCBhbmQgbWFrZXMgaXQKKyAgZWFzaWVyIHRvIHJlYXNvbiBhYm91dCBjb250YWluZXIgaW52YXJpYW50cy4KKwogLSBJc3N1ZSAjMjY3MTE6IEZpeGVkIHRoZSBjb21wYXJpc29uIG9mIHBsaXN0bGliLkRhdGEgd2l0aCBvdGhlciB0eXBlcy4KIAogLSBJc3N1ZSAjMjQxMTQ6IEZpeCBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGluIGBjdHlwZXMudXRpbGAuCkBAIC02NzQsNiArMTcwNCwxMiBAQAogICBuYW1lcyB0aGF0IGhhcHBlbiB0byBoYXZlIGEgYnlwYXNzZWQgaG9zdG5hbWUgYXMgYSBzdWZmaXguICBQYXRjaCBieSBYaWFuZwogICBaaGFuZy4KIAorLSBJc3N1ZSAjMjQ5MDI6IFByaW50IHNlcnZlciBVUkwgb24gaHR0cC5zZXJ2ZXIgc3RhcnR1cC4gIEluaXRpYWwgcGF0Y2ggYnkKKyAgRmVsaXggS2Fpc2VyLgorCistIElzc3VlICMyNTc4ODogZmlsZWlucHV0Lmhvb2tfZW5jb2RlZCgpIG5vdyBzdXBwb3J0cyBhbiAiZXJyb3JzIiBhcmd1bWVudAorICBmb3IgcGFzc2luZyB0byBvcGVuLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSm9zZXBoIEhhY2ttYW4uCisKIC0gSXNzdWUgIzI2NjM0OiByZWN1cnNpdmVfcmVwcigpIG5vdyBzZXRzIF9fcXVhbG5hbWVfXyBvZiB3cmFwcGVyLiAgUGF0Y2ggYnkKICAgWGlhbmcgWmhhbmcuCiAKQEAgLTcwOSwyNiArMTc0NSw1NCBAQAogLSBJc3N1ZSAjMjY3MTc6IFN0b3AgZW5jb2RpbmcgTGF0aW4tMS1pemVkIFdTR0kgcGF0aHMgd2l0aCBVVEYtOC4gIFBhdGNoIGJ5CiAgIEFudGhvbnkgU290dGlsZS4KIAorLSBJc3N1ZSAjMjY3ODI6IEFkZCBTVEFSVFVQSU5GTyB0byBzdWJwcm9jZXNzLl9fYWxsX18gb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjY0MDQ6IEFkZCBjb250ZXh0IG1hbmFnZXIgdG8gc29ja2V0c2VydmVyLiAgUGF0Y2ggYnkgQXZpdiBQYWxpdm9kYS4KKwogLSBJc3N1ZSAjMjY3MzU6IEZpeCA6ZnVuYzpgb3MudXJhbmRvbWAgb24gU29sYXJpcyAxMS4zIGFuZCBuZXdlciB3aGVuIHJlYWRpbmcKICAgbW9yZSB0aGFuIDEsMDI0IGJ5dGVzOiBjYWxsIGBgZ2V0cmFuZG9tKClgYCBtdWx0aXBsZSB0aW1lcyB3aXRoIGEgbGltaXQgb2YKICAgMTAyNCBieXRlcyBwZXIgY2FsbC4KIAorLSBJc3N1ZSAjMjY1ODU6IEVsaW1pbmF0ZSBodHRwLnNlcnZlci5fcXVvdGVfaHRtbCgpIGFuZCB1c2UKKyAgaHRtbC5lc2NhcGUocXVvdGU9RmFsc2UpLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2Njg1OiBSYWlzZSBPU0Vycm9yIGlmIGNsb3NpbmcgYSBzb2NrZXQgZmFpbHMuCisKIC0gSXNzdWUgIzE2MzI5OiBBZGQgLndlYm0gdG8gbWltZXR5cGVzLnR5cGVzX21hcC4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgogCiAtIElzc3VlICMxMzk1MjogQWRkIC5jc3YgdG8gbWltZXR5cGVzLnR5cGVzX21hcC4gIFBhdGNoIGJ5IEdlb2ZmIFdpbHNvbi4KIAorLSBJc3N1ZSAjMjY1ODc6IHRoZSBzaXRlIG1vZHVsZSBub3cgYWxsb3dzIC5wdGggZmlsZXMgdG8gc3BlY2lmeSBmaWxlcyB0byBiZQorICBhZGRlZCB0byBzeXMucGF0aCAoZS5nLiB6aXAgZmlsZXMpLgorCistIElzc3VlICMyNTYwOTogSW50cm9kdWNlIGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlciBhbmQKKyAgdHlwaW5nLkNvbnRleHRNYW5hZ2VyLgorCiAtIElzc3VlICMyNjcwOTogRml4ZWQgWTIwMzggcHJvYmxlbSBpbiBsb2FkaW5nIGJpbmFyeSBQTGlzdHMuCiAKIC0gSXNzdWUgIzIzNzM1OiBIYW5kbGUgdGVybWluYWwgcmVzaXppbmcgd2l0aCBSZWFkbGluZSA2LjMrIGJ5IGluc3RhbGxpbmcgb3VyCiAgIG93biBTSUdXSU5DSCBoYW5kbGVyLiAgUGF0Y2ggYnkgRXJpYyBQcmljZS4KIAorLSBJc3N1ZSAjMjU5NTE6IENoYW5nZSBTU0xTb2NrZXQuc2VuZGFsbCgpIHRvIHJldHVybiBOb25lLCBhcyBleHBsaWNpdGx5CisgIGRvY3VtZW50ZWQgZm9yIHBsYWluIHNvY2tldCBvYmplY3RzLiAgUGF0Y2ggYnkgQXZpdiBQYWxpdm9kYS4KKwogLSBJc3N1ZSAjMjY1ODY6IEluIGh0dHAuc2VydmVyLCByZXNwb25kIHdpdGggIjQxMyBSZXF1ZXN0IGhlYWRlciBmaWVsZHMgdG9vCiAgIGxhcmdlIiBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgaGVhZGVyIGZpZWxkcyB0byBwYXJzZSwgcmF0aGVyIHRoYW4ga2lsbGluZwogICB0aGUgY29ubmVjdGlvbiBhbmQgcmFpc2luZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCiAKKy0gSXNzdWUgIzI2Njc2OiBBZGRlZCBtaXNzaW5nIFhNTFB1bGxQYXJzZXIgdG8gRWxlbWVudFRyZWUuX19hbGxfXy4KKwogLSBJc3N1ZSAjMjI4NTQ6IENoYW5nZSBCdWZmZXJlZFJlYWRlci53cml0YWJsZSgpIGFuZAogICBCdWZmZXJlZFdyaXRlci5yZWFkYWJsZSgpIHRvIGFsd2F5cyByZXR1cm4gRmFsc2UuCiAKKy0gSXNzdWUgIzI2NDkyOiBFeGhhdXN0ZWQgaXRlcmF0b3Igb2YgYXJyYXkuYXJyYXkgbm93IGNvbmZvcm1zIHdpdGggdGhlIGJlaGF2aW9yCisgIG9mIGl0ZXJhdG9ycyBvZiBvdGhlciBtdXRhYmxlIHNlcXVlbmNlczogaXQgbGVmdHMgZXhoYXVzdGVkIGV2ZW4gaWYgaXRlcmF0ZWQKKyAgYXJyYXkgaXMgZXh0ZW5kZWQuCisKKy0gSXNzdWUgIzI2NjQxOiBkb2N0ZXN0LkRvY0ZpbGVUZXN0IGFuZCBkb2N0ZXN0LnRlc3RmaWxlKCkgbm93IHN1cHBvcnQKKyAgcGFja2FnZXMgKG1vZHVsZSBzcGxpdHRlZCBpbnRvIG11bHRpcGxlIGRpcmVjdG9yaWVzKSBmb3IgdGhlIHBhY2thZ2UKKyAgcGFyYW1ldGVyLgorCiAtIElzc3VlICMyNTE5NTogRml4IGEgcmVncmVzc2lvbiBpbiBtb2NrLk1hZ2ljTW9jay4gX0NhbGwgaXMgYSBzdWJjbGFzcyBvZgogICB0dXBsZSAoY2hhbmdlc2V0IDM2MDNiYWU2M2MxMyBvbmx5IHdvcmtzIGZvciBjbGFzc2VzKSBzbyB3ZSBuZWVkIHRvCiAgIGltcGxlbWVudCBfX25lX18gb3Vyc2VsdmVzLiAgUGF0Y2ggYnkgQW5kcmV3IFBsdW1tZXIuCkBAIC03NDEsMTYgKzE4MDUsNDUgQEAKIAogLSBJc3N1ZSAjMjY2MTY6IEZpeGVkIGEgYnVnIGluIGRhdGV0aW1lLmFzdGltZXpvbmUoKSBtZXRob2QuCiAKLS0gSXNzdWUgIzIxOTI1OiA6ZnVuYzpgd2FybmluZ3MuZm9ybWF0d2FybmluZ2Agbm93IGNhdGNoZXMgZXhjZXB0aW9ucyBvbgotICBgYGxpbmVjYWNoZS5nZXRsaW5lKC4uLilgYCB0byBiZSBhYmxlIHRvIGxvZyA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGVtaXR0ZWQKLSAgbGF0ZSBkdXJpbmcgdGhlIFB5dGhvbiBzaHV0ZG93biBwcm9jZXNzLgorLSBJc3N1ZSAjMjY2Mzc6IFRoZSA6bW9kOmBpbXBvcnRsaWJgIG1vZHVsZSBub3cgZW1pdHMgYW4gOmV4YzpgSW1wb3J0RXJyb3JgCisgIHJhdGhlciB0aGFuIGEgOmV4YzpgVHlwZUVycm9yYCBpZiA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgdHJpZWQgZHVyaW5nIHRoZQorICBQeXRob24gc2h1dGRvd24gcHJvY2VzcyBidXQgOmRhdGE6YHN5cy5wYXRoYCBpcyBhbHJlYWR5IGNsZWFyZWQgKHNldCB0bworICBgYE5vbmVgYCkuCisKKy0gSXNzdWUgIzIxOTI1OiA6ZnVuYzpgd2FybmluZ3MuZm9ybWF0d2FybmluZ2Agbm93IGNhdGNoZXMgZXhjZXB0aW9ucyB3aGVuCisgIGNhbGxpbmcgOmZ1bmM6YGxpbmVjYWNoZS5nZXRsaW5lYCBhbmQKKyAgOmZ1bmM6YHRyYWNlbWFsbG9jLmdldF9vYmplY3RfdHJhY2ViYWNrYCB0byBiZSBhYmxlIHRvIGxvZworICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGVtaXR0ZWQgbGF0ZSBkdXJpbmcgdGhlIFB5dGhvbiBzaHV0ZG93biBwcm9jZXNzLgorCistIElzc3VlICMyMzg0ODogT24gV2luZG93cywgZmF1bHRoYW5kbGVyLmVuYWJsZSgpIG5vdyBhbHNvIGluc3RhbGxzIGFuCisgIGV4Y2VwdGlvbiBoYW5kbGVyIHRvIGR1bXAgdGhlIHRyYWNlYmFjayBvZiBhbGwgUHl0aG9uIHRocmVhZHMgb24gYW55IFdpbmRvd3MKKyAgZXhjZXB0aW9uLCBub3Qgb25seSBvbiBVTklYIHNpZ25hbHMgKFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCkuCisKKy0gSXNzdWUgIzI2NTMwOiBBZGQgQyBmdW5jdGlvbnMgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfVHJhY2tgIGFuZAorICA6YzpmdW5jOmBfUHlUcmFjZU1hbGxvY19VbnRyYWNrYCB0byB0cmFjayBtZW1vcnkgYmxvY2tzIHVzaW5nIHRoZQorICA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlLiBBZGQgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfR2V0VHJhY2ViYWNrYCB0byBnZXQKKyAgdGhlIHRyYWNlYmFjayBvZiBhbiBvYmplY3QuCisKKy0gSXNzdWUgIzI2NTg4OiBUaGUgX3RyYWNlbWFsbG9jIG5vdyBzdXBwb3J0cyB0cmFjaW5nIG1lbW9yeSBhbGxvY2F0aW9ucyBvZgorICBtdWx0aXBsZSBhZGRyZXNzIHNwYWNlcyAoZG9tYWlucykuCiAKIC0gSXNzdWUgIzI0MjY2OiBDdHJsK0MgZHVyaW5nIFJlYWRsaW5lIGhpc3Rvcnkgc2VhcmNoIG5vdyBjYW5jZWxzIHRoZSBzZWFyY2gKICAgbW9kZSB3aGVuIGNvbXBpbGVkIHdpdGggUmVhZGxpbmUgNy4KIAorLSBJc3N1ZSAjMjY1OTA6IEltcGxlbWVudCBhIHNhZmUgZmluYWxpemVyIGZvciB0aGUgX3NvY2tldC5zb2NrZXQgdHlwZS4gSXQgbm93CisgIHJlbGVhc2VzIHRoZSBHSUwgdG8gY2xvc2UgdGhlIHNvY2tldC4KKworLSBJc3N1ZSAjMTg3ODc6IHNwd2QuZ2V0c3BuYW0oKSBub3cgcmFpc2VzIGEgUGVybWlzc2lvbkVycm9yIGlmIHRoZSB1c2VyCisgIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgorCiAtIElzc3VlICMyNjU2MDogQXZvaWQgcG90ZW50aWFsIFZhbHVlRXJyb3IgaW4gQmFzZUhhbmRsZXIuc3RhcnRfcmVzcG9uc2UuCiAgIEluaXRpYWwgcGF0Y2ggYnkgUGV0ZXIgSW5nbGVzYnkuCiAKKy0gSXNzdWUgIzI2NTY3OiBBZGQgYSBuZXcgZnVuY3Rpb24gOmM6ZnVuYzpgUHlFcnJfUmVzb3VyY2VXYXJuaW5nYCBmdW5jdGlvbiB0bworICBwYXNzIHRoZSBkZXN0cm95ZWQgb2JqZWN0LiBBZGQgYSAqc291cmNlKiBhdHRyaWJ1dGUgdG8KKyAgOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAuIEFkZCB3YXJuaW5ncy5fc2hvd3dhcm5tc2coKSB3aGljaCB1c2VzCisgIHRyYWNlbWFsbG9jIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIHNvdXJjZSBvYmplY3Qgd2FzIGFsbG9jYXRlZC4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyNjMxMzogc3NsLnB5IF9sb2FkX3dpbmRvd3Nfc3RvcmVfY2VydHMgZmFpbHMgaWYgd2luZG93cwogICBjZXJ0IHN0b3JlIGlzIGVtcHR5LiBQYXRjaCBieSBCYWppLgogCkBAIC03NzIsMjQgKzE4NjUsMzkgQEAKIC0gSXNzdWUgIzIzNzE4OiBGaXhlZCBwYXJzaW5nIHRpbWUgaW4gd2VlayAwIGJlZm9yZSBKYW4gMS4gIE9yaWdpbmFsIHBhdGNoIGJ5CiAgIFRhbcOhcyBCZW5jZSBHZWRhaS4KIAorLSBJc3N1ZSAjMjYzMjM6IEFkZCBNb2NrLmFzc2VydF9jYWxsZWQoKSBhbmQgTW9jay5hc3NlcnRfY2FsbGVkX29uY2UoKQorICBtZXRob2RzIHRvIHVuaXR0ZXN0Lm1vY2suIFBhdGNoIHdyaXR0ZW4gYnkgQW1pdCBTYWhhLgorCiAtIElzc3VlICMyMDU4OTogSW52b2tpbmcgUGF0aC5vd25lcigpIGFuZCBQYXRoLmdyb3VwKCkgb24gV2luZG93cyBub3cgcmFpc2UKICAgTm90SW1wbGVtZW50ZWRFcnJvciBpbnN0ZWFkIG9mIEltcG9ydEVycm9yLgogCiAtIElzc3VlICMyNjE3NzogRml4ZWQgdGhlIGtleXMoKSBtZXRob2QgZm9yIENhbnZhcyBhbmQgU2Nyb2xsYmFyIHdpZGdldHMuCiAKLS0gSXNzdWUgIzE1MDY4OiBHb3QgcmlkIG9mIGV4Y2Vzc2l2ZSBidWZmZXJpbmcgaW4gdGhlIGZpbGVpbnB1dCBtb2R1bGUuCi0gIFRoZSBidWZzaXplIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4KKy0gSXNzdWUgIzE1MDY4OiBHb3QgcmlkIG9mIGV4Y2Vzc2l2ZSBidWZmZXJpbmcgaW4gZmlsZWlucHV0LgorICBUaGUgYnVmc2l6ZSBwYXJhbWV0ZXIgaXMgbm93IGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQuCisKKy0gSXNzdWUgIzE5NDc1OiBBZGRlZCBhbiBvcHRpb25hbCBhcmd1bWVudCB0aW1lc3BlYyB0byB0aGUgZGF0ZXRpbWUKKyAgaXNvZm9ybWF0KCkgbWV0aG9kIHRvIGNob29zZSB0aGUgcHJlY2lzaW9uIG9mIHRoZSB0aW1lIGNvbXBvbmVudC4KIAogLSBJc3N1ZSAjMjIwMjogRml4IFVuYm91bmRMb2NhbEVycm9yIGluCiAgIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXIuZ2V0X2FsZ29yaXRobV9pbXBscy4gIEluaXRpYWwgcGF0Y2ggYnkgTWF0aGlldQogICBEdXB1eS4KIAorLSBJc3N1ZSAjMjYxNjc6IE1pbmltaXplZCBvdmVyaGVhZCBpbiBjb3B5LmNvcHkoKSBhbmQgY29weS5kZWVwY29weSgpLgorICBPcHRpbWl6ZWQgY29weWluZyBhbmQgZGVlcGNvcHlpbmcgYnl0ZWFycmF5cywgTm90SW1wbGVtZW50ZWQsIHNsaWNlcywKKyAgc2hvcnQgbGlzdHMsIHR1cGxlcywgZGljdHMsIHNldHMuCisKIC0gSXNzdWUgIzI1NzE4OiBGaXhlZCBwaWNrbGluZyBhbmQgY29weWluZyB0aGUgYWNjdW11bGF0ZSgpIGl0ZXJhdG9yIHdpdGgKICAgdG90YWwgaXMgTm9uZS4KIAogLSBJc3N1ZSAjMjY0NzU6IEZpeGVkIGRlYnVnZ2luZyBvdXRwdXQgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2l0aCB0aGUgKD94KQogICBmbGFnLgogCistIElzc3VlICMyNjQ4MjogQWxsb3dlZCBwaWNrbGluZyByZWN1cnNpdmUgZGVxdWV1ZXMuCisKKy0gSXNzdWUgIzI2MzM1OiBNYWtlIG1tYXAud3JpdGUoKSByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGxpa2UKKyAgb3RoZXIgd3JpdGUgbWV0aG9kcy4gIFBhdGNoIGJ5IEpha3ViIFN0YXNpYWsuCisKIC0gSXNzdWUgIzI2NDU3OiBGaXhlZCB0aGUgc3VibmV0cygpIG1ldGhvZHMgaW4gSVAgbmV0d29yayBjbGFzc2VzIGZvciB0aGUgY2FzZQogICB3aGVuIHJlc3VsdGluZyBwcmVmaXggbGVuZ3RoIGlzIGVxdWFsIHRvIG1heGltYWwgcHJlZml4IGxlbmd0aC4KICAgQmFzZWQgb24gcGF0Y2ggYnkgWGlhbmcgWmhhbmcuCkBAIC04MDYsNyArMTkxNCw3IEBACiAKIC0gSXNzdWUgIzI2MTg2OiBSZW1vdmUgYW4gaW52YWxpZCB0eXBlIGNoZWNrIGluIGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIuCiAKLS0gSXNzdWUgIzI2MzY3OiBpbXBvcnRsaWIuX19pbXBvcnRfXygpIHJhaXNlcyBTeXN0ZW1FcnJvciBsaWtlCistIElzc3VlICMyNjM2NzogaW1wb3J0bGliLl9faW1wb3J0X18oKSByYWlzZXMgSW1wb3J0RXJyb3IgbGlrZQogICBidWlsdGlucy5fX2ltcG9ydF9fKCkgd2hlbiBgYGxldmVsYGAgaXMgc3BlY2lmaWVkIGJ1dCB3aXRob3V0IGFuIGFjY29tcGFueWluZwogICBwYWNrYWdlIHNwZWNpZmllZC4KIApAQCAtODE0LDE5ICsxOTIyLDM5IEBACiAgIHRoZSBjb25uZWN0ZWQgc29ja2V0KSB3aGVuIHZlcmlmeV9yZXF1ZXN0KCkgcmV0dXJucyBmYWxzZS4gIFBhdGNoIGJ5IEF2aXYKICAgUGFsaXZvZGEuCiAKKy0gSXNzdWUgIzIzNDMwOiBDaGFuZ2UgdGhlIHNvY2tldHNlcnZlciBtb2R1bGUgdG8gb25seSBjYXRjaCBleGNlcHRpb25zCisgIHJhaXNlZCBmcm9tIGEgcmVxdWVzdCBoYW5kbGVyIHRoYXQgYXJlIGRlcml2ZWQgZnJvbSBFeGNlcHRpb24gKGluc3RlYWQgb2YKKyAgQmFzZUV4Y2VwdGlvbikuICBUaGVyZWZvcmUgU3lzdGVtRXhpdCBhbmQgS2V5Ym9hcmRJbnRlcnJ1cHQgbm8gbG9uZ2VyCisgIHRyaWdnZXIgdGhlIGhhbmRsZV9lcnJvcigpIG1ldGhvZCwgYW5kIHdpbGwgbm93IHRvIHN0b3AgYSBzaW5nbGUtdGhyZWFkZWQKKyAgc2VydmVyLgorCiAtIFtTZWN1cml0eV0gSXNzdWUgIzI1OTM5OiBPbiBXaW5kb3dzIG9wZW4gdGhlIGNlcnQgc3RvcmUgcmVhZG9ubHkgaW4KICAgc3NsLmVudW1fY2VydGlmaWNhdGVzLgogCiAtIElzc3VlICMyNTk5NTogb3Mud2FsaygpIG5vIGxvbmdlciB1c2VzIEZEcyBwcm9wb3J0aW9uYWwgdG8gdGhlIHRyZWUgZGVwdGguCiAKKy0gSXNzdWUgIzI1OTk0OiBBZGRlZCB0aGUgY2xvc2UoKSBtZXRob2QgYW5kIHRoZSBzdXBwb3J0IG9mIHRoZSBjb250ZXh0IG1hbmFnZXIKKyAgcHJvdG9jb2wgZm9yIHRoZSBvcy5zY2FuZGlyKCkgaXRlcmF0b3IuCisKKy0gSXNzdWUgIzIzOTkyOiBtdWx0aXByb2Nlc3Npbmc6IG1ha2UgTWFwUmVzdWx0IG5vdCBmYWlsLWZhc3QgdXBvbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzI2MjQzOiBTdXBwb3J0IGtleXdvcmQgYXJndW1lbnRzIHRvIHpsaWIuY29tcHJlc3MoKS4gIFBhdGNoIGJ5IEF2aXYKKyAgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2MTE3OiBUaGUgb3Muc2NhbmRpcigpIGl0ZXJhdG9yIG5vdyBjbG9zZXMgZmlsZSBkZXNjcmlwdG9yIG5vdCBvbmx5CiAgIHdoZW4gdGhlIGl0ZXJhdGlvbiBpcyBmaW5pc2hlZCwgYnV0IHdoZW4gaXQgd2FzIGZhaWxlZCB3aXRoIGVycm9yLgogCistIElzc3VlICMyNTk0OTogX19kaWN0X18gZm9yIGFuIE9yZGVyZWREaWN0IGluc3RhbmNlIGlzIG5vdyBjcmVhdGVkIG9ubHkgd2hlbgorICBuZWVkZWQuCisKIC0gSXNzdWUgIzI1OTExOiBSZXN0b3JlZCBzdXBwb3J0IG9mIGJ5dGVzIHBhdGhzIGluIG9zLndhbGsoKSBvbiBXaW5kb3dzLgogCiAtIElzc3VlICMyNjA0NTogQWRkIFVURi04IHN1Z2dlc3Rpb24gdG8gZXJyb3IgbWVzc2FnZSB3aGVuIHBvc3RpbmcgYQogICBub24tTGF0aW4tMSBzdHJpbmcgd2l0aCBodHRwLmNsaWVudC4KIAorLSBJc3N1ZSAjMjYwMzk6IEFkZGVkIHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoKSBhbmQgemlwaW5mby5aaXBJbmZvLmlzX2RpcigpLgorICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKwogLSBJc3N1ZSAjMTI5MjM6IFJlc2V0IEZhbmN5VVJMb3BlbmVyJ3MgcmVkaXJlY3QgY291bnRlciBldmVuIGlmIHRoZXJlIGlzIGFuCiAgIGV4Y2VwdGlvbi4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgQnJpYW4gQnJhemlsIGFuZCBEYW5pZWwgUm9jY28uCiAKQEAgLTg0Nyw2ICsxOTc1LDEwIEBACiAgIGdldGhvc3RieW5hbWVfZXgoKSBmdW5jdGlvbnMgb2YgdGhlIHNvY2tldCBtb2R1bGUgbm93IGRlY29kZSB0aGUgaG9zdG5hbWUKICAgZnJvbSB0aGUgQU5TSSBjb2RlIHBhZ2UgcmF0aGVyIHRoYW4gVVRGLTguCiAKKy0gSXNzdWUgIzI2MDk5OiBUaGUgc2l0ZSBtb2R1bGUgbm93IHdyaXRlcyBhbiBlcnJvciBpbnRvIHN0ZGVyciBpZgorICBzaXRlY3VzdG9taXplIG1vZHVsZSBjYW4gYmUgaW1wb3J0ZWQgYnV0IGV4ZWN1dGluZyB0aGUgbW9kdWxlIHJhaXNlIGFuCisgIEltcG9ydEVycm9yLiBTYW1lIGNoYW5nZSBmb3IgdXNlcmN1c3RvbWl6ZS4KKwogLSBJc3N1ZSAjMjYxNDc6IHhtbHJwYyBub3cgd29ya3Mgd2l0aCBzdHJpbmdzIG5vdCBlbmNvZGFibGUgd2l0aCB1c2VkCiAgIG5vbi1VVEYtOCBlbmNvZGluZy4KIApAQCAtODU3LDEzICsxOTg5LDIxIEBACiAtIElzc3VlICMyNjAxMzogQWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIGJyb2tlbiBwcm90b2NvbCAyIHBpY2tsZXMgY3JlYXRlZAogICBpbiBvbGQgUHl0aG9uIDMgdmVyc2lvbnMgKDMuNC4zIGFuZCBsb3dlcikuCiAKKy0gSXNzdWUgIzI2MTI5OiBEZXByZWNhdGVkIGFjY2VwdGluZyBub24taW50ZWdlcnMgaW4gZ3JwLmdldGdyZ2lkKCkuCisKIC0gSXNzdWUgIzI1ODUwOiBVc2UgY3Jvc3MtY29tcGlsYXRpb24gYnkgZGVmYXVsdCBmb3IgNjQtYml0IFdpbmRvd3MuCiAKLS0gSXNzdWUgIzE3NjMzOiBJbXByb3ZlIHppcGltcG9ydCdzIHN1cHBvcnQgZm9yIG5hbWVzcGFjZSBwYWNrYWdlcy4KKy0gSXNzdWUgIzI1ODIyOiBBZGQgZG9jc3RyaW5ncyB0byB0aGUgZmllbGRzIG9mIHVybGxpYi5wYXJzZSByZXN1bHRzLgorICBQYXRjaCBjb250cmlidXRlZCBieSBTd2F0aSBKYWlzd2FsLgorCistIElzc3VlICMyMjY0MjogQ29udmVydCB0cmFjZSBtb2R1bGUgb3B0aW9uIHBhcnNpbmcgbWVjaGFuaXNtIHRvIGFyZ3BhcnNlLgorICBQYXRjaCBjb250cmlidXRlZCBieSBTaWxlbnRHaG9zdC4KIAogLSBJc3N1ZSAjMjQ3MDU6IEZpeCBzeXNjb25maWcuX3BhcnNlX21ha2VmaWxlIG5vdCBleHBhbmRpbmcgJHt9IHZhcnMKICAgYXBwZWFyaW5nIGJlZm9yZSAkKCkgdmFycy4KIAorLSBJc3N1ZSAjMjYwNjk6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBhcGlzIGluIHRoZSB0cmFjZSBtb2R1bGUuCisKIC0gSXNzdWUgIzIyMTM4OiBGaXggbW9jay5wYXRjaCBiZWhhdmlvciB3aGVuIHBhdGNoaW5nIGRlc2NyaXB0b3JzLiBSZXN0b3JlCiAgIG9yaWdpbmFsIHZhbHVlcyBhZnRlciBwYXRjaGluZy4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgU2VhbiBNY0N1bGx5LgogCkBAIC04NzYsMTMgKzIwMTYsMjggQEAKIC0gSXNzdWUgIzI0MTIwOiBJZ25vcmUgUGVybWlzc2lvbkVycm9yIHdoZW4gdHJhdmVyc2luZyBhIHRyZWUgd2l0aAogICBwYXRobGliLlBhdGguW3JdZ2xvYigpLiAgUGF0Y2ggYnkgVWxyaWNoIFBldHJpLgogCistIElzc3VlICMyMTgxNTogQWNjZXB0IF0gY2hhcmFjdGVycyBpbiB0aGUgZGF0YSBwb3J0aW9uIG9mIGltYXAgcmVzcG9uc2VzLAorICBpbiBvcmRlciB0byBoYW5kbGUgdGhlIGZsYWdzIHdpdGggc3F1YXJlIGJyYWNrZXRzIGFjY2VwdGVkIGFuZCBwcm9kdWNlZAorICBieSBzZXJ2ZXJzIHN1Y2ggYXMgZ21haWwuCisKIC0gSXNzdWUgIzI1NDQ3OiBmaWxlaW5wdXQgbm93IHVzZXMgc3lzLnN0ZGluIGFzLWlzIGlmIGl0IGRvZXMgbm90IGhhdmUgYQogICBidWZmZXIgYXR0cmlidXRlIChyZXN0b3JlcyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KS4KIAorLSBJc3N1ZSAjMjU5NzE6IE9wdGltaXplZCBjcmVhdGluZyBGcmFjdGlvbnMgZnJvbSBmbG9hdHMgYnkgMiB0aW1lcyBhbmQgZnJvbQorICBEZWNpbWFscyBieSAzIHRpbWVzLgorCistIElzc3VlICMyNTgwMjogRG9jdW1lbnQgYXMgZGVwcmVjYXRlZCB0aGUgcmVtYWluaW5nIGltcGxlbWVudGF0aW9ucyBvZgorICBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZSgpLgorCistIElzc3VlICMyNTkyODogQWRkIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpLgorCiAtIElzc3VlICMyNTQ0NzogQ29weWluZyB0aGUgbHJ1X2NhY2hlKCkgd3JhcHBlciBvYmplY3Qgbm93IGFsd2F5cyB3b3JrcywKLSAgaW5kZXBlbmRlZGx5IGZyb20gdGhlIHR5cGUgb2YgdGhlIHdyYXBwZWQgb2JqZWN0IChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsCisgIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgdHlwZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwKICAgb2JqZWN0IHVuY2hhbmdlZCkuCiAKKy0gSXNzdWUgIzI1NzY4OiBIYXZlIHRoZSBmdW5jdGlvbnMgaW4gY29tcGlsZWFsbCByZXR1cm4gYm9vbGVhbnMgaW5zdGVhZCBvZgorICBpbnRzIGFuZCBhZGQgcHJvcGVyIGRvY3VtZW50YXRpb24gYW5kIHRlc3RzIGZvciB0aGUgcmV0dXJuIHZhbHVlcy4KKwogLSBJc3N1ZSAjMjQxMDM6IEZpeGVkIHBvc3NpYmxlIHVzZSBhZnRlciBmcmVlIGluIEVsZW1lbnRUcmVlLlhNTFB1bGxQYXJzZXIuCiAKIC0gSXNzdWUgIzI1ODYwOiBvcy5md2FsaygpIG5vIGxvbmdlciBza2lwcyByZW1haW5pbmcgZGlyZWN0b3JpZXMgd2hlbiBlcnJvcgpAQCAtODkwLDggKzIwNDUsMjIgQEAKIAogLSBJc3N1ZSAjMjU5MTQ6IEZpeGVkIGFuZCBzaW1wbGlmaWVkIE9yZGVyZWREaWN0Ll9fc2l6ZW9mX18uCiAKKy0gSXNzdWUgIzI1ODY5OiBPcHRpbWl6ZWQgZGVlcGNvcHlpbmcgRWxlbWVudFRyZWU7IGl0IGlzIG5vdyAyMCB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1ODczOiBPcHRpbWl6ZWQgaXRlcmF0aW5nIEVsZW1lbnRUcmVlLiAgSXRlcmF0aW5nIGVsZW1lbnRzCisgIEVsZW1lbnQuaXRlcigpIGlzIG5vdyA0MCUgZmFzdGVyLCBpdGVyYXRpbmcgdGV4dCBFbGVtZW50Lml0ZXJ0ZXh0KCkKKyAgaXMgbm93IHVwIHRvIDIuNSB0aW1lcyBmYXN0ZXIuCisKIC0gSXNzdWUgIzI1OTAyOiBGaXhlZCB2YXJpb3VzIHJlZmNvdW50IGlzc3VlcyBpbiBFbGVtZW50VHJlZSBpdGVyYXRpb24uCiAKKy0gSXNzdWUgIzIyMjI3OiBUaGUgVGFyRmlsZSBpdGVyYXRvciBpcyByZWltcGxlbWVudGVkIHVzaW5nIGdlbmVyYXRvci4KKyAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1wbGVyIHRoYXQgdXNpbmcgY2xhc3MuCisKKy0gSXNzdWUgIzI1NjM4OiBPcHRpbWl6ZWQgRWxlbWVudFRyZWUuaXRlcnBhcnNlKCk7IGl0IGlzIG5vdyAyeCBmYXN0ZXIuCisgIE9wdGltaXplZCBFbGVtZW50VHJlZSBwYXJzaW5nOyBpdCBpcyBub3cgMTAlIGZhc3Rlci4KKworLSBJc3N1ZSAjMjU3NjE6IEltcHJvdmVkIGRldGVjdGluZyBlcnJvcnMgaW4gYnJva2VuIHBpY2tsZSBkYXRhLgorCiAtIElzc3VlICMyNTcxNzogUmVzdG9yZSB0aGUgcHJldmlvdXMgYmVoYXZpb3VyIG9mIHRvbGVyYXRpbmcgbW9zdCBmc3RhdCgpCiAgIGVycm9ycyB3aGVuIG9wZW5pbmcgZmlsZXMuICBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gaW4gMy41YTEsIGFuZCBzdG9wcGVkCiAgIGFub255bW91cyB0ZW1wb3JhcnkgZmlsZXMgZnJvbSB3b3JraW5nIGluIHNwZWNpYWwgY2FzZXMuCkBAIC05MDMsNiArMjA3Miw5IEBACiAtIElzc3VlICMyNTc2NDogSW4gdGhlIHN1YnByb2Nlc3MgbW9kdWxlLCBwcmVzZXJ2ZSBhbnkgZXhjZXB0aW9uIGNhdXNlZCBieQogICBmb3JrKCkgZmFpbHVyZSB3aGVuIHByZWV4ZWNfZm4gaXMgdXNlZC4KIAorLSBJc3N1ZSAjMjU3NzE6IFR3ZWFrIHRoZSBleGNlcHRpb24gbWVzc2FnZSBmb3IgaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKCkKKyAgd2hlbiAncGFja2FnZScgaXNuJ3Qgc3BlY2lmaWVkIGJ1dCBuZWNlc3NhcnkuCisKIC0gSXNzdWUgIzY0Nzg6IF9zdHJwdGltZSdzIHJlZ2V4cCBjYWNoZSBub3cgaXMgcmVzZXQgYWZ0ZXIgY2hhbmdpbmcgdGltZXpvbmUKICAgd2l0aCB0aW1lLnR6c2V0KCkuCiAKQEAgLTkyNCw2ICsyMDk2LDkgQEAKIC0gSXNzdWUgIzEwMTMxOiBGaXhlZCBkZWVwIGNvcHlpbmcgb2YgbWluaWRvbSBkb2N1bWVudHMuICBCYXNlZCBvbiBwYXRjaAogICBieSBNYXJpYW4gR2FuaXNpbi4KIAorLSBJc3N1ZSAjNzk5MDogZGlyKCkgb24gRWxlbWVudFRyZWUuRWxlbWVudCBub3cgbGlzdHMgcHJvcGVydGllczogInRhZyIsCisgICJ0ZXh0IiwgInRhaWwiIGFuZCAiYXR0cmliIi4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgorCiAtIElzc3VlICMyNTcyNTogRml4ZWQgYSByZWZlcmVuY2UgbGVhayBpbiBwaWNrbGUubG9hZHMoKSB3aGVuIHVucGlja2xpbmcKICAgaW52YWxpZCBkYXRhIGluY2x1ZGluZyB0dXBsZSBpbnN0cnVjdGlvbnMuCiAKQEAgLTkzOSw2ICsyMTE0LDIwMyBAQAogLSBJc3N1ZSAjMjU2MjQ6IFppcEZpbGUgbm93IGFsd2F5cyB3cml0ZXMgYSBaSVBfU1RPUkVEIGhlYWRlciBmb3IgZGlyZWN0b3J5CiAgIGVudHJpZXMuICBQYXRjaCBieSBEaW5neXVhbiBXYW5nLgogCistIElzc3VlICMyNTYyNjogQ2hhbmdlIHRocmVlIHpsaWIgZnVuY3Rpb25zIHRvIGFjY2VwdCBzaXplcyB0aGF0IGZpdCBpbgorICBQeV9zc2l6ZV90LCBidXQgaW50ZXJuYWxseSBjYXAgdGhvc2Ugc2l6ZXMgdG8gVUlOVF9NQVguICBUaGlzIHJlc29sdmVzIGEKKyAgcmVncmVzc2lvbiBpbiAzLjUgd2hlcmUgR3ppcEZpbGUucmVhZCgpIGZhaWxlZCB0byByZWFkIGNodW5rcyBsYXJnZXIgdGhhbiAyCisgIG9yIDQgR2lCLiAgVGhlIGNoYW5nZSBhZmZlY3RzIHRoZSB6bGliLkRlY29tcHJlc3MuZGVjb21wcmVzcygpIG1heF9sZW5ndGgKKyAgcGFyYW1ldGVyLCB0aGUgemxpYi5kZWNvbXByZXNzKCkgYnVmc2l6ZSBwYXJhbWV0ZXIsIGFuZCB0aGUKKyAgemxpYi5EZWNvbXByZXNzLmZsdXNoKCkgbGVuZ3RoIHBhcmFtZXRlci4KKworLSBJc3N1ZSAjMjU1ODM6IEF2b2lkIGluY29ycmVjdCBlcnJvcnMgcmFpc2VkIGJ5IG9zLm1ha2VkaXJzKGV4aXN0X29rPVRydWUpCisgIHdoZW4gdGhlIE9TIGdpdmVzIHByaW9yaXR5IHRvIGVycm9ycyBzdWNoIGFzIEVBQ0NFUyBvdmVyIEVFWElTVC4KKworLSBJc3N1ZSAjMjU1OTM6IENoYW5nZSBzZW1hbnRpY3Mgb2YgRXZlbnRMb29wLnN0b3AoKSBpbiBhc3luY2lvLgorCistIElzc3VlICM2OTczOiBXaGVuIHdlIGtub3cgYSBzdWJwcm9jZXNzLlBvcGVuIHByb2Nlc3MgaGFzIGRpZWQsIGRvCisgIG5vdCBhbGxvdyB0aGUgc2VuZF9zaWduYWwoKSwgdGVybWluYXRlKCksIG9yIGtpbGwoKSBtZXRob2RzIHRvIGRvCisgIGFueXRoaW5nIGFzIHRoZXkgY291bGQgcG90ZW50aWFsbHkgc2lnbmFsIGEgZGlmZmVyZW50IHByb2Nlc3MuCisKKy0gSXNzdWUgIzIzODgzOiBBZGRlZCBtaXNzaW5nIEFQSXMgdG8gX19hbGxfXyB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBBUElzCisgIGZvciB0aGUgZm9sbG93aW5nIG1vZHVsZXM6IGNhbGVuZGFyLCBjc3YsIGVudW0sIGZpbGVpbnB1dCwgZnRwbGliLCBsb2dnaW5nLAorICBvcHRwYXJzZSwgdGFyZmlsZSwgdGhyZWFkaW5nIGFuZCB3YXZlLiAgQWxzbyBhZGRlZCBhCisgIHRlc3Quc3VwcG9ydC5jaGVja19fYWxsX18oKSBoZWxwZXIuICBQYXRjaGVzIGJ5IEphY2VrIEtvxYJvZHppZWosIE1hdXJvCisgIFMuIE0uIFJvZHJpZ3VlcyBhbmQgSm9lbCBUYWRkZWkuCisKKy0gSXNzdWUgIzI1NTkwOiBJbiB0aGUgUmVhZGxpbmUgY29tcGxldGVyLCBvbmx5IGNhbGwgZ2V0YXR0cigpIG9uY2UgcGVyCisgIGF0dHJpYnV0ZS4gIEFsc28gY29tcGxldGUgbmFtZXMgb2YgYXR0cmlidXRlcyBzdWNoIGFzIHByb3BlcnRpZXMgYW5kIHNsb3RzCisgIHdoaWNoIGFyZSBsaXN0ZWQgYnkgZGlyKCkgYnV0IG5vdCB5ZXQgY3JlYXRlZCBvbiBhbiBpbnN0YW5jZS4KKworLSBJc3N1ZSAjMjU0OTg6IEZpeCBhIGNyYXNoIHdoZW4gZ2FyYmFnZS1jb2xsZWN0aW5nIGN0eXBlcyBvYmplY3RzIGNyZWF0ZWQKKyAgYnkgd3JhcHBpbmcgYSBtZW1vcnl2aWV3LiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIG1hZGUgaW4gMy41YTEuICBCYXNlZAorICBvbiBwYXRjaCBieSBFcnlrc3VuLgorCistIElzc3VlICMyNTU4NDogQWRkZWQgImVzY2FwZSIgdG8gdGhlIF9fYWxsX18gbGlzdCBpbiB0aGUgZ2xvYiBtb2R1bGUuCisKKy0gSXNzdWUgIzI1NTg0OiBGaXhlZCByZWN1cnNpdmUgZ2xvYigpIHdpdGggcGF0dGVybnMgc3RhcnRpbmcgd2l0aCAnXCpcKicuCisKKy0gSXNzdWUgIzI1NDQ2OiBGaXggcmVncmVzc2lvbiBpbiBzbXRwbGliJ3MgQVVUSCBMT0dJTiBzdXBwb3J0LgorCistIElzc3VlICMxODAxMDogRml4IHRoZSBweWRvYyB3ZWIgc2VydmVyJ3MgbW9kdWxlIHNlYXJjaCBmdW5jdGlvbiB0byBoYW5kbGUKKyAgZXhjZXB0aW9ucyBmcm9tIGltcG9ydGluZyBwYWNrYWdlcy4KKworLSBJc3N1ZSAjMjU1NTQ6IEdvdCByaWQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2luZy4KKworLSBJc3N1ZSAjMTg5NzM6IENvbW1hbmQtbGluZSBpbnRlcmZhY2Ugb2YgdGhlIGNhbGVuZGFyIG1vZHVsZSBub3cgdXNlcyBhcmdwYXJzZQorICBpbnN0ZWFkIG9mIG9wdHBhcnNlLgorCistIElzc3VlICMyNTUxMDogZmlsZWlucHV0LkZpbGVJbnB1dC5yZWFkbGluZSgpIG5vdyByZXR1cm5zIGInJyBpbnN0ZWFkIG9mICcnCisgIGF0IHRoZSBlbmQgaWYgdGhlIEZpbGVJbnB1dCB3YXMgb3BlbmVkIHdpdGggYmluYXJ5IG1vZGUuCisgIFBhdGNoIGJ5IFJ5b3N1a2UgSXRvLgorCistIElzc3VlICMyNTUwMzogRml4ZWQgaW5zcGVjdC5nZXRkb2MoKSBmb3IgaW5oZXJpdGVkIGRvY3N0cmluZ3Mgb2YgcHJvcGVydGllcy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgSm9obiBNYXJrIFZhbmRlbmJlcmcuCisKKy0gSXNzdWUgIzI1NTE1OiBBbHdheXMgdXNlIG9zLnVyYW5kb20gYXMgYSBzb3VyY2Ugb2YgcmFuZG9tbmVzcyBpbiB1dWlkLnV1aWQ0LgorCistIElzc3VlICMyMTgyNzogRml4ZWQgdGV4dHdyYXAuZGVkZW50KCkgZm9yIHRoZSBjYXNlIHdoZW4gbGFyZ2VzdCBjb21tb24KKyAgd2hpdGVzcGFjZSBpcyBhIHN1YnN0cmluZyBvZiBzbWFsbGVzdCBsZWFkaW5nIHdoaXRlc3BhY2UuCisgIEJhc2VkIG9uIHBhdGNoIGJ5IFJvYmVydCBMaS4KKworLSBJc3N1ZSAjMjU0NDc6IFRoZSBscnVfY2FjaGUoKSB3cmFwcGVyIG9iamVjdHMgbm93IGNhbiBiZSBjb3BpZWQgYW5kIHBpY2tsZWQKKyAgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwgb2JqZWN0IHVuY2hhbmdlZCkuCisKKy0gSXNzdWUgIzI1MzkwOiB0eXBpbmc6IERvbid0IGNyYXNoIG9uIFVuaW9uW3N0ciwgUGF0dGVybl0uCisKKy0gSXNzdWUgIzI1NDQxOiBhc3luY2lvOiBSYWlzZSBlcnJvciBmcm9tIGRyYWluKCkgd2hlbiBzb2NrZXQgaXMgY2xvc2VkLgorCistIElzc3VlICMyNTQxMDogQ2xlYW5lZCB1cCBhbmQgZml4ZWQgbWlub3IgYnVncyBpbiBDIGltcGxlbWVudGF0aW9uIG9mCisgIE9yZGVyZWREaWN0LgorCistIElzc3VlICMyNTQxMTogSW1wcm92ZWQgVW5pY29kZSBzdXBwb3J0IGluIFNNVFBIYW5kbGVyIHRocm91Z2ggYmV0dGVyIHVzZSBvZgorICB0aGUgZW1haWwgcGFja2FnZS4gVGhhbmtzIHRvIHVzZXIgc2ltb24wNCBmb3IgdGhlIHBhdGNoLgorCistIE1vdmUgdGhlIGltcCBtb2R1bGUgZnJvbSBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgdG8gRGVwcmVjYXRpb25XYXJuaW5nLgorCistIElzc3VlICMyNTQwNzogUmVtb3ZlIG1lbnRpb25zIG9mIHRoZSBmb3JtYXR0ZXIgbW9kdWxlIGJlaW5nIHJlbW92ZWQgaW4KKyAgUHl0aG9uIDMuNi4KKworLSBJc3N1ZSAjMjU0MDY6IEZpeGVkIGEgYnVnIGluIEMgaW1wbGVtZW50YXRpb24gb2YgT3JkZXJlZERpY3QubW92ZV90b19lbmQoKQorICB0aGF0IGNhdXNlZCBzZWdtZW50YXRpb24gZmF1bHQgb3IgaGFuZyBpbiBpdGVyYXRpbmcgYWZ0ZXIgbW92aW5nIHNldmVyYWwKKyAgaXRlbXMgdG8gdGhlIHN0YXJ0IG9mIG9yZGVyZWQgZGljdC4KKworLSBJc3N1ZSAjMjUzODI6IHBpY2tsZXRvb2xzLmRpcygpIG5vdyBvdXRwdXRzIGltcGxpY2l0IG1lbW8gaW5kZXggZm9yIHRoZQorICBNRU1PSVpFIG9wY29kZS4KKworLSBJc3N1ZSAjMjUzNTc6IEFkZCBhbiBvcHRpb25hbCBuZXdsaW5lIHBhcmFtZXIgdG8gYmluYXNjaWkuYjJhX2Jhc2U2NCgpLgorICBiYXNlNjQuYjY0ZW5jb2RlKCkgdXNlcyBpdCB0byBhdm9pZCBhIG1lbW9yeSBjb3B5LgorCistIElzc3VlICMyNDE2NDogT2JqZWN0cyB0aGF0IG5lZWQgY2FsbGluZyBgYF9fbmV3X19gYCB3aXRoIGtleXdvcmQgYXJndW1lbnRzLAorICBjYW4gbm93IGJlIHBpY2tsZWQgdXNpbmcgcGlja2xlIHByb3RvY29scyBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KKworLSBJc3N1ZSAjMjUzNjQ6IHppcGZpbGUgbm93IHdvcmtzIGluIHRocmVhZHMgZGlzYWJsZWQgYnVpbGRzLgorCistIElzc3VlICMyNTMyODogc210cGQncyBTTVRQQ2hhbm5lbCBub3cgY29ycmVjdGx5IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgYm90aAorICBkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGFyZSBzZXQgdG8gdHJ1ZS4KKworLSBJc3N1ZSAjMTYwOTk6IFJvYm90RmlsZVBhcnNlciBub3cgc3VwcG9ydHMgQ3Jhd2wtZGVsYXkgYW5kIFJlcXVlc3QtcmF0ZQorICBleHRlbnNpb25zLiAgUGF0Y2ggYnkgTmlrb2xheSBCb2dveWNoZXYuCisKKy0gSXNzdWUgIzI1MzE2OiBkaXN0dXRpbHMgcmFpc2VzIE9TRXJyb3IgaW5zdGVhZCBvZiBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCisgIHdoZW4gTVNWQyBpcyBub3QgaW5zdGFsbGVkLgorCistIElzc3VlICMyNTM4MDogRml4ZWQgcHJvdG9jb2wgZm9yIHRoZSBTVEFDS19HTE9CQUwgb3Bjb2RlIGluCisgIHBpY2tsZXRvb2xzLm9wY29kZXMuCisKKy0gSXNzdWUgIzIzOTcyOiBVcGRhdGVzIGFzeW5jaW8gZGF0YWdyYW0gY3JlYXRlIG1ldGhvZCBhbGxvd2luZyByZXVzZXBvcnQKKyAgYW5kIHJldXNlYWRkciBzb2NrZXQgb3B0aW9ucyB0byBiZSBzZXQgcHJpb3IgdG8gYmluZGluZyB0aGUgc29ja2V0LgorICBNaXJyb3JpbmcgdGhlIGV4aXN0aW5nIGFzeW5jaW8gY3JlYXRlX3NlcnZlciBtZXRob2QgdGhlIHJldXNlYWRkciBvcHRpb24KKyAgZm9yIGRhdGFncmFtIHNvY2tldHMgZGVmYXVsdHMgdG8gVHJ1ZSBpZiB0aGUgTy9TIGlzICdwb3NpeCcgKGV4Y2VwdCBpZiB0aGUKKyAgcGxhdGZvcm0gaXMgQ3lnd2luKS4gUGF0Y2ggYnkgQ2hyaXMgTGF3cy4KKworLSBJc3N1ZSAjMjUzMDQ6IEFkZCBhc3luY2lvLnJ1bl9jb3JvdXRpbmVfdGhyZWFkc2FmZSgpLiAgVGhpcyBsZXRzIHlvdQorICBzdWJtaXQgYSBjb3JvdXRpbmUgdG8gYSBsb29wIGZyb20gYW5vdGhlciB0aHJlYWQsIHJldHVybmluZyBhCisgIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuICBCeSBWaW5jZW50IE1pY2hlbC4KKworLSBJc3N1ZSAjMjUyMzI6IEZpeCBDR0lSZXF1ZXN0SGFuZGxlciB0byBzcGxpdCB0aGUgcXVlcnkgZnJvbSB0aGUgVVJMIGF0IHRoZQorICBmaXJzdCBxdWVzdGlvbiBtYXJrICg/KSByYXRoZXIgdGhhbiB0aGUgbGFzdC4gUGF0Y2ggZnJvbSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjQ2NTc6IFByZXZlbnQgQ0dJUmVxdWVzdEhhbmRsZXIgZnJvbSBjb2xsYXBzaW5nIHNsYXNoZXMgaW4gdGhlCisgIHF1ZXJ5IHBhcnQgb2YgdGhlIFVSTCBhcyBpZiBpdCB3ZXJlIGEgcGF0aC4gUGF0Y2ggZnJvbSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjUyODc6IERvbid0IGFkZCBjcnlwdC5NRVRIT0RfQ1JZUFQgdG8gY3J5cHQubWV0aG9kcyBpZiBpdCdzIG5vdAorICBzdXBwb3J0ZWQuIENoZWNrIGlmIGl0IGlzIHN1cHBvcnRlZCwgaXQgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24gT3BlbkJTRCBmb3IKKyAgZXhhbXBsZS4KKworLSBJc3N1ZSAjMjM2MDA6IERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdHppbmZvLmZyb211dGMoKSB3YXMgcmV0dXJuaW5nCisgIHdyb25nIHJlc3VsdHMgaW4gc29tZSBjYXNlcy4KKworLSBJc3N1ZSAjMjUyMDM6IEZhaWxlZCByZWFkbGluZS5zZXRfY29tcGxldGVyX2RlbGltcygpIG5vIGxvbmdlciBsZWZ0IHRoZQorICBtb2R1bGUgaW4gaW5jb25zaXN0ZW50IHN0YXRlLgorCistIElzc3VlICMyNTAxMTogcmxjb21wbGV0ZXIgbm93IG9taXRzIHByaXZhdGUgYW5kIHNwZWNpYWwgYXR0cmlidXRlIG5hbWVzIHVubGVzcworICB0aGUgcHJlZml4IHN0YXJ0cyB3aXRoIHVuZGVyc2NvcmVzLgorCistIElzc3VlICMyNTIwOTogcmxjb21wbGV0ZXIgbm93IGNhbiBhZGQgYSBzcGFjZSBvciBhIGNvbG9uIGFmdGVyIGNvbXBsZXRlZAorICBrZXl3b3JkLgorCistIElzc3VlICMyMjI0MTogdGltZXpvbmUudXRjIG5hbWUgaXMgbm93IHBsYWluICdVVEMnLCBub3QgJ1VUQy0wMDowMCcuCisKKy0gSXNzdWUgIzIzNTE3OiBmcm9tdGltZXN0YW1wKCkgYW5kIHV0Y2Zyb210aW1lc3RhbXAoKSBtZXRob2RzIG9mCisgIGRhdGV0aW1lLmRhdGV0aW1lIG5vdyByb3VuZCBtaWNyb3NlY29uZHMgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG8KKyAgbmVhcmVzdCBldmVuIGludGVnZXIgKFJPVU5EX0hBTEZfRVZFTiksIGFzIHJvdW5kKGZsb2F0KSwgaW5zdGVhZCBvZiByb3VuZGluZworICB0b3dhcmRzIC1JbmZpbml0eSAoUk9VTkRfRkxPT1IpLgorCistIElzc3VlICMyMzU1MjogVGltZWl0IG5vdyB3YXJucyB3aGVuIHRoZXJlIGlzIHN1YnN0YW50aWFsICg0eCkgdmFyaWFuY2UKKyAgYmV0d2VlbiBiZXN0IGFuZCB3b3JzdCB0aW1lcy4gUGF0Y2ggZnJvbSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNDYzMzogc2l0ZS1wYWNrYWdlcy9SRUFETUUgLT4gUkVBRE1FLnR4dC4KKworLSBJc3N1ZSAjMjQ4Nzk6IGhlbHAoKSBhbmQgcHlkb2MgY2FuIG5vdyBsaXN0IG5hbWVkIHR1cGxlIGZpZWxkcyBpbiB0aGUKKyAgb3JkZXIgdGhleSB3ZXJlIGRlZmluZWQgcmF0aGVyIHRoYW4gYWxwaGFiZXRpY2FsbHkuICBUaGUgb3JkZXJpbmcgaXMKKyAgZGV0ZXJtaW5lZCBieSB0aGUgX2ZpZWxkcyBhdHRyaWJ1dGUgaWYgcHJlc2VudC4KKworLSBJc3N1ZSAjMjQ4NzQ6IEltcHJvdmUgc3BlZWQgb2YgaXRlcnRvb2xzLmN5Y2xlKCkgYW5kIG1ha2UgaXRzCisgIHBpY2tsZSBtb3JlIGNvbXBhY3QuCisKKy0gRml4IGNyYXNoIGluIGl0ZXJ0b29scy5jeWNsZS5fX3NldHN0YXRlX18oKSB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCB3YXNuJ3QKKyAgYSBsaXN0LgorCistIElzc3VlICMyMDA1OTogdXJsbGliLnBhcnNlIHJhaXNlcyBWYWx1ZUVycm9yIG9uIGFsbCBpbnZhbGlkIHBvcnRzLgorICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyNDM2MDogSW1wcm92ZSBfX3JlcHJfXyBvZiBhcmdwYXJzZS5OYW1lc3BhY2UoKSBmb3IgaW52YWxpZAorICBpZGVudGlmaWVycy4gIFBhdGNoIGJ5IE1hdHRoaWFzIEJ1c3Nvbm5pZXIuCisKKy0gSXNzdWUgIzIzNDI2OiBydW5fc2V0dXAgd2FzIGJyb2tlbiBpbiBkaXN0dXRpbHMuCisgIFBhdGNoIGZyb20gQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWUgIzEzOTM4OiAydG8zIGNvbnZlcnRzIFN0cmluZ1R5cGVzIHRvIGEgdHVwbGUuIFBhdGNoIGZyb20gTWFyayBIYW1tb25kLgorCistIElzc3VlICMyMDkxOiBvcGVuKCkgYWNjZXB0ZWQgYSAnVScgbW9kZSBzdHJpbmcgY29udGFpbmluZyAnKycsIGJ1dCAnVScgY2FuCisgIG9ubHkgYmUgdXNlZCB3aXRoICdyJy4gUGF0Y2ggZnJvbSBKZWZmIEJhbG9naCBhbmQgSm9obiBPJ0Nvbm5vci4KKworLSBJc3N1ZSAjODU4NTogaW1wcm92ZWQgdGVzdHMgZm9yIHppcGltcG9ydGVyMi4gUGF0Y2ggZnJvbSBNYXJrIExhd3JlbmNlLgorCistIElzc3VlICMxODYyMjogdW5pdHRlc3QubW9jay5tb2NrX29wZW4oKS5yZXNldF9tb2NrIHdvdWxkIHJlY3Vyc2UgaW5maW5pdGVseS4KKyAgUGF0Y2ggZnJvbSBOaWNvbGEgUGFsdW1ibyBhbmQgTGF1cmVudCBEZSBCdXlzdC4KKworLSBJc3N1ZSAjMjQ0MjY6IEZhc3Qgc2VhcmNoaW5nIG9wdGltaXphdGlvbiBpbiByZWd1bGFyIGV4cHJlc3Npb25zIG5vdyB3b3JrcworICBmb3IgcGF0dGVybnMgdGhhdCBzdGFydHMgd2l0aCBjYXB0dXJpbmcgZ3JvdXBzLiAgRmFzdCBzZWFyY2hpbmcgb3B0aW1pemF0aW9uCisgIG5vdyBjYW4ndCBiZSBkaXNhYmxlZCBhdCBjb21waWxlIHRpbWUuCisKKy0gSXNzdWUgIzIzNjYxOiB1bml0dGVzdC5tb2NrIHNpZGVfZWZmZWN0cyBjYW4gbm93IGJlIGV4Y2VwdGlvbnMgYWdhaW4uIFRoaXMKKyAgd2FzIGEgcmVncmVzc2lvbiB2cyBQeXRob24gMy40LiBQYXRjaCBmcm9tIElnbmFjaW8gUm9zc2kKKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBkZXByZWNhdGVkIGluc3BlY3QuZ2V0bW9kdWxlaW5mbyBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMjU1Nzg6IEZpeCAoYW5vdGhlcikgbWVtb3J5IGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXIoKS4KKworLSBJc3N1ZSAjMjU1MzA6IERpc2FibGUgdGhlIHZ1bG5lcmFibGUgU1NMdjMgcHJvdG9jb2wgYnkgZGVmYXVsdCB3aGVuIGNyZWF0aW5nCisgIHNzbC5TU0xDb250ZXh0LgorCistIElzc3VlICMyNTU2OTogRml4IG1lbW9yeSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpLgorCistIElzc3VlICMyNTQ3MTogU29ja2V0cyByZXR1cm5lZCBmcm9tIGFjY2VwdCgpIHNob3VsZG4ndCBhcHBlYXIgdG8gYmUKKyAgbm9uYmxvY2tpbmcuCisKKy0gSXNzdWUgIzI1MzE5OiBXaGVuIHRocmVhZGluZy5FdmVudCBpcyByZWluaXRpYWxpemVkLCB0aGUgdW5kZXJseWluZyBjb25kaXRpb24KKyAgc2hvdWxkIHVzZSBhIHJlZ3VsYXIgbG9jayByYXRoZXIgdGhhbiBhIHJlY3Vyc2l2ZSBsb2NrLgorCiAtIFNraXAgZ2V0YWRkcmluZm8gaWYgaG9zdCBpcyBhbHJlYWR5IHJlc29sdmVkLgogICBQYXRjaCBieSBBLiBKZXNzZSBKaXJ5dSBEYXZpcy4KIApAQCAtOTU4LDUzICsyMzMwLDkgQEAKIAogLSBJc3N1ZSAjMjcwNDE6IGFzeW5jaW86IEFkZCBsb29wLmNyZWF0ZV9mdXR1cmUgbWV0aG9kCiAKLS0gSXNzdWUgIzI3MjIzOiBhc3luY2lvOiBGaXggX3JlYWRfcmVhZHkgYW5kIF93cml0ZV9yZWFkeSB0byByZXNwZWN0Ci0gIF9jb25uX2xvc3QuCi0gIFBhdGNoIGJ5IMWBdWthc3ogTGFuZ2EuCi0KLS0gSXNzdWUgIzIyOTcwOiBhc3luY2lvOiBGaXggaW5jb25zaXN0ZW5jeSBjYW5jZWxsaW5nIENvbmRpdGlvbi53YWl0LgotICBQYXRjaCBieSBEYXZpZCBDb2xlcy4KLQogSURMRQogLS0tLQogCi0tIElzc3VlICM1MTI0OiBQYXN0ZSB3aXRoIHRleHQgc2VsZWN0ZWQgbm93IHJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gb24gWDExLgotICBUaGlzIG1hdGNoZXMgaG93IHBhc3RlIHdvcmtzIG9uIFdpbmRvd3MsIE1hYywgbW9zdCBtb2Rlcm4gTGludXggYXBwcywKLSAgYW5kIHR0ayB3aWRnZXRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMjQ3NTk6IE1ha2UgY2xlYXIgaW4gaWRsZWxpYi5pZGxlX3Rlc3QuX19pbml0X18gdGhhdCB0aGUgZGlyZWN0b3J5Ci0gIGlzIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0LnRlc3RfaWRsZSBhbmQgdG9vbCBmb3IgbWFpbnRhaW5lcnMuCi0KLS0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWQnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgotICBUaGVzZSBwZXJzaXN0ZWQgYWZ0ZXIgb3RoZXIgd2FybmluZ3Mgd2VyZSBzdXBwcmVzc2VkIGluICMyMDU2Ny4KLSAgQXBwbHkgU2VyaGl5IFN0b3JjaGFrYSdzIHVwZGF0ZV9pZGxldGFza3Mgc29sdXRpb24gdG8gZm91ciB0ZXN0IGZpbGVzLgotICBSZWNvcmQgdGhpcyBhZGRpdGlvbmFsIGFkdmljZSBpbiBpZGxlX3Rlc3QvUkVBRE1FLnR4dAotCi0tIElzc3VlICMyMDU2NzogUmV2aXNlIGlkbGVfdGVzdC9SRUFETUUudHh0IHdpdGggYWR2aWNlIGFib3V0IGF2b2lkaW5nCi0gIHRrIHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0ZXN0cy4gIEFwcGx5IGFkdmljZSB0byBzZXZlcmFsIElETEUgdGVzdHMuCi0KLS0gSXNzdWUgIzI3MTE3OiBNYWtlIGNvbG9yaXplciBodGVzdCBhbmQgdHVydGxlZGVtbyB3b3JrIHdpdGggZGFyayB0aGVtZXMuCi0gIE1vdmUgY29kZSBmb3IgY29uZmlndXJpbmcgdGV4dCB3aWRnZXQgY29sb3JzIHRvIGEgbmV3IGZ1bmN0aW9uLgotCi0tIElzc3VlICMyNjY3MzogV2hlbiB0ayByZXBvcnRzIGZvbnQgc2l6ZSBhcyAwLCBjaGFuZ2UgdG8gc2l6ZSAxMC4KLSAgU3VjaCBmb250cyBvbiBMaW51eCBwcmV2ZW50ZWQgdGhlIGNvbmZpZ3VyYXRpb24gZGlhbG9nIGZyb20gb3BlbmluZy4KLQotLSBJc3N1ZSAjMjE5Mzk6IEFkZCB0ZXN0IGZvciBJRExFJ3MgcGVyY29sYXRvci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgotCi0tIElzc3VlICMyMTY3NjogQWRkIHRlc3QgZm9yIElETEUncyByZXBsYWNlIGRpYWxvZy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgotCi0tIElzc3VlICMxODQxMDogQWRkIHRlc3QgZm9yIElETEUncyBzZWFyY2ggZGlhbG9nLgotICBPcmlnaW5hbCBwYXRjaCBieSBXZXN0bGV5IE1hcnTDrW5lei4KLQotLSBJc3N1ZSAjMjE3MDM6IEFkZCB0ZXN0IGZvciBJRExFJ3MgdW5kbyBkZWxlZ2F0b3IuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthciAuCi0KLS0gSXNzdWUgIzI3MDQ0OiBBZGQgQ29uZmlnRGlhbG9nLnJlbW92ZV92YXJfY2FsbGJhY2tzIHRvIHN0b3AgbWVtb3J5IGxlYWtzLgotCi0tIElzc3VlICMyMzk3NzogQWRkIG1vcmUgYXNzZXJ0cyB0byB0ZXN0X2RlbGVnYXRvci4KLQogLSBJc3N1ZSAjMjA2NDA6IEFkZCB0ZXN0cyBmb3IgaWRsZWxpYi5jb25maWdIZWxwU291cmNlRWRpdC4KICAgUGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgogCkBAIC0xMDE4LDE0ICsyMzQ2LDEwMyBAQAogICBNQVJLIGluIFJFQURNRS50eHQgYW5kIG9wZW4gdGhpcyBhbmQgTkVXUy50eHQgd2l0aCAnYXNjaWknLgogICBSZS1lbmNvZGUgQ1JFRElUUy50eHQgdG8gdXRmLTggYW5kIG9wZW4gaXQgd2l0aCAndXRmLTgnLgogCistIElzc3VlICMxNTM0ODogU3RvcCB0aGUgZGVidWdnZXIgZW5naW5lIChub3JtYWxseSBpbiBhIHVzZXIgcHJvY2VzcykKKyAgYmVmb3JlIGNsb3NpbmcgdGhlIGRlYnVnZ2VyIHdpbmRvdyAocnVubmluZyBpbiB0aGUgSURMRSBwcm9jZXNzKS4KKyAgVGhpcyBwcmV2ZW50cyB0aGUgUnVudGltZUVycm9ycyB0aGF0IHdlcmUgYmVpbmcgY2F1Z2h0IGFuZCBpZ25vcmVkLgorCistIElzc3VlICMyNDQ1NTogUHJldmVudCBJRExFIGZyb20gaGFuZ2luZyB3aGVuIGEpIGNsb3NpbmcgdGhlIHNoZWxsIHdoaWxlIHRoZQorICBkZWJ1Z2dlciBpcyBhY3RpdmUgKDE1MzQ3KTsgYikgY2xvc2luZyB0aGUgZGVidWdnZXIgd2l0aCB0aGUgW1hdIGJ1dHRvbgorICAoMTUzNDgpOyBhbmQgYykgYWN0aXZhdGluZyB0aGUgZGVidWdnZXIgd2hlbiBhbHJlYWR5IGFjdGl2ZSAoMjQ0NTUpLgorICBUaGUgcGF0Y2ggYnkgTWFyayBSb3NlbWFuIGRvZXMgdGhpcyBieSBtYWtpbmcgdHdvIGNoYW5nZXMuCisgIDEuIFN1c3BlbmQgYW5kIHJlc3VtZSB0aGUgZ3VpLmludGVyYWN0aW9uIG1ldGhvZCB3aXRoIHRoZSB0Y2wgdndhaXQKKyAgbWVjaGFuaXNtIGludGVuZGVkIGZvciB0aGlzIHB1cnBvc2UgKGluc3RlYWQgb2Ygcm9vdC5tYWlubG9vcCAmIC5xdWl0KS4KKyAgMi4gSW4gZ3VpLnJ1biwgYWxsb3cgYW55IGV4aXN0aW5nIGludGVyYWN0aW9uIHRvIHRlcm1pbmF0ZSBmaXJzdC4KKworLSBDaGFuZ2UgJ1RoZSBwcm9ncmFtJyB0byAnWW91ciBwcm9ncmFtJyBpbiBhbiBJRExFICdraWxsIHByb2dyYW0/JyBtZXNzYWdlCisgIHRvIG1ha2UgaXQgY2xlYXJlciB0aGF0IHRoZSBwcm9ncmFtIHJlZmVycmVkIHRvIGlzIHRoZSBjdXJyZW50bHkgcnVubmluZworICB1c2VyIHByb2dyYW0sIG5vdCBJRExFIGl0c2VsZi4KKworLSBJc3N1ZSAjMjQ3NTA6IEltcHJvdmUgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIElETEUgZWRpdG9yIHdpbmRvdyBzdGF0dXMgYmFyLgorICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MzEzOiBDaGFuZ2UgdGhlIGhhbmRsaW5nIG9mIG5ldyBidWlsdC1pbiB0ZXh0IGNvbG9yIHRoZW1lcyB0byBiZXR0ZXIKKyAgYWRkcmVzcyB0aGUgY29tcGF0aWJpbGl0eSBwcm9ibGVtIGludHJvZHVjZWQgYnkgdGhlIGFkZGl0aW9uIG9mIElETEUgRGFyay4KKyAgQ29uc2lzdGVudGx5IHVzZSB0aGUgcmV2aXNlZCBpZGxlQ29uZi5DdXJyZW50VGhlbWUgZXZlcnl3aGVyZSBpbiBpZGxlbGliLgorCistIElzc3VlICMyNDc4MjogRXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gaXMgbm93IGEgdGFiIGluIHRoZSBJRExFIFByZWZlcmVuY2VzCisgIGRpYWxvZyByYXRoZXIgdGhhbiBhIHNlcGFyYXRlIGRpYWxvZy4gIFRoZSBmb3JtZXIgdGFicyBhcmUgbm93IGEgc29ydGVkCisgIGxpc3QuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzIyNzI2OiBSZS1hY3RpdmF0ZSB0aGUgY29uZmlnIGRpYWxvZyBoZWxwIGJ1dHRvbiB3aXRoIHNvbWUgY29udGVudAorICBhYm91dCB0aGUgb3RoZXIgYnV0dG9ucyBhbmQgdGhlIG5ldyBJRExFIERhcmsgdGhlbWUuCisKKy0gSXNzdWUgIzI0ODIwOiBJRExFIG5vdyBoYXMgYW4gJ0lETEUgRGFyaycgYnVpbHQtaW4gdGV4dCBjb2xvciB0aGVtZS4KKyAgSXQgaXMgbW9yZSBvciBsZXNzIElETEUgQ2xhc3NpYyBpbnZlcnRlZCwgd2l0aCBhIGNvYmFsdCBibHVlIGJhY2tncm91bmQuCisgIFN0cmluZ3MsIGNvbW1lbnRzLCBrZXl3b3JkcywgLi4uIGFyZSBzdGlsbCBncmVlbiwgcmVkLCBvcmFuZ2UsIC4uLiAuCisgIFRvIHVzZSBpdCB3aXRoIElETEVzIHJlbGVhc2VkIGJlZm9yZSBOb3ZlbWJlciAyMDE1LCBoaXQgdGhlCisgICdTYXZlIGFzIE5ldyBDdXN0b20gVGhlbWUnIGJ1dHRvbiBhbmQgZW50ZXIgYSBuZXcgbmFtZSwKKyAgc3VjaCBhcyAnQ3VzdG9tIERhcmsnLiAgVGhlIGN1c3RvbSB0aGVtZSB3aWxsIHdvcmsgd2l0aCBhbnkgSURMRQorICByZWxlYXNlLCBhbmQgY2FuIGJlIG1vZGlmaWVkLgorCistIElzc3VlICMyNTIyNDogUkVBRE1FLnR4dCBpcyBub3cgYW4gaWRsZWxpYiBpbmRleCBmb3IgSURMRSBkZXZlbG9wZXJzIGFuZAorICBjdXJpb3VzIHVzZXJzLiAgVGhlIHByZXZpb3VzIHVzZXIgY29udGVudCBpcyBub3cgaW4gdGhlIElETEUgZG9jIGNoYXB0ZXIuCisgICdJRExFJyBub3cgbWVhbnMgJ0ludGVncmF0ZWQgRGV2ZWxvcG1lbnQgYW5kIExlYXJuaW5nIEVudmlyb25tZW50Jy4KKworLSBJc3N1ZSAjMjQ4MjA6IFVzZXJzIGNhbiBub3cgc2V0IGJyZWFrcG9pbnQgY29sb3JzIGluCisgIFNldHRpbmdzIC0+IEN1c3RvbSBIaWdobGlnaHRpbmcuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0OTcyOiBJbmFjdGl2ZSBzZWxlY3Rpb24gYmFja2dyb3VuZCBub3cgbWF0Y2hlcyBhY3RpdmUgc2VsZWN0aW9uCisgIGJhY2tncm91bmQsIGFzIGNvbmZpZ3VyZWQgYnkgdXNlcnMsIG9uIGFsbCBzeXN0ZW1zLiAgRm91bmQgaXRlbXMgYXJlIG5vdworICBhbHdheXMgaGlnaGxpZ2h0ZWQgb24gV2luZG93cy4gIEluaXRpYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNDU3MDogSWRsZTogbWFrZSBjYWxsdGlwIGFuZCBjb21wbGV0aW9uIGJveGVzIGFwcGVhciBvbiBNYWNzCisgIGFmZmVjdGVkIGJ5IGEgdGsgcmVncmVzc2lvbi4gIEluaXRpYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNDk4ODogSWRsZSBTY3JvbGxlZExpc3QgY29udGV4dCBtZW51cyAodXNlZCBpbiBkZWJ1Z2dlcikKKyAgbm93IHdvcmsgb24gTWFjIEFxdWEuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0ODAxOiBNYWtlIHJpZ2h0LWNsaWNrIGZvciBjb250ZXh0IG1lbnUgd29yayBvbiBNYWMgQXF1YS4KKyAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNTE3MzogQXNzb2NpYXRlIHRraW50ZXIgbWVzc2FnZWJveGVzIHdpdGggYSBzcGVjaWZpYyB3aWRnZXQuCisgIEZvciBNYWMgT1NYLCBtYWtlIHRoZW0gYSAnc2hlZXQnLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNTE5ODogRW5oYW5jZSB0aGUgaW5pdGlhbCBodG1sIHZpZXdlciBub3cgdXNlZCBmb3IgSWRsZSBIZWxwLgorICAqIFByb3Blcmx5IGluZGVudCBmaXhlZC1waXRjaCB0ZXh0IChwYXRjaCBieSBNYXJrIFJvc2VtYW4pLgorICAqIEdpdmUgY29kZSBzbmlwcGV0IGEgdmVyeSBTcGhpbngtbGlrZSBsaWdodCBibHVlaXNoLWdyYXkgYmFja2dyb3VuZC4KKyAgKiBSZS11c2UgaW5pdGlhbCB3aWR0aCBhbmQgaGVpZ2h0IHNldCBieSB1c2VycyBmb3Igc2hlbGwgYW5kIGVkaXRvci4KKyAgKiBXaGVuIHRoZSBUYWJsZSBvZiBDb250ZW50cyAoVE9DKSBtZW51IGlzIHVzZWQsIHB1dCB0aGUgc2VjdGlvbiBoZWFkZXIKKyAgYXQgdGhlIHRvcCBvZiB0aGUgc2NyZWVuLgorCistIElzc3VlICMyNTIyNTogQ29uZGVuc2UgYW5kIHJld3JpdGUgSWRsZSBkb2Mgc2VjdGlvbiBvbiB0ZXh0IGNvbG9ycy4KKworLSBJc3N1ZSAjMjE5OTU6IEV4cGxhaW4gc29tZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIElETEUgYW5kIGNvbnNvbGUgUHl0aG9uLgorCistIElzc3VlICMyMjgyMDogRXhwbGFpbiBuZWVkIGZvciAqcHJpbnQqIHdoZW4gcnVubmluZyBmaWxlIGZyb20gSWRsZSBlZGl0b3IuCisKKy0gSXNzdWUgIzI1MjI0OiBEb2M6IGF1Z21lbnQgSWRsZSBmZWF0dXJlIGxpc3QgYW5kIG5vLXN1YnByb2Nlc3Mgc2VjdGlvbi4KKworLSBJc3N1ZSAjMjUyMTk6IFVwZGF0ZSBkb2MgZm9yIElkbGUgY29tbWFuZCBsaW5lIG9wdGlvbnMuCisgIFNvbWUgd2VyZSBtaXNzaW5nIGFuZCBub3RlcyB3ZXJlIG5vdCBjb3JyZWN0LgorCistIElzc3VlICMyNDg2MTogTW9zdCBvZiBpZGxlbGliIGlzIHByaXZhdGUgYW5kIHN1YmplY3QgdG8gY2hhbmdlLgorICBVc2UgaWRsZWliLmlkbGUuKiB0byBzdGFydCBJZGxlLiBTZWUgaWRsZWxpYi5fX2luaXRfXy5fX2RvY19fLgorCistIElzc3VlICMyNTE5OTogSWRsZTogYWRkIHN5bmNocm9uaXphdGlvbiBjb21tZW50cyBmb3IgZnV0dXJlIG1haW50YWluZXJzLgorCistIElzc3VlICMxNjg5MzogUmVwbGFjZSBoZWxwLnR4dCB3aXRoIGhlbHAuaHRtbCBmb3IgSWRsZSBkb2MgZGlzcGxheS4KKyAgVGhlIG5ldyBpZGxlbGliL2hlbHAuaHRtbCBpcyByc3RyaXBwZWQgRG9jL2J1aWxkL2h0bWwvbGlicmFyeS9pZGxlLmh0bWwuCisgIEl0IGxvb2tzIGJldHRlciB0aGFuIGhlbHAudHh0IGFuZCB3aWxsIGJldHRlciBkb2N1bWVudCBJZGxlIGFzIHJlbGVhc2VkLgorICBUaGUgdGtpbnRlciBodG1sIHZpZXdlciB0aGF0IHdvcmtzIGZvciB0aGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgUm9zZSBSb3NlbWFuLgorICBUaGUgbm93IHVudXNlZCBFZGl0b3JXaW5kb3cuSGVscERpYWxvZyBjbGFzcyBhbmQgaGVsdC50eHQgZmlsZSBhcmUgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjQxOTk6IERlcHJlY2F0ZSB1bnVzZWQgaWRsZWxpYi5pZGxldmVyIHdpdGggcG9zc2libGUgcmVtb3ZhbCBpbiAzLjYuCisKKy0gSXNzdWUgIzI0NzkwOiBSZW1vdmUgZXh0cmFuZW91cyBjb2RlICh3aGljaCBhbHNvIGNyZWF0ZSAyICYgMyBjb25mbGljdHMpLgorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE5NDg5OiBNb3ZlZCB0aGUgc2VhcmNoIGJveCBmcm9tIHRoZSBzaWRlYmFyIHRvIHRoZSBoZWFkZXIgYW5kIGZvb3RlcgotICBvZiBlYWNoIHBhZ2UuICBQYXRjaCBieSBBbW1hciBBc2thci4KLQotLSBJc3N1ZSAjMjQxMzY6IERvY3VtZW50IHRoZSBuZXcgUEVQIDQ0OCB1bnBhY2tpbmcgc3ludGF4IG9mIDMuNS4KLQogLSBJc3N1ZSAjMjY3MzY6IFVzZWQgSFRUUFMgZm9yIGV4dGVybmFsIGxpbmtzIGluIHRoZSBkb2N1bWVudGF0aW9uIGlmIHBvc3NpYmxlLgogCiAtIElzc3VlICM2OTUzOiBSZXdvcmsgdGhlIFJlYWRsaW5lIG1vZHVsZSBkb2N1bWVudGF0aW9uIHRvIGdyb3VwIHJlbGF0ZWQKQEAgLTEwMzQsOCArMjQ1MSw4IEBACiAKIC0gSXNzdWUgIzIzNjA2OiBBZGRzIG5vdGUgdG8gY3R5cGVzIGRvY3VtZW50YXRpb24gcmVnYXJkaW5nIGNkbGwubXN2Y3J0LgogCi0tIElzc3VlICMyNTUwMDogRml4IGRvY3VtZW50YXRpb24gdG8gbm90IGNsYWltIHRoYXQgX19pbXBvcnRfXyBpcyBzZWFyY2hlZCBmb3IKLSAgaW4gdGhlIGdsb2JhbCBzY29wZS4KKy0gSXNzdWUgIzI0OTUyOiBDbGFyaWZ5IHRoZSBkZWZhdWx0IHNpemUgYXJndW1lbnQgb2Ygc3RhY2tfc2l6ZSgpIGluCisgIHRoZSAidGhyZWFkaW5nIiBhbmQgIl90aHJlYWQiIG1vZHVsZXMuIFBhdGNoIGZyb20gTWF0dGlwLgogCiAtIElzc3VlICMyNjAxNDogVXBkYXRlIDMueCBwYWNrYWdpbmcgZG9jdW1lbnRhdGlvbjoKICAgKiAiU2VlIGFsc28iIGxpbmtzIHRvIHRoZSBuZXcgZG9jcyBhcmUgbm93IHByb3ZpZGVkIGluIHRoZSBsZWdhY3kgcGFnZXMKQEAgLTEwNDcsNiArMjQ2NCw5IEBACiAtIElzc3VlICMyMTkxNjogQWRkZWQgdGVzdHMgZm9yIHRoZSB0dXJ0bGUgbW9kdWxlLiAgUGF0Y2ggYnkgaW5ncmlkLAogICBHcmVnb3J5IExveXNlIGFuZCBKZWxsZSBaaWpsc3RyYS4KIAorLSBJc3N1ZSAjMjYyOTU6IFdoZW4gdXNpbmcgInB5dGhvbjMgLW0gdGVzdCAtLXRlc3RkaXI9VEVTVERJUiIsIHJlZ3J0ZXN0CisgIGRvZXNuJ3QgYWRkICJ0ZXN0LiIgcHJlZml4IHRvIHRlc3QgbW9kdWxlIG5hbWVzLgorCiAtIElzc3VlICMyNjUyMzogVGhlIG11bHRpcHJvY2Vzc2luZyB0aHJlYWQgcG9vbCAobXVsdGlwcm9jZXNzaW5nLmR1bW15LlBvb2wpCiAgIHdhcyB1bnRlc3RlZC4KIApAQCAtMTA1NSwzMSArMjQ3NSw1MCBAQAogLSBJc3N1ZSAjMjYzMjU6IEFkZGVkIHRlc3Quc3VwcG9ydC5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCkgdG8gY2hlY2sgdGhhdAogICBubyBSZXNvdXJjZVdhcm5pbmcgaXMgZW1pdHRlZC4KIAotLSBJc3N1ZSAjMjU5NDA6IENoYW5nZWQgdGVzdF9zc2wgdG8gdXNlIHNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0LiAgVGhpcworLSBJc3N1ZSAjMjU5NDA6IENoYW5nZWQgdGVzdF9zc2wgdG8gdXNlIGl0cyBpbnRlcm5hbCBsb2NhbCBzZXJ2ZXIgbW9yZS4gIFRoaXMKICAgYXZvaWRzIHJlbHlpbmcgb24gc3ZuLnB5dGhvbi5vcmcsIHdoaWNoIHJlY2VudGx5IGNoYW5nZWQgcm9vdCBjZXJ0aWZpY2F0ZS4KIAogLSBJc3N1ZSAjMjU2MTY6IFRlc3RzIGZvciBPcmRlcmVkRGljdCBhcmUgZXh0cmFjdGVkIGZyb20gdGVzdF9jb2xsZWN0aW9ucwogICBpbnRvIHNlcGFyYXRlIGZpbGUgdGVzdF9vcmRlcmVkX2RpY3QuCiAKKy0gSXNzdWUgIzI1NDQ5OiBBZGRlZCB0ZXN0cyBmb3IgT3JkZXJlZERpY3Qgc3ViY2xhc3Nlcy4KKworLSBJc3N1ZSAjMjUxODg6IEFkZCAtUC8tLXBnbyB0byB0ZXN0LnJlZ3J0ZXN0IHRvIHN1cHByZXNzIGVycm9yIG91dHB1dCB3aGVuCisgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUgZm9yIHRoZSBwdXJwb3NlcyBvZiBhIFBHTyBidWlsZC4gSW5pdGlhbCBwYXRjaCBieQorICBBbGVjc2FuZHJ1IFBhdHJhc2N1LgorCistIElzc3VlICMyMjgwNjogQWRkIGBgcHl0aG9uIC1tIHRlc3QgLS1saXN0LXRlc3RzYGAgY29tbWFuZCB0byBsaXN0IHRlc3RzLgorCistIElzc3VlICMxODE3NDogYGBweXRob24gLW0gdGVzdCAtLWh1bnRybGVha3MgLi4uYGAgbm93IGFsc28gY2hlY2tzIGZvciBsZWFrIG9mCisgIGZpbGUgZGVzY3JpcHRvcnMuIFBhdGNoIHdyaXR0ZW4gYnkgUmljaGFyZCBPdWRrZXJrLgorCistIElzc3VlICMyNTI2MDogRml4IGBgcHl0aG9uIC1tIHRlc3QgLS1jb3ZlcmFnZWBgIG9uIFdpbmRvd3MuIFJlbW92ZSB0aGUKKyAgbGlzdCBvZiBpZ25vcmVkIGRpcmVjdG9yaWVzLgorCistIGBgUENidWlsZFxydC5iYXRgYCBub3cgYWNjZXB0cyBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBwYXNzIGFsb25nCisgIHRvIHJlZ3J0ZXN0LnB5LiAgUHJldmlvdXNseSB0aGVyZSB3YXMgYSBsaW1pdCBvZiA5LgorCiAtIElzc3VlICMyNjU4MzogU2tpcCB0ZXN0X3RpbWVzdGFtcF9vdmVyZmxvdyBpbiB0ZXN0X2ltcG9ydCBpZiBieXRlY29kZQogICBmaWxlcyBjYW5ub3QgYmUgd3JpdHRlbi4KIAogQnVpbGQKIC0tLS0tCiAKKy0gSXNzdWUgIzIxMjc3OiBEb24ndCB0cnkgdG8gbGluayBfY3R5cGVzIHdpdGggYSBmZmlfY29udmVuaWVuY2UgbGlicmFyeS4KKwogLSBJc3N1ZSAjMjY4ODQ6IEZpeCBsaW5raW5nIGV4dGVuc2lvbiBtb2R1bGVzIGZvciBjcm9zcyBidWlsZHMuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCistIElzc3VlICMyNjkzMjogRml4ZWQgc3VwcG9ydCBvZiBSVExEXyogY29uc3RhbnRzIGRlZmluZWQgYXMgZW51bSB2YWx1ZXMsCisgIG5vdCB2aWEgbWFjcm9zIChpbiBwYXJ0aWN1bGFyIG9uIEFuZHJvaWQpLiAgUGF0Y2ggYnkgQ2hpIEhzdWFuIFllbi4KKwogLSBJc3N1ZSAjMjIzNTk6IERpc2FibGUgdGhlIHJ1bGVzIGZvciBydW5uaW5nIF9mcmVlemVfaW1wb3J0bGliIGFuZCBwZ2VuIHdoZW4KICAgY3Jvc3MtY29tcGlsaW5nLiAgVGhlIG91dHB1dCBvZiB0aGVzZSBwcm9ncmFtcyBpcyBub3JtYWxseSBzYXZlZCB3aXRoIHRoZQogICBzb3VyY2UgY29kZSBhbnl3YXksIGFuZCBpcyBzdGlsbCByZWdlbmVyYXRlZCB3aGVuIGRvaW5nIGEgbmF0aXZlIGJ1aWxkLgogICBQYXRjaCBieSBYYXZpZXIgZGUgR2F5ZS4KIAotLSBJc3N1ZSAjMjcyMjk6IEZpeCB0aGUgY3Jvc3MtY29tcGlsaW5nIHBnZW4gcnVsZSBmb3IgaW4tdHJlZSBidWlsZHMuICBQYXRjaAotICBieSBYYXZpZXIgZGUgR2F5ZS4KLQogLSBJc3N1ZSAjMjE2Njg6IExpbmsgYXVkaW9vcCwgX2RhdGV0aW1lLCBfY3R5cGVzX3Rlc3QgbW9kdWxlcyB0byBsaWJtLAotICBleGNlcHQgb24gTWFjIE9TIFguIFBhdGNoIHdyaXR0ZW4gYnkgWGF2aWVyIGRlIEdheWUuCisgIGV4Y2VwdCBvbiBNYWMgT1MgWC4gUGF0Y2ggd3JpdHRlbiBieSBDaGkgSHN1YW4gWWVuLgogCiAtIElzc3VlICMyNTcwMjogQSAtLXdpdGgtbHRvIGNvbmZpZ3VyZSBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdGhhdCB3aWxsCiAgIGVuYWJsZSBsaW5rIHRpbWUgb3B0aW1pemF0aW9ucyBhdCBidWlsZCB0aW1lIGR1cmluZyBhIG1ha2UgcHJvZmlsZS1vcHQuCkBAIC0xMDk4LDIyICsyNTM3LDI0IEBACiAKIC0gSXNzdWUgIzI2NDY1OiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJnLgogCi0tIElzc3VlICMyNDQyMTogQ29tcGlsZSBNb2R1bGVzL19tYXRoLmMgb25jZSwgYmVmb3JlIGJ1aWxkaW5nIGV4dGVuc2lvbnMuCi0gIFByZXZpb3VzbHkgaXQgY291bGQgZmFpbCB0byBjb21waWxlIHByb3Blcmx5IGlmIHRoZSBtYXRoIGFuZCBjbWF0aCBidWlsZHMKLSAgd2VyZSBjb25jdXJyZW50LgotCiAtIElzc3VlICMyNTM0ODogQWRkZWQgYGAtLXBnb2BgIGFuZCBgYC0tcGdvLWpvYmBgIGFyZ3VtZW50cyB0bwogICBgYFBDYnVpbGRcYnVpbGQuYmF0YGAgZm9yIGJ1aWxkaW5nIHdpdGggUHJvZmlsZS1HdWlkZWQgT3B0aW1pemF0aW9uLiAgVGhlCi0gIG9sZCBgYFBDYnVpbGRcYnVpbGRfcGdvLmJhdGBgIHNjcmlwdCBpcyBub3cgZGVwcmVjYXRlZCwgYW5kIHNpbXBseSBjYWxscwotICBgYFBDYnVpbGRcYnVpbGQuYmF0IC0tcGdvICUqYGAuCisgIG9sZCBgYFBDYnVpbGRcYnVpbGRfcGdvLmJhdGBgIHNjcmlwdCBpcyByZW1vdmVkLgogCiAtIElzc3VlICMyNTgyNzogQWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpdGggSUNDIHRvIGBgY29uZmlndXJlYGAsIGluY2x1ZGluZwogICBhIG5ldyBgYC0td2l0aC1pY2NgYCBmbGFnLgogCiAtIElzc3VlICMyNTY5NjogRml4IGluc3RhbGxhdGlvbiBvZiBQeXRob24gb24gVU5JWCB3aXRoIG1ha2UgLWo5LgogCi0tIElzc3VlICMyNjkzMDogVXBkYXRlIE9TIFggMTAuNSsgMzItYml0LW9ubHkgaW5zdGFsbGVyIHRvIGJ1aWxkCi0gIGFuZCBsaW5rIHdpdGggT3BlblNTTCAxLjAuMmguCistIElzc3VlICMyNDk4NjogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGJ1aWxkIFB5dGhvbiBvbiBXaW5kb3dzIHdpdGhvdXQgZXJyb3JzCisgIHdoZW4gZXh0ZXJuYWwgbGlicmFyaWVzIGFyZSBub3QgYXZhaWxhYmxlLgorCistIElzc3VlICMyNDQyMTogQ29tcGlsZSBNb2R1bGVzL19tYXRoLmMgb25jZSwgYmVmb3JlIGJ1aWxkaW5nIGV4dGVuc2lvbnMuCisgIFByZXZpb3VzbHkgaXQgY291bGQgZmFpbCB0byBjb21waWxlIHByb3Blcmx5IGlmIHRoZSBtYXRoIGFuZCBjbWF0aCBidWlsZHMKKyAgd2VyZSBjb25jdXJyZW50LgorCistIElzc3VlICMyNjQ2NTogVXBkYXRlIE9TIFggMTAuNSsgMzItYml0LW9ubHkgaW5zdGFsbGVyIHRvIGJ1aWxkCisgIGFuZCBsaW5rIHdpdGggT3BlblNTTCAxLjAuMmcuCiAKIC0gSXNzdWUgIzI2MjY4OiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJmLgogCkBAIC0xMTQwLDYgKzI1ODEsOCBAQAogLSBJc3N1ZSAjMjYwNjU6IEV4Y2x1ZGVzIHZlbnYgZnJvbSBsaWJyYXJ5IHdoZW4gZ2VuZXJhdGluZyBlbWJlZGRhYmxlCiAgIGRpc3Ryby4KIAorLSBJc3N1ZSAjMjUwMjI6IFJlbW92ZWQgdmVyeSBvdXRkYXRlZCBQQy9leGFtcGxlX250LyBkaXJlY3RvcnkuCisKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCkBAIC0xMTU2LDExICsyNTk5LDIxIEBACiAKIC0gSXNzdWUgIzI2MzE2OiBGaXggdmFyaWFibGUgbmFtZSB0eXBvIGluIEFyZ3VtZW50IENsaW5pYy4KIAotTWlzYwotLS0tLQorLSBJc3N1ZSAjMjU0NDA6IEZpeCBvdXRwdXQgb2YgcHl0aG9uLWNvbmZpZyAtLWV4dGVuc2lvbi1zdWZmaXguCiAKLS0gSXNzdWUgIzE3NTAwLCBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9weXRob25kb3RvcmcvaXNzdWVzLzk0NTogUmVtb3ZlCi0gIHVudXNlZCBhbmQgb3V0ZGF0ZWQgaWNvbnMuCistIElzc3VlICMyNTE1NDogVGhlIHB5dmVudiBzY3JpcHQgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YKKyAgYHB5dGhvbjMgLW0gdmVudmAuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyNjMxMjogU3lzdGVtRXJyb3IgaXMgbm93IHJhaXNlZCBpbiBhbGwgcHJvZ3JhbW1pbmcgYnVncyB3aXRoIHVzaW5nCisgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygpLiAgUnVudGltZUVycm9yIGRpZCByYWlzZWQgYmVmb3JlIGluIHNvbWUKKyAgcHJvZ3JhbW1pbmcgYnVncy4KKworLSBJc3N1ZSAjMjYxOTg6IFZhbHVlRXJyb3IgaXMgbm93IHJhaXNlZCBpbnN0ZWFkIG9mIFR5cGVFcnJvciBvbiBidWZmZXIKKyAgb3ZlcmZsb3cgaW4gcGFyc2luZyAiZXMjIiBhbmQgImV0IyIgZm9ybWF0IHVuaXRzLiAgU3lzdGVtRXJyb3IgaXMgbm93IHJhaXNlZAorICBpbnN0ZWFkIG9mIFR5cGVFcnJvciBvbiBwcm9ncmFtbWljYWwgZXJyb3IgaW4gcGFyc2luZyBmb3JtYXQgc3RyaW5nLgogCiAKIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4xIGZpbmFsPwpAQCAtMTQ3Miw3ICsyOTI1LDcgQEAKIC0gSXNzdWUgIzI0Nzc0OiBGaXggZG9jc3RyaW5nIGluIGh0dHAuc2VydmVyLnRlc3QuIFBhdGNoIGZyb20gQ2hpdS1Ic2lhbmcgSHN1LgogCiAtIElzc3VlICMyMTE1OTogSW1wcm92ZSBtZXNzYWdlIGluIGNvbmZpZ3BhcnNlci5JbnRlcnBvbGF0aW9uTWlzc2luZ09wdGlvbkVycm9yLgotICBQYXRjaCBmcm9tIMWBdWthc3ogTGFuZ2EuCisgIFBhdGNoIGZyb20g77+9P3VrYXN6IExhbmdhLgogCiAtIElzc3VlICMyMDM2MjogSG9ub3VyIFRlc3RDYXNlLmxvbmdNZXNzYWdlIGNvcnJlY3RseSBpbiBhc3NlcnRSZWdleC4KICAgUGF0Y2ggZnJvbSBJbGlhIEt1cmVua292LgpAQCAtMTU4Miw5ICszMDM1LDYgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjI1NTg6IEFkZCByZW1haW5pbmcgZG9jIGxpbmtzIHRvIHNvdXJjZSBjb2RlIGZvciBQeXRob24tY29kZWQgbW9kdWxlcy4KLSAgUGF0Y2ggYnkgWW9uaSBMYXZpLgotCiAtIElzc3VlICMxMjA2NzogUmV3cml0ZSBDb21wYXJpc29ucyBzZWN0aW9uIGluIHRoZSBFeHByZXNzaW9ucyBjaGFwdGVyIG9mIHRoZQogICBsYW5ndWFnZSByZWZlcmVuY2UuIFNvbWUgb2YgdGhlIGRldGFpbHMgb2YgY29tcGFyaW5nIG1peGVkIHR5cGVzIHdlcmUKICAgaW5jb3JyZWN0IG9yIGFtYmlndW91cy4gTm90SW1wbGVtZW50ZWQgaXMgb25seSByZWxldmFudCBhdCBhIGxvd2VyIGxldmVsCkBAIC0xOTE0LDEyICszMzY0LDYgQEAKIAogLSBJc3N1ZSAjMjQ2MzE6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gdGhlIHRpbWVpdCBtb2R1bGUgd2l0aCBtdWx0aWxpbmUgc2V0dXAuCiAKLS0gSXNzdWUgIzE4NjIyOiB1bml0dGVzdC5tb2NrLm1vY2tfb3BlbigpLnJlc2V0X21vY2sgd291bGQgcmVjdXJzZSBpbmZpbml0ZWx5LgotICBQYXRjaCBmcm9tIE5pY29sYSBQYWx1bWJvIGFuZCBMYXVyZW50IERlIEJ1eXN0LgotCi0tIElzc3VlICMyMzY2MTogdW5pdHRlc3QubW9jayBzaWRlX2VmZmVjdHMgY2FuIG5vdyBiZSBleGNlcHRpb25zIGFnYWluLiBUaGlzCi0gIHdhcyBhIHJlZ3Jlc3Npb24gdnMgUHl0aG9uIDMuNC4gUGF0Y2ggZnJvbSBJZ25hY2lvIFJvc3NpCi0KIC0gSXNzdWUgIzI0NjA4OiBjaHVuay5DaHVuay5yZWFkKCkgbm93IGFsd2F5cyByZXR1cm5zIGJ5dGVzLCBub3Qgc3RyLgogCiAtIElzc3VlICMxODY4NDogRml4ZWQgcmVhZGluZyBvdXQgb2YgdGhlIGJ1ZmZlciBpbiB0aGUgcmUgbW9kdWxlLgpAQCAtMTkzMCw2ICszMzc0LDkgQEAKIC0gSXNzdWUgIzE1MDE0OiBTTVRQLmF1dGgoKSBhbmQgU01UUC5sb2dpbigpIG5vdyBzdXBwb3J0IFJGQyA0OTU0J3Mgb3B0aW9uYWwKICAgaW5pdGlhbC1yZXNwb25zZSBhcmd1bWVudCB0byB0aGUgU01UUCBBVVRIIGNvbW1hbmQuCiAKKy0gSXNzdWUgIzY1NDk6IFJlbW92ZSBoeXBoZW4gZnJvbSB0dGsuU3R5bGUoKS5lbGVtZW50IG9wdGlvbnMuICBPbmx5IHJldHVybiByZXN1bHQKKyAgZnJvbSB0dGsuU3R5bGUoKS5jb25maWd1cmUgaWYgYSByZXN1bHQgd2FzIGdlbmVyYXRlZCBvciBhIHF1ZXJ5IHN1Ym1pdHRlZC4KKwogLSBJc3N1ZSAjMjQ2Njk6IEZpeCBpbnNwZWN0LmdldHNvdXJjZSgpIGZvciAnYXN5bmMgZGVmJyBmdW5jdGlvbnMuCiAgIFBhdGNoIGJ5IEthaSBHcm9uZXIuCiAKQEAgLTE5NDEsNyArMzM4OCw2IEBACiAtIElzc3VlICMyNDYwMzogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIGFuZCBPUyBYIDEwLjUgaW5zdGFsbGVyIHRvIHVzZSBPcGVuU1NMCiAgIDEuMC4yZC4KIAotCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBiZXRhIDM/CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKQEAgLTIxMDIsNiArMzU0OCw5IEBACiAtIElzc3VlICMyNDI2ODogUEVQIDQ4OTogTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KICAgUGF0Y2ggYnkgUGV0ciBWaWt0b3Jpbi4KIAorLSBJc3N1ZSAjMjMzNTk6IE9wdGltaXplIHNldCBvYmplY3QgaW50ZXJuYWxzIGJ5IHNwZWNpYWxpemluZyB0aGUKKyAgaGFzaCB0YWJsZSBzZWFyY2ggaW50byBhIGxvb2t1cCBmdW5jdGlvbiBhbmQgYW4gaW5zZXJ0IGZ1bmN0aW9uLgorCiAtIElzc3VlICMyMzk1NTogQWRkIHB5dmVudi5jZmcgb3B0aW9uIHRvIHN1cHByZXNzIHJlZ2lzdHJ5L2Vudmlyb25tZW50CiAgIGxvb2t1cCBmb3IgZ2VuZXJhdGluZyBzeXMucGF0aCBvbiBXaW5kb3dzLgogCkBAIC0yMjIyLDggKzM2NzEsOCBAQAogLSBJc3N1ZSAjMTMyMjogcGxhdGZvcm0uZGlzdCgpIGFuZCBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSBmdW5jdGlvbnMgYXJlCiAgIG5vdyBkZXByZWNhdGVkLiAgSW5pdGlhbCBwYXRjaCBieSBWYWpyYXNreSBLb2suCiAKLS0gSXNzdWUgIzIyNDg2OiBBZGRlZCB0aGUgbWF0aC5nY2QoKSBmdW5jdGlvbi4gIFRoZSBmcmFjdGlvbnMuZ2NkKCkgZnVuY3Rpb24KLSAgbm93IGlzIGRlcHJlY2F0ZWQuICBCYXNlZCBvbiBwYXRjaCBieSBNYXJrIERpY2tpbnNvbi4KKy0gSXNzdWUgIzIyNDg2OiBBZGRlZCB0aGUgbWF0aC5nY2QoKSBmdW5jdGlvbi4gIFRoZSBmcmFjdGlvbnMuZ2NkKCkgZnVuY3Rpb24gbm93IGlzCisgIGRlcHJlY2F0ZWQuICBCYXNlZCBvbiBwYXRjaCBieSBNYXJrIERpY2tpbnNvbi4KIAogLSBJc3N1ZSAjMjQwNjQ6IFByb3BlcnR5KCkgZG9jc3RyaW5ncyBhcmUgbm93IHdyaXRlYWJsZS4KICAgKFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuKQpAQCAtMjY0NCw4ICs0MDkzLDggQEAKICAgd3JpdGVyIGZhaWxlZCBpbiBCdWZmZXJlZFJXUGFpci5jbG9zZSgpLgogCiAtIElzc3VlICMyMzYyMjogVW5rbm93biBlc2NhcGVzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBjb25zaXN0IG9mIGBgJ1wnYGAKLSAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbgotICBQeXRob24gMy42LgorICBhbmQgYW4gQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuCisgIGluIFB5dGhvbiAzLjYuCiAKIC0gSXNzdWUgIzIzNjcxOiBzdHJpbmcuVGVtcGxhdGUgbm93IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSAic2VsZiIgcGFyYW1ldGVyIGFzCiAgIGEga2V5d29yZCBhcmd1bWVudC4gIHN0cmluZy5Gb3JtYXR0ZXIgbm93IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSAic2VsZiIgYW5kCkBAIC0zNDA0LDcgKzQ4NTMsNyBAQAogICBCYXNlZCBvbiBwYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCiAtIElzc3VlICMxNzI5MzogdXVpZC5nZXRub2RlKCkgbm93IGRldGVybWluZXMgTUFDIGFkZHJlc3Mgb24gQUlYIHVzaW5nIG5ldHN0YXQuCi0gIEJhc2VkIG9uIHBhdGNoIGJ5IEFpdmFycyBLYWx2xIFucy4KKyAgQmFzZWQgb24gcGF0Y2ggYnkgQWl2YXJzIEthbHbvv70/bnMuCiAKIC0gSXNzdWUgIzIyNzY5OiBGaXhlZCB0dGsuVHJlZXZpZXcudGFnX2hhcygpIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLgogCkBAIC01ODEwLDYgKzcyNTksOSBAQAogCiAtIElzc3VlICMxOTM2OTogT3B0aW1pemVkIHRoZSB1c2FnZSBvZiBfX2xlbmd0aF9oaW50X18oKS4KIAorLSBJc3N1ZSAjMjgwMjY6IFJhaXNlIEltcG9ydEVycm9yIHdoZW4gZXhlY19tb2R1bGUoKSBleGlzdHMgYnV0CisgIGNyZWF0ZV9tb2R1bGUoKSBpcyBtaXNzaW5nLgorCiAtIElzc3VlICMxODYwMzogRW5zdXJlIHRoYXQgUHlPU19teXN0cmljbXAgYW5kIFB5T1NfbXlzdHJuaWNtcCBhcmUgaW4gdGhlCiAgIFB5dGhvbiBleGVjdXRhYmxlIGFuZCBub3QgcmVtb3ZlZCBieSB0aGUgbGlua2VyJ3Mgb3B0aW1pemVyLgogCkBAIC02Njk3LDYgKzgxNDksOSBAQAogLSBJc3N1ZSAjMTY4MDk6IFRraW50ZXIncyBzcGxpdGxpc3QoKSBhbmQgc3BsaXQoKSBtZXRob2RzIG5vdyBhY2NlcHQgVGNsX09iagogICBhcmd1bWVudC4KIAorLSBJc3N1ZSAjMTcyMTE6IFlpZWxkIGEgbmFtZWR0dXBsZSBpbiBwa2d1dGlsLgorICBQYXRjaCBieSBSYW1jaGFuZHJhIEFwdGUuCisKIC0gSXNzdWUgIzE4MzI0OiBzZXRfcGF5bG9hZCBub3cgY29ycmVjdGx5IGhhbmRsZXMgYmluYXJ5IGlucHV0LiAgVGhpcyBhbHNvCiAgIHN1cGVyc2VkZXMgdGhlIHByZXZpb3VzIGZpeGVzIGZvciAjMTQzNjAsICMxNzE3LCBhbmQgIzE2NTY0LgogCkBAIC02NzA2LDYgKzgxNjEsOCBAQAogLSBJc3N1ZSAjMTcxMTk6IEZpeGVkIGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gcHJvY2Vzc2luZyBsYXJnZSBzdHJpbmdzIGFuZCB0dXBsZXMKICAgaW4gdGhlIHRraW50ZXIgbW9kdWxlLgogCistIElzc3VlICMxNTM1MjogUmVidWlsZCBmcm96ZW4gbW9kdWxlcyB3aGVuIG1hcnNoYWwuYyBpcyBjaGFuZ2VkLgorCiAtIElzc3VlICMxODc0NzogUmUtc2VlZCBPcGVuU1NMJ3MgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGFmdGVyIGZvcmsuCiAgIEEgcHRocmVhZF9hdGZvcmsoKSBwYXJlbnQgaGFuZGxlciBpcyB1c2VkIHRvIHNlZWQgdGhlIFBSTkcgd2l0aCBwaWQsIHRpbWUKICAgYW5kIHNvbWUgc3RhY2sgZGF0YS4KQEAgLTY5MTMsNiArODM3MCw5IEBACiAtIElzc3VlICMxODEzNzogRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cgb24gcHJlY2lzaW9uIGluIGZsb2F0Ll9fZm9ybWF0X18oKQogICBhbmQgY29tcGxleC5fX2Zvcm1hdF9fKCkuCiAKKy0gSXNzdWUgIzE1NzY3OiBJbnRyb2R1Y2UgTW9kdWxlTm90Rm91bmRFcnJvciB3aGljaCBpcyByYWlzZWQgd2hlbiBhIG1vZHVsZQorICBjb3VsZCBub3QgYmUgZm91bmQuCisKIC0gSXNzdWUgIzE4MTgzOiBGaXggdmFyaW91cyB1bmljb2RlIG9wZXJhdGlvbnMgb24gc3RyaW5ncyB3aXRoIGxhcmdlIHVuaWNvZGUKICAgY29kZXBvaW50cy4KIApAQCAtODgzMyw2ICsxMDI5MywxMCBAQAogICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSAoYW5kIHRodXMgYnkgZXh0ZW5zaW9uCiAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlKCkgYW5kIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgoKSkuCiAKKy0gSXNzdWUgIzE1NzY3OiBBZGRlZCBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzKCkuCisKKy0gUHlFcnJfU2V0SW1wb3J0RXJyb3IoKSBub3cgc2V0cyBUeXBlRXJyb3Igd2hlbiBpdHMgbXNnIGFyZ3VtZW50IGlzIHNldC4KKwogLSBJc3N1ZSAjOTM2OTogVGhlIHR5cGVzIG9mIGBjaGFyKmAgYXJndW1lbnRzIG9mIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigpIGFuZAogICBQeU9iamVjdF9DYWxsTWV0aG9kKCkgbm93IGNoYW5nZWQgdG8gYGNvbnN0IGNoYXIqYC4gIEJhc2VkIG9uIHBhdGNoZXMgYnkKICAgSsO2cmcgTcO8bGxlciBhbmQgTGFycyBCdWl0aW5jay4KZGlmZiAtLWdpdCBhL01pc2MvUkVBRE1FLnZhbGdyaW5kIGIvTWlzYy9SRUFETUUudmFsZ3JpbmQKaW5kZXggYjVhOWEzMi4uOTA4ZjEzNyAxMDA2NDQKLS0tIGEvTWlzYy9SRUFETUUudmFsZ3JpbmQKKysrIGIvTWlzYy9SRUFETUUudmFsZ3JpbmQKQEAgLTIsNiArMiw5IEBACiBQeXRob24uICBWYWxncmluZCBpcyB1c2VkIHBlcmlvZGljYWxseSBieSBQeXRob24gZGV2ZWxvcGVycyB0byB0cnkKIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gbWVtb3J5IGxlYWtzIG9yIGludmFsaWQgbWVtb3J5IHJlYWRzL3dyaXRlcy4KIAorVVBEQVRFOiBQeXRob24gMy42IG5vdyBzdXBwb3J0cyBQWVRIT05NQUxMT0M9bWFsbG9jIGVudmlyb25tZW50IHZhcmlhYmxlIHdoaWNoCitjYW4gYmUgdXNlZCB0byBmb3JjZSB0aGUgdXNhZ2Ugb2YgdGhlIG1hbGxvYygpIGFsbG9jYXRvciBvZiB0aGUgQyBsaWJyYXJ5LgorCiBJZiB5b3UgZG9uJ3Qgd2FudCB0byByZWFkIGFib3V0IHRoZSBkZXRhaWxzIG9mIHVzaW5nIFZhbGdyaW5kLCB0aGVyZQogYXJlIHN0aWxsIHR3byB0aGluZ3MgeW91IG11c3QgZG8gdG8gc3VwcHJlc3MgdGhlIHdhcm5pbmdzLiAgRmlyc3QsCiB5b3UgbXVzdCB1c2UgYSBzdXBwcmVzc2lvbnMgZmlsZS4gIE9uZSBpcyBzdXBwbGllZCBpbgpkaWZmIC0tZ2l0IGEvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dCBiL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQKaW5kZXggMzAwNDE3NC4uODJmYTIzZSAxMDA2NDQKLS0tIGEvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dAorKysgYi9NaXNjL1NwZWNpYWxCdWlsZHMudHh0CkBAIC02NSw5ICs2NSw5IEBACiAgICAgc2ltcGx5IGJ5IHZpcnR1ZSBvZiBiZWluZyBpbiB0aGUgbGlzdC4KIAogZW52dmFyIFBZVEhPTkRVTVBSRUZTCi0gICAgSWYgdGhpcyBlbnZ2YXIgZXhpc3RzLCBQeV9GaW5hbGl6ZSgpIGFycmFuZ2VzIHRvIHByaW50IGEgbGlzdCBvZiBhbGwKKyAgICBJZiB0aGlzIGVudnZhciBleGlzdHMsIFB5X0ZpbmFsaXplRXgoKSBhcnJhbmdlcyB0byBwcmludCBhIGxpc3Qgb2YgYWxsCiAgICAgc3RpbGwtbGl2ZSBoZWFwIG9iamVjdHMuICBUaGlzIGlzIHByaW50ZWQgdHdpY2UsIGluIGRpZmZlcmVudCBmb3JtYXRzLAotICAgIGJlZm9yZSBhbmQgYWZ0ZXIgUHlfRmluYWxpemUgaGFzIGNsZWFuZWQgdXAgZXZlcnl0aGluZyBpdCBjYW4gY2xlYW4gdXAuICBUaGUKKyAgICBiZWZvcmUgYW5kIGFmdGVyIFB5X0ZpbmFsaXplRXggaGFzIGNsZWFuZWQgdXAgZXZlcnl0aGluZyBpdCBjYW4gY2xlYW4gdXAuICBUaGUKICAgICBmaXJzdCBvdXRwdXQgYmxvY2sgcHJvZHVjZXMgdGhlIHJlcHIoKSBvZiBlYWNoIG9iamVjdCBzbyBpcyBtb3JlCiAgICAgaW5mb3JtYXRpdmU7IGhvd2V2ZXIsIGEgbG90IG9mIHN0dWZmIGRlc3RpbmVkIHRvIGRpZSBpcyBzdGlsbCBhbGl2ZSB0aGVuLgogICAgIFRoZSBzZWNvbmQgb3V0cHV0IGJsb2NrIGlzIG11Y2ggaGFyZGVyIHRvIHdvcmsgd2l0aCAocmVwcigpIGNhbid0IGJlIGludm9rZWQKQEAgLTE0NCw3ICsxNDQsNyBAQAogCiBlbnZ2YXIgUFlUSE9OTUFMTE9DU1RBVFMKICAgICBJZiB0aGlzIGVudnZhciBleGlzdHMsIGEgcmVwb3J0IG9mIHB5bWFsbG9jIHN1bW1hcnkgc3RhdGlzdGljcyBpcyBwcmludGVkIHRvCi0gICAgc3RkZXJyIHdoZW5ldmVyIGEgbmV3IGFyZW5hIGlzIGFsbG9jYXRlZCwgYW5kIGFsc28gYnkgUHlfRmluYWxpemUoKS4KKyAgICBzdGRlcnIgd2hlbmV2ZXIgYSBuZXcgYXJlbmEgaXMgYWxsb2NhdGVkLCBhbmQgYWxzbyBieSBQeV9GaW5hbGl6ZUV4KCkuCiAKIENoYW5nZWQgaW4gMi41OiAgVGhlIG51bWJlciBvZiBleHRyYSBieXRlcyBhbGxvY2F0ZWQgaXMgNCpzaXplb2Yoc2l6ZV90KS4KIEJlZm9yZSBpdCB3YXMgMTYgb24gYWxsIGJveGVzLCByZWZsZWN0aW5nIHRoYXQgUHl0aG9uIGNvdWxkbid0IG1ha2UgdXNlIG9mCkBAIC0xNzksNyArMTc5LDcgQEAKICAgICAgKi8KICAgICBpbnQgdHBfbWF4YWxsb2M7CiAKLUFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIGtlZXBzIHRoZXNlIGNvdW50cyB1cCB0byBkYXRlLiAgUHlfRmluYWxpemUoKQorQWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGNvZGUga2VlcHMgdGhlc2UgY291bnRzIHVwIHRvIGRhdGUuICBQeV9GaW5hbGl6ZUV4KCkKIGRpc3BsYXlzIGEgc3VtbWFyeSBvZiB0aGUgaW5mbyByZXR1cm5lZCBieSBzeXMuZ2V0Y291bnRzKCkgKHNlZSBiZWxvdyksIGFsb25nCiB3aXRoIGFzc29ydGVkIG90aGVyIHNwZWNpYWwgYWxsb2NhdGlvbiBjb3VudHMgKGxpa2UgdGhlIG51bWJlciBvZiB0dXBsZQogYWxsb2NhdGlvbnMgc2F0aXNmaWVkIGJ5IGEgdHVwbGUgZnJlZS1saXN0LCB0aGUgbnVtYmVyIG9mIDEtY2hhcmFjdGVyIHN0cmluZ3MKQEAgLTIzNCwyOSArMjM0LDMgQEAKIG51bWJlciBvZiBmdW5jdGlvbiBjYWxscyBtYWRlLiAgSXQga2VlcHMgZGV0YWlsZWQgc3RhdGlzdGljcyBhYm91dCB3aGF0IGtpbmQgb2YKIG9iamVjdCB3YXMgY2FsbGVkIGFuZCB3aGV0aGVyIHRoZSBjYWxsIGhpdCBhbnkgb2YgdGhlIHNwZWNpYWwgZmFzdCBwYXRocyBpbiB0aGUKIGNvZGUuCi0KLQotV0lUSF9UU0MKLS0tLS0tLS0tCi0KLVN1cGVyLWxvd2xldmVsIHByb2ZpbGluZyBvZiB0aGUgaW50ZXJwcmV0ZXIuICBXaGVuIGVuYWJsZWQsIHRoZSBzeXMgbW9kdWxlIGdyb3dzCi1hIG5ldyBmdW5jdGlvbjoKLQotc2V0dHNjZHVtcChib29sKQotICAgIElmIHRydWUsIHRlbGwgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0byBkdW1wIFZNIG1lYXN1cmVtZW50cyB0byBzdGRlcnIuICBJZgotICAgIGZhbHNlLCB0dXJuIG9mZiBkdW1wLiAgVGhlIG1lYXN1cmVtZW50cyBhcmUgYmFzZWQgb24gdGhlIHByb2Nlc3NvcidzCi0gICAgdGltZS1zdGFtcCBjb3VudGVyLgotCi1UaGlzIGJ1aWxkIG9wdGlvbiByZXF1aXJlcyBhIHNtYWxsIGFtb3VudCBvZiBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiAgQ3VycmVudGx5Ci10aGlzIGNvZGUgaXMgcHJlc2VudCBmb3IgbGludXgveDg2IGFuZCBhbnkgUG93ZXJQQyBwbGF0Zm9ybSB0aGF0IHVzZXMgR0NDCi0oaS5lLiBPUyBYIGFuZCBsaW51eC9wcGMpLgotCi1PbiB0aGUgUG93ZXJQQyB0aGUgcmF0ZSBhdCB3aGljaCB0aGUgdGltZSBiYXNlIHJlZ2lzdGVyIGlzIGluY3JlbWVudGVkIGlzIG5vdAotZGVmaW5lZCBieSB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljYXRpb24sIHNvIHlvdSdsbCBuZWVkIHRvIGZpbmQgdGhlIG1hbnVhbCBmb3IKLXlvdXIgc3BlY2lmaWMgcHJvY2Vzc29yLiAgRm9yIHRoZSA3NTBDWCwgNzUwQ1hlIGFuZCA3NTBGWCAoYWxsIHNvbGQgYXMgdGhlIEczKQotd2UgZmluZDoKLQotICAgIFRoZSB0aW1lIGJhc2UgY291bnRlciBpcyBjbG9ja2VkIGF0IGEgZnJlcXVlbmN5IHRoYXQgaXMgb25lLWZvdXJ0aCB0aGF0IG9mCi0gICAgdGhlIGJ1cyBjbG9jay4KLQotVGhpcyBidWlsZCBpcyBlbmFibGVkIGJ5IHRoZSAtLXdpdGgtdHNjIGZsYWcgdG8gY29uZmlndXJlLgpkaWZmIC0tZ2l0IGEvTWlzYy9jb3Zlcml0eV9tb2RlbC5jIGIvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCmluZGV4IDQ4ODYwNGMuLmQxN2M2MDcgMTAwNjQ0Ci0tLSBhL01pc2MvY292ZXJpdHlfbW9kZWwuYworKysgYi9NaXNjL2NvdmVyaXR5X21vZGVsLmMKQEAgLTIyLDcgKzIyLDYgQEAKICNkZWZpbmUgYXNzZXJ0KG9wKSAvKiBlbXB0eSAqLwogdHlwZWRlZiBpbnQgc2RpZ2l0OwogdHlwZWRlZiBsb25nIFB5X3NzaXplX3Q7Ci10eXBlZGVmIGxvbmcgbG9uZyBQWV9MT05HX0xPTkc7CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHdjaGFyX3Q7CiB0eXBlZGVmIHN0cnVjdCB7fSBQeU9iamVjdDsKIHR5cGVkZWYgc3RydWN0IHt9IGdyYW1tYXI7CkBAIC02Myw3ICs2Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlMb25nX0Zyb21Mb25nTG9uZyhQWV9MT05HX0xPTkcgaXZhbCkKK1B5T2JqZWN0ICpQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyBpdmFsKQogewogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpaXZhbCk7CiB9CkBAIC05NCw3ICs5Myw3IEBACiB9CiAKIC8qIFBhcnNlci9wZ2VubWFpbi5jICovCi1ncmFtbWFyICpnZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKQorZ3JhbW1hciAqZ2V0Z3JhbW1hcihjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBncmFtbWFyICpnOwogICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3NpbmtfXyhmaWxlbmFtZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbiBiL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCmluZGV4IGFkYWMwMzAuLjY0NTA1MjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCisrKyBiL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCkBAIC02LDggKzYsNSBAQAogIyBUaHJlYWRpbmcKIEBVU0VfVEhSRUFEX01PRFVMRUBfdGhyZWFkIF90aHJlYWRtb2R1bGUuYwogCi0jIFRoZSBzaWduYWwgbW9kdWxlCi1AVVNFX1NJR05BTF9NT0RVTEVAX3NpZ25hbCBzaWduYWxtb2R1bGUuYwotCiAjIFRoZSByZXN0IG9mIHRoZSBtb2R1bGVzIHByZXZpb3VzbHkgbGlzdGVkIGluIHRoaXMgZmlsZSBhcmUgYnVpbHQKICMgYnkgdGhlIHNldHVwLnB5IHNjcmlwdCBpbiBQeXRob24gMi4xIGFuZCBsYXRlci4KZGlmZiAtLWdpdCBhL01vZHVsZXMvU2V0dXAuZGlzdCBiL01vZHVsZXMvU2V0dXAuZGlzdAppbmRleCAwNmJhNmFkLi5lMTdmZjEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmRpc3QKKysrIGIvTW9kdWxlcy9TZXR1cC5kaXN0CkBAIC0xMTcsNiArMTE3LDcgQEAKIF9jb2xsZWN0aW9ucyBfY29sbGVjdGlvbnNtb2R1bGUuYyAjIENvbnRhaW5lciB0eXBlcwogaXRlcnRvb2xzIGl0ZXJ0b29sc21vZHVsZS5jICAgICMgRnVuY3Rpb25zIGNyZWF0aW5nIGl0ZXJhdG9ycyBmb3IgZWZmaWNpZW50IGxvb3BpbmcKIGF0ZXhpdCBhdGV4aXRtb2R1bGUuYyAgICAgICMgUmVnaXN0ZXIgZnVuY3Rpb25zIHRvIGJlIHJ1biBhdCBpbnRlcnByZXRlci1zaHV0ZG93bgorX3NpZ25hbCBzaWduYWxtb2R1bGUuYwogX3N0YXQgX3N0YXQuYwkJCSMgc3RhdC5oIGludGVyZmFjZQogdGltZSB0aW1lbW9kdWxlLmMJIyAtbG0gIyB0aW1lIG9wZXJhdGlvbnMgYW5kIHZhcmlhYmxlcwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCmluZGV4IDAyYjU1ZDEuLjIyZGRiZjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCkBAIC0xMiw3ICsxMiw4IEBACiBpbnRlcm5hbF9iaXNlY3RfcmlnaHQoUHlPYmplY3QgKmxpc3QsIFB5T2JqZWN0ICppdGVtLCBQeV9zc2l6ZV90IGxvLCBQeV9zc2l6ZV90IGhpKQogewogICAgIFB5T2JqZWN0ICpsaXRlbTsKLSAgICBQeV9zc2l6ZV90IG1pZCwgcmVzOworICAgIFB5X3NzaXplX3QgbWlkOworICAgIGludCByZXM7CiAKICAgICBpZiAobG8gPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibG8gbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKQEAgLTExNSw3ICsxMTYsOCBAQAogaW50ZXJuYWxfYmlzZWN0X2xlZnQoUHlPYmplY3QgKmxpc3QsIFB5T2JqZWN0ICppdGVtLCBQeV9zc2l6ZV90IGxvLCBQeV9zc2l6ZV90IGhpKQogewogICAgIFB5T2JqZWN0ICpsaXRlbTsKLSAgICBQeV9zc2l6ZV90IG1pZCwgcmVzOworICAgIFB5X3NzaXplX3QgbWlkOworICAgIGludCByZXM7CiAKICAgICBpZiAobG8gPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibG8gbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjAxY2YyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5CkBAIC0wLDAgKzEsNDkgQEAKKyMhL3Vzci9iaW4vcHl0aG9uMworCitpbXBvcnQgb3MKK2ltcG9ydCByZQorCitIRVJFID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCitCTEFLRTIgPSBvcy5wYXRoLmpvaW4oSEVSRSwgJ2ltcGwnKQorCitQVUJMSUNfU0VBUkNIID0gcmUuY29tcGlsZShyJ1wgaW50IChibGFrZTJbYnNdcD9bYS16X10qKVwoJykKKworCitkZWYgZ2V0ZmlsZXMoKToKKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKEJMQUtFMik6CisgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4oQkxBS0UyLCBuYW1lKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShuYW1lKToKKyAgICAgICAgICAgIHlpZWxkIG5hbWUKKworCitkZWYgZmluZF9wdWJsaWMoKToKKyAgICBwdWJsaWNfZnVuY3MgPSBzZXQoKQorICAgIGZvciBuYW1lIGluIGdldGZpbGVzKCk6CisgICAgICAgIHdpdGggb3BlbihuYW1lKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAjIGZpbmQgcHVibGljIGZ1bmN0aW9ucworICAgICAgICAgICAgICAgIG1vID0gUFVCTElDX1NFQVJDSC5zZWFyY2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiBtbzoKKyAgICAgICAgICAgICAgICAgICAgcHVibGljX2Z1bmNzLmFkZChtby5ncm91cCgxKSkKKworICAgIGZvciBmIGluIHNvcnRlZChwdWJsaWNfZnVuY3MpOgorICAgICAgICBwcmludCgnI2RlZmluZSB7MDo8MTh9IFB5Qmxha2UyX3swfScuZm9ybWF0KGYpKQorCisgICAgcmV0dXJuIHB1YmxpY19mdW5jcworCisKK2RlZiBtYWluKCk6CisgICAgbGluZXMgPSBbXQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oSEVSRSwgJ2JsYWtlMmJfaW1wbC5jJykpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdibGFrZTJiJywgJ2JsYWtlMnMnKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnQkxBS0UyYicsICdCTEFLRTJzJykKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ0JMQUtFMkInLCAnQkxBS0UyUycpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKEhFUkUsICdibGFrZTJzX2ltcGwuYycpLCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGUoJycuam9pbihsaW5lcykpCisgICAgIyBmaW5kX3B1YmxpYygpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiX2ltcGwuYyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiX2ltcGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGI1MDJiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jCkBAIC0wLDAgKzEsNDYwIEBACisvKgorICogV3JpdHRlbiBpbiAyMDEzIGJ5IERtaXRyeSBDaGVzdG55a2ggPGRtaXRyeUBjb2Rpbmdyb2JvdHMuY29tPgorICogTW9kaWZpZWQgZm9yIENQeXRob24gYnkgQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CisgKgorICogVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBhdXRob3IgaGF2ZSBkZWRpY2F0ZWQgYWxsCisgKiBjb3B5cmlnaHQgYW5kIHJlbGF0ZWQgYW5kIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGlzIHNvZnR3YXJlIHRvCisgKiB0aGUgcHVibGljIGRvbWFpbiB3b3JsZHdpZGUuIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgd2l0aG91dAorICogYW55IHdhcnJhbnR5LiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisgKi8KKworLyogV0FSTklORzogYXV0b2dlbmVyYXRlZCBmaWxlIQorICoKKyAqIFRoZSBibGFrZTJzX2ltcGwuYyBpcyBhdXRvZ2VuZXJhdGVkIGZyb20gYmxha2UyYl9pbXBsLmMuCisgKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKKyNpbmNsdWRlICIuLi9oYXNobGliLmgiCisjaW5jbHVkZSAiYmxha2UybnMuaCIKKworI2RlZmluZSBIQVZFX0JMQUtFMkIgMQorI2RlZmluZSBCTEFLRTJfTE9DQUxfSU5MSU5FKHR5cGUpIFB5X0xPQ0FMX0lOTElORSh0eXBlKQorCisjaW5jbHVkZSAiaW1wbC9ibGFrZTIuaCIKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi1pbXBsLmgiIC8qIGZvciBzZWN1cmVfemVyb19tZW1vcnkoKSBhbmQgc3RvcmU0OCgpICovCisKKyNpZmRlZiBCTEFLRTJfVVNFX1NTRQorI2luY2x1ZGUgImltcGwvYmxha2UyYi5jIgorI2Vsc2UKKyNpbmNsdWRlICJpbXBsL2JsYWtlMmItcmVmLmMiCisjZW5kaWYKKworCitleHRlcm4gUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMmJUeXBlOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGJsYWtlMmJfcGFyYW0gICAgcGFyYW07CisgICAgYmxha2UyYl9zdGF0ZSAgICBzdGF0ZTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IEJMQUtFMmJPYmplY3Q7CisKKyNpbmNsdWRlICJjbGluaWMvYmxha2UyYl9pbXBsLmMuaCIKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9ibGFrZTJiCitjbGFzcyBfYmxha2UyYi5ibGFrZTJiICJCTEFLRTJiT2JqZWN0ICoiICImUHlCbGFrZTJfQkxBS0UyYlR5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD02ODkzMzU4YzY2MjJhZWNmXSovCisKKworc3RhdGljIEJMQUtFMmJPYmplY3QgKgorbmV3X0JMQUtFMmJPYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIEJMQUtFMmJPYmplY3QgKnNlbGY7CisgICAgc2VsZiA9IChCTEFLRTJiT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBzZWxmOworfQorCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19ibGFrZTJiLmJsYWtlMmIuX19uZXdfXyBhcyBweV9ibGFrZTJiX25ldworICAgIHN0cmluZyBhcyBkYXRhOiBvYmplY3QgPSBOVUxMCisgICAgKgorICAgIGRpZ2VzdF9zaXplOiBpbnQoY19kZWZhdWx0PSJCTEFLRTJCX09VVEJZVEVTIikgPSBfYmxha2UyYi5ibGFrZTJiLk1BWF9ESUdFU1RfU0laRQorICAgIGtleTogUHlfYnVmZmVyID0gTm9uZQorICAgIHNhbHQ6IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBwZXJzb246IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBmYW5vdXQ6IGludCA9IDEKKyAgICBkZXB0aDogaW50ID0gMQorICAgIGxlYWZfc2l6ZSBhcyBsZWFmX3NpemVfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgbm9kZV9vZmZzZXQgYXMgbm9kZV9vZmZzZXRfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgbm9kZV9kZXB0aDogaW50ID0gMAorICAgIGlubmVyX3NpemU6IGludCA9IDAKKyAgICBsYXN0X25vZGU6IGJvb2wgPSBGYWxzZQorCitSZXR1cm4gYSBuZXcgQkxBS0UyYiBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSwgaW50IGRpZ2VzdF9zaXplLAorICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmtleSwgUHlfYnVmZmVyICpzYWx0LCBQeV9idWZmZXIgKnBlcnNvbiwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhbm91dCwgaW50IGRlcHRoLCBQeU9iamVjdCAqbGVhZl9zaXplX29iaiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiwgaW50IG5vZGVfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBpbm5lcl9zaXplLCBpbnQgbGFzdF9ub2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1MDZkOGQ4OTBlNWYxM2IgaW5wdXQ9ZTQxNTQ4ZGZhMDg2NjAzMV0qLworeworICAgIEJMQUtFMmJPYmplY3QgKnNlbGYgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWY7CisKKyAgICB1bnNpZ25lZCBsb25nIGxlYWZfc2l6ZSA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5vZGVfb2Zmc2V0ID0gMDsKKworICAgIHNlbGYgPSBuZXdfQkxBS0UyYk9iamVjdCh0eXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogWmVybyBwYXJhbWV0ZXIgYmxvY2suICovCisgICAgbWVtc2V0KCZzZWxmLT5wYXJhbSwgMCwgc2l6ZW9mKHNlbGYtPnBhcmFtKSk7CisKKyAgICAvKiBTZXQgZGlnZXN0IHNpemUuICovCisgICAgaWYgKGRpZ2VzdF9zaXplIDw9IDAgfHwgZGlnZXN0X3NpemUgPiBCTEFLRTJCX09VVEJZVEVTKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJkaWdlc3Rfc2l6ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMkJfT1VUQllURVMpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X3NpemU7CisKKyAgICAvKiBTZXQgc2FsdCBwYXJhbWV0ZXIuICovCisgICAgaWYgKChzYWx0LT5vYmogIT0gTlVMTCkgJiYgc2FsdC0+bGVuKSB7CisgICAgICAgIGlmIChzYWx0LT5sZW4gPiBCTEFLRTJCX1NBTFRCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0gc2FsdCBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMkJfU0FMVEJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPnBhcmFtLnNhbHQsIHNhbHQtPmJ1Ziwgc2FsdC0+bGVuKTsKKyAgICB9CisKKyAgICAvKiBTZXQgcGVyc29uYWxpemF0aW9uIHBhcmFtZXRlci4gKi8KKyAgICBpZiAoKHBlcnNvbi0+b2JqICE9IE5VTEwpICYmIHBlcnNvbi0+bGVuKSB7CisgICAgICAgIGlmIChwZXJzb24tPmxlbiA+IEJMQUtFMkJfUEVSU09OQUxCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0gcGVyc29uIGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9QRVJTT05BTEJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPnBhcmFtLnBlcnNvbmFsLCBwZXJzb24tPmJ1ZiwgcGVyc29uLT5sZW4pOworICAgIH0KKworICAgIC8qIFNldCB0cmVlIHBhcmFtZXRlcnMuICovCisgICAgaWYgKGZhbm91dCA8IDAgfHwgZmFub3V0ID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJmYW5vdXQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5mYW5vdXQgPSAodWludDhfdClmYW5vdXQ7CisKKyAgICBpZiAoZGVwdGggPD0gMCB8fCBkZXB0aCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGVwdGggbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5kZXB0aCA9ICh1aW50OF90KWRlcHRoOworCisgICAgaWYgKGxlYWZfc2l6ZV9vYmogIT0gTlVMTCkgeworICAgICAgICBsZWFmX3NpemUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcobGVhZl9zaXplX29iaik7CisgICAgICAgIGlmIChsZWFmX3NpemUgPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxlYWZfc2l6ZSA+IDB4RkZGRkZGRkZVKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgImxlYWZfc2l6ZSBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgc2VsZi0+cGFyYW0ubGVhZl9sZW5ndGggPSAodW5zaWduZWQgaW50KWxlYWZfc2l6ZTsKKworICAgIGlmIChub2RlX29mZnNldF9vYmogIT0gTlVMTCkgeworICAgICAgICBub2RlX29mZnNldCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcobm9kZV9vZmZzZXRfb2JqKTsKKyAgICAgICAgaWYgKG5vZGVfb2Zmc2V0ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisjaWZkZWYgSEFWRV9CTEFLRTJTCisgICAgaWYgKG5vZGVfb2Zmc2V0ID4gMHhGRkZGRkZGRkZGRkZVTEwpIHsKKyAgICAgICAgLyogbWF4aW11bSAyKio0OCAtIDEgKi8KKyAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibm9kZV9vZmZzZXQgaXMgdG9vIGxhcmdlIik7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CisgICAgc3RvcmU0OCgmKHNlbGYtPnBhcmFtLm5vZGVfb2Zmc2V0KSwgbm9kZV9vZmZzZXQpOworI2Vsc2UKKyAgICBzZWxmLT5wYXJhbS5ub2RlX29mZnNldCA9IG5vZGVfb2Zmc2V0OworI2VuZGlmCisKKyAgICBpZiAobm9kZV9kZXB0aCA8IDAgfHwgbm9kZV9kZXB0aCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibm9kZV9kZXB0aCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworCisgICAgaWYgKGlubmVyX3NpemUgPCAwIHx8IGlubmVyX3NpemUgPiBCTEFLRTJCX09VVEJZVEVTKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJpbm5lcl9zaXplIG11c3QgYmUgYmV0d2VlbiAwIGFuZCBpcyAlZCIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9PVVRCWVRFUyk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmlubmVyX2xlbmd0aCA9IGlubmVyX3NpemU7CisKKyAgICAvKiBTZXQga2V5IGxlbmd0aC4gKi8KKyAgICBpZiAoKGtleS0+b2JqICE9IE5VTEwpICYmIGtleS0+bGVuKSB7CisgICAgICAgIGlmIChrZXktPmxlbiA+IEJMQUtFMkJfS0VZQllURVMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtYXhpbXVtIGtleSBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMkJfS0VZQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzZWxmLT5wYXJhbS5rZXlfbGVuZ3RoID0gKHVpbnQ4X3Qpa2V5LT5sZW47CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBoYXNoIHN0YXRlLiAqLworICAgIGlmIChibGFrZTJiX2luaXRfcGFyYW0oJnNlbGYtPnN0YXRlLCAmc2VsZi0+cGFyYW0pIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJlcnJvciBpbml0aWFsaXppbmcgaGFzaCBzdGF0ZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFNldCBsYXN0IG5vZGUgZmxhZyAobXVzdCBjb21lIGFmdGVyIGluaXRpYWxpemF0aW9uKS4gKi8KKyAgICBzZWxmLT5zdGF0ZS5sYXN0X25vZGUgPSBsYXN0X25vZGU7CisKKyAgICAvKiBQcm9jZXNzIGtleSBibG9jayBpZiBhbnkuICovCisgICAgaWYgKHNlbGYtPnBhcmFtLmtleV9sZW5ndGgpIHsKKyAgICAgICAgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdOworICAgICAgICBtZW1zZXQoYmxvY2ssIDAsIHNpemVvZihibG9jaykpOworICAgICAgICBtZW1jcHkoYmxvY2ssIGtleS0+YnVmLCBrZXktPmxlbik7CisgICAgICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYmxvY2ssIHNpemVvZihibG9jaykpOworICAgICAgICBzZWN1cmVfemVyb19tZW1vcnkoYmxvY2ssIHNpemVvZihibG9jaykpOworICAgIH0KKworICAgIC8qIFByb2Nlc3MgaW5pdGlhbCBkYXRhIGlmIGFueS4gKi8KKyAgICBpZiAoZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihkYXRhLCAmYnVmLCBnb3RvIGVycm9yKTsKKworICAgICAgICBpZiAoYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBibGFrZTJiX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgIH0KKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKworICBlcnJvcjoKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJiLmJsYWtlMmIuY29weQorCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfY29weV9pbXBsKEJMQUtFMmJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg5Y2QzMzU1MGFiMTU0MyBpbnB1dD00YzljMzE5ZjE4ZjEwNzQ3XSovCit7CisgICAgQkxBS0UyYk9iamVjdCAqY3B5OworCisgICAgaWYgKChjcHkgPSBuZXdfQkxBS0UyYk9iamVjdChQeV9UWVBFKHNlbGYpKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIGNweS0+cGFyYW0gPSBzZWxmLT5wYXJhbTsKKyAgICBjcHktPnN0YXRlID0gc2VsZi0+c3RhdGU7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopY3B5OworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2UyYi5ibGFrZTJiLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl91cGRhdGUoQkxBS0UyYk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODg4ZjA3YzRjZGRiZTk0IGlucHV0PTNlY2I4YzEzZWU0MjYwZjJdKi8KK3sKKyAgICBQeV9idWZmZXIgYnVmOworCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMICYmIGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkKKyAgICAgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKworICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpIHsKKyAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2ssIDEpOworICAgICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2spOworICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSBlbHNlIHsKKyAgICAgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICB9CisjZWxzZQorICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisjZW5kaWYgLyogIVdJVEhfVEhSRUFEICovCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMmIuYmxha2UyYi5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdF9pbXBsKEJMQUtFMmJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjEzYTc5MzYwZDk4NDc0MCBpbnB1dD1hYzJmYTQ2MmViYjFiOWM3XSovCit7CisgICAgdWludDhfdCBkaWdlc3RbQkxBS0UyQl9PVVRCWVRFU107CisgICAgYmxha2UyYl9zdGF0ZSBzdGF0ZV9jcHk7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIHN0YXRlX2NweSA9IHNlbGYtPnN0YXRlOworICAgIGJsYWtlMmJfZmluYWwoJnN0YXRlX2NweSwgZGlnZXN0LCBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LAorICAgICAgICAgICAgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJiLmJsYWtlMmIuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTUwMzYxMTcxNWIyNGJkIGlucHV0PWQ1OGYwYjJmMzc4MTJlMzNdKi8KK3sKKyAgICB1aW50OF90IGRpZ2VzdFtCTEFLRTJCX09VVEJZVEVTXTsKKyAgICBibGFrZTJiX3N0YXRlIHN0YXRlX2NweTsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgc3RhdGVfY3B5ID0gc2VsZi0+c3RhdGU7CisgICAgYmxha2UyYl9maW5hbCgmc3RhdGVfY3B5LCBkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBweV9ibGFrZTJiX21ldGhvZHNbXSA9IHsKKyAgICBfQkxBS0UyQl9CTEFLRTJCX0NPUFlfTUVUSE9EREVGCisgICAgX0JMQUtFMkJfQkxBS0UyQl9ESUdFU1RfTUVUSE9EREVGCisgICAgX0JMQUtFMkJfQkxBS0UyQl9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgX0JMQUtFMkJfQkxBS0UyQl9VUERBVEVfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfZ2V0X25hbWUoQkxBS0UyYk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImJsYWtlMmIiKTsKK30KKworCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJiX2dldF9ibG9ja19zaXplKEJMQUtFMmJPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhCTEFLRTJCX0JMT0NLQllURVMpOworfQorCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfZ2V0X2RpZ2VzdF9zaXplKEJMQUtFMmJPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgcHlfYmxha2UyYl9nZXRzZXR0ZXJzW10gPSB7CisgICAgeyJuYW1lIiwgKGdldHRlcilweV9ibGFrZTJiX2dldF9uYW1lLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7ImJsb2NrX3NpemUiLCAoZ2V0dGVyKXB5X2JsYWtlMmJfZ2V0X2Jsb2NrX3NpemUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiZGlnZXN0X3NpemUiLCAoZ2V0dGVyKXB5X2JsYWtlMmJfZ2V0X2RpZ2VzdF9zaXplLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKKworc3RhdGljIHZvaWQKK3B5X2JsYWtlMmJfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBCTEFLRTJiT2JqZWN0ICpvYmogPSAoQkxBS0UyYk9iamVjdCAqKXNlbGY7CisKKyAgICAvKiBUcnkgbm90IHRvIGxlYXZlIHN0YXRlIGluIG1lbW9yeS4gKi8KKyAgICBzZWN1cmVfemVyb19tZW1vcnkoJm9iai0+cGFyYW0sIHNpemVvZihvYmotPnBhcmFtKSk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCZvYmotPnN0YXRlLCBzaXplb2Yob2JqLT5zdGF0ZSkpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKG9iai0+bG9jaykgeworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2sob2JqLT5sb2NrKTsKKyAgICAgICAgb2JqLT5sb2NrID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKworUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMmJUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYmxha2UyLmJsYWtlMmIiLCAgICAgICAgLyogdHBfbmFtZSAgICAgICAgICAgICovCisgICAgc2l6ZW9mKEJMQUtFMmJPYmplY3QpLCAgICAvKiB0cF9zaXplICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICAgICAgICAqLworICAgIHB5X2JsYWtlMmJfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAgICAgICAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgLyogdHBfZmxhZ3MgICAgICAgICAgICovCisgICAgcHlfYmxha2UyYl9uZXdfX2RvY19fLCAgICAvKiB0cF9kb2MgICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAgICAgICAgKi8KKyAgICBweV9ibGFrZTJiX21ldGhvZHMsICAgICAgIC8qIHRwX21ldGhvZHMgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAgICAgICAgICovCisgICAgcHlfYmxha2UyYl9nZXRzZXR0ZXJzLCAgICAvKiB0cF9nZXRzZXQgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICAgICAgICAgICAqLworICAgIHB5X2JsYWtlMmJfbmV3LCAgICAgICAgICAgLyogdHBfbmV3ICAgICAgICAgICAgICovCit9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm1vZHVsZS5jIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm1vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYTNkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UybW9kdWxlLmMKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBXcml0dGVuIGluIDIwMTMgYnkgRG1pdHJ5IENoZXN0bnlraCA8ZG1pdHJ5QGNvZGluZ3JvYm90cy5jb20+CisgKiBNb2RpZmllZCBmb3IgQ1B5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKyAqCisgKiBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvciBoYXZlIGRlZGljYXRlZCBhbGwKKyAqIGNvcHlyaWdodCBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8KKyAqIHRoZSBwdWJsaWMgZG9tYWluIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0CisgKiBhbnkgd2FycmFudHkuIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi5oIgorCitleHRlcm4gUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMmJUeXBlOworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUJsYWtlMl9CTEFLRTJzVHlwZTsKKworCitQeURvY19TVFJWQVIoYmxha2UybW9kX19kb2NfXywKKyJfYmxha2UyYiBwcm92aWRlcyBCTEFLRTJiIGZvciBoYXNobGliXG4iCispOworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgYmxha2UybW9kX2Z1bmN0aW9uc1tdID0geworICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBibGFrZTJfbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX2JsYWtlMiIsCisgICAgYmxha2UybW9kX19kb2NfXywKKyAgICAtMSwKKyAgICBibGFrZTJtb2RfZnVuY3Rpb25zLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKKyNkZWZpbmUgQUREX0lOVChkLCBuYW1lLCB2YWx1ZSkgZG8geyBcCisgICAgUHlPYmplY3QgKnggPSBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOyBcCisgICAgaWYgKCF4KSB7IFwKKyAgICAgICAgUHlfREVDUkVGKG0pOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHgpIDwgMCkgeyBcCisgICAgICAgIFB5X0RFQ1JFRihtKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgIH0gXAorICAgIFB5X0RFQ1JFRih4KTsgXAorfSB3aGlsZSgwKQorCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2JsYWtlMih2b2lkKQoreworICAgIFB5T2JqZWN0ICptOworICAgIFB5T2JqZWN0ICpkOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmYmxha2UyX21vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBCTEFLRTJiICovCisgICAgUHlfVFlQRSgmUHlCbGFrZTJfQkxBS0UyYlR5cGUpID0gJlB5VHlwZV9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Qmxha2UyX0JMQUtFMmJUeXBlKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKCZQeUJsYWtlMl9CTEFLRTJiVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJibGFrZTJiIiwgKFB5T2JqZWN0ICopJlB5Qmxha2UyX0JMQUtFMmJUeXBlKTsKKworICAgIGQgPSBQeUJsYWtlMl9CTEFLRTJiVHlwZS50cF9kaWN0OworICAgIEFERF9JTlQoZCwgIlNBTFRfU0laRSIsIEJMQUtFMkJfU0FMVEJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJQRVJTT05fU0laRSIsIEJMQUtFMkJfUEVSU09OQUxCWVRFUyk7CisgICAgQUREX0lOVChkLCAiTUFYX0tFWV9TSVpFIiwgQkxBS0UyQl9LRVlCWVRFUyk7CisgICAgQUREX0lOVChkLCAiTUFYX0RJR0VTVF9TSVpFIiwgQkxBS0UyQl9PVVRCWVRFUyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyQl9TQUxUX1NJWkUiLCBCTEFLRTJCX1NBTFRCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMkJfUEVSU09OX1NJWkUiLCBCTEFLRTJCX1BFUlNPTkFMQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJCX01BWF9LRVlfU0laRSIsIEJMQUtFMkJfS0VZQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJCX01BWF9ESUdFU1RfU0laRSIsIEJMQUtFMkJfT1VUQllURVMpOworCisgICAgLyogQkxBS0UycyAqLworICAgIFB5X1RZUEUoJlB5Qmxha2UyX0JMQUtFMnNUeXBlKSA9ICZQeVR5cGVfVHlwZTsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJsYWtlMl9CTEFLRTJzVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRigmUHlCbGFrZTJfQkxBS0Uyc1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiYmxha2UycyIsIChQeU9iamVjdCAqKSZQeUJsYWtlMl9CTEFLRTJzVHlwZSk7CisKKyAgICBkID0gUHlCbGFrZTJfQkxBS0Uyc1R5cGUudHBfZGljdDsKKyAgICBBRERfSU5UKGQsICJTQUxUX1NJWkUiLCBCTEFLRTJTX1NBTFRCWVRFUyk7CisgICAgQUREX0lOVChkLCAiUEVSU09OX1NJWkUiLCBCTEFLRTJTX1BFUlNPTkFMQllURVMpOworICAgIEFERF9JTlQoZCwgIk1BWF9LRVlfU0laRSIsIEJMQUtFMlNfS0VZQllURVMpOworICAgIEFERF9JTlQoZCwgIk1BWF9ESUdFU1RfU0laRSIsIEJMQUtFMlNfT1VUQllURVMpOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMlNfU0FMVF9TSVpFIiwgQkxBS0UyU19TQUxUQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJTX1BFUlNPTl9TSVpFIiwgQkxBS0UyU19QRVJTT05BTEJZVEVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyU19NQVhfS0VZX1NJWkUiLCBCTEFLRTJTX0tFWUJZVEVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyU19NQVhfRElHRVNUX1NJWkUiLCBCTEFLRTJTX09VVEJZVEVTKTsKKworICAgIHJldHVybiBtOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm5zLmggYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UybnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2JjZThlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm5zLmgKQEAgLTAsMCArMSwzMiBAQAorLyogUHJlZml4IGFsbCBwdWJsaWMgYmxha2UyIHN5bWJvbHMgd2l0aCBQeUJsYWtlMl8KKyAqLworCisjaWZuZGVmIFB5X0JMQUtFMl9OUworI2RlZmluZSBQeV9CTEFLRTJfTlMKKworI2RlZmluZSBibGFrZTJiICAgICAgICAgICAgUHlCbGFrZTJfYmxha2UyYgorI2RlZmluZSBibGFrZTJiX2NvbXByZXNzICAgUHlCbGFrZTJfYmxha2UyYl9jb21wcmVzcworI2RlZmluZSBibGFrZTJiX2ZpbmFsICAgICAgUHlCbGFrZTJfYmxha2UyYl9maW5hbAorI2RlZmluZSBibGFrZTJiX2luaXQgICAgICAgUHlCbGFrZTJfYmxha2UyYl9pbml0CisjZGVmaW5lIGJsYWtlMmJfaW5pdF9rZXkgICBQeUJsYWtlMl9ibGFrZTJiX2luaXRfa2V5CisjZGVmaW5lIGJsYWtlMmJfaW5pdF9wYXJhbSBQeUJsYWtlMl9ibGFrZTJiX2luaXRfcGFyYW0KKyNkZWZpbmUgYmxha2UyYl91cGRhdGUgICAgIFB5Qmxha2UyX2JsYWtlMmJfdXBkYXRlCisjZGVmaW5lIGJsYWtlMmJwICAgICAgICAgICBQeUJsYWtlMl9ibGFrZTJicAorI2RlZmluZSBibGFrZTJicF9maW5hbCAgICAgUHlCbGFrZTJfYmxha2UyYnBfZmluYWwKKyNkZWZpbmUgYmxha2UyYnBfaW5pdCAgICAgIFB5Qmxha2UyX2JsYWtlMmJwX2luaXQKKyNkZWZpbmUgYmxha2UyYnBfaW5pdF9rZXkgIFB5Qmxha2UyX2JsYWtlMmJwX2luaXRfa2V5CisjZGVmaW5lIGJsYWtlMmJwX3VwZGF0ZSAgICBQeUJsYWtlMl9ibGFrZTJicF91cGRhdGUKKyNkZWZpbmUgYmxha2UycyAgICAgICAgICAgIFB5Qmxha2UyX2JsYWtlMnMKKyNkZWZpbmUgYmxha2Uyc19jb21wcmVzcyAgIFB5Qmxha2UyX2JsYWtlMnNfY29tcHJlc3MKKyNkZWZpbmUgYmxha2Uyc19maW5hbCAgICAgIFB5Qmxha2UyX2JsYWtlMnNfZmluYWwKKyNkZWZpbmUgYmxha2Uyc19pbml0ICAgICAgIFB5Qmxha2UyX2JsYWtlMnNfaW5pdAorI2RlZmluZSBibGFrZTJzX2luaXRfa2V5ICAgUHlCbGFrZTJfYmxha2Uyc19pbml0X2tleQorI2RlZmluZSBibGFrZTJzX2luaXRfcGFyYW0gUHlCbGFrZTJfYmxha2Uyc19pbml0X3BhcmFtCisjZGVmaW5lIGJsYWtlMnNfdXBkYXRlICAgICBQeUJsYWtlMl9ibGFrZTJzX3VwZGF0ZQorI2RlZmluZSBibGFrZTJzcCAgICAgICAgICAgUHlCbGFrZTJfYmxha2Uyc3AKKyNkZWZpbmUgYmxha2Uyc3BfZmluYWwgICAgIFB5Qmxha2UyX2JsYWtlMnNwX2ZpbmFsCisjZGVmaW5lIGJsYWtlMnNwX2luaXQgICAgICBQeUJsYWtlMl9ibGFrZTJzcF9pbml0CisjZGVmaW5lIGJsYWtlMnNwX2luaXRfa2V5ICBQeUJsYWtlMl9ibGFrZTJzcF9pbml0X2tleQorI2RlZmluZSBibGFrZTJzcF91cGRhdGUgICAgUHlCbGFrZTJfYmxha2Uyc3BfdXBkYXRlCisKKyNlbmRpZiAvKiBQeV9CTEFLRTJfTlMgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWQyZTAyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jCkBAIC0wLDAgKzEsNDYwIEBACisvKgorICogV3JpdHRlbiBpbiAyMDEzIGJ5IERtaXRyeSBDaGVzdG55a2ggPGRtaXRyeUBjb2Rpbmdyb2JvdHMuY29tPgorICogTW9kaWZpZWQgZm9yIENQeXRob24gYnkgQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CisgKgorICogVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBhdXRob3IgaGF2ZSBkZWRpY2F0ZWQgYWxsCisgKiBjb3B5cmlnaHQgYW5kIHJlbGF0ZWQgYW5kIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGlzIHNvZnR3YXJlIHRvCisgKiB0aGUgcHVibGljIGRvbWFpbiB3b3JsZHdpZGUuIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgd2l0aG91dAorICogYW55IHdhcnJhbnR5LiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisgKi8KKworLyogV0FSTklORzogYXV0b2dlbmVyYXRlZCBmaWxlIQorICoKKyAqIFRoZSBibGFrZTJzX2ltcGwuYyBpcyBhdXRvZ2VuZXJhdGVkIGZyb20gYmxha2Uyc19pbXBsLmMuCisgKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKKyNpbmNsdWRlICIuLi9oYXNobGliLmgiCisjaW5jbHVkZSAiYmxha2UybnMuaCIKKworI2RlZmluZSBIQVZFX0JMQUtFMlMgMQorI2RlZmluZSBCTEFLRTJfTE9DQUxfSU5MSU5FKHR5cGUpIFB5X0xPQ0FMX0lOTElORSh0eXBlKQorCisjaW5jbHVkZSAiaW1wbC9ibGFrZTIuaCIKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi1pbXBsLmgiIC8qIGZvciBzZWN1cmVfemVyb19tZW1vcnkoKSBhbmQgc3RvcmU0OCgpICovCisKKyNpZmRlZiBCTEFLRTJfVVNFX1NTRQorI2luY2x1ZGUgImltcGwvYmxha2Uycy5jIgorI2Vsc2UKKyNpbmNsdWRlICJpbXBsL2JsYWtlMnMtcmVmLmMiCisjZW5kaWYKKworCitleHRlcm4gUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMnNUeXBlOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGJsYWtlMnNfcGFyYW0gICAgcGFyYW07CisgICAgYmxha2Uyc19zdGF0ZSAgICBzdGF0ZTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IEJMQUtFMnNPYmplY3Q7CisKKyNpbmNsdWRlICJjbGluaWMvYmxha2Uyc19pbXBsLmMuaCIKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9ibGFrZTJzCitjbGFzcyBfYmxha2Uycy5ibGFrZTJzICJCTEFLRTJzT2JqZWN0ICoiICImUHlCbGFrZTJfQkxBS0Uyc1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1lZGJmY2Y3NTU3YTY4NWE3XSovCisKKworc3RhdGljIEJMQUtFMnNPYmplY3QgKgorbmV3X0JMQUtFMnNPYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIEJMQUtFMnNPYmplY3QgKnNlbGY7CisgICAgc2VsZiA9IChCTEFLRTJzT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBzZWxmOworfQorCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19ibGFrZTJzLmJsYWtlMnMuX19uZXdfXyBhcyBweV9ibGFrZTJzX25ldworICAgIHN0cmluZyBhcyBkYXRhOiBvYmplY3QgPSBOVUxMCisgICAgKgorICAgIGRpZ2VzdF9zaXplOiBpbnQoY19kZWZhdWx0PSJCTEFLRTJTX09VVEJZVEVTIikgPSBfYmxha2Uycy5ibGFrZTJzLk1BWF9ESUdFU1RfU0laRQorICAgIGtleTogUHlfYnVmZmVyID0gTm9uZQorICAgIHNhbHQ6IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBwZXJzb246IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBmYW5vdXQ6IGludCA9IDEKKyAgICBkZXB0aDogaW50ID0gMQorICAgIGxlYWZfc2l6ZSBhcyBsZWFmX3NpemVfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgbm9kZV9vZmZzZXQgYXMgbm9kZV9vZmZzZXRfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgbm9kZV9kZXB0aDogaW50ID0gMAorICAgIGlubmVyX3NpemU6IGludCA9IDAKKyAgICBsYXN0X25vZGU6IGJvb2wgPSBGYWxzZQorCitSZXR1cm4gYSBuZXcgQkxBS0UycyBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSwgaW50IGRpZ2VzdF9zaXplLAorICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmtleSwgUHlfYnVmZmVyICpzYWx0LCBQeV9idWZmZXIgKnBlcnNvbiwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhbm91dCwgaW50IGRlcHRoLCBQeU9iamVjdCAqbGVhZl9zaXplX29iaiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiwgaW50IG5vZGVfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBpbm5lcl9zaXplLCBpbnQgbGFzdF9ub2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlMDYwYjI1OGE4Y2JmYzYgaW5wdXQ9NDU4Y2ZkY2IzZDBkNDdmZl0qLworeworICAgIEJMQUtFMnNPYmplY3QgKnNlbGYgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWY7CisKKyAgICB1bnNpZ25lZCBsb25nIGxlYWZfc2l6ZSA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5vZGVfb2Zmc2V0ID0gMDsKKworICAgIHNlbGYgPSBuZXdfQkxBS0Uyc09iamVjdCh0eXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogWmVybyBwYXJhbWV0ZXIgYmxvY2suICovCisgICAgbWVtc2V0KCZzZWxmLT5wYXJhbSwgMCwgc2l6ZW9mKHNlbGYtPnBhcmFtKSk7CisKKyAgICAvKiBTZXQgZGlnZXN0IHNpemUuICovCisgICAgaWYgKGRpZ2VzdF9zaXplIDw9IDAgfHwgZGlnZXN0X3NpemUgPiBCTEFLRTJTX09VVEJZVEVTKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJkaWdlc3Rfc2l6ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMlNfT1VUQllURVMpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X3NpemU7CisKKyAgICAvKiBTZXQgc2FsdCBwYXJhbWV0ZXIuICovCisgICAgaWYgKChzYWx0LT5vYmogIT0gTlVMTCkgJiYgc2FsdC0+bGVuKSB7CisgICAgICAgIGlmIChzYWx0LT5sZW4gPiBCTEFLRTJTX1NBTFRCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0gc2FsdCBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMlNfU0FMVEJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPnBhcmFtLnNhbHQsIHNhbHQtPmJ1Ziwgc2FsdC0+bGVuKTsKKyAgICB9CisKKyAgICAvKiBTZXQgcGVyc29uYWxpemF0aW9uIHBhcmFtZXRlci4gKi8KKyAgICBpZiAoKHBlcnNvbi0+b2JqICE9IE5VTEwpICYmIHBlcnNvbi0+bGVuKSB7CisgICAgICAgIGlmIChwZXJzb24tPmxlbiA+IEJMQUtFMlNfUEVSU09OQUxCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0gcGVyc29uIGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19QRVJTT05BTEJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPnBhcmFtLnBlcnNvbmFsLCBwZXJzb24tPmJ1ZiwgcGVyc29uLT5sZW4pOworICAgIH0KKworICAgIC8qIFNldCB0cmVlIHBhcmFtZXRlcnMuICovCisgICAgaWYgKGZhbm91dCA8IDAgfHwgZmFub3V0ID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJmYW5vdXQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5mYW5vdXQgPSAodWludDhfdClmYW5vdXQ7CisKKyAgICBpZiAoZGVwdGggPD0gMCB8fCBkZXB0aCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGVwdGggbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5kZXB0aCA9ICh1aW50OF90KWRlcHRoOworCisgICAgaWYgKGxlYWZfc2l6ZV9vYmogIT0gTlVMTCkgeworICAgICAgICBsZWFmX3NpemUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcobGVhZl9zaXplX29iaik7CisgICAgICAgIGlmIChsZWFmX3NpemUgPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxlYWZfc2l6ZSA+IDB4RkZGRkZGRkZVKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgImxlYWZfc2l6ZSBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgc2VsZi0+cGFyYW0ubGVhZl9sZW5ndGggPSAodW5zaWduZWQgaW50KWxlYWZfc2l6ZTsKKworICAgIGlmIChub2RlX29mZnNldF9vYmogIT0gTlVMTCkgeworICAgICAgICBub2RlX29mZnNldCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcobm9kZV9vZmZzZXRfb2JqKTsKKyAgICAgICAgaWYgKG5vZGVfb2Zmc2V0ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisjaWZkZWYgSEFWRV9CTEFLRTJTCisgICAgaWYgKG5vZGVfb2Zmc2V0ID4gMHhGRkZGRkZGRkZGRkZVTEwpIHsKKyAgICAgICAgLyogbWF4aW11bSAyKio0OCAtIDEgKi8KKyAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibm9kZV9vZmZzZXQgaXMgdG9vIGxhcmdlIik7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CisgICAgc3RvcmU0OCgmKHNlbGYtPnBhcmFtLm5vZGVfb2Zmc2V0KSwgbm9kZV9vZmZzZXQpOworI2Vsc2UKKyAgICBzZWxmLT5wYXJhbS5ub2RlX29mZnNldCA9IG5vZGVfb2Zmc2V0OworI2VuZGlmCisKKyAgICBpZiAobm9kZV9kZXB0aCA8IDAgfHwgbm9kZV9kZXB0aCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibm9kZV9kZXB0aCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworCisgICAgaWYgKGlubmVyX3NpemUgPCAwIHx8IGlubmVyX3NpemUgPiBCTEFLRTJTX09VVEJZVEVTKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJpbm5lcl9zaXplIG11c3QgYmUgYmV0d2VlbiAwIGFuZCBpcyAlZCIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19PVVRCWVRFUyk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmlubmVyX2xlbmd0aCA9IGlubmVyX3NpemU7CisKKyAgICAvKiBTZXQga2V5IGxlbmd0aC4gKi8KKyAgICBpZiAoKGtleS0+b2JqICE9IE5VTEwpICYmIGtleS0+bGVuKSB7CisgICAgICAgIGlmIChrZXktPmxlbiA+IEJMQUtFMlNfS0VZQllURVMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtYXhpbXVtIGtleSBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMlNfS0VZQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzZWxmLT5wYXJhbS5rZXlfbGVuZ3RoID0gKHVpbnQ4X3Qpa2V5LT5sZW47CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBoYXNoIHN0YXRlLiAqLworICAgIGlmIChibGFrZTJzX2luaXRfcGFyYW0oJnNlbGYtPnN0YXRlLCAmc2VsZi0+cGFyYW0pIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJlcnJvciBpbml0aWFsaXppbmcgaGFzaCBzdGF0ZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFNldCBsYXN0IG5vZGUgZmxhZyAobXVzdCBjb21lIGFmdGVyIGluaXRpYWxpemF0aW9uKS4gKi8KKyAgICBzZWxmLT5zdGF0ZS5sYXN0X25vZGUgPSBsYXN0X25vZGU7CisKKyAgICAvKiBQcm9jZXNzIGtleSBibG9jayBpZiBhbnkuICovCisgICAgaWYgKHNlbGYtPnBhcmFtLmtleV9sZW5ndGgpIHsKKyAgICAgICAgdWludDhfdCBibG9ja1tCTEFLRTJTX0JMT0NLQllURVNdOworICAgICAgICBtZW1zZXQoYmxvY2ssIDAsIHNpemVvZihibG9jaykpOworICAgICAgICBtZW1jcHkoYmxvY2ssIGtleS0+YnVmLCBrZXktPmxlbik7CisgICAgICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYmxvY2ssIHNpemVvZihibG9jaykpOworICAgICAgICBzZWN1cmVfemVyb19tZW1vcnkoYmxvY2ssIHNpemVvZihibG9jaykpOworICAgIH0KKworICAgIC8qIFByb2Nlc3MgaW5pdGlhbCBkYXRhIGlmIGFueS4gKi8KKyAgICBpZiAoZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihkYXRhLCAmYnVmLCBnb3RvIGVycm9yKTsKKworICAgICAgICBpZiAoYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBibGFrZTJzX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgIH0KKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKworICBlcnJvcjoKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJzLmJsYWtlMnMuY29weQorCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfY29weV9pbXBsKEJMQUtFMnNPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmM1YmFkYTQwNGI3YWVkNyBpbnB1dD1jODg1OGU4ODdhZTRhMDdhXSovCit7CisgICAgQkxBS0Uyc09iamVjdCAqY3B5OworCisgICAgaWYgKChjcHkgPSBuZXdfQkxBS0Uyc09iamVjdChQeV9UWVBFKHNlbGYpKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIGNweS0+cGFyYW0gPSBzZWxmLT5wYXJhbTsKKyAgICBjcHktPnN0YXRlID0gc2VsZi0+c3RhdGU7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopY3B5OworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2Uycy5ibGFrZTJzLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc191cGRhdGUoQkxBS0Uyc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZTg0MzhhMWQzY2VkZTg3IGlucHV0PTQ3YTQwOGI5YTNjYzA1YzVdKi8KK3sKKyAgICBQeV9idWZmZXIgYnVmOworCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMICYmIGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkKKyAgICAgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKworICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpIHsKKyAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2ssIDEpOworICAgICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2spOworICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSBlbHNlIHsKKyAgICAgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICB9CisjZWxzZQorICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisjZW5kaWYgLyogIVdJVEhfVEhSRUFEICovCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMnMuYmxha2Uycy5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdF9pbXBsKEJMQUtFMnNPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODBlODFhNDhjNmY3OWNmOSBpbnB1dD1mZWI5YTIyMDEzNWJkZWJhXSovCit7CisgICAgdWludDhfdCBkaWdlc3RbQkxBS0UyU19PVVRCWVRFU107CisgICAgYmxha2Uyc19zdGF0ZSBzdGF0ZV9jcHk7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIHN0YXRlX2NweSA9IHNlbGYtPnN0YXRlOworICAgIGJsYWtlMnNfZmluYWwoJnN0YXRlX2NweSwgZGlnZXN0LCBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LAorICAgICAgICAgICAgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJzLmJsYWtlMnMuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYjZjNTAyOGMwYTNjMmU1IGlucHV0PTRlNDg3N2I4YmQ3YWVhOTFdKi8KK3sKKyAgICB1aW50OF90IGRpZ2VzdFtCTEFLRTJTX09VVEJZVEVTXTsKKyAgICBibGFrZTJzX3N0YXRlIHN0YXRlX2NweTsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgc3RhdGVfY3B5ID0gc2VsZi0+c3RhdGU7CisgICAgYmxha2Uyc19maW5hbCgmc3RhdGVfY3B5LCBkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBweV9ibGFrZTJzX21ldGhvZHNbXSA9IHsKKyAgICBfQkxBS0UyU19CTEFLRTJTX0NPUFlfTUVUSE9EREVGCisgICAgX0JMQUtFMlNfQkxBS0UyU19ESUdFU1RfTUVUSE9EREVGCisgICAgX0JMQUtFMlNfQkxBS0UyU19IRVhESUdFU1RfTUVUSE9EREVGCisgICAgX0JMQUtFMlNfQkxBS0UyU19VUERBVEVfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfZ2V0X25hbWUoQkxBS0Uyc09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImJsYWtlMnMiKTsKK30KKworCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJzX2dldF9ibG9ja19zaXplKEJMQUtFMnNPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhCTEFLRTJTX0JMT0NLQllURVMpOworfQorCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfZ2V0X2RpZ2VzdF9zaXplKEJMQUtFMnNPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgcHlfYmxha2Uyc19nZXRzZXR0ZXJzW10gPSB7CisgICAgeyJuYW1lIiwgKGdldHRlcilweV9ibGFrZTJzX2dldF9uYW1lLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7ImJsb2NrX3NpemUiLCAoZ2V0dGVyKXB5X2JsYWtlMnNfZ2V0X2Jsb2NrX3NpemUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiZGlnZXN0X3NpemUiLCAoZ2V0dGVyKXB5X2JsYWtlMnNfZ2V0X2RpZ2VzdF9zaXplLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKKworc3RhdGljIHZvaWQKK3B5X2JsYWtlMnNfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBCTEFLRTJzT2JqZWN0ICpvYmogPSAoQkxBS0Uyc09iamVjdCAqKXNlbGY7CisKKyAgICAvKiBUcnkgbm90IHRvIGxlYXZlIHN0YXRlIGluIG1lbW9yeS4gKi8KKyAgICBzZWN1cmVfemVyb19tZW1vcnkoJm9iai0+cGFyYW0sIHNpemVvZihvYmotPnBhcmFtKSk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCZvYmotPnN0YXRlLCBzaXplb2Yob2JqLT5zdGF0ZSkpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKG9iai0+bG9jaykgeworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2sob2JqLT5sb2NrKTsKKyAgICAgICAgb2JqLT5sb2NrID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKworUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMnNUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYmxha2UyLmJsYWtlMnMiLCAgICAgICAgLyogdHBfbmFtZSAgICAgICAgICAgICovCisgICAgc2l6ZW9mKEJMQUtFMnNPYmplY3QpLCAgICAvKiB0cF9zaXplICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICAgICAgICAqLworICAgIHB5X2JsYWtlMnNfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAgICAgICAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgLyogdHBfZmxhZ3MgICAgICAgICAgICovCisgICAgcHlfYmxha2Uyc19uZXdfX2RvY19fLCAgICAvKiB0cF9kb2MgICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAgICAgICAgKi8KKyAgICBweV9ibGFrZTJzX21ldGhvZHMsICAgICAgIC8qIHRwX21ldGhvZHMgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAgICAgICAgICovCisgICAgcHlfYmxha2Uyc19nZXRzZXR0ZXJzLCAgICAvKiB0cF9nZXRzZXQgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICAgICAgICAgICAqLworICAgIHB5X2JsYWtlMnNfbmV3LCAgICAgICAgICAgLyogdHBfbmV3ICAgICAgICAgICAgICovCit9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJiX2ltcGwuYy5oIGIvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJiX2ltcGwuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYzA3M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMmJfaW1wbC5jLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihweV9ibGFrZTJiX25ld19fZG9jX18sCisiYmxha2UyYihzdHJpbmc9Tm9uZSwgKiwgZGlnZXN0X3NpemU9X2JsYWtlMmIuYmxha2UyYi5NQVhfRElHRVNUX1NJWkUsXG4iCisiICAgICAgICBrZXk9Tm9uZSwgc2FsdD1Ob25lLCBwZXJzb249Tm9uZSwgZmFub3V0PTEsIGRlcHRoPTEsXG4iCisiICAgICAgICBsZWFmX3NpemU9Tm9uZSwgbm9kZV9vZmZzZXQ9Tm9uZSwgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsXG4iCisiICAgICAgICBsYXN0X25vZGU9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgQkxBS0UyYiBoYXNoIG9iamVjdC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSwgaW50IGRpZ2VzdF9zaXplLAorICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmtleSwgUHlfYnVmZmVyICpzYWx0LCBQeV9idWZmZXIgKnBlcnNvbiwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhbm91dCwgaW50IGRlcHRoLCBQeU9iamVjdCAqbGVhZl9zaXplX29iaiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiwgaW50IG5vZGVfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBpbm5lcl9zaXplLCBpbnQgbGFzdF9ub2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgImRpZ2VzdF9zaXplIiwgImtleSIsICJzYWx0IiwgInBlcnNvbiIsICJmYW5vdXQiLCAiZGVwdGgiLCAibGVhZl9zaXplIiwgIm5vZGVfb2Zmc2V0IiwgIm5vZGVfZGVwdGgiLCAiaW5uZXJfc2l6ZSIsICJsYXN0X25vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyRpeSp5KnkqaWlPT2lpcDpibGFrZTJiIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZGF0YSA9IE5VTEw7CisgICAgaW50IGRpZ2VzdF9zaXplID0gQkxBS0UyQl9PVVRCWVRFUzsKKyAgICBQeV9idWZmZXIga2V5ID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBzYWx0ID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBwZXJzb24gPSB7TlVMTCwgTlVMTH07CisgICAgaW50IGZhbm91dCA9IDE7CisgICAgaW50IGRlcHRoID0gMTsKKyAgICBQeU9iamVjdCAqbGVhZl9zaXplX29iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiA9IE5VTEw7CisgICAgaW50IG5vZGVfZGVwdGggPSAwOworICAgIGludCBpbm5lcl9zaXplID0gMDsKKyAgICBpbnQgbGFzdF9ub2RlID0gMDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZkaWdlc3Rfc2l6ZSwgJmtleSwgJnNhbHQsICZwZXJzb24sICZmYW5vdXQsICZkZXB0aCwgJmxlYWZfc2l6ZV9vYmosICZub2RlX29mZnNldF9vYmosICZub2RlX2RlcHRoLCAmaW5uZXJfc2l6ZSwgJmxhc3Rfbm9kZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBweV9ibGFrZTJiX25ld19pbXBsKHR5cGUsIGRhdGEsIGRpZ2VzdF9zaXplLCAma2V5LCAmc2FsdCwgJnBlcnNvbiwgZmFub3V0LCBkZXB0aCwgbGVhZl9zaXplX29iaiwgbm9kZV9vZmZzZXRfb2JqLCBub2RlX2RlcHRoLCBpbm5lcl9zaXplLCBsYXN0X25vZGUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGtleSAqLworICAgIGlmIChrZXkub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgma2V5KTsKKyAgICB9CisgICAgLyogQ2xlYW51cCBmb3Igc2FsdCAqLworICAgIGlmIChzYWx0Lm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNhbHQpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBwZXJzb24gKi8KKyAgICBpZiAocGVyc29uLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBlcnNvbik7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9ibGFrZTJiX2JsYWtlMmJfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIF9CTEFLRTJCX0JMQUtFMkJfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilfYmxha2UyYl9ibGFrZTJiX2NvcHksIE1FVEhfTk9BUkdTLCBfYmxha2UyYl9ibGFrZTJiX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfY29weV9pbXBsKEJMQUtFMmJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9jb3B5KEJMQUtFMmJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJiX2JsYWtlMmJfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMmJfYmxha2UyYl91cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIF9CTEFLRTJCX0JMQUtFMkJfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMmJfYmxha2UyYl91cGRhdGUsIE1FVEhfTywgX2JsYWtlMmJfYmxha2UyYl91cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9ibGFrZTJiX2JsYWtlMmJfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfQkxBS0UyQl9CTEFLRTJCX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJiX2JsYWtlMmJfZGlnZXN0LCBNRVRIX05PQVJHUywgX2JsYWtlMmJfYmxha2UyYl9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfZGlnZXN0X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdChCTEFLRTJiT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBfQkxBS0UyQl9CTEFLRTJCX0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdChCTEFLRTJiT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzNWE1NDg1MmM5OGU1MWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJzX2ltcGwuYy5oIGIvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJzX2ltcGwuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhOTA4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMnNfaW1wbC5jLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihweV9ibGFrZTJzX25ld19fZG9jX18sCisiYmxha2UycyhzdHJpbmc9Tm9uZSwgKiwgZGlnZXN0X3NpemU9X2JsYWtlMnMuYmxha2Uycy5NQVhfRElHRVNUX1NJWkUsXG4iCisiICAgICAgICBrZXk9Tm9uZSwgc2FsdD1Ob25lLCBwZXJzb249Tm9uZSwgZmFub3V0PTEsIGRlcHRoPTEsXG4iCisiICAgICAgICBsZWFmX3NpemU9Tm9uZSwgbm9kZV9vZmZzZXQ9Tm9uZSwgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsXG4iCisiICAgICAgICBsYXN0X25vZGU9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgQkxBS0UycyBoYXNoIG9iamVjdC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSwgaW50IGRpZ2VzdF9zaXplLAorICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmtleSwgUHlfYnVmZmVyICpzYWx0LCBQeV9idWZmZXIgKnBlcnNvbiwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhbm91dCwgaW50IGRlcHRoLCBQeU9iamVjdCAqbGVhZl9zaXplX29iaiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiwgaW50IG5vZGVfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBpbm5lcl9zaXplLCBpbnQgbGFzdF9ub2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgImRpZ2VzdF9zaXplIiwgImtleSIsICJzYWx0IiwgInBlcnNvbiIsICJmYW5vdXQiLCAiZGVwdGgiLCAibGVhZl9zaXplIiwgIm5vZGVfb2Zmc2V0IiwgIm5vZGVfZGVwdGgiLCAiaW5uZXJfc2l6ZSIsICJsYXN0X25vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyRpeSp5KnkqaWlPT2lpcDpibGFrZTJzIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZGF0YSA9IE5VTEw7CisgICAgaW50IGRpZ2VzdF9zaXplID0gQkxBS0UyU19PVVRCWVRFUzsKKyAgICBQeV9idWZmZXIga2V5ID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBzYWx0ID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBwZXJzb24gPSB7TlVMTCwgTlVMTH07CisgICAgaW50IGZhbm91dCA9IDE7CisgICAgaW50IGRlcHRoID0gMTsKKyAgICBQeU9iamVjdCAqbGVhZl9zaXplX29iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiA9IE5VTEw7CisgICAgaW50IG5vZGVfZGVwdGggPSAwOworICAgIGludCBpbm5lcl9zaXplID0gMDsKKyAgICBpbnQgbGFzdF9ub2RlID0gMDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZkaWdlc3Rfc2l6ZSwgJmtleSwgJnNhbHQsICZwZXJzb24sICZmYW5vdXQsICZkZXB0aCwgJmxlYWZfc2l6ZV9vYmosICZub2RlX29mZnNldF9vYmosICZub2RlX2RlcHRoLCAmaW5uZXJfc2l6ZSwgJmxhc3Rfbm9kZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBweV9ibGFrZTJzX25ld19pbXBsKHR5cGUsIGRhdGEsIGRpZ2VzdF9zaXplLCAma2V5LCAmc2FsdCwgJnBlcnNvbiwgZmFub3V0LCBkZXB0aCwgbGVhZl9zaXplX29iaiwgbm9kZV9vZmZzZXRfb2JqLCBub2RlX2RlcHRoLCBpbm5lcl9zaXplLCBsYXN0X25vZGUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGtleSAqLworICAgIGlmIChrZXkub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgma2V5KTsKKyAgICB9CisgICAgLyogQ2xlYW51cCBmb3Igc2FsdCAqLworICAgIGlmIChzYWx0Lm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNhbHQpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBwZXJzb24gKi8KKyAgICBpZiAocGVyc29uLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBlcnNvbik7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9ibGFrZTJzX2JsYWtlMnNfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIF9CTEFLRTJTX0JMQUtFMlNfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilfYmxha2Uyc19ibGFrZTJzX2NvcHksIE1FVEhfTk9BUkdTLCBfYmxha2Uyc19ibGFrZTJzX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfY29weV9pbXBsKEJMQUtFMnNPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19jb3B5KEJMQUtFMnNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJzX2JsYWtlMnNfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMnNfYmxha2Uyc191cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIF9CTEFLRTJTX0JMQUtFMlNfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMnNfYmxha2Uyc191cGRhdGUsIE1FVEhfTywgX2JsYWtlMnNfYmxha2Uyc191cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9ibGFrZTJzX2JsYWtlMnNfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfQkxBS0UyU19CTEFLRTJTX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJzX2JsYWtlMnNfZGlnZXN0LCBNRVRIX05PQVJHUywgX2JsYWtlMnNfYmxha2Uyc19kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfZGlnZXN0X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdChCTEFLRTJzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBfQkxBS0UyU19CTEFLRTJTX0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdChCTEFLRTJzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzNWVhNzkwM2Y5Y2NmNzYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWNvbmZpZy5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNDU1YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItY29uZmlnLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKworICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyX0NPTkZJR19IX18KKyNkZWZpbmUgX19CTEFLRTJfQ09ORklHX0hfXworCisvKiBUaGVzZSBkb24ndCB3b3JrIGV2ZXJ5d2hlcmUgKi8KKyNpZiBkZWZpbmVkKF9fU1NFMl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hbWQ2NF9fKQorI2RlZmluZSBIQVZFX1NTRTIKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1NTU0UzX18pCisjZGVmaW5lIEhBVkVfU1NTRTMKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1NTRTRfMV9fKQorI2RlZmluZSBIQVZFX1NTRTQxCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BVlhfXykKKyNkZWZpbmUgSEFWRV9BVlgKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1hPUF9fKQorI2RlZmluZSBIQVZFX1hPUAorI2VuZGlmCisKKworI2lmZGVmIEhBVkVfQVZYMgorI2lmbmRlZiBIQVZFX0FWWAorI2RlZmluZSBIQVZFX0FWWAorI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIEhBVkVfWE9QCisjaWZuZGVmIEhBVkVfQVZYCisjZGVmaW5lIEhBVkVfQVZYCisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9BVlgKKyNpZm5kZWYgSEFWRV9TU0U0MQorI2RlZmluZSBIQVZFX1NTRTQxCisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TU0U0MQorI2lmbmRlZiBIQVZFX1NTU0UzCisjZGVmaW5lIEhBVkVfU1NTRTMKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NTU0UzCisjZGVmaW5lIEhBVkVfU1NFMgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChIQVZFX1NTRTIpCisjZXJyb3IgIlRoaXMgY29kZSByZXF1aXJlcyBhdCBsZWFzdCBTU0UyLiIKKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWltcGwuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi1pbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJlM2MwZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi1pbXBsLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMl9JTVBMX0hfXworI2RlZmluZSBfX0JMQUtFMl9JTVBMX0hfXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDMyX3QpIGxvYWQzMiggY29uc3Qgdm9pZCAqc3JjICkKK3sKKyNpZiBkZWZpbmVkKE5BVElWRV9MSVRUTEVfRU5ESUFOKQorICB1aW50MzJfdCB3OworICBtZW1jcHkoJncsIHNyYywgc2l6ZW9mIHcpOworICByZXR1cm4gdzsKKyNlbHNlCisgIGNvbnN0IHVpbnQ4X3QgKnAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApc3JjOworICB1aW50MzJfdCB3ID0gKnArKzsKKyAgdyB8PSAoIHVpbnQzMl90ICkoICpwKysgKSA8PCAgODsKKyAgdyB8PSAoIHVpbnQzMl90ICkoICpwKysgKSA8PCAxNjsKKyAgdyB8PSAoIHVpbnQzMl90ICkoICpwKysgKSA8PCAyNDsKKyAgcmV0dXJuIHc7CisjZW5kaWYKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50NjRfdCkgbG9hZDY0KCBjb25zdCB2b2lkICpzcmMgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIHVpbnQ2NF90IHc7CisgIG1lbWNweSgmdywgc3JjLCBzaXplb2Ygdyk7CisgIHJldHVybiB3OworI2Vsc2UKKyAgY29uc3QgdWludDhfdCAqcCA9ICggY29uc3QgdWludDhfdCAqIClzcmM7CisgIHVpbnQ2NF90IHcgPSAqcCsrOworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8ICA4OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDE2OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDI0OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDMyOworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDQwOworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDQ4OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDU2OworICByZXR1cm4gdzsKKyNlbmRpZgorfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHZvaWQpIHN0b3JlMzIoIHZvaWQgKmRzdCwgdWludDMyX3QgdyApCit7CisjaWYgZGVmaW5lZChOQVRJVkVfTElUVExFX0VORElBTikKKyAgbWVtY3B5KGRzdCwgJncsIHNpemVvZiB3KTsKKyNlbHNlCisgIHVpbnQ4X3QgKnAgPSAoIHVpbnQ4X3QgKiApZHN0OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OworI2VuZGlmCit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodm9pZCkgc3RvcmU2NCggdm9pZCAqZHN0LCB1aW50NjRfdCB3ICkKK3sKKyNpZiBkZWZpbmVkKE5BVElWRV9MSVRUTEVfRU5ESUFOKQorICBtZW1jcHkoZHN0LCAmdywgc2l6ZW9mIHcpOworI2Vsc2UKKyAgdWludDhfdCAqcCA9ICggdWludDhfdCAqIClkc3Q7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7CisjZW5kaWYKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50NjRfdCkgbG9hZDQ4KCBjb25zdCB2b2lkICpzcmMgKQoreworICBjb25zdCB1aW50OF90ICpwID0gKCBjb25zdCB1aW50OF90ICogKXNyYzsKKyAgdWludDY0X3QgdyA9ICpwKys7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgIDg7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMTY7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMjQ7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMzI7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgNDA7CisgIHJldHVybiB3OworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHZvaWQpIHN0b3JlNDgoIHZvaWQgKmRzdCwgdWludDY0X3QgdyApCit7CisgIHVpbnQ4X3QgKnAgPSAoIHVpbnQ4X3QgKiApZHN0OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQzMl90KSByb3RsMzIoIGNvbnN0IHVpbnQzMl90IHcsIGNvbnN0IHVuc2lnbmVkIGMgKQoreworICByZXR1cm4gKCB3IDw8IGMgKSB8ICggdyA+PiAoIDMyIC0gYyApICk7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDY0X3QpIHJvdGw2NCggY29uc3QgdWludDY0X3QgdywgY29uc3QgdW5zaWduZWQgYyApCit7CisgIHJldHVybiAoIHcgPDwgYyApIHwgKCB3ID4+ICggNjQgLSBjICkgKTsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50MzJfdCkgcm90cjMyKCBjb25zdCB1aW50MzJfdCB3LCBjb25zdCB1bnNpZ25lZCBjICkKK3sKKyAgcmV0dXJuICggdyA+PiBjICkgfCAoIHcgPDwgKCAzMiAtIGMgKSApOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQ2NF90KSByb3RyNjQoIGNvbnN0IHVpbnQ2NF90IHcsIGNvbnN0IHVuc2lnbmVkIGMgKQoreworICByZXR1cm4gKCB3ID4+IGMgKSB8ICggdyA8PCAoIDY0IC0gYyApICk7Cit9CisKKy8qIHByZXZlbnRzIGNvbXBpbGVyIG9wdGltaXppbmcgb3V0IG1lbXNldCgpICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKHZvaWQpIHNlY3VyZV96ZXJvX21lbW9yeSh2b2lkICp2LCBzaXplX3QgbikKK3sKKyAgc3RhdGljIHZvaWQgKigqY29uc3Qgdm9sYXRpbGUgbWVtc2V0X3YpKHZvaWQgKiwgaW50LCBzaXplX3QpID0gJm1lbXNldDsKKyAgbWVtc2V0X3YodiwgMCwgbik7Cit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTIuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhOWZkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTIuaApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIHJlZmVyZW5jZSBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyX0hfXworI2RlZmluZSBfX0JMQUtFMl9IX18KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaWZkZWYgQkxBS0UyX05PX0lOTElORQorI2RlZmluZSBCTEFLRTJfTE9DQUxfSU5MSU5FKHR5cGUpIHN0YXRpYyB0eXBlCisjZW5kaWYKKworI2lmbmRlZiBCTEFLRTJfTE9DQUxfSU5MSU5FCisjZGVmaW5lIEJMQUtFMl9MT0NBTF9JTkxJTkUodHlwZSkgc3RhdGljIGlubGluZSB0eXBlCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisgIGVudW0gYmxha2Uyc19jb25zdGFudAorICB7CisgICAgQkxBS0UyU19CTE9DS0JZVEVTID0gNjQsCisgICAgQkxBS0UyU19PVVRCWVRFUyAgID0gMzIsCisgICAgQkxBS0UyU19LRVlCWVRFUyAgID0gMzIsCisgICAgQkxBS0UyU19TQUxUQllURVMgID0gOCwKKyAgICBCTEFLRTJTX1BFUlNPTkFMQllURVMgPSA4CisgIH07CisKKyAgZW51bSBibGFrZTJiX2NvbnN0YW50CisgIHsKKyAgICBCTEFLRTJCX0JMT0NLQllURVMgPSAxMjgsCisgICAgQkxBS0UyQl9PVVRCWVRFUyAgID0gNjQsCisgICAgQkxBS0UyQl9LRVlCWVRFUyAgID0gNjQsCisgICAgQkxBS0UyQl9TQUxUQllURVMgID0gMTYsCisgICAgQkxBS0UyQl9QRVJTT05BTEJZVEVTID0gMTYKKyAgfTsKKworICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMnNfc3RhdGUKKyAgeworICAgIHVpbnQzMl90IGhbOF07CisgICAgdWludDMyX3QgdFsyXTsKKyAgICB1aW50MzJfdCBmWzJdOworICAgIHVpbnQ4X3QgIGJ1ZlsyICogQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgICBidWZsZW47CisgICAgdWludDhfdCAgbGFzdF9ub2RlOworICB9IGJsYWtlMnNfc3RhdGU7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJiX3N0YXRlCisgIHsKKyAgICB1aW50NjRfdCBoWzhdOworICAgIHVpbnQ2NF90IHRbMl07CisgICAgdWludDY0X3QgZlsyXTsKKyAgICB1aW50OF90ICBidWZbMiAqIEJMQUtFMkJfQkxPQ0tCWVRFU107CisgICAgc2l6ZV90ICAgYnVmbGVuOworICAgIHVpbnQ4X3QgIGxhc3Rfbm9kZTsKKyAgfSBibGFrZTJiX3N0YXRlOworCisgIHR5cGVkZWYgc3RydWN0IF9fYmxha2Uyc3Bfc3RhdGUKKyAgeworICAgIGJsYWtlMnNfc3RhdGUgU1s4XVsxXTsKKyAgICBibGFrZTJzX3N0YXRlIFJbMV07CisgICAgdWludDhfdCBidWZbOCAqIEJMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgc2l6ZV90ICBidWZsZW47CisgIH0gYmxha2Uyc3Bfc3RhdGU7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJicF9zdGF0ZQorICB7CisgICAgYmxha2UyYl9zdGF0ZSBTWzRdWzFdOworICAgIGJsYWtlMmJfc3RhdGUgUlsxXTsKKyAgICB1aW50OF90IGJ1Zls0ICogQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgIGJ1ZmxlbjsKKyAgfSBibGFrZTJicF9zdGF0ZTsKKworCisjcHJhZ21hIHBhY2socHVzaCwgMSkKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJzX3BhcmFtCisgIHsKKyAgICB1aW50OF90ICBkaWdlc3RfbGVuZ3RoOyAvKiAxICovCisgICAgdWludDhfdCAga2V5X2xlbmd0aDsgICAgLyogMiAqLworICAgIHVpbnQ4X3QgIGZhbm91dDsgICAgICAgIC8qIDMgKi8KKyAgICB1aW50OF90ICBkZXB0aDsgICAgICAgICAvKiA0ICovCisgICAgdWludDMyX3QgbGVhZl9sZW5ndGg7ICAgLyogOCAqLworICAgIHVpbnQ4X3QgIG5vZGVfb2Zmc2V0WzZdOy8vIDE0CisgICAgdWludDhfdCAgbm9kZV9kZXB0aDsgICAgLyogMTUgKi8KKyAgICB1aW50OF90ICBpbm5lcl9sZW5ndGg7ICAvKiAxNiAqLworICAgIC8qIHVpbnQ4X3QgIHJlc2VydmVkWzBdOyAqLworICAgIHVpbnQ4X3QgIHNhbHRbQkxBS0UyU19TQUxUQllURVNdOyAvKiAyNCAqLworICAgIHVpbnQ4X3QgIHBlcnNvbmFsW0JMQUtFMlNfUEVSU09OQUxCWVRFU107ICAvKiAzMiAqLworICB9IGJsYWtlMnNfcGFyYW07CisKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJiX3BhcmFtCisgIHsKKyAgICB1aW50OF90ICBkaWdlc3RfbGVuZ3RoOyAvKiAxICovCisgICAgdWludDhfdCAga2V5X2xlbmd0aDsgICAgLyogMiAqLworICAgIHVpbnQ4X3QgIGZhbm91dDsgICAgICAgIC8qIDMgKi8KKyAgICB1aW50OF90ICBkZXB0aDsgICAgICAgICAvKiA0ICovCisgICAgdWludDMyX3QgbGVhZl9sZW5ndGg7ICAgLyogOCAqLworICAgIHVpbnQ2NF90IG5vZGVfb2Zmc2V0OyAgIC8qIDE2ICovCisgICAgdWludDhfdCAgbm9kZV9kZXB0aDsgICAgLyogMTcgKi8KKyAgICB1aW50OF90ICBpbm5lcl9sZW5ndGg7ICAvKiAxOCAqLworICAgIHVpbnQ4X3QgIHJlc2VydmVkWzE0XTsgIC8qIDMyICovCisgICAgdWludDhfdCAgc2FsdFtCTEFLRTJCX1NBTFRCWVRFU107IC8qIDQ4ICovCisgICAgdWludDhfdCAgcGVyc29uYWxbQkxBS0UyQl9QRVJTT05BTEJZVEVTXTsgIC8qIDY0ICovCisgIH0gYmxha2UyYl9wYXJhbTsKKyNwcmFnbWEgcGFjayhwb3ApCisKKyAgLyogU3RyZWFtaW5nIEFQSSAqLworICBpbnQgYmxha2Uyc19pbml0KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApOworICBpbnQgYmxha2Uyc19pbml0X2tleSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMnNfaW5pdF9wYXJhbSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgYmxha2Uyc19wYXJhbSAqUCApOworICBpbnQgYmxha2Uyc191cGRhdGUoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApOworICBpbnQgYmxha2Uyc19maW5hbCggYmxha2Uyc19zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApOworCisgIGludCBibGFrZTJiX2luaXQoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJiX2luaXRfa2V5KCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2UyYl9pbml0X3BhcmFtKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCBibGFrZTJiX3BhcmFtICpQICk7CisgIGludCBibGFrZTJiX3VwZGF0ZSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICk7CisgIGludCBibGFrZTJiX2ZpbmFsKCBibGFrZTJiX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICk7CisKKyAgaW50IGJsYWtlMnNwX2luaXQoIGJsYWtlMnNwX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApOworICBpbnQgYmxha2Uyc3BfaW5pdF9rZXkoIGJsYWtlMnNwX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2Uyc3BfdXBkYXRlKCBibGFrZTJzcF9zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICk7CisgIGludCBibGFrZTJzcF9maW5hbCggYmxha2Uyc3Bfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKTsKKworICBpbnQgYmxha2UyYnBfaW5pdCggYmxha2UyYnBfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJicF9pbml0X2tleSggYmxha2UyYnBfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJicF91cGRhdGUoIGJsYWtlMmJwX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMmJwX2ZpbmFsKCBibGFrZTJicF9zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApOworCisgIC8qIFNpbXBsZSBBUEkgKi8KKyAgaW50IGJsYWtlMnMoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2UyYiggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICk7CisKKyAgaW50IGJsYWtlMnNwKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMmJwKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKTsKKworICBzdGF0aWMgaW5saW5lIGludCBibGFrZTIoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCisgIHsKKyAgICByZXR1cm4gYmxha2UyYiggb3V0LCBpbiwga2V5LCBvdXRsZW4sIGlubGVuLCBrZXlsZW4gKTsKKyAgfQorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTIuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2UyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwNGE5OAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2UyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyQl9MT0FEX1NTRTJfSF9fCisjZGVmaW5lIF9fQkxBS0UyQl9MT0FEX1NTRTJfSF9fCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMiwgbTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG02LCBtNCkKKyNkZWZpbmUgTE9BRF9NU0dfMF8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMywgbTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG03LCBtNSkKKyNkZWZpbmUgTE9BRF9NU0dfMF8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG04KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfMF80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTEsIG05KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG0xMykKKyNkZWZpbmUgTE9BRF9NU0dfMV8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNCwgbTE0KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG05KQorI2RlZmluZSBMT0FEX01TR18xXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMTUpCisjZGVmaW5lIExPQURfTVNHXzFfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTAsIG0xKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTExKQorI2RlZmluZSBMT0FEX01TR18xXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0yLCBtMTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtNykKKyNkZWZpbmUgTE9BRF9NU0dfMl8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTIsIG0xMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTE1LCBtNSkKKyNkZWZpbmUgTE9BRF9NU0dfMl8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMCwgbTgpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTIpCisjZGVmaW5lIExPQURfTVNHXzJfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTMsIG0xMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTksIG03KQorI2RlZmluZSBMT0FEX01TR18yXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMSkKKyNkZWZpbmUgTE9BRF9NU0dfM18xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMywgbTcpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMSwgbTEzKQorI2RlZmluZSBMT0FEX01TR18zXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xLCBtOSk7IGIxID0gX21tX3NldF9lcGk2NHgobTE0LCBtMTIpCisjZGVmaW5lIExPQURfTVNHXzNfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTUsIG0yKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG00KQorI2RlZmluZSBMT0FEX01TR18zXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTYpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMCkKKyNkZWZpbmUgTE9BRF9NU0dfNF8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTkpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTIpCisjZGVmaW5lIExPQURfTVNHXzRfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTcsIG0wKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG00KQorI2RlZmluZSBMT0FEX01TR180XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMSwgbTE0KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMywgbTYpCisjZGVmaW5lIExPQURfTVNHXzRfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEyLCBtMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTEzLCBtOCkKKyNkZWZpbmUgTE9BRF9NU0dfNV8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNiwgbTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMCkKKyNkZWZpbmUgTE9BRF9NU0dfNV8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG0xMik7IGIxID0gX21tX3NldF9lcGk2NHgobTMsIG0xMSkKKyNkZWZpbmUgTE9BRF9NU0dfNV8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNywgbTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xLCBtMTUpCisjZGVmaW5lIExPQURfTVNHXzVfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTUsIG0xMyk7IGIxID0gX21tX3NldF9lcGk2NHgobTksIG0xNCkKKyNkZWZpbmUgTE9BRF9NU0dfNl8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMSwgbTEyKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNCwgbTE0KQorI2RlZmluZSBMT0FEX01TR182XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTUpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTEzKQorI2RlZmluZSBMT0FEX01TR182XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTgsIG05KQorI2RlZmluZSBMT0FEX01TR182XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtNyk7IGIxID0gX21tX3NldF9lcGk2NHgobTExLCBtMikKKyNkZWZpbmUgTE9BRF9NU0dfN18xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNywgbTEzKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMywgbTEyKQorI2RlZmluZSBMT0FEX01TR183XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTExKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOSwgbTEpCisjZGVmaW5lIExPQURfTVNHXzdfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTE1LCBtNSk7IGIxID0gX21tX3NldF9lcGk2NHgobTIsIG04KQorI2RlZmluZSBMT0FEX01TR183XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEwLCBtNikKKyNkZWZpbmUgTE9BRF9NU0dfOF8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG02KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMCwgbTExKQorI2RlZmluZSBMT0FEX01TR184XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG05LCBtMTUpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMykKKyNkZWZpbmUgTE9BRF9NU0dfOF8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG0xMik7IGIxID0gX21tX3NldF9lcGk2NHgobTEwLCBtMSkKKyNkZWZpbmUgTE9BRF9NU0dfOF80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNywgbTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG01LCBtNCkKKyNkZWZpbmUgTE9BRF9NU0dfOV8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtOCwgbTEwKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMSwgbTcpCisjZGVmaW5lIExPQURfTVNHXzlfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTQsIG0yKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTYpCisjZGVmaW5lIExPQURfTVNHXzlfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTksIG0xNSk7IGIxID0gX21tX3NldF9lcGk2NHgobTEzLCBtMykKKyNkZWZpbmUgTE9BRF9NU0dfOV80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG0xMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTAsIG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfMTBfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTIsIG0wKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNiwgbTQpCisjZGVmaW5lIExPQURfTVNHXzEwXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTcsIG01KQorI2RlZmluZSBMT0FEX01TR18xMF8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG04KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfMTBfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTExLCBtOSk7IGIxID0gX21tX3NldF9lcGk2NHgobTE1LCBtMTMpCisjZGVmaW5lIExPQURfTVNHXzExXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTkpCisjZGVmaW5lIExPQURfTVNHXzExXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMTUpCisjZGVmaW5lIExPQURfTVNHXzExXzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0wLCBtMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTUsIG0xMSkKKyNkZWZpbmUgTE9BRF9NU0dfMTFfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTIsIG0xMik7IGIxID0gX21tX3NldF9lcGk2NHgobTMsIG03KQorCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLWxvYWQtc3NlNDEuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2U0MS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYTEzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLWxvYWQtc3NlNDEuaApAQCAtMCwwICsxLDQwNCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyQl9MT0FEX1NTRTQxX0hfXworI2RlZmluZSBfX0JMQUtFMkJfTE9BRF9TU0U0MV9IX18KKworI2RlZmluZSBMT0FEX01TR18wXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtMSk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0yLCBtMyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzBfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTIsIG0zKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNCwgbTUpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18wXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtNSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzFfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTcsIG0yKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTQsIG02KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMV8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNSwgbTQpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtMywgbTcsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3NodWZmbGVfZXBpMzIobTAsIF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTUsIG0yKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMV80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTEpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18yXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2FsaWducl9lcGk4KG02LCBtNSwgOCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0yLCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzJfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTQsIG0wKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTEsIG02LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMl8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtNSwgbTEsIDB4RjApOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTQpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18yXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG03LCBtMyk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG0yLCBtMCwgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzNfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTYsIG01KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfM18yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTApOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18zXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG0xLCBtMiwgMHhGMCk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0yLCBtNywgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzNfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTMsIG01KTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG00KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNF8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTIpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtMSwgbTUpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR180XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG0wLCBtMywgMHhGMCk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0yLCBtNywgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzRfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTcsIG01LCAweEYwKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTMsIG0xLCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNF80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9hbGlnbnJfZXBpOChtNiwgbTAsIDgpOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtNCwgbTYsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR181XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0xLCBtMyk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtNCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzVfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTYsIG01KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTUsIG0xKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNV8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtMiwgbTMsIDB4RjApOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNywgbTApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR181XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG02LCBtMik7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG03LCBtNCwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzZfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTYsIG0wLCAweEYwKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTcsIG0yKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNl8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMiwgbTcpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtNSwgbTYsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR182XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtMyk7IFwKK2IxID0gX21tX3NodWZmbGVfZXBpMzIobTQsIF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNl80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTEpOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtMSwgbTUsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR183XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG02LCBtMyk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG02LCBtMSwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzdfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYWxpZ25yX2VwaTgobTcsIG01LCA4KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsIG00KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMiwgbTcpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNCwgbTEpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR183XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtMik7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0zLCBtNSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzhfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTMsIG03KTsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTAsIG01LCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOF8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNywgbTQpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtNCwgbTEsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR184XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gbTY7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG01LCBtMCwgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzhfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTEsIG0zLCAweEYwKTsgXAorYjEgPSBtMjsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOV8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNSwgbTQpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR185XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0xLCBtMik7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0zLCBtMiwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzlfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTcsIG00KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTEsIG02KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOV80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9hbGlnbnJfZXBpOChtNywgbTUsIDgpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMF8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMCwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtMiwgbTMpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMF8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMCwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMiwgbTMpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMF8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNCwgbTUpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMF80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTUpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMV8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNywgbTIpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTYpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMV8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNSwgbTQpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtMywgbTcsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMV8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9zaHVmZmxlX2VwaTMyKG0wLCBfTU1fU0hVRkZMRSgxLDAsMywyKSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG01LCBtMik7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzExXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtMSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtMSk7IFwKK30gd2hpbGUoMCkKKworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yZWYuYyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcmVmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIzNzVhNAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcmVmLmMKQEAgLTAsMCArMSw0MjAgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSByZWZlcmVuY2UgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJibGFrZTIuaCIKKyNpbmNsdWRlICJibGFrZTItaW1wbC5oIgorCitzdGF0aWMgY29uc3QgdWludDY0X3QgYmxha2UyYl9JVls4XSA9Cit7CisgIDB4NmEwOWU2NjdmM2JjYzkwOFVMTCwgMHhiYjY3YWU4NTg0Y2FhNzNiVUxMLAorICAweDNjNmVmMzcyZmU5NGY4MmJVTEwsIDB4YTU0ZmY1M2E1ZjFkMzZmMVVMTCwKKyAgMHg1MTBlNTI3ZmFkZTY4MmQxVUxMLCAweDliMDU2ODhjMmIzZTZjMWZVTEwsCisgIDB4MWY4M2Q5YWJmYjQxYmQ2YlVMTCwgMHg1YmUwY2QxOTEzN2UyMTc5VUxMCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBibGFrZTJiX3NpZ21hWzEyXVsxNl0gPQoreworICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0gLAorICB7IDExLCAgOCwgMTIsICAwLCAgNSwgIDIsIDE1LCAxMywgMTAsIDE0LCAgMywgIDYsICA3LCAgMSwgIDksICA0IH0gLAorICB7ICA3LCAgOSwgIDMsICAxLCAxMywgMTIsIDExLCAxNCwgIDIsICA2LCAgNSwgMTAsICA0LCAgMCwgMTUsICA4IH0gLAorICB7ICA5LCAgMCwgIDUsICA3LCAgMiwgIDQsIDEwLCAxNSwgMTQsICAxLCAxMSwgMTIsICA2LCAgOCwgIDMsIDEzIH0gLAorICB7ICAyLCAxMiwgIDYsIDEwLCAgMCwgMTEsICA4LCAgMywgIDQsIDEzLCAgNywgIDUsIDE1LCAxNCwgIDEsICA5IH0gLAorICB7IDEyLCAgNSwgIDEsIDE1LCAxNCwgMTMsICA0LCAxMCwgIDAsICA3LCAgNiwgIDMsICA5LCAgMiwgIDgsIDExIH0gLAorICB7IDEzLCAxMSwgIDcsIDE0LCAxMiwgIDEsICAzLCAgOSwgIDUsICAwLCAxNSwgIDQsICA4LCAgNiwgIDIsIDEwIH0gLAorICB7ICA2LCAxNSwgMTQsICA5LCAxMSwgIDMsICAwLCAgOCwgMTIsICAyLCAxMywgIDcsICAxLCAgNCwgMTAsICA1IH0gLAorICB7IDEwLCAgMiwgIDgsICA0LCAgNywgIDYsICAxLCAgNSwgMTUsIDExLCAgOSwgMTQsICAzLCAxMiwgMTMgLCAwIH0gLAorICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0KK307CisKKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfc2V0X2xhc3Rub2RlKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfY2xlYXJfbGFzdG5vZGUoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIFNvbWUgaGVscGVyIGZ1bmN0aW9ucywgbm90IG5lY2Vzc2FyaWx5IHVzZWZ1bCAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaXNfbGFzdGJsb2NrKCBjb25zdCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgcmV0dXJuIFMtPmZbMF0gIT0gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfc2V0X2xhc3RibG9jayggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJiX3NldF9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2NsZWFyX2xhc3RibG9jayggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJiX2NsZWFyX2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IDA7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDY0X3QgaW5jICkKK3sKKyAgUy0+dFswXSArPSBpbmM7CisgIFMtPnRbMV0gKz0gKCBTLT50WzBdIDwgaW5jICk7CisgIHJldHVybiAwOworfQorCisKKworLyogUGFyYW1ldGVyLXJlbGF0ZWQgZnVuY3Rpb25zICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfZGlnZXN0X2xlbmd0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkaWdlc3RfbGVuZ3RoICkKK3sKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IGRpZ2VzdF9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfZmFub3V0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGZhbm91dCApCit7CisgIFAtPmZhbm91dCA9IGZhbm91dDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9tYXhfZGVwdGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGVwdGggKQoreworICBQLT5kZXB0aCA9IGRlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2xlYWZfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50MzJfdCBsZWFmX2xlbmd0aCApCit7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgbGVhZl9sZW5ndGggKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9ub2RlX29mZnNldCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDY0X3Qgbm9kZV9vZmZzZXQgKQoreworICBzdG9yZTY0KCAmUC0+bm9kZV9vZmZzZXQsIG5vZGVfb2Zmc2V0ICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbm9kZV9kZXB0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBub2RlX2RlcHRoICkKK3sKKyAgUC0+bm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfaW5uZXJfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGlubmVyX2xlbmd0aCApCit7CisgIFAtPmlubmVyX2xlbmd0aCA9IGlubmVyX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9zYWx0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHNhbHRbQkxBS0UyQl9TQUxUQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5zYWx0LCBzYWx0LCBCTEFLRTJCX1NBTFRCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X3BlcnNvbmFsKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHBlcnNvbmFsW0JMQUtFMkJfUEVSU09OQUxCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnBlcnNvbmFsLCBwZXJzb25hbCwgQkxBS0UyQl9QRVJTT05BTEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pbml0MCggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGludCBpOworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2UyYl9zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIFMtPmhbaV0gPSBibGFrZTJiX0lWW2ldOworCisgIHJldHVybiAwOworfQorCisvKiBpbml0IHhvcnMgSVYgd2l0aCBpbnB1dCBwYXJhbWV0ZXIgYmxvY2sgKi8KK2ludCBibGFrZTJiX2luaXRfcGFyYW0oIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMmJfcGFyYW0gKlAgKQoreworICBjb25zdCB1aW50OF90ICpwID0gKCBjb25zdCB1aW50OF90ICogKSggUCApOworICBzaXplX3QgaTsKKworICBibGFrZTJiX2luaXQwKCBTICk7CisKKyAgLyogSVYgWE9SIFBhcmFtQmxvY2sgKi8KKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApCisgICAgUy0+aFtpXSBePSBsb2FkNjQoIHAgKyBzaXplb2YoIFMtPmhbaV0gKSAqIGkgKTsKKworICByZXR1cm4gMDsKK30KKworCisKK2ludCBibGFrZTJiX2luaXQoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgYmxha2UyYl9wYXJhbSBQWzFdOworCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IG91dGxlbjsKKyAgUC0+a2V5X2xlbmd0aCAgICA9IDA7CisgIFAtPmZhbm91dCAgICAgICAgPSAxOworICBQLT5kZXB0aCAgICAgICAgID0gMTsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlNjQoICZQLT5ub2RlX29mZnNldCwgMCApOworICBQLT5ub2RlX2RlcHRoICAgID0gMDsKKyAgUC0+aW5uZXJfbGVuZ3RoICA9IDA7CisgIG1lbXNldCggUC0+cmVzZXJ2ZWQsIDAsIHNpemVvZiggUC0+cmVzZXJ2ZWQgKSApOworICBtZW1zZXQoIFAtPnNhbHQsICAgICAwLCBzaXplb2YoIFAtPnNhbHQgKSApOworICBtZW1zZXQoIFAtPnBlcnNvbmFsLCAwLCBzaXplb2YoIFAtPnBlcnNvbmFsICkgKTsKKyAgcmV0dXJuIGJsYWtlMmJfaW5pdF9wYXJhbSggUywgUCApOworfQorCisKK2ludCBibGFrZTJiX2luaXRfa2V5KCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMmJfcGFyYW0gUFsxXTsKKworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIGlmICggIWtleSB8fCAha2V5bGVuIHx8IGtleWxlbiA+IEJMQUtFMkJfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IG91dGxlbjsKKyAgUC0+a2V5X2xlbmd0aCAgICA9IGtleWxlbjsKKyAgUC0+ZmFub3V0ICAgICAgICA9IDE7CisgIFAtPmRlcHRoICAgICAgICAgPSAxOworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIDAgKTsKKyAgc3RvcmU2NCggJlAtPm5vZGVfb2Zmc2V0LCAwICk7CisgIFAtPm5vZGVfZGVwdGggICAgPSAwOworICBQLT5pbm5lcl9sZW5ndGggID0gMDsKKyAgbWVtc2V0KCBQLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKCBQLT5yZXNlcnZlZCApICk7CisgIG1lbXNldCggUC0+c2FsdCwgICAgIDAsIHNpemVvZiggUC0+c2FsdCApICk7CisgIG1lbXNldCggUC0+cGVyc29uYWwsIDAsIHNpemVvZiggUC0+cGVyc29uYWwgKSApOworCisgIGlmKCBibGFrZTJiX2luaXRfcGFyYW0oIFMsIFAgKSA8IDAgKSByZXR1cm4gLTE7CisKKyAgeworICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICBtZW1zZXQoIGJsb2NrLCAwLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBtZW1jcHkoIGJsb2NrLCBrZXksIGtleWxlbiApOworICAgIGJsYWtlMmJfdXBkYXRlKCBTLCBibG9jaywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCBibG9jaywgQkxBS0UyQl9CTE9DS0JZVEVTICk7IC8qIEJ1cm4gdGhlIGtleSBmcm9tIHN0YWNrICovCisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmxha2UyYl9jb21wcmVzcyggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdICkKK3sKKyAgdWludDY0X3QgbVsxNl07CisgIHVpbnQ2NF90IHZbMTZdOworICBpbnQgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgMTY7ICsraSApCisgICAgbVtpXSA9IGxvYWQ2NCggYmxvY2sgKyBpICogc2l6ZW9mKCBtW2ldICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICB2W2ldID0gUy0+aFtpXTsKKworICB2WyA4XSA9IGJsYWtlMmJfSVZbMF07CisgIHZbIDldID0gYmxha2UyYl9JVlsxXTsKKyAgdlsxMF0gPSBibGFrZTJiX0lWWzJdOworICB2WzExXSA9IGJsYWtlMmJfSVZbM107CisgIHZbMTJdID0gUy0+dFswXSBeIGJsYWtlMmJfSVZbNF07CisgIHZbMTNdID0gUy0+dFsxXSBeIGJsYWtlMmJfSVZbNV07CisgIHZbMTRdID0gUy0+ZlswXSBeIGJsYWtlMmJfSVZbNl07CisgIHZbMTVdID0gUy0+ZlsxXSBeIGJsYWtlMmJfSVZbN107CisjZGVmaW5lIEcocixpLGEsYixjLGQpIFwKKyAgZG8geyBcCisgICAgYSA9IGEgKyBiICsgbVtibGFrZTJiX3NpZ21hW3JdWzIqaSswXV07IFwKKyAgICBkID0gcm90cjY0KGQgXiBhLCAzMik7IFwKKyAgICBjID0gYyArIGQ7IFwKKyAgICBiID0gcm90cjY0KGIgXiBjLCAyNCk7IFwKKyAgICBhID0gYSArIGIgKyBtW2JsYWtlMmJfc2lnbWFbcl1bMippKzFdXTsgXAorICAgIGQgPSByb3RyNjQoZCBeIGEsIDE2KTsgXAorICAgIGMgPSBjICsgZDsgXAorICAgIGIgPSByb3RyNjQoYiBeIGMsIDYzKTsgXAorICB9IHdoaWxlKDApCisjZGVmaW5lIFJPVU5EKHIpICBcCisgIGRvIHsgXAorICAgIEcociwwLHZbIDBdLHZbIDRdLHZbIDhdLHZbMTJdKTsgXAorICAgIEcociwxLHZbIDFdLHZbIDVdLHZbIDldLHZbMTNdKTsgXAorICAgIEcociwyLHZbIDJdLHZbIDZdLHZbMTBdLHZbMTRdKTsgXAorICAgIEcociwzLHZbIDNdLHZbIDddLHZbMTFdLHZbMTVdKTsgXAorICAgIEcociw0LHZbIDBdLHZbIDVdLHZbMTBdLHZbMTVdKTsgXAorICAgIEcociw1LHZbIDFdLHZbIDZdLHZbMTFdLHZbMTJdKTsgXAorICAgIEcociw2LHZbIDJdLHZbIDddLHZbIDhdLHZbMTNdKTsgXAorICAgIEcociw3LHZbIDNdLHZbIDRdLHZbIDldLHZbMTRdKTsgXAorICB9IHdoaWxlKDApCisgIFJPVU5EKCAwICk7CisgIFJPVU5EKCAxICk7CisgIFJPVU5EKCAyICk7CisgIFJPVU5EKCAzICk7CisgIFJPVU5EKCA0ICk7CisgIFJPVU5EKCA1ICk7CisgIFJPVU5EKCA2ICk7CisgIFJPVU5EKCA3ICk7CisgIFJPVU5EKCA4ICk7CisgIFJPVU5EKCA5ICk7CisgIFJPVU5EKCAxMCApOworICBST1VORCggMTEgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICBTLT5oW2ldID0gUy0+aFtpXSBeIHZbaV0gXiB2W2kgKyA4XTsKKworI3VuZGVmIEcKKyN1bmRlZiBST1VORAorICByZXR1cm4gMDsKK30KKworLyogaW5sZW4gbm93IGluIGJ5dGVzICovCitpbnQgYmxha2UyYl91cGRhdGUoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApCit7CisgIHdoaWxlKCBpbmxlbiA+IDAgKQorICB7CisgICAgc2l6ZV90IGxlZnQgPSBTLT5idWZsZW47CisgICAgc2l6ZV90IGZpbGwgPSAyICogQkxBS0UyQl9CTE9DS0JZVEVTIC0gbGVmdDsKKworICAgIGlmKCBpbmxlbiA+IGZpbGwgKQorICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGZpbGwgKTsgLyogRmlsbCBidWZmZXIgKi8KKyAgICAgIFMtPmJ1ZmxlbiArPSBmaWxsOworICAgICAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsgLyogQ29tcHJlc3MgKi8KKyAgICAgIG1lbWNweSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJCX0JMT0NLQllURVMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOyAvKiBTaGlmdCBidWZmZXIgbGVmdCAqLworICAgICAgUy0+YnVmbGVuIC09IEJMQUtFMkJfQkxPQ0tCWVRFUzsKKyAgICAgIGluICs9IGZpbGw7CisgICAgICBpbmxlbiAtPSBmaWxsOworICAgIH0KKyAgICBlbHNlIC8qIGlubGVuIDw9IGZpbGwgKi8KKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCAoc2l6ZV90KWlubGVuICk7CisgICAgICBTLT5idWZsZW4gKz0gKHNpemVfdClpbmxlbjsgLyogQmUgbGF6eSwgZG8gbm90IGNvbXByZXNzICovCisgICAgICBpbiArPSBpbmxlbjsKKyAgICAgIGlubGVuIC09IGlubGVuOworICAgIH0KKyAgfQorCisgIHJldHVybiAwOworfQorCisvKiBJcyB0aGlzIGNvcnJlY3Q/ICovCitpbnQgYmxha2UyYl9maW5hbCggYmxha2UyYl9zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApCit7CisgIHVpbnQ4X3QgYnVmZmVyW0JMQUtFMkJfT1VUQllURVNdID0gezB9OworICBpbnQgaTsKKworICBpZiggb3V0ID09IE5VTEwgfHwgb3V0bGVuID09IDAgfHwgb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJiX2lzX2xhc3RibG9jayggUyApICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIFMtPmJ1ZmxlbiA+IEJMQUtFMkJfQkxPQ0tCWVRFUyApCisgIHsKKyAgICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKyAgICBTLT5idWZsZW4gLT0gQkxBS0UyQl9CTE9DS0JZVEVTOworICAgIG1lbW1vdmUoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyQl9CTE9DS0JZVEVTLCBTLT5idWZsZW4gKTsKKyAgfQorCisgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIFMtPmJ1ZmxlbiApOworICBibGFrZTJiX3NldF9sYXN0YmxvY2soIFMgKTsKKyAgbWVtc2V0KCBTLT5idWYgKyBTLT5idWZsZW4sIDAsIDIgKiBCTEFLRTJCX0JMT0NLQllURVMgLSBTLT5idWZsZW4gKTsgLyogUGFkZGluZyAqLworICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgLyogT3V0cHV0IGZ1bGwgaGFzaCB0byB0ZW1wIGJ1ZmZlciAqLworICAgIHN0b3JlNjQoIGJ1ZmZlciArIHNpemVvZiggUy0+aFtpXSApICogaSwgUy0+aFtpXSApOworCisgIG1lbWNweSggb3V0LCBidWZmZXIsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworLyogaW5sZW4sIGF0IGxlYXN0LCBzaG91bGQgYmUgdWludDY0X3QuIE90aGVycyBjYW4gYmUgc2l6ZV90LiAqLworaW50IGJsYWtlMmIoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMmJfc3RhdGUgU1sxXTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYoIE5VTEwgPT0ga2V5ICYmIGtleWxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyQl9LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gMCApCisgIHsKKyAgICBpZiggYmxha2UyYl9pbml0X2tleSggUywgb3V0bGVuLCBrZXksIGtleWxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiggYmxha2UyYl9pbml0KCBTLCBvdXRsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKworICBibGFrZTJiX3VwZGF0ZSggUywgKCBjb25zdCB1aW50OF90ICogKWluLCBpbmxlbiApOworICBibGFrZTJiX2ZpbmFsKCBTLCBvdXQsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoU1VQRVJDT1ApCitpbnQgY3J5cHRvX2hhc2goIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmxlbiApCit7CisgIHJldHVybiBibGFrZTJiKCBvdXQsIGluLCBOVUxMLCBCTEFLRTJCX09VVEJZVEVTLCBpbmxlbiwgMCApOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEJMQUtFMkJfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIGludCBhcmdjLCBjaGFyICoqYXJndiApCit7CisgIHVpbnQ4X3Qga2V5W0JMQUtFMkJfS0VZQllURVNdOworICB1aW50OF90IGJ1ZltLQVRfTEVOR1RIXTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMkJfS0VZQllURVM7ICsraSApCisgICAga2V5W2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgeworICAgIHVpbnQ4X3QgaGFzaFtCTEFLRTJCX09VVEJZVEVTXTsKKyAgICBibGFrZTJiKCBoYXNoLCBidWYsIGtleSwgQkxBS0UyQl9PVVRCWVRFUywgaSwgQkxBS0UyQl9LRVlCWVRFUyApOworCisgICAgaWYoIDAgIT0gbWVtY21wKCBoYXNoLCBibGFrZTJiX2tleWVkX2thdFtpXSwgQkxBS0UyQl9PVVRCWVRFUyApICkKKyAgICB7CisgICAgICBwdXRzKCAiZXJyb3IiICk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgcHV0cyggIm9rIiApOworICByZXR1cm4gMDsKK30KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLXJvdW5kLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLXJvdW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlMjI1NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcm91bmQuaApAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyQl9ST1VORF9IX18KKyNkZWZpbmUgX19CTEFLRTJCX1JPVU5EX0hfXworCisjZGVmaW5lIExPQURVKHApICBfbW1fbG9hZHVfc2kxMjgoIChjb25zdCBfX20xMjhpICopKHApICkKKyNkZWZpbmUgU1RPUkVVKHAscikgX21tX3N0b3JldV9zaTEyOCgoX19tMTI4aSAqKShwKSwgcikKKworI2RlZmluZSBUT0YocmVnKSBfbW1fY2FzdHNpMTI4X3BzKChyZWcpKQorI2RlZmluZSBUT0kocmVnKSBfbW1fY2FzdHBzX3NpMTI4KChyZWcpKQorCisjZGVmaW5lIExJS0VMWSh4KSBfX2J1aWx0aW5fZXhwZWN0KCh4KSwxKQorCisKKy8qIE1pY3JvYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1hY3JvcyAqLworI2lmbmRlZiBIQVZFX1hPUAorI2lmZGVmIEhBVkVfU1NTRTMKKyNkZWZpbmUgX21tX3JvdGlfZXBpNjQoeCwgYykgXAorICAgICgtKGMpID09IDMyKSA/IF9tbV9zaHVmZmxlX2VwaTMyKCh4KSwgX01NX1NIVUZGTEUoMiwzLDAsMSkpICBcCisgICAgOiAoLShjKSA9PSAyNCkgPyBfbW1fc2h1ZmZsZV9lcGk4KCh4KSwgcjI0KSBcCisgICAgOiAoLShjKSA9PSAxNikgPyBfbW1fc2h1ZmZsZV9lcGk4KCh4KSwgcjE2KSBcCisgICAgOiAoLShjKSA9PSA2MykgPyBfbW1feG9yX3NpMTI4KF9tbV9zcmxpX2VwaTY0KCh4KSwgLShjKSksIF9tbV9hZGRfZXBpNjQoKHgpLCAoeCkpKSAgXAorICAgIDogX21tX3hvcl9zaTEyOChfbW1fc3JsaV9lcGk2NCgoeCksIC0oYykpLCBfbW1fc2xsaV9lcGk2NCgoeCksIDY0LSgtKGMpKSkpCisjZWxzZQorI2RlZmluZSBfbW1fcm90aV9lcGk2NChyLCBjKSBfbW1feG9yX3NpMTI4KF9tbV9zcmxpX2VwaTY0KCAociksIC0oYykgKSxfbW1fc2xsaV9lcGk2NCggKHIpLCA2NC0oLShjKSkgKSkKKyNlbmRpZgorI2Vsc2UKKy8qIC4uLiAqLworI2VuZGlmCisKKworCisjZGVmaW5lIEcxKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoLGIwLGIxKSBcCisgIHJvdzFsID0gX21tX2FkZF9lcGk2NChfbW1fYWRkX2VwaTY0KHJvdzFsLCBiMCksIHJvdzJsKTsgXAorICByb3cxaCA9IF9tbV9hZGRfZXBpNjQoX21tX2FkZF9lcGk2NChyb3cxaCwgYjEpLCByb3cyaCk7IFwKKyAgXAorICByb3c0bCA9IF9tbV94b3Jfc2kxMjgocm93NGwsIHJvdzFsKTsgXAorICByb3c0aCA9IF9tbV94b3Jfc2kxMjgocm93NGgsIHJvdzFoKTsgXAorICBcCisgIHJvdzRsID0gX21tX3JvdGlfZXBpNjQocm93NGwsIC0zMik7IFwKKyAgcm93NGggPSBfbW1fcm90aV9lcGk2NChyb3c0aCwgLTMyKTsgXAorICBcCisgIHJvdzNsID0gX21tX2FkZF9lcGk2NChyb3czbCwgcm93NGwpOyBcCisgIHJvdzNoID0gX21tX2FkZF9lcGk2NChyb3czaCwgcm93NGgpOyBcCisgIFwKKyAgcm93MmwgPSBfbW1feG9yX3NpMTI4KHJvdzJsLCByb3czbCk7IFwKKyAgcm93MmggPSBfbW1feG9yX3NpMTI4KHJvdzJoLCByb3czaCk7IFwKKyAgXAorICByb3cybCA9IF9tbV9yb3RpX2VwaTY0KHJvdzJsLCAtMjQpOyBcCisgIHJvdzJoID0gX21tX3JvdGlfZXBpNjQocm93MmgsIC0yNCk7IFwKKyAKKyNkZWZpbmUgRzIocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpIFwKKyAgcm93MWwgPSBfbW1fYWRkX2VwaTY0KF9tbV9hZGRfZXBpNjQocm93MWwsIGIwKSwgcm93MmwpOyBcCisgIHJvdzFoID0gX21tX2FkZF9lcGk2NChfbW1fYWRkX2VwaTY0KHJvdzFoLCBiMSksIHJvdzJoKTsgXAorICBcCisgIHJvdzRsID0gX21tX3hvcl9zaTEyOChyb3c0bCwgcm93MWwpOyBcCisgIHJvdzRoID0gX21tX3hvcl9zaTEyOChyb3c0aCwgcm93MWgpOyBcCisgIFwKKyAgcm93NGwgPSBfbW1fcm90aV9lcGk2NChyb3c0bCwgLTE2KTsgXAorICByb3c0aCA9IF9tbV9yb3RpX2VwaTY0KHJvdzRoLCAtMTYpOyBcCisgIFwKKyAgcm93M2wgPSBfbW1fYWRkX2VwaTY0KHJvdzNsLCByb3c0bCk7IFwKKyAgcm93M2ggPSBfbW1fYWRkX2VwaTY0KHJvdzNoLCByb3c0aCk7IFwKKyAgXAorICByb3cybCA9IF9tbV94b3Jfc2kxMjgocm93MmwsIHJvdzNsKTsgXAorICByb3cyaCA9IF9tbV94b3Jfc2kxMjgocm93MmgsIHJvdzNoKTsgXAorICBcCisgIHJvdzJsID0gX21tX3JvdGlfZXBpNjQocm93MmwsIC02Myk7IFwKKyAgcm93MmggPSBfbW1fcm90aV9lcGk2NChyb3cyaCwgLTYzKTsgXAorIAorI2lmIGRlZmluZWQoSEFWRV9TU1NFMykKKyNkZWZpbmUgRElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpIFwKKyAgdDAgPSBfbW1fYWxpZ25yX2VwaTgocm93MmgsIHJvdzJsLCA4KTsgXAorICB0MSA9IF9tbV9hbGlnbnJfZXBpOChyb3cybCwgcm93MmgsIDgpOyBcCisgIHJvdzJsID0gdDA7IFwKKyAgcm93MmggPSB0MTsgXAorICBcCisgIHQwID0gcm93M2w7IFwKKyAgcm93M2wgPSByb3czaDsgXAorICByb3czaCA9IHQwOyAgICBcCisgIFwKKyAgdDAgPSBfbW1fYWxpZ25yX2VwaTgocm93NGgsIHJvdzRsLCA4KTsgXAorICB0MSA9IF9tbV9hbGlnbnJfZXBpOChyb3c0bCwgcm93NGgsIDgpOyBcCisgIHJvdzRsID0gdDE7IFwKKyAgcm93NGggPSB0MDsKKworI2RlZmluZSBVTkRJQUdPTkFMSVpFKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoKSBcCisgIHQwID0gX21tX2FsaWducl9lcGk4KHJvdzJsLCByb3cyaCwgOCk7IFwKKyAgdDEgPSBfbW1fYWxpZ25yX2VwaTgocm93MmgsIHJvdzJsLCA4KTsgXAorICByb3cybCA9IHQwOyBcCisgIHJvdzJoID0gdDE7IFwKKyAgXAorICB0MCA9IHJvdzNsOyBcCisgIHJvdzNsID0gcm93M2g7IFwKKyAgcm93M2ggPSB0MDsgXAorICBcCisgIHQwID0gX21tX2FsaWducl9lcGk4KHJvdzRsLCByb3c0aCwgOCk7IFwKKyAgdDEgPSBfbW1fYWxpZ25yX2VwaTgocm93NGgsIHJvdzRsLCA4KTsgXAorICByb3c0bCA9IHQxOyBcCisgIHJvdzRoID0gdDA7CisjZWxzZQorCisjZGVmaW5lIERJQUdPTkFMSVpFKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoKSBcCisgIHQwID0gcm93NGw7XAorICB0MSA9IHJvdzJsO1wKKyAgcm93NGwgPSByb3czbDtcCisgIHJvdzNsID0gcm93M2g7XAorICByb3czaCA9IHJvdzRsO1wKKyAgcm93NGwgPSBfbW1fdW5wYWNraGlfZXBpNjQocm93NGgsIF9tbV91bnBhY2tsb19lcGk2NCh0MCwgdDApKTsgXAorICByb3c0aCA9IF9tbV91bnBhY2toaV9lcGk2NCh0MCwgX21tX3VucGFja2xvX2VwaTY0KHJvdzRoLCByb3c0aCkpOyBcCisgIHJvdzJsID0gX21tX3VucGFja2hpX2VwaTY0KHJvdzJsLCBfbW1fdW5wYWNrbG9fZXBpNjQocm93MmgsIHJvdzJoKSk7IFwKKyAgcm93MmggPSBfbW1fdW5wYWNraGlfZXBpNjQocm93MmgsIF9tbV91bnBhY2tsb19lcGk2NCh0MSwgdDEpKQorCisjZGVmaW5lIFVORElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpIFwKKyAgdDAgPSByb3czbDtcCisgIHJvdzNsID0gcm93M2g7XAorICByb3czaCA9IHQwO1wKKyAgdDAgPSByb3cybDtcCisgIHQxID0gcm93NGw7XAorICByb3cybCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3cyaCwgX21tX3VucGFja2xvX2VwaTY0KHJvdzJsLCByb3cybCkpOyBcCisgIHJvdzJoID0gX21tX3VucGFja2hpX2VwaTY0KHQwLCBfbW1fdW5wYWNrbG9fZXBpNjQocm93MmgsIHJvdzJoKSk7IFwKKyAgcm93NGwgPSBfbW1fdW5wYWNraGlfZXBpNjQocm93NGwsIF9tbV91bnBhY2tsb19lcGk2NChyb3c0aCwgcm93NGgpKTsgXAorICByb3c0aCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3c0aCwgX21tX3VucGFja2xvX2VwaTY0KHQxLCB0MSkpCisKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NTRTQxKQorI2luY2x1ZGUgImJsYWtlMmItbG9hZC1zc2U0MS5oIgorI2Vsc2UKKyNpbmNsdWRlICJibGFrZTJiLWxvYWQtc3NlMi5oIgorI2VuZGlmCisKKyNkZWZpbmUgUk9VTkQocikgXAorICBMT0FEX01TR18gIyNyICMjXzEoYjAsIGIxKTsgXAorICBHMShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSk7IFwKKyAgTE9BRF9NU0dfICMjciAjI18yKGIwLCBiMSk7IFwKKyAgRzIocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpOyBcCisgIERJQUdPTkFMSVpFKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoKTsgXAorICBMT0FEX01TR18gIyNyICMjXzMoYjAsIGIxKTsgXAorICBHMShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSk7IFwKKyAgTE9BRF9NU0dfICMjciAjI180KGIwLCBiMSk7IFwKKyAgRzIocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpOyBcCisgIFVORElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi5jIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYjY1YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLmMKQEAgLTAsMCArMSw0NTMgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJibGFrZTIuaCIKKyNpbmNsdWRlICJibGFrZTItaW1wbC5oIgorCisjaW5jbHVkZSAiYmxha2UyLWNvbmZpZy5oIgorCisjaWZkZWYgX01TQ19WRVIKKyNpbmNsdWRlIDxpbnRyaW4uaD4gLyogZm9yIF9tbV9zZXRfZXBpNjR4ICovCisjZW5kaWYKKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNpZiBkZWZpbmVkKEhBVkVfU1NTRTMpCisjaW5jbHVkZSA8dG1taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisjaW5jbHVkZSA8c21taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfQVZYKQorI2luY2x1ZGUgPGltbWludHJpbi5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1hPUCkKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiYmxha2UyYi1yb3VuZC5oIgorCitzdGF0aWMgY29uc3QgdWludDY0X3QgYmxha2UyYl9JVls4XSA9Cit7CisgIDB4NmEwOWU2NjdmM2JjYzkwOFVMTCwgMHhiYjY3YWU4NTg0Y2FhNzNiVUxMLAorICAweDNjNmVmMzcyZmU5NGY4MmJVTEwsIDB4YTU0ZmY1M2E1ZjFkMzZmMVVMTCwKKyAgMHg1MTBlNTI3ZmFkZTY4MmQxVUxMLCAweDliMDU2ODhjMmIzZTZjMWZVTEwsCisgIDB4MWY4M2Q5YWJmYjQxYmQ2YlVMTCwgMHg1YmUwY2QxOTEzN2UyMTc5VUxMCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBibGFrZTJiX3NpZ21hWzEyXVsxNl0gPQoreworICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0gLAorICB7IDExLCAgOCwgMTIsICAwLCAgNSwgIDIsIDE1LCAxMywgMTAsIDE0LCAgMywgIDYsICA3LCAgMSwgIDksICA0IH0gLAorICB7ICA3LCAgOSwgIDMsICAxLCAxMywgMTIsIDExLCAxNCwgIDIsICA2LCAgNSwgMTAsICA0LCAgMCwgMTUsICA4IH0gLAorICB7ICA5LCAgMCwgIDUsICA3LCAgMiwgIDQsIDEwLCAxNSwgMTQsICAxLCAxMSwgMTIsICA2LCAgOCwgIDMsIDEzIH0gLAorICB7ICAyLCAxMiwgIDYsIDEwLCAgMCwgMTEsICA4LCAgMywgIDQsIDEzLCAgNywgIDUsIDE1LCAxNCwgIDEsICA5IH0gLAorICB7IDEyLCAgNSwgIDEsIDE1LCAxNCwgMTMsICA0LCAxMCwgIDAsICA3LCAgNiwgIDMsICA5LCAgMiwgIDgsIDExIH0gLAorICB7IDEzLCAxMSwgIDcsIDE0LCAxMiwgIDEsICAzLCAgOSwgIDUsICAwLCAxNSwgIDQsICA4LCAgNiwgIDIsIDEwIH0gLAorICB7ICA2LCAxNSwgMTQsICA5LCAxMSwgIDMsICAwLCAgOCwgMTIsICAyLCAxMywgIDcsICAxLCAgNCwgMTAsICA1IH0gLAorICB7IDEwLCAgMiwgIDgsICA0LCAgNywgIDYsICAxLCAgNSwgMTUsIDExLCAgOSwgMTQsICAzLCAxMiwgMTMgLCAwIH0gLAorICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0KK307CisKKworLyogU29tZSBoZWxwZXIgZnVuY3Rpb25zLCBub3QgbmVjZXNzYXJpbHkgdXNlZnVsICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9zZXRfbGFzdG5vZGUoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9jbGVhcl9sYXN0bm9kZSggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAwOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaXNfbGFzdGJsb2NrKCBjb25zdCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgcmV0dXJuIFMtPmZbMF0gIT0gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfc2V0X2xhc3RibG9jayggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJiX3NldF9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2NsZWFyX2xhc3RibG9jayggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJiX2NsZWFyX2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IDA7CisgIHJldHVybiAwOworfQorCisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50NjRfdCBpbmMgKQoreworI2lmIF9feDg2XzY0X18KKyAgLyogQUREL0FEQyBjaGFpbiAqLworICBfX3VpbnQxMjhfdCB0ID0gKCAoIF9fdWludDEyOF90IClTLT50WzFdIDw8IDY0ICkgfCBTLT50WzBdOworICB0ICs9IGluYzsKKyAgUy0+dFswXSA9ICggdWludDY0X3QgKSggdCA+PiAgMCApOworICBTLT50WzFdID0gKCB1aW50NjRfdCApKCB0ID4+IDY0ICk7CisjZWxzZQorICBTLT50WzBdICs9IGluYzsKKyAgUy0+dFsxXSArPSAoIFMtPnRbMF0gPCBpbmMgKTsKKyNlbmRpZgorICByZXR1cm4gMDsKK30KKworCisvKiBQYXJhbWV0ZXItcmVsYXRlZCBmdW5jdGlvbnMgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9kaWdlc3RfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRpZ2VzdF9sZW5ndGggKQoreworICBQLT5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9mYW5vdXQoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZmFub3V0ICkKK3sKKyAgUC0+ZmFub3V0ID0gZmFub3V0OworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X21heF9kZXB0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkZXB0aCApCit7CisgIFAtPmRlcHRoID0gZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbGVhZl9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQzMl90IGxlYWZfbGVuZ3RoICkKK3sKKyAgUC0+bGVhZl9sZW5ndGggPSBsZWFmX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9ub2RlX29mZnNldCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDY0X3Qgbm9kZV9vZmZzZXQgKQoreworICBQLT5ub2RlX29mZnNldCA9IG5vZGVfb2Zmc2V0OworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X25vZGVfZGVwdGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgbm9kZV9kZXB0aCApCit7CisgIFAtPm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2lubmVyX2xlbmd0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBpbm5lcl9sZW5ndGggKQoreworICBQLT5pbm5lcl9sZW5ndGggPSBpbm5lcl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfc2FsdCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBzYWx0W0JMQUtFMkJfU0FMVEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+c2FsdCwgc2FsdCwgQkxBS0UyQl9TQUxUQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9wZXJzb25hbCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBwZXJzb25hbFtCTEFLRTJCX1BFUlNPTkFMQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5wZXJzb25hbCwgcGVyc29uYWwsIEJMQUtFMkJfUEVSU09OQUxCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaW5pdDAoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBpbnQgaTsKKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMmJfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSBTLT5oW2ldID0gYmxha2UyYl9JVltpXTsKKworICByZXR1cm4gMDsKK30KKworLyogaW5pdCB4b3JzIElWIHdpdGggaW5wdXQgcGFyYW1ldGVyIGJsb2NrICovCitpbnQgYmxha2UyYl9pbml0X3BhcmFtKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCBibGFrZTJiX3BhcmFtICpQICkKK3sKKyAgLypibGFrZTJiX2luaXQwKCBTICk7ICovCisgIGNvbnN0IHVpbnQ4X3QgKiB2ID0gKCBjb25zdCB1aW50OF90ICogKSggYmxha2UyYl9JViApOworICBjb25zdCB1aW50OF90ICogcCA9ICggY29uc3QgdWludDhfdCAqICkoIFAgKTsKKyAgdWludDhfdCAqIGggPSAoIHVpbnQ4X3QgKiApKCBTLT5oICk7CisgIGludCBpOworICAvKiBJViBYT1IgUGFyYW1CbG9jayAqLworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2UyYl9zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMkJfT1VUQllURVM7ICsraSApIGhbaV0gPSB2W2ldIF4gcFtpXTsKKworICByZXR1cm4gMDsKK30KKworCisvKiBTb21lIHNvcnQgb2YgZGVmYXVsdCBwYXJhbWV0ZXIgYmxvY2sgaW5pdGlhbGl6YXRpb24sIGZvciBzZXF1ZW50aWFsIGJsYWtlMmIgKi8KK2ludCBibGFrZTJiX2luaXQoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgY29uc3QgYmxha2UyYl9wYXJhbSBQID0KKyAgeworICAgIG91dGxlbiwKKyAgICAwLAorICAgIDEsCisgICAgMSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIHswfSwKKyAgICB7MH0sCisgICAgezB9CisgIH07CisKKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICByZXR1cm4gYmxha2UyYl9pbml0X3BhcmFtKCBTLCAmUCApOworfQorCitpbnQgYmxha2UyYl9pbml0X2tleSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKQoreworICBjb25zdCBibGFrZTJiX3BhcmFtIFAgPQorICB7CisgICAgb3V0bGVuLAorICAgIGtleWxlbiwKKyAgICAxLAorICAgIDEsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICB7MH0sCisgICAgezB9LAorICAgIHswfQorICB9OworCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgaWYgKCAoICFrZXlsZW4gKSB8fCBrZXlsZW4gPiBCTEFLRTJCX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJiX2luaXRfcGFyYW0oIFMsICZQICkgPCAwICkKKyAgICByZXR1cm4gMDsKKworICB7CisgICAgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdOworICAgIG1lbXNldCggYmxvY2ssIDAsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIG1lbWNweSggYmxvY2ssIGtleSwga2V5bGVuICk7CisgICAgYmxha2UyYl91cGRhdGUoIFMsIGJsb2NrLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoIGJsb2NrLCBCTEFLRTJCX0JMT0NLQllURVMgKTsgLyogQnVybiB0aGUga2V5IGZyb20gc3RhY2sgKi8KKyAgfQorICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfY29tcHJlc3MoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgYmxvY2tbQkxBS0UyQl9CTE9DS0JZVEVTXSApCit7CisgIF9fbTEyOGkgcm93MWwsIHJvdzFoOworICBfX20xMjhpIHJvdzJsLCByb3cyaDsKKyAgX19tMTI4aSByb3czbCwgcm93M2g7CisgIF9fbTEyOGkgcm93NGwsIHJvdzRoOworICBfX20xMjhpIGIwLCBiMTsKKyAgX19tMTI4aSB0MCwgdDE7CisjaWYgZGVmaW5lZChIQVZFX1NTU0UzKSAmJiAhZGVmaW5lZChIQVZFX1hPUCkKKyAgY29uc3QgX19tMTI4aSByMTYgPSBfbW1fc2V0cl9lcGk4KCAyLCAzLCA0LCA1LCA2LCA3LCAwLCAxLCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA4LCA5ICk7CisgIGNvbnN0IF9fbTEyOGkgcjI0ID0gX21tX3NldHJfZXBpOCggMywgNCwgNSwgNiwgNywgMCwgMSwgMiwgMTEsIDEyLCAxMywgMTQsIDE1LCA4LCA5LCAxMCApOworI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1NTRTQxKQorICBjb25zdCBfX20xMjhpIG0wID0gTE9BRFUoIGJsb2NrICsgMDAgKTsKKyAgY29uc3QgX19tMTI4aSBtMSA9IExPQURVKCBibG9jayArIDE2ICk7CisgIGNvbnN0IF9fbTEyOGkgbTIgPSBMT0FEVSggYmxvY2sgKyAzMiApOworICBjb25zdCBfX20xMjhpIG0zID0gTE9BRFUoIGJsb2NrICsgNDggKTsKKyAgY29uc3QgX19tMTI4aSBtNCA9IExPQURVKCBibG9jayArIDY0ICk7CisgIGNvbnN0IF9fbTEyOGkgbTUgPSBMT0FEVSggYmxvY2sgKyA4MCApOworICBjb25zdCBfX20xMjhpIG02ID0gTE9BRFUoIGJsb2NrICsgOTYgKTsKKyAgY29uc3QgX19tMTI4aSBtNyA9IExPQURVKCBibG9jayArIDExMiApOworI2Vsc2UKKyAgY29uc3QgdWludDY0X3QgIG0wID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDBdOworICBjb25zdCB1aW50NjRfdCAgbTEgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgMV07CisgIGNvbnN0IHVpbnQ2NF90ICBtMiA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyAyXTsKKyAgY29uc3QgdWludDY0X3QgIG0zID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDNdOworICBjb25zdCB1aW50NjRfdCAgbTQgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgNF07CisgIGNvbnN0IHVpbnQ2NF90ICBtNSA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA1XTsKKyAgY29uc3QgdWludDY0X3QgIG02ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDZdOworICBjb25zdCB1aW50NjRfdCAgbTcgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgN107CisgIGNvbnN0IHVpbnQ2NF90ICBtOCA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA4XTsKKyAgY29uc3QgdWludDY0X3QgIG05ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDldOworICBjb25zdCB1aW50NjRfdCBtMTAgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxMF07CisgIGNvbnN0IHVpbnQ2NF90IG0xMSA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzExXTsKKyAgY29uc3QgdWludDY0X3QgbTEyID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTJdOworICBjb25zdCB1aW50NjRfdCBtMTMgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxM107CisgIGNvbnN0IHVpbnQ2NF90IG0xNCA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzE0XTsKKyAgY29uc3QgdWludDY0X3QgbTE1ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTVdOworI2VuZGlmCisgIHJvdzFsID0gTE9BRFUoICZTLT5oWzBdICk7CisgIHJvdzFoID0gTE9BRFUoICZTLT5oWzJdICk7CisgIHJvdzJsID0gTE9BRFUoICZTLT5oWzRdICk7CisgIHJvdzJoID0gTE9BRFUoICZTLT5oWzZdICk7CisgIHJvdzNsID0gTE9BRFUoICZibGFrZTJiX0lWWzBdICk7CisgIHJvdzNoID0gTE9BRFUoICZibGFrZTJiX0lWWzJdICk7CisgIHJvdzRsID0gX21tX3hvcl9zaTEyOCggTE9BRFUoICZibGFrZTJiX0lWWzRdICksIExPQURVKCAmUy0+dFswXSApICk7CisgIHJvdzRoID0gX21tX3hvcl9zaTEyOCggTE9BRFUoICZibGFrZTJiX0lWWzZdICksIExPQURVKCAmUy0+ZlswXSApICk7CisgIFJPVU5EKCAwICk7CisgIFJPVU5EKCAxICk7CisgIFJPVU5EKCAyICk7CisgIFJPVU5EKCAzICk7CisgIFJPVU5EKCA0ICk7CisgIFJPVU5EKCA1ICk7CisgIFJPVU5EKCA2ICk7CisgIFJPVU5EKCA3ICk7CisgIFJPVU5EKCA4ICk7CisgIFJPVU5EKCA5ICk7CisgIFJPVU5EKCAxMCApOworICBST1VORCggMTEgKTsKKyAgcm93MWwgPSBfbW1feG9yX3NpMTI4KCByb3czbCwgcm93MWwgKTsKKyAgcm93MWggPSBfbW1feG9yX3NpMTI4KCByb3czaCwgcm93MWggKTsKKyAgU1RPUkVVKCAmUy0+aFswXSwgX21tX3hvcl9zaTEyOCggTE9BRFUoICZTLT5oWzBdICksIHJvdzFsICkgKTsKKyAgU1RPUkVVKCAmUy0+aFsyXSwgX21tX3hvcl9zaTEyOCggTE9BRFUoICZTLT5oWzJdICksIHJvdzFoICkgKTsKKyAgcm93MmwgPSBfbW1feG9yX3NpMTI4KCByb3c0bCwgcm93MmwgKTsKKyAgcm93MmggPSBfbW1feG9yX3NpMTI4KCByb3c0aCwgcm93MmggKTsKKyAgU1RPUkVVKCAmUy0+aFs0XSwgX21tX3hvcl9zaTEyOCggTE9BRFUoICZTLT5oWzRdICksIHJvdzJsICkgKTsKKyAgU1RPUkVVKCAmUy0+aFs2XSwgX21tX3hvcl9zaTEyOCggTE9BRFUoICZTLT5oWzZdICksIHJvdzJoICkgKTsKKyAgcmV0dXJuIDA7Cit9CisKKworaW50IGJsYWtlMmJfdXBkYXRlKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKQoreworICB3aGlsZSggaW5sZW4gPiAwICkKKyAgeworICAgIHNpemVfdCBsZWZ0ID0gUy0+YnVmbGVuOworICAgIHNpemVfdCBmaWxsID0gMiAqIEJMQUtFMkJfQkxPQ0tCWVRFUyAtIGxlZnQ7CisKKyAgICBpZiggaW5sZW4gPiBmaWxsICkKKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBmaWxsICk7IC8qIEZpbGwgYnVmZmVyICovCisgICAgICBTLT5idWZsZW4gKz0gZmlsbDsKKyAgICAgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgICAgYmxha2UyYl9jb21wcmVzcyggUywgUy0+YnVmICk7IC8qIENvbXByZXNzICovCisgICAgICBtZW1jcHkoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyQl9CTE9DS0JZVEVTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsgLyogU2hpZnQgYnVmZmVyIGxlZnQgKi8KKyAgICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJCX0JMT0NLQllURVM7CisgICAgICBpbiArPSBmaWxsOworICAgICAgaW5sZW4gLT0gZmlsbDsKKyAgICB9CisgICAgZWxzZSAvKiBpbmxlbiA8PSBmaWxsICovCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgaW5sZW4gKTsKKyAgICAgIFMtPmJ1ZmxlbiArPSBpbmxlbjsgLyogQmUgbGF6eSwgZG8gbm90IGNvbXByZXNzICovCisgICAgICBpbiArPSBpbmxlbjsKKyAgICAgIGlubGVuIC09IGlubGVuOworICAgIH0KKyAgfQorCisgIHJldHVybiAwOworfQorCisKK2ludCBibGFrZTJiX2ZpbmFsKCBibGFrZTJiX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgaWYoIG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKQorICAgIHJldHVybiAtMTsKKworICBpZiggYmxha2UyYl9pc19sYXN0YmxvY2soIFMgKSApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBTLT5idWZsZW4gPiBCTEFLRTJCX0JMT0NLQllURVMgKQorICB7CisgICAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgYmxha2UyYl9jb21wcmVzcyggUywgUy0+YnVmICk7CisgICAgUy0+YnVmbGVuIC09IEJMQUtFMkJfQkxPQ0tCWVRFUzsKKyAgICBtZW1tb3ZlKCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMkJfQkxPQ0tCWVRFUywgUy0+YnVmbGVuICk7CisgIH0KKworICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBTLT5idWZsZW4gKTsKKyAgYmxha2UyYl9zZXRfbGFzdGJsb2NrKCBTICk7CisgIG1lbXNldCggUy0+YnVmICsgUy0+YnVmbGVuLCAwLCAyICogQkxBS0UyQl9CTE9DS0JZVEVTIC0gUy0+YnVmbGVuICk7IC8qIFBhZGRpbmcgKi8KKyAgYmxha2UyYl9jb21wcmVzcyggUywgUy0+YnVmICk7CisgIG1lbWNweSggb3V0LCAmUy0+aFswXSwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisKK2ludCBibGFrZTJiKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKQoreworICBibGFrZTJiX3N0YXRlIFNbMV07CisKKyAgLyogVmVyaWZ5IHBhcmFtZXRlcnMgKi8KKyAgaWYgKCBOVUxMID09IGluICYmIGlubGVuID4gMCApIHJldHVybiAtMTsKKworICBpZiAoIE5VTEwgPT0gb3V0ICkgcmV0dXJuIC0xOworCisgIGlmKCBOVUxMID09IGtleSAmJiBrZXlsZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmKCAhb3V0bGVuIHx8IG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiA+IEJMQUtFMkJfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiApCisgIHsKKyAgICBpZiggYmxha2UyYl9pbml0X2tleSggUywgb3V0bGVuLCBrZXksIGtleWxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiggYmxha2UyYl9pbml0KCBTLCBvdXRsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKworICBibGFrZTJiX3VwZGF0ZSggUywgKCBjb25zdCB1aW50OF90ICogKWluLCBpbmxlbiApOworICBibGFrZTJiX2ZpbmFsKCBTLCBvdXQsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoU1VQRVJDT1ApCitpbnQgY3J5cHRvX2hhc2goIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmxlbiApCit7CisgIHJldHVybiBibGFrZTJiKCBvdXQsIGluLCBOVUxMLCBCTEFLRTJCX09VVEJZVEVTLCBpbmxlbiwgMCApOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEJMQUtFMkJfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIGludCBhcmdjLCBjaGFyICoqYXJndiApCit7CisgIHVpbnQ4X3Qga2V5W0JMQUtFMkJfS0VZQllURVNdOworICB1aW50OF90IGJ1ZltLQVRfTEVOR1RIXTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMkJfS0VZQllURVM7ICsraSApCisgICAga2V5W2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgeworICAgIHVpbnQ4X3QgaGFzaFtCTEFLRTJCX09VVEJZVEVTXTsKKyAgICBibGFrZTJiKCBoYXNoLCBidWYsIGtleSwgQkxBS0UyQl9PVVRCWVRFUywgaSwgQkxBS0UyQl9LRVlCWVRFUyApOworCisgICAgaWYoIDAgIT0gbWVtY21wKCBoYXNoLCBibGFrZTJiX2tleWVkX2thdFtpXSwgQkxBS0UyQl9PVVRCWVRFUyApICkKKyAgICB7CisgICAgICBwdXRzKCAiZXJyb3IiICk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgcHV0cyggIm9rIiApOworICByZXR1cm4gMDsKK30KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlMi5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWRlZmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJTX0xPQURfU1NFMl9IX18KKyNkZWZpbmUgX19CTEFLRTJTX0xPQURfU1NFMl9IX18KKworI2RlZmluZSBMT0FEX01TR18wXzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG02LG00LG0yLG0wKQorI2RlZmluZSBMT0FEX01TR18wXzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG03LG01LG0zLG0xKQorI2RlZmluZSBMT0FEX01TR18wXzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNCxtMTIsbTEwLG04KQorI2RlZmluZSBMT0FEX01TR18wXzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNSxtMTMsbTExLG05KQorI2RlZmluZSBMT0FEX01TR18xXzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMyxtOSxtNCxtMTQpCisjZGVmaW5lIExPQURfTVNHXzFfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTYsbTE1LG04LG0xMCkKKyNkZWZpbmUgTE9BRF9NU0dfMV8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNSxtMTEsbTAsbTEpCisjZGVmaW5lIExPQURfTVNHXzFfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTMsbTcsbTIsbTEyKQorI2RlZmluZSBMT0FEX01TR18yXzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNSxtNSxtMTIsbTExKQorI2RlZmluZSBMT0FEX01TR18yXzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMyxtMixtMCxtOCkKKyNkZWZpbmUgTE9BRF9NU0dfMl8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOSxtNyxtMyxtMTApCisjZGVmaW5lIExPQURfTVNHXzJfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTQsbTEsbTYsbTE0KQorI2RlZmluZSBMT0FEX01TR18zXzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMSxtMTMsbTMsbTcpCisjZGVmaW5lIExPQURfTVNHXzNfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE0LG0xMixtMSxtOSkKKyNkZWZpbmUgTE9BRF9NU0dfM18zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTUsbTQsbTUsbTIpCisjZGVmaW5lIExPQURfTVNHXzNfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTgsbTAsbTEwLG02KQorI2RlZmluZSBMT0FEX01TR180XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMCxtMixtNSxtOSkKKyNkZWZpbmUgTE9BRF9NU0dfNF8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTUsbTQsbTcsbTApCisjZGVmaW5lIExPQURfTVNHXzRfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTMsbTYsbTExLG0xNCkKKyNkZWZpbmUgTE9BRF9NU0dfNF80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTMsbTgsbTEyLG0xKQorI2RlZmluZSBMT0FEX01TR181XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG04LG0wLG02LG0yKQorI2RlZmluZSBMT0FEX01TR181XzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0zLG0xMSxtMTAsbTEyKQorI2RlZmluZSBMT0FEX01TR181XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xLG0xNSxtNyxtNCkKKyNkZWZpbmUgTE9BRF9NU0dfNV80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOSxtMTQsbTUsbTEzKQorI2RlZmluZSBMT0FEX01TR182XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG00LG0xNCxtMSxtMTIpCisjZGVmaW5lIExPQURfTVNHXzZfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEwLG0xMyxtMTUsbTUpCisjZGVmaW5lIExPQURfTVNHXzZfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTgsbTksbTYsbTApCisjZGVmaW5lIExPQURfTVNHXzZfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTExLG0yLG0zLG03KQorI2RlZmluZSBMT0FEX01TR183XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0zLG0xMixtNyxtMTMpCisjZGVmaW5lIExPQURfTVNHXzdfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTksbTEsbTE0LG0xMSkKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMixtOCxtMTUsbTUpCisjZGVmaW5lIExPQURfTVNHXzdfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEwLG02LG00LG0wKQorI2RlZmluZSBMT0FEX01TR184XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0wLG0xMSxtMTQsbTYpCisjZGVmaW5lIExPQURfTVNHXzhfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTgsbTMsbTksbTE1KQorI2RlZmluZSBMT0FEX01TR184XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMCxtMSxtMTMsbTEyKQorI2RlZmluZSBMT0FEX01TR184XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG01LG00LG03LG0yKQorI2RlZmluZSBMT0FEX01TR185XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xLG03LG04LG0xMCkKKyNkZWZpbmUgTE9BRF9NU0dfOV8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNSxtNixtNCxtMikKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTMsbTMsbTksbTE1KQorI2RlZmluZSBMT0FEX01TR185XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0wLG0xMixtMTQsbTExKQorCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTQxLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlNDEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGJmMGNkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTQxLmgKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMlNfTE9BRF9TU0U0MV9IX18KKyNkZWZpbmUgX19CTEFLRTJTX0xPQURfU1NFNDFfSF9fCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8xKGJ1ZikgXAorYnVmID0gVE9JKF9tbV9zaHVmZmxlX3BzKFRPRihtMCksIFRPRihtMSksIF9NTV9TSFVGRkxFKDIsMCwyLDApKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF8yKGJ1ZikgXAorYnVmID0gVE9JKF9tbV9zaHVmZmxlX3BzKFRPRihtMCksIFRPRihtMSksIF9NTV9TSFVGRkxFKDMsMSwzLDEpKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF8zKGJ1ZikgXAorYnVmID0gVE9JKF9tbV9zaHVmZmxlX3BzKFRPRihtMiksIFRPRihtMyksIF9NTV9TSFVGRkxFKDIsMCwyLDApKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF80KGJ1ZikgXAorYnVmID0gVE9JKF9tbV9zaHVmZmxlX3BzKFRPRihtMiksIFRPRihtMyksIF9NTV9TSFVGRkxFKDMsMSwzLDEpKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8xKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTEsIG0yLCAweDBDKTsgXAordDEgPSBfbW1fc2xsaV9zaTEyOChtMywgNCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLCB0MSwgMHhGMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDEsMCwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8yKGJ1ZikgXAordDAgPSBfbW1fc2h1ZmZsZV9lcGkzMihtMixfTU1fU0hVRkZMRSgwLDAsMiwwKSk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0xLG0zLDB4QzApOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCwgdDEsIDB4RjApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwzLDAsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzFfMyhidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTEsIDQpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMiwgdDAsIDB4MzApOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNihtMCwgdDEsIDB4RjApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwzLDAsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzFfNChidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0xKTsgXAordDEgPSBfbW1fc2xsaV9zaTEyOChtMywgNCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLCB0MSwgMHgwQyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDMsMCwxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl8xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTIsbTMpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMyxtMSwweDBDKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsIHQxLCAweDBGKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDMsMSwwLDIpKTsKKworI2RlZmluZSBMT0FEX01TR18yXzIoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGkzMihtMixtMCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KHQwLCBtMCwgMHhGMCk7IFwKK3QyID0gX21tX3NsbGlfc2kxMjgobTMsIDgpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDEsIHQyLCAweEMwKTsKKworI2RlZmluZSBMT0FEX01TR18yXzMoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMCwgbTIsIDB4M0MpOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0xLCAxMik7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MDMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMSwwLDMsMikpOworCisjZGVmaW5lIExPQURfTVNHXzJfNChidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTMsIDQpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMCwgbTEsIDB4MzMpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MSwgdDAsIDB4QzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMCwxLDIsMykpOworCisjZGVmaW5lIExPQURfTVNHXzNfMShidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0xKTsgXAordDEgPSBfbW1fdW5wYWNraGlfZXBpMzIodDAsIG0yKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsIG0zLCAweDBDKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDMsMSwwLDIpKTsKKworI2RlZmluZSBMT0FEX01TR18zXzIoYnVmKSBcCit0MCA9IF9tbV9zbGxpX3NpMTI4KG0yLCA4KTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTMsbTAsMHgwQyk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLCB0MCwgMHhDMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDAsMSwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18zKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTAsbTEsMHgwRik7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KHQwLCBtMywgMHhDMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQxLCBfTU1fU0hVRkZMRSgzLDAsMSwyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM180KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTAsbTIpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGkzMihtMSxtMik7IFwKK2J1ZiA9IF9tbV91bnBhY2tsb19lcGk2NCh0MSx0MCk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsbTIpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGk2NChtMCxtMik7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MzMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwwLDEsMykpOworCisjZGVmaW5lIExPQURfTVNHXzRfMihidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTY0KG0xLG0zKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsbTEpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzMyk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8zKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsbTEpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGk2NChtMixtMCk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MSx0MCwweDMzKTsKKworI2RlZmluZSBMT0FEX01TR180XzQoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMCxtMiwweDAzKTsgXAordDEgPSBfbW1fc2xsaV9zaTEyOCh0MCwgOCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLG0zLDB4MEYpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMSwyLDAsMykpOworCisjZGVmaW5lIExPQURfTVNHXzVfMShidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0xKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTAsbTIpOyBcCitidWYgPSBfbW1fdW5wYWNrbG9fZXBpNjQodDAsdDEpOworCisjZGVmaW5lIExPQURfTVNHXzVfMihidWYpIFwKK3QwID0gX21tX3NybGlfc2kxMjgobTIsIDQpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMCxtMywweDAzKTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQxLHQwLDB4M0MpOworCisjZGVmaW5lIExPQURfTVNHXzVfMyhidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0xLG0wLDB4MEMpOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0zLCA0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgxLDIsMywwKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV80KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsbTIpOyBcCit0MT0gX21tX3NodWZmbGVfZXBpMzIobTMsIF9NTV9TSFVGRkxFKDAsMiwwLDEpKTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MzMpOworCisjZGVmaW5lIExPQURfTVNHXzZfMShidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTEsIDEyKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTAsbTMsMHgzMyk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MSx0MCwweEMwKTsKKworI2RlZmluZSBMT0FEX01TR182XzIoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMyxtMiwweDMwKTsgXAordDEgPSBfbW1fc3JsaV9zaTEyOChtMSwgNCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MDMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwxLDMsMCkpOworCisjZGVmaW5lIExPQURfTVNHXzZfMyhidWYpIFwKK3QwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLG0yKTsgXAordDEgPSBfbW1fc3JsaV9zaTEyOChtMSwgNCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDBDKSwgX01NX1NIVUZGTEUoMiwzLDEsMCkpOworCisjZGVmaW5lIExPQURfTVNHXzZfNChidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0xLG0yKTsgXAordDEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsdDApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MSwgX01NX1NIVUZGTEUoMywwLDEsMikpOworCisjZGVmaW5lIExPQURfTVNHXzdfMShidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0xKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYodDAsbTMsMHgwRik7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQxLF9NTV9TSFVGRkxFKDIsMCwzLDEpKTsKKworI2RlZmluZSBMT0FEX01TR183XzIoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMixtMywweDMwKTsgXAordDEgPSBfbW1fc3JsaV9zaTEyOChtMCw0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgwMyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgxLDAsMiwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsbTMpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGk2NChtMSxtMik7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4M0MpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MixfTU1fU0hVRkZMRSgwLDIsMywxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN180KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGkzMihtMSxtMik7IFwKK2J1ZiA9IF9tbV91bnBhY2tsb19lcGk2NCh0MCx0MSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF8xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTEsbTMpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGk2NCh0MCxtMCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLG0yLDB4QzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZWhpX2VwaTE2KHQyLF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsKKworI2RlZmluZSBMT0FEX01TR184XzIoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMCxtMyk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0yLHQwLDB4RjApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MSxfTU1fU0hVRkZMRSgwLDIsMSwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF8zKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTIsbTAsMHgwQyk7IFwKK3QxID0gX21tX3NsbGlfc2kxMjgodDAsNCk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MSxtMywweDBGKTsKKworI2RlZmluZSBMT0FEX01TR184XzQoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMSxtMCwweDMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDAsX01NX1NIVUZGTEUoMSwwLDMsMikpOworCisjZGVmaW5lIExPQURfTVNHXzlfMShidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0wLG0yLDB4MDMpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMSxtMiwweDMwKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsdDAsMHgwRik7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLF9NTV9TSFVGRkxFKDEsMywwLDIpKTsKKworI2RlZmluZSBMT0FEX01TR185XzIoYnVmKSBcCit0MCA9IF9tbV9zbGxpX3NpMTI4KG0wLDQpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMSx0MCwweEMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDEsX01NX1NIVUZGTEUoMSwyLDAsMykpOworCisjZGVmaW5lIExPQURfTVNHXzlfMyhidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0zKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTIsbTMpOyBcCit0MiA9IF9tbV91bnBhY2toaV9lcGk2NCh0MCx0MSk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLF9NTV9TSFVGRkxFKDMsMCwyLDEpKTsKKworI2RlZmluZSBMT0FEX01TR185XzQoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMyxtMiwweEMwKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTAsbTMpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDBGKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsX01NX1NIVUZGTEUoMCwxLDIsMykpOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXhvcC5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXhvcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYjVkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQteG9wLmgKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMlNfTE9BRF9YT1BfSF9fCisjZGVmaW5lIF9fQkxBS0UyU19MT0FEX1hPUF9IX18KKworI2RlZmluZSBUT0IoeCkgKCh4KSo0KjB4MDEwMTAxMDEgKyAweDAzMDIwMTAwKSAvKiAuLm9yIG5vdCBUT0IgKi8KKworLyogQmFzaWMgVlBQRVJNIGVtdWxhdGlvbiwgZm9yIHRlc3RpbmcgcHVycG9zZXMgKi8KKy8qc3RhdGljIF9fbTEyOGkgX21tX3Blcm1fZXBpOChjb25zdCBfX20xMjhpIHNyYzEsIGNvbnN0IF9fbTEyOGkgc3JjMiwgY29uc3QgX19tMTI4aSBzZWwpCit7CisgICBjb25zdCBfX20xMjhpIHNpeHRlZW4gPSBfbW1fc2V0MV9lcGk4KDE2KTsKKyAgIGNvbnN0IF9fbTEyOGkgdDAgPSBfbW1fc2h1ZmZsZV9lcGk4KHNyYzEsIHNlbCk7CisgICBjb25zdCBfX20xMjhpIHMxID0gX21tX3NodWZmbGVfZXBpOChzcmMyLCBfbW1fc3ViX2VwaTgoc2VsLCBzaXh0ZWVuKSk7CisgICBjb25zdCBfX20xMjhpIG1hc2sgPSBfbW1fb3Jfc2kxMjgoX21tX2NtcGVxX2VwaTgoc2VsLCBzaXh0ZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fY21wZ3RfZXBpOChzZWwsIHNpeHRlZW4pKTsgLyogKD49MTYpID0gMHhmZiA6IDAwICovCisgICByZXR1cm4gX21tX2JsZW5kdl9lcGk4KHQwLCBzMSwgbWFzayk7Cit9Ki8KKworI2RlZmluZSBMT0FEX01TR18wXzEoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDQpLFRPQigyKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF8yKGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQig1KSxUT0IoMyksVE9CKDEpKSApOworCisjZGVmaW5lIExPQURfTVNHXzBfMyhidWYpIFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgobTIsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoNCksVE9CKDIpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18wXzQoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0yLCBtMywgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDUpLFRPQigzKSxUT0IoMSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0xLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDUpLFRPQigwKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMiksVE9CKDEpLFRPQig2KSkgKTsKKworI2RlZmluZSBMT0FEX01TR18xXzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigyKSxUT0IoMCksVE9CKDQpLFRPQig2KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig3KSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzFfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigwKSxUT0IoMCksVE9CKDEpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigyKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDEpLFRPQig0KSkgKTsKKworI2RlZmluZSBMT0FEX01TR18yXzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMSksVE9CKDApLFRPQig3KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoNCksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzJfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigyKSxUT0IoMCksVE9CKDQpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDIpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDcpLFRPQigzKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMiksVE9CKDEpLFRPQig2KSkgKTsKKworI2RlZmluZSBMT0FEX01TR18yXzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoMSksVE9CKDYpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDYpKSApOworCisjZGVmaW5lIExPQURfTVNHXzNfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoMyksVE9CKDcpKSApOyBcCit0MCA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig1KSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzNfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoMSksVE9CKDUpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDQpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDQpLFRPQig1KSxUT0IoMikpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18zXzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDApLFRPQig2KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDQpLFRPQigyKSxUT0IoNiksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzRfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigyKSxUT0IoNSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDIpLFRPQigxKSxUT0IoNSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDQpLFRPQig3KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR180XzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNiksVE9CKDApLFRPQigwKSkgKTsgXAordDAgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig3KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDEpLFRPQig2KSkgKTsKKworI2RlZmluZSBMT0FEX01TR180XzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNCksVE9CKDApLFRPQigxKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigyKSxUT0IoNCksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzVfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoNiksVE9CKDIpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDIpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQig2KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDEpLFRPQig0KSkgKTsKKworI2RlZmluZSBMT0FEX01TR181XzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigxKSxUT0IoMCksVE9CKDcpLFRPQig0KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig3KSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzVfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigwKSxUT0IoMSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDYpLFRPQigxKSxUT0IoNSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDApLFRPQigxKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNiksVE9CKDEpLFRPQig0KSkgKTsKKworI2RlZmluZSBMT0FEX01TR182XzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoMCksVE9CKDApLFRPQigxKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig1KSxUT0IoNyksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzZfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoNiksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDUpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDIpLFRPQigzKSxUT0IoNykpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR183XzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMCksVE9CKDcpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig0KSxUT0IoMSksVE9CKDUpKSApOworCisjZGVmaW5lIExPQURfTVNHXzdfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigxKSxUT0IoMCksVE9CKDcpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig2KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMiksVE9CKDApLFRPQigwKSxUT0IoNSkpICk7IFwKK3QwID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig0KSxUT0IoMSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig3KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN180KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDYpLFRPQig0KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR184XzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDApLFRPQig2KSkgKTsgXAordDAgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigxKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDYpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR184XzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoMyksVE9CKDUpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDcpKSApOworCisjZGVmaW5lIExPQURfTVNHXzhfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQigxKSxUT0IoMCksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig1KSxUT0IoNCkpICk7IFwKKyAKKyNkZWZpbmUgTE9BRF9NU0dfOF80KGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQig0KSxUT0IoNyksVE9CKDIpKSApOworCisjZGVmaW5lIExPQURfTVNHXzlfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDEpLFRPQig3KSxUT0IoMCksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig0KSxUT0IoNikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8yKGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQig2KSxUT0IoNCksVE9CKDIpKSApOworCisjZGVmaW5lIExPQURfTVNHXzlfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigzKSxUT0IoNSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDIpLFRPQigxKSxUT0IoNykpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQigwKSxUT0IoNykpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNCksVE9CKDYpLFRPQigwKSkgKTsKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcmVmLmMgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJlZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MzY3NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJlZi5jCkBAIC0wLDAgKzEsNDExIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gcmVmZXJlbmNlIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiYmxha2UyLmgiCisjaW5jbHVkZSAiYmxha2UyLWltcGwuaCIKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IGJsYWtlMnNfSVZbOF0gPQoreworICAweDZBMDlFNjY3VUwsIDB4QkI2N0FFODVVTCwgMHgzQzZFRjM3MlVMLCAweEE1NEZGNTNBVUwsCisgIDB4NTEwRTUyN0ZVTCwgMHg5QjA1Njg4Q1VMLCAweDFGODNEOUFCVUwsIDB4NUJFMENEMTlVTAorfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgYmxha2Uyc19zaWdtYVsxMF1bMTZdID0KK3sKKyAgeyAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSB9ICwKKyAgeyAxNCwgMTAsICA0LCAgOCwgIDksIDE1LCAxMywgIDYsICAxLCAxMiwgIDAsICAyLCAxMSwgIDcsICA1LCAgMyB9ICwKKyAgeyAxMSwgIDgsIDEyLCAgMCwgIDUsICAyLCAxNSwgMTMsIDEwLCAxNCwgIDMsICA2LCAgNywgIDEsICA5LCAgNCB9ICwKKyAgeyAgNywgIDksICAzLCAgMSwgMTMsIDEyLCAxMSwgMTQsICAyLCAgNiwgIDUsIDEwLCAgNCwgIDAsIDE1LCAgOCB9ICwKKyAgeyAgOSwgIDAsICA1LCAgNywgIDIsICA0LCAxMCwgMTUsIDE0LCAgMSwgMTEsIDEyLCAgNiwgIDgsICAzLCAxMyB9ICwKKyAgeyAgMiwgMTIsICA2LCAxMCwgIDAsIDExLCAgOCwgIDMsICA0LCAxMywgIDcsICA1LCAxNSwgMTQsICAxLCAgOSB9ICwKKyAgeyAxMiwgIDUsICAxLCAxNSwgMTQsIDEzLCAgNCwgMTAsICAwLCAgNywgIDYsICAzLCAgOSwgIDIsICA4LCAxMSB9ICwKKyAgeyAxMywgMTEsICA3LCAxNCwgMTIsICAxLCAgMywgIDksICA1LCAgMCwgMTUsICA0LCAgOCwgIDYsICAyLCAxMCB9ICwKKyAgeyAgNiwgMTUsIDE0LCAgOSwgMTEsICAzLCAgMCwgIDgsIDEyLCAgMiwgMTMsICA3LCAgMSwgIDQsIDEwLCAgNSB9ICwKKyAgeyAxMCwgIDIsICA4LCAgNCwgIDcsICA2LCAgMSwgIDUsIDE1LCAxMSwgIDksIDE0LCAgMywgMTIsIDEzICwgMCB9ICwKK307CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3NldF9sYXN0bm9kZSggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2NsZWFyX2xhc3Rub2RlKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IDA7CisgIHJldHVybiAwOworfQorCisvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMsIG5vdCBuZWNlc3NhcmlseSB1c2VmdWwgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2lzX2xhc3RibG9jayggY29uc3QgYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIHJldHVybiBTLT5mWzBdICE9IDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3NldF9sYXN0YmxvY2soIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2Uyc19zZXRfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19jbGVhcl9sYXN0YmxvY2soIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2Uyc19jbGVhcl9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAwOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQzMl90IGluYyApCit7CisgIFMtPnRbMF0gKz0gaW5jOworICBTLT50WzFdICs9ICggUy0+dFswXSA8IGluYyApOworICByZXR1cm4gMDsKK30KKworLyogUGFyYW1ldGVyLXJlbGF0ZWQgZnVuY3Rpb25zICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfZGlnZXN0X2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkaWdlc3RfbGVuZ3RoICkKK3sKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IGRpZ2VzdF9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfZmFub3V0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGZhbm91dCApCit7CisgIFAtPmZhbm91dCA9IGZhbm91dDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9tYXhfZGVwdGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGVwdGggKQoreworICBQLT5kZXB0aCA9IGRlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2xlYWZfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50MzJfdCBsZWFmX2xlbmd0aCApCit7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgbGVhZl9sZW5ndGggKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9ub2RlX29mZnNldCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDY0X3Qgbm9kZV9vZmZzZXQgKQoreworICBzdG9yZTQ4KCBQLT5ub2RlX29mZnNldCwgbm9kZV9vZmZzZXQgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9ub2RlX2RlcHRoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IG5vZGVfZGVwdGggKQoreworICBQLT5ub2RlX2RlcHRoID0gbm9kZV9kZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9pbm5lcl9sZW5ndGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgaW5uZXJfbGVuZ3RoICkKK3sKKyAgUC0+aW5uZXJfbGVuZ3RoID0gaW5uZXJfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X3NhbHQoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgc2FsdFtCTEFLRTJTX1NBTFRCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnNhbHQsIHNhbHQsIEJMQUtFMlNfU0FMVEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfcGVyc29uYWwoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgcGVyc29uYWxbQkxBS0UyU19QRVJTT05BTEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+cGVyc29uYWwsIHBlcnNvbmFsLCBCTEFLRTJTX1BFUlNPTkFMQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2luaXQwKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaW50IGk7CisgIG1lbXNldCggUywgMCwgc2l6ZW9mKCBibGFrZTJzX3N0YXRlICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgUy0+aFtpXSA9IGJsYWtlMnNfSVZbaV07CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGluaXQyIHhvcnMgSVYgd2l0aCBpbnB1dCBwYXJhbWV0ZXIgYmxvY2sgKi8KK2ludCBibGFrZTJzX2luaXRfcGFyYW0oIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMnNfcGFyYW0gKlAgKQoreworICBjb25zdCB1aW50MzJfdCAqcCA9ICggY29uc3QgdWludDMyX3QgKiApKCBQICk7CisgIHNpemVfdCBpOworCisgIGJsYWtlMnNfaW5pdDAoIFMgKTsKKworICAvKiBJViBYT1IgUGFyYW1CbG9jayAqLworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICBTLT5oW2ldIF49IGxvYWQzMiggJnBbaV0gKTsKKworICByZXR1cm4gMDsKK30KKworCisvKiBTZXF1ZW50aWFsIGJsYWtlMnMgaW5pdGlhbGl6YXRpb24gKi8KK2ludCBibGFrZTJzX2luaXQoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgYmxha2Uyc19wYXJhbSBQWzFdOworCisgIC8qIE1vdmUgaW50ZXJ2YWwgdmVyaWZpY2F0aW9uIGhlcmU/ICovCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IG91dGxlbjsKKyAgUC0+a2V5X2xlbmd0aCAgICA9IDA7CisgIFAtPmZhbm91dCAgICAgICAgPSAxOworICBQLT5kZXB0aCAgICAgICAgID0gMTsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlNDgoICZQLT5ub2RlX29mZnNldCwgMCApOworICBQLT5ub2RlX2RlcHRoICAgID0gMDsKKyAgUC0+aW5uZXJfbGVuZ3RoICA9IDA7CisgIC8qIG1lbXNldChQLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKFAtPnJlc2VydmVkKSApOyAqLworICBtZW1zZXQoIFAtPnNhbHQsICAgICAwLCBzaXplb2YoIFAtPnNhbHQgKSApOworICBtZW1zZXQoIFAtPnBlcnNvbmFsLCAwLCBzaXplb2YoIFAtPnBlcnNvbmFsICkgKTsKKyAgcmV0dXJuIGJsYWtlMnNfaW5pdF9wYXJhbSggUywgUCApOworfQorCitpbnQgYmxha2Uyc19pbml0X2tleSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKQoreworICBibGFrZTJzX3BhcmFtIFBbMV07CisKKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBpZiAoICFrZXkgfHwgIWtleWxlbiB8fCBrZXlsZW4gPiBCTEFLRTJTX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIFAtPmRpZ2VzdF9sZW5ndGggPSBvdXRsZW47CisgIFAtPmtleV9sZW5ndGggICAgPSBrZXlsZW47CisgIFAtPmZhbm91dCAgICAgICAgPSAxOworICBQLT5kZXB0aCAgICAgICAgID0gMTsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlNDgoICZQLT5ub2RlX29mZnNldCwgMCApOworICBQLT5ub2RlX2RlcHRoICAgID0gMDsKKyAgUC0+aW5uZXJfbGVuZ3RoICA9IDA7CisgIC8qIG1lbXNldChQLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKFAtPnJlc2VydmVkKSApOyAqLworICBtZW1zZXQoIFAtPnNhbHQsICAgICAwLCBzaXplb2YoIFAtPnNhbHQgKSApOworICBtZW1zZXQoIFAtPnBlcnNvbmFsLCAwLCBzaXplb2YoIFAtPnBlcnNvbmFsICkgKTsKKworICBpZiggYmxha2Uyc19pbml0X3BhcmFtKCBTLCBQICkgPCAwICkgcmV0dXJuIC0xOworCisgIHsKKyAgICB1aW50OF90IGJsb2NrW0JMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgbWVtc2V0KCBibG9jaywgMCwgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgbWVtY3B5KCBibG9jaywga2V5LCBrZXlsZW4gKTsKKyAgICBibGFrZTJzX3VwZGF0ZSggUywgYmxvY2ssIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIHNlY3VyZV96ZXJvX21lbW9yeSggYmxvY2ssIEJMQUtFMlNfQkxPQ0tCWVRFUyApOyAvKiBCdXJuIHRoZSBrZXkgZnJvbSBzdGFjayAqLworICB9CisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGJsYWtlMnNfY29tcHJlc3MoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXSApCit7CisgIHVpbnQzMl90IG1bMTZdOworICB1aW50MzJfdCB2WzE2XTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDE2OyArK2kgKQorICAgIG1baV0gPSBsb2FkMzIoIGJsb2NrICsgaSAqIHNpemVvZiggbVtpXSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApCisgICAgdltpXSA9IFMtPmhbaV07CisKKyAgdlsgOF0gPSBibGFrZTJzX0lWWzBdOworICB2WyA5XSA9IGJsYWtlMnNfSVZbMV07CisgIHZbMTBdID0gYmxha2Uyc19JVlsyXTsKKyAgdlsxMV0gPSBibGFrZTJzX0lWWzNdOworICB2WzEyXSA9IFMtPnRbMF0gXiBibGFrZTJzX0lWWzRdOworICB2WzEzXSA9IFMtPnRbMV0gXiBibGFrZTJzX0lWWzVdOworICB2WzE0XSA9IFMtPmZbMF0gXiBibGFrZTJzX0lWWzZdOworICB2WzE1XSA9IFMtPmZbMV0gXiBibGFrZTJzX0lWWzddOworI2RlZmluZSBHKHIsaSxhLGIsYyxkKSBcCisgIGRvIHsgXAorICAgIGEgPSBhICsgYiArIG1bYmxha2Uyc19zaWdtYVtyXVsyKmkrMF1dOyBcCisgICAgZCA9IHJvdHIzMihkIF4gYSwgMTYpOyBcCisgICAgYyA9IGMgKyBkOyBcCisgICAgYiA9IHJvdHIzMihiIF4gYywgMTIpOyBcCisgICAgYSA9IGEgKyBiICsgbVtibGFrZTJzX3NpZ21hW3JdWzIqaSsxXV07IFwKKyAgICBkID0gcm90cjMyKGQgXiBhLCA4KTsgXAorICAgIGMgPSBjICsgZDsgXAorICAgIGIgPSByb3RyMzIoYiBeIGMsIDcpOyBcCisgIH0gd2hpbGUoMCkKKyNkZWZpbmUgUk9VTkQocikgIFwKKyAgZG8geyBcCisgICAgRyhyLDAsdlsgMF0sdlsgNF0sdlsgOF0sdlsxMl0pOyBcCisgICAgRyhyLDEsdlsgMV0sdlsgNV0sdlsgOV0sdlsxM10pOyBcCisgICAgRyhyLDIsdlsgMl0sdlsgNl0sdlsxMF0sdlsxNF0pOyBcCisgICAgRyhyLDMsdlsgM10sdlsgN10sdlsxMV0sdlsxNV0pOyBcCisgICAgRyhyLDQsdlsgMF0sdlsgNV0sdlsxMF0sdlsxNV0pOyBcCisgICAgRyhyLDUsdlsgMV0sdlsgNl0sdlsxMV0sdlsxMl0pOyBcCisgICAgRyhyLDYsdlsgMl0sdlsgN10sdlsgOF0sdlsxM10pOyBcCisgICAgRyhyLDcsdlsgM10sdlsgNF0sdlsgOV0sdlsxNF0pOyBcCisgIH0gd2hpbGUoMCkKKyAgUk9VTkQoIDAgKTsKKyAgUk9VTkQoIDEgKTsKKyAgUk9VTkQoIDIgKTsKKyAgUk9VTkQoIDMgKTsKKyAgUk9VTkQoIDQgKTsKKyAgUk9VTkQoIDUgKTsKKyAgUk9VTkQoIDYgKTsKKyAgUk9VTkQoIDcgKTsKKyAgUk9VTkQoIDggKTsKKyAgUk9VTkQoIDkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICBTLT5oW2ldID0gUy0+aFtpXSBeIHZbaV0gXiB2W2kgKyA4XTsKKworI3VuZGVmIEcKKyN1bmRlZiBST1VORAorICByZXR1cm4gMDsKK30KKworCitpbnQgYmxha2Uyc191cGRhdGUoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApCit7CisgIHdoaWxlKCBpbmxlbiA+IDAgKQorICB7CisgICAgc2l6ZV90IGxlZnQgPSBTLT5idWZsZW47CisgICAgc2l6ZV90IGZpbGwgPSAyICogQkxBS0UyU19CTE9DS0JZVEVTIC0gbGVmdDsKKworICAgIGlmKCBpbmxlbiA+IGZpbGwgKQorICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGZpbGwgKTsgLyogRmlsbCBidWZmZXIgKi8KKyAgICAgIFMtPmJ1ZmxlbiArPSBmaWxsOworICAgICAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsgLyogQ29tcHJlc3MgKi8KKyAgICAgIG1lbWNweSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJTX0JMT0NLQllURVMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOyAvKiBTaGlmdCBidWZmZXIgbGVmdCAqLworICAgICAgUy0+YnVmbGVuIC09IEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICAgIGluICs9IGZpbGw7CisgICAgICBpbmxlbiAtPSBmaWxsOworICAgIH0KKyAgICBlbHNlIC8qIGlubGVuIDw9IGZpbGwgKi8KKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCAoc2l6ZV90KWlubGVuICk7CisgICAgICBTLT5idWZsZW4gKz0gKHNpemVfdClpbmxlbjsgLyogQmUgbGF6eSwgZG8gbm90IGNvbXByZXNzICovCisgICAgICBpbiArPSBpbmxlbjsKKyAgICAgIGlubGVuIC09IGlubGVuOworICAgIH0KKyAgfQorCisgIHJldHVybiAwOworfQorCitpbnQgYmxha2Uyc19maW5hbCggYmxha2Uyc19zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApCit7CisgIHVpbnQ4X3QgYnVmZmVyW0JMQUtFMlNfT1VUQllURVNdID0gezB9OworICBpbnQgaTsKKworICBpZiggb3V0ID09IE5VTEwgfHwgb3V0bGVuID09IDAgfHwgb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJzX2lzX2xhc3RibG9jayggUyApICkKKyAgICByZXR1cm4gLTE7CisKKworICBpZiggUy0+YnVmbGVuID4gQkxBS0UyU19CTE9DS0JZVEVTICkKKyAgeworICAgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJTX0JMT0NLQllURVM7CisgICAgbWVtbW92ZSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJTX0JMT0NLQllURVMsIFMtPmJ1ZmxlbiApOworICB9CisKKyAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgKCB1aW50MzJfdCApUy0+YnVmbGVuICk7CisgIGJsYWtlMnNfc2V0X2xhc3RibG9jayggUyApOworICBtZW1zZXQoIFMtPmJ1ZiArIFMtPmJ1ZmxlbiwgMCwgMiAqIEJMQUtFMlNfQkxPQ0tCWVRFUyAtIFMtPmJ1ZmxlbiApOyAvKiBQYWRkaW5nICovCisgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSAvKiBPdXRwdXQgZnVsbCBoYXNoIHRvIHRlbXAgYnVmZmVyICovCisgICAgc3RvcmUzMiggYnVmZmVyICsgc2l6ZW9mKCBTLT5oW2ldICkgKiBpLCBTLT5oW2ldICk7CisgICAgCisgIG1lbWNweSggb3V0LCBidWZmZXIsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworaW50IGJsYWtlMnMoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMnNfc3RhdGUgU1sxXTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IGtleSAmJiBrZXlsZW4gPiAwKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gMCApCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0X2tleSggUywgb3V0bGVuLCBrZXksIGtleWxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0KCBTLCBvdXRsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKworICBibGFrZTJzX3VwZGF0ZSggUywgKCBjb25zdCB1aW50OF90ICogKWluLCBpbmxlbiApOworICBibGFrZTJzX2ZpbmFsKCBTLCBvdXQsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoU1VQRVJDT1ApCitpbnQgY3J5cHRvX2hhc2goIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmxlbiApCit7CisgIHJldHVybiBibGFrZTJzKCBvdXQsIGluLCBOVUxMLCBCTEFLRTJTX09VVEJZVEVTLCBpbmxlbiwgMCApOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEJMQUtFMlNfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIGludCBhcmdjLCBjaGFyICoqYXJndiApCit7CisgIHVpbnQ4X3Qga2V5W0JMQUtFMlNfS0VZQllURVNdOworICB1aW50OF90IGJ1ZltLQVRfTEVOR1RIXTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMlNfS0VZQllURVM7ICsraSApCisgICAga2V5W2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgeworICAgIHVpbnQ4X3QgaGFzaFtCTEFLRTJTX09VVEJZVEVTXTsKKyAgICBibGFrZTJzKCBoYXNoLCBidWYsIGtleSwgQkxBS0UyU19PVVRCWVRFUywgaSwgQkxBS0UyU19LRVlCWVRFUyApOworCisgICAgaWYoIDAgIT0gbWVtY21wKCBoYXNoLCBibGFrZTJzX2tleWVkX2thdFtpXSwgQkxBS0UyU19PVVRCWVRFUyApICkKKyAgICB7CisgICAgICBwdXRzKCAiZXJyb3IiICk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgcHV0cyggIm9rIiApOworICByZXR1cm4gMDsKK30KKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcm91bmQuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcm91bmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDcwZDkyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yb3VuZC5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMlNfUk9VTkRfSF9fCisjZGVmaW5lIF9fQkxBS0UyU19ST1VORF9IX18KKworI2RlZmluZSBMT0FEVShwKSAgX21tX2xvYWR1X3NpMTI4KCAoY29uc3QgX19tMTI4aSAqKShwKSApCisjZGVmaW5lIFNUT1JFVShwLHIpIF9tbV9zdG9yZXVfc2kxMjgoKF9fbTEyOGkgKikocCksIHIpCisKKyNkZWZpbmUgVE9GKHJlZykgX21tX2Nhc3RzaTEyOF9wcygocmVnKSkKKyNkZWZpbmUgVE9JKHJlZykgX21tX2Nhc3Rwc19zaTEyOCgocmVnKSkKKworI2RlZmluZSBMSUtFTFkoeCkgX19idWlsdGluX2V4cGVjdCgoeCksMSkKKworCisvKiBNaWNyb2FyY2hpdGVjdHVyZS1zcGVjaWZpYyBtYWNyb3MgKi8KKyNpZm5kZWYgSEFWRV9YT1AKKyNpZmRlZiBIQVZFX1NTU0UzCisjZGVmaW5lIF9tbV9yb3RpX2VwaTMyKHIsIGMpICggXAorICAgICAgICAgICAgICAgICg4PT0tKGMpKSA/IF9tbV9zaHVmZmxlX2VwaTgocixyOCkgXAorICAgICAgICAgICAgICA6ICgxNj09LShjKSkgPyBfbW1fc2h1ZmZsZV9lcGk4KHIscjE2KSBcCisgICAgICAgICAgICAgIDogX21tX3hvcl9zaTEyOChfbW1fc3JsaV9lcGkzMiggKHIpLCAtKGMpICksX21tX3NsbGlfZXBpMzIoIChyKSwgMzItKC0oYykpICkpICkKKyNlbHNlCisjZGVmaW5lIF9tbV9yb3RpX2VwaTMyKHIsIGMpIF9tbV94b3Jfc2kxMjgoX21tX3NybGlfZXBpMzIoIChyKSwgLShjKSApLF9tbV9zbGxpX2VwaTMyKCAociksIDMyLSgtKGMpKSApKQorI2VuZGlmCisjZWxzZQorLyogLi4uICovCisjZW5kaWYKKworCisjZGVmaW5lIEcxKHJvdzEscm93Mixyb3czLHJvdzQsYnVmKSBcCisgIHJvdzEgPSBfbW1fYWRkX2VwaTMyKCBfbW1fYWRkX2VwaTMyKCByb3cxLCBidWYpLCByb3cyICk7IFwKKyAgcm93NCA9IF9tbV94b3Jfc2kxMjgoIHJvdzQsIHJvdzEgKTsgXAorICByb3c0ID0gX21tX3JvdGlfZXBpMzIocm93NCwgLTE2KTsgXAorICByb3czID0gX21tX2FkZF9lcGkzMiggcm93Mywgcm93NCApOyAgIFwKKyAgcm93MiA9IF9tbV94b3Jfc2kxMjgoIHJvdzIsIHJvdzMgKTsgXAorICByb3cyID0gX21tX3JvdGlfZXBpMzIocm93MiwgLTEyKTsKKworI2RlZmluZSBHMihyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZikgXAorICByb3cxID0gX21tX2FkZF9lcGkzMiggX21tX2FkZF9lcGkzMiggcm93MSwgYnVmKSwgcm93MiApOyBcCisgIHJvdzQgPSBfbW1feG9yX3NpMTI4KCByb3c0LCByb3cxICk7IFwKKyAgcm93NCA9IF9tbV9yb3RpX2VwaTMyKHJvdzQsIC04KTsgXAorICByb3czID0gX21tX2FkZF9lcGkzMiggcm93Mywgcm93NCApOyAgIFwKKyAgcm93MiA9IF9tbV94b3Jfc2kxMjgoIHJvdzIsIHJvdzMgKTsgXAorICByb3cyID0gX21tX3JvdGlfZXBpMzIocm93MiwgLTcpOworCisjZGVmaW5lIERJQUdPTkFMSVpFKHJvdzEscm93Mixyb3czLHJvdzQpIFwKKyAgcm93NCA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3c0LCBfTU1fU0hVRkZMRSgyLDEsMCwzKSApOyBcCisgIHJvdzMgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93MywgX01NX1NIVUZGTEUoMSwwLDMsMikgKTsgXAorICByb3cyID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzIsIF9NTV9TSFVGRkxFKDAsMywyLDEpICk7CisKKyNkZWZpbmUgVU5ESUFHT05BTElaRShyb3cxLHJvdzIscm93Myxyb3c0KSBcCisgIHJvdzQgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93NCwgX01NX1NIVUZGTEUoMCwzLDIsMSkgKTsgXAorICByb3czID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzMsIF9NTV9TSFVGRkxFKDEsMCwzLDIpICk7IFwKKyAgcm93MiA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3cyLCBfTU1fU0hVRkZMRSgyLDEsMCwzKSApOworCisjaWYgZGVmaW5lZChIQVZFX1hPUCkKKyNpbmNsdWRlICJibGFrZTJzLWxvYWQteG9wLmgiCisjZWxpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisjaW5jbHVkZSAiYmxha2Uycy1sb2FkLXNzZTQxLmgiCisjZWxzZQorI2luY2x1ZGUgImJsYWtlMnMtbG9hZC1zc2UyLmgiCisjZW5kaWYKKworI2RlZmluZSBST1VORChyKSAgXAorICBMT0FEX01TR18gIyNyICMjXzEoYnVmMSk7IFwKKyAgRzEocm93MSxyb3cyLHJvdzMscm93NCxidWYxKTsgXAorICBMT0FEX01TR18gIyNyICMjXzIoYnVmMik7IFwKKyAgRzIocm93MSxyb3cyLHJvdzMscm93NCxidWYyKTsgXAorICBESUFHT05BTElaRShyb3cxLHJvdzIscm93Myxyb3c0KTsgXAorICBMT0FEX01TR18gIyNyICMjXzMoYnVmMyk7IFwKKyAgRzEocm93MSxyb3cyLHJvdzMscm93NCxidWYzKTsgXAorICBMT0FEX01TR18gIyNyICMjXzQoYnVmNCk7IFwKKyAgRzIocm93MSxyb3cyLHJvdzMscm93NCxidWY0KTsgXAorICBVTkRJQUdPTkFMSVpFKHJvdzEscm93Mixyb3czLHJvdzQpOyBcCisgCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy5jIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5Mzg1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLmMKQEAgLTAsMCArMSw0MzUgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJibGFrZTIuaCIKKyNpbmNsdWRlICJibGFrZTItaW1wbC5oIgorCisjaW5jbHVkZSAiYmxha2UyLWNvbmZpZy5oIgorCisKKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNpZiBkZWZpbmVkKEhBVkVfU1NTRTMpCisjaW5jbHVkZSA8dG1taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisjaW5jbHVkZSA8c21taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfQVZYKQorI2luY2x1ZGUgPGltbWludHJpbi5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1hPUCkKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiYmxha2Uycy1yb3VuZC5oIgorCitzdGF0aWMgY29uc3QgdWludDMyX3QgYmxha2Uyc19JVls4XSA9Cit7CisgIDB4NkEwOUU2NjdVTCwgMHhCQjY3QUU4NVVMLCAweDNDNkVGMzcyVUwsIDB4QTU0RkY1M0FVTCwKKyAgMHg1MTBFNTI3RlVMLCAweDlCMDU2ODhDVUwsIDB4MUY4M0Q5QUJVTCwgMHg1QkUwQ0QxOVVMCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBibGFrZTJzX3NpZ21hWzEwXVsxNl0gPQoreworICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0gLAorICB7IDExLCAgOCwgMTIsICAwLCAgNSwgIDIsIDE1LCAxMywgMTAsIDE0LCAgMywgIDYsICA3LCAgMSwgIDksICA0IH0gLAorICB7ICA3LCAgOSwgIDMsICAxLCAxMywgMTIsIDExLCAxNCwgIDIsICA2LCAgNSwgMTAsICA0LCAgMCwgMTUsICA4IH0gLAorICB7ICA5LCAgMCwgIDUsICA3LCAgMiwgIDQsIDEwLCAxNSwgMTQsICAxLCAxMSwgMTIsICA2LCAgOCwgIDMsIDEzIH0gLAorICB7ICAyLCAxMiwgIDYsIDEwLCAgMCwgMTEsICA4LCAgMywgIDQsIDEzLCAgNywgIDUsIDE1LCAxNCwgIDEsICA5IH0gLAorICB7IDEyLCAgNSwgIDEsIDE1LCAxNCwgMTMsICA0LCAxMCwgIDAsICA3LCAgNiwgIDMsICA5LCAgMiwgIDgsIDExIH0gLAorICB7IDEzLCAxMSwgIDcsIDE0LCAxMiwgIDEsICAzLCAgOSwgIDUsICAwLCAxNSwgIDQsICA4LCAgNiwgIDIsIDEwIH0gLAorICB7ICA2LCAxNSwgMTQsICA5LCAxMSwgIDMsICAwLCAgOCwgMTIsICAyLCAxMywgIDcsICAxLCAgNCwgMTAsICA1IH0gLAorICB7IDEwLCAgMiwgIDgsICA0LCAgNywgIDYsICAxLCAgNSwgMTUsIDExLCAgOSwgMTQsICAzLCAxMiwgMTMgLCAwIH0gLAorfTsKKworCisvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMsIG5vdCBuZWNlc3NhcmlseSB1c2VmdWwgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3NldF9sYXN0bm9kZSggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2NsZWFyX2xhc3Rub2RlKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IDA7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19pc19sYXN0YmxvY2soIGNvbnN0IGJsYWtlMnNfc3RhdGUgKlMgKQoreworICByZXR1cm4gUy0+ZlswXSAhPSAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19zZXRfbGFzdGJsb2NrKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMnNfc2V0X2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfY2xlYXJfbGFzdGJsb2NrKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMnNfY2xlYXJfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50MzJfdCBpbmMgKQoreworICB1aW50NjRfdCB0ID0gKCAoIHVpbnQ2NF90IClTLT50WzFdIDw8IDMyICkgfCBTLT50WzBdOworICB0ICs9IGluYzsKKyAgUy0+dFswXSA9ICggdWludDMyX3QgKSggdCA+PiAgMCApOworICBTLT50WzFdID0gKCB1aW50MzJfdCApKCB0ID4+IDMyICk7CisgIHJldHVybiAwOworfQorCisKKy8qIFBhcmFtZXRlci1yZWxhdGVkIGZ1bmN0aW9ucyAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2RpZ2VzdF9sZW5ndGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGlnZXN0X2xlbmd0aCApCit7CisgIFAtPmRpZ2VzdF9sZW5ndGggPSBkaWdlc3RfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2Zhbm91dCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBmYW5vdXQgKQoreworICBQLT5mYW5vdXQgPSBmYW5vdXQ7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbWF4X2RlcHRoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRlcHRoICkKK3sKKyAgUC0+ZGVwdGggPSBkZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9sZWFmX2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDMyX3QgbGVhZl9sZW5ndGggKQoreworICBQLT5sZWFmX2xlbmd0aCA9IGxlYWZfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X25vZGVfb2Zmc2V0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50NjRfdCBub2RlX29mZnNldCApCit7CisgIHN0b3JlNDgoIFAtPm5vZGVfb2Zmc2V0LCBub2RlX29mZnNldCApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X25vZGVfZGVwdGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgbm9kZV9kZXB0aCApCit7CisgIFAtPm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2lubmVyX2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBpbm5lcl9sZW5ndGggKQoreworICBQLT5pbm5lcl9sZW5ndGggPSBpbm5lcl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfc2FsdCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBzYWx0W0JMQUtFMlNfU0FMVEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+c2FsdCwgc2FsdCwgQkxBS0UyU19TQUxUQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9wZXJzb25hbCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBwZXJzb25hbFtCTEFLRTJTX1BFUlNPTkFMQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5wZXJzb25hbCwgcGVyc29uYWwsIEJMQUtFMlNfUEVSU09OQUxCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaW5pdDAoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpbnQgaTsKKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMnNfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSBTLT5oW2ldID0gYmxha2Uyc19JVltpXTsKKworICByZXR1cm4gMDsKK30KKworLyogaW5pdDIgeG9ycyBJViB3aXRoIGlucHV0IHBhcmFtZXRlciBibG9jayAqLworaW50IGJsYWtlMnNfaW5pdF9wYXJhbSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgYmxha2Uyc19wYXJhbSAqUCApCit7CisgIC8qYmxha2Uyc19pbml0MCggUyApOyAqLworICBjb25zdCB1aW50OF90ICogdiA9ICggY29uc3QgdWludDhfdCAqICkoIGJsYWtlMnNfSVYgKTsKKyAgY29uc3QgdWludDhfdCAqIHAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApKCBQICk7CisgIHVpbnQ4X3QgKiBoID0gKCB1aW50OF90ICogKSggUy0+aCApOworICBpbnQgaTsKKyAgLyogSVYgWE9SIFBhcmFtQmxvY2sgKi8KKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMnNfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCBCTEFLRTJTX09VVEJZVEVTOyArK2kgKSBoW2ldID0gdltpXSBeIHBbaV07CisKKyAgcmV0dXJuIDA7Cit9CisKKworLyogU29tZSBzb3J0IG9mIGRlZmF1bHQgcGFyYW1ldGVyIGJsb2NrIGluaXRpYWxpemF0aW9uLCBmb3Igc2VxdWVudGlhbCBibGFrZTJzICovCitpbnQgYmxha2Uyc19pbml0KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApCit7CisgIGNvbnN0IGJsYWtlMnNfcGFyYW0gUCA9CisgIHsKKyAgICBvdXRsZW4sCisgICAgMCwKKyAgICAxLAorICAgIDEsCisgICAgMCwKKyAgICB7MH0sCisgICAgMCwKKyAgICAwLAorICAgIHswfSwKKyAgICB7MH0KKyAgfTsKKyAgLyogTW92ZSBpbnRlcnZhbCB2ZXJpZmljYXRpb24gaGVyZT8gKi8KKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSApIHJldHVybiAtMTsKKyAgcmV0dXJuIGJsYWtlMnNfaW5pdF9wYXJhbSggUywgJlAgKTsKK30KKworCitpbnQgYmxha2Uyc19pbml0X2tleSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKQoreworICBjb25zdCBibGFrZTJzX3BhcmFtIFAgPQorICB7CisgICAgb3V0bGVuLAorICAgIGtleWxlbiwKKyAgICAxLAorICAgIDEsCisgICAgMCwKKyAgICB7MH0sCisgICAgMCwKKyAgICAwLAorICAgIHswfSwKKyAgICB7MH0KKyAgfTsKKworICAvKiBNb3ZlIGludGVydmFsIHZlcmlmaWNhdGlvbiBoZXJlPyAqLworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIGlmICggKCAha2V5ICkgfHwgKCAha2V5bGVuICkgfHwga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZiggYmxha2Uyc19pbml0X3BhcmFtKCBTLCAmUCApIDwgMCApCisgICAgcmV0dXJuIC0xOworCisgIHsKKyAgICB1aW50OF90IGJsb2NrW0JMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgbWVtc2V0KCBibG9jaywgMCwgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgbWVtY3B5KCBibG9jaywga2V5LCBrZXlsZW4gKTsKKyAgICBibGFrZTJzX3VwZGF0ZSggUywgYmxvY2ssIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIHNlY3VyZV96ZXJvX21lbW9yeSggYmxvY2ssIEJMQUtFMlNfQkxPQ0tCWVRFUyApOyAvKiBCdXJuIHRoZSBrZXkgZnJvbSBzdGFjayAqLworICB9CisgIHJldHVybiAwOworfQorCisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2NvbXByZXNzKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IGJsb2NrW0JMQUtFMlNfQkxPQ0tCWVRFU10gKQoreworICBfX20xMjhpIHJvdzEsIHJvdzIsIHJvdzMsIHJvdzQ7CisgIF9fbTEyOGkgYnVmMSwgYnVmMiwgYnVmMywgYnVmNDsKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisgIF9fbTEyOGkgdDAsIHQxOworI2lmICFkZWZpbmVkKEhBVkVfWE9QKQorICBfX20xMjhpIHQyOworI2VuZGlmCisjZW5kaWYKKyAgX19tMTI4aSBmZjAsIGZmMTsKKyNpZiBkZWZpbmVkKEhBVkVfU1NTRTMpICYmICFkZWZpbmVkKEhBVkVfWE9QKQorICBjb25zdCBfX20xMjhpIHI4ID0gX21tX3NldF9lcGk4KCAxMiwgMTUsIDE0LCAxMywgOCwgMTEsIDEwLCA5LCA0LCA3LCA2LCA1LCAwLCAzLCAyLCAxICk7CisgIGNvbnN0IF9fbTEyOGkgcjE2ID0gX21tX3NldF9lcGk4KCAxMywgMTIsIDE1LCAxNCwgOSwgOCwgMTEsIDEwLCA1LCA0LCA3LCA2LCAxLCAwLCAzLCAyICk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisgIGNvbnN0IF9fbTEyOGkgbTAgPSBMT0FEVSggYmxvY2sgKyAgMDAgKTsKKyAgY29uc3QgX19tMTI4aSBtMSA9IExPQURVKCBibG9jayArICAxNiApOworICBjb25zdCBfX20xMjhpIG0yID0gTE9BRFUoIGJsb2NrICsgIDMyICk7CisgIGNvbnN0IF9fbTEyOGkgbTMgPSBMT0FEVSggYmxvY2sgKyAgNDggKTsKKyNlbHNlCisgIGNvbnN0IHVpbnQzMl90ICBtMCA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyAwXTsKKyAgY29uc3QgdWludDMyX3QgIG0xID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDFdOworICBjb25zdCB1aW50MzJfdCAgbTIgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgMl07CisgIGNvbnN0IHVpbnQzMl90ICBtMyA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyAzXTsKKyAgY29uc3QgdWludDMyX3QgIG00ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDRdOworICBjb25zdCB1aW50MzJfdCAgbTUgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgNV07CisgIGNvbnN0IHVpbnQzMl90ICBtNiA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA2XTsKKyAgY29uc3QgdWludDMyX3QgIG03ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDddOworICBjb25zdCB1aW50MzJfdCAgbTggPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgOF07CisgIGNvbnN0IHVpbnQzMl90ICBtOSA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA5XTsKKyAgY29uc3QgdWludDMyX3QgbTEwID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTBdOworICBjb25zdCB1aW50MzJfdCBtMTEgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxMV07CisgIGNvbnN0IHVpbnQzMl90IG0xMiA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzEyXTsKKyAgY29uc3QgdWludDMyX3QgbTEzID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTNdOworICBjb25zdCB1aW50MzJfdCBtMTQgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxNF07CisgIGNvbnN0IHVpbnQzMl90IG0xNSA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzE1XTsKKyNlbmRpZgorICByb3cxID0gZmYwID0gTE9BRFUoICZTLT5oWzBdICk7CisgIHJvdzIgPSBmZjEgPSBMT0FEVSggJlMtPmhbNF0gKTsKKyAgcm93MyA9IF9tbV9zZXRyX2VwaTMyKCAweDZBMDlFNjY3LCAweEJCNjdBRTg1LCAweDNDNkVGMzcyLCAweEE1NEZGNTNBICk7CisgIHJvdzQgPSBfbW1feG9yX3NpMTI4KCBfbW1fc2V0cl9lcGkzMiggMHg1MTBFNTI3RiwgMHg5QjA1Njg4QywgMHgxRjgzRDlBQiwgMHg1QkUwQ0QxOSApLCBMT0FEVSggJlMtPnRbMF0gKSApOworICBST1VORCggMCApOworICBST1VORCggMSApOworICBST1VORCggMiApOworICBST1VORCggMyApOworICBST1VORCggNCApOworICBST1VORCggNSApOworICBST1VORCggNiApOworICBST1VORCggNyApOworICBST1VORCggOCApOworICBST1VORCggOSApOworICBTVE9SRVUoICZTLT5oWzBdLCBfbW1feG9yX3NpMTI4KCBmZjAsIF9tbV94b3Jfc2kxMjgoIHJvdzEsIHJvdzMgKSApICk7CisgIFNUT1JFVSggJlMtPmhbNF0sIF9tbV94b3Jfc2kxMjgoIGZmMSwgX21tX3hvcl9zaTEyOCggcm93Miwgcm93NCApICkgKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGlubGVuIG5vdyBpbiBieXRlcyAqLworaW50IGJsYWtlMnNfdXBkYXRlKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKQoreworICB3aGlsZSggaW5sZW4gPiAwICkKKyAgeworICAgIHNpemVfdCBsZWZ0ID0gUy0+YnVmbGVuOworICAgIHNpemVfdCBmaWxsID0gMiAqIEJMQUtFMlNfQkxPQ0tCWVRFUyAtIGxlZnQ7CisKKyAgICBpZiggaW5sZW4gPiBmaWxsICkKKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBmaWxsICk7IC8qIEZpbGwgYnVmZmVyICovCisgICAgICBTLT5idWZsZW4gKz0gZmlsbDsKKyAgICAgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgICAgYmxha2Uyc19jb21wcmVzcyggUywgUy0+YnVmICk7IC8qIENvbXByZXNzICovCisgICAgICBtZW1jcHkoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyU19CTE9DS0JZVEVTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsgLyogU2hpZnQgYnVmZmVyIGxlZnQgKi8KKyAgICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJTX0JMT0NLQllURVM7CisgICAgICBpbiArPSBmaWxsOworICAgICAgaW5sZW4gLT0gZmlsbDsKKyAgICB9CisgICAgZWxzZSAvKiBpbmxlbiA8PSBmaWxsICovCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgaW5sZW4gKTsKKyAgICAgIFMtPmJ1ZmxlbiArPSBpbmxlbjsgLyogQmUgbGF6eSwgZG8gbm90IGNvbXByZXNzICovCisgICAgICBpbiArPSBpbmxlbjsKKyAgICAgIGlubGVuIC09IGlubGVuOworICAgIH0KKyAgfQorCisgIHJldHVybiAwOworfQorCisvKiBJcyB0aGlzIGNvcnJlY3Q/ICovCitpbnQgYmxha2Uyc19maW5hbCggYmxha2Uyc19zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApCit7CisgIHVpbnQ4X3QgYnVmZmVyW0JMQUtFMlNfT1VUQllURVNdID0gezB9OworICBpbnQgaTsKKworICBpZiggb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJzX2lzX2xhc3RibG9jayggUyApICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIFMtPmJ1ZmxlbiA+IEJMQUtFMlNfQkxPQ0tCWVRFUyApCisgIHsKKyAgICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKyAgICBTLT5idWZsZW4gLT0gQkxBS0UyU19CTE9DS0JZVEVTOworICAgIG1lbW1vdmUoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyU19CTE9DS0JZVEVTLCBTLT5idWZsZW4gKTsKKyAgfQorCisgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsICggdWludDMyX3QgKVMtPmJ1ZmxlbiApOworICBibGFrZTJzX3NldF9sYXN0YmxvY2soIFMgKTsKKyAgbWVtc2V0KCBTLT5idWYgKyBTLT5idWZsZW4sIDAsIDIgKiBCTEFLRTJTX0JMT0NLQllURVMgLSBTLT5idWZsZW4gKTsgLyogUGFkZGluZyAqLworICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgLyogT3V0cHV0IGZ1bGwgaGFzaCB0byB0ZW1wIGJ1ZmZlciAqLworICAgIHN0b3JlMzIoIGJ1ZmZlciArIHNpemVvZiggUy0+aFtpXSApICogaSwgUy0+aFtpXSApOworCisgIG1lbWNweSggb3V0LCBidWZmZXIsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworLyogaW5sZW4sIGF0IGxlYXN0LCBzaG91bGQgYmUgdWludDY0X3QuIE90aGVycyBjYW4gYmUgc2l6ZV90LiAqLworaW50IGJsYWtlMnMoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMnNfc3RhdGUgU1sxXTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IGtleSAmJiBrZXlsZW4gPiAwKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gMCApCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0X2tleSggUywgb3V0bGVuLCBrZXksIGtleWxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0KCBTLCBvdXRsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKworICBibGFrZTJzX3VwZGF0ZSggUywgKCBjb25zdCB1aW50OF90ICogKWluLCBpbmxlbiApOworICBibGFrZTJzX2ZpbmFsKCBTLCBvdXQsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoU1VQRVJDT1ApCitpbnQgY3J5cHRvX2hhc2goIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmxlbiApCit7CisgIHJldHVybiBibGFrZTJzKCBvdXQsIGluLCBOVUxMLCBCTEFLRTJTX09VVEJZVEVTLCBpbmxlbiwgMCApOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEJMQUtFMlNfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIGludCBhcmdjLCBjaGFyICoqYXJndiApCit7CisgIHVpbnQ4X3Qga2V5W0JMQUtFMlNfS0VZQllURVNdOworICB1aW50OF90IGJ1ZltLQVRfTEVOR1RIXTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMlNfS0VZQllURVM7ICsraSApCisgICAga2V5W2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgeworICAgIHVpbnQ4X3QgaGFzaFtCTEFLRTJTX09VVEJZVEVTXTsKKworICAgIGlmKCBibGFrZTJzKCBoYXNoLCBidWYsIGtleSwgQkxBS0UyU19PVVRCWVRFUywgaSwgQkxBS0UyU19LRVlCWVRFUyApIDwgMCB8fAorICAgICAgICAwICE9IG1lbWNtcCggaGFzaCwgYmxha2Uyc19rZXllZF9rYXRbaV0sIEJMQUtFMlNfT1VUQllURVMgKSApCisgICAgeworICAgICAgcHV0cyggImVycm9yIiApOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgfQorCisgIHB1dHMoICJvayIgKTsKKyAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iejJtb2R1bGUuYyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCmluZGV4IGUzZTBlYjEuLmY0MDc3ZmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCkBAIC01OTIsNyArNTkyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9iejIuQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQloyRGVjb21wcmVzc29yICoiKQogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgIG1heF9sZW5ndGg6IFB5X3NzaXplX3Q9LTEKIApAQCAtNjE1LDcgKzYxNCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yM2U0MTA0NWRlYjI0MGEzIGlucHV0PTk1NThiNDI0YzhiMDA1MTZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yM2U0MTA0NWRlYjI0MGEzIGlucHV0PTUyZTFmZmM2NmE4ZWE2MjRdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwppbmRleCA5YjExOTRlLi41ODZiNzNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwpAQCAtMjAsMTAgKzIwLDYgQEAKICAgICAgPGVuY29kaW5nPl9kZWNvZGUoY2hhcl9idWZmZXJfb2JqWyxlcnJvcnM9J3N0cmljdCddKSAtPgogICAgICAgICAoVW5pY29kZSBvYmplY3QsIGJ5dGVzIGNvbnN1bWVkKQogCi0gICA8ZW5jb2Rpbmc+X2VuY29kZSgpIGludGVyZmFjZXMgYWxzbyBhY2NlcHQgbm9uLVVuaWNvZGUgb2JqZWN0IGFzCi0gICBpbnB1dC4gVGhlIG9iamVjdHMgYXJlIHRoZW4gY29udmVydGVkIHRvIFVuaWNvZGUgdXNpbmcKLSAgIFB5VW5pY29kZV9Gcm9tT2JqZWN0KCkgcHJpb3IgdG8gYXBwbHlpbmcgdGhlIGNvbnZlcnNpb24uCi0KICAgIFRoZXNlIDxlbmNvZGluZz5zIGFyZSBhdmFpbGFibGU6IHV0Zl84LCB1bmljb2RlX2VzY2FwZSwKICAgIHJhd191bmljb2RlX2VzY2FwZSwgdW5pY29kZV9pbnRlcm5hbCwgbGF0aW5fMSwgYXNjaWkgKDctYml0KSwKICAgIG1iY3MgKG9uIHdpbjMyKS4KQEAgLTYwOCw3ICs2MDQsNyBAQAogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBkYXRhLT5sZW4pOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLm1iY3NfZGVjb2RlCkBAIC02MzAsNiArNjI2LDI1IEBACiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3Mub2VtX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3Nfb2VtX2RlY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMTYxNzYxMmYzZmNhZDggaW5wdXQ9OTViOGE5MmM0NDZiMDNjZF0qLworeworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bChDUF9PRU1DUCwKKyAgICAgICAgZGF0YS0+YnVmLCBkYXRhLT5sZW4sIGVycm9ycywgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOworfQorCisvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUKICAgICBjb2RlcGFnZTogaW50CiAgICAgZGF0YTogUHlfYnVmZmVyCkBAIC02NTEsNyArNjY2LDcgQEAKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNzE4LDcgKzczMyw3IEBACiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzdfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC03MjYsMjQgKzc0MSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzdfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBmZWRhMjFmZmM5MjFiYzggaW5wdXQ9ZmQ5MWE3OGYxMDNiMDQyMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBmZWRhMjFmZmM5MjFiYzggaW5wdXQ9ZDFhNDc1NzllNzljYmUxNV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjcoc3RyLCAwLCAwLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEY3KHN0ciwgMCwgMCwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzhfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC03NTEsMTkgKzc1NywxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzhfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAyYmY0NzMzMmI5Yzc5NmMgaW5wdXQ9MmMyMmQ0MDUzMmYwNzFmM10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAyYmY0NzMzMmI5Yzc5NmMgaW5wdXQ9NDJlM2JhNzNjNDM5MmVlZl0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHN0ciwgInV0Zi04IiwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qIFRoaXMgdmVyc2lvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGJ5dGVvcmRlciBwYXJhbWV0ZXIgb2YgdGhlCkBAIC03NzUsNyArNzcyLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMTZfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICBieXRlb3JkZXI6IGludCA9IDAKICAgICAvCkBAIC03ODQsMjQgKzc4MSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzE2X2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzY1NGUxM2VmYTJlNjRlNCBpbnB1dD0zOTM1YTQ4OWIyZDUzODVlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzY1NGUxM2VmYTJlNjRlNCBpbnB1dD1mZjQ2NDE2YjA0ZWRiOTQ0XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMTZfbGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04MDksMjQgKzc5NywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzE2X2xlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDMxYjAxZTU1ZjJkNDk5NSBpbnB1dD1iYzI3ZGYwNWQxZDIwZGZlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDMxYjAxZTU1ZjJkNDk5NSBpbnB1dD1jYjM4NTQ1NWVhOGYyZmUwXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzE2X2JlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtODM0LDE5ICs4MTMsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk2ODg2YTZmZDU0ZGNhZTMgaW5wdXQ9NWE2OWQ0MTEyNzYzNDYyYl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk2ODg2YTZmZDU0ZGNhZTMgaW5wdXQ9OTExOTk5NzA2NmJkYWVmZF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKiBUaGlzIHZlcnNpb24gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBieXRlb3JkZXIgcGFyYW1ldGVyIG9mIHRoZQpAQCAtODU4LDcgKzgyOCw3IEBACiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzMyX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgYnl0ZW9yZGVyOiBpbnQgPSAwCiAgICAgLwpAQCAtODY3LDI0ICs4MzcsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8zMl9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVjNzYwZGEwYzA5YThiODMgaW5wdXQ9NDM0YTFlZmE0OTJiOGQ1OF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVjNzYwZGEwYzA5YThiODMgaW5wdXQ9YzVlNzdkYTgyZmJlNWMyYV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzMyX2xlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtODkyLDI0ICs4NTMsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI2NWNkMTc2ZGU4ZTM2ZDYgaW5wdXQ9ZGZhMmQ3ZGM3OGI5OTQyMl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI2NWNkMTc2ZGU4ZTM2ZDYgaW5wdXQ9OTk5M2IyNWZlMDg3Nzg0OF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCAtMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8zMl9iZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTkxNywyNCArODY5LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZDllNzFhOTM1ODcwOWU5IGlucHV0PTQ1OTU2MTdiMTgxNjkwMDJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZDllNzFhOTM1ODcwOWU5IGlucHV0PWQzZTBjY2FhMDI5MjA0MzFdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgKzEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgKzEpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51bmljb2RlX2VzY2FwZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTk0MiwyNCArODg1LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjYyNzFiMzBiYzRmN2EzYyBpbnB1dD04MjczNTA2ZjE0MDc2OTEyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjYyNzFiMzBiYzRmN2EzYyBpbnB1dD02NWQ5ZWVmY2E2NWI0NTVhXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTY3LDI0ICs5MDEsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2NmE4MDZlZDAxYzgzMGEgaW5wdXQ9MTgxNzU1ZDVkZmFjZWYzY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2NmE4MDZlZDAxYzgzMGEgaW5wdXQ9NWFhMzNlNGExMzMzOTFhYl0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLmxhdGluXzFfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC05OTIsMjQgKzkxNywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfbGF0aW5fMV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYzI4YzgzYTI3ODg0ZTA4IGlucHV0PWYwM2Y2ZGNmMWQ4NGJlZTRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYzI4YzgzYTI3ODg0ZTA4IGlucHV0PTMwYjExYzllNDlhNjUxNTBdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhzdHIsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuYXNjaWlfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0xMDE3LDI0ICs5MzMsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2FzY2lpX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNWUwMzUxODJkMzNiZWZjIGlucHV0PWQ4N2UyNWExMGE1OTNmZWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNWUwMzUxODJkMzNiZWZjIGlucHV0PTg0M2ExZDI2OGU2ZGZhOGVdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLmNoYXJtYXBfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICBtYXBwaW5nOiBvYmplY3QgPSBOVUxMCiAgICAgLwpAQCAtMTA0MywyMiArOTUwLDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19jaGFybWFwX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNDc0NzZmNDg0OTVhOWU5IGlucHV0PTg1ZjQxNzI2NjFlOGRhZDldKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNDc0NzZmNDg0OTVhOWU5IGlucHV0PTA3NTJjZGUwN2E2ZDZkMDBdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQogICAgIGlmIChtYXBwaW5nID09IFB5X05vbmUpCiAgICAgICAgIG1hcHBpbmcgPSBOVUxMOwogCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTEwNzQsMzYgKzk3Miw0MiBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcChtYXApOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLm1iY3NfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX21iY3NfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2ZTJlMTcwYzk2NmMwODAgaW5wdXQ9NjVjMDllZTFlNDIwMzI2M10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2ZTJlMTcwYzk2NmMwODAgaW5wdXQ9ZGU0NzFlMDgxNTk0NzU1M10qLwogewotICAgIFB5T2JqZWN0ICp2OworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCBzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOworfQogCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCBzdHIsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5vZW1fZW5jb2RlCisgICAgc3RyOiB1bmljb2RlCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY1ZDU5ODJjNzM3ZGU2NDkgaW5wdXQ9M2ZjNWYwMDI4YWFkM2NkYV0qLworeworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfT0VNQ1AsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY29kZV9wYWdlX2VuY29kZQogICAgIGNvZGVfcGFnZTogaW50Ci0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0xMTExLDI0ICsxMDE1LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGNvZGVfcGFnZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTY3M2Y2MDg1NjU3YTllIGlucHV0PWM4NTYyZWM0NjBjMmUzMDldKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTY3M2Y2MDg1NjU3YTllIGlucHV0PTc4NjQyMWFlNjE3ZDY4MGJdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGNvZGVfcGFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoY29kZV9wYWdlLCBzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gRXJyb3IgaGFuZGxlciByZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTIxNiw2ICsxMTA5LDggQEAKICAgICBfQ09ERUNTX1JFQURCVUZGRVJfRU5DT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19PRU1fREVDT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19SRUdJU1RFUl9FUlJPUl9NRVRIT0RERUYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCmluZGV4IDEwZmJjZmUuLjllZDZmMTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwpAQCAtODEsNyArODEsNyBAQAogICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OyAgICAgICAvKiAwIDw9IGxlZnRpbmRleCA8IEJMT0NLTEVOICovCiAgICAgUHlfc3NpemVfdCByaWdodGluZGV4OyAgICAgIC8qIDAgPD0gcmlnaHRpbmRleCA8IEJMT0NLTEVOICovCiAgICAgc2l6ZV90IHN0YXRlOyAgICAgICAgICAgICAgIC8qIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBpbmRpY2VzIG1vdmUgKi8KLSAgICBQeV9zc2l6ZV90IG1heGxlbjsKKyAgICBQeV9zc2l6ZV90IG1heGxlbjsgICAgICAgICAgLyogbWF4bGVuIGlzIC0xIGZvciB1bmJvdW5kZWQgZGVxdWVzICovCiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OwogfSBkZXF1ZW9iamVjdDsKIApAQCAtMTA4LDI5ICsxMDgsMTggQEAKICNkZWZpbmUgQ0hFQ0tfTk9UX0VORChsaW5rKQogI2VuZGlmCiAKLS8qIFRvIHByZXZlbnQgbGVuIGZyb20gb3ZlcmZsb3dpbmcgUFlfU1NJWkVfVF9NQVgsIHdlIHJlZnVzZSB0bwotICAgYWxsb2NhdGUgbmV3IGJsb2NrcyBpZiB0aGUgY3VycmVudCBsZW4gaXMgbmVhcmluZyBvdmVyZmxvdy4KLSovCi0KLSNkZWZpbmUgTUFYX0RFUVVFX0xFTiAoUFlfU1NJWkVfVF9NQVggLSAzKkJMT0NLTEVOKQotCiAvKiBBIHNpbXBsZSBmcmVlbGlzdGluZyBzY2hlbWUgaXMgdXNlZCB0byBtaW5pbWl6ZSBjYWxscyB0byB0aGUgbWVtb3J5CiAgICBhbGxvY2F0b3IuICBJdCBhY2NvbW1vZGF0ZXMgY29tbW9uIHVzZSBjYXNlcyB3aGVyZSBuZXcgYmxvY2tzIGFyZSBiZWluZwogICAgYWRkZWQgYXQgYWJvdXQgdGhlIHNhbWUgcmF0ZSBhcyBvbGQgYmxvY2tzIGFyZSBiZWluZyBmcmVlZC4KICAqLwogCi0jZGVmaW5lIE1BWEZSRUVCTE9DS1MgMTAKKyNkZWZpbmUgTUFYRlJFRUJMT0NLUyAxNgogc3RhdGljIFB5X3NzaXplX3QgbnVtZnJlZWJsb2NrcyA9IDA7CiBzdGF0aWMgYmxvY2sgKmZyZWVibG9ja3NbTUFYRlJFRUJMT0NLU107CiAKIHN0YXRpYyBibG9jayAqCi1uZXdibG9jayhQeV9zc2l6ZV90IGxlbikgeworbmV3YmxvY2sodm9pZCkgewogICAgIGJsb2NrICpiOwotICAgIGlmIChsZW4gPj0gTUFYX0RFUVVFX0xFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYWRkIG1vcmUgYmxvY2tzIHRvIHRoZSBkZXF1ZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgaWYgKG51bWZyZWVibG9ja3MpIHsKICAgICAgICAgbnVtZnJlZWJsb2Nrcy0tOwogICAgICAgICByZXR1cm4gZnJlZWJsb2Nrc1tudW1mcmVlYmxvY2tzXTsKQEAgLTE1NCwxMiArMTQzLDYgQEAKICAgICB9CiB9CiAKLS8qIFhYWCBUb2RvOgotICAgSWYgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbnMgYmVjb21lIGF2YWlsYWJsZSwgbWFrZSB0aGUKLSAgIGRlcXVlIG9iamVjdCA2NCBieXRlIGFsaWduZWQgc28gdGhhdCBhbGwgb2YgdGhlIGZpZWxkcwotICAgY2FuIGJlIHJldHJpZXZlZCBvciB1cGRhdGVkIGluIGEgc2luZ2xlIGNhY2hlIGxpbmUuCi0qLwotCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMTcxLDcgKzE1NCw3IEBACiAgICAgaWYgKGRlcXVlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgYiA9IG5ld2Jsb2NrKDApOworICAgIGIgPSBuZXdibG9jaygpOwogICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGRlcXVlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMDcsNyArMTkwLDcgQEAKICAgICBQeV9TSVpFKGRlcXVlKS0tOwogICAgIGRlcXVlLT5zdGF0ZSsrOwogCi0gICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IC0xKSB7CisgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4IDwgMCkgewogICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkpIHsKICAgICAgICAgICAgIHByZXZibG9jayA9IGRlcXVlLT5yaWdodGJsb2NrLT5sZWZ0bGluazsKICAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrICE9IGRlcXVlLT5yaWdodGJsb2NrKTsKQEAgLTI3MCw0MiArMjUzLDI0IEBACiAvKiBUaGUgZGVxdWUncyBzaXplIGxpbWl0IGlzIGQubWF4bGVuLiAgVGhlIGxpbWl0IGNhbiBiZSB6ZXJvIG9yIHBvc2l0aXZlLgogICogSWYgdGhlcmUgaXMgbm8gbGltaXQsIHRoZW4gZC5tYXhsZW4gPT0gLTEuCiAgKgotICogQWZ0ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byBhIGRlcXVlLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHNpemUgaGFzIGdyb3duIHBhc3QKLSAqIHRoZSBsaW1pdC4gSWYgaXQgaGFzLCB3ZSBnZXQgdGhlIHNpemUgYmFjayBkb3duIHRvIHRoZSBsaW1pdCBieSBwb3BwaW5nIGFuCi0gKiBpdGVtIG9mZiBvZiB0aGUgb3Bwb3NpdGUgZW5kLiAgVGhlIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciB0aGlzIGFyZSBhcHBlbmQoKSwKLSAqIGFwcGVuZGxlZnQoKSwgZXh0ZW5kKCksIGFuZCBleHRlbmRsZWZ0KCkuCisgKiBBZnRlciBhbiBpdGVtIGlzIGFkZGVkIHRvIGEgZGVxdWUsIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgc2l6ZSBoYXMKKyAqIGdyb3duIHBhc3QgdGhlIGxpbWl0LiBJZiBpdCBoYXMsIHdlIGdldCB0aGUgc2l6ZSBiYWNrIGRvd24gdG8gdGhlIGxpbWl0CisgKiBieSBwb3BwaW5nIGFuIGl0ZW0gb2ZmIG9mIHRoZSBvcHBvc2l0ZSBlbmQuICBUaGUgbWV0aG9kcyB0aGF0IGNhbgorICogdHJpZ2dlciB0aGlzIGFyZSBhcHBlbmQoKSwgYXBwZW5kbGVmdCgpLCBleHRlbmQoKSwgYW5kIGV4dGVuZGxlZnQoKS4KKyAqCisgKiBUaGUgbWFjcm8gdG8gY2hlY2sgd2hldGhlciBhIGRlcXVlIG5lZWRzIHRvIGJlIHRyaW1tZWQgdXNlcyBhIHNpbmdsZQorICogdW5zaWduZWQgdGVzdCB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuZXZlciAwIDw9IG1heGxlbiA8IFB5X1NJWkUoZGVxdWUpLgogICovCiAKLXN0YXRpYyB2b2lkCi1kZXF1ZV90cmltX3JpZ2h0KGRlcXVlb2JqZWN0ICpkZXF1ZSkKLXsKLSAgICBpZiAoZGVxdWUtPm1heGxlbiAhPSAtMSAmJiBQeV9TSVpFKGRlcXVlKSA+IGRlcXVlLT5tYXhsZW4pIHsKLSAgICAgICAgUHlPYmplY3QgKnJ2ID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKLSAgICAgICAgYXNzZXJ0KHJ2ICE9IE5VTEwpOwotICAgICAgICBhc3NlcnQoUHlfU0laRShkZXF1ZSkgPD0gZGVxdWUtPm1heGxlbik7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7Ci0gICAgfQotfQorI2RlZmluZSBORUVEU19UUklNKGRlcXVlLCBtYXhsZW4pICgoc2l6ZV90KShtYXhsZW4pIDwgKHNpemVfdCkoUHlfU0laRShkZXF1ZSkpKQogCi1zdGF0aWMgdm9pZAotZGVxdWVfdHJpbV9sZWZ0KGRlcXVlb2JqZWN0ICpkZXF1ZSkKK3N0YXRpYyBpbnQKK2RlcXVlX2FwcGVuZF9pbnRlcm5hbChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtLCBQeV9zc2l6ZV90IG1heGxlbikKIHsKLSAgICBpZiAoZGVxdWUtPm1heGxlbiAhPSAtMSAmJiBQeV9TSVpFKGRlcXVlKSA+IGRlcXVlLT5tYXhsZW4pIHsKLSAgICAgICAgUHlPYmplY3QgKnJ2ID0gZGVxdWVfcG9wbGVmdChkZXF1ZSwgTlVMTCk7Ci0gICAgICAgIGFzc2VydChydiAhPSBOVUxMKTsKLSAgICAgICAgYXNzZXJ0KFB5X1NJWkUoZGVxdWUpIDw9IGRlcXVlLT5tYXhsZW4pOwotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgIH0KLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWRlcXVlX2FwcGVuZChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtKQotewotICAgIGRlcXVlLT5zdGF0ZSsrOwogICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKLSAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CisgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soKTsKICAgICAgICAgaWYgKGIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBiLT5sZWZ0bGluayA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgICAgICBDSEVDS19FTkQoZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayk7CiAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrLT5yaWdodGxpbmsgPSBiOwpAQCAtMzEzLDI0ICsyNzgsMzYgQEAKICAgICAgICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSAtMTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKGl0ZW0pOwogICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgZGVxdWUtPnJpZ2h0aW5kZXgrKzsKICAgICBkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleF0gPSBpdGVtOwotICAgIGRlcXVlX3RyaW1fbGVmdChkZXF1ZSk7CisgICAgaWYgKE5FRURTX1RSSU0oZGVxdWUsIG1heGxlbikpIHsKKyAgICAgICAgUHlPYmplY3QgKm9sZGl0ZW0gPSBkZXF1ZV9wb3BsZWZ0KGRlcXVlLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKG9sZGl0ZW0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2FwcGVuZChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICBpZiAoZGVxdWVfYXBwZW5kX2ludGVybmFsKGRlcXVlLCBpdGVtLCBkZXF1ZS0+bWF4bGVuKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoYXBwZW5kX2RvYywgIkFkZCBhbiBlbGVtZW50IHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLWRlcXVlX2FwcGVuZGxlZnQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSkKK3N0YXRpYyBpbnQKK2RlcXVlX2FwcGVuZGxlZnRfaW50ZXJuYWwoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSwgUHlfc3NpemVfdCBtYXhsZW4pCiB7Ci0gICAgZGVxdWUtPnN0YXRlKys7CiAgICAgaWYgKGRlcXVlLT5sZWZ0aW5kZXggPT0gMCkgewotICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKKyAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGItPnJpZ2h0bGluayA9IGRlcXVlLT5sZWZ0YmxvY2s7CiAgICAgICAgIENIRUNLX0VORChkZXF1ZS0+bGVmdGJsb2NrLT5sZWZ0bGluayk7CiAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2stPmxlZnRsaW5rID0gYjsKQEAgLTMzOCwzNyArMzE1LDY1IEBACiAgICAgICAgIE1BUktfRU5EKGItPmxlZnRsaW5rKTsKICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IEJMT0NLTEVOOwogICAgIH0KLSAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICBkZXF1ZS0+bGVmdGluZGV4LS07CiAgICAgZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XSA9IGl0ZW07Ci0gICAgZGVxdWVfdHJpbV9yaWdodChkZXF1ZSk7CisgICAgaWYgKE5FRURTX1RSSU0oZGVxdWUsIGRlcXVlLT5tYXhsZW4pKSB7CisgICAgICAgIFB5T2JqZWN0ICpvbGRpdGVtID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKG9sZGl0ZW0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2FwcGVuZGxlZnQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgaWYgKGRlcXVlX2FwcGVuZGxlZnRfaW50ZXJuYWwoZGVxdWUsIGl0ZW0sIGRlcXVlLT5tYXhsZW4pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihhcHBlbmRsZWZ0X2RvYywgIkFkZCBhbiBlbGVtZW50IHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLiIpOwogCitzdGF0aWMgUHlPYmplY3QqCitmaW5hbGl6ZV9pdGVyYXRvcihQeU9iamVjdCAqaXQpCit7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYoaXQpOworICAgIFB5X1JFVFVSTl9OT05FOworfQogCiAvKiBSdW4gYW4gaXRlcmF0b3IgdG8gZXhoYXVzdGlvbi4gIFNob3J0Y3V0IGZvcgogICAgdGhlIGV4dGVuZC9leHRlbmRsZWZ0IG1ldGhvZHMgd2hlbiBtYXhsZW4gPT0gMC4gKi8KIHN0YXRpYyBQeU9iamVjdCoKIGNvbnN1bWVfaXRlcmF0b3IoUHlPYmplY3QgKml0KQogeworICAgIFB5T2JqZWN0ICooKml0ZXJuZXh0KShQeU9iamVjdCAqKTsKICAgICBQeU9iamVjdCAqaXRlbTsKIAotICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgeworICAgIGl0ZXJuZXh0ID0gKlB5X1RZUEUoaXQpLT50cF9pdGVybmV4dDsKKyAgICB3aGlsZSAoKGl0ZW0gPSBpdGVybmV4dChpdCkpICE9IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgIH0KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gZmluYWxpemVfaXRlcmF0b3IoaXQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfZXh0ZW5kKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZXJhYmxlKQogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW07CisgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOworICAgIFB5X3NzaXplX3QgbWF4bGVuID0gZGVxdWUtPm1heGxlbjsKIAogICAgIC8qIEhhbmRsZSBjYXNlIHdoZXJlIGlkKGRlcXVlKSA9PSBpZChpdGVyYWJsZSkgKi8KICAgICBpZiAoKFB5T2JqZWN0ICopZGVxdWUgPT0gaXRlcmFibGUpIHsKQEAgLTM4MSw2ICszODYsMTMgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChtYXhsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVfaXRlcmF0b3IoaXQpOworCiAgICAgLyogU3BhY2Ugc2F2aW5nIGhldXJpc3RpYy4gIFN0YXJ0IGZpbGxpbmcgZnJvbSB0aGUgbGVmdCAqLwogICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKSB7CiAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrKTsKQEAgLTM4OSwxNyArNDAxLDEwIEBACiAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gMDsKICAgICB9CiAKLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwotICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChkZXF1ZS0+bWF4bGVuID09IDApCi0gICAgICAgIHJldHVybiBjb25zdW1lX2l0ZXJhdG9yKGl0KTsKLQotICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CisgICAgd2hpbGUgKChpdGVtID0gaXRlcm5leHQoaXQpKSAhPSBOVUxMKSB7CiAgICAgICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKLSAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOworICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOwogICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwpAQCAtNDE1LDE0ICs0MjAsMTQgQEAKICAgICAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXgrKzsKICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKLSAgICAgICAgZGVxdWVfdHJpbV9sZWZ0KGRlcXVlKTsKKyAgICAgICAgaWYgKE5FRURTX1RSSU0oZGVxdWUsIG1heGxlbikpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbGRpdGVtID0gZGVxdWVfcG9wbGVmdChkZXF1ZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2xkaXRlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gZmluYWxpemVfaXRlcmF0b3IoaXQpOwogfQogCiBQeURvY19TVFJWQVIoZXh0ZW5kX2RvYywKQEAgLTQzMiw2ICs0MzcsOCBAQAogZGVxdWVfZXh0ZW5kbGVmdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVyYWJsZSkKIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtOworICAgIFB5T2JqZWN0ICooKml0ZXJuZXh0KShQeU9iamVjdCAqKTsKKyAgICBQeV9zc2l6ZV90IG1heGxlbiA9IGRlcXVlLT5tYXhsZW47CiAKICAgICAvKiBIYW5kbGUgY2FzZSB3aGVyZSBpZChkZXF1ZSkgPT0gaWQoaXRlcmFibGUpICovCiAgICAgaWYgKChQeU9iamVjdCAqKWRlcXVlID09IGl0ZXJhYmxlKSB7CkBAIC00NDQsNiArNDUxLDEzIEBACiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobWF4bGVuID09IDApCisgICAgICAgIHJldHVybiBjb25zdW1lX2l0ZXJhdG9yKGl0KTsKKwogICAgIC8qIFNwYWNlIHNhdmluZyBoZXVyaXN0aWMuICBTdGFydCBmaWxsaW5nIGZyb20gdGhlIHJpZ2h0ICovCiAgICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApIHsKICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOwpAQCAtNDUyLDE3ICs0NjYsMTAgQEAKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBCTE9DS0xFTiAtIDI7CiAgICAgfQogCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZGVxdWUtPm1heGxlbiA9PSAwKQotICAgICAgICByZXR1cm4gY29uc3VtZV9pdGVyYXRvcihpdCk7Ci0KLSAgICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OworICAgIHdoaWxlICgoaXRlbSA9IGl0ZXJuZXh0KGl0KSkgIT0gTlVMTCkgewogICAgICAgICBpZiAoZGVxdWUtPmxlZnRpbmRleCA9PSAwKSB7Ci0gICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKKyAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soKTsKICAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKQEAgLTQ3OCwxNCArNDg1LDE0IEBACiAgICAgICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXgtLTsKICAgICAgICAgZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XSA9IGl0ZW07Ci0gICAgICAgIGRlcXVlX3RyaW1fcmlnaHQoZGVxdWUpOworICAgICAgICBpZiAoTkVFRFNfVFJJTShkZXF1ZSwgbWF4bGVuKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKm9sZGl0ZW0gPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKG9sZGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIGZpbmFsaXplX2l0ZXJhdG9yKGl0KTsKIH0KIAogUHlEb2NfU1RSVkFSKGV4dGVuZGxlZnRfZG9jLApAQCAtNTA0LDcgKzUxMSw0MCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICpkZXF1ZV9jb3B5KFB5T2JqZWN0ICpkZXF1ZSk7CitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfY29weShQeU9iamVjdCAqZGVxdWUpCit7CisgICAgZGVxdWVvYmplY3QgKm9sZF9kZXF1ZSA9IChkZXF1ZW9iamVjdCAqKWRlcXVlOworICAgIGlmIChQeV9UWVBFKGRlcXVlKSA9PSAmZGVxdWVfdHlwZSkgeworICAgICAgICBkZXF1ZW9iamVjdCAqbmV3X2RlcXVlOworICAgICAgICBQeU9iamVjdCAqcnY7CisKKyAgICAgICAgbmV3X2RlcXVlID0gKGRlcXVlb2JqZWN0ICopZGVxdWVfbmV3KCZkZXF1ZV90eXBlLCAoUHlPYmplY3QgKilOVUxMLCAoUHlPYmplY3QgKilOVUxMKTsKKyAgICAgICAgaWYgKG5ld19kZXF1ZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG5ld19kZXF1ZS0+bWF4bGVuID0gb2xkX2RlcXVlLT5tYXhsZW47CisgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgdGhlIGRlcXVlX3JlcGVhdCgpIGNvbW1vbiBjYXNlIHdoZXJlIGxlbihkZXF1ZSkgPT0gMSAqLworICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMSkgeworICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBvbGRfZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtvbGRfZGVxdWUtPmxlZnRpbmRleF07CisgICAgICAgICAgICBydiA9IGRlcXVlX2FwcGVuZChuZXdfZGVxdWUsIGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcnYgPSBkZXF1ZV9leHRlbmQobmV3X2RlcXVlLCBkZXF1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJ2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3X2RlcXVlOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihuZXdfZGVxdWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG9sZF9kZXF1ZS0+bWF4bGVuIDwgMCkKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikoUHlfVFlQRShkZXF1ZSkpLCAiTyIsIGRlcXVlLCBOVUxMKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopKFB5X1RZUEUoZGVxdWUpKSwgIk9pIiwKKyAgICAgICAgICAgIGRlcXVlLCBvbGRfZGVxdWUtPm1heGxlbiwgTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihjb3B5X2RvYywgIlJldHVybiBhIHNoYWxsb3cgY29weSBvZiBhIGRlcXVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfY29uY2F0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKm90aGVyKQpAQCAtNTM0LDM4ICs1NzQsMTAyIEBACiAgICAgcmV0dXJuIG5ld19kZXF1ZTsKIH0KIAotc3RhdGljIHZvaWQgZGVxdWVfY2xlYXIoZGVxdWVvYmplY3QgKmRlcXVlKTsKK3N0YXRpYyB2b2lkCitkZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpCit7CisgICAgYmxvY2sgKmI7CisgICAgYmxvY2sgKnByZXZibG9jazsKKyAgICBibG9jayAqbGVmdGJsb2NrOworICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OworICAgIFB5X3NzaXplX3QgbiwgbTsKKyAgICBQeU9iamVjdCAqaXRlbTsKKyAgICBQeU9iamVjdCAqKml0ZW1wdHIsICoqbGltaXQ7CisKKyAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogRHVyaW5nIHRoZSBwcm9jZXNzIG9mIGNsZWFyaW5nIGEgZGVxdWUsIGRlY3JlZnMgY2FuIGNhdXNlIHRoZQorICAgICAgIGRlcXVlIHRvIG11dGF0ZS4gIFRvIGF2b2lkIGZhdGFsIGNvbmZ1c2lvbiwgd2UgaGF2ZSB0byBtYWtlIHRoZQorICAgICAgIGRlcXVlIGVtcHR5IGJlZm9yZSBjbGVhcmluZyB0aGUgYmxvY2tzIGFuZCBuZXZlciByZWZlciB0bworICAgICAgIGFueXRoaW5nIHZpYSBkZXF1ZS0+cmVmIHdoaWxlIGNsZWFyaW5nLiAgKFRoaXMgaXMgdGhlIHNhbWUKKyAgICAgICB0ZWNobmlxdWUgdXNlZCBmb3IgY2xlYXJpbmcgbGlzdHMsIHNldHMsIGFuZCBkaWN0cy4pCisKKyAgICAgICBNYWtpbmcgdGhlIGRlcXVlIGVtcHR5IHJlcXVpcmVzIGFsbG9jYXRpbmcgYSBuZXcgZW1wdHkgYmxvY2suICBJbgorICAgICAgIHRoZSB1bmxpa2VseSBldmVudCB0aGF0IG1lbW9yeSBpcyBmdWxsLCB3ZSBmYWxsIGJhY2sgdG8gYW4KKyAgICAgICBhbHRlcm5hdGUgbWV0aG9kIHRoYXQgZG9lc24ndCByZXF1aXJlIGEgbmV3IGJsb2NrLiAgUmVwZWF0aW5nCisgICAgICAgcG9wcyBpbiBhIHdoaWxlLWxvb3AgaXMgc2xvd2VyLCBwb3NzaWJseSByZS1lbnRyYW50IChhbmQgYSBjbGV2ZXIKKyAgICAgICBhZHZlcnNhcnkgY291bGQgY2F1c2UgaXQgdG8gbmV2ZXIgdGVybWluYXRlKS4KKyAgICAqLworCisgICAgYiA9IG5ld2Jsb2NrKCk7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBnb3RvIGFsdGVybmF0ZV9tZXRob2Q7CisgICAgfQorCisgICAgLyogUmVtZW1iZXIgdGhlIG9sZCBzaXplLCBsZWZ0YmxvY2ssIGFuZCBsZWZ0aW5kZXggKi8KKyAgICBuID0gUHlfU0laRShkZXF1ZSk7CisgICAgbGVmdGJsb2NrID0gZGVxdWUtPmxlZnRibG9jazsKKyAgICBsZWZ0aW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OworCisgICAgLyogU2V0IHRoZSBkZXF1ZSB0byBiZSBlbXB0eSB1c2luZyB0aGUgbmV3bHkgYWxsb2NhdGVkIGJsb2NrICovCisgICAgTUFSS19FTkQoYi0+bGVmdGxpbmspOworICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CisgICAgUHlfU0laRShkZXF1ZSkgPSAwOworICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOworICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKKyAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKKyAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKKyAgICBkZXF1ZS0+c3RhdGUrKzsKKworICAgIC8qIE5vdyB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCBhcmUgZGlzY29ubmVjdGVkIGZyb20KKyAgICAgICB0aGUgZW1wdHkgZGVxdWUgYW5kIHdlIGNhbiB1c2UgdGhlbSB0byBkZWNyZWYgdGhlIHBvaW50ZXJzLgorICAgICovCisgICAgbSA9IChCTE9DS0xFTiAtIGxlZnRpbmRleCA+IG4pID8gbiA6IEJMT0NLTEVOIC0gbGVmdGluZGV4OworICAgIGl0ZW1wdHIgPSAmbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07CisgICAgbGltaXQgPSBpdGVtcHRyICsgbTsKKyAgICBuIC09IG07CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKGl0ZW1wdHIgPT0gbGltaXQpIHsKKyAgICAgICAgICAgIGlmIChuID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBDSEVDS19OT1RfRU5EKGxlZnRibG9jay0+cmlnaHRsaW5rKTsKKyAgICAgICAgICAgIHByZXZibG9jayA9IGxlZnRibG9jazsKKyAgICAgICAgICAgIGxlZnRibG9jayA9IGxlZnRibG9jay0+cmlnaHRsaW5rOworICAgICAgICAgICAgbSA9IChuID4gQkxPQ0tMRU4pID8gQkxPQ0tMRU4gOiBuOworICAgICAgICAgICAgaXRlbXB0ciA9IGxlZnRibG9jay0+ZGF0YTsKKyAgICAgICAgICAgIGxpbWl0ID0gaXRlbXB0ciArIG07CisgICAgICAgICAgICBuIC09IG07CisgICAgICAgICAgICBmcmVlYmxvY2socHJldmJsb2NrKTsKKyAgICAgICAgfQorICAgICAgICBpdGVtID0gKihpdGVtcHRyKyspOworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgfQorICAgIENIRUNLX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7CisgICAgZnJlZWJsb2NrKGxlZnRibG9jayk7CisgICAgcmV0dXJuOworCisgIGFsdGVybmF0ZV9tZXRob2Q6CisgICAgd2hpbGUgKFB5X1NJWkUoZGVxdWUpKSB7CisgICAgICAgIGl0ZW0gPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOworICAgICAgICBhc3NlcnQgKGl0ZW0gIT0gTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICB9Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXF1ZV9yZXBlYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCitkZXF1ZV9jbGVhcm1ldGhvZChkZXF1ZW9iamVjdCAqZGVxdWUpCiB7Ci0gICAgZGVxdWVvYmplY3QgKm5ld19kZXF1ZTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgLyogWFhYIGFkZCBhIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiBtYXhsZW4gaXMgZGVmaW5lZCAqLwotICAgIGlmIChuIDwgMCkKLSAgICAgICAgbiA9IDA7Ci0gICAgZWxzZSBpZiAobiA+IDAgJiYgUHlfU0laRShkZXF1ZSkgPiBNQVhfREVRVUVfTEVOIC8gbikKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICBuZXdfZGVxdWUgPSAoZGVxdWVvYmplY3QgKilkZXF1ZV9uZXcoJmRlcXVlX3R5cGUsIChQeU9iamVjdCAqKU5VTEwsIChQeU9iamVjdCAqKU5VTEwpOwotICAgIG5ld19kZXF1ZS0+bWF4bGVuID0gZGVxdWUtPm1heGxlbjsKLQotICAgIGZvciAoIDsgbiA7IG4tLSkgewotICAgICAgICByZXN1bHQgPSBkZXF1ZV9leHRlbmQobmV3X2RlcXVlLCAoUHlPYmplY3QgKilkZXF1ZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKG5ld19kZXF1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld19kZXF1ZTsKKyAgICBkZXF1ZV9jbGVhcihkZXF1ZSk7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKK1B5RG9jX1NUUlZBUihjbGVhcl9kb2MsICJSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGRlcXVlLiIpOworCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfaW5wbGFjZV9yZXBlYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIFB5X3NzaXplX3QgaSwgbSwgc2l6ZTsKICAgICBQeU9iamVjdCAqc2VxOwogICAgIFB5T2JqZWN0ICpydjsKIApAQCAtNTgxLDI3ICs2ODUsNDcgQEAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOwogICAgIH0KIAotICAgIGlmIChzaXplID4gTUFYX0RFUVVFX0xFTiAvIG4pIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotCiAgICAgaWYgKHNpemUgPT0gMSkgewogICAgICAgICAvKiBjb21tb24gY2FzZSwgcmVwZWF0aW5nIGEgc2luZ2xlIGVsZW1lbnQgKi8KICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdOwogCi0gICAgICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIG4gPiBkZXF1ZS0+bWF4bGVuKQorICAgICAgICBpZiAoZGVxdWUtPm1heGxlbiA+PSAwICYmIG4gPiBkZXF1ZS0+bWF4bGVuKQogICAgICAgICAgICAgbiA9IGRlcXVlLT5tYXhsZW47CiAKLSAgICAgICAgZm9yIChpID0gMCA7IGkgPCBuLTEgOyBpKyspIHsKLSAgICAgICAgICAgIHJ2ID0gZGVxdWVfYXBwZW5kKGRlcXVlLCBpdGVtKTsKLSAgICAgICAgICAgIGlmIChydiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgICAgIGZvciAoaSA9IDAgOyBpIDwgbi0xIDsgKSB7CisgICAgICAgICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7CisgICAgICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOworICAgICAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfU0laRShkZXF1ZSkgKz0gaTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGItPmxlZnRsaW5rID0gZGVxdWUtPnJpZ2h0YmxvY2s7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRU5EKGRlcXVlLT5yaWdodGJsb2NrLT5yaWdodGxpbmspOworICAgICAgICAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrLT5yaWdodGxpbmsgPSBiOworICAgICAgICAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKKyAgICAgICAgICAgICAgICBNQVJLX0VORChiLT5yaWdodGxpbmspOworICAgICAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtID0gbiAtIDEgLSBpOworICAgICAgICAgICAgaWYgKG0gPiBCTE9DS0xFTiAtIDEgLSBkZXF1ZS0+cmlnaHRpbmRleCkKKyAgICAgICAgICAgICAgICBtID0gQkxPQ0tMRU4gLSAxIC0gZGVxdWUtPnJpZ2h0aW5kZXg7CisgICAgICAgICAgICBpICs9IG07CisgICAgICAgICAgICB3aGlsZSAobS0tKSB7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXgrKzsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBQeV9TSVpFKGRlcXVlKSArPSBpOwogICAgICAgICBQeV9JTkNSRUYoZGVxdWUpOwogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiAgICAgfQogCisgICAgaWYgKChzaXplX3Qpc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gKHNpemVfdCluKSB7CisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KKwogICAgIHNlcSA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilkZXF1ZSk7CiAgICAgaWYgKHNlcSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gc2VxOwpAQCAtNjE5LDYgKzc0MywyMCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX3JlcGVhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKK3sKKyAgICBkZXF1ZW9iamVjdCAqbmV3X2RlcXVlOworICAgIFB5T2JqZWN0ICpydjsKKworICAgIG5ld19kZXF1ZSA9IChkZXF1ZW9iamVjdCAqKWRlcXVlX2NvcHkoKFB5T2JqZWN0ICopIGRlcXVlKTsKKyAgICBpZiAobmV3X2RlcXVlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJ2ID0gZGVxdWVfaW5wbGFjZV9yZXBlYXQobmV3X2RlcXVlLCBuKTsKKyAgICBQeV9ERUNSRUYobmV3X2RlcXVlKTsKKyAgICByZXR1cm4gcnY7Cit9CisKIC8qIFRoZSByb3RhdGUoKSBtZXRob2QgaXMgcGFydCBvZiB0aGUgcHVibGljIEFQSSBhbmQgaXMgdXNlZCBpbnRlcm5hbGx5CiBhcyBhIHByaW1pdGl2ZSBmb3Igb3RoZXIgbWV0aG9kcy4KIApAQCAtNjcxLDcgKzgwOSw3IEBACiAgICAgd2hpbGUgKG4gPiAwKSB7CiAgICAgICAgIGlmIChsZWZ0aW5kZXggPT0gMCkgewogICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGIgPSBuZXdibG9jayhsZW4pOworICAgICAgICAgICAgICAgIGIgPSBuZXdibG9jaygpOwogICAgICAgICAgICAgICAgIGlmIChiID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgIH0KQEAgLTcwMiw3ICs4NDAsNyBAQAogICAgICAgICAgICAgICAgICooZGVzdCsrKSA9ICooc3JjKyspOwogICAgICAgICAgICAgfSB3aGlsZSAoLS1tKTsKICAgICAgICAgfQotICAgICAgICBpZiAocmlnaHRpbmRleCA9PSAtMSkgeworICAgICAgICBpZiAocmlnaHRpbmRleCA8IDApIHsKICAgICAgICAgICAgIGFzc2VydChsZWZ0YmxvY2sgIT0gcmlnaHRibG9jayk7CiAgICAgICAgICAgICBhc3NlcnQoYiA9PSBOVUxMKTsKICAgICAgICAgICAgIGIgPSByaWdodGJsb2NrOwpAQCAtNzE1LDcgKzg1Myw3IEBACiAgICAgd2hpbGUgKG4gPCAwKSB7CiAgICAgICAgIGlmIChyaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgewogICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGIgPSBuZXdibG9jayhsZW4pOworICAgICAgICAgICAgICAgIGIgPSBuZXdibG9jaygpOwogICAgICAgICAgICAgICAgIGlmIChiID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgIH0KQEAgLTc5MCwxMSArOTI4LDExIEBACiAgICAgYmxvY2sgKnJpZ2h0YmxvY2sgPSBkZXF1ZS0+cmlnaHRibG9jazsKICAgICBQeV9zc2l6ZV90IGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgUHlfc3NpemVfdCByaWdodGluZGV4ID0gZGVxdWUtPnJpZ2h0aW5kZXg7Ci0gICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSkgLyAyOwotICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKSA+PiAxOwogICAgIFB5T2JqZWN0ICp0bXA7CiAKLSAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgeworICAgIG4rKzsKKyAgICB3aGlsZSAoLS1uKSB7CiAgICAgICAgIC8qIFZhbGlkYXRlIHRoYXQgcG9pbnRlcnMgaGF2ZW4ndCBtZXQgaW4gdGhlIG1pZGRsZSAqLwogICAgICAgICBhc3NlcnQobGVmdGJsb2NrICE9IHJpZ2h0YmxvY2sgfHwgbGVmdGluZGV4IDwgcmlnaHRpbmRleCk7CiAgICAgICAgIENIRUNLX05PVF9FTkQobGVmdGJsb2NrKTsKQEAgLTgxNCw3ICs5NTIsNyBAQAogCiAgICAgICAgIC8qIFN0ZXAgYmFja3dhcmRzIHdpdGggdGhlIHJpZ2h0IGJsb2NrL2luZGV4IHBhaXIgKi8KICAgICAgICAgcmlnaHRpbmRleC0tOwotICAgICAgICBpZiAocmlnaHRpbmRleCA9PSAtMSkgeworICAgICAgICBpZiAocmlnaHRpbmRleCA8IDApIHsKICAgICAgICAgICAgIHJpZ2h0YmxvY2sgPSByaWdodGJsb2NrLT5sZWZ0bGluazsKICAgICAgICAgICAgIHJpZ2h0aW5kZXggPSBCTE9DS0xFTiAtIDE7CiAgICAgICAgIH0KQEAgLTgzMSwyMCArOTY5LDE5IEBACiAgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpOwotICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKICAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CiAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgaW50IGNtcDsKIAotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CisgICAgbisrOworICAgIHdoaWxlICgtLW4pIHsKICAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKICAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOwogICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXRlbSwgdiwgUHlfRVEpOwotICAgICAgICBpZiAoY21wID4gMCkKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCisgICAgICAgIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNvdW50ICs9IGNtcDsKIAogICAgICAgICBpZiAoc3RhcnRfc3RhdGUgIT0gZGVxdWUtPnN0YXRlKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLApAQCAtODcxLDEyICsxMDA4LDEyIEBACiAgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpOwotICAgIFB5X3NzaXplX3QgaTsKICAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CiAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgaW50IGNtcDsKIAotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CisgICAgbisrOworICAgIHdoaWxlICgtLW4pIHsKICAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKICAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOwogICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXRlbSwgdiwgUHlfRVEpOwpAQCAtOTA2LDExICsxMDQzLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfaW5kZXgoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGksIHN0YXJ0PTAsIHN0b3A9UHlfU0laRShkZXF1ZSk7CisgICAgUHlfc3NpemVfdCBpLCBuLCBzdGFydD0wLCBzdG9wPVB5X1NJWkUoZGVxdWUpOwogICAgIFB5T2JqZWN0ICp2LCAqaXRlbTsKICAgICBibG9jayAqYiA9IGRlcXVlLT5sZWZ0YmxvY2s7CiAgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgc2l6ZV90IHN0YXJ0X3N0YXRlID0gZGVxdWUtPnN0YXRlOworICAgIGludCBjbXA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TyZPJjppbmRleCIsICZ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlFdmFsX1NsaWNlSW5kZXgsICZzdGFydCwKQEAgLTkyOCwyMiArMTA2NiwzMiBAQAogICAgIH0KICAgICBpZiAoc3RvcCA+IFB5X1NJWkUoZGVxdWUpKQogICAgICAgICBzdG9wID0gUHlfU0laRShkZXF1ZSk7CisgICAgaWYgKHN0YXJ0ID4gc3RvcCkKKyAgICAgICAgc3RhcnQgPSBzdG9wOworICAgIGFzc2VydCgwIDw9IHN0YXJ0ICYmIHN0YXJ0IDw9IHN0b3AgJiYgc3RvcCA8PSBQeV9TSVpFKGRlcXVlKSk7CiAKLSAgICBmb3IgKGk9MCA7IGk8c3RvcCA7IGkrKykgewotICAgICAgICBpZiAoaSA+PSBzdGFydCkgewotICAgICAgICAgICAgaW50IGNtcDsKLSAgICAgICAgICAgIENIRUNLX05PVF9FTkQoYik7Ci0gICAgICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07Ci0gICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXRlbSwgdiwgUHlfRVEpOwotICAgICAgICAgICAgaWYgKGNtcCA+IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoc3RhcnRfc3RhdGUgIT0gZGVxdWUtPnN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIG11dGF0ZWQgZHVyaW5nIGl0ZXJhdGlvbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgIC8qIFhYWCBSZXBsYWNlIHRoaXMgbG9vcCB3aXRoIGZhc3RlciBjb2RlIGZyb20gZGVxdWVfaXRlbSgpICovCisgICAgZm9yIChpPTAgOyBpPHN0YXJ0IDsgaSsrKSB7CisgICAgICAgIGluZGV4Kys7CisgICAgICAgIGlmIChpbmRleCA9PSBCTE9DS0xFTikgeworICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG4gPSBzdG9wIC0gaSArIDE7CisgICAgd2hpbGUgKC0tbikgeworICAgICAgICBDSEVDS19OT1RfRU5EKGIpOworICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CisgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7CisgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzdG9wIC0gbik7CisgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIG11dGF0ZWQgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgaWYgKGluZGV4ID09IEJMT0NLTEVOKSB7CkBAIC0xMDM3LDg0ICsxMTg1LDEwIEBACiBQeURvY19TVFJWQVIocmVtb3ZlX2RvYywKICJELnJlbW92ZSh2YWx1ZSkgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuIik7CiAKLXN0YXRpYyB2b2lkCi1kZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpCi17Ci0gICAgYmxvY2sgKmI7Ci0gICAgYmxvY2sgKnByZXZibG9jazsKLSAgICBibG9jayAqbGVmdGJsb2NrOwotICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OwotICAgIFB5X3NzaXplX3QgbjsKLSAgICBQeU9iamVjdCAqaXRlbTsKLQotICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvKiBEdXJpbmcgdGhlIHByb2Nlc3Mgb2YgY2xlYXJpbmcgYSBkZXF1ZSwgZGVjcmVmcyBjYW4gY2F1c2UgdGhlCi0gICAgICAgZGVxdWUgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uLCB3ZSBoYXZlIHRvIG1ha2UgdGhlCi0gICAgICAgZGVxdWUgZW1wdHkgYmVmb3JlIGNsZWFyaW5nIHRoZSBibG9ja3MgYW5kIG5ldmVyIHJlZmVyIHRvCi0gICAgICAgYW55dGhpbmcgdmlhIGRlcXVlLT5yZWYgd2hpbGUgY2xlYXJpbmcuICAoVGhpcyBpcyB0aGUgc2FtZQotICAgICAgIHRlY2huaXF1ZSB1c2VkIGZvciBjbGVhcmluZyBsaXN0cywgc2V0cywgYW5kIGRpY3RzLikKLQotICAgICAgIE1ha2luZyB0aGUgZGVxdWUgZW1wdHkgcmVxdWlyZXMgYWxsb2NhdGluZyBhIG5ldyBlbXB0eSBibG9jay4gIEluCi0gICAgICAgdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgbWVtb3J5IGlzIGZ1bGwsIHdlIGZhbGwgYmFjayB0byBhbgotICAgICAgIGFsdGVybmF0ZSBtZXRob2QgdGhhdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgYmxvY2suICBSZXBlYXRpbmcKLSAgICAgICBwb3BzIGluIGEgd2hpbGUtbG9vcCBpcyBzbG93ZXIsIHBvc3NpYmx5IHJlLWVudHJhbnQgKGFuZCBhIGNsZXZlcgotICAgICAgIGFkdmVyc2FyeSBjb3VsZCBjYXVzZSBpdCB0byBuZXZlciB0ZXJtaW5hdGUpLgotICAgICovCi0KLSAgICBiID0gbmV3YmxvY2soMCk7Ci0gICAgaWYgKGIgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBnb3RvIGFsdGVybmF0ZV9tZXRob2Q7Ci0gICAgfQotCi0gICAgLyogUmVtZW1iZXIgdGhlIG9sZCBzaXplLCBsZWZ0YmxvY2ssIGFuZCBsZWZ0aW5kZXggKi8KLSAgICBsZWZ0YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrOwotICAgIGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7Ci0gICAgbiA9IFB5X1NJWkUoZGVxdWUpOwotCi0gICAgLyogU2V0IHRoZSBkZXF1ZSB0byBiZSBlbXB0eSB1c2luZyB0aGUgbmV3bHkgYWxsb2NhdGVkIGJsb2NrICovCi0gICAgTUFSS19FTkQoYi0+bGVmdGxpbmspOwotICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7Ci0gICAgUHlfU0laRShkZXF1ZSkgPSAwOwotICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOwotICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKLSAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKLSAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKLSAgICBkZXF1ZS0+c3RhdGUrKzsKLQotICAgIC8qIE5vdyB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCBhcmUgZGlzY29ubmVjdGVkIGZyb20KLSAgICAgICB0aGUgZW1wdHkgZGVxdWUgYW5kIHdlIGNhbiB1c2UgdGhlbSB0byBkZWNyZWYgdGhlIHBvaW50ZXJzLgotICAgICovCi0gICAgd2hpbGUgKG4tLSkgewotICAgICAgICBpdGVtID0gbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07Ci0gICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICAgICAgbGVmdGluZGV4Kys7Ci0gICAgICAgIGlmIChsZWZ0aW5kZXggPT0gQkxPQ0tMRU4gJiYgbikgewotICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7Ci0gICAgICAgICAgICBwcmV2YmxvY2sgPSBsZWZ0YmxvY2s7Ci0gICAgICAgICAgICBsZWZ0YmxvY2sgPSBsZWZ0YmxvY2stPnJpZ2h0bGluazsKLSAgICAgICAgICAgIGxlZnRpbmRleCA9IDA7Ci0gICAgICAgICAgICBmcmVlYmxvY2socHJldmJsb2NrKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBDSEVDS19FTkQobGVmdGJsb2NrLT5yaWdodGxpbmspOwotICAgIGZyZWVibG9jayhsZWZ0YmxvY2spOwotICAgIHJldHVybjsKLQotICBhbHRlcm5hdGVfbWV0aG9kOgotICAgIHdoaWxlIChQeV9TSVpFKGRlcXVlKSkgewotICAgICAgICBpdGVtID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKLSAgICAgICAgYXNzZXJ0IChpdGVtICE9IE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgfQotfQotCiBzdGF0aWMgaW50CiB2YWxpZF9pbmRleChQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbGltaXQpCiB7Ci0gICAgLyogVGhlIGNhc3QgdG8gc2l6ZV90IGxldCB1cyB1c2UganVzdCBhIHNpbmdsZSBjb21wYXJpc29uCisgICAgLyogVGhlIGNhc3QgdG8gc2l6ZV90IGxldHMgdXMgdXNlIGp1c3QgYSBzaW5nbGUgY29tcGFyaXNvbgogICAgICAgIHRvIGNoZWNrIHdoZXRoZXIgaSBpcyBpbiB0aGUgcmFuZ2U6IDAgPD0gaSA8IGxpbWl0ICovCiAgICAgcmV0dXJuIChzaXplX3QpIGkgPCAoc2l6ZV90KSBsaW1pdDsKIH0KQEAgLTExNDMsMTQgKzEyMTcsMTYgQEAKICAgICAgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgICAgICBpZiAoaW5kZXggPCAoUHlfU0laRShkZXF1ZSkgPj4gMSkpIHsKICAgICAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwotICAgICAgICAgICAgd2hpbGUgKG4tLSkKKyAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgIHdoaWxlICgtLW4pCiAgICAgICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoCiAgICAgICAgICAgICAgICAgICAgICgoc2l6ZV90KShkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSkKICAgICAgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICAgICAgYiA9IGRlcXVlLT5yaWdodGJsb2NrOwotICAgICAgICAgICAgd2hpbGUgKG4tLSkKKyAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgIHdoaWxlICgtLW4pCiAgICAgICAgICAgICAgICAgYiA9IGItPmxlZnRsaW5rOwogICAgICAgICB9CiAgICAgfQpAQCAtMTE5NCwxNCArMTI3MCwxNiBAQAogICAgIGkgPSAoUHlfc3NpemVfdCkoKHNpemVfdCkgaSAlIEJMT0NLTEVOKTsKICAgICBpZiAoaW5kZXggPD0gaGFsZmxlbikgewogICAgICAgICBiID0gZGVxdWUtPmxlZnRibG9jazsKLSAgICAgICAgd2hpbGUgKG4tLSkKKyAgICAgICAgbisrOworICAgICAgICB3aGlsZSAoLS1uKQogICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKICAgICB9IGVsc2UgewogICAgICAgICBuID0gKFB5X3NzaXplX3QpKAogICAgICAgICAgICAgICAgICgoc2l6ZV90KShkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSkKICAgICAgICAgICAgICAgICAvIEJMT0NLTEVOIC0gbik7CiAgICAgICAgIGIgPSBkZXF1ZS0+cmlnaHRibG9jazsKLSAgICAgICAgd2hpbGUgKG4tLSkKKyAgICAgICAgbisrOworICAgICAgICB3aGlsZSAoLS1uKQogICAgICAgICAgICAgYiA9IGItPmxlZnRsaW5rOwogICAgIH0KICAgICBQeV9JTkNSRUYodik7CkBAIC0xMjExLDE1ICsxMjg5LDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWRlcXVlX2NsZWFybWV0aG9kKGRlcXVlb2JqZWN0ICpkZXF1ZSkKLXsKLSAgICBkZXF1ZV9jbGVhcihkZXF1ZSk7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLVB5RG9jX1NUUlZBUihjbGVhcl9kb2MsICJSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGRlcXVlLiIpOwotCiBzdGF0aWMgdm9pZAogZGVxdWVfZGVhbGxvYyhkZXF1ZW9iamVjdCAqZGVxdWUpCiB7CkBAIC0xMjQzLDYgKzEzMTIsNyBAQAogICAgIFB5T2JqZWN0ICppdGVtOwogICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgUHlfc3NpemVfdCBpbmRleGxvID0gZGVxdWUtPmxlZnRpbmRleDsKKyAgICBQeV9zc2l6ZV90IGluZGV4aGlnaDsKIAogICAgIGZvciAoYiA9IGRlcXVlLT5sZWZ0YmxvY2s7IGIgIT0gZGVxdWUtPnJpZ2h0YmxvY2s7IGIgPSBiLT5yaWdodGxpbmspIHsKICAgICAgICAgZm9yIChpbmRleCA9IGluZGV4bG87IGluZGV4IDwgQkxPQ0tMRU4gOyBpbmRleCsrKSB7CkBAIC0xMjUxLDcgKzEzMjEsOCBAQAogICAgICAgICB9CiAgICAgICAgIGluZGV4bG8gPSAwOwogICAgIH0KLSAgICBmb3IgKGluZGV4ID0gaW5kZXhsbzsgaW5kZXggPD0gZGVxdWUtPnJpZ2h0aW5kZXg7IGluZGV4KyspIHsKKyAgICBpbmRleGhpZ2ggPSBkZXF1ZS0+cmlnaHRpbmRleDsKKyAgICBmb3IgKGluZGV4ID0gaW5kZXhsbzsgaW5kZXggPD0gaW5kZXhoaWdoOyBpbmRleCsrKSB7CiAgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKICAgICAgICAgUHlfVklTSVQoaXRlbSk7CiAgICAgfQpAQCAtMTI1OSw0NSArMTMzMCwzMyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGVxdWVfY29weShQeU9iamVjdCAqZGVxdWUpCi17Ci0gICAgaWYgKCgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbiA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikoUHlfVFlQRShkZXF1ZSkpLCAiTyIsIGRlcXVlLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopKFB5X1RZUEUoZGVxdWUpKSwgIk9pIiwKLSAgICAgICAgICAgIGRlcXVlLCAoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4sIE5VTEwpOwotfQotCi1QeURvY19TVFJWQVIoY29weV9kb2MsICJSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgYSBkZXF1ZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX3JlZHVjZShkZXF1ZW9iamVjdCAqZGVxdWUpCiB7Ci0gICAgUHlPYmplY3QgKmRpY3QsICpyZXN1bHQsICphc2xpc3Q7CisgICAgUHlPYmplY3QgKmRpY3QsICppdDsKICAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKICAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilkZXF1ZSwgJlB5SWRfX19kaWN0X18pOwotICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGFzbGlzdCA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilkZXF1ZSk7Ci0gICAgaWYgKGFzbGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYoZGljdCk7CisgICAgfQorCisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKChQeU9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAoaXQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChkZXF1ZS0+bWF4bGVuID09IC0xKQotICAgICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiTyhPKSIsIFB5X1RZUEUoZGVxdWUpLCBhc2xpc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUoZGVxdWUpLCBhc2xpc3QsIGRlcXVlLT5tYXhsZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChkZXF1ZS0+bWF4bGVuID09IC0xKQotICAgICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiTyhPTylPIiwgUHlfVFlQRShkZXF1ZSksIGFzbGlzdCwgUHlfTm9uZSwgZGljdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk8oT24pTyIsIFB5X1RZUEUoZGVxdWUpLCBhc2xpc3QsIGRlcXVlLT5tYXhsZW4sIGRpY3QpOworCisgICAgaWYgKGRlcXVlLT5tYXhsZW4gPCAwKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKClOTiIsIFB5X1RZUEUoZGVxdWUpLCBkaWN0LCBpdCk7CiAgICAgfQotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgUHlfREVDUkVGKGFzbGlzdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCluKU5OIiwgUHlfVFlQRShkZXF1ZSksIGRlcXVlLT5tYXhsZW4sIGRpY3QsIGl0KTsKKyAgICB9CiB9CiAKIFB5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKQEAgLTEzMjAsNyArMTM3OSw3IEBACiAgICAgICAgIFB5X1JlcHJMZWF2ZShkZXF1ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuICE9IC0xKQorICAgIGlmICgoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4gPj0gMCkKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImRlcXVlKCVSLCBtYXhsZW49JXpkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzbGlzdCwgKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuKTsKICAgICBlbHNlCkBAIC0xMzgxLDcgKzE0NDAsNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICAgICAgUHlfREVDUkVGKHkpOwotICAgICAgICBpZiAoYiA9PSAtMSkKKyAgICAgICAgaWYgKGIgPCAwKQogICAgICAgICAgICAgZ290byBkb25lOwogICAgIH0KICAgICAvKiBXZSByZWFjaGVkIHRoZSBlbmQgb2Ygb25lIGRlcXVlIG9yIGJvdGggKi8KQEAgLTE0MTYsOCArMTQ3NSwxNCBAQAogICAgIFB5X3NzaXplX3QgbWF4bGVuID0gLTE7CiAgICAgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgIm1heGxlbiIsIDB9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkYXJncywgInxPTzpkZXF1ZSIsIGt3bGlzdCwgJml0ZXJhYmxlLCAmbWF4bGVub2JqKSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChrd2RhcmdzID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGVxdWUoKSIsIDAsIDIsICZpdGVyYWJsZSwgJm1heGxlbm9iaikpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkYXJncywgInxPTzpkZXF1ZSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0ZXJhYmxlLCAmbWF4bGVub2JqKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgaWYgKG1heGxlbm9iaiAhPSBOVUxMICYmIG1heGxlbm9iaiAhPSBQeV9Ob25lKSB7CiAgICAgICAgIG1heGxlbiA9IFB5TG9uZ19Bc1NzaXplX3QobWF4bGVub2JqKTsKICAgICAgICAgaWYgKG1heGxlbiA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTQ0Niw3ICsxNTExLDcgQEAKICAgICBQeV9zc2l6ZV90IGJsb2NrczsKIAogICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUoZGVxdWUpKTsKLSAgICBibG9ja3MgPSAoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpICsgQkxPQ0tMRU4gLSAxKSAvIEJMT0NLTEVOOworICAgIGJsb2NrcyA9IChzaXplX3QpKGRlcXVlLT5sZWZ0aW5kZXggKyBQeV9TSVpFKGRlcXVlKSArIEJMT0NLTEVOIC0gMSkgLyBCTE9DS0xFTjsKICAgICBhc3NlcnQoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpIC0gMSA9PQogICAgICAgICAgICAoYmxvY2tzIC0gMSkgKiBCTE9DS0xFTiArIGRlcXVlLT5yaWdodGluZGV4KTsKICAgICByZXMgKz0gYmxvY2tzICogc2l6ZW9mKGJsb2NrKTsKQEAgLTE0NjUsNyArMTUzMCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfZ2V0X21heGxlbihkZXF1ZW9iamVjdCAqZGVxdWUpCiB7Ci0gICAgaWYgKGRlcXVlLT5tYXhsZW4gPT0gLTEpCisgICAgaWYgKGRlcXVlLT5tYXhsZW4gPCAwKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGRlcXVlLT5tYXhsZW4pOwogfQpAQCAtMTgwNiw3ICsxODcxLDcgQEAKICAgICBpdGVtID0gaXQtPmItPmRhdGFbaXQtPmluZGV4XTsKICAgICBpdC0+aW5kZXgtLTsKICAgICBpdC0+Y291bnRlci0tOwotICAgIGlmIChpdC0+aW5kZXggPT0gLTEgJiYgaXQtPmNvdW50ZXIgPiAwKSB7CisgICAgaWYgKGl0LT5pbmRleCA8IDAgJiYgaXQtPmNvdW50ZXIgPiAwKSB7CiAgICAgICAgIENIRUNLX05PVF9FTkQoaXQtPmItPmxlZnRsaW5rKTsKICAgICAgICAgaXQtPmIgPSBpdC0+Yi0+bGVmdGxpbms7CiAgICAgICAgIGl0LT5pbmRleCA9IEJMT0NLTEVOIC0gMTsKQEAgLTE5ODAsNyArMjA0NSw3IEBACiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgZGQtPmRlZmF1bHRfZmFjdG9yeSk7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKWRkLCAmUHlJZF9pdGVtcywgIigpIik7CisgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKWRkLCAmUHlJZF9pdGVtcywgTlVMTCk7CiAgICAgaWYgKGl0ZW1zID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIyMzUsMTMgKzIzMDAsMTMgQEAKIAogICAgICAgICAgICAgb2xkdmFsID0gX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIGhhc2gpOwogICAgICAgICAgICAgaWYgKG9sZHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBvbmUsIGhhc2gpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgb25lLCBoYXNoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbmV3dmFsID0gUHlOdW1iZXJfQWRkKG9sZHZhbCwgb25lKTsKICAgICAgICAgICAgICAgICBpZiAobmV3dmFsID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG5ld3ZhbCwgaGFzaCkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBuZXd2YWwsIGhhc2gpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgICAgIFB5X0NMRUFSKG5ld3ZhbCk7CiAgICAgICAgICAgICB9CkBAIC0yMjY3LDcgKzIzMzIsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKG9sZHZhbCk7CiAgICAgICAgICAgICBpZiAobmV3dmFsID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0SXRlbShtYXBwaW5nLCBrZXksIG5ld3ZhbCkgPT0gLTEpCisgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0SXRlbShtYXBwaW5nLCBrZXksIG5ld3ZhbCkgPCAwKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgUHlfQ0xFQVIobmV3dmFsKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3N2LmMgYi9Nb2R1bGVzL19jc3YuYwppbmRleCBiNDI4Mjc5Li43YTc4NTQxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jc3YuYworKysgYi9Nb2R1bGVzL19jc3YuYwpAQCAtNjAsMTAgKzYwLDEwIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBRdW90ZVN0eWxlIHN0eWxlOwotICAgIGNoYXIgKm5hbWU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKIH0gU3R5bGVEZXNjOwogCi1zdGF0aWMgU3R5bGVEZXNjIHF1b3RlX3N0eWxlc1tdID0geworc3RhdGljIGNvbnN0IFN0eWxlRGVzYyBxdW90ZV9zdHlsZXNbXSA9IHsKICAgICB7IFFVT1RFX01JTklNQUwsICAgICJRVU9URV9NSU5JTUFMIiB9LAogICAgIHsgUVVPVEVfQUxMLCAgICAgICAgIlFVT1RFX0FMTCIgfSwKICAgICB7IFFVT1RFX05PTk5VTUVSSUMsICJRVU9URV9OT05OVU1FUklDIiB9LApAQCAtMjg2LDcgKzI4Niw3IEBACiBzdGF0aWMgaW50CiBkaWFsZWN0X2NoZWNrX3F1b3RpbmcoaW50IHF1b3RpbmcpCiB7Ci0gICAgU3R5bGVEZXNjICpxczsKKyAgICBjb25zdCBTdHlsZURlc2MgKnFzOwogCiAgICAgZm9yIChxcyA9IHF1b3RlX3N0eWxlczsgcXMtPm5hbWU7IHFzKyspIHsKICAgICAgICAgaWYgKChpbnQpcXMtPnN0eWxlID09IHF1b3RpbmcpCkBAIC01MTgsMTUgKzUxOCwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jYWxsX2RpYWxlY3QoUHlPYmplY3QgKmRpYWxlY3RfaW5zdCwgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqY3Rvcl9hcmdzOwotICAgIFB5T2JqZWN0ICpkaWFsZWN0OwotCi0gICAgY3Rvcl9hcmdzID0gUHlfQnVpbGRWYWx1ZShkaWFsZWN0X2luc3QgPyAiKE8pIiA6ICIoKSIsIGRpYWxlY3RfaW5zdCk7Ci0gICAgaWYgKGN0b3JfYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkaWFsZWN0ID0gUHlPYmplY3RfQ2FsbCgoUHlPYmplY3QgKikmRGlhbGVjdF9UeXBlLCBjdG9yX2FyZ3MsIGt3YXJncyk7Ci0gICAgUHlfREVDUkVGKGN0b3JfYXJncyk7Ci0gICAgcmV0dXJuIGRpYWxlY3Q7CisgICAgUHlPYmplY3QgKnR5cGUgPSAoUHlPYmplY3QgKikmRGlhbGVjdF9UeXBlOworICAgIGlmIChkaWFsZWN0X2luc3QpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QodHlwZSwgJmRpYWxlY3RfaW5zdCwgMSwga3dhcmdzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHR5cGUsIE5VTEwsIDAsIGt3YXJncyk7CisgICAgfQogfQogCiAvKgpAQCAtMTY0OCw3ICsxNjQ2LDcgQEAKIFB5SW5pdF9fY3N2KHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm1vZHVsZTsKLSAgICBTdHlsZURlc2MgKnN0eWxlOworICAgIGNvbnN0IFN0eWxlRGVzYyAqc3R5bGU7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZEaWFsZWN0X1R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwppbmRleCAyOTM1MjkyLi5iM2E5NTgxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKQEAgLTExMSwxMiArMTExLDYgQEAKICNpZm5kZWYgSVNfSU5UUkVTT1VSQ0UKICNkZWZpbmUgSVNfSU5UUkVTT1VSQ0UoeCkgKCgoc2l6ZV90KSh4KSA+PiAxNikgPT0gMCkKICNlbmRpZgotIyBpZmRlZiBfV0lOMzJfV0NFCi0vKiBVbmxpa2UgZGVza3RvcCBXaW5kb3dzLCBXaW5DRSBoYXMgYm90aCBXIGFuZCBBIHZhcmlhbnRzIG9mCi0gICBHZXRQcm9jQWRkcmVzcywgYnV0IHRoZSBkZWZhdWx0IFcgdmVyc2lvbiBpcyBub3Qgd2hhdCB3ZSB3YW50ICovCi0jICB1bmRlZiBHZXRQcm9jQWRkcmVzcwotIyAgZGVmaW5lIEdldFByb2NBZGRyZXNzIEdldFByb2NBZGRyZXNzQQotIyBlbmRpZgogI2Vsc2UKICNpbmNsdWRlICJjdHlwZXNfZGxmY24uaCIKICNlbmRpZgpAQCAtNDM1LDcgKzQyOSw3IEBACiAgICAgcmV0dXJuIFN0cnVjdFVuaW9uVHlwZV9uZXcodHlwZSwgYXJncywga3dkcywgMCk7CiB9CiAKLXN0YXRpYyBjaGFyIGZyb21fYWRkcmVzc19kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmcm9tX2FkZHJlc3NfZG9jW10gPQogIkMuZnJvbV9hZGRyZXNzKGludGVnZXIpIC0+IEMgaW5zdGFuY2VcbmFjY2VzcyBhIEMgaW5zdGFuY2UgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ1Myw3ICs0NDcsNyBAQAogICAgIHJldHVybiBQeUNEYXRhX0F0QWRkcmVzcyh0eXBlLCBidWYpOwogfQogCi1zdGF0aWMgY2hhciBmcm9tX2J1ZmZlcl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmcm9tX2J1ZmZlcl9kb2NbXSA9CiAiQy5mcm9tX2J1ZmZlcihvYmplY3QsIG9mZnNldD0wKSAtPiBDIGluc3RhbmNlXG5jcmVhdGUgYSBDIGluc3RhbmNlIGZyb20gYSB3cml0ZWFibGUgYnVmZmVyIjsKIAogc3RhdGljIGludApAQCAtNTI0LDcgKzUxOCw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9idWZmZXJfY29weV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmcm9tX2J1ZmZlcl9jb3B5X2RvY1tdID0KICJDLmZyb21fYnVmZmVyX2NvcHkob2JqZWN0LCBvZmZzZXQ9MCkgLT4gQyBpbnN0YW5jZVxuY3JlYXRlIGEgQyBpbnN0YW5jZSBmcm9tIGEgcmVhZGFibGUgYnVmZmVyIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTU2Niw3ICs1NjAsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBjaGFyIGluX2RsbF9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBpbl9kbGxfZG9jW10gPQogIkMuaW5fZGxsKGRsbCwgbmFtZSkgLT4gQyBpbnN0YW5jZVxuYWNjZXNzIGEgQyBpbnN0YW5jZSBpbiBhIGRsbCI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC02MjMsNyArNjE3LDcgQEAKICAgICByZXR1cm4gUHlDRGF0YV9BdEFkZHJlc3ModHlwZSwgYWRkcmVzcyk7CiB9CiAKLXN0YXRpYyBjaGFyIGZyb21fcGFyYW1fZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9wYXJhbV9kb2NbXSA9CiAiQ29udmVydCBhIFB5dGhvbiBvYmplY3QgaW50byBhIGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVyLiI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNDg5LDcgKzE0ODMsNyBAQAogCiAqLwogCi1zdGF0aWMgY2hhciAqU0lNUExFX1RZUEVfQ0hBUlMgPSAiY2JCaEhpSWxMZGZ1elpxUVBYT3Y/ZyI7CitzdGF0aWMgY29uc3QgY2hhciBTSU1QTEVfVFlQRV9DSEFSU1tdID0gImNiQmhIaUlsTGRmdXpacVFQWE92P2ciOwogCiBzdGF0aWMgUHlPYmplY3QgKgogY193Y2hhcl9wX2Zyb21fcGFyYW0oUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSkKQEAgLTI0MTQsNyArMjQwOCw3IEBACiAgICAgY2hhciAqY3AgPSBzdHJpbmc7CiAgICAgc2l6ZV90IGJ5dGVzX2xlZnQ7CiAKLSAgICBhc3NlcnQoc2l6ZW9mKHN0cmluZykgLSAxID4gc2l6ZW9mKFB5X3NzaXplX3QpICogMik7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihzdHJpbmcpIC0gMSA+IHNpemVvZihQeV9zc2l6ZV90KSAqIDIpOwogICAgIGNwICs9IHNwcmludGYoY3AsICIleCIsIFB5X1NBRkVfRE9XTkNBU1QoaW5kZXgsIFB5X3NzaXplX3QsIGludCkpOwogICAgIHdoaWxlICh0YXJnZXQtPmJfYmFzZSkgewogICAgICAgICBieXRlc19sZWZ0ID0gc2l6ZW9mKHN0cmluZykgLSAoY3AgLSBzdHJpbmcpIC0gMTsKQEAgLTMwNzUsNyArMzA2OSw3IEBACiB9OwogCiAjaWZkZWYgTVNfV0lOMzIKLXN0YXRpYyBQUFJPQyBGaW5kQWRkcmVzcyh2b2lkICpoYW5kbGUsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp0eXBlKQorc3RhdGljIFBQUk9DIEZpbmRBZGRyZXNzKHZvaWQgKmhhbmRsZSwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnR5cGUpCiB7CiAjaWZkZWYgTVNfV0lONjQKICAgICAvKiB3aW42NCBoYXMgbm8gc3RkY2FsbCBjYWxsaW5nIGNvbnYsIHNvIGl0IHNob3VsZApAQCAtMzIwOSw3ICszMjAzLDcgQEAKIH0KIAogc3RhdGljIGludAotX2dldF9uYW1lKFB5T2JqZWN0ICpvYmosIGNoYXIgKipwbmFtZSkKK19nZXRfbmFtZShQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICoqcG5hbWUpCiB7CiAjaWZkZWYgTVNfV0lOMzIKICAgICBpZiAoUHlMb25nX0NoZWNrKG9iaikpIHsKQEAgLTMyMzcsNyArMzIzMSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogUHlDRnVuY1B0cl9Gcm9tRGxsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICBpbnQgKCogYWRkcmVzcykodm9pZCk7CiAgICAgUHlPYmplY3QgKmZ0dXBsZTsKICAgICBQeU9iamVjdCAqZGxsOwpAQCAtNTEyNywxMyArNTEyMSwxMiBAQAogCiAjaWZkZWYgTVNfV0lOMzIKIAotc3RhdGljIGNoYXIgY29tZXJyb3JfZG9jW10gPSAiUmFpc2VkIHdoZW4gYSBDT00gbWV0aG9kIGNhbGwgZmFpbGVkLiI7CitzdGF0aWMgY29uc3QgY2hhciBjb21lcnJvcl9kb2NbXSA9ICJSYWlzZWQgd2hlbiBhIENPTSBtZXRob2QgY2FsbCBmYWlsZWQuIjsKIAogaW50CiBjb21lcnJvcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKmhyZXN1bHQsICp0ZXh0LCAqZGV0YWlsczsKLSAgICBQeUJhc2VFeGNlcHRpb25PYmplY3QgKmJzZWxmOwogICAgIFB5T2JqZWN0ICphOwogICAgIGludCBzdGF0dXM7CiAKQEAgLTUxNjAsOSArNTE1Myw4IEBACiAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoc2VsZiwgImRldGFpbHMiLCBkZXRhaWxzKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGJzZWxmID0gKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGY7CiAgICAgUHlfSU5DUkVGKGFyZ3MpOwotICAgIFB5X1NFVFJFRihic2VsZi0+YXJncywgYXJncyk7CisgICAgUHlfU0VUUkVGKCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmFyZ3MsIGFyZ3MpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC01NDkyLDE0ICs1NDg0LDE0IEBACiAjZW5kaWYKIAogLyogSWYgUlRMRF9MT0NBTCBpcyBub3QgZGVmaW5lZCAoV2luZG93cyEpLCBzZXQgaXQgdG8gemVyby4gKi8KLSNpZm5kZWYgUlRMRF9MT0NBTAorI2lmICFIQVZFX0RFQ0xfUlRMRF9MT0NBTAogI2RlZmluZSBSVExEX0xPQ0FMIDAKICNlbmRpZgogCiAvKiBJZiBSVExEX0dMT0JBTCBpcyBub3QgZGVmaW5lZCAoY3lnd2luKSwgc2V0IGl0IHRvIHRoZSBzYW1lIHZhbHVlIGFzCiAgICBSVExEX0xPQ0FMLgogKi8KLSNpZm5kZWYgUlRMRF9HTE9CQUwKKyNpZiAhSEFWRV9ERUNMX1JUTERfR0xPQkFMCiAjZGVmaW5lIFJUTERfR0xPQkFMIFJUTERfTE9DQUwKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMKaW5kZXggM2M3Zjg5Mi4uNjI5ZGRmNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYwpAQCAtMjMzLDE2ICsyMzMsMTUgQEAKICAgICByZXR1cm4gKCpmdW5jKSh0YWJsZSk7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotRVhQT1JUKFBZX0xPTkdfTE9ORykgX3Rlc3RmdW5jX3FfYmhpbGZkcShzaWduZWQgY2hhciBiLCBzaG9ydCBoLCBpbnQgaSwgbG9uZyBsLCBmbG9hdCBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkLCBQWV9MT05HX0xPTkcgcSkKK0VYUE9SVChsb25nIGxvbmcpIF90ZXN0ZnVuY19xX2JoaWxmZHEoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGQsIGxvbmcgbG9uZyBxKQogewotICAgIHJldHVybiAoUFlfTE9OR19MT05HKShiICsgaCArIGkgKyBsICsgZiArIGQgKyBxKTsKKyAgICByZXR1cm4gKGxvbmcgbG9uZykoYiArIGggKyBpICsgbCArIGYgKyBkICsgcSk7CiB9CiAKLUVYUE9SVChQWV9MT05HX0xPTkcpIF90ZXN0ZnVuY19xX2JoaWxmZChzaWduZWQgY2hhciBiLCBzaG9ydCBoLCBpbnQgaSwgbG9uZyBsLCBmbG9hdCBmLCBkb3VibGUgZCkKK0VYUE9SVChsb25nIGxvbmcpIF90ZXN0ZnVuY19xX2JoaWxmZChzaWduZWQgY2hhciBiLCBzaG9ydCBoLCBpbnQgaSwgbG9uZyBsLCBmbG9hdCBmLCBkb3VibGUgZCkKIHsKLSAgICByZXR1cm4gKFBZX0xPTkdfTE9ORykoYiArIGggKyBpICsgbCArIGYgKyBkKTsKKyAgICByZXR1cm4gKGxvbmcgbG9uZykoYiArIGggKyBpICsgbCArIGYgKyBkKTsKIH0KIAogRVhQT1JUKGludCkgX3Rlc3RmdW5jX2NhbGxiYWNrX2lfaWYoaW50IHZhbHVlLCBpbnQgKCpmdW5jKShpbnQpKQpAQCAtMjU1LDEwICsyNTQsMTAgQEAKICAgICByZXR1cm4gc3VtOwogfQogCi1FWFBPUlQoUFlfTE9OR19MT05HKSBfdGVzdGZ1bmNfY2FsbGJhY2tfcV9xZihQWV9MT05HX0xPTkcgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9MT05HX0xPTkcgKCpmdW5jKShQWV9MT05HX0xPTkcpKQorRVhQT1JUKGxvbmcgbG9uZykgX3Rlc3RmdW5jX2NhbGxiYWNrX3FfcWYobG9uZyBsb25nIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nICgqZnVuYykobG9uZyBsb25nKSkKIHsKLSAgICBQWV9MT05HX0xPTkcgc3VtID0gMDsKKyAgICBsb25nIGxvbmcgc3VtID0gMDsKIAogICAgIHdoaWxlICh2YWx1ZSAhPSAwKSB7CiAgICAgICAgIHN1bSArPSBmdW5jKHZhbHVlKTsKQEAgLTI2Nyw4ICsyNjYsNiBAQAogICAgIHJldHVybiBzdW07CiB9CiAKLSNlbmRpZgotCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgY2hhciAqbmFtZTsKICAgICBjaGFyICp2YWx1ZTsKQEAgLTM4NCw4ICszODEsOCBAQAogewogfQogCi1FWFBPUlQoUFlfTE9OR19MT05HKSBsYXN0X3RmX2FyZ19zOwotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgbGFzdF90Zl9hcmdfdTsKK0VYUE9SVChsb25nIGxvbmcpIGxhc3RfdGZfYXJnX3M7CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSBsYXN0X3RmX2FyZ191OwogCiBzdHJ1Y3QgQklUUyB7CiAgICAgaW50IEE6IDEsIEI6MiwgQzozLCBEOjQsIEU6IDUsIEY6IDYsIEc6IDcsIEg6IDgsIEk6IDk7CkBAIC00NDgsOCArNDQ1LDggQEAKICAgICB7IE5VTEwsIE5VTEwsIDAsIE5VTEx9LAogfTsKIAotI2RlZmluZSBTIGxhc3RfdGZfYXJnX3MgPSAoUFlfTE9OR19MT05HKWMKLSNkZWZpbmUgVSBsYXN0X3RmX2FyZ191ID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyljCisjZGVmaW5lIFMgbGFzdF90Zl9hcmdfcyA9IChsb25nIGxvbmcpYworI2RlZmluZSBVIGxhc3RfdGZfYXJnX3UgPSAodW5zaWduZWQgbG9uZyBsb25nKWMKIAogRVhQT1JUKHNpZ25lZCBjaGFyKSB0Zl9iKHNpZ25lZCBjaGFyIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGNoYXIpIHRmX0IodW5zaWduZWQgY2hhciBjKSB7IFU7IHJldHVybiBjLzM7IH0KQEAgLTQ1OSw4ICs0NTYsOCBAQAogRVhQT1JUKHVuc2lnbmVkIGludCkgdGZfSSh1bnNpZ25lZCBpbnQgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZykgdGZfbChsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGxvbmcpIHRmX0wodW5zaWduZWQgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KLUVYUE9SVChQWV9MT05HX0xPTkcpIHRmX3EoUFlfTE9OR19MT05HIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgdGZfUSh1bnNpZ25lZCBQWV9MT05HX0xPTkcgYykgeyBVOyByZXR1cm4gYy8zOyB9CitFWFBPUlQobG9uZyBsb25nKSB0Zl9xKGxvbmcgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIHRmX1EodW5zaWduZWQgbG9uZyBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGZsb2F0KSB0Zl9mKGZsb2F0IGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGRvdWJsZSkgdGZfZChkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZyBkb3VibGUpIHRmX0QobG9uZyBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CkBAIC00NzQsOCArNDcxLDggQEAKIEVYUE9SVCh1bnNpZ25lZCBpbnQpIF9fc3RkY2FsbCBzX3RmX0kodW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIF9fc3RkY2FsbCBzX3RmX2wobG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSBfX3N0ZGNhbGwgc190Zl9MKHVuc2lnbmVkIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQoUFlfTE9OR19MT05HKSBfX3N0ZGNhbGwgc190Zl9xKFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIF9fc3RkY2FsbCBzX3RmX1EodW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfcShsb25nIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSBfX3N0ZGNhbGwgc190Zl9RKHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgX19zdGRjYWxsIHNfdGZfZihmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIF9fc3RkY2FsbCBzX3RmX2QoZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcgZG91YmxlKSBfX3N0ZGNhbGwgc190Zl9EKGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpAQCAtNDkwLDggKzQ4Nyw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSB0Zl9iSShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBpbnQgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZykgdGZfYmwoc2lnbmVkIGNoYXIgeCwgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSB0Zl9iTChzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgdGZfYnEoc2lnbmVkIGNoYXIgeCwgUFlfTE9OR19MT05HIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgdGZfYnEoc2lnbmVkIGNoYXIgeCwgbG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGZsb2F0KSB0Zl9iZihzaWduZWQgY2hhciB4LCBmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIHRmX2JkKHNpZ25lZCBjaGFyIHgsIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgdGZfYkQoc2lnbmVkIGNoYXIgeCwgbG9uZyBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CkBAIC01MDYsOCArNTAzLDggQEAKIEVYUE9SVCh1bnNpZ25lZCBpbnQpIF9fc3RkY2FsbCBzX3RmX2JJKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGludCBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nKSBfX3N0ZGNhbGwgc190Zl9ibChzaWduZWQgY2hhciB4LCBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGxvbmcpIF9fc3RkY2FsbCBzX3RmX2JMKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQoUFlfTE9OR19MT05HKSBfX3N0ZGNhbGwgc190Zl9icShzaWduZWQgY2hhciB4LCBQWV9MT05HX0xPTkcgYykgeyBTOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSBfX3N0ZGNhbGwgc190Zl9iUShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYykgeyBVOyByZXR1cm4gYy8zOyB9CitFWFBPUlQobG9uZyBsb25nKSBfX3N0ZGNhbGwgc190Zl9icShzaWduZWQgY2hhciB4LCBsb25nIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSBfX3N0ZGNhbGwgc190Zl9iUShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBsb25nIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZmxvYXQpIF9fc3RkY2FsbCBzX3RmX2JmKHNpZ25lZCBjaGFyIHgsIGZsb2F0IGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfYmQoc2lnbmVkIGNoYXIgeCwgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcgZG91YmxlKSBfX3N0ZGNhbGwgc190Zl9iRChzaWduZWQgY2hhciB4LCBsb25nIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYwppbmRleCA5MTQxM2Q3Li5iOTU4ZjMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jCkBAIC03Nyw3ICs3Nyw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyB2b2lkCi1QcmludEVycm9yKGNoYXIgKm1zZywgLi4uKQorUHJpbnRFcnJvcihjb25zdCBjaGFyICptc2csIC4uLikKIHsKICAgICBjaGFyIGJ1Zls1MTJdOwogICAgIFB5T2JqZWN0ICpmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKaW5kZXggMzBlM2E5Ni4uZDMwNDRmMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKQEAgLTM4Miw3ICszODIsNyBAQAogICAgICAgICAgICB3aG9zZSBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQKICAgICAgICAgICAgbWFjaGluZSBtb2RlLiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IHByaXZpbGVkZ2VkIGluc3RydWN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uOiBwcml2aWxlZ2VkIGluc3RydWN0aW9uIik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBFWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OOgpAQCAtNDc0LDcgKzQ3NCw2IEBACiAgICAgICAgICAgICBzZWxmLT50YWcsIHNlbGYtPnZhbHVlLmwpOwogICAgICAgICBicmVhazsKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSAncSc6CiAgICAgY2FzZSAnUSc6CiAgICAgICAgIHNwcmludGYoYnVmZmVyLApAQCAtNDg1LDcgKzQ4NCw2IEBACiAjZW5kaWYKICAgICAgICAgICAgIHNlbGYtPnRhZywgc2VsZi0+dmFsdWUucSk7CiAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgY2FzZSAnZCc6CiAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiPGNwYXJhbSAnJWMnICglZik+IiwKICAgICAgICAgICAgIHNlbGYtPnRhZywgc2VsZi0+dmFsdWUuZCk7CkBAIC01OTMsOSArNTkxLDcgQEAKICAgICBzaG9ydCBoOwogICAgIGludCBpOwogICAgIGxvbmcgbDsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyBxOwotI2VuZGlmCisgICAgbG9uZyBsb25nIHE7CiAgICAgbG9uZyBkb3VibGUgRDsKICAgICBkb3VibGUgZDsKICAgICBmbG9hdCBmOwpAQCAtOTMwLDcgKzkyNiw3IEBACiAgKiBSYWlzZSBhIG5ldyBleGNlcHRpb24gJ2V4Y19jbGFzcycsIGFkZGluZyBhZGRpdGlvbmFsIHRleHQgdG8gdGhlIG9yaWdpbmFsCiAgKiBleGNlcHRpb24gc3RyaW5nLgogICovCi12b2lkIF9jdHlwZXNfZXh0ZW5kX2Vycm9yKFB5T2JqZWN0ICpleGNfY2xhc3MsIGNoYXIgKmZtdCwgLi4uKQordm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjb25zdCBjaGFyICpmbXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhcmdzOwogICAgIFB5T2JqZWN0ICp0cCwgKnYsICp0YiwgKnMsICpjbHNfc3RyLCAqbXNnX3N0cjsKQEAgLTEyMDMsNyArMTE5OSw3IEBACiAKICNpZmRlZiBNU19XSU4zMgogCi1zdGF0aWMgY2hhciBmb3JtYXRfZXJyb3JfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZm9ybWF0X2Vycm9yX2RvY1tdID0KICJGb3JtYXRFcnJvcihbaW50ZWdlcl0pIC0+IHN0cmluZ1xuXAogXG5cCiBDb252ZXJ0IGEgd2luMzIgZXJyb3IgY29kZSBpbnRvIGEgc3RyaW5nLiBJZiB0aGUgZXJyb3IgY29kZSBpcyBub3RcblwKQEAgLTEyMjcsNyArMTIyMyw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGNoYXIgbG9hZF9saWJyYXJ5X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGxvYWRfbGlicmFyeV9kb2NbXSA9CiAiTG9hZExpYnJhcnkobmFtZSkgLT4gaGFuZGxlXG5cCiBcblwKIExvYWQgYW4gZXhlY3V0YWJsZSAodXN1YWxseSBhIERMTCksIGFuZCByZXR1cm4gYSBoYW5kbGUgdG8gaXQuXG5cCkBAIC0xMjU2LDcgKzEyNTIsNyBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBjaGFyIGZyZWVfbGlicmFyeV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmcmVlX2xpYnJhcnlfZG9jW10gPQogIkZyZWVMaWJyYXJ5KGhhbmRsZSkgLT4gdm9pZFxuXAogXG5cCiBGcmVlIHRoZSBoYW5kbGUgb2YgYW4gZXhlY3V0YWJsZSBwcmV2aW91c2x5IGxvYWRlZCBieSBMb2FkTGlicmFyeS5cbiI7CkBAIC0xMjcxLDcgKzEyNjcsNyBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1zdGF0aWMgY2hhciBjb3B5X2NvbV9wb2ludGVyX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvcHlfY29tX3BvaW50ZXJfZG9jW10gPQogIkNvcHlDb21Qb2ludGVyKHNyYywgZHN0KSAtPiBIUkVTVUxUIHZhbHVlXG4iOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTMwOSw3ICsxMzA1LDcgQEAKICAgICBQeU9iamVjdCAqbmFtZSwgKm5hbWUyOwogICAgIGNoYXIgKm5hbWVfc3RyOwogICAgIHZvaWQgKiBoYW5kbGU7Ci0jaWZkZWYgUlRMRF9MT0NBTAorI2lmIEhBVkVfREVDTF9SVExEX0xPQ0FMCiAgICAgaW50IG1vZGUgPSBSVExEX05PVyB8IFJUTERfTE9DQUw7CiAjZWxzZQogICAgIC8qIGN5Z3dpbiBkb2Vzbid0IGRlZmluZSBSVExEX0xPQ0FMICovCkBAIC0xNDQxLDcgKzE0MzcsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBmdW5jdGlvbnMKICAqLwotc3RhdGljIGNoYXIgc2l6ZW9mX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHNpemVvZl9kb2NbXSA9CiAic2l6ZW9mKEMgdHlwZSkgLT4gaW50ZWdlclxuIgogInNpemVvZihDIGluc3RhbmNlKSAtPiBpbnRlZ2VyXG4iCiAiUmV0dXJuIHRoZSBzaXplIGluIGJ5dGVzIG9mIGEgQyBpbnN0YW5jZSI7CkBAIC0xNDYyLDcgKzE0NTgsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgY2hhciBhbGlnbm1lbnRfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgYWxpZ25tZW50X2RvY1tdID0KICJhbGlnbm1lbnQoQyB0eXBlKSAtPiBpbnRlZ2VyXG4iCiAiYWxpZ25tZW50KEMgaW5zdGFuY2UpIC0+IGludGVnZXJcbiIKICJSZXR1cm4gdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYSBDIGluc3RhbmNlIjsKQEAgLTE0ODUsNyArMTQ4MSw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyIGJ5cmVmX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGJ5cmVmX2RvY1tdID0KICJieXJlZihDIGluc3RhbmNlWywgb2Zmc2V0PTBdKSAtPiBieXJlZi1vYmplY3RcbiIKICJSZXR1cm4gYSBwb2ludGVyIGxvb2thbGlrZSB0byBhIEMgaW5zdGFuY2UsIG9ubHkgdXNhYmxlXG4iCiAiYXMgZnVuY3Rpb24gYXJndW1lbnQiOwpAQCAtMTUyOSw3ICsxNTI1LDcgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopcGFyZzsKIH0KIAotc3RhdGljIGNoYXIgYWRkcmVzc29mX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGFkZHJlc3NvZl9kb2NbXSA9CiAiYWRkcmVzc29mKEMgaW5zdGFuY2UpIC0+IGludGVnZXJcbiIKICJSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIEMgaW5zdGFuY2UgaW50ZXJuYWwgYnVmZmVyIjsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCmluZGV4IGQ2NjZiZTUuLmE0MzU4NWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKQEAgLTM3OSwxNCArMzc5LDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBQWV9MT05HX0xPTkcgKnApCitnZXRfbG9uZ2xvbmcoUHlPYmplY3QgKnYsIGxvbmcgbG9uZyAqcCkKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBpZiAoUHlGbG9hdF9DaGVjayh2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludCBleHBlY3RlZCBpbnN0ZWFkIG9mIGZsb2F0Iik7CkBAIC00MDIsMjMgKzQwMCwyMSBAQAogLyogU2FtZSwgYnV0IGhhbmRsaW5nIG5hdGl2ZSB1bnNpZ25lZCBsb25nIGxvbmcuICovCiAKIHN0YXRpYyBpbnQKLWdldF91bG9uZ2xvbmcoUHlPYmplY3QgKnYsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqcCkKK2dldF91bG9uZ2xvbmcoUHlPYmplY3QgKnYsIHVuc2lnbmVkIGxvbmcgbG9uZyAqcCkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBpZiAoUHlGbG9hdF9DaGVjayh2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludCBleHBlY3RlZCBpbnN0ZWFkIG9mIGZsb2F0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKHYpOwotICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoeCA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICAqcCA9IHg7CiAgICAgcmV0dXJuIDA7CiB9CiAKLSNlbmRpZgotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEludGVnZXIgZmllbGRzLCB3aXRoIGJpdGZpZWxkIHN1cHBvcnQKICAqLwpAQCAtNzE1LDE0ICs3MTEsNiBAQAogfQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0M5OV9CT09MCi0jZGVmaW5lIEJPT0xfVFlQRSBfQm9vbAotI2Vsc2UKLSNkZWZpbmUgQk9PTF9UWVBFIGNoYXIKLSN1bmRlZiBTSVpFT0ZfX0JPT0wKLSNkZWZpbmUgU0laRU9GX19CT09MIDEKLSNlbmRpZgotCiBzdGF0aWMgUHlPYmplY3QgKgogYm9vbF9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKQEAgLTczMCwxMCArNzE4LDEwIEBACiAgICAgY2FzZSAtMToKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY2FzZSAwOgotICAgICAgICAqKEJPT0xfVFlQRSAqKXB0ciA9IDA7CisgICAgICAgICooX0Jvb2wgKilwdHIgPSAwOwogICAgICAgICBfUkVUKHZhbHVlKTsKICAgICBkZWZhdWx0OgotICAgICAgICAqKEJPT0xfVFlQRSAqKXB0ciA9IDE7CisgICAgICAgICooX0Jvb2wgKilwdHIgPSAxOwogICAgICAgICBfUkVUKHZhbHVlKTsKICAgICB9CiB9CkBAIC03NDEsNyArNzI5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBib29sX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSooQk9PTF9UWVBFICopcHRyKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSooX0Jvb2wgKilwdHIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtODg4LDE2ICs4NzYsMTUgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcodmFsKTsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiBzdGF0aWMgUHlPYmplY3QgKgogcV9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOwotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB2YWw7CisgICAgbG9uZyBsb25nIHg7CiAgICAgaWYgKGdldF9sb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJngsIHB0ciwgc2l6ZW9mKHgpKTsKLSAgICB4ID0gU0VUKFBZX0xPTkdfTE9ORywgeCwgdmFsLCBzaXplKTsKKyAgICB4ID0gU0VUKGxvbmcgbG9uZywgeCwgdmFsLCBzaXplKTsKICAgICBtZW1jcHkocHRyLCAmeCwgc2l6ZW9mKHgpKTsKICAgICBfUkVUKHZhbHVlKTsKIH0KQEAgLTkwNSwxMyArODkyLDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcV9zZXRfc3codm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOwotICAgIFBZX0xPTkdfTE9ORyBmaWVsZDsKKyAgICBsb25nIGxvbmcgdmFsOworICAgIGxvbmcgbG9uZyBmaWVsZDsKICAgICBpZiAoZ2V0X2xvbmdsb25nKHZhbHVlLCAmdmFsKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG1lbWNweSgmZmllbGQsIHB0ciwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwotICAgIGZpZWxkID0gU0VUKFBZX0xPTkdfTE9ORywgZmllbGQsIHZhbCwgc2l6ZSk7CisgICAgZmllbGQgPSBTRVQobG9uZyBsb25nLCBmaWVsZCwgdmFsLCBzaXplKTsKICAgICBmaWVsZCA9IFNXQVBfOChmaWVsZCk7CiAgICAgbWVtY3B5KHB0ciwgJmZpZWxkLCBzaXplb2YoZmllbGQpKTsKICAgICBfUkVUKHZhbHVlKTsKQEAgLTkyMCw3ICs5MDcsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHFfZ2V0KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgbG9uZyBsb25nIHZhbDsKICAgICBtZW1jcHkoJnZhbCwgcHRyLCBzaXplb2YodmFsKSk7CiAgICAgR0VUX0JJVEZJRUxEKHZhbCwgc2l6ZSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcodmFsKTsKQEAgLTkyOSw3ICs5MTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHFfZ2V0X3N3KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgbG9uZyBsb25nIHZhbDsKICAgICBtZW1jcHkoJnZhbCwgcHRyLCBzaXplb2YodmFsKSk7CiAgICAgdmFsID0gU1dBUF84KHZhbCk7CiAgICAgR0VUX0JJVEZJRUxEKHZhbCwgc2l6ZSk7CkBAIC05MzksMTIgKzkyNiwxMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFFfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfdWxvbmdsb25nKHZhbHVlLCAmdmFsKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG1lbWNweSgmeCwgcHRyLCBzaXplb2YoeCkpOwotICAgIHggPSBTRVQoUFlfTE9OR19MT05HLCB4LCB2YWwsIHNpemUpOworICAgIHggPSBTRVQobG9uZyBsb25nLCB4LCB2YWwsIHNpemUpOwogICAgIG1lbWNweShwdHIsICZ4LCBzaXplb2YoeCkpOwogICAgIF9SRVQodmFsdWUpOwogfQpAQCAtOTUyLDEzICs5MzksMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX3NldF9zdyh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGZpZWxkOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGZpZWxkOwogICAgIGlmIChnZXRfdWxvbmdsb25nKHZhbHVlLCAmdmFsKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG1lbWNweSgmZmllbGQsIHB0ciwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwotICAgIGZpZWxkID0gU0VUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORywgZmllbGQsIHZhbCwgc2l6ZSk7CisgICAgZmllbGQgPSBTRVQodW5zaWduZWQgbG9uZyBsb25nLCBmaWVsZCwgdmFsLCBzaXplKTsKICAgICBmaWVsZCA9IFNXQVBfOChmaWVsZCk7CiAgICAgbWVtY3B5KHB0ciwgJmZpZWxkLCBzaXplb2YoZmllbGQpKTsKICAgICBfUkVUKHZhbHVlKTsKQEAgLTk2Nyw3ICs5NTQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFFfZ2V0KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKICAgICBtZW1jcHkoJnZhbCwgcHRyLCBzaXplb2YodmFsKSk7CiAgICAgR0VUX0JJVEZJRUxEKHZhbCwgc2l6ZSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWwpOwpAQCAtOTc2LDEzICs5NjMsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX2dldF9zdyh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIHZhbCA9IFNXQVBfOCh2YWwpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsKTsKIH0KLSNlbmRpZgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIG5vbi1pbnRlZ2VyIGFjY2Vzc29yIG1ldGhvZHMsIG5vdCBzdXBwb3J0aW5nIGJpdCBmaWVsZHMKQEAgLTE0OTAsMTAgKzE0NzYsOCBAQAogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKICAgICB2ID0gKHZvaWQgKilQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKHZhbHVlKTsKICNlbHNlCi0jaWZuZGVmIEhBVkVfTE9OR19MT05HCi0jICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZih2b2lkKikgPiBzaXplb2YobG9uZyksIGJ1dCBubyBsb25nIGxvbmciCi0jZWxpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YoUFlfTE9OR19MT05HKSA8IHNpemVvZih2b2lkKikiCisjaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKKyMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKGxvbmcgbG9uZykgPCBzaXplb2Yodm9pZCopIgogI2VuZGlmCiAgICAgdiA9ICh2b2lkICopUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sodmFsdWUpOwogI2VuZGlmCkBAIC0xNTM4LDE0ICsxNTIyLDEyIEBACiAjZWxzZQogIyBlcnJvcgogI2VuZGlmCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICNpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKICAgICB7ICdxJywgcV9zZXQsIHFfZ2V0LCAmZmZpX3R5cGVfc2ludDY0LCBxX3NldF9zdywgcV9nZXRfc3d9LAogICAgIHsgJ1EnLCBRX3NldCwgUV9nZXQsICZmZmlfdHlwZV91aW50NjQsIFFfc2V0X3N3LCBRX2dldF9zd30sCiAjZWxzZQogIyBlcnJvcgogI2VuZGlmCi0jZW5kaWYKICAgICB7ICdQJywgUF9zZXQsIFBfZ2V0LCAmZmZpX3R5cGVfcG9pbnRlcn0sCiAgICAgeyAneicsIHpfc2V0LCB6X2dldCwgJmZmaV90eXBlX3BvaW50ZXJ9LAogI2lmZGVmIENUWVBFU19VTklDT0RFCkBAIC0xNjM1LDEwICsxNjE3LDggQEAKICNlbmRpZgogKi8KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi10eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgUFlfTE9OR19MT05HIHg7IH0gc19sb25nX2xvbmc7Ci0jZGVmaW5lIExPTkdfTE9OR19BTElHTiAoc2l6ZW9mKHNfbG9uZ19sb25nKSAtIHNpemVvZihQWV9MT05HX0xPTkcpKQotI2VuZGlmCit0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgbG9uZyBsb25nIHg7IH0gc19sb25nX2xvbmc7CisjZGVmaW5lIExPTkdfTE9OR19BTElHTiAoc2l6ZW9mKHNfbG9uZ19sb25nKSAtIHNpemVvZihsb25nIGxvbmcpKQogCiAvKiBmcm9tIGZmaS5oOgogdHlwZWRlZiBzdHJ1Y3QgX2ZmaV90eXBlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmggYi9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmgKaW5kZXggZjJkZjVjMC4uNWQzYjk2NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaApAQCAtMzEsOSArMzEsNyBAQAogICAgICAgICAgICAgICAgIGxvbmcgbDsKICAgICAgICAgICAgICAgICBmbG9hdCBmOwogICAgICAgICAgICAgICAgIGRvdWJsZSBkOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgUFlfTE9OR19MT05HIGxsOwotI2VuZGlmCisgICAgICAgICAgICAgICAgbG9uZyBsb25nIGxsOwogICAgICAgICAgICAgICAgIGxvbmcgZG91YmxlIEQ7CiB9OwogCkBAIC0zMDMsOSArMzAxLDcgQEAKICAgICAgICAgc2hvcnQgaDsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGxvbmcgbDsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICBQWV9MT05HX0xPTkcgcTsKLSNlbmRpZgorICAgICAgICBsb25nIGxvbmcgcTsKICAgICAgICAgbG9uZyBkb3VibGUgRDsKICAgICAgICAgZG91YmxlIGQ7CiAgICAgICAgIGZsb2F0IGY7CkBAIC0zMjcsNyArMzIzLDcgQEAKIFB5Q0RhdGFfc2V0KFB5T2JqZWN0ICpkc3QsIFB5T2JqZWN0ICp0eXBlLCBTRVRGVU5DIHNldGZ1bmMsIFB5T2JqZWN0ICp2YWx1ZSwKICAgICAgICAgICBQeV9zc2l6ZV90IGluZGV4LCBQeV9zc2l6ZV90IHNpemUsIGNoYXIgKnB0cik7CiAKLWV4dGVybiB2b2lkIF9jdHlwZXNfZXh0ZW5kX2Vycm9yKFB5T2JqZWN0ICpleGNfY2xhc3MsIGNoYXIgKmZtdCwgLi4uKTsKK2V4dGVybiB2b2lkIF9jdHlwZXNfZXh0ZW5kX2Vycm9yKFB5T2JqZWN0ICpleGNfY2xhc3MsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIAogc3RydWN0IGJhc2VzcGVjIHsKICAgICBDRGF0YU9iamVjdCAqYmFzZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCmluZGV4IDZlNDc0YjcuLjU1YzJkNzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYwpAQCAtNTI1LDcgKzUyNSw3IEBACiAjZGVmaW5lIE1NQVBfQ0xFQVJTIDEKICNlbmRpZiAgLyogTU1BUF9DTEVBUlMgKi8KICNpZm5kZWYgSEFWRV9NUkVNQVAKLSNpZmRlZiBsaW51eAorI2lmZGVmIF9fbGludXhfXwogI2RlZmluZSBIQVZFX01SRU1BUCAxCiAjZWxzZSAgIC8qIGxpbnV4ICovCiAjZGVmaW5lIEhBVkVfTVJFTUFQIDAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2RlYnVnLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9kZWJ1Zy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGYxZjlmLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2RlYnVnLmMKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZGVidWcuYyAtIENvcHlyaWdodCAoYykgMTk5NiBSZWQgSGF0LCBJbmMuCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpbmNsdWRlIDxmZmkuaD4KLSNpbmNsdWRlIDxmZmlfY29tbW9uLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotLyogR2VuZXJhbCBkZWJ1Z2dpbmcgcm91dGluZXMgKi8KLQotdm9pZCBmZmlfc3RvcF9oZXJlKHZvaWQpCi17Ci0gIC8qIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KLSAgICAgUGxhY2UgYSBicmVha3BvaW50IG9uIGZmaV9zdG9wX2hlcmUgdG8gYmUgbm90aWZpZWQgb2YgCi0gICAgIHNpZ25pZmljYW50IGV2ZW50cy4gKi8KLX0KLQotLyogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgdmlhIHRoZSBGRklfQVNTRVJUKCkgbWFjcm8gKi8KLQotdm9pZCBmZmlfYXNzZXJ0KGNoYXIgKmV4cHIsIGNoYXIgKmZpbGUsIGludCBsaW5lKQotewotICBmcHJpbnRmKHN0ZGVyciwgIkFTU0VSVElPTiBGQUlMVVJFOiAlcyBhdCAlczolZFxuIiwgZXhwciwgZmlsZSwgbGluZSk7Ci0gIGZmaV9zdG9wX2hlcmUoKTsKLSAgYWJvcnQoKTsKLX0KLQotLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiBhbiBmZmlfdHlwZSBzdHJ1Y3R1cmUgKi8KLQotdm9pZCBmZmlfdHlwZV90ZXN0KGZmaV90eXBlICphLCBjaGFyICpmaWxlLCBpbnQgbGluZSkKLXsKLSAgRkZJX0FTU0VSVF9BVChhICE9IE5VTEwsIGZpbGUsIGxpbmUpOwotCi0gIC8qQC11c2VkZWZAKi8KLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlIDw9IEZGSV9UWVBFX0xBU1QsIGZpbGUsIGxpbmUpOwotICBGRklfQVNTRVJUX0FUKGEtPnR5cGUgPT0gRkZJX1RZUEVfVk9JRCB8fCBhLT5zaXplID4gMCwgZmlsZSwgbGluZSk7Ci0gIEZGSV9BU1NFUlRfQVQoYS0+dHlwZSA9PSBGRklfVFlQRV9WT0lEIHx8IGEtPmFsaWdubWVudCA+IDAsIGZpbGUsIGxpbmUpOwotICBGRklfQVNTRVJUX0FUKGEtPnR5cGUgIT0gRkZJX1RZUEVfU1RSVUNUIHx8IGEtPmVsZW1lbnRzICE9IE5VTEwsIGZpbGUsIGxpbmUpOwotICAvKkA9dXNlZGVmQCovCi19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTkzYWFhLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5jCisrKyAvZGV2L251bGwKQEAgLTEsMzEwICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5OCAgUmVkIEhhdCwgSW5jLgotICAgCi0gICBBUk0gRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpbmNsdWRlIDxmZmkuaD4KLSNpbmNsdWRlIDxmZmlfY29tbW9uLmg+Ci0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQxNDIpICAgIC8qIGJlbmlnbiByZWRlZmluaXRpb24gb2YgdHlwZSAqLwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbmRpZgotCi0vKiBmZmlfcHJlcF9hcmdzIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1ibHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCi0gICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyAqLwotCi0vKkAtZXhwb3J0aGVhZGVyQCovCi12b2lkIGZmaV9wcmVwX2FyZ3MoY2hhciAqc3RhY2ssIGV4dGVuZGVkX2NpZiAqZWNpZikKLS8qQD1leHBvcnRoZWFkZXJAKi8KLXsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGk7Ci0gIHJlZ2lzdGVyIHZvaWQgKipwX2FyZ3Y7Ci0gIHJlZ2lzdGVyIGNoYXIgKmFyZ3A7Ci0gIHJlZ2lzdGVyIGZmaV90eXBlICoqcF9hcmc7Ci0KLSAgYXJncCA9IHN0YWNrOwotCi0gIGlmICggZWNpZi0+Y2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgKSB7Ci0gICAgKih2b2lkICoqKSBhcmdwID0gZWNpZi0+cnZhbHVlOwotICAgIGFyZ3AgKz0gNDsKLSAgfQotCi0gIHBfYXJndiA9IGVjaWYtPmF2YWx1ZTsKLQotICBmb3IgKGkgPSBlY2lmLT5jaWYtPm5hcmdzLCBwX2FyZyA9IGVjaWYtPmNpZi0+YXJnX3R5cGVzOwotICAgICAgIChpICE9IDApOwotICAgICAgIGktLSwgcF9hcmcrKykKLSAgICB7Ci0gICAgICBzaXplX3QgejsKLSAgICAgIHNpemVfdCBhcmdhbGlnbiA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0gICAgICBpZiAoYXJnYWxpZ24gPiA0KQotICAgICAgICBhcmdhbGlnbiA9IDQ7Ci0jZW5kaWYKLSAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2FyeSAqLwotICAgICAgaWYgKChhcmdhbGlnbiAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7Ci0JYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIGFyZ2FsaWduKTsKLSAgICAgIH0KLQotCSAgeiA9ICgqcF9hcmcpLT5zaXplOwotCSAgaWYgKHogPCBzaXplb2YoaW50KSkKLQkgICAgewotCSAgICAgIHogPSBzaXplb2YoaW50KTsKLQkgICAgICBzd2l0Y2ggKCgqcF9hcmcpLT50eXBlKQotCQl7Ci0JCWNhc2UgRkZJX1RZUEVfU0lOVDg6Ci0JCSAgKihzaWduZWQgaW50ICopIGFyZ3AgPSAoc2lnbmVkIGludCkqKFNJTlQ4ICopKCogcF9hcmd2KTsKLQkJICBicmVhazsKLQkJICAKLQkJY2FzZSBGRklfVFlQRV9VSU5UODoKLQkJICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQ4ICopKCogcF9hcmd2KTsKLQkJICBicmVhazsKLQkJICAKLQkJY2FzZSBGRklfVFlQRV9TSU5UMTY6Ci0JCSAgKihzaWduZWQgaW50ICopIGFyZ3AgPSAoc2lnbmVkIGludCkqKFNJTlQxNiAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfVUlOVDE2OgotCQkgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDE2ICopKCogcF9hcmd2KTsKLQkJICBicmVhazsKLQkJICAKLQkJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0gICAgICAgICAgICAgICAgICAvKiAqcF9hcmd2IG1heSBub3QgYmUgYWxpZ25lZCBmb3IgYSBVSU5UMzIgKi8KLSAgICAgICAgICAgICAgICAgIG1lbWNweShhcmdwLCAqcF9hcmd2LCB6KTsKLQkJICBicmVhazsKLQotCQlkZWZhdWx0OgotCQkgIEZGSV9BU1NFUlQoMCk7Ci0JCX0KLQkgICAgfQotCSAgZWxzZSBpZiAoeiA9PSBzaXplb2YoaW50KSkKLQkgICAgewotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDMyICopKCogcF9hcmd2KTsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgbWVtY3B5KGFyZ3AsICpwX2FyZ3YsIHopOwotCSAgICB9Ci0JICBwX2FyZ3YrKzsKLQkgIGFyZ3AgKz0gejsKLSAgICB9Ci0gIAotICByZXR1cm47Ci19Ci0KLS8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAqY2lmKQotewotICAvKiBTZXQgdGhlIHJldHVybiB0eXBlIGZsYWcgKi8KLSAgc3dpdGNoIChjaWYtPnJ0eXBlLT50eXBlKQotICAgIHsKLSAgICBjYXNlIEZGSV9UWVBFX1ZPSUQ6Ci0gICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0gICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKLSAgICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKLSAgICBjYXNlIEZGSV9UWVBFX1NJTlQ2NDoKLSAgICAgIGNpZi0+ZmxhZ3MgPSAodW5zaWduZWQpIGNpZi0+cnR5cGUtPnR5cGU7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgRkZJX1RZUEVfVUlOVDY0OgotICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX1NJTlQ2NDsKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9JTlQ7Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgcmV0dXJuIEZGSV9PSzsKLX0KLQotLypALWRlY2x1bmRlZkAqLwotLypALWV4cG9ydGhlYWRlckAqLwotZXh0ZXJuIHZvaWQgZmZpX2NhbGxfU1lTVih2b2lkICgqKShjaGFyICosIGV4dGVuZGVkX2NpZiAqKSwgCi0JCQkgIC8qQG91dEAqLyBleHRlbmRlZF9jaWYgKiwgCi0JCQkgIHVuc2lnbmVkLCB1bnNpZ25lZCwgCi0JCQkgIC8qQG91dEAqLyB1bnNpZ25lZCAqLCAKLQkJCSAgdm9pZCAoKmZuKSgpKTsKLS8qQD1kZWNsdW5kZWZAKi8KLS8qQD1leHBvcnRoZWFkZXJAKi8KLQotLyogUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIHZvaWQgZm9yIGN0eXBlcyAqLwotaW50IGZmaV9jYWxsKC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWYsIAotCSAgICAgIHZvaWQgKCpmbikoKSwgCi0JICAgICAgLypAb3V0QCovIHZvaWQgKnJ2YWx1ZSwgCi0JICAgICAgLypAZGVwZW5kZW50QCovIHZvaWQgKiphdmFsdWUpCi17Ci0gIGV4dGVuZGVkX2NpZiBlY2lmOwotCi0gIGVjaWYuY2lmID0gY2lmOwotICBlY2lmLmF2YWx1ZSA9IGF2YWx1ZTsKLSAgCi0gIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3QgYW5kIHdlIGRvbid0IGhhdmUgYSByZXR1cm4JKi8KLSAgLyogdmFsdWUgYWRkcmVzcyB0aGVuIHdlIG5lZWQgdG8gbWFrZSBvbmUJCSAgICAgICAgKi8KLQotICBpZiAoKHJ2YWx1ZSA9PSBOVUxMKSAmJiAKLSAgICAgIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkpCi0gICAgewotICAgICAgLypALXN5c3VucmVjb2dAKi8KLSAgICAgIGVjaWYucnZhbHVlID0gYWxsb2NhKGNpZi0+cnR5cGUtPnNpemUpOwotICAgICAgLypAPXN5c3VucmVjb2dAKi8KLSAgICB9Ci0gIGVsc2UKLSAgICBlY2lmLnJ2YWx1ZSA9IHJ2YWx1ZTsKLSAgICAKLSAgCi0gIHN3aXRjaCAoY2lmLT5hYmkpIAotICAgIHsKLSAgICBjYXNlIEZGSV9TWVNWOgotICAgICAgLypALXVzZWRlZkAqLwotICAgICAgZmZpX2NhbGxfU1lTVihmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5ieXRlcywgCi0JCSAgICBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4pOwotICAgICAgLypAPXVzZWRlZkAqLwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEZGSV9BU1NFUlQoMCk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gIC8qIEkgdGhpbmsgY2FsY3VsYXRpbmcgdGhlIHJlYWwgc3RhY2sgcG9pbnRlciBkZWx0YSBpcyBub3QgdXNlZnVsCi0gICAgIGJlY2F1c2Ugc3RkY2FsbCBpcyBub3Qgc3VwcG9ydGVkICovCi0gIHJldHVybiAwOwotfQotCi0vKiogcHJpdmF0ZSBtZW1iZXJzICoqLwotCi1zdGF0aWMgdm9pZCBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YgKGNoYXIgKnN0YWNrLCB2b2lkICoqcmV0LAotCQkJCQkgdm9pZCoqIGFyZ3MsIGZmaV9jaWYqIGNpZik7Ci0KLS8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGZmaV9jbG9zdXJlX1NZU1YgaW4gc3lzdi5hc20gKi8KLQotdW5zaWduZWQgaW50Ci1mZmlfY2xvc3VyZV9TWVNWX2lubmVyIChmZmlfY2xvc3VyZSAqY2xvc3VyZSwgY2hhciAqaW5fYXJncywgdm9pZCAqcnZhbHVlKQotewotICBmZmlfY2lmICpjaWYgPSBjbG9zdXJlLT5jaWY7Ci0gIHZvaWQgKipvdXRfYXJnczsKLQotICBvdXRfYXJncyA9ICh2b2lkICoqKSBhbGxvY2EoY2lmLT5uYXJncyAqIHNpemVvZiAodm9pZCAqKSk7ICAKLQotICAvKiB0aGlzIGNhbGwgd2lsbCBpbml0aWFsaXplIG91dF9hcmdzLCBzdWNoIHRoYXQgZWFjaAotICAgKiBlbGVtZW50IGluIHRoYXQgYXJyYXkgcG9pbnRzIHRvIHRoZSBjb3JyZXNwb25kaW5nIAotICAgKiB2YWx1ZSBvbiB0aGUgc3RhY2s7IGFuZCBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucwotICAgKiBhIHN0cnVjdHVyZSwgaXQgd2lsbCByZS1zZXQgcnZhbHVlIHRvIHBvaW50IHRvIHRoZQotICAgKiBzdHJ1Y3R1cmUgcmV0dXJuIGFkZHJlc3MuICAqLwotCi0gIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihpbl9hcmdzLCAmcnZhbHVlLCBvdXRfYXJncywgY2lmKTsKLSAgCi0gIChjbG9zdXJlLT5mdW4pKGNpZiwgcnZhbHVlLCBvdXRfYXJncywgY2xvc3VyZS0+dXNlcl9kYXRhKTsKLQotICAvKiBUZWxsIGZmaV9jbG9zdXJlX1NZU1Ygd2hhdCB0aGUgcmV0dXJudHlwZSBpcyAqLwotICByZXR1cm4gY2lmLT5mbGFnczsKLX0KLQotLypALWV4cG9ydGhlYWRlckAqLwotc3RhdGljIHZvaWQgCi1mZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoY2hhciAqc3RhY2ssIHZvaWQgKipydmFsdWUsCi0JCQkgICAgdm9pZCAqKmF2YWx1ZSwgZmZpX2NpZiAqY2lmKQotLypAPWV4cG9ydGhlYWRlckAqLwotewotICB1bnNpZ25lZCBpbnQgaTsKLSAgdm9pZCAqKnBfYXJndjsKLSAgY2hhciAqYXJncDsKLSAgZmZpX3R5cGUgKipwX2FyZzsKLQotICBhcmdwID0gc3RhY2s7Ci0KLSAgaWYgKCBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCApIHsKLSAgICAqcnZhbHVlID0gKih2b2lkICoqKSBhcmdwOwotICAgIGFyZ3AgKz0gNDsKLSAgfQotCi0gIHBfYXJndiA9IGF2YWx1ZTsKLQotICBmb3IgKGkgPSBjaWYtPm5hcmdzLCBwX2FyZyA9IGNpZi0+YXJnX3R5cGVzOyAoaSAhPSAwKTsgaS0tLCBwX2FyZysrKQotICAgIHsKLSAgICAgIHNpemVfdCB6OwotICAgICAgc2l6ZV90IGFyZ2FsaWduID0gKCpwX2FyZyktPmFsaWdubWVudDsKLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgICAgIGlmIChhcmdhbGlnbiA+IDQpCi0gICAgICAgIGFyZ2FsaWduID0gNDsKLSNlbmRpZgotICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCi0gICAgICBpZiAoKGFyZ2FsaWduIC0gMSkgJiAodW5zaWduZWQpIGFyZ3ApIHsKLQlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgYXJnYWxpZ24pOwotICAgICAgfQotCi0gICAgICB6ID0gKCpwX2FyZyktPnNpemU7Ci0gICAgICBpZiAoeiA8IHNpemVvZihpbnQpKQotICAgICAgICB6ID0gc2l6ZW9mKGludCk7Ci0KLSAgICAgICpwX2FyZ3YgPSAodm9pZCopIGFyZ3A7Ci0KLSAgICAgIHBfYXJndisrOwotICAgICAgYXJncCArPSB6OwotICAgIH0KLX0KLQotLyoKLSAgICBhZGQgICBpcCwgcGMsICMtOCAgICAgOyBpcCA9IGFkZHJlc3Mgb2YgdGhpcyB0cmFtcG9saW5lID09IGFkZHJlc3Mgb2YgZmZpX2Nsb3N1cmUKLSAgICBsZHIgICBwYywgW3BjLCAjLTRdICAgOyBqdW1wIHRvIF9fZnVuCi0gICAgRENEIF9fZnVuCi0qLwotI2RlZmluZSBGRklfSU5JVF9UUkFNUE9MSU5FKFRSQU1QLEZVTikgXAoteyBcCi0gICAgdW5zaWduZWQgaW50ICpfX3RyYW1wID0gKHVuc2lnbmVkIGludCAqKShUUkFNUCk7IFwKLSAgICBfX3RyYW1wWzBdID0gMHhlMjRmYzAwODsgICAgICAgICAgICAvKiBhZGQgICBpcCwgcGMsICMtOCAgICAqLyBcCi0gICAgX190cmFtcFsxXSA9IDB4ZTUxZmYwMDQ7ICAgICAgICAgICAgLyogbGRyICAgcGMsIFtwYywgIy00XSAgKi8gXAotICAgIF9fdHJhbXBbMl0gPSAodW5zaWduZWQgaW50KShGVU4pOyBcCi0gIH0KLQotLyogdGhlIGNpZiBtdXN0IGFscmVhZHkgYmUgcHJlcCdlZCAqLwotCi0vKiBkZWZpbmVkIGluIHN5c3YuYXNtICovCi12b2lkIGZmaV9jbG9zdXJlX1NZU1Yodm9pZCk7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2Nsb3N1cmUgKGZmaV9jbG9zdXJlKiBjbG9zdXJlLAotCQkgIGZmaV9jaWYqIGNpZiwKLQkJICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopLAotCQkgIHZvaWQgKnVzZXJfZGF0YSkKLXsKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpOwotICAKLSAgRkZJX0lOSVRfVFJBTVBPTElORSAoJmNsb3N1cmUtPnRyYW1wWzBdLCAmZmZpX2Nsb3N1cmVfU1lTVik7Ci0KLSAgY2xvc3VyZS0+Y2lmICA9IGNpZjsKLSAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwotICBjbG9zdXJlLT5mdW4gID0gZnVuOwotCi0jaWZkZWYgX1dJTjMyX1dDRQotICAvKiBUaGlzIGlzIGltcG9ydGFudCB0byBhbGxvdyBjYWxsaW5nIHRoZSB0cmFtcG9saW5lIHNhZmVseSAqLwotICBGbHVzaEluc3RydWN0aW9uQ2FjaGUoR2V0Q3VycmVudFByb2Nlc3MoKSwgMCwgMCk7Ci0jZW5kaWYKLQotICByZXR1cm4gRkZJX09LOwotfQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Nzk3NWI2Li4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBsaWJmZmkgMi4wMC1iZXRhLXdpbmNlIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBUaGUgYmFzaWMgQVBJIGlzIGRlc2NyaWJlZCBpbiB0aGUgUkVBRE1FIGZpbGUuCi0KLSAgIFRoZSByYXcgQVBJIGlzIGRlc2lnbmVkIHRvIGJ5cGFzcyBzb21lIG9mIHRoZSBhcmd1bWVudCBwYWNraW5nCi0gICBhbmQgdW5wYWNraW5nIG9uIGFyY2hpdGVjdHVyZXMgZm9yIHdoaWNoIGl0IGNhbiBiZSBhdm9pZGVkLgotCi0gICBUaGUgY2xvc3VyZSBBUEkgYWxsb3dzIGludGVycHJldGVkIGZ1bmN0aW9ucyB0byBiZSBwYWNrYWdlZCB1cAotICAgaW5zaWRlIGEgQyBmdW5jdGlvbiBwb2ludGVyLCBzbyB0aGF0IHRoZXkgY2FuIGJlIGNhbGxlZCBhcyBDIGZ1bmN0aW9ucywKLSAgIHdpdGggbm8gdW5kZXJzdGFuZGluZyBvbiB0aGUgY2xpZW50IHNpZGUgdGhhdCB0aGV5IGFyZSBpbnRlcnByZXRlZC4KLSAgIEl0IGNhbiBhbHNvIGJlIHVzZWQgaW4gb3RoZXIgY2FzZXMgaW4gd2hpY2ggaXQgaXMgbmVjZXNzYXJ5IHRvIHBhY2thZ2UKLSAgIHVwIGEgdXNlciBzcGVjaWZpZWQgcGFyYW1ldGVyIGFuZCBhIGZ1bmN0aW9uIHBvaW50ZXIgYXMgYSBzaW5nbGUKLSAgIGZ1bmN0aW9uIHBvaW50ZXIuCi0KLSAgIFRoZSBjbG9zdXJlIEFQSSBtdXN0IGJlIGltcGxlbWVudGVkIGluIG9yZGVyIHRvIGdldCBpdHMgZnVuY3Rpb25hbGl0eSwKLSAgIGUuZy4gZm9yIHVzZSBieSBnaWouICBSb3V0aW5lcyBhcmUgcHJvdmlkZWQgdG8gZW11bGF0ZSB0aGUgcmF3IEFQSQotICAgaWYgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gZG9lc24ndCBhbGxvdyBmYXN0ZXIgaW1wbGVtZW50YXRpb24uCi0KLSAgIE1vcmUgZGV0YWlscyBvbiB0aGUgcmF3IGFuZCBjbG91cmUgQVBJIGNhbiBiZSBmb3VuZCBpbjoKLQotICAgaHR0cDovL2djYy5nbnUub3JnL21sL2phdmEvMTk5OS1xMy9tc2cwMDEzOC5odG1sCi0KLSAgIGFuZAotCi0gICBodHRwOi8vZ2NjLmdudS5vcmcvbWwvamF2YS8xOTk5LXEzL21zZzAwMTc0Lmh0bWwKLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgTElCRkZJX0gKLSNkZWZpbmUgTElCRkZJX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKiBTcGVjaWZ5IHdoaWNoIGFyY2hpdGVjdHVyZSBsaWJmZmkgaXMgY29uZmlndXJlZCBmb3IuICovCi0vKiNkZWZpbmUgQFRBUkdFVEAqLwotCi0vKiAtLS0tIFN5c3RlbSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpdGFyZ2V0Lmg+Ci0KLSNpZm5kZWYgTElCRkZJX0FTTQotCi0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0KLS8qIExPTkdfTE9OR19NQVggaXMgbm90IGFsd2F5cyBkZWZpbmVkIChub3QgaWYgU1RSSUNUX0FOU0ksIGZvciBleGFtcGxlKS4KLSAgIEJ1dCB3ZSBjYW4gZmluZCBpdCBlaXRoZXIgdW5kZXIgdGhlIGNvcnJlY3QgQU5TSSBuYW1lLCBvciB1bmRlciBHTlUKLSAgIEMncyBpbnRlcm5hbCBuYW1lLiAgKi8KLSNpZmRlZiBMT05HX0xPTkdfTUFYCi0jIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMT05HX0xPTkdfTUFYCi0jZWxzZQotIyBpZmRlZiBMTE9OR19NQVgKLSMgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMTE9OR19NQVgKLSMgZWxzZQotIyAgaWZkZWYgX19HTlVDX18KLSMgICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggX19MT05HX0xPTkdfTUFYX18KLSMgIGVuZGlmCi0jICBpZmRlZiBfTVNDX1ZFUgotIyAgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBfSTY0X01BWAotIyAgZW5kaWYKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWYgU0NIQVJfTUFYID09IDEyNwotIyBkZWZpbmUgZmZpX3R5cGVfdWNoYXIgICAgICAgICAgICAgICAgZmZpX3R5cGVfdWludDgKLSMgZGVmaW5lIGZmaV90eXBlX3NjaGFyICAgICAgICAgICAgICAgIGZmaV90eXBlX3NpbnQ4Ci0jZWxzZQotICNlcnJvciAiY2hhciBzaXplIG5vdCBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotI2lmIFNIUlRfTUFYID09IDMyNzY3Ci0jIGRlZmluZSBmZmlfdHlwZV91c2hvcnQgICAgICAgZmZpX3R5cGVfdWludDE2Ci0jIGRlZmluZSBmZmlfdHlwZV9zc2hvcnQgICAgICAgZmZpX3R5cGVfc2ludDE2Ci0jZWxpZiBTSFJUX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jIGRlZmluZSBmZmlfdHlwZV91c2hvcnQgICAgICAgZmZpX3R5cGVfdWludDMyCi0jIGRlZmluZSBmZmlfdHlwZV9zc2hvcnQgICAgICAgZmZpX3R5cGVfc2ludDMyCi0jZWxzZQotICNlcnJvciAic2hvcnQgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLSNpZiBJTlRfTUFYID09IDMyNzY3Ci0jIGRlZmluZSBmZmlfdHlwZV91aW50ICAgICAgICAgZmZpX3R5cGVfdWludDE2Ci0jIGRlZmluZSBmZmlfdHlwZV9zaW50ICAgICAgICAgZmZpX3R5cGVfc2ludDE2Ci0jZWxpZiBJTlRfTUFYID09IDIxNDc0ODM2NDcKLSMgZGVmaW5lIGZmaV90eXBlX3VpbnQgICAgICAgICBmZmlfdHlwZV91aW50MzIKLSMgZGVmaW5lIGZmaV90eXBlX3NpbnQgICAgICAgICBmZmlfdHlwZV9zaW50MzIKLSNlbGlmIElOVF9NQVggPT0gOTIyMzM3MjAzNjg1NDc3NTgwNwotIyBkZWZpbmUgZmZpX3R5cGVfdWludCAgICAgICAgIGZmaV90eXBlX3VpbnQ2NAotIyBkZWZpbmUgZmZpX3R5cGVfc2ludCAgICAgICAgIGZmaV90eXBlX3NpbnQ2NAotI2Vsc2UKLSAjZXJyb3IgImludCBzaXplIG5vdCBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotI2RlZmluZSBmZmlfdHlwZV91bG9uZyAgICAgICAgIGZmaV90eXBlX3VpbnQ2NAotI2RlZmluZSBmZmlfdHlwZV9zbG9uZyAgICAgICAgIGZmaV90eXBlX3NpbnQ2NAotI2lmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKLSMgaWYgRkZJX0xPTkdfTE9OR19NQVggIT0gOTIyMzM3MjAzNjg1NDc3NTgwNwotICAjZXJyb3IgIm5vIDY0LWJpdCBkYXRhIHR5cGUgc3VwcG9ydGVkIgotIyBlbmRpZgotI2VsaWYgTE9OR19NQVggIT0gOTIyMzM3MjAzNjg1NDc3NTgwNwotICNlcnJvciAibG9uZyBzaXplIG5vdCBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotLyogVGhlIGNsb3N1cmUgY29kZSBhc3N1bWVzIHRoYXQgdGhpcyB3b3JrcyBvbiBwb2ludGVycywgaS5lLiBhIHNpemVfdAkqLwotLyogY2FuIGhvbGQgYSBwb2ludGVyLgkJCQkJCQkqLwotCi10eXBlZGVmIHN0cnVjdCBfZmZpX3R5cGUKLXsKLSAgc2l6ZV90IHNpemU7Ci0gIHVuc2lnbmVkIHNob3J0IGFsaWdubWVudDsKLSAgdW5zaWduZWQgc2hvcnQgdHlwZTsKLSAgLypAbnVsbEAqLyBzdHJ1Y3QgX2ZmaV90eXBlICoqZWxlbWVudHM7Ci19IGZmaV90eXBlOwotCi0vKiBUaGVzZSBhcmUgZGVmaW5lZCBpbiB0eXBlcy5jICovCi1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdm9pZDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50ODsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50ODsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MTY7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDE2OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQzMjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MzI7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDY0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ2NDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9mbG9hdDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9kb3VibGU7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfbG9uZ2RvdWJsZTsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9wb2ludGVyOwotCi0KLXR5cGVkZWYgZW51bSB7Ci0gIEZGSV9PSyA9IDAsCi0gIEZGSV9CQURfVFlQRURFRiwKLSAgRkZJX0JBRF9BQkkgCi19IGZmaV9zdGF0dXM7Ci0KLXR5cGVkZWYgdW5zaWduZWQgRkZJX1RZUEU7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgZmZpX2FiaSBhYmk7Ci0gIHVuc2lnbmVkIG5hcmdzOwotICAvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKiphcmdfdHlwZXM7Ci0gIC8qQGRlcGVuZGVudEAqLyBmZmlfdHlwZSAqcnR5cGU7Ci0gIHVuc2lnbmVkIGJ5dGVzOwotICB1bnNpZ25lZCBmbGFnczsKLSNpZmRlZiBGRklfRVhUUkFfQ0lGX0ZJRUxEUwotICBGRklfRVhUUkFfQ0lGX0ZJRUxEUzsKLSNlbmRpZgotfSBmZmlfY2lmOwotCi0vKiAtLS0tIERlZmluaXRpb25zIGZvciB0aGUgcmF3IEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIEZGSV9TSVpFT0ZfQVJHCi0jIGlmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKLSMgIGRlZmluZSBGRklfU0laRU9GX0FSRyAgICAgICAgNAotIyBlbGlmIExPTkdfTUFYID09IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSMgIGRlZmluZSBGRklfU0laRU9GX0FSRyAgICAgICAgOAotIyBlbmRpZgotI2VuZGlmCi0KLXR5cGVkZWYgdW5pb24gewotICBmZmlfc2FyZyAgc2ludDsKLSAgZmZpX2FyZyAgIHVpbnQ7Ci0gIGZsb2F0CSAgICBmbHQ7Ci0gIGNoYXIgICAgICBkYXRhW0ZGSV9TSVpFT0ZfQVJHXTsKLSAgdm9pZCogICAgIHB0cjsKLX0gZmZpX3JhdzsKLQotdm9pZCBmZmlfcmF3X2NhbGwgKC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWYsIAotCQkgICB2b2lkICgqZm4pKCksIAotCQkgICAvKkBvdXRAKi8gdm9pZCAqcnZhbHVlLCAKLQkJICAgLypAZGVwZW5kZW50QCovIGZmaV9yYXcgKmF2YWx1ZSk7Ci0KLXZvaWQgZmZpX3B0cmFycmF5X3RvX3JhdyAoZmZpX2NpZiAqY2lmLCB2b2lkICoqYXJncywgZmZpX3JhdyAqcmF3KTsKLXZvaWQgZmZpX3Jhd190b19wdHJhcnJheSAoZmZpX2NpZiAqY2lmLCBmZmlfcmF3ICpyYXcsIHZvaWQgKiphcmdzKTsKLXNpemVfdCBmZmlfcmF3X3NpemUgKGZmaV9jaWYgKmNpZik7Ci0KLS8qIFRoaXMgaXMgYW5hbG9nb3VzIHRvIHRoZSByYXcgQVBJLCBleGNlcHQgaXQgdXNlcyBKYXZhIHBhcmFtZXRlcgkqLwotLyogcGFja2luZywgZXZlbiBvbiA2NC1iaXQgbWFjaGluZXMuICBJLmUuIG9uIDY0LWJpdCBtYWNoaW5lcwkJKi8KLS8qIGxvbmdzIGFuZCBkb3VibGVzIGFyZSBmb2xsb3dlZCBieSBhbiBlbXB0eSA2NC1iaXQgd29yZC4JCSovCi0KLXZvaWQgZmZpX2phdmFfcmF3X2NhbGwgKC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWYsIAotCQkgICAgICAgIHZvaWQgKCpmbikoKSwgCi0JCSAgICAgICAgLypAb3V0QCovIHZvaWQgKnJ2YWx1ZSwgCi0JCSAgICAgICAgLypAZGVwZW5kZW50QCovIGZmaV9yYXcgKmF2YWx1ZSk7Ci0KLXZvaWQgZmZpX2phdmFfcHRyYXJyYXlfdG9fcmF3IChmZmlfY2lmICpjaWYsIHZvaWQgKiphcmdzLCBmZmlfcmF3ICpyYXcpOwotdm9pZCBmZmlfamF2YV9yYXdfdG9fcHRyYXJyYXkgKGZmaV9jaWYgKmNpZiwgZmZpX3JhdyAqcmF3LCB2b2lkICoqYXJncyk7Ci1zaXplX3QgZmZpX2phdmFfcmF3X3NpemUgKGZmaV9jaWYgKmNpZik7Ci0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIGNsb3N1cmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZiBGRklfQ0xPU1VSRVMKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBjaGFyIHRyYW1wW0ZGSV9UUkFNUE9MSU5FX1NJWkVdOwotICBmZmlfY2lmICAgKmNpZjsKLSAgdm9pZCAgICAgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKik7Ci0gIHZvaWQgICAgICAqdXNlcl9kYXRhOwotfSBmZmlfY2xvc3VyZTsKLQotZmZpX3N0YXR1cwotZmZpX3ByZXBfY2xvc3VyZSAoZmZpX2Nsb3N1cmUqLAotCQkgIGZmaV9jaWYgKiwKLQkJICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopLAotCQkgIHZvaWQgKnVzZXJfZGF0YSk7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKLQotICBmZmlfY2lmICAgKmNpZjsKLQotI2lmICFGRklfTkFUSVZFX1JBV19BUEkKLQotICAvKiBpZiB0aGlzIGlzIGVuYWJsZWQsIHRoZW4gYSByYXcgY2xvc3VyZSBoYXMgdGhlIHNhbWUgbGF5b3V0IAotICAgICBhcyBhIHJlZ3VsYXIgY2xvc3VyZS4gIFdlIHVzZSB0aGlzIHRvIGluc3RhbGwgYW4gaW50ZXJtZWRpYXRlIAotICAgICBoYW5kbGVyIHRvIGRvIHRoZSB0cmFuc2FsdGlvbiwgdm9pZCoqIC0+IGZmaV9yYXcqLiAqLwotCi0gIHZvaWQgICAgICgqdHJhbnNsYXRlX2FyZ3MpKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKik7Ci0gIHZvaWQgICAgICAqdGhpc19jbG9zdXJlOwotCi0jZW5kaWYKLQotICB2b2lkICAgICAoKmZ1bikoZmZpX2NpZiosdm9pZCosZmZpX3Jhdyosdm9pZCopOwotICB2b2lkICAgICAgKnVzZXJfZGF0YTsKLQotfSBmZmlfcmF3X2Nsb3N1cmU7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX3Jhd19jbG9zdXJlIChmZmlfcmF3X2Nsb3N1cmUqLAotCQkgICAgICBmZmlfY2lmICpjaWYsCi0JCSAgICAgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLGZmaV9yYXcqLHZvaWQqKSwKLQkJICAgICAgdm9pZCAqdXNlcl9kYXRhKTsKLQotZmZpX3N0YXR1cwotZmZpX3ByZXBfamF2YV9yYXdfY2xvc3VyZSAoZmZpX3Jhd19jbG9zdXJlKiwKLQkJICAgICAgICAgICBmZmlfY2lmICpjaWYsCi0JCSAgICAgICAgICAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosZmZpX3Jhdyosdm9pZCopLAotCQkgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSk7Ci0KLSNlbmRpZiAvKiBGRklfQ0xPU1VSRVMgKi8KLQotLyogLS0tLSBQdWJsaWMgaW50ZXJmYWNlIGRlZmluaXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWYoLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX2NpZiAqY2lmLCAKLQkJCWZmaV9hYmkgYWJpLAotCQkJdW5zaWduZWQgaW50IG5hcmdzLCAKLQkJCS8qQGRlcGVuZGVudEAqLyAvKkBvdXRAKi8gLypAcGFydGlhbEAqLyBmZmlfdHlwZSAqcnR5cGUsIAotCQkJLypAZGVwZW5kZW50QCovIGZmaV90eXBlICoqYXR5cGVzKTsKLQotLyogUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIHZvaWQgZm9yIGN0eXBlcyAqLwotaW50IGZmaV9jYWxsKC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWYsIAotCSAgICAgIHZvaWQgKCpmbikoKSwgCi0JICAgICAgLypAb3V0QCovIHZvaWQgKnJ2YWx1ZSwgCi0JICAgICAgLypAZGVwZW5kZW50QCovIHZvaWQgKiphdmFsdWUpOwotCi0vKiBVc2VmdWwgZm9yIGVsaW1pbmF0aW5nIGNvbXBpbGVyIHdhcm5pbmdzICovCi0jZGVmaW5lIEZGSV9GTihmKSAoKHZvaWQgKCopKCkpZikKLQotLyogLS0tLSBEZWZpbml0aW9ucyBzaGFyZWQgd2l0aCBhc3NlbWJseSBjb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2VuZGlmCi0KLS8qIElmIHRoZXNlIGNoYW5nZSwgdXBkYXRlIHNyYy9taXBzL2ZmaXRhcmdldC5oLiAqLwotI2RlZmluZSBGRklfVFlQRV9WT0lEICAgICAgIDAgICAgCi0jZGVmaW5lIEZGSV9UWVBFX0lOVCAgICAgICAgMQotI2RlZmluZSBGRklfVFlQRV9GTE9BVCAgICAgIDIgICAgCi0jZGVmaW5lIEZGSV9UWVBFX0RPVUJMRSAgICAgMwotI2lmIDAgLypASEFWRV9MT05HX0RPVUJMRUAqLwotI2RlZmluZSBGRklfVFlQRV9MT05HRE9VQkxFIDQKLSNlbHNlCi0jZGVmaW5lIEZGSV9UWVBFX0xPTkdET1VCTEUgRkZJX1RZUEVfRE9VQkxFCi0jZW5kaWYKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDggICAgICA1ICAgCi0jZGVmaW5lIEZGSV9UWVBFX1NJTlQ4ICAgICAgNgotI2RlZmluZSBGRklfVFlQRV9VSU5UMTYgICAgIDcgCi0jZGVmaW5lIEZGSV9UWVBFX1NJTlQxNiAgICAgOAotI2RlZmluZSBGRklfVFlQRV9VSU5UMzIgICAgIDkKLSNkZWZpbmUgRkZJX1RZUEVfU0lOVDMyICAgICAxMAotI2RlZmluZSBGRklfVFlQRV9VSU5UNjQgICAgIDExCi0jZGVmaW5lIEZGSV9UWVBFX1NJTlQ2NCAgICAgMTIKLSNkZWZpbmUgRkZJX1RZUEVfU1RSVUNUICAgICAxMwotI2RlZmluZSBGRklfVFlQRV9QT0lOVEVSICAgIDE0Ci0KLS8qIFRoaXMgc2hvdWxkIGFsd2F5cyByZWZlciB0byB0aGUgbGFzdCB0eXBlIGNvZGUgKGZvciBzYW5pdHkgY2hlY2tzKSAqLwotI2RlZmluZSBGRklfVFlQRV9MQVNUICAgICAgIEZGSV9UWVBFX1BPSU5URVIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaV9jb21tb24uaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaV9jb21tb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY4NzlkMS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmlfY29tbW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaV9jb21tb24uaCAtIENvcHlyaWdodCAoYykgMTk5NiAgUmVkIEhhdCwgSW5jLgotCi0gICBDb21tb24gaW50ZXJuYWwgZGVmaW5pdGlvbnMgYW5kIG1hY3Jvcy4gT25seSBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nCi0gICBsaWJmZmkuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIEZGSV9DT01NT05fSAotI2RlZmluZSBGRklfQ09NTU9OX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0jaW5jbHVkZSA8ZmZpY29uZmlnLmg+Ci0KLS8qIERvIG5vdCBtb3ZlIHRoaXMuIFNvbWUgdmVyc2lvbnMgb2YgQUlYIGFyZSB2ZXJ5IHBpY2t5IGFib3V0IHdoZXJlCi0gICB0aGlzIGlzIHBvc2l0aW9uZWQuICovCi0jaWZkZWYgX19HTlVDX18KLSMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCi0jZWxzZQotIyBpZiBIQVZFX0FMTE9DQV9ICi0jICBpbmNsdWRlIDxhbGxvY2EuaD4KLSMgZWxzZQotIyAgaWZkZWYgX0FJWAotICNwcmFnbWEgYWxsb2NhCi0jICBlbHNlCi0jICAgaWZuZGVmIGFsbG9jYSAvKiBwcmVkZWZpbmVkIGJ5IEhQIGNjICtPbGliY2FsbHMgKi8KLWNoYXIgKmFsbG9jYSAoKTsKLSMgICBlbmRpZgotIyAgZW5kaWYKLSMgZW5kaWYKLSNlbmRpZgotCi0vKiBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBtZW1jcHkuICovCi0jaWYgU1REQ19IRUFERVJTCi0jIGluY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSMgaWZuZGVmIEhBVkVfTUVNQ1BZCi0jICBkZWZpbmUgbWVtY3B5KGQsIHMsIG4pIGJjb3B5ICgocyksIChkKSwgKG4pKQotIyBlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKEZGSV9ERUJVRykgCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNlbmRpZgotCi0jaWZkZWYgRkZJX0RFQlVHCi0vKkBleGl0c0AqLyB2b2lkIGZmaV9hc3NlcnQoLypAdGVtcEAqLyBjaGFyICpleHByLCAvKkB0ZW1wQCovIGNoYXIgKmZpbGUsIGludCBsaW5lKTsKLXZvaWQgZmZpX3N0b3BfaGVyZSh2b2lkKTsKLXZvaWQgZmZpX3R5cGVfdGVzdCgvKkB0ZW1wQCovIC8qQG91dEAqLyBmZmlfdHlwZSAqYSwgLypAdGVtcEAqLyBjaGFyICpmaWxlLCBpbnQgbGluZSk7Ci0KLSNkZWZpbmUgRkZJX0FTU0VSVCh4KSAoKHgpID8gKHZvaWQpMCA6IGZmaV9hc3NlcnQoI3gsIF9fRklMRV9fLF9fTElORV9fKSkKLSNkZWZpbmUgRkZJX0FTU0VSVF9BVCh4LCBmLCBsKSAoKHgpID8gMCA6IGZmaV9hc3NlcnQoI3gsIChmKSwgKGwpKSkKLSNkZWZpbmUgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKHgpIGZmaV90eXBlX3Rlc3QgKHgsIF9fRklMRV9fLCBfX0xJTkVfXykKLSNlbHNlCi0jZGVmaW5lIEZGSV9BU1NFUlQoeCkgCi0jZGVmaW5lIEZGSV9BU1NFUlRfQVQoeCwgZiwgbCkKLSNkZWZpbmUgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKHgpCi0jZW5kaWYKLQotI2RlZmluZSBBTElHTih2LCBhKSAgKCgoKChzaXplX3QpICh2KSktMSkgfCAoKGEpLTEpKSsxKQotCi0vKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGZmaV9jaWYgKmNpZik7Ci0KLS8qIEV4dGVuZGVkIGNpZiwgdXNlZCBpbiBjYWxsYmFjayBmcm9tIGFzc2VtYmx5IHJvdXRpbmUgKi8KLXR5cGVkZWYgc3RydWN0Ci17Ci0gIC8qQGRlcGVuZGVudEAqLyBmZmlfY2lmICpjaWY7Ci0gIC8qQGRlcGVuZGVudEAqLyB2b2lkICpydmFsdWU7Ci0gIC8qQGRlcGVuZGVudEAqLyB2b2lkICoqYXZhbHVlOwotfSBleHRlbmRlZF9jaWY7Ci0KLS8qIFRlcnNlIHNpemVkIHR5cGUgZGVmaW5pdGlvbnMuICAqLwotI2lmIGRlZmluZWQoX19HTlVDX18pCi0KLXR5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQ4ICBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1FJX18pKSk7Ci10eXBlZGVmIHNpZ25lZCBpbnQgICBTSU5UOCAgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19RSV9fKSkpOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDE2IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fSElfXykpKTsKLXR5cGVkZWYgc2lnbmVkIGludCAgIFNJTlQxNiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0hJX18pKSk7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UMzIgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19TSV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDMyIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fU0lfXykpKTsKLXR5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQ2NCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0RJX18pKSk7Ci10eXBlZGVmIHNpZ25lZCBpbnQgICBTSU5UNjQgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ESV9fKSkpOwotCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotCi10eXBlZGVmIHVuc2lnbmVkIF9faW50OCAgVUlOVDg7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDggICAgU0lOVDg7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50MTYgVUlOVDE2OwotdHlwZWRlZiBzaWduZWQgX19pbnQxNiAgIFNJTlQxNjsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiBVSU5UMzI7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDMyICAgU0lOVDMyOwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IFVJTlQ2NDsKLXR5cGVkZWYgc2lnbmVkIF9faW50NjQgICBTSU5UNjQ7Ci0KLSNlbHNlCi0jZXJyb3IgIk5lZWQgdHlwZWRlZnMgaGVyZSIKLSNlbmRpZgotCi10eXBlZGVmIGZsb2F0IEZMT0FUMzI7Ci0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpY29uZmlnLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmljb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M3OTY0Yy4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmljb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0vKiBmZmljb25maWcuaCBjcmVhdGVkIG1hbnVhbGx5IGZvciBXaW5kb3dzIENFIG9uIEFSTSAqLwotLyogZmZpY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUuYWMgYnkgYXV0b2hlYWRlci4gICovCi0KLS8qIDEyMzQgPSBMSUxfRU5ESUFOLCA0MzIxID0gQklHRU5ESUFOICovCi0jZGVmaW5lIEJZVEVPUkRFUiAxMjM0Ci0KLS8qIERlZmluZSB0byBvbmUgb2YgYF9nZXRiNjcnLCBgR0VUQjY3JywgYGdldGI2NycgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAKLSAgIHN5c3RlbXMuIFRoaXMgZnVuY3Rpb24gaXMgcmVxdWlyZWQgZm9yIGBhbGxvY2EuYycgc3VwcG9ydCBvbiB0aG9zZSBzeXN0ZW1zLgotICAgKi8KLS8qICN1bmRlZiBDUkFZX1NUQUNLU0VHX0VORCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB1c2luZyBgYWxsb2NhLmMnLiAqLwotLyogI3VuZGVmIENfQUxMT0NBICovCi0KLS8qIERlZmluZSB0byB0aGUgZmxhZ3MgbmVlZGVkIGZvciB0aGUgLnNlY3Rpb24gLmVoX2ZyYW1lIGRpcmVjdGl2ZS4gKi8KLS8qICN1bmRlZiBFSF9GUkFNRV9GTEFHUyAqLwotCi0vKiBEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCBleHRyYSBkZWJ1Z2dpbmcuICovCi0jaWZkZWYgREVCVUcgIC8qIERlZmluZWQgYnkgdGhlIHByb2plY3Qgc2V0dGluZ3MgZm9yIERlYnVnIGJ1aWxkcyAqLwotI2RlZmluZSBGRklfREVCVUcKLSNlbHNlCi0jdW5kZWYgRkZJX0RFQlVHCi0jZW5kaWYKLQotLyogRGVmaW5lIHRoaXMgaXMgeW91IGRvIG5vdCB3YW50IHN1cHBvcnQgZm9yIHRoZSByYXcgQVBJLiAqLwotLyogI3VuZGVmIEZGSV9OT19SQVdfQVBJICovCi0KLS8qIERlZmluZSB0aGlzIGlzIHlvdSBkbyBub3Qgd2FudCBzdXBwb3J0IGZvciBhZ2dyZWdhdGUgdHlwZXMuICovCi0vKiAjdW5kZWYgRkZJX05PX1NUUlVDVFMgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYGFsbG9jYScsIGFzIGEgZnVuY3Rpb24gb3IgbWFjcm8uICovCi0jZGVmaW5lIEhBVkVfQUxMT0NBIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPGFsbG9jYS5oPiBhbmQgaXQgc2hvdWxkIGJlIHVzZWQgKG5vdCBvbiBVbHRyaXgpLgotICAgKi8KLS8qICN1bmRlZiBIQVZFX0FMTE9DQV9IICovCi0KLS8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAucmVnaXN0ZXIuICovCi0vKiAjdW5kZWYgSEFWRV9BU19SRUdJU1RFUl9QU0VVRE9fT1AgKi8KLQotLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIGFuZCBsaW5rZXIgc3VwcG9ydCB1bmFsaWduZWQgUEMgcmVsYXRpdmUgcmVsb2NzLgotICAgKi8KLS8qICN1bmRlZiBIQVZFX0FTX1NQQVJDX1VBX1BDUkVMICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9JTlRUWVBFU19IICovCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbG9uZyBkb3VibGUgdHlwZSBhbmQgaXQgaXMgYmlnZ2VyIHRoYW4gYSBkb3VibGUgKi8KLS8qIFRoaXMgZGlmZmVycyBmcm9tIHRoZSBNU1ZDIGJ1aWxkLCBidXQgZXZlbiB0aGVyZSBpdCBzaG91bGQgbm90IGJlIGRlZmluZWQgKi8KLS8qICN1bmRlZiBIQVZFX0xPTkdfRE9VQkxFICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtY3B5JyBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9NRU1DUFkgMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qIFdpbkNFIGhhcyB0aGlzIGJ1dCBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdG8gdXNlIGl0ICovCi0vKiAjdW5kZWYgSEFWRV9NRU1PUllfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1tYXAnIGZ1bmN0aW9uLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUCAqLwotCi0vKiBEZWZpbmUgaWYgbW1hcCB3aXRoIE1BUF9BTk9OKFlNT1VTKSB3b3Jrcy4gKi8KLS8qICN1bmRlZiBIQVZFX01NQVBfQU5PTiAqLwotCi0vKiBEZWZpbmUgaWYgbW1hcCBvZiAvZGV2L3plcm8gd29ya3MuICovCi0vKiAjdW5kZWYgSEFWRV9NTUFQX0RFVl9aRVJPICovCi0KLS8qIERlZmluZSBpZiByZWFkLW9ubHkgbW1hcCBvZiBhIHBsYWluIGZpbGUgd29ya3MuICovCi0vKiAjdW5kZWYgSEFWRV9NTUFQX0ZJTEUgKi8KLQotLyogRGVmaW5lIGlmIC5laF9mcmFtZSBzZWN0aW9ucyBzaG91bGQgYmUgcmVhZC1vbmx5LiAqLwotLyogI3VuZGVmIEhBVkVfUk9fRUhfRlJBTUUgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TVERJTlRfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NUUklOR1NfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL21tYW4uaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TWVNfTU1BTl9IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TWVNfU1RBVF9IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9VTklTVERfSCAqLwotCi0vKiBEZWZpbmUgaWYgdGhlIGhvc3QgbWFjaGluZSBzdG9yZXMgd29yZHMgb2YgbXVsdGktd29yZCBpbnRlZ2VycyBpbgotICAgYmlnLWVuZGlhbiBvcmRlci4gKi8KLS8qICN1bmRlZiBIT1NUX1dPUkRTX0JJR19FTkRJQU4gKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91ciBDIGNvbXBpbGVyIGRvZXNuJ3QgYWNjZXB0IC1jIGFuZCAtbyB0b2dldGhlci4gKi8KLS8qICN1bmRlZiBOT19NSU5VU19DX01JTlVTX08gKi8KLQotLyogTmFtZSBvZiBwYWNrYWdlICovCi0vKiAjdW5kZWYgUEFDS0FHRSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVCAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9OQU1FICovCi0KLS8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX1NUUklORyAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9UQVJOQU1FICovCi0KLS8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OICovCi0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdHlwZSBkb3VibGUgKi8KLSNkZWZpbmUgU0laRU9GX0RPVUJMRSA4Ci0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdHlwZSBsb25nIGRvdWJsZSAqLwotI2RlZmluZSBTSVpFT0ZfTE9OR19ET1VCTEUgOAotCi0vKiBJZiB1c2luZyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBhbGxvY2EsIGRlZmluZSBpZiB5b3Uga25vdyB0aGUKLSAgIGRpcmVjdGlvbiBvZiBzdGFjayBncm93dGggZm9yIHlvdXIgc3lzdGVtOyBvdGhlcndpc2UgaXQgd2lsbCBiZQotICAgYXV0b21hdGljYWxseSBkZWR1Y2VkIGF0IHJ1bi10aW1lLgotCVNUQUNLX0RJUkVDVElPTiA+IDAgPT4gZ3Jvd3MgdG93YXJkIGhpZ2hlciBhZGRyZXNzZXMKLQlTVEFDS19ESVJFQ1RJT04gPCAwID0+IGdyb3dzIHRvd2FyZCBsb3dlciBhZGRyZXNzZXMKLQlTVEFDS19ESVJFQ1RJT04gPSAwID0+IGRpcmVjdGlvbiBvZiBncm93dGggdW5rbm93biAqLwotLyogI3VuZGVmIFNUQUNLX0RJUkVDVElPTiAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gKi8KLSNkZWZpbmUgU1REQ19IRUFERVJTIDEKLQotLyogRGVmaW5lIHRoaXMgaWYgeW91IGFyZSB1c2luZyBQdXJpZnkgYW5kIHdhbnQgdG8gc3VwcHJlc3Mgc3B1cmlvdXMgbWVzc2FnZXMuCi0gICAqLwotLyogI3VuZGVmIFVTSU5HX1BVUklGWSAqLwotCi0vKiBWZXJzaW9uIG51bWJlciBvZiBwYWNrYWdlICovCi0vKiAjdW5kZWYgVkVSU0lPTiAqLwotCi0vKiB3aGV0aGVyIGJ5dGVvcmRlciBpcyBiaWdlbmRpYW4gKi8KLS8qICN1bmRlZiBXT1JEU19CSUdFTkRJQU4gKi8KLQotI2RlZmluZSBhbGxvY2EgX2FsbG9jYQotCi0jZGVmaW5lIGFib3J0KCkgZXhpdCg5OTkpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaXRhcmdldC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjI3YjI1Li4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaXRhcmdldC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KLSAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQVJNLgotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICi0jZGVmaW5lIExJQkZGSV9UQVJHRVRfSAotCi0jaWZuZGVmIExJQkZGSV9BU00KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwotdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwotCi10eXBlZGVmIGVudW0gZmZpX2FiaSB7Ci0gIEZGSV9GSVJTVF9BQkkgPSAwLAotICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKLX0gZmZpX2FiaTsKLSNlbmRpZgotCi0vKiAtLS0tIERlZmluaXRpb25zIGZvciBjbG9zdXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jZGVmaW5lIEZGSV9DTE9TVVJFUyAxCi0jZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMTIKLQotI2RlZmluZSBGRklfTkFUSVZFX1JBV19BUEkgMAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvcHJlcF9jaWYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3ByZXBfY2lmLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZGNlMmYuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvcHJlcF9jaWYuYworKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJlcF9jaWYuYyAtIENvcHlyaWdodCAoYykgMTk5NiwgMTk5OCAgUmVkIEhhdCwgSW5jLgotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpLmg+Ci0jaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0KLS8qIFJvdW5kIHVwIHRvIEZGSV9TSVpFT0ZfQVJHLiAqLwotCi0jZGVmaW5lIFNUQUNLX0FSR19TSVpFKHgpIEFMSUdOKHgsIEZGSV9TSVpFT0ZfQVJHKQotCi0vKiBQZXJmb3JtIG1hY2hpbmUgaW5kZXBlbmRlbnQgaW5pdGlhbGl6YXRpb24gb2YgYWdncmVnYXRlIHR5cGUKLSAgIHNwZWNpZmljYXRpb25zLiAqLwotCi1zdGF0aWMgZmZpX3N0YXR1cyBpbml0aWFsaXplX2FnZ3JlZ2F0ZSgvKkBvdXRAKi8gZmZpX3R5cGUgKmFyZykKLXsKLSAgZmZpX3R5cGUgKipwdHI7IAotCi0gIEZGSV9BU1NFUlQoYXJnICE9IE5VTEwpOwotCi0gIC8qQC11c2VkZWZAKi8KLQotICBGRklfQVNTRVJUKGFyZy0+ZWxlbWVudHMgIT0gTlVMTCk7Ci0gIEZGSV9BU1NFUlQoYXJnLT5zaXplID09IDApOwotICBGRklfQVNTRVJUKGFyZy0+YWxpZ25tZW50ID09IDApOwotCi0gIHB0ciA9ICYoYXJnLT5lbGVtZW50c1swXSk7Ci0KLSAgd2hpbGUgKCgqcHRyKSAhPSBOVUxMKQotICAgIHsKLSAgICAgIGlmICgoKCpwdHIpLT5zaXplID09IDApICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSgoKnB0cikpICE9IEZGSV9PSykpCi0JcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKLSAgICAgIAotICAgICAgLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiB0aGUgYXJndW1lbnQgdHlwZSAqLwotICAgICAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKCpwdHIpOwotCi0gICAgICBhcmctPnNpemUgPSBBTElHTihhcmctPnNpemUsICgqcHRyKS0+YWxpZ25tZW50KTsKLSAgICAgIGFyZy0+c2l6ZSArPSAoKnB0ciktPnNpemU7Ci0KLSAgICAgIGFyZy0+YWxpZ25tZW50ID0gKGFyZy0+YWxpZ25tZW50ID4gKCpwdHIpLT5hbGlnbm1lbnQpID8gCi0JYXJnLT5hbGlnbm1lbnQgOiAoKnB0ciktPmFsaWdubWVudDsKLQotICAgICAgcHRyKys7Ci0gICAgfQotCi0gIC8qIFN0cnVjdHVyZSBzaXplIGluY2x1ZGVzIHRhaWwgcGFkZGluZy4gIFRoaXMgaXMgaW1wb3J0YW50IGZvcgotICAgICBzdHJ1Y3R1cmVzIHRoYXQgZml0IGluIG9uZSByZWdpc3RlciBvbiBBQklzIGxpa2UgdGhlIFBvd2VyUEM2NAotICAgICBMaW51eCBBQkkgdGhhdCByaWdodCBqdXN0aWZ5IHNtYWxsIHN0cnVjdHMgaW4gYSByZWdpc3Rlci4KLSAgICAgSXQncyBhbHNvIG5lZWRlZCBmb3IgbmVzdGVkIHN0cnVjdHVyZSBsYXlvdXQsIGZvciBleGFtcGxlCi0gICAgIHN0cnVjdCBBIHsgbG9uZyBhOyBjaGFyIGI7IH07IHN0cnVjdCBCIHsgc3RydWN0IEEgeDsgY2hhciB5OyB9OwotICAgICBzaG91bGQgZmluZCB5IGF0IGFuIG9mZnNldCBvZiAyKnNpemVvZihsb25nKSBhbmQgcmVzdWx0IGluIGEKLSAgICAgdG90YWwgc2l6ZSBvZiAzKnNpemVvZihsb25nKS4gICovCi0gIGFyZy0+c2l6ZSA9IEFMSUdOIChhcmctPnNpemUsIGFyZy0+YWxpZ25tZW50KTsKLQotICBpZiAoYXJnLT5zaXplID09IDApCi0gICAgcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKLSAgZWxzZQotICAgIHJldHVybiBGRklfT0s7Ci0KLSAgLypAPXVzZWRlZkAqLwotfQotCi0vKiBQZXJmb3JtIG1hY2hpbmUgaW5kZXBlbmRlbnQgZmZpX2NpZiBwcmVwYXJhdGlvbiwgdGhlbiBjYWxsCi0gICBtYWNoaW5lIGRlcGVuZGVudCByb3V0aW5lLiAqLwotCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZigvKkBvdXRAKi8gLypAcGFydGlhbEAqLyBmZmlfY2lmICpjaWYsIAotCQkJZmZpX2FiaSBhYmksIHVuc2lnbmVkIGludCBuYXJncywgCi0JCQkvKkBkZXBlbmRlbnRAKi8gLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX3R5cGUgKnJ0eXBlLCAKLQkJCS8qQGRlcGVuZGVudEAqLyBmZmlfdHlwZSAqKmF0eXBlcykKLXsKLSAgdW5zaWduZWQgYnl0ZXMgPSAwOwotICB1bnNpZ25lZCBpbnQgaTsKLSAgZmZpX3R5cGUgKipwdHI7Ci0KLSAgRkZJX0FTU0VSVChjaWYgIT0gTlVMTCk7Ci0gIEZGSV9BU1NFUlQoKGFiaSA+IEZGSV9GSVJTVF9BQkkpICYmIChhYmkgPD0gRkZJX0RFRkFVTFRfQUJJKSk7Ci0KLSAgY2lmLT5hYmkgPSBhYmk7Ci0gIGNpZi0+YXJnX3R5cGVzID0gYXR5cGVzOwotICBjaWYtPm5hcmdzID0gbmFyZ3M7Ci0gIGNpZi0+cnR5cGUgPSBydHlwZTsKLQotICBjaWYtPmZsYWdzID0gMDsKLQotICAvKiBJbml0aWFsaXplIHRoZSByZXR1cm4gdHlwZSBpZiBuZWNlc3NhcnkgKi8KLSAgLypALXVzZWRlZkAqLwotICBpZiAoKGNpZi0+cnR5cGUtPnNpemUgPT0gMCkgJiYgKGluaXRpYWxpemVfYWdncmVnYXRlKGNpZi0+cnR5cGUpICE9IEZGSV9PSykpCi0gICAgcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKLSAgLypAPXVzZWRlZkAqLwotCi0gIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIHJldHVybiB0eXBlICovCi0gIEZGSV9BU1NFUlRfVkFMSURfVFlQRShjaWYtPnJ0eXBlKTsKLQotICAvKiB4ODYtNjQgYW5kIHMzOTAgc3RhY2sgc3BhY2UgYWxsb2NhdGlvbiBpcyBoYW5kbGVkIGluIHByZXBfbWFjaGRlcC4gICovCi0jaWYgIWRlZmluZWQgTTY4SyAmJiAhZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIFMzOTAKLSAgLyogTWFrZSBzcGFjZSBmb3IgdGhlIHJldHVybiBzdHJ1Y3R1cmUgcG9pbnRlciAqLwotICBpZiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgIC8qIE1TVkMgcmV0dXJucyBzbWFsbCBzdHJ1Y3R1cmVzIGluIHJlZ2lzdGVycy4gIEJ1dCB3ZSBoYXZlIGEgZGlmZmVyZW50Ci0gICAgICB3b3JrYXJvdW5kOiBwcmV0ZW5kIGludDMyIG9yIGludDY0IHJldHVybiB0eXBlLCBhbmQgY29udmVydGluZyB0bwotICAgICAgc3RydWN0dXJlIGFmdGVyd2FyZHMuICovCi0jaWZkZWYgU1BBUkMKLSAgICAgICYmIChjaWYtPmFiaSAhPSBGRklfVjkgfHwgY2lmLT5ydHlwZS0+c2l6ZSA+IDMyKQotI2VuZGlmCi0gICAgICApCi0gICAgYnl0ZXMgPSBTVEFDS19BUkdfU0laRShzaXplb2Yodm9pZCopKTsKLSNlbmRpZgotCi0gIGZvciAocHRyID0gY2lmLT5hcmdfdHlwZXMsIGkgPSBjaWYtPm5hcmdzOyBpID4gMDsgaS0tLCBwdHIrKykKLSAgICB7Ci0KLSAgICAgIC8qIEluaXRpYWxpemUgYW55IHVuaW5pdGlhbGl6ZWQgYWdncmVnYXRlIHR5cGUgZGVmaW5pdGlvbnMgKi8KLSAgICAgIGlmICgoKCpwdHIpLT5zaXplID09IDApICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSgoKnB0cikpICE9IEZGSV9PSykpCi0JcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKLQotICAgICAgLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiB0aGUgYXJndW1lbnQgdHlwZSwgZG8gdGhpcyAKLQkgY2hlY2sgYWZ0ZXIgdGhlIGluaXRpYWxpemF0aW9uLiAgKi8KLSAgICAgIEZGSV9BU1NFUlRfVkFMSURfVFlQRSgqcHRyKTsKLQotI2lmICFkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgUzM5MAotI2lmZGVmIFNQQVJDCi0gICAgICBpZiAoKCgqcHRyKS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLQkgICAmJiAoKCpwdHIpLT5zaXplID4gMTYgfHwgY2lmLT5hYmkgIT0gRkZJX1Y5KSkKLQkgIHx8ICgoKnB0ciktPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRQotCSAgICAgICYmIGNpZi0+YWJpICE9IEZGSV9WOSkpCi0JYnl0ZXMgKz0gc2l6ZW9mKHZvaWQqKTsKLSAgICAgIGVsc2UKLSNlbmRpZgotCXsKLSNpZm5kZWYgX01TQ19WRVIKLQkJLyogRG9uJ3Qga25vdyBpZiB0aGlzIGlzIGEgbGliZmZpIGJ1ZyBvciBub3QuICBBdCBsZWFzdCBvbgotCQkgICBXaW5kb3dzIHdpdGggTVNWQywgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXJzIGFyZSAqbm90KgotCQkgICBhbGlnbmVkIGluIHRoZSBzYW1lIHdheSBhcyBzdHJ1Y3R1cmUgZmllbGRzIGFyZSwgdGhleSBhcmUKLQkJICAgb25seSBhbGlnbmVkIGluIGludGVnZXIgYm91bmRhcmllcy4KLQotCQkgICBUaGlzIGRvZXNuJ3QgZG8gYW55IGhhcm0gZm9yIGNkZWNsIGZ1bmN0aW9ucyBhbmQgY2xvc3VyZXMsCi0JCSAgIHNpbmNlIHRoZSBjYWxsZXIgY2xlYW5zIHVwIHRoZSBzdGFjaywgYnV0IGl0IGlzIHdyb25nIGZvcgotCQkgICBzdGRjYWxsIGZ1bmN0aW9ucyB3aGVyZSB0aGUgY2FsbGVlIGNsZWFucy4KLQkJKi8KLQotCSAgLyogQWRkIGFueSBwYWRkaW5nIGlmIG5lY2Vzc2FyeSAqLwotCSAgaWYgKCgoKnB0ciktPmFsaWdubWVudCAtIDEpICYgYnl0ZXMpCi0JICAgIGJ5dGVzID0gQUxJR04oYnl0ZXMsICgqcHRyKS0+YWxpZ25tZW50KTsKLQkgIAotI2VuZGlmCi0JICBieXRlcyArPSBTVEFDS19BUkdfU0laRSgoKnB0ciktPnNpemUpOwotCX0KLSNlbmRpZgotICAgIH0KLQotICBjaWYtPmJ5dGVzID0gYnl0ZXM7Ci0KLSAgLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwotICByZXR1cm4gZmZpX3ByZXBfY2lmX21hY2hkZXAoY2lmKTsKLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3N5c3YuYXNtIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2Uvc3lzdi5hc20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiNzhiOTAuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2Uvc3lzdi5hc20KKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotOyAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4IFJlZCBIYXQsIEluYy4KLTsgIAotOyAgQVJNIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAotOwotOyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi07ICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLTsgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotOyAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotOyAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi07ICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLTsgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLTsKLTsgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi07ICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLTsKLTsgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLTsgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLTsgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLTsgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLTsgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotOyAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi07ICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi07ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi07I2RlZmluZSBMSUJGRklfQVNNICAgICAKLTsjaW5jbHVkZSA8ZmZpY29uZmlnLmg+Ci07I2luY2x1ZGUgPGZmaS5oPgotOyNpZmRlZiBIQVZFX01BQ0hJTkVfQVNNX0gKLTsjaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KLTsjZWxzZQotOyNpZmRlZiBfX1VTRVJfTEFCRUxfUFJFRklYX18KLTsjZGVmaW5lIENPTkNBVDEoYSwgYikgQ09OQ0FUMihhLCBiKQotOyNkZWZpbmUgQ09OQ0FUMihhLCBiKSBhICMjIGIKLQotOy8qIFVzZSB0aGUgcmlnaHQgcHJlZml4IGZvciBnbG9iYWwgbGFiZWxzLiAgKi8KLTsjZGVmaW5lIENOQU1FKHgpIENPTkNBVDEgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgeCkKLTsjZWxzZQotOyNkZWZpbmUgQ05BTUUoeCkgeAotOyNlbmRpZgotOyNkZWZpbmUgRU5UUlkoeCkgLmdsb2JsIENOQU1FKHgpOyAudHlwZSBDTkFNRSh4KSwlZnVuY3Rpb247IENOQU1FKHgpOgotOyNlbmRpZgotCi0KLUZGSV9UWVBFX1ZPSUQgICAgICAgRVFVIDAKLUZGSV9UWVBFX0lOVCAgICAgICAgRVFVIDEKLUZGSV9UWVBFX0ZMT0FUICAgICAgRVFVIDIKLUZGSV9UWVBFX0RPVUJMRSAgICAgRVFVIDMKLTtGRklfVFlQRV9MT05HRE9VQkxFIEVRVSA0Ci1GRklfVFlQRV9VSU5UOCAgICAgIEVRVSA1Ci1GRklfVFlQRV9TSU5UOCAgICAgIEVRVSA2Ci1GRklfVFlQRV9VSU5UMTYgICAgIEVRVSA3Ci1GRklfVFlQRV9TSU5UMTYgICAgIEVRVSA4Ci1GRklfVFlQRV9VSU5UMzIgICAgIEVRVSA5Ci1GRklfVFlQRV9TSU5UMzIgICAgIEVRVSAxMAotRkZJX1RZUEVfVUlOVDY0ICAgICBFUVUgMTEKLUZGSV9UWVBFX1NJTlQ2NCAgICAgRVFVIDEyCi1GRklfVFlQRV9TVFJVQ1QgICAgIEVRVSAxMwotRkZJX1RZUEVfUE9JTlRFUiAgICBFUVUgMTQKLQotOyBXaW5DRSBhbHdheXMgdXNlcyBzb2Z0d2FyZSBmbG9hdGluZyBwb2ludCAoSSB0aGluaykKLV9fU09GVEZQX18gRVFVIHtUUlVFfQotCi0KLSAgICBBUkVBIHwudGV4dHwsIENPREUsIEFSTSAgICAgOyAudGV4dAotCi0KLSAgICA7IGExOiAgIGZmaV9wcmVwX2FyZ3MKLSAgICA7IGEyOiAgICZlY2lmCi0gICAgOyBhMzogICBjaWYtPmJ5dGVzCi0gICAgOyBhNDogICBmaWctPmZsYWdzCi0gICAgOyBzcCswOiBlY2lmLnJ2YWx1ZQotICAgIDsgc3ArNDogZm4KLQotICAgIDsgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCi07RU5UUlkoZmZpX2NhbGxfU1lTVikKLQotICAgIEVYUE9SVCB8ZmZpX2NhbGxfU1lTVnwKLQotfGZmaV9jYWxsX1NZU1Z8IFBST0MKLQotICAgIDsgU2F2ZSByZWdpc3RlcnMKLSAgICBzdG1mZCBzcCEsIHthMS1hNCwgZnAsIGxyfQotICAgIG1vdiAgIGZwLCBzcAotCi0gICAgOyBNYWtlIHJvb20gZm9yIGFsbCBvZiB0aGUgbmV3IGFyZ3MuCi0gICAgc3ViICAgc3AsIGZwLCBhMwotCi0gICAgOyBQbGFjZSBhbGwgb2YgdGhlIGZmaV9wcmVwX2FyZ3MgaW4gcG9zaXRpb24KLSAgICBtb3YgICBpcCwgYTEKLSAgICBtb3YgICBhMSwgc3AKLSAgICA7ICAgICBhMiBhbHJlYWR5IHNldAotCi0gICAgOyBBbmQgY2FsbAotICAgIG1vdiAgIGxyLCBwYwotICAgIG1vdiAgIHBjLCBpcAotCi0gICAgOyBtb3ZlIGZpcnN0IDQgcGFyYW1ldGVycyBpbiByZWdpc3RlcnMKLSAgICBsZHIgICBhMSwgW3NwLCAjMF0KLSAgICBsZHIgICBhMiwgW3NwLCAjNF0KLSAgICBsZHIgICBhMywgW3NwLCAjOF0KLSAgICBsZHIgICBhNCwgW3NwLCAjMTJdCi0KLSAgICA7IGFuZCBhZGp1c3Qgc3RhY2sKLSAgICBsZHIgICBpcCwgW2ZwLCAjOF0KLSAgICBjbXAgICBpcCwgIzE2Ci0gICAgbW92Z2UgaXAsICMxNgotICAgIGFkZCAgIHNwLCBzcCwgaXAKLQotICAgIDsgY2FsbCBmdW5jdGlvbgotICAgIG1vdiAgIGxyLCBwYwotICAgIGxkciAgIHBjLCBbZnAsICMyOF0KLQotICAgIDsgUmVtb3ZlIHRoZSBzcGFjZSB3ZSBwdXNoZWQgZm9yIHRoZSBhcmdzCi0gICAgbW92ICAgc3AsIGZwCi0KLSAgICA7IExvYWQgYTMgd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgbGRyICAgYTMsIFtzcCwgIzI0XQotCi0gICAgOyBMb2FkIGE0IHdpdGggdGhlIHJldHVybiB0eXBlIGNvZGUgCi0gICAgbGRyICAgYTQsIFtzcCwgIzEyXQotCi0gICAgOyBJZiB0aGUgcmV0dXJuIHZhbHVlIHBvaW50ZXIgaXMgTlVMTCwgYXNzdW1lIG5vIHJldHVybiB2YWx1ZS4KLSAgICBjbXAgICBhMywgIzAKLSAgICBiZXEgICBjYWxsX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIElOVAotICAgIGNtcCAgIGE0LCAjRkZJX1RZUEVfSU5UCi0gICAgc3RyZXEgYTEsIFthM10KLSAgICBiZXEgICBjYWxsX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIEZMT0FUCi0gICAgY21wICAgICBhNCwgI0ZGSV9UWVBFX0ZMT0FUCi0gICAgWyBfX1NPRlRGUF9fICAgICAgICAgICAgICAgICAgICA7aWZkZWYgX19TT0ZURlBfXwotICAgIHN0cmVxICAgYTEsIFthM10KLSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbHNlCi0gICAgc3RmZXFzICBmMCwgW2EzXQotICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2VuZGlmCi0gICAgYmVxICAgICBjYWxsX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIERPVUJMRSBvciBMT05HRE9VQkxFCi0gICAgY21wICAgICBhNCwgI0ZGSV9UWVBFX0RPVUJMRQotICAgIFsgX19TT0ZURlBfXyAgICAgICAgICAgICAgICAgICAgO2lmZGVmIF9fU09GVEZQX18KLSAgICBzdG1lcWlhIGEzLCB7YTEsIGEyfQotICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2Vsc2UKLSAgICBzdGZlcWQgIGYwLCBbYTNdCi0gICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZW5kaWYKLSAgICBiZXEgICAgIGNhbGxfZXBpbG9ndWUKLQotOyByZXR1cm4gU0lOVDY0IG9yIFVJTlQ2NAotICAgIGNtcCAgICAgYTQsICNGRklfVFlQRV9TSU5UNjQKLSAgICBzdG1lcWlhIGEzLCB7YTEsIGEyfQotCi1jYWxsX2VwaWxvZ3VlCi0gICAgbGRtZmQgICBzcCEsIHthMS1hNCwgZnAsIHBjfQotCi07LmZmaV9jYWxsX1NZU1ZfZW5kOgotICAgIDsuc2l6ZSAgICBDTkFNRShmZmlfY2FsbF9TWVNWKSwuZmZpX2NhbGxfU1lTVl9lbmQtQ05BTUUoZmZpX2NhbGxfU1lTVikKLSAgICBFTkRQCi0KLQotUkVTRVJWRV9SRVRVUk4gRVFVIDE2Ci0KLSAgICA7IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0cmFtcG9saW5lCi0gICAgOyBJdCBpcyBOT1QgY2FsbGFibGUgZnJvbSBDCi0gICAgOyBpcCA9IHBvaW50ZXIgdG8gc3RydWN0IGZmaV9jbG9zdXJlCi0KLSAgICBJTVBPUlQgfGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJ8Ci0KLSAgICBFWFBPUlQgfGZmaV9jbG9zdXJlX1NZU1Z8Ci18ZmZpX2Nsb3N1cmVfU1lTVnwgUFJPQwotCi0gICAgOyBTdG9yZSB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzIG9uIHRoZSBzdGFjawotICAgIHN0bWZkICAgc3AhLCB7YTEtYTR9Ci0gICAgOyBQdXNoIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvIHRoZSBzdGFjawotICAgIHN0bWZkICAgc3AhLCB7bHJ9Ci0KLSAgICBtb3YgICAgIGExLCBpcCAgICAgICAgICAgIDsgZmlyc3QgYXJnID0gYWRkcmVzcyBvZiBmZmlfY2xvc3VyZQotICAgIGFkZCAgICAgYTIsIHNwLCAjNCAgICAgICAgOyBzZWNvbmQgYXJnID0gc3ArNCAocG9pbnRzIHRvIHNhdmVkIGExKQotCi0gICAgOyBBbGxvY2F0ZSBzcGFjZSBmb3IgYSBub24tc3RydWN0IHJldHVybiB2YWx1ZQotICAgIHN1YiAgICAgc3AsIHNwLCAjUkVTRVJWRV9SRVRVUk4KLSAgICBtb3YgICAgIGEzLCBzcCAgICAgICAgICAgIDsgdGhpcmQgYXJnID0gcmV0dXJuIHZhbHVlIGFkZHJlc3MKLQotICAgIDsgc3RhdGljIHVuc2lnbmVkIGludAotICAgIDsgZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoZmZpX2Nsb3N1cmUgKmNsb3N1cmUsIGNoYXIgKmluX2FyZ3MsIHZvaWQgKnJ2YWx1ZSkKLSAgICBibCAgICAgIGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIKLSAgICA7IGExIG5vdyBjb250YWlucyB0aGUgcmV0dXJuIHR5cGUgY29kZSAKLQotICAgIDsgQXQgdGhpcyBwb2ludCB0aGUgcmV0dXJuIHZhbHVlIGlzIG9uIHRoZSBzdGFjawotICAgIDsgVHJhbnNmZXIgaXQgdG8gdGhlIGNvcnJlY3QgcmVnaXN0ZXJzIGlmIG5lY2Vzc2FyeQotCi07IHJldHVybiBJTlQKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfSU5UCi0gICAgbGRyZXEgICBhMSwgW3NwXQotICAgIGJlcSAgICAgY2xvc3VyZV9lcGlsb2d1ZQotCi07IHJldHVybiBGTE9BVAotICAgIGNtcCAgICAgYTEsICNGRklfVFlQRV9GTE9BVAotICAgIFsgX19TT0ZURlBfXyAgICAgICAgICAgICAgICAgICAgO2lmZGVmIF9fU09GVEZQX18KLSAgICBsZHJlcSAgIGExLCBbc3BdCi0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxcyAgZjAsIFtzcF0KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2xvc3VyZV9lcGlsb2d1ZQotCi07IHJldHVybiBET1VCTEUgb3IgTE9OR0RPVUJMRQotICAgIGNtcCAgICAgYTEsICNGRklfVFlQRV9ET1VCTEUKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgbGRtZXFpYSBzcCwge2ExLCBhMn0KLSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbHNlCi0gICAgc3RmZXFkICBmMCwgW3NwXQotICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2VuZGlmCi0gICAgYmVxICAgICBjbG9zdXJlX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIFNJTlQ2NCBvciBVSU5UNjQKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfU0lOVDY0Ci0gICAgbGRtZXFpYSBzcCwge2ExLCBhMn0KLQotY2xvc3VyZV9lcGlsb2d1ZQotICAgIGFkZCAgICAgc3AsIHNwLCAjUkVTRVJWRV9SRVRVUk4gICA7IHJlbW92ZSByZXR1cm4gdmFsdWUgYnVmZmVyCi0gICAgbGRtZmQgICBzcCEsIHtpcH0gICAgICAgICA7IGlwID0gcG9wIHJldHVybiBhZGRyZXNzCi0gICAgYWRkICAgICBzcCwgc3AsICMxNiAgICAgICA7IHJlbW92ZSBzYXZlZCBhcmd1bWVudCByZWdpc3RlcnMge2ExLWE0fSBmcm9tIHRoZSBzdGFjawotICAgIG1vdiAgICAgcGMsIGlwICAgICAgICAgICAgOyByZXR1cm4KLQotICAgIEVORFAgICAgOyBmZmlfY2xvc3VyZV9TWVNWCi0KLSAgICBFTkQKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jIGIvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMKaW5kZXggMjI4ZjQ5Ny4uMThlZjMzNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMKKysrIGIvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMKQEAgLTYsNyArNiw3IEBACiAKIC8qIFJlbGVhc2UgTnVtYmVyICovCiAKLXN0YXRpYyBjaGFyICpQeUN1cnNlc1ZlcnNpb24gPSAiMi4xIjsKK3N0YXRpYyBjb25zdCBjaGFyIFB5Q3Vyc2VzVmVyc2lvbltdID0gIjIuMSI7CiAKIC8qIEluY2x1ZGVzICovCiAKQEAgLTU2LDcgKzU2LDcgQEAKICAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlDdXJzZXNDaGVja0VSUihpbnQgY29kZSwgY2hhciAqZm5hbWUpCitQeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjb25zdCBjaGFyICpmbmFtZSkKIHsKICAgICBpZiAoY29kZSAhPSBFUlIpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwppbmRleCA5NjA3NTJjLi5hNDg3MzVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwpAQCAtMjMwNiw3ICsyMzA2LDcgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3JlYWQsICIiKTsKKyAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3JlYWQsIE5VTEwpOwogICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRhdGEpKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwppbmRleCBmNDE5Y2IyLi4zODE4MzVkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKQEAgLTksNiArOSwxOCBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogIyAgaW5jbHVkZSA8d2luc29jazIuaD4gICAgICAgICAvKiBzdHJ1Y3QgdGltZXZhbCAqLworc3RhdGljIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IoY29uc3QgdGltZV90ICp0aW1lcCwgc3RydWN0IHRtICpyZXN1bHQpCit7CisgICAgaWYgKGxvY2FsdGltZV9zKHJlc3VsdCwgdGltZXApID09IDApCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIE5VTEw7Cit9CitzdGF0aWMgc3RydWN0IHRtICpnbXRpbWVfcihjb25zdCB0aW1lX3QgKnRpbWVwLCBzdHJ1Y3QgdG0gKnJlc3VsdCkKK3sKKyAgICBpZiAoZ210aW1lX3MocmVzdWx0LCB0aW1lcCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gTlVMTDsKK30KICNlbmRpZgogCiAvKiBEaWZmZXJlbnRpYXRlIGJldHdlZW4gYnVpbGRpbmcgdGhlIGNvcmUgbW9kdWxlIGFuZCBidWlsZGluZyBleHRlbnNpb24KQEAgLTU2LDYgKzY4LDcgQEAKICNkZWZpbmUgREFURV9HRVRfTUlOVVRFICAgICAgICAgUHlEYXRlVGltZV9EQVRFX0dFVF9NSU5VVEUKICNkZWZpbmUgREFURV9HRVRfU0VDT05EICAgICAgICAgUHlEYXRlVGltZV9EQVRFX0dFVF9TRUNPTkQKICNkZWZpbmUgREFURV9HRVRfTUlDUk9TRUNPTkQgICAgUHlEYXRlVGltZV9EQVRFX0dFVF9NSUNST1NFQ09ORAorI2RlZmluZSBEQVRFX0dFVF9GT0xEICAgICAgICAgICBQeURhdGVUaW1lX0RBVEVfR0VUX0ZPTEQKIAogLyogRGF0ZSBhY2Nlc3NvcnMgZm9yIGRhdGUgYW5kIGRhdGV0aW1lLiAqLwogI2RlZmluZSBTRVRfWUVBUihvLCB2KSAgICAgICAgICAoKChvKS0+ZGF0YVswXSA9ICgodikgJiAweGZmMDApID4+IDgpLCBcCkBAIC03MSwxMiArODQsMTQgQEAKICAgICAoKChvKS0+ZGF0YVs3XSA9ICgodikgJiAweGZmMDAwMCkgPj4gMTYpLCBcCiAgICAgICgobyktPmRhdGFbOF0gPSAoKHYpICYgMHgwMGZmMDApID4+IDgpLCBcCiAgICAgICgobyktPmRhdGFbOV0gPSAoKHYpICYgMHgwMDAwZmYpKSkKKyNkZWZpbmUgREFURV9TRVRfRk9MRChvLCB2KSAgIChQeURhdGVUaW1lX0RBVEVfR0VUX0ZPTEQobykgPSAodikpCiAKIC8qIFRpbWUgYWNjZXNzb3JzIGZvciB0aW1lLiAqLwogI2RlZmluZSBUSU1FX0dFVF9IT1VSICAgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX0hPVVIKICNkZWZpbmUgVElNRV9HRVRfTUlOVVRFICAgICAgICAgUHlEYXRlVGltZV9USU1FX0dFVF9NSU5VVEUKICNkZWZpbmUgVElNRV9HRVRfU0VDT05EICAgICAgICAgUHlEYXRlVGltZV9USU1FX0dFVF9TRUNPTkQKICNkZWZpbmUgVElNRV9HRVRfTUlDUk9TRUNPTkQgICAgUHlEYXRlVGltZV9USU1FX0dFVF9NSUNST1NFQ09ORAorI2RlZmluZSBUSU1FX0dFVF9GT0xEICAgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX0ZPTEQKICNkZWZpbmUgVElNRV9TRVRfSE9VUihvLCB2KSAgICAgKFB5RGF0ZVRpbWVfVElNRV9HRVRfSE9VUihvKSA9ICh2KSkKICNkZWZpbmUgVElNRV9TRVRfTUlOVVRFKG8sIHYpICAgKFB5RGF0ZVRpbWVfVElNRV9HRVRfTUlOVVRFKG8pID0gKHYpKQogI2RlZmluZSBUSU1FX1NFVF9TRUNPTkQobywgdikgICAoUHlEYXRlVGltZV9USU1FX0dFVF9TRUNPTkQobykgPSAodikpCkBAIC04NCw2ICs5OSw3IEBACiAgICAgKCgobyktPmRhdGFbM10gPSAoKHYpICYgMHhmZjAwMDApID4+IDE2KSwgXAogICAgICAoKG8pLT5kYXRhWzRdID0gKCh2KSAmIDB4MDBmZjAwKSA+PiA4KSwgXAogICAgICAoKG8pLT5kYXRhWzVdID0gKCh2KSAmIDB4MDAwMGZmKSkpCisjZGVmaW5lIFRJTUVfU0VUX0ZPTEQobywgdikgICAoUHlEYXRlVGltZV9USU1FX0dFVF9GT0xEKG8pID0gKHYpKQogCiAvKiBEZWx0YSBhY2Nlc3NvcnMgZm9yIHRpbWVkZWx0YS4gKi8KICNkZWZpbmUgR0VUX1REX0RBWVMobykgICAgICAgICAgKCgoUHlEYXRlVGltZV9EZWx0YSAqKShvKSktPmRheXMpCkBAIC0xODQsMTIgKzIwMCwxMiBAQAogICogYW5kIHRoZSBudW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhhdCBtb250aCBpbiB0aGUgc2FtZSB5ZWFyLiAgVGhlc2UKICAqIGFyZSBjb3JyZWN0IGZvciBub24tbGVhcCB5ZWFycyBvbmx5LgogICovCi1zdGF0aWMgaW50IF9kYXlzX2luX21vbnRoW10gPSB7CitzdGF0aWMgY29uc3QgaW50IF9kYXlzX2luX21vbnRoW10gPSB7CiAgICAgMCwgLyogdW51c2VkOyB0aGlzIHZlY3RvciB1c2VzIDEtYmFzZWQgaW5kZXhpbmcgKi8KICAgICAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxCiB9OwogCi1zdGF0aWMgaW50IF9kYXlzX2JlZm9yZV9tb250aFtdID0geworc3RhdGljIGNvbnN0IGludCBfZGF5c19iZWZvcmVfbW9udGhbXSA9IHsKICAgICAwLCAvKiB1bnVzZWQ7IHRoaXMgdmVjdG9yIHVzZXMgMS1iYXNlZCBpbmRleGluZyAqLwogICAgIDAsIDMxLCA1OSwgOTAsIDEyMCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMwNCwgMzM0CiB9OwpAQCAtNDE3LDcgKzQzMyw3IEBACiAgKiBhcmVuJ3QsIHJhaXNlIFZhbHVlRXJyb3IgYW5kIHJldHVybiAtMS4KICAqLwogc3RhdGljIGludAotY2hlY2tfdGltZV9hcmdzKGludCBoLCBpbnQgbSwgaW50IHMsIGludCB1cykKK2NoZWNrX3RpbWVfYXJncyhpbnQgaCwgaW50IG0sIGludCBzLCBpbnQgdXMsIGludCBmb2xkKQogewogICAgIGlmIChoIDwgMCB8fCBoID4gMjMpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC00MzksNiArNDU1LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9zZWNvbmQgbXVzdCBiZSBpbiAwLi45OTk5OTkiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoZm9sZCAhPSAwICYmIGZvbGQgIT0gMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC02NzQsOCArNjk1LDggQEAKIAogLyogQ3JlYXRlIGEgZGF0ZXRpbWUgaW5zdGFuY2Ugd2l0aCBubyByYW5nZSBjaGVja2luZy4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdfZGF0ZXRpbWVfZXgoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwgaW50IGhvdXIsIGludCBtaW51dGUsCi0gICAgICAgICAgICAgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsIFB5T2JqZWN0ICp0emluZm8sIFB5VHlwZU9iamVjdCAqdHlwZSkKK25ld19kYXRldGltZV9leDIoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwgaW50IGhvdXIsIGludCBtaW51dGUsCisgICAgICAgICAgICAgICAgIGludCBzZWNvbmQsIGludCB1c2Vjb25kLCBQeU9iamVjdCAqdHppbmZvLCBpbnQgZm9sZCwgUHlUeXBlT2JqZWN0ICp0eXBlKQogewogICAgIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGY7CiAgICAgY2hhciBhd2FyZSA9IHR6aW5mbyAhPSBQeV9Ob25lOwpAQCAtNjkyLDE4ICs3MTMsMjcgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRih0emluZm8pOwogICAgICAgICAgICAgc2VsZi0+dHppbmZvID0gdHppbmZvOwogICAgICAgICB9CisgICAgICAgIERBVEVfU0VUX0ZPTEQoc2VsZiwgZm9sZCk7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwogfQogCi0jZGVmaW5lIG5ld19kYXRldGltZSh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvKSAgICAgICAgICAgXAotICAgIG5ld19kYXRldGltZV9leCh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvLCAgICAgICAgICAgIFwKK3N0YXRpYyBQeU9iamVjdCAqCituZXdfZGF0ZXRpbWVfZXgoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwgaW50IGhvdXIsIGludCBtaW51dGUsCisgICAgICAgICAgICAgICAgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsIFB5T2JqZWN0ICp0emluZm8sIFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICByZXR1cm4gbmV3X2RhdGV0aW1lX2V4Mih5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8sIDAsIHR5cGUpOworfQorCisjZGVmaW5lIG5ld19kYXRldGltZSh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvLCBmb2xkKSBcCisgICAgbmV3X2RhdGV0aW1lX2V4Mih5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvLCBmb2xkLCBcCiAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX0RhdGVUaW1lVHlwZSkKIAogLyogQ3JlYXRlIGEgdGltZSBpbnN0YW5jZSB3aXRoIG5vIHJhbmdlIGNoZWNraW5nLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLW5ld190aW1lX2V4KGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8sIFB5VHlwZU9iamVjdCAqdHlwZSkKK25ld190aW1lX2V4MihpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsCisgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbywgaW50IGZvbGQsIFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKICAgICBQeURhdGVUaW1lX1RpbWUgKnNlbGY7CiAgICAgY2hhciBhd2FyZSA9IHR6aW5mbyAhPSBQeV9Ob25lOwpAQCAtNzIwLDEyICs3NTAsMjAgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRih0emluZm8pOwogICAgICAgICAgICAgc2VsZi0+dHppbmZvID0gdHppbmZvOwogICAgICAgICB9CisgICAgICAgIFRJTUVfU0VUX0ZPTEQoc2VsZiwgZm9sZCk7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwogfQogCi0jZGVmaW5lIG5ld190aW1lKGhoLCBtbSwgc3MsIHVzLCB0emluZm8pICAgICAgICAgICAgICAgIFwKLSAgICBuZXdfdGltZV9leChoaCwgbW0sIHNzLCB1cywgdHppbmZvLCAmUHlEYXRlVGltZV9UaW1lVHlwZSkKK3N0YXRpYyBQeU9iamVjdCAqCituZXdfdGltZV9leChpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsCisgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvLCBQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgcmV0dXJuIG5ld190aW1lX2V4Mihob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgdHppbmZvLCAwLCB0eXBlKTsKK30KKworI2RlZmluZSBuZXdfdGltZShoaCwgbW0sIHNzLCB1cywgdHppbmZvLCBmb2xkKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG5ld190aW1lX2V4MihoaCwgbW0sIHNzLCB1cywgdHppbmZvLCBmb2xkLCAmUHlEYXRlVGltZV9UaW1lVHlwZSkKIAogLyogQ3JlYXRlIGEgdGltZWRlbHRhIGluc3RhbmNlLiAgTm9ybWFsaXplIHRoZSBtZW1iZXJzIGlmZiBub3JtYWxpemUgaXMKICAqIHRydWUuICBQYXNzaW5nIGZhbHNlIGlzIGEgc3BlZWQgb3B0aW1pemF0aW9uLCBpZiB5b3Uga25vdyBmb3Igc3VyZQpAQCAtODczLDcgKzkxMSw3IEBACiAgKiB0aGlzIHJldHVybnMgTlVMTC4gIEVsc2UgcmVzdWx0IGlzIHJldHVybmVkLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF90emluZm9fbWV0aG9kKFB5T2JqZWN0ICp0emluZm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp0emluZm9hcmcpCitjYWxsX3R6aW5mb19tZXRob2QoUHlPYmplY3QgKnR6aW5mbywgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnR6aW5mb2FyZykKIHsKICAgICBQeU9iamVjdCAqb2Zmc2V0OwogCkBAIC04ODcsMTAgKzkyNSwxMCBAQAogICAgIGlmIChvZmZzZXQgPT0gUHlfTm9uZSB8fCBvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICBpZiAoUHlEZWx0YV9DaGVjayhvZmZzZXQpKSB7Ci0gICAgICAgIGlmIChHRVRfVERfTUlDUk9TRUNPTkRTKG9mZnNldCkgIT0gMCB8fCBHRVRfVERfU0VDT05EUyhvZmZzZXQpICUgNjAgIT0gMCkgeworICAgICAgICBpZiAoR0VUX1REX01JQ1JPU0VDT05EUyhvZmZzZXQpICE9IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvZmZzZXQpOwogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiIHJlcHJlc2VudGluZyBhIHdob2xlIG51bWJlciBvZiBtaW51dGVzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2Ygc2Vjb25kcyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKChHRVRfVERfREFZUyhvZmZzZXQpID09IC0xICYmIEdFVF9URF9TRUNPTkRTKG9mZnNldCkgPT0gMCkgfHwKQEAgLTEwMDIsNiArMTA0MCwzMCBAQAogICAgIHJldHVybiByZXByOwogfQogCisvKiByZXByIGlzIGxpa2UgInNvbWVjbGFzcyhhcmcxLCBhcmcyKSIuICBJZiBmb2xkIGlzbid0IDAsCisgKiBzdHVmZgorICogICAgICIsIGZvbGQ9IiArIHJlcHIodHppbmZvKQorICogYmVmb3JlIHRoZSBjbG9zaW5nICIpIi4KKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2FwcGVuZF9rZXl3b3JkX2ZvbGQoUHlPYmplY3QgKnJlcHIsIGludCBmb2xkKQoreworICAgIFB5T2JqZWN0ICp0ZW1wOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhyZXByKSk7CisgICAgaWYgKGZvbGQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgLyogR2V0IHJpZCBvZiB0aGUgdHJhaWxpbmcgJyknLiAqLworICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcHIsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHIpLTEpID09ICcpJyk7CisgICAgdGVtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcocmVwciwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwcikgLSAxKTsKKyAgICBQeV9ERUNSRUYocmVwcik7CisgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSwgZm9sZD0lZCkiLCB0ZW1wLCBmb2xkKTsKKyAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgcmV0dXJuIHJlcHI7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3RyaW5nIGZvcm1hdCBoZWxwZXJzLgogICovCkBAIC0xMDA5LDEwICsxMDcxLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZm9ybWF0X2N0aW1lKFB5RGF0ZVRpbWVfRGF0ZSAqZGF0ZSwgaW50IGhvdXJzLCBpbnQgbWludXRlcywgaW50IHNlY29uZHMpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgKkRheU5hbWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBEYXlOYW1lc1tdID0gewogICAgICAgICAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIgogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgKk1vbnRoTmFtZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IE1vbnRoTmFtZXNbXSA9IHsKICAgICAgICAgIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwKICAgICAgICAgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIgogICAgIH07CkBAIC0xMDU3LDEwICsxMTE5LDggQEAKICAgICB9CiAgICAgLyogT2Zmc2V0IGlzIG5vcm1hbGl6ZWQsIHNvIGl0IGlzIG5lZ2F0aXZlIGlmIGRheXMgPCAwICovCiAgICAgaWYgKEdFVF9URF9EQVlTKG9mZnNldCkgPCAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gb2Zmc2V0OwogICAgICAgICBzaWduID0gJy0nOwotICAgICAgICBvZmZzZXQgPSBkZWx0YV9uZWdhdGl2ZSgoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCk7Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgUHlfU0VUUkVGKG9mZnNldCwgZGVsdGFfbmVnYXRpdmUoKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQpKTsKICAgICAgICAgaWYgKG9mZnNldCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTEwNzIsMTAgKzExMzIsMTEgQEAKICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKICAgICBtaW51dGVzID0gZGl2bW9kKHNlY29uZHMsIDYwLCAmc2Vjb25kcyk7CiAgICAgaG91cnMgPSBkaXZtb2QobWludXRlcywgNjAsICZtaW51dGVzKTsKLSAgICBhc3NlcnQoc2Vjb25kcyA9PSAwKTsKLSAgICAvKiBYWFggaWdub3JlIHN1Yi1taW51dGUgZGF0YSwgY3VycmVudGx5IG5vdCBhbGxvd2VkLiAqLwotICAgIFB5T1Nfc25wcmludGYoYnVmLCBidWZsZW4sICIlYyUwMmQlcyUwMmQiLCBzaWduLCBob3Vycywgc2VwLCBtaW51dGVzKTsKLQorICAgIGlmIChzZWNvbmRzID09IDApCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBidWZsZW4sICIlYyUwMmQlcyUwMmQiLCBzaWduLCBob3Vycywgc2VwLCBtaW51dGVzKTsKKyAgICBlbHNlCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBidWZsZW4sICIlYyUwMmQlcyUwMmQlcyUwMmQiLCBzaWduLCBob3VycywKKyAgICAgICAgICAgICAgICAgICAgICBzZXAsIG1pbnV0ZXMsIHNlcCwgc2Vjb25kcyk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEzMjMsNyArMTM4NCw3IEBACiAgICAgaWYgKHRpbWUgIT0gTlVMTCkgewogICAgICAgICBfUHlfSURFTlRJRklFUih0aW1lKTsKIAotICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRpbWUsICZQeUlkX3RpbWUsICIoKSIpOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRpbWUsICZQeUlkX3RpbWUsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMzA3LDcgKzIzNjgsNyBAQAogICAgIHtOVUxMLCAgICAgIE5VTEx9LAogfTsKIAotc3RhdGljIGNoYXIgZGVsdGFfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZGVsdGFfZG9jW10gPQogUHlEb2NfU1RSKCJEaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGV0aW1lIHZhbHVlcy4iKTsKIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBkZWx0YV9hc19udW1iZXIgPSB7CkBAIC0yNDYyLDE0ICsyNTIzLDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9sb2NhbF9mcm9tX29iamVjdChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqb2JqKQogewotICAgIHN0cnVjdCB0bSAqdG07CisgICAgc3RydWN0IHRtIHRtOwogICAgIHRpbWVfdCB0OwogCiAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob2JqLCAmdCwgX1B5VGltZV9ST1VORF9GTE9PUikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdG0gPSBsb2NhbHRpbWUoJnQpOwotICAgIGlmICh0bSA9PSBOVUxMKSB7CisgICAgaWYgKGxvY2FsdGltZV9yKCZ0LCAmdG0pID09IE5VTEwpIHsKICAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCiAjaWZkZWYgRUlOVkFMCiAgICAgICAgIGlmIChlcnJubyA9PSAwKQpAQCAtMjQ4MCw5ICsyNTQwLDkgQEAKICAgICB9CiAKICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0udG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLnRtX21kYXkpOwogfQogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBjdXJyZW50IHRpbWUuCkBAIC0yNjQ4LDcgKzI3MDgsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfc3RyKFB5RGF0ZVRpbWVfRGF0ZSAqc2VsZikKIHsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsICIoKSIpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgTlVMTCk7CiB9CiAKIApAQCAtMjY3NCw3ICsyNzM0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdHVwbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3RpbWV0dXBsZSwgIigpIik7CisgICAgdHVwbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3RpbWV0dXBsZSwgTlVMTCk7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlc3VsdCA9IHdyYXBfc3RyZnRpbWUoKFB5T2JqZWN0ICopc2VsZiwgZm9ybWF0LCB0dXBsZSwKQEAgLTI3ODYsOSArMjg0NiwxMCBAQAogc3RhdGljIFB5X2hhc2hfdAogZGF0ZV9oYXNoKFB5RGF0ZVRpbWVfRGF0ZSAqc2VsZikKIHsKLSAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpCisgICAgaWYgKHNlbGYtPmhhc2hjb2RlID09IC0xKSB7CiAgICAgICAgIHNlbGYtPmhhc2hjb2RlID0gZ2VuZXJpY19oYXNoKAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilzZWxmLT5kYXRhLCBfUHlEYXRlVGltZV9EQVRFX0RBVEFTSVpFKTsKKyAgICB9CiAKICAgICByZXR1cm4gc2VsZi0+aGFzaGNvZGU7CiB9CkBAIC0yODg2LDcgKzI5NDcsNyBAQAogICAgIHtOVUxMLCAgICAgIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciBkYXRlX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGRhdGVfZG9jW10gPQogUHlEb2NfU1RSKCJkYXRlKHllYXIsIG1vbnRoLCBkYXkpIC0tPiBkYXRlIG9iamVjdCIpOwogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGRhdGVfYXNfbnVtYmVyID0gewpAQCAtMzA0NywxMCArMzEwOCw4IEBACiAgICAgaWYgKGRzdCA9PSBQeV9Ob25lKQogICAgICAgICBnb3RvIEluY29uc2lzdGVudDsKICAgICBpZiAoZGVsdGFfYm9vbCgoUHlEYXRlVGltZV9EZWx0YSAqKWRzdCkgIT0gMCkgewotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0ID0gYWRkX2RhdGV0aW1lX3RpbWVkZWx0YSgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKWRzdCwgMSk7Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgYWRkX2RhdGV0aW1lX3RpbWVkZWx0YSgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKWRzdCwgMSkpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIEZhaWw7CiAgICAgfQpAQCAtMzA4MCwzNyArMzEzOSwzNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHR6aW5mb19yZWR1Y2UoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpzdGF0ZSwgKnRtcDsKKyAgICBQeU9iamVjdCAqYXJncywgKnN0YXRlOwogICAgIFB5T2JqZWN0ICpnZXRpbml0YXJncywgKmdldHN0YXRlOwogICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0aW5pdGFyZ3NfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19nZXRzdGF0ZV9fKTsKIAotICAgIHRtcCA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBnZXRpbml0YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRpbml0YXJnc19fKTsKICAgICBpZiAoZ2V0aW5pdGFyZ3MgIT0gTlVMTCkgewotICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRpbml0YXJncywgdG1wKTsKKyAgICAgICAgYXJncyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZ2V0aW5pdGFyZ3MpOwogICAgICAgICBQeV9ERUNSRUYoZ2V0aW5pdGFyZ3MpOwogICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBhcmdzID0gdG1wOwotICAgICAgICBQeV9JTkNSRUYoYXJncyk7CisKKyAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGdldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7Ci0gICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgdG1wKTsKKyAgICAgICAgc3RhdGUgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGdldHN0YXRlKTsKICAgICAgICAgUHlfREVDUkVGKGdldHN0YXRlKTsKICAgICAgICAgaWYgKHN0YXRlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTE5LDEzICszMTc1LDEyIEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHN0YXRlID0gUHlfTm9uZTsKICAgICAgICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKHNlbGYpOwotICAgICAgICBpZiAoZGljdHB0ciAmJiAqZGljdHB0ciAmJiBQeURpY3RfU2l6ZSgqZGljdHB0cikpCisgICAgICAgIGlmIChkaWN0cHRyICYmICpkaWN0cHRyICYmIFB5RGljdF9TaXplKCpkaWN0cHRyKSkgewogICAgICAgICAgICAgc3RhdGUgPSAqZGljdHB0cjsKKyAgICAgICAgfQogICAgICAgICBQeV9JTkNSRUYoc3RhdGUpOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRih0bXApOwotCiAgICAgaWYgKHN0YXRlID09IFB5X05vbmUpIHsKICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPTikiLCBQeV9UWVBFKHNlbGYpLCBhcmdzKTsKQEAgLTMxNTUsNyArMzIxMCw3IEBACiAgICAge05VTEwsIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciB0emluZm9fZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgdHppbmZvX2RvY1tdID0KIFB5RG9jX1NUUigiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdGltZSB6b25lIGluZm8gb2JqZWN0cy4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBQeURhdGVUaW1lX1RaSW5mb1R5cGUgPSB7CkBAIC0zMjg3LDYgKzMzNDIsMTEgQEAKICAgICAgICAgUHlfSU5DUkVGKHNlbGYtPm5hbWUpOwogICAgICAgICByZXR1cm4gc2VsZi0+bmFtZTsKICAgICB9CisgICAgaWYgKChQeU9iamVjdCAqKXNlbGYgPT0gUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMgfHwKKyAgICAgICAgICAgKEdFVF9URF9EQVlTKHNlbGYtPm9mZnNldCkgPT0gMCAmJgorICAgICAgICAgICAgR0VUX1REX1NFQ09ORFMoc2VsZi0+b2Zmc2V0KSA9PSAwICYmCisgICAgICAgICAgICBHRVRfVERfTUlDUk9TRUNPTkRTKHNlbGYtPm9mZnNldCkgPT0gMCkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiVVRDIik7CiAgICAgLyogT2Zmc2V0IGlzIG5vcm1hbGl6ZWQsIHNvIGl0IGlzIG5lZ2F0aXZlIGlmIGRheXMgPCAwICovCiAgICAgaWYgKEdFVF9URF9EQVlTKHNlbGYtPm9mZnNldCkgPCAwKSB7CiAgICAgICAgIHNpZ24gPSAnLSc7CkBAIC0zMzgyLDcgKzM0NDIsNyBAQAogICAgIHtOVUxMLCBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgdGltZXpvbmVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgdGltZXpvbmVfZG9jW10gPQogUHlEb2NfU1RSKCJGaXhlZCBvZmZzZXQgZnJvbSBVVEMgaW1wbGVtZW50YXRpb24gb2YgdHppbmZvLiIpOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGF0ZVRpbWVfVGltZVpvbmVUeXBlID0gewpAQCAtMzQ2NiwxMiArMzUyNiwxOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2ZvbGQoUHlEYXRlVGltZV9UaW1lICpzZWxmLCB2b2lkICp1bnVzZWQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhUSU1FX0dFVF9GT0xEKHNlbGYpKTsKK30KKwogc3RhdGljIFB5R2V0U2V0RGVmIHRpbWVfZ2V0c2V0W10gPSB7CiAgICAgeyJob3VyIiwgICAgICAgIChnZXR0ZXIpdGltZV9ob3VyfSwKICAgICB7Im1pbnV0ZSIsICAgICAgKGdldHRlcil0aW1lX21pbnV0ZX0sCiAgICAgeyJzZWNvbmQiLCAgICAgIChnZXR0ZXIpcHlfdGltZV9zZWNvbmR9LAogICAgIHsibWljcm9zZWNvbmQiLCAoZ2V0dGVyKXRpbWVfbWljcm9zZWNvbmR9LAotICAgIHsidHppbmZvIiwgICAgICAgICAgKGdldHRlcil0aW1lX3R6aW5mb30sCisgICAgeyJ0emluZm8iLCAgICAgIChnZXR0ZXIpdGltZV90emluZm99LAorICAgIHsiZm9sZCIsICAgICAgICAoZ2V0dGVyKXRpbWVfZm9sZH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0zNDgwLDcgKzM1NDcsNyBAQAogICovCiAKIHN0YXRpYyBjaGFyICp0aW1lX2t3c1tdID0geyJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLCAibWljcm9zZWNvbmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgInR6aW5mbyIsIE5VTEx9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgInR6aW5mbyIsICJmb2xkIiwgTlVMTH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCkBAIC0zNDkyLDEzICszNTU5LDE0IEBACiAgICAgaW50IHNlY29uZCA9IDA7CiAgICAgaW50IHVzZWNvbmQgPSAwOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOworICAgIGludCBmb2xkID0gMDsKIAogICAgIC8qIENoZWNrIGZvciBpbnZvY2F0aW9uIGZyb20gcGlja2xlIHdpdGggX19nZXRzdGF0ZV9fIHN0YXRlICovCiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPj0gMSAmJgogICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDw9IDIgJiYKICAgICAgICAgUHlCeXRlc19DaGVjayhzdGF0ZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCkpICYmCiAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc3RhdGUpID09IF9QeURhdGVUaW1lX1RJTUVfREFUQVNJWkUgJiYKLSAgICAgICAgKCh1bnNpZ25lZCBjaGFyKSAoUHlCeXRlc19BU19TVFJJTkcoc3RhdGUpWzBdKSkgPCAyNCkKKyAgICAgICAgKDB4N0YgJiAoKHVuc2lnbmVkIGNoYXIpIChQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMF0pKSkgPCAyNCkKICAgICB7CiAgICAgICAgIFB5RGF0ZVRpbWVfVGltZSAqbWU7CiAgICAgICAgIGNoYXIgYXdhcmU7CkBAIC0zNTIzLDE5ICszNTkxLDI2IEBACiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICAgICAgbWUtPnR6aW5mbyA9IHR6aW5mbzsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwZGF0YVswXSAmICgxIDw8IDcpKSB7CisgICAgICAgICAgICAgICAgbWUtPmRhdGFbMF0gLT0gMTI4OworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbWU7CiAgICAgfQogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTyIsIHRpbWVfa3dzLAorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaU8kaSIsIHRpbWVfa3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhvdXIsICZtaW51dGUsICZzZWNvbmQsICZ1c2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR6aW5mbykpIHsKLSAgICAgICAgaWYgKGNoZWNrX3RpbWVfYXJncyhob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR6aW5mbywgJmZvbGQpKSB7CisgICAgICAgIGlmIChjaGVja190aW1lX2FyZ3MoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIGZvbGQpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYgPSBuZXdfdGltZV9leChob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgdHppbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSk7CisgICAgICAgIHNlbGYgPSBuZXdfdGltZV9leDIoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIHR6aW5mbywgZm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zNTg1LDYgKzM2NjAsNyBAQAogICAgIGludCBtID0gVElNRV9HRVRfTUlOVVRFKHNlbGYpOwogICAgIGludCBzID0gVElNRV9HRVRfU0VDT05EKHNlbGYpOwogICAgIGludCB1cyA9IFRJTUVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOworICAgIGludCBmb2xkID0gVElNRV9HRVRfRk9MRChzZWxmKTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAogICAgIGlmICh1cykKQEAgLTM1OTcsMzMgKzM2NzMsNjggQEAKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVkLCAlZCkiLCB0eXBlX25hbWUsIGgsIG0pOwogICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBIQVNUWklORk8oc2VsZikpCiAgICAgICAgIHJlc3VsdCA9IGFwcGVuZF9rZXl3b3JkX3R6aW5mbyhyZXN1bHQsIHNlbGYtPnR6aW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIGZvbGQpCisgICAgICAgIHJlc3VsdCA9IGFwcGVuZF9rZXl3b3JkX2ZvbGQocmVzdWx0LCBmb2xkKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9zdHIoUHlEYXRlVGltZV9UaW1lICpzZWxmKQogewotICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIigpIik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfaXNvZm9ybWF0KFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3RpbWVfaXNvZm9ybWF0KFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBjaGFyIGJ1ZlsxMDBdOworICAgIGNoYXIgKnRpbWVzcGVjID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidGltZXNwZWMiLCBOVUxMfTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGludCB1cyA9IFRJTUVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOworICAgIHN0YXRpYyBjaGFyICpzcGVjc1tdWzJdID0geworICAgICAgICB7ImhvdXJzIiwgIiUwMmQifSwKKyAgICAgICAgeyJtaW51dGVzIiwgIiUwMmQ6JTAyZCJ9LAorICAgICAgICB7InNlY29uZHMiLCAiJTAyZDolMDJkOiUwMmQifSwKKyAgICAgICAgeyJtaWxsaXNlY29uZHMiLCAiJTAyZDolMDJkOiUwMmQuJTAzZCJ9LAorICAgICAgICB7Im1pY3Jvc2Vjb25kcyIsICIlMDJkOiUwMmQ6JTAyZC4lMDZkIn0sCisgICAgfTsKKyAgICBzaXplX3QgZ2l2ZW5fc3BlYzsKIAotICAgIGlmICh1cykKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiUwMmQ6JTAyZDolMDJkLiUwNmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiUwMmQ6JTAyZDolMDJkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUihzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9TRUNPTkQoc2VsZikpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifHM6aXNvZm9ybWF0Iiwga2V5d29yZHMsICZ0aW1lc3BlYykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHRpbWVzcGVjID09IE5VTEwgfHwgc3RyY21wKHRpbWVzcGVjLCAiYXV0byIpID09IDApIHsKKyAgICAgICAgaWYgKHVzID09IDApIHsKKyAgICAgICAgICAgIC8qIHNlY29uZHMgKi8KKyAgICAgICAgICAgIGdpdmVuX3NwZWMgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogbWljcm9zZWNvbmRzICovCisgICAgICAgICAgICBnaXZlbl9zcGVjID0gNDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChnaXZlbl9zcGVjID0gMDsgZ2l2ZW5fc3BlYyA8IFB5X0FSUkFZX0xFTkdUSChzcGVjcyk7IGdpdmVuX3NwZWMrKykgeworICAgICAgICAgICAgaWYgKHN0cmNtcCh0aW1lc3BlYywgc3BlY3NbZ2l2ZW5fc3BlY11bMF0pID09IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2l2ZW5fc3BlYyA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIG1pbGxpc2Vjb25kcyAqLworICAgICAgICAgICAgICAgICAgICB1cyA9IHVzIC8gMTAwMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZ2l2ZW5fc3BlYyA9PSBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiVW5rbm93biB0aW1lc3BlYyB2YWx1ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KHNwZWNzW2dpdmVuX3NwZWNdWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHNlbGYpLCBUSU1FX0dFVF9NSU5VVEUoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORChzZWxmKSwgdXMpOworICAgIH0KIAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCB8fCAhSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzc1MCw5ICszODYxLDIzIEBACiB0aW1lX2hhc2goUHlEYXRlVGltZV9UaW1lICpzZWxmKQogewogICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkgewotICAgICAgICBQeU9iamVjdCAqb2Zmc2V0OwotCi0gICAgICAgIG9mZnNldCA9IHRpbWVfdXRjb2Zmc2V0KChQeU9iamVjdCAqKXNlbGYsIE5VTEwpOworICAgICAgICBQeU9iamVjdCAqb2Zmc2V0LCAqc2VsZjA7CisgICAgICAgIGlmIChEQVRFX0dFVF9GT0xEKHNlbGYpKSB7CisgICAgICAgICAgICBzZWxmMCA9IG5ld190aW1lX2V4MihEQVRFX0dFVF9IT1VSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgUHlfVFlQRShzZWxmKSk7CisgICAgICAgICAgICBpZiAoc2VsZjAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzZWxmMCA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZjApOworICAgICAgICB9CisgICAgICAgIG9mZnNldCA9IHRpbWVfdXRjb2Zmc2V0KHNlbGYwLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYwKTsKIAogICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0zNzk4LDE1ICszOTIzLDI0IEBACiAgICAgaW50IHNzID0gVElNRV9HRVRfU0VDT05EKHNlbGYpOwogICAgIGludCB1cyA9IFRJTUVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lOworICAgIGludCBmb2xkID0gVElNRV9HRVRfRk9MRChzZWxmKTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTzpyZXBsYWNlIiwKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaU8kaTpyZXBsYWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9rd3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoaCwgJm1tLCAmc3MsICZ1cywgJnR6aW5mbykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoaCwgJm1tLCAmc3MsICZ1cywgJnR6aW5mbywgJmZvbGQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB0dXBsZSA9IFB5X0J1aWxkVmFsdWUoImlpaWlPIiwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbyk7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGNsb25lID0gdGltZV9uZXcoUHlfVFlQRShzZWxmKSwgdHVwbGUsIE5VTEwpOworICAgIGlmIChjbG9uZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChmb2xkICE9IDAgJiYgZm9sZCAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sZCBtdXN0IGJlIGVpdGhlciAwIG9yIDEiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFRJTUVfU0VUX0ZPTEQoY2xvbmUsIGZvbGQpOworICAgIH0KICAgICBQeV9ERUNSRUYodHVwbGUpOwogICAgIHJldHVybiBjbG9uZTsKIH0KQEAgLTM4MTksNyArMzk1Myw3IEBACiAgKiBfX2dldHN0YXRlX18gaXNuJ3QgZXhwb3NlZC4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9UaW1lICpzZWxmKQordGltZV9nZXRzdGF0ZShQeURhdGVUaW1lX1RpbWUgKnNlbGYsIGludCBwcm90bykKIHsKICAgICBQeU9iamVjdCAqYmFzZXN0YXRlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwpAQCAtMzgyNyw2ICszOTYxLDkgQEAKICAgICBiYXNlc3RhdGUgPSAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKXNlbGYtPmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX1RJTUVfREFUQVNJWkUpOwogICAgIGlmIChiYXNlc3RhdGUgIT0gTlVMTCkgeworICAgICAgICBpZiAocHJvdG8gPiAzICYmIFRJTUVfR0VUX0ZPTEQoc2VsZikpCisgICAgICAgICAgICAvKiBTZXQgdGhlIGZpcnN0IGJpdCBvZiB0aGUgZmlyc3QgYnl0ZSAqLworICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYmFzZXN0YXRlKVswXSB8PSAoMSA8PCA3KTsKICAgICAgICAgaWYgKCEgSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmVzdWx0ID0gUHlUdXBsZV9QYWNrKDEsIGJhc2VzdGF0ZSk7CiAgICAgICAgIGVsc2UKQEAgLTM4MzcsMTYgKzM5NzQsMjEgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfcmVkdWNlKFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3RpbWVfcmVkdWNlKFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPTikiLCBQeV9UWVBFKHNlbGYpLCB0aW1lX2dldHN0YXRlKHNlbGYpKTsKKyAgICBpbnQgcHJvdG8gPSAwOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsICZwcm90bykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPTikiLCBQeV9UWVBFKHNlbGYpLCB0aW1lX2dldHN0YXRlKHNlbGYsIHByb3RvKSk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiB0aW1lX21ldGhvZHNbXSA9IHsKIAotICAgIHsiaXNvZm9ybWF0IiwgICAoUHlDRnVuY3Rpb24pdGltZV9pc29mb3JtYXQsICAgICAgICBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJSZXR1cm4gc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdCwgSEg6TU06U1NbLm1tbW1tbV0iCi0gICAgICAgICAgICAgICAiWytISDpNTV0uIil9LAorICAgIHsiaXNvZm9ybWF0IiwgICAoUHlDRnVuY3Rpb24pdGltZV9pc29mb3JtYXQsICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoIlJldHVybiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LCBbSEhbOk1NWzpTU1subW1tW3V1dV1dXV1dIgorICAgICAgICAgICAgICAgIlsrSEg6TU1dLlxuXG4iCisgICAgICAgICAgICAgICAidGltZXNwZWMgc3BlY2lmaWVzIHdoYXQgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlLlxuIil9LAogCiAgICAgeyJzdHJmdGltZSIsICAgICAgICAoUHlDRnVuY3Rpb24pdGltZV9zdHJmdGltZSwgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigiZm9ybWF0IC0+IHN0cmZ0aW1lKCkgc3R5bGUgc3RyaW5nLiIpfSwKQEAgLTM4NjYsMTMgKzQwMDgsMTMgQEAKICAgICB7InJlcGxhY2UiLCAgICAgKFB5Q0Z1bmN0aW9uKXRpbWVfcmVwbGFjZSwgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJSZXR1cm4gdGltZSB3aXRoIG5ldyBzcGVjaWZpZWQgZmllbGRzLiIpfSwKIAotICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbil0aW1lX3JlZHVjZSwgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICBQeURvY19TVFIoIl9fcmVkdWNlX18oKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCisgICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKXRpbWVfcmVkdWNlLCAgICAgICAgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoIl9fcmVkdWNlX2V4X18ocHJvdG8pIC0+IChjbHMsIHN0YXRlKSIpfSwKIAogICAgIHtOVUxMLCAgICAgIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciB0aW1lX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHRpbWVfZG9jW10gPQogUHlEb2NfU1RSKCJ0aW1lKFtob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLCB0emluZm9dXV1dXSkgLS0+IGEgdGltZSBvYmplY3RcblwKIFxuXAogQWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuIHR6aW5mbyBtYXkgYmUgTm9uZSwgb3IgYW4gaW5zdGFuY2Ugb2ZcblwKQEAgLTM5NjAsMTIgKzQxMDIsMTkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZGF0ZXRpbWVfZm9sZChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCB2b2lkICp1bnVzZWQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhEQVRFX0dFVF9GT0xEKHNlbGYpKTsKK30KKwogc3RhdGljIFB5R2V0U2V0RGVmIGRhdGV0aW1lX2dldHNldFtdID0gewogICAgIHsiaG91ciIsICAgICAgICAoZ2V0dGVyKWRhdGV0aW1lX2hvdXJ9LAogICAgIHsibWludXRlIiwgICAgICAoZ2V0dGVyKWRhdGV0aW1lX21pbnV0ZX0sCiAgICAgeyJzZWNvbmQiLCAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfc2Vjb25kfSwKICAgICB7Im1pY3Jvc2Vjb25kIiwgKGdldHRlcilkYXRldGltZV9taWNyb3NlY29uZH0sCi0gICAgeyJ0emluZm8iLCAgICAgICAgICAoZ2V0dGVyKWRhdGV0aW1lX3R6aW5mb30sCisgICAgeyJ0emluZm8iLCAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfdHppbmZvfSwKKyAgICB7ImZvbGQiLCAgICAgICAgKGdldHRlcilkYXRldGltZV9mb2xkfSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTM5NzUsNyArNDEyNCw3IEBACiAKIHN0YXRpYyBjaGFyICpkYXRldGltZV9rd3NbXSA9IHsKICAgICAieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwKLSAgICAibWljcm9zZWNvbmQiLCAidHppbmZvIiwgTlVMTAorICAgICJtaWNyb3NlY29uZCIsICJ0emluZm8iLCAiZm9sZCIsIE5VTEwKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zOTkwLDYgKzQxMzksNyBAQAogICAgIGludCBtaW51dGUgPSAwOwogICAgIGludCBzZWNvbmQgPSAwOwogICAgIGludCB1c2Vjb25kID0gMDsKKyAgICBpbnQgZm9sZCA9IDA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CiAKICAgICAvKiBDaGVjayBmb3IgaW52b2NhdGlvbiBmcm9tIHBpY2tsZSB3aXRoIF9fZ2V0c3RhdGVfXyBzdGF0ZSAqLwpAQCAtMzk5Nyw3ICs0MTQ3LDcgQEAKICAgICAgICAgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA8PSAyICYmCiAgICAgICAgIFB5Qnl0ZXNfQ2hlY2soc3RhdGUgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApKSAmJgogICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHN0YXRlKSA9PSBfUHlEYXRlVGltZV9EQVRFVElNRV9EQVRBU0laRSAmJgotICAgICAgICBNT05USF9JU19TQU5FKFB5Qnl0ZXNfQVNfU1RSSU5HKHN0YXRlKVsyXSkpCisgICAgICAgIE1PTlRIX0lTX1NBTkUoUHlCeXRlc19BU19TVFJJTkcoc3RhdGUpWzJdICYgMHg3RikpCiAgICAgewogICAgICAgICBQeURhdGVUaW1lX0RhdGVUaW1lICptZTsKICAgICAgICAgY2hhciBhd2FyZTsKQEAgLTQwMjIsMjggKzQxNzIsNzQgQEAKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodHppbmZvKTsKICAgICAgICAgICAgICAgICBtZS0+dHppbmZvID0gdHppbmZvOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBkYXRhWzJdICYgKDEgPDwgNykpIHsKKyAgICAgICAgICAgICAgICBtZS0+ZGF0YVsyXSAtPSAxMjg7CisgICAgICAgICAgICAgICAgbWUtPmZvbGQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbWUtPmZvbGQgPSAwOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiltZTsKICAgICB9CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiaWlpfGlpaWlPIiwgZGF0ZXRpbWVfa3dzLAorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJpaWl8aWlpaU8kaSIsIGRhdGV0aW1lX2t3cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ5ZWFyLCAmbW9udGgsICZkYXksICZob3VyLCAmbWludXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlY29uZCwgJnVzZWNvbmQsICZ0emluZm8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vjb25kLCAmdXNlY29uZCwgJnR6aW5mbywgJmZvbGQpKSB7CiAgICAgICAgIGlmIChjaGVja19kYXRlX2FyZ3MoeWVhciwgbW9udGgsIGRheSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChjaGVja190aW1lX2FyZ3MoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQpIDwgMCkKKyAgICAgICAgaWYgKGNoZWNrX3RpbWVfYXJncyhob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgZm9sZCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZiA9IG5ld19kYXRldGltZV9leCh5ZWFyLCBtb250aCwgZGF5LAorICAgICAgICBzZWxmID0gbmV3X2RhdGV0aW1lX2V4Mih5ZWFyLCBtb250aCwgZGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvLCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvLCBmb2xkLCB0eXBlKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS8qIFRNX0ZVTkMgaXMgdGhlIHNoYXJlZCB0eXBlIG9mIGxvY2FsdGltZSgpIGFuZCBnbXRpbWUoKS4gKi8KLXR5cGVkZWYgc3RydWN0IHRtICooKlRNX0ZVTkMpKGNvbnN0IHRpbWVfdCAqdGltZXIpOworLyogVE1fRlVOQyBpcyB0aGUgc2hhcmVkIHR5cGUgb2YgbG9jYWx0aW1lX3IoKSBhbmQgZ210aW1lX3IoKS4gKi8KK3R5cGVkZWYgc3RydWN0IHRtICooKlRNX0ZVTkMpKGNvbnN0IHRpbWVfdCAqdGltZXIsIHN0cnVjdCB0bSopOworCisvKiBBcyBvZiB2ZXJzaW9uIDIwMTVmIG1heCBmb2xkIGluIElBTkEgZGF0YWJhc2UgaXMKKyAqIDIzIGhvdXJzIGF0IDE5NjktMDktMzAgMTM6MDA6MDAgaW4gS3dhamFsZWluLiAqLworc3RhdGljIGxvbmcgbG9uZyBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwOworLyogTkI6IGRhdGUoMTk3MCwxLDEpLnRvb3JkaW5hbCgpID09IDcxOTE2MyAqLworc3RhdGljIGxvbmcgbG9uZyBlcG9jaCA9IFB5X0xMKDcxOTE2MykgKiAyNCAqIDYwICogNjA7CisKK3N0YXRpYyBsb25nIGxvbmcKK3V0Y190b19zZWNvbmRzKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksCisgICAgICAgICAgICAgICBpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCkKK3sKKyAgICBsb25nIGxvbmcgb3JkaW5hbCA9IHltZF90b19vcmQoeWVhciwgbW9udGgsIGRheSk7CisgICAgcmV0dXJuICgob3JkaW5hbCAqIDI0ICsgaG91cikgKiA2MCArIG1pbnV0ZSkgKiA2MCArIHNlY29uZDsKK30KKworc3RhdGljIGxvbmcgbG9uZworbG9jYWwobG9uZyBsb25nIHUpCit7CisgICAgc3RydWN0IHRtIGxvY2FsX3RpbWU7CisgICAgdGltZV90IHQ7CisgICAgdSAtPSBlcG9jaDsKKyAgICB0ID0gdTsKKyAgICBpZiAodCAhPSB1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgLyogWFhYOiBhZGQgYm91bmRzIGNoZWNraW5nICovCisgICAgaWYgKGxvY2FsdGltZV9yKCZ0LCAmbG9jYWxfdGltZSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHV0Y190b19zZWNvbmRzKGxvY2FsX3RpbWUudG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX2hvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX3NlYyk7Cit9CiAKIC8qIEludGVybmFsIGhlbHBlci4KICAqIEJ1aWxkIGRhdGV0aW1lIGZyb20gYSB0aW1lX3QgYW5kIGEgZGlzdGluY3QgY291bnQgb2YgbWljcm9zZWNvbmRzLgpAQCAtNDA1MywxMCArNDI0OSwxMCBAQAogZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCB0aW1lX3QgdGltZXQsIGludCB1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8pCiB7Ci0gICAgc3RydWN0IHRtICp0bTsKKyAgICBzdHJ1Y3QgdG0gdG07CisgICAgaW50IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBmb2xkID0gMDsKIAotICAgIHRtID0gZigmdGltZXQpOwotICAgIGlmICh0bSA9PSBOVUxMKSB7CisgICAgaWYgKGYoJnRpbWV0LCAmdG0pID09IE5VTEwpIHsKICNpZmRlZiBFSU5WQUwKICAgICAgICAgaWYgKGVycm5vID09IDApCiAgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKQEAgLTQwNjQsNjEgKzQyNjAsNDAgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICB9CiAKKyAgICB5ZWFyID0gdG0udG1feWVhciArIDE5MDA7CisgICAgbW9udGggPSB0bS50bV9tb24gKyAxOworICAgIGRheSA9IHRtLnRtX21kYXk7CisgICAgaG91ciA9IHRtLnRtX2hvdXI7CisgICAgbWludXRlID0gdG0udG1fbWluOwogICAgIC8qIFRoZSBwbGF0Zm9ybSBsb2NhbHRpbWUvZ210aW1lIG1heSBpbnNlcnQgbGVhcCBzZWNvbmRzLAotICAgICAqIGluZGljYXRlZCBieSB0bS0+dG1fc2VjID4gNTkuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZW0sCisgICAgICogaW5kaWNhdGVkIGJ5IHRtLnRtX3NlYyA+IDU5LiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVtLAogICAgICAqIGV4Y2VwdCB0byB0aGUgZXh0ZW50IHRoYXQgcGFzc2luZyB0aGVtIG9uIHRvIHRoZSBkYXRldGltZQogICAgICAqIGNvbnN0cnVjdG9yIHdvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGEgcmVhc29uIHRoYXQKICAgICAgKiBtYWRlIG5vIHNlbnNlIHRvIHRoZSB1c2VyLgogICAgICAqLwotICAgIGlmICh0bS0+dG1fc2VjID4gNTkpCi0gICAgICAgIHRtLT50bV9zZWMgPSA1OTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaWlpaWlPIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1faG91ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9taW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fc2VjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOwotfQorICAgIHNlY29uZCA9IFB5X01JTig1OSwgdG0udG1fc2VjKTsKIAotc3RhdGljIHRpbWVfdAotX1B5VGltZV9Eb3VibGVUb1RpbWV0KGRvdWJsZSB4KQotewotICAgIHRpbWVfdCByZXN1bHQ7Ci0gICAgZG91YmxlIGRpZmY7CisgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lICYmIGYgPT0gbG9jYWx0aW1lX3IpIHsKKyAgICAgICAgbG9uZyBsb25nIHByb2JlX3NlY29uZHMsIHJlc3VsdF9zZWNvbmRzLCB0cmFuc2l0aW9uOwogCi0gICAgcmVzdWx0ID0gKHRpbWVfdCl4OwotICAgIC8qIEhvdyBtdWNoIGluZm8gZGlkIHdlIGxvc2U/ICB0aW1lX3QgbWF5IGJlIGFuIGludGVncmFsIG9yCi0gICAgICogZmxvYXRpbmcgdHlwZSwgYW5kIHdlIGRvbid0IGtub3cgd2hpY2guICBJZiBpdCdzIGludGVncmFsLAotICAgICAqIHdlIGRvbid0IGtub3cgd2hldGhlciBDIHRydW5jYXRlcywgcm91bmRzLCByZXR1cm5zIHRoZSBmbG9vciwKLSAgICAgKiBldGMuICBJZiB3ZSBsb3N0IGEgc2Vjb25kIG9yIG1vcmUsIHRoZSBDIHJvdW5kaW5nIGlzCi0gICAgICogdW5yZWFzb25hYmxlLCBvciB0aGUgaW5wdXQganVzdCBkb2Vzbid0IGZpdCBpbiBhIHRpbWVfdDsKLSAgICAgKiBjYWxsIGl0IGFuIGVycm9yIHJlZ2FyZGxlc3MuICBOb3RlIHRoYXQgdGhlIG9yaWdpbmFsIGNhc3QgdG8KLSAgICAgKiB0aW1lX3QgY2FuIGNhdXNlIGEgQyBlcnJvciB0b28sIGJ1dCBub3RoaW5nIHdlIGNhbiBkbyB0bwotICAgICAqIHdvcm0gYXJvdW5kIHRoYXQuCi0gICAgICovCi0gICAgZGlmZiA9IHggLSAoZG91YmxlKXJlc3VsdDsKLSAgICBpZiAoZGlmZiA8PSAtMS4wIHx8IGRpZmYgPj0gMS4wKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yIHBsYXRmb3JtIHRpbWVfdCIpOwotICAgICAgICByZXN1bHQgPSAodGltZV90KS0xOworICAgICAgICByZXN1bHRfc2Vjb25kcyA9IHV0Y190b19zZWNvbmRzKHllYXIsIG1vbnRoLCBkYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQpOworICAgICAgICAvKiBQcm9iZSBtYXhfZm9sZF9zZWNvbmRzIHRvIGRldGVjdCBhIGZvbGQuICovCisgICAgICAgIHByb2JlX3NlY29uZHMgPSBsb2NhbChlcG9jaCArIHRpbWV0IC0gbWF4X2ZvbGRfc2Vjb25kcyk7CisgICAgICAgIGlmIChwcm9iZV9zZWNvbmRzID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHRyYW5zaXRpb24gPSByZXN1bHRfc2Vjb25kcyAtIHByb2JlX3NlY29uZHMgLSBtYXhfZm9sZF9zZWNvbmRzOworICAgICAgICBpZiAodHJhbnNpdGlvbiA8IDApIHsKKyAgICAgICAgICAgIHByb2JlX3NlY29uZHMgPSBsb2NhbChlcG9jaCArIHRpbWV0ICsgdHJhbnNpdGlvbik7CisgICAgICAgICAgICBpZiAocHJvYmVfc2Vjb25kcyA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChwcm9iZV9zZWNvbmRzID09IHJlc3VsdF9zZWNvbmRzKQorICAgICAgICAgICAgICAgIGZvbGQgPSAxOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIFJvdW5kIGEgZG91YmxlIHRvIHRoZSBuZWFyZXN0IGxvbmcuICB8eHwgbXVzdCBiZSBzbWFsbCBlbm91Z2ggdG8gZml0Ci0gKiBpbiBhIEMgbG9uZzsgdGhpcyBpcyBub3QgY2hlY2tlZC4KLSAqLwotc3RhdGljIGRvdWJsZQotX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGRvdWJsZSB4KQotewotICAgIGRvdWJsZSByb3VuZGVkID0gcm91bmQoeCk7Ci0gICAgaWYgKGZhYnMoeC1yb3VuZGVkKSA9PSAwLjUpCi0gICAgICAgIC8qIGhhbGZ3YXkgY2FzZTogcm91bmQgdG8gZXZlbiAqLwotICAgICAgICByb3VuZGVkID0gMi4wKnJvdW5kKHgvMi4wKTsKLSAgICByZXR1cm4gcm91bmRlZDsKKyAgICByZXR1cm4gbmV3X2RhdGV0aW1lX2V4Mih5ZWFyLCBtb250aCwgZGF5LCBob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZSwgc2Vjb25kLCB1cywgdHppbmZvLCBmb2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeVR5cGVPYmplY3QgKiljbHMpOwogfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIuCkBAIC00MTI5LDMyICs0MzA0LDE3IEBACiAgKiB0byBnZXQgdGhhdCBtdWNoIHByZWNpc2lvbiAoZS5nLiwgQyB0aW1lKCkgaXNuJ3QgZ29vZCBlbm91Z2gpLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCBkb3VibGUgdGltZXN0YW1wLAorZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCBQeU9iamVjdCAqdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbykKIHsKICAgICB0aW1lX3QgdGltZXQ7Ci0gICAgZG91YmxlIGZyYWN0aW9uOwotICAgIGludCB1czsKKyAgICBsb25nIHVzOwogCi0gICAgdGltZXQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQodGltZXN0YW1wKTsKLSAgICBpZiAodGltZXQgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXZhbCh0aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aW1ldCwgJnVzLCBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZyYWN0aW9uID0gdGltZXN0YW1wIC0gKGRvdWJsZSl0aW1ldDsKLSAgICB1cyA9IChpbnQpX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGZyYWN0aW9uICogMWU2KTsKLSAgICBpZiAodXMgPCAwKSB7Ci0gICAgICAgIC8qIFRydW5jYXRpb24gdG93YXJkcyB6ZXJvIGlzIG5vdCB3aGF0IHdlIHdhbnRlZAotICAgICAgICAgICBmb3IgbmVnYXRpdmUgbnVtYmVycyAoUHl0aG9uJ3MgbW9kIHNlbWFudGljcykgKi8KLSAgICAgICAgdGltZXQgLT0gMTsKLSAgICAgICAgdXMgKz0gMTAwMDAwMDsKLSAgICB9Ci0gICAgLyogSWYgdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBvbmUgbWljcm9zZWNvbmQgc21hbGxlciB0aGFuIGEKLSAgICAgKiBmdWxsIHNlY29uZCwgcm91bmQgdXAuIE90aGVyd2lzZSwgVmFsdWVFcnJvcnMgYXJlIHJhaXNlZAotICAgICAqIGZvciBzb21lIGZsb2F0cy4gKi8KLSAgICBpZiAodXMgPT0gMTAwMDAwMCkgewotICAgICAgICB0aW1ldCArPSAxOwotICAgICAgICB1cyA9IDA7Ci0gICAgfQotICAgIHJldHVybiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhjbHMsIGYsIHRpbWV0LCB1cywgdHppbmZvKTsKKworICAgIHJldHVybiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhjbHMsIGYsIHRpbWV0LCAoaW50KXVzLCB0emluZm8pOwogfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIuCkBAIC00MjAxLDE0ICs0MzYxLDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZiA9IGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoKFB5T2JqZWN0ICopdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9PSBQeV9Ob25lID8gbG9jYWx0aW1lIDogZ210aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6ID09IFB5X05vbmUgPyBsb2NhbHRpbWVfciA6IGdtdGltZV9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6KTsKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6ICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotCi0gICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6LCAmUHlJZF9mcm9tdXRjLCAiTyIsIHNlbGYpOwotICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6LCAmUHlJZF9mcm9tdXRjLCAiTiIsIHNlbGYpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTQyMTksNyArNDM3Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfdXRjbm93KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpkdW1teSkKIHsKLSAgICByZXR1cm4gZGF0ZXRpbWVfYmVzdF9wb3NzaWJsZShjbHMsIGdtdGltZSwgUHlfTm9uZSk7CisgICAgcmV0dXJuIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoY2xzLCBnbXRpbWVfciwgUHlfTm9uZSk7CiB9CiAKIC8qIFJldHVybiBuZXcgbG9jYWwgZGF0ZXRpbWUgZnJvbSB0aW1lc3RhbXAgKFB5dGhvbiB0aW1lc3RhbXAgLS0gYSBkb3VibGUpLiAqLwpAQCAtNDIyNywyNiArNDM4NCwyMyBAQAogZGF0ZXRpbWVfZnJvbXRpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIFB5T2JqZWN0ICpzZWxmOwotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidGltZXN0YW1wIiwgInR6IiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJkfE86ZnJvbXRpbWVzdGFtcCIsCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT3xPOmZyb210aW1lc3RhbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywgJnRpbWVzdGFtcCwgJnR6aW5mbykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZiA9IGRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKGNscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvID09IFB5X05vbmUgPyBsb2NhbHRpbWUgOiBnbXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyA9PSBQeV9Ob25lID8gbG9jYWx0aW1lX3IgOiBnbXRpbWVfciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOwogICAgIGlmIChzZWxmICE9IE5VTEwgJiYgdHppbmZvICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotCi0gICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJOIiwgc2VsZik7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtNDI1NSwxMSArNDQwOSwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3V0Y2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6dXRjZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQotICAgICAgICByZXN1bHQgPSBkYXRldGltZV9mcm9tX3RpbWVzdGFtcChjbHMsIGdtdGltZSwgdGltZXN0YW1wLAorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKKyAgICAgICAgcmVzdWx0ID0gZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoY2xzLCBnbXRpbWVfciwgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDI4OCwyNyArNDQ0MiwzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2NvbWJpbmUoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZGF0ZSIsICJ0aW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImRhdGUiLCAidGltZSIsICJ0emluZm8iLCBOVUxMfTsKICAgICBQeU9iamVjdCAqZGF0ZTsKICAgICBQeU9iamVjdCAqdGltZTsKKyAgICBQeU9iamVjdCAqdHppbmZvID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPIU8hOmNvbWJpbmUiLCBrZXl3b3JkcywKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyFPIXxPOmNvbWJpbmUiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX0RhdGVUeXBlLCAmZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RpbWVUeXBlLCAmdGltZSkpIHsKLSAgICAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7Ci0KLSAgICAgICAgaWYgKEhBU1RaSU5GTyh0aW1lKSkKLSAgICAgICAgICAgIHR6aW5mbyA9ICgoUHlEYXRlVGltZV9UaW1lICopdGltZSktPnR6aW5mbzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RpbWVUeXBlLCAmdGltZSwgJnR6aW5mbykpIHsKKyAgICAgICAgaWYgKHR6aW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoSEFTVFpJTkZPKHRpbWUpKQorICAgICAgICAgICAgICAgIHR6aW5mbyA9ICgoUHlEYXRlVGltZV9UaW1lICopdGltZSktPnR6aW5mbzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0emluZm8gPSBQeV9Ob25lOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoZGF0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZGF0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUih0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUodGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JQ1JPU0VDT05EKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihkYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlDUk9TRUNPTkQodGltZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgREFURV9TRVRfRk9MRChyZXN1bHQsIFRJTUVfR0VUX0ZPTEQodGltZSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDM3Niw3ICs0NTM1LDcgQEAKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBuZXdfZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGRhdGUpID8gZGF0ZS0+dHppbmZvIDogUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGRhdGUpID8gZGF0ZS0+dHppbmZvIDogUHlfTm9uZSwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NDY5LDkgKzQ2MjgsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgICAgICAgICBpZiAob2ZmZGlmZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZGVsdGFfc3VidHJhY3QocmVzdWx0LCBvZmZkaWZmKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgZGVsdGFfc3VidHJhY3QocmVzdWx0LCBvZmZkaWZmKSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG9mZmRpZmYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTIxLDYgKzQ2NzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIEdFVF9ZRUFSKHNlbGYpLCBHRVRfTU9OVEgoc2VsZiksIEdFVF9EQVkoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpKTsKICAgICB9CisgICAgaWYgKGJhc2VyZXByICE9IE5VTEwgJiYgREFURV9HRVRfRk9MRChzZWxmKSAhPSAwKQorICAgICAgICBiYXNlcmVwciA9IGFwcGVuZF9rZXl3b3JkX2ZvbGQoYmFzZXJlcHIsIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogICAgIGlmIChiYXNlcmVwciA9PSBOVUxMIHx8ICEgSEFTVFpJTkZPKHNlbGYpKQogICAgICAgICByZXR1cm4gYmFzZXJlcHI7CiAgICAgcmV0dXJuIGFwcGVuZF9rZXl3b3JkX3R6aW5mbyhiYXNlcmVwciwgc2VsZi0+dHppbmZvKTsKQEAgLTQ1MzYsMjUgKzQ2OTUsNTUgQEAKIGRhdGV0aW1lX2lzb2Zvcm1hdChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIGludCBzZXAgPSAnVCc7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNlcCIsIE5VTEx9OworICAgIGNoYXIgKnRpbWVzcGVjID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic2VwIiwgInRpbWVzcGVjIiwgTlVMTH07CiAgICAgY2hhciBidWZmZXJbMTAwXTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGludCB1cyA9IERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOworICAgIHN0YXRpYyBjaGFyICpzcGVjc1tdWzJdID0geworICAgICAgICB7ImhvdXJzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkIn0sCisgICAgICAgIHsibWludXRlcyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkIn0sCisgICAgICAgIHsic2Vjb25kcyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQifSwKKyAgICAgICAgeyJtaWxsaXNlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkLiUwM2QifSwKKyAgICAgICAgeyJtaWNyb3NlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkLiUwNmQifSwKKyAgICB9OworICAgIHNpemVfdCBnaXZlbl9zcGVjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Qzppc29mb3JtYXQiLCBrZXl3b3JkcywgJnNlcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Q3M6aXNvZm9ybWF0Iiwga2V5d29yZHMsICZzZXAsICZ0aW1lc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh1cykKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDZkIiwKKworICAgIGlmICh0aW1lc3BlYyA9PSBOVUxMIHx8IHN0cmNtcCh0aW1lc3BlYywgImF1dG8iKSA9PSAwKSB7CisgICAgICAgIGlmICh1cyA9PSAwKSB7CisgICAgICAgICAgICAvKiBzZWNvbmRzICovCisgICAgICAgICAgICBnaXZlbl9zcGVjID0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG1pY3Jvc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoZ2l2ZW5fc3BlYyA9IDA7IGdpdmVuX3NwZWMgPCBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpOyBnaXZlbl9zcGVjKyspIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAodGltZXNwZWMsIHNwZWNzW2dpdmVuX3NwZWNdWzBdKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdpdmVuX3NwZWMgPT0gMykgeworICAgICAgICAgICAgICAgICAgICB1cyA9IHVzIC8gMTAwMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZ2l2ZW5fc3BlYyA9PSBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiVW5rbm93biB0aW1lc3BlYyB2YWx1ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KHNwZWNzW2dpdmVuX3NwZWNdWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLCAoaW50KXNlcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksIHVzKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLCAoaW50KXNlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZikpOworICAgIH0KIAogICAgIGlmICghcmVzdWx0IHx8ICFIQVNUWklORk8oc2VsZikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC00NTgxLDYgKzQ3NzAsNzAgQEAKIC8qIE1pc2NlbGxhbmVvdXMgbWV0aG9kcy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKK2ZsaXBfZm9sZChQeU9iamVjdCAqZHQpCit7CisgICAgcmV0dXJuIG5ld19kYXRldGltZV9leDIoR0VUX1lFQVIoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oZHQpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopZHQpLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFEQVRFX0dFVF9GT0xEKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGR0KSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfZmxpcF9mb2xkX29mZnNldChQeU9iamVjdCAqZHQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKmZsaXBfZHQ7CisKKyAgICBmbGlwX2R0ID0gZmxpcF9mb2xkKGR0KTsKKyAgICBpZiAoZmxpcF9kdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBkYXRldGltZV91dGNvZmZzZXQoZmxpcF9kdCwgTlVMTCk7CisgICAgUHlfREVDUkVGKGZsaXBfZHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFBFUCA0OTUgZXhjZXB0aW9uOiBXaGVuZXZlciBvbmUgb3IgYm90aCBvZiB0aGUgb3BlcmFuZHMgaW4KKyAqIGludGVyLXpvbmUgY29tcGFyaXNvbiBpcyBzdWNoIHRoYXQgaXRzIHV0Y29mZnNldCgpIGRlcGVuZHMKKyAqIG9uIHRoZSB2YWx1ZSBvZiBpdHMgZm9sZCBmb2xkIGF0dHJpYnV0ZSwgdGhlIHJlc3VsdCBpcyBGYWxzZS4KKyAqCisgKiBSZXR1cm4gMSBpZiBleGNlcHRpb24gYXBwbGllcywgMCBpZiBub3QsICBhbmQgLTEgb24gZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK3BlcDQ5NV9lcV9leGNlcHRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9mZnNldF9zZWxmLCBQeU9iamVjdCAqb2Zmc2V0X290aGVyKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIFB5T2JqZWN0ICpmbGlwX29mZnNldDsKKworICAgIGZsaXBfb2Zmc2V0ID0gZ2V0X2ZsaXBfZm9sZF9vZmZzZXQoc2VsZik7CisgICAgaWYgKGZsaXBfb2Zmc2V0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgIT0gb2Zmc2V0X3NlbGYgJiYKKyAgICAgICAgZGVsdGFfY21wKGZsaXBfb2Zmc2V0LCBvZmZzZXRfc2VsZikpCisgICAgeworICAgICAgICByZXN1bHQgPSAxOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorICAgIFB5X0RFQ1JFRihmbGlwX29mZnNldCk7CisKKyAgICBmbGlwX29mZnNldCA9IGdldF9mbGlwX2ZvbGRfb2Zmc2V0KG90aGVyKTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChmbGlwX29mZnNldCAhPSBvZmZzZXRfb3RoZXIgJiYKKyAgICAgICAgZGVsdGFfY21wKGZsaXBfb2Zmc2V0LCBvZmZzZXRfb3RoZXIpKQorICAgICAgICByZXN1bHQgPSAxOworIGRvbmU6CisgICAgUHlfREVDUkVGKGZsaXBfb2Zmc2V0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwpAQCAtNDYyNyw2ICs0ODgwLDEzIEBACiAgICAgICAgIGRpZmYgPSBtZW1jbXAoKChQeURhdGVUaW1lX0RhdGVUaW1lICopc2VsZiktPmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopb3RoZXIpLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFKTsKKyAgICAgICAgaWYgKChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgJiYgZGlmZiA9PSAwKSB7CisgICAgICAgICAgICBpbnQgZXggPSBwZXA0OTVfZXFfZXhjZXB0aW9uKHNlbGYsIG90aGVyLCBvZmZzZXQxLCBvZmZzZXQyKTsKKyAgICAgICAgICAgIGlmIChleCA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBpZiAoZXgpCisgICAgICAgICAgICAgICAgZGlmZiA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSBpZiAob2Zmc2V0MSAhPSBQeV9Ob25lICYmIG9mZnNldDIgIT0gUHlfTm9uZSkgewpAQCAtNDY0Miw2ICs0OTAyLDEzIEBACiAgICAgICAgICAgICBkaWZmID0gR0VUX1REX1NFQ09ORFMoZGVsdGEpIHwKICAgICAgICAgICAgICAgICAgICBHRVRfVERfTUlDUk9TRUNPTkRTKGRlbHRhKTsKICAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICAgICAgaWYgKChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgJiYgZGlmZiA9PSAwKSB7CisgICAgICAgICAgICBpbnQgZXggPSBwZXA0OTVfZXFfZXhjZXB0aW9uKHNlbGYsIG90aGVyLCBvZmZzZXQxLCBvZmZzZXQyKTsKKyAgICAgICAgICAgIGlmIChleCA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBpZiAoZXgpCisgICAgICAgICAgICAgICAgZGlmZiA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSBpZiAob3AgPT0gUHlfRVEpIHsKQEAgLTQ2NjcsOSArNDkzNCwyNiBAQAogZGF0ZXRpbWVfaGFzaChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQogewogICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkgewotICAgICAgICBQeU9iamVjdCAqb2Zmc2V0OwotCi0gICAgICAgIG9mZnNldCA9IGRhdGV0aW1lX3V0Y29mZnNldCgoUHlPYmplY3QgKilzZWxmLCBOVUxMKTsKKyAgICAgICAgUHlPYmplY3QgKm9mZnNldCwgKnNlbGYwOworICAgICAgICBpZiAoREFURV9HRVRfRk9MRChzZWxmKSkgeworICAgICAgICAgICAgc2VsZjAgPSBuZXdfZGF0ZXRpbWVfZXgyKEdFVF9ZRUFSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFB5X1RZUEUoc2VsZikpOworICAgICAgICAgICAgaWYgKHNlbGYwID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2VsZjAgPSAoUHlPYmplY3QgKilzZWxmOworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYwKTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQgPSBkYXRldGltZV91dGNvZmZzZXQoc2VsZjAsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoc2VsZjApOwogCiAgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQ3MjMsNzYgKzUwMDcsOTIgQEAKICAgICBpbnQgc3MgPSBEQVRFX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSBEQVRFX0dFVF9GT0xEKHNlbGYpOwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlpaWlPOnJlcGxhY2UiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpaWlpTyRpOnJlcGxhY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ5LCAmbSwgJmQsICZoaCwgJm1tLCAmc3MsICZ1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR6aW5mbykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8sICZmb2xkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJpaWlpaWlpTyIsIHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjbG9uZSA9IGRhdGV0aW1lX25ldyhQeV9UWVBFKHNlbGYpLCB0dXBsZSwgTlVMTCk7CisKKyAgICBpZiAoY2xvbmUgIT0gTlVMTCkgeworICAgICAgICBpZiAoZm9sZCAhPSAwICYmIGZvbGQgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBEQVRFX1NFVF9GT0xEKGNsb25lLCBmb2xkKTsKKyAgICB9CiAgICAgUHlfREVDUkVGKHR1cGxlKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1sb2NhbF90aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICp1dGNfdGltZSkKK2xvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVfdCB0aW1lc3RhbXApCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RydWN0IHRtICp0aW1lcDsKLSAgICB0aW1lX3QgdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpkZWx0YTsKLSAgICBQeU9iamVjdCAqb25lX3NlY29uZDsKLSAgICBQeU9iamVjdCAqc2Vjb25kczsKKyAgICBzdHJ1Y3QgdG0gbG9jYWxfdGltZV90bTsKICAgICBQeU9iamVjdCAqbmFtZW8gPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnpvbmUgPSBOVUxMOwogCi0gICAgZGVsdGEgPSBuZXdfZGVsdGEoeW1kX3RvX29yZChHRVRfWUVBUih1dGNfdGltZSksIEdFVF9NT05USCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHV0Y190aW1lKSkgLSA3MTkxNjMsCi0gICAgICAgICAgICAgICAgICAgICAgNjAgKiAoNjAgKiBEQVRFX0dFVF9IT1VSKHV0Y190aW1lKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHV0Y190aW1lKSkgKwotICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgMCwgMCk7Ci0gICAgaWYgKGRlbHRhID09IE5VTEwpCisgICAgaWYgKGxvY2FsdGltZV9yKCZ0aW1lc3RhbXAsICZsb2NhbF90aW1lX3RtKSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvbmVfc2Vjb25kID0gbmV3X2RlbHRhKDAsIDEsIDAsIDApOwotICAgIGlmIChvbmVfc2Vjb25kID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgc2Vjb25kcyA9IGRpdmlkZV90aW1lZGVsdGFfdGltZWRlbHRhKChQeURhdGVUaW1lX0RlbHRhICopZGVsdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb25lX3NlY29uZCk7Ci0gICAgUHlfREVDUkVGKG9uZV9zZWNvbmQpOwotICAgIGlmIChzZWNvbmRzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgUHlfREVDUkVGKGRlbHRhKTsKLSAgICB0aW1lc3RhbXAgPSBQeUxvbmdfQXNMb25nKHNlY29uZHMpOwotICAgIFB5X0RFQ1JFRihzZWNvbmRzKTsKLSAgICBpZiAodGltZXN0YW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHRpbWVwID0gbG9jYWx0aW1lKCZ0aW1lc3RhbXApOworICAgIH0KICNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCi0gICAgem9uZSA9IHRpbWVwLT50bV96b25lOwotICAgIGRlbHRhID0gbmV3X2RlbHRhKDAsIHRpbWVwLT50bV9nbXRvZmYsIDAsIDEpOworICAgIHpvbmUgPSBsb2NhbF90aW1lX3RtLnRtX3pvbmU7CisgICAgZGVsdGEgPSBuZXdfZGVsdGEoMCwgbG9jYWxfdGltZV90bS50bV9nbXRvZmYsIDAsIDEpOwogI2Vsc2UgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogICAgIHsKLSAgICAgICAgUHlPYmplY3QgKmxvY2FsX3RpbWU7Ci0gICAgICAgIGxvY2FsX3RpbWUgPSBuZXdfZGF0ZXRpbWUodGltZXAtPnRtX3llYXIgKyAxOTAwLCB0aW1lcC0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcC0+dG1fbWRheSwgdGltZXAtPnRtX2hvdXIsIHRpbWVwLT50bV9taW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXAtPnRtX3NlYywgREFURV9HRVRfTUlDUk9TRUNPTkQodXRjX3RpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lLT50emluZm8pOwotICAgICAgICBpZiAobG9jYWxfdGltZSA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdChsb2NhbF90aW1lLCAoUHlPYmplY3QqKXV0Y190aW1lKTsKLSAgICAgICAgLyogWFhYOiBiZWZvcmUgcmVseWluZyBvbiB0em5hbWUsIHdlIHNob3VsZCBjb21wYXJlIGRlbHRhCi0gICAgICAgICAgIHRvIHRoZSBvZmZzZXQgaW1wbGllZCBieSB0aW1lem9uZS9hbHR6b25lICovCi0gICAgICAgIGlmIChkYXlsaWdodCAmJiB0aW1lcC0+dG1faXNkc3QgPj0gMCkKLSAgICAgICAgICAgIHpvbmUgPSB0em5hbWVbdGltZXAtPnRtX2lzZHN0ICUgMl07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHpvbmUgPSB0em5hbWVbMF07CisgICAgICAgIFB5T2JqZWN0ICpsb2NhbF90aW1lLCAqdXRjX3RpbWU7CisgICAgICAgIHN0cnVjdCB0bSB1dGNfdGltZV90bTsKKyAgICAgICAgY2hhciBidWZbMTAwXTsKKyAgICAgICAgc3RyZnRpbWUoYnVmLCBzaXplb2YoYnVmKSwgIiVaIiwgJmxvY2FsX3RpbWVfdG0pOworICAgICAgICB6b25lID0gYnVmOworICAgICAgICBsb2NhbF90aW1lID0gbmV3X2RhdGV0aW1lKGxvY2FsX3RpbWVfdG0udG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZV90bS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX2hvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZV90bS50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZV90bS50bV9zZWMsIDAsIFB5X05vbmUsIDApOworICAgICAgICBpZiAobG9jYWxfdGltZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZ210aW1lX3IoJnRpbWVzdGFtcCwgJnV0Y190aW1lX3RtKSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgdXRjX3RpbWUgPSBuZXdfZGF0ZXRpbWUodXRjX3RpbWVfdG0udG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lX3RtLnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lX3RtLnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lX3RtLnRtX2hvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lX3RtLnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fc2VjLCAwLCBQeV9Ob25lLCAwKTsKKyAgICAgICAgaWYgKHV0Y190aW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsb2NhbF90aW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QobG9jYWxfdGltZSwgdXRjX3RpbWUpOwogICAgICAgICBQeV9ERUNSRUYobG9jYWxfdGltZSk7CisgICAgICAgIFB5X0RFQ1JFRih1dGNfdGltZSk7CiAgICAgfQogI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KKyAgICBpZiAoZGVsdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmICh6b25lICE9IE5VTEwpIHsKICAgICAgICAgbmFtZW8gPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHpvbmUsICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICAgICAgaWYgKG5hbWVvID09IE5VTEwpCkBAIC00ODA1LDEyICs1MTA1LDY1IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2xvY2FsX3RpbWV6b25lKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnV0Y190aW1lKQoreworICAgIHRpbWVfdCB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKmRlbHRhOworICAgIFB5T2JqZWN0ICpvbmVfc2Vjb25kOworICAgIFB5T2JqZWN0ICpzZWNvbmRzOworCisgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdCgoUHlPYmplY3QgKil1dGNfdGltZSwgUHlEYXRlVGltZV9FcG9jaCk7CisgICAgaWYgKGRlbHRhID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9uZV9zZWNvbmQgPSBuZXdfZGVsdGEoMCwgMSwgMCwgMCk7CisgICAgaWYgKG9uZV9zZWNvbmQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2Vjb25kcyA9IGRpdmlkZV90aW1lZGVsdGFfdGltZWRlbHRhKChQeURhdGVUaW1lX0RlbHRhICopZGVsdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb25lX3NlY29uZCk7CisgICAgUHlfREVDUkVGKG9uZV9zZWNvbmQpOworICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdGltZXN0YW1wID0gX1B5TG9uZ19Bc1RpbWVfdChzZWNvbmRzKTsKKyAgICBQeV9ERUNSRUYoc2Vjb25kcyk7CisgICAgaWYgKHRpbWVzdGFtcCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gbG9jYWxfdGltZXpvbmVfZnJvbV90aW1lc3RhbXAodGltZXN0YW1wKTsKK30KKworc3RhdGljIGxvbmcgbG9uZworbG9jYWxfdG9fc2Vjb25kcyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorICAgICAgICAgICAgICAgICBpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IGZvbGQpOworCitzdGF0aWMgUHlPYmplY3QgKgorbG9jYWxfdGltZXpvbmVfZnJvbV9sb2NhbChQeURhdGVUaW1lX0RhdGVUaW1lICpsb2NhbF9kdCkKK3sKKyAgICBsb25nIGxvbmcgc2Vjb25kczsKKyAgICB0aW1lX3QgdGltZXN0YW1wOworICAgIHNlY29uZHMgPSBsb2NhbF90b19zZWNvbmRzKEdFVF9ZRUFSKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9GT0xEKGxvY2FsX2R0KSk7CisgICAgaWYgKHNlY29uZHMgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFhYWDogYWRkIGJvdW5kcyBjaGVjayAqLworICAgIHRpbWVzdGFtcCA9IHNlY29uZHMgLSBlcG9jaDsKKyAgICByZXR1cm4gbG9jYWxfdGltZXpvbmVfZnJvbV90aW1lc3RhbXAodGltZXN0YW1wKTsKK30KKwogc3RhdGljIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKgogZGF0ZXRpbWVfYXN0aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqb2Zmc2V0OwogICAgIFB5T2JqZWN0ICp0ZW1wOworICAgIFB5T2JqZWN0ICpzZWxmX3R6aW5mbzsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKIApAQCAtNDgyMSwyNyArNTE3NCwyNyBAQAogICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIUhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKLSAgICAgICAgZ290byBOZWVkQXdhcmU7CisgICAgaWYgKCFIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpIHsKKyAgICAgICAgc2VsZl90emluZm8gPSBsb2NhbF90aW1lem9uZV9mcm9tX2xvY2FsKHNlbGYpOworICAgICAgICBpZiAoc2VsZl90emluZm8gPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGZfdHppbmZvID0gc2VsZi0+dHppbmZvOworICAgICAgICBQeV9JTkNSRUYoc2VsZl90emluZm8pOworICAgIH0KIAogICAgIC8qIENvbnZlcnNpb24gdG8gc2VsZidzIG93biB0aW1lIHpvbmUgaXMgYSBOT1AuICovCi0gICAgaWYgKHNlbGYtPnR6aW5mbyA9PSB0emluZm8pIHsKKyAgICBpZiAoc2VsZl90emluZm8gPT0gdHppbmZvKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmX3R6aW5mbyk7CiAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgfQogCiAgICAgLyogQ29udmVydCBzZWxmIHRvIFVUQy4gKi8KLSAgICBvZmZzZXQgPSBkYXRldGltZV91dGNvZmZzZXQoKFB5T2JqZWN0ICopc2VsZiwgTlVMTCk7CisgICAgb2Zmc2V0ID0gY2FsbF91dGNvZmZzZXQoc2VsZl90emluZm8sIChQeU9iamVjdCAqKXNlbGYpOworICAgIFB5X0RFQ1JFRihzZWxmX3R6aW5mbyk7CiAgICAgaWYgKG9mZnNldCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAob2Zmc2V0ID09IFB5X05vbmUpIHsKLSAgICAgICAgUHlfREVDUkVGKG9mZnNldCk7Ci0gICAgICBOZWVkQXdhcmU6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYXN0aW1lem9uZSgpIGNhbm5vdCBiZSBhcHBsaWVkIHRvICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJhIG5haXZlIGRhdGV0aW1lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIC8qIHJlc3VsdCA9IHNlbGYgLSBvZmZzZXQgKi8KICAgICByZXN1bHQgPSAoUHlEYXRlVGltZV9EYXRlVGltZSAqKWFkZF9kYXRldGltZV90aW1lZGVsdGEoc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0LCAtMSk7CkBAIC00ODQ5LDYgKzUyMDIsMzIgQEAKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgLyogTWFrZSBzdXJlIHJlc3VsdCBpcyBhd2FyZSBhbmQgVVRDLiAqLworICAgIGlmICghSEFTVFpJTkZPKHJlc3VsdCkpIHsKKyAgICAgICAgdGVtcCA9IChQeU9iamVjdCAqKXJlc3VsdDsKKyAgICAgICAgcmVzdWx0ID0gKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKikKKyAgICAgICAgICAgICAgICAgICBuZXdfZGF0ZXRpbWVfZXgyKEdFVF9ZRUFSKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9GT0xEKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHJlc3VsdCkpOworICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogUmVzdWx0IGlzIGFscmVhZHkgYXdhcmUgLSBqdXN0IHJlcGxhY2UgdHppbmZvLiAqLworICAgICAgICB0ZW1wID0gcmVzdWx0LT50emluZm87CisgICAgICAgIHJlc3VsdC0+dHppbmZvID0gUHlEYXRlVGltZV9UaW1lWm9uZV9VVEM7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQtPnR6aW5mbyk7CisgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICB9CisKICAgICAvKiBBdHRhY2ggbmV3IHR6aW5mbyBhbmQgbGV0IGZyb211dGMoKSBkbyB0aGUgcmVzdC4gKi8KICAgICB0ZW1wID0gcmVzdWx0LT50emluZm87CiAgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lKSB7CkBAIC00ODk2LDYgKzUyNzUsNTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0ZmxhZyk7CiB9CiAKK3N0YXRpYyBsb25nIGxvbmcKK2xvY2FsX3RvX3NlY29uZHMoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgICAgaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCBmb2xkKQoreworICAgIGxvbmcgbG9uZyB0LCBhLCBiLCB1MSwgdTIsIHQxLCB0MiwgbHQ7CisgICAgdCA9IHV0Y190b19zZWNvbmRzKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTsKKyAgICAvKiBPdXIgZ29hbCBpcyB0byBzb2x2ZSB0ID0gbG9jYWwodSkgZm9yIHUuICovCisgICAgbHQgPSBsb2NhbCh0KTsKKyAgICBpZiAobHQgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBhID0gbHQgLSB0OworICAgIHUxID0gdCAtIGE7CisgICAgdDEgPSBsb2NhbCh1MSk7CisgICAgaWYgKHQxID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQxID09IHQpIHsKKyAgICAgICAgLyogV2UgZm91bmQgb25lIHNvbHV0aW9uLCBidXQgaXQgbWF5IG5vdCBiZSB0aGUgb25lIHdlIG5lZWQuCisgICAgICAgICAqIExvb2sgZm9yIGFuIGVhcmxpZXIgc29sdXRpb24gKGlmIGBmb2xkYCBpcyAwKSwgb3IgYQorICAgICAgICAgKiBsYXRlciBvbmUgKGlmIGBmb2xkYCBpcyAxKS4gKi8KKyAgICAgICAgaWYgKGZvbGQpCisgICAgICAgICAgICB1MiA9IHUxICsgbWF4X2ZvbGRfc2Vjb25kczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdTIgPSB1MSAtIG1heF9mb2xkX3NlY29uZHM7CisgICAgICAgIGx0ID0gbG9jYWwodTIpOworICAgICAgICBpZiAobHQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGIgPSBsdCAtIHUyOworICAgICAgICBpZiAoYSA9PSBiKQorICAgICAgICAgICAgcmV0dXJuIHUxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYiA9IHQxIC0gdTE7CisgICAgICAgIGFzc2VydChhICE9IGIpOworICAgIH0KKyAgICB1MiA9IHQgLSBiOworICAgIHQyID0gbG9jYWwodTIpOworICAgIGlmICh0MiA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MiA9PSB0KQorICAgICAgICByZXR1cm4gdTI7CisgICAgaWYgKHQxID09IHQpCisgICAgICAgIHJldHVybiB1MTsKKyAgICAvKiBXZSBoYXZlIGZvdW5kIGJvdGggb2Zmc2V0cyBhIGFuZCBiLCBidXQgbmVpdGhlciB0IC0gYSBub3IgdCAtIGIgaXMKKyAgICAgKiBhIHNvbHV0aW9uLiAgVGhpcyBtZWFucyB0IGlzIGluIHRoZSBnYXAuICovCisgICAgcmV0dXJuIGZvbGQ/UHlfTUlOKHUxLCB1Mik6UHlfTUFYKHUxLCB1Mik7Cit9CisKKy8qIGRhdGUoMTk3MCwxLDEpLnRvb3JkaW5hbCgpID09IDcxOTE2MyAqLworI2RlZmluZSBFUE9DSF9TRUNPTkRTICg3MTkxNjNMTCAqIDI0ICogNjAgKiA2MCkKKwogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3RpbWVzdGFtcChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQogewpAQCAtNDkxMCwzMyArNTMzOSwxOCBAQAogICAgICAgICBQeV9ERUNSRUYoZGVsdGEpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgc3RydWN0IHRtIHRpbWU7Ci0gICAgICAgIHRpbWVfdCB0aW1lc3RhbXA7Ci0gICAgICAgIG1lbXNldCgodm9pZCAqKSAmdGltZSwgJ1wwJywgc2l6ZW9mKHN0cnVjdCB0bSkpOwotICAgICAgICB0aW1lLnRtX3llYXIgPSBHRVRfWUVBUihzZWxmKSAtIDE5MDA7Ci0gICAgICAgIHRpbWUudG1fbW9uID0gR0VUX01PTlRIKHNlbGYpIC0gMTsKLSAgICAgICAgdGltZS50bV9tZGF5ID0gR0VUX0RBWShzZWxmKTsKLSAgICAgICAgdGltZS50bV9ob3VyID0gREFURV9HRVRfSE9VUihzZWxmKTsKLSAgICAgICAgdGltZS50bV9taW4gPSBEQVRFX0dFVF9NSU5VVEUoc2VsZik7Ci0gICAgICAgIHRpbWUudG1fc2VjID0gREFURV9HRVRfU0VDT05EKHNlbGYpOwotICAgICAgICB0aW1lLnRtX3dkYXkgPSAtMTsKLSAgICAgICAgdGltZS50bV9pc2RzdCA9IC0xOwotICAgICAgICB0aW1lc3RhbXAgPSBta3RpbWUoJnRpbWUpOwotICAgICAgICBpZiAodGltZXN0YW1wID09ICh0aW1lX3QpKC0xKQotI2lmbmRlZiBfQUlYCi0gICAgICAgICAgICAvKiBSZXR1cm4gdmFsdWUgb2YgLTEgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiBhbiBlcnJvciwKLSAgICAgICAgICAgICAqIGJ1dCB0bV93ZGF5IGNhbm5vdCByZW1haW4gc2V0IHRvIC0xIGlmIG1rdGltZSBzdWNjZWVkZWQuICovCi0gICAgICAgICAgICAmJiB0aW1lLnRtX3dkYXkgPT0gLTEKLSNlbHNlCi0gICAgICAgICAgICAvKiBvbiBBSVgsIHRtX3dkYXkgaXMgYWx3YXlzIHNldHMsIGV2ZW4gb24gZXJyb3IgKi8KLSNlbmRpZgotICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgbG9uZyBsb25nIHNlY29uZHM7CisgICAgICAgIHNlY29uZHMgPSBsb2NhbF90b19zZWNvbmRzKEdFVF9ZRUFSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9GT0xEKHNlbGYpKTsKKyAgICAgICAgaWYgKHNlY29uZHMgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUodGltZXN0YW1wICsgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZikgLyAxZTYpOworICAgICAgICByZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUoc2Vjb25kcyAtIEVQT0NIX1NFQ09ORFMgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZikgLyAxZTYpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDk1Niw3ICs1MzcwLDggQEAKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChzZWxmKSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00OTY2LDcgKzUzODEsOCBAQAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgIEdFVF9EVF9UWklORk8oc2VsZikpOworICAgICAgICAgICAgICAgICAgICBHRVRfRFRfVFpJTkZPKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9GT0xEKHNlbGYpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUwMTgsNyArNTQzNCw3IEBACiAgKiBfX2dldHN0YXRlX18gaXNuJ3QgZXhwb3NlZC4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2dldHN0YXRlKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCitkYXRldGltZV9nZXRzdGF0ZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBpbnQgcHJvdG8pCiB7CiAgICAgUHlPYmplY3QgKmJhc2VzdGF0ZTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKQEAgLTUwMjYsNiArNTQ0Miw5IEBACiAgICAgYmFzZXN0YXRlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKXNlbGYtPmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RGF0ZVRpbWVfREFURVRJTUVfREFUQVNJWkUpOwogICAgIGlmIChiYXNlc3RhdGUgIT0gTlVMTCkgeworICAgICAgICBpZiAocHJvdG8gPiAzICYmIERBVEVfR0VUX0ZPTEQoc2VsZikpCisgICAgICAgICAgICAvKiBTZXQgdGhlIGZpcnN0IGJpdCBvZiB0aGUgdGhpcmQgYnl0ZSAqLworICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYmFzZXN0YXRlKVsyXSB8PSAoMSA8PCA3KTsKICAgICAgICAgaWYgKCEgSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmVzdWx0ID0gUHlUdXBsZV9QYWNrKDEsIGJhc2VzdGF0ZSk7CiAgICAgICAgIGVsc2UKQEAgLTUwMzYsOSArNTQ1NSwxMyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfcmVkdWNlKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmcpCitkYXRldGltZV9yZWR1Y2UoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPTikiLCBQeV9UWVBFKHNlbGYpLCBkYXRldGltZV9nZXRzdGF0ZShzZWxmKSk7CisgICAgaW50IHByb3RvID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgZGF0ZXRpbWVfZ2V0c3RhdGUoc2VsZiwgcHJvdG8pKTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIGRhdGV0aW1lX21ldGhvZHNbXSA9IHsKQEAgLTUwOTMsOSArNTUxNiwxMiBAQAogCiAgICAgeyJpc29mb3JtYXQiLCAgIChQeUNGdW5jdGlvbilkYXRldGltZV9pc29mb3JtYXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigiW3NlcF0gLT4gc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdCwgIgotICAgICAgICAgICAgICAgIllZWVktTU0tRERUSEg6TU06U1NbLm1tbW1tbV1bK0hIOk1NXS5cblxuIgorICAgICAgICAgICAgICAgIllZWVktTU0tRERUW0hIWzpNTVs6U1NbLm1tbVt1dXVdXV1dXVsrSEg6TU1dLlxuIgogICAgICAgICAgICAgICAgInNlcCBpcyB1c2VkIHRvIHNlcGFyYXRlIHRoZSB5ZWFyIGZyb20gdGhlIHRpbWUsIGFuZCAiCi0gICAgICAgICAgICAgICAiZGVmYXVsdHMgdG8gJ1QnLiIpfSwKKyAgICAgICAgICAgICAgICJkZWZhdWx0cyB0byAnVCcuXG4iCisgICAgICAgICAgICAgICAidGltZXNwZWMgc3BlY2lmaWVzIHdoYXQgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlIgorICAgICAgICAgICAgICAgIiAoYWxsb3dlZCB2YWx1ZXMgYXJlICdhdXRvJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcycsIgorICAgICAgICAgICAgICAgIiAnbWlsbGlzZWNvbmRzJywgYW5kICdtaWNyb3NlY29uZHMnKS5cbiIpfSwKIAogICAgIHsidXRjb2Zmc2V0IiwgICAgICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3V0Y29mZnNldCwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiUmV0dXJuIHNlbGYudHppbmZvLnV0Y29mZnNldChzZWxmKS4iKX0sCkBAIC01MTEyLDEzICs1NTM4LDEzIEBACiAgICAgeyJhc3RpbWV6b25lIiwgIChQeUNGdW5jdGlvbilkYXRldGltZV9hc3RpbWV6b25lLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoInR6IC0+IGNvbnZlcnQgdG8gbG9jYWwgdGltZSBpbiBuZXcgdGltZXpvbmUgdHpcbiIpfSwKIAotICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilkYXRldGltZV9yZWR1Y2UsICAgICBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9fKCkgLT4gKGNscywgc3RhdGUpIil9LAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilkYXRldGltZV9yZWR1Y2UsICAgICBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX19yZWR1Y2VfZXhfXyhwcm90bykgLT4gKGNscywgc3RhdGUpIil9LAogCiAgICAge05VTEwsICAgICAgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIGRhdGV0aW1lX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGRhdGV0aW1lX2RvY1tdID0KIFB5RG9jX1NUUigiZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheVssIGhvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssdHppbmZvXV1dXV0pXG5cCiBcblwKIFRoZSB5ZWFyLCBtb250aCBhbmQgZGF5IGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQuIHR6aW5mbyBtYXkgYmUgTm9uZSwgb3IgYW5cblwKQEAgLTUyMDEsNyArNTYyNyw5IEBACiAgICAgbmV3X3RpbWVfZXgsCiAgICAgbmV3X2RlbHRhX2V4LAogICAgIGRhdGV0aW1lX2Zyb210aW1lc3RhbXAsCi0gICAgZGF0ZV9mcm9tdGltZXN0YW1wCisgICAgZGF0ZV9mcm9tdGltZXN0YW1wLAorICAgIG5ld19kYXRldGltZV9leDIsCisgICAgbmV3X3RpbWVfZXgyCiB9OwogCiAKQEAgLTUyODIsMTIgKzU3MTAsMTIgQEAKICAgICAvKiB0aW1lIHZhbHVlcyAqLwogICAgIGQgPSBQeURhdGVUaW1lX1RpbWVUeXBlLnRwX2RpY3Q7CiAKLSAgICB4ID0gbmV3X3RpbWUoMCwgMCwgMCwgMCwgUHlfTm9uZSk7CisgICAgeCA9IG5ld190aW1lKDAsIDAsIDAsIDAsIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1pbiIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwogCi0gICAgeCA9IG5ld190aW1lKDIzLCA1OSwgNTksIDk5OTk5OSwgUHlfTm9uZSk7CisgICAgeCA9IG5ld190aW1lKDIzLCA1OSwgNTksIDk5OTk5OSwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKHggPT0gTlVMTCB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAibWF4IiwgeCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CkBAIC01MzAwLDEyICs1NzI4LDEyIEBACiAgICAgLyogZGF0ZXRpbWUgdmFsdWVzICovCiAgICAgZCA9IFB5RGF0ZVRpbWVfRGF0ZVRpbWVUeXBlLnRwX2RpY3Q7CiAKLSAgICB4ID0gbmV3X2RhdGV0aW1lKDEsIDEsIDEsIDAsIDAsIDAsIDAsIFB5X05vbmUpOworICAgIHggPSBuZXdfZGF0ZXRpbWUoMSwgMSwgMSwgMCwgMCwgMCwgMCwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKHggPT0gTlVMTCB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAibWluIiwgeCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CiAKLSAgICB4ID0gbmV3X2RhdGV0aW1lKE1BWFlFQVIsIDEyLCAzMSwgMjMsIDU5LCA1OSwgOTk5OTk5LCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X2RhdGV0aW1lKE1BWFlFQVIsIDEyLCAzMSwgMjMsIDU5LCA1OSwgOTk5OTk5LCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtYXgiLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKQEAgLTUzNDcsNyArNTc3NSw3IEBACiAKICAgICAvKiBFcG9jaCAqLwogICAgIFB5RGF0ZVRpbWVfRXBvY2ggPSBuZXdfZGF0ZXRpbWUoMTk3MCwgMSwgMSwgMCwgMCwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDLCAwKTsKICAgICBpZiAoUHlEYXRlVGltZV9FcG9jaCA9PSBOVUxMKQogICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTUzODIsMTkgKzU4MTAsMTkgQEAKICAgICAvKiBBIDQteWVhciBjeWNsZSBoYXMgYW4gZXh0cmEgbGVhcCBkYXkgb3ZlciB3aGF0IHdlJ2QgZ2V0IGZyb20KICAgICAgKiBwYXN0aW5nIHRvZ2V0aGVyIDQgc2luZ2xlIHllYXJzLgogICAgICAqLwotICAgIGFzc2VydChESTRZID09IDQgKiAzNjUgKyAxKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoREk0WSA9PSA0ICogMzY1ICsgMSk7CiAgICAgYXNzZXJ0KERJNFkgPT0gZGF5c19iZWZvcmVfeWVhcig0KzEpKTsKIAogICAgIC8qIFNpbWlsYXJseSwgYSA0MDAteWVhciBjeWNsZSBoYXMgYW4gZXh0cmEgbGVhcCBkYXkgb3ZlciB3aGF0IHdlJ2QKICAgICAgKiBnZXQgZnJvbSBwYXN0aW5nIHRvZ2V0aGVyIDQgMTAwLXllYXIgY3ljbGVzLgogICAgICAqLwotICAgIGFzc2VydChESTQwMFkgPT0gNCAqIERJMTAwWSArIDEpOworICAgIFB5X0JVSUxEX0FTU0VSVChESTQwMFkgPT0gNCAqIERJMTAwWSArIDEpOwogICAgIGFzc2VydChESTQwMFkgPT0gZGF5c19iZWZvcmVfeWVhcig0MDArMSkpOwogCiAgICAgLyogT1RPSCwgYSAxMDAteWVhciBjeWNsZSBoYXMgb25lIGZld2VyIGxlYXAgZGF5IHRoYW4gd2UnZCBnZXQgZnJvbQogICAgICAqIHBhc3RpbmcgdG9nZXRoZXIgMjUgNC15ZWFyIGN5Y2xlcy4KICAgICAgKi8KLSAgICBhc3NlcnQoREkxMDBZID09IDI1ICogREk0WSAtIDEpOworICAgIFB5X0JVSUxEX0FTU0VSVChESTEwMFkgPT0gMjUgKiBESTRZIC0gMSk7CiAgICAgYXNzZXJ0KERJMTAwWSA9PSBkYXlzX2JlZm9yZV95ZWFyKDEwMCsxKSk7CiAKICAgICBvbmUgPSBQeUxvbmdfRnJvbUxvbmcoMSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kYm1tb2R1bGUuYyBiL01vZHVsZXMvX2RibW1vZHVsZS5jCmluZGV4IGVhODc5MGIuLjgwNDk3OGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RibW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2RibW1vZHVsZS5jCkBAIC0xNCwxNiArMTQsMTYgQEAKICAqLwogI2lmIGRlZmluZWQoSEFWRV9OREJNX0gpCiAjaW5jbHVkZSA8bmRibS5oPgotc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJHTlUgZ2RibSI7ICAvKiBFTVggcG9ydCBvZiBHREJNICovCitzdGF0aWMgY29uc3QgY2hhciB3aGljaF9kYm1bXSA9ICJHTlUgZ2RibSI7ICAvKiBFTVggcG9ydCBvZiBHREJNICovCiAjZWxpZiBkZWZpbmVkKEhBVkVfR0RCTV9OREJNX0gpCiAjaW5jbHVkZSA8Z2RibS9uZGJtLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkdOVSBnZGJtIjsKK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkdOVSBnZGJtIjsKICNlbGlmIGRlZmluZWQoSEFWRV9HREJNX0RBU0hfTkRCTV9IKQogI2luY2x1ZGUgPGdkYm0tbmRibS5oPgotc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJHTlUgZ2RibSI7CitzdGF0aWMgY29uc3QgY2hhciB3aGljaF9kYm1bXSA9ICJHTlUgZ2RibSI7CiAjZWxpZiBkZWZpbmVkKEhBVkVfQkVSS0RCX0gpCiAjaW5jbHVkZSA8ZGIuaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiQmVya2VsZXkgREIiOworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiQmVya2VsZXkgREIiOwogI2Vsc2UKICNlcnJvciAiTm8gbmRibS5oIGF2YWlsYWJsZSEiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYyBiL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYwppbmRleCBlMTU5NDFhLi5mY2MxZjE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKICNpbmNsdWRlICJkb2NzdHJpbmdzLmgiCi0jaW5jbHVkZSAibWVtb3J5LmgiCiAKIAogI2lmICFkZWZpbmVkKE1QRF9WRVJTSU9OX0hFWCkgfHwgTVBEX1ZFUlNJT05fSEVYIDwgMHgwMjA0MDEwMApAQCAtMTg5MCwxMiArMTg4OSwxMyBAQAogLyogUmV0dXJuIHRoZSBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiBhIG51bWVyaWMgVW5pY29kZSBzdHJpbmcuIFRoZSBudW1lcmljCiAgICBzdHJpbmcgbWF5IGNvbnRhaW4gYXNjaWkgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzEsIDEyN10sIGFueSBVbmljb2RlCiAgICBzcGFjZSBhbmQgYW55IHVuaWNvZGUgZGlnaXQuIElmIHN0cmlwX3dzIGlzIHRydWUsIGxlYWRpbmcgYW5kIHRyYWlsaW5nCi0gICB3aGl0ZXNwYWNlIGlzIHN0cmlwcGVkLgorICAgd2hpdGVzcGFjZSBpcyBzdHJpcHBlZC4gSWYgaWdub3JlX3VuZGVyc2NvcmVzIGlzIHRydWUsIHVuZGVyc2NvcmVzIGFyZQorICAgaWdub3JlZC4KIAogICAgUmV0dXJuIE5VTEwgaWYgbWFsbG9jIGZhaWxzIGFuZCBhbiBlbXB0eSBzdHJpbmcgaWYgaW52YWxpZCBjaGFyYWN0ZXJzCiAgICBhcmUgZm91bmQuICovCiBzdGF0aWMgY2hhciAqCi1udW1lcmljX2FzX2FzY2lpKGNvbnN0IFB5T2JqZWN0ICp1LCBpbnQgc3RyaXBfd3MpCitudW1lcmljX2FzX2FzY2lpKGNvbnN0IFB5T2JqZWN0ICp1LCBpbnQgc3RyaXBfd3MsIGludCBpZ25vcmVfdW5kZXJzY29yZXMpCiB7CiAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwogICAgIHZvaWQgKmRhdGE7CkBAIC0xOTMwLDYgKzE5MzAsOSBAQAogCiAgICAgZm9yICg7IGogPCBsZW47IGorKykgewogICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGopOworICAgICAgICBpZiAoaWdub3JlX3VuZGVyc2NvcmVzICYmIGNoID09ICdfJykgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKDAgPCBjaCAmJiBjaCA8PSAxMjcpIHsKICAgICAgICAgICAgICpjcCsrID0gY2g7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIwMTIsNyArMjAxNSw3IEBACiAgICAgUHlPYmplY3QgKmRlYzsKICAgICBjaGFyICpzOwogCi0gICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMCk7CisgICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMCwgMCk7CiAgICAgaWYgKHMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yMDMyLDcgKzIwMzUsNyBAQAogICAgIFB5T2JqZWN0ICpkZWM7CiAgICAgY2hhciAqczsKIAotICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDEpOworICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDEsIDEpOwogICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMzM5NCw2ICszMzk3LDEwNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKikgcHlsb25nOwogfQogCisvKiBDb252ZXJ0IGEgRGVjaW1hbCB0byBpdHMgZXhhY3QgaW50ZWdlciByYXRpbyByZXByZXNlbnRhdGlvbi4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfYXNfaW50ZWdlcl9yYXRpbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpudW1lcmF0b3IgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkZW5vbWluYXRvciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4cG9uZW50ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdG1wOworICAgIG1wZF9zc2l6ZV90IGV4cDsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoTVBEKHNlbGYpKSkgeworICAgICAgICBpZiAobXBkX2lzbmFuKE1QRChzZWxmKSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisKKyAgICB0bXAgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFtcGRfcWNvcHkoTVBEKHRtcCksIE1QRChzZWxmKSwgJnN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGV4cCA9IG1wZF9pc3plcm8oTVBEKHRtcCkpID8gMCA6IE1QRCh0bXApLT5leHA7CisgICAgTVBEKHRtcCktPmV4cCA9IDA7CisKKyAgICAvKiBjb250ZXh0IGFuZCByb3VuZGluZyBhcmUgdW51c2VkIGhlcmU6IHRoZSBjb252ZXJzaW9uIGlzIGV4YWN0ICovCisgICAgbnVtZXJhdG9yID0gZGVjX2FzX2xvbmcodG1wLCBjb250ZXh0LCBNUERfUk9VTkRfRkxPT1IpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGV4cG9uZW50ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGV4cCA8IDAgPyAtZXhwIDogZXhwKTsKKyAgICBpZiAoZXhwb25lbnQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHRtcCA9IFB5TG9uZ19Gcm9tTG9uZygxMCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgUHlfU0VUUkVGKGV4cG9uZW50LCBfcHlfbG9uZ19wb3dlcih0bXAsIGV4cG9uZW50LCBQeV9Ob25lKSk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKGV4cG9uZW50ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoZXhwID49IDApIHsKKyAgICAgICAgUHlfU0VUUkVGKG51bWVyYXRvciwgX3B5X2xvbmdfbXVsdGlwbHkobnVtZXJhdG9yLCBleHBvbmVudCkpOworICAgICAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZGVub21pbmF0b3IgPSBQeUxvbmdfRnJvbUxvbmcoMSk7CisgICAgICAgIGlmIChkZW5vbWluYXRvciA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkZW5vbWluYXRvciA9IGV4cG9uZW50OworICAgICAgICBleHBvbmVudCA9IE5VTEw7CisgICAgICAgIHRtcCA9IF9QeUxvbmdfR0NEKG51bWVyYXRvciwgZGVub21pbmF0b3IpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgUHlfU0VUUkVGKG51bWVyYXRvciwgX3B5X2xvbmdfZmxvb3JfZGl2aWRlKG51bWVyYXRvciwgdG1wKSk7CisgICAgICAgIFB5X1NFVFJFRihkZW5vbWluYXRvciwgX3B5X2xvbmdfZmxvb3JfZGl2aWRlKGRlbm9taW5hdG9yLCB0bXApKTsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCB8fCBkZW5vbWluYXRvciA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlUdXBsZV9QYWNrKDIsIG51bWVyYXRvciwgZGVub21pbmF0b3IpOworCisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZXhwb25lbnQpOworICAgIFB5X1hERUNSRUYoZGVub21pbmF0b3IpOworICAgIFB5X1hERUNSRUYobnVtZXJhdG9yKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogUHlEZWNfVG9JbnRlZ3JhbFZhbHVlKFB5T2JqZWN0ICpkZWMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTQ3MDIsNiArNDgwNCw3IEBACiAgIC8qIE1pc2NlbGxhbmVvdXMgKi8KICAgeyAiZnJvbV9mbG9hdCIsIGRlY19mcm9tX2Zsb2F0LCBNRVRIX098TUVUSF9DTEFTUywgZG9jX2Zyb21fZmxvYXQgfSwKICAgeyAiYXNfdHVwbGUiLCBQeURlY19Bc1R1cGxlLCBNRVRIX05PQVJHUywgZG9jX2FzX3R1cGxlIH0sCisgIHsgImFzX2ludGVnZXJfcmF0aW8iLCBkZWNfYXNfaW50ZWdlcl9yYXRpbywgTUVUSF9OT0FSR1MsIGRvY19hc19pbnRlZ2VyX3JhdGlvIH0sCiAKICAgLyogU3BlY2lhbCBtZXRob2RzICovCiAgIHsgIl9fY29weV9fIiwgZGVjX2NvcHksIE1FVEhfTk9BUkdTLCBOVUxMIH0sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaCBiL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oCmluZGV4IDcxMDI5YTkuLmY3ZmQ2ZTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oCkBAIC03MCw2ICs3MCwxNSBAQAogUmV0dXJuIGEgdHVwbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlci5cblwKIFxuIik7CiAKK1B5RG9jX1NUUlZBUihkb2NfYXNfaW50ZWdlcl9yYXRpbywKKyJhc19pbnRlZ2VyX3JhdGlvKCRzZWxmLCAvKVxuLS1cblxuXAorRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvKCkgLT4gKGludCwgaW50KVxuXAorXG5cCitSZXR1cm4gYSBwYWlyIG9mIGludGVnZXJzLCB3aG9zZSByYXRpbyBpcyBleGFjdGx5IGVxdWFsIHRvIHRoZSBvcmlnaW5hbFxuXAorRGVjaW1hbCBhbmQgd2l0aCBhIHBvc2l0aXZlIGRlbm9taW5hdG9yLiBUaGUgcmF0aW8gaXMgaW4gbG93ZXN0IHRlcm1zLlxuXAorUmFpc2UgT3ZlcmZsb3dFcnJvciBvbiBpbmZpbml0aWVzIGFuZCBhIFZhbHVlRXJyb3Igb24gTmFOcy5cblwKK1xuIik7CisKIFB5RG9jX1NUUlZBUihkb2NfY2Fub25pY2FsLAogImNhbm9uaWNhbCgkc2VsZiwgLylcbi0tXG5cblwKIFJldHVybiB0aGUgY2Fub25pY2FsIGVuY29kaW5nIG9mIHRoZSBhcmd1bWVudC4gIEN1cnJlbnRseSwgdGhlIGVuY29kaW5nXG5cCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYwppbmRleCAzNWRlNmI4Li5kZmUxNTIzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlICJjb25zdGFudHMuaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKICNpbmNsdWRlICJiYXNlYXJpdGguaCIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCmluZGV4IGE0NWE0MjkuLjNhYWRmYjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlIDxsb2NhbGUuaD4KICNpbmNsdWRlICJiaXRzLmgiCiAjaW5jbHVkZSAiY29uc3RhbnRzLmgiCi0jaW5jbHVkZSAibWVtb3J5LmgiCiAjaW5jbHVkZSAidHlwZWFyaXRoLmgiCiAjaW5jbHVkZSAiaW8uaCIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKaW5kZXggMGY0MWZlNS4uYTg1NGUwOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jCkBAIC0zMCw3ICszMCwxMiBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSAidHlwZWFyaXRoLmgiCi0jaW5jbHVkZSAibWVtb3J5LmgiCisjaW5jbHVkZSAibXBhbGxvYy5oIgorCisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyMzIpCisjZW5kaWYKIAogCiAvKiBHdWFyYW50ZWVkIG1pbmltdW0gYWxsb2NhdGlvbiBmb3IgYSBjb2VmZmljaWVudC4gTWF5IGJlIGNoYW5nZWQgb25jZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBhbGxvYy5oCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIE1vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmgKcmVuYW1lIHRvIE1vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBhbGxvYy5oCmluZGV4IDljOThkMWEuLmVmZDcxMTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmgKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGFsbG9jLmgKQEAgLTI2LDggKzI2LDggQEAKICAqLwogCiAKLSNpZm5kZWYgTUVNT1JZX0gKLSNkZWZpbmUgTUVNT1JZX0gKKyNpZm5kZWYgTVBBTExPQ19ICisjZGVmaW5lIE1QQUxMT0NfSAogCiAKICNpbmNsdWRlICJtcGRlY2ltYWwuaCIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCmluZGV4IDU5M2Y5ZjUuLjMyOGFiOTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYwpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgImJpdHMuaCIKICNpbmNsdWRlICJjb252b2x1dGUuaCIKICNpbmNsdWRlICJjcnQuaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKKyNpbmNsdWRlICJtcGFsbG9jLmgiCiAjaW5jbHVkZSAidHlwZWFyaXRoLmgiCiAjaW5jbHVkZSAidW1vZGFyaXRoLmgiCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oCmluZGV4IDVjYTc0MTMuLmRhZjJiOWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaApAQCAtNDgsNiArNDgsOCBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CiAKICNpZmRlZiBfTVNDX1ZFUgogICAjaW5jbHVkZSAidmNjb21wYXQuaCIKQEAgLTU5LDEyICs2MSw2IEBACiAgICNkZWZpbmUgTVBEX0hJREVfU1lNQk9MU19FTkQKICAgI2RlZmluZSBFWFRJTkxJTkUgZXh0ZXJuIGlubGluZQogI2Vsc2UKLSAgI2lmZGVmIEhBVkVfU1RESU5UX0gKLSAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gICNlbmRpZgotICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0gICAgI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gICNlbmRpZgogICAjaWZuZGVmIF9fR05VQ19TVERDX0lOTElORV9fCiAgICAgI2RlZmluZSBfX0dOVUNfU1REQ19JTkxJTkVfXyAxCiAgICNlbmRpZgpAQCAtMTA4LDkgKzEwNCw5IEBACiAKICNkZWZpbmUgTVBEX01BSk9SX1ZFUlNJT04gMgogI2RlZmluZSBNUERfTUlOT1JfVkVSU0lPTiA0Ci0jZGVmaW5lIE1QRF9NSUNST19WRVJTSU9OIDEKKyNkZWZpbmUgTVBEX01JQ1JPX1ZFUlNJT04gMgogCi0jZGVmaW5lIE1QRF9WRVJTSU9OICIyLjQuMSIKKyNkZWZpbmUgTVBEX1ZFUlNJT04gIjIuNC4yIgogCiAjZGVmaW5lIE1QRF9WRVJTSU9OX0hFWCAoKE1QRF9NQUpPUl9WRVJTSU9OIDw8IDI0KSB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTVBEX01JTk9SX1ZFUlNJT04gPDwgMTYpIHwgXApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCmluZGV4IGY1OGUwMjMuLmRkMTMxZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogLyogVmlzdWFsIEMgZml4ZXM6IG5vIHN0ZGludC5oLCBubyBzbnByaW50ZiAuLi4gKi8KICNpZmRlZiBfTVNDX1ZFUgotICAjaW5jbHVkZSAidmNzdGRpbnQuaCIKICAgI3VuZGVmIGlubGluZQogICAjZGVmaW5lIGlubGluZSBfX2lubGluZQogICAjdW5kZWYgcmFuZG9tCkBAIC00OSwxMCArNDgsNiBAQAogICAjdW5kZWYgc3RydG9sbAogICAjZGVmaW5lIHN0cnRvbGwgX3N0cnRvaTY0CiAgICNkZWZpbmUgc3RyZHVwIF9zdHJkdXAKLSAgI2RlZmluZSBQUklpNjQgIkk2NGkiCi0gICNkZWZpbmUgUFJJdTY0ICJJNjR1IgotICAjZGVmaW5lIFBSSWkzMiAiSTMyaSIKLSAgI2RlZmluZSBQUkl1MzIgIkkzMnUiCiAjZW5kaWYKIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQppbmRleCBhYjdkNWJkLi5mOTA3NTMxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKQEAgLTUwLDggKzUwLDggQEAKICAgICAgICAgJ19fYWJzX18nLCAnX19ib29sX18nLCAnX19jZWlsX18nLCAnX19jb21wbGV4X18nLCAnX19jb3B5X18nLAogICAgICAgICAnX19mbG9vcl9fJywgJ19fZmxvYXRfXycsICdfX2hhc2hfXycsICdfX2ludF9fJywgJ19fbmVnX18nLAogICAgICAgICAnX19wb3NfXycsICdfX3JlZHVjZV9fJywgJ19fcmVwcl9fJywgJ19fc3RyX18nLCAnX190cnVuY19fJywKLSAgICAgICAgJ2FkanVzdGVkJywgJ2FzX3R1cGxlJywgJ2Nhbm9uaWNhbCcsICdjb25qdWdhdGUnLCAnY29weV9hYnMnLAotICAgICAgICAnY29weV9uZWdhdGUnLCAnaXNfY2Fub25pY2FsJywgJ2lzX2Zpbml0ZScsICdpc19pbmZpbml0ZScsCisgICAgICAgICdhZGp1c3RlZCcsICdhc19pbnRlZ2VyX3JhdGlvJywgJ2FzX3R1cGxlJywgJ2Nhbm9uaWNhbCcsICdjb25qdWdhdGUnLAorICAgICAgICAnY29weV9hYnMnLCAnY29weV9uZWdhdGUnLCAnaXNfY2Fub25pY2FsJywgJ2lzX2Zpbml0ZScsICdpc19pbmZpbml0ZScsCiAgICAgICAgICdpc19uYW4nLCAnaXNfcW5hbicsICdpc19zaWduZWQnLCAnaXNfc25hbicsICdpc196ZXJvJywgJ3JhZGl4JwogICAgICksCiAgICAgIyBVbmFyeSB3aXRoIG9wdGlvbmFsIGNvbnRleHQ6CkBAIC0xMjgsNyArMTI4LDcgQEAKICMgRnVuY3Rpb25zIHRoYXQgcmVxdWlyZSBhIHJlc3RyaWN0ZWQgZXhwb25lbnQgcmFuZ2UgZm9yIHJlYXNvbmFibGUgcnVudGltZXMuCiBVbmFyeVJlc3RyaWN0ZWQgPSBbCiAgICdfX2NlaWxfXycsICdfX2Zsb29yX18nLCAnX19pbnRfXycsICdfX3RydW5jX18nLAotICAndG9faW50ZWdyYWwnLCAndG9faW50ZWdyYWxfdmFsdWUnCisgICdhc19pbnRlZ2VyX3JhdGlvJywgJ3RvX2ludGVncmFsJywgJ3RvX2ludGVncmFsX3ZhbHVlJwogXQogCiBCaW5hcnlSZXN0cmljdGVkID0gWydfX3JvdW5kX18nXQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKaW5kZXggODVmZmNhMi4uZGQ4NDE3YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYworKysgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCkBAIC01Nyw5ICs1Nyw5IEBACiAgICB0aGF0IGFsbCB1c2Ugb2YgdGV4dCBhbmQgdGFpbCBhcyBvYmplY3QgcG9pbnRlcnMgbXVzdCBiZSB3cmFwcGVkIGluCiAgICBKT0lOX09CSi4gIHNlZSBjb21tZW50cyBpbiB0aGUgRWxlbWVudE9iamVjdCBkZWZpbml0aW9uIGZvciBtb3JlCiAgICBpbmZvLiAqLwotI2RlZmluZSBKT0lOX0dFVChwKSAoKFB5X3VpbnRwdHJfdCkgKHApICYgMSkKLSNkZWZpbmUgSk9JTl9TRVQocCwgZmxhZykgKCh2b2lkKikgKChQeV91aW50cHRyX3QpIChKT0lOX09CSihwKSkgfCAoZmxhZykpKQotI2RlZmluZSBKT0lOX09CSihwKSAoKFB5T2JqZWN0KikgKChQeV91aW50cHRyX3QpIChwKSAmIH4oUHlfdWludHB0cl90KTEpKQorI2RlZmluZSBKT0lOX0dFVChwKSAoKHVpbnRwdHJfdCkgKHApICYgMSkKKyNkZWZpbmUgSk9JTl9TRVQocCwgZmxhZykgKCh2b2lkKikgKCh1aW50cHRyX3QpIChKT0lOX09CSihwKSkgfCAoZmxhZykpKQorI2RlZmluZSBKT0lOX09CSihwKSAoKFB5T2JqZWN0KikgKCh1aW50cHRyX3QpIChwKSAmIH4odWludHB0cl90KTEpKQogCiAvKiBQeV9DTEVBUiBmb3IgYSBQeU9iamVjdCogdGhhdCB1c2VzIGEgam9pbiBmbGFnLiBQYXNzIHRoZSBwb2ludGVyIGJ5CiAgKiByZWZlcmVuY2Ugc2luY2UgdGhpcyBmdW5jdGlvbiBzZXRzIGl0IHRvIE5VTEwuCkBAIC0xMjksMzAgKzEyOSw2IEBACiAvKiBoZWxwZXJzICovCiAKIExPQ0FMKFB5T2JqZWN0KikKLWRlZXBjb3B5KFB5T2JqZWN0KiBvYmplY3QsIFB5T2JqZWN0KiBtZW1vKQotewotICAgIC8qIGRvIGEgZGVlcCBjb3B5IG9mIHRoZSBnaXZlbiBvYmplY3QgKi8KLSAgICBQeU9iamVjdCogYXJnczsKLSAgICBQeU9iamVjdCogcmVzdWx0OwotICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwotCi0gICAgaWYgKCFzdC0+ZGVlcGNvcHlfb2JqKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICJkZWVwY29weSBoZWxwZXIgbm90IGZvdW5kIgotICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJncyA9IFB5VHVwbGVfUGFjaygyLCBvYmplY3QsIG1lbW8pOwotICAgIGlmICghYXJncykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChzdC0+ZGVlcGNvcHlfb2JqLCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotTE9DQUwoUHlPYmplY3QqKQogbGlzdF9qb2luKFB5T2JqZWN0KiBsaXN0KQogewogICAgIC8qIGpvaW4gbGlzdCBlbGVtZW50cyAoZGVzdHJveWluZyB0aGUgbGlzdCBpbiB0aGUgcHJvY2VzcykgKi8KQEAgLTQyMCwxMCArMzk2LDggQEAKICAgICBQeV9YREVDUkVGKGF0dHJpYik7CiAKICAgICAvKiBSZXBsYWNlIHRoZSBvYmplY3RzIGFscmVhZHkgcG9pbnRlZCB0byBieSB0YWcsIHRleHQgYW5kIHRhaWwuICovCi0gICAgdG1wID0gc2VsZl9lbGVtLT50YWc7CiAgICAgUHlfSU5DUkVGKHRhZyk7Ci0gICAgc2VsZl9lbGVtLT50YWcgPSB0YWc7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihzZWxmX2VsZW0tPnRhZywgdGFnKTsKIAogICAgIHRtcCA9IHNlbGZfZWxlbS0+dGV4dDsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC03NDgsNiArNzIyLDkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0KikgZWxlbWVudDsKIH0KIAorLyogSGVscGVyIGZvciBhIGRlZXAgY29weS4gKi8KK0xPQ0FMKFB5T2JqZWN0ICopIGRlZXBjb3B5KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworCiAvKltjbGluaWMgaW5wdXRdCiBfZWxlbWVudHRyZWUuRWxlbWVudC5fX2RlZXBjb3B5X18KIApAQCAtODIwLDcgKzc5Nyw3IEBACiAgICAgfQogCiAgICAgLyogYWRkIG9iamVjdCB0byBtZW1vIGRpY3Rpb25hcnkgKHNvIGRlZXBjb3B5IHdvbid0IHZpc2l0IGl0IGFnYWluKSAqLwotICAgIGlkID0gUHlMb25nX0Zyb21Tc2l6ZV90KChQeV91aW50cHRyX3QpIHNlbGYpOworICAgIGlkID0gUHlMb25nX0Zyb21Tc2l6ZV90KCh1aW50cHRyX3QpIHNlbGYpOwogICAgIGlmICghaWQpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTgzOCw2ICs4MTUsNTMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorTE9DQUwoUHlPYmplY3QgKikKK2RlZXBjb3B5KFB5T2JqZWN0ICpvYmplY3QsIFB5T2JqZWN0ICptZW1vKQoreworICAgIC8qIGRvIGEgZGVlcCBjb3B5IG9mIHRoZSBnaXZlbiBvYmplY3QgKi8KKyAgICBlbGVtZW50dHJlZXN0YXRlICpzdDsKKyAgICBQeU9iamVjdCAqc3RhY2tbMl07CisKKyAgICAvKiBGYXN0IHBhdGhzICovCisgICAgaWYgKG9iamVjdCA9PSBQeV9Ob25lIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KG9iamVjdCkpIHsKKyAgICAgICAgUHlfSU5DUkVGKG9iamVjdCk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorCisgICAgaWYgKFB5X1JFRkNOVChvYmplY3QpID09IDEpIHsKKyAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG9iamVjdCkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICAgICAgICAgIGludCBzaW1wbGUgPSAxOworICAgICAgICAgICAgd2hpbGUgKFB5RGljdF9OZXh0KG9iamVjdCwgJnBvcywgJmtleSwgJnZhbHVlKSkgeworICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCAhUHlVbmljb2RlX0NoZWNrRXhhY3QodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHNpbXBsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzaW1wbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RGljdF9Db3B5KG9iamVjdCk7CisgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2ggdG8gZ2VuZXJhbCBjYXNlICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoRWxlbWVudF9DaGVja0V4YWN0KG9iamVjdCkpIHsKKyAgICAgICAgICAgIHJldHVybiBfZWxlbWVudHRyZWVfRWxlbWVudF9fX2RlZXBjb3B5X18oKEVsZW1lbnRPYmplY3QgKilvYmplY3QsIG1lbW8pOworICAgICAgICB9CisgICAgfQorCisgICAgLyogR2VuZXJhbCBjYXNlICovCisgICAgc3QgPSBFVF9TVEFURV9HTE9CQUw7CisgICAgaWYgKCFzdC0+ZGVlcGNvcHlfb2JqKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVlcGNvcHkgaGVscGVyIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzdGFja1swXSA9IG9iamVjdDsKKyAgICBzdGFja1sxXSA9IG1lbW87CisgICAgcmV0dXJuIF9QeU9iamVjdF9GYXN0Q2FsbChzdC0+ZGVlcGNvcHlfb2JqLCBzdGFjaywgMik7Cit9CisKKwogLypbY2xpbmljIGlucHV0XQogX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19zaXplb2ZfXyAtPiBQeV9zc2l6ZV90CiAKQEAgLTE3NjMsNyArMTc4Nyw3IEBACiAgICAgICAgICAgICAgICAgc3RlcCA9IC1zdGVwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhc3NlcnQoKHNpemVfdClzbGljZWxlbiA8PSBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSk7CisgICAgICAgICAgICBhc3NlcnQoKHNpemVfdClzbGljZWxlbiA8PSBTSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSk7CiAKICAgICAgICAgICAgIC8qIHJlY3ljbGUgaXMgYSBsaXN0IHRoYXQgd2lsbCBjb250YWluIGFsbCB0aGUgY2hpbGRyZW4KICAgICAgICAgICAgICAqIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbC4KQEAgLTE4OTIsOTIgKzE5MTYsOTAgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9nZXRhdHRybyhFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbmFtZW9iaikKK2VsZW1lbnRfdGFnX2dldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQogewotICAgIFB5T2JqZWN0KiByZXM7Ci0gICAgY2hhciAqbmFtZSA9ICIiOwotCi0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKLSAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7Ci0KLSAgICBpZiAobmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIGhhbmRsZSBjb21tb24gYXR0cmlidXRlcyBmaXJzdCAqLwotICAgIGlmIChzdHJjbXAobmFtZSwgInRhZyIpID09IDApIHsKLSAgICAgICAgcmVzID0gc2VsZi0+dGFnOwotICAgICAgICBQeV9JTkNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAidGV4dCIpID09IDApIHsKLSAgICAgICAgcmVzID0gZWxlbWVudF9nZXRfdGV4dChzZWxmKTsKLSAgICAgICAgUHlfWElOQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLQotICAgIC8qIG1ldGhvZHMgKi8KLSAgICByZXMgPSBQeU9iamVjdF9HZW5lcmljR2V0QXR0cigoUHlPYmplY3QqKSBzZWxmLCBuYW1lb2JqKTsKLSAgICBpZiAocmVzKQotICAgICAgICByZXR1cm4gcmVzOwotCi0gICAgLyogbGVzcyBjb21tb24gYXR0cmlidXRlcyAqLwotICAgIGlmIChzdHJjbXAobmFtZSwgInRhaWwiKSA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X3RhaWwoc2VsZik7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImF0dHJpYiIpID09IDApIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkgewotICAgICAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOwotICAgIH0KLQotICAgIGlmICghcmVzKQotICAgICAgICByZXR1cm4gTlVMTDsKLQorICAgIFB5T2JqZWN0ICpyZXMgPSBzZWxmLT50YWc7CiAgICAgUHlfSU5DUkVGKHJlcyk7CiAgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIGludAotZWxlbWVudF9zZXRhdHRybyhFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbmFtZW9iaiwgUHlPYmplY3QqIHZhbHVlKQorc3RhdGljIFB5T2JqZWN0KgorZWxlbWVudF90ZXh0X2dldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQogewotICAgIGNoYXIgKm5hbWUgPSAiIjsKKyAgICBQeU9iamVjdCAqcmVzID0gZWxlbWVudF9nZXRfdGV4dChzZWxmKTsKKyAgICBQeV9YSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KIAotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICJjYW4ndCBkZWxldGUgYXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybiAtMTsKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfdGFpbF9nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gZWxlbWVudF9nZXRfdGFpbChzZWxmKTsKKyAgICBQeV9YSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZWxlbWVudF9hdHRyaWJfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CisgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCi0gICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOwotICAgIGlmIChuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICByZXMgPSBlbGVtZW50X2dldF9hdHRyaWIoc2VsZik7CisgICAgUHlfWElOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CiAKLSAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWciKSA9PSAwKSB7Ci0gICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgIFB5X1NFVFJFRihzZWxmLT50YWcsIHZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAidGV4dCIpID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKLSAgICAgICAgc2VsZi0+dGV4dCA9IHZhbHVlOwotICAgICAgICBQeV9JTkNSRUYoc2VsZi0+dGV4dCk7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInRhaWwiKSA9PSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50YWlsKSk7Ci0gICAgICAgIHNlbGYtPnRhaWwgPSB2YWx1ZTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnRhaWwpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJhdHRyaWIiKSA9PSAwKSB7Ci0gICAgICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKLSAgICAgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICBQeV9TRVRSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYiwgdmFsdWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICJDYW4ndCBzZXQgYXJiaXRyYXJ5IGF0dHJpYnV0ZXMgb24gRWxlbWVudCIpOwotICAgICAgICByZXR1cm4gLTE7CisvKiBtYWNybyBmb3Igc2V0dGVyIHZhbGlkYXRpb24gKi8KKyNkZWZpbmUgX1ZBTElEQVRFX0FUVFJfVkFMVUUoVikgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChWKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlIGVsZW1lbnQgYXR0cmlidXRlIik7ICAgICAgXAorICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAKK3N0YXRpYyBpbnQKK2VsZW1lbnRfdGFnX3NldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgX1ZBTElEQVRFX0FUVFJfVkFMVUUodmFsdWUpOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfU0VUUkVGKHNlbGYtPnRhZywgdmFsdWUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X3RleHRfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGV4dCkpOworICAgIHNlbGYtPnRleHQgPSB2YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudF90YWlsX3NldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgX1ZBTElEQVRFX0FUVFJfVkFMVUUodmFsdWUpOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKKyAgICBzZWxmLT50YWlsID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfYXR0cmliX3NldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgX1ZBTElEQVRFX0FUVFJfVkFMVUUodmFsdWUpOworICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfU0VUUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTk5NywyMiArMjAxOSwyMiBAQAogICogcHJlLW9yZGVyIHRyYXZlcnNhbC4gVG8ga2VlcCB0cmFjayBvZiB3aGljaCBzdWItZWxlbWVudCBzaG91bGQgYmUgcmV0dXJuZWQKICAqIG5leHQsIGEgc3RhY2sgb2YgcGFyZW50cyBpcyBtYWludGFpbmVkLiBUaGlzIGlzIGEgc3RhbmRhcmQgc3RhY2stYmFzZWQKICAqIGl0ZXJhdGl2ZSBwcmUtb3JkZXIgdHJhdmVyc2FsIG9mIGEgdHJlZS4KLSAqIFRoZSBzdGFjayBpcyBtYW5hZ2VkIHVzaW5nIGEgc2luZ2xlLWxpbmtlZCBsaXN0IHN0YXJ0aW5nIGF0IHBhcmVudF9zdGFjay4KLSAqIEVhY2ggc3RhY2sgbm9kZSBjb250YWlucyB0aGUgc2F2ZWQgcGFyZW50IHRvIHdoaWNoIHdlIHNob3VsZCByZXR1cm4gYWZ0ZXIKKyAqIFRoZSBzdGFjayBpcyBtYW5hZ2VkIHVzaW5nIGEgY29udGludW91cyBhcnJheS4KKyAqIEVhY2ggc3RhY2sgaXRlbSBjb250YWlucyB0aGUgc2F2ZWQgcGFyZW50IHRvIHdoaWNoIHdlIHNob3VsZCByZXR1cm4gYWZ0ZXIKICAqIHRoZSBjdXJyZW50IG9uZSBpcyBleGhhdXN0ZWQsIGFuZCB0aGUgbmV4dCBjaGlsZCB0byBleGFtaW5lIGluIHRoYXQgcGFyZW50LgogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJlbnRMb2NhdG9yX3QgewogICAgIEVsZW1lbnRPYmplY3QgKnBhcmVudDsKICAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4OwotICAgIHN0cnVjdCBQYXJlbnRMb2NhdG9yX3QgKm5leHQ7CiB9IFBhcmVudExvY2F0b3I7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUGFyZW50TG9jYXRvciAqcGFyZW50X3N0YWNrOworICAgIFB5X3NzaXplX3QgcGFyZW50X3N0YWNrX3VzZWQ7CisgICAgUHlfc3NpemVfdCBwYXJlbnRfc3RhY2tfc2l6ZTsKICAgICBFbGVtZW50T2JqZWN0ICpyb290X2VsZW1lbnQ7CiAgICAgUHlPYmplY3QgKnNvdWdodF90YWc7Ci0gICAgaW50IHJvb3RfZG9uZTsKICAgICBpbnQgZ2V0dGV4dDsKIH0gRWxlbWVudEl0ZXJPYmplY3Q7CiAKQEAgLTIwMjAsMTMgKzIwNDIsMTEgQEAKIHN0YXRpYyB2b2lkCiBlbGVtZW50aXRlcl9kZWFsbG9jKEVsZW1lbnRJdGVyT2JqZWN0ICppdCkKIHsKLSAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKLSAgICB3aGlsZSAocCkgewotICAgICAgICBQYXJlbnRMb2NhdG9yICp0ZW1wID0gcDsKLSAgICAgICAgUHlfWERFQ1JFRihwLT5wYXJlbnQpOwotICAgICAgICBwID0gcC0+bmV4dDsKLSAgICAgICAgUHlPYmplY3RfRnJlZSh0ZW1wKTsKLSAgICB9CisgICAgUHlfc3NpemVfdCBpID0gaXQtPnBhcmVudF9zdGFja191c2VkOworICAgIGl0LT5wYXJlbnRfc3RhY2tfdXNlZCA9IDA7CisgICAgd2hpbGUgKGktLSkKKyAgICAgICAgUHlfWERFQ1JFRihpdC0+cGFyZW50X3N0YWNrW2ldLnBhcmVudCk7CisgICAgUHlNZW1fRnJlZShpdC0+cGFyZW50X3N0YWNrKTsKIAogICAgIFB5X1hERUNSRUYoaXQtPnNvdWdodF90YWcpOwogICAgIFB5X1hERUNSRUYoaXQtPnJvb3RfZWxlbWVudCk7CkBAIC0yMDM4LDExICsyMDU4LDkgQEAKIHN0YXRpYyBpbnQKIGVsZW1lbnRpdGVyX3RyYXZlcnNlKEVsZW1lbnRJdGVyT2JqZWN0ICppdCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUGFyZW50TG9jYXRvciAqcCA9IGl0LT5wYXJlbnRfc3RhY2s7Ci0gICAgd2hpbGUgKHApIHsKLSAgICAgICAgUHlfVklTSVQocC0+cGFyZW50KTsKLSAgICAgICAgcCA9IHAtPm5leHQ7Ci0gICAgfQorICAgIFB5X3NzaXplX3QgaSA9IGl0LT5wYXJlbnRfc3RhY2tfdXNlZDsKKyAgICB3aGlsZSAoaS0tKQorICAgICAgICBQeV9WSVNJVChpdC0+cGFyZW50X3N0YWNrW2ldLnBhcmVudCk7CiAKICAgICBQeV9WSVNJVChpdC0+cm9vdF9lbGVtZW50KTsKICAgICBQeV9WSVNJVChpdC0+c291Z2h0X3RhZyk7CkBAIC0yMDUxLDE3ICsyMDY5LDI1IEBACiAKIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZWxlbWVudGl0ZXJfbmV4dC4gQWRkIGEgbmV3IHBhcmVudCB0byB0aGUgcGFyZW50IHN0YWNrLgogICovCi1zdGF0aWMgUGFyZW50TG9jYXRvciAqCi1wYXJlbnRfc3RhY2tfcHVzaF9uZXcoUGFyZW50TG9jYXRvciAqc3RhY2ssIEVsZW1lbnRPYmplY3QgKnBhcmVudCkKK3N0YXRpYyBpbnQKK3BhcmVudF9zdGFja19wdXNoX25ldyhFbGVtZW50SXRlck9iamVjdCAqaXQsIEVsZW1lbnRPYmplY3QgKnBhcmVudCkKIHsKLSAgICBQYXJlbnRMb2NhdG9yICpuZXdfbm9kZSA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpOwotICAgIGlmIChuZXdfbm9kZSkgewotICAgICAgICBuZXdfbm9kZS0+cGFyZW50ID0gcGFyZW50OwotICAgICAgICBQeV9JTkNSRUYocGFyZW50KTsKLSAgICAgICAgbmV3X25vZGUtPmNoaWxkX2luZGV4ID0gMDsKLSAgICAgICAgbmV3X25vZGUtPm5leHQgPSBzdGFjazsKKyAgICBQYXJlbnRMb2NhdG9yICppdGVtOworCisgICAgaWYgKGl0LT5wYXJlbnRfc3RhY2tfdXNlZCA+PSBpdC0+cGFyZW50X3N0YWNrX3NpemUpIHsKKyAgICAgICAgUHlfc3NpemVfdCBuZXdfc2l6ZSA9IGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSAqIDI7ICAvKiBuZXZlciBvdmVyZmxvdyAqLworICAgICAgICBQYXJlbnRMb2NhdG9yICpwYXJlbnRfc3RhY2sgPSBpdC0+cGFyZW50X3N0YWNrOworICAgICAgICBQeU1lbV9SZXNpemUocGFyZW50X3N0YWNrLCBQYXJlbnRMb2NhdG9yLCBuZXdfc2l6ZSk7CisgICAgICAgIGlmIChwYXJlbnRfc3RhY2sgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFjazsKKyAgICAgICAgaXQtPnBhcmVudF9zdGFja19zaXplID0gbmV3X3NpemU7CiAgICAgfQotICAgIHJldHVybiBuZXdfbm9kZTsKKyAgICBpdGVtID0gaXQtPnBhcmVudF9zdGFjayArIGl0LT5wYXJlbnRfc3RhY2tfdXNlZCsrOworICAgIFB5X0lOQ1JFRihwYXJlbnQpOworICAgIGl0ZW0tPnBhcmVudCA9IHBhcmVudDsKKyAgICBpdGVtLT5jaGlsZF9pbmRleCA9IDA7CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMDc4LDE1MSArMjEwNCw5MSBAQAogICAgICAqICAgLSBpdGVydGV4dCgpIGFsc28gaGFzIHRvIGhhbmRsZSB0YWlsLCBhZnRlciBmaW5pc2hpbmcgd2l0aCBhbGwgdGhlCiAgICAgICogICAgIGNoaWxkcmVuIG9mIGEgbm9kZS4KICAgICAgKi8KLSAgICBFbGVtZW50T2JqZWN0ICpjdXJfcGFyZW50OwotICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXg7CiAgICAgaW50IHJjOwogICAgIEVsZW1lbnRPYmplY3QgKmVsZW07CisgICAgUHlPYmplY3QgKnRleHQ7CiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICAvKiBIYW5kbGUgdGhlIGNhc2UgcmVhY2hlZCBpbiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgaXRlcmF0aW9uLCB3aGVyZQotICAgICAgICAgKiB0aGUgcGFyZW50IHN0YWNrIGlzIGVtcHR5LiBUaGUgcm9vdF9kb25lIGZsYWcgZ2l2ZXMgdXMgaW5kaWNhdGlvbgotICAgICAgICAgKiB3aGV0aGVyIHdlJ3ZlIGp1c3Qgc3RhcnRlZCBpdGVyYXRpbmcgKHNvIHJvb3RfZG9uZSBpcyAwKSwgaW4gd2hpY2gKLSAgICAgICAgICogY2FzZSB0aGUgcm9vdCBpcyByZXR1cm5lZC4gSWYgcm9vdF9kb25lIGlzIDEgYW5kIHdlJ3JlIGhlcmUsIHRoZQorICAgICAgICAgKiB0aGUgcGFyZW50IHN0YWNrIGlzIGVtcHR5LiBJZiByb290X2VsZW1lbnQgaXMgTlVMTCBhbmQgd2UncmUgaGVyZSwgdGhlCiAgICAgICAgICAqIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZC4KICAgICAgICAgICovCi0gICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjay0+cGFyZW50KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPnJvb3RfZG9uZSkgeworICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2tfdXNlZCkgeworICAgICAgICAgICAgaWYgKCFpdC0+cm9vdF9lbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZWxlbSA9IGl0LT5yb290X2VsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFja19wdXNoX25ldyhpdC0+cGFyZW50X3N0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICBpdC0+cm9vdF9kb25lID0gMTsKLSAgICAgICAgICAgICAgICByYyA9IChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJjKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGVsZW0tPnRhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnNvdWdodF90YWcsIFB5X0VRKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQgPSBlbGVtZW50X2dldF90ZXh0KGVsZW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9Jc1RydWUodGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmMgPiAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKillbGVtOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyogU2VlIGlmIHRoZXJlIGFyZSBjaGlsZHJlbiBsZWZ0IHRvIHRyYXZlcnNlIGluIHRoZSBjdXJyZW50IHBhcmVudC4gSWYKLSAgICAgICAgICogeWVzLCB2aXNpdCB0aGUgbmV4dCBjaGlsZC4gSWYgbm90LCBwb3AgdGhlIHN0YWNrIGFuZCB0cnkgYWdhaW4uCi0gICAgICAgICAqLwotICAgICAgICBjdXJfcGFyZW50ID0gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50OwotICAgICAgICBjaGlsZF9pbmRleCA9IGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4OwotICAgICAgICBpZiAoY3VyX3BhcmVudC0+ZXh0cmEgJiYgY2hpbGRfaW5kZXggPCBjdXJfcGFyZW50LT5leHRyYS0+bGVuZ3RoKSB7Ci0gICAgICAgICAgICBlbGVtID0gKEVsZW1lbnRPYmplY3QgKiljdXJfcGFyZW50LT5leHRyYS0+Y2hpbGRyZW5bY2hpbGRfaW5kZXhdOwotICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXgrKzsKLSAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbSk7Ci0gICAgICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2spIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7Ci0gICAgICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGV4dCA9IGVsZW1lbnRfZ2V0X3RleHQoZWxlbSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9Jc1RydWUodGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJjID4gMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHRleHQpOwotICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByYyA9IChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJjKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGVsZW0tPnRhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnNvdWdodF90YWcsIFB5X0VRKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKillbGVtOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBlbGVtID0gaXQtPnJvb3RfZWxlbWVudDsgIC8qIHN0ZWFscyBhIHJlZmVyZW5jZSAqLworICAgICAgICAgICAgaXQtPnJvb3RfZWxlbWVudCA9IE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdGFpbDsKLSAgICAgICAgICAgIFBhcmVudExvY2F0b3IgKm5leHQ7Ci0gICAgICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoY3VyX3BhcmVudCk7Ci0gICAgICAgICAgICAgICAgdGFpbCA9IGVsZW1lbnRfZ2V0X3RhaWwoY3VyX3BhcmVudCk7Ci0gICAgICAgICAgICAgICAgaWYgKCF0YWlsKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdXJfcGFyZW50KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0YWlsKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3VyX3BhcmVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0YWlsID0gUHlfTm9uZTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGFpbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBuZXh0ID0gaXQtPnBhcmVudF9zdGFjay0+bmV4dDsKLSAgICAgICAgICAgIGN1cl9wYXJlbnQgPSBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQ7Ci0gICAgICAgICAgICBQeU9iamVjdF9GcmVlKGl0LT5wYXJlbnRfc3RhY2spOwotICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IG5leHQ7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGN1cl9wYXJlbnQpOwotCi0gICAgICAgICAgICAvKiBOb3RlIHRoYXQgZXh0cmEgY29uZGl0aW9uIG9uIGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCBoZXJlOwotICAgICAgICAgICAgICogdGhpcyBpcyBiZWNhdXNlIGl0ZXJ0ZXh0KCkgaXMgc3VwcG9zZWQgdG8gb25seSByZXR1cm4gKmlubmVyKgotICAgICAgICAgICAgICogdGV4dCwgbm90IHRleHQgZm9sbG93aW5nIHRoZSBlbGVtZW50IGl0IGJlZ2FuIGl0ZXJhdGlvbiB3aXRoLgorICAgICAgICAgICAgLyogU2VlIGlmIHRoZXJlIGFyZSBjaGlsZHJlbiBsZWZ0IHRvIHRyYXZlcnNlIGluIHRoZSBjdXJyZW50IHBhcmVudC4gSWYKKyAgICAgICAgICAgICAqIHllcywgdmlzaXQgdGhlIG5leHQgY2hpbGQuIElmIG5vdCwgcG9wIHRoZSBzdGFjayBhbmQgdHJ5IGFnYWluLgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoaXQtPnBhcmVudF9zdGFjay0+cGFyZW50KSB7Ci0gICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9Jc1RydWUodGFpbCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJjID4gMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhaWw7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgUGFyZW50TG9jYXRvciAqaXRlbSA9ICZpdC0+cGFyZW50X3N0YWNrW2l0LT5wYXJlbnRfc3RhY2tfdXNlZCAtIDFdOworICAgICAgICAgICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleCA9IGl0ZW0tPmNoaWxkX2luZGV4OworICAgICAgICAgICAgRWxlbWVudE9iamVjdEV4dHJhICpleHRyYTsKKyAgICAgICAgICAgIGVsZW0gPSBpdGVtLT5wYXJlbnQ7CisgICAgICAgICAgICBleHRyYSA9IGVsZW0tPmV4dHJhOworICAgICAgICAgICAgaWYgKCFleHRyYSB8fCBjaGlsZF9pbmRleCA+PSBleHRyYS0+bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFja191c2VkLS07CisgICAgICAgICAgICAgICAgLyogTm90ZSB0aGF0IGV4dHJhIGNvbmRpdGlvbiBvbiBpdC0+cGFyZW50X3N0YWNrX3VzZWQgaGVyZTsKKyAgICAgICAgICAgICAgICAgKiB0aGlzIGlzIGJlY2F1c2UgaXRlcnRleHQoKSBpcyBzdXBwb3NlZCB0byBvbmx5IHJldHVybiAqaW5uZXIqCisgICAgICAgICAgICAgICAgICogdGV4dCwgbm90IHRleHQgZm9sbG93aW5nIHRoZSBlbGVtZW50IGl0IGJlZ2FuIGl0ZXJhdGlvbiB3aXRoLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCAmJiBpdC0+cGFyZW50X3N0YWNrX3VzZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGVsZW1lbnRfZ2V0X3RhaWwoZWxlbSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZ2V0dGV4dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbGVtID0gKEVsZW1lbnRPYmplY3QgKilleHRyYS0+Y2hpbGRyZW5bY2hpbGRfaW5kZXhdOworICAgICAgICAgICAgaXRlbS0+Y2hpbGRfaW5kZXgrKzsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihlbGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQsIGVsZW0pIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgeworICAgICAgICAgICAgdGV4dCA9IGVsZW1lbnRfZ2V0X3RleHQoZWxlbSk7CisgICAgICAgICAgICBnb3RvIGdldHRleHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSkKKyAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKillbGVtOworCisgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGVsZW0tPnRhZywgaXQtPnNvdWdodF90YWcsIFB5X0VRKTsKKyAgICAgICAgaWYgKHJjID4gMCkKKyAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKillbGVtOworCisgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBjb250aW51ZTsKKworZ2V0dGV4dDoKKyAgICAgICAgaWYgKCF0ZXh0KSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGV4dCA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KTsKKyAgICAgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgICAgICBQeV9ERUNSRUYodGV4dCk7CisgICAgICAgICAgICBpZiAocmMgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMjc0LDYgKzIyNDAsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiB9OwogCisjZGVmaW5lIElOSVRfUEFSRU5UX1NUQUNLX1NJWkUgOAogCiBzdGF0aWMgUHlPYmplY3QgKgogY3JlYXRlX2VsZW1lbnRpdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsIGludCBnZXR0ZXh0KQpAQCAtMjI4NiwyMiArMjI1MywyMCBAQAogCiAgICAgUHlfSU5DUkVGKHRhZyk7CiAgICAgaXQtPnNvdWdodF90YWcgPSB0YWc7Ci0gICAgaXQtPnJvb3RfZG9uZSA9IDA7CiAgICAgaXQtPmdldHRleHQgPSBnZXR0ZXh0OwogICAgIFB5X0lOQ1JFRihzZWxmKTsKICAgICBpdC0+cm9vdF9lbGVtZW50ID0gc2VsZjsKIAogICAgIFB5T2JqZWN0X0dDX1RyYWNrKGl0KTsKIAotICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFBhcmVudExvY2F0b3IpKTsKKyAgICBpdC0+cGFyZW50X3N0YWNrID0gUHlNZW1fTmV3KFBhcmVudExvY2F0b3IsIElOSVRfUEFSRU5UX1NUQUNLX1NJWkUpOwogICAgIGlmIChpdC0+cGFyZW50X3N0YWNrID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCA9IE5VTEw7Ci0gICAgaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXggPSAwOwotICAgIGl0LT5wYXJlbnRfc3RhY2stPm5leHQgPSBOVUxMOworICAgIGl0LT5wYXJlbnRfc3RhY2tfdXNlZCA9IDA7CisgICAgaXQtPnBhcmVudF9zdGFja19zaXplID0gSU5JVF9QQVJFTlRfU1RBQ0tfU0laRTsKIAogICAgIHJldHVybiAoUHlPYmplY3QgKilpdDsKIH0KQEAgLTIzMjYsNyArMjI5MSw3IEBACiAgICAgUHlPYmplY3QgKmVsZW1lbnRfZmFjdG9yeTsKIAogICAgIC8qIGVsZW1lbnQgdHJhY2luZyAqLwotICAgIFB5T2JqZWN0ICpldmVudHM7IC8qIGxpc3Qgb2YgZXZlbnRzLCBvciBOVUxMIGlmIG5vdCBjb2xsZWN0aW5nICovCisgICAgUHlPYmplY3QgKmV2ZW50c19hcHBlbmQ7IC8qIHRoZSBhcHBlbmQgbWV0aG9kIG9mIHRoZSBsaXN0IG9mIGV2ZW50cywgb3IgTlVMTCAqLwogICAgIFB5T2JqZWN0ICpzdGFydF9ldmVudF9vYmo7IC8qIGV2ZW50IG9iamVjdHMgKE5VTEwgdG8gaWdub3JlKSAqLwogICAgIFB5T2JqZWN0ICplbmRfZXZlbnRfb2JqOwogICAgIFB5T2JqZWN0ICpzdGFydF9uc19ldmVudF9vYmo7CkBAIC0yMzYxLDcgKzIzMjYsNyBAQAogICAgICAgICB9CiAgICAgICAgIHQtPmluZGV4ID0gMDsKIAotICAgICAgICB0LT5ldmVudHMgPSBOVUxMOworICAgICAgICB0LT5ldmVudHNfYXBwZW5kID0gTlVMTDsKICAgICAgICAgdC0+c3RhcnRfZXZlbnRfb2JqID0gdC0+ZW5kX2V2ZW50X29iaiA9IE5VTEw7CiAgICAgICAgIHQtPnN0YXJ0X25zX2V2ZW50X29iaiA9IHQtPmVuZF9uc19ldmVudF9vYmogPSBOVUxMOwogICAgIH0KQEAgLTIzODAsMTMgKzIzNDUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVsZW1lbnRfZmFjdG9yeSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MWNmYTc1NTg5NzBlZTk2IGlucHV0PTFiNDI0ZWVlZmMzNTI0OWNdKi8KIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKGVsZW1lbnRfZmFjdG9yeSkgewogICAgICAgICBQeV9JTkNSRUYoZWxlbWVudF9mYWN0b3J5KTsKLSAgICAgICAgdG1wID0gc2VsZi0+ZWxlbWVudF9mYWN0b3J5OwotICAgICAgICBzZWxmLT5lbGVtZW50X2ZhY3RvcnkgPSBlbGVtZW50X2ZhY3Rvcnk7Ci0gICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgUHlfWFNFVFJFRihzZWxmLT5lbGVtZW50X2ZhY3RvcnksIGVsZW1lbnRfZmFjdG9yeSk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0yNDExLDcgKzIzNzIsNyBAQAogICAgIFB5X0NMRUFSKHNlbGYtPnN0YXJ0X25zX2V2ZW50X29iaik7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZW5kX2V2ZW50X29iaik7CiAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhcnRfZXZlbnRfb2JqKTsKLSAgICBQeV9DTEVBUihzZWxmLT5ldmVudHMpOworICAgIFB5X0NMRUFSKHNlbGYtPmV2ZW50c19hcHBlbmQpOwogICAgIFB5X0NMRUFSKHNlbGYtPnN0YWNrKTsKICAgICBQeV9DTEVBUihzZWxmLT5kYXRhKTsKICAgICBQeV9DTEVBUihzZWxmLT5sYXN0KTsKQEAgLTI0OTIsMTMgKzI0NTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9kZSkKIHsKICAgICBpZiAoYWN0aW9uICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5VHVwbGVfUGFjaygyLCBhY3Rpb24sIG5vZGUpOworICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICBQeU9iamVjdCAqZXZlbnQgPSBQeVR1cGxlX1BhY2soMiwgYWN0aW9uLCBub2RlKTsKKyAgICAgICAgaWYgKGV2ZW50ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2VsZi0+ZXZlbnRzX2FwcGVuZCwgZXZlbnQsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZXZlbnQpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHNlbGYtPmV2ZW50cywgcmVzKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTI1MjcsMTAgKzI0ODksMTcgQEAKICAgICAgICAgc2VsZi0+ZGF0YSA9IE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSAmJiBzZWxmLT5lbGVtZW50X2ZhY3RvcnkgIT0gUHlfTm9uZSkgewotICAgICAgICBub2RlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgIk9PIiwgdGFnLCBhdHRyaWIpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKCFzZWxmLT5lbGVtZW50X2ZhY3RvcnkgfHwgc2VsZi0+ZWxlbWVudF9mYWN0b3J5ID09IFB5X05vbmUpIHsKICAgICAgICAgbm9kZSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CisgICAgfSBlbHNlIGlmIChhdHRyaWIgPT0gUHlfTm9uZSkgeworICAgICAgICBhdHRyaWIgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmICghYXR0cmliKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7CisgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbm9kZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5lbGVtZW50X2ZhY3RvcnksICJPTyIsIHRhZywgYXR0cmliKTsKICAgICB9CiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjk4OSwxMiArMjk1OCw4IEBACiAgICAgICAgICAgICBhdHRyaWJfaW4gKz0gMjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFBhc3MgYW4gZW1wdHkgZGljdGlvbmFyeSBvbiAqLwotICAgICAgICBhdHRyaWIgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmICghYXR0cmliKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGFnKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIGF0dHJpYiA9IFB5X05vbmU7CiAgICAgfQogCiAgICAgaWYgKFRyZWVCdWlsZGVyX0NoZWNrRXhhY3Qoc2VsZi0+dGFyZ2V0KSkgewpAQCAtMzAwMyw2ICsyOTY4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsIGF0dHJpYik7CiAgICAgfQogICAgIGVsc2UgaWYgKHNlbGYtPmhhbmRsZV9zdGFydCkgeworICAgICAgICBpZiAoYXR0cmliID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOworICAgICAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgaWYgKCFhdHRyaWIpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFnKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmhhbmRsZV9zdGFydCwgIk9PIiwgdGFnLCBhdHRyaWIpOwogICAgIH0gZWxzZQogICAgICAgICByZXMgPSBOVUxMOwpAQCAtMzA3Niw3ICszMDQ5LDcgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0YXJnZXQtPmV2ZW50cyB8fCAhdGFyZ2V0LT5zdGFydF9uc19ldmVudF9vYmopCisgICAgaWYgKCF0YXJnZXQtPmV2ZW50c19hcHBlbmQgfHwgIXRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXVyaSkKQEAgLTMwOTksNyArMzA3Miw3IEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghdGFyZ2V0LT5ldmVudHMpCisgICAgaWYgKCF0YXJnZXQtPmV2ZW50c19hcHBlbmQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRyZWVidWlsZGVyX2FwcGVuZF9ldmVudCh0YXJnZXQsIHRhcmdldC0+ZW5kX25zX2V2ZW50X29iaiwgUHlfTm9uZSk7CkBAIC0zNDI2LDcgKzMzOTksNyBAQAogICAgIH0KICAgICBlbHNlIGlmIChzZWxmLT5oYW5kbGVfY2xvc2UpIHsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+aGFuZGxlX2Nsb3NlLCAiIik7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKHNlbGYtPmhhbmRsZV9jbG9zZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICByZXR1cm4gcmVzOwpAQCAtMzU4OCw3ICszNTYxLDcgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9lbGVtZW50dHJlZS5YTUxQYXJzZXIuX3NldGV2ZW50cwogCi0gICAgZXZlbnRzX3F1ZXVlOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxpc3RfVHlwZScpCisgICAgZXZlbnRzX3F1ZXVlOiBvYmplY3QKICAgICBldmVudHNfdG9fcmVwb3J0OiBvYmplY3QgPSBOb25lCiAgICAgLwogCkBAIC0zNTk4LDEyICszNTcxLDEyIEBACiBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfaW1wbChYTUxQYXJzZXJPYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXZlbnRzX3F1ZXVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV2ZW50c190b19yZXBvcnQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQ0MDA5MjkyMmIxM2VkMSBpbnB1dD01OWRiOTc0MjkxMGM2MTc0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQ0MDA5MjkyMmIxM2VkMSBpbnB1dD1hYmY5MDgzMGExYzNiMGZjXSovCiB7CiAgICAgLyogYWN0aXZhdGUgZWxlbWVudCBldmVudCByZXBvcnRpbmcgKi8KICAgICBQeV9zc2l6ZV90IGk7CiAgICAgVHJlZUJ1aWxkZXJPYmplY3QgKnRhcmdldDsKLSAgICBQeU9iamVjdCAqZXZlbnRzX3NlcTsKKyAgICBQeU9iamVjdCAqZXZlbnRzX2FwcGVuZCwgKmV2ZW50c19zZXE7CiAKICAgICBpZiAoIVRyZWVCdWlsZGVyX0NoZWNrRXhhY3Qoc2VsZi0+dGFyZ2V0KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoCkBAIC0zNjE2LDggKzM1ODksMTAgQEAKIAogICAgIHRhcmdldCA9IChUcmVlQnVpbGRlck9iamVjdCopIHNlbGYtPnRhcmdldDsKIAotICAgIFB5X0lOQ1JFRihldmVudHNfcXVldWUpOwotICAgIFB5X1hTRVRSRUYodGFyZ2V0LT5ldmVudHMsIGV2ZW50c19xdWV1ZSk7CisgICAgZXZlbnRzX2FwcGVuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXZlbnRzX3F1ZXVlLCAiYXBwZW5kIik7CisgICAgaWYgKGV2ZW50c19hcHBlbmQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfWFNFVFJFRih0YXJnZXQtPmV2ZW50c19hcHBlbmQsIGV2ZW50c19hcHBlbmQpOwogCiAgICAgLyogY2xlYXIgb3V0IGV4aXN0aW5nIGV2ZW50cyAqLwogICAgIFB5X0NMRUFSKHRhcmdldC0+c3RhcnRfZXZlbnRfb2JqKTsKQEAgLTM3NTAsNiArMzcyNSwyNiBAQAogICAgIChvYmpvYmphcmdwcm9jKSBlbGVtZW50X2Fzc19zdWJzY3IsCiB9OwogCitzdGF0aWMgUHlHZXRTZXREZWYgZWxlbWVudF9nZXRzZXRsaXN0W10gPSB7CisgICAgeyJ0YWciLAorICAgICAgICAoZ2V0dGVyKWVsZW1lbnRfdGFnX2dldHRlciwKKyAgICAgICAgKHNldHRlcillbGVtZW50X3RhZ19zZXR0ZXIsCisgICAgICAgICJBIHN0cmluZyBpZGVudGlmeWluZyB3aGF0IGtpbmQgb2YgZGF0YSB0aGlzIGVsZW1lbnQgcmVwcmVzZW50cyJ9LAorICAgIHsidGV4dCIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF90ZXh0X2dldHRlciwKKyAgICAgICAgKHNldHRlcillbGVtZW50X3RleHRfc2V0dGVyLAorICAgICAgICAiQSBzdHJpbmcgb2YgdGV4dCBkaXJlY3RseSBhZnRlciB0aGUgc3RhcnQgdGFnLCBvciBOb25lIn0sCisgICAgeyJ0YWlsIiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X3RhaWxfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfdGFpbF9zZXR0ZXIsCisgICAgICAgICJBIHN0cmluZyBvZiB0ZXh0IGRpcmVjdGx5IGFmdGVyIHRoZSBlbmQgdGFnLCBvciBOb25lIn0sCisgICAgeyJhdHRyaWIiLAorICAgICAgICAoZ2V0dGVyKWVsZW1lbnRfYXR0cmliX2dldHRlciwKKyAgICAgICAgKHNldHRlcillbGVtZW50X2F0dHJpYl9zZXR0ZXIsCisgICAgICAgICJBIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZXMifSwKKyAgICB7TlVMTH0sCit9OworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEVsZW1lbnRfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLkVsZW1lbnQiLCBzaXplb2YoRWxlbWVudE9iamVjdCksIDAsCkBAIC0zNzY2LDggKzM3NjEsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAoc2V0YXR0cm9mdW5jKWVsZW1lbnRfc2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCkBAIC0zNzgwLDcgKzM3NzUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgZWxlbWVudF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBlbGVtZW50X2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwppbmRleCBkNzg1YzQ5Li5mYTVmYWQzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwpAQCAtMTI4LDQ0ICsxMjgsNjAgQEAKIHsKICAgICBQeU9iamVjdCAqcmV0OwogICAgIFB5T2JqZWN0ICphcmdhcHBsLCAqa3dhcHBsOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuYXJnczsKIAogICAgIGFzc2VydCAoUHlDYWxsYWJsZV9DaGVjayhwdG8tPmZuKSk7CiAgICAgYXNzZXJ0IChQeVR1cGxlX0NoZWNrKHB0by0+YXJncykpOwogICAgIGFzc2VydCAoUHlEaWN0X0NoZWNrKHB0by0+a3cpKTsKIAogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHB0by0+YXJncykgPT0gMCkgewotICAgICAgICBhcmdhcHBsID0gYXJnczsKLSAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOwotICAgIH0gZWxzZSBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKSB7Ci0gICAgICAgIGFyZ2FwcGwgPSBwdG8tPmFyZ3M7Ci0gICAgICAgIFB5X0lOQ1JFRihwdG8tPmFyZ3MpOwotICAgIH0gZWxzZSB7CisgICAgICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICAgICAgYXJnYXBwbCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkgeworICAgICAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKHB0by0+YXJncywgMCk7CisgICAgICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShwdG8tPmFyZ3MpOworICAgICAgICBhcmdhcHBsID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gTlVMTDsKICAgICAgICAgYXJnYXBwbCA9IFB5U2VxdWVuY2VfQ29uY2F0KHB0by0+YXJncywgYXJncyk7Ci0gICAgICAgIGlmIChhcmdhcHBsID09IE5VTEwpCisgICAgICAgIGlmIChhcmdhcHBsID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJnYXBwbCkpOwogICAgIH0KIAogICAgIGlmIChQeURpY3RfU2l6ZShwdG8tPmt3KSA9PSAwKSB7CiAgICAgICAgIGt3YXBwbCA9IGt3OwogICAgICAgICBQeV9YSU5DUkVGKGt3YXBwbCk7Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIGt3YXBwbCA9IFB5RGljdF9Db3B5KHB0by0+a3cpOwogICAgICAgICBpZiAoa3dhcHBsID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoYXJnYXBwbCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorCiAgICAgICAgIGlmIChrdyAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlEaWN0X01lcmdlKGt3YXBwbCwga3csIDEpICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnYXBwbCk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdhcHBsKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa3dhcHBsKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldCA9IFB5T2JqZWN0X0NhbGwocHRvLT5mbiwgYXJnYXBwbCwga3dhcHBsKTsKLSAgICBQeV9ERUNSRUYoYXJnYXBwbCk7CisgICAgaWYgKHN0YWNrKSB7CisgICAgICAgIHJldCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QocHRvLT5mbiwgc3RhY2ssIG5hcmdzLCBrd2FwcGwpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0ID0gUHlPYmplY3RfQ2FsbChwdG8tPmZuLCBhcmdhcHBsLCBrd2FwcGwpOworICAgICAgICBQeV9ERUNSRUYoYXJnYXBwbCk7CisgICAgfQogICAgIFB5X1hERUNSRUYoa3dhcHBsKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjEzLDcgKzIyOSw3IEBACiAgICAgaWYgKHN0YXR1cyAhPSAwKSB7CiAgICAgICAgIGlmIChzdGF0dXMgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoLi4uKSIsIFB5X1RZUEUocHRvKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiLi4uIik7CiAgICAgfQogCiAgICAgYXJnbGlzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKQEAgLTQ2MSwxMiArNDc3LDEyIEBACiBrZXlvYmplY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKmtvLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5T2JqZWN0ICphcmdzOwogICAgIFB5T2JqZWN0ICp4OwogICAgIFB5T2JqZWN0ICp5OwogICAgIFB5T2JqZWN0ICpjb21wYXJlOwogICAgIFB5T2JqZWN0ICphbnN3ZXI7CiAgICAgc3RhdGljIFB5T2JqZWN0ICp6ZXJvOworICAgIFB5T2JqZWN0KiBzdGFja1syXTsKIAogICAgIGlmICh6ZXJvID09IE5VTEwpIHsKICAgICAgICAgemVybyA9IFB5TG9uZ19Gcm9tTG9uZygwKTsKQEAgLTQ5MCwxNyArNTA2LDEzIEBACiAgICAgLyogQ2FsbCB0aGUgdXNlcidzIGNvbXBhcmlzb24gZnVuY3Rpb24gYW5kIHRyYW5zbGF0ZSB0aGUgMy13YXkKICAgICAgKiByZXN1bHQgaW50byB0cnVlIG9yIGZhbHNlIChvciBlcnJvcikuCiAgICAgICovCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDIpOwotICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgc3RhY2tbMF0gPSB4OworICAgIHN0YWNrWzFdID0geTsKKyAgICByZXMgPSBfUHlPYmplY3RfRmFzdENhbGwoY29tcGFyZSwgc3RhY2ssIDIpOworICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoeCk7Ci0gICAgUHlfSU5DUkVGKHkpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgeCk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCB5KTsKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsKGNvbXBhcmUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIGFuc3dlciA9IFB5T2JqZWN0X1JpY2hDb21wYXJlKHJlcywgemVybywgb3ApOwogICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIHJldHVybiBhbnN3ZXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19nZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKaW5kZXggYjg0MGJmNS4uZGFhZTcxZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2dkYm1tb2R1bGUuYwpAQCAtNjE0LDcgKzYxNCw3IEBACiAgICAgcmV0dXJuIG5ld2RibW9iamVjdChuYW1lLCBpZmxhZ3MsIG1vZGUpOwogfQogCi1zdGF0aWMgY2hhciBkYm1tb2R1bGVfb3Blbl9mbGFnc1tdID0gInJ3Y24iCitzdGF0aWMgY29uc3QgY2hhciBkYm1tb2R1bGVfb3Blbl9mbGFnc1tdID0gInJ3Y24iCiAjaWZkZWYgR0RCTV9GQVNUCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCmluZGV4IGZmNTc2MTQuLmRhYTRmM2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKKysrIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwpAQCAtMjUsNiArMjUsMTIgQEAKICNpbmNsdWRlIDxvcGVuc3NsL29iamVjdHMuaD4KICNpbmNsdWRlICJvcGVuc3NsL2Vyci5oIgogCisjaW5jbHVkZSAiY2xpbmljL19oYXNob3BlbnNzbC5jLmgiCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2hhc2hsaWIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWMyYjRmZjA4MWJhYzRiZTFdKi8KKwogI2RlZmluZSBNVU5DSF9TSVpFIElOVF9NQVgKIAogI2lmbmRlZiBIQVNIX09CSl9DT05TVFJVQ1RPUgpAQCAtNzEzLDYgKzcxOSwxMjggQEAKIAogI2VuZGlmCiAKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID4gMHgxMDEwMDAwMEwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TQ1JZUFQpICYmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQorI2RlZmluZSBQWV9TQ1JZUFQgMQorCisvKltjbGluaWMgaW5wdXRdCitfaGFzaGxpYi5zY3J5cHQKKworICAgIHBhc3N3b3JkOiBQeV9idWZmZXIKKyAgICAqCisgICAgc2FsdDogUHlfYnVmZmVyID0gTm9uZQorICAgIG4gYXMgbl9vYmo6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TG9uZ19UeXBlJykgPSBOb25lCisgICAgciBhcyByX29iajogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMb25nX1R5cGUnKSA9IE5vbmUKKyAgICBwIGFzIHBfb2JqOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxvbmdfVHlwZScpID0gTm9uZQorICAgIG1heG1lbTogbG9uZyA9IDAKKyAgICBka2xlbjogbG9uZyA9IDY0CisKKworc2NyeXB0IHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2hhc2hsaWJfc2NyeXB0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpwYXNzd29yZCwgUHlfYnVmZmVyICpzYWx0LAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5fb2JqLCBQeU9iamVjdCAqcl9vYmosIFB5T2JqZWN0ICpwX29iaiwKKyAgICAgICAgICAgICAgICAgICAgIGxvbmcgbWF4bWVtLCBsb25nIGRrbGVuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0ODQ5ZTJhYTJiN2I0NmMgaW5wdXQ9NDhhN2Q2M2JmM2Y3NWM0Ml0qLworeworICAgIFB5T2JqZWN0ICprZXlfb2JqID0gTlVMTDsKKyAgICBjaGFyICprZXk7CisgICAgaW50IHJldHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIG4sIHIsIHA7CisKKyAgICBpZiAocGFzc3dvcmQtPmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicGFzc3dvcmQgaXMgdG9vIGxvbmcuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzYWx0LT5idWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNhbHQgaXMgcmVxdWlyZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzYWx0LT5sZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNhbHQgaXMgdG9vIGxvbmcuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG4gPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcobl9vYmopOworICAgIGlmIChuID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiB1bnNpZ25lZCBpbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChuIDwgMiB8fCBuICYgKG4gLSAxKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJuIG11c3QgYmUgYSBwb3dlciBvZiAyLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByID0gUHlMb25nX0FzVW5zaWduZWRMb25nKHJfb2JqKTsKKyAgICBpZiAociA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJyIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFuIHVuc2lnbmVkIGludCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBwID0gUHlMb25nX0FzVW5zaWduZWRMb25nKHBfb2JqKTsKKyAgICBpZiAocCA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFuIHVuc2lnbmVkIGludCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobWF4bWVtIDwgMCB8fCBtYXhtZW0gPiBJTlRfTUFYKSB7CisgICAgICAgIC8qIE9wZW5TU0wgMS4xLjAgcmVzdHJpY3RzIG1heG1lbSB0byAzMk1CLiBJdCBtYXkgY2hhbmdlIGluIHRoZQorICAgICAgICAgICBmdXR1cmUuIFRoZSBtYXhtZW0gY29uc3RhbnQgaXMgcHJpdmF0ZSB0byBPcGVuU1NMLiAqLworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJtYXhtZW0gbXVzdCBiZSBwb3NpdGl2ZSBhbmQgc21hbGxlciB0aGFuICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICBJTlRfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGRrbGVuIDwgMSB8fCBka2xlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJka2xlbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIGFuZCBzbWFsbGVyIHRoYW4gJWQiLAorICAgICAgICAgICAgICAgICAgICBJTlRfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogbGV0IE9wZW5TU0wgdmFsaWRhdGUgdGhlIHJlc3QgKi8KKyAgICByZXR2YWwgPSBFVlBfUEJFX3NjcnlwdChOVUxMLCAwLCBOVUxMLCAwLCBuLCByLCBwLCBtYXhtZW0sIE5VTEwsIDApOworICAgIGlmICghcmV0dmFsKSB7CisgICAgICAgIC8qIHNvcnJ5LCBjYW4ndCBkbyBtdWNoIGJldHRlciAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHBhcmFtZW10ZXIgY29tYmluYXRpb24gZm9yIG4sIHIsIHAsIG1heG1lbS4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICB9CisKKyAgICBrZXlfb2JqID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBka2xlbik7CisgICAgaWYgKGtleV9vYmogPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAga2V5ID0gUHlCeXRlc19BU19TVFJJTkcoa2V5X29iaik7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0dmFsID0gRVZQX1BCRV9zY3J5cHQoCisgICAgICAgIChjb25zdCBjaGFyKilwYXNzd29yZC0+YnVmLCAoc2l6ZV90KXBhc3N3b3JkLT5sZW4sCisgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyICopc2FsdC0+YnVmLCAoc2l6ZV90KXNhbHQtPmxlbiwKKyAgICAgICAgbiwgciwgcCwgbWF4bWVtLAorICAgICAgICAodW5zaWduZWQgY2hhciAqKWtleSwgKHNpemVfdClka2xlbgorICAgICk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmV0dmFsKSB7CisgICAgICAgIFB5X0NMRUFSKGtleV9vYmopOworICAgICAgICBfc2V0RXhjZXB0aW9uKFB5RXhjX1ZhbHVlRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGtleV9vYmo7Cit9CisjZW5kaWYKKwogLyogU3RhdGUgZm9yIG91ciBjYWxsYmFjayBmdW5jdGlvbiBzbyB0aGF0IGl0IGNhbiBhY2N1bXVsYXRlIGEgcmVzdWx0LiAqLwogdHlwZWRlZiBzdHJ1Y3QgX2ludGVybmFsX25hbWVfbWFwcGVyX3N0YXRlIHsKICAgICBQeU9iamVjdCAqc2V0OwpAQCAtODM2LDYgKzk2NCw3IEBACiAgICAgeyJwYmtkZjJfaG1hYyIsIChQeUNGdW5jdGlvbilwYmtkZjJfaG1hYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgIHBia2RmMl9obWFjX19kb2NfX30sCiAjZW5kaWYKKyAgICBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYobWQ1KSwKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihzaGExKSwKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihzaGEyMjQpLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGVhcHFtb2R1bGUuYyBiL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKaW5kZXggMTM2YWJmNS4uYjQ5OWUxZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGVhcHFtb2R1bGUuYworKysgYi9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCkBAIC02Niw3ICs2Niw3IEBACiAKICAgICAvKiBCdWJibGUgdXAgdGhlIHNtYWxsZXIgY2hpbGQgdW50aWwgaGl0dGluZyBhIGxlYWYuICovCiAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKLSAgICBsaW1pdCA9IGVuZHBvcyAvIDI7ICAgICAgICAgIC8qIHNtYWxsZXN0IHBvcyB0aGF0IGhhcyBubyBjaGlsZCAqLworICAgIGxpbWl0ID0gZW5kcG9zID4+IDE7ICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCiAgICAgd2hpbGUgKHBvcyA8IGxpbWl0KSB7CiAgICAgICAgIC8qIFNldCBjaGlsZHBvcyB0byBpbmRleCBvZiBzbWFsbGVyIGNoaWxkLiAgICovCiAgICAgICAgIGNoaWxkcG9zID0gMipwb3MgKyAxOyAgICAvKiBsZWZ0bW9zdCBjaGlsZCBwb3NpdGlvbiAgKi8KQEAgLTc4LDYgKzc4LDcgQEAKICAgICAgICAgICAgIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGNoaWxkcG9zICs9ICgodW5zaWduZWQpY21wIF4gMSk7ICAgLyogaW5jcmVtZW50IHdoZW4gY21wPT0wICovCisgICAgICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOyAgICAgICAgIC8qIGFyciBtYXkgaGF2ZSBjaGFuZ2VkICovCiAgICAgICAgICAgICBpZiAoZW5kcG9zICE9IFB5TGlzdF9HRVRfU0laRShoZWFwKSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CkBAIC04NSw3ICs4Niw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogTW92ZSB0aGUgc21hbGxlciBjaGlsZCB1cC4gKi8KLSAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKICAgICAgICAgdG1wMSA9IGFycltjaGlsZHBvc107CiAgICAgICAgIHRtcDIgPSBhcnJbcG9zXTsKICAgICAgICAgYXJyW2NoaWxkcG9zXSA9IHRtcDI7CkBAIC0zNDcsNyArMzQ3LDcgQEAKICAgICAgICBuIGlzIG9kZCA9IDIqaisxLCB0aGlzIGlzICgyKmorMS0xKS8yID0gaiBzbyBqLTEgaXMgdGhlIGxhcmdlc3QsCiAgICAgICAgYW5kIHRoYXQncyBhZ2FpbiBuLy8yLTEuCiAgICAgKi8KLSAgICBmb3IgKGkgPSBuLzIgLSAxIDsgaSA+PSAwIDsgaS0tKQorICAgIGZvciAoaSA9IChuID4+IDEpIC0gMSA7IGkgPj0gMCA7IGktLSkKICAgICAgICAgaWYgKHNpZnR1cF9mdW5jKChQeUxpc3RPYmplY3QgKiloZWFwLCBpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtNDIwLDcgKzQyMCw3IEBACiAKICAgICAvKiBCdWJibGUgdXAgdGhlIHNtYWxsZXIgY2hpbGQgdW50aWwgaGl0dGluZyBhIGxlYWYuICovCiAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKLSAgICBsaW1pdCA9IGVuZHBvcyAvIDI7ICAgICAgICAgIC8qIHNtYWxsZXN0IHBvcyB0aGF0IGhhcyBubyBjaGlsZCAqLworICAgIGxpbWl0ID0gZW5kcG9zID4+IDE7ICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCiAgICAgd2hpbGUgKHBvcyA8IGxpbWl0KSB7CiAgICAgICAgIC8qIFNldCBjaGlsZHBvcyB0byBpbmRleCBvZiBzbWFsbGVyIGNoaWxkLiAgICovCiAgICAgICAgIGNoaWxkcG9zID0gMipwb3MgKyAxOyAgICAvKiBsZWZ0bW9zdCBjaGlsZCBwb3NpdGlvbiAgKi8KQEAgLTQzMiw2ICs0MzIsNyBAQAogICAgICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgY2hpbGRwb3MgKz0gKCh1bnNpZ25lZCljbXAgXiAxKTsgICAvKiBpbmNyZW1lbnQgd2hlbiBjbXA9PTAgKi8KKyAgICAgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7ICAgICAgICAgLyogYXJyIG1heSBoYXZlIGNoYW5nZWQgKi8KICAgICAgICAgICAgIGlmIChlbmRwb3MgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKQEAgLTQzOSw3ICs0NDAsNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8qIE1vdmUgdGhlIHNtYWxsZXIgY2hpbGQgdXAuICovCi0gICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CiAgICAgICAgIHRtcDEgPSBhcnJbY2hpbGRwb3NdOwogICAgICAgICB0bXAyID0gYXJyW3Bvc107CiAgICAgICAgIGFycltjaGlsZHBvc10gPSB0bXAyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuYwppbmRleCA2NWM5NTVhLi42MGY4YjU0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYworKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuYwpAQCAtMjAsNiArMjAsOSBAQAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjZW5kaWYgLyogSEFWRV9TWVNfU1RBVF9IICovCiAKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSA8Y29uc29sZWFwaS5oPgorI2VuZGlmCiAKIC8qIFZhcmlvdXMgaW50ZXJuZWQgc3RyaW5ncyAqLwogCkBAIC01Miw3ICs1NSw2IEBACiBQeU9iamVjdCAqX1B5SU9fZW1wdHlfYnl0ZXM7CiBQeU9iamVjdCAqX1B5SU9femVybzsKIAotDAogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCiAiVGhlIGlvIG1vZHVsZSBwcm92aWRlcyB0aGUgUHl0aG9uIGludGVyZmFjZXMgdG8gc3RyZWFtIGhhbmRsaW5nLiBUaGVcbiIKICJidWlsdGluIG9wZW4gZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZS5cbiIKQEAgLTIzOCwyMCArMjQwLDMzIEBACiAgICAgaW50IHRleHQgPSAwLCBiaW5hcnkgPSAwLCB1bml2ZXJzYWwgPSAwOwogCiAgICAgY2hhciByYXdtb2RlWzZdLCAqbTsKLSAgICBpbnQgbGluZV9idWZmZXJpbmcsIGlzYXR0eTsKKyAgICBpbnQgbGluZV9idWZmZXJpbmcsIGlzX251bWJlcjsKKyAgICBsb25nIGlzYXR0eTsKIAotICAgIFB5T2JqZWN0ICpyYXcsICptb2Rlb2JqID0gTlVMTCwgKmJ1ZmZlciwgKndyYXBwZXIsICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyYXcsICptb2Rlb2JqID0gTlVMTCwgKmJ1ZmZlciwgKndyYXBwZXIsICpyZXN1bHQgPSBOVUxMLCAqcGF0aF9vcl9mZCA9IE5VTEw7CiAKICAgICBfUHlfSURFTlRJRklFUihfYmxrc2l6ZSk7CiAgICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKICAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKICAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CiAKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmaWxlKSAmJgotCSFQeUJ5dGVzX0NoZWNrKGZpbGUpICYmCi0JIVB5TnVtYmVyX0NoZWNrKGZpbGUpKSB7CisgICAgaXNfbnVtYmVyID0gUHlOdW1iZXJfQ2hlY2soZmlsZSk7CisKKyAgICBpZiAoaXNfbnVtYmVyKSB7CisgICAgICAgIHBhdGhfb3JfZmQgPSBmaWxlOworICAgICAgICBQeV9JTkNSRUYocGF0aF9vcl9mZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGF0aF9vcl9mZCA9IFB5T1NfRlNQYXRoKGZpbGUpOworICAgICAgICBpZiAocGF0aF9vcl9mZCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghaXNfbnVtYmVyICYmCisgICAgICAgICFQeVVuaWNvZGVfQ2hlY2socGF0aF9vcl9mZCkgJiYKKyAgICAgICAgIVB5Qnl0ZXNfQ2hlY2socGF0aF9vcl9mZCkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgZmlsZTogJVIiLCBmaWxlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgLyogRGVjb2RlIG1vZGUgKi8KQEAgLTI5Miw3ICszMDcsNyBAQAogICAgICAgICBpZiAoc3RyY2hyKG1vZGUraSsxLCBjKSkgewogICAgICAgICAgIGludmFsaWRfbW9kZToKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBtb2RlOiAnJXMnIiwgbW9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KIAogICAgIH0KQEAgLTMwNyw1NCArMzIyLDY3IEBACiAKICAgICAvKiBQYXJhbWV0ZXJzIHZhbGlkYXRpb24gKi8KICAgICBpZiAodW5pdmVyc2FsKSB7Ci0gICAgICAgIGlmICh3cml0aW5nIHx8IGFwcGVuZGluZykgeworICAgICAgICBpZiAoY3JlYXRpbmcgfHwgd3JpdGluZyB8fCBhcHBlbmRpbmcgfHwgdXBkYXRpbmcpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgVSBhbmQgd3JpdGluZyBtb2RlIGF0IG9uY2UiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlIFUgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggeCcsICd3JywgJ2EnLCBvciAnKyciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIidVJyBtb2RlIGlzIGRlcHJlY2F0ZWQiLCAxKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIHJlYWRpbmcgPSAxOwogICAgIH0KIAogICAgIGlmICh0ZXh0ICYmIGJpbmFyeSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBoYXZlIHRleHQgYW5kIGJpbmFyeSBtb2RlIGF0IG9uY2UiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgaWYgKGNyZWF0aW5nICsgcmVhZGluZyArIHdyaXRpbmcgKyBhcHBlbmRpbmcgPiAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiBjcmVhdGUvcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBpZiAoYmluYXJ5ICYmIGVuY29kaW5nICE9IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGFuIGVuY29kaW5nIGFyZ3VtZW50Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChiaW5hcnkgJiYgZXJyb3JzICE9IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGFuIGVycm9ycyBhcmd1bWVudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBpZiAoYmluYXJ5ICYmIG5ld2xpbmUgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYSBuZXdsaW5lIGFyZ3VtZW50Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIC8qIENyZWF0ZSB0aGUgUmF3IGZpbGUgc3RyZWFtICovCi0gICAgcmF3ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZQeUZpbGVJT19UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3NpTyIsIGZpbGUsIHJhd21vZGUsIGNsb3NlZmQsIG9wZW5lcik7CisgICAgeworICAgICAgICBQeU9iamVjdCAqUmF3SU9fY2xhc3MgPSAoUHlPYmplY3QgKikmUHlGaWxlSU9fVHlwZTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmICghUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyAmJiBfUHlJT19nZXRfY29uc29sZV90eXBlKHBhdGhfb3JfZmQpICE9ICdcMCcpIHsKKyAgICAgICAgICAgIFJhd0lPX2NsYXNzID0gKFB5T2JqZWN0ICopJlB5V2luZG93c0NvbnNvbGVJT19UeXBlOworICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmF3ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFJhd0lPX2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9zaU8iLCBwYXRoX29yX2ZkLCByYXdtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOworICAgIH0KKwogICAgIGlmIChyYXcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgcmVzdWx0ID0gcmF3OwogCisgICAgUHlfREVDUkVGKHBhdGhfb3JfZmQpOworICAgIHBhdGhfb3JfZmQgPSBOVUxMOworCiAgICAgbW9kZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOwogICAgIGlmIChtb2Rlb2JqID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC00MzcsMTAgKzQ2NSwxMCBAQAogCiAgICAgLyogd3JhcHMgaW50byBhIFRleHRJT1dyYXBwZXIgKi8KICAgICB3cmFwcGVyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZQeVRleHRJT1dyYXBwZXJfVHlwZSwKLQkJCQkgICAgIk9zc3NpIiwKLQkJCQkgICAgYnVmZmVyLAotCQkJCSAgICBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLAotCQkJCSAgICBsaW5lX2J1ZmZlcmluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3Nzc2kiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nKTsKICAgICBpZiAod3JhcHBlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHJlc3VsdCA9IHdyYXBwZXI7CkBAIC00NjAsNiArNDg4LDcgQEAKICAgICAgICAgUHlfWERFQ1JFRihjbG9zZV9yZXN1bHQpOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICB9CisgICAgUHlfWERFQ1JFRihwYXRoX29yX2ZkKTsKICAgICBQeV9YREVDUkVGKG1vZGVvYmopOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNjkxLDYgKzcyMCwxMiBAQAogICAgIFB5U3RyaW5nSU9fVHlwZS50cF9iYXNlID0gJlB5VGV4dElPQmFzZV9UeXBlOwogICAgIEFERF9UWVBFKCZQeVN0cmluZ0lPX1R5cGUsICJTdHJpbmdJTyIpOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIFdpbmRvd3NDb25zb2xlSU8gKi8KKyAgICBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZS50cF9iYXNlID0gJlB5UmF3SU9CYXNlX1R5cGU7CisgICAgQUREX1RZUEUoJlB5V2luZG93c0NvbnNvbGVJT19UeXBlLCAiX1dpbmRvd3NDb25zb2xlSU8iKTsKKyNlbmRpZgorCiAgICAgLyogQnVmZmVyZWRSZWFkZXIgKi8KICAgICBQeUJ1ZmZlcmVkUmVhZGVyX1R5cGUudHBfYmFzZSA9ICZQeUJ1ZmZlcmVkSU9CYXNlX1R5cGU7CiAgICAgQUREX1RZUEUoJlB5QnVmZmVyZWRSZWFkZXJfVHlwZSwgIkJ1ZmZlcmVkUmVhZGVyIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaCBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCmluZGV4IDBjNmVhZTIuLjVkM2RhMjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCkBAIC0xOSw2ICsxOSwxMiBAQAogZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVRleHRJT1dyYXBwZXJfVHlwZTsKIGV4dGVybiBQeVR5cGVPYmplY3QgUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX1R5cGU7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyNpZmRlZiBNU19XSU5ET1dTCitleHRlcm4gUHlUeXBlT2JqZWN0IFB5V2luZG93c0NvbnNvbGVJT19UeXBlOworI2RlZmluZSBQeVdpbmRvd3NDb25zb2xlSU9fQ2hlY2sob3ApIChQeU9iamVjdF9UeXBlQ2hlY2soKG9wKSwgJlB5V2luZG93c0NvbnNvbGVJT19UeXBlKSkKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogZXh0ZXJuIGludCBfUHlJT19Db252ZXJ0U3NpemVfdChQeU9iamVjdCAqLCB2b2lkICopOwogCkBAIC02MCw3ICs2Niw3IEBACiAgICAqIE90aGVyd2lzZSwgdGhlIGxpbmUgZW5kaW5nIGlzIHNwZWNpZmllZCBieSByZWFkbmwsIGEgc3RyIG9iamVjdCAqLwogZXh0ZXJuIFB5X3NzaXplX3QgX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICBpbnQgdHJhbnNsYXRlZCwgaW50IHVuaXZlcnNhbCwgUHlPYmplY3QgKnJlYWRubCwKLSAgICBpbnQga2luZCwgY2hhciAqc3RhcnQsIGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOworICAgIGludCBraW5kLCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCk7CiAKIC8qIFJldHVybiAxIGlmIGFuIEVudmlyb25tZW50RXJyb3Igd2l0aCBlcnJubyA9PSBFSU5UUiBpcyBzZXQgKGFuZCB0aGVuCiAgICBjbGVhcnMgdGhlIGVycm9yIGluZGljYXRvciksIDAgb3RoZXJ3aXNlLgpAQCAtODUsMTIgKzkxLDEyIEBACiAjaWZkZWYgTVNfV0lORE9XUwogCiAvKiBXaW5kb3dzIHVzZXMgbG9uZyBsb25nIGZvciBvZmZzZXRzICovCi10eXBlZGVmIFBZX0xPTkdfTE9ORyBQeV9vZmZfdDsKK3R5cGVkZWYgbG9uZyBsb25nIFB5X29mZl90OwogIyBkZWZpbmUgUHlMb25nX0FzT2ZmX3QgICAgIFB5TG9uZ19Bc0xvbmdMb25nCiAjIGRlZmluZSBQeUxvbmdfRnJvbU9mZl90ICAgUHlMb25nX0Zyb21Mb25nTG9uZwotIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIFBZX0xMT05HX01BWAotIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIFBZX0xMT05HX01JTgotIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIFBZX0xPTkdfTE9ORyAvKiB0eXBlIGNvbXBhdGlibGUgd2l0aCBvZmZfdCAqLworIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIExMT05HX01BWAorIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIExMT05HX01JTgorIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIGxvbmcgbG9uZyAgICAvKiB0eXBlIGNvbXBhdGlibGUgd2l0aCBvZmZfdCAqLwogIyBkZWZpbmUgUFlfUFJJZE9GRiAgICAgICAgICJsbGQiICAgICAgICAvKiBmb3JtYXQgdG8gdXNlIGZvciB0aGF0IHR5cGUgKi8KIAogI2Vsc2UKQEAgLTEwNCwxMiArMTEwLDEyIEBACiAjIGRlZmluZSBQWV9PRkZfVF9NSU4gICAgICAgUFlfU1NJWkVfVF9NSU4KICMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBQeV9zc2l6ZV90CiAjIGRlZmluZSBQWV9QUklkT0ZGICAgICAgICAgInpkIgotI2VsaWYgKEhBVkVfTE9OR19MT05HICYmIFNJWkVPRl9PRkZfVCA9PSBTSVpFT0ZfTE9OR19MT05HKQorI2VsaWYgKFNJWkVPRl9PRkZfVCA9PSBTSVpFT0ZfTE9OR19MT05HKQogIyBkZWZpbmUgUHlMb25nX0FzT2ZmX3QgICAgIFB5TG9uZ19Bc0xvbmdMb25nCiAjIGRlZmluZSBQeUxvbmdfRnJvbU9mZl90ICAgUHlMb25nX0Zyb21Mb25nTG9uZwotIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIFBZX0xMT05HX01BWAotIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIFBZX0xMT05HX01JTgotIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIFBZX0xPTkdfTE9ORworIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIExMT05HX01BWAorIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIExMT05HX01JTgorIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIGxvbmcgbG9uZwogIyBkZWZpbmUgUFlfUFJJZE9GRiAgICAgICAgICJsbGQiCiAjZWxpZiAoU0laRU9GX09GRl9UID09IFNJWkVPRl9MT05HKQogIyBkZWZpbmUgUHlMb25nX0FzT2ZmX3QgICAgIFB5TG9uZ19Bc0xvbmcKQEAgLTE0NSw2ICsxNTEsMTAgQEAKIGV4dGVybiBfUHlJT19TdGF0ZSAqX1B5SU9fZ2V0X21vZHVsZV9zdGF0ZSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fZ2V0X2xvY2FsZV9tb2R1bGUoX1B5SU9fU3RhdGUgKik7CiAKKyNpZmRlZiBNU19XSU5ET1dTCitleHRlcm4gY2hhciBfUHlJT19nZXRfY29uc29sZV90eXBlKFB5T2JqZWN0ICopOworI2VuZGlmDAorCiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9jbG9zZTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2Nsb3NlZDsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2RlY29kZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCA2ZDY3NzUxLi5jYmU3NDI1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC02NTksNyArNjU5LDcgQEAKIAogLyogU2V0cyB0aGUgY3VycmVudCBlcnJvciB0byBCbG9ja2luZ0lPRXJyb3IgKi8KIHN0YXRpYyB2b2lkCi1fc2V0X0Jsb2NraW5nSU9FcnJvcihjaGFyICptc2csIFB5X3NzaXplX3Qgd3JpdHRlbikKK19zZXRfQmxvY2tpbmdJT0Vycm9yKGNvbnN0IGNoYXIgKm1zZywgUHlfc3NpemVfdCB3cml0dGVuKQogewogICAgIFB5T2JqZWN0ICplcnI7CiAgICAgUHlFcnJfQ2xlYXIoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwppbmRleCA5ZTVkNzhiLi5hMWJhMTIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMKKysrIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCkBAIC04Nyw3ICs4Nyw3IEBACiBzdGF0aWMgaW50CiB1bnNoYXJlX2J1ZmZlcihieXRlc2lvICpzZWxmLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqbmV3X2J1ZiwgKm9sZF9idWY7CisgICAgUHlPYmplY3QgKm5ld19idWY7CiAgICAgYXNzZXJ0KFNIQVJFRF9CVUYoc2VsZikpOwogICAgIGFzc2VydChzZWxmLT5leHBvcnRzID09IDApOwogICAgIGFzc2VydChzaXplID49IChzaXplX3Qpc2VsZi0+c3RyaW5nX3NpemUpOwpAQCAtOTYsOSArOTYsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19idWYpLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpLAogICAgICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSk7Ci0gICAgb2xkX2J1ZiA9IHNlbGYtPmJ1ZjsKLSAgICBzZWxmLT5idWYgPSBuZXdfYnVmOwotICAgIFB5X0RFQ1JFRihvbGRfYnVmKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+YnVmLCBuZXdfYnVmKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaAppbmRleCA2Yzg4ZTMyLi5mMmU5MWE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaApAQCAtMTI3LDcgKzEyNyw3IEBACiAib3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuIik7CiAKICNkZWZpbmUgX0lPX09QRU5fTUVUSE9EREVGICAgIFwKLSAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pX2lvX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfaW9fb3Blbl9fZG9jX199LAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilfaW9fb3BlbiwgTUVUSF9GQVNUQ0FMTCwgX2lvX29wZW5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9pb19vcGVuX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGNvbnN0IGNoYXIgKm1vZGUsCkBAIC0xMzUsMTAgKzEzNSwxMSBAQAogICAgICAgICAgICAgICBjb25zdCBjaGFyICpuZXdsaW5lLCBpbnQgY2xvc2VmZCwgUHlPYmplY3QgKm9wZW5lcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1faW9fb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19pb19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2l6enppTzpvcGVuIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBjb25zdCBjaGFyICptb2RlID0gInIiOwogICAgIGludCBidWZmZXJpbmcgPSAtMTsKQEAgLTE0OCwxMiArMTQ5LDEzIEBACiAgICAgaW50IGNsb3NlZmQgPSAxOwogICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzaXp6emlPOm9wZW4iLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJm1vZGUsICZidWZmZXJpbmcsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZjbG9zZWZkLCAmb3BlbmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19vcGVuX2ltcGwobW9kdWxlLCBmaWxlLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsIGNsb3NlZmQsIG9wZW5lcik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYzJjMDAzY2I3ZGFlYWZlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNWI4ZmM4YjgzMTAyYmJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaAppbmRleCA0MzdlMjc1Li41ODE0NGE0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCkBAIC0xOSwxNCArMTksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ4LDE0ICs1MCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtOTksOCArMTAzLDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwZWVrIiwKLSAgICAgICAgJnNpemUpKQorICAgICAgICAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3BlZWtfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTEyNSw4ICsxMzAsOSBAQAogICAgIFB5X3NzaXplX3QgbiA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTE1MCw4ICsxNTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjpyZWFkMSIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46cmVhZDEiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWQxX2ltcGwoc2VsZiwgbik7CiAKIGV4aXQ6CkBAIC0xNzUsMTQgKzE4MiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjA0LDE0ICsyMTMsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIzNCw4ICsyNDUsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjYxLDggKzI3Myw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJnRhcmdldG9iaiwgJndoZW5jZSkpCisgICAgICAgICZ0YXJnZXRvYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9zZWVrX2ltcGwoc2VsZiwgdGFyZ2V0b2JqLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMjg4LDggKzMwMSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwb3MpKQorICAgICAgICAmcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOwogCiBleGl0OgpAQCAtMzEwLDEzICszMjQsMTUgQEAKIF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmF3OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOwogCiBleGl0OgpAQCAtMzQxLDEzICszNTcsMTUgQEAKIF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xuOkJ1ZmZlcmVkV3JpdGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmF3OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkV3JpdGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOwogCiBleGl0OgpAQCAtMzcxLDE0ICszODksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl93cml0ZV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDEwLDExICs0MzAsMTMgQEAKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKIAogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmUHlCdWZmZXJlZFJXUGFpcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJ1ZmZlcmVkUldQYWlyIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCdWZmZXJlZFJXUGFpciIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLAotICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKQorICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUldQYWlyX19faW5pdF9fX2ltcGwoKHJ3cGFpciAqKXNlbGYsIHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CkBAIC00MzksMTYgKzQ2MSwxOCBAQAogX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG46QnVmZmVyZWRSYW5kb20iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyYXc7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRSYW5kb20iLCBfa2V5d29yZHMsCi0gICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYmJiNWUyMzliNGZmZTZmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hOTU2ZjM5NGVjZGU0Y2Y5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaAppbmRleCA1ZjJhYmIwLi5jNjRjZTVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oCkBAIC0xNzEsOCArMTcxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTIxNSw4ICsyMTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0yNDcsOCArMjQ5LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3JlYWRsaW5lc19pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0yNzYsMTQgKzI3OSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMxMSw4ICszMTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT190cnVuY2F0ZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0zNDUsOCArMzUxLDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLAotICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgJnBvcywgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtNDA4LDE1ICs0MTUsMTcgQEAKIF9pb19CeXRlc0lPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbml0aWFsX2J5dGVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF9ieXRlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOkJ5dGVzSU8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Qnl0ZXNJTyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmluaXR2YWx1ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmaW5pdHZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX19faW5pdF9fX2ltcGwoKGJ5dGVzaW8gKilzZWxmLCBpbml0dmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjBjZTJjNjI3MjcxODQzMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM4MmU4ZWI1NzhlZWE2NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCmluZGV4IDEwNDIwMDguLjkwOGZlMGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCkBAIC00OSwxNSArNDksMTcgQEAKIF9pb19GaWxlSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2lPOkZpbGVJTyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm5hbWVvYmo7CiAgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKICAgICBpbnQgY2xvc2VmZCA9IDE7CiAgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNpTzpGaWxlSU8iLCBfa2V5d29yZHMsCi0gICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwgJm9wZW5lcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX19faW5pdF9fX2ltcGwoKGZpbGVpbyAqKXNlbGYsIG5hbWVvYmosIG1vZGUsIGNsb3NlZmQsIG9wZW5lcik7CiAKIGV4aXQ6CkBAIC0xNTQsMTQgKzE1NiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjEwLDggKzIxNCw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjQwLDE0ICsyNDUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYiAqLwotICAgIGlmIChiLm9iaikKKyAgICBpZiAoYi5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjgwLDggKzI4Nyw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgICZwb3MsICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMzMzLDggKzM0MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwb3NvYmopKQorICAgICAgICAmcG9zb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3NvYmopOwogCiBleGl0OgpAQCAtMzY0LDQgKzM3Myw0IEBACiAjaWZuZGVmIF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRjYmMzOWI0NjY1OTg0OTIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxOTI0YmMwZWUxMWQ1OGUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaAppbmRleCA5NzYyZjExLi5lZGJmNzNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaApAQCAtMTg2LDggKzE4Niw5IEBACiAgICAgUHlfc3NpemVfdCBsaW1pdCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZsaW1pdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0lPQmFzZV9yZWFkbGluZV9pbXBsKHNlbGYsIGxpbWl0KTsKIAogZXhpdDoKQEAgLTIxNyw4ICsyMTgsOSBAQAogICAgIFB5X3NzaXplX3QgaGludCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmVzIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fSU9CYXNlX3JlYWRsaW5lc19pbXBsKHNlbGYsIGhpbnQpOwogCiBleGl0OgpAQCAtMjUxLDggKzI1Myw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWQiLAotICAgICAgICAmbikpCisgICAgICAgICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fUmF3SU9CYXNlX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTI3Niw0ICsyNzksNCBAQAogewogICAgIHJldHVybiBfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjg3NDk1MmY1Y2MyNDhhNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGY1M2ZlZDkyOGQ4ZTAyZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaAppbmRleCBhOGUzMmEzLi5kMmMwNWQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmgKQEAgLTYxLDggKzYxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fcmVhZF9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC05MSw4ICs5Miw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0xMjMsOCArMTI1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3RydW5jYXRlX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTE1Nyw4ICsxNjAsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsCi0gICAgICAgICZwb3MsICZ3aGVuY2UpKQorICAgICAgICAmcG9zLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMjE3LDEzICsyMjEsMTUgQEAKIF9pb19TdHJpbmdJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9POlN0cmluZ0lPIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T086U3RyaW5nSU8iLCBfa2V5d29yZHMsCi0gICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19fX2luaXRfX19pbXBsKChzdHJpbmdpbyAqKXNlbGYsIHZhbHVlLCBuZXdsaW5lX29iaik7CiAKIGV4aXQ6CkBAIC0yODMsNCArMjg5LDQgQEAKIHsKICAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjA2MWNmM2EyMGNkMTRlZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWRkNWMyYTIxM2U3NTQwNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvdGV4dGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCmluZGV4IGRjN2U4YzcuLmYzOWMzNTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCkBAIC0yNCwxNCArMjQsMTYgQEAKIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkZWNvZGVyOwogICAgIGludCB0cmFuc2xhdGU7CiAgICAgUHlPYmplY3QgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX2ltcGwoKG5sZGVjb2Rlcl9vYmplY3QgKilzZWxmLCBkZWNvZGVyLCB0cmFuc2xhdGUsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC00NCwyMyArNDYsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LCBpbnQgZmluYWwpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xpOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlucHV0OwogICAgIGludCBmaW5hbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9pbXBsKHNlbGYsIGlucHV0LCBmaW5hbCk7CiAKIGV4aXQ6CkBAIC0xNTMsNyArMTU3LDggQEAKIF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJidWZmZXIiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLCAibGluZV9idWZmZXJpbmciLCAid3JpdGVfdGhyb3VnaCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImJ1ZmZlciIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJsaW5lX2J1ZmZlcmluZyIsICJ3cml0ZV90aHJvdWdoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwpAQCAtMTYxLDkgKzE2NiwxMCBAQAogICAgIGludCBsaW5lX2J1ZmZlcmluZyA9IDA7CiAgICAgaW50IHdyaXRlX3Rocm91Z2ggPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmbGluZV9idWZmZXJpbmcsICZ3cml0ZV90aHJvdWdoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZidWZmZXIsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZsaW5lX2J1ZmZlcmluZywgJndyaXRlX3Rocm91Z2gpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19faW1wbCgodGV4dGlvICopc2VsZiwgYnVmZmVyLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZywgd3JpdGVfdGhyb3VnaCk7CiAKIGV4aXQ6CkBAIC0yMDQsOCArMjEwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGV4dDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTp3cml0ZSIsICZ0ZXh0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6d3JpdGUiLCAmdGV4dCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9pbXBsKHNlbGYsIHRleHQpOwogCiBleGl0OgpAQCAtMjMwLDggKzIzNyw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTI1Niw4ICsyNjQsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyZWFkbGluZSIsCi0gICAgICAgICZzaXplKSkKKyAgICAgICAgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTI4Myw4ICsyOTIsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsCi0gICAgICAgICZjb29raWVPYmosICZ3aGVuY2UpKQorICAgICAgICAmY29va2llT2JqLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3NlZWtfaW1wbChzZWxmLCBjb29raWVPYmosIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0zMjcsOCArMzM3LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnBvcykpCisgICAgICAgICZwb3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOwogCiBleGl0OgpAQCAtNDUzLDQgKzQ2NCw0IEBACiB7CiAgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjkwNjA4Zjg1YWFiOGJhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzhhZDE0ZWJhMTY2NzI1NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvd2luY29uc29sZWlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy93aW5jb25zb2xlaW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NGZjYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvd2luY29uc29sZWlvLmMuaApAQCAtMCwwICsxLDMzMSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgaGFuZGxlLlxuIgorIlxuIgorIkEgY2xvc2VkIGhhbmRsZSBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gIGNsb3NlKCkgbWF5IGJlXG4iCisiY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2UsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2Uod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19fZG9jX18sCisiX1dpbmRvd3NDb25zb2xlSU8oZmlsZSwgbW9kZT1cJ3JcJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBjb25zb2xlIGJ1ZmZlciBieSBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiVGhlIG1vZGUgY2FuIGJlIFwncmJcJyAoZGVmYXVsdCksIG9yIFwnd2JcJyBmb3IgcmVhZGluZyBvciB3cml0aW5nIGJ5dGVzLiBBbGxcbiIKKyJvdGhlciBtb2RlIGNoYXJhY3RlcnMgd2lsbCBiZSBpZ25vcmVkLiBNb2RlIFwnYlwnIHdpbGwgYmUgYXNzdW1lZCBpZiBpdCBpc1xuIgorIm9taXR0ZWQuIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgaXMgYWx3YXlzIGlnbm9yZWQuIik7CisKK3N0YXRpYyBpbnQKK19pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKm5hbWVvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptb2RlLCBpbnQgY2xvc2VmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvcGVuZXIpOworCitzdGF0aWMgaW50CitfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHNpTzpfV2luZG93c0NvbnNvbGVJTyIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgY2xvc2VmZCA9IDE7CisgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX2ltcGwoKHdpbmNvbnNvbGVpbyAqKXNlbGYsIG5hbWVvYmosIG1vZGUsIGNsb3NlZmQsIG9wZW5lcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9fX2RvY19fLAorImZpbGVubygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLlxuIgorIlxuIgorImZpbGVubyBpcyBvbmx5IHNldCB3aGVuIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHVzZWQgdG8gb3BlblxuIgorIm9uZSBvZiB0aGUgc3RhbmRhcmQgc3RyZWFtcy4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRiAgICBcCisgICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVubyh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9fZG9jX18sCisicmVhZGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGNvbnNvbGUgaXMgYW4gaW5wdXQgYnVmZmVyLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIG91dHB1dCBidWZmZXIuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGUod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG8sIE1FVEhfTywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50byh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfX2RvY19fLAorInJlYWRhbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGNvbnNvbGUsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsIHdoZW4gc2l6ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsXG4iCisic28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZC5cbiIKKyJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgYnVmZmVyIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBub3QgYWxsIG9mIHRoZSBkYXRhIG1heSBiZSB3cml0dGVuLlxuIgorIlRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT193cml0ZSwgTUVUSF9PLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX2ltcGwoc2VsZiwgJmIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGIgKi8KKyAgICBpZiAoYi5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWx3YXlzIFRydWUuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHksIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHkod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19DTE9TRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19GSUxFTk9fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklUQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19JU0FUVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWViYTkxNmY4NTM3ZmZmNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDkxOWNmNTAuLjU0Y2ZiN2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC05Miw4ICs5Miw3IEBACiAgICAgaWYgKHNlbGYtPmZkID49IDAgJiYgc2VsZi0+Y2xvc2VmZCkgewogICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1Jlc291cmNlV2FybmluZywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkIGZpbGUgJVIiLCBzb3VyY2UpKSB7CisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoc291cmNlLCAxLCAidW5jbG9zZWQgZmlsZSAlUiIsIHNvdXJjZSkpIHsKICAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkKICAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIHNlbGYpOwpAQCAtMTE4LDE4ICsxMTcsMTMgQEAKICAgICAgICAgaW50IGZkID0gc2VsZi0+ZmQ7CiAgICAgICAgIHNlbGYtPmZkID0gLTE7CiAgICAgICAgIC8qIGZkIGlzIGFjY2Vzc2libGUgYW5kIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBjbG9zZWQgaXQgKi8KLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgICAgIGVyciA9IGNsb3NlKGZkKTsKLSAgICAgICAgICAgIGlmIChlcnIgPCAwKQotICAgICAgICAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICi0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICB9IGVsc2UgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgZXJyID0gY2xvc2UoZmQpOworICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgICAgIGVyciA9IC0xOwotICAgICAgICB9CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQogICAgIGlmIChlcnIgPCAwKSB7CiAgICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKQEAgLTU0Niw3ICs1NDAsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZXJyX21vZGUoY2hhciAqYWN0aW9uKQorZXJyX21vZGUoY29uc3QgY2hhciAqYWN0aW9uKQogewogICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX1NUQVRFKCk7CiAgICAgaWYgKHN0YXRlICE9IE5VTEwpCkBAIC03MDEsOCArNjk1LDYgQEAKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTkxNSwxOCArOTA3LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgcmVzID0gX2xzZWVraTY0KGZkLCBwb3MsIHdoZW5jZSk7CisgICAgcmVzID0gX2xzZWVraTY0KGZkLCBwb3MsIHdoZW5jZSk7CiAjZWxzZQotICAgICAgICByZXMgPSBsc2VlayhmZCwgcG9zLCB3aGVuY2UpOworICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIHdoZW5jZSk7CiAjZW5kaWYKLSAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzID0gLTE7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCkBAIC0xMDQ5LDcgKzEwMzgsNyBAQAogfQogI2VuZGlmIC8qIEhBVkVfRlRSVU5DQVRFICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIG1vZGVfc3RyaW5nKGZpbGVpbyAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+Y3JlYXRlZCkgewpAQCAtMTExNywxMCArMTEwNiw3IEBACiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkKLSAgICAgICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IDA7CisgICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vaW9iYXNlLmMgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwppbmRleCA1NzU0MWE4Li40NzJlZjNiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9pb2Jhc2UuYworKysgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwpAQCAtODI4LDcgKzgyOCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLwotICAgIChkZXN0cnVjdG9yKWlvYmFzZV9maW5hbGl6ZSwgLyogdHBfZmluYWxpemUgKi8KKyAgICBpb2Jhc2VfZmluYWxpemUsICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KIH07CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKaW5kZXggMDZiNDE0NC4uZWNmNmRjMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYworKysgYi9Nb2R1bGVzL19pby9zdHJpbmdpby5jCkBAIC00MzgsNyArNDM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfcmVhZGxpbmUsIE5VTEwpOwogICAgICAgICBpZiAobGluZSAmJiAhUHlVbmljb2RlX0NoZWNrKGxpbmUpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhbiBzdHIgb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWRsaW5lKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBzdHIgb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJS4yMDBzJyIsIFB5X1RZUEUobGluZSktPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby90ZXh0aW8uYyBiL01vZHVsZXMvX2lvL3RleHRpby5jCmluZGV4IDA2M2NhYTYuLjUwOGU0NmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL3RleHRpby5jCisrKyBiL01vZHVsZXMvX2lvL3RleHRpby5jCkBAIC01MzEsNyArNTMxLDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMGQyYzljMTM2ZjRlMGQwIGlucHV0PWY4ZmYxMDE4MjVlMzJlN2ZdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmbGFnOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIgIT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqc3RhdGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLApAQCAtNTY3LDcgKzU2Nyw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzEwYzYyMjUwOGI1NzZjYiBpbnB1dD1jNTNmYjUwNWE3NmRiYmUyXSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgZmxhZzsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmxhZzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9LIiwgJmJ1ZmZlciwgJmZsYWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3Miw3ICs3NzIsNyBAQAogICAgIGVuY29kZWZ1bmNfdCBlbmNvZGVmdW5jOwogfSBlbmNvZGVmdW5jZW50cnk7CiAKLXN0YXRpYyBlbmNvZGVmdW5jZW50cnkgZW5jb2RlZnVuY3NbXSA9IHsKK3N0YXRpYyBjb25zdCBlbmNvZGVmdW5jZW50cnkgZW5jb2RlZnVuY3NbXSA9IHsKICAgICB7ImFzY2lpIiwgICAgICAgKGVuY29kZWZ1bmNfdCkgYXNjaWlfZW5jb2RlfSwKICAgICB7Imlzbzg4NTktMSIsICAgKGVuY29kZWZ1bmNfdCkgbGF0aW4xX2VuY29kZX0sCiAgICAgeyJ1dGYtOCIsICAgICAgIChlbmNvZGVmdW5jX3QpIHV0ZjhfZW5jb2RlfSwKQEAgLTEwMjEsNyArMTAyMSw3IEBACiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2socmVzKSkgewotICAgICAgICAgICAgZW5jb2RlZnVuY2VudHJ5ICplID0gZW5jb2RlZnVuY3M7CisgICAgICAgICAgICBjb25zdCBlbmNvZGVmdW5jZW50cnkgKmUgPSBlbmNvZGVmdW5jczsKICAgICAgICAgICAgIHdoaWxlIChlLT5uYW1lICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHJlcywgZS0+bmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZW5jb2RlZnVuYyA9IGUtPmVuY29kZWZ1bmM7CkBAIC0xNjQ0LDggKzE2NDQsOCBAQAogLyogTk9URTogYGVuZGAgbXVzdCBwb2ludCB0byB0aGUgcmVhbCBlbmQgb2YgdGhlIFB5X1VDUzQgc3RvcmFnZSwKICAgIHRoYXQgaXMgdG8gdGhlIE5VTCBjaGFyYWN0ZXIuIE90aGVyd2lzZSB0aGUgZnVuY3Rpb24gd2lsbCBwcm9kdWNlCiAgICBpbmNvcnJlY3QgcmVzdWx0cy4gKi8KLXN0YXRpYyBjaGFyICoKLWZpbmRfY29udHJvbF9jaGFyKGludCBraW5kLCBjaGFyICpzLCBjaGFyICplbmQsIFB5X1VDUzQgY2gpCitzdGF0aWMgY29uc3QgY2hhciAqCitmaW5kX2NvbnRyb2xfY2hhcihpbnQga2luZCwgY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZW5kLCBQeV9VQ1M0IGNoKQogewogICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIGFzc2VydChjaCA8IDI1Nik7CkBAIC0xNjY1LDEzICsxNjY1LDEzIEBACiBQeV9zc2l6ZV90CiBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgIGludCB0cmFuc2xhdGVkLCBpbnQgdW5pdmVyc2FsLCBQeU9iamVjdCAqcmVhZG5sLAotICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKyAgICBpbnQga2luZCwgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSAoKGNoYXIqKWVuZCAtIChjaGFyKilzdGFydCkva2luZDsKIAogICAgIGlmICh0cmFuc2xhdGVkKSB7CiAgICAgICAgIC8qIE5ld2xpbmVzIGFyZSBhbHJlYWR5IHRyYW5zbGF0ZWQsIG9ubHkgc2VhcmNoIGZvciBcbiAqLwotICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCAnXG4nKTsKKyAgICAgICAgY29uc3QgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgJ1xuJyk7CiAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAocG9zIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICBlbHNlIHsKQEAgLTE2ODMsNyArMTY4Myw3IEBACiAgICAgICAgIC8qIFVuaXZlcnNhbCBuZXdsaW5lIHNlYXJjaC4gRmluZCBhbnkgb2YgXHIsIFxyXG4sIFxuCiAgICAgICAgICAqIFRoZSBkZWNvZGVyIGVuc3VyZXMgdGhhdCBcclxuIGFyZSBub3Qgc3BsaXQgaW4gdHdvIHBpZWNlcwogICAgICAgICAgKi8KLSAgICAgICAgY2hhciAqcyA9IHN0YXJ0OworICAgICAgICBjb25zdCBjaGFyICpzID0gc3RhcnQ7CiAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIG5vbi1jb250cm9sIGNoYXJzLiBUaGUgbG9vcCBhbHdheXMgZW5kcwpAQCAtMTcxMywyMSArMTcxMywyMSBAQAogICAgICAgICAvKiBBc3N1bWUgdGhhdCByZWFkbmwgaXMgYW4gQVNDSUkgY2hhcmFjdGVyLiAqLwogICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVhZG5sKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CiAgICAgICAgIGlmIChyZWFkbmxfbGVuID09IDEpIHsKLSAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsIG5sWzBdKTsKICAgICAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyAtIHN0YXJ0KS9raW5kICsgMTsKICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIgKnMgPSBzdGFydDsKLSAgICAgICAgICAgIGNoYXIgKmUgPSBlbmQgLSAocmVhZG5sX2xlbiAtIDEpKmtpbmQ7Ci0gICAgICAgICAgICBjaGFyICpwb3M7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gc3RhcnQ7CisgICAgICAgICAgICBjb25zdCBjaGFyICplID0gZW5kIC0gKHJlYWRubF9sZW4gLSAxKSpraW5kOworICAgICAgICAgICAgY29uc3QgY2hhciAqcG9zOwogICAgICAgICAgICAgaWYgKGUgPCBzKQogICAgICAgICAgICAgICAgIGUgPSBzOwogICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHMsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHMsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gTlVMTCB8fCBwb3MgPj0gZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IHJlYWRubF9sZW47IGkrKykgewpAQCAtMjY4OSw3ICsyNjg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfcmVhZGxpbmUsIE5VTEwpOwogICAgICAgICBpZiAobGluZSAmJiAhUHlVbmljb2RlX0NoZWNrKGxpbmUpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhbiBzdHIgb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWRsaW5lKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBzdHIgb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJS4yMDBzJyIsIFB5X1RZUEUobGluZSktPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby93aW5jb25zb2xlaW8uYyBiL01vZHVsZXMvX2lvL3dpbmNvbnNvbGVpby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMTNiZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby93aW5jb25zb2xlaW8uYwpAQCAtMCwwICsxLDExMTMgQEAKKy8qCisgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgV2luZG93cyBjb25zb2xlIEkvTworCisgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IF9XaW5kb3dzQ29uc29sZUlPCisKKyAgICBXcml0dGVuIGJ5IFN0ZXZlIERvd2VyCisqLworCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKyNpbmNsdWRlICJQeXRob24uaCIKKworI2lmZGVmIE1TX1dJTkRPV1MKKworI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRkZWYuaD4gLyogRm9yIG9mZnNldG9mICovCisKKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCisKKy8qIEJVRlNJWiBkZXRlcm1pbmVzIGhvdyBtYW55IGNoYXJhY3RlcnMgY2FuIGJlIHR5cGVkIGF0IHRoZSBjb25zb2xlCisgICBiZWZvcmUgaXQgc3RhcnRzIGJsb2NraW5nLiAqLworI2lmIEJVRlNJWiA8ICgxNioxMDI0KQorI2RlZmluZSBTTUFMTENIVU5LICgyKjEwMjQpCisjZWxpZiAoQlVGU0laID49ICgyIDw8IDI1KSkKKyNlcnJvciAidW5yZWFzb25hYmxlIEJVRlNJWiA+IDY0TUIgZGVmaW5lZCIKKyNlbHNlCisjZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCisjZW5kaWYKKworLyogQlVGTUFYIGRldGVybWluZXMgaG93IG1hbnkgYnl0ZXMgY2FuIGJlIHJlYWQgaW4gb25lIGdvLiAqLworI2RlZmluZSBCVUZNQVggKDMyKjEwMjQqMTAyNCkKKworY2hhciBfZ2V0X2NvbnNvbGVfdHlwZShIQU5ETEUgaGFuZGxlKSB7CisgICAgRFdPUkQgbW9kZSwgcGVla19jb3VudDsKKworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiAnXDAnOworICAgIAorICAgIGlmICghR2V0Q29uc29sZU1vZGUoaGFuZGxlLCAmbW9kZSkpCisgICAgICAgIHJldHVybiAnXDAnOworCisgICAgLyogUGVlayBhdCB0aGUgaGFuZGxlIHRvIHNlZSB3aGV0aGVyIGl0IGlzIGFuIGlucHV0IG9yIG91dHB1dCBoYW5kbGUgKi8KKyAgICBpZiAoR2V0TnVtYmVyT2ZDb25zb2xlSW5wdXRFdmVudHMoaGFuZGxlLCAmcGVla19jb3VudCkpCisgICAgICAgIHJldHVybiAncic7CisgICAgcmV0dXJuICd3JzsKK30KKworY2hhciBfUHlJT19nZXRfY29uc29sZV90eXBlKFB5T2JqZWN0ICpwYXRoX29yX2ZkKSB7CisgICAgaW50IGZkOworCisgICAgZmQgPSBQeUxvbmdfQXNMb25nKHBhdGhfb3JfZmQpOworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgaWYgKGZkID49IDApIHsKKyAgICAgICAgSEFORExFIGhhbmRsZTsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgaWYgKCFoYW5kbGUpCisgICAgICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICAgICAgcmV0dXJuIF9nZXRfY29uc29sZV90eXBlKGhhbmRsZSk7CisgICAgfQorCisgICAgUHlPYmplY3QgKmRlY29kZWQsICpkZWNvZGVkX3VwcGVyOworCisgICAgaW50IGQgPSBQeVVuaWNvZGVfRlNEZWNvZGVyKHBhdGhfb3JfZmQsICZkZWNvZGVkKTsKKyAgICBpZiAoIWQpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuICdcMCc7CisgICAgfQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGRlY29kZWQpKSB7CisgICAgICAgIFB5X0NMRUFSKGRlY29kZWQpOworICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICB9CisgICAgZGVjb2RlZF91cHBlciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZGVjb2RlZCwgInVwcGVyIiwgIiIpOworICAgIFB5X0NMRUFSKGRlY29kZWQpOworICAgIGlmICghZGVjb2RlZF91cHBlcikgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICB9CisKKyAgICBjaGFyIG0gPSAnXDAnOworICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OSU4kIikgPT0gMCkgeworICAgICAgICBtID0gJ3InOworICAgIH0gZWxzZSBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoZGVjb2RlZF91cHBlciwgIkNPTk9VVCQiKSA9PSAwKSB7CisgICAgICAgIG0gPSAndyc7CisgICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OIikgPT0gMCkgeworICAgICAgICBtID0gJ3gnOworICAgIH0KKworICAgIFB5X0NMRUFSKGRlY29kZWRfdXBwZXIpOworICAgIHJldHVybiBtOworfQorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uX1dpbmRvd3NDb25zb2xlSU8gIndpbmNvbnNvbGVpbyAqIiAiJlB5V2luZG93c0NvbnNvbGVJT19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZTg5N2ZkYzFmYmE0ZTEzMV0qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBpb19zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X3NzaXplX3QnCisgICAgY29udmVydGVyID0gJ19QeUlPX0NvbnZlcnRTc2l6ZV90JworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDBhODExZDNjYmZkMWIzM10qLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IGZkOworICAgIHVuc2lnbmVkIGludCBjcmVhdGVkIDogMTsKKyAgICB1bnNpZ25lZCBpbnQgcmVhZGFibGUgOiAxOworICAgIHVuc2lnbmVkIGludCB3cml0YWJsZSA6IDE7CisgICAgdW5zaWduZWQgaW50IGNsb3NlaGFuZGxlIDogMTsKKyAgICBjaGFyIGZpbmFsaXppbmc7CisgICAgdW5zaWduZWQgaW50IGJsa3NpemU7CisgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIGNoYXIgYnVmWzRdOworfSB3aW5jb25zb2xlaW87CisKK1B5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKworX1B5X0lERU5USUZJRVIobmFtZSk7CisKK2ludAorX1B5V2luZG93c0NvbnNvbGVJT19jbG9zZWQoUHlPYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuICgod2luY29uc29sZWlvICopc2VsZiktPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKK30KKworCisvKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgd2l0aCBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUuICovCitzdGF0aWMgaW50CitpbnRlcm5hbF9jbG9zZSh3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBpZiAoc2VsZi0+Y2xvc2VoYW5kbGUpIHsKKyAgICAgICAgICAgIGlmIChzZWxmLT5mZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICAgICAgICAgIGNsb3NlKHNlbGYtPmZkKTsKKyAgICAgICAgICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICAgICAgfQorICAgICAgICAgICAgQ2xvc2VIYW5kbGUoc2VsZi0+aGFuZGxlKTsKKyAgICAgICAgfQorICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICAgICAgc2VsZi0+ZmQgPSAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5jbG9zZQorCitDbG9zZSB0aGUgaGFuZGxlLgorCitBIGNsb3NlZCBoYW5kbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQorY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjdlZjk1YjY2YzI5MDU3YiBpbnB1dD0xODU2MTdlMzQ5YWU0YzdiXSovCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgaW50IHJjOworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopJlB5UmF3SU9CYXNlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9jbG9zZSwgIk8iLCBzZWxmKTsKKyAgICBpZiAoIXNlbGYtPmNsb3NlaGFuZGxlKSB7CisgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgcmMgPSBpbnRlcm5hbF9jbG9zZShzZWxmKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyAgICBpZiAocmMgPCAwKQorICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5jb25zb2xlaW9fbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHdpbmNvbnNvbGVpbyAqc2VsZjsKKworICAgIGFzc2VydCh0eXBlICE9IE5VTEwgJiYgdHlwZS0+dHBfYWxsb2MgIT0gTlVMTCk7CisKKyAgICBzZWxmID0gKHdpbmNvbnNvbGVpbyAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgICAgICBzZWxmLT5mZCA9IC0xOworICAgICAgICBzZWxmLT5jcmVhdGVkID0gMDsKKyAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAwOworICAgICAgICBzZWxmLT53cml0YWJsZSA9IDA7CisgICAgICAgIHNlbGYtPmNsb3NlaGFuZGxlID0gMDsKKyAgICAgICAgc2VsZi0+Ymxrc2l6ZSA9IDA7CisgICAgICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5fX2luaXRfXworICAgIGZpbGUgYXMgbmFtZW9iajogb2JqZWN0CisgICAgbW9kZTogc3RyID0gInIiCisgICAgY2xvc2VmZDogaW50KGNfZGVmYXVsdD0iMSIpID0gVHJ1ZQorICAgIG9wZW5lcjogb2JqZWN0ID0gTm9uZQorCitPcGVuIGEgY29uc29sZSBidWZmZXIgYnkgZmlsZSBkZXNjcmlwdG9yLgorCitUaGUgbW9kZSBjYW4gYmUgJ3JiJyAoZGVmYXVsdCksIG9yICd3YicgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyBieXRlcy4gQWxsCitvdGhlciBtb2RlIGNoYXJhY3RlcnMgd2lsbCBiZSBpZ25vcmVkLiBNb2RlICdiJyB3aWxsIGJlIGFzc3VtZWQgaWYgaXQgaXMKK29taXR0ZWQuIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgaXMgYWx3YXlzIGlnbm9yZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKm5hbWVvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptb2RlLCBpbnQgY2xvc2VmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvcGVuZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2ZkOWNiY2RkOGQ5NTQyOSBpbnB1dD02MWJlMzk2MzNhODZmNWQ3XSovCit7CisgICAgY29uc3QgY2hhciAqczsKKyAgICB3Y2hhcl90ICpuYW1lID0gTlVMTDsKKyAgICBjaGFyIGNvbnNvbGVfdHlwZSA9ICdcMCc7CisgICAgaW50IHJldCA9IDA7CisgICAgaW50IHJ3YSA9IDA7CisgICAgaW50IGZkID0gLTE7CisgICAgaW50IGZkX2lzX293biA9IDA7CisKKyAgICBhc3NlcnQoUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKHNlbGYpKTsKKyAgICBpZiAoc2VsZi0+aGFuZGxlID49IDApIHsKKyAgICAgICAgaWYgKHNlbGYtPmNsb3NlaGFuZGxlKSB7CisgICAgICAgICAgICAvKiBIYXZlIHRvIGNsb3NlIHRoZSBleGlzdGluZyBmaWxlIGZpcnN0LiAqLworICAgICAgICAgICAgaWYgKGludGVybmFsX2Nsb3NlKHNlbGYpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgfQorCisgICAgaWYgKFB5RmxvYXRfQ2hlY2sobmFtZW9iaikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZkID0gX1B5TG9uZ19Bc0ludChuYW1lb2JqKTsKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGZpbGUgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIHNlbGYtPmZkID0gZmQ7CisKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkbmFtZSA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihkZWNvZGVkbmFtZSk7CisKKyAgICAgICAgaW50IGQgPSBQeVVuaWNvZGVfRlNEZWNvZGVyKG5hbWVvYmosICh2b2lkKikmZGVjb2RlZG5hbWUpOworICAgICAgICBpZiAoIWQpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgICAgIG5hbWUgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhkZWNvZGVkbmFtZSwgJmxlbmd0aCk7CisgICAgICAgIGNvbnNvbGVfdHlwZSA9IF9QeUlPX2dldF9jb25zb2xlX3R5cGUoZGVjb2RlZG5hbWUpOworICAgICAgICBQeV9DTEVBUihkZWNvZGVkbmFtZSk7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgaWYgKHdjc2xlbihuYW1lKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzID0gbW9kZTsKKyAgICB3aGlsZSAoKnMpIHsKKyAgICAgICAgc3dpdGNoICgqcysrKSB7CisgICAgICAgIGNhc2UgJysnOgorICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgaWYgKHJ3YSkKKyAgICAgICAgICAgICAgICBnb3RvIGJhZF9tb2RlOworICAgICAgICAgICAgcndhID0gMTsKKyAgICAgICAgICAgIHNlbGYtPnJlYWRhYmxlID0gMTsKKyAgICAgICAgICAgIGlmIChjb25zb2xlX3R5cGUgPT0gJ3gnKQorICAgICAgICAgICAgICAgIGNvbnNvbGVfdHlwZSA9ICdyJzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd3JzoKKyAgICAgICAgICAgIGlmIChyd2EpCisgICAgICAgICAgICAgICAgZ290byBiYWRfbW9kZTsKKyAgICAgICAgICAgIHJ3YSA9IDE7CisgICAgICAgICAgICBzZWxmLT53cml0YWJsZSA9IDE7CisgICAgICAgICAgICBpZiAoY29uc29sZV90eXBlID09ICd4JykKKyAgICAgICAgICAgICAgICBjb25zb2xlX3R5cGUgPSAndyc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1vZGU6ICUuMjAwcyIsIG1vZGUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghcndhKQorICAgICAgICBnb3RvIGJhZF9tb2RlOworCisgICAgaWYgKGZkID49IDApIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBzZWxmLT5oYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIERXT1JEIGFjY2VzcyA9IEdFTkVSSUNfUkVBRDsKKworICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA9IDE7CisgICAgICAgIGlmICghY2xvc2VmZCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgY2xvc2VmZD1GYWxzZSB3aXRoIGZpbGUgbmFtZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZWxmLT53cml0YWJsZSkKKyAgICAgICAgICAgIGFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAvKiBBdHRlbXB0IHRvIG9wZW4gZm9yIHJlYWQvd3JpdGUgaW5pdGlhbGx5LCB0aGVuIGZhbGwgYmFjaworICAgICAgICAgICBvbiB0aGUgc3BlY2lmaWMgYWNjZXNzLiBUaGlzIGlzIHJlcXVpcmVkIGZvciBtb2Rlcm4gbmFtZXMKKyAgICAgICAgICAgQ09OSU4kIGFuZCBDT05PVVQkLCB3aGljaCBhbGxvdyByZWFkaW5nL3dyaXRpbmcgc3RhdGUgYXMKKyAgICAgICAgICAgd2VsbCBhcyByZWFkaW5nL3dyaXRpbmcgY29udGVudC4gKi8KKyAgICAgICAgc2VsZi0+aGFuZGxlID0gQ3JlYXRlRmlsZVcobmFtZSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwKKyAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEUsIE5VTEwsIE9QRU5fRVhJU1RJTkcsIDAsIE5VTEwpOworICAgICAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gQ3JlYXRlRmlsZVcobmFtZSwgYWNjZXNzLAorICAgICAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEUsIE5VTEwsIE9QRU5fRVhJU1RJTkcsIDAsIE5VTEwpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIEdldExhc3RFcnJvcigpLCBuYW1lb2JqKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY29uc29sZV90eXBlID09ICdcMCcpCisgICAgICAgIGNvbnNvbGVfdHlwZSA9IF9nZXRfY29uc29sZV90eXBlKHNlbGYtPmhhbmRsZSk7CisKKyAgICBpZiAoc2VsZi0+d3JpdGFibGUgJiYgY29uc29sZV90eXBlICE9ICd3JykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJDYW5ub3Qgb3BlbiBjb25zb2xlIGlucHV0IGJ1ZmZlciBmb3Igd3JpdGluZyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoc2VsZi0+cmVhZGFibGUgJiYgY29uc29sZV90eXBlICE9ICdyJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJDYW5ub3Qgb3BlbiBjb25zb2xlIG91dHB1dCBidWZmZXIgZm9yIHJlYWRpbmciKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBzZWxmLT5ibGtzaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKyAgICBtZW1zZXQoc2VsZi0+YnVmLCAwLCA0KTsKKworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX25hbWUsIG5hbWVvYmopIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGdvdG8gZG9uZTsKKworYmFkX21vZGU6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJNdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZCBvciB3cml0ZSBtb2RlIik7CitlcnJvcjoKKyAgICByZXQgPSAtMTsKKyAgICBpbnRlcm5hbF9jbG9zZShzZWxmKTsKKworZG9uZToKKyAgICBpZiAobmFtZSkKKyAgICAgICAgUHlNZW1fRnJlZShuYW1lKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50Cit3aW5jb25zb2xlaW9fdHJhdmVyc2Uod2luY29uc29sZWlvICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAord2luY29uc29sZWlvX2NsZWFyKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3dpbmNvbnNvbGVpb19kZWFsbG9jKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBzZWxmLT5maW5hbGl6aW5nID0gMTsKKyAgICBpZiAoX1B5SU9CYXNlX2ZpbmFsaXplKChQeU9iamVjdCAqKSBzZWxmKSA8IDApCisgICAgICAgIHJldHVybjsKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Vycl9jbG9zZWQodm9pZCkKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Vycl9tb2RlKGNvbnN0IGNoYXIgKmFjdGlvbikKK3sKKyAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBJT19TVEFURSgpOworICAgIGlmIChzdGF0ZSAhPSBOVUxMKQorICAgICAgICBQeUVycl9Gb3JtYXQoc3RhdGUtPnVuc3VwcG9ydGVkX29wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICJDb25zb2xlIGJ1ZmZlciBkb2VzIG5vdCBzdXBwb3J0ICVzIiwgYWN0aW9uKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLmZpbGVubworCitSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKS4KKworZmlsZW5vIGlzIG9ubHkgc2V0IHdoZW4gYSBmaWxlIGRlc2NyaXB0b3IgaXMgdXNlZCB0byBvcGVuCitvbmUgb2YgdGhlIHN0YW5kYXJkIHN0cmVhbXMuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDA2ZmE3NGNlM2I1Y2ZiZiBpbnB1dD0wNzlhZGMzMzBkZGFhYmU2XSovCit7CisgICAgaWYgKHNlbGYtPmZkIDwgMCAmJiBzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBpZiAoc2VsZi0+d3JpdGFibGUpCisgICAgICAgICAgICBzZWxmLT5mZCA9IF9vcGVuX29zZmhhbmRsZSgoaW50cHRyX3Qpc2VsZi0+aGFuZGxlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmLT5mZCA9IF9vcGVuX29zZmhhbmRsZSgoaW50cHRyX3Qpc2VsZi0+aGFuZGxlLCBfT19SRE9OTFkgfCBfT19CSU5BUlkpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIH0KKyAgICBpZiAoc2VsZi0+ZmQgPCAwKQorICAgICAgICByZXR1cm4gZXJyX21vZGUoImZpbGVubyIpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmQpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZGFibGUKKworVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIGlucHV0IGJ1ZmZlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYWY5Y2VmMjc0M2JlY2YwIGlucHV0PTZiZTlkZWZiNTMwMmRhYWVdKi8KK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPnJlYWRhYmxlKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLndyaXRhYmxlCisKK1RydWUgaWYgY29uc29sZSBpcyBhbiBvdXRwdXQgYnVmZmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwYTJhZDdlYWU1YWJmNjcgaW5wdXQ9Y2VmYmQ4YWJjMjRkZjZhMF0qLworeworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykgc2VsZi0+d3JpdGFibGUpOworfQorCitzdGF0aWMgRFdPUkQKK19idWZsZW4od2luY29uc29sZWlvICpzZWxmKQoreworICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgICAgaWYgKCFzZWxmLT5idWZbaV0pCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIDQ7Cit9CisKK3N0YXRpYyBEV09SRAorX2NvcHlmcm9tYnVmKHdpbmNvbnNvbGVpbyAqc2VsZiwgY2hhciAqYnVmLCBEV09SRCBsZW4pCit7CisgICAgRFdPUkQgbiA9IDA7CisKKyAgICB3aGlsZSAoc2VsZi0+YnVmWzBdICYmIGxlbi0tKSB7CisgICAgICAgIG4gKz0gMTsKKyAgICAgICAgYnVmWzBdID0gc2VsZi0+YnVmWzBdOworICAgICAgICBzZWxmLT5idWZbMF0gPSBzZWxmLT5idWZbMV07CisgICAgICAgIHNlbGYtPmJ1ZlsxXSA9IHNlbGYtPmJ1ZlsyXTsKKyAgICAgICAgc2VsZi0+YnVmWzJdID0gc2VsZi0+YnVmWzNdOworICAgICAgICBzZWxmLT5idWZbM10gPSAwOworICAgIH0KKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgd2NoYXJfdCAqCityZWFkX2NvbnNvbGVfdyhIQU5ETEUgaGFuZGxlLCBEV09SRCBtYXhsZW4sIERXT1JEICpyZWFkbGVuKSB7CisgICAgaW50IGVyciA9IDAsIHNpZyA9IDA7CisKKyAgICB3Y2hhcl90ICpidWYgPSAod2NoYXJfdCopUHlNZW1fTWFsbG9jKG1heGxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgaWYgKCFidWYpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgKnJlYWRsZW4gPSAwOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGZvciAoRFdPUkQgb2ZmID0gMDsgb2ZmIDwgbWF4bGVuOyBvZmYgKz0gQlVGU0laKSB7CisgICAgICAgIERXT1JEIG4sIGxlbiA9IG1pbihtYXhsZW4gLSBvZmYsIEJVRlNJWik7CisgICAgICAgIFNldExhc3RFcnJvcigwKTsKKyAgICAgICAgQk9PTCByZXMgPSBSZWFkQ29uc29sZVcoaGFuZGxlLCAmYnVmW29mZl0sIGxlbiwgJm4sIE5VTEwpOworCisgICAgICAgIGlmICghcmVzKSB7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVyciAhPSBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVyciA9IDA7CisgICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCAxMDAsIEZBTFNFKQorICAgICAgICAgICAgICAgID09IFdBSVRfT0JKRUNUXzApIHsKKyAgICAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CisgICAgICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgICAgIHNpZyA9IFB5RXJyX0NoZWNrU2lnbmFscygpOworICAgICAgICAgICAgICAgIFB5X1VOQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgICAgIGlmIChzaWcgPCAwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAqcmVhZGxlbiArPSBuOworCisgICAgICAgIC8qIElmIHdlIGRpZG4ndCByZWFkIGEgZnVsbCBidWZmZXIgdGhhdCB0aW1lLCBkb24ndCB0cnkKKyAgICAgICAgICAgYWdhaW4gb3Igd2Ugd2lsbCBibG9jayBhIHNlY29uZCB0aW1lLiAqLworICAgICAgICBpZiAobiA8IGxlbikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiBJZiB0aGUgYnVmZmVyIGVuZGVkIHdpdGggYSBuZXdsaW5lLCBicmVhayBvdXQgKi8KKyAgICAgICAgaWYgKGJ1ZlsqcmVhZGxlbiAtIDFdID09ICdcbicpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChzaWcpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKGVycikgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICgqcmVhZGxlbiA+IDAgJiYgYnVmWzBdID09IEwnXHgxYScpIHsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICBidWYgPSAod2NoYXJfdCAqKVB5TWVtX01hbGxvYyhzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBpZiAoIWJ1ZikKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGJ1ZlswXSA9IEwnXDAnOworICAgICAgICAqcmVhZGxlbiA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIGJ1ZjsKKworZXJyb3I6CisgICAgaWYgKGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBQeV9zc2l6ZV90CityZWFkaW50byh3aW5jb25zb2xlaW8gKnNlbGYsIGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBlcnJfY2xvc2VkKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFzZWxmLT5yZWFkYWJsZSkgeworICAgICAgICBlcnJfbW9kZSgicmVhZGluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGxlbiA+IEJVRk1BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImNhbm5vdCByZWFkIG1vcmUgdGhhbiAlZCBieXRlcyIsIEJVRk1BWCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBFYWNoIGNoYXJhY3RlciBtYXkgdGFrZSB1cCB0byA0IGJ5dGVzIGluIHRoZSBmaW5hbCBidWZmZXIuCisgICAgICAgVGhpcyBpcyBoaWdobHkgY29uc2VydmF0aXZlLCBidXQgbmVjZXNzYXJ5IHRvIGF2b2lkCisgICAgICAgZmFpbHVyZSBmb3IgYW55IGdpdmVuIFVuaWNvZGUgaW5wdXQgKGUuZy4gXFUwMDEwZmZmZikuCisgICAgICAgSWYgdGhlIGNhbGxlciByZXF1ZXN0cyBmZXdlciB0aGFuIDQgYnl0ZXMsIHdlIGJ1ZmZlciBvbmUKKyAgICAgICBjaGFyYWN0ZXIuCisgICAgKi8KKyAgICBEV09SRCB3bGVuID0gKERXT1JEKShsZW4gLyA0KTsKKyAgICBpZiAod2xlbiA9PSAwKSB7CisgICAgICAgIHdsZW4gPSAxOworICAgIH0KKworICAgIERXT1JEIHJlYWRfbGVuID0gX2NvcHlmcm9tYnVmKHNlbGYsIGJ1ZiwgKERXT1JEKWxlbik7CisgICAgaWYgKHJlYWRfbGVuKSB7CisgICAgICAgIGJ1ZiA9ICZidWZbcmVhZF9sZW5dOworICAgICAgICBsZW4gLT0gcmVhZF9sZW47CisgICAgICAgIHdsZW4gLT0gMTsKKyAgICB9CisgICAgaWYgKGxlbiA9PSByZWFkX2xlbiB8fCB3bGVuID09IDApCisgICAgICAgIHJldHVybiByZWFkX2xlbjsKKworICAgIERXT1JEIG47CisgICAgd2NoYXJfdCAqd2J1ZiA9IHJlYWRfY29uc29sZV93KHNlbGYtPmhhbmRsZSwgd2xlbiwgJm4pOworICAgIGlmICh3YnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobiA9PSAwKSB7CisgICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgICAgIHJldHVybiByZWFkX2xlbjsKKyAgICB9CisKKyAgICBpbnQgZXJyID0gMDsKKyAgICBEV09SRCB1OG4gPSAwOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChsZW4gPCA0KSB7CisgICAgICAgIGlmIChXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIG4sCisgICAgICAgICAgICAgICAgc2VsZi0+YnVmLCBzaXplb2Yoc2VsZi0+YnVmKSAvIHNpemVvZihzZWxmLT5idWZbMF0pLAorICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpKQorICAgICAgICAgICAgdThuID0gX2NvcHlmcm9tYnVmKHNlbGYsIGJ1ZiwgKERXT1JEKWxlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdThuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgYnVmLCAoRFdPUkQpbGVuLCBOVUxMLCBOVUxMKTsKKyAgICB9CisKKyAgICBpZiAodThuKSB7CisgICAgICAgIHJlYWRfbGVuICs9IHU4bjsKKyAgICAgICAgdThuID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKSB7CisgICAgICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIG5lZWRlZCBidWZmZXIgZm9yIGEgbW9yZSB1c2VmdWwgZXJyb3IsIGFzIHRoaXMKKyAgICAgICAgICAgICAgICBtZWFucyBvdXIgIi8gNCIgbG9naWMgYWJvdmUgaXMgaW5zdWZmaWNpZW50IGZvciBzb21lIGlucHV0LgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHU4biA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgbiwKKyAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlNZW1fRnJlZSh3YnVmKTsKKworICAgIGlmICh1OG4pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgIkJ1ZmZlciBoYWQgcm9vbSBmb3IgJWQgYnl0ZXMgYnV0ICVkIGJ5dGVzIHJlcXVpcmVkIiwKKyAgICAgICAgICAgIGxlbiwgdThuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoZXJyKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVhZF9sZW47Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KKworU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjZkMWJkZmEzZjIwYWYzOSBpbnB1dD00ZWQ2OGRhNDhhNmJhZmZlXSovCit7CisgICAgUHlfc3NpemVfdCBsZW4gPSByZWFkaW50byhzZWxmLCBidWZmZXItPmJ1ZiwgYnVmZmVyLT5sZW4pOworICAgIGlmIChsZW4gPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKK30KKworc3RhdGljIERXT1JECituZXdfYnVmZmVyc2l6ZSh3aW5jb25zb2xlaW8gKnNlbGYsIERXT1JEIGN1cnJlbnRzaXplKQoreworICAgIERXT1JEIGFkZGVuZDsKKworICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKKyAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiAgRm9yIGJpZ2dlciBzaXplcywgdXNlIGEKKyAgICAgICBsZXNzLXRoYW4tZG91YmxlIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCisgICAgaWYgKGN1cnJlbnRzaXplID4gNjU1MzYpCisgICAgICAgIGFkZGVuZCA9IGN1cnJlbnRzaXplID4+IDM7CisgICAgZWxzZQorICAgICAgICBhZGRlbmQgPSAyNTYgKyBjdXJyZW50c2l6ZTsKKyAgICBpZiAoYWRkZW5kIDwgU01BTExDSFVOSykKKyAgICAgICAgLyogQXZvaWQgdGlueSByZWFkKCkgY2FsbHMuICovCisgICAgICAgIGFkZGVuZCA9IFNNQUxMQ0hVTks7CisgICAgcmV0dXJuIGFkZGVuZCArIGN1cnJlbnRzaXplOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZGFsbAorCitSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGNvbnNvbGUsIHJldHVybmVkIGFzIGJ5dGVzLgorCitSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU2ZDMxMmM2ODRmNmUyM2IgaW5wdXQ9NDAyNGQ2NDlhMTAwNmU2OV0qLworeworICAgIHdjaGFyX3QgKmJ1ZjsKKyAgICBEV09SRCBidWZzaXplLCBuLCBsZW4gPSAwOworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBEV09SRCBieXRlc19zaXplLCBybjsKKworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisKKyAgICBidWZzaXplID0gQlVGU0laOworCisgICAgYnVmID0gKHdjaGFyX3QqKVB5TWVtX01hbGxvYygoYnVmc2l6ZSArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgd2NoYXJfdCAqc3ViYnVmOworCisgICAgICAgIGlmIChsZW4gPj0gKFB5X3NzaXplX3QpYnVmc2l6ZSkgeworICAgICAgICAgICAgRFdPUkQgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIGxlbik7CisgICAgICAgICAgICBpZiAobmV3c2l6ZSA+IEJVRk1BWCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChuZXdzaXplIDwgYnVmc2l6ZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5ib3VuZGVkIHJlYWQgcmV0dXJuZWQgbW9yZSBieXRlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGFuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdCBjYW4gaG9sZCIpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZnNpemUgPSBuZXdzaXplOworCisgICAgICAgICAgICBidWYgPSBQeU1lbV9SZWFsbG9jKGJ1ZiwgKGJ1ZnNpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBpZiAoIWJ1ZikgeworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN1YmJ1ZiA9IHJlYWRfY29uc29sZV93KHNlbGYtPmhhbmRsZSwgYnVmc2l6ZSAtIGxlbiwgJm4pOworCisgICAgICAgIGlmIChzdWJidWYgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobiA+IDApCisgICAgICAgICAgICB3Y3NuY3B5X3MoJmJ1ZltsZW5dLCBidWZzaXplIC0gbGVuICsgMSwgc3ViYnVmLCBuKTsKKworICAgICAgICBQeU1lbV9GcmVlKHN1YmJ1Zik7CisKKyAgICAgICAgLyogd2hlbiB0aGUgcmVhZCBzdGFydHMgd2l0aCBeWiBvciBpcyBlbXB0eSB3ZSBicmVhayAqLworICAgICAgICBpZiAobiA9PSAwIHx8IGJ1ZltsZW5dID09ICdceDFhJykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGxlbiArPSBuOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMCB8fCBidWZbMF0gPT0gJ1x4MWEnICYmIF9idWZsZW4oc2VsZikgPT0gMCkgeworICAgICAgICAvKiB3aGVuIHRoZSByZXN1bHQgc3RhcnRzIHdpdGggXlogd2UgcmV0dXJuIGFuIGVtcHR5IGJ1ZmZlciAqLworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBieXRlc19zaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCBidWYsIGxlbiwKKyAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAKKyAgICBpZiAoIWJ5dGVzX3NpemUpIHsKKyAgICAgICAgRFdPUkQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgfQorCisgICAgYnl0ZXNfc2l6ZSArPSBfYnVmbGVuKHNlbGYpOworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc19zaXplKTsKKyAgICBybiA9IF9jb3B5ZnJvbWJ1ZihzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIGJ5dGVzX3NpemUpOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGJ5dGVzX3NpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIGJ1ZiwgbGVuLAorICAgICAgICAmUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpW3JuXSwgYnl0ZXNfc2l6ZSAtIHJuLCBOVUxMLCBOVUxMKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFieXRlc19zaXplKSB7CisgICAgICAgIERXT1JEIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIFB5X0NMRUFSKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgfQorCisgICAgUHlNZW1fRnJlZShidWYpOworICAgIGlmIChieXRlc19zaXplIDwgKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSkgeworICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZieXRlcywgbiAqIHNpemVvZih3Y2hhcl90KSkgPCAwKSB7CisgICAgICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkCisgICAgc2l6ZTogaW9fc3NpemVfdCA9IC0xCisgICAgLworCitSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuCisKK09ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsIHdoZW4gc2l6ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsCitzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkLgorUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU3ZGY2OGFmOWY0YjIyZDAgaW5wdXQ9NmM1NmZjZWVjNDYwZjFkZF0qLworeworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBQeV9zc2l6ZV90IGJ5dGVzX3NpemU7CisgICAgCisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKyAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQorICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKKworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwoc2VsZik7CisgICAgaWYgKHNpemUgPiBCVUZNQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJjYW5ub3QgcmVhZCBtb3JlIHRoYW4gJWQgYnl0ZXMiLCBCVUZNQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYnl0ZXNfc2l6ZSA9IHJlYWRpbnRvKHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIGlmIChieXRlc19zaXplIDwgMCkgeworICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChieXRlc19zaXplIDwgUHlCeXRlc19HRVRfU0laRShieXRlcykpIHsKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnl0ZXMsIGJ5dGVzX3NpemUpIDwgMCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy53cml0ZQorICAgIGI6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGUgYnVmZmVyIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorCitPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi4KK1RoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3NWJkYjE2ZmJmOTEzN2IgaW5wdXQ9YmUzNWZiNjI0Zjk3Yzk0MV0qLworeworICAgIEJPT0wgcmVzID0gVFJVRTsKKyAgICB3Y2hhcl90ICp3YnVmOworICAgIERXT1JEIGxlbiwgd2xlbiwgbiA9IDA7CisKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIGlmICghc2VsZi0+d3JpdGFibGUpCisgICAgICAgIHJldHVybiBlcnJfbW9kZSgid3JpdGluZyIpOworCisgICAgaWYgKGItPmxlbiA+IEJVRk1BWCkKKyAgICAgICAgbGVuID0gQlVGTUFYOworICAgIGVsc2UKKyAgICAgICAgbGVuID0gKERXT1JEKWItPmxlbjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBiLT5idWYsIGxlbiwgTlVMTCwgMCk7CisKKyAgICAvKiBpc3N1ZTExMzk1IHRoZXJlIGlzIGFuIHVuc3BlY2lmaWVkIHVwcGVyIGJvdW5kIG9uIGhvdyBtYW55IGJ5dGVzCisgICAgICAgY2FuIGJlIHdyaXR0ZW4gYXQgb25jZS4gV2UgY2FwIGF0IDMyayAtIHRoZSBjYWxsZXIgd2lsbCBoYXZlIHRvCisgICAgICAgaGFuZGxlIHBhcnRpYWwgd3JpdGVzLgorICAgICAgIFNpbmNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgaW5wdXQgYnl0ZXMgYXJlIGJlaW5nIGlnbm9yZWQsIHdlCisgICAgICAgaGF2ZSB0byByZWR1Y2UgYW5kIHJlY2FsY3VsYXRlLiAqLworICAgIHdoaWxlICh3bGVuID4gMzI3NjYgLyBzaXplb2Yod2NoYXJfdCkpIHsKKyAgICAgICAgbGVuIC89IDI7CisgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLCBOVUxMLCAwKTsKKyAgICB9CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAKKyAgICBpZiAoIXdsZW4pCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHdidWYgPSAod2NoYXJfdCopUHlNZW1fTWFsbG9jKHdsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLCB3YnVmLCB3bGVuKTsKKyAgICBpZiAod2xlbikgeworICAgICAgICByZXMgPSBXcml0ZUNvbnNvbGVXKHNlbGYtPmhhbmRsZSwgd2J1Ziwgd2xlbiwgJm4sIE5VTEwpOworICAgICAgICBpZiAobiA8IHdsZW4pIHsKKyAgICAgICAgICAgIC8qIFdyb3RlIGZld2VyIGNoYXJhY3RlcnMgdGhhbiBleHBlY3RlZCwgd2hpY2ggbWVhbnMgb3VyCisgICAgICAgICAgICAgKiBsZW4gdmFsdWUgbWF5IGJlIHdyb25nLiBTbyByZWNhbGN1bGF0ZSBpdCBmcm9tIHRoZQorICAgICAgICAgICAgICogY2hhcmFjdGVycyB0aGF0IHdlcmUgd3JpdHRlbi4gQXMgdGhpcyBjb3VsZCBwb3RlbnRpYWxseQorICAgICAgICAgICAgICogcmVzdWx0IGluIGEgZGlmZmVyZW50IHZhbHVlLCB3ZSBhbHNvIHZhbGlkYXRlIHRoYXQgdmFsdWUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgbiwKKyAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgICAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBiLT5idWYsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHdsZW4gPT0gbGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICByZXMgPSAwOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgCisgICAgaWYgKCFyZXMpIHsKKyAgICAgICAgRFdPUkQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgIH0KKworICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luY29uc29sZWlvX3JlcHIod2luY29uc29sZWlvICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5fV2luZG93c0NvbnNvbGVJTyBbY2xvc2VkXT4iKTsKKworICAgIGlmIChzZWxmLT5yZWFkYWJsZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLl9XaW5kb3dzQ29uc29sZUlPIG1vZGU9J3JiJyBjbG9zZWZkPSVzPiIsCisgICAgICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA/ICJUcnVlIiA6ICJGYWxzZSIpOworICAgIGlmIChzZWxmLT53cml0YWJsZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLl9XaW5kb3dzQ29uc29sZUlPIG1vZGU9J3diJyBjbG9zZWZkPSVzPiIsCisgICAgICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA/ICJUcnVlIiA6ICJGYWxzZSIpOworCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiX1dpbmRvd3NDb25zb2xlSU8gaGFzIGludmFsaWQgbW9kZSIpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8uaXNhdHR5CisKK0Fsd2F5cyBUcnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZWFjMDlkMjg3YzExYmQ3IGlucHV0PTliOTE1OTFkYmUzNTZmODZdKi8KK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIAorICAgIFB5X1JFVFVSTl9UUlVFOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luY29uc29sZWlvX2dldHN0YXRlKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiY2Fubm90IHNlcmlhbGl6ZSAnJXMnIG9iamVjdCIsIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCisjaW5jbHVkZSAiY2xpbmljL3dpbmNvbnNvbGVpby5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiB3aW5jb25zb2xlaW9fbWV0aG9kc1tdID0geworICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRgorICAgIHsiX19nZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXdpbmNvbnNvbGVpb19nZXRzdGF0ZSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKKy8qICdjbG9zZWQnIGFuZCAnbW9kZScgYXJlIGF0dHJpYnV0ZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBGaWxlSU8uICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY2xvc2VkKHdpbmNvbnNvbGVpbyAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jbG9zZWZkKHdpbmNvbnNvbGVpbyAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5jbG9zZWhhbmRsZSkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X21vZGUod2luY29uc29sZWlvICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhzZWxmLT5yZWFkYWJsZSA/ICJyYiIgOiAid2IiKTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHdpbmNvbnNvbGVpb19nZXRzZXRsaXN0W10gPSB7CisgICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWdldF9jbG9zZWQsIE5VTEwsICJUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZCJ9LAorICAgIHsiY2xvc2VmZCIsIChnZXR0ZXIpZ2V0X2Nsb3NlZmQsIE5VTEwsCisgICAgICAgICJUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBjbG9zZWQgYnkgY2xvc2UoKS4ifSwKKyAgICB7Im1vZGUiLCAoZ2V0dGVyKWdldF9tb2RlLCBOVUxMLCAiU3RyaW5nIGdpdmluZyB0aGUgZmlsZSBtb2RlIn0sCisgICAge05VTEx9LAorfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIHdpbmNvbnNvbGVpb19tZW1iZXJzW10gPSB7CisgICAgeyJfYmxrc2l6ZSIsIFRfVUlOVCwgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBibGtzaXplKSwgMH0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBmaW5hbGl6aW5nKSwgMH0sCisgICAge05VTEx9Cit9OworCitQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9pby5fV2luZG93c0NvbnNvbGVJTyIsCisgICAgc2l6ZW9mKHdpbmNvbnNvbGVpbyksCisgICAgMCwKKyAgICAoZGVzdHJ1Y3Rvcil3aW5jb25zb2xlaW9fZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYyl3aW5jb25zb2xlaW9fcmVwciwgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX19kb2NfXywgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXdpbmNvbnNvbGVpb190cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpd2luY29uc29sZWlvX2NsZWFyLCAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZih3aW5jb25zb2xlaW8sIHdlYWtyZWZsaXN0KSwgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHdpbmNvbnNvbGVpb19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHdpbmNvbnNvbGVpb19tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIHdpbmNvbnNvbGVpb19nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKHdpbmNvbnNvbGVpbywgZGljdCksICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfXywgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICB3aW5jb25zb2xlaW9fbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19qc29uLmMgYi9Nb2R1bGVzL19qc29uLmMKaW5kZXggZjgyYWYzNC4uZDNkYmY5OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fanNvbi5jCisrKyBiL01vZHVsZXMvX2pzb24uYwpAQCAtMTEyLDcgKzExMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2VuY29kZWRfY29uc3QoUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgdm9pZAotcmFpc2VfZXJybXNnKGNoYXIgKm1zZywgUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgZW5kKTsKK3JhaXNlX2Vycm1zZyhjb25zdCBjaGFyICptc2csIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IGVuZCk7CiBzdGF0aWMgUHlPYmplY3QgKgogZW5jb2Rlcl9lbmNvZGVfc3RyaW5nKFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzIxLDcgKzMyMSw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1yYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCityYWlzZV9lcnJtc2coY29uc3QgY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgLyogVXNlIEpTT05EZWNvZGVFcnJvciBleGNlcHRpb24gdG8gcmFpc2UgYSBuaWNlIGxvb2tpbmcgVmFsdWVFcnJvciBzdWJjbGFzcyAqLwogICAgIHN0YXRpYyBQeU9iamVjdCAqSlNPTkRlY29kZUVycm9yID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKaW5kZXggYjEzMDdlZi4uZmViMzgwMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogLyogdGhlIGdyb3VwaW5nIGlzIHRlcm1pbmF0ZWQgYnkgZWl0aGVyIDAgb3IgQ0hBUl9NQVggKi8KIHN0YXRpYyBQeU9iamVjdCoKLWNvcHlfZ3JvdXBpbmcoY2hhciogcykKK2NvcHlfZ3JvdXBpbmcoY29uc3QgY2hhciogcykKIHsKICAgICBpbnQgaTsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqdmFsID0gTlVMTDsKQEAgLTYyMiw1MyArNjIyLDM0IEBACiBQeU1PRElOSVRfRlVOQwogUHlJbml0X19sb2NhbGUodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKmQsICp4OworICAgIFB5T2JqZWN0ICptOwogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAogICAgIGludCBpOwogI2VuZGlmCiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfbG9jYWxlbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQotICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19DVFlQRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX0NUWVBFIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfVElNRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX1RJTUUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19DT0xMQVRFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQ09MTEFURSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX01PTkVUQVJZKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfTU9ORVRBUlkiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX0NUWVBFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19USU1FKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19DT0xMQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19NT05FVEFSWSk7CiAKICNpZmRlZiBMQ19NRVNTQUdFUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfTUVTU0FHRVMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19NRVNTQUdFUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfTUVTU0FHRVMpOwogI2VuZGlmIC8qIExDX01FU1NBR0VTICovCiAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX05VTUVSSUMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19OVU1FUklDIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfQUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ0hBUl9NQVgpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDSEFSX01BWCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfTlVNRVJJQyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfQUxMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDSEFSX01BWCk7CiAKICAgICBFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigibG9jYWxlLkVycm9yIiwgTlVMTCwgTlVMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkVycm9yIiwgRXJyb3IpOworICAgIGlmIChFcnJvciA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRXJyb3IiLCBFcnJvcik7CiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKICAgICBmb3IgKGkgPSAwOyBsYW5naW5mb19jb25zdGFudHNbaV0ubmFtZTsgaSsrKSB7CkBAIC02NzYsNiArNjU3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdpbmZvX2NvbnN0YW50c1tpXS52YWx1ZSk7CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gbTsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHNwcm9mLmMgYi9Nb2R1bGVzL19sc3Byb2YuYwppbmRleCA2NmU1MzRmLi5kYzNmOGFiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sc3Byb2YuYworKysgYi9Nb2R1bGVzL19sc3Byb2YuYwpAQCAtMiwxNyArMiwxMyBAQAogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAicm90YXRpbmd0cmVlLmgiCiAKLSNpZiAhZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKLSNlcnJvciAiVGhpcyBtb2R1bGUgcmVxdWlyZXMgbG9uZyBsb25ncyEiCi0jZW5kaWYKLQogLyoqKiBTZWxlY3Rpb24gb2YgYSBoaWdoLXByZWNpc2lvbiB0aW1lciAqKiovCiAKICNpZmRlZiBNU19XSU5ET1dTCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIGhwVGltZXIodm9pZCkKIHsKICAgICBMQVJHRV9JTlRFR0VSIGxpOwpAQCAtMzksMTEgKzM1LDExIEBACiAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWVzLmg+CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIGhwVGltZXIodm9pZCkKIHsKICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICBQWV9MT05HX0xPTkcgcmV0OworICAgIGxvbmcgbG9uZyByZXQ7CiAjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCiAgICAgZ2V0dGltZW9mZGF5KCZ0dik7CiAjZWxzZQpAQCAtNzAsOCArNjYsOCBAQAogLyogcmVwcmVzZW50cyBhIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGFub3RoZXIgZnVuY3Rpb24gKi8KIHR5cGVkZWYgc3RydWN0IF9Qcm9maWxlclN1YkVudHJ5IHsKICAgICByb3RhdGluZ19ub2RlX3QgaGVhZGVyOwotICAgIFBZX0xPTkdfTE9ORyB0dDsKLSAgICBQWV9MT05HX0xPTkcgaXQ7CisgICAgbG9uZyBsb25nIHR0OworICAgIGxvbmcgbG9uZyBpdDsKICAgICBsb25nIGNhbGxjb3VudDsKICAgICBsb25nIHJlY3Vyc2l2ZWNhbGxjb3VudDsKICAgICBsb25nIHJlY3Vyc2lvbkxldmVsOwpAQCAtODEsOCArNzcsOCBAQAogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyRW50cnkgewogICAgIHJvdGF0aW5nX25vZGVfdCBoZWFkZXI7CiAgICAgUHlPYmplY3QgKnVzZXJPYmo7IC8qIFB5Q29kZU9iamVjdCwgb3IgYSBkZXNjcmlwdGl2ZSBzdHIgZm9yIGJ1aWx0aW5zICovCi0gICAgUFlfTE9OR19MT05HIHR0OyAvKiB0b3RhbCB0aW1lIGluIHRoaXMgZW50cnkgKi8KLSAgICBQWV9MT05HX0xPTkcgaXQ7IC8qIGlubGluZSB0aW1lIGluIHRoaXMgZW50cnkgKG5vdCBpbiBzdWJjYWxscykgKi8KKyAgICBsb25nIGxvbmcgdHQ7IC8qIHRvdGFsIHRpbWUgaW4gdGhpcyBlbnRyeSAqLworICAgIGxvbmcgbG9uZyBpdDsgLyogaW5saW5lIHRpbWUgaW4gdGhpcyBlbnRyeSAobm90IGluIHN1YmNhbGxzKSAqLwogICAgIGxvbmcgY2FsbGNvdW50OyAvKiBob3cgbWFueSB0aW1lcyB0aGlzIHdhcyBjYWxsZWQgKi8KICAgICBsb25nIHJlY3Vyc2l2ZWNhbGxjb3VudDsgLyogaG93IG1hbnkgdGltZXMgY2FsbGVkIHJlY3Vyc2l2ZWx5ICovCiAgICAgbG9uZyByZWN1cnNpb25MZXZlbDsKQEAgLTkwLDggKzg2LDggQEAKIH0gUHJvZmlsZXJFbnRyeTsKIAogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyQ29udGV4dCB7Ci0gICAgUFlfTE9OR19MT05HIHQwOwotICAgIFBZX0xPTkdfTE9ORyBzdWJ0OworICAgIGxvbmcgbG9uZyB0MDsKKyAgICBsb25nIGxvbmcgc3VidDsKICAgICBzdHJ1Y3QgX1Byb2ZpbGVyQ29udGV4dCAqcHJldmlvdXM7CiAgICAgUHJvZmlsZXJFbnRyeSAqY3R4RW50cnk7CiB9IFByb2ZpbGVyQ29udGV4dDsKQEAgLTEyMSw5ICsxMTcsOSBAQAogI2RlZmluZSBET1VCTEVfVElNRVJfUFJFQ0lTSU9OICAgNDI5NDk2NzI5Ni4wCiBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X3R1cGxlOwogCi1zdGF0aWMgUFlfTE9OR19MT05HIENhbGxFeHRlcm5hbFRpbWVyKFByb2ZpbGVyT2JqZWN0ICpwT2JqKQorc3RhdGljIGxvbmcgbG9uZyBDYWxsRXh0ZXJuYWxUaW1lcihQcm9maWxlck9iamVjdCAqcE9iaikKIHsKLSAgICBQWV9MT05HX0xPTkcgcmVzdWx0OworICAgIGxvbmcgbG9uZyByZXN1bHQ7CiAgICAgUHlPYmplY3QgKm8gPSBQeU9iamVjdF9DYWxsKHBPYmotPmV4dGVybmFsVGltZXIsIGVtcHR5X3R1cGxlLCBOVUxMKTsKICAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShwT2JqLT5leHRlcm5hbFRpbWVyKTsKQEAgLTEzNiwxMSArMTMyLDExIEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBpbnRlcnByZXQgdGhlIHJlc3VsdCBhcyBhIGRvdWJsZSBtZWFzdXJlZCBpbiBzZWNvbmRzLgotICAgICAgICAgICBBcyB0aGUgcHJvZmlsZXIgd29ya3Mgd2l0aCBQWV9MT05HX0xPTkcgaW50ZXJuYWxseQorICAgICAgICAgICBBcyB0aGUgcHJvZmlsZXIgd29ya3Mgd2l0aCBsb25nIGxvbmcgaW50ZXJuYWxseQogICAgICAgICAgICB3ZSBjb252ZXJ0IGl0IHRvIGEgbGFyZ2UgaW50ZWdlciAqLwogICAgICAgICBkb3VibGUgdmFsID0gUHlGbG9hdF9Bc0RvdWJsZShvKTsKICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgZGVsYXllZCB0byB0aGUgY29kZSBiZWxvdyAqLwotICAgICAgICByZXN1bHQgPSAoUFlfTE9OR19MT05HKSAodmFsICogRE9VQkxFX1RJTUVSX1BSRUNJU0lPTik7CisgICAgICAgIHJlc3VsdCA9IChsb25nIGxvbmcpICh2YWwgKiBET1VCTEVfVElNRVJfUFJFQ0lTSU9OKTsKICAgICB9CiAgICAgUHlfREVDUkVGKG8pOwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CkBAIC0zNDIsOCArMzM4LDggQEAKIHN0YXRpYyB2b2lkCiBTdG9wKFByb2ZpbGVyT2JqZWN0ICpwT2JqLCBQcm9maWxlckNvbnRleHQgKnNlbGYsIFByb2ZpbGVyRW50cnkgKmVudHJ5KQogewotICAgIFBZX0xPTkdfTE9ORyB0dCA9IENBTExfVElNRVIocE9iaikgLSBzZWxmLT50MDsKLSAgICBQWV9MT05HX0xPTkcgaXQgPSB0dCAtIHNlbGYtPnN1YnQ7CisgICAgbG9uZyBsb25nIHR0ID0gQ0FMTF9USU1FUihwT2JqKSAtIHNlbGYtPnQwOworICAgIGxvbmcgbG9uZyBpdCA9IHR0IC0gc2VsZi0+c3VidDsKICAgICBpZiAoc2VsZi0+cHJldmlvdXMpCiAgICAgICAgIHNlbGYtPnByZXZpb3VzLT5zdWJ0ICs9IHR0OwogICAgIHBPYmotPmN1cnJlbnRQcm9maWxlckNvbnRleHQgPSBzZWxmLT5wcmV2aW91czsKQEAgLTc2Miw3ICs3NTgsNiBAQAogc3RhdGljIGludAogcHJvZmlsZXJfaW5pdChQcm9maWxlck9iamVjdCAqcE9iaiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqbzsKICAgICBQeU9iamVjdCAqdGltZXIgPSBOVUxMOwogICAgIGRvdWJsZSB0aW1ldW5pdCA9IDAuMDsKICAgICBpbnQgc3ViY2FsbHMgPSAxOwpAQCAtNzc3LDExICs3NzIsOSBAQAogCiAgICAgaWYgKHNldFN1YmNhbGxzKHBPYmosIHN1YmNhbGxzKSA8IDAgfHwgc2V0QnVpbHRpbnMocE9iaiwgYnVpbHRpbnMpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIG8gPSBwT2JqLT5leHRlcm5hbFRpbWVyOwotICAgIHBPYmotPmV4dGVybmFsVGltZXIgPSB0aW1lcjsKLSAgICBQeV9YSU5DUkVGKHRpbWVyKTsKLSAgICBQeV9YREVDUkVGKG8pOwogICAgIHBPYmotPmV4dGVybmFsVGltZXJVbml0ID0gdGltZXVuaXQ7CisgICAgUHlfWElOQ1JFRih0aW1lcik7CisgICAgUHlfWFNFVFJFRihwT2JqLT5leHRlcm5hbFRpbWVyLCB0aW1lcik7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwppbmRleCBiYzAxZmZlLi41ZTE1OGZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC0xOCwxMiArMTgsNiBAQAogCiAjaW5jbHVkZSA8bHptYS5oPgogCi0KLSNpZm5kZWYgUFlfTE9OR19MT05HCi0jZXJyb3IgIlRoaXMgbW9kdWxlIHJlcXVpcmVzIFBZX0xPTkdfTE9ORyB0byBiZSBkZWZpbmVkIgotI2VuZGlmCi0KLQogI2lmZGVmIFdJVEhfVEhSRUFECiAjZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopIGRvIHsgXAogICAgIGlmICghUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAwKSkgeyBcCkBAIC0xNjMsNyArMTU3LDcgQEAKICAgICAgIHVpbnQzMl90IC0gdGhlICJJIiAodW5zaWduZWQgaW50KSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0IHNpemUsIGJ1dAogICAgICAgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KIAotICAgICAgbHptYV92bGkgLSB0aGUgIksiICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQKKyAgICAgIGx6bWFfdmxpIC0gdGhlICJLIiAodW5zaWduZWQgbG9uZyBsb25nKSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0CiAgICAgICBzaXplLCBidXQgbGlrZSAiSSIgaXQgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KIAogICAgICAgbHptYV9tb2RlIGFuZCBsem1hX21hdGNoX2ZpbmRlciAtIHRoZXNlIGFyZSBlbnVtZXJhdGlvbiB0eXBlcywgYW5kCkBAIC0xNzYsMTIgKzE3MCwxMiBAQAogICAgIHN0YXRpYyBpbnQgXAogICAgIEZVTkNOQU1FKFB5T2JqZWN0ICpvYmosIHZvaWQgKnB0cikgXAogICAgIHsgXAotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOyBcCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7IFwKICAgICAgICAgXAogICAgICAgICB2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG9iaik7IFwKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIFwKICAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgIGlmICgodW5zaWduZWQgUFlfTE9OR19MT05HKShUWVBFKXZhbCAhPSB2YWwpIHsgXAorICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcgbG9uZykoVFlQRSl2YWwgIT0gdmFsKSB7IFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIHRvbyBsYXJnZSBmb3IgIiAjVFlQRSAiIHR5cGUiKTsgXAogICAgICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTM5OCw3ICszOTIsNyBAQAogICAgUHl0aG9uLWxldmVsIGZpbHRlciBzcGVjaWZpZXJzIChyZXByZXNlbnRlZCBhcyBkaWN0cykuICovCiAKIHN0YXRpYyBpbnQKLXNwZWNfYWRkX2ZpZWxkKFB5T2JqZWN0ICpzcGVjLCBfUHlfSWRlbnRpZmllciAqa2V5LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWUpCitzcGVjX2FkZF9maWVsZChQeU9iamVjdCAqc3BlYywgX1B5X0lkZW50aWZpZXIgKmtleSwgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQogewogICAgIGludCBzdGF0dXM7CiAgICAgUHlPYmplY3QgKnZhbHVlX29iamVjdDsKQEAgLTU1Myw3ICs1NDcsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuY29tcHJlc3MKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAvCiAKQEAgLTU2Nyw3ICs1NjAsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChDb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmNjE1MTM2OTYzZTAwZiBpbnB1dD04YjYwY2IxM2UwY2U2NDIwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmNjE1MTM2OTYzZTAwZiBpbnB1dD02NDAxOWVhYzdmMmNjOGQwXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTU4Myw4ICs1NzYsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuZmx1c2gKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKLQogRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLgogCiBSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgbGVmdCBpbiBpbnRlcm5hbCBidWZmZXJzLgpAQCAtNTk0LDcgKzU4NSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BQ29tcHJlc3Nvcl9mbHVzaF9pbXBsKENvbXByZXNzb3IgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjMjFmM2UyMjUwNGY1MCBpbnB1dD0zMDYwZmIyNmY5YjQwNDJjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjMjFmM2UyMjUwNGY1MCBpbnB1dD02YjM2OTMwM2Y2N2FkMGE4XSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTY5OCw3ICs2ODksNiBAQAogLypbLWNsaW5pYyBpbnB1dF0KIF9sem1hLkxaTUFDb21wcmVzc29yLl9faW5pdF9fCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkNvbXByZXNzb3IgKiIpCiAgICAgZm9ybWF0OiBpbnQoY19kZWZhdWx0PSJGT1JNQVRfWFoiKSA9IEZPUk1BVF9YWgogICAgICAgICBUaGUgY29udGFpbmVyIGZvcm1hdCB0byB1c2UgZm9yIHRoZSBvdXRwdXQuICBUaGlzIGNhbgogICAgICAgICBiZSBGT1JNQVRfWFogKGRlZmF1bHQpLCBGT1JNQVRfQUxPTkUsIG9yIEZPUk1BVF9SQVcuCkBAIC0xMDYzLDcgKzEwNTMsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQURlY29tcHJlc3Nvci5kZWNvbXByZXNzCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkRlY29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICBtYXhfbGVuZ3RoOiBQeV9zc2l6ZV90PS0xCiAKQEAgLTEwODYsNyArMTA3NSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY0ZTIwZWM3MTIyMjQxZCBpbnB1dD1mMmJiOTAyY2MxY2FmMjAzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY0ZTIwZWM3MTIyMjQxZCBpbnB1dD02MGMxZjEzNTgyMGUzMDlkXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTExMjYsNyArMTExNSw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BRGVjb21wcmVzc29yLl9faW5pdF9fCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkRlY29tcHJlc3NvciAqIikKICAgICBmb3JtYXQ6IGludChjX2RlZmF1bHQ9IkZPUk1BVF9BVVRPIikgPSBGT1JNQVRfQVVUTwogICAgICAgICBTcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgb2YgdGhlIGlucHV0IHN0cmVhbS4gIElmIHRoaXMgaXMKICAgICAgICAgRk9STUFUX0FVVE8gKHRoZSBkZWZhdWx0KSwgdGhlIGRlY29tcHJlc3NvciB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0CkBAIC0xMTUyLDcgKzExNDAsNyBAQAogc3RhdGljIGludAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9ODFmZTY4NGE2YzJmOGEyN10qLwogewogICAgIGNvbnN0IHVpbnQzMl90IGRlY29kZXJfZmxhZ3MgPSBMWk1BX1RFTExfQU5ZX0NIRUNLIHwgTFpNQV9URUxMX05PX0NIRUNLOwogICAgIHVpbnQ2NF90IG1lbWxpbWl0XyA9IFVJTlQ2NF9NQVg7CkBAIC0xNDQ3LDcgKzE0MzUsNyBAQAogLyogU29tZSBvZiBvdXIgY29uc3RhbnRzIGFyZSBtb3JlIHRoYW4gMzIgYml0cyB3aWRlLCBzbyBQeU1vZHVsZV9BZGRJbnRDb25zdGFudAogICAgd291bGQgbm90IHdvcmsgY29ycmVjdGx5IG9uIHBsYXRmb3JtcyB3aXRoIDMyLWJpdCBsb25ncy4gKi8KIHN0YXRpYyBpbnQKLW1vZHVsZV9hZGRfaW50X2NvbnN0YW50KFB5T2JqZWN0ICptLCBjb25zdCBjaGFyICpuYW1lLCBQWV9MT05HX0xPTkcgdmFsdWUpCittb2R1bGVfYWRkX2ludF9jb25zdGFudChQeU9iamVjdCAqbSwgY29uc3QgY2hhciAqbmFtZSwgbG9uZyBsb25nIHZhbHVlKQogewogICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CiAgICAgaWYgKG8gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYwppbmRleCA0YWU2MzhlLi5kOTJhOGJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKKysrIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICB7InJlY3YiLCBtdWx0aXByb2Nlc3NpbmdfcmVjdiwgTUVUSF9WQVJBUkdTLCAiIn0sCiAgICAgeyJzZW5kIiwgbXVsdGlwcm9jZXNzaW5nX3NlbmQsIE1FVEhfVkFSQVJHUywgIiJ9LAogI2VuZGlmCi0jaWZuZGVmIFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQKKyNpZiAhZGVmaW5lZChQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKICAgICB7InNlbV91bmxpbmsiLCBfUHlNcF9zZW1fdW5saW5rLCBNRVRIX1ZBUkFSR1MsICIifSwKICNlbmRpZgogICAgIHtOVUxMfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCmluZGV4IDlhZWVhOGQuLjUxMmJjMTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaAorKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKQEAgLTYwLDcgKzYwLDcgQEAKICNpZiBTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HCiAjICBkZWZpbmUgRl9QT0lOVEVSICJrIgogIyAgZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HCi0jZWxpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiAoU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9OR19MT05HKQorI2VsaWYgU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9OR19MT05HCiAjICBkZWZpbmUgRl9QT0lOVEVSICJLIgogIyAgZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HTE9ORwogI2Vsc2UKZGlmZiAtLWdpdCBhL01vZHVsZXMvX29wZXJhdG9yLmMgYi9Nb2R1bGVzL19vcGVyYXRvci5jCmluZGV4IGRmZmYxZDIuLmZiOGVhZmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX29wZXJhdG9yLmMKKysrIGIvTW9kdWxlcy9fb3BlcmF0b3IuYwpAQCAtMTExMSw2ICsxMTExLDggQEAKICAgICAgICAgUHlPYmplY3QgKmZ1bmN0b29sczsKICAgICAgICAgUHlPYmplY3QgKnBhcnRpYWw7CiAgICAgICAgIFB5T2JqZWN0ICpjb25zdHJ1Y3RvcjsKKyAgICAgICAgUHlPYmplY3QgKm5ld2FyZ3NbMl07CisKICAgICAgICAgX1B5X0lERU5USUZJRVIocGFydGlhbCk7CiAgICAgICAgIGZ1bmN0b29scyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZnVuY3Rvb2xzIik7CiAgICAgICAgIGlmICghZnVuY3Rvb2xzKQpAQCAtMTExOSwxNyArMTEyMSwxMSBAQAogICAgICAgICBQeV9ERUNSRUYoZnVuY3Rvb2xzKTsKICAgICAgICAgaWYgKCFwYXJ0aWFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpYWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKFB5X1RZUEUobWMpKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAoUHlPYmplY3QgKilQeV9UWVBFKG1jKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihtYy0+bmFtZSk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMSwgbWMtPm5hbWUpOwotICAgICAgICBjb25zdHJ1Y3RvciA9IFB5T2JqZWN0X0NhbGwocGFydGlhbCwgbmV3YXJncywgbWMtPmt3ZHMpOwotICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisKKyAgICAgICAgbmV3YXJnc1swXSA9IChQeU9iamVjdCAqKVB5X1RZUEUobWMpOworICAgICAgICBuZXdhcmdzWzFdID0gbWMtPm5hbWU7CisgICAgICAgIGNvbnN0cnVjdG9yID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChwYXJ0aWFsLCBuZXdhcmdzLCAyLCBtYy0+a3dkcyk7CisKICAgICAgICAgUHlfREVDUkVGKHBhcnRpYWwpOwogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk8iLCBjb25zdHJ1Y3RvciwgbWMtPmFyZ3MpOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3BpY2tsZS5jIGIvTW9kdWxlcy9fcGlja2xlLmMKaW5kZXggM2MyMWI2YS4uZmMxNmM2MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcGlja2xlLmMKKysrIGIvTW9kdWxlcy9fcGlja2xlLmMKQEAgLTE1Myw2ICsxNTMsOSBAQAogICAgIFB5T2JqZWN0ICpjb2RlY3NfZW5jb2RlOwogICAgIC8qIGJ1aWx0aW5zLmdldGF0dHIsIHVzZWQgZm9yIHNhdmluZyBuZXN0ZWQgbmFtZXMgd2l0aCBwcm90b2NvbCA8IDQgKi8KICAgICBQeU9iamVjdCAqZ2V0YXR0cjsKKyAgICAvKiBmdW5jdG9vbHMucGFydGlhbCwgdXNlZCBmb3IgaW1wbGVtZW50aW5nIF9fbmV3b2JqX2V4X18gd2l0aCBwcm90b2NvbHMKKyAgICAgICAyIGFuZCAzICovCisgICAgUHlPYmplY3QgKnBhcnRpYWw7CiB9IFBpY2tsZVN0YXRlOwogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHRoZSBfcGlja2xlIG1vZHVsZSBkZWZpbml0aW9uLiAqLwpAQCAtMTkwLDYgKzE5Myw3IEBACiAgICAgUHlfQ0xFQVIoc3QtPmltcG9ydF9tYXBwaW5nXzN0bzIpOwogICAgIFB5X0NMRUFSKHN0LT5jb2RlY3NfZW5jb2RlKTsKICAgICBQeV9DTEVBUihzdC0+Z2V0YXR0cik7CisgICAgUHlfQ0xFQVIoc3QtPnBhcnRpYWwpOwogfQogCiAvKiBJbml0aWFsaXplIHRoZSBnaXZlbiBwaWNrbGUgbW9kdWxlIHN0YXRlLiAqLwpAQCAtMjAwLDYgKzIwNCw3IEBACiAgICAgUHlPYmplY3QgKmNvcHlyZWcgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb21wYXRfcGlja2xlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29kZWNzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuY3Rvb2xzID0gTlVMTDsKIAogICAgIGJ1aWx0aW5zID0gUHlFdmFsX0dldEJ1aWx0aW5zKCk7CiAgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCkBAIC0zMTQsMTIgKzMxOSwyMSBAQAogICAgIH0KICAgICBQeV9DTEVBUihjb2RlY3MpOwogCisgICAgZnVuY3Rvb2xzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmdW5jdG9vbHMiKTsKKyAgICBpZiAoIWZ1bmN0b29scykKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBzdC0+cGFydGlhbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZnVuY3Rvb2xzLCAicGFydGlhbCIpOworICAgIGlmICghc3QtPnBhcnRpYWwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIoZnVuY3Rvb2xzKTsKKwogICAgIHJldHVybiAwOwogCiAgIGVycm9yOgogICAgIFB5X0NMRUFSKGNvcHlyZWcpOwogICAgIFB5X0NMRUFSKGNvbXBhdF9waWNrbGUpOwogICAgIFB5X0NMRUFSKGNvZGVjcyk7CisgICAgUHlfQ0xFQVIoZnVuY3Rvb2xzKTsKICAgICBfUGlja2xlX0NsZWFyU3RhdGUoc3QpOwogICAgIHJldHVybiAtMTsKIH0KQEAgLTMzMSw0MyArMzQ1LDIwIEBACiBfUGlja2xlX0Zhc3RDYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlPYmplY3QgKmFyZ190dXBsZSA9IFB5VHVwbGVfTmV3KDEpOwogCi0gICAgLyogTm90ZTogdGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJldXNlIHRoZSBhcmd1bWVudCB0dXBsZS4gVGhpcyB1c2VkIHRvIGdpdmUKLSAgICAgICBhIHNsaWdodCBwZXJmb3JtYW5jZSBib29zdCB3aXRoIG9sZGVyIHBpY2tsZSBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbWFueQotICAgICAgIHVuYnVmZmVyZWQgcmVhZHMgb2NjdXJyZWQgKHRodXMgbmVlZGluZyBtYW55IGZ1bmN0aW9uIGNhbGxzKS4KLQotICAgICAgIEhvd2V2ZXIsIHRoaXMgb3B0aW1pemF0aW9uIHdhcyByZW1vdmVkIGJlY2F1c2UgaXQgd2FzIHRvbyBjb21wbGljYXRlZAotICAgICAgIHRvIGdldCByaWdodC4gSXQgYWJ1c2VkIHRoZSBDIEFQSSBmb3IgdHVwbGVzIHRvIG11dGF0ZSB0aGVtIHdoaWNoIGxlZAotICAgICAgIHRvIHN1YnRsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNvbmN1cnJlbmN5IGJ1Z3MuIEZ1cnRoZXJtb3JlLCB0aGUKLSAgICAgICBpbnRyb2R1Y3Rpb24gb2YgcHJvdG9jb2wgNCBhbmQgdGhlIHByZWZldGNoaW5nIG9wdGltaXphdGlvbiB2aWEgcGVlaygpCi0gICAgICAgc2lnbmlmaWNhbnRseSByZWR1Y2VkIHRoZSBudW1iZXIgb2YgZnVuY3Rpb24gY2FsbHMgd2UgZG8uIFRodXMsIHRoZQotICAgICAgIGJlbmVmaXRzIGJlY2FtZSBtYXJnaW5hbCBhdCBiZXN0LiAqLwotCi0gICAgaWYgKGFyZ190dXBsZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdfdHVwbGUsIDAsIG9iaik7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdfdHVwbGUsIE5VTEwpOwotICAgIFB5X0NMRUFSKGFyZ190dXBsZSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIG9iaik7CisgICAgUHlfREVDUkVGKG9iaik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyBpbnQKLXN0YWNrX3VuZGVyZmxvdyh2b2lkKQotewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInVucGlja2xpbmcgc3RhY2sgdW5kZXJmbG93Iik7Ci0gICAgcmV0dXJuIC0xOwotfQotCiAvKiBJbnRlcm5hbCBkYXRhIHR5cGUgdXNlZCBhcyB0aGUgdW5waWNrbGluZyBzdGFjay4gKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9WQVJfSEVBRAogICAgIFB5T2JqZWN0ICoqZGF0YTsKKyAgICBpbnQgbWFya19zZXQ7ICAgICAgICAgIC8qIGlzIE1BUksgc2V0PyAqLworICAgIFB5X3NzaXplX3QgZmVuY2U7ICAgICAgLyogcG9zaXRpb24gb2YgdG9wIE1BUksgb3IgMCAqLwogICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOyAgLyogbnVtYmVyIG9mIHNsb3RzIGluIGRhdGEgYWxsb2NhdGVkICovCiB9IFBkYXRhOwogCkBAIC0zOTgsNiArMzg5LDggQEAKICAgICBpZiAoIShzZWxmID0gUHlPYmplY3RfTmV3KFBkYXRhLCAmUGRhdGFfVHlwZSkpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9TSVpFKHNlbGYpID0gMDsKKyAgICBzZWxmLT5tYXJrX3NldCA9IDA7CisgICAgc2VsZi0+ZmVuY2UgPSAwOwogICAgIHNlbGYtPmFsbG9jYXRlZCA9IDg7CiAgICAgc2VsZi0+ZGF0YSA9IFB5TWVtX01BTExPQyhzZWxmLT5hbGxvY2F0ZWQgKiBzaXplb2YoUHlPYmplY3QgKikpOwogICAgIGlmIChzZWxmLT5kYXRhKQpAQCAtNDE1LDggKzQwOCw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBpID0gUHlfU0laRShzZWxmKTsKIAotICAgIGlmIChjbGVhcnRvIDwgMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGFzc2VydChjbGVhcnRvID49IHNlbGYtPmZlbmNlKTsKICAgICBpZiAoY2xlYXJ0byA+PSBpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNDUyLDYgKzQ0NCwxNyBAQAogICAgIHJldHVybiAtMTsKIH0KIAorc3RhdGljIGludAorUGRhdGFfc3RhY2tfdW5kZXJmbG93KFBkYXRhICpzZWxmKQoreworICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+bWFya19zZXQgPworICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBNQVJLIGZvdW5kIiA6CisgICAgICAgICAgICAgICAgICAgICJ1bnBpY2tsaW5nIHN0YWNrIHVuZGVyZmxvdyIpOworICAgIHJldHVybiAtMTsKK30KKwogLyogRCBpcyBhIFBkYXRhKi4gIFBvcCB0aGUgdG9wbW9zdCBlbGVtZW50IGFuZCBzdG9yZSBpdCBpbnRvIFYsIHdoaWNoCiAgKiBtdXN0IGJlIGFuIGx2YWx1ZSBob2xkaW5nIFB5T2JqZWN0Ki4gIE9uIHN0YWNrIHVuZGVyZmxvdywgVW5waWNrbGluZ0Vycm9yCiAgKiBpcyByYWlzZWQgYW5kIFYgaXMgc2V0IHRvIE5VTEwuCkBAIC00NTksOSArNDYyLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBQZGF0YV9wb3AoUGRhdGEgKnNlbGYpCiB7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAiYmFkIHBpY2tsZSBkYXRhIik7CisgICAgaWYgKFB5X1NJWkUoc2VsZikgPD0gc2VsZi0+ZmVuY2UpIHsKKyAgICAgICAgUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIHNlbGYtPmRhdGFbLS1QeV9TSVpFKHNlbGYpXTsKQEAgLTQ5Myw2ICs0OTUsMTAgQEAKICAgICBQeU9iamVjdCAqdHVwbGU7CiAgICAgUHlfc3NpemVfdCBsZW4sIGksIGo7CiAKKyAgICBpZiAoc3RhcnQgPCBzZWxmLT5mZW5jZSkgeworICAgICAgICBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBsZW4gPSBQeV9TSVpFKHNlbGYpIC0gc3RhcnQ7CiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQpAQCAtODYwLDcgKzg2Niw3IEBACiB7CiAgICAgc2l6ZV90IGk7CiAKLSAgICBhc3NlcnQoc2l6ZW9mKHNpemVfdCkgPD0gOCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihzaXplX3QpIDw9IDgpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZihzaXplX3QpOyBpKyspIHsKICAgICAgICAgb3V0W2ldID0gKHVuc2lnbmVkIGNoYXIpKCh2YWx1ZSA+PiAoOCAqIGkpKSAmIDB4ZmYpOwpAQCAtMTA4Niw2ICsxMDkyLDE0IEBACiB9CiAKIHN0YXRpYyBpbnQKK2JhZF9yZWFkbGluZSh2b2lkKQoreworICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInBpY2tsZSBkYXRhIHdhcyB0cnVuY2F0ZWQiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKIF9VbnBpY2tsZXJfU2tpcENvbnN1bWVkKFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwpAQCAtMTEzNCw5ICsxMTQ4LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKG4gPT0gUkVBRF9XSE9MRV9MSU5FKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplbXB0eV90dXBsZSA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBkYXRhID0gUHlPYmplY3RfQ2FsbChzZWxmLT5yZWFkbGluZSwgZW1wdHlfdHVwbGUsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoZW1wdHlfdHVwbGUpOworICAgICAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhzZWxmLT5yZWFkbGluZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqbGVuOwpAQCAtMTE3NCw2ICsxMTg2LDM2IEBACiAgICAgcmV0dXJuIHJlYWRfc2l6ZTsKIH0KIAorLyogRG9uJ3QgY2FsbCBpdCBkaXJlY3RseTogdXNlIF9VbnBpY2tsZXJfUmVhZCgpICovCitzdGF0aWMgUHlfc3NpemVfdAorX1VucGlja2xlcl9SZWFkSW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIGNoYXIgKipzLCBQeV9zc2l6ZV90IG4pCit7CisgICAgUHlfc3NpemVfdCBudW1fcmVhZDsKKworICAgICpzID0gTlVMTDsKKyAgICBpZiAoc2VsZi0+bmV4dF9yZWFkX2lkeCA+IFBZX1NTSVpFX1RfTUFYIC0gbikgeworICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQgd291bGQgb3ZlcmZsb3cgKGludmFsaWQgYnl0ZWNvZGUpIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBUaGlzIGNhc2UgaXMgaGFuZGxlZCBieSB0aGUgX1VucGlja2xlcl9SZWFkKCkgbWFjcm8gZm9yIGVmZmljaWVuY3kgKi8KKyAgICBhc3NlcnQoc2VsZi0+bmV4dF9yZWFkX2lkeCArIG4gPiBzZWxmLT5pbnB1dF9sZW4pOworCisgICAgaWYgKCFzZWxmLT5yZWFkKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisKKyAgICBudW1fcmVhZCA9IF9VbnBpY2tsZXJfUmVhZEZyb21GaWxlKHNlbGYsIG4pOworICAgIGlmIChudW1fcmVhZCA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX3JlYWQgPCBuKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisgICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXI7CisgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG47CisgICAgcmV0dXJuIG47Cit9CisKIC8qIFJlYWQgYG5gIGJ5dGVzIGZyb20gdGhlIHVucGlja2xlcidzIGRhdGEgc291cmNlLCBzdG9yaW5nIHRoZSByZXN1bHQgaW4gYCpzYC4KIAogICAgVGhpcyBzaG91bGQgYmUgdXNlZCBmb3IgYWxsIGRhdGEgcmVhZHMsIHJhdGhlciB0aGFuIGFjY2Vzc2luZyB0aGUgdW5waWNrbGVyJ3MKQEAgLTExODcsMzggKzEyMjksMTIgQEAKIAogICAgUmV0dXJucyAtMSAod2l0aCBhbiBleGNlcHRpb24gc2V0KSBvbiBmYWlsdXJlLiBPbiBzdWNjZXNzLCByZXR1cm4gdGhlCiAgICBudW1iZXIgb2YgY2hhcnMgcmVhZC4gKi8KLXN0YXRpYyBQeV9zc2l6ZV90Ci1fVW5waWNrbGVyX1JlYWQoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICoqcywgUHlfc3NpemVfdCBuKQotewotICAgIFB5X3NzaXplX3QgbnVtX3JlYWQ7Ci0KLSAgICAqcyA9IE5VTEw7Ci0gICAgaWYgKHNlbGYtPm5leHRfcmVhZF9pZHggPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKLSAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkIHdvdWxkIG92ZXJmbG93IChpbnZhbGlkIGJ5dGVjb2RlKSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChzZWxmLT5uZXh0X3JlYWRfaWR4ICsgbiA8PSBzZWxmLT5pbnB1dF9sZW4pIHsKLSAgICAgICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXIgKyBzZWxmLT5uZXh0X3JlYWRfaWR4OwotICAgICAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ICs9IG47Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLSAgICBpZiAoIXNlbGYtPnJlYWQpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0VPRkVycm9yLCAiUmFuIG91dCBvZiBpbnB1dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgbik7Ci0gICAgaWYgKG51bV9yZWFkIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChudW1fcmVhZCA8IG4pIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0VPRkVycm9yLCAiUmFuIG91dCBvZiBpbnB1dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgICpzID0gc2VsZi0+aW5wdXRfYnVmZmVyOwotICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBuOwotICAgIHJldHVybiBuOwotfQorI2RlZmluZSBfVW5waWNrbGVyX1JlYWQoc2VsZiwgcywgbikgXAorICAgICgoKG4pIDw9IChzZWxmKS0+aW5wdXRfbGVuIC0gKHNlbGYpLT5uZXh0X3JlYWRfaWR4KSAgICAgIFwKKyAgICAgPyAoKihzKSA9IChzZWxmKS0+aW5wdXRfYnVmZmVyICsgKHNlbGYpLT5uZXh0X3JlYWRfaWR4LCBcCisgICAgICAgIChzZWxmKS0+bmV4dF9yZWFkX2lkeCArPSAobiksICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAobikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgOiBfVW5waWNrbGVyX1JlYWRJbXBsKHNlbGYsIChzKSwgKG4pKSkKIAogc3RhdGljIFB5X3NzaXplX3QKIF9VbnBpY2tsZXJfQ29weUxpbmUoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICpsaW5lLCBQeV9zc2l6ZV90IGxlbiwKQEAgLTEyMzgsNyArMTI1NCw3IEBACiB9CiAKIC8qIFJlYWQgYSBsaW5lIGZyb20gdGhlIGlucHV0IHN0cmVhbS9idWZmZXIuIElmIHdlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQKLSAgIGJlZm9yZSBoaXR0aW5nIFxuLCByZXR1cm4gdGhlIGRhdGEgd2UgZm91bmQuCisgICBiZWZvcmUgaGl0dGluZyBcbiwgcmFpc2UgYW4gZXJyb3IuCiAKICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFycyByZWFkLCBvciAtMSBvbiBmYWlsdXJlLiAqLwogc3RhdGljIFB5X3NzaXplX3QKQEAgLTEyNTQsMjAgKzEyNzAsMTYgQEAKICAgICAgICAgICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIGxpbmVfc3RhcnQsIG51bV9yZWFkLCByZXN1bHQpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChzZWxmLT5yZWFkKSB7Ci0gICAgICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgUkVBRF9XSE9MRV9MSU5FKTsKLSAgICAgICAgaWYgKG51bV9yZWFkIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG51bV9yZWFkOwotICAgICAgICByZXR1cm4gX1VucGlja2xlcl9Db3B5TGluZShzZWxmLCBzZWxmLT5pbnB1dF9idWZmZXIsIG51bV9yZWFkLCByZXN1bHQpOwotICAgIH0KKyAgICBpZiAoIXNlbGYtPnJlYWQpCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKIAotICAgIC8qIElmIHdlIGdldCBoZXJlLCB3ZSd2ZSBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0IHN0cmluZy4gUmV0dXJuIHRoZQotICAgICAgIHJlbWFpbmluZyBzdHJpbmcgYW5kIGxldCB0aGUgY2FsbGVyIGZpZ3VyZSBpdCBvdXQuICovCi0gICAgKnJlc3VsdCA9IHNlbGYtPmlucHV0X2J1ZmZlciArIHNlbGYtPm5leHRfcmVhZF9pZHg7Ci0gICAgbnVtX3JlYWQgPSBpIC0gc2VsZi0+bmV4dF9yZWFkX2lkeDsKLSAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gaTsKLSAgICByZXR1cm4gbnVtX3JlYWQ7CisgICAgbnVtX3JlYWQgPSBfVW5waWNrbGVyX1JlYWRGcm9tRmlsZShzZWxmLCBSRUFEX1dIT0xFX0xJTkUpOworICAgIGlmIChudW1fcmVhZCA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX3JlYWQgPT0gMCB8fCBzZWxmLT5pbnB1dF9idWZmZXJbbnVtX3JlYWQgLSAxXSAhPSAnXG4nKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG51bV9yZWFkOworICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIHNlbGYtPmlucHV0X2J1ZmZlciwgbnVtX3JlYWQsIHJlc3VsdCk7CiB9CiAKIC8qIFJldHVybnMgLTEgKHdpdGggYW4gZXhjZXB0aW9uIHNldCkgb24gZmFpbHVyZSwgMCBvbiBzdWNjZXNzLiBUaGUgbWVtbyBhcnJheQpAQCAtMjA5NiwzOCArMjEwOCwzNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHJhd191bmljb2RlX2VzY2FwZShQeU9iamVjdCAqb2JqKQogewotICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7CiAgICAgUHlfc3NpemVfdCBpLCBzaXplOwotICAgIHNpemVfdCBleHBhbmRzaXplOwogICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisKICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEob2JqKTsKICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQob2JqKTsKLSAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkKLSAgICAgICAgZXhwYW5kc2l6ZSA9IDEwOwotICAgIGVsc2UKLSAgICAgICAgZXhwYW5kc2l6ZSA9IDY7CiAKLSAgICBpZiAoKHNpemVfdClzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBzaXplKTsKLSAgICBpZiAocmVwciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gcmVwcjsKLSAgICBhc3NlcnQoUHlfUkVGQ05UKHJlcHIpID09IDEpOworICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCi0gICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwogICAgIGZvciAoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwogICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgLyogLTE6IHN1YnRyYWN0IDEgcHJlYWxsb2NhdGVkIGJ5dGUgKi8KKyAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHAsIDEwLTEpOworICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAnVSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweGZdOwpAQCAtMjEzOSw4ICsyMTQ4LDEzIEBACiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9Ci0gICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLworICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMsICdcXCcgYW5kICdcbicgdG8gJ1x1eHh4eCcgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPj0gMjU2IHx8IGNoID09ICdcXCcgfHwgY2ggPT0gJ1xuJykgeworICAgICAgICAgICAgLyogLTE6IHN1YnRyYWN0IDEgcHJlYWxsb2NhdGVkIGJ5dGUgKi8KKyAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHAsIDYtMSk7CisgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CkBAIC0yMTUyLDE0ICsyMTY2LDE2IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQotICAgIHNpemUgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgc2l6ZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gcmVwcjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcCk7CisKK2Vycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQKLXdyaXRlX3V0ZjgoUGlja2xlck9iamVjdCAqc2VsZiwgY2hhciAqZGF0YSwgUHlfc3NpemVfdCBzaXplKQord3JpdGVfdXRmOChQaWNrbGVyT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpkYXRhLCBQeV9zc2l6ZV90IHNpemUpCiB7CiAgICAgY2hhciBoZWFkZXJbOV07CiAgICAgUHlfc3NpemVfdCBsZW47CkBAIC0yODU4LDcgKzI4NzQsNyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOwogCi0gICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgIigpIik7CisgICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgTlVMTCk7CiAgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbXMpOwpAQCAtMzUzNSwxMSArMzU1MSw5IEBACiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lKSkgewotICAgICAgICAgICAgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKLSAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9leF9fKTsKLSAgICAgICAgICAgICAgICB1c2VfbmV3b2JqX2V4ID0gUHlVbmljb2RlX0NvbXBhcmUoCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9leF9fKSkgPT0gMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOworICAgICAgICAgICAgdXNlX25ld29ial9leCA9IFB5VW5pY29kZV9Db21wYXJlKAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9leF9fKSkgPT0gMDsKICAgICAgICAgICAgIGlmICghdXNlX25ld29ial9leCkgewogICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX18pOwogICAgICAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ29tcGFyZSgKQEAgLTM1ODMsMTEgKzM1OTcsNTggQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzYXZlKHNlbGYsIGNscywgMCkgPCAwIHx8Ci0gICAgICAgICAgICBzYXZlKHNlbGYsIGFyZ3MsIDApIDwgMCB8fAotICAgICAgICAgICAgc2F2ZShzZWxmLCBrd2FyZ3MsIDApIDwgMCB8fAotICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJm5ld29ial9leF9vcCwgMSkgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChzZWxmLT5wcm90byA+PSA0KSB7CisgICAgICAgICAgICBpZiAoc2F2ZShzZWxmLCBjbHMsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIHNhdmUoc2VsZiwgYXJncywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgc2F2ZShzZWxmLCBrd2FyZ3MsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZuZXdvYmpfZXhfb3AsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdhcmdzOworICAgICAgICAgICAgUHlPYmplY3QgKmNsc19uZXc7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld19fKTsKKworICAgICAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KFB5X1NJWkUoYXJncykgKyAyKTsKKyAgICAgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgICAgICBjbHNfbmV3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fbmV3X18pOworICAgICAgICAgICAgaWYgKGNsc19uZXcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIGNsc19uZXcpOworICAgICAgICAgICAgUHlfSU5DUkVGKGNscyk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDEsIGNscyk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRShhcmdzKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIGkgKyAyLCBpdGVtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGFibGUgPSBQeU9iamVjdF9DYWxsKHN0LT5wYXJ0aWFsLCBuZXdhcmdzLCBrd2FyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzYXZlKHNlbGYsIGNhbGxhYmxlLCAwKSA8IDAgfHwKKyAgICAgICAgICAgICAgICBzYXZlKHNlbGYsIG5ld2FyZ3MsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZyZWR1Y2Vfb3AsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAodXNlX25ld29iaikgewpAQCAtMzg3NywxMCArMzkzOCw3IEBACiAgICAgICAgICAgICAvKiBDaGVjayBmb3IgYSBfX3JlZHVjZV9fIG1ldGhvZC4gKi8KICAgICAgICAgICAgIHJlZHVjZV9mdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fcmVkdWNlX18pOwogICAgICAgICAgICAgaWYgKHJlZHVjZV9mdW5jICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZW1wdHlfdHVwbGUgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgICAgICByZWR1Y2VfdmFsdWUgPSBQeU9iamVjdF9DYWxsKHJlZHVjZV9mdW5jLCBlbXB0eV90dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbXB0eV90dXBsZSk7CisgICAgICAgICAgICAgICAgcmVkdWNlX3ZhbHVlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhyZWR1Y2VfZnVuYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlBpY2tsaW5nRXJyb3IsCkBAIC00Mzk3LDcgKzQ0NTUsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInbWVtbycgYXR0cmlidXRlIG11c3QgYmUgYW4gUGlja2xlck1lbW9Qcm94eSBvYmplY3QiCisgICAgICAgICAgICAgICAgICAgICAiJ21lbW8nIGF0dHJpYnV0ZSBtdXN0IGJlIGEgUGlja2xlck1lbW9Qcm94eSBvYmplY3QiCiAgICAgICAgICAgICAgICAgICAgICAib3IgZGljdCwgbm90ICUuMjAwcyIsIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NDI2LDggKzQ0ODQsNiBAQAogc3RhdGljIGludAogUGlja2xlcl9zZXRfcGVyc2lkKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgZGVsZXRpb24gaXMgbm90IHN1cHBvcnRlZCIpOwpAQCAtNDQzOSwxMCArNDQ5NSw4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICB0bXAgPSBzZWxmLT5wZXJzX2Z1bmM7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBzZWxmLT5wZXJzX2Z1bmMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7ICAgICAgLyogc2VsZi0+cGVyc19mdW5jIGNhbiBiZSBOVUxMLCBzbyBiZSBjYXJlZnVsLiAqLworICAgIFB5X1hTRVRSRUYoc2VsZi0+cGVyc19mdW5jLCB2YWx1ZSk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ1MjQsMTMgKzQ1NzgsMTkgQEAKIHN0YXRpYyBQeV9zc2l6ZV90CiBtYXJrZXIoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeV9zc2l6ZV90IG1hcms7CisKICAgICBpZiAoc2VsZi0+bnVtX21hcmtzIDwgMSkgeworICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAiY291bGQgbm90IGZpbmQgTUFSSyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmV0dXJuIHNlbGYtPm1hcmtzWy0tc2VsZi0+bnVtX21hcmtzXTsKKyAgICBtYXJrID0gc2VsZi0+bWFya3NbLS1zZWxmLT5udW1fbWFya3NdOworICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IHNlbGYtPm51bV9tYXJrcyAhPSAwOworICAgIHNlbGYtPnN0YWNrLT5mZW5jZSA9IHNlbGYtPm51bV9tYXJrcyA/CisgICAgICAgICAgICBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MgLSAxXSA6IDA7CisgICAgcmV0dXJuIG1hcms7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTQ1NDEsMTQgKzQ2MDEsNiBAQAogfQogCiBzdGF0aWMgaW50Ci1iYWRfcmVhZGxpbmUodm9pZCkKLXsKLSAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJwaWNrbGUgZGF0YSB3YXMgdHJ1bmNhdGVkIik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgaW50CiBsb2FkX2ludChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwpAQCAtNDk5MSw3ICs1MDQzLDcgQEAKICAgICBQeU9iamVjdCAqdHVwbGU7CiAKICAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPCBsZW4pCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAKICAgICB0dXBsZSA9IFBkYXRhX3BvcHR1cGxlKHNlbGYtPnN0YWNrLCBQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIGxlbik7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCkBAIC01MDczLDYgKzUxMjUsMTMgQEAKICAgICBpZiAoKGRpY3QgPSBQeURpY3RfTmV3KCkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAorICAgIGlmICgoaiAtIGkpICUgMiAhPSAwKSB7CisgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJvZGQgbnVtYmVyIG9mIGl0ZW1zIGZvciBESUNUIik7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIGZvciAoayA9IGkgKyAxOyBrIDwgajsgayArPSAyKSB7CiAgICAgICAgIGtleSA9IHNlbGYtPnN0YWNrLT5kYXRhW2sgLSAxXTsKICAgICAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtrXTsKQEAgLTUxNDAsNyArNTE5OSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIGkgPCAxKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogCiAgICAgYXJncyA9IFBkYXRhX3BvcHR1cGxlKHNlbGYtPnN0YWNrLCBpICsgMSk7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTU0NjMsMTIgKzU1MjIsMTUgQEAKICAgICAgKi8KICAgICBpZiAoc2VsZi0+bnVtX21hcmtzID4gMCAmJiBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MgLSAxXSA9PSBsZW4pIHsKICAgICAgICAgc2VsZi0+bnVtX21hcmtzLS07Ci0gICAgfSBlbHNlIGlmIChsZW4gPiAwKSB7CisgICAgICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IHNlbGYtPm51bV9tYXJrcyAhPSAwOworICAgICAgICBzZWxmLT5zdGFjay0+ZmVuY2UgPSBzZWxmLT5udW1fbWFya3MgPworICAgICAgICAgICAgICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcyAtIDFdIDogMDsKKyAgICB9IGVsc2UgaWYgKGxlbiA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOworICAgIGVsc2UgewogICAgICAgICBsZW4tLTsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnN0YWNrLT5kYXRhW2xlbl0pOwogICAgICAgICBQeV9TSVpFKHNlbGYtPnN0YWNrKSA9IGxlbjsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNTQ5MCwxMCArNTU1MiwxMCBAQAogbG9hZF9kdXAoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpsYXN0OwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X3NzaXplX3QgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7CiAKLSAgICBpZiAoKGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKGxlbiA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGxhc3QgPSBzZWxmLT5zdGFjay0+ZGF0YVtsZW4gLSAxXTsKICAgICBQREFUQV9BUFBFTkQoc2VsZi0+c3RhY2ssIGxhc3QsIC0xKTsKICAgICByZXR1cm4gMDsKQEAgLTU2NzYsOCArNTczOCw4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAobGVuIDwgMikKICAgICAgICAgcmV0dXJuIGJhZF9yZWFkbGluZSgpOwotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAga2V5ID0gUHlMb25nX0Zyb21TdHJpbmcocywgTlVMTCwgMTApOwpAQCAtNTcwNSw4ICs1NzY3LDggQEAKICAgICBpZiAoX1VucGlja2xlcl9SZWFkKHNlbGYsICZzLCAxKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAgaWR4ID0gUHlfQ0hBUk1BU0soc1swXSk7CkBAIC01NzI0LDggKzU3ODYsOCBAQAogICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDQpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICBpZHggPSBjYWxjX2JpbnNpemUocywgNCk7CkBAIC01NzQzLDggKzU4MDUsOCBAQAogewogICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAgcmV0dXJuIF9VbnBpY2tsZXJfTWVtb1B1dChzZWxmLCBzZWxmLT5tZW1vX2xlbiwgdmFsdWUpOwpAQCAtNTc1OCw4ICs1ODIwLDggQEAKICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKIAogICAgIGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwotICAgIGlmICh4ID4gbGVuIHx8IHggPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmICh4ID4gbGVuIHx8IHggPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBpZiAobGVuID09IHgpICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01ODA4LDggKzU4NzAsOCBAQAogc3RhdGljIGludAogbG9hZF9hcHBlbmQoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDEgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDEgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICByZXR1cm4gZG9fYXBwZW5kKHNlbGYsIFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMSk7CiB9CiAKQEAgLTU4MzEsOCArNTg5Myw4IEBACiAgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBsZW4gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKLSAgICBpZiAoeCA+IGxlbiB8fCB4IDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoeCA+IGxlbiB8fCB4IDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgaWYgKGxlbiA9PSB4KSAgLyogbm90aGluZyB0byBkbyAqLwogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoKGxlbiAtIHgpICUgMiAhPSAwKSB7CkBAIC01ODg1LDggKzU5NDcsOCBAQAogICAgIGlmIChtYXJrIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwotICAgIGlmIChtYXJrID4gbGVuIHx8IG1hcmsgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChtYXJrID4gbGVuIHx8IG1hcmsgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBpZiAobGVuID09IG1hcmspICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01OTQxLDggKzYwMDMsOCBAQAogICAgIC8qIFN0YWNrIGlzIC4uLiBpbnN0YW5jZSwgc3RhdGUuICBXZSB3YW50IHRvIGxlYXZlIGluc3RhbmNlIGF0CiAgICAgICogdGhlIHN0YWNrIHRvcCwgcG9zc2libHkgbXV0YXRlZCB2aWEgaW5zdGFuY2UuX19zZXRzdGF0ZV9fKHN0YXRlKS4KICAgICAgKi8KLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPCAyKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMiA8IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAKICAgICBQREFUQV9QT1Aoc2VsZi0+c3RhY2ssIHN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT0gTlVMTCkKQEAgLTYwNzgsNyArNjE0MCw4IEBACiAgICAgICAgIHNlbGYtPm1hcmtzX3NpemUgPSAoUHlfc3NpemVfdClhbGxvYzsKICAgICB9CiAKLSAgICBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MrK10gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKKyAgICBzZWxmLT5zdGFjay0+bWFya19zZXQgPSAxOworICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcysrXSA9IHNlbGYtPnN0YWNrLT5mZW5jZSA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC02MTYxLDYgKzYyMjQsOCBAQAogICAgIGNoYXIgKnMgPSBOVUxMOwogCiAgICAgc2VsZi0+bnVtX21hcmtzID0gMDsKKyAgICBzZWxmLT5zdGFjay0+bWFya19zZXQgPSAwOworICAgIHNlbGYtPnN0YWNrLT5mZW5jZSA9IDA7CiAgICAgc2VsZi0+cHJvdG8gPSAwOwogICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSkKICAgICAgICAgUGRhdGFfY2xlYXIoc2VsZi0+c3RhY2ssIDApOwpAQCAtNjE3Myw4ICs2MjM4LDEzIEBACiAgICAgY2FzZSBvcGNvZGU6IGlmIChsb2FkX2Z1bmMoc2VsZiwgKGFyZykpIDwgMCkgYnJlYWs7IGNvbnRpbnVlOwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgMSkgPCAwKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDEpIDwgMCkgeworICAgICAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoc3QtPlVucGlja2xpbmdFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfRU9GRXJyb3IsICJSYW4gb3V0IG9mIGlucHV0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAoKGVudW0gb3Bjb2RlKXNbMF0pIHsKICAgICAgICAgT1AoTk9ORSwgbG9hZF9ub25lKQpAQCAtNjI0NiwxNSArNjMxNiwxOSBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChzWzBdID09ICdcMCcpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX0VPRkVycm9yKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlVucGlja2xpbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbG9hZCBrZXksICclYycuIiwgc1swXSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzOworICAgICAgICAgICAgICAgIGlmICgweDIwIDw9IGMgJiYgYyA8PSAweDdlICYmIGMgIT0gJ1wnJyAmJiBjICE9ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHN0LT5VbnBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsb2FkIGtleSwgJyVjJy4iLCBjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbG9hZCBrZXksICdcXHglMDJ4Jy4iLCBjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgIC8qIGFuZCB3ZSBhcmUgZG9uZSEgKi8KQEAgLTY4NjUsOCArNjkzOSw2IEBACiBzdGF0aWMgaW50CiBVbnBpY2tsZXJfc2V0X3BlcnNsb2FkKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBkZWxldGlvbiBpcyBub3Qgc3VwcG9ydGVkIik7CkBAIC02ODc5LDEwICs2OTUxLDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHRtcCA9IHNlbGYtPnBlcnNfZnVuYzsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIHNlbGYtPnBlcnNfZnVuYyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsgICAgICAvKiBzZWxmLT5wZXJzX2Z1bmMgY2FuIGJlIE5VTEwsIHNvIGJlIGNhcmVmdWwuICovCisgICAgUHlfWFNFVFJFRihzZWxmLT5wZXJzX2Z1bmMsIHZhbHVlKTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwppbmRleCA4YmVkYWI1Li4wY2EwYWE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYworKysgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwpAQCAtMjEsOCArMjEsNyBAQAogI2luY2x1ZGUgPGRpcmVudC5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChTWVNfZ2V0ZGVudHM2NCkKLS8qIEFuZHJvaWQgZG9lc24ndCBleHBvc2Ugc3lzY2FsbHMsIGFkZCB0aGUgZGVmaW5pdGlvbiBtYW51YWxseS4gKi8KKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBfX0FORFJPSURfQVBJX18gPCAyMSAmJiAhZGVmaW5lZChTWVNfZ2V0ZGVudHM2NCkKICMgaW5jbHVkZSA8c3lzL2xpbnV4LXN5c2NhbGxzLmg+CiAjIGRlZmluZSBTWVNfZ2V0ZGVudHM2NCAgX19OUl9nZXRkZW50czY0CiAjZW5kaWYKQEAgLTcyLDcgKzcxLDcgQEAKIAogLyogQ29udmVydCBBU0NJSSB0byBhIHBvc2l0aXZlIGludCwgbm8gbGliYyBjYWxsLiBubyBvdmVyZmxvdy4gLTEgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1fcG9zX2ludF9mcm9tX2FzY2lpKGNoYXIgKm5hbWUpCitfcG9zX2ludF9mcm9tX2FzY2lpKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgaW50IG51bSA9IDA7CiAgICAgd2hpbGUgKCpuYW1lID49ICcwJyAmJiAqbmFtZSA8PSAnOScpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jIGIvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMKaW5kZXggOTVhZDRhNC4uNjM3NTlkNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMKQEAgLTY4LDkgKzY4LDggQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgPHRpbWUuaD4gICAgICAgICAgICAgICAvKiBmb3Igc2VlZGluZyB0byBjdXJyZW50IHRpbWUgKi8KLQotI2lmbmRlZiBQWV9VSU5UMzJfVAotIyAgZXJyb3IgIkZhaWxlZCB0byBmaW5kIGFuIGV4YWN0LXdpZHRoIDMyLWJpdCBpbnRlZ2VyIHR5cGUiCisjaWZkZWYgSEFWRV9QUk9DRVNTX0gKKyMgIGluY2x1ZGUgPHByb2Nlc3MuaD4gICAgICAgICAgLyogbmVlZGVkIGZvciBnZXRwaWQoKSAqLwogI2VuZGlmCiAKIC8qIFBlcmlvZCBwYXJhbWV0ZXJzIC0tIFRoZXNlIGFyZSBhbGwgbWFnaWMuICBEb24ndCBjaGFuZ2UuICovCkBAIC04Myw3ICs4Miw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIGludCBpbmRleDsKLSAgICBQWV9VSU5UMzJfVCBzdGF0ZVtOXTsKKyAgICB1aW50MzJfdCBzdGF0ZVtOXTsKIH0gUmFuZG9tT2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFJhbmRvbV9UeXBlOwpAQCAtOTUsMTMgKzk0LDEzIEBACiAKIAogLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweGZmZmZmZmZmXS1pbnRlcnZhbCAqLwotc3RhdGljIFBZX1VJTlQzMl9UCitzdGF0aWMgdWludDMyX3QKIGdlbnJhbmRfaW50MzIoUmFuZG9tT2JqZWN0ICpzZWxmKQogewotICAgIFBZX1VJTlQzMl9UIHk7Ci0gICAgc3RhdGljIFBZX1VJTlQzMl9UIG1hZzAxWzJdPXsweDBVLCBNQVRSSVhfQX07CisgICAgdWludDMyX3QgeTsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgbWFnMDFbMl0gPSB7MHgwVSwgTUFUUklYX0F9OwogICAgIC8qIG1hZzAxW3hdID0geCAqIE1BVFJJWF9BICBmb3IgeD0wLDEgKi8KLSAgICBQWV9VSU5UMzJfVCAqbXQ7CisgICAgdWludDMyX3QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBpZiAoc2VsZi0+aW5kZXggPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0aW1lICovCkBAIC0xMzYsMjEgKzEzNSwyMSBAQAogICogb3B0aW1pemUgdGhlIGRpdmlzaW9uIGF3YXkgYXQgY29tcGlsZS10aW1lLiAgNjcxMDg4NjQgaXMgMioqMjYuICBJbgogICogZWZmZWN0LCBhIGNvbnRhaW5zIDI3IHJhbmRvbSBiaXRzIHNoaWZ0ZWQgbGVmdCAyNiwgYW5kIGIgZmlsbHMgaW4gdGhlCiAgKiBsb3dlciAyNiBiaXRzIG9mIHRoZSA1My1iaXQgbnVtZXJhdG9yLgotICogVGhlIG9yZ2luYWwgY29kZSBjcmVkaXRlZCBJc2FrdSBXYWRhIGZvciB0aGlzIGFsZ29yaXRobSwgMjAwMi8wMS8wOS4KKyAqIFRoZSBvcmlnaW5hbCBjb2RlIGNyZWRpdGVkIElzYWt1IFdhZGEgZm9yIHRoaXMgYWxnb3JpdGhtLCAyMDAyLzAxLzA5LgogICovCiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX3JhbmRvbShSYW5kb21PYmplY3QgKnNlbGYpCiB7Ci0gICAgUFlfVUlOVDMyX1QgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CisgICAgdWludDMyX3QgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoYSo2NzEwODg2NC4wK2IpKigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKSk7CiB9CiAKIC8qIGluaXRpYWxpemVzIG10W05dIHdpdGggYSBzZWVkICovCiBzdGF0aWMgdm9pZAotaW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgcykKK2luaXRfZ2VucmFuZChSYW5kb21PYmplY3QgKnNlbGYsIHVpbnQzMl90IHMpCiB7CiAgICAgaW50IG10aTsKLSAgICBQWV9VSU5UMzJfVCAqbXQ7CisgICAgdWludDMyX3QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBtdFswXT0gczsKQEAgLTE2OSwxMSArMTY4LDExIEBACiAvKiBpbml0aWFsaXplIGJ5IGFuIGFycmF5IHdpdGggYXJyYXktbGVuZ3RoICovCiAvKiBpbml0X2tleSBpcyB0aGUgYXJyYXkgZm9yIGluaXRpYWxpemluZyBrZXlzICovCiAvKiBrZXlfbGVuZ3RoIGlzIGl0cyBsZW5ndGggKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1pbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCitzdGF0aWMgdm9pZAoraW5pdF9ieV9hcnJheShSYW5kb21PYmplY3QgKnNlbGYsIHVpbnQzMl90IGluaXRfa2V5W10sIHNpemVfdCBrZXlfbGVuZ3RoKQogewogICAgIHNpemVfdCBpLCBqLCBrOyAgICAgICAvKiB3YXMgc2lnbmVkIGluIHRoZSBvcmlnaW5hbCBjb2RlLiBSREggMTIvMTYvMjAwMiAqLwotICAgIFBZX1VJTlQzMl9UICptdDsKKyAgICB1aW50MzJfdCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIGluaXRfZ2VucmFuZChzZWxmLCAxOTY1MDIxOFUpOwpAQCAtMTgxLDIxICsxODAsMTkgQEAKICAgICBrID0gKE4+a2V5X2xlbmd0aCA/IE4gOiBrZXlfbGVuZ3RoKTsKICAgICBmb3IgKDsgazsgay0tKSB7CiAgICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjVVKSkKLSAgICAgICAgICAgICAgICAgKyBpbml0X2tleVtqXSArIChQWV9VSU5UMzJfVClqOyAvKiBub24gbGluZWFyICovCisgICAgICAgICAgICAgICAgICsgaW5pdF9rZXlbal0gKyAodWludDMyX3QpajsgLyogbm9uIGxpbmVhciAqLwogICAgICAgICBpKys7IGorKzsKICAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KICAgICAgICAgaWYgKGo+PWtleV9sZW5ndGgpIGo9MDsKICAgICB9CiAgICAgZm9yIChrPU4tMTsgazsgay0tKSB7CiAgICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE1NjYwODM5NDFVKSkKLSAgICAgICAgICAgICAgICAgLSAoUFlfVUlOVDMyX1QpaTsgLyogbm9uIGxpbmVhciAqLworICAgICAgICAgICAgICAgICAtICh1aW50MzJfdClpOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KICAgICB9CiAKICAgICBtdFswXSA9IDB4ODAwMDAwMDBVOyAvKiBNU0IgaXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqLwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAogLyoKQEAgLTIwMywxMiArMjAwLDQzIEBACiAgKiBUd2lzdGVyIGRvd25sb2FkLgogICovCiAKK3N0YXRpYyBpbnQKK3JhbmRvbV9zZWVkX3VyYW5kb20oUmFuZG9tT2JqZWN0ICpzZWxmKQoreworICAgIFBZX1VJTlQzMl9UIGtleVtOXTsKKworICAgIGlmIChfUHlPU19VUmFuZG9tTm9uYmxvY2soa2V5LCBzaXplb2Yoa2V5KSkgPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIFB5X0FSUkFZX0xFTkdUSChrZXkpKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3JhbmRvbV9zZWVkX3RpbWVfcGlkKFJhbmRvbU9iamVjdCAqc2VsZikKK3sKKyAgICBfUHlUaW1lX3Qgbm93OworICAgIHVpbnQzMl90IGtleVs1XTsKKworICAgIG5vdyA9IF9QeVRpbWVfR2V0U3lzdGVtQ2xvY2soKTsKKyAgICBrZXlbMF0gPSAoUFlfVUlOVDMyX1QpKG5vdyAmIDB4ZmZmZmZmZmZVKTsKKyAgICBrZXlbMV0gPSAoUFlfVUlOVDMyX1QpKG5vdyA+PiAzMik7CisKKyAgICBrZXlbMl0gPSAoUFlfVUlOVDMyX1QpZ2V0cGlkKCk7CisKKyAgICBub3cgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAga2V5WzNdID0gKFBZX1VJTlQzMl9UKShub3cgJiAweGZmZmZmZmZmVSk7CisgICAga2V5WzRdID0gKFBZX1VJTlQzMl9UKShub3cgPj4gMzIpOworCisgICAgaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIFB5X0FSUkFZX0xFTkdUSChrZXkpKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHJhbmRvbV9zZWVkKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7ICAgICAgICAgICAgLyogZ3VpbHR5IHVudGlsIHByb3ZlZCBpbm5vY2VudCAqLwogICAgIFB5T2JqZWN0ICpuID0gTlVMTDsKLSAgICBQWV9VSU5UMzJfVCAqa2V5ID0gTlVMTDsKKyAgICB1aW50MzJfdCAqa2V5ID0gTlVMTDsKICAgICBzaXplX3QgYml0cywga2V5dXNlZDsKICAgICBpbnQgcmVzOwogICAgIFB5T2JqZWN0ICphcmcgPSBOVUxMOwpAQCAtMjE2LDE0ICsyNDQsMTcgQEAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZWVkIiwgMCwgMSwgJmFyZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIHRpbWVfdCBub3c7CisgICAgIGlmIChhcmcgPT0gTlVMTCB8fCBhcmcgPT0gUHlfTm9uZSkgeworICAgICAgICBpZiAocmFuZG9tX3NlZWRfdXJhbmRvbShzZWxmKSA+PSAwKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgIHRpbWUoJm5vdyk7Ci0gICAgICAgIGluaXRfZ2VucmFuZChzZWxmLCAoUFlfVUlOVDMyX1Qpbm93KTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgICAgIC8qIFJlYWRpbmcgc3lzdGVtIGVudHJvcHkgZmFpbGVkLCBmYWxsIGJhY2sgb24gdGhlIHdvcnN0IGVudHJvcHk6CisgICAgICAgICAgICAgICB1c2UgdGhlIGN1cnJlbnQgdGltZSBhbmQgcHJvY2VzcyBpZGVudGlmaWVyLiAqLworICAgICAgICAgICAgcmFuZG9tX3NlZWRfdGltZV9waWQoc2VsZik7CisgICAgICAgIH0KKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQorCiAgICAgLyogVGhpcyBhbGdvcml0aG0gcmVsaWVzIG9uIHRoZSBudW1iZXIgYmVpbmcgdW5zaWduZWQuCiAgICAgICogU286IGlmIHRoZSBhcmcgaXMgYSBQeUxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWUuCiAgICAgICogT3RoZXJ3aXNlIHVzZSBpdHMgaGFzaCB2YWx1ZSwgY2FzdCB0byB1bnNpZ25lZC4KQEAgLTI0OCw3ICsyNzksNyBAQAogICAgIGtleXVzZWQgPSBiaXRzID09IDAgPyAxIDogKGJpdHMgLSAxKSAvIDMyICsgMTsKIAogICAgIC8qIENvbnZlcnQgc2VlZCB0byBieXRlIHNlcXVlbmNlLiAqLwotICAgIGtleSA9IChQWV9VSU5UMzJfVCAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKKyAgICBrZXkgPSAodWludDMyX3QgKilQeU1lbV9NYWxsb2MoKHNpemVfdCk0ICoga2V5dXNlZCk7CiAgICAgaWYgKGtleSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gRG9uZTsKQEAgLTI2NywxMyArMjk4LDE3IEBACiAgICAgICAgIHNpemVfdCBpLCBqOwogICAgICAgICAvKiBSZXZlcnNlIGFuIGFycmF5LiAqLwogICAgICAgICBmb3IgKGkgPSAwLCBqID0ga2V5dXNlZCAtIDE7IGkgPCBqOyBpKyssIGotLSkgewotICAgICAgICAgICAgUFlfVUlOVDMyX1QgdG1wID0ga2V5W2ldOworICAgICAgICAgICAgdWludDMyX3QgdG1wID0ga2V5W2ldOwogICAgICAgICAgICAga2V5W2ldID0ga2V5W2pdOwogICAgICAgICAgICAga2V5W2pdID0gdG1wOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgcmVzdWx0ID0gaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIGtleXVzZWQpOworICAgIGluaXRfYnlfYXJyYXkoc2VsZiwga2V5LCBrZXl1c2VkKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXN1bHQgPSBQeV9Ob25lOworCiBEb25lOgogICAgIFB5X1hERUNSRUYobik7CiAgICAgUHlNZW1fRnJlZShrZXkpOwpAQCAtMzI5LDcgKzM2NCw3IEBACiAgICAgICAgIGVsZW1lbnQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwogICAgICAgICBpZiAoZWxlbWVudCA9PSAodW5zaWduZWQgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYtPnN0YXRlW2ldID0gKFBZX1VJTlQzMl9UKWVsZW1lbnQ7CisgICAgICAgIHNlbGYtPnN0YXRlW2ldID0gKHVpbnQzMl90KWVsZW1lbnQ7CiAgICAgfQogCiAgICAgaW5kZXggPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpKTsKQEAgLTM0OSw4ICszODQsOCBAQAogcmFuZG9tX2dldHJhbmRiaXRzKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGssIGksIHdvcmRzOwotICAgIFBZX1VJTlQzMl9UIHI7Ci0gICAgUFlfVUlOVDMyX1QgKndvcmRhcnJheTsKKyAgICB1aW50MzJfdCByOworICAgIHVpbnQzMl90ICp3b3JkYXJyYXk7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRyYW5kYml0cyIsICZrKSkKQEAgLTM2Niw3ICs0MDEsNyBAQAogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZ2VucmFuZF9pbnQzMihzZWxmKSA+PiAoMzIgLSBrKSk7CiAKICAgICB3b3JkcyA9IChrIC0gMSkgLyAzMiArIDE7Ci0gICAgd29yZGFycmF5ID0gKFBZX1VJTlQzMl9UICopUHlNZW1fTWFsbG9jKHdvcmRzICogNCk7CisgICAgd29yZGFycmF5ID0gKHVpbnQzMl90ICopUHlNZW1fTWFsbG9jKHdvcmRzICogNCk7CiAgICAgaWYgKHdvcmRhcnJheSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2Nwcm94eS5jIGIvTW9kdWxlcy9fc2Nwcm94eS5jCmluZGV4IDY2YjZlMzQuLjFjZTRiNzcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NjcHJveHkuYworKysgYi9Nb2R1bGVzL19zY3Byb3h5LmMKQEAgLTcxLDE2ICs3MSwxMiBAQAogICAgIHJlc3VsdCA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoJmtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyAhPSBOVUxMKSB7Ci0gICAgICAgIGFOdW0gPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3QsCi0gICAgICAgICAgICBrU0NQcm9wTmV0UHJveGllc0V4Y2x1ZGVTaW1wbGVIb3N0bmFtZXMpOwotICAgICAgICBpZiAoYU51bSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdiA9IFB5Qm9vbF9Gcm9tTG9uZyhjZm51bV90b19pbnQzMihhTnVtKSk7Ci0gICAgICAgIH0KLSAgICB9ICBlbHNlIHsKKyAgICBhTnVtID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlEaWN0LAorICAgICAgICBrU0NQcm9wTmV0UHJveGllc0V4Y2x1ZGVTaW1wbGVIb3N0bmFtZXMpOworICAgIGlmIChhTnVtID09IE5VTEwpIHsKICAgICAgICAgdiA9IFB5Qm9vbF9Gcm9tTG9uZygwKTsKKyAgICB9IGVsc2UgeworICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKGNmbnVtX3RvX2ludDMyKGFOdW0pKTsKICAgICB9CiAKICAgICBpZiAodiA9PSBOVUxMKSBnb3RvIGVycm9yOwpAQCAtMTMwLDcgKzEyNiw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXNldF9wcm94eShQeU9iamVjdCogcHJveGllcywgY2hhciogcHJvdG8sIENGRGljdGlvbmFyeVJlZiBwcm94eURpY3QsCitzZXRfcHJveHkoUHlPYmplY3QqIHByb3hpZXMsIGNvbnN0IGNoYXIqIHByb3RvLCBDRkRpY3Rpb25hcnlSZWYgcHJveHlEaWN0LAogICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGVuYWJsZWRLZXksCiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgaG9zdEtleSwgQ0ZTdHJpbmdSZWYgcG9ydEtleSkKIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvUkVBRE1FLnR4dCBiL01vZHVsZXMvX3NoYTMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzRiMWQxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0tlY2NhayBDb2RlIFBhY2thZ2UKKz09PT09PT09PT09PT09PT09PT0KKworVGhlIGZpbGVzIGluIGtjcCBhcmUgdGFrZW4gZnJvbSB0aGUgS2VjY2FrIENvZGUgUGFja2FnZS4gVGhleSBoYXZlIGJlZW4KK3NsaWdodGx5IHRvIGJlIEM4OSBjb21wYXRpYmxlLiBUaGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGhlYWRlciBmaWxlCitLZWNjYWtQLTE2MDAtU25QLmggaGEgYmVlbiByZW5hbWVkIHRvIEtlY2Nha1AtMTYwMC1TblAtb3B0MzIuaCBvcgorS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oLgorCitUaGUgNjRiaXQgZmlsZXMgd2VyZSBnZW5lcmF0ZWQgd2l0aCBnZW5lcmljNjRsYy9saWJrZWNjYWsuYS5wYWNrIHRhcmdldCwgdGhlCiszMmJpdCBmaWxlcyB3aXRoIGdlbmVyaWMzMmxjL2xpYmtlY2Nhay5hLnBhY2suCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvY2xlYW51cC5weSBiL01vZHVsZXMvX3NoYTMvY2xlYW51cC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xN2M1NmIzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5CkBAIC0wLDAgKzEsNTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgICBDaHJpc3RpYW4gSGVpbWVzIChjaHJpc3RpYW5AcHl0aG9uLm9yZykKKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorIworIyBjbGVhbnVwIEtlY2NhayBzb3VyY2VzCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK0NQUDEgPSByZS5jb21waWxlKCJeLy8oLiopIikKK0NQUDIgPSByZS5jb21waWxlKCJcIC8vKC4qKSIpCisKK1NUQVRJQ1MgPSAoInZvaWQgIiwgImludCAiLCAiSGFzaFJldHVybiAiLAorICAgICAgICAgICAiY29uc3QgVUlOVDY0ICIsICJVSU5UMTYgIiwgIiAgICBpbnQgcHJlZml4IyMiKQorCitIRVJFID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCitLRUNDQUsgPSBvcy5wYXRoLmpvaW4oSEVSRSwgImtjcCIpCisKK2RlZiBnZXRmaWxlcygpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoS0VDQ0FLKToKKyAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihLRUNDQUssIG5hbWUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAgeWllbGQgbmFtZQorCitkZWYgY2xlYW51cChmKToKKyAgICBidWYgPSBbXQorICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICMgbWFyayBhbGwgZnVuY3Rpb25zIGFuZCBnbG9iYWwgZGF0YSBhcyBzdGF0aWMKKyAgICAgICAgI2lmIGxpbmUuc3RhcnRzd2l0aChTVEFUSUNTKToKKyAgICAgICAgIyAgICBidWYuYXBwZW5kKCJzdGF0aWMgIiArIGxpbmUpCisgICAgICAgICMgICAgY29udGludWUKKyAgICAgICAgIyByZW1vdmUgVUlOVDY0IHR5cGVkZWYsIHdlIGhhdmUgb3VyIG93bgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoInR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCIpOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgiLyogJXMgKi9cbiIgJSBsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIyByZW1vdmUgI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIKKyAgICAgICAgaWYgImJyZ19lbmRpYW4uaCIgaW4gbGluZToKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIi8qICVzICovXG4iICUgbGluZS5zdHJpcCgpKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyB0cmFuc2Zvcm0gQysrIGNvbW1lbnRzIGludG8gQU5TSSBDIGNvbW1lbnRzCisgICAgICAgIGxpbmUgPSBDUFAxLnN1YihyIi8qXDEgKi9cbiIsIGxpbmUpCisgICAgICAgIGxpbmUgPSBDUFAyLnN1YihyIiAvKlwxICovXG4iLCBsaW5lKQorICAgICAgICBidWYuYXBwZW5kKGxpbmUpCisgICAgcmV0dXJuICIiLmpvaW4oYnVmKQorCitmb3IgbmFtZSBpbiBnZXRmaWxlcygpOgorICAgIHdpdGggb3BlbihuYW1lKSBhcyBmOgorICAgICAgICByZXMgPSBjbGVhbnVwKGYpCisgICAgd2l0aCBvcGVuKG5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0ZShyZXMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2NsaW5pYy9zaGEzbW9kdWxlLmMuaCBiL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ODhlN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2NsaW5pYy9zaGEzbW9kdWxlLmMuaApAQCAtMCwwICsxLDE1NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5X3NoYTNfbmV3X19kb2NfXywKKyJzaGEzXzIyNChzdHJpbmc9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9zaGEzX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTNfMjI0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZGF0YSA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHB5X3NoYTNfbmV3X2ltcGwodHlwZSwgZGF0YSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2NvcHlfX2RvY19fLAorImNvcHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4iKTsKKworI2RlZmluZSBfU0hBM19TSEEzXzIyNF9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X2NvcHksIE1FVEhfTk9BUkdTLCBfc2hhM19zaGEzXzIyNF9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5X2ltcGwoU0hBM29iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfZGlnZXN0LCBNRVRIX05PQVJHUywgX3NoYTNfc2hhM18yMjRfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2RpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsIF9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc2hhM19zaGEzXzIyNF91cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X3VwZGF0ZSwgTUVUSF9PLCBfc2hhM19zaGEzXzIyNF91cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYWtlXzEyOF9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLywgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBS0VfMTI4X0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYWtlXzEyOF9kaWdlc3QsIE1FVEhfRkFTVENBTEwsIF9zaGEzX3NoYWtlXzEyOF9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiazpkaWdlc3QiLCBfa2V5d29yZHMsIDB9OworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsZW5ndGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKHNlbGYsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLywgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQUtFXzEyOF9IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0LCBNRVRIX0ZBU1RDQUxMLCBfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imxlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ims6aGV4ZGlnZXN0IiwgX2tleXdvcmRzLCAwfTsKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbGVuZ3RoKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChzZWxmLCBsZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTg4OGJlYWI0NTEzNmE1NiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA5ZmI0MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYwpAQCAtMCwwICsxLDgyIEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiS2VjY2FrSGFzaC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hJbml0aWFsaXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCB1bnNpZ25lZCBpbnQgaGFzaGJpdGxlbiwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXgpCit7CisgICAgSGFzaFJldHVybiByZXN1bHQ7CisKKyAgICBpZiAoZGVsaW1pdGVkU3VmZml4ID09IDApCisgICAgICAgIHJldHVybiBGQUlMOworICAgIHJlc3VsdCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplKCZpbnN0YW5jZS0+c3BvbmdlLCByYXRlLCBjYXBhY2l0eSk7CisgICAgaWYgKHJlc3VsdCAhPSBTVUNDRVNTKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGluc3RhbmNlLT5maXhlZE91dHB1dExlbmd0aCA9IGhhc2hiaXRsZW47CisgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IGRlbGltaXRlZFN1ZmZpeDsKKyAgICByZXR1cm4gU1VDQ0VTUzsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoVXBkYXRlKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCBjb25zdCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKQoreworICAgIGlmICgoZGF0YWJpdGxlbiAlIDgpID09IDApCisgICAgICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiKCZpbnN0YW5jZS0+c3BvbmdlLCBkYXRhLCBkYXRhYml0bGVuLzgpOworICAgIGVsc2UgeworICAgICAgICBIYXNoUmV0dXJuIHJldCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7CisgICAgICAgIGlmIChyZXQgPT0gU1VDQ0VTUykgeworICAgICAgICAgICAgLyogVGhlIGxhc3QgcGFydGlhbCBieXRlIGlzIGFzc3VtZWQgdG8gYmUgYWxpZ25lZCBvbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyAqLworCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxhc3RCeXRlID0gZGF0YVtkYXRhYml0bGVuLzhdOworICAgICAgICAgICAgLyogQ29uY2F0ZW5hdGUgdGhlIGxhc3QgZmV3IGJpdHMgcHJvdmlkZWQgaGVyZSB3aXRoIHRob3NlIG9mIHRoZSBzdWZmaXggKi8KKworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgZGVsaW1pdGVkTGFzdEJ5dGVzID0gKHVuc2lnbmVkIHNob3J0KSgodW5zaWduZWQgc2hvcnQpbGFzdEJ5dGUgfCAoKHVuc2lnbmVkIHNob3J0KWluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPDwgKGRhdGFiaXRsZW4gJSA4KSkpOworICAgICAgICAgICAgaWYgKChkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGMDApID09IDB4MDAwMCkgeworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPSBkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBvbmVCeXRlWzFdOworICAgICAgICAgICAgICAgIG9uZUJ5dGVbMF0gPSBkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGOworICAgICAgICAgICAgICAgIHJldCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIG9uZUJ5dGUsIDEpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPSAoZGVsaW1pdGVkTGFzdEJ5dGVzID4+IDgpICYgMHhGRjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoRmluYWwoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIEJpdFNlcXVlbmNlICpoYXNodmFsKQoreworICAgIEhhc2hSZXR1cm4gcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCZpbnN0YW5jZS0+c3BvbmdlLCBpbnN0YW5jZS0+ZGVsaW1pdGVkU3VmZml4KTsKKyAgICBpZiAocmV0ID09IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgmaW5zdGFuY2UtPnNwb25nZSwgaGFzaHZhbCwgaW5zdGFuY2UtPmZpeGVkT3V0cHV0TGVuZ3RoLzgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJldDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoU3F1ZWV6ZShLZWNjYWtfSGFzaEluc3RhbmNlICppbnN0YW5jZSwgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbikKK3sKKyAgICBpZiAoKGRhdGFiaXRsZW4gJSA4KSAhPSAwKQorICAgICAgICByZXR1cm4gRkFJTDsKKyAgICByZXR1cm4gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZVNxdWVlemUoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJkM2RjNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaApAQCAtMCwwICsxLDExNCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrSGFzaEludGVyZmFjZV9oXworI2RlZmluZSBfS2VjY2FrSGFzaEludGVyZmFjZV9oXworCisjaWZuZGVmIEtlY2Nha1AxNjAwX2V4Y2x1ZGVkCisKKyNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIEJpdFNlcXVlbmNlOwordHlwZWRlZiBzaXplX3QgRGF0YUxlbmd0aDsKK3R5cGVkZWYgZW51bSB7IFNVQ0NFU1MgPSAwLCBGQUlMID0gMSwgQkFEX0hBU0hMRU4gPSAyIH0gSGFzaFJldHVybjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbnN0YW5jZSBzcG9uZ2U7CisgICAgdW5zaWduZWQgaW50IGZpeGVkT3V0cHV0TGVuZ3RoOworICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkU3VmZml4OworfSBLZWNjYWtfSGFzaEluc3RhbmNlOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBpbml0aWFsaXplIHRoZSBLZWNjYWtbciwgY10gc3BvbmdlIGZ1bmN0aW9uIGluc3RhbmNlIHVzZWQgaW4gc2VxdWVudGlhbCBoYXNoaW5nIG1vZGUuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSB0byBiZSBpbml0aWFsaXplZC4KKyAgKiBAcGFyYW0gIHJhdGUgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgcmF0ZSByLgorICAqIEBwYXJhbSAgY2FwYWNpdHkgICAgVGhlIHZhbHVlIG9mIHRoZSBjYXBhY2l0eSBjLgorICAqIEBwYXJhbSAgaGFzaGJpdGxlbiAgVGhlIGRlc2lyZWQgbnVtYmVyIG9mIG91dHB1dCBiaXRzLAorICAqICAgICAgICAgICAgICAgICAgICAgb3IgMCBmb3IgYW4gYXJiaXRyYXJpbHktbG9uZyBvdXRwdXQuCisgICogQHBhcmFtICBkZWxpbWl0ZWRTdWZmaXggQml0cyB0aGF0IHdpbGwgYmUgYXV0b21hdGljYWxseSBhcHBlbmRlZCB0byB0aGUgZW5kCisgICogICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGlucHV0IG1lc3NhZ2UsIGFzIGluIGRvbWFpbiBzZXBhcmF0aW9uLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBieXRlIGNvbnRhaW5pbmcgZnJvbSAwIHRvIDcgYml0cworICAqICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZCBsaWtlIHRoZSBAYSBkZWxpbWl0ZWREYXRhIHBhcmFtZXRlciBvZgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBLZWNjYWtfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKSBmdW5jdGlvbi4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjPTE2MDAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaEluaXRpYWxpemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaGFzaEluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCB1bnNpZ25lZCBpbnQgaGFzaGJpdGxlbiwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXgpOworCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQUtFMTI4IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEFLRTEyOChoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMzQ0LCAgMjU2LCAgIDAsIDB4MUYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBS0UyNTYgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMjU2KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEwODgsICA1MTIsICAgMCwgMHgxRikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTIyNCBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yMjQoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgMTE1MiwgIDQ0OCwgMjI0LCAweDA2KQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtMjU2IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzI1NihoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMDg4LCAgNTEyLCAyNTYsIDB4MDYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBMy0zODQgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMzg0KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsICA4MzIsICA3NjgsIDM4NCwgMHgwNikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTUxMiBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM181MTIoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgIDU3NiwgMTAyNCwgNTEyLCAweDA2KQorCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgdG8gYmUgYWJzb3JiZWQuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IGRhdGEuCisgICogICAgICAgICAgICAgICAgICAgICBXaGVuIEBhIGRhdGFiaXRMZW4gaXMgbm90IGEgbXVsdGlwbGUgb2YgOCwgdGhlIGxhc3QgYml0cyBvZiBkYXRhIG11c3QgYmUKKyAgKiAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSBsYXN0IGJ5dGUgKGxpdHRsZS1lbmRpYW4gY29udmVudGlvbikuCisgICogQHBhcmFtICBkYXRhYml0TGVuICBUaGUgbnVtYmVyIG9mIGlucHV0IGJpdHMgcHJvdmlkZWQgaW4gdGhlIGlucHV0IGRhdGEuCisgICogQHByZSAgICBJbiB0aGUgcHJldmlvdXMgY2FsbCB0byBLZWNjYWtfSGFzaFVwZGF0ZSgpLCBkYXRhYml0bGVuIHdhcyBhIG11bHRpcGxlIG9mIDguCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaFVwZGF0ZShLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIGNvbnN0IEJpdFNlcXVlbmNlICpkYXRhLCBEYXRhTGVuZ3RoIGRhdGFiaXRsZW4pOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIGFsbCBpbnB1dCBibG9ja3MgaGF2ZSBiZWVuIGlucHV0IGFuZCB0byBnZXQKKyAgKiBvdXRwdXQgYml0cyBpZiB0aGUgbGVuZ3RoIHdhcyBzcGVjaWZpZWQgd2hlbiBjYWxsaW5nIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgaGFzaEluc3RhbmNlICAgIFBvaW50ZXIgdG8gdGhlIGhhc2ggaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgS2VjY2FrX0hhc2hJbml0aWFsaXplKCkuCisgICogSWYgQGEgaGFzaGJpdGxlbiB3YXMgbm90IDAgaW4gdGhlIGNhbGwgdG8gS2VjY2FrX0hhc2hJbml0aWFsaXplKCksIHRoZSBudW1iZXIgb2YKKyAgKiAgICAgb3V0cHV0IGJpdHMgaXMgZXF1YWwgdG8gQGEgaGFzaGJpdGxlbi4KKyAgKiBJZiBAYSBoYXNoYml0bGVuIHdhcyAwIGluIHRoZSBjYWxsIHRvIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLCB0aGUgb3V0cHV0IGJpdHMKKyAgKiAgICAgbXVzdCBiZSBleHRyYWN0ZWQgdXNpbmcgdGhlIEtlY2Nha19IYXNoU3F1ZWV6ZSgpIGZ1bmN0aW9uLgorICAqIEBwYXJhbSAgc3RhdGUgICAgICAgUG9pbnRlciB0byB0aGUgc3RhdGUgb2YgdGhlIHNwb25nZSBmdW5jdGlvbiBpbml0aWFsaXplZCBieSBJbml0KCkuCisgICogQHBhcmFtICBoYXNodmFsICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBkYXRhLgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBGQUlMIG90aGVyd2lzZS4KKyAgKi8KK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hGaW5hbChLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIEJpdFNlcXVlbmNlICpoYXNodmFsKTsKKworIC8qKgorICAqIEZ1bmN0aW9uIHRvIHNxdWVlemUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBkYXRhYml0bGVuICBUaGUgbnVtYmVyIG9mIG91dHB1dCBiaXRzIGRlc2lyZWQgKG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4KS4KKyAgKiBAcHJlICAgIEtlY2Nha19IYXNoRmluYWwoKSBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNhbGxlZC4KKyAgKiBAcHJlICAgIEBhIGRhdGFiaXRsZW4gaXMgYSBtdWx0aXBsZSBvZiA4LgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBGQUlMIG90aGVyd2lzZS4KKyAgKi8KK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hTcXVlZXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbik7CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtNjQubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMTFmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtNjQubWFjcm9zCkBAIC0wLDAgKzEsMjIwOCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBkZWNsYXJlQUJDREUgXAorICAgIFVJTlQ2NCBBYmEsIEFiZSwgQWJpLCBBYm8sIEFidTsgXAorICAgIFVJTlQ2NCBBZ2EsIEFnZSwgQWdpLCBBZ28sIEFndTsgXAorICAgIFVJTlQ2NCBBa2EsIEFrZSwgQWtpLCBBa28sIEFrdTsgXAorICAgIFVJTlQ2NCBBbWEsIEFtZSwgQW1pLCBBbW8sIEFtdTsgXAorICAgIFVJTlQ2NCBBc2EsIEFzZSwgQXNpLCBBc28sIEFzdTsgXAorICAgIFVJTlQ2NCBCYmEsIEJiZSwgQmJpLCBCYm8sIEJidTsgXAorICAgIFVJTlQ2NCBCZ2EsIEJnZSwgQmdpLCBCZ28sIEJndTsgXAorICAgIFVJTlQ2NCBCa2EsIEJrZSwgQmtpLCBCa28sIEJrdTsgXAorICAgIFVJTlQ2NCBCbWEsIEJtZSwgQm1pLCBCbW8sIEJtdTsgXAorICAgIFVJTlQ2NCBCc2EsIEJzZSwgQnNpLCBCc28sIEJzdTsgXAorICAgIFVJTlQ2NCBDYSwgQ2UsIENpLCBDbywgQ3U7IFwKKyAgICBVSU5UNjQgRGEsIERlLCBEaSwgRG8sIER1OyBcCisgICAgVUlOVDY0IEViYSwgRWJlLCBFYmksIEVibywgRWJ1OyBcCisgICAgVUlOVDY0IEVnYSwgRWdlLCBFZ2ksIEVnbywgRWd1OyBcCisgICAgVUlOVDY0IEVrYSwgRWtlLCBFa2ksIEVrbywgRWt1OyBcCisgICAgVUlOVDY0IEVtYSwgRW1lLCBFbWksIEVtbywgRW11OyBcCisgICAgVUlOVDY0IEVzYSwgRXNlLCBFc2ksIEVzbywgRXN1OyBcCisKKyNkZWZpbmUgcHJlcGFyZVRoZXRhIFwKKyAgICBDYSA9IEFiYV5BZ2FeQWthXkFtYV5Bc2E7IFwKKyAgICBDZSA9IEFiZV5BZ2VeQWtlXkFtZV5Bc2U7IFwKKyAgICBDaSA9IEFiaV5BZ2leQWtpXkFtaV5Bc2k7IFwKKyAgICBDbyA9IEFib15BZ29eQWtvXkFtb15Bc287IFwKKyAgICBDdSA9IEFidV5BZ3VeQWt1XkFtdV5Bc3U7IFwKKworI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorLyogLS0tIENvZGUgZm9yIHJvdW5kLCB3aXRoIHByZXBhcmUtdGhldGEgKGxhbmUgY29tcGxlbWVudGluZyBwYXR0ZXJuICdiZWJpZ29raW1pc2EnKSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oICBCYmUgfCAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgQ2EgPSBFIyNiYTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSl8ICBCYm8gKTsgXAorICAgIENlID0gRSMjYmU7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oICBCYm8gJiAgQmJ1ICk7IFwKKyAgICBDaSA9IEUjI2JpOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCAgQmJ1IHwgIEJiYSApOyBcCisgICAgQ28gPSBFIyNibzsgXAorICAgIEUjI2J1ID0gICBCYnUgXiggIEJiYSAmICBCYmUgKTsgXAorICAgIEN1ID0gRSMjYnU7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXiggIEJnZSB8ICBCZ2kgKTsgXAorICAgIENhIF49IEUjI2dhOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCAgQmdpICYgIEJnbyApOyBcCisgICAgQ2UgXj0gRSMjZ2U7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oICBCZ28gfCh+Qmd1KSk7IFwKKyAgICBDaSBePSBFIyNnaTsgXAorICAgIEUjI2dvID0gICBCZ28gXiggIEJndSB8ICBCZ2EgKTsgXAorICAgIENvIF49IEUjI2dvOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCAgQmdhICYgIEJnZSApOyBcCisgICAgQ3UgXj0gRSMjZ3U7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oICBCa2UgfCAgQmtpICk7IFwKKyAgICBDYSBePSBFIyNrYTsgXAorICAgIEUjI2tlID0gICBCa2UgXiggIEJraSAmICBCa28gKTsgXAorICAgIENlIF49IEUjI2tlOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgQ2kgXj0gRSMja2k7IFwKKyAgICBFIyNrbyA9ICh+QmtvKV4oICBCa3UgfCAgQmthICk7IFwKKyAgICBDbyBePSBFIyNrbzsgXAorICAgIEUjI2t1ID0gICBCa3UgXiggIEJrYSAmICBCa2UgKTsgXAorICAgIEN1IF49IEUjI2t1OyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCAgQm1lICYgIEJtaSApOyBcCisgICAgQ2EgXj0gRSMjbWE7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oICBCbWkgfCAgQm1vICk7IFwKKyAgICBDZSBePSBFIyNtZTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbyl8ICBCbXUgKTsgXAorICAgIENpIF49IEUjI21pOyBcCisgICAgRSMjbW8gPSAofkJtbyleKCAgQm11ICYgIEJtYSApOyBcCisgICAgQ28gXj0gRSMjbW87IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oICBCbWEgfCAgQm1lICk7IFwKKyAgICBDdSBePSBFIyNtdTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgQ2EgXj0gRSMjc2E7IFwKKyAgICBFIyNzZSA9ICh+QnNlKV4oICBCc2kgfCAgQnNvICk7IFwKKyAgICBDZSBePSBFIyNzZTsgXAorICAgIEUjI3NpID0gICBCc2kgXiggIEJzbyAmICBCc3UgKTsgXAorICAgIENpIF49IEUjI3NpOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCAgQnN1IHwgIEJzYSApOyBcCisgICAgQ28gXj0gRSMjc287IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oICBCc2EgJiAgQnNlICk7IFwKKyAgICBDdSBePSBFIyNzdTsgXAorXAorCisvKiAtLS0gQ29kZSBmb3Igcm91bmQgKGxhbmUgY29tcGxlbWVudGluZyBwYXR0ZXJuICdiZWJpZ29raW1pc2EnKSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oICBCYmUgfCAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgRSMjYmUgPSAgIEJiZSBeKCh+QmJpKXwgIEJibyApOyBcCisgICAgRSMjYmkgPSAgIEJiaSBeKCAgQmJvICYgIEJidSApOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCAgQmJ1IHwgIEJiYSApOyBcCisgICAgRSMjYnUgPSAgIEJidSBeKCAgQmJhICYgIEJiZSApOyBcCitcCisgICAgQSMjYm8gXj0gRG87IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgQSMjZ3UgXj0gRHU7IFwKKyAgICBCZ2UgPSBST0w2NChBIyNndSwgMjApOyBcCisgICAgQSMja2EgXj0gRGE7IFwKKyAgICBCZ2kgPSBST0w2NChBIyNrYSwgMyk7IFwKKyAgICBBIyNtZSBePSBEZTsgXAorICAgIEJnbyA9IFJPTDY0KEEjI21lLCA0NSk7IFwKKyAgICBBIyNzaSBePSBEaTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnYSA9ICAgQmdhIF4oICBCZ2UgfCAgQmdpICk7IFwKKyAgICBFIyNnZSA9ICAgQmdlIF4oICBCZ2kgJiAgQmdvICk7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oICBCZ28gfCh+Qmd1KSk7IFwKKyAgICBFIyNnbyA9ICAgQmdvIF4oICBCZ3UgfCAgQmdhICk7IFwKKyAgICBFIyNndSA9ICAgQmd1IF4oICBCZ2EgJiAgQmdlICk7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oICBCa2UgfCAgQmtpICk7IFwKKyAgICBFIyNrZSA9ICAgQmtlIF4oICBCa2kgJiAgQmtvICk7IFwKKyAgICBFIyNraSA9ICAgQmtpIF4oKH5Ca28pJiAgQmt1ICk7IFwKKyAgICBFIyNrbyA9ICh+QmtvKV4oICBCa3UgfCAgQmthICk7IFwKKyAgICBFIyNrdSA9ICAgQmt1IF4oICBCa2EgJiAgQmtlICk7IFwKK1wKKyAgICBBIyNidSBePSBEdTsgXAorICAgIEJtYSA9IFJPTDY0KEEjI2J1LCAyNyk7IFwKKyAgICBBIyNnYSBePSBEYTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBBIyNrZSBePSBEZTsgXAorICAgIEJtaSA9IFJPTDY0KEEjI2tlLCAxMCk7IFwKKyAgICBBIyNtaSBePSBEaTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBBIyNzbyBePSBEbzsgXAorICAgIEJtdSA9IFJPTDY0KEEjI3NvLCA1Nik7IFwKKyAgICBFIyNtYSA9ICAgQm1hIF4oICBCbWUgJiAgQm1pICk7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oICBCbWkgfCAgQm1vICk7IFwKKyAgICBFIyNtaSA9ICAgQm1pIF4oKH5CbW8pfCAgQm11ICk7IFwKKyAgICBFIyNtbyA9ICh+Qm1vKV4oICBCbXUgJiAgQm1hICk7IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oICBCbWEgfCAgQm1lICk7IFwKK1wKKyAgICBBIyNiaSBePSBEaTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBBIyNnbyBePSBEbzsgXAorICAgIEJzZSA9IFJPTDY0KEEjI2dvLCA1NSk7IFwKKyAgICBBIyNrdSBePSBEdTsgXAorICAgIEJzaSA9IFJPTDY0KEEjI2t1LCAzOSk7IFwKKyAgICBBIyNtYSBePSBEYTsgXAorICAgIEJzbyA9IFJPTDY0KEEjI21hLCA0MSk7IFwKKyAgICBBIyNzZSBePSBEZTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NhID0gICBCc2EgXigofkJzZSkmICBCc2kgKTsgXAorICAgIEUjI3NlID0gKH5Cc2UpXiggIEJzaSB8ICBCc28gKTsgXAorICAgIEUjI3NpID0gICBCc2kgXiggIEJzbyAmICBCc3UgKTsgXAorICAgIEUjI3NvID0gICBCc28gXiggIEJzdSB8ICBCc2EgKTsgXAorICAgIEUjI3N1ID0gICBCc3UgXiggIEJzYSAmICBCc2UgKTsgXAorXAorCisjZWxzZSAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworLyogLS0tIENvZGUgZm9yIHJvdW5kLCB3aXRoIHByZXBhcmUtdGhldGEgKi8KKworLyogLS0tIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gNjQtYml0IHdvcmRzICovCisKKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkgXAorICAgIERhID0gQ3VeUk9MNjQoQ2UsIDEpOyBcCisgICAgRGUgPSBDYV5ST0w2NChDaSwgMSk7IFwKKyAgICBEaSA9IENlXlJPTDY0KENvLCAxKTsgXAorICAgIERvID0gQ2leUk9MNjQoQ3UsIDEpOyBcCisgICAgRHUgPSBDb15ST0w2NChDYSwgMSk7IFwKK1wKKyAgICBBIyNiYSBePSBEYTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgQSMjZ2UgXj0gRGU7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2kgXj0gRGk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgQSMjbW8gXj0gRG87IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgQSMjc3UgXj0gRHU7IFwKKyAgICBCYnUgPSBST0w2NChBIyNzdSwgMTQpOyBcCisgICAgRSMjYmEgPSAgIEJiYSBeKCh+QmJlKSYgIEJiaSApOyBcCisgICAgRSMjYmEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXTsgXAorICAgIENhID0gRSMjYmE7IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpJiAgQmJvICk7IFwKKyAgICBDZSA9IEUjI2JlOyBcCisgICAgRSMjYmkgPSAgIEJiaSBeKCh+QmJvKSYgIEJidSApOyBcCisgICAgQ2kgPSBFIyNiaTsgXAorICAgIEUjI2JvID0gICBCYm8gXigofkJidSkmICBCYmEgKTsgXAorICAgIENvID0gRSMjYm87IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oKH5CYmEpJiAgQmJlICk7IFwKKyAgICBDdSA9IEUjI2J1OyBcCitcCisgICAgQSMjYm8gXj0gRG87IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgQSMjZ3UgXj0gRHU7IFwKKyAgICBCZ2UgPSBST0w2NChBIyNndSwgMjApOyBcCisgICAgQSMja2EgXj0gRGE7IFwKKyAgICBCZ2kgPSBST0w2NChBIyNrYSwgMyk7IFwKKyAgICBBIyNtZSBePSBEZTsgXAorICAgIEJnbyA9IFJPTDY0KEEjI21lLCA0NSk7IFwKKyAgICBBIyNzaSBePSBEaTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnYSA9ICAgQmdhIF4oKH5CZ2UpJiAgQmdpICk7IFwKKyAgICBDYSBePSBFIyNnYTsgXAorICAgIEUjI2dlID0gICBCZ2UgXigofkJnaSkmICBCZ28gKTsgXAorICAgIENlIF49IEUjI2dlOyBcCisgICAgRSMjZ2kgPSAgIEJnaSBeKCh+QmdvKSYgIEJndSApOyBcCisgICAgQ2kgXj0gRSMjZ2k7IFwKKyAgICBFIyNnbyA9ICAgQmdvIF4oKH5CZ3UpJiAgQmdhICk7IFwKKyAgICBDbyBePSBFIyNnbzsgXAorICAgIEUjI2d1ID0gICBCZ3UgXigofkJnYSkmICBCZ2UgKTsgXAorICAgIEN1IF49IEUjI2d1OyBcCitcCisgICAgQSMjYmUgXj0gRGU7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBBIyNnaSBePSBEaTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tvIF49IERvOyBcCisgICAgQmtpID0gUk9MNjQoQSMja28sIDI1KTsgXAorICAgIEEjI211IF49IER1OyBcCisgICAgQmtvID0gUk9MNjQoQSMjbXUsIDgpOyBcCisgICAgQSMjc2EgXj0gRGE7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2EgPSAgIEJrYSBeKCh+QmtlKSYgIEJraSApOyBcCisgICAgQ2EgXj0gRSMja2E7IFwKKyAgICBFIyNrZSA9ICAgQmtlIF4oKH5Ca2kpJiAgQmtvICk7IFwKKyAgICBDZSBePSBFIyNrZTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIENpIF49IEUjI2tpOyBcCisgICAgRSMja28gPSAgIEJrbyBeKCh+Qmt1KSYgIEJrYSApOyBcCisgICAgQ28gXj0gRSMja287IFwKKyAgICBFIyNrdSA9ICAgQmt1IF4oKH5Ca2EpJiAgQmtlICk7IFwKKyAgICBDdSBePSBFIyNrdTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXigofkJtZSkmICBCbWkgKTsgXAorICAgIENhIF49IEUjI21hOyBcCisgICAgRSMjbWUgPSAgIEJtZSBeKCh+Qm1pKSYgIEJtbyApOyBcCisgICAgQ2UgXj0gRSMjbWU7IFwKKyAgICBFIyNtaSA9ICAgQm1pIF4oKH5CbW8pJiAgQm11ICk7IFwKKyAgICBDaSBePSBFIyNtaTsgXAorICAgIEUjI21vID0gICBCbW8gXigofkJtdSkmICBCbWEgKTsgXAorICAgIENvIF49IEUjI21vOyBcCisgICAgRSMjbXUgPSAgIEJtdSBeKCh+Qm1hKSYgIEJtZSApOyBcCisgICAgQ3UgXj0gRSMjbXU7IFwKK1wKKyAgICBBIyNiaSBePSBEaTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBBIyNnbyBePSBEbzsgXAorICAgIEJzZSA9IFJPTDY0KEEjI2dvLCA1NSk7IFwKKyAgICBBIyNrdSBePSBEdTsgXAorICAgIEJzaSA9IFJPTDY0KEEjI2t1LCAzOSk7IFwKKyAgICBBIyNtYSBePSBEYTsgXAorICAgIEJzbyA9IFJPTDY0KEEjI21hLCA0MSk7IFwKKyAgICBBIyNzZSBePSBEZTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NhID0gICBCc2EgXigofkJzZSkmICBCc2kgKTsgXAorICAgIENhIF49IEUjI3NhOyBcCisgICAgRSMjc2UgPSAgIEJzZSBeKCh+QnNpKSYgIEJzbyApOyBcCisgICAgQ2UgXj0gRSMjc2U7IFwKKyAgICBFIyNzaSA9ICAgQnNpIF4oKH5Cc28pJiAgQnN1ICk7IFwKKyAgICBDaSBePSBFIyNzaTsgXAorICAgIEUjI3NvID0gICBCc28gXigofkJzdSkmICBCc2EgKTsgXAorICAgIENvIF49IEUjI3NvOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCh+QnNhKSYgIEJzZSApOyBcCisgICAgQ3UgXj0gRSMjc3U7IFwKK1wKKworLyogLS0tIENvZGUgZm9yIHJvdW5kICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXigofkJiZSkmICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpJiAgQmJvICk7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oKH5CYm8pJiAgQmJ1ICk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oKH5CYnUpJiAgQmJhICk7IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oKH5CYmEpJiAgQmJlICk7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXigofkJnZSkmICBCZ2kgKTsgXAorICAgIEUjI2dlID0gICBCZ2UgXigofkJnaSkmICBCZ28gKTsgXAorICAgIEUjI2dpID0gICBCZ2kgXigofkJnbykmICBCZ3UgKTsgXAorICAgIEUjI2dvID0gICBCZ28gXigofkJndSkmICBCZ2EgKTsgXAorICAgIEUjI2d1ID0gICBCZ3UgXigofkJnYSkmICBCZ2UgKTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXigofkJrZSkmICBCa2kgKTsgXAorICAgIEUjI2tlID0gICBCa2UgXigofkJraSkmICBCa28gKTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIEUjI2tvID0gICBCa28gXigofkJrdSkmICBCa2EgKTsgXAorICAgIEUjI2t1ID0gICBCa3UgXigofkJrYSkmICBCa2UgKTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXigofkJtZSkmICBCbWkgKTsgXAorICAgIEUjI21lID0gICBCbWUgXigofkJtaSkmICBCbW8gKTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbykmICBCbXUgKTsgXAorICAgIEUjI21vID0gICBCbW8gXigofkJtdSkmICBCbWEgKTsgXAorICAgIEUjI211ID0gICBCbXUgXigofkJtYSkmICBCbWUgKTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgRSMjc2UgPSAgIEJzZSBeKCh+QnNpKSYgIEJzbyApOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCh+QnNvKSYgIEJzdSApOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCh+QnN1KSYgIEJzYSApOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCh+QnNhKSYgIEJzZSApOyBcCitcCisKKyNlbmRpZiAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworCisjZGVmaW5lIGNvcHlGcm9tU3RhdGUoWCwgc3RhdGUpIFwKKyAgICBYIyNiYSA9IHN0YXRlWyAwXTsgXAorICAgIFgjI2JlID0gc3RhdGVbIDFdOyBcCisgICAgWCMjYmkgPSBzdGF0ZVsgMl07IFwKKyAgICBYIyNibyA9IHN0YXRlWyAzXTsgXAorICAgIFgjI2J1ID0gc3RhdGVbIDRdOyBcCisgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgIFgjI2dpID0gc3RhdGVbIDddOyBcCisgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICBYIyNndSA9IHN0YXRlWyA5XTsgXAorICAgIFgjI2thID0gc3RhdGVbMTBdOyBcCisgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICBYIyNtYSA9IHN0YXRlWzE1XTsgXAorICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICBYIyNzdSA9IHN0YXRlWzI0XTsgXAorCisjZGVmaW5lIGNvcHlUb1N0YXRlKHN0YXRlLCBYKSBcCisgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKworI2RlZmluZSBjb3B5U3RhdGVWYXJpYWJsZXMoWCwgWSkgXAorICAgIFgjI2JhID0gWSMjYmE7IFwKKyAgICBYIyNiZSA9IFkjI2JlOyBcCisgICAgWCMjYmkgPSBZIyNiaTsgXAorICAgIFgjI2JvID0gWSMjYm87IFwKKyAgICBYIyNidSA9IFkjI2J1OyBcCisgICAgWCMjZ2EgPSBZIyNnYTsgXAorICAgIFgjI2dlID0gWSMjZ2U7IFwKKyAgICBYIyNnaSA9IFkjI2dpOyBcCisgICAgWCMjZ28gPSBZIyNnbzsgXAorICAgIFgjI2d1ID0gWSMjZ3U7IFwKKyAgICBYIyNrYSA9IFkjI2thOyBcCisgICAgWCMja2UgPSBZIyNrZTsgXAorICAgIFgjI2tpID0gWSMja2k7IFwKKyAgICBYIyNrbyA9IFkjI2tvOyBcCisgICAgWCMja3UgPSBZIyNrdTsgXAorICAgIFgjI21hID0gWSMjbWE7IFwKKyAgICBYIyNtZSA9IFkjI21lOyBcCisgICAgWCMjbWkgPSBZIyNtaTsgXAorICAgIFgjI21vID0gWSMjbW87IFwKKyAgICBYIyNtdSA9IFkjI211OyBcCisgICAgWCMjc2EgPSBZIyNzYTsgXAorICAgIFgjI3NlID0gWSMjc2U7IFwKKyAgICBYIyNzaSA9IFkjI3NpOyBcCisgICAgWCMjc28gPSBZIyNzbzsgXAorICAgIFgjI3N1ID0gWSMjc3U7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kQWRkKFgsIHN0YXRlLCBpbnB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSA9IHN0YXRlWyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNibyA9IHN0YXRlWyAzXTsgXAorICAgICAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdOyBcCisgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICAgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgIFgjI2JvID0gc3RhdGVbIDNdXmlucHV0WyAzXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF1eaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdXmlucHV0WyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgWCMjZ2kgPSBzdGF0ZVsgN107IFwKKyAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdOyBcCisgICAgICAgICAgICBYIyNndSA9IHN0YXRlWyA5XTsgXAorICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdOyBcCisgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICBYIyNiZSA9IHN0YXRlWyAxXV5pbnB1dFsgMV07IFwKKyAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgICAgICBYIyNnaSA9IHN0YXRlWyA3XV5pbnB1dFsgN107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF1eaW5wdXRbIDhdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXV5pbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICBYIyNndSA9IHN0YXRlWyA5XV5pbnB1dFsgOV07IFwKKyAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXV5pbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICBYIyNrZSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgICAgIFgjI21pID0gc3RhdGVbMTddOyBcCisgICAgICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgIFgjI3NvID0gc3RhdGVbMjNdOyBcCisgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICBYIyNiaSA9IHN0YXRlWyAyXV5pbnB1dFsgMl07IFwKKyAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICBYIyNnYSA9IHN0YXRlWyA1XV5pbnB1dFsgNV07IFwKKyAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICBYIyNrZSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICAgICAgWCMjbWEgPSBzdGF0ZVsxNV1eaW5wdXRbMTVdOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XV5pbnB1dFsxNl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN11eaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNtdSA9IHN0YXRlWzE5XTsgXAorICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgIFgjI21pID0gc3RhdGVbMTddXmlucHV0WzE3XTsgXAorICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgIFgjI211ID0gc3RhdGVbMTldXmlucHV0WzE5XTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdXmlucHV0WzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICAgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV1eaW5wdXRbMTldOyBcCisgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICAgICAgICAgIFgjI3NlID0gc3RhdGVbMjFdXmlucHV0WzIxXTsgXAorICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl1eaW5wdXRbMjJdOyBcCisgICAgICAgICAgICBYIyNzbyA9IHN0YXRlWzIzXV5pbnB1dFsyM107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNSkgeyBcCisgICAgICAgICAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSA9IHN0YXRlWzI0XV5pbnB1dFsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgYWRkSW5wdXQoWCwgaW5wdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPT0gMjEpIHsgXAorICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICBYIyNibyBePSBpbnB1dFsgM107IFwKKyAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICBYIyNnZSBePSBpbnB1dFsgNl07IFwKKyAgICAgICAgWCMjZ2kgXj0gaW5wdXRbIDddOyBcCisgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICBYIyNndSBePSBpbnB1dFsgOV07IFwKKyAgICAgICAgWCMja2EgXj0gaW5wdXRbMTBdOyBcCisgICAgICAgIFgjI2tlIF49IGlucHV0WzExXTsgXAorICAgICAgICBYIyNraSBePSBpbnB1dFsxMl07IFwKKyAgICAgICAgWCMja28gXj0gaW5wdXRbMTNdOyBcCisgICAgICAgIFgjI2t1IF49IGlucHV0WzE0XTsgXAorICAgICAgICBYIyNtYSBePSBpbnB1dFsxNV07IFwKKyAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgWCMjbXUgXj0gaW5wdXRbMTldOyBcCisgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgIH0gXAorICAgIGVsc2UgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IGlucHV0WyA0XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICAgICAgWCMjZ2kgXj0gaW5wdXRbIDddOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICBYIyNndSBePSBpbnB1dFsgOV07IFwKKyAgICAgICAgICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICBYIyNrZSBePSBpbnB1dFsxMV07IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNraSBePSBpbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gaW5wdXRbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgWCMjZ2EgXj0gaW5wdXRbIDVdOyBcCisgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgWCMja2UgXj0gaW5wdXRbMTFdOyBcCisgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgIFgjI21hIF49IGlucHV0WzE1XTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICAgICAgICAgIFgjI21vIF49IGlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgIFgjI211IF49IGlucHV0WzE5XTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSBpbnB1dFsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSBePSBpbnB1dFsyMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICBYIyNtdSBePSBpbnB1dFsxOV07IFwKKyAgICAgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgICAgICAgICAgWCMjc2UgXj0gaW5wdXRbMjFdOyBcCisgICAgICAgICAgICBYIyNzaSBePSBpbnB1dFsyMl07IFwKKyAgICAgICAgICAgIFgjI3NvIF49IGlucHV0WzIzXTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSBpbnB1dFsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKworI2RlZmluZSBjb3B5VG9TdGF0ZUFuZE91dHB1dChYLCBzdGF0ZSwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBvdXRwdXRbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgb3V0cHV0KFgsIG91dHB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNV0gPSBYIyNtYTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyNSkgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQorCisjZGVmaW5lIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBYIyNuYW1lIF49IGlucHV0W2luZGV4XTsgXAorICAgIG91dHB1dFtpbmRleF0gPSBYIyNuYW1lOworCisjZGVmaW5lIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBYIyNuYW1lIF49IGlucHV0W2luZGV4XTsgXAorICAgIG91dHB1dFtpbmRleF0gPSB+WCMjbmFtZTsKKworI2RlZmluZSB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2RlZmluZSB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gfihpbnB1dFtpbmRleF0gXiBYIyNuYW1lKTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsgXAorCisjZWxzZSAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworCisjZGVmaW5lIGNvcHlUb1N0YXRlQW5kT3V0cHV0KFgsIHN0YXRlLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRlWzE1XSA9IFgjI21hOyBcCisgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgb3V0cHV0WzEyXT0gWCMja2k7IFwKKyAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBvdXRwdXQoWCwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgb3V0cHV0W2luZGV4XSA9IGlucHV0W2luZGV4XSBeIFgjI25hbWU7IFwKKyAgICBYIyNuYW1lIF49IG91dHB1dFtpbmRleF07CisKKyNkZWZpbmUgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgb3V0cHV0W2luZGV4XSA9IGlucHV0W2luZGV4XSBeIFgjI25hbWU7IFwKKyAgICBYIyNuYW1lIF49IG91dHB1dFtpbmRleF07CisKKyNlbmRpZgorCisjZGVmaW5lIHdyYXAoWCwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCB0cmFpbGluZ0JpdHMpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEzLCBrbykgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21hIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTEsIGtlKSBcCisgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTQsIGt1KSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTUsIG1hKSBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbXUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMSwgc2UpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMywgc28pIFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNSkgeyBcCisgICAgICAgICAgICAgICAgWCMjc3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyNCwgc3UpIFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgdW53cmFwKFgsIGlucHV0LCBvdXRwdXQsIGxhbmVDb3VudCwgdHJhaWxpbmdCaXRzKSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2d1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEwLCBrYSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEzLCBrbykgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE1LCBtYSkgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbXUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOSwgbXUpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIzLCBzbykgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjQsIHN1KSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZjc2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrUF8xNjAwX1NuUF9oXworI2RlZmluZSBfS2VjY2FrUF8xNjAwX1NuUF9oXworCisvKiogRm9yIHRoZSBkb2N1bWVudGF0aW9uLCBzZWUgU25QLWRvY3VtZW50YXRpb24uaC4KKyAqLworCisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uICAgICAgImluLXBsYWNlIDMyLWJpdCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24iCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlU2l6ZUluQnl0ZXMgICAgMjAwCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlQWxpZ25tZW50ICAgICAgOAorCisjZGVmaW5lIEtlY2Nha1AxNjAwX1N0YXRpY0luaXRpYWxpemUoKQordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KTsKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4OWEzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrUF8xNjAwX1NuUF9oXworI2RlZmluZSBfS2VjY2FrUF8xNjAwX1NuUF9oXworCisvKiogRm9yIHRoZSBkb2N1bWVudGF0aW9uLCBzZWUgU25QLWRvY3VtZW50YXRpb24uaC4KKyAqLworCisvKiAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIiAqLworI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaCIKKworI2RlZmluZSBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbiAgICAgICJnZW5lcmljIDY0LWJpdCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gKCIgS2VjY2FrUDE2MDBfaW1wbGVtZW50YXRpb25fY29uZmlnICIpIgorI2RlZmluZSBLZWNjYWtQMTYwMF9zdGF0ZVNpemVJbkJ5dGVzICAgIDIwMAorI2RlZmluZSBLZWNjYWtQMTYwMF9zdGF0ZUFsaWdubWVudCAgICAgIDgKKyNkZWZpbmUgS2VjY2FrRjE2MDBfRmFzdExvb3Bfc3VwcG9ydGVkCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2RlZmluZSBLZWNjYWtQMTYwMF9TdGF0aWNJbml0aWFsaXplKCkKK3ZvaWQgS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZSh2b2lkICpzdGF0ZSk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZShzdGF0ZSwgYnl0ZSwgb2Zmc2V0KSBcCisgICAgKCh1bnNpZ25lZCBjaGFyKikoc3RhdGUpKVsob2Zmc2V0KV0gXj0gKGJ5dGUpCisjZWxzZQordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyIGRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQpOworI2VuZGlmCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgYnl0ZUNvdW50KTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHModm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOworc2l6ZV90IEtlY2Nha0YxNjAwX0Zhc3RMb29wX0Fic29yYih2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyM2YwOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaApAQCAtMCwwICsxLDcgQEAKKyNpZiBLZWNjYWtPcHQgPT0gNjQKKyAgI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAtb3B0NjQuaCIKKyNlbGlmIEtlY2Nha09wdCA9PSAzMgorICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIgorI2Vsc2UKKyAgI2Vycm9yICJObyBLZWNjYWtPcHQiCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJmOWZmZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jCkBAIC0wLDAgKzEsMTE2MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgICAgPHN0cmluZy5oPgorLyogI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIgKi8KKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisjaW5jbHVkZSAiU25QLVJlbGFuZWQuaCIKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyOworLyogV0FSTklORzogb24gOC1iaXQgYW5kIDE2LWJpdCBwbGF0Zm9ybXMsIHRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5OiAqLworCisvKnR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICBVSU5UMzI7ICovCisKKworI2RlZmluZSBST0wzMihhLCBvZmZzZXQpICgoKChVSU5UMzIpYSkgPDwgKG9mZnNldCkpIF4gKCgoVUlOVDMyKWEpID4+ICgzMi0ob2Zmc2V0KSkpKQorCisvKiBDcmVkaXQgdG8gSGVucnkgUy4gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0LCBBZGRpc29uLVdlc2xleSwgMjAwMiAqLworCisjZGVmaW5lIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICB0ZW1wMCA9IChsb3cpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAxID0gKGhpZ2gpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOworCisjZGVmaW5lIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGV2ZW4gXj0gKHRlbXAwICYgMHgwMDAwRkZGRikgfCAodGVtcDEgPDwgMTYpOyBcCisgICAgICAgIG9kZCBePSAodGVtcDAgPj4gMTYpIHwgKHRlbXAxICYgMHhGRkZGMDAwMCk7CisKKyNkZWZpbmUgdG9CaXRJbnRlcmxlYXZpbmdBbmRBTkQobG93LCBoaWdoLCBldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlVG9CaXRJbnRlcmxlYXZpbmcobG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgZXZlbiAmPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkICY9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworI2RlZmluZSB0b0JpdEludGVybGVhdmluZ0FuZFNldChsb3csIGhpZ2gsIGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBldmVuID0gKHRlbXAwICYgMHgwMDAwRkZGRikgfCAodGVtcDEgPDwgMTYpOyBcCisgICAgICAgIG9kZCA9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworLyogQ3JlZGl0IHRvIEhlbnJ5IFMuIFdhcnJlbiwgSGFja2VyJ3MgRGVsaWdodCwgQWRkaXNvbi1XZXNsZXksIDIwMDIgKi8KKworI2RlZmluZSBwcmVwYXJlRnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICB0ZW1wMCA9IChldmVuKTsgXAorICAgICAgICB0ZW1wMSA9IChvZGQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgdGVtcDEgPSAodGVtcDAgPj4gMTYpIHwgKHRlbXAxICYgMHhGRkZGMDAwMCk7IFwKKyAgICAgICAgdGVtcDAgPSB0ZW1wOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOworCisjZGVmaW5lIGZyb21CaXRJbnRlcmxlYXZpbmcoZXZlbiwgb2RkLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlRnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBsb3cgPSB0ZW1wMDsgXAorICAgICAgICBoaWdoID0gdGVtcDE7CisKKyNkZWZpbmUgZnJvbUJpdEludGVybGVhdmluZ0FuZFhPUihldmVuLCBvZGQsIGxvd0luLCBoaWdoSW4sIGxvd091dCwgaGlnaE91dCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGxvd091dCA9IGxvd0luIF4gdGVtcDA7IFwKKyAgICAgICAgaGlnaE91dCA9IGhpZ2hJbiBeIHRlbXAxOworCit2b2lkIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIG1lbXNldChsYW5lQXNCeXRlcywgMHhGRiwgb2Zmc2V0KTsKKyAgICBtZW1zZXQobGFuZUFzQnl0ZXMrb2Zmc2V0LCAweDAwLCBsZW5ndGgpOworICAgIG1lbXNldChsYW5lQXNCeXRlcytvZmZzZXQrbGVuZ3RoLCAweEZGLCA4LW9mZnNldC1sZW5ndGgpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgbG93ID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgIGhpZ2ggPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisjZWxzZQorICAgIGxvdyA9IGxhbmVBc0J5dGVzWzBdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzNdKSA8PCAyNCk7CisgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s2XSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisjZW5kaWYKKyAgICB0b0JpdEludGVybGVhdmluZ0FuZEFORChsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKQoreworICAgIG1lbXNldChzdGF0ZSwgMCwgMjAwKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uID0gb2Zmc2V0Lzg7CisgICAgdW5zaWduZWQgaW50IG9mZnNldEluTGFuZSA9IG9mZnNldCU4OworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIGlmIChvZmZzZXRJbkxhbmUgPCA0KSB7CisgICAgICAgIGxvdyA9IChVSU5UMzIpYnl0ZSA8PCAob2Zmc2V0SW5MYW5lKjgpOworICAgICAgICBoaWdoID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGxvdyA9IDA7CisgICAgICAgIGhpZ2ggPSAoVUlOVDMyKWJ5dGUgPDwgKChvZmZzZXRJbkxhbmUtNCkqOCk7CisgICAgfQorICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMiswXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIG1lbXNldChsYW5lQXNCeXRlcywgMCwgOCk7CisgICAgbWVtY3B5KGxhbmVBc0J5dGVzK29mZnNldCwgZGF0YSwgbGVuZ3RoKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGxvdyA9ICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKTsKKyAgICBoaWdoID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpOworI2Vsc2UKKyAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1sxXSkgPDwgOCkKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgIGhpZ2ggPSBsYW5lQXNCeXRlc1s0XQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s3XSkgPDwgMjQpOworI2VuZGlmCisgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkTGFuZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBjb25zdCBVSU5UMzIgKiBwSSA9IChjb25zdCBVSU5UMzIgKilkYXRhOworICAgIFVJTlQzMiAqIHBTID0gKFVJTlQzMiopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBtZW1jcHkoJmxvdywgcEkrKywgNCk7CisgICAgICAgIG1lbWNweSgmaGlnaCwgcEkrKywgNCk7CisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKTsKKyNlbHNlCisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKCoocEkrKyksICoocEkrKyksICoocFMrKyksICoocFMrKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lczsKKyAgICAgICAgbWVtY3B5KGxhbmVBc0J5dGVzLCBkYXRhK2xhbmVQb3NpdGlvbio4LCA4KTsKKyAgICAgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICAgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHN0YXRlLCBsYW5lUG9zaXRpb24sIG9mZnNldCwgbGVuZ3RoKTsKKyAgICBLZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgbGFuZVBvc2l0aW9uLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWRhdGE7CisgICAgVUlOVDMyICogcFMgPSAoVUlOVDMyICopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBtZW1jcHkoJmxvdywgcEkrKywgNCk7CisgICAgICAgIG1lbWNweSgmaGlnaCwgcEkrKywgNCk7CisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KGxvdywgaGlnaCwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKTsKKyNlbHNlCisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KCoocEkrKyksICoocEkrKyksICoocFMrKyksICoocFMrKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lczsKKyAgICAgICAgbWVtY3B5KGxhbmVBc0J5dGVzLCBkYXRhK2xhbmVQb3NpdGlvbio4LCA4KTsKKyAgICAgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICAgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMsIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPGJ5dGVDb3VudC84OyBpKyspIHsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lc1tpKjIrMF0gPSAwOworICAgICAgICBzdGF0ZUFzSGFsZkxhbmVzW2kqMisxXSA9IDA7CisgICAgfQorICAgIGlmIChieXRlQ291bnQlOCAhPSAwKQorICAgICAgICBLZWNjYWtQMTYwMF9TZXRCeXRlc0luTGFuZVRvWmVybyhzdGF0ZSwgYnl0ZUNvdW50LzgsIDAsIGJ5dGVDb3VudCU4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisKKyAgICBmcm9tQml0SW50ZXJsZWF2aW5nKHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjJdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcyswKSkgPSBsb3c7CisgICAgKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpID0gaGlnaDsKKyNlbHNlCisgICAgbGFuZUFzQnl0ZXNbMF0gPSBsb3cgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMl0gPSAobG93ID4+IDE2KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbM10gPSAobG93ID4+IDI0KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s1XSA9IChoaWdoID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s2XSA9IChoaWdoID4+IDE2KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworI2VuZGlmCisgICAgbWVtY3B5KGRhdGEsIGxhbmVBc0J5dGVzK29mZnNldCwgbGVuZ3RoKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIFVJTlQzMiAqIHBJID0gKFVJTlQzMiAqKWRhdGE7CisgICAgY29uc3QgVUlOVDMyICogcFMgPSAoIGNvbnN0IFVJTlQzMiAqKXN0YXRlOworICAgIFVJTlQzMiB0LCB4MCwgeDE7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gbGFuZUNvdW50LTE7IGkgPj0gMDsgLS1pKSB7CisjaWZkZWYgTk9fTUlTQUxJR05FRF9BQ0NFU1NFUworICAgICAgICBVSU5UMzIgbG93OworICAgICAgICBVSU5UMzIgaGlnaDsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCBsb3csIGhpZ2gsIHQsIHgwLCB4MSk7CisgICAgICAgIG1lbWNweShwSSsrLCAmbG93LCA0KTsKKyAgICAgICAgbWVtY3B5KHBJKyssICZoaWdoLCA0KTsKKyNlbHNlCisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoKihwUysrKSwgKihwUysrKSwgKihwSSsrKSwgKihwSSsrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMF0gPSBsb3cgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1sxXSA9IChsb3cgPj4gOCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbM10gPSAobG93ID4+IDI0KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzRdID0gaGlnaCAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s2XSA9IChoaWdoID4+IDE2KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzddID0gKGhpZ2ggPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbWVtY3B5KGRhdGErbGFuZVBvc2l0aW9uKjgsIGxhbmVBc0J5dGVzLCA4KTsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKSA9IGxvdzsKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSkgPSBoaWdoOworI2Vsc2UKKyAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisjZW5kaWYKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICBvdXRwdXRbaV0gPSBpbnB1dFtpXSBeIGxhbmVBc0J5dGVzW29mZnNldCtpXTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWlucHV0OworICAgIFVJTlQzMiAqIHBPID0gKFVJTlQzMiAqKW91dHB1dDsKKyAgICBjb25zdCBVSU5UMzIgKiBwUyA9IChjb25zdCBVSU5UMzIgKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoKihwUysrKSwgKihwUysrKSwgbG93LCBoaWdoLCB0LCB4MCwgeDEpOworICAgICAgICAqKHBPKyspID0gKihwSSsrKSBeIGxvdzsKKyAgICAgICAgKihwTysrKSA9ICoocEkrKykgXiBoaWdoOworI2Vsc2UKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZ0FuZFhPUigqKHBTKyspLCAqKHBTKyspLCAqKHBJKyspLCAqKHBJKyspLCAqKHBPKyspLCAqKHBPKyspLCB0LCB4MCwgeDEpCisjZW5kaWYKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisgICAgZm9yKGxhbmVQb3NpdGlvbj0wOyBsYW5lUG9zaXRpb248bGFuZUNvdW50OyBsYW5lUG9zaXRpb24rKykgeworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgICAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgICAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworICAgICAgICAoKFVJTlQzMiopKG91dHB1dCtsYW5lUG9zaXRpb24qOCkpWzBdID0gKChVSU5UMzIqKShpbnB1dCtsYW5lUG9zaXRpb24qOCkpWzBdIF4gKCooY29uc3QgVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgICAgICAoKFVJTlQzMiopKG91dHB1dCtsYW5lUG9zaXRpb24qOCkpWzFdID0gKChVSU5UMzIqKShpbnB1dCtsYW5lUG9zaXRpb24qOCkpWzBdIF4gKCooY29uc3QgVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpOworICAgIH0KKyNlbmRpZgorfQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyBjb25zdCBVSU5UMzIgS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyWzIqMjQrMV0gPQoreworICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDA4OVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4YlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODA4MFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwMDA4YlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwODA4OFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4MlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDAwYlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDAwYVVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODA4MlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwODAwM1VMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODA4YlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDAwYlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4YVVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDAwOFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDA4M1VMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODAwM1VMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwODA4OFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4OFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODA4MlVMLAorICAgIDB4MDAwMDAwRkZVTAorfTsKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMCgpIFwKKyAgICAgICAgQ3ggPSBBYnUwXkFndTBeQWt1MF5BbXUwXkFzdTA7IFwKKyAgICAgICAgRHUxID0gQWJlMV5BZ2UxXkFrZTFeQW1lMV5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYnUxXkFndTFeQWt1MV5BbXUxXkFzdTE7IFwKKyAgICAgICAgRHUwID0gQWJlMF5BZ2UwXkFrZTBeQW1lMF5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFiaTBeQWdpMF5Ba2kwXkFtaTBeQXNpMDsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBYmkxXkFnaTFeQWtpMV5BbWkxXkFzaTE7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFnYTBeQWthMF5BbWEwXkFzYTA7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5BZ2ExXkFrYTFeQW1hMV5Bc2ExOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQWJvMV5BZ28xXkFrbzFeQW1vMV5Bc28xOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBYm8wXkFnbzBeQWtvMF5BbW8wXkFzbzA7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQxKCkgXAorICAgICAgICBDeCA9IEFzdTBeQWd1MF5BbXUwXkFidTFeQWt1MTsgXAorICAgICAgICBEdTEgPSBBZ2UxXkFtZTBeQWJlMF5Ba2UxXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFzdTFeQWd1MV5BbXUxXkFidTBeQWt1MDsgXAorICAgICAgICBEdTAgPSBBZ2UwXkFtZTFeQWJlMV5Ba2UwXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQWtpMV5Bc2kxXkFnaTBeQW1pMV5BYmkwOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFraTBeQXNpMF5BZ2kxXkFtaTBeQWJpMTsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQWthMV5Bc2EwXkFnYTBeQW1hMTsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFrYTBeQXNhMV5BZ2ExXkFtYTA7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBbW8wXkFibzFeQWtvMF5Bc28xXkFnbzA7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFtbzFeQWJvMF5Ba28xXkFzbzBeQWdvMTsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKKyNkZWZpbmUgS2VjY2FrQXRvRF9yb3VuZDIoKSBcCisgICAgICAgIEN4ID0gQWt1MV5BZ3UwXkFidTFeQXN1MV5BbXUxOyBcCisgICAgICAgIER1MSA9IEFtZTBeQWtlMF5BZ2UwXkFiZTBeQXNlMTsgXAorICAgICAgICBEYTAgPSBDeF5ST0wzMihEdTEsIDEpOyBcCisgICAgICAgIEN6ID0gQWt1MF5BZ3UxXkFidTBeQXN1MF5BbXUwOyBcCisgICAgICAgIER1MCA9IEFtZTFeQWtlMV5BZ2UxXkFiZTFeQXNlMDsgXAorICAgICAgICBEYTEgPSBDel5EdTA7IFwKK1wKKyAgICAgICAgQ3cgPSBBZ2kxXkFiaTFeQXNpMV5BbWkwXkFraTE7IFwKKyAgICAgICAgRG8wID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIEN5ID0gQWdpMF5BYmkwXkFzaTBeQW1pMV5Ba2kwOyBcCisgICAgICAgIERvMSA9IEN5XkN4OyBcCitcCisgICAgICAgIEN4ID0gQWJhMF5Bc2ExXkFtYTFeQWthMV5BZ2ExOyBcCisgICAgICAgIERlMCA9IEN4XlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDeiA9IEFiYTFeQXNhMF5BbWEwXkFrYTBeQWdhMDsgXAorICAgICAgICBEZTEgPSBDel5DdzsgXAorXAorICAgICAgICBDeSA9IEFzbzBeQW1vMF5Ba28xXkFnbzBeQWJvMDsgXAorICAgICAgICBEaTAgPSBEdTBeUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN3ID0gQXNvMV5BbW8xXkFrbzBeQWdvMV5BYm8xOyBcCisgICAgICAgIERpMSA9IER1MV5DdzsgXAorXAorICAgICAgICBEdTAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgRHUxID0gQ3leQ3g7IFwKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMygpIFwKKyAgICAgICAgQ3ggPSBBbXUxXkFndTBeQXN1MV5Ba3UwXkFidTA7IFwKKyAgICAgICAgRHUxID0gQWtlMF5BYmUxXkFtZTFeQWdlMF5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBbXUwXkFndTFeQXN1MF5Ba3UxXkFidTE7IFwKKyAgICAgICAgRHUwID0gQWtlMV5BYmUwXkFtZTBeQWdlMV5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFzaTBeQWtpMF5BYmkxXkFtaTFeQWdpMTsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBc2kxXkFraTFeQWJpMF5BbWkwXkFnaTA7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFtYTBeQWdhMV5Bc2ExXkFrYTA7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5BbWExXkFnYTBeQXNhMF5Ba2ExOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQWdvMV5Bc28wXkFrbzBeQWJvMF5BbW8xOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBZ28wXkFzbzFeQWtvMV5BYm8xXkFtbzA7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IG5Sb3VuZHMpCit7CisgICAgeworICAgICAgICBVSU5UMzIgRGEwLCBEZTAsIERpMCwgRG8wLCBEdTA7CisgICAgICAgIFVJTlQzMiBEYTEsIERlMSwgRGkxLCBEbzEsIER1MTsKKyAgICAgICAgVUlOVDMyIENhMCwgQ2UwLCBDaTAsIENvMCwgQ3UwOworICAgICAgICBVSU5UMzIgQ3gsIEN5LCBDeiwgQ3c7CisgICAgICAgICNkZWZpbmUgQmEgQ2EwCisgICAgICAgICNkZWZpbmUgQmUgQ2UwCisgICAgICAgICNkZWZpbmUgQmkgQ2kwCisgICAgICAgICNkZWZpbmUgQm8gQ28wCisgICAgICAgICNkZWZpbmUgQnUgQ3UwCisgICAgICAgIGNvbnN0IFVJTlQzMiAqcFJvdW5kQ29uc3RhbnRzID0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyKygyNC1uUm91bmRzKSoyOworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgI2RlZmluZSBBYmEwIHN0YXRlQXNIYWxmTGFuZXNbIDBdCisgICAgICAgICNkZWZpbmUgQWJhMSBzdGF0ZUFzSGFsZkxhbmVzWyAxXQorICAgICAgICAjZGVmaW5lIEFiZTAgc3RhdGVBc0hhbGZMYW5lc1sgMl0KKyAgICAgICAgI2RlZmluZSBBYmUxIHN0YXRlQXNIYWxmTGFuZXNbIDNdCisgICAgICAgICNkZWZpbmUgQWJpMCBzdGF0ZUFzSGFsZkxhbmVzWyA0XQorICAgICAgICAjZGVmaW5lIEFiaTEgc3RhdGVBc0hhbGZMYW5lc1sgNV0KKyAgICAgICAgI2RlZmluZSBBYm8wIHN0YXRlQXNIYWxmTGFuZXNbIDZdCisgICAgICAgICNkZWZpbmUgQWJvMSBzdGF0ZUFzSGFsZkxhbmVzWyA3XQorICAgICAgICAjZGVmaW5lIEFidTAgc3RhdGVBc0hhbGZMYW5lc1sgOF0KKyAgICAgICAgI2RlZmluZSBBYnUxIHN0YXRlQXNIYWxmTGFuZXNbIDldCisgICAgICAgICNkZWZpbmUgQWdhMCBzdGF0ZUFzSGFsZkxhbmVzWzEwXQorICAgICAgICAjZGVmaW5lIEFnYTEgc3RhdGVBc0hhbGZMYW5lc1sxMV0KKyAgICAgICAgI2RlZmluZSBBZ2UwIHN0YXRlQXNIYWxmTGFuZXNbMTJdCisgICAgICAgICNkZWZpbmUgQWdlMSBzdGF0ZUFzSGFsZkxhbmVzWzEzXQorICAgICAgICAjZGVmaW5lIEFnaTAgc3RhdGVBc0hhbGZMYW5lc1sxNF0KKyAgICAgICAgI2RlZmluZSBBZ2kxIHN0YXRlQXNIYWxmTGFuZXNbMTVdCisgICAgICAgICNkZWZpbmUgQWdvMCBzdGF0ZUFzSGFsZkxhbmVzWzE2XQorICAgICAgICAjZGVmaW5lIEFnbzEgc3RhdGVBc0hhbGZMYW5lc1sxN10KKyAgICAgICAgI2RlZmluZSBBZ3UwIHN0YXRlQXNIYWxmTGFuZXNbMThdCisgICAgICAgICNkZWZpbmUgQWd1MSBzdGF0ZUFzSGFsZkxhbmVzWzE5XQorICAgICAgICAjZGVmaW5lIEFrYTAgc3RhdGVBc0hhbGZMYW5lc1syMF0KKyAgICAgICAgI2RlZmluZSBBa2ExIHN0YXRlQXNIYWxmTGFuZXNbMjFdCisgICAgICAgICNkZWZpbmUgQWtlMCBzdGF0ZUFzSGFsZkxhbmVzWzIyXQorICAgICAgICAjZGVmaW5lIEFrZTEgc3RhdGVBc0hhbGZMYW5lc1syM10KKyAgICAgICAgI2RlZmluZSBBa2kwIHN0YXRlQXNIYWxmTGFuZXNbMjRdCisgICAgICAgICNkZWZpbmUgQWtpMSBzdGF0ZUFzSGFsZkxhbmVzWzI1XQorICAgICAgICAjZGVmaW5lIEFrbzAgc3RhdGVBc0hhbGZMYW5lc1syNl0KKyAgICAgICAgI2RlZmluZSBBa28xIHN0YXRlQXNIYWxmTGFuZXNbMjddCisgICAgICAgICNkZWZpbmUgQWt1MCBzdGF0ZUFzSGFsZkxhbmVzWzI4XQorICAgICAgICAjZGVmaW5lIEFrdTEgc3RhdGVBc0hhbGZMYW5lc1syOV0KKyAgICAgICAgI2RlZmluZSBBbWEwIHN0YXRlQXNIYWxmTGFuZXNbMzBdCisgICAgICAgICNkZWZpbmUgQW1hMSBzdGF0ZUFzSGFsZkxhbmVzWzMxXQorICAgICAgICAjZGVmaW5lIEFtZTAgc3RhdGVBc0hhbGZMYW5lc1szMl0KKyAgICAgICAgI2RlZmluZSBBbWUxIHN0YXRlQXNIYWxmTGFuZXNbMzNdCisgICAgICAgICNkZWZpbmUgQW1pMCBzdGF0ZUFzSGFsZkxhbmVzWzM0XQorICAgICAgICAjZGVmaW5lIEFtaTEgc3RhdGVBc0hhbGZMYW5lc1szNV0KKyAgICAgICAgI2RlZmluZSBBbW8wIHN0YXRlQXNIYWxmTGFuZXNbMzZdCisgICAgICAgICNkZWZpbmUgQW1vMSBzdGF0ZUFzSGFsZkxhbmVzWzM3XQorICAgICAgICAjZGVmaW5lIEFtdTAgc3RhdGVBc0hhbGZMYW5lc1szOF0KKyAgICAgICAgI2RlZmluZSBBbXUxIHN0YXRlQXNIYWxmTGFuZXNbMzldCisgICAgICAgICNkZWZpbmUgQXNhMCBzdGF0ZUFzSGFsZkxhbmVzWzQwXQorICAgICAgICAjZGVmaW5lIEFzYTEgc3RhdGVBc0hhbGZMYW5lc1s0MV0KKyAgICAgICAgI2RlZmluZSBBc2UwIHN0YXRlQXNIYWxmTGFuZXNbNDJdCisgICAgICAgICNkZWZpbmUgQXNlMSBzdGF0ZUFzSGFsZkxhbmVzWzQzXQorICAgICAgICAjZGVmaW5lIEFzaTAgc3RhdGVBc0hhbGZMYW5lc1s0NF0KKyAgICAgICAgI2RlZmluZSBBc2kxIHN0YXRlQXNIYWxmTGFuZXNbNDVdCisgICAgICAgICNkZWZpbmUgQXNvMCBzdGF0ZUFzSGFsZkxhbmVzWzQ2XQorICAgICAgICAjZGVmaW5lIEFzbzEgc3RhdGVBc0hhbGZMYW5lc1s0N10KKyAgICAgICAgI2RlZmluZSBBc3UwIHN0YXRlQXNIYWxmTGFuZXNbNDhdCisgICAgICAgICNkZWZpbmUgQXN1MSBzdGF0ZUFzSGFsZkxhbmVzWzQ5XQorCisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIC0tLSBDb2RlIGZvciA0IHJvdW5kcyAqLworCisgICAgICAgICAgICAvKiAtLS0gdXNpbmcgZmFjdG9yIDIgaW50ZXJsZWF2aW5nLCA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDMyLWJpdCB3b3JkcyAqLworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMCgpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2UwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFraTFeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1vMV5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc3UwXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWdlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnZTFeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtpMF5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbW8wXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzdTFeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWthMV5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtZTFeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYm8wXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQWthMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWthMF5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNpMF5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYm8xXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNhMF5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFiZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2kwXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMV5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbXUwXkR1MCksIDQpOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNhMV5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFiZTBeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnaTFeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28wXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtdTFeRHUxKSwgNCk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2EwXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrZTBeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkxXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNvMF5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYnUxXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnYTFeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtlMV5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTBeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc28xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFidTBeRHUwKSwgMTMpOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1hMV5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJpMF5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ28xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrdTFeRHUxKSwgMjApOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1hMF5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ28wXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrdTBeRHUwKSwgMTkpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgS2VjY2FrQXRvRF9yb3VuZDEoKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMF5EYTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1lMV5EZTApLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2kxXkRpMSksIDIyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFzbzFeRG8xKSwgMTEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWt1MV5EdTApLCA3KTsKKyAgICAgICAgICAgIEFiYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMCBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCYSA9IChBYmExXkRhMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWUwXkRlMSksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnaTBeRGkwKSwgMjEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNvMF5EbzApLCAxMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa3UwXkR1MSksIDcpOworICAgICAgICAgICAgQWJhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmExIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzYTFeRGExKSwgMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2UxXkRlMSksIDIzKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFiaTFeRGkxKSwgMzEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1vMV5EbzApLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UwXkR1MCksIDEwKTsKKyAgICAgICAgICAgIEFzYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzYTBeRGEwKSwgMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2UwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFiaTBeRGkwKSwgMzApOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1vMF5EbzEpLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UxXkR1MSksIDEwKTsKKyAgICAgICAgICAgIEFzYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtYTFeRGEwKSwgOSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNpMV5EaTApLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8xKSwgMTMpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJ1MV5EdTApLCA0KTsKKyAgICAgICAgICAgIEFtYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWdlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBc2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtYTBeRGExKSwgOSk7CisgICAgICAgICAgICBCYSA9IChBZ2UwXkRlMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2kwXkRpMSksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMV5EbzApLCAxMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYnUwXkR1MSksIDQpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQWthMV5EYTApLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYmUxXkRlMCksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTEpLCA4KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnbzFeRG8wKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXN1MV5EdTEpLCAxNCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2EwXkRhMSksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiZTBeRGUxKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkxXkRpMCksIDcpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdvMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc3UwXkR1MCksIDEzKTsKKyAgICAgICAgICAgIEFrYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnYTFeRGExKSwgMjEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMF5EZTApLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFraTFeRGkwKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJvMV5EbzEpLCAyOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbXUxXkR1MSksIDIwKTsKKyAgICAgICAgICAgIEFnYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnYTBeRGEwKSwgMjApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFraTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJvMF5EbzApLCAyNyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbXUwXkR1MCksIDE5KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQyKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFrZTFeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNpMF5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBZ28wXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtdTFeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtlMF5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBc2kxXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnbzFeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW11MF5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFrZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWEwXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJlMF5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzbzFeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWExXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2kxXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzbzBeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2ExXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1lMF5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiaTFeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFzdTFeRHUwKSwgNCk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2EwXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQW1lMV5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJpMF5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXN1MF5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzYTFeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdlMV5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBYm8xXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFrdTBeRHUxKSwgMTQpOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNhMF5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2UwXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFibzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWt1MV5EdTApLCAxMyk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2EwXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2kxXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtbzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJ1MF5EdTEpLCAyMCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2ExXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtbzFeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJ1MV5EdTApLCAxOSk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMygpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYmUwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiaTBeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJvMF5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBYnUwXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiZTFeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJpMV5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYm8xXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFidTFeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBYmUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdhMF5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnZTBeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdpMF5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ28wXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdhMV5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnZTFeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdpMV5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ28xXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQWthMF5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFrZTBeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2kwXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa3UwXkR1MCksIDQpOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQWthMV5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFrZTFeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFraTFeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrdTFeRHUxKSwgNCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWEwXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtZTBeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1vMF5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbXUwXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFtYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtYTFeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQW1lMV5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbW8xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFtdTFeRHUwKSwgMTMpOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNhMF5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNpMF5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc28wXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzdTBeRHUxKSwgMjApOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNhMV5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc28xXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzdTFeRHUwKSwgMTkpOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoICpwUm91bmRDb25zdGFudHMgIT0gMHhGRiApOworCisgICAgICAgICN1bmRlZiBBYmEwCisgICAgICAgICN1bmRlZiBBYmExCisgICAgICAgICN1bmRlZiBBYmUwCisgICAgICAgICN1bmRlZiBBYmUxCisgICAgICAgICN1bmRlZiBBYmkwCisgICAgICAgICN1bmRlZiBBYmkxCisgICAgICAgICN1bmRlZiBBYm8wCisgICAgICAgICN1bmRlZiBBYm8xCisgICAgICAgICN1bmRlZiBBYnUwCisgICAgICAgICN1bmRlZiBBYnUxCisgICAgICAgICN1bmRlZiBBZ2EwCisgICAgICAgICN1bmRlZiBBZ2ExCisgICAgICAgICN1bmRlZiBBZ2UwCisgICAgICAgICN1bmRlZiBBZ2UxCisgICAgICAgICN1bmRlZiBBZ2kwCisgICAgICAgICN1bmRlZiBBZ2kxCisgICAgICAgICN1bmRlZiBBZ28wCisgICAgICAgICN1bmRlZiBBZ28xCisgICAgICAgICN1bmRlZiBBZ3UwCisgICAgICAgICN1bmRlZiBBZ3UxCisgICAgICAgICN1bmRlZiBBa2EwCisgICAgICAgICN1bmRlZiBBa2ExCisgICAgICAgICN1bmRlZiBBa2UwCisgICAgICAgICN1bmRlZiBBa2UxCisgICAgICAgICN1bmRlZiBBa2kwCisgICAgICAgICN1bmRlZiBBa2kxCisgICAgICAgICN1bmRlZiBBa28wCisgICAgICAgICN1bmRlZiBBa28xCisgICAgICAgICN1bmRlZiBBa3UwCisgICAgICAgICN1bmRlZiBBa3UxCisgICAgICAgICN1bmRlZiBBbWEwCisgICAgICAgICN1bmRlZiBBbWExCisgICAgICAgICN1bmRlZiBBbWUwCisgICAgICAgICN1bmRlZiBBbWUxCisgICAgICAgICN1bmRlZiBBbWkwCisgICAgICAgICN1bmRlZiBBbWkxCisgICAgICAgICN1bmRlZiBBbW8wCisgICAgICAgICN1bmRlZiBBbW8xCisgICAgICAgICN1bmRlZiBBbXUwCisgICAgICAgICN1bmRlZiBBbXUxCisgICAgICAgICN1bmRlZiBBc2EwCisgICAgICAgICN1bmRlZiBBc2ExCisgICAgICAgICN1bmRlZiBBc2UwCisgICAgICAgICN1bmRlZiBBc2UxCisgICAgICAgICN1bmRlZiBBc2kwCisgICAgICAgICN1bmRlZiBBc2kxCisgICAgICAgICN1bmRlZiBBc28wCisgICAgICAgICN1bmRlZiBBc28xCisgICAgICAgICN1bmRlZiBBc3UwCisgICAgICAgICN1bmRlZiBBc3UxCisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcyh2b2lkICpzdGF0ZSkKK3sKKyAgICAgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzKHN0YXRlLCAxMik7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgICBLZWNjYWtQMTYwMF9QZXJtdXRlX05yb3VuZHMoc3RhdGUsIDI0KTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTAxYzY0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oCkBAIC0wLDAgKzEsMyBAQAorI2RlZmluZSBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbl9jb25maWcgImxhbmUgY29tcGxlbWVudGluZywgYWxsIHJvdW5kcyB1bnJvbGxlZCIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworI2RlZmluZSBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTAwMTBkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LmMKQEAgLTAsMCArMSw0NzQgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKy8qICNpbmNsdWRlICJicmdfZW5kaWFuLmgiICovCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIgorCisjaWYgTk9UX1BZVEhPTgordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OworLyogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IFVJTlQ2NDsgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZChLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZykKKyNkZWZpbmUgVXNlQmViaWdva2ltaXNhCisjZW5kaWYKKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIFJPTDY0KGEsIG9mZnNldCkgX3JvdGw2NChhLCBvZmZzZXQpCisjZWxpZiBkZWZpbmVkKEtlY2Nha1AxNjAwX3VzZVNITEQpCisgICAgI2RlZmluZSBST0w2NCh4LE4pICh7IFwKKyAgICByZWdpc3RlciBVSU5UNjQgX19vdXQ7IFwKKyAgICByZWdpc3RlciBVSU5UNjQgX19pbiA9IHg7IFwKKyAgICBfX2FzbV9fICgic2hsZCAlMiwlMCwlMCIgOiAiPXIiKF9fb3V0KSA6ICIwIihfX2luKSwgImkiKE4pKTsgXAorICAgIF9fb3V0OyBcCisgICAgfSkKKyNlbHNlCisjZGVmaW5lIFJPTDY0KGEsIG9mZnNldCkgKCgoKFVJTlQ2NClhKSA8PCBvZmZzZXQpIF4gKCgoVUlOVDY0KWEpID4+ICg2NC1vZmZzZXQpKSkKKyNlbmRpZgorCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLTY0Lm1hY3JvcyIKKyNpZmRlZiBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisjZGVmaW5lIEZ1bGxVbnJvbGxpbmcKKyNlbHNlCisjZGVmaW5lIFVucm9sbGluZyBLZWNjYWtQMTYwMF91bnJvbGxpbmcKKyNlbmRpZgorI2luY2x1ZGUgIktlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zIgorI2luY2x1ZGUgIlNuUC1SZWxhbmVkLmgiCisKK3N0YXRpYyBjb25zdCBVSU5UNjQgS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1syNF0gPSB7CisgICAgMHgwMDAwMDAwMDAwMDAwMDAxVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODA4MlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwOGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDAwVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODA4YlVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMDFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDgxVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwOVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDAwOGFVTEwsCisgICAgMHgwMDAwMDAwMDAwMDAwMDg4VUxMLAorICAgIDB4MDAwMDAwMDA4MDAwODAwOVVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMGFVTEwsCisgICAgMHgwMDAwMDAwMDgwMDA4MDhiVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwMDA4YlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwODlVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDAzVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwMlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDAwODBVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDBhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwMDAwYVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwODFVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDgwVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwMVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwMDhVTEwgfTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpCit7CisgICAgbWVtc2V0KHN0YXRlLCAwLCAyMDApOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgKChVSU5UNjQqKXN0YXRlKVsgMV0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbIDJdID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWyA4XSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsxMl0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbMTddID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWzIwXSA9IH4oVUlOVDY0KTA7CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgVUlOVDY0IGxhbmU7CisgICAgaWYgKGxlbmd0aCA9PSAwKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICBsYW5lID0gZGF0YVswXTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGFuZSA9IDA7CisgICAgICAgIG1lbWNweSgmbGFuZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisgICAgbGFuZSA8PD0gb2Zmc2V0Kjg7CisjZWxzZQorICAgIFVJTlQ2NCBsYW5lID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICBsYW5lIHw9ICgoVUlOVDY0KWRhdGFbaV0pIDw8ICgoaStvZmZzZXQpKjgpOworI2VuZGlmCisgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dIF49IGxhbmU7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHVuc2lnbmVkIGludCBpID0gMDsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgLyogSWYgZWl0aGVyIHBvaW50ZXIgaXMgbWlzYWxpZ25lZCwgZmFsbCBiYWNrIHRvIGJ5dGUtd2lzZSB4b3IuICovCisKKyAgICBpZiAoKCgoKHVpbnRwdHJfdClzdGF0ZSkgJiA3KSAhPSAwKSB8fCAoKCgodWludHB0cl90KWRhdGEpICYgNykgIT0gMCkpIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBsYW5lQ291bnQgKiA4OyBpKyspIHsKKyAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilzdGF0ZSlbaV0gXj0gZGF0YVtpXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgLyogT3RoZXJ3aXNlLi4uICovCisKKyAgICAgIGZvciggOyAoaSs4KTw9bGFuZUNvdW50OyBpKz04KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsxXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsxXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMl0gXj0gKChVSU5UNjQqKWRhdGEpW2krMl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzNdIF49ICgoVUlOVDY0KilkYXRhKVtpKzNdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs0XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs0XTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krNV0gXj0gKChVSU5UNjQqKWRhdGEpW2krNV07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzZdIF49ICgoVUlOVDY0KilkYXRhKVtpKzZdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs3XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs3XTsKKyAgICAgIH0KKyAgICAgIGZvciggOyAoaSs0KTw9bGFuZUNvdW50OyBpKz00KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsxXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsxXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMl0gXj0gKChVSU5UNjQqKWRhdGEpW2krMl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzNdIF49ICgoVUlOVDY0KilkYXRhKVtpKzNdOworICAgICAgfQorICAgICAgZm9yKCA7IChpKzIpPD1sYW5lQ291bnQ7IGkrPTIpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgfQorICAgICAgaWYgKGk8bGFuZUNvdW50KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgVUlOVDggKmN1ckRhdGEgPSBkYXRhOworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyssIGN1ckRhdGErPTgpIHsKKyAgICAgICAgVUlOVDY0IGxhbmUgPSAoVUlOVDY0KWN1ckRhdGFbMF0KKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVsxXSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzJdIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzNdIDw8IDI0KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzRdIDw8MzIpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNV0gPDwgNDApCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNl0gPDwgNDgpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbN10gPDwgNTYpOworICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2ldIF49IGxhbmU7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2lmIChQTEFURk9STV9CWVRFX09SREVSICE9IElTX0xJVFRMRV9FTkRJQU4pCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9IGJ5dGU7CisgICAgbGFuZSA8PD0gKG9mZnNldCU4KSo4OworICAgICgoVUlOVDY0KilzdGF0ZSlbb2Zmc2V0LzhdIF49IGxhbmU7Cit9CisjZW5kaWYKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0FkZExhbmVzLCBLZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlc0luTGFuZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilzdGF0ZSlbbGFuZVBvc2l0aW9uKjgrb2Zmc2V0K2ldID0gfmRhdGFbaV07CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgICAgbWVtY3B5KCh1bnNpZ25lZCBjaGFyKilzdGF0ZStsYW5lUG9zaXRpb24qOCtvZmZzZXQsIGRhdGEsIGxlbmd0aCk7CisgICAgfQorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKQorICAgICAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpCisgICAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gPSB+KChjb25zdCBVSU5UNjQqKWRhdGEpW2xhbmVQb3NpdGlvbl07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9ICgoY29uc3QgVUlOVDY0KilkYXRhKVtsYW5lUG9zaXRpb25dOworI2Vsc2UKKyAgICBtZW1jcHkoc3RhdGUsIGRhdGEsIGxhbmVDb3VudCo4KTsKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMsIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxieXRlQ291bnQvODsgbGFuZVBvc2l0aW9uKyspCisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IH4wOworICAgICAgICBlbHNlCisgICAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gPSAwOworICAgIGlmIChieXRlQ291bnQlOCAhPSAwKSB7CisgICAgICAgIGxhbmVQb3NpdGlvbiA9IGJ5dGVDb3VudC84OworICAgICAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpCisgICAgICAgICAgICBtZW1zZXQoKHVuc2lnbmVkIGNoYXIqKXN0YXRlK2xhbmVQb3NpdGlvbio4LCAweEZGLCBieXRlQ291bnQlOCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbXNldCgodW5zaWduZWQgY2hhciopc3RhdGUrbGFuZVBvc2l0aW9uKjgsIDAsIGJ5dGVDb3VudCU4KTsKKyAgICB9CisjZWxzZQorICAgIG1lbXNldChzdGF0ZSwgMCwgYnl0ZUNvdW50KTsKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICAjaWZuZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAjZW5kaWYKKyAgICBVSU5UNjQgKnN0YXRlQXNMYW5lcyA9IChVSU5UNjQqKXN0YXRlOworCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZUFzTGFuZXMpCisgICAgcm91bmRzMjQKKyAgICBjb3B5VG9TdGF0ZShzdGF0ZUFzTGFuZXMsIEEpCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICByb3VuZHMxMgorICAgIGNvcHlUb1N0YXRlKHN0YXRlQXNMYW5lcywgQSkKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9ICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXTsKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgbGFuZSA9IH5sYW5lOworI2VuZGlmCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICB7CisgICAgICAgIFVJTlQ2NCBsYW5lMVsxXTsKKyAgICAgICAgbGFuZTFbMF0gPSBsYW5lOworICAgICAgICBtZW1jcHkoZGF0YSwgKFVJTlQ4KilsYW5lMStvZmZzZXQsIGxlbmd0aCk7CisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBsYW5lID4+PSBvZmZzZXQqODsKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGRhdGFbaV0gPSBsYW5lICYgMHhGRjsKKyAgICAgICAgbGFuZSA+Pj0gODsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKK3ZvaWQgZnJvbVdvcmRUb0J5dGVzKFVJTlQ4ICpieXRlcywgY29uc3QgVUlOVDY0IHdvcmQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPCg2NC84KTsgaSsrKQorICAgICAgICBieXRlc1tpXSA9ICh3b3JkID4+ICg4KmkpKSAmIDB4RkY7Cit9CisjZW5kaWYKKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0TGFuZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBtZW1jcHkoZGF0YSwgc3RhdGUsIGxhbmVDb3VudCo4KTsKKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPGxhbmVDb3VudDsgaSsrKQorICAgICAgICBmcm9tV29yZFRvQnl0ZXMoZGF0YSsoaSo4KSwgKChjb25zdCBVSU5UNjQqKXN0YXRlKVtpXSk7CisjZW5kaWYKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmIChsYW5lQ291bnQgPiAxKSB7CisgICAgICAgICgoVUlOVDY0KilkYXRhKVsgMV0gPSB+KChVSU5UNjQqKWRhdGEpWyAxXTsKKyAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIpIHsKKyAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsgMl0gPSB+KChVSU5UNjQqKWRhdGEpWyAyXTsKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiA4KSB7CisgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWyA4XSA9IH4oKFVJTlQ2NCopZGF0YSlbIDhdOworICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxMikgeworICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMTJdID0gfigoVUlOVDY0KilkYXRhKVsxMl07CisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxNykgeworICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWzE3XSA9IH4oKFVJTlQ2NCopZGF0YSlbMTddOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWzIwXSA9IH4oKFVJTlQ2NCopZGF0YSlbMjBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcywgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9ICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXTsKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgbGFuZSA9IH5sYW5lOworI2VuZGlmCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICBVSU5UNjQgbGFuZTFbMV07CisgICAgICAgIGxhbmUxWzBdID0gbGFuZTsKKyAgICAgICAgZm9yKGk9MDsgaTxsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG91dHB1dFtpXSA9IGlucHV0W2ldIF4gKChVSU5UOCopbGFuZTEpW29mZnNldCtpXTsKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBpOworICAgIGxhbmUgPj49IG9mZnNldCo4OworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgb3V0cHV0W2ldID0gaW5wdXRbaV0gXiAobGFuZSAmIDB4RkYpOworICAgICAgICBsYW5lID4+PSA4OworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworICAgIHVuc2lnbmVkIGludCBpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSICE9IElTX0xJVFRMRV9FTkRJQU4pCisgICAgdW5zaWduZWQgY2hhciB0ZW1wWzhdOworICAgIHVuc2lnbmVkIGludCBqOworI2VuZGlmCisKKyAgICBmb3IoaT0wOyBpPGxhbmVDb3VudDsgaSsrKSB7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICAgICAgKChVSU5UNjQqKW91dHB1dClbaV0gPSAoKFVJTlQ2NCopaW5wdXQpW2ldIF4gKChjb25zdCBVSU5UNjQqKXN0YXRlKVtpXTsKKyNlbHNlCisgICAgICAgIGZyb21Xb3JkVG9CeXRlcyh0ZW1wLCAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldKTsKKyAgICAgICAgZm9yKGo9MDsgajw4OyBqKyspCisgICAgICAgICAgICBvdXRwdXRbaSo4K2pdID0gaW5wdXRbaSo4K2pdIF4gdGVtcFtqXTsKKyNlbmRpZgorICAgIH0KKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmIChsYW5lQ291bnQgPiAxKSB7CisgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyAxXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgMV07CisgICAgICAgIGlmIChsYW5lQ291bnQgPiAyKSB7CisgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsgMl0gPSB+KChVSU5UNjQqKW91dHB1dClbIDJdOworICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDgpIHsKKyAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsgOF0gPSB+KChVSU5UNjQqKW91dHB1dClbIDhdOworICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxMikgeworICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsxMl0gPSB+KChVSU5UNjQqKW91dHB1dClbMTJdOworICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMTcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzE3XSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsxN107CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMjApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsyMF0gPSB+KChVSU5UNjQqKW91dHB1dClbMjBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZSwgaW5wdXQsIG91dHB1dCwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcywgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzaXplX3QgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IG9yaWdpbmFsRGF0YUJ5dGVMZW4gPSBkYXRhQnl0ZUxlbjsKKyAgICBkZWNsYXJlQUJDREUKKyAgICAjaWZuZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAjZW5kaWYKKyAgICBVSU5UNjQgKnN0YXRlQXNMYW5lcyA9IChVSU5UNjQqKXN0YXRlOworICAgIFVJTlQ2NCAqaW5EYXRhQXNMYW5lcyA9IChVSU5UNjQqKWRhdGE7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICB3aGlsZShkYXRhQnl0ZUxlbiA+PSBsYW5lQ291bnQqOCkgeworICAgICAgICBhZGRJbnB1dChBLCBpbkRhdGFBc0xhbmVzLCBsYW5lQ291bnQpCisgICAgICAgIHJvdW5kczI0CisgICAgICAgIGluRGF0YUFzTGFuZXMgKz0gbGFuZUNvdW50OworICAgICAgICBkYXRhQnl0ZUxlbiAtPSBsYW5lQ291bnQqODsKKyAgICB9CisgICAgY29weVRvU3RhdGUoc3RhdGVBc0xhbmVzLCBBKQorICAgIHJldHVybiBvcmlnaW5hbERhdGFCeXRlTGVuIC0gZGF0YUJ5dGVMZW47Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtdW5yb2xsaW5nLm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNWNlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtdW5yb2xsaW5nLm1hY3JvcwpAQCAtMCwwICsxLDE4NSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmIChkZWZpbmVkKEZ1bGxVbnJvbGxpbmcpKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA0LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDUsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggNiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA3LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDgsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggOSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGEoMjMsIEUsIEEpIFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGEoMjMsIEUsIEEpIFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAxMikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9MTIpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyAzLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDQsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA2LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDcsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgOCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA5LCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMTAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxMSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDYpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTYpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs0LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz02KSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSszLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzUsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSA0KQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz00KSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSszLCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MTI7IGk8MjQ7IGkrPTQpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAzKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0zKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9MykgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIGNvcHlTdGF0ZVZhcmlhYmxlcyhBLCBFKSBcCisgICAgfSBcCisKKyNlbGlmIChVbnJvbGxpbmcgPT0gMikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9MikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9MikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAxKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKyspIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSsrKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIGNvcHlTdGF0ZVZhcmlhYmxlcyhBLCBFKSBcCisgICAgfSBcCisKKyNlbHNlCisjZXJyb3IgIlVucm9sbGluZyBpcyBub3QgY29ycmVjdGx5IHNwZWNpZmllZCEiCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkYjczMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5jCkBAIC0wLDAgKzEsOTIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaCIKKworI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICNpbmNsdWRlICJkaXNwbGF5SW50ZXJtZWRpYXRlVmFsdWVzLmgiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMjAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGgyMDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQMjAwCisgICAgI2RlZmluZSBTblBfd2lkdGggMjAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQMjAwX1Blcm11dGVfMThyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGMjAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0YyMDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQNDAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtNDAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGg0MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQNDAwCisgICAgI2RlZmluZSBTblBfd2lkdGggNDAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQNDAwX1Blcm11dGVfMjByb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGNDAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0Y0MDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQODAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtODAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGg4MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQODAwCisgICAgI2RlZmluZSBTblBfd2lkdGggODAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQODAwX1Blcm11dGVfMjJyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGODAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0Y4MDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMTYwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDE2MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQMTYwMAorICAgICNkZWZpbmUgU25QX3dpZHRoIDE2MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGMTYwMF9GYXN0TG9vcF9zdXBwb3J0ZWQpCisgICAgICAgICNkZWZpbmUgU25QX0Zhc3RMb29wX0Fic29yYiBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjRiYWRjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpZm5kZWYgX0tlY2Nha1Nwb25nZV9oXworI2RlZmluZSBfS2VjY2FrU3BvbmdlX2hfCisKKy8qKiBHZW5lcmFsIGluZm9ybWF0aW9uCisgICoKKyAgKiBUaGUgZm9sbG93aW5nIHR5cGUgYW5kIGZ1bmN0aW9ucyBhcmUgbm90IGFjdHVhbGx5IGltcGxlbWVudGVkLiBUaGVpcgorICAqIGRvY3VtZW50YXRpb24gaXMgZ2VuZXJpYywgd2l0aCB0aGUgcHJlZml4IFByZWZpeCByZXBsYWNlZCBieQorICAqIC0gS2VjY2FrV2lkdGgyMDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzIwMF0KKyAgKiAtIEtlY2Nha1dpZHRoNDAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZls0MDBdCisgICogLSBLZWNjYWtXaWR0aDgwMCBmb3IgYSBzcG9uZ2UgZnVuY3Rpb24gYmFzZWQgb24gS2VjY2FrLWZbODAwXQorICAqIC0gS2VjY2FrV2lkdGgxNjAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZlsxNjAwXQorICAqCisgICogSW4gYWxsIHRoZXNlIGZ1bmN0aW9ucywgdGhlIHJhdGUgYW5kIGNhcGFjaXR5IG11c3Qgc3VtIHRvIHRoZSB3aWR0aCBvZiB0aGUKKyAgKiBjaG9zZW4gcGVybXV0YXRpb24uIEZvciBpbnN0YW5jZSwgdG8gdXNlIHRoZSBzcG9uZ2UgZnVuY3Rpb24KKyAgKiBLZWNjYWtbcj0xMzQ0LCBjPTI1Nl0sIG9uZSBtdXN0IHVzZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlKCkgb3IgYSBjb21iaW5hdGlvbgorICAqIG9mIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplKCksIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoKSwKKyAgKiBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKSBhbmQKKyAgKiBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgpLgorICAqCisgICogVGhlIFByZWZpeF9TcG9uZ2VJbnN0YW5jZSBjb250YWlucyB0aGUgc3BvbmdlIGluc3RhbmNlIGF0dHJpYnV0ZXMgZm9yIHVzZQorICAqIHdpdGggdGhlIFByZWZpeF9TcG9uZ2UqIGZ1bmN0aW9ucy4KKyAgKiBJdCBnYXRoZXJzIHRoZSBzdGF0ZSBwcm9jZXNzZWQgYnkgdGhlIHBlcm11dGF0aW9uIGFzIHdlbGwgYXMgdGhlIHJhdGUsCisgICogdGhlIHBvc2l0aW9uIG9mIGlucHV0L291dHB1dCBieXRlcyBpbiB0aGUgc3RhdGUgYW5kIHRoZSBwaGFzZQorICAqIChhYnNvcmJpbmcgb3Igc3F1ZWV6aW5nKS4KKyAgKi8KKworI2lmZGVmIERvbnRSZWFsbHlJbmNsdWRlX0RvY3VtZW50YXRpb25Pbmx5CisvKiogRnVuY3Rpb24gdG8gZXZhbHVhdGUgdGhlIHNwb25nZSBmdW5jdGlvbiBLZWNjYWtbciwgY10gaW4gYSBzaW5nbGUgY2FsbC4KKyAgKiBAcGFyYW0gIHJhdGUgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgcmF0ZSByLgorICAqIEBwYXJhbSAgY2FwYWNpdHkgICAgVGhlIHZhbHVlIG9mIHRoZSBjYXBhY2l0eSBjLgorICAqIEBwYXJhbSAgaW5wdXQgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IG1lc3NhZ2UgKGJlZm9yZSB0aGUgc3VmZml4KS4KKyAgKiBAcGFyYW0gIGlucHV0Qnl0ZUxlbiAgICBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBtZXNzYWdlIGluIGJ5dGVzLgorICAqIEBwYXJhbSAgc3VmZml4ICAgICAgICAgIEJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyBzdWZmaXggYml0cworICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbXVzdCBiZSBhYnNvcmJlZCBhZnRlciBAYSBpbnB1dC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSA8aT5uPC9pPiBiaXRzIG11c3QgYmUgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBwb3NpdGlvbnMuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYml0cyBtdXN0IGJlIGRlbGltaXRlZCB3aXRoIGEgYml0IDEgYXQgcG9zaXRpb24gPGk+bjwvaT4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAoY291bnRpbmcgZnJvbSAwPUxTQiB0byA3PU1TQikgYW5kIGZvbGxvd2VkIGJ5IGJpdHMgMAorICAqICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gcG9zaXRpb24gPGk+bjwvaT4rMSB0byBwb3NpdGlvbiA3LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgbm8gYml0cyBhcmUgdG8gYmUgYWJzb3JiZWQsIHRoZW4gQGEgc3VmZml4IG11c3QgYmUgMHgwMS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgMi1iaXQgc2VxdWVuY2UgMCwwIGlzIHRvIGJlIGFic29yYmVkLCBAYSBzdWZmaXggbXVzdCBiZSAweDA0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSA1LWJpdCBzZXF1ZW5jZSAwLDEsMCwwLDEgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4MzIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDctYml0IHNlcXVlbmNlIDEsMSwwLDEsMCwwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4OEIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLgorICAqIEBwYXJhbSAgb3V0cHV0ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIG91dHB1dCBidWZmZXIuCisgICogQHBhcmFtICBvdXRwdXRCeXRlTGVuICAgVGhlIGRlc2lyZWQgbnVtYmVyIG9mIG91dHB1dCBieXRlcy4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjIGVxdWFsIHRvIHRoZSBzdXBwb3J0ZWQgd2lkdGggb2YgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAqICAgICAgICAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIChvbmUgYnl0ZSkgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcHJlICAgIEBhIHN1ZmZpeCDiiaAgMHgwMAorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlKHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgaW5wdXRCeXRlTGVuLCB1bnNpZ25lZCBjaGFyIHN1ZmZpeCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Qnl0ZUxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhlIHN0YXRlIG9mIHRoZSBLZWNjYWtbciwgY10gc3BvbmdlIGZ1bmN0aW9uLgorICAqIFRoZSBwaGFzZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIGlzIHNldCB0byBhYnNvcmJpbmcuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIHRvIGJlIGluaXRpYWxpemVkLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHByZSAgICBPbmUgbXVzdCBoYXZlIHIrYyBlcXVhbCB0byB0aGUgc3VwcG9ydGVkIHdpZHRoIG9mIHRoaXMgaW1wbGVtZW50YXRpb24KKyAgKiAgICAgICAgIGFuZCB0aGUgcmF0ZSBhIG11bHRpcGxlIG9mIDggYml0cyAob25lIGJ5dGUpIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKFByZWZpeF9TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHkpOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgYnl0ZXMgZm9yIHRoZSBzcG9uZ2UgZnVuY3Rpb24gdG8gYWJzb3JiLgorICAqIEBwYXJhbSAgc3BvbmdlSW5zdGFuY2UgIFBvaW50ZXIgdG8gdGhlIHNwb25nZSBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBQcmVmaXhfU3BvbmdlSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGRhdGFCeXRlTGVuICBUaGUgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHByb3ZpZGVkIGluIHRoZSBpbnB1dCBkYXRhLgorICAqIEBwcmUgICAgVGhlIHNwb25nZSBmdW5jdGlvbiBtdXN0IGJlIGluIHRoZSBhYnNvcmJpbmcgcGhhc2UsCisgICogICAgICAgICBpLmUuLCBQcmVmaXhfU3BvbmdlU3F1ZWV6ZSgpIG9yIFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpCisgICogICAgICAgICBtdXN0IG5vdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZS4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZUFic29yYihQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgYml0cyBmb3IgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBhYnNvcmIKKyAgKiBhbmQgdGhlbiB0byBzd2l0Y2ggdG8gdGhlIHNxdWVlemluZyBwaGFzZS4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRlbGltaXRlZERhdGEgICBCeXRlIGNvbnRhaW5pbmcgZnJvbSAwIHRvIDcgdHJhaWxpbmcgYml0cworICAqICAgICAgICAgICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGFic29yYmVkLgorICAqICAgICAgICAgICAgICAgICAgICAgVGhlc2UgPGk+bjwvaT4gYml0cyBtdXN0IGJlIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgcG9zaXRpb25zLgorICAqICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYml0cyBtdXN0IGJlIGRlbGltaXRlZCB3aXRoIGEgYml0IDEgYXQgcG9zaXRpb24gPGk+bjwvaT4KKyAgKiAgICAgICAgICAgICAgICAgICAgIChjb3VudGluZyBmcm9tIDA9TFNCIHRvIDc9TVNCKSBhbmQgZm9sbG93ZWQgYnkgYml0cyAwCisgICogICAgICAgICAgICAgICAgICAgICBmcm9tIHBvc2l0aW9uIDxpPm48L2k+KzEgdG8gcG9zaXRpb24gNy4KKyAgKiAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBubyBiaXRzIGFyZSB0byBiZSBhYnNvcmJlZCwgdGhlbiBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHgwMS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSAyLWJpdCBzZXF1ZW5jZSAwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIGRlbGltaXRlZERhdGEgbXVzdCBiZSAweDA0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDUtYml0IHNlcXVlbmNlIDAsMSwwLDAsMSBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4MzIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNy1iaXQgc2VxdWVuY2UgMSwxLDAsMSwwLDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4OEIuCisgICogICAgICAgICAgICAgICAgICAgICAuCisgICogQHByZSAgICBUaGUgc3BvbmdlIGZ1bmN0aW9uIG11c3QgYmUgaW4gdGhlIGFic29yYmluZyBwaGFzZSwKKyAgKiAgICAgICAgIGkuZS4sIFByZWZpeF9TcG9uZ2VTcXVlZXplKCkgb3IgUHJlZml4X1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCkKKyAgKiAgICAgICAgIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlLgorICAqIEBwcmUgICAgQGEgZGVsaW1pdGVkRGF0YSDiiaAgMHgwMAorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKTsKKworLyoqCisgICogRnVuY3Rpb24gdG8gc3F1ZWV6ZSBvdXRwdXQgZGF0YSBmcm9tIHRoZSBzcG9uZ2UgZnVuY3Rpb24uCisgICogSWYgdGhlIHNwb25nZSBmdW5jdGlvbiB3YXMgaW4gdGhlIGFic29yYmluZyBwaGFzZSwgdGhpcyBmdW5jdGlvbgorICAqIHN3aXRjaGVzIGl0IHRvIHRoZSBzcXVlZXppbmcgcGhhc2UKKyAgKiBhcyBpZiBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoc3BvbmdlSW5zdGFuY2UsIDB4MDEpIHdhcyBjYWxsZWQuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBkYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBkYXRhLgorICAqIEBwYXJhbSAgZGF0YUJ5dGVMZW4gVGhlIG51bWJlciBvZiBvdXRwdXQgYnl0ZXMgZGVzaXJlZC4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZVNxdWVlemUoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYWxpZ24uaCIKKworI2RlZmluZSBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShwcmVmaXgsIHNpemUsIGFsaWdubWVudCkgXAorICAgIEFMSUdOKGFsaWdubWVudCkgdHlwZWRlZiBzdHJ1Y3QgcHJlZml4IyNfU3BvbmdlSW5zdGFuY2VTdHJ1Y3QgeyBcCisgICAgICAgIHVuc2lnbmVkIGNoYXIgc3RhdGVbc2l6ZV07IFwKKyAgICAgICAgdW5zaWduZWQgaW50IHJhdGU7IFwKKyAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVJT0luZGV4OyBcCisgICAgICAgIGludCBzcXVlZXppbmc7IFwKKyAgICB9IHByZWZpeCMjX1Nwb25nZUluc3RhbmNlOworCisjZGVmaW5lIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKHByZWZpeCkgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VJbml0aWFsaXplKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSk7IFwKKyAgICBpbnQgcHJlZml4IyNfU3BvbmdlQWJzb3JiKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YSk7IFwKKyAgICBpbnQgcHJlZml4IyNfU3BvbmdlU3F1ZWV6ZShwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbik7CisKKyNpZm5kZWYgS2VjY2FrUDIwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTIwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDIwMCwgS2VjY2FrUDIwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQMjAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoMjAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDQwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTQwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDQwMCwgS2VjY2FrUDQwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQNDAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoNDAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDgwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTgwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDgwMCwgS2VjY2FrUDgwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQODAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoODAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDE2MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoMTYwMCwgS2VjY2FrUDE2MDBfc3RhdGVTaXplSW5CeXRlcywgS2VjY2FrUDE2MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGgxNjAwKQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEwNzM5ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5pbmMKQEAgLTAsMCArMSwzMzIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNkZWZpbmUgSk9JTjAoYSwgYikgICAgICAgICAgICAgICAgICAgICBhICMjIGIKKyNkZWZpbmUgSk9JTihhLCBiKSAgICAgICAgICAgICAgICAgICAgICBKT0lOMChhLCBiKQorCisjZGVmaW5lIFNwb25nZSAgICAgICAgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2UpCisjZGVmaW5lIFNwb25nZUluc3RhbmNlICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VJbnN0YW5jZSkKKyNkZWZpbmUgU3BvbmdlSW5pdGlhbGl6ZSAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUluaXRpYWxpemUpCisjZGVmaW5lIFNwb25nZUFic29yYiAgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VBYnNvcmIpCisjZGVmaW5lIFNwb25nZUFic29yYkxhc3RGZXdCaXRzICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cykKKyNkZWZpbmUgU3BvbmdlU3F1ZWV6ZSAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZVNxdWVlemUpCisKKyNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlU2l6ZUluQnl0ZXMpCisjZGVmaW5lIFNuUF9zdGF0ZUFsaWdubWVudCAgICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZUFsaWdubWVudCkKKyNkZWZpbmUgU25QX1N0YXRpY0luaXRpYWxpemUgICAgICAgICAgICBKT0lOKFNuUCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplKQorI2RlZmluZSBTblBfQWRkQnl0ZSAgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZSkKKyNkZWZpbmUgU25QX0FkZEJ5dGVzICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGVzKQorI2RlZmluZSBTblBfRXh0cmFjdEJ5dGVzICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfRXh0cmFjdEJ5dGVzKQorCitpbnQgU3BvbmdlKHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgaW5wdXRCeXRlTGVuLCB1bnNpZ25lZCBjaGFyIHN1ZmZpeCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Qnl0ZUxlbikKK3sKKyAgICBBTElHTihTblBfc3RhdGVBbGlnbm1lbnQpIHVuc2lnbmVkIGNoYXIgc3RhdGVbU25QX3N0YXRlU2l6ZUluQnl0ZXNdOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3VySW5wdXQgPSBpbnB1dDsKKyAgICB1bnNpZ25lZCBjaGFyICpjdXJPdXRwdXQgPSBvdXRwdXQ7CisgICAgdW5zaWduZWQgaW50IHJhdGVJbkJ5dGVzID0gcmF0ZS84OworCisgICAgaWYgKHJhdGUrY2FwYWNpdHkgIT0gU25QX3dpZHRoKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoKHJhdGUgPD0gMCkgfHwgKHJhdGUgPiBTblBfd2lkdGgpIHx8ICgocmF0ZSAlIDgpICE9IDApKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoc3VmZml4ID09IDApCisgICAgICAgIHJldHVybiAxOworCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgc3RhdGUgKi8KKworICAgIFNuUF9TdGF0aWNJbml0aWFsaXplKCk7CisgICAgU25QX0luaXRpYWxpemUoc3RhdGUpOworCisgICAgLyogRmlyc3QsIGFic29yYiB3aG9sZSBibG9ja3MgKi8KKworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICBpZiAoKChyYXRlSW5CeXRlcyAlIChTblBfd2lkdGgvMjAwKSkgPT0gMCkgJiYgKGlucHV0Qnl0ZUxlbiA+PSByYXRlSW5CeXRlcykpIHsKKyAgICAgICAgLyogZmFzdCBsYW5lOiB3aG9sZSBsYW5lIHJhdGUgKi8KKworICAgICAgICBzaXplX3QgajsKKyAgICAgICAgaiA9IFNuUF9GYXN0TG9vcF9BYnNvcmIoc3RhdGUsIHJhdGVJbkJ5dGVzLyhTblBfd2lkdGgvMjAwKSwgY3VySW5wdXQsIGlucHV0Qnl0ZUxlbik7CisgICAgICAgIGN1cklucHV0ICs9IGo7CisgICAgICAgIGlucHV0Qnl0ZUxlbiAtPSBqOworICAgIH0KKyNlbmRpZgorICAgIHdoaWxlKGlucHV0Qnl0ZUxlbiA+PSAoc2l6ZV90KXJhdGVJbkJ5dGVzKSB7CisgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCIsIGN1cklucHV0LCByYXRlSW5CeXRlcyk7CisgICAgICAgICNlbmRpZgorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGN1cklucHV0LCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAgICAgY3VySW5wdXQgKz0gcmF0ZUluQnl0ZXM7CisgICAgICAgIGlucHV0Qnl0ZUxlbiAtPSByYXRlSW5CeXRlczsKKyAgICB9CisKKyAgICAvKiBUaGVuLCBhYnNvcmIgd2hhdCByZW1haW5zICovCisKKyAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KWlucHV0Qnl0ZUxlbjsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCAocGFydCkiLCBjdXJJbnB1dCwgcGFydGlhbEJsb2NrKTsKKyAgICAjZW5kaWYKKyAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGN1cklucHV0LCAwLCBwYXJ0aWFsQmxvY2spOworCisgICAgLyogRmluYWxseSwgYWJzb3JiIHRoZSBzdWZmaXggKi8KKworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YTFbMV07CisgICAgICAgIGRlbGltaXRlZERhdGExWzBdID0gc3VmZml4OworICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChsYXN0IGZldyBiaXRzICsgZmlyc3QgYml0IG9mIHBhZGRpbmcpIiwgZGVsaW1pdGVkRGF0YTEsIDEpOworICAgIH0KKyAgICAjZW5kaWYKKyAgICAvKiBMYXN0IGZldyBiaXRzLCB3aG9zZSBkZWxpbWl0ZXIgY29pbmNpZGVzIHdpdGggZmlyc3QgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKHN0YXRlLCBzdWZmaXgsIHBhcnRpYWxCbG9jayk7CisgICAgLyogSWYgdGhlIGZpcnN0IGJpdCBvZiBwYWRkaW5nIGlzIGF0IHBvc2l0aW9uIHJhdGUtMSwgd2UgbmVlZCBhIHdob2xlIG5ldyBibG9jayBmb3IgdGhlIHNlY29uZCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgaWYgKChzdWZmaXggPj0gMHg4MCkgJiYgKHBhcnRpYWxCbG9jayA9PSAocmF0ZUluQnl0ZXMtMSkpKQorICAgICAgICBTblBfUGVybXV0ZShzdGF0ZSk7CisgICAgLyogU2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShzdGF0ZSwgMHg4MCwgcmF0ZUluQnl0ZXMtMSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBibG9ja1tTblBfd2lkdGgvOF07CisgICAgICAgIG1lbXNldChibG9jaywgMCwgU25QX3dpZHRoLzgpOworICAgICAgICBibG9ja1tyYXRlSW5CeXRlcy0xXSA9IDB4ODA7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU2Vjb25kIGJpdCBvZiBwYWRkaW5nIiwgYmxvY2ssIHJhdGVJbkJ5dGVzKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5VGV4dCgxLCAiLS0tIFN3aXRjaGluZyB0byBzcXVlZXppbmcgcGhhc2UgLS0tIik7CisgICAgI2VuZGlmCisKKyAgICAvKiBGaXJzdCwgb3V0cHV0IHdob2xlIGJsb2NrcyAqLworCisgICAgd2hpbGUob3V0cHV0Qnl0ZUxlbiA+IChzaXplX3QpcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgY3VyT3V0cHV0LCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIiwgY3VyT3V0cHV0LCByYXRlSW5CeXRlcyk7CisgICAgICAgICNlbmRpZgorICAgICAgICBjdXJPdXRwdXQgKz0gcmF0ZUluQnl0ZXM7CisgICAgICAgIG91dHB1dEJ5dGVMZW4gLT0gcmF0ZUluQnl0ZXM7CisgICAgfQorCisgICAgLyogRmluYWxseSwgb3V0cHV0IHdoYXQgcmVtYWlucyAqLworCisgICAgcGFydGlhbEJsb2NrID0gKHVuc2lnbmVkIGludClvdXRwdXRCeXRlTGVuOworICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGUsIGN1ck91dHB1dCwgMCwgcGFydGlhbEJsb2NrKTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayAocGFydCkiLCBjdXJPdXRwdXQsIHBhcnRpYWxCbG9jayk7CisgICAgI2VuZGlmCisKKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgU3BvbmdlSW5pdGlhbGl6ZShTcG9uZ2VJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHkpCit7CisgICAgaWYgKHJhdGUrY2FwYWNpdHkgIT0gU25QX3dpZHRoKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoKHJhdGUgPD0gMCkgfHwgKHJhdGUgPiBTblBfd2lkdGgpIHx8ICgocmF0ZSAlIDgpICE9IDApKQorICAgICAgICByZXR1cm4gMTsKKyAgICBTblBfU3RhdGljSW5pdGlhbGl6ZSgpOworICAgIFNuUF9Jbml0aWFsaXplKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgaW5zdGFuY2UtPnJhdGUgPSByYXRlOworICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCA9IDA7CisgICAgaW5zdGFuY2UtPnNxdWVlemluZyA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgU3BvbmdlQWJzb3JiKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKQoreworICAgIHNpemVfdCBpLCBqOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3VyRGF0YTsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworCisgICAgaWYgKGluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIHJldHVybiAxOyAvKiBUb28gbGF0ZSBmb3IgYWRkaXRpb25hbCBpbnB1dCAqLworCisKKyAgICBpID0gMDsKKyAgICBjdXJEYXRhID0gZGF0YTsKKyAgICB3aGlsZShpIDwgZGF0YUJ5dGVMZW4pIHsKKyAgICAgICAgaWYgKChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gMCkgJiYgKGRhdGFCeXRlTGVuID49IChpICsgcmF0ZUluQnl0ZXMpKSkgeworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICAgICAgICAgIC8qIHByb2Nlc3NpbmcgZnVsbCBibG9ja3MgZmlyc3QgKi8KKworICAgICAgICAgICAgaWYgKChyYXRlSW5CeXRlcyAlIChTblBfd2lkdGgvMjAwKSkgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIGZhc3QgbGFuZTogd2hvbGUgbGFuZSByYXRlICovCisKKyAgICAgICAgICAgICAgICBqID0gU25QX0Zhc3RMb29wX0Fic29yYihpbnN0YW5jZS0+c3RhdGUsIHJhdGVJbkJ5dGVzLyhTblBfd2lkdGgvMjAwKSwgY3VyRGF0YSwgZGF0YUJ5dGVMZW4gLSBpKTsKKyAgICAgICAgICAgICAgICBpICs9IGo7CisgICAgICAgICAgICAgICAgY3VyRGF0YSArPSBqOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBmb3Ioaj1kYXRhQnl0ZUxlbi1pOyBqPj1yYXRlSW5CeXRlczsgai09cmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIiwgY3VyRGF0YSwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgU25QX0FkZEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgMCwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICAgICBTblBfUGVybXV0ZShpbnN0YW5jZS0+c3RhdGUpOworICAgICAgICAgICAgICAgICAgICBjdXJEYXRhKz1yYXRlSW5CeXRlczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSA9IGRhdGFCeXRlTGVuIC0gajsKKyNpZmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG5vcm1hbCBsYW5lOiB1c2luZyB0aGUgbWVzc2FnZSBxdWV1ZSAqLworCisgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KShkYXRhQnl0ZUxlbiAtIGkpOworICAgICAgICAgICAgaWYgKHBhcnRpYWxCbG9jaytpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPiByYXRlSW5CeXRlcykKKyAgICAgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgPSByYXRlSW5CeXRlcy1pbnN0YW5jZS0+Ynl0ZUlPSW5kZXg7CisgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChwYXJ0KSIsIGN1ckRhdGEsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgIGkgKz0gcGFydGlhbEJsb2NrOworCisgICAgICAgICAgICBTblBfQWRkQnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICBjdXJEYXRhICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCArPSBwYXJ0aWFsQmxvY2s7CisgICAgICAgICAgICBpZiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IHJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhTcG9uZ2VJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworCisgICAgaWYgKGRlbGltaXRlZERhdGEgPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIHJldHVybiAxOyAvKiBUb28gbGF0ZSBmb3IgYWRkaXRpb25hbCBpbnB1dCAqLworCisKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZERhdGExWzFdOworICAgICAgICBkZWxpbWl0ZWREYXRhMVswXSA9IGRlbGltaXRlZERhdGE7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKGxhc3QgZmV3IGJpdHMgKyBmaXJzdCBiaXQgb2YgcGFkZGluZykiLCBkZWxpbWl0ZWREYXRhMSwgMSk7CisgICAgfQorICAgICNlbmRpZgorICAgIC8qIExhc3QgZmV3IGJpdHMsIHdob3NlIGRlbGltaXRlciBjb2luY2lkZXMgd2l0aCBmaXJzdCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgU25QX0FkZEJ5dGUoaW5zdGFuY2UtPnN0YXRlLCBkZWxpbWl0ZWREYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgpOworICAgIC8qIElmIHRoZSBmaXJzdCBiaXQgb2YgcGFkZGluZyBpcyBhdCBwb3NpdGlvbiByYXRlLTEsIHdlIG5lZWQgYSB3aG9sZSBuZXcgYmxvY2sgZm9yIHRoZSBzZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIGlmICgoZGVsaW1pdGVkRGF0YSA+PSAweDgwKSAmJiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IChyYXRlSW5CeXRlcy0xKSkpCisgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgLyogU2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShpbnN0YW5jZS0+c3RhdGUsIDB4ODAsIHJhdGVJbkJ5dGVzLTEpOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYmxvY2tbU25QX3dpZHRoLzhdOworICAgICAgICBtZW1zZXQoYmxvY2ssIDAsIFNuUF93aWR0aC84KTsKKyAgICAgICAgYmxvY2tbcmF0ZUluQnl0ZXMtMV0gPSAweDgwOworICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNlY29uZCBiaXQgb2YgcGFkZGluZyIsIGJsb2NrLCByYXRlSW5CeXRlcyk7CisgICAgfQorICAgICNlbmRpZgorICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICBpbnN0YW5jZS0+c3F1ZWV6aW5nID0gMTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheVRleHQoMSwgIi0tLSBTd2l0Y2hpbmcgdG8gc3F1ZWV6aW5nIHBoYXNlIC0tLSIpOworICAgICNlbmRpZgorICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VTcXVlZXplKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKQoreworICAgIHNpemVfdCBpLCBqOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgdW5zaWduZWQgaW50IHJhdGVJbkJ5dGVzID0gaW5zdGFuY2UtPnJhdGUvODsKKyAgICB1bnNpZ25lZCBjaGFyICpjdXJEYXRhOworCisgICAgaWYgKCFpbnN0YW5jZS0+c3F1ZWV6aW5nKQorICAgICAgICBTcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhpbnN0YW5jZSwgMHgwMSk7CisKKyAgICBpID0gMDsKKyAgICBjdXJEYXRhID0gZGF0YTsKKyAgICB3aGlsZShpIDwgZGF0YUJ5dGVMZW4pIHsKKyAgICAgICAgaWYgKChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gcmF0ZUluQnl0ZXMpICYmIChkYXRhQnl0ZUxlbiA+PSAoaSArIHJhdGVJbkJ5dGVzKSkpIHsKKyAgICAgICAgICAgIGZvcihqPWRhdGFCeXRlTGVuLWk7IGo+PXJhdGVJbkJ5dGVzOyBqLT1yYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhpbnN0YW5jZS0+c3RhdGUsIGN1ckRhdGEsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayIsIGN1ckRhdGEsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBjdXJEYXRhKz1yYXRlSW5CeXRlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgPSBkYXRhQnl0ZUxlbiAtIGo7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBub3JtYWwgbGFuZTogdXNpbmcgdGhlIG1lc3NhZ2UgcXVldWUgKi8KKworICAgICAgICAgICAgaWYgKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSByYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpKGRhdGFCeXRlTGVuIC0gaSk7CisgICAgICAgICAgICBpZiAocGFydGlhbEJsb2NrK2luc3RhbmNlLT5ieXRlSU9JbmRleCA+IHJhdGVJbkJ5dGVzKQorICAgICAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9IHJhdGVJbkJ5dGVzLWluc3RhbmNlLT5ieXRlSU9JbmRleDsKKyAgICAgICAgICAgIGkgKz0gcGFydGlhbEJsb2NrOworCisgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgaW5zdGFuY2UtPmJ5dGVJT0luZGV4LCBwYXJ0aWFsQmxvY2spOworICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayAocGFydCkiLCBjdXJEYXRhLCBwYXJ0aWFsQmxvY2spOworICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICBjdXJEYXRhICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCArPSBwYXJ0aWFsQmxvY2s7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI3VuZGVmIFNwb25nZQorI3VuZGVmIFNwb25nZUluc3RhbmNlCisjdW5kZWYgU3BvbmdlSW5pdGlhbGl6ZQorI3VuZGVmIFNwb25nZUFic29yYgorI3VuZGVmIFNwb25nZUFic29yYkxhc3RGZXdCaXRzCisjdW5kZWYgU3BvbmdlU3F1ZWV6ZQorI3VuZGVmIFNuUF9zdGF0ZVNpemVJbkJ5dGVzCisjdW5kZWYgU25QX3N0YXRlQWxpZ25tZW50CisjdW5kZWYgU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9BZGRCeXRlCisjdW5kZWYgU25QX0FkZEJ5dGVzCisjdW5kZWYgU25QX0V4dHJhY3RCeXRlcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvUGxTblAtRmFsbGJhY2suaW5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvUGxTblAtRmFsbGJhY2suaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOTExOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMKQEAgLTAsMCArMSwyNTcgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKy8qIGV4cGVjdCBQbFNuUF9iYXNlUGFyYWxsZWxpc20sIFBsU25QX3RhcmdldFBhcmFsbGVsaXNtICovCisKKy8qIGV4cGVjdCBTblBfc3RhdGVTaXplSW5CeXRlcywgU25QX3N0YXRlQWxpZ25tZW50ICovCisKKy8qIGV4cGVjdCBwcmVmaXggKi8KKworLyogZXhwZWN0IFNuUF8qICovCisKKworI2RlZmluZSBKT0lOMChhLCBiKSAgICAgICAgICAgICAgICAgICAgIGEgIyMgYgorI2RlZmluZSBKT0lOKGEsIGIpICAgICAgICAgICAgICAgICAgICAgIEpPSU4wKGEsIGIpCisKKyNkZWZpbmUgUGxTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICBKT0lOKHByZWZpeCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFBsU25QX0luaXRpYWxpemVBbGwgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9Jbml0aWFsaXplQWxsKQorI2RlZmluZSBQbFNuUF9BZGRCeXRlICAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkQnl0ZSkKKyNkZWZpbmUgUGxTblBfQWRkQnl0ZXMgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0FkZEJ5dGVzKQorI2RlZmluZSBQbFNuUF9BZGRMYW5lc0FsbCAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkTGFuZXNBbGwpCisjZGVmaW5lIFBsU25QX092ZXJ3cml0ZUJ5dGVzICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9PdmVyd3JpdGVCeXRlcykKKyNkZWZpbmUgUGxTblBfT3ZlcndyaXRlTGFuZXNBbGwgICAgICAgICBKT0lOKHByZWZpeCwgX092ZXJ3cml0ZUxhbmVzQWxsKQorI2RlZmluZSBQbFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzICAgICAgIEpPSU4ocHJlZml4LCBfT3ZlcndyaXRlV2l0aFplcm9lcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEJ5dGVzICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RCeXRlcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdExhbmVzQWxsICAgICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RMYW5lc0FsbCkKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEFuZEFkZEJ5dGVzICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RBbmRBZGRCeXRlcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCkKKworI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZVNpemVJbkJ5dGVzICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZVNpemVJbkJ5dGVzKQorICAgICNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlQWxpZ25tZW50KQorI2Vsc2UKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZVNpemVJbkJ5dGVzICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZXNTaXplSW5CeXRlcykKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZUFsaWdubWVudCAgICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZXNBbGlnbm1lbnQpCisjZW5kaWYKKyNkZWZpbmUgUGxTblBfZmFjdG9yICgoUGxTblBfdGFyZ2V0UGFyYWxsZWxpc20pLyhQbFNuUF9iYXNlUGFyYWxsZWxpc20pKQorI2RlZmluZSBTblBfc3RhdGVPZmZzZXQgKCgoU25QX3N0YXRlU2l6ZUluQnl0ZXMrKFNuUF9zdGF0ZUFsaWdubWVudC0xKSkvU25QX3N0YXRlQWxpZ25tZW50KSpTblBfc3RhdGVBbGlnbm1lbnQpCisjZGVmaW5lIHN0YXRlV2l0aEluZGV4KGkpICgodW5zaWduZWQgY2hhciAqKXN0YXRlcysoKGkpKlNuUF9zdGF0ZU9mZnNldCkpCisKKyNkZWZpbmUgU25QX1N0YXRpY0luaXRpYWxpemUgICAgICAgICAgICBKT0lOKFNuUCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplKQorI2RlZmluZSBTblBfSW5pdGlhbGl6ZUFsbCAgICAgICAgICAgICAgIEpPSU4oU25QLCBfSW5pdGlhbGl6ZUFsbCkKKyNkZWZpbmUgU25QX0FkZEJ5dGUgICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGUpCisjZGVmaW5lIFNuUF9BZGRCeXRlcyAgICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9BZGRCeXRlcykKKyNkZWZpbmUgU25QX0FkZExhbmVzQWxsICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZExhbmVzQWxsKQorI2RlZmluZSBTblBfT3ZlcndyaXRlQnl0ZXMgICAgICAgICAgICAgIEpPSU4oU25QLCBfT3ZlcndyaXRlQnl0ZXMpCisjZGVmaW5lIFNuUF9PdmVyd3JpdGVMYW5lc0FsbCAgICAgICAgICAgSk9JTihTblAsIF9PdmVyd3JpdGVMYW5lc0FsbCkKKyNkZWZpbmUgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMgICAgICAgICBKT0lOKFNuUCwgX092ZXJ3cml0ZVdpdGhaZXJvZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0Qnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0TGFuZXNBbGwgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0TGFuZXNBbGwpCisjZGVmaW5lIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0QW5kQWRkQnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwgICAgICAgSk9JTihTblAsIF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwpCisKK3ZvaWQgUGxTblBfU3RhdGljSW5pdGlhbGl6ZSggdm9pZCApCit7CisgICAgU25QX1N0YXRpY0luaXRpYWxpemUoKTsKK30KKwordm9pZCBQbFNuUF9Jbml0aWFsaXplQWxsKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspCisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0luaXRpYWxpemUoc3RhdGVXaXRoSW5kZXgoaSkpOworICAgICNlbHNlCisgICAgICAgIFNuUF9Jbml0aWFsaXplQWxsKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9BZGRCeXRlKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfQWRkQnl0ZShzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgYnl0ZSwgb2Zmc2V0KTsKKyAgICAjZWxzZQorICAgICAgICBTblBfQWRkQnl0ZShzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBieXRlLCBvZmZzZXQpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZEJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9BZGRMYW5lc0FsbCh2b2lkICpzdGF0ZXMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9BZGRMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gUGxTblBfYmFzZVBhcmFsbGVsaXNtKmxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzOworICAgIH0KK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbHNlCisgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfT3ZlcndyaXRlTGFuZXNBbGwodm9pZCAqc3RhdGVzLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgMCwgbGFuZUNvdW50KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfT3ZlcndyaXRlTGFuZXNBbGwoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIGxhbmVDb3VudCwgbGFuZU9mZnNldCk7CisgICAgICAgICNlbmRpZgorICAgICAgICBkYXRhICs9IFBsU25QX2Jhc2VQYXJhbGxlbGlzbSpsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlczsKKyAgICB9Cit9CisKK3ZvaWQgUGxTblBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCB1bnNpZ25lZCBpbnQgYnl0ZUNvdW50KQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBieXRlQ291bnQpOworICAgICNlbHNlCisgICAgICAgIFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGJ5dGVDb3VudCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfUGVybXV0ZUFsbCh2b2lkICpzdGF0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfUGVybXV0ZShzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfUGVybXV0ZUFsbChzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbmRpZgorICAgIH0KK30KKworI2lmIChkZWZpbmVkKFNuUF9QZXJtdXRlXzEycm91bmRzKSB8fCBkZWZpbmVkKFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKSkKK3ZvaWQgUGxTblBfUGVybXV0ZUFsbF8xMnJvdW5kcyh2b2lkICpzdGF0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfUGVybXV0ZV8xMnJvdW5kcyhzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfUGVybXV0ZUFsbF8xMnJvdW5kcyhzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbmRpZgorICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFBsU25QX0V4dHJhY3RCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9FeHRyYWN0TGFuZXNBbGwoY29uc3Qgdm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0V4dHJhY3RMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gbGFuZU9mZnNldCpTblBfbGFuZUxlbmd0aEluQnl0ZXMqUGxTblBfYmFzZVBhcmFsbGVsaXNtOworICAgIH0KK30KKwordm9pZCBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXModm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsKGNvbnN0IHZvaWQgKnN0YXRlcywgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgdW5zaWduZWQgaW50IGxhbmVPZmZzZXQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBpbnB1dCwgb3V0cHV0LCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwoc3RhdGVXaXRoSW5kZXgoaSksIGlucHV0LCBvdXRwdXQsIGxhbmVDb3VudCwgbGFuZU9mZnNldCk7CisgICAgICAgICNlbmRpZgorICAgICAgICBpbnB1dCArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgICAgIG91dHB1dCArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgfQorfQorCisjdW5kZWYgUGxTblBfZmFjdG9yCisjdW5kZWYgU25QX3N0YXRlT2Zmc2V0CisjdW5kZWYgc3RhdGVXaXRoSW5kZXgKKyN1bmRlZiBKT0lOMAorI3VuZGVmIEpPSU4KKyN1bmRlZiBQbFNuUF9TdGF0aWNJbml0aWFsaXplCisjdW5kZWYgUGxTblBfSW5pdGlhbGl6ZUFsbAorI3VuZGVmIFBsU25QX0FkZEJ5dGUKKyN1bmRlZiBQbFNuUF9BZGRCeXRlcworI3VuZGVmIFBsU25QX0FkZExhbmVzQWxsCisjdW5kZWYgUGxTblBfT3ZlcndyaXRlQnl0ZXMKKyN1bmRlZiBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbAorI3VuZGVmIFBsU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMKKyN1bmRlZiBQbFNuUF9QZXJtdXRlQWxsCisjdW5kZWYgUGxTblBfRXh0cmFjdEJ5dGVzCisjdW5kZWYgUGxTblBfRXh0cmFjdExhbmVzQWxsCisjdW5kZWYgUGxTblBfRXh0cmFjdEFuZEFkZEJ5dGVzCisjdW5kZWYgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsCisjdW5kZWYgU25QX3N0YXRlQWxpZ25tZW50CisjdW5kZWYgU25QX3N0YXRlU2l6ZUluQnl0ZXMKKyN1bmRlZiBQbFNuUF9mYWN0b3IKKyN1bmRlZiBTblBfc3RhdGVPZmZzZXQKKyN1bmRlZiBzdGF0ZVdpdGhJbmRleAorI3VuZGVmIFNuUF9TdGF0aWNJbml0aWFsaXplCisjdW5kZWYgU25QX0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZUFsbAorI3VuZGVmIFNuUF9BZGRCeXRlCisjdW5kZWYgU25QX0FkZEJ5dGVzCisjdW5kZWYgU25QX0FkZExhbmVzQWxsCisjdW5kZWYgU25QX092ZXJ3cml0ZUJ5dGVzCisjdW5kZWYgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMKKyN1bmRlZiBTblBfT3ZlcndyaXRlTGFuZXNBbGwKKyN1bmRlZiBTblBfRXh0cmFjdEJ5dGVzCisjdW5kZWYgU25QX0V4dHJhY3RMYW5lc0FsbAorI3VuZGVmIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvU25QLVJlbGFuZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZlNjM1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvU25QLVJlbGFuZWQuaApAQCAtMCwwICsxLDEzNCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfU25QX1JlbGFuZWRfaF8KKyNkZWZpbmUgX1NuUF9SZWxhbmVkX2hfCisKKyNkZWZpbmUgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX0FkZExhbmVzLCBTblBfQWRkQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfQWRkTGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChkYXRhKSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VyRGF0YSA9IChkYXRhKTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX092ZXJ3cml0ZUxhbmVzLCBTblBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfT3ZlcndyaXRlTGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZShzdGF0ZSwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChkYXRhKSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VyRGF0YSA9IChkYXRhKTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIFNuUF9FeHRyYWN0TGFuZXMsIFNuUF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdExhbmVzKHN0YXRlLCBkYXRhLCAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZSwgaW5wdXQsIG91dHB1dCwgb2Zmc2V0LCBsZW5ndGgsIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXMsIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZExhbmVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGlucHV0KSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAob3V0cHV0KSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VySW5wdXQgPSAoaW5wdXQpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfY3VyT3V0cHV0ID0gKG91dHB1dCk7IFwKKyAgICAgICAgICAgIHdoaWxlKF9zaXplTGVmdCA+IDApIHsgXAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfYnl0ZXNJbkxhbmUgPSBTblBfbGFuZUxlbmd0aEluQnl0ZXMgLSBfb2Zmc2V0SW5MYW5lOyBcCisgICAgICAgICAgICAgICAgaWYgKF9ieXRlc0luTGFuZSA+IF9zaXplTGVmdCkgXAorICAgICAgICAgICAgICAgICAgICBfYnl0ZXNJbkxhbmUgPSBfc2l6ZUxlZnQ7IFwKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VySW5wdXQsIF9jdXJPdXRwdXQsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VySW5wdXQgKz0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2N1ck91dHB1dCArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaCBiL01vZHVsZXMvX3NoYTMva2NwL2FsaWduLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY1MGZlOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL2FsaWduLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfYWxpZ25faF8KKyNkZWZpbmUgX2FsaWduX2hfCisKKy8qIG9uIE1hYyBPUy1YIGFuZCBwb3NzaWJseSBvdGhlcnMsIEFMSUdOKHgpIGlzIGRlZmluZWQgaW4gcGFyYW0uaCwgYW5kIC1XZXJyb3IgY2hva2VzIG9uIHRoZSByZWRlZi4gKi8KKworI2lmZGVmIEFMSUdOCisjdW5kZWYgQUxJR04KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0dOVUNfXykKKyNkZWZpbmUgQUxJR04oeCkgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoeCkpKQorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgQUxJR04oeCkgX19kZWNsc3BlYyhhbGlnbih4KSkKKyNlbGlmIGRlZmluZWQoX19BUk1DQ19WRVJTSU9OKQorI2RlZmluZSBBTElHTih4KSBfX2FsaWduKHgpCisjZWxzZQorI2RlZmluZSBBTElHTih4KQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9zaGEzbW9kdWxlLmMgYi9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGFjNjMxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9zaGEzbW9kdWxlLmMKQEAgLTAsMCArMSw3NTkgQEAKKy8qIFNIQTMgbW9kdWxlCisgKgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRoZSBTSEEzIGFsZ29yaXRobQorICoKKyAqIFNlZSBiZWxvdyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGNvZGUgdGhpcyBtb2R1bGUgd2FzCisgKiBiYXNlZCB1cG9uLiBBZGRpdGlvbmFsIHdvcmsgcGVyZm9ybWVkIGJ5OgorICoKKyAqICBBbmRyZXcgS3VjaGxpbmcgKGFta0BhbWsuY2EpCisgKiAgR3JlZyBTdGVpbiAoZ3N0ZWluQGx5cmEub3JnKQorICogIFRyZXZvciBQZXJyaW4gKHRyZXZwQHRyZXZwLm5ldCkKKyAqICBHcmVnb3J5IFAuIFNtaXRoIChncmVnQGtyeXB0by5vcmcpCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgIENocmlzdGlhbiBIZWltZXMgKGNocmlzdGlhbkBweXRob24ub3JnKQorICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorICoKKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKyNpbmNsdWRlICIuLi9oYXNobGliLmgiCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBLTMgKEtlY2NhaykgYW5kIFNIQUtFCisgKgorICogVGhlIGNvZGUgaXMgYmFzZWQgb24gS2VjY2FrQ29kZVBhY2thZ2UgZnJvbSAyMDE2LTA0LTIzCisgKiBjb21taXQgNjQ3ZjkzMDc5YWZjNGFkYTNkMjM3Mzc0NzdhNmU1MjUxMWNhNDFmZAorICoKKyAqIFRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgYWx0ZXJlZCBpbiB0aGlzIHBvaW50czoKKyAqICAtIEMrKyBjb21tZW50cyBhcmUgY29udmVydGVkIHRvIEFOU0kgQyBjb21tZW50cy4KKyAqICAtIGFsbCBmdW5jdGlvbiBuYW1lcyBhcmUgbWFuZ2xlZAorICogIC0gdHlwZWRlZiBmb3IgVUlOVDY0IGlzIGNvbW1lbnRlZCBvdXQuCisgKiAgLSBicmdfZW5kaWFuLmggaXMgcmVtb3ZlZAorICoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBfX3NwYXJjCisgIC8qIG9wdDY0IHVzZXMgdW4tYWxpZ25lZCBtZW1vcnkgYWNjZXNzIHRoYXQgY2F1c2VzIGEgQlVTIGVycm9yIHdpdGggbXNnCisgICAqICdpbnZhbGlkIGFkZHJlc3MgYWxpZ25tZW50JyBvbiBTUEFSQy4gKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgMzIKKyNlbGlmIFBZX0JJR19FTkRJQU4KKyAgLyogb3B0NjQgaXMgbm90IHlldCBzdXBwb3J0ZWQgb24gYmlnIGVuZGlhbiBwbGF0Zm9ybXMgKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgMzIKKyNlbGlmIFNJWkVPRl9WT0lEX1AgPT0gOCAmJiBkZWZpbmVkKFBZX1VJTlQ2NF9UKQorICAvKiBvcHQ2NCB3b3JrcyBvbmx5IG9uIGxpdHRsZS1lbmRpYW4gNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgNjQKKyNlbHNlCisgIC8qIG9wdDMyIGlzIHVzZWQgZm9yIHRoZSByZW1haW5pbmcgMzIgYW5kIDY0Yml0IHBsYXRmb3JtcyAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VuZGlmCisKKyNpZiBLZWNjYWtPcHQgPT0gNjQgJiYgZGVmaW5lZChQWV9VSU5UNjRfVCkKKyAgLyogNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgdHlwZWRlZiBQWV9VSU5UNjRfVCBVSU5UNjQ7CisgIHR5cGVkZWYgdW5zaWduZWQgY2hhciBVSU5UODsKKyNlbmRpZgorCisvKiByZXBsYWNlbWVudCBmb3IgYnJnX2VuZGlhbi5oICovCisjZGVmaW5lIElTX0xJVFRMRV9FTkRJQU4gMTIzNAorI2RlZmluZSBJU19CSUdfRU5ESUFOIDQzMjEKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisjZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfTElUVExFX0VORElBTgorI2VuZGlmCisjaWYgUFlfQklHX0VORElBTgorI2RlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0JJR19FTkRJQU4KKyNlbmRpZgorCisvKiBtYW5nbGUgbmFtZXMgKi8KKyNkZWZpbmUgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiIF9QeVNIQTNfS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiCisjZGVmaW5lIEtlY2Nha19IYXNoRmluYWwgX1B5U0hBM19LZWNjYWtfSGFzaEZpbmFsCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSBfUHlTSEEzX0tlY2Nha19IYXNoSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtfSGFzaFNxdWVlemUgX1B5U0hBM19LZWNjYWtfSGFzaFNxdWVlemUKKyNkZWZpbmUgS2VjY2FrX0hhc2hVcGRhdGUgX1B5U0hBM19LZWNjYWtfSGFzaFVwZGF0ZQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZEJ5dGVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkTGFuZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9Jbml0aWFsaXplIF9QeVNIQTNfS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcworI2RlZmluZSBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcworI2RlZmluZSBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcworI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZQorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYgorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMKKyNkZWZpbmUgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplCisjaWYgS2VjY2FrT3B0ID09IDMyCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGUgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRCeXRlCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyBfUHlTSEEzX0tlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcworI2RlZmluZSBLZWNjYWtQMTYwMF9TZXRCeXRlc0luTGFuZVRvWmVybyBfUHlTSEEzX0tlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvCisjZW5kaWYKKworLyogd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBLZWNjYWtQMTYwMCAqLworI2RlZmluZSBLZWNjYWtQMjAwX2V4Y2x1ZGVkIDEKKyNkZWZpbmUgS2VjY2FrUDQwMF9leGNsdWRlZCAxCisjZGVmaW5lIEtlY2Nha1A4MDBfZXhjbHVkZWQgMQorCisvKiBpbmxpbmUgYWxsIEtlY2NhayBkZXBlbmRlbmNpZXMgKi8KKyNpbmNsdWRlICJrY3AvS2VjY2FrSGFzaC5oIgorI2luY2x1ZGUgImtjcC9LZWNjYWtTcG9uZ2UuaCIKKyNpbmNsdWRlICJrY3AvS2VjY2FrSGFzaC5jIgorI2luY2x1ZGUgImtjcC9LZWNjYWtTcG9uZ2UuYyIKKyNpZiBLZWNjYWtPcHQgPT0gNjQKKyAgI2luY2x1ZGUgImtjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYyIKKyNlbGlmIEtlY2Nha09wdCA9PSAzMgorICAjaW5jbHVkZSAia2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jIgorI2VuZGlmCisKKyNkZWZpbmUgU0hBM19NQVhfRElHRVNUU0laRSA2NCAvKiA2NCBCeXRlcyAoNTEyIEJpdHMpIGZvciAyMjQgdG8gNTEyICovCisjZGVmaW5lIFNIQTNfTEFORVNJWkUgKDIwICogOCkgLyogRXh0cmFjdExhbmUgbmVlZHMgbWF4IHVpbnQ2NF90WzIwXSBleHRyYS4gKi8KKyNkZWZpbmUgU0hBM19zdGF0ZSBLZWNjYWtfSGFzaEluc3RhbmNlCisjZGVmaW5lIFNIQTNfaW5pdCBLZWNjYWtfSGFzaEluaXRpYWxpemUKKyNkZWZpbmUgU0hBM19wcm9jZXNzIEtlY2Nha19IYXNoVXBkYXRlCisjZGVmaW5lIFNIQTNfZG9uZSBLZWNjYWtfSGFzaEZpbmFsCisjZGVmaW5lIFNIQTNfc3F1ZWV6ZSBLZWNjYWtfSGFzaFNxdWVlemUKKyNkZWZpbmUgU0hBM19jb3B5c3RhdGUoZGVzdCwgc3JjKSBtZW1jcHkoJihkZXN0KSwgJihzcmMpLCBzaXplb2YoU0hBM19zdGF0ZSkpCisKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9zaGEzCitjbGFzcyBfc2hhMy5zaGEzXzIyNCAiU0hBM29iamVjdCAqIiAiJlNIQTNfMjI0dHlwIgorY2xhc3MgX3NoYTMuc2hhM18yNTYgIlNIQTNvYmplY3QgKiIgIiZTSEEzXzI1NnR5cCIKK2NsYXNzIF9zaGEzLnNoYTNfMzg0ICJTSEEzb2JqZWN0ICoiICImU0hBM18zODR0eXAiCitjbGFzcyBfc2hhMy5zaGEzXzUxMiAiU0hBM29iamVjdCAqIiAiJlNIQTNfNTEydHlwIgorY2xhc3MgX3NoYTMuc2hha2VfMTI4ICJTSEEzb2JqZWN0ICoiICImU0hBS0UxMjh0eXBlIgorY2xhc3MgX3NoYTMuc2hha2VfMjU2ICJTSEEzb2JqZWN0ICoiICImU0hBS0UyNTZ0eXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjhhNTM2ODBmMzcwMjg1YV0qLworCisvKiBUaGUgc3RydWN0dXJlIGZvciBzdG9yaW5nIFNIQTMgaW5mbyAqLworCisjZGVmaW5lIFBZX1dJVEhfS0VDQ0FLIDAKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBTSEEzX3N0YXRlIGhhc2hfc3RhdGU7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBTSEEzb2JqZWN0OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTNfMjI0dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM18yNTZ0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzM4NHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTNfNTEydHlwZTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworc3RhdGljIFB5VHlwZU9iamVjdCBLZWNjYWtfMjI0dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzI1NnR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha18zODR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBLZWNjYWtfNTEydHlwZTsKKyNlbmRpZgorc3RhdGljIFB5VHlwZU9iamVjdCBTSEFLRTEyOHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQUtFMjU2dHlwZTsKKworI2luY2x1ZGUgImNsaW5pYy9zaGEzbW9kdWxlLmMuaCIKKworc3RhdGljIFNIQTNvYmplY3QgKgorbmV3U0hBM29iamVjdChQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgU0hBM29iamVjdCAqbmV3b2JqOworICAgIG5ld29iaiA9IChTSEEzb2JqZWN0ICopUHlPYmplY3RfTmV3KFNIQTNvYmplY3QsIHR5cGUpOworICAgIGlmIChuZXdvYmogPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBuZXdvYmotPmxvY2sgPSBOVUxMOworI2VuZGlmCisgICAgcmV0dXJuIG5ld29iajsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19zaGEzLnNoYTNfMjI0Ll9fbmV3X18gYXMgcHlfc2hhM19uZXcKKyAgICBzdHJpbmcgYXMgZGF0YTogb2JqZWN0ID0gTlVMTAorCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgMjggYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9zaGEzX25ld19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmRhdGEpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGQ1YzM0Mjc5ZTY5YmYwOSBpbnB1dD1kN2M1ODJiOTUwYTg1OGI2XSovCit7CisgICAgU0hBM29iamVjdCAqc2VsZiA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZiA9IHtOVUxMLCBOVUxMfTsKKyAgICBIYXNoUmV0dXJuIHJlczsKKworICAgIHNlbGYgPSBuZXdTSEEzb2JqZWN0KHR5cGUpOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAodHlwZSA9PSAmU0hBM18yMjR0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzIyNCgmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzI1NnR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMjU2KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMzg0dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18zODQoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM181MTJ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzUxMigmc2VsZi0+aGFzaF9zdGF0ZSk7CisjaWZkZWYgUFlfV0lUSF9LRUNDQUsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18yMjR0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgMTE1MiwgNDQ4LCAyMjQsIDB4MDEpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzI1NnR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplKCZzZWxmLT5oYXNoX3N0YXRlLCAxMDg4LCA1MTIsIDI1NiwgMHgwMSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMzg0dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDgzMiwgNzY4LCAzODQsIDB4MDEpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzUxMnR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplKCZzZWxmLT5oYXNoX3N0YXRlLCA1NzYsIDEwMjQsIDUxMiwgMHgwMSk7CisjZW5kaWYKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQUtFMTI4dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBS0UxMjgoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UyNTZ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEFLRTI1Nigmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9SKGRhdGEsICZidWYsIGdvdG8gZXJyb3IpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgIGlmIChidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpIHsKKyAgICAgICAgICAgIC8qIGludmFyaWFudDogTmV3IG9iamVjdHMgY2FuJ3QgYmUgYWNjZXNzZWQgYnkgb3RoZXIgY29kZSB5ZXQsCisgICAgICAgICAgICAgKiB0aHVzIGl0J3Mgc2FmZSB0byByZWxlYXNlIHRoZSBHSUwgd2l0aG91dCBsb2NraW5nIHRoZSBvYmplY3QuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworICAgICAgICB9CisjZWxzZQorICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyNlbmRpZgorICAgICAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsIGVycm9yIGluIFNIQTMgVXBkYXRlKCkiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKworICBlcnJvcjoKKyAgICBpZiAoc2VsZikgeworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgfQorICAgIGlmIChkYXRhICYmIGJ1Zi5vYmopIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLyogSW50ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLworCitzdGF0aWMgdm9pZAorU0hBM19kZWFsbG9jKFNIQTNvYmplY3QgKnNlbGYpCit7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jaykgeworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisgICAgfQorI2VuZGlmCisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCisKKy8qIEV4dGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGEzXzIyNC5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfY29weV9pbXBsKFNIQTNvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmM1Mzc0MTFlY2RjZGE0YyBpbnB1dD05M2E0NGFhZWJlYTUxYmE4XSovCit7CisgICAgU0hBM29iamVjdCAqbmV3b2JqOworCisgICAgaWYgKChuZXdvYmogPSBuZXdTSEEzb2JqZWN0KFB5X1RZUEUoc2VsZikpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKG5ld29iai0+aGFzaF9zdGF0ZSwgc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3b2JqOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LmRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmQ1MzE4NDJlMjBiMmQ1YiBpbnB1dD1hNTgwNzkxN2QyMTliMzBlXSovCit7CisgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBM19NQVhfRElHRVNUU0laRSArIFNIQTNfTEFORVNJWkVdOworICAgIFNIQTNfc3RhdGUgdGVtcDsKKyAgICBIYXNoUmV0dXJuIHJlczsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgU0hBM19jb3B5c3RhdGUodGVtcCwgc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXMgPSBTSEEzX2RvbmUoJnRlbXAsIGRpZ2VzdCk7CisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIEZpbmFsKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5oYXNoX3N0YXRlLmZpeGVkT3V0cHV0TGVuZ3RoIC8gOCk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzVhZDAzMjU3OTA2OTE4ZCBpbnB1dD0yZDkxYmI2ZTBkMTE0ZWUzXSovCit7CisgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBM19NQVhfRElHRVNUU0laRSArIFNIQTNfTEFORVNJWkVdOworICAgIFNIQTNfc3RhdGUgdGVtcDsKKyAgICBIYXNoUmV0dXJuIHJlczsKKworICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgU0hBM19jb3B5c3RhdGUodGVtcCwgc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXMgPSBTSEEzX2RvbmUoJnRlbXAsIGRpZ2VzdCk7CisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIEZpbmFsKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlfc3RyaGV4KChjb25zdCBjaGFyICopZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmhhc2hfc3RhdGUuZml4ZWRPdXRwdXRMZW5ndGggLyA4KTsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGEzXzIyNC51cGRhdGUKKworICAgIG9iajogb2JqZWN0CisgICAgLworCitVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X3VwZGF0ZShTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA2NzIxZDU1YjQ4M2UwYWYgaW5wdXQ9YmU0NGJmMGQxYzI3OTc5MV0qLworeworICAgIFB5X2J1ZmZlciBidWY7CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CisKKyAgICAvKiBhZGQgbmV3IGRhdGEsIHRoZSBmdW5jdGlvbiB0YWtlcyB0aGUgbGVuZ3RoIGluIGJpdHMgbm90IGJ5dGVzICovCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMICYmIGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkgeworICAgICAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIH0KKyAgICAvKiBPbmNlIGEgbG9jayBleGlzdHMgYWxsIGNvZGUgcGF0aHMgbXVzdCBiZSBzeW5jaHJvbml6ZWQuIFdlIGhhdmUgdG8KKyAgICAgKiByZWxlYXNlIHRoZSBHSUwgZXZlbiBmb3Igc21hbGwgYnVmZmVycyBhcyBhY3F1aXJpbmcgdGhlIGxvY2sgbWF5IHRha2UKKyAgICAgKiBhbiB1bmxpbWl0ZWQgYW1vdW50IG9mIHRpbWUgd2hlbiBhbm90aGVyIHRocmVhZCB1cGRhdGVzIHRoaXMgb2JqZWN0CisgICAgICogd2l0aCBsb3RzIG9mIGRhdGEuICovCisgICAgaWYgKHNlbGYtPmxvY2spIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9jaywgMSk7CisgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9jayk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICB9CisjZWxzZQorICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworI2VuZGlmCisKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIFVwZGF0ZSgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybiBQeV9Ob25lOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBTSEEzX21ldGhvZHNbXSA9IHsKKyAgICBfU0hBM19TSEEzXzIyNF9DT1BZX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X0RJR0VTVF9NRVRIT0RERUYKKyAgICBfU0hBM19TSEEzXzIyNF9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfVVBEQVRFX01FVEhPRERFRgorICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfYmxvY2tfc2l6ZShTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIGludCByYXRlID0gc2VsZi0+aGFzaF9zdGF0ZS5zcG9uZ2UucmF0ZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJhdGUgLyA4KTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfbmFtZShTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoc2VsZik7CisgICAgaWYgKHR5cGUgPT0gJlNIQTNfMjI0dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYTNfMjI0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzI1NnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzI1NiIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18zODR0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM18zODQiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfNTEydHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYTNfNTEyIik7CisjaWZkZWYgUFlfV0lUSF9LRUNDQUsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18yMjR0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygia2VjY2FrXzIyNCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzI1NnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfMjU2Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMzg0dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha18zODQiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha181MTJ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygia2VjY2FrXzUxMiIpOworI2VuZGlmCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTEyOHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGFrZV8xMjgiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQUtFMjU2dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYWtlXzI1NiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X2RpZ2VzdF9zaXplKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5oYXNoX3N0YXRlLmZpeGVkT3V0cHV0TGVuZ3RoIC8gOCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X2NhcGFjaXR5X2JpdHMoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgY2FwYWNpdHkgPSAxNjAwIC0gc2VsZi0+aGFzaF9zdGF0ZS5zcG9uZ2UucmF0ZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGNhcGFjaXR5KTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfcmF0ZV9iaXRzKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgdW5zaWduZWQgaW50IHJhdGUgPSBzZWxmLT5oYXNoX3N0YXRlLnNwb25nZS5yYXRlOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmF0ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9zdWZmaXgoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHN1ZmZpeFsyXTsKKyAgICBzdWZmaXhbMF0gPSBzZWxmLT5oYXNoX3N0YXRlLmRlbGltaXRlZFN1ZmZpeDsKKyAgICBzdWZmaXhbMV0gPSAwOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopc3VmZml4LCAxKTsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgU0hBM19nZXRzZXRlcnNbXSA9IHsKKyAgICB7ImJsb2NrX3NpemUiLCAoZ2V0dGVyKVNIQTNfZ2V0X2Jsb2NrX3NpemUsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsibmFtZSIsIChnZXR0ZXIpU0hBM19nZXRfbmFtZSwgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJkaWdlc3Rfc2l6ZSIsIChnZXR0ZXIpU0hBM19nZXRfZGlnZXN0X3NpemUsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiX2NhcGFjaXR5X2JpdHMiLCAoZ2V0dGVyKVNIQTNfZ2V0X2NhcGFjaXR5X2JpdHMsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiX3JhdGVfYml0cyIsIChnZXR0ZXIpU0hBM19nZXRfcmF0ZV9iaXRzLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9zdWZmaXgiLCAoZ2V0dGVyKVNIQTNfZ2V0X3N1ZmZpeCwgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworCisjZGVmaW5lIFNIQTNfVFlQRSh0eXBlX29iaiwgdHlwZV9uYW1lLCB0eXBlX2RvYywgdHlwZV9tZXRob2RzKSBcCisgICAgc3RhdGljIFB5VHlwZU9iamVjdCB0eXBlX29iaiA9IHsgXAorICAgICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkgXAorICAgICAgICB0eXBlX25hbWUsICAgICAgICAgIC8qIHRwX25hbWUgKi8gXAorICAgICAgICBzaXplb2YoU0hBM29iamVjdCksIC8qIHRwX3NpemUgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovIFwKKyAgICAgICAgLyogIG1ldGhvZHMgICovIFwKKyAgICAgICAgKGRlc3RydWN0b3IpU0hBM19kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8gXAorICAgICAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qIHRwX2ZsYWdzICovIFwKKyAgICAgICAgdHlwZV9kb2MsICAgICAgICAgICAvKiB0cF9kb2MgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLyBcCisgICAgICAgIHR5cGVfbWV0aG9kcywgICAgICAgLyogdHBfbWV0aG9kcyAqLyBcCisgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLyBcCisgICAgICAgIFNIQTNfZ2V0c2V0ZXJzLCAgICAgLyogdHBfZ2V0c2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8gXAorICAgICAgICBweV9zaGEzX25ldywgICAgICAgIC8qIHRwX25ldyAqLyBcCisgICAgfQorCitQeURvY19TVFJWQVIoc2hhM18yNTZfX2RvY19fLAorInNoYTNfMjU2KFtzdHJpbmddKSAtPiBTSEEzIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgMzIgYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihzaGEzXzM4NF9fZG9jX18sCisic2hhM18zODQoW3N0cmluZ10pIC0+IFNIQTMgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA0OCBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKHNoYTNfNTEyX19kb2NfXywKKyJzaGEzXzUxMihbc3RyaW5nXSkgLT4gU0hBMyBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDY0IGJ5dGVzLiIpOworCitTSEEzX1RZUEUoU0hBM18yMjR0eXBlLCAiX3NoYTMuc2hhM18yMjQiLCBweV9zaGEzX25ld19fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoU0hBM18yNTZ0eXBlLCAiX3NoYTMuc2hhM18yNTYiLCBzaGEzXzI1Nl9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoU0hBM18zODR0eXBlLCAiX3NoYTMuc2hhM18zODQiLCBzaGEzXzM4NF9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoU0hBM181MTJ0eXBlLCAiX3NoYTMuc2hhM181MTIiLCBzaGEzXzUxMl9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CisKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworUHlEb2NfU1RSVkFSKGtlY2Nha18yMjRfX2RvY19fLAorImtlY2Nha18yMjQoW3N0cmluZ10pIC0+IEtlY2NhayBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IEtlY2NhayBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgMjggYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihrZWNjYWtfMjU2X19kb2NfXywKKyJrZWNjYWtfMjU2KFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDMyIGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoa2VjY2FrXzM4NF9fZG9jX18sCisia2VjY2FrXzM4NChbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA0OCBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKGtlY2Nha181MTJfX2RvY19fLAorImtlY2Nha181MTIoW3N0cmluZ10pIC0+IEtlY2NhayBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IEtlY2NhayBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNjQgYnl0ZXMuIik7CisKK1NIQTNfVFlQRShLZWNjYWtfMjI0dHlwZSwgIl9zaGEzLmtlY2Nha18yMjQiLCBrZWNjYWtfMjI0X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShLZWNjYWtfMjU2dHlwZSwgIl9zaGEzLmtlY2Nha18yNTYiLCBrZWNjYWtfMjU2X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShLZWNjYWtfMzg0dHlwZSwgIl9zaGEzLmtlY2Nha18zODQiLCBrZWNjYWtfMzg0X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShLZWNjYWtfNTEydHlwZSwgIl9zaGEzLmtlY2Nha181MTIiLCBrZWNjYWtfNTEyX19kb2NfXywgU0hBM19tZXRob2RzKTsKKyNlbmRpZgorCisKK3N0YXRpYyBQeU9iamVjdCAqCitfU0hBS0VfZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgZGlnZXN0bGVuLCBpbnQgaGV4KQoreworICAgIHVuc2lnbmVkIGNoYXIgKmRpZ2VzdCA9IE5VTEw7CisgICAgU0hBM19zdGF0ZSB0ZW1wOworICAgIGludCByZXM7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICAvKiBFeHRyYWN0TGFuZSBuZWVkcyBhdCBsZWFzdCBTSEEzX01BWF9ESUdFU1RTSVpFICsgU0hBM19MQU5FU0laRSBhbmQKKyAgICAgKiBTSEEzX0xBTkVTSVpFIGV4dHJhIHNwYWNlLgorICAgICAqLworICAgIGRpZ2VzdCA9ICh1bnNpZ25lZCBjaGFyKilQeU1lbV9NYWxsb2MoZGlnZXN0bGVuICsgU0hBM19MQU5FU0laRSk7CisgICAgaWYgKGRpZ2VzdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KKworICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgU0hBM19jb3B5c3RhdGUodGVtcCwgc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXMgPSBTSEEzX2RvbmUoJnRlbXAsIE5VTEwpOworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBkb25lKCkiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcmVzID0gU0hBM19zcXVlZXplKCZ0ZW1wLCBkaWdlc3QsIGRpZ2VzdGxlbiAqIDgpOworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBTcXVlZXplKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChoZXgpIHsKKyAgICAgICAgIHJlc3VsdCA9IF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIGRpZ2VzdGxlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3RsZW4pOworICAgIH0KKyAgZXJyb3I6CisgICAgaWYgKGRpZ2VzdCAhPSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoZGlnZXN0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGFrZV8xMjguZGlnZXN0CisKKyAgICBsZW5ndGg6IHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKQorICAgIFwKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjMxMzYwNWUyZjg3YmI4ZiBpbnB1dD02MDhjOGNhODBhZTlkMTE1XSovCit7CisgICAgcmV0dXJuIF9TSEFLRV9kaWdlc3Qoc2VsZiwgbGVuZ3RoLCAwKTsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGFrZV8xMjguaGV4ZGlnZXN0CisKKyAgICBsZW5ndGg6IHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKQorICAgIFwKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmOGUyZjFlNDkwOTQ0YTggaW5wdXQ9NjRlNTZiNDc2MGRiNDU3M10qLworeworICAgIHJldHVybiBfU0hBS0VfZGlnZXN0KHNlbGYsIGxlbmd0aCwgMSk7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIFNIQUtFX21ldGhvZHNbXSA9IHsKKyAgICBfU0hBM19TSEEzXzIyNF9DT1BZX01FVEhPRERFRgorICAgIF9TSEEzX1NIQUtFXzEyOF9ESUdFU1RfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBS0VfMTI4X0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBfU0hBM19TSEEzXzIyNF9VUERBVEVfTUVUSE9EREVGCisgICAge05VTEwsICAgICAgICBOVUxMfSAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeURvY19TVFJWQVIoc2hha2VfMTI4X19kb2NfXywKKyJzaGFrZV8xMjgoW3N0cmluZ10pIC0+IFNIQUtFIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBS0UgaGFzaCBvYmplY3QuIik7CisKK1B5RG9jX1NUUlZBUihzaGFrZV8yNTZfX2RvY19fLAorInNoYWtlXzI1Nihbc3RyaW5nXSkgLT4gU0hBS0Ugb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEFLRSBoYXNoIG9iamVjdC4iKTsKKworU0hBM19UWVBFKFNIQUtFMTI4dHlwZSwgIl9zaGEzLnNoYWtlXzEyOCIsIHNoYWtlXzEyOF9fZG9jX18sIFNIQUtFX21ldGhvZHMpOworU0hBM19UWVBFKFNIQUtFMjU2dHlwZSwgIl9zaGEzLnNoYWtlXzI1NiIsIHNoYWtlXzI1Nl9fZG9jX18sIFNIQUtFX21ldGhvZHMpOworCisKKy8qIEluaXRpYWxpemUgdGhpcyBtb2R1bGUuICovCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9TSEEzbW9kdWxlID0geworICAgICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgICAgICJfc2hhMyIsCisgICAgICAgIE5VTEwsCisgICAgICAgIC0xLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMCit9OworCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3NoYTModm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisKKyAgICBpZiAoKG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9TSEEzbW9kdWxlKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyNkZWZpbmUgaW5pdF9zaGEzdHlwZShuYW1lLCB0eXBlKSAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X1RZUEUodHlwZSkgPSAmUHlUeXBlX1R5cGU7IFwKKyAgICAgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApIHsgXAorICAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKXR5cGUpOyAgXAorICAgICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sIG5hbWUsIChQeU9iamVjdCAqKXR5cGUpIDwgMCkgeyBcCisgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUoMCkKKworICAgIGluaXRfc2hhM3R5cGUoInNoYTNfMjI0IiwgJlNIQTNfMjI0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hhM18yNTYiLCAmU0hBM18yNTZ0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzM4NCIsICZTSEEzXzM4NHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoInNoYTNfNTEyIiwgJlNIQTNfNTEydHlwZSk7CisjaWZkZWYgUFlfV0lUSF9LRUNDQUsKKyAgICBpbml0X3NoYTN0eXBlKCJrZWNjYWtfMjI0IiwgJktlY2Nha18yMjR0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJrZWNjYWtfMjU2IiwgJktlY2Nha18yNTZ0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJrZWNjYWtfMzg0IiwgJktlY2Nha18zODR0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJrZWNjYWtfNTEyIiwgJktlY2Nha181MTJ0eXBlKTsKKyNlbmRpZgorICAgIGluaXRfc2hhM3R5cGUoInNoYWtlXzEyOCIsICZTSEFLRTEyOHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoInNoYWtlXzI1NiIsICZTSEFLRTI1NnR5cGUpOworCisjdW5kZWYgaW5pdF9zaGEzdHlwZQorCisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJrZWNjYWtvcHQiLCBLZWNjYWtPcHQpIDwgMCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgImltcGxlbWVudGF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VjY2FrUDE2MDBfaW1wbGVtZW50YXRpb24pIDwgMCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHJldHVybiBtOworICBlcnJvcjoKKyAgICBQeV9ERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYyBiL01vZHVsZXMvX3NxbGl0ZS9jYWNoZS5jCmluZGV4IDM2ODlhNGUuLjYyYzU4OTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jYWNoZS5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jYWNoZS5jCkBAIC0yNDQsOCArMjQ0LDcgQEAKICAgICAgICAgcHRyID0gcHRyLT5uZXh0OwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIGNhY2hlX21ldGhvZHNbXSA9IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IDNjNTIxMDguLmQyOWZhZmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtMTY1LDcgKzE2NSw2IEBACiAgICAgc2VsZi0+c3RhdGVtZW50X2NhY2hlLT5kZWNyZWZfZmFjdG9yeSA9IDA7CiAgICAgUHlfREVDUkVGKHNlbGYpOwogCi0gICAgc2VsZi0+aW5UcmFuc2FjdGlvbiA9IDA7CiAgICAgc2VsZi0+ZGV0ZWN0X3R5cGVzID0gZGV0ZWN0X3R5cGVzOwogICAgIHNlbGYtPnRpbWVvdXQgPSB0aW1lb3V0OwogICAgICh2b2lkKXNxbGl0ZTNfYnVzeV90aW1lb3V0KHNlbGYtPmRiLCAoaW50KSh0aW1lb3V0KjEwMDApKTsKQEAgLTIwMiwyNiArMjAxLDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotLyogRW1wdHkgdGhlIGVudGlyZSBzdGF0ZW1lbnQgY2FjaGUgb2YgdGhpcyBjb25uZWN0aW9uICovCi12b2lkIHB5c3FsaXRlX2ZsdXNoX3N0YXRlbWVudF9jYWNoZShweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmKQotewotICAgIHB5c3FsaXRlX05vZGUqIG5vZGU7Ci0gICAgcHlzcWxpdGVfU3RhdGVtZW50KiBzdGF0ZW1lbnQ7Ci0KLSAgICBub2RlID0gc2VsZi0+c3RhdGVtZW50X2NhY2hlLT5maXJzdDsKLQotICAgIHdoaWxlIChub2RlKSB7Ci0gICAgICAgIHN0YXRlbWVudCA9IChweXNxbGl0ZV9TdGF0ZW1lbnQqKShub2RlLT5kYXRhKTsKLSAgICAgICAgKHZvaWQpcHlzcWxpdGVfc3RhdGVtZW50X2ZpbmFsaXplKHN0YXRlbWVudCk7Ci0gICAgICAgIG5vZGUgPSBub2RlLT5uZXh0OwotICAgIH0KLQotICAgIFB5X1NFVFJFRihzZWxmLT5zdGF0ZW1lbnRfY2FjaGUsCi0gICAgICAgICAgICAgIChweXNxbGl0ZV9DYWNoZSAqKVB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikmcHlzcWxpdGVfQ2FjaGVUeXBlLCAiTyIsIHNlbGYpKTsKLSAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgc2VsZi0+c3RhdGVtZW50X2NhY2hlLT5kZWNyZWZfZmFjdG9yeSA9IDA7Ci19Ci0KIC8qIGFjdGlvbiBpbiAoQUNUSU9OX1JFU0VULCBBQ1RJT05fRklOQUxJWkUpICovCiB2b2lkIHB5c3FsaXRlX2RvX2FsbF9zdGF0ZW1lbnRzKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIGludCBhY3Rpb24sIGludCByZXNldF9jdXJzb3JzKQogewpAQCAtMzY2LDggKzM0NSw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIC8qCkBAIC00MDYsOSArMzg0LDcgQEAKICAgICB9CiAKICAgICByYyA9IHB5c3FsaXRlX3N0ZXAoc3RhdGVtZW50LCBzZWxmKTsKLSAgICBpZiAocmMgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgc2VsZi0+aW5UcmFuc2FjdGlvbiA9IDE7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAocmMgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgX3B5c3FsaXRlX3NldGVycm9yKHNlbGYtPmRiLCBzdGF0ZW1lbnQpOwogICAgIH0KIApAQCAtNDM5LDcgKzQxNSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChzZWxmLT5pblRyYW5zYWN0aW9uKSB7CisgICAgaWYgKCFzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmRiKSkgewogCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgcmMgPSBzcWxpdGUzX3ByZXBhcmUoc2VsZi0+ZGIsICJDT01NSVQiLCAtMSwgJnN0YXRlbWVudCwgJnRhaWwpOwpAQCAtNDUwLDkgKzQyNiw3IEBACiAgICAgICAgIH0KIAogICAgICAgICByYyA9IHB5c3FsaXRlX3N0ZXAoc3RhdGVtZW50LCBzZWxmKTsKLSAgICAgICAgaWYgKHJjID09IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHJjICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBfcHlzcWxpdGVfc2V0ZXJyb3Ioc2VsZi0+ZGIsIHN0YXRlbWVudCk7CiAgICAgICAgIH0KIApAQCAtNDg0LDcgKzQ1OCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChzZWxmLT5pblRyYW5zYWN0aW9uKSB7CisgICAgaWYgKCFzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmRiKSkgewogICAgICAgICBweXNxbGl0ZV9kb19hbGxfc3RhdGVtZW50cyhzZWxmLCBBQ1RJT05fUkVTRVQsIDEpOwogCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTQ5Niw5ICs0NzAsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGVwKHN0YXRlbWVudCwgc2VsZik7Ci0gICAgICAgIGlmIChyYyA9PSBTUUxJVEVfRE9ORSkgewotICAgICAgICAgICAgc2VsZi0+aW5UcmFuc2FjdGlvbiA9IDA7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgX3B5c3FsaXRlX3NldGVycm9yKHNlbGYtPmRiLCBzdGF0ZW1lbnQpOwogICAgICAgICB9CiAKQEAgLTY3Myw3ICs2NDUsNyBAQAogICAgIGFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IChQeU9iamVjdCoqKXNxbGl0ZTNfYWdncmVnYXRlX2NvbnRleHQoY29udGV4dCwgc2l6ZW9mKFB5T2JqZWN0KikpOwogCiAgICAgaWYgKCphZ2dyZWdhdGVfaW5zdGFuY2UgPT0gMCkgewotICAgICAgICAqYWdncmVnYXRlX2luc3RhbmNlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGFnZ3JlZ2F0ZV9jbGFzcywgIiIpOworICAgICAgICAqYWdncmVnYXRlX2luc3RhbmNlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGFnZ3JlZ2F0ZV9jbGFzcywgTlVMTCk7CiAKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgICphZ2dyZWdhdGVfaW5zdGFuY2UgPSAwOwpAQCAtNzQ1LDcgKzcxNyw3IEBACiAgICAgUHlFcnJfRmV0Y2goJmV4Y2VwdGlvbiwgJnZhbHVlLCAmdGIpOwogICAgIHJlc3RvcmUgPSAxOwogCi0gICAgZnVuY3Rpb25fcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgqYWdncmVnYXRlX2luc3RhbmNlLCAmUHlJZF9maW5hbGl6ZSwgIiIpOworICAgIGZ1bmN0aW9uX3Jlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSwgJlB5SWRfZmluYWxpemUsIE5VTEwpOwogCiAgICAgUHlfREVDUkVGKCphZ2dyZWdhdGVfaW5zdGFuY2UpOwogCkBAIC04NzQsOCArODQ2LDcgQEAKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmZ1bmN0aW9uX3BpbmJvYXJkLCBmdW5jLCBQeV9Ob25lKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIH0KIApAQCAtOTA2LDggKzg3Nyw3IEBACiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5mdW5jdGlvbl9waW5ib2FyZCwgYWdncmVnYXRlX2NsYXNzLCBQeV9Ob25lKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIH0KIApAQCAtOTYzLDcgKzkzMyw3IEBACiAKICAgICBnaWxzdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7CiAjZW5kaWYKLSAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0Kil1c2VyX2FyZywgIiIpOworICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QqKXVzZXJfYXJnLCBOVUxMKTsKIAogICAgIGlmICghcmV0KSB7CiAgICAgICAgIGlmIChfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MpIHsKQEAgLTEwNDIsOCArMTAxMiw3IEBACiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5mdW5jdGlvbl9waW5ib2FyZCwgYXV0aG9yaXplcl9jYiwgUHlfTm9uZSkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTEwNzIsOCArMTA0MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfdHJhY2VfY2FsbGJhY2socHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCkBAIC0xMTAwLDggKzEwNjgsNyBAQAogICAgICAgICBzcWxpdGUzX3RyYWNlKHNlbGYtPmRiLCBfdHJhY2VfY2FsbGJhY2ssIHRyYWNlX2NhbGxiYWNrKTsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKICNpZmRlZiBIQVZFX0xPQURfRVhURU5TSU9OCkBAIC0xMTI0LDggKzEwOTEsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgIkVycm9yIGVuYWJsaW5nIGxvYWQgZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIH0KIApAQCAtMTE0OCw4ICsxMTE0LDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX09wZXJhdGlvbmFsRXJyb3IsIGVycm1zZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIH0KICNlbmRpZgpAQCAtMTE4Niw2ICsxMTUxLDE3IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fZ2V0X2luX3RyYW5zYWN0aW9uKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIHZvaWQqIHVudXNlZCkKK3sKKyAgICBpZiAoIXB5c3FsaXRlX2NoZWNrX2Nvbm5lY3Rpb24oc2VsZikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5kYikpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKwogc3RhdGljIGludCBweXNxbGl0ZV9jb25uZWN0aW9uX3NldF9pc29sYXRpb25fbGV2ZWwocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGlzb2xhdGlvbl9sZXZlbCkKIHsKICAgICBpZiAoaXNvbGF0aW9uX2xldmVsID09IFB5X05vbmUpIHsKQEAgLTExOTYsNyArMTE3Miw2IEBACiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogCiAgICAgICAgIHNlbGYtPmJlZ2luX3N0YXRlbWVudCA9IE5VTEw7Ci0gICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqY2FuZGlkYXRlOwogICAgICAgICBQeU9iamVjdCAqdXBwZXJjYXNlX2xldmVsOwpAQCAtMTI5OSw3ICsxMjc0LDcgQEAKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKIAotICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKKyAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCBOVUxMKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEzMjgsNyArMTMwMyw3IEBACiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CiAKLSAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgTlVMTCk7CiAgICAgaWYgKCFjdXJzb3IpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC0xMzU3LDcgKzEzMzIsNyBAQAogICAgIFB5T2JqZWN0KiByZXN1bHQgPSAwOwogICAgIFB5T2JqZWN0KiBtZXRob2QgPSAwOwogCi0gICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsIE5VTEwpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTUyNyw3ICsxNTAyLDcgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIHVwcGVyY2FzZV9uYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChuYW1lLCAmUHlJZF91cHBlciwgIiIpOworICAgIHVwcGVyY2FzZV9uYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChuYW1lLCAmUHlJZF91cHBlciwgTlVMTCk7CiAgICAgaWYgKCF1cHBlcmNhc2VfbmFtZSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQpAQCAtMTYxOSw3ICsxNTk0LDcgQEAKICAgICAgICAgbWV0aG9kX25hbWUgPSAicm9sbGJhY2siOwogICAgIH0KIAotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCBtZXRob2RfbmFtZSwgIiIpOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCBtZXRob2RfbmFtZSwgTlVMTCk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTYyOCwxMiArMTYwMywxMyBAQAogICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KIAotc3RhdGljIGNoYXIgY29ubmVjdGlvbl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjb25uZWN0aW9uX2RvY1tdID0KIFB5RG9jX1NUUigiU1FMaXRlIGRhdGFiYXNlIGNvbm5lY3Rpb24gb2JqZWN0LiIpOwogCiBzdGF0aWMgUHlHZXRTZXREZWYgY29ubmVjdGlvbl9nZXRzZXRbXSA9IHsKICAgICB7Imlzb2xhdGlvbl9sZXZlbCIsICAoZ2V0dGVyKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZ2V0X2lzb2xhdGlvbl9sZXZlbCwgKHNldHRlcilweXNxbGl0ZV9jb25uZWN0aW9uX3NldF9pc29sYXRpb25fbGV2ZWx9LAogICAgIHsidG90YWxfY2hhbmdlcyIsICAoZ2V0dGVyKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZ2V0X3RvdGFsX2NoYW5nZXMsIChzZXR0ZXIpMH0sCisgICAgeyJpbl90cmFuc2FjdGlvbiIsICAoZ2V0dGVyKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZ2V0X2luX3RyYW5zYWN0aW9uLCAoc2V0dGVyKTB9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMTY5NSw3ICsxNjcxLDYgQEAKICAgICB7Ik5vdFN1cHBvcnRlZEVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIE5vdFN1cHBvcnRlZEVycm9yKSwgUkVBRE9OTFl9LAogICAgIHsicm93X2ZhY3RvcnkiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHlzcWxpdGVfQ29ubmVjdGlvbiwgcm93X2ZhY3RvcnkpfSwKICAgICB7InRleHRfZmFjdG9yeSIsIFRfT0JKRUNULCBvZmZzZXRvZihweXNxbGl0ZV9Db25uZWN0aW9uLCB0ZXh0X2ZhY3RvcnkpfSwKLSAgICB7ImluX3RyYW5zYWN0aW9uIiwgVF9CT09MLCBvZmZzZXRvZihweXNxbGl0ZV9Db25uZWN0aW9uLCBpblRyYW5zYWN0aW9uKSwgUkVBRE9OTFl9LAogICAgIHtOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaCBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKaW5kZXggYWRiZmI1NC4uMjg2MGEwYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAorKysgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCkBAIC0zNywxMCArMzcsNiBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBzcWxpdGUzKiBkYjsKIAotICAgIC8qIDEgaWYgd2UgYXJlIGN1cnJlbnRseSB3aXRoaW4gYSB0cmFuc2FjdGlvbiwgaS4gZS4gaWYgYSBCRUdJTiBoYXMgYmVlbgotICAgICAqIGlzc3VlZCAqLwotICAgIGNoYXIgaW5UcmFuc2FjdGlvbjsKLQogICAgIC8qIHRoZSB0eXBlIGRldGVjdGlvbiBtb2RlLiBPbmx5IDAsIFBBUlNFX0RFQ0xUWVBFUywgUEFSU0VfQ09MTkFNRVMgb3IgYQogICAgICAqIGJpdHdpc2UgY29tYmluYXRpb24gdGhlcmVvZiBtYWtlcyBzZW5zZSAqLwogICAgIGludCBkZXRlY3RfdHlwZXM7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggZTE2NzZkZS4uYzcxNjlmNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtMjcsNDUgKzI3LDcgQEAKIAogUHlPYmplY3QqIHB5c3FsaXRlX2N1cnNvcl9pdGVybmV4dChweXNxbGl0ZV9DdXJzb3IqIHNlbGYpOwogCi1zdGF0aWMgY2hhciogZXJybXNnX2ZldGNoX2Fjcm9zc19yb2xsYmFjayA9ICJDdXJzb3IgbmVlZGVkIHRvIGJlIHJlc2V0IGJlY2F1c2Ugb2YgY29tbWl0L3JvbGxiYWNrIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGZldGNoZWQgZnJvbS4iOwotCi1zdGF0aWMgcHlzcWxpdGVfU3RhdGVtZW50S2luZCBkZXRlY3Rfc3RhdGVtZW50X3R5cGUoY29uc3QgY2hhciogc3RhdGVtZW50KQotewotICAgIGNoYXIgYnVmWzIwXTsKLSAgICBjb25zdCBjaGFyKiBzcmM7Ci0gICAgY2hhciogZHN0OwotCi0gICAgc3JjID0gc3RhdGVtZW50OwotICAgIC8qIHNraXAgb3ZlciB3aGl0ZXBhY2UgKi8KLSAgICB3aGlsZSAoKnNyYyA9PSAnXHInIHx8ICpzcmMgPT0gJ1xuJyB8fCAqc3JjID09ICcgJyB8fCAqc3JjID09ICdcdCcpIHsKLSAgICAgICAgc3JjKys7Ci0gICAgfQotCi0gICAgaWYgKCpzcmMgPT0gMCkKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9JTlZBTElEOwotCi0gICAgZHN0ID0gYnVmOwotICAgICpkc3QgPSAwOwotICAgIHdoaWxlIChQeV9JU0FMUEhBKCpzcmMpICYmIChkc3QgLSBidWYpIDwgKChQeV9zc2l6ZV90KXNpemVvZihidWYpIC0gMikpIHsKLSAgICAgICAgKmRzdCsrID0gUHlfVE9MT1dFUigqc3JjKyspOwotICAgIH0KLQotICAgICpkc3QgPSAwOwotCi0gICAgaWYgKCFzdHJjbXAoYnVmLCAic2VsZWN0IikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9TRUxFQ1Q7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wKGJ1ZiwgImluc2VydCIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfSU5TRVJUOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJ1cGRhdGUiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX1VQREFURTsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAiZGVsZXRlIikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9ERUxFVEU7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wKGJ1ZiwgInJlcGxhY2UiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX1JFUExBQ0U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9PVEhFUjsKLSAgICB9Ci19CitzdGF0aWMgY29uc3QgY2hhciBlcnJtc2dfZmV0Y2hfYWNyb3NzX3JvbGxiYWNrW10gPSAiQ3Vyc29yIG5lZWRlZCB0byBiZSByZXNldCBiZWNhdXNlIG9mIGNvbW1pdC9yb2xsYmFjayBhbmQgY2FuIG5vIGxvbmdlciBiZSBmZXRjaGVkIGZyb20uIjsKIAogc3RhdGljIGludCBweXNxbGl0ZV9jdXJzb3JfaW5pdChweXNxbGl0ZV9DdXJzb3IqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQogewpAQCAtMTQzLDcgKzEwNSw3IEBACiAgICAgUHlPYmplY3QqIHJldHZhbDsKICAgICBfUHlfSURFTlRJRklFUih1cHBlcik7CiAKLSAgICB1cGNhc2Vfa2V5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChrZXksICZQeUlkX3VwcGVyLCAiIik7CisgICAgdXBjYXNlX2tleSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoa2V5LCAmUHlJZF91cHBlciwgTlVMTCk7CiAgICAgaWYgKCF1cGNhc2Vfa2V5KSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI0Miw4ICsyMDQsNyBAQAogICAgIGNvbnN0IGNoYXIqIHBvczsKIAogICAgIGlmICghY29sbmFtZSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiAKICAgICBmb3IgKHBvcyA9IGNvbG5hbWU7OyBwb3MrKykgewpAQCAtNDI4LDkgKzM4OSw5IEBACiAgICAgUHlPYmplY3QqIGZ1bmNfYXJnczsKICAgICBQeU9iamVjdCogcmVzdWx0OwogICAgIGludCBudW1jb2xzOwotICAgIGludCBzdGF0ZW1lbnRfdHlwZTsKICAgICBQeU9iamVjdCogZGVzY3JpcHRvcjsKICAgICBQeU9iamVjdCogc2Vjb25kX2FyZ3VtZW50ID0gTlVMTDsKKyAgICBzcWxpdGVfaW50NjQgbGFzdHJvd2lkOwogCiAgICAgaWYgKCFjaGVja19jdXJzb3Ioc2VsZikpIHsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTUxMSw3ICs0NzIsNyBAQAogICAgIC8qIHJlc2V0IGRlc2NyaXB0aW9uIGFuZCByb3djb3VudCAqLwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICBQeV9TRVRSRUYoc2VsZi0+ZGVzY3JpcHRpb24sIFB5X05vbmUpOwotICAgIHNlbGYtPnJvd2NvdW50ID0gLTFMOworICAgIHNlbGYtPnJvd2NvdW50ID0gMEw7CiAKICAgICBmdW5jX2FyZ3MgPSBQeVR1cGxlX05ldygxKTsKICAgICBpZiAoIWZ1bmNfYXJncykgewpAQCAtNTUwLDQzICs1MTEsMTkgQEAKICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfbWFya19kaXJ0eShzZWxmLT5zdGF0ZW1lbnQpOwogCi0gICAgc3RhdGVtZW50X3R5cGUgPSBkZXRlY3Rfc3RhdGVtZW50X3R5cGUob3BlcmF0aW9uX2NzdHIpOwotICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT5iZWdpbl9zdGF0ZW1lbnQpIHsKLSAgICAgICAgc3dpdGNoIChzdGF0ZW1lbnRfdHlwZSkgewotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfVVBEQVRFOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfREVMRVRFOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfSU5TRVJUOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfUkVQTEFDRToKLSAgICAgICAgICAgICAgICBpZiAoIXNlbGYtPmNvbm5lY3Rpb24tPmluVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gX3B5c3FsaXRlX2Nvbm5lY3Rpb25fYmVnaW4oc2VsZi0+Y29ubmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX09USEVSOgotICAgICAgICAgICAgICAgIC8qIGl0J3MgYSBEREwgc3RhdGVtZW50IG9yIHNvbWV0aGluZyBzaW1pbGFyCi0gICAgICAgICAgICAgICAgICAgLSB3ZSBiZXR0ZXIgQ09NTUlUIGZpcnN0IHNvIGl0IHdvcmtzIGZvciBhbGwgY2FzZXMgKi8KLSAgICAgICAgICAgICAgICBpZiAoc2VsZi0+Y29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbikgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBweXNxbGl0ZV9jb25uZWN0aW9uX2NvbW1pdChzZWxmLT5jb25uZWN0aW9uLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfU0VMRUNUOgotICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsZSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfUHJvZ3JhbW1pbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllvdSBjYW5ub3QgZXhlY3V0ZSBTRUxFQ1Qgc3RhdGVtZW50cyBpbiBleGVjdXRlbWFueSgpLiIpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAvKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgZG8gbm90IHN0YXJ0IGEgdHJhbnNhY3Rpb24gaWYgYQorICAgICAgIERETCBzdGF0ZW1lbnQgaXMgZW5jb3VudGVyZWQuICBJZiBhbnlib2R5IHdhbnRzIHRyYW5zYWN0aW9uYWwgRERMLAorICAgICAgIHRoZXkgY2FuIGlzc3VlIGEgQkVHSU4gc3RhdGVtZW50IG1hbnVhbGx5LiAqLworICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT5iZWdpbl9zdGF0ZW1lbnQgJiYgIXNxbGl0ZTNfc3RtdF9yZWFkb25seShzZWxmLT5zdGF0ZW1lbnQtPnN0KSAmJiAhc2VsZi0+c3RhdGVtZW50LT5pc19kZGwpIHsKKyAgICAgICAgaWYgKHNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBfcHlzcWxpdGVfY29ubmVjdGlvbl9iZWdpbihzZWxmLT5jb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogCi0KICAgICB3aGlsZSAoMSkgewogICAgICAgICBwYXJhbWV0ZXJzID0gUHlJdGVyX05leHQocGFyYW1ldGVyc19pdGVyKTsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKSB7CkBAIC02NzIsNiArNjA5LDIwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIXNxbGl0ZTNfc3RtdF9yZWFkb25seShzZWxmLT5zdGF0ZW1lbnQtPnN0KSkgeworICAgICAgICAgICAgc2VsZi0+cm93Y291bnQgKz0gKGxvbmcpc3FsaXRlM19jaGFuZ2VzKHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYtPnJvd2NvdW50PSAtMUw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW11bHRpcGxlKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdHJvd2lkKTsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGxhc3Ryb3dpZCA9IHNxbGl0ZTNfbGFzdF9pbnNlcnRfcm93aWQoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHNlbGYtPmxhc3Ryb3dpZCA9IF9weXNxbGl0ZV9sb25nX2Zyb21faW50NjQobGFzdHJvd2lkKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChyYyA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBpZiAobXVsdGlwbGUpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfUHJvZ3JhbW1pbmdFcnJvciwgImV4ZWN1dGVtYW55KCkgY2FuIG9ubHkgZXhlY3V0ZSBETUwgc3RhdGVtZW50cy4iKTsKQEAgLTY4NiwyOSArNjM3LDYgQEAKICAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPnN0YXRlbWVudCk7CiAgICAgICAgIH0KIAotICAgICAgICBzd2l0Y2ggKHN0YXRlbWVudF90eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9VUERBVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9ERUxFVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9JTlNFUlQ6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9SRVBMQUNFOgotICAgICAgICAgICAgICAgIGlmIChzZWxmLT5yb3djb3VudCA9PSAtMUwpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi0+cm93Y291bnQgPSAwTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2VsZi0+cm93Y291bnQgKz0gKGxvbmcpc3FsaXRlM19jaGFuZ2VzKHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKLSAgICAgICAgfQotCi0gICAgICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0cm93aWQpOwotICAgICAgICBpZiAoIW11bHRpcGxlICYmIHN0YXRlbWVudF90eXBlID09IFNUQVRFTUVOVF9JTlNFUlQpIHsKLSAgICAgICAgICAgIHNxbGl0ZV9pbnQ2NCBsYXN0cm93aWQ7Ci0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBsYXN0cm93aWQgPSBzcWxpdGUzX2xhc3RfaW5zZXJ0X3Jvd2lkKHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKLSAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICBzZWxmLT5sYXN0cm93aWQgPSBfcHlzcWxpdGVfbG9uZ19mcm9tX2ludDY0KGxhc3Ryb3dpZCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICBzZWxmLT5sYXN0cm93aWQgPSBQeV9Ob25lOwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKG11bHRpcGxlKSB7CiAgICAgICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgfQpAQCAtNzE2LDE1ICs2NDQsNiBAQAogICAgIH0KIAogZXJyb3I6Ci0gICAgLyoganVzdCB0byBiZSBzdXJlIChpbXBsaWNpdCBST0xMQkFDS3Mgd2l0aCBPTiBDT05GTElDVCBST0xMQkFDSy9PUgotICAgICAqIFJPTExCQUNLIGNvdWxkIGhhdmUgaGFwcGVuZWQgKi8KLSAgICAjaWZkZWYgU1FMSVRFX1ZFUlNJT05fTlVNQkVSCi0gICAgI2lmIFNRTElURV9WRVJTSU9OX05VTUJFUiA+PSAzMDAyMDAyCi0gICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24gJiYgc2VsZi0+Y29ubmVjdGlvbi0+ZGIpCi0gICAgICAgIHNlbGYtPmNvbm5lY3Rpb24tPmluVHJhbnNhY3Rpb24gPSAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5jb25uZWN0aW9uLT5kYik7Ci0gICAgI2VuZGlmCi0gICAgI2VuZGlmCi0KICAgICBQeV9YREVDUkVGKHBhcmFtZXRlcnMpOwogICAgIFB5X1hERUNSRUYocGFyYW1ldGVyc19pdGVyKTsKICAgICBQeV9YREVDUkVGKHBhcmFtZXRlcnNfbGlzdCk7CkBAIC05MTMsOCArODMyLDcgQEAKIAogICAgIHJvdyA9IHB5c3FsaXRlX2N1cnNvcl9pdGVybmV4dChzZWxmKTsKICAgICBpZiAoIXJvdyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiAKICAgICByZXR1cm4gcm93OwpAQCAtOTk1LDggKzkxMyw3IEBACiBQeU9iamVjdCogcHlzcWxpdGVfbm9vcChweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICAvKiBkb24ndCBjYXJlLCByZXR1cm4gTm9uZSAqLwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlPYmplY3QqIHB5c3FsaXRlX2N1cnNvcl9jbG9zZShweXNxbGl0ZV9DdXJzb3IqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQpAQCAtMTAxMiw4ICs5MjksNyBAQAogCiAgICAgc2VsZi0+Y2xvc2VkID0gMTsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIGN1cnNvcl9tZXRob2RzW10gPSB7CkBAIC0xMDQ5LDcgKzk2NSw3IEBACiAgICAge05VTEx9CiB9OwogCi1zdGF0aWMgY2hhciBjdXJzb3JfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgY3Vyc29yX2RvY1tdID0KIFB5RG9jX1NUUigiU1FMaXRlIGRhdGFiYXNlIGN1cnNvciBjbGFzcy4iKTsKIAogUHlUeXBlT2JqZWN0IHB5c3FsaXRlX0N1cnNvclR5cGUgPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmggYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmgKaW5kZXggMTE4YmEzOC4uMjhiYmQ1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuaApAQCAtNTEsMTIgKzUxLDYgQEAKICAgICBQeU9iamVjdCogaW5fd2Vha3JlZmxpc3Q7IC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCiB9IHB5c3FsaXRlX0N1cnNvcjsKIAotdHlwZWRlZiBlbnVtIHsKLSAgICBTVEFURU1FTlRfSU5WQUxJRCwgU1RBVEVNRU5UX0lOU0VSVCwgU1RBVEVNRU5UX0RFTEVURSwKLSAgICBTVEFURU1FTlRfVVBEQVRFLCBTVEFURU1FTlRfUkVQTEFDRSwgU1RBVEVNRU5UX1NFTEVDVCwKLSAgICBTVEFURU1FTlRfT1RIRVIKLX0gcHlzcWxpdGVfU3RhdGVtZW50S2luZDsKLQogZXh0ZXJuIFB5VHlwZU9iamVjdCBweXNxbGl0ZV9DdXJzb3JUeXBlOwogCiBQeU9iamVjdCogcHlzcWxpdGVfY3Vyc29yX2V4ZWN1dGUocHlzcWxpdGVfQ3Vyc29yKiBzZWxmLCBQeU9iamVjdCogYXJncyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKaW5kZXggN2E3ZTg2MC4uY2M0NTMzMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwpAQCAtMTM5LDggKzEzOSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCAiQ2hhbmdpbmcgdGhlIHNoYXJlZF9jYWNoZSBmbGFnIGZhaWxlZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTE3Miw4ICsxNzEsNyBAQAogICAgIGlmIChyYyA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihtb2R1bGVfcmVnaXN0ZXJfYWRhcHRlcl9kb2MsCkBAIC0xOTQsNyArMTkyLDcgQEAKICAgICB9CiAKICAgICAvKiBjb252ZXJ0IHRoZSBuYW1lIHRvIHVwcGVyIGNhc2UgKi8KLSAgICBuYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvcmlnX25hbWUsICZQeUlkX3VwcGVyLCAiIik7CisgICAgbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3JpZ19uYW1lLCAmUHlJZF91cHBlciwgTlVMTCk7CiAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMjIxLDggKzIxOSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKGVuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzX2RvYywKQEAgLTI2MSwxMyArMjU4LDEzIEBACiB9OwogCiBzdHJ1Y3QgX0ludENvbnN0YW50UGFpciB7Ci0gICAgY2hhciogY29uc3RhbnRfbmFtZTsKKyAgICBjb25zdCBjaGFyICpjb25zdGFudF9uYW1lOwogICAgIGludCBjb25zdGFudF92YWx1ZTsKIH07CiAKIHR5cGVkZWYgc3RydWN0IF9JbnRDb25zdGFudFBhaXIgSW50Q29uc3RhbnRQYWlyOwogCi1zdGF0aWMgSW50Q29uc3RhbnRQYWlyIF9pbnRfY29uc3RhbnRzW10gPSB7CitzdGF0aWMgY29uc3QgSW50Q29uc3RhbnRQYWlyIF9pbnRfY29uc3RhbnRzW10gPSB7CiAgICAgeyJQQVJTRV9ERUNMVFlQRVMiLCBQQVJTRV9ERUNMVFlQRVN9LAogICAgIHsiUEFSU0VfQ09MTkFNRVMiLCBQQVJTRV9DT0xOQU1FU30sCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYwppbmRleCBlODcwNjMzLi43Yjk4MDEzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCkBAIC01NCw2ICs1NCw3IEBACiAgICAgaW50IHJjOwogICAgIGNvbnN0IGNoYXIqIHNxbF9jc3RyOwogICAgIFB5X3NzaXplX3Qgc3FsX2NzdHJfbGVuOworICAgIGNvbnN0IGNoYXIqIHA7CiAKICAgICBzZWxmLT5zdCA9IE5VTEw7CiAgICAgc2VsZi0+aW5fdXNlID0gMDsKQEAgLTcyLDYgKzczLDIzIEBACiAgICAgUHlfSU5DUkVGKHNxbCk7CiAgICAgc2VsZi0+c3FsID0gc3FsOwogCisgICAgLyogZGV0ZXJtaW5lIGlmIHRoZSBzdGF0ZW1lbnQgaXMgYSBEREwgc3RhdGVtZW50ICovCisgICAgc2VsZi0+aXNfZGRsID0gMDsKKyAgICBmb3IgKHAgPSBzcWxfY3N0cjsgKnAgIT0gMDsgcCsrKSB7CisgICAgICAgIHN3aXRjaCAoKnApIHsKKyAgICAgICAgICAgIGNhc2UgJyAnOgorICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgY2FzZSAnXHQnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgc2VsZi0+aXNfZGRsID0gKFB5T1Nfc3RybmljbXAocCwgImNyZWF0ZSAiLCA3KSA9PSAwKQorICAgICAgICAgICAgICAgICAgICB8fCAoUHlPU19zdHJuaWNtcChwLCAiZHJvcCAiLCA1KSA9PSAwKQorICAgICAgICAgICAgICAgICAgICB8fCAoUHlPU19zdHJuaWNtcChwLCAicmVpbmRleCAiLCA4KSA9PSAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJjID0gc3FsaXRlM19wcmVwYXJlKGNvbm5lY3Rpb24tPmRiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNxbF9jc3RyLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCmluZGV4IDQ2ODE0NDMuLjZlZWYxNjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaAorKysgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAKICAgICBzcWxpdGUzX3N0bXQqIHN0OwogICAgIFB5T2JqZWN0KiBzcWw7CiAgICAgaW50IGluX3VzZTsKKyAgICBpbnQgaXNfZGRsOwogICAgIFB5T2JqZWN0KiBpbl93ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KIH0gcHlzcWxpdGVfU3RhdGVtZW50OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jIGIvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYwppbmRleCAzMTJmZTNiLi4zNTFiMWI0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMKQEAgLTExMyw3ICsxMTMsNiBAQAogUHlPYmplY3QgKgogX3B5c3FsaXRlX2xvbmdfZnJvbV9pbnQ2NChzcWxpdGVfaW50NjQgdmFsdWUpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICMgaWYgU0laRU9GX0xPTkdfTE9ORyA8IDgKICAgICBpZiAodmFsdWUgPiBQWV9MTE9OR19NQVggfHwgdmFsdWUgPCBQWV9MTE9OR19NSU4pIHsKICAgICAgICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgmdmFsdWUsIHNpemVvZih2YWx1ZSksCkBAIC0xMjQsMTQgKzEyMyw2IEBACiAgICAgaWYgKHZhbHVlID4gTE9OR19NQVggfHwgdmFsdWUgPCBMT05HX01JTikKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcodmFsdWUpOwogIyBlbmRpZgotI2Vsc2UKLSMgaWYgU0laRU9GX0xPTkcgPCA4Ci0gICAgaWYgKHZhbHVlID4gTE9OR19NQVggfHwgdmFsdWUgPCBMT05HX01JTikgewotICAgICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU19MSVRUTEVfRU5ESUFOLCAxIC8qIHNpZ25lZCAqLyk7Ci0gICAgfQotIyBlbmRpZgotI2VuZGlmCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHZhbHVlLCBzcWxpdGVfaW50NjQsIGxvbmcpKTsKIH0KIApAQCAtMTM5LDIzICsxMzAsMTMgQEAKIF9weXNxbGl0ZV9sb25nX2FzX2ludDY0KFB5T2JqZWN0ICogcHlfdmFsKQogewogICAgIGludCBvdmVyZmxvdzsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cocHlfdmFsLCAmb3ZlcmZsb3cpOwotI2Vsc2UKLSAgICBsb25nIHZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KHB5X3ZhbCwgJm92ZXJmbG93KTsKLSNlbmRpZgorICAgIGxvbmcgbG9uZyB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cocHlfdmFsLCAmb3ZlcmZsb3cpOwogICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKCFvdmVyZmxvdykgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjIGlmIFNJWkVPRl9MT05HX0xPTkcgPiA4CiAgICAgICAgIGlmICgtMHg4MDAwMDAwMDAwMDAwMDAwTEwgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHg3RkZGRkZGRkZGRkZGRkZGTEwpCiAjIGVuZGlmCi0jZWxzZQotIyBpZiBTSVpFT0ZfTE9ORyA+IDgKLSAgICAgICAgaWYgKC0weDgwMDAwMDAwMDAwMDAwMDBMIDw9IHZhbHVlICYmIHZhbHVlIDw9IDB4N0ZGRkZGRkZGRkZGRkZGRkwpCi0jIGVuZGlmCi0jZW5kaWYKICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAgICAgZWxzZSBpZiAoc2l6ZW9mKHZhbHVlKSA8IHNpemVvZihzcWxpdGVfaW50NjQpKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcmUuYyBiL01vZHVsZXMvX3NyZS5jCmluZGV4IDA5YjU4MzUuLjY5YzdiYzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NyZS5jCisrKyBiL01vZHVsZXMvX3NyZS5jCkBAIC0zNSw3ICszNSw3IEBACiAgKiBvdGhlciBjb21wYXRpYmlsaXR5IHdvcmsuCiAgKi8KIAotc3RhdGljIGNoYXIgY29weXJpZ2h0W10gPQorc3RhdGljIGNvbnN0IGNoYXIgY29weXJpZ2h0W10gPQogICAgICIgU1JFIDIuMi4yIENvcHlyaWdodCAoYykgMTk5Ny0yMDAyIGJ5IFNlY3JldCBMYWJzIEFCICI7CiAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgpAQCAtNjIsOSArNjIsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIG9wdGlvbmFsIGZlYXR1cmVzICovCiAKLS8qIGVuYWJsZXMgZmFzdCBzZWFyY2hpbmcgKi8KLSNkZWZpbmUgVVNFX0ZBU1RfU0VBUkNICi0KIC8qIGVuYWJsZXMgY29weS9kZWVwY29weSBoYW5kbGluZyAod29yayBpbiBwcm9ncmVzcykgKi8KICN1bmRlZiBVU0VfQlVJTFRJTl9DT1BZCiAKQEAgLTcxNyw3ICs3MTQsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1jYWxsKGNoYXIqIG1vZHVsZSwgY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBhcmdzKQorY2FsbChjb25zdCBjaGFyKiBtb2R1bGUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogYXJncykKIHsKICAgICBQeU9iamVjdCogbmFtZTsKICAgICBQeU9iamVjdCogbW9kOwpAQCAtMTA1OSw3ICsxMDU2LDYgQEAKICAgICBQeU9iamVjdCogam9pbmVyOwogICAgIFB5T2JqZWN0KiBpdGVtOwogICAgIFB5T2JqZWN0KiBmaWx0ZXI7Ci0gICAgUHlPYmplY3QqIGFyZ3M7CiAgICAgUHlPYmplY3QqIG1hdGNoOwogICAgIHZvaWQqIHB0cjsKICAgICBQeV9zc2l6ZV90IHN0YXR1czsKQEAgLTExNjEsMTMgKzExNTcsNyBAQAogICAgICAgICAgICAgbWF0Y2ggPSBwYXR0ZXJuX25ld19tYXRjaChzZWxmLCAmc3RhdGUsIDEpOwogICAgICAgICAgICAgaWYgKCFtYXRjaCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBtYXRjaCk7Ci0gICAgICAgICAgICBpZiAoIWFyZ3MpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWF0Y2gpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpdGVtID0gUHlPYmplY3RfQ2FsbE9iamVjdChmaWx0ZXIsIGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgaXRlbSA9IF9QeU9iamVjdF9DYWxsQXJnMShmaWx0ZXIsIG1hdGNoKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtYXRjaCk7CiAgICAgICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTE1OTIsNyArMTU4Miw3IEBACiAgICAgICAgIHNraXAgPSAqY29kZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgVlRSQUNFKCgiJWx1IChza2lwIHRvICVwKVxuIiwgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpc2tpcCwgY29kZStza2lwKSk7ICAgICAgICBcCi0gICAgICAgIGlmIChza2lwLWFkaiA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKSAgICAgIFwKKyAgICAgICAgaWYgKHNraXAtYWRqID4gKHVpbnRwdHJfdCkoZW5kIC0gY29kZSkpICAgICAgXAogICAgICAgICAgICAgRkFJTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGNvZGUrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQpAQCAtMTYyNiw3ICsxNjE2LDcgQEAKIAogICAgICAgICBjYXNlIFNSRV9PUF9DSEFSU0VUOgogICAgICAgICAgICAgb2Zmc2V0ID0gMjU2L1NSRV9DT0RFX0JJVFM7IC8qIDI1Ni1iaXQgYml0bWFwICovCi0gICAgICAgICAgICBpZiAob2Zmc2V0ID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpCisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gKHVpbnRwdHJfdCkoZW5kIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgIGNvZGUgKz0gb2Zmc2V0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjM0LDcgKzE2MjQsNyBAQAogICAgICAgICBjYXNlIFNSRV9PUF9CSUdDSEFSU0VUOgogICAgICAgICAgICAgR0VUX0FSRzsgLyogTnVtYmVyIG9mIGJsb2NrcyAqLwogICAgICAgICAgICAgb2Zmc2V0ID0gMjU2L3NpemVvZihTUkVfQ09ERSk7IC8qIDI1Ni1ieXRlIHRhYmxlICovCi0gICAgICAgICAgICBpZiAob2Zmc2V0ID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpCisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gKHVpbnRwdHJfdCkoZW5kIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IGVhY2ggYnl0ZSBwb2ludHMgdG8gYSB2YWxpZCBibG9jayAqLwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkBAIC0xNjQzLDcgKzE2MzMsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29kZSArPSBvZmZzZXQ7CiAgICAgICAgICAgICBvZmZzZXQgPSBhcmcgKiAoMjU2L1NSRV9DT0RFX0JJVFMpOyAvKiAyNTYtYml0IGJpdG1hcCB0aW1lcyBhcmcgKi8KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkKICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgY29kZSArPSBvZmZzZXQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3OTQsMTEgKzE3ODQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgR0VUX0FSRzsgcHJlZml4X2xlbiA9IGFyZzsKICAgICAgICAgICAgICAgICAgICAgR0VUX0FSRzsKICAgICAgICAgICAgICAgICAgICAgLyogSGVyZSBjb21lcyB0aGUgcHJlZml4IHN0cmluZyAqLwotICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4X2xlbiA+IChQeV91aW50cHRyX3QpKG5ld2NvZGUgLSBjb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAodWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgICAgICAgICBjb2RlICs9IHByZWZpeF9sZW47CiAgICAgICAgICAgICAgICAgICAgIC8qIEFuZCBoZXJlIGNvbWVzIHRoZSBvdmVybGFwIHRhYmxlICovCi0gICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKFB5X3VpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQorICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4X2xlbiA+ICh1aW50cHRyX3QpKG5ld2NvZGUgLSBjb2RlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAgICAgICAgIC8qIEVhY2ggb3ZlcmxhcCB2YWx1ZSBzaG91bGQgYmUgPCBwcmVmaXhfbGVuICovCiAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcmVmaXhfbGVuOyBpKyspIHsKQEAgLTE5MjcsNyArMTkxNyw3IEBACiAgICAgICAgICAgICAgICB0byBhbGxvdyBhcmJpdHJhcnkganVtcHMgYW55d2hlcmUgaW4gdGhlIGNvZGU7IHNvIHdlIGp1c3QgbG9vawogICAgICAgICAgICAgICAgZm9yIGEgSlVNUCBvcGNvZGUgcHJlY2VkaW5nIG91ciBza2lwIHRhcmdldC4KICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoc2tpcCA+PSAzICYmIHNraXAtMyA8IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpICYmCisgICAgICAgICAgICBpZiAoc2tpcCA+PSAzICYmIHNraXAtMyA8ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpICYmCiAgICAgICAgICAgICAgICAgY29kZVtza2lwLTNdID09IFNSRV9PUF9KVU1QKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFZUUkFDRSgoImJvdGggdGhlbiBhbmQgZWxzZSBwYXJ0cyBwcmVzZW50XG4iKSk7CkBAIC0yMDUyLDggKzIwNDIsOSBAQAogICAgICAgICAvKiBEZWZhdWx0IHZhbHVlICovCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKFB5TG9uZ19DaGVjayhpbmRleCkpCi0gICAgICAgIHJldHVybiBQeUxvbmdfQXNTc2l6ZV90KGluZGV4KTsKKyAgICBpZiAoUHlJbmRleF9DaGVjayhpbmRleCkpIHsKKyAgICAgICAgcmV0dXJuIFB5TnVtYmVyX0FzU3NpemVfdChpbmRleCwgTlVMTCk7CisgICAgfQogCiAgICAgaSA9IC0xOwogCkBAIC0yMTMwLDYgKzIxMjEsMTIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QqCittYXRjaF9nZXRpdGVtKE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbmFtZSkKK3sKKyAgICByZXR1cm4gbWF0Y2hfZ2V0c2xpY2Uoc2VsZiwgbmFtZSwgUHlfTm9uZSk7Cit9CisKIC8qW2NsaW5pYyBpbnB1dF0KIF9zcmUuU1JFX01hdGNoLmdyb3VwcwogCkBAIC0yNzE1LDYgKzI3MTIsMTMgQEAKICAgICBwYXR0ZXJuX2dldHNldCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKKy8qIE1hdGNoIG9iamVjdHMgZG8gbm90IHN1cHBvcnQgbGVuZ3RoIG9yIGFzc2lnbm1lbnQsIGJ1dCBkbyBzdXBwb3J0CisgICBfX2dldGl0ZW1fXy4gKi8KK3N0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG1hdGNoX2FzX21hcHBpbmcgPSB7CisgICAgTlVMTCwKKyAgICAoYmluYXJ5ZnVuYyltYXRjaF9nZXRpdGVtLAorICAgIE5VTEwKK307CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtYXRjaF9tZXRob2RzW10gPSB7CiAgICAgeyJncm91cCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZ3JvdXAsIE1FVEhfVkFSQVJHUywgbWF0Y2hfZ3JvdXBfZG9jfSwKQEAgLTI3NjAsNyArMjc2NCw3IEBACiAgICAgKHJlcHJmdW5jKW1hdGNoX3JlcHIsICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAmbWF0Y2hfYXNfbWFwcGluZywgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zc2wuYyBiL01vZHVsZXMvX3NzbC5jCmluZGV4IGE3OWMzYTguLmZjN2E5ODkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NzbC5jCisrKyBiL01vZHVsZXMvX3NzbC5jCkBAIC0xNDAsNiArMTQwLDggQEAKICNlbmRpZgogCiAjZGVmaW5lIFRMU19tZXRob2QgU1NMdjIzX21ldGhvZAorI2RlZmluZSBUTFNfY2xpZW50X21ldGhvZCBTU0x2MjNfY2xpZW50X21ldGhvZAorI2RlZmluZSBUTFNfc2VydmVyX21ldGhvZCBTU0x2MjNfc2VydmVyX21ldGhvZAogCiBzdGF0aWMgaW50IFg1MDlfTkFNRV9FTlRSWV9zZXQoY29uc3QgWDUwOV9OQU1FX0VOVFJZICpuZSkKIHsKQEAgLTE4Nyw2ICsxODksMTkgQEAKIHsKICAgICByZXR1cm4gc3RvcmUtPnBhcmFtOwogfQorCitzdGF0aWMgaW50CitTU0xfU0VTU0lPTl9oYXNfdGlja2V0KGNvbnN0IFNTTF9TRVNTSU9OICpzKQoreworICAgIHJldHVybiAocy0+dGxzZXh0X3RpY2tsZW4gPiAwKSA/IDEgOiAwOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZworU1NMX1NFU1NJT05fZ2V0X3RpY2tldF9saWZldGltZV9oaW50KGNvbnN0IFNTTF9TRVNTSU9OICpzKQoreworICAgIHJldHVybiBzLT50bHNleHRfdGlja19saWZldGltZV9oaW50OworfQorCiAjZW5kaWYgLyogT3BlblNTTCA8IDEuMS4wIG9yIExpYnJlU1NMICovCiAKIApAQCAtMjIwLDE0ICsyMzUsMTYgQEAKIGVudW0gcHlfc3NsX3ZlcnNpb24gewogICAgIFBZX1NTTF9WRVJTSU9OX1NTTDIsCiAgICAgUFlfU1NMX1ZFUlNJT05fU1NMMz0xLAotICAgIFBZX1NTTF9WRVJTSU9OX1RMUywKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFMsIC8qIFNTTHYyMyAqLwogI2lmIEhBVkVfVExTdjFfMgogICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEsCiAgICAgUFlfU1NMX1ZFUlNJT05fVExTMV8xLAotICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMgorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMiwKICNlbHNlCi0gICAgUFlfU1NMX1ZFUlNJT05fVExTMQorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEsCiAjZW5kaWYKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UPTB4MTAsCisgICAgUFlfU1NMX1ZFUlNJT05fVExTX1NFUlZFUiwKIH07CiAKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtMjkzLDI1ICszMTAsMzUgQEAKICAgICBpbnQgZW9mX3dyaXR0ZW47CiB9IFB5U1NMTWVtb3J5QklPOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworICAgIFB5U1NMQ29udGV4dCAqY3R4OworfSBQeVNTTFNlc3Npb247CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xDb250ZXh0X1R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU29ja2V0X1R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMTWVtb3J5QklPX1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU2Vzc2lvbl9UeXBlOwogCiAvKltjbGluaWMgaW5wdXRdCiBtb2R1bGUgX3NzbAogY2xhc3MgX3NzbC5fU1NMQ29udGV4dCAiUHlTU0xDb250ZXh0ICoiICImUHlTU0xDb250ZXh0X1R5cGUiCiBjbGFzcyBfc3NsLl9TU0xTb2NrZXQgIlB5U1NMU29ja2V0ICoiICImUHlTU0xTb2NrZXRfVHlwZSIKIGNsYXNzIF9zc2wuTWVtb3J5QklPICJQeVNTTE1lbW9yeUJJTyAqIiAiJlB5U1NMTWVtb3J5QklPX1R5cGUiCitjbGFzcyBfc3NsLlNTTFNlc3Npb24gIlB5U1NMU2Vzc2lvbiAqIiAiJlB5U1NMU2Vzc2lvbl9UeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2JmN2NiODMyNjM4ZTJlMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YmRjNjdmYWZlZWFhODEwOV0qLwogCiAjaW5jbHVkZSAiY2xpbmljL19zc2wuYy5oIgogCiBzdGF0aWMgaW50IFB5U1NMX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBfUHlUaW1lX3QgdGltZW91dCk7CiAKKwogI2RlZmluZSBQeVNTTENvbnRleHRfQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpCiAjZGVmaW5lIFB5U1NMU29ja2V0X0NoZWNrKHYpICAgIChQeV9UWVBFKHYpID09ICZQeVNTTFNvY2tldF9UeXBlKQogI2RlZmluZSBQeVNTTE1lbW9yeUJJT19DaGVjayh2KSAgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkKKyNkZWZpbmUgUHlTU0xTZXNzaW9uX0NoZWNrKHYpICAgKFB5X1RZUEUodikgPT0gJlB5U1NMU2Vzc2lvbl9UeXBlKQogCiB0eXBlZGVmIGVudW0gewogICAgIFNPQ0tFVF9JU19OT05CTE9DS0lORywKQEAgLTQ1NSw3ICs0ODIsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfU2V0RXJyb3IoUHlTU0xTb2NrZXQgKm9iaiwgaW50IHJldCwgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCitQeVNTTF9TZXRFcnJvcihQeVNTTFNvY2tldCAqb2JqLCBpbnQgcmV0LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKICAgICBQeU9iamVjdCAqdHlwZSA9IFB5U1NMRXJyb3JPYmplY3Q7CiAgICAgY2hhciAqZXJyc3RyID0gTlVMTDsKQEAgLTUzNyw3ICs1NjQsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NldFNTTEVycm9yIChjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgeworX3NldFNTTEVycm9yIChjb25zdCBjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgewogCiAgICAgaWYgKGVycnN0ciA9PSBOVUxMKQogICAgICAgICBlcnJjb2RlID0gRVJSX3BlZWtfbGFzdF9lcnJvcigpOwpAQCAtMTU0Nyw2ICsxNTc0LDY1IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTAorc3RhdGljIFB5T2JqZWN0ICoKK2NpcGhlcl90b19kaWN0KGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcikKK3sKKyAgICBjb25zdCBjaGFyICpjaXBoZXJfbmFtZSwgKmNpcGhlcl9wcm90b2NvbDsKKworICAgIHVuc2lnbmVkIGxvbmcgY2lwaGVyX2lkOworICAgIGludCBhbGdfYml0cywgc3RyZW5ndGhfYml0cywgbGVuOworICAgIGNoYXIgYnVmWzUxMl0gPSB7MH07CisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIGludCBhZWFkLCBuaWQ7CisgICAgY29uc3QgY2hhciAqc2tjaXBoZXIgPSBOVUxMLCAqZGlnZXN0ID0gTlVMTCwgKmt4ID0gTlVMTCwgKmF1dGggPSBOVUxMOworI2VuZGlmCisKKyAgICAvKiBjYW4gYmUgTlVMTCAqLworICAgIGNpcGhlcl9uYW1lID0gU1NMX0NJUEhFUl9nZXRfbmFtZShjaXBoZXIpOworICAgIGNpcGhlcl9wcm90b2NvbCA9IFNTTF9DSVBIRVJfZ2V0X3ZlcnNpb24oY2lwaGVyKTsKKyAgICBjaXBoZXJfaWQgPSBTU0xfQ0lQSEVSX2dldF9pZChjaXBoZXIpOworICAgIFNTTF9DSVBIRVJfZGVzY3JpcHRpb24oY2lwaGVyLCBidWYsIHNpemVvZihidWYpIC0gMSk7CisgICAgbGVuID0gc3RybGVuKGJ1Zik7CisgICAgaWYgKGxlbiA+IDEgJiYgYnVmW2xlbi0xXSA9PSAnXG4nKQorICAgICAgICBidWZbbGVuLTFdID0gJ1wwJzsKKyAgICBzdHJlbmd0aF9iaXRzID0gU1NMX0NJUEhFUl9nZXRfYml0cyhjaXBoZXIsICZhbGdfYml0cyk7CisKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgYWVhZCA9IFNTTF9DSVBIRVJfaXNfYWVhZChjaXBoZXIpOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2NpcGhlcl9uaWQoY2lwaGVyKTsKKyAgICBza2NpcGhlciA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2RpZ2VzdF9uaWQoY2lwaGVyKTsKKyAgICBkaWdlc3QgPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9reF9uaWQoY2lwaGVyKTsKKyAgICBreCA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2F1dGhfbmlkKGNpcGhlcik7CisgICAgYXV0aCA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworI2VuZGlmCisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKKyAgICAgICAgIntza3Nzc3Nzc3Npc2kiCisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgICAgICAic09zc3Nzc3NzcyIKKyNlbmRpZgorICAgICAgICAifSIsCisgICAgICAgICJpZCIsIGNpcGhlcl9pZCwKKyAgICAgICAgIm5hbWUiLCBjaXBoZXJfbmFtZSwKKyAgICAgICAgInByb3RvY29sIiwgY2lwaGVyX3Byb3RvY29sLAorICAgICAgICAiZGVzY3JpcHRpb24iLCBidWYsCisgICAgICAgICJzdHJlbmd0aF9iaXRzIiwgc3RyZW5ndGhfYml0cywKKyAgICAgICAgImFsZ19iaXRzIiwgYWxnX2JpdHMKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgICAgICwiYWVhZCIsIGFlYWQgPyBQeV9UcnVlIDogUHlfRmFsc2UsCisgICAgICAgICJzeW1tZXRyaWMiLCBza2NpcGhlciwKKyAgICAgICAgImRpZ2VzdCIsIGRpZ2VzdCwKKyAgICAgICAgImtlYSIsIGt4LAorICAgICAgICAiYXV0aCIsIGF1dGgKKyNlbmRpZgorICAgICAgICk7Cit9CisjZW5kaWYKKwogLypbY2xpbmljIGlucHV0XQogX3NzbC5fU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0yMjU1LDYgKzIzNDEsMTUyIEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorI2lmZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKworc3RhdGljIFNTTF9TRVNTSU9OKgorX3NzbF9zZXNzaW9uX2R1cChTU0xfU0VTU0lPTiAqc2Vzc2lvbikgeworICAgIFNTTF9TRVNTSU9OICpuZXdzZXNzaW9uID0gTlVMTDsKKyAgICBpbnQgc2xlbjsKKyAgICB1bnNpZ25lZCBjaGFyICpzZW5jID0gTlVMTCwgKnA7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY29uc3RfcDsKKworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIHNlc3Npb24iKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBnZXQgbGVuZ3RoICovCisgICAgc2xlbiA9IGkyZF9TU0xfU0VTU0lPTihzZXNzaW9uLCBOVUxMKTsKKyAgICBpZiAoc2xlbiA9PSAwIHx8IHNsZW4gPiAweEZGMDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpMmQoKSBmYWlsZWQuIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmICgoc2VuYyA9IFB5TWVtX01hbGxvYyhzbGVuKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBwID0gc2VuYzsKKyAgICBpZiAoIWkyZF9TU0xfU0VTU0lPTihzZXNzaW9uLCAmcCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpMmQoKSBmYWlsZWQuIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGNvbnN0X3AgPSBzZW5jOworICAgIG5ld3Nlc3Npb24gPSBkMmlfU1NMX1NFU1NJT04oTlVMTCwgJmNvbnN0X3AsIHNsZW4pOworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlNZW1fRnJlZShzZW5jKTsKKyAgICByZXR1cm4gbmV3c2Vzc2lvbjsKKyAgZXJyb3I6CisgICAgaWYgKHNlbmMgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHNlbmMpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X3Nlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICAvKiBnZXRfc2Vzc2lvbiBjYW4gcmV0dXJuIHNlc3Npb25zIGZyb20gYSBzZXJ2ZXItc2lkZSBjb25uZWN0aW9uLAorICAgICAqIGl0IGRvZXMgbm90IGNoZWNrIGZvciBoYW5kc2hha2UgZG9uZSBvciBjbGllbnQgc29ja2V0LiAqLworICAgIFB5U1NMU2Vzc2lvbiAqcHlzZXNzOworICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworCisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIC8qIGR1cGxpY2F0ZSBzZXNzaW9uIGFzIHdvcmthcm91bmQgZm9yIHNlc3Npb24gYnVnIGluIE9wZW5TU0wgMS4xLjAsCisgICAgICogaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9pc3N1ZXMvMTU1MCAqLworICAgIHNlc3Npb24gPSBTU0xfZ2V0MF9zZXNzaW9uKHNlbGYtPnNzbCk7ICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBpZiAoKHNlc3Npb24gPSBfc3NsX3Nlc3Npb25fZHVwKHNlc3Npb24pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbHNlCisgICAgc2Vzc2lvbiA9IFNTTF9nZXQxX3Nlc3Npb24oc2VsZi0+c3NsKTsKKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyNlbmRpZgorCisgICAgcHlzZXNzID0gUHlPYmplY3RfTmV3KFB5U1NMU2Vzc2lvbiwgJlB5U1NMU2Vzc2lvbl9UeXBlKTsKKyAgICBpZiAocHlzZXNzID09IE5VTEwpIHsKKyAgICAgICAgU1NMX1NFU1NJT05fZnJlZShzZXNzaW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYXNzZXJ0KHNlbGYtPmN0eCk7CisgICAgcHlzZXNzLT5jdHggPSBzZWxmLT5jdHg7CisgICAgUHlfSU5DUkVGKHB5c2Vzcy0+Y3R4KTsKKyAgICBweXNlc3MtPnNlc3Npb24gPSBzZXNzaW9uOworICAgIHJldHVybiAoUHlPYmplY3QgKilweXNlc3M7Cit9CisKK3N0YXRpYyBpbnQgUHlTU0xfc2V0X3Nlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICBQeVNTTFNlc3Npb24gKnB5c2VzczsKKyNpZmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgU1NMX1NFU1NJT04gKnNlc3Npb247CisjZW5kaWYKKyAgICBpbnQgcmVzdWx0OworCisgICAgaWYgKCFQeVNTTFNlc3Npb25fQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJWYWx1ZSBpcyBub3QgYSBTU0xTZXNzaW9uLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHB5c2VzcyA9IChQeVNTTFNlc3Npb24gKil2YWx1ZTsKKworICAgIGlmIChzZWxmLT5jdHgtPmN0eCAhPSBweXNlc3MtPmN0eC0+Y3R4KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlNlc3Npb24gcmVmZXJzIHRvIGEgZGlmZmVyZW50IFNTTENvbnRleHQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHNlbGYtPnNvY2tldF90eXBlICE9IFBZX1NTTF9DTElFTlQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNldCBzZXNzaW9uIGZvciBzZXJ2ZXItc2lkZSBTU0xTb2NrZXQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHNlbGYtPmhhbmRzaGFrZV9kb25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIC8qIGR1cGxpY2F0ZSBzZXNzaW9uICovCisgICAgaWYgKChzZXNzaW9uID0gX3NzbF9zZXNzaW9uX2R1cChweXNlc3MtPnNlc3Npb24pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzdWx0ID0gU1NMX3NldF9zZXNzaW9uKHNlbGYtPnNzbCwgc2Vzc2lvbik7CisgICAgLyogZnJlZSBkdXBsaWNhdGUsIFNTTF9zZXRfc2Vzc2lvbigpIGJ1bXBzIHJlZiBjb3VudCAqLworICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2Vzc2lvbik7CisjZWxzZQorICAgIHJlc3VsdCA9IFNTTF9zZXRfc2Vzc2lvbihzZWxmLT5zc2wsIHB5c2Vzcy0+c2Vzc2lvbik7CisjZW5kaWYKKyAgICBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9zZXRfc2Vzc2lvbl9kb2MsCisiX3NldHRlcl9zZXNzaW9uKHNlc3Npb24pXG5cCitcCitHZXQgLyBzZXQgU1NMU2Vzc2lvbi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9zZXNzaW9uX3JldXNlZChQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIGlmIChTU0xfc2Vzc2lvbl9yZXVzZWQoc2VsZi0+c3NsKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitQeURvY19TVFJWQVIoUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkX2RvYywKKyJXYXMgdGhlIGNsaWVudCBzZXNzaW9uIHJldXNlZCBkdXJpbmcgaGFuZHNoYWtlPyIpOworCiBzdGF0aWMgUHlHZXRTZXREZWYgc3NsX2dldHNldGxpc3RbXSA9IHsKICAgICB7ImNvbnRleHQiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfY29udGV4dCwKICAgICAgICAgICAgICAgICAoc2V0dGVyKSBQeVNTTF9zZXRfY29udGV4dCwgUHlTU0xfc2V0X2NvbnRleHRfZG9jfSwKQEAgLTIyNjQsNiArMjQ5NiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZV9kb2N9LAogICAgIHsib3duZXIiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfb3duZXIsIChzZXR0ZXIpIFB5U1NMX3NldF9vd25lciwKICAgICAgICAgICAgICAgUHlTU0xfZ2V0X293bmVyX2RvY30sCisgICAgeyJzZXNzaW9uIiwgKGdldHRlcikgUHlTU0xfZ2V0X3Nlc3Npb24sCisgICAgICAgICAgICAgICAgKHNldHRlcikgUHlTU0xfc2V0X3Nlc3Npb24sIFB5U1NMX3NldF9zZXNzaW9uX2RvY30sCisgICAgeyJzZXNzaW9uX3JldXNlZCIsIChnZXR0ZXIpIFB5U1NMX2dldF9zZXNzaW9uX3JldXNlZCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkX2RvY30sCiAgICAge05VTEx9LCAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yMzIzLDYgKzI1NTksMzMgQEAKICAqIF9TU0xDb250ZXh0IG9iamVjdHMKICAqLwogCitzdGF0aWMgaW50Citfc2V0X3ZlcmlmeV9tb2RlKFNTTF9DVFggKmN0eCwgZW51bSBweV9zc2xfY2VydF9yZXF1aXJlbWVudHMgbikKK3sKKyAgICBpbnQgbW9kZTsKKyAgICBpbnQgKCp2ZXJpZnlfY2IpKGludCwgWDUwOV9TVE9SRV9DVFggKikgPSBOVUxMOworCisgICAgc3dpdGNoKG4pIHsKKyAgICBjYXNlIFBZX1NTTF9DRVJUX05PTkU6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX05PTkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFlfU1NMX0NFUlRfT1BUSU9OQUw6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFlfU1NMX0NFUlRfUkVRVUlSRUQ6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB2YWx1ZSBmb3IgdmVyaWZ5X21vZGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAvKiBrZWVwIGN1cnJlbnQgdmVyaWZ5IGNiICovCisgICAgdmVyaWZ5X2NiID0gU1NMX0NUWF9nZXRfdmVyaWZ5X2NhbGxiYWNrKGN0eCk7CisgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgbW9kZSwgdmVyaWZ5X2NiKTsKKyAgICByZXR1cm4gMDsKK30KKwogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBfc3NsLl9TU0xDb250ZXh0Ll9fbmV3X18KQEAgLTIzMzcsNiArMjYwMCw3IEBACiAgICAgUHlTU0xDb250ZXh0ICpzZWxmOwogICAgIGxvbmcgb3B0aW9uczsKICAgICBTU0xfQ1RYICpjdHggPSBOVUxMOworICAgIGludCByZXN1bHQ7CiAjaWYgZGVmaW5lZChTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMpCiAgICAgdW5zaWduZWQgbG9uZyBsaWJ2ZXI7CiAjZW5kaWYKQEAgLTIzNTgsOCArMjYyMiwxMiBAQAogICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fU1NMMikKICAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoU1NMdjJfbWV0aG9kKCkpOwogI2VuZGlmCi0gICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMpCisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMpIC8qIFNTTHYyMyAqLwogICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFNfbWV0aG9kKCkpOworICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTX0NMSUVOVCkKKyAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTX2NsaWVudF9tZXRob2QoKSk7CisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFNfU0VSVkVSKQorICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFNfc2VydmVyX21ldGhvZCgpKTsKICAgICBlbHNlCiAgICAgICAgIHByb3RvX3ZlcnNpb24gPSAtMTsKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtMjM5MiwxNiArMjY2MCw1NyBAQAogICAgIHNlbGYtPnNldF9ob3N0bmFtZSA9IE5VTEw7CiAjZW5kaWYKICAgICAvKiBEb24ndCBjaGVjayBob3N0IG5hbWUgYnkgZGVmYXVsdCAqLwotICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMDsKKyAgICBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UKSB7CisgICAgICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMTsKKyAgICAgICAgaWYgKF9zZXRfdmVyaWZ5X21vZGUoc2VsZi0+Y3R4LCBQWV9TU0xfQ0VSVF9SRVFVSVJFRCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+Y2hlY2tfaG9zdG5hbWUgPSAwOworICAgICAgICBpZiAoX3NldF92ZXJpZnlfbW9kZShzZWxmLT5jdHgsIFBZX1NTTF9DRVJUX05PTkUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KICAgICAvKiBEZWZhdWx0cyAqLwotICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIFNTTF9WRVJJRllfTk9ORSwgTlVMTCk7CiAgICAgb3B0aW9ucyA9IFNTTF9PUF9BTEwgJiB+U1NMX09QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UUzsKICAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wyKQogICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MjsKICAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wzKQogICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MzsKKyAgICAvKiBNaW5pbWFsIHNlY3VyaXR5IGZsYWdzIGZvciBzZXJ2ZXIgYW5kIGNsaWVudCBzaWRlIGNvbnRleHQuCisgICAgICogQ2xpZW50IHNvY2tldHMgaWdub3JlIHNlcnZlci1zaWRlIHBhcmFtZXRlcnMuICovCisjaWZkZWYgU1NMX09QX05PX0NPTVBSRVNTSU9OCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fQ09NUFJFU1NJT047CisjZW5kaWYKKyNpZmRlZiBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFOworI2VuZGlmCisjaWZkZWYgU1NMX09QX1NJTkdMRV9ESF9VU0UKKyAgICBvcHRpb25zIHw9IFNTTF9PUF9TSU5HTEVfREhfVVNFOworI2VuZGlmCisjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQorICAgIG9wdGlvbnMgfD0gU1NMX09QX1NJTkdMRV9FQ0RIX1VTRTsKKyNlbmRpZgogICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoc2VsZi0+Y3R4LCBvcHRpb25zKTsKIAorICAgIC8qIEEgYmFyZSBtaW5pbXVtIGNpcGhlciBsaXN0IHdpdGhvdXQgY29tcGxldGx5IGJyb2tlbiBjaXBoZXIgc3VpdGVzLgorICAgICAqIEl0J3MgZmFyIGZyb20gcGVyZmVjdCBidXQgZ2l2ZXMgdXNlcnMgYSBiZXR0ZXIgaGVhZCBzdGFydC4gKi8KKyAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wyKSB7CisgICAgICAgIHJlc3VsdCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIkhJR0g6IWFOVUxMOiFlTlVMTDohTUQ1Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogU1NMdjIgbmVlZHMgTUQ1ICovCisgICAgICAgIHJlc3VsdCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIkhJR0g6IWFOVUxMOiFlTlVMTCIpOworICAgIH0KKyAgICBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZC4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAjaWYgZGVmaW5lZChTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMpCiAgICAgLyogU2V0IFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUy4gVGhpcyBwb3RlbnRpYWxseSBncmVhdGx5IHJlZHVjZXMgbWVtb3J5CiAgICAgICAgdXNhZ2UgZm9yIG5vIGNvc3QgYXQgYWxsLiBIb3dldmVyLCBkb24ndCBkbyB0aGlzIGZvciBPcGVuU1NMIHZlcnNpb25zCkBAIC0yNTA2LDYgKzI4MTUsNTIgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LmdldF9jaXBoZXJzCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE1NmU0ZDY4YTQwNmRmYzQgaW5wdXQ9YTJhYWRjOWFmODliNzljNV0qLworeworICAgIFNTTCAqc3NsID0gTlVMTDsKKyAgICBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc2sgPSBOVUxMOworICAgIGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcjsKKyAgICBpbnQgaT0wOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMLCAqZGN0OworCisgICAgc3NsID0gU1NMX25ldyhzZWxmLT5jdHgpOworICAgIGlmIChzc2wgPT0gTlVMTCkgeworICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBzayA9IFNTTF9nZXRfY2lwaGVycyhzc2wpOworCisgICAgcmVzdWx0ID0gUHlMaXN0X05ldyhza19TU0xfQ0lQSEVSX251bShzaykpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNrX1NTTF9DSVBIRVJfbnVtKHNrKTsgaSsrKSB7CisgICAgICAgIGNpcGhlciA9IHNrX1NTTF9DSVBIRVJfdmFsdWUoc2ssIGkpOworICAgICAgICBkY3QgPSBjaXBoZXJfdG9fZGljdChjaXBoZXIpOworICAgICAgICBpZiAoZGN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlc3VsdCwgaSwgZGN0KTsKKyAgICB9CisKKyAgZXhpdDoKKyAgICBpZiAoc3NsICE9IE5VTEwpCisgICAgICAgIFNTTF9mcmVlKHNzbCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKworfQorI2VuZGlmCisKKwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKIHN0YXRpYyBpbnQKIGRvX3Byb3RvY29sX3NlbGVjdGlvbihpbnQgYWxwbiwgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLApAQCAtMjY2MiwyOCArMzAxNywxNiBAQAogc3RhdGljIGludAogc2V0X3ZlcmlmeV9tb2RlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZywgdm9pZCAqYykKIHsKLSAgICBpbnQgbiwgbW9kZTsKKyAgICBpbnQgbjsKICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImkiLCAmbikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAobiA9PSBQWV9TU0xfQ0VSVF9OT05FKQotICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9OT05FOwotICAgIGVsc2UgaWYgKG4gPT0gUFlfU1NMX0NFUlRfT1BUSU9OQUwpCi0gICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7Ci0gICAgZWxzZSBpZiAobiA9PSBQWV9TU0xfQ0VSVF9SRVFVSVJFRCkKLSAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgdmFsdWUgZm9yIHZlcmlmeV9tb2RlIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKG1vZGUgPT0gU1NMX1ZFUklGWV9OT05FICYmIHNlbGYtPmNoZWNrX2hvc3RuYW1lKSB7CisgICAgaWYgKG4gPT0gUFlfU1NMX0NFUlRfTk9ORSAmJiBzZWxmLT5jaGVja19ob3N0bmFtZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2V0IHZlcmlmeV9tb2RlIHRvIENFUlRfTk9ORSB3aGVuICIKICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVja19ob3N0bmFtZSBpcyBlbmFibGVkLiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIG1vZGUsIE5VTEwpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBfc2V0X3ZlcmlmeV9tb2RlKHNlbGYtPmN0eCwgbik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNjczLDYgKzQwMTYsNyBAQAogICAgIF9TU0xfX1NTTENPTlRFWFRfU0VUX1NFUlZFUk5BTUVfQ0FMTEJBQ0tfTUVUSE9EREVGCiAgICAgX1NTTF9fU1NMQ09OVEVYVF9DRVJUX1NUT1JFX1NUQVRTX01FVEhPRERFRgogICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzkzOCw2ICs0MjgyLDE5MyBAQAogfTsKIAogCisvKgorICogU1NMIFNlc3Npb24gb2JqZWN0CisgKi8KKworc3RhdGljIHZvaWQKK1B5U1NMU2Vzc2lvbl9kZWFsbG9jKFB5U1NMU2Vzc2lvbiAqc2VsZikKK3sKKyAgICBQeV9YREVDUkVGKHNlbGYtPmN0eCk7CisgICAgaWYgKHNlbGYtPnNlc3Npb24gIT0gTlVMTCkgeworICAgICAgICBTU0xfU0VTU0lPTl9mcmVlKHNlbGYtPnNlc3Npb24pOworICAgIH0KKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fcmljaGNvbXBhcmUoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCwgaW50IG9wKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAobGVmdCA9PSBOVUxMIHx8IHJpZ2h0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlTU0xTZXNzaW9uX0NoZWNrKGxlZnQpIHx8ICFQeVNTTFNlc3Npb25fQ2hlY2socmlnaHQpKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICB9CisKKyAgICBpZiAobGVmdCA9PSByaWdodCkgeworICAgICAgICByZXN1bHQgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmxlZnRfaWQsICpyaWdodF9pZDsKKyAgICAgICAgdW5zaWduZWQgaW50IGxlZnRfbGVuLCByaWdodF9sZW47CisgICAgICAgIGxlZnRfaWQgPSBTU0xfU0VTU0lPTl9nZXRfaWQoKChQeVNTTFNlc3Npb24gKilsZWZ0KS0+c2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVmdF9sZW4pOworICAgICAgICByaWdodF9pZCA9IFNTTF9TRVNTSU9OX2dldF9pZCgoKFB5U1NMU2Vzc2lvbiAqKXJpZ2h0KS0+c2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJpZ2h0X2xlbik7CisgICAgICAgIGlmIChsZWZ0X2xlbiA9PSByaWdodF9sZW4pIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1lbWNtcChsZWZ0X2lkLCByaWdodF9pZCwgbGVmdF9sZW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAob3ApIHsKKyAgICAgIGNhc2UgUHlfRVE6CisgICAgICAgIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFB5X05FOgorICAgICAgICBpZiAocmVzdWx0ICE9IDApIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBQeV9MVDoKKyAgICAgIGNhc2UgUHlfTEU6CisgICAgICBjYXNlIFB5X0dUOgorICAgICAgY2FzZSBQeV9HRToKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworc3RhdGljIGludAorUHlTU0xTZXNzaW9uX3RyYXZlcnNlKFB5U1NMU2Vzc2lvbiAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+Y3R4KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorUHlTU0xTZXNzaW9uX2NsZWFyKFB5U1NMU2Vzc2lvbiAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5jdHgpOworICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3RpbWUoUHlTU0xTZXNzaW9uICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhTU0xfU0VTU0lPTl9nZXRfdGltZShzZWxmLT5zZXNzaW9uKSk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3RpbWVfZG9jLAorIlNlc3Npb24gY3JlYXRpb24gdGltZSAoc2Vjb25kcyBzaW5jZSBlcG9jaCkuIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfdGltZW91dChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFNTTF9TRVNTSU9OX2dldF90aW1lb3V0KHNlbGYtPnNlc3Npb24pKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMU2Vzc2lvbl9nZXRfdGltZW91dF9kb2MsCisiU2Vzc2lvbiB0aW1lb3V0IChkZWx0YSBpbiBzZWNvbmRzKS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF90aWNrZXRfbGlmZXRpbWVfaGludChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICB1bnNpZ25lZCBsb25nIGhpbnQgPSBTU0xfU0VTU0lPTl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnQoc2VsZi0+c2Vzc2lvbik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGhpbnQpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF90aWNrZXRfbGlmZXRpbWVfaGludF9kb2MsCisiVGlja2V0IGxpZmUgdGltZSBoaW50LiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWQoUHlTU0xTZXNzaW9uICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaWQ7CisgICAgdW5zaWduZWQgaW50IGxlbjsKKyAgICBpZCA9IFNTTF9TRVNTSU9OX2dldF9pZChzZWxmLT5zZXNzaW9uLCAmbGVuKTsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWlkLCBsZW4pOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF9zZXNzaW9uX2lkX2RvYywKKyJTZXNzaW9uIGlkIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfaGFzX3RpY2tldChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICBpZiAoU1NMX1NFU1NJT05faGFzX3RpY2tldChzZWxmLT5zZXNzaW9uKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0X2RvYywKKyJEb2VzIHRoZSBzZXNzaW9uIGNvbnRhaW4gYSB0aWNrZXQ/Iik7CisKKworc3RhdGljIFB5R2V0U2V0RGVmIFB5U1NMU2Vzc2lvbl9nZXRzZXRsaXN0W10gPSB7CisgICAgeyJoYXNfdGlja2V0IiwgKGdldHRlcikgUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0LCBOVUxMLAorICAgICAgICAgICAgICBQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXRfZG9jfSwKKyAgICB7ImlkIiwgICAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZF9kb2N9LAorICAgIHsidGlja2V0X2xpZmV0aW1lX2hpbnQiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50LAorICAgICAgICAgICAgICBOVUxMLCBQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50X2RvY30sCisgICAgeyJ0aW1lIiwgKGdldHRlcikgUHlTU0xTZXNzaW9uX2dldF90aW1lLCBOVUxMLAorICAgICAgICAgICAgICBQeVNTTFNlc3Npb25fZ2V0X3RpbWVfZG9jfSwKKyAgICB7InRpbWVvdXQiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3RpbWVvdXQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfdGltZW91dF9kb2N9LAorICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTFNlc3Npb25fVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX3NzbC5TZXNzaW9uIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YoUHlTU0xTZXNzaW9uKSwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAoZGVzdHJ1Y3RvcilQeVNTTFNlc3Npb25fZGVhbGxvYywgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2ZsYWdzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLworICAgICh0cmF2ZXJzZXByb2MpUHlTU0xTZXNzaW9uX3RyYXZlcnNlLCAgICAgICAvKnRwX3RyYXZlcnNlKi8KKyAgICAoaW5xdWlyeSlQeVNTTFNlc3Npb25fY2xlYXIsICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCisgICAgUHlTU0xTZXNzaW9uX3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyovCisgICAgUHlTU0xTZXNzaW9uX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KK307CisKKwogLyogaGVscGVyIHJvdXRpbmVzIGZvciBzZWVkaW5nIHRoZSBTU0wgUFJORyAqLwogLypbY2xpbmljIGlucHV0XQogX3NzbC5SQU5EX2FkZApAQCAtNDU0MiwxMyArNTA3MywxMiBAQAogCiAgICAgaWYgKF9zc2xfbG9ja3MgPT0gTlVMTCkgewogICAgICAgICBfc3NsX2xvY2tzX2NvdW50ID0gQ1JZUFRPX251bV9sb2NrcygpOwotICAgICAgICBfc3NsX2xvY2tzID0gUHlNZW1fTmV3KFB5VGhyZWFkX3R5cGVfbG9jaywgX3NzbF9sb2Nrc19jb3VudCk7CisgICAgICAgIF9zc2xfbG9ja3MgPSBQeU1lbV9DYWxsb2MoX3NzbF9sb2Nrc19jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlUaHJlYWRfdHlwZV9sb2NrKSk7CiAgICAgICAgIGlmIChfc3NsX2xvY2tzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBtZW1zZXQoX3NzbF9sb2NrcywgMCwKLSAgICAgICAgICAgICAgIHNpemVvZihQeVRocmVhZF90eXBlX2xvY2spICogX3NzbF9sb2Nrc19jb3VudCk7CiAgICAgICAgIGZvciAoaSA9IDA7ICBpIDwgX3NzbF9sb2Nrc19jb3VudDsgIGkrKykgewogICAgICAgICAgICAgX3NzbF9sb2Nrc1tpXSA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKICAgICAgICAgICAgIGlmIChfc3NsX2xvY2tzW2ldID09IE5VTEwpIHsKQEAgLTQ2MjMsNiArNTE1Myw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMTWVtb3J5QklPX1R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xTZXNzaW9uX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9zc2xtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCkBAIC00Njk0LDYgKzUyMjcsMTAgQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1lbW9yeUJJTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTE1lbW9yeUJJT19UeXBlKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFNlc3Npb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xTZXNzaW9uX1R5cGUpICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNTTF9FUlJPUl9aRVJPX1JFVFVSTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX1pFUk9fUkVUVVJOKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1NMX0VSUk9SX1dBTlRfUkVBRCIsCkBAIC00Nzk4LDYgKzUzMzUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBST1RPQ09MX1RMU19DTElFTlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMU19DTElFTlQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFNfU0VSVkVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFNfU0VSVkVSKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTdjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEpOwogI2lmIEhBVkVfVExTdjFfMgpAQCAtNDgyMCw2ICs1MzYxLDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfREhfVVNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVElDS0VUIiwgU1NMX09QX05PX1RJQ0tFVCk7CiAjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9TSU5HTEVfRUNESF9VU0UiLCBTU0xfT1BfU0lOR0xFX0VDREhfVVNFKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3RydWN0LmMgYi9Nb2R1bGVzL19zdHJ1Y3QuYwppbmRleCBmOTY1NTQxLi4wODIwOTYxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19zdHJ1Y3QuYwpAQCAtNjAsNiArNjAsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGRvdWJsZSB4OyB9IHN0X2RvdWJsZTsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyB2b2lkICp4OyB9IHN0X3ZvaWRfcDsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBzaXplX3QgeDsgfSBzdF9zaXplX3Q7Cit0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgX0Jvb2wgeDsgfSBzdF9ib29sOwogCiAjZGVmaW5lIFNIT1JUX0FMSUdOIChzaXplb2Yoc3Rfc2hvcnQpIC0gc2l6ZW9mKHNob3J0KSkKICNkZWZpbmUgSU5UX0FMSUdOIChzaXplb2Yoc3RfaW50KSAtIHNpemVvZihpbnQpKQpAQCAtNjgsMjIgKzY5LDEyIEBACiAjZGVmaW5lIERPVUJMRV9BTElHTiAoc2l6ZW9mKHN0X2RvdWJsZSkgLSBzaXplb2YoZG91YmxlKSkKICNkZWZpbmUgVk9JRF9QX0FMSUdOIChzaXplb2Yoc3Rfdm9pZF9wKSAtIHNpemVvZih2b2lkICopKQogI2RlZmluZSBTSVpFX1RfQUxJR04gKHNpemVvZihzdF9zaXplX3QpIC0gc2l6ZW9mKHNpemVfdCkpCisjZGVmaW5lIEJPT0xfQUxJR04gKHNpemVvZihzdF9ib29sKSAtIHNpemVvZihfQm9vbCkpCiAKIC8qIFdlIGNhbid0IHN1cHBvcnQgcSBhbmQgUSBpbiBuYXRpdmUgbW9kZSB1bmxlc3MgdGhlIGNvbXBpbGVyIGRvZXM7CiAgICBpbiBzdGQgbW9kZSwgdGhleSdyZSA4IGJ5dGVzIG9uIGFsbCBwbGF0Zm9ybXMuICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBQWV9MT05HX0xPTkcgeDsgfSBzX2xvbmdfbG9uZzsKLSNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKFBZX0xPTkdfTE9ORykpCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfQzk5X0JPT0wKLSNkZWZpbmUgQk9PTF9UWVBFIF9Cb29sCi10eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgX0Jvb2wgeDsgfSBzX2Jvb2w7Ci0jZGVmaW5lIEJPT0xfQUxJR04gKHNpemVvZihzX2Jvb2wpIC0gc2l6ZW9mKEJPT0xfVFlQRSkpCi0jZWxzZQotI2RlZmluZSBCT09MX1RZUEUgY2hhcgotI2RlZmluZSBCT09MX0FMSUdOIDAKLSNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGxvbmcgbG9uZyB4OyB9IHNfbG9uZ19sb25nOworI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YobG9uZyBsb25nKSkKIAogI2lmZGVmIF9fcG93ZXJjCiAjcHJhZ21hIG9wdGlvbnMgYWxpZ249cmVzZXQKQEAgLTE2NCwxNCArMTU1LDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBQWV9MT05HX0xPTkcgKnApCitnZXRfbG9uZ2xvbmcoUHlPYmplY3QgKnYsIGxvbmcgbG9uZyAqcCkKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKIAogICAgIHYgPSBnZXRfcHlsb25nKHYpOwogICAgIGlmICh2ID09IE5VTEwpCkBAIC0xNzksNyArMTY4LDcgQEAKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIGlmICh4ID09IChQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIGlmICh4ID09IChsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CkBAIC0xOTIsOSArMTgxLDkgQEAKIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgdW5zaWduZWQgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnApCitnZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBsb25nIGxvbmcgKnApCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAKICAgICB2ID0gZ2V0X3B5bG9uZyh2KTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMjAyLDcgKzE5MSw3IEBACiAgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2KSk7CiAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIGlmICh4ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CkBAIC0yMTIsOCArMjAxLDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2VuZGlmCi0KIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBQeV9zc2l6ZV90ICovCiAKIHN0YXRpYyBpbnQKQEAgLTI2Nyw2ICsyNTQsMzMgQEAKIC8qIEZsb2F0aW5nIHBvaW50IGhlbHBlcnMgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja19oYWxmZmxvYXQoY29uc3QgY2hhciAqcCwgIC8qIHN0YXJ0IG9mIDItYnl0ZSBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICAgaW50IGxlKSAgICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCit7CisgICAgZG91YmxlIHg7CisKKyAgICB4ID0gX1B5RmxvYXRfVW5wYWNrMigodW5zaWduZWQgY2hhciAqKXAsIGxlKTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoeCk7Cit9CisKK3N0YXRpYyBpbnQKK3BhY2tfaGFsZmZsb2F0KGNoYXIgKnAsICAgICAgLyogc3RhcnQgb2YgMi1ieXRlIHN0cmluZyAqLworICAgICAgICAgICAgICAgUHlPYmplY3QgKnYsICAvKiB2YWx1ZSB0byBwYWNrICovCisgICAgICAgICAgICAgICBpbnQgbGUpICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCit7CisgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOworICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQgYXJndW1lbnQgaXMgbm90IGEgZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gX1B5RmxvYXRfUGFjazIoeCwgKHVuc2lnbmVkIGNoYXIgKilwLCBsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiB1bnBhY2tfZmxvYXQoY29uc3QgY2hhciAqcCwgIC8qIHN0YXJ0IG9mIDQtYnl0ZSBzdHJpbmcgKi8KICAgICAgICAgIGludCBsZSkgICAgICAgICAgICAgLyogdHJ1ZSBmb3IgbGl0dGxlLWVuZGlhbiwgZmFsc2UgZm9yIGJpZy1lbmRpYW4gKi8KIHsKQEAgLTQzNiw0MCArNDUwLDQ2IEBACiAvKiBOYXRpdmUgbW9kZSBkb2Vzbid0IHN1cHBvcnQgcSBvciBRIHVubGVzcyB0aGUgcGxhdGZvcm0gQyBzdXBwb3J0cwogICAgbG9uZyBsb25nIChvciwgb24gV2luZG93cywgX19pbnQ2NCkuICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBudV91bG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7CiB9CiAKLSNlbmRpZgotCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfYm9vbChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgQk9PTF9UWVBFIHg7CisgICAgX0Jvb2wgeDsKICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoeCAhPSAwKTsKIH0KIAogCiBzdGF0aWMgUHlPYmplY3QgKgorbnVfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMSk7CisjZWxzZQorICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDApOworI2VuZGlmICAgIAorfQorCitzdGF0aWMgUHlPYmplY3QgKgogbnVfZmxvYXQoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGZsb2F0IHg7CkBAIC02NDMsMTIgKzY2MywxMCBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIGludAogbnBfbG9uZ2xvbmcoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBpZiAoZ2V0X2xvbmdsb25nKHYsICZ4KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBtZW1jcHkocCwgKGNoYXIgKikmeCwgc2l6ZW9mIHgpOwpAQCAtNjU4LDIwICs2NzYsMTkgQEAKIHN0YXRpYyBpbnQKIG5wX3Vsb25nbG9uZyhjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfdWxvbmdsb25nKHYsICZ4KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBtZW1jcHkocCwgKGNoYXIgKikmeCwgc2l6ZW9mIHgpOwogICAgIHJldHVybiAwOwogfQotI2VuZGlmCiAKIAogc3RhdGljIGludAogbnBfYm9vbChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGludCB5OwotICAgIEJPT0xfVFlQRSB4OworICAgIF9Cb29sIHg7CiAgICAgeSA9IFB5T2JqZWN0X0lzVHJ1ZSh2KTsKICAgICBpZiAoeSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTY4MSw2ICs2OTgsMTYgQEAKIH0KIAogc3RhdGljIGludAorbnBfaGFsZmZsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisjaWYgUFlfTElUVExFX0VORElBTgorICAgIHJldHVybiBwYWNrX2hhbGZmbG9hdChwLCB2LCAxKTsKKyNlbHNlCisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDApOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKIG5wX2Zsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZmxvYXQgeCA9IChmbG9hdClQeUZsb2F0X0FzRG91YmxlKHYpOwpAQCAtNzIzLDcgKzc1MCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBmb3JtYXRkZWYgbmF0aXZlX3RhYmxlW10gPSB7CitzdGF0aWMgY29uc3QgZm9ybWF0ZGVmIG5hdGl2ZV90YWJsZVtdID0gewogICAgIHsneCcsICAgICAgIHNpemVvZihjaGFyKSwgICAwLCAgICAgICAgICAgICAgTlVMTH0sCiAgICAgeydiJywgICAgICAgc2l6ZW9mKGNoYXIpLCAgIDAsICAgICAgICAgICAgICBudV9ieXRlLCAgICAgICAgbnBfYnl0ZX0sCiAgICAgeydCJywgICAgICAgc2l6ZW9mKGNoYXIpLCAgIDAsICAgICAgICAgICAgICBudV91Ynl0ZSwgICAgICAgbnBfdWJ5dGV9LApAQCAtNzM4LDExICs3NjUsMTAgQEAKICAgICB7J0wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X3Vsb25nLCAgICAgICBucF91bG9uZ30sCiAgICAgeyduJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zc2l6ZV90LCAgICAgbnBfc3NpemVfdH0sCiAgICAgeydOJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zaXplX3QsICAgICAgbnBfc2l6ZV90fSwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHsncScsICAgICAgIHNpemVvZihQWV9MT05HX0xPTkcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCi0gICAgeydRJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCi0jZW5kaWYKLSAgICB7Jz8nLCAgICAgICBzaXplb2YoQk9PTF9UWVBFKSwgICAgICBCT09MX0FMSUdOLCAgICAgbnVfYm9vbCwgICAgICAgIG5wX2Jvb2x9LAorICAgIHsncScsICAgICAgIHNpemVvZihsb25nIGxvbmcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCisgICAgeydRJywgICAgICAgc2l6ZW9mKGxvbmcgbG9uZyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCisgICAgeyc/JywgICAgICAgc2l6ZW9mKF9Cb29sKSwgICAgICBCT09MX0FMSUdOLCAgICAgbnVfYm9vbCwgICAgICAgIG5wX2Jvb2x9LAorICAgIHsnZScsICAgICAgIHNpemVvZihzaG9ydCksICBTSE9SVF9BTElHTiwgICAgbnVfaGFsZmZsb2F0LCAgIG5wX2hhbGZmbG9hdH0sCiAgICAgeydmJywgICAgICAgc2l6ZW9mKGZsb2F0KSwgIEZMT0FUX0FMSUdOLCAgICBudV9mbG9hdCwgICAgICAgbnBfZmxvYXR9LAogICAgIHsnZCcsICAgICAgIHNpemVvZihkb3VibGUpLCBET1VCTEVfQUxJR04sICAgbnVfZG91YmxlLCAgICAgIG5wX2RvdWJsZX0sCiAgICAgeydQJywgICAgICAgc2l6ZW9mKHZvaWQgKiksIFZPSURfUF9BTElHTiwgICBudV92b2lkX3AsICAgICAgbnBfdm9pZF9wfSwKQEAgLTc4Myw4ICs4MDksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1X2xvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB4ID0gMDsKKyAgICBsb25nIGxvbmcgeCA9IDA7CiAgICAgUHlfc3NpemVfdCBpID0gZi0+c2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopcDsKICAgICBkbyB7CkBAIC03OTIsMzcgKzgxNywzMCBAQAogICAgIH0gd2hpbGUgKC0taSA+IDApOwogICAgIC8qIEV4dGVuZCB0aGUgc2lnbiBiaXQuICovCiAgICAgaWYgKFNJWkVPRl9MT05HX0xPTkcgPiBmLT5zaXplKQotICAgICAgICB4IHw9IC0oeCAmICgoUFlfTE9OR19MT05HKTEgPDwgKCg4ICogZi0+c2l6ZSkgLSAxKSkpOworICAgICAgICB4IHw9IC0oeCAmICgobG9uZyBsb25nKTEgPDwgKCg4ICogZi0+c2l6ZSkgLSAxKSkpOwogICAgIGlmICh4ID49IExPTkdfTUlOICYmIHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOwotI2Vsc2UKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KChjb25zdCB1bnNpZ25lZCBjaGFyICopcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAxICAvKiBzaWduZWQgKi8pOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidV91bG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHggPSAwOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKICAgICAgICAgeCA9ICh4PDw4KSB8ICpieXRlcysrOwogICAgIH0gd2hpbGUgKC0taSA+IDApOwogICAgIGlmICh4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHgpOwotI2Vsc2UKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KChjb25zdCB1bnNpZ25lZCBjaGFyICopcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAwICAvKiBzaWduZWQgKi8pOwotI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitidV9oYWxmZmxvYXQoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTIyLDYgKzk0MCwxMiBAQAogfQogCiBzdGF0aWMgaW50CiticF9oYWxmZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMCk7Cit9CisKK3N0YXRpYyBpbnQKIGJwX2Zsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwpAQCAtOTcyLDYgKzk5Niw3IEBACiAgICAgeydxJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9sb25nbG9uZywgICAgYnBfbG9uZ2xvbmd9LAogICAgIHsnUScsICAgICAgIDgsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfdWxvbmdsb25nLCAgIGJwX3Vsb25nbG9uZ30sCiAgICAgeyc/JywgICAgICAgMSwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9ib29sLCAgICAgICAgYnBfYm9vbH0sCisgICAgeydlJywgICAgICAgMiwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9oYWxmZmxvYXQsICAgYnBfaGFsZmZsb2F0fSwKICAgICB7J2YnLCAgICAgICA0LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2Zsb2F0LCAgICAgICBicF9mbG9hdH0sCiAgICAgeydkJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9kb3VibGUsICAgICAgYnBfZG91YmxlfSwKICAgICB7MH0KQEAgLTEwMTEsOCArMTAzNiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbHVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHggPSAwOworICAgIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKQEAgLTEwMjAsMzcgKzEwNDQsMzAgQEAKICAgICB9IHdoaWxlIChpID4gMCk7CiAgICAgLyogRXh0ZW5kIHRoZSBzaWduIGJpdC4gKi8KICAgICBpZiAoU0laRU9GX0xPTkdfTE9ORyA+IGYtPnNpemUpCi0gICAgICAgIHggfD0gLSh4ICYgKChQWV9MT05HX0xPTkcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CisgICAgICAgIHggfD0gLSh4ICYgKChsb25nIGxvbmcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDEgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGx1X3Vsb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewogICAgICAgICB4ID0gKHg8PDgpIHwgYnl0ZXNbLS1pXTsKICAgICB9IHdoaWxlIChpID4gMCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDAgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2x1X2hhbGZmbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTQyLDYgKzExNTksMTIgQEAKIH0KIAogc3RhdGljIGludAorbHBfaGFsZmZsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDEpOworfQorCitzdGF0aWMgaW50CiBscF9mbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGRvdWJsZSB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKQEAgLTExODIsNiArMTIwNSw3IEBACiAgICAgeydRJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBsdV91bG9uZ2xvbmcsICAgbHBfdWxvbmdsb25nfSwKICAgICB7Jz8nLCAgICAgICAxLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2Jvb2wsICAgICAgICBicF9ib29sfSwgLyogU3RkIHJlcCBub3QgZW5kaWFuIGRlcCwKICAgICAgICAgYnV0IHBvdGVudGlhbGx5IGRpZmZlcmVudCBmcm9tIG5hdGl2ZSByZXAgLS0gcmV1c2UgYnhfYm9vbCBmdW5jcy4gKi8KKyAgICB7J2UnLCAgICAgICAyLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X2hhbGZmbG9hdCwgICBscF9oYWxmZmxvYXR9LAogICAgIHsnZicsICAgICAgIDQsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfZmxvYXQsICAgICAgIGxwX2Zsb2F0fSwKICAgICB7J2QnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X2RvdWJsZSwgICAgICBscF9kb3VibGV9LAogICAgIHswfQpAQCAtMTE4OSw3ICsxMjEzLDcgQEAKIAogCiBzdGF0aWMgY29uc3QgZm9ybWF0ZGVmICoKLXdoaWNodGFibGUoY2hhciAqKnBmbXQpCit3aGljaHRhYmxlKGNvbnN0IGNoYXIgKipwZm10KQogewogICAgIGNvbnN0IGNoYXIgKmZtdCA9ICgqcGZtdCkrKzsgLyogTWF5IGJlIGJhY2tlZCBvdXQgb2YgbGF0ZXIgKi8KICAgICBzd2l0Y2ggKCpmbXQpIHsKQEAgLTEyNjgsNyArMTI5Miw3IEBACiAKICAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5zX2Zvcm1hdCk7CiAKLSAgICBmID0gd2hpY2h0YWJsZSgoY2hhciAqKikmZm10KTsKKyAgICBmID0gd2hpY2h0YWJsZSgmZm10KTsKIAogICAgIHMgPSBmbXQ7CiAgICAgc2l6ZSA9IDA7CkBAIC0xNDU2LDcgKzE0ODAsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotc191bnBhY2tfaW50ZXJuYWwoUHlTdHJ1Y3RPYmplY3QgKnNvc2VsZiwgY2hhciAqc3RhcnRmcm9tKSB7CitzX3VucGFja19pbnRlcm5hbChQeVN0cnVjdE9iamVjdCAqc29zZWxmLCBjb25zdCBjaGFyICpzdGFydGZyb20pIHsKICAgICBmb3JtYXRjb2RlICpjb2RlOwogICAgIFB5X3NzaXplX3QgaSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5VHVwbGVfTmV3KHNvc2VsZi0+c19sZW4pOwpAQCAtMjIzOSw3ICsyMjYzLDcgQEAKICAgeDogcGFkIGJ5dGUgKG5vIGRhdGEpOyBjOmNoYXI7IGI6c2lnbmVkIGJ5dGU7IEI6dW5zaWduZWQgYnl0ZTtcblwKICAgPzogX0Jvb2wgKHJlcXVpcmVzIEM5OTsgaWYgbm90IGF2YWlsYWJsZSwgY2hhciBpcyB1c2VkIGluc3RlYWQpXG5cCiAgIGg6c2hvcnQ7IEg6dW5zaWduZWQgc2hvcnQ7IGk6aW50OyBJOnVuc2lnbmVkIGludDtcblwKLSAgbDpsb25nOyBMOnVuc2lnbmVkIGxvbmc7IGY6ZmxvYXQ7IGQ6ZG91YmxlLlxuXAorICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGU7IGU6aGFsZi1mbG9hdC5cblwKIFNwZWNpYWwgY2FzZXMgKHByZWNlZGluZyBkZWNpbWFsIGNvdW50IGluZGljYXRlcyBsZW5ndGgpOlxuXAogICBzOnN0cmluZyAoYXJyYXkgb2YgY2hhcik7IHA6IHBhc2NhbCBzdHJpbmcgKHdpdGggY291bnQgYnl0ZSkuXG5cCiBTcGVjaWFsIGNhc2VzIChvbmx5IGF2YWlsYWJsZSBpbiBuYXRpdmUgZm9ybWF0KTpcblwKQEAgLTIyNzksNyArMjMwMyw3IEBACiAKICAgICAvKiBDaGVjayBlbmRpYW4gYW5kIHN3YXAgaW4gZmFzdGVyIGZ1bmN0aW9ucyAqLwogICAgIHsKLSAgICAgICAgZm9ybWF0ZGVmICpuYXRpdmUgPSBuYXRpdmVfdGFibGU7CisgICAgICAgIGNvbnN0IGZvcm1hdGRlZiAqbmF0aXZlID0gbmF0aXZlX3RhYmxlOwogICAgICAgICBmb3JtYXRkZWYgKm90aGVyLCAqcHRyOwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KICAgICAgICAgb3RoZXIgPSBsaWxlbmRpYW5fdGFibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKaW5kZXggNDNkYjhhOC4uMTNkM2NjYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCisrKyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpAQCAtMTMsNyArMTMsNyBAQAogUHlPYmplY3QgKmNhbGNzaXplID0gTlVMTDsKIAogLyogY2FjaGUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpzaW1wbGVfZm10ID0gIkIiOworc3RhdGljIGNvbnN0IGNoYXIgc2ltcGxlX2ZtdFtdID0gIkIiOwogUHlPYmplY3QgKnNpbXBsZV9mb3JtYXQgPSBOVUxMOwogI2RlZmluZSBTSU1QTEVfRk9STUFUKGZtdCkgKGZtdCA9PSBOVUxMIHx8IHN0cmNtcChmbXQsICJCIikgPT0gMCkKICNkZWZpbmUgRklYX0ZPUk1BVChmbXQpIChmbXQgPT0gTlVMTCA/ICJCIiA6IGZtdCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCmluZGV4IDgxZjViMWQuLmI1YjhmMWEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwpAQCAtNjAsOSArNjAsNyBAQAogICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfTE9ORywgbG9uZyk7CiAgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9WT0lEX1AsIHZvaWQqKTsKICAgICBDSEVDS19TSVpFT0YoU0laRU9GX1RJTUVfVCwgdGltZV90KTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfTE9OR19MT05HLCBQWV9MT05HX0xPTkcpOwotI2VuZGlmCisgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9MT05HX0xPTkcsIGxvbmcgbG9uZyk7CiAKICN1bmRlZiBDSEVDS19TSVpFT0YKIApAQCAtMTAwLDIyICs5OCwxNCBAQAogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzEsIDApOwogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzIsIDApOwogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzQsIDApOwotI2lmZGVmIEhBVkVfSU5UMzJfVAotICAgIENIRUNLX1NJWkVPRihQWV9JTlQzMl9ULCA0KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9JTlQzMl9ULCAxKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfVUlOVDMyX1QKLSAgICBDSEVDS19TSVpFT0YoUFlfVUlOVDMyX1QsIDQpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX1VJTlQzMl9ULCAwKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfSU5UNjRfVAotICAgIENIRUNLX1NJWkVPRihQWV9JTlQ2NF9ULCA4KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9JTlQ2NF9ULCAxKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfVUlOVDY0X1QKLSAgICBDSEVDS19TSVpFT0YoUFlfVUlOVDY0X1QsIDgpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX1VJTlQ2NF9ULCAwKTsKLSNlbmRpZgorICAgIENIRUNLX1NJWkVPRihpbnQzMl90LCA0KTsKKyAgICBDSEVDS19TSUdOTkVTUyhpbnQzMl90LCAxKTsKKyAgICBDSEVDS19TSVpFT0YodWludDMyX3QsIDQpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnQzMl90LCAwKTsKKyAgICBDSEVDS19TSVpFT0YoaW50NjRfdCwgOCk7CisgICAgQ0hFQ0tfU0lHTk5FU1MoaW50NjRfdCwgMSk7CisgICAgQ0hFQ0tfU0laRU9GKHVpbnQ2NF90LCA4KTsKKyAgICBDSEVDS19TSUdOTkVTUyh1aW50NjRfdCwgMCk7CiAKICAgICAvKiBwb2ludGVyL3NpemUgdHlwZXMgKi8KICAgICBDSEVDS19TSVpFT0Yoc2l6ZV90LCBzaXplb2Yodm9pZCAqKSk7CkBAIC0xMjMsMTAgKzExMywxMCBAQAogICAgIENIRUNLX1NJWkVPRihQeV9zc2l6ZV90LCBzaXplb2Yodm9pZCAqKSk7CiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfc3NpemVfdCwgMSk7CiAKLSAgICBDSEVDS19TSVpFT0YoUHlfdWludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUHlfdWludHB0cl90LCAwKTsKLSAgICBDSEVDS19TSVpFT0YoUHlfaW50cHRyX3QsIHNpemVvZih2b2lkICopKTsKLSAgICBDSEVDS19TSUdOTkVTUyhQeV9pbnRwdHJfdCwgMSk7CisgICAgQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCwgc2l6ZW9mKHZvaWQgKikpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnRwdHJfdCwgMCk7CisgICAgQ0hFQ0tfU0laRU9GKGludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7CisgICAgQ0hFQ0tfU0lHTk5FU1MoaW50cHRyX3QsIDEpOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMzU3LDEyICszNDcsMTIgQEAKIH0KIAogCi0vKiBUZXN0cyBvZiBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZygpLCBhbmQgKCNpZmRlZiBIQVZFX0xPTkdfTE9ORykKKy8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZAogICAgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmdMb25nKCkuCiAKICAgIE5vdGUgdGhhdCB0aGUgbWVhdCBvZiB0aGUgdGVzdCBpcyBjb250YWluZWQgaW4gdGVzdGNhcGlfbG9uZy5oLgogICAgVGhpcyBpcyByZXZvbHRpbmcsIGJ1dCBkZWxpY2F0ZSBjb2RlIGR1cGxpY2F0aW9uIGlzIHdvcnNlOiAgImFsbW9zdAotICAgZXhhY3RseSB0aGUgc2FtZSIgY29kZSBpcyBuZWVkZWQgdG8gdGVzdCBQWV9MT05HX0xPTkcsIGJ1dCB0aGUgdWJpcXVpdG91cworICAgZXhhY3RseSB0aGUgc2FtZSIgY29kZSBpcyBuZWVkZWQgdG8gdGVzdCBsb25nIGxvbmcsIGJ1dCB0aGUgdWJpcXVpdG91cwogICAgZGVwZW5kZW5jZSBvbiB0eXBlIG5hbWVzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdXNlIGEgcGFyYW1ldGVyaXplZAogICAgZnVuY3Rpb24uICBBIGdpYW50IG1hY3JvIHdvdWxkIGJlIGV2ZW4gd29yc2UgdGhhbiB0aGlzLiAgQSBDKysgdGVtcGxhdGUKICAgIHdvdWxkIGJlIHBlcmZlY3QuCkBAIC00MDIsOCArMzkyLDYgQEAKICN1bmRlZiBGX1VfVE9fUFkKICN1bmRlZiBGX1BZX1RPX1UKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIHN0YXRpYyBQeU9iamVjdCAqCiByYWlzZV90ZXN0X2xvbmdsb25nX2Vycm9yKGNvbnN0IGNoYXIqIG1zZykKIHsKQEAgLTQxMSw3ICszOTksNyBAQAogfQogCiAjZGVmaW5lIFRFU1ROQU1FICAgICAgICB0ZXN0X2xvbmdsb25nX2FwaV9pbm5lcgotI2RlZmluZSBUWVBFTkFNRSAgICAgICAgUFlfTE9OR19MT05HCisjZGVmaW5lIFRZUEVOQU1FICAgICAgICBsb25nIGxvbmcKICNkZWZpbmUgRl9TX1RPX1BZICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcKICNkZWZpbmUgRl9QWV9UT19TICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nCiAjZGVmaW5lIEZfVV9UT19QWSAgICAgICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKQEAgLTU5OCw3ICs1ODYsNyBAQAogfQogCiAvKiBUZXN0IHRoZSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93IEFQSS4gR2VuZXJhbCBjb252ZXJzaW9uIHRvCi0gICBQWV9MT05HX0xPTkcgaXMgdGVzdGVkIGJ5IHRlc3RfbG9uZ19hcGlfaW5uZXIuIFRoaXMgdGVzdCB3aWxsCisgICBsb25nIGxvbmcgaXMgdGVzdGVkIGJ5IHRlc3RfbG9uZ19hcGlfaW5uZXIuIFRoaXMgdGVzdCB3aWxsCiAgICBjb25jZW50cmF0ZSBvbiBwcm9wZXIgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuCiAqLwogCkBAIC02MDYsNyArNTk0LDcgQEAKIHRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdyhQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqbnVtLCAqb25lLCAqdGVtcDsKLSAgICBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgbG9uZyBsb25nIHZhbHVlOwogICAgIGludCBvdmVyZmxvdzsKIAogICAgIC8qIFRlc3QgdGhhdCBvdmVyZmxvdyBpcyBzZXQgcHJvcGVybHkgZm9yIGEgbGFyZ2UgdmFsdWUuICovCkBAIC04MjQsNyArODEyLDcgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotLyogVGVzdCB0aGUgTCBjb2RlIGZvciBQeUFyZ19QYXJzZVR1cGxlLiAgVGhpcyBzaG91bGQgZGVsaXZlciBhIFBZX0xPTkdfTE9ORworLyogVGVzdCB0aGUgTCBjb2RlIGZvciBQeUFyZ19QYXJzZVR1cGxlLiAgVGhpcyBzaG91bGQgZGVsaXZlciBhIGxvbmcgbG9uZwogICAgZm9yIGJvdGggbG9uZyBhbmQgaW50IGFyZ3VtZW50cy4gIFRoZSB0ZXN0IG1heSBsZWFrIGEgbGl0dGxlIG1lbW9yeSBpZgogICAgaXQgZmFpbHMuCiAqLwpAQCAtODMyLDcgKzgyMCw3IEBACiB0ZXN0X0xfY29kZShQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqdHVwbGUsICpudW07Ci0gICAgUFlfTE9OR19MT05HIHZhbHVlOworICAgIGxvbmcgbG9uZyB2YWx1ZTsKIAogICAgIHR1cGxlID0gUHlUdXBsZV9OZXcoMSk7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCkBAIC04NzAsOCArODU4LDYgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotI2VuZGlmICAvKiBpZmRlZiBIQVZFX0xPTkdfTE9ORyAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgogcmV0dXJuX25vbmUodm9pZCAqdW51c2VkKQogewpAQCAtMTAwMSw3ICs5ODcsNyBAQAogZ2V0YXJnc19rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImFyZzEiLCJhcmcyIiwiYXJnMyIsImFyZzQiLCJhcmc1IiwgTlVMTH07Ci0gICAgc3RhdGljIGNoYXIgKmZtdD0iKGlpKWl8KGkoaWkpKShpaWkpaSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZm10W10gPSAiKGlpKWl8KGkoaWkpKShpaWkpaSI7CiAgICAgaW50IGludF9hcmdzWzEwXT17LTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTF9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCBmbXQsIGtleXdvcmRzLApAQCAtMTAyOCw2ICsxMDE0LDIxIEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZF9vbmx5KTsKIH0KIAorLyogdGVzdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgcG9zaXRpb25hbC1vbmx5IGFyZ3VtZW50cyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3NfcG9zaXRpb25hbF9vbmx5X2FuZF9rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7IiIsICIiLCAia2V5d29yZCIsIE5VTEx9OworICAgIGludCByZXF1aXJlZCA9IC0xOworICAgIGludCBvcHRpb25hbCA9IC0xOworICAgIGludCBrZXl3b3JkID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpfGlpIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcXVpcmVkLCAmb3B0aW9uYWwsICZrZXl3b3JkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZCk7Cit9CisKIC8qIEZ1bmN0aW9ucyB0byBjYWxsIFB5QXJnX1BhcnNlVHVwbGUgd2l0aCBpbnRlZ2VyIGZvcm1hdCBjb2RlcywKICAgIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KICovCkBAIC0xMTIxLDExICsxMTIyLDEwIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfTChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbHVlOworICAgIGxvbmcgbG9uZyB2YWx1ZTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkwiLCAmdmFsdWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CkBAIC0xMTM0LDEyICsxMTM0LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc19LKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsdWUpOwogfQotI2VuZGlmCiAKIC8qIFRoaXMgZnVuY3Rpb24gbm90IG9ubHkgdGVzdHMgdGhlICdrJyBnZXRhcmdzIGNvZGUsIGJ1dCBhbHNvIHRoZQogICAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIGFuZCBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgZnVuY3Rpb25zLiAqLwpAQCAtMTE2MSw3ICsxMTYwLDcgQEAKICAgICB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sobnVtKTsKICAgICBpZiAodmFsdWUgIT0gVUxPTkdfTUFYKQogICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfa19jb2RlIiwKLSAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOworICAgICAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOwogCiAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXBsZSwgMCwgbnVtKTsKIApAQCAtMTE4MCw3ICsxMTc5LDcgQEAKICAgICB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sobnVtKTsKICAgICBpZiAodmFsdWUgIT0gKHVuc2lnbmVkIGxvbmcpLTB4NDIpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9rX2NvZGUiLAotICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CisgICAgICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CiAKICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cGxlLCAwLCBudW0pOwogCkBAIC0yMTMwLDcgKzIxMjksNyBAQAogICAgIFB5T2JqZWN0ICpyYzsKICAgICBpbnQgc3VjY2VzczsKICAgICBQeUdJTFN0YXRlX1NUQVRFIHMgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwotICAgIHJjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKWNhbGxhYmxlLCAiIik7CisgICAgcmMgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKChQeU9iamVjdCAqKWNhbGxhYmxlKTsKICAgICBzdWNjZXNzID0gKHJjICE9IE5VTEwpOwogICAgIFB5X1hERUNSRUYocmMpOwogICAgIFB5R0lMU3RhdGVfUmVsZWFzZShzKTsKQEAgLTIyNjQsMTAgKzIyNjMsOCBAQAogICAgIENIRUNLXzFfRk9STUFUKCIlenUiLCBzaXplX3QpOwogCiAgICAgLyogIiVsbGQiIGFuZCAiJWxsdSIgc3VwcG9ydCBhZGRlZCBpbiBQeXRob24gMi43LiAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgQ0hFQ0tfMV9GT1JNQVQoIiVsbHUiLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOwotICAgIENIRUNLXzFfRk9STUFUKCIlbGxkIiwgUFlfTE9OR19MT05HKTsKLSNlbmRpZgorICAgIENIRUNLXzFfRk9STUFUKCIlbGx1IiwgdW5zaWduZWQgbG9uZyBsb25nKTsKKyAgICBDSEVDS18xX0ZPUk1BVCgiJWxsZCIsIGxvbmcgbG9uZyk7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIApAQCAtMjMxMiw3ICsyMzA5LDcgQEAKICAgICByZXN1bHQgPSBQeU9TX3N0cmluZ190b19kb3VibGUoU1RSLCBOVUxMLCBOVUxMKTsgICAgICAgICAgICBcCiAgICAgaWYgKHJlc3VsdCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHJlc3VsdCAhPSAoZG91YmxlKWV4cGVjdGVkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBtc2cgPSAiY29udmVyc2lvbiBvZiAiIFNUUiAiIHRvIGZsb2F0IGZhaWxlZCI7ICAgICAgICAgIFwKICAgICAgICAgZ290byBmYWlsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQpAQCAtMjkwNCw3ICsyOTAxLDkgQEAKIHN0YXRpYyBpbnQKIGNoZWNrX3RpbWVfcm91bmRpbmcoaW50IHJvdW5kKQogewotICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0ZMT09SICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0ZMT09SCisgICAgICAgICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfQ0VJTElORworICAgICAgICAmJiByb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgcm91bmRpbmciKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMzOTksNyArMzM5OCw3IEBACiAgICAgLyogQWxsb2NhdGUgYSBQeXRob24gdGhyZWFkIHN0YXRlIGZvciB0aGlzIHRocmVhZCAqLwogICAgIHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKIAotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbih0ZXN0X2NfdGhyZWFkLT5jYWxsYmFjaywgIiIsIE5VTEwpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTm9BcmcodGVzdF9jX3RocmVhZC0+Y2FsbGJhY2spOwogICAgIFB5X0NMRUFSKHRlc3RfY190aHJlYWQtPmNhbGxiYWNrKTsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkgewpAQCAtMzY4OSw3ICszNjg4LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X3B5dGltZV9hc3NlY29uZHNkb3VibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgX1B5VGltZV90IHRzOwogICAgIGRvdWJsZSBkOwogCkBAIC0zNzAzLDcgKzM3MDIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzVGltZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBpbnQgcm91bmQ7CiAgICAgX1B5VGltZV90IHQ7CiAgICAgc3RydWN0IHRpbWV2YWwgdHY7CkBAIC0zNzE3LDcgKzM3MTYsNyBAQAogICAgIGlmIChfUHlUaW1lX0FzVGltZXZhbCh0LCAmdHYsIHJvdW5kKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2Vjb25kcyA9IFB5TG9uZ19Gcm9tTG9uZygoUFlfTE9OR19MT05HKXR2LnR2X3NlYyk7CisgICAgc2Vjb25kcyA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyBsb25nKXR2LnR2X3NlYyk7CiAgICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgc2Vjb25kcywgdHYudHZfdXNlYyk7CkBAIC0zNzI3LDcgKzM3MjYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzVGltZXNwZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgX1B5VGltZV90IHQ7CiAgICAgc3RydWN0IHRpbWVzcGVjIHRzOwogCkBAIC0zNzQzLDcgKzM3NDIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgbG9uZyBsb25nIG5zOwogICAgIGludCByb3VuZDsKICAgICBfUHlUaW1lX3QgdCwgbXM7CiAKQEAgLTM3NjEsNyArMzc2MCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNNaWNyb3NlY29uZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgaW50IHJvdW5kOwogICAgIF9QeVRpbWVfdCB0LCBtczsKIApAQCAtMzc4NSw2ICszNzg0LDE1MiBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodHN0YXRlLT5yZWN1cnNpb25fZGVwdGggLSAxKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorcHltZW1fYnVmZmVyX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZmZlciBvdmVyZmxvdyB0byBjaGVjayB0aGF0IFB5TWVtX0ZyZWUoKSBkZXRlY3RzCisgICAgICAgdGhlIG92ZXJmbG93IHdoZW4gZGVidWcgaG9va3MgYXJlIGluc3RhbGxlZC4gKi8KKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2MoMTYpOworICAgIGJ1ZmZlclsxNl0gPSAneCc7CisgICAgUHlNZW1fRnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5bWVtX2FwaV9taXN1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKmJ1ZmZlcjsKKworICAgIC8qIERlbGliZXJhdGUgbWlzdXNhZ2Ugb2YgUHl0aG9uIGFsbG9jYXRvcnM6CisgICAgICAgYWxsb2NvY2F0ZSB3aXRoIFB5TWVtIGJ1dCByZWxlYXNlIHdpdGggUHlNZW1fUmF3LiAqLworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYygxNik7CisgICAgUHlNZW1fUmF3RnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5bWVtX21hbGxvY193aXRob3V0X2dpbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgLyogRGVsaWJlcmF0ZSBidWcgdG8gdGVzdCBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnM6CisgICAgICAgY2FsbCBQeU1lbV9NYWxsb2MoKSB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2MoMTApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZyB0byB0ZXN0IGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yczoKKyAgICAgICBjYWxsIFB5T2JqZWN0X01hbGxvYygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGJ1ZmZlciA9IFB5T2JqZWN0X01hbGxvYygxMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5T2JqZWN0X0ZyZWUoYnVmZmVyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHJhY2VtYWxsb2NfdHJhY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBkb21haW47CisgICAgUHlPYmplY3QgKnB0cl9vYmo7CisgICAgdm9pZCAqcHRyOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBpbnQgcmVsZWFzZV9naWwgPSAwOworICAgIGludCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIklPbnxpIiwgJmRvbWFpbiwgJnB0cl9vYmosICZzaXplLCAmcmVsZWFzZV9naWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwdHIgPSBQeUxvbmdfQXNWb2lkUHRyKHB0cl9vYmopOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChyZWxlYXNlX2dpbCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IF9QeVRyYWNlTWFsbG9jX1RyYWNrKGRvbWFpbiwgKHVpbnRwdHJfdClwdHIsIHNpemUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVHJhY2soZG9tYWluLCAodWludHB0cl90KXB0ciwgc2l6ZSk7CisgICAgfQorCisgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIl9QeVRyYWNlTWFsbG9jX1RyYWNrIGVycm9yIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHJhY2VtYWxsb2NfdW50cmFjayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdW5zaWduZWQgaW50IGRvbWFpbjsKKyAgICBQeU9iamVjdCAqcHRyX29iajsKKyAgICB2b2lkICpwdHI7CisgICAgaW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU8iLCAmZG9tYWluLCAmcHRyX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVW50cmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyKTsKKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiX1B5VHJhY2VNYWxsb2NfVHJhY2sgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgZG9tYWluOworICAgIFB5T2JqZWN0ICpwdHJfb2JqOworICAgIHZvaWQgKnB0cjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU8iLCAmZG9tYWluLCAmcHRyX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIF9QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZ2V0X3ZlcnNpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5RGljdE9iamVjdCAqZGljdDsKKyAgICB1aW50NjRfdCB2ZXJzaW9uOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPISIsICZQeURpY3RfVHlwZSwgJmRpY3QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZlcnNpb24gPSBkaWN0LT5tYV92ZXJzaW9uX3RhZzsKKworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodW5zaWduZWQgUFlfTE9OR19MT05HKSA+PSBzaXplb2YodmVyc2lvbikpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyl2ZXJzaW9uKTsKK30KKwogCiBzdGF0aWMgUHlNZXRob2REZWYgVGVzdE1ldGhvZHNbXSA9IHsKICAgICB7InJhaXNlX2V4Y2VwdGlvbiIsICAgICAgICAgcmFpc2VfZXhjZXB0aW9uLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTM4MzAsNiArMzk3NSw5IEBACiAgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCiAgICAgeyJnZXRhcmdzX2tleXdvcmRfb25seSIsIChQeUNGdW5jdGlvbilnZXRhcmdzX2tleXdvcmRfb25seSwKICAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKKyAgICB7ImdldGFyZ3NfcG9zaXRpb25hbF9vbmx5X2FuZF9rZXl3b3JkcyIsCisgICAgICAoUHlDRnVuY3Rpb24pZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzLAorICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiZ2V0YXJnc19iIiwgICAgICAgICAgICAgICBnZXRhcmdzX2IsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19CIiwgICAgICAgICAgICAgICBnZXRhcmdzX0IsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19oIiwgICAgICAgICAgICAgICBnZXRhcmdzX2gsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMzg0MCwxNCArMzk4OCwxMiBAQAogICAgIHsiZ2V0YXJnc19sIiwgICAgICAgICAgICAgICBnZXRhcmdzX2wsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19uIiwgICAgICAgICAgICAgICBnZXRhcmdzX24sICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19wIiwgICAgICAgICAgICAgICBnZXRhcmdzX3AsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgeyJnZXRhcmdzX0wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfTCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0siLCAgICAgICAgICAgICAgIGdldGFyZ3NfSywgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdsb25nX2FwaSIsICAgICAgIHRlc3RfbG9uZ2xvbmdfYXBpLCAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdyIsCiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfbG9uZ19hbmRfb3ZlcmZsb3csIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfTF9jb2RlIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfTF9jb2RlLCAgICAgICAgTUVUSF9OT0FSR1N9LAotI2VuZGlmCiAgICAgeyJnZXRhcmdzX2YiLCAgICAgICAgICAgICAgIGdldGFyZ3NfZiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2QiLCAgICAgICAgICAgICAgIGdldGFyZ3NfZCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0QiLCAgICAgICAgICAgICAgIGdldGFyZ3NfRCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0zOTc2LDYgKzQxMjIsMTQgQEAKICAgICB7IlB5VGltZV9Bc01pbGxpc2Vjb25kcyIsIHRlc3RfUHlUaW1lX0FzTWlsbGlzZWNvbmRzLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiUHlUaW1lX0FzTWljcm9zZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWNyb3NlY29uZHMsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRfcmVjdXJzaW9uX2RlcHRoIiwgZ2V0X3JlY3Vyc2lvbl9kZXB0aCwgTUVUSF9OT0FSR1N9LAorICAgIHsicHltZW1fYnVmZmVyX292ZXJmbG93IiwgcHltZW1fYnVmZmVyX292ZXJmbG93LCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9hcGlfbWlzdXNlIiwgcHltZW1fYXBpX21pc3VzZSwgTUVUSF9OT0FSR1N9LAorICAgIHsicHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsIiwgcHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsLCBNRVRIX05PQVJHU30sCisgICAgeyJweW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwiLCBweW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwsIE1FVEhfTk9BUkdTfSwKKyAgICB7InRyYWNlbWFsbG9jX3RyYWNrIiwgdHJhY2VtYWxsb2NfdHJhY2ssIE1FVEhfVkFSQVJHU30sCisgICAgeyJ0cmFjZW1hbGxvY191bnRyYWNrIiwgdHJhY2VtYWxsb2NfdW50cmFjaywgTUVUSF9WQVJBUkdTfSwKKyAgICB7InRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2siLCB0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZGljdF9nZXRfdmVyc2lvbiIsIGRpY3RfZ2V0X3ZlcnNpb24sIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zOTk1LDEwICs0MTQ5LDggQEAKICAgICBmbG9hdCBmbG9hdF9tZW1iZXI7CiAgICAgZG91YmxlIGRvdWJsZV9tZW1iZXI7CiAgICAgY2hhciBpbnBsYWNlX21lbWJlcls2XTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyBsb25nbG9uZ19tZW1iZXI7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHVsb25nbG9uZ19tZW1iZXI7Ci0jZW5kaWYKKyAgICBsb25nIGxvbmcgbG9uZ2xvbmdfbWVtYmVyOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bG9uZ2xvbmdfbWVtYmVyOwogfSBhbGxfc3RydWN0bWVtYmVyczsKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtNDAyMCwxMCArNDE3Miw4IEBACiAgICAgeyJUX0ZMT0FUIiwgVF9GTE9BVCwgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLmZsb2F0X21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9ET1VCTEUiLCBUX0RPVUJMRSwgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLmRvdWJsZV9tZW1iZXIpLCAwLCBOVUxMfSwKICAgICB7IlRfU1RSSU5HX0lOUExBQ0UiLCBUX1NUUklOR19JTlBMQUNFLCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuaW5wbGFjZV9tZW1iZXIpLCAwLCBOVUxMfSwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIHsiVF9MT05HTE9ORyIsIFRfTE9OR0xPTkcsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy5sb25nbG9uZ19tZW1iZXIpLCAwLCBOVUxMfSwKICAgICB7IlRfVUxPTkdMT05HIiwgVF9VTE9OR0xPTkcsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy51bG9uZ2xvbmdfbWVtYmVyKSwgMCwgTlVMTH0sCi0jZW5kaWYKICAgICB7TlVMTH0KIH07CiAKQEAgLTQwMzUsMTUgKzQxODUsOSBAQAogICAgICAgICAiVF9CT09MIiwgIlRfQllURSIsICJUX1VCWVRFIiwgIlRfU0hPUlQiLCAiVF9VU0hPUlQiLAogICAgICAgICAiVF9JTlQiLCAiVF9VSU5UIiwgIlRfTE9ORyIsICJUX1VMT05HIiwgIlRfUFlTU0laRVQiLAogICAgICAgICAiVF9GTE9BVCIsICJUX0RPVUJMRSIsICJUX1NUUklOR19JTlBMQUNFIiwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAiVF9MT05HTE9ORyIsICJUX1VMT05HTE9ORyIsCi0jZW5kaWYKICAgICAgICAgTlVMTH07Ci0gICAgc3RhdGljIGNoYXIgKmZtdCA9ICJ8YmJCaEhpSWxrbmZkcyMiCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgIkxLIgotI2VuZGlmCi0gICAgICAgIDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBmbXRbXSA9ICJ8YmJCaEhpSWxrbmZkcyNMSyI7CiAgICAgdGVzdF9zdHJ1Y3RtZW1iZXJzICpvYjsKICAgICBjb25zdCBjaGFyICpzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN0cmluZ19sZW4gPSAwOwpAQCAtNDA2NSwxMCArNDIwOSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iLT5zdHJ1Y3RtZW1iZXJzLmZsb2F0X21lbWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2ItPnN0cnVjdG1lbWJlcnMuZG91YmxlX21lbWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcywgJnN0cmluZ19sZW4KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJm9iLT5zdHJ1Y3RtZW1iZXJzLmxvbmdsb25nX21lbWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2ItPnN0cnVjdG1lbWJlcnMudWxvbmdsb25nX21lbWJlcgotI2VuZGlmCiAgICAgICAgICkpIHsKICAgICAgICAgUHlfREVDUkVGKG9iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00Mzk0LDYgKzQ1MzYsNyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUFlfU1NJWkVfVF9NQVgiLCBQeUxvbmdfRnJvbVNzaXplX3QoUFlfU1NJWkVfVF9NQVgpKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlBZX1NTSVpFX1RfTUlOIiwgUHlMb25nX0Zyb21Tc2l6ZV90KFBZX1NTSVpFX1RfTUlOKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJTSVpFT0ZfUFlHQ19IRUFEIiwgUHlMb25nX0Zyb21Tc2l6ZV90KHNpemVvZihQeUdDX0hlYWQpKSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJTSVpFT0ZfVElNRV9UIiwgUHlMb25nX0Zyb21Tc2l6ZV90KHNpemVvZih0aW1lX3QpKSk7CiAgICAgUHlfSU5DUkVGKCZQeUluc3RhbmNlTWV0aG9kX1R5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaW5zdGFuY2VtZXRob2QiLCAoUHlPYmplY3QgKikmUHlJbnN0YW5jZU1ldGhvZF9UeXBlKTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKaW5kZXggNDFkYTk5Ny4uNGRhYTM0ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYworKysgYi9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jCkBAIC02MSw3ICs2MSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLUV4YW1wbGVfc2V0YXR0cihFeGFtcGxlT2JqZWN0ICpzZWxmLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKK0V4YW1wbGVfc2V0YXR0cihFeGFtcGxlT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpIHsKICAgICAgICAgc2VsZi0+eF9hdHRyID0gUHlEaWN0X05ldygpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGtpbnRlci5jIGIvTW9kdWxlcy9fdGtpbnRlci5jCmluZGV4IDMxNmY5MzIuLjIxZjA2M2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RraW50ZXIuYworKysgYi9Nb2R1bGVzL190a2ludGVyLmMKQEAgLTQ2Miw3ICs0NjIsNyBAQAogICAgICAgICAgICAgICAgIHYgPSBOVUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHcpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2LCBpLCB3KTsKICAgICAgICAgfQogICAgIH0KICAgICBUY2xfRnJlZShGUkVFQ0FTVCBhcmd2KTsKQEAgLTQ4MCwxMyArNDgwLDEzIEBACiAgICAgICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKICAgICAgICAgUHlPYmplY3QgKmVsZW0sICpuZXdlbGVtLCAqcmVzdWx0OwogCi0gICAgICAgIHNpemUgPSBQeVR1cGxlX1NpemUoYXJnKTsKKyAgICAgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoYXJnKTsKICAgICAgICAgcmVzdWx0ID0gTlVMTDsKICAgICAgICAgLyogUmVjdXJzaXZlbHkgaW52b2tlIFNwbGl0T2JqIGZvciBhbGwgdHVwbGUgaXRlbXMuCiAgICAgICAgICAgIElmIHRoaXMgZG9lcyBub3QgcmV0dXJuIGEgbmV3IG9iamVjdCwgbm8gYWN0aW9uIGlzCiAgICAgICAgICAgIG5lZWRlZC4gKi8KICAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9HZXRJdGVtKGFyZywgaSk7CisgICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmcsIGkpOwogICAgICAgICAgICAgbmV3ZWxlbSA9IFNwbGl0T2JqKGVsZW0pOwogICAgICAgICAgICAgaWYgKCFuZXdlbGVtKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwpAQCAtNTAyLDEyICs1MDIsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgZm9yKGsgPSAwOyBrIDwgaTsgaysrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dldEl0ZW0oYXJnLCBrKTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJnLCBrKTsKICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBrLCBlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGssIGVsZW0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGksIG5ld2VsZW0pOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIG5ld2VsZW0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTI5LDcgKzUyOSw3IEBACiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01NTEsNyArNTUxLDcgQEAKICAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykpIHsKICAgICAgICAgaW50IGFyZ2M7CiAgICAgICAgIGNvbnN0IGNoYXIgKiphcmd2OwotICAgICAgICBjaGFyICpsaXN0ID0gUHlCeXRlc19Bc1N0cmluZyhhcmcpOworICAgICAgICBjaGFyICpsaXN0ID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKTsKIAogICAgICAgICBpZiAoVGNsX1NwbGl0TGlzdCgoVGNsX0ludGVycCAqKU5VTEwsIGxpc3QsICZhcmdjLCAmYXJndikgIT0gVENMX09LKSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoYXJnKTsKQEAgLTU1OSw3ICs1NTksNyBAQAogICAgICAgICB9CiAgICAgICAgIFRjbF9GcmVlKEZSRUVDQVNUIGFyZ3YpOwogICAgICAgICBpZiAoYXJnYyA+IDEpCi0gICAgICAgICAgICByZXR1cm4gU3BsaXQoUHlCeXRlc19Bc1N0cmluZyhhcmcpKTsKKyAgICAgICAgICAgIHJldHVybiBTcGxpdChQeUJ5dGVzX0FTX1NUUklORyhhcmcpKTsKICAgICAgICAgLyogRmFsbCB0aHJvdWdoLCByZXR1cm5pbmcgYXJnLiAqLwogICAgIH0KICAgICBQeV9JTkNSRUYoYXJnKTsKQEAgLTc1OCw3ICs3NTgsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBUY2xfU2V0VmFyKHYtPmludGVycCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0Y2xfbGlicmFyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKHV0ZjhfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh1dGY4X3BhdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVENMX0dMT0JBTF9PTkxZKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodXRmOF9wYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTg0MSw3ICs4NDEsNyBAQAogICAgIFB5X0RFQ1JFRih0cCk7CiB9CiAKLXN0YXRpYyBjaGFyKgorc3RhdGljIGNvbnN0IGNoYXIgKgogUHlUY2xPYmplY3RfVGNsU3RyaW5nKFB5T2JqZWN0ICpzZWxmKQogewogICAgIHJldHVybiBUY2xfR2V0U3RyaW5nKCgoUHlUY2xPYmplY3QqKXNlbGYpLT52YWx1ZSk7CkBAIC05NzYsNyArOTc2LDcgQEAKIH07CiAKIAotI2lmIFBZX1NJWkVfTUFYID4gSU5UX01BWAorI2lmIFNJWkVfTUFYID4gSU5UX01BWAogI2RlZmluZSBDSEVDS19TVFJJTkdfTEVOR1RIKHMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAocyAhPSBOVUxMICYmIHN0cmxlbihzKSA+PSBJTlRfTUFYKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJzdHJpbmcgaXMgdG9vIGxvbmciKTsgXApAQCAtMTE4MiwxMCArMTE4Miw4IEBACiB7CiAgICAgICAgIFRjbF9XaWRlSW50IHdpZGVWYWx1ZTsKICAgICAgICAgaWYgKFRjbF9HZXRXaWRlSW50RnJvbU9iaihUa2FwcF9JbnRlcnAodGthcHApLCB2YWx1ZSwgJndpZGVWYWx1ZSkgPT0gVENMX09LKSB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgIGlmIChzaXplb2Yod2lkZVZhbHVlKSA8PSBTSVpFT0ZfTE9OR19MT05HKQogICAgICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHdpZGVWYWx1ZSk7Ci0jZW5kaWYKICAgICAgICAgICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKHVuc2lnbmVkIGNoYXIgKikodm9pZCAqKSZ3aWRlVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih3aWRlVmFsdWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9MSVRUTEVfRU5ESUFOLApAQCAtMTMwNiw3ICsxMzA0LDcgQEAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGksIGVsZW0pOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIGVsZW0pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTUxNyw4ICsxNTE1LDggQEAKICAgICBpbnQgZmxhZ3MgPSBUQ0xfRVZBTF9ESVJFQ1QgfCBUQ0xfRVZBTF9HTE9CQUw7CiAKICAgICAvKiBJZiBhcmdzIGlzIGEgc2luZ2xlIHR1cGxlLCByZXBsYWNlIHdpdGggY29udGVudHMgb2YgdHVwbGUgKi8KLSAgICBpZiAoMSA9PSBQeVR1cGxlX1NpemUoYXJncykpewotICAgICAgICBQeU9iamVjdCogaXRlbSA9IFB5VHVwbGVfR2V0SXRlbShhcmdzLCAwKTsKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAxKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKICAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2soaXRlbSkpCiAgICAgICAgICAgICBhcmdzID0gaXRlbTsKICAgICB9CkBAIC0xNzI2LDE0ICsxNzI0LDE0IEBACiB2YXJuYW1lX2NvbnZlcnRlcihQeU9iamVjdCAqaW4sIHZvaWQgKl9vdXQpCiB7CiAgICAgY2hhciAqczsKLSAgICBjaGFyICoqb3V0ID0gKGNoYXIqKilfb3V0OworICAgIGNvbnN0IGNoYXIgKipvdXQgPSAoY29uc3QgY2hhcioqKV9vdXQ7CiAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soaW4pKSB7Ci0gICAgICAgIGlmIChQeUJ5dGVzX1NpemUoaW4pID4gSU5UX01BWCkgeworICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShpbikgPiBJTlRfTUFYKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgImJ5dGVzIG9iamVjdCBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoaW4pOwotICAgICAgICBpZiAoc3RybGVuKHMpICE9IChzaXplX3QpUHlCeXRlc19TaXplKGluKSkgeworICAgICAgICBzID0gUHlCeXRlc19BU19TVFJJTkcoaW4pOworICAgICAgICBpZiAoc3RybGVuKHMpICE9IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShpbikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMTg0Niw3ICsxODQ0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBTZXRWYXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZmxhZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTEsICpuYW1lMjsKKyAgICBjb25zdCBjaGFyICpuYW1lMSwgKm5hbWUyOwogICAgIFB5T2JqZWN0ICpuZXdWYWx1ZTsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBUY2xfT2JqICpuZXd2YWwsICpvazsKQEAgLTE5MTUsNyArMTkxMyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogR2V0VmFyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGZsYWdzKQogewotICAgIGNoYXIgKm5hbWUxLCAqbmFtZTI9TlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lMSwgKm5hbWUyPU5VTEw7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgVGNsX09iaiAqdHJlczsKIApAQCAtMjI3NCwxMCArMjI3MiwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvYmpjOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gRnJvbU9iaigoUHlPYmplY3QqKXNlbGYsIG9ianZbaV0pOwotICAgICAgICAgICAgaWYgKCFzIHx8IFB5VHVwbGVfU2V0SXRlbSh2LCBpLCBzKSkgeworICAgICAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2LCBpLCBzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdjsKICAgICB9CkBAIC0yMzA0LDExICsyMzAzLDEyIEBACiAKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoYXJndltpXSk7Ci0gICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0odiwgaSwgcykpIHsKKyAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICB2ID0gTlVMTDsKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHMpOwogICAgIH0KIAogICBmaW5hbGx5OgpAQCAtMjM0OSwxMCArMjM0OSwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvYmpjOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gRnJvbU9iaigoUHlPYmplY3QqKXNlbGYsIG9ianZbaV0pOwotICAgICAgICAgICAgaWYgKCFzIHx8IFB5VHVwbGVfU2V0SXRlbSh2LCBpLCBzKSkgeworICAgICAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2LCBpLCBzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdjsKICAgICB9CkBAIC0yNDEwLDEwICsyNDExLDExIEBACiAKICAgICBmb3IgKGkgPSAwOyBpIDwgKGFyZ2MgLSAxKTsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoYXJndltpICsgMV0pOwotICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKGFyZywgaSwgcykpIHsKKyAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnKTsKICAgICAgICAgICAgIHJldHVybiBQeXRob25DbWRfRXJyb3IoaW50ZXJwKTsKICAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZywgaSwgcyk7CiAgICAgfQogICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsIGFyZyk7CiAgICAgUHlfREVDUkVGKGFyZyk7CkBAIC0yNDg1LDcgKzI0ODcsNiBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAuY3JlYXRlY29tbWFuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKICAgICBuYW1lOiBzdHIKICAgICBmdW5jOiBvYmplY3QKICAgICAvCkBAIC0yNDk1LDcgKzI0OTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF90a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTFjNzlhNGVlMmFmNDEwIGlucHV0PTJiYzJjMDQ2YTA5MTQyMzRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTFjNzlhNGVlMmFmNDEwIGlucHV0PTI1NTc4NWNiNzBlZGM2YTBdKi8KIHsKICAgICBQeXRob25DbWRfQ2xpZW50RGF0YSAqZGF0YTsKICAgICBpbnQgZXJyOwpAQCAtMjU2MSw3ICsyNTYyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF90a2ludGVyLnRrYXBwLmRlbGV0ZWNvbW1hbmQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCiAgICAgbmFtZTogc3RyCiAgICAgLwogCkBAIC0yNTY5LDcgKzI1NjksNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2N2U4Y2I1ODQ1ZTBkMmQgaW5wdXQ9YjYzMDY0NjhmMTBiMjE5Y10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2N2U4Y2I1ODQ1ZTBkMmQgaW5wdXQ9NTNlOTk1MmVhZTFmODVmNV0qLwogewogICAgIGludCBlcnI7CiAKQEAgLTI3NjIsMTMgKzI3NjIsMTEgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF90a2ludGVyLnRrdGltZXJ0b2tlbi5kZWxldGV0aW1lcmhhbmRsZXIKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGt0dE9iamVjdCAqIikKLQogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGt0aW1lcnRva2VuX2RlbGV0ZXRpbWVyaGFuZGxlcl9pbXBsKFRrdHRPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQ3ZmUxN2YzMjhjZmE1NSBpbnB1dD0yNWJhNWRkNTk0ZTUyMDg0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQ3ZmUxN2YzMjhjZmE1NSBpbnB1dD00MGJkMDcwZmY4NWY1Y2YzXSovCiB7CiAgICAgVGt0dE9iamVjdCAqdiA9IHNlbGY7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSB2LT5mdW5jOwpAQCAtMjg5NCw3ICsyODkyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF90a2ludGVyLnRrYXBwLm1haW5sb29wCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQogICAgIHRocmVzaG9sZDogaW50ID0gMAogICAgIC8KIApAQCAtMjkwMiw3ICsyODk5LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIF90a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCB0aHJlc2hvbGQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGJhOGVhYmJlNTc4NDFiMCBpbnB1dD1hZDU3YzljMWRkMmI5NDcwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGJhOGVhYmJlNTc4NDFiMCBpbnB1dD0wMzZiY2RjZjAzZDVlY2EwXSovCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwpAQCAtMzA3MiwxMyArMzA2OSwxMSBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAud2lsbGRpc3BhdGNoCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQotCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfaW1wbChUa2FwcE9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZTNmNDZkMjQ0NjQyMTU1IGlucHV0PTI2MzA2OTk3Njc4MDg5NzBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZTNmNDZkMjQ0NjQyMTU1IGlucHV0PWQ4OGY1OTcwODQzZDZkYWJdKi8KIHsKICAgICBzZWxmLT5kaXNwYXRjaGluZyA9IDE7CiAKQEAgLTM2MjksMTQgKzM2MjQsMTQgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FzU3RyaW5nKGNleGUpKTsKKyAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FTX1NUUklORyhjZXhlKSk7CiAKICAgICAgICAgICAgIGlmIChzZXRfdmFyKSB7CiAgICAgICAgICAgICAgICAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIE5VTEwpOwogICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUod2NzX3BhdGgpOwogICAgICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FzU3RyaW5nKGNleGUpKTsKKyAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FTX1NUUklORyhjZXhlKSk7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgICAgICB9CiAgICAgICAgIFB5X1hERUNSRUYoY2V4ZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190cmFjZW1hbGxvYy5jIGIvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYwppbmRleCA2NWJmN2EzLi5lYzhiZDk2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCisrKyBiL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKQEAgLTM5LDcgKzM5LDExIEBACiAgICAgLyogbGltaXQgb2YgdGhlIG51bWJlciBvZiBmcmFtZXMgaW4gYSB0cmFjZWJhY2ssIDEgYnkgZGVmYXVsdC4KICAgICAgICBWYXJpYWJsZSBwcm90ZWN0ZWQgYnkgdGhlIEdJTC4gKi8KICAgICBpbnQgbWF4X25mcmFtZTsKLX0gdHJhY2VtYWxsb2NfY29uZmlnID0ge1RSQUNFTUFMTE9DX05PVF9JTklUSUFMSVpFRCwgMCwgMX07CisKKyAgICAvKiB1c2UgZG9tYWluIGluIHRyYWNlIGtleT8KKyAgICAgICBWYXJpYWJsZSBwcm90ZWN0ZWQgYnkgdGhlIEdJTC4gKi8KKyAgICBpbnQgdXNlX2RvbWFpbjsKK30gdHJhY2VtYWxsb2NfY29uZmlnID0ge1RSQUNFTUFMTE9DX05PVF9JTklUSUFMSVpFRCwgMCwgMSwgMH07CiAKICNpZiBkZWZpbmVkKFRSQUNFX1JBV19NQUxMT0MpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpCiAvKiBUaGlzIGxvY2sgaXMgbmVlZGVkIGJlY2F1c2UgdHJhY2VtYWxsb2NfZnJlZSgpIGlzIGNhbGxlZCB3aXRob3V0CkBAIC01NCwxMCArNTgsMjEgQEAKICMgIGRlZmluZSBUQUJMRVNfVU5MT0NLKCkKICNlbmRpZgogCisKKyNkZWZpbmUgREVGQVVMVF9ET01BSU4gMAorCisvKiBQYWNrIHRoZSBmcmFtZV90IHN0cnVjdHVyZSB0byByZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQuICovCit0eXBlZGVmIHN0cnVjdAorI2lmZGVmIF9fR05VQ19fCitfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQorI2VuZGlmCit7CisgICAgdWludHB0cl90IHB0cjsKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW47Cit9IHBvaW50ZXJfdDsKKwogLyogUGFjayB0aGUgZnJhbWVfdCBzdHJ1Y3R1cmUgdG8gcmVkdWNlIHRoZSBtZW1vcnkgZm9vdHByaW50IG9uIDY0LWJpdAotICAgYXJjaGl0ZWN0dXJlczogMTIgYnl0ZXMgaW5zdGVhZCBvZiAxNi4gVGhpcyBvcHRpbWl6YXRpb24gbWlnaHQgcHJvZHVjZQotICAgU0lHQlVTIG9uIGFyY2hpdGVjdHVyZXMgbm90IHN1cHBvcnRpbmcgdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3NlcyAoNjQtYml0Ci0gICBNSVBTIENQVT8pOiBvbiBzdWNoIGFyY2hpdGVjdHVyZSwgdGhlIHN0cnVjdHVyZSBtdXN0IG5vdCBiZSBwYWNrZWQuICovCisgICBhcmNoaXRlY3R1cmVzOiAxMiBieXRlcyBpbnN0ZWFkIG9mIDE2LiAqLwogdHlwZWRlZiBzdHJ1Y3QKICNpZmRlZiBfX0dOVUNfXwogX19hdHRyaWJ1dGVfXygocGFja2VkKSkKQEAgLTY1LDEwICs4MCwxMyBAQAogX2RlY2xzcGVjKGFsaWduKDQpKQogI2VuZGlmCiB7CisgICAgLyogZmlsZW5hbWUgY2Fubm90IGJlIE5VTEw6ICI8dW5rbm93bj4iIGlzIHVzZWQgaWYgdGhlIFB5dGhvbiBmcmFtZQorICAgICAgIGZpbGVuYW1lIGlzIE5VTEwgKi8KICAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgdW5zaWduZWQgaW50IGxpbmVubzsKIH0gZnJhbWVfdDsKIAorCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlfdWhhc2hfdCBoYXNoOwogICAgIGludCBuZnJhbWU7CkBAIC04MSw2ICs5OSw3IEBACiAjZGVmaW5lIE1BWF9ORlJBTUUgXAogICAgICAgICAoKElOVF9NQVggLSAoaW50KXNpemVvZih0cmFjZWJhY2tfdCkpIC8gKGludClzaXplb2YoZnJhbWVfdCkgKyAxKQogCisKIHN0YXRpYyBQeU9iamVjdCAqdW5rbm93bl9maWxlbmFtZSA9IE5VTEw7CiBzdGF0aWMgdHJhY2ViYWNrX3QgdHJhY2VtYWxsb2NfZW1wdHlfdHJhY2ViYWNrOwogCkBAIC05Myw2ICsxMTIsNyBAQAogICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CiB9IHRyYWNlX3Q7CiAKKwogLyogU2l6ZSBpbiBieXRlcyBvZiBjdXJyZW50bHkgdHJhY2VkIG1lbW9yeS4KICAgIFByb3RlY3RlZCBieSBUQUJMRVNfTE9DSygpLiAqLwogc3RhdGljIHNpemVfdCB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID0gMDsKQEAgLTExOSw2ICsxMzksNyBAQAogICAgUHJvdGVjdGVkIGJ5IFRBQkxFU19MT0NLKCkuICovCiBzdGF0aWMgX1B5X2hhc2h0YWJsZV90ICp0cmFjZW1hbGxvY190cmFjZXMgPSBOVUxMOwogCisKICNpZmRlZiBUUkFDRV9ERUJVRwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQpAQCAtMTMzLDYgKzE1NCw3IEBACiB9CiAjZW5kaWYKIAorCiAjaWYgZGVmaW5lZChXSVRIX1RIUkVBRCkgJiYgZGVmaW5lZChUUkFDRV9SQVdfTUFMTE9DKQogI2RlZmluZSBSRUVOVFJBTlRfVEhSRUFETE9DQUwKIApAQCAtMTQzLDcgKzE2NSw3IEBACiAjICBlcnJvciAibmVlZCBuYXRpdmUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykiCiAjZW5kaWYKIAotc3RhdGljIGludCB0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5Oworc3RhdGljIGludCB0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ID0gLTE7CiAKIC8qIEFueSBub24tTlVMTCBwb2ludGVyIGNhbiBiZSB1c2VkICovCiAjZGVmaW5lIFJFRU5UUkFOVCBQeV9UcnVlCkBAIC0xNTEsNyArMTczLDEwIEBACiBzdGF0aWMgaW50CiBnZXRfcmVlbnRyYW50KHZvaWQpCiB7Ci0gICAgdm9pZCAqcHRyID0gUHlUaHJlYWRfZ2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5KTsKKyAgICB2b2lkICpwdHI7CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSAhPSAtMSk7CisgICAgcHRyID0gUHlUaHJlYWRfZ2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5KTsKICAgICBpZiAocHRyICE9IE5VTEwpIHsKICAgICAgICAgYXNzZXJ0KHB0ciA9PSBSRUVOVFJBTlQpOwogICAgICAgICByZXR1cm4gMTsKQEAgLTE2NCwxMiArMTg5LDE0IEBACiBzZXRfcmVlbnRyYW50KGludCByZWVudHJhbnQpCiB7CiAgICAgYXNzZXJ0KHJlZW50cmFudCA9PSAwIHx8IHJlZW50cmFudCA9PSAxKTsKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSAhPSAtMSk7CisKICAgICBpZiAocmVlbnRyYW50KSB7Ci0gICAgICAgIGFzc2VydChQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpID09IE5VTEwpOworICAgICAgICBhc3NlcnQoIWdldF9yZWVudHJhbnQoKSk7CiAgICAgICAgIFB5VGhyZWFkX3NldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSwgUkVFTlRSQU5UKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGFzc2VydChQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpID09IFJFRU5UUkFOVCk7CisgICAgICAgIGFzc2VydChnZXRfcmVlbnRyYW50KCkpOwogICAgICAgICBQeVRocmVhZF9zZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXksIE5VTEwpOwogICAgIH0KIH0KQEAgLTE5NCwyNyArMjIxLDc1IEBACiB9CiAjZW5kaWYKIAotc3RhdGljIGludAotaGFzaHRhYmxlX2NvbXBhcmVfdW5pY29kZShjb25zdCB2b2lkICprZXksIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCisKK3N0YXRpYyBQeV91aGFzaF90CitoYXNodGFibGVfaGFzaF9weW9iamVjdChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5KQogewotICAgIGlmIChrZXkgIT0gTlVMTCAmJiBlbnRyeS0+a2V5ICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAoUHlVbmljb2RlX0NvbXBhcmUoKFB5T2JqZWN0ICopa2V5LCAoUHlPYmplY3QgKillbnRyeS0+a2V5KSA9PSAwKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBrZXkgPT0gZW50cnktPmtleTsKKyAgICBQeU9iamVjdCAqb2JqOworCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwgb2JqKTsKKyAgICByZXR1cm4gUHlPYmplY3RfSGFzaChvYmopOwogfQogCi1zdGF0aWMgX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdCBoYXNodGFibGVfYWxsb2MgPSB7bWFsbG9jLCBmcmVlfTsKKworc3RhdGljIGludAoraGFzaHRhYmxlX2NvbXBhcmVfdW5pY29kZShfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQoreworICAgIFB5T2JqZWN0ICprZXkxLCAqa2V5MjsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIGtleTEpOworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCBrZXkyKTsKKworICAgIGlmIChrZXkxICE9IE5VTEwgJiYga2V5MiAhPSBOVUxMKQorICAgICAgICByZXR1cm4gKFB5VW5pY29kZV9Db21wYXJlKGtleTEsIGtleTIpID09IDApOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGtleTEgPT0ga2V5MjsKK30KKworCitzdGF0aWMgUHlfdWhhc2hfdAoraGFzaHRhYmxlX2hhc2hfcG9pbnRlcl90KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXkpCit7CisgICAgcG9pbnRlcl90IHB0cjsKKyAgICBQeV91aGFzaF90IGhhc2g7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBwdHIpOworCisgICAgaGFzaCA9IChQeV91aGFzaF90KV9QeV9IYXNoUG9pbnRlcigodm9pZCopcHRyLnB0cik7CisgICAgaGFzaCBePSBwdHIuZG9tYWluOworICAgIHJldHVybiBoYXNoOworfQorCisKK3N0YXRpYyBpbnQKK2hhc2h0YWJsZV9jb21wYXJlX3BvaW50ZXJfdChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCit7CisgICAgcG9pbnRlcl90IHB0cjEsIHB0cjI7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBwdHIxKTsKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgcHRyMik7CisKKyAgICAvKiBjb21wYXJlIHBvaW50ZXIgYmVmb3JlIGRvbWFpbiwgYmVjYXVzZSBwb2ludGVyIGlzIG1vcmUgbGlrZWx5IHRvIGJlCisgICAgICAgZGlmZmVyZW50ICovCisgICAgcmV0dXJuIChwdHIxLnB0ciA9PSBwdHIyLnB0ciAmJiBwdHIxLmRvbWFpbiA9PSBwdHIyLmRvbWFpbik7CisKK30KKwogCiBzdGF0aWMgX1B5X2hhc2h0YWJsZV90ICoKLWhhc2h0YWJsZV9uZXcoc2l6ZV90IGRhdGFfc2l6ZSwKK2hhc2h0YWJsZV9uZXcoc2l6ZV90IGtleV9zaXplLCBzaXplX3QgZGF0YV9zaXplLAogICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYykKIHsKLSAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChkYXRhX3NpemUsIDAsCisgICAgX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdCBoYXNodGFibGVfYWxsb2MgPSB7bWFsbG9jLCBmcmVlfTsKKyAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChrZXlfc2l6ZSwgZGF0YV9zaXplLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hfZnVuYywgY29tcGFyZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsICZoYXNodGFibGVfYWxsb2MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYXNodGFibGVfYWxsb2MpOwogfQogCisKIHN0YXRpYyB2b2lkKgogcmF3X21hbGxvYyhzaXplX3Qgc2l6ZSkKIHsKQEAgLTIyNywyMSArMzAyLDI4IEBACiAgICAgYWxsb2NhdG9ycy5yYXcuZnJlZShhbGxvY2F0b3JzLnJhdy5jdHgsIHB0cik7CiB9CiAKKwogc3RhdGljIFB5X3VoYXNoX3QKLWhhc2h0YWJsZV9oYXNoX3RyYWNlYmFjayhjb25zdCB2b2lkICprZXkpCitoYXNodGFibGVfaGFzaF90cmFjZWJhY2soX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSkKIHsKLSAgICBjb25zdCB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrID0ga2V5OworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCB0cmFjZWJhY2spOwogICAgIHJldHVybiB0cmFjZWJhY2stPmhhc2g7CiB9CiAKKwogc3RhdGljIGludAotaGFzaHRhYmxlX2NvbXBhcmVfdHJhY2ViYWNrKGNvbnN0IHRyYWNlYmFja190ICp0cmFjZWJhY2sxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqaGUpCitoYXNodGFibGVfY29tcGFyZV90cmFjZWJhY2soX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQogewotICAgIGNvbnN0IHRyYWNlYmFja190ICp0cmFjZWJhY2syID0gaGUtPmtleTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrMSwgKnRyYWNlYmFjazI7CiAgICAgY29uc3QgZnJhbWVfdCAqZnJhbWUxLCAqZnJhbWUyOwogICAgIGludCBpOwogCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwgdHJhY2ViYWNrMSk7CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIHRyYWNlYmFjazIpOworCiAgICAgaWYgKHRyYWNlYmFjazEtPm5mcmFtZSAhPSB0cmFjZWJhY2syLT5uZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yNjAsNiArMzQyLDcgQEAKICAgICByZXR1cm4gMTsKIH0KIAorCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfZ2V0X2ZyYW1lKFB5RnJhbWVPYmplY3QgKnB5ZnJhbWUsIGZyYW1lX3QgKmZyYW1lKQogewpAQCAtMzEwLDE1ICszOTMsMTUgQEAKICAgICB9CiAKICAgICAvKiBpbnRlcm4gdGhlIGZpbGVuYW1lICovCi0gICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeSh0cmFjZW1hbGxvY19maWxlbmFtZXMsIGZpbGVuYW1lKTsKKyAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZmlsZW5hbWUpOwogICAgIGlmIChlbnRyeSAhPSBOVUxMKSB7Ci0gICAgICAgIGZpbGVuYW1lID0gKFB5T2JqZWN0ICopZW50cnktPmtleTsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWSh0cmFjZW1hbGxvY19maWxlbmFtZXMsIGVudHJ5LCBmaWxlbmFtZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiB0cmFjZW1hbGxvY19maWxlbmFtZXMgaXMgcmVzcG9uc2libGUgdG8ga2VlcCBhIHJlZmVyZW5jZQogICAgICAgICAgICB0byB0aGUgZmlsZW5hbWUgKi8KICAgICAgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKLSAgICAgICAgaWYgKF9QeV9oYXNodGFibGVfc2V0KHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZmlsZW5hbWUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBpZiAoX1B5X0hBU0hUQUJMRV9TRVRfTk9EQVRBKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZmlsZW5hbWUpIDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKICNpZmRlZiBUUkFDRV9ERUJVRwogICAgICAgICAgICAgdHJhY2VtYWxsb2NfZXJyb3IoImZhaWxlZCB0byBpbnRlcm4gdGhlIGZpbGVuYW1lIik7CkBAIC0zMzEsNiArNDE0LDcgQEAKICAgICBmcmFtZS0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKIH0KIAorCiBzdGF0aWMgUHlfdWhhc2hfdAogdHJhY2ViYWNrX2hhc2godHJhY2ViYWNrX3QgKnRyYWNlYmFjaykKIHsKQEAgLTM1NSw2ICs0MzksNyBAQAogICAgIHJldHVybiB4OwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZWJhY2tfZ2V0X2ZyYW1lcyh0cmFjZWJhY2tfdCAqdHJhY2ViYWNrKQogewpAQCAtMzgyLDYgKzQ2Nyw3IEBACiAgICAgfQogfQogCisKIHN0YXRpYyB0cmFjZWJhY2tfdCAqCiB0cmFjZWJhY2tfbmV3KHZvaWQpCiB7CkBAIC00MDEsOSArNDg3LDkgQEAKICAgICB0cmFjZWJhY2stPmhhc2ggPSB0cmFjZWJhY2tfaGFzaCh0cmFjZWJhY2spOwogCiAgICAgLyogaW50ZXJuIHRoZSB0cmFjZWJhY2sgKi8KLSAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KHRyYWNlbWFsbG9jX3RyYWNlYmFja3MsIHRyYWNlYmFjayk7CisgICAgZW50cnkgPSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCB0cmFjZWJhY2spOwogICAgIGlmIChlbnRyeSAhPSBOVUxMKSB7Ci0gICAgICAgIHRyYWNlYmFjayA9ICh0cmFjZWJhY2tfdCAqKWVudHJ5LT5rZXk7CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgZW50cnksIHRyYWNlYmFjayk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICB0cmFjZWJhY2tfdCAqY29weTsKQEAgLTQyMCw3ICs1MDYsNyBAQAogICAgICAgICB9CiAgICAgICAgIG1lbWNweShjb3B5LCB0cmFjZWJhY2ssIHRyYWNlYmFja19zaXplKTsKIAotICAgICAgICBpZiAoX1B5X2hhc2h0YWJsZV9zZXQodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgY29weSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIGlmIChfUHlfSEFTSFRBQkxFX1NFVF9OT0RBVEEodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgY29weSkgPCAwKSB7CiAgICAgICAgICAgICByYXdfZnJlZShjb3B5KTsKICNpZmRlZiBUUkFDRV9ERUJVRwogICAgICAgICAgICAgdHJhY2VtYWxsb2NfZXJyb3IoImZhaWxlZCB0byBpbnRlcm4gdGhlIHRyYWNlYmFjazogcHV0ZGF0YSBmYWlsZWQiKTsKQEAgLTQzMiw1MyArNTE4LDE2MSBAQAogICAgIHJldHVybiB0cmFjZWJhY2s7CiB9CiAKKwogc3RhdGljIGludAotdHJhY2VtYWxsb2NfYWRkX3RyYWNlKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpCit0cmFjZW1hbGxvY191c2VfZG9tYWluX2NiKF9QeV9oYXNodGFibGVfdCAqb2xkX3RyYWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOwotICAgIHRyYWNlX3QgdHJhY2U7Ci0gICAgaW50IHJlczsKKyAgICB1aW50cHRyX3QgcHRyOworICAgIHBvaW50ZXJfdCBrZXk7CisgICAgX1B5X2hhc2h0YWJsZV90ICpuZXdfdHJhY2VzID0gKF9QeV9oYXNodGFibGVfdCAqKXVzZXJfZGF0YTsKKyAgICBjb25zdCB2b2lkICpwZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEob2xkX3RyYWNlcywgZW50cnkpOwogCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKLSNlbmRpZgorICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkob2xkX3RyYWNlcywgZW50cnksIHB0cik7CisgICAga2V5LnB0ciA9IHB0cjsKKyAgICBrZXkuZG9tYWluID0gREVGQVVMVF9ET01BSU47CiAKLSAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tfbmV3KCk7Ci0gICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKQorICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX3NldChuZXdfdHJhY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2V5KSwgJmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3RyYWNlcy0+ZGF0YV9zaXplLCBwZGF0YSk7Cit9CisKKworLyogQ29udmVydCB0cmFjZW1hbGxvY190cmFjZXMgZnJvbSBjb21wYWN0IGtleSAodWludHB0cl90KSB0byBwb2ludGVyX3Qga2V5LgorICogUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuICovCitzdGF0aWMgaW50Cit0cmFjZW1hbGxvY191c2VfZG9tYWluKHZvaWQpCit7CisgICAgX1B5X2hhc2h0YWJsZV90ICpuZXdfdHJhY2VzID0gTlVMTDsKKworICAgIGFzc2VydCghdHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pOworCisgICAgbmV3X3RyYWNlcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKHBvaW50ZXJfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRyYWNlX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9oYXNoX3BvaW50ZXJfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfY29tcGFyZV9wb2ludGVyX3QpOworICAgIGlmIChuZXdfdHJhY2VzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgdHJhY2Uuc2l6ZSA9IHNpemU7Ci0gICAgdHJhY2UudHJhY2ViYWNrID0gdHJhY2ViYWNrOwotCi0gICAgcmVzID0gX1B5X0hBU0hUQUJMRV9TRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKLSAgICBpZiAocmVzID09IDApIHsKLSAgICAgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPD0gUFlfU0laRV9NQVggLSBzaXplKTsKLSAgICAgICAgdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSArPSBzaXplOwotICAgICAgICBpZiAodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+IHRyYWNlbWFsbG9jX3BlYWtfdHJhY2VkX21lbW9yeSkKLSAgICAgICAgICAgIHRyYWNlbWFsbG9jX3BlYWtfdHJhY2VkX21lbW9yeSA9IHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlczsKKyAgICBpZiAoX1B5X2hhc2h0YWJsZV9mb3JlYWNoKHRyYWNlbWFsbG9jX3RyYWNlcywgdHJhY2VtYWxsb2NfdXNlX2RvbWFpbl9jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld190cmFjZXMpIDwgMCkKKyAgICB7CisgICAgICAgIF9QeV9oYXNodGFibGVfZGVzdHJveShuZXdfdHJhY2VzKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIF9QeV9oYXNodGFibGVfZGVzdHJveSh0cmFjZW1hbGxvY190cmFjZXMpOworICAgIHRyYWNlbWFsbG9jX3RyYWNlcyA9IG5ld190cmFjZXM7CisKKyAgICB0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbiA9IDE7CisKKyAgICByZXR1cm4gMDsKIH0KIAorCiBzdGF0aWMgdm9pZAotdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHZvaWQgKnB0cikKK3RyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIpCiB7CiAgICAgdHJhY2VfdCB0cmFjZTsKKyAgICBpbnQgcmVtb3ZlZDsKIAotICAgIGlmIChfUHlfaGFzaHRhYmxlX3BvcCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgJnRyYWNlLCBzaXplb2YodHJhY2UpKSkgeworICAgIGFzc2VydCh0cmFjZW1hbGxvY19jb25maWcudHJhY2luZyk7CisKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgcG9pbnRlcl90IGtleSA9IHtwdHIsIGRvbWFpbn07CisgICAgICAgIHJlbW92ZWQgPSBfUHlfSEFTSFRBQkxFX1BPUCh0cmFjZW1hbGxvY190cmFjZXMsIGtleSwgdHJhY2UpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVtb3ZlZCA9IF9QeV9IQVNIVEFCTEVfUE9QKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7CisgICAgfQorICAgIGlmICghcmVtb3ZlZCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPj0gdHJhY2Uuc2l6ZSk7CisgICAgdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSAtPSB0cmFjZS5zaXplOworfQorCisjZGVmaW5lIFJFTU9WRV9UUkFDRShwdHIpIFwKKyAgICAgICAgICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShERUZBVUxUX0RPTUFJTiwgKHVpbnRwdHJfdCkocHRyKSkKKworCitzdGF0aWMgaW50Cit0cmFjZW1hbGxvY19hZGRfdHJhY2UoX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKQoreworICAgIHBvaW50ZXJfdCBrZXkgPSB7cHRyLCBkb21haW59OworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisgICAgdHJhY2VfdCB0cmFjZTsKKyAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QqIGVudHJ5OworICAgIGludCByZXM7CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfY29uZmlnLnRyYWNpbmcpOworCisgICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrX25ldygpOworICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCF0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbiAmJiBkb21haW4gIT0gREVGQVVMVF9ET01BSU4pIHsKKyAgICAgICAgLyogZmlyc3QgdHJhY2UgdXNpbmcgYSBub24temVybyBkb21haW4gd2hlcmVhcyB0cmFjZXMgdXNlIGNvbXBhY3QKKyAgICAgICAgICAgKHVpbnRwdHJfdCkga2V5czogc3dpdGNoIHRvIHBvaW50ZXJfdCBrZXlzLiAqLworICAgICAgICBpZiAodHJhY2VtYWxsb2NfdXNlX2RvbWFpbigpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkodHJhY2VtYWxsb2NfdHJhY2VzLCBrZXkpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZW50cnkgPSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSh0cmFjZW1hbGxvY190cmFjZXMsIHB0cik7CisgICAgfQorCisgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKKyAgICAgICAgLyogdGhlIG1lbW9yeSBibG9jayBpcyBhbHJlYWR5IHRyYWNrZWQgKi8KKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEodHJhY2VtYWxsb2NfdHJhY2VzLCBlbnRyeSwgdHJhY2UpOwogICAgICAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+PSB0cmFjZS5zaXplKTsKICAgICAgICAgdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSAtPSB0cmFjZS5zaXplOworCisgICAgICAgIHRyYWNlLnNpemUgPSBzaXplOworICAgICAgICB0cmFjZS50cmFjZWJhY2sgPSB0cmFjZWJhY2s7CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfV1JJVEVfREFUQSh0cmFjZW1hbGxvY190cmFjZXMsIGVudHJ5LCB0cmFjZSk7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICB0cmFjZS5zaXplID0gc2l6ZTsKKyAgICAgICAgdHJhY2UudHJhY2ViYWNrID0gdHJhY2ViYWNrOworCisgICAgICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICAgICAgcmVzID0gX1B5X0hBU0hUQUJMRV9TRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBrZXksIHRyYWNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IF9QeV9IQVNIVEFCTEVfU0VUKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyAhPSAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPD0gU0laRV9NQVggLSBzaXplKTsKKyAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ICs9IHNpemU7CisgICAgaWYgKHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPiB0cmFjZW1hbGxvY19wZWFrX3RyYWNlZF9tZW1vcnkpCisgICAgICAgIHRyYWNlbWFsbG9jX3BlYWtfdHJhY2VkX21lbW9yeSA9IHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnk7CisgICAgcmV0dXJuIDA7CiB9CiAKKyNkZWZpbmUgQUREX1RSQUNFKHB0ciwgc2l6ZSkgXAorICAgICAgICAgICAgdHJhY2VtYWxsb2NfYWRkX3RyYWNlKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KShwdHIpLCBzaXplKQorCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfYWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewogICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAgICAgdm9pZCAqcHRyOwogCi0gICAgYXNzZXJ0KGVsc2l6ZSA9PSAwIHx8IG5lbGVtIDw9IFBZX1NJWkVfTUFYIC8gZWxzaXplKTsKKyAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gU0laRV9NQVggLyBlbHNpemUpOwogCiAgICAgaWYgKHVzZV9jYWxsb2MpCiAgICAgICAgIHB0ciA9IGFsbG9jLT5jYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0sIGVsc2l6ZSk7CkBAIC00ODgsNyArNjgyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBUQUJMRVNfTE9DSygpOwotICAgIGlmICh0cmFjZW1hbGxvY19hZGRfdHJhY2UocHRyLCBuZWxlbSAqIGVsc2l6ZSkgPCAwKSB7CisgICAgaWYgKEFERF9UUkFDRShwdHIsIG5lbGVtICogZWxzaXplKSA8IDApIHsKICAgICAgICAgLyogRmFpbGVkIHRvIGFsbG9jYXRlIGEgdHJhY2UgZm9yIHRoZSBuZXcgbWVtb3J5IGJsb2NrICovCiAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyKTsKQEAgLTQ5OCw2ICs2OTIsNyBAQAogICAgIHJldHVybiBwdHI7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CkBAIC01MTIsOSArNzA3LDE0IEBACiAgICAgICAgIC8qIGFuIGV4aXN0aW5nIG1lbW9yeSBibG9jayBoYXMgYmVlbiByZXNpemVkICovCiAKICAgICAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICAgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHB0cik7CiAKLSAgICAgICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIyLCBuZXdfc2l6ZSkgPCAwKSB7CisgICAgICAgIC8qIHRyYWNlbWFsbG9jX2FkZF90cmFjZSgpIHVwZGF0ZXMgdGhlIHRyYWNlIGlmIHRoZXJlIGlzIGFscmVhZHkKKyAgICAgICAgICAgYSB0cmFjZSBhdCBhZGRyZXNzIChkb21haW4sIHB0cjIpICovCisgICAgICAgIGlmIChwdHIyICE9IHB0cikgeworICAgICAgICAgICAgUkVNT1ZFX1RSQUNFKHB0cik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoQUREX1RSQUNFKHB0cjIsIG5ld19zaXplKSA8IDApIHsKICAgICAgICAgICAgIC8qIE1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZC4gVGhlIGVycm9yIGNhbm5vdCBiZSByZXBvcnRlZCB0bwogICAgICAgICAgICAgICAgdGhlIGNhbGxlciwgYmVjYXVzZSByZWFsbG9jKCkgbWF5IGFscmVhZHkgaGF2ZSBzaHJ1bmsgdGhlCiAgICAgICAgICAgICAgICBtZW1vcnkgYmxvY2sgYW5kIHNvIHJlbW92ZWQgYnl0ZXMuCkBAIC01MzIsNyArNzMyLDcgQEAKICAgICAgICAgLyogbmV3IGFsbG9jYXRpb24gKi8KIAogICAgICAgICBUQUJMRVNfTE9DSygpOwotICAgICAgICBpZiAodHJhY2VtYWxsb2NfYWRkX3RyYWNlKHB0cjIsIG5ld19zaXplKSA8IDApIHsKKyAgICAgICAgaWYgKEFERF9UUkFDRShwdHIyLCBuZXdfc2l6ZSkgPCAwKSB7CiAgICAgICAgICAgICAvKiBGYWlsZWQgdG8gYWxsb2NhdGUgYSB0cmFjZSBmb3IgdGhlIG5ldyBtZW1vcnkgYmxvY2sgKi8KICAgICAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgICAgIGFsbG9jLT5mcmVlKGFsbG9jLT5jdHgsIHB0cjIpOwpAQCAtNTQzLDYgKzc0Myw3IEBACiAgICAgcmV0dXJuIHB0cjI7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2ZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpCiB7CkBAIC01NTcsMTAgKzc1OCwxMSBAQAogICAgIGFsbG9jLT5mcmVlKGFsbG9jLT5jdHgsIHB0cik7CiAKICAgICBUQUJMRVNfTE9DSygpOwotICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShwdHIpOworICAgIFJFTU9WRV9UUkFDRShwdHIpOwogICAgIFRBQkxFU19VTkxPQ0soKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX2FsbG9jX2dpbChpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CkBAIC01ODUsMTggKzc4NywyMSBAQAogICAgIHJldHVybiBwdHI7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19tYWxsb2NfZ2lsKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCiB7CiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX2FsbG9jX2dpbCgwLCBjdHgsIDEsIHNpemUpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfY2FsbG9jX2dpbCh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICByZXR1cm4gdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yZWFsbG9jX2dpbCh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewpAQCAtNjEyLDcgKzgxNyw3IEBACiAgICAgICAgIHB0cjIgPSBhbGxvYy0+cmVhbGxvYyhhbGxvYy0+Y3R4LCBwdHIsIG5ld19zaXplKTsKICAgICAgICAgaWYgKHB0cjIgIT0gTlVMTCAmJiBwdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICAgICAgICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShwdHIpOworICAgICAgICAgICAgUkVNT1ZFX1RSQUNFKHB0cik7CiAgICAgICAgICAgICBUQUJMRVNfVU5MT0NLKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHB0cjI7CkBAIC02MjksNiArODM0LDcgQEAKICAgICByZXR1cm4gcHRyMjsKIH0KIAorCiAjaWZkZWYgVFJBQ0VfUkFXX01BTExPQwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yYXdfYWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQpAQCAtNjYzLDE4ICs4NjksMjEgQEAKICAgICByZXR1cm4gcHRyOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X21hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiB0cmFjZW1hbGxvY19yYXdfYWxsb2MoMCwgY3R4LCAxLCBzaXplKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3Jhd19jYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3Jhd19hbGxvYygxLCBjdHgsIG5lbGVtLCBlbHNpemUpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X3JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKQEAgLTY5MSw3ICs5MDAsNyBAQAogCiAgICAgICAgIGlmIChwdHIyICE9IE5VTEwgJiYgcHRyICE9IE5VTEwpIHsKICAgICAgICAgICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgICAgICAgICB0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UocHRyKTsKKyAgICAgICAgICAgIFJFTU9WRV9UUkFDRShwdHIpOwogICAgICAgICAgICAgVEFCTEVTX1VOTE9DSygpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwdHIyOwpAQCAtNzE1LDIyICs5MjQsMzEgQEAKIH0KICNlbmRpZiAgIC8qIFRSQUNFX1JBV19NQUxMT0MgKi8KIAorCiBzdGF0aWMgaW50Ci10cmFjZW1hbGxvY19jbGVhcl9maWxlbmFtZShfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICp1c2VyX2RhdGEpCit0cmFjZW1hbGxvY19jbGVhcl9maWxlbmFtZShfUHlfaGFzaHRhYmxlX3QgKmh0LCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIFB5T2JqZWN0ICpmaWxlbmFtZSA9IChQeU9iamVjdCAqKWVudHJ5LT5rZXk7CisgICAgUHlPYmplY3QgKmZpbGVuYW1lOworCisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIGZpbGVuYW1lKTsKICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOwogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyBpbnQKLXRyYWNlYmFja19mcmVlX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICp1c2VyX2RhdGEpCit0cmFjZWJhY2tfZnJlZV90cmFjZWJhY2soX1B5X2hhc2h0YWJsZV90ICpodCwgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjayA9ICh0cmFjZWJhY2tfdCAqKWVudHJ5LT5rZXk7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCB0cmFjZWJhY2spOwogICAgIHJhd19mcmVlKHRyYWNlYmFjayk7CiAgICAgcmV0dXJuIDA7CiB9CiAKKwogLyogcmVlbnRyYW50IGZsYWcgbXVzdCBiZSBzZXQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFuZCBHSUwgbXVzdCBiZSBoZWxkICovCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfY2xlYXJfdHJhY2VzKHZvaWQpCkBAIC03NTMsNiArOTcxLDcgQEAKICAgICBfUHlfaGFzaHRhYmxlX2NsZWFyKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyk7CiB9CiAKKwogc3RhdGljIGludAogdHJhY2VtYWxsb2NfaW5pdCh2b2lkKQogewpAQCAtNzg5LDIxICsxMDA4LDI5IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICB0cmFjZW1hbGxvY19maWxlbmFtZXMgPSBoYXNodGFibGVfbmV3KDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMpUHlPYmplY3RfSGFzaCwKKyAgICB0cmFjZW1hbGxvY19maWxlbmFtZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZihQeU9iamVjdCAqKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9oYXNoX3B5b2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2NvbXBhcmVfdW5pY29kZSk7CiAKLSAgICB0cmFjZW1hbGxvY190cmFjZWJhY2tzID0gaGFzaHRhYmxlX25ldygwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyloYXNodGFibGVfaGFzaF90cmFjZWJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jKWhhc2h0YWJsZV9jb21wYXJlX3RyYWNlYmFjayk7CisgICAgdHJhY2VtYWxsb2NfdHJhY2ViYWNrcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKHRyYWNlYmFja190ICopLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9oYXNoX3RyYWNlYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfY29tcGFyZV90cmFjZWJhY2spOwogCi0gICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YodHJhY2VfdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdCk7CisgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgIHRyYWNlbWFsbG9jX3RyYWNlcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKHBvaW50ZXJfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRyYWNlX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9oYXNoX3BvaW50ZXJfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfY29tcGFyZV9wb2ludGVyX3QpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YodWludHB0cl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKKyAgICB9CiAKICAgICBpZiAodHJhY2VtYWxsb2NfZmlsZW5hbWVzID09IE5VTEwgfHwgdHJhY2VtYWxsb2NfdHJhY2ViYWNrcyA9PSBOVUxMCi0gICAgICAgIHx8IHRyYWNlbWFsbG9jX3RyYWNlcyA9PSBOVUxMKQotICAgIHsKKyAgICAgICB8fCB0cmFjZW1hbGxvY190cmFjZXMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtODIzLDYgKzEwNTAsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19kZWluaXQodm9pZCkKIHsKQEAgLTgzMyw5ICsxMDYxLDkgQEAKICAgICB0cmFjZW1hbGxvY19zdG9wKCk7CiAKICAgICAvKiBkZXN0cm95IGhhc2ggdGFibGVzICovCi0gICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlcyk7CiAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlYmFja3MpOwogICAgIF9QeV9oYXNodGFibGVfZGVzdHJveSh0cmFjZW1hbGxvY19maWxlbmFtZXMpOworICAgIF9QeV9oYXNodGFibGVfZGVzdHJveSh0cmFjZW1hbGxvY190cmFjZXMpOwogCiAjaWYgZGVmaW5lZChXSVRIX1RIUkVBRCkgJiYgZGVmaW5lZChUUkFDRV9SQVdfTUFMTE9DKQogICAgIGlmICh0YWJsZXNfbG9jayAhPSBOVUxMKSB7CkBAIC04NDYsMTEgKzEwNzQsMTMgQEAKIAogI2lmZGVmIFJFRU5UUkFOVF9USFJFQURMT0NBTAogICAgIFB5VGhyZWFkX2RlbGV0ZV9rZXkodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSk7CisgICAgdHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSA9IC0xOwogI2VuZGlmCiAKICAgICBQeV9YREVDUkVGKHVua25vd25fZmlsZW5hbWUpOwogfQogCisKIHN0YXRpYyBpbnQKIHRyYWNlbWFsbG9jX3N0YXJ0KGludCBtYXhfbmZyYW1lKQogewpAQCAtOTA3LDYgKzExMzcsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19zdG9wKHZvaWQpCiB7CkBAIC05MjMsOCArMTE1NCw5IEBACiAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZhbGxvY2F0b3JzLm1lbSk7CiAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZhbGxvY2F0b3JzLm9iaik7CiAKLSAgICAvKiByZWxlYXNlIG1lbW9yeSAqLwogICAgIHRyYWNlbWFsbG9jX2NsZWFyX3RyYWNlcygpOworCisgICAgLyogcmVsZWFzZSBtZW1vcnkgKi8KICAgICByYXdfZnJlZSh0cmFjZW1hbGxvY190cmFjZWJhY2spOwogICAgIHRyYWNlbWFsbG9jX3RyYWNlYmFjayA9IE5VTEw7CiB9CkBAIC05MzUsNiArMTE2Nyw3IEBACiAgICAgIlRydWUgaWYgdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBpcyB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMsXG4iCiAgICAgIkZhbHNlIG90aGVyd2lzZS4iKTsKIAorCiBzdGF0aWMgUHlPYmplY3QqCiBweV90cmFjZW1hbGxvY19pc190cmFjaW5nKFB5T2JqZWN0ICpzZWxmKQogewpAQCAtOTQ2LDYgKzExNzksNyBAQAogICAgICJcbiIKICAgICAiQ2xlYXIgdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkIGJ5IFB5dGhvbi4iKTsKIAorCiBzdGF0aWMgUHlPYmplY3QqCiBweV90cmFjZW1hbGxvY19jbGVhcl90cmFjZXMoUHlPYmplY3QgKnNlbGYpCiB7CkBAIC05NTksNiArMTE5Myw3IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKwogc3RhdGljIFB5T2JqZWN0KgogZnJhbWVfdG9fcHlvYmplY3QoZnJhbWVfdCAqZnJhbWUpCiB7CkBAIC05NjgsOCArMTIwMyw2IEBACiAgICAgaWYgKGZyYW1lX29iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChmcmFtZS0+ZmlsZW5hbWUgPT0gTlVMTCkKLSAgICAgICAgZnJhbWUtPmZpbGVuYW1lID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoZnJhbWUtPmZpbGVuYW1lKTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKGZyYW1lX29iaiwgMCwgZnJhbWUtPmZpbGVuYW1lKTsKIApAQCAtOTgzLDYgKzEyMTYsNyBAQAogICAgIHJldHVybiBmcmFtZV9vYmo7CiB9CiAKKwogc3RhdGljIFB5T2JqZWN0KgogdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlYmFja190ICp0cmFjZWJhY2ssIF9QeV9oYXNodGFibGVfdCAqaW50ZXJuX3RhYmxlKQogewpAQCAtMTAyMSwzMyArMTI1NSw0MyBAQAogICAgIHJldHVybiBmcmFtZXM7CiB9CiAKKwogc3RhdGljIFB5T2JqZWN0KgotdHJhY2VfdG9fcHlvYmplY3QodHJhY2VfdCAqdHJhY2UsIF9QeV9oYXNodGFibGVfdCAqaW50ZXJuX3RyYWNlYmFja3MpCit0cmFjZV90b19weW9iamVjdChfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHRyYWNlX3QgKnRyYWNlLAorICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV90ICppbnRlcm5fdHJhY2ViYWNrcykKIHsKICAgICBQeU9iamVjdCAqdHJhY2Vfb2JqID0gTlVMTDsKLSAgICBQeU9iamVjdCAqc2l6ZSwgKnRyYWNlYmFjazsKKyAgICBQeU9iamVjdCAqb2JqOwogCi0gICAgdHJhY2Vfb2JqID0gUHlUdXBsZV9OZXcoMik7CisgICAgdHJhY2Vfb2JqID0gUHlUdXBsZV9OZXcoMyk7CiAgICAgaWYgKHRyYWNlX29iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNpemUgPSBQeUxvbmdfRnJvbVNpemVfdCh0cmFjZS0+c2l6ZSk7Ci0gICAgaWYgKHNpemUgPT0gTlVMTCkgeworICAgIG9iaiA9IFB5TG9uZ19Gcm9tU2l6ZV90KGRvbWFpbik7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRih0cmFjZV9vYmopOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDAsIHNpemUpOworICAgIFB5VHVwbGVfU0VUX0lURU0odHJhY2Vfb2JqLCAwLCBvYmopOwogCi0gICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlLT50cmFjZWJhY2ssIGludGVybl90cmFjZWJhY2tzKTsKLSAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpIHsKKyAgICBvYmogPSBQeUxvbmdfRnJvbVNpemVfdCh0cmFjZS0+c2l6ZSk7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRih0cmFjZV9vYmopOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDEsIHRyYWNlYmFjayk7CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDEsIG9iaik7CisKKyAgICBvYmogPSB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2UtPnRyYWNlYmFjaywgaW50ZXJuX3RyYWNlYmFja3MpOworICAgIGlmIChvYmogPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodHJhY2Vfb2JqKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5VHVwbGVfU0VUX0lURU0odHJhY2Vfb2JqLCAyLCBvYmopOwogCiAgICAgcmV0dXJuIHRyYWNlX29iajsKIH0KIAorCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgX1B5X2hhc2h0YWJsZV90ICp0cmFjZXM7CiAgICAgX1B5X2hhc2h0YWJsZV90ICp0cmFjZWJhY2tzOwpAQCAtMTA1NSwxNiArMTI5OSwyNiBAQAogfSBnZXRfdHJhY2VzX3Q7CiAKIHN0YXRpYyBpbnQKLXRyYWNlbWFsbG9jX2dldF90cmFjZXNfZmlsbChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICp1c2VyX2RhdGEpCit0cmFjZW1hbGxvY19nZXRfdHJhY2VzX2ZpbGwoX1B5X2hhc2h0YWJsZV90ICp0cmFjZXMsIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKQogewogICAgIGdldF90cmFjZXNfdCAqZ2V0X3RyYWNlcyA9IHVzZXJfZGF0YTsKLSAgICB0cmFjZV90ICp0cmFjZTsKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW47CisgICAgdHJhY2VfdCB0cmFjZTsKICAgICBQeU9iamVjdCAqdHJhY2VtYWxsb2Nfb2JqOwogICAgIGludCByZXM7CiAKLSAgICB0cmFjZSA9ICh0cmFjZV90ICopX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKGVudHJ5KTsKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgcG9pbnRlcl90IGtleTsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWSh0cmFjZXMsIGVudHJ5LCBrZXkpOworICAgICAgICBkb21haW4gPSBrZXkuZG9tYWluOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZG9tYWluID0gREVGQVVMVF9ET01BSU47CisgICAgfQorICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHRyYWNlcywgZW50cnksIHRyYWNlKTsKIAotICAgIHRyYWNlbWFsbG9jX29iaiA9IHRyYWNlX3RvX3B5b2JqZWN0KHRyYWNlLCBnZXRfdHJhY2VzLT50cmFjZWJhY2tzKTsKKyAgICB0cmFjZW1hbGxvY19vYmogPSB0cmFjZV90b19weW9iamVjdChkb21haW4sICZ0cmFjZSwgZ2V0X3RyYWNlcy0+dHJhY2ViYWNrcyk7CiAgICAgaWYgKHRyYWNlbWFsbG9jX29iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMTsKIApAQCAtMTA3NiwxNCArMTMzMCwxOSBAQAogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyBpbnQKLXRyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYihfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICp1c2VyX2RhdGEpCit0cmFjZW1hbGxvY19weW9iamVjdF9kZWNyZWZfY2IoX1B5X2hhc2h0YWJsZV90ICp0cmFjZWJhY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIFB5T2JqZWN0ICpvYmogPSAoUHlPYmplY3QgKilfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KTsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHRyYWNlYmFja3MsIGVudHJ5LCBvYmopOwogICAgIFB5X0RFQ1JFRihvYmopOwogICAgIHJldHVybiAwOwogfQogCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19nZXRfdHJhY2VzX2RvYywKICAgICAiX2dldF90cmFjZXMoKSAtPiBsaXN0XG4iCiAgICAgIlxuIgpAQCAtMTExMCw3ICsxMzY5LDggQEAKIAogICAgIC8qIHRoZSB0cmFjZWJhY2sgaGFzaCB0YWJsZSBpcyB1c2VkIHRlbXBvcmFyaWx5IHRvIGludGVybiB0cmFjZWJhY2sgdHVwbGUKICAgICAgICBvZiAoZmlsZW5hbWUsIGxpbmVubykgdHVwbGVzICovCi0gICAgZ2V0X3RyYWNlcy50cmFjZWJhY2tzID0gaGFzaHRhYmxlX25ldyhzaXplb2YoUHlPYmplY3QgKiksCisgICAgZ2V0X3RyYWNlcy50cmFjZWJhY2tzID0gaGFzaHRhYmxlX25ldyhzaXplb2YodHJhY2ViYWNrX3QgKiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlPYmplY3QgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdCk7CiAgICAgaWYgKGdldF90cmFjZXMudHJhY2ViYWNrcyA9PSBOVUxMKSB7CkBAIC0xMTQyLDE1ICsxNDAyLDQzIEBACiBmaW5hbGx5OgogICAgIGlmIChnZXRfdHJhY2VzLnRyYWNlYmFja3MgIT0gTlVMTCkgewogICAgICAgICBfUHlfaGFzaHRhYmxlX2ZvcmVhY2goZ2V0X3RyYWNlcy50cmFjZWJhY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYiwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZW1hbGxvY19weW9iamVjdF9kZWNyZWZfY2IsIE5VTEwpOwogICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koZ2V0X3RyYWNlcy50cmFjZWJhY2tzKTsKICAgICB9Ci0gICAgaWYgKGdldF90cmFjZXMudHJhY2VzICE9IE5VTEwpCisgICAgaWYgKGdldF90cmFjZXMudHJhY2VzICE9IE5VTEwpIHsKICAgICAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KGdldF90cmFjZXMudHJhY2VzKTsKKyAgICB9CiAKICAgICByZXR1cm4gZ2V0X3RyYWNlcy5saXN0OwogfQogCisKK3N0YXRpYyB0cmFjZWJhY2tfdCoKK3RyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyKQoreworICAgIHRyYWNlX3QgdHJhY2U7CisgICAgaW50IGZvdW5kOworCisgICAgaWYgKCF0cmFjZW1hbGxvY19jb25maWcudHJhY2luZykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBUQUJMRVNfTE9DSygpOworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICBwb2ludGVyX3Qga2V5ID0ge3B0ciwgZG9tYWlufTsKKyAgICAgICAgZm91bmQgPSBfUHlfSEFTSFRBQkxFX0dFVCh0cmFjZW1hbGxvY190cmFjZXMsIGtleSwgdHJhY2UpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZm91bmQgPSBfUHlfSEFTSFRBQkxFX0dFVCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgdHJhY2UpOworICAgIH0KKyAgICBUQUJMRVNfVU5MT0NLKCk7CisKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiB0cmFjZS50cmFjZWJhY2s7Cit9CisKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF9vYmplY3RfdHJhY2ViYWNrX2RvYywKICAgICAiX2dldF9vYmplY3RfdHJhY2ViYWNrKG9iailcbiIKICAgICAiXG4iCkBAIC0xMTY1LDExICsxNDUzLDcgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnR5cGU7CiAgICAgdm9pZCAqcHRyOwotICAgIHRyYWNlX3QgdHJhY2U7Ci0gICAgaW50IGZvdW5kOwotCi0gICAgaWYgKCF0cmFjZW1hbGxvY19jb25maWcudHJhY2luZykKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKIAogICAgIHR5cGUgPSBQeV9UWVBFKG9iaik7CiAgICAgaWYgKFB5VHlwZV9JU19HQyh0eXBlKSkKQEAgLTExNzcsMTYgKzE0NjEsNDggQEAKICAgICBlbHNlCiAgICAgICAgIHB0ciA9ICh2b2lkICopb2JqOwogCi0gICAgVEFCTEVTX0xPQ0soKTsKLSAgICBmb3VuZCA9IF9QeV9IQVNIVEFCTEVfR0VUKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7Ci0gICAgVEFCTEVTX1VOTE9DSygpOwotCi0gICAgaWYgKCFmb3VuZCkKKyAgICB0cmFjZWJhY2sgPSB0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KXB0cik7CisgICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAotICAgIHJldHVybiB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2UudHJhY2ViYWNrLCBOVUxMKTsKKyAgICByZXR1cm4gdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlYmFjaywgTlVMTCk7CiB9CiAKKworI2RlZmluZSBQVVRTKGZkLCBzdHIpIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBzdHIsIChpbnQpc3RybGVuKHN0cikpCisKK3N0YXRpYyB2b2lkCitfUHlNZW1fRHVtcEZyYW1lKGludCBmZCwgZnJhbWVfdCAqIGZyYW1lKQoreworICAgIFBVVFMoZmQsICIgIEZpbGUgXCIiKTsKKyAgICBfUHlfRHVtcEFTQ0lJKGZkLCBmcmFtZS0+ZmlsZW5hbWUpOworICAgIFBVVFMoZmQsICJcIiwgbGluZSAiKTsKKyAgICBfUHlfRHVtcERlY2ltYWwoZmQsIGZyYW1lLT5saW5lbm8pOworICAgIFBVVFMoZmQsICJcbiIpOworfQorCisvKiBEdW1wIHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzIGFsbG9jYXRlZCBpbnRvIGZpbGUgZGVzY3JpcHRvcgorICAgZmQuIFRoZSBmdW5jdGlvbiBtYXkgYmxvY2sgb24gVEFCTEVTX0xPQ0soKSBidXQgaXQgaXMgdW5saWtlbHkuICovCit2b2lkCitfUHlNZW1fRHVtcFRyYWNlYmFjayhpbnQgZmQsIGNvbnN0IHZvaWQgKnB0cikKK3sKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOworICAgIGludCBpOworCisgICAgdHJhY2ViYWNrID0gdHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayhERUZBVUxUX0RPTUFJTiwgKHVpbnRwdHJfdClwdHIpOworICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUFVUUyhmZCwgIk1lbW9yeSBibG9jayBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuIik7CisgICAgZm9yIChpPTA7IGkgPCB0cmFjZWJhY2stPm5mcmFtZTsgaSsrKSB7CisgICAgICAgIF9QeU1lbV9EdW1wRnJhbWUoZmQsICZ0cmFjZWJhY2stPmZyYW1lc1tpXSk7CisgICAgfQorICAgIFBVVFMoZmQsICJcbiIpOworfQorCisjdW5kZWYgUFVUUworCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19zdGFydF9kb2MsCiAgICAgInN0YXJ0KG5mcmFtZTogaW50PTEpXG4iCiAgICAgIlxuIgpAQCAtMTIyMiw2ICsxNTM4LDcgQEAKICAgICAiU3RvcCB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIGNsZWFyIHRyYWNlc1xuIgogICAgICJvZiBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZCBieSBQeXRob24uIik7CiAKKwogc3RhdGljIFB5T2JqZWN0KgogcHlfdHJhY2VtYWxsb2Nfc3RvcChQeU9iamVjdCAqc2VsZikKIHsKQEAgLTEyMjksNiArMTU0Niw3IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2tfbGltaXRfZG9jLAogICAgICJnZXRfdHJhY2ViYWNrX2xpbWl0KCkgLT4gaW50XG4iCiAgICAgIlxuIgpAQCAtMTI0NCw2ICsxNTYyLDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHRyYWNlbWFsbG9jX2NvbmZpZy5tYXhfbmZyYW1lKTsKIH0KIAorCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X3RyYWNlbWFsbG9jX21lbW9yeV9kb2MsCiAgICAgImdldF90cmFjZW1hbGxvY19tZW1vcnkoKSAtPiBpbnRcbiIKICAgICAiXG4iCkBAIC0xMjY3LDYgKzE1ODYsNyBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOIiwgc2l6ZV9vYmopOwogfQogCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19nZXRfdHJhY2VkX21lbW9yeV9kb2MsCiAgICAgImdldF90cmFjZWRfbWVtb3J5KCkgLT4gKGludCwgaW50KVxuIgogICAgICJcbiIKQEAgLTEyOTIsNiArMTYxMiw3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5OIiwgc2l6ZV9vYmosIHBlYWtfc2l6ZV9vYmopOwogfQogCisKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewogICAgIHsiaXNfdHJhY2luZyIsIChQeUNGdW5jdGlvbilweV90cmFjZW1hbGxvY19pc190cmFjaW5nLAogICAgICBNRVRIX05PQVJHUywgdHJhY2VtYWxsb2NfaXNfdHJhY2luZ19kb2N9LApAQCAtMTM0Miw2ICsxNjYzLDcgQEAKICAgICByZXR1cm4gbTsKIH0KIAorCiBzdGF0aWMgaW50CiBwYXJzZV9zeXNfeG9wdGlvbnMoUHlPYmplY3QgKnZhbHVlKQogewpAQCAtMTM3MCw2ICsxNjkyLDcgQEAKICAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChuZnJhbWUsIGxvbmcsIGludCk7CiB9CiAKKwogaW50CiBfUHlUcmFjZU1hbGxvY19Jbml0KHZvaWQpCiB7CkBAIC0xNDI4LDYgKzE3NTEsNyBAQAogICAgIHJldHVybiB0cmFjZW1hbGxvY19zdGFydChuZnJhbWUpOwogfQogCisKIHZvaWQKIF9QeVRyYWNlTWFsbG9jX0Zpbmkodm9pZCkKIHsKQEAgLTE0MzcsMyArMTc2MSw1OSBAQAogICAgIHRyYWNlbWFsbG9jX2RlaW5pdCgpOwogfQogCitpbnQKK19QeVRyYWNlTWFsbG9jX1RyYWNrKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0ciwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKQoreworICAgIGludCByZXM7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1NUQVRFIGdpbF9zdGF0ZTsKKyNlbmRpZgorCisgICAgaWYgKCF0cmFjZW1hbGxvY19jb25maWcudHJhY2luZykgeworICAgICAgICAvKiB0cmFjZW1hbGxvYyBpcyBub3QgdHJhY2luZzogZG8gbm90aGluZyAqLworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBnaWxfc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOworI2VuZGlmCisKKyAgICBUQUJMRVNfTE9DSygpOworICAgIHJlcyA9IHRyYWNlbWFsbG9jX2FkZF90cmFjZShkb21haW4sIHB0ciwgc2l6ZSk7CisgICAgVEFCTEVTX1VOTE9DSygpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1JlbGVhc2UoZ2lsX3N0YXRlKTsKKyNlbmRpZgorICAgIHJldHVybiByZXM7Cit9CisKKworaW50CitfUHlUcmFjZU1hbGxvY19VbnRyYWNrKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0cikKK3sKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKSB7CisgICAgICAgIC8qIHRyYWNlbWFsbG9jIGlzIG5vdCB0cmFjaW5nOiBkbyBub3RoaW5nICovCisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICBUQUJMRVNfTE9DSygpOworICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShkb21haW4sIHB0cik7CisgICAgVEFCTEVTX1VOTE9DSygpOworCisgICAgcmV0dXJuIDA7Cit9CisKKworUHlPYmplY3QqCitfUHlUcmFjZU1hbGxvY19HZXRUcmFjZWJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyKQoreworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisKKyAgICB0cmFjZWJhY2sgPSB0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKGRvbWFpbiwgcHRyKTsKKyAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworCisgICAgcmV0dXJuIHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZWJhY2ssIE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fd2luYXBpLmMgYi9Nb2R1bGVzL193aW5hcGkuYwppbmRleCBlZGM2Y2Y0Li45MWQ0ZjAxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL193aW5hcGkuYworKysgYi9Nb2R1bGVzL193aW5hcGkuYwpAQCAtMTc1LDcgKzE3NSw3IEBACiAgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQogICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZigiX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSIsIGRhdGEpCiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAotICAgICAgICAgICAgJ2lmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpXG4gICAgUHlfUkVUVVJOX05PTkU7XG4nKQorICAgICAgICAgICAgJ2lmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHtcbiAgICBQeV9SRVRVUk5fTk9ORTtcbn1cbicpCiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAogICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTtcbicpCiAKQEAgLTE4OCw3ICsxODgsNyBAQAogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKICAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7XG4nKQogW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9Mzc0MDc2OTc5NTk2ZWJiYV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OTQ4MTllNzJkMmM2ZDU1OF0qLwogCiAjaW5jbHVkZSAiY2xpbmljL193aW5hcGkuYy5oIgogCkBAIC00ODYsNyArNDg2LDcgQEAKICAgICBjb25zdCBVU0hPUlQgcHJlZml4X2xlbiA9IDQ7CiAgICAgVVNIT1JUIHByaW50X2xlbiA9IDA7CiAgICAgVVNIT1JUIHJkYl9zaXplID0gMDsKLSAgICBQUkVQQVJTRV9EQVRBX0JVRkZFUiByZGIgPSBOVUxMOworICAgIF9QeV9QUkVQQVJTRV9EQVRBX0JVRkZFUiByZGIgPSBOVUxMOwogCiAgICAgLyogSnVuY3Rpb24gcG9pbnQgY3JlYXRpb24gKi8KICAgICBIQU5ETEUganVuY3Rpb24gPSBOVUxMOwpAQCAtNTQyLDE4ICs1NDIsMTggQEAKICAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHByaW50IG5hbWUgaW4gYnl0ZXMKICAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHN1YnN0aXR1dGUgbmFtZSBpbiBieXRlcwogICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0d28gTlVMIHRlcm1pbmF0b3JzIGluIGJ5dGVzICovCi0gICAgcmRiX3NpemUgPSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICsKKyAgICByZGJfc2l6ZSA9IF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICsKICAgICAgICAgc2l6ZW9mKHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIpIC0KICAgICAgICAgc2l6ZW9mKHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUGF0aEJ1ZmZlcikgKwogICAgICAgICAvKiBUd28gKzEncyBmb3IgTlVMIHRlcm1pbmF0b3JzLiAqLwogICAgICAgICAocHJlZml4X2xlbiArIHByaW50X2xlbiArIDEgKyBwcmludF9sZW4gKyAxKSAqIHNpemVvZihXQ0hBUik7Ci0gICAgcmRiID0gKFBSRVBBUlNFX0RBVEFfQlVGRkVSKVB5TWVtX1Jhd01hbGxvYyhyZGJfc2l6ZSk7CisgICAgcmRiID0gKF9QeV9QUkVQQVJTRV9EQVRBX0JVRkZFUilQeU1lbV9SYXdNYWxsb2MocmRiX3NpemUpOwogICAgIGlmIChyZGIgPT0gTlVMTCkKICAgICAgICAgZ290byBjbGVhbnVwOwogCiAgICAgbWVtc2V0KHJkYiwgMCwgcmRiX3NpemUpOwogICAgIHJkYi0+UmVwYXJzZVRhZyA9IElPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UOwotICAgIHJkYi0+UmVwYXJzZURhdGFMZW5ndGggPSByZGJfc2l6ZSAtIFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkU7CisgICAgcmRiLT5SZXBhcnNlRGF0YUxlbmd0aCA9IHJkYl9zaXplIC0gX1B5X1JFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkU7CiAgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5TdWJzdGl0dXRlTmFtZU9mZnNldCA9IDA7CiAgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5TdWJzdGl0dXRlTmFtZUxlbmd0aCA9CiAgICAgICAgIChwcmVmaXhfbGVuICsgcHJpbnRfbGVuKSAqIHNpemVvZihXQ0hBUik7CkBAIC02NzQsNyArNjc0LDcgQEAKIC8qIGhlbHBlcnMgZm9yIGNyZWF0ZXByb2Nlc3MgKi8KIAogc3RhdGljIHVuc2lnbmVkIGxvbmcKLWdldHVsb25nKFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCitnZXR1bG9uZyhQeU9iamVjdCogb2JqLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIFB5T2JqZWN0KiB2YWx1ZTsKICAgICB1bnNpZ25lZCBsb25nIHJldDsKQEAgLTY5MCw3ICs2OTAsNyBAQAogfQogCiBzdGF0aWMgSEFORExFCi1nZXRoYW5kbGUoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKK2dldGhhbmRsZShQeU9iamVjdCogb2JqLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIFB5T2JqZWN0KiB2YWx1ZTsKICAgICBIQU5ETEUgcmV0OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hZGRyaW5mby5oIGIvTW9kdWxlcy9hZGRyaW5mby5oCmluZGV4IDFjYjZmMGUuLmMzYzg2MjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYWRkcmluZm8uaAorKysgYi9Nb2R1bGVzL2FkZHJpbmZvLmgKQEAgLTE0MSwxMSArMTQxLDcgQEAKICAqIFJGQyAyNTUzOiBwcm90b2NvbC1pbmRlcGVuZGVudCBwbGFjZWhvbGRlciBmb3Igc29ja2V0IGFkZHJlc3NlcwogICovCiAjZGVmaW5lIF9TU19NQVhTSVpFICAgICAxMjgKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotI2RlZmluZSBfU1NfQUxJR05TSVpFICAgKHNpemVvZihQWV9MT05HX0xPTkcpKQotI2Vsc2UKLSNkZWZpbmUgX1NTX0FMSUdOU0laRSAgIChzaXplb2YoZG91YmxlKSkKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLworI2RlZmluZSBfU1NfQUxJR05TSVpFICAgKHNpemVvZihsb25nIGxvbmcpKQogI2RlZmluZSBfU1NfUEFEMVNJWkUgICAgKF9TU19BTElHTlNJWkUgLSBzaXplb2YodV9jaGFyKSAqIDIpCiAjZGVmaW5lIF9TU19QQUQyU0laRSAgICAoX1NTX01BWFNJWkUgLSBzaXplb2YodV9jaGFyKSAqIDIgLSBcCiAgICAgICAgICAgICAgICAgX1NTX1BBRDFTSVpFIC0gX1NTX0FMSUdOU0laRSkKQEAgLTE1OCwxMSArMTU0LDcgQEAKICAgICB1bnNpZ25lZCBzaG9ydCBzc19mYW1pbHk7ICAgICAgICAgICAvKiBhZGRyZXNzIGZhbWlseSAqLwogI2VuZGlmIC8qIEhBVkVfU09DS0FERFJfU0FfTEVOICovCiAgICAgY2hhciAgICAgICAgX19zc19wYWQxW19TU19QQUQxU0laRV07Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgX19zc19hbGlnbjsgICAgICAgICAgICAvKiBmb3JjZSBkZXNpcmVkIHN0cnVjdHVyZSBzdG9yYWdlIGFsaWdubWVudCAqLwotI2Vsc2UKLSAgICBkb3VibGUgX19zc19hbGlnbjsgICAgICAgICAgLyogZm9yY2UgZGVzaXJlZCBzdHJ1Y3R1cmUgc3RvcmFnZSBhbGlnbm1lbnQgKi8KLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLworICAgIGxvbmcgbG9uZyBfX3NzX2FsaWduOyAgICAgICAgICAgIC8qIGZvcmNlIGRlc2lyZWQgc3RydWN0dXJlIHN0b3JhZ2UgYWxpZ25tZW50ICovCiAgICAgY2hhciAgICAgICAgX19zc19wYWQyW19TU19QQUQyU0laRV07CiB9OwogI2VuZGlmIC8qICFIQVZFX1NPQ0tBRERSX1NUT1JBR0UgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvYXJyYXltb2R1bGUuYyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwppbmRleCBhNDk2NmI0Li4yY2FhOGVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCkBAIC0zMSw3ICszMSw3IEBACiAgICAgaW50IGl0ZW1zaXplOwogICAgIFB5T2JqZWN0ICogKCpnZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCk7CiAgICAgaW50ICgqc2V0aXRlbSkoc3RydWN0IGFycmF5b2JqZWN0ICosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOwotICAgIGNoYXIgKmZvcm1hdHM7CisgICAgY29uc3QgY2hhciAqZm9ybWF0czsKICAgICBpbnQgaXNfaW50ZWdlcl90eXBlOwogICAgIGludCBpc19zaWduZWQ7CiB9OwpAQCAtNDAsNyArNDAsNyBAQAogICAgIFB5T2JqZWN0X1ZBUl9IRUFECiAgICAgY2hhciAqb2JfaXRlbTsKICAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZDsKLSAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqb2JfZGVzY3I7CisgICAgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKm9iX2Rlc2NyOwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KICAgICBpbnQgb2JfZXhwb3J0czsgIC8qIE51bWJlciBvZiBleHBvcnRlZCBidWZmZXJzICovCiB9IGFycmF5b2JqZWN0OwpAQCAtNDE4LDIyICs0MTgsMjAgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBxX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCiB7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKChQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0pOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKCgobG9uZyBsb25nICopYXAtPm9iX2l0ZW0pW2ldKTsKIH0KIAogc3RhdGljIGludAogcV9zZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBpZiAoIVB5QXJnX1BhcnNlKHYsICJMO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyIiwgJngpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKGkgPj0gMCkKLSAgICAgICAgKChQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OworICAgICAgICAoKGxvbmcgbG9uZyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTQ0MSwyMCArNDM5LDIwIEBACiBRUV9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoCi0gICAgICAgICgodW5zaWduZWQgUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldKTsKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nIGxvbmcgKilhcC0+b2JfaXRlbSlbaV0pOwogfQogCiBzdGF0aWMgaW50CiBRUV9zZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CiAgICAgICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOwotICAgICAgICBpZiAoeCA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoeCA9PSAodW5zaWduZWQgbG9uZyBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUFlfTE9OR19MT05HIHk7CisgICAgICAgIGxvbmcgbG9uZyB5OwogICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKHYsICJMO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyIiwgJnkpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBpZiAoeSA8IDApIHsKQEAgLTQ2MiwxNCArNDYwLDEzIEBACiAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmcgbG9uZyBpcyBsZXNzIHRoYW4gbWluaW11bSIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIHggPSAodW5zaWduZWQgUFlfTE9OR19MT05HKXk7CisgICAgICAgIHggPSAodW5zaWduZWQgbG9uZyBsb25nKXk7CiAgICAgfQogCiAgICAgaWYgKGkgPj0gMCkKLSAgICAgICAgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OworICAgICAgICAoKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5kaWYKIAogc3RhdGljIFB5T2JqZWN0ICoKIGZfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKQEAgLTUxMSw3ICs1MDgsNyBAQAogICogRG9uJ3QgZm9yZ2V0IHRvIHVwZGF0ZSB0eXBlY29kZV90b19tZm9ybWF0X2NvZGUoKSBpZiB5b3UgYWRkIGEgbmV3CiAgKiB0eXBlY29kZS4KICAqLwotc3RhdGljIHN0cnVjdCBhcnJheWRlc2NyIGRlc2NyaXB0b3JzW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgZGVzY3JpcHRvcnNbXSA9IHsKICAgICB7J2InLCAxLCBiX2dldGl0ZW0sIGJfc2V0aXRlbSwgImIiLCAxLCAxfSwKICAgICB7J0InLCAxLCBCQl9nZXRpdGVtLCBCQl9zZXRpdGVtLCAiQiIsIDEsIDB9LAogICAgIHsndScsIHNpemVvZihQeV9VTklDT0RFKSwgdV9nZXRpdGVtLCB1X3NldGl0ZW0sICJ1IiwgMCwgMH0sCkBAIC01MjEsMTAgKzUxOCw4IEBACiAgICAgeydJJywgc2l6ZW9mKGludCksIElJX2dldGl0ZW0sIElJX3NldGl0ZW0sICJJIiwgMSwgMH0sCiAgICAgeydsJywgc2l6ZW9mKGxvbmcpLCBsX2dldGl0ZW0sIGxfc2V0aXRlbSwgImwiLCAxLCAxfSwKICAgICB7J0wnLCBzaXplb2YobG9uZyksIExMX2dldGl0ZW0sIExMX3NldGl0ZW0sICJMIiwgMSwgMH0sCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICB7J3EnLCBzaXplb2YoUFlfTE9OR19MT05HKSwgcV9nZXRpdGVtLCBxX3NldGl0ZW0sICJxIiwgMSwgMX0sCi0gICAgeydRJywgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIFFRX2dldGl0ZW0sIFFRX3NldGl0ZW0sICJRIiwgMSwgMH0sCi0jZW5kaWYKKyAgICB7J3EnLCBzaXplb2YobG9uZyBsb25nKSwgcV9nZXRpdGVtLCBxX3NldGl0ZW0sICJxIiwgMSwgMX0sCisgICAgeydRJywgc2l6ZW9mKGxvbmcgbG9uZyksIFFRX2dldGl0ZW0sIFFRX3NldGl0ZW0sICJRIiwgMSwgMH0sCiAgICAgeydmJywgc2l6ZW9mKGZsb2F0KSwgZl9nZXRpdGVtLCBmX3NldGl0ZW0sICJmIiwgMCwgMH0sCiAgICAgeydkJywgc2l6ZW9mKGRvdWJsZSksIGRfZ2V0aXRlbSwgZF9zZXRpdGVtLCAiZCIsIDAsIDB9LAogICAgIHsnXDAnLCAwLCAwLCAwLCAwLCAwLCAwfSAvKiBTZW50aW5lbCAqLwpAQCAtNTM5LDcgKzUzNCw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1hZDQzZDM3ZTk0MmE4ODU0XSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdhcnJheW9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5X3NzaXplX3Qgc2l6ZSwgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyKQorbmV3YXJyYXlvYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcikKIHsKICAgICBhcnJheW9iamVjdCAqb3A7CiAgICAgc2l6ZV90IG5ieXRlczsKQEAgLTg0MSwxMCArODM2LDEwIEBACiAgICAgICAgIG1lbXNldChucC0+b2JfaXRlbSwgYS0+b2JfaXRlbVswXSwgbmV3Ynl0ZXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5X3NzaXplX3QgZG9uZSA9IG9sZGJ5dGVzOwotICAgICAgICBQeV9NRU1DUFkobnAtPm9iX2l0ZW0sIGEtPm9iX2l0ZW0sIG9sZGJ5dGVzKTsKKyAgICAgICAgbWVtY3B5KG5wLT5vYl9pdGVtLCBhLT5vYl9pdGVtLCBvbGRieXRlcyk7CiAgICAgICAgIHdoaWxlIChkb25lIDwgbmV3Ynl0ZXMpIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbmNvcHkgPSAoZG9uZSA8PSBuZXdieXRlcy1kb25lKSA/IGRvbmUgOiBuZXdieXRlcy1kb25lOwotICAgICAgICAgICAgUHlfTUVNQ1BZKG5wLT5vYl9pdGVtK2RvbmUsIG5wLT5vYl9pdGVtLCBuY29weSk7CisgICAgICAgICAgICBtZW1jcHkobnAtPm9iX2l0ZW0rZG9uZSwgbnAtPm9iX2l0ZW0sIG5jb3B5KTsKICAgICAgICAgICAgIGRvbmUgKz0gbmNvcHk7CiAgICAgICAgIH0KICAgICB9CkBAIC04NTIsMzcgKzg0NywxMCBAQAogfQogCiBzdGF0aWMgaW50Ci1hcnJheV9hc3Nfc2xpY2UoYXJyYXlvYmplY3QgKmEsIFB5X3NzaXplX3QgaWxvdywgUHlfc3NpemVfdCBpaGlnaCwgUHlPYmplY3QgKnYpCithcnJheV9kZWxfc2xpY2UoYXJyYXlvYmplY3QgKmEsIFB5X3NzaXplX3QgaWxvdywgUHlfc3NpemVfdCBpaGlnaCkKIHsKICAgICBjaGFyICppdGVtOwotICAgIFB5X3NzaXplX3QgbjsgLyogU2l6ZSBvZiByZXBsYWNlbWVudCBhcnJheSAqLwogICAgIFB5X3NzaXplX3QgZDsgLyogQ2hhbmdlIGluIHNpemUgKi8KLSNkZWZpbmUgYiAoKGFycmF5b2JqZWN0ICopdikKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBuID0gMDsKLSAgICBlbHNlIGlmIChhcnJheV9DaGVjayh2KSkgewotICAgICAgICBuID0gUHlfU0laRShiKTsKLSAgICAgICAgaWYgKGEgPT0gYikgewotICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlICJhW2k6al0gPSBhIiAtLSBjb3B5IGIgZmlyc3QgKi8KLSAgICAgICAgICAgIGludCByZXQ7Ci0gICAgICAgICAgICB2ID0gYXJyYXlfc2xpY2UoYiwgMCwgbik7Ci0gICAgICAgICAgICBpZiAoIXYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgcmV0ID0gYXJyYXlfYXNzX3NsaWNlKGEsIGlsb3csIGloaWdoLCB2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGItPm9iX2Rlc2NyICE9IGEtPm9iX2Rlc2NyKSB7Ci0gICAgICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiBhcnJheSAobm90IFwiJS4yMDBzXCIpIHRvIGFycmF5IHNsaWNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBpZiAoaWxvdyA8IDApCiAgICAgICAgIGlsb3cgPSAwOwogICAgIGVsc2UgaWYgKGlsb3cgPiBQeV9TSVpFKGEpKQpAQCAtODk0LDcgKzg2Miw3IEBACiAgICAgZWxzZSBpZiAoaWhpZ2ggPiBQeV9TSVpFKGEpKQogICAgICAgICBpaGlnaCA9IFB5X1NJWkUoYSk7CiAgICAgaXRlbSA9IGEtPm9iX2l0ZW07Ci0gICAgZCA9IG4gLSAoaWhpZ2gtaWxvdyk7CisgICAgZCA9IGloaWdoLWlsb3c7CiAgICAgLyogSXNzdWUgIzQ1MDk6IElmIHRoZSBhcnJheSBoYXMgZXhwb3J0ZWQgYnVmZmVycyBhbmQgdGhlIHNsaWNlCiAgICAgICAgYXNzaWdubWVudCB3b3VsZCBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGFycmF5LCBmYWlsIGVhcmx5IHRvIG1ha2UKICAgICAgICBzdXJlIHdlIGRvbid0IG1vZGlmeSBpdC4gKi8KQEAgLTkwMywyNSArODcxLDE0IEBACiAgICAgICAgICAgICAiY2Fubm90IHJlc2l6ZSBhbiBhcnJheSB0aGF0IGlzIGV4cG9ydGluZyBidWZmZXJzIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgaWYgKGQgPCAwKSB7IC8qIERlbGV0ZSAtZCBpdGVtcyAqLwotICAgICAgICBtZW1tb3ZlKGl0ZW0gKyAoaWhpZ2grZCkqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAorICAgIGlmIChkID4gMCkgeyAvKiBEZWxldGUgZCBpdGVtcyAqLworICAgICAgICBtZW1tb3ZlKGl0ZW0gKyAoaWhpZ2gtZCkqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAogICAgICAgICAgICAgaXRlbSArIGloaWdoKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwKICAgICAgICAgICAgIChQeV9TSVpFKGEpLWloaWdoKSphLT5vYl9kZXNjci0+aXRlbXNpemUpOwotICAgICAgICBpZiAoYXJyYXlfcmVzaXplKGEsIFB5X1NJWkUoYSkgKyBkKSA9PSAtMSkKKyAgICAgICAgaWYgKGFycmF5X3Jlc2l6ZShhLCBQeV9TSVpFKGEpIC0gZCkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVsc2UgaWYgKGQgPiAwKSB7IC8qIEluc2VydCBkIGl0ZW1zICovCi0gICAgICAgIGlmIChhcnJheV9yZXNpemUoYSwgUHlfU0laRShhKSArIGQpKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBtZW1tb3ZlKGl0ZW0gKyAoaWhpZ2grZCkqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAotICAgICAgICAgICAgaXRlbSArIGloaWdoKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwKLSAgICAgICAgICAgIChQeV9TSVpFKGEpLWloaWdoKSphLT5vYl9kZXNjci0+aXRlbXNpemUpOwotICAgIH0KLSAgICBpZiAobiA+IDApCi0gICAgICAgIG1lbWNweShpdGVtICsgaWxvdyphLT5vYl9kZXNjci0+aXRlbXNpemUsIGItPm9iX2l0ZW0sCi0gICAgICAgICAgICAgICBuKmItPm9iX2Rlc2NyLT5pdGVtc2l6ZSk7CiAgICAgcmV0dXJuIDA7Ci0jdW5kZWYgYgogfQogCiBzdGF0aWMgaW50CkBAIC05MzMsNyArODkwLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gYXJyYXlfYXNzX3NsaWNlKGEsIGksIGkrMSwgdik7CisgICAgICAgIHJldHVybiBhcnJheV9kZWxfc2xpY2UoYSwgaSwgaSsxKTsKICAgICByZXR1cm4gKCphLT5vYl9kZXNjci0+c2V0aXRlbSkoYSwgaSwgdik7CiB9CiAKQEAgLTExNjMsOCArMTEyMCw3IEBACiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzZWxmaSwgdiwgUHlfRVEpOwogICAgICAgICBQeV9ERUNSRUYoc2VsZmkpOwogICAgICAgICBpZiAoY21wID4gMCkgewotICAgICAgICAgICAgaWYgKGFycmF5X2Fzc19zbGljZShzZWxmLCBpLCBpKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkKKyAgICAgICAgICAgIGlmIChhcnJheV9kZWxfc2xpY2Uoc2VsZiwgaSwgaSsxKSAhPSAwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0xMjA3LDcgKzExNjMsNyBAQAogICAgIHYgPSBnZXRhcnJheWl0ZW0oKFB5T2JqZWN0ICopc2VsZiwgaSk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGFycmF5X2Fzc19zbGljZShzZWxmLCBpLCBpKzEsIChQeU9iamVjdCAqKU5VTEwpICE9IDApIHsKKyAgICBpZiAoYXJyYXlfZGVsX3NsaWNlKHNlbGYsIGksIGkrMSkgIT0gMCkgewogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE4NjEsMTYgKzE4MTcsMTQgQEAKICAgICAgICAgaW50c2l6ZSA9IHNpemVvZihsb25nKTsKICAgICAgICAgaXNfc2lnbmVkID0gMDsKICAgICAgICAgYnJlYWs7Ci0jaWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzoKLSAgICAgICAgaW50c2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOworICAgICAgICBpbnRzaXplID0gc2l6ZW9mKGxvbmcgbG9uZyk7CiAgICAgICAgIGlzX3NpZ25lZCA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ1EnOgotICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGludHNpemUgPSBzaXplb2YobG9uZyBsb25nKTsKICAgICAgICAgaXNfc2lnbmVkID0gMDsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gVU5LTk9XTl9GT1JNQVQ7CiAgICAgfQpAQCAtMTk1NCw3ICsxOTA4LDcgQEAKIHsKICAgICBQeU9iamVjdCAqY29udmVydGVkX2l0ZW1zOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmICghUHlUeXBlX0NoZWNrKGFycmF5dHlwZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTIwOTIsNyArMjA0Niw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgaXRlbWNvdW50ID0gUHlfU0laRShpdGVtcykgLyBtZl9kZXNjci5zaXplOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICptZW1zdHIgPQogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhpdGVtcyk7Ci0gICAgICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKKyAgICAgICAgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgICAgIC8qIElmIHBvc3NpYmxlLCB0cnkgdG8gcGFjayBhcnJheSdzIGl0ZW1zIHVzaW5nIGEgZGF0YSB0eXBlCiAgICAgICAgICAqIHRoYXQgZml0cyBiZXR0ZXIuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbiBhcnJheSB3aXRoIG5hcnJvd2VyCkBAIC0yNTYyLDcgKzI1MTYsNyBAQAogICAgIHZpZXctPmZvcm1hdCA9IE5VTEw7CiAgICAgdmlldy0+aW50ZXJuYWwgPSBOVUxMOwogICAgIGlmICgoZmxhZ3MgJiBQeUJVRl9GT1JNQVQpID09IFB5QlVGX0ZPUk1BVCkgewotICAgICAgICB2aWV3LT5mb3JtYXQgPSBzZWxmLT5vYl9kZXNjci0+Zm9ybWF0czsKKyAgICAgICAgdmlldy0+Zm9ybWF0ID0gKGNoYXIgKilzZWxmLT5vYl9kZXNjci0+Zm9ybWF0czsKICNpZmRlZiBQeV9VTklDT0RFX1dJREUKICAgICAgICAgaWYgKHNlbGYtPm9iX2Rlc2NyLT50eXBlY29kZSA9PSAndScpIHsKICAgICAgICAgICAgIHZpZXctPmZvcm1hdCA9ICJ3IjsKQEAgLTI2MDMsNyArMjU1Nyw3IEBACiB7CiAgICAgaW50IGM7CiAgICAgUHlPYmplY3QgKmluaXRpYWwgPSBOVUxMLCAqaXQgPSBOVUxMOwotICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKKyAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAodHlwZSA9PSAmQXJyYXl0eXBlICYmICFfUHlBcmdfTm9LZXl3b3JkcygiYXJyYXkuYXJyYXkoKSIsIGt3ZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3MzIsMTEgKzI2ODYsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICJiYWQgdHlwZWNvZGUgKG11c3QgYmUgYiwgQiwgdSwgaCwgSCwgaSwgSSwgbCwgTCwgcSwgUSwgZiBvciBkKSIpOwotI2Vsc2UKLSAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBmIG9yIGQpIik7Ci0jZW5kaWYKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMjg4Myw5ICsyODMzLDIwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYXJyYXlpdGVyX25leHQoYXJyYXlpdGVyb2JqZWN0ICppdCkKIHsKKyAgICBhcnJheW9iamVjdCAqYW87CisKKyAgICBhc3NlcnQoaXQgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KFB5QXJyYXlJdGVyX0NoZWNrKGl0KSk7Ci0gICAgaWYgKGl0LT5pbmRleCA8IFB5X1NJWkUoaXQtPmFvKSkKLSAgICAgICAgcmV0dXJuICgqaXQtPmdldGl0ZW0pKGl0LT5hbywgaXQtPmluZGV4KyspOworICAgIGFvID0gaXQtPmFvOworICAgIGlmIChhbyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBhc3NlcnQoYXJyYXlfQ2hlY2soYW8pKTsKKyAgICBpZiAoaXQtPmluZGV4IDwgUHlfU0laRShhbykpIHsKKyAgICAgICAgcmV0dXJuICgqaXQtPmdldGl0ZW0pKGFvLCBpdC0+aW5kZXgrKyk7CisgICAgfQorICAgIGl0LT5hbyA9IE5VTEw7CisgICAgUHlfREVDUkVGKGFvKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMjkxNCw4ICsyODc1LDExIEBACiBhcnJheV9hcnJheWl0ZXJhdG9yX19fcmVkdWNlX19faW1wbChhcnJheWl0ZXJvYmplY3QgKnNlbGYpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Nzg5OGE1MmU4ZTY2ZTAxNiBpbnB1dD1hMDYyZWExZTk5NTE0MTdhXSovCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5hbywgc2VsZi0+aW5kZXgpOworICAgIFB5T2JqZWN0ICpmdW5jID0gX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKTsKKyAgICBpZiAoc2VsZi0+YW8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTigoKSkiLCBmdW5jKTsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgZnVuYywgc2VsZi0+YW8sIHNlbGYtPmluZGV4KTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtMjk5NSw3ICsyOTU5LDcgQEAKICAgICBjaGFyIGJ1ZmZlcltQeV9BUlJBWV9MRU5HVEgoZGVzY3JpcHRvcnMpXSwgKnA7CiAgICAgUHlPYmplY3QgKnR5cGVjb2RlczsKICAgICBQeV9zc2l6ZV90IHNpemUgPSAwOwotICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKKyAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZBcnJheXR5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdWRpb29wLmMgYi9Nb2R1bGVzL2F1ZGlvb3AuYwppbmRleCAxZTEzMWQyLi5kY2Q3Nzg4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2F1ZGlvb3AuYworKysgYi9Nb2R1bGVzL2F1ZGlvb3AuYwpAQCAtNSw4ICs1LDYgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCi10eXBlZGVmIHNob3J0IFB5SW50MTY7Ci0KICNpZiBkZWZpbmVkKF9fQ0hBUl9VTlNJR05FRF9fKQogI2lmIGRlZmluZWQoc2lnbmVkKQogLyogVGhpcyBtb2R1bGUgY3VycmVudGx5IGRvZXMgbm90IHdvcmsgb24gc3lzdGVtcyB3aGVyZSBvbmx5IHVuc2lnbmVkCkBAIC01MSwxMyArNDksMTUgQEAKICNkZWZpbmUgU0VHX1NISUZUICAgICAgICg0KSAgICAgICAgICAgICAvKiBMZWZ0IHNoaWZ0IGZvciBzZWdtZW50IG51bWJlci4gKi8KICNkZWZpbmUgU0VHX01BU0sgICAgICAgICgweDcwKSAgICAgICAgICAvKiBTZWdtZW50IGZpZWxkIG1hc2suICovCiAKLXN0YXRpYyBQeUludDE2IHNlZ19hZW5kWzhdID0gezB4MUYsIDB4M0YsIDB4N0YsIDB4RkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFGRiwgMHgzRkYsIDB4N0ZGLCAweEZGRn07Ci1zdGF0aWMgUHlJbnQxNiBzZWdfdWVuZFs4XSA9IHsweDNGLCAweDdGLCAweEZGLCAweDFGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M0ZGLCAweDdGRiwgMHhGRkYsIDB4MUZGRn07CitzdGF0aWMgY29uc3QgaW50MTZfdCBzZWdfYWVuZFs4XSA9IHsKKyAgICAweDFGLCAweDNGLCAweDdGLCAweEZGLCAweDFGRiwgMHgzRkYsIDB4N0ZGLCAweEZGRgorfTsKK3N0YXRpYyBjb25zdCBpbnQxNl90IHNlZ191ZW5kWzhdID0geworICAgIDB4M0YsIDB4N0YsIDB4RkYsIDB4MUZGLCAweDNGRiwgMHg3RkYsIDB4RkZGLCAweDFGRkYKK307CiAKLXN0YXRpYyBQeUludDE2Ci1zZWFyY2goUHlJbnQxNiB2YWwsIFB5SW50MTYgKnRhYmxlLCBpbnQgc2l6ZSkKK3N0YXRpYyBpbnQxNl90CitzZWFyY2goaW50MTZfdCB2YWwsIGNvbnN0IGludDE2X3QgKnRhYmxlLCBpbnQgc2l6ZSkKIHsKICAgICBpbnQgaTsKIApAQCAtNzAsNyArNzAsNyBAQAogI2RlZmluZSBzdF91bGF3MmxpbmVhcjE2KHVjKSAoX3N0X3VsYXcybGluZWFyMTZbdWNdKQogI2RlZmluZSBzdF9hbGF3MmxpbmVhcjE2KHVjKSAoX3N0X2FsYXcybGluZWFyMTZbdWNdKQogCi1zdGF0aWMgUHlJbnQxNiBfc3RfdWxhdzJsaW5lYXIxNlsyNTZdID0geworc3RhdGljIGNvbnN0IGludDE2X3QgX3N0X3VsYXcybGluZWFyMTZbMjU2XSA9IHsKICAgICAtMzIxMjQsICAtMzExMDAsICAtMzAwNzYsICAtMjkwNTIsICAtMjgwMjgsICAtMjcwMDQsICAtMjU5ODAsCiAgICAgLTI0OTU2LCAgLTIzOTMyLCAgLTIyOTA4LCAgLTIxODg0LCAgLTIwODYwLCAgLTE5ODM2LCAgLTE4ODEyLAogICAgIC0xNzc4OCwgIC0xNjc2NCwgIC0xNTk5NiwgIC0xNTQ4NCwgIC0xNDk3MiwgIC0xNDQ2MCwgIC0xMzk0OCwKQEAgLTE0MywxMCArMTQzLDEwIEBACiAgKiBKb2huIFdpbGV5ICYgU29ucywgcHBzIDk4LTExMSBhbmQgNDcyLTQ3Ni4KICAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIKLXN0XzE0bGluZWFyMnVsYXcoUHlJbnQxNiBwY21fdmFsKSAgICAgICAvKiAyJ3MgY29tcGxlbWVudCAoMTQtYml0IHJhbmdlKSAqLworc3RfMTRsaW5lYXIydWxhdyhpbnQxNl90IHBjbV92YWwpICAgICAgIC8qIDIncyBjb21wbGVtZW50ICgxNC1iaXQgcmFuZ2UpICovCiB7Ci0gICAgUHlJbnQxNiAgICAgICAgIG1hc2s7Ci0gICAgUHlJbnQxNiAgICAgICAgIHNlZzsKKyAgICBpbnQxNl90ICAgICAgICAgbWFzazsKKyAgICBpbnQxNl90ICAgICAgICAgc2VnOwogICAgIHVuc2lnbmVkIGNoYXIgICB1dmFsOwogCiAgICAgLyogdS1sYXcgaW52ZXJ0cyBhbGwgYml0cyAqLwpAQCAtMTc2LDcgKzE3Niw3IEBACiAKIH0KIAotc3RhdGljIFB5SW50MTYgX3N0X2FsYXcybGluZWFyMTZbMjU2XSA9IHsKK3N0YXRpYyBjb25zdCBpbnQxNl90IF9zdF9hbGF3MmxpbmVhcjE2WzI1Nl0gPSB7CiAgICAgIC01NTA0LCAgIC01MjQ4LCAgIC02MDE2LCAgIC01NzYwLCAgIC00NDgwLCAgIC00MjI0LCAgIC00OTkyLAogICAgICAtNDczNiwgICAtNzU1MiwgICAtNzI5NiwgICAtODA2NCwgICAtNzgwOCwgICAtNjUyOCwgICAtNjI3MiwKICAgICAgLTcwNDAsICAgLTY3ODQsICAgLTI3NTIsICAgLTI2MjQsICAgLTMwMDgsICAgLTI4ODAsICAgLTIyNDAsCkBAIC0yMzcsMTAgKzIzNywxMCBAQAogICogSm9obiBXaWxleSAmIFNvbnMsIHBwcyA5OC0xMTEgYW5kIDQ3Mi00NzYuCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyCi1zdF9saW5lYXIyYWxhdyhQeUludDE2IHBjbV92YWwpIC8qIDIncyBjb21wbGVtZW50ICgxMy1iaXQgcmFuZ2UpICovCitzdF9saW5lYXIyYWxhdyhpbnQxNl90IHBjbV92YWwpIC8qIDIncyBjb21wbGVtZW50ICgxMy1iaXQgcmFuZ2UpICovCiB7Ci0gICAgUHlJbnQxNiAgICAgICAgIG1hc2s7Ci0gICAgc2hvcnQgICAgICAgICAgIHNlZzsKKyAgICBpbnQxNl90ICAgICAgICAgbWFzazsKKyAgICBpbnQxNl90ICAgICAgICAgc2VnOwogICAgIHVuc2lnbmVkIGNoYXIgICBhdmFsOwogCiAgICAgLyogQS1sYXcgdXNpbmcgZXZlbiBiaXQgaW52ZXJzaW9uICovCkBAIC0yNzAsMTIgKzI3MCwxMiBAQAogLyogRW5kIG9mIGNvZGUgdGFrZW4gZnJvbSBzb3ggKi8KIAogLyogSW50ZWwgQURQQ00gc3RlcCB2YXJpYXRpb24gdGFibGUgKi8KLXN0YXRpYyBpbnQgaW5kZXhUYWJsZVsxNl0gPSB7CitzdGF0aWMgY29uc3QgaW50IGluZGV4VGFibGVbMTZdID0gewogICAgIC0xLCAtMSwgLTEsIC0xLCAyLCA0LCA2LCA4LAogICAgIC0xLCAtMSwgLTEsIC0xLCAyLCA0LCA2LCA4LAogfTsKIAotc3RhdGljIGludCBzdGVwc2l6ZVRhYmxlWzg5XSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgc3RlcHNpemVUYWJsZVs4OV0gPSB7CiAgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNiwgMTcsCiAgICAgMTksIDIxLCAyMywgMjUsIDI4LCAzMSwgMzQsIDM3LCA0MSwgNDUsCiAgICAgNTAsIDU1LCA2MCwgNjYsIDczLCA4MCwgODgsIDk3LCAxMDcsIDExOCwKQEAgLTI5NCw4ICsyOTQsOCBAQAogCiAKICNkZWZpbmUgR0VUSU5UOChjcCwgaSkgICAgICAgICAgR0VUSU5UWChzaWduZWQgY2hhciwgKGNwKSwgKGkpKQotI2RlZmluZSBHRVRJTlQxNihjcCwgaSkgICAgICAgICBHRVRJTlRYKHNob3J0LCAoY3ApLCAoaSkpCi0jZGVmaW5lIEdFVElOVDMyKGNwLCBpKSAgICAgICAgIEdFVElOVFgoUFlfSU5UMzJfVCwgKGNwKSwgKGkpKQorI2RlZmluZSBHRVRJTlQxNihjcCwgaSkgICAgICAgICBHRVRJTlRYKGludDE2X3QsIChjcCksIChpKSkKKyNkZWZpbmUgR0VUSU5UMzIoY3AsIGkpICAgICAgICAgR0VUSU5UWChpbnQzMl90LCAoY3ApLCAoaSkpCiAKICNpZiBXT1JEU19CSUdFTkRJQU4KICNkZWZpbmUgR0VUSU5UMjQoY3AsIGkpICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMzExLDggKzMxMSw4IEBACiAKIAogI2RlZmluZSBTRVRJTlQ4KGNwLCBpLCB2YWwpICAgICBTRVRJTlRYKHNpZ25lZCBjaGFyLCAoY3ApLCAoaSksICh2YWwpKQotI2RlZmluZSBTRVRJTlQxNihjcCwgaSwgdmFsKSAgICBTRVRJTlRYKHNob3J0LCAoY3ApLCAoaSksICh2YWwpKQotI2RlZmluZSBTRVRJTlQzMihjcCwgaSwgdmFsKSAgICBTRVRJTlRYKFBZX0lOVDMyX1QsIChjcCksIChpKSwgKHZhbCkpCisjZGVmaW5lIFNFVElOVDE2KGNwLCBpLCB2YWwpICAgIFNFVElOVFgoaW50MTZfdCwgKGNwKSwgKGkpLCAodmFsKSkKKyNkZWZpbmUgU0VUSU5UMzIoY3AsIGksIHZhbCkgICAgU0VUSU5UWChpbnQzMl90LCAoY3ApLCAoaSksICh2YWwpKQogCiAjaWYgV09SRFNfQklHRU5ESUFOCiAjZGVmaW5lIFNFVElOVDI0KGNwLCBpLCB2YWwpICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNDQ0LDcgKzQ0NCw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZvciAoaSA9IDA7IGkgPCBmcmFnbWVudC0+bGVuOyBpICs9IHdpZHRoKSB7CiAgICAgICAgIGludCB2YWwgPSBHRVRSQVdTQU1QTEUod2lkdGgsIGZyYWdtZW50LT5idWYsIGkpOwotICAgICAgICBpZiAodmFsIDwgMCkgYWJzdmFsID0gKC12YWwpOworICAgICAgICAvKiBDYXN0IHRvIHVuc2lnbmVkIGJlZm9yZSBuZWdhdGluZy4gVW5zaWduZWQgb3ZlcmZsb3cgaXMgd2VsbC0KKyAgICAgICAgZGVmaW5lZCwgYnV0IHNpZ25lZCBvdmVyZmxvdyBpcyBub3QuICovCisgICAgICAgIGlmICh2YWwgPCAwKSBhYnN2YWwgPSAodW5zaWduZWQgaW50KS0oaW50NjRfdCl2YWw7CiAgICAgICAgIGVsc2UgYWJzdmFsID0gdmFsOwogICAgICAgICBpZiAoYWJzdmFsID4gbWF4KSBtYXggPSBhYnN2YWw7CiAgICAgfQpAQCAtNTQwLDcgKzU0Miw3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlcyk7CiB9CiAKLXN0YXRpYyBkb3VibGUgX3N1bTIoY29uc3Qgc2hvcnQgKmEsIGNvbnN0IHNob3J0ICpiLCBQeV9zc2l6ZV90IGxlbikKK3N0YXRpYyBkb3VibGUgX3N1bTIoY29uc3QgaW50MTZfdCAqYSwgY29uc3QgaW50MTZfdCAqYiwgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGRvdWJsZSBzdW0gPSAwLjA7CkBAIC01OTgsNyArNjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcmVmZXJlbmNlKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU3NTIzMDZkODNjYmJhZGEgaW5wdXQ9NjJjMzA1NjA1ZTE4M2M5YV0qLwogewotICAgIGNvbnN0IHNob3J0ICpjcDEsICpjcDI7CisgICAgY29uc3QgaW50MTZfdCAqY3AxLCAqY3AyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBQeV9zc2l6ZV90IGosIGJlc3RfajsKICAgICBkb3VibGUgYWpfbTEsIGFqX2xtMTsKQEAgLTYwOCw5ICs2MTAsOSBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLCAiU3RyaW5ncyBzaG91bGQgYmUgZXZlbi1zaXplZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgY3AxID0gKGNvbnN0IHNob3J0ICopZnJhZ21lbnQtPmJ1ZjsKKyAgICBjcDEgPSAoY29uc3QgaW50MTZfdCAqKWZyYWdtZW50LT5idWY7CiAgICAgbGVuMSA9IGZyYWdtZW50LT5sZW4gPj4gMTsKLSAgICBjcDIgPSAoY29uc3Qgc2hvcnQgKilyZWZlcmVuY2UtPmJ1ZjsKKyAgICBjcDIgPSAoY29uc3QgaW50MTZfdCAqKXJlZmVyZW5jZS0+YnVmOwogICAgIGxlbjIgPSByZWZlcmVuY2UtPmxlbiA+PiAxOwogCiAgICAgaWYgKGxlbjEgPCBsZW4yKSB7CkBAIC02NjcsNyArNjY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcmVmZXJlbmNlKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0ZWE5NTY1MmMxYWZjZjggaW5wdXQ9ODE2NjgwMzAxZDAxMmIyMV0qLwogewotICAgIGNvbnN0IHNob3J0ICpjcDEsICpjcDI7CisgICAgY29uc3QgaW50MTZfdCAqY3AxLCAqY3AyOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGRvdWJsZSBzdW1fcmlfMiwgc3VtX2Fpal9yaSwgcmVzdWx0OwogCkBAIC02NzksOCArNjgxLDggQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEF1ZGlvb3BFcnJvciwgIlNhbXBsZXMgc2hvdWxkIGJlIHNhbWUgc2l6ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgY3AxID0gKGNvbnN0IHNob3J0ICopZnJhZ21lbnQtPmJ1ZjsKLSAgICBjcDIgPSAoY29uc3Qgc2hvcnQgKilyZWZlcmVuY2UtPmJ1ZjsKKyAgICBjcDEgPSAoY29uc3QgaW50MTZfdCAqKWZyYWdtZW50LT5idWY7CisgICAgY3AyID0gKGNvbnN0IGludDE2X3QgKilyZWZlcmVuY2UtPmJ1ZjsKICAgICBsZW4gPSBmcmFnbWVudC0+bGVuID4+IDE7CiAgICAgc3VtX3JpXzIgPSBfc3VtMihjcDIsIGNwMiwgbGVuKTsKICAgICBzdW1fYWlqX3JpID0gX3N1bTIoY3AxLCBjcDIsIGxlbik7CkBAIC03MDksNyArNzExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYwMDgxMjgyMzM1MjMwNDAgaW5wdXQ9MmYzMDQ4MDFlZDQyMzgzY10qLwogewotICAgIGNvbnN0IHNob3J0ICpjcDE7CisgICAgY29uc3QgaW50MTZfdCAqY3AxOwogICAgIFB5X3NzaXplX3QgbGVuMTsKICAgICBQeV9zc2l6ZV90IGosIGJlc3RfajsKICAgICBkb3VibGUgYWpfbTEsIGFqX2xtMTsKQEAgLTcxOSw3ICs3MjEsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLCAiU3RyaW5ncyBzaG91bGQgYmUgZXZlbi1zaXplZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgY3AxID0gKGNvbnN0IHNob3J0ICopZnJhZ21lbnQtPmJ1ZjsKKyAgICBjcDEgPSAoY29uc3QgaW50MTZfdCAqKWZyYWdtZW50LT5idWY7CiAgICAgbGVuMSA9IGZyYWdtZW50LT5sZW4gPj4gMTsKIAogICAgIGlmIChsZW5ndGggPCAwIHx8IGxlbjEgPCBsZW5ndGgpIHsKQEAgLTExMjAsMTIgKzExMjIsMTIgQEAKICAgICAgICAgaWYgKHdpZHRoID09IDEpCiAgICAgICAgICAgICB2YWwgPSBHRVRJTlRYKHVuc2lnbmVkIGNoYXIsIGZyYWdtZW50LT5idWYsIGkpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAyKQotICAgICAgICAgICAgdmFsID0gR0VUSU5UWCh1bnNpZ25lZCBzaG9ydCwgZnJhZ21lbnQtPmJ1ZiwgaSk7CisgICAgICAgICAgICB2YWwgPSBHRVRJTlRYKHVpbnQxNl90LCBmcmFnbWVudC0+YnVmLCBpKTsKICAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gMykKICAgICAgICAgICAgIHZhbCA9ICgodW5zaWduZWQgaW50KUdFVElOVDI0KGZyYWdtZW50LT5idWYsIGkpKSAmIDB4ZmZmZmZmdTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhc3NlcnQod2lkdGggPT0gNCk7Ci0gICAgICAgICAgICB2YWwgPSBHRVRJTlRYKFBZX1VJTlQzMl9ULCBmcmFnbWVudC0+YnVmLCBpKTsKKyAgICAgICAgICAgIHZhbCA9IEdFVElOVFgodWludDMyX3QsIGZyYWdtZW50LT5idWYsIGkpOwogICAgICAgICB9CiAKICAgICAgICAgdmFsICs9ICh1bnNpZ25lZCBpbnQpYmlhczsKQEAgLTExMzUsMTIgKzExMzcsMTIgQEAKICAgICAgICAgaWYgKHdpZHRoID09IDEpCiAgICAgICAgICAgICBTRVRJTlRYKHVuc2lnbmVkIGNoYXIsIG5jcCwgaSwgdmFsKTsKICAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gMikKLSAgICAgICAgICAgIFNFVElOVFgodW5zaWduZWQgc2hvcnQsIG5jcCwgaSwgdmFsKTsKKyAgICAgICAgICAgIFNFVElOVFgodWludDE2X3QsIG5jcCwgaSwgdmFsKTsKICAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gMykKICAgICAgICAgICAgIFNFVElOVDI0KG5jcCwgaSwgKGludCl2YWwpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFzc2VydCh3aWR0aCA9PSA0KTsKLSAgICAgICAgICAgIFNFVElOVFgoUFlfVUlOVDMyX1QsIG5jcCwgaSwgdmFsKTsKKyAgICAgICAgICAgIFNFVElOVFgodWludDMyX3QsIG5jcCwgaSwgdmFsKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcnY7CkBAIC0xMzMyLDcgKzEzMzQsNyBAQAogICAgIHdlaWdodEEgLz0gZDsKICAgICB3ZWlnaHRCIC89IGQ7CiAKLSAgICBpZiAoKHNpemVfdCluY2hhbm5lbHMgPiBQWV9TSVpFX01BWC9zaXplb2YoaW50KSkgeworICAgIGlmICgoc2l6ZV90KW5jaGFubmVscyA+IFNJWkVfTUFYL3NpemVvZihpbnQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgZW5vdWdoIG1lbW9yeSBmb3Igb3V0cHV0IGJ1ZmZlciIpOwogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYmluYXNjaWkuYyBiL01vZHVsZXMvYmluYXNjaWkuYwppbmRleCAxYTQwYjQxLi45YjljZDdmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2JpbmFzY2lpLmMKKysrIGIvTW9kdWxlcy9iaW5hc2NpaS5jCkBAIC03NCw3ICs3NCw3IEBACiAjZGVmaW5lIFNLSVAgMHg3RQogI2RlZmluZSBGQUlMIDB4N0QKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgdGFibGVfYTJiX2hxeFsyNTZdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdGFibGVfYTJiX2hxeFsyNTZdID0gewogLyogICAgICAgXkAgICAgXkEgICAgXkIgICAgXkMgICAgXkQgICAgXkUgICAgXkYgICAgXkcgICAqLwogLyogMCovICBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLAogLyogICAgICAgXGIgICAgXHQgICAgXG4gICAgXksgICAgXkwgICAgXHIgICAgXk4gICAgXk8gICAqLwpAQCAtMTI1LDEwICsxMjUsMTAgQEAKICAgICBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLAogfTsKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgdGFibGVfYjJhX2hxeFtdID0KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHRhYmxlX2IyYV9ocXhbXSA9CiAiIVwiIyQlJicoKSorLC0wMTIzNDU2ODlAQUJDREVGR0hJSktMTU5QUVJTVFVWWFlaW2BhYmNkZWZoaWprbG1wcXIiOwogCi1zdGF0aWMgY2hhciB0YWJsZV9hMmJfYmFzZTY0W10gPSB7CitzdGF0aWMgY29uc3QgY2hhciB0YWJsZV9hMmJfYmFzZTY0W10gPSB7CiAgICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCiAgICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCiAgICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSw2MiwgLTEsLTEsLTEsNjMsCkBAIC0xNDQsMTIgKzE0NCwxMiBAQAogLyogTWF4IGJpbmFyeSBjaHVuayBzaXplOyBsaW1pdGVkIG9ubHkgYnkgYXZhaWxhYmxlIG1lbW9yeSAqLwogI2RlZmluZSBCQVNFNjRfTUFYQklOICgoUFlfU1NJWkVfVF9NQVggLSAzKSAvIDIpCiAKLXN0YXRpYyB1bnNpZ25lZCBjaGFyIHRhYmxlX2IyYV9iYXNlNjRbXSA9CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB0YWJsZV9iMmFfYmFzZTY0W10gPQogIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iOwogCiAKIAotc3RhdGljIHVuc2lnbmVkIHNob3J0IGNyY3RhYl9ocXhbMjU2XSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBjcmN0YWJfaHF4WzI1Nl0gPSB7CiAgICAgMHgwMDAwLCAweDEwMjEsIDB4MjA0MiwgMHgzMDYzLCAweDQwODQsIDB4NTBhNSwgMHg2MGM2LCAweDcwZTcsCiAgICAgMHg4MTA4LCAweDkxMjksIDB4YTE0YSwgMHhiMTZiLCAweGMxOGMsIDB4ZDFhZCwgMHhlMWNlLCAweGYxZWYsCiAgICAgMHgxMjMxLCAweDAyMTAsIDB4MzI3MywgMHgyMjUyLCAweDUyYjUsIDB4NDI5NCwgMHg3MmY3LCAweDYyZDYsCkBAIC0yNTYsNyArMjU2LDggQEAKIGJpbmFzY2lpX2EyYl91dV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMDI3ZjhlMGIwNTk4NzQyIGlucHV0PTdjYWZlYWY3M2RmNjNkMWNdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwpAQCAtMzQyLDEzICszNDMsMTUgQEAKIGJpbmFzY2lpX2IyYV91dV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMDcwNjcwZTUyZTRhYTZiIGlucHV0PTAwZmRmNDU4Y2U4YjQ2NWJdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKLSAgICBQeV9zc2l6ZV90IGJpbl9sZW47CisgICAgUHlfc3NpemVfdCBiaW5fbGVuLCBvdXRfbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAorICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAgICAgYmluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgYmluX2xlbiA9IGRhdGEtPmxlbjsKICAgICBpZiAoIGJpbl9sZW4gPiA0NSApIHsKQEAgLTM1OCw5ICszNjEsMTAgQEAKICAgICB9CiAKICAgICAvKiBXZSdyZSBsYXp5IGFuZCBhbGxvY2F0ZSB0byBtdWNoIChmaXhlZCB1cCBsYXRlcikgKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDIgKyAoYmluX2xlbisyKS8zKjQpKSA9PSBOVUxMICkKKyAgICBvdXRfbGVuID0gMiArIChiaW5fbGVuICsgMikgLyAzICogNDsKKyAgICBhc2NpaV9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgb3V0X2xlbik7CisgICAgaWYgKGFzY2lpX2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNjaWlfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgLyogU3RvcmUgdGhlIGxlbmd0aCAqLwogICAgICphc2NpaV9kYXRhKysgPSAnICcgKyAoYmluX2xlbiAmIDA3Nyk7CkBAIC0zODIsMTcgKzM4NiwxMiBAQAogICAgIH0KICAgICAqYXNjaWlfZGF0YSsrID0gJ1xuJzsgICAgICAgLyogQXBwZW5kIGEgY291cnRlc3kgbmV3bGluZSAqLwogCi0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChhc2NpaV9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYXNjaWlfZGF0YSk7CiB9CiAKIAogc3RhdGljIGludAotYmluYXNjaWlfZmluZF92YWxpZCh1bnNpZ25lZCBjaGFyICpzLCBQeV9zc2l6ZV90IHNsZW4sIGludCBudW0pCitiaW5hc2NpaV9maW5kX3ZhbGlkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIFB5X3NzaXplX3Qgc2xlbiwgaW50IG51bSkKIHsKICAgICAvKiBGaW5kcyAmIHJldHVybnMgdGhlIChudW0rMSl0aAogICAgICoqIHZhbGlkIGNoYXJhY3RlciBmb3IgYmFzZTY0LCBvciAtMSBpZiBub25lLgpAQCAtNDI5LDEzICs0MjgsMTQgQEAKIGJpbmFzY2lpX2EyYl9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDYyODIyM2YxOWZkM2Y5YiBpbnB1dD01ODcyYWNmNmUxY2FjMjQzXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKmJpbl9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgaW50IGxlZnRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIHRoaXNfY2g7CiAgICAgdW5zaWduZWQgaW50IGxlZnRjaGFyID0gMDsKLSAgICBQeU9iamVjdCAqcnY7CiAgICAgUHlfc3NpemVfdCBhc2NpaV9sZW4sIGJpbl9sZW47CiAgICAgaW50IHF1YWRfcG9zID0gMDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBhc2NpaV9kYXRhID0gZGF0YS0+YnVmOwogICAgIGFzY2lpX2xlbiA9IGRhdGEtPmxlbjsKQEAgLTQ0NywxMSArNDQ3LDEyIEBACiAKICAgICBiaW5fbGVuID0gKChhc2NpaV9sZW4rMykvNCkqMzsgLyogVXBwZXIgYm91bmQsIGNvcnJlY3RlZCBsYXRlciAqLwogCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKwogICAgIC8qIEFsbG9jYXRlIHRoZSBidWZmZXIgKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJpbl9sZW4pKSA9PSBOVUxMICkKKyAgICBiaW5fZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGJpbl9sZW4pOworICAgIGlmIChiaW5fZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBiaW5fZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwotICAgIGJpbl9sZW4gPSAwOwogCiAgICAgZm9yKCA7IGFzY2lpX2xlbiA+IDA7IGFzY2lpX2xlbi0tLCBhc2NpaV9kYXRhKyspIHsKICAgICAgICAgdGhpc19jaCA9ICphc2NpaV9kYXRhOwpAQCAtNDk2LDMxICs0OTcsMTcgQEAKICAgICAgICAgaWYgKCBsZWZ0Yml0cyA+PSA4ICkgewogICAgICAgICAgICAgbGVmdGJpdHMgLT0gODsKICAgICAgICAgICAgICpiaW5fZGF0YSsrID0gKGxlZnRjaGFyID4+IGxlZnRiaXRzKSAmIDB4ZmY7Ci0gICAgICAgICAgICBiaW5fbGVuKys7CiAgICAgICAgICAgICBsZWZ0Y2hhciAmPSAoKDEgPDwgbGVmdGJpdHMpIC0gMSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobGVmdGJpdHMgIT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJJbmNvcnJlY3QgcGFkZGluZyIpOwotICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiBBbmQgc2V0IHN0cmluZyBzaXplIGNvcnJlY3RseS4gSWYgdGhlIHJlc3VsdCBzdHJpbmcgaXMgZW1wdHkKLSAgICAqKiAoYmVjYXVzZSB0aGUgaW5wdXQgd2FzIGFsbCBpbnZhbGlkKSByZXR1cm4gdGhlIHNoYXJlZCBlbXB0eQotICAgICoqIHN0cmluZyBpbnN0ZWFkOyBfUHlCeXRlc19SZXNpemUoKSB3b24ndCBkbyB0aGlzIGZvciB1cy4KLSAgICAqLwotICAgIGlmIChiaW5fbGVuID4gMCkgewotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwgYmluX2xlbikgPCAwKSB7Ci0gICAgICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7Ci0gICAgICAgIHJ2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgfQotICAgIHJldHVybiBydjsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGJpbl9kYXRhKTsKIH0KIAogCkBAIC01MjgsMjQgKzUxNSwyNyBAQAogYmluYXNjaWkuYjJhX2Jhc2U2NAogCiAgICAgZGF0YTogUHlfYnVmZmVyCi0gICAgLworICAgICoKKyAgICBuZXdsaW5lOiBpbnQoY19kZWZhdWx0PSIxIikgPSBUcnVlCiAKIEJhc2U2NC1jb2RlIGxpbmUgb2YgZGF0YS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGQ5NjY2MzE3MDc3OGRjMyBpbnB1dD0xNGVjNGU0NzM3MTE3NGE5XSovCitiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgbmV3bGluZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YWQ2MmM4ZTg0ODVkM2IzIGlucHV0PTdiMmVhNmZhMzhkODkyNGNdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKLSAgICBQeV9zc2l6ZV90IGJpbl9sZW47CisgICAgUHlfc3NpemVfdCBiaW5fbGVuLCBvdXRfbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGJpbl9kYXRhID0gZGF0YS0+YnVmOwogICAgIGJpbl9sZW4gPSBkYXRhLT5sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKIAogICAgIGFzc2VydChiaW5fbGVuID49IDApOwogCkBAIC01NTUsMTEgKzU0NSwxNCBAQAogICAgIH0KIAogICAgIC8qIFdlJ3JlIGxhenkgYW5kIGFsbG9jYXRlIHRvbyBtdWNoIChmaXhlZCB1cCBsYXRlcikuCi0gICAgICAgIiszIiBsZWF2ZXMgcm9vbSBmb3IgdXAgdG8gdHdvIHBhZCBjaGFyYWN0ZXJzIGFuZCBhIHRyYWlsaW5nCi0gICAgICAgbmV3bGluZS4gIE5vdGUgdGhhdCAnYicgZ2V0cyBlbmNvZGVkIGFzICdZZz09XG4nICgxIGluLCA1IG91dCkuICovCi0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBiaW5fbGVuKjIgKyAzKSkgPT0gTlVMTCApCisgICAgICAgIisyIiBsZWF2ZXMgcm9vbSBmb3IgdXAgdG8gdHdvIHBhZCBjaGFyYWN0ZXJzLgorICAgICAgIE5vdGUgdGhhdCAnYicgZ2V0cyBlbmNvZGVkIGFzICdZZz09XG4nICgxIGluLCA1IG91dCkuICovCisgICAgb3V0X2xlbiA9IGJpbl9sZW4qMiArIDI7CisgICAgaWYgKG5ld2xpbmUpCisgICAgICAgIG91dF9sZW4rKzsKKyAgICBhc2NpaV9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgb3V0X2xlbik7CisgICAgaWYgKGFzY2lpX2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNjaWlfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCA7IGJpbl9sZW4gPiAwIDsgYmluX2xlbi0tLCBiaW5fZGF0YSsrICkgewogICAgICAgICAvKiBTaGlmdCB0aGUgZGF0YSBpbnRvIG91ciBidWZmZXIgKi8KQEAgLTU4MSwxNCArNTc0LDEwIEBACiAgICAgICAgICphc2NpaV9kYXRhKysgPSB0YWJsZV9iMmFfYmFzZTY0WyhsZWZ0Y2hhciYweGYpIDw8IDJdOwogICAgICAgICAqYXNjaWlfZGF0YSsrID0gQkFTRTY0X1BBRDsKICAgICB9Ci0gICAgKmFzY2lpX2RhdGErKyA9ICdcbic7ICAgICAgIC8qIEFwcGVuZCBhIGNvdXJ0ZXN5IG5ld2xpbmUgKi8KKyAgICBpZiAobmV3bGluZSkKKyAgICAgICAgKmFzY2lpX2RhdGErKyA9ICdcbic7ICAgICAgIC8qIEFwcGVuZCBhIGNvdXJ0ZXN5IG5ld2xpbmUgKi8KIAotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAotICAgICAgICAgICAgICAgICAgICAgICAoYXNjaWlfZGF0YSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgfQotICAgIHJldHVybiBydjsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGFzY2lpX2RhdGEpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC02MDQsMTYgKzU5MywxOSBAQAogYmluYXNjaWlfYTJiX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDZkOGM1NGQ1NGVhMWMxIGlucHV0PTBkOTE0YzY4MGUwZWVkNTVdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKKyAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGludCBkb25lID0gMDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBhc2NpaV9kYXRhID0gZGF0YS0+YnVmOwogICAgIGxlbiA9IGRhdGEtPmxlbjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKIApAQCAtNjIzLDkgKzYxNSw5IEBACiAgICAgLyogQWxsb2NhdGUgYSBzdHJpbmcgdGhhdCBpcyB0b28gYmlnIChmaXhlZCBsYXRlcikKICAgICAgICBBZGQgdHdvIHRvIHRoZSBpbml0aWFsIGxlbmd0aCB0byBwcmV2ZW50IGludGVybmluZyB3aGljaAogICAgICAgIHdvdWxkIHByZWNsdWRlIHN1YnNlcXVlbnQgcmVzaXppbmcuICAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKzIpKSA9PSBOVUxMICkKKyAgICBiaW5fZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbiArIDIpOworICAgIGlmIChiaW5fZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBiaW5fZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCA7IGxlbiA+IDAgOyBsZW4tLSwgYXNjaWlfZGF0YSsrICkgewogICAgICAgICAvKiBHZXQgdGhlIGJ5dGUgYW5kIGxvb2sgaXQgdXAgKi8KQEAgLTYzNCw3ICs2MjYsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICggdGhpc19jaCA9PSBGQUlMICkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSWxsZWdhbCBjaGFyIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICAgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICggdGhpc19jaCA9PSBET05FICkgewpAQCAtNjU2LDIxICs2NDgsMTQgQEAKICAgICBpZiAoIGxlZnRiaXRzICYmICFkb25lICkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoSW5jb21wbGV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICJTdHJpbmcgaGFzIGluY29tcGxldGUgbnVtYmVyIG9mIGJ5dGVzIik7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGJpbl9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgaWYgKHJ2KSB7Ci0gICAgICAgIFB5T2JqZWN0ICpycnYgPSBQeV9CdWlsZFZhbHVlKCJPaSIsIHJ2LCBkb25lKTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgcmV0dXJuIHJydjsKLSAgICB9CiAKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYmluX2RhdGEpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5pIiwgcmVzLCBkb25lKTsKIH0KIAogCkBAIC02ODcsMTEgKzY3MiwxMyBAQAogYmluYXNjaWlfcmxlY29kZV9ocXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzkzZDc5MzM4ZjVmNTYyOSBpbnB1dD1lMWYxNzEyNDQ3YTgyYjA5XSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqaW5fZGF0YSwgKm91dF9kYXRhOwotICAgIFB5T2JqZWN0ICpydjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKm91dF9kYXRhOwogICAgIHVuc2lnbmVkIGNoYXIgY2g7CiAgICAgUHlfc3NpemVfdCBpbiwgaW5lbmQsIGxlbjsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogICAgIGluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgbGVuID0gZGF0YS0+bGVuOwogCkBAIC03MDEsOSArNjg4LDkgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICAvKiBXb3JzdCBjYXNlOiBvdXRwdXQgaXMgdHdpY2UgYXMgYmlnIGFzIGlucHV0IChmaXhlZCBsYXRlcikgKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbioyKzIpKSA9PSBOVUxMICkKKyAgICBvdXRfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbiAqIDIgKyAyKTsKKyAgICBpZiAob3V0X2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgb3V0X2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKIAogICAgIGZvciggaW49MDsgaW48bGVuOyBpbisrKSB7CiAgICAgICAgIGNoID0gaW5fZGF0YVtpbl07CkBAIC03MjksMTIgKzcxNiw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChvdXRfZGF0YSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgfQotICAgIHJldHVybiBydjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgb3V0X2RhdGEpOwogfQogCiAKQEAgLTc1MSwxNSArNzM0LDE3IEBACiBiaW5hc2NpaV9iMmFfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQwYWE1YTcwNGJjOWY3ZGUgaW5wdXQ9OTU5NmViZTAxOWZlMTJiYV0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OwogICAgIFB5X3NzaXplX3QgbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGJpbl9kYXRhID0gZGF0YS0+YnVmOwogICAgIGxlbiA9IGRhdGEtPmxlbjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKIApAQCAtNzY3LDkgKzc1Miw5IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgLyogQWxsb2NhdGUgYSBidWZmZXIgdGhhdCBpcyBhdCBsZWFzdCBsYXJnZSBlbm91Z2ggKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbioyKzIpKSA9PSBOVUxMICkKKyAgICBhc2NpaV9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuICogMiArIDIpOworICAgIGlmIChhc2NpaV9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzY2lpX2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKIAogICAgIGZvciggOyBsZW4gPiAwIDsgbGVuLS0sIGJpbl9kYXRhKysgKSB7CiAgICAgICAgIC8qIFNoaWZ0IGludG8gb3VyIGJ1ZmZlciwgYW5kIG91dHB1dCBhbnkgNmJpdHMgcmVhZHkgKi8KQEAgLTc4NiwxMiArNzcxLDggQEAKICAgICAgICAgbGVmdGNoYXIgPDw9ICg2LWxlZnRiaXRzKTsKICAgICAgICAgKmFzY2lpX2RhdGErKyA9IHRhYmxlX2IyYV9ocXhbbGVmdGNoYXIgJiAweDNmXTsKICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChhc2NpaV9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBhc2NpaV9kYXRhKTsKIH0KIAogCkBAIC04MDgsMTMgKzc4OSwxNSBAQAogYmluYXNjaWlfcmxlZGVjb2RlX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODI2NjE5NTY1ZGUxYzZjIGlucHV0PTU0Y2RkNDlmYzAxNDQwMmNdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICppbl9kYXRhLCAqb3V0X2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpvdXRfZGF0YTsKICAgICB1bnNpZ25lZCBjaGFyIGluX2J5dGUsIGluX3JlcGVhdDsKLSAgICBQeU9iamVjdCAqcnY7Ci0gICAgUHlfc3NpemVfdCBpbl9sZW4sIG91dF9sZW4sIG91dF9sZW5fbGVmdDsKKyAgICBQeV9zc2l6ZV90IGluX2xlbjsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBpbl9kYXRhID0gZGF0YS0+YnVmOwogICAgIGluX2xlbiA9IGRhdGEtPmxlbjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCiAgICAgYXNzZXJ0KGluX2xlbiA+PSAwKTsKIApAQCAtODI1LDU5ICs4MDgsNDggQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICAvKiBBbGxvY2F0ZSBhIGJ1ZmZlciBvZiByZWFzb25hYmxlIHNpemUuIFJlc2l6ZWQgd2hlbiBuZWVkZWQgKi8KLSAgICBvdXRfbGVuID0gaW5fbGVuKjI7Ci0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBvdXRfbGVuKSkgPT0gTlVMTCApCisgICAgb3V0X2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBpbl9sZW4pOworICAgIGlmIChvdXRfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvdXRfbGVuX2xlZnQgPSBvdXRfbGVuOwotICAgIG91dF9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CisKKyAgICAvKiBVc2Ugb3ZlcmFsbG9jYXRpb24gKi8KKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKIAogICAgIC8qCiAgICAgKiogV2UgbmVlZCB0d28gbWFjcm9zIGhlcmUgdG8gZ2V0L3B1dCBieXRlcyBhbmQgaGFuZGxlCiAgICAgKiogZW5kLW9mLWJ1ZmZlciBmb3IgaW5wdXQgYW5kIG91dHB1dCBzdHJpbmdzLgogICAgICovCi0jZGVmaW5lIElOQllURShiKSBcCi0gICAgZG8geyBcCi0gICAgICAgICAgICAgaWYgKCAtLWluX2xlbiA8IDAgKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEluY29tcGxldGUsICIiKTsgXAotICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocnYpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCi0gICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICAgYiA9ICppbl9kYXRhKys7IFwKKyNkZWZpbmUgSU5CWVRFKGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGlmICggLS1pbl9sZW4gPCAwICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEluY29tcGxldGUsICIiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGIgPSAqaW5fZGF0YSsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlKDApCiAKLSNkZWZpbmUgT1VUQllURShiKSBcCi0gICAgZG8geyBcCi0gICAgICAgICAgICAgaWYgKCAtLW91dF9sZW5fbGVmdCA8IDAgKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgICBpZiAoIG91dF9sZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsIDIqb3V0X2xlbikgPCAwKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICB7IFB5X1hERUNSRUYocnYpOyByZXR1cm4gTlVMTDsgfSBcCi0gICAgICAgICAgICAgICAgICAgICAgb3V0X2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvdXRfbGVuOyBcCi0gICAgICAgICAgICAgICAgICAgICAgb3V0X2xlbl9sZWZ0ID0gb3V0X2xlbi0xOyBcCi0gICAgICAgICAgICAgICAgICAgICAgb3V0X2xlbiA9IG91dF9sZW4gKiAyOyBcCi0gICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICAgKm91dF9kYXRhKysgPSBiOyBcCi0gICAgfSB3aGlsZSgwKQotCi0gICAgICAgIC8qCi0gICAgICAgICoqIEhhbmRsZSBmaXJzdCBieXRlIHNlcGFyYXRlbHkgKHNpbmNlIHdlIGhhdmUgdG8gZ2V0IGFuZ3J5Ci0gICAgICAgICoqIGluIGNhc2Ugb2YgYW4gb3JwaGFuZWQgUkxFIGNvZGUpLgotICAgICAgICAqLwotICAgICAgICBJTkJZVEUoaW5fYnl0ZSk7CisgICAgLyoKKyAgICAqKiBIYW5kbGUgZmlyc3QgYnl0ZSBzZXBhcmF0ZWx5IChzaW5jZSB3ZSBoYXZlIHRvIGdldCBhbmdyeQorICAgICoqIGluIGNhc2Ugb2YgYW4gb3JwaGFuZWQgUkxFIGNvZGUpLgorICAgICovCisgICAgSU5CWVRFKGluX2J5dGUpOwogCiAgICAgaWYgKGluX2J5dGUgPT0gUlVOQ0hBUikgewogICAgICAgICBJTkJZVEUoaW5fcmVwZWF0KTsKKyAgICAgICAgLyogb25seSAxIGJ5dGUgd2lsbCBiZSB3cml0dGVuLCBidXQgMiBieXRlcyB3ZXJlIHByZWFsbG9jYXRlZDoKKyAgICAgICAgICAgc3VidHJhY3QgMSBieXRlIHRvIHByZXZlbnQgb3ZlcmFsbG9jYXRpb24gKi8KKyAgICAgICAgd3JpdGVyLm1pbl9zaXplLS07CisKICAgICAgICAgaWYgKGluX3JlcGVhdCAhPSAwKSB7CiAgICAgICAgICAgICAvKiBOb3RlIEVycm9yLCBub3QgSW5jb21wbGV0ZSAod2hpY2ggaXMgYXQgdGhlIGVuZAogICAgICAgICAgICAgKiogb2YgdGhlIHN0cmluZyBvbmx5KS4gVGhpcyBpcyBhIHByb2dyYW1tZXIgZXJyb3IuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiT3JwaGFuZWQgUkxFIGNvZGUgYXQgc3RhcnQiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihydik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgT1VUQllURShSVU5DSEFSKTsKKyAgICAgICAgKm91dF9kYXRhKysgPSBSVU5DSEFSOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIE9VVEJZVEUoaW5fYnl0ZSk7CisgICAgICAgICpvdXRfZGF0YSsrID0gaW5fYnl0ZTsKICAgICB9CiAKICAgICB3aGlsZSggaW5fbGVuID4gMCApIHsKQEAgLTg4NSwyNiArODU3LDM5IEBACiAKICAgICAgICAgaWYgKGluX2J5dGUgPT0gUlVOQ0hBUikgewogICAgICAgICAgICAgSU5CWVRFKGluX3JlcGVhdCk7CisgICAgICAgICAgICAvKiBvbmx5IDEgYnl0ZSB3aWxsIGJlIHdyaXR0ZW4sIGJ1dCAyIGJ5dGVzIHdlcmUgcHJlYWxsb2NhdGVkOgorICAgICAgICAgICAgICAgc3VidHJhY3QgMSBieXRlIHRvIHByZXZlbnQgb3ZlcmFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZS0tOworCiAgICAgICAgICAgICBpZiAoIGluX3JlcGVhdCA9PSAwICkgewogICAgICAgICAgICAgICAgIC8qIEp1c3QgYW4gZXNjYXBlZCBSVU5DSEFSIHZhbHVlICovCi0gICAgICAgICAgICAgICAgT1VUQllURShSVU5DSEFSKTsKKyAgICAgICAgICAgICAgICAqb3V0X2RhdGErKyA9IFJVTkNIQVI7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8qIFBpY2sgdXAgdmFsdWUgYW5kIG91dHB1dCBhIHNlcXVlbmNlIG9mIGl0ICovCiAgICAgICAgICAgICAgICAgaW5fYnl0ZSA9IG91dF9kYXRhWy0xXTsKKworICAgICAgICAgICAgICAgIC8qIGVubGFyZ2UgdGhlIGJ1ZmZlciBpZiBuZWVkZWQgKi8KKyAgICAgICAgICAgICAgICBpZiAoaW5fcmVwZWF0ID4gMSkgeworICAgICAgICAgICAgICAgICAgICAvKiAtMSBiZWNhdXNlIHdlIGFscmVhZHkgcHJlYWxsb2NhdGVkIDEgYnl0ZSAqLworICAgICAgICAgICAgICAgICAgICBvdXRfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgb3V0X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9yZXBlYXQgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG91dF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHdoaWxlICggLS1pbl9yZXBlYXQgPiAwICkKLSAgICAgICAgICAgICAgICAgICAgT1VUQllURShpbl9ieXRlKTsKKyAgICAgICAgICAgICAgICAgICAgKm91dF9kYXRhKysgPSBpbl9ieXRlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogTm9ybWFsIGJ5dGUgKi8KLSAgICAgICAgICAgIE9VVEJZVEUoaW5fYnl0ZSk7CisgICAgICAgICAgICAqb3V0X2RhdGErKyA9IGluX2J5dGU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChvdXRfZGF0YSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgfQotICAgIHJldHVybiBydjsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIG91dF9kYXRhKTsKKworZXJyb3I6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogCkBAIC05MjIsNyArOTA3LDcgQEAKIGJpbmFzY2lpX2NyY19ocXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIHVuc2lnbmVkIGludCBjcmMpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGVjMmE3ODU5MGQxOTE3MCBpbnB1dD1hZGQ4YzUzNzEyY2NjZWRhXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBjcmMgJj0gMHhmZmZmOwpAQCAtMTAwMCw3ICs5ODUsNyBAQAogICAgICB1c2luZyBieXRlLXN3YXAgaW5zdHJ1Y3Rpb25zLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgY3JjXzMyX3RhYlsyNTZdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBjcmNfMzJfdGFiWzI1Nl0gPSB7CiAweDAwMDAwMDAwVSwgMHg3NzA3MzA5NlUsIDB4ZWUwZTYxMmNVLCAweDk5MDk1MWJhVSwgMHgwNzZkYzQxOVUsCiAweDcwNmFmNDhmVSwgMHhlOTYzYTUzNVUsIDB4OWU2NDk1YTNVLCAweDBlZGI4ODMyVSwgMHg3OWRjYjhhNFUsCiAweGUwZDVlOTFlVSwgMHg5N2QyZDk4OFUsIDB4MDliNjRjMmJVLCAweDdlYjE3Y2JkVSwgMHhlN2I4MmQwN1UsCkBAIC0xMDczLDcgKzEwNTgsNyBAQAogI2lmZGVmIFVTRV9aTElCX0NSQzMyCiAvKiBUaGlzIHdhcyB0YWtlbiBmcm9tIHpsaWJtb2R1bGUuYyBQeVpsaWJfY3JjMzIgKGJ1dCBpcyBQWV9TU0laRV9UX0NMRUFOKSAqLwogewotICAgIEJ5dGUgKmJ1ZjsKKyAgICBjb25zdCBCeXRlICpidWY7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgaW50IHNpZ25lZF92YWw7CiAKQEAgLTEwODQsNyArMTA2OSw3IEBACiB9CiAjZWxzZSAgLyogVVNFX1pMSUJfQ1JDMzIgKi8KIHsgLyogQnkgSmltIEFobHN0cm9tOyBBbGwgcmlnaHRzIHRyYW5zZmVycmVkIHRvIENOUkkgKi8KLSAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICB1bnNpZ25lZCBpbnQgcmVzdWx0OwogCkBAIC0xMTY3LDcgKzExNTIsNyBAQAogYmluYXNjaWlfYTJiX2hleF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqaGV4c3RyKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBjYzFhMTM5YWYwZWVlY2IgaW5wdXQ9OWUxZTdmMmY5NGRiMjRmZF0qLwogewotICAgIGNoYXIqIGFyZ2J1ZjsKKyAgICBjb25zdCBjaGFyKiBhcmdidWY7CiAgICAgUHlfc3NpemVfdCBhcmdsZW47CiAgICAgUHlPYmplY3QgKnJldHZhbDsKICAgICBjaGFyKiByZXRidWY7CkBAIC0xMjI0LDcgKzEyMDksNyBAQAogICAgIHJldHVybiBiaW5hc2NpaV9hMmJfaGV4X2ltcGwobW9kdWxlLCBoZXhzdHIpOwogfQogCi1zdGF0aWMgaW50IHRhYmxlX2hleFsxMjhdID0geworc3RhdGljIGNvbnN0IGludCB0YWJsZV9oZXhbMTI4XSA9IHsKICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCiAgIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLAogICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKQEAgLTEyNTUsNyArMTI0MCw4IEBACiB7CiAgICAgUHlfc3NpemVfdCBpbiwgb3V0OwogICAgIGNoYXIgY2g7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKm9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqb2RhdGE7CiAgICAgUHlfc3NpemVfdCBkYXRhbGVuID0gMDsKICAgICBQeU9iamVjdCAqcnY7CiAKQEAgLTEzNjIsMTMgKzEzNDgsMTQgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lOTg4NDQ3MmViYjFhOTRjIGlucHV0PTdmMmE5YWFhMDA4ZTkyYjJdKi8KIHsKICAgICBQeV9zc2l6ZV90IGluLCBvdXQ7Ci0gICAgdW5zaWduZWQgY2hhciAqZGF0YWJ1ZiwgKm9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGFidWY7CisgICAgdW5zaWduZWQgY2hhciAqb2RhdGE7CiAgICAgUHlfc3NpemVfdCBkYXRhbGVuID0gMCwgb2RhdGFsZW4gPSAwOwogICAgIFB5T2JqZWN0ICpydjsKICAgICB1bnNpZ25lZCBpbnQgbGluZWxlbiA9IDA7CiAgICAgdW5zaWduZWQgY2hhciBjaDsKICAgICBpbnQgY3JsZiA9IDA7Ci0gICAgdW5zaWduZWQgY2hhciAqcDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwOwogCiAgICAgZGF0YWJ1ZiA9IGRhdGEtPmJ1ZjsKICAgICBkYXRhbGVuID0gZGF0YS0+bGVuOwpAQCAtMTM3Nyw3ICsxMzY0LDcgQEAKICAgICAvKiBYWFg6IHRoaXMgZnVuY3Rpb24gaGFzIHRoZSBzaWRlIGVmZmVjdCBvZiBjb252ZXJ0aW5nIGFsbCBvZgogICAgICAqIHRoZSBlbmQgb2YgbGluZXMgdG8gYmUgdGhlIHNhbWUgZGVwZW5kaW5nIG9uIHRoaXMgZGV0ZWN0aW9uCiAgICAgICogaGVyZSAqLwotICAgIHAgPSAodW5zaWduZWQgY2hhciAqKSBtZW1jaHIoZGF0YWJ1ZiwgJ1xuJywgZGF0YWxlbik7CisgICAgcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIG1lbWNocihkYXRhYnVmLCAnXG4nLCBkYXRhbGVuKTsKICAgICBpZiAoKHAgIT0gTlVMTCkgJiYgKHAgPiBkYXRhYnVmKSAmJiAoKihwLTEpID09ICdccicpKQogICAgICAgICBjcmxmID0gMTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaCBiL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKaW5kZXggOGE0N2ZmOC4uODRmZmQxMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaAorKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oCkBAIC0xNCw3ICsxNCw3IEBACiAicmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVW5pY29kZUVuY29kZUVycm9ycy4iKTsKIAogI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFQ09ERUNfRU5DT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfX2RvY19ffSwKKyAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlLCBNRVRIX0ZBU1RDQUxMLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX2ltcGwoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsCkBAIC0yMiwxNiArMjIsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3x6OmVuY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlucHV0OwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHo6ZW5jb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaW5wdXQsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9pbXBsKHNlbGYsIGlucHV0LCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNTAsNyArNTIsNyBAQAogImNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGlzIGFibGUgdG8gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuXCIiKTsKIAogI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFQ09ERUNfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX2ltcGwoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsCkBAIC01OCwyMiArNjAsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8ejpkZWNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBpbnB1dCA9IHtOVUxMLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8ejpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZpbnB1dCwgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX2ltcGwoc2VsZiwgJmlucHV0LCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGlucHV0ICovCi0gICAgaWYgKGlucHV0Lm9iaikKKyAgICBpZiAoaW5wdXQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaW5wdXQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04NCw3ICs4OSw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxFTkNPREVSX0VOQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfX2RvY19ffSwKKyAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZSwgTUVUSF9GQVNUQ0FMTCwgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLApAQCAtOTIsMTYgKzk3LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98aTplbmNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppbnB1dDsKICAgICBpbnQgZmluYWwgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xpOmVuY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9pbXBsKHNlbGYsIGlucHV0LCBmaW5hbCk7CiAKIGV4aXQ6CkBAIC0xMzEsNyArMTM4LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTERFQ09ERVJfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsCkBAIC0xMzksMjIgKzE0NiwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGlucHV0ID0ge05VTEwsIE5VTEx9OwogICAgIGludCBmaW5hbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpOmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9pbXBsKHNlbGYsICZpbnB1dCwgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGlucHV0ICovCi0gICAgaWYgKGlucHV0Lm9iaikKKyAgICBpZiAoaW5wdXQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaW5wdXQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xOTYsOCArMjA2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmc2l6ZW9iaikpCisgICAgICAgICZzaXplb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZF9pbXBsKHNlbGYsIHNpemVvYmopOwogCiBleGl0OgpAQCAtMjI0LDggKzIzNSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZzaXplb2JqKSkKKyAgICAgICAgJnNpemVvYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemVvYmopOwogCiBleGl0OgpAQCAtMjUyLDggKzI2NCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZXMiLAogICAgICAgICAwLCAxLAotICAgICAgICAmc2l6ZWhpbnRvYmopKQorICAgICAgICAmc2l6ZWhpbnRvYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXNfaW1wbChzZWxmLCBzaXplaGludG9iaik7CiAKIGV4aXQ6CkBAIC0zMTcsNCArMzMwLDQgQEAKIAogI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfX19DUkVBVEVfQ09ERUNfTUVUSE9EREVGICAgIFwKICAgICB7Il9fY3JlYXRlX2NvZGVjIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlYywgTUVUSF9PLCBfbXVsdGlieXRlY29kZWNfX19jcmVhdGVfY29kZWNfX2RvY19ffSwKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZWJiMjFlMThjMzA0M2QxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMzRiOWUzNmNiOTg1OTM5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKaW5kZXggM2VkODMwMy4uMWNhODEwYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKQEAgLTI1LDE0ICsyNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgwLDExICs4MiwxMyBAQAogICAgIGludCBjb21wcmVzc2xldmVsID0gOTsKIAogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmQloyQ29tcHJlc3Nvcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkNvbXByZXNzb3IiLCBrd2FyZ3MpKQorICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkNvbXByZXNzb3IiLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpCWjJDb21wcmVzc29yIiwKLSAgICAgICAgJmNvbXByZXNzbGV2ZWwpKQorICAgICAgICAmY29tcHJlc3NsZXZlbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkNvbXByZXNzb3JfX19pbml0X19faW1wbCgoQloyQ29tcHJlc3NvciAqKXNlbGYsIGNvbXByZXNzbGV2ZWwpOwogCiBleGl0OgpAQCAtMTExLDI5ICsxMTUsMzIgQEAKICJ0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOwogCiAjZGVmaW5lIF9CWjJfQloyREVDT01QUkVTU09SX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxuOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmbWF4X2xlbmd0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbWF4X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1NSwxNCArMTYyLDE2IEBACiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwogCiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZCWjJEZWNvbXByZXNzb3JfVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIkJaMkRlY29tcHJlc3NvciIsIGFyZ3MpKQorICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiQloyRGVjb21wcmVzc29yIiwgYXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJkJaMkRlY29tcHJlc3Nvcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkRlY29tcHJlc3NvciIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyRGVjb21wcmVzc29yIiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoKEJaMkRlY29tcHJlc3NvciAqKXNlbGYpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVmMjliNzZiMzMxNGZjNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2U1N2FmMGIzNjhkM2U1NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCmluZGV4IGFmMDZjNmQuLjA1NjI4N2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCkBAIC0zMyw4ICszMyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbG9va3VwX2ltcGwobW9kdWxlLCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC01NCwyNCArNTUsMjYgQEAKICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLiIpOwogCiAjZGVmaW5lIF9DT0RFQ1NfRU5DT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfY29kZWNzX2VuY29kZV9fZG9jX199LAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZW5jb2RlLCBNRVRIX0ZBU1RDQUxMLCBfY29kZWNzX2VuY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9jb2RlY3NfZW5jb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2NvZGVjc19lbmNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzczplbmNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNzOmVuY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZW5jb2RlX2ltcGwobW9kdWxlLCBvYmosIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTEsMjQgKzk0LDI2IEBACiAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKIAogI2RlZmluZSBfQ09ERUNTX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2NvZGVjc19kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgX2NvZGVjc19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfZGVjb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fY29kZWNzX2RlY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19jb2RlY3NfZGVjb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib2JqIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c3M6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzczpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2RlY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTEzMyw4ICsxMzgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOl9mb3JnZXRfY29kZWMiLCAmZW5jb2RpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpfZm9yZ2V0X2NvZGVjIiwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKG1vZHVsZSwgZW5jb2RpbmcpOwogCiBleGl0OgpAQCAtMTYxLDE0ICsxNjcsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OmVzY2FwZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZXNjYXBlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTkzLDggKzIwMSw5IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8ejplc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgJlB5Qnl0ZXNfVHlwZSwgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmUHlCeXRlc19UeXBlLCAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VzY2FwZV9lbmNvZGVfaW1wbChtb2R1bGUsIGRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0yMjEsOCArMjMwLDkgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9kZWNvZGUiLAotICAgICAgICAmb2JqLCAmZXJyb3JzKSkKKyAgICAgICAgJm9iaiwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX2ltcGwobW9kdWxlLCBvYmosIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0yNTAsMTQgKzI2MCwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl83X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzdfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjgzLDE0ICsyOTUsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfOF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl84X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMxNiwxNCArMzMwLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM0OSwxNCArMzY1LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2xlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM4MiwxNCArNDAwLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2JlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQxNywxNCArNDM3LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8xNl9leF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGJ5dGVvcmRlciwgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ1MCwxNCArNDcyLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ4MywxNCArNTA3LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2xlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTUxNiwxNCArNTQyLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2JlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU1MSwxNCArNTc5LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8zMl9leF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9leF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGJ5dGVvcmRlciwgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU4MywxNCArNjEzLDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejp1bmljb2RlX2VzY2FwZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02MTUsMTQgKzY0NywxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02NDcsMTQgKzY4MSwxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHo6bGF0aW5fMV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbGF0aW5fMV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTY3OSwxNCArNzE1LDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ejphc2NpaV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfYXNjaWlfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03MTIsMTkgKzc1MCwyMSBAQAogICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ek86Y2hhcm1hcF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJm1hcHBpbmcpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJm1hcHBpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgbWFwcGluZyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jaWYgZGVmaW5lZChIQVZFX01CQ1MpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19tYmNzX2RlY29kZV9fZG9jX18sCiAibWJjc19kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgpAQCAtNzQ3LDIxICs3ODcsNjIgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTptYmNzX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbWJjc19kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX29lbV9kZWNvZGVfX2RvY19fLAorIm9lbV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7Im9lbV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19vZW1fZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3Nfb2VtX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZGVjb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZGVjb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6b2VtX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19vZW1fZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGVfX2RvY19fLAogImNvZGVfcGFnZV9kZWNvZGUoJG1vZHVsZSwgY29kZXBhZ2UsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKQEAgLTc4NSwxOSArODY2LDIxIEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqfHppOmNvZGVfcGFnZV9kZWNvZGUiLAotICAgICAgICAmY29kZXBhZ2UsICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmY29kZXBhZ2UsICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX2ltcGwobW9kdWxlLCBjb2RlcGFnZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfX2RvY19fLAogInJlYWRidWZmZXJfZW5jb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgpAQCAtODE5LDE0ICs5MDIsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnJlYWRidWZmZXJfZW5jb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04NTEsOCArOTM2LDkgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAotICAgICAgICAmb2JqLCAmZXJyb3JzKSkKKyAgICAgICAgJm9iaiwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZW5jb2RlX2ltcGwobW9kdWxlLCBvYmosIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC04NzgsOSArOTY0LDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzdfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzdfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl83X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTA2LDkgKzk5MywxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl84X2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl84X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTkzNSw5ICsxMDIzLDEwIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBpbnQgYnl0ZW9yZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMTZfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHppOnV0Zl8xNl9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIGJ5dGVvcmRlcik7CiAKIGV4aXQ6CkBAIC05NjMsOSArMTA1MiwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8xNl9sZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfMTZfbGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTk5MSw5ICsxMDgxLDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzE2X2JlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl8xNl9iZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTAyMCw5ICsxMTExLDEwIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBpbnQgYnl0ZW9yZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMzJfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHppOnV0Zl8zMl9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIGJ5dGVvcmRlcik7CiAKIGV4aXQ6CkBAIC0xMDQ4LDkgKzExNDAsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfbGVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzMyX2xlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMDc2LDkgKzExNjksMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfYmVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzMyX2JlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTA0LDkgKzExOTgsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2VzY2FwZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1bmljb2RlX2VzY2FwZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTMyLDkgKzEyMjcsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejpyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTYwLDkgKzEyNTYsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejpsYXRpbl8xX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OmxhdGluXzFfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xhdGluXzFfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTg4LDkgKzEyODUsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejphc2NpaV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejphc2NpaV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfYXNjaWlfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMjE3LDkgKzEzMTUsMTAgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6TzpjaGFybWFwX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMsICZtYXBwaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ek86Y2hhcm1hcF9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmbWFwcGluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgbWFwcGluZyk7CiAKIGV4aXQ6CkBAIC0xMjQzLDE1ICsxMzQyLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1hcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpjaGFybWFwX2J1aWxkIiwgJm1hcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmNoYXJtYXBfYnVpbGQiLCAmbWFwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY2hhcm1hcF9idWlsZF9pbXBsKG1vZHVsZSwgbWFwKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jaWYgZGVmaW5lZChIQVZFX01CQ1MpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19tYmNzX2VuY29kZV9fZG9jX18sCiAibWJjc19lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKQEAgLTEyNzEsMTggKzEzNzEsNTEgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejptYmNzX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6Om1iY3NfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX21iY3NfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3Nfb2VtX2VuY29kZV9fZG9jX18sCisib2VtX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7Im9lbV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19vZW1fZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3Nfb2VtX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3Nfb2VtX2VuY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejpvZW1fZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX29lbV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX19kb2NfXywKICJjb2RlX3BhZ2VfZW5jb2RlKCRtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKQEAgLTEzMDQsMTYgKzE0MzcsMTcgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfHo6Y29kZV9wYWdlX2VuY29kZSIsCi0gICAgICAgICZjb2RlX3BhZ2UsICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaVV8ejpjb2RlX3BhZ2VfZW5jb2RlIiwKKyAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX19kb2NfXywKICJyZWdpc3Rlcl9lcnJvcigkbW9kdWxlLCBlcnJvcnMsIGhhbmRsZXIsIC8pXG4iCkBAIC0xMzQwLDggKzE0NzQsOSBAQAogICAgIFB5T2JqZWN0ICpoYW5kbGVyOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTzpyZWdpc3Rlcl9lcnJvciIsCi0gICAgICAgICZlcnJvcnMsICZoYW5kbGVyKSkKKyAgICAgICAgJmVycm9ycywgJmhhbmRsZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9pbXBsKG1vZHVsZSwgZXJyb3JzLCBoYW5kbGVyKTsKIAogZXhpdDoKQEAgLTEzNjksOCArMTUwNCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXBfZXJyb3IiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmxvb2t1cF9lcnJvciIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbG9va3VwX2Vycm9yX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTEzODEsNiArMTUxNywxMCBAQAogICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRikgKi8KIAorI2lmbmRlZiBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19PRU1fREVDT0RFX01FVEhPRERFRikgKi8KKwogI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRikgKi8KQEAgLTEzODksNyArMTUyOSwxMSBAQAogICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRikgKi8KIAorI2lmbmRlZiBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19PRU1fRU5DT0RFX01FVEhPRERFRikgKi8KKwogI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MmZlZDk0ZTJhYjc2NWJhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZDZhZmNhYmRlMTBlZDc5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCmluZGV4IGEzYzM3MWMuLjQxMmM2ZmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2NyeXB0bW9kdWxlLmMuaApAQCAtMjcsMTEgKzI3LDEyIEBACiAgICAgY29uc3QgY2hhciAqc2FsdDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3M6Y3J5cHQiLAotICAgICAgICAmd29yZCwgJnNhbHQpKQorICAgICAgICAmd29yZCwgJnNhbHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY3J5cHRfY3J5cHRfaW1wbChtb2R1bGUsIHdvcmQsIHNhbHQpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTA0OTNhOTY5MTUzNzY5MCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGRmYzg4MjY0ZTY2MmRmNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCmluZGV4IDVlMTE3NDIuLjYyZmYxYzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCkBAIC00MCwyMiArNDAsMjYgQEAKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86YWRkY2giLCAmY2gpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmFkZGNoIiwgJmNoKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sOmFkZGNoIiwgJmNoLCAmYXR0cikpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sOmFkZGNoIiwgJmNoLCAmYXR0cikpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTzphZGRjaCIsICZ5LCAmeCwgJmNoKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPOmFkZGNoIiwgJnksICZ4LCAmY2gpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ3JvdXBfbGVmdF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpT2w6YWRkY2giLCAmeSwgJngsICZjaCwgJmF0dHIpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU9sOmFkZGNoIiwgJnksICZ4LCAmY2gsICZhdHRyKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwogICAgICAgICAgICAgZ3JvdXBfbGVmdF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjgsNCArNzIsNCBAQAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MmIxZTcwOTU3N2YzZWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzZmZjNWY4ZDc5Y2JmYmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKaW5kZXggNjg4YzkwMy4uZGNiOTkyYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oCkBAIC0xNCwyNCArMTQsMjYgQEAKICJJZiBubyB0eiBpcyBzcGVjaWZpZWQsIHVzZXMgbG9jYWwgdGltZXpvbmUuIik7CiAKICNkZWZpbmUgREFURVRJTUVfREFURVRJTUVfTk9XX01FVEhPRERFRiAgICBcCi0gICAgeyJub3ciLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfZGF0ZXRpbWVfbm93LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU3xNRVRIX0NMQVNTLCBkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19ffSwKKyAgICB7Im5vdyIsIChQeUNGdW5jdGlvbilkYXRldGltZV9kYXRldGltZV9ub3csIE1FVEhfRkFTVENBTEx8TUVUSF9DTEFTUywgZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp0eik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9kYXRldGltZV9ub3coUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2RhdGV0aW1lX2RhdGV0aW1lX25vdyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86bm93IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdHogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86bm93IiwgX2tleXdvcmRzLAotICAgICAgICAmdHopKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdHopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X2ltcGwodHlwZSwgdHopOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2Y0NWM2NzBkNmU0OTUzYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGFhYWMwNzA1YWRkNjFjYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCmluZGV4IDQ5Y2JjZWIuLjA2Y2Y3ZTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCkBAIC02MCw4ICs2MCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI3xPOmdldCIsCi0gICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZGJtX2RibV9nZXRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtOTMsOCArOTQsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpzZXRkZWZhdWx0IiwKLSAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9kYm1fZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMTMxLDExICsxMzMsMTIgQEAKICAgICBpbnQgbW9kZSA9IDQzODsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKLSAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkKKyAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGRibW9wZW5faW1wbChtb2R1bGUsIGZpbGVuYW1lLCBmbGFncywgbW9kZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZmYxMmYxNjhjZGY4YjQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OWFkZjk2NmVmMDQ3NWZmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCmluZGV4IDg2YjRjNGMuLjFiMzA5Y2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2VsZW1lbnR0cmVlLmMuaApAQCAtMTksOCArMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfaW1wbChzZWxmLCBzdWJlbGVtZW50KTsKIAogZXhpdDoKQEAgLTg3LDggKzg4LDkgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zaXplb2ZfX19pbXBsKHNlbGYpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMzQsMjMgKzEzNiwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORF9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kLCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzpmaW5kIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86ZmluZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTE2Myw3ICsxNjcsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORFRFWFRfTUVUSE9EREVGICAgIFwKLSAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19ffSwKKyAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKQEAgLTE3MSwxNyArMTc1LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE9POmZpbmR0ZXh0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPTzpmaW5kdGV4dCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChzZWxmLCBwYXRoLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTE5NCwyMyArMjAwLDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EQUxMX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX19kb2NfX30sCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOmZpbmRhbGwiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXRoOwogICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpmaW5kYWxsIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOwogCiBleGl0OgpAQCAtMjIzLDIzICsyMzEsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJGSU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX19kb2NfX30sCisgICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZCwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzppdGVyZmluZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOml0ZXJmaW5kIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTI1MiwyMyArMjYyLDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfX2RvY19ffSwKKyAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2dldChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzpnZXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICprZXk7CiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmdldCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMjk4LDIxICszMTAsMjMgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJfTUVUSE9EREVGICAgIFwKLSAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKKyAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InRhZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InRhZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOml0ZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0YWcgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86aXRlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJnRhZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0YWcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9pbXBsKHNlbGYsIHRhZyk7CiAKIGV4aXQ6CkBAIC0zNTYsOCArMzcwLDkgQEAKICAgICBQeU9iamVjdCAqc3ViZWxlbWVudDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk8hOmluc2VydCIsCi0gICAgICAgICZpbmRleCwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKQorICAgICAgICAmaW5kZXgsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydF9pbXBsKHNlbGYsIGluZGV4LCBzdWJlbGVtZW50KTsKIAogZXhpdDoKQEAgLTQxOSw4ICs0MzQsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibWFrZWVsZW1lbnQiLAogICAgICAgICAyLCAyLAotICAgICAgICAmdGFnLCAmYXR0cmliKSkKKyAgICAgICAgJnRhZywgJmF0dHJpYikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9tYWtlZWxlbWVudF9pbXBsKHNlbGYsIHRhZywgYXR0cmliKTsKIAogZXhpdDoKQEAgLTQ0NCw4ICs0NjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITpyZW1vdmUiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITpyZW1vdmUiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmVfaW1wbChzZWxmLCBzdWJlbGVtZW50KTsKIAogZXhpdDoKQEAgLTQ3Myw4ICs0OTAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0IiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJmtleSwgJnZhbHVlKSkKKyAgICAgICAgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X3NldF9pbXBsKHNlbGYsIGtleSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDg5LDEyICs1MDcsMTQgQEAKIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZWxlbWVudF9mYWN0b3J5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZWxlbWVudF9mYWN0b3J5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86VHJlZUJ1aWxkZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86VHJlZUJ1aWxkZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbGVtZW50X2ZhY3RvcnkpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmVsZW1lbnRfZmFjdG9yeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfX19pbml0X19faW1wbCgoVHJlZUJ1aWxkZXJPYmplY3QgKilzZWxmLCBlbGVtZW50X2ZhY3RvcnkpOwogCiBleGl0OgpAQCAtNTU1LDggKzU3NSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdGFydCIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZ0YWcsICZhdHRycykpCisgICAgICAgICZ0YWcsICZhdHRycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfaW1wbChzZWxmLCB0YWcsIGF0dHJzKTsKIAogZXhpdDoKQEAgLTU3MSwxNCArNTkyLDE2IEBACiBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9PejpYTUxQYXJzZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpodG1sID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T096OlhNTFBhcnNlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmaHRtbCwgJnRhcmdldCwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX19pbml0X19faW1wbCgoWE1MUGFyc2VyT2JqZWN0ICopc2VsZiwgaHRtbCwgdGFyZ2V0LCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC02NDAsOCArNjYzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRvY3R5cGUiLAogICAgICAgICAzLCAzLAotICAgICAgICAmbmFtZSwgJnB1YmlkLCAmc3lzdGVtKSkKKyAgICAgICAgJm5hbWUsICZwdWJpZCwgJnN5c3RlbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfaW1wbChzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKTsKIAogZXhpdDoKQEAgLTY2OCwxMiArNjkyLDE0IEBACiAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZTsKICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86X3NldGV2ZW50cyIsCi0gICAgICAgICZQeUxpc3RfVHlwZSwgJmV2ZW50c19xdWV1ZSwgJmV2ZW50c190b19yZXBvcnQpKQorICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIl9zZXRldmVudHMiLAorICAgICAgICAxLCAyLAorICAgICAgICAmZXZlbnRzX3F1ZXVlLCAmZXZlbnRzX3RvX3JlcG9ydCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfaW1wbChzZWxmLCBldmVudHNfcXVldWUsIGV2ZW50c190b19yZXBvcnQpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjViOGJmN2U3ZjIxNTFjYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjRhNTcxYTk4Y2VkMzE2MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmgKaW5kZXggMmQ4N2NmYy4uZmRkNTg5YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2dkYm1tb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaApAQCAtMjMsOCArMjMsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX2dldF9pbXBsKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01Myw4ICs1NCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRkZWZhdWx0IiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMTQ3LDggKzE0OSw5IEBACiAgICAgY29uc3QgY2hhciAqa2V5OwogICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bmV4dGtleSIsICZrZXksICZrZXlfbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOm5leHRrZXkiLCAma2V5LCAma2V5X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX25leHRrZXlfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgpOwogCiBleGl0OgpAQCAtMjQyLDExICsyNDUsMTIgQEAKICAgICBpbnQgbW9kZSA9IDQzODsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKLSAgICAgICAgJm5hbWUsICZmbGFncywgJm1vZGUpKQorICAgICAgICAmbmFtZSwgJmZsYWdzLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkYm1vcGVuX2ltcGwobW9kdWxlLCBuYW1lLCBmbGFncywgbW9kZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YWM3YTg5ODU4YTk3NjVmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZDBmNWQ0ZTNkNzliODBjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19oYXNob3BlbnNzbC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9faGFzaG9wZW5zc2wuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NDUzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9faGFzaG9wZW5zc2wuYy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+IDB4MTAxMDAwMDBMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0NSWVBUKSAmJiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikpCisKK1B5RG9jX1NUUlZBUihfaGFzaGxpYl9zY3J5cHRfX2RvY19fLAorInNjcnlwdCgkbW9kdWxlLCAvLCBwYXNzd29yZCwgKiwgc2FsdD1Ob25lLCBuPU5vbmUsIHI9Tm9uZSwgcD1Ob25lLFxuIgorIiAgICAgICBtYXhtZW09MCwgZGtsZW49NjQpXG4iCisiLS1cbiIKKyJcbiIKKyJzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uIik7CisKKyNkZWZpbmUgX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRiAgICBcCisgICAgeyJzY3J5cHQiLCAoUHlDRnVuY3Rpb24pX2hhc2hsaWJfc2NyeXB0LCBNRVRIX0ZBU1RDQUxMLCBfaGFzaGxpYl9zY3J5cHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19oYXNobGliX3NjcnlwdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqcGFzc3dvcmQsIFB5X2J1ZmZlciAqc2FsdCwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuX29iaiwgUHlPYmplY3QgKnJfb2JqLCBQeU9iamVjdCAqcF9vYmosCisgICAgICAgICAgICAgICAgICAgICBsb25nIG1heG1lbSwgbG9uZyBka2xlbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaGFzaGxpYl9zY3J5cHQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXNzd29yZCIsICJzYWx0IiwgIm4iLCAiciIsICJwIiwgIm1heG1lbSIsICJka2xlbiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfCR5Kk8hTyFPIWxsOnNjcnlwdCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlfYnVmZmVyIHBhc3N3b3JkID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBzYWx0ID0ge05VTEwsIE5VTEx9OworICAgIFB5T2JqZWN0ICpuX29iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnJfb2JqID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcF9vYmogPSBQeV9Ob25lOworICAgIGxvbmcgbWF4bWVtID0gMDsKKyAgICBsb25nIGRrbGVuID0gNjQ7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhc3N3b3JkLCAmc2FsdCwgJlB5TG9uZ19UeXBlLCAmbl9vYmosICZQeUxvbmdfVHlwZSwgJnJfb2JqLCAmUHlMb25nX1R5cGUsICZwX29iaiwgJm1heG1lbSwgJmRrbGVuKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9oYXNobGliX3NjcnlwdF9pbXBsKG1vZHVsZSwgJnBhc3N3b3JkLCAmc2FsdCwgbl9vYmosIHJfb2JqLCBwX29iaiwgbWF4bWVtLCBka2xlbik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGFzc3dvcmQgKi8KKyAgICBpZiAocGFzc3dvcmQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFzc3dvcmQpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBzYWx0ICovCisgICAgaWYgKHNhbHQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2FsdCk7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID4gMHgxMDEwMDAwMEwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TQ1JZUFQpICYmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKSkgKi8KKworI2lmbmRlZiBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMThjZDcwMzZmYTBmYjUyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaAppbmRleCBmOGQzOGVhLi45ZTYwNzU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCkBAIC0yNSwxNCArMjUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTc5LDI5ICs4MSwzMiBAQAogInRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuIik7CiAKICNkZWZpbmUgX0xaTUFfTFpNQURFQ09NUFJFU1NPUl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzKERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGggPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMzcsMTQgKzE0MiwxNiBAQAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZm9ybWF0IiwgIm1lbWxpbWl0IiwgImZpbHRlcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmb3JtYXQiLCAibWVtbGltaXQiLCAiZmlsdGVycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpT086TFpNQURlY29tcHJlc3NvciIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZvcm1hdCA9IEZPUk1BVF9BVVRPOwogICAgIFB5T2JqZWN0ICptZW1saW1pdCA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKmZpbHRlcnMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlPTzpMWk1BRGVjb21wcmVzc29yIiwgX2tleXdvcmRzLAotICAgICAgICAmZm9ybWF0LCAmbWVtbGltaXQsICZmaWx0ZXJzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZmb3JtYXQsICZtZW1saW1pdCwgJmZpbHRlcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChEZWNvbXByZXNzb3IgKilzZWxmLCBmb3JtYXQsIG1lbWxpbWl0LCBmaWx0ZXJzKTsKIAogZXhpdDoKQEAgLTE3MSw4ICsxNzgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaGVja19pZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc19jaGVja19zdXBwb3J0ZWQiLCAmY2hlY2tfaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc19jaGVja19zdXBwb3J0ZWQiLCAmY2hlY2tfaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkX2ltcGwobW9kdWxlLCBjaGVja19pZCk7CiAKIGV4aXQ6CkBAIC0xOTksOCArMjA3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBsem1hX2ZpbHRlciBmaWx0ZXIgPSB7TFpNQV9WTElfVU5LTk9XTiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCBsem1hX2ZpbHRlcl9jb252ZXJ0ZXIsICZmaWx0ZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIGx6bWFfZmlsdGVyX2NvbnZlcnRlciwgJmZpbHRlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwobW9kdWxlLCBmaWx0ZXIpOwogCiBleGl0OgpAQCAtMjM0LDE1ICsyNDMsMTcgQEAKICAgICBQeV9idWZmZXIgZW5jb2RlZF9wcm9wcyA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ5KjpfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwKLSAgICAgICAgbHptYV92bGlfY29udmVydGVyLCAmZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcykpCisgICAgICAgIGx6bWFfdmxpX2NvbnZlcnRlciwgJmZpbHRlcl9pZCwgJmVuY29kZWRfcHJvcHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKG1vZHVsZSwgZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZW5jb2RlZF9wcm9wcyAqLwotICAgIGlmIChlbmNvZGVkX3Byb3BzLm9iaikKKyAgICBpZiAoZW5jb2RlZF9wcm9wcy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZlbmNvZGVkX3Byb3BzKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZhZGEwNjAyMGZkMzE4Y2MgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYyN2FiYWU0NjAxMjI3MDYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX29wY29kZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaAppbmRleCBhNWY2NDQyLi41MTNjYmZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaApAQCAtMjMsMTQgKzIzLDE2IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml8TzpzdGFja19lZmZlY3QiLAotICAgICAgICAmb3Bjb2RlLCAmb3BhcmcpKQorICAgICAgICAmb3Bjb2RlLCAmb3BhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwobW9kdWxlLCBvcGNvZGUsIG9wYXJnKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTg0ZDZkZTE0MDMwM2QxMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGQ5MWM2YTc2NTA5Nzg1MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaCBiL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCmluZGV4IGJkMTJkMmEuLjlhZDRjMzcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCkBAIC01Myw4ICs1Myw5IEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9waWNrbGVfUGlja2xlcl9fX3NpemVvZl9fX2ltcGwoc2VsZik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTkyLDE0ICs5MywxNiBAQAogX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98T3A6UGlja2xlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmZpbGU7CiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPcDpQaWNrbGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKChQaWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKIAogZXhpdDoKQEAgLTIxMiw4ICsyMTUsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZmluZF9jbGFzcyIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZtb2R1bGVfbmFtZSwgJmdsb2JhbF9uYW1lKSkKKyAgICAgICAgJm1vZHVsZV9uYW1lLCAmZ2xvYmFsX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19pbXBsKHNlbGYsIG1vZHVsZV9uYW1lLCBnbG9iYWxfbmFtZSk7CiAKIGV4aXQ6CkBAIC0yMzksOCArMjQzLDkgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfX19zaXplb2ZfX19pbXBsKHNlbGYpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yODEsMTUgKzI4NiwxNyBAQAogX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfCRwc3M6VW5waWNrbGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpVbnBpY2tsZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X19faW1wbCgoVW5waWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgZml4X2ltcG9ydHMsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMzc3LDI1ICszODQsMjcgQEAKICIyLCBzbyB0aGF0IHRoZSBwaWNrbGUgZGF0YSBzdHJlYW0gaXMgcmVhZGFibGUgd2l0aCBQeXRob24gMi4iKTsKIAogI2RlZmluZSBfUElDS0xFX0RVTVBfTUVUSE9EREVGICAgIFwKLSAgICB7ImR1bXAiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9kdW1wX19kb2NfX30sCisgICAgeyJkdW1wIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcCwgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9kdW1wX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2R1bXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfZHVtcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib2JqIiwgImZpbGUiLCAicHJvdG9jb2wiLCAiZml4X2ltcG9ydHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZmlsZSIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PfE8kcDpkdW1wIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIFB5T2JqZWN0ICpwcm90b2NvbCA9IE5VTEw7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfE8kcDpkdW1wIiwgX2tleXdvcmRzLAotICAgICAgICAmb2JqLCAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb2JqLCAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9kdW1wX2ltcGwobW9kdWxlLCBvYmosIGZpbGUsIHByb3RvY29sLCBmaXhfaW1wb3J0cyk7CiAKIGV4aXQ6CkBAIC00MjEsMjQgKzQzMCwyNiBAQAogIlB5dGhvbiAyLCBzbyB0aGF0IHRoZSBwaWNrbGUgZGF0YSBzdHJlYW0gaXMgcmVhZGFibGUgd2l0aCBQeXRob24gMi4iKTsKIAogI2RlZmluZSBfUElDS0xFX0RVTVBTX01FVEhPRERFRiAgICBcCi0gICAgeyJkdW1wcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2R1bXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9kdW1wc19fZG9jX199LAorICAgIHsiZHVtcHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wcywgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9kdW1wc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9kdW1wc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpwcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICBpbnQgZml4X2ltcG9ydHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfZHVtcHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im9iaiIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TyRwOmR1bXBzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5T2JqZWN0ICpwcm90b2NvbCA9IE5VTEw7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TyRwOmR1bXBzIiwgX2tleXdvcmRzLAotICAgICAgICAmb2JqLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvYmosICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfZHVtcHNfaW1wbChtb2R1bGUsIG9iaiwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKIAogZXhpdDoKQEAgLTQ3NSwyNSArNDg2LDI3IEBACiAic3RyaW5nIGluc3RhbmNlcyBhcyBieXRlcyBvYmplY3RzLiIpOwogCiAjZGVmaW5lIF9QSUNLTEVfTE9BRF9NRVRIT0RERUYgICAgXAotICAgIHsibG9hZCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2xvYWRfX2RvY19ffSwKKyAgICB7ImxvYWQiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkLCBNRVRIX0ZBU1RDQUxMLCBfcGlja2xlX2xvYWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9waWNrbGVfbG9hZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfbG9hZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98JHBzczpsb2FkIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpsb2FkIiwgX2tleXdvcmRzLAotICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9sb2FkX2ltcGwobW9kdWxlLCBmaWxlLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC01MjEsMjggKzUzNCwzMCBAQAogInN0cmluZyBpbnN0YW5jZXMgYXMgYnl0ZXMgb2JqZWN0cy4iKTsKIAogI2RlZmluZSBfUElDS0xFX0xPQURTX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9sb2Fkc19fZG9jX199LAorICAgIHsibG9hZHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkcywgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9sb2Fkc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2Fkc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZml4X2ltcG9ydHMsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2xvYWRzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3BpY2tsZV9sb2FkcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98JHBzczpsb2FkcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmRhdGE7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9ICJBU0NJSSI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gInN0cmljdCI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6bG9hZHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRzX2ltcGwobW9kdWxlLCBkYXRhLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MzY1N2U1NWQ2YTc0OGFmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MmJlMTM3YjNjMDljYjlmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19zcmUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKaW5kZXggMzI4MTcxNy4uMDYxMjAwNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKQEAgLTIwLDggKzIwLDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX2dldGNvZGVzaXplX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDgsMTEgKzQ5LDEzIEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOmdldGxvd2VyIiwKLSAgICAgICAgJmNoYXJhY3RlciwgJmZsYWdzKSkKKyAgICAgICAgJmNoYXJhY3RlciwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX2dldGxvd2VyX2ltcGwobW9kdWxlLCBjaGFyYWN0ZXIsIGZsYWdzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjYsNyArNjksNyBAQAogIk1hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fTUFUQ0hfTUVUSE9EREVGICAgIFwKLSAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX19kb2NfX30sCisgICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX21hdGNoLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKQEAgLTc0LDE4ICs3NywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX21hdGNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzptYXRjaCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOm1hdGNoIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKIAogZXhpdDoKQEAgLTEwMCw3ICsxMDUsNyBAQAogIk1hdGNoZXMgYWdhaW5zdCBhbGwgb2YgdGhlIHN0cmluZyIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRlVMTE1BVENIX01FVEhPRERFRiAgICBcCi0gICAgeyJmdWxsbWF0Y2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9fZG9jX199LAorICAgIHsiZnVsbG1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLApAQCAtMTA4LDE4ICsxMTMsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T25uJE86ZnVsbG1hdGNoIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86ZnVsbG1hdGNoIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CiAKIGV4aXQ6CkBAIC0xMzYsNyArMTQzLDcgQEAKICJSZXR1cm4gTm9uZSBpZiBubyBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIG1hdGNoZXMuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TRUFSQ0hfTUVUSE9EREVGICAgIFwKLSAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX19kb2NfX30sCisgICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zZWFyY2gsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCkBAIC0xNDQsMTggKzE1MSwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzpzZWFyY2giLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpzZWFyY2giLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKIAogZXhpdDoKQEAgLTE3MCw3ICsxNzksNyBAQAogIlJldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRklOREFMTF9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfX2RvY19ffSwKKyAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCkBAIC0xNzgsMTggKzE4NywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNvdXJjZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzpmaW5kYWxsIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqc291cmNlID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpmaW5kYWxsIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmc291cmNlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnNvdXJjZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBzb3VyY2UpOwogCiBleGl0OgpAQCAtMjA1LDI0ICsyMTYsMjYgQEAKICJGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYSBtYXRjaCBvYmplY3QuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9GSU5ESVRFUl9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZGl0ZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfX2RvY19ffSwKKyAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98bm46ZmluZGl0ZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOmZpbmRpdGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7CiAKIGV4aXQ6CkBAIC0yMzUsMjQgKzI0OCwyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TQ0FOTkVSX01FVEhPRERFRiAgICBcCi0gICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9fZG9jX199LAorICAgIHsic2Nhbm5lciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG5uOnNjYW5uZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOnNjYW5uZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOwogCiBleGl0OgpAQCAtMjY2LDI0ICsyODEsMjYgQEAKICJTcGxpdCBzdHJpbmcgYnkgdGhlIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4uIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfX2RvY19ffSwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3BsaXQsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQsIFB5T2JqZWN0ICpzb3VyY2UpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9zcGxpdChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc3BsaXQoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJtYXhzcGxpdCIsICJzb3VyY2UiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAibWF4c3BsaXQiLCAic291cmNlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uJE86c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAwOwogICAgIFB5T2JqZWN0ICpzb3VyY2UgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uJE86c3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZtYXhzcGxpdCwgJnNvdXJjZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZtYXhzcGxpdCwgJnNvdXJjZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X2ltcGwoc2VsZiwgc3RyaW5nLCBtYXhzcGxpdCwgc291cmNlKTsKIAogZXhpdDoKQEAgLTI5NywyNCArMzE0LDI2IEBACiAiUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcgYnkgdGhlIHJlcGxhY2VtZW50IHJlcGwuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TVUJfTUVUSE9EREVGICAgIFwKLSAgICB7InN1YiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1YiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3ViX19kb2NfX30sCisgICAgeyJzdWIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWIsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc3ViX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpyZXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc3ViKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zdWIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPT3xuOnN1YiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJlcGw7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfG46c3ViIiwgX2tleXdvcmRzLAotICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOwogCiBleGl0OgpAQCAtMzI4LDI0ICszNDcsMjYgQEAKICJSZXR1cm4gdGhlIHR1cGxlIChuZXdfc3RyaW5nLCBudW1iZXJfb2Zfc3Vic19tYWRlKSBmb3VuZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIHdpdGggdGhlIHJlcGxhY2VtZW50IHJlcGwuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TVUJOX01FVEhPRERFRiAgICBcCi0gICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3VibiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9fZG9jX199LAorICAgIHsic3VibiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1Ym4sIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zdWJuX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc3VibihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc3VibihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PfG46c3VibiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJlcGw7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfG46c3VibiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZyZXBsLCAmc3RyaW5nLCAmY291bnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zdWJuX2ltcGwoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCk7CiAKIGV4aXQ6CkBAIC0zNzUsMjEgKzM5NiwyMyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKLSAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX19kb2NfX30sCisgICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18sIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICptZW1vOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZtZW1vKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm1lbW8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19faW1wbChzZWxmLCBtZW1vKTsKIAogZXhpdDoKQEAgLTQwMyw3ICs0MjYsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9DT01QSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfY29tcGlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfY29tcGlsZV9fZG9jX199LAorICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilfc3JlX2NvbXBpbGUsIE1FVEhfRkFTVENBTEwsIF9zcmVfY29tcGlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9jb21waWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdHRlcm4sIGludCBmbGFncywKQEAgLTQxMSwxMCArNDM0LDExIEBACiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5kZXhncm91cCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdHRlcm4iLCAiZmxhZ3MiLCAiY29kZSIsICJncm91cHMiLCAiZ3JvdXBpbmRleCIsICJpbmRleGdyb3VwIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0dGVybiIsICJmbGFncyIsICJjb2RlIiwgImdyb3VwcyIsICJncm91cGluZGV4IiwgImluZGV4Z3JvdXAiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaU8hbk9POmNvbXBpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXR0ZXJuOwogICAgIGludCBmbGFnczsKICAgICBQeU9iamVjdCAqY29kZTsKQEAgLTQyMiw5ICs0NDYsMTAgQEAKICAgICBQeU9iamVjdCAqZ3JvdXBpbmRleDsKICAgICBQeU9iamVjdCAqaW5kZXhncm91cDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9pTyFuT086Y29tcGlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdHRlcm4sICZmbGFncywgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdHRlcm4sICZmbGFncywgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfY29tcGlsZV9pbXBsKG1vZHVsZSwgcGF0dGVybiwgZmxhZ3MsIGNvZGUsIGdyb3VwcywgZ3JvdXBpbmRleCwgaW5kZXhncm91cCk7CiAKIGV4aXQ6CkBAIC00MzgsMjEgKzQ2MywyMyBAQAogIlJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb24gb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX0VYUEFORF9NRVRIT0RERUYgICAgXAotICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2V4cGFuZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX199LAorICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2V4cGFuZCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9leHBhbmRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRlbXBsYXRlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX01hdGNoX2V4cGFuZChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9NYXRjaF9leHBhbmQoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0ZW1wbGF0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InRlbXBsYXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpleHBhbmQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0ZW1wbGF0ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86ZXhwYW5kIiwgX2tleXdvcmRzLAotICAgICAgICAmdGVtcGxhdGUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGVtcGxhdGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX2ltcGwoc2VsZiwgdGVtcGxhdGUpOwogCiBleGl0OgpAQCAtNDY5LDIxICs0OTYsMjMgQEAKICIgICAgSXMgdXNlZCBmb3IgZ3JvdXBzIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2guIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfR1JPVVBTX01FVEhPRERFRiAgICBcCi0gICAgeyJncm91cHMiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX19kb2NfX30sCisgICAgeyJncm91cHMiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9NYXRjaF9ncm91cHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX01hdGNoX2dyb3Vwc19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9NYXRjaF9ncm91cHMoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8Tzpncm91cHMiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOmdyb3VwcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9ncm91cHNfaW1wbChzZWxmLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUwMCwyMSArNTI5LDIzIEBACiAiICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX0dST1VQRElDVF9NRVRIT0RERUYgICAgXAotICAgIHsiZ3JvdXBkaWN0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwZGljdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9fZG9jX199LAorICAgIHsiZ3JvdXBkaWN0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwZGljdCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0KE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX01hdGNoX2dyb3VwZGljdChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86Z3JvdXBkaWN0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8Tzpncm91cGRpY3QiLCBfa2V5d29yZHMsCi0gICAgICAgICZkZWZhdWx0X3ZhbHVlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X2ltcGwoc2VsZiwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01NDIsMTEgKzU3MywxMyBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RhcnQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmZ3JvdXApKQorICAgICAgICAmZ3JvdXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX3N0YXJ0X2ltcGwoc2VsZiwgZ3JvdXApOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01NzQsMTEgKzYwNywxMyBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZW5kIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgJmdyb3VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9lbmRfaW1wbChzZWxmLCBncm91cCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTYwNSw4ICs2NDAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3BhbiIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZncm91cCkpCisgICAgICAgICZncm91cCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoc2VsZiwgZ3JvdXApOwogCiBleGl0OgpAQCAtNjM2LDIxICs2NzIsMjMgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19fZG9jX199LAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXywgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19faW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICptZW1vOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZtZW1vKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm1lbW8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CiAKIGV4aXQ6CkBAIC02OTAsNCArNzI4LDQgQEAKIHsKICAgICByZXR1cm4gX3NyZV9TUkVfU2Nhbm5lcl9zZWFyY2hfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGNlOWU1Yjc0OGNlNTMyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGEyNDZiY2ExOTYzYmM5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19zc2wuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKaW5kZXggODUyZTM2NS4uMjlmNTgzOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKQEAgLTM2LDggKzM2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X3Rlc3RfZGVjb2RlX2NlcnQiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl90ZXN0X2RlY29kZV9jZXJ0IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX190ZXN0X2RlY29kZV9jZXJ0X2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTcxLDggKzcyLDkgQEAKICAgICBpbnQgYmluYXJ5X21vZGUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpwZWVyX2NlcnRpZmljYXRlIiwKLSAgICAgICAgJmJpbmFyeV9tb2RlKSkKKyAgICAgICAgJmJpbmFyeV9tb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlX2ltcGwoc2VsZiwgYmluYXJ5X21vZGUpOwogCiBleGl0OgpAQCAtMjA5LDE0ICsyMTEsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTFNvY2tldF93cml0ZV9pbXBsKHNlbGYsICZiKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBiICovCi0gICAgaWYgKGIub2JqKQorICAgIGlmIChiLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yNjAsMTIgKzI2NCwxNCBAQAogCiAgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJmxlbikpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cmVhZCIsICZsZW4pKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXcqOnJlYWQiLCAmbGVuLCAmYnVmZmVyKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXcqOnJlYWQiLCAmbGVuLCAmYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNzYsOCArMjgyLDkgQEAKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMzMiwxMSArMzM5LDEzIEBACiAgICAgaW50IHByb3RvX3ZlcnNpb247CiAKICAgICBpZiAoKHR5cGUgPT0gJlB5U1NMQ29udGV4dF9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIl9TU0xDb250ZXh0Iiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJfU1NMQ29udGV4dCIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6X1NTTENvbnRleHQiLAotICAgICAgICAmcHJvdG9fdmVyc2lvbikpCisgICAgICAgICZwcm90b192ZXJzaW9uKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfaW1wbCh0eXBlLCBwcm90b192ZXJzaW9uKTsKIAogZXhpdDoKQEAgLTM2MCwxNCArMzY5LDM2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqY2lwaGVybGlzdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpzZXRfY2lwaGVycyIsICZjaXBoZXJsaXN0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX2ltcGwoc2VsZiwgY2lwaGVybGlzdCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAorI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTCkKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnNfX2RvY19fLAorImdldF9jaXBoZXJzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfY2lwaGVycyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMKSAqLworCiBQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfX2RvY19fLAogIl9zZXRfbnBuX3Byb3RvY29scygkc2VsZiwgcHJvdG9zLCAvKVxuIgogIi0tXG4iCkBAIC0zODYsMTQgKzQxNywxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBwcm90b3MgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfbnBuX3Byb3RvY29scyIsICZwcm90b3MpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19pbXBsKHNlbGYsICZwcm90b3MpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHByb3RvcyAqLwotICAgIGlmIChwcm90b3Mub2JqKQorICAgIGlmIChwcm90b3Mub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDE2LDE0ICs0NDksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgcHJvdG9zID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X2FscG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X2FscG5fcHJvdG9jb2xzIiwgJnByb3RvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfaW1wbChzZWxmLCAmcHJvdG9zKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwcm90b3MgKi8KLSAgICBpZiAocHJvdG9zLm9iaikKKyAgICBpZiAocHJvdG9zLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQzNCwyNCArNDY5LDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfQ0VSVF9DSEFJTl9NRVRIT0RERUYgICAgXAotICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5fX2RvY19ffSwKKyAgICB7ImxvYWRfY2VydF9jaGFpbiIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbiwgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXlmaWxlLCBQeU9iamVjdCAqcGFzc3dvcmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjZXJ0ZmlsZSIsICJrZXlmaWxlIiwgInBhc3N3b3JkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPTzpsb2FkX2NlcnRfY2hhaW4iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZTsKICAgICBQeU9iamVjdCAqa2V5ZmlsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnBhc3N3b3JkID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T086bG9hZF9jZXJ0X2NoYWluIiwgX2tleXdvcmRzLAotICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5faW1wbChzZWxmLCBjZXJ0ZmlsZSwga2V5ZmlsZSwgcGFzc3dvcmQpOwogCiBleGl0OgpAQCAtNDY0LDcgKzUwMSw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfVkVSSUZZX0xPQ0FUSU9OU19NRVRIT0RERUYgICAgXAotICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19ffSwKKyAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLApAQCAtNDczLDE3ICs1MTAsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2FmaWxlIiwgImNhcGF0aCIsICJjYWRhdGEiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqY2FmaWxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2FwYXRoID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2FkYXRhID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgX2tleXdvcmRzLAotICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmNhZmlsZSwgJmNhcGF0aCwgJmNhZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19pbXBsKHNlbGYsIGNhZmlsZSwgY2FwYXRoLCBjYWRhdGEpOwogCiBleGl0OgpAQCAtNTA0LDI0ICs1NDMsMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfX1dSQVBfU09DS0VUX01FVEhPRERFRiAgICBcCi0gICAgeyJfd3JhcF9zb2NrZXQiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9fZG9jX199LAorICAgIHsiX3dyYXBfc29ja2V0IiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0LCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VydmVyX3NpZGUsIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0KFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNvY2siLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPIWl8Tzpfd3JhcF9zb2NrZXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzb2NrOwogICAgIGludCBzZXJ2ZXJfc2lkZTsKICAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8haXxPOl93cmFwX3NvY2tldCIsIF9rZXl3b3JkcywKLSAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLCAmc29jaywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLCAmc29jaywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X2ltcGwoc2VsZiwgc29jaywgc2VydmVyX3NpZGUsIGhvc3RuYW1lX29iaik7CiAKIGV4aXQ6CkBAIC01MzUsNyArNTc2LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfX1dSQVBfQklPX01FVEhPRERFRiAgICBcCi0gICAgeyJfd3JhcF9iaW8iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19fZG9jX199LAorICAgIHsiX3dyYXBfYmlvIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5U1NMTWVtb3J5QklPICppbmNvbWluZywKQEAgLTU0MywxOCArNTg0LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImluY29taW5nIiwgIm91dGdvaW5nIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImluY29taW5nIiwgIm91dGdvaW5nIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8hTyFpfE86X3dyYXBfYmlvIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeVNTTE1lbW9yeUJJTyAqaW5jb21pbmc7CiAgICAgUHlTU0xNZW1vcnlCSU8gKm91dGdvaW5nOwogICAgIGludCBzZXJ2ZXJfc2lkZTsKICAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8hTyFpfE86X3dyYXBfYmlvIiwgX2tleXdvcmRzLAotICAgICAgICAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJmluY29taW5nLCAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJm91dGdvaW5nLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJmluY29taW5nLCAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJm91dGdvaW5nLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChzZWxmLCBpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlLCBob3N0bmFtZV9vYmopOwogCiBleGl0OgpAQCAtNjU3LDIxICs3MDAsMjMgQEAKICJiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfX2RvY19ffSwKKyAgICB7ImdldF9jYV9jZXJ0cyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0cywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBpbnQgYmluYXJ5X2Zvcm0pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImJpbmFyeV9mb3JtIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiYmluYXJ5X2Zvcm0iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8cDpnZXRfY2FfY2VydHMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBiaW5hcnlfZm9ybSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8cDpnZXRfY2FfY2VydHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZiaW5hcnlfZm9ybSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZiaW5hcnlfZm9ybSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19pbXBsKHNlbGYsIGJpbmFyeV9mb3JtKTsKIAogZXhpdDoKQEAgLTY4NywxMSArNzMyLDEzIEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJNZW1vcnlCSU8iLCBhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIk1lbW9yeUJJTyIsIGFyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgaWYgKCh0eXBlID09ICZQeVNTTE1lbW9yeUJJT19UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIk1lbW9yeUJJTyIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiTWVtb3J5QklPIiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX2ltcGwodHlwZSk7CiAKIGV4aXQ6CkBAIC03MjIsOCArNzY5LDkgQEAKICAgICBpbnQgbGVuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnJlYWQiLAotICAgICAgICAmbGVuKSkKKyAgICAgICAgJmxlbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoc2VsZiwgbGVuKTsKIAogZXhpdDoKQEAgLTc1MCwxNCArNzk4LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT193cml0ZV9pbXBsKHNlbGYsICZiKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBiICovCi0gICAgaWYgKGIub2JqKQorICAgIGlmIChiLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04MDUsMTQgKzg1NSwxNiBAQAogICAgIGRvdWJsZSBlbnRyb3B5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKmQ6UkFORF9hZGQiLAotICAgICAgICAmdmlldywgJmVudHJvcHkpKQorICAgICAgICAmdmlldywgJmVudHJvcHkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2FkZF9pbXBsKG1vZHVsZSwgJnZpZXcsIGVudHJvcHkpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHZpZXcgKi8KLSAgICBpZiAodmlldy5vYmopCisgICAgaWYgKHZpZXcub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgzNSw4ICs4ODcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfYnl0ZXMiLCAmbikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfYnl0ZXMiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfYnl0ZXNfaW1wbChtb2R1bGUsIG4pOwogCiBleGl0OgpAQCAtODY0LDggKzkxNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX3BzZXVkb19ieXRlc19pbXBsKG1vZHVsZSwgbik7CiAKIGV4aXQ6CkBAIC05MTYsOCArOTcwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UkFORF9lZ2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlJBTkRfZWdkIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfZWdkX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTk1NiwyMiArMTAxMSwyNCBAQAogImxvbmcgbmFtZSBhcmUgYWxzbyBtYXRjaGVkLiIpOwogCiAjZGVmaW5lIF9TU0xfVFhUMk9CSl9NRVRIT0RERUYgICAgXAotICAgIHsidHh0Mm9iaiIsIChQeUNGdW5jdGlvbilfc3NsX3R4dDJvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX3R4dDJvYmpfX2RvY19ffSwKKyAgICB7InR4dDJvYmoiLCAoUHlDRnVuY3Rpb24pX3NzbF90eHQyb2JqLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX3R4dDJvYmpfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfdHh0Mm9ial9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKnR4dCwgaW50IG5hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF90eHQyb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF90eHQyb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0eHQiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsic3xwOnR4dDJvYmoiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKnR4dDsKICAgICBpbnQgbmFtZSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzfHA6dHh0Mm9iaiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnR4dCwgJm5hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdHh0LCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX3R4dDJvYmpfaW1wbChtb2R1bGUsIHR4dCwgbmFtZSk7CiAKIGV4aXQ6CkBAIC05OTYsOCArMTA1Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG5pZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWQyb2JqIiwgJm5pZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pZDJvYmoiLCAmbmlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfbmlkMm9ial9pbXBsKG1vZHVsZSwgbmlkKTsKIAogZXhpdDoKQEAgLTEwMTksMjEgKzEwNzcsMjMgQEAKICJhIHNldCBvZiBPSURzIG9yIHRoZSBib29sZWFuIFRydWUuIik7CiAKICNkZWZpbmUgX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYgICAgXAotICAgIHsiZW51bV9jZXJ0aWZpY2F0ZXMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NlcnRpZmljYXRlcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfX2RvY19ffSwKKyAgICB7ImVudW1fY2VydGlmaWNhdGVzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jZXJ0aWZpY2F0ZXMsIE1FVEhfRkFTVENBTEwsIF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICpzdG9yZV9uYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfZW51bV9jZXJ0aWZpY2F0ZXMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX2VudW1fY2VydGlmaWNhdGVzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InM6ZW51bV9jZXJ0aWZpY2F0ZXMiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKnN0b3JlX25hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzOmVudW1fY2VydGlmaWNhdGVzIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdG9yZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfaW1wbChtb2R1bGUsIHN0b3JlX25hbWUpOwogCiBleGl0OgpAQCAtMTA1NiwyMSArMTExNiwyMyBAQAogIlg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIik7CiAKICNkZWZpbmUgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGICAgIFwKLSAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY3JscywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfZW51bV9jcmxzX19kb2NfX30sCisgICAgeyJlbnVtX2NybHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NybHMsIE1FVEhfRkFTVENBTEwsIF9zc2xfZW51bV9jcmxzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX2VudW1fY3Jsc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9lbnVtX2NybHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX2VudW1fY3JscyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJzOmVudW1fY3JscyIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqc3RvcmVfbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInM6ZW51bV9jcmxzIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdG9yZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfZW51bV9jcmxzX2ltcGwobW9kdWxlLCBzdG9yZV9uYW1lKTsKIAogZXhpdDoKQEAgLTEwODcsNiArMTE0OSwxMCBAQAogICAgICNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGKSAqLwpAQCAtMTEwMiw0ICsxMTY4LDQgQEAKICNpZm5kZWYgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmZiMTA1OTRkODM1MWRjNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg1OWIyMWZlNjhhNjExNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKaW5kZXggNzdhZjA4My4uZWRkNTM4MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3RraW50ZXIuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaApAQCAtMTksOCArMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnNjcmlwdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpldmFsIiwgJnNjcmlwdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWwiLCAmc2NyaXB0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxfaW1wbChzZWxmLCBzY3JpcHQpOwogCiBleGl0OgpAQCAtNDQsOCArNDUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWxmaWxlIiwgJmZpbGVOYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbGZpbGUiLCAmZmlsZU5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfaW1wbChzZWxmLCBmaWxlTmFtZSk7CiAKIGV4aXQ6CkBAIC02OSw4ICs3MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqc2NyaXB0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOnJlY29yZCIsICZzY3JpcHQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpyZWNvcmQiLCAmc2NyaXB0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX3JlY29yZF9pbXBsKHNlbGYsIHNjcmlwdCk7CiAKIGV4aXQ6CkBAIC05NCw4ICs5Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbXNnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmFkZGVycmluZm8iLCAmbXNnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6YWRkZXJyaW5mbyIsICZtc2cpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfYWRkZXJyaW5mb19pbXBsKHNlbGYsIG1zZyk7CiAKIGV4aXQ6CkBAIC0xNDMsOCArMTQ3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJzdHJpbmciLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJzdHJpbmciLCAmcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0xNjgsOCArMTczLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJsb25nIiwgJnMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHBybG9uZyIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJsb25nX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0xOTMsOCArMTk5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJkb3VibGUiLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJkb3VibGUiLCAmcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0yMTgsOCArMjI1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJib29sZWFuIiwgJnMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByYm9vbGVhbiIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0yNjIsOCArMjcwLDkgQEAKICAgICBQeU9iamVjdCAqZnVuYzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic086Y3JlYXRlY29tbWFuZCIsCi0gICAgICAgICZuYW1lLCAmZnVuYykpCisgICAgICAgICZuYW1lLCAmZnVuYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX2ltcGwoc2VsZiwgbmFtZSwgZnVuYyk7CiAKIGV4aXQ6CkBAIC0yODcsOCArMjk2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmRlbGV0ZWNvbW1hbmQiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmRlbGV0ZWNvbW1hbmQiLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoc2VsZiwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0zMTgsOCArMzI4LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2lPOmNyZWF0ZWZpbGVoYW5kbGVyIiwKLSAgICAgICAgJmZpbGUsICZtYXNrLCAmZnVuYykpCisgICAgICAgICZmaWxlLCAmbWFzaywgJmZ1bmMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChzZWxmLCBmaWxlLCBtYXNrLCBmdW5jKTsKIAogZXhpdDoKQEAgLTM3Nyw4ICszODgsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjcmVhdGV0aW1lcmhhbmRsZXIiLAotICAgICAgICAmbWlsbGlzZWNvbmRzLCAmZnVuYykpCisgICAgICAgICZtaWxsaXNlY29uZHMsICZmdW5jKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9pbXBsKHNlbGYsIG1pbGxpc2Vjb25kcywgZnVuYyk7CiAKIGV4aXQ6CkBAIC00MDMsOCArNDE1LDkgQEAKICAgICBpbnQgdGhyZXNob2xkID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6bWFpbmxvb3AiLAotICAgICAgICAmdGhyZXNob2xkKSkKKyAgICAgICAgJnRocmVzaG9sZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9pbXBsKHNlbGYsIHRocmVzaG9sZCk7CiAKIGV4aXQ6CkBAIC00MjksOCArNDQyLDkgQEAKICAgICBpbnQgZmxhZ3MgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpkb29uZWV2ZW50IiwKLSAgICAgICAgJmZsYWdzKSkKKyAgICAgICAgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2Rvb25lZXZlbnRfaW1wbChzZWxmLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC01NTEsOCArNTY1LDkgQEAKICAgICBjb25zdCBjaGFyICp1c2UgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8enNzaWlpaXo6Y3JlYXRlIiwKLSAgICAgICAgJnNjcmVlbk5hbWUsICZiYXNlTmFtZSwgJmNsYXNzTmFtZSwgJmludGVyYWN0aXZlLCAmd2FudG9iamVjdHMsICZ3YW50VGssICZzeW5jLCAmdXNlKSkKKyAgICAgICAgJnNjcmVlbk5hbWUsICZiYXNlTmFtZSwgJmNsYXNzTmFtZSwgJmludGVyYWN0aXZlLCAmd2FudG9iamVjdHMsICZ3YW50VGssICZzeW5jLCAmdXNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX2NyZWF0ZV9pbXBsKG1vZHVsZSwgc2NyZWVuTmFtZSwgYmFzZU5hbWUsIGNsYXNzTmFtZSwgaW50ZXJhY3RpdmUsIHdhbnRvYmplY3RzLCB3YW50VGssIHN5bmMsIHVzZSk7CiAKIGV4aXQ6CkBAIC01NzksOCArNTk0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbmV3X3ZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRidXN5d2FpdGludGVydmFsIiwgJm5ld192YWwpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRidXN5d2FpdGludGVydmFsIiwgJm5ld192YWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfc2V0YnVzeXdhaXRpbnRlcnZhbF9pbXBsKG1vZHVsZSwgbmV3X3ZhbCk7CiAKIGV4aXQ6CkBAIC02MDYsOCArNjIyLDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjIxLDQgKzYzOCw0IEBACiAjaWZuZGVmIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgogICAgICNkZWZpbmUgX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY5MDU3YzhiZjI4ODYzM2QgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgzNmM1NzhiNzFkNjkwOTcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCmluZGV4IGI4M2IzM2UuLmMxOTJlNzIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmgKQEAgLTIxLDExICsyMSwxMiBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChtb2R1bGUsIG9iamVjdCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ5MDg2Yzg1NzZkNDY5MzMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUxYWQ1ODcxNDczMjNlMTkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3dpbmFwaS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaAppbmRleCBhYzM4ZDM3Li41YmZiYWYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaApAQCAtMTksOCArMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB3YWl0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJwOkdldE92ZXJsYXBwZWRSZXN1bHQiLCAmd2FpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJwOkdldE92ZXJsYXBwZWRSZXN1bHQiLCAmd2FpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9pbXBsKHNlbGYsIHdhaXQpOwogCiBleGl0OgpAQCAtNzksOCArODAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpDbG9zZUhhbmRsZSIsICZoYW5kbGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUpOwogCiBleGl0OgpAQCAtOTMsMjMgKzk1LDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfV0lOQVBJX0NPTk5FQ1ROQU1FRFBJUEVfTUVUSE9EREVGICAgIFwKLSAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX19kb2NfX30sCisgICAgeyJDb25uZWN0TmFtZWRQaXBlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZSwgTUVUSF9GQVNUQ0FMTCwgX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK193aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgRl9IQU5ETEUgInxpOkNvbm5lY3ROYW1lZFBpcGUiLCBfa2V5d29yZHMsIDB9OwogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgInxpOkNvbm5lY3ROYW1lZFBpcGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZoYW5kbGUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZoYW5kbGUsICZ1c2Vfb3ZlcmxhcHBlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgdXNlX292ZXJsYXBwZWQpOwogCiBleGl0OgpAQCAtMTQ3LDEzICsxNTEsMTYgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2trIiBGX1BPSU5URVIgImtrIiBGX0hBTkRMRSAiOkNyZWF0ZUZpbGUiLAotICAgICAgICAmZmlsZV9uYW1lLCAmZGVzaXJlZF9hY2Nlc3MsICZzaGFyZV9tb2RlLCAmc2VjdXJpdHlfYXR0cmlidXRlcywgJmNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCAmZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsICZ0ZW1wbGF0ZV9maWxlKSkKKyAgICAgICAgJmZpbGVfbmFtZSwgJmRlc2lyZWRfYWNjZXNzLCAmc2hhcmVfbW9kZSwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMsICZjcmVhdGlvbl9kaXNwb3NpdGlvbiwgJmZsYWdzX2FuZF9hdHRyaWJ1dGVzLCAmdGVtcGxhdGVfZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwobW9kdWxlLCBmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLCBzaGFyZV9tb2RlLCBzZWN1cml0eV9hdHRyaWJ1dGVzLCBjcmVhdGlvbl9kaXNwb3NpdGlvbiwgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIHRlbXBsYXRlX2ZpbGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE4MCw4ICsxODcsOSBAQAogICAgIExQV1NUUiBkc3RfcGF0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXU6Q3JlYXRlSnVuY3Rpb24iLAotICAgICAgICAmc3JjX3BhdGgsICZkc3RfcGF0aCkpCisgICAgICAgICZzcmNfcGF0aCwgJmRzdF9wYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlSnVuY3Rpb25faW1wbChtb2R1bGUsIHNyY19wYXRoLCBkc3RfcGF0aCk7CiAKIGV4aXQ6CkBAIC0yMjAsMTMgKzIyOCwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJza2tra2trIiBGX1BPSU5URVIgIjpDcmVhdGVOYW1lZFBpcGUiLAotICAgICAgICAmbmFtZSwgJm9wZW5fbW9kZSwgJnBpcGVfbW9kZSwgJm1heF9pbnN0YW5jZXMsICZvdXRfYnVmZmVyX3NpemUsICZpbl9idWZmZXJfc2l6ZSwgJmRlZmF1bHRfdGltZW91dCwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMpKQorICAgICAgICAmbmFtZSwgJm9wZW5fbW9kZSwgJnBpcGVfbW9kZSwgJm1heF9pbnN0YW5jZXMsICZvdXRfYnVmZmVyX3NpemUsICZpbl9idWZmZXJfc2l6ZSwgJmRlZmF1bHRfdGltZW91dCwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlTmFtZWRQaXBlX2ltcGwobW9kdWxlLCBuYW1lLCBvcGVuX21vZGUsIHBpcGVfbW9kZSwgbWF4X2luc3RhbmNlcywgb3V0X2J1ZmZlcl9zaXplLCBpbl9idWZmZXJfc2l6ZSwgZGVmYXVsdF90aW1lb3V0LCBzZWN1cml0eV9hdHRyaWJ1dGVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yNTgsOCArMjY5LDkgQEAKICAgICBEV09SRCBzaXplOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPazpDcmVhdGVQaXBlIiwKLSAgICAgICAgJnBpcGVfYXR0cnMsICZzaXplKSkKKyAgICAgICAgJnBpcGVfYXR0cnMsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUGlwZV9pbXBsKG1vZHVsZSwgcGlwZV9hdHRycywgc2l6ZSk7CiAKIGV4aXQ6CkBAIC0zMDgsOCArMzIwLDkgQEAKICAgICBQeU9iamVjdCAqc3RhcnR1cF9pbmZvOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PaWtPWk86Q3JlYXRlUHJvY2VzcyIsCi0gICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLCAmY29tbWFuZF9saW5lLCAmcHJvY19hdHRycywgJnRocmVhZF9hdHRycywgJmluaGVyaXRfaGFuZGxlcywgJmNyZWF0aW9uX2ZsYWdzLCAmZW52X21hcHBpbmcsICZjdXJyZW50X2RpcmVjdG9yeSwgJnN0YXJ0dXBfaW5mbykpCisgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLCAmY29tbWFuZF9saW5lLCAmcHJvY19hdHRycywgJnRocmVhZF9hdHRycywgJmluaGVyaXRfaGFuZGxlcywgJmNyZWF0aW9uX2ZsYWdzLCAmZW52X21hcHBpbmcsICZjdXJyZW50X2RpcmVjdG9yeSwgJnN0YXJ0dXBfaW5mbykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGFwcGxpY2F0aW9uX25hbWUsIGNvbW1hbmRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLCBpbmhlcml0X2hhbmRsZXMsIGNyZWF0aW9uX2ZsYWdzLCBlbnZfbWFwcGluZywgY3VycmVudF9kaXJlY3RvcnksIHN0YXJ0dXBfaW5mbyk7CiAKIGV4aXQ6CkBAIC0zNTEsMTMgKzM2NCwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICIiIEZfSEFORExFICIiIEZfSEFORExFICJraXxrOkR1cGxpY2F0ZUhhbmRsZSIsCi0gICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsICZzb3VyY2VfaGFuZGxlLCAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLCAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJm9wdGlvbnMpKQorICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLCAmc291cmNlX2hhbmRsZSwgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKG1vZHVsZSwgc291cmNlX3Byb2Nlc3NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLCB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgb3B0aW9ucyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzgxLDggKzM5Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgVUlOVCBFeGl0Q29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpFeGl0UHJvY2VzcyIsICZFeGl0Q29kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOkV4aXRQcm9jZXNzIiwgJkV4aXRDb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfRXhpdFByb2Nlc3NfaW1wbChtb2R1bGUsIEV4aXRDb2RlKTsKIAogZXhpdDoKQEAgLTQwOCwxMCArNDI1LDEyIEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRDdXJyZW50UHJvY2Vzc19pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDM3LDExICs0NTYsMTMgQEAKICAgICBIQU5ETEUgcHJvY2VzczsKICAgICBEV09SRCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0RXhpdENvZGVQcm9jZXNzIiwgJnByb2Nlc3MpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEV4aXRDb2RlUHJvY2Vzc19pbXBsKG1vZHVsZSwgcHJvY2Vzcyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiayIsIF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDY2LDggKzQ4Nyw5IEBACiAgICAgRFdPUkQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldExhc3RFcnJvcl9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiayIsIF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDk5LDggKzUyMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSE1PRFVMRSBtb2R1bGVfaGFuZGxlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLCAmbW9kdWxlX2hhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLCAmbW9kdWxlX2hhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lX2ltcGwobW9kdWxlLCBtb2R1bGVfaGFuZGxlKTsKIAogZXhpdDoKQEAgLTUzMSwxMyArNTU0LDE2IEBACiAgICAgRFdPUkQgc3RkX2hhbmRsZTsKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiazpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJrOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldFN0ZEhhbmRsZV9pbXBsKG1vZHVsZSwgc3RkX2hhbmRsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTYzLDggKzU4OSw5IEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0VmVyc2lvbl9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTU5MywxMyArNjIwLDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImtpazpPcGVuUHJvY2VzcyIsCi0gICAgICAgICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmcHJvY2Vzc19pZCkpCisgICAgICAgICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmcHJvY2Vzc19pZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9PcGVuUHJvY2Vzc19pbXBsKG1vZHVsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBwcm9jZXNzX2lkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02MjUsOCArNjU1LDkgQEAKICAgICBpbnQgc2l6ZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiLAotICAgICAgICAmaGFuZGxlLCAmc2l6ZSkpCisgICAgICAgICZoYW5kbGUsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfUGVla05hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplKTsKIAogZXhpdDoKQEAgLTYzOSwyNCArNjcwLDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBfV0lOQVBJX1JFQURGSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1JlYWRGaWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9SZWFkRmlsZV9fZG9jX199LAorICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9SZWFkRmlsZSwgTUVUSF9GQVNUQ0FMTCwgX3dpbmFwaV9SZWFkRmlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3dpbmFwaV9SZWFkRmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsIGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fd2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3dpbmFwaV9SZWFkRmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgInNpemUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyIiIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgaW50IHNpemU7CiAgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZoYW5kbGUsICZzaXplLCAmdXNlX292ZXJsYXBwZWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9SZWFkRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplLCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIGV4aXQ6CkBAIC02ODgsOCArNzIxLDkgQEAKICAgICBQeU9iamVjdCAqY29sbGVjdF9kYXRhX3RpbWVvdXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIk9PTzpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsCi0gICAgICAgICZuYW1lZF9waXBlLCAmbW9kZSwgJm1heF9jb2xsZWN0aW9uX2NvdW50LCAmY29sbGVjdF9kYXRhX3RpbWVvdXQpKQorICAgICAgICAmbmFtZWRfcGlwZSwgJm1vZGUsICZtYXhfY29sbGVjdGlvbl9jb3VudCwgJmNvbGxlY3RfZGF0YV90aW1lb3V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfaW1wbChtb2R1bGUsIG5hbWVkX3BpcGUsIG1vZGUsIG1heF9jb2xsZWN0aW9uX2NvdW50LCBjb2xsZWN0X2RhdGFfdGltZW91dCk7CiAKIGV4aXQ6CkBAIC03MTcsOCArNzUxLDkgQEAKICAgICBVSU5UIGV4aXRfY29kZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiSTpUZXJtaW5hdGVQcm9jZXNzIiwKLSAgICAgICAgJmhhbmRsZSwgJmV4aXRfY29kZSkpCisgICAgICAgICZoYW5kbGUsICZleGl0X2NvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9UZXJtaW5hdGVQcm9jZXNzX2ltcGwobW9kdWxlLCBoYW5kbGUsIGV4aXRfY29kZSk7CiAKIGV4aXQ6CkBAIC03NDQsOCArNzc5LDkgQEAKICAgICBEV09SRCB0aW1lb3V0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzazpXYWl0TmFtZWRQaXBlIiwKLSAgICAgICAgJm5hbWUsICZ0aW1lb3V0KSkKKyAgICAgICAgJm5hbWUsICZ0aW1lb3V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgdGltZW91dCk7CiAKIGV4aXQ6CkBAIC03NzQsOCArODEwLDkgQEAKICAgICBEV09SRCBtaWxsaXNlY29uZHMgPSBJTkZJTklURTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2l8azpXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwKLSAgICAgICAgJmhhbmRsZV9zZXEsICZ3YWl0X2ZsYWcsICZtaWxsaXNlY29uZHMpKQorICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHNfaW1wbChtb2R1bGUsIGhhbmRsZV9zZXEsIHdhaXRfZmxhZywgbWlsbGlzZWNvbmRzKTsKIAogZXhpdDoKQEAgLTgwOCwxMSArODQ1LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJrOldhaXRGb3JTaW5nbGVPYmplY3QiLAotICAgICAgICAmaGFuZGxlLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgJmhhbmRsZSwgJm1pbGxpc2Vjb25kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X2ltcGwobW9kdWxlLCBoYW5kbGUsIG1pbGxpc2Vjb25kcyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTgyNSwyNyArODY0LDI5IEBACiAiXG4iKTsKIAogI2RlZmluZSBfV0lOQVBJX1dSSVRFRklMRV9NRVRIT0RERUYgICAgXAotICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV3JpdGVGaWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9Xcml0ZUZpbGVfX2RvY19ffSwKKyAgICB7IldyaXRlRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1dyaXRlRmlsZSwgTUVUSF9GQVNUQ0FMTCwgX3dpbmFwaV9Xcml0ZUZpbGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF93aW5hcGlfV3JpdGVGaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgUHlPYmplY3QgKmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV93aW5hcGlfV3JpdGVGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3dpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmhhbmRsZSwgJmJ1ZmZlciwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmhhbmRsZSwgJmJ1ZmZlciwgJnVzZV9vdmVybGFwcGVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV3JpdGVGaWxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGJ1ZmZlciwgdXNlX292ZXJsYXBwZWQpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTRjNGIyYTlmY2IwYmVhMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDZkNjM4MmE2NjYyYzRhOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKaW5kZXggMGM3MDYxYS4uM2I5ZmNkYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaApAQCAtNzcsOCArNzcsOSBAQAogICAgIFB5X3NzaXplX3QgaSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwb3AiLAotICAgICAgICAmaSkpCisgICAgICAgICZpKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X3BvcF9pbXBsKHNlbGYsIGkpOwogCiBleGl0OgpAQCAtMTE0LDggKzExNSw5IEBACiAgICAgUHlPYmplY3QgKnY7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5POmluc2VydCIsCi0gICAgICAgICZpLCAmdikpCisgICAgICAgICZpLCAmdikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9pbnNlcnRfaW1wbChzZWxmLCBpLCB2KTsKIAogZXhpdDoKQEAgLTIxMSw4ICsyMTMsOSBAQAogICAgIFB5X3NzaXplX3QgbjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLAotICAgICAgICAmZiwgJm4pKQorICAgICAgICAmZiwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWZpbGVfaW1wbChzZWxmLCBmLCBuKTsKIAogZXhpdDoKQEAgLTI3NSwxNCArMjc4LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXN0cmluZ19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzA1LDE0ICszMTAsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpmcm9tYnl0ZXMiLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNzksOCArMzg2LDkgQEAKICAgICBQeV9VTklDT0RFICp1c3RyOwogICAgIFB5X3NzaXplX2NsZWFuX3QgdXN0cl9sZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZ1c3RyX2xlbmd0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmdXN0cl9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfaW1wbChzZWxmLCB1c3RyLCB1c3RyX2xlbmd0aCk7CiAKIGV4aXQ6CkBAIC00NTMsOCArNDYxLDkgQEAKICAgICBQeU9iamVjdCAqaXRlbXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9DaU86X2FycmF5X3JlY29uc3RydWN0b3IiLAotICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCisgICAgICAgICZhcnJheXR5cGUsICZ0eXBlY29kZSwgJm1mb3JtYXRfY29kZSwgJml0ZW1zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X19hcnJheV9yZWNvbnN0cnVjdG9yX2ltcGwobW9kdWxlLCBhcnJheXR5cGUsIHR5cGVjb2RlLCBtZm9ybWF0X2NvZGUsIGl0ZW1zKTsKIAogZXhpdDoKQEAgLTQ5Niw0ICs1MDUsNCBAQAogCiAjZGVmaW5lIEFSUkFZX0FSUkFZSVRFUkFUT1JfX19TRVRTVEFURV9fX01FVEhPRERFRiAgICBcCiAgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3NldHN0YXRlX18sIE1FVEhfTywgYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3NldHN0YXRlX19fX2RvY19ffSwKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMDVkZjNmNTc5NjAzOWU0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMjA1NGZiNzY0YzhjYzY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oIGIvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmgKaW5kZXggNjJlMzEzYjUuLmJlNGI3MTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCkBAIC0yNCwxNCArMjQsMTYgQEAKICAgICBQeV9zc2l6ZV90IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmluOmdldHNhbXBsZSIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmaW5kZXgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBpbmRleCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU2LDE0ICs1OCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1heCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04OCwxNCArOTIsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTptaW5tYXgiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWlubWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTIwLDE0ICsxMjYsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphdmciLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYXZnX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTUyLDE0ICsxNjAsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpybXMiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3Bfcm1zX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTg1LDE3ICsxOTUsMjAgQEAKICAgICBQeV9idWZmZXIgcmVmZXJlbmNlID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOmZpbmRmaXQiLAotICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKQorICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kZml0X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsICZyZWZlcmVuY2UpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciByZWZlcmVuY2UgKi8KLSAgICBpZiAocmVmZXJlbmNlLm9iaikKKyAgICBpZiAocmVmZXJlbmNlLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnJlZmVyZW5jZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIyMSwxNyArMjM0LDIwIEBACiAgICAgUHlfYnVmZmVyIHJlZmVyZW5jZSA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjpmaW5kZmFjdG9yIiwKLSAgICAgICAgJmZyYWdtZW50LCAmcmVmZXJlbmNlKSkKKyAgICAgICAgJmZyYWdtZW50LCAmcmVmZXJlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCAmcmVmZXJlbmNlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgcmVmZXJlbmNlICovCi0gICAgaWYgKHJlZmVyZW5jZS5vYmopCisgICAgaWYgKHJlZmVyZW5jZS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZyZWZlcmVuY2UpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yNTcsMTQgKzI3MywxNiBAQAogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Km46ZmluZG1heCIsCi0gICAgICAgICZmcmFnbWVudCwgJmxlbmd0aCkpCisgICAgICAgICZmcmFnbWVudCwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRtYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjg5LDE0ICszMDcsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphdmdwcCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMyMSwxNCArMzQxLDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4cHAiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWF4cHBfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNTMsMTQgKzM3NSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmNyb3NzIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2Nyb3NzX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzg3LDE0ICs0MTEsMTYgQEAKICAgICBkb3VibGUgZmFjdG9yOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlkOm11bCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmZmFjdG9yKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZmYWN0b3IpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tdWxfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGZhY3Rvcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQyMiwxNCArNDQ4LDE2IEBACiAgICAgZG91YmxlIHJmYWN0b3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvbW9ubyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdG9tb25vX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBsZmFjdG9yLCByZmFjdG9yKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDU3LDE0ICs0ODUsMTYgQEAKICAgICBkb3VibGUgcmZhY3RvcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZGQ6dG9zdGVyZW8iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3Rvc3RlcmVvX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBsZmFjdG9yLCByZmFjdG9yKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDkxLDE3ICs1MjEsMjAgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSppOmFkZCIsCi0gICAgICAgICZmcmFnbWVudDEsICZmcmFnbWVudDIsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudDEsICZmcmFnbWVudDIsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FkZF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50MSwgJmZyYWdtZW50Miwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50MSAqLwotICAgIGlmIChmcmFnbWVudDEub2JqKQorICAgIGlmIChmcmFnbWVudDEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQxKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQyICovCi0gICAgaWYgKGZyYWdtZW50Mi5vYmopCisgICAgaWYgKGZyYWdtZW50Mi5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudDIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01MjcsMTQgKzU2MCwxNiBAQAogICAgIGludCBiaWFzOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpOmJpYXMiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmJpYXMpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmJpYXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9iaWFzX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBiaWFzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTU5LDE0ICs1OTQsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpyZXZlcnNlIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3JldmVyc2VfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01OTEsMTQgKzYyOCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmJ5dGVzd2FwIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2J5dGVzd2FwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjI1LDE0ICs2NjQsMTYgQEAKICAgICBpbnQgbmV3d2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWk6bGluMmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmV3d2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5ld3dpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmV3d2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02NjYsMTQgKzcwNywxNiBAQAogICAgIGludCB3ZWlnaHRCID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaWlpT3xpaTpyYXRlY3YiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5jaGFubmVscywgJmlucmF0ZSwgJm91dHJhdGUsICZzdGF0ZSwgJndlaWdodEEsICZ3ZWlnaHRCKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuY2hhbm5lbHMsICZpbnJhdGUsICZvdXRyYXRlLCAmc3RhdGUsICZ3ZWlnaHRBLCAmd2VpZ2h0QikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3JhdGVjdl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmNoYW5uZWxzLCBpbnJhdGUsIG91dHJhdGUsIHN0YXRlLCB3ZWlnaHRBLCB3ZWlnaHRCKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjk4LDE0ICs3NDEsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpsaW4ydWxhdyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4ydWxhd19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTczMCwxNCArNzc1LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6dWxhdzJsaW4iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdWxhdzJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03NjIsMTQgKzgwOSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmxpbjJhbGF3IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJhbGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzk0LDE0ICs4NDMsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphbGF3MmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hbGF3Mmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgyOCwxNCArODc5LDE2IEBACiAgICAgUHlPYmplY3QgKnN0YXRlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmxpbjJhZHBjbSIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJnN0YXRlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmFkcGNtX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBzdGF0ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg2MiwxNSArOTE1LDE3IEBACiAgICAgUHlPYmplY3QgKnN0YXRlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmFkcGNtMmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJnN0YXRlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYWRwY20ybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBzdGF0ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zODVmYjA5ZmEyMWE2MmMwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGFiNzRjM2ZhNTdjMzljIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaCBiL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAppbmRleCBlMjBjYWMyLi5hY2FmY2JmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCkBAIC0yMCw4ICsyMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgpAQCAtNTAsMTQgKzUxLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV91dSIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV91dSIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgwLDggKzgzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9iYXNlNjQiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CkBAIC05MywzMSArOTcsMzcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19fLAotImIyYV9iYXNlNjQoJG1vZHVsZSwgZGF0YSwgLylcbiIKKyJiMmFfYmFzZTY0KCRtb2R1bGUsIC8sIGRhdGEsICosIG5ld2xpbmU9VHJ1ZSlcbiIKICItLVxuIgogIlxuIgogIkJhc2U2NC1jb2RlIGxpbmUgb2YgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9CMkFfQkFTRTY0X01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfTywgYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX199LAorICAgIHsiYjJhX2Jhc2U2NCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfYmFzZTY0LCBNRVRIX0ZBU1RDQUxMLCBiaW5hc2NpaV9iMmFfYmFzZTY0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKK2JpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBuZXdsaW5lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9iYXNlNjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK2JpbmFzY2lpX2IyYV9iYXNlNjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm5ld2xpbmUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnwkaTpiMmFfYmFzZTY0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgbmV3bGluZSA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9iYXNlNjQiLCAmZGF0YSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbmV3bGluZSkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKG1vZHVsZSwgJmRhdGEsIG5ld2xpbmUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE0MCw4ICsxNTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaHF4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hxeCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKQEAgLTE3MCwxNCArMTgxLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWNvZGVfaHF4IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlY29kZV9ocXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9ybGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIwMCwxNCArMjEzLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9ocXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaHF4IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIzMCwxNCArMjQ1LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWRlY29kZV9ocXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVkZWNvZGVfaHF4IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlZGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI2MywxNyArMjgwLDIwIEBACiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqSTpjcmNfaHF4IiwKLSAgICAgICAgJmRhdGEsICZjcmMpKQorICAgICAgICAmZGF0YSwgJmNyYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEsIGNyYyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yOTksMTcgKzMxOSwyMCBAQAogICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmNyYzMyIiwKLSAgICAgICAgJmRhdGEsICZjcmMpKQorICAgICAgICAmZGF0YSwgJmNyYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzM1LDE0ICszNTgsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hleCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9oZXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfaGV4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzY3LDE0ICszOTIsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6aGV4bGlmeSIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmhleGxpZnkiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9oZXhsaWZ5X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDAwLDggKzQyNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGhleHN0ciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2hleF9pbXBsKG1vZHVsZSwgJmhleHN0cik7CiAKIGV4aXQ6CkBAIC00MzIsOCArNDYwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgaGV4c3RyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bmhleGxpZnkiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuaGV4bGlmeSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfdW5oZXhsaWZ5X2ltcGwobW9kdWxlLCAmaGV4c3RyKTsKIAogZXhpdDoKQEAgLTQ1MSwyMiArNDgwLDI0IEBACiAiRGVjb2RlIGEgc3RyaW5nIG9mIHFwLWVuY29kZWQgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9BMkJfUVBfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9xcCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfcXAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBiaW5hc2NpaV9hMmJfcXBfX2RvY19ffSwKKyAgICB7ImEyYl9xcCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfcXAsIE1FVEhfRkFTVENBTEwsIGJpbmFzY2lpX2EyYl9xcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX3FwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgaGVhZGVyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2EyYl9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2JpbmFzY2lpX2EyYl9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJoZWFkZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSwgJmhlYWRlcikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhLCAmaGVhZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9xcF9pbXBsKG1vZHVsZSwgJmRhdGEsIGhlYWRlcik7CiAKIGV4aXQ6CkBAIC00ODgsMzIgKzUxOSwzNSBAQAogImFyZSBib3RoIGVuY29kZWQuICBXaGVuIHF1b3RldGFicyBpcyBzZXQsIHNwYWNlIGFuZCB0YWJzIGFyZSBlbmNvZGVkLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9RUF9NRVRIT0RERUYgICAgXAotICAgIHsiYjJhX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9xcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJpbmFzY2lpX2IyYV9xcF9fZG9jX199LAorICAgIHsiYjJhX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9xcCwgTUVUSF9GQVNUQ0FMTCwgYmluYXNjaWlfYjJhX3FwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfcXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgaXN0ZXh0LCBpbnQgaGVhZGVyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2JpbmFzY2lpX2IyYV9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJxdW90ZXRhYnMiLCAiaXN0ZXh0IiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAicXVvdGV0YWJzIiwgImlzdGV4dCIsICJoZWFkZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpaWk6YjJhX3FwIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgcXVvdGV0YWJzID0gMDsKICAgICBpbnQgaXN0ZXh0ID0gMTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGlpaTpiMmFfcXAiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmcXVvdGV0YWJzLCAmaXN0ZXh0LCAmaGVhZGVyKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZxdW90ZXRhYnMsICZpc3RleHQsICZoZWFkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3FwX2ltcGwobW9kdWxlLCAmZGF0YSwgcXVvdGV0YWJzLCBpc3RleHQsIGhlYWRlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxMTczZmM5NzE4YTVlZGMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFmOGQ2ZTQ4Zjc1ZjZkMWUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oCmluZGV4IGEyNTUzNTMuLjA1NDMxZmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKQEAgLTIxLDggKzIxLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3MiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3MiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc19pbXBsKG1vZHVsZSwgeik7CkBAIC02Miw4ICs2Myw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphY29zaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvc2giLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc2hfaW1wbChtb2R1bGUsIHopOwpAQCAtMTAzLDggKzEwNSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2FzaW5faW1wbChtb2R1bGUsIHopOwpAQCAtMTQ0LDggKzE0Nyw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXNpbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtMTg1LDggKzE4OSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2F0YW5faW1wbChtb2R1bGUsIHopOwpAQCAtMjI2LDggKzIzMSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtMjY3LDggKzI3Myw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3MiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvcyIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9jb3NfaW1wbChtb2R1bGUsIHopOwpAQCAtMzA4LDggKzMxNSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3NoIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3NoIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2Nvc2hfaW1wbChtb2R1bGUsIHopOwpAQCAtMzQ5LDggKzM1Nyw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpleHAiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmV4cCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9leHBfaW1wbChtb2R1bGUsIHopOwpAQCAtMzkwLDggKzM5OSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpsb2cxMCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6bG9nMTAiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nMTBfaW1wbChtb2R1bGUsIHopOwpAQCAtNDMxLDggKzQ0MSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9zaW5faW1wbChtb2R1bGUsIHopOwpAQCAtNDcyLDggKzQ4Myw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW5oIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3NpbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtNTEzLDggKzUyNSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzcXJ0IiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzcXJ0IiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHopOwpAQCAtNTU0LDggKzU2Nyw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF90YW5faW1wbChtb2R1bGUsIHopOwpAQCAtNTk1LDggKzYwOSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW5oIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3RhbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtNjM5LDggKzY1NCw5IEBACiAgICAgUHlPYmplY3QgKnlfb2JqID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRHxPOmxvZyIsCi0gICAgICAgICZ4LCAmeV9vYmopKQorICAgICAgICAmeCwgJnlfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2xvZ19pbXBsKG1vZHVsZSwgeCwgeV9vYmopOwogCiBleGl0OgpAQCAtNjY1LDggKzY4MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBoYXNlIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwaGFzZSIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BoYXNlX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTY5Myw4ICs3MTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwb2xhciIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cG9sYXIiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9wb2xhcl9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC03MjEsOCArNzM5LDkgQEAKICAgICBkb3VibGUgcGhpOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkZDpyZWN0IiwKLSAgICAgICAgJnIsICZwaGkpKQorICAgICAgICAmciwgJnBoaSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9yZWN0X2ltcGwobW9kdWxlLCByLCBwaGkpOwogCiBleGl0OgpAQCAtNzQ3LDggKzc2Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzZmluaXRlIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2Zpbml0ZSIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzZmluaXRlX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTc3Myw4ICs3OTMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc25hbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNuYW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9pc25hbl9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC03OTksOCArODIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNpbmYiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzaW5mIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNpbmZfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtODI5LDMyICs4NTEsMzUgQEAKICJub3QgY2xvc2UgdG8gYW55dGhpbmcsIGV2ZW4gaXRzZWxmLiBpbmYgYW5kIC1pbmYgYXJlIG9ubHkgY2xvc2UgdG8gdGhlbXNlbHZlcy4iKTsKIAogI2RlZmluZSBDTUFUSF9JU0NMT1NFX01FVEhPRERFRiAgICBcCi0gICAgeyJpc2Nsb3NlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzY2xvc2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBjbWF0aF9pc2Nsb3NlX19kb2NfX30sCisgICAgeyJpc2Nsb3NlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzY2xvc2UsIE1FVEhfRkFTVENBTEwsIGNtYXRoX2lzY2xvc2VfX2RvY19ffSwKIAogc3RhdGljIGludAogY21hdGhfaXNjbG9zZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiLAogICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxfdG9sLCBkb3VibGUgYWJzX3RvbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9pc2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorY21hdGhfaXNjbG9zZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImEiLCAiYiIsICJyZWxfdG9sIiwgImFic190b2wiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJERHwkZGQ6aXNjbG9zZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfY29tcGxleCBhOwogICAgIFB5X2NvbXBsZXggYjsKICAgICBkb3VibGUgcmVsX3RvbCA9IDFlLTA5OwogICAgIGRvdWJsZSBhYnNfdG9sID0gMC4wOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiRER8JGRkOmlzY2xvc2UiLCBfa2V5d29yZHMsCi0gICAgICAgICZhLCAmYiwgJnJlbF90b2wsICZhYnNfdG9sKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmEsICZiLCAmcmVsX3RvbCwgJmFic190b2wpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2lzY2xvc2VfaW1wbChtb2R1bGUsIGEsIGIsIHJlbF90b2wsIGFic190b2wpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzIxOTQwMjliN2ZiMWU3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NzhmNTk3MDJiNDE2NTVmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaAppbmRleCA2NzY2MGViLi44NGEwMDRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oCkBAIC0zMyw4ICszMyw5IEBACiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPOmZjbnRsIiwKLSAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2ZjbnRsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgYXJnKTsKIAogZXhpdDoKQEAgLTkxLDggKzkyLDkgQEAKICAgICBpbnQgbXV0YXRlX2FyZyA9IDE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mSXxPcDppb2N0bCIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJm9iX2FyZywgJm11dGF0ZV9hcmcpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZvYl9hcmcsICZtdXRhdGVfYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2lvY3RsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgb2JfYXJnLCBtdXRhdGVfYXJnKTsKIAogZXhpdDoKQEAgLTEyMiw4ICsxMjQsOSBAQAogICAgIGludCBjb2RlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6ZmxvY2siLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmxvY2tfaW1wbChtb2R1bGUsIGZkLCBjb2RlKTsKIAogZXhpdDoKQEAgLTE3NSwxMSArMTc4LDEyIEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPT2k6bG9ja2YiLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZsZW5vYmosICZzdGFydG9iaiwgJndoZW5jZSkpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmxlbm9iaiwgJnN0YXJ0b2JqLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2xvY2tmX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgbGVub2JqLCBzdGFydG9iaiwgd2hlbmNlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3YjEzMDZiODY0YzAxYzggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2Y2ZmNzZhOGZiMmM5YTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2dycG1vZHVsZS5jLmgKaW5kZXggMmM0N2E0Mi4uMDI4MmI0ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oCkBAIC0xMSwyMSArMTEsMjMgQEAKICJJZiBpZCBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiIpOwogCiAjZGVmaW5lIEdSUF9HRVRHUkdJRF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0Z3JnaWQiLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdyZ2lkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZ3JwX2dldGdyZ2lkX19kb2NfX30sCisgICAgeyJnZXRncmdpZCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JnaWQsIE1FVEhfRkFTVENBTEwsIGdycF9nZXRncmdpZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogZ3JwX2dldGdyZ2lkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmlkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWdycF9nZXRncmdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2dycF9nZXRncmdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86Z2V0Z3JnaWQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86Z2V0Z3JnaWQiLCBfa2V5d29yZHMsCi0gICAgICAgICZpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JnaWRfaW1wbChtb2R1bGUsIGlkKTsKIAogZXhpdDoKQEAgLTQxLDIxICs0MywyMyBAQAogIklmIG5hbWUgaXMgbm90IHZhbGlkLCByYWlzZSBLZXlFcnJvci4iKTsKIAogI2RlZmluZSBHUlBfR0VUR1JOQU1fTUVUSE9EREVGICAgIFwKLSAgICB7ImdldGdybmFtIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncm5hbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGdycF9nZXRncm5hbV9fZG9jX199LAorICAgIHsiZ2V0Z3JuYW0iLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdybmFtLCBNRVRIX0ZBU1RDQUxMLCBncnBfZ2V0Z3JuYW1fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGdycF9nZXRncm5hbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWdycF9nZXRncm5hbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2dycF9nZXRncm5hbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJVOmdldGdybmFtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6Z2V0Z3JuYW0iLCBfa2V5d29yZHMsCi0gICAgICAgICZuYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZ3JwX2dldGdybmFtX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTgyLDQgKzg2LDQgQEAKIHsKICAgICByZXR1cm4gZ3JwX2dldGdyYWxsX2ltcGwobW9kdWxlKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZWUwOWZlZWZjNTRhMmNiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNjQxN2FlMGE3Mjk4ZTBlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oCmluZGV4IDBiZDk1OGEuLmE4NDFmZTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaApAQCAtNzIsMjQgKzcyLDI2IEBACiAiUmV0dXJuIGEgbmV3IE1ENSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9NRDVfTUQ1X01FVEhPRERFRiAgICBcCi0gICAgeyJtZDUiLCAoUHlDRnVuY3Rpb24pX21kNV9tZDUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbWQ1X21kNV9fZG9jX199LAorICAgIHsibWQ1IiwgKFB5Q0Z1bmN0aW9uKV9tZDVfbWQ1LCBNRVRIX0ZBU1RDQUxMLCBfbWQ1X21kNV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX21kNV9tZDVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9tZDVfbWQ1KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX21kNV9tZDUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOm1kNSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzptZDUiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tZDVfbWQ1X2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGNkM2NjOTZlMzU1NjNkMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTRjZDUwZGIwNTBmMjU4OSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKaW5kZXggMWJiZmMwNi4uNzJkNzgzNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvcG9zaXhtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaApAQCAtMjcsMjMgKzI3LDI1IEBACiAiICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4iKTsKIAogI2RlZmluZSBPU19TVEFUX01FVEhPRERFRiAgICBcCi0gICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zdGF0X19kb2NfX30sCisgICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXQsIE1FVEhfRkFTVENBTEwsIG9zX3N0YXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3N0YXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJnA6c3RhdCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhdCIsICJwYXRoIiwgMCwgMSk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mcDpzdGF0IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC02MywyMiArNjUsMjQgQEAKICJFcXVpdmFsZW50IHRvIHN0YXQocGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogI2RlZmluZSBPU19MU1RBVF9NRVRIT0RERUYgICAgXAotICAgIHsibHN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfbHN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sc3RhdF9fZG9jX199LAorICAgIHsibHN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfbHN0YXQsIE1FVEhfRkFTVENBTEwsIG9zX2xzdGF0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sc3RhdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOmxzdGF0IiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsc3RhdCIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOmxzdGF0IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xzdGF0X2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyMSwxNyArMTI1LDE4IEBACiAiICBoYXMgdGhlIHNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguIik7CiAKICNkZWZpbmUgT1NfQUNDRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJhY2Nlc3MiLCAoUHlDRnVuY3Rpb24pb3NfYWNjZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfYWNjZXNzX19kb2NfX30sCisgICAgeyJhY2Nlc3MiLCAoUHlDRnVuY3Rpb24pb3NfYWNjZXNzLCBNRVRIX0ZBU1RDQUxMLCBvc19hY2Nlc3NfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfYWNjZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKICAgICAgICAgICAgICAgIGludCBlZmZlY3RpdmVfaWRzLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2FjY2VzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2FjY2VzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZWZmZWN0aXZlX2lkcyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJml8JE8mcHA6YWNjZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJhY2Nlc3MiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKQEAgLTEzOSwxMiArMTQ0LDE0IEBACiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcHA6YWNjZXNzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQUNDRVNTQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmVmZmVjdGl2ZV9pZHMsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQUNDRVNTQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmVmZmVjdGl2ZV9pZHMsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2FjY2Vzc19pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCwgZWZmZWN0aXZlX2lkcywgZm9sbG93X3N5bWxpbmtzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTc4LDExICsxODUsMTMgQEAKICAgICBpbnQgZmQ7CiAgICAgY2hhciAqX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0dHluYW1lIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dHR5bmFtZSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfdHR5bmFtZV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMjQsMjEgKzIzMywyMyBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX0NIRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJjaGRpciIsIChQeUNGdW5jdGlvbilvc19jaGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2NoZGlyX19kb2NfX30sCisgICAgeyJjaGRpciIsIChQeUNGdW5jdGlvbilvc19jaGRpciwgTUVUSF9GQVNUQ0FMTCwgb3NfY2hkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NoZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2NoZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6Y2hkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNoZGlyIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNIRElSKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTI2MCwyMSArMjcxLDIzIEBACiAiRXF1aXZhbGVudCB0byBvcy5jaGRpcihmZCkuIik7CiAKICNkZWZpbmUgT1NfRkNIRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJmY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfZmNoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNoZGlyX19kb2NfX30sCisgICAgeyJmY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfZmNoZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19mY2hkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZjaGRpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpmY2hkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZjaGRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZjaGRpcl9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzEwLDI1ICszMjMsMjcgQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX0NITU9EX01FVEhPRERFRiAgICBcCi0gICAgeyJjaG1vZCIsIChQeUNGdW5jdGlvbilvc19jaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2NobW9kX19kb2NfX30sCisgICAgeyJjaG1vZCIsIChQeUNGdW5jdGlvbilvc19jaG1vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfY2htb2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NobW9kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpfCRPJnA6Y2htb2QiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNobW9kIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNITU9EKTsKICAgICBpbnQgbW9kZTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcDpjaG1vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZDSE1PREFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2htb2RfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC0zNDksMjIgKzM2NCwyNCBAQAogIkVxdWl2YWxlbnQgdG8gb3MuY2htb2QoZmQsIG1vZGUpLiIpOwogCiAjZGVmaW5lIE9TX0ZDSE1PRF9NRVRIT0RERUYgICAgXAotICAgIHsiZmNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaG1vZF9fZG9jX199LAorICAgIHsiZmNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG1vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfZmNobW9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mY2htb2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQsIGludCBtb2RlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAibW9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpmY2htb2QiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKICAgICBpbnQgbW9kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmZjaG1vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkLCAmbW9kZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCwgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNobW9kX2ltcGwobW9kdWxlLCBmZCwgbW9kZSk7CiAKIGV4aXQ6CkBAIC0zODUsMjIgKzQwMiwyNCBAQAogIkVxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5cIiIpOwogCiAjZGVmaW5lIE9TX0xDSE1PRF9NRVRIT0RERUYgICAgXAotICAgIHsibGNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG1vZF9fZG9jX199LAorICAgIHsibGNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG1vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfbGNobW9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sY2htb2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpOmxjaG1vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNobW9kIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maTpsY2htb2QiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaG1vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUpOwogCiBleGl0OgpAQCAtNDI3LDI0ICs0NDYsMjYgQEAKICJ1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfQ0hGTEFHU19NRVRIT0RERUYgICAgXAotICAgIHsiY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19jaGZsYWdzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hmbGFnc19fZG9jX199LAorICAgIHsiY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19jaGZsYWdzLCBNRVRIX0ZBU1RDQUxMLCBvc19jaGZsYWdzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jaGZsYWdzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NoZmxhZ3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJmt8cDpjaGZsYWdzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaGZsYWdzIiwgInBhdGgiLCAwLCAwKTsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZrfHA6Y2hmbGFncyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaGZsYWdzX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC00NjgsMjIgKzQ4OSwyNCBAQAogIkVxdWl2YWxlbnQgdG8gY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogI2RlZmluZSBPU19MQ0hGTEFHU19NRVRIT0RERUYgICAgXAotICAgIHsibGNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfbGNoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2hmbGFnc19fZG9jX199LAorICAgIHsibGNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfbGNoZmxhZ3MsIE1FVEhfRkFTVENBTEwsIG9zX2xjaGZsYWdzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sY2hmbGFnc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdW5zaWduZWQgbG9uZyBmbGFncyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xjaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mazpsY2hmbGFncyIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNoZmxhZ3MiLCAicGF0aCIsIDAsIDApOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJms6bGNoZmxhZ3MiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC01MDQsMjEgKzUyNywyMyBAQAogIkNoYW5nZSByb290IGRpcmVjdG9yeSB0byBwYXRoLiIpOwogCiAjZGVmaW5lIE9TX0NIUk9PVF9NRVRIT0RERUYgICAgXAotICAgIHsiY2hyb290IiwgKFB5Q0Z1bmN0aW9uKW9zX2Nocm9vdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nocm9vdF9fZG9jX199LAorICAgIHsiY2hyb290IiwgKFB5Q0Z1bmN0aW9uKW9zX2Nocm9vdCwgTUVUSF9GQVNUQ0FMTCwgb3NfY2hyb290X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jaHJvb3RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hyb290KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hyb290KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmNocm9vdCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hyb290IiwgInBhdGgiLCAwLCAwKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNocm9vdCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nocm9vdF9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtNTM5LDIxICs1NjQsMjMgQEAKICJGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrLiIpOwogCiAjZGVmaW5lIE9TX0ZTWU5DX01FVEhPRERFRiAgICBcCi0gICAgeyJmc3luYyIsIChQeUNGdW5jdGlvbilvc19mc3luYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZzeW5jX19kb2NfX30sCisgICAgeyJmc3luYyIsIChQeUNGdW5jdGlvbilvc19mc3luYywgTUVUSF9GQVNUQ0FMTCwgb3NfZnN5bmNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZzeW5jX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZzeW5jKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZnN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpmc3luYyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZnN5bmMiLCBfa2V5d29yZHMsCi0gICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mc3luY19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNTkzLDIxICs2MjAsMjMgQEAKICJGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrIHdpdGhvdXQgZm9yY2luZyB1cGRhdGUgb2YgbWV0YWRhdGEuIik7CiAKICNkZWZpbmUgT1NfRkRBVEFTWU5DX01FVEhPRERFRiAgICBcCi0gICAgeyJmZGF0YXN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZmRhdGFzeW5jLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmRhdGFzeW5jX19kb2NfX30sCisgICAgeyJmZGF0YXN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZmRhdGFzeW5jLCBNRVRIX0ZBU1RDQUxMLCBvc19mZGF0YXN5bmNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZkYXRhc3luY19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mZGF0YXN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mZGF0YXN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpmZGF0YXN5bmMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZkYXRhc3luYyIsIF9rZXl3b3JkcywKLSAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZkYXRhc3luY19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNjQ5LDI2ICs2NzgsMjggQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX0NIT1dOX01FVEhPRERFRiAgICBcCi0gICAgeyJjaG93biIsIChQeUNGdW5jdGlvbilvc19jaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nob3duX19kb2NfX30sCisgICAgeyJjaG93biIsIChQeUNGdW5jdGlvbilvc19jaG93biwgTUVUSF9GQVNUQ0FMTCwgb3NfY2hvd25fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2Nob3duX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwKICAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2Nob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJk8mfCRPJnA6Y2hvd24iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNob3duIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNIT1dOKTsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJnwkTyZwOmNob3duIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCwgRkNIT1dOQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLCBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nob3duX2ltcGwobW9kdWxlLCAmcGF0aCwgdWlkLCBnaWQsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTY5MSwyMyArNzIyLDI1IEBACiAiRXF1aXZhbGVudCB0byBvcy5jaG93bihmZCwgdWlkLCBnaWQpLiIpOwogCiAjZGVmaW5lIE9TX0ZDSE9XTl9NRVRIT0RERUYgICAgXAotICAgIHsiZmNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaG93bl9fZG9jX199LAorICAgIHsiZmNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG93biwgTUVUSF9GQVNUQ0FMTCwgb3NfZmNob3duX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mY2hvd25faW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpTyZPJjpmY2hvd24iLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaU8mTyY6ZmNob3duIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZjaG93bl9pbXBsKG1vZHVsZSwgZmQsIHVpZCwgZ2lkKTsKIAogZXhpdDoKQEAgLTcyOCwyMyArNzYxLDI1IEBACiAiRXF1aXZhbGVudCB0byBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogI2RlZmluZSBPU19MQ0hPV05fTUVUSE9EREVGICAgIFwKLSAgICB7ImxjaG93biIsIChQeUNGdW5jdGlvbilvc19sY2hvd24sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2hvd25fX2RvY19ffSwKKyAgICB7ImxjaG93biIsIChQeUNGdW5jdGlvbilvc19sY2hvd24sIE1FVEhfRkFTVENBTEwsIG9zX2xjaG93bl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGNob3duX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19sY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZPJjpsY2hvd24iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxjaG93biIsICJwYXRoIiwgMCwgMCk7CiAgICAgdWlkX3QgdWlkOwogICAgIGdpZF90IGdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJjpsY2hvd24iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNob3duX2ltcGwobW9kdWxlLCAmcGF0aCwgdWlkLCBnaWQpOwogCiBleGl0OgpAQCAtODEyLDI2ICs4NDcsMjggQEAKICIgIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfTElOS19NRVRIT0RERUYgICAgXAotICAgIHsibGluayIsIChQeUNGdW5jdGlvbilvc19saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGlua19fZG9jX199LAorICAgIHsibGluayIsIChQeUNGdW5jdGlvbilvc19saW5rLCBNRVRIX0ZBU1RDQUxMLCBvc19saW5rX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19saW5rX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkTyZPJnA6bGluayIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaW5rIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgibGluayIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRPJk8mcDpsaW5rIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC04NjMsMjEgKzkwMCwyMyBAQAogImVudHJpZXMgXCcuXCcgYW5kIFwnLi5cJyBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4iKTsKIAogI2RlZmluZSBPU19MSVNURElSX01FVEhPRERFRiAgICBcCi0gICAgeyJsaXN0ZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3RkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saXN0ZGlyX19kb2NfX30sCisgICAgeyJsaXN0ZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3RkaXIsIE1FVEhfRkFTVENBTEwsIG9zX2xpc3RkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xpc3RkaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGlzdGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xpc3RkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE8mOmxpc3RkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpc3RkaXIiLCAicGF0aCIsIDEsIFBBVEhfSEFWRV9GRE9QRU5ESVIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOmxpc3RkaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19saXN0ZGlyX2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC05MDYsOCArOTQ1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJfZ2V0ZnVsbHBhdGhuYW1lIiwgInBhdGgiLCAwLCAwKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2dldGZ1bGxwYXRobmFtZSIsIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRmdWxscGF0aG5hbWVfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTkzOSw4ICs5NzksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOl9nZXRmaW5hbHBhdGhuYW1lIiwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpfZ2V0ZmluYWxwYXRobmFtZSIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRmaW5hbHBhdGhuYW1lX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTk2OCw4ICsxMDA5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJfaXNkaXIiLCAicGF0aCIsIDAsIDApOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfaXNkaXIiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2lzZGlyIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19pc2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtOTkwLDIxICsxMDMyLDIzIEBACiAiQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGlzbW91bnQgb24gV2luMzIuIik7CiAKICNkZWZpbmUgT1NfX0dFVFZPTFVNRVBBVEhOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJfZ2V0dm9sdW1lcGF0aG5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfX2dldHZvbHVtZXBhdGhuYW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2dldHZvbHVtZXBhdGhuYW1lX19kb2NfX30sCisgICAgeyJfZ2V0dm9sdW1lcGF0aG5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfX2dldHZvbHVtZXBhdGhuYW1lLCBNRVRIX0ZBU1RDQUxMLCBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX19nZXR2b2x1bWVwYXRobmFtZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX19nZXR2b2x1bWVwYXRobmFtZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJVOl9nZXR2b2x1bWVwYXRobmFtZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVOl9nZXR2b2x1bWVwYXRobmFtZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtMTAyNywyMyArMTA3MSwyNSBAQAogIlRoZSBtb2RlIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4iKTsKIAogI2RlZmluZSBPU19NS0RJUl9NRVRIT0RERUYgICAgXAotICAgIHsibWtkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbWtkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta2Rpcl9fZG9jX199LAorICAgIHsibWtkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbWtkaXIsIE1FVEhfRkFTVENBTEwsIG9zX21rZGlyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ta2Rpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbWtkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta2RpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxpJE8mOm1rZGlyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJta2RpciIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGUgPSA1MTE7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2RpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtESVJBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtESVJBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX21rZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEwNzMsOCArMTExOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGluY3JlbWVudDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWNlIiwgJmluY3JlbWVudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pY2UiLCAmaW5jcmVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX25pY2VfaW1wbChtb2R1bGUsIGluY3JlbWVudCk7CiAKIGV4aXQ6CkBAIC0xMDkyLDIyICsxMTM5LDI0IEBACiAiUmV0dXJuIHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKIAogI2RlZmluZSBPU19HRVRQUklPUklUWV9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19nZXRwcmlvcml0eV9fZG9jX199LAorICAgIHsiZ2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cHJpb3JpdHksIE1FVEhfRkFTVENBTEwsIG9zX2dldHByaW9yaXR5X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXRwcmlvcml0eV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19nZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2dldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpnZXRwcmlvcml0eSIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHdoaWNoOwogICAgIGludCB3aG87CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaTpnZXRwcmlvcml0eSIsIF9rZXl3b3JkcywKLSAgICAgICAgJndoaWNoLCAmd2hvKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJndoaWNoLCAmd2hvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHByaW9yaXR5X2ltcGwobW9kdWxlLCB3aGljaCwgd2hvKTsKIAogZXhpdDoKQEAgLTExMjUsMjMgKzExNzQsMjUgQEAKICJTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOwogCiAjZGVmaW5lIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCi0gICAgeyJzZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19zZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHByaW9yaXR5X19kb2NfX30sCisgICAgeyJzZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19zZXRwcmlvcml0eSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2V0cHJpb3JpdHlfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NldHByaW9yaXR5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHdoaWNoLCBpbnQgd2hvLCBpbnQgcHJpb3JpdHkpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2V0cHJpb3JpdHkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgInByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgInByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaWlpOnNldHByaW9yaXR5IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgd2hpY2g7CiAgICAgaW50IHdobzsKICAgICBpbnQgcHJpb3JpdHk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaWk6c2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsCi0gICAgICAgICZ3aGljaCwgJndobywgJnByaW9yaXR5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJndoaWNoLCAmd2hvLCAmcHJpb3JpdHkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cHJpb3JpdHlfaW1wbChtb2R1bGUsIHdoaWNoLCB3aG8sIHByaW9yaXR5KTsKIAogZXhpdDoKQEAgLTExNjMsMjUgKzEyMTQsMjcgQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1JFTkFNRV9NRVRIT0RERUYgICAgXAotICAgIHsicmVuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbmFtZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbmFtZV9fZG9jX199LAorICAgIHsicmVuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbmFtZSwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVuYW1lX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZW5hbWVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAogICAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkTyZPJjpyZW5hbWUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgicmVuYW1lIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgicmVuYW1lIiwgImRzdCIsIDAsIDApOwogICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyY6cmVuYW1lIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbmFtZV9pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjA2LDI1ICsxMjU5LDI3IEBACiAiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci5cIiIpOwogCiAjZGVmaW5lIE9TX1JFUExBQ0VfTUVUSE9EREVGICAgIFwKLSAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pb3NfcmVwbGFjZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlcGxhY2VfX2RvY19ffSwKKyAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pb3NfcmVwbGFjZSwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVwbGFjZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfcmVwbGFjZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCiAgICAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVwbGFjZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlcGxhY2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRPJk8mOnJlcGxhY2UiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJzcmMiLCAwLCAwKTsKICAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlcGxhY2UiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZXBsYWNlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlcGxhY2VfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQpOwogCiBleGl0OgpAQCAtMTI0OCwyMiArMTMwMywyNCBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1JNRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJybWRpciIsIChQeUNGdW5jdGlvbilvc19ybWRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JtZGlyX19kb2NfX30sCisgICAgeyJybWRpciIsIChQeUNGdW5jdGlvbilvc19ybWRpciwgTUVUSF9GQVNUQ0FMTCwgb3Nfcm1kaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JtZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3JtZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfcm1kaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6cm1kaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInJtZGlyIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cm1kaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19ybWRpcl9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjgyLDI1ICsxMzM5LDI4IEBACiAiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOwogCiAjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAotICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3lzdGVtX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCiBvc19zeXN0ZW1faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpjb21tYW5kKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N5c3RlbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5c3RlbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ1OnN5c3RlbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfVU5JQ09ERSAqY29tbWFuZDsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ1OnN5c3RlbSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmNvbW1hbmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmY29tbWFuZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzdGVtX2ltcGwobW9kdWxlLCBjb21tYW5kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTMxOCwyNSArMTM3OCwyOCBAQAogIkV4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4iKTsKIAogI2RlZmluZSBPU19TWVNURU1fTUVUSE9EREVGICAgIFwKLSAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeXN0ZW1fX2RvY19ffSwKKyAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfRkFTVENBTEwsIG9zX3N5c3RlbV9fZG9jX199LAogCiBzdGF0aWMgbG9uZwogb3Nfc3lzdGVtX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmNvbW1hbmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOnN5c3RlbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmNvbW1hbmQgPSBOVUxMOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN5c3RlbSIsIF9rZXl3b3JkcywKLSAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY29tbWFuZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmNvbW1hbmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c3RlbV9pbXBsKG1vZHVsZSwgY29tbWFuZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTEzNjYsOCArMTQyOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG1hc2s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dW1hc2siLCAmbWFzaykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnVtYXNrIiwgJm1hc2spKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW1hc2tfaW1wbChtb2R1bGUsIG1hc2spOwogCiBleGl0OgpAQCAtMTM4NiwyMiArMTQ1MCwyNCBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1VOTElOS19NRVRIT0RERUYgICAgXAotICAgIHsidW5saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3VubGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3VubGlua19fZG9jX199LAorICAgIHsidW5saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3VubGluaywgTUVUSF9GQVNUQ0FMTCwgb3NfdW5saW5rX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc191bmxpbmtfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfdW5saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdW5saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOnVubGluayIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgidW5saW5rIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6dW5saW5rIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5saW5rX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTE0MjMsMjIgKzE0ODksMjQgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19SRU1PVkVfTUVUSE9EREVGICAgIFwKLSAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilvc19yZW1vdmUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW1vdmVfX2RvY19ffSwKKyAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilvc19yZW1vdmUsIE1FVEhfRkFTVENBTEwsIG9zX3JlbW92ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfcmVtb3ZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3JlbW92ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbW92ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJjpyZW1vdmUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbW92ZSIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJlbW92ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbW92ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xNTAzLDI2ICsxNTcxLDI4IEBACiAiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19VVElNRV9NRVRIT0RERUYgICAgXAotICAgIHsidXRpbWUiLCAoUHlDRnVuY3Rpb24pb3NfdXRpbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc191dGltZV9fZG9jX199LAorICAgIHsidXRpbWUiLCAoUHlDRnVuY3Rpb24pb3NfdXRpbWUsIE1FVEhfRkFTVENBTEwsIG9zX3V0aW1lX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc191dGltZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKnRpbWVzLCBQeU9iamVjdCAqbnMsCiAgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfdXRpbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc191dGltZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8TyRPTyZwOnV0aW1lIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ1dGltZSIsICJwYXRoIiwgMCwgUEFUSF9VVElNRV9IQVZFX0ZEKTsKICAgICBQeU9iamVjdCAqdGltZXMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpucyA9IE5VTEw7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8TyRPTyZwOnV0aW1lIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZ0aW1lcywgJm5zLCBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZ0aW1lcywgJm5zLCBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXRpbWVfaW1wbChtb2R1bGUsICZwYXRoLCB0aW1lcywgbnMsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTE1MzksMjEgKzE2MDksMjMgQEAKICJFeGl0IHRvIHRoZSBzeXN0ZW0gd2l0aCBzcGVjaWZpZWQgc3RhdHVzLCB3aXRob3V0IG5vcm1hbCBleGl0IHByb2Nlc3NpbmcuIik7CiAKICNkZWZpbmUgT1NfX0VYSVRfTUVUSE9EREVGICAgIFwKLSAgICB7Il9leGl0IiwgKFB5Q0Z1bmN0aW9uKW9zX19leGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2V4aXRfX2RvY19ffSwKKyAgICB7Il9leGl0IiwgKFB5Q0Z1bmN0aW9uKW9zX19leGl0LCBNRVRIX0ZBU1RDQUxMLCBvc19fZXhpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfX2V4aXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX19leGl0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfX2V4aXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6X2V4aXQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOl9leGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZXhpdF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKIAogZXhpdDoKQEAgLTE1NzcsMjMgKzE2NDksMjQgQEAKICAgICB7ImV4ZWN2IiwgKFB5Q0Z1bmN0aW9uKW9zX2V4ZWN2LCBNRVRIX1ZBUkFSR1MsIG9zX2V4ZWN2X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19leGVjdl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndik7Citvc19leGVjdl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZXhlY3YoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImV4ZWN2IiwgInBhdGgiLCAwLCAwKTsKICAgICBQeU9iamVjdCAqYXJndjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKLSAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gb3NfZXhlY3ZfaW1wbChtb2R1bGUsIHBhdGgsIGFyZ3YpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdl9pbXBsKG1vZHVsZSwgJnBhdGgsIGFyZ3YpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KLSAgICBQeV9YREVDUkVGKHBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTYxNiwyMyArMTY4OSwyNSBAQAogIiAgICBEaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzLiIpOwogCiAjZGVmaW5lIE9TX0VYRUNWRV9NRVRIT0RERUYgICAgXAotICAgIHsiZXhlY3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX2V4ZWN2ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2V4ZWN2ZV9fZG9jX199LAorICAgIHsiZXhlY3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX2V4ZWN2ZSwgTUVUSF9GQVNUQ0FMTCwgb3NfZXhlY3ZlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19leGVjdmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LCBQeU9iamVjdCAqZW52KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2V4ZWN2ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhcmd2IiwgImVudiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnYiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk9POmV4ZWN2ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiZXhlY3ZlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkVYRUNWRSk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAgICAgUHlPYmplY3QgKmVudjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mT086ZXhlY3ZlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdmVfaW1wbChtb2R1bGUsICZwYXRoLCBhcmd2LCBlbnYpOwogCiBleGl0OgpAQCAtMTY0NCw3ICsxNzE5LDcgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9FWEVDVikgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9TUEFXTlYpCisjaWYgKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkKIAogUHlEb2NfU1RSVkFSKG9zX3NwYXdudl9fZG9jX18sCiAic3Bhd252KCRtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIC8pXG4iCkBAIC0xNjYzLDMxICsxNzM4LDMyIEBACiAgICAgeyJzcGF3bnYiLCAoUHlDRnVuY3Rpb24pb3Nfc3Bhd252LCBNRVRIX1ZBUkFSR1MsIG9zX3NwYXdudl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndik7Citvc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zcGF3bnYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG1vZGU7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInNwYXdudiIsICJwYXRoIiwgMCwgMCk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk86c3Bhd252IiwKLSAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkKKyAgICAgICAgJm1vZGUsIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZfaW1wbChtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZfaW1wbChtb2R1bGUsIG1vZGUsICZwYXRoLCBhcmd2KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgUHlfWERFQ1JFRihwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TUEFXTlYpICovCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9TUEFXTlYpCisjaWYgKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkKIAogUHlEb2NfU1RSVkFSKG9zX3NwYXdudmVfX2RvY19fLAogInNwYXdudmUoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgZW52LCAvKVxuIgpAQCAtMTcwOCw3ICsxNzg0LDcgQEAKICAgICB7InNwYXdudmUiLCAoUHlDRnVuY3Rpb24pb3Nfc3Bhd252ZSwgTUVUSF9WQVJBUkdTLCBvc19zcGF3bnZlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKK29zX3NwYXdudmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZW52KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE3MTYsMjMgKzE3OTIsMjQgQEAKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbW9kZTsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3Bhd252ZSIsICJwYXRoIiwgMCwgMCk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAgICAgUHlPYmplY3QgKmVudjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mT086c3Bhd252ZSIsCi0gICAgICAgICZtb2RlLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpCisgICAgICAgICZtb2RlLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252ZV9pbXBsKG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgZW52KTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252ZV9pbXBsKG1vZHVsZSwgbW9kZSwgJnBhdGgsIGFyZ3YsIGVudik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIFB5X1hERUNSRUYocGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1BBV05WKSAqLworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfU1BBV05WKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikpICovCiAKICNpZiBkZWZpbmVkKEhBVkVfRk9SSzEpCiAKQEAgLTE3OTEsMjEgKzE4NjgsMjMgQEAKICJHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LiIpOwogCiAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGICAgIFwKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBwb2xpY3kpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHBvbGljeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBvbGljeSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwb2xpY3kpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9pbXBsKG1vZHVsZSwgcG9saWN5KTsKIAogZXhpdDoKQEAgLTE4MjMsMjEgKzE5MDIsMjMgQEAKICJHZXQgdGhlIG1pbmltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LiIpOwogCiAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NSU5fTUVUSE9EREVGICAgIFwKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19ffSwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBwb2xpY3kpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NjaGVkX2dldF9wcmlvcml0eV9taW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHBvbGljeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBvbGljeSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwb2xpY3kpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKG1vZHVsZSwgcG9saWN5KTsKIAogZXhpdDoKQEAgLTE4NjgsOCArMTk0OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRzY2hlZHVsZXIiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMTg5NiwxMiArMTk3OCwxNCBAQAogb3Nfc2NoZWRfcGFyYW0oUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2NoZWRfcHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOnNjaGVkX3BhcmFtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2NoZWRfcHJpb3JpdHk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwgX2tleXdvcmRzLAotICAgICAgICAmc2NoZWRfcHJpb3JpdHkpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnNjaGVkX3ByaW9yaXR5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3BhcmFtX2ltcGwodHlwZSwgc2NoZWRfcHJpb3JpdHkpOwogCiBleGl0OgpAQCAtMTkzNyw4ICsyMDIxLDkgQEAKICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaU8mOnNjaGVkX3NldHNjaGVkdWxlciIsCi0gICAgICAgICZwaWQsICZwb2xpY3ksIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgICZwaWQsICZwb2xpY3ksIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCwgcG9saWN5LCAmcGFyYW0pOwogCiBleGl0OgpAQCAtMTk3MCw4ICsyMDU1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0cGFyYW1faW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0yMDA2LDggKzIwOTIsOSBAQAogICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCi0gICAgICAgICZwaWQsIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgICZwaWQsIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkLCAmcGFyYW0pOwogCiBleGl0OgpAQCAtMjAzOSwxMSArMjEyNiwxMyBAQAogICAgIHBpZF90IHBpZDsKICAgICBkb3VibGUgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfaW1wbChtb2R1bGUsIHBpZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xLjApICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xLjApICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUZsb2F0X0Zyb21Eb3VibGUoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMDk4LDggKzIxODcsOSBAQAogICAgIFB5T2JqZWN0ICptYXNrOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAotICAgICAgICAmcGlkLCAmbWFzaykpCisgICAgICAgICZwaWQsICZtYXNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3NldGFmZmluaXR5X2ltcGwobW9kdWxlLCBwaWQsIG1hc2spOwogCiBleGl0OgpAQCAtMjExNCw3ICsyMjA0LDcgQEAKICJzY2hlZF9nZXRhZmZpbml0eSgkbW9kdWxlLCBwaWQsIC8pXG4iCiAiLS1cbiIKICJcbiIKLSJSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLlxuIgorIlJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykuXG4iCiAiXG4iCiAiVGhlIGFmZmluaXR5IGlzIHJldHVybmVkIGFzIGEgc2V0IG9mIENQVSBpZGVudGlmaWVycy4iKTsKIApAQCAtMjEzMCw4ICsyMjIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldGFmZmluaXR5IiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0yMjU4LDYgKzIzNDksOCBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEdJRCkgKi8KIAorI2lmIGRlZmluZWQoSEFWRV9HRVRQSUQpCisKIFB5RG9jX1NUUlZBUihvc19nZXRwaWRfX2RvY19fLAogImdldHBpZCgkbW9kdWxlLCAvKVxuIgogIi0tXG4iCkBAIC0yMjc2LDYgKzIzNjksOCBAQAogICAgIHJldHVybiBvc19nZXRwaWRfaW1wbChtb2R1bGUpOwogfQogCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFBJRCkgKi8KKwogI2lmIGRlZmluZWQoSEFWRV9HRVRHUk9VUFMpCiAKIFB5RG9jX1NUUlZBUihvc19nZXRncm91cHNfX2RvY19fLApAQCAtMjMwNywyMSArMjQwMiwyMyBAQAogIkNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHBnaWQoKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIpOwogCiAjZGVmaW5lIE9TX0dFVFBHSURfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldHBnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdpZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHBnaWRfX2RvY19ffSwKKyAgICB7ImdldHBnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdpZCwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0cGdpZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZ2V0cGdpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19nZXRwZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZ2V0cGdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGlkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cGdpZF9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTI0NjUsOCArMjU2Miw5IEBACiAgICAgUHlfc3NpemVfdCBzaWduYWw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAibjpraWxsIiwKLSAgICAgICAgJnBpZCwgJnNpZ25hbCkpCisgICAgICAgICZwaWQsICZzaWduYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfa2lsbF9pbXBsKG1vZHVsZSwgcGlkLCBzaWduYWwpOwogCiBleGl0OgpAQCAtMjQ5Nyw4ICsyNTk1LDkgQEAKICAgICBpbnQgc2lnbmFsOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6a2lsbHBnIiwKLSAgICAgICAgJnBnaWQsICZzaWduYWwpKQorICAgICAgICAmcGdpZCwgJnNpZ25hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19raWxscGdfaW1wbChtb2R1bGUsIHBnaWQsIHNpZ25hbCk7CiAKIGV4aXQ6CkBAIC0yNTI3LDggKzI2MjYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBvcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwbG9jayIsICZvcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBsb2NrIiwgJm9wKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3Bsb2NrX2ltcGwobW9kdWxlLCBvcCk7CiAKIGV4aXQ6CkBAIC0yNTU3LDggKzI2NTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHVpZF90IHVpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0dWlkX2ltcGwobW9kdWxlLCB1aWQpOwogCiBleGl0OgpAQCAtMjU4Nyw4ICsyNjg4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICB1aWRfdCBldWlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRldWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGV1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0ZXVpZF9pbXBsKG1vZHVsZSwgZXVpZCk7CiAKIGV4aXQ6CkBAIC0yNjE3LDggKzI3MTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGdpZF90IGVnaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGVnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZWdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRlZ2lkX2ltcGwobW9kdWxlLCBlZ2lkKTsKIAogZXhpdDoKQEAgLTI2NDksOCArMjc1Miw5IEBACiAgICAgdWlkX3QgZXVpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZXVpZCIsCi0gICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKKyAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmV1aWRfaW1wbChtb2R1bGUsIHJ1aWQsIGV1aWQpOwogCiBleGl0OgpAQCAtMjY4MSw4ICsyNzg1LDkgQEAKICAgICBnaWRfdCBlZ2lkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJlZ2lkIiwKLSAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZWdpZF9pbXBsKG1vZHVsZSwgcmdpZCwgZWdpZCk7CiAKIGV4aXQ6CkBAIC0yNzExLDggKzI4MTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGdpZF90IGdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0Z2lkX2ltcGwobW9kdWxlLCBnaWQpOwogCiBleGl0OgpAQCAtMjc0NiwyMSArMjg1MiwyMyBAQAogIiAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpIik7CiAKICNkZWZpbmUgT1NfV0FJVDNfTUVUSE9EREVGICAgIFwKLSAgICB7IndhaXQzIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfd2FpdDNfX2RvY19ffSwKKyAgICB7IndhaXQzIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQzLCBNRVRIX0ZBU1RDQUxMLCBvc193YWl0M19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfd2FpdDNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgb3B0aW9ucyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0MyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3dhaXQzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6d2FpdDMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBvcHRpb25zOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTp3YWl0MyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9wdGlvbnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0M19pbXBsKG1vZHVsZSwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yNzgxLDIyICsyODg5LDI0IEBACiAiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKIAogI2RlZmluZSBPU19XQUlUNF9NRVRIT0RERUYgICAgXAotICAgIHsid2FpdDQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0NF9fZG9jX199LAorICAgIHsid2FpdDQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDQsIE1FVEhfRkFTVENBTEwsIG9zX3dhaXQ0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc193YWl0NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCwgaW50IG9wdGlvbnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdDQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc193YWl0NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgIm9wdGlvbnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwaWQiLCAib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0NCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGlkX3QgcGlkOwogICAgIGludCBvcHRpb25zOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOndhaXQ0IiwgX2tleXdvcmRzLAotICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQ0X2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjgzOSw4ICsyOTQ5LDkgQEAKICAgICBpbnQgb3B0aW9uczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0aWQiLAotICAgICAgICAmaWR0eXBlLCAmaWQsICZvcHRpb25zKSkKKyAgICAgICAgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0aWRfaW1wbChtb2R1bGUsIGlkdHlwZSwgaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjg3Niw4ICsyOTg3LDkgQEAKICAgICBpbnQgb3B0aW9uczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOndhaXRwaWQiLAotICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgICAgICZwaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRwaWRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yOTAzLDE4ICszMDE1LDE5IEBACiAgICAgeyJ3YWl0cGlkIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXRwaWQsIE1FVEhfVkFSQVJHUywgb3Nfd2FpdHBpZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpOworb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfd2FpdHBpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBwaWQ7CisgICAgaW50cHRyX3QgcGlkOwogICAgIGludCBvcHRpb25zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgImk6d2FpdHBpZCIsCi0gICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdHBpZF9pbXBsKG1vZHVsZSwgcGlkLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI5NjcsMjUgKzMwODAsMjcgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19TWU1MSU5LX01FVEhPRERFRiAgICBcCi0gICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5bWxpbmssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeW1saW5rX19kb2NfX30sCisgICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5bWxpbmssIE1FVEhfRkFTVENBTEwsIG9zX3N5bWxpbmtfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3N5bWxpbmtfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCiAgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnksIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3ltbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5bWxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInRhcmdldF9pc19kaXJlY3RvcnkiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnxwJE8mOnN5bWxpbmsiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJzcmMiLCAwLCAwKTsKICAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInN5bWxpbmsiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnkgPSAwOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8cCRPJjpzeW1saW5rIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsICZ0YXJnZXRfaXNfZGlyZWN0b3J5LCBTWU1MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgJnRhcmdldF9pc19kaXJlY3RvcnksIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N5bWxpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHRhcmdldF9pc19kaXJlY3RvcnksIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0zMDQ1LDggKzMxNjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6Z2V0c2lkIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRzaWQiLCAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHNpZF9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTMwOTksOCArMzIxNSw5IEBACiAgICAgcGlkX3QgcGdycDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICIiIF9QeV9QQVJTRV9QSUQgIjpzZXRwZ2lkIiwKLSAgICAgICAgJnBpZCwgJnBncnApKQorICAgICAgICAmcGlkLCAmcGdycCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQsIHBncnApOwogCiBleGl0OgpAQCAtMzEyOSw4ICszMjQ2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dGNnZXRwZ3JwIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dGNnZXRwZ3JwIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3RjZ2V0cGdycF9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzE2MSw4ICszMjc5LDkgQEAKICAgICBwaWRfdCBwZ2lkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICI6dGNzZXRwZ3JwIiwKLSAgICAgICAgJmZkLCAmcGdpZCkpCisgICAgICAgICZmZCwgJnBnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNzZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCwgcGdpZCk7CiAKIGV4aXQ6CkBAIC0zMTgzLDI4ICszMzAyLDMxIEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfT1BFTl9NRVRIT0RERUYgICAgXAotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilvc19vcGVuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfb3Blbl9fZG9jX199LAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilvc19vcGVuLCBNRVRIX0ZBU1RDQUxMLCBvc19vcGVuX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX29wZW5faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBmbGFncywgaW50IG1vZGUsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX29wZW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpfGkkTyY6b3BlbiIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgib3BlbiIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGZsYWdzOwogICAgIGludCBtb2RlID0gNTExOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXxpJE8mOm9wZW4iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmbW9kZSwgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJm1vZGUsIE9QRU5BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19vcGVuX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MsIG1vZGUsIGRpcl9mZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMyMjEsMjEgKzMzNDMsMjMgQEAKICJDbG9zZSBhIGZpbGUgZGVzY3JpcHRvci4iKTsKIAogI2RlZmluZSBPU19DTE9TRV9NRVRIT0RERUYgICAgXAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pb3NfY2xvc2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jbG9zZV9fZG9jX199LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pb3NfY2xvc2UsIE1FVEhfRkFTVENBTEwsIG9zX2Nsb3NlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jbG9zZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jbG9zZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpjbG9zZSIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpjbG9zZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zMjYyLDggKzMzODYsOSBAQAogICAgIGludCBmZF9oaWdoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpjbG9zZXJhbmdlIiwKLSAgICAgICAgJmZkX2xvdywgJmZkX2hpZ2gpKQorICAgICAgICAmZmRfbG93LCAmZmRfaGlnaCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jbG9zZXJhbmdlX2ltcGwobW9kdWxlLCBmZF9sb3csIGZkX2hpZ2gpOwogCiBleGl0OgpAQCAtMzI4OSwxMSArMzQxNCwxMyBAQAogICAgIGludCBmZDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpkdXAiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpkdXAiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2R1cF9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMzA3LDIzICszNDM0LDI1IEBACiAiRHVwbGljYXRlIGZpbGUgZGVzY3JpcHRvci4iKTsKIAogI2RlZmluZSBPU19EVVAyX01FVEhPRERFRiAgICBcCi0gICAgeyJkdXAyIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cDIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19kdXAyX19kb2NfX30sCisgICAgeyJkdXAyIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cDIsIE1FVEhfRkFTVENBTEwsIG9zX2R1cDJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2R1cDJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQsIGludCBmZDIsIGludCBpbmhlcml0YWJsZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19kdXAyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZHVwMihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAiZmQyIiwgImluaGVyaXRhYmxlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCAiZmQyIiwgImluaGVyaXRhYmxlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaWl8cDpkdXAyIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAgICAgaW50IGZkMjsKICAgICBpbnQgaW5oZXJpdGFibGUgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWl8cDpkdXAyIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQsICZmZDIsICZpbmhlcml0YWJsZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2R1cDJfaW1wbChtb2R1bGUsIGZkLCBmZDIsIGluaGVyaXRhYmxlKTsKIAogZXhpdDoKQEAgLTMzNjAsOCArMzQ4OSw5IEBACiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOmxvY2tmIiwKLSAgICAgICAgJmZkLCAmY29tbWFuZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCAmY29tbWFuZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xvY2tmX2ltcGwobW9kdWxlLCBmZCwgY29tbWFuZCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTMzOTUsMTEgKzM1MjUsMTMgQEAKICAgICBQeV9vZmZfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZpOmxzZWVrIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZwb3NpdGlvbiwgJmhvdykpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmcG9zaXRpb24sICZob3cpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2xzZWVrX2ltcGwobW9kdWxlLCBmZCwgcG9zaXRpb24sIGhvdyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tUHlfb2ZmX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNDI2LDggKzM1NTgsOSBAQAogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpbjpyZWFkIiwKLSAgICAgICAgJmZkLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlYWRfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtMzQ2NSwxMSArMzU5OCwxMyBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cmVhZHYiLAotICAgICAgICAmZmQsICZidWZmZXJzKSkKKyAgICAgICAgJmZkLCAmYnVmZmVycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcmVhZHZfaW1wbChtb2R1bGUsIGZkLCBidWZmZXJzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzUwNCw4ICszNjM5LDkgQEAKICAgICBQeV9vZmZfdCBvZmZzZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6cHJlYWQiLAotICAgICAgICAmZmQsICZsZW5ndGgsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpCisgICAgICAgICZmZCwgJmxlbmd0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3ByZWFkX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoLCBvZmZzZXQpOwogCiBleGl0OgpAQCAtMzUzNSwxNyArMzY3MSwyMCBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOndyaXRlIiwKLSAgICAgICAgJmZkLCAmZGF0YSkpCisgICAgICAgICZmZCwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3dyaXRlX2ltcGwobW9kdWxlLCBmZCwgJmRhdGEpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzU2MCwyMSArMzY5OSwyMyBAQAogIkVxdWl2YWxlbnQgdG8gb3Muc3RhdChmZCkuIik7CiAKICNkZWZpbmUgT1NfRlNUQVRfTUVUSE9EREVGICAgIFwKLSAgICB7ImZzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzdGF0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZnN0YXRfX2RvY19ffSwKKyAgICB7ImZzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzdGF0LCBNRVRIX0ZBU1RDQUxMLCBvc19mc3RhdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZnN0YXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZnN0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6ZnN0YXQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6ZnN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mc3RhdF9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzYwMywxMSArMzc0NCwxMyBAQAogICAgIGludCBmZDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc2F0dHkiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc2F0dHkiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2lzYXR0eV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNjY1LDggKzM4MDgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmbGFnczsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwaXBlMiIsICZmbGFncykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBpcGUyIiwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3BpcGUyX2ltcGwobW9kdWxlLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC0zNzAxLDExICszODQ1LDEzIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzp3cml0ZXYiLAotICAgICAgICAmZmQsICZidWZmZXJzKSkKKyAgICAgICAgJmZkLCAmYnVmZmVycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGV2X2ltcGwobW9kdWxlLCBmZCwgYnVmZmVycyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM3NDIsMTcgKzM4ODgsMjAgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kk8mOnB3cml0ZSIsCi0gICAgICAgICZmZCwgJmJ1ZmZlciwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgJmZkLCAmYnVmZmVyLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3B3cml0ZV9pbXBsKG1vZHVsZSwgZmQsICZidWZmZXIsIG9mZnNldCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM3NzMsMjMgKzM5MjIsMjUgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19NS0ZJRk9fTUVUSE9EREVGICAgIFwKLSAgICB7Im1rZmlmbyIsIChQeUNGdW5jdGlvbilvc19ta2ZpZm8sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta2ZpZm9fX2RvY19ffSwKKyAgICB7Im1rZmlmbyIsIChQeUNGdW5jdGlvbilvc19ta2ZpZm8sIE1FVEhfRkFTVENBTEwsIG9zX21rZmlmb19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbWtmaWZvX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ta2ZpZm8oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta2ZpZm8oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aSRPJjpta2ZpZm8iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rZmlmbyIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGUgPSA0Mzg7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2ZpZm8iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0ZJRk9BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX21rZmlmb19pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0zODIyLDI1ICszOTczLDI3IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfTUtOT0RfTUVUSE9EREVGICAgIFwKLSAgICB7Im1rbm9kIiwgKFB5Q0Z1bmN0aW9uKW9zX21rbm9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbWtub2RfX2RvY19ffSwKKyAgICB7Im1rbm9kIiwgKFB5Q0Z1bmN0aW9uKW9zX21rbm9kLCBNRVRIX0ZBU1RDQUxMLCBvc19ta25vZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbWtub2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBkZXZfdCBkZXZpY2UsCiAgICAgICAgICAgICAgIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbWtub2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta25vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRldmljZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGlPJiRPJjpta25vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtub2QiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlID0gMzg0OwogICAgIGRldl90IGRldmljZSA9IDA7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aU8mJE8mOm1rbm9kIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSwgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UsIE1LTk9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19ta25vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRldmljZSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTM4NzMsMTEgKzQwMjYsMTMgQEAKICAgICBkZXZfdCBkZXZpY2U7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOm1ham9yIiwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFqb3JfaW1wbChtb2R1bGUsIGRldmljZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5MDcsMTEgKzQwNjIsMTMgQEAKICAgICBkZXZfdCBkZXZpY2U7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOm1pbm9yIiwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWlub3JfaW1wbChtb2R1bGUsIGRldmljZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5NDMsMTEgKzQxMDAsMTMgQEAKICAgICBkZXZfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTptYWtlZGV2IiwKLSAgICAgICAgJm1ham9yLCAmbWlub3IpKQorICAgICAgICAmbWFqb3IsICZtaW5vcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFrZWRldl9pbXBsKG1vZHVsZSwgbWFqb3IsIG1pbm9yKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKGRldl90KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAoZGV2X3QpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfUHlMb25nX0Zyb21EZXYoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTc4LDggKzQxMzcsOSBAQAogICAgIFB5X29mZl90IGxlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZ0cnVuY2F0ZSIsCi0gICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnRydW5jYXRlX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQwMDAsMjIgKzQxNjAsMjQgQEAKICIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogI2RlZmluZSBPU19UUlVOQ0FURV9NRVRIT0RERUYgICAgXAotICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pb3NfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc190cnVuY2F0ZV9fZG9jX199LAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pb3NfdHJ1bmNhdGUsIE1FVEhfRkFTVENBTEwsIG9zX3RydW5jYXRlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc190cnVuY2F0ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlfb2ZmX3QgbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3RydW5jYXRlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdHJ1bmNhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mOnRydW5jYXRlIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ0cnVuY2F0ZSIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZUUlVOQ0FURSk7CiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjp0cnVuY2F0ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc190cnVuY2F0ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC00MDU0LDggKzQyMTYsOSBAQAogICAgIFB5X29mZl90IGxlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyY6cG9zaXhfZmFsbG9jYXRlIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcG9zaXhfZmFsbG9jYXRlX2ltcGwobW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgpOwogCiBleGl0OgpAQCAtNDA5Nyw4ICs0MjYwLDkgQEAKICAgICBpbnQgYWR2aWNlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCi0gICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgsICZhZHZpY2UpKQorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoLCAmYWR2aWNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3Bvc2l4X2ZhZHZpc2VfaW1wbChtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCwgYWR2aWNlKTsKIAogZXhpdDoKQEAgLTQxMjksOCArNDI5Myw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpwdXRlbnYiLAotICAgICAgICAmbmFtZSwgJnZhbHVlKSkKKyAgICAgICAgJm5hbWUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wdXRlbnZfaW1wbChtb2R1bGUsIG5hbWUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQxNjEsOCArNDMyNiw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpwdXRlbnYiLAotICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZ2YWx1ZSkpCisgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDE5Niw4ICs0MzYyLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuc2V0ZW52IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bnNldGVudiIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5zZXRlbnZfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtNDIyNyw4ICs0Mzk0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzdHJlcnJvciIsICZjb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c3RyZXJyb3IiLCAmY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zdHJlcnJvcl9pbXBsKG1vZHVsZSwgY29kZSk7CiAKIGV4aXQ6CkBAIC00MjU2LDExICs0NDI0LDEzIEBACiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpXQ09SRURVTVAiLCAmc3RhdHVzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6V0NPUkVEVU1QIiwgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0NPUkVEVU1QX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MjgxLDI1ICs0NDUxLDI4IEBACiAiam9iIGNvbnRyb2wgc3RvcC4iKTsKIAogI2RlZmluZSBPU19XSUZDT05USU5VRURfTUVUSE9EREVGICAgIFwKLSAgICB7IldJRkNPTlRJTlVFRCIsIChQeUNGdW5jdGlvbilvc19XSUZDT05USU5VRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZDT05USU5VRURfX2RvY19ffSwKKyAgICB7IldJRkNPTlRJTlVFRCIsIChQeUNGdW5jdGlvbilvc19XSUZDT05USU5VRUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRkNPTlRJTlVFRF9fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XSUZDT05USU5VRURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRkNPTlRJTlVFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRkNPTlRJTlVFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXSUZDT05USU5VRUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkNPTlRJTlVFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRkNPTlRJTlVFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDMxNywyNSArNDQ5MCwyOCBAQAogIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHN0b3BwZWQuIik7CiAKICNkZWZpbmUgT1NfV0lGU1RPUFBFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGU1RPUFBFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTVE9QUEVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGU1RPUFBFRF9fZG9jX199LAorICAgIHsiV0lGU1RPUFBFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTVE9QUEVELCBNRVRIX0ZBU1RDQUxMLCBvc19XSUZTVE9QUEVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRlNUT1BQRURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRlNUT1BQRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XSUZTVE9QUEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRlNUT1BQRUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRlNUT1BQRUQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZTVE9QUEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzUzLDI1ICs0NTI5LDI4IEBACiAiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgdGVybWluYXRlZCBieSBhIHNpZ25hbC4iKTsKIAogI2RlZmluZSBPU19XSUZTSUdOQUxFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGU0lHTkFMRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU0lHTkFMRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTSUdOQUxFRF9fZG9jX199LAorICAgIHsiV0lGU0lHTkFMRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU0lHTkFMRUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRlNJR05BTEVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRlNJR05BTEVEX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XSUZTSUdOQUxFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRlNJR05BTEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRlNJR05BTEVEIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZTSUdOQUxFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNJR05BTEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00Mzg5LDI1ICs0NTY4LDI4IEBACiAiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyBleGl0ZWQgdmlhIHRoZSBleGl0KCkgc3lzdGVtIGNhbGwuIik7CiAKICNkZWZpbmUgT1NfV0lGRVhJVEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZFWElURUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGRVhJVEVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGRVhJVEVEX19kb2NfX30sCisgICAgeyJXSUZFWElURUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGRVhJVEVELCBNRVRIX0ZBU1RDQUxMLCBvc19XSUZFWElURURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGRVhJVEVEX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XSUZFWElURUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XSUZFWElURUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGRVhJVEVEIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZFWElURUQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZFWElURURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ0MjUsMjUgKzQ2MDcsMjggQEAKICJSZXR1cm4gdGhlIHByb2Nlc3MgcmV0dXJuIGNvZGUgZnJvbSBzdGF0dXMuIik7CiAKICNkZWZpbmUgT1NfV0VYSVRTVEFUVVNfTUVUSE9EREVGICAgIFwKLSAgICB7IldFWElUU1RBVFVTIiwgKFB5Q0Z1bmN0aW9uKW9zX1dFWElUU1RBVFVTLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0VYSVRTVEFUVVNfX2RvY19ffSwKKyAgICB7IldFWElUU1RBVFVTIiwgKFB5Q0Z1bmN0aW9uKW9zX1dFWElUU1RBVFVTLCBNRVRIX0ZBU1RDQUxMLCBvc19XRVhJVFNUQVRVU19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XRVhJVFNUQVRVU19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0VYSVRTVEFUVVMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XRVhJVFNUQVRVUyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXRVhJVFNUQVRVUyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0VYSVRTVEFUVVMiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XRVhJVFNUQVRVU19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDQ2MSwyNSArNDY0NiwyOCBAQAogIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgdGVybWluYXRlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CiAKICNkZWZpbmUgT1NfV1RFUk1TSUdfTUVUSE9EREVGICAgIFwKLSAgICB7IldURVJNU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dURVJNU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1RFUk1TSUdfX2RvY19ffSwKKyAgICB7IldURVJNU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dURVJNU0lHLCBNRVRIX0ZBU1RDQUxMLCBvc19XVEVSTVNJR19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XVEVSTVNJR19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV1RFUk1TSUcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XVEVSTVNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXVEVSTVNJRyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1RFUk1TSUciLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XVEVSTVNJR19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDQ5NywyNSArNDY4NSwyOCBAQAogIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgc3RvcHBlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CiAKICNkZWZpbmUgT1NfV1NUT1BTSUdfTUVUSE9EREVGICAgIFwKLSAgICB7IldTVE9QU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dTVE9QU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1NUT1BTSUdfX2RvY19ffSwKKyAgICB7IldTVE9QU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dTVE9QU0lHLCBNRVRIX0ZBU1RDQUxMLCBvc19XU1RPUFNJR19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XU1RPUFNJR19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV1NUT1BTSUcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XU1RPUFNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXU1RPUFNJRyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1NUT1BTSUciLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XU1RPUFNJR19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDU0Niw4ICs0NzM3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZnN0YXR2ZnMiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpmc3RhdHZmcyIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mc3RhdHZmc19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNDU2OSwyMSArNDc2MSwyMyBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX1NUQVRWRlNfTUVUSE9EREVGICAgIFwKLSAgICB7InN0YXR2ZnMiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdHZmcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N0YXR2ZnNfX2RvY19ffSwKKyAgICB7InN0YXR2ZnMiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdHZmcywgTUVUSF9GQVNUQ0FMTCwgb3Nfc3RhdHZmc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3RhdHZmc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zdGF0dmZzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3RhdHZmcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpzdGF0dmZzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0dmZzIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlNUQVRWRlMpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3RhdHZmcyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXR2ZnNfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTQ2MDQsMjEgKzQ3OTgsMjMgQEAKICJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzIGEgKHRvdGFsLCBmcmVlKSB0dXBsZS4iKTsKIAogI2RlZmluZSBPU19fR0VURElTS1VTQUdFX01FVEhPRERFRiAgICBcCi0gICAgeyJfZ2V0ZGlza3VzYWdlIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0ZGlza3VzYWdlX19kb2NfX30sCisgICAgeyJfZ2V0ZGlza3VzYWdlIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRkaXNrdXNhZ2UsIE1FVEhfRkFTVENBTEwsIG9zX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX19nZXRkaXNrdXNhZ2VfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX19nZXRkaXNrdXNhZ2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19fZ2V0ZGlza3VzYWdlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InU6X2dldGRpc2t1c2FnZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfVU5JQ09ERSAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInU6X2dldGRpc2t1c2FnZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0ZGlza3VzYWdlX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTQ2NTIsMTEgKzQ4NDgsMTMgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmcGF0aGNvbmYiLAotICAgICAgICAmZmQsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKQorICAgICAgICAmZmQsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2ZwYXRoY29uZl9pbXBsKG1vZHVsZSwgZmQsIG5hbWUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00Njc4LDI2ICs0ODc2LDI5IEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfUEFUSENPTkZfTUVUSE9EREVGICAgIFwKLSAgICB7InBhdGhjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX3BhdGhjb25mLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcGF0aGNvbmZfX2RvY19ffSwKKyAgICB7InBhdGhjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX3BhdGhjb25mLCBNRVRIX0ZBU1RDQUxMLCBvc19wYXRoY29uZl9fZG9jX199LAogCiBzdGF0aWMgbG9uZwogb3NfcGF0aGNvbmZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBuYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3BhdGhjb25mKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcGF0aGNvbmYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyY6cGF0aGNvbmYiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInBhdGhjb25mIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlBBVEhDT05GKTsKICAgICBpbnQgbmFtZTsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnBhdGhjb25mIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3BhdGhjb25mX2ltcGwobW9kdWxlLCAmcGF0aCwgbmFtZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ3MjksOCArNDkzMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2NvbmZzdHJfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtNDc2MCwxMSArNDk2MiwxMyBAQAogICAgIGludCBuYW1lOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c3lzY29uZiIsIGNvbnZfc3lzY29uZl9jb25mbmFtZSwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c3lzY29uZiIsIGNvbnZfc3lzY29uZl9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c2NvbmZfaW1wbChtb2R1bGUsIG5hbWUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00Nzk0LDYgKzQ5OTgsNjEgQEAKICAgICByZXR1cm4gb3NfYWJvcnRfaW1wbChtb2R1bGUpOwogfQogCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3Nfc3RhcnRmaWxlX19kb2NfXywKKyJzdGFydGZpbGUoJG1vZHVsZSwgLywgZmlsZXBhdGgsIG9wZXJhdGlvbj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisic3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pXG4iCisiXG4iCisiU3RhcnQgYSBmaWxlIHdpdGggaXRzIGFzc29jaWF0ZWQgYXBwbGljYXRpb24uXG4iCisiXG4iCisiV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG4iCisiZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhblxuIgorImFyZ3VtZW50IHRvIHRoZSBET1MgXCJzdGFydFwiIGNvbW1hbmQ6IHRoZSBmaWxlIGlzIG9wZW5lZCB3aXRoIHdoYXRldmVyXG4iCisiYXBwbGljYXRpb24gKGlmIGFueSkgaXRzIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkLlxuIgorIldoZW4gYW5vdGhlciBcIm9wZXJhdGlvblwiIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgd2hhdCBzaG91bGQgYmUgZG9uZSB3aXRoXG4iCisidGhlIGZpbGUuICBBIHR5cGljYWwgb3BlcmF0aW9uIGlzIFwicHJpbnRcIi5cbiIKKyJcbiIKKyJzdGFydGZpbGUgcmV0dXJucyBhcyBzb29uIGFzIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIGlzIGxhdW5jaGVkLlxuIgorIlRoZXJlIGlzIG5vIG9wdGlvbiB0byB3YWl0IGZvciB0aGUgYXBwbGljYXRpb24gdG8gY2xvc2UsIGFuZCBubyB3YXlcbiIKKyJ0byByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb25cJ3MgZXhpdCBzdGF0dXMuXG4iCisiXG4iCisiVGhlIGZpbGVwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIElmIHlvdSB3YW50IHRvIHVzZVxuIgorImFuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoIChcIi9cIik7XG4iCisidGhlIHVuZGVybHlpbmcgV2luMzIgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uIGRvZXNuXCd0IHdvcmsgaWYgaXQgaXMuIik7CisKKyNkZWZpbmUgT1NfU1RBUlRGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJzdGFydGZpbGUiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhcnRmaWxlLCBNRVRIX0ZBU1RDQUxMLCBvc19zdGFydGZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqZmlsZXBhdGgsIFB5X1VOSUNPREUgKm9wZXJhdGlvbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGFydGZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlcGF0aCIsICJvcGVyYXRpb24iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnx1OnN0YXJ0ZmlsZSIsIF9rZXl3b3JkcywgMH07CisgICAgcGF0aF90IGZpbGVwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXJ0ZmlsZSIsICJmaWxlcGF0aCIsIDAsIDApOworICAgIFB5X1VOSUNPREUgKm9wZXJhdGlvbiA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZmaWxlcGF0aCwgJm9wZXJhdGlvbikpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19zdGFydGZpbGVfaW1wbChtb2R1bGUsICZmaWxlcGF0aCwgb3BlcmF0aW9uKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBmaWxlcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmZmlsZXBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKwogI2lmIGRlZmluZWQoSEFWRV9HRVRMT0FEQVZHKQogCiBQeURvY19TVFJWQVIob3NfZ2V0bG9hZGF2Z19fZG9jX18sCkBAIC00ODMwLDIxICs1MDg5LDIzIEBACiAiSWYgdGhlIGRldmljZSBpcyBub3QgYSB0ZXJtaW5hbCwgcmV0dXJuIE5vbmUuIik7CiAKICNkZWZpbmUgT1NfREVWSUNFX0VOQ09ESU5HX01FVEhPRERFRiAgICBcCi0gICAgeyJkZXZpY2VfZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pb3NfZGV2aWNlX2VuY29kaW5nLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCisgICAgeyJkZXZpY2VfZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pb3NfZGV2aWNlX2VuY29kaW5nLCBNRVRIX0ZBU1RDQUxMLCBvc19kZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2RldmljZV9lbmNvZGluZ19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19kZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19kZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOmRldmljZV9lbmNvZGluZyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpkZXZpY2VfZW5jb2RpbmciLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19kZXZpY2VfZW5jb2RpbmdfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTQ4NzQsOCArNTEzNSw5IEBACiAgICAgdWlkX3Qgc3VpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc3VpZCIsCi0gICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKQorICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZzdWlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlc3VpZF9pbXBsKG1vZHVsZSwgcnVpZCwgZXVpZCwgc3VpZCk7CiAKIGV4aXQ6CkBAIC00OTA3LDggKzUxNjksOSBAQAogICAgIGdpZF90IHNnaWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpzZXRyZXNnaWQiLAotICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkKKyAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmc2dpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXNnaWRfaW1wbChtb2R1bGUsIHJnaWQsIGVnaWQsIHNnaWQpOwogCiBleGl0OgpAQCAtNDk3NSwyNCArNTIzOCwyNiBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX0dFVFhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19nZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHhhdHRyX19kb2NfX30sCisgICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19nZXR4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0eGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldHhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19nZXR4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2dldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRwOmdldHhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CiAgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6Z2V0eGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTUwMjEsMjYgKzUyODYsMjggQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19TRVRYQVRUUl9NRVRIT0RERUYgICAgXAotICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zZXR4YXR0cl9fZG9jX199LAorICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0eGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX3NldHhhdHRyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zZXR4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqdmFsdWUsIGludCBmbGFncywgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXR4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8meSp8aSRwOnNldHhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CiAgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKICAgICBQeV9idWZmZXIgdmFsdWUgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IGZsYWdzID0gMDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ5KnxpJHA6c2V0eGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZ2YWx1ZSwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJnZhbHVlLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCAmdmFsdWUsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTA0OSw4ICs1MzE2LDkgQEAKICAgICAvKiBDbGVhbnVwIGZvciBhdHRyaWJ1dGUgKi8KICAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CiAgICAgLyogQ2xlYW51cCBmb3IgdmFsdWUgKi8KLSAgICBpZiAodmFsdWUub2JqKQorICAgIGlmICh2YWx1ZS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YWx1ZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTUwNzEsMjQgKzUzMzksMjYgQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYgICAgXAotICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZleGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW1vdmV4YXR0cl9fZG9jX199LAorICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZleGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX3JlbW92ZXhhdHRyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZW1vdmV4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVtb3ZleGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZW1vdmV4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkcDpyZW1vdmV4YXR0ciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAicGF0aCIsIDAsIDEpOwogICAgIHBhdGhfdCBhdHRyaWJ1dGUgPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAiYXR0cmlidXRlIiwgMCwgMCk7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOnJlbW92ZXhhdHRyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19yZW1vdmV4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsICZhdHRyaWJ1dGUsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MTE3LDIyICs1Mzg3LDI0IEBACiAiICB0aGUgbGluayBwb2ludHMgdG8uIik7CiAKICNkZWZpbmUgT1NfTElTVFhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJsaXN0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdHhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGlzdHhhdHRyX19kb2NfX30sCisgICAgeyJsaXN0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdHhhdHRyLCBNRVRIX0ZBU1RDQUxMLCBvc19saXN0eGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xpc3R4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19saXN0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saXN0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyYkcDpsaXN0eGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpc3R4YXR0ciIsICJwYXRoIiwgMSwgMSk7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyYkcDpsaXN0eGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19saXN0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTE2Miw4ICs1NDM0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46dXJhbmRvbSIsICZzaXplKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46dXJhbmRvbSIsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3VyYW5kb21faW1wbChtb2R1bGUsIHNpemUpOwogCiBleGl0OgpAQCAtNTE3NCw3ICs1NDQ3LDExIEBACiAiY3B1X2NvdW50KCRtb2R1bGUsIC8pXG4iCiAiLS1cbiIKICJcbiIKLSJSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW07IHJldHVybiBOb25lIGlmIGluZGV0ZXJtaW5hYmxlLiIpOworIlJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuXG4iCisiXG4iCisiVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuXG4iCisidXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aFxuIgorImBgbGVuKG9zLnNjaGVkX2dldGFmZmluaXR5KDApKWBgIik7CiAKICNkZWZpbmUgT1NfQ1BVX0NPVU5UX01FVEhPRERFRiAgICBcCiAgICAgeyJjcHVfY291bnQiLCAoUHlDRnVuY3Rpb24pb3NfY3B1X2NvdW50LCBNRVRIX05PQVJHUywgb3NfY3B1X2NvdW50X19kb2NfX30sCkBAIC01MjA3LDExICs1NDg0LDEzIEBACiAgICAgaW50IGZkOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9pbmhlcml0YWJsZSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9pbmhlcml0YWJsZSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZ2V0X2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUyMzgsOCArNTUxNyw5IEBACiAgICAgaW50IGluaGVyaXRhYmxlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfaW5oZXJpdGFibGUiLAotICAgICAgICAmZmQsICZpbmhlcml0YWJsZSkpCisgICAgICAgICZmZCwgJmluaGVyaXRhYmxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldF9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgZmQsIGluaGVyaXRhYmxlKTsKIAogZXhpdDoKQEAgLTUyNTgsMjAgKzU1MzgsMjIgQEAKICAgICB7ImdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSwgTUVUSF9PLCBvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKLW9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUpOworb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIGludHB0cl90IGhhbmRsZTsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfSU5UUFRSICI6Z2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsICZoYW5kbGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfSU5UUFRSICI6Z2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsICZoYW5kbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGhhbmRsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUyOTIsMTkgKzU1NzQsMjAgQEAKICAgICB7InNldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZSwgTUVUSF9WQVJBUkdTLCBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5oZXJpdGFibGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50cHRyX3QgaGFuZGxlOwogICAgIGludCBpbmhlcml0YWJsZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfSU5UUFRSICJwOnNldF9oYW5kbGVfaW5oZXJpdGFibGUiLAotICAgICAgICAmaGFuZGxlLCAmaW5oZXJpdGFibGUpKQorICAgICAgICAmaGFuZGxlLCAmaW5oZXJpdGFibGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBpbmhlcml0YWJsZSk7CiAKIGV4aXQ6CkBAIC01MzEzLDYgKzU1OTYsNzUgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAorUHlEb2NfU1RSVkFSKG9zX2ZzcGF0aF9fZG9jX18sCisiZnNwYXRoKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC5cbiIKKyJcbiIKKyJJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggYXMtaXMuIElmIHRoZVxuIgorIm9iamVjdCBkZWZpbmVzIF9fZnNwYXRoX18oKSwgdGhlbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGF0IG1ldGhvZC4gQWxsIG90aGVyXG4iCisidHlwZXMgcmFpc2UgYSBUeXBlRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfRlNQQVRIX01FVEhPRERFRiAgICBcCisgICAgeyJmc3BhdGgiLCAoUHlDRnVuY3Rpb24pb3NfZnNwYXRoLCBNRVRIX0ZBU1RDQUxMLCBvc19mc3BhdGhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzcGF0aF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzcGF0aChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOmZzcGF0aCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKnBhdGg7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnNwYXRoX2ltcGwobW9kdWxlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0dFVFJBTkRPTV9TWVNDQUxMKQorCitQeURvY19TVFJWQVIob3NfZ2V0cmFuZG9tX19kb2NfXywKKyJnZXRyYW5kb20oJG1vZHVsZSwgLywgc2l6ZSwgZmxhZ3M9MClcbiIKKyItLVxuIgorIlxuIgorIk9idGFpbiBhIHNlcmllcyBvZiByYW5kb20gYnl0ZXMuIik7CisKKyNkZWZpbmUgT1NfR0VUUkFORE9NX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRyYW5kb20iLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cmFuZG9tLCBNRVRIX0ZBU1RDQUxMLCBvc19nZXRyYW5kb21fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJhbmRvbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJhbmRvbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNpemUiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJufGk6Z2V0cmFuZG9tIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2l6ZSwgJmZsYWdzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHJhbmRvbV9pbXBsKG1vZHVsZSwgc2l6ZSwgZmxhZ3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NX1NZU0NBTEwpICovCisKICNpZm5kZWYgT1NfVFRZTkFNRV9NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfVFRZTkFNRV9NRVRIT0RERUYpICovCkBAIC01NDkzLDYgKzU4NDUsMTAgQEAKICAgICAjZGVmaW5lIE9TX0dFVEdJRF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHSURfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIE9TX0dFVFBJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFBJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRQSURfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIE9TX0dFVEdST1VQU19NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX0dFVEdST1VQU19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHUk9VUFNfTUVUSE9EREVGKSAqLwpAQCAtNTc0MSw2ICs2MDk3LDEwIEBACiAgICAgI2RlZmluZSBPU19TWVNDT05GX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZU0NPTkZfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIE9TX1NUQVJURklMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NUQVJURklMRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TVEFSVEZJTEVfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCiAgICAgI2RlZmluZSBPU19HRVRMT0FEQVZHX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVExPQURBVkdfTUVUSE9EREVGKSAqLwpAQCAtNTc4NCw0ICs2MTQ0LDggQEAKICNpZm5kZWYgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWQ1ZjgzMWIyMzE0NWQxZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisKKyNpZm5kZWYgT1NfR0VUUkFORE9NX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUkFORE9NX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFJBTkRPTV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjllZDU3MDNkMmZlYjBkOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaAppbmRleCBjYjE5MWEwLi5mOWUwNjQ0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKQEAgLTMzLDggKzMzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqYXJnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRwd25hbSIsICZhcmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0cHduYW0iLCAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB3ZF9nZXRwd25hbV9pbXBsKG1vZHVsZSwgYXJnKTsKIAogZXhpdDoKQEAgLTY4LDQgKzY5LDQgQEAKICNpZm5kZWYgUFdEX0dFVFBXQUxMX01FVEhPRERFRgogICAgICNkZWZpbmUgUFdEX0dFVFBXQUxMX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFBXRF9HRVRQV0FMTF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDBlYTFjNWM4MzJmMGMxYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmM0MWQ4ZDg4ZWMyMDZkOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaCBiL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCmluZGV4IGM1YjVjNzEuLjc1YTA5NmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCkBAIC0yNSw4ICsyNSw5IEBACiAgICAgaW50IGlzZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6UGFyc2UiLAotICAgICAgICAmZGF0YSwgJmlzZmluYWwpKQorICAgICAgICAmZGF0YSwgJmlzZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfUGFyc2VfaW1wbChzZWxmLCBkYXRhLCBpc2ZpbmFsKTsKIAogZXhpdDoKQEAgLTYwLDggKzYxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpiYXNlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOlNldEJhc2UiLCAmYmFzZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOlNldEJhc2UiLCAmYmFzZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlX2ltcGwoc2VsZiwgYmFzZSk7CiAKIGV4aXQ6CkBAIC0xMjksOCArMTMxLDkgQEAKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInp8czpFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsCi0gICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKQorICAgICAgICAmY29udGV4dCwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX2ltcGwoc2VsZiwgY29udGV4dCwgZW5jb2RpbmcpOwogCiBleGl0OgpAQCAtMTYwLDggKzE2Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZsYWc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6U2V0UGFyYW1FbnRpdHlQYXJzaW5nIiwgJmZsYWcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAmZmxhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfaW1wbChzZWxmLCBmbGFnKTsKIAogZXhpdDoKQEAgLTE5Myw4ICsxOTcsOSBAQAogICAgIGludCBmbGFnID0gMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6VXNlRm9yZWlnbkRURCIsCi0gICAgICAgICZmbGFnKSkKKyAgICAgICAgJmZsYWcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHNlbGYsIGZsYWcpOwogCiBleGl0OgpAQCAtMjI4LDI0ICsyMzMsMjYgQEAKICJSZXR1cm4gYSBuZXcgWE1MIHBhcnNlciBvYmplY3QuIik7CiAKICNkZWZpbmUgUFlFWFBBVF9QQVJTRVJDUkVBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7IlBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCisgICAgeyJQYXJzZXJDcmVhdGUiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF9QYXJzZXJDcmVhdGUsIE1FVEhfRkFTVENBTEwsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXB5ZXhwYXRfUGFyc2VyQ3JlYXRlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorcHlleHBhdF9QYXJzZXJDcmVhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgIm5hbWVzcGFjZV9zZXBhcmF0b3IiLCAiaW50ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsICJpbnRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8enpPOlBhcnNlckNyZWF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICppbnRlcm4gPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHp6TzpQYXJzZXJDcmVhdGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZuYW1lc3BhY2Vfc2VwYXJhdG9yLCAmaW50ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX2ltcGwobW9kdWxlLCBlbmNvZGluZywgbmFtZXNwYWNlX3NlcGFyYXRvciwgaW50ZXJuKTsKIAogZXhpdDoKQEAgLTI3MCw4ICsyNzcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGxvbmcgY29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImw6RXJyb3JTdHJpbmciLCAmY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X0Vycm9yU3RyaW5nX2ltcGwobW9kdWxlLCBjb2RlKTsKIAogZXhpdDoKQEAgLTI4MSw0ICsyODksNCBAQAogI2lmbmRlZiBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgogICAgICNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNDc5Y2ZhYjYwN2U5ZGM4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lODg5ZjdjNmFmNmNjNDJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKaW5kZXggNWI4ZGI4MC4uYjA4ZTkyZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKQEAgLTcyLDI0ICs3MiwyNiBAQAogIlJldHVybiBhIG5ldyBTSEExIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTFfU0hBMV9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMSIsIChQeUNGdW5jdGlvbilfc2hhMV9zaGExLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTFfc2hhMV9fZG9jX199LAorICAgIHsic2hhMSIsIChQeUNGdW5jdGlvbilfc2hhMV9zaGExLCBNRVRIX0ZBU1RDQUxMLCBfc2hhMV9zaGExX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhMV9zaGExX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhMV9zaGExKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTFfc2hhMShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGExIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhMV9zaGExX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI2YTE5NGZiYjBiOTRmMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQzMDQ1MGYzZjgwNjg5NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaAppbmRleCA2NjE1NjljLi4xMTVkYjUwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKQEAgLTcyLDIxICs3MiwyMyBAQAogIlJldHVybiBhIG5ldyBTSEEtMjU2IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTI1Nl9TSEEyNTZfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTI1NiIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTI1NiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGEyNTZfc2hhMjU2X19kb2NfX30sCisgICAgeyJzaGEyNTYiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyNTYsIE1FVEhfRkFTVENBTEwsIF9zaGEyNTZfc2hhMjU2X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhMjU2X3NoYTI1Nl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTI1Nl9zaGEyNTYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhMjU2X3NoYTI1NihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMjU2IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTI1NiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTI1Nl9zaGEyNTZfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CkBAIC0xMDAsMjQgKzEwMiwyNiBAQAogIlJldHVybiBhIG5ldyBTSEEtMjI0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTI1Nl9TSEEyMjRfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTIyNCIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTIyNCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGEyNTZfc2hhMjI0X19kb2NfX30sCisgICAgeyJzaGEyMjQiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyMjQsIE1FVEhfRkFTVENBTEwsIF9zaGEyNTZfc2hhMjI0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhMjU2X3NoYTIyNF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTI1Nl9zaGEyMjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhMjU2X3NoYTIyNChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMjI0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTIyNCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTI1Nl9zaGEyMjRfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YTFmYzU0ODBlMzk5Zjk1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTQzOWQ3MGRiN2VhZDVjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oCmluZGV4IGQ2NGMyYTQuLmEyYjU3ZjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaApAQCAtMiw4ICsyLDYgQEAKIHByZXNlcnZlCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfY29weV9fZG9jX18sCiAiY29weSgkc2VsZiwgLylcbiIKICItLVxuIgpAQCAtMjIsMTAgKzIwLDYgQEAKICAgICByZXR1cm4gU0hBNTEyVHlwZV9jb3B5X2ltcGwoc2VsZik7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9kaWdlc3RfX2RvY19fLAogImRpZ2VzdCgkc2VsZiwgLylcbiIKICItLVxuIgpAQCAtNDQsMTAgKzM4LDYgQEAKICAgICByZXR1cm4gU0hBNTEyVHlwZV9kaWdlc3RfaW1wbChzZWxmKTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2hleGRpZ2VzdF9fZG9jX18sCiAiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgogIi0tXG4iCkBAIC02NiwxMCArNTYsNiBAQAogICAgIHJldHVybiBTSEE1MTJUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfXywKICJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKICItLVxuIgpAQCAtNzksMTAgKzY1LDYgQEAKICNkZWZpbmUgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGICAgIFwKICAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilTSEE1MTJUeXBlX3VwZGF0ZSwgTUVUSF9PLCBTSEE1MTJUeXBlX3VwZGF0ZV9fZG9jX199LAogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKF9zaGE1MTJfc2hhNTEyX19kb2NfXywKICJzaGE1MTIoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgogIi0tXG4iCkBAIC05MCwzMSArNzIsMjkgQEAKICJSZXR1cm4gYSBuZXcgU0hBLTUxMiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRiAgICBcCi0gICAgeyJzaGE1MTIiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGE1MTIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTUxMl9fZG9jX199LAorICAgIHsic2hhNTEyIiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhNTEyLCBNRVRIX0ZBU1RDQUxMLCBfc2hhNTEyX3NoYTUxMl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NoYTUxMl9zaGE1MTJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGE1MTJfc2hhNTEyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTUxMl9zaGE1MTIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTUxMiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGE1MTIiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGE1MTJfc2hhNTEyX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoX3NoYTUxMl9zaGEzODRfX2RvY19fLAogInNoYTM4NCgkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCiAiLS1cbiIKQEAgLTEyMiw1MCArMTAyLDI2IEBACiAiUmV0dXJuIGEgbmV3IFNIQS0zODQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMzg0IiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhMzg0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTUxMl9zaGEzODRfX2RvY19ffSwKKyAgICB7InNoYTM4NCIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTM4NCwgTUVUSF9GQVNUQ0FMTCwgX3NoYTUxMl9zaGEzODRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGE1MTJfc2hhMzg0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhNTEyX3NoYTM4NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGE1MTJfc2hhMzg0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGEzODQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMzg0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhNTEyX3NoYTM4NF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgotICAgICNkZWZpbmUgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCi0gICAgI2RlZmluZSBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCi0gICAgI2RlZmluZSBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmI4N2Y0OTRkZjUwZmZjMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MThmMTU1OThjMzQ4NzA0NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaAppbmRleCBjOGY0Y2Q1Li5mOGQ1YmQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKQEAgLTIzLDExICsyMywxMyBAQAogICAgIGludCBzZWNvbmRzOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTphbGFybSIsICZzZWNvbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6YWxhcm0iLCAmc2Vjb25kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2FsYXJtX2ltcGwobW9kdWxlLCBzZWNvbmRzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtODUsOCArODcsOSBAQAogICAgIFB5T2JqZWN0ICpoYW5kbGVyOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpzaWduYWwiLAotICAgICAgICAmc2lnbmFsbnVtLCAmaGFuZGxlcikpCisgICAgICAgICZzaWduYWxudW0sICZoYW5kbGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWduYWxfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgaGFuZGxlcik7CiAKIGV4aXQ6CkBAIC0xMTcsOCArMTIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgc2lnbmFsbnVtOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldHNpZ25hbCIsICZzaWduYWxudW0pKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRzaWduYWwiLCAmc2lnbmFsbnVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9nZXRzaWduYWxfaW1wbChtb2R1bGUsIHNpZ25hbG51bSk7CiAKIGV4aXQ6CkBAIC0xNTAsOCArMTU0LDkgQEAKICAgICBpbnQgZmxhZzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2lnaW50ZXJydXB0IiwKLSAgICAgICAgJnNpZ25hbG51bSwgJmZsYWcpKQorICAgICAgICAmc2lnbmFsbnVtLCAmZmxhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lnaW50ZXJydXB0X2ltcGwobW9kdWxlLCBzaWduYWxudW0sIGZsYWcpOwogCiBleGl0OgpAQCAtMTg5LDggKzE5NCw5IEBACiAgICAgZG91YmxlIGludGVydmFsID0gMC4wOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZHxkOnNldGl0aW1lciIsCi0gICAgICAgICZ3aGljaCwgJnNlY29uZHMsICZpbnRlcnZhbCkpCisgICAgICAgICZ3aGljaCwgJnNlY29uZHMsICZpbnRlcnZhbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCwgc2Vjb25kcywgaW50ZXJ2YWwpOwogCiBleGl0OgpAQCAtMjE5LDggKzIyNSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHdoaWNoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldGl0aW1lciIsICZ3aGljaCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldGl0aW1lciIsICZ3aGljaCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfZ2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCk7CiAKIGV4aXQ6CkBAIC0yNTEsOCArMjU4LDkgQEAKICAgICBQeU9iamVjdCAqbWFzazsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cHRocmVhZF9zaWdtYXNrIiwKLSAgICAgICAgJmhvdywgJm1hc2spKQorICAgICAgICAmaG93LCAmbWFzaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9zaWdtYXNrX2ltcGwobW9kdWxlLCBob3csIG1hc2spOwogCiBleGl0OgpAQCAtMzQ0LDggKzM1Miw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzaWd0aW1lZHdhaXQiLAogICAgICAgICAyLCAyLAotICAgICAgICAmc2lnc2V0LCAmdGltZW91dF9vYmopKQorICAgICAgICAmc2lnc2V0LCAmdGltZW91dF9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ3RpbWVkd2FpdF9pbXBsKG1vZHVsZSwgc2lnc2V0LCB0aW1lb3V0X29iaik7CiAKIGV4aXQ6CkBAIC0zNzYsOCArMzg1LDkgQEAKICAgICBpbnQgc2lnbmFsbnVtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJsaTpwdGhyZWFkX2tpbGwiLAotICAgICAgICAmdGhyZWFkX2lkLCAmc2lnbmFsbnVtKSkKKyAgICAgICAgJnRocmVhZF9pZCwgJnNpZ25hbG51bSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9raWxsX2ltcGwobW9kdWxlLCB0aHJlYWRfaWQsIHNpZ25hbG51bSk7CiAKIGV4aXQ6CkBAIC00MjksNCArNDM5LDQgQEAKICNpZm5kZWYgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKICAgICAjZGVmaW5lIFNJR05BTF9QVEhSRUFEX0tJTExfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGFmYTU5ODQxMmJmYjhkMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzY5OTBlZjBkMGJhNzJiNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCmluZGV4IGUyNmFjZjEuLmIyNDc5ZmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCkBAIC0yNCw4ICsyNCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFyZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0c3BuYW0iLCAmYXJnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHNwbmFtIiwgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzcHdkX2dldHNwbmFtX2ltcGwobW9kdWxlLCBhcmcpOwogCiBleGl0OgpAQCAtNjUsNCArNjYsNCBAQAogI2lmbmRlZiBTUFdEX0dFVFNQQUxMX01FVEhPRERFRgogICAgICNkZWZpbmUgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChTUFdEX0dFVFNQQUxMX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MTBmNjgxYjM2ZjU0YzMwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wN2NkOGFmMGFmZDc3ZmU3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaCBiL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaAppbmRleCBkNTIwYzFlLi5kNDgxY2NiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oCkBAIC0yNyw4ICsyNyw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86ZGVjaW1hbCIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtNTksOCArNjAsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOmRpZ2l0IiwKLSAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGlnaXRfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtOTIsOCArOTQsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOm51bWVyaWMiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9udW1lcmljX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTExOCw4ICsxMjEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y2F0ZWdvcnkiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y2F0ZWdvcnkiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9jYXRlZ29yeV9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0xNDYsOCArMTUwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmJpZGlyZWN0aW9uYWwiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6YmlkaXJlY3Rpb25hbCIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWxfaW1wbChzZWxmLCBjaHIpOwogCiBleGl0OgpAQCAtMTc1LDExICsxODAsMTMgQEAKICAgICBpbnQgY2hyOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNvbWJpbmluZyIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjb21iaW5pbmciLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nX2ltcGwoc2VsZiwgY2hyKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjA4LDExICsyMTUsMTMgQEAKICAgICBpbnQgY2hyOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOm1pcnJvcmVkIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOm1pcnJvcmVkIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX2ltcGwoc2VsZiwgY2hyKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjM3LDggKzI0Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzplYXN0X2FzaWFuX3dpZHRoIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmVhc3RfYXNpYW5fd2lkdGgiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTI2NSw4ICsyNzUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZGVjb21wb3NpdGlvbiIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpkZWNvbXBvc2l0aW9uIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0yOTYsOCArMzA3LDkgQEAKICAgICBQeU9iamVjdCAqaW5wdXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPITpub3JtYWxpemUiLAotICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKQorICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9pbXBsKHNlbGYsIGZvcm0sIGlucHV0KTsKIAogZXhpdDoKQEAgLTMyNyw4ICszMzksOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOm5hbWUiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9uYW1lX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM1OCwxMSArMzcxLDEyIEBACiAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICBQeV9zc2l6ZV9jbGVhbl90IG5hbWVfbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzIzpsb29rdXAiLCAmbmFtZSwgJm5hbWVfbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOmxvb2t1cCIsICZuYW1lLCAmbmFtZV9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2xvb2t1cF9pbXBsKHNlbGYsIG5hbWUsIG5hbWVfbGVuZ3RoKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmOGRhMzNjNmJjNmVmYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzMTNjZTEyOWRhODdiMmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvemxpYm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAppbmRleCBiMWFmN2NlLi5mZGEzOTJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaApAQCAtMyw0NCArMyw0OCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBQeURvY19TVFJWQVIoemxpYl9jb21wcmVzc19fZG9jX18sCi0iY29tcHJlc3MoJG1vZHVsZSwgYnl0ZXMsIGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTiwgLylcbiIKKyJjb21wcmVzcygkbW9kdWxlLCBkYXRhLCAvLCBsZXZlbD1aX0RFRkFVTFRfQ09NUFJFU1NJT04pXG4iCiAiLS1cbiIKICJcbiIKICJSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLlxuIgogIlxuIgotIiAgYnl0ZXNcbiIKKyIgIGRhdGFcbiIKICIgICAgQmluYXJ5IGRhdGEgdG8gYmUgY29tcHJlc3NlZC5cbiIKICIgIGxldmVsXG4iCi0iICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkuIik7CisiICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkgb3IgLTEuIik7CiAKICNkZWZpbmUgWkxJQl9DT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX2NvbXByZXNzX19kb2NfX30sCisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCB6bGliX2NvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpieXRlcywgaW50IGxldmVsKTsKK3psaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBsZXZlbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoremxpYl9jb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBieXRlcyA9IHtOVUxMLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAibGV2ZWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpOmNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgbGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGk6Y29tcHJlc3MiLAotICAgICAgICAmYnl0ZXMsICZsZXZlbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbGV2ZWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzX2ltcGwobW9kdWxlLCAmYnl0ZXMsIGxldmVsKTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jb21wcmVzc19pbXBsKG1vZHVsZSwgJmRhdGEsIGxldmVsKTsKIAogZXhpdDoKLSAgICAvKiBDbGVhbnVwIGZvciBieXRlcyAqLwotICAgIGlmIChieXRlcy5vYmopCi0gICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnl0ZXMpOworICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiBQeURvY19TVFJWQVIoemxpYl9kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKCRtb2R1bGUsIGRhdGEsIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUsIC8pXG4iCisiZGVjb21wcmVzcygkbW9kdWxlLCBkYXRhLCAvLCB3Yml0cz1NQVhfV0JJVFMsIGJ1ZnNpemU9REVGX0JVRl9TSVpFKVxuIgogIi0tXG4iCiAiXG4iCiAiUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YS5cbiIKQEAgLTUzLDI5ICs1NywzMyBAQAogIiAgICBUaGUgaW5pdGlhbCBvdXRwdXQgYnVmZmVyIHNpemUuIik7CiAKICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCB6bGliX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZzaXplKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfZGVjb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3psaWJfZGVjb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJ3Yml0cyIsICJidWZzaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8aU8mOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3Yml0cyA9IE1BWF9XQklUUzsKICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUgPSBERUZfQlVGX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGlPJjpkZWNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEsICZ3Yml0cywgc3NpemVfdF9jb252ZXJ0ZXIsICZidWZzaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZ3Yml0cywgc3NpemVfdF9jb252ZXJ0ZXIsICZidWZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfZGVjb21wcmVzc19pbXBsKG1vZHVsZSwgJmRhdGEsIHdiaXRzLCBidWZzaXplKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMTEsMTcgKzExOSwxOCBAQAogIiAgICBjb250YWluaW5nIHN1YnNlcXVlbmNlcyB0aGF0IGFyZSBsaWtlbHkgdG8gb2NjdXIgaW4gdGhlIGlucHV0IGRhdGEuIik7CiAKICNkZWZpbmUgWkxJQl9DT01QUkVTU09CSl9NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHpsaWJfY29tcHJlc3NvYmpfX2RvY19ffSwKKyAgICB7ImNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3NvYmosIE1FVEhfRkFTVENBTEwsIHpsaWJfY29tcHJlc3NvYmpfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfY29tcHJlc3NvYmpfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywKICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgUHlfYnVmZmVyICp6ZGljdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoremxpYl9jb21wcmVzc29iaihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibGV2ZWwiLCAibWV0aG9kIiwgIndiaXRzIiwgIm1lbUxldmVsIiwgInN0cmF0ZWd5IiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGV2ZWwiLCAibWV0aG9kIiwgIndiaXRzIiwgIm1lbUxldmVsIiwgInN0cmF0ZWd5IiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKICAgICBpbnQgbWV0aG9kID0gREVGTEFURUQ7CiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwpAQCAtMTI5LDE1ICsxMzgsMTcgQEAKICAgICBpbnQgc3RyYXRlZ3kgPSBaX0RFRkFVTFRfU1RSQVRFR1k7CiAgICAgUHlfYnVmZmVyIHpkaWN0ID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCi0gICAgICAgICZsZXZlbCwgJm1ldGhvZCwgJndiaXRzLCAmbWVtTGV2ZWwsICZzdHJhdGVneSwgJnpkaWN0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsICZtZW1MZXZlbCwgJnN0cmF0ZWd5LCAmemRpY3QpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jb21wcmVzc29ial9pbXBsKG1vZHVsZSwgbGV2ZWwsIG1ldGhvZCwgd2JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSwgJnpkaWN0KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciB6ZGljdCAqLwotICAgIGlmICh6ZGljdC5vYmopCisgICAgaWYgKHpkaWN0Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnpkaWN0KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTU1LDIyICsxNjYsMjQgQEAKICIgICAgZGljdGlvbmFyeSBhcyB1c2VkIGJ5IHRoZSBjb21wcmVzc29yIHRoYXQgcHJvZHVjZWQgdGhlIGlucHV0IGRhdGEuIik7CiAKICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTT0JKX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHpsaWJfZGVjb21wcmVzc29ial9fZG9jX199LAorICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3NvYmosIE1FVEhfRkFTVENBTEwsIHpsaWJfZGVjb21wcmVzc29ial9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9kZWNvbXByZXNzb2JqX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHdiaXRzLCBQeU9iamVjdCAqemRpY3QpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9kZWNvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoremxpYl9kZWNvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3Yml0cyIsICJ6ZGljdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IndiaXRzIiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGlPOmRlY29tcHJlc3NvYmoiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCB3Yml0cyA9IE1BWF9XQklUUzsKICAgICBQeU9iamVjdCAqemRpY3QgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlPOmRlY29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCi0gICAgICAgICZ3Yml0cywgJnpkaWN0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJndiaXRzLCAmemRpY3QpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9kZWNvbXByZXNzb2JqX2ltcGwobW9kdWxlLCB3Yml0cywgemRpY3QpOwogCiBleGl0OgpAQCAtMjAyLDIwICsyMTUsMjIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfQ29tcHJlc3NfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiBQeURvY19TVFJWQVIoemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoJHNlbGYsIGRhdGEsIG1heF9sZW5ndGg9MCwgLylcbiIKKyJkZWNvbXByZXNzKCRzZWxmLCBkYXRhLCAvLCBtYXhfbGVuZ3RoPTApXG4iCiAiLS1cbiIKICJcbiIKICJSZXR1cm4gYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIHZlcnNpb24gb2YgdGhlIGRhdGEuXG4iCkBAIC0yMzIsMjggKzI0NywzMiBAQAogIkNhbGwgdGhlIGZsdXNoKCkgbWV0aG9kIHRvIGNsZWFyIHRoZXNlIGJ1ZmZlcnMuIik7CiAKICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzKGNvbXBvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoremxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfE8mOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfE8mOmRlY29tcHJlc3MiLAotICAgICAgICAmZGF0YSwgc3NpemVfdF9jb252ZXJ0ZXIsICZtYXhfbGVuZ3RoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsIHNzaXplX3RfY29udmVydGVyLCAmbWF4X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODMsOCArMzAyLDkgQEAKICAgICBpbnQgbW9kZSA9IFpfRklOSVNIOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpmbHVzaCIsCi0gICAgICAgICZtb2RlKSkKKyAgICAgICAgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9Db21wcmVzc19mbHVzaF9pbXBsKHNlbGYsIG1vZGUpOwogCiBleGl0OgpAQCAtMzU3LDggKzM3Nyw5IEBACiAgICAgUHlfc3NpemVfdCBsZW5ndGggPSBERUZfQlVGX1NJWkU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpmbHVzaCIsCi0gICAgICAgIHNzaXplX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgc3NpemVfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9EZWNvbXByZXNzX2ZsdXNoX2ltcGwoc2VsZiwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTM5MCwxNCArNDExLDE2IEBACiAgICAgdW5zaWduZWQgaW50IHZhbHVlID0gMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STphZGxlcjMyIiwKLSAgICAgICAgJmRhdGEsICZ2YWx1ZSkpCisgICAgICAgICZkYXRhLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9hZGxlcjMyX2ltcGwobW9kdWxlLCAmZGF0YSwgdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQyNywxNCArNDUwLDE2IEBACiAgICAgdW5zaWduZWQgaW50IHZhbHVlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STpjcmMzMiIsCi0gICAgICAgICZkYXRhLCAmdmFsdWUpKQorICAgICAgICAmZGF0YSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDQyLDQgKzQ2Nyw0IEBACiAjaWZuZGVmIFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYKICAgICAjZGVmaW5lIFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3MTFlZjAyZDFkNTc3NmMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhNGUyYmZlNzUwNDIzYTMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbWF0aG1vZHVsZS5jIGIvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCmluZGV4IGNiYTQyYTcuLjgzMTk3NjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY21hdGhtb2R1bGUuYworKysgYi9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKQEAgLTgxLDYgKzgxLDU0IEBACiAjZW5kaWYKICNkZWZpbmUgQ01fU0NBTEVfRE9XTiAoLShDTV9TQ0FMRV9VUCsxKS8yKQogCisvKiBDb25zdGFudHMgY21hdGguaW5mLCBjbWF0aC5pbmZqLCBjbWF0aC5uYW4sIGNtYXRoLm5hbmouCisgICBjbWF0aC5uYW4gYW5kIGNtYXRoLm5hbmogYXJlIGRlZmluZWQgb25seSB3aGVuIGVpdGhlcgorICAgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUiBpcyAqbm90KiBkZWZpbmVkICh3aGljaCBzaG91bGQgYmUKKyAgIHRoZSBtb3N0IGNvbW1vbiBzaXR1YXRpb24gb24gbWFjaGluZXMgdXNpbmcgYW4gSUVFRSA3NTQKKyAgIHJlcHJlc2VudGF0aW9uKSwgb3IgUHlfTkFOIGlzIGRlZmluZWQuICovCisKK3N0YXRpYyBkb3VibGUKK21faW5mKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX2luZmluaXR5KDApOworI2Vsc2UKKyAgICByZXR1cm4gUHlfSFVHRV9WQUw7CisjZW5kaWYKK30KKworc3RhdGljIFB5X2NvbXBsZXgKK2NfaW5maih2b2lkKQoreworICAgIFB5X2NvbXBsZXggcjsKKyAgICByLnJlYWwgPSAwLjA7CisgICAgci5pbWFnID0gbV9pbmYoKTsKKyAgICByZXR1cm4gcjsKK30KKworI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQorCitzdGF0aWMgZG91YmxlCittX25hbih2b2lkKQoreworI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgcmV0dXJuIF9QeV9kZ19zdGRuYW4oMCk7CisjZWxzZQorICAgIHJldHVybiBQeV9OQU47CisjZW5kaWYKK30KKworc3RhdGljIFB5X2NvbXBsZXgKK2NfbmFuaih2b2lkKQoreworICAgIFB5X2NvbXBsZXggcjsKKyAgICByLnJlYWwgPSAwLjA7CisgICAgci5pbWFnID0gbV9uYW4oKTsKKyAgICByZXR1cm4gcjsKK30KKworI2VuZGlmCisKIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCiBzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hc2luaF9pbXBsKFB5T2JqZWN0ICosIFB5X2NvbXBsZXgpOwogc3RhdGljIFB5X2NvbXBsZXggY21hdGhfYXRhbmhfaW1wbChQeU9iamVjdCAqLCBQeV9jb21wbGV4KTsKQEAgLTEyMzksNiArMTI4NywxMyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAicGkiLAogICAgICAgICAgICAgICAgICAgICAgICBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9QSSkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX0UpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRhdSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1RBVSkpOyAvKiAycGkgKi8KKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX2luZigpKSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbmZqIiwgUHlDb21wbGV4X0Zyb21DQ29tcGxleChjX2luZmooKSkpOworI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmFuIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1fbmFuKCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm5hbmoiLCBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KGNfbmFuaigpKSk7CisjZW5kaWYKIAogICAgIC8qIGluaXRpYWxpemUgc3BlY2lhbCB2YWx1ZSB0YWJsZXMgKi8KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKaW5kZXggZjFmZGE0OC4uMWMxZTRmYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYworKysgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCkBAIC0xMTksNyArMTE5LDcgQEAKICAgICAgICBoYW5kbGVyIGZhaWxzIGluIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpICovCiAgICAge1NJR1NFR1YsIDAsICJTZWdtZW50YXRpb24gZmF1bHQiLCB9CiB9Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZmF1bHRoYW5kbGVyX25zaWduYWxzID0gXAorc3RhdGljIGNvbnN0IHNpemVfdCBmYXVsdGhhbmRsZXJfbnNpZ25hbHMgPSBcCiAgICAgUHlfQVJSQVlfTEVOR1RIKGZhdWx0aGFuZGxlcl9oYW5kbGVycyk7CiAKICNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCkBAIC0xNTksNyArMTU5LDcgQEAKICAgICAgICAgZmQgPSBfUHlMb25nX0FzSW50KGZpbGUpOwogICAgICAgICBpZiAoZmQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGZkIDwgMCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBpZiAoZmQgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgICAgICByZXR1cm4gZmQ7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9maWxlbm8sICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgZWxzZSB7CkBAIC0yMDIsOCArMjAyLDkgQEAKIHN0YXRpYyBQeVRocmVhZFN0YXRlKgogZ2V0X3RocmVhZF9zdGF0ZSh2b2lkKQogewotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIGp1c3QgaW4gY2FzZSBidXQgdmVyeSB1bmxpa2VseS4uLiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjM0LDExICsyMzUsMTIgQEAKICAgICAgICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpLiAqLwogICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CiAjZWxzZQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CiAjZW5kaWYKIAotICAgIGlmIChhbGxfdGhyZWFkcykKLSAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBpbnRlcnAsIHRzdGF0ZSk7CisgICAgaWYgKGFsbF90aHJlYWRzKSB7CisgICAgICAgICh2b2lkKV9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgTlVMTCwgdHN0YXRlKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICh0c3RhdGUgIT0gTlVMTCkKICAgICAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrKGZkLCB0c3RhdGUpOwpAQCAtMjcyLDcgKzI3NCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKGFsbF90aHJlYWRzKSB7Ci0gICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgdHN0YXRlLT5pbnRlcnAsIHRzdGF0ZSk7CisgICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgTlVMTCwgdHN0YXRlKTsKICAgICAgICAgaWYgKGVycm1zZyAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBlcnJtc2cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yODgsNiArMjkwLDE5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcikKK3sKKyAgICBpZiAoIWhhbmRsZXItPmVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBoYW5kbGVyLT5lbmFibGVkID0gMDsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICh2b2lkKXNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7CisjZWxzZQorICAgICh2b2lkKXNpZ25hbChoYW5kbGVyLT5zaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKKyNlbmRpZgorfQorCiAKIC8qIEhhbmRsZXIgZm9yIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgc2lnbmFscy4KIApAQCAtMzA2LDcgKzMyMSw3IEBACiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoaW50IHNpZ251bSkKIHsKICAgICBjb25zdCBpbnQgZmQgPSBmYXRhbF9lcnJvci5mZDsKLSAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzaXplX3QgaTsKICAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXIgPSBOVUxMOwogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAKQEAgLTMyNCwxMiArMzM5LDcgQEAKICAgICB9CiAKICAgICAvKiByZXN0b3JlIHRoZSBwcmV2aW91cyBoYW5kbGVyICovCi0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAodm9pZClzaWdhY3Rpb24oc2lnbnVtLCAmaGFuZGxlci0+cHJldmlvdXMsIE5VTEwpOwotI2Vsc2UKLSAgICAodm9pZClzaWduYWwoc2lnbnVtLCBoYW5kbGVyLT5wcmV2aW91cyk7Ci0jZW5kaWYKLSAgICBoYW5kbGVyLT5lbmFibGVkID0gMDsKKyAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGhhbmRsZXIpOwogCiAgICAgUFVUUyhmZCwgIkZhdGFsIFB5dGhvbiBlcnJvcjogIik7CiAgICAgUFVUUyhmZCwgaGFuZGxlci0+bmFtZSk7CkBAIC0zNTEsMjAgKzM2MSwxMTcgQEAKICAgICByYWlzZShzaWdudW0pOwogfQogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIExPTkcgV0lOQVBJCitmYXVsdGhhbmRsZXJfZXhjX2hhbmRsZXIoc3RydWN0IF9FWENFUFRJT05fUE9JTlRFUlMgKmV4Y19pbmZvKQoreworICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOworICAgIERXT1JEIGNvZGUgPSBleGNfaW5mby0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25Db2RlOworICAgIERXT1JEIGZsYWdzID0gZXhjX2luZm8tPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uRmxhZ3M7CisKKyAgICAvKiBvbmx5IGxvZyBmYXRhbCBleGNlcHRpb25zICovCisgICAgaWYgKGZsYWdzICYgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFKSB7CisgICAgICAgIC8qIGNhbGwgdGhlIG5leHQgZXhjZXB0aW9uIGhhbmRsZXIgKi8KKyAgICAgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7CisgICAgfQorCisgICAgUFVUUyhmZCwgIldpbmRvd3MgZmF0YWwgZXhjZXB0aW9uOiAiKTsKKyAgICBzd2l0Y2ggKGNvZGUpCisgICAgeworICAgIC8qIG9ubHkgZm9ybWF0IG1vc3QgY29tbW9uIGVycm9ycyAqLworICAgIGNhc2UgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT046IFBVVFMoZmQsICJhY2Nlc3MgdmlvbGF0aW9uIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9ESVZJREVfQllfWkVSTzogUFVUUyhmZCwgImZsb2F0IGRpdmlkZSBieSB6ZXJvIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9PVkVSRkxPVzogUFVUUyhmZCwgImZsb2F0IG92ZXJmbG93Iik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTzogUFVUUyhmZCwgImludCBkaXZpZGUgYnkgemVybyIpOyBicmVhazsKKyAgICBjYXNlIEVYQ0VQVElPTl9JTlRfT1ZFUkZMT1c6IFBVVFMoZmQsICJpbnRlZ2VyIG92ZXJmbG93Iik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0lOX1BBR0VfRVJST1I6IFBVVFMoZmQsICJwYWdlIGVycm9yIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XOiBQVVRTKGZkLCAic3RhY2sgb3ZlcmZsb3ciKTsgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUFVUUyhmZCwgImNvZGUgIik7CisgICAgICAgIF9QeV9EdW1wRGVjaW1hbChmZCwgY29kZSk7CisgICAgfQorICAgIFBVVFMoZmQsICJcblxuIik7CisKKyAgICBpZiAoY29kZSA9PSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTikgeworICAgICAgICAvKiBkaXNhYmxlIHNpZ25hbCBoYW5kbGVyIGZvciBTSUdTRUdWICovCisgICAgICAgIHNpemVfdCBpOworICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgICAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOworICAgICAgICAgICAgaWYgKGhhbmRsZXItPnNpZ251bSA9PSBTSUdTRUdWKSB7CisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGVfZmF0YWxfaGFuZGxlcihoYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayhmZCwgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdGFsX2Vycm9yLmludGVycCk7CisKKyAgICAvKiBjYWxsIHRoZSBuZXh0IGV4Y2VwdGlvbiBoYW5kbGVyICovCisgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7Cit9CisjZW5kaWYKKwogLyogSW5zdGFsbCB0aGUgaGFuZGxlciBmb3IgZmF0YWwgc2lnbmFscywgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkuICovCiAKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl9lbmFibGUodm9pZCkKK3sKKyAgICBzaXplX3QgaTsKKworICAgIGlmIChmYXRhbF9lcnJvci5lbmFibGVkKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKKworICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworI2VuZGlmCisgICAgICAgIGludCBlcnI7CisKKyAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgIGFzc2VydCghaGFuZGxlci0+ZW5hYmxlZCk7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7CisgICAgICAgIHNpZ2VtcHR5c2V0KCZhY3Rpb24uc2FfbWFzayk7CisgICAgICAgIC8qIERvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbgorICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX05PREVGRVI7CisjaWZkZWYgSEFWRV9TSUdBTFRTVEFDSworICAgICAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjaworICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgc2lnYWx0c3RhY2soKSAqLworICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBlcnIgPSBzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmYWN0aW9uLCAmaGFuZGxlci0+cHJldmlvdXMpOworI2Vsc2UKKyAgICAgICAgaGFuZGxlci0+cHJldmlvdXMgPSBzaWduYWwoaGFuZGxlci0+c2lnbnVtLAorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcik7CisgICAgICAgIGVyciA9IChoYW5kbGVyLT5wcmV2aW91cyA9PSBTSUdfRVJSKTsKKyNlbmRpZgorICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfUnVudGltZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGhhbmRsZXItPmVuYWJsZWQgPSAxOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBBZGRWZWN0b3JlZEV4Y2VwdGlvbkhhbmRsZXIoMSwgZmF1bHRoYW5kbGVyX2V4Y19oYW5kbGVyKTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgUHlPYmplY3QqCi1mYXVsdGhhbmRsZXJfZW5hYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2ZhdWx0aGFuZGxlcl9weV9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJhbGxfdGhyZWFkcyIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKICAgICBpbnQgYWxsX3RocmVhZHMgPSAxOwotICAgIHVuc2lnbmVkIGludCBpOwotICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcjsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwotI2VuZGlmCi0gICAgaW50IGVycjsKICAgICBpbnQgZmQ7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogCkBAIC0zODYsMzcgKzQ5MywxMCBAQAogICAgIGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CiAgICAgZmF0YWxfZXJyb3IuaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CiAKLSAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKLSAgICAgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDE7Ci0KLSAgICAgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgewotICAgICAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAgICAgICAgIGFjdGlvbi5zYV9oYW5kbGVyID0gZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yOwotICAgICAgICAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKLSAgICAgICAgICAgIC8qIERvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbgotICAgICAgICAgICAgICAgaXRzIG93biBzaWduYWwgaGFuZGxlciAqLwotICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfTk9ERUZFUjsKLSNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCi0gICAgICAgICAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIC8qIENhbGwgdGhlIHNpZ25hbCBoYW5kbGVyIG9uIGFuIGFsdGVybmF0ZSBzaWduYWwgc3RhY2sKLSAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBieSBzaWdhbHRzdGFjaygpICovCi0gICAgICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIGVyciA9IHNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZhY3Rpb24sICZoYW5kbGVyLT5wcmV2aW91cyk7Ci0jZWxzZQotICAgICAgICAgICAgaGFuZGxlci0+cHJldmlvdXMgPSBzaWduYWwoaGFuZGxlci0+c2lnbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKTsKLSAgICAgICAgICAgIGVyciA9IChoYW5kbGVyLT5wcmV2aW91cyA9PSBTSUdfRVJSKTsKLSNlbmRpZgotICAgICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDE7Ci0gICAgICAgIH0KKyAgICBpZiAoZmF1bHRoYW5kbGVyX2VuYWJsZSgpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtNDMwLDE0ICs1MTAsNyBAQAogICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMDsKICAgICAgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgewogICAgICAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZXItPmVuYWJsZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAgICAgICAgICh2b2lkKXNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7Ci0jZWxzZQotICAgICAgICAgICAgKHZvaWQpc2lnbmFsKGhhbmRsZXItPnNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOwotI2VuZGlmCi0gICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMDsKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoaGFuZGxlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ2OSw3ICs1NDIsNiBAQAogewogICAgIFB5TG9ja1N0YXR1cyBzdDsKICAgICBjb25zdCBjaGFyKiBlcnJtc2c7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudDsKICAgICBpbnQgb2s7CiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQogICAgIHNpZ3NldF90IHNldDsKQEAgLTQ4OSwxMiArNTYxLDkgQEAKICAgICAgICAgLyogVGltZW91dCA9PiBkdW1wIHRyYWNlYmFjayAqLwogICAgICAgICBhc3NlcnQoc3QgPT0gUFlfTE9DS19GQUlMVVJFKTsKIAotICAgICAgICAvKiBnZXQgdGhlIHRocmVhZCBob2xkaW5nIHRoZSBHSUwsIE5VTEwgaWYgbm8gdGhyZWFkIGhvbGQgdGhlIEdJTCAqLwotICAgICAgICBjdXJyZW50ID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7Ci0KICAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UodGhyZWFkLmZkLCB0aHJlYWQuaGVhZGVyLCAoaW50KXRocmVhZC5oZWFkZXJfbGVuKTsKIAotICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBjdXJyZW50KTsKKyAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKHRocmVhZC5mZCwgdGhyZWFkLmludGVycCwgTlVMTCk7CiAgICAgICAgIG9rID0gKGVycm1zZyA9PSBOVUxMKTsKIAogICAgICAgICBpZiAodGhyZWFkLmV4aXQpCkBAIC04OTQsNyArOTYzLDcgQEAKIGZhdWx0aGFuZGxlcl9zaWdzZWd2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcmVsZWFzZV9naWwgPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X3JlYWRfbnVsbCIsICZyZWxlYXNlX2dpbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfc2lnc2VndiIsICZyZWxlYXNlX2dpbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHJlbGVhc2VfZ2lsKSB7CkBAIC05MDcsNiArOTc2LDQ5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl90aHJlYWQodm9pZCAqcGxvY2spCit7CisgICAgUHlUaHJlYWRfdHlwZV9sb2NrICpsb2NrID0gKFB5VGhyZWFkX3R5cGVfbG9jayAqKXBsb2NrOworCisgICAgUHlfRmF0YWxFcnJvcigiaW4gbmV3IHRocmVhZCIpOworCisgICAgLyogbm90aWZ5IHRoZSBjYWxsZXIgdGhhdCB3ZSBhcmUgZG9uZSAqLworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhsb2NrKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9jX3RocmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgbG9uZyB0aHJlYWQ7CisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CisKKyAgICBsb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChsb2NrID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKGxvY2ssIFdBSVRfTE9DSyk7CisKKyAgICB0aHJlYWQgPSBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl90aHJlYWQsIGxvY2spOworICAgIGlmICh0aHJlYWQgPT0gLTEpIHsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKGxvY2spOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAidW5hYmxlIHRvIHN0YXJ0IHRoZSB0aHJlYWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogd2FpdCB1bnRpbCB0aGUgdGhyZWFkIGNvbXBsZXRlczogaXQgd2lsbCBuZXZlciBvY2N1ciwgc2luY2UgUHlfRmF0YWxFcnJvcigpCisgICAgICAgZXhpdHMgdGhlIHByb2Nlc3MgaW1tZWRpYWx0eS4gKi8KKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sobG9jaywgV0FJVF9MT0NLKTsKKyAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sobG9jayk7CisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKGxvY2spOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5T2JqZWN0ICoKIGZhdWx0aGFuZGxlcl9zaWdmcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtOTUxLDYgKzEwNjMsOCBAQAogfQogCiAjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorI2RlZmluZSBGQVVMVEhBTkRMRVJfU1RBQ0tfT1ZFUkZMT1cKKwogI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKICAgIC8qIElzc3VlICMyMzY1NDogVHVybiBvZmYgSUNDJ3MgdGFpbCBjYWxsIG9wdGltaXphdGlvbiBmb3IgdGhlCiAgICAgKiBzdGFja19vdmVyZmxvdyBnZW5lcmF0b3IuIElDQyB0dXJucyB0aGUgcmVjdXJzaXZlIHRhaWwgY2FsbCBpbnRvCkBAIC05NTgsMTIgKzEwNzIsMTIgQEAKICMgIHByYWdtYSBpbnRlbCBvcHRpbWl6YXRpb25fbGV2ZWwgMAogI2VuZGlmCiBzdGF0aWMKLVB5X3VpbnRwdHJfdAotc3RhY2tfb3ZlcmZsb3coUHlfdWludHB0cl90IG1pbl9zcCwgUHlfdWludHB0cl90IG1heF9zcCwgc2l6ZV90ICpkZXB0aCkKK3VpbnRwdHJfdAorc3RhY2tfb3ZlcmZsb3codWludHB0cl90IG1pbl9zcCwgdWludHB0cl90IG1heF9zcCwgc2l6ZV90ICpkZXB0aCkKIHsKICAgICAvKiBhbGxvY2F0ZSA0MDk2IGJ5dGVzIG9uIHRoZSBzdGFjayBhdCBlYWNoIGNhbGwgKi8KICAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0MDk2XTsKLSAgICBQeV91aW50cHRyX3Qgc3AgPSAoUHlfdWludHB0cl90KSZidWZmZXI7CisgICAgdWludHB0cl90IHNwID0gKHVpbnRwdHJfdCkmYnVmZmVyOwogICAgICpkZXB0aCArPSAxOwogICAgIGlmIChzcCA8IG1pbl9zcCB8fCBtYXhfc3AgPCBzcCkKICAgICAgICAgcmV0dXJuIHNwOwpAQCAtOTc2LDggKzEwOTAsOCBAQAogZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQogewogICAgIHNpemVfdCBkZXB0aCwgc2l6ZTsKLSAgICBQeV91aW50cHRyX3Qgc3AgPSAoUHlfdWludHB0cl90KSZkZXB0aDsKLSAgICBQeV91aW50cHRyX3Qgc3RvcDsKKyAgICB1aW50cHRyX3Qgc3AgPSAodWludHB0cl90KSZkZXB0aDsKKyAgICB1aW50cHRyX3Qgc3RvcDsKIAogICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKICAgICBkZXB0aCA9IDA7CkBAIC05OTQsNyArMTEwOCw3IEBACiAgICAgICAgIHNpemUsIGRlcHRoKTsKICAgICByZXR1cm4gTlVMTDsKIH0KLSNlbmRpZgorI2VuZGlmICAgLyogZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKSAqLwogCiAKIHN0YXRpYyBpbnQKQEAgLTEwMTcsMTIgKzExMzEsMjUgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfcmFpc2VfZXhjZXB0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgY29kZSwgZmxhZ3MgPSAwOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSXxJOl9yYWlzZV9leGNlcHRpb24iLCAmY29kZSwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOworICAgIFJhaXNlRXhjZXB0aW9uKGNvZGUsIGZsYWdzLCAwLCBOVUxMKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJmYXVsdGhhbmRsZXIgbW9kdWxlLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKICAgICB7ImVuYWJsZSIsCi0gICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZW5hYmxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9weV9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoImVuYWJsZShmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCiAgICAgICAgICAgICAgICAiZW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAogICAgIHsiZGlzYWJsZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZGlzYWJsZV9weSwgTUVUSF9OT0FSR1MsCkBAIC0xMDY1LDE2ICsxMTkyLDI1IEBACiAgICAgICAgICAgICAgICAiYSBTSUdTRUdWIG9yIFNJR0JVUyBzaWduYWwgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSIpfSwKICAgICB7Il9zaWdzZWd2IiwgZmF1bHRoYW5kbGVyX3NpZ3NlZ3YsIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc2lnc2VndihyZWxlYXNlX2dpbD1GYWxzZSk6IHJhaXNlIGEgU0lHU0VHViBzaWduYWwiKX0sCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICB7Il9mYXRhbF9lcnJvcl9jX3RocmVhZCIsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9jX3RocmVhZCwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiZmF0YWxfZXJyb3JfY190aHJlYWQoKTogIgorICAgICAgICAgICAgICAgImNhbGwgUHlfRmF0YWxFcnJvcigpIGluIGEgbmV3IEMgdGhyZWFkLiIpfSwKKyNlbmRpZgogICAgIHsiX3NpZ2FicnQiLCBmYXVsdGhhbmRsZXJfc2lnYWJydCwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX3NpZ2FicnQoKTogcmFpc2UgYSBTSUdBQlJUIHNpZ25hbCIpfSwKICAgICB7Il9zaWdmcGUiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3NpZ2ZwZSwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX3NpZ2ZwZSgpOiByYWlzZSBhIFNJR0ZQRSBzaWduYWwiKX0sCiAgICAgeyJfZmF0YWxfZXJyb3IiLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHksIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJfZmF0YWxfZXJyb3IobWVzc2FnZSk6IGNhbGwgUHlfRmF0YWxFcnJvcihtZXNzYWdlKSIpfSwKLSNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCisjaWZkZWYgRkFVTFRIQU5ETEVSX1NUQUNLX09WRVJGTE9XCiAgICAgeyJfc3RhY2tfb3ZlcmZsb3ciLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93LCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc3RhY2tfb3ZlcmZsb3coKTogcmVjdXJzaXZlIGNhbGwgdG8gcmFpc2UgYSBzdGFjayBvdmVyZmxvdyIpfSwKICNlbmRpZgorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7Il9yYWlzZV9leGNlcHRpb24iLCBmYXVsdGhhbmRsZXJfcmFpc2VfZXhjZXB0aW9uLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigicmFpc2VfZXhjZXB0aW9uKGNvZGUsIGZsYWdzPTApOiBDYWxsIFJhaXNlRXhjZXB0aW9uKGNvZGUsIGZsYWdzKS4iKX0sCisjZW5kaWYKICAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMDkzLDcgKzEyMjksMzMgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfZmF1bHRoYW5kbGVyKHZvaWQpCiB7Ci0gICAgcmV0dXJuIFB5TW9kdWxlX0NyZWF0ZSgmbW9kdWxlX2RlZik7CisgICAgUHlPYmplY3QgKm0gPSBQeU1vZHVsZV9DcmVhdGUoJm1vZHVsZV9kZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogQWRkIGNvbnN0YW50cyBmb3IgdW5pdCB0ZXN0cyAqLworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBSYWlzZUV4Y2VwdGlvbigpIGNvZGVzIChwcmVmaXhlZCBieSBhbiB1bmRlcnNjb3JlKSAqLworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9TVEFDS19PVkVSRkxPVyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9TVEFDS19PVkVSRkxPVykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogUmFpc2VFeGNlcHRpb24oKSBmbGFncyAocHJlZml4ZWQgYnkgYW4gdW5kZXJzY29yZSkgKi8KKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fTk9OQ09OVElOVUFCTEUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fTk9OQ09OVElOVUFCTEUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFX0VYQ0VQVElPTikpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKKyAgICByZXR1cm4gbTsKIH0KIAogLyogQ2FsbCBmYXVsdGhhbmRsZXIuZW5hYmxlKCkgaWYgdGhlIFBZVEhPTkZBVUxUSEFORExFUiBlbnZpcm9ubWVudCB2YXJpYWJsZQpAQCAtMTEyOCw3ICsxMjkwLDcgQEAKICAgICBpZiAobW9kdWxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfZW5hYmxlLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChtb2R1bGUsICZQeUlkX2VuYWJsZSwgTlVMTCk7CiAgICAgUHlfREVDUkVGKG1vZHVsZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2djbW9kdWxlLmMgYi9Nb2R1bGVzL2djbW9kdWxlLmMKaW5kZXggY2I3MjIyZC4uNzU0MzQ4ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nY21vZHVsZS5jCisrKyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIgICAgICAgIC8qIGZvciBQeUZyYW1lX0NsZWFyRnJlZUxpc3QgKi8KKyNpbmNsdWRlICJweWR0cmFjZS5oIgogI2luY2x1ZGUgInB5dGltZS5oIiAgICAgICAgICAgICAvKiBmb3IgX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICovCiAKIC8qIEdldCBhbiBvYmplY3QncyBHQyBoZWFkICovCkBAIC03MzgsNyArNzM5LDcgQEAKIH0KIAogc3RhdGljIHZvaWQKLWRlYnVnX2N5Y2xlKGNoYXIgKm1zZywgUHlPYmplY3QgKm9wKQorZGVidWdfY3ljbGUoY29uc3QgY2hhciAqbXNnLCBQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJnYzogJXMgPCVzICVwPlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgbXNnLCBQeV9UWVBFKG9wKS0+dHBfbmFtZSwgb3ApOwpAQCAtODkyLDYgKzg5Myw3IEBACiAgICAgKHZvaWQpUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKICAgICAodm9pZClQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5U2V0X0NsZWFyRnJlZUxpc3QoKTsKKyAgICAodm9pZClQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKCk7CiB9CiAKIC8qIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uICBSZWFkIHRoaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlCkBAIC05MjQsNiArOTI2LDkgQEAKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIlxuIik7CiAgICAgfQogCisgICAgaWYgKFB5RFRyYWNlX0dDX1NUQVJUX0VOQUJMRUQoKSkKKyAgICAgICAgUHlEVHJhY2VfR0NfU1RBUlQoZ2VuZXJhdGlvbik7CisKICAgICAvKiB1cGRhdGUgY29sbGVjdGlvbiBhbmQgYWxsb2NhdGlvbiBjb3VudGVycyAqLwogICAgIGlmIChnZW5lcmF0aW9uKzEgPCBOVU1fR0VORVJBVElPTlMpCiAgICAgICAgIGdlbmVyYXRpb25zW2dlbmVyYXRpb24rMV0uY291bnQgKz0gMTsKQEAgLTEwNjgsNiArMTA3MywxMCBAQAogICAgIHN0YXRzLT5jb2xsZWN0aW9ucysrOwogICAgIHN0YXRzLT5jb2xsZWN0ZWQgKz0gbTsKICAgICBzdGF0cy0+dW5jb2xsZWN0YWJsZSArPSBuOworCisgICAgaWYgKFB5RFRyYWNlX0dDX0RPTkVfRU5BQkxFRCgpKQorICAgICAgICBQeURUcmFjZV9HQ19ET05FKG4rbSk7CisKICAgICByZXR1cm4gbittOwogfQogCkBAIC0xNTg4LDYgKzE1OTcsMTUgQEAKIH0KIAogUHlfc3NpemVfdAorX1B5R0NfQ29sbGVjdElmRW5hYmxlZCh2b2lkKQoreworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gUHlHQ19Db2xsZWN0KCk7Cit9CisKK1B5X3NzaXplX3QKIF9QeUdDX0NvbGxlY3ROb0ZhaWwodm9pZCkKIHsKICAgICBQeV9zc2l6ZV90IG47CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldGFkZHJpbmZvLmMgYi9Nb2R1bGVzL2dldGFkZHJpbmZvLmMKaW5kZXggZDgxNjdlYS4uYjZmYjUzYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRhZGRyaW5mby5jCisrKyBiL01vZHVsZXMvZ2V0YWRkcmluZm8uYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRkcmluZm8gKiwgaW50KTsKIHN0YXRpYyBpbnQgc3RyX2lzbnVtYmVyKGNvbnN0IGNoYXIgKik7CiAKLXN0YXRpYyBjaGFyICphaV9lcnJsaXN0W10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFpX2Vycmxpc3RbXSA9IHsKICAgICAic3VjY2Vzcy4iLAogICAgICJhZGRyZXNzIGZhbWlseSBmb3IgaG9zdG5hbWUgbm90IHN1cHBvcnRlZC4iLCAgICAgICAvKiBFQUlfQUREUkZBTUlMWSAqLwogICAgICJ0ZW1wb3JhcnkgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uIiwgICAgICAgICAgICAvKiBFQUlfQUdBSU4gICAgICAqLwpAQCAtMTk4LDcgKzE5OCw3IEBACiAKICNkZWZpbmUgRVJSKGVycikgeyBlcnJvciA9IChlcnIpOyBnb3RvIGJhZDsgfQogCi1jaGFyICoKK2NvbnN0IGNoYXIgKgogZ2FpX3N0cmVycm9yKGludCBlY29kZSkKIHsKICAgICBpZiAoZWNvZGUgPCAwIHx8IGVjb2RlID4gRUFJX01BWCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKaW5kZXggMThkZWI2MC4uNjViNDdhMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKQEAgLTQ2MCw4ICs0NjAsOCBAQAogewogICAgIGV4dGVybiB3Y2hhcl90ICpQeV9HZXRQcm9ncmFtTmFtZSh2b2lkKTsKIAotICAgIHN0YXRpYyB3Y2hhcl90IGRlbGltaXRlclsyXSA9IHtERUxJTSwgJ1wwJ307Ci0gICAgc3RhdGljIHdjaGFyX3Qgc2VwYXJhdG9yWzJdID0ge1NFUCwgJ1wwJ307CisgICAgc3RhdGljIGNvbnN0IHdjaGFyX3QgZGVsaW1pdGVyWzJdID0ge0RFTElNLCAnXDAnfTsKKyAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCBzZXBhcmF0b3JbMl0gPSB7U0VQLCAnXDAnfTsKICAgICBjaGFyICpfcnRweXBhdGggPSBQeV9HRVRFTlYoIlBZVEhPTlBBVEgiKTsgLyogWFhYIHVzZSB3aWRlIHZlcnNpb24gb24gV2luZG93cyAqLwogICAgIHdjaGFyX3QgKnJ0cHlwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICpob21lID0gUHlfR2V0UHl0aG9uSG9tZSgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9ncnBtb2R1bGUuYyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKaW5kZXggM2ExMzRhMC4uOTQzN2FlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9ncnBtb2R1bGUuYworKysgYi9Nb2R1bGVzL2dycG1vZHVsZS5jCkBAIC0xMDAsMTQgKzEwMCwyNSBAQAogICAgIGdpZF90IGdpZDsKICAgICBzdHJ1Y3QgZ3JvdXAgKnA7CiAKLSAgICBweV9pbnRfaWQgPSBQeU51bWJlcl9Mb25nKGlkKTsKLSAgICBpZiAoIXB5X2ludF9pZCkKKyAgICBpZiAoIV9QeV9HaWRfQ29udmVydGVyKGlkLCAmZ2lkKSkgeworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlfR2lkX0NvbnZlcnRlcihweV9pbnRfaWQsICZnaWQpKSB7CisgICAgICAgIH0KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXAgaWQgbXVzdCBiZSBpbnQsIG5vdCAlLjIwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLT5vYl90eXBlLT50cF9uYW1lKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcoaWQpOworICAgICAgICBpZiAoIXB5X2ludF9pZCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIV9QeV9HaWRfQ29udmVydGVyKHB5X2ludF9pZCwgJmdpZCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihweV9pbnRfaWQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHB5X2ludF9pZCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9ERUNSRUYocHlfaW50X2lkKTsKIAogICAgIGlmICgocCA9IGdldGdyZ2lkKGdpZCkpID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmdpZF9vYmogPSBfUHlMb25nX0Zyb21HaWQoZ2lkKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvaGFzaGxpYi5oIGIvTW9kdWxlcy9oYXNobGliLmgKaW5kZXggMzU4MDQ1My4uNTMwYjZiMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9oYXNobGliLmgKKysrIGIvTW9kdWxlcy9oYXNobGliLmgKQEAgLTIsMzAgKzIsMzMgQEAKIAogLyoKICAqIEdpdmVuIGEgUHlPYmplY3QqIG9iaiwgZmlsbCBpbiB0aGUgUHlfYnVmZmVyKiB2aWV3cCB3aXRoIHRoZSByZXN1bHQKLSAqIG9mIFB5T2JqZWN0X0dldEJ1ZmZlci4gIFNldHMgYW4gZXhjZXB0aW9uIGFuZCBpc3N1ZXMgYSByZXR1cm4gTlVMTAotICogb24gYW55IGVycm9ycy4KKyAqIG9mIFB5T2JqZWN0X0dldEJ1ZmZlci4gIFNldHMgYW4gZXhjZXB0aW9uIGFuZCBpc3N1ZXMgdGhlIGVycmFjdGlvbgorICogb24gYW55IGVycm9ycywgZS5nLiAncmV0dXJuIE5VTEwnIG9yICdnb3RvIGVycm9yJy4KICAqLwotI2RlZmluZSBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgdmlld3ApIGRvIHsgXAorI2RlZmluZSBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1Iob2JqLCB2aWV3cCwgZXJyYWN0aW9uKSBkbyB7IFwKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjaygob2JqKSkpIHsgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmljb2RlLW9iamVjdHMgbXVzdCBiZSBlbmNvZGVkIGJlZm9yZSBoYXNoaW5nIik7XAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICAgICAgICAgIGVycmFjdGlvbjsgXAogICAgICAgICB9IFwKICAgICAgICAgaWYgKCFQeU9iamVjdF9DaGVja0J1ZmZlcigob2JqKSkpIHsgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIEFQSSByZXF1aXJlZCIpOyBcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAogICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKChvYmopLCAodmlld3ApLCBQeUJVRl9TSU1QTEUpID09IC0xKSB7IFwKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCiAgICAgICAgIGlmICgodmlld3ApLT5uZGltID4gMSkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVmZmVyIG11c3QgYmUgc2luZ2xlIGRpbWVuc2lvbiIpOyBcCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCh2aWV3cCkpOyBcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAotICAgIH0gd2hpbGUoMCk7CisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCB2aWV3cCkgXAorICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihvYmosIHZpZXdwLCByZXR1cm4gTlVMTCkKIAogLyoKICAqIEhlbHBlciBjb2RlIHRvIHN5bmNocm9uaXplIGFjY2VzcyB0byB0aGUgaGFzaCBvYmplY3Qgd2hlbiB0aGUgR0lMIGlzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2hhc2h0YWJsZS5jIGIvTW9kdWxlcy9oYXNodGFibGUuYwppbmRleCBmZGRkYzE5Li4wNTQ3YTZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2hhc2h0YWJsZS5jCisrKyBiL01vZHVsZXMvaGFzaHRhYmxlLmMKQEAgLTEsNSArMSw1IEBACi0vKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhhc2ggdGFibGUgKF9QeV9oYXNodGFibGVfdCkgaXMgYmFzZWQgb24gdGhlIGNmdWhhc2gKLSAgIHByb2plY3Q6CisvKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhhc2ggdGFibGUgKF9QeV9oYXNodGFibGVfdCkgaXMgYmFzZWQgb24gdGhlCisgICBjZnVoYXNoIHByb2plY3Q6CiAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmNmdS8KIAogICAgQ29weXJpZ2h0IG9mIGNmdWhhc2g6CkBAIC01OSw3ICs1OSwyMSBAQAogI2RlZmluZSBFTlRSWV9ORVhUKEVOVFJZKSBcCiAgICAgICAgICgoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICopX1B5X1NMSVNUX0lURU1fTkVYVChFTlRSWSkpCiAjZGVmaW5lIEhBU0hUQUJMRV9JVEVNX1NJWkUoSFQpIFwKLSAgICAgICAgKHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpICsgKEhUKS0+ZGF0YV9zaXplKQorICAgICAgICAoc2l6ZW9mKF9QeV9oYXNodGFibGVfZW50cnlfdCkgKyAoSFQpLT5rZXlfc2l6ZSArIChIVCktPmRhdGFfc2l6ZSkKKworI2RlZmluZSBFTlRSWV9SRUFEX1BEQVRBKFRBQkxFLCBFTlRSWSwgREFUQV9TSVpFLCBQREFUQSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoKERBVEFfU0laRSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoKFBEQVRBKSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShUQUJMRSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgIChEQVRBX1NJWkUpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgRU5UUllfV1JJVEVfUERBVEEoVEFCTEUsIEVOVFJZLCBEQVRBX1NJWkUsIFBEQVRBKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydCgoREFUQV9TSVpFKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgodm9pZCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoKFRBQkxFKSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgIChQREFUQSksIChEQVRBX1NJWkUpKTsgXAorICAgIH0gd2hpbGUgKDApCiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KIHN0YXRpYyB2b2lkIGhhc2h0YWJsZV9yZWhhc2goX1B5X2hhc2h0YWJsZV90ICpodCk7CkBAIC03MCw2ICs4NCw3IEBACiAgICAgbGlzdC0+aGVhZCA9IE5VTEw7CiB9CiAKKwogc3RhdGljIHZvaWQKIF9QeV9zbGlzdF9wcmVwZW5kKF9QeV9zbGlzdF90ICpsaXN0LCBfUHlfc2xpc3RfaXRlbV90ICppdGVtKQogewpAQCAtNzcsNiArOTIsNyBAQAogICAgIGxpc3QtPmhlYWQgPSBpdGVtOwogfQogCisKIHN0YXRpYyB2b2lkCiBfUHlfc2xpc3RfcmVtb3ZlKF9QeV9zbGlzdF90ICpsaXN0LCBfUHlfc2xpc3RfaXRlbV90ICpwcmV2aW91cywKICAgICAgICAgICAgICAgICAgX1B5X3NsaXN0X2l0ZW1fdCAqaXRlbSkKQEAgLTg3LDI0ICsxMDMsMjYgQEAKICAgICAgICAgbGlzdC0+aGVhZCA9IGl0ZW0tPm5leHQ7CiB9CiAKLVB5X3VoYXNoX3QKLV9QeV9oYXNodGFibGVfaGFzaF9pbnQoY29uc3Qgdm9pZCAqa2V5KQotewotICAgIHJldHVybiAoUHlfdWhhc2hfdClrZXk7Ci19CiAKIFB5X3VoYXNoX3QKLV9QeV9oYXNodGFibGVfaGFzaF9wdHIoY29uc3Qgdm9pZCAqa2V5KQorX1B5X2hhc2h0YWJsZV9oYXNoX3B0cihzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSkKIHsKLSAgICByZXR1cm4gKFB5X3VoYXNoX3QpX1B5X0hhc2hQb2ludGVyKCh2b2lkICopa2V5KTsKKyAgICB2b2lkICprZXk7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBrZXkpOworICAgIHJldHVybiAoUHlfdWhhc2hfdClfUHlfSGFzaFBvaW50ZXIoa2V5KTsKIH0KIAorCiBpbnQKLV9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQorX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQogewotICAgIHJldHVybiBlbnRyeS0+a2V5ID09IGtleTsKKyAgICBjb25zdCB2b2lkICpwa2V5MiA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSk7CisgICAgcmV0dXJuIChtZW1jbXAocGtleSwgcGtleTIsIGh0LT5rZXlfc2l6ZSkgPT0gMCk7CiB9CiAKKwogLyogbWFrZXMgc3VyZSB0aGUgcmVhbCBzaXplIG9mIHRoZSBidWNrZXRzIGFycmF5IGlzIGEgcG93ZXIgb2YgMiAqLwogc3RhdGljIHNpemVfdAogcm91bmRfc2l6ZShzaXplX3QgcykKQEAgLTExOCwxMyArMTM2LDEyIEBACiAgICAgcmV0dXJuIGk7CiB9CiAKKwogX1B5X2hhc2h0YWJsZV90ICoKLV9QeV9oYXNodGFibGVfbmV3X2Z1bGwoc2l6ZV90IGRhdGFfc2l6ZSwgc2l6ZV90IGluaXRfc2l6ZSwKK19QeV9oYXNodGFibGVfbmV3X2Z1bGwoc2l6ZV90IGtleV9zaXplLCBzaXplX3QgZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5pdF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYyBjb3B5X2RhdGFfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYyBmcmVlX2RhdGFfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9nZXRfZGF0YV9zaXplX2Z1bmMgZ2V0X2RhdGFfc2l6ZV9mdW5jLAogICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90ICphbGxvY2F0b3IpCiB7CiAgICAgX1B5X2hhc2h0YWJsZV90ICpodDsKQEAgLTE0NCw2ICsxNjEsNyBAQAogCiAgICAgaHQtPm51bV9idWNrZXRzID0gcm91bmRfc2l6ZShpbml0X3NpemUpOwogICAgIGh0LT5lbnRyaWVzID0gMDsKKyAgICBodC0+a2V5X3NpemUgPSBrZXlfc2l6ZTsKICAgICBodC0+ZGF0YV9zaXplID0gZGF0YV9zaXplOwogCiAgICAgYnVja2V0c19zaXplID0gaHQtPm51bV9idWNrZXRzICogc2l6ZW9mKGh0LT5idWNrZXRzWzBdKTsKQEAgLTE1NiwyOCArMTc0LDI3IEBACiAKICAgICBodC0+aGFzaF9mdW5jID0gaGFzaF9mdW5jOwogICAgIGh0LT5jb21wYXJlX2Z1bmMgPSBjb21wYXJlX2Z1bmM7Ci0gICAgaHQtPmNvcHlfZGF0YV9mdW5jID0gY29weV9kYXRhX2Z1bmM7Ci0gICAgaHQtPmZyZWVfZGF0YV9mdW5jID0gZnJlZV9kYXRhX2Z1bmM7Ci0gICAgaHQtPmdldF9kYXRhX3NpemVfZnVuYyA9IGdldF9kYXRhX3NpemVfZnVuYzsKICAgICBodC0+YWxsb2MgPSBhbGxvYzsKICAgICByZXR1cm4gaHQ7CiB9CiAKKwogX1B5X2hhc2h0YWJsZV90ICoKLV9QeV9oYXNodGFibGVfbmV3KHNpemVfdCBkYXRhX3NpemUsCitfUHlfaGFzaHRhYmxlX25ldyhzaXplX3Qga2V5X3NpemUsIHNpemVfdCBkYXRhX3NpemUsCiAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMpCiB7Ci0gICAgcmV0dXJuIF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoZGF0YV9zaXplLCBIQVNIVEFCTEVfTUlOX1NJWkUsCisgICAgcmV0dXJuIF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoa2V5X3NpemUsIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNIVEFCTEVfTUlOX1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9mdW5jLCBjb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiB9CiAKKwogc2l6ZV90CiBfUHlfaGFzaHRhYmxlX3NpemUoX1B5X2hhc2h0YWJsZV90ICpodCkKIHsKICAgICBzaXplX3Qgc2l6ZTsKLSAgICBzaXplX3QgaHY7CiAKICAgICBzaXplID0gc2l6ZW9mKF9QeV9oYXNodGFibGVfdCk7CiAKQEAgLTE4NywyMiArMjA0LDEwIEBACiAgICAgLyogZW50cmllcyAqLwogICAgIHNpemUgKz0gaHQtPmVudHJpZXMgKiBIQVNIVEFCTEVfSVRFTV9TSVpFKGh0KTsKIAotICAgIC8qIGRhdGEgbGlua2VkIGZyb20gZW50cmllcyAqLwotICAgIGlmIChodC0+Z2V0X2RhdGFfc2l6ZV9mdW5jKSB7Ci0gICAgICAgIGZvciAoaHYgPSAwOyBodiA8IGh0LT5udW1fYnVja2V0czsgaHYrKykgewotICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKLQotICAgICAgICAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGh2KTsgZW50cnk7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgICAgICAgICB2b2lkICpkYXRhOwotCi0gICAgICAgICAgICAgICAgZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpOwotICAgICAgICAgICAgICAgIHNpemUgKz0gaHQtPmdldF9kYXRhX3NpemVfZnVuYyhkYXRhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KICAgICByZXR1cm4gc2l6ZTsKIH0KIAorCiAjaWZkZWYgUHlfREVCVUcKIHZvaWQKIF9QeV9oYXNodGFibGVfcHJpbnRfc3RhdHMoX1B5X2hhc2h0YWJsZV90ICpodCkKQEAgLTI0MywzOCArMjQ4LDQ1IEBACiB9CiAjZW5kaWYKIAotLyogR2V0IGFuIGVudHJ5LiBSZXR1cm4gTlVMTCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LiAqLworCiBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKgotX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5KQorX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBrZXlfc2l6ZSwgY29uc3Qgdm9pZCAqcGtleSkKIHsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogICAgIHNpemVfdCBpbmRleDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogCi0gICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGtleSk7CisgICAgYXNzZXJ0KGtleV9zaXplID09IGh0LT5rZXlfc2l6ZSk7CisKKyAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoaHQsIHBrZXkpOwogICAgIGluZGV4ID0ga2V5X2hhc2ggJiAoaHQtPm51bV9idWNrZXRzIC0gMSk7CiAKICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaW5kZXgpOyBlbnRyeSAhPSBOVUxMOyBlbnRyeSA9IEVOVFJZX05FWFQoZW50cnkpKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5X2hhc2ggPT0ga2V5X2hhc2ggJiYgaHQtPmNvbXBhcmVfZnVuYyhrZXksIGVudHJ5KSkKKyAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGh0LCBwa2V5LCBlbnRyeSkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gZW50cnk7CiB9CiAKKwogc3RhdGljIGludAotX2hhc2h0YWJsZV9wb3BfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9wb3BfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKIHsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogICAgIHNpemVfdCBpbmRleDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCAqcHJldmlvdXM7CiAKLSAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoa2V5KTsKKyAgICBhc3NlcnQoa2V5X3NpemUgPT0gaHQtPmtleV9zaXplKTsKKworICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhodCwgcGtleSk7CiAgICAgaW5kZXggPSBrZXlfaGFzaCAmIChodC0+bnVtX2J1Y2tldHMgLSAxKTsKIAogICAgIHByZXZpb3VzID0gTlVMTDsKICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaW5kZXgpOyBlbnRyeSAhPSBOVUxMOyBlbnRyeSA9IEVOVFJZX05FWFQoZW50cnkpKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5X2hhc2ggPT0ga2V5X2hhc2ggJiYgaHQtPmNvbXBhcmVfZnVuYyhrZXksIGVudHJ5KSkKKyAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGh0LCBwa2V5LCBlbnRyeSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcHJldmlvdXMgPSBlbnRyeTsKICAgICB9CkBAIC0yODcsNyArMjk5LDcgQEAKICAgICBodC0+ZW50cmllcy0tOwogCiAgICAgaWYgKGRhdGEgIT0gTlVMTCkKLSAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoaHQsIGRhdGEsIGRhdGFfc2l6ZSwgZW50cnkpOworICAgICAgICBFTlRSWV9SRUFEX1BEQVRBKGh0LCBlbnRyeSwgZGF0YV9zaXplLCBkYXRhKTsKICAgICBodC0+YWxsb2MuZnJlZShlbnRyeSk7CiAKICAgICBpZiAoKGZsb2F0KWh0LT5lbnRyaWVzIC8gKGZsb2F0KWh0LT5udW1fYnVja2V0cyA8IEhBU0hUQUJMRV9MT1cpCkBAIC0yOTUsMjYgKzMwNywyNyBAQAogICAgIHJldHVybiAxOwogfQogCi0vKiBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIGhhc2guIFRoZSBrZXkgbXVzdCBub3QgYmUgcHJlc2VudCBpbiB0aGUgaGFzaCB0YWJsZS4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIG1lbW9yeSBlcnJvci4gKi8KKwogaW50Ci1fUHlfaGFzaHRhYmxlX3NldChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXksCi0gICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9zZXQoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSkKIHsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogICAgIHNpemVfdCBpbmRleDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogCisgICAgYXNzZXJ0KGtleV9zaXplID09IGh0LT5rZXlfc2l6ZSk7CisKICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMIHx8IGRhdGFfc2l6ZSA9PSAwKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgLyogRG9uJ3Qgd3JpdGUgdGhlIGFzc2VydGlvbiBvbiBhIHNpbmdsZSBsaW5lIGJlY2F1c2UgaXQgaXMgaW50ZXJlc3RpbmcKICAgICAgICB0byBrbm93IHRoZSBkdXBsaWNhdGVkIGVudHJ5IGlmIHRoZSBhc3NlcnRpb24gZmFpbGVkLiBUaGUgZW50cnkgY2FuCiAgICAgICAgYmUgcmVhZCB1c2luZyBhIGRlYnVnZ2VyLiAqLwotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoaHQsIGtleSk7CisgICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShodCwga2V5X3NpemUsIHBrZXkpOwogICAgIGFzc2VydChlbnRyeSA9PSBOVUxMKTsKICNlbmRpZgogCi0gICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGtleSk7CisgICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGh0LCBwa2V5KTsKICAgICBpbmRleCA9IGtleV9oYXNoICYgKGh0LT5udW1fYnVja2V0cyAtIDEpOwogCiAgICAgZW50cnkgPSBodC0+YWxsb2MubWFsbG9jKEhBU0hUQUJMRV9JVEVNX1NJWkUoaHQpKTsKQEAgLTMyMywxMiArMzM2LDEwIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBlbnRyeS0+a2V5ID0gKHZvaWQgKilrZXk7CiAgICAgZW50cnktPmtleV9oYXNoID0ga2V5X2hhc2g7Ci0KLSAgICBhc3NlcnQoZGF0YV9zaXplID09IGh0LT5kYXRhX3NpemUpOworICAgIG1lbWNweSgodm9pZCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSksIHBrZXksIGh0LT5rZXlfc2l6ZSk7CiAgICAgaWYgKGRhdGEpCi0gICAgICAgIG1lbWNweShfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoZW50cnkpLCBkYXRhLCBkYXRhX3NpemUpOworICAgICAgICBFTlRSWV9XUklURV9QREFUQShodCwgZW50cnksIGRhdGFfc2l6ZSwgZGF0YSk7CiAKICAgICBfUHlfc2xpc3RfcHJlcGVuZCgmaHQtPmJ1Y2tldHNbaW5kZXhdLCAoX1B5X3NsaXN0X2l0ZW1fdCopZW50cnkpOwogICAgIGh0LT5lbnRyaWVzKys7CkBAIC0zMzgsNDggKzM0OSw1MCBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBHZXQgZGF0YSBmcm9tIGFuIGVudHJ5LiBDb3B5IGVudHJ5IGRhdGEgaW50byBkYXRhIGFuZCByZXR1cm4gMSBpZiB0aGUgZW50cnkKLSAgIGV4aXN0cywgcmV0dXJuIDAgaWYgdGhlIGVudHJ5IGRvZXMgbm90IGV4aXN0LiAqLworCiBpbnQKLV9QeV9oYXNodGFibGVfZ2V0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKK19QeV9oYXNodGFibGVfZ2V0KF9QeV9oYXNodGFibGVfdCAqaHQsIHNpemVfdCBrZXlfc2l6ZSxjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgdm9pZCAqZGF0YSkKIHsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogCiAgICAgYXNzZXJ0KGRhdGEgIT0gTlVMTCk7CiAKLSAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KGh0LCBrZXkpOworICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoaHQsIGtleV9zaXplLCBwa2V5KTsKICAgICBpZiAoZW50cnkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoaHQsIGRhdGEsIGRhdGFfc2l6ZSwgZW50cnkpOworICAgIEVOVFJZX1JFQURfUERBVEEoaHQsIGVudHJ5LCBkYXRhX3NpemUsIGRhdGEpOwogICAgIHJldHVybiAxOwogfQogCisKIGludAotX1B5X2hhc2h0YWJsZV9wb3AoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9wb3AoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgdm9pZCAqZGF0YSkKIHsKICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoaHQtPmZyZWVfZGF0YV9mdW5jID09IE5VTEwpOwotICAgIHJldHVybiBfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5LCBkYXRhLCBkYXRhX3NpemUpOworICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5X3NpemUsIHBrZXksIGRhdGEsIGRhdGFfc2l6ZSk7CiB9CiAKLS8qIERlbGV0ZSBhbiBlbnRyeS4gVGhlIGVudHJ5IG11c3QgZXhpc3QuICovCisKKy8qIENvZGUgY29tbWVudGVkIHNpbmNlIHRoZSBmdW5jdGlvbiBpcyBub3QgbmVlZGVkIGluIFB5dGhvbiAqLworI2lmIDAKIHZvaWQKLV9QeV9oYXNodGFibGVfZGVsZXRlKF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSkKK19QeV9oYXNodGFibGVfZGVsZXRlKF9QeV9oYXNodGFibGVfdCAqaHQsIHNpemVfdCBrZXlfc2l6ZSwgY29uc3Qgdm9pZCAqcGtleSkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgaW50IGZvdW5kID0gX2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleSwgTlVMTCwgMCk7CisgICAgaW50IGZvdW5kID0gX1B5X2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleV9zaXplLCBwa2V5LCBOVUxMLCAwKTsKICAgICBhc3NlcnQoZm91bmQpOwogI2Vsc2UKLSAgICAodm9pZClfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5LCBOVUxMLCAwKTsKKyAgICAodm9pZClfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5X3NpemUsIHBrZXksIE5VTEwsIDApOwogI2VuZGlmCiB9CisjZW5kaWYKIAotLyogUHJvdG90eXBlIGZvciBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZm9yZWFjaAotICAga2V5L3ZhbHVlIHBhaXIgaW4gdGhlIGhhc2ggYnkgaGFzaHRhYmxlX2ZvcmVhY2goKS4gIEl0ZXJhdGlvbgotICAgc3RvcHMgaWYgYSBub24temVybyB2YWx1ZSBpcyByZXR1cm5lZC4gKi8KKwogaW50CiBfUHlfaGFzaHRhYmxlX2ZvcmVhY2goX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpmdW5jKSAoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqYXJnKSwKKyAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2ZvcmVhY2hfZnVuYyBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZykKIHsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwpAQCAtMzg3LDcgKzQwMCw3IEBACiAKICAgICBmb3IgKGh2ID0gMDsgaHYgPCBodC0+bnVtX2J1Y2tldHM7IGh2KyspIHsKICAgICAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGh2KTsgZW50cnk7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgICAgIGludCByZXMgPSBmdW5jKGVudHJ5LCBhcmcpOworICAgICAgICAgICAgaW50IHJlcyA9IGZ1bmMoaHQsIGVudHJ5LCBhcmcpOwogICAgICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICB9CkBAIC0zOTUsNiArNDA4LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCiBzdGF0aWMgdm9pZAogaGFzaHRhYmxlX3JlaGFzaChfUHlfaGFzaHRhYmxlX3QgKmh0KQogewpAQCAtNDI2LDcgKzQ0MCw4IEBACiAgICAgICAgIGZvciAoZW50cnkgPSBCVUNLRVRTX0hFQUQob2xkX2J1Y2tldHNbYnVja2V0XSk7IGVudHJ5ICE9IE5VTEw7IGVudHJ5ID0gbmV4dCkgewogICAgICAgICAgICAgc2l6ZV90IGVudHJ5X2luZGV4OwogCi0gICAgICAgICAgICBhc3NlcnQoaHQtPmhhc2hfZnVuYyhlbnRyeS0+a2V5KSA9PSBlbnRyeS0+a2V5X2hhc2gpOworCisgICAgICAgICAgICBhc3NlcnQoaHQtPmhhc2hfZnVuYyhodCwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKGVudHJ5KSkgPT0gZW50cnktPmtleV9oYXNoKTsKICAgICAgICAgICAgIG5leHQgPSBFTlRSWV9ORVhUKGVudHJ5KTsKICAgICAgICAgICAgIGVudHJ5X2luZGV4ID0gZW50cnktPmtleV9oYXNoICYgKG5ld19zaXplIC0gMSk7CiAKQEAgLTQzNyw2ICs0NTIsNyBAQAogICAgIGh0LT5hbGxvYy5mcmVlKG9sZF9idWNrZXRzKTsKIH0KIAorCiB2b2lkCiBfUHlfaGFzaHRhYmxlX2NsZWFyKF9QeV9oYXNodGFibGVfdCAqaHQpCiB7CkBAIC00NDYsOCArNDYyLDYgQEAKICAgICBmb3IgKGk9MDsgaSA8IGh0LT5udW1fYnVja2V0czsgaSsrKSB7CiAgICAgICAgIGZvciAoZW50cnkgPSBUQUJMRV9IRUFEKGh0LCBpKTsgZW50cnkgIT0gTlVMTDsgZW50cnkgPSBuZXh0KSB7CiAgICAgICAgICAgICBuZXh0ID0gRU5UUllfTkVYVChlbnRyeSk7Ci0gICAgICAgICAgICBpZiAoaHQtPmZyZWVfZGF0YV9mdW5jKQotICAgICAgICAgICAgICAgIGh0LT5mcmVlX2RhdGFfZnVuYyhfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KSk7CiAgICAgICAgICAgICBodC0+YWxsb2MuZnJlZShlbnRyeSk7CiAgICAgICAgIH0KICAgICAgICAgX1B5X3NsaXN0X2luaXQoJmh0LT5idWNrZXRzW2ldKTsKQEAgLTQ1Niw2ICs0NzAsNyBAQAogICAgIGhhc2h0YWJsZV9yZWhhc2goaHQpOwogfQogCisKIHZvaWQKIF9QeV9oYXNodGFibGVfZGVzdHJveShfUHlfaGFzaHRhYmxlX3QgKmh0KQogewpAQCAtNDY1LDggKzQ4MCw2IEBACiAgICAgICAgIF9QeV9zbGlzdF9pdGVtX3QgKmVudHJ5ID0gaHQtPmJ1Y2tldHNbaV0uaGVhZDsKICAgICAgICAgd2hpbGUgKGVudHJ5KSB7CiAgICAgICAgICAgICBfUHlfc2xpc3RfaXRlbV90ICplbnRyeV9uZXh0ID0gZW50cnktPm5leHQ7Ci0gICAgICAgICAgICBpZiAoaHQtPmZyZWVfZGF0YV9mdW5jKQotICAgICAgICAgICAgICAgIGh0LT5mcmVlX2RhdGFfZnVuYyhfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KSk7CiAgICAgICAgICAgICBodC0+YWxsb2MuZnJlZShlbnRyeSk7CiAgICAgICAgICAgICBlbnRyeSA9IGVudHJ5X25leHQ7CiAgICAgICAgIH0KQEAgLTQ3NiwzOSArNDg5LDMxIEBACiAgICAgaHQtPmFsbG9jLmZyZWUoaHQpOwogfQogCi0vKiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIHRhYmxlICovCisKIF9QeV9oYXNodGFibGVfdCAqCiBfUHlfaGFzaHRhYmxlX2NvcHkoX1B5X2hhc2h0YWJsZV90ICpzcmMpCiB7CisgICAgY29uc3Qgc2l6ZV90IGtleV9zaXplID0gc3JjLT5rZXlfc2l6ZTsKKyAgICBjb25zdCBzaXplX3QgZGF0YV9zaXplID0gc3JjLT5kYXRhX3NpemU7CiAgICAgX1B5X2hhc2h0YWJsZV90ICpkc3Q7CiAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKICAgICBzaXplX3QgYnVja2V0OwogICAgIGludCBlcnI7Ci0gICAgdm9pZCAqZGF0YSwgKm5ld19kYXRhOwogCi0gICAgZHN0ID0gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChzcmMtPmRhdGFfc2l6ZSwgc3JjLT5udW1fYnVja2V0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmhhc2hfZnVuYywgc3JjLT5jb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5jb3B5X2RhdGFfZnVuYywgc3JjLT5mcmVlX2RhdGFfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmdldF9kYXRhX3NpemVfZnVuYywgJnNyYy0+YWxsb2MpOworICAgIGRzdCA9IF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoa2V5X3NpemUsIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+bnVtX2J1Y2tldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmhhc2hfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+Y29tcGFyZV9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNyYy0+YWxsb2MpOwogICAgIGlmIChkc3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKGJ1Y2tldD0wOyBidWNrZXQgPCBzcmMtPm51bV9idWNrZXRzOyBidWNrZXQrKykgewogICAgICAgICBlbnRyeSA9IFRBQkxFX0hFQUQoc3JjLCBidWNrZXQpOwogICAgICAgICBmb3IgKDsgZW50cnk7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgICAgIGlmIChzcmMtPmNvcHlfZGF0YV9mdW5jKSB7Ci0gICAgICAgICAgICAgICAgZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpOwotICAgICAgICAgICAgICAgIG5ld19kYXRhID0gc3JjLT5jb3B5X2RhdGFfZnVuYyhkYXRhKTsKLSAgICAgICAgICAgICAgICBpZiAobmV3X2RhdGEgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gX1B5X2hhc2h0YWJsZV9zZXQoZHN0LCBlbnRyeS0+a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfZGF0YSwgc3JjLT5kYXRhX3NpemUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGRhdGEgPSBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoZW50cnkpOwotICAgICAgICAgICAgICAgIGVyciA9IF9QeV9oYXNodGFibGVfc2V0KGRzdCwgZW50cnktPmtleSwgZGF0YSwgc3JjLT5kYXRhX3NpemUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSk7CisgICAgICAgICAgICBjb25zdCB2b2lkICpwZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoc3JjLCBlbnRyeSk7CisgICAgICAgICAgICBlcnIgPSBfUHlfaGFzaHRhYmxlX3NldChkc3QsIGtleV9zaXplLCBwa2V5LCBkYXRhX3NpemUsIHBkYXRhKTsKICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koZHN0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUxNyw0ICs1MjIsMyBAQAogICAgIH0KICAgICByZXR1cm4gZHN0OwogfQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2hhc2h0YWJsZS5oIGIvTW9kdWxlcy9oYXNodGFibGUuaAppbmRleCBhOWY5OTkzLi5kYmVjMjNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2hhc2h0YWJsZS5oCisrKyBiL01vZHVsZXMvaGFzaHRhYmxlLmgKQEAgLTEsOSArMSwxMCBAQAogI2lmbmRlZiBQeV9IQVNIVEFCTEVfSAogI2RlZmluZSBQeV9IQVNIVEFCTEVfSAotCiAvKiBUaGUgd2hvbGUgQVBJIGlzIHByaXZhdGUgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIAorLyogU2luZ2xlIGxpbmtlZCBsaXN0ICovCisKIHR5cGVkZWYgc3RydWN0IF9QeV9zbGlzdF9pdGVtX3MgewogICAgIHN0cnVjdCBfUHlfc2xpc3RfaXRlbV9zICpuZXh0OwogfSBfUHlfc2xpc3RfaXRlbV90OwpAQCAtMTYsMzMgKzE3LDY2IEBACiAKICNkZWZpbmUgX1B5X1NMSVNUX0hFQUQoU0xJU1QpICgoKF9QeV9zbGlzdF90ICopU0xJU1QpLT5oZWFkKQogCisKKy8qIF9QeV9oYXNodGFibGU6IHRhYmxlIGVudHJ5ICovCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICAvKiB1c2VkIGJ5IF9QeV9oYXNodGFibGVfdC5idWNrZXRzIHRvIGxpbmsgZW50cmllcyAqLwogICAgIF9QeV9zbGlzdF9pdGVtX3QgX1B5X3NsaXN0X2l0ZW07CiAKLSAgICBjb25zdCB2b2lkICprZXk7CiAgICAgUHlfdWhhc2hfdCBrZXlfaGFzaDsKIAotICAgIC8qIGRhdGEgZm9sbG93cyAqLworICAgIC8qIGtleSAoa2V5X3NpemUgYnl0ZXMpIGFuZCB0aGVuIGRhdGEgKGRhdGFfc2l6ZSBieXRlcykgZm9sbG93cyAqLwogfSBfUHlfaGFzaHRhYmxlX2VudHJ5X3Q7CiAKLSNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKEVOVFJZKSBcCi0gICAgICAgICgoY2hhciAqKShFTlRSWSkgKyBzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSkKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKEVOVFJZKSBcCisgICAgICAgICgoY29uc3Qgdm9pZCAqKSgoY2hhciAqKShFTlRSWSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyBzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSkpCiAKLSNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChFTlRSWSkgXAotICAgICAgICAoKih2b2lkICoqKV9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShFTlRSWSkpCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoVEFCTEUsIEVOVFJZKSBcCisgICAgICAgICgoY29uc3Qgdm9pZCAqKSgoY2hhciAqKShFTlRSWSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyBzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSBcCisgICAgICAgICAgICAgICAgICAgICAgICArIChUQUJMRSktPmtleV9zaXplKSkKIAotI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShUQUJMRSwgREFUQSwgREFUQV9TSVpFLCBFTlRSWSkgXAorLyogR2V0IGEga2V5IHZhbHVlIGZyb20gcGtleTogdXNlIG1lbWNweSgpIHJhdGhlciB0aGFuIGEgcG9pbnRlciBkZXJlZmVyZW5jZQorICAgdG8gYXZvaWQgbWVtb3J5IGFsaWdubWVudCBpc3N1ZXMuICovCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoVEFCTEUsIFBLRVksIERTVF9LRVkpIFwKICAgICBkbyB7IFwKLSAgICAgICAgYXNzZXJ0KChEQVRBX1NJWkUpID09IChUQUJMRSktPmRhdGFfc2l6ZSk7IFwKLSAgICAgICAgbWVtY3B5KERBVEEsIF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShFTlRSWSksIERBVEFfU0laRSk7IFwKKyAgICAgICAgYXNzZXJ0KHNpemVvZihEU1RfS0VZKSA9PSAoVEFCTEUpLT5rZXlfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCYoRFNUX0tFWSksIChQS0VZKSwgc2l6ZW9mKERTVF9LRVkpKTsgXAogICAgIH0gd2hpbGUgKDApCiAKLXR5cGVkZWYgUHlfdWhhc2hfdCAoKl9QeV9oYXNodGFibGVfaGFzaF9mdW5jKSAoY29uc3Qgdm9pZCAqa2V5KTsKLXR5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMpIChjb25zdCB2b2lkICprZXksIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqaGUpOwotdHlwZWRlZiB2b2lkKiAoKl9QeV9oYXNodGFibGVfY29weV9kYXRhX2Z1bmMpKHZvaWQgKmRhdGEpOwotdHlwZWRlZiB2b2lkICgqX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYykodm9pZCAqZGF0YSk7Ci10eXBlZGVmIHNpemVfdCAoKl9QeV9oYXNodGFibGVfZ2V0X2RhdGFfc2l6ZV9mdW5jKSh2b2lkICpkYXRhKTsKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShUQUJMRSwgRU5UUlksIEtFWSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoc2l6ZW9mKEtFWSkgPT0gKFRBQkxFKS0+a2V5X3NpemUpOyBcCisgICAgICAgIG1lbWNweSgmKEtFWSksIF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShFTlRSWSksIHNpemVvZihLRVkpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoVEFCTEUsIEVOVFJZLCBEQVRBKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydChzaXplb2YoREFUQSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoJihEQVRBKSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShUQUJMRSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihEQVRBKSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfV1JJVEVfREFUQShUQUJMRSwgRU5UUlksIERBVEEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgYXNzZXJ0KHNpemVvZihEQVRBKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgodm9pZCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoKFRBQkxFKSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgICYoREFUQSksIHNpemVvZihEQVRBKSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisKKy8qIF9QeV9oYXNodGFibGU6IHByb3RvdHlwZXMgKi8KKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworc3RydWN0IF9QeV9oYXNodGFibGVfdDsKKwordHlwZWRlZiBQeV91aGFzaF90ICgqX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMpIChzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSk7Cit0eXBlZGVmIGludCAoKl9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jKSAoc3RydWN0IF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmhlKTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIGFsbG9jYXRlIGEgbWVtb3J5IGJsb2NrICovCkBAIC01Miw3NyArODYsMTI2IEBACiAgICAgdm9pZCAoKmZyZWUpICh2b2lkICpwdHIpOwogfSBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90OwogCi10eXBlZGVmIHN0cnVjdCB7CisKKy8qIF9QeV9oYXNodGFibGU6IHRhYmxlICovCisKK3R5cGVkZWYgc3RydWN0IF9QeV9oYXNodGFibGVfdCB7CiAgICAgc2l6ZV90IG51bV9idWNrZXRzOwogICAgIHNpemVfdCBlbnRyaWVzOyAvKiBUb3RhbCBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgdGFibGUuICovCiAgICAgX1B5X3NsaXN0X3QgKmJ1Y2tldHM7CisgICAgc2l6ZV90IGtleV9zaXplOwogICAgIHNpemVfdCBkYXRhX3NpemU7CiAKICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmM7CiAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jOwotICAgIF9QeV9oYXNodGFibGVfY29weV9kYXRhX2Z1bmMgY29weV9kYXRhX2Z1bmM7Ci0gICAgX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYyBmcmVlX2RhdGFfZnVuYzsKLSAgICBfUHlfaGFzaHRhYmxlX2dldF9kYXRhX3NpemVfZnVuYyBnZXRfZGF0YV9zaXplX2Z1bmM7CiAgICAgX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdCBhbGxvYzsKIH0gX1B5X2hhc2h0YWJsZV90OwogCi0vKiBoYXNoIGFuZCBjb21wYXJlIGZ1bmN0aW9ucyBmb3IgaW50ZWdlcnMgYW5kIHBvaW50ZXJzICovCi1QeUFQSV9GVU5DKFB5X3VoYXNoX3QpIF9QeV9oYXNodGFibGVfaGFzaF9wdHIoY29uc3Qgdm9pZCAqa2V5KTsKLVB5QVBJX0ZVTkMoUHlfdWhhc2hfdCkgX1B5X2hhc2h0YWJsZV9oYXNoX2ludChjb25zdCB2b2lkICprZXkpOwotUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KTsKKy8qIGhhc2ggYSBwb2ludGVyICh2b2lkKikgKi8KK1B5QVBJX0ZVTkMoUHlfdWhhc2hfdCkgX1B5X2hhc2h0YWJsZV9oYXNoX3B0cigKKyAgICBzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBjb25zdCB2b2lkICpwa2V5KTsKKworLyogY29tcGFyaXNvbiB1c2luZyBtZW1jbXAoKSAqLworUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBjb25zdCB2b2lkICpwa2V5LAorICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpOwogCiBQeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfdCAqKSBfUHlfaGFzaHRhYmxlX25ldygKKyAgICBzaXplX3Qga2V5X3NpemUsCiAgICAgc2l6ZV90IGRhdGFfc2l6ZSwKICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jKTsKKwogUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9uZXdfZnVsbCgKKyAgICBzaXplX3Qga2V5X3NpemUsCiAgICAgc2l6ZV90IGRhdGFfc2l6ZSwKICAgICBzaXplX3QgaW5pdF9zaXplLAogICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMsCi0gICAgX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYyBjb3B5X2RhdGFfZnVuYywKLSAgICBfUHlfaGFzaHRhYmxlX2ZyZWVfZGF0YV9mdW5jIGZyZWVfZGF0YV9mdW5jLAotICAgIF9QeV9oYXNodGFibGVfZ2V0X2RhdGFfc2l6ZV9mdW5jIGdldF9kYXRhX3NpemVfZnVuYywKICAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90ICphbGxvY2F0b3IpOwotUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9jb3B5KF9QeV9oYXNodGFibGVfdCAqc3JjKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5X2hhc2h0YWJsZV9jbGVhcihfUHlfaGFzaHRhYmxlX3QgKmh0KTsKKwogUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koX1B5X2hhc2h0YWJsZV90ICpodCk7CiAKLXR5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMpIChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICphcmcpOworLyogUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCB0YWJsZSAqLworUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9jb3B5KF9QeV9oYXNodGFibGVfdCAqc3JjKTsKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2NsZWFyKF9QeV9oYXNodGFibGVfdCAqaHQpOworCit0eXBlZGVmIGludCAoKl9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jKSAoX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisKKy8qIENhbGwgZnVuYygpIG9uIGVhY2ggZW50cnkgb2YgdGhlIGhhc2h0YWJsZS4KKyAgIEl0ZXJhdGlvbiBzdG9wcyBpZiBmdW5jKCkgcmVzdWx0IGlzIG5vbi16ZXJvLCBpbiB0aGlzIGNhc2UgaXQncyB0aGUgcmVzdWx0CisgICBvZiB0aGUgY2FsbC4gT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyAwLiAqLwogUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfZm9yZWFjaCgKICAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jIGZ1bmMsIHZvaWQgKmFyZyk7CisgICAgX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMgZnVuYywKKyAgICB2b2lkICphcmcpOworCiBQeUFQSV9GVU5DKHNpemVfdCkgX1B5X2hhc2h0YWJsZV9zaXplKF9QeV9oYXNodGFibGVfdCAqaHQpOwogCi1QeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfZW50cnlfdCopIF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KAotICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5KTsKKy8qIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgaGFzaC4gVGhlIGtleSBtdXN0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBoYXNoIHRhYmxlLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gbWVtb3J5IGVycm9yLgorCisgICBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sCisgICBidXQgdXNlIF9QeV9IQVNIVEFCTEVfU0VUKCkgYW5kIF9QeV9IQVNIVEFCTEVfU0VUX05PREFUQSgpIG1hY3JvcyAqLwogUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfc2V0KAogICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5LAotICAgIHZvaWQgKmRhdGEsCi0gICAgc2l6ZV90IGRhdGFfc2l6ZSk7Ci1QeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9nZXQoCi0gICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBjb25zdCB2b2lkICprZXksCi0gICAgdm9pZCAqZGF0YSwKLSAgICBzaXplX3QgZGF0YV9zaXplKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX3BvcCgKLSAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSwKLSAgICB2b2lkICpkYXRhLAotICAgIHNpemVfdCBkYXRhX3NpemUpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2RlbGV0ZSgKLSAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSk7CisgICAgc2l6ZV90IGtleV9zaXplLAorICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpkYXRhKTsKIAogI2RlZmluZSBfUHlfSEFTSFRBQkxFX1NFVChUQUJMRSwgS0VZLCBEQVRBKSBcCi0gICAgX1B5X2hhc2h0YWJsZV9zZXQoVEFCTEUsIEtFWSwgJihEQVRBKSwgc2l6ZW9mKERBVEEpKQorICAgIF9QeV9oYXNodGFibGVfc2V0KFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpLCBzaXplb2YoREFUQSksICYoREFUQSkpCisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9TRVRfTk9EQVRBKFRBQkxFLCBLRVkpIFwKKyAgICBfUHlfaGFzaHRhYmxlX3NldChUQUJMRSwgc2l6ZW9mKEtFWSksICYoS0VZKSwgMCwgTlVMTCkKKworCisvKiBHZXQgYW4gZW50cnkuCisgICBSZXR1cm4gTlVMTCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LgorCisgICBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sIGJ1dCB1c2UgX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkoKQorICAgbWFjcm8gKi8KK1B5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV9lbnRyeV90KikgX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSk7CisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkoVEFCTEUsIEtFWSkgXAorICAgIF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpKQorCisKKy8qIEdldCBkYXRhIGZyb20gYW4gZW50cnkuIENvcHkgZW50cnkgZGF0YSBpbnRvIGRhdGEgYW5kIHJldHVybiAxIGlmIHRoZSBlbnRyeQorICAgZXhpc3RzLCByZXR1cm4gMCBpZiB0aGUgZW50cnkgZG9lcyBub3QgZXhpc3QuCisKKyAgIERvbid0IGNhbGwgZGlyZWN0bHkgdGhpcyBmdW5jdGlvbiwgYnV0IHVzZSBfUHlfSEFTSFRBQkxFX0dFVCgpIG1hY3JvICovCitQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9nZXQoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICBzaXplX3QgZGF0YV9zaXplLAorICAgIHZvaWQgKmRhdGEpOwogCiAjZGVmaW5lIF9QeV9IQVNIVEFCTEVfR0VUKFRBQkxFLCBLRVksIERBVEEpIFwKLSAgICBfUHlfaGFzaHRhYmxlX2dldChUQUJMRSwgS0VZLCAmKERBVEEpLCBzaXplb2YoREFUQSkpCisgICAgX1B5X2hhc2h0YWJsZV9nZXQoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSksIHNpemVvZihEQVRBKSwgJihEQVRBKSkKKworCisvKiBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sIGJ1dCB1c2UgX1B5X0hBU0hUQUJMRV9QT1AoKSBtYWNybyAqLworUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfcG9wKAorICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgc2l6ZV90IGtleV9zaXplLAorICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICB2b2lkICpkYXRhKTsKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX1BPUChUQUJMRSwgS0VZLCBEQVRBKSBcCisgICAgX1B5X2hhc2h0YWJsZV9wb3AoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSksIHNpemVvZihEQVRBKSwgJihEQVRBKSkKKwogCiAjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLwotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCmluZGV4IDljMjFmYjguLjYyYjZhMGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwpAQCAtMSw0ICsxLDUgQEAKIAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKQEAgLTcsNyArOCw3IEBACiAqLwogCiAKLS8qIGdyb3VwYnkgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogZ3JvdXBieSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNzQsNyArNzUsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGdyb3VwYnlfbmV4dChncm91cGJ5b2JqZWN0ICpnYm8pCiB7Ci0gICAgUHlPYmplY3QgKm5ld3ZhbHVlLCAqbmV3a2V5LCAqciwgKmdyb3VwZXIsICp0bXA7CisgICAgUHlPYmplY3QgKm5ld3ZhbHVlLCAqbmV3a2V5LCAqciwgKmdyb3VwZXI7CiAKICAgICAvKiBza2lwIHRvIG5leHQgaXRlcmF0aW9uIGdyb3VwICovCiAgICAgZm9yICg7OykgewpAQCAtODUsOCArODYsNyBAQAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCByY21wOwogCi0gICAgICAgICAgICByY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGdiby0+dGd0a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm8tPmN1cnJrZXksIFB5X0VRKTsKKyAgICAgICAgICAgIHJjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZ2JvLT50Z3RrZXksIGdiby0+Y3VycmtleSwgUHlfRVEpOwogICAgICAgICAgICAgaWYgKHJjbXAgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBlbHNlIGlmIChyY21wID09IDApCkBAIC0xMDEsMjcgKzEwMSwxOSBAQAogICAgICAgICAgICAgbmV3a2V5ID0gbmV3dmFsdWU7CiAgICAgICAgICAgICBQeV9JTkNSRUYobmV3dmFsdWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhbHVlLCBOVUxMKTsKKyAgICAgICAgICAgIG5ld2tleSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZ2JvLT5rZXlmdW5jLCBuZXd2YWx1ZSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAobmV3a2V5ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3dmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdG1wID0gZ2JvLT5jdXJya2V5OwotICAgICAgICBnYm8tPmN1cnJrZXkgPSBuZXdrZXk7Ci0gICAgICAgIFB5X1hERUNSRUYodG1wKTsKLQotICAgICAgICB0bXAgPSBnYm8tPmN1cnJ2YWx1ZTsKLSAgICAgICAgZ2JvLT5jdXJydmFsdWUgPSBuZXd2YWx1ZTsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICBQeV9YU0VUUkVGKGdiby0+Y3VycmtleSwgbmV3a2V5KTsKKyAgICAgICAgUHlfWFNFVFJFRihnYm8tPmN1cnJ2YWx1ZSwgbmV3dmFsdWUpOwogICAgIH0KIAogICAgIFB5X0lOQ1JFRihnYm8tPmN1cnJrZXkpOwotICAgIHRtcCA9IGdiby0+dGd0a2V5OwotICAgIGdiby0+dGd0a2V5ID0gZ2JvLT5jdXJya2V5OwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKGdiby0+dGd0a2V5LCBnYm8tPmN1cnJrZXkpOwogCiAgICAgZ3JvdXBlciA9IF9ncm91cGVyX2NyZWF0ZShnYm8sIGdiby0+dGd0a2V5KTsKICAgICBpZiAoZ3JvdXBlciA9PSBOVUxMKQpAQCAtMTczLDcgKzE2NSw3IEBACiAgICAgIHJlZHVjZV9kb2N9LAogICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWdyb3VwYnlfc2V0c3RhdGUsICAgIE1FVEhfTywKICAgICAgc2V0c3RhdGVfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogUHlEb2NfU1RSVkFSKGdyb3VwYnlfZG9jLApAQCAtMjk2LDggKzI4OCw3IEBACiAgICAgICAgICAgICBuZXdrZXkgPSBuZXd2YWx1ZTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsdWUsIE5VTEwpOworICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsIG5ld3ZhbHVlLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChuZXdrZXkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjUsOCArMzE2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZ3JvdXBlcl9yZWR1Y2UoX2dyb3VwZXJvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAotICAgICAgICAgICAgbHotPnBhcmVudCwgbHotPnRndGtleSk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5wYXJlbnQsIGx6LT50Z3RrZXkpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgX2dyb3VwZXJfbWV0aG9kc1tdID0gewpAQCAtMzU5LDcgKzM0OSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylfZ3JvdXBlcl90cmF2ZXJzZSwvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpX2dyb3VwZXJfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC0zODAsOCArMzcwLDcgQEAKIH07CiAKIAotCi0vKiB0ZWUgb2JqZWN0IGFuZCB3aXRoIHN1cHBvcnRpbmcgZnVuY3Rpb24gYW5kIG9iamVjdHMgKioqKioqKioqKioqKioqLworLyogdGVlIG9iamVjdCBhbmQgd2l0aCBzdXBwb3J0aW5nIGZ1bmN0aW9uIGFuZCBvYmplY3RzICoqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBUaGUgdGVlZGF0YW9iamVjdCBwcmUtYWxsb2NhdGVzIHNwYWNlIGZvciBMSU5LQ0VMTFMgbnVtYmVyIG9mIG9iamVjdHMuCiAgICBUbyBoZWxwIHRoZSBvYmplY3QgZml0IG5lYXRseSBpbnNpZGUgY2FjaGUgbGluZXMgKHNwYWNlIGZvciAxNiB0byAzMgpAQCAtMzk2LDcgKzM4NSw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICppdDsKLSAgICBpbnQgbnVtcmVhZDsgIC8qIDAgPD0gbnVtcmVhZCA8PSBMSU5LQ0VMTFMgKi8KKyAgICBpbnQgbnVtcmVhZDsgICAgICAgICAgICAgICAgLyogMCA8PSBudW1yZWFkIDw9IExJTktDRUxMUyAqLwogICAgIFB5T2JqZWN0ICpuZXh0bGluazsKICAgICBQeU9iamVjdCAqKHZhbHVlc1tMSU5LQ0VMTFNdKTsKIH0gdGVlZGF0YW9iamVjdDsKQEAgLTQwNCw3ICszOTMsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICB0ZWVkYXRhb2JqZWN0ICpkYXRhb2JqOwotICAgIGludCBpbmRleDsgICAgLyogMCA8PSBpbmRleCA8PSBMSU5LQ0VMTFMgKi8KKyAgICBpbnQgaW5kZXg7ICAgICAgICAgICAgICAgICAgLyogMCA8PSBpbmRleCA8PSBMSU5LQ0VMTFMgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IHRlZW9iamVjdDsKIApAQCAtNDYxLDYgKzQ1MCw3IEBACiB0ZWVkYXRhb2JqZWN0X3RyYXZlcnNlKHRlZWRhdGFvYmplY3QgKnRkbywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICogYXJnKQogewogICAgIGludCBpOworCiAgICAgUHlfVklTSVQodGRvLT5pdCk7CiAgICAgZm9yIChpID0gMDsgaSA8IHRkby0+bnVtcmVhZDsgaSsrKQogICAgICAgICBQeV9WSVNJVCh0ZG8tPnZhbHVlc1tpXSk7CkBAIC01MTAsNiArNTAwLDcgQEAKICAgICBpbnQgaTsKICAgICAvKiBjcmVhdGUgYSB0ZW1wb3JhcnkgbGlzdCBvZiBhbHJlYWR5IGl0ZXJhdGVkIHZhbHVlcyAqLwogICAgIFB5T2JqZWN0ICp2YWx1ZXMgPSBQeUxpc3RfTmV3KHRkby0+bnVtcmVhZCk7CisKICAgICBpZiAoIXZhbHVlcykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChpPTAgOyBpPHRkby0+bnVtcmVhZCA7IGkrKykgewpAQCAtNTc3LDcgKzU2OCw3IEBACiBQeURvY19TVFJWQVIodGVlZGF0YW9iamVjdF9kb2MsICJEYXRhIGNvbnRhaW5lciBjb21tb24gdG8gbXVsdGlwbGUgdGVlIG9iamVjdHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKSAgICAgICAgIC8qIE11c3QgZmlsbCBpbiB0eXBlIHZhbHVlIGxhdGVyICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApICAgICAgICAgICAgICAgICAvKiBNdXN0IGZpbGwgaW4gdHlwZSB2YWx1ZSBsYXRlciAqLwogICAgICJpdGVydG9vbHMuX3RlZV9kYXRhb2JqZWN0IiwgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZih0ZWVkYXRhb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwpAQCAtNTk3LDcgKzU4OCw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICB0ZWVkYXRhb2JqZWN0X2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpdGVlZGF0YW9iamVjdF90cmF2ZXJzZSwgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSl0ZWVkYXRhb2JqZWN0X2NsZWFyLCAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC03NTIsOSArNzQzLDkgQEAKICJJdGVyYXRvciB3cmFwcGVkIHRvIG1ha2UgaXQgY29weWFibGUiKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRlZV9tZXRob2RzW10gPSB7Ci0gICAgeyJfX2NvcHlfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pdGVlX2NvcHksICBNRVRIX05PQVJHUywgdGVlY29weV9kb2N9LAotICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAotICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXRlZV9zZXRzdGF0ZSwgICAgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAorICAgIHsiX19jb3B5X18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9jb3B5LCAgICAgTUVUSF9OT0FSR1MsIHRlZWNvcHlfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0ZWVfcmVkdWNlLCAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil0ZWVfc2V0c3RhdGUsIE1FVEhfTywgICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC03ODQsNyArNzc1LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKXRlZV90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KXRlZV9jbGVhciwgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZih0ZWVvYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YodGVlb2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyl0ZWVfbmV4dCwgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICB0ZWVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCkBAIC04NTAsMTIgKzg0MSwxMyBAQAogInRlZShpdGVyYWJsZSwgbj0yKSAtLT4gdHVwbGUgb2YgbiBpbmRlcGVuZGVudCBpdGVyYXRvcnMuIik7CiAKIAotLyogY3ljbGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjeWNsZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKml0OwogICAgIFB5T2JqZWN0ICpzYXZlZDsKKyAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIGludCBmaXJzdHBhc3M7CiB9IGN5Y2xlb2JqZWN0OwogCkBAIC04OTUsNiArODg3LDcgQEAKICAgICB9CiAgICAgbHotPml0ID0gaXQ7CiAgICAgbHotPnNhdmVkID0gc2F2ZWQ7CisgICAgbHotPmluZGV4ID0gMDsKICAgICBsei0+Zmlyc3RwYXNzID0gMDsKIAogICAgIHJldHVybiAoUHlPYmplY3QgKilsejsKQEAgLTkwNCwxNSArODk3LDE2IEBACiBjeWNsZV9kZWFsbG9jKGN5Y2xlb2JqZWN0ICpseikKIHsKICAgICBQeU9iamVjdF9HQ19VblRyYWNrKGx6KTsKLSAgICBQeV9YREVDUkVGKGx6LT5zYXZlZCk7CiAgICAgUHlfWERFQ1JFRihsei0+aXQpOworICAgIFB5X1hERUNSRUYobHotPnNhdmVkKTsKICAgICBQeV9UWVBFKGx6KS0+dHBfZnJlZShseik7CiB9CiAKIHN0YXRpYyBpbnQKIGN5Y2xlX3RyYXZlcnNlKGN5Y2xlb2JqZWN0ICpseiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfVklTSVQobHotPml0KTsKKyAgICBpZiAobHotPml0KQorICAgICAgICBQeV9WSVNJVChsei0+aXQpOwogICAgIFB5X1ZJU0lUKGx6LT5zYXZlZCk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC05MjEsNTYgKzkxNSw2OSBAQAogY3ljbGVfbmV4dChjeWNsZW9iamVjdCAqbHopCiB7CiAgICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlPYmplY3QgKml0OwotICAgIFB5T2JqZWN0ICp0bXA7CiAKLSAgICB3aGlsZSAoMSkgeworICAgIGlmIChsei0+aXQgIT0gTlVMTCkgewogICAgICAgICBpdGVtID0gUHlJdGVyX05leHQobHotPml0KTsKICAgICAgICAgaWYgKGl0ZW0gIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKCFsei0+Zmlyc3RwYXNzICYmIFB5TGlzdF9BcHBlbmQobHotPnNhdmVkLCBpdGVtKSkgeworICAgICAgICAgICAgaWYgKGx6LT5maXJzdHBhc3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsei0+c2F2ZWQsIGl0ZW0pKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKQotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5TGlzdF9TaXplKGx6LT5zYXZlZCkgPT0gMCkKKyAgICAgICAgLyogTm90ZTogIFN0b3BJdGVyYXRpb24gaXMgYWxyZWFkeSBjbGVhcmVkIGJ5IFB5SXRlcl9OZXh0KCkgKi8KKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGx6LT5zYXZlZCk7Ci0gICAgICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHRtcCA9IGx6LT5pdDsKLSAgICAgICAgbHotPml0ID0gaXQ7Ci0gICAgICAgIGx6LT5maXJzdHBhc3MgPSAxOwotICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgUHlfQ0xFQVIobHotPml0KTsKICAgICB9CisgICAgaWYgKFB5X1NJWkUobHotPnNhdmVkKSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpdGVtID0gUHlMaXN0X0dFVF9JVEVNKGx6LT5zYXZlZCwgbHotPmluZGV4KTsKKyAgICBsei0+aW5kZXgrKzsKKyAgICBpZiAobHotPmluZGV4ID49IFB5X1NJWkUobHotPnNhdmVkKSkKKyAgICAgICAgbHotPmluZGV4ID0gMDsKKyAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgcmV0dXJuIGl0ZW07CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjeWNsZV9yZWR1Y2UoY3ljbGVvYmplY3QgKmx6KQogewotICAgIC8qIENyZWF0ZSBhIG5ldyBjeWNsZSB3aXRoIHRoZSBpdGVyYXRvciB0dXBsZSwgdGhlbiBzZXQKLSAgICAgKiB0aGUgc2F2ZWQgc3RhdGUgb24gaXQuCi0gICAgICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTykoT2kpIiwgUHlfVFlQRShseiksCi0gICAgICAgIGx6LT5pdCwgbHotPnNhdmVkLCBsei0+Zmlyc3RwYXNzKTsKKyAgICAvKiBDcmVhdGUgYSBuZXcgY3ljbGUgd2l0aCB0aGUgaXRlcmF0b3IgdHVwbGUsIHRoZW4gc2V0IHRoZSBzYXZlZCBzdGF0ZSAqLworICAgIGlmIChsei0+aXQgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqaXQgPSBQeU9iamVjdF9HZXRJdGVyKGx6LT5zYXZlZCk7CisgICAgICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChsei0+aW5kZXggIT0gMCkgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19zZXRzdGF0ZV9fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGl0LCAmUHlJZF9fX3NldHN0YXRlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibiIsIGx6LT5pbmRleCk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTikoT2kpIiwgUHlfVFlQRShseiksIGl0LCBsei0+c2F2ZWQsIDEpOwogICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPKShPaSkiLCBQeV9UWVBFKGx6KSwgbHotPml0LCBsei0+c2F2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZpcnN0cGFzcyk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjeWNsZV9zZXRzdGF0ZShjeWNsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKIHsKICAgICBQeU9iamVjdCAqc2F2ZWQ9TlVMTDsKICAgICBpbnQgZmlyc3RwYXNzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9pIiwgJnNhdmVkLCAmZmlyc3RwYXNzKSkKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk8haSIsICZQeUxpc3RfVHlwZSwgJnNhdmVkLCAmZmlyc3RwYXNzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfWElOQ1JFRihzYXZlZCk7CisgICAgUHlfSU5DUkVGKHNhdmVkKTsKICAgICBQeV9YU0VUUkVGKGx6LT5zYXZlZCwgc2F2ZWQpOwogICAgIGx6LT5maXJzdHBhc3MgPSBmaXJzdHBhc3MgIT0gMDsKKyAgICBsei0+aW5kZXggPSAwOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0xMDM5LDcgKzEwNDYsNyBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqZnVuYzsKICAgICBQeU9iamVjdCAqaXQ7Ci0gICAgbG9uZyAgICAgICAgIHN0YXJ0OworICAgIGxvbmcgc3RhcnQ7CiB9IGRyb3B3aGlsZW9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBkcm9wd2hpbGVfdHlwZTsKQEAgLTExMjksOCArMTEzNiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZHJvcHdoaWxlX3JlZHVjZShkcm9wd2hpbGVvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsei0+ZnVuYywgbHotPml0LCBsei0+c3RhcnQpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0YXJ0KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExODEsMTMgKzExODcsMTMgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgZHJvcHdoaWxlX2RvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylkcm9wd2hpbGVfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYylkcm9wd2hpbGVfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylkcm9wd2hpbGVfbmV4dCwgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBkcm9wd2hpbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGRyb3B3aGlsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTIwOCw3ICsxMjE0LDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKmZ1bmM7CiAgICAgUHlPYmplY3QgKml0OwotICAgIGxvbmcgICAgICAgICBzdG9wOworICAgIGxvbmcgc3RvcDsKIH0gdGFrZXdoaWxlb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHRha2V3aGlsZV90eXBlOwpAQCAtMTI4Myw3ICsxMjg5LDcgQEAKICAgICB9CiAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoZ29vZCk7CiAgICAgUHlfREVDUkVGKGdvb2QpOwotICAgIGlmIChvayA9PSAxKQorICAgIGlmIChvayA+IDApCiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICBpZiAob2sgPT0gMCkKQEAgLTEyOTQsMTQgKzEzMDAsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0YWtld2hpbGVfcmVkdWNlKHRha2V3aGlsZW9iamVjdCAqbHopCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pbCIsIFB5X1RZUEUobHopLAotICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdG9wKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdG9wKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRha2V3aGlsZV9yZWR1Y2Vfc2V0c3RhdGUodGFrZXdoaWxlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQogewogICAgIGludCBzdG9wID0gUHlPYmplY3RfSXNUcnVlKHN0YXRlKTsKKwogICAgIGlmIChzdG9wIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbHotPnN0b3AgPSBzdG9wOwpAQCAtMTM0NSw3ICsxMzUxLDcgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgdGFrZXdoaWxlX2RvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyl0YWtld2hpbGVfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYyl0YWtld2hpbGVfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KQEAgLTEzNjYsNyArMTM3Miw3IEBACiB9OwogCiAKLS8qIGlzbGljZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogaXNsaWNlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTQwMiw3ICsxNDA4LDggQEAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAiU3RvcCBhcmd1bWVudCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yIGFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKKyAgICAgICAgICAgICAgICAgICAiU3RvcCBhcmd1bWVudCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yICIKKyAgICAgICAgICAgICAgICAgICAiYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDE3LDE0ICsxNDI0LDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciBhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CisgICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciAiCisgICAgICAgICAgICAgICAgICAgImFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBpZiAoc3RhcnQ8MCB8fCBzdG9wPC0xKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAiSW5kaWNlcyBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yIGFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKKyAgICAgICAgICAgIkluZGljZXMgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciAiCisgICAgICAgICAgICJhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTUyMSw2ICsxNTMwLDcgQEAKICAgICAgKiB0aGVuICdzZXRzdGF0ZScgd2l0aCB0aGUgbmV4dCBhbmQgY291bnQKICAgICAgKi8KICAgICBQeU9iamVjdCAqc3RvcDsKKwogICAgIGlmIChsei0+aXQgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZW1wdHlfbGlzdDsKICAgICAgICAgUHlPYmplY3QgKmVtcHR5X2l0OwpAQCAtMTU1MCw2ICsxNTYwLDcgQEAKIGlzbGljZV9zZXRzdGF0ZShpc2xpY2VvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCiB7CiAgICAgUHlfc3NpemVfdCBjbnQgPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKwogICAgIGlmIChjbnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbHotPmNudCA9IGNudDsKQEAgLTE3NjQsNyArMTc3NSw3IEBACiB9OwogCiAKLS8qIGNoYWluIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjaGFpbiBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0xODQwLDMyICsxODUxLDMyIEBACiAgICAgUHlPYmplY3QgKml0ZW07CiAKICAgICBpZiAobHotPnNvdXJjZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHJlYWR5IHN0b3BwZWQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAvKiBhbHJlYWR5IHN0b3BwZWQgKi8KIAogICAgIGlmIChsei0+YWN0aXZlID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKml0ZXJhYmxlID0gUHlJdGVyX05leHQobHotPnNvdXJjZSk7CiAgICAgICAgIGlmIChpdGVyYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9DTEVBUihsei0+c291cmNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gbW9yZSBpbnB1dCBzb3VyY2VzICovCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogbm8gbW9yZSBpbnB1dCBzb3VyY2VzICovCiAgICAgICAgIH0KICAgICAgICAgbHotPmFjdGl2ZSA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwogICAgICAgICBQeV9ERUNSRUYoaXRlcmFibGUpOwogICAgICAgICBpZiAobHotPmFjdGl2ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9DTEVBUihsei0+c291cmNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgbm90IGl0ZXJhYmxlICovCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogaW5wdXQgbm90IGl0ZXJhYmxlICovCiAgICAgICAgIH0KICAgICB9Ci0gICAgaXRlbSA9IFB5SXRlcl9OZXh0KGx6LT5hY3RpdmUpOworICAgIGl0ZW0gPSAoKlB5X1RZUEUobHotPmFjdGl2ZSktPnRwX2l0ZXJuZXh0KShsei0+YWN0aXZlKTsKICAgICBpZiAoaXRlbSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gaXRlbTsKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgcmFpc2VkIGFuIGV4Y2VwdGlvbiAqLworICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIGlucHV0IHJhaXNlZCBhbiBleGNlcHRpb24gKi8KICAgICB9CiAgICAgUHlfQ0xFQVIobHotPmFjdGl2ZSk7Ci0gICAgcmV0dXJuIGNoYWluX25leHQobHopOyAgICAgICAgICAgICAgICAgICAgICAvKiByZWN1cnNlIGFuZCB1c2UgbmV4dCBhY3RpdmUgKi8KKyAgICByZXR1cm4gY2hhaW5fbmV4dChseik7ICAgICAgICAgICAgICAvKiByZWN1cnNlIGFuZCB1c2UgbmV4dCBhY3RpdmUgKi8KIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE4OTEsNiArMTkwMiw3IEBACiBjaGFpbl9zZXRzdGF0ZShjaGFpbm9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKIHsKICAgICBQeU9iamVjdCAqc291cmNlLCAqYWN0aXZlPU5VTEw7CisKICAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT3xPIiwgJnNvdXJjZSwgJmFjdGl2ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xOTE1LDEzICsxOTI3LDEzIEBACiB0aGF0IGV2YWx1YXRlcyBsYXppbHkuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjaGFpbl9tZXRob2RzW10gPSB7Ci0gICAgeyJmcm9tX2l0ZXJhYmxlIiwgKFB5Q0Z1bmN0aW9uKSBjaGFpbl9uZXdfZnJvbV9pdGVyYWJsZSwgICAgICAgICAgICBNRVRIX08gfCBNRVRIX0NMQVNTLAotICAgICAgICBjaGFpbl9mcm9tX2l0ZXJhYmxlX2RvY30sCisgICAgeyJmcm9tX2l0ZXJhYmxlIiwgKFB5Q0Z1bmN0aW9uKSBjaGFpbl9uZXdfZnJvbV9pdGVyYWJsZSwgTUVUSF9PIHwgTUVUSF9DTEFTUywKKyAgICAgY2hhaW5fZnJvbV9pdGVyYWJsZV9kb2N9LAogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNoYWluX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKICAgICAgcmVkdWNlX2RvY30sCiAgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY2hhaW5fc2V0c3RhdGUsICAgIE1FVEhfTywKICAgICAgc2V0c3RhdGVfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBjaGFpbl90eXBlID0gewpAQCAtMTk3MywxMCArMTk4NSwxMCBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sczsgICAgICAgICAgICAgICAgICAgIC8qIHR1cGxlIG9mIHBvb2wgdHVwbGVzICovCi0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgICAgICAgICAvKiBvbmUgaW5kZXggcGVyIHBvb2wgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBwcm9kdWN0IGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICpwb29sczsgICAgICAgIC8qIHR1cGxlIG9mIHBvb2wgdHVwbGVzICovCisgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciBwb29sICovCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gcHJvZHVjdG9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBwcm9kdWN0X3R5cGU7CkBAIC0xOTk1LDcgKzIwMDcsOCBAQAogICAgICAgICBQeU9iamVjdCAqdG1wYXJncyA9IFB5VHVwbGVfTmV3KDApOwogICAgICAgICBpZiAodG1wYXJncyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHRtcGFyZ3MsIGt3ZHMsICJ8bjpwcm9kdWN0Iiwga3dsaXN0LCAmcmVwZWF0KSkgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcyh0bXBhcmdzLCBrd2RzLCAifG46cHJvZHVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnJlcGVhdCkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXBhcmdzKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0yMjg0LDcgKzIyOTcsNyBAQAogc3RhdGljIFB5VHlwZU9iamVjdCBwcm9kdWN0X3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIml0ZXJ0b29scy5wcm9kdWN0IiwgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihwcm9kdWN0b2JqZWN0KSwgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICBzaXplb2YocHJvZHVjdG9iamVjdCksICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3Rvcilwcm9kdWN0X2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCkBAIC0yMzI2LDE1ICsyMzM5LDE1IEBACiB9OwogCiAKLS8qIGNvbWJpbmF0aW9ucyBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogY29tYmluYXRpb25zIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCi0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgICAgICAgICAvKiBvbmUgaW5kZXggcGVyIHJlc3VsdCBlbGVtZW50ICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgY29tYmluYXRpb25zIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCisgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciByZXN1bHQgZWxlbWVudCAqLworICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCisgICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gY29tYmluYXRpb25zb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGNvbWJpbmF0aW9uc190eXBlOwpAQCAtMjU0NCwxNyArMjU1NywxNiBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29sKTsKIAotICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpCi0gICAgeworICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQotICAgIHsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CiAgICAgICAgIFB5X3NzaXplX3QgbWF4OwogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworCiAgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCiAgICAgICAgIG1heCA9IGkgKyBuIC0gbHotPnI7CkBAIC0yNjQwLDcgKzI2NTIsNyBAQAogfTsKIAogCi0vKiBjb21iaW5hdGlvbnMgd2l0aCByZXBsYWNlbWVudCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGNvbWJpbmF0aW9ucyB3aXRoIHJlcGxhY2VtZW50IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogRXF1aXZhbGVudCB0bzoKIApAQCAtMjY3MCwxMSArMjY4MiwxMSBAQAogKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KKyAgICBQeU9iamVjdCAqcG9vbDsgICAgICAgICAvKiBpbnB1dCBjb252ZXJ0ZWQgdG8gYSB0dXBsZSAqLwogICAgIFB5X3NzaXplX3QgKmluZGljZXM7ICAgIC8qIG9uZSBpbmRleCBwZXIgcmVzdWx0IGVsZW1lbnQgKi8KICAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgY3dyIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCisgICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgY3dyIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBjd3JvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgY3dyX3R5cGU7CkBAIC0yNjkxLDggKzI3MDMsOSBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBzdGF0aWMgY2hhciAqa3dhcmdzW10gPSB7Iml0ZXJhYmxlIiwgInIiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPbjpjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCIsIGt3YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlcmFibGUsICZyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbjpjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLCAmaXRlcmFibGUsICZyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBwb29sID0gUHlTZXF1ZW5jZV9UdXBsZShpdGVyYWJsZSk7CkBAIC0yODU3LDggKzI4NzAsNyBAQAogICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobHotPnIpOwogICAgICAgICBpZiAoIWluZGljZXMpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKLSAgICAgICAgeworICAgICAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPmluZGljZXNbaV0pOwogICAgICAgICAgICAgaWYgKCFpbmRleCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbmRpY2VzKTsKQEAgLTI4ODQsMTAgKzI4OTYsMTAgQEAKICAgICB9CiAKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbCk7Ci0gICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKLSAgICB7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykgewogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworCiAgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLwogICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKi8KQEAgLTI5NzEsNyArMjk4Myw3IEBACiB9OwogCiAKLS8qIHBlcm11dGF0aW9ucyBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvKiBwZXJtdXRhdGlvbnMgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIGRlZiBwZXJtdXRhdGlvbnMoaXRlcmFibGUsIHI9Tm9uZSk6CiAgICAgJ3Blcm11dGF0aW9ucyhyYW5nZSgzKSwgMikgLS0+ICgwLDEpICgwLDIpICgxLDApICgxLDIpICgyLDApICgyLDEpJwpAQCAtMjk5OCwxMiArMzAxMCwxMiBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCi0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgICAgICAgICAvKiBvbmUgaW5kZXggcGVyIGVsZW1lbnQgaW4gdGhlIHBvb2wgKi8KLSAgICBQeV9zc2l6ZV90ICpjeWNsZXM7ICAgICAgICAgICAgICAgICAvKiBvbmUgcm9sbG92ZXIgY291bnRlciBwZXIgZWxlbWVudCBpbiB0aGUgcmVzdWx0ICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgcGVybXV0YXRpb25zIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCisgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciBlbGVtZW50IGluIHRoZSBwb29sICovCisgICAgUHlfc3NpemVfdCAqY3ljbGVzOyAgICAgLyogb25lIHJvbGxvdmVyIGNvdW50ZXIgcGVyIGVsZW1lbnQgaW4gdGhlIHJlc3VsdCAqLworICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCisgICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gcGVybXV0YXRpb25zb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHBlcm11dGF0aW9uc190eXBlOwpAQCAtMzIxOCw3ICszMjMwLDcgQEAKICAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KG4pOwogICAgICAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgIGZvciAoaT0wOyBpPG47IGkrKyl7CisgICAgICAgIGZvciAoaT0wOyBpPG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHBvLT5pbmRpY2VzW2ldKTsKICAgICAgICAgICAgIGlmICghaW5kZXgpCiAgICAgICAgICAgICAgICAgZ290byBlcnI7CkBAIC0zMjI4LDggKzMyNDAsNyBAQAogICAgICAgICBjeWNsZXMgPSBQeVR1cGxlX05ldyhwby0+cik7CiAgICAgICAgIGlmIChjeWNsZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKQotICAgICAgICB7CisgICAgICAgIGZvciAoaT0wIDsgaTxwby0+ciA7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHBvLT5jeWNsZXNbaV0pOwogICAgICAgICAgICAgaWYgKCFpbmRleCkKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTMyNTcsMTUgKzMyNjgsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShwby0+cG9vbCk7Ci0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoaW5kaWNlcykgIT0gbiB8fAotICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGN5Y2xlcykgIT0gcG8tPnIpCi0gICAgeworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGluZGljZXMpICE9IG4gfHwgUHlUdXBsZV9HRVRfU0laRShjeWNsZXMpICE9IHBvLT5yKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZm9yIChpPTA7IGk8bjsgaSsrKQotICAgIHsKKyAgICBmb3IgKGk9MDsgaTxuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShpbmRpY2VzLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOwogICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC0zMjc4LDggKzMyODYsNyBAQAogICAgICAgICBwby0+aW5kaWNlc1tpXSA9IGluZGV4OwogICAgIH0KIAotICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspCi0gICAgeworICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShjeWNsZXMsIGkpOwogICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CiAgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTMzMjAsMTEgKzMzMjcsMTEgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBwZXJtdXRhdGlvbnNfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiaXRlcnRvb2xzLnBlcm11dGF0aW9ucyIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiaXRlcnRvb2xzLnBlcm11dGF0aW9ucyIsICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHBlcm11dGF0aW9uc29iamVjdCksICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpcGVybXV0YXRpb25zX2RlYWxsb2MsICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpcGVybXV0YXRpb25zX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTMzNDEsMTMgKzMzNDgsMTMgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgcGVybXV0YXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKXBlcm11dGF0aW9uc190cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgcGVybXV0YXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylwZXJtdXRhdGlvbnNfdHJhdmVyc2UsLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgKGl0ZXJuZXh0ZnVuYylwZXJtdXRhdGlvbnNfbmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIChpdGVybmV4dGZ1bmMpcGVybXV0YXRpb25zX25leHQsICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgcGVybXVhdGlvbnNfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KQEAgLTMzNTgsMTEgKzMzNjUsMTEgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgcGVybXV0YXRpb25zX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBwZXJtdXRhdGlvbnNfbmV3LCAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCi0vKiBhY2N1bXVsYXRlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBhY2N1bXVsYXRlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTM0MjksOSArMzQzNiw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYWNjdW11bGF0ZV9uZXh0KGFjY3VtdWxhdGVvYmplY3QgKmx6KQogewotICAgIFB5T2JqZWN0ICp2YWwsICpvbGR0b3RhbCwgKm5ld3RvdGFsOworICAgIFB5T2JqZWN0ICp2YWwsICpuZXd0b3RhbDsKIAotICAgIHZhbCA9IFB5SXRlcl9OZXh0KGx6LT5pdCk7CisgICAgdmFsID0gKCpQeV9UWVBFKGx6LT5pdCktPnRwX2l0ZXJuZXh0KShsei0+aXQpOwogICAgIGlmICh2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTM0NDksMTEgKzM0NTYsOCBAQAogICAgIGlmIChuZXd0b3RhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG9sZHRvdGFsID0gbHotPnRvdGFsOwotICAgIGx6LT50b3RhbCA9IG5ld3RvdGFsOwotICAgIFB5X0RFQ1JFRihvbGR0b3RhbCk7Ci0KICAgICBQeV9JTkNSRUYobmV3dG90YWwpOworICAgIFB5X1NFVFJFRihsei0+dG90YWwsIG5ld3RvdGFsKTsKICAgICByZXR1cm4gbmV3dG90YWw7CiB9CiAKQEAgLTM0ODAsNyArMzQ4NCw3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pTyIsIFB5X1RZUEUobHopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5pdCwgbHotPmJpbm9wP2x6LT5iaW5vcDpQeV9Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT50b3RhbD9sei0+dG90YWw6UHlfTm9uZSk7Ci0gfQorfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYWNjdW11bGF0ZV9zZXRzdGF0ZShhY2N1bXVsYXRlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQpAQCAtMzY0Miw3ICszNjQ2LDcgQEAKIAogICAgICAgICBvayA9IFB5T2JqZWN0X0lzVHJ1ZShzZWxlY3Rvcik7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxlY3Rvcik7Ci0gICAgICAgIGlmIChvayA9PSAxKQorICAgICAgICBpZiAob2sgPiAwKQogICAgICAgICAgICAgcmV0dXJuIGRhdHVtOwogICAgICAgICBQeV9ERUNSRUYoZGF0dW0pOwogICAgICAgICBpZiAob2sgPCAwKQpAQCAtMzY1NSw3ICszNjU5LDcgQEAKIHsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKICAgICAgICAgbHotPmRhdGEsIGx6LT5zZWxlY3RvcnMpOwotICAgIH0KK30KIAogc3RhdGljIFB5TWV0aG9kRGVmIGNvbXByZXNzX21ldGhvZHNbXSA9IHsKICAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljb21wcmVzc19yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCkBAIC0zNjc0LDQ0ICszNjc4LDQ0IEBACiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIml0ZXJ0b29scy5jb21wcmVzcyIsICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihjb21wcmVzc29iamVjdCksICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCiAgICAgKGRlc3RydWN0b3IpY29tcHJlc3NfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8Ci0gICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIGNvbXByZXNzX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWNvbXByZXNzX3RyYXZlcnNlLCAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIGNvbXByZXNzX2RvYywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpY29tcHJlc3NfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpY29tcHJlc3NfbmV4dCwgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgY29tcHJlc3NfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIGNvbXByZXNzX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIGNvbXByZXNzX21ldGhvZHMsICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgY29tcHJlc3NfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC0zNzkyLDggKzM3OTYsNyBAQAogICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZ29vZDsKLSAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSwgTlVMTCk7CisgICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywgaXRlbSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoZ29vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzgxMiw5ICszODE1LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaWx0ZXJmYWxzZV9yZWR1Y2UoZmlsdGVyZmFsc2VvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAotICAgICAgICBsei0+ZnVuYywgbHotPml0KTsKLSAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQpOworfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZmlsdGVyZmFsc2VfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWZpbHRlcmZhbHNlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKQEAgLTM4MzQsNyArMzgzNiw3IEBACiAgICAgc2l6ZW9mKGZpbHRlcmZhbHNlb2JqZWN0KSwgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpZmlsdGVyZmFsc2VfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpZmlsdGVyZmFsc2VfZGVhbGxvYywgICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTM4NTIsNyArMzg1NCw3IEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIGZpbHRlcmZhbHNlX2RvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpZmlsdGVyZmFsc2VfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWZpbHRlcmZhbHNlX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwpAQCAtNDEwNCwxNSArNDEwNiwxNSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKLSAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBjb3VudF9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWNvdW50X3RyYXZlcnNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpY291bnRfdHJhdmVyc2UsICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpY291bnRfbmV4dCwgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgY291bnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY291bnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC00Mjc4LDkgKzQyODAsNyBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKLS8qIHppcGxvbmdlc3Qgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgorLyogemlwbG9uZ2VzdCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNDMxOSw3ICs0MzE5LDcgQEAKICAgICBpdHR1cGxlID0gUHlUdXBsZV9OZXcodHVwbGVzaXplKTsKICAgICBpZiAoaXR0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmb3IgKGk9MDsgaSA8IHR1cGxlc2l6ZTsgKytpKSB7CisgICAgZm9yIChpPTA7IGkgPCB0dXBsZXNpemU7IGkrKykgewogICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CiAgICAgICAgIFB5T2JqZWN0ICppdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbSk7CiAgICAgICAgIGlmIChpdCA9PSBOVUxMKSB7CkBAIC00NDYwLDYgKzQ0NjAsNyBAQAogICAgICAqLwogICAgIGludCBpOwogICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcoUHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSkpOworCiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChpPTA7IGk8UHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSk7IGkrKykgewpAQCAtNDUxMCw3ICs0NTExLDcgQEAKICAgICBzaXplb2YoemlwbG9uZ2VzdG9iamVjdCksICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcil6aXBfbG9uZ2VzdF9kZWFsbG9jLCAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvcil6aXBfbG9uZ2VzdF9kZWFsbG9jLCAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtNDUyNyw4ICs0NTI4LDggQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgemlwX2xvbmdlc3RfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKXppcF9sb25nZXN0X3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIHppcF9sb25nZXN0X2RvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpemlwX2xvbmdlc3RfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC00NTQ0LDcgKzQ1NDUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICB6aXBfbG9uZ2VzdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIHppcF9sb25nZXN0X25ldywgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFpbi5jIGIvTW9kdWxlcy9tYWluLmMKaW5kZXggZTRjOTU1ZS4uNjk4NmQ5NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYWluLmMKKysrIGIvTW9kdWxlcy9tYWluLmMKQEAgLTQyLDExICs0MiwxMSBAQAogI2RlZmluZSBQUk9HUkFNX09QVFMgQkFTRV9PUFRTCiAKIC8qIFNob3J0IHVzYWdlIG1lc3NhZ2UgKHdpdGggJXMgZm9yIGFyZ3YwKSAqLwotc3RhdGljIGNoYXIgKnVzYWdlX2xpbmUgPQorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfbGluZVtdID0KICJ1c2FnZTogJWxzIFtvcHRpb25dIC4uLiBbLWMgY21kIHwgLW0gbW9kIHwgZmlsZSB8IC1dIFthcmddIC4uLlxuIjsKIAogLyogTG9uZyB1c2FnZSBtZXNzYWdlLCBzcGxpdCBpbnRvIHBhcnRzIDwgNTEyIGJ5dGVzICovCi1zdGF0aWMgY2hhciAqdXNhZ2VfMSA9ICJcCitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV8xW10gPSAiXAogT3B0aW9ucyBhbmQgYXJndW1lbnRzIChhbmQgY29ycmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMpOlxuXAogLWIgICAgIDogaXNzdWUgd2FybmluZ3MgYWJvdXQgc3RyKGJ5dGVzX2luc3RhbmNlKSwgc3RyKGJ5dGVhcnJheV9pbnN0YW5jZSlcblwKICAgICAgICAgIGFuZCBjb21wYXJpbmcgYnl0ZXMvYnl0ZWFycmF5IHdpdGggc3RyLiAoLWJiOiBpc3N1ZSBlcnJvcnMpXG5cCkBAIC01Niw3ICs1Niw3IEBACiAtRSAgICAgOiBpZ25vcmUgUFlUSE9OKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKHN1Y2ggYXMgUFlUSE9OUEFUSClcblwKIC1oICAgICA6IHByaW50IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0IChhbHNvIC0taGVscClcblwKICI7Ci1zdGF0aWMgY2hhciAqdXNhZ2VfMiA9ICJcCitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV8yW10gPSAiXAogLWkgICAgIDogaW5zcGVjdCBpbnRlcmFjdGl2ZWx5IGFmdGVyIHJ1bm5pbmcgc2NyaXB0OyBmb3JjZXMgYSBwcm9tcHQgZXZlblxuXAogICAgICAgICAgaWYgc3RkaW4gZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgdGVybWluYWw7IGFsc28gUFlUSE9OSU5TUEVDVD14XG5cCiAtSSAgICAgOiBpc29sYXRlIFB5dGhvbiBmcm9tIHRoZSB1c2VyJ3MgZW52aXJvbm1lbnQgKGltcGxpZXMgLUUgYW5kIC1zKVxuXApAQCAtNjcsNyArNjcsNyBAQAogLXMgICAgIDogZG9uJ3QgYWRkIHVzZXIgc2l0ZSBkaXJlY3RvcnkgdG8gc3lzLnBhdGg7IGFsc28gUFlUSE9OTk9VU0VSU0lURVxuXAogLVMgICAgIDogZG9uJ3QgaW1wbHkgJ2ltcG9ydCBzaXRlJyBvbiBpbml0aWFsaXphdGlvblxuXAogIjsKLXN0YXRpYyBjaGFyICp1c2FnZV8zID0gIlwKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzNbXSA9ICJcCiAtdSAgICAgOiB1bmJ1ZmZlcmVkIGJpbmFyeSBzdGRvdXQgYW5kIHN0ZGVyciwgc3RkaW4gYWx3YXlzIGJ1ZmZlcmVkO1xuXAogICAgICAgICAgYWxzbyBQWVRIT05VTkJVRkZFUkVEPXhcblwKICAgICAgICAgIHNlZSBtYW4gcGFnZSBmb3IgZGV0YWlscyBvbiBpbnRlcm5hbCBidWZmZXJpbmcgcmVsYXRpbmcgdG8gJy11J1xuXApAQCAtNzksNyArNzksNyBAQAogLXggICAgIDogc2tpcCBmaXJzdCBsaW5lIG9mIHNvdXJjZSwgYWxsb3dpbmcgdXNlIG9mIG5vbi1Vbml4IGZvcm1zIG9mICMhY21kXG5cCiAtWCBvcHQgOiBzZXQgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgb3B0aW9uXG5cCiAiOwotc3RhdGljIGNoYXIgKnVzYWdlXzQgPSAiXAorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfNFtdID0gIlwKIGZpbGUgICA6IHByb2dyYW0gcmVhZCBmcm9tIHNjcmlwdCBmaWxlXG5cCiAtICAgICAgOiBwcm9ncmFtIHJlYWQgZnJvbSBzdGRpbiAoZGVmYXVsdDsgaW50ZXJhY3RpdmUgbW9kZSBpZiBhIHR0eSlcblwKIGFyZyAuLi46IGFyZ3VtZW50cyBwYXNzZWQgdG8gcHJvZ3JhbSBpbiBzeXMuYXJndlsxOl1cblxuXApAQCAtODgsMjIgKzg4LDIzIEBACiBQWVRIT05QQVRIICAgOiAnJWxjJy1zZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyBwcmVmaXhlZCB0byB0aGVcblwKICAgICAgICAgICAgICAgIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoLiAgVGhlIHJlc3VsdCBpcyBzeXMucGF0aC5cblwKICI7Ci1zdGF0aWMgY2hhciAqdXNhZ2VfNSA9CitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV81W10gPQogIlBZVEhPTkhPTUUgICA6IGFsdGVybmF0ZSA8cHJlZml4PiBkaXJlY3RvcnkgKG9yIDxwcmVmaXg+JWxjPGV4ZWNfcHJlZml4PikuXG4iCiAiICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoIHVzZXMgJXMuXG4iCiAiUFlUSE9OQ0FTRU9LIDogaWdub3JlIGNhc2UgaW4gJ2ltcG9ydCcgc3RhdGVtZW50cyAoV2luZG93cykuXG4iCiAiUFlUSE9OSU9FTkNPRElORzogRW5jb2RpbmdbOmVycm9yc10gdXNlZCBmb3Igc3RkaW4vc3Rkb3V0L3N0ZGVyci5cbiIKLSJQWVRIT05GQVVMVEhBTkRMRVI6IGR1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzLlxuXAotIjsKLXN0YXRpYyBjaGFyICp1c2FnZV82ID0gIlwKLVBZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgYSByYW5kb20gdmFsdWUgaXMgdXNlZFxuXAotICAgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuICBJdCBjYW4gYWxzbyBiZVxuXAotICAgc2V0IHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdIHRvIGdldCBoYXNoIHZhbHVlcyB3aXRoIGFcblwKLSAgIHByZWRpY3RhYmxlIHNlZWQuXG5cCi0iOworIlBZVEhPTkZBVUxUSEFORExFUjogZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMuXG4iOworc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfNltdID0KKyJQWVRIT05IQVNIU0VFRDogaWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gJ3JhbmRvbScsIGEgcmFuZG9tIHZhbHVlIGlzIHVzZWRcbiIKKyIgICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlXG4iCisiICAgc2V0IHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdIHRvIGdldCBoYXNoIHZhbHVlcyB3aXRoIGFcbiIKKyIgICBwcmVkaWN0YWJsZSBzZWVkLlxuIgorIlBZVEhPTk1BTExPQzogc2V0IHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgYW5kL29yIGluc3RhbGwgZGVidWcgaG9va3NcbiIKKyIgICBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMuIFVzZSBQWVRIT05NQUxMT0M9ZGVidWcgdG8gaW5zdGFsbCBkZWJ1Z1xuIgorIiAgIGhvb2tzLlxuIjsKIAogc3RhdGljIGludAotdXNhZ2UoaW50IGV4aXRjb2RlLCB3Y2hhcl90KiBwcm9ncmFtKQordXNhZ2UoaW50IGV4aXRjb2RlLCBjb25zdCB3Y2hhcl90KiBwcm9ncmFtKQogewogICAgIEZJTEUgKmYgPSBleGl0Y29kZSA/IHN0ZGVyciA6IHN0ZG91dDsKIApAQCAtMzQxLDYgKzM0Miw3IEBACiAgICAgaW50IGhlbHAgPSAwOwogICAgIGludCB2ZXJzaW9uID0gMDsKICAgICBpbnQgc2F3X3VuYnVmZmVyZWRfZmxhZyA9IDA7CisgICAgY2hhciAqb3B0OwogICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKICAgICBQeU9iamVjdCAqd2FybmluZ19vcHRpb24gPSBOVUxMOwogICAgIFB5T2JqZWN0ICp3YXJuaW5nX29wdGlvbnMgPSBOVUxMOwpAQCAtMzY1LDYgKzM2NywxMyBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgb3B0ID0gUHlfR0VURU5WKCJQWVRIT05NQUxMT0MiKTsKKyAgICBpZiAoX1B5TWVtX1NldHVwQWxsb2NhdG9ycyhvcHQpIDwgMCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAiRXJyb3IgaW4gUFlUSE9OTUFMTE9DOiB1bmtub3duIGFsbG9jYXRvciBcIiVzXCIhXG4iLCBvcHQpOworICAgICAgICBleGl0KDEpOworICAgIH0KKwogICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDE7CiAgICAgX1B5UmFuZG9tX0luaXQoKTsKIApAQCAtNDczLDcgKzQ4Miw4IEBACiAgICAgICAgICAgICB3YXJuaW5nX29wdGlvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoX1B5T1Nfb3B0YXJnLCAtMSk7CiAgICAgICAgICAgICBpZiAod2FybmluZ19vcHRpb24gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsdXJlIGluIGhhbmRsaW5nIG9mIC1XIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBQeUxpc3RfQXBwZW5kKHdhcm5pbmdfb3B0aW9ucywgd2FybmluZ19vcHRpb24pOworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQod2FybmluZ19vcHRpb25zLCB3YXJuaW5nX29wdGlvbikgPT0gLTEpCisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbHVyZSBpbiBoYW5kbGluZyBvZiAtVyBhcmd1bWVudCIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHdhcm5pbmdfb3B0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC02NTQsNyArNjY0LDcgQEAKICAgICAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKHdidWYpOwogCiAgICAgICAgICAgICAvKiBEb24ndCBmcmVlIHdidWYsIHRoZSBhcmd1bWVudCB0byBQeV9TZXRQcm9ncmFtTmFtZQotICAgICAgICAgICAgICogbXVzdCByZW1haW4gdmFsaWQgdW50aWwgdGhlIFB5X0ZpbmFsaXplIGlzIGNhbGxlZC4KKyAgICAgICAgICAgICAqIG11c3QgcmVtYWluIHZhbGlkIHVudGlsIFB5X0ZpbmFsaXplRXggaXMgY2FsbGVkLgogICAgICAgICAgICAgICovCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKQEAgLTY5Myw3ICs3MDMsOCBAQAogICAgIFB5U3lzX1NldEFyZ3YoYXJnYy1fUHlPU19vcHRpbmQsIGFyZ3YrX1B5T1Nfb3B0aW5kKTsKIAogICAgIGlmICgoUHlfSW5zcGVjdEZsYWcgfHwgKGNvbW1hbmQgPT0gTlVMTCAmJiBmaWxlbmFtZSA9PSBOVUxMICYmIG1vZHVsZSA9PSBOVUxMKSkgJiYKLSAgICAgICAgaXNhdHR5KGZpbGVubyhzdGRpbikpKSB7CisgICAgICAgIGlzYXR0eShmaWxlbm8oc3RkaW4pKSAmJgorICAgICAgICAhUHlfSXNvbGF0ZWRGbGFnKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2OwogICAgICAgICB2ID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJyZWFkbGluZSIpOwogICAgICAgICBpZiAodiA9PSBOVUxMKQpAQCAtNzg1LDcgKzc5NiwxMSBAQAogICAgICAgICBzdHMgPSBQeVJ1bl9BbnlGaWxlRmxhZ3Moc3RkaW4sICI8c3RkaW4+IiwgJmNmKSAhPSAwOwogICAgIH0KIAotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgLyogVmFsdWUgdW5saWtlbHkgdG8gYmUgY29uZnVzZWQgd2l0aCBhIG5vbi1lcnJvciBleGl0IHN0YXR1cyBvcgorICAgICAgICBvdGhlciBzcGVjaWFsIG1lYW5pbmcgKi8KKyAgICAgICAgc3RzID0gMTIwOworICAgIH0KIAogI2lmZGVmIF9fSU5TVVJFX18KICAgICAvKiBJbnN1cmUrKyBpcyBhIG1lbW9yeSBhbmFseXNpcyB0b29sIHRoYXQgYWlkcyBpbiBkaXNjb3ZlcmluZwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYXRobW9kdWxlLmMgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwppbmRleCBiOTQ1YmQ2Li45NWVhNGY3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21hdGhtb2R1bGUuYworKysgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwpAQCAtODc1LDcgKzg3NSw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tYXRoXzIoUHlPYmplY3QgKmFyZ3MsIGRvdWJsZSAoKmZ1bmMpIChkb3VibGUsIGRvdWJsZSksIGNoYXIgKmZ1bmNuYW1lKQorbWF0aF8yKFB5T2JqZWN0ICphcmdzLCBkb3VibGUgKCpmdW5jKSAoZG91YmxlLCBkb3VibGUpLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIHsKICAgICBQeU9iamVjdCAqb3gsICpveTsKICAgICBkb3VibGUgeCwgeSwgcjsKQEAgLTE2NzIsNyArMTY3Miw3IEBACiAgICBpbiB0aGF0IGludCBpcyBsYXJnZXIgdGhhbiBQWV9TU0laRV9UX01BWC4gKi8KIAogc3RhdGljIFB5T2JqZWN0KgotbG9naGVscGVyKFB5T2JqZWN0KiBhcmcsIGRvdWJsZSAoKmZ1bmMpKGRvdWJsZSksIGNoYXIgKmZ1bmNuYW1lKQorbG9naGVscGVyKFB5T2JqZWN0KiBhcmcsIGRvdWJsZSAoKmZ1bmMpKGRvdWJsZSksIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKQogewogICAgIC8qIElmIGl0IGlzIGludCwgZG8gaXQgb3Vyc2VsdmVzLiAqLwogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewpAQCAtMjE0NCw2ICsyMTQ0LDcgQEAKIAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAicGkiLCBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9QSSkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX0UpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRhdSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1RBVSkpOyAgLyogMnBpICovCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbmYiLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9pbmYoKSkpOwogI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmFuIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1fbmFuKCkpKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWQ1bW9kdWxlLmMgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCmluZGV4IGY5NGFjYzcuLjA0YmMwNmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWQ1bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwpAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgU0laRU9GX0lOVCA9PSA0CiB0eXBlZGVmIHVuc2lnbmVkIGludCBNRDVfSU5UMzI7IC8qIDMyLWJpdCBpbnRlZ2VyICovCi10eXBlZGVmIFBZX0xPTkdfTE9ORyBNRDVfSU5UNjQ7IC8qIDY0LWJpdCBpbnRlZ2VyICovCit0eXBlZGVmIGxvbmcgbG9uZyBNRDVfSU5UNjQ7IC8qIDY0LWJpdCBpbnRlZ2VyICovCiAjZWxzZQogLyogbm90IGRlZmluZWQuIGNvbXBpbGF0aW9uIHdpbGwgZGllLiAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21tYXBtb2R1bGUuYyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCmluZGV4IGJiOThhOTkuLjczYzM3ZDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbW1hcG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCkBAIC05Myw3ICs5Myw3IEBACiAgICAgc2l6ZV90ICAgICAgc2l6ZTsKICAgICBzaXplX3QgICAgICBwb3M7ICAgIC8qIHJlbGF0aXZlIHRvIG9mZnNldCAqLwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQWV9MT05HX0xPTkcgb2Zmc2V0OworICAgIGxvbmcgbG9uZyBvZmZzZXQ7CiAjZWxzZQogICAgIG9mZl90ICAgICAgIG9mZnNldDsKICNlbmRpZgpAQCAtMzg5LDYgKzM4OSw3IEBACiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9idWZmZXIgZGF0YTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgQ0hFQ0tfVkFMSUQoTlVMTCk7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjp3cml0ZSIsICZkYXRhKSkKQEAgLTQwNiw5ICs0MDcsOSBAQAogICAgIH0KICAgICBtZW1jcHkoc2VsZi0+ZGF0YSArIHNlbGYtPnBvcywgZGF0YS5idWYsIGRhdGEubGVuKTsKICAgICBzZWxmLT5wb3MgPSBzZWxmLT5wb3MgKyBkYXRhLmxlbjsKKyAgICByZXN1bHQgPSBQeUxvbmdfRnJvbVNzaXplX3QoZGF0YS5sZW4pOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDQ1LDcgKzQ0Niw3IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChzZWxmLT5maWxlX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBEV09SRCBsb3csaGlnaDsKLSAgICAgICAgUFlfTE9OR19MT05HIHNpemU7CisgICAgICAgIGxvbmcgbG9uZyBzaXplOwogICAgICAgICBsb3cgPSBHZXRGaWxlU2l6ZShzZWxmLT5maWxlX2hhbmRsZSwgJmhpZ2gpOwogICAgICAgICBpZiAobG93ID09IElOVkFMSURfRklMRV9TSVpFKSB7CiAgICAgICAgICAgICAvKiBJdCBtaWdodCBiZSB0aGF0IHRoZSBmdW5jdGlvbiBhcHBlYXJzIHRvIGhhdmUgZmFpbGVkLApAQCAtNDU2LDcgKzQ1Nyw3IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKCFoaWdoICYmIGxvdyA8IExPTkdfTUFYKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylsb3cpOwotICAgICAgICBzaXplID0gKCgoUFlfTE9OR19MT05HKWhpZ2gpPDwzMikgKyBsb3c7CisgICAgICAgIHNpemUgPSAoKChsb25nIGxvbmcpaGlnaCk8PDMyKSArIGxvdzsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoc2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5zaXplKTsKQEAgLTEyNTcsNyArMTI1OCw3IEBACiAKIC8qIEEgbm90ZSBvbiBzaXplcyBhbmQgb2Zmc2V0czogd2hpbGUgdGhlIGFjdHVhbCBtYXAgc2l6ZSBtdXN0IGhvbGQgaW4gYQogICAgUHlfc3NpemVfdCwgYm90aCB0aGUgdG90YWwgZmlsZSBzaXplIGFuZCB0aGUgc3RhcnQgb2Zmc2V0IGNhbiBiZSBsb25nZXIKLSAgIHRoYW4gYSBQeV9zc2l6ZV90LCBzbyB3ZSB1c2UgUFlfTE9OR19MT05HIHdoaWNoIGlzIGFsd2F5cyA2NC1iaXQuCisgICB0aGFuIGEgUHlfc3NpemVfdCwgc28gd2UgdXNlIGxvbmcgbG9uZyB3aGljaCBpcyBhbHdheXMgNjQtYml0LgogKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyNjYsNyArMTI2Nyw3IEBACiAgICAgbW1hcF9vYmplY3QgKm1fb2JqOwogICAgIFB5T2JqZWN0ICptYXBfc2l6ZV9vYmogPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbWFwX3NpemU7Ci0gICAgUFlfTE9OR19MT05HIG9mZnNldCA9IDAsIHNpemU7CisgICAgbG9uZyBsb25nIG9mZnNldCA9IDAsIHNpemU7CiAgICAgRFdPUkQgb2ZmX2hpOyAgICAgICAvKiB1cHBlciAzMiBiaXRzIG9mIG9mZnNldCAqLwogICAgIERXT1JEIG9mZl9sbzsgICAgICAgLyogbG93ZXIgMzIgYml0cyBvZiBvZmZzZXQgKi8KICAgICBEV09SRCBzaXplX2hpOyAgICAgIC8qIHVwcGVyIDMyIGJpdHMgb2Ygc2l6ZSAqLwpAQCAtMTMyNSwxMCArMTMyNiw2IEBACiAgICAgICovCiAgICAgaWYgKGZpbGVubyAhPSAtMSAmJiBmaWxlbm8gIT0gMCkgewogICAgICAgICAvKiBFbnN1cmUgdGhhdCBmaWxlbm8gaXMgd2l0aGluIHRoZSBDUlQncyB2YWxpZCByYW5nZSAqLwotICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmaWxlbm8pKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgICAgIGZoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8pOwogICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTM3OCw3ICsxMzc1LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZHdFcnIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzaXplID0gKCgoUFlfTE9OR19MT05HKSBoaWdoKSA8PCAzMikgKyBsb3c7CisgICAgICAgICAgICBzaXplID0gKCgobG9uZyBsb25nKSBoaWdoKSA8PCAzMikgKyBsb3c7CiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgbW1hcCBhbiBlbXB0eSBmaWxlIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL25pc21vZHVsZS5jIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwppbmRleCA2NGViNWRiLi5iNmE4NTVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL25pc21vZHVsZS5jCisrKyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKQEAgLTc2LDExICs3Niw3IEBACiAKICAgICAqcGZpeCA9IDA7CiAgICAgZm9yIChpPTA7IGFsaWFzZXNbaV0uYWxpYXMgIT0gMEw7IGkrKykgewotICAgICAgICBpZiAoIXN0cmNtcCAoYWxpYXNlc1tpXS5hbGlhcywgbWFwKSkgewotICAgICAgICAgICAgKnBmaXggPSBhbGlhc2VzW2ldLmZpeDsKLSAgICAgICAgICAgIHJldHVybiBhbGlhc2VzW2ldLm1hcDsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXN0cmNtcCAoYWxpYXNlc1tpXS5tYXAsIG1hcCkpIHsKKyAgICAgICAgaWYgKCFzdHJjbXAgKGFsaWFzZXNbaV0uYWxpYXMsIG1hcCkgfHwgIXN0cmNtcCAoYWxpYXNlc1tpXS5tYXAsIG1hcCkpIHsKICAgICAgICAgICAgICpwZml4ID0gYWxpYXNlc1tpXS5maXg7CiAgICAgICAgICAgICByZXR1cm4gYWxpYXNlc1tpXS5tYXA7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwppbmRleCBkMmZkNWM4Li40Nzk2MjAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKKysrIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCkBAIC0zMSw5ICszMSwxMyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGxpbnV4L3NvdW5kY2FyZC5oPgorI2Vsc2UKICNpbmNsdWRlIDxzeXMvc291bmRjYXJkLmg+CisjZW5kaWYKIAotI2lmIGRlZmluZWQobGludXgpCisjaWZkZWYgX19saW51eF9fCiAKICNpZm5kZWYgSEFWRV9TVERJTlRfSAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnQzMl90OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9vdmVybGFwcGVkLmMgYi9Nb2R1bGVzL292ZXJsYXBwZWQuYwppbmRleCBmODVlNWJjLi4wYWE4NjU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL292ZXJsYXBwZWQuYworKysgYi9Nb2R1bGVzL292ZXJsYXBwZWQuYwpAQCAtOTczLDI4ICs5NzMsMjggQEAKIHN0YXRpYyBpbnQKIHBhcnNlX2FkZHJlc3MoUHlPYmplY3QgKm9iaiwgU09DS0FERFIgKkFkZHJlc3MsIGludCBMZW5ndGgpCiB7Ci0gICAgY2hhciAqSG9zdDsKKyAgICBQeV9VTklDT0RFICpIb3N0OwogICAgIHVuc2lnbmVkIHNob3J0IFBvcnQ7CiAgICAgdW5zaWduZWQgbG9uZyBGbG93SW5mbzsKICAgICB1bnNpZ25lZCBsb25nIFNjb3BlSWQ7CiAKICAgICBtZW1zZXQoQWRkcmVzcywgMCwgTGVuZ3RoKTsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKG9iaiwgInNIIiwgJkhvc3QsICZQb3J0KSkKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJ1SCIsICZIb3N0LCAmUG9ydCkpCiAgICAgewogICAgICAgICBBZGRyZXNzLT5zYV9mYW1pbHkgPSBBRl9JTkVUOwotICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzQShIb3N0LCBBRl9JTkVULCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKKyAgICAgICAgaWYgKFdTQVN0cmluZ1RvQWRkcmVzc1coSG9zdCwgQUZfSU5FVCwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICBTZXRGcm9tV2luZG93c0VycihXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgKChTT0NLQUREUl9JTiopQWRkcmVzcyktPnNpbl9wb3J0ID0gaHRvbnMoUG9ydCk7CiAgICAgICAgIHJldHVybiBMZW5ndGg7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5QXJnX1BhcnNlVHVwbGUob2JqLCAic0hrayIsICZIb3N0LCAmUG9ydCwgJkZsb3dJbmZvLCAmU2NvcGVJZCkpCisgICAgZWxzZSBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJ1SGtrIiwgJkhvc3QsICZQb3J0LCAmRmxvd0luZm8sICZTY29wZUlkKSkKICAgICB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIEFkZHJlc3MtPnNhX2ZhbWlseSA9IEFGX0lORVQ2OwotICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzQShIb3N0LCBBRl9JTkVUNiwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CisgICAgICAgIGlmIChXU0FTdHJpbmdUb0FkZHJlc3NXKEhvc3QsIEFGX0lORVQ2LCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKICAgICAgICAgICAgIFNldEZyb21XaW5kb3dzRXJyKFdTQUdldExhc3RFcnJvcigpKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKaW5kZXggNjQ3MWI4ZS4uODI3NzBhNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCkBAIC01Myw3ICs1Myw3IEBACiAvKiAgU3RyaW5nIGNvbnN0YW50cyB1c2VkIHRvIGluaXRpYWxpemUgbW9kdWxlIGF0dHJpYnV0ZXMuCiAgKgogICovCi1zdGF0aWMgY2hhciBwYXJzZXJfY29weXJpZ2h0X3N0cmluZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHBhcnNlcl9jb3B5cmlnaHRfc3RyaW5nW10gPQogIkNvcHlyaWdodCAxOTk1LTE5OTYgYnkgVmlyZ2luaWEgUG9seXRlY2huaWMgSW5zdGl0dXRlICYgU3RhdGVcblwKIFVuaXZlcnNpdHksIEJsYWNrc2J1cmcsIFZpcmdpbmlhLCBVU0EsIGFuZCBGcmVkIEwuIERyYWtlLCBKci4sIFJlc3RvbixcblwKIFZpcmdpbmlhLCBVU0EuICBQb3J0aW9ucyBjb3B5cmlnaHQgMTk5MS0xOTk1IGJ5IFN0aWNodGluZyBNYXRoZW1hdGlzY2hcblwKQEAgLTYzLDcgKzYzLDcgQEAKIFB5RG9jX1NUUlZBUihwYXJzZXJfZG9jX3N0cmluZywKICJUaGlzIGlzIGFuIGludGVyZmFjZSB0byBQeXRob24ncyBpbnRlcm5hbCBwYXJzZXIuIik7CiAKLXN0YXRpYyBjaGFyIHBhcnNlcl92ZXJzaW9uX3N0cmluZ1tdID0gIjAuNSI7CitzdGF0aWMgY29uc3QgY2hhciBwYXJzZXJfdmVyc2lvbl9zdHJpbmdbXSA9ICIwLjUiOwogCiAKIHR5cGVkZWYgUHlPYmplY3QqICgqU2VxTWFrZXIpIChQeV9zc2l6ZV90IGxlbmd0aCk7CkBAIC01NzgsMTMgKzU3OCwxMyBAQAogfQogCiAKLS8qICBlcnJfc3RyaW5nKGNoYXIqIG1lc3NhZ2UpCisvKiAgZXJyX3N0cmluZyhjb25zdCBjaGFyKiBtZXNzYWdlKQogICoKICAqICBTZXRzIHRoZSBlcnJvciBzdHJpbmcgZm9yIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIFBhcnNlckVycm9yLgogICoKICAqLwogc3RhdGljIHZvaWQKLWVycl9zdHJpbmcoY2hhciAqbWVzc2FnZSkKK2Vycl9zdHJpbmcoY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKICAgICBQeUVycl9TZXRTdHJpbmcocGFyc2VyX2Vycm9yLCBtZXNzYWdlKTsKIH0KQEAgLTU5Nyw3ICs1OTcsNyBAQAogICoKICAqLwogc3RhdGljIFB5T2JqZWN0KgotcGFyc2VyX2RvX3BhcnNlKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNoYXIgKmFyZ3NwZWMsIGludCB0eXBlKQorcGFyc2VyX2RvX3BhcnNlKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNvbnN0IGNoYXIgKmFyZ3NwZWMsIGludCB0eXBlKQogewogICAgIGNoYXIqICAgICBzdHJpbmcgPSAwOwogICAgIFB5T2JqZWN0KiByZXMgICAgPSAwOwpAQCAtNjcwLDkgKzY3MCw3NSBAQAogCiAKIHN0YXRpYyBub2RlKiBidWlsZF9ub2RlX3RyZWUoUHlPYmplY3QgKnR1cGxlKTsKLXN0YXRpYyBpbnQgICB2YWxpZGF0ZV9leHByX3RyZWUobm9kZSAqdHJlZSk7Ci1zdGF0aWMgaW50ICAgdmFsaWRhdGVfZmlsZV9pbnB1dChub2RlICp0cmVlKTsKLXN0YXRpYyBpbnQgICB2YWxpZGF0ZV9lbmNvZGluZ19kZWNsKG5vZGUgKnRyZWUpOworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9ub2RlKG5vZGUgKnRyZWUpCit7CisgICAgaW50IHR5cGUgPSBUWVBFKHRyZWUpOworICAgIGludCBuY2ggPSBOQ0godHJlZSk7CisgICAgZGZhICpudF9kZmE7CisgICAgc3RhdGUgKmRmYV9zdGF0ZTsKKyAgICBpbnQgcG9zLCBhcmM7CisKKyAgICBhc3NlcnQoSVNOT05URVJNSU5BTCh0eXBlKSk7CisgICAgdHlwZSAtPSBOVF9PRkZTRVQ7CisgICAgaWYgKHR5cGUgPj0gX1B5UGFyc2VyX0dyYW1tYXIuZ19uZGZhcykgeworICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiVW5yZWNvZ25pemVkIG5vZGUgdHlwZSAlZC4iLCBUWVBFKHRyZWUpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG50X2RmYSA9ICZfUHlQYXJzZXJfR3JhbW1hci5nX2RmYVt0eXBlXTsKKyAgICBSRVEodHJlZSwgbnRfZGZhLT5kX3R5cGUpOworCisgICAgLyogUnVuIHRoZSBERkEgZm9yIHRoaXMgbm9udGVybWluYWwuICovCisgICAgZGZhX3N0YXRlID0gJm50X2RmYS0+ZF9zdGF0ZVtudF9kZmEtPmRfaW5pdGlhbF07CisgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBuY2g7ICsrcG9zKSB7CisgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQodHJlZSwgcG9zKTsKKyAgICAgICAgaW50IGNoX3R5cGUgPSBUWVBFKGNoKTsKKyAgICAgICAgZm9yIChhcmMgPSAwOyBhcmMgPCBkZmFfc3RhdGUtPnNfbmFyY3M7ICsrYXJjKSB7CisgICAgICAgICAgICBzaG9ydCBhX2xhYmVsID0gZGZhX3N0YXRlLT5zX2FyY1thcmNdLmFfbGJsOworICAgICAgICAgICAgYXNzZXJ0KGFfbGFiZWwgPCBfUHlQYXJzZXJfR3JhbW1hci5nX2xsLmxsX25sYWJlbHMpOworICAgICAgICAgICAgaWYgKF9QeVBhcnNlcl9HcmFtbWFyLmdfbGwubGxfbGFiZWxbYV9sYWJlbF0ubGJfdHlwZSA9PSBjaF90eXBlKSB7CisgICAgIAkgICAgICAgIC8qIFRoZSBjaGlsZCBpcyBhY2NlcHRhYmxlOyBpZiBub24tdGVybWluYWwsIHZhbGlkYXRlIGl0IHJlY3Vyc2l2ZWx5LiAqLworICAgICAgICAgICAgICAgIGlmIChJU05PTlRFUk1JTkFMKGNoX3R5cGUpICYmICF2YWxpZGF0ZV9ub2RlKGNoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgICAgICAvKiBVcGRhdGUgdGhlIHN0YXRlLCBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBjaGlsZC4gKi8KKyAgICAgICAgICAgICAgICBkZmFfc3RhdGUgPSAmbnRfZGZhLT5kX3N0YXRlW2RmYV9zdGF0ZS0+c19hcmNbYXJjXS5hX2Fycm93XTsKKyAgICAgICAgICAgICAgICBnb3RvIGFyY19mb3VuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBXaGF0IHdvdWxkIHRoaXMgc3RhdGUgaGF2ZSBhY2NlcHRlZD8gKi8KKyAgICAgICAgeworICAgICAgICAgICAgc2hvcnQgYV9sYWJlbCA9IGRmYV9zdGF0ZS0+c19hcmMtPmFfbGJsOworICAgICAgICAgICAgaW50IG5leHRfdHlwZTsKKyAgICAgICAgICAgIGlmICghYV9sYWJlbCkgLyogV291bGRuJ3QgYWNjZXB0IGFueSBtb3JlIGNoaWxkcmVuICovCisgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX251bV9jaGlsZHJlbjsKKworICAgICAgICAgICAgbmV4dF90eXBlID0gX1B5UGFyc2VyX0dyYW1tYXIuZ19sbC5sbF9sYWJlbFthX2xhYmVsXS5sYl90eXBlOworICAgICAgICAgICAgaWYgKElTTk9OVEVSTUlOQUwobmV4dF90eXBlKSkKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiRXhwZWN0ZWQgbm9kZSB0eXBlICVkLCBnb3QgJWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF90eXBlLCBjaF90eXBlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiSWxsZWdhbCB0ZXJtaW5hbDogZXhwZWN0ZWQgJXMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5UGFyc2VyX1Rva2VuTmFtZXNbbmV4dF90eXBlXSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCithcmNfZm91bmQ6CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAvKiBBcmUgd2UgaW4gYSBmaW5hbCBzdGF0ZT8gSWYgc28sIHJldHVybiAxIGZvciBzdWNjZXNzZnVsIHZhbGlkYXRpb24uICovCisgICAgZm9yIChhcmMgPSAwOyBhcmMgPCBkZmFfc3RhdGUtPnNfbmFyY3M7ICsrYXJjKSB7CisgICAgICAgIGlmICghZGZhX3N0YXRlLT5zX2FyY1thcmNdLmFfbGJsKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworaWxsZWdhbF9udW1fY2hpbGRyZW46CisgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKKyAgICAgICAgICAgICAgICAgIklsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciAlcyBub2RlLiIsIG50X2RmYS0+ZF9uYW1lKTsKKyAgICByZXR1cm4gMDsKK30KIAogLyogIFB5T2JqZWN0KiBwYXJzZXJfdHVwbGUyc3QoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogICoKQEAgLTY4MSw3ICs3NDcsNyBAQAogICogIHR1cGxlIGNhbiBiZSB2YWxpZGF0ZWQuICBJdCBkb2VzIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGZpcnN0IGNvZGUgb2YgdGhlCiAgKiAgdHVwbGUsIGFuZCwgaWYgYWNjZXB0YWJsZSwgYnVpbGRzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gIElmIHRoaXMKICAqICBzdGVwIHN1Y2NlZWRzLCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gaXMgdmFsaWRhdGVkIGFzIGZ1bGx5IGFzCi0gKiAgcG9zc2libGUgd2l0aCB0aGUgdmFyaW91cyB2YWxpZGF0ZV8qKCkgcm91dGluZXMgZGVmaW5lZCBiZWxvdy4KKyAqICBwb3NzaWJsZSB3aXRoIHRoZSByZWN1cnNpdmUgdmFsaWRhdGVfbm9kZSgpIHJvdXRpbmUgZGVmaW5lZCBhYm92ZS4KICAqCiAgKiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNoYW5nZWQgaWYgc3VwcG9ydCBpcyB0byBiZSBhZGRlZCBmb3IgUHlTVF9GUkFHTUVOVAogICogIFNUIG9iamVjdHMuCkBAIC03MTAsMzMgKzc3NiwzNSBAQAogICAgICAqLwogICAgIHRyZWUgPSBidWlsZF9ub2RlX3RyZWUodHVwbGUpOwogICAgIGlmICh0cmVlICE9IDApIHsKLSAgICAgICAgaW50IHN0YXJ0X3N5bSA9IFRZUEUodHJlZSk7Ci0gICAgICAgIGlmIChzdGFydF9zeW0gPT0gZXZhbF9pbnB1dCkgeworICAgICAgICBub2RlICp2YWxpZGF0aW9uX3Jvb3QgPSB0cmVlOworICAgICAgICBpbnQgdHJlZV90eXBlID0gMDsKKyAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7CisgICAgICAgIGNhc2UgZXZhbF9pbnB1dDoKICAgICAgICAgICAgIC8qICBNaWdodCBiZSBhbiBldmFsIGZvcm0uICAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2V4cHJfdHJlZSh0cmVlKSkKLSAgICAgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCBQeVNUX0VYUFIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN0YXJ0X3N5bSA9PSBmaWxlX2lucHV0KSB7Ci0gICAgICAgICAgICAvKiAgVGhpcyBsb29rcyBsaWtlIGFuIGV4ZWMgZm9ybSBzbyBmYXIuICAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2ZpbGVfaW5wdXQodHJlZSkpCi0gICAgICAgICAgICAgICAgc3QgPSBwYXJzZXJfbmV3c3RvYmplY3QodHJlZSwgUHlTVF9TVUlURSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlOb2RlX0ZyZWUodHJlZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc3RhcnRfc3ltID09IGVuY29kaW5nX2RlY2wpIHsKKyAgICAgICAgICAgIHRyZWVfdHlwZSA9IFB5U1RfRVhQUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGVuY29kaW5nX2RlY2w6CiAgICAgICAgICAgICAvKiBUaGlzIGxvb2tzIGxpa2UgYW4gZW5jb2RpbmdfZGVjbCBzbyBmYXIuICovCi0gICAgICAgICAgICBpZiAodmFsaWRhdGVfZW5jb2RpbmdfZGVjbCh0cmVlKSkKLSAgICAgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCBQeVNUX1NVSVRFKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChOQ0godHJlZSkgIT0gMSkKKyAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJFcnJvciBQYXJzaW5nIGVuY29kaW5nX2RlY2wiKTsKKyAgICAgICAgICAgIHZhbGlkYXRpb25fcm9vdCA9IENISUxEKHRyZWUsIDApOworICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovCisgICAgICAgIGNhc2UgZmlsZV9pbnB1dDoKKyAgICAgICAgICAgIC8qICBUaGlzIGxvb2tzIGxpa2UgYW4gZXhlYyBmb3JtIHNvIGZhci4gICovCisKKyAgICAgICAgICAgIHRyZWVfdHlwZSA9IFB5U1RfU1VJVEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8qICBUaGlzIGlzIGEgZnJhZ21lbnQsIGF0IGJlc3QuICovCiAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKICAgICAgICAgICAgIGVycl9zdHJpbmcoInBhcnNlIHRyZWUgZG9lcyBub3QgdXNlIGEgdmFsaWQgc3RhcnQgc3ltYm9sIik7CisgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKHZhbGlkYXRlX25vZGUodmFsaWRhdGlvbl9yb290KSkKKyAgICAgICAgICAgIHN0ID0gcGFyc2VyX25ld3N0b2JqZWN0KHRyZWUsIHRyZWVfdHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwogICAgIH0KICAgICAvKiAgTWFrZSBzdXJlIHdlIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBhbGwgZXJyb3JzLiAgV2Ugc2hvdWxkIG5ldmVyCiAgICAgICogIGdldCB0aGlzLCBidXQgd2UnZCBkbyB3ZWxsIHRvIGJlIHN1cmUgc29tZXRoaW5nIGlzIGRvbmUuCkBAIC05ODEsMjQzMyArMTA0OSw2IEBACiB9CiAKIAotLyoKLSAqICBWYWxpZGF0aW9uIHJvdXRpbmVzIHVzZWQgd2l0aGluIHRoZSB2YWxpZGF0aW9uIHNlY3Rpb246Ci0gKi8KLXN0YXRpYyBpbnQgdmFsaWRhdGVfdGVybWluYWwobm9kZSAqdGVybWluYWwsIGludCB0eXBlLCBjaGFyICpzdHJpbmcpOwotCi0jZGVmaW5lIHZhbGlkYXRlX2FtcGVyc2FuZChjaCkgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIEFNUEVSLCAiJiIpCi0jZGVmaW5lIHZhbGlkYXRlX2NpcmN1bWZsZXgoY2gpIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCBDSVJDVU1GTEVYLCAiXiIpCi0jZGVmaW5lIHZhbGlkYXRlX2NvbG9uKGNoKSAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIENPTE9OLCAiOiIpCi0jZGVmaW5lIHZhbGlkYXRlX2NvbW1hKGNoKSAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIENPTU1BLCAiLCIpCi0jZGVmaW5lIHZhbGlkYXRlX2RlZGVudChjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgREVERU5ULCAiIikKLSNkZWZpbmUgdmFsaWRhdGVfZXF1YWwoY2gpICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgRVFVQUwsICI9IikKLSNkZWZpbmUgdmFsaWRhdGVfaW5kZW50KGNoKSAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICBJTkRFTlQsIChjaGFyKilOVUxMKQotI2RlZmluZSB2YWxpZGF0ZV9scGFyZW4oY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgTFBBUiwgIigiKQotI2RlZmluZSB2YWxpZGF0ZV9uZXdsaW5lKGNoKSAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgTkVXTElORSwgKGNoYXIqKU5VTEwpCi0jZGVmaW5lIHZhbGlkYXRlX3JwYXJlbihjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBSUEFSLCAiKSIpCi0jZGVmaW5lIHZhbGlkYXRlX3NlbWkoY2gpICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBTRU1JLCAiOyIpCi0jZGVmaW5lIHZhbGlkYXRlX3N0YXIoY2gpICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBTVEFSLCAiKiIpCi0jZGVmaW5lIHZhbGlkYXRlX3ZiYXIoY2gpICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBWQkFSLCAifCIpCi0jZGVmaW5lIHZhbGlkYXRlX2RvdWJsZXN0YXIoY2gpIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCBET1VCTEVTVEFSLCAiKioiKQotI2RlZmluZSB2YWxpZGF0ZV9kb3QoY2gpICAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgIERPVCwgIi4iKQotI2RlZmluZSB2YWxpZGF0ZV9hdChjaCkgICAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgICBBVCwgIkAiKQotI2RlZmluZSB2YWxpZGF0ZV9yYXJyb3coY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgIFJBUlJPVywgIi0+IikKLSNkZWZpbmUgdmFsaWRhdGVfbmFtZShjaCwgc3RyKSAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgIE5BTUUsIHN0cikKLQotI2RlZmluZSBWQUxJREFURVIobikgICAgc3RhdGljIGludCB2YWxpZGF0ZV8jI24obm9kZSAqdHJlZSkKLQotVkFMSURBVEVSKG5vZGUpOyAgICAgICAgICAgICAgICBWQUxJREFURVIoc21hbGxfc3RtdCk7Ci1WQUxJREFURVIoY2xhc3MpOyAgICAgICAgICAgICAgIFZBTElEQVRFUihub2RlKTsKLVZBTElEQVRFUihwYXJhbWV0ZXJzKTsgICAgICAgICAgVkFMSURBVEVSKHN1aXRlKTsKLVZBTElEQVRFUih0ZXN0bGlzdCk7ICAgICAgICAgICAgVkFMSURBVEVSKHZhcmFyZ3NsaXN0KTsKLVZBTElEQVRFUih2ZnBkZWYpOwotVkFMSURBVEVSKHN0bXQpOyAgICAgICAgICAgICAgICBWQUxJREFURVIoc2ltcGxlX3N0bXQpOwotVkFMSURBVEVSKGV4cHJfc3RtdCk7ICAgICAgICAgICBWQUxJREFURVIocG93ZXIpOwotVkFMSURBVEVSKGRlbF9zdG10KTsKLVZBTElEQVRFUihyZXR1cm5fc3RtdCk7ICAgICAgICAgVkFMSURBVEVSKHJhaXNlX3N0bXQpOwotVkFMSURBVEVSKGltcG9ydF9zdG10KTsgICAgICAgICBWQUxJREFURVIoaW1wb3J0X3N0bXQpOwotVkFMSURBVEVSKGltcG9ydF9uYW1lKTsgICAgICAgICBWQUxJREFURVIoeWllbGRfc3RtdCk7Ci1WQUxJREFURVIoZ2xvYmFsX3N0bXQpOyAgICAgICAgIFZBTElEQVRFUihub25sb2NhbF9zdG10KTsKLVZBTElEQVRFUihhc3NlcnRfc3RtdCk7Ci1WQUxJREFURVIoY29tcG91bmRfc3RtdCk7ICAgICAgIFZBTElEQVRFUih0ZXN0X29yX3N0YXJfZXhwcik7Ci1WQUxJREFURVIod2hpbGUpOyAgICAgICAgICAgICAgIFZBTElEQVRFUihmb3IpOwotVkFMSURBVEVSKHRyeSk7ICAgICAgICAgICAgICAgICBWQUxJREFURVIoZXhjZXB0X2NsYXVzZSk7Ci1WQUxJREFURVIodGVzdCk7ICAgICAgICAgICAgICAgIFZBTElEQVRFUihhbmRfdGVzdCk7Ci1WQUxJREFURVIobm90X3Rlc3QpOyAgICAgICAgICAgIFZBTElEQVRFUihjb21wYXJpc29uKTsKLVZBTElEQVRFUihjb21wX29wKTsKLVZBTElEQVRFUihzdGFyX2V4cHIpOyAgICAgICAgICAgVkFMSURBVEVSKGV4cHIpOwotVkFMSURBVEVSKHhvcl9leHByKTsgICAgICAgICAgICBWQUxJREFURVIoYW5kX2V4cHIpOwotVkFMSURBVEVSKHNoaWZ0X2V4cHIpOyAgICAgICAgICBWQUxJREFURVIoYXJpdGhfZXhwcik7Ci1WQUxJREFURVIodGVybSk7ICAgICAgICAgICAgICAgIFZBTElEQVRFUihmYWN0b3IpOwotVkFMSURBVEVSKGF0b20pOyAgICAgICAgICAgICAgICBWQUxJREFURVIobGFtYmRlZik7Ci1WQUxJREFURVIodHJhaWxlcik7ICAgICAgICAgICAgIFZBTElEQVRFUihzdWJzY3JpcHQpOwotVkFMSURBVEVSKHN1YnNjcmlwdGxpc3QpOyAgICAgICBWQUxJREFURVIoc2xpY2VvcCk7Ci1WQUxJREFURVIoZXhwcmxpc3QpOyAgICAgICAgICAgIFZBTElEQVRFUihkaWN0b3JzZXRtYWtlcik7Ci1WQUxJREFURVIoYXJnbGlzdCk7ICAgICAgICAgICAgIFZBTElEQVRFUihhcmd1bWVudCk7Ci1WQUxJREFURVIoY29tcF9mb3IpOwotVkFMSURBVEVSKGNvbXBfaXRlcik7ICAgICAgICAgICBWQUxJREFURVIoY29tcF9pZik7Ci1WQUxJREFURVIodGVzdGxpc3RfY29tcCk7ICAgICAgIFZBTElEQVRFUih5aWVsZF9leHByKTsKLVZBTElEQVRFUihvcl90ZXN0KTsKLVZBTElEQVRFUih0ZXN0X25vY29uZCk7ICAgICAgICAgVkFMSURBVEVSKGxhbWJkZWZfbm9jb25kKTsKLVZBTElEQVRFUih5aWVsZF9hcmcpOwotVkFMSURBVEVSKGFzeW5jX2Z1bmNkZWYpOyAgICAgICBWQUxJREFURVIoYXN5bmNfc3RtdCk7Ci1WQUxJREFURVIoYXRvbV9leHByKTsKLQotI3VuZGVmIFZBTElEQVRFUgotCi0jZGVmaW5lIGlzX2V2ZW4obikgICAgICAoKChuKSAmIDEpID09IDApCi0jZGVmaW5lIGlzX29kZChuKSAgICAgICAoKChuKSAmIDEpID09IDEpCi0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbnR5cGUobm9kZSAqbiwgaW50IHQpCi17Ci0gICAgaWYgKFRZUEUobikgIT0gdCkgewotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiRXhwZWN0ZWQgbm9kZSB0eXBlICVkLCBnb3QgJWQuIiwKLSAgICAgICAgICAgICAgICAgICAgIHQsIFRZUEUobikpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLQotLyogIFZlcmlmaWVzIHRoYXQgdGhlIG51bWJlciBvZiBjaGlsZCBub2RlcyBpcyBleGFjdGx5ICdudW0nLCByYWlzaW5nCi0gKiAgYW4gZXhjZXB0aW9uIGlmIGl0IGlzbid0LiAgVGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGRvZXMgbm90IGluZGljYXRlCi0gKiAgdGhlIGV4YWN0IG51bWJlciBvZiBub2RlcywgYWxsb3dpbmcgdGhpcyB0byBiZSB1c2VkIHRvIHJhaXNlIHRoZQotICogICJyaWdodCIgZXhjZXB0aW9uIHdoZW4gdGhlIHdyb25nIG51bWJlciBvZiBub2RlcyBpcyBwcmVzZW50IGluIGEKLSAqICBzcGVjaWZpYyB2YXJpYW50IG9mIGEgc3RhdGVtZW50J3Mgc3ludGF4LiAgVGhpcyBpcyBjb21tb25seSB1c2VkCi0gKiAgaW4gdGhhdCBmYXNoaW9uLgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9udW1ub2Rlcyhub2RlICpuLCBpbnQgbnVtLCBjb25zdCBjaGFyICpjb25zdCBuYW1lKQotewotICAgIGlmIChOQ0gobikgIT0gbnVtKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yICVzIG5vZGUuIiwgbmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXJtaW5hbChub2RlICp0ZXJtaW5hbCwgaW50IHR5cGUsIGNoYXIgKnN0cmluZykKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRlcm1pbmFsLCB0eXBlKQotICAgICAgICAgICAgICAgJiYgKChzdHJpbmcgPT0gMCkgfHwgKHN0cmNtcChzdHJpbmcsIFNUUih0ZXJtaW5hbCkpID09IDApKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgdGVybWluYWw6IGV4cGVjdGVkIFwiJXNcIiIsIHN0cmluZyk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotLyogIFggKCcsJyBYKSBbJywnXSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUobm9kZSAqdHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaXN0X25vZGVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnZhbGlkYXRlX2NoaWxkX2Z1bmNfaW5jKShub2RlICosIGludCAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbGlzdF9ub2RlX3R5cGVfbmFtZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIGxpc3Rfbm9kZV90eXBlKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBsaXN0X25vZGVfdHlwZV9uYW1lKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoIDsgcmVzICYmICpwb3MgPCBuY2g7ICkgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2hpbGRfZnVuY19pbmModHJlZSwgcG9zKTsKLSAgICAgICAgICAgIGlmICghcmVzIHx8ICpwb3MgPj0gbmNoKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgKCpwb3MpKyspKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgWCAoJywnIFgpIFsnLCddICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdChub2RlICp0cmVlLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpc3Rfbm9kZV90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqdmFsaWRhdGVfY2hpbGRfZnVuYykobm9kZSAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IGxpc3Rfbm9kZV90eXBlX25hbWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKG5jaCAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBsaXN0X25vZGVfdHlwZSkpOwotICAgIGludCBwb3MgPSAwOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLwotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgbGlzdF9ub2RlX3R5cGVfbmFtZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmb3IgKCA7IHJlcyAmJiBwb3MgPCBuY2g7ICkgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2hpbGRfZnVuYyhDSElMRCh0cmVlLCBwb3MrKykpOwotICAgICAgICAgICAgaWYgKCFyZXMgfHwgcG9zID49IG5jaCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIHBvcysrKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiAgdmFsaWRhdGVfY2xhc3MoKQotICoKLSAqICBjbGFzc2RlZjoKLSAqICAgICAgJ2NsYXNzJyBOQU1FIFsnKCcgdGVzdGxpc3QgJyknXSAnOicgc3VpdGUKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY2xhc3Mobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgY2xhc3NkZWYpICYmCi0gICAgICAgICAgICAgICAgKChuY2ggPT0gNCkgfHwgKG5jaCA9PSA2KSB8fCAobmNoID09IDcpKSk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiY2xhc3MiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgImNsYXNzIik7Ci0gICAgfQotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDcpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAoKHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLCAyKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2FyZ2xpc3QoQ0hJTEQodHJlZSwgMykpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwgNCkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDYpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsMikpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwzKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgaWZfc3RtdDoKLSAqICAgICAgJ2lmJyB0ZXN0ICc6JyBzdWl0ZSAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSogWydlbHNlJyAnOicgc3VpdGVdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2lmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGlmX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAobmNoID49IDQpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiaWYiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIGlmIChyZXMgJiYgKChuY2ggJSA0KSA9PSAzKSkgewotICAgICAgICAvKiAgLi4uICdlbHNlJyAnOicgc3VpdGUgICovCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIG5jaCAtIDMpLCAiZWxzZSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgICAgIG5jaCAtPSAzOwotICAgIH0KLSAgICBlbHNlIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgImlmIik7Ci0gICAgaWYgKChuY2ggJSA0KSAhPSAwKQotICAgICAgICAvKiBXaWxsIGNhdGNoIHRoZSBjYXNlIGZvciBuY2ggPCA0ICovCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDAsICJpZiIpOwotICAgIGVsc2UgaWYgKHJlcyAmJiAobmNoID4gNCkpIHsKLSAgICAgICAgLyogIC4uLiAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSsgLi4uICAqLwotICAgICAgICBpbnQgaiA9IDQ7Ci0gICAgICAgIHdoaWxlICgoaiA8IG5jaCkgJiYgcmVzKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBqKSwgImVsaWYiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIGogKyAyKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGogKyAxKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBqICsgMykpKTsKLSAgICAgICAgICAgIGogKz0gNDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHBhcmFtZXRlcnM6Ci0gKiAgICAgICcoJyBbdmFyYXJnc2xpc3RdICcpJwotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcGFyYW1ldGVycyhub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHBhcmFtZXRlcnMpICYmICgobmNoID09IDIpIHx8IChuY2ggPT0gMykpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAicGFyYW1ldGVycyIpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHZhbGlkYXRlX3N1aXRlKCkKLSAqCi0gKiAgc3VpdGU6Ci0gKiAgICAgIHNpbXBsZV9zdG10Ci0gKiAgICB8IE5FV0xJTkUgSU5ERU5UIHN0bXQrIERFREVOVAotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zdWl0ZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBzdWl0ZSkgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA+PSA0KSkpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDEpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaW1wbGVfc3RtdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgZWxzZSBpZiAocmVzKSB7Ci0gICAgICAgIC8qICBORVdMSU5FIElOREVOVCBzdG10KyBERURFTlQgICovCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uZXdsaW5lKENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfaW5kZW50KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3RtdChDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RlZGVudChDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotCi0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA+IDQpKSB7Ci0gICAgICAgICAgICBpbnQgaSA9IDM7Ci0gICAgICAgICAgICAtLW5jaDsgICAgICAgICAgICAgICAgICAgICAgLyogZm9yZ2V0IHRoZSBERURFTlQgICAgICovCi0gICAgICAgICAgICBmb3IgKCA7IHJlcyAmJiAoaSA8IG5jaCk7ICsraSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10KENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPCA0KQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgInN1aXRlIik7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0bGlzdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwgdGVzdGxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0LCAidGVzdGxpc3QiKSk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3RsaXN0X3N0YXJfZXhwcihub2RlICp0bCkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRsLCB0ZXN0bGlzdF9zdGFyX2V4cHIsIHZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RsaXN0IikpOwotfQotCi0KLS8qIHZhbGlkYXRlIGVpdGhlciB2ZnBkZWYgb3IgdGZwZGVmLgotICogdmZwZGVmOiBOQU1FCi0gKiB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV92ZnBkZWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGlmIChUWVBFKHRyZWUpID09IHZmcGRlZikgewotICAgICAgICByZXR1cm4gbmNoID09IDEgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKFRZUEUodHJlZSkgPT0gdGZwZGVmKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKSB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCkgJiYKLSAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAxKSkgJiYKLSAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDIpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotLyogJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdmZwZGVmXSB8ICcqKicgdmZwZGVmCi0gKiAuLm9yIHRmcGRlZiBpbiBwbGFjZSBvZiB2ZnBkZWYuIHZmcGRlZjogTkFNRTsgdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdmFyYXJnc2xpc3RfdHJhaWxlcihub2RlICp0cmVlLCBpbnQgc3RhcnQpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gMDsKLQotICAgIGlmIChuY2ggPD0gc3RhcnQpIHsKLSAgICAgICAgZXJyX3N0cmluZygiZXhwZWN0ZWQgdmFyaWFibGUgYXJndW1lbnQgdHJhaWxlciBmb3IgdmFyYXJnc2xpc3QiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gU1RBUikgewotICAgICAgICAvKgotICAgICAgICAgKiAnKicgW3ZmcGRlZl0KLSAgICAgICAgICovCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0YXIoQ0hJTEQodHJlZSwgc3RhcnQrKykpOwotICAgICAgICBpZiAocmVzICYmIHN0YXJ0IDwgbmNoICYmIChUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gdmZwZGVmIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQpKSA9PSB0ZnBkZWYpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmZwZGVmKENISUxEKHRyZWUsIHN0YXJ0KyspKTsKLSAgICAgICAgLyoKLSAgICAgICAgICogKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqCi0gICAgICAgICAqLwotICAgICAgICB3aGlsZSAocmVzICYmIHN0YXJ0ICsgMSA8IG5jaCAmJiAoCi0gICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCBzdGFydCArIDEpKSA9PSB2ZnBkZWYgfHwKLSAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIHN0YXJ0ICsgMSkpID09IHRmcGRlZikpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92ZnBkZWYoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICAgICAgICAgIGlmIChyZXMgJiYgc3RhcnQgKyAxIDwgbmNoICYmIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQpKSA9PSBFUVVBTCkKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZXF1YWwoQ0hJTEQodHJlZSwgc3RhcnQrKykpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICAgICAgfQotICAgICAgICAvKgotICAgICAgICAgKiBbJywnICcqKicgdmZwZGVmXQotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHJlcyAmJiBzdGFydCArIDIgPCBuY2ggJiYgVFlQRShDSElMRCh0cmVlLCBzdGFydCsxKSkgPT0gRE9VQkxFU1RBUikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3ZmcGRlZihDSElMRCh0cmVlLCBzdGFydCsrKSkpOwotICAgIH0KLSAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gRE9VQkxFU1RBUikgewotICAgICAgICAvKgotICAgICAgICAgKiAnKionIHZmcGRlZgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHN0YXJ0ICsgMSA8IG5jaCkKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3ZmcGRlZihDSElMRCh0cmVlLCBzdGFydCsrKSkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJleHBlY3RlZCB2ZnBkZWYgYWZ0ZXIgKiogaW4gdmFyYXJnc2xpc3QgdHJhaWxlciIpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBlcnJfc3RyaW5nKCJleHBlY3RlZCAqIG9yICoqIGluIHZhcmFyZ3NsaXN0IHRyYWlsZXIiKTsKLSAgICB9Ci0KLSAgICBpZiAocmVzICYmIHN0YXJ0ICE9IG5jaCkgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBlcnJfc3RyaW5nKCJ1bmV4cGVjdGVkIGV4dHJhIGNoaWxkcmVuIGluIHZhcmFyZ3NsaXN0IHRyYWlsZXIiKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiB2YWxpZGF0ZV92YXJhcmdzbGlzdCgpCi0gKgotICogVmFsaWRhdGUgdHlwZWRhcmdzbGlzdCBvciB2YXJhcmdzbGlzdC4KLSAqCi0gKiB0eXBlZGFyZ3NsaXN0OiAoKHRmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gKiAgICAgICAgICAgICAgICAgKCcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHRmcGRlZl0gfAotICogICAgICAgICAgICAgICAgICAnKionIHRmcGRlZikKLSAqICAgICAgICAgICAgICAgICB8IHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKLSAqIHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi0gKiB2YXJhcmdzbGlzdDogKCh2ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICogICAgICAgICAgICAgICAoJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiAgWycsJyAnKionIHZmcGRlZl0gfAotICogICAgICAgICAgICAgICAgJyoqJyB2ZnBkZWYpCi0gKiAgICAgICAgICAgICAgIHwgdmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCddKQotICogdmZwZGVmOiBOQU1FCi0gKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV92YXJhcmdzbGlzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChUWVBFKHRyZWUpID09IHZhcmFyZ3NsaXN0IHx8Ci0gICAgICAgICAgICAgICBUWVBFKHRyZWUpID09IHR5cGVkYXJnc2xpc3QpICYmCi0gICAgICAgICAgICAgIChuY2ggIT0gMCk7Ci0gICAgaW50IHN5bTsKLSAgICBub2RlICpjaDsKLSAgICBpbnQgaSA9IDA7Ci0KLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5jaCA8IDEpIHsKLSAgICAgICAgZXJyX3N0cmluZygidmFyYXJnc2xpc3QgbWlzc2luZyBjaGlsZCBub2RlcyIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgd2hpbGUgKGkgPCBuY2gpIHsKLSAgICAgICAgY2ggPSBDSElMRCh0cmVlLCBpKTsKLSAgICAgICAgc3ltID0gVFlQRShjaCk7Ci0gICAgICAgIGlmIChzeW0gPT0gdmZwZGVmIHx8IHN5bSA9PSB0ZnBkZWYpIHsKLSAgICAgICAgICAgIC8qIHZhbGlkYXRlICh2ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKyAqLwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmZwZGVmKGNoKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgIGlmIChyZXMgJiYgKGkrMiA8PSBuY2gpICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IEVRVUFMKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrMSkpKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHJlcyAmJiBpIDwgbmNoKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSkpOwotICAgICAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChzeW0gPT0gRE9VQkxFU1RBUiB8fCBzeW0gPT0gU1RBUikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmFyYXJnc2xpc3RfdHJhaWxlcih0cmVlLCBpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgZm9ybWF0aW9uIGZvciB2YXJhcmdzbGlzdCIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogIGNvbXBfaXRlcjogIGNvbXBfZm9yIHwgY29tcF9pZgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX2l0ZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGNvbXBfaXRlcikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJjb21wX2l0ZXIiKSk7Ci0gICAgaWYgKHJlcyAmJiBUWVBFKENISUxEKHRyZWUsIDApKSA9PSBjb21wX2ZvcikKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9pZihDSElMRCh0cmVlLCAwKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgY29tcF9mb3I6ICAnZm9yJyBleHBybGlzdCAnaW4nIHRlc3QgW2NvbXBfaXRlcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY29tcF9mb3Iobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXM7Ci0KLSAgICBpZiAobmNoID09IDUpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfaXRlcihDSElMRCh0cmVlLCA0KSk7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCA0LCAiY29tcF9mb3IiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZm9yIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHJsaXN0KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgImluIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX29yX3Rlc3QoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qICBjb21wX2lmOiAgJ2lmJyB0ZXN0X25vY29uZCBbY29tcF9pdGVyXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX2lmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzOwotCi0gICAgaWYgKG5jaCA9PSAzKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2l0ZXIoQ0hJTEQodHJlZSwgMikpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgImNvbXBfaWYiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiaWYiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdF9ub2NvbmQoQ0hJTEQodHJlZSwgMSkpKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogIHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdAotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgc3RtdCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJzdG10IikpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICB0cmVlID0gQ0hJTEQodHJlZSwgMCk7Ci0KLSAgICAgICAgaWYgKFRZUEUodHJlZSkgPT0gc2ltcGxlX3N0bXQpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaW1wbGVfc3RtdCh0cmVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcG91bmRfc3RtdCh0cmVlKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddIE5FV0xJTkUKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3NpbXBsZV9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHNpbXBsZV9zdG10KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSAyKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc21hbGxfc3RtdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25ld2xpbmUoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLQotICAgIGlmIChuY2ggPCAyKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAic2ltcGxlX3N0bXQiKTsKLSAgICAtLW5jaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3JnZXQgdGhlIE5FV0xJTkUgICAgKi8KLSAgICBpZiAocmVzICYmIGlzX2V2ZW4obmNoKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfc2VtaShDSElMRCh0cmVlLCAtLW5jaCkpOwotICAgIGlmIChyZXMgJiYgKG5jaCA+IDIpKSB7Ci0gICAgICAgIGludCBpOwotCi0gICAgICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSA8IG5jaCk7IGkgKz0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9zZW1pKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3NtYWxsX3N0bXQoQ0hJTEQodHJlZSwgaSArIDEpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zbWFsbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInNtYWxsX3N0bXQiKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaW50IG50eXBlID0gVFlQRShDSElMRCh0cmVlLCAwKSk7Ci0KLSAgICAgICAgaWYgKCAgKG50eXBlID09IGV4cHJfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IGRlbF9zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gcGFzc19zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gZmxvd19zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gaW1wb3J0X3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBnbG9iYWxfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IG5vbmxvY2FsX3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBhc3NlcnRfc3RtdCkpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub2RlKENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBzbWFsbF9zdG10IGNoaWxkIHR5cGUiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChuY2ggPT0gMSkgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjaGlsZCBub2RlIG9mIHNtYWxsX3N0bXQ6ICVkLiIsCi0gICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIDApKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgY29tcG91bmRfc3RtdDoKLSAqICAgICAgaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgd2l0aF9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmIHwgZGVjb3JhdGVkCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBvdW5kX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGNvbXBvdW5kX3N0bXQpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiY29tcG91bmRfc3RtdCIpKTsKLSAgICBpbnQgbnR5cGU7Ci0KLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuICgwKTsKLQotICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKLSAgICBudHlwZSA9IFRZUEUodHJlZSk7Ci0gICAgaWYgKCAgKG50eXBlID09IGlmX3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IHdoaWxlX3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IGZvcl9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSB0cnlfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gd2l0aF9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSBmdW5jZGVmKQotICAgICAgICAgIHx8IChudHlwZSA9PSBhc3luY19zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSBjbGFzc2RlZikKLSAgICAgICAgICB8fCAobnR5cGUgPT0gZGVjb3JhdGVkKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9kZSh0cmVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIGNvbXBvdW5kIHN0YXRlbWVudCB0eXBlOiAlZC4iLCBUWVBFKHRyZWUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV95aWVsZF9vcl90ZXN0bGlzdChub2RlICp0cmVlLCBpbnQgdHNlKQotewotICAgIGlmIChUWVBFKHRyZWUpID09IHlpZWxkX2V4cHIpIHsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3lpZWxkX2V4cHIodHJlZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAodHNlKQotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3Rlc3RsaXN0X3N0YXJfZXhwcih0cmVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3Rlc3RsaXN0KHRyZWUpOwotICAgIH0KLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcl9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV4cHJfc3RtdCkKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdF9zdGFyX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGlmIChyZXMgJiYgbmNoID09IDMKLSAgICAgICAgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gYXVnYXNzaWduKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKENISUxEKHRyZWUsIDEpLCAxLCAiYXVnYXNzaWduIikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX3lpZWxkX29yX3Rlc3RsaXN0KENISUxEKHRyZWUsIDIpLCAwKTsKLQotICAgICAgICBpZiAocmVzKSB7Ci0gICAgICAgICAgICBjaGFyICpzID0gU1RSKENISUxEKENISUxEKHRyZWUsIDEpLCAwKSk7Ci0KLSAgICAgICAgICAgIHJlcyA9IChzdHJjbXAocywgIis9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiLT0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIqPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIi89IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiLy89IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiJT0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICImPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgInw9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiXj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICI8PD0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICI+Pj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIqKj0iKSA9PSAwKTsKLSAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXVnbWVudGVkIGFzc2lnbm1lbnQgb3BlcmF0b3IiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChqID0gMTsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZXF1YWwoQ0hJTEQodHJlZSwgaikpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfeWllbGRfb3JfdGVzdGxpc3QoQ0hJTEQodHJlZSwgaiArIDEpLCAxKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiZGVsX3N0bXQiKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImRlbCIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHBybGlzdChDSElMRCh0cmVlLCAxKSkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3JldHVybl9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHJldHVybl9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJyZXR1cm4iKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIDEpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKgotICogIHJhaXNlX3N0bXQ6Ci0gKgotICogICdyYWlzZScgW3Rlc3QgWydmcm9tJyB0ZXN0XV0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcmFpc2Vfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCByYWlzZV9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSB8fCAobmNoID09IDQpKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJyYWlzZSIpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAicmFpc2UiKTsKLSAgICAgICAgaWYgKHJlcyAmJiAobmNoID49IDIpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSA0KSkgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJmcm9tIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDMpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qIHlpZWxkX2V4cHI6ICd5aWVsZCcgW3lpZWxkX2FyZ10KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfeWllbGRfZXhwcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaWYgKG5jaCA8IDEgfHwgbmNoID4gMikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCF2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9leHByKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCF2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAieWllbGQiKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5jaCA9PSAyKSB7Ci0gICAgICAgIGlmICghdmFsaWRhdGVfeWllbGRfYXJnKENISUxEKHRyZWUsIDEpKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotLyogeWllbGRfYXJnOiAnZnJvbScgdGVzdCB8IHRlc3RsaXN0Ci0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3lpZWxkX2FyZyhub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaWYgKCF2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9hcmcpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBzd2l0Y2ggKG5jaCkgewotICAgICAgY2FzZSAxOgotICAgICAgICBpZiAoIXZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIG5jaCAtIDEpKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCF2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZnJvbSIpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qIHlpZWxkX3N0bXQ6IHlpZWxkX2V4cHIKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfeWllbGRfc3RtdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfc3RtdCkKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJ5aWVsZF9zdG10IikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX3lpZWxkX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgaW1wb3J0X2FzX25hbWUpOwotCi0gICAgaWYgKG9rKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMSkKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCk7Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKQotICAgICAgICAgICAgb2sgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCkKLSAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJhcyIpCi0gICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCBOVUxMKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgImltcG9ydF9hc19uYW1lIik7Ci0gICAgfQotICAgIHJldHVybiBvazsKLX0KLQotCi0vKiBkb3R0ZWRfbmFtZTogIE5BTUUgKCIuIiBOQU1FKSoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZG90dGVkX25hbWUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZG90dGVkX25hbWUpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCkpOwotICAgIGludCBpOwotCi0gICAgZm9yIChpID0gMTsgcmVzICYmIChpIDwgbmNoKTsgaSArPSAyKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3QoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIGkrMSksIE5VTEwpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiBkb3R0ZWRfYXNfbmFtZTogIGRvdHRlZF9uYW1lIFtOQU1FIE5BTUVdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RvdHRlZF9hc19uYW1lKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgZG90dGVkX2FzX25hbWUpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDEpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9kb3R0ZWRfbmFtZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdHRlZF9uYW1lKENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJhcyIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgTlVMTCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgZG90dGVkX2FzX25hbWUiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qIGRvdHRlZF9hc19uYW1lICgnLCcgZG90dGVkX2FzX25hbWUpKiAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZG90dGVkX2FzX25hbWVzKG5vZGUgKnRyZWUpCi17Ci0gICAgICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgICAgIGludCByZXMgPSBpc19vZGQobmNoKSAmJiB2YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGludCBpOwotCi0gICAgICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSA8IG5jaCk7IGkgKz0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZShDSElMRCh0cmVlLCBpICsgMSkpKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qIGltcG9ydF9hc19uYW1lICgnLCcgaW1wb3J0X2FzX25hbWUpKiBbJywnXSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X2FzX25hbWVzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfaW1wb3J0X2FzX25hbWUoQ0hJTEQodHJlZSwgMCkpOwotICAgIGludCBpOwotCi0gICAgZm9yIChpID0gMTsgcmVzICYmIChpICsgMSA8IG5jaCk7IGkgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfaW1wb3J0X2FzX25hbWUoQ0hJTEQodHJlZSwgaSArIDEpKSk7Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICdpbXBvcnQnIGRvdHRlZF9hc19uYW1lcyAqLwotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X25hbWUobm9kZSAqdHJlZSkKLXsKLSAgICAgICAgcmV0dXJuICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBpbXBvcnRfbmFtZSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiaW1wb3J0X25hbWUiKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJpbXBvcnQiKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdHRlZF9hc19uYW1lcyhDSElMRCh0cmVlLCAxKSkpOwotfQotCi0vKiBIZWxwZXIgZnVuY3Rpb24gdG8gY291bnQgdGhlIG51bWJlciBvZiBsZWFkaW5nIGRvdHMgKG9yIGVsbGlwc2lzIHRva2VucykgaW4KLSAqICdmcm9tIC4uLm1vZHVsZSBpbXBvcnQgbmFtZScKLSAqLwotc3RhdGljIGludAotY291bnRfZnJvbV9kb3RzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gMTsgaSA8IE5DSCh0cmVlKTsgaSsrKQotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBpKSkgIT0gRE9UICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpICE9IEVMTElQU0lTKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgcmV0dXJuIGkgLSAxOwotfQotCi0vKiBpbXBvcnRfZnJvbTogKCdmcm9tJyAoJy4nKiBkb3R0ZWRfbmFtZSB8ICcuJyspCi0gKiAgICAgICAgICAgICAgICdpbXBvcnQnICgnKicgfCAnKCcgaW1wb3J0X2FzX25hbWVzICcpJyB8IGltcG9ydF9hc19uYW1lcykpCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9mcm9tKG5vZGUgKnRyZWUpCi17Ci0gICAgICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgICAgIGludCBuZG90cyA9IGNvdW50X2Zyb21fZG90cyh0cmVlKTsKLSAgICAgICAgaW50IGhhdmVuYW1lID0gKFRZUEUoQ0hJTEQodHJlZSwgbmRvdHMgKyAxKSkgPT0gZG90dGVkX25hbWUpOwotICAgICAgICBpbnQgb2Zmc2V0ID0gbmRvdHMgKyBoYXZlbmFtZTsKLSAgICAgICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGltcG9ydF9mcm9tKQotICAgICAgICAgICAgICAgICYmIChvZmZzZXQgPj0gMSkKLSAgICAgICAgICAgICAgICAmJiAobmNoID49IDMgKyBvZmZzZXQpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZyb20iKQotICAgICAgICAgICAgICAgICYmICghaGF2ZW5hbWUgfHwgdmFsaWRhdGVfZG90dGVkX25hbWUoQ0hJTEQodHJlZSwgbmRvdHMgKyAxKSkpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBvZmZzZXQgKyAxKSwgImltcG9ydCIpOwotCi0gICAgICAgIGlmIChyZXMgJiYgVFlQRShDSElMRCh0cmVlLCBvZmZzZXQgKyAyKSkgPT0gTFBBUikKLSAgICAgICAgICAgIHJlcyA9ICgobmNoID09IG9mZnNldCArIDUpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIG9mZnNldCArIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ltcG9ydF9hc19uYW1lcyhDSElMRCh0cmVlLCBvZmZzZXQgKyAzKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwgb2Zmc2V0ICsgNCkpKTsKLSAgICAgICAgZWxzZSBpZiAocmVzICYmIFRZUEUoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMikpICE9IFNUQVIpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZXMoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMikpOwotICAgICAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogaW1wb3J0X3N0bXQ6IGltcG9ydF9uYW1lIHwgaW1wb3J0X2Zyb20gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImltcG9ydF9zdG10Iik7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGludCBudHlwZSA9IFRZUEUoQ0hJTEQodHJlZSwgMCkpOwotCi0gICAgICAgIGlmIChudHlwZSA9PSBpbXBvcnRfbmFtZSB8fCBudHlwZSA9PSBpbXBvcnRfZnJvbSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX25vZGUoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGltcG9ydF9zdG10IGNoaWxkIHR5cGUiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChuY2ggPT0gMSkgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjaGlsZCBub2RlIG9mIGltcG9ydF9zdG10OiAlZC4iLAotICAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCAwKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGdsb2JhbF9zdG10OgotICoKLSAqICAnZ2xvYmFsJyBOQU1FICgnLCcgTkFNRSkqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2dsb2JhbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGdsb2JhbF9zdG10KQotICAgICAgICAgICAgICAgJiYgaXNfZXZlbihuY2gpICYmIChuY2ggPj0gMikpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgZ2xvYmFsIHN0YXRlbWVudCIpOwotCi0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJnbG9iYWwiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpKTsKLSAgICBmb3IgKGogPSAyOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBqKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIGogKyAxKSwgTkFNRSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0vKiAgbm9ubG9jYWxfc3RtdDoKLSAqCi0gKiAgJ25vbmxvY2FsJyBOQU1FICgnLCcgTkFNRSkqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX25vbmxvY2FsX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgbm9ubG9jYWxfc3RtdCkKLSAgICAgICAgICAgICAgICYmIGlzX2V2ZW4obmNoKSAmJiAobmNoID49IDIpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG5vbmxvY2FsIHN0YXRlbWVudCIpOwotCi0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJub25sb2NhbCIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkpOwotICAgIGZvciAoaiA9IDI7IHJlcyAmJiAoaiA8IG5jaCk7IGogKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGopKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgaiArIDEpLCBOQU1FKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgYXNzZXJ0X3N0bXQ6Ci0gKgotICogICdhc3NlcnQnIHRlc3QgWycsJyB0ZXN0XQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hc3NlcnRfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhc3NlcnRfc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDIpIHx8IChuY2ggPT0gNCkpCi0gICAgICAgICAgICAgICAmJiAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImFzc2VydCIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXNzZXJ0IHN0YXRlbWVudCIpOwotICAgIGlmIChyZXMgJiYgKG5jaCA+IDIpKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDMpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfd2hpbGUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgd2hpbGVfc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDQpIHx8IChuY2ggPT0gNykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAid2hpbGUiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA3KSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgNCksICJlbHNlIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDUpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNikpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9mb3Iobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZm9yX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSA2KSB8fCAobmNoID09IDkpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZvciIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHBybGlzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJpbiIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAzKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNSkpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA5KSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgNiksICJlbHNlIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDcpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgOCkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgdHJ5X3N0bXQ6Ci0gKiAgICAgICd0cnknICc6JyBzdWl0ZSAoZXhjZXB0X2NsYXVzZSAnOicgc3VpdGUpKyBbJ2Vsc2UnICc6JyBzdWl0ZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZmluYWxseScgJzonIHN1aXRlXQotICogICAgfCAndHJ5JyAnOicgc3VpdGUgJ2ZpbmFsbHknICc6JyBzdWl0ZQotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdHJ5KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcG9zID0gMzsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHRyeV9zdG10KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSA2KSAmJiAoKG5jaCAlIDMpID09IDApKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAidHJ5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgZWxzZSBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgY29uc3QgY2hhciogbmFtZSA9ICJleGNlcHQiOwotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBuY2ggLSAzKSkgIT0gZXhjZXB0X2NsYXVzZSkKLSAgICAgICAgICAgIG5hbWUgPSBTVFIoQ0hJTEQodHJlZSwgbmNoIC0gMykpOwotCi0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIHRyeS8lcyBub2RlLiIsIG5hbWUpOwotICAgIH0KLSAgICAvKiBIYW5kbGUgdHJ5L2ZpbmFsbHkgc3RhdGVtZW50ICovCi0gICAgaWYgKHJlcyAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBOQU1FKSAmJgotICAgICAgICAoc3RyY21wKFNUUihDSElMRCh0cmVlLCBwb3MpKSwgImZpbmFsbHkiKSA9PSAwKSkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNiwgInRyeS9maW5hbGx5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNSkpKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotICAgIH0KLSAgICAvKiB0cnkvZXhjZXB0IHN0YXRlbWVudDogc2tpcCBwYXN0IGV4Y2VwdF9jbGF1c2Ugc2VjdGlvbnMgKi8KLSAgICB3aGlsZSAocmVzICYmIHBvcyA8IG5jaCAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBleGNlcHRfY2xhdXNlKSkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfZXhjZXB0X2NsYXVzZShDSElMRCh0cmVlLCBwb3MpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgcG9zICsgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBwb3MgKyAyKSkpOwotICAgICAgICBwb3MgKz0gMzsKLSAgICB9Ci0gICAgLyogc2tpcCBlbHNlIGNsYXVzZSAqLwotICAgIGlmIChyZXMgJiYgcG9zIDwgbmNoICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IE5BTUUpICYmCi0gICAgICAgIChzdHJjbXAoU1RSKENISUxEKHRyZWUsIHBvcykpLCAiZWxzZSIpID09IDApKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBwb3MgKyAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIHBvcyArIDIpKSk7Ci0gICAgICAgIHBvcyArPSAzOwotICAgIH0KLSAgICBpZiAocmVzICYmIHBvcyA8IG5jaCkgewotICAgICAgICAvKiBsYXN0IGNsYXVzZSBtdXN0IGJlIGEgZmluYWxseSAqLwotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBwb3MpLCAiZmluYWxseSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCBwb3MgKyAzLCAidHJ5L2V4Y2VwdC9maW5hbGx5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIHBvcyArIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgcG9zICsgMikpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4Y2VwdF9jbGF1c2Uobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZXhjZXB0X2NsYXVzZSkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJleGNlcHQiKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPiAxKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgaWYgKHJlcyAmJiAobmNoID09IDQpKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgImFzIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDMpLCBOQU1FKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHRlc3QpICYmIGlzX29kZChuY2gpOwotCi0gICAgaWYgKHJlcyAmJiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gbGFtYmRlZikpCi0gICAgICAgIHJlcyA9ICgobmNoID09IDEpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9sYW1iZGVmKENISUxEKHRyZWUsIDApKSk7Ci0gICAgZWxzZSBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX29yX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICByZXMgPSAocmVzICYmIChuY2ggPT0gMSB8fCAobmNoID09IDUgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJpZiIpICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDIpKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAzKSwgImVsc2UiKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCA0KSkpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdF9ub2NvbmQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCB0ZXN0X25vY29uZCkgJiYgKG5jaCA9PSAxKTsKLQotICAgIGlmIChyZXMgJiYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IGxhbWJkZWZfbm9jb25kKSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2xhbWJkZWZfbm9jb25kKENISUxEKHRyZWUsIDApKSk7Ci0gICAgZWxzZSBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfb3JfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIG9yX3Rlc3QpICYmIGlzX29kZChuY2gpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpbnQgcG9zOwotICAgICAgICByZXMgPSB2YWxpZGF0ZV9hbmRfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIHBvcyksICJvciIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYW5kX3Rlc3QoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FuZF90ZXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYW5kX3Rlc3QpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbm90X3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgcG9zKSwgImFuZCIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9ub3RfdGVzdChDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX25vdF90ZXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgbm90X3Rlc3QpICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgIm5vdCIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbm90X3Rlc3QoQ0hJTEQodHJlZSwgMSkpKTsKLSAgICAgICAgZWxzZSBpZiAobmNoID09IDEpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wYXJpc29uKENISUxEKHRyZWUsIDApKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBhcmlzb24obm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBjb21wYXJpc29uKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbXBfb3AoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX29wKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9IDA7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLQotICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgY29tcF9vcCkpCi0gICAgICAgIHJldHVybiAoMCk7Ci0gICAgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqICBPbmx5IGNoaWxkIHdpbGwgYmUgYSB0ZXJtaW5hbCB3aXRoIGEgd2VsbC1kZWZpbmVkIHN5bWJvbGljIG5hbWUKLSAgICAgICAgICogIG9yIGEgTkFNRSB3aXRoIGEgc3RyaW5nIG9mIGVpdGhlciAnaXMnIG9yICdpbicKLSAgICAgICAgICovCi0gICAgICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKLSAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgY2FzZSBMRVNTOgotICAgICAgICAgIGNhc2UgR1JFQVRFUjoKLSAgICAgICAgICBjYXNlIEVRRVFVQUw6Ci0gICAgICAgICAgY2FzZSBFUVVBTDoKLSAgICAgICAgICBjYXNlIExFU1NFUVVBTDoKLSAgICAgICAgICBjYXNlIEdSRUFURVJFUVVBTDoKLSAgICAgICAgICBjYXNlIE5PVEVRVUFMOgotICAgICAgICAgICAgICByZXMgPSAxOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIE5BTUU6Ci0gICAgICAgICAgICAgIHJlcyA9ICgoc3RyY21wKFNUUih0cmVlKSwgImluIikgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgIHx8IChzdHJjbXAoU1RSKHRyZWUpLCAiaXMiKSA9PSAwKSk7Ci0gICAgICAgICAgICAgIGlmICghcmVzKSB7Ci0gICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIG9wZXJhdG9yICclcyciLCBTVFIodHJlZSkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgY29tcGFyaXNvbiBvcGVyYXRvciB0eXBlIik7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKChyZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiY29tcF9vcCIpKSAhPSAwKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgTkFNRSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKQotICAgICAgICAgICAgICAgJiYgKCgoc3RyY21wKFNUUihDSElMRCh0cmVlLCAwKSksICJpcyIpID09IDApCi0gICAgICAgICAgICAgICAgICAgICYmIChzdHJjbXAoU1RSKENISUxEKHRyZWUsIDEpKSwgIm5vdCIpID09IDApKQotICAgICAgICAgICAgICAgICAgIHx8ICgoc3RyY21wKFNUUihDSElMRCh0cmVlLCAwKSksICJub3QiKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3RyY21wKFNUUihDSElMRCh0cmVlLCAxKSksICJpbiIpID09IDApKSkpOwotICAgICAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGVycl9zdHJpbmcoInVua25vd24gY29tcGFyaXNvbiBvcGVyYXRvciIpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfc3Rhcl9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHN0YXJfZXhwcik7Ci0gICAgaWYgKCFyZXMpIHJldHVybiByZXM7Ci0gICAgaWYgKCF2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAic3Rhcl9leHByIikpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgU1RBUikgJiYgICAgICBcCi0gICAgICAgIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgMSkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZXhwcikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV94b3JfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yIChqID0gMjsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfeG9yX2V4cHIoQ0hJTEQodHJlZSwgaikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92YmFyKENISUxEKHRyZWUsIGogLSAxKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3hvcl9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHhvcl9leHByKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2FuZF9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKGogPSAyOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jaXJjdW1mbGV4KENISUxEKHRyZWUsIGogLSAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2FuZF9leHByKENISUxEKHRyZWUsIGopKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfYW5kX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhbmRfZXhwcikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zaGlmdF9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9hbXBlcnNhbmQoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3NoaWZ0X2V4cHIoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jaGFpbl90d29fb3BzKG5vZGUgKnRyZWUsIGludCAoKnRlcm12YWxpZCkobm9kZSAqKSwgaW50IG9wMSwgaW50IG9wMikKLSB7Ci0gICAgaW50IHBvcyA9IDE7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiAoKnRlcm12YWxpZCkoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAoIDsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSAhPSBvcDEpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBwb3MpLCBvcDIpOwotICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgcmVzID0gKCp0ZXJtdmFsaWQpKENISUxEKHRyZWUsIHBvcyArIDEpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3NoaWZ0X2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX250eXBlKHRyZWUsIHNoaWZ0X2V4cHIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9jaGFpbl90d29fb3BzKHRyZWUsIHZhbGlkYXRlX2FyaXRoX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExFRlRTSElGVCwgUklHSFRTSElGVCkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FyaXRoX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFyaXRoX2V4cHIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9jaGFpbl90d29fb3BzKHRyZWUsIHZhbGlkYXRlX3Rlcm0sIFBMVVMsIE1JTlVTKSk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVybShub2RlICp0cmVlKQotewotICAgIGludCBwb3MgPSAxOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB0ZXJtKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yICggOyByZXMgJiYgKHBvcyA8IG5jaCk7IHBvcyArPSAyKQotICAgICAgICByZXMgPSAoKChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IFNUQVIpCi0gICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBTTEFTSCkKLSAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IERPVUJMRVNMQVNIKQotICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gUEVSQ0VOVCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgZmFjdG9yOgotICoKLSAqICBmYWN0b3I6ICgnKyd8Jy0nfCd+JykgZmFjdG9yIHwgcG93ZXIKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZmFjdG9yKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGZhY3RvcikKLSAgICAgICAgICAgICAgICYmICgoKG5jaCA9PSAyKQotICAgICAgICAgICAgICAgICAgICAmJiAoKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IFBMVVMpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gTUlOVVMpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gVElMREUpKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgMSkpKQotICAgICAgICAgICAgICAgICAgIHx8ICgobmNoID09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Bvd2VyKENISUxEKHRyZWUsIDApKSkpKTsKLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHBvd2VyOgotICoKLSAqICBwb3dlcjogYXRvbV9leHByIHRyYWlsZXIqIFsnKionIGZhY3Rvcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcG93ZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgcG93ZXIpICYmIChuY2ggPj0gMSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2F0b21fZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgaWYgKG5jaCA+IDEpIHsKLSAgICAgICAgaWYgKG5jaCAhPSAzKSB7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBub2RlcyBmb3IgJ3Bvd2VyJyIpOwotICAgICAgICAgICAgcmV0dXJuICgwKTsKLSAgICAgICAgfQotICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCAyKSkpOwotICAgIH0KLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgYXRvbV9leHByOgotICoKLSAqICBhdG9tX2V4cHI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hdG9tX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgc3RhcnQgPSAwOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlczsKLSAgICBpbnQgcG9zOwotCi0gICAgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXRvbV9leHByKSAmJiAobmNoID49IDEpOwotICAgIGlmICghcmVzKSB7Ci0gICAgICAgIHJldHVybiAocmVzKTsKLSAgICB9Ci0KLSAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gQVdBSVQpIHsKLSAgICAgICAgc3RhcnQgPSAxOwotICAgICAgICBpZiAobmNoIDwgMikgewotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2Ygbm9kZXMgZm9yICdhdG9tX2V4cHInIik7Ci0gICAgICAgICAgICByZXR1cm4gKDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVzID0gdmFsaWRhdGVfYXRvbShDSElMRCh0cmVlLCBzdGFydCkpOwotICAgIGlmIChyZXMpIHsKLSAgICAgICAgcG9zID0gc3RhcnQgKyAxOwotICAgICAgICB3aGlsZSAocmVzICYmIChwb3MgPCBuY2gpICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IHRyYWlsZXIpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdHJhaWxlcihDSElMRCh0cmVlLCBwb3MrKykpOwotICAgIH0KLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hdG9tKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBhdG9tKTsKLQotICAgIGlmIChyZXMgJiYgbmNoIDwgMSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgbmNoKzEsICJhdG9tIik7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBzd2l0Y2ggKFRZUEUoQ0hJTEQodHJlZSwgMCkpKSB7Ci0gICAgICAgICAgY2FzZSBMUEFSOgotICAgICAgICAgICAgcmVzID0gKChuY2ggPD0gMykKLSAgICAgICAgICAgICAgICAgICAmJiAodmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG5jaCAtIDEpKSkpOwotCi0gICAgICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gMykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSk9PXlpZWxkX2V4cHIpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV95aWVsZF9leHByKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0bGlzdF9jb21wKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTFNRQjoKLSAgICAgICAgICAgIGlmIChuY2ggPT0gMikKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgUlNRQik7Ci0gICAgICAgICAgICBlbHNlIGlmIChuY2ggPT0gMykKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdGxpc3RfY29tcChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMiksIFJTUUIpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBsaXN0IGRpc3BsYXkgYXRvbSIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBMQlJBQ0U6Ci0gICAgICAgICAgICByZXMgPSAoKG5jaCA8PSAzKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIG5jaCAtIDEpLCBSQlJBQ0UpKTsKLQotICAgICAgICAgICAgaWYgKHJlcyAmJiAobmNoID09IDMpKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2RpY3RvcnNldG1ha2VyKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTkFNRToKLSAgICAgICAgICBjYXNlIE5VTUJFUjoKLSAgICAgICAgICBjYXNlIEVMTElQU0lTOgotICAgICAgICAgICAgcmVzID0gKG5jaCA9PSAxKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgU1RSSU5HOgotICAgICAgICAgICAgZm9yIChwb3MgPSAxOyByZXMgJiYgKHBvcyA8IG5jaCk7ICsrcG9zKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIHBvcyksIFNUUklORyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgdGVzdGxpc3RfY29tcDoKLSAqICAgICh0ZXN0fHN0YXJfZXhwcikgKCBjb21wX2ZvciB8ICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddICkKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdGxpc3RfY29tcChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rOwotCi0gICAgaWYgKG5jaCA9PSAwKSB7Ci0gICAgICAgIGVycl9zdHJpbmcoIm1pc3NpbmcgY2hpbGQgbm9kZXMgb2YgdGVzdGxpc3RfY29tcCIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAobmNoID09IDIgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgb2sgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLAotICAgICAgICAgICAgICAgIHRlc3RsaXN0X2NvbXAsCi0gICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCi0gICAgICAgICAgICAgICAgInRlc3RsaXN0X2NvbXAiKTsKLSAgICB9Ci0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgZGVjb3JhdG9yOgotICogICAgJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlY29yYXRvcihub2RlICp0cmVlKQotewotICAgIGludCBvazsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGRlY29yYXRvcikgJiYKLSAgICAgICAgICAobmNoID09IDMgfHwgbmNoID09IDUgfHwgbmNoID09IDYpICYmCi0gICAgICAgICAgdmFsaWRhdGVfYXQoQ0hJTEQodHJlZSwgMCkpICYmCi0gICAgICAgICAgdmFsaWRhdGVfZG90dGVkX25hbWUoQ0hJTEQodHJlZSwgMSkpICYmCi0gICAgICAgICAgdmFsaWRhdGVfbmV3bGluZShSQ0hJTEQodHJlZSwgLTEpKSk7Ci0KLSAgICBpZiAob2sgJiYgbmNoICE9IDMpIHsKLSAgICAgICAgb2sgPSAodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIDIpKSAmJgotICAgICAgICAgICAgICB2YWxpZGF0ZV9ycGFyZW4oUkNISUxEKHRyZWUsIC0yKSkpOwotCi0gICAgICAgIGlmIChvayAmJiBuY2ggPT0gNikKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfYXJnbGlzdChDSElMRCh0cmVlLCAzKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgZGVjb3JhdG9yczoKLSAqICAgIGRlY29yYXRvcisKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGVjb3JhdG9ycyhub2RlICp0cmVlKQotewotICAgIGludCBpLCBuY2gsIG9rOwotICAgIG5jaCA9IE5DSCh0cmVlKTsKLSAgICBvayA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGRlY29yYXRvcnMpICYmIG5jaCA+PSAxOwotCi0gICAgZm9yIChpID0gMDsgb2sgJiYgaSA8IG5jaDsgKytpKQotICAgICAgICBvayA9IHZhbGlkYXRlX2RlY29yYXRvcihDSElMRCh0cmVlLCBpKSk7Ci0KLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qICB3aXRoX2l0ZW06Ci0gKiAgIHRlc3QgWydhcycgZXhwcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfd2l0aF9pdGVtKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgd2l0aF9pdGVtKQotICAgICAgICAgICAgICAmJiAobmNoID09IDEgfHwgbmNoID09IDMpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLSAgICBpZiAob2sgJiYgbmNoID09IDMpCi0gICAgICAgIG9rID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJhcyIpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgMikpKTsKLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qICB3aXRoX3N0bXQ6Ci0gKiAgICAwICAgICAgMSAgICAgICAgICAuLi4gICAgICAgICAgICAgLTIgICAtMQotICogICAnd2l0aCcgd2l0aF9pdGVtICgnLCcgd2l0aF9pdGVtKSogJzonIHN1aXRlCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3dpdGhfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBpOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHdpdGhfc3RtdCkKLSAgICAgICAgJiYgKG5jaCAlIDIgPT0gMCkKLSAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgIndpdGgiKQotICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihSQ0hJTEQodHJlZSwgLTIpKQotICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShSQ0hJTEQodHJlZSwgLTEpKSk7Ci0gICAgZm9yIChpID0gMTsgb2sgJiYgaSA8IG5jaCAtIDI7IGkgKz0gMikKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV93aXRoX2l0ZW0oQ0hJTEQodHJlZSwgaSkpOwotICAgIHJldHVybiBvazsKLX0KLQotLyogZnVuY2RlZjogJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZSAqLwotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9mdW5jZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgZnVuY2RlZik7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDUpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZGVmIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9wYXJhbWV0ZXJzKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDMpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDQpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDcpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZGVmIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9wYXJhbWV0ZXJzKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3JhcnJvdyhDSElMRCh0cmVlLCAzKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDQpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDUpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDYpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGZ1bmNkZWYiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiBhc3luY19mdW5jZGVmOiBBU1lOQyBmdW5jZGVmICovCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FzeW5jX2Z1bmNkZWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBhc3luY19mdW5jZGVmKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMikgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDApLCBBU1lOQykKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGFzeW5jX2Z1bmNkZWYiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qIGFzeW5jX3N0bXQ6IEFTWU5DIChmdW5jZGVmIHwgd2l0aF9zdG10IHwgZm9yX3N0bXQpICovCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FzeW5jX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXN5bmNfc3RtdCkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgQVNZTkMpKTsKLQotICAgIGlmIChuY2ggIT0gMikgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgYXN5bmNfc3RtdCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBmdW5jZGVmKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSB3aXRoX3N0bXQpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3dpdGhfc3RtdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gZm9yX3N0bXQpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ZvcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLQotLyogZGVjb3JhdGVkCi0gKiAgIGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZikKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGVjb3JhdGVkKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZGVjb3JhdGVkKQotICAgICAgICAgICAgICAmJiAobmNoID09IDIpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RlY29yYXRvcnMoUkNISUxEKHRyZWUsIC0yKSkpOwotICAgIGlmIChUWVBFKFJDSElMRCh0cmVlLCAtMSkpID09IGZ1bmNkZWYpCi0gICAgICAgIG9rID0gb2sgJiYgdmFsaWRhdGVfZnVuY2RlZihSQ0hJTEQodHJlZSwgLTEpKTsKLSAgICBlbHNlCi0gICAgICAgIG9rID0gb2sgJiYgdmFsaWRhdGVfY2xhc3MoUkNISUxEKHRyZWUsIC0xKSk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9sYW1iZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGxhbWJkZWYpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAzKSB8fCAobmNoID09IDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImxhbWJkYSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA0KSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdmFyYXJnc2xpc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgIGVsc2UgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAzLCAibGFtYmRlZiIpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2xhbWJkZWZfbm9jb25kKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGxhbWJkZWZfbm9jb25kKQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMykgfHwgKG5jaCA9PSA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJsYW1iZGEiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gNCkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICBlbHNlIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgImxhbWJkZWZfbm9jb25kIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGFyZ2xpc3Q6Ci0gKgotICogIChhcmd1bWVudCAnLCcpKiAoYXJndW1lbnQgWycsJ10gfCAnKicgdGVzdCBbJywnICcqKicgdGVzdF0gfCAnKionIHRlc3QpCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FyZ2xpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBpID0gMDsKLSAgICBpbnQgb2sgPSAxOwotCi0gICAgaWYgKG5jaCA8PSAwKQotICAgICAgICAvKiByYWlzZSB0aGUgcmlnaHQgZXJyb3IgZnJvbSBoYXZpbmcgYW4gaW52YWxpZCBudW1iZXIgb2YgY2hpbGRyZW4gKi8KLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIG5jaCArIDEsICJhcmdsaXN0Iik7Ci0KLSAgICBpZiAobmNoID4gMSkgewotICAgICAgICBmb3IgKGk9MDsgaTxuY2g7IGkrKykgewotICAgICAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IGFyZ3VtZW50KSB7Ci0gICAgICAgICAgICAgICAgbm9kZSAqY2ggPSBDSElMRCh0cmVlLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoTkNIKGNoKSA9PSAyICYmIFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBjb21wX2ZvcikgewotICAgICAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJuZWVkICcoJywgJyknIGZvciBnZW5lcmF0b3IgZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3aGlsZSAob2sgJiYgbmNoLWkgPj0gMikgewotICAgICAgICAvKiBza2lwIGxlYWRpbmcgKGFyZ3VtZW50ICcsJykgKi8KLSAgICAgICAgb2sgPSAodmFsaWRhdGVfYXJndW1lbnQoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkrMSkpKTsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBvayA9IDE7Ci0gICAgaWYgKG5jaC1pID4gMCkgewotICAgICAgICBpbnQgc3ltID0gVFlQRShDSElMRCh0cmVlLCBpKSk7Ci0KLSAgICAgICAgaWYgKHN5bSA9PSBhcmd1bWVudCkgewotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9hcmd1bWVudChDSElMRCh0cmVlLCBpKSk7Ci0gICAgICAgICAgICBpZiAob2sgJiYgaSsxICE9IG5jaCkgewotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXJnbGlzdCBzcGVjaWZpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoZXh0cmEgc3R1ZmYgb24gZW5kKSIpOwotICAgICAgICAgICAgICAgIG9rID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBhcmdsaXN0IHNwZWNpZmljYXRpb24iKTsKLSAgICAgICAgICAgIG9rID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKG9rKTsKLX0KLQotCi0KLS8qICBhcmd1bWVudDogKCB0ZXN0IFtjb21wX2Zvcl0gfAotICogICAgICAgICAgICAgIHRlc3QgJz0nIHRlc3QgfAotICogICAgICAgICAgICAgICcqKicgdGVzdCB8Ci0gKiAgICAgICAgICAgICAgJyonIHRlc3QgKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hcmd1bWVudChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhcmd1bWVudCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSkpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gRE9VQkxFU1RBUikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gU1RBUikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDEpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAyKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDIpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLQotLyogIHRyYWlsZXI6Ci0gKgotICogICcoJyBbYXJnbGlzdF0gJyknIHwgJ1snIHN1YnNjcmlwdGxpc3QgJ10nIHwgJy4nIE5BTUUKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdHJhaWxlcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHRyYWlsZXIpICYmICgobmNoID09IDIpIHx8IChuY2ggPT0gMykpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBzd2l0Y2ggKFRZUEUoQ0hJTEQodHJlZSwgMCkpKSB7Ci0gICAgICAgICAgY2FzZSBMUEFSOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG5jaCAtIDEpKTsKLSAgICAgICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hcmdsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTFNRQjoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAzLCAidHJhaWxlciIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3Vic2NyaXB0bGlzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAyKSwgUlNRQikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBET1Q6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInRyYWlsZXIiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInRyYWlsZXIiKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBzdWJzY3JpcHRsaXN0OgotICoKLSAqICBzdWJzY3JpcHQgKCcsJyBzdWJzY3JpcHQpKiBbJywnXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zdWJzY3JpcHRsaXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLCBzdWJzY3JpcHRsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3Vic2NyaXB0LCAic3Vic2NyaXB0bGlzdCIpKTsKLX0KLQotCi0vKiAgc3Vic2NyaXB0OgotICoKLSAqICAnLicgJy4nICcuJyB8IHRlc3QgfCBbdGVzdF0gJzonIFt0ZXN0XSBbc2xpY2VvcF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3Vic2NyaXB0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG9mZnNldCA9IDA7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgc3Vic2NyaXB0KSAmJiAobmNoID49IDEpICYmIChuY2ggPD0gNCk7Ci0KLSAgICBpZiAoIXJlcykgewotICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHN1YnNjcmlwdCBub2RlIik7Ci0gICAgICAgIHJldHVybiAoMCk7Ci0gICAgfQotICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBET1QpCi0gICAgICAgIC8qIHRha2UgY2FyZSBvZiAoJy4nICcuJyAnLicpIHBvc3NpYmlsaXR5ICovCi0gICAgICAgIHJldHVybiAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgInN1YnNjcmlwdCIpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG90KENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3QoQ0hJTEQodHJlZSwgMikpKTsKLSAgICBpZiAobmNoID09IDEpIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHRlc3QpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICByZXR1cm4gKHJlcyk7Ci0gICAgfQotICAgIC8qICBNdXN0IGJlIFt0ZXN0XSAnOicgW3Rlc3RdIFtzbGljZW9wXSwKLSAgICAgKiAgYnV0IGF0IGxlYXN0IG9uZSBvZiB0aGUgb3B0aW9uYWwgY29tcG9uZW50cyB3aWxsCi0gICAgICogIGJlIHByZXNlbnQsIGJ1dCB3ZSBkb24ndCBrbm93IHdoaWNoIHlldC4KLSAgICAgKi8KLSAgICBpZiAoKFRZUEUoQ0hJTEQodHJlZSwgMCkpICE9IENPTE9OKSB8fCAobmNoID09IDQpKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBvZmZzZXQgPSAxOwotICAgIH0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBvZmZzZXQpKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGludCByZW0gPSBuY2ggLSArK29mZnNldDsKLSAgICAgICAgaWYgKHJlbSkgewotICAgICAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgb2Zmc2V0KSkgPT0gdGVzdCkgewotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgb2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgKytvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgLS1yZW07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmVzICYmIHJlbSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zbGljZW9wKENISUxEKHRyZWUsIG9mZnNldCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zbGljZW9wKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKChuY2ggPT0gMSkgfHwgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInNsaWNlb3AiKSkKLSAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUodHJlZSwgc2xpY2VvcCk7Ci0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInNsaWNlb3AiKTsKLSAgICB9Ci0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMCkpOwotICAgIGlmIChyZXMgJiYgKG5jaCA9PSAyKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIobm9kZSAqbikKLXsKLSAgICBpZiAoVFlQRShuKSA9PSB0ZXN0KQotICAgICAgICByZXR1cm4gdmFsaWRhdGVfdGVzdChuKTsKLSAgICByZXR1cm4gdmFsaWRhdGVfc3Rhcl9leHByKG4pOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leHByX29yX3N0YXJfZXhwcihub2RlICpuKQotewotICAgIGlmIChUWVBFKG4pID09IGV4cHIpCi0gICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKG4pOwotICAgIHJldHVybiB2YWxpZGF0ZV9zdGFyX2V4cHIobik7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcmxpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsIGV4cHJsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcl9vcl9zdGFyX2V4cHIsICJleHBybGlzdCIpKTsKLX0KLQotLyogSW5jcmVtZW50aW5nIHZhbGlkYXRlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbnplcm8gaWZmIHN1Y2Nlc3MgKGxpa2Ugb3RoZXIKLSAqIHZhbGlkYXRlIGZ1bmN0aW9ucywgYW5kIGFkdmFuY2UgKmkgYnkgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2hlZCBwYXR0ZXJuLiAqLwotCi0vKiB0ZXN0ICc6JyB0ZXN0ICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKG5vZGUgKnRyZWUsIGludCAqaSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgKCppKSsrKSkKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsICgqaSkrKykpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsICgqaSkrKykpKTsKLX0KLQotLyogdGVzdCAnOicgdGVzdCB8ICcqKicgZXhwciAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGljdF9lbGVtZW50X2luYyhub2RlICp0cmVlLCBpbnQgKmkpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gMDsKLSAgICBpZiAobmNoIC0gKmkgPj0gMikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAqaSsxKSkgPT0gQ09MT04pIHsKLSAgICAgICAgICAgIC8qIHRlc3QgJzonIHRlc3QgKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmModHJlZSwgaSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiAnKionIGV4cHIgKi8KLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsICgqaSkrKykpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgKCppKSsrKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0gKiAgZGljdG9yc2V0bWFrZXI6Ci0gKgotICogICAoICgodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikKLSAqICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikpKiBbJywnXSkpIHwKLSAqICAgICAoKHRlc3QgfCAnKicgdGVzdCkKLSAqICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCB8ICcqJyB0ZXN0KSkqIFsnLCddKSkgKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kaWN0b3JzZXRtYWtlcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlczsKLSAgICBpbnQgaSA9IDA7Ci0KLSAgICByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBkaWN0b3JzZXRtYWtlcik7Ci0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG5jaCAtIGkgPCAxKSB7Ci0gICAgICAgIC8qIFVuY29uZGl0aW9uYWxseSByYWlzZS4gKi8KLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJkaWN0b3JzZXRtYWtlciIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAobmNoIC0gaSA+PSAyCi0gICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCBpKzEpKSA9PSBDT0xPTikgfHwKLSAgICAgICAgICAgIChUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBET1VCTEVTVEFSKSkpIHsKLSAgICAgICAgLyogRGljdGlvbmFyeSBkaXNwbGF5IG9yIGRpY3Rpb25hcnkgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gNCAmJiBUWVBFKENISUxEKHRyZWUsIGkrMykpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyh0cmVlLCAmaSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGRpc3BsYXkuICovCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUoCi0gICAgICAgICAgICAgICAgICAgIHRyZWUsCi0gICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAotICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9kaWN0X2VsZW1lbnRfaW5jLAotICAgICAgICAgICAgICAgICAgICAmaSwKLSAgICAgICAgICAgICAgICAgICAgImRpY3RvcnNldG1ha2VyIik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvKiBTZXQgZGlzcGxheSBvciBzZXQgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gMiAmJiBUWVBFKENISUxEKHRyZWUsIGkgKyAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgIC8qIFNldCBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKSk7Ci0gICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIFNldCBkaXNwbGF5LiAqLwotICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdG9yc2V0bWFrZXIiKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChuY2ggLSBpID4gMCkgewotICAgICAgICBlcnJfc3RyaW5nKCJJbGxlZ2FsIHRyYWlsaW5nIG5vZGVzIGZvciBkaWN0b3JzZXRtYWtlci4iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXZhbF9pbnB1dChub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV2YWxfaW5wdXQpCi0gICAgICAgICAgICAgICAmJiAobmNoID49IDIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIG5jaCAtIDEpLCBFTkRNQVJLRVIpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCAobmNoIC0gMSkpOyArK3BvcykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgcG9zKSwgTkVXTElORSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbm9kZShub2RlICp0cmVlKQotewotICAgIGludCAgIG5jaCAgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8qIG51bS4gY2hpbGRyZW4gb24gY3VycmVudCBub2RlICAqLwotICAgIGludCAgIHJlcyAgPSAxOyAgICAgICAgICAgICAgICAgICAgIC8qIHJlc3VsdCB2YWx1ZSAgICAgICAgICAgICAgICAgICAqLwotICAgIG5vZGUqIG5leHQgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5vZGUgdG8gcHJvY2VzcyBhZnRlciB0aGlzIG9uZSAqLwotCi0gICAgd2hpbGUgKHJlcyAmJiAodHJlZSAhPSAwKSkgewotICAgICAgICBuY2ggID0gTkNIKHRyZWUpOwotICAgICAgICBuZXh0ID0gMDsKLSAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIERlZmluaXRpb24gbm9kZXMuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICBjYXNlIGFzeW5jX2Z1bmNkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3luY19mdW5jZGVmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhc3luY19zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXN5bmNfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZnVuY2RlZjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Z1bmNkZWYodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHdpdGhfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3dpdGhfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY2xhc3NkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jbGFzcyh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZGVjb3JhdGVkOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZGVjb3JhdGVkKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogICJUcml2aWFsIiBwYXJzZSB0cmVlIG5vZGVzLgotICAgICAgICAgICAgICogIChXaHkgZGlkIEkgY2FsbCB0aGVzZSB0cml2aWFsPykKLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2Ugc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHNtYWxsX3N0bXQ6Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIGV4cHJfc3RtdCB8IGRlbF9zdG10IHwgcGFzc19zdG10IHwgZmxvd19zdG10IHwKLSAgICAgICAgICAgICAqICBpbXBvcnRfc3RtdCB8IGdsb2JhbF9zdG10IHwgbm9ubG9jYWxfc3RtdCB8IGFzc2VydF9zdG10Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NtYWxsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZsb3dfc3RtdDoKLSAgICAgICAgICAgIHJlcyAgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImZsb3dfc3RtdCIpCi0gICAgICAgICAgICAgICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gYnJlYWtfc3RtdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBjb250aW51ZV9zdG10KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHlpZWxkX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gcmV0dXJuX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gcmFpc2Vfc3RtdCkpKTsKLSAgICAgICAgICAgIGlmIChyZXMpCi0gICAgICAgICAgICAgICAgbmV4dCA9IENISUxEKHRyZWUsIDApOwotICAgICAgICAgICAgZWxzZSBpZiAobmNoID09IDEpCi0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBmbG93X3N0bXQgdHlwZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB5aWVsZF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBDb21wb3VuZCBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBzaW1wbGVfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NpbXBsZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wb3VuZF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcG91bmRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBGdW5kYW1lbnRhbCBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBleHByX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHByX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGRlbF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZGVsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHBhc3Nfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAicGFzcyIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInBhc3MiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGJyZWFrX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImJyZWFrIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiYnJlYWsiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbnRpbnVlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImNvbnRpbnVlIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiY29udGludWUiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHJldHVybl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcmV0dXJuX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHJhaXNlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9yYWlzZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfbmFtZToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9uYW1lKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfZnJvbToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9mcm9tKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBnbG9iYWxfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2dsb2JhbF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBub25sb2NhbF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9ubG9jYWxfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXNzZXJ0X3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3NlcnRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaWZfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2lmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB3aGlsZV9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfd2hpbGUodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZvcl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZm9yKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB0cnlfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyeSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugc3VpdGU6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdWl0ZSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBFeHByZXNzaW9uIG5vZGVzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSB0ZXN0bGlzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB5aWVsZF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdGVzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFuZF90ZXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIG5vdF90ZXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm90X3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbXBhcmlzb246Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wYXJpc29uKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBleHBybGlzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHJsaXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wX29wOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9vcCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHhvcl9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeG9yX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFuZF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHNoaWZ0X2V4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaGlmdF9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhcml0aF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXJpdGhfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdGVybToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlcm0odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZhY3RvcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ZhY3Rvcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgcG93ZXI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9wb3dlcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXRvbToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2F0b20odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAvKiBIb3BlZnVsbHkgbmV2ZXIgcmVhY2hlZCEgKi8KLSAgICAgICAgICAgIGVycl9zdHJpbmcoInVucmVjb2duaXplZCBub2RlIHR5cGUiKTsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB0cmVlID0gbmV4dDsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHJfdHJlZShub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSB2YWxpZGF0ZV9ldmFsX2lucHV0KHRyZWUpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImNvdWxkIG5vdCB2YWxpZGF0ZSBleHByZXNzaW9uIHR1cGxlIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGZpbGVfaW5wdXQ6Ci0gKiAgICAgIChORVdMSU5FIHwgc3RtdCkqIEVORE1BUktFUgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9maWxlX2lucHV0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKSAtIDE7Ci0gICAgaW50IHJlcyA9ICgobmNoID49IDApCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBuY2gpLCBFTkRNQVJLRVIpKTsKLQotICAgIGZvciAoaiA9IDA7IHJlcyAmJiAoaiA8IG5jaCk7ICsraikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBqKSkgPT0gc3RtdCkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXQoQ0hJTEQodHJlZSwgaikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9uZXdsaW5lKENISUxEKHRyZWUsIGopKTsKLSAgICB9Ci0gICAgLyogIFRoaXMgc3RheXMgaW4gdG8gcHJldmVudCBhbnkgaW50ZXJuYWwgZmFpbHVyZXMgZnJvbSBnZXR0aW5nIHRvIHRoZQotICAgICAqICB1c2VyLiAgSG9wZWZ1bGx5LCB0aGlzIHdvbid0IGJlIG5lZWRlZC4gIElmIGEgdXNlciByZXBvcnRzIGdldHRpbmcKLSAgICAgKiAgdGhpcywgd2UgaGF2ZSBzb21lIGRlYnVnZ2luZyB0byBkby4KLSAgICAgKi8KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiVkFMSURBVElPTiBGQUlMVVJFOiByZXBvcnQgdGhpcyB0byB0aGUgbWFpbnRhaW5lciEiKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZW5jb2RpbmdfZGVjbChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICgobmNoID09IDEpCi0gICAgICAgICYmIHZhbGlkYXRlX2ZpbGVfaW5wdXQoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJFcnJvciBQYXJzaW5nIGVuY29kaW5nX2RlY2wiKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCoKIHBpY2tsZV9jb25zdHJ1Y3RvciA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwppbmRleCBjOTkzZmI2Li5iYTU0MjQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCkBAIC0zMiw2ICszMiwxMiBAQAogI2luY2x1ZGUgIndpbnJlcGFyc2UuaCIKICNlbmRpZgogCisvKiBPbiBhbmRyb2lkIEFQSSBsZXZlbCAyMSwgJ0FUX0VBQ0NFU1MnIGlzIG5vdCBkZWNsYXJlZCBhbHRob3VnaAorICogSEFWRV9GQUNDRVNTQVQgaXMgZGVmaW5lZC4gKi8KKyNpZmRlZiBfX0FORFJPSURfXworI3VuZGVmIEhBVkVfRkFDQ0VTU0FUCisjZW5kaWYKKwogI2luY2x1ZGUgPHN0ZGlvLmg+ICAvKiBuZWVkZWQgZm9yIGN0ZXJtaWQoKSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTEyNyw2ICsxMzMsMTMgQEAKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTElOVVhfUkFORE9NX0gKKyMgIGluY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorIyAgaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNlbmRpZgorCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogIyAgZGVmaW5lIFRFUk1TSVpFX1VTRV9DT05JTwogI2VsaWYgZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKQpAQCAtMTUxLDYgKzE2NCw4IEBACiAjZGVmaW5lIEhBVkVfR0VUTE9HSU4gICAxCiAjZGVmaW5lIEhBVkVfU1BBV05WICAgICAxCiAjZGVmaW5lIEhBVkVfRVhFQ1YgICAgICAxCisjZGVmaW5lIEhBVkVfV1NQQVdOViAgICAxCisjZGVmaW5lIEhBVkVfV0VYRUNWICAgICAxCiAjZGVmaW5lIEhBVkVfUElQRSAgICAgICAxCiAjZGVmaW5lIEhBVkVfU1lTVEVNICAgICAxCiAjZGVmaW5lIEhBVkVfQ1dBSVQgICAgICAxCkBAIC02MzQsMjIgKzY0OSwxNCBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSMgIGRlZmluZSBfUHlMb25nX0Zyb21EZXYgUHlMb25nX0Zyb21Mb25nTG9uZwotI2Vsc2UKLSMgIGRlZmluZSBfUHlMb25nX0Zyb21EZXYgUHlMb25nX0Zyb21Mb25nCi0jZW5kaWYKKyNkZWZpbmUgX1B5TG9uZ19Gcm9tRGV2IFB5TG9uZ19Gcm9tTG9uZ0xvbmcKIAogCiAjaWYgZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikKIHN0YXRpYyBpbnQKIF9QeV9EZXZfQ29udmVydGVyKFB5T2JqZWN0ICpvYmosIHZvaWQgKnApCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAqKChkZXZfdCAqKXApID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhvYmopOwotI2Vsc2UKLSAgICAqKChkZXZfdCAqKXApID0gUHlMb25nX0FzVW5zaWduZWRMb25nKG9iaik7Ci0jZW5kaWYKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIDE7CkBAIC02NzEsMjEgKzY3OCwyMCBAQAogI2VuZGlmCiAKIHN0YXRpYyBpbnQKLV9mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIGludCAqcCwgY29uc3QgY2hhciAqYWxsb3dlZCkKK19mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIGludCAqcCkKIHsKICAgICBpbnQgb3ZlcmZsb3c7CiAgICAgbG9uZyBsb25nX3ZhbHVlOwogCiAgICAgUHlPYmplY3QgKmluZGV4ID0gUHlOdW1iZXJfSW5kZXgobyk7CiAgICAgaWYgKGluZGV4ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgJXMsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZCwgUHlfVFlQRShvKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGFzc2VydChQeUxvbmdfQ2hlY2soaW5kZXgpKTsKICAgICBsb25nX3ZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KGluZGV4LCAmb3ZlcmZsb3cpOwogICAgIFB5X0RFQ1JFRihpbmRleCk7CisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKICAgICBpZiAob3ZlcmZsb3cgPiAwIHx8IGxvbmdfdmFsdWUgPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZkIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIik7CkBAIC03MDgsNyArNzE0LDE1IEBACiAgICAgICAgICooaW50ICopcCA9IERFRkFVTFRfRElSX0ZEOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgcmV0dXJuIF9mZF9jb252ZXJ0ZXIobywgKGludCAqKXAsICJpbnRlZ2VyIik7CisgICAgZWxzZSBpZiAoUHlJbmRleF9DaGVjayhvKSkgeworICAgICAgICByZXR1cm4gX2ZkX2NvbnZlcnRlcihvLCAoaW50ICopcCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIH0KIAogCkBAIC03MjMsNyArNzM3LDcgQEAKICAqCiAgKiAgICogT24gV2luZG93cywgaWYgd2UgZ2V0IGEgKFVuaWNvZGUpIHN0cmluZyB3ZQogICogICAgIGV4dHJhY3QgdGhlIHdjaGFyX3QgKiBhbmQgcmV0dXJuIGl0OyBpZiB3ZSBnZXQKLSAqICAgICBieXRlcyB3ZSBleHRyYWN0IHRoZSBjaGFyICogYW5kIHJldHVybiB0aGF0LgorICogICAgIGJ5dGVzIHdlIGRlY29kZSB0byB3Y2hhcl90ICogYW5kIHJldHVybiB0aGF0LgogICoKICAqICAgKiBPbiBhbGwgb3RoZXIgcGxhdGZvcm1zLCBzdHJpbmdzIGFyZSBlbmNvZGVkCiAgKiAgICAgdG8gYnl0ZXMgdXNpbmcgUHlVbmljb2RlX0ZTQ29udmVydGVyLCB0aGVuIHdlCkBAIC03NTUsNyArNzY5LDkgQEAKICAqICAgICBhbmQgd2FzIG5vdCBlbmNvZGVkLiAgKE9ubHkgdXNlZCBvbiBXaW5kb3dzLikKICAqICAgcGF0aC5uYXJyb3cKICAqICAgICBQb2ludHMgdG8gdGhlIHBhdGggaWYgaXQgd2FzIGV4cHJlc3NlZCBhcyBieXRlcywKLSAqICAgICBvciBpdCB3YXMgVW5pY29kZSBhbmQgd2FzIGVuY29kZWQgdG8gYnl0ZXMuCisgKiAgICAgb3IgaXQgd2FzIFVuaWNvZGUgYW5kIHdhcyBlbmNvZGVkIHRvIGJ5dGVzLiAoT24gV2luZG93cywKKyAqICAgICBpcyBhbiBub24temVybyBpbnRlZ2VyIGlmIHRoZSBwYXRoIHdhcyBleHByZXNzZWQgYXMgYnl0ZXMuCisgKiAgICAgVGhlIHR5cGUgaXMgZGVsaWJlcmF0ZWx5IGluY29tcGF0aWJsZSB0byBwcmV2ZW50IG1pc3VzZS4pCiAgKiAgIHBhdGguZmQKICAqICAgICBDb250YWlucyBhIGZpbGUgZGVzY3JpcHRvciBpZiBwYXRoLmFjY2VwdF9mZCB3YXMgdHJ1ZQogICogICAgIGFuZCB0aGUgY2FsbGVyIHByb3ZpZGVkIGEgc2lnbmVkIGludGVnZXIgaW5zdGVhZCBvZiBhbnkKQEAgLTc5OSwxNiArODE1LDI1IEBACiAgICAgY29uc3QgY2hhciAqYXJndW1lbnRfbmFtZTsKICAgICBpbnQgbnVsbGFibGU7CiAgICAgaW50IGFsbG93X2ZkOwotICAgIHdjaGFyX3QgKndpZGU7Ci0gICAgY2hhciAqbmFycm93OworICAgIGNvbnN0IHdjaGFyX3QgKndpZGU7CisjaWZkZWYgTVNfV0lORE9XUworICAgIEJPT0wgbmFycm93OworI2Vsc2UKKyAgICBjb25zdCBjaGFyICpuYXJyb3c7CisjZW5kaWYKICAgICBpbnQgZmQ7CiAgICAgUHlfc3NpemVfdCBsZW5ndGg7CiAgICAgUHlPYmplY3QgKm9iamVjdDsKICAgICBQeU9iamVjdCAqY2xlYW51cDsKIH0gcGF0aF90OwogCisjaWZkZWYgTVNfV0lORE9XUworI2RlZmluZSBQQVRIX1RfSU5JVElBTElaRShmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQpIFwKKyAgICB7ZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkLCBOVUxMLCBGQUxTRSwgLTEsIDAsIE5VTEwsIE5VTEx9CisjZWxzZQogI2RlZmluZSBQQVRIX1RfSU5JVElBTElaRShmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQpIFwKICAgICB7ZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkLCBOVUxMLCBOVUxMLCAtMSwgMCwgTlVMTCwgTlVMTH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZAogcGF0aF9jbGVhbnVwKHBhdGhfdCAqcGF0aCkgewpAQCAtODE4LDExICs4NDMsMTkgQEAKIH0KIAogc3RhdGljIGludAotcGF0aF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIHZvaWQgKnApIHsKK3BhdGhfY29udmVydGVyKFB5T2JqZWN0ICpvLCB2b2lkICpwKQorewogICAgIHBhdGhfdCAqcGF0aCA9IChwYXRoX3QgKilwOwotICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqYnl0ZXM7CisgICAgUHlPYmplY3QgKmJ5dGVzLCAqdG9fY2xlYW51cCA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsZW5ndGg7Ci0gICAgY2hhciAqbmFycm93OworICAgIGludCBpc19pbmRleCwgaXNfYnVmZmVyLCBpc19ieXRlcywgaXNfdW5pY29kZTsKKyAgICAvKiBEZWZhdWx0IHRvIGZhaWx1cmUsIGZvcmNpbmcgZXhwbGljaXQgc2lnbmFsaW5nIG9mIHN1Y2NjZXNzLiAqLworICAgIGludCByZXQgPSAwOworICAgIGNvbnN0IGNoYXIgKm5hcnJvdzsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlPYmplY3QgKndvOworICAgIGNvbnN0IHdjaGFyX3QgKndpZGU7CisjZW5kaWYKIAogI2RlZmluZSBGT1JNQVRfRVhDRVBUSU9OKGV4YywgZm10KSBcCiAgICAgUHlFcnJfRm9ybWF0KGV4YywgIiVzJXMiIGZtdCwgXApAQCAtODM2LDEyMiArODY5LDE5MSBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICAvKiBlbnN1cmUgaXQncyBhbHdheXMgc2FmZSB0byBjYWxsIHBhdGhfY2xlYW51cCgpICovCisgICAgLyogRW5zdXJlIGl0J3MgYWx3YXlzIHNhZmUgdG8gY2FsbCBwYXRoX2NsZWFudXAoKS4gKi8KICAgICBwYXRoLT5jbGVhbnVwID0gTlVMTDsKIAotICAgIGlmIChvID09IFB5X05vbmUpIHsKLSAgICAgICAgaWYgKCFwYXRoLT5udWxsYWJsZSkgewotICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzcGVjaWZ5IE5vbmUgZm9yICVzIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQorICAgIGlmICgobyA9PSBQeV9Ob25lKSAmJiBwYXRoLT5udWxsYWJsZSkgewogICAgICAgICBwYXRoLT53aWRlID0gTlVMTDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHBhdGgtPm5hcnJvdyA9IEZBTFNFOworI2Vsc2UKICAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKKyNlbmRpZgogICAgICAgICBwYXRoLT5sZW5ndGggPSAwOwogICAgICAgICBwYXRoLT5vYmplY3QgPSBvOwogICAgICAgICBwYXRoLT5mZCA9IC0xOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21PYmplY3Qobyk7Ci0gICAgaWYgKHVuaWNvZGUpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHdjaGFyX3QgKndpZGU7CisgICAgLyogT25seSBjYWxsIHRoaXMgaGVyZSBzbyB0aGF0IHdlIGRvbid0IHRyZWF0IHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgICBvcy5mc3BhdGgoKSBhcyBhbiBmZCBvciBidWZmZXIuICovCisgICAgaXNfaW5kZXggPSBwYXRoLT5hbGxvd19mZCAmJiBQeUluZGV4X0NoZWNrKG8pOworICAgIGlzX2J1ZmZlciA9IFB5T2JqZWN0X0NoZWNrQnVmZmVyKG8pOworICAgIGlzX2J5dGVzID0gUHlCeXRlc19DaGVjayhvKTsKKyAgICBpc191bmljb2RlID0gUHlVbmljb2RlX0NoZWNrKG8pOwogCi0gICAgICAgIHdpZGUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh1bmljb2RlLCAmbGVuZ3RoKTsKKyAgICBpZiAoIWlzX2luZGV4ICYmICFpc19idWZmZXIgJiYgIWlzX3VuaWNvZGUgJiYgIWlzX2J5dGVzKSB7CisgICAgICAgIC8qIElubGluZSBQeU9TX0ZTUGF0aCgpIGZvciBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMuICovCisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZnNwYXRoX18pOworICAgICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisKKyAgICAgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fZnNwYXRoX18pOworICAgICAgICBpZiAoTlVMTCA9PSBmdW5jKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgIH0KKworICAgICAgICBvID0gdG9fY2xlYW51cCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZnVuYywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gbykgeworICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvKSkgeworICAgICAgICAgICAgaXNfdW5pY29kZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVjayhvKSkgeworICAgICAgICAgICAgaXNfYnl0ZXMgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGlzX3VuaWNvZGUpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHdpZGUgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhvLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKCF3aWRlKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoID4gMzI3NjcpIHsKICAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgIiVzIHRvbyBsb25nIGZvciBXaW5kb3dzIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgICAgICBpZiAod2NzbGVuKHdpZGUpICE9IGxlbmd0aCkgewotICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIgaW4gJXMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogCiAgICAgICAgIHBhdGgtPndpZGUgPSB3aWRlOwotICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOwogICAgICAgICBwYXRoLT5sZW5ndGggPSBsZW5ndGg7CiAgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CiAgICAgICAgIHBhdGgtPmZkID0gLTE7Ci0gICAgICAgIHBhdGgtPmNsZWFudXAgPSB1bmljb2RlOwotICAgICAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7CisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXhpdDsKICNlbHNlCi0gICAgICAgIGludCBjb252ZXJ0ZWQgPSBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIodW5pY29kZSwgJmJ5dGVzKTsKLSAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICBpZiAoIWNvbnZlcnRlZCkKLSAgICAgICAgICAgIGJ5dGVzID0gTlVMTDsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIobywgJmJ5dGVzKSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CiAjZW5kaWYKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihvKSkKLSAgICAgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KG8pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBieXRlcyA9IE5VTEw7CisgICAgZWxzZSBpZiAoaXNfYnl0ZXMpIHsKKyAgICAgICAgYnl0ZXMgPSBvOworICAgICAgICBQeV9JTkNSRUYoYnl0ZXMpOworICAgIH0KKyAgICBlbHNlIGlmIChpc19idWZmZXIpIHsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgIiVzJXMlcyBzaG91bGQgYmUgJXMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/IHBhdGgtPmZ1bmN0aW9uX25hbWUgOiAiIiwKKyAgICAgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyAiOiAiICAgICAgICAgICAgICAgIDogIiIsCisgICAgICAgICAgICBwYXRoLT5hcmd1bWVudF9uYW1lID8gcGF0aC0+YXJndW1lbnRfbmFtZSA6ICJwYXRoIiwKKyAgICAgICAgICAgIHBhdGgtPmFsbG93X2ZkICYmIHBhdGgtPm51bGxhYmxlID8gInN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIG9yIE5vbmUiIDoKKyAgICAgICAgICAgIHBhdGgtPmFsbG93X2ZkID8gInN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIiIDoKKyAgICAgICAgICAgIHBhdGgtPm51bGxhYmxlID8gInN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIE5vbmUiIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZywgYnl0ZXMgb3Igb3MuUGF0aExpa2UiLAorICAgICAgICAgICAgUHlfVFlQRShvKS0+dHBfbmFtZSkpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChvKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIGlmIChwYXRoLT5hbGxvd19mZCkgewotICAgICAgICAgICAgICAgIGludCBmZDsKLSAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gX2ZkX2NvbnZlcnRlcihvLCAmZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyIik7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICBwYXRoLT53aWRlID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgcGF0aC0+bGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgcGF0aC0+b2JqZWN0ID0gbzsKLSAgICAgICAgICAgICAgICAgICAgcGF0aC0+ZmQgPSBmZDsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVHlwZUVycm9yLCAiaWxsZWdhbCB0eXBlIGZvciAlcyBwYXJhbWV0ZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCisgICAgZWxzZSBpZiAoaXNfaW5kZXgpIHsKKyAgICAgICAgaWYgKCFfZmRfY29udmVydGVyKG8sICZwYXRoLT5mZCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBwYXRoLT53aWRlID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgICAgICBwYXRoLT5uYXJyb3cgPSBGQUxTRTsKKyNlbHNlCisgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CiAjZW5kaWYKKyAgICAgICAgcGF0aC0+bGVuZ3RoID0gMDsKKyAgICAgICAgcGF0aC0+b2JqZWN0ID0gbzsKKyAgICAgICAgcmV0ID0gMTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyBlcnJvcl9leGl0OgorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJXMlcyVzIHNob3VsZCBiZSAlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gcGF0aC0+ZnVuY3Rpb25fbmFtZSA6ICIiLAorICAgICAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/ICI6ICIgICAgICAgICAgICAgICAgOiAiIiwKKyAgICAgICAgICAgIHBhdGgtPmFyZ3VtZW50X25hbWUgPyBwYXRoLT5hcmd1bWVudF9uYW1lIDogInBhdGgiLAorICAgICAgICAgICAgcGF0aC0+YWxsb3dfZmQgJiYgcGF0aC0+bnVsbGFibGUgPyAic3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2UsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVnZXIgb3IgTm9uZSIgOgorICAgICAgICAgICAgcGF0aC0+YWxsb3dfZmQgPyAic3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciIgOgorICAgICAgICAgICAgcGF0aC0+bnVsbGFibGUgPyAic3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgTm9uZSIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBvcy5QYXRoTGlrZSIsCisgICAgICAgICAgICBQeV9UWVBFKG8pLT50cF9uYW1lKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KIAogICAgIGxlbmd0aCA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAobGVuZ3RoID4gTUFYX1BBVEgtMSkgewotICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICIlcyB0b28gbG9uZyBmb3IgV2luZG93cyIpOwotICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0jZW5kaWYKLQogICAgIG5hcnJvdyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKICAgICBpZiAoKHNpemVfdClsZW5ndGggIT0gc3RybGVuKG5hcnJvdykpIHsKICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIgaW4gJXMiKTsKICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgd28gPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSgKKyAgICAgICAgbmFycm93LAorICAgICAgICBsZW5ndGgKKyAgICApOworICAgIGlmICghd28pIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHdpZGUgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh3bywgJmxlbmd0aCk7CisgICAgUHlfREVDUkVGKHdvKTsKKworICAgIGlmICghd2lkZSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlmIChsZW5ndGggPiAzMjc2NykgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICIlcyB0b28gbG9uZyBmb3IgV2luZG93cyIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGlmICh3Y3NsZW4od2lkZSkgIT0gbGVuZ3RoKSB7CisgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIGluICVzIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcGF0aC0+d2lkZSA9IHdpZGU7CisgICAgcGF0aC0+bmFycm93ID0gVFJVRTsKKyNlbHNlCiAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CiAgICAgcGF0aC0+bmFycm93ID0gbmFycm93OworI2VuZGlmCiAgICAgcGF0aC0+bGVuZ3RoID0gbGVuZ3RoOwogICAgIHBhdGgtPm9iamVjdCA9IG87CiAgICAgcGF0aC0+ZmQgPSAtMTsKLSAgICBwYXRoLT5jbGVhbnVwID0gYnl0ZXM7Ci0gICAgcmV0dXJuIFB5X0NMRUFOVVBfU1VQUE9SVEVEOworICAgIGlmIChieXRlcyA9PSBvKSB7CisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgIHJldCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwYXRoLT5jbGVhbnVwID0gYnl0ZXM7CisgICAgICAgIHJldCA9IFB5X0NMRUFOVVBfU1VQUE9SVEVEOworICAgIH0KKyBleGl0OgorICAgIFB5X1hERUNSRUYodG9fY2xlYW51cCk7CisgICAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQKLWFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGNoYXIgKmFyZ3VtZW50X25hbWUpIHsKK2FyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGNvbnN0IGNoYXIgKmFyZ3VtZW50X25hbWUpCit7CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICIlcyVzJXMgdW5hdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIsCiAgICAgICAgIChmdW5jdGlvbl9uYW1lICE9IE5VTEwpID8gZnVuY3Rpb25fbmFtZSA6ICIiLApAQCAtOTc0LDcgKzEwNzYsOCBAQAogfQogCiBzdGF0aWMgaW50Ci1mZF9zcGVjaWZpZWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkKSB7CitmZF9zcGVjaWZpZWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkKQorewogICAgIGlmIChmZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTk4Myw3ICsxMDg2LDggQEAKIH0KIAogc3RhdGljIGludAotZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZm9sbG93X3N5bWxpbmtzKSB7Citmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmb2xsb3dfc3ltbGlua3MpCit7CiAgICAgaWYgKGZvbGxvd19zeW1saW5rcykKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTk5Miw4ICsxMDk2LDEzIEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkgewotICAgIGlmICghcGF0aC0+bmFycm93ICYmICFwYXRoLT53aWRlICYmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpKSB7CitwYXRoX2FuZF9kaXJfZmRfaW52YWxpZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpCit7CisgICAgaWYgKCFwYXRoLT53aWRlICYmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgJiYgIXBhdGgtPm5hcnJvdworI2VuZGlmCisgICAgKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGRpcl9mZCB3aXRob3V0IG1hdGNoaW5nIHBhdGgiLAogICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CkBAIC0xMDAzLDcgKzExMTIsOCBAQAogfQogCiBzdGF0aWMgaW50Ci1kaXJfZmRfYW5kX2ZkX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwgaW50IGZkKSB7CitkaXJfZmRfYW5kX2ZkX2ludmFsaWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwgaW50IGZkKQorewogICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoZmQgIT0gLTEpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGJvdGggZGlyX2ZkIGFuZCBmZCIsCkBAIC0xMDE0LDggKzExMjQsOSBAQAogfQogCiBzdGF0aWMgaW50Ci1mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpIHsKK2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKK3sKICAgICBpZiAoKGZkID4gMCkgJiYgKCFmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW5ub3QgdXNlIGZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIiLApAQCAtMTAyNiw4ICsxMTM3LDkgQEAKIH0KIAogc3RhdGljIGludAotZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CitkaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCit7CiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmICghZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICIlczogY2Fubm90IHVzZSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlciIsCkBAIC0xMDM4LDcgKzExNTAsNyBAQAogfQogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHR5cGVkZWYgUFlfTE9OR19MT05HIFB5X29mZl90OworICAgIHR5cGVkZWYgbG9uZyBsb25nIFB5X29mZl90OwogI2Vsc2UKICAgICB0eXBlZGVmIG9mZl90IFB5X29mZl90OwogI2VuZGlmCkBAIC0xMDY2LDQxICsxMTc4LDEzIEBACiAjZW5kaWYKIH0KIAotCi0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAotLyogTGVnYWN5IGltcGxlbWVudGF0aW9uIG9mIF9QeVZlcmlmeV9mZF9kdXAyIHdoaWxlIHRyYW5zaXRpb25pbmcgdG8KLSAqIE1TVkMgMTQuMC4gVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLiAoaXNzdWUyMzUyNCkKLSAqLwotI2RlZmluZSBJT0lORk9fTDJFIDUKLSNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAotI2RlZmluZSBJT0lORk9fQVJSQVlfRUxUUyAgICgxIDw8IElPSU5GT19MMkUpCi0jZGVmaW5lIF9OSEFORExFXyAgICAgICAgICAgKElPSU5GT19BUlJBWVMgKiBJT0lORk9fQVJSQVlfRUxUUykKLSNkZWZpbmUgX05PX0NPTlNPTEVfRklMRU5PIChpbnRwdHJfdCktMgotCi0vKiB0aGUgc3BlY2lhbCBjYXNlIG9mIGNoZWNraW5nIGR1cDIuICBUaGUgdGFyZ2V0IGZkIG11c3QgYmUgaW4gYSBzZW5zaWJsZSByYW5nZSAqLwotc3RhdGljIGludAotX1B5VmVyaWZ5X2ZkX2R1cDIoaW50IGZkMSwgaW50IGZkMikKLXsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZDEpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoZmQyID09IF9OT19DT05TT0xFX0ZJTEVOTykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCh1bnNpZ25lZClmZDIgPCBfTkhBTkRMRV8pCi0gICAgICAgIHJldHVybiAxOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7Ci19Ci0jZWxzZQotI2RlZmluZSBfUHlWZXJpZnlfZmRfZHVwMihmZDEsIGZkMikgKF9QeVZlcmlmeV9mZChmZDEpICYmIChmZDIpID49IDApCi0jZW5kaWYKLQogI2lmZGVmIE1TX1dJTkRPV1MKIAogc3RhdGljIGludAogd2luMzJfZ2V0X3JlcGFyc2VfdGFnKEhBTkRMRSByZXBhcnNlX3BvaW50X2hhbmRsZSwgVUxPTkcgKnJlcGFyc2VfdGFnKQogewotICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07Ci0gICAgUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKFJFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOworICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltfUHlfTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOworICAgIF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOwogICAgIERXT1JEIG5fYnl0ZXNfcmV0dXJuZWQ7CiAKICAgICBpZiAoMCA9PSBEZXZpY2VJb0NvbnRyb2woCkBAIC0xMTU5LDcgKzEyNDMsNyBAQAogICAgIGZvciAoZSA9IF93ZW52aXJvbjsgKmUgIT0gTlVMTDsgZSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICprOwogICAgICAgICBQeU9iamVjdCAqdjsKLSAgICAgICAgd2NoYXJfdCAqcCA9IHdjc2NocigqZSwgTCc9Jyk7CisgICAgICAgIGNvbnN0IHdjaGFyX3QgKnAgPSB3Y3NjaHIoKmUsIEwnPScpOwogICAgICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGsgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKCplLCAoUHlfc3NpemVfdCkocC0qZSkpOwpAQCAtMTE4Nyw3ICsxMjcxLDcgQEAKICAgICBmb3IgKGUgPSBlbnZpcm9uOyAqZSAhPSBOVUxMOyBlKyspIHsKICAgICAgICAgUHlPYmplY3QgKms7CiAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICBjaGFyICpwID0gc3RyY2hyKCplLCAnPScpOworICAgICAgICBjb25zdCBjaGFyICpwID0gc3RyY2hyKCplLCAnPScpOwogICAgICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGsgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCplLCAoaW50KShwLSplKSk7CkBAIC0xMjIyLDcgKzEzMDYsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX2Vycm9yKGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmaWxlbmFtZSkKK3dpbjMyX2Vycm9yKGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmaWxlbmFtZSkKIHsKICAgICAvKiBYWFggV2Ugc2hvdWxkIHBhc3MgdGhlIGZ1bmN0aW9uIG5hbWUgYWxvbmcgaW4gdGhlIGZ1dHVyZS4KICAgICAgICAod2lucmVnLmMgYWxzbyB3YW50cyB0byBwYXNzIHRoZSBmdW5jdGlvbiBuYW1lLikKQEAgLTEyMzcsNyArMTMyMSw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9lcnJvcl9vYmplY3QoY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBmaWxlbmFtZSkKK3dpbjMyX2Vycm9yX29iamVjdChjb25zdCBjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGZpbGVuYW1lKQogewogICAgIC8qIFhYWCAtIHNlZSB3aW4zMl9lcnJvciBmb3IgY29tbWVudHMgb24gJ2Z1bmN0aW9uJyAqLwogICAgIGVycm5vID0gR2V0TGFzdEVycm9yKCk7CkBAIC0xMjk3LDkgKzEzODEsNiBAQAogICAgIGludCByZXM7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTEzMjAsMzEgKzE0MDEsNiBAQAogICAgaXQgYWxzbyBuZWVkcyB0byBzZXQgIm1hZ2ljIiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW5kaWNhdGluZwogICAgdGhlIHBlci1kcml2ZSBjdXJyZW50IGRpcmVjdG9yeSwgd2hpY2ggYXJlIG9mIHRoZSBmb3JtID08ZHJpdmU+OiAqLwogc3RhdGljIEJPT0wgX19zdGRjYWxsCi13aW4zMl9jaGRpcihMUENTVFIgcGF0aCkKLXsKLSAgICBjaGFyIG5ld19wYXRoW01BWF9QQVRIXTsKLSAgICBpbnQgcmVzdWx0OwotICAgIGNoYXIgZW52WzRdID0gIj14OiI7Ci0KLSAgICBpZighU2V0Q3VycmVudERpcmVjdG9yeUEocGF0aCkpCi0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICByZXN1bHQgPSBHZXRDdXJyZW50RGlyZWN0b3J5QShQeV9BUlJBWV9MRU5HVEgobmV3X3BhdGgpLCBuZXdfcGF0aCk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAvKiBJbiB0aGUgQU5TSSBBUEksIHRoZXJlIHNob3VsZCBub3QgYmUgYW55IHBhdGhzIGxvbmdlcgotICAgICAgIHRoYW4gTUFYX1BBVEgtMSAobm90IGluY2x1ZGluZyB0aGUgZmluYWwgbnVsbCBjaGFyYWN0ZXIpLiAqLwotICAgIGFzc2VydChyZXN1bHQgPCBQeV9BUlJBWV9MRU5HVEgobmV3X3BhdGgpKTsKLSAgICBpZiAoc3RybmNtcChuZXdfcGF0aCwgIlxcXFwiLCAyKSA9PSAwIHx8Ci0gICAgICAgIHN0cm5jbXAobmV3X3BhdGgsICIvLyIsIDIpID09IDApCi0gICAgICAgIC8qIFVOQyBwYXRoLCBub3RoaW5nIHRvIGRvLiAqLwotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICBlbnZbMV0gPSBuZXdfcGF0aFswXTsKLSAgICByZXR1cm4gU2V0RW52aXJvbm1lbnRWYXJpYWJsZUEoZW52LCBuZXdfcGF0aCk7Ci19Ci0KLS8qIFRoZSBVbmljb2RlIHZlcnNpb24gZGlmZmVycyBmcm9tIHRoZSBBTlNJIHZlcnNpb24KLSAgIHNpbmNlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBtaWdodCBleGNlZWQgTUFYX1BBVEggY2hhcmFjdGVycyAqLwotc3RhdGljIEJPT0wgX19zdGRjYWxsCiB3aW4zMl93Y2hkaXIoTFBDV1NUUiBwYXRoKQogewogICAgIHdjaGFyX3QgcGF0aF9idWZbTUFYX1BBVEhdLCAqbmV3X3BhdGggPSBwYXRoX2J1ZjsKQEAgLTEzOTAsMzMgKzE0NDYsMTAgQEAKICNkZWZpbmUgSEFWRV9TVEFUX05TRUMgMQogI2RlZmluZSBIQVZFX1NUUlVDVF9TVEFUX1NUX0ZJTEVfQVRUUklCVVRFUyAxCiAKLXN0YXRpYyBCT09MCi1hdHRyaWJ1dGVzX2Zyb21fZGlyKExQQ1NUUiBwc3pGaWxlLCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywgVUxPTkcgKnJlcGFyc2VfdGFnKQotewotICAgIEhBTkRMRSBoRmluZEZpbGU7Ci0gICAgV0lOMzJfRklORF9EQVRBQSBGaWxlRGF0YTsKLSAgICBoRmluZEZpbGUgPSBGaW5kRmlyc3RGaWxlQShwc3pGaWxlLCAmRmlsZURhdGEpOwotICAgIGlmIChoRmluZEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICBGaW5kQ2xvc2UoaEZpbmRGaWxlKTsKLSAgICBtZW1zZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7Ci0gICAgKnJlcGFyc2VfdGFnID0gMDsKLSAgICBpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzID0gRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlczsKLSAgICBpbmZvLT5mdENyZWF0aW9uVGltZSAgID0gRmlsZURhdGEuZnRDcmVhdGlvblRpbWU7Ci0gICAgaW5mby0+ZnRMYXN0QWNjZXNzVGltZSA9IEZpbGVEYXRhLmZ0TGFzdEFjY2Vzc1RpbWU7Ci0gICAgaW5mby0+ZnRMYXN0V3JpdGVUaW1lICA9IEZpbGVEYXRhLmZ0TGFzdFdyaXRlVGltZTsKLSAgICBpbmZvLT5uRmlsZVNpemVIaWdoICAgID0gRmlsZURhdGEubkZpbGVTaXplSGlnaDsKLSAgICBpbmZvLT5uRmlsZVNpemVMb3cgICAgID0gRmlsZURhdGEubkZpbGVTaXplTG93OwotLyogIGluZm8tPm5OdW1iZXJPZkxpbmtzICAgPSAxOyAqLwotICAgIGlmIChGaWxlRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkKLSAgICAgICAgKnJlcGFyc2VfdGFnID0gRmlsZURhdGEuZHdSZXNlcnZlZDA7Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KIHN0YXRpYyB2b2lkCi1maW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coV0lOMzJfRklORF9EQVRBVyAqcEZpbGVEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgIFVMT05HICpyZXBhcnNlX3RhZykKK2ZpbmRfZGF0YV90b19maWxlX2luZm8oV0lOMzJfRklORF9EQVRBVyAqcEZpbGVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgVUxPTkcgKnJlcGFyc2VfdGFnKQogewogICAgIG1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTsKICAgICBpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzID0gcEZpbGVEYXRhLT5kd0ZpbGVBdHRyaWJ1dGVzOwpAQCAtMTQzMyw3ICsxNDY2LDcgQEAKIH0KIAogc3RhdGljIEJPT0wKLWF0dHJpYnV0ZXNfZnJvbV9kaXJfdyhMUENXU1RSIHBzekZpbGUsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyAqcmVwYXJzZV90YWcpCithdHRyaWJ1dGVzX2Zyb21fZGlyKExQQ1dTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKIHsKICAgICBIQU5ETEUgaEZpbmRGaWxlOwogICAgIFdJTjMyX0ZJTkRfREFUQVcgRmlsZURhdGE7CkBAIC0xNDQxLDcgKzE0NzQsNyBAQAogICAgIGlmIChoRmluZEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICBGaW5kQ2xvc2UoaEZpbmRGaWxlKTsKLSAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coJkZpbGVEYXRhLCBpbmZvLCByZXBhcnNlX3RhZyk7CisgICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mbygmRmlsZURhdGEsIGluZm8sIHJlcGFyc2VfdGFnKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMTQ1OCw3ICsxNDkxLDcgQEAKICAgICBpZighYnVmX3NpemUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIGJ1ZiA9IFB5TWVtX05ldyh3Y2hhcl90LCBidWZfc2l6ZSsxKTsKKyAgICBidWYgPSAod2NoYXJfdCAqKVB5TWVtX1Jhd01hbGxvYygoYnVmX3NpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYgKCFidWYpIHsKICAgICAgICAgU2V0TGFzdEVycm9yKEVSUk9SX09VVE9GTUVNT1JZKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTQ2OCwxMiArMTUwMSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICBidWYsIGJ1Zl9zaXplLCBWT0xVTUVfTkFNRV9ET1MpOwogCiAgICAgaWYoIXJlc3VsdF9sZW5ndGgpIHsKLSAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKICAgICBpZighQ2xvc2VIYW5kbGUoaGRsKSkgewotICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUoYnVmKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIApAQCAtMTQ4NCwxMCArMTUxNyw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X2ltcGxfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSk7Ci1zdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKK3dpbjMyX3hzdGF0X2ltcGwoY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAogICAgICAgICAgICAgICAgICBCT09MIHRyYXZlcnNlKQogewogICAgIGludCBjb2RlOwpAQCAtMTQ5NSw5ICsxNTI1LDkgQEAKICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBpbmZvOwogICAgIFVMT05HIHJlcGFyc2VfdGFnID0gMDsKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKLSAgICBjb25zdCBjaGFyICpkb3Q7CisgICAgY29uc3Qgd2NoYXJfdCAqZG90OwogCi0gICAgaEZpbGUgPSBDcmVhdGVGaWxlQSgKKyAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKAogICAgICAgICBwYXRoLAogICAgICAgICBGSUxFX1JFQURfQVRUUklCVVRFUywgLyogZGVzaXJlZCBhY2Nlc3MgKi8KICAgICAgICAgMCwgLyogc2hhcmUgbW9kZSAqLwpAQCAtMTU0OCw5OCArMTU3OCw2IEBACiAgICAgICAgICAgICBpZiAodHJhdmVyc2UpIHsKICAgICAgICAgICAgICAgICAvKiBJbiBvcmRlciB0byBjYWxsIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSB3ZSBuZWVkIHRvIG9wZW4KICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSB3aXRob3V0IHRoZSByZXBhcnNlIGhhbmRsaW5nIGZsYWcgc2V0LiAqLwotICAgICAgICAgICAgICAgIGhGaWxlMiA9IENyZWF0ZUZpbGVBKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgRklMRV9SRUFEX0FUVFJJQlVURVMsIEZJTEVfU0hBUkVfUkVBRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUx8RklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgICAgICBpZiAoaEZpbGUyID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWdldF90YXJnZXRfcGF0aChoRmlsZTIsICZ0YXJnZXRfcGF0aCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLQotICAgICAgICAgICAgICAgIGNvZGUgPSB3aW4zMl94c3RhdF9pbXBsX3codGFyZ2V0X3BhdGgsIHJlc3VsdCwgRkFMU0UpOwotICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUodGFyZ2V0X3BhdGgpOwotICAgICAgICAgICAgICAgIHJldHVybiBjb2RlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKLSAgICB9Ci0gICAgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmluZm8sIHJlcGFyc2VfdGFnLCByZXN1bHQpOwotCi0gICAgLyogU2V0IFNfSUVYRUMgaWYgaXQgaXMgYW4gLmV4ZSwgLmJhdCwgLi4uICovCi0gICAgZG90ID0gc3RycmNocihwYXRoLCAnLicpOwotICAgIGlmIChkb3QpIHsKLSAgICAgICAgaWYgKHN0cmljbXAoZG90LCAiLmJhdCIpID09IDAgfHwgc3RyaWNtcChkb3QsICIuY21kIikgPT0gMCB8fAotICAgICAgICAgICAgc3RyaWNtcChkb3QsICIuZXhlIikgPT0gMCB8fCBzdHJpY21wKGRvdCwgIi5jb20iKSA9PSAwKQotICAgICAgICAgICAgcmVzdWx0LT5zdF9tb2RlIHw9IDAxMTE7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAotICAgICAgICAgICAgICAgICAgIEJPT0wgdHJhdmVyc2UpCi17Ci0gICAgaW50IGNvZGU7Ci0gICAgSEFORExFIGhGaWxlLCBoRmlsZTI7Ci0gICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gaW5mbzsKLSAgICBVTE9ORyByZXBhcnNlX3RhZyA9IDA7Ci0gICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7Ci0gICAgY29uc3Qgd2NoYXJfdCAqZG90OwotCi0gICAgaEZpbGUgPSBDcmVhdGVGaWxlVygKLSAgICAgICAgcGF0aCwKLSAgICAgICAgRklMRV9SRUFEX0FUVFJJQlVURVMsIC8qIGRlc2lyZWQgYWNjZXNzICovCi0gICAgICAgIDAsIC8qIHNoYXJlIG1vZGUgKi8KLSAgICAgICAgTlVMTCwgLyogc2VjdXJpdHkgYXR0cmlidXRlcyAqLwotICAgICAgICBPUEVOX0VYSVNUSU5HLAotICAgICAgICAvKiBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUyBpcyByZXF1aXJlZCB0byBvcGVuIGEgZGlyZWN0b3J5ICovCi0gICAgICAgIC8qIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlQgZG9lcyBub3QgZm9sbG93IHRoZSBzeW1saW5rLgotICAgICAgICAgICBCZWNhdXNlIG9mIHRoaXMsIGNhbGxzIGxpa2UgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIHdpbGwgcmV0dXJuCi0gICAgICAgICAgIHRoZSBzeW1saW5rIHBhdGggYWdhaW4gYW5kIG5vdCB0aGUgYWN0dWFsIGZpbmFsIHBhdGguICovCi0gICAgICAgIEZJTEVfQVRUUklCVVRFX05PUk1BTHxGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDU3wKLSAgICAgICAgICAgIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlQsCi0gICAgICAgIE5VTEwpOwotCi0gICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIC8qIEVpdGhlciB0aGUgdGFyZ2V0IGRvZXNuJ3QgZXhpc3QsIG9yIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvCi0gICAgICAgICAgIGdldCBhIGhhbmRsZSB0byBpdC4gSWYgdGhlIGZvcm1lciwgd2UgbmVlZCB0byByZXR1cm4gYW4gZXJyb3IuCi0gICAgICAgICAgIElmIHRoZSBsYXR0ZXIsIHdlIGNhbiB1c2UgYXR0cmlidXRlc19mcm9tX2Rpci4gKi8KLSAgICAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGlmIChsYXN0RXJyb3IgIT0gRVJST1JfQUNDRVNTX0RFTklFRCAmJgotICAgICAgICAgICAgbGFzdEVycm9yICE9IEVSUk9SX1NIQVJJTkdfVklPTEFUSU9OKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAvKiBDb3VsZCBub3QgZ2V0IGF0dHJpYnV0ZXMgb24gb3BlbiBmaWxlLiBGYWxsIGJhY2sgdG8KLSAgICAgICAgICAgcmVhZGluZyB0aGUgZGlyZWN0b3J5LiAqLwotICAgICAgICBpZiAoIWF0dHJpYnV0ZXNfZnJvbV9kaXJfdyhwYXRoLCAmaW5mbywgJnJlcGFyc2VfdGFnKSkKLSAgICAgICAgICAgIC8qIFZlcnkgc3RyYW5nZS4gVGhpcyBzaG91bGQgbm90IGZhaWwgbm93ICovCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChpbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UKSB7Ci0gICAgICAgICAgICBpZiAodHJhdmVyc2UpIHsKLSAgICAgICAgICAgICAgICAvKiBTaG91bGQgdHJhdmVyc2UsIGJ1dCBjb3VsZCBub3Qgb3BlbiByZXBhcnNlIHBvaW50IGhhbmRsZSAqLwotICAgICAgICAgICAgICAgIFNldExhc3RFcnJvcihsYXN0RXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaEZpbGUsICZpbmZvKSkgewotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UKSB7Ci0gICAgICAgICAgICBpZiAoIXdpbjMyX2dldF9yZXBhcnNlX3RhZyhoRmlsZSwgJnJlcGFyc2VfdGFnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgIC8qIENsb3NlIHRoZSBvdXRlciBvcGVuIGZpbGUgaGFuZGxlIG5vdyB0aGF0IHdlJ3JlIGFib3V0IHRvCi0gICAgICAgICAgICAgICByZW9wZW4gaXQgd2l0aCBkaWZmZXJlbnQgZmxhZ3MuICovCi0gICAgICAgICAgICBpZiAoIUNsb3NlSGFuZGxlKGhGaWxlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgIGlmICh0cmF2ZXJzZSkgewotICAgICAgICAgICAgICAgIC8qIEluIG9yZGVyIHRvIGNhbGwgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIHdlIG5lZWQgdG8gb3BlbgotICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlIHdpdGhvdXQgdGhlIHJlcGFyc2UgaGFuZGxpbmcgZmxhZyBzZXQuICovCiAgICAgICAgICAgICAgICAgaEZpbGUyID0gQ3JlYXRlRmlsZVcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBGSUxFX1JFQURfQVRUUklCVVRFUywgRklMRV9TSEFSRV9SRUFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKQEAgLTE2NTEsOCArMTU4OSw4IEBACiAgICAgICAgICAgICAgICAgaWYgKCFnZXRfdGFyZ2V0X3BhdGgoaEZpbGUyLCAmdGFyZ2V0X3BhdGgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAgICAgICAgICAgICBjb2RlID0gd2luMzJfeHN0YXRfaW1wbF93KHRhcmdldF9wYXRoLCByZXN1bHQsIEZBTFNFKTsKLSAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHRhcmdldF9wYXRoKTsKKyAgICAgICAgICAgICAgICBjb2RlID0gd2luMzJfeHN0YXRfaW1wbCh0YXJnZXRfcGF0aCwgcmVzdWx0LCBGQUxTRSk7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh0YXJnZXRfcGF0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQpAQCAtMTY3MSw3ICsxNjA5LDcgQEAKIH0KIAogc3RhdGljIGludAotd2luMzJfeHN0YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQord2luMzJfeHN0YXQoY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQogewogICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgogICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KQEAgLTE2NzksMTYgKzE2MTcsNiBAQAogICAgIGVycm5vID0gMDsKICAgICByZXR1cm4gY29kZTsKIH0KLQotc3RhdGljIGludAotd2luMzJfeHN0YXRfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsIEJPT0wgdHJhdmVyc2UpCi17Ci0gICAgLyogUHJvdG9jb2wgdmlvbGF0aW9uOiB3ZSBleHBsaWNpdGx5IGNsZWFyIGVycm5vLCBpbnN0ZWFkIG9mCi0gICAgICAgc2V0dGluZyBpdCB0byBhIFBPU0lYIGVycm9yLiBDYWxsZXJzIHNob3VsZCB1c2UgR2V0TGFzdEVycm9yLiAqLwotICAgIGludCBjb2RlID0gd2luMzJfeHN0YXRfaW1wbF93KHBhdGgsIHJlc3VsdCwgdHJhdmVyc2UpOwotICAgIGVycm5vID0gMDsKLSAgICByZXR1cm4gY29kZTsKLX0KIC8qIEFib3V0IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOiB3aW4zMl9sc3RhdF93LCB3aW4zMl9zdGF0LCB3aW4zMl9zdGF0X3cKIAogICAgSW4gUG9zaXgsIHN0YXQgYXV0b21hdGljYWxseSB0cmF2ZXJzZXMgc3ltbGlua3MgYW5kIHJldHVybnMgdGhlIHN0YXQKQEAgLTE2OTgsMzQgKzE2MjYsMjAgQEAKIAogICAgVGhlcmVmb3JlLCB3aW4zMl9sc3RhdCB3aWxsIGdldCB0aGUgYXR0cmlidXRlcyB0cmFkaXRpb25hbGx5LCBhbmQKICAgIHdpbjMyX3N0YXQgd2lsbCBmaXJzdCBleHBsaWNpdGx5IHJlc29sdmUgdGhlIHN5bWxpbmsgdGFyZ2V0IGFuZCB0aGVuIHdpbGwKLSAgIGNhbGwgd2luMzJfbHN0YXQgb24gdGhhdCByZXN1bHQuCi0KLSAgIFRoZSBfdyByZXByZXNlbnQgVW5pY29kZSBlcXVpdmFsZW50cyBvZiB0aGUgYWZvcmVtZW50aW9uZWQgQU5TSSBmdW5jdGlvbnMuICovCisgICBjYWxsIHdpbjMyX2xzdGF0IG9uIHRoYXQgcmVzdWx0LiAqLwogCiBzdGF0aWMgaW50Ci13aW4zMl9sc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCit3aW4zMl9sc3RhdChjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0KHBhdGgsIHJlc3VsdCwgRkFMU0UpOwogfQogCiBzdGF0aWMgaW50Ci13aW4zMl9sc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKLXsKLSAgICByZXR1cm4gd2luMzJfeHN0YXRfdyhwYXRoLCByZXN1bHQsIEZBTFNFKTsKLX0KLQotc3RhdGljIGludAotd2luMzJfc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCit3aW4zMl9zdGF0KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKIHsKICAgICByZXR1cm4gd2luMzJfeHN0YXQocGF0aCwgcmVzdWx0LCBUUlVFKTsKIH0KIAotc3RhdGljIGludAotd2luMzJfc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKLXsKLSAgICByZXR1cm4gd2luMzJfeHN0YXRfdyhwYXRoLCByZXN1bHQsIFRSVUUpOwotfQotCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIoc3RhdF9yZXN1bHRfX2RvY19fLApAQCAtMjAwNyw3ICsxOTIxLDcgQEAKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDAsIFB5TG9uZ19Gcm9tTG9uZygobG9uZylzdC0+c3RfbW9kZSkpOwogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc3QtPnN0X2lubykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXN0LT5zdF9pbm8pKTsKICNlbHNlCiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc3QtPnN0X2lubykpOwogI2VuZGlmCkBAIC0yMDI2LDcgKzE5NDAsNyBAQAogI2VuZGlmCiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORylzdC0+c3Rfc2l6ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXN0LT5zdF9zaXplKSk7CiAjZWxzZQogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNiwgUHlMb25nX0Zyb21Mb25nKHN0LT5zdF9zaXplKSk7CiAjZW5kaWYKQEAgLTIxMDYsNyArMjAyMCw3IEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2RvX3N0YXQoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLAorcG9zaXhfZG9fc3RhdChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsCiAgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7CiAgICAgU1RSVUNUX1NUQVQgc3Q7CkBAIC0yMTI1LDI4ICsyMDM5LDI2IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKICAgICAgICAgcmVzdWx0ID0gRlNUQVQocGF0aC0+ZmQsICZzdCk7Ci0gICAgZWxzZQogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkgewotICAgICAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQotICAgICAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdF93KHBhdGgtPndpZGUsICZzdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IHdpbjMyX2xzdGF0X3cocGF0aC0+d2lkZSwgJnN0KTsKLSAgICB9CisgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0KHBhdGgtPndpZGUsICZzdCk7CiAgICAgZWxzZQotI2VuZGlmCi0jaWYgZGVmaW5lZChIQVZFX0xTVEFUKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX2xzdGF0KHBhdGgtPndpZGUsICZzdCk7CisjZWxzZQorICAgIGVsc2UKKyNpZiBkZWZpbmVkKEhBVkVfTFNUQVQpCiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKICAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aC0+bmFycm93LCAmc3QpOwogICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfTFNUQVQgKi8KICNpZmRlZiBIQVZFX0ZTVEFUQVQKICAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgIWZvbGxvd19zeW1saW5rcykKICAgICAgICAgcmVzdWx0ID0gZnN0YXRhdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgJnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0ZTVEFUQVQgKi8KICAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLT5uYXJyb3csICZzdCk7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0ICE9IDApIHsKQEAgLTI0MjYsOCArMjMzOCw4IEBACiAgICAgdHlwZSA9ICdpZF90JwogICAgIGZvcm1hdF91bml0ID0gJyIgX1B5X1BBUlNFX1BJRCAiJwogCi1jbGFzcyBQeV9pbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKK2NsYXNzIGludHB0cl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2ludHB0cl90JwogICAgIGZvcm1hdF91bml0ID0gJyIgX1B5X1BBUlNFX0lOVFBUUiAiJwogCiBjbGFzcyBQeV9vZmZfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CkBAIC0yNDU0LDcgKzIzNjYsNyBAQAogICAgIGltcGxfYnlfcmVmZXJlbmNlID0gVHJ1ZTsKIAogW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YWZmZTY4MzE2ZjE2MDQwMV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NDE4ZmNlMGUwMTE0NDQ2MV0qLwogCiAvKltjbGluaWMgaW5wdXRdCiAKQEAgLTI1ODIsMTAgKzI0OTQsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSAhPSBOVUxMKQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOworICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIC8qCkBAIC0yNzA5LDExICsyNjE4LDggQEAKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX3djaGRpcihwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX2NoZGlyKHBhdGgtPm5hcnJvdyk7Ci0gICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogb24gdW5peCwgc3VjY2VzcyA9IDAsIG9uIHdpbmRvd3MsIHN1Y2Nlc3MgPSAhMCAqLworICAgIC8qIG9uIHVuaXgsIHN1Y2Nlc3MgPSAwLCBvbiB3aW5kb3dzLCBzdWNjZXNzID0gITAgKi8KKyAgICByZXN1bHQgPSAhd2luMzJfd2NoZGlyKHBhdGgtPndpZGUpOwogI2Vsc2UKICNpZmRlZiBIQVZFX0ZDSERJUgogICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKQEAgLTI4MDgsMTAgKzI3MTQsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93KTsKKyAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwogICAgIGlmIChhdHRyID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQogICAgICAgICByZXN1bHQgPSAwOwogICAgIGVsc2UgewpAQCAtMjgxOSwxMCArMjcyMiw3IEBACiAgICAgICAgICAgICBhdHRyICY9IH5GSUxFX0FUVFJJQlVURV9SRUFET05MWTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXR0ciB8PSBGSUxFX0FUVFJJQlVURV9SRUFET05MWTsKLSAgICAgICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSwgYXR0cik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3csIGF0dHIpOworICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSwgYXR0cik7CiAgICAgfQogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKQEAgLTMzMTgsMTIgKzMyMTgsMjIgQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgZG8gewogICAgICAgICBidWZsZW4gKz0gY2h1bms7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBpZiAoYnVmbGVuID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgdG1wYnVmID0gUHlNZW1fUmF3UmVhbGxvYyhidWYsIGJ1Zmxlbik7CiAgICAgICAgIGlmICh0bXBidWYgPT0gTlVMTCkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGJ1ZiA9IHRtcGJ1ZjsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGN3ZCA9IGdldGN3ZChidWYsIChpbnQpYnVmbGVuKTsKKyNlbHNlCiAgICAgICAgIGN3ZCA9IGdldGN3ZChidWYsIGJ1Zmxlbik7CisjZW5kaWYKICAgICB9IHdoaWxlIChjd2QgPT0gTlVMTCAmJiBlcnJubyA9PSBFUkFOR0UpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKQEAgLTM0MDUsNyArMzMxNSw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2YwMGY2MDA3ZmQ1MjY5YSBpbnB1dD1iMDA5NWViYmNiYWE3ZTA0XSovCiB7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIEJPT0wgcmVzdWx0OworICAgIEJPT0wgcmVzdWx0ID0gRkFMU0U7CiAjZWxzZQogICAgIGludCByZXN1bHQ7CiAjZW5kaWYKQEAgLTM0MTcsMTggKzMzMjcsMTggQEAKICAgICB9CiAjZW5kaWYKIAorI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKChzcmMtPm5hcnJvdyAmJiBkc3QtPndpZGUpIHx8IChzcmMtPndpZGUgJiYgZHN0LT5uYXJyb3cpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImxpbms6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgaWYgKHNyYy0+d2lkZSkKICAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QtPm5hcnJvdywgc3JjLT5uYXJyb3csIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKQEAgLTM0NDMsMTMgKzMzNTMsMTMgQEAKICAgICAgICAgICAgIGRzdF9kaXJfZmQsIGRzdC0+bmFycm93LAogICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gQVRfU1lNTElOS19GT0xMT1cgOiAwKTsKICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0xJTktBVCAqLwogICAgICAgICByZXN1bHQgPSBsaW5rKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTM0NjMsOTkgKzMzNzMsMzkgQEAKICAgICBQeU9iamVjdCAqdjsKICAgICBIQU5ETEUgaEZpbmRGaWxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAgICAgQk9PTCByZXN1bHQ7Ci0gICAgV0lOMzJfRklORF9EQVRBIEZpbGVEYXRhOwotICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs0XTsgLyogT3ZlcmFsbG9jYXRlIGZvciAiXCouKiIgKi8KLSAgICBjaGFyICpidWZwdHIgPSBuYW1lYnVmOworICAgIHdjaGFyX3QgbmFtZWJ1ZltNQVhfUEFUSCs0XTsgLyogT3ZlcmFsbG9jYXRlIGZvciAiXCouKiIgKi8KICAgICAvKiBvbmx5IGNsYWltIHRvIGhhdmUgc3BhY2UgZm9yIE1BWF9QQVRIICovCiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9BUlJBWV9MRU5HVEgobmFtZWJ1ZiktNDsKLSAgICBQeU9iamVjdCAqcG8gPSBOVUxMOwogICAgIHdjaGFyX3QgKnduYW1lYnVmID0gTlVMTDsKIAotICAgIGlmICghcGF0aC0+bmFycm93KSB7Ci0gICAgICAgIFdJTjMyX0ZJTkRfREFUQVcgd0ZpbGVEYXRhOwotICAgICAgICB3Y2hhcl90ICpwb193Y2hhcnM7CisgICAgV0lOMzJfRklORF9EQVRBVyB3RmlsZURhdGE7CisgICAgY29uc3Qgd2NoYXJfdCAqcG9fd2NoYXJzOwogCi0gICAgICAgIGlmICghcGF0aC0+d2lkZSkgeyAvKiBEZWZhdWx0IGFyZzogIi4iICovCi0gICAgICAgICAgICBwb193Y2hhcnMgPSBMIi4iOwotICAgICAgICAgICAgbGVuID0gMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBvX3djaGFycyA9IHBhdGgtPndpZGU7Ci0gICAgICAgICAgICBsZW4gPSB3Y3NsZW4ocGF0aC0+d2lkZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogVGhlICs1IGlzIHNvIHdlIGNhbiBhcHBlbmQgIlxcKi4qXDAiICovCi0gICAgICAgIHduYW1lYnVmID0gUHlNZW1fTmV3KHdjaGFyX3QsIGxlbiArIDUpOwotICAgICAgICBpZiAoIXduYW1lYnVmKSB7Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICB9Ci0gICAgICAgIHdjc2NweSh3bmFtZWJ1ZiwgcG9fd2NoYXJzKTsKLSAgICAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgICAgIHdjaGFyX3Qgd2NoID0gd25hbWVidWZbbGVuLTFdOwotICAgICAgICAgICAgaWYgKHdjaCAhPSBTRVAgJiYgd2NoICE9IEFMVFNFUCAmJiB3Y2ggIT0gTCc6JykKLSAgICAgICAgICAgICAgICB3bmFtZWJ1ZltsZW4rK10gPSBTRVA7Ci0gICAgICAgICAgICB3Y3NjcHkod25hbWVidWYgKyBsZW4sIEwiKi4qIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgewotICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICB9Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZVcod25hbWVidWYsICZ3RmlsZURhdGEpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICBsaXN0ID0gcGF0aF9lcnJvcihwYXRoKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgfQotICAgICAgICBkbyB7Ci0gICAgICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KLSAgICAgICAgICAgIGlmICh3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgotICAgICAgICAgICAgICAgIHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4uIikgIT0gMCkgewotICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdGaWxlRGF0YS5jRmlsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB2KSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgICAgICAgICBsaXN0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIHJlc3VsdCA9IEZpbmROZXh0RmlsZVcoaEZpbmRGaWxlLCAmd0ZpbGVEYXRhKTsKLSAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCi0gICAgICAgICAgICAgICBpdCBnb3QgdG8gdGhlIGVuZCBvZiB0aGUgZGlyZWN0b3J5LiAqLwotICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9fTU9SRV9GSUxFUykgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgICAgICAgICBsaXN0ID0gcGF0aF9lcnJvcihwYXRoKTsKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gd2hpbGUgKHJlc3VsdCA9PSBUUlVFKTsKLQorICAgIGlmICghcGF0aC0+d2lkZSkgeyAvKiBEZWZhdWx0IGFyZzogIi4iICovCisgICAgICAgIHBvX3djaGFycyA9IEwiLiI7CisgICAgICAgIGxlbiA9IDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcG9fd2NoYXJzID0gcGF0aC0+d2lkZTsKKyAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgtPndpZGUpOworICAgIH0KKyAgICAvKiBUaGUgKzUgaXMgc28gd2UgY2FuIGFwcGVuZCAiXFwqLipcMCIgKi8KKyAgICB3bmFtZWJ1ZiA9IFB5TWVtX05ldyh3Y2hhcl90LCBsZW4gKyA1KTsKKyAgICBpZiAoIXduYW1lYnVmKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9Ci0gICAgc3RyY3B5KG5hbWVidWYsIHBhdGgtPm5hcnJvdyk7Ci0gICAgbGVuID0gcGF0aC0+bGVuZ3RoOworICAgIHdjc2NweSh3bmFtZWJ1ZiwgcG9fd2NoYXJzKTsKICAgICBpZiAobGVuID4gMCkgewotICAgICAgICBjaGFyIGNoID0gbmFtZWJ1ZltsZW4tMV07Ci0gICAgICAgIGlmIChjaCAhPSAnXFwnICYmIGNoICE9ICcvJyAmJiBjaCAhPSAnOicpCi0gICAgICAgICAgICBuYW1lYnVmW2xlbisrXSA9ICdcXCc7Ci0gICAgICAgIHN0cmNweShuYW1lYnVmICsgbGVuLCAiKi4qIik7CisgICAgICAgIHdjaGFyX3Qgd2NoID0gd25hbWVidWZbbGVuLTFdOworICAgICAgICBpZiAod2NoICE9IFNFUCAmJiB3Y2ggIT0gQUxUU0VQICYmIHdjaCAhPSBMJzonKQorICAgICAgICAgICAgd25hbWVidWZbbGVuKytdID0gU0VQOworICAgICAgICB3Y3NjcHkod25hbWVidWYgKyBsZW4sIEwiKi4qIik7CiAgICAgfQotCi0gICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGUobmFtZWJ1ZiwgJkZpbGVEYXRhKTsKKyAgICBoRmluZEZpbGUgPSBGaW5kRmlyc3RGaWxlVyh3bmFtZWJ1ZiwgJndGaWxlRGF0YSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIGludCBlcnJvciA9IEdldExhc3RFcnJvcigpOwpAQCAtMzU2Nyw5ICszNDE3LDEzIEBACiAgICAgfQogICAgIGRvIHsKICAgICAgICAgLyogU2tpcCBvdmVyIC4gYW5kIC4uICovCi0gICAgICAgIGlmIChzdHJjbXAoRmlsZURhdGEuY0ZpbGVOYW1lLCAiLiIpICE9IDAgJiYKLSAgICAgICAgICAgIHN0cmNtcChGaWxlRGF0YS5jRmlsZU5hbWUsICIuLiIpICE9IDApIHsKLSAgICAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoRmlsZURhdGEuY0ZpbGVOYW1lKTsKKyAgICAgICAgaWYgKHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4iKSAhPSAwICYmCisgICAgICAgICAgICB3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuLiIpICE9IDApIHsKKyAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdGaWxlRGF0YS5jRmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3NsZW4od0ZpbGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAgICAgICAgaWYgKHBhdGgtPm5hcnJvdyAmJiB2KSB7CisgICAgICAgICAgICAgICAgUHlfU0VUUkVGKHYsIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQodikpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKICAgICAgICAgICAgICAgICBsaXN0ID0gTlVMTDsKQEAgLTM1ODQsNyArMzQzOCw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIH0KICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXN1bHQgPSBGaW5kTmV4dEZpbGUoaEZpbmRGaWxlLCAmRmlsZURhdGEpOworICAgICAgICByZXN1bHQgPSBGaW5kTmV4dEZpbGVXKGhGaW5kRmlsZSwgJndGaWxlRGF0YSk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIC8qIEZpbmROZXh0RmlsZSBzZXRzIGVycm9yIHRvIEVSUk9SX05PX01PUkVfRklMRVMgaWYKICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KQEAgLTM2MzksNyArMzQ5Myw3IEBACiAgICAgZWxzZQogI2VuZGlmCiAgICAgewotICAgICAgICBjaGFyICpuYW1lOworICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgICBpZiAocGF0aC0+bmFycm93KSB7CiAgICAgICAgICAgICBuYW1lID0gcGF0aC0+bmFycm93OwogICAgICAgICAgICAgLyogb25seSByZXR1cm4gYnl0ZXMgaWYgdGhleSBzcGVjaWZpZWQgYSBieXRlcyBvYmplY3QgKi8KQEAgLTM3NjUsNDEgKzM2MTksMjkgQEAKIG9zX19nZXRmdWxscGF0aG5hbWVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmI4Njc5ZDU2ODQ1YmM5YiBpbnB1dD0zMzJlZDUzN2MyOWQwYTNlXSovCiB7Ci0gICAgaWYgKCFwYXRoLT5uYXJyb3cpCi0gICAgewotICAgICAgICB3Y2hhcl90IHdvdXRidWZbTUFYX1BBVEhdLCAqd291dGJ1ZnAgPSB3b3V0YnVmOwotICAgICAgICB3Y2hhcl90ICp3dGVtcDsKLSAgICAgICAgRFdPUkQgcmVzdWx0OwotICAgICAgICBQeU9iamVjdCAqdjsKKyAgICB3Y2hhcl90IHdvdXRidWZbTUFYX1BBVEhdLCAqd291dGJ1ZnAgPSB3b3V0YnVmOworICAgIHdjaGFyX3QgKnd0ZW1wOworICAgIERXT1JEIHJlc3VsdDsKKyAgICBQeU9iamVjdCAqdjsKIAotICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHBhdGgtPndpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvdXRidWYsICZ3dGVtcCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPiBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZikpIHsKLSAgICAgICAgICAgIHdvdXRidWZwID0gUHlNZW1fTmV3KHdjaGFyX3QsIHJlc3VsdCk7Ci0gICAgICAgICAgICBpZiAoIXdvdXRidWZwKQotICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3b3V0YnVmcCwgd2NzbGVuKHdvdXRidWZwKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHYgPSB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZVciLCBwYXRoLT5vYmplY3QpOwotICAgICAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUod291dGJ1ZnApOwotICAgICAgICByZXR1cm4gdjsKKyAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHBhdGgtPndpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOworICAgIGlmIChyZXN1bHQgPiBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZikpIHsKKyAgICAgICAgd291dGJ1ZnAgPSBQeU1lbV9OZXcod2NoYXJfdCwgcmVzdWx0KTsKKyAgICAgICAgaWYgKCF3b3V0YnVmcCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHBhdGgtPndpZGUsIHJlc3VsdCwgd291dGJ1ZnAsICZ3dGVtcCk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBjaGFyIG91dGJ1ZltNQVhfUEFUSF07Ci0gICAgICAgIGNoYXIgKnRlbXA7Ci0KLSAgICAgICAgaWYgKCFHZXRGdWxsUGF0aE5hbWUocGF0aC0+bmFycm93LCBQeV9BUlJBWV9MRU5HVEgob3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0YnVmLCAmdGVtcCkpIHsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lIiwgcGF0aC0+b2JqZWN0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcob3V0YnVmKTsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3b3V0YnVmcCwgd2NzbGVuKHdvdXRidWZwKSk7CisgICAgICAgIGlmIChwYXRoLT5uYXJyb3cpCisgICAgICAgICAgICBQeV9TRVRSRUYodiwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCh2KSk7CisgICAgfSBlbHNlCisgICAgICAgIHYgPSB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZVciLCBwYXRoLT5vYmplY3QpOworICAgIGlmICh3b3V0YnVmcCAhPSB3b3V0YnVmKQorICAgICAgICBQeU1lbV9GcmVlKHdvdXRidWZwKTsKKyAgICByZXR1cm4gdjsKIH0KIAogCkBAIC0zODIxLDcgKzM2NjMsNyBAQAogICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwogICAgIGludCByZXN1bHRfbGVuZ3RoOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgd2NoYXJfdCAqcGF0aF93Y2hhcjsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoX3djaGFyOwogCiAgICAgcGF0aF93Y2hhciA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocGF0aCk7CiAgICAgaWYgKHBhdGhfd2NoYXIgPT0gTlVMTCkKQEAgLTM4ODMsMTAgKzM3MjUsNyBAQAogICAgIERXT1JEIGF0dHJpYnV0ZXM7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKCFwYXRoLT5uYXJyb3cpCi0gICAgICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdyk7CisgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCkBAIC0zOTEyLDcgKzM3NTEsOCBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNiZGNiZDEwNTljZWVmNGMgaW5wdXQ9N2VhY2FkYzQwYWNiZGE2Yl0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgd2NoYXJfdCAqcGF0aF93Y2hhciwgKm1vdW50cGF0aD1OVUxMOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGhfd2NoYXI7CisgICAgd2NoYXJfdCAqbW91bnRwYXRoPU5VTEw7CiAgICAgc2l6ZV90IGJ1ZmxlbjsKICAgICBCT09MIHJldDsKIApAQCAtMzk4MywxMCArMzgyMyw3IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgtPndpZGUsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLT5uYXJyb3csIE5VTEwpOworICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeVcocGF0aC0+d2lkZSwgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KQpAQCAtNDAwNiw3ICszODQzLDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKLSNlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtNDExMCw3ICszOTQ3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbnRlcm5hbF9yZW5hbWUocGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwgaW50IGRzdF9kaXJfZmQsIGludCBpc19yZXBsYWNlKQogewotICAgIGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBpc19yZXBsYWNlID8gInJlcGxhY2UiIDogInJlbmFtZSI7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSA9IGlzX3JlcGxhY2UgPyAicmVwbGFjZSIgOiAicmVuYW1lIjsKICAgICBpbnQgZGlyX2ZkX3NwZWNpZmllZDsKIAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTQxMjksMzEgKzM5NjYsMjggQEAKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICgoc3JjLT5uYXJyb3cgJiYgZHN0LT53aWRlKSB8fCAoc3JjLT53aWRlICYmIGRzdC0+bmFycm93KSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICIlczogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIiwgZnVuY3Rpb25fbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHNyYy0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeFcoc3JjLT53aWRlLCBkc3QtPndpZGUsIGZsYWdzKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhBKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdywgZmxhZ3MpOworICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy0+d2lkZSwgZHN0LT53aWRlLCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwogCiAjZWxzZQorICAgIGlmICgoc3JjLT5uYXJyb3cgJiYgZHN0LT53aWRlKSB8fCAoc3JjLT53aWRlICYmIGRzdC0+bmFycm93KSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIiwgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX1JFTkFNRUFUCiAgICAgaWYgKGRpcl9mZF9zcGVjaWZpZWQpCiAgICAgICAgIHJlc3VsdCA9IHJlbmFtZWF0KHNyY19kaXJfZmQsIHNyYy0+bmFycm93LCBkc3RfZGlyX2ZkLCBkc3QtPm5hcnJvdyk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IHJlbmFtZShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOworICAgIHJlc3VsdCA9IHJlbmFtZShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KQpAQCAtNDIzNCwxMSArNDA2OCw4IEBACiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5QShwYXRoLT5uYXJyb3cpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyAgICByZXN1bHQgPSAhUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLT53aWRlKTsKICNlbHNlCiAjaWZkZWYgSEFWRV9VTkxJTktBVAogICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCkBAIC00MjkwLDcgKzQxMjEsNyBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI5MGZjNDM3ZGQ0ZjMzYTAgaW5wdXQ9ODZhNTg1NTRiYTYwOTRhZl0qLwogewogICAgIGxvbmcgcmVzdWx0OwotICAgIGNoYXIgKmJ5dGVzID0gUHlCeXRlc19Bc1N0cmluZyhjb21tYW5kKTsKKyAgICBjb25zdCBjaGFyICpieXRlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoY29tbWFuZCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlc3VsdCA9IHN5c3RlbShieXRlcyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTQzODQsMTEgKzQyMTUsOCBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICByZXN1bHQgPSBQeV9EZWxldGVGaWxlVyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IERlbGV0ZUZpbGVBKHBhdGgtPm5hcnJvdyk7Ci0gICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyAgICAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLworICAgIHJlc3VsdCA9ICFQeV9EZWxldGVGaWxlVyhwYXRoLT53aWRlKTsKICNlbHNlCiAjaWZkZWYgSEFWRV9VTkxJTktBVAogICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCkBAIC00NTcwLDcgKzQzOTgsNyBAQAogI2lmIGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpIHx8IGRlZmluZWQoSEFWRV9VVElNRU5TQVQpCiAKIHN0YXRpYyBpbnQKLXV0aW1lX2Rpcl9mZCh1dGltZV90ICp1dCwgaW50IGRpcl9mZCwgY2hhciAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcykKK3V0aW1lX2Rpcl9mZCh1dGltZV90ICp1dCwgaW50IGRpcl9mZCwgY29uc3QgY2hhciAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcykKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIGludCBmbGFncyA9IGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XOwpAQCAtNDYxMiwxNCArNDQ0MCwxNCBAQAogICAgICNkZWZpbmUgUEFUSF9VVElNRV9IQVZFX0ZEIDAKICNlbmRpZgogCisjaWYgZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkgfHwgZGVmaW5lZChIQVZFX0xVVElNRVMpCisjICBkZWZpbmUgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2VuZGlmCiAKLSNkZWZpbmUgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUyBcCi0gICAgICAgIChkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKSB8fCBkZWZpbmVkKEhBVkVfTFVUSU1FUykpCi0KLSNpZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisjaWZkZWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUwogCiBzdGF0aWMgaW50Ci11dGltZV9ub2ZvbGxvd19zeW1saW5rcyh1dGltZV90ICp1dCwgY2hhciAqcGF0aCkKK3V0aW1lX25vZm9sbG93X3N5bWxpbmtzKHV0aW1lX3QgKnV0LCBjb25zdCBjaGFyICpwYXRoKQogewogI2lmZGVmIEhBVkVfVVRJTUVOU0FUCiAgICAgVVRJTUVfVE9fVElNRVNQRUM7CkBAIC00NjM1LDcgKzQ0NjMsNyBAQAogI2lmbmRlZiBNU19XSU5ET1dTCiAKIHN0YXRpYyBpbnQKLXV0aW1lX2RlZmF1bHQodXRpbWVfdCAqdXQsIGNoYXIgKnBhdGgpCit1dGltZV9kZWZhdWx0KHV0aW1lX3QgKnV0LCBjb25zdCBjaGFyICpwYXRoKQogewogI2lmZGVmIEhBVkVfVVRJTUVOU0FUCiAgICAgVVRJTUVfVE9fVElNRVNQRUM7CkBAIC00Nzc4LDcgKzQ2MDYsNyBAQAogICAgICAgICB1dGltZS5ub3cgPSAxOwogICAgIH0KIAotI2lmICFVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisjaWYgIWRlZmluZWQoVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUykKICAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgidXRpbWUiLCBmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICBnb3RvIGV4aXQ7CiAjZW5kaWYKQEAgLTQ3OTksMTQgKzQ2MjcsOSBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlVyhwYXRoLT53aWRlLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKHBhdGgtPm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOworICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC0+d2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwpAQCAtNDgzMiw3ICs0NjU1LDcgQEAKICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAKLSNpZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisjaWZkZWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUwogICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGRpcl9mZCA9PSBERUZBVUxUX0RJUl9GRCkpCiAgICAgICAgIHJlc3VsdCA9IHV0aW1lX25vZm9sbG93X3N5bWxpbmtzKCZ1dGltZSwgcGF0aC0+bmFycm93KTsKICAgICBlbHNlCkBAIC00ODkyLDkgKzQ3MTUsMTUgQEAKICAgICByZXR1cm4gTlVMTDsgLyogTWFrZSBnY2MgLVdhbGwgaGFwcHkgKi8KIH0KIAorI2lmIGRlZmluZWQoSEFWRV9XRVhFQ1YpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKQorI2RlZmluZSBFWEVDVl9DSEFSIHdjaGFyX3QKKyNlbHNlCisjZGVmaW5lIEVYRUNWX0NIQVIgY2hhcgorI2VuZGlmCisKICNpZiBkZWZpbmVkKEhBVkVfRVhFQ1YpIHx8IGRlZmluZWQoSEFWRV9TUEFXTlYpCiBzdGF0aWMgdm9pZAotZnJlZV9zdHJpbmdfYXJyYXkoY2hhciAqKmFycmF5LCBQeV9zc2l6ZV90IGNvdW50KQorZnJlZV9zdHJpbmdfYXJyYXkoRVhFQ1ZfQ0hBUiAqKmFycmF5LCBQeV9zc2l6ZV90IGNvdW50KQogewogICAgIFB5X3NzaXplX3QgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKQEAgLTQ5MDIsNDAgKzQ3MzEsNDcgQEAKICAgICBQeU1lbV9ERUwoYXJyYXkpOwogfQogCi1zdGF0aWMKLWludCBmc2NvbnZlcnRfc3RyZHVwKFB5T2JqZWN0ICpvLCBjaGFyKipvdXQpCitzdGF0aWMgaW50Citmc2NvbnZlcnRfc3RyZHVwKFB5T2JqZWN0ICpvLCBFWEVDVl9DSEFSICoqb3V0KQogewotICAgIFB5T2JqZWN0ICpieXRlczsKICAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIobywgJmJ5dGVzKSkKKyAgICBQeU9iamVjdCAqdWI7CisgICAgaW50IHJlc3VsdCA9IDA7CisjaWYgZGVmaW5lZChIQVZFX1dFWEVDVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCisgICAgaWYgKCFQeVVuaWNvZGVfRlNEZWNvZGVyKG8sICZ1YikpCiAgICAgICAgIHJldHVybiAwOwotICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKLSAgICAqb3V0ID0gUHlNZW1fTWFsbG9jKHNpemUrMSk7Ci0gICAgaWYgKCEqb3V0KSB7CisgICAgKm91dCA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHViLCAmc2l6ZSk7CisgICAgaWYgKCpvdXQpCisgICAgICAgIHJlc3VsdCA9IDE7CisjZWxzZQorICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICZ1YikpCisgICAgICAgIHJldHVybiAwOworICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHViKTsKKyAgICAqb3V0ID0gUHlNZW1fTWFsbG9jKHNpemUgKyAxKTsKKyAgICBpZiAoKm91dCkgeworICAgICAgICBtZW1jcHkoKm91dCwgUHlCeXRlc19BU19TVFJJTkcodWIpLCBzaXplICsgMSk7CisgICAgICAgIHJlc3VsdCA9IDE7CisgICAgfSBlbHNlCiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBtZW1jcHkoKm91dCwgUHlCeXRlc19Bc1N0cmluZyhieXRlcyksIHNpemUrMSk7Ci0gICAgUHlfREVDUkVGKGJ5dGVzKTsKLSAgICByZXR1cm4gMTsKKyNlbmRpZgorICAgIFB5X0RFQ1JFRih1Yik7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0VYRUNWKSB8fCBkZWZpbmVkIChIQVZFX0ZFWEVDVkUpCi1zdGF0aWMgY2hhcioqCitzdGF0aWMgRVhFQ1ZfQ0hBUioqCiBwYXJzZV9lbnZsaXN0KFB5T2JqZWN0KiBlbnYsIFB5X3NzaXplX3QgKmVudmNfcHRyKQogewotICAgIGNoYXIgKiplbnZsaXN0OwogICAgIFB5X3NzaXplX3QgaSwgcG9zLCBlbnZjOwogICAgIFB5T2JqZWN0ICprZXlzPU5VTEwsICp2YWxzPU5VTEw7Ci0gICAgUHlPYmplY3QgKmtleSwgKnZhbCwgKmtleTIsICp2YWwyOwotICAgIGNoYXIgKnAsICprLCAqdjsKLSAgICBzaXplX3QgbGVuOworICAgIFB5T2JqZWN0ICprZXksICp2YWwsICprZXkyLCAqdmFsMiwgKmtleXZhbDsKKyAgICBFWEVDVl9DSEFSICoqZW52bGlzdDsKIAogICAgIGkgPSBQeU1hcHBpbmdfU2l6ZShlbnYpOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZW52bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGkgKyAxKTsKKyAgICBlbnZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgaSArIDEpOwogICAgIGlmIChlbnZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00OTU5LDI4ICs0Nzk1LDM1IEBACiAgICAgICAgIGlmICgha2V5IHx8ICF2YWwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgICAgIGlmIChQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoa2V5LCAma2V5MikgPT0gMCkKKyNpZiBkZWZpbmVkKEhBVkVfV0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNEZWNvZGVyKGtleSwgJmtleTIpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9GU0NvbnZlcnRlcih2YWwsICZ2YWwyKSA9PSAwKSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2Rlcih2YWwsICZ2YWwyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGtleTIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotCi0gICAgICAgIGsgPSBQeUJ5dGVzX0FzU3RyaW5nKGtleTIpOwotICAgICAgICB2ID0gUHlCeXRlc19Bc1N0cmluZyh2YWwyKTsKLSAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShrZXkyKSArIFB5Qnl0ZXNfR0VUX1NJWkUodmFsMikgKyAyOwotCi0gICAgICAgIHAgPSBQeU1lbV9ORVcoY2hhciwgbGVuKTsKLSAgICAgICAgaWYgKHAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAga2V5dmFsID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVVIiwga2V5MiwgdmFsMik7CisjZWxzZQorICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihrZXksICZrZXkyKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKHZhbCwgJnZhbDIpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5Mik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodmFsMik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIFB5T1Nfc25wcmludGYocCwgbGVuLCAiJXM9JXMiLCBrLCB2KTsKLSAgICAgICAgZW52bGlzdFtlbnZjKytdID0gcDsKKyAgICAgICAga2V5dmFsID0gUHlCeXRlc19Gcm9tRm9ybWF0KCIlcz0lcyIsIFB5Qnl0ZXNfQVNfU1RSSU5HKGtleTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcodmFsMikpOworI2VuZGlmCiAgICAgICAgIFB5X0RFQ1JFRihrZXkyKTsKICAgICAgICAgUHlfREVDUkVGKHZhbDIpOworICAgICAgICBpZiAoIWtleXZhbCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKCFmc2NvbnZlcnRfc3RyZHVwKGtleXZhbCwgJmVudmxpc3RbZW52YysrXSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrZXl2YWwpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihrZXl2YWwpOwogICAgIH0KICAgICBQeV9ERUNSRUYodmFscyk7CiAgICAgUHlfREVDUkVGKGtleXMpOwpAQCAtNDk5MiwxNyArNDgzNSwxNSBAQAogZXJyb3I6CiAgICAgUHlfWERFQ1JFRihrZXlzKTsKICAgICBQeV9YREVDUkVGKHZhbHMpOwotICAgIHdoaWxlICgtLWVudmMgPj0gMCkKLSAgICAgICAgUHlNZW1fREVMKGVudmxpc3RbZW52Y10pOwotICAgIFB5TWVtX0RFTChlbnZsaXN0KTsKKyAgICBmcmVlX3N0cmluZ19hcnJheShlbnZsaXN0LCBlbnZjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIGNoYXIqKgorc3RhdGljIEVYRUNWX0NIQVIqKgogcGFyc2VfYXJnbGlzdChQeU9iamVjdCogYXJndiwgUHlfc3NpemVfdCAqYXJnYykKIHsKICAgICBpbnQgaTsKLSAgICBjaGFyICoqYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCAqYXJnYysxKTsKKyAgICBFWEVDVl9DSEFSICoqYXJndmxpc3QgPSBQeU1lbV9ORVcoRVhFQ1ZfQ0hBUiAqLCAqYXJnYysxKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUwMjQsNiArNDg2NSw3IEBACiAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsICphcmdjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KKwogI2VuZGlmCiAKIApAQCAtNTAzMSw3ICs0ODczLDcgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLmV4ZWN2CiAKLSAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgIHBhdGg6IHBhdGhfdAogICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KICAgICBhcmd2OiBvYmplY3QKICAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgpAQCAtNTA0MSwxNyArNDg4MywxNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZXhlY3ZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjIxZGMzNGRlZWI1YjAwNCBpbnB1dD05NjA0MTU1OTkyNWU1MjI5XSovCitvc19leGVjdl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2I1MmZlYzM0Y2QwZGFmZCBpbnB1dD05YmFjMzFlZmFlMDdkYWM3XSovCiB7Ci0gICAgY2hhciAqcGF0aF9jaGFyOwotICAgIGNoYXIgKiphcmd2bGlzdDsKKyAgICBFWEVDVl9DSEFSICoqYXJndmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjOwogCiAgICAgLyogZXhlY3YgaGFzIHR3byBhcmd1bWVudHM6IChwYXRoLCBhcmd2KSwgd2hlcmUKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzLiAqLwogCi0gICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoIVB5TGlzdF9DaGVjayhhcmd2KSAmJiAhUHlUdXBsZV9DaGVjayhhcmd2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKQEAgLTUwNjgsNyArNDkwOCwxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBleGVjdihwYXRoX2NoYXIsIGFyZ3ZsaXN0KTsKKyNpZmRlZiBIQVZFX1dFWEVDVgorICAgIF93ZXhlY3YocGF0aC0+d2lkZSwgYXJndmxpc3QpOworI2Vsc2UKKyAgICBleGVjdihwYXRoLT5uYXJyb3csIGFyZ3ZsaXN0KTsKKyNlbmRpZgogCiAgICAgLyogSWYgd2UgZ2V0IGhlcmUgaXQncyBkZWZpbml0ZWx5IGFuIGVycm9yICovCiAKQEAgLTUwOTQsOCArNDkzOCw4IEBACiBvc19leGVjdmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LCBQeU9iamVjdCAqZW52KQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmOWZhOGU0ZGE4YmRlNTggaW5wdXQ9NjI2ODA0ZmEwOTI2MDZkOV0qLwogewotICAgIGNoYXIgKiphcmd2bGlzdCA9IE5VTEw7Ci0gICAgY2hhciAqKmVudmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0ID0gTlVMTDsKKyAgICBFWEVDVl9DSEFSICoqZW52bGlzdDsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGVudmM7CiAKICAgICAvKiBleGVjdmUgaGFzIHRocmVlIGFyZ3VtZW50czogKHBhdGgsIGFyZ3YsIGVudiksIHdoZXJlCkBAIC01MTI4LDMwICs0OTcyLDMzIEBACiAgICAgICAgIGZleGVjdmUocGF0aC0+ZmQsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKICAgICBlbHNlCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1dFWEVDVgorICAgICAgICBfd2V4ZWN2ZShwYXRoLT53aWRlLCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZWxzZQogICAgICAgICBleGVjdmUocGF0aC0+bmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZW5kaWYKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCiAgICAgcGF0aF9lcnJvcihwYXRoKTsKIAotICAgIHdoaWxlICgtLWVudmMgPj0gMCkKLSAgICAgICAgUHlNZW1fREVMKGVudmxpc3RbZW52Y10pOwotICAgIFB5TWVtX0RFTChlbnZsaXN0KTsKKyAgICBmcmVlX3N0cmluZ19hcnJheShlbnZsaXN0LCBlbnZjKTsKICAgZmFpbDoKICAgICBpZiAoYXJndmxpc3QpCiAgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KKwogI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KIAogCi0jaWZkZWYgSEFWRV9TUEFXTlYKKyNpZiBkZWZpbmVkKEhBVkVfU1BBV05WKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLnNwYXdudgogCiAgICAgbW9kZTogaW50CiAgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KLSAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgIHBhdGg6IHBhdGhfdAogICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KICAgICBhcmd2OiBvYmplY3QKICAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgpAQCAtNTE2MSwyMCArNTAwOCwxOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNDI3YzBjZTQwZjEwNjM4IGlucHV0PTA0MmM5MWRmYzFlNmRlYmNdKi8KK29zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcxY2QwMzdhOWQ5NmI4MTYgaW5wdXQ9NDMyMjQyNDIzMDMyOTFiZV0qLwogewotICAgIGNoYXIgKnBhdGhfY2hhcjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0OwogICAgIGludCBpOwogICAgIFB5X3NzaXplX3QgYXJnYzsKLSAgICBQeV9pbnRwdHJfdCBzcGF3bnZhbDsKKyAgICBpbnRwdHJfdCBzcGF3bnZhbDsKICAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKIAogICAgIC8qIHNwYXdudiBoYXMgdGhyZWUgYXJndW1lbnRzOiAobW9kZSwgcGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewogICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7CiAgICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKQEAgLTUxODksNyArNTAzNCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgYXJnYysxKTsKKyAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhFWEVDVl9DSEFSICosIGFyZ2MrMSk7CiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQpAQCAtNTIwOSw3ICs1MDU0LDEzIEBACiAgICAgICAgIG1vZGUgPSBfUF9PVkVSTEFZOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHNwYXdudmFsID0gX3NwYXdudihtb2RlLCBwYXRoX2NoYXIsIGFyZ3ZsaXN0KTsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisjaWZkZWYgSEFWRV9XU1BBV05WCisgICAgc3Bhd252YWwgPSBfd3NwYXdudihtb2RlLCBwYXRoLT53aWRlLCBhcmd2bGlzdCk7CisjZWxzZQorICAgIHNwYXdudmFsID0gX3NwYXdudihtb2RlLCBwYXRoLT5uYXJyb3csIGFyZ3ZsaXN0KTsKKyNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKQEAgLTUyMjYsNyArNTA3Nyw3IEBACiAKICAgICBtb2RlOiBpbnQKICAgICAgICAgTW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uLgotICAgIHBhdGg6IEZTQ29udmVydGVyCisgICAgcGF0aDogcGF0aF90CiAgICAgICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgogICAgIGFyZ3Y6IG9iamVjdAogICAgICAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuCkBAIC01MjM4LDE2ICs1MDg5LDE1IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKK29zX3NwYXdudmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZW52KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWViY2ZhNWY3YmEyZjQyMTkgaW5wdXQ9MDIzNjJmZDkzNzk2M2Y4Zl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMwZmU4NWJlNTZmZTM3YWQgaW5wdXQ9M2U0MDgwM2VlN2M0YzU4Nl0qLwogewotICAgIGNoYXIgKnBhdGhfY2hhcjsKLSAgICBjaGFyICoqYXJndmxpc3Q7Ci0gICAgY2hhciAqKmVudmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0OworICAgIEVYRUNWX0NIQVIgKiplbnZsaXN0OwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgYXJnYywgaSwgZW52YzsKLSAgICBQeV9pbnRwdHJfdCBzcGF3bnZhbDsKKyAgICBpbnRwdHJfdCBzcGF3bnZhbDsKICAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKICAgICBQeV9zc2l6ZV90IGxhc3RhcmcgPSAwOwogCkBAIC01MjU1LDcgKzUxMDUsNiBAQAogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MgYW5kIGVudiBpcyBhIGRpY3Rpb25hcnkKICAgICAgICBsaWtlIHBvc2l4LmVudmlyb24uICovCiAKLSAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01Mjc1LDcgKzUxMjQsNyBAQAogICAgICAgICBnb3RvIGZhaWxfMDsKICAgICB9CiAKLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CisgICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoRVhFQ1ZfQ0hBUiAqLCBhcmdjKzEpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gZmFpbF8wOwpAQCAtNTI5OSw3ICs1MTQ4LDEzIEBACiAgICAgICAgIG1vZGUgPSBfUF9PVkVSTEFZOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHNwYXdudmFsID0gX3NwYXdudmUobW9kZSwgcGF0aF9jaGFyLCBhcmd2bGlzdCwgZW52bGlzdCk7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIEhBVkVfV1NQQVdOVgorICAgIHNwYXdudmFsID0gX3dzcGF3bnZlKG1vZGUsIHBhdGgtPndpZGUsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyNlbHNlCisgICAgc3Bhd252YWwgPSBfc3Bhd252ZShtb2RlLCBwYXRoLT5uYXJyb3csIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChzcGF3bnZhbCA9PSAtMSkKQEAgLTU3NjIsMTQgKzU2MTcsMTQgQEAKICAgICBwaWQ6IHBpZF90CiAgICAgLwogCi1SZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLgorUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCAob3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpZiB6ZXJvKS4KIAogVGhlIGFmZmluaXR5IGlzIHJldHVybmVkIGFzIGEgc2V0IG9mIENQVSBpZGVudGlmaWVycy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NjaGVkX2dldGFmZmluaXR5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGlkX3QgcGlkKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY3MjZmMmMxOTNjMTdhNGYgaW5wdXQ9ZWFmMTYxOTM2ODc0YjhhMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY3MjZmMmMxOTNjMTdhNGYgaW5wdXQ9OTgzY2U3Y2I0YTU2NTk4MF0qLwogewogICAgIGludCBjcHUsIG5jcHVzLCBjb3VudDsKICAgICBzaXplX3Qgc2V0c2l6ZTsKQEAgLTU5MzAsNyArNTc4NSw3IEBACiAgICAgaWYgKF9QeV9zZXRfaW5oZXJpdGFibGUobWFzdGVyX2ZkLCAwLCBOVUxMKSA8IDApCiAgICAgICAgIGdvdG8gcG9zaXhfZXJyb3I7CiAKLSNpZiAhZGVmaW5lZChfX0NZR1dJTl9fKSAmJiAhZGVmaW5lZChIQVZFX0RFVl9QVEMpCisjaWYgIWRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoX19BTkRST0lEX18pICYmICFkZWZpbmVkKEhBVkVfREVWX1BUQykKICAgICBpb2N0bChzbGF2ZV9mZCwgSV9QVVNILCAicHRlbSIpOyAvKiBwdXNoIHB0ZW0gKi8KICAgICBpb2N0bChzbGF2ZV9mZCwgSV9QVVNILCAibGR0ZXJtIik7IC8qIHB1c2ggbGR0ZXJtICovCiAjaWZuZGVmIF9faHB1eApAQCAtNjA0Miw2ICs1ODk3LDcgQEAKICNlbmRpZiAvKiBIQVZFX0dFVEdJRCAqLwogCiAKKyNpZmRlZiBIQVZFX0dFVFBJRAogLypbY2xpbmljIGlucHV0XQogb3MuZ2V0cGlkCiAKQEAgLTYwNTQsNiArNTkxMCw3IEBACiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKGdldHBpZCgpKTsKIH0KKyNlbmRpZiAvKiBIQVZFX0dFVFBJRCAqLwogCiAjaWZkZWYgSEFWRV9HRVRHUk9VUExJU1QKIApAQCAtNjI1NSw3ICs2MTEyLDcgQEAKIHBvc2l4X2luaXRncm91cHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpvbmFtZTsKLSAgICBjaGFyICp1c2VybmFtZTsKKyAgICBjb25zdCBjaGFyICp1c2VybmFtZTsKICAgICBpbnQgcmVzOwogI2lmZGVmIF9fQVBQTEVfXwogICAgIGludCBnaWQ7CkBAIC03MDAyLDcgKzY4NTksNyBAQAogLyogTVMgQyBoYXMgYSB2YXJpYW50IG9mIHdhaXRwaWQoKSB0aGF0J3MgdXNhYmxlIGZvciBtb3N0IHB1cnBvc2VzLiAqLwogLypbY2xpbmljIGlucHV0XQogb3Mud2FpdHBpZAotICAgIHBpZDogUHlfaW50cHRyX3QKKyAgICBwaWQ6IGludHB0cl90CiAgICAgb3B0aW9uczogaW50CiAgICAgLwogCkBAIC03MDE1LDExICs2ODcyLDExIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNWYxY2UwMDVhMzQ2YjA5IGlucHV0PTQ0NGM4ZjUxY2NhNWI4NjJdKi8KK29zX3dhaXRwaWRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBwaWQsIGludCBvcHRpb25zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlODM2YjIyMTI3MWQ1MzggaW5wdXQ9NDBmMjQ0MGM1MTU0MTBmOF0qLwogewogICAgIGludCBzdGF0dXM7Ci0gICAgUHlfaW50cHRyX3QgcmVzOworICAgIGludHB0cl90IHJlczsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAogICAgIGRvIHsKQEAgLTcxMjksMTYgKzY5ODYsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5fcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIHdjaGFyX3QgKnBhdGg7CisgICAgY29uc3Qgd2NoYXJfdCAqcGF0aDsKICAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOwogICAgIERXT1JEIGlvX3Jlc3VsdDsKICAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7Ci0gICAgICAgIGludCBkaXJfZmQ7CisgICAgaW50IGRpcl9mZDsKICAgICBIQU5ETEUgcmVwYXJzZV9wb2ludF9oYW5kbGU7CiAKLSAgICBjaGFyIHRhcmdldF9idWZmZXJbTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOwotICAgIFJFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChSRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKLSAgICB3Y2hhcl90ICpwcmludF9uYW1lOworICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltfUHlfTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOworICAgIF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOworICAgIGNvbnN0IHdjaGFyX3QgKnByaW50X25hbWU7CiAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKIApAQCAtNzIwNiwyMiArNzA2MywxOSBAQAogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKIAogLyogR3JhYiBDcmVhdGVTeW1ib2xpY0xpbmtXIGR5bmFtaWNhbGx5IGZyb20ga2VybmVsMzIgKi8KLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQV1NUUiwgTFBXU1RSLCBEV09SRCkgPSBOVUxMOwotc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkoTFBTVFIsIExQU1RSLCBEV09SRCkgPSBOVUxMOworc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykoTFBDV1NUUiwgTFBDV1NUUiwgRFdPUkQpID0gTlVMTDsKIAogc3RhdGljIGludAogY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rKHZvaWQpCiB7CiAgICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKICAgICAvKiBvbmx5IHJlY2hlY2sgKi8KLSAgICBpZiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAmJiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKQorICAgIGlmIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKQogICAgICAgICByZXR1cm4gMTsKICAgICBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGVXKEwiS0VSTkVMMzIiKTsKICAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rVyIpOwotICAgICooRkFSUFJPQyopJlB5X0NyZWF0ZVN5bWJvbGljTGlua0EgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGVTeW1ib2xpY0xpbmtBIik7Ci0gICAgcmV0dXJuIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXICYmIFB5X0NyZWF0ZVN5bWJvbGljTGlua0EpOworICAgIHJldHVybiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtXICE9IE5VTEw7CiB9CiAKIC8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCkBAIC03MjM4LDIwICs3MDkyLDYgQEAKICAgICAqcHRyID0gMDsKIH0KIAotLyogUmVtb3ZlIHRoZSBsYXN0IHBvcnRpb24gb2YgdGhlIHBhdGggKi8KLXN0YXRpYyB2b2lkCi1fZGlybmFtZUEoY2hhciAqcGF0aCkKLXsKLSAgICBjaGFyICpwdHI7Ci0KLSAgICAvKiB3YWxrIHRoZSBwYXRoIGZyb20gdGhlIGVuZCB1bnRpbCBhIGJhY2tzbGFzaCBpcyBlbmNvdW50ZXJlZCAqLwotICAgIGZvcihwdHIgPSBwYXRoICsgc3RybGVuKHBhdGgpOyBwdHIgIT0gcGF0aDsgcHRyLS0pIHsKLSAgICAgICAgaWYgKCpwdHIgPT0gJ1xcJyB8fCAqcHRyID09ICcvJykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAqcHRyID0gMDsKLX0KLQogLyogSXMgdGhpcyBwYXRoIGFic29sdXRlPyAqLwogc3RhdGljIGludAogX2lzX2Fic1coY29uc3QgV0NIQVIgKnBhdGgpCkBAIC03MjYwLDE0ICs3MTAwLDYgQEAKIAogfQogCi0vKiBJcyB0aGlzIHBhdGggYWJzb2x1dGU/ICovCi1zdGF0aWMgaW50Ci1faXNfYWJzQShjb25zdCBjaGFyICpwYXRoKQotewotICAgIHJldHVybiBwYXRoWzBdID09ICdcXCcgfHwgcGF0aFswXSA9PSAnLycgfHwgcGF0aFsxXSA9PSAnOic7Ci0KLX0KLQogLyogam9pbiByb290IGFuZCByZXN0IHdpdGggYSBiYWNrc2xhc2ggKi8KIHN0YXRpYyB2b2lkCiBfam9pblcoV0NIQVIgKmRlc3RfcGF0aCwgY29uc3QgV0NIQVIgKnJvb3QsIGNvbnN0IFdDSEFSICpyZXN0KQpAQCAtNzI4OSwzMCArNzEyMSw5IEBACiAgICAgd2NzY3B5KGRlc3RfcGF0aCtyb290X2xlbiwgcmVzdCk7CiB9CiAKLS8qIGpvaW4gcm9vdCBhbmQgcmVzdCB3aXRoIGEgYmFja3NsYXNoICovCi1zdGF0aWMgdm9pZAotX2pvaW5BKGNoYXIgKmRlc3RfcGF0aCwgY29uc3QgY2hhciAqcm9vdCwgY29uc3QgY2hhciAqcmVzdCkKLXsKLSAgICBzaXplX3Qgcm9vdF9sZW47Ci0KLSAgICBpZiAoX2lzX2Fic0EocmVzdCkpIHsKLSAgICAgICAgc3RyY3B5KGRlc3RfcGF0aCwgcmVzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByb290X2xlbiA9IHN0cmxlbihyb290KTsKLQotICAgIHN0cmNweShkZXN0X3BhdGgsIHJvb3QpOwotICAgIGlmKHJvb3RfbGVuKSB7Ci0gICAgICAgIGRlc3RfcGF0aFtyb290X2xlbl0gPSAnXFwnOwotICAgICAgICByb290X2xlbisrOwotICAgIH0KLSAgICBzdHJjcHkoZGVzdF9wYXRoK3Jvb3RfbGVuLCByZXN0KTsKLX0KLQogLyogUmV0dXJuIFRydWUgaWYgdGhlIHBhdGggYXQgc3JjIHJlbGF0aXZlIHRvIGRlc3QgaXMgYSBkaXJlY3RvcnkgKi8KIHN0YXRpYyBpbnQKLV9jaGVja19kaXJXKFdDSEFSICpzcmMsIFdDSEFSICpkZXN0KQorX2NoZWNrX2RpclcoTFBDV1NUUiBzcmMsIExQQ1dTVFIgZGVzdCkKIHsKICAgICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIHNyY19pbmZvOwogICAgIFdDSEFSIGRlc3RfcGFyZW50W01BWF9QQVRIXTsKQEAgLTczMjgsMjUgKzcxMzksNiBAQAogICAgICAgICAmJiBzcmNfaW5mby5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZCiAgICAgKTsKIH0KLQotLyogUmV0dXJuIFRydWUgaWYgdGhlIHBhdGggYXQgc3JjIHJlbGF0aXZlIHRvIGRlc3QgaXMgYSBkaXJlY3RvcnkgKi8KLXN0YXRpYyBpbnQKLV9jaGVja19kaXJBKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKLXsKLSAgICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIHNyY19pbmZvOwotICAgIGNoYXIgZGVzdF9wYXJlbnRbTUFYX1BBVEhdOwotICAgIGNoYXIgc3JjX3Jlc29sdmVkW01BWF9QQVRIXSA9ICIiOwotCi0gICAgLyogZGVzdF9wYXJlbnQgPSBvcy5wYXRoLmRpcm5hbWUoZGVzdCkgKi8KLSAgICBzdHJjcHkoZGVzdF9wYXJlbnQsIGRlc3QpOwotICAgIF9kaXJuYW1lQShkZXN0X3BhcmVudCk7Ci0gICAgLyogc3JjX3Jlc29sdmVkID0gb3MucGF0aC5qb2luKGRlc3RfcGFyZW50LCBzcmMpICovCi0gICAgX2pvaW5BKHNyY19yZXNvbHZlZCwgZGVzdF9wYXJlbnQsIHNyYyk7Ci0gICAgcmV0dXJuICgKLSAgICAgICAgR2V0RmlsZUF0dHJpYnV0ZXNFeEEoc3JjX3Jlc29sdmVkLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZzcmNfaW5mbykKLSAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQotICAgICk7Ci19CiAjZW5kaWYKIAogCkBAIC03NDA2LDE4ICs3MTk4LDEwIEBACiAjaWZkZWYgTVNfV0lORE9XUwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChkc3QtPndpZGUpIHsKLSAgICAgICAgLyogaWYgc3JjIGlzIGEgZGlyZWN0b3J5LCBlbnN1cmUgdGFyZ2V0X2lzX2RpcmVjdG9yeT09MSAqLwotICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy0+d2lkZSwgZHN0LT53aWRlKTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5KTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyQShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwotICAgICAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKGRzdC0+bmFycm93LCBzcmMtPm5hcnJvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5KTsKLSAgICB9CisgICAgLyogaWYgc3JjIGlzIGEgZGlyZWN0b3J5LCBlbnN1cmUgdGFyZ2V0X2lzX2RpcmVjdG9yeT09MSAqLworICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2Rpclcoc3JjLT53aWRlLCBkc3QtPndpZGUpOworICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LT53aWRlLCBzcmMtPndpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXN1bHQpCkBAIC03NzIyLDE2ICs3NTA2LDE1IEBACiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgICAgIGZkID0gX3dvcGVuKHBhdGgtPndpZGUsIGZsYWdzLCBtb2RlKTsKLSAgICAgICAgZWxzZQotI2VuZGlmCisgICAgICAgIGZkID0gX3dvcGVuKHBhdGgtPndpZGUsIGZsYWdzLCBtb2RlKTsKKyNlbHNlCiAjaWZkZWYgSEFWRV9PUEVOQVQKICAgICAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKICAgICAgICAgICAgIGZkID0gb3BlbmF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCBmbGFncywgbW9kZSk7CiAgICAgICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfT1BFTkFUICovCiAgICAgICAgICAgICBmZCA9IG9wZW4ocGF0aC0+bmFycm93LCBmbGFncywgbW9kZSk7CisjZW5kaWYgLyogIU1TX1dJTkRPV1MgKi8KICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9IHdoaWxlIChmZCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC03NzY2LDggKzc1NDksNiBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJmZTRlOTM2MDI4MjJjMTQgaW5wdXQ9MmJjNDI0NTFjYTVjMzIyM10qLwogewogICAgIGludCByZXM7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNTc2NDc4LwogICAgICAqIGFuZCBodHRwOi8vbGludXguZGVya2VpbGVyLmNvbS9NYWlsaW5nLUxpc3RzL0tlcm5lbC8yMDA1LTA5LzMwMDAuaHRtbAogICAgICAqIGZvciBtb3JlIGRldGFpbHMuCkBAIC03ODAwLDkgKzc1ODEsOCBAQAogICAgIGludCBpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICi0gICAgZm9yIChpID0gZmRfbG93OyBpIDwgZmRfaGlnaDsgaSsrKQotICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGkpKQotICAgICAgICAgICAgY2xvc2UoaSk7CisgICAgZm9yIChpID0gUHlfTUFYKGZkX2xvdywgMCk7IGkgPCBmZF9oaWdoOyBpKyspCisgICAgICAgIGNsb3NlKGkpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTc4NDYsNyArNzYyNiw3IEBACiAgICAgaW50IGR1cDNfd29ya3MgPSAtMTsKICNlbmRpZgogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmRfZHVwMihmZCwgZmQyKSkKKyAgICBpZiAoZmQgPCAwIHx8IGZkMiA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogCiAgICAgLyogZHVwMigpIGNhbiBmYWlsIHdpdGggRUlOVFIgaWYgdGhlIHRhcmdldCBGRCBpcyBhbHJlYWR5IG9wZW4sIGJlY2F1c2UgaXQKQEAgLTc5NzAsMTAgKzc3NTAsNiBAQAogewogICAgIFB5X29mZl90IHJlc3VsdDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogI2lmZGVmIFNFRUtfU0VUCiAgICAgLyogVHVybiAwLCAxLCAyIGludG8gU0VFS197U0VULENVUixFTkR9ICovCiAgICAgc3dpdGNoIChob3cpIHsKQEAgLTc5ODYsMTAgKzc3NjIsNiBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTgxOTcsMTAgKzc5NjksNiBAQAogICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBsZW5ndGgpOwogICAgIGlmIChidWZmZXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9CiAKICAgICBkbyB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTgzNjMsNyArODEzMSw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaWlPbjpzZW5kZmlsZSIsCiAgICAgICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCAmb2Zmb2JqLCAmY291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSNpZmRlZiBsaW51eAorI2lmZGVmIF9fbGludXhfXwogICAgIGlmIChvZmZvYmogPT0gUHlfTm9uZSkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC04NDQzLDggKzgyMTEsNiBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZhNDhjOGI0ZTY0NGNhMDAgaW5wdXQ9MDhjZTk0YWExZWFmN2I1ZV0qLwogewogICAgIGludCByZXR1cm5fdmFsdWU7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gMDsKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgcmV0dXJuX3ZhbHVlID0gaXNhdHR5KGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtODQ4Myw4ICs4MjQ5LDggQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgb2sgPSBDcmVhdGVQaXBlKCZyZWFkLCAmd3JpdGUsICZhdHRyLCAwKTsKICAgICBpZiAob2spIHsKLSAgICAgICAgZmRzWzBdID0gX29wZW5fb3NmaGFuZGxlKChQeV9pbnRwdHJfdClyZWFkLCBfT19SRE9OTFkpOwotICAgICAgICBmZHNbMV0gPSBfb3Blbl9vc2ZoYW5kbGUoKFB5X2ludHB0cl90KXdyaXRlLCBfT19XUk9OTFkpOworICAgICAgICBmZHNbMF0gPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXJlYWQsIF9PX1JET05MWSk7CisgICAgICAgIGZkc1sxXSA9IF9vcGVuX29zZmhhbmRsZSgoaW50cHRyX3Qpd3JpdGUsIF9PX1dST05MWSk7CiAgICAgICAgIGlmIChmZHNbMF0gPT0gLTEgfHwgZmRzWzFdID09IC0xKSB7CiAgICAgICAgICAgICBDbG9zZUhhbmRsZShyZWFkKTsKICAgICAgICAgICAgIENsb3NlSGFuZGxlKHdyaXRlKTsKQEAgLTg2MzYsMTEgKzg0MDIsNiBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTg4MjMsOSArODU4NCw2IEBACiAgICAgaW50IHJlc3VsdDsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0KICAgICBkbyB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSApAQCAtODg3MiwxMCArODYzMCw3IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGZkID0gX3dvcGVuKHBhdGgtPndpZGUsIF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX05PSU5IRVJJVCk7Ci0gICAgZWxzZQotICAgICAgICBmZCA9IF9vcGVuKHBhdGgtPm5hcnJvdywgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKKyAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19OT0lOSEVSSVQpOwogICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJlc3VsdCA9IC0xOwogICAgIGVsc2UgewpAQCAtOTAxOSw3ICs4Nzc0LDcgQEAKIG9zX3B1dGVudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDI5YTU2N2Q2YjIzMjdkMiBpbnB1dD1iYTU4NjU4MWMyZTYxMDVmXSovCiB7Ci0gICAgd2NoYXJfdCAqZW52OworICAgIGNvbnN0IHdjaGFyX3QgKmVudjsKIAogICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVVIiwgbmFtZSwgdmFsdWUpOwogICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKQEAgLTkwNjUsOCArODgyMCw4IEBACiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzID0gTlVMTDsKICAgICBjaGFyICplbnY7Ci0gICAgY2hhciAqbmFtZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKG5hbWUpOwotICAgIGNoYXIgKnZhbHVlX3N0cmluZyA9IFB5Qnl0ZXNfQXNTdHJpbmcodmFsdWUpOworICAgIGNvbnN0IGNoYXIgKm5hbWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lKTsKKyAgICBjb25zdCBjaGFyICp2YWx1ZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKIAogICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tRm9ybWF0KCIlcz0lcyIsIG5hbWVfc3RyaW5nLCB2YWx1ZV9zdHJpbmcpOwogICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CkBAIC05MzQ0LDE3ICs5MDk5LDE3IEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAwLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfYnNpemUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDEsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc3QuZl9mcnNpemUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfYmxvY2tzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfYmxvY2tzKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2JmcmVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfYmZyZWUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfYmF2YWlsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfYmF2YWlsKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2ZpbGVzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmlsZXMpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfZmZyZWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZykgc3QuZl9mZnJlZSkpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9mYXZhaWwpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZykgc3QuZl9mYXZhaWwpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDgsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc3QuZl9mbGFnKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA5LCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfbmFtZW1heCkpOwogI2VuZGlmCkBAIC05NDg1LDggKzkyNDAsOCBAQAogICogc3VmZmljaWVudGx5IHBlcnZhc2l2ZSB0aGF0IGl0J3Mgbm90IHdvcnRoIHRoZSBsb3NzIG9mIHJlYWRhYmlsaXR5LgogICovCiBzdHJ1Y3QgY29uc3RkZWYgewotICAgIGNoYXIgKm5hbWU7Ci0gICAgbG9uZyB2YWx1ZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIGludCB2YWx1ZTsKIH07CiAKIHN0YXRpYyBpbnQKQEAgLTk0OTQsNyArOTI0OSwxMCBAQAogICAgICAgICAgICAgICBzaXplX3QgdGFibGVzaXplKQogewogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewotICAgICAgICAqdmFsdWVwID0gUHlMb25nX0FTX0xPTkcoYXJnKTsKKyAgICAgICAgaW50IHZhbHVlID0gX1B5TG9uZ19Bc0ludChhcmcpOworICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqdmFsdWVwID0gdmFsdWU7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTEwNDU1LDcgKzEwMjEzLDcgQEAKIAogc3RhdGljIGludAogc2V0dXBfY29uZm5hbWVfdGFibGUoc3RydWN0IGNvbnN0ZGVmICp0YWJsZSwgc2l6ZV90IHRhYmxlc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnRhYmxlbmFtZSwgUHlPYmplY3QgKm1vZHVsZSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRhYmxlbmFtZSwgUHlPYmplY3QgKm1vZHVsZSkKIHsKICAgICBQeU9iamVjdCAqZCA9IE5VTEw7CiAgICAgc2l6ZV90IGk7CkBAIC0xMDUyNiwzMSArMTAyODQsOCBAQAogfQogCiAjaWZkZWYgTVNfV0lORE9XUwotLyogQUMgMy41OiBjaGFuZ2UgdG8gcGF0aF90PyBidXQgdGhhdCBtaWdodCBjaGFuZ2UgZXhjZXB0aW9ucyAqLwotUHlEb2NfU1RSVkFSKHdpbjMyX3N0YXJ0ZmlsZV9fZG9jX18sCi0ic3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pXG5cCi1cblwKLVN0YXJ0IGEgZmlsZSB3aXRoIGl0cyBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uLlxuXAotXG5cCi1XaGVuIFwib3BlcmF0aW9uXCIgaXMgbm90IHNwZWNpZmllZCBvciBcIm9wZW5cIiwgdGhpcyBhY3RzIGxpa2VcblwKLWRvdWJsZS1jbGlja2luZyB0aGUgZmlsZSBpbiBFeHBsb3Jlciwgb3IgZ2l2aW5nIHRoZSBmaWxlIG5hbWUgYXMgYW5cblwKLWFyZ3VtZW50IHRvIHRoZSBET1MgXCJzdGFydFwiIGNvbW1hbmQ6IHRoZSBmaWxlIGlzIG9wZW5lZCB3aXRoIHdoYXRldmVyXG5cCi1hcHBsaWNhdGlvbiAoaWYgYW55KSBpdHMgZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQuXG5cCi1XaGVuIGFub3RoZXIgXCJvcGVyYXRpb25cIiBpcyBnaXZlbiwgaXQgc3BlY2lmaWVzIHdoYXQgc2hvdWxkIGJlIGRvbmUgd2l0aFxuXAotdGhlIGZpbGUuICBBIHR5cGljYWwgb3BlcmF0aW9uIGlzIFwicHJpbnRcIi5cblwKLVxuXAotc3RhcnRmaWxlIHJldHVybnMgYXMgc29vbiBhcyB0aGUgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbiBpcyBsYXVuY2hlZC5cblwKLVRoZXJlIGlzIG5vIG9wdGlvbiB0byB3YWl0IGZvciB0aGUgYXBwbGljYXRpb24gdG8gY2xvc2UsIGFuZCBubyB3YXlcblwKLXRvIHJldHJpZXZlIHRoZSBhcHBsaWNhdGlvbidzIGV4aXQgc3RhdHVzLlxuXAotXG5cCi1UaGUgZmlsZXBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgSWYgeW91IHdhbnQgdG8gdXNlXG5cCi1hbiBhYnNvbHV0ZSBwYXRoLCBtYWtlIHN1cmUgdGhlIGZpcnN0IGNoYXJhY3RlciBpcyBub3QgYSBzbGFzaCAoXCIvXCIpO1xuXAotdGhlIHVuZGVybHlpbmcgV2luMzIgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayBpZiBpdCBpcy4iKTsKLQogLyogR3JhYiBTaGVsbEV4ZWN1dGUgZHluYW1pY2FsbHkgZnJvbSBzaGVsbDMyICovCiBzdGF0aWMgaW50IGhhc19TaGVsbEV4ZWN1dGUgPSAtMTsKLXN0YXRpYyBISU5TVEFOQ0UgKENBTExCQUNLICpQeV9TaGVsbEV4ZWN1dGVBKShIV05ELCBMUENTVFIsIExQQ1NUUiwgTFBDU1RSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1NUUiwgSU5UKTsKIHN0YXRpYyBISU5TVEFOQ0UgKENBTExCQUNLICpQeV9TaGVsbEV4ZWN1dGVXKShIV05ELCBMUENXU1RSLCBMUENXU1RSLCBMUENXU1RSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1dTVFIsIElOVCk7CiBzdGF0aWMgaW50CkBAIC0xMDU2NCwxMiArMTAyOTksOSBAQAogICAgICAgICBoU2hlbGwzMiA9IExvYWRMaWJyYXJ5VyhMIlNIRUxMMzIiKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgaWYgKGhTaGVsbDMyKSB7Ci0gICAgICAgICAgICAqKEZBUlBST0MqKSZQeV9TaGVsbEV4ZWN1dGVBID0gR2V0UHJvY0FkZHJlc3MoaFNoZWxsMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGVsbEV4ZWN1dGVBIik7CiAgICAgICAgICAgICAqKEZBUlBST0MqKSZQeV9TaGVsbEV4ZWN1dGVXID0gR2V0UHJvY0FkZHJlc3MoaFNoZWxsMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGVsbEV4ZWN1dGVXIik7Ci0gICAgICAgICAgICBoYXNfU2hlbGxFeGVjdXRlID0gUHlfU2hlbGxFeGVjdXRlQSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NoZWxsRXhlY3V0ZVc7CisgICAgICAgICAgICBoYXNfU2hlbGxFeGVjdXRlID0gUHlfU2hlbGxFeGVjdXRlVyAhPSBOVUxMOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IDA7CiAgICAgICAgIH0KQEAgLTEwNTc4LDE2ICsxMDMxMCwzNiBAQAogfQogCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9zdGFydGZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpvZmlsZXBhdGg7Ci0gICAgY2hhciAqZmlsZXBhdGg7Ci0gICAgY2hhciAqb3BlcmF0aW9uID0gTlVMTDsKLSAgICB3Y2hhcl90ICp3cGF0aCwgKndvcGVyYXRpb247Ci0gICAgSElOU1RBTkNFIHJjOworLypbY2xpbmljIGlucHV0XQorb3Muc3RhcnRmaWxlCisgICAgZmlsZXBhdGg6IHBhdGhfdAorICAgIG9wZXJhdGlvbjogUHlfVU5JQ09ERSA9IE5VTEwKIAotICAgIFB5T2JqZWN0ICp1bmlwYXRoLCAqdW9wZXJhdGlvbiA9IE5VTEw7CitzdGFydGZpbGUoZmlsZXBhdGggWywgb3BlcmF0aW9uXSkKKworU3RhcnQgYSBmaWxlIHdpdGggaXRzIGFzc29jaWF0ZWQgYXBwbGljYXRpb24uCisKK1doZW4gIm9wZXJhdGlvbiIgaXMgbm90IHNwZWNpZmllZCBvciAib3BlbiIsIHRoaXMgYWN0cyBsaWtlCitkb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuCithcmd1bWVudCB0byB0aGUgRE9TICJzdGFydCIgY29tbWFuZDogdGhlIGZpbGUgaXMgb3BlbmVkIHdpdGggd2hhdGV2ZXIKK2FwcGxpY2F0aW9uIChpZiBhbnkpIGl0cyBleHRlbnNpb24gaXMgYXNzb2NpYXRlZC4KK1doZW4gYW5vdGhlciAib3BlcmF0aW9uIiBpcyBnaXZlbiwgaXQgc3BlY2lmaWVzIHdoYXQgc2hvdWxkIGJlIGRvbmUgd2l0aAordGhlIGZpbGUuICBBIHR5cGljYWwgb3BlcmF0aW9uIGlzICJwcmludCIuCisKK3N0YXJ0ZmlsZSByZXR1cm5zIGFzIHNvb24gYXMgdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQuCitUaGVyZSBpcyBubyBvcHRpb24gdG8gd2FpdCBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIGNsb3NlLCBhbmQgbm8gd2F5Cit0byByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb24ncyBleGl0IHN0YXR1cy4KKworVGhlIGZpbGVwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIElmIHlvdSB3YW50IHRvIHVzZQorYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKCIvIik7Cit0aGUgdW5kZXJseWluZyBXaW4zMiBTaGVsbEV4ZWN1dGUgZnVuY3Rpb24gZG9lc24ndCB3b3JrIGlmIGl0IGlzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhcnRmaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpmaWxlcGF0aCwgUHlfVU5JQ09ERSAqb3BlcmF0aW9uKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkxMmNlYmE3OWFjZmExYzkgaW5wdXQ9NjM5NTBiZjI5ODYzODBkMF0qLworeworICAgIEhJTlNUQU5DRSByYzsKIAogICAgIGlmKCFjaGVja19TaGVsbEV4ZWN1dGUoKSkgewogICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIFNoZWxsRXhlY3V0ZSwgcmV0dXJuIGEKQEAgLTEwNTk2LDY4ICsxMDM0OCwxNiBAQAogICAgICAgICAgICAgInN0YXJ0ZmlsZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iKTsKICAgICB9CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8czpzdGFydGZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdW5pcGF0aCwgJm9wZXJhdGlvbikpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZ290byBub3JtYWw7Ci0gICAgfQotCi0gICAgaWYgKG9wZXJhdGlvbikgewotICAgICAgICB1b3BlcmF0aW9uID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKG9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4ob3BlcmF0aW9uKSwgTlVMTCk7Ci0gICAgICAgIGlmICghdW9wZXJhdGlvbikgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIG9wZXJhdGlvbiA9IE5VTEw7Ci0gICAgICAgICAgICBnb3RvIG5vcm1hbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmlwYXRoKTsKLSAgICBpZiAod3BhdGggPT0gTlVMTCkKLSAgICAgICAgZ290byBub3JtYWw7Ci0gICAgaWYgKHVvcGVyYXRpb24pIHsKLSAgICAgICAgd29wZXJhdGlvbiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW9wZXJhdGlvbik7Ci0gICAgICAgIGlmICh3b3BlcmF0aW9uID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIG5vcm1hbDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICB3b3BlcmF0aW9uID0gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFB5X1NoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgd29wZXJhdGlvbiwgd3BhdGgsCisgICAgcmMgPSBQeV9TaGVsbEV4ZWN1dGVXKChIV05EKTAsIG9wZXJhdGlvbiwgZmlsZXBhdGgtPndpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBQeV9YREVDUkVGKHVvcGVyYXRpb24pOwogICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7Ci0gICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgic3RhcnRmaWxlIiwgdW5pcGF0aCk7CisgICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgic3RhcnRmaWxlIiwgZmlsZXBhdGgtPm9iamVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0KLW5vcm1hbDoKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mfHM6c3RhcnRmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb2ZpbGVwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BlcmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpIHsKLSAgICAgICAgUHlfREVDUkVGKG9maWxlcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBmaWxlcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob2ZpbGVwYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBQeV9TaGVsbEV4ZWN1dGVBKChIV05EKTAsIG9wZXJhdGlvbiwgZmlsZXBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJjIDw9IChISU5TVEFOQ0UpMzIpIHsKLSAgICAgICAgUHlPYmplY3QgKmVycnZhbCA9IHdpbjMyX2Vycm9yKCJzdGFydGZpbGUiLCBmaWxlcGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmlsZXBhdGgpOwotICAgICAgICByZXR1cm4gZXJydmFsOwotICAgIH0KLSAgICBQeV9ERUNSRUYob2ZpbGVwYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCkBAIC0xMDgyNSw3ICsxMDUyNSw3IEBACiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKICAgICAgICAgdm9pZCAqcHRyOwogICAgICAgICBzc2l6ZV90IHJlc3VsdDsKLSAgICAgICAgc3RhdGljIFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7MTI4LCBYQVRUUl9TSVpFX01BWCwgMH07CisgICAgICAgIHN0YXRpYyBjb25zdCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0gezEyOCwgWEFUVFJfU0laRV9NQVgsIDB9OwogICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemVzW2ldOwogICAgICAgICBpZiAoIWJ1ZmZlcl9zaXplKSB7CiAgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwpAQCAtMTA5ODksOSArMTA2ODksOSBAQAogICAgIG5hbWUgPSBwYXRoLT5uYXJyb3cgPyBwYXRoLT5uYXJyb3cgOiAiLiI7CiAKICAgICBmb3IgKGkgPSAwOyA7IGkrKykgewotICAgICAgICBjaGFyICpzdGFydCwgKnRyYWNlLCAqZW5kOworICAgICAgICBjb25zdCBjaGFyICpzdGFydCwgKnRyYWNlLCAqZW5kOwogICAgICAgICBzc2l6ZV90IGxlbmd0aDsKLSAgICAgICAgc3RhdGljIFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7IDI1NiwgWEFUVFJfTElTVF9NQVgsIDAgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7IDI1NiwgWEFUVFJfTElTVF9NQVgsIDAgfTsKICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKICAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgewogICAgICAgICAgICAgLyogRVJBTkdFICovCkBAIC0xMTA4Miw4ICsxMDc4Miw3IEBACiAgICAgaWYgKGJ5dGVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CisgICAgcmVzdWx0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpKTsKICAgICBpZiAocmVzdWx0ID09IC0xKSB7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTEyMDMsMTEgKzEwOTAyLDE1IEBACiBvcy5jcHVfY291bnQKIAogUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtOyByZXR1cm4gTm9uZSBpZiBpbmRldGVybWluYWJsZS4KKworVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuCit1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoCitgYGxlbihvcy5zY2hlZF9nZXRhZmZpbml0eSgwKSlgYAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY3B1X2NvdW50X2ltcGwoUHlPYmplY3QgKm1vZHVsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZmMyOTQ2M2MzOTM2YTljIGlucHV0PWQ1NWUyZjhmMzgyM2E2MjhdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZmMyOTQ2M2MzOTM2YTljIGlucHV0PWU3YzhmNGJhNmRiYmFkZDNdKi8KIHsKICAgICBpbnQgbmNwdSA9IDA7CiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtMTEyNTEsMTEgKzEwOTU0LDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNDQ1ZTIwZTE0OWFhNWI4IGlucHV0PTg5YWMwMDhkYzlhYjZiOTVdKi8KIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJldHVybl92YWx1ZSA9IF9QeV9nZXRfaW5oZXJpdGFibGUoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC0xMTI3Nyw4ICsxMDk3NSw2IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjFiMTkxOGEyZjNjMzhjMiBpbnB1dD05Y2VhZWFkODdhMWUyNDAyXSovCiB7CiAgICAgaW50IHJlc3VsdDsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJlc3VsdCA9IF9QeV9zZXRfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlLCBOVUxMKTsKQEAgLTExMjkyLDE1ICsxMDk4OCwxNSBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLmdldF9oYW5kbGVfaW5oZXJpdGFibGUgLT4gYm9vbAotICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICBoYW5kbGU6IGludHB0cl90CiAgICAgLwogCiBHZXQgdGhlIGNsb3NlLW9uLWV4ZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgaW50Ci1vc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTllNTM4OWIwYWEwOTE2Y2UgaW5wdXQ9NWY3NzU5NDQzYWFlM2RjNV0qLworb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNmJlNWFmY2E2ZWE4NGQ4IGlucHV0PWNmZTk5ZjljMDVjNzBhZDFdKi8KIHsKICAgICBEV09SRCBmbGFnczsKIApAQCAtMTEzMTUsNyArMTEwMTEsNyBAQAogCiAvKltjbGluaWMgaW5wdXRdCiBvcy5zZXRfaGFuZGxlX2luaGVyaXRhYmxlCi0gICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGhhbmRsZTogaW50cHRyX3QKICAgICBpbmhlcml0YWJsZTogYm9vbAogICAgIC8KIApAQCAtMTEzMjMsOSArMTEwMTksOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwKK29zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaGVyaXRhYmxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIxZTY3YmZhMzIxM2Q3NDUgaW5wdXQ9ZTY0YjJiMjczMDQ2OWRlZl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAyMWQ3NGZlNmM5NmJhYTMgaW5wdXQ9N2E3NjQxMzkwZDgzNjRmY10qLwogewogICAgIERXT1JEIGZsYWdzID0gaW5oZXJpdGFibGUgPyBIQU5ETEVfRkxBR19JTkhFUklUIDogMDsKICAgICBpZiAoIVNldEhhbmRsZUluZm9ybWF0aW9uKChIQU5ETEUpaGFuZGxlLCBIQU5ETEVfRkxBR19JTkhFUklULCBmbGFncykpIHsKQEAgLTExMzUyLDkgKzExMDQ4LDYgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Z2V0X2Jsb2NraW5nIiwgJmZkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGJsb2NraW5nID0gX1B5X2dldF9ibG9ja2luZyhmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTExMzc4LDkgKzExMDcxLDYgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNldF9ibG9ja2luZyIsICZmZCwgJmJsb2NraW5nKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJlc3VsdCA9IF9QeV9zZXRfYmxvY2tpbmcoZmQsIGJsb2NraW5nKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTE0NjQsMTYgKzExMTU0LDE2IEBACiAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdDsKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB3Y2hhcl90ICpwYXRoOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7CiAKICAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5wYXRoKTsKICAgICBpZiAoIXBhdGgpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdF93KHBhdGgsICZzdCk7CisgICAgICAgIHJlc3VsdCA9IHdpbjMyX3N0YXQocGF0aCwgJnN0KTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX2xzdGF0X3cocGF0aCwgJnN0KTsKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXQocGF0aCwgJnN0KTsKIAogICAgIGlmIChyZXN1bHQgIT0gMCkgewogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKQEAgLTExNDgxLDcgKzExMTcxLDcgQEAKICAgICB9CiAjZWxzZSAvKiBQT1NJWCAqLwogICAgIFB5T2JqZWN0ICpieXRlczsKLSAgICBjaGFyICpwYXRoOworICAgIGNvbnN0IGNoYXIgKnBhdGg7CiAKICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihzZWxmLT5wYXRoLCAmYnl0ZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNjY1LDE0ICsxMTM1NSwxNCBAQAogewogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoIXNlbGYtPmdvdF9maWxlX2luZGV4KSB7Ci0gICAgICAgIHdjaGFyX3QgKnBhdGg7CisgICAgICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7CiAgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdDsKIAogICAgICAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5wYXRoKTsKICAgICAgICAgaWYgKCFwYXRoKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKHdpbjMyX2xzdGF0X3cocGF0aCwgJnN0YXQpICE9IDApIHsKKyAgICAgICAgaWYgKHdpbjMyX2xzdGF0KHBhdGgsICZzdGF0KSAhPSAwKSB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKICAgICAgICAgfQpAQCAtMTE2ODAsMTAgKzExMzcwLDEwIEBACiAgICAgICAgIHNlbGYtPndpbjMyX2ZpbGVfaW5kZXggPSBzdGF0LnN0X2lubzsKICAgICAgICAgc2VsZi0+Z290X2ZpbGVfaW5kZXggPSAxOwogICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXNlbGYtPndpbjMyX2ZpbGVfaW5kZXgpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpc2VsZi0+d2luMzJfZmlsZV9pbmRleCk7CiAjZWxzZSAvKiBQT1NJWCAqLwogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXNlbGYtPmRfaW5vKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXNlbGYtPmRfaW5vKTsKICNlbHNlCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylzZWxmLT5kX2lubyk7CiAjZW5kaWYKQEAgLTExNjk2LDYgKzExMzg2LDEzIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RGlyRW50cnkgJVI+Iiwgc2VsZi0+bmFtZSk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9mc3BhdGgoRGlyRW50cnkgKnNlbGYpCit7CisgICAgUHlfSU5DUkVGKHNlbGYtPnBhdGgpOworICAgIHJldHVybiBzZWxmLT5wYXRoOworfQorCiBzdGF0aWMgUHlNZW1iZXJEZWYgRGlyRW50cnlfbWVtYmVyc1tdID0gewogICAgIHsibmFtZSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihEaXJFbnRyeSwgbmFtZSksIFJFQURPTkxZLAogICAgICAidGhlIGVudHJ5J3MgYmFzZSBmaWxlbmFtZSwgcmVsYXRpdmUgdG8gc2NhbmRpcigpIFwicGF0aFwiIGFyZ3VtZW50In0sCkBAIC0xMTcyMCw2ICsxMTQxNyw5IEBACiAgICAgeyJpbm9kZSIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9pbm9kZSwgTUVUSF9OT0FSR1MsCiAgICAgICJyZXR1cm4gaW5vZGUgb2YgdGhlIGVudHJ5OyBjYWNoZWQgcGVyIGVudHJ5IiwKICAgICB9LAorICAgIHsiX19mc3BhdGhfXyIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9mc3BhdGgsIE1FVEhfTk9BUkdTLAorICAgICAicmV0dXJucyB0aGUgcGF0aCBmb3IgdGhlIGVudHJ5IiwKKyAgICB9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMTE3NTksNyArMTE0NTksNyBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogc3RhdGljIHdjaGFyX3QgKgotam9pbl9wYXRoX2ZpbGVuYW1lVyh3Y2hhcl90ICpwYXRoX3dpZGUsIHdjaGFyX3QqIGZpbGVuYW1lKQoram9pbl9wYXRoX2ZpbGVuYW1lVyhjb25zdCB3Y2hhcl90ICpwYXRoX3dpZGUsIGNvbnN0IHdjaGFyX3QgKmZpbGVuYW1lKQogewogICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CiAgICAgUHlfc3NpemVfdCBzaXplOwpAQCAtMTE4MTEsNiArMTE1MTEsMTEgQEAKICAgICBlbnRyeS0+bmFtZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZGF0YVctPmNGaWxlTmFtZSwgLTEpOwogICAgIGlmICghZW50cnktPm5hbWUpCiAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKHBhdGgtPm5hcnJvdykgeworICAgICAgICBQeV9TRVRSRUYoZW50cnktPm5hbWUsIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoZW50cnktPm5hbWUpKTsKKyAgICAgICAgaWYgKCFlbnRyeS0+bmFtZSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogCiAgICAgam9pbmVkX3BhdGggPSBqb2luX3BhdGhfZmlsZW5hbWVXKHBhdGgtPndpZGUsIGRhdGFXLT5jRmlsZU5hbWUpOwogICAgIGlmICgham9pbmVkX3BhdGgpCkBAIC0xMTgyMCw4ICsxMTUyNSwxMyBAQAogICAgIFB5TWVtX0ZyZWUoam9pbmVkX3BhdGgpOwogICAgIGlmICghZW50cnktPnBhdGgpCiAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKHBhdGgtPm5hcnJvdykgeworICAgICAgICBQeV9TRVRSRUYoZW50cnktPnBhdGgsIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoZW50cnktPnBhdGgpKTsKKyAgICAgICAgaWYgKCFlbnRyeS0+cGF0aCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogCi0gICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KGRhdGFXLCAmZmlsZV9pbmZvLCAmcmVwYXJzZV90YWcpOworICAgIGZpbmRfZGF0YV90b19maWxlX2luZm8oZGF0YVcsICZmaWxlX2luZm8sICZyZXBhcnNlX3RhZyk7CiAgICAgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmZpbGVfaW5mbywgcmVwYXJzZV90YWcsICZlbnRyeS0+d2luMzJfbHN0YXQpOwogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVudHJ5OwpAQCAtMTE4MzQsNyArMTE1NDQsNyBAQAogI2Vsc2UgLyogUE9TSVggKi8KIAogc3RhdGljIGNoYXIgKgotam9pbl9wYXRoX2ZpbGVuYW1lKGNoYXIgKnBhdGhfbmFycm93LCBjaGFyKiBmaWxlbmFtZSwgUHlfc3NpemVfdCBmaWxlbmFtZV9sZW4pCitqb2luX3BhdGhfZmlsZW5hbWUoY29uc3QgY2hhciAqcGF0aF9uYXJyb3csIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBQeV9zc2l6ZV90IGZpbGVuYW1lX2xlbikKIHsKICAgICBQeV9zc2l6ZV90IHBhdGhfbGVuOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKQEAgLTExODY2LDcgKzExNTc2LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLURpckVudHJ5X2Zyb21fcG9zaXhfaW5mbyhwYXRoX3QgKnBhdGgsIGNoYXIgKm5hbWUsIFB5X3NzaXplX3QgbmFtZV9sZW4sCitEaXJFbnRyeV9mcm9tX3Bvc2l4X2luZm8ocGF0aF90ICpwYXRoLCBjb25zdCBjaGFyICpuYW1lLCBQeV9zc2l6ZV90IG5hbWVfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlub190IGRfaW5vCiAjaWZkZWYgSEFWRV9ESVJFTlRfRF9UWVBFCiAgICAgICAgICAgICAgICAgICAgICAgICAgLCB1bnNpZ25lZCBjaGFyIGRfdHlwZQpAQCAtMTE5MjksOCArMTE2MzksMTQgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKIAorc3RhdGljIGludAorU2NhbmRpckl0ZXJhdG9yX2lzX2Nsb3NlZChTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIHJldHVybiBpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCiBzdGF0aWMgdm9pZAotU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCitTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKIHsKICAgICBIQU5ETEUgaGFuZGxlID0gaXRlcmF0b3ItPmhhbmRsZTsKIApAQCAtMTE5NTAsNyArMTE2NjYsNyBAQAogICAgIEJPT0wgc3VjY2VzczsKICAgICBQeU9iamVjdCAqZW50cnk7CiAKLSAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSAqLworICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlLCBvciBjbG9zZWQgZXhwbGljaXRseSAqLwogICAgIGlmIChpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTE5ODEsMTQgKzExNjk3LDIwIEBACiAgICAgfQogCiAgICAgLyogRXJyb3Igb3Igbm8gbW9yZSBmaWxlcyAqLwotICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZShpdGVyYXRvcik7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKGl0ZXJhdG9yKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAogI2Vsc2UgLyogUE9TSVggKi8KIAorc3RhdGljIGludAorU2NhbmRpckl0ZXJhdG9yX2lzX2Nsb3NlZChTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIHJldHVybiAhaXRlcmF0b3ItPmRpcnA7Cit9CisKIHN0YXRpYyB2b2lkCi1TY2FuZGlySXRlcmF0b3JfY2xvc2UoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQogewogICAgIERJUiAqZGlycCA9IGl0ZXJhdG9yLT5kaXJwOwogCkBAIC0xMjAxMCw3ICsxMTczMiw3IEBACiAgICAgaW50IGlzX2RvdDsKICAgICBQeU9iamVjdCAqZW50cnk7CiAKLSAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSAqLworICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlLCBvciBjbG9zZWQgZXhwbGljaXRseSAqLwogICAgIGlmICghaXRlcmF0b3ItPmRpcnApCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMjA0NywyMSArMTE3NjksNzYgQEAKICAgICB9CiAKICAgICAvKiBFcnJvciBvciBubyBtb3JlIGZpbGVzICovCi0gICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOwogICAgIHJldHVybiBOVUxMOwogfQogCiAjZW5kaWYKIAorc3RhdGljIFB5T2JqZWN0ICoKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NjYW5kaXJJdGVyYXRvcl9lbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2V4aXQoU2NhbmRpckl0ZXJhdG9yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoc2VsZik7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyB2b2lkCitTY2FuZGlySXRlcmF0b3JfZmluYWxpemUoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK3sKKyAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOworCisgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgIGlmICghU2NhbmRpckl0ZXJhdG9yX2lzX2Nsb3NlZChpdGVyYXRvcikpIHsKKyAgICAgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKGl0ZXJhdG9yKTsKKworICAgICAgICBpZiAoUHlFcnJfUmVzb3VyY2VXYXJuaW5nKChQeU9iamVjdCAqKWl0ZXJhdG9yLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmNsb3NlZCBzY2FuZGlyIGl0ZXJhdG9yICVSIiwgaXRlcmF0b3IpKSB7CisgICAgICAgICAgICAvKiBTcHVyaW91cyBlcnJvcnMgY2FuIGFwcGVhciBhdCBzaHV0ZG93biAqLworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfV2FybmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0NMRUFSKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7CisgICAgcGF0aF9jbGVhbnVwKCZpdGVyYXRvci0+cGF0aCk7CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKK30KKwogc3RhdGljIHZvaWQKIFNjYW5kaXJJdGVyYXRvcl9kZWFsbG9jKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCiB7Ci0gICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKLSAgICBQeV9YREVDUkVGKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7Ci0gICAgcGF0aF9jbGVhbnVwKCZpdGVyYXRvci0+cGF0aCk7CisgICAgaWYgKFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYygoUHlPYmplY3QgKilpdGVyYXRvcikgPCAwKQorICAgICAgICByZXR1cm47CisKICAgICBQeV9UWVBFKGl0ZXJhdG9yKS0+dHBfZnJlZSgoUHlPYmplY3QgKilpdGVyYXRvcik7CiB9CiAKK3N0YXRpYyBQeU1ldGhvZERlZiBTY2FuZGlySXRlcmF0b3JfbWV0aG9kc1tdID0geworICAgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKVNjYW5kaXJJdGVyYXRvcl9lbnRlciwgTUVUSF9OT0FSR1N9LAorICAgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pU2NhbmRpckl0ZXJhdG9yX2V4aXQsIE1FVEhfVkFSQVJHU30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilTY2FuZGlySXRlcmF0b3JfY2xvc2UsIE1FVEhfTk9BUkdTfSwKKyAgICB7TlVMTH0KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgU2NhbmRpckl0ZXJhdG9yVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICBNT0ROQU1FICIuU2NhbmRpckl0ZXJhdG9yIiwgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwpAQCAtMTIwODMsNyArMTE4NjAsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0xMjA5MSw2ICsxMTg2OSwyNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylTY2FuZGlySXRlcmF0b3JfaXRlcm5leHQsIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgU2NhbmRpckl0ZXJhdG9yX21ldGhvZHMsICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIChkZXN0cnVjdG9yKVNjYW5kaXJJdGVyYXRvcl9maW5hbGl6ZSwgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyMTAxLDcgKzExOTAwLDcgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgd2NoYXJfdCAqcGF0aF9zdHJXOwogI2Vsc2UKLSAgICBjaGFyICpwYXRoOworICAgIGNvbnN0IGNoYXIgKnBhdGg7CiAjZW5kaWYKIAogICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfTmV3KFNjYW5kaXJJdGVyYXRvciwgJlNjYW5kaXJJdGVyYXRvclR5cGUpOwpAQCAtMTIxMjgsMTEgKzExOTI3LDYgQEAKICAgICBQeV9YSU5DUkVGKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKGl0ZXJhdG9yLT5wYXRoLm5hcnJvdykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm9zLnNjYW5kaXIoKSBkb2Vzbid0IHN1cHBvcnQgYnl0ZXMgcGF0aCBvbiBXaW5kb3dzLCB1c2UgVW5pY29kZSBpbnN0ZWFkIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQogICAgIGl0ZXJhdG9yLT5maXJzdF90aW1lID0gMTsKIAogICAgIHBhdGhfc3RyVyA9IGpvaW5fcGF0aF9maWxlbmFtZVcoaXRlcmF0b3ItPnBhdGgud2lkZSwgTCIqLioiKTsKQEAgLTEyMTczLDYgKzExOTY3LDEyNCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKgorICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgorCisgICAgSWYgdGhlIG9iamVjdCBpcyBzdHIgb3IgYnl0ZXMsIHRoZW4gYWxsb3cgaXQgdG8gcGFzcyB0aHJvdWdoIHdpdGgKKyAgICBhbiBpbmNyZW1lbnRlZCByZWZjb3VudC4gSWYgdGhlIG9iamVjdCBkZWZpbmVzIF9fZnNwYXRoX18oKSwgdGhlbgorICAgIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXIgdHlwZXMgcmFpc2UgYSBUeXBlRXJyb3IuCisqLworUHlPYmplY3QgKgorUHlPU19GU1BhdGgoUHlPYmplY3QgKnBhdGgpCit7CisgICAgLyogRm9yIGVycm9yIG1lc3NhZ2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBpcyBtYW51YWxseSBpbmxpbmVkIGluCisgICAgICAgcGF0aF9jb252ZXJ0ZXIoKS4gKi8KKyAgICBfUHlfSURFTlRJRklFUihfX2ZzcGF0aF9fKTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGhfcmVwciA9IE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHBhdGgpIHx8IFB5Qnl0ZXNfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgUHlfSU5DUkVGKHBhdGgpOworICAgICAgICByZXR1cm4gcGF0aDsKKyAgICB9CisKKyAgICBmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwocGF0aCwgJlB5SWRfX19mc3BhdGhfXyk7CisgICAgaWYgKE5VTEwgPT0gZnVuYykgeworICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgc3RyLCBieXRlcyBvciBvcy5QYXRoTGlrZSBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShwYXRoKS0+dHBfbmFtZSk7CisgICAgfQorCisgICAgcGF0aF9yZXByID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmdW5jLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgaWYgKE5VTEwgPT0gcGF0aF9yZXByKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghKFB5VW5pY29kZV9DaGVjayhwYXRoX3JlcHIpIHx8IFB5Qnl0ZXNfQ2hlY2socGF0aF9yZXByKSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlLjIwMHMuX19mc3BhdGhfXygpIHRvIHJldHVybiBzdHIgb3IgYnl0ZXMsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwgUHlfVFlQRShwYXRoKS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocGF0aF9yZXByKS0+dHBfbmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoX3JlcHIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcGF0aF9yZXByOworfQorCisvKltjbGluaWMgaW5wdXRdCitvcy5mc3BhdGgKKworICAgIHBhdGg6IG9iamVjdAorCitSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4KKworSWYgdGhlIG9iamVjdCBpcyBzdHIgb3IgYnl0ZXMsIHRoZW4gYWxsb3cgaXQgdG8gcGFzcyB0aHJvdWdoIGFzLWlzLiBJZiB0aGUKK29iamVjdCBkZWZpbmVzIF9fZnNwYXRoX18oKSwgdGhlbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGF0IG1ldGhvZC4gQWxsIG90aGVyCit0eXBlcyByYWlzZSBhIFR5cGVFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzcGF0aF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMzYzNiNzhlY2ZmMjkxNGYgaW5wdXQ9ZTM1NzE2NWY3YjIyNDkwZl0qLworeworICAgIHJldHVybiBQeU9TX0ZTUGF0aChwYXRoKTsKK30KKworI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHJhbmRvbQorCisgICAgc2l6ZTogUHlfc3NpemVfdAorICAgIGZsYWdzOiBpbnQ9MAorCitPYnRhaW4gYSBzZXJpZXMgb2YgcmFuZG9tIGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmFuZG9tX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfc3NpemVfdCBzaXplLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjNhNjE4MTk2YTYxNDA5YyBpbnB1dD01OWJhZmFjMzljNTk0OTQ3XSovCit7CisgICAgY2hhciAqYnVmZmVyOworICAgIFB5X3NzaXplX3QgbjsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYyhzaXplKTsKKyAgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgYnVmZmVyLCBzaXplLCBmbGFncyk7CisgICAgICAgIGlmIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUikgeworICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKG4gPCAwKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmZmVyLCBuKTsKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisKKyAgICByZXR1cm4gYnl0ZXM7Cit9CisjZW5kaWYgICAvKiBIQVZFX0dFVFJBTkRPTV9TWVNDQUxMICovCiAKICNpbmNsdWRlICJjbGluaWMvcG9zaXhtb2R1bGUuYy5oIgogCkBAIC0xMjI2NCw3ICsxMjE3Niw3IEBACiAgICAgT1NfS0lMTFBHX01FVEhPRERFRgogICAgIE9TX1BMT0NLX01FVEhPRERFRgogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB7InN0YXJ0ZmlsZSIsICAgICAgIHdpbjMyX3N0YXJ0ZmlsZSwgTUVUSF9WQVJBUkdTLCB3aW4zMl9zdGFydGZpbGVfX2RvY19ffSwKKyAgICBPU19TVEFSVEZJTEVfTUVUSE9EREVGCiAjZW5kaWYKICAgICBPU19TRVRVSURfTUVUSE9EREVGCiAgICAgT1NfU0VURVVJRF9NRVRIT0RERUYKQEAgLTEyMzczLDYgKzEyMjg1LDggQEAKICAgICB7InNjYW5kaXIiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zY2FuZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3NjYW5kaXJfX2RvY19ffSwKKyAgICBPU19GU1BBVEhfTUVUSE9EREVGCisgICAgT1NfR0VUUkFORE9NX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMTIzODQsNyArMTIyOTgsNiBAQAogICAgIEhBTkRMRSB0b2s7CiAgICAgVE9LRU5fUFJJVklMRUdFUyB0b2tfcHJpdjsKICAgICBMVUlEIGx1aWQ7Ci0gICAgaW50IG1ldGhfaWR4ID0gMDsKIAogICAgIGlmICghT3BlblByb2Nlc3NUb2tlbihHZXRDdXJyZW50UHJvY2VzcygpLCBUT0tFTl9BTExfQUNDRVNTLCAmdG9rKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjQ4NywxMiArMTI0MDAsMTQgQEAKICNpZmRlZiBPX0xBUkdFRklMRQogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0xBUkdFRklMRSkpIHJldHVybiAtMTsKICNlbmRpZgorI2lmbmRlZiBfX0dOVV9fCiAjaWZkZWYgT19TSExPQ0sKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19TSExPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX0VYTE9DSwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0VYTE9DSykpIHJldHVybiAtMTsKICNlbmRpZgorI2VuZGlmCiAjaWZkZWYgT19FWEVDCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fRVhFQykpIHJldHVybiAtMTsKICNlbmRpZgpAQCAtMTI3OTUsMjggKzEyNzEwLDMzIEBACiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFhBVFRSX1NJWkVfTUFYKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKLSNpZmRlZiBSVExEX0xBWlkKKyNpZiBIQVZFX0RFQ0xfUlRMRF9MQVpZCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTEFaWSkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfTk9XCisjaWYgSEFWRV9ERUNMX1JUTERfTk9XCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTk9XKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9HTE9CQUwKKyNpZiBIQVZFX0RFQ0xfUlRMRF9HTE9CQUwKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9HTE9CQUwpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX0xPQ0FMCisjaWYgSEFWRV9ERUNMX1JUTERfTE9DQUwKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9MT0NBTCkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfTk9ERUxFVEUKKyNpZiBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURQogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX05PREVMRVRFKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9OT0xPQUQKKyNpZiBIQVZFX0RFQ0xfUlRMRF9OT0xPQUQKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9OT0xPQUQpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX0RFRVBCSU5ECisjaWYgSEFWRV9ERUNMX1JUTERfREVFUEJJTkQKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9ERUVQQklORCkpIHJldHVybiAtMTsKICNlbmRpZgogCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBHUk5EX1JBTkRPTSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgR1JORF9OT05CTE9DSykpIHJldHVybiAtMTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEyODM0LDcgKzEyNzU0LDcgQEAKIH07CiAKIAotc3RhdGljIGNoYXIgKmhhdmVfZnVuY3Rpb25zW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhhdmVfZnVuY3Rpb25zW10gPSB7CiAKICNpZmRlZiBIQVZFX0ZBQ0NFU1NBVAogICAgICJIQVZFX0ZBQ0NFU1NBVCIsCkBAIC0xMjk2OSw3ICsxMjg4OSw3IEBACiB7CiAgICAgUHlPYmplY3QgKm0sICp2OwogICAgIFB5T2JqZWN0ICpsaXN0OwotICAgIGNoYXIgKip0cmFjZTsKKyAgICBjb25zdCBjaGFyICogY29uc3QgKnRyYWNlOwogCiAjaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKICAgICB3aW4zMl9jYW5fc3ltbGluayA9IGVuYWJsZV9zeW1saW5rKCk7CkBAIC0xMzE0NSw2ICsxMzA2NSw5IEBACiAgICAgfQogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2hhdmVfZnVuY3Rpb25zIiwgbGlzdCk7CiAKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopICZEaXJFbnRyeVR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRGlyRW50cnkiLCAoUHlPYmplY3QgKikmRGlyRW50cnlUeXBlKTsKKwogICAgIGluaXRpYWxpemVkID0gMTsKIAogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wd2Rtb2R1bGUuYyBiL01vZHVsZXMvcHdkbW9kdWxlLmMKaW5kZXggNzQxNmNmNy4uNzg0ZTlkMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wd2Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCkBAIC03NSwxMCArNzUsMTggQEAKICNkZWZpbmUgU0VUUyhpLHZhbCkgc2V0cyh2LCBpLCB2YWwpCiAKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X25hbWUpOworI2lmIGRlZmluZWQoSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX1BBU1NXRCkgJiYgIWRlZmluZWQoX19BTkRST0lEX18pCiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19wYXNzd2QpOworI2Vsc2UKKyAgICBTRVRTKHNldEluZGV4KyssICIiKTsKKyNlbmRpZgogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgc2V0SW5kZXgrKywgX1B5TG9uZ19Gcm9tVWlkKHAtPnB3X3VpZCkpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgc2V0SW5kZXgrKywgX1B5TG9uZ19Gcm9tR2lkKHAtPnB3X2dpZCkpOworI2lmIGRlZmluZWQoSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX0dFQ09TKQogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfZ2Vjb3MpOworI2Vsc2UKKyAgICBTRVRTKHNldEluZGV4KyssICIiKTsKKyNlbmRpZgogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfZGlyKTsKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X3NoZWxsKTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weWV4cGF0LmMgYi9Nb2R1bGVzL3B5ZXhwYXQuYwppbmRleCBlYjMyMmMyLi5iMTliN2JlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5ZXhwYXQuYworKysgYi9Nb2R1bGVzL3B5ZXhwYXQuYwpAQCAtOTEsNyArOTEsNyBAQAogICogZmFsc2Ugb24gYW4gZXhjZXB0aW9uLgogICovCiBzdGF0aWMgaW50Ci1zZXRfZXJyb3JfYXR0cihQeU9iamVjdCAqZXJyLCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCitzZXRfZXJyb3JfYXR0cihQeU9iamVjdCAqZXJyLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnYgPSBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOwogCkBAIC0yMTgsNyArMjE4LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotY2FsbF93aXRoX2ZyYW1lKGNoYXIgKmZ1bmNuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCogZnVuYywgUHlPYmplY3QqIGFyZ3MsCitjYWxsX3dpdGhfZnJhbWUoY29uc3QgY2hhciAqZnVuY25hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0KiBmdW5jLCBQeU9iamVjdCogYXJncywKICAgICAgICAgICAgICAgICB4bWxwYXJzZW9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqcmVzOwpAQCAtNzQ3LDcgKzc0Nyw4IEBACiAgICAgICAgIHMgKz0gTUFYX0NIVU5LX1NJWkU7CiAgICAgICAgIHNsZW4gLT0gTUFYX0NIVU5LX1NJWkU7CiAgICAgfQotICAgIGFzc2VydChNQVhfQ0hVTktfU0laRSA8IElOVF9NQVggJiYgc2xlbiA8IElOVF9NQVgpOworICAgIFB5X0JVSUxEX0FTU0VSVChNQVhfQ0hVTktfU0laRSA8PSBJTlRfTUFYKTsKKyAgICBhc3NlcnQoc2xlbiA8PSBJTlRfTUFYKTsKICAgICByYyA9IFhNTF9QYXJzZShzZWxmLT5pdHNlbGYsIHMsIChpbnQpc2xlbiwgaXNmaW5hbCk7CiAKIGRvbmU6CkBAIC03NjUsNyArNzY2LDcgQEAKIHsKICAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3QgbGVuOwotICAgIGNoYXIgKnB0cjsKKyAgICBjb25zdCBjaGFyICpwdHI7CiAKICAgICBzdHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24obWV0aCwgIm4iLCBidWZfc2l6ZSk7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQpAQCAtMTIyNSwxMiArMTIyNiw4IEBACiAgICAgc2VsZi0+aXRzZWxmID0gTlVMTDsKIAogICAgIGlmIChzZWxmLT5oYW5kbGVycyAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wOwotICAgICAgICBmb3IgKGkgPSAwOyBoYW5kbGVyX2luZm9baV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKLSAgICAgICAgICAgIHRlbXAgPSBzZWxmLT5oYW5kbGVyc1tpXTsKLSAgICAgICAgICAgIHNlbGYtPmhhbmRsZXJzW2ldID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKQorICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlcnNbaV0pOwogICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmhhbmRsZXJzKTsKICAgICAgICAgc2VsZi0+aGFuZGxlcnMgPSBOVUxMOwogICAgIH0KQEAgLTEzNDQsNyArMTM0MSw2IEBACiAgICAgaW50IGhhbmRsZXJudW0gPSBoYW5kbGVybmFtZTJpbnQobmFtZSk7CiAgICAgaWYgKGhhbmRsZXJudW0gPj0gMCkgewogICAgICAgICB4bWxoYW5kbGVyIGNfaGFuZGxlciA9IE5VTEw7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaGFuZGxlcm51bV07CiAKICAgICAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgLyogSWYgdGhpcyBpcyB0aGUgY2hhcmFjdGVyIGRhdGEgaGFuZGxlciwgYW5kIGEgY2hhcmFjdGVyCkBAIC0xMzY2LDggKzEzNjIsNyBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKHYpOwogICAgICAgICAgICAgY19oYW5kbGVyID0gaGFuZGxlcl9pbmZvW2hhbmRsZXJudW1dLmhhbmRsZXI7CiAgICAgICAgIH0KLSAgICAgICAgc2VsZi0+aGFuZGxlcnNbaGFuZGxlcm51bV0gPSB2OwotICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICBQeV9YU0VUUkVGKHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dLCB2KTsKICAgICAgICAgaGFuZGxlcl9pbmZvW2hhbmRsZXJudW1dLnNldHRlcihzZWxmLT5pdHNlbGYsIGNfaGFuZGxlcik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTE3MDYsNyArMTcwMSwxNSBAQAogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJuYXRpdmVfZW5jb2RpbmciLCAiVVRGLTgiKTsKIAogICAgIHN5c19tb2R1bGVzID0gUHlTeXNfR2V0T2JqZWN0KCJtb2R1bGVzIik7CisgICAgaWYgKHN5c19tb2R1bGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CisgICAgaWYgKGQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBlcnJvcnNfbW9kdWxlID0gUHlEaWN0X0dldEl0ZW0oZCwgZXJybW9kX25hbWUpOwogICAgIGlmIChlcnJvcnNfbW9kdWxlID09IE5VTEwpIHsKICAgICAgICAgZXJyb3JzX21vZHVsZSA9IFB5TW9kdWxlX05ldyhNT0RVTEVfTkFNRSAiLmVycm9ycyIpOwpAQCAtMTcyNyw5ICsxNzMwLDExIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgUHlfREVDUkVGKG1vZGVsbW9kX25hbWUpOwotICAgIGlmIChlcnJvcnNfbW9kdWxlID09IE5VTEwgfHwgbW9kZWxfbW9kdWxlID09IE5VTEwpCisgICAgaWYgKGVycm9yc19tb2R1bGUgPT0gTlVMTCB8fCBtb2RlbF9tb2R1bGUgPT0gTlVMTCkgewogICAgICAgICAvKiBEb24ndCBjb3JlIGR1bXAgbGF0ZXIhICovCisgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPiAxOTUwNQogICAgIHsKQEAgLTE4OTcsMTUgKzE5MDIsMTIgQEAKIGNsZWFyX2hhbmRsZXJzKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgaW5pdGlhbCkKIHsKICAgICBpbnQgaSA9IDA7Ci0gICAgUHlPYmplY3QgKnRlbXA7CiAKICAgICBmb3IgKDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7CiAgICAgICAgIGlmIChpbml0aWFsKQogICAgICAgICAgICAgc2VsZi0+aGFuZGxlcnNbaV0gPSBOVUxMOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRlbXAgPSBzZWxmLT5oYW5kbGVyc1tpXTsKLSAgICAgICAgICAgIHNlbGYtPmhhbmRsZXJzW2ldID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVyc1tpXSk7CiAgICAgICAgICAgICBoYW5kbGVyX2luZm9baV0uc2V0dGVyKHNlbGYtPml0c2VsZiwgTlVMTCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3JlYWRsaW5lLmMgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKaW5kZXggNTRmMTViYy4uM2I5NGQ0YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9yZWFkbGluZS5jCisrKyBiL01vZHVsZXMvcmVhZGxpbmUuYwpAQCAtMzQzLDEwICszNDMsOCBAQAogICAgICAgICBQeV9DTEVBUigqaG9va192YXIpOwogICAgIH0KICAgICBlbHNlIGlmIChQeUNhbGxhYmxlX0NoZWNrKGZ1bmN0aW9uKSkgewotICAgICAgICBQeU9iamVjdCAqdG1wID0gKmhvb2tfdmFyOwogICAgICAgICBQeV9JTkNSRUYoZnVuY3Rpb24pOwotICAgICAgICAqaG9va192YXIgPSBmdW5jdGlvbjsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICBQeV9YU0VUUkVGKCpob29rX3ZhciwgZnVuY3Rpb24pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTYwNCw2ICs2MDIsMjQgQEAKICJhZGRfaGlzdG9yeShzdHJpbmcpIC0+IE5vbmVcblwKIGFkZCBhbiBpdGVtIHRvIHRoZSBoaXN0b3J5IGJ1ZmZlciIpOwogCitzdGF0aWMgaW50IHNob3VsZF9hdXRvX2FkZF9oaXN0b3J5ID0gMTsKKworLyogRW5hYmxlIG9yIGRpc2FibGUgYXV0b21hdGljIGhpc3RvcnkgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NldF9hdXRvX2hpc3RvcnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicDpzZXRfYXV0b19oaXN0b3J5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnNob3VsZF9hdXRvX2FkZF9oaXN0b3J5KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihkb2Nfc2V0X2F1dG9faGlzdG9yeSwKKyJzZXRfYXV0b19oaXN0b3J5KGVuYWJsZWQpIC0+IE5vbmVcblwKK0VuYWJsZXMgb3IgZGlzYWJsZXMgYXV0b21hdGljIGhpc3RvcnkuIik7CisKIAogLyogR2V0IHRoZSB0YWItY29tcGxldGlvbiB3b3JkLWRlbGltaXRlcnMgdGhhdCByZWFkbGluZSB1c2VzICovCiAKQEAgLTgyMiw2ICs4MzgsNyBAQAogCiAgICAgeyJzZXRfY29tcGxldGVyX2RlbGltcyIsIHNldF9jb21wbGV0ZXJfZGVsaW1zLAogICAgICBNRVRIX08sIGRvY19zZXRfY29tcGxldGVyX2RlbGltc30sCisgICAgeyJzZXRfYXV0b19oaXN0b3J5IiwgcHlfc2V0X2F1dG9faGlzdG9yeSwgTUVUSF9WQVJBUkdTLCBkb2Nfc2V0X2F1dG9faGlzdG9yeX0sCiAgICAgeyJhZGRfaGlzdG9yeSIsIHB5X2FkZF9oaXN0b3J5LCBNRVRIX08sIGRvY19hZGRfaGlzdG9yeX0sCiAgICAgeyJyZW1vdmVfaGlzdG9yeV9pdGVtIiwgcHlfcmVtb3ZlX2hpc3RvcnksIE1FVEhfVkFSQVJHUywgZG9jX3JlbW92ZV9oaXN0b3J5fSwKICAgICB7InJlcGxhY2VfaGlzdG9yeV9pdGVtIiwgcHlfcmVwbGFjZV9oaXN0b3J5LCBNRVRIX1ZBUkFSR1MsIGRvY19yZXBsYWNlX2hpc3Rvcnl9LApAQCAtODU3LDcgKzg3NCw3IEBACiAgICAgICAgIGlmIChyID09IFB5X05vbmUpCiAgICAgICAgICAgICByZXN1bHQgPSAwOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Bc0xvbmcocik7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlMb25nX0FzSW50KHIpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTEzMjcsNyArMTM0NCw3IEBACiAKICAgICAvKiB3ZSBoYXZlIGEgdmFsaWQgbGluZSAqLwogICAgIG4gPSBzdHJsZW4ocCk7Ci0gICAgaWYgKG4gPiAwKSB7CisgICAgaWYgKHNob3VsZF9hdXRvX2FkZF9oaXN0b3J5ICYmIG4gPiAwKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKmxpbmU7CiAgICAgICAgIGludCBsZW5ndGggPSBfcHlfZ2V0X2hpc3RvcnlfbGVuZ3RoKCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZXNvdXJjZS5jIGIvTW9kdWxlcy9yZXNvdXJjZS5jCmluZGV4IDNhMWNmMDkuLjY3MDJiN2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVzb3VyY2UuYworKysgYi9Nb2R1bGVzL3Jlc291cmNlLmMKQEAgLTEzNSwxMyArMTM1LDExIEBACiBzdGF0aWMgUHlPYmplY3QqCiBybGltaXQycHkoc3RydWN0IHJsaW1pdCBybCkKIHsKLSNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQogICAgIGlmIChzaXplb2YocmwucmxpbV9jdXIpID4gc2l6ZW9mKGxvbmcpKSB7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJMTCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQWV9MT05HX0xPTkcpIHJsLnJsaW1fY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfTE9OR19MT05HKSBybC5ybGltX21heCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpIHJsLnJsaW1fY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSBybC5ybGltX21heCk7CiAgICAgfQotI2VuZGlmCiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImxsIiwgKGxvbmcpIHJsLnJsaW1fY3VyLCAobG9uZykgcmwucmxpbV9tYXgpOwogfQogCkBAIC00MzgsMTEgKzQzNiw5IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkxJTUlUX05QVFMpOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQogICAgIGlmIChzaXplb2YoUkxJTV9JTkZJTklUWSkgPiBzaXplb2YobG9uZykpIHsKLSAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgUkxJTV9JTkZJTklUWSk7CisgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIFJMSU1fSU5GSU5JVFkpOwogICAgIH0gZWxzZQotI2VuZGlmCiAgICAgewogICAgICAgICB2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSBSTElNX0lORklOSVRZKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jIGIvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYwppbmRleCAwMDMyNGE1Li40N2RhNDkzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKQEAgLTQsNiArNCwxMCBAQAogICAgaGF2ZSBhbnkgdmFsdWUgZXhjZXB0IElOVkFMSURfU09DS0VULgogKi8KIAorI2lmIGRlZmluZWQoSEFWRV9QT0xMX0gpICYmICFkZWZpbmVkKF9HTlVfU09VUkNFKQorI2RlZmluZSBfR05VX1NPVVJDRQorI2VuZGlmCisKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxzdHJ1Y3RtZW1iZXIuaD4KIApAQCAtMTc5Myw3ICsxNzk3LDcgQEAKICAqLwogI2lmICFkZWZpbmVkKF9fT3BlbkJTRF9fKQogIyAgIGRlZmluZSBJREVOVF9UWVBFICBUX1VJTlRQVFJUCi0jICAgZGVmaW5lIElERU5UX0NBU1QgIFB5X2ludHB0cl90CisjICAgZGVmaW5lIElERU5UX0NBU1QgIGludHB0cl90CiAjICAgZGVmaW5lIERBVEFfVFlQRSAgIFRfSU5UUFRSVAogIyAgIGRlZmluZSBEQVRBX0ZNVF9VTklUIElOVFBUUlRfRk1UX1VOSVQKICMgICBkZWZpbmUgSURFTlRfQXNUeXBlIFB5TG9uZ19Bc1VpbnRwdHJfdApAQCAtMTg0Miw3ICsxODQ2LDcgQEAKICAgICBQeU9iamVjdCAqcGZkOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaWRlbnQiLCAiZmlsdGVyIiwgImZsYWdzIiwgImZmbGFncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhIiwgInVkYXRhIiwgTlVMTH07Ci0gICAgc3RhdGljIGNoYXIgKmZtdCA9ICJPfGhISSIgREFUQV9GTVRfVU5JVCBVSU5UUFRSVF9GTVRfVU5JVCAiOmtldmVudCI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZm10W10gPSAiT3xoSEkiIERBVEFfRk1UX1VOSVQgVUlOVFBUUlRfRk1UX1VOSVQgIjprZXZlbnQiOwogCiAgICAgRVZfU0VUKCYoc2VsZi0+ZSksIDAsIEVWRklMVF9SRUFELCBFVl9BREQsIDAsIDAsIDApOyAvKiBkZWZhdWx0cyAqLwogCkBAIC0xODcyLDcgKzE4NzYsNyBAQAoga3F1ZXVlX2V2ZW50X3JpY2hjb21wYXJlKGtxdWV1ZV9ldmVudF9PYmplY3QgKnMsIGtxdWV1ZV9ldmVudF9PYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wKQogewotICAgIFB5X2ludHB0cl90IHJlc3VsdCA9IDA7CisgICAgaW50cHRyX3QgcmVzdWx0ID0gMDsKIAogICAgIGlmICgha3F1ZXVlX2V2ZW50X0NoZWNrKG8pKSB7CiAgICAgICAgIGlmIChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgewpAQCAtMjEyNyw3ICsyMTMxLDcgQEAKICAgICAgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAidGltZW91dCBhcmd1bWVudCBtdXN0IGJlIGFuIG51bWJlciAiCisgICAgICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciAiCiAgICAgICAgICAgICAgICAgIm9yIE5vbmUsIGdvdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgIFB5X1RZUEUob3RpbWVvdXQpLT50cF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQ1Miw2ICsyNDU2LDEwIEBACiAjaWZkZWYgUE9MTE1TRwogICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT0xMTVNHKTsKICNlbmRpZgorI2lmZGVmIFBPTExSREhVUAorICAgICAgICAvKiBLZXJuZWwgMi42LjE3KyAqLworICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT0xMUkRIVVApOworI2VuZGlmCiAgICAgfQogI2VuZGlmIC8qIEhBVkVfUE9MTCAqLwogCkBAIC0yNDczLDEyICsyNDgxLDE4IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExQUkkpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMRVJSKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEhVUCk7CisjaWZkZWYgRVBPTExSREhVUAorICAgIC8qIEtlcm5lbCAyLjYuMTcgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTFJESFVQKTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMRVQpOwogI2lmZGVmIEVQT0xMT05FU0hPVAogICAgIC8qIEtlcm5lbCAyLjYuMisgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTE9ORVNIT1QpOwogI2VuZGlmCi0gICAgLyogUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMX1JESFVQIiwgRVBPTExSREhVUCk7ICovCisjaWZkZWYgRVBPTExFWENMVVNJVkUKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVYQ0xVU0lWRSk7CisjZW5kaWYKIAogI2lmZGVmIEVQT0xMUkROT1JNCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExSRE5PUk0pOwpAQCAtMjUxOSwxMyArMjUzMywyMSBAQAogICAgIC8qIGV2ZW50IGZpbHRlcnMgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1JFQUQiLCBFVkZJTFRfUkVBRCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9XUklURSIsIEVWRklMVF9XUklURSk7CisjaWZkZWYgRVZGSUxUX0FJTwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfQUlPIiwgRVZGSUxUX0FJTyk7CisjZW5kaWYKKyNpZmRlZiBFVkZJTFRfVk5PREUKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1ZOT0RFIiwgRVZGSUxUX1ZOT0RFKTsKKyNlbmRpZgorI2lmZGVmIEVWRklMVF9QUk9DCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9QUk9DIiwgRVZGSUxUX1BST0MpOworI2VuZGlmCiAjaWZkZWYgRVZGSUxUX05FVERFVgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfTkVUREVWIiwgRVZGSUxUX05FVERFVik7CiAjZW5kaWYKKyNpZmRlZiBFVkZJTFRfU0lHTkFMCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9TSUdOQUwiLCBFVkZJTFRfU0lHTkFMKTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfVElNRVIiLCBFVkZJTFRfVElNRVIpOwogCiAgICAgLyogZXZlbnQgZmxhZ3MgKi8KQEAgLTI1MzYsMTYgKzI1NTgsMjMgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfT05FU0hPVCIsIEVWX09ORVNIT1QpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9DTEVBUiIsIEVWX0NMRUFSKTsKIAorI2lmZGVmIEVWX1NZU0ZMQUdTCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX1NZU0ZMQUdTIiwgRVZfU1lTRkxBR1MpOworI2VuZGlmCisjaWZkZWYgRVZfRkxBRzEKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRkxBRzEiLCBFVl9GTEFHMSk7CisjZW5kaWYKIAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9FT0YiLCBFVl9FT0YpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9FUlJPUiIsIEVWX0VSUk9SKTsKIAogICAgIC8qIFJFQUQgV1JJVEUgZmlsdGVyIGZsYWcgKi8KKyNpZmRlZiBOT1RFX0xPV0FUCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfTE9XQVQiLCBOT1RFX0xPV0FUKTsKKyNlbmRpZgogCiAgICAgLyogVk5PREUgZmlsdGVyIGZsYWdzICAqLworI2lmZGVmIEVWRklMVF9WTk9ERQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0RFTEVURSIsIE5PVEVfREVMRVRFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9XUklURSIsIE5PVEVfV1JJVEUpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYVEVORCIsIE5PVEVfRVhURU5EKTsKQEAgLTI1NTMsOCArMjU4MiwxMCBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0xJTksiLCBOT1RFX0xJTkspOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX1JFTkFNRSIsIE5PVEVfUkVOQU1FKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9SRVZPS0UiLCBOT1RFX1JFVk9LRSk7CisjZW5kaWYKIAogICAgIC8qIFBST0MgZmlsdGVyIGZsYWdzICAqLworI2lmZGVmIEVWRklMVF9QUk9DCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfRVhJVCIsIE5PVEVfRVhJVCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfRk9SSyIsIE5PVEVfRk9SSyk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfRVhFQyIsIE5PVEVfRVhFQyk7CkBAIC0yNTY0LDYgKzI1OTUsNyBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX1RSQUNLIiwgTk9URV9UUkFDSyk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfQ0hJTEQiLCBOT1RFX0NISUxEKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9UUkFDS0VSUiIsIE5PVEVfVFJBQ0tFUlIpOworI2VuZGlmCiAKICAgICAvKiBORVRERVYgZmlsdGVyIGZsYWdzICovCiAjaWZkZWYgRVZGSUxUX05FVERFVgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGExbW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwppbmRleCA2Y2IzMmVkLi5kNTA2NWNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwpAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgU0laRU9GX0lOVCA9PSA0CiB0eXBlZGVmIHVuc2lnbmVkIGludCBTSEExX0lOVDMyOyAgICAgICAgLyogMzItYml0IGludGVnZXIgKi8KLXR5cGVkZWYgUFlfTE9OR19MT05HIFNIQTFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwordHlwZWRlZiBsb25nIGxvbmcgU0hBMV9JTlQ2NDsgICAgICAgIC8qIDY0LWJpdCBpbnRlZ2VyICovCiAjZWxzZQogLyogbm90IGRlZmluZWQuIGNvbXBpbGF0aW9uIHdpbGwgZGllLiAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwppbmRleCBmOWZmMGVhLi5mNWY5ZTE4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKQEAgLTI3LDE1ICsyNywxMyBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ODFhM2NjZGU5MmJjZmU4ZF0qLwogCi0jaWZkZWYgUFlfTE9OR19MT05HIC8qIElmIG5vIFBZX0xPTkdfTE9ORywgZG9uJ3QgY29tcGlsZSBhbnl0aGluZyEgKi8KLQogLyogU29tZSB1c2VmdWwgdHlwZXMgKi8KIAogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFNIQV9CWVRFOwogCiAjaWYgU0laRU9GX0lOVCA9PSA0CiB0eXBlZGVmIHVuc2lnbmVkIGludCBTSEFfSU5UMzI7IC8qIDMyLWJpdCBpbnRlZ2VyICovCi10eXBlZGVmIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBTSEFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgU0hBX0lOVDY0OyAgICAgICAgLyogNjQtYml0IGludGVnZXIgKi8KICNlbHNlCiAvKiBub3QgZGVmaW5lZC4gY29tcGlsYXRpb24gd2lsbCBkaWUuICovCiAjZW5kaWYKQEAgLTEyMSwxMiArMTE5LDEyIEBACiAKIC8qIFZhcmlvdXMgbG9naWNhbCBmdW5jdGlvbnMgKi8KICNkZWZpbmUgUk9SNjQoeCwgeSkgXAotICAgICggKCgoKHgpICYgUHlfVUxMKDB4RkZGRkZGRkZGRkZGRkZGRikpPj4oKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoeSkgJiA2MykpIHwgXAotICAgICAgKCh4KTw8KCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKDY0LSgoeSkgJiA2MykpKSkpICYgUHlfVUxMKDB4RkZGRkZGRkZGRkZGRkZGRikpCisgICAgKCAoKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSk+PigodW5zaWduZWQgbG9uZyBsb25nKSh5KSAmIDYzKSkgfCBcCisgICAgICAoKHgpPDwoKHVuc2lnbmVkIGxvbmcgbG9uZykoNjQtKCh5KSAmIDYzKSkpKSkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkKICNkZWZpbmUgQ2goeCx5LHopICAgICAgICh6IF4gKHggJiAoeSBeIHopKSkKICNkZWZpbmUgTWFqKHgseSx6KSAgICAgICgoKHggfCB5KSAmIHopIHwgKHggJiB5KSkKICNkZWZpbmUgUyh4LCBuKSAgICAgICAgIFJPUjY0KCh4KSwobikpCi0jZGVmaW5lIFIoeCwgbikgICAgICAgICAoKCh4KSAmIFB5X1VMTCgweEZGRkZGRkZGRkZGRkZGRkYpKSA+PiAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyluKSkKKyNkZWZpbmUgUih4LCBuKSAgICAgICAgICgoKHgpICYgUHlfVUxMKDB4RkZGRkZGRkZGRkZGRkZGRikpID4+ICgodW5zaWduZWQgbG9uZyBsb25nKW4pKQogI2RlZmluZSBTaWdtYTAoeCkgICAgICAgKFMoeCwgMjgpIF4gUyh4LCAzNCkgXiBTKHgsIDM5KSkKICNkZWZpbmUgU2lnbWExKHgpICAgICAgIChTKHgsIDE0KSBeIFMoeCwgMTgpIF4gUyh4LCA0MSkpCiAjZGVmaW5lIEdhbW1hMCh4KSAgICAgICAoUyh4LCAxKSBeIFMoeCwgOCkgXiBSKHgsIDcpKQpAQCAtODAzLDUgKzgwMSwzIEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJTSEE1MTJUeXBlIiwgKFB5T2JqZWN0ICopJlNIQTUxMnR5cGUpOwogICAgIHJldHVybiBtOwogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCmluZGV4IDc1M2Q5ODcuLmUyNzA3NWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwpAQCAtMTk4LDcgKzE5OCw3IEBACiByZXBvcnRfd2FrZXVwX3dyaXRlX2Vycm9yKHZvaWQgKmRhdGEpCiB7CiAgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICBlcnJubyA9IChpbnQpIChQeV9pbnRwdHJfdCkgZGF0YTsKKyAgICBlcnJubyA9IChpbnQpIChpbnRwdHJfdCkgZGF0YTsKICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIkV4Y2VwdGlvbiBpZ25vcmVkIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIHRvIHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCB3YWtldXAgZmQ6XG4iKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQAogCiAgICAgICAgICAgICBpZiAocmMgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfQWRkUGVuZGluZ0NhbGwocmVwb3J0X3dha2V1cF93cml0ZV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKShQeV9pbnRwdHJfdCllcnJubyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoaW50cHRyX3QpZXJybm8pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNTc5LDcgKzU3OSw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZkID0gKGludClzb2NrZmQ7Ci0gICAgICAgICAgICBpZiAoKFNPQ0tFVF9UKWZkICE9IHNvY2tmZCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICAgICAgaWYgKChTT0NLRVRfVClmZCAhPSBzb2NrZmQpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgZmQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTYwOSwxMSArNjA5LDYgQEAKICAgICBpZiAoZmQgIT0gLTEpIHsKICAgICAgICAgaW50IGJsb2NraW5nOwogCi0gICAgICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdGF0dXMpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTI3MSwyMTAgKzEyNjYsMTY5IEBACiAgICAgfQogCiAjaWZkZWYgU0lHSFVQCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdIVVApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdIVVAiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdIVVApKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHSU5UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdJTlQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTlQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdJTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQlJFQUsKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0JSRUFLKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQlJFQUsiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdCUkVBSykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdRVUlUCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdRVUlUKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUVVJVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1FVSVQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHSUxMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdJTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdJTEwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVFJBUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVFJBUCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1RSQVAiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdUUkFQKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lPVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU9UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSU9UIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU9UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0FCUlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0FCUlQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdBQlJUIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQUJSVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdFTVQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0VNVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0VNVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0VNVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdGUEUKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0ZQRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0ZQRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0ZQRSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdLSUxMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdLSUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHS0lMTCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0tJTEwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQlVTCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdCVVMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdCVVMiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdCVVMpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHU0VHVgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHU0VHVik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1NFR1YiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdTRUdWKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NZUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHU1lTKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHU1lTIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU1lTKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1BJUEUKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1BJUEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdQSVBFIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUElQRSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdBTFJNCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdBTFJNKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQUxSTSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0FMUk0pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVEVSTQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVEVSTSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1RFUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdURVJNKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1VTUjEKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1VTUjEpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdVU1IxIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVVNSMSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdVU1IyCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdVU1IyKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVNSMiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1VTUjIpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQ0xECi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdDTEQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdDTEQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdDTEQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQ0hMRAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ0hMRCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0NITEQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdDSExEKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1BXUgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUFdSKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUFdSIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUFdSKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lPCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdJTyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lPIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU8pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVVJHCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdVUkcpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdVUkciLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdVUkcpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHV0lOQ0gKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1dJTkNIKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHV0lOQ0giLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdXSU5DSCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQT0xMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQT0xMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUE9MTCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BPTEwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHU1RPUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHU1RPUCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1NUT1AiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdTVE9QKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RTVFAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RTVFApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUU1RQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFNUUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdDT05UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdDT05UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQ09OVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0NPTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVFRJTgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVFRJTik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1RUSU4iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdUVElOKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RUT1UKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RUT1UpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUVE9VIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFRPVSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdWVEFMUk0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1ZUQUxSTSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1ZUQUxSTSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1ZUQUxSTSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQUk9GCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQUk9GKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUFJPRiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BST0YpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHWENQVQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHWENQVSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1hDUFUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdYQ1BVKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1hGU1oKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1hGU1opOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdYRlNaIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHWEZTWikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdSVE1JTgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUlRNSU4pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdSVE1JTiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1JUTUlOKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1JUTUFYCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdSVE1BWCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1JUTUFYIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUlRNQVgpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHSU5GTwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU5GTyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lORk8iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdJTkZPKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWZkZWYgSVRJTUVSX1JFQUwKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKElUSU1FUl9SRUFMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSVRJTUVSX1JFQUwiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElUSU1FUl9SRUFMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIElUSU1FUl9WSVJUVUFMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhJVElNRVJfVklSVFVBTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklUSU1FUl9WSVJUVUFMIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJVElNRVJfVklSVFVBTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBJVElNRVJfUFJPRgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoSVRJTUVSX1BST0YpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJVElNRVJfUFJPRiIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVRJTUVSX1BST0YpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZiBkZWZpbmVkIChIQVZFX1NFVElUSU1FUikgfHwgZGVmaW5lZCAoSEFWRV9HRVRJVElNRVIpCkBAIC0xNDg1LDE1ICsxNDM5LDEzIEBACiAjZW5kaWYKIAogI2lmZGVmIENUUkxfQ19FVkVOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ1RSTF9DX0VWRU5UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ1RSTF9DX0VWRU5UIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDVFJMX0NfRVZFTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZmRlZiBDVFJMX0JSRUFLX0VWRU5UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhDVFJMX0JSRUFLX0VWRU5UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ1RSTF9CUkVBS19FVkVOVCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ1RSTF9CUkVBS19FVkVOVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCmluZGV4IDNlMWE0NjAuLmQyNWJkN2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwpAQCAtMTM2LDcgKzEzNiw3IEBACiBzZW5kKGRhdGFbLCBmbGFnc10pIC0tIHNlbmQgZGF0YSwgbWF5IG5vdCBzZW5kIGFsbCBvZiBpdFxuXAogc2VuZHRvKGRhdGFbLCBmbGFnc10sIGFkZHIpIC0tIHNlbmQgZGF0YSB0byBhIGdpdmVuIGFkZHJlc3NcblwKIHNldGJsb2NraW5nKDAgfCAxKSAtLSBzZXQgb3IgY2xlYXIgdGhlIGJsb2NraW5nIEkvTyBmbGFnXG5cCi1zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZSkgLS0gc2V0IHNvY2tldCBvcHRpb25zXG5cCitzZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZVssIG9wdGxlbl0pIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAogc2V0dGltZW91dChOb25lIHwgZmxvYXQpIC0tIHNldCBvciBjbGVhciB0aGUgdGltZW91dFxuXAogc2h1dGRvd24oaG93KSAtLSBzaHV0IGRvd24gdHJhZmZpYyBpbiBvbmUgb3IgYm90aCBkaXJlY3Rpb25zXG5cCiBpZl9uYW1laW5kZXgoKSAtLSByZXR1cm4gYWxsIG5ldHdvcmsgaW50ZXJmYWNlIGluZGljZXMgYW5kIG5hbWVzXG5cCkBAIC0xNTMsNyArMTUzLDcgQEAKICAgIE9uIHRoZSBvdGhlciBoYW5kLCBub3QgYWxsIExpbnV4IHZlcnNpb25zIGFncmVlLCBzbyB0aGVyZSB0aGUgc2V0dGluZ3MKICAgIGNvbXB1dGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0IGFyZSBuZWVkZWQhICovCiAKLSNpZm5kZWYgbGludXgKKyNpZm5kZWYgX19saW51eF9fCiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHCiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHCkBAIC0xNjMsNyArMTYzLDExIEBACiAjIGluY2x1ZGUgPHN5cy91aW8uaD4KICNlbmRpZgogCi0jaWZuZGVmIFdJVEhfVEhSRUFECisjaWYgIWRlZmluZWQoV0lUSF9USFJFQUQpCisjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmIF9fQU5EUk9JRF9BUElfXyA8IDIzCiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCiAjZW5kaWYKIApAQCAtMTcyLDcgKzE3Niw3IEBACiAjICBkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcKICMgZWxpZiBkZWZpbmVkKF9fc3VuKSB8fCBkZWZpbmVkKF9fc2dpKQogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHCi0jIGVsaWYgZGVmaW5lZChsaW51eCkKKyMgZWxpZiBkZWZpbmVkKF9fbGludXhfXykKIC8qIFJlbHkgb24gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgKi8KICMgZWxzZQogIyAgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKQEAgLTI4Miw2ICsyODYsMzYgQEAKICNpbmNsdWRlIDxuZXQvaWYuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyNpbmNsdWRlIDxsaW51eC9pZl9hbGcuaD4KKyNpZm5kZWYgQUZfQUxHCisjZGVmaW5lIEFGX0FMRyAzOAorI2VuZGlmCisjaWZuZGVmIFNPTF9BTEcKKyNkZWZpbmUgU09MX0FMRyAyNzkKKyNlbmRpZgorCisvKiBMaW51eCAzLjE5ICovCisjaWZuZGVmIEFMR19TRVRfQUVBRF9BU1NPQ0xFTgorI2RlZmluZSBBTEdfU0VUX0FFQURfQVNTT0NMRU4gICAgICAgICAgIDQKKyNlbmRpZgorI2lmbmRlZiBBTEdfU0VUX0FFQURfQVVUSFNJWkUKKyNkZWZpbmUgQUxHX1NFVF9BRUFEX0FVVEhTSVpFICAgICAgICAgICA1CisjZW5kaWYKKy8qIExpbnV4IDQuOCAqLworI2lmbmRlZiBBTEdfU0VUX1BVQktFWQorI2RlZmluZSBBTEdfU0VUX1BVQktFWSAgICAgICAgICAgICAgICAgIDYKKyNlbmRpZgorCisjaWZuZGVmIEFMR19PUF9TSUdOCisjZGVmaW5lIEFMR19PUF9TSUdOICAgICAgICAgICAgICAgICAgICAgMgorI2VuZGlmCisjaWZuZGVmIEFMR19PUF9WRVJJRlkKKyNkZWZpbmUgQUxHX09QX1ZFUklGWSAgICAgICAgICAgICAgICAgICAzCisjZW5kaWYKKworI2VuZGlmIC8qIEhBVkVfU09DS0FERFJfQUxHICovCisKIC8qIEdlbmVyaWMgc29ja2V0IG9iamVjdCBkZWZpbml0aW9ucyBhbmQgaW5jbHVkZXMgKi8KICNkZWZpbmUgUHlTb2NrZXRfQlVJTERJTkdfU09DS0VUCiAjaW5jbHVkZSAic29ja2V0bW9kdWxlLmgiCkBAIC02MDYsMjQgKzY0MCwzNSBAQAogI2lmbmRlZiBNU19XSU5ET1dTCiAjaWYgKGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkgJiYgZGVmaW5lZChGSU9OQklPKSkKICAgICBibG9jayA9ICFibG9jazsKLSAgICBpb2N0bChzLT5zb2NrX2ZkLCBGSU9OQklPLCAodW5zaWduZWQgaW50ICopJmJsb2NrKTsKKyAgICBpZiAoaW9jdGwocy0+c29ja19mZCwgRklPTkJJTywgKHVuc2lnbmVkIGludCAqKSZibG9jaykgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CiAjZWxzZQogICAgIGRlbGF5X2ZsYWcgPSBmY250bChzLT5zb2NrX2ZkLCBGX0dFVEZMLCAwKTsKKyAgICBpZiAoZGVsYXlfZmxhZyA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoYmxvY2spCiAgICAgICAgIG5ld19kZWxheV9mbGFnID0gZGVsYXlfZmxhZyAmICh+T19OT05CTE9DSyk7CiAgICAgZWxzZQogICAgICAgICBuZXdfZGVsYXlfZmxhZyA9IGRlbGF5X2ZsYWcgfCBPX05PTkJMT0NLOwogICAgIGlmIChuZXdfZGVsYXlfZmxhZyAhPSBkZWxheV9mbGFnKQotICAgICAgICBmY250bChzLT5zb2NrX2ZkLCBGX1NFVEZMLCBuZXdfZGVsYXlfZmxhZyk7CisgICAgICAgIGlmIChmY250bChzLT5zb2NrX2ZkLCBGX1NFVEZMLCBuZXdfZGVsYXlfZmxhZykgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogI2VuZGlmCiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgYXJnID0gIWJsb2NrOwotICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICZhcmcpOworICAgIGlmIChpb2N0bHNvY2tldChzLT5zb2NrX2ZkLCBGSU9OQklPLCAmYXJnKSAhPSAwKQorICAgICAgICBnb3RvIGVycm9yOwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgLyogU2luY2UgdGhlc2UgZG9uJ3QgcmV0dXJuIGFueXRoaW5nICovCi0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIDA7CisgIGVycm9yOgorI2lmbmRlZiBNU19XSU5ET1dTCisgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworI2Vsc2UKKyAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTg3MSw3ICs5MTYsNyBAQAogLyogRGVmYXVsdCB0aW1lb3V0IGZvciBuZXcgc29ja2V0cyAqLwogc3RhdGljIF9QeVRpbWVfdCBkZWZhdWx0dGltZW91dCA9IF9QWVRJTUVfRlJPTVNFQ09ORFMoLTEpOwogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogaW5pdF9zb2Nrb2JqZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywKICAgICAgICAgICAgICAgICBTT0NLRVRfVCBmZCwgaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90bykKIHsKQEAgLTg4OCwxMCArOTMzLDEzIEBACiAjZW5kaWYKICAgICB7CiAgICAgICAgIHMtPnNvY2tfdGltZW91dCA9IGRlZmF1bHR0aW1lb3V0OwotICAgICAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPj0gMCkKLSAgICAgICAgICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIDApOworICAgICAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPj0gMCkgeworICAgICAgICAgICAgaWYgKGludGVybmFsX3NldGJsb2NraW5nKHMsIDApID09IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotCisgICAgcmV0dXJuIDA7CiB9CiAKIApAQCAtOTA2LDggKzk1NCwxMiBAQAogICAgIFB5U29ja2V0U29ja09iamVjdCAqczsKICAgICBzID0gKFB5U29ja2V0U29ja09iamVjdCAqKQogICAgICAgICBQeVR5cGVfR2VuZXJpY05ldygmc29ja190eXBlLCBOVUxMLCBOVUxMKTsKLSAgICBpZiAocyAhPSBOVUxMKQotICAgICAgICBpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pOworICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiBzOwogfQogCkBAIC05MjYsNyArOTc4LDcgQEAKICAgIGFuIGVycm9yIG9jY3VycmVkOyB0aGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICovCiAKIHN0YXRpYyBpbnQKLXNldGlwYWRkcihjaGFyICpuYW1lLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJfcmV0LCBzaXplX3QgYWRkcl9yZXRfc2l6ZSwgaW50IGFmKQorc2V0aXBhZGRyKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzb2NrYWRkciAqYWRkcl9yZXQsIHNpemVfdCBhZGRyX3JldF9zaXplLCBpbnQgYWYpCiB7CiAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzLCAqcmVzOwogICAgIGludCBlcnJvcjsKQEAgLTExMDcsNyArMTE1OSw3IEBACiAgICBhbiBlcnJvciBvY2N1cnJlZC4gKi8KIAogc3RhdGljIGludAotc2V0YmRhZGRyKGNoYXIgKm5hbWUsIGJkYWRkcl90ICpiZGFkZHIpCitzZXRiZGFkZHIoY29uc3QgY2hhciAqbmFtZSwgYmRhZGRyX3QgKmJkYWRkcikKIHsKICAgICB1bnNpZ25lZCBpbnQgYjAsIGIxLCBiMiwgYjMsIGI0LCBiNTsKICAgICBjaGFyIGNoOwpAQCAtMTE4MCw3ICsxMjMyLDcgQEAKICAgICBjYXNlIEFGX1VOSVg6CiAgICAgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gKmEgPSAoc3RydWN0IHNvY2thZGRyX3VuICopIGFkZHI7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICAgICAgaWYgKGEtPnN1bl9wYXRoWzBdID09IDApIHsgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSAqLwogICAgICAgICAgICAgYWRkcmxlbiAtPSBvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHJfdW4sIHN1bl9wYXRoKTsKICAgICAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGEtPnN1bl9wYXRoLCBhZGRybGVuKTsKQEAgLTEzNzEsNiArMTQyMywyMiBAQAogICAgICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgY2FzZSBBRl9BTEc6CisgICAgeworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfYWxnICphID0gKHN0cnVjdCBzb2NrYWRkcl9hbGcgKilhZGRyOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgicyNzI0hIIiwKKyAgICAgICAgICAgIGEtPnNhbGdfdHlwZSwKKyAgICAgICAgICAgIHN0cm5sZW4oKGNvbnN0IGNoYXIqKWEtPnNhbGdfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGEtPnNhbGdfdHlwZSkpLAorICAgICAgICAgICAgYS0+c2FsZ19uYW1lLAorICAgICAgICAgICAgc3RybmxlbigoY29uc3QgY2hhciopYS0+c2FsZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoYS0+c2FsZ19uYW1lKSksCisgICAgICAgICAgICBhLT5zYWxnX2ZlYXQsCisgICAgICAgICAgICBhLT5zYWxnX21hc2spOworICAgIH0KKyNlbmRpZgorCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKICAgICBkZWZhdWx0OgpAQCAtMTQwMSw3ICsxNDY5LDcgQEAKIGlkbmFfY29udmVydGVyKFB5T2JqZWN0ICpvYmosIHN0cnVjdCBtYXliZV9pZG5hICpkYXRhKQogewogICAgIHNpemVfdCBsZW47Ci0gICAgUHlPYmplY3QgKm9iajIsICpvYmozOworICAgIFB5T2JqZWN0ICpvYmoyOwogICAgIGlmIChvYmogPT0gTlVMTCkgewogICAgICAgICBpZG5hX2NsZWFudXAoZGF0YSk7CiAgICAgICAgIHJldHVybiAxOwpAQCAtMTQxNiwzMSArMTQ4NCwyNyBAQAogICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVBcnJheV9Bc1N0cmluZyhvYmopOwogICAgICAgICBsZW4gPSBQeUJ5dGVBcnJheV9TaXplKG9iaik7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopICYmIFB5VW5pY29kZV9SRUFEWShvYmopID09IDAgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob2JqKSkgewotICAgICAgICBkYXRhLT5idWYgPSBQeVVuaWNvZGVfREFUQShvYmopOwotICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAwICYmIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9iaikpIHsKKyAgICAgICAgICAgIGRhdGEtPmJ1ZiA9IFB5VW5pY29kZV9EQVRBKG9iaik7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb2JqMiA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcob2JqLCAiaWRuYSIsIE5VTEwpOworICAgICAgICAgICAgaWYgKCFvYmoyKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sob2JqMikpOworICAgICAgICAgICAgZGF0YS0+b2JqID0gb2JqMjsKKyAgICAgICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9iajIpOworICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShvYmoyKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgb2JqMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7Ci0gICAgICAgIGlmICghb2JqMikgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0cmluZyBvciB1bmljb2RlIHRleHQgYnVmZmVyIGV4cGVjdGVkLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBvYmozID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmoyLCAiaWRuYSIsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYob2JqMik7Ci0gICAgICAgIGlmICghb2JqMykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG9iajMpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2JqMyk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIHRvIHJldHVybiBieXRlcyIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgZGF0YS0+b2JqID0gb2JqMzsKLSAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlc19BU19TVFJJTkcob2JqMyk7Ci0gICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqMyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSBleHBlY3RlZCwgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoc3RybGVuKGRhdGEtPmJ1ZikgIT0gbGVuKSB7CiAgICAgICAgIFB5X0NMRUFSKGRhdGEtPm9iaik7CkBAIC0xNDgzLDcgKzE1NDcsNyBAQAogICAgICAgICBhc3NlcnQocGF0aC5sZW4gPj0gMCk7CiAKICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfdW4qKWFkZHJfcmV0OwotI2lmZGVmIGxpbnV4CisjaWZkZWYgX19saW51eF9fCiAgICAgICAgIGlmIChwYXRoLmxlbiA+IDAgJiYgKihjb25zdCBjaGFyICopcGF0aC5idWYgPT0gMCkgewogICAgICAgICAgICAgLyogTGludXggYWJzdHJhY3QgbmFtZXNwYWNlIGV4dGVuc2lvbiAqLwogICAgICAgICAgICAgaWYgKChzaXplX3QpcGF0aC5sZW4gPiBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKQEAgLTE5NDAsNiArMjAwNCwzNiBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgY2FzZSBBRl9BTEc6CisgICAgeworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfYWxnICpzYTsKKyAgICAgICAgY2hhciAqdHlwZTsKKyAgICAgICAgY2hhciAqbmFtZTsKKyAgICAgICAgc2EgPSAoc3RydWN0IHNvY2thZGRyX2FsZyAqKWFkZHJfcmV0OworCisgICAgICAgIG1lbXNldChzYSwgMCwgc2l6ZW9mKCpzYSkpOworICAgICAgICBzYS0+c2FsZ19mYW1pbHkgPSBBRl9BTEc7CisKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzc3xISDpnZXRzb2NrYWRkcmFyZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlLCAmbmFtZSwgJnNhLT5zYWxnX2ZlYXQsICZzYS0+c2FsZ19tYXNrKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAvKiBzb2NrYWRkcl9hbGcgaGFzIGZpeGVkLXNpemVkIGNoYXIgYXJyYXlzIGZvciB0eXBlIGFuZCBuYW1lICovCisgICAgICAgIGlmIChzdHJsZW4odHlwZSkgPiBzaXplb2Yoc2EtPnNhbGdfdHlwZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQUZfQUxHIHR5cGUgdG9vIGxvbmcuIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzdHJuY3B5KChjaGFyICopc2EtPnNhbGdfdHlwZSwgdHlwZSwgc2l6ZW9mKHNhLT5zYWxnX3R5cGUpKTsKKyAgICAgICAgaWYgKHN0cmxlbihuYW1lKSA+IHNpemVvZihzYS0+c2FsZ19uYW1lKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJBRl9BTEcgbmFtZSB0b28gbG9uZy4iKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHN0cm5jcHkoKGNoYXIgKilzYS0+c2FsZ19uYW1lLCBuYW1lLCBzaXplb2Yoc2EtPnNhbGdfbmFtZSkpOworCisgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mKCpzYSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNlbmRpZgogCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKQEAgLTIwNjIsNiArMjE1NiwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgY2FzZSBBRl9BTEc6CisgICAgeworICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2FsZyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNlbmRpZgogCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKQEAgLTIyMjEsMTAgKzIzMjIsMjEgQEAKIHNvY2tfYWNjZXB0X2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQogewogICAgIHN0cnVjdCBzb2NrX2FjY2VwdCAqY3R4ID0gZGF0YTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIgPSBTQVMyU0EoY3R4LT5hZGRyYnVmKTsKKyAgICBzb2NrbGVuX3QgKnBhZGRybGVuID0gY3R4LT5hZGRybGVuOworI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgLyogQUZfQUxHIGRvZXMgbm90IHN1cHBvcnQgYWNjZXB0KCkgd2l0aCBhZGRyIGFuZCByYWlzZXMKKyAgICAgKiBFQ09OTkFCT1JURUQgaW5zdGVhZC4gKi8KKyAgICBpZiAocy0+c29ja19mYW1pbHkgPT0gQUZfQUxHKSB7CisgICAgICAgIGFkZHIgPSBOVUxMOworICAgICAgICBwYWRkcmxlbiA9IE5VTEw7CisgICAgICAgICpjdHgtPmFkZHJsZW4gPSAwOworICAgIH0KKyNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0FDQ0VQVDQpICYmIGRlZmluZWQoU09DS19DTE9FWEVDKQogICAgIGlmIChhY2NlcHQ0X3dvcmtzICE9IDApIHsKLSAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQ0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4sCisgICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0NChzLT5zb2NrX2ZkLCBhZGRyLCBwYWRkcmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tfQ0xPRVhFQyk7CiAgICAgICAgIGlmIChjdHgtPnJlc3VsdCA9PSBJTlZBTElEX1NPQ0tFVCAmJiBhY2NlcHQ0X3dvcmtzID09IC0xKSB7CiAgICAgICAgICAgICAvKiBPbiBMaW51eCBvbGRlciB0aGFuIDIuNi4yOCwgYWNjZXB0NCgpIGZhaWxzIHdpdGggRU5PU1lTICovCkBAIC0yMjMyLDkgKzIzNDQsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGlmIChhY2NlcHQ0X3dvcmtzID09IDApCi0gICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBhZGRyLCBwYWRkcmxlbik7CiAjZWxzZQotICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIGFkZHIsIHBhZGRybGVuKTsKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtMjMzMCwxMCArMjQ0MiwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHMtPnNvY2tfdGltZW91dCA9IF9QeVRpbWVfRnJvbVNlY29uZHMoYmxvY2sgPyAtMSA6IDApOwotICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIGJsb2NrKTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBpZiAoaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgYmxvY2spID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHNldGJsb2NraW5nX2RvYywKQEAgLTIzOTksMTAgKzI1MTEsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzLT5zb2NrX3RpbWVvdXQgPSB0aW1lb3V0OwotICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIHRpbWVvdXQgPCAwKTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBpZiAoaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgdGltZW91dCA8IDApID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHNldHRpbWVvdXRfZG9jLApAQCAtMjQzNiw5ICsyNTQ4LDEyIEBACiBvcGVyYXRpb25zIGFyZSBkaXNhYmxlZC4iKTsKIAogLyogcy5zZXRzb2Nrb3B0KCkgbWV0aG9kLgotICAgV2l0aCBhbiBpbnRlZ2VyIHRoaXJkIGFyZ3VtZW50LCBzZXRzIGFuIGludGVnZXIgb3B0aW9uLgorICAgV2l0aCBhbiBpbnRlZ2VyIHRoaXJkIGFyZ3VtZW50LCBzZXRzIGFuIGludGVnZXIgb3B0dmFsIHdpdGggb3B0bGVuPTQuCisgICBXaXRoIE5vbmUgYXMgdGhpcmQgYXJndW1lbnQgYW5kIGFuIGludGVnZXIgZm91cnRoIGFyZ3VtZW50LCBzZXQKKyAgIG9wdHZhbD1OVUxMIHdpdGggdW5zaWduZWQgaW50IGFzIG9wdGxlbi4KICAgIFdpdGggYSBzdHJpbmcgdGhpcmQgYXJndW1lbnQsIHNldHMgYW4gb3B0aW9uIGZyb20gYSBidWZmZXI7Ci0gICB1c2Ugb3B0aW9uYWwgYnVpbHQtaW4gbW9kdWxlICdzdHJ1Y3QnIHRvIGVuY29kZSB0aGUgc3RyaW5nLiAqLworICAgdXNlIG9wdGlvbmFsIGJ1aWx0LWluIG1vZHVsZSAnc3RydWN0JyB0byBlbmNvZGUgdGhlIHN0cmluZy4KKyovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NldHNvY2tvcHQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKQEAgLTI0NDgsMzEgKzI1NjMsNjQgQEAKICAgICBpbnQgcmVzOwogICAgIFB5X2J1ZmZlciBvcHR2YWw7CiAgICAgaW50IGZsYWc7CisgICAgdW5zaWduZWQgaW50IG9wdGxlbjsKKyAgICBQeU9iamVjdCAqbm9uZTsKIAorICAgIC8qIHNldHNvY2tvcHQobGV2ZWwsIG9wdCwgZmxhZykgKi8KICAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpOnNldHNvY2tvcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZmbGFnKSkgewogICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKikmZmxhZywgc2l6ZW9mIGZsYWcpOworICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpeSo6c2V0c29ja29wdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmb3B0dmFsKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwuYnVmLCBvcHR2YWwubGVuKTsKKworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgLyogc2V0c29ja29wdChsZXZlbCwgb3B0LCBOb25lLCBmbGFnKSAqLworICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8hSTpzZXRzb2Nrb3B0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCBQeV9UWVBFKFB5X05vbmUpLCAmbm9uZSwgJm9wdGxlbikpIHsKKyAgICAgICAgYXNzZXJ0KHNpemVvZihzb2NrbGVuX3QpID49IHNpemVvZih1bnNpZ25lZCBpbnQpKTsKKyAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAoc29ja2xlbl90KW9wdGxlbik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBQeUVycl9DbGVhcigpOworICAgIC8qIHNldHNvY2tvcHQobGV2ZWwsIG9wdCwgYnVmZmVyKSAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWl5KjpzZXRzb2Nrb3B0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmb3B0dmFsKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKG9wdHZhbC5sZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9wdHZhbCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNvY2tldCBvcHRpb24gaXMgbGFyZ2VyIHRoYW4gJWkgYnl0ZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgSU5UX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAocmVzIDwgMCkKKyAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgb3B0dmFsLmJ1ZiwgKGludClvcHR2YWwubGVuKTsKKyNlbHNlCisgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLmJ1Ziwgb3B0dmFsLmxlbik7CisjZW5kaWYKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvcHR2YWwpOworCitkb25lOgorICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihzZXRzb2Nrb3B0X2RvYywKLSJzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlKVxuXAorInNldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgdmFsdWU6IGludClcblwKK3NldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgdmFsdWU6IGJ1ZmZlcilcblwKK3NldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgTm9uZSwgb3B0bGVuOiBpbnQpXG5cCiBcblwKIFNldCBhIHNvY2tldCBvcHRpb24uICBTZWUgdGhlIFVuaXggbWFudWFsIGZvciBsZXZlbCBhbmQgb3B0aW9uLlxuXAotVGhlIHZhbHVlIGFyZ3VtZW50IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciBvciBhIHN0cmluZy4iKTsKK1RoZSB2YWx1ZSBhcmd1bWVudCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIsIGEgc3RyaW5nIGJ1ZmZlciwgb3IgXG5cCitOb25lLCBvcHRsZW4uIik7CiAKIAogLyogcy5nZXRzb2Nrb3B0KCkgbWV0aG9kLgpAQCAtMjU2NCwxNyArMjcxMiwyMiBAQAogc29ja19jbG9zZShQeVNvY2tldFNvY2tPYmplY3QgKnMpCiB7CiAgICAgU09DS0VUX1QgZmQ7CisgICAgaW50IHJlczsKIAotICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvCi0gICAgICogYW5kIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCi0gICAgICogZm9yIG1vcmUgZGV0YWlscy4KLSAgICAgKi8KICAgICBmZCA9IHMtPnNvY2tfZmQ7CiAgICAgaWYgKGZkICE9IElOVkFMSURfU09DS0VUKSB7CiAgICAgICAgIHMtPnNvY2tfZmQgPSBJTlZBTElEX1NPQ0tFVDsKKworICAgICAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUKKyAgICAgICAgICAgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNTc2NDc4LyBhbmQKKyAgICAgICAgICAgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKKyAgICAgICAgICAgZm9yIG1vcmUgZGV0YWlscy4gKi8KICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAodm9pZCkgU09DS0VUQ0xPU0UoZmQpOworICAgICAgICByZXMgPSBTT0NLRVRDTE9TRShmZCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMzc1Nyw2ICszOTEwLDYzIEBACiB9OwogCiBzdGF0aWMgaW50Citzb2NrX3NlbmRtc2dfaW92ZWMoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqZGF0YV9hcmcsCisgICAgICAgICAgICAgICAgICAgc3RydWN0IG1zZ2hkciAqbXNnLAorICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqKmRhdGFidWZzb3V0LCBQeV9zc2l6ZV90ICpuZGF0YWJ1ZnNvdXQpIHsKKyAgICBQeV9zc2l6ZV90IG5kYXRhcGFydHMsIG5kYXRhYnVmcyA9IDA7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIHN0cnVjdCBpb3ZlYyAqaW92cyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRhdGFfZmFzdCA9IE5VTEw7CisgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGRhdGFfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKTsKKyAgICBpZiAoZGF0YV9mYXN0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIG5kYXRhcGFydHMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZGF0YV9mYXN0KTsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzZW5kbXNnKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgbXNnLT5tc2dfaW92bGVuID0gbmRhdGFwYXJ0czsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IDApIHsKKyAgICAgICAgaW92cyA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIG5kYXRhcGFydHMpOworICAgICAgICBpZiAoaW92cyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIG1zZy0+bXNnX2lvdiA9IGlvdnM7CisKKyAgICAgICAgZGF0YWJ1ZnMgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBuZGF0YXBhcnRzKTsKKyAgICAgICAgaWYgKGRhdGFidWZzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yICg7IG5kYXRhYnVmcyA8IG5kYXRhcGFydHM7IG5kYXRhYnVmcysrKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGRhdGFfZmFzdCwgbmRhdGFidWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAieSo7c2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzLWxpa2Ugb2JqZWN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFidWZzW25kYXRhYnVmc10pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2Jhc2UgPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmJ1ZjsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9sZW4gPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmxlbjsKKyAgICB9CisgICAgcmVzdWx0ID0gMDsKKyAgZmluYWxseToKKyAgICAqZGF0YWJ1ZnNvdXQgPSBkYXRhYnVmczsKKyAgICAqbmRhdGFidWZzb3V0ID0gbmRhdGFidWZzOworICAgIFB5X1hERUNSRUYoZGF0YV9mYXN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CiBzb2NrX3NlbmRtc2dfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCiB7CiAgICAgc3RydWN0IHNvY2tfc2VuZG1zZyAqY3R4ID0gZGF0YTsKQEAgLTM3NzAsMTEgKzM5ODAsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NlbmRtc2coUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGksIG5kYXRhcGFydHMsIG5kYXRhYnVmcyA9IDAsIG5jbXNncywgbmNtc2didWZzID0gMDsKKyAgICBQeV9zc2l6ZV90IGksIG5kYXRhYnVmcyA9IDAsIG5jbXNncywgbmNtc2didWZzID0gMDsKICAgICBQeV9idWZmZXIgKmRhdGFidWZzID0gTlVMTDsKLSAgICBzdHJ1Y3QgaW92ZWMgKmlvdnMgPSBOVUxMOwogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7Ci0gICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07CisgICAgc3RydWN0IG1zZ2hkciBtc2c7CiAgICAgc3RydWN0IGNtc2dpbmZvIHsKICAgICAgICAgaW50IGxldmVsOwogICAgICAgICBpbnQgdHlwZTsKQEAgLTM3ODMsMTMgKzM5OTIsMTYgQEAKICAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKICAgICBzaXplX3QgY29udHJvbGxlbiwgY29udHJvbGxlbl9sYXN0OwogICAgIGludCBhZGRybGVuLCBmbGFncyA9IDA7Ci0gICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLCAqZGF0YV9mYXN0ID0gTlVMTCwKKyAgICBQeU9iamVjdCAqZGF0YV9hcmcsICpjbXNnX2FyZyA9IE5VTEwsICphZGRyX2FyZyA9IE5VTEwsCiAgICAgICAgICpjbXNnX2Zhc3QgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKICAgICBzdHJ1Y3Qgc29ja19zZW5kbXNnIGN0eDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPaU86c2VuZG1zZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywgJmNtc2dfYXJnLCAmZmxhZ3MsICZhZGRyX2FyZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywgJmNtc2dfYXJnLCAmZmxhZ3MsICZhZGRyX2FyZykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKIAogICAgIC8qIFBhcnNlIGRlc3RpbmF0aW9uIGFkZHJlc3MuICovCiAgICAgaWYgKGFkZHJfYXJnICE9IE5VTEwgJiYgYWRkcl9hcmcgIT0gUHlfTm9uZSkgewpAQCAtMzgwMSwzMCArNDAxMyw4IEBACiAKICAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgogICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLwotICAgIGlmICgoZGF0YV9mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGRhdGFfYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICBpZiAoc29ja19zZW5kbXNnX2lvdmVjKHMsIGRhdGFfYXJnLCAmbXNnLCAmZGF0YWJ1ZnMsICZuZGF0YWJ1ZnMpID09IC0xKSB7CiAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICBuZGF0YXBhcnRzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGRhdGFfZmFzdCk7Ci0gICAgaWYgKG5kYXRhcGFydHMgPiBJTlRfTUFYKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VuZG1zZygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBtc2cubXNnX2lvdmxlbiA9IG5kYXRhcGFydHM7Ci0gICAgaWYgKG5kYXRhcGFydHMgPiAwICYmCi0gICAgICAgICgobXNnLm1zZ19pb3YgPSBpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbmRhdGFwYXJ0cykpID09IE5VTEwgfHwKLSAgICAgICAgIChkYXRhYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5kYXRhcGFydHMpKSA9PSBOVUxMKSkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIGZvciAoOyBuZGF0YWJ1ZnMgPCBuZGF0YXBhcnRzOyBuZGF0YWJ1ZnMrKykgewotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShkYXRhX2Zhc3QsIG5kYXRhYnVmcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgInkqO3NlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcy1saWtlIG9iamVjdHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhYnVmc1tuZGF0YWJ1ZnNdKSkKLSAgICAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9iYXNlID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5idWY7Ci0gICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfbGVuID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5sZW47CiAgICAgfQogCiAgICAgaWYgKGNtc2dfYXJnID09IE5VTEwpCkBAIC0zODgzLDExICs0MDczLDEzIEBACiAgICAgaWYgKG5jbXNnYnVmcyA+IDApIHsKICAgICAgICAgc3RydWN0IGNtc2doZHIgKmNtc2doID0gTlVMTDsKIAotICAgICAgICBpZiAoKG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWYgPQotICAgICAgICAgICAgIFB5TWVtX01hbGxvYyhjb250cm9sbGVuKSkgPT0gTlVMTCkgeworICAgICAgICBjb250cm9sYnVmID0gUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pOworICAgICAgICBpZiAoY29udHJvbGJ1ZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICB9CisgICAgICAgIG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWY7CisKICAgICAgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKIAogICAgICAgICAvKiBOZWVkIHRvIHplcm8gb3V0IHRoZSBidWZmZXIgYXMgYSB3b3JrYXJvdW5kIGZvciBnbGliYydzCkBAIC0zOTUyLDExICs0MTQ0LDExIEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmNtc2dzW2ldLmRhdGEpOwogICAgIFB5TWVtX0ZyZWUoY21zZ3MpOwogICAgIFB5X1hERUNSRUYoY21zZ19mYXN0KTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspCisgICAgUHlNZW1fRnJlZShtc2cubXNnX2lvdik7CisgICAgZm9yIChpID0gMDsgaSA8IG5kYXRhYnVmczsgaSsrKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGFidWZzW2ldKTsKKyAgICB9CiAgICAgUHlNZW1fRnJlZShkYXRhYnVmcyk7Ci0gICAgUHlNZW1fRnJlZShpb3ZzKTsKLSAgICBQeV9YREVDUkVGKGRhdGFfZmFzdCk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMzk3OCw2ICs0MTcwLDE3MSBAQAogZGF0YSBzZW50LiIpOwogI2VuZGlmICAgIC8qIENNU0dfTEVOICovCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworc3RhdGljIFB5T2JqZWN0Kgorc29ja19zZW5kbXNnX2FmYWxnKFB5U29ja2V0U29ja09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOworCisgICAgUHlfc3NpemVfdCBpLCBuZGF0YWJ1ZnMgPSAwOworICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkYXRhX2FyZyA9IE5VTEw7CisKKyAgICBQeV9idWZmZXIgaXYgPSB7TlVMTCwgTlVMTH07CisKKyAgICBQeU9iamVjdCAqb3BvYmogPSBOVUxMOworICAgIGludCBvcCA9IC0xOworCisgICAgUHlPYmplY3QgKmFzc29jbGVub2JqID0gTlVMTDsKKyAgICBpbnQgYXNzb2NsZW4gPSAtMTsKKworICAgIHVuc2lnbmVkIGludCAqdWlwdHI7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIHN0cnVjdCBtc2doZHIgbXNnOworICAgIHN0cnVjdCBjbXNnaGRyICpoZWFkZXIgPSBOVUxMOworICAgIHN0cnVjdCBhZl9hbGdfaXYgKmFsZ19pdiA9IE5VTEw7CisgICAgc3RydWN0IHNvY2tfc2VuZG1zZyBjdHg7CisgICAgUHlfc3NpemVfdCBjb250cm9sbGVuOworICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJtc2ciLCAib3AiLCAiaXYiLCAiYXNzb2NsZW4iLCAiZmxhZ3MiLCAwfTsKKworICAgIGlmIChzZWxmLT5zb2NrX2ZhbWlseSAhPSBBRl9BTEcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiYWxnc2V0IGlzIG9ubHkgc3VwcG9ydGVkIGZvciBBRl9BTEciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifE8kTyF5Kk8haTpzZW5kbXNnX2FmYWxnIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUxvbmdfVHlwZSwgJm9wb2JqLCAmaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5TG9uZ19UeXBlLCAmYXNzb2NsZW5vYmosICZmbGFncykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKKworICAgIC8qIG9wIGlzIGEgcmVxdWlyZWQsIGtleXdvcmQtb25seSBhcmd1bWVudCA+PSAwICovCisgICAgaWYgKG9wb2JqICE9IE5VTEwpIHsKKyAgICAgICAgb3AgPSBfUHlMb25nX0FzSW50KG9wb2JqKTsKKyAgICB9CisgICAgaWYgKG9wIDwgMCkgeworICAgICAgICAvKiBvdmVycmlkZSBleGNlcHRpb24gZnJvbSBfUHlMb25nX0FzSW50KCkgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIG9yIG1pc3NpbmcgYXJndW1lbnQgJ29wJyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIC8qIGFzc29jbGVuIGlzIG9wdGlvbmFsIGJ1dCBtdXN0IGJlID49IDAgKi8KKyAgICBpZiAoYXNzb2NsZW5vYmogIT0gTlVMTCkgeworICAgICAgICBhc3NvY2xlbiA9IF9QeUxvbmdfQXNJbnQoYXNzb2NsZW5vYmopOworICAgICAgICBpZiAoYXNzb2NsZW4gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGlmIChhc3NvY2xlbiA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzc29jbGVuIG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnRyb2xsZW4gPSBDTVNHX1NQQUNFKDQpOworICAgIGlmIChpdi5idWYgIT0gTlVMTCkgeworICAgICAgICBjb250cm9sbGVuICs9IENNU0dfU1BBQ0Uoc2l6ZW9mKCphbGdfaXYpICsgaXYubGVuKTsKKyAgICB9CisgICAgaWYgKGFzc29jbGVuID49IDApIHsKKyAgICAgICAgY29udHJvbGxlbiArPSBDTVNHX1NQQUNFKDQpOworICAgIH0KKworICAgIGNvbnRyb2xidWYgPSBQeU1lbV9NYWxsb2MoY29udHJvbGxlbik7CisgICAgaWYgKGNvbnRyb2xidWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIG1lbXNldChjb250cm9sYnVmLCAwLCBjb250cm9sbGVuKTsKKworICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CisgICAgbXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZjsKKworICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggbWVzc2FnZSBwYXJ0LCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCisgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCisgICAgaWYgKGRhdGFfYXJnICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHNvY2tfc2VuZG1zZ19pb3ZlYyhzZWxmLCBkYXRhX2FyZywgJm1zZywgJmRhdGFidWZzLCAmbmRhdGFidWZzKSA9PSAtMSkgeworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorCisgICAgLyogc2V0IG9wZXJhdGlvbiB0byBlbmNyeXB0IG9yIGRlY3J5cHQgKi8KKyAgICBoZWFkZXIgPSBDTVNHX0ZJUlNUSERSKCZtc2cpOworICAgIGlmIChoZWFkZXIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSBDTVNHX0ZJUlNUSERSIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgaGVhZGVyLT5jbXNnX2xldmVsID0gU09MX0FMRzsKKyAgICBoZWFkZXItPmNtc2dfdHlwZSA9IEFMR19TRVRfT1A7CisgICAgaGVhZGVyLT5jbXNnX2xlbiA9IENNU0dfTEVOKDQpOworICAgIHVpcHRyID0gKHZvaWQqKUNNU0dfREFUQShoZWFkZXIpOworICAgICp1aXB0ciA9ICh1bnNpZ25lZCBpbnQpb3A7CisKKyAgICAvKiBzZXQgaW5pdGlhbGl6YXRpb24gdmVjdG9yICovCisgICAgaWYgKGl2LmJ1ZiAhPSBOVUxMKSB7CisgICAgICAgIGhlYWRlciA9IENNU0dfTlhUSERSKCZtc2csIGhlYWRlcik7CisgICAgICAgIGlmIChoZWFkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tIENNU0dfTlhUSERSKGl2KSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGhlYWRlci0+Y21zZ19sZXZlbCA9IFNPTF9BTEc7CisgICAgICAgIGhlYWRlci0+Y21zZ190eXBlID0gQUxHX1NFVF9JVjsKKyAgICAgICAgaGVhZGVyLT5jbXNnX2xlbiA9IENNU0dfU1BBQ0Uoc2l6ZW9mKCphbGdfaXYpICsgaXYubGVuKTsKKyAgICAgICAgYWxnX2l2ID0gKHZvaWQqKUNNU0dfREFUQShoZWFkZXIpOworICAgICAgICBhbGdfaXYtPml2bGVuID0gaXYubGVuOworICAgICAgICBtZW1jcHkoYWxnX2l2LT5pdiwgaXYuYnVmLCBpdi5sZW4pOworICAgIH0KKworICAgIC8qIHNldCBsZW5ndGggb2YgYXNzb2NpYXRlZCBkYXRhIGZvciBBRUFEICovCisgICAgaWYgKGFzc29jbGVuID49IDApIHsKKyAgICAgICAgaGVhZGVyID0gQ01TR19OWFRIRFIoJm1zZywgaGVhZGVyKTsKKyAgICAgICAgaWYgKGhlYWRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE5VTEwgcmVzdWx0IGZyb20gQ01TR19OWFRIRFIoYXNzb2MpIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgaGVhZGVyLT5jbXNnX2xldmVsID0gU09MX0FMRzsKKyAgICAgICAgaGVhZGVyLT5jbXNnX3R5cGUgPSBBTEdfU0VUX0FFQURfQVNTT0NMRU47CisgICAgICAgIGhlYWRlci0+Y21zZ19sZW4gPSBDTVNHX0xFTig0KTsKKyAgICAgICAgdWlwdHIgPSAodm9pZCopQ01TR19EQVRBKGhlYWRlcik7CisgICAgICAgICp1aXB0ciA9ICh1bnNpZ25lZCBpbnQpYXNzb2NsZW47CisgICAgfQorCisgICAgY3R4Lm1zZyA9ICZtc2c7CisgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgaWYgKHNvY2tfY2FsbChzZWxmLCAxLCBzb2NrX3NlbmRtc2dfaW1wbCwgJmN0eCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICByZXR2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoY3R4LnJlc3VsdCk7CisKKyAgZmluYWxseToKKyAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOworICAgIGlmIChpdi5idWYgIT0gTlVMTCkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpdik7CisgICAgfQorICAgIFB5TWVtX0ZyZWUobXNnLm1zZ19pb3YpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhYnVmc1tpXSk7CisgICAgfQorICAgIFB5TWVtX0ZyZWUoZGF0YWJ1ZnMpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihzZW5kbXNnX2FmYWxnX2RvYywKKyJzZW5kbXNnX2FmYWxnKFttc2ddLCAqLCBvcFssIGl2WywgYXNzb2NsZW5bLCBmbGFncz1NU0dfTU9SRV1dXSlcblwKK1xuXAorU2V0IG9wZXJhdGlvbiBtb2RlLCBJViBhbmQgbGVuZ3RoIG9mIGFzc29jaWF0ZWQgZGF0YSBmb3IgYW4gQUZfQUxHXG5cCitvcGVyYXRpb24gc29ja2V0LiIpOworI2VuZGlmCiAKIC8qIHMuc2h1dGRvd24oaG93KSBtZXRob2QgKi8KIApAQCAtNDAzNiw2ICs0MzkzLDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlY3YpOyB9CisjaWYgZGVmaW5lZChTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIKQorICAgIGNhc2UgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSDogeworICAgICAgICB1bnNpZ25lZCBpbnQgb3B0aW9uOworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJnLCAia0k6aW9jdGwiLCAmY21kLCAmb3B0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoV1NBSW9jdGwocy0+c29ja19mZCwgY21kLCAmb3B0aW9uLCBzaXplb2Yob3B0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmcmVjdiwgTlVMTCwgTlVMTCkgPT0gU09DS0VUX0VSUk9SKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlY3YpOyB9CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgaW9jdGwgY29tbWFuZCAlZCIsIGNtZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDA0Niw3ICs0NDE0LDggQEAKIFxuXAogQ29udHJvbCB0aGUgc29ja2V0IHdpdGggV1NBSW9jdGwgc3lzY2FsbC4gQ3VycmVudGx5IHN1cHBvcnRlZCAnY21kJyB2YWx1ZXMgYXJlXG5cCiBTSU9fUkNWQUxMOiAgJ29wdGlvbicgbXVzdCBiZSBvbmUgb2YgdGhlIHNvY2tldC5SQ1ZBTExfKiBjb25zdGFudHMuXG5cCi1TSU9fS0VFUEFMSVZFX1ZBTFM6ICAnb3B0aW9uJyBpcyBhIHR1cGxlIG9mIChvbm9mZiwgdGltZW91dCwgaW50ZXJ2YWwpLiIpOworU0lPX0tFRVBBTElWRV9WQUxTOiAgJ29wdGlvbicgaXMgYSB0dXBsZSBvZiAob25vZmYsIHRpbWVvdXQsIGludGVydmFsKS5cblwKK1NJT19MT09QQkFDS19GQVNUX1BBVEg6ICdvcHRpb24nIGlzIGEgYm9vbGVhbiB2YWx1ZSwgYW5kIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQiKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQpAQCAtNDE0NSw2ICs0NTE0LDEwIEBACiAgICAgeyJzZW5kbXNnIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3NlbmRtc2csIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICAgICBzZW5kbXNnX2RvY30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIHsic2VuZG1zZ19hZmFsZyIsICAgICAoUHlDRnVuY3Rpb24pc29ja19zZW5kbXNnX2FmYWxnLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgIHNlbmRtc2dfYWZhbGdfZG9jfSwKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTQxNjUsMjIgKzQ1MzgsNDUgQEAKICAgIEZpcnN0IGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0aW9uLiAqLwogCiBzdGF0aWMgdm9pZAorc29ja19maW5hbGl6ZShQeVNvY2tldFNvY2tPYmplY3QgKnMpCit7CisgICAgU09DS0VUX1QgZmQ7CisgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKworICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICBpZiAocy0+c29ja19mZCAhPSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgICBpZiAoUHlFcnJfUmVzb3VyY2VXYXJuaW5nKChQeU9iamVjdCAqKXMsIDEsICJ1bmNsb3NlZCAlUiIsIHMpKSB7CisgICAgICAgICAgICAvKiBTcHVyaW91cyBlcnJvcnMgY2FuIGFwcGVhciBhdCBzaHV0ZG93biAqLworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfV2FybmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBPbmx5IGNsb3NlIHRoZSBzb2NrZXQgKmFmdGVyKiBsb2dnaW5nIHRoZSBSZXNvdXJjZVdhcm5pbmcgd2FybmluZworICAgICAgICAgICB0byBhbGxvdyB0aGUgbG9nZ2VyIHRvIGNhbGwgc29ja2V0IG1ldGhvZHMgbGlrZQorICAgICAgICAgICBzb2NrZXQuZ2V0c29ja25hbWUoKS4gSWYgdGhlIHNvY2tldCBpcyBjbG9zZWQgYmVmb3JlLCBzb2NrZXQKKyAgICAgICAgICAgbWV0aG9kcyBmYWlscyB3aXRoIHRoZSBFQkFERiBlcnJvci4gKi8KKyAgICAgICAgZmQgPSBzLT5zb2NrX2ZkOworICAgICAgICBzLT5zb2NrX2ZkID0gSU5WQUxJRF9TT0NLRVQ7CisKKyAgICAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIHNvY2tfY2xvc2UoKSAqLworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICh2b2lkKSBTT0NLRVRDTE9TRShmZCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCisgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7Cit9CisKK3N0YXRpYyB2b2lkCiBzb2NrX2RlYWxsb2MoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQogewotICAgIGlmIChzLT5zb2NrX2ZkICE9IElOVkFMSURfU09DS0VUKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKLSAgICAgICAgUHlfc3NpemVfdCBvbGRfcmVmY291bnQgPSBQeV9SRUZDTlQocyk7Ci0gICAgICAgICsrUHlfUkVGQ05UKHMpOwotICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19SZXNvdXJjZVdhcm5pbmcsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmNsb3NlZCAlUiIsIHMpKQotICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KLSAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKQotICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgcyk7Ci0gICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwsIHRiKTsKLSAgICAgICAgKHZvaWQpIFNPQ0tFVENMT1NFKHMtPnNvY2tfZmQpOwotICAgICAgICBQeV9SRUZDTlQocykgPSBvbGRfcmVmY291bnQ7Ci0gICAgfQorICAgIGlmIChQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MoKFB5T2JqZWN0ICopcykgPCAwKQorICAgICAgICByZXR1cm47CisKICAgICBQeV9UWVBFKHMpLT50cF9mcmVlKChQeU9iamVjdCAqKXMpOwogfQogCkBAIC00MzY4LDcgKzQ3NjQsMTAgQEAKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90byk7CisgICAgaWYgKGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90bykgPT0gLTEpIHsKKyAgICAgICAgU09DS0VUQ0xPU0UoZmQpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgcmV0dXJuIDA7CiAKQEAgLTQzOTcsNyArNDc5Niw4IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBzb2NrX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC00NDE3LDYgKzQ4MTcsMTUgQEAKICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgc29ja19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAoZGVzdHJ1Y3Rvcilzb2NrX2ZpbmFsaXplLCAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogCiAKQEAgLTU0NTIsMTAgKzU4NjEsNiBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhyZXR2YWwpOwogICAgIH0KLQotICAgIC8qIE5PVFJFQUNIRUQgKi8KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW52YWxpZCBoYW5kbGluZyBvZiBpbmV0X250b3AiKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQpAQCAtNjE4OSw5ICs2NTk0LDYgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9VTlNQRUMpOwogI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfSU5FVCk7Ci0jaWZkZWYgQUZfSU5FVDYKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9JTkVUNik7Ci0jZW5kaWYgLyogQUZfSU5FVDYgKi8KICNpZiBkZWZpbmVkKEFGX1VOSVgpCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfVU5JWCk7CiAjZW5kaWYgLyogQUZfVU5JWCAqLwpAQCAtNjIyMiw2ICs2NjI0LDkgQEAKICAgICAvKiBSZXNlcnZlZCBmb3IgV2VybmVyJ3MgQVRNICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfQUFMNSk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0FMRyk7IC8qIExpbnV4IGNyeXB0byAqLworI2VuZGlmCiAjaWZkZWYgQUZfWDI1CiAgICAgLyogUmVzZXJ2ZWQgZm9yIFguMjUgcHJvamVjdCAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1gyNSk7CkBAIC02MjgzLDYgKzY2ODgsOSBAQAogI2lmZGVmIE5FVExJTktfVEFQQkFTRQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfVEFQQkFTRSk7CiAjZW5kaWYKKyNpZmRlZiBORVRMSU5LX0NSWVBUTworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfQ1JZUFRPKTsKKyNlbmRpZgogI2VuZGlmIC8qIEFGX05FVExJTksgKi8KICNpZmRlZiBBRl9ST1VURQogICAgIC8qIEFsaWFzIHRvIGVtdWxhdGUgNC40QlNEICovCkBAIC02NDM2LDExICs2ODQ0LDMwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19UT1BfU1JWKTsKICNlbmRpZgogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICAvKiBTb2NrZXQgb3B0aW9ucyAqLworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfS0VZKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0lWKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX09QKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0FFQURfQVNTT0NMRU4pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfQUVBRF9BVVRIU0laRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9QVUJLRVkpOworCisgICAgLyogT3BlcmF0aW9ucyAqLworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9ERUNSWVBUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfRU5DUllQVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX1NJR04pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9WRVJJRlkpOworI2VuZGlmCisKICAgICAvKiBTb2NrZXQgdHlwZXMgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1NUUkVBTSk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19ER1JBTSk7CiAvKiBXZSBoYXZlIGluY29tcGxldGUgc29ja2V0IHN1cHBvcnQuICovCisjaWZkZWYgU09DS19SQVcKKyAgICAvKiBTT0NLX1JBVyBpcyBtYXJrZWQgYXMgb3B0aW9uYWwgaW4gdGhlIFBPU0lYIHNwZWNpZmljYXRpb24gKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1JBVyk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1NFUVBBQ0tFVCk7CiAjaWYgZGVmaW5lZChTT0NLX1JETSkKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1JETSk7CkBAIC02NDgzLDkgKzY5MTAsMTEgQEAKICNpZmRlZiAgU09fT09CSU5MSU5FCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fT09CSU5MSU5FKTsKICNlbmRpZgorI2lmbmRlZiBfX0dOVV9fCiAjaWZkZWYgIFNPX1JFVVNFUE9SVAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1JFVVNFUE9SVCk7CiAjZW5kaWYKKyNlbmRpZgogI2lmZGVmICBTT19TTkRCVUYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19TTkRCVUYpOwogI2VuZGlmCkBAIC02NTIyLDYgKzY5NTEsMTIgQEAKICNpZmRlZiAgTE9DQUxfUEVFUkNSRUQKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0NBTF9QRUVSQ1JFRCk7CiAjZW5kaWYKKyNpZmRlZiAgU09fUEFTU1NFQworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BBU1NTRUMpOworI2VuZGlmCisjaWZkZWYgIFNPX1BFRVJTRUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19QRUVSU0VDKTsKKyNlbmRpZgogI2lmZGVmICBTT19CSU5EVE9ERVZJQ0UKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19CSU5EVE9ERVZJQ0UpOwogI2VuZGlmCkBAIC02NTMxLDYgKzY5NjYsMTIgQEAKICNpZmRlZiAgU09fTUFSSwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX01BUkspOwogI2VuZGlmCisjaWZkZWYgU09fRE9NQUlOCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fRE9NQUlOKTsKKyNlbmRpZgorI2lmZGVmIFNPX1BST1RPQ09MCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUFJPVE9DT0wpOworI2VuZGlmCiAKICAgICAvKiBNYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyBmb3IgImxpc3RlbiIgKi8KICNpZmRlZiAgU09NQVhDT05OCkBAIC02Njg5LDYgKzcxMzAsOSBAQAogI2lmZGVmIFNPTF9SRFMKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0xfUkRTKTsKICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX0FMRyk7CisjZW5kaWYKICNpZmRlZiBSRFNfQ0FOQ0VMX1NFTlRfVE8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfQ0FOQ0VMX1NFTlRfVE8pOwogI2VuZGlmCkBAIC03MjI2LDggKzc2NzAsMTYgQEAKIAogI2lmZGVmIFNJT19SQ1ZBTEwKICAgICB7Ci0gICAgICAgIERXT1JEIGNvZGVzW10gPSB7U0lPX1JDVkFMTCwgU0lPX0tFRVBBTElWRV9WQUxTfTsKLSAgICAgICAgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsiU0lPX1JDVkFMTCIsICJTSU9fS0VFUEFMSVZFX1ZBTFMifTsKKyAgICAgICAgRFdPUkQgY29kZXNbXSA9IHtTSU9fUkNWQUxMLCBTSU9fS0VFUEFMSVZFX1ZBTFMsCisjaWYgZGVmaW5lZChTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIKQorICAgICAgICAgICAgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSAorI2VuZGlmCisgICAgICAgIH07CisgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzW10gPSB7IlNJT19SQ1ZBTEwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIiwKKyNpZiBkZWZpbmVkKFNJT19MT09QQkFDS19GQVNUX1BBVEgpCisgICAgICAgICAgICAiU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCIKKyNlbmRpZgorICAgICAgICB9OwogICAgICAgICBpbnQgaTsKICAgICAgICAgZm9yKGkgPSAwOyBpPFB5X0FSUkFZX0xFTkdUSChjb2Rlcyk7ICsraSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnRtcDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3B3ZG1vZHVsZS5jIGIvTW9kdWxlcy9zcHdkbW9kdWxlLmMKaW5kZXggNGI5ZjNjZC4uNTU2YTcxNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zcHdkbW9kdWxlLmMKQEAgLTEzNyw3ICsxMzcsMTAgQEAKICAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKICAgICAgICAgZ290byBvdXQ7CiAgICAgaWYgKChwID0gZ2V0c3BuYW0obmFtZSkpID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiZ2V0c3BuYW0oKTogbmFtZSBub3QgZm91bmQiKTsKKyAgICAgICAgaWYgKGVycm5vICE9IDApCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgImdldHNwbmFtKCk6IG5hbWUgbm90IGZvdW5kIik7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KICAgICByZXR2YWwgPSBta3NwZW50KHApOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcmVfbGliLmggYi9Nb2R1bGVzL3NyZV9saWIuaAppbmRleCAxMjhjNzFlLi4wODY1ZmM2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NyZV9saWIuaAorKysgYi9Nb2R1bGVzL3NyZV9saWIuaApAQCAtMzY3LDE0ICszNjcsMTIgQEAKICNkZWZpbmUgUkVUVVJOX09OX0ZBSUxVUkUoaSkgXAogICAgIGRvIHsgUkVUVVJOX09OX0VSUk9SKGkpOyBpZiAoaSA9PSAwKSBSRVRVUk5fRkFJTFVSRTsgfSB3aGlsZSAoMCkKIAotI2RlZmluZSBTRlkoeCkgI3gKLQogI2RlZmluZSBEQVRBX1NUQUNLX0FMTE9DKHN0YXRlLCB0eXBlLCBwdHIpIFwKIGRvIHsgXAogICAgIGFsbG9jX3BvcyA9IHN0YXRlLT5kYXRhX3N0YWNrX2Jhc2U7IFwKICAgICBUUkFDRSgoImFsbG9jYXRpbmcgJXMgaW4gJSIgUFlfRk9STUFUX1NJWkVfVCAiZCAiIFwKICAgICAgICAgICAgIiglIiBQWV9GT1JNQVRfU0laRV9UICJkKVxuIiwgXAotICAgICAgICAgICBTRlkodHlwZSksIGFsbG9jX3Bvcywgc2l6ZW9mKHR5cGUpKSk7IFwKKyAgICAgICAgICAgUHlfU1RSSU5HSUZZKHR5cGUpLCBhbGxvY19wb3MsIHNpemVvZih0eXBlKSkpOyBcCiAgICAgaWYgKHNpemVvZih0eXBlKSA+IHN0YXRlLT5kYXRhX3N0YWNrX3NpemUgLSBhbGxvY19wb3MpIHsgXAogICAgICAgICBpbnQgaiA9IGRhdGFfc3RhY2tfZ3JvdyhzdGF0ZSwgc2l6ZW9mKHR5cGUpKTsgXAogICAgICAgICBpZiAoaiA8IDApIHJldHVybiBqOyBcCkBAIC0zODcsNyArMzg1LDcgQEAKIAogI2RlZmluZSBEQVRBX1NUQUNLX0xPT0tVUF9BVChzdGF0ZSwgdHlwZSwgcHRyLCBwb3MpIFwKIGRvIHsgXAotICAgIFRSQUNFKCgibG9va2luZyB1cCAlcyBhdCAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLCBTRlkodHlwZSksIHBvcykpOyBcCisgICAgVFJBQ0UoKCJsb29raW5nIHVwICVzIGF0ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsIFB5X1NUUklOR0lGWSh0eXBlKSwgcG9zKSk7IFwKICAgICBwdHIgPSAodHlwZSopKHN0YXRlLT5kYXRhX3N0YWNrK3Bvcyk7IFwKIH0gd2hpbGUgKDApCiAKQEAgLTUzMSw3ICs1MjksNyBAQAogICAgIGlmIChjdHgtPnBhdHRlcm5bMF0gPT0gU1JFX09QX0lORk8pIHsKICAgICAgICAgLyogb3B0aW1pemF0aW9uIGluZm8gYmxvY2sgKi8KICAgICAgICAgLyogPElORk8+IDwxPXNraXA+IDwyPWZsYWdzPiA8Mz1taW4+IC4uLiAqLwotICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmIChQeV91aW50cHRyX3QpKGVuZCAtIGN0eC0+cHRyKSA8IGN0eC0+cGF0dGVyblszXSkgeworICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmICh1aW50cHRyX3QpKGVuZCAtIGN0eC0+cHRyKSA8IGN0eC0+cGF0dGVyblszXSkgewogICAgICAgICAgICAgVFJBQ0UoKCJyZWplY3QgKGdvdCAlIiBQWV9GT1JNQVRfU0laRV9UICJkIGNoYXJzLCAiCiAgICAgICAgICAgICAgICAgICAgIm5lZWQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZClcbiIsCiAgICAgICAgICAgICAgICAgICAgZW5kIC0gY3R4LT5wdHIsIChQeV9zc2l6ZV90KSBjdHgtPnBhdHRlcm5bM10pKTsKQEAgLTEyNTYsNyArMTI1NCwzMiBAQAogICAgICAgICAgICBwcmVmaXgsIHByZWZpeF9sZW4sIHByZWZpeF9za2lwKSk7CiAgICAgVFJBQ0UoKCJjaGFyc2V0ID0gJXBcbiIsIGNoYXJzZXQpKTsKIAotI2lmIGRlZmluZWQoVVNFX0ZBU1RfU0VBUkNIKQorICAgIGlmIChwcmVmaXhfbGVuID09IDEpIHsKKyAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGxpdGVyYWwgY2hhcmFjdGVyICovCisgICAgICAgIFNSRV9DSEFSIGMgPSAoU1JFX0NIQVIpIHByZWZpeFswXTsKKyNpZiBTSVpFT0ZfU1JFX0NIQVIgPCA0CisgICAgICAgIGlmICgoU1JFX0NPREUpIGMgIT0gcHJlZml4WzBdKQorICAgICAgICAgICAgcmV0dXJuIDA7IC8qIGxpdGVyYWwgY2FuJ3QgbWF0Y2g6IGRvZXNuJ3QgZml0IGluIGNoYXIgd2lkdGggKi8KKyNlbmRpZgorICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kKSB7CisgICAgICAgICAgICB3aGlsZSAoKnB0ciAhPSBjKSB7CisgICAgICAgICAgICAgICAgaWYgKCsrcHRyID49IGVuZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggTElURVJBTFxuIiwgcGF0dGVybiwgcHRyKSk7CisgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHI7CisgICAgICAgICAgICBzdGF0ZS0+cHRyID0gcHRyICsgcHJlZml4X3NraXA7CisgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19MSVRFUkFMKQorICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiB3ZSBnb3QgYWxsIG9mIGl0ICovCisgICAgICAgICAgICBzdGF0dXMgPSBTUkUobWF0Y2gpKHN0YXRlLCBwYXR0ZXJuICsgMipwcmVmaXhfc2tpcCwgMCk7CisgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgICAgICsrcHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChwcmVmaXhfbGVuID4gMSkgewogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEga25vd24gcHJlZml4LiAgdXNlIHRoZSBvdmVybGFwCiAgICAgICAgICAgIHRhYmxlIHRvIHNraXAgZm9yd2FyZCBhcyBmYXN0IGFzIHdlIHBvc3NpYmx5IGNhbiAqLwpAQCAtMTMwNSwzMiArMTMyOCw4IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotI2VuZGlmCiAKLSAgICBpZiAocGF0dGVyblswXSA9PSBTUkVfT1BfTElURVJBTCkgewotICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgbGl0ZXJhbCBjaGFyYWN0ZXIuICB0aGlzIGlzIHVzZWQKLSAgICAgICAgICAgZm9yIHNob3J0IHByZWZpeGVzLCBhbmQgaWYgZmFzdCBzZWFyY2ggaXMgZGlzYWJsZWQgKi8KLSAgICAgICAgU1JFX0NIQVIgYyA9IChTUkVfQ0hBUikgcGF0dGVyblsxXTsKLSNpZiBTSVpFT0ZfU1JFX0NIQVIgPCA0Ci0gICAgICAgIGlmICgoU1JFX0NPREUpIGMgIT0gcGF0dGVyblsxXSkKLSAgICAgICAgICAgIHJldHVybiAwOyAvKiBsaXRlcmFsIGNhbid0IG1hdGNoOiBkb2Vzbid0IGZpdCBpbiBjaGFyIHdpZHRoICovCi0jZW5kaWYKLSAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgewotICAgICAgICAgICAgd2hpbGUgKCpwdHIgIT0gYykgewotICAgICAgICAgICAgICAgIGlmICgrK3B0ciA+PSBlbmQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIExJVEVSQUxcbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyOwotICAgICAgICAgICAgc3RhdGUtPnB0ciA9ICsrcHRyOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fTElURVJBTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogd2UgZ290IGFsbCBvZiBpdCAqLwotICAgICAgICAgICAgc3RhdHVzID0gU1JFKG1hdGNoKShzdGF0ZSwgcGF0dGVybiArIDIsIDApOwotICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChjaGFyc2V0KSB7CisgICAgaWYgKGNoYXJzZXQpIHsKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGNoYXJhY3RlciBmcm9tIGEga25vd24gc2V0ICovCiAgICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CiAgICAgICAgIGZvciAoOzspIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYyBiL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYwppbmRleCBmODRjYzc4Li4zNGE2ZmM1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCkBAIC03OSw2ICs3OSw3IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0ZSRUVfQ0xBU1MpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9JTVBPUlQpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9CT1VORCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0FOTk9UKTsKIAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX0ZVTkNUSU9OIiwgRnVuY3Rpb25CbG9jayk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRZUEVfQ0xBU1MiLCBDbGFzc0Jsb2NrKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdGltZW1vZHVsZS5jIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKaW5kZXggZDJjYWFjZC4uODE5NGZkOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy90aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKQEAgLTE2MCw3ICsxNjAsOSBAQAogImNsb2NrX2dldHRpbWUoY2xrX2lkKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXAogUmV0dXJuIHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLiIpOworI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiAKKyNpZmRlZiBIQVZFX0NMT0NLX1NFVFRJTUUKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2Nsb2NrX3NldHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTkxLDcgKzE5Myw5IEBACiAiY2xvY2tfc2V0dGltZShjbGtfaWQsIHRpbWUpXG5cCiBcblwKIFNldCB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKyNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfU0VUVElNRSAqLwogCisjaWZkZWYgSEFWRV9DTE9DS19HRVRSRVMKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2Nsb2NrX2dldHJlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yMTUsNyArMjE5LDcgQEAKICJjbG9ja19nZXRyZXMoY2xrX2lkKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXAogUmV0dXJuIHRoZSByZXNvbHV0aW9uIChwcmVjaXNpb24pIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLiIpOwotI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFJFUyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9zbGVlcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKQEAgLTI1MCwxMCArMjU0LDggQEAKICAgICB7InRtX3dkYXkiLCAiZGF5IG9mIHdlZWssIHJhbmdlIFswLCA2XSwgTW9uZGF5IGlzIDAifSwKICAgICB7InRtX3lkYXkiLCAiZGF5IG9mIHllYXIsIHJhbmdlIFsxLCAzNjZdIn0sCiAgICAgeyJ0bV9pc2RzdCIsICIxIGlmIHN1bW1lciB0aW1lIGlzIGluIGVmZmVjdCwgMCBpZiBub3QsIGFuZCAtMSBpZiB1bmtub3duIn0sCi0jaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHsidG1fem9uZSIsICJhYmJyZXZpYXRpb24gb2YgdGltZXpvbmUgbmFtZSJ9LAogICAgIHsidG1fZ210b2ZmIiwgIm9mZnNldCBmcm9tIFVUQyBpbiBzZWNvbmRzIn0sCi0jZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogICAgIHswfQogfTsKIApAQCAtMjc1LDcgKzI3NywxMSBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi10bXRvdHVwbGUoc3RydWN0IHRtICpwKQordG10b3R1cGxlKHN0cnVjdCB0bSAqcAorI2lmbmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgICAgICwgY29uc3QgY2hhciAqem9uZSwgaW50IGdtdG9mZgorI2VuZGlmCispCiB7CiAgICAgUHlPYmplY3QgKnYgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmU3RydWN0VGltZVR5cGUpOwogICAgIGlmICh2ID09IE5VTEwpCkBAIC0yOTYsNiArMzAyLDEwIEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA5LAogICAgICAgICBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHAtPnRtX3pvbmUsICJzdXJyb2dhdGVlc2NhcGUiKSk7CiAgICAgU0VUKDEwLCBwLT50bV9nbXRvZmYpOworI2Vsc2UKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDksCisgICAgICAgIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpKTsKKyAgICBTRVQoMTAsIGdtdG9mZik7CiAjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogI3VuZGVmIFNFVAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CkBAIC0zMTEsNyArMzIxLDcgQEAKICAgIFJldHVybnMgbm9uLXplcm8gb24gc3VjY2VzcyAocGFyYWxsZWxzIFB5QXJnX1BhcnNlVHVwbGUpLgogKi8KIHN0YXRpYyBpbnQKLXBhcnNlX3RpbWVfdF9hcmdzKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIHRpbWVfdCAqcHdoZW4pCitwYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQogewogICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CiAgICAgdGltZV90IHdoZW50OwpAQCAtMzQ4LDkgKzM1OCwyNiBAQAogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIH0KICAgICBidWYgPSAqbG9jYWw7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1Zik7CisjZWxzZQorICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1ZiwgIlVUQyIsIDApOworI2VuZGlmCiB9CiAKKyNpZm5kZWYgSEFWRV9USU1FR00KK3N0YXRpYyB0aW1lX3QKK3RpbWVnbShzdHJ1Y3QgdG0gKnApCit7CisgICAgLyogWFhYOiB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdpbGwgbm90IHdvcmsgZm9yIHRtX3llYXIgPCAxOTcwLgorICAgICAgIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIHRpbWVnbSBkbyBub3Qgc3VwcG9ydAorICAgICAgIG5lZ2F0aXZlIHRpbWVzdGFtcHMgYW55d2F5cy4gKi8KKyAgICByZXR1cm4gcC0+dG1fc2VjICsgcC0+dG1fbWluKjYwICsgcC0+dG1faG91ciozNjAwICsgcC0+dG1feWRheSo4NjQwMCArCisgICAgICAgIChwLT50bV95ZWFyLTcwKSozMTUzNjAwMCArICgocC0+dG1feWVhci02OSkvNCkqODY0MDAgLQorICAgICAgICAoKHAtPnRtX3llYXItMSkvMTAwKSo4NjQwMCArICgocC0+dG1feWVhcisyOTkpLzQwMCkqODY0MDA7Cit9CisjZW5kaWYKKwogUHlEb2NfU1RSVkFSKGdtdGltZV9kb2MsCiAiZ210aW1lKFtzZWNvbmRzXSkgLT4gKHRtX3llYXIsIHRtX21vbiwgdG1fbWRheSwgdG1faG91ciwgdG1fbWluLFxuXAogICAgICAgICAgICAgICAgICAgICAgICB0bV9zZWMsIHRtX3dkYXksIHRtX3lkYXksIHRtX2lzZHN0KVxuXApAQCAtMzkxLDcgKzQxOCwxOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAocHlsb2NhbHRpbWUoJndoZW4sICZidWYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmKTsKKyNlbHNlCisgICAgeworICAgICAgICBzdHJ1Y3QgdG0gbG9jYWwgPSBidWY7CisgICAgICAgIGNoYXIgem9uZVsxMDBdOworICAgICAgICBpbnQgZ210b2ZmOworICAgICAgICBzdHJmdGltZSh6b25lLCBzaXplb2YoYnVmKSwgIiVaIiwgJmJ1Zik7CisgICAgICAgIGdtdG9mZiA9IHRpbWVnbSgmYnVmKSAtIHdoZW47CisgICAgICAgIHJldHVybiB0bXRvdHVwbGUoJmxvY2FsLCB6b25lLCBnbXRvZmYpOworICAgIH0KKyNlbmRpZgogfQogCiBQeURvY19TVFJWQVIobG9jYWx0aW1lX2RvYywKQEAgLTczMiwxMCArNzcwLDEwIEBACiB7CiAgICAgLyogSW5zcGlyZWQgYnkgT3BlbiBHcm91cCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIGF0CiAgICAgICogaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvYXNjdGltZS5odG1sICovCi0gICAgc3RhdGljIGNoYXIgd2RheV9uYW1lWzddWzRdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyIHdkYXlfbmFtZVs3XVs0XSA9IHsKICAgICAgICAgIlN1biIsICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIKICAgICB9OwotICAgIHN0YXRpYyBjaGFyIG1vbl9uYW1lWzEyXVs0XSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBtb25fbmFtZVsxMl1bNF0gPSB7CiAgICAgICAgICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCiAgICAgICAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIKICAgICB9OwpAQCAtMTAzNCw2ICsxMDcyLDcgQEAKICAgICB9CiAjZW5kaWYKIAorICAgIC8qIEN1cnJlbnRseSwgUHl0aG9uIDMgcmVxdWlyZXMgY2xvY2soKSB0byBidWlsZDogc2VlIGlzc3VlICMyMjYyNCAqLwogICAgIHJldHVybiBmbG9hdGNsb2NrKGluZm8pOwogI2VuZGlmCiB9CkBAIC0xMTQ1LDYgKzExODQsMjcgQEAKIEdldCBpbmZvcm1hdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrLiIpOwogCiBzdGF0aWMgdm9pZAorZ2V0X3pvbmUoY2hhciAqem9uZSwgaW50IG4sIHN0cnVjdCB0bSAqcCkKK3sKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgc3RybmNweSh6b25lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCBuKTsKKyNlbHNlCisgICAgdHpzZXQoKTsKKyAgICBzdHJmdGltZSh6b25lLCBuLCAiJVoiLCBwKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50CitnZXRfZ210b2ZmKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnApCit7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIHJldHVybiBwLT50bV9nbXRvZmY7CisjZWxzZQorICAgIHJldHVybiB0aW1lZ20ocCkgLSB0OworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCiBQeUluaXRfdGltZXpvbmUoUHlPYmplY3QgKm0pIHsKICAgICAvKiBUaGlzIGNvZGUgbW92ZWQgZnJvbSBQeUluaXRfdGltZSB3aG9sZXNhbGUgdG8gYWxsb3cgY2FsbGluZyBpdCBmcm9tCiAgICAgdGltZV90enNldC4gSW4gdGhlIGZ1dHVyZSwgc29tZSBwYXJ0cyBvZiBpdCBjYW4gYmUgbW92ZWQgYmFjawpAQCAtMTE3Niw3ICsxMjM2LDYgQEAKICAgICBvdHoxID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh0em5hbWVbMV0sICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInR6bmFtZSIsIFB5X0J1aWxkVmFsdWUoIihOTikiLCBvdHowLCBvdHoxKSk7CiAjZWxzZSAvKiAhSEFWRV9UWk5BTUUgfHwgX19HTElCQ19fIHx8IF9fQ1lHV0lOX18qLwotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICB7CiAjZGVmaW5lIFlFQVIgKCh0aW1lX3QpKCgzNjUgKiAyNCArIDYpICogMzYwMCkpCiAgICAgICAgIHRpbWVfdCB0OwpAQCAtMTE4NSwxMyArMTI0NCwxMyBAQAogICAgICAgICBjaGFyIGphbm5hbWVbMTBdLCBqdWx5bmFtZVsxMF07CiAgICAgICAgIHQgPSAodGltZSgodGltZV90ICopMCkgLyBZRUFSKSAqIFlFQVI7CiAgICAgICAgIHAgPSBsb2NhbHRpbWUoJnQpOwotICAgICAgICBqYW56b25lID0gLXAtPnRtX2dtdG9mZjsKLSAgICAgICAgc3RybmNweShqYW5uYW1lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCA5KTsKKyAgICAgICAgZ2V0X3pvbmUoamFubmFtZSwgOSwgcCk7CisgICAgICAgIGphbnpvbmUgPSAtZ2V0X2dtdG9mZih0LCBwKTsKICAgICAgICAgamFubmFtZVs5XSA9ICdcMCc7CiAgICAgICAgIHQgKz0gWUVBUi8yOwogICAgICAgICBwID0gbG9jYWx0aW1lKCZ0KTsKLSAgICAgICAganVseXpvbmUgPSAtcC0+dG1fZ210b2ZmOwotICAgICAgICBzdHJuY3B5KGp1bHluYW1lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCA5KTsKKyAgICAgICAgZ2V0X3pvbmUoanVseW5hbWUsIDksIHApOworICAgICAgICBqdWx5em9uZSA9IC1nZXRfZ210b2ZmKHQsIHApOwogICAgICAgICBqdWx5bmFtZVs5XSA9ICdcMCc7CiAKICAgICAgICAgaWYoIGphbnpvbmUgPCBqdWx5em9uZSApIHsKQEAgLTEyMTMsOCArMTI3Miw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYW5uYW1lLCBqdWx5bmFtZSkpOwogICAgICAgICB9CiAgICAgfQotI2Vsc2UKLSNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAjaWZkZWYgX19DWUdXSU5fXwogICAgIHR6c2V0KCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgInRpbWV6b25lIiwgX3RpbWV6b25lKTsKQEAgLTEyMjQsMjUgKzEyODEsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoenopIiwgX3R6bmFtZVswXSwgX3R6bmFtZVsxXSkpOwogI2VuZGlmIC8qIF9fQ1lHV0lOX18gKi8KICNlbmRpZiAvKiAhSEFWRV9UWk5BTUUgfHwgX19HTElCQ19fIHx8IF9fQ1lHV0lOX18qLwotCi0jaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUkVBTFRJTUUpOwotI2lmZGVmIENMT0NLX01PTk9UT05JQwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQyk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19NT05PVE9OSUNfUkFXCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDX1JBVyk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19ISUdIUkVTCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfSElHSFJFUyk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19USFJFQURfQ1BVVElNRV9JRCk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KIH0KIAogCkBAIC0xMjUzLDcgKzEyOTEsMTEgQEAKICNlbmRpZgogI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQogICAgIHsiY2xvY2tfZ2V0dGltZSIsICAgdGltZV9jbG9ja19nZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHRpbWVfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfU0VUVElNRQogICAgIHsiY2xvY2tfc2V0dGltZSIsICAgdGltZV9jbG9ja19zZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX3NldHRpbWVfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCiAgICAgeyJjbG9ja19nZXRyZXMiLCAgICB0aW1lX2Nsb2NrX2dldHJlcywgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXRyZXNfZG9jfSwKICNlbmRpZgogICAgIHsic2xlZXAiLCAgICAgICAgICAgdGltZV9zbGVlcCwgTUVUSF9PLCBzbGVlcF9kb2N9LApAQCAtMTM0OSwxNyArMTM5MSwzMiBAQAogICAgIC8qIFNldCwgb3IgcmVzZXQsIG1vZHVsZSB2YXJpYWJsZXMgbGlrZSB0aW1lLnRpbWV6b25lICovCiAgICAgUHlJbml0X3RpbWV6b25lKG0pOwogCisjaWZkZWYgQ0xPQ0tfUkVBTFRJTUUKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19SRUFMVElNRSk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19NT05PVE9OSUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOworI2VuZGlmCisKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU3RydWN0VGltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3RpbWVfdHlwZV9kZXNjKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKCZTdHJ1Y3RUaW1lVHlwZSk7Ci0jaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfU1RSVUNUX1RNX0lURU1TIiwgMTEpOwotI2Vsc2UKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDkpOwotI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdHJ1Y3RfdGltZSIsIChQeU9iamVjdCopICZTdHJ1Y3RUaW1lVHlwZSk7CiAgICAgaW5pdGlhbGl6ZWQgPSAxOwogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YS5jIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCmluZGV4IDQ3MWQwNjAuLmM4NmZlMjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGEuYworKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGNhdGVnb3J5X2NoYW5nZWQ7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBkZWNpbWFsX2NoYW5nZWQ7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBtaXJyb3JlZF9jaGFuZ2VkOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VkOwogICAgIGNvbnN0IGRvdWJsZSBudW1lcmljX2NoYW5nZWQ7CiB9IGNoYW5nZV9yZWNvcmQ7CiAKQEAgLTM3NSw2ICszNzYsOCBAQAogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKICAgICAgICAgaWYgKG9sZC0+Y2F0ZWdvcnlfY2hhbmdlZCA9PSAwKQogICAgICAgICAgICAgaW5kZXggPSAwOyAvKiB1bmFzc2lnbmVkICovCisgICAgICAgIGVsc2UgaWYgKG9sZC0+ZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VkICE9IDB4RkYpCisgICAgICAgICAgICBpbmRleCA9IG9sZC0+ZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VkOwogICAgIH0KICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5VW5pY29kZV9FYXN0QXNpYW5XaWR0aE5hbWVzW2luZGV4XSk7CiB9CkBAIC04ODQsNyArODg3LDcgQEAKICAgICByZXR1cm4gaDsKIH0KIAotc3RhdGljIGNoYXIgKmhhbmd1bF9zeWxsYWJsZXNbXVszXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaGFuZ3VsX3N5bGxhYmxlc1tdWzNdID0gewogICAgIHsgIkciLCAgIkEiLCAgICIiICAgfSwKICAgICB7ICJHRyIsICJBRSIsICAiRyIgIH0sCiAgICAgeyAiTiIsICAiWUEiLCAgIkdHIiB9LApAQCAtMTA1Nyw3ICsxMDYwLDcgQEAKICAgICBpbnQgaSwgbGVuMTsKICAgICAqbGVuID0gLTE7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgY2hhciAqcyA9IGhhbmd1bF9zeWxsYWJsZXNbaV1bY29sdW1uXTsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IGhhbmd1bF9zeWxsYWJsZXNbaV1bY29sdW1uXTsKICAgICAgICAgbGVuMSA9IFB5X1NBRkVfRE9XTkNBU1Qoc3RybGVuKHMpLCBzaXplX3QsIGludCk7CiAgICAgICAgIGlmIChsZW4xIDw9ICpsZW4pCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaCBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAppbmRleCA4OWQ4NzY4Li5lYTQwYzJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCkBAIC0xLDYgKzEsNiBAQAogLyogdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgMy4yICovCiAKLSNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI4LjAuMCIKKyNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI5LjAuMCIKIC8qIGEgbGlzdCBvZiB1bmlxdWUgZGF0YWJhc2UgcmVjb3JkcyAqLwogY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCBfUHlVbmljb2RlX0RhdGFiYXNlX1JlY29yZHNbXSA9IHsKICAgICB7MCwgMCwgMCwgMCwgMCwgMH0sCkBAIC0yNDIsMTIgKzI0MiwxMyBAQAogICAgIHsyNywgMCwgMTEsIDAsIDUsIDB9LAogICAgIHsyNywgMCwgMTksIDEsIDQsIDEzNn0sCiAgICAgezI3LCAwLCAxOSwgMSwgNCwgMTB9LAorICAgIHszMCwgMCwgMTksIDAsIDIsIDB9LAogICAgIHsyMiwgMCwgMTksIDEsIDIsIDE3MH0sCiAgICAgezIzLCAwLCAxOSwgMSwgMiwgMTcwfSwKICAgICB7MzAsIDAsIDEsIDAsIDQsIDEzNn0sCiAgICAgezksIDAsIDE5LCAwLCA0LCAwfSwKKyAgICB7MjcsIDAsIDE5LCAwLCAyLCAwfSwKICAgICB7MjcsIDAsIDE5LCAxLCA1LCAxNzB9LAotICAgIHszMCwgMCwgMTksIDAsIDIsIDB9LAogICAgIHszMCwgMCwgMTksIDAsIDIsIDEzNn0sCiAgICAgezEwLCAwLCAxOCwgMCwgMCwgMTM2fSwKICAgICB7MjYsIDAsIDE5LCAwLCAyLCAwfSwKQEAgLTMyOSw2ICszMzAsNyBAQAogICAgIHsxLCAwLCA0LCAwLCA1LCAwfSwKICAgICB7MiwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezksIDAsIDEyLCAwLCA1LCAwfSwKKyAgICB7NCwgOSwgMSwgMCwgNSwgMH0sCiAgICAgezMwLCAwLCAxLCAwLCA1LCAxNzB9LAogICAgIHs1LCAyMTYsIDEsIDAsIDUsIDB9LAogICAgIHs1LCAyMjYsIDEsIDAsIDUsIDB9LApAQCAtMzM2LDYgKzMzOCw3IEBACiAgICAgezcsIDAsIDksIDAsIDUsIDEzNn0sCiAgICAgezMwLCAwLCAxLCAwLCA1LCAxMzZ9LAogICAgIHszMCwgMCwgMSwgMCwgNCwgMH0sCisgICAgezI5LCAwLCAxOSwgMCwgMiwgMH0sCiB9OwogCiAvKiBSZWluZGV4aW5nIG9mIE5GQyBmaXJzdCBjaGFyYWN0ZXJzLiAqLwpAQCAtNzMwLDM5ICs3MzMsMzkgQEAKICAgICAxMjUsIDEyNiwgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgCiAgICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxMzgsIDQxLCA0MSwgMTQ1LCAxMzgsIDE0NiwgMTQ3LCAxNDgsIAogICAgIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTM4LCAxMzgsIDE1NiwgMTM4LCAxMzgsIDEzOCwgMTU3LCAKLSAgICAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxMzgsIDEzOCwgMTY0LCAxMzgsIDE2NSwgMTY2LCAxNjcsIDE2OCwgCi0gICAgMTM4LCAxMzgsIDE2OSwgMTM4LCAxMzgsIDEzOCwgMTcwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzEsIDE3MiwgNDEsIDE3MywgMTM4LCAxMzgsIAorICAgIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDEzOCwgMTY0LCAxNjUsIDEzOCwgMTY2LCAxNjcsIDE2OCwgMTY5LCAKKyAgICAxMzgsIDEzOCwgMTcwLCAxMzgsIDEzOCwgMTM4LCAxNzEsIDEzOCwgMTM4LCAxNzIsIDE3MywgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NCwgMTc1LCA0MSwgMTc2LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NywgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc1LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTgwLCAxODEsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTgzLCAxODQsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxODUsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxODYsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODgsIDE4OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxODMsIDE4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxODUsIAotICAgIDE4NiwgMTg3LCAxODgsIDEzOCwgMTg5LCAxMzgsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgMTk4LCAxOTksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAyMDAsIDIwMSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAyMDIsIDIwMywgMTM4LCAxMzgsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAxMzgsIDIwOSwgMjEwLCAyMDksIDIwOSwgCi0gICAgMjExLCAyMTIsIDIwOSwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDE5MCwgCisgICAgMTkxLCAxOTIsIDE5MywgMTM4LCAxOTQsIDEzOCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyMDMsIDIwNCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAyMDUsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDIwNiwgMjA3LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDIwOSwgMjEwLCAxMzgsIDEzOCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDEzOCwgMjE2LCAyMTcsIDIxOCwgMjE5LCAKKyAgICAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCkBAIC03ODcsMTkgKzc5MCwxOSBAQAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjMwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjIxLCAxMDEsIDIyMiwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIzMSwgMTAxLCAyMzIsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAyMjMsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEwMSwgMjMzLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEyMiwgMTIyLCAxMjIsIDEyMiwgMjI0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMjIsIDEyMiwgMTIyLCAxMjIsIDIzNCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCkBAIC0xMjAyLDcgKzEyMDUsNyBAQAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDIyNSwgMTM4LCAyMjYsIDIyNywgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAyMzUsIDEzOCwgMjM2LCAyMzcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCkBAIC0xMjc1LDcgKzEyNzgsNyBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAotICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMjI4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDIzOCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCkBAIC0xMzEyLDcgKzEzMTUsNyBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAotICAgIDEyMSwgMjI4LCAKKyAgICAxMjEsIDIzOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0xNDQ0LDE3MCArMTQ0NywxNzEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIAotICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDE0MCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDE0MSwgNDgsIDEzOSwgMTM5LCAxMzksIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgMTM5LCAKLSAgICAxMzksIDQ4LCA4MSwgODYsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgCi0gICAgMTQzLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCA4MywgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIAotICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAKLSAgICAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgCi0gICAgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAKLSAgICAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIAotICAgIDE0NywgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5LCAxNDYsIDAsIDAsIDAsIDAsIAotICAgIDE0MywgMTQzLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MCwgNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEzNSwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgMTQwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAwLCAwLCAwLCAxMzksIDEzOSwgMTM5LCAwLCAxNDcsIAotICAgIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODUsIDI2LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAKLSAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgMCwgMCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMTM1LCAxMzUsIDE1MCwgMCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MiwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCAwLCAKLSAgICAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxNTQsIDE0NywgMTM5LCAxNDYsIDEzOSwgMTM5LCAwLCAxNTQsIDE0NywgCi0gICAgMTQ3LCAwLCAxNDcsIDE0NywgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgCi0gICAgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDAsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEwOCwgCisgICAgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDEyMSwgMTIyLCAxMjMsIDgxLCAKKyAgICA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgCi0gICAgMTM5LCAwLCAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICAwLCAwLCAxNTUsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIAotICAgIDE0NywgMTM5LCAxNDcsIDE0NywgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU3LCAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAotICAgIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIAotICAgIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAKLSAgICAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIAotICAgIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCAKLSAgICA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgCi0gICAgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgCi0gICAgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgCi0gICAgMTY2LCAxNjYsIDEzNSwgMTM5LCAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIAotICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgCi0gICAgMTM5LCAxMzUsIDE0OSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIAotICAgIDE0MiwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxMzksIDEzOSwgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgNTEsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM5LCAxNDEsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDEzOSwgMTM5LCA0OCwgODEsIDg2LCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCA4MywgODMsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM1LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAxNDcsIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE0OSwgMTQ2LCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODAsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDE0MCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM1LCAxMzksIDEzOSwgMCwgCisgICAgMCwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDg1LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgNDgsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAKKyAgICAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAxNDcsIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgNDgsIDgwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCAxNDYsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgNDgsIDQ4LCA0OCwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDEzOSwgCisgICAgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDE1NSwgMCwgMCwgMCwgCisgICAgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgMTQ3LCAxMzksIDE0NywgMTQ3LCAKKyAgICAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTU3LCAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAKKyAgICAxNTgsIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIAorICAgIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDEzNSwgMTM5LCAKKyAgICAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDE0OSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIDE0MiwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIAorICAgIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgODEsIDgxLCAKKyAgICA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDAsIDg0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCisgICAgODQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0xNjI3LDQ1ICsxNjMxLDQ1IEBACiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjMsIDE2NCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjMsIDE2NCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgMTczLCAxNzMsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAxNDIsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgCi0gICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxNDIsIDEzNSwgODMsIDgzLCA4MywgNTMsIDgzLCA4MywgODMsIDg1LCA0OCwgODEsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAKLSAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIAorICAgIDEzNSwgODMsIDgzLCA4MywgNTMsIDgzLCA4MywgODMsIDg1LCA0OCwgODEsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgODgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDg4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKICAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKICAgICAxMzksIDEzOSwgODcsIDgxLCA4NiwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDEzOCwgMTM4LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMTcxNCwyNyArMTcxOCwyNyBAQAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgODMsIDgzLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIAotICAgIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgMTc2LCAxNzYsIAotICAgIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCi0gICAgODEsIDQ4LCA0OCwgMCwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODEsIDgxLCA4MSwgODMsIDE3NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4MSwgMTM5LCAKKyAgICAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDQ4LCA0OCwgNDgsIDQ4LCA4NiwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzOSwgMTM5LCA4MSwgNDgsIDQ4LCAwLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgCisgICAgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCiAgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCAxNzcsIAotICAgIDE3OCwgODYsIDE3OSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgCisgICAgODEsIDgxLCAxNzcsIDE3OCwgODYsIDE3OSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKICAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwLCA4NiwgODEsIDg2LCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgODEsIDE4MCwgODYsIDgxLCA4NiwgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIApAQCAtMTc0MywzMzIgKzE3NDcsMzMzIEBACiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxODEsIDQ3LCA0NywgNDQsIDQ3LCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKLSAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIAotICAgIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgCi0gICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCi0gICAgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAxODMsIDU4LCAxODIsIDU4LCA1OCwgNzYsIDQzLCA0MywgCi0gICAgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDAsIDAsIAotICAgIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAwLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDQzLCA0MywgNDMsIDQzLCAKLSAgICAzOCwgMzgsIDM4LCAxODQsIDM4LCA3NiwgMTg1LCAxODUsIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgCi0gICAgMzgsIDE4NCwgMTgzLCAxODUsIDU4LCAwLCAxODYsIDE4NiwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKLSAgICAxODcsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTg4LCAxODksIDE5MCwgMTkxLCA4NCwgMTkwLCAxOTAsIDE5MCwgMjIsIDE5MiwgCi0gICAgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAxOTYsIDIyLCAyMiwgMjIsIDEzOCwgMTk3LCAxOTcsIDE5NywgCi0gICAgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjEsIDIwNSwgMTEwLCAyMDUsIDIwNiwgMjA3LCAyMiwgCi0gICAgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAxMzgsIDE5NywgMjA4LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDIwOSwgCi0gICAgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAKLSAgICAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMCwgMjEwLCAyMTEsIDIxMiwgMjEzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAyMTQsIAotICAgIDUxLCAwLCAwLCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIxNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMCwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCAKLSAgICA4NSwgODUsIDg1LCA4NSwgMjIwLCAyMjEsIDg1LCA4NSwgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIAotICAgIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgMTc2LCAxNzYsIDgxLCA4MSwgODEsIDgxLCAxNzYsIDE3NiwgMTc2LCA4MSwgODEsIAotICAgIDgyLCA4MiwgODIsIDgyLCA4MSwgODIsIDgyLCA4MiwgMTc2LCAxNzYsIDgxLCA4NiwgODEsIDE3NiwgMTc2LCA4NiwgODYsIAotICAgIDg2LCA4NiwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMiwgMjIyLCA0OSwgCi0gICAgMjIzLCAyNiwgMjIzLCAyMjIsIDQ5LCAyNiwgMjIzLCAzNSwgNDksIDQ5LCA0OSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0NiwgCi0gICAgMjYsIDQ5LCAyMjMsIDI2LCA3OCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAyNiwgMjYsIDIyMiwgMjIzLCAyMjMsIDI2LCA0OSwgCi0gICAgMjYsIDIyNCwgMjYsIDQ5LCAyNiwgMTg0LCAyMjQsIDQ5LCA0OSwgMjI1LCAzNSwgNDksIDQ5LCA0NCwgNDksIDM1LCAxNTYsIAotICAgIDE1NiwgMTU2LCAxNTYsIDM1LCAyNiwgMjIyLCAzNSwgMzUsIDQ5LCA0OSwgMjI2LCA3OCwgNzgsIDc4LCA3OCwgNDksIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAyNiwgNzgsIDI2LCAyNiwgNDcsIDgwLCAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDIyNywgMjI3LCAyMjcsIAotICAgIDIyNywgMjI3LCAyMjcsIDM3LCAzNywgMzcsIDM3LCAyMjcsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCi0gICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAxNzMsIDE3MywgMTczLCA0NCwgCi0gICAgNDcsIDE3MywgMTczLCAxNzMsIDE3MywgMzcsIDI2LCAyNiwgMCwgMCwgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDIzMCwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAKLSAgICAyMzIsIDIzMywgMjMzLCAyMzQsIDc4LCA3OCwgNDAsIDIzMywgMjM0LCAyMzIsIDIzMywgMjM0LCAyMzIsIDc4LCA0MCwgNzgsIAotICAgIDIzMywgMjM1LCAyMzYsIDc4LCAyMzMsIDIzMiwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMzLCA0MCwgMjMzLCAKLSAgICAyMzMsIDIzMiwgMjMyLCA0MCwgMjM0LCA0MCwgMjM0LCA0MCwgNDAsIDQwLCA0MCwgMjMzLCAyMzcsIDIyNiwgMjMzLCAyMjYsIAotICAgIDIyNiwgMjMyLCAyMzIsIDIzMiwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMywgMjMzLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMywgMjM0LCAyMzIsIDIzMiwgMjMzLCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKLSAgICAyMzgsIDQwLCAyMzQsIDc4LCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzMsIDIzMywgNzgsIDIzMCwgMjM4LCAKLSAgICAyMzgsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzIsIAotICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA0MCwgNzgsIDc4LCAyMzIsIDQwLCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNDAsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAotICAgIDI0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKKyAgICAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIAorICAgIDM4LCAwLCAzOCwgMCwgMzgsIDAsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAzOCwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIAorICAgIDE4MiwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKKyAgICAxODMsIDE4MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKKyAgICAxODMsIDE4MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKKyAgICAxODMsIDE4MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMTgzLCA1OCwgMTgyLCAKKyAgICA1OCwgNTgsIDc2LCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgNzYsIDc2LCA3NiwgNDMsIAorICAgIDQzLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMCwgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgCisgICAgMTgyLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAzOCwgNzYsIDE4NSwgMTg1LCAwLCAwLCA0MywgNDMsIDQzLCAKKyAgICAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgMTg1LCA1OCwgMCwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE4OCwgMTg5LCAxOTAsIDE5MSwgODQsIDE5MCwgCisgICAgMTkwLCAxOTAsIDIyLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAyMiwgMjIsIDIyLCAKKyAgICAxMzgsIDE5NywgMTk3LCAxOTcsIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIxLCAyMDUsIDExMCwgCisgICAgMjA1LCAyMDYsIDIwNywgMjIsIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgMTM4LCAxOTcsIDIwOCwgMjA4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAyMDksIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMjE0LCA1MSwgMCwgMCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAKKyAgICAyMTcsIDIxOCwgMjE5LCAyMTQsIDM0LCAzNCwgMzQsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIAorICAgIDIxNiwgMjE3LCAyMTgsIDAsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAwLCAKKyAgICAwLCAwLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDIyMCwgMjIxLCA4NSwgODUsIDIzLCA4NSwgODUsIDg1LCAKKyAgICA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NiwgMTc2LCA4MSwgODEsIDgxLCA4MSwgCisgICAgMTc2LCAxNzYsIDE3NiwgODEsIDgxLCA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NiwgMTc2LCA4MSwgODYsIAorICAgIDgxLCAxNzYsIDE3NiwgODYsIDg2LCA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyMjIsIDIyMiwgNDksIDIyMywgMjYsIDIyMywgMjIyLCA0OSwgMjYsIDIyMywgMzUsIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDYsIDI2LCA0OSwgMjIzLCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIDI2LCAyMjIsIAorICAgIDIyMywgMjIzLCAyNiwgNDksIDI2LCAyMjQsIDI2LCA0OSwgMjYsIDE4NCwgMjI0LCA0OSwgNDksIDIyNSwgMzUsIDQ5LCA0OSwgCisgICAgNDQsIDQ5LCAzNSwgMTU2LCAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIyMiwgMzUsIDM1LCA0OSwgNDksIDIyNiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjI3LCAyMjcsIDIyNywgMzcsIAorICAgIDM3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDM3LCAzNywgMjI3LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIAorICAgIDIyOSwgMTczLCAxNzMsIDE3MywgNDQsIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAorICAgIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzAsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDc4LCAyNiwgCisgICAgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzEsIDIzMCwgMjMwLCAyNiwgMjYsIDQwLCAyNiwgNDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgMjMyLCAyMzMsIDIzMywgMjM0LCA3OCwgNzgsIDQwLCAyMzMsIDIzNCwgMjMyLCAKKyAgICAyMzMsIDIzNCwgMjMyLCA3OCwgNDAsIDc4LCAyMzMsIDIzNSwgMjM2LCA3OCwgMjMzLCAyMzIsIDc4LCA3OCwgNzgsIDIzMywgCisgICAgMjMyLCAyMzIsIDIzMywgNDAsIDIzMywgMjMzLCAyMzIsIDIzMiwgNDAsIDIzNCwgNDAsIDIzNCwgNDAsIDQwLCA0MCwgNDAsIAorICAgIDIzMywgMjM3LCAyMjYsIDIzMywgMjI2LCAyMjYsIDIzMiwgMjMyLCAyMzIsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjMyLCA3OCwgCisgICAgMjMyLCAyMzMsIDIzMywgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzMsIAorICAgIDIzNCwgMjMyLCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjM4LCA0MCwgMjM0LCA3OCwgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzIsIAorICAgIDIzMiwgMjMzLCAyMzMsIDc4LCAyMzAsIDIzOCwgMjM4LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgCisgICAgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIAorICAgIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCisgICAgNDAsIDc4LCA3OCwgMjMyLCA0MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDQwLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAKKyAgICAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNDAsIDI0MSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAogICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAotICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDIyNywgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKLSAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzAsIAorICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyMjcsIAorICAgIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAKKyAgICAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAotICAgIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAotICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNDQsIDI0NCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAKKyAgICAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAyNiwgMzAsIDMwLCAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDIzOSwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzksIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyMzksIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzksIDIzOSwgMzAsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMzAsIAorICAgIDMwLCAyMzksIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCi0gICAgMTYzLCAxNjQsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMTUzLCAxNTMsIAorICAgIDE2MywgMTY0LCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDE1MywgMTUzLCAKICAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgNzgsIDc4LCAyMzIsIAotICAgIDIzMiwgMTYzLCAxNjQsIDc4LCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgOSwgMTAsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzIsIDc4LCA3OCwgCisgICAgMjMyLCAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDE2MywgCi0gICAgMTY0LCA5LCAxMCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCi0gICAgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDE2MywgMTY0LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIyNiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMjYsIDIxNiwgCi0gICAgMjE2LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDE2MywgMTY0LCA5LCAxMCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDE2MywgMTY0LCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIyNiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAKKyAgICAyMjYsIDIxNiwgMjE2LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDI0MywgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjQ1LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyMzksIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDcsIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDgxLCA4MSwgODEsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxNTMsIDEzOCwgMTM4LCA0NywgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIAorICAgIDEzOCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDcsIDQ3LCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCA4MywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUxLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIAogICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgCi0gICAgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAotICAgIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTk1LCAwLCAwLCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIAorICAgIDEzOCwgMTM4LCAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA4NCwgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTk1LCAxMzgsIAorICAgIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDI0NiwgMjQ3LCAyNDcsIDI0NywgMjQ0LCAyNDgsIDE3MCwgMjQ5LCAyNTAsIDI1MSwgCi0gICAgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI0NCwgMjQ0LCAyNTAsIDI1MSwgMjUwLCAyNTEsIAotICAgIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU0LCAyNDQsIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAKLSAgICAyNDksIDI0OSwgMjQ5LCAyNDksIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNTksIDI1MiwgMjQ4LCAyNDgsIDI0OCwgCi0gICAgMjQ4LCAyNDgsIDI0NSwgMjQ0LCAyNjAsIDI2MCwgMjYwLCAyNDgsIDE3MCwgMjQ3LCAyNDQsIDI2LCAwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIAotICAgIDE3MCwgMjYxLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMCwgCi0gICAgMCwgMjYyLCAyNjIsIDI2MywgMjYzLCAyNDgsIDI2NCwgMjY1LCAyNTIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIAotICAgIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI0NywgMjQ4LCAyNDgsIDI2NCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNDYsIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMjQ3LCAyNDgsIDI0OCwgMjQ4LCAyMzksIDI0OSwgMTcwLCAKKyAgICAyNTAsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjM5LCAyMzksIDI1MSwgCisgICAgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCAyNTUsIDIzOSwgMjUwLCAyNTAsIAorICAgIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNjAsIDI2MCwgMjUzLCAKKyAgICAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ2LCAyMzksIDI2MSwgMjYxLCAyNjEsIDI0OSwgMTcwLCAyNDgsIDIzOSwgMjYsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAKKyAgICAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgCisgICAgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIAorICAgIDE3MCwgMTcwLCAwLCAwLCAyNjMsIDI2MywgMjY0LCAyNjQsIDI0OSwgMjY1LCAyNjYsIDI1MywgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIAorICAgIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIAorICAgIDI2MiwgMjYyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjQ4LCAyNDksIDI0OSwgMjY1LCAyNjYsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDAsIDI2NiwgMjY2LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAwLCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAwLCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAKLSAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDUsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCi0gICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjY2LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAotICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI0NSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNDYsIDI0NiwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjQ2LCAyNzEsIDI3MSwgMjcxLCAyNzEsIAorICAgIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKKyAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNDYsIDI0NiwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKQEAgLTIwODEsMjAgKzIwODYsMjAgQEAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjQ5LCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKQEAgLTIxMDMsMTI0ICsyMTA4LDExNSBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCAKKyAgICA1MywgNTMsIDUzLCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA1MywgMTM4LCAxMzgsIDEzOCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNTEsIDgxLCA4MSwgNDgsIDQ4LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNTEsIAorICAgIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCi0gICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTQsIDU0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTQsIDU0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUyLCAyNzEsIDI3MSwgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ4LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDUyLCAyNzIsIDI3MiwgNDQsIDQ3LCA0NCwgNDcsIDQ4LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCA4NSwgMjI1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIAorICAgIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM5LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCAKKyAgICA4NSwgMjI1LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgNDgsIAorICAgIDgzLCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCA4NiwgODYsIDgzLCAKKyAgICA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNTMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgNDgsIDEzOSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDQ4LCA4MSwgODEsIDg2LCA0OCwgNDgsIDgxLCA4MSwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA4MSwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgODMsIDgzLCA0OCwgNTMsIDUzLCAKKyAgICAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMjcyLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzOSwgMTM5LCA4MywgMTM5LCAxNDIsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCiAgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA0OCwgODMsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIDg2LCA4NiwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIAotICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAKLSAgICAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKLSAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MCwgODAsIDgwLCAKLSAgICA0OCwgMTM5LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA4MSwgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIAotICAgIDgxLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAyNzEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDgzLCAxMzksIAotICAgIDE0MiwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MywgMjczLCAyNzMsIDI3MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIApAQCAtMjIyOSw3ICsyMjI1LDggQEAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzQsIDI3NCwgCisgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDI3MywgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKQEAgLTIyMzgsMzggKzIyMzUsNDcgQEAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDE3MCwgMTcwLCAyNzQsIDE3MCwgMjc0LCAxNzAsIDE3MCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMTcwLCAyNzQsIDI3NCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDAsIDAsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAxNzAsIDE3MCwgMjc1LCAxNzAsIDI3NSwgMTcwLCAxNzAsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMTcwLCAyNzUsIDE3MCwgMjc1LCAxNzAsIDE3MCwgCisgICAgMjc1LCAyNzUsIDE3MCwgMTcwLCAxNzAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAwLCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMjc2LCAyNzUsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAKLSAgICAyNzcsIDI3NywgMjc3LCAyNzcsIDIxNSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCi0gICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMjc1LCAwLCAyNzUsIDI3NSwgMCwgCi0gICAgMjc1LCAyNzUsIDAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NywgMTMxLCAxMzEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI3NiwgMjc3LCAyNzYsIAorICAgIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDIxNSwgMjc2LCAyNzYsIDI3NiwgMjc2LCAKKyAgICAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAwLCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgCisgICAgMCwgMjc2LCAwLCAyNzYsIDI3NiwgMCwgMjc2LCAyNzYsIDAsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgCisgICAgMjc2LCAyNzYsIDI3OCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI3OCwgMjc4LCAKLSAgICAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAKKyAgICAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIApAQCAtMjI4NSwyNyArMjI5MSwyNyBAQAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyNzksIDE5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyODAsIDE5NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDI4MCwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MiwgMjgzLCAyODEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIAotICAgIDgxLCAyODEsIDI4NCwgMjg0LCAyODUsIDI4NSwgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgCi0gICAgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyNDcsIDI0NywgMjgyLCAyODMsIDI4MSwgMjgxLCAyODEsIAotICAgIDI4MSwgMjg1LCAyODUsIDI4NSwgMjg2LCAyODEsIDI4NiwgMCwgMjgxLCAyODYsIDI4MSwgMjgxLCAyODQsIDI4NywgMjg4LCAKLSAgICAyODcsIDI4OCwgMjg3LCAyODgsIDI4OSwgMjgxLCAyODEsIDI5MCwgMjkxLCAyOTIsIDI5MiwgMjkzLCAwLCAyODEsIDI5NCwgCi0gICAgMjg5LCAyODEsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDExOCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI4MSwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAyODIsIDI4MiwgMjgyLCAyODIsIDI4MiwgMjgyLCAKKyAgICAyODIsIDI4MywgMjg0LCAyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIAorICAgIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCAyODIsIDI4NSwgMjg1LCAyODYsIDI4NiwgMjgzLCAyODQsIDI4MywgMjg0LCAKKyAgICAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyNDgsIDI0OCwgCisgICAgMjgzLCAyODQsIDI4MiwgMjgyLCAyODIsIDI4MiwgMjg2LCAyODYsIDI4NiwgMjg3LCAyODIsIDI4NywgMCwgMjgyLCAyODcsIAorICAgIDI4MiwgMjgyLCAyODUsIDI4OCwgMjg5LCAyODgsIDI4OSwgMjg4LCAyODksIDI5MCwgMjgyLCAyODIsIDI5MSwgMjkyLCAKKyAgICAyOTMsIDI5MywgMjk0LCAwLCAyODIsIDI5NSwgMjkwLCAyODIsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDExOCwgCisgICAgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIApAQCAtMjMxNCwxNjUgKzIzMjAsMTY1IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxNzQsIDAsIDI5NSwgMjk1LCAyOTYsIDI5NywgMjk2LCAyOTUsIDI5NSwgCi0gICAgMjk4LCAyOTksIDI5NSwgMzAwLCAzMDEsIDMwMiwgMzAxLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAotICAgIDMwMywgMzAzLCAzMDMsIDMwMywgMzAxLCAyOTUsIDMwNCwgMzA1LCAzMDQsIDI5NSwgMjk1LCAzMDYsIDMwNiwgMzA2LCAKLSAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgCi0gICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMjk4LCAyOTUsIDI5OSwgMzA3LCAzMDgsIAotICAgIDMwNywgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKLSAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDI5OCwgCi0gICAgMzA1LCAyOTksIDMwNSwgMjk4LCAyOTksIDMxMCwgMzExLCAzMTIsIDMxMCwgMzEwLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxNCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTQsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMCwgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMCwgMCwgCi0gICAgMCwgMjk3LCAyOTcsIDMwNSwgMzA3LCAzMTUsIDI5NywgMjk3LCAwLCAzMTYsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE2LCAKLSAgICAzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMzE4LCAzMTgsIDI2LCAzMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTc0LCAwLCAyOTYsIDI5NiwgCisgICAgMjk3LCAyOTgsIDI5NywgMjk2LCAyOTYsIDI5OSwgMzAwLCAyOTYsIDMwMSwgMzAyLCAzMDMsIDMwMiwgMzAyLCAzMDQsIAorICAgIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwMiwgMjk2LCAzMDUsIDMwNiwgMzA1LCAKKyAgICAyOTYsIDI5NiwgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCisgICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAorICAgIDI5OSwgMjk2LCAzMDAsIDMwOCwgMzA5LCAzMDgsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAKKyAgICAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgCisgICAgMzEwLCAzMTAsIDMxMCwgMzEwLCAyOTksIDMwNiwgMzAwLCAzMDYsIDI5OSwgMzAwLCAzMTEsIDMxMiwgMzEzLCAzMTEsIAorICAgIDMxMSwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTUsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNSwgMzE1LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIAorICAgIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIAorICAgIDAsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDAsIDI5OCwgMjk4LCAzMDYsIDMwOCwgMzE2LCAyOTgsIDI5OCwgMCwgMzE3LCAKKyAgICAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxNywgMzE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTksIDMxOSwgCisgICAgMzE5LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgODMsIDEzOCwgODMsIDAsIDAsIAorICAgIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCiAgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAogICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCi0gICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDE1MywgMjYsIDAsIDAsIDAsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYsIDMyMCwgMzIwLCAzMjAsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzIwLCAKICAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCisgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE1MywgMTUzLCAKKyAgICAyNiwgODAsIDgwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDg2LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTczLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMTA3LCAwLCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAorICAgIDAsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA0LCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDAsIDEwNCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjMsIDMyMywgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAxMzUsIAotICAgIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAxMDcsIDEwNywgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgODYsIAorICAgIDEzNSwgODEsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzYsIDg2LCAwLCAwLCAwLCAKLSAgICAwLCAxNDIsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzYsIDg2LCAwLCAKKyAgICAwLCAwLCAwLCAxNDIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDMyMSwgMzIxLCAxMDQsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDMyMiwgMzIyLCAxMDQsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIzLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKKyAgICAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCkBAIC0yNDgzLDIxICsyNDg5LDIxIEBACiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKLSAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCi0gICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAotICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDAsIDAsIDAsIDAsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAogICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKICAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCi0gICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKICAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCi0gICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDAsIDEzOSwgMTM1LCAxMzksIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAorICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKKyAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMCwgMTM5LCAxMzUsIDEzOSwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIApAQCAtMjUzMCwxNSArMjUzNiwxNSBAQAogICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzksIAotICAgIDEzOSwgMTM1LCAxNzUsIDE0NSwgMTM1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzksIDEzNSwgMTc1LCAxNDUsIDEzNSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMjU1MCw2ICsyNTU2LDEzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzksIDE0MiwgMTM1LCAxMzUsIDEzOSwgMTQ1LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDgzLCAwLCA4MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNDksIDE0NywgMTQ3LCAxNDYsIAogICAgIDE0NywgMTM1LCAxMzUsIDEzOSwgMTQyLCAxNDUsIDQ4LCA0OCwgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMjU2NiwyMzAgKzI1NzksMjY4IEBACiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDE0MiwgMTM1LCA4MywgODMsIAogICAgIDgzLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDE3NSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMCwgCi0gICAgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgODMsIAotICAgIDgzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTc1LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCA4MywgODMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIAotICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgNTMsIDUzLCA1MywgNTMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAzMjcsIDQ4LCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICAwLCA4MCwgMTM1LCAxNzYsIDgzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKLSAgICAzMjcsIDMyNywgMTc2LCAxNzYsIDE3NiwgODAsIDgwLCA4MCwgMzI4LCAzMjcsIDMyNywgMzI3LCAzMjcsIDMyNywgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIAotICAgIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIDgxLCA4MSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE3NiwgMTc2LCAxNzYsIAorICAgIDE3NiwgMTc2LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIAorICAgIDgwLCA4MCwgODAsIDUzLCA1MywgNTMsIDUzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCAKKyAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDgwLCAxMzUsIDE3NiwgODMsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjksIDMyOSwgMTc2LCAxNzYsIDE3NiwgODAsIDgwLCA4MCwgCisgICAgMzMwLCAzMjksIDMyOSwgMzI5LCAzMjksIDMyOSwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIDgxLCA4MSwgMjYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAKLSAgICAwLCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDAsIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIAorICAgIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgODAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDEzNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCAxMzUsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDAsIDgxLCA4MSwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKQEAgLTI4MDMsMTEgKzI4NTQsMTggQEAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCi0gICAgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgCi0gICAgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEwNywgMTA3LCAxMDcsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDg2LCA4NiwgCisgICAgODYsIDg2LCA4NiwgODYsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKKyAgICAxMzYsIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgCiAgICAgMTMxLCAwLCAxMzEsIDAsIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDAsIDAsIApAQCAtMjgyMSw3ICsyODc5LDcgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCkBAIC0yODMyLDE3MyArMjg5MCwyMDggQEAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNTMsIDE1MywgMCwgMCwgMCwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzMxLCAwLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDIyMiwgMjIyLCAwLCAwLCAwLCAwLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMjQxLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNTMsIDE1MywgMCwgMCwgMCwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzMzLCAwLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDIyMiwgMjIyLCAwLCAwLCAwLCAwLCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAyNjcsIDMzNCwgMjQyLCAyNjcsIDI2NywgMjY3LCAKKyAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIAotICAgIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA1NCwgNTQsIAotICAgIDU0LCA1NCwgNTQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2OSwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyMzksIAorICAgIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDMzNSwgMzM1LCAzMzUsIDMzNSwgMzM1LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyNiwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMCwgMCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMCwgMCwgCiB9OwogCiAvKiBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KQEAgLTM5NzAsMTAyICs0MDYzLDEwMiBAQAogICAgIDI2NiwgMjg0MzYsIDI2NiwgMjUyMzcsIDI2NiwgMjU0MjksIDI2NiwgMTk5NjgsIDI2NiwgMTk5NzcsIDI2NiwgMzY5MzgsIAogICAgIDI2NiwgMjQwMzgsIDI2NiwgMjAwMTMsIDI2NiwgMjE0OTEsIDI2NiwgMjUzNTEsIDI2NiwgMzYyMDgsIDI2NiwgMjUxNzEsIAogICAgIDI2NiwgMzExMDUsIDI2NiwgMzEzNTQsIDI2NiwgMjE1MTIsIDI2NiwgMjgyODgsIDI2NiwgMjYzNzcsIDI2NiwgMjYzNzYsIAotICAgIDI2NiwgMzAwMDMsIDI2NiwgMjExMDYsIDI2NiwgMjE5NDIsIDc3MCwgMTIzMDgsIDI2NDEyLCAxMjMwOSwgNzcwLCAxMjMwOCwgCi0gICAgMTk5NzcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMDEwOCwgMTIzMDksIDc3MCwgMTIzMDgsIDIzNDMzLCAxMjMwOSwgNzcwLCAKLSAgICAxMjMwOCwgMjg4NTcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTE3MSwgMTIzMDksIDc3MCwgMTIzMDgsIDMwNDIzLCAxMjMwOSwgCi0gICAgNzcwLCAxMjMwOCwgMjEyMTMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTk0MywgMTIzMDksIDI2MywgMjQ0NzEsIDI2MywgCi0gICAgMjE0ODcsIDI1NiwgMjAwMjksIDI1NiwgMjAwMjQsIDI1NiwgMjAwMzMsIDI1NiwgMTMxMzYyLCAyNTYsIDIwMzIwLCAyNTYsIAotICAgIDIwMzk4LCAyNTYsIDIwNDExLCAyNTYsIDIwNDgyLCAyNTYsIDIwNjAyLCAyNTYsIDIwNjMzLCAyNTYsIDIwNzExLCAyNTYsIAotICAgIDIwNjg3LCAyNTYsIDEzNDcwLCAyNTYsIDEzMjY2NiwgMjU2LCAyMDgxMywgMjU2LCAyMDgyMCwgMjU2LCAyMDgzNiwgMjU2LCAKLSAgICAyMDg1NSwgMjU2LCAxMzIzODAsIDI1NiwgMTM0OTcsIDI1NiwgMjA4MzksIDI1NiwgMjA4NzcsIDI1NiwgMTMyNDI3LCAyNTYsIAotICAgIDIwODg3LCAyNTYsIDIwOTAwLCAyNTYsIDIwMTcyLCAyNTYsIDIwOTA4LCAyNTYsIDIwOTE3LCAyNTYsIDE2ODQxNSwgMjU2LCAKLSAgICAyMDk4MSwgMjU2LCAyMDk5NSwgMjU2LCAxMzUzNSwgMjU2LCAyMTA1MSwgMjU2LCAyMTA2MiwgMjU2LCAyMTEwNiwgMjU2LCAKLSAgICAyMTExMSwgMjU2LCAxMzU4OSwgMjU2LCAyMTE5MSwgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTI0MiwgMjU2LCAKLSAgICAyMTI1MywgMjU2LCAyMTI1NCwgMjU2LCAyMTI3MSwgMjU2LCAyMTMyMSwgMjU2LCAyMTMyOSwgMjU2LCAyMTMzOCwgMjU2LCAKLSAgICAyMTM2MywgMjU2LCAyMTM3MywgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAxMzM2NzYsIDI1NiwgCi0gICAgMjg3ODQsIDI1NiwgMjE0NTAsIDI1NiwgMjE0NzEsIDI1NiwgMTMzOTg3LCAyNTYsIDIxNDgzLCAyNTYsIDIxNDg5LCAyNTYsIAotICAgIDIxNTEwLCAyNTYsIDIxNjYyLCAyNTYsIDIxNTYwLCAyNTYsIDIxNTc2LCAyNTYsIDIxNjA4LCAyNTYsIDIxNjY2LCAyNTYsIAotICAgIDIxNzUwLCAyNTYsIDIxNzc2LCAyNTYsIDIxODQzLCAyNTYsIDIxODU5LCAyNTYsIDIxODkyLCAyNTYsIDIxODkyLCAyNTYsIAotICAgIDIxOTEzLCAyNTYsIDIxOTMxLCAyNTYsIDIxOTM5LCAyNTYsIDIxOTU0LCAyNTYsIDIyMjk0LCAyNTYsIDIyMDIyLCAyNTYsIAotICAgIDIyMjk1LCAyNTYsIDIyMDk3LCAyNTYsIDIyMTMyLCAyNTYsIDIwOTk5LCAyNTYsIDIyNzY2LCAyNTYsIDIyNDc4LCAyNTYsIAotICAgIDIyNTE2LCAyNTYsIDIyNTQxLCAyNTYsIDIyNDExLCAyNTYsIDIyNTc4LCAyNTYsIDIyNTc3LCAyNTYsIDIyNzAwLCAyNTYsIAotICAgIDEzNjQyMCwgMjU2LCAyMjc3MCwgMjU2LCAyMjc3NSwgMjU2LCAyMjc5MCwgMjU2LCAyMjgxMCwgMjU2LCAyMjgxOCwgMjU2LCAKLSAgICAyMjg4MiwgMjU2LCAxMzY4NzIsIDI1NiwgMTM2OTM4LCAyNTYsIDIzMDIwLCAyNTYsIDIzMDY3LCAyNTYsIDIzMDc5LCAyNTYsIAotICAgIDIzMDAwLCAyNTYsIDIzMTQyLCAyNTYsIDE0MDYyLCAyNTYsIDE0MDc2LCAyNTYsIDIzMzA0LCAyNTYsIDIzMzU4LCAyNTYsIAotICAgIDIzMzU4LCAyNTYsIDEzNzY3MiwgMjU2LCAyMzQ5MSwgMjU2LCAyMzUxMiwgMjU2LCAyMzUyNywgMjU2LCAyMzUzOSwgMjU2LCAKLSAgICAxMzgwMDgsIDI1NiwgMjM1NTEsIDI1NiwgMjM1NTgsIDI1NiwgMjQ0MDMsIDI1NiwgMjM1ODYsIDI1NiwgMTQyMDksIDI1NiwgCi0gICAgMjM2NDgsIDI1NiwgMjM2NjIsIDI1NiwgMjM3NDQsIDI1NiwgMjM2OTMsIDI1NiwgMTM4NzI0LCAyNTYsIDIzODc1LCAyNTYsIAotICAgIDEzODcyNiwgMjU2LCAyMzkxOCwgMjU2LCAyMzkxNSwgMjU2LCAyMzkzMiwgMjU2LCAyNDAzMywgMjU2LCAyNDAzNCwgMjU2LCAKLSAgICAxNDM4MywgMjU2LCAyNDA2MSwgMjU2LCAyNDEwNCwgMjU2LCAyNDEyNSwgMjU2LCAyNDE2OSwgMjU2LCAxNDQzNCwgMjU2LCAKLSAgICAxMzk2NTEsIDI1NiwgMTQ0NjAsIDI1NiwgMjQyNDAsIDI1NiwgMjQyNDMsIDI1NiwgMjQyNDYsIDI1NiwgMjQyNjYsIDI1NiwgCi0gICAgMTcyOTQ2LCAyNTYsIDI0MzE4LCAyNTYsIDE0MDA4MSwgMjU2LCAxNDAwODEsIDI1NiwgMzMyODEsIDI1NiwgMjQzNTQsIAotICAgIDI1NiwgMjQzNTQsIDI1NiwgMTQ1MzUsIDI1NiwgMTQ0MDU2LCAyNTYsIDE1NjEyMiwgMjU2LCAyNDQxOCwgMjU2LCAyNDQyNywgCi0gICAgMjU2LCAxNDU2MywgMjU2LCAyNDQ3NCwgMjU2LCAyNDUyNSwgMjU2LCAyNDUzNSwgMjU2LCAyNDU2OSwgMjU2LCAyNDcwNSwgCi0gICAgMjU2LCAxNDY1MCwgMjU2LCAxNDYyMCwgMjU2LCAyNDcyNCwgMjU2LCAxNDEwMTIsIDI1NiwgMjQ3NzUsIDI1NiwgMjQ5MDQsIAotICAgIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5NTQsIDI1NiwgMjQ5NzQsIDI1NiwgMjUwMTAsIAotICAgIDI1NiwgMjQ5OTYsIDI1NiwgMjUwMDcsIDI1NiwgMjUwNTQsIDI1NiwgMjUwNzQsIDI1NiwgMjUwNzgsIDI1NiwgMjUxMDQsIAotICAgIDI1NiwgMjUxMTUsIDI1NiwgMjUxODEsIDI1NiwgMjUyNjUsIDI1NiwgMjUzMDAsIDI1NiwgMjU0MjQsIDI1NiwgMTQyMDkyLCAKLSAgICAyNTYsIDI1NDA1LCAyNTYsIDI1MzQwLCAyNTYsIDI1NDQ4LCAyNTYsIDI1NDc1LCAyNTYsIDI1NTcyLCAyNTYsIDE0MjMyMSwgCi0gICAgMjU2LCAyNTYzNCwgMjU2LCAyNTU0MSwgMjU2LCAyNTUxMywgMjU2LCAxNDg5NCwgMjU2LCAyNTcwNSwgMjU2LCAyNTcyNiwgCi0gICAgMjU2LCAyNTc1NywgMjU2LCAyNTcxOSwgMjU2LCAxNDk1NiwgMjU2LCAyNTkzNSwgMjU2LCAyNTk2NCwgMjU2LCAxNDMzNzAsIAotICAgIDI1NiwgMjYwODMsIDI1NiwgMjYzNjAsIDI1NiwgMjYxODUsIDI1NiwgMTUxMjksIDI1NiwgMjYyNTcsIDI1NiwgMTUxMTIsIAotICAgIDI1NiwgMTUwNzYsIDI1NiwgMjA4ODIsIDI1NiwgMjA4ODUsIDI1NiwgMjYzNjgsIDI1NiwgMjYyNjgsIDI1NiwgMzI5NDEsIAotICAgIDI1NiwgMTczNjksIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0MDEsIDI1NiwgMjY0NjIsIDI1NiwgMjY0NTEsIAotICAgIDI1NiwgMTQ0MzIzLCAyNTYsIDE1MTc3LCAyNTYsIDI2NjE4LCAyNTYsIDI2NTAxLCAyNTYsIDI2NzA2LCAyNTYsIDI2NzU3LCAKLSAgICAyNTYsIDE0NDQ5MywgMjU2LCAyNjc2NiwgMjU2LCAyNjY1NSwgMjU2LCAyNjkwMCwgMjU2LCAxNTI2MSwgMjU2LCAyNjk0NiwgCi0gICAgMjU2LCAyNzA0MywgMjU2LCAyNzExNCwgMjU2LCAyNzMwNCwgMjU2LCAxNDUwNTksIDI1NiwgMjczNTUsIDI1NiwgMTUzODQsIAotICAgIDI1NiwgMjc0MjUsIDI1NiwgMTQ1NTc1LCAyNTYsIDI3NDc2LCAyNTYsIDE1NDM4LCAyNTYsIDI3NTA2LCAyNTYsIDI3NTUxLCAKLSAgICAyNTYsIDI3NTc4LCAyNTYsIDI3NTc5LCAyNTYsIDE0NjA2MSwgMjU2LCAxMzg1MDcsIDI1NiwgMTQ2MTcwLCAyNTYsIAotICAgIDI3NzI2LCAyNTYsIDE0NjYyMCwgMjU2LCAyNzgzOSwgMjU2LCAyNzg1MywgMjU2LCAyNzc1MSwgMjU2LCAyNzkyNiwgMjU2LCAKLSAgICAyNzk2NiwgMjU2LCAyODAyMywgMjU2LCAyNzk2OSwgMjU2LCAyODAwOSwgMjU2LCAyODAyNCwgMjU2LCAyODAzNywgMjU2LCAKLSAgICAxNDY3MTgsIDI1NiwgMjc5NTYsIDI1NiwgMjgyMDcsIDI1NiwgMjgyNzAsIDI1NiwgMTU2NjcsIDI1NiwgMjgzNjMsIDI1NiwgCi0gICAgMjgzNTksIDI1NiwgMTQ3MTUzLCAyNTYsIDI4MTUzLCAyNTYsIDI4NTI2LCAyNTYsIDE0NzI5NCwgMjU2LCAxNDczNDIsIAotICAgIDI1NiwgMjg2MTQsIDI1NiwgMjg3MjksIDI1NiwgMjg3MDIsIDI1NiwgMjg2OTksIDI1NiwgMTU3NjYsIDI1NiwgMjg3NDYsIAotICAgIDI1NiwgMjg3OTcsIDI1NiwgMjg3OTEsIDI1NiwgMjg4NDUsIDI1NiwgMTMyMzg5LCAyNTYsIDI4OTk3LCAyNTYsIDE0ODA2NywgCi0gICAgMjU2LCAyOTA4NCwgMjU2LCAxNDgzOTUsIDI1NiwgMjkyMjQsIDI1NiwgMjkyMzcsIDI1NiwgMjkyNjQsIDI1NiwgMTQ5MDAwLCAKLSAgICAyNTYsIDI5MzEyLCAyNTYsIDI5MzMzLCAyNTYsIDE0OTMwMSwgMjU2LCAxNDk1MjQsIDI1NiwgMjk1NjIsIDI1NiwgMjk1NzksIAotICAgIDI1NiwgMTYwNDQsIDI1NiwgMjk2MDUsIDI1NiwgMTYwNTYsIDI1NiwgMTYwNTYsIDI1NiwgMjk3NjcsIDI1NiwgMjk3ODgsIAotICAgIDI1NiwgMjk4MDksIDI1NiwgMjk4MjksIDI1NiwgMjk4OTgsIDI1NiwgMTYxNTUsIDI1NiwgMjk5ODgsIDI1NiwgMTUwNTgyLCAKLSAgICAyNTYsIDMwMDE0LCAyNTYsIDE1MDY3NCwgMjU2LCAzMDA2NCwgMjU2LCAxMzk2NzksIDI1NiwgMzAyMjQsIDI1NiwgCi0gICAgMTUxNDU3LCAyNTYsIDE1MTQ4MCwgMjU2LCAxNTE2MjAsIDI1NiwgMTYzODAsIDI1NiwgMTYzOTIsIDI1NiwgMzA0NTIsIAotICAgIDI1NiwgMTUxNzk1LCAyNTYsIDE1MTc5NCwgMjU2LCAxNTE4MzMsIDI1NiwgMTUxODU5LCAyNTYsIDMwNDk0LCAyNTYsIAotICAgIDMwNDk1LCAyNTYsIDMwNDk1LCAyNTYsIDMwNTM4LCAyNTYsIDE2NDQxLCAyNTYsIDMwNjAzLCAyNTYsIDE2NDU0LCAyNTYsIAotICAgIDE2NTM0LCAyNTYsIDE1MjYwNSwgMjU2LCAzMDc5OCwgMjU2LCAzMDg2MCwgMjU2LCAzMDkyNCwgMjU2LCAxNjYxMSwgMjU2LCAKLSAgICAxNTMxMjYsIDI1NiwgMzEwNjIsIDI1NiwgMTUzMjQyLCAyNTYsIDE1MzI4NSwgMjU2LCAzMTExOSwgMjU2LCAzMTIxMSwgCi0gICAgMjU2LCAxNjY4NywgMjU2LCAzMTI5NiwgMjU2LCAzMTMwNiwgMjU2LCAzMTMxMSwgMjU2LCAxNTM5ODAsIDI1NiwgMTU0Mjc5LCAKLSAgICAyNTYsIDE1NDI3OSwgMjU2LCAzMTQ3MCwgMjU2LCAxNjg5OCwgMjU2LCAxNTQ1MzksIDI1NiwgMzE2ODYsIDI1NiwgMzE2ODksIAotICAgIDI1NiwgMTY5MzUsIDI1NiwgMTU0NzUyLCAyNTYsIDMxOTU0LCAyNTYsIDE3MDU2LCAyNTYsIDMxOTc2LCAyNTYsIDMxOTcxLCAKLSAgICAyNTYsIDMyMDAwLCAyNTYsIDE1NTUyNiwgMjU2LCAzMjA5OSwgMjU2LCAxNzE1MywgMjU2LCAzMjE5OSwgMjU2LCAzMjI1OCwgCi0gICAgMjU2LCAzMjMyNSwgMjU2LCAxNzIwNCwgMjU2LCAxNTYyMDAsIDI1NiwgMTU2MjMxLCAyNTYsIDE3MjQxLCAyNTYsIAotICAgIDE1NjM3NywgMjU2LCAzMjYzNCwgMjU2LCAxNTY0NzgsIDI1NiwgMzI2NjEsIDI1NiwgMzI3NjIsIDI1NiwgMzI3NzMsIDI1NiwgCi0gICAgMTU2ODkwLCAyNTYsIDE1Njk2MywgMjU2LCAzMjg2NCwgMjU2LCAxNTcwOTYsIDI1NiwgMzI4ODAsIDI1NiwgMTQ0MjIzLCAKLSAgICAyNTYsIDE3MzY1LCAyNTYsIDMyOTQ2LCAyNTYsIDMzMDI3LCAyNTYsIDE3NDE5LCAyNTYsIDMzMDg2LCAyNTYsIDIzMjIxLCAKLSAgICAyNTYsIDE1NzYwNywgMjU2LCAxNTc2MjEsIDI1NiwgMTQ0Mjc1LCAyNTYsIDE0NDI4NCwgMjU2LCAzMzI4MSwgMjU2LCAKLSAgICAzMzI4NCwgMjU2LCAzNjc2NiwgMjU2LCAxNzUxNSwgMjU2LCAzMzQyNSwgMjU2LCAzMzQxOSwgMjU2LCAzMzQzNywgMjU2LCAKLSAgICAyMTE3MSwgMjU2LCAzMzQ1NywgMjU2LCAzMzQ1OSwgMjU2LCAzMzQ2OSwgMjU2LCAzMzUxMCwgMjU2LCAxNTg1MjQsIDI1NiwgCi0gICAgMzM1MDksIDI1NiwgMzM1NjUsIDI1NiwgMzM2MzUsIDI1NiwgMzM3MDksIDI1NiwgMzM1NzEsIDI1NiwgMzM3MjUsIDI1NiwgCi0gICAgMzM3NjcsIDI1NiwgMzM4NzksIDI1NiwgMzM2MTksIDI1NiwgMzM3MzgsIDI1NiwgMzM3NDAsIDI1NiwgMzM3NTYsIDI1NiwgCi0gICAgMTU4Nzc0LCAyNTYsIDE1OTA4MywgMjU2LCAxNTg5MzMsIDI1NiwgMTc3MDcsIDI1NiwgMzQwMzMsIDI1NiwgMzQwMzUsIAotICAgIDI1NiwgMzQwNzAsIDI1NiwgMTYwNzE0LCAyNTYsIDM0MTQ4LCAyNTYsIDE1OTUzMiwgMjU2LCAxNzc1NywgMjU2LCAxNzc2MSwgCi0gICAgMjU2LCAxNTk2NjUsIDI1NiwgMTU5OTU0LCAyNTYsIDE3NzcxLCAyNTYsIDM0Mzg0LCAyNTYsIDM0Mzk2LCAyNTYsIDM0NDA3LCAKLSAgICAyNTYsIDM0NDA5LCAyNTYsIDM0NDczLCAyNTYsIDM0NDQwLCAyNTYsIDM0NTc0LCAyNTYsIDM0NTMwLCAyNTYsIDM0NjgxLCAKLSAgICAyNTYsIDM0NjAwLCAyNTYsIDM0NjY3LCAyNTYsIDM0Njk0LCAyNTYsIDE3ODc5LCAyNTYsIDM0Nzg1LCAyNTYsIDM0ODE3LCAKLSAgICAyNTYsIDE3OTEzLCAyNTYsIDM0OTEyLCAyNTYsIDM0OTE1LCAyNTYsIDE2MTM4MywgMjU2LCAzNTAzMSwgMjU2LCAzNTAzOCwgCi0gICAgMjU2LCAxNzk3MywgMjU2LCAzNTA2NiwgMjU2LCAxMzQ5OSwgMjU2LCAxNjE5NjYsIDI1NiwgMTYyMTUwLCAyNTYsIDE4MTEwLCAKLSAgICAyNTYsIDE4MTE5LCAyNTYsIDM1NDg4LCAyNTYsIDM1NTY1LCAyNTYsIDM1NzIyLCAyNTYsIDM1OTI1LCAyNTYsIDE2Mjk4NCwgCi0gICAgMjU2LCAzNjAxMSwgMjU2LCAzNjAzMywgMjU2LCAzNjEyMywgMjU2LCAzNjIxNSwgMjU2LCAxNjM2MzEsIDI1NiwgMTMzMTI0LCAKLSAgICAyNTYsIDM2Mjk5LCAyNTYsIDM2Mjg0LCAyNTYsIDM2MzM2LCAyNTYsIDEzMzM0MiwgMjU2LCAzNjU2NCwgMjU2LCAzNjY2NCwgCi0gICAgMjU2LCAxNjUzMzAsIDI1NiwgMTY1MzU3LCAyNTYsIDM3MDEyLCAyNTYsIDM3MTA1LCAyNTYsIDM3MTM3LCAyNTYsIAotICAgIDE2NTY3OCwgMjU2LCAzNzE0NywgMjU2LCAzNzQzMiwgMjU2LCAzNzU5MSwgMjU2LCAzNzU5MiwgMjU2LCAzNzUwMCwgMjU2LCAKLSAgICAzNzg4MSwgMjU2LCAzNzkwOSwgMjU2LCAxNjY5MDYsIDI1NiwgMzgyODMsIDI1NiwgMTg4MzcsIDI1NiwgMzgzMjcsIDI1NiwgCi0gICAgMTY3Mjg3LCAyNTYsIDE4OTE4LCAyNTYsIDM4NTk1LCAyNTYsIDIzOTg2LCAyNTYsIDM4NjkxLCAyNTYsIDE2ODI2MSwgMjU2LCAKLSAgICAxNjg0NzQsIDI1NiwgMTkwNTQsIDI1NiwgMTkwNjIsIDI1NiwgMzg4ODAsIDI1NiwgMTY4OTcwLCAyNTYsIDE5MTIyLCAyNTYsIAotICAgIDE2OTExMCwgMjU2LCAzODkyMywgMjU2LCAzODkyMywgMjU2LCAzODk1MywgMjU2LCAxNjkzOTgsIDI1NiwgMzkxMzgsIDI1NiwgCi0gICAgMTkyNTEsIDI1NiwgMzkyMDksIDI1NiwgMzkzMzUsIDI1NiwgMzkzNjIsIDI1NiwgMzk0MjIsIDI1NiwgMTk0MDYsIDI1NiwgCi0gICAgMTcwODAwLCAyNTYsIDM5Njk4LCAyNTYsIDQwMDAwLCAyNTYsIDQwMTg5LCAyNTYsIDE5NjYyLCAyNTYsIDE5NjkzLCAyNTYsIAotICAgIDQwMjk1LCAyNTYsIDE3MjIzOCwgMjU2LCAxOTcwNCwgMjU2LCAxNzIyOTMsIDI1NiwgMTcyNTU4LCAyNTYsIDE3MjY4OSwgCi0gICAgMjU2LCA0MDYzNSwgMjU2LCAxOTc5OCwgMjU2LCA0MDY5NywgMjU2LCA0MDcwMiwgMjU2LCA0MDcwOSwgMjU2LCA0MDcxOSwgCi0gICAgMjU2LCA0MDcyNiwgMjU2LCA0MDc2MywgMjU2LCAxNzM1NjgsIAorICAgIDI2NiwgMzAwMDMsIDI2NiwgMjExMDYsIDI2NiwgMjE5NDIsIDI2NiwgMzcxOTcsIDc3MCwgMTIzMDgsIDI2NDEyLCAxMjMwOSwgCisgICAgNzcwLCAxMjMwOCwgMTk5NzcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMDEwOCwgMTIzMDksIDc3MCwgMTIzMDgsIDIzNDMzLCAKKyAgICAxMjMwOSwgNzcwLCAxMjMwOCwgMjg4NTcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTE3MSwgMTIzMDksIDc3MCwgMTIzMDgsIAorICAgIDMwNDIzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjEyMTMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTk0MywgMTIzMDksIDI2MywgCisgICAgMjQ0NzEsIDI2MywgMjE0ODcsIDI1NiwgMjAwMjksIDI1NiwgMjAwMjQsIDI1NiwgMjAwMzMsIDI1NiwgMTMxMzYyLCAyNTYsIAorICAgIDIwMzIwLCAyNTYsIDIwMzk4LCAyNTYsIDIwNDExLCAyNTYsIDIwNDgyLCAyNTYsIDIwNjAyLCAyNTYsIDIwNjMzLCAyNTYsIAorICAgIDIwNzExLCAyNTYsIDIwNjg3LCAyNTYsIDEzNDcwLCAyNTYsIDEzMjY2NiwgMjU2LCAyMDgxMywgMjU2LCAyMDgyMCwgMjU2LCAKKyAgICAyMDgzNiwgMjU2LCAyMDg1NSwgMjU2LCAxMzIzODAsIDI1NiwgMTM0OTcsIDI1NiwgMjA4MzksIDI1NiwgMjA4NzcsIDI1NiwgCisgICAgMTMyNDI3LCAyNTYsIDIwODg3LCAyNTYsIDIwOTAwLCAyNTYsIDIwMTcyLCAyNTYsIDIwOTA4LCAyNTYsIDIwOTE3LCAyNTYsIAorICAgIDE2ODQxNSwgMjU2LCAyMDk4MSwgMjU2LCAyMDk5NSwgMjU2LCAxMzUzNSwgMjU2LCAyMTA1MSwgMjU2LCAyMTA2MiwgMjU2LCAKKyAgICAyMTEwNiwgMjU2LCAyMTExMSwgMjU2LCAxMzU4OSwgMjU2LCAyMTE5MSwgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAKKyAgICAyMTI0MiwgMjU2LCAyMTI1MywgMjU2LCAyMTI1NCwgMjU2LCAyMTI3MSwgMjU2LCAyMTMyMSwgMjU2LCAyMTMyOSwgMjU2LCAKKyAgICAyMTMzOCwgMjU2LCAyMTM2MywgMjU2LCAyMTM3MywgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAKKyAgICAxMzM2NzYsIDI1NiwgMjg3ODQsIDI1NiwgMjE0NTAsIDI1NiwgMjE0NzEsIDI1NiwgMTMzOTg3LCAyNTYsIDIxNDgzLCAyNTYsIAorICAgIDIxNDg5LCAyNTYsIDIxNTEwLCAyNTYsIDIxNjYyLCAyNTYsIDIxNTYwLCAyNTYsIDIxNTc2LCAyNTYsIDIxNjA4LCAyNTYsIAorICAgIDIxNjY2LCAyNTYsIDIxNzUwLCAyNTYsIDIxNzc2LCAyNTYsIDIxODQzLCAyNTYsIDIxODU5LCAyNTYsIDIxODkyLCAyNTYsIAorICAgIDIxODkyLCAyNTYsIDIxOTEzLCAyNTYsIDIxOTMxLCAyNTYsIDIxOTM5LCAyNTYsIDIxOTU0LCAyNTYsIDIyMjk0LCAyNTYsIAorICAgIDIyMDIyLCAyNTYsIDIyMjk1LCAyNTYsIDIyMDk3LCAyNTYsIDIyMTMyLCAyNTYsIDIwOTk5LCAyNTYsIDIyNzY2LCAyNTYsIAorICAgIDIyNDc4LCAyNTYsIDIyNTE2LCAyNTYsIDIyNTQxLCAyNTYsIDIyNDExLCAyNTYsIDIyNTc4LCAyNTYsIDIyNTc3LCAyNTYsIAorICAgIDIyNzAwLCAyNTYsIDEzNjQyMCwgMjU2LCAyMjc3MCwgMjU2LCAyMjc3NSwgMjU2LCAyMjc5MCwgMjU2LCAyMjgxMCwgMjU2LCAKKyAgICAyMjgxOCwgMjU2LCAyMjg4MiwgMjU2LCAxMzY4NzIsIDI1NiwgMTM2OTM4LCAyNTYsIDIzMDIwLCAyNTYsIDIzMDY3LCAyNTYsIAorICAgIDIzMDc5LCAyNTYsIDIzMDAwLCAyNTYsIDIzMTQyLCAyNTYsIDE0MDYyLCAyNTYsIDE0MDc2LCAyNTYsIDIzMzA0LCAyNTYsIAorICAgIDIzMzU4LCAyNTYsIDIzMzU4LCAyNTYsIDEzNzY3MiwgMjU2LCAyMzQ5MSwgMjU2LCAyMzUxMiwgMjU2LCAyMzUyNywgMjU2LCAKKyAgICAyMzUzOSwgMjU2LCAxMzgwMDgsIDI1NiwgMjM1NTEsIDI1NiwgMjM1NTgsIDI1NiwgMjQ0MDMsIDI1NiwgMjM1ODYsIDI1NiwgCisgICAgMTQyMDksIDI1NiwgMjM2NDgsIDI1NiwgMjM2NjIsIDI1NiwgMjM3NDQsIDI1NiwgMjM2OTMsIDI1NiwgMTM4NzI0LCAyNTYsIAorICAgIDIzODc1LCAyNTYsIDEzODcyNiwgMjU2LCAyMzkxOCwgMjU2LCAyMzkxNSwgMjU2LCAyMzkzMiwgMjU2LCAyNDAzMywgMjU2LCAKKyAgICAyNDAzNCwgMjU2LCAxNDM4MywgMjU2LCAyNDA2MSwgMjU2LCAyNDEwNCwgMjU2LCAyNDEyNSwgMjU2LCAyNDE2OSwgMjU2LCAKKyAgICAxNDQzNCwgMjU2LCAxMzk2NTEsIDI1NiwgMTQ0NjAsIDI1NiwgMjQyNDAsIDI1NiwgMjQyNDMsIDI1NiwgMjQyNDYsIDI1NiwgCisgICAgMjQyNjYsIDI1NiwgMTcyOTQ2LCAyNTYsIDI0MzE4LCAyNTYsIDE0MDA4MSwgMjU2LCAxNDAwODEsIDI1NiwgMzMyODEsIAorICAgIDI1NiwgMjQzNTQsIDI1NiwgMjQzNTQsIDI1NiwgMTQ1MzUsIDI1NiwgMTQ0MDU2LCAyNTYsIDE1NjEyMiwgMjU2LCAyNDQxOCwgCisgICAgMjU2LCAyNDQyNywgMjU2LCAxNDU2MywgMjU2LCAyNDQ3NCwgMjU2LCAyNDUyNSwgMjU2LCAyNDUzNSwgMjU2LCAyNDU2OSwgCisgICAgMjU2LCAyNDcwNSwgMjU2LCAxNDY1MCwgMjU2LCAxNDYyMCwgMjU2LCAyNDcyNCwgMjU2LCAxNDEwMTIsIDI1NiwgMjQ3NzUsIAorICAgIDI1NiwgMjQ5MDQsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5NTQsIDI1NiwgMjQ5NzQsIAorICAgIDI1NiwgMjUwMTAsIDI1NiwgMjQ5OTYsIDI1NiwgMjUwMDcsIDI1NiwgMjUwNTQsIDI1NiwgMjUwNzQsIDI1NiwgMjUwNzgsIAorICAgIDI1NiwgMjUxMDQsIDI1NiwgMjUxMTUsIDI1NiwgMjUxODEsIDI1NiwgMjUyNjUsIDI1NiwgMjUzMDAsIDI1NiwgMjU0MjQsIAorICAgIDI1NiwgMTQyMDkyLCAyNTYsIDI1NDA1LCAyNTYsIDI1MzQwLCAyNTYsIDI1NDQ4LCAyNTYsIDI1NDc1LCAyNTYsIDI1NTcyLCAKKyAgICAyNTYsIDE0MjMyMSwgMjU2LCAyNTYzNCwgMjU2LCAyNTU0MSwgMjU2LCAyNTUxMywgMjU2LCAxNDg5NCwgMjU2LCAyNTcwNSwgCisgICAgMjU2LCAyNTcyNiwgMjU2LCAyNTc1NywgMjU2LCAyNTcxOSwgMjU2LCAxNDk1NiwgMjU2LCAyNTkzNSwgMjU2LCAyNTk2NCwgCisgICAgMjU2LCAxNDMzNzAsIDI1NiwgMjYwODMsIDI1NiwgMjYzNjAsIDI1NiwgMjYxODUsIDI1NiwgMTUxMjksIDI1NiwgMjYyNTcsIAorICAgIDI1NiwgMTUxMTIsIDI1NiwgMTUwNzYsIDI1NiwgMjA4ODIsIDI1NiwgMjA4ODUsIDI1NiwgMjYzNjgsIDI1NiwgMjYyNjgsIAorICAgIDI1NiwgMzI5NDEsIDI1NiwgMTczNjksIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0MDEsIDI1NiwgMjY0NjIsIAorICAgIDI1NiwgMjY0NTEsIDI1NiwgMTQ0MzIzLCAyNTYsIDE1MTc3LCAyNTYsIDI2NjE4LCAyNTYsIDI2NTAxLCAyNTYsIDI2NzA2LCAKKyAgICAyNTYsIDI2NzU3LCAyNTYsIDE0NDQ5MywgMjU2LCAyNjc2NiwgMjU2LCAyNjY1NSwgMjU2LCAyNjkwMCwgMjU2LCAxNTI2MSwgCisgICAgMjU2LCAyNjk0NiwgMjU2LCAyNzA0MywgMjU2LCAyNzExNCwgMjU2LCAyNzMwNCwgMjU2LCAxNDUwNTksIDI1NiwgMjczNTUsIAorICAgIDI1NiwgMTUzODQsIDI1NiwgMjc0MjUsIDI1NiwgMTQ1NTc1LCAyNTYsIDI3NDc2LCAyNTYsIDE1NDM4LCAyNTYsIDI3NTA2LCAKKyAgICAyNTYsIDI3NTUxLCAyNTYsIDI3NTc4LCAyNTYsIDI3NTc5LCAyNTYsIDE0NjA2MSwgMjU2LCAxMzg1MDcsIDI1NiwgCisgICAgMTQ2MTcwLCAyNTYsIDI3NzI2LCAyNTYsIDE0NjYyMCwgMjU2LCAyNzgzOSwgMjU2LCAyNzg1MywgMjU2LCAyNzc1MSwgMjU2LCAKKyAgICAyNzkyNiwgMjU2LCAyNzk2NiwgMjU2LCAyODAyMywgMjU2LCAyNzk2OSwgMjU2LCAyODAwOSwgMjU2LCAyODAyNCwgMjU2LCAKKyAgICAyODAzNywgMjU2LCAxNDY3MTgsIDI1NiwgMjc5NTYsIDI1NiwgMjgyMDcsIDI1NiwgMjgyNzAsIDI1NiwgMTU2NjcsIDI1NiwgCisgICAgMjgzNjMsIDI1NiwgMjgzNTksIDI1NiwgMTQ3MTUzLCAyNTYsIDI4MTUzLCAyNTYsIDI4NTI2LCAyNTYsIDE0NzI5NCwgMjU2LCAKKyAgICAxNDczNDIsIDI1NiwgMjg2MTQsIDI1NiwgMjg3MjksIDI1NiwgMjg3MDIsIDI1NiwgMjg2OTksIDI1NiwgMTU3NjYsIDI1NiwgCisgICAgMjg3NDYsIDI1NiwgMjg3OTcsIDI1NiwgMjg3OTEsIDI1NiwgMjg4NDUsIDI1NiwgMTMyMzg5LCAyNTYsIDI4OTk3LCAyNTYsIAorICAgIDE0ODA2NywgMjU2LCAyOTA4NCwgMjU2LCAxNDgzOTUsIDI1NiwgMjkyMjQsIDI1NiwgMjkyMzcsIDI1NiwgMjkyNjQsIDI1NiwgCisgICAgMTQ5MDAwLCAyNTYsIDI5MzEyLCAyNTYsIDI5MzMzLCAyNTYsIDE0OTMwMSwgMjU2LCAxNDk1MjQsIDI1NiwgMjk1NjIsIAorICAgIDI1NiwgMjk1NzksIDI1NiwgMTYwNDQsIDI1NiwgMjk2MDUsIDI1NiwgMTYwNTYsIDI1NiwgMTYwNTYsIDI1NiwgMjk3NjcsIAorICAgIDI1NiwgMjk3ODgsIDI1NiwgMjk4MDksIDI1NiwgMjk4MjksIDI1NiwgMjk4OTgsIDI1NiwgMTYxNTUsIDI1NiwgMjk5ODgsIAorICAgIDI1NiwgMTUwNTgyLCAyNTYsIDMwMDE0LCAyNTYsIDE1MDY3NCwgMjU2LCAzMDA2NCwgMjU2LCAxMzk2NzksIDI1NiwgCisgICAgMzAyMjQsIDI1NiwgMTUxNDU3LCAyNTYsIDE1MTQ4MCwgMjU2LCAxNTE2MjAsIDI1NiwgMTYzODAsIDI1NiwgMTYzOTIsIAorICAgIDI1NiwgMzA0NTIsIDI1NiwgMTUxNzk1LCAyNTYsIDE1MTc5NCwgMjU2LCAxNTE4MzMsIDI1NiwgMTUxODU5LCAyNTYsIAorICAgIDMwNDk0LCAyNTYsIDMwNDk1LCAyNTYsIDMwNDk1LCAyNTYsIDMwNTM4LCAyNTYsIDE2NDQxLCAyNTYsIDMwNjAzLCAyNTYsIAorICAgIDE2NDU0LCAyNTYsIDE2NTM0LCAyNTYsIDE1MjYwNSwgMjU2LCAzMDc5OCwgMjU2LCAzMDg2MCwgMjU2LCAzMDkyNCwgMjU2LCAKKyAgICAxNjYxMSwgMjU2LCAxNTMxMjYsIDI1NiwgMzEwNjIsIDI1NiwgMTUzMjQyLCAyNTYsIDE1MzI4NSwgMjU2LCAzMTExOSwgCisgICAgMjU2LCAzMTIxMSwgMjU2LCAxNjY4NywgMjU2LCAzMTI5NiwgMjU2LCAzMTMwNiwgMjU2LCAzMTMxMSwgMjU2LCAxNTM5ODAsIAorICAgIDI1NiwgMTU0Mjc5LCAyNTYsIDE1NDI3OSwgMjU2LCAzMTQ3MCwgMjU2LCAxNjg5OCwgMjU2LCAxNTQ1MzksIDI1NiwgCisgICAgMzE2ODYsIDI1NiwgMzE2ODksIDI1NiwgMTY5MzUsIDI1NiwgMTU0NzUyLCAyNTYsIDMxOTU0LCAyNTYsIDE3MDU2LCAyNTYsIAorICAgIDMxOTc2LCAyNTYsIDMxOTcxLCAyNTYsIDMyMDAwLCAyNTYsIDE1NTUyNiwgMjU2LCAzMjA5OSwgMjU2LCAxNzE1MywgMjU2LCAKKyAgICAzMjE5OSwgMjU2LCAzMjI1OCwgMjU2LCAzMjMyNSwgMjU2LCAxNzIwNCwgMjU2LCAxNTYyMDAsIDI1NiwgMTU2MjMxLCAyNTYsIAorICAgIDE3MjQxLCAyNTYsIDE1NjM3NywgMjU2LCAzMjYzNCwgMjU2LCAxNTY0NzgsIDI1NiwgMzI2NjEsIDI1NiwgMzI3NjIsIDI1NiwgCisgICAgMzI3NzMsIDI1NiwgMTU2ODkwLCAyNTYsIDE1Njk2MywgMjU2LCAzMjg2NCwgMjU2LCAxNTcwOTYsIDI1NiwgMzI4ODAsIAorICAgIDI1NiwgMTQ0MjIzLCAyNTYsIDE3MzY1LCAyNTYsIDMyOTQ2LCAyNTYsIDMzMDI3LCAyNTYsIDE3NDE5LCAyNTYsIDMzMDg2LCAKKyAgICAyNTYsIDIzMjIxLCAyNTYsIDE1NzYwNywgMjU2LCAxNTc2MjEsIDI1NiwgMTQ0Mjc1LCAyNTYsIDE0NDI4NCwgMjU2LCAKKyAgICAzMzI4MSwgMjU2LCAzMzI4NCwgMjU2LCAzNjc2NiwgMjU2LCAxNzUxNSwgMjU2LCAzMzQyNSwgMjU2LCAzMzQxOSwgMjU2LCAKKyAgICAzMzQzNywgMjU2LCAyMTE3MSwgMjU2LCAzMzQ1NywgMjU2LCAzMzQ1OSwgMjU2LCAzMzQ2OSwgMjU2LCAzMzUxMCwgMjU2LCAKKyAgICAxNTg1MjQsIDI1NiwgMzM1MDksIDI1NiwgMzM1NjUsIDI1NiwgMzM2MzUsIDI1NiwgMzM3MDksIDI1NiwgMzM1NzEsIDI1NiwgCisgICAgMzM3MjUsIDI1NiwgMzM3NjcsIDI1NiwgMzM4NzksIDI1NiwgMzM2MTksIDI1NiwgMzM3MzgsIDI1NiwgMzM3NDAsIDI1NiwgCisgICAgMzM3NTYsIDI1NiwgMTU4Nzc0LCAyNTYsIDE1OTA4MywgMjU2LCAxNTg5MzMsIDI1NiwgMTc3MDcsIDI1NiwgMzQwMzMsIAorICAgIDI1NiwgMzQwMzUsIDI1NiwgMzQwNzAsIDI1NiwgMTYwNzE0LCAyNTYsIDM0MTQ4LCAyNTYsIDE1OTUzMiwgMjU2LCAxNzc1NywgCisgICAgMjU2LCAxNzc2MSwgMjU2LCAxNTk2NjUsIDI1NiwgMTU5OTU0LCAyNTYsIDE3NzcxLCAyNTYsIDM0Mzg0LCAyNTYsIDM0Mzk2LCAKKyAgICAyNTYsIDM0NDA3LCAyNTYsIDM0NDA5LCAyNTYsIDM0NDczLCAyNTYsIDM0NDQwLCAyNTYsIDM0NTc0LCAyNTYsIDM0NTMwLCAKKyAgICAyNTYsIDM0NjgxLCAyNTYsIDM0NjAwLCAyNTYsIDM0NjY3LCAyNTYsIDM0Njk0LCAyNTYsIDE3ODc5LCAyNTYsIDM0Nzg1LCAKKyAgICAyNTYsIDM0ODE3LCAyNTYsIDE3OTEzLCAyNTYsIDM0OTEyLCAyNTYsIDM0OTE1LCAyNTYsIDE2MTM4MywgMjU2LCAzNTAzMSwgCisgICAgMjU2LCAzNTAzOCwgMjU2LCAxNzk3MywgMjU2LCAzNTA2NiwgMjU2LCAxMzQ5OSwgMjU2LCAxNjE5NjYsIDI1NiwgMTYyMTUwLCAKKyAgICAyNTYsIDE4MTEwLCAyNTYsIDE4MTE5LCAyNTYsIDM1NDg4LCAyNTYsIDM1NTY1LCAyNTYsIDM1NzIyLCAyNTYsIDM1OTI1LCAKKyAgICAyNTYsIDE2Mjk4NCwgMjU2LCAzNjAxMSwgMjU2LCAzNjAzMywgMjU2LCAzNjEyMywgMjU2LCAzNjIxNSwgMjU2LCAxNjM2MzEsIAorICAgIDI1NiwgMTMzMTI0LCAyNTYsIDM2Mjk5LCAyNTYsIDM2Mjg0LCAyNTYsIDM2MzM2LCAyNTYsIDEzMzM0MiwgMjU2LCAzNjU2NCwgCisgICAgMjU2LCAzNjY2NCwgMjU2LCAxNjUzMzAsIDI1NiwgMTY1MzU3LCAyNTYsIDM3MDEyLCAyNTYsIDM3MTA1LCAyNTYsIDM3MTM3LCAKKyAgICAyNTYsIDE2NTY3OCwgMjU2LCAzNzE0NywgMjU2LCAzNzQzMiwgMjU2LCAzNzU5MSwgMjU2LCAzNzU5MiwgMjU2LCAzNzUwMCwgCisgICAgMjU2LCAzNzg4MSwgMjU2LCAzNzkwOSwgMjU2LCAxNjY5MDYsIDI1NiwgMzgyODMsIDI1NiwgMTg4MzcsIDI1NiwgMzgzMjcsIAorICAgIDI1NiwgMTY3Mjg3LCAyNTYsIDE4OTE4LCAyNTYsIDM4NTk1LCAyNTYsIDIzOTg2LCAyNTYsIDM4NjkxLCAyNTYsIDE2ODI2MSwgCisgICAgMjU2LCAxNjg0NzQsIDI1NiwgMTkwNTQsIDI1NiwgMTkwNjIsIDI1NiwgMzg4ODAsIDI1NiwgMTY4OTcwLCAyNTYsIDE5MTIyLCAKKyAgICAyNTYsIDE2OTExMCwgMjU2LCAzODkyMywgMjU2LCAzODkyMywgMjU2LCAzODk1MywgMjU2LCAxNjkzOTgsIDI1NiwgMzkxMzgsIAorICAgIDI1NiwgMTkyNTEsIDI1NiwgMzkyMDksIDI1NiwgMzkzMzUsIDI1NiwgMzkzNjIsIDI1NiwgMzk0MjIsIDI1NiwgMTk0MDYsIAorICAgIDI1NiwgMTcwODAwLCAyNTYsIDM5Njk4LCAyNTYsIDQwMDAwLCAyNTYsIDQwMTg5LCAyNTYsIDE5NjYyLCAyNTYsIDE5NjkzLCAKKyAgICAyNTYsIDQwMjk1LCAyNTYsIDE3MjIzOCwgMjU2LCAxOTcwNCwgMjU2LCAxNzIyOTMsIDI1NiwgMTcyNTU4LCAyNTYsIAorICAgIDE3MjY4OSwgMjU2LCA0MDYzNSwgMjU2LCAxOTc5OCwgMjU2LCA0MDY5NywgMjU2LCA0MDcwMiwgMjU2LCA0MDcwOSwgMjU2LCAKKyAgICA0MDcxOSwgMjU2LCA0MDcyNiwgMjU2LCA0MDc2MywgMjU2LCAxNzM1NjgsIAogfTsKIAogLyogaW5kZXggdGFibGVzIGZvciB0aGUgZGVjb21wb3NpdGlvbiBkYXRhICovCkBAIC01MTg3LDExICs1MjgwLDExIEBACiAgICAgMTMwNDQsIDEzMDQ2LCAxMzA0OCwgMTMwNTAsIDEzMDUyLCAxMzA1NCwgMTMwNTYsIDEzMDU4LCAxMzA2MCwgMTMwNjIsIAogICAgIDEzMDY0LCAxMzA2NiwgMTMwNjgsIDEzMDcwLCAxMzA3MiwgMTMwNzQsIDEzMDc2LCAxMzA3OCwgMTMwODAsIDEzMDgyLCAKICAgICAxMzA4NCwgMTMwODYsIDEzMDg4LCAxMzA5MCwgMTMwOTIsIDEzMDk0LCAxMzA5NiwgMTMwOTgsIDEzMTAwLCAxMzEwMiwgCi0gICAgMTMxMDQsIDEzMTA2LCAxMzEwOCwgMTMxMTAsIDEzMTEyLCAxMzExNCwgMTMxMTYsIDEzMTE4LCAxMzEyMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTMxMjIsIDEzMTI2LCAxMzEzMCwgMTMxMzQsIDEzMTM4LCAxMzE0MiwgMTMxNDYsIDEzMTUwLCAxMzE1NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNTgsIDEzMTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzEwNCwgMTMxMDYsIDEzMTA4LCAxMzExMCwgMTMxMTIsIDEzMTE0LCAxMzExNiwgMTMxMTgsIDEzMTIwLCAxMzEyMiwgMCwgCisgICAgMCwgMCwgMCwgMTMxMjQsIDEzMTI4LCAxMzEzMiwgMTMxMzYsIDEzMTQwLCAxMzE0NCwgMTMxNDgsIDEzMTUyLCAxMzE1NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjAsIDEzMTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE2MiwgMTMxNjQsIDEzMTY2LCAxMzE2OCwgMTMxNzAsIDEzMTcyLCAxMzE3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjQsIDEzMTY2LCAxMzE2OCwgMTMxNzAsIDEzMTcyLCAxMzE3NCwgCiAgICAgMTMxNzYsIDEzMTc4LCAxMzE4MCwgMTMxODIsIDEzMTg0LCAxMzE4NiwgMTMxODgsIDEzMTkwLCAxMzE5MiwgMTMxOTQsIAogICAgIDEzMTk2LCAxMzE5OCwgMTMyMDAsIDEzMjAyLCAxMzIwNCwgMTMyMDYsIDEzMjA4LCAxMzIxMCwgMTMyMTIsIDEzMjE0LCAKICAgICAxMzIxNiwgMTMyMTgsIDEzMjIwLCAxMzIyMiwgMTMyMjQsIDEzMjI2LCAxMzIyOCwgMTMyMzAsIDEzMjMyLCAxMzIzNCwgCkBAIC01MjQ1LDExICs1MzM4LDExIEBACiAgICAgMTQxNzYsIDE0MTc4LCAxNDE4MCwgMTQxODIsIDE0MTg0LCAxNDE4NiwgMTQxODgsIDE0MTkwLCAxNDE5MiwgMTQxOTQsIAogICAgIDE0MTk2LCAxNDE5OCwgMTQyMDAsIDE0MjAyLCAxNDIwNCwgMTQyMDYsIDE0MjA4LCAxNDIxMCwgMTQyMTIsIDE0MjE0LCAKICAgICAxNDIxNiwgMTQyMTgsIDE0MjIwLCAxNDIyMiwgMTQyMjQsIDE0MjI2LCAxNDIyOCwgMTQyMzAsIDE0MjMyLCAxNDIzNCwgCi0gICAgMTQyMzYsIDE0MjM4LCAxNDI0MCwgMTQyNDIsIDE0MjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDIzNiwgMTQyMzgsIDE0MjQwLCAxNDI0MiwgMTQyNDQsIDE0MjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIE5GQyBwYWlycyAqLwpAQCAtNTY2NSwxMzIgKzU3NTgsMTM1IEBACiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCBjaGFuZ2VfcmVjb3Jkc18zXzJfMFtdID0gewotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxMSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMzAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIsIDI1NSwgMjU1LCAwIH0sCi0JeyAxOSwgMjEsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMiwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMywgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMSwgMjU1LCAwIH0sCi0JeyAyNTUsIDAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI5LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNiwgMjU1LCAyNTUsIDAgfSwKLQl7IDUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDE0LCA2LCAyNTUsIDI1NSwgMCB9LAotCXsgMTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMS4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDIuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAzLjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgNC4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIC0xIH0sCi0JeyAxNCwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMCwgMCB9LAotCXsgMjU1LCA3LCAxLCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgMiwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDMsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA0LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNSwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDYsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA3LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgOCwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDksIDI1NSwgMCB9LAotCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDAgfSwKLQl7IDEsIDUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDEwLCAyNTUsIDI1NSwgMCB9LAotCXsgMTgsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDE5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMCwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNCwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNiwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNywgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgOCwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgOSwgMjU1LCAwIH0sCi0JeyAxOSwgMzAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDgsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI3LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyMiwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjMsIDI1NSwgMjU1LCAwIH0sCi0JeyA5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxNCwgNCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzE2IH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzIwIH0sCi0JeyAyNTUsIDE5LCAyNTUsIDI1NSwgLTEgfSwKLQl7IDEsIDI1NSwgMjU1LCAwLCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTEsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAzMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxOSwgMjEsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDMsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgNSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxNCwgNiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDEuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDIuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDMuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDQuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIC0xIH0sCisJeyAxNCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgMSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgMiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgMywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgOCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgOSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMTksIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEsIDUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEsIDE5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDEwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxOCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxOSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA0LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA3LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDgsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgOSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE5LCAzMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI3LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDUsIDAgfSwKKwl7IDI1NSwgMjIsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjMsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDksIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTQsIDQsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzIwIH0sCisJeyAyNTUsIDE5LCAyNTUsIDI1NSwgMjU1LCAtMSB9LAorCXsgMSwgMjU1LCAyNTUsIDAsIDI1NSwgMCB9LAogfTsKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfaW5kZXhbXSA9IHsKICAgICAwLCAxLCAyLCAyLCAzLCA0LCA1LCA2LCAyLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAKICAgICAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMiwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIAogICAgIDM2LCAzNywgMiwgMiwgMiwgMzgsIDM5LCAyLCA0MCwgMiwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgCi0gICAgNTAsIDUxLCAyLCA1MiwgMiwgMiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAyLCA1OCwgNTksIDYwLCA2MSwgMiwgMiwgNjIsIDYzLCAKLSAgICA2NCwgNjUsIDY2LCA2NiwgMiwgMiwgMiwgMiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDIsIDIsIDIsIDc0LCA3NSwgCi0gICAgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMiwgMiwgMiwgMiwgMiwgODUsIAorICAgIDUwLCA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgNTgsIDU5LCA2MCwgNjEsIDIsIDYyLCA2MywgCisgICAgNjQsIDY1LCA2NiwgNjcsIDY3LCAyLCAyLCAyLCAyLCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgMiwgMiwgMiwgNzUsIAorICAgIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDIsIDIsIDIsIDIsIDIsIDIsIDg1LCAyLCAyLCAyLCAyLCAyLCAKKyAgICA4NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODcsIDIsIDg4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA4OSwgOTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MiwgCisgICAgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NiwgMiwgODcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDg4LCA4OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCAKLSAgICA5MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTYsIDk3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5OCwgNTAsIDUwLCAKLSAgICA5OSwgMTAwLCA1MCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTUsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NywgOTgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk5LCA1MCwgNTAsIAorICAgIDEwMCwgMTAxLCA1MCwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMTEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDIsIDIsIDExNywgMTE4LCAxMTksIDIsIDEyMCwgCi0gICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDIsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDIsIDUwLCA1MCwgMTMyLCAKLSAgICAyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDIsIDIsIDE0MywgMiwgMiwgMiwgCi0gICAgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAyLCAyLCAxNTEsIDIsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMiwgCi0gICAgMiwgMTU2LCAyLCAyLCAyLCAxNTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNTgsIDE1OSwgNTAsIDE2MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNjEsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDIsIDIsIDExOCwgMTE5LCAxMjAsIDIsIDEyMSwgCisgICAgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDIsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDIsIDUwLCA1MCwgMTMzLCAKKyAgICAyLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDIsIDIsIDE0NCwgMiwgMiwgMiwgCisgICAgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAyLCAxNTIsIDE1MywgMiwgMTU0LCAxNTUsIDE1NiwgMTU3LCAyLCAKKyAgICAyLCAxNTgsIDIsIDIsIDIsIDE1OSwgMiwgMiwgMTYwLCAxNjEsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCAxNjIsIDE2MywgNTAsIDE2NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNjUsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDIsIDIsIDIsIDIsIDIsIDIsIDE2NywgMTY4LCAKKyAgICAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTY3LCAxNjgsIDE2OSwgMTcwLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzEsIAorICAgIDE3MiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzMsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgMTc0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAxNzUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDE3NiwgMTc3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzgsIAorICAgIDE3OSwgMTgwLCAyLCAxODEsIDIsIDIsIDE4MiwgMiwgMiwgMiwgMTgzLCAxODQsIDE4NSwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICAxODYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE4NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgNTAsIDE4OCwgMTg5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxOTAsIDE5MSwgMiwgMiwgMTkyLCAKKyAgICAxOTMsIDE5NCwgMTk1LCAxOTYsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxOTcsIDE5OCwgMTk5LCAyMDAsIAorICAgIDIwMSwgMjAyLCAyMDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNCwgMjA1LCA5NiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODUsIDIwNiwgMiwgMjA3LCAyMDgsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwOSwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMTEsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIxMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzAsIDE3MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMTcyLCAxNzMsIDE3NCwgMiwgMTc1LCAyLCAyLCAxNzYsIDIsIDIsIDIsIDE3NywgMTc4LCAxNzksIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMTgwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMTgxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxODIsIAotICAgIDE4MywgMiwgMiwgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDIsIDUwLCA1MCwgNTAsIDUwLCAxODksIDE5MCwgNTAsIDE5MSwgCi0gICAgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTk4LCAKLSAgICAxOTksIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMjAwLCAyLCAyMDEsIAotICAgIDIwMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMjAzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIwNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIwNywgNTAsIDIwOCwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMTMsIDUwLCAyMTQsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAogICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAogICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjA5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA1MCwgNTAsIDIxNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjAzLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNjAyNiw4ICs2MTIyLDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMjEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA1MCwgMjE2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTYwOTAsNyArNjE4NSw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2RhdGFbXSA9IHsKQEAgLTYxNzYsOSArNjI3MSw5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCkBAIC02MjE2LDcgKzYzMTEsNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02MjI1LDkgKzYzMjAsOSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjMxNCw3ICs2NDA5LDcgQEAKICAgICAzMiwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCkBAIC02MzU2LDggKzY0NTEsOCBAQAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIApAQCAtNjM3MiwyOSArNjQ2NywyOSBAQAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgNCwgMCwgMCwgCi0gICAgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgNCwgMzYsIDgsIDYsIDcsIDM3LCAzOCwgMzksIDQwLCAKLSAgICA0MSwgNDIsIDEsIDEsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDQsIDAsIDAsIAorICAgIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDEsIDEsIDAsIDAsIDAsIDQsIDM3LCA4LCA2LCA3LCAzOCwgMzksIDQwLCA0MSwgCisgICAgNDIsIDQzLCAxLCAxLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02NDA1LDEzNyArNjUwMCw4MjEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgNDUsIDQ1LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ2LCA0NiwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ5LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgMCwgCisgICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MSwgNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTY1NDcsNjgzICs3MzI2LDMxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgCi0gICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgCi0gICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCAwLCA5LCAKLSAgICAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKLSAgICAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCogZ2V0X2NoYW5nZV8zXzJfMChQeV9VQ1M0IG4pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKaW5kZXggZDBmOWNiNC4uYTgxZDhlMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaApAQCAtNCwyNDYgKzQsMjQ3IEBACiAKIC8qIGxleGljb24gKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGxleGljb25bXSA9IHsKLSAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODMsIDczLCA3MSwgMjA2LCA4NywgNzMsIDg0LCAyMDAsIDgzLCA4OSwgNzYsIAotICAgIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCi0gICAgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA3NiwgNjUsIDg0LCA3MywgMjA2LCA2NywgODUsIDc4LCAKLSAgICA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCAKKyAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODMsIDczLCA3MSwgMjA2LCA4NywgNzMsIDg0LCAyMDAsIDgzLCA3NywgNjUsIAorICAgIDc2LCAyMDQsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCisgICAgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA3NiwgNjUsIDg0LCA3MywgMjA2LCA2NSwgODIsIDY1LCAKKyAgICA2NiwgNzMsIDE5NSwgNjcsIDg1LCA3OCwgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCAKICAgICA3NywgNjUsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgODAsIDg0LCA3MywgCiAgICAgNjUsIDIwNiwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDIwNCwgNjgsIDczLCA3MSwgNzMsIDIxMiwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIAotICAgIDY4LCA3MywgNjUsIDIwNiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDgzLCA3MywgNzEsIDc4LCA4NywgCi0gICAgODIsIDczLCA4NCwgNzMsIDc4LCAxOTksIDg2LCA3OSwgODcsIDY5LCAyMDQsIDg0LCA3MywgNzcsIDY5LCAyMTEsIDY2LCAKLSAgICA2NSwgNzcsIDg1LCAyMDUsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIDY1LCA3OCwgNjUsIDg0LCA3OSwgNzYsIAotICAgIDczLCA2NSwgMjA2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDcxLCA4MiwgCi0gICAgNjksIDY5LCAyMDMsIDc3LCA4NSwgODMsIDczLCA2NywgNjUsIDIwNCwgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIAotICAgIDE5NywgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgMTkzLCA3MCwgNzksIDIxMCwgNjcsIDg5LCA4MiwgNzMsIAotICAgIDc2LCA3NiwgNzMsIDE5NSwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjUsIDY4LCA3MywgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIAotICAgIDE5OCwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDE5NiwgODQsIDY1LCA3NywgCi0gICAgNzMsIDIwNCwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA4NiwgCi0gICAgNjUsIDIwMSwgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODEsIDg1LCA2NSwgODIsIDE5NywgCi0gICAgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY1LCAKLSAgICA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgNzYsIDE5NywgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgMjA2LCA2NiwgCi0gICAgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgODcsIDcyLCA3MywgODQsIDE5NywgNjYsIDc2LCA2NSwgNjcsIAotICAgIDIwMywgNjUsIDEyOCwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDIxMCwgMTk0LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgMTkzLCA4NSwgMTI4LCA3NywgODksIDY1LCA3OCwgCi0gICAgNzcsIDY1LCAyMTAsIDY4LCA3OSwgMjEyLCA3NSwgNjUsIDc4LCA3MSwgODgsIDIwMSwgNzUsIDczLCA3NSwgNjUsIDc1LCAKLSAgICA4NSwgMjAxLCA3NywgNjksIDc4LCA2OCwgMTk3LCA3MywgMTI4LCA3OSwgMTk4LCA4NCwgNzMsIDY2LCA2OSwgODQsIDY1LCAKLSAgICAyMDYsIDc5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCAKLSAgICA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNzcsIDY5LCA2OSwgMjA1LCA2NywgNzksIAotICAgIDgwLCA4NCwgNzMsIDE5NSwgNzUsIDcyLCA3NywgNjksIDIxMCwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgCi0gICAgMjExLCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg5LCA2OSwgMjAwLCA2NywgCi0gICAgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgMTk3LCA4MCwgNzYsIDg1LCAyMTEsIDY4LCA2OSwgODYsIDY1LCA3OCwgNjUsIDcxLCAKLSAgICA2NSwgODIsIDIwMSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIAotICAgIDIwNiwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA2NiwgNzksIDIxNiwgODQsIDczLCA3NiwgMTk3LCA2OCwgODUsIDgwLCAKLSAgICA3NiwgNzksIDg5LCA2NSwgMjA2LCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgCi0gICAgNzksIDc4LCA2OSwgMTI4LCAyMTMsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4NCwgODcsIDc5LCAKLSAgICAxMjgsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3MiwgNjksIDY2LCA4MiwgNjksIDIxNSwgNzcsIAotICAgIDczLCA2NSwgMjA3LCA4NSwgMjA4LCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgCi0gICAgMjA2LCA3OSwgODYsIDY5LCAyMTAsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAyMTEsIDcyLCA3NywgNzksIDc4LCAKLSAgICAxOTksIDc5LCA3OCwgMTk3LCA4MCwgNjUsIDcyLCA2NSwgODcsIDIwMCwgODQsIDg3LCAyMDcsIDY4LCA3OSwgODcsIDIwNiwgCi0gICAgNzMsIDc4LCA2OCwgNjksIDIxNiwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzYsIDc5LCAyMTUsIDg2LCAKLSAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgODQsIDcyLCA4MiwgNjksIDE5NywgNzIsIDY1LCA3NiwgNzAsIDg3LCA3MywgNjgsIAotICAgIDg0LCAyMDAsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgMjEyLCA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCA3MywgCi0gICAgMTk1LCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3NywgNjUsIDgyLCAyMDMsIDgzLCA2NywgODIsIDczLCAKLSAgICA4MCwgMjEyLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTYsIAotICAgIDg0LCA3OSwgMTI4LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA3NiwgNjksIDE5OCwgCi0gICAgNzIsIDczLCA3MSwgMjAwLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA4MywgNzMsIDc4LCAKLSAgICA3MiwgNjUsIDc2LCAxOTMsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNzMsIDE5NSwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIAotICAgIDc4LCAxOTcsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA3MiwgODUsIDc4LCA3MSwgNjUsIDgyLCA3MywgNjUsIDIwNiwgCi0gICAgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA3MiwgODUsIDc3LCAxOTQsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDY2LCAKLSAgICA2NSwgODIsIDE5NCwgNzIsIDY1LCAyMDAsIDcyLCA2NSwgMTI4LCA3OCwgNzksIDgyLCA4NCwgMjAwLCA3MCwgODUsIDc2LCAKLSAgICA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgNjksIDgxLCA4NSwgNjUsIAotICAgIDIwNCwgNzYsIDczLCA3MSwgNzIsIDIxMiwgODQsIDY1LCAxOTksIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCA3MiwgNjUsIAotICAgIDc2LCAxOTgsIDc2LCA3OSwgNzgsIDE5OSwgNzcsIDY1LCA3NiwgNjUsIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDY1LCA2NywgCi0gICAgODUsIDg0LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCAKLSAgICA2OSwgMjEwLCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIAotICAgIDgyLCA4NSwgNjcsIDIwMywgNzAsIDczLCA4NiwgNjksIDEyOCwgNzksIDgwLCA2OSwgMjA2LCA3MiwgNzMsIDgyLCA2NSwgCi0gICAgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCAKKyAgICA2NiwgNzksIDIwNCwgNjgsIDczLCA3MSwgNzMsIDIxMiwgODQsIDY1LCA3OCwgNzEsIDg1LCAyMTIsIDcwLCA3OSwgODIsIAorICAgIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCA2OCwgNzMsIDY1LCAyMDYsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgCisgICAgMjExLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNzMsIDcxLCA3OCwgODcsIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCAKKyAgICA4NCwgNzMsIDc3LCA2OSwgMjExLCA2NiwgNjUsIDc3LCA4NSwgMjA1LCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCAKKyAgICA2NSwgNzgsIDY1LCA4NCwgNzksIDc2LCA3MywgNjUsIDIwNiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDc2LCA3MywgNzgsIAorICAgIDY5LCA2NSwgMjEwLCA3MSwgODIsIDY5LCA2OSwgMjAzLCA3NywgODUsIDgzLCA3MywgNjcsIDY1LCAyMDQsIDc2LCA3MywgCisgICAgNzEsIDY1LCA4NCwgODUsIDgyLCAxOTcsIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDE5MywgNzAsIDc5LCAKKyAgICAyMTAsIDY3LCA4OSwgODIsIDczLCA3NiwgNzYsIDczLCAxOTUsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgCisgICAgMTk5LCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDgyLCA2NSwgNjgsIDczLCAKKyAgICA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgMTk4LCA2NywgNzMsIDgyLCA2NywgNzYsIAorICAgIDY5LCAxOTYsIDg0LCA2NSwgNzcsIDczLCAyMDQsIDg0LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA2NSwgODIsIAorICAgIDgyLCA3OSwgODcsIDEyOCwgNzYsIDY5LCA3MCwgMjEyLCA4NiwgNjUsIDIwMSwgODIsIDczLCA3MSwgNzIsIDIxMiwgODMsIAorICAgIDgxLCA4NSwgNjUsIDgyLCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NSwgCisgICAgODIsIDgyLCA3OSwgMjE1LCA2NSwgNjYsIDc5LCA4NiwgNjksIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDg2LCAKKyAgICA2NSwgODIsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIAorICAgIDg0LCA2OSwgODIsIDIwNiwgNjYsIDg5LCA5MCwgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIDY1LCAxMjgsIDY2LCA3NiwgCisgICAgNjUsIDY3LCAyMDMsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDg1LCAKKyAgICAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCAyMTAsIDE5NCwgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIAorICAgIDE5MywgNzMsIDEyOCwgNzcsIDg5LCA2NSwgNzgsIDc3LCA2NSwgMjEwLCA2OCwgNzksIDIxMiwgNzksIDEyOCwgNzUsIDY1LCAKKyAgICA3OCwgNzEsIDg4LCAyMDEsIDc5LCAxOTgsIDc1LCA3MywgNzUsIDY1LCA3NSwgODUsIDIwMSwgNzcsIDY5LCA3OCwgNjgsIAorICAgIDE5NywgODQsIDczLCA2NiwgNjksIDg0LCA2NSwgMjA2LCA3MiwgNjksIDY1LCA4NiwgMjE3LCA3NywgNjUsIDgyLCA3NSwgCisgICAgMTI4LCA3MywgNzgsIDczLCA4NCwgNzMsIDY1LCAyMDQsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc3LCAKKyAgICA2OSwgNjksIDIwNSwgNjcsIDc5LCA4MCwgODQsIDczLCAxOTUsIDc1LCA3MiwgNzcsIDY5LCAyMTAsIDgyLCA3MywgNzEsIAorICAgIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjUsIDY2LCA3OSwgODYsIDE5NywgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgCisgICAgMjEwLCA4OSwgNjksIDIwMCwgNjcsIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIDE5NywgNzcsIDc5LCA3OCwgNzEsIDc5LCAKKyAgICA3NiwgNzMsIDY1LCAyMDYsIDgwLCA3NiwgODUsIDIxMSwgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIDY1LCA4MiwgCisgICAgMjAxLCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NywgODMsIDg0LCAKKyAgICA4MiwgNzksIDc1LCA2OSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgMTI4LCA2NiwgNzksIDIxNiwgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIDc5LCA3OCwgNjksIDEyOCwgODQsIAorICAgIDczLCA3NiwgMTk3LCA2OCwgODUsIDgwLCA3NiwgNzksIDg5LCA2NSwgMjA2LCA4NCwgODcsIDc5LCAxMjgsIDgwLCA2NSwgCisgICAgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgODQsIDcyLCA2NSwgMjA1LCAyMTMsIDg2LCAKKyAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDY3LCA3OSwgNzgsIAorICAgIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NiwgODIsIDY5LCAyMTUsIDc3LCA3MywgCisgICAgNjUsIDIwNywgODUsIDIwOCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA3MiwgNzksIDc5LCAKKyAgICA3NSwgMTI4LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgMjA2LCA3OSwgODYsIDY5LCAyMTAsIDg0LCA4NywgMjA3LCAKKyAgICA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgMjExLCA3MiwgNzMsIDcxLCAyMDAsIDcyLCA3NywgNzksIDc4LCAxOTksIAorICAgIDczLCA3OCwgNjgsIDY5LCAyMTYsIDgwLCA2NSwgNzIsIDY1LCA4NywgMjAwLCA4NCwgNzIsIDgyLCA2OSwgMTk3LCA2OCwgCisgICAgNzksIDg3LCAyMDYsIDc2LCA3OSwgMjE1LCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3MiwgNjUsIDc2LCAKKyAgICA3MCwgODcsIDczLCA2OCwgODQsIDIwMCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCAyMTIsIDc3LCA2OSwgODIsIAorICAgIDc5LCA3MywgODQsIDczLCAxOTUsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDc3LCA2NSwgODIsIDIwMywgCisgICAgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA3MiwgNjUsIDgzLCAKKyAgICA2OSwgNDUsIDE5NiwgODQsIDc5LCAxMjgsIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIAorICAgIDc2LCA2OSwgMTk4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA3NywgNjUsIDc2LCA2NSwgCisgICAgODksIDY1LCA3NiwgNjUsIDIwNSwgODMsIDczLCA3OCwgNzIsIDY1LCA3NiwgMTkzLCA3MiwgNjUsIDEyOCwgNzgsIDg1LCAKKyAgICA3NywgNjksIDgyLCA3MywgMTk1LCA4MiwgMTI4LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgMTI4LCAKKyAgICA3MCwgNzksIDg1LCA4MiwgMTI4LCA4NCwgNzksIDc4LCAxOTcsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA3MiwgODUsIAorICAgIDc4LCA3MSwgNjUsIDgyLCA3MywgNjUsIDIwNiwgODQsIDcyLCA4NSwgNzcsIDE5NCwgNjYsIDY1LCA4MiwgMTk0LCA3MiwgCisgICAgNjUsIDIwMCwgNzgsIDc5LCA4MiwgODQsIDIwMCwgNzAsIDg1LCA3NiwgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCAKKyAgICA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIDY1LCAyMDQsIDc1LCA2NSwgMTI4LCA3NiwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgNjUsIDE5OSwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIAorICAgIDcyLCA2NSwgNzYsIDE5OCwgNzYsIDc5LCA3OCwgMTk5LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDgyLCA2NSwgCisgICAgNzUsIDg0LCA4NSwgMjEwLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDIxMCwgODAsIDY1LCAxMjgsIDgwLCAKKyAgICA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NSwgNjYsIDcyLCA2NSwgNzMsIDc1LCA4MywgODUsIDc1LCAyMDEsIDY4LCA3OSwgODUsIAorICAgIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIDgyLCA4NSwgNjcsIDIwMywgNzksIDgwLCA2OSwgMjA2LCA3MiwgNzMsIDgyLCA2NSwgCisgICAgNzEsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCAKICAgICA3MSwgMjEzLCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCi0gICAgMjExLCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAyMDEsIDcxLCAKLSAgICA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA3OCwgNjksIAotICAgIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNzQsIDY5LCA2OSwgCi0gICAgMjA1LCA4MCwgNjUsIDEyOCwgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgMjA1LCA2OCwgNzksIDg0LCAyMTEsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA2NywgODUsIDgyLCAKLSAgICA4MywgNzMsIDg2LCAxOTcsIDc3LCA2NSwgMTI4LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4MywgMTI4LCA4MywgNzMsIDg4LCAKLSAgICAxMjgsIDg3LCA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4OSwgNjUsIAotICAgIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY1LCAxMjgsIAotICAgIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCA5MCwgCi0gICAgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIDg5LCAKLSAgICAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgMTI4LCAKLSAgICA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIAotICAgIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAxMjgsIAotICAgIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCA5MCwgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIDkwLCAKLSAgICA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgODAsIAotICAgIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgOTAsIAotICAgIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAxMjgsIAotICAgIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgMTI4LCA5MCwgCi0gICAgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCAyMDIsIDkwLCA4NywgNjUsIDgyLCAKLSAgICA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgNjYsIAotICAgIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgMjEzLCA5MCwgODMsIDcyLCA2NSwgMTI4LCAKLSAgICA5MCwgODIsIDY1LCAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIAotICAgIDEyOCwgOTAsIDc5LCA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCAKLSAgICA5MCwgNzQsIDY5LCAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIAotICAgIDgwLCA4MCwgNjksIDgyLCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCA3MywgCi0gICAgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIDY4LCAKLSAgICAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCA4OSwgCi0gICAgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIDgyLCAKLSAgICAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIDcyLCAKLSAgICA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCA5MCwgCi0gICAgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDc5LCAKLSAgICA3OSwgMTI4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIAotICAgIDY5LCAxMjgsIDkwLCA3MiwgNzMsIDc2LCAxMjgsIDkwLCA3MiwgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIAotICAgIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgCi0gICAgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCA5MCwgCi0gICAgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIDY1LCAKLSAgICA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIDY5LCAKLSAgICA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIDkwLCAKLSAgICA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAxMjgsIAotICAgIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgCi0gICAgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIDY1LCAKLSAgICA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODIsIDc2LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIAotICAgIDg4LCAxMjgsIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIAotICAgIDEyOCwgOTAsIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCAKLSAgICA5MCwgNjUsIDU1LCAxMjgsIDkwLCAxOTMsIDkwLCA0OCwgNDksIDU0LCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzEsIAotICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgCi0gICAgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDczLCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcwLCAxMjgsIDkwLCA0OCwgCi0gICAgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY3LCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIAotICAgIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIDEyOCwgOTAsIDQ4LCA0OSwgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIDQ4LCA0OCwgNTcsIDEyOCwgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgNTQsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDkwLCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIAotICAgIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAxMjgsIDkwLCA0OCwgCi0gICAgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDkwLCAKLSAgICA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgMTI4LCA5MCwgNDgsIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAKLSAgICAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgMTI4LCA4OSwgODksIDgyLCA4OCwgMTI4LCA4OSwgODksIDgyLCAKLSAgICAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgMTI4LCA4OSwgODksIDY1LCA2NSwgMTI4LCA4OSwgODksIDY1LCAKLSAgICAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgMTI4LCA4OSwgODcsIDc5LCAxMjgsIDg5LCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgMTI4LCA4OSwgODcsIDY1LCA2NSwgMTI4LCA4OSwgODcsIDY1LCAKLSAgICAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIDg5LCA4NSwgODcsIDc5LCA4MSwgMTI4LCA4OSwgODUsIDg1LCAKLSAgICA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCA4NSwgMTI4LCA4OSwgODUsIDg1LCAxMjgsIDg5LCA4NSwgODQsIAotICAgIDEyOCwgODksIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCAKLSAgICA4OSwgODUsIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCAKLSAgICA4NSwgNzksIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIAotICAgIDEyOCwgODksIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAxMjgsIDg5LCA4NSwgNzQsIDEyOCwgODksIDg1LCA2OSwgODEsIAotICAgIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIDY4LCAyMDAsIDg5LCA4NSwgNjUsIAotICAgIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgCi0gICAgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCAKLSAgICA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIAotICAgIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCA4OSwgODIsIDg5LCAxMjgsIDg5LCAKLSAgICA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgNzUsIAotICAgIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCA3OSwgCi0gICAgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIDg4LCAKLSAgICAxMjgsIDg5LCA3OSwgODcsIDY4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIAotICAgIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCA4OSwgNzksIDgyLCA3MywgCi0gICAgMTI4LCA4OSwgNzksIDgxLCAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCA3OSwgNzksIDEyOCwgODksIAotICAgIDc5LCA3NywgNzksIDEyOCwgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIDEyOCwgODksIDc5LCA2OCwgCi0gICAgMTI4LCA4OSwgNzksIDE5NiwgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgCi0gICAgNDUsIDg5LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCAKLSAgICA3OSwgNDUsIDczLCAxMjgsIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgNjksIDEyOCwgODksIAotICAgIDc5LCA0NSwgNjUsIDEyOCwgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIAotICAgIDg4LCAxMjgsIDg5LCA3MywgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCA4MCwgMTI4LCA4OSwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA4OSwgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA4OSwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIAotICAgIDg5LCA3MywgNjgsIDY4LCA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIDczLCAxMjgsIDg5LCA3MCwgCi0gICAgNjksIDgzLCA3MywgODMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCAKLSAgICA4OSwgMTI4LCA4OSwgNjksIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgODksIDY5LCA4NSwgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgCi0gICAgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCAKLSAgICA4NSwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDcxLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA4OSwgNjksIDgyLCA4NSwgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIAotICAgIDY1LCAyMDAsIDg5LCA2OSwgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAKLSAgICAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIAotICAgIDQ1LCA3OSwgMTI4LCA4OSwgNjksIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgCi0gICAgNjksIDc4LCAxMjgsIDg5LCA2OSwgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCAKLSAgICA3OSwgMjE1LCA4OSwgNjksIDczLCA3OCwgMTI4LCA4OSwgNjksIDcyLCAxMjgsIDg5LCA2OSwgNjksIDcxLCAxMjgsIDg5LCAKLSAgICA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAxMjgsIDg5LCAKLSAgICA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIDY1LCA4OSwgNjgsIDEyOCwgODksIDY1LCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCA3OCwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIAotICAgIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgCi0gICAgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgCi0gICAgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgCi0gICAgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAKLSAgICAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAKLSAgICA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIAotICAgIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgCi0gICAgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIAotICAgIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIAotICAgIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIAotICAgIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgCi0gICAgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCAKLSAgICA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCAKLSAgICA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIAotICAgIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgCi0gICAgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCAKLSAgICA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIAotICAgIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIAotICAgIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgODAsIDEyOCwgODgsIDg5LCA3OSwgNzksIDc0LCAxMjgsIAotICAgIDg4LCA4OSwgNzksIDc5LCAxMjgsIDg4LCA4OSwgNzksIDEyOCwgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgCi0gICAgMjA1LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgODksIDY5LCAxMjgsIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgCi0gICAgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgNzMsIDEyOCwgODgsIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgCi0gICAgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgODcsIDY1LCAxMjgsIDg4LCA4NywgMTI4LCA4OCwgODYsIDY5LCAxMjgsIAotICAgIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgODgsIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIAotICAgIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCA2NSwgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgCi0gICAgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCA3MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIDg4LCA3OSwgCi0gICAgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIDgyLCA3OSwgCi0gICAgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIDg4LCA3MywgCi0gICAgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCA2NSwgNjYsIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgCi0gICAgMTI4LCA4OCwgNjksIDg5LCA3OCwgMTI4LCA4OCwgNjksIDgzLCA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgCi0gICAgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIDg1LCA4MywgMTI4LCA4OCwgNjUsIDg1LCAxMjgsIDg4LCA2NSwgCi0gICAgODAsIDcyLCAxMjgsIDg4LCA2NSwgNzgsIDEyOCwgODgsIDY1LCA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgCi0gICAgNTYsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCAxMjgsIDg4LCA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAKLSAgICA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgMTI4LCA4OCwgNDgsIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIAotICAgIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIAotICAgIDg4LCA0OCwgNDgsIDUwLCAxMjgsIDg4LCA0OCwgNDgsIDQ5LCAxMjgsIDg4LCA0NSwgMjE2LCA4NywgOTAsIDEyOCwgODcsIAotICAgIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCA4NywgODYsIDczLCAxMjgsIDg3LCA4NiwgNjksIDEyOCwgODcsIAotICAgIDg2LCA2NSwgMTI4LCA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIAotICAgIDc5LCA4MCwgMTI4LCA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIAotICAgIDg1LCA3NiwgODUsIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgODUsIDczLCAxMjgsIDg3LCA4NSwgNjksIDEyOCwgODcsIAotICAgIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIAotICAgIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgODIsIDczLCA4MywgMjEyLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgCi0gICAgODMsIDEyOCwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDIxMSwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDY4LCAKLSAgICAxMjgsIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDg3LCA4MiwgNjUsIAotICAgIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCA4NywgNzksIDg3LCAxMjgsIAotICAgIDg3LCA3OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIDc5LCA4MiwgCi0gICAgNzYsIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgMTI4LCA4NywgNzksIDgyLCAKLSAgICAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCA4MiwgMTk2LCA4NywgNzksIAotICAgIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCA3OSwgNzksIDY4LCA4MywgCi0gICAgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgMTI4LCA4NywgNzksIDIwNiwgCi0gICAgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMjExLCAKLSAgICA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCA3NiwgNzksIDgzLCA3OSwgCi0gICAgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCA4NywgNzMsIDg0LCA3MiwgCi0gICAgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA4NCwgNzIsIDczLCAyMDYsIDg3LCAKLSAgICA3MywgODIsIDY5LCAxOTYsIDg3LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIDczLCA3OCwgCi0gICAgMTk5LCA4NywgNzMsIDc4LCA3NSwgMTI4LCA4NywgNzMsIDc4LCA3NCwgNjUsIDEyOCwgODcsIDczLCA3OCwgNzEsIDgzLCAKLSAgICAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDg3LCAKLSAgICA3MywgNzgsIDY4LCA3OSwgODcsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIAotICAgIDc4LCAxMjgsIDg3LCA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgCi0gICAgNzMsIDcxLCA3MSwgNzYsIDY5LCA4MywgMTI4LCA4NywgNzMsIDY4LCA4NCwgNzIsIDEyOCwgODcsIDczLCA2OCwgNjksIDc4LCAKLSAgICA3MywgNzgsIDE5OSwgODcsIDczLCA2OCwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgCi0gICAgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIDg3LCA2NSwgNjUsIDc1LCAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCAKLSAgICA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgNzIsIDczLCA4NCwgNjksIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIDY5LCAxMjgsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCAKLSAgICA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgMjEwLCA4NywgNzIsIDY5LCA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIAotICAgIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAxMjgsIDg3LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA4NywgNzIsIDEyOCwgODcsIAotICAgIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgCi0gICAgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAyMTIsIDg3LCA2OSwgODAsIDEyOCwgODcsIDY5LCA3OSwgCi0gICAgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAxMjgsIDg3LCA2OSwgNzMsIDcxLCA3MiwgMjEyLCA4NywgCi0gICAgNjksIDczLCA2OSwgODIsIDgzLCA4NCwgODIsIDY1LCA4MywgMjExLCA4NywgNjksIDczLCAxMjgsIDg3LCA2OSwgNjksIDc4LCAKKyAgICAyMTEsIDg5LCA2NSwgMTI4LCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA2NiwgNjksIDc4LCA3MSwgNjUsIAorICAgIDc2LCAyMDEsIDgzLCA3MiwgNjUsIDgyLCA2NSwgNjgsIDE5MywgODMsIDczLCA4OCwgMTI4LCA3OCwgNjUsIDEyOCwgNzgsIAorICAgIDY5LCA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjgsIDc5LCA4NCwgMjExLCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgCisgICAgNjgsIDIxMSwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc0LCA2OSwgNjksIDIwNSwgNzYsIDY1LCAxMjgsIDc4LCA2OSwgCisgICAgODcsIDE5MywgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDIwMCwgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDkwLCA5MCwgODksIDgyLCAxMjgsIDkwLCA5MCwgODksIDgwLCAxMjgsIDkwLCA5MCwgODksIDY1LCAxMjgsIDkwLCA5MCwgCisgICAgODksIDEyOCwgOTAsIDkwLCA4NSwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCAKKyAgICAxMjgsIDkwLCA5MCwgODUsIDgwLCAxMjgsIDkwLCA5MCwgODUsIDEyOCwgOTAsIDkwLCA4MywgODksIDY1LCAxMjgsIDkwLCAKKyAgICA5MCwgODMsIDY1LCAxMjgsIDkwLCA5MCwgNzksIDg4LCAxMjgsIDkwLCA5MCwgNzksIDgwLCAxMjgsIDkwLCA5MCwgNzksIAorICAgIDEyOCwgOTAsIDkwLCA3MywgODgsIDEyOCwgOTAsIDkwLCA3MywgODQsIDEyOCwgOTAsIDkwLCA3MywgODAsIDEyOCwgOTAsIAorICAgIDkwLCA3MywgNjksIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4NCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODAsIDEyOCwgCisgICAgOTAsIDkwLCA3MywgNjksIDEyOCwgOTAsIDkwLCA3MywgMTI4LCA5MCwgOTAsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDY5LCAKKyAgICA4MCwgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAxMjgsIDkwLCAKKyAgICA5MCwgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCA5MCwgNjUsIAorICAgIDEyOCwgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgODMsIDgwLCAxMjgsIDkwLCA4NywgNzgsIDc0LCAxMjgsIAorICAgIDkwLCA4NywgNzgsIDY2LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3NCwgMTI4LCA5MCwgODcsIDIwMiwgOTAsIDg3LCA2NSwgCisgICAgODIsIDY1LCA3NSwgNjUsIDg5LCAxMjgsIDkwLCA4NywgNjUsIDEyOCwgOTAsIDg1LCA4NCwgMTI4LCA5MCwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA5MCwgODUsIDc5LCA4MCwgMTI4LCA5MCwgODUsIDc5LCAxMjgsIDkwLCA4NSwgNzcsIDEyOCwgOTAsIDg1LCAKKyAgICA2NiwgODUsIDgyLCAxMjgsIDkwLCA4NSwgNTMsIDEyOCwgOTAsIDg1LCAxODEsIDkwLCAyMTMsIDkwLCA4MywgNzIsIDY1LCAKKyAgICAxMjgsIDkwLCA4MiwgNjUsIDEyOCwgOTAsIDgxLCA2NSwgODAsIDcyLCAxOTMsIDkwLCA3OSwgODQsIDEyOCwgOTAsIDc5LCAKKyAgICA3OSwgMTI4LCA5MCwgNzksIDY1LCAxMjgsIDkwLCA3NiwgNjUsIDc3LCAxOTMsIDkwLCA3NiwgNjUsIDEyOCwgOTAsIDc2LCAKKyAgICAxOTMsIDkwLCA3NCwgNjksIDEyOCwgOTAsIDczLCA5MCwgNTAsIDEyOCwgOTAsIDczLCA4MSwgNjUsIDY1LCAxMjgsIDkwLCAKKyAgICA3MywgODAsIDgwLCA2OSwgODIsIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA5MCwgNzMsIDc4LCA3OSwgODIsIDEyOCwgOTAsIAorICAgIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIDkwLCA3MywgCisgICAgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCA5MCwgNzIsIAorICAgIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4OSwgCisgICAgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgMTI4LCA5MCwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgNzIsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIDg1LCAxMjgsIAorICAgIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIDkwLCA3MiwgCisgICAgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCAKKyAgICA4NCwgNjksIDEyOCwgOTAsIDcyLCA3MywgNzYsIDEyOCwgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCAKKyAgICA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIAorICAgIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDg4LCAxMjgsIAorICAgIDkwLCA3MiwgNjUsIDg0LCAxMjgsIDkwLCA3MiwgNjUsIDgyLCAxMjgsIDkwLCA3MiwgNjUsIDgwLCAxMjgsIDkwLCA3MiwgCisgICAgNjUsIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA2NSwgMTI4LCA5MCwgNzIsIDY1LCAxMjgsIDkwLCA3MiwgMTI4LCA5MCwgCisgICAgNjksIDg0LCA2NSwgMTI4LCA5MCwgNjksIDgyLCA3OSwgMTI4LCA5MCwgNjksIDgyLCAyMDcsIDkwLCA2OSwgNzgsIDEyOCwgCisgICAgOTAsIDY5LCA3NywgNzYsIDg5LCA2NSwgMTI4LCA5MCwgNjksIDc3LCA3NiwgNzQsIDY1LCAxMjgsIDkwLCA2OSwgNTAsIAorICAgIDEyOCwgOTAsIDE5NywgOTAsIDY1LCA4OSwgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgODksIAorICAgIDczLCAyMDYsIDkwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA5MCwgNjUsIDg0LCA2NSwgMTI4LCA5MCwgCisgICAgNjUsIDgyLCA4MSwgNjUsIDEyOCwgOTAsIDY1LCA4MiwgNzYsIDEyOCwgOTAsIDY1LCA4MSwgNjksIDE5OCwgOTAsIDY1LCAKKyAgICA3NywgODgsIDEyOCwgOTAsIDY1LCA3NiwgMTI4LCA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCAKKyAgICA3MywgMjA2LCA5MCwgNjUsIDczLCAxMjgsIDkwLCA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgCisgICAgOTAsIDY1LCA2OSwgNzAsIDEyOCwgOTAsIDY1LCA1NSwgMTI4LCA5MCwgMTkzLCA5MCwgNDgsIDQ5LCA1NCwgNzIsIDEyOCwgCisgICAgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjksIAorICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgCisgICAgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAKKyAgICA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIDkwLCA0OCwgCisgICAgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDkwLCAKKyAgICA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIDU3LCAxMjgsIAorICAgIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIDg5LCA4MiwgCisgICAgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIDg5LCA2NSwgCisgICAgNjUsIDEyOCwgODksIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgCisgICAgMTI4LCA4OSwgODcsIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgODksIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgCisgICAgODEsIDEyOCwgODksIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCAKKyAgICA4NSwgMTI4LCA4OSwgODUsIDg0LCAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDg5LCA4NSwgODIsIDEyOCwgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgCisgICAgODUsIDc5LCA4OCwgMTI4LCA4OSwgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCAKKyAgICA3NywgMTI4LCA4OSwgODUsIDc5LCAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDc0LCAKKyAgICAxMjgsIDg5LCA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCAKKyAgICA2OCwgMjAwLCA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIAorICAgIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgCisgICAgNzksIDEyOCwgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAKKyAgICAxMjgsIDg5LCA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgCisgICAgODksIDgyLCA4OSwgMTI4LCA4OSwgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAKKyAgICAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIAorICAgIDczLCAyMTEsIDg5LCA4MCwgNzksIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgCisgICAgODksIDEyOCwgODksIDc5LCA4OCwgMTI4LCA4OSwgNzksIDg3LCA2OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCAKKyAgICA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIAorICAgIDEyOCwgODksIDc5LCA4MiwgNzMsIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCAKKyAgICA4OSwgNzksIDc5LCAxMjgsIDg5LCA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIAorICAgIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIAorICAgIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgCisgICAgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCAKKyAgICA0NSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCAKKyAgICA2OSwgODQsIDEyOCwgODksIDczLCA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCAKKyAgICA3MywgODAsIDEyOCwgODksIDczLCA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCAKKyAgICA2OSwgODgsIDEyOCwgODksIDczLCA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIAorICAgIDEyOCwgODksIDczLCA2OSwgMTI4LCA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIAorICAgIDg5LCA3MywgMTI4LCA4OSwgNzIsIDY5LCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgODMsIDEyOCwgODksIDcwLCA2OSwgCisgICAgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCA4OSwgMTI4LCA4OSwgNjksIDg3LCAxMjgsIDg5LCA2OSwgCisgICAgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIDEyOCwgODksIDY5LCA4NSwgODEsIDEyOCwgODksIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODksIAorICAgIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCA4NSwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNjUsIAorICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIAorICAgIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4OSwgNjksIDgyLCA4NSwgMTI4LCA4OSwgNjksIDgyLCAKKyAgICAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIDY1LCAyMDAsIDg5LCA2OSwgODIsIDEyOCwgODksIDY5LCAKKyAgICA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIAorICAgIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNjksIDc4LCA3MywgODMsIDY5LCAKKyAgICAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgNjksIDc4LCAxMjgsIDg5LCA2OSwgMjA2LCA4OSwgNjksIDc2LCAKKyAgICA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCA3OSwgMjE1LCA4OSwgNjksIDczLCA3OCwgMTI4LCA4OSwgNjksIAorICAgIDcyLCAxMjgsIDg5LCA2OSwgNjksIDcxLCAxMjgsIDg5LCA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIAorICAgIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAxMjgsIDg5LCA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIAorICAgIDY1LCA4OSwgNjgsIDEyOCwgODksIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgCisgICAgNjUsIDg3LCA3OCwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCA4OSwgCisgICAgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAKKyAgICAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCAKKyAgICA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAKKyAgICAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIAorICAgIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgCisgICAgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgCisgICAgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCAKKyAgICA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAxMjgsIAorICAgIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCA3MSwgCisgICAgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCA4OSwgCisgICAgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIDg5LCAKKyAgICA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgNjcsIAorICAgIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAxMjgsIAorICAgIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgCisgICAgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCAKKyAgICA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIAorICAgIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgCisgICAgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgCisgICAgODAsIDEyOCwgODgsIDg5LCA3OSwgNzksIDc0LCAxMjgsIDg4LCA4OSwgNzksIDc5LCAxMjgsIDg4LCA4OSwgNzksIDEyOCwgCisgICAgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgMjA1LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgODksIDY5LCAKKyAgICAxMjgsIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgNzMsIDEyOCwgCisgICAgODgsIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgODcsIDY1LCAKKyAgICAxMjgsIDg4LCA4NywgMTI4LCA4OCwgODYsIDY5LCAxMjgsIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgODgsIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCAKKyAgICA2NSwgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCAKKyAgICA3MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIDg4LCA3OSwgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgCisgICAgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIDgyLCA3OSwgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAKKyAgICAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIDg4LCA3MywgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCAKKyAgICA2NSwgNjYsIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgMTI4LCA4OCwgNjksIDg5LCA3OCwgMTI4LCA4OCwgNjksIDgzLCAKKyAgICA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIDg1LCAKKyAgICA4MywgMTI4LCA4OCwgNjUsIDg1LCAxMjgsIDg4LCA2NSwgODAsIDcyLCAxMjgsIDg4LCA2NSwgNzgsIDEyOCwgODgsIDY1LCAKKyAgICA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCAxMjgsIDg4LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgMTI4LCA4OCwgNDgsIAorICAgIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDg4LCA0OCwgCisgICAgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIDg4LCA0OCwgNDgsIDUwLCAxMjgsIDg4LCA0OCwgNDgsIDQ5LCAKKyAgICAxMjgsIDg4LCA0NSwgMjE2LCA4NywgOTAsIDEyOCwgODcsIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCA4NywgCisgICAgODYsIDczLCAxMjgsIDg3LCA4NiwgNjksIDEyOCwgODcsIDg2LCA2NSwgMTI4LCA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgCisgICAgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIDc5LCA4MCwgMTI4LCA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgCisgICAgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIDg1LCA3NiwgODUsIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgCisgICAgODUsIDczLCAxMjgsIDg3LCA4NSwgNjksIDEyOCwgODcsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgODIsIDczLCAKKyAgICA4MywgMjEyLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgODMsIDEyOCwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIAorICAgIDIxMSwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDY4LCAxMjgsIDg3LCA4MiwgNjksIDgzLCA4NCwgNzYsIDY5LCA4MiwgCisgICAgODMsIDEyOCwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIDIwMCwgODcsIDgyLCAKKyAgICA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIDg3LCA3OSwgODcsIAorICAgIDEyOCwgODcsIDc5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgODcsIDc5LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NywgCisgICAgNzksIDgyLCA3NiwgMTk2LCA4NywgNzksIDgyLCA3NSwgNjksIDgyLCAxMjgsIDg3LCA3OSwgODIsIDc1LCAxMjgsIDg3LCAKKyAgICA3OSwgODIsIDIwMywgODcsIDc5LCA4MiwgNjgsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA4NywgNzksIDgyLCAxOTYsIAorICAgIDg3LCA3OSwgODAsIDEyOCwgODcsIDc5LCA3OSwgNzgsIDEyOCwgODcsIDc5LCA3OSwgNzYsIDEyOCwgODcsIDc5LCA3OSwgCisgICAgNjgsIDgzLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NywgNzksIDc5LCA2OCwgMTI4LCA4NywgNzksIDc4LCAxMjgsIDg3LCAKKyAgICA3OSwgMjA2LCA4NywgNzksIDc3LCA2OSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjksIDIwNiwgODcsIDc5LCA3NywgNjUsIAorICAgIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMTI4LCA4NywgNzksIDc3LCA2NSwgMjA2LCA4NywgNzksIDc2LCA3OSwgCisgICAgODMsIDc5LCAxMjgsIDg3LCA3OSwgNzYsIDE5OCwgODcsIDc5LCA2OSwgMTI4LCA4NywgNzksIDY1LCAxMjgsIDg3LCA3MywgCisgICAgODQsIDcyLCA3OSwgODUsIDIxMiwgODcsIDczLCA4NCwgNzIsIDczLCA3OCwgMTI4LCA4NywgNzMsIDg0LCA3MiwgNzMsIAorICAgIDIwNiwgODcsIDczLCA4MiwgNjksIDE5NiwgODcsIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgCisgICAgNzMsIDc4LCAxOTksIDg3LCA3MywgNzgsIDc1LCAxMjgsIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgNzMsIDc4LCAKKyAgICA3MSwgODMsIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCA2OCwgODUsIAorICAgIDEyOCwgODcsIDczLCA3OCwgNjgsIDc5LCA4NywgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIAorICAgIDg3LCA3MywgNzgsIDEyOCwgODcsIDczLCA3NiwgODQsIDY5LCAxOTYsIDg3LCA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAKKyAgICAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgNzMsIDcxLCA3MSwgNzYsIDY5LCA4MywgMTI4LCA4NywgNzMsIAorICAgIDY4LCA4NCwgNzIsIDEyOCwgODcsIDczLCA2OCwgNjksIDc4LCA3MywgNzgsIDE5OSwgODcsIDczLCA2OCwgNjksIDQ1LCA3MiwgCisgICAgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIDg3LCA2NSwgNjUsIDc1LCAKKyAgICAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgNzIsIDczLCA4NCwgNjksIAorICAgIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIDY5LCAxMjgsIDg3LCA3MiwgCisgICAgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgMjEwLCA4NywgNzIsIDY5LCAKKyAgICA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAxMjgsIDg3LCA3MiwgNjUsIAorICAgIDc2LCA2OSwgMTI4LCA4NywgNzIsIDEyOCwgODcsIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIAorICAgIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgMjA2LCA4NywgNjksIDgzLCA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgCisgICAgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIDgwLCAxMjgsIDg3LCA2OSwgNzksIDEyOCwgCisgICAgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIDczLCA3MSwgNzIsIDIxMiwgODcsIDY5LCAKKyAgICA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA3MywgMTI4LCA4NywgNjksIDY5LCA3OCwgCiAgICAgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNzEsIDY5LCAKICAgICAxMjgsIDg3LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjYsIDEyOCwgODcsIDY5LCA2NSwgODIsIAogICAgIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgODksIApAQCAtMjU3LDI1MSArMjU4LDI1MyBAQAogICAgIDEyOCwgODcsIDY1LCA4MywgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgCiAgICAgODcsIDY1LCA4MywgNzYsIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCAKICAgICA3NiwgNzYsIDY1LCAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MiwgNjUsIDc4LCAxOTksIAotICAgIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgCi0gICAgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCAKLSAgICA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODcsIDY1LCA3NiwgNzYsIDEyOCwgODcsIDY1LCA3NiwgMjA0LCA4NywgNjUsIAotICAgIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgCi0gICAgNzMsIDgzLCA4NCwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgCi0gICAgODcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKLSAgICA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIAotICAgIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgCi0gICAgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAKLSAgICA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgNDgsIDQ5LCA1NCwgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDEyOCwgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIAotICAgIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgCi0gICAgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCAKLSAgICA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgNDgsIDQ4LCA1NCwgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCAKLSAgICA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgCi0gICAgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgCi0gICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNzQsIDEyOCwgODYsIDg3LCA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIAotICAgIDg2LCA4NSwgODUsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIAotICAgIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgCi0gICAgODMsIDEyOCwgODYsIDg0LCAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgCi0gICAgNTcsIDU1LCAxMjgsIDg2LCA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAKLSAgICAxMjgsIDg2LCA4MywgNTcsIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCAKLSAgICA4MywgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIAotICAgIDEyOCwgODYsIDgzLCA1NiwgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIAotICAgIDgzLCA1NiwgNTIsIDEyOCwgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgCi0gICAgNDksIDEyOCwgODYsIDgzLCA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgCi0gICAgODMsIDU1LCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCAKLSAgICA1MywgMTI4LCA4NiwgODMsIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCAKLSAgICA4NiwgODMsIDU1LCA0OSwgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIAotICAgIDU3LCAxMjgsIDg2LCA4MywgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNTQsIDUzLCAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgCi0gICAgNTQsIDUwLCAxMjgsIDg2LCA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgCi0gICAgODYsIDgzLCA1MywgNTcsIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCAKLSAgICA1MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIAotICAgIDEyOCwgODYsIDgzLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIAotICAgIDgzLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgCi0gICAgMTI4LCA4NiwgODMsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgCi0gICAgODMsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCAKLSAgICA0OCwgMTI4LCA4NiwgODMsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIAotICAgIDUyLCAxMjgsIDg2LCA4MywgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIAotICAgIDg2LCA4MywgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCAKLSAgICA4NiwgODMsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIAotICAgIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIAotICAgIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgCi0gICAgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA0OCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA0OCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA0OCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1NywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU2LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1NSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU0LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIAotICAgIDUwLCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUyLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUyLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIAotICAgIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgCi0gICAgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUwLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUwLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIAotICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgCi0gICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIAotICAgIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgCi0gICAgMTI4LCA4NiwgNzksIDg1LCAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCAyMTEsIDg2LCA3OSwgODAsIDEyOCwgODYsIAotICAgIDc5LCA3OSwgNzMsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIDg2LCA3OSwgNzYsIDg1LCA3NywgCi0gICAgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA2NSwgNzYsIDc2LCAKLSAgICAxMjgsIDg2LCA3OSwgNzYsIDY3LCA2NSwgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzYsIDY1LCA4MCwgODUsIDIwMywgODYsIAotICAgIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIDczLCA2NywgNjksIDc2LCA2OSwgCi0gICAgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OSwgNzksIDEyOCwgODYsIDczLCAKLSAgICA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIAotICAgIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgCi0gICAgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCAKLSAgICA3MSwgNjUsIDg5LCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIAotICAgIDcxLCAxOTMsIDg2LCA3MywgODIsIDczLCA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgCi0gICAgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCAKLSAgICA3OSwgNzYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIAotICAgIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgCi0gICAgNjksIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxOTcsIDg2LCA3MywgNzgsIDEyOCwgCi0gICAgODYsIDczLCA3NiwgNzYsIDY1LCA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA4NiwgNzMsIDY5LCA4NywgNzMsIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIAotICAgIDg0LCAxMjgsIDg2LCA3MywgNjksIDIxMiwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIAotICAgIDY4LCA3NCwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgCi0gICAgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCAKLSAgICA3MywgNjcsIDg0LCA3OSwgODIsIDIxNywgODYsIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MCwgNjUsIAotICAgIDEyOCwgODYsIDY5LCA4OSwgOTAsIDEyOCwgODYsIDY5LCA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCAKLSAgICA4NiwgNjksIDg1LCA4OCwgMTI4LCA4NiwgNjksIDg1LCA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIAotICAgIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgCi0gICAgNjksIDIwNCwgODYsIDY5LCA4MiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAotICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAotICAgIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAotICAgIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIAotICAgIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAotICAgIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAotICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODMsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIDgzLCAxMjgsIDg2LCA2OSwgODIsIDEyOCwgODYsIDY5LCAKLSAgICA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIAotICAgIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCAKLSAgICA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg1LCAxMjgsIDg2LCAKLSAgICA2NSwgODQsIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIAotICAgIDg2LCA2NSwgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDg0LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIAotICAgIDY1LCA4MiwgNzMsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgCi0gICAgODYsIDY1LCA4MiwgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIAotICAgIDEyOCwgODYsIDY1LCA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIAotICAgIDEyOCwgODYsIDY1LCA3NCwgMTI4LCA4NiwgNjUsIDczLCAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCAyMDAsIDg2LCAKLSAgICA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDUyLCA0OCwgMTI4LCA4NiwgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgCi0gICAgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgCi0gICAgODYsIDQ4LCA1MSwgNTIsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCAKLSAgICA0OCwgNTEsIDUwLCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIAotICAgIDUxLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA4NiwgNDgsIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA4NiwgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIAotICAgIDQ4LCA1MCwgNDksIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgCi0gICAgNDgsIDUwLCA0OCwgNzQsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCAKLSAgICA4NiwgNDgsIDUwLCA0OCwgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgCi0gICAgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAKLSAgICA2NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIAotICAgIDEyOCwgODYsIDQ4LCA0OSwgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIAotICAgIDQ4LCA0OSwgNTMsIDEyOCwgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgCi0gICAgNTAsIDY2LCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCAKLSAgICA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4NiwgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAKLSAgICAxMjgsIDg2LCA0OCwgNDgsIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCAKLSAgICA0OCwgNDgsIDUxLCAxMjgsIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIAotICAgIDQ4LCA0OSwgNzMsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgCi0gICAgNDgsIDQ4LCA0OSwgNzAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCAKLSAgICA4NiwgNDgsIDQ4LCA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIAotICAgIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCA4NywgODUsIDEyOCwgODUsIDg1LCA4OSwgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg1LCA4NSwgODUsIDEyOCwgODUsIDg1LCA4NSwgNTEsIDEyOCwgODUsIDg1LCAKLSAgICA4NSwgNTAsIDEyOCwgODUsIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCA4MywgODUsIAotICAgIDUxLCAxMjgsIDg1LCA4MywgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDg1LCA3NywgCi0gICAgODgsIDEyOCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgODUsIDgzLCAKLSAgICA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgODUsIDgzLCAKLSAgICA2OSwgNDUsIDQ5LCAxMjgsIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgODUsIDgyLCAKLSAgICA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCA4MiwgODUsIAotICAgIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCA4MiwgNzMsIAotICAgIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIDY1LCAxMjgsIAotICAgIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCi0gICAgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCAKLSAgICA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIAotICAgIDc5LCAyMDYsIDg1LCA4MCwgODMsIDczLCA2OCwgNjksIDQ1LCA2OCwgNzksIDg3LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgCi0gICAgNzIsIDIxMiwgODUsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCAKLSAgICA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgCi0gICAgMTk5LCA4NSwgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAKLSAgICAxOTYsIDg1LCA3OCwgNzUsIDc4LCA3OSwgODcsIDc4LCAxMjgsIDg1LCA3OCwgNzUsIDEyOCwgODUsIDc4LCA3MywgODYsIAotICAgIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgCi0gICAgNzgsIDczLCAyMTIsIDg1LCA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCAKLSAgICA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzMsIDY3LCA3OSwgODIsIDIwNiwgODUsIDc4LCA2OCwgMjA3LCA4NSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDg0LCA3MywgNjksIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA3NiwgNzMsIDc4LCAxOTcsIDg1LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgNjgsIDc5LCA4NCwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgODUsIDc4LCAKLSAgICA2OCwgNjksIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDg1LCA3OCwgNjcsIAotICAgIDY5LCA4MiwgODQsIDY1LCA3MywgNzgsIDg0LCAyMTcsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAKLSAgICA2OCwgMTI4LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIAotICAgIDY1LCAxMjgsIDg1LCAyMDYsIDg1LCA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIAotICAgIDY5LCA3NiwgNzYsIDY1LCAxMjgsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgCi0gICAgMTI4LCA4NSwgNzUsIDg1LCAxMjgsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA4NSwgNzUsIDY1LCAKLSAgICA4MiwgNjUsIDEyOCwgODUsIDc1LCA2NSwgODIsIDE5MywgODUsIDc1LCAxMjgsIDg1LCA3MywgNzYsIDc2LCA2OSwgNjUsIAotICAgIDc4LCA3OCwgMTI4LCA4NSwgNzMsIDcxLCA3MiwgODUsIDIxMCwgODUsIDcxLCA2NSwgODIsIDczLCA4NCwgNzMsIDE5NSwgCisgICAgODcsIDY1LCA4MSwgNzAsIDY1LCAxMjgsIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCAKKyAgICA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIAorICAgIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODcsIDY1LCA3NiwgNzYsIDEyOCwgCisgICAgODcsIDY1LCA3NiwgMjA0LCA4NywgNjUsIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgNzMsIDgzLCA4NCwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIAorICAgIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgODcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgCisgICAgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgNDgsIDQ5LCA1NCwgCisgICAgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDEyOCwgCisgICAgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIDEyOCwgODcsIDQ4LCAKKyAgICA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NywgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgNDgsIDQ4LCA1NCwgCisgICAgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgCisgICAgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCAKKyAgICA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCAKKyAgICA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNzQsIDEyOCwgODYsIDg3LCAKKyAgICA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIDg2LCA4NSwgODUsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCAKKyAgICA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgODMsIDEyOCwgODYsIDg0LCAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgNTcsIDU1LCAxMjgsIDg2LCA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIAorICAgIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAxMjgsIDg2LCA4MywgNTcsIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCA4MywgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIDEyOCwgODYsIDgzLCA1NiwgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgCisgICAgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIDgzLCA1NiwgNTIsIDEyOCwgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgNDksIDEyOCwgODYsIDgzLCA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCAKKyAgICA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgODMsIDU1LCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCA1MywgMTI4LCA4NiwgODMsIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgCisgICAgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCA4NiwgODMsIDU1LCA0OSwgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU3LCAxMjgsIDg2LCA4MywgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAKKyAgICAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIDg2LCA4MywgNTQsIDUzLCAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgNTQsIDUwLCAxMjgsIDg2LCA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTcsIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIAorICAgIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCA1MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgCisgICAgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIDEyOCwgODYsIDgzLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgCisgICAgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIDgzLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCAKKyAgICA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCAKKyAgICA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIAorICAgIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCA0OCwgMTI4LCA4NiwgODMsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgCisgICAgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCisgICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCisgICAgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCisgICAgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCisgICAgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCisgICAgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCAKKyAgICA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCisgICAgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgCisgICAgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCAKKyAgICA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgMTI4LCA4NiwgNzksIDg1LCAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCAKKyAgICAyMTEsIDg2LCA3OSwgODAsIDEyOCwgODYsIDc5LCA3OSwgNzMsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAKKyAgICAxMjgsIDg2LCA3OSwgNzYsIDg1LCA3NywgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIAorICAgIDc2LCA2OSwgODksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDg2LCA3OSwgNzYsIDY3LCA2NSwgNzgsIDc5LCAxMjgsIDg2LCA3OSwgCisgICAgNzYsIDY1LCA4MCwgODUsIDIwMywgODYsIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA4NiwgNzksIDczLCA2NywgNjksIDc2LCA2OSwgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjgsIAorICAgIDEyOCwgODYsIDc5LCA2NywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAKKyAgICAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIDg5LCA3OSwgMTI4LCA4NiwgNzMsIDg4LCAxMjgsIDg2LCA3MywgODQsIDgyLCAKKyAgICA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDEyOCwgODYsIDczLCA4NCwgNjUsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCA3MywgODQsIDEyOCwgODYsIDczLCA4MywgCisgICAgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgODksIDY1LCAxMjgsIDg2LCAKKyAgICA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDE5MywgODYsIDczLCA4MiwgNzMsIAorICAgIDY1LCA3NywgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNzksIDEyOCwgODYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgCisgICAgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIDc5LCA3NiwgNzMsIDc4LCAxMjgsIDg2LCAKKyAgICA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MCwgCisgICAgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCAyMTAsIDg2LCAKKyAgICA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDE5NywgODYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc2LCA3NiwgNjUsIAorICAgIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCA3MywgCisgICAgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIDczLCAKKyAgICA2OSwgMjEyLCA4NiwgNzMsIDY5LCA4MCwgMTI4LCA4NiwgNzMsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDc0LCA0NSwgNTAsIAorICAgIDEyOCwgODYsIDczLCA2OCwgNzQsIDEyOCwgODYsIDczLCA2OCwgNjksIDc5LCA2NywgNjUsIDgzLCA4MywgNjksIDg0LCA4NCwgCisgICAgNjksIDEyOCwgODYsIDczLCA2OCwgNjksIDIwNywgODYsIDczLCA2OCwgNjUsIDEyOCwgODYsIDczLCA2NywgODQsIDc5LCAKKyAgICA4MiwgMjE3LCA4NiwgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDcwLCA2NSwgMTI4LCA4NiwgNjksIAorICAgIDg5LCA5MCwgMTI4LCA4NiwgNjksIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDg2LCA2OSwgODUsIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgCisgICAgNjksIDg1LCA2NSwgNjksIDEyOCwgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCAKKyAgICA4NiwgNjksIDgyLCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIAorICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCAKKyAgICA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCAKKyAgICA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCAKKyAgICA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCAKKyAgICA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCAKKyAgICA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCAKKyAgICA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCAKKyAgICA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKKyAgICA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKKyAgICA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIAorICAgIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgODMsIDEyOCwgODYsIDY5LCA4MiwgMTI4LCA4NiwgNjksIDgwLCAxMjgsIDg2LCAKKyAgICA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCA2OSwgNzIsIDczLCA2NywgNzYsIDY5LCAxMjgsIAorICAgIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIDEyOCwgODYsIDY5LCAxOTcsIDg2LCA2OSwgNjgsIAorICAgIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NiwgCisgICAgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIDg2LCA2NSwgODUsIDEyOCwgODYsIDY1LCA4NCwgCisgICAgNzIsIDg5LCAxMjgsIDg2LCA2NSwgODQsIDEyOCwgODYsIDY1LCA4MywgODQsIDc4LCA2OSwgODMsIDIxMSwgODYsIDY1LCAKKyAgICA4MywgNzMsIDgzLCAxMjgsIDg2LCA2NSwgODIsIDg5LCAyMTEsIDg2LCA2NSwgODIsIDczLCA3NSwgNjUsIDEyOCwgODYsIAorICAgIDY1LCA4MiwgNzMsIDY1LCA3OCwgODQsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgMjEyLCA4NiwgNjUsIDgyLCA3MywgCisgICAgNjUsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDE5MywgODYsIDY1LCA4MiwgNjksIDczLCA2NSwgMjAxLCA4NiwgNjUsIDgyLCAKKyAgICA2OSwgNzMsIDE5MywgODYsIDY1LCA4MCwgNzksIDg1LCA4MiwgODMsIDEyOCwgODYsIDY1LCA4MCwgMTI4LCA4NiwgNjUsIAorICAgIDc4LCA2OSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgODYsIDY1LCA3NywgCisgICAgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDE5MywgODYsIDY1LCA3NiwgNzYsIDY5LCA4OSwgMTI4LCA4NiwgNjUsIDc0LCAKKyAgICAxMjgsIDg2LCA2NSwgNzMsIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDIwMCwgODYsIDY1LCA2NSwgODYsIDg1LCAKKyAgICAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCAxMjgsIDg2LCAKKyAgICA0OCwgNTEsIDU3LCAxMjgsIDg2LCA0OCwgNTEsIDU2LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIAorICAgIDUxLCA1NSwgMTI4LCA4NiwgNDgsIDUxLCA1NCwgMTI4LCA4NiwgNDgsIDUxLCA1MywgMTI4LCA4NiwgNDgsIDUxLCA1MiwgCisgICAgMTI4LCA4NiwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDEyOCwgODYsIDQ4LCA1MSwgNTAsIDEyOCwgCisgICAgODYsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCAxMjgsIDg2LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCAKKyAgICA4NiwgNDgsIDUxLCA0OCwgMTI4LCA4NiwgNDgsIDUwLCA1NywgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDEyOCwgODYsIAorICAgIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCAxMjgsIDg2LCA0OCwgNTAsIDU1LCAxMjgsIDg2LCA0OCwgCisgICAgNTAsIDU0LCAxMjgsIDg2LCA0OCwgNTAsIDUzLCAxMjgsIDg2LCA0OCwgNTAsIDUyLCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAKKyAgICA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgMTI4LCA4NiwgNDgsIDUwLCA1MCwgMTI4LCA4NiwgNDgsIDUwLCA0OSwgMTI4LCAKKyAgICA4NiwgNDgsIDUwLCA0OCwgNzYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NCwgCisgICAgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzMsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcyLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAKKyAgICA3MSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzAsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY5LCAxMjgsIDg2LCA0OCwgNTAsIAorICAgIDQ4LCA2OCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjcsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY2LCAxMjgsIDg2LCA0OCwgCisgICAgNTAsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgMTI4LCA4NiwgNDgsIDQ5LCA1NywgMTI4LCA4NiwgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA4NiwgNDgsIDQ5LCA1NSwgMTI4LCA4NiwgNDgsIDQ5LCA1NCwgMTI4LCA4NiwgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA4NiwgNDgsIDQ5LCA1MiwgMTI4LCA4NiwgNDgsIDQ5LCA1MSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgNjYsIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDksIDUwLCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NywgMTI4LCA4NiwgCisgICAgNDgsIDQ5LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCAxMjgsIDg2LCAKKyAgICA0OCwgNDksIDQ4LCAxMjgsIDg2LCA0OCwgNDgsIDU3LCAxMjgsIDg2LCA0OCwgNDgsIDU2LCAxMjgsIDg2LCA0OCwgNDgsIAorICAgIDU1LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDEyOCwgODYsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgODYsIDQ4LCA0OCwgNTMsIDEyOCwgODYsIDQ4LCA0OCwgNTIsIDEyOCwgODYsIDQ4LCA0OCwgNTEsIDEyOCwgCisgICAgODYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDUwLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MywgMTI4LCAKKyAgICA4NiwgNDgsIDQ4LCA0OSwgNzIsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcxLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MCwgCisgICAgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjksIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY4LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCAKKyAgICA2NywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNDgsIAorICAgIDQ5LCAxMjgsIDg1LCA5MCwgODUsIDEyOCwgODUsIDkwLCA1MSwgMTI4LCA4NSwgOTAsIDE3OSwgODUsIDg5LCA2NSwgNzgsIAorICAgIDc4LCA2NSwgMTI4LCA4NSwgODksIDEyOCwgODUsIDg3LCA4NSwgMTI4LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4NSwgODUsIDg1LCA4NSwgMTI4LCA4NSwgODUsIDg1LCA1MSwgMTI4LCA4NSwgODUsIDg1LCA1MCwgMTI4LCA4NSwgCisgICAgODUsIDY5LCAxMjgsIDg1LCA4NCwgODUsIDc1LCA3MywgMTI4LCA4NSwgODMsIDgzLCA4NSwgNTEsIDEyOCwgODUsIDgzLCAKKyAgICA4MywgODUsIDEyOCwgODUsIDgzLCA3MiwgODgsIDEyOCwgODUsIDgzLCA3MiwgODUsIDc3LCA4OCwgMTI4LCA4NSwgODMsIAorICAgIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODMsIDcyLCA1MCwgMTI4LCA4NSwgODMsIDcyLCAxMjgsIDg1LCA4MywgCisgICAgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDQ1LCA1MCwgMTI4LCA4NSwgODMsIDY5LCA0NSwgNDksIDEyOCwgCisgICAgODUsIDgzLCA2OSwgMTI4LCA4NSwgODMsIDE5NywgODUsIDgyLCA4NSwgMjE4LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NSwgCisgICAgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDE5MywgODUsIDgyLCA4NSwgMTI4LCA4NSwgODIsIDIxMywgCisgICAgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIDEyOCwgODUsIDgyLCA3MywgNTEsIDEyOCwgODUsIDgyLCAKKyAgICA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIDg1LCA4MiwgNjUsIDEyOCwgODUsIDgyLCA1MiwgMTI4LCAKKyAgICA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4NSwgODAsIAorICAgIDg3LCA2NSwgODIsIDY4LCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIDg0LCA4NSwgODIsIDc4LCAKKyAgICAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgODUsIAorICAgIDgwLCA4MywgNzMsIDY4LCA2OSwgNDUsIDY4LCA3OSwgODcsIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4NSwgCisgICAgODAsIDgwLCA2OSwgODIsIDEyOCwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIDcyLCA3NywgNjUsIDc4LCAKKyAgICA3MywgODksIDY1LCAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDg1LCA3OSwgNzgsIAorICAgIDEyOCwgODUsIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIDE5NiwgODUsIDc4LCA3NSwgCisgICAgNzgsIDc5LCA4NywgNzgsIDEyOCwgODUsIDc4LCA3NSwgMTI4LCA4NSwgNzgsIDczLCA4NiwgNjksIDgyLCA4MywgNjUsIAorICAgIDIwNCwgODUsIDc4LCA3MywgODQsIDg5LCAxMjgsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDg1LCA3OCwgNzMsIDIxMiwgODUsIAorICAgIDc4LCA3MywgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzMsIDc5LCAyMDYsIDg1LCA3OCwgNzMsIDcwLCA3OSwgODIsIDc3LCAKKyAgICAxMjgsIDg1LCA3OCwgNzMsIDcwLCA3MywgNjksIDE5NiwgODUsIDc4LCA3MywgNjcsIDc5LCA4MiwgMjA2LCA4NSwgNzgsIAorICAgIDY4LCAyMDcsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODQsIDczLCA2OSwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDc2LCA3MywgCisgICAgNzgsIDE5NywgODUsIDc4LCA2OCwgNjksIDgyLCA2OCwgNzksIDg0LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjYsIDY1LCAKKyAgICA4MiwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgODUsIDc4LCA2OCwgNjksIDIxMCwgODUsIDc4LCA2NywgNzMsIAorICAgIDE5MywgODUsIDc4LCA2NywgNjksIDgyLCA4NCwgNjUsIDczLCA3OCwgODQsIDIxNywgODUsIDc4LCA2NiwgNzYsIDY5LCA3OCwgCisgICAgNjgsIDY5LCAxOTYsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCA2OCwgMTI4LCA4NSwgNzgsIDY1LCAKKyAgICA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIDY1LCAxMjgsIDg1LCAyMDYsIDg1LCAKKyAgICA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIDY5LCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgMTI4LCA4NSwgNzUsIDg1LCAKKyAgICAxMjgsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA4NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgODUsIAorICAgIDc1LCA2NSwgODIsIDE5MywgODUsIDc1LCAxMjgsIDg1LCA3MywgNzYsIDc2LCA2OSwgNjUsIDc4LCA3OCwgMTI4LCA4NSwgCisgICAgNzMsIDcxLCA3MiwgODUsIDIxMCwgODUsIDcyLCA2OCwgMTI4LCA4NSwgNzEsIDY1LCA4MiwgNzMsIDg0LCA3MywgMTk1LCAKICAgICA4NSwgNjksIDg5LCAxMjgsIDg1LCA2OSwgNzMsIDEyOCwgODUsIDY5LCA2OSwgMTI4LCA4NSwgNjksIDY1LCAxMjgsIDg1LCAKICAgICA2OCwgODUsIDcxLCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIAogICAgIDg1LCA2OCwgNjUsIDY1LCA4NCwgMTI4LCA4NSwgNjgsIDEyOCwgODUsIDE5NiwgODUsIDY3LCAxMjgsIDg1LCA2NiwgODUsIApAQCAtNTM4LDY4ICs1NDEsNzEgQEAKICAgICA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDc5LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDg0LCA4NywgNzMsIAogICAgIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIDg0LCA4NywgNzMsIDczLCAKICAgICAxMjgsIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgNzksIDEyOCwgODQsIAotICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAKLSAgICA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIAotICAgIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCAKLSAgICA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIAotICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCAKLSAgICA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgCi0gICAgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCAKLSAgICA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAxMjgsIAotICAgIDg0LCA4NywgNjksIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCA3NiwgNzAsIDg0LCA3MiwgODMsIDEyOCwgODQsIDg3LCA2OSwgCi0gICAgNzYsIDcwLCA4NCwgNzIsIDEyOCwgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgMTI4LCA4NCwgODcsIDY1LCAKLSAgICAxMjgsIDg0LCA4NiwgODIsIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCA2OCwgODUsIDIxMCwgODQsIAotICAgIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODUsIDg0LCA4NCwgCi0gICAgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIDg0LCAxMjgsIDg0LCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgNjksIDEyOCwgODQsIAotICAgIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIDEyOCwgODQsIDg1LCA4MiwgCi0gICAgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgMjAwLCA4NCwgODUsIDgyLCAKLSAgICA3NSwgNzMsIDE5NSwgODQsIDg1LCA4MiwgNzUsIDY5LCA4OSwgMTI4LCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAxMjgsIAotICAgIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCA4NCwgCi0gICAgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCA4NCwgCi0gICAgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCAKLSAgICA4NCwgODUsIDIwNSwgODQsIDg1LCA3NiwgNzMsIDgwLCAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIDg0LCA3MywgODMsIAotICAgIDEyOCwgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgNTAsIDEyOCwgODQsIAotICAgIDg1LCA3MSwgMTc4LCA4NCwgODUsIDY2LCAxMjgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgCi0gICAgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgCi0gICAgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIAotICAgIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIAotICAgIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgCi0gICAgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCAKLSAgICA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCAKLSAgICA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIAotICAgIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgCi0gICAgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCAKLSAgICA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgCi0gICAgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjYsIDEyOCwgCi0gICAgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCAKLSAgICA2NSwgMTI4LCA4NCwgODMsIDc5LCAyMTQsIDg0LCA4MywgNzMsIDg1LCAxMjgsIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIAotICAgIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDIwMywgODQsIDgzLCA3MiwgCi0gICAgNzksIDc5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCA2OSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCAKLSAgICA4MywgNzIsIDY5LCAxOTksIDg0LCA4MywgNzIsIDY5LCA2OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIAotICAgIDgzLCA3MiwgNjUsIDE5NCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgCi0gICAgNjksIDY5LCA2NiwgMTI4LCA4NCwgODMsIDY1LCA2OCwgNzMsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCAKLSAgICA2NSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjUsIDY4LCA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgODQsIAotICAgIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCA4NCwgCi0gICAgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIDc3LCAKLSAgICA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIAotICAgIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU0LCAKLSAgICAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUzLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUyLCAxMjgsIAotICAgIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUxLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OSwgMTI4LCA4NCwgCi0gICAgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDgsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NiwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTUsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU0LCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTIsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDUxLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNDksIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDQ4LCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDY5LCAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCAKLSAgICA4NCwgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCA4NCwgODIsIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIAotICAgIDc3LCA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCAKLSAgICA3OSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCi0gICAgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIAotICAgIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCi0gICAgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIAorICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgMjA3LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDcyLCAKKyAgICA4MiwgNjksIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4MywgNzMsIDg4LCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc4LCA4NCwgODksIDQ1LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc5LCAKKyAgICA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDczLCAKKyAgICA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjAwLCA4NCwgODcsIAorICAgIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDEyOCwgCisgICAgODQsIDg3LCA2OSwgNzgsIDg0LCAyMTcsIDg0LCA4NywgNjksIDc4LCA4NCwgNzMsIDY5LCA4NCwgNzIsIDgzLCAxMjgsIDg0LCAKKyAgICA4NywgNjksIDc4LCA4NCwgNzMsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIAorICAgIDE5NywgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDg0LCA4NywgNjksIDc2LCA3MCwgODQsIDcyLCAKKyAgICAxMjgsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDg3LCA2NSwgMTI4LCA4NCwgODYsIDgyLCAKKyAgICA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgNjgsIDg1LCAyMTAsIDg0LCA4NSwgODgsIDY5LCA2OCwgNzksIAorICAgIDEyOCwgODQsIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODUsIAorICAgIDg0LCA4NCwgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIDg0LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgNjksIAorICAgIDEyOCwgODQsIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIDEyOCwgCisgICAgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgMjAwLCAKKyAgICA4NCwgODUsIDgyLCA3NSwgNzMsIDE5NSwgODQsIDg1LCA4MiwgNzUsIDY5LCA4OSwgMTI4LCA4NCwgODUsIDgyLCA2NiwgNjUsIAorICAgIDc4LCAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIAorICAgIDc5LCA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgCisgICAgMTI4LCA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NiwgNzYsIDY5LCAyMTAsIDg0LCAKKyAgICA4NSwgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAxMjgsIDg0LCA4NSwgMjA1LCA4NCwgODUsIDc2LCA3MywgODAsIAorICAgIDEyOCwgODQsIDg1LCA3NSwgODcsIDY5LCA3OCwgODQsIDczLCA4MywgMTI4LCA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgCisgICAgNzEsIDgyLCA3MywgMjAzLCA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgODUsIDcxLCAxNzgsIDg0LCA4NSwgNjYsIDEyOCwgCisgICAgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCAKKyAgICA4NCwgMjEzLCA4NCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgODQsIAorICAgIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIDEyOCwgCisgICAgODQsIDg0LCA4NCwgNjUsIDEyOCwgODQsIDg0LCA4MywgODUsIDEyOCwgODQsIDg0LCA4MywgNzksIDEyOCwgODQsIDg0LCAKKyAgICA4MywgNzMsIDEyOCwgODQsIDg0LCA4MywgNjksIDY5LCAxMjgsIDg0LCA4NCwgODMsIDY5LCAxMjgsIDg0LCA4NCwgODMsIAorICAgIDY1LCAxMjgsIDg0LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzMsIDczLCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgODQsIAorICAgIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgCisgICAgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCA4NCwgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIDg0LCAKKyAgICA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIAorICAgIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgODQsIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgCisgICAgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDg0LCAKKyAgICA2NSwgODUsIDEyOCwgODQsIDg0LCA2NSwgNzMsIDEyOCwgODQsIDg0LCA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgMTI4LCAKKyAgICA4NCwgODMsIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NiwgMTI4LCA4NCwgODMsIDg3LCA2NSwgMTI4LCA4NCwgODMsIAorICAgIDg2LCAxMjgsIDg0LCA4MywgODMsIDY5LCAxMjgsIDg0LCA4MywgODMsIDY1LCAxMjgsIDg0LCA4MywgNzksIDIxNCwgODQsIAorICAgIDgzLCA3MywgODUsIDEyOCwgODQsIDgzLCA3MiwgODUsIDcxLCA4MywgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDc1LCAKKyAgICAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgMjAzLCA4NCwgODMsIDcyLCA3OSwgNzksIDc0LCAxMjgsIDg0LCA4MywgNzIsIAorICAgIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgNjksIDE5OSwgODQsIDgzLCA3MiwgCisgICAgNjksIDY5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgODMsIDcyLCA2NSwgMTk0LCA4NCwgODMsIDcyLCAKKyAgICA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIDEyOCwgODQsIDgzLCA2OSwgNjksIDY2LCAxMjgsIDg0LCA4MywgNjUsIAorICAgIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NiwgMTI4LCA4NCwgODMsIDY1LCA2NSwgCisgICAgNjgsIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCAKKyAgICA3MywgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgCisgICAgNzcsIDgwLCA0NSwgNTcsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTYsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCAKKyAgICA0NSwgNTUsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTQsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTMsIAorICAgIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTIsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTEsIDEyOCwgCisgICAgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OCwgMTI4LCAKKyAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTcsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NSwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTQsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUzLCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTEsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUwLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OSwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNDgsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNjksIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDg0LCA4MiwgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCAKKyAgICA3MSwgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgCisgICAgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIAorICAgIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgCisgICAgNzUsIDc5LCAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCAKKyAgICA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgCiAgICAgMTI4LCA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAyMDEsIDg0LCA4MiwgNzksIDY5LCA5MCwgNjksIDc4LCAKICAgICA3MywgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIDEyOCwgODQsIDgyLCA3MywgODQsIDc5LCAyMTEsIAogICAgIDg0LCA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA4MywgNzMsIDc3LCAKQEAgLTY4OCwyNDkgKzY5NCwyNTAgQEAKICAgICAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIAogICAgIDY5LCA0NSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgMjEwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCAKICAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIAotICAgIDQ1LCA2OSwgMjA1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY3LCA3MywgCi0gICAgODIsIDY3LCA3NiwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCAKLSAgICA2OCwgODMsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIAotICAgIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAKLSAgICAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIDg0LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCAKLSAgICA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA3OSwgNzcsIDEyOCwgODQsIDcyLCA3OSwgNzQsIDEyOCwgODQsIAotICAgIDcyLCA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgCi0gICAgODQsIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIAotICAgIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDQ1LCA4MywgODQsIDY1LCAKLSAgICA3MSwgMTk3LCA4NCwgNzIsIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgODIsIDE5NiwgODQsIDcyLCA3MywgNzgsIAotICAgIDc1LCA3MywgNzgsIDE5OSwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA3MywgNjcsIDIwMywgODQsIDcyLCA3MywgNjUsIDY2LCAxMjgsIDg0LCAKLSAgICA3MiwgNjksIDg5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNjksIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgMTkzLCA4NCwgNzIsIDY5LCA4MywgODAsIDczLCA2NSwgCi0gICAgMjA2LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCA4MywgMTI4LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCAyMTEsIDg0LCAKLSAgICA3MiwgNjksIDIxMSwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNzcsIDY5LCA4NCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgNjksIAotICAgIDgyLCA3NywgNzksIDY4LCA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCAKLSAgICA4MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIAotICAgIDg0LCA3MywgODMsIDc3LCA3OSwgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgCi0gICAgODQsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDY5LCA2NSwgMTI4LCA4NCwgNzIsIDE5NywgCi0gICAgODQsIDcyLCA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCAKLSAgICA3MiwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIAotICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgCi0gICAgNjUsIDc0LCAxMjgsIDg0LCA3MiwgNjUsIDIwMSwgODQsIDcyLCA2NSwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAKLSAgICA2NSwgNzgsIDE5MywgODQsIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA4NCwgNzIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIAotICAgIDg0LCA2OSwgODgsIDg0LCAxMjgsIDg0LCA2OSwgODgsIDIxMiwgODQsIDY5LCA4OCwgMTI4LCA4NCwgNjksIDg2LCA3MywgCi0gICAgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODcsIDY5LCAKLSAgICA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIAotICAgIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgCi0gICAgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCAKLSAgICA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgODQsIAotICAgIDY5LCA4NCwgODIsIDY1LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgCi0gICAgODQsIDIwMCwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzksIDIxMSwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzMsIDc3LCAKLSAgICA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA4NCwgMTI4LCA4NCwgNjksIDIxMiwgODQsIDY5LCA4MywgODMsIAotICAgIDY5LCA4MiwgNjUsIDEyOCwgODQsIDY5LCA4MywgODMsIDY5LCA4MiwgMTkzLCA4NCwgNjksIDgzLCA4MywgNjUsIDgyLCA3OSwgCi0gICAgMjA2LCA4NCwgNjksIDgzLCAyMDAsIDg0LCA2OSwgODIsIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDg0LCAKLSAgICA2OSwgODAsIDEyOCwgODQsIDY5LCA3OCwgODUsIDg0LCA3OSwgMTI4LCA4NCwgNjksIDc4LCA4NSwgMTI4LCA4NCwgNjksIAotICAgIDc4LCAyMTMsIDg0LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4NCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjksIDc4LCA4MywgCi0gICAgNjksIDEyOCwgODQsIDY5LCA3OCwgODMsIDE5NywgODQsIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgCi0gICAgNjksIDc4LCA3OCwgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCAKLSAgICA2OSwgNzYsIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIAotICAgIDY5LCA3NiwgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgCi0gICAgNjksIDc2LCA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIAotICAgIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgCi0gICAgODQsIDY5LCA3NiwgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzUsIDEyOCwgODQsIDY5LCA3MywgODcsIDgzLCAKLSAgICAxMjgsIDg0LCA2OSwgNzEsIDY5LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIAotICAgIDIwMCwgODQsIDY5LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIAotICAgIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgCi0gICAgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIAotICAgIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCAKLSAgICA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIAotICAgIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAKLSAgICAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIAotICAgIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIAotICAgIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgCi0gICAgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCAKLSAgICA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCA4NSwgNzcsIAotICAgIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIDg0LCA2NSwgODQsIDg3LCA2OSwgCi0gICAgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgMTI4LCA4NCwgNjUsIDgzLCAKLSAgICAxMjgsIDg0LCA2NSwgODIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIAotICAgIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MiwgNzEsIDY5LCA4NCwgMTI4LCA4NCwgNjUsIDgxLCAKLSAgICAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgMTI4LCA4NCwgNjUsIDgwLCAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCAKLSAgICA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgNjksIDE5NiwgODQsIDY1LCA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCAyMTIsIDg0LCAKLSAgICA2NSwgNzgsIDE5OSwgODQsIDY1LCA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIAotICAgIDc3LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgCi0gICAgMjA0LCA4NCwgNjUsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCAKLSAgICA2OSwgNzgsIDg0LCA4MywgMTI4LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIAotICAgIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgCi0gICAgMTI4LCA4NCwgNjUsIDc1LCAxODAsIDg0LCA2NSwgNzUsIDEyOCwgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgCi0gICAgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCAKLSAgICA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIAotICAgIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3OSwgCi0gICAgMTI4LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCA2NiwgODMsIAotICAgIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDg0LCA2NSwgNjYsIDEyOCwgODQsIAotICAgIDY1LCAxOTQsIDg0LCA2NSwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgCi0gICAgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCAKLSAgICA2NSwgNzAsIDEyOCwgODQsIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIAotICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIAotICAgIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgCi0gICAgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIAotICAgIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIAotICAgIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgCi0gICAgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAKLSAgICAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAKLSAgICA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCAKLSAgICA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgCi0gICAgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAKLSAgICAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAKLSAgICAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgCi0gICAgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgzLCA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCAKLSAgICA4MiwgNzcsIDY1LCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIAotICAgIDc4LCA3MSwgNjksIDEyOCwgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgCi0gICAgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCAKLSAgICA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgCi0gICAgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc5LCA3MSwgODUsIDY5LCAxMjgsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAotICAgIDE5MywgODMsIDg5LCA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgCi0gICAgODQsIDgyLCA4OSwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgODMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NywgMTI4LCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgCi0gICAgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTIsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIAotICAgIDc5LCA3NiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU2LCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NCwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA1MSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgCi0gICAgNzksIDc2LCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDg5LCAKLSAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUxLCAxMjgsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAKLSAgICA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNDksIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAotICAgIDQ5LCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgCi0gICAgODMsIDg3LCA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIAotICAgIDEyOCwgODMsIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIAotICAgIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgCi0gICAgNzMsIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgCi0gICAgODcsIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCAKLSAgICA2NSwgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDgzLCA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgCi0gICAgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCAKLSAgICA4NCwgODIsIDE5MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIAotICAgIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCA4MywgODUsIDgyLCA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCAKLSAgICA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgODMsIDg1LCA4MiwgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgCi0gICAgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgCi0gICAgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCA2NSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCAKLSAgICA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIAotICAgIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgCi0gICAgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIDgzLCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIAotICAgIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAyMTAsIDgzLCA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIAotICAgIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCA3OSwgMTI4LCA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgCi0gICAgODIsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCAKLSAgICA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgODUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIAotICAgIDgyLCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4MywgODUsIDc4LCAxMjgsIDgzLCA4NSwgCi0gICAgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNzcsIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNzUsIDg1LCA3OCwgMTI4LCAKLSAgICA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgODUsIDc1LCAyMTMsIDgzLCA4NSwgNzMsIAotICAgIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCA4MywgODUsIDczLCAyMTIsIDgzLCA4NSwgCi0gICAgNzIsIDg1LCA4MiwgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgCi0gICAgODMsIDg1LCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODUsIDY3LCA3NSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIAotICAgIDIwMywgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAKLSAgICAyMTEsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIAotICAgIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIAotICAgIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgNjksIDIxMiwgCi0gICAgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIAotICAgIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCAKLSAgICA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA3NCwgNzksIDczLCAKLSAgICA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCA2NiwgNzMsIDg0LCA3OSwgCi0gICAgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAotICAgIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCA3NywgMTI4LCA4MywgODUsIDY1LCA2OSwgODQsIDEyOCwgODMsIAotICAgIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIDY2LCAxMjgsIDgzLCA4NSwgCi0gICAgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgCi0gICAgODksIDEyOCwgODMsIDg0LCA4NSwgNjgsIDczLCAyMDcsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCAKLSAgICA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIAotICAgIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgCi0gICAgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDY4LCAKLSAgICA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIAotICAgIDE5NiwgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgCi0gICAgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgODksIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCAKLSAgICA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIDgzLCA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIAotICAgIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAKLSAgICA4NCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAKLSAgICAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIAotICAgIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgCi0gICAgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCAKLSAgICA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzksIDY3LCAyMDMsIDgzLCA4NCwgNzMsIDgyLCA4MiwgODUsIDIwOCwgODMsIAotICAgIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgODQsIDczLCA3NiwgMjA0LCA4MywgODQsIDczLCA3NiwgMTk3LCA4MywgCi0gICAgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA4NCwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NCwgNzMsIDY3LCAKLSAgICAyMDMsIDgzLCA4NCwgNjksIDgyLCA2OSwgNzksIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzgsIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDgzLCA4NCwgNjksIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCA3NywgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA4NCwgNjksIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCAKLSAgICA4NiwgODIsIDc5LCA4NSwgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIAotICAgIDc5LCAyMTEsIDgzLCA4NCwgNjUsIDg1LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgCi0gICAgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgODMsIDg0LCA2NSwgODIsIDIxMiwgODMsIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDgyLCA4MiwgNjksIDE5NiwgODMsIDg0LCA2NSwgODIsIDc1LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgCi0gICAgNjUsIDIxMCwgODMsIDg0LCA2NSwgNzgsIDY4LCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCAKLSAgICA2NSwgODIsIDE5NiwgODMsIDg0LCA2NSwgNzgsIDY4LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDc3LCA4MCwgNjksIDE5NiwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgCi0gICAgMTI4LCA4MywgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA4MywgODQsIDY1LCAKLSAgICA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgCi0gICAgNzksIDEyOCwgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgCi0gICAgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCAKLSAgICA4OSwgMTI4LCA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCAKLSAgICA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIAotICAgIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIAotICAgIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCAKLSAgICA3MywgMTI4LCA4MywgODMsIDcyLCA3MywgNzgsIDEyOCwgODMsIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIAotICAgIDEyOCwgODMsIDgzLCA2OSwgODAsIDEyOCwgODMsIDgzLCA2OSwgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgODUsIDEyOCwgODMsIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIAotICAgIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDczLCAKLSAgICA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIAotICAgIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgNjUsIDY5LCA2NSwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA3MywgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDUxLCAxMjgsIDgzLCA4MywgCi0gICAgNTAsIDEyOCwgODMsIDgyLCAxMjgsIDgzLCA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCAKLSAgICA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgNzEsIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCA2OSwgNjgsIAorICAgIDQ1LCA3NiwgNjksIDcxLCA3MSwgNjksIDE5NiwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgCisgICAgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgODQsIDcyLCAKKyAgICA4MiwgNjksIDY1LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzksIAorICAgIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgCisgICAgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCAKKyAgICA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIAorICAgIDg0LCA3MiwgNzksIDc3LCAxMjgsIDg0LCA3MiwgNzksIDc0LCAxMjgsIDg0LCA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgCisgICAgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgCisgICAgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCA4MywgMTI4LCA4NCwgCisgICAgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCA0NSwgODMsIDg0LCA2NSwgNzEsIDE5NywgODQsIDcyLCAKKyAgICA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDg0LCA3MiwgNzMsIDczLCAxMjgsIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCAKKyAgICAyMDAsIDg0LCA3MiwgNzMsIDY3LCAyMDMsIDg0LCA3MiwgNzMsIDY1LCA2NiwgMTI4LCA4NCwgNzIsIDY5LCA4OSwgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNjUsIAorICAgIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIDIwNiwgODQsIDcyLCA2OSwgCisgICAgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgNzIsIDY5LCAyMTEsIDg0LCAKKyAgICA3MiwgNjksIDgyLCA3NywgNzksIDc3LCA2OSwgODQsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgCisgICAgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCAKKyAgICA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIAorICAgIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCA2OSwgNjUsIDEyOCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgNjUsIDg3LCAxMjgsIAorICAgIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzcsIDY5LCA2OCwgNzIsIAorICAgIDEyOCwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCA3NCwgMTI4LCA4NCwgNzIsIAorICAgIDY1LCAyMDEsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAxOTMsIDg0LCA3MiwgCisgICAgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIDg4LCA4NCwgMTI4LCAKKyAgICA4NCwgNjksIDg4LCAyMTIsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIDgyLCAxMjgsIDg0LCA2OSwgODUsIAorICAgIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4NCwgNjksIDg1LCAKKyAgICA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIAorICAgIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgCisgICAgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCAKKyAgICA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgODQsIAorICAgIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIDg0LCAKKyAgICA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgCisgICAgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgNjksIDgwLCAxMjgsIDg0LCAKKyAgICA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCA3OCwgMjEzLCA4NCwgNjksIAorICAgIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgODMsIDY5LCAxMjgsIDg0LCA2OSwgCisgICAgNzgsIDgzLCAxOTcsIDg0LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIDczLCAKKyAgICAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIAorICAgIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCA4NSwgCisgICAgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIDczLCAKKyAgICA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgNjksIAorICAgIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA2OSwgCisgICAgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDc1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIAorICAgIDcxLCA2OSwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCAyMDAsIDg0LCA2OSwgCisgICAgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCA2OSwgNjgsIDg1LCAKKyAgICA3OCwgNzEsIDEyOCwgODQsIDY5LCA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIAorICAgIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDc4LCAKKyAgICA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgNjYsIDY5LCAxOTYsIAorICAgIDg0LCA2OSwgNjUsIDgyLCA0NSwgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCA4NCwgNjksIDQ1LCA4NSwgCisgICAgMTI4LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCAKKyAgICA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgMjAwLCA4NCwgNjcsIAorICAgIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIDg0LCA2NSwgODgsIDczLCAxMjgsIDg0LCA2NSwgODgsIAorICAgIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgMjEyLCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA4NCwgCisgICAgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4NCwgNjUsIDg2LCAxMjgsIDg0LCAKKyAgICA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgODUsIDc3LCAxMjgsIDg0LCA2NSwgMjEzLCAKKyAgICA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCAyMDQsIDg0LCA2NSwgODQsIAorICAgIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIDY1LCA4MywgMTI4LCA4NCwgNjUsIDgyLCA4NSwgCisgICAgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAKKyAgICAxMjgsIDg0LCA2NSwgODIsIDcxLCA2OSwgODQsIDEyOCwgODQsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIAorICAgIDEyOCwgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIAorICAgIDY5LCAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgCisgICAgODQsIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc4LCAxOTksIDg0LCA2NSwgNzgsIDY1LCAKKyAgICA2NiwgNjUsIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIAorICAgIDc3LCAxMjgsIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIDIwNCwgODQsIDY1LCA3NiwgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA4NCwgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgNjksIDc4LCA4NCwgODMsIDEyOCwgODQsIDY1LCAKKyAgICA3NiwgNjksIDc4LCAyMTIsIDg0LCA2NSwgNzUsIDgyLCAyMDEsIDg0LCA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCA4NSwgODMsIAorICAgIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIDY1LCA3NSwgNTIsIDEyOCwgODQsIDY1LCA3NSwgMTgwLCA4NCwgNjUsIAorICAgIDc1LCAxMjgsIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAKKyAgICAyMTEsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgCisgICAgODQsIDY1LCA3MSwgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAKKyAgICAxMjgsIDg0LCA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzksIDEyOCwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCAKKyAgICA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIAorICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgNjYsIDgzLCAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgCisgICAgNjUsIDY2LCA3NiwgMTk3LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCA2NSwgMTk0LCA4NCwgNjUsIDY1LCA4MywgNzIsIDY1LCAKKyAgICA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDY1LCA3NiwgODUsIAorICAgIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgNjUsIDcwLCAxMjgsIDg0LCA2NSwgNTAsIDEyOCwgODQsIAorICAgIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCA1MCwgMTI4LCA4NCwgNDgsIDUxLCA1NCwgMTI4LCA4NCwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODQsIDQ4LCAKKyAgICA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIAorICAgIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgNTAsIDU3LCAxMjgsIDg0LCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAxMjgsIDg0LCA0OCwgNTAsIDUzLCAxMjgsIDg0LCA0OCwgCisgICAgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCA0OCwgNTAsIDUwLCAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAKKyAgICAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIDU3LCAxMjgsIDg0LCA0OCwgNDksIDU2LCAxMjgsIDg0LCAKKyAgICA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIAorICAgIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgNDgsIDQ5LCA1MSwgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgCisgICAgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDEyOCwgODQsIDQ4LCA0OSwgNDgsIDEyOCwgCisgICAgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCAKKyAgICA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgODQsIDQ4LCA0OCwgNTIsIDEyOCwgODQsIDQ4LCA0OCwgCisgICAgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCA0OCwgNDgsIDUwLCAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAKKyAgICAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIDgzLCA5MCwgOTAsIDEyOCwgODMsIDkwLCA4NywgNzEsIAorICAgIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgMTI4LCA4MywgOTAsIDc5LCAxMjgsIDgzLCA5MCwgNzMsIAorICAgIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgMTI4LCA4MywgOTAsIDY1LCA2NSwgMTI4LCA4MywgOTAsIAorICAgIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIDgzLCA4OSwgODQsIDEyOCwgODMsIDg5LCA4MywgODQsIAorICAgIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgODQsIDczLCA3NSwgNzMsIDEyOCwgCisgICAgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDgzLCA4OSwgODIsIDczLCAKKyAgICA2NSwgMTk1LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIDEyOCwgODMsIDg5LCA3OSwgODUsIDg3LCA2NSwgMTI4LCAKKyAgICA4MywgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OCwgNjksIDgzLCA3NywgNzksIDIxMSwgODMsIAorICAgIDg5LCA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDIxMSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3OSwgNzEsIDg1LCAKKyAgICA2OSwgMTI4LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAxOTMsIDgzLCA4OSwgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIAorICAgIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgODksIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgCisgICAgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDgzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTMsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCAxMjgsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NiwgMTI4LCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgCisgICAgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTIsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgNDUsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU1LCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1MCwgCisgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDg5LCAKKyAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUwLCAxMjgsIAorICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAKKyAgICA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDQ5LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNDksIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIAorICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAKKyAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAKKyAgICAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIDgzLCA4NywgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCAKKyAgICA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAxMjgsIDgzLCA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIAorICAgIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgCisgICAgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIDczLCAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCAKKyAgICA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIAorICAgIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgNjUsIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCA4MywgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAKKyAgICAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIAorICAgIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgODQsIDgyLCAxOTMsIDgzLCA4NSwgODQsIDEyOCwgODMsIAorICAgIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgODMsIDg1LCA4MiwgCisgICAgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCAKKyAgICA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIAorICAgIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCAKKyAgICA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIAorICAgIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgCisgICAgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIAorICAgIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgCisgICAgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgCisgICAgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCAKKyAgICA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgCisgICAgODMsIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgCisgICAgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKKyAgICA4MywgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgCisgICAgMTI4LCA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgCisgICAgODMsIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIAorICAgIDEyOCwgODMsIDg1LCA3MywgMjEyLCA4MywgODUsIDcyLCA4NSwgODIsIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIAorICAgIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg1LCA2NywgCisgICAgNzUsIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCAyMDMsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCAKKyAgICA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMjExLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIAorICAgIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgCisgICAgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCAKKyAgICA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIAorICAgIDg1LCA2NiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgCisgICAgODUsIDc4LCA2NywgODQsIDczLCA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCAKKyAgICA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgCisgICAgNjksIDQ1LCA1MSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCAKKyAgICA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIAorICAgIDg1LCA2NiwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgCisgICAgNjYsIDczLCA4NCwgNzksIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCAKKyAgICA4MiwgNzksIDg1LCAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgNzcsIDEyOCwgODMsIDg1LCA2NSwgNjksIAorICAgIDg0LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCA2NiwgCisgICAgMTI4LCA4MywgODUsIDY1LCAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIAorICAgIDg0LCA4NSwgNzAsIDcwLCA2OSwgMTk2LCA4MywgODQsIDg1LCA2OCwgODksIDEyOCwgODMsIDg0LCA4NSwgNjgsIDczLCAKKyAgICAyMDcsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIAorICAgIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgCisgICAgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIAorICAgIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3MywgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIAorICAgIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIDE5NiwgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgCisgICAgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCAKKyAgICA4MywgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgCisgICAgODksIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAKKyAgICA3NywgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIAorICAgIDgzLCA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCAKKyAgICA2OSwgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCAKKyAgICA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCAKKyAgICA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzksIAorICAgIDY3LCAyMDMsIDgzLCA4NCwgNzMsIDgyLCA4MiwgODUsIDIwOCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgCisgICAgODQsIDczLCA3NiwgMjA0LCA4MywgODQsIDczLCA3NiwgMTk3LCA4MywgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCAKKyAgICA4NCwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NCwgNzMsIDY3LCAyMDMsIDgzLCA4NCwgNjksIDgyLCA2OSwgNzksIAorICAgIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAKKyAgICAxOTUsIDgzLCA4NCwgNjksIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA4NCwgNjksIAorICAgIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4NSwgMTI4LCA4MywgCisgICAgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCAyMTEsIDgzLCA4NCwgNjUsIDg1LCAKKyAgICA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg0LCAKKyAgICA2NSwgODIsIDIxMiwgODMsIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDgyLCA4MiwgNjksIDE5NiwgODMsIAorICAgIDg0LCA2NSwgODIsIDc1LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgNjUsIDIxMCwgODMsIDg0LCA2NSwgCisgICAgNzgsIDY4LCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCA2NSwgODIsIDE5NiwgODMsIDg0LCAKKyAgICA2NSwgNzgsIDY4LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDc3LCA4MCwgNjksIDE5NiwgODMsIAorICAgIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgMTI4LCA4MywgODQsIDY1LCA3MCwgCisgICAgMTk4LCA4MywgODQsIDY1LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgODMsIDg0LCA1MCwgCisgICAgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCA4MywgODMsIDg1LCAKKyAgICA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIDg1LCA4MCwgMTI4LCAKKyAgICA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgMTI4LCA4MywgODMsIAorICAgIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIDgzLCA4MywgNzMsIDg0LCAxMjgsIAorICAgIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4OCwgMTI4LCA4MywgCisgICAgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCA4MywgODMsIDcyLCAKKyAgICA3MywgNzgsIDEyOCwgODMsIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIDEyOCwgODMsIDgzLCA2OSwgODAsIAorICAgIDEyOCwgODMsIDgzLCA2OSwgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIDgzLCA2NSwgODUsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgCisgICAgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKKyAgICA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIAorICAgIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIAorICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCAKKyAgICA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA4MywgODMsIDY1LCA3MywgCisgICAgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDUxLCAxMjgsIDgzLCA4MywgNTAsIDEyOCwgODMsIDgyLCAxMjgsIAorICAgIDgzLCA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgCisgICAgNzEsIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA3MywgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgNjksIDY4LCAKICAgICAxMjgsIDgzLCA4MSwgODUsIDY5LCA2OSwgOTAsIDE5NywgODMsIDgxLCA4NSwgNjUsIDIxMiwgODMsIDgxLCA4NSwgNjUsIAogICAgIDgyLCA2OSwgODMsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgCiAgICAgMTI4LCA4MywgODAsIDg5LCAxMjgsIDgzLCA4MCwgODcsIDY1LCAxMjgsIDgzLCA4MCwgODUsIDc4LCA3MSwgMjExLCA4MywgCkBAIC05NjksNzcgKzk3Niw3OSBAQAogICAgIDY1LCA3OCwgMTI4LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAyMDYsIDgzLCA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgCiAgICAgNjksIDEyOCwgODMsIDc4LCA3OSwgODcsIDY2LCA3OSwgNjUsIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKICAgICAxMjgsIDgzLCA3OCwgNzksIDIxNSwgODMsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgzLCA3OCwgNzksIDg1LCAyMTIsIDgzLCAKLSAgICA3OCwgNjUsIDIwOCwgODMsIDc4LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIAotICAgIDczLCA3NiwgMTI4LCA4MywgNzgsIDE5MywgODMsIDc3LCA3OSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgCi0gICAgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCAKLSAgICA4MywgNzcsIDczLCA3NiwgMTk3LCA4MywgNzcsIDY5LCA2NSwgODIsIDEyOCwgODMsIDc3LCA2NSwgODMsIDIwMCwgODMsIAotICAgIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDEyOCwgODMsIDc2LCA4NSwgODIsIDEyOCwgCi0gICAgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCA4NywgMTI4LCA4MywgNzYsIDc5LCAyMTUsIDgzLCAKLSAgICA3NiwgNzksIDg2LCA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCA3NiwgNzksIDgwLCA3MywgNzgsIDE5OSwgODMsIAotICAgIDc2LCA3OSwgODAsIDY5LCAxMjgsIDgzLCA3NiwgNzksIDY1LCAyMDYsIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCi0gICAgNzYsIDczLCA3MSwgNzIsIDg0LCA3NiwgMjE3LCA4MywgNzYsIDczLCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCAKLSAgICA2OCwgNjksIDgyLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIAotICAgIDY5LCA4NSwgODQsIDIwMCwgODMsIDc2LCA2OSwgNjksIDgwLCAyMTcsIDgzLCA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAKLSAgICAxOTksIDgzLCA3NiwgNjUsIDg2LCA3OSwgNzgsIDczLCAxOTUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMTI4LCA4MywgNzYsIAotICAgIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCA2NSwgODMsIDIwMCwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA4MywgCi0gICAgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIDg3LCAxMjgsIDgzLCA3NSwgODUsIDc2LCA3NiwgMTI4LCA4MywgNzUsIDg1LCAKLSAgICA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgODIsIDc5LCAyMDYsIDgzLCA3NSwgNzMsIDc4LCAxMjgsIDgzLCA3NSwgNzMsIAotICAgIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgODMsIDc1LCA2OSwgODcsIDY5LCAxOTYsIDgzLCA3NSwgNjUsIDg0LCA2OSwgCi0gICAgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCA2OSwgMTI4LCA4MywgNzMsIDkwLCAxOTcsIDgzLCA3MywgODgsIDg0LCA4OSwgCi0gICAgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIAotICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCAKLSAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgCi0gICAgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCAKLSAgICA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIAotICAgIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgCi0gICAgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCAKLSAgICA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgCi0gICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgODUsIDgzLCA3OSwgNzMsIDE5NiwgCi0gICAgODMsIDczLCA3OCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIAotICAgIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAxMjgsIDgzLCA3MywgCi0gICAgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIAotICAgIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgCi0gICAgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDY4LCAKLSAgICA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCA4MywgCi0gICAgMTI4LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDIxMSwgODMsIDczLCA3NywgODAsIDc2LCAKLSAgICA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIAotICAgIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgCi0gICAgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCAKLSAgICA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIAotICAgIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAKLSAgICAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCAKLSAgICA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIAotICAgIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIAotICAgIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2OCwgNjksIDEyOCwgCi0gICAgODMsIDczLCA2OCwgMTk3LCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCA3NywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCAKLSAgICA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCA3MywgNjUsIAotICAgIDEyOCwgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIAotICAgIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIAotICAgIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgCi0gICAgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCAKLSAgICA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIDcyLCA4NywgMTk3LCA4MywgNzIsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODUsIDEyOCwgODMsIAotICAgIDcyLCA4NSwgODQsIDg0LCA3NiwgNjksIDY3LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDgzLCA3MiwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA4MCwgMTI4LCA4MywgNzIsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCAxMjgsIDgzLCA3MiwgODUsIAotICAgIDc3LCAxMjgsIDgzLCA3MiwgODUsIDc2LCAxMjgsIDgzLCA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgCi0gICAgNjksIDgxLCAxMjgsIDgzLCA3MiwgODUsIDY5LCA3OCwgODMsIDcyLCA4NSwgNjksIDg0LCAxMjgsIDgzLCA3MiwgODUsIDY2LCAKLSAgICA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgNTAsIDEyOCwgODMsIDcyLCA4NSwgMTc4LCA4MywgNzIsIDg1LCAxMjgsIDgzLCAKLSAgICA3MiwgMjEzLCA4MywgNzIsIDg0LCA2NSwgODAsIDczLCA2NywgMTI4LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MywgNzIsIAotICAgIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3NywgODAsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDczLCAKLSAgICAxMjgsIDgzLCA3MiwgODIsIDczLCAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIDgzLCAKLSAgICA3MiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgNzIsIAotICAgIDc5LCA4NSwgNzYsIDY4LCA2OSwgMjEwLCA4MywgNzIsIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDgzLCAKKyAgICA3OCwgNjksIDY5LCA5MCwgNzMsIDc4LCAxOTksIDgzLCA3OCwgNjUsIDIwOCwgODMsIDc4LCA2NSwgNzUsIDY5LCAxMjgsIAorICAgIDgzLCA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIDczLCA3NiwgMTI4LCA4MywgNzgsIDE5MywgODMsIDc3LCA3OSwgCisgICAgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAKKyAgICAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCA4MywgNzcsIDczLCA3NiwgMTk3LCA4MywgNzcsIDY5LCA2NSwgODIsIAorICAgIDEyOCwgODMsIDc3LCA2NSwgODMsIDIwMCwgODMsIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgCisgICAgNzYsIDEyOCwgODMsIDc2LCA4NSwgODIsIDEyOCwgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCAKKyAgICA4NywgMTI4LCA4MywgNzYsIDc5LCAyMTUsIDgzLCA3NiwgNzksIDg2LCA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCAKKyAgICA3NiwgNzksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA3OSwgODAsIDY5LCAxMjgsIDgzLCA3NiwgNzksIDY1LCAyMDYsIAorICAgIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCA3MSwgNzIsIDg0LCA3NiwgMjE3LCA4MywgNzYsIDczLCA2OCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCAKKyAgICA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIDY5LCA4NSwgODQsIDIwMCwgODMsIDc2LCA2OSwgNjksIDgwLCAyMTcsIAorICAgIDgzLCA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNjksIDY5LCAyMDgsIDgzLCA3NiwgNjUsIDg2LCA3OSwgCisgICAgNzgsIDczLCAxOTUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMTI4LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCAKKyAgICA2NSwgODMsIDIwMCwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA4MywgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIAorICAgIDg3LCAxMjgsIDgzLCA3NSwgODUsIDc2LCA3NiwgMTI4LCA4MywgNzUsIDg1LCA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgCisgICAgODIsIDc5LCAyMDYsIDgzLCA3NSwgNzMsIDc4LCAxMjgsIDgzLCA3NSwgNzMsIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgCisgICAgODMsIDc1LCA2OSwgODcsIDY5LCAxOTYsIDgzLCA3NSwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCAKKyAgICA2OSwgMTI4LCA4MywgNzMsIDkwLCAxOTcsIDgzLCA3MywgODgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgCisgICAgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCAKKyAgICA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIAorICAgIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgCisgICAgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCAKKyAgICA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIAorICAgIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAKKyAgICAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCAKKyAgICA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAorICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgCisgICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgCisgICAgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgCisgICAgNzksIDIxMSwgODMsIDczLCA3OCwgODUsIDgzLCA3OSwgNzMsIDE5NiwgODMsIDczLCA3OCwgNzksIDc2LCA3OSwgNzEsIDczLCAKKyAgICA2NywgNjUsIDIwNCwgODMsIDczLCA3OCwgNzgsIDg5LCA3MywgNzMsIDg5LCA3MiwgNjksIDEyOCwgODMsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAKKyAgICAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCAKKyAgICA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIAorICAgIDg1LCA4MywgMTI4LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDIxMSwgODMsIDczLCA3NywgCisgICAgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCAKKyAgICA3MywgNzYsIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIAorICAgIDc4LCA3MSwgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgCisgICAgNzMsIDc2LCA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCAKKyAgICA4NCwgODQsIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIAorICAgIDUxLCAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIAorICAgIDczLCA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgCisgICAgNzMsIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgCisgICAgODMsIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2OCwgNjksIAorICAgIDEyOCwgODMsIDczLCA2OCwgMTk3LCA4MywgNzMsIDY4LCA2OCwgNzIsIDczLCAxMjgsIDgzLCA3MywgNjgsIDY4LCA3MiwgCisgICAgNjUsIDc3LCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAKKyAgICAxMjgsIDgzLCA3MywgNjYsIDE5NywgODMsIDczLCA2NSwgMTI4LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgCisgICAgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCAKKyAgICA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCAKKyAgICA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIAorICAgIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgCisgICAgNzIsIDg3LCAxOTcsIDgzLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNzIsIDg2LCAKKyAgICAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDg1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCA4NCwgNzYsIAorICAgIDY5LCA2NywgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODMsIDcyLCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDgzLCAKKyAgICA3MiwgODUsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCA3NywgMTI4LCA4MywgNzIsIAorICAgIDg1LCA3NiwgMTI4LCA4MywgNzIsIDg1LCA3MCwgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIDY5LCA4MSwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA2OSwgNzgsIDgzLCA3MiwgODUsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgODUsIDgyLCAxMjgsIDgzLCAKKyAgICA3MiwgODUsIDUwLCAxMjgsIDgzLCA3MiwgODUsIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgNzIsIDIxMywgODMsIDcyLCAKKyAgICA4NCwgNjUsIDgwLCA3MywgNjcsIDEyOCwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA4MiwgODUsIDcxLCAxMjgsIAorICAgIDgzLCA3MiwgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDgyLCA3MywgCisgICAgNzMsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgCisgICAgODMsIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCAKKyAgICA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCAyMTAsIDgzLCA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIAogICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MywgCiAgICAgNzIsIDc5LCA4MiwgODQsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgNjksIAogICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgCkBAIC0xMDc3LDU0MyArMTA4Niw1NDggQEAKICAgICAxMjgsIDgzLCA3MiwgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIAogICAgIDcyLCA2NSwgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgCiAgICAgODMsIDcyLCA2NSwgODQsIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCAKLSAgICA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIAotICAgIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzIsIDY1LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgCi0gICAgNzIsIDY1LCA3MCwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzAsIDIxMiwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIAotICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgCi0gICAgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAKLSAgICAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCAKLSAgICA4MywgNzIsIDY1LCAxODIsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCAKLSAgICA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCAKLSAgICA3MSwgMTI4LCA4MywgNjksIDg5LCA3NSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIAotICAgIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgCi0gICAgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAKLSAgICAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDIwNiwgODMsIDY5LCA4NSwgODgsIDEyOCwgODMsIDY5LCAKLSAgICA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgODMsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNjksIDg0LCA3MCwgNzksIAotICAgIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIDg1LCA3MywgCi0gICAgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgNjksIDgyLCAKLSAgICA4NiwgNzMsIDY3LCAxOTcsIDgzLCA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAyMTEsIAotICAgIDgzLCA2OSwgODIsIDczLCA3MCwgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA4MywgCi0gICAgNjksIDgxLCA4NSwgNjksIDc4LCA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgODUsIDgwLCA3NiwgMTk3LCA4MywgNjksIDgwLCAKLSAgICA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIAotICAgIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgCi0gICAgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIAotICAgIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgCi0gICAgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCAKLSAgICA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgCi0gICAgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCAKLSAgICA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIAotICAgIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgCi0gICAgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCi0gICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCi0gICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKLSAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA2OSwgMTk2LCA4MywgNjksIDczLCA4MywgNzcsIDY1LCAxMjgsIDgzLCA2OSwgNzMsIDgzLCA3NywgMTkzLCA4MywgNjksIAotICAgIDcyLCAxMjgsIDgzLCA2OSwgNzEsIDc5LCA3NiwgMTI4LCA4MywgNjksIDcxLCA3OCwgNzksIDEyOCwgODMsIDY5LCA3MSwgCi0gICAgNzcsIDY5LCA3OCwgODQsIDEyOCwgODMsIDY5LCA2OSwgODYsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDg1LCAxMjgsIDgzLCAKLSAgICA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgNjksIDIwNiwgODMsIDY5LCA2OSwgNjgsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDgzLCA2OSwgNjksIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgCi0gICAgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgNjksIDY3LCAKLSAgICA4MiwgNjksIDg0LCAxMjgsIDgzLCA2OSwgNjcsIDc5LCA3OCwgNjgsIDEyOCwgODMsIDY5LCA2NywgNjUsIDc4LCA4NCwgCi0gICAgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCAKLSAgICA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIAotICAgIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgCi0gICAgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgCi0gICAgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgNzksIDc4LCAxMjgsIDgzLCAKLSAgICA2NywgNzksIDgyLCA2OSwgMTI4LCA4MywgNjcsIDczLCA4MywgODMsIDc5LCA4MiwgODMsIDEyOCwgODMsIDY3LCA3MywgCi0gICAgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCAKLSAgICA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCi0gICAgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCAKLSAgICA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIAotICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgCi0gICAgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIAotICAgIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgCi0gICAgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgODIsIDY1LCAKLSAgICA4MywgNzIsIDg0LCA4MiwgMTkzLCA4MywgNjUsIDg1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA4NCwgODUsIDgyLCA3OCwgCi0gICAgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCAKLSAgICA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDY5LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIAotICAgIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgCi0gICAgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCA4MywgNjUsIDgzLCA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgCi0gICAgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIDgyLCAxMjgsIDgzLCA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgCi0gICAgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgNzEsIDE5MywgODMsIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCAKLSAgICA4NCwgNzMsIDczLCA3NywgODUsIDEyOCwgODMsIDY1LCA3OCwgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIAotICAgIDUwLCAxMjgsIDgzLCA2NSwgNzgsIDY4LCA3MiwgMjAxLCA4MywgNjUsIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgCi0gICAgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCAKLSAgICA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgCi0gICAgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCAKLSAgICA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgCi0gICAgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAKLSAgICA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAxMjgsIAotICAgIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgNzksIDIxMywgODMsIDY1LCA3NiwgCi0gICAgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgODMsIDY1LCA3NiwgNDUsIDY1LCAKLSAgICA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzUsIDc5LCA4NCwgCi0gICAgMTI4LCA4MywgNjUsIDc1LCA3MiwgMTkzLCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIDc1LCAKLSAgICAxOTcsIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIAotICAgIDgzLCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIDEyOCwgCi0gICAgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAxMjgsIDgzLCAKLSAgICA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDcwLCA2OSwgODQsIAotICAgIDIxNywgODMsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDEyOCwgODMsIAotICAgIDY1LCAxOTYsIDgzLCA2NSwgNjcsIDgyLCA3MywgNzAsIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgNjUsIDczLCAKLSAgICAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIDEyOCwgODMsIAotICAgIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIDQ4LCA1MiwgCi0gICAgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgNTUsIDEyOCwgCi0gICAgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAxMjgsIDgzLCAKLSAgICA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCA0OCwgNTEsIAotICAgIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIDU2LCAxMjgsIAotICAgIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjUsIDEyOCwgCi0gICAgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgODMsIDQ4LCAKLSAgICA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCA1MCwgNDgsIAotICAgIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIAotICAgIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIDgzLCA0OCwgCi0gICAgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgODMsIDQ4LCAKLSAgICA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCA0OSwgNDgsIAotICAgIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIDEyOCwgODMsIAotICAgIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIDgzLCA0OCwgCi0gICAgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCA2NSwgODAsIAotICAgIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCA4OSwgODIsIAotICAgIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCA4MiwgODcsIAotICAgIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIDEyOCwgODIsIAotICAgIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIDg3LCA2NSwgCi0gICAgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgODUsIDEyOCwgCi0gICAgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODUsIDgyLCAKLSAgICAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCA3OCwgNzksIAotICAgIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIDEyOCwgCi0gICAgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIDgyLCA4NSwgNzcsIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgCi0gICAgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCAKLSAgICA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAxMjgsIDgyLCA4NSwgNzYsIDY1LCA3MywgMTI4LCA4MiwgODUsIAotICAgIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCA3MSwgNjYsIDIxNywgCi0gICAgODIsIDg1LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDg0LCAxOTMsIDgyLCA4NSwgNjYsIDc2LCAxOTcsIDgyLCA4NSwgMTk0LCAKLSAgICA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIAotICAgIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAKLSAgICAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIAotICAgIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDgyLCA2NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgCi0gICAgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCA3OSwgMTI4LCA4MiwgCi0gICAgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIDEyOCwgODIsIDgyLCA2OSwgODgsIDEyOCwgCi0gICAgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIDgyLCAKLSAgICA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIDgyLCAKLSAgICA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA3OSwgODcsIAotICAgIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgCi0gICAgODQsIDczLCA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgODcsIDY1LCA3NiwgCi0gICAgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDcwLCA3NiwgNzksIAotICAgIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA3OSwgCi0gICAgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgODIsIDc5LCA4MywgNzIsIAotICAgIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgNjksIDEyOCwgODIsIDc5LCA3OSwgCi0gICAgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCA3OSwgNzUsIDEyOCwgODIsIDc5LCAKLSAgICA3OSwgNzAsIDEyOCwgODIsIDc5LCA3NywgNjUsIDc4LCA3MywgNjUsIDIwNiwgODIsIDc5LCA3NywgNjUsIDIwNiwgODIsIAotICAgIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNzMsIDc4LCAxOTksIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgCi0gICAgNzksIDc2LCA3NiwgNjksIDY4LCA0NSwgODUsIDIwOCwgODIsIDc5LCA3MiwgNzMsIDc4LCA3MSwgODksIDE5MywgODIsIDc5LCAKLSAgICA3MSwgMTI4LCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCAKLSAgICA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNzksIDIxMiwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIAotICAgIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgCi0gICAgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgCi0gICAgODIsIDc3LCA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgCi0gICAgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgCi0gICAgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIAotICAgIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgCi0gICAgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCA4MCwgNzYsIDE5NywgODIsIDczLCA4MCwgMTI4LCA4MiwgCi0gICAgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCAKLSAgICA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgMTI4LCA4MiwgNzMsIAotICAgIDc3LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgCi0gICAgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCA3MSwgNzIsIDg0LCA3MiwgNjUsIAotICAgIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIAotICAgIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzYsIAotICAgIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgCi0gICAgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MCwgNjUsIAotICAgIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgCi0gICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIAotICAgIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgCi0gICAgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCAKLSAgICA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCAKLSAgICA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIAotICAgIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCAKLSAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgCi0gICAgNjksIDc2LCAxMjgsIDgyLCA3MywgNjksIDY5LCAxMjgsIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCAKLSAgICA2OSwgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIDgyLCA3MywgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NiwgNjYsIAotICAgIDc5LCAyMDYsIDgyLCA3MywgNjUsIDIwNCwgODIsIDcyLCA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIAotICAgIDcyLCAyMDcsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcyLCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIAotICAgIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIAotICAgIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDgzLCA2NywgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCAKLSAgICA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCA4OCwgMTI4LCA4MiwgNjksIAotICAgIDg1LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCAyMDYsIDgyLCA2OSwgCi0gICAgODQsIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDg0LCAKLSAgICA3OSwgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCA4MCwgNzMsIDc4LCA4NSwgODMsIDEyOCwgODIsIDY5LCA4MywgODQsIAotICAgIDgyLCA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MywgCi0gICAgODQsIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgODMsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCAKLSAgICA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIAotICAgIDg0LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3MywgNjgsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgCi0gICAgODMsIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgNzEsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCAKLSAgICA3OCwgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIAotICAgIDY5LCA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIDcyLCAxMjgsIDgyLCA2OSwgODAsIDY5LCA4NCwgNzMsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgMTI4LCAKLSAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDIxMiwgODIsIDY5LCA4MCwgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjksIDgwLCA2NSwgCi0gICAgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIDc3LCA3MywgNzgsIDY4LCA2OSwgMjEwLCAKLSAgICA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIAotICAgIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIDc2LCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgCi0gICAgODgsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzYsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgNjUsIDEyOCwgODIsIDY5LCA3NCwgNjUsIDc4LCAxOTksIAotICAgIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAKLSAgICAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIAotICAgIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAKLSAgICAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIAotICAgIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgCi0gICAgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA4MiwgNjksIDY4LCAKLSAgICA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA3MywgCi0gICAgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgODQsIDczLCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIAotICAgIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDE5NywgODIsIDY5LCA2NywgCi0gICAgODIsIDY5LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDczLCA3OCwgMTk5LCAKLSAgICA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgMTI4LCA4MiwgNjksIAotICAgIDY3LCA3OSwgODIsIDE5NiwgODIsIDY5LCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA4NiwgMTk3LCA4MiwgNjksIDY3LCA2OSwgCi0gICAgODAsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDY5LCAKLSAgICA3MywgODYsIDY5LCAyMTAsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODIsIDY5LCA2NSwgNzYsIAotICAgIDcxLCA2NSwgODIsIDEyOCwgODIsIDY5LCA2NSwgNzIsIDc3LCA4NSwgNzUsIDEyOCwgODIsIDY5LCA2NSwgNjcsIDcyLCAKLSAgICAxMjgsIDgyLCA2OCwgMjA3LCA4MiwgNjgsIDY5LCAyMDQsIDgyLCA2NiwgNjUsIDgzLCAxOTMsIDgyLCA2NSwgODksIDgzLCAKLSAgICAxMjgsIDgyLCA2NSwgODksIDIxMSwgODIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAxMjgsIDgyLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgMTkzLCA4MiwgNjUsIDg0LCA2NSwgCi0gICAgMTI4LCA4MiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgODMsIDg3LCA2NSwgNjgsIDczLCAxMjgsIDgyLCA2NSwgODMsIDc5LCAKLSAgICA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4MSwgMTI4LCA4MiwgNjUsIDgwLCA3MywgODMsIAotICAgIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCAxMjgsIAotICAgIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjUsIDczLCAKLSAgICA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIDc5LCA4NywgCi0gICAgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAyMTcsIDgyLCAKLSAgICA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCA4MiwgNjUsIAotICAgIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcyLCAxMjgsIDgyLCA2NSwgNzAsIDY5LCAKLSAgICAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAxOTcsIAotICAgIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCA2NSwgCi0gICAgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA4MiwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDY1LCA2NiwgNjYsIDczLCA4NCwgMTI4LCA4MiwgNjUsIAotICAgIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgMTI4LCA4MiwgNjUsIDUxLCAxMjgsIAotICAgIDgyLCA2NSwgNTAsIDEyOCwgODIsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNTcsIDEyOCwgODIsIDQ4LCA1MCwgCi0gICAgNTYsIDEyOCwgODIsIDQ4LCA1MCwgNTUsIDEyOCwgODIsIDQ4LCA1MCwgNTQsIDEyOCwgODIsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgODIsIDQ4LCA1MCwgNTIsIDEyOCwgODIsIDQ4LCA1MCwgNTEsIDEyOCwgODIsIDQ4LCA1MCwgNTAsIDEyOCwgODIsIDQ4LCAKLSAgICA1MCwgNDksIDEyOCwgODIsIDQ4LCA1MCwgNDgsIDEyOCwgODIsIDQ4LCA0OSwgNTcsIDEyOCwgODIsIDQ4LCA0OSwgNTYsIAotICAgIDEyOCwgODIsIDQ4LCA0OSwgNTUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDgyLCA0OCwgNDksIDUzLCAxMjgsIDgyLCA0OCwgNDksIDUyLCAxMjgsIDgyLCA0OCwgNDksIDUxLCAxMjgsIDgyLCA0OCwgCi0gICAgNDksIDUwLCAxMjgsIDgyLCA0OCwgNDksIDQ5LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCAKLSAgICA0OCwgMTI4LCA4MiwgNDgsIDQ4LCA1NywgMTI4LCA4MiwgNDgsIDQ4LCA1NiwgMTI4LCA4MiwgNDgsIDQ4LCA1NSwgMTI4LCAKLSAgICA4MiwgNDgsIDQ4LCA1NCwgMTI4LCA4MiwgNDgsIDQ4LCA1MywgMTI4LCA4MiwgNDgsIDQ4LCA1MiwgMTI4LCA4MiwgNDgsIAotICAgIDQ4LCA1MSwgNjYsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCAxMjgsIDgyLCA0OCwgCi0gICAgNDgsIDUwLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgMTI4LCA4MiwgNDgsIDQ4LCA0OSwgMTI4LCA4MiwgNDUsIDY3LCAKLSAgICA4MiwgNjksIDE5NywgODEsIDg5LCA4OCwgMTI4LCA4MSwgODksIDg1LCAxMjgsIDgxLCA4OSwgODQsIDEyOCwgODEsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODEsIDg5LCA4MiwgMTI4LCA4MSwgODksIDgwLCAxMjgsIDgxLCA4OSwgNzksIDEyOCwgODEsIDg5LCAKLSAgICA3MywgMTI4LCA4MSwgODksIDY5LCA2OSwgMTI4LCA4MSwgODksIDY5LCAxMjgsIDgxLCA4OSwgNjUsIDY1LCAxMjgsIDgxLCAKLSAgICA4OSwgNjUsIDEyOCwgODEsIDg5LCAxMjgsIDgxLCA4NywgNzMsIDEyOCwgODEsIDg3LCA2OSwgNjksIDEyOCwgODEsIDg3LCAKLSAgICA2OSwgMTI4LCA4MSwgODcsIDY1LCA2NSwgMTI4LCA4MSwgODcsIDY1LCAxMjgsIDgxLCA4NSwgODgsIDEyOCwgODEsIDg1LCAKLSAgICA4NiwgMTI4LCA4MSwgODUsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCAxMjgsIDgxLCA4NSwgODQsIDEyOCwgODEsIDg1LCAKLSAgICA4MywgNzIsIDgzLCA3MiwgNjUsIDg5LCA2NSwgMTI4LCA4MSwgODUsIDgyLCA4OCwgMTI4LCA4MSwgODUsIDgyLCAxMjgsIAotICAgIDgxLCA4NSwgODAsIDEyOCwgODEsIDg1LCA3OSwgODgsIDEyOCwgODEsIDg1LCA3OSwgODQsIDE5NywgODEsIDg1LCA3OSwgCi0gICAgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNzksIDg0LCAxMjgsIDgxLCA4NSwgNzksIDgwLCAxMjgsIDgxLCAKLSAgICA4NSwgNzksIDEyOCwgODEsIDg1LCA3NSwgMTI4LCA4MSwgODUsIDczLCA3OCwgODQsIDY5LCA4MywgODMsIDY5LCA3OCwgNjcsIAotICAgIDY5LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2OSwgODMsIDczLCA3NywgMTkzLCA4MSwgODUsIDczLCA3OCwgCi0gICAgNjcsIDg1LCA3OCwgODgsIDEyOCwgODEsIDg1LCA3MywgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDgxLCA4NSwgNzMsIDc2LCAKLSAgICAyMTIsIDgxLCA4NSwgNzMsIDc2LCA3NiwgMTI4LCA4MSwgODUsIDczLCA2NywgMjAzLCA4MSwgODUsIDczLCAxMjgsIDgxLCAKLSAgICA4NSwgNzAsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCA2OSwgMTk2LCA4MSwgODUsIDY5LCA4MywgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgxLCA4NSwgNjksIDY5LCAyMDYsIDgxLCA4NSwgNjksIDEyOCwgODEsIDg1LCA2NiwgODUsIDg0LCA4MywgMTI4LCAKLSAgICA4MSwgODUsIDY1LCA4NCwgNjksIDgyLCA3OCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCA4MywgCi0gICAgMTI4LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMjExLCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMTI4LCAKLSAgICA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIDg1LCA4MCwgNzYsIDE5NywgODEsIAotICAgIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCAyMTIsIDgxLCA4NSwgCi0gICAgNjUsIDY4LCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDEyOCwgODEsIDg1LCA2NSwgMTk2LCAKLSAgICA4MSwgODUsIDY1LCAxMjgsIDgxLCA4NSwgMTI4LCA4MSwgMjA4LCA4MSwgNzksIDg4LCAxMjgsIDgxLCA3OSwgODQsIDEyOCwgCi0gICAgODEsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDc5LCA4MCwgNjUsIDEyOCwgODEsIDc5LCA4MCwgMTI4LCA4MSwgNzksIDc5LCAKLSAgICAxMjgsIDgxLCA3OSwgMjA3LCA4MSwgNzksIDcwLCAxMjgsIDgxLCA3OSwgMTk4LCA4MSwgNzksIDY1LCAxMjgsIDgxLCA3OSwgCi0gICAgMTI4LCA4MSwgNzgsIDEyOCwgODEsIDczLCA4OCwgMTI4LCA4MSwgNzMsIDg0LCA4MywgNjUsIDEyOCwgODEsIDczLCA4NCwgCi0gICAgMTI4LCA4MSwgNzMsIDgwLCAxMjgsIDgxLCA3MywgNzMsIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgCi0gICAgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgODEsIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgCi0gICAgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCA4MSwgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDgwLCA3MiwgMTI4LCAKLSAgICA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCAKLSAgICA4MSwgNzIsIDY1LCA4NSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIAotICAgIDEyOCwgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIAotICAgIDg5LCAxMjgsIDgxLCA2NSwgODUsIDEyOCwgODEsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgCi0gICAgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIDgxLCA2NSwgODEsIDEyOCwgODEsIDY1LCA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgCi0gICAgNjUsIDg0LCA4MywgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDIxMSwgODEsIDY1LCA3NiwgMTkzLCA4MSwgNjUsIDczLCAKLSAgICA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODEsIDY1LCA3MywgMTI4LCA4MSwgNjUsIDcwLCAxMjgsIDgxLCA2NSwgMTk4LCAKLSAgICA4MSwgNjUsIDY4LCA3NywgNjUsIDEyOCwgODEsIDY1LCA2NSwgNzMsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAotICAgIDgxLCA2NSwgNjUsIDcwLCAxMjgsIDgxLCA0OCwgNDgsIDU1LCAxMjgsIDgxLCA0OCwgNDgsIDU0LCAxMjgsIDgxLCA0OCwgCi0gICAgNDgsIDUzLCAxMjgsIDgxLCA0OCwgNDgsIDUyLCAxMjgsIDgxLCA0OCwgNDgsIDUxLCAxMjgsIDgxLCA0OCwgNDgsIDUwLCAKLSAgICAxMjgsIDgxLCA0OCwgNDgsIDQ5LCAxMjgsIDgwLCA5MCwgMTI4LCA4MCwgODksIDg4LCAxMjgsIDgwLCA4OSwgODQsIDEyOCwgCi0gICAgODAsIDg5LCA4MiwgODgsIDEyOCwgODAsIDg5LCA4MiwgMTI4LCA4MCwgODksIDgwLCAxMjgsIDgwLCA4NywgNzksIDg5LCAKLSAgICAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgCi0gICAgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKLSAgICA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIAotICAgIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIAotICAgIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAKLSAgICAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIAotICAgIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4NSwgNzcsIDgwLCAxMjgsIAotICAgIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA3MCwgNzAsIDY5LCA2OCwgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgCi0gICAgNjcsIDc1LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgODUsIDE5NCwgODAsIDg1LCA2NSwgODEsIDEyOCwgCi0gICAgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgCi0gICAgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgCi0gICAgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCA2NSwgNzYsIDg0LCA2OSwgMjEwLCA4MCwgODMsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDg0LCA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgCi0gICAgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA2OSwgNjcsIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCAKLSAgICA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgCi0gICAgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKLSAgICA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4MCwgODIsIAotICAgIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MCwgODIsIDc5LCAKLSAgICA3NCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA3MiwgNzMsIDY2LCA3MywgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCAKLSAgICA4MywgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIDcwLCA3OSwgODUsIDc4LCA2OCwgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCAyMTIsIDgwLCAKLSAgICA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDE5NywgODAsIDgyLCA3MywgODYsIAotICAgIDY1LCA2NywgMjE3LCA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODQsIDgyLCAxOTMsIDgwLCA4MiwgCi0gICAgNzMsIDc4LCA4NCwgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCAKLSAgICA2OSwgMjEwLCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIAotICAgIDY3LCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgCi0gICAgODIsIDY5LCA4NiwgNzMsIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDgzLCAKLSAgICA2OSwgODQsIDEyOCwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIAotICAgIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIDgyLCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MCwgNjUsIAotICAgIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgCi0gICAgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDgzLCAxMjgsIDgwLCA4MiwgNjksIDY3LCAKLSAgICA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIAotICAgIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIDgyLCA2NSwgODksIDY5LCAyMTAsIDgwLCA4MiwgCi0gICAgNjUsIDc3LCA0NSwgODAsIDczLCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgMjAxLCA4MCwgODIsIDY1LCAKLSAgICA3NywgNDUsIDc3LCA4NSwgNzksIDg5LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgMjE3LCA4MCwgODIsIAotICAgIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDc4LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA4MCwgCi0gICAgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDIwMSwgODAsIDgyLCAKLSAgICA2NSwgNzcsIDEyOCwgODAsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDEyOCwgODAsIDgwLCA4NiwgMTI4LCA4MCwgODAsIDc3LCAKLSAgICAxMjgsIDgwLCA4MCwgNjUsIDEyOCwgODAsIDc5LCA4OSwgMTI4LCA4MCwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODcsIDY5LCAKLSAgICA4MiwgMjExLCA4MCwgNzksIDg3LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgNjksIDE5NiwgODAsIAotICAgIDc5LCA4NywgNjgsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg1LCA3OCwgMTk2LCA4MCwgNzksIDg1LCA3NiwgODQsIDgyLCAKLSAgICAyMTcsIDgwLCA3OSwgODUsIDY3LCA3MiwgMTI4LCA4MCwgNzksIDg0LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3OSwgODQsIAotICAgIDY1LCA2NiwgNzYsIDE5NywgODAsIDc5LCAyMTIsIDgwLCA3OSwgODMsIDg0LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MCwgNzksIDgzLCA4NCwgNjYsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDc5LCAKLSAgICA4MywgODQsIDEyOCwgODAsIDc5LCA4MywgMjEyLCA4MCwgNzksIDgzLCA4MywgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDg0LCA2NSwgNjYsIDc2LCAKLSAgICAxOTcsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIAotICAgIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCA3MywgNzgsIDE5OSwgODAsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgCi0gICAgNzksIDgwLCA2NywgNzksIDgyLCA3OCwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCAKLSAgICA2OCwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCAKLSAgICA4MCwgNzksIDc3LCA3NywgNjksIDY5LCAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgMTk3LCA4MCwgNzksIDc2LCA3MywgODMsIAorICAgIDcyLCA2NSwgODIsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA3NSwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCAKKyAgICA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIAorICAgIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIAorICAgIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgCisgICAgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA3NiwgNzksIDIxNSwgODMsIDcyLCA2NSwgNzUsIDg0LCAKKyAgICA3MywgMTI4LCA4MywgNzIsIDY1LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDgzLCA3MiwgNjUsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDcwLCA4NCwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA3MCwgMjEyLCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIAorICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCisgICAgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDE4MiwgODMsIDcyLCAKKyAgICA2NSwgNTEsIDEyOCwgODMsIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIDgzLCA3MSwgNzksIDIxMCwgODMsIDcxLCAKKyAgICA2NywgMTI4LCA4MywgNzEsIDY1LCAyMTUsIDgzLCA3MSwgNjUsIDE5NCwgODMsIDcxLCAxMjgsIDgzLCA2OSwgODksIDc1LCAKKyAgICAxMjgsIDgzLCA2OSwgODgsIDg0LCA4NSwgNzYsIDE5MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIAorICAgIDY5LCA4OCwgODQsIDY1LCA3OCwgMjExLCA4MywgNjksIDg2LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgzLCA2OSwgCisgICAgODYsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDIxNywgODMsIDY5LCA4NiwgNjksIDc4LCAKKyAgICA4NCwgNzIsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIAorICAgIDg0LCA2OSwgNjksIDIwNiwgODMsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgCisgICAgNjksIDg2LCA2OSwgMjA2LCA4MywgNjksIDg1LCA4OCwgMTI4LCA4MywgNjksIDg1LCA3OCwgODksIDY1LCA3NywgMTI4LCAKKyAgICA4MywgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA2OSwgODQsIDcwLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA4MywgODQsIAorICAgIDY5LCA4MiwgODQsIDczLCA4NSwgMjExLCA4MywgNjksIDgzLCA4MSwgODUsIDczLCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCAKKyAgICA4NCwgNjksIDEyOCwgODMsIDY5LCA4MywgNjUsIDc3LCAxOTcsIDgzLCA2OSwgODIsIDg2LCA3MywgNjcsIDE5NywgODMsIAorICAgIDY5LCA4MiwgNzMsIDcwLCA4MywgMTI4LCA4MywgNjksIDgyLCA3MywgNzAsIDIxMSwgODMsIDY5LCA4MiwgNzMsIDcwLCAKKyAgICAxMjgsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIAorICAgIDY3LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA4NSwgODAsIDc2LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA2OSwgNzcsIDY2LCA2OSwgCisgICAgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCAKKyAgICA4NCwgNzksIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCA3MywgMTI4LCA4MywgNjksIAorICAgIDc3LCA4NSwgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgMTI4LCA4MywgNjksIDc3LCA3NSwgCisgICAgMTI4LCA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCA3NywgNzMsIDgzLCA3OSwgNzAsIAorICAgIDIxMiwgODMsIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA3NywgCisgICAgNzMsIDc4LCA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCA2NywgMjEyLCA4MywgNjksIDc3LCAKKyAgICA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgMjA2LCA4MywgNjksIAorICAgIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCAKKyAgICA3NiwgMTk3LCA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCA2OSwgNzcsIDczLCA0NSwgODYsIAorICAgIDc5LCA3MywgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCA3MywgNjksIDEyOCwgODMsIDY5LCA3NiwgNzAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIAorICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIAorICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCisgICAgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIAorICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCisgICAgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIAorICAgIDE5MywgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIAorICAgIDgzLCA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDg2LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgCisgICAgMTI4LCA4MywgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgCisgICAgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjcsIDY1LCAKKyAgICA3OCwgODQsIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIAorICAgIDgzLCA2OSwgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgCisgICAgODMsIDY4LCAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCAKKyAgICA2NywgODIsIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIAorICAgIDc4LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgCisgICAgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA4MywgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3OSwgNzksIDg0LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MywgODMsIAorICAgIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIDEyOCwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgCisgICAgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgNjksIDY4LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAKKyAgICA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDIwNCwgODMsIDY3LCA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIAorICAgIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgNjksIDgwLCA4NCwgNjksIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgCisgICAgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCAKKyAgICA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCA2NiwgODUsIDE5NCwgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIAorICAgIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgzLCA2NSwgODksIDEyOCwgCisgICAgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4MywgNjUsIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODcsIDEyOCwgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgCisgICAgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIDE5MywgODMsIDY1LCA4NSwgNzMsIDc2LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCA2OSwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgCisgICAgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgCisgICAgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCAKKyAgICA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIAorICAgIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNzIsIDIwMSwgCisgICAgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCAKKyAgICA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIAorICAgIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgCisgICAgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCAKKyAgICA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIAorICAgIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgCisgICAgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCAKKyAgICA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIAorICAgIDY1LCA2OCwgMTI4LCA4MywgNjUsIDc2LCA2NSwgMTI4LCA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgCisgICAgNjUsIDY3LCAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgNzUsIDc5LCAKKyAgICA4NCwgMTI4LCA4MywgNjUsIDc1LCA3MiwgMTkzLCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIAorICAgIDc1LCAxOTcsIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAKKyAgICAxMjgsIDgzLCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIAorICAgIDEyOCwgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAKKyAgICAxMjgsIDgzLCA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDcwLCAKKyAgICA2OSwgODQsIDIxNywgODMsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIAorICAgIDEyOCwgODMsIDY1LCAxOTYsIDgzLCA2NSwgNjcsIDgyLCA3MywgNzAsIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCAKKyAgICA0NSwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIAorICAgIDEyOCwgODMsIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIAorICAgIDQ4LCA1MiwgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgCisgICAgNTUsIDEyOCwgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAKKyAgICAxMjgsIDgzLCA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCAKKyAgICA0OCwgNTEsIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgCisgICAgNjUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgODMsIDQ4LCA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIAorICAgIDY1LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgCisgICAgODMsIDQ4LCA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDgzLCA0OCwgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCAKKyAgICA2NSwgODAsIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCAKKyAgICA4OSwgODIsIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCAKKyAgICA4MiwgODcsIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIAorICAgIDEyOCwgODIsIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIAorICAgIDg3LCA2NSwgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgCisgICAgODUsIDEyOCwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgCisgICAgODUsIDgyLCAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAKKyAgICAxMjgsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCAKKyAgICA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIAorICAgIDEyOCwgODIsIDg1LCA3OCwgNzMsIDE5NSwgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIDgyLCA4NSwgNzcsIAorICAgIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgMTI4LCA4MiwgODUsIAorICAgIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAxMjgsIDgyLCA4NSwgCisgICAgNzYsIDY1LCA3MywgMTI4LCA4MiwgODUsIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIAorICAgIDEyOCwgODIsIDg1LCA3MSwgNjYsIDIxNywgODIsIDg1LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDg0LCAxOTMsIDgyLCA4NSwgCisgICAgNjYsIDc2LCAxOTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgCisgICAgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCAKKyAgICA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIAorICAgIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIAorICAgIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgCisgICAgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDgyLCAKKyAgICA2NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCAKKyAgICA4MiwgODIsIDc5LCA3OSwgMTI4LCA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIAorICAgIDEyOCwgODIsIDgyLCA2OSwgODgsIDEyOCwgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIAorICAgIDgyLCA2OSwgNzIsIDEyOCwgODIsIDgyLCA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIAorICAgIDgyLCA4MiwgNjUsIDg4LCAxMjgsIDgyLCA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgCisgICAgNjUsIDY1LCAxMjgsIDgyLCA3OSwgODcsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIAorICAgIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODQsIDczLCA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgCisgICAgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA3OSwgODQsIDY1LCA4NCwgCisgICAgNjksIDE5NiwgODIsIDc5LCA4MywgNzIsIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCAKKyAgICA4MywgNjksIDEyOCwgODIsIDc5LCA3OSwgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIAorICAgIDc5LCA3OSwgNzUsIDEyOCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODIsIDc5LCA3NywgNjUsIDc4LCA3MywgNjUsIDIwNiwgCisgICAgODIsIDc5LCA3NywgNjUsIDIwNiwgODIsIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNzMsIDc4LCAxOTksIDgyLCAKKyAgICA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDc2LCA3NiwgNjksIDY4LCA0NSwgODUsIDIwOCwgODIsIDc5LCA3MiwgNzMsIAorICAgIDc4LCA3MSwgODksIDE5MywgODIsIDc5LCA3MSwgMTI4LCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgCisgICAgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNzksIDIxMiwgODIsIDc5LCA2NiwgCisgICAgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCAKKyAgICA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIAorICAgIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgODIsIDc3LCA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIAorICAgIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCAKKyAgICA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIAorICAgIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgCisgICAgMTk5LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCA4MCwgNzYsIDE5NywgCisgICAgODIsIDczLCA4MCwgMTI4LCA4MiwgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDgyLCAKKyAgICA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIAorICAgIDY2LCA2NSwgMTI4LCA4MiwgNzMsIDc3LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgCisgICAgODYsIDY5LCA2OCwgNzMsIDE5NSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgCisgICAgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCAKKyAgICA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgCisgICAgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgyLCA3MywgNzAsIAorICAgIDc2LCA2OSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAKKyAgICA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAKKyAgICA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIAorICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgCisgICAgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCAKKyAgICA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCAKKyAgICA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjYsIDY2LCA3OSwgMjA2LCA4MiwgNzMsIDY1LCAyMDQsIAorICAgIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCA4MiwgNzIsIDczLCA3OCwgCisgICAgNzksIDY3LCA2OSwgODIsIDc5LCA4MywgMTI4LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MiwgMTI4LCA4MiwgNzEsIDg5LCAKKyAgICA3MywgNzgsIDcxLCA4MywgMTI4LCA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIAorICAgIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODIsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAKKyAgICA2OSwgNjgsIDQ1LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIAorICAgIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgODIsIDY5LCA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCAKKyAgICA4MiwgMjA2LCA4MiwgNjksIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIAorICAgIDEyOCwgODIsIDY5LCA4NCwgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAKKyAgICAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIAorICAgIDY5LCAxOTYsIDgyLCA2OSwgODMsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgCisgICAgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgCisgICAgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIAorICAgIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCAKKyAgICA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIAorICAgIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCA4OSwgCisgICAgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCAKKyAgICA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCAKKyAgICA3NywgNzMsIDc4LCA2OCwgNjksIDIxMCwgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgCisgICAgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg4LCA2OSwgNjgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIAorICAgIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzMsIDEyOCwgODIsIDY5LCA3MSwgCisgICAgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCAKKyAgICA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIAorICAgIDY5LCA3MSwgODUsIDc2LCA4NSwgMjExLCA4MiwgNjksIDcxLCA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgCisgICAgNzEsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzEsIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCAKKyAgICA2NSwgMTI4LCA4MiwgNjksIDcwLCA3OSwgODIsIDc3LCA2OSwgMTk2LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIAorICAgIDE5NywgODIsIDY5LCA2OCwgODUsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA2NywgCisgICAgODksIDY3LCA3NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgyLCA2OSwgNjcsIDg0LCAKKyAgICA3MywgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIAorICAgIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCAKKyAgICAxOTcsIDgyLCA2OSwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDY3LCA3OSwgODIsIAorICAgIDY4LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgCisgICAgNjgsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgODYsIAorICAgIDE5NywgODIsIDY5LCA2NywgNjksIDgwLCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgCisgICAgMTI4LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgMjEwLCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIDUwLCAKKyAgICAxMjgsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAxMjgsIAorICAgIDgyLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCA4MywgCisgICAgMTkzLCA4MiwgNjUsIDg5LCA4MywgMTI4LCA4MiwgNjUsIDg5LCAyMTEsIDgyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDgyLCA2NSwgODQsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzIsIAorICAgIDE5MywgODIsIDY1LCA4NCwgNjUsIDEyOCwgODIsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDgzLCA4NywgNjUsIDY4LCA3MywgCisgICAgMTI4LCA4MiwgNjUsIDgzLCA3OSwgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODEsIDEyOCwgCisgICAgODIsIDY1LCA4MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIDE5NywgODIsIDY1LCA3OCwgNjUsIAorICAgIDEyOCwgODIsIDY1LCA3OCwgMTI4LCA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIDY2LCA2NSwgODQsIDEyOCwgODIsIAorICAgIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY1LCA3OCwgODMsIDY1LCAKKyAgICA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIAorICAgIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgCisgICAgNzYsIDg3LCA2NSwgMjE3LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCAKKyAgICA2OCwgNjUsIDEyOCwgODIsIDY1LCA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MiwgCisgICAgMTI4LCA4MiwgNjUsIDcwLCA2OSwgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCAKKyAgICA2NywgODQsIDczLCA4NiwgMTk3LCA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIAorICAgIDY1LCA2OCwgMjAxLCA4MiwgNjUsIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIAorICAgIDgyLCA2NSwgNjcsIDczLCA3OCwgNzEsIDEyOCwgODIsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNjYsIDY2LCA3MywgCisgICAgODQsIDEyOCwgODIsIDY1LCA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgODIsIDY1LCA1MSwgMTI4LCA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDgyLCA0OCwgNTAsIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCAKKyAgICA0OCwgNTAsIDUzLCAxMjgsIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIAorICAgIDgyLCA0OCwgNDksIDU2LCAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCAKKyAgICA1MSwgMTI4LCA4MiwgNDgsIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIAorICAgIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCAKKyAgICA1MSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIAorICAgIDEyOCwgODIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIAorICAgIDg0LCAxMjgsIDgxLCA4OSwgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIAorICAgIDc5LCAxMjgsIDgxLCA4OSwgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIAorICAgIDY1LCA2NSwgMTI4LCA4MSwgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIAorICAgIDY5LCAxMjgsIDgxLCA4NywgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIAorICAgIDg4LCAxMjgsIDgxLCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIAorICAgIDg0LCAxMjgsIDgxLCA4NSwgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODEsIDg1LCA4MiwgMTI4LCA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAKKyAgICAxOTcsIDgxLCA4NSwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA4MSwgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgCisgICAgODMsIDgzLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIAorICAgIDE5MywgODEsIDg1LCA3MywgNzgsIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgCisgICAgMjExLCA4MSwgODUsIDczLCA3NiwgMjEyLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgCisgICAgODEsIDg1LCA3MywgMTI4LCA4MSwgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIAorICAgIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCAKKyAgICA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIAorICAgIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgCisgICAgODIsIDg0LCA2OSwgODIsIDEyOCwgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCAKKyAgICA4NSwgODAsIDc2LCAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIAorICAgIDY1LCA3OCwgMjEyLCA4MSwgODUsIDY1LCA2OCwgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCAKKyAgICAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgCisgICAgMTI4LCA4MSwgNzksIDg0LCAxMjgsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgCisgICAgODAsIDEyOCwgODEsIDc5LCA3OSwgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIAorICAgIDc5LCA2NSwgMTI4LCA4MSwgNzksIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIAorICAgIDY1LCAxMjgsIDgxLCA3MywgODQsIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNzAsIAorICAgIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgODEsIAorICAgIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCA4MSwgCisgICAgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgCisgICAgODEsIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCA4NSwgMTI4LCA4MSwgNzIsIDY1LCAKKyAgICA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIDEyOCwgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCAKKyAgICA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIDg5LCAxMjgsIDgxLCA2NSwgODUsIDEyOCwgODEsIDY1LCAKKyAgICA4NCwgNjUsIDc4LCAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIDgxLCA2NSwgODEsIAorICAgIDEyOCwgODEsIDY1LCA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCA4MywgMTI4LCA4MSwgNjUsIDc3LCA2NSwgCisgICAgODQsIDIxMSwgODEsIDY1LCA3NiwgMTkzLCA4MSwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODEsIDY1LCAKKyAgICA3MywgMTI4LCA4MSwgNjUsIDcwLCAxMjgsIDgxLCA2NSwgMTk4LCA4MSwgNjUsIDY4LCA3NywgNjUsIDEyOCwgODEsIDY1LCAKKyAgICA2NSwgNzMsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDgxLCA2NSwgNjUsIDcwLCAxMjgsIDgxLCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDgxLCA0OCwgNDgsIDU0LCAxMjgsIDgxLCA0OCwgNDgsIDUzLCAxMjgsIDgxLCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDgxLCA0OCwgNDgsIDUxLCAxMjgsIDgxLCA0OCwgNDgsIDUwLCAxMjgsIDgxLCA0OCwgNDgsIDQ5LCAxMjgsIDgwLCA5MCwgCisgICAgMTI4LCA4MCwgODksIDg4LCAxMjgsIDgwLCA4OSwgODQsIDEyOCwgODAsIDg5LCA4MiwgODgsIDEyOCwgODAsIDg5LCA4MiwgCisgICAgMTI4LCA4MCwgODksIDgwLCAxMjgsIDgwLCA4NywgNzksIDg5LCAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgCisgICAgNzksIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgCisgICAgNjksIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIAorICAgIDgwLCA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgCisgICAgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCAKKyAgICA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIAorICAgIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgCisgICAgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCAKKyAgICA4OSwgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCAKKyAgICA4MCwgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIAorICAgIDEyOCwgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgCisgICAgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDgwLCA4NSwgNzcsIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA3MCwgNzAsIDY5LCA2OCwgCisgICAgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgNjcsIDc1LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgCisgICAgODUsIDE5NCwgODAsIDg1LCA2NSwgODEsIDEyOCwgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgCisgICAgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgCisgICAgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAorICAgIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCAKKyAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCA2NSwgCisgICAgNzYsIDg0LCA2OSwgMjEwLCA4MCwgODMsIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDg0LCAKKyAgICA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA2OSwgNjcsIAorICAgIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgCisgICAgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgCisgICAgNzYsIDc2LCA2OSwgMjEwLCA4MCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAKKyAgICAxOTYsIDgwLCA4MiwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgMTI4LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA3NCwgCisgICAgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA3MiwgNzMsIDY2LCA3MywgODQsIDY5LCAxOTYsIDgwLCAKKyAgICA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIAorICAgIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgCisgICAgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIAorICAgIDE5NywgODAsIDgyLCA3MywgODYsIDY1LCA2NywgMjE3LCA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgCisgICAgODQsIDgyLCAxOTMsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCA2OSwgMjEwLCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgCisgICAgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIDY3LCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA2NywgNjksIAorICAgIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCA4MiwgNjksIDg2LCA3MywgCisgICAgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgODAsIDgyLCA2OSwgODMsIDY5LCA4NCwgMTI4LCAKKyAgICA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODMsIDY3LCA4MiwgCisgICAgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgODIsIDY1LCA3OCwgNjcsIAorICAgIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcxLCA3OCwgNjUsIDc4LCAKKyAgICAyMTIsIDgwLCA4MiwgNjksIDcwLCA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIAorICAgIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgCisgICAgODMsIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIAorICAgIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgCisgICAgODIsIDY1LCA4OSwgNjksIDIxMCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCAKKyAgICA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIAorICAgIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgCisgICAgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCAKKyAgICA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIDY1LCA3NywgMTI4LCA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCAKKyAgICA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIDEyOCwgODAsIDgwLCA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCAKKyAgICA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIDgyLCAyMTEsIDgwLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIAorICAgIDg3LCA2OSwgMjEwLCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIDIxNywgODAsIDc5LCA4NSwgNjcsIAorICAgIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgCisgICAgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA3OSwgODMsIDg0LCAKKyAgICA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIDgzLCA4NCwgMTI4LCA4MCwgNzksIAorICAgIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDgwLCA3OSwgODMsIDczLCA4NCwgCisgICAgNzMsIDc5LCA3OCwgODMsIDEyOCwgODAsIDc5LCA4MiwgODQsIDY1LCA2NiwgNzYsIDE5NywgODAsIDc5LCA4MiwgODIsIDY5LCAKKyAgICA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIAorICAgIDczLCA3OCwgMTk5LCA4MCwgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODAsIDY3LCA3OSwgODIsIDc4LCAKKyAgICAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIDY4LCA3NiwgNjksIDEyOCwgODAsIDc5LCAKKyAgICA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIDgwLCA3OSwgNzcsIDc3LCA2OSwgNjksIAorICAgIDEyOCwgODAsIDc5LCA3NywgNzcsIDY5LCAxOTcsIDgwLCA3OSwgNzYsIDc5LCAxMjgsIDgwLCA3OSwgNzYsIDczLCA4MywgCiAgICAgNzIsIDEyOCwgODAsIDc5LCA3NiwgNzMsIDY3LCAxOTcsIDgwLCA3OSwgNzYsIDIwMSwgODAsIDc5LCA3NiwgNjksIDEyOCwgCiAgICAgODAsIDc5LCA3NiwgMTk3LCA4MCwgNzksIDc1LCA4MiwgODksIDg0LCA3MywgNjksIDEyOCwgODAsIDc5LCA3NSwgNzksIDc0LCAKICAgICA3MywgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDIxMSwgODAsIDc5LCA3MywgNzgsIDg0LCA3OSwgMTI4LCA4MCwgNzksIApAQCAtMTY5MSw3NiArMTcwNSw3OCBAQAogICAgIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDgwLCA2OSwgODIsIDY3LCA4NSwgODMsIDgzLCA3MywgODYsIDY5LCAKICAgICAxMjgsIDgwLCA2OSwgODIsIDY3LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNjksIAogICAgIDgwLCA2OSwgODQsIDEyOCwgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgCi0gICAgNzksIDgwLCA3NiwgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCAKLSAgICA4NCwgNjUsIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIAotICAgIDc4LCA4MywgODUsIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgCi0gICAgNjksIDc4LCA3OCwgNjUsIDc4LCA4NCwgMTI4LCA4MCwgNjksIDc4LCA3MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCAKLSAgICA4NSwgNzMsIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgCi0gICAgODQsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIAotICAgIDEyOCwgODAsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIAotICAgIDY5LCAyMDAsIDgwLCA2OSwgNjksIDkwLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgCi0gICAgNjksIDgwLCAxMjgsIDgwLCA2OSwgNjksIDc3LCAxMjgsIDgwLCA2OSwgNjksIDczLCAxMjgsIDgwLCA2OSwgNjksIDEyOCwgCi0gICAgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIAotICAgIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCA2OSwgCi0gICAgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCA2NSwgMjA0LCA4MCwgNjksIDY1LCA3NSwgMjExLCA4MCwgNjksIDY1LCAKLSAgICA2NywgNzIsIDEyOCwgODAsIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIDY3LCAxOTcsIDgwLCA2OCwgNzMsIAotICAgIDEyOCwgODAsIDY4LCA3MCwgMTI4LCA4MCwgNjgsIDEyOCwgODAsIDY3LCAxMjgsIDgwLCA2NSwgOTAsIDY5LCA4MiwgMTI4LCAKLSAgICA4MCwgNjUsIDg5LCA2OSwgODIsIDc5LCA3NSwgMTI4LCA4MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MCwgNjUsIAotICAgIDg5LCAxMjgsIDgwLCA2NSwgODgsIDEyOCwgODAsIDY1LCA4NywgNzgsIDEyOCwgODAsIDY1LCAyMTUsIDgwLCA2NSwgODYsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MCwgNjUsIDg1LCAxMjgsIDgwLCA2NSwgMjEzLCA4MCwgNjUsIDg0LCA4NCwgCi0gICAgNjksIDgyLCA3OCwgMTI4LCA4MCwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDg0LCAKLSAgICAyMDAsIDgwLCA2NSwgODQsIDY1LCA3NSwgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA4NCwgMTI4LCAKLSAgICA4MCwgNjUsIDgzLCA4NSwgODEsIDEyOCwgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIDY1LCA4MywgODMsIAotICAgIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCAKLSAgICA4MCwgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCA4NywgNzgsIDQ1LCAKLSAgICA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDY5LCA3OCwgNzEsIDY5LCAyMTAsIDgwLCA2NSwgODMsIAotICAgIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDgzLCA2OSwgODEsIDEyOCwgCi0gICAgODAsIDY1LCA4MywgNjUsIDc4LCA3MSwgNjUsIDIwNiwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCA2NSwgODIsIDg0LCAKLSAgICAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAotICAgIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIDY1LCA4MiwgNzUsIAotICAgIDEyOCwgODAsIDY1LCA4MiwgNzMsIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgODQsIDczLCA3MSwgCi0gICAgNzcsIDY5LCA3OCwgNzksIDIwNiwgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCAKLSAgICA4NCwgNzIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAyMTEsIAotICAgIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDY5LCAyMTEsIDgwLCA2NSwgODIsIDY1LCA4MCwgNzIsIDgyLCAKLSAgICA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIAotICAgIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCAyMDQsIDgwLCA2NSwgCi0gICAgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIAotICAgIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgMTkzLCA4MCwgNjUsIDgyLCA2NSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgMTI4LCAKLSAgICA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIDEyOCwgODAsIDY1LCA4MiwgCi0gICAgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCA3NiwgNzMsIDgwLCAKLSAgICA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAyMTAsIAotICAgIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAyMDgsIDgwLCA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIDc1LCA4NSwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgNzUsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgNzEsIDcxLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCA4MiwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCAKLSAgICA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgCi0gICAgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgNzgsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCA2NSwgCi0gICAgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCA2NSwgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKLSAgICA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAorICAgIDc5LCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODQsIDcyLCA3NiwgNzksIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNzgsIDg0LCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgODIsIDY1LCA3NywgMTI4LCAKKyAgICA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgODMsIDg1LCAxMjgsIDgwLCA2OSwgNzgsIAorICAgIDgzLCA3MywgODYsIDE5NywgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIDY5LCA3OCwgNzgsIDY1LCA3OCwgODQsIDEyOCwgCisgICAgODAsIDY5LCA3OCwgNzMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgODUsIDczLCA3OCwgMTI4LCA4MCwgNjksIDc4LCAKKyAgICA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIAorICAgIDY5LCA3OCwgNjcsIDczLCA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgCisgICAgNjUsIDgzLCA4NCwgNzksIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA4MCwgNjksIDcyLCA2OSwgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIAorICAgIDEyOCwgODAsIDY5LCA2OSwgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgCisgICAgMTI4LCA4MCwgNjksIDY5LCA3MywgMTI4LCA4MCwgNjksIDY5LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIAorICAgIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgCisgICAgNjUsIDIwNCwgODAsIDY5LCA2NSwgNzgsIDg1LCA4NCwgODMsIDEyOCwgODAsIDY5LCA2NSwgNzUsIDIxMSwgODAsIDY5LCAKKyAgICA2NSwgNjcsIDcyLCAxMjgsIDgwLCA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIAorICAgIDczLCAxMjgsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIAorICAgIDEyOCwgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDIxMywgODAsIDY1LCAKKyAgICA4NCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIAorICAgIDY1LCA4NCwgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgCisgICAgODQsIDEyOCwgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCAKKyAgICA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCAKKyAgICA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgCisgICAgODcsIDc4LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA2OSwgNzgsIDcxLCA2OSwgMjEwLCAKKyAgICA4MCwgNjUsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA4MywgNjksIAorICAgIDgxLCAxMjgsIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgCisgICAgNjUsIDgyLCA4NCwgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCAKKyAgICA4NCwgNzMsIDY1LCA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgCisgICAgODQsIDczLCA2NSwgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCAKKyAgICA2NSwgODIsIDc1LCAxMjgsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIAorICAgIDg0LCA3MywgNzEsIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgCisgICAgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIAorICAgIDgzLCA3MywgMjExLCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA2OSwgMjExLCA4MCwgNjUsIDgyLCA2NSwgCisgICAgODAsIDcyLCA4MiwgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIAorICAgIDc3LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgCisgICAgMjA0LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCAKKyAgICA3NiwgNzMsIDg0LCA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIAorICAgIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgODIsIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgCisgICAgNzYsIDczLCA4MCwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCAKKyAgICA2OSwgMjEwLCA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCAKKyAgICA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIAorICAgIDc1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgCisgICAgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgCisgICAgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIAorICAgIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgCisgICAgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCAKKyAgICA3MSwgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIAorICAgIDcxLCA3NiwgNjUsIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgCisgICAgNzEsIDc1LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKICAgICAxMjgsIDgwLCA2NSwgNzgsIDY5LCA4NSwgNzYsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDY4LCAxOTMsIAotICAgIDgwLCA2NSwgNzgsIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3NywgCi0gICAgODUsIDc4LCA3MSwgNzUsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCAKLSAgICA3NywgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIAotICAgIDc3LCA3MywgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDY5LCA3OCwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCAKLSAgICA2NSwgNjksIDcyLCAxMjgsIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIAotICAgIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc3LCA4OSwgODIsIDY5LCA3OCwgMTk3LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgCi0gICAgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCAKLSAgICA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIAotICAgIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCAKLSAgICA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIAotICAgIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDc4LCA4NCwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDgwLCA2NSwgNzMsIDEyOCwgCi0gICAgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MywgMTI4LCAKLSAgICA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgNjUsIAotICAgIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA2OCwgNjgsIDczLCA3OCwgMTk5LCA4MCwgNjUsIDY4LCAxOTMsIDgwLCA2NSwgCi0gICAgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCA2NywgNzUsIDY1LCA3MSwgNjksIAorICAgIDgwLCA2NSwgNzgsIDY3LCA2NSwgNzUsIDY5LCA4MywgMTI4LCA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCAKKyAgICA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgMjA2LCA4MCwgNjUsIDc3LCA4NSwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDcyLCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIDc3LCA4MywgNzIsIDY1LCA2OSwgCisgICAgMTI4LCA4MCwgNjUsIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgNzcsIDczLCA3OCwgNzEsIDc1LCAKKyAgICA2NSwgNzYsIDEyOCwgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCA3NywgNjksIDc4LCA2OSwgNzgsIAorICAgIDcxLCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY1LCA2OSwgNzIsIDEyOCwgCisgICAgODAsIDY1LCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgNjUsIDEyOCwgODAsIDY1LCAKKyAgICA3NiwgNzcsIDg5LCA4MiwgNjksIDc4LCAxOTcsIDgwLCA2NSwgNzYsIDc3LCAxMjgsIDgwLCA2NSwgNzYsIDIwNSwgODAsIAorICAgIDY1LCA3NiwgNzYsIDY1LCA4NywgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzYsIDY1LCA4MywgMTI4LCA4MCwgNjUsIDc2LCA2OSwgCisgICAgODQsIDg0LCA2OSwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODUsIDc4LCAxOTksIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCAKKyAgICA3MywgOTAsIDY5LCAxOTYsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAyMDQsIDgwLCA2NSwgNzUsIDgwLCA2NSwgMjAzLCA4MCwgNjUsIDczLCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNzksIDczLCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIAorICAgIDczLCA4MiwgNjksIDE5NiwgODAsIDY1LCA3MywgNzgsIDg0LCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgODAsIDY1LCA3MywgCisgICAgMTI4LCA4MCwgNjUsIDcyLCA3NiwgNjUsIDg2LCAyMDEsIDgwLCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3MSwgNjksIDgzLCAKKyAgICAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCAKKyAgICA2NSwgNjgsIDY4LCA3NiwgMTk3LCA4MCwgNjUsIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIAorICAgIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgCiAgICAgMTI4LCA4MCwgNjUsIDY1LCA4NCwgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgwLCAKICAgICA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCA2NSwgNzMsIDEyOCwgODAsIAogICAgIDY1LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIDgwLCA1MCwgMTI4LCA4MCwgCkBAIC0xNzcwLDQ2NCArMTc4Niw0NzEgQEAKICAgICA0OCwgNDgsIDUwLCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgODksIAogICAgIDgyLCA2NSwgNzgsIDczLCA4MywgNzcsIDE5MywgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgODgsIDczLCA2NSwgCiAgICAgMTI4LCA3OSwgODgsIDczLCAxOTMsIDc5LCA4OCwgNjksIDczLCA2NSwgMjAxLCA3OSwgODgsIDY5LCA3MywgMTkzLCA3OSwgCi0gICAgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA3OSwgNzgsIDE5OSwgNzksIDg2LCAKLSAgICA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDg5LCAxMjgsIDc5LCA4NiwgNjksIAotICAgIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDgwLCAxMjgsIDc5LCA4NiwgCi0gICAgNjksIDgyLCA3NiwgNjUsIDczLCA2OCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA3OSwgODYsIDY1LCAKLSAgICA3NiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4NSwgODQsIAotICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgMjE2LCA3OSwgCi0gICAgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAxOTcsIDc5LCAKLSAgICA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCA3MiwgNjksIAotICAgIDgyLCAyMTEsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIDIwNiwgNzksIDg0LCA3MiwgCi0gICAgNjUsIDc2LCAxMjgsIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgMTI4LCA3OSwgODIsIDg0LCAKLSAgICA3MiwgNzksIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIAotICAgIDY1LCA4NCwgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgCi0gICAgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIAotICAgIDIwNiwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgCi0gICAgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCAKLSAgICA3OSwgODIsIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCAKLSAgICA3OCwgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIAotICAgIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDc5LCA4MCwgNjksIDc4LCA0NSwgODAsIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgMjA3LCA3OSwgODAsIAotICAgIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCAKLSAgICA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDc4LCAxMjgsIDc5LCA3OSwgOTAsIAotICAgIDY5LCAxMjgsIDc5LCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgCi0gICAgODUsIDEyOCwgNzksIDc5LCA3MiwgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCAKLSAgICA3NiwgNzMsIDEyOCwgNzksIDc4LCA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCAKLSAgICA3OCwgNzUsIDY1LCA4MiwgMTI4LCA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIAotICAgIDY1LCAyMTcsIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgCi0gICAgNzMsIDc4LCAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCAKLSAgICA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIAotICAgIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgCi0gICAgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCAKLSAgICA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIAotICAgIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgCi0gICAgNzYsIDEyOCwgNzksIDczLCAyMDQsIDc5LCA3MiwgNzcsIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIAotICAgIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAKLSAgICAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIAotICAgIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIAotICAgIDc5LCA2OSwgNjksIDEyOCwgNzksIDY4LCA2OSwgNzgsIDEyOCwgNzksIDY4LCA2OCwgMTI4LCA3OSwgNjgsIDE5NiwgNzksIAotICAgIDY3LCA4NCwgNzksIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCA4NCwgCi0gICAgNjksIDIxMiwgNzksIDY3LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzksIDY3LCAyMTAsIDc5LCA2NywgNzYsIDc5LCAKLSAgICA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIAotICAgIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgCi0gICAgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCAKLSAgICA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIAotICAgIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgCi0gICAgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgCi0gICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCAKLSAgICA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIAotICAgIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIAotICAgIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgCi0gICAgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAKLSAgICA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIAotICAgIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgCi0gICAgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgCi0gICAgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCAKLSAgICA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgCi0gICAgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgCi0gICAgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCAKLSAgICA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgCi0gICAgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgCi0gICAgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCAKLSAgICA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgCi0gICAgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCAKLSAgICA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAKLSAgICAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIAotICAgIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgCi0gICAgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAKLSAgICAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgCi0gICAgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAKLSAgICAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCAKLSAgICA4NSwgMTI4LCA3OCwgODksIDg1LCA4NCwgMTI4LCA3OCwgODksIDg1LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIAotICAgIDEyOCwgNzgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCAxMjgsIDc4LCA4OSwgODUsIDc4LCAxMjgsIAotICAgIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIDEyOCwgNzgsIDg5LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA3OSwgCi0gICAgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA3OSwgNzksIDEyOCwgNzgsIDg5LCA3OSwgNzgsIDEyOCwgCi0gICAgNzgsIDg5LCA3OSwgNjUsIDEyOCwgNzgsIDg5LCA3OSwgMTI4LCA3OCwgODksIDc0LCA2NSwgMTI4LCA3OCwgODksIDczLCAKLSAgICA4OCwgMTI4LCA3OCwgODksIDczLCA4NCwgMTI4LCA3OCwgODksIDczLCAyMTIsIDc4LCA4OSwgNzMsIDIxMSwgNzgsIDg5LCAKLSAgICA3MywgMjEwLCA3OCwgODksIDczLCA4MCwgMTI4LCA3OCwgODksIDczLCA3OCwgNDUsIDY4LCA3OSwgMTI4LCA3OCwgODksIAotICAgIDczLCA3OCwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAKLSAgICAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAKLSAgICAyMTIsIDc4LCA4OSwgNjksIDc4LCAxMjgsIDc4LCA4OSwgNjksIDcyLCAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCAKLSAgICA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgNzMsIDEyOCwgNzgsIDg5LCA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIAotICAgIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgCi0gICAgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIAotICAgIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgODUsIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgCi0gICAgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCA3OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgCi0gICAgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgCi0gICAgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIDg1LCA3OCwgODUsIDIxOCwgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCAKLSAgICA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgODUsIDc4LCA2NSwgODYsIDczLCAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIAotICAgIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCA4MiwgMjA3LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgCi0gICAgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCAKLSAgICA2NiwgNjksIDgyLCAxMjgsIDc4LCA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCAKLSAgICA3OCwgODUsIDc2LCAxMjgsIDc4LCA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIAotICAgIDg1LCA2OSwgMTI4LCA3OCwgODUsIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgCi0gICAgNDksIDEyOCwgNzgsIDg1LCA0OSwgMTc3LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIAotICAgIDQ5LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgCi0gICAgODUsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA3OCwgODUsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MCwgCi0gICAgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKLSAgICA0OSwgNDgsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIAotICAgIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgNzgsIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTEsIAotICAgIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgODQsIDg4LCA3MywgCi0gICAgODYsIDEyOCwgNzgsIDg0LCA4NSwgODUsIDEyOCwgNzgsIDg0LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCA4NSwgNzQsIDEyOCwgCi0gICAgNzgsIDg0LCAyMTMsIDc4LCA4NCwgODMsIDY1LCA4NSwgMTI4LCA3OCwgODQsIDc5LCA4MSwgODAsIDY5LCA3OCwgMTI4LCAKLSAgICA3OCwgODQsIDc5LCA3MSwgMTI4LCA3OCwgODQsIDc5LCAxOTksIDc4LCA4NCwgNzMsIDY5LCAxOTcsIDc4LCA4NCwgNzIsIAotICAgIDY1LCA4NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzgsIDcxLCA2NiwgNjUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc3LCAKLSAgICAxMjgsIDc4LCA4NCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNjksIDY5LCAxMjgsIDc4LCA4NCwgNjUsIDgwLCAxMjgsIDc4LCAKLSAgICA4NCwgNjUsIDIwOCwgNzgsIDg0LCA2NSwgNjUsIDEyOCwgNzgsIDgzLCA4NSwgNzksIDIxMiwgNzgsIDgzLCA4NSwgNzgsIAotICAgIDEyOCwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzgsIDgzLCA3OSwgNzcsIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4NCwgCi0gICAgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDgwLCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCAKLSAgICA4NSwgODQsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDIxMiwgNzgsIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODMsIAotICAgIDcyLCA4NSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA2OSwgNjksIDEyOCwgCi0gICAgNzgsIDgzLCA3MiwgNjUsIDgxLCAxMjgsIDc4LCA4MywgNzIsIDY1LCAxMjgsIDc4LCA4MywgNjksIDg1LCA2NSwgNjksIDc4LCAKLSAgICAxMjgsIDc4LCA4MywgNjksIDc4LCAxMjgsIDc4LCA4MywgNjUsIDEyOCwgNzgsIDgyLCA4OSwgODgsIDEyOCwgNzgsIDgyLCAKLSAgICA4OSwgODQsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODksIDgyLCAxMjgsIDc4LCA4MiwgODksIAotICAgIDgwLCAxMjgsIDc4LCA4MiwgODksIDEyOCwgNzgsIDgyLCA4NSwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODQsIDEyOCwgNzgsIAotICAgIDgyLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDgyLCAxMjgsIDc4LCA4MiwgODUsIDgwLCAxMjgsIDc4LCA4MiwgCi0gICAgODUsIDY1LCAxMjgsIDc4LCA4MiwgODUsIDEyOCwgNzgsIDgyLCA3OSwgODgsIDEyOCwgNzgsIDgyLCA3OSwgODAsIDEyOCwgCi0gICAgNzgsIDgyLCA3OSwgMTI4LCA3OCwgODIsIDY5LCA4OCwgMTI4LCA3OCwgODIsIDY5LCA4NCwgMTI4LCA3OCwgODIsIDY5LCAKLSAgICAyMTEsIDc4LCA4MiwgNjksIDgwLCAxMjgsIDc4LCA4MiwgNjksIDEyOCwgNzgsIDgyLCA2NSwgODgsIDEyOCwgNzgsIDgyLCAKLSAgICA2NSwgODQsIDEyOCwgNzgsIDgyLCA2NSwgODAsIDEyOCwgNzgsIDgyLCA2NSwgMTI4LCA3OCwgODEsIDczLCA3MSwgMTI4LCAKLSAgICA3OCwgNzksIDg5LCAxMjgsIDc4LCA3OSwgODgsIDEyOCwgNzgsIDc5LCA4NywgNjcsIDEyOCwgNzgsIDc5LCA4NiwgNjksIAotICAgIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA3OSwgODQsIDg0LCA3OSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgODMsIDEyOCwgCi0gICAgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDc4LCAKLSAgICA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCA3NSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgMjAzLCA3OCwgNzksIAotICAgIDg0LCA2OSwgMTI4LCA3OCwgNzksIDg0LCAxOTcsIDc4LCA3OSwgODQsIDY3LCA3MiwgNjksIDE5NiwgNzgsIDc5LCA4NCwgCi0gICAgNjcsIDcyLCAxMjgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA3OSwgODQsIDEyOCwgNzgsIDc5LCAKLSAgICAyMTIsIDc4LCA3OSwgODMsIDY5LCAxMjgsIDc4LCA3OSwgODMsIDE5NywgNzgsIDc5LCA4MiwgODQsIDcyLCA4NywgNjksIAotICAgIDgzLCAyMTIsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDY1LCA4MywgCi0gICAgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3OCwgNzksIDgyLCA3NywgNjUsIDIwNCwgNzgsIDc5LCAKLSAgICA4MiwgNjgsIDczLCAxOTUsIDc4LCA3OSwgMjEwLCA3OCwgNzksIDgwLCAxMjgsIDc4LCA3OSwgNzksIDc4LCA4NSwgMTI4LCAKLSAgICA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OSwgNzgsIDcwLCA3OSwgODIsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDc4LCA3OSwgNzgsIAotICAgIDQ1LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc4LCA3OSwgNzgsIDQ1LCA3NCwgNzksIDczLCA3OCwgNjksIDgyLCAKLSAgICAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA2NSwgNzUsIDczLCA3OCwgMTk5LCA3OCwgNzksIDc4LCAxMjgsIAotICAgIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgCi0gICAgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAKLSAgICAxMjgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA4NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIAotICAgIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzgsIDc4LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgCi0gICAgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAKLSAgICA3MywgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCAKLSAgICA3OCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIAotICAgIDc4LCA3MSwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgCi0gICAgNzgsIDcxLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAxMjgsIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgCi0gICAgNzgsIDc2LCA2NSwgODUsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgCi0gICAgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTIsIAotICAgIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgCi0gICAgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDg1LCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCAKLSAgICA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIAotICAgIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIAotICAgIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgCi0gICAgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCAKLSAgICA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIAotICAgIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgCi0gICAgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgCi0gICAgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIAotICAgIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgCi0gICAgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCAKLSAgICA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIAotICAgIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgCi0gICAgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCAKLSAgICA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIAotICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIAotICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzgsIDU3LCAxMjgsIDc4LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3NywgMTI4LCA3OCwgCi0gICAgNzMsIDIwNSwgNzgsIDczLCA3NSwgNzksIDc2LCA4MywgNjYsIDg1LCA4MiwgMTk5LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCAKLSAgICA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIAotICAgIDczLCA3MiwgODMsIDcyLCA4NiwgNjUsIDgzLCA2NSwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA3NywgNzMsIDc4LCAKLSAgICAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDY5LCA4MywgNzIsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAotICAgIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc4LCA3MywgNzEsIDcxLCA2NSwgNzIsIDczLCA4NCwgNjUsIDEyOCwgNzgsIDczLCA2OSwgCi0gICAgODgsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA2NSwgCi0gICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIAotICAgIDY3LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgMjA2LCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCAxMjgsIAotICAgIDc4LCA3MywgNjYsIDEyOCwgNzgsIDczLCA2NSwgMTI4LCA3OCwgNzMsIDUwLCAxMjgsIDc4LCA3MiwgODUsIDY5LCAxMjgsIAotICAgIDc4LCA3MiwgNzQsIDY1LCAxMjgsIDc4LCA3MiwgMTI4LCA3OCwgNzEsIDg5LCA2OSwgMTI4LCA3OCwgNzEsIDg2LCA2OSwgCi0gICAgMTI4LCA3OCwgNzEsIDg1LCA4NSwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg0LCAKLSAgICAxMjgsIDc4LCA3MSwgODUsIDc5LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIAotICAgIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgCi0gICAgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgCi0gICAgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCAKLSAgICA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCA3OCwgNzEsIDIwNywgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCAKLSAgICA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAotICAgIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDc1LCA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgCi0gICAgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIAotICAgIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIDcyLCA2NSwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODAsIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCA3MSwgCi0gICAgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAxOTcsIAotICAgIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDIwNiwgNzgsIDcxLCA3MSwgODUsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3MywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIAotICAgIDcxLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgNzEsIDcxLCA2OSwgNzgsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIAotICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCAxMjgsIDc4LCA3MSwgNjksIDg4LCAxMjgsIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCAKLSAgICA4NCwgMTI4LCA3OCwgNzEsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDY5LCA2OSwgMTI4LCAKLSAgICA3OCwgNzEsIDY5LCA2NSwgNjgsIDY1LCA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCA4NSwgCi0gICAgMTI4LCA3OCwgNzEsIDY1LCA4NCwgMTI4LCA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgCi0gICAgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNjUsIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCAKLSAgICA2NSwgNzMsIDEyOCwgNzgsIDcxLCA2NSwgNzIsIDEyOCwgNzgsIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCAKLSAgICA3OCwgNzAsIDEyOCwgNzgsIDY5LCA4OCwgMjEyLCA3OCwgNjksIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIAotICAgIDgwLCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgCi0gICAgMTk3LCA3OCwgNjksIDg3LCAxMjgsIDc4LCA2OSwgMjE1LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCA3NiwgMTI4LCA3OCwgCi0gICAgNjksIDg1LCA4NCwgODIsIDY1LCAyMDQsIDc4LCA2OSwgODUsIDg0LCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgODcsIDc5LCAKLSAgICA4MiwgNzUsIDY5LCAxOTYsIDc4LCA2OSwgODQsIDEyOCwgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCAKLSAgICA3OCwgNjksIDgyLCAxOTYsIDc4LCA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIAotICAgIDY5LCAxMjgsIDc4LCA2OSwgODAsIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgNjksIDIwNywgNzgsIDY5LCA3OCwgNzksIAotICAgIDY5LCAxMjgsIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCA3OCwgMTI4LCA3OCwgNjksIDc2LCAxMjgsIAotICAgIDc4LCA2OSwgNzMsIDg0LCA3MiwgNjksIDIxMCwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY5LCA3MSwgCi0gICAgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgMTI4LCA3OCwgNjksIDY3LCA3NSwgMTI4LCAKLSAgICA3OCwgNjksIDY2LCA2OSwgNzgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIDEyOCwgNzgsIAotICAgIDY4LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIDc4LCA2OCwgCi0gICAgODUsIDgwLCAxMjgsIDc4LCA2OCwgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgMTI4LCA3OCwgCi0gICAgNjgsIDc5LCA4NCwgMTI4LCA3OCwgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgNjgsIDc5LCAKLSAgICA3OCwgMTI4LCA3OCwgNjgsIDc5LCA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCA2OCwgNzMsIAotICAgIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIDgwLCAxMjgsIAotICAgIDc4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgNjUsIDEyOCwgCi0gICAgNzgsIDY4LCA3MywgNjUsIDgxLCAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3OCwgNjgsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIAotICAgIDY5LCA4MCwgMTI4LCA3OCwgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgNjUsIDg4LCAxMjgsIAotICAgIDc4LCA2OCwgNjUsIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDY1LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY4LCAKLSAgICA2NSwgMTkzLCA3OCwgNjcsIDcyLCA2NSwgODUsIDEyOCwgNzgsIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIAotICAgIDEyOCwgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIAotICAgIDc4LCA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgCi0gICAgNzgsIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCAKLSAgICA3OSwgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCAKLSAgICA3OCwgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIAotICAgIDc4LCA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgCi0gICAgMTI4LCA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCAKLSAgICA4NSwgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA2OCwgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgCi0gICAgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCAKLSAgICA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjUsIDgzLCA2NSwgMjA0LCA3OCwgCi0gICAgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgCi0gICAgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIAotICAgIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIAotICAgIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgNjUsIDc1LCAxMjgsIAotICAgIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIDY1LCA3MSwgODIsIDIwMSwgNzgsIDY1LCA3MSwgCi0gICAgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgNzEsIDE5MywgNzgsIDY1LCA3MSwgMTI4LCA3OCwgCi0gICAgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgNjUsIDEyOCwgNzgsIDY1LCA2NiwgNjUsIDg0LCAKLSAgICA2NSwgNjksIDY1LCAyMDYsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIAotICAgIDc1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNjUsIDE5MywgCi0gICAgNzgsIDY1LCA1MiwgMTI4LCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgNDUsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAKLSAgICAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAxMjgsIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCAKLSAgICA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIAotICAgIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgCi0gICAgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCAKLSAgICA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCA0OSwgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCAKLSAgICA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCA3OCwgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIAotICAgIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCAKLSAgICA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIAotICAgIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgCi0gICAgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgCi0gICAgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCAKLSAgICA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCAKLSAgICA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIAotICAgIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIDg0LCAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgCi0gICAgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgMTI4LCA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIAotICAgIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIDEyOCwgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIAotICAgIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIDY5LCAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCA4NiwgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIAotICAgIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgCi0gICAgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIDg1LCA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCAKLSAgICA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAxOTMsIDc3LCA4NSwgODUsIDEyOCwgNzcsIAotICAgIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgCi0gICAgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCAKLSAgICA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODMsIDEyOCwgNzcsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNzcsIDg1LCA4MiwgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgMTI4LCA3NywgODUsIDgyLCA2OCwgCi0gICAgNjUsIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgODUsIDgxLCA2OCwgNjUsIDc3LCAKLSAgICAxMjgsIDc3LCA4NSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCA3OSwgODQsIDEyOCwgNzcsIDg1LCAKLSAgICA3OSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIDc5LCAxMjgsIDc3LCA4NSwgNzgsIAotICAgIDgzLCA4NSwgNjYsIDEyOCwgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgNzgsIDEyOCwgNzcsIDg1LCA3NiwgCi0gICAgODQsIDczLCA4MywgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCAyMTIsIDc3LCA4NSwgNzYsIDg0LCAKLSAgICA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgCi0gICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNjksIDEyOCwgNzcsIDg1LCAKLSAgICA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIAotICAgIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAyMDEsIDc3LCA4NSwgNzYsIDg0LCA2NSwgCi0gICAgNzgsIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCAKLSAgICA3NywgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIDcxLCAxMjgsIDc3LCA4NSwgMTk5LCA3NywgODUsIDY5LCA3OCwgMTI4LCAKLSAgICA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA4NSwgNjcsIDIwMCwgNzcsIDg1LCA2NywgNjUsIAotICAgIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCA4MywgMTI4LCA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgCi0gICAgMTI4LCA3NywgODUsIDQ1LCA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgCi0gICAgODIsIDIwNywgNzcsIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIDEyOCwgNzcsIDc5LCA4OCwgMTI4LCA3NywgCi0gICAgNzksIDg2LCA3MywgMTk3LCA3NywgNzksIDg2LCA2OSwgMjExLCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCAKLSAgICA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgCi0gICAgNzIsIDczLCA3OCwgNzEsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNzAsIDc2LCA3OSwgNzksIAotICAgIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA2OCwgNzMsIDY1LCAKLSAgICA3MSwgNzksIDc4LCA2NSwgMjA0LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzcsIDc5LCA4NiwgNjksIAotICAgIDc3LCA2OSwgNzgsIDIxMiwgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIDc5LCA4NiwgNjksIDEyOCwgNzcsIDc5LCA4NSwgCi0gICAgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCAKLSAgICA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIAotICAgIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgCi0gICAgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCA4NCwgNzksIDgyLCA4NywgNjUsIDg5LCAxMjgsIDc3LCA3OSwgODQsIDc5LCAKLSAgICA4MiwgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDc3LCA3OSwgODQsIDc5LCAyMTAsIDc3LCA3OSwgODQsIDcyLCA2OSwgODIsIAotICAgIDEyOCwgNzcsIDc5LCA4NCwgMTI4LCA3NywgNzksIDgzLCA4MSwgODUsIDY5LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgCi0gICAgODUsIDc3LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCAKLSAgICA3MSwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgCi0gICAgMjA2LCA3NywgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCA2OCwgMTI4LCA3NywgNzksIDc5LCAxOTYsIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIAotICAgIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgCi0gICAgNzksIDc4LCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCAKLSAgICA3OSwgNzgsIDc5LCA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIAotICAgIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKLSAgICAyMTEsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIAotICAgIDgzLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAKLSAgICAxMjgsIDc3LCA3OSwgNzgsIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIAotICAgIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3NywgNzksIDc4LCA2OSwgODksIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgCi0gICAgNzksIDc4LCA2OSwgMjE3LCA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAxMjgsIDc3LCA3OSwgCi0gICAgNzIsIDY1LCA3NywgNzcsIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKLSAgICA2OSwgODIsIDQ1LCA1NywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NiwgMTI4LCA3NywgNzksIAotICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCAKLSAgICA1NCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIAotICAgIDczLCA2OSwgODIsIDQ1LCA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MSwgMTI4LCA3NywgCi0gICAgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIAotICAgIDQ1LCA0OSwgNTQsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDc3LCA3OSwgCi0gICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIAotICAgIDQ1LCA0OSwgNTEsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDc3LCA3OSwgCi0gICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIAotICAgIDQ1LCA0OSwgNDgsIDEyOCwgNzcsIDc5LCA2OCwgMjAxLCA3NywgNzksIDY4LCA2OSwgODMsIDg0LCA4OSwgMTI4LCA3NywgCi0gICAgNzksIDY4LCA2OSwgNzcsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIAotICAgIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIAotICAgIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIAotICAgIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIAotICAgIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIAotICAgIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgCi0gICAgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCAKLSAgICA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIAotICAgIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA2NSwgCi0gICAgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgODMsIAotICAgIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgCi0gICAgODMsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDIxMSwgNzcsIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKLSAgICA3NywgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAyMDQsIDc3LCA3MywgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIAotICAgIDczLCA4NCwgNjUsIDgyLCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgCi0gICAgNzcsIDczLCA3NSwgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgMTI4LCAKLSAgICA3NywgNzMsIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc3LCAKLSAgICA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgCi0gICAgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNjUsIAotICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAotICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIDg1LCAyMDUsIDc3LCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDc3LCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIDczLCA2OCwgNzYsIDczLCA3OCwgMTk3LCAKLSAgICA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgCi0gICAgMTI4LCA3NywgNzMsIDY4LCA0NSwgNzYsIDY5LCA4NiwgNjksIDIwNCwgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIDgyLCAKLSAgICA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIAotICAgIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgMTI4LCA3NywgNzIsIDY1LCAxMjgsIAotICAgIDc3LCA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgCi0gICAgODgsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDc3LCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCA3NywgNzEsIDg1LCAxMjgsIDc3LCAKLSAgICA3MSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgNzksIAotICAgIDEyOCwgNzcsIDcxLCAyMDcsIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDczLCA2OSwgMTI4LCA3NywgNzEsIAotICAgIDY5LCA4OCwgMTI4LCA3NywgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDg1LCAxMjgsIAotICAgIDc3LCA3MSwgNjYsIDc5LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgMTI4LCA3NywgNzEsIDY2LCA3OSwgCi0gICAgMTI4LCA3NywgNzEsIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAKLSAgICA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjUsIAotICAgIDgzLCA2NSwgODEsIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgNzEsIDY1LCA4OCwgMTI4LCA3NywgCi0gICAgNzEsIDY1LCA4NCwgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAxMjgsIDc3LCA3MSwgMTI4LCA3NywgCi0gICAgNzAsIDc5LCA3OCwgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgNzcsIDcwLCA3MywgODksIDY1LCAKLSAgICA4MSwgMTI4LCA3NywgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MCwgNjksIAotICAgIDg1LCA4MSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIDY1LCAxMjgsIDc3LCA2OSwgCi0gICAgOTAsIDkwLCA3OSwgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIDY5LCA4NSwgODEsIDEyOCwgCi0gICAgNzcsIDY5LCA4NSwgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCA3OCwgMTI4LCAKLSAgICA3NywgNjksIDg0LCA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNzcsIDY5LCA4NCwgODIsIAotICAgIDczLCA2NSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgNjksIDg0LCA3OSwgNjYsIDY5LCA3NiwgCi0gICAgODUsIDgzLCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCA2OSwgNzEsIDEyOCwgNzcsIDY5LCAKLSAgICA4NCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIAotICAgIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDE5NywgNzcsIDY5LCA4MywgCi0gICAgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAKLSAgICA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgNjUsIDc4LCA4MywgCi0gICAgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCAKLSAgICA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA3OSwgODIsIDY1LCAyMDAsIAotICAgIDc3LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgCi0gICAgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCAKLSAgICA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIAotICAgIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIAotICAgIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgCi0gICAgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA3NiwgNzMsIAotICAgIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc3LCA2OSwgCi0gICAgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgNjksIDY5LCA3NywgMTI4LCA3NywgNjksIDY5LCAKLSAgICAyMDIsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgODUsIDc3LCAxMjgsIDc3LCA2OSwgNjgsIAotICAgIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA3NywgNjksIDY4LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCA2NSwgMjEyLCA3NywgCi0gICAgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTI4LCA3NywgNjksIDY1LCAKLSAgICA4MywgODUsIDgyLCAxOTcsIDc3LCA2OCwgODUsIDIwNiwgNzcsIDE5NiwgNzcsIDY3LCA3MiwgMjEzLCA3NywgNjcsIDcyLCAKLSAgICA2NSwgMjA2LCA3NywgMTk1LCA3NywgNjYsIDg1LCA4NSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgODEsIDEyOCwgNzcsIDY2LCAKLSAgICA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NywgNjYsIAotICAgIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDY2LCA3OSwgMTI4LCA3NywgNjYsIDczLCA4NCwgCi0gICAgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNjYsIDczLCAKLSAgICAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjYsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc3LCA2NiwgNjksIAotICAgIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjksIDc4LCAxMjgsIDc3LCA2NiwgCi0gICAgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgMTI4LCA3NywgNjYsIDY5LCAxMjgsIDc3LCAKLSAgICA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDEyOCwgNzcsIDY2LCA2NSwgCi0gICAgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCA3NywgNjYsIDUxLCAxMjgsIDc3LCA2NiwgNTAsIDEyOCwgNzcsIAotICAgIDY1LCA4OSwgNjksIDIwMywgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA4OSwgMTI4LCA3NywgCi0gICAgNjUsIDg4LCA3MywgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA2NSwgMTI4LCA3NywgNjUsIDg4LCAKLSAgICAxMjgsIDc3LCA2NSwgODUsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgNzcsIDY1LCA4NCwgODIsIAotICAgIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCA2NSwgODQsIDEyOCwgCi0gICAgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIDgzLCA4MywgNjUsIDcxLCAKLSAgICA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgNzcsIDY1LCA4MywgNzIsIAotICAgIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCA2NywgODUsIDc2LCA3MywgCi0gICAgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODcsIDY1LCA4MiwgMjAxLCA3NywgNjUsIDgyLCAKLSAgICA4NSwgNzUsIDg1LCAxMjgsIDc3LCA2NSwgODIsIDg0LCA4OSwgODIsIDczLCAxOTMsIDc3LCA2NSwgODIsIDgyLCA4OSwgNzMsIAotICAgIDc4LCAxOTksIDc3LCA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDc3LCA2NSwgODIsIDc1LCAyMTEsIDc3LCA2NSwgCi0gICAgODIsIDc1LCA2OSwgODIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUxLCAKLSAgICAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTAsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA0OSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNzIsIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDQ1LCA4MywgCi0gICAgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCA2NSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCA2NSwgODIsIDEyOCwgNzcsIDY1LCA4MSwgNjUsIDcwLCAxMjgsIDc3LCA2NSwgCi0gICAgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIDE5NywgNzcsIDY1LCA4MCwgNzMsIDgxLCAxMjgsIDc3LCA2NSwgMjA4LCA3NywgCi0gICAgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIDg0LCA2OSwgNzYsIDgwLCA3MywgNjksIDY3LCAxOTcsIDc3LCA2NSwgNzgsIDgzLCAKLSAgICA4OSwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgODcsIDc2LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCAKKyAgICA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODksIAorICAgIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgCisgICAgODAsIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAKKyAgICAxMjgsIDc5LCA4NiwgNjUsIDc2LCAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIAorICAgIDE5NiwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg1LCA4NCwgNjksIDIxMCwgNzksIDg1LCA4NCwgCisgICAgNjYsIDc5LCAyMTYsIDc5LCA4NSwgNzgsIDc1LCA3MywgMTkzLCA3OSwgODUsIDc4LCA2NywgNjksIDEyOCwgNzksIDg1LCAKKyAgICA3OCwgNjcsIDE5NywgNzksIDg0LCA4NSwgMTI4LCA3OSwgODQsIDg0LCA2NSwgODYsIDE5MywgNzksIDg0LCA4NCwgMTI4LCAKKyAgICA3OSwgODQsIDcyLCA2OSwgODIsIDIxMSwgNzksIDg0LCA3MiwgNjksIDIxMCwgNzksIDg0LCA3MiwgNjUsIDc2LCA2NSwgCisgICAgMjA2LCA3OSwgODQsIDcyLCA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgMTkzLCA3OSwgODMsIDY3LCAKKyAgICAxMjgsIDc5LCA4MywgNjUsIDcxLCAxOTcsIDc5LCA4MiwgODQsIDcyLCA3OSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIAorICAgIDgyLCA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgCisgICAgNjksIDc4LCA4NCwgODMsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCAKKyAgICA3NywgNjksIDc4LCAyMTIsIDc5LCA4MiwgNzUsIDcyLCA3OSwgMjA2LCA3OSwgODIsIDczLCA4OSwgMTkzLCA3OSwgODIsIAorICAgIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCAxMjgsIDc5LCA4MiwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNjgsIDY5LCAyMTAsIDc5LCA4MiwgNjcsIDcyLCAKKyAgICA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCA4MCwgODQsIDczLCA3OSwgMjA2LCA3OSwgODAsIAorICAgIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgCisgICAgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDc4LCAxOTksIDc5LCAKKyAgICA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCA2NywgNzIsIDg1LCA4MywgMTI4LCA3OSwgODAsIAorICAgIDY5LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzksIDgwLCA2OSwgCisgICAgODIsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDQ1LCAKKyAgICA4MCwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIAorICAgIDc4LCA0NSwgNzksIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCAyMDcsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzIsIDY5LCA2NSwgCisgICAgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3MywgODQsIDQ1LCA3OSwgODUsIAorICAgIDg0LCA4MCwgODUsIDIxMiwgNzksIDgwLCA2OSwgNzgsIDEyOCwgNzksIDc5LCA5MCwgNjksIDEyOCwgNzksIDc5LCA4OSwgCisgICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIDc3LCA4NSwgMTI4LCA3OSwgNzksIDcyLCAKKyAgICAxMjgsIDc5LCA3OSwgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNzgsIAorICAgIDg1LCAxMjgsIDc5LCA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIDc4LCA3NSwgNjUsIDgyLCAxMjgsIAorICAgIDc5LCA3OCwgNjksIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgNjUsIDIxNywgNzksIDc4LCA2OSwgCisgICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzksIDc4LCAKKyAgICA2OSwgNDUsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCA0NSwgNjUsIDc4LCA2OCwgNDUsIDgzLCA3MywgODgsIDg0LCAKKyAgICA3MywgNjksIDg0LCA3MiwgMTI4LCA3OSwgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgCisgICAgMTI4LCA3OSwgNzgsIDQ1LCA3OSwgNzAsIDE5OCwgNzksIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNzksIDc3LCAKKyAgICA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgMjA2LCA3OSwgNzcsIDY5LCA3MSwgNjUsIAorICAgIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCA2NSwgNzYsIDc5LCA3OCwgMTI4LCA3OSwgNzYsIDczLCA4NiwgCisgICAgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIDc5LCA3NiwgNjgsIDEyOCwgNzksIDc1LCA4NCwgMjA3LCA3OSwgCisgICAgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgODIsIDE5MywgNzksIDc0LCA3MywgNjYsIDg3LCA2NSwgMjE3LCAKKyAgICA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCA3OCwgMTI4LCA3OSwgNzMsIDc2LCAxMjgsIDc5LCA3MywgMjA0LCAKKyAgICA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIAorICAgIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgMjA1LCA3OSwgNzAsIDcwLCA3MywgCisgICAgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgMTk3LCAKKyAgICA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjksIDY5LCAxMjgsIDc5LCAKKyAgICA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgNjgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCA2NywgODQsIDc5LCA4MCwgODUsIAorICAgIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgODQsIDY5LCAyMTIsIDc5LCA2NywgCisgICAgODQsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgNjcsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA3OSwgNjcsIAorICAgIDIxMCwgNzksIDY3LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA3OSwgNjcsIDY3LCA3NiwgODUsIDgzLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDc5LCA2NiwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDc5LCA3NiwgCisgICAgMjExLCA3OSwgNjYsIDc5LCAyMDQsIDc5LCA2NiwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA2NiwgNzYsIDczLCAKKyAgICA4MSwgODUsIDE5NywgNzksIDY2LCA3NCwgNjksIDY3LCAyMTIsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzksIAorICAgIDY2LCA2OSwgNzYsIDc5LCA4MywgMTI4LCA3OSwgNjYsIDEyOCwgNzksIDY1LCA4OSwgMTI4LCA3OSwgNjUsIDc1LCAxMjgsIAorICAgIDc5LCA2NSwgNjYsIDc5LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDE5MywgNzksIDQ4LCA1MywgNDksIDEyOCwgCisgICAgNzksIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgMTI4LCAKKyAgICA3OSwgNDgsIDUyLCA1NywgMTI4LCA3OSwgNDgsIDUyLCA1NiwgMTI4LCA3OSwgNDgsIDUyLCA1NSwgMTI4LCA3OSwgNDgsIAorICAgIDUyLCA1NCwgMTI4LCA3OSwgNDgsIDUyLCA1MywgMTI4LCA3OSwgNDgsIDUyLCA1MiwgMTI4LCA3OSwgNDgsIDUyLCA1MSwgCisgICAgMTI4LCA3OSwgNDgsIDUyLCA1MCwgMTI4LCA3OSwgNDgsIDUyLCA0OSwgMTI4LCA3OSwgNDgsIDUyLCA0OCwgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA1NywgMTI4LCA3OSwgNDgsIDUxLCA1NiwgMTI4LCA3OSwgNDgsIDUxLCA1NSwgMTI4LCA3OSwgNDgsIDUxLCAKKyAgICA1NCwgNjgsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIAorICAgIDUxLCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDEyOCwgNzksIDQ4LCA1MSwgNTMsIDEyOCwgNzksIDQ4LCA1MSwgCisgICAgNTIsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDUxLCAxMjgsIDc5LCA0OCwgNTEsIDUwLCAKKyAgICAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgMTI4LCAKKyAgICA3OSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDEyOCwgNzksIDQ4LCA1MCwgNTYsIDEyOCwgNzksIAorICAgIDQ4LCA1MCwgNTUsIDEyOCwgNzksIDQ4LCA1MCwgNTQsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgCisgICAgNTAsIDUzLCAxMjgsIDc5LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MiwgMTI4LCA3OSwgNDgsIDUwLCAKKyAgICA1MSwgMTI4LCA3OSwgNDgsIDUwLCA1MCwgMTI4LCA3OSwgNDgsIDUwLCA0OSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgNjUsIAorICAgIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAxMjgsIAorICAgIDc5LCA0OCwgNDksIDU2LCAxMjgsIDc5LCA0OCwgNDksIDU1LCAxMjgsIDc5LCA0OCwgNDksIDU0LCAxMjgsIDc5LCA0OCwgCisgICAgNDksIDUzLCAxMjgsIDc5LCA0OCwgNDksIDUyLCAxMjgsIDc5LCA0OCwgNDksIDUxLCAxMjgsIDc5LCA0OCwgNDksIDUwLCAKKyAgICAxMjgsIDc5LCA0OCwgNDksIDQ5LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NywgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjYsIAorICAgIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAxMjgsIDc5LCA0OCwgNDgsIDU3LCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDU2LCAxMjgsIDc5LCA0OCwgNDgsIDU1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA3MCwgMTI4LCA3OSwgCisgICAgNDgsIDQ4LCA1NCwgNjksIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NywgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgMTI4LCA3OSwgNDgsIDQ4LCA1MiwgMTI4LCA3OSwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgNDgsIDQ4LCA1MCwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzksIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNzksIDQ1LCA4OSwgNjksIDEyOCwgNzksIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDc5LCA0NSwgNjksIAorICAgIDEyOCwgNzgsIDkwLCA4OSwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODQsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDc4LCA5MCwgODksIDgyLCAxMjgsIDc4LCA5MCwgODksIDgwLCAxMjgsIDc4LCA5MCwgODksIDEyOCwgNzgsIDkwLCA4NSwgCisgICAgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCAxMjgsIDc4LCA5MCwgODUsIDgxLCAKKyAgICAxMjgsIDc4LCA5MCwgODUsIDgwLCAxMjgsIDc4LCA5MCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgMTI4LCAKKyAgICA3OCwgOTAsIDg1LCAyMDYsIDc4LCA5MCwgODUsIDEyOCwgNzgsIDkwLCA3OSwgODgsIDEyOCwgNzgsIDkwLCA3OSwgODAsIAorICAgIDEyOCwgNzgsIDkwLCA3MywgODgsIDEyOCwgNzgsIDkwLCA3MywgODQsIDEyOCwgNzgsIDkwLCA3MywgODAsIDEyOCwgNzgsIAorICAgIDkwLCA3MywgNjksIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgMTI4LCA3OCwgCisgICAgOTAsIDczLCAxMjgsIDc4LCA5MCwgNjksIDg4LCAxMjgsIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgOTAsIDY5LCAKKyAgICAxMjgsIDc4LCA5MCwgNjUsIDg4LCAxMjgsIDc4LCA5MCwgNjUsIDg0LCAxMjgsIDc4LCA5MCwgNjUsIDgxLCAxMjgsIDc4LCAKKyAgICA5MCwgNjUsIDgwLCAxMjgsIDc4LCA5MCwgNjUsIDEyOCwgNzgsIDkwLCAxOTMsIDc4LCA4OSwgODcsIDY1LCAxMjgsIDc4LCAKKyAgICA4OSwgODUsIDg4LCAxMjgsIDc4LCA4OSwgODUsIDg1LCAxMjgsIDc4LCA4OSwgODUsIDg0LCAxMjgsIDc4LCA4OSwgODUsIAorICAgIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgCisgICAgNzksIDEyOCwgNzgsIDg5LCA4NSwgNzgsIDEyOCwgNzgsIDg5LCA4NSwgNjksIDEyOCwgNzgsIDg5LCA4NSwgMTI4LCA3OCwgCisgICAgODksIDc5LCA4OCwgMTI4LCA3OCwgODksIDc5LCA4NCwgMTI4LCA3OCwgODksIDc5LCA4MCwgMTI4LCA3OCwgODksIDc5LCAKKyAgICA3OSwgMTI4LCA3OCwgODksIDc5LCA3OCwgMTI4LCA3OCwgODksIDc5LCA2NSwgMTI4LCA3OCwgODksIDc5LCAxMjgsIDc4LCAKKyAgICA4OSwgNzQsIDY1LCAxMjgsIDc4LCA4OSwgNzMsIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDg0LCAxMjgsIDc4LCA4OSwgNzMsIAorICAgIDIxMiwgNzgsIDg5LCA3MywgMjExLCA3OCwgODksIDczLCAyMTAsIDc4LCA4OSwgNzMsIDgwLCAxMjgsIDc4LCA4OSwgNzMsIAorICAgIDc4LCA0NSwgNjgsIDc5LCAxMjgsIDc4LCA4OSwgNzMsIDc4LCAxMjgsIDc4LCA4OSwgNzMsIDczLCAxMjgsIDc4LCA4OSwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3OCwgODksIDczLCA2OSwgODQsIDEyOCwgNzgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDc4LCAKKyAgICA4OSwgNzMsIDY5LCAxMjgsIDc4LCA4OSwgNzMsIDEyOCwgNzgsIDg5LCAyMDEsIDc4LCA4OSwgNzIsIDY1LCAxMjgsIDc4LCAKKyAgICA4OSwgNjksIDg0LCAxMjgsIDc4LCA4OSwgNjksIDIxMiwgNzgsIDg5LCA2OSwgNzgsIDEyOCwgNzgsIDg5LCA2OSwgNzIsIAorICAgIDEyOCwgNzgsIDg5LCA2OSwgMjAwLCA3OCwgODksIDY5LCA2OSwgMTI4LCA3OCwgODksIDY5LCAxMjgsIDc4LCA4OSwgMTk2LCAKKyAgICA3OCwgODksIDY3LCA2NSwgMTI4LCA3OCwgODksIDY1LCA4NSwgMTI4LCA3OCwgODksIDY1LCA3MywgMTI4LCA3OCwgODksIAorICAgIDY1LCA3MiwgMTI4LCA3OCwgODksIDY1LCA2OSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgODksIDY1LCA2NSwgMTI4LCA3OCwgCisgICAgODcsIDc5LCA3OSwgMTI4LCA3OCwgODcsIDc5LCAxMjgsIDc4LCA4NywgNzMsIDczLCAxMjgsIDc4LCA4NywgNzMsIDEyOCwgCisgICAgNzgsIDg3LCA2OSwgMTI4LCA3OCwgODcsIDY1LCA2NSwgMTI4LCA3OCwgODcsIDY1LCAxMjgsIDc4LCA4NywgMTI4LCA3OCwgCisgICAgODYsIDEyOCwgNzgsIDg1LCA4OCwgMTI4LCA3OCwgODUsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA4NSwgCisgICAgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCA4NSwgODQsIDEyOCwgNzgsIDg1LCAyMTIsIDc4LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCA4MCwgMTI4LCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODUsIDc5LCAKKyAgICA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCA4NSwgNzgsIDg1LCA5MCwgMTI4LCA3OCwgODUsIDc4LCA4NSwgMjE4LCAKKyAgICA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIDc4LCA2NSwgODYsIDg1LCAyMTIsIDc4LCA4NSwgNzgsIDY1LCA4NiwgNzMsIAorICAgIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDIwNiwgNzgsIDg1LCA3NywgNjksIDgyLCAyMDcsIDc4LCA4NSwgNzcsIAorICAgIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgCisgICAgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCAKKyAgICA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIDc4LCA4NSwgNzYsIDEyOCwgNzgsIDg1LCA3NSwgODQsIDY1LCAxMjgsIDc4LCAKKyAgICA4NSwgNjksIDc4LCA3MSwgMTI4LCA3OCwgODUsIDY5LCAxMjgsIDc4LCA4NSwgNjYsIDczLCA2NSwgMjA2LCA3OCwgODUsIAorICAgIDY1LCA2OSwgMTI4LCA3OCwgODUsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ5LCAxNzcsIDc4LCA4NSwgNDgsIDUwLCA1MCwgCisgICAgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIAorICAgIDg1LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTQsIDEyOCwgCisgICAgNzgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTEsIAorICAgIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCAKKyAgICA4NSwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU1LCAxMjgsIAorICAgIDc4LCA4NSwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIAorICAgIDQ5LCAxMjgsIDc4LCA4NCwgODgsIDczLCA4NiwgMTI4LCA3OCwgODQsIDg1LCA4NSwgMTI4LCA3OCwgODQsIDg1LCA3NywgCisgICAgMTI4LCA3OCwgODQsIDg1LCA3NCwgMTI4LCA3OCwgODQsIDIxMywgNzgsIDg0LCA4MywgNjUsIDg1LCAxMjgsIDc4LCA4NCwgCisgICAgNzksIDgxLCA4MCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNzksIDcxLCAxMjgsIDc4LCA4NCwgNzksIDE5OSwgNzgsIDg0LCAKKyAgICA3MywgNjksIDE5NywgNzgsIDg0LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3OCwgNzEsIDY2LCA2NSwgCisgICAgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA2OSwgNjksIDEyOCwgCisgICAgNzgsIDg0LCA2NSwgODAsIDEyOCwgNzgsIDg0LCA2NSwgMjA4LCA3OCwgODQsIDY1LCA2NSwgMTI4LCA3OCwgODMsIDg1LCAKKyAgICA3OSwgMjEyLCA3OCwgODMsIDg1LCA3OCwgMTI4LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3OCwgODMsIDc5LCA3NywgMTI4LCAKKyAgICA3OCwgODMsIDczLCA2OSwgNjksIDg0LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODAsIDEyOCwgNzgsIDgzLCA3MywgNjksIAorICAgIDY5LCAxMjgsIDc4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgMjEyLCA3OCwgODMsIDcyLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc4LCA4MywgNzIsIDg1LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA3MywgNjksIDY5LCAxMjgsIDc4LCAKKyAgICA4MywgNzIsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgODEsIDEyOCwgNzgsIDgzLCA3MiwgNjUsIDEyOCwgNzgsIAorICAgIDgzLCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2NSwgMTI4LCA3OCwgCisgICAgODIsIDg5LCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4NCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDgyLCAKKyAgICA4OSwgODIsIDEyOCwgNzgsIDgyLCA4OSwgODAsIDEyOCwgNzgsIDgyLCA4OSwgMTI4LCA3OCwgODIsIDg1LCA4OCwgMTI4LCAKKyAgICA3OCwgODIsIDg1LCA4NCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODIsIDEyOCwgNzgsIAorICAgIDgyLCA4NSwgODAsIDEyOCwgNzgsIDgyLCA4NSwgNjUsIDEyOCwgNzgsIDgyLCA4NSwgMTI4LCA3OCwgODIsIDc5LCA4OCwgCisgICAgMTI4LCA3OCwgODIsIDc5LCA4MCwgMTI4LCA3OCwgODIsIDc5LCAxMjgsIDc4LCA4MiwgNjksIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgNjksIDg0LCAxMjgsIDc4LCA4MiwgNjksIDIxMSwgNzgsIDgyLCA2OSwgODAsIDEyOCwgNzgsIDgyLCA2OSwgMTI4LCA3OCwgCisgICAgODIsIDY1LCA4OCwgMTI4LCA3OCwgODIsIDY1LCA4NCwgMTI4LCA3OCwgODIsIDY1LCA4MCwgMTI4LCA3OCwgODIsIDY1LCAKKyAgICAxMjgsIDc4LCA4MSwgNzMsIDcxLCAxMjgsIDc4LCA3OSwgODksIDEyOCwgNzgsIDc5LCA4OCwgMTI4LCA3OCwgNzksIDg3LCAKKyAgICA2NywgMTI4LCA3OCwgNzksIDg2LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA4NCwgODQsIDc5LCAxMjgsIAorICAgIDc4LCA3OSwgODQsIDY5LCA4MywgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNzgsIDc5LCA4NCwgCisgICAgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDc1LCAxMjgsIDc4LCA3OSwgODQsIDY5LCAKKyAgICA2NiwgNzksIDc5LCAyMDMsIDc4LCA3OSwgODQsIDY5LCAxMjgsIDc4LCA3OSwgODQsIDE5NywgNzgsIDc5LCA4NCwgNjcsIAorICAgIDcyLCA2OSwgMTk2LCA3OCwgNzksIDg0LCA2NywgNzIsIDEyOCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgCisgICAgNzgsIDc5LCA4NCwgMTI4LCA3OCwgNzksIDIxMiwgNzgsIDc5LCA4MywgNjksIDEyOCwgNzgsIDc5LCA4MywgMTk3LCA3OCwgCisgICAgNzksIDgyLCA4NCwgNzIsIDg3LCA2OSwgODMsIDIxMiwgNzgsIDc5LCA4MiwgODQsIDcyLCA2OSwgODIsIDIwNiwgNzgsIDc5LCAKKyAgICA4MiwgODQsIDcyLCA2OSwgNjUsIDgzLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc4LCA3OSwgCisgICAgODIsIDc3LCA2NSwgMjA0LCA3OCwgNzksIDgyLCA2OCwgNzMsIDE5NSwgNzgsIDc5LCAyMTAsIDc4LCA3OSwgODAsIDEyOCwgCisgICAgNzgsIDc5LCA3OSwgNzgsIDg1LCAxMjgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc5LCA3OCwgNzAsIDc5LCA4MiwgNzUsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgNzgsIDc5LCA3OCwgNDUsIAorICAgIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDY1LCA3NSwgNzMsIDc4LCAKKyAgICAxOTksIDc4LCA3OSwgNzgsIDEyOCwgNzgsIDc5LCA3NywgNzMsIDgzLCA3NywgMTkzLCA3OCwgNzksIDc3LCA3MywgNzgsIAorICAgIDY1LCAyMDQsIDc4LCA3OSwgNzUsIDcyLCA4NSwgNzUsIDEyOCwgNzgsIDc5LCA2OCwgNjksIDEyOCwgNzgsIDc5LCA2NSwgCisgICAgMTI4LCA3OCwgNzksIDQ1LCA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDg1LCAKKyAgICAxMjgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCAKKyAgICA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIAorICAgIDc4LCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIDY5LCAxMjgsIDc4LCA3OCwgCisgICAgNzgsIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNzMsIDEyOCwgNzgsIDc4LCAKKyAgICA3OCwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgNzgsIDc4LCA3MiwgNjUsIAorICAgIDEyOCwgNzgsIDc4LCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDczLCA3MywgCisgICAgMTI4LCA3OCwgNzgsIDcxLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDEyOCwgCisgICAgNzgsIDc4LCA3MSwgMTI4LCA3OCwgNzgsIDY2LCA4MywgODAsIDEyOCwgNzgsIDc3LCAxMjgsIDc4LCA3NiwgNjUsIDg1LCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUyLCAxMjgsIDc4LCAKKyAgICA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU2LCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIAorICAgIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCAKKyAgICA3NiwgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIDIwNywgNzgsIDc1LCA3MywgNzgsIDY4LCA3MywgMTI4LCAKKyAgICA3OCwgNzUsIDY1LCA4NSwgMTI4LCA3OCwgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg5LCA4OCwgCisgICAgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDEyOCwgCisgICAgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIDc4LCA3NCwgODUsIAorICAgIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgNzQsIDg1LCA2OSwgCisgICAgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCA3OSwgODgsIDEyOCwgCisgICAgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIDEyOCwgNzgsIDc0LCAKKyAgICA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIDczLCA4MCwgMTI4LCAKKyAgICA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCA3MywgMTI4LCA3OCwgCisgICAgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzQsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2OSwgNjksIAorICAgIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgNjksIDEyOCwgNzgsIAorICAgIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCA3NiwgNzMsIDEyOCwgCisgICAgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3MywgODgsIDEyOCwgNzgsIDczLCAKKyAgICA4NCwgODIsIDY5LCAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgNzEsIDg1LCAxMjgsIAorICAgIDc4LCA3MywgODAsIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgODksIDEyOCwgCisgICAgNzgsIDczLCA3OCwgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3OCwgNzMsIDc4LCAKKyAgICA2OSwgODQsIDY5LCA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzgsIAorICAgIDczLCA3OCwgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIDY4LCA2NSwgMTc4LCA3OCwgCisgICAgNzMsIDc4LCA1NywgMTI4LCA3OCwgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgCisgICAgNzUsIDc5LCA3NiwgODMsIDY2LCA4NSwgODIsIDE5OSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCAKKyAgICA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCA3MywgNzIsIDgzLCA3MiwgODYsIAorICAgIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgMTI4LCA3OCwgNzMsIDcxLCA3MywgCisgICAgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCAKKyAgICA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MywgNjksIAorICAgIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDcyLCAKKyAgICA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIAorICAgIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgCisgICAgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc4LCA3MywgNjksIDg1LCAKKyAgICA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzMsIDY5LCA4NSwgCisgICAgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzgsIDczLCAKKyAgICA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCA3OCwgNzMsIDY2LCAxMjgsIDc4LCAKKyAgICA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCA3OCwgNzIsIDc0LCA2NSwgMTI4LCAKKyAgICA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIDEyOCwgNzgsIDcxLCA4NSwgODUsIAorICAgIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgCisgICAgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCAKKyAgICA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIAorICAgIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgCisgICAgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCAKKyAgICA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgCisgICAgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCAKKyAgICA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIAorICAgIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgCisgICAgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCAKKyAgICA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIAorICAgIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgCisgICAgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAKKyAgICA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAKKyAgICAyMDYsIDc4LCA3MSwgNzEsIDg1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCAxMjgsIDc4LCAKKyAgICA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCA2NSwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgCisgICAgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDcxLCAKKyAgICA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA2OSwgNjUsIAorICAgIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgCisgICAgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgNjUsIDczLCAxMjgsIDc4LCAKKyAgICA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgNzgsIDcwLCAxMjgsIDc4LCAKKyAgICA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCA4MCwgNjksIDgyLCAxMjgsIAorICAgIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDE5NywgNzgsIDY5LCA4NywgCisgICAgMTI4LCA3OCwgNjksIDIxNSwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgNzYsIDEyOCwgNzgsIDY5LCA4NSwgODQsIDgyLCAKKyAgICA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDg3LCA3OSwgODIsIDc1LCA2OSwgCisgICAgMTk2LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgNzgsIDY5LCA4MiwgCisgICAgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCA2OSwgMTI4LCAKKyAgICA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCAKKyAgICA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCA3OCwgNjksIAorICAgIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIDY1LCA4NCwgCisgICAgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NywgNzUsIDEyOCwgNzgsIDY5LCAKKyAgICA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCA2OCwgODUsIAorICAgIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIDg1LCA4MCwgCisgICAgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIDY4LCA3OSwgCisgICAgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgCisgICAgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCA4OCwgMTI4LCAKKyAgICA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCA3OCwgNjgsIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIDc4LCA2OCwgCisgICAgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDY4LCAKKyAgICA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgODAsIAorICAgIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCA3OCwgNjgsIAorICAgIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIDY1LCA2NSwgCisgICAgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgNjUsIAorICAgIDE5MywgNzgsIDY3LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAxMjgsIAorICAgIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCA3OCwgCisgICAgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIDc4LCAKKyAgICA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgNzksIAorICAgIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgNzgsIAorICAgIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCA3OCwgCisgICAgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIDEyOCwgCisgICAgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgODUsIAorICAgIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgODMsIDY5LCA2NSwgODQsIDY5LCAxOTYsIDc4LCA2NSwgODUsIDY4LCA3MywgCisgICAgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDc4LCAKKyAgICA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIAorICAgIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc4LCA2NSwgODMsIDY1LCAyMDQsIDc4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAxMjgsIDc4LCAKKyAgICA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OSwgMjExLCA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIDEyOCwgNzgsIAorICAgIDY1LCA3OCwgNzEsIDc3LCA3OSwgNzgsIDg0LCA3MiwgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgNzgsIDY1LCA3OCwgCisgICAgNjUsIDEyOCwgNzgsIDY1LCA3NywgNjksIDEyOCwgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCA1MCwgMTI4LCA3OCwgCisgICAgNjUsIDc3LCAxMjgsIDc4LCA2NSwgNzUsIDEyOCwgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgCisgICAgNjUsIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA3MSwgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCAKKyAgICA2NSwgMTI4LCA3OCwgNjUsIDY2LCA2NSwgODQsIDY1LCA2OSwgNjUsIDIwNiwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIAorICAgIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCA3OCwgNjUsIDUyLCAxMjgsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCA0NSwgCisgICAgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDc4LCAKKyAgICA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIAorICAgIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCA1MSwgCisgICAgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIDQ5LCAKKyAgICAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIDc4LCAKKyAgICA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIAorICAgIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCA1MCwgCisgICAgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgCisgICAgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIDc4LCAKKyAgICA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgNDksIAorICAgIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA0OCwgCisgICAgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCAKKyAgICA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgODQsIAorICAgIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAxMjgsIAorICAgIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgMTI4LCAKKyAgICA3NywgODcsIDczLCA3MywgMTI4LCA3NywgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgNjksIAorICAgIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIDg2LCAKKyAgICA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIAorICAgIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIAorICAgIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgCisgICAgNzcsIDg1LCA4NSwgMTI4LCA3NywgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCAKKyAgICA3MywgMTk1LCA3NywgODUsIDgzLCA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIAorICAgIDc3LCA4NSwgODMsIDcyLCAxNzksIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MywgCisgICAgMTI4LCA3NywgODUsIDgyLCA4OCwgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDc3LCA4NSwgODIsIDY4LCA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCAKKyAgICA4NSwgODEsIDY4LCA2NSwgNzcsIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIAorICAgIDc5LCA4NCwgMTI4LCA3NywgODUsIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgCisgICAgNzksIDEyOCwgNzcsIDg1LCA3OCwgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCAKKyAgICA3OCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIAorICAgIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgCisgICAgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIAorICAgIDc2LCA2OSwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgCisgICAgODUsIDc2LCA2NSwgMjEwLCA3NywgODUsIDc2LCA4NCwgNzMsIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIAorICAgIDIwMSwgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAKKyAgICAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAKKyAgICAxOTksIDc3LCA4NSwgNjksIDc4LCAxMjgsIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCAKKyAgICA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDgzLCAxMjgsIDc3LCA4NSwgNjUsIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgCisgICAgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCA4MiwgMjA3LCA3NywgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgCisgICAgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIDY5LCAyMTEsIDc3LCA3OSwgCisgICAgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIAorICAgIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCAKKyAgICA3OCwgODQsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgCisgICAgNjksIDc4LCA4NCwgNDUsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIAorICAgIDc4LCA4NCwgMTI4LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgCisgICAgNzksIDg2LCA2OSwgMTI4LCA3NywgNzksIDg1LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCAKKyAgICA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIAorICAgIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAKKyAgICAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIDg0LCA3OSwgODIsIAorICAgIDg3LCA2NSwgODksIDEyOCwgNzcsIDc5LCA4NCwgNzksIDgyLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNzcsIDc5LCA4NCwgCisgICAgNzksIDIxMCwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIDg0LCA3MiwgNjksIDIxMCwgNzcsIDc5LCAKKyAgICA4NCwgMTI4LCA3NywgNzksIDgzLCA4MSwgODUsIDY5LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgODUsIDc3LCAxMjgsIAorICAgIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCAKKyAgICA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIDc3LCA3OSwgNzksIAorICAgIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgMjA2LCA3NywgCisgICAgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCA3NywgNzksIDc5LCAKKyAgICA2OCwgMTI4LCA3NywgNzksIDc5LCAxOTYsIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIDczLCA2OSwgNjksIAorICAgIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgNzksIDc4LCA4MywgCisgICAgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCAKKyAgICA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIDc5LCA3OCwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDc3LCA3OSwgCisgICAgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDc3LCAKKyAgICA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAxMjgsIDc3LCA3OSwgNzgsIAorICAgIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgCisgICAgMTI4LCA3NywgNzksIDc4LCA2OSwgODksIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgNzksIDc4LCA2OSwgMjE3LCAKKyAgICA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAxMjgsIDc3LCA3OSwgNzIsIDY1LCA3NywgNzcsIAorICAgIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NywgCisgICAgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgODIsIDQ1LCA1NSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NCwgMTI4LCA3NywgNzksIAorICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCAKKyAgICA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIAorICAgIDczLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgCisgICAgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTEsIDEyOCwgCisgICAgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNDgsIDEyOCwgCisgICAgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAxMjgsIDc3LCA3OSwgNjgsIDIwMSwgNzcsIDc5LCA2OCwgNjksIDgzLCAKKyAgICA4NCwgODksIDEyOCwgNzcsIDc5LCA2OCwgNjksIDgyLCAyMDYsIDc3LCA3OSwgNjgsIDY5LCA3NywgMTI4LCA3NywgNzksIAorICAgIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgCisgICAgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgCisgICAgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgCisgICAgMTI4LCA3NywgNzYsIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgCisgICAgODQsIDEyOCwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIAorICAgIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIAorICAgIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgCisgICAgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCAKKyAgICA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIAorICAgIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgCisgICAgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCAKKyAgICA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIAorICAgIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgNzUsIDEyOCwgNzcsIDczLCA3NiwgNzMsIDg0LCA2NSwgCisgICAgODIsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3NywgNzMsIDc1LCAKKyAgICA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIDc3LCA3MywgNzMsIAorICAgIDc3LCAxMjgsIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIAorICAgIDg1LCA3NywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCAKKyAgICA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgCisgICAgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCAKKyAgICA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIAorICAgIDc3LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIAorICAgIDY5LCAxMjgsIDc3LCA3MywgNjgsIDQ1LCA3NiwgNjksIDg2LCA2OSwgMjA0LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgCisgICAgODIsIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIAorICAgIDEyOCwgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIAorICAgIDEyOCwgNzcsIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgCisgICAgNzcsIDcxLCA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCAKKyAgICA3OSwgMTI4LCA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCAKKyAgICA3MSwgNjksIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIAorICAgIDEyOCwgNzcsIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNjksIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIAorICAgIDY2LCA2NSwgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAKKyAgICAxMjgsIDc3LCA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAKKyAgICAxMjgsIDc3LCA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCAKKyAgICA4OSwgNjUsIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIAorICAgIDcwLCA2OSwgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgCisgICAgNzcsIDY5LCA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCAKKyAgICA4MSwgMTI4LCA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIAorICAgIDc4LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgCisgICAgNjksIDg0LCA4MiwgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCAKKyAgICA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgCisgICAgMTI4LCA3NywgNjksIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCAKKyAgICA3MywgNjUsIDIwNiwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgCisgICAgMTk3LCA3NywgNjksIDgzLCA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgCisgICAgNjksIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCAKKyAgICA2NSwgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIAorICAgIDgyLCA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDc5LCA4MiwgCisgICAgNjUsIDIwMCwgNzcsIDY5LCA3OCwgNzksIDY5LCAxMjgsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCAKKyAgICA3OCwgMTI4LCA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgCisgICAgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCAKKyAgICA0NSwgODEsIDc5LCA4MCwgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIAorICAgIDY4LCA3MywgMTk1LCA3NywgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgCisgICAgNzEsIDY1LCA4NCwgNzksIDc4LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCAKKyAgICA3MSwgNjUsIDc2LCA3MywgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgNjksIAorICAgIDIwMSwgNzcsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDc3LCAxMjgsIAorICAgIDc3LCA2OSwgNjksIDIwMiwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgCisgICAgNzcsIDY5LCA2OCwgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCAKKyAgICA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgNjgsIDY1LCA3NiwgMTI4LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIAorICAgIDY1LCAyMTIsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgMTk2LCA3NywgNjcsIDcyLCAKKyAgICAyMTMsIDc3LCA2NywgNzIsIDY1LCAyMDYsIDc3LCAxOTUsIDc3LCA2NiwgODUsIDg1LCAxMjgsIDc3LCA2NiwgODUsIDc5LCAKKyAgICA4MSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIAorICAgIDc3LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA3NywgNjYsIDc5LCAxMjgsIAorICAgIDc3LCA2NiwgNzMsIDg0LCAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDc3LCA2NiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4MiwgNzMsIAorICAgIDEyOCwgNzcsIDY2LCA2OSwgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgCisgICAgNzgsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjksIDY5LCAxMjgsIDc3LCAKKyAgICA2NiwgNjksIDEyOCwgNzcsIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjYsIAorICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY1LCA2NSwgCisgICAgMTI4LCA3NywgNjYsIDY1LCAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIDc3LCA2NiwgNTEsIDEyOCwgNzcsIAorICAgIDY2LCA1MCwgMTI4LCA3NywgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgCisgICAgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDY1LCAKKyAgICAxMjgsIDc3LCA2NSwgODgsIDEyOCwgNzcsIDY1LCA4NSwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCAKKyAgICA3NywgNjUsIDg0LCA4MiwgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIAorICAgIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgCisgICAgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCAKKyAgICA3NywgNjUsIDgzLCA3MiwgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIAorICAgIDY3LCA4NSwgNzYsIDczLCA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NywgNjUsIDgyLCAKKyAgICAyMDEsIDc3LCA2NSwgODIsIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIAorICAgIDY1LCA4MiwgODQsIDczLCA2NSwgMjA0LCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDgyLCA4MiwgCisgICAgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgMjExLCA3NywgNjUsIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIAorICAgIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgCisgICAgNjcsIDcyLCA2OSwgMjA2LCA3NywgNjUsIDgyLCA2NywgNzIsIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDQ1LCAKKyAgICA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCA2NSwgMTI4LCA3NywgCisgICAgNjUsIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCA2NSwgODIsIDEyOCwgNzcsIDY1LCA4MSwgNjUsIDcwLCAxMjgsIDc3LCAKKyAgICA2NSwgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIDE5NywgNzcsIDY1LCA4MCwgNzMsIDgxLCAxMjgsIDc3LCA2NSwgMjA4LCAKKyAgICA3NywgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIDg0LCA2OSwgNzYsIDgwLCA3MywgNjksIDY3LCAxOTcsIDc3LCA2NSwgNzgsIAorICAgIDgzLCA4OSwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCiAgICAgMjE4LCA3NywgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA3OCwgNzMsIDY3LCA3MiwgNjUsIDY5LCA2NSwgMjA2LCAKICAgICA3NywgNjUsIDc4LCA3MSwgNjUsIDc2LCA2NSwgNzcsIDEyOCwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgNzYsIDczLCA3OCwgCiAgICAgMTk5LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCAxOTUsIDc3LCA2NSwgNzgsIDY3LCA3MiwgMjEzLCA3NywgNjUsIDc4LCAKQEAgLTIzMjIsMTQyMCArMjM0NSwxNDI2IEBACiAgICAgNDgsIDQ4LCAxNzgsIDc3LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzcsIDQ4LCAKICAgICA0OCwgNDksIDEyOCwgNzcsIDQ4LCA0OCwgMTc3LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCA4OSwgODgsIDEyOCwgCiAgICAgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCA4OSwgODAsIDEyOCwgCi0gICAgNzYsIDg5LCA3MywgODQsIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCAKLSAgICA3NiwgODgsIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCAKLSAgICA3NiwgODcsIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCAKLSAgICA3NiwgODUsIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgCi0gICAgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgCi0gICAgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCAyMDAsIDc2LCA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAKLSAgICAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCAKLSAgICA4NSwgMTk3LCA3NiwgODUsIDY2LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIDc2LCAKLSAgICA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCA3NywgMTI4LCA3NiwgODIsIDczLCAKLSAgICAxMjgsIDc2LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIAotICAgIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgNjksIDE5NiwgNzYsIDc5LCA4NywgCi0gICAgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzYsIDc5LCAKLSAgICA4NywgNDUsIDc3LCA3MywgMTk2LCA3NiwgNzksIDg3LCA0NSwgNzAsIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3NiwgNzksIAotICAgIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCA2OCwgCi0gICAgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIDg1LCAKLSAgICA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIAotICAgIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIAotICAgIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgCi0gICAgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAKLSAgICAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIAotICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCAKLSAgICA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgCi0gICAgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIAotICAgIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCAKLSAgICA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIAotICAgIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgCi0gICAgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCAKLSAgICA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIAotICAgIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCAKLSAgICA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIAotICAgIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAKLSAgICAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIAotICAgIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIAotICAgIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgCi0gICAgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCAKLSAgICA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIAotICAgIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIAotICAgIDczLCA4NCwgODQsIDc2LCA2OSwgMTI4LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAKLSAgICAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDIwMCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgzLCAKLSAgICAxMjgsIDc2LCA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCAKLSAgICA4MCwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgODAsIDIxMSwgNzYsIDczLCAyMDgsIDc2LCA3MywgNzgsIAotICAgIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3OCwgNzUsIDY5LCAxOTYsIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgCi0gICAgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCAKLSAgICA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIAotICAgIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgCi0gICAgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCAKLSAgICA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIAotICAgIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgCi0gICAgNzcsIDY2LCAyMTEsIDc2LCA3MywgNzcsIDE5NCwgNzYsIDczLCA3NiwgODksIDEyOCwgNzYsIDczLCA3NiwgNzMsIDg0LCAKLSAgICA3MiwgMTI4LCA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzYsIAotICAgIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAKLSAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcxLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3NiwgNzMsIAotICAgIDcwLCA4NCwgNjksIDgyLCAxMjgsIDc2LCA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIDc2LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDc2LCA3MywgNjksIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgNjksIDEyOCwgCi0gICAgNzYsIDczLCA2OCwgMTI4LCA3NiwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCAKLSAgICA3NiwgNzMsIDY2LCA2OSwgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIAotICAgIDcyLCA3MywgNzMsIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAKLSAgICAxOTksIDc2LCA3MiwgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAKLSAgICAxMjgsIDc2LCA2OSwgODYsIDczLCA4NCwgNjUsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2OSwgODUsIDc3LCAxMjgsIAotICAgIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAKLSAgICAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIAotICAgIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgCi0gICAgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgNjcsIDcyLCAKLSAgICAxOTMsIDc2LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCAKLSAgICA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIAotICAgIDc4LCA3MywgMjExLCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNTUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU0LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA1MywgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDUxLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNDksIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCAKLSAgICA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIAotICAgIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgCi0gICAgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MywgMTI4LCA3NiwgNjksIDcxLCAKLSAgICA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIAotICAgIDY5LCA3MSwgMTI4LCA3NiwgNjksIDE5OSwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgCi0gICAgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIAotICAgIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgCi0gICAgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCAKLSAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgCi0gICAgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCAKLSAgICA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIAotICAgIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgCi0gICAgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCAKLSAgICA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgCi0gICAgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIAotICAgIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgCi0gICAgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgCi0gICAgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg1LCA3NCwgMTI4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIAotICAgIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDIwMSwgCi0gICAgNzYsIDY1LCA4MiwgNzEsIDY5LCA4MywgODQsIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgODIsIDcxLCAKLSAgICA2OSwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCA4MSwgMTI4LCAKLSAgICA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIDg1LCA2NSwgNzEsIAotICAgIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3NywgODAsIDEyOCwgNzYsIAotICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgCi0gICAgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCAKLSAgICA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIAotICAgIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTAsIDUyLCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1NCwgNTIsIDE4NCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCAKLSAgICA0OSwgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OSwgMTgzLCA3NiwgNjUsIDc1LCA0NSwgNTQsIDQ4LCA1NiwgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTMsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MywgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MCwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTIsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU2LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCi0gICAgNTIsIDU1LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCAKLSAgICA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCAxODUsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTcsIDQ4LCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKLSAgICA1MSwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIAotICAgIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDUzLCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKLSAgICA0OSwgNTIsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTcsIAotICAgIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDE3NywgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NSwgMTg1LCA3NiwgNjUsIDc1LCAKLSAgICA0NSwgNDgsIDU0LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIAotICAgIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUxLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA1MywgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OCwgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCA2NSwgNzYsIDY1LCA3OCwgCi0gICAgMTI4LCA3NiwgNjUsIDczLCA3OCwgMTk5LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIDcyLCA4NSwgMTI4LCA3NiwgCi0gICAgNjUsIDcyLCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgMTI4LCA3NiwgNjUsIDcxLCAyMTMsIDc2LCA2NSwgNzEsIDY1LCAKLSAgICA4MiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMjEwLCA3NiwgNjUsIDcxLCA2NSwgNjYsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIAotICAgIDE5NCwgNzYsIDY1LCA2OSwgODYsIDEyOCwgNzYsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY4LCAyMTcsIDc2LCA2NSwgNjcsIAotICAgIDc1LCAxMjgsIDc2LCA2NSwgNjcsIDY1LCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNzYsIDY1LCA2NiwgNzksIDgyLCAxMjgsIDc2LCA2NSwgNjYsIDczLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDc2LCA2NSwgNjYsIDY5LCA3NiwgMTI4LCA3NiwgNjUsIDY2LCA2NSwgCi0gICAgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDY1LCAKLSAgICA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDU0LCAxMjgsIDc2LCAKLSAgICA1MiwgMTI4LCA3NiwgNTEsIDEyOCwgNzYsIDUwLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3NiwgNDgsIDQ4LCAKLSAgICA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIAotICAgIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgMTI4LCA3NSwgODksIDc5LCAxMjgsIDc1LCA4OSwgCi0gICAgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgNzUsIDg5LCA2OSwgMTI4LCA3NSwgODksIDY1LCAKLSAgICA4NCwgNzIsIDc5LCAyMTEsIDc1LCA4OSwgNjUsIDY1LCAxMjgsIDc1LCA4OSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNzMsIAotICAgIDEyOCwgNzUsIDg4LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA3NSwgODgsIDg3LCA2NSwgMTI4LCA3NSwgODgsIDg1LCAxMjgsIDc1LCA4OCwgNzksIDEyOCwgNzUsIDg4LCA3MywgCi0gICAgMTI4LCA3NSwgODgsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDY5LCAxMjgsIDc1LCA4OCwgNjUsIDY1LCAxMjgsIDc1LCA4OCwgCi0gICAgNjUsIDEyOCwgNzUsIDg3LCA4NiwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAKLSAgICAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3NywgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAKLSAgICAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NiwgMTI4LCA3NSwgODcsIDY1LCAKLSAgICA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg2LCA2NSwgMTI4LCAKLSAgICA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg2LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIDc1LCAKLSAgICA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgNzUsIAotICAgIDg1LCA4MywgNzIsIDg1LCAxNzgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgCi0gICAgNzksIDEyOCwgNzUsIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgNjksIDEyOCwgNzUsIDg1LCAKLSAgICA4MiwgMTI4LCA3NSwgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgMTI4LCA3NSwgODUsIDc5LCAKLSAgICA4MCwgMTI4LCA3NSwgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgNzksIDEyOCwgNzUsIDg1LCAKLSAgICA3OCwgNzEsIDEyOCwgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzUsIDg1LCA3NiwgCi0gICAgMTI4LCA3NSwgODUsIDIwNCwgNzUsIDg1LCA3MSwgMTI4LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDY2LCAxMjgsIAotICAgIDc1LCA4NSwgNjUsIDg2LCAxMjgsIDc1LCA4NSwgNjUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIDEyOCwgNzUsIDg1LCA1NSwgCi0gICAgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIDUxLCAxMjgsIDc1LCA4NSwgMTc5LCA3NSwgODQsIAotICAgIDEyOCwgNzUsIDgzLCA4MywgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDg1LCAxMjgsIDc1LCA4MywgODMsIDc5LCA3OSwgCi0gICAgMTI4LCA3NSwgODMsIDgzLCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNzMsIDEyOCwgCi0gICAgNzUsIDgzLCA4MywgNjksIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAxMjgsIDc1LCA4MywgODMsIDY1LCA4NSwgMTI4LCAKLSAgICA3NSwgODMsIDgzLCA2NSwgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAxMjgsIAotICAgIDc1LCA4MywgODMsIDEyOCwgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIDgzLCA4NCwgNzMsIDEyOCwgCi0gICAgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCA3OCwgMTI4LCA3NSwgODIsIAotICAgIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCAKLSAgICA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgODAsIDg1LCAxMjgsIAotICAgIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgNzUsIDgwLCA3MywgCi0gICAgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCA2OSwgMTI4LCA3NSwgCi0gICAgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIDcyLCAxMjgsIDc1LCAKLSAgICA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIDEyOCwgNzUsIDc5LCA4NiwgMTI4LCAKLSAgICA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCA3OCwgNzMsIAotICAgIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIDc1LCA3OSwgCi0gICAgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAxMjgsIDc1LCAKLSAgICA3OSwgNzksIDg2LCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgCi0gICAgMTI4LCA3NSwgNzksIDc5LCA2NiwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAKLSAgICA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIAotICAgIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgCi0gICAgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgNjksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgNzksIDIwMywgCi0gICAgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgNzksIDc3LCAKLSAgICAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCAKLSAgICA3OSwgNjUsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIAotICAgIDY5LCAxMjgsIDc1LCA3OCwgNzksIDY2LCA4MywgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA3OCwgCi0gICAgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIDE5NywgNzUsIDc3LCAKLSAgICAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCAKLSAgICA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIDc1LCA4NSwgMTI4LCAKLSAgICA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIDc1LCA2OSwgMTI4LCAKLSAgICA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCAKLSAgICA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCAKLSAgICA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA2NywgNzIsIAotICAgIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgMTI4LCA3NSwgCi0gICAgNzMsIDg3LCAxMjgsIDc1LCA3MywgODYsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDc1LCA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCA1MywgMTI4LCAKLSAgICA3NSwgNzMsIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIDc2LCAxMjgsIAotICAgIDc1LCA3MywgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgNjksIDg0LCAKLSAgICA3OSwgODIsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCA3MywgODIsIAotICAgIDc5LCAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIDgwLCAxMjgsIAotICAgIDc1LCA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgNjksIDgyLCA3MSwgCi0gICAgNjUsIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCA3NiwgNzYsIDY5LCAKLSAgICA4MiwgMTI4LCA3NSwgNzMsIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCAKLSAgICA2OSwgODYsIDY1LCAyMDYsIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIAotICAgIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MywgNjYsIAotICAgIDEyOCwgNzUsIDczLCA2NSwgODYsIDEyOCwgNzUsIDczLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIAotICAgIDg3LCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA4NSwgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAKLSAgICAyMDYsIDc1LCA3MiwgODUsIDY4LCA2NSwgODcsIDY1LCA2OCwgMjAxLCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAxMjgsIAotICAgIDc1LCA3MiwgODUsIDY1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgCi0gICAgNzksIDc4LCAxMjgsIDc1LCA3MiwgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgNzQsIDc1LCAyMDEsIDc1LCAKLSAgICA3MiwgNzksIDEyOCwgNzUsIDcyLCAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCAKLSAgICA3MywgNzgsIDg5LCA2NSwgMTI4LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIAotICAgIDcyLCAyMDEsIDc1LCA3MiwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgCi0gICAgMTI4LCA3NSwgNzIsIDY5LCA3MywgMTI4LCA3NSwgNzIsIDY5LCA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgCi0gICAgNjUsIDg2LCAxMjgsIDc1LCA3MiwgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIDcyLCA2NSwgODIsIAotICAgIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgNjUsIDc4LCA2OCwgCi0gICAgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCA2NSwgNzUsIDY1LCAKLSAgICA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgMTI4LCA3NSwgNzIsIAotICAgIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY2LCAxMjgsIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIAotICAgIDg5LCA2NywgNjUsIDgwLCAxMjgsIDc1LCA2OSwgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgCi0gICAgNjgsIDEyOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIDE5NiwgNzUsIDY5LCA4OCwgMTI4LCA3NSwgNjksIDg2LCAKLSAgICAxMjgsIDc1LCA2OSwgODUsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIAotICAgIDgwLCAxMjgsIDc1LCA2OSwgODUsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgwLCA4NSwgODEsIDEyOCwgCi0gICAgNzUsIDY5LCA4NSwgNzksIDIxMiwgNzUsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIDY5LCA4NSwgODQsIDc4LCAKLSAgICA2OCwgNjUsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIDY1LCA4MSwgMTI4LCA3NSwgNjksIDg1LCA2NSwgNjksIDg0LCA3NywgNjksIAotICAgIDg1LCA3OCwgMTI4LCA3NSwgNjksIDg1LCA2NSwgNjksIDgyLCA3MywgMTI4LCA3NSwgNjksIDg0LCA4NCwgMjAxLCA3NSwgCi0gICAgNjksIDgzLCA3MiwgNTAsIDEyOCwgNzUsIDY5LCA4MiwgNjksIDg0LCAxMjgsIDc1LCA2OSwgNzksIDg3LCAxMjgsIDc1LCAKLSAgICA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCAxOTMsIAotICAgIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDE5MywgNzUsIDY5LCA3OCwgNjUsIDg0LCAxMjgsIDc1LCA2OSwgNzgsIDEyOCwgCi0gICAgNzUsIDY5LCAyMDYsIDc1LCA2OSwgNzcsIDgwLCA4NSwgNzYsIDEyOCwgNzUsIDY5LCA3NywgODAsIDg1LCAyMDQsIDc1LCAKLSAgICA2OSwgNzcsIDgwLCA3NiwgNzMsIDEyOCwgNzUsIDY5LCA3NywgODAsIDc2LCAyMDEsIDc1LCA2OSwgNzcsIDgwLCA3MiwgODIsIAotICAgIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NywgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NiwgODYsIDczLCAKLSAgICAyMDYsIDc1LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA3NSwgNjksIDcyLCA2OSwgMjAwLCA3NSwgNjksIDcyLCAxMjgsIDc1LCAKLSAgICA2OSwgNzAsIDg1LCA3NiwgNjUsIDEyOCwgNzUsIDY5LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA2OSwgODMsIDg1LCAxMjgsIAotICAgIDc1LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNjksIDY2LCAKLSAgICAxMjgsIDc1LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCA2NSwgNjUsIDY5LCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIDc1LCAKLSAgICA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzUsIAotICAgIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgMTI4LCA3NSwgNjUsIDg3LCA4NiwgMTI4LCA3NSwgNjUsIDg3LCA3MywgCi0gICAgMTI4LCA3NSwgNjUsIDg3LCA2NiwgMTI4LCA3NSwgNjUsIDg2LCA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODYsIDEyOCwgCi0gICAgNzUsIDY1LCA4NSwgODYsIDEyOCwgNzUsIDY1LCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCAKLSAgICA4NSwgNjYsIDEyOCwgNzUsIDY1LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIAotICAgIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgCi0gICAgNjUsIDg0LCA2NSwgODYsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIAotICAgIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgCi0gICAgODQsIDY1LCAyMDYsIDc1LCA2NSwgODMsIDgyLCA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCAKLSAgICA3NSwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODMsIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgCi0gICAgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIAotICAgIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgNjUsIDgyLCA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgCi0gICAgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIAotICAgIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgCi0gICAgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDgwLCA4MCwgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCAKLSAgICA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAyMDgsIDc1LCAKLSAgICA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIAotICAgIDc4LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgCi0gICAgNzcsIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCAKLSAgICA3NSwgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODYsIDEyOCwgNzUsIDY1LCA3MywgODQsIDcyLCAyMDEsIDc1LCAKLSAgICA2NSwgNzMsIDgyLCA3MywgMTI4LCA3NSwgNjUsIDczLCA2NiwgMTI4LCA3NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgMjAxLCAKLSAgICA3NSwgNjUsIDcwLCA2NSwgMTI4LCA3NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgMTk4LCA3NSwgNjUsIDY4LCA1MywgMTI4LCAKLSAgICA3NSwgNjUsIDY4LCAxODEsIDc1LCA2NSwgNjgsIDUyLCAxMjgsIDc1LCA2NSwgNjgsIDUxLCAxMjgsIDc1LCA2NSwgNjgsIAotICAgIDE3OSwgNzUsIDY1LCA2OCwgNTAsIDEyOCwgNzUsIDY1LCA2OCwgMTI4LCA3NSwgNjUsIDY2LCAxOTMsIDc1LCA2NSwgNjYsIAotICAgIDEyOCwgNzUsIDY1LCA2NSwgODYsIDEyOCwgNzUsIDY1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAotICAgIDc1LCA2NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgNjUsIDY2LCA2NSwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgMTI4LCA3NSwgCi0gICAgNjUsIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgCi0gICAgNDgsIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCAKLSAgICA1MSwgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCAKLSAgICA4NSwgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgODUsIDgzLCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgMTI4LCA3NCwgCi0gICAgODUsIDc5LCA4MCwgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgODUsIDc2LCAKLSAgICA4OSwgMTI4LCA3NCwgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIAotICAgIDcxLCA2OSwgMTI4LCA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgCi0gICAgODksIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NCwgNzksIDg5LCA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCAKLSAgICA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCAKLSAgICA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDg0LCA4MywgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIAotICAgIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIAotICAgIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgCi0gICAgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCAKLSAgICA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIAotICAgIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIAotICAgIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCAKLSAgICA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCAKLSAgICA3NiwgMTI4LCA3NCwgNzMsIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgCi0gICAgMTI4LCA3NCwgNzMsIDY1LCAxMjgsIDc0LCA3MiwgNzksIDg4LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgCi0gICAgNzIsIDEyOCwgNzQsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCAKLSAgICA3NywgMTI4LCA3NCwgNzIsIDY1LCA2NSwgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCAKLSAgICA4MiwgODUsIDgzLCA2NSwgNzYsIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgCi0gICAgMTI4LCA3NCwgNjksIDgyLCAxMjgsIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgCi0gICAgNjUsIDc4LCAxMjgsIDc0LCA2OSwgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCAKLSAgICA3OCwgMTI4LCA3NCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIAotICAgIDY1LCA4NywgMTI4LCA3NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4NSwgMTI4LCA3NCwgCi0gICAgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIDY1LCA3OCwgMTI4LCAKLSAgICA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgNzYsIDY1LCA3NiwgCi0gICAgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgNzMsIDIwNiwgNzQsIDY1LCA3MywgMTI4LCA3NCwgNjUsIDcyLCAKLSAgICAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA4MywgMTI4LCA3NCwgNjUsIDY3LCA3NSwgNDUsIAotICAgIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzQsIDY1LCA2NywgMjAzLCA3NCwgNDUsIDgzLCA3MywgCi0gICAgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIDEyOCwgNzMsIDkwLCAKLSAgICA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgNjUsIDg5LCAxOTMsIAotICAgIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCA3NCwgNjUsIDEyOCwgCi0gICAgNzMsIDg0LCAyMTEsIDczLCA4NCwgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIDY5LCA3NywgMTI4LCAKLSAgICA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAxMjgsIDczLCA4MywgNzksIDgzLCA2NywgNjksIDc2LCA2OSwgMjExLCA3MywgODMsIAotICAgIDc5LCA3OCwgMTI4LCA3MywgODMsIDc5LCAyMDYsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxMjgsIDczLCA4MywgCi0gICAgNzYsIDY1LCA3OCwgNjgsIDEyOCwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIDY5LCA3OCwgMTI4LCA3MywgODMsIDY1LCAKLSAgICA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg5LCA2NSwgNzgsIAotICAgIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgNzksIDc4LCA0NSwgCi0gICAgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAxMjgsIDczLCA4MiwgNjYsIDEyOCwgNzMsIDc5LCAKLSAgICA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgCi0gICAgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgCi0gICAgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCA2OCwgMTI4LCAKLSAgICA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDczLCA3OCwgODQsIAotICAgIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgCi0gICAgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIAotICAgIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgCi0gICAgODIsIDgwLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDc5LCA2NywgNzUsIAotICAgIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDczLCA3OCwgODQsIDY5LCA4MiwgCi0gICAgNzYsIDY1LCA2NywgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3MywgNzksIDIxMCwgNzMsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA2OSwgODMsIDIxMiwgNzMsIDc4LCA4NCwgNjksIDgyLCA2NywgNjUsIDc2LCA2NSwgODQsIDY5LCAxMjgsIDczLCA3OCwgODQsIAotICAgIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgNzYsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIAotICAgIDIwNCwgNzMsIDc4LCA4MywgODUsIDc2LCA2NSwgMjEwLCA3MywgNzgsIDgzLCA4NCwgODIsIDg1LCA3NywgNjksIDc4LCA4NCwgCi0gICAgNjUsIDIwNCwgNzMsIDc4LCA4MywgNzMsIDY4LCA2OSwgMTI4LCA3MywgNzgsIDgzLCA3MywgNjgsIDE5NywgNzMsIDc4LCAKLSAgICA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODMsIDY5LCA2NywgODQsIDEyOCwgNzMsIDc4LCA4MywgNjcsIAotICAgIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MywgNzgsIDgwLCA4NSwgMjEyLCA3MywgNzgsIDc4LCA3OSwgCi0gICAgNjcsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCAKLSAgICA3MywgNzgsIDc4LCA2OSwgMjEwLCA3MywgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzMsIDc4LCA3MSwgODUsIDEyOCwgNzMsIAotICAgIDc4LCA3MywgMTI4LCA3MywgNzgsIDcyLCA3MywgNjYsIDczLCAyMTIsIDczLCA3OCwgNzIsIDY5LCA4MiwgNjksIDc4LCAKLSAgICAyMTIsIDczLCA3OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNzMsIDc4LCA3MSwgODcsIDY1LCA5MCwgMTI4LCA3MywgNzgsIAotICAgIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCA3NiwgODUsIDY5LCA3OCwgNjcsIDY5LCAKLSAgICAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgCi0gICAgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgNjgsIDczLCA4MiwgNjksIDY3LCAKLSAgICAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIAotICAgIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgMjA2LCA3MywgNzgsIDY4LCA2OSwgCi0gICAgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIDgwLCA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA2NywgODIsIDY5LCAKLSAgICA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgNzMsIDc4LCA2NywgODIsIAotICAgIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgCi0gICAgODAsIDc2LCA2OSwgODQsIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCAKLSAgICA2OCwgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIAotICAgIDgwLCAxMjgsIDczLCA3OCwgNDUsIDY1LCA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAKLSAgICAyMDQsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIAotICAgIDY5LCA2NywgODQsIDY1LCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgCi0gICAgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCAKLSAgICA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIAotICAgIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAKLSAgICAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIAotICAgIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAKLSAgICAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIAotICAgIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgCi0gICAgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAKLSAgICAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgCi0gICAgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIAotICAgIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIAotICAgIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCAKLSAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCAKLSAgICA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA3MywgNjcsIDc5LCA3OCwgMTI4LCA3MywgNjcsIDcyLCA3OSwgODUsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAKLSAgICAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIAotICAgIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgCi0gICAgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCAKLSAgICA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIAotICAgIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgCi0gICAgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIAotICAgIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgCi0gICAgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIAotICAgIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIAotICAgIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAKLSAgICAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCAKLSAgICA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCAKLSAgICA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgCi0gICAgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCAKLSAgICA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIAotICAgIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg5LCA3MSwgNzMsIDY5LCA3MywgNjUsIDEyOCwgNzIsIDg4LCA4NywgNzEsIDEyOCwgCi0gICAgNzIsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIAotICAgIDg4LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgCi0gICAgMTI4LCA3MiwgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAKLSAgICAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCAKLSAgICA4OCwgNjksIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIAotICAgIDEyOCwgNzIsIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIAotICAgIDg1LCAxMjgsIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODcsIDY1LCA3MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIAotICAgIDg1LCA4NiwgNjUsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODMsIDcyLCAxMjgsIDcyLCA4NSwgCi0gICAgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgODMsIAotICAgIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgMTk2LCA3MiwgCi0gICAgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDIwOCwgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCAKLSAgICAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgNzIsIDg1LCA3MSwgNzEsIAotICAgIDczLCA3OCwgMTk5LCA3MiwgODUsIDY2LCA1MCwgMTI4LCA3MiwgODUsIDY2LCAxNzgsIDcyLCA4NSwgNjYsIDEyOCwgNzIsIAotICAgIDg1LCA2NSwgODIsIDY1LCA2OCwgNjgsIDc5LCAxMjgsIDcyLCA4NSwgNjUsIDc4LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgCi0gICAgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCA4NiwgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCAKLSAgICA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCA3OSwgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIAotICAgIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAKLSAgICAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgNjksIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCAKLSAgICA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIAotICAgIDE5NywgNzIsIDc5LCA4MiwgODIsIDEyOCwgNzIsIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCi0gICAgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIAotICAgIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCAKLSAgICA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCi0gICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIAotICAgIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCAKLSAgICA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCi0gICAgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIAotICAgIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAyMDQsIDcyLCA3OSwgODIsIAotICAgIDczLCAxMjgsIDcyLCA3OSwgODIsIDE5MywgNzIsIDc5LCA3OSwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIAotICAgIDcyLCA3OSwgNzksIDgwLCAxMjgsIDcyLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgNjgsIDEyOCwgCi0gICAgNzIsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDcyLCA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCAKLSAgICA2OSwgMjE3LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIAotICAgIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgNzYsIDc5LCAxMjgsIDcyLCA3OSwgNzYsIDc2LCA3OSwgMjE1LCA3MiwgCi0gICAgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCAKLSAgICA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCA3MiwgNzksIDY3LCA3NSwgNjksIDIxNywgNzIsIAotICAgIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgCi0gICAgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA2NiwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCAKLSAgICA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCAKLSAgICA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIAotICAgIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgCi0gICAgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgCi0gICAgNzIsIDc4LCA2NSwgODUsIDEyOCwgNzIsIDc4LCA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCAKLSAgICA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIAotICAgIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIAotICAgIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCAKLSAgICA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIAotICAgIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgCi0gICAgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgCi0gICAgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCAKLSAgICA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCAKLSAgICA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAKLSAgICAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCAKLSAgICA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIAotICAgIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIAotICAgIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgODgsIDEyOCwgNzIsIDc2LCA2NSwgODUsIDEyOCwgNzIsIDc2LCA2NSwgCi0gICAgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzYsIDEyOCwgNzIsIDc1LCAxMjgsIAotICAgIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODksIDc5LCAxMjgsIDcyLCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgCi0gICAgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzgsIDcxLCAKLSAgICA2OSwgNjgsIDEyOCwgNzIsIDczLCA3OCwgNzEsIDY5LCAxOTYsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNzMsIAotICAgIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCAKLSAgICA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDc2LCA3OSwgMjE1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIAotICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIAotICAgIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgCi0gICAgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCAKLSAgICA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCAKLSAgICA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODksIDg0LCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgNzksIAotICAgIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKKyAgICA3NiwgODksIDczLCA4NCwgMTI4LCA3NiwgODksIDczLCA3OCwgMTk5LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIAorICAgIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgMTI4LCA3NiwgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIAorICAgIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgNzMsIDEyOCwgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgODgsIDEyOCwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIAorICAgIDc2LCA4NSwgODIsIDg4LCAxMjgsIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgCisgICAgODQsIDEyOCwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAKKyAgICAxMjgsIDc2LCA4NSwgNzgsIDY1LCA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCAKKyAgICA4MywgMTI4LCA3NiwgODUsIDcyLCA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgMTI4LCA3NiwgODUsIDIwMCwgNzYsIDg1LCAKKyAgICA3MSwgNzEsIDY1LCA3MSwgNjksIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAyMDQsIAorICAgIDc2LCA4NSwgNjksIDEyOCwgNzYsIDg1LCAxOTcsIDc2LCA4NSwgNjYsIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIAorICAgIDc2LCA4NSwgNTEsIDEyOCwgNzYsIDg1LCA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDgyLCA3OSwgMTI4LCA3NiwgODIsIAorICAgIDc3LCAxMjgsIDc2LCA4MiwgNzMsIDEyOCwgNzYsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgCisgICAgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCAxOTcsIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCAKKyAgICA2OSwgMTk2LCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3NiwgNzksIDg3LCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIAorICAgIDY4LCA0NSwgMTg1LCA3NiwgNzksIDg3LCA0NSwgNzcsIDczLCAxOTYsIDc2LCA3OSwgODcsIDQ1LCA3MCwgNjUsIDc2LCA3NiwgCisgICAgNzMsIDc4LCAxOTksIDc2LCA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDc2LCA3OSwgODUsIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIAorICAgIDIxNywgNzYsIDc5LCA4NCwgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MywgODMsIDc2LCA2OSwgCisgICAgODMsIDgzLCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIDczLCA3OCwgNjksIAorICAgIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIDc2LCA3OSwgNzksIAorICAgIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgNzksIDc4LCAxMjgsIAorICAgIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAxMjgsIDc2LCA3OSwgCisgICAgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIDc2LCA2OSwgNzEsIDcxLCAKKyAgICA2OSwgMTk2LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIAorICAgIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCAKKyAgICA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgCisgICAgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIAorICAgIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCAKKyAgICA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIAorICAgIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgCisgICAgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAKKyAgICAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIAorICAgIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCAKKyAgICA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIAorICAgIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCAKKyAgICA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAKKyAgICAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCAKKyAgICA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIAorICAgIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgCisgICAgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCAKKyAgICA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIAorICAgIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgCisgICAgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIDc0LCAxMjgsIDc2LCA3MywgOTAsIDY1LCA4MiwgNjgsIDEyOCwgCisgICAgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgNzMsIDg0LCAKKyAgICA4NCwgNzYsIDY5LCAxMjgsIDc2LCA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNjksIDIxMCwgNzYsIAorICAgIDczLCA4NCwgODIsIDE5MywgNzYsIDczLCA4NCwgMjAwLCA3NiwgNzMsIDgzLCAyMTMsIDc2LCA3MywgODMsIDEyOCwgNzYsIAorICAgIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgCisgICAgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA4MCwgMjExLCA3NiwgNzMsIDIwOCwgNzYsIDczLCA3OCwgNzUsIDczLCAKKyAgICA3OCwgMTk5LCA3NiwgNzMsIDc4LCA3NSwgNjksIDE5NiwgNzYsIDczLCA3OCwgMjAzLCA3NiwgNzMsIDc4LCA3MSwgODMsIAorICAgIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCA3NiwgNzMsIDc4LCA2OSwgCisgICAgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1MSwgMTI4LCAKKyAgICA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzYsIDczLCA3NywgNzcsIAorICAgIDg1LCA1MCwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIDIxMywgNzYsIDczLCA3NywgCisgICAgNzMsIDg0LCA2OSwgMTk2LCA3NiwgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgNzMsIDc3LCAKKyAgICA3MywgODQsIDEyOCwgNzYsIDczLCA3NywgNjksIDEyOCwgNzYsIDczLCA3NywgNjYsIDIxMywgNzYsIDczLCA3NywgNjYsIAorICAgIDIxMSwgNzYsIDczLCA3NywgMTk0LCA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgODQsIDcyLCAxMjgsIAorICAgIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDc4LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3MSwgNzIsIDg0LCA3MiwgNzksIDg1LCA4MywgNjksIDEyOCwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDg0LCAxMjgsIDc2LCA3MywgNzEsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzAsIDg0LCA2OSwgODIsIAorICAgIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIAorICAgIDc2LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIDc2LCA3MywgNjYsIDY5LCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgNzIsIDczLCA3MywgMTI4LCAKKyAgICA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDE5OSwgNzYsIDcyLCA2NSwgNjUsIAorICAgIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIDEyOCwgNzYsIDY5LCA4NiwgNzMsIAorICAgIDg0LCA2NSwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgCisgICAgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIDEyOCwgNzYsIDY5LCAyMTMsIDc2LCA2OSwgCisgICAgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCAKKyAgICA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIAorICAgIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCA2NywgNzIsIDE5MywgNzYsIDY5LCA4MCwgMTI4LCA3NiwgCisgICAgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCAKKyAgICA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgNzgsIDczLCAyMTEsIDc2LCA2OSwgNzgsIAorICAgIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1NSwgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTQsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUzLCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTEsIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUwLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA0OSwgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDIwMCwgNzYsIDY5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAxOTMsIDc2LCAKKyAgICA2OSwgNzcsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDc3LCA3OSwgNzMsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDg0LCAxMjgsIAorICAgIDc2LCA2OSwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgMjAzLCA3NiwgNjksIDczLCA3NywgNzcsIDY1LCAxMjgsIDc2LCA2OSwgCisgICAgNzMsIDc3LCA3NywgMTkzLCA3NiwgNjksIDczLCAxMjgsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgMTk5LCAKKyAgICA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODQsIDc5LCA0NSwgCisgICAgODIsIDczLCA3MSwgNzIsIDIxMiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgODQsIDY5LCAyMDUsIDc2LCA2OSwgNzAsIDg0LCAKKyAgICA0NSwgODMsIDczLCA2OCwgMTk3LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA3NiwgNjksIAorICAgIDcwLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgNjksIAorICAgIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgCisgICAgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgODcsIDY1LCAxMjgsIDc2LCA2OSwgNjksIDc1LCAKKyAgICAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCA3MSwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIAorICAgIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIDc2LCA2OSwgNjUsIDE5OCwgNzYsIDY5LCA2NSwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDE5NiwgNzYsIDY4LCAKKyAgICA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgNzYsIDY3LCAxOTcsIDc2LCA2NSwgOTAsIDIxNywgCisgICAgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCA4OCwgMTI4LCA3NiwgNjUsIDg3LCAxMjgsIDc2LCAKKyAgICA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCA4NSwgNzUsIDY1LCAyMTgsIDc2LCA2NSwgODUsIAorICAgIDc0LCAxMjgsIDc2LCA2NSwgODUsIDcxLCA3MiwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgCisgICAgMTk3LCA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAKKyAgICAxOTcsIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIAorICAgIDIwMSwgNzYsIDY1LCA4MiwgNzEsIDY5LCA4MywgODQsIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgCisgICAgODIsIDcxLCA2OSwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCAKKyAgICA4MSwgMTI4LCA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIAorICAgIDg1LCA2NSwgNzEsIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3NywgCisgICAgODAsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCAKKyAgICA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIAorICAgIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgCisgICAgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAKKyAgICA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTAsIAorICAgIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDU2LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDE4NCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNzYsIAorICAgIDY1LCA3NSwgNDUsIDU0LCA0OSwgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OSwgMTgzLCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTQsIDQ4LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTMsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCAKKyAgICA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MCwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU2LCA1MSwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDU1LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTIsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTIsIDUyLCAxODUsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTcsIDQ4LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA1MSwgNTIsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA1MCwgNTQsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIAorICAgIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDQ4LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA0OCwgNTcsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA0OCwgNTYsIDE3NywgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NSwgCisgICAgMTg1LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU0LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OSwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUxLCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNDgsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNDgsIDUwLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCAKKyAgICA2NSwgNzYsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDczLCA3OCwgMTk5LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIAorICAgIDcyLCA4NSwgMTI4LCA3NiwgNjUsIDcyLCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgMTI4LCA3NiwgNjUsIDcxLCAyMTMsIAorICAgIDc2LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMjEwLCA3NiwgNjUsIDcxLCA2NSwgNjYsIDEyOCwgCisgICAgNzYsIDY1LCA3MSwgNjUsIDE5NCwgNzYsIDY1LCA2OSwgODYsIDEyOCwgNzYsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY4LCAKKyAgICAyMTcsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDc2LCA2NSwgNjcsIDY1LCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4NSwgODIsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDgyLCAxMjgsIDc2LCA2NSwgNjYsIDczLCA2NSwgNzYsIDczLCA5MCwgCisgICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDc2LCA2NSwgNjYsIDY5LCA3NiwgMTI4LCAKKyAgICA3NiwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgCisgICAgMTI4LCA3NiwgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgNzYsIDU0LCAxMjgsIDc2LCA1MiwgMTI4LCA3NiwgNTEsIDEyOCwgNzYsIDUwLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgCisgICAgMTI4LCA3NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCA0NSwgODMsIDcyLCAKKyAgICA2NSwgODAsIDY5LCAxOTYsIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgMTI4LCA3NSwgODksIAorICAgIDc5LCAxMjgsIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgNzUsIDg5LCA2OSwgCisgICAgMTI4LCA3NSwgODksIDY1LCA4NCwgNzIsIDc5LCAyMTEsIDc1LCA4OSwgNjUsIDY1LCAxMjgsIDc1LCA4OSwgNjUsIDEyOCwgCisgICAgNzUsIDg4LCA4NywgNzMsIDEyOCwgNzUsIDg4LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY5LCAxMjgsIDc1LCAKKyAgICA4OCwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgMTI4LCA3NSwgODgsIDg1LCAxMjgsIDc1LCA4OCwgNzksIAorICAgIDEyOCwgNzUsIDg4LCA3MywgMTI4LCA3NSwgODgsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDY5LCAxMjgsIDc1LCA4OCwgNjUsIAorICAgIDY1LCAxMjgsIDc1LCA4OCwgNjUsIDEyOCwgNzUsIDg3LCA4NiwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIAorICAgIDc1LCA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3NywgMTI4LCA3NSwgODcsIDczLCA3MywgCisgICAgMTI4LCA3NSwgODcsIDczLCAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NiwgCisgICAgMTI4LCA3NSwgODcsIDY1LCA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIDEyOCwgCisgICAgNzUsIDg2LCA2NSwgMTI4LCA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg2LCAxMjgsIDc1LCA4NSwgCisgICAgODUsIDcyLCAxMjgsIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCAKKyAgICA4NSwgNTAsIDEyOCwgNzUsIDg1LCA4MywgNzIsIDg1LCAxNzgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIAorICAgIDg1LCA5MCwgNjksIDczLCA4MiwgNzksIDEyOCwgNzUsIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgCisgICAgNjksIDEyOCwgNzUsIDg1LCA4MiwgMTI4LCA3NSwgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3NSwgODUsIDc5LCA4MCwgMTI4LCA3NSwgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgCisgICAgNzksIDEyOCwgNzUsIDg1LCA3OCwgNzEsIDEyOCwgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIAorICAgIDEyOCwgNzUsIDg1LCA3NiwgMTI4LCA3NSwgODUsIDIwNCwgNzUsIDg1LCA3MSwgMTI4LCA3NSwgODUsIDY5LCA4NCwgMTI4LCAKKyAgICA3NSwgODUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIDg2LCAxMjgsIDc1LCA4NSwgNjUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIAorICAgIDEyOCwgNzUsIDg1LCA1NSwgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIDUxLCAxMjgsIDc1LCAKKyAgICA4NSwgMTc5LCA3NSwgODQsIDEyOCwgNzUsIDgzLCA4MywgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDg1LCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDc5LCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgNzMsIDEyOCwgNzUsIAorICAgIDgzLCA4MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjksIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAxMjgsIDc1LCA4MywgCisgICAgODMsIDY1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDY1LCAxMjgsIDc1LCA4MywgODMsIDEyOCwgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIAorICAgIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCAKKyAgICA3OCwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIAorICAgIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgCisgICAgODAsIDg1LCAxMjgsIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgCisgICAgNzUsIDgwLCA3MywgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCAKKyAgICA2OSwgMTI4LCA3NSwgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIAorICAgIDcyLCAxMjgsIDc1LCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIDEyOCwgNzUsIAorICAgIDc5LCA4NiwgMTI4LCA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAKKyAgICAxOTUsIDc1LCA3OSwgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgwLCAxMjgsIDc1LCA3OSwgNzksIDg2LCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgCisgICAgODUsIDg1LCA4NCwgMTI4LCA3NSwgNzksIDc5LCA2NiwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCAKKyAgICA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIAorICAgIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgCisgICAgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgNjksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgCisgICAgNzksIDIwMywgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgCisgICAgNzksIDc3LCAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAKKyAgICAxMjgsIDc1LCA3OSwgNjUsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDc1LCA3OCwgODUsIAorICAgIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDc1LCA3OCwgNzksIDY2LCA4MywgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAKKyAgICAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIAorICAgIDE5NywgNzUsIDc3LCAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIAorICAgIDc3LCA2NSwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIAorICAgIDc1LCA4NSwgMTI4LCA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIAorICAgIDc1LCA2OSwgMTI4LCA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIAorICAgIDY5LCA3OSwgNzUsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgCisgICAgMTI4LCA3NSwgNzMsIDg3LCA3MywgNzAsIDgyLCA4NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODcsIDEyOCwgNzUsIDczLCAKKyAgICA4NiwgMTI4LCA3NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODMsIDgzLCA3MywgNzgsIDE5OSwgNzUsIDczLCA4MywgODMsIAorICAgIDEyOCwgNzUsIDczLCA4MywgMjExLCA3NSwgNzMsIDgzLCA3MywgNzcsIDUzLCAxMjgsIDc1LCA3MywgODMsIDczLCA3NywgCisgICAgMTgxLCA3NSwgNzMsIDgzLCA3MiwgMTI4LCA3NSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzUsIDczLCA4MiwgNzksIDg3LCAKKyAgICA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzUsIAorICAgIDczLCA4MiwgNzksIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIDEyOCwgNzUsIDczLCA4MiwgCisgICAgNzEsIDcyLCA3MywgMjE4LCA3NSwgNzMsIDgxLCAxMjgsIDc1LCA3MywgODAsIDEyOCwgNzUsIDczLCAyMDgsIDc1LCA3MywgCisgICAgNzgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc1LCA3MywgNzgsIDY4LCA2OSwgODIsIDcxLCA2NSwgODIsIDg0LCA2OSwgNzgsIAorICAgIDEyOCwgNzUsIDczLCA3NywgNzksIDc4LCA3OSwgMTI4LCA3NSwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDc1LCA3MywgCisgICAgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4NiwgNjUsIDIwNiwgCisgICAgNzUsIDczLCA2OSwgODAsIDEyOCwgNzUsIDczLCA2OSwgNjksIDc3LCAxMjgsIDc1LCA3MywgNjksIDEyOCwgNzUsIDczLCAKKyAgICA2OCwgMTI4LCA3NSwgNzMsIDE5NiwgNzUsIDczLCA2NywgNzUsIDEyOCwgNzUsIDczLCA2NiwgMTI4LCA3NSwgNzMsIDY1LCAKKyAgICA4NiwgMTI4LCA3NSwgNzMsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCAKKyAgICA3NSwgNzIsIDg1LCA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjgsIAorICAgIDY1LCA4NywgNjUsIDY4LCAyMDEsIDc1LCA3MiwgODUsIDY4LCA2NSwgNzcsIDEyOCwgNzUsIDcyLCA4NSwgNjUsIDg0LCAKKyAgICAxMjgsIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCA3OSwgNzgsIDEyOCwgNzUsIDcyLCAKKyAgICA3OSwgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA3NCwgNzUsIDIwMSwgNzUsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIAorICAgIDIwNywgNzUsIDcyLCA3NywgMjEzLCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgNzIsIDczLCA3OCwgODksIDY1LCAxMjgsIAorICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgNzIsIDIwMSwgNzUsIDcyLCA3MiwgCisgICAgNzksIDEyOCwgNzUsIDcyLCA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAKKyAgICAxMjgsIDc1LCA3MiwgNjksIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODYsIDEyOCwgNzUsIDcyLCAKKyAgICA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgNzIsIDY1LCA4MiwgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIAorICAgIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIDcyLCA2NSwgNzgsIDY4LCAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIAorICAgIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgNzIsIDY1LCA3NSwgNjUsIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgCisgICAgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjYsIDEyOCwgCisgICAgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgODksIDY3LCA2NSwgODAsIDEyOCwgNzUsIDY5LCAKKyAgICA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3NSwgNjksIDg5LCA2NiwgNzksIAorICAgIDY1LCA4MiwgMTk2LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA4NSwgODksIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODAsIDg1LCA4MSwgMTI4LCA3NSwgNjksIDg1LCA3OSwgMjEyLCA3NSwgNjksIAorICAgIDg1LCA3NywgMTI4LCA3NSwgNjksIDg1LCA3NSwgNjksIDg1LCA4NCwgNzgsIDY4LCA2NSwgMTI4LCA3NSwgNjksIDg1LCA3NSwgCisgICAgNjUsIDgxLCAxMjgsIDc1LCA2OSwgODUsIDY1LCA2OSwgODQsIDc3LCA2OSwgODUsIDc4LCAxMjgsIDc1LCA2OSwgODUsIDY1LCAKKyAgICA2OSwgODIsIDczLCAxMjgsIDc1LCA2OSwgODQsIDg0LCAyMDEsIDc1LCA2OSwgODMsIDcyLCA1MCwgMTI4LCA3NSwgNjksIAorICAgIDgyLCA2OSwgODQsIDEyOCwgNzUsIDY5LCA3OSwgODcsIDEyOCwgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDE5MywgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgMTkzLCAKKyAgICA3NSwgNjksIDc4LCA2NSwgODQsIDEyOCwgNzUsIDY5LCA3OCwgMTI4LCA3NSwgNjksIDIwNiwgNzUsIDY5LCA3NywgODAsIAorICAgIDg1LCA3NiwgMTI4LCA3NSwgNjksIDc3LCA4MCwgODUsIDIwNCwgNzUsIDY5LCA3NywgODAsIDc2LCA3MywgMTI4LCA3NSwgCisgICAgNjksIDc3LCA4MCwgNzYsIDIwMSwgNzUsIDY5LCA3NywgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc3LCAKKyAgICA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc2LCA4NiwgNzMsIDIwNiwgNzUsIDY5LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDc1LCA2OSwgNzIsIDY5LCAyMDAsIDc1LCA2OSwgNzIsIDEyOCwgNzUsIDY5LCA3MCwgODUsIDc2LCA2NSwgMTI4LCA3NSwgCisgICAgNjksIDY5LCA4NiwgMTI4LCA3NSwgNjksIDY5LCA4MywgODUsIDEyOCwgNzUsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCAKKyAgICA3NSwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCA2NiwgMTI4LCA3NSwgNjksIAorICAgIDY1LCA2NSwgNjksIDEyOCwgNzUsIDY3LCA2NSwgNzYsIDEyOCwgNzUsIDY2LCAxMjgsIDc1LCA2NSwgOTAsIDY1LCA3NSwgCisgICAgMjAwLCA3NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg5LCA2NSwgMjAwLCA3NSwgNjUsIDg4LCAKKyAgICAxMjgsIDc1LCA2NSwgODcsIDg2LCAxMjgsIDc1LCA2NSwgODcsIDczLCAxMjgsIDc1LCA2NSwgODcsIDY2LCAxMjgsIDc1LCAKKyAgICA2NSwgODYsIDg5LCA3NSwgNjUsIDEyOCwgNzUsIDY1LCA4NiwgMTI4LCA3NSwgNjUsIDg1LCA4NiwgMTI4LCA3NSwgNjUsIAorICAgIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgMjA2LCA3NSwgNjUsIDg1LCA2NiwgMTI4LCA3NSwgNjUsIDg0LCA3OSwgCisgICAgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNzMsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDY1LCA3NSwgMTkzLCAKKyAgICA3NSwgNjUsIDg0LCA2NSwgODYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA2NSwgODQsIDY1LCA4NiwgMTkzLCA3NSwgNjUsIAorICAgIDg0LCA2NSwgNzUsIDY1LCA3OCwgNjUsIDQ1LCA3MiwgNzMsIDgyLCA2NSwgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDgzLCAKKyAgICA4MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDIwNiwgNzUsIDY1LCA4MywgODIsIAorICAgIDY1LCAxMjgsIDc1LCA2NSwgODMsIDgyLCAxOTMsIDc1LCA2NSwgODMsIDc1LCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MywgCisgICAgNzUsIDY1LCAyMDQsIDc1LCA2NSwgODMsIDcyLCA3NywgNzMsIDgyLCAyMDEsIDc1LCA2NSwgODIsIDgzLCA3MiwgNjUsIDc4LCAKKyAgICA2NSwgMTI4LCA3NSwgNjUsIDgyLCA3OSwgODIsIDczLCA3MywgMTI4LCA3NSwgNjUsIDgyLCAyMDcsIDc1LCA2NSwgODIsIAorICAgIDY5LCAyMDYsIDc1LCA2NSwgODIsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODIsIDY1LCA3OCwgMTI4LCA3NSwgCisgICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAorICAgIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDg5LCAKKyAgICA2OSwgNzksIDg1LCA3OCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgCisgICAgODUsIDc4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA2NSwgODAsIDgwLCAKKyAgICAxOTMsIDc1LCA2NSwgODAsIDc5LCAxMjgsIDc1LCA2NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDY1LCA3NiwgMTI4LCAKKyAgICA3NSwgNjUsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDIwOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA3NSwgNjUsIAorICAgIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCA3OCwgCisgICAgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIDc3LCAKKyAgICAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgNzUsIAorICAgIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg2LCAxMjgsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgNjUsIAorICAgIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgNjYsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgNzUsIAorICAgIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgNzUsIAorICAgIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAxNzksIAorICAgIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAxMjgsIAorICAgIDc1LCA2NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3NSwgCisgICAgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgNjUsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDEyOCwgNzUsIDY1LCAKKyAgICA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIDQ4LCAKKyAgICA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgNTEsIAorICAgIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgODUsIAorICAgIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgODksIAorICAgIDEyOCwgNzQsIDg1LCA3MSwgNzEsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDc0LCA4NSwgNjksIDg1LCA3MywgMTI4LCA3NCwgCisgICAgODUsIDY4LCA4NSwgNzYsIDEyOCwgNzQsIDg1LCA2OCwgNzEsIDY5LCAxMjgsIDc0LCA4NSwgNjgsIDY5LCA3OSwgNDUsIDgzLCAKKyAgICA4MCwgNjUsIDc4LCA3MywgODMsIDIwMCwgNzQsIDc5LCA4OSwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc0LCA3OSwgODksIAorICAgIDc5LCA4NSwgMjExLCA3NCwgNzksIDg5LCAxMjgsIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgMjEyLCA3NCwgNzksIAorICAgIDc4LCA3MSwgMTI4LCA3NCwgNzksIDc4LCAxOTMsIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgNzksIDczLCA3OCwgCisgICAgODQsIDgzLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDEyOCwgNzQsIDc5LCAKKyAgICA2NSwgMTI4LCA3NCwgNzQsIDg5LCA4OCwgMTI4LCA3NCwgNzQsIDg5LCA4NCwgMTI4LCA3NCwgNzQsIDg5LCA4MCwgMTI4LCAKKyAgICA3NCwgNzQsIDg5LCAxMjgsIDc0LCA3NCwgODUsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA3NCwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgMTI4LCA3NCwgNzQsIDg1LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCAxMjgsIDc0LCA3NCwgODUsIDEyOCwgCisgICAgNzQsIDc0LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA3OSwgODQsIDEyOCwgNzQsIDc0LCA3OSwgODAsIDEyOCwgNzQsIDc0LCAKKyAgICA3OSwgMTI4LCA3NCwgNzQsIDczLCA4OCwgMTI4LCA3NCwgNzQsIDczLCA4NCwgMTI4LCA3NCwgNzQsIDczLCA4MCwgMTI4LCAKKyAgICA3NCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3NCwgNzQsIDczLCA2OSwgMTI4LCA3NCwgNzQsIDczLCAxMjgsIDc0LCA3NCwgNjksIDY5LCAxMjgsIDc0LCA3NCwgCisgICAgNjksIDEyOCwgNzQsIDc0LCA2NSwgMTI4LCA3NCwgNzMsIDc2LCAxMjgsIDc0LCA3MywgNzMsIDc3LCAxMjgsIDc0LCA3MywgCisgICAgNzMsIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc0LCA3MywgNjUsIAorICAgIDEyOCwgNzQsIDcyLCA3OSwgODgsIDEyOCwgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCA3MiwgMTI4LCA3NCwgNzIsIAorICAgIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc3LCAxMjgsIDc0LCA3MiwgCisgICAgNjUsIDY1LCAxMjgsIDc0LCA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCAKKyAgICA3NiwgNjksIDc3LCAxMjgsIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIAorICAgIDEyOCwgNzQsIDY5LCA3MiwgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIAorICAgIDY5LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIDc4LCAxMjgsIDc0LCA2NSwgCisgICAgODksIDczLCA3OCwgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NCwgNjUsIDg3LCAxMjgsIDc0LCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIAorICAgIDg1LCAxMjgsIDc0LCA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCA4MCwgCisgICAgNjUsIDc4LCAxMjgsIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDc0LCA2NSwgNzYsIDc2LCA2NSwgNzQsIDY1LCAKKyAgICA3NiwgNjUsIDc2LCA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIDY1LCA3MywgMjA2LCA3NCwgNjUsIDczLCAxMjgsIAorICAgIDc0LCA2NSwgNzIsIDEyOCwgNzQsIDY1LCA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDgzLCAxMjgsIDc0LCA2NSwgCisgICAgNjcsIDc1LCA0NSwgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCAKKyAgICA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgCisgICAgMTI4LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCAKKyAgICA2NSwgODksIDE5MywgNzMsIDg5LCA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIAorICAgIDc0LCA2NSwgMTI4LCA3MywgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgCisgICAgNjksIDc3LCAxMjgsIDczLCA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgODMsIDY3LCA2OSwgNzYsIDY5LCAKKyAgICAyMTEsIDczLCA4MywgNzksIDc4LCAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIAorICAgIDEyOCwgNzMsIDgzLCA3NiwgNjUsIDc4LCA2OCwgMTI4LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAKKyAgICAxMjgsIDczLCA4MywgNjUsIDc1LCA3MywgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIAorICAgIDgyLCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgNzMsIDgyLCA3OSwgNzgsIDQ1LCA2NywgNzksIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDgyLCAKKyAgICA2NiwgMTI4LCA3MywgNzksIDg0LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIAorICAgIDczLCA3OSwgODQsIDY1LCAxMjgsIDczLCA3OSwgODQsIDE5MywgNzMsIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgCisgICAgNjUsIDY4LCA3MiwgMTI4LCA3MywgNzgsIDg2LCA3MywgODMsIDczLCA2NiwgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNjksIDY4LCAxMjgsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIAorICAgIDE5NywgNzMsIDc4LCA4NCwgODIsIDc5LCA2OCwgODUsIDY3LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA4NCwgNzMsIDEyOCwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgMTk1LCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCAKKyAgICAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODAsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgyLCA3NiwgNzksIDY3LCA3NSwgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNjUsIDY3LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDczLCA3OSwgMjEwLCAKKyAgICA3MywgNzgsIDg0LCA2OSwgODIsIDY5LCA4MywgMjEyLCA3MywgNzgsIDg0LCA2OSwgODIsIDY3LCA2NSwgNzYsIDY1LCA4NCwgCisgICAgNjksIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCAKKyAgICA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA3NiwgMTI4LCA3MywgNzgsIAorICAgIDg0LCA2OSwgNzEsIDgyLCA2NSwgMjA0LCA3MywgNzgsIDgzLCA4NSwgNzYsIDY1LCAyMTAsIDczLCA3OCwgODMsIDg0LCA4MiwgCisgICAgODUsIDc3LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA3MywgNzgsIDgzLCA3MywgNjgsIDY5LCAxMjgsIDczLCA3OCwgODMsIDczLCAKKyAgICA2OCwgMTk3LCA3MywgNzgsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4MywgNjksIDY3LCA4NCwgCisgICAgMTI4LCA3MywgNzgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDczLCA3OCwgODAsIDg1LCAKKyAgICAyMTIsIDczLCA3OCwgNzgsIDc5LCA2NywgNjksIDc4LCA2NywgNjksIDEyOCwgNzMsIDc4LCA3OCwgNzgsIDEyOCwgNzMsIAorICAgIDc4LCA3OCwgNjksIDgyLCAxMjgsIDczLCA3OCwgNzgsIDY5LCAyMTAsIDczLCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3MywgCisgICAgNzgsIDcxLCA4NSwgMTI4LCA3MywgNzgsIDczLCAxMjgsIDczLCA3OCwgNzIsIDczLCA2NiwgNzMsIDIxMiwgNzMsIDc4LCAKKyAgICA3MiwgNjksIDgyLCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA3MywgNzgsIDcxLCA4NywgNjUsIAorICAgIDkwLCAxMjgsIDczLCA3OCwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgNzAsIDc2LCA4NSwgCisgICAgNjksIDc4LCA2NywgNjksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIDg5LCAxMjgsIDczLCA3OCwgNzAsIDczLCAKKyAgICA3OCwgNzMsIDg0LCAyMTcsIDczLCA3OCwgNjgsIDg1LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc4LCA2OCwgNzMsIAorICAgIDgyLCA2OSwgNjcsIDIxMiwgNzMsIDc4LCA2OCwgNzMsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgNjgsIDczLCA2NywgCisgICAgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAKKyAgICAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgMjA2LCA3MywgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIAorICAgIDgwLCA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA2NywgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgCisgICAgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCAKKyAgICA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDE5NywgNzMsIAorICAgIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCA2OCwgNzMsIDc4LCAxOTksIDczLCA3OCwgCisgICAgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIDgwLCAxMjgsIDczLCA3OCwgNDUsIDY1LCAKKyAgICA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIAorICAgIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDY1LCAxMjgsIDczLCA3NywgCisgICAgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAKKyAgICAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCAKKyAgICA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgCisgICAgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCAKKyAgICA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCAKKyAgICA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIAorICAgIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgCisgICAgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgCisgICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCAKKyAgICA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgCisgICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgCisgICAgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIAorICAgIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTcsIDQ5LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3OSwgNzgsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDg1LCAKKyAgICAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIAorICAgIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCAKKyAgICA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIAorICAgIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgCisgICAgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCAKKyAgICA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIAorICAgIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCAKKyAgICA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIAorICAgIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgCisgICAgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgCisgICAgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAKKyAgICAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCAKKyAgICA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCAKKyAgICA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIAorICAgIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIAorICAgIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OSwgNzEsIDczLCA2OSwgNzMsIDY1LCAKKyAgICAxMjgsIDcyLCA4OCwgODcsIDcxLCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIAorICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIAorICAgIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgCisgICAgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAKKyAgICAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIAorICAgIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIAorICAgIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIAorICAgIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg3LCA2NSwgCisgICAgNzIsIDEyOCwgNzIsIDg1LCA4NiwgNjUsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODMsIDcyLCAKKyAgICAxMjgsIDcyLCA4NSwgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIAorICAgIDY5LCA2OCwgODMsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDIxMSwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgCisgICAgNjgsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgMTk2LCA3MiwgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDIwOCwgCisgICAgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCAKKyAgICA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgNzIsIDg1LCA3MSwgNzEsIDczLCA3OCwgMTk5LCA3MiwgODUsIDY2LCA1MCwgCisgICAgMTI4LCA3MiwgODUsIDY2LCAxNzgsIDcyLCA4NSwgNjYsIDEyOCwgNzIsIDg1LCA2NSwgODIsIDY1LCA2OCwgNjgsIDc5LCAKKyAgICAxMjgsIDcyLCA4NSwgNjUsIDc4LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCAKKyAgICA4NiwgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCAKKyAgICA3OSwgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIAorICAgIDcxLCA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgCisgICAgNjksIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIDE5NywgNzIsIDc5LCA4MiwgODIsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCisgICAgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIAorICAgIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCAKKyAgICA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIAorICAgIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAyMDQsIDcyLCA3OSwgODIsIDczLCAxMjgsIDcyLCA3OSwgODIsIDE5MywgNzIsIAorICAgIDc5LCA3OSwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgwLCAxMjgsIDcyLCA3OSwgCisgICAgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgNjgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDcyLCAKKyAgICA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCA2OSwgMjE3LCA3MiwgNzksIDc3LCA3OSwgODQsIAorICAgIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgCisgICAgNzYsIDc5LCAxMjgsIDcyLCA3OSwgNzYsIDc2LCA3OSwgMjE1LCA3MiwgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCAKKyAgICA2OCwgNzMsIDc4LCAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIAorICAgIDc1LCA2NSwgMTI4LCA3MiwgNzksIDY3LCA3NSwgNjksIDIxNywgNzIsIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgCisgICAgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDg1LCAKKyAgICA2NiwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCAKKyAgICA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgCisgICAgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAKKyAgICAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgNzIsIDc4LCA2NSwgODUsIDEyOCwgNzIsIDc4LCAKKyAgICA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCAKKyAgICA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIAorICAgIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCAKKyAgICA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIAorICAgIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIAorICAgIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgCisgICAgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgCisgICAgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCAKKyAgICA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIAorICAgIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIAorICAgIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAKKyAgICAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCAKKyAgICA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIAorICAgIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgCisgICAgODgsIDEyOCwgNzIsIDc2LCA2NSwgODUsIDEyOCwgNzIsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgCisgICAgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzYsIDEyOCwgNzIsIDc1LCAxMjgsIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgCisgICAgODksIDc5LCAxMjgsIDcyLCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIAorICAgIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNzIsIDczLCA3OCwgCisgICAgNzEsIDY5LCAxOTYsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAKKyAgICAxOTYsIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIAorICAgIDcxLCA3MiwgNDUsIDc2LCA3OSwgMjE1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgCisgICAgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIAorICAgIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAKKyAgICAxOTksIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIAorICAgIDY3LCA4NSwgODMsIDEyOCwgNzIsIDczLCA0NSwgODIsIDY5LCA4MywgMTI4LCA3MiwgNzIsIDg3LCA2NSwgMTI4LCA3MiwgCisgICAgNzIsIDg1LCAxMjgsIDcyLCA3MiwgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNzIsIDcyLCA2OSwgMTI4LCA3MiwgCisgICAgNzIsIDY1LCA2NSwgMTI4LCA3MiwgNzEsIDEyOCwgNzIsIDY5LCA4OSwgODQsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCAKKyAgICA3OSwgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIAogICAgIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCA4NSwgMTI4LCA3MiwgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgCiAgICAgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDczLCA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCAKICAgICA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgODIsIDY5LCAxMjgsIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIApAQCAtMzc1MCw0MjkgKzM3NzksNDM4IEBACiAgICAgNDUsIDY5LCA4NiwgNzMsIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCAKICAgICA2NSwgNjgsIDgzLCA4NCwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIAogICAgIDY5LCA2NSwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNzIsIDY5LCA2NSwgNjgsIDQ1LCA2NiwgNjUsIDc4LCA2OCwgNjUsIDcxLCAKLSAgICA2OSwgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIDY1LCA4MywgMTkzLCA3MiwgNjYsIDY1LCA4MywgCi0gICAgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgNjUsIDg3LCA3NCwgMTI4LCA3MiwgNjUsIDg2LCAKLSAgICA2OSwgMTI4LCA3MiwgNjUsIDg1LCA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzIsIDY1LCAyMTMsIAotICAgIDcyLCA2NSwgODQsIDgyLCA2NSwgMjA2LCA3MiwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgNzIsIDY1LCA4NCwgNjksIDEyOCwgCi0gICAgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgNjUsIDE5OCwgNzIsIDY1LCA4MywgNjksIAotICAgIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgNzgsIDEyOCwgCi0gICAgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNjcsIDEyOCwgNzIsIDY1LCAKLSAgICA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcyLCA2NSwgODIsIAotICAgIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCA3OSwgMjA3LCA3MiwgNjUsIDc4LCA3MSwgCi0gICAgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDIxMSwgNzIsIDY1LCAKLSAgICA3OCwgNjgsIDc2LCA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIAotICAgIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDc5LCA4NiwgNjUsIDc2LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgCi0gICAgNzksIDg2LCA2NSwgMjA0LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAKLSAgICA0NSwgNzIsIDc5LCA3OSwgMjAzLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNjUsIAotICAgIDc4LCA2OCwgNDUsIDcyLCA3MywgNzgsIDcxLCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDc2LCA2NSwgODQsIDEyOCwgCi0gICAgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCAyMTIsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgODQsIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIDY3LCA4NSwgNjksIDEyOCwgNzIsIDY1LCA3OCwgCi0gICAgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIDY3LCA4NSwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODAsIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDIwOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCA4NywgCi0gICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDIxNSwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCAKLSAgICA2NywgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzgsIAotICAgIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDE5NywgCi0gICAgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAKLSAgICA2NSwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgMTkzLCA3MiwgNjUsIDc3LCA4MywgODQsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIAotICAgIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIDcxLCA2OSwgCi0gICAgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgNzYsIDc5LCAxMjgsIDcyLCA2NSwgNzYsIDcwLCAKLSAgICA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIAotICAgIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgCi0gICAgNjUsIDczLCAyMTEsIDcyLCA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCAKLSAgICA2NSwgNzEsIDc2LCA2NSwgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgCi0gICAgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCAKLSAgICA4NSwgMTI4LCA3MiwgNjUsIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA3MiwgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgCi0gICAgMTI4LCA3MiwgNDgsIDQ4LCA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgCi0gICAgNzEsIDg5LCA4NSwgMTI4LCA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgCi0gICAgNzEsIDg5LCA3MCwgMjEzLCA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCAKLSAgICA2NSwgMTI4LCA3MSwgODksIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgCi0gICAgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAKLSAgICAxMjgsIDcxLCA4NiwgNjUsIDc4LCA3MSwgMTI4LCA3MSwgODYsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCAKLSAgICA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgNzIsIDIwMSwgNzEsIDg1LCA4MiwgNjUsIAotICAgIDc3LCA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgCi0gICAgODUsIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCA4NSwgNzQsIDY1LCA4MiwgNjUsIDg0LCAKLSAgICAyMDEsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIDg1LCAxOTksIDcxLCA4NSwgNjksIDczLCAxMjgsIDcxLCAKLSAgICA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgMTI4LCA3MSwgODUsIDE5NiwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCA2OCwgNzgsIDY5LCA4MywgCi0gICAgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDEyOCwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIDcxLCA4NCwgNjksIDIxMCwgNzEsIDgzLCAKLSAgICA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCAKLSAgICA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgNzIsIDczLCA4MywgNzcsIDY1LCA4NCwgCi0gICAgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3MywgNzcsIDY1LCA2NywgNzMsIDc4LCAKLSAgICAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIDY5LCA2OSwgMjA2LCA3MSwgODIsIAotICAgIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCAKLSAgICA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDcxLCA4MiwgNjksIAotICAgIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgODYsIDY5LCA4OSwgNjUsIDgyLCAKLSAgICAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDgyLCA2NSwgODYsIAotICAgIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAKLSAgICAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjUsIAotICAgIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgzLCAyMDgsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAxOTcsIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzgsIDg0LCA3MiwgMTkzLCA3MSwgODIsIDY1LCA3NywgNzcsIAotICAgIDE5MywgNzEsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgNzYsIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCAKLSAgICAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIDc1LCA3OSwgMjA2LCA3MSwgNzksIAotICAgIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgCi0gICAgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCAKLSAgICA4MiwgNzEsIDczLCAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIAotICAgIDEyOCwgNzEsIDc5LCA3NiwgNzAsIDY5LCA4MiwgMTI4LCA3MSwgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIAotICAgIDcxLCA3OSwgNzMsIDc4LCAxOTksIDcxLCA3OSwgNjYsIDc2LCA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgCi0gICAgNzEsIDc5LCA2NSwgMjA0LCA3MSwgNzksIDY1LCAxMjgsIDcxLCA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCAKLSAgICA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDcxLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODQsIAotICAgIDg0LCA2NSwgMjA0LCA3MSwgNzYsIDc5LCA2NiwgMTk3LCA3MSwgNzYsIDczLCA4MywgODMsIDY1LCA3OCwgNjgsIDIwNywgCi0gICAgNzEsIDc2LCA2OSwgNzMsIDY3LCAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCAxMjgsIDcxLCA3NiwgNjUsIAotICAgIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgODQsIDEyOCwgNzEsIDczLCA4MywgNzIsIAotICAgIDEyOCwgNzEsIDczLCA4MywgMjAwLCA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzEsIDczLCA4MiwgODUsIDY4LCA2NSwgCi0gICAgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIDIxMSwgNzEsIDczLCA4MiwgNzYsIDEyOCwgNzEsIDczLCA4MiwgNTEsIDEyOCwgCi0gICAgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIDgyLCAxNzgsIDcxLCA3MywgODAsIDEyOCwgCi0gICAgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzMsIDc3LCA2OSwgMjA0LCAKLSAgICA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgNzEsIDEyOCwgNzEsIDczLCA2OSwgODQsIAotICAgIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgCi0gICAgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgCi0gICAgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAKLSAgICAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCAKLSAgICA3MiwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDcyLCA3MywgMTI4LCA3MSwgNzIsIDcyLCA2NSwgMTI4LCA3MSwgNzIsIAotICAgIDY5LCA4OSwgODMsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3OCwgMTI4LCA3MSwgCi0gICAgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIAotICAgIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgCi0gICAgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCA2OSwgMTI4LCAKLSAgICA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgODIsIAotICAgIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3NywgCi0gICAgNzcsIDY1LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCA4NSwgMTI4LCAKLSAgICA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgNjgsIDEyOCwgNzEsIAotICAgIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIDEyOCwgCi0gICAgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgMTI4LCAKLSAgICA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgNzEsIDg1LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgNzEsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgCi0gICAgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIDcxLCAKLSAgICA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgODQsIDEyOCwgNzEsIDcxLCA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgODgsIAotICAgIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgNzEsIDcxLCA3MywgNjksIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCA3MSwgNzEsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCA3MSwgCi0gICAgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDY1LCA4OCwgMTI4LCA3MSwgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNjksIDg0LCAKLSAgICAxOTMsIDcxLCA2OSwgODMsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgNjksIAotICAgIDgzLCA3MiwgODQsIDczLCA3OCwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCA1MCwgCi0gICAgMTI4LCA3MSwgNjksIDgyLCA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgMjA2LCAKLSAgICA3MSwgNjksIDgyLCA2OSwgODMsIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCA3NywgNjksIAotICAgIDg0LCA4MiwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA3MSwgCi0gICAgNjksIDc4LCA4NCwgNzYsIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCA2OSwgNzgsIDczLCAKLSAgICA3NSwgMjAxLCA3MSwgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIDEyOCwgNzEsIAotICAgIDY5LCA3NywgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OSwgNzcsIDEyOCwgCi0gICAgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgMTI4LCA3MSwgNjksIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCAKLSAgICA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgNzEsIDY5LCA2NSwgMjEwLCA3MSwgNjksIDUwLCA1MCwgMTI4LCAKLSAgICA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIDcxLCA2NiwgNzksIAotICAgIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNjYsIDY5LCA4NCwgCi0gICAgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCA2OSwgNzgsIAotICAgIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgMTI4LCA3MSwgCi0gICAgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAxMjgsIDcxLCA2NSwgODUsIDc4LCA4NCwgNzYsIDY5LCAKLSAgICA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIAotICAgIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgNjUsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA2NSwgCi0gICAgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNzcsIDY5LCAKLSAgICA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA1MSwgMTI4LCA3MSwgNjUsIAotICAgIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgNzgsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA3MSwgCi0gICAgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCA2NSwgNzgsIDUwLCAxMjgsIDcxLCA2NSwgNzgsIDE3OCwgCi0gICAgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgMTI4LCAKLSAgICA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIDcxLCA2NSwgNzcsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIAotICAgIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgNzEsIDY1LCA3MSwgMTI4LCA3MSwgNjUsIDcwLCAxMjgsIAotICAgIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCA2NSwgCi0gICAgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCA2NSwgMTI4LCA3MSwgCi0gICAgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCA1MywgNTIsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIDEyOCwgNzEsIDQ4LCAKLSAgICA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIDQ4LCA1MiwgNTUsIAotICAgIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAxMjgsIAotICAgIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgMTI4LCA3MSwgCi0gICAgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCA3MSwgNDgsIDUxLCAKLSAgICA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIAotICAgIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAxMjgsIDcxLCA0OCwgCi0gICAgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCA0OCwgNTAsIDU2LCAKLSAgICAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgMTI4LCAKLSAgICA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgMTI4LCA3MSwgNDgsIAotICAgIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgCi0gICAgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCA0OSwgNTUsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDcxLCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIDUzLCAxMjgsIDcxLCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIDcxLCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIDcwLCA4OSwgNjUsIAotICAgIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIDcwLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg2LCA4MywgNTEsIDEyOCwgNzAsIDg2LCA4MywgNTAsIDEyOCwgNzAsIAotICAgIDg2LCA4MywgNDksIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCA3MCwgODUsIDg0LCAxMjgsIDcwLCA4NSwgODMsIDY5LCAxMjgsIAotICAgIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIDEyOCwgNzAsIDg1LCA4MCwgMTI4LCA3MCwgODUsIDc4LCA2OSwgCi0gICAgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDcwLCA4NSwgNzYsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIAotICAgIDcwLCA4NSwgNzQsIDczLCAxMjgsIDcwLCA4NSwgNjksIDg0LCAxMjgsIDcwLCA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgCi0gICAgMTI4LCA3MCwgODUsIDY1LCAxMjgsIDcwLCA4NCwgNzIsIDc5LCA4MiwgMTkzLCA3MCwgODMsIDczLCAxMjgsIDcwLCA4MiwgCi0gICAgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAKLSAgICA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDIwNiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIAotICAgIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA3OCwgCi0gICAgMjEyLCA3MCwgODIsIDc5LCAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgCi0gICAgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCAKLSAgICA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIAotICAgIDgyLCA2OSwgNzgsIDY3LCAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgCi0gICAgNzgsIDc1LCAyMTEsIDcwLCA4MiwgNjUsIDc4LCAxOTUsIDcwLCA4MiwgNjUsIDc3LCA2OSwgODMsIDEyOCwgNzAsIDgyLCAKLSAgICA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDc3LCAxOTcsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgCi0gICAgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgCi0gICAgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCAKLSAgICA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgCi0gICAgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCAKLSAgICA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3MCwgNzksIAotICAgIDgzLCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA3OSwgCi0gICAgODIsIDg3LCA2NSwgODIsIDE5NiwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCAKLSAgICA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NywgNjUsIDIxMiwgNzAsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDcwLCA3OSwgCi0gICAgODIsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAKLSAgICAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIAotICAgIDc5LCA4NCwgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCA4NCwgNzgsIDc5LCA4NCwgMTk3LCA3MCwgCi0gICAgNzksIDc5LCA4NCwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCA3OSwgNzYsIAotICAgIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIDc4LCAyMTIsIDcwLCA3OSwgNzgsIAotICAgIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDg5LCAxMjgsIDcwLCA3OSwgCi0gICAgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCA4MiwgMTI4LCA3MCwgNzksIDc2LCAKLSAgICA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3OSwgNzEsIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAKLSAgICAxMjgsIDcwLCA3NiwgODksIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIAotICAgIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgCi0gICAgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCAKLSAgICA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCA4MywgMTI4LCA3MCwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzAsIDc2LCA3OSwgODUsIAotICAgIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgCi0gICAgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCA4MiwgMTI4LCA3MCwgNzYsIDc5LCAKLSAgICA3OSwgMjEwLCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3NiwgNzMsIAotICAgIDY3LCAyMDMsIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgCi0gICAgNjksIDg4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNzksIDc4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCAKLSAgICA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIAotICAgIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4MywgNzIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDgzLCAKLSAgICAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MiwgMTI4LCA3MCwgNzYsIAotICAgIDY1LCA3MSwgNDUsIDUxLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTAsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA0OSwgCi0gICAgMTI4LCA3MCwgNzYsIDY1LCA3MSwgMTI4LCA3MCwgNzYsIDY1LCAxOTksIDcwLCA3NiwgNjUsIDEyOCwgNzAsIDc2LCAxMjgsIAotICAgIDcwLCA3MywgODgsIDY5LCA2OCwgNDUsIDcwLCA3OSwgODIsIDIwNSwgNzAsIDczLCA4OCwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCAKLSAgICA3MywgODYsIDE5NywgNzAsIDczLCA4NCwgOTAsIDgwLCA2NSwgODQsIDgyLCA3MywgNjcsIDIwMywgNzAsIDczLCA4NCwgNjUsIAotICAgIDEyOCwgNzAsIDczLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA4NCwgNjksIDE5NiwgNzAsIDczLCA4MywgNzIsIDczLCA3OCwgCi0gICAgMTk5LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIAotICAgIDIwMywgNzAsIDczLCA4MywgNzIsIDY5LCA4OSwgNjksIDEyOCwgNzAsIDczLCA4MywgNzIsIDEyOCwgNzAsIDczLCA4MywgCi0gICAgMjAwLCA3MCwgNzMsIDgyLCA4MywgMjEyLCA3MCwgNzMsIDgyLCA3MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCAKLSAgICA4MiwgNzUsIDgzLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCAyMDMsIDcwLCA3MywgODIsIDY5LCAxMjgsIAotICAgIDcwLCA3MywgODIsIDE5NywgNzAsIDczLCA4MCwgMTI4LCA3MCwgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgCi0gICAgNzEsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMjExLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKLSAgICA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNzEsIAotICAgIDY5LCA4MiwgNDUsIDgwLCA3OSwgODMsIDIxMiwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc4LCA3MSwgCi0gICAgNjksIDIxMCwgNzAsIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc4LCA2NSwgNzYsIAotICAgIDEyOCwgNzAsIDczLCA3NiwgMjA1LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgCi0gICAgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgCi0gICAgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAKLSAgICA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzMsIAotICAgIDY5LCA3NiwgMTk2LCA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIAotICAgIDcwLCA2OSwgODUsIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgCi0gICAgODQsIDczLCA4NiwgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIAotICAgIDIxMSwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgCi0gICAgNjksIDc5LCAyMDAsIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCAKLSAgICA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIAotICAgIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgCi0gICAgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgCi0gICAgNzcsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCA2OSwgCi0gICAgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDY1LCAKLSAgICA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAyMDQsIAotICAgIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODksIDEyOCwgCi0gICAgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgNjksIDEyOCwgNzAsIDY1LCAKLSAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIAotICAgIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA3MCwgCi0gICAgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODMsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAKLSAgICAyMDEsIDcwLCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIDcwLCA2NSwgNzgsIDcxLCAKLSAgICAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgNzcsIAotICAgIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NywgMTI4LCA3MCwgNjUsIDc2LCA3NiwgNjksIDIwNiwgNzAsIDY1LCA3NCwgCi0gICAgMTI4LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgODUsIDEyOCwgNzAsIDY1LCAKLSAgICA3MywgNjYsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIDEyOCwgNzAsIDY1LCA2NywgODQsIAotICAgIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgCi0gICAgMTk3LCA3MCwgNjUsIDY3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDU0LCAxMjgsIDcwLCAKLSAgICA2NSwgNjcsIDY5LCA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIAotICAgIDUxLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgCi0gICAgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKLSAgICA3MCwgNDgsIDUzLCA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIAotICAgIDQ4LCA1MywgNDksIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUzLCA0OCwgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCAKLSAgICA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIAotICAgIDU0LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgCi0gICAgMTI4LCA3MCwgNDgsIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUyLCA0OCwgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCAKLSAgICA1MSwgNTYsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIAotICAgIDU0LCAxMjgsIDcwLCA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIAotICAgIDcwLCA0OCwgNTEsIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUxLCA0OCwgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA3MCwgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA3MCwgNDgsIDUwLCA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIAotICAgIDQ4LCA1MCwgNDksIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgCi0gICAgNTYsIDEyOCwgNzAsIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OSwgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDcwLCA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDcwLCA0OCwgNDgsIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgCi0gICAgNDgsIDUwLCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDgzLCAKLSAgICAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgCi0gICAgODksIDg5LCA4OSwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCAyMTEsIDY5LCA4OSwgNjksIDc2LCAKLSAgICA2NSwgODMsIDcyLCA2OSwgMjExLCA2OSwgODksIDY5LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIAotICAgIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCAKLSAgICA3MSwgNjUsIDkwLCA2OSwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgCi0gICAgNjYsIDgyLCA3OSwgODcsIDIxMSwgNjksIDg5LCAxOTcsIDY5LCA4OSwgNjYsIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIAotICAgIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgODgsIDg0LCA4MiwgNjksIDc3LCA2OSwgNzYsIDIxNywgCi0gICAgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA2OSwgODgsIAotICAgIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzIsIDczLCA3MSwgMjAwLCA2OSwgCi0gICAgODgsIDg0LCA4MiwgMTkzLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCAKLSAgICA3OCwgNjgsIDY5LCA2OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OSwgODgsIDgwLCA4MiwgNjksIAotICAgIDgzLCA4MywgNzMsIDc5LCA3OCwgNzYsIDY5LCA4MywgMjExLCA2OSwgODgsIDgwLCA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgCi0gICAgODgsIDc5LCAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCAKLSAgICA4NCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgNzYsIAotICAgIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgCi0gICAgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MywgODQsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCAKLSAgICA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIAotICAgIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIDEyOCwgNjksIDg2LCA2OSwgODIsIDIxNywgCi0gICAgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCAKLSAgICA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgCi0gICAgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCAKLSAgICA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCAKLSAgICA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIAotICAgIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIDg0LCA3OCwgNjUsIDcyLCA4NCwgNjUsIDEyOCwgCi0gICAgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAyMDYsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCAKLSAgICA4OSwgMTI4LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgMjE3LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgOTAsIAotICAgIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgCi0gICAgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCAKLSAgICA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIAotICAgIDEyOCwgNjksIDgzLCA2NywgMTI4LCA2OSwgODMsIDY1LCAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODMsIAotICAgIDQ1LCA1MSwgMTI4LCA2OSwgODMsIDQ1LCA1MCwgMTI4LCA2OSwgODMsIDQ1LCA0OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgCi0gICAgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIAotICAgIDEyOCwgNjksIDgyLCA3MywgNzgsIDE3OCwgNjksIDgyLCA3MSwgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIAotICAgIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCA4MSwgODUsIDczLCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAKLSAgICAyMDQsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgCi0gICAgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCAKLSAgICA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgCi0gICAgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgNjksIDgwLCA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCAKLSAgICA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIDY1LCAyMDYsIDY5LCA4MCwgNjksIDc4LCA4NCwgNzIsIDY5LCA4NCwgCi0gICAgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgNzcsIDY1LCAxMjgsIDY5LCA4MCwgNjUsIDY3LCAyMTIsIDY5LCAKLSAgICA3OSwgODQsIDEyOCwgNjksIDc5LCA3NywgMTI4LCA2OSwgNzksIDc2LCA3MiwgODgsIDEyOCwgNjksIDc5LCA3NiwgMTI4LCAKLSAgICA2OSwgNzksIDcyLCAxMjgsIDY5LCA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDY5LCAxMjgsIAotICAgIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCAxOTcsIDY5LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDUwLCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDQ5LCAxMjgsIAotICAgIDY5LCA3OCwgODQsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2OSwgNzgsIDg0LCA3MiwgODUsIDgzLCA3MywgCi0gICAgNjUsIDgzLCA3NywgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDgwLCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA2OSwgNzgsIDg0LCAKLSAgICA2OSwgODIsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDg0LCA2OSwgODIsIDEyOCwgNjksIDc4LCA4NCwgNjksIDIxMCwgNjksIAotICAgIDc4LCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA2OSwgNzgsIDgxLCA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgCi0gICAgNzgsIDgxLCAxMjgsIDY5LCA3OCwgNzksIDIxMSwgNjksIDc4LCA3OCwgNzMsIDEyOCwgNjksIDc4LCA3OCwgMTI4LCA2OSwgCi0gICAgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc4LCA3MSwgNzMsIDc4LCA2OSwgMTI4LCAKLSAgICA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OSwgNzgsIAotICAgIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIDY1LCA4NiwgNzksIDg1LCA4MiwgMTI4LCA2OSwgNzgsIDY3LCA3OSwgCi0gICAgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCA4MywgMTI4LCAKLSAgICA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgCi0gICAgMTk5LCA2OSwgNzgsIDY3LCAxMjgsIDY5LCA3OCwgNjUsIDgyLCA4OCwgNzMsIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCAKLSAgICA3OSwgNzgsIDczLCA3OSwgMjExLCA2OSwgNzcsIDgwLCA4NCwgMjE3LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgCi0gICAgMTk1LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgMjExLCA2OSwgNzcsIDc5LCA3NCwgMjAxLCA2OSwgNzcsIDY2LCAKLSAgICA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCA2OSwgNzcsIDY2LCA3NiwgNjksIDc3LCAxMjgsIDY5LCA3NywgNjYsIAotICAgIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA2OCwgNjgsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgNjksIDc2LCA4OSwgMTI4LCA2OSwgNzYsIDg0LCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODQsIAotICAgIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDczLCA4MywgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA2OSwgCi0gICAgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDIwNiwgNjksIAotICAgIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgNzgsIDIxMiwgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgMTk1LCA2OSwgNzYsIDY2LCAKLSAgICA2NSwgODMsIDY1LCAyMDYsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIDY5LCAxMjgsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIAotICAgIDE5NywgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgODQsIDgyLCA2OSwgODAsIDg0LCA3OSwgCi0gICAgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCA4NCwgNzMsIDc1LCA3OSwgNzgsIAotICAgIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NSwgNjUsIDc3LCAxMjgsIDY5LCA3NCwgNjksIDY3LCAyMTIsIAotICAgIDY5LCA3MywgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIxNywgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDcyLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIAotICAgIDY5LCA2OSwgMjA2LCA2OSwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgCi0gICAgNjksIDEyOCwgNjksIDcyLCA4NywgNjUsIDIxOCwgNjksIDcxLCA4OSwgODAsIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCAKLSAgICA2NSwgMjA0LCA2OSwgNzEsIDg5LCAxMjgsIDY5LCA3MSwgNzMsIDgyLCAxMjgsIDY5LCA3MSwgNzEsIDEyOCwgNjksIDY5LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDY5LCA3NSwgNjUsIDY1LCAxMjgsIDY5LCA2OSwgNzIsIDEyOCwgNjksIAotICAgIDY5LCA2NiwgNjksIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjgsIDczLCA4NCwgNzksIDgyLCA3MywgNjUsIDIwNCwgCi0gICAgNjksIDY4LCA3MywgNzgsIDEyOCwgNjksIDY4LCA2OCwgMTI4LCA2OSwgNjcsIDgzLCAxMjgsIDY5LCA2NiwgNjksIDcwLCAKLSAgICA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgNjksIDY1LCA4MywgODQsIDEyOCwgNjksIAotICAgIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgCi0gICAgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCAKLSAgICA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIAotICAgIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgCi0gICAgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAKLSAgICA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCAKLSAgICA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIAotICAgIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgCi0gICAgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgCi0gICAgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCAKLSAgICA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIAotICAgIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgCi0gICAgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgCi0gICAgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCAKLSAgICA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgCi0gICAgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgCi0gICAgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNzIsIDY5LCAxMjgsIDY4LCAKLSAgICA5MCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgODksIDY1LCA4OSwgMTI4LCA2OCwgOTAsIAotICAgIDg3LCA2OSwgMTI4LCA2OCwgOTAsIDg1LCAxMjgsIDY4LCA5MCwgNzksIDEyOCwgNjgsIDkwLCA3NCwgNjksIDEyOCwgNjgsIAotICAgIDkwLCA3MywgODQsIDY1LCAxMjgsIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDY4LCA5MCwgCi0gICAgNzIsIDY5LCAxMjgsIDY4LCA5MCwgNzIsIDY1LCAxMjgsIDY4LCA5MCwgNjksIDc2LCA3OSwgMTI4LCA2OCwgOTAsIDY5LCAKLSAgICA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIDY4LCAKLSAgICA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCA4OSwgCi0gICAgNzgsIDY1LCA3NywgNzMsIDE5NSwgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODksIDY1LCAKLSAgICA3OCwgMTI4LCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCAKLSAgICA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIAotICAgIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgCi0gICAgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCAKLSAgICA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIAotICAgIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIAotICAgIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCAxOTksIDY4LCA4NSwgNjYsIAotICAgIDUwLCAxMjgsIDY4LCA4NSwgNjYsIDEyOCwgNjgsIDg1LCAxOTQsIDY4LCA4MiwgODksIDEyOCwgNjgsIDgyLCAyMTcsIDY4LCAKLSAgICA4MiwgODUsIDc3LCAxMjgsIDY4LCA4MiwgODUsIDIwNSwgNjgsIDgyLCA3OSwgODAsIDgzLCAxMjgsIDY4LCA4MiwgNzksIAotICAgIDgwLCA3NiwgNjksIDg0LCAxMjgsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgCi0gICAgNjgsIDgyLCA3OSwgNzcsIDY5LCA2OCwgNjUsIDgyLCAyMTcsIDY4LCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2OCwgODIsIDczLCAKLSAgICA4NiwgMTk3LCA2OCwgODIsIDczLCA3OCwgNzUsIDEyOCwgNjgsIDgyLCA3MywgMjA0LCA2OCwgODIsIDY5LCA4MywgODMsIAotICAgIDEyOCwgNjgsIDgyLCA2OSwgNjUsIDc3LCAyMTcsIDY4LCA4MiwgNjUsIDg1LCA3MSwgNzIsIDg0LCAyMTEsIDY4LCA4MiwgCi0gICAgNjUsIDc3LCAxMjgsIDY4LCA4MiwgNjUsIDIwNSwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIDY1LCAKLSAgICA3MSwgNzksIDIwNiwgNjgsIDgyLCA2NSwgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIAotICAgIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDE5MywgCi0gICAgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgNDUsIDgwLCA3OSwgNzMsIAotICAgIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY4LCA3OSwgODcsIDc4LCAxMjgsIDY4LCA3OSwgODYsIDY5LCAxMjgsIDY4LCA3OSwgCi0gICAgODYsIDE5NywgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCAKLSAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIAotICAgIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODQsIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIAotICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIAorICAgIDY5LCAxMjgsIDcyLCA2OCwgODIsIDEyOCwgNzIsIDY3LCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgCisgICAgNjUsIDgzLCAxOTMsIDcyLCA2NiwgNjUsIDgzLCAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCAKKyAgICA2NSwgODcsIDc0LCAxMjgsIDcyLCA2NSwgODYsIDY5LCAxMjgsIDcyLCA2NSwgODUsIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIAorICAgIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDIxMywgNzIsIDY1LCA4NCwgODIsIDY1LCAyMDYsIDcyLCA2NSwgODQsIDcyLCA3MywgCisgICAgMTI4LCA3MiwgNjUsIDg0LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCAKKyAgICA2NSwgMTk4LCA3MiwgNjUsIDgzLCA2OSwgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIAorICAgIDgyLCA4MCwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgCisgICAgNzgsIDczLCA2NywgMTI4LCA3MiwgNjUsIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCAKKyAgICA4MywgODMsIDEyOCwgNzIsIDY1LCA4MiwgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIAorICAgIDc5LCAyMDcsIDcyLCA2NSwgNzgsIDcxLCA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgNzIsIDY1LCA3NSwgCisgICAgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIDcyLCA2NSwgNzgsIDY4LCAKKyAgICA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCA2NSwgNzYsIAorICAgIDc2LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgCisgICAgNzYsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3OSwgODYsIDY1LCAyMDQsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCAKKyAgICA3OSwgNzUsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzksIDc5LCAyMDMsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIAorICAgIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzIsIDY1LCA3OCwgCisgICAgNjgsIDQ1LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDIxMiwgNzIsIDY1LCAKKyAgICA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCA4NCwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgCisgICAgNjcsIDg1LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCAxOTcsIDcyLCAKKyAgICA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MCwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgMjA4LCA3MiwgNjUsIAorICAgIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDg3LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgMjE1LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIAorICAgIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgCisgICAgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCAKKyAgICA2NSwgODQsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDcyLCA2NSwgNzcsIAorICAgIDgzLCA4NCwgNjksIDIxMCwgNzIsIDY1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgCisgICAgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgNzEsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCAKKyAgICA3NiwgNzksIDEyOCwgNzIsIDY1LCA3NiwgNzAsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIAorICAgIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgCisgICAgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCA2NSwgNzMsIDIxMSwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIAorICAgIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIAorICAgIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgCisgICAgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgCisgICAgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCAKKyAgICA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIAorICAgIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgCisgICAgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgCisgICAgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgCisgICAgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgCisgICAgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDg2LCA2NSwgNzgsIDcxLCAxMjgsIDcxLCA4NiwgMTI4LCA3MSwgCisgICAgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCAKKyAgICA3MiwgMjAxLCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIAorICAgIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCA4NSwgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIAorICAgIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIDIwMSwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgODUsIDE5OSwgCisgICAgNzEsIDg1LCA2OSwgNzMsIDEyOCwgNzEsIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAKKyAgICAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIAorICAgIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgCisgICAgNjUsIDgyLCA2OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgCisgICAgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgCisgICAgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCAKKyAgICA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIAorICAgIDczLCA3NywgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgCisgICAgNjksIDY5LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCAKKyAgICA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgCisgICAgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCAKKyAgICA4NiwgNjksIDg5LCA2NSwgODIsIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgCisgICAgMTI4LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgODYsIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgCisgICAgODMsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDIxMSwgNzEsIDgyLCA2NSwgODMsIDIwOCwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA2OSwgNzcsIDE5NywgNzEsIDgyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3OCwgODQsIDcyLCAxOTMsIAorICAgIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgCisgICAgODQsIDczLCA3OSwgMjA2LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA3NiwgMTI4LCA3MSwgODIsIDY1LCA2NywgNjksIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgCisgICAgNzUsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCAKKyAgICA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgCisgICAgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA3MSwgNzksIDgyLCA3MSwgNzMsIAorICAgIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIDc4LCA3MSwgMTI4LCA3MSwgNzksIAorICAgIDc2LCA3MCwgNjksIDgyLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIDc5LCA3MywgCisgICAgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgNzksIDY1LCAKKyAgICAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCA3MywgODksIAorICAgIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NiwgNjksIDEyOCwgCisgICAgNzEsIDc2LCA3OSwgODQsIDg0LCA2NSwgMjA0LCA3MSwgNzYsIDc5LCA2NiwgMTk3LCA3MSwgNzYsIDczLCA4MywgODMsIDY1LCAKKyAgICA3OCwgNjgsIDIwNywgNzEsIDc2LCA2OSwgNzMsIDY3LCAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCAxMjgsIAorICAgIDcxLCA3NiwgNjUsIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgODQsIDEyOCwgNzEsIAorICAgIDczLCA4MywgNzIsIDEyOCwgNzEsIDczLCA4MywgMjAwLCA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzEsIDczLCA4MiwgCisgICAgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIDIxMSwgNzEsIDczLCA4MiwgNzYsIDEyOCwgNzEsIDczLCAKKyAgICA4MiwgNTEsIDEyOCwgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIDgyLCAxNzgsIDcxLCAKKyAgICA3MywgODAsIDEyOCwgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzMsIAorICAgIDc3LCA2OSwgMjA0LCA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgNzEsIDEyOCwgNzEsIAorICAgIDczLCA2OSwgODQsIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgCisgICAgNzEsIDczLCA2NiwgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCAKKyAgICA3MSwgNzIsIDg1LCAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIAorICAgIDc5LCAxMjgsIDcxLCA3MiwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDcyLCA3MywgMTI4LCA3MSwgNzIsIDcyLCA2NSwgCisgICAgMTI4LCA3MSwgNzIsIDY5LCA4OSwgODMsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCAKKyAgICA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIAorICAgIDcxLCA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgCisgICAgODUsIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCAKKyAgICA2OSwgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCAKKyAgICA2NSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIAorICAgIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCA4NSwgCisgICAgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgNjgsIDEyOCwgCisgICAgNzEsIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIAorICAgIDEyOCwgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgNzEsIDg1LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgCisgICAgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCAKKyAgICA3MSwgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIAorICAgIDcxLCA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgODQsIDEyOCwgNzEsIDcxLCA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgCisgICAgODgsIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgNzEsIDcxLCA3MywgNjksIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCA3MSwgNzEsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCAKKyAgICA3MSwgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDY1LCA4OCwgMTI4LCA3MSwgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNjksIAorICAgIDg0LCAxOTMsIDcxLCA2OSwgODMsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgCisgICAgNjksIDgzLCA3MiwgODQsIDczLCA3OCwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCAKKyAgICA1MCwgMTI4LCA3MSwgNjksIDgyLCA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgCisgICAgMjA2LCA3MSwgNjksIDgyLCA2OSwgODMsIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCAKKyAgICA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgCisgICAgMTk1LCA3MSwgNjksIDc4LCA4NCwgNzYsIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCAKKyAgICA2OSwgNzgsIDczLCA3NSwgMjAxLCA3MSwgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIAorICAgIDEyOCwgNzEsIDY5LCA3NywgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgCisgICAgMTk3LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OSwgNzcsIDEyOCwgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgMTI4LCA3MSwgCisgICAgNjksIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgCisgICAgNzEsIDY5LCA2NSwgMjEwLCA3MSwgNjksIDUwLCA1MCwgMTI4LCA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCAKKyAgICA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIDcxLCA2NiwgNzksIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCAKKyAgICA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNjYsIDY5LCA4NCwgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIAorICAgIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCA2OSwgNzgsIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgCisgICAgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAKKyAgICAxMjgsIDcxLCA2NSwgODUsIDc4LCA4NCwgNzYsIDY5LCA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgCisgICAgNjUsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA2NSwgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCAKKyAgICA3OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgCisgICAgMTI4LCA3MSwgNjUsIDgyLCA1MSwgMTI4LCA3MSwgNjUsIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgCisgICAgNzgsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA3MSwgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCAKKyAgICA2NSwgNzgsIDUwLCAxMjgsIDcxLCA2NSwgNzgsIDE3OCwgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIAorICAgIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIAorICAgIDcxLCA2NSwgNzcsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgCisgICAgNzEsIDY1LCA3MSwgMTI4LCA3MSwgNjUsIDcwLCAxMjgsIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCAKKyAgICA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIAorICAgIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCA2NSwgMTI4LCA3MSwgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgCisgICAgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCA1MywgNTIsIDEyOCwgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgCisgICAgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIDEyOCwgNzEsIDQ4LCA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgCisgICAgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIDQ4LCA1MiwgNTUsIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAxMjgsIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIAorICAgIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgMTI4LCA3MSwgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgCisgICAgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCA3MSwgNDgsIDUxLCA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgCisgICAgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCAKKyAgICA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgNTEsIDUzLCAxMjgsIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIAorICAgIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAxMjgsIDcxLCA0OCwgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIAorICAgIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCA0OCwgNTAsIDU2LCAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgCisgICAgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgMTI4LCA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCAKKyAgICA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgMTI4LCA3MSwgNDgsIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCAKKyAgICA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIAorICAgIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCA0OSwgNTUsIDEyOCwgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgCisgICAgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIDEyOCwgNzEsIDQ4LCA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgCisgICAgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDcxLCA0OCwgNDksIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgNDgsIDU2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIAorICAgIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgCisgICAgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIDUzLCAxMjgsIDcxLCA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIDcxLCA0OCwgNDgsIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCAKKyAgICA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIDcwLCA4OSwgNjUsIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIDcwLCA4NywgNjUsIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg2LCAKKyAgICA4MywgNTEsIDEyOCwgNzAsIDg2LCA4MywgNTAsIDEyOCwgNzAsIDg2LCA4MywgNDksIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCAKKyAgICA3MCwgODUsIDg0LCAxMjgsIDcwLCA4NSwgODMsIDY5LCAxMjgsIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgNzAsIDg1LCA4MCwgMTI4LCA3MCwgODUsIDc4LCA2OSwgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDcwLCA4NSwgNzYsIDc2LCAKKyAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIDcwLCA4NSwgNzQsIDczLCAxMjgsIDcwLCA4NSwgNjksIAorICAgIDg0LCAxMjgsIDcwLCA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgMTI4LCA3MCwgODUsIDY1LCAxMjgsIDcwLCA4NCwgNzIsIAorICAgIDc5LCA4MiwgMTkzLCA3MCwgODMsIDczLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgCisgICAgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgODcsIAorICAgIDIwNiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgCisgICAgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA3OCwgMjEyLCA3MCwgODIsIDc5LCAyMDUsIDcwLCAKKyAgICA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIAorICAgIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAKKyAgICAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCA2OSwgNzgsIDY3LCAyMDAsIAorICAgIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIDc1LCAyMTEsIDcwLCA4MiwgCisgICAgNjUsIDc4LCAxOTUsIDcwLCA4MiwgNjUsIDc3LCA2OSwgODMsIDEyOCwgNzAsIDgyLCA2NSwgNzcsIDY5LCAxMjgsIDcwLCAKKyAgICA4MiwgNjUsIDc3LCAxOTcsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgCisgICAgNzksIDIxNiwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCAKKyAgICAyMDYsIDcwLCA3OSwgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDg1LCA4MiwgNDUsIAorICAgIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA3MCwgCisgICAgNzksIDg1LCA4MiwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCA4NSwgMjEwLCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCAKKyAgICA3MywgNzgsIDEyOCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzAsIDc5LCA4MywgODQsIDY5LCA4MiwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCAKKyAgICAxOTYsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgNzksIDgyLCA4NCwgNzMsIAorICAgIDY5LCA4NCwgNzIsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDY5LCAxMjgsIDcwLCA3OSwgODIsIDc3LCAyMTEsIDcwLCA3OSwgCisgICAgODIsIDc3LCA2NSwgODQsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDc3LCA2NSwgMjEyLCA3MCwgNzksIDgyLCAKKyAgICA3NSwgNjksIDE5NiwgNzAsIDc5LCA4MiwgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzAsIDc5LCA4MiwgNjcsIDY5LCA4MywgCisgICAgMTI4LCA3MCwgNzksIDgyLCA2NywgNjksIDEyOCwgNzAsIDc5LCA4MCwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODMsIDg0LCAKKyAgICA3OSwgNzksIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDcwLCA3OSwgNzksIAorICAgIDg0LCA3OCwgNzksIDg0LCAxOTcsIDcwLCA3OSwgNzksIDg0LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgCisgICAgMTI4LCA3MCwgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA2OCwgMTI4LCA3MCwgNzksIDc5LCAxMjgsIDcwLCA3OSwgCisgICAgNzgsIDIxMiwgNzAsIDc5LCA3OCwgNzEsIDc3LCA2NSwgNzgsIDEyOCwgNzAsIDc5LCA3NywgMTI4LCA3MCwgNzksIDc2LCAKKyAgICA3NiwgODksIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDc5LCA4NywgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIAorICAgIDgyLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgMTk2LCA3MCwgNzksIDcxLCA3MSwgODksIDEyOCwgNzAsIDc5LCA3MSwgCisgICAgMTI4LCA3MCwgMjA3LCA3MCwgNzcsIDEyOCwgNzAsIDc2LCA4OSwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODksIDEyOCwgNzAsIAorICAgIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCAKKyAgICA3OCwgMTk5LCA3MCwgNzYsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MCwgNzYsIAorICAgIDc5LCA4NywgNzMsIDc4LCAxOTksIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3NiwgNzksIDg3LCA2OSwgCisgICAgMjEwLCA3MCwgNzYsIDc5LCA4NSwgODIsIDczLCA4MywgNzIsIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY5LCA4NCwgODQsIDY5LCAKKyAgICAxMjgsIDcwLCA3NiwgNzksIDgyLCA2NSwgMjA0LCA3MCwgNzYsIDc5LCA4MCwgODAsIDIxNywgNzAsIDc2LCA3OSwgNzksIAorICAgIDgyLCAxMjgsIDcwLCA3NiwgNzksIDc5LCAyMTAsIDcwLCA3NiwgNzMsIDgwLCAxMjgsIDcwLCA3NiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDEyOCwgNzAsIDc2LCA3MywgNjcsIDIwMywgNzAsIDc2LCA2OSwgODgsIDg1LCA4MywgMTI4LCA3MCwgNzYsIDY5LCAKKyAgICA4OCwgNjksIDE5NiwgNzAsIDc2LCA2OSwgODgsIDEyOCwgNzAsIDc2LCA2OSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzAsIAorICAgIDc2LCA2OSwgODUsIDgyLCA0NSwgNjgsIDY5LCA0NSwgNzYsIDczLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgODQsIDY5LCAKKyAgICA3OCwgNjksIDE5NiwgNzAsIDc2LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA2NiwgODIsIAorICAgIDY5LCA2NSwgNjgsIDEyOCwgNzAsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA4MywgMTI4LCA3MCwgCisgICAgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCAKKyAgICA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIDEyOCwgNzAsIAorICAgIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCA3MCwgNzMsIAorICAgIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA4NCwgCisgICAgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzMsIDg2LCAKKyAgICAxOTcsIDcwLCA3MywgODQsIDkwLCA4MCwgNjUsIDg0LCA4MiwgNzMsIDY3LCAyMDMsIDcwLCA3MywgODQsIDY1LCAxMjgsIAorICAgIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIDE5OSwgCisgICAgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAyMDMsIDcwLCAKKyAgICA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIDIwMCwgNzAsIAorICAgIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDc1LCA4MywgCisgICAgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCA3MCwgNzMsIDgyLCAKKyAgICAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIAorICAgIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDIxMSwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNzgsIDY1LCA3MywgCisgICAgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDQ1LCAKKyAgICA4MCwgNzksIDgzLCAyMTIsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCAyMTAsIAorICAgIDcwLCA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3OCwgNjUsIDc2LCAxMjgsIDcwLCA3MywgCisgICAgNzYsIDIwNSwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDQ1LCAKKyAgICA0OSwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgMTk2LCA3MCwgNzMsIAorICAgIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgMTI4LCA3MCwgNzMsIAorICAgIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA3MywgCisgICAgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIDczLCA3MSwgNzIsIDg0LCAKKyAgICAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgNzMsIDcwLCA4NCwgNzIsIAorICAgIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgCisgICAgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzMsIDY5LCA3NiwgMTk2LCAKKyAgICA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCA4NiwgCisgICAgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIDY5LCAKKyAgICA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAyMDAsIAorICAgIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgCisgICAgNzAsIDY5LCA3NywgNzMsIDc4LCA3MywgNzgsIDE5NywgNzAsIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCAKKyAgICA2NSwgNzYsIDE5NywgNzAsIDY5LCA3NiwgNzYsIDc5LCA4NywgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgCisgICAgMTI4LCA3MCwgNjksIDcyLCAyMTMsIDcwLCA2OSwgNzIsIDEyOCwgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgCisgICAgMTI4LCA3MCwgNjksIDY5LCA3NywgMTI4LCA3MCwgNjksIDY5LCA2OCwgMTI4LCA3MCwgNjksIDY5LCAxOTYsIDcwLCA2OSwgCisgICAgNjksIDEyOCwgNzAsIDY5LCA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKKyAgICAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY5LCA2NSwgODIsIDc4LCAxMjgsIDcwLCA2OSwgNjUsIAorICAgIDgyLCA3MCwgODUsIDIwNCwgNzAsIDY5LCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgNzAsIDY1LCA4OSwgMTI4LCA3MCwgNjUsIDg4LCAxMjgsIDcwLCA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCAKKyAgICA2OSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgCisgICAgNzIsIDY1LCAxMjgsIDcwLCA2NSwgODQsIDcyLCAxOTMsIDcwLCA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MywgODQsIDEyOCwgCisgICAgNzAsIDY1LCA4MiwgODMsIDIwMSwgNzAsIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgCisgICAgNzAsIDY1LCA3OCwgNzEsIDEyOCwgNzAsIDY1LCA3OCwgNjksIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIAorICAgIDEyOCwgNzAsIDY1LCA3NywgNzMsIDc2LCA4OSwgMTI4LCA3MCwgNjUsIDc3LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCA2OSwgCisgICAgMjA2LCA3MCwgNjUsIDc0LCAxMjgsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIDcwLCA2NSwgNzMsIDcyLCAKKyAgICA4NSwgMTI4LCA3MCwgNjUsIDczLCA2NiwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgCisgICAgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCAKKyAgICA2NywgODMsIDczLCA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDcwLCA2NSwgNjcsIAorICAgIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAKKyAgICAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIAorICAgIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIDUxLCAxMjgsIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCAKKyAgICA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjYsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAxMjgsIDcwLCA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgNTIsIDUxLCAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIAorICAgIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAxMjgsIDcwLCA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIDQ4LCA1MSwgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIAorICAgIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgNTAsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAxMjgsIDcwLCA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCA0OCwgNTAsIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAKKyAgICAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIDUxLCAxMjgsIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCAKKyAgICA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgMTI4LCA3MCwgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIAorICAgIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgNDgsIDQ5LCA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgCisgICAgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCA1MiwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIDEyOCwgNzAsIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIDQ4LCA0OCwgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgNTMsIDEyOCwgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgODMsIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIDc4LCAxMjgsIDY5LCA5MCwgCisgICAgNjksIDIwNiwgNjksIDkwLCAxMjgsIDY5LCA4OSwgODksIDg5LCAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgCisgICAgNjksIDIxMSwgNjksIDg5LCA2OSwgNzYsIDY1LCA4MywgNzIsIDY5LCAyMTEsIDY5LCA4OSwgNjksIDcxLCA3NiwgNjUsIDgzLCAKKyAgICA4MywgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIDcxLCA2NSwgOTAsIDY5LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgCisgICAgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIDcxLCA2NSwgOTAsIDY5LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIAorICAgIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCA2NiwgODIsIDc5LCA4NywgMjExLCA2OSwgODksIDE5NywgNjksIDg5LCA2NiwgCisgICAgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA4OCwgODQsIDgyLCAKKyAgICA2OSwgNzcsIDY5LCA3NiwgMjE3LCA2OSwgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY1LCAyMDQsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCAKKyAgICA3MiwgNzMsIDcxLCAyMDAsIDY5LCA4OCwgODQsIDgyLCAxOTMsIDY5LCA4OCwgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDY4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCA3OCwgNjgsIDY5LCAKKyAgICAxOTYsIDY5LCA4OCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCA3NiwgNjksIDgzLCAyMTEsIDY5LCA4OCwgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCA4OCwgNzksIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgNzMsIDgzLCA4NCwgCisgICAgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIDg0LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA4OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA4OCwgNjcsIDczLCA4NCwgCisgICAgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4OCwgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCAKKyAgICA2OSwgODMsIDgzLCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgCisgICAgMTI4LCA2OSwgODYsIDY5LCA4MiwgMjE3LCA2OSwgODYsIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNjksIDg2LCAKKyAgICA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNjUsIDIwNiwgNjksIDg1LCA4MiwgNzksIAorICAgIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIDEyOCwgNjksIDg1LCA4MiwgNzksIDQ1LCA2NywgODUsIDgyLCAKKyAgICA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIDgyLCAyMDcsIDY5LCA4NSwgNzYsIDY5LCAyMTAsIDY5LCA4NSwgNDUsIAorICAgIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgCisgICAgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgNjksIDg1LCA0NSwgNjUsIDEyOCwgNjksIDg0LCA4OCwgMTI4LCA2OSwgCisgICAgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIAorICAgIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAxMjgsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCAKKyAgICAyMTcsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA5MCwgMTI4LCA2OSwgODMsIDg1LCA3NSwgODUsIDg1LCA2OCwgNzksIAorICAgIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCA4MywgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgCisgICAgNjksIDE5NiwgNjksIDgzLCA3MiwgNjksIDUxLCAxMjgsIDY5LCA4MywgNzIsIDUwLCA0OSwgMTI4LCA2OSwgODMsIDcyLCAKKyAgICA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2OSwgODMsIDY3LCAxMjgsIDY5LCA4MywgNjUsIAorICAgIDEyOCwgNjksIDgzLCA0NSwgODQsIDY5LCAxMjgsIDY5LCA4MywgNDUsIDUxLCAxMjgsIDY5LCA4MywgNDUsIDUwLCAxMjgsIAorICAgIDY5LCA4MywgNDUsIDQ5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA2OSwgCisgICAgODIsIDgyLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgODIsIDczLCA3OCwgMTc4LCA2OSwgODIsIDcxLCAKKyAgICAxMjgsIDY5LCA4MiwgNjUsIDgzLCAxOTcsIDY5LCA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIAorICAgIDgxLCA4NSwgNzMsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIDIwNCwgNjksIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDY5LCA4MSwgCisgICAgODUsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIDEyOCwgNjksIDgxLCAKKyAgICA4NSwgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCA2OSwgODAsIDczLCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgNjUsIDIwNiwgNjksIAorICAgIDgwLCA2OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgCisgICAgNjksIDgwLCA2NSwgNjcsIDIxMiwgNjksIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCAKKyAgICA4OCwgMTI4LCA2OSwgNzksIDc2LCAxMjgsIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCAKKyAgICA2OSwgNzYsIDc5LCA4MCwgNjksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIAorICAgIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgCisgICAgODIsIDg5LCA0NSwgNDksIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCAKKyAgICA3OCwgODQsIDcyLCA4NSwgODMsIDczLCA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgCisgICAgODMsIDY5LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCAKKyAgICA2OSwgNzgsIDg0LCA2OSwgMjEwLCA2OSwgNzgsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDY5LCA3OCwgODEsIAorICAgIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIDc4LCA3MywgCisgICAgMTI4LCA2OSwgNzgsIDc4LCAxMjgsIDY5LCA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIAorICAgIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgCisgICAgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCAKKyAgICA3OSwgODMsIDg1LCA4MiwgNjksIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIAorICAgIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgCisgICAgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCAKKyAgICA3NywgODAsIDcyLCA2NSwgODQsIDczLCAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNzksIAorICAgIDc0LCAyMDEsIDY5LCA3NywgNjYsIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgCisgICAgNzcsIDEyOCwgNjksIDc3LCA2NiwgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCAKKyAgICA2NiwgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg5LCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIAorICAgIDc2LCA3NiwgNzMsIDgwLCA4NCwgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCA3NiwgCisgICAgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAKKyAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgNjksIAorICAgIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgCisgICAgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAKKyAgICAxOTUsIDY5LCA3NiwgNjYsIDY1LCA4MywgNjUsIDIwNiwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgNjksIDEyOCwgNjksIAorICAgIDc2LCA2NSwgNzcsIDczLCA4NCwgMTk3LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCA4NCwgCisgICAgODIsIDY5LCA4MCwgODQsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIDc5LCA3OCwgNzMsIDg0LCAKKyAgICA3MywgNzUsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc1LCA2NSwgNzcsIDEyOCwgNjksIAorICAgIDc0LCA2OSwgNjcsIDIxMiwgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgCisgICAgNzEsIDcyLCA4NCwgMjE3LCA2OSwgNzMsIDcxLCA3MiwgODQsIDczLCA2OSwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIAorICAgIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCAKKyAgICAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDczLCA2OSwgCisgICAgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzIsIDg0LCA4MywgNjUsIDEyOCwgNjksIDcyLCA4NCwgNjUsIDEyOCwgCisgICAgNjksIDcyLCA4MCwgNjUsIDEyOCwgNjksIDcyLCA3NSwgNjUsIDEyOCwgNjksIDcyLCA2NywgNzIsIDY1LCAxMjgsIDY5LCAKKyAgICA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgMTI4LCA2OSwgNzEsIAorICAgIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgCisgICAgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIDcyLCAxMjgsIDY5LCA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIAorICAgIDEyOCwgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgCisgICAgNjgsIDEyOCwgNjksIDY3LCA4MywgMTI4LCA2OSwgNjYsIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCAKKyAgICA4NCwgNjksIDgyLCAyMDYsIDY5LCA2NSwgODMsIDg0LCAxMjgsIDY5LCA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIAorICAgIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgNjksIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgCisgICAgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCA3NywgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAKKyAgICAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIAorICAgIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgNDgsIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgCisgICAgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgCisgICAgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIDEyOCwgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCAKKyAgICA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgNTAsIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAxMjgsIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCAKKyAgICA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIAorICAgIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAxMjgsIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgNTMsIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgNjksIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgCisgICAgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCAKKyAgICA2NSwgMTI4LCA2OCwgOTAsIDg5LCA2NSwgODksIDEyOCwgNjgsIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCAKKyAgICA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCA5MCwgNzMsIDg0LCA2NSwgMTI4LCA2OCwgOTAsIAorICAgIDczLCAxMjgsIDY4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA2OCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgCisgICAgMTI4LCA2OCwgOTAsIDY5LCA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgCisgICAgOTAsIDY1LCA4OSwgMTI4LCA2OCwgOTAsIDY1LCA2NSwgMTI4LCA2OCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgMTI4LCA2OCwgCisgICAgMjE4LCA2OCwgODksIDc5LCAxMjgsIDY4LCA4OSwgMjA3LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCAxOTUsIDY4LCA4OSwgCisgICAgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg5LCA2NSwgNzgsIDEyOCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgCisgICAgODcsIDY5LCAxMjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCAKKyAgICA4NiwgNjgsIDEyOCwgNjgsIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIAorICAgIDEyOCwgNjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OCwgODUsIDgyLCA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCAKKyAgICA2OCwgODUsIDc4LCAxNzksIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCAKKyAgICA3MSwgODUsIDY4LCAxMjgsIDY4LCA4NSwgMTk5LCA2OCwgODUsIDY3LCA3NSwgMTI4LCA2OCwgODUsIDY2LCA1MCwgMTI4LCAKKyAgICA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgODIsIDg1LCAKKyAgICA3NywgODMsIDg0LCA3MywgNjcsIDc1LCA4MywgMTI4LCA2OCwgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIAorICAgIDY4LCA4MiwgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgCisgICAgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDY4LCA4MiwgNzksIDc5LCA3NiwgNzMsIDc4LCAxOTksIDY4LCAKKyAgICA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgODYsIAorICAgIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAxMjgsIAorICAgIDY4LCA4MiwgNjksIDY1LCA3NywgMjE3LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIDY1LCA3NywgCisgICAgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCAKKyAgICAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCA4MywgCisgICAgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIDY4LCAKKyAgICA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCA3OCwgCisgICAgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIDg2LCAKKyAgICAxOTcsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgNjgsIAorICAgIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA2OCwgCisgICAgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCisgICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKICAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIAogICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NiwgCiAgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAKQEAgLTQyODYsMjYzICs0MzI0LDg1NCBAQAogICAgIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgCiAgICAgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCAKICAgICA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgMTI4LCA2OCwgNzksIDczLCA4NCwgCi0gICAgMTI4LCA2OCwgNzksIDczLCAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIDY4LCA3OSwgNjksIDIxMSwgNjgsIAotICAgIDc5LCA2OCwgNjksIDc1LCA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgCi0gICAgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCAKLSAgICA2NSwgODMsIDcyLCA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIAotICAgIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIAotICAgIDEyOCwgNjgsIDc2LCA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA2OCwgNzYsIAotICAgIDcyLCA2NSwgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAxMjgsIDY4LCA3NiwgMTI4LCA2OCwgNzUsIAotICAgIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCA4NiwgNzMsIDEyOCwgNjgsIDc0LCA2OSwgCi0gICAgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgCi0gICAgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCAKLSAgICA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIAotICAgIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgODMsIDEyOCwgNjgsIDczLCA4NiwgCi0gICAgNzMsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKLSAgICAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgMTk3LCA2OCwgNzMsIDg2LCA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgCi0gICAgMTI4LCA2OCwgNzMsIDg0LCA4NCwgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3NiwgCi0gICAgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCAKLSAgICA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIAotICAgIDc1LCAxMjgsIDY4LCA3MywgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgCi0gICAgODMsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCAKLSAgICA2NSwgODAsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIAotICAgIDczLCA4MiwgNzEsIDE5MywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA3MywgODAsIDg0LCAKLSAgICA2OSwgMTI4LCA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIAotICAgIDY4LCA3MywgODAsIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgNjYsIDY1LCAKLSAgICAyMTIsIDY4LCA3MywgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIAotICAgIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgNTAsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIAotICAgIDc3LCA3MywgNzgsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgNzMsIDE5MywgCi0gICAgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIAotICAgIDc5LCAyMDYsIDY4LCA3MywgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDE3OCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgCi0gICAgNzcsIDc3LCA3OSwgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAotICAgIDIwNSwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAKLSAgICAyMDYsIDY4LCA3MywgNzEsIDczLCA4NCwgODMsIDEyOCwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIAotICAgIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgCi0gICAgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCAKLSAgICA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgCi0gICAgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAKLSAgICAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIAotICAgIDgzLCA2OSwgMjA0LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgNzMsIAotICAgIDY1LCA4NCwgNzksIDc4LCA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCA2NSwgCi0gICAgODMsIDg0LCA3OSwgNzYsIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDc3LCAKLSAgICA3OSwgNzgsIDY4LCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgNjksIAotICAgIDIxMCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgCi0gICAgNzUsIDE5MywgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAKLSAgICA3NiwgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIAotICAgIDY5LCA4MywgNzMsIDgzLCA0NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAKLSAgICA4MywgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIAotICAgIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCA3MywgMTI4LCA2OCwgNzIsIDczLCAxMjgsIAotICAgIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgCi0gICAgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCAKLSAgICA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIAotICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgCi0gICAgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCAKLSAgICA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIAotICAgIDkwLCAyMDAsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAKLSAgICAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIAotICAgIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCA3NSwgCi0gICAgODQsIDc5LCAyMDgsIDY4LCA2OSwgODMsIDIwMywgNjgsIDY5LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2OCwgNjksIDgzLCAKLSAgICA3MywgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDg0LCAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgMjEyLCA2OCwgNjksIAotICAgIDgzLCA2OSwgODIsIDY5LCAyMTIsIDY4LCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA2OSwgCi0gICAgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCAKLSAgICA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCAxMjgsIAotICAgIDY4LCA2OSwgODIsIDY5LCA3NiwgNzMsIDY3LCAyMTIsIDY4LCA2OSwgODAsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDgwLCA2NSwgCi0gICAgODIsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDY5LCAKLSAgICA4MCwgNjUsIDgyLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA2OSwgNzgsIDg0LCA3MywgODMsIDg0LCA4MiwgMjE3LCA2OCwgNjksIAotICAgIDc4LCA4NCwgNjUsIDIwNCwgNjgsIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY4LCA2OSwgCi0gICAgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCAyMTAsIDY4LCA2OSwgNzgsIDc4LCA2OSwgNzgsIDEyOCwgNjgsIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNjgsIDY5LCA3OCwgMTk3LCA2OCwgNjksIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA2OCwgNjksIAotICAgIDc2LCA4NCwgNjUsIDEyOCwgNjgsIDY5LCA3NiwgODQsIDE5MywgNjgsIDY5LCA3NiwgODQsIDEyOCwgNjgsIDY5LCA3NiwgCi0gICAgODAsIDcyLCA3MywgMTk1LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgMjE3LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCAKLSAgICA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCA4MiwgMTI4LCA2OCwgNjksIAotICAgIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDIxMCwgNjgsIDY5LCA3NiwgNzMsIDY3LCA3MywgNzksIDg1LCAyMTEsIDY4LCA2OSwgCi0gICAgNzYsIDY5LCA4NCwgNjksIDEyOCwgNjgsIDY5LCA3NiwgNjksIDg0LCAxOTcsIDY4LCA2OSwgNzUsIDY1LCAxMjgsIDY4LCAKLSAgICA2OSwgNzUsIDEyOCwgNjgsIDY5LCA3MywgMTI4LCA2OCwgNjksIDcyLCA3MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIAotICAgIDY5LCA4MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIDE5NywgNjgsIDY5LCA3MCwgNzMsIDc4LCA3MywgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjgsIDY5LCA3MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgMjExLCA2OCwgNjksIDY5LCAKLSAgICA4MiwgMTI4LCA2OCwgNjksIDY5LCA4MCwgNzYsIDg5LCAxMjgsIDY4LCA2OSwgNjksIDc2LCAxMjgsIDY4LCA2OSwgNjcsIAotICAgIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3OSwgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDEyOCwgCi0gICAgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA4NiwgMTk3LCAKLSAgICA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNjksIDY3LCA3MywgODMsIDczLCA4NiwgCi0gICAgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY4LCA2OSwgNjcsIDczLCA3NywgNjUsIDIwNCwgNjgsIDY5LCA2NywgNzMsIDY4LCAKLSAgICA4NSwgNzksIDg1LCAyMTEsIDY4LCA2OSwgNjcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDY3LCA2NSwgODksIAotICAgIDY5LCA2OCwgMTI4LCA2OCwgNjksIDY2LCA3MywgMjEyLCA2OCwgNjksIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA2NSwgCi0gICAgNjgsIDEyOCwgNjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDY4LCA4NSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgODQsIDEyOCwgCi0gICAgNjgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDgyLCAxMjgsIDY4LCA2OCwgODUsIDgwLCAxMjgsIDY4LCAKLSAgICA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODAsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIAotICAgIDY4LCA4NSwgMTI4LCA2OCwgNjgsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDc5LCA4NCwgMTI4LCA2OCwgNjgsIDc5LCA4MCwgCi0gICAgMTI4LCA2OCwgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNjgsIDczLCA4OCwgMTI4LCA2OCwgNjgsIDczLCA4NCwgMTI4LCA2OCwgCi0gICAgNjgsIDczLCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNjgsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCAKLSAgICA2OCwgNzMsIDY5LCAxMjgsIDY4LCA2OCwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDY4LCA3MiwgNzksIAotICAgIDEyOCwgNjgsIDY4LCA3MiwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCAxMjgsIAotICAgIDY4LCA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjgsIDY5LCA4OCwgMTI4LCA2OCwgCi0gICAgNjgsIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDY5LCAxMjgsIDY4LCA2OCwgNjgsIDcyLCAKLSAgICA2NSwgMTI4LCA2OCwgNjgsIDY4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIAotICAgIDY4LCA2NSwgODgsIDEyOCwgNjgsIDY4LCA2NSwgODQsIDEyOCwgNjgsIDY4LCA2NSwgODAsIDEyOCwgNjgsIDY4LCA2NSwgCi0gICAgNzYsIDEyOCwgNjgsIDY4LCA2NSwgMjA0LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDcyLCAKLSAgICA2NSwgMjA0LCA2OCwgNjgsIDY1LCA2NSwgMTI4LCA2OCwgNjcsIDgzLCAxMjgsIDY4LCA2NywgNzIsIDY5LCAxMjgsIDY4LCAKLSAgICA2NywgNTIsIDEyOCwgNjgsIDY3LCA1MSwgMTI4LCA2OCwgNjcsIDUwLCAxMjgsIDY4LCA2NywgNDksIDEyOCwgNjgsIDE5NCwgCi0gICAgNjgsIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgNjgsIDY1LCA4NywgNjYsIAotICAgIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgCi0gICAgNjUsIDg0LCAxOTcsIDY4LCA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MywgMTkzLCA2OCwgNjUsIDgzLCAKLSAgICA3MiwgNjksIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIAotICAgIDY1LCAxMjgsIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAKLSAgICAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCAKLSAgICA2OCwgNjUsIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIAotICAgIDQ1LCA3NywgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgCi0gICAgNjksIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAKLSAgICAxMjgsIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3NywgODAsIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIAotICAgIDc3LCA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgCi0gICAgNzcsIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCAKLSAgICA3NiwgNjksIDg0LCA3MiwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIAotICAgIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgCi0gICAgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIAotICAgIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzMsIDEyOCwgNjgsIAotICAgIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgNDUsIDUwLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCAKLSAgICA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgODMsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIAotICAgIDcxLCA3MSwgNjksIDIxMCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIDIwMCwgCi0gICAgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgNjUsIDIxOCwgNjgsIDY1LCAKLSAgICA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgNTEsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIAotICAgIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgCi0gICAgNDgsIDU0LCA1NSwgNzEsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1NSwgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTMsIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCAKLSAgICA1NCwgNTAsIDEyOCwgNjgsIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIAotICAgIDEyOCwgNjgsIDQ4LCA1MywgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNTMsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDUxLCAxMjgsIDY4LCA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ4LCA3MSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDQ4LCA2OCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIAotICAgIDUyLCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgCi0gICAgNTQsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDY4LCA0OCwgNTIsIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCAKLSAgICA0OCwgNTIsIDQ4LCAxMjgsIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgCi0gICAgMTI4LCA2OCwgNDgsIDUxLCA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgCi0gICAgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgNjgsIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDY4LCA0OCwgNTAsIDUxLCAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDY4LCA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDY4LCA0OCwgNDksIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIAotICAgIDQ4LCAxMjgsIDY4LCA0OCwgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA2OCwgNDgsIDQ4LCA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NywgODksIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCAKLSAgICA4MiwgNjksIDc4LCA2NSwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIAotICAgIDY3LCA4OSwgODAsIDY5LCA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgCi0gICAgODIsIDczLCA2NywgNzMsIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCAKLSAgICA4OSwgMTI4LCA2NywgODksIDY1LCA4NywgMTI4LCA2NywgODksIDY1LCAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCAKLSAgICA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIAotICAgIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIAotICAgIDg1LCA4NSwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgCi0gICAgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDg1LCA4MywgODAsIAotICAgIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCA4NiwgCi0gICAgNjksIDY4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCAKLSAgICA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgNjcsIAotICAgIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCA2NywgCi0gICAgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCAxOTYsIDY3LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDY3LCA4NSwgNzksIDgwLCAxMjgsIDY3LCA4NSwgNzksIDEyOCwgNjcsIDg1LCAyMDUsIDY3LCAKLSAgICA4NSwgNjYsIDY5LCA2OCwgMTI4LCA2NywgODUsIDY2LCAxOTcsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgNzksIAotICAgIDEyOCwgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCAyMDcsIDY3LCA4NSwgNjUsIDIwNSwgNjcsIDg1LCAxMjgsIAotICAgIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgCi0gICAgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCA2NywgODIsIDg1LCA5MCwgNjksIDczLCAKLSAgICA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIAotICAgIDY5LCA0NSwgNTMsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIDgyLCA4NSwgCi0gICAgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTAsIAotICAgIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgMTI4LCA2NywgCi0gICAgODIsIDc5LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDE5OSwgNjcsIDgyLCAKLSAgICA3OSwgODMsIDgzLCA3MiwgNjUsIDg0LCA2NywgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgNDUsIDg0LCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIAotICAgIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCA2NiwgNzksIDc4LCA2OSwgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAKLSAgICAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIDY3LCA4MiwgNzksIDgwLCAxMjgsIDY3LCA4MiwgNzksIDczLCA4OCwgMTI4LCAKLSAgICA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCA2NywgODIsIAotICAgIDczLCA2NywgNzUsIDY5LCAyMTIsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgODMsIDEyOCwgNjcsIDgyLCA2OSwgCi0gICAgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAyMTIsIDY3LCA4MiwgNjksIDY4LCAKLSAgICA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIDY5LCA2NSwgNzcsIDEyOCwgNjcsIAotICAgIDgyLCA2NSwgODksIDc5LCA3OCwgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCA4MiwgMTI4LCA2NywgODIsIDY1LCA2NiwgCi0gICAgMTI4LCA2NywgODIsIDEyOCwgNjcsIDc5LCA4OCwgMTI4LCA2NywgNzksIDg3LCAxMjgsIDY3LCA3OSwgMjE1LCA2NywgNzksIAotICAgIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4NSwgODAsIDc2LCAxOTcsIDY3LCA3OSwgODUsIDc4LCA4NCwgNzMsIDc4LCAKLSAgICAxOTksIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgNzMsIDc4LCA3NSwgMTI4LCA2NywgNzksIDg1LCA3OCwgODQsIAotICAgIDY5LCA4MiwgNjYsIDc5LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDY3LCA3MywgMjA0LCA2NywgNzksIDg1LCA2NywgCi0gICAgMjAwLCA2NywgNzksIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDY4LCAyMTEsIDY3LCAKLSAgICA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA4MywgNjksIDEyOCwgNjcsIDc5LCA4MiwgODAsIAotICAgIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDY3LCA3OSwgCi0gICAgODIsIDc4LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCAKLSAgICAyMTAsIDY3LCA3OSwgODIsIDc1LCAxMjgsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjcsIAotICAgIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY3LCA3OSwgODAsIDg5LCAxMjgsIDY3LCA3OSwgODAsIDgyLCA3OSwgCi0gICAgNjgsIDg1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDY3LCA3OSwgODAsIDgwLCAKLSAgICA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MCwgMTI4LCA2NywgNzksIDc5LCA3NiwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDY5LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA2OSwgMTk2LCA2NywgCi0gICAgNzksIDc5LCAxMjgsIDY3LCA3OSwgNzgsIDg2LCA2OSwgODIsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODYsIDY5LCAKLSAgICA3OCwgNzMsIDY5LCA3OCwgNjcsIDE5NywgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OCwgODQsIAotICAgIDgyLCA3OSwgMjA0LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA4MiwgNzMsIDY5LCA4NCwgODksIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODQsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDgyLCA2OSwgMTk2LCAKLSAgICA2NywgNzksIDc4LCA4NCwgNzksIDg1LCAyMTAsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA3MywgNzgsIDE5OSwgNjcsIAotICAgIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzgsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzcsIDgwLCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAyMTEsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgMjA2LCA2NywgNzksIDc4LCA4NCwgNjUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgCi0gICAgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCAKLSAgICA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4MywgNjksIAotICAgIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA3MywgNzgsIAotICAgIDE5OSwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgCi0gICAgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIAotICAgIDIxMiwgNjcsIDc5LCA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCi0gICAgNzgsIDcwLCA4NSwgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCAKLSAgICA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIAotICAgIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCAKLSAgICA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIAotICAgIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIAotICAgIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgCi0gICAgNzksIDc3LCA4MCwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgCi0gICAgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAKLSAgICA3OSwgMjA2LCA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIAotICAgIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgCi0gICAgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIDc2LCA4NSwgNzcsIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NiwgCi0gICAgNzYsIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAxMjgsIDY3LCA3OSwgNjksIDc4LCAKLSAgICA3MSwgMTI4LCA2NywgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCA2NywgNzksIDY3LCA3NSwgODQsIAotICAgIDY1LCA3MywgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDY1LCAxMjgsIDY3LCA3NywgCi0gICAgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgCi0gICAgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAKLSAgICAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgNzksIAotICAgIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCA2NywgCi0gICAgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIDc2LCAKLSAgICA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIAotICAgIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCA4MCwgCi0gICAgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc4LCAKLSAgICA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgNzAsIAotICAgIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCA2OSwgCi0gICAgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIDY1LCAKLSAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDgzLCA4MywgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAyMTAsIDY3LCAKLSAgICA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDIwNiwgNjcsIDc2LCA2NSwgNzcsIDgzLCA3MiwgNjksIDc2LCAyMDQsIAotICAgIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCA4OCwgMTI4LCA2NywgNzMsIDg2LCA3MywgCi0gICAgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2NywgNzMsIDg0LCAKLSAgICA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgMjAxLCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCAKLSAgICA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgODIsIAotICAgIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgCi0gICAgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgMTk5LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIDgyLCAKLSAgICA2NywgNzYsIDY5LCAyMTEsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDY4LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIAotICAgIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCAKKyAgICAxMjgsIDY4LCA3OSwgNzMsIDc4LCAxOTksIDY4LCA3OSwgNzMsIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgCisgICAgNjgsIDc5LCA2OSwgMjExLCA2OCwgNzksIDY4LCA2OSwgNzUsIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NywgODUsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCAyMTIsIDY4LCA3OSwgNjYsIDgyLCA3OSwgCisgICAgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCAKKyAgICA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIAorICAgIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgMTI4LCA2OCwgNzYsIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCAKKyAgICA3MiwgODksIDY1LCAxMjgsIDY4LCA3NiwgNzIsIDY1LCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIAorICAgIDEyOCwgNjgsIDc2LCAxMjgsIDY4LCA3NSwgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIAorICAgIDg2LCA3MywgMTI4LCA2OCwgNzQsIDY5LCA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIAorICAgIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCA3MywgODYsIDc5LCA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAorICAgIDgyLCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKKyAgICAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIAorICAgIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgCisgICAgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCAKKyAgICA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCA4MywgODAsIDg1LCA4NCwgNjksIAorICAgIDE5NiwgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgCisgICAgNjgsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCAKKyAgICA3OCwgODQsIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIAorICAgIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgCisgICAgMTkzLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICA2NSwgMjA0LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjgsIDczLCA4MCwgODQsIDY5LCAxMjgsIAorICAgIDY4LCA3MywgODAsIDgwLCA2OSwgODIsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjgsIDczLCA4MCwgCisgICAgNzYsIDczLCAxMjgsIDY4LCA3MywgODAsIDc2LCAyMDEsIDY4LCA3MywgNzgsIDcxLCA2NiwgNjUsIDIxMiwgNjgsIDczLCAKKyAgICAyMDYsIDY4LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIAorICAgIDc4LCA0NSwgNTEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MCwgMTI4LCA2OCwgCisgICAgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDQ5LCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgNzMsIAorICAgIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDczLCA3NywgNzMsIDY4LCA3MywgMTkzLCA2OCwgNzMsIDc3LCA2OSwgCisgICAgNzgsIDgzLCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCAKKyAgICA3NywgNTAsIDEyOCwgNjgsIDczLCA3NywgMTc4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKKyAgICAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNzMsIAorICAgIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNjgsIDczLCA3MSwgCisgICAgNzMsIDg0LCA4MywgMTI4LCA2OCwgNzMsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNzMsIDcxLCAxOTMsIDY4LCAKKyAgICA3MywgNzAsIDg0LCA3OSwgNzEsIDcxLCA3OSwgMjExLCA2OCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNjgsIAorICAgIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgMjE3LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAKKyAgICA3MywgNjksIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgNjgsIAorICAgIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA2OCwgNzMsIDcwLCA2NSwgODQsIDEyOCwgNjgsIDczLCA2OSwgCisgICAgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDczLCA2OSwgODMsIDY5LCAyMDQsIDY4LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIDY2LCAxMjgsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIAorICAgIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgMjAxLCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgCisgICAgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIAorICAgIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgMjEwLCA2OCwgCisgICAgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgMTkzLCAKKyAgICA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDc2LCAxMjgsIAorICAgIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCAKKyAgICA3MywgODMsIDQ1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIAorICAgIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA2OCwgNzIsIDc5LCA4NSwgMTI4LCA2OCwgNzIsIDc5LCA3OSwgCisgICAgMTI4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzMsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgCisgICAgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIAorICAgIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA2OCwgCisgICAgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCAKKyAgICA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIAorICAgIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIDkwLCAyMDAsIDY4LCA2OSwgODksIDg0LCA2OSwgCisgICAgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCAKKyAgICA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIAorICAgIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCA3NSwgODQsIDc5LCAyMDgsIDY4LCA2OSwgODMsIDIwMywgCisgICAgNjgsIDY5LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2OCwgNjksIDgzLCA3MywgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDg0LCAKKyAgICAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgMjEyLCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIDY4LCA2OSwgODMsIAorICAgIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgCisgICAgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIAorICAgIDY4LCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA3NiwgNzMsIDY3LCAKKyAgICAyMTIsIDY4LCA2OSwgODAsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA4NSwgODIsIDY5LCAxMjgsIAorICAgIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDc4LCAKKyAgICAxOTksIDY4LCA2OSwgNzgsIDg0LCA3MywgODMsIDg0LCA4MiwgMjE3LCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjgsIAorICAgIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCAKKyAgICA2NSwgODQsIDc5LCAyMTAsIDY4LCA2OSwgNzgsIDc4LCA2OSwgNzgsIDEyOCwgNjgsIDY5LCA3OCwgNzEsIDEyOCwgNjgsIAorICAgIDY5LCA3OCwgMTk3LCA2OCwgNjksIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA2OCwgNjksIDc2LCA4NCwgNjUsIDEyOCwgCisgICAgNjgsIDY5LCA3NiwgODQsIDE5MywgNjgsIDY5LCA3NiwgODQsIDEyOCwgNjgsIDY5LCA3NiwgODAsIDcyLCA3MywgMTk1LCAKKyAgICA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgMjE3LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgNjUsIDc4LCA2NywgCisgICAgNjksIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIDczLCAKKyAgICA4NCwgNjksIDIxMCwgNjgsIDY5LCA3NiwgNzMsIDY3LCA3MywgNzksIDg1LCAyMTEsIDY4LCA2OSwgNzYsIDY5LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY4LCA2OSwgNzYsIDY5LCA4NCwgNjksIDEyOCwgNjgsIDY5LCA3NiwgNjksIDg0LCAxOTcsIDY4LCA2OSwgCisgICAgNzUsIDY1LCAxMjgsIDY4LCA2OSwgNzUsIDEyOCwgNjgsIDY5LCA3MywgMTI4LCA2OCwgNjksIDcyLCA3MywgMTI4LCA2OCwgCisgICAgNjksIDcxLCA4MiwgNjksIDY5LCA4MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIDE5NywgNjgsIDY5LCA3MCwgNzMsIDc4LCAKKyAgICA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA3MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgCisgICAgMjExLCA2OCwgNjksIDY5LCA4MiwgMTI4LCA2OCwgNjksIDY5LCA4MCwgNzYsIDg5LCAxMjgsIDY4LCA2OSwgNjksIDc2LCAKKyAgICAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3OSwgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIAorICAgIDY1LCA4MywgNjksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgCisgICAgODQsIDczLCA4NiwgMTk3LCA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNjksIDY3LCAKKyAgICA3MywgODMsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY4LCA2OSwgNjcsIDczLCA3NywgNjUsIDIwNCwgNjgsIAorICAgIDY5LCA2NywgNzMsIDY4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA2OSwgNjcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2OCwgCisgICAgNjksIDY3LCA2NSwgODksIDY5LCA2OCwgMTI4LCA2OCwgNjksIDY2LCA3MywgMjEyLCA2OCwgNjksIDY1LCA4NCwgNzIsIAorICAgIDEyOCwgNjgsIDY5LCA2NSwgNjgsIDEyOCwgNjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDY4LCA4NSwgODgsIDEyOCwgNjgsIAorICAgIDY4LCA4NSwgODQsIDEyOCwgNjgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDgyLCAxMjgsIDY4LCA2OCwgCisgICAgODUsIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODAsIDEyOCwgNjgsIDY4LCAKKyAgICA4NSwgNzksIDEyOCwgNjgsIDY4LCA4NSwgMTI4LCA2OCwgNjgsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDc5LCA4NCwgMTI4LCAKKyAgICA2OCwgNjgsIDc5LCA4MCwgMTI4LCA2OCwgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNjgsIDczLCA4OCwgMTI4LCA2OCwgNjgsIAorICAgIDczLCA4NCwgMTI4LCA2OCwgNjgsIDczLCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNjgsIDY4LCA3MywgCisgICAgNjksIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCAxMjgsIDY4LCA2OCwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgODUsIDEyOCwgCisgICAgNjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCAKKyAgICA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjgsIDY5LCA4OCwgMTI4LCA2OCwgNjgsIAorICAgIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDY5LCAxMjgsIDY4LCA2OCwgNjgsIDcyLCA2NSwgCisgICAgMTI4LCA2OCwgNjgsIDY4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY4LCAKKyAgICA2NSwgODgsIDEyOCwgNjgsIDY4LCA2NSwgODQsIDEyOCwgNjgsIDY4LCA2NSwgODAsIDEyOCwgNjgsIDY4LCA2NSwgNzYsIAorICAgIDEyOCwgNjgsIDY4LCA2NSwgMjA0LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDcyLCA2NSwgCisgICAgMjA0LCA2OCwgNjgsIDY1LCA2NSwgMTI4LCA2OCwgNjcsIDgzLCAxMjgsIDY4LCA2NywgNzIsIDY5LCAxMjgsIDY4LCA2NywgCisgICAgNTIsIDEyOCwgNjgsIDY3LCA1MSwgMTI4LCA2OCwgNjcsIDUwLCAxMjgsIDY4LCA2NywgNDksIDEyOCwgNjgsIDE5NCwgNjgsIAorICAgIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgNjgsIDY1LCA4NywgNjYsIDEyOCwgCisgICAgNjgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgNjUsIDg0LCAKKyAgICAxOTcsIDY4LCA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MywgMTkzLCA2OCwgNjUsIDgzLCA3MiwgNjksIAorICAgIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIDY1LCAxMjgsIAorICAgIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA4MiwgCisgICAgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY4LCAKKyAgICA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCA2OCwgNjUsIAorICAgIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIDQ1LCA3NywgCisgICAgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgNjksIAorICAgIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAxMjgsIAorICAgIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgCisgICAgNzgsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3NywgODAsIAorICAgIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIDY1LCA3NywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAxOTMsIDY4LCAKKyAgICA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCA3MiwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIAorICAgIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAKKyAgICAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIAorICAgIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzMsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgNDUsIDUwLCAKKyAgICAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgODMsIDEyOCwgNjgsIAorICAgIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDIxMCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgCisgICAgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIDIwMCwgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNjgsIDY1LCA3MSwgNjUsIDIxOCwgNjgsIDY1LCA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgCisgICAgNTEsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgCisgICAgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA3NiwgNzMsIDEyOCwgCisgICAgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcxLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIAorICAgIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIDEyOCwgNjgsIDQ4LCA1NCwgCisgICAgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIDY4LCA0OCwgNTQsIDUzLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgNTQsIDUwLCAxMjgsIDY4LCAKKyAgICA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAxMjgsIDY4LCA0OCwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCA0OCwgNTMsIDUzLCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIDUzLCA1MSwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgNDksIDEyOCwgNjgsIDQ4LCAKKyAgICA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDY1LCAxMjgsIAorICAgIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2OCwgCisgICAgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgMTI4LCA2OCwgNDgsIDUyLCAKKyAgICA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgCisgICAgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgNTAsIDU3LCAxMjgsIDY4LCAKKyAgICA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCA2OCwgNDgsIDUwLCA1MSwgCisgICAgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIDUwLCA0OCwgMTI4LCA2OCwgCisgICAgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgMTI4LCA2OCwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCA0OCwgMTI4LCA2OCwgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDEyOCwgNjgsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDg5LCAKKyAgICA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgODIsIDY5LCA3OCwgNjUsIAorICAgIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCA2NywgODksIDgwLCA2OSwgCisgICAgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIDgyLCA3MywgNjcsIDczLCAKKyAgICA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgODksIDEyOCwgNjcsIAorICAgIDg5LCA2NSwgODcsIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgODcsIDc5LCAxMjgsIAorICAgIDY3LCA4NywgNzMsIDczLCAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCA4NCwgNzIsIDEyOCwgCisgICAgNjcsIDg3LCA2OSwgMTI4LCA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCA4NSwgODUsIDEyOCwgCisgICAgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDY5LCAKKyAgICAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA4NSwgODMsIDgwLCAxMjgsIDY3LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIDY5LCA2OCwgMTI4LCA2NywgCisgICAgODUsIDgyLCA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgODIsIDg2LCAxOTcsIDY3LCAKKyAgICA4NSwgODIsIDgzLCA3MywgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgCisgICAgMTI4LCA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCAKKyAgICAxOTYsIDY3LCA4NSwgNzksIDg4LCAxMjgsIDY3LCA4NSwgNzksIDgwLCAxMjgsIDY3LCA4NSwgNzksIDEyOCwgNjcsIDg1LCAKKyAgICAyMDUsIDY3LCA4NSwgNjcsIDg1LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2NywgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIAorICAgIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgCisgICAgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDY1LCAyMDUsIDY3LCA4NSwgMTI4LCA2NywgODMsIDczLCAxMjgsIDY3LCA4MiwgCisgICAgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCAKKyAgICA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIAorICAgIDczLCA3MCwgNzksIDgyLCAyMDUsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUzLCAxMjgsIDY3LCA4MiwgCisgICAgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIAorICAgIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgCisgICAgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgNzksIDgzLCA4MywgNzIsIDY1LCA4NCwgNjcsIAorICAgIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NywgODIsIDc5LCA4MywgCisgICAgODMsIDY5LCA2OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCAKKyAgICA3OCwgNjksIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIAorICAgIDc5LCA4MCwgMTI4LCA2NywgODIsIDc5LCA3MywgODgsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDgzLCA4MywgNjUsIDc4LCA4NCwgCisgICAgMTI4LCA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCAKKyAgICA2NywgODIsIDczLCA2NywgNzUsIDY5LCAyMTIsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgODMsIDEyOCwgNjcsIAorICAgIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAyMTIsIDY3LCA4MiwgCisgICAgNjksIDY4LCA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIDY5LCA2NSwgNzcsIAorICAgIDEyOCwgNjcsIDgyLCA2NSwgODksIDc5LCA3OCwgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgODIsIDY1LCA2NiwgMTI4LCA2NywgODIsIDEyOCwgNjcsIDc5LCA4OCwgMTI4LCA2NywgNzksIDg3LCA2NiwgNzksIDIxNywgCisgICAgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCAKKyAgICA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIAorICAgIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgCisgICAgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NSwgNjcsIDIwMCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCAKKyAgICA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgCisgICAgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCAKKyAgICA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgMjEwLCA2NywgNzksIDgyLCA3NSwgMTI4LCA2NywgNzksIAorICAgIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgCisgICAgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCAKKyAgICA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIAorICAgIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgCisgICAgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCAKKyAgICA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIAorICAgIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgCisgICAgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIAorICAgIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIAorICAgIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgCisgICAgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCAKKyAgICA2NSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIAorICAgIDc4LCA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgODMsIDY5LCA2NywgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgCisgICAgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCAKKyAgICA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgCisgICAgNjgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIAorICAgIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgCisgICAgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3MCwgODUsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc4LCAKKyAgICA3MCwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDc4LCA3MCwgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAKKyAgICAxOTYsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIAorICAgIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIAorICAgIDgzLCA2OSwgMTk2LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgCisgICAgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA3MywgCisgICAgNjUsIDc4LCA2NywgNjksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc2LCA2OSwgODQsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA3NywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA2NywgNzksIDc3LCA4MCwgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgNzksIDIwNiwgNjcsIDc5LCAKKyAgICA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDc4LCA2OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA3NywgNjUsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIDg0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDY2LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCA3NiwgODUsIDc3LCA3OCwgMTI4LCA2NywgNzksIDc2LCA3OSwgCisgICAgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzYsIDc2LCAxMjgsIDY3LCAKKyAgICA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgMTI4LCA2NywgNzksIDY5LCA3OCwgNzEsIDEyOCwgNjcsIAorICAgIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgNjcsIDc5LCA2NywgNzUsIDg0LCA2NSwgNzMsIDIwNCwgCisgICAgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA2NSwgMTI4LCA2NywgNzcsIDEyOCwgNjcsIDIwNSwgCisgICAgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgNjcsIDc2LCA4NSwgNjYsIDQ1LCAKKyAgICA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCA4NSwgMTk0LCA2NywgNzYsIAorICAgIDc5LCA4NywgMjA2LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNzksIDg1LCA2OCwgMTI4LCA2NywgCisgICAgNzYsIDc5LCA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NywgNzYsIDc5LCA4NCwgNzIsIAorICAgIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDc4LCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIAorICAgIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCA3MywgODMsIDEyOCwgCisgICAgNjcsIDc2LCA3MywgODAsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA2NywgNzYsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgODMsIDEyOCwgNjcsIAorICAgIDc2LCA3MywgNzAsIDcwLCAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDUwLCAKKyAgICAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIDc2LCA2OSwgMTk4LCAKKyAgICA2NywgNzYsIDY5LCA2NSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgNzYsIDY1LCA4MywgODMsIAorICAgIDczLCA2NywgNjUsIDIwNCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgCisgICAgMjEwLCA2NywgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCAyMDYsIDY3LCA3NiwgNjUsIDc3LCA4MywgNzIsIDY5LCAKKyAgICA3NiwgMjA0LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgODgsIDEyOCwgNjcsIDczLCAKKyAgICA4NiwgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjcsIAorICAgIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCAxOTcsIDY3LCA3MywgODQsIDIwMSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjcsIDczLCA4NCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCAKKyAgICA3NywgNzAsIDc2LCA2OSwgODgsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIAorICAgIDgyLCA2NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNjcsIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDc2LCA2OSwgMjExLCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA2OCwgMTI4LCA2NywgNzMsIDgwLCAxMjgsIAorICAgIDY3LCA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgMTI4LCA2NywgNzMsIDc4LCA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgCiAgICAgMjA2LCA2NywgNzMsIDIwNSwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgCiAgICAgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIAogICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKQEAgLTQ1NzYsMzAwICs1MjA1LDMwNCBAQAogICAgIDg2LCA4MiwgNzksIDIwNiwgNjcsIDcyLCA2OSwgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIDg0LCA3OCwgODUsIDg0LCAKICAgICAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgMjExLCA2NywgNzIsIDY5LCA4MiwgODksIAogICAgIDEyOCwgNjcsIDcyLCA2OSwgODIsIDgyLCAyMTcsIDY3LCA3MiwgNjksIDgyLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NywgCi0gICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgMjA2LCAKLSAgICA2NywgNzIsIDY5LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIAotICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MywgMTk3LCA2NywgNzIsIDY5LCA2OSwgCi0gICAgODIsIDczLCA3OCwgMTk5LCA2NywgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDc1LCAyMTEsIDY3LCAKLSAgICA3MiwgNjksIDY5LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDY5LCAyMTAsIAotICAgIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgCi0gICAgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCAKLSAgICA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIAotICAgIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgCi0gICAgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIAotICAgIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA2NywgCi0gICAgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCAKLSAgICA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIAotICAgIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgMjA1LCA2NywgNzIsIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgCi0gICAgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCAKLSAgICA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDcxLCA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCAKLSAgICA2OSwgODIsIDY5LCA4MywgMTI4LCA2NywgNjksIDgyLCA2OSwgNzcsIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIAotICAgIDc1LCAxMjgsIDY3LCA2OSwgODIsIDQ1LCA4NywgNjUsIDEyOCwgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgCi0gICAgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIAotICAgIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIAotICAgIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIAotICAgIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIAotICAgIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCA4MiwgNzMsIDY1LCAyMDQsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgCi0gICAgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNjgsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCAKLSAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIAotICAgIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjksIDc4LCAxMjgsIDY3LCA2OSwgNzYsIDg0LCA3MywgCi0gICAgMTk1LCA2NywgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDY5LCA2OSwgODYsIDEyOCwgNjcsIDY5LCA2OSwgNjYsIDEyOCwgCi0gICAgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAKLSAgICAxOTMsIDY3LCA2OSwgNjgsIDIwMSwgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCAKLSAgICA2NywgNjksIDY3LCA2NSwgMjAzLCA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIAotICAgIDc5LCAxMjgsIDY3LCA2NywgNzMsIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIAotICAgIDY3LCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgCi0gICAgNjcsIDcyLCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIAotICAgIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgCi0gICAgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCAKLSAgICA2NSwgMTI4LCA2NywgNjcsIDcyLCAxMjgsIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCAKLSAgICA2NSwgNjUsIDEyOCwgNjcsIDY3LCA2NSwgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIAotICAgIDc4LCA2NSwgMTI4LCA2NywgNjUsIDg4LCAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjcsIDY1LCA4NSwgNzYsIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCAKLSAgICA2NywgNjUsIDg1LCA2NywgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4NSwgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIAotICAgIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgNjcsIDY1LCAyMTIsIDY3LCA2NSwgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIAotICAgIDY1LCA4MywgNzUsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgCi0gICAgODIsIDczLCA2OCwgNzEsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg0LCAxMjgsIDY3LCA2NSwgODIsIDIxMSwgNjcsIDY1LCAKLSAgICA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIDY1LCA4MiwgODAsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIAotICAgIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgNjksIDIwNCwgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgCi0gICAgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAyMDMsIDY3LCA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCAKLSAgICA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIDIxMiwgNjcsIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIAotICAgIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDY1LCA4MiwgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCAKLSAgICA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIAotICAgIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgNjUsIDgwLCA3OSwgMTI4LCA2NywgCi0gICAgNjUsIDgwLCA3MywgODQsIDg1LCA3NiwgODUsIDc3LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCAKLSAgICA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIAotICAgIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgCi0gICAgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCAKLSAgICA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIAotICAgIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAKLSAgICAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDgwLCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgCi0gICAgNzcsIDY5LCA4MiwgMTkzLCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCAKLSAgICA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIAotICAgIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgMjEwLCA2NywgNjUsIDc2LCA2NywgCi0gICAgODUsIDc2LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgMTI4LCA2NywgNjUsIDc1LCA4MiwgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgNzIsIDEyOCwgNjcsIDY1LCA2OSwgODMsIAotICAgIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIDE5MywgCi0gICAgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCAKLSAgICA2NiwgNzMsIDc4LCA2OSwgODQsIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIAotICAgIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAKLSAgICAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgCi0gICAgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAKLSAgICAyMDEsIDY2LCA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCA3OCwgNDUsIAotICAgIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIDEyOCwgCi0gICAgNjYsIDg3LCA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIDc3LCAKLSAgICA3MywgODMsIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCAyMDYsIAotICAgIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgCi0gICAgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDgzLCA3MywgNzgsIDY5LCA4MywgMjExLCA2NiwgODUsIDIxMSwgNjYsIDg1LCAKLSAgICA4MiwgMjEzLCA2NiwgODUsIDgyLCA4MiwgNzMsIDg0LCA3OSwgMTI4LCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIAotICAgIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgCi0gICAgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCAKLSAgICA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDIwNiwgNjYsIAotICAgIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgCi0gICAgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCAKLSAgICA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIAotICAgIDE5OSwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCA3MSwgCi0gICAgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY4LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCAKLSAgICA3NiwgNjksIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgCi0gICAgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgCi0gICAgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCAKLSAgICA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIAotICAgIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgCi0gICAgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCAKLSAgICA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIAotICAgIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgCi0gICAgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCAKLSAgICA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIAotICAgIDcyLCA2OSwgODMsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDIwMCwgCi0gICAgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDY5LCAxOTYsIDY2LCAKLSAgICA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA4MSwgMTI4LCA2NiwgODAsIAotICAgIDcyLCAxMjgsIDY2LCA3OSwgODksIDIxMSwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIAotICAgIDY2LCA3OSwgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgCi0gICAgMTI4LCA2NiwgNzksIDg3LCAyMDQsIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgCi0gICAgODEsIDg1LCA2OSwgODQsIDEyOCwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgMjEyLCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCAKLSAgICA4MiwgMjE3LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDY2LCA3OSwgODQsIAotICAgIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgCi0gICAgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAKLSAgICAxOTcsIDY2LCA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIAotICAgIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgCi0gICAgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAKLSAgICAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIAotICAgIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgCi0gICAgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAKLSAgICAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIAotICAgIDEyOCwgNjYsIDc5LCA2OCwgMjE3LCA2NiwgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIAotICAgIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzYsIDc5LCA4NywgCi0gICAgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgMjE1LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCAKLSAgICA2NiwgNzYsIDc5LCA3OSwgNjgsIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIAotICAgIDY2LCA3NiwgNzMsIDc4LCAyMDMsIDY2LCA3NiwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAKLSAgICAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzYsIAotICAgIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgCi0gICAgNzUsIDQ1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIAotICAgIDcyLCA2OSwgODIsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgCi0gICAgODQsIDg0LCA2OSwgODIsIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODQsIDE5NywgNjYsIDczLCAKLSAgICA4MywgNzcsIDg1LCA4NCwgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIAotICAgIDc5LCA4MCwgMTI4LCA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAKLSAgICAxMjgsIDY2LCA3MywgODIsIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIAotICAgIDcxLCA2NSwgMTI4LCA2NiwgNzMsIDgyLCA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgCi0gICAgNjYsIDczLCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCAKLSAgICA3OCwgNjgsIDczLCAxMjgsIDY2LCA3MywgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIAotICAgIDEyOCwgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCi0gICAgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAKLSAgICAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIAotICAgIDgzLCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDY2LCA3MywgNjcsIDY5LCA4MCwgODMsIDEyOCwgCi0gICAgNjYsIDczLCA2NiwgNzYsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA2NiwgNzMsIDY2LCAxMjgsIDY2LCAyMDEsIDY2LCAKLSAgICA3MiwgODUsIDEyOCwgNjYsIDcyLCA3OSwgNzksIDEyOCwgNjYsIDcyLCA3OSwgMTI4LCA2NiwgNzIsIDczLCAxMjgsIDY2LCAKLSAgICA3MiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNzIsIDY5LCA2OSwgMTI4LCA2NiwgNzIsIDY5LCAxMjgsIDY2LCA3MiwgNjUsIAotICAgIDg0LCA4NCwgNzMsIDgwLCA4MiwgNzksIDc2LCAyMTMsIDY2LCA3MiwgNjUsIDc3LCAxMjgsIDY2LCA3MiwgNjUsIDY1LCAKLSAgICAxMjgsIDY2LCA3MiwgNjUsIDEyOCwgNjYsIDY5LCA4OSwgODksIDY1LCA3NiwgMTI4LCA2NiwgNjksIDg4LCAxMjgsIDY2LCAKLSAgICA2OSwgODYsIDY5LCA4MiwgNjUsIDcxLCA2OSwgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCA3OCwgMTI4LCA2NiwgNjksIAotICAgIDg0LCA4NywgNjksIDY5LCAyMDYsIDY2LCA2OSwgODQsIDcyLCAxMjgsIDY2LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgCi0gICAgODQsIDE5MywgNjYsIDY5LCAyMTIsIDY2LCA2OSwgODMsIDczLCA2OCwgMTk3LCA2NiwgNjksIDgyLCA3NSwgNjUsIDc4LCAKLSAgICA2NSwgMjA2LCA2NiwgNjksIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjksIDc5LCA4MiwgMTk1LCAKLSAgICA2NiwgNjksIDc4LCA5MCwgNjksIDc4LCAxOTcsIDY2LCA2OSwgNzgsIDg0LCAyMDcsIDY2LCA2OSwgNzgsIDg0LCAxMjgsIAotICAgIDY2LCA2OSwgNzgsIDIxMiwgNjYsIDY5LCA3OCwgNjgsIDY5LCAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgCi0gICAgNzgsIDE5NiwgNjYsIDY5LCAyMDYsIDY2LCA2OSwgNzYsIDg0LCAxMjgsIDY2LCA2OSwgNzYsIDIxMiwgNjYsIDY5LCA3NiwgCi0gICAgNzksIDIxNSwgNjYsIDY5LCA3NiwgNzYsIDcyLCA3OSwgMjA4LCA2NiwgNjksIDc2LCA3NiwgMTI4LCA2NiwgNjksIDc2LCAKLSAgICAyMDQsIDY2LCA2OSwgNzYsIDcxLCA4NCwgNzIsIDc5LCAyMTAsIDY2LCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA2NiwgNjksIAotICAgIDcyLCA3MywgNzgsIDE5NiwgNjYsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDY5LCAyMDAsIDY2LCA2OSwgCi0gICAgNzIsIDEyOCwgNjYsIDY5LCAyMDAsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDY5LCAKLSAgICA3MSwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDY2LCA2OSwgNzEsIDczLCAyMDYsIDY2LCA2OSwgNzAsIDc5LCA4MiwgCi0gICAgMTk3LCA2NiwgNjksIDY5LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA2OSwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDY5LCAKLSAgICAyMTAsIDY2LCA2OSwgNjksIDcyLCA3MywgODYsIDY5LCAxMjgsIDY2LCA2OSwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNjksIAotICAgIDIwMCwgNjYsIDY5LCA2NywgNjUsIDg1LCA4MywgNjksIDEyOCwgNjYsIDY5LCA2NSwgODYsIDY5LCAyMTAsIDY2LCA2OSwgCi0gICAgNjUsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDY5LCA2NSwgODQsIDEyOCwgNjYsIDY5LCA2NSwgMjEwLCA2NiwgNjksIDY1LCAKLSAgICA3OCwgMTI4LCA2NiwgNjksIDY1LCA3NywgNjksIDE5NiwgNjYsIDY5LCA2NSwgNjgsIDgzLCAxMjgsIDY2LCA2OSwgNjUsIAotICAgIDY3LCAyMDAsIDY2LCA2NywgNjUsIDY4LCAxMjgsIDY2LCA2NywgNjUsIDE5NiwgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIAotICAgIDY2LCA4OSwgODQsIDEyOCwgNjYsIDY2LCA4OSwgODAsIDEyOCwgNjYsIDY2LCA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgCi0gICAgMTI4LCA2NiwgNjYsIDg1LCA4NCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCA3OSwgMTI4LCA2NiwgNjYsIDg1LCAxMjgsIDY2LCA2NiwgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIAotICAgIDg0LCAxMjgsIDY2LCA2NiwgNzksIDgwLCAxMjgsIDY2LCA2NiwgNzksIDEyOCwgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIAotICAgIDY2LCA3MywgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgCi0gICAgNjYsIDczLCA2OSwgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDEyOCwgNjYsIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCAKLSAgICA4OCwgMTI4LCA2NiwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDY5LCA2OSwgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCAKLSAgICA2NiwgNjUsIDg4LCAxMjgsIDY2LCA2NiwgNjUsIDg0LCAxMjgsIDY2LCA2NiwgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIAotICAgIDY1LCAxMjgsIDY2LCA2NiwgNjUsIDEyOCwgNjYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgCi0gICAgMTI4LCA2NiwgNjUsIDg0LCA4NCwgNjksIDgyLCA4OSwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCAKLSAgICA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIAotICAgIDg0LCAyMDAsIDY2LCA2NSwgODQsIDY1LCAyMDMsIDY2LCA2NSwgODMsIDgzLCA2NSwgMTI4LCA2NiwgNjUsIDgzLCA4MywgCi0gICAgMTkzLCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIDc2LCAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIAotICAgIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgNjksIDc2LCA3MywgNzgsIDE5NywgNjYsIDY1LCA4MywgCi0gICAgNjksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCAKLSAgICA4MiwgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIAotICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgCi0gICAgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCA4MiwgNzYsIDY5LCA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCAKLSAgICA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIAotICAgIDY2LCA2NSwgMjEwLCA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAKLSAgICAxOTcsIDY2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCAKLSAgICA3OCwgNjUsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIAotICAgIDY2LCA3OSwgNzksIDgzLCAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgCi0gICAgMTI4LCA2NiwgNjUsIDc2LCA3NiwgODAsIDc5LCA3MywgNzgsIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA4NCwgMTI4LCAKLSAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgCi0gICAgNjksIDE5NiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCAKLSAgICA2NSwgNzYsIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIAotICAgIDc3LCA2NSwgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgCi0gICAgNzUsIDcyLCA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgMTc4LCAKLSAgICA2NiwgNjUsIDcyLCAxMjgsIDY2LCA2NSwgNzEsIDgzLCAxMjgsIDY2LCA2NSwgNzEsIDcxLCA2NSwgNzEsIDE5NywgNjYsIAotICAgIDY1LCA3MSwgNjUsIDEyOCwgNjYsIDY1LCA3MSwgNTEsIDEyOCwgNjYsIDY1LCAxOTksIDY2LCA2NSwgNjgsIDc3LCA3MywgCi0gICAgNzgsIDg0LCA3OSwgMjA2LCA2NiwgNjUsIDY4LCA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCAKLSAgICA2NiwgNjUsIDY4LCAxMjgsIDY2LCA2NSwgMTk2LCA2NiwgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIAotICAgIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgCi0gICAgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCAKLSAgICA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNzIsIDY1LCA3OCwgCi0gICAgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgMTI4LCAKLSAgICA2NiwgNjUsIDY3LCAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCA2NSwgODIsIAotICAgIDY5LCA4MiwgODUsIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgCi0gICAgNTcsIDEyOCwgNjYsIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgCi0gICAgNjYsIDUwLCA1MywgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCAKLSAgICA1MCwgMTI4LCA2NiwgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCAKLSAgICA2NiwgNTAsIDUyLCA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIAotICAgIDUzLCAxMjgsIDY2LCA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIAotICAgIDE3NiwgNjYsIDUwLCA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIAotICAgIDUxLCA1MCwgMTI4LCA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA1MCwgNTYsIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgCi0gICAgMTgxLCA2NiwgNTAsIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgCi0gICAgNDksIDU3LCAxMjgsIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAKLSAgICAxMjgsIDY2LCA1MCwgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCAKLSAgICA1MCwgNDksIDUwLCAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIAotICAgIDU3LCAxMjgsIDY2LCA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIAotICAgIDY2LCA1MCwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgCi0gICAgNDgsIDUwLCAxMjgsIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgCi0gICAgNjYsIDQ5LCA1NywgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCAKLSAgICA1NiwgNTIsIDEyOCwgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIAotICAgIDEyOCwgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIAotICAgIDQ5LCA1NSwgNTUsIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIAotICAgIDY2LCA0OSwgNTUsIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgCi0gICAgNTQsIDU3LCAxMjgsIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAKLSAgICAxMjgsIDY2LCA0OSwgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCAKLSAgICA1NCwgMTc4LCA2NiwgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCAKLSAgICA0OSwgNTMsIDU2LCAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIAotICAgIDEyOCwgNjYsIDQ5LCA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIAotICAgIDQ5LCA1MywgMTc3LCA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIAotICAgIDY2LCA0OSwgNTIsIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIAotICAgIDY2LCA0OSwgNTEsIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIAotICAgIDY2LCA0OSwgNTAsIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIAotICAgIDQ5LCA1MCwgMTc4LCA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIAotICAgIDQ5LCA0OCwgNTcsIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgCi0gICAgNTUsIDIwNSwgNjYsIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgCi0gICAgNjYsIDQ5LCA0OCwgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAKLSAgICAxODAsIDY2LCA0OSwgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgCi0gICAgNjYsIDQ4LCA1NiwgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAKLSAgICAxODEsIDY2LCA0OCwgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCAKLSAgICA1NiwgMTc2LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCAKLSAgICA1NSwgMTgyLCA2NiwgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAKLSAgICAxNzgsIDY2LCA0OCwgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgCi0gICAgNjYsIDQ4LCA1NCwgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgCi0gICAgNjYsIDQ4LCA1NCwgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgCi0gICAgNjYsIDQ4LCA1MywgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgCi0gICAgNjYsIDQ4LCA1MywgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgCi0gICAgNDgsIDUzLCAxNzcsIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgCi0gICAgNDgsIDUyLCA1NSwgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgCi0gICAgNDgsIDUyLCAxNzksIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgCi0gICAgNTEsIDE4NSwgNjYsIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgCi0gICAgNTIsIDEyOCwgNjYsIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgCi0gICAgMTc2LCA2NiwgNDgsIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIAotICAgIDY2LCA0OCwgNTAsIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIAotICAgIDY2LCA0OCwgNTAsIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgCi0gICAgMTI4LCA2NiwgNDgsIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIAotICAgIDY2LCA0OCwgNDksIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIAotICAgIDQ4LCA0OCwgNTcsIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIAotICAgIDY2LCA0OCwgNDgsIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgCi0gICAgMTgyLCA2NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgCi0gICAgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAKLSAgICAxNzcsIDY1LCA5MCwgODUsIDEyOCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCA2NSwgODgsIDY5LCAKLSAgICAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg3LCA2NSwgMjE3LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCAKLSAgICA4NiwgNjksIDgyLCA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgCi0gICAgNjUsIDEyOCwgNjUsIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIAotICAgIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgCi0gICAgNjUsIDg1LCA4MiwgNzMsIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIAotICAgIDkwLCA2OCwgNjUsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCAKLSAgICA1MCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgCi0gICAgMTI4LCA2NSwgODUsIDcxLCA4NSwgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NSwgODUsIDY5LCAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIAotICAgIDg0LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA4NCwgNjUsIDY3LCA3MiwgNjksIAotICAgIDE5NiwgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgMjAwLCA2NSwgODQsIDc3LCA2NSwgNjUsIDg1LCAxMjgsIAotICAgIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCA3NiwgNjksIDg0LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgCi0gICAgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgwLCA2NSwgODMsIDY3LCA2NSwgMjA2LCAKLSAgICA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIAotICAgIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgCi0gICAgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIAotICAgIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgCi0gICAgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCAKLSAgICA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIAotICAgIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgCi0gICAgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgCi0gICAgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCA4MywgMTI4LCA2NSwgODMsIDcyLCAKLSAgICA1NywgMTI4LCA2NSwgODMsIDcyLCA1MSwgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCA1MCwgMTI4LCA2NSwgCi0gICAgODIsIDg1LCA3MiwgODUsIDY1LCAxMjgsIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCAKKyAgICA3MiwgNjksIDgxLCA4NSwgNjksIDgyLCA2OSwgMTk2LCA2NywgNzIsIDY5LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzgsIAorICAgIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgCisgICAgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MywgMTk3LCA2NywgNzIsIDY5LCA2OSwgODIsIDczLCA3OCwgMTk5LCAKKyAgICA2NywgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDc1LCAyMTEsIDY3LCA3MiwgNjksIDY5LCA3NSwgCisgICAgMTI4LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDY5LCAyMTAsIDY3LCA3MiwgNjksIDY3LCAKKyAgICA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgCisgICAgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCAKKyAgICA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCAKKyAgICA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgMjA1LCA2NywgNzIsIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDczLCA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDE5NiwgNjcsIDcyLCAKKyAgICA2NSwgNjUsIDEyOCwgNjcsIDcxLCA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA4MywgMTI4LCAKKyAgICA2NywgNjksIDgyLCA2OSwgNzcsIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc1LCAxMjgsIDY3LCA2OSwgODIsIAorICAgIDQ1LCA4NywgNjUsIDEyOCwgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIAorICAgIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCAKKyAgICA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgCisgICAgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIAorICAgIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCAKKyAgICA4MiwgNzMsIDY1LCAyMDQsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIAorICAgIDgyLCA2OSwgNjgsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAKKyAgICAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIAorICAgIDczLCA3OSwgMjA2LCA2NywgNjksIDc4LCAxMjgsIDY3LCA2OSwgNzYsIDg0LCA3MywgMTk1LCA2NywgNjksIDc2LCA4MywgCisgICAgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDY5LCAKKyAgICA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIAorICAgIDE5OSwgNjcsIDY5LCA2OSwgODYsIDEyOCwgNjcsIDY5LCA2OSwgNjYsIDEyOCwgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjksIAorICAgIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAxOTMsIDY3LCA2OSwgNjgsIDIwMSwgCisgICAgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgMjAzLCAKKyAgICA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIDc5LCAxMjgsIDY3LCA2NywgNzMsIAorICAgIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIDY3LCA3MiwgNzMsIDEyOCwgNjcsIAorICAgIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzMsIDEyOCwgCisgICAgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAKKyAgICA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIAorICAgIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCAxMjgsIAorICAgIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA2NSwgCisgICAgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NywgNjUsIDg4LCAKKyAgICAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA4NSwgNzYsIAorICAgIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCA2NywgNjUsIDg1LCA2NywgNjUsIDgzLCA3MywgCisgICAgNjUsIDIwNiwgNjcsIDY1LCA4NSwgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgCisgICAgNjcsIDY1LCAyMTIsIDY3LCA2NSwgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA4MywgNzUsIDY5LCAyMTIsIDY3LCAKKyAgICA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIAorICAgIDY3LCA2NSwgODIsIDg0LCA4MiwgNzMsIDY4LCA3MSwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDY1LCA4MiwgCisgICAgMjExLCA2NywgNjUsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCAKKyAgICA2NSwgODIsIDgwLCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIDgyLCAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIAorICAgIDY5LCAyMDQsIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgCisgICAgMjAzLCA2NywgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAKKyAgICAyMTIsIDY3LCA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCAKKyAgICA2NSwgODIsIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDIxMCwgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCAKKyAgICA4MCwgODQsIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgODIsIDczLCA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIAorICAgIDgwLCA4MCwgNjksIDE5NiwgNjcsIDY1LCA4MCwgNzksIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA4NSwgNzYsIDg1LCA3NywgCisgICAgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA2NywgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgNzksIDY5LCAxMjgsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgCisgICAgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4MiwgMTkzLCA2NywgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjcsIAorICAgIDY1LCA3OCwgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDEyOCwgCisgICAgNjcsIDY1LCA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCA3NywgODAsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgNjcsIDY1LCA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NywgCisgICAgNjksIDgyLCAxOTMsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIDY1LCAKKyAgICA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgMjA0LCAKKyAgICA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDIxMCwgNjcsIAorICAgIDY1LCA3NiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY1LCA3NSwgCisgICAgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA3MywgMTI4LCA2NywgNjUsIDcyLCAxMjgsIDY3LCA2NSwgCisgICAgNjksIDgzLCA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIDg1LCA4MywgMTI4LCA2NywgNjUsIDY4LCAKKyAgICAxOTMsIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgNzYsIDY5LCA4NywgNjUsIDg5LCAxMjgsIAorICAgIDY3LCA2NSwgNjYsIDczLCA3OCwgNjksIDg0LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCAKKyAgICA2OSwgNjksIDEyOCwgNjcsIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCAKKyAgICA0OCwgNTAsIDUyLCAxMjgsIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIAorICAgIDQ5LCAxMjgsIDY3LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIAorICAgIDY3LCA0OCwgNDksIDU1LCAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgCisgICAgNDksIDUyLCAxMjgsIDY3LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAKKyAgICAxMjgsIDY3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCAKKyAgICA2NywgNDgsIDQ4LCA1NiwgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIAorICAgIDQ4LCA1MywgMTI4LCA2NywgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgCisgICAgNjcsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NywgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIAorICAgIDE5NiwgNjcsIDQ1LCA1MSwgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIAorICAgIDkwLCA3MiwgMjAxLCA2NiwgODksIDg0LCAxOTcsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgCisgICAgNzgsIDQ1LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAKKyAgICAxMjgsIDY2LCA4NywgNjksIDY5LCAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCAKKyAgICA3NywgNzMsIDgzLCA3MiwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgCisgICAgMjA2LCA2NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MCwgNzYsIDg5LCAxMjgsIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCAKKyAgICA4NCwgMjExLCA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIAorICAgIDgzLCA3MywgNzgsIDY5LCA4MywgMjExLCA2NiwgODUsIDIxMSwgNjYsIDg1LCA4MiwgMjEzLCA2NiwgODUsIDgyLCA4MiwgCisgICAgNzMsIDg0LCA3OSwgMTI4LCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCAKKyAgICA3NywgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIAorICAgIDc2LCA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgCisgICAgNzgsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDIwNiwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKKyAgICA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIAorICAgIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgCisgICAgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDg1LCA3MiwgNzMsIAorICAgIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgCisgICAgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY4LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCA3NiwgNjksIDEyOCwgNjYsIDg1LCAKKyAgICA2NiwgNjYsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIAorICAgIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIAorICAgIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgCisgICAgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCAKKyAgICA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIAorICAgIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgCisgICAgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCAKKyAgICA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIAorICAgIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNzMsIDc4LCAKKyAgICAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDY5LCA4MywgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIAorICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgMjAwLCA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgCisgICAgNzUsIDY5LCA4NCwgNjksIDE5NiwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIAorICAgIDEyOCwgNjYsIDgxLCAxMjgsIDY2LCA4MCwgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMjExLCA2NiwgNzksIDg5LCAxMjgsIDY2LCAKKyAgICA3OSwgODgsIDczLCA3OCwgMTk5LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgCisgICAgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCA2NiwgNzksIDg3LCAKKyAgICAyMDQsIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgODQsIAorICAgIDEyOCwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgMjEyLCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCA4MiwgMjE3LCA2NiwgCisgICAgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIAorICAgIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA4NCwgCisgICAgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAxOTcsIDY2LCAKKyAgICA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MSwgCisgICAgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgNjYsIDc5LCAKKyAgICA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIAorICAgIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgCisgICAgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCAKKyAgICA2OSwgMTI4LCA2NiwgNzksIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAxMjgsIDY2LCAKKyAgICA3OSwgNzYsIDIxMiwgNjYsIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIDEyOCwgNjYsIAorICAgIDc5LCA2OCwgMjE3LCA2NiwgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIDY5LCAxMjgsIAorICAgIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzYsIDc5LCA4NywgNzAsIDczLCA4MywgCisgICAgNzIsIDEyOCwgNjYsIDc2LCA3OSwgMjE1LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgNzYsIDc5LCAKKyAgICA3OSwgNjgsIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCA3NiwgNzMsIAorICAgIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCA2NiwgNzYsIDY1LCA2OCwgCisgICAgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCAKKyAgICA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIAorICAgIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgCisgICAgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIDg0LCA4NCwgNjksIDgyLCAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCAKKyAgICA2NiwgNzMsIDg0LCAxOTcsIDY2LCA3MywgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgNzcsIDczLCA3NiwgNzYsIAorICAgIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAKKyAgICAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIDgyLCA4NCwgNzIsIAorICAgIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNzEsIDE5MywgNjYsIDczLCA4MiwgCisgICAgNjgsIDEyOCwgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCAKKyAgICA2NSwgMjEwLCA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIAorICAgIDc4LCA2NSwgODIsIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDc2LCA3MywgCisgICAgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNjYsIDczLCA3NSwgNzMsIDc4LCAKKyAgICA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIDY2LCA3MywgMTk5LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNzMsIDY4LCAKKyAgICA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgNzMsIDY4LCA2NSwgNzUsIDg1LCA3OSwgMjA2LCA2NiwgNzMsIDY3LCA4OSwgNjcsIAorICAgIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NiwgNzMsIDY3LCA4OSwgCisgICAgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIDY2LCA3MywgNjYsIDc2LCA2OSwgNDUsIDY3LCAKKyAgICA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgNzIsIDg1LCAxMjgsIDY2LCA3MiwgNzksIDc5LCAKKyAgICAxMjgsIDY2LCA3MiwgNzksIDEyOCwgNjYsIDcyLCA3MywgMTI4LCA2NiwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNjYsIDcyLCA2OSwgMTI4LCA2NiwgNzIsIDY1LCA4NCwgODQsIDczLCA4MCwgODIsIDc5LCA3NiwgCisgICAgMjEzLCA2NiwgNzIsIDY1LCA3NywgMTI4LCA2NiwgNzIsIDY1LCA2NSwgMTI4LCA2NiwgNzIsIDY1LCAxMjgsIDY2LCA2OSwgCisgICAgODksIDg5LCA2NSwgNzYsIDEyOCwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjksIDg2LCA2OSwgODIsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgCisgICAgNjksIDg0LCA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgCisgICAgNjksIDgzLCA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAKKyAgICAyMTAsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCAKKyAgICA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA4NCwgMTI4LCA2NiwgNjksIDc4LCAyMTIsIDY2LCA2OSwgNzgsIAorICAgIDY4LCA2OSwgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIDc4LCAxOTYsIDY2LCA2OSwgMjA2LCA2NiwgNjksIAorICAgIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCA3MiwgCisgICAgNzksIDIwOCwgNjYsIDY5LCA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgMjA0LCA2NiwgNjksIDc2LCA3MSwgODQsIDcyLCAKKyAgICA3OSwgMjEwLCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIAorICAgIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIAorICAgIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgCisgICAgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCAKKyAgICA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIAorICAgIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIAorICAgIDY2LCA2OSwgNjUsIDY4LCA4MywgMTI4LCA2NiwgNjksIDY1LCA2NywgMjAwLCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgCisgICAgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAKKyAgICAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCAKKyAgICA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgCisgICAgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgCisgICAgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIAorICAgIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIAorICAgIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgCisgICAgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIAorICAgIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgCisgICAgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgCisgICAgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgODMsIDE5MywgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCAKKyAgICA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIAorICAgIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY2LCA2NSwgODMsIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgCisgICAgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAKKyAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIAorICAgIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgCisgICAgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAKKyAgICAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCAKKyAgICA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIAorICAgIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgCisgICAgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAKKyAgICAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIAorICAgIDY2LCA2NSwgNzYsIDc2LCA3OSwgODQsIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgCisgICAgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCAKKyAgICA2NSwgNzYsIDY1LCA3MSwgMTI4LCA2NiwgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIAorICAgIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDczLCA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgCisgICAgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCAKKyAgICA2NiwgNjUsIDcyLCA2NSwgODIsIDE3OCwgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA4NSwgNjksIDg0LCA4NCwgCisgICAgMTk3LCA2NiwgNjUsIDcxLCA4MywgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAxOTcsIDY2LCA2NSwgNzEsIDY1LCAKKyAgICAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCA3NywgNzMsIDc4LCA4NCwgNzksIAorICAgIDIwNiwgNjYsIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgNjYsIDY1LCA2OCwgCisgICAgMTI4LCA2NiwgNjUsIDE5NiwgNjYsIDY1LCA2NywgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCA2NywgNzksIDc4LCAKKyAgICAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIAorICAgIDY5LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgCisgICAgNjUsIDgzLCAyMDAsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAKKyAgICA3MiwgNjUsIDc4LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIAorICAgIDc1LCAxMjgsIDY2LCA2NSwgNjcsIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIAorICAgIDY1LCA4MiwgNjksIDgyLCA4NSwgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA1NywgMTI4LCA2NiwgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCAKKyAgICA1NCwgMTI4LCA2NiwgNTAsIDUzLCA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDY2LCA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIAorICAgIDU3LCAxMjgsIDY2LCA1MCwgNTIsIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIAorICAgIDUwLCA1MiwgNTMsIDEyOCwgNjYsIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIAorICAgIDUwLCA1MiwgMTc2LCA2NiwgNTAsIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIAorICAgIDY2LCA1MCwgNTEsIDUwLCAxMjgsIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgCisgICAgMTI4LCA2NiwgNTAsIDUwLCA1NiwgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgCisgICAgNTAsIDUwLCAxODEsIDY2LCA1MCwgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgCisgICAgNjYsIDUwLCA0OSwgNTcsIDEyOCwgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCAKKyAgICA0OSwgNTQsIDEyOCwgNjYsIDUwLCA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIAorICAgIDEyOCwgNjYsIDUwLCA0OSwgNTAsIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIAorICAgIDUwLCA0OCwgNTcsIDEyOCwgNjYsIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgCisgICAgNTQsIDEyOCwgNjYsIDUwLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgCisgICAgNjYsIDUwLCA0OCwgNTAsIDEyOCwgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NywgMTc3LCA2NiwgNDksIDU3LCA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCAKKyAgICA2NiwgNDksIDU2LCA1MiwgMTI4LCA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIAorICAgIDU2LCA0OSwgMTI4LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgCisgICAgMTI4LCA2NiwgNDksIDU1LCA1NSwgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgCisgICAgNTUsIDE3OSwgNjYsIDQ5LCA1NSwgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgCisgICAgNjYsIDQ5LCA1NCwgNTcsIDEyOCwgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NCwgNTQsIDEyOCwgNjYsIDQ5LCA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCAKKyAgICA2NiwgNDksIDU0LCAxNzgsIDY2LCA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIAorICAgIDE4NSwgNjYsIDQ5LCA1MywgNTYsIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIAorICAgIDUzLCA1MywgMTI4LCA2NiwgNDksIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgCisgICAgMTI4LCA2NiwgNDksIDUzLCAxNzcsIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgCisgICAgNTIsIDE4MSwgNjYsIDQ5LCA1MiwgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgCisgICAgNTEsIDE4MSwgNjYsIDQ5LCA1MSwgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgCisgICAgNTEsIDE3NiwgNjYsIDQ5LCA1MCwgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgCisgICAgMTc5LCA2NiwgNDksIDUwLCAxNzgsIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgCisgICAgMjA1LCA2NiwgNDksIDQ4LCA1NywgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgCisgICAgNDksIDQ4LCA1NSwgMjA1LCA2NiwgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCAKKyAgICA1NCwgMTk4LCA2NiwgNDksIDQ4LCA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCAKKyAgICA0OSwgNDgsIDE4MCwgNjYsIDQ5LCA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCAKKyAgICA1NywgMTc2LCA2NiwgNDgsIDU2LCA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCAKKyAgICA0OCwgNTYsIDE4MSwgNjYsIDQ4LCA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCAKKyAgICA2NiwgNDgsIDU2LCAxNzYsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCAKKyAgICA2NiwgNDgsIDU1LCAxODIsIDY2LCA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCAKKyAgICA0OCwgNTUsIDE3OCwgNjYsIDQ4LCA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCAKKyAgICA1NCwgMTg0LCA2NiwgNDgsIDU0LCAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCAKKyAgICA1MiwgMTI4LCA2NiwgNDgsIDU0LCA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCAKKyAgICA1NCwgMTc2LCA2NiwgNDgsIDUzLCAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCAKKyAgICA1NCwgMTI4LCA2NiwgNDgsIDUzLCAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAKKyAgICAxNzgsIDY2LCA0OCwgNTMsIDE3NywgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAKKyAgICAxODQsIDY2LCA0OCwgNTIsIDU1LCAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAKKyAgICAxODAsIDY2LCA0OCwgNTIsIDE3OSwgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgCisgICAgNjYsIDQ4LCA1MSwgMTg1LCA2NiwgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgCisgICAgNDgsIDUxLCA1MiwgMTI4LCA2NiwgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgCisgICAgNDgsIDUxLCAxNzYsIDY2LCA0OCwgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgCisgICAgNTAsIDE4MiwgNjYsIDQ4LCA1MCwgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNjYsIDQ4LCA1MCwgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgCisgICAgNDksIDU2LCAxMjgsIDY2LCA0OCwgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgCisgICAgNDksIDE4MCwgNjYsIDQ4LCA0OSwgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgCisgICAgMTc2LCA2NiwgNDgsIDQ4LCA1NywgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgCisgICAgNDgsIDE4NCwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgCisgICAgNDgsIDQ4LCAxODIsIDY2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAKKyAgICAxODEsIDY2LCA0OCwgNDgsIDUyLCAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCAKKyAgICA0OCwgMTc5LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCAKKyAgICA0OCwgNDgsIDE3NywgNjUsIDkwLCA4NSwgMTI4LCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCAKKyAgICA4OCwgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODcsIDY1LCAyMTcsIDY1LCA4NiwgNzksIDY3LCA2NSwgNjgsIAorICAgIDc5LCAxMjgsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIDg2LCA2OSwgODIsIDY1LCA3MSwgMTk3LCA2NSwgCisgICAgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCA2NSwgMTI4LCA2NSwgODYsIDY1LCA3MSwgODIsIAorICAgIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDg1LCA4NCwgODUsIDc3LCA3OCwgCisgICAgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDY1LCAKKyAgICA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCA2NSwgODUsIDgyLCA3MywgODAsIDczLCA3MSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgCisgICAgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIDUwLCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIAorICAgIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAxMjgsIDY1LCA4NSwgNzEsIDg1LCA4MywgODQsIDEyOCwgCisgICAgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4NSwgNjksIDEyOCwgNjUsIDg1LCAKKyAgICA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgODQsIDg0LCA3MywgMTk1LCA2NSwgODQsIDg0LCA3MiwgNjUsIAorICAgIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2NSwgCisgICAgMjAzLCA2NSwgODQsIDg0LCA2NSwgNjcsIDcyLCA2OSwgMTk2LCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAKKyAgICAyMDAsIDY1LCA4NCwgNzcsIDY1LCA2NSwgODUsIDEyOCwgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIAorICAgIDc2LCA2OSwgODQsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgCisgICAgODQsIDcyLCA2NSwgODAsIDY1LCA4MywgNjcsIDY1LCAyMDYsIDY1LCA4NCwgNzIsIDQ1LCA4NCwgNzIsIDY1LCA3NiwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDEyOCwgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgODIsIDE5MywgNjUsIDgzLCA4OSwgCisgICAgNzcsIDgwLCA4NCwgNzksIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCA4NCwgODIsIDc5LCA3OCwgNzksIAorICAgIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2NSwgCisgICAgODMsIDg0LCA3OSwgNzgsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NywgMTI4LCAKKyAgICA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAxMjgsIAorICAgIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA2NywgODUsIDgzLCAKKyAgICAxMjgsIDY1LCA4MywgODMsIDg5LCA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgCisgICAgODQsIDY5LCAxOTYsIDY1LCA4MywgODAsIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCAKKyAgICA4MiwgNjUsIDc2LCA3MywgNjUsIDEyOCwgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIAorICAgIDEyOCwgNjUsIDgzLCA3MiwgNTcsIDEyOCwgNjUsIDgzLCA3MiwgNTEsIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIAorICAgIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgCisgICAgNTAsIDEyOCwgNjUsIDgzLCA0NSwgODMsIDY1LCA3NCwgNjgsIDY1LCAxMjgsIDY1LCA4MiwgODUsIDcyLCA4NSwgNjUsIAorICAgIDEyOCwgNjUsIDgyLCA4NCwgMjExLCA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgCiAgICAgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgyLCA4NCwgNjUsIDY2LCAxOTcsIDY1LCA4MiwgODMsIDY5LCA3OSwgODMsIAogICAgIDEyOCwgNjUsIDgyLCA4MywgNjksIDc5LCAyMTEsIDY1LCA4MiwgODMsIDY5LCA3OCwgNzMsIDY3LCAxMjgsIDY1LCA4MiwgCiAgICAgODIsIDc5LCA4NywgODMsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCAyMTEsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCAKQEAgLTQ4OTIsNDIgKzU1MjUsNDMgQEAKICAgICA2NSwgNDUsIDg1LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIAogICAgIDY5LCA3OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgCiAgICAgMTI4LCA2NSwgODIsIDY1LCA2OCwgMTI4LCA2NSwgODIsIDY1LCAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCAKLSAgICA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIAotICAgIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgCi0gICAgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAKLSAgICAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIAotICAgIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAKLSAgICAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIAotICAgIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgCi0gICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCAKLSAgICA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIAotICAgIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCAKLSAgICA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIAotICAgIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAKLSAgICAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAKLSAgICAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIAotICAgIDEyOCwgNjUsIDc5LCA4NSwgMTI4LCA2NSwgNzksIDgyLCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgCi0gICAgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCAKLSAgICA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIAotICAgIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgCi0gICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIAotICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCAKLSAgICA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgCi0gICAgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIAotICAgIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCAKLSAgICA4MywgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NSwgNzgsIAotICAgIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCAxOTMsIDY1LCA3OCwgODQsIDY1LCA4MiwgCi0gICAgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCA4MywgODUsIDIxOCwgNjUsIDc4LCA4MywgNzIsIDY5LCAKLSAgICAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIDIwNywgNjUsIDc4LCA3OCwgODUsIDczLCA4NCwgMjE3LCAKLSAgICA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3OCwgNzgsIDY1LCA2NSwgODUsIDEyOCwgNjUsIAotICAgIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIDEyOCwgNjUsIDc4LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgCi0gICAgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDgzLCAKLSAgICA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAyMTcsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNjgsIDEyOCwgNjUsIAotICAgIDc4LCA3MSwgNzYsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgCi0gICAgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCAKLSAgICA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgCi0gICAgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAKKyAgICA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA4NSwgNjYsIAorICAgIDEyOCwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCA2OSwgCisgICAgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIDgyLCAKKyAgICA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgNzYsIAorICAgIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCA4MiwgCisgICAgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgMjExLCAKKyAgICA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIDg0LCAKKyAgICA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIAorICAgIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCA2NSwgCisgICAgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIAorICAgIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAKKyAgICAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCAKKyAgICA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzksIDg1LCAxMjgsIDY1LCA3OSwgODIsIDEyOCwgNjUsIAorICAgIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCA4OSwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAKKyAgICAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgCisgICAgMTI4LCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIAorICAgIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgCisgICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgNzMsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIAorICAgIDc5LCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCAKKyAgICA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIAorICAgIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDY5LCA0NSwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCAKKyAgICA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgCisgICAgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDY5LCAKKyAgICA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgNzgsIAorICAgIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCA3OCwgCisgICAgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDc0LCA3MywgCisgICAgMTI4LCA2NSwgNzgsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCAKKyAgICA4NSwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgODMsIDg0LCA4MiwgNzksIDIwNSwgNjUsIDc4LCA3MSwgODIsIAorICAgIDIxNywgNjUsIDc4LCA3MSwgNzYsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIDcxLCA3NiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgCisgICAgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAKKyAgICAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIAorICAgIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgCisgICAgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA0NSwgNzgsIDczLCA4MywgNzAsIAogICAgIDEyOCwgNjUsIDc3LCA4MCwgODMsIDEyOCwgNjUsIDc3LCA4MCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc3LCA4MCwgCiAgICAgNjksIDgyLCA4MywgNjUsIDc4LCA2OCwgMTI4LCA2NSwgNzcsIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDE5NiwgNjUsIDc3LCAKICAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgNzMsIApAQCAtNDk0MSwxMTU4MCArNTU3NSwxMjA2MiBAQAogICAgIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgCiAgICAgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCAKICAgICA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIAotICAgIDc3LCAxMjgsIDY1LCA3NiwgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgCi0gICAgNzYsIDc2LCAyMDEsIDY1LCA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCAKLSAgICA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIAotICAgIDg1LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgMjA2LCA2NSwgNzYsIDcxLCA3MywgCi0gICAgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgNzYsIDY5LCA4MiwgODQsIDEyOCwgCi0gICAgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCA2NiwgNzMsIDY3LCAxMjgsIDY1LCA3NiwgNjksIDcwLCAKLSAgICAxMjgsIDY1LCA3NiwgNjYsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIDEyOCwgNjUsIAotICAgIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgMTI4LCA2NSwgCi0gICAgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCA3NiwgODMsIAotICAgIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIDE5NSwgCi0gICAgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIDY1LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgNzksIAotICAgIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCAKLSAgICAxOTcsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCA3OCwgNzgsIDEyOCwgNjUsIDczLCA3NiwgNzcsIDEyOCwgNjUsIDczLCAKLSAgICA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAxMjgsIDY1LCA3MiwgODMsIDY4LCA2NSwgCi0gICAgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDc5LCAyMDUsIDY1LCA3MiwgNjUsIDc4LCAxOTksIDY1LCA3MiwgCi0gICAgNjUsIDcxLCA3MSwgNjUsIDIxMCwgNjUsIDcyLCA2NSwgNjgsIDEyOCwgNjUsIDcxLCA4NSwgNzgsIDcxLCAxMjgsIDY1LCAKLSAgICA3MSwgNzksIDcxLCAyMDEsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzEsIAotICAgIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3MSwgNjUsIDczLCA3OCwgODMsIDIxMiwgNjUsIDcxLCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCAKLSAgICA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgCi0gICAgNjgsIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NSwgNzAsIDcwLCA3MywgMjE2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIAotICAgIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCA2NywgCi0gICAgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCA2OSwgCi0gICAgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgMTI4LCAKLSAgICA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgCi0gICAgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCA2OSwgMTI4LCAKLSAgICA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjgsIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNjUsIAotICAgIDY4LCA2OSwgNzEsIDEyOCwgNjUsIDY4LCA2OSwgMTk5LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgCi0gICAgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgMjExLCA2NSwgNjgsIDY4LCA2NSwgNzUsIDEyOCwgNjUsIDY4LCA2NSwgMjAzLCAKLSAgICA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY1LCA2NywgODUsIDg0LCA2OSwgCi0gICAgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgMTk3LCAKLSAgICA2NSwgNjcsIDg0LCA4NSwgNjUsIDc2LCA3NiwgMjE3LCA2NSwgNjcsIDg0LCA3MywgODYsIDY1LCA4NCwgMTk3LCA2NSwgNjcsIAotICAgIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDczLCAxOTUsIDY1LCA2NywgNzUsIDc4LCA3OSwgODcsIDc2LCA2OSwgNjgsIDcxLCAKLSAgICA2OSwgMTI4LCA2NSwgNjcsIDY3LCA4NSwgNzcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIAotICAgIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDY3LCA2NywgNzksIDc3LCA3NywgNzksIDY4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjUsIDY3LCA2NywgNjksIDgwLCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCA0NSwgODMsIDg0LCA2NSwgNjcsIAotICAgIDY3LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCAKLSAgICAyMTIsIDY1LCA2NywgNjUsIDY4LCA2OSwgNzcsIDIxNywgNjUsIDY2LCA4OSwgODMsIDc3LCA2NSwgMjA0LCA2NSwgNjYsIAotICAgIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2NiwgNzUsIDcyLCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NSwgCi0gICAgNjYsIDY2LCA4MiwgNjksIDg2LCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDY2LCA2NSwgNzAsIDczLCA3NiwgNzMsIAotICAgIDEyOCwgNjUsIDY2LCAxNzgsIDY1LCA2NiwgNDksIDU3LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIAotICAgIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgCi0gICAgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NiwgMTI4LCA2NSwgNjYsIDQ5LCA1MSwgNDksIDY1LCAxMjgsIDY1LCA2NiwgNDksIDUwLCAKLSAgICA1MSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIAotICAgIDQ5LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDU2LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDU2LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU2LCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDU1LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDUyLCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIAotICAgIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgCi0gICAgNTQsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNTMsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTIsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDgsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgCi0gICAgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCAKLSAgICA1MiwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OCwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NSwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCAKLSAgICA1MSwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzcsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTAsIDUwLCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3NywgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDcwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NSwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MiwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NSwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIAotICAgIDY1LCA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIAotICAgIDY2LCA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgCi0gICAgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA1MCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA1MCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgCi0gICAgNjUsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCAKLSAgICA2NSwgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCAKLSAgICA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDU1LCAxMjgsIDY1LCA1NiwgNDgsIAotICAgIDU0LCAxMjgsIDY1LCA1NiwgNDgsIDUzLCAxMjgsIDY1LCA1NiwgNDgsIDUyLCAxMjgsIDY1LCA1NiwgNDgsIDUxLCAxMjgsIAotICAgIDY1LCA1NiwgNDgsIDUwLCAxMjgsIDY1LCA1NiwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDQ4LCAxMjgsIDY1LCA1NSwgCi0gICAgNTEsIDE3OCwgNjUsIDU1LCA1MCwgMTgyLCA2NSwgNTUsIDQ5LCAxODMsIDY1LCA1NSwgNDksIDE4MSwgNjUsIDU1LCA0OSwgCi0gICAgMTgwLCA2NSwgNTUsIDQ5LCAxNzksIDY1LCA1NSwgNDksIDE3OCwgNjUsIDU1LCA0OSwgMTc3LCA2NSwgNTUsIDQ5LCAxNzYsIAotICAgIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTgyLCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MCwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAKLSAgICAxNzksIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTc4LCA2NSwgNTUsIDQ4LCAxODUsIDY1LCA1NSwgNDgsIDE4NCwgNjUsIDU1LCAKLSAgICA0OCwgMTgzLCA2NSwgNTUsIDQ4LCAxODIsIDY1LCA1NSwgNDgsIDE4MSwgNjUsIDU1LCA0OCwgMTgwLCA2NSwgNTUsIDQ4LCAKLSAgICAxNzksIDY1LCA1NSwgNDgsIDE3OCwgNjUsIDU1LCA0OCwgMTc3LCA2NSwgNTQsIDU0LCA1MiwgMTI4LCA2NSwgNTQsIDU0LCAKLSAgICA1MSwgMTI4LCA2NSwgNTQsIDU0LCA1MCwgMTI4LCA2NSwgNTQsIDU0LCA0OSwgMTI4LCA2NSwgNTQsIDU0LCA0OCwgMTI4LCAKLSAgICA2NSwgNTQsIDUzLCA1NywgMTI4LCA2NSwgNTQsIDUzLCA1NiwgMTI4LCA2NSwgNTQsIDUzLCA1NSwgMTI4LCA2NSwgNTQsIAotICAgIDUzLCA1NCwgMTI4LCA2NSwgNTQsIDUzLCA1MywgMTI4LCA2NSwgNTQsIDUzLCA1MiwgMTI4LCA2NSwgNTQsIDUzLCA1MSwgCi0gICAgMTI4LCA2NSwgNTQsIDUzLCA1MCwgMTI4LCA2NSwgNTQsIDUzLCA0OSwgMTI4LCA2NSwgNTQsIDUyLCA1NywgMTI4LCA2NSwgCi0gICAgNTQsIDUyLCA1NiwgMTI4LCA2NSwgNTQsIDUyLCA1NCwgMTI4LCA2NSwgNTQsIDUyLCA1MywgMTI4LCA2NSwgNTQsIDUyLCAKLSAgICA1MiwgMTI4LCA2NSwgNTQsIDUyLCA1MSwgMTI4LCA2NSwgNTQsIDUyLCA1MCwgMTI4LCA2NSwgNTQsIDUyLCA0OCwgMTI4LCAKLSAgICA2NSwgNTQsIDUxLCA1NiwgMTI4LCA2NSwgNTQsIDUxLCA1NSwgMTI4LCA2NSwgNTQsIDUxLCA1MiwgMTI4LCA2NSwgNTQsIAotICAgIDUwLCA1NywgMTI4LCA2NSwgNTQsIDUwLCA1NiwgMTI4LCA2NSwgNTQsIDUwLCA1NSwgMTI4LCA2NSwgNTQsIDUwLCA1NCwgCi0gICAgMTI4LCA2NSwgNTQsIDUwLCA1MiwgMTI4LCA2NSwgNTQsIDUwLCA1MSwgMTI4LCA2NSwgNTQsIDUwLCA1MCwgMTI4LCA2NSwgCi0gICAgNTQsIDUwLCA0OSwgMTI4LCA2NSwgNTQsIDUwLCA0OCwgMTI4LCA2NSwgNTQsIDQ5LCA1NywgMTI4LCA2NSwgNTQsIDQ5LCAKLSAgICA1NiwgMTI4LCA2NSwgNTQsIDQ5LCA1NSwgMTI4LCA2NSwgNTQsIDQ5LCA1NCwgMTI4LCA2NSwgNTQsIDQ5LCA1MywgMTI4LCAKLSAgICA2NSwgNTQsIDQ5LCA1MiwgMTI4LCA2NSwgNTQsIDQ5LCA1MSwgMTI4LCA2NSwgNTQsIDQ5LCA1MCwgMTI4LCA2NSwgNTQsIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNTQsIDQ5LCA0OCwgMTI4LCA2NSwgNTQsIDQ4LCA1NywgMTI4LCA2NSwgNTQsIDQ4LCA1NiwgCi0gICAgMTI4LCA2NSwgNTQsIDQ4LCA1NCwgMTI4LCA2NSwgNTQsIDQ4LCA1MiwgMTI4LCA2NSwgNTQsIDQ4LCA1MSwgMTI4LCA2NSwgCi0gICAgNTQsIDQ4LCA1MCwgMTI4LCA2NSwgNTQsIDQ4LCA0OSwgMTI4LCA2NSwgNTQsIDQ4LCA0OCwgMTI4LCA2NSwgNTMsIDU3LCAKLSAgICA1NiwgMTI4LCA2NSwgNTMsIDU3LCA1NCwgMTI4LCA2NSwgNTMsIDU3LCA1MywgMTI4LCA2NSwgNTMsIDU3LCA1MiwgMTI4LCAKLSAgICA2NSwgNTMsIDU3LCA1MCwgMTI4LCA2NSwgNTMsIDU3LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA1NywgMTI4LCA2NSwgNTMsIAotICAgIDU2LCA1NiwgMTI4LCA2NSwgNTMsIDU2LCA1NSwgMTI4LCA2NSwgNTMsIDU2LCA1NCwgMTI4LCA2NSwgNTMsIDU2LCA1MywgCi0gICAgMTI4LCA2NSwgNTMsIDU2LCA1MiwgMTI4LCA2NSwgNTMsIDU2LCA1MSwgMTI4LCA2NSwgNTMsIDU2LCA1MCwgMTI4LCA2NSwgCi0gICAgNTMsIDU2LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA0OCwgMTI4LCA2NSwgNTMsIDU1LCA1NywgMTI4LCA2NSwgNTMsIDU1LCAKLSAgICA1NiwgMTI4LCA2NSwgNTMsIDU1LCA1NSwgMTI4LCA2NSwgNTMsIDU1LCA1NCwgMTI4LCA2NSwgNTMsIDU1LCA1MywgMTI4LCAKLSAgICA2NSwgNTMsIDU1LCA1MiwgMTI4LCA2NSwgNTMsIDU1LCA1MSwgMTI4LCA2NSwgNTMsIDU1LCA1MCwgMTI4LCA2NSwgNTMsIAotICAgIDU1LCA0OSwgMTI4LCA2NSwgNTMsIDU1LCA0OCwgMTI4LCA2NSwgNTMsIDU0LCA1NywgMTI4LCA2NSwgNTMsIDU0LCA1NiwgCi0gICAgMTI4LCA2NSwgNTMsIDU0LCA1NCwgMTI4LCA2NSwgNTMsIDU0LCA1MywgMTI4LCA2NSwgNTMsIDU0LCA1MiwgMTI4LCA2NSwgCi0gICAgNTMsIDU0LCA1MSwgMTI4LCA2NSwgNTMsIDUzLCA1NywgMTI4LCA2NSwgNTMsIDUzLCA1NSwgMTI4LCA2NSwgNTMsIDUzLCAKLSAgICA1NCwgMTI4LCA2NSwgNTMsIDUzLCA1MywgMTI4LCA2NSwgNTMsIDUzLCA1MiwgMTI4LCA2NSwgNTMsIDUzLCA1MSwgMTI4LCAKLSAgICA2NSwgNTMsIDUzLCA1MCwgMTI4LCA2NSwgNTMsIDUzLCA0OSwgMTI4LCA2NSwgNTMsIDUzLCA0OCwgMTI4LCA2NSwgNTMsIAotICAgIDUyLCA1NywgMTI4LCA2NSwgNTMsIDUyLCA1NiwgMTI4LCA2NSwgNTMsIDUyLCA1NSwgMTI4LCA2NSwgNTMsIDUyLCA1MywgCi0gICAgMTI4LCA2NSwgNTMsIDUyLCA1MCwgMTI4LCA2NSwgNTMsIDUyLCA0OSwgMTI4LCA2NSwgNTMsIDUyLCA0OCwgMTI4LCA2NSwgCi0gICAgNTMsIDUxLCA1NywgMTI4LCA2NSwgNTMsIDUxLCA1NiwgMTI4LCA2NSwgNTMsIDUxLCA1NSwgMTI4LCA2NSwgNTMsIDUxLCAKLSAgICA1NCwgMTI4LCA2NSwgNTMsIDUxLCA1MywgMTI4LCA2NSwgNTMsIDUxLCA1MiwgMTI4LCA2NSwgNTMsIDUxLCA1MCwgMTI4LCAKLSAgICA2NSwgNTMsIDUxLCA0OSwgMTI4LCA2NSwgNTMsIDUxLCA0OCwgMTI4LCA2NSwgNTMsIDUwLCA1NywgMTI4LCA2NSwgNTMsIAotICAgIDUwLCA1NiwgMTI4LCA2NSwgNTMsIDUwLCA1NSwgMTI4LCA2NSwgNTMsIDUwLCA1NCwgMTI4LCA2NSwgNTMsIDUwLCA1MywgCi0gICAgMTI4LCA2NSwgNTMsIDUwLCA1MiwgMTI4LCA2NSwgNTMsIDUwLCA1MSwgMTI4LCA2NSwgNTMsIDUwLCA1MCwgMTI4LCA2NSwgCi0gICAgNTMsIDUwLCA0OSwgMTI4LCA2NSwgNTMsIDUwLCA0OCwgMTI4LCA2NSwgNTMsIDQ5LCA1NywgMTI4LCA2NSwgNTMsIDQ5LCAKLSAgICA1NiwgMTI4LCA2NSwgNTMsIDQ5LCA1NSwgMTI4LCA2NSwgNTMsIDQ5LCA1NCwgMTI4LCA2NSwgNTMsIDQ5LCA1MywgMTI4LCAKLSAgICA2NSwgNTMsIDQ5LCA1MiwgMTI4LCA2NSwgNTMsIDQ5LCA1MSwgMTI4LCA2NSwgNTMsIDQ5LCA1MCwgMTI4LCA2NSwgNTMsIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNTMsIDQ5LCA0OCwgMTI4LCA2NSwgNTMsIDQ4LCA1NywgMTI4LCA2NSwgNTMsIDQ4LCA1NiwgCi0gICAgMTI4LCA2NSwgNTMsIDQ4LCA1NSwgMTI4LCA2NSwgNTMsIDQ4LCA1NCwgMTI4LCA2NSwgNTMsIDQ4LCA1MywgMTI4LCA2NSwgCi0gICAgNTMsIDQ4LCA1MiwgMTI4LCA2NSwgNTMsIDQ4LCA1MSwgMTI4LCA2NSwgNTMsIDQ4LCA1MCwgMTI4LCA2NSwgNTMsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NSwgNTIsIDU3LCA1NSwgMTI4LCA2NSwgNTIsIDU3LCA1NCwgMTI4LCA2NSwgNTIsIDU3LCA1MywgMTI4LCAKLSAgICA2NSwgNTIsIDU3LCA1MiwgMTI4LCA2NSwgNTIsIDU3LCA1MSwgMTI4LCA2NSwgNTIsIDU3LCA1MCwgMTI4LCA2NSwgNTIsIAotICAgIDU3LCA0OSwgMTI4LCA2NSwgNTIsIDU3LCA0OCwgMTI4LCA2NSwgNTIsIDU2LCA1NywgMTI4LCA2NSwgNTIsIDU2LCA1NiwgCi0gICAgMTI4LCA2NSwgNTIsIDU2LCA1NSwgMTI4LCA2NSwgNTIsIDU2LCA1NCwgMTI4LCA2NSwgNTIsIDU2LCA1MywgMTI4LCA2NSwgCi0gICAgNTIsIDU2LCA1MiwgMTI4LCA2NSwgNTIsIDU2LCA1MSwgMTI4LCA2NSwgNTIsIDU2LCA1MCwgMTI4LCA2NSwgNTIsIDU2LCAKLSAgICA0OSwgMTI4LCA2NSwgNTIsIDU2LCA0OCwgMTI4LCA2NSwgNTIsIDU1LCA1NywgMTI4LCA2NSwgNTIsIDU1LCA1NiwgMTI4LCAKLSAgICA2NSwgNTIsIDU1LCA1NSwgMTI4LCA2NSwgNTIsIDU1LCA1NCwgMTI4LCA2NSwgNTIsIDU1LCA1MywgMTI4LCA2NSwgNTIsIAotICAgIDU1LCA1MiwgMTI4LCA2NSwgNTIsIDU1LCA1MSwgMTI4LCA2NSwgNTIsIDU1LCA1MCwgMTI4LCA2NSwgNTIsIDU1LCA0OSwgCi0gICAgMTI4LCA2NSwgNTIsIDU1LCA0OCwgMTI4LCA2NSwgNTIsIDU0LCA1NywgMTI4LCA2NSwgNTIsIDU0LCA1NiwgMTI4LCA2NSwgCi0gICAgNTIsIDU0LCA1NSwgMTI4LCA2NSwgNTIsIDU0LCA1NCwgMTI4LCA2NSwgNTIsIDU0LCA1MywgMTI4LCA2NSwgNTIsIDU0LCAKLSAgICA1MiwgMTI4LCA2NSwgNTIsIDU0LCA1MSwgMTI4LCA2NSwgNTIsIDU0LCA1MCwgMTI4LCA2NSwgNTIsIDU0LCA0OSwgMTI4LCAKLSAgICA2NSwgNTIsIDU0LCA0OCwgMTI4LCA2NSwgNTIsIDUzLCA1NywgMTI4LCA2NSwgNTIsIDUzLCA1NiwgMTI4LCA2NSwgNTIsIAotICAgIDUzLCA1NSwgNjUsIDEyOCwgNjUsIDUyLCA1MywgNTUsIDEyOCwgNjUsIDUyLCA1MywgNTQsIDEyOCwgNjUsIDUyLCA1MywgCi0gICAgNTMsIDEyOCwgNjUsIDUyLCA1MywgNTIsIDEyOCwgNjUsIDUyLCA1MywgNTEsIDEyOCwgNjUsIDUyLCA1MywgNTAsIDEyOCwgCi0gICAgNjUsIDUyLCA1MywgNDksIDEyOCwgNjUsIDUyLCA1MywgNDgsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MiwgNTIsIDU3LCAxMjgsIDY1LCA1MiwgNTIsIDU2LCAxMjgsIDY1LCA1MiwgNTIsIDU1LCAxMjgsIDY1LCA1MiwgNTIsIAotICAgIDU0LCAxMjgsIDY1LCA1MiwgNTIsIDUzLCAxMjgsIDY1LCA1MiwgNTIsIDUyLCAxMjgsIDY1LCA1MiwgNTIsIDUxLCAxMjgsIAotICAgIDY1LCA1MiwgNTIsIDUwLCAxMjgsIDY1LCA1MiwgNTIsIDQ5LCAxMjgsIDY1LCA1MiwgNTIsIDQ4LCAxMjgsIDY1LCA1MiwgCi0gICAgNTEsIDU3LCAxMjgsIDY1LCA1MiwgNTEsIDU2LCAxMjgsIDY1LCA1MiwgNTEsIDU1LCAxMjgsIDY1LCA1MiwgNTEsIDU0LCAKLSAgICAxMjgsIDY1LCA1MiwgNTEsIDUzLCAxMjgsIDY1LCA1MiwgNTEsIDUyLCAxMjgsIDY1LCA1MiwgNTEsIDUxLCAxMjgsIDY1LCAKLSAgICA1MiwgNTEsIDUwLCAxMjgsIDY1LCA1MiwgNTEsIDQ5LCAxMjgsIDY1LCA1MiwgNTEsIDQ4LCAxMjgsIDY1LCA1MiwgNTAsIAotICAgIDU3LCAxMjgsIDY1LCA1MiwgNTAsIDU2LCAxMjgsIDY1LCA1MiwgNTAsIDU1LCAxMjgsIDY1LCA1MiwgNTAsIDU0LCAxMjgsIAotICAgIDY1LCA1MiwgNTAsIDUzLCAxMjgsIDY1LCA1MiwgNTAsIDUyLCAxMjgsIDY1LCA1MiwgNTAsIDUxLCAxMjgsIDY1LCA1MiwgCi0gICAgNTAsIDUwLCAxMjgsIDY1LCA1MiwgNTAsIDQ5LCAxMjgsIDY1LCA1MiwgNTAsIDQ4LCAxMjgsIDY1LCA1MiwgNDksIDU3LCAKLSAgICAxMjgsIDY1LCA1MiwgNDksIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgMTI4LCA2NSwgNTIsIAotICAgIDQ5LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTUsIDEyOCwgNjUsIDUyLCA0OSwgNTQsIDQ1LCA4NiwgCi0gICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU0LCAxMjgsIDY1LCA1MiwgNDksIDUzLCA0NSwgODYsIDY1LCA4MywgMTI4LCAKLSAgICA2NSwgNTIsIDQ5LCA1MywgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIAotICAgIDEyOCwgNjUsIDUyLCA0OSwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUxLCAxMjgsIDY1LCA1MiwgCi0gICAgNDksIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MCwgMTI4LCA2NSwgNTIsIDQ5LCA0OSwgNDUsIDg2LCAKLSAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDEyOCwgNjUsIDUyLCA0OSwgNDgsIDE5MywgNjUsIDUyLCA0OSwgNDgsIAotICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDE3NiwgNjUsIDUyLCA0OCwgNTcsIDQ1LCA4NiwgNjUsIDgzLCAKLSAgICAxMjgsIDY1LCA1MiwgNDgsIDU3LCAxMjgsIDY1LCA1MiwgNDgsIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAotICAgIDQ4LCA1NiwgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDEyOCwgCi0gICAgNjUsIDUyLCA0OCwgNTQsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU0LCAxMjgsIDY1LCA1MiwgNDgsIDUzLCAKLSAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MywgMTI4LCA2NSwgNTIsIDQ4LCA1MiwgNDUsIDg2LCA2NSwgODMsIAotICAgIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgCi0gICAgNDgsIDUxLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgMTI4LCAKLSAgICA2NSwgNTIsIDQ4LCA0OSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNDksIDEyOCwgNjUsIDUyLCA0OCwgNDgsIAotICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAxMjgsIDY1LCA1MSwgNTcsIDU3LCAxMjgsIDY1LCA1MSwgCi0gICAgNTcsIDU2LCAxMjgsIDY1LCA1MSwgNTcsIDU1LCAxMjgsIDY1LCA1MSwgNTcsIDU0LCAxMjgsIDY1LCA1MSwgNTcsIDUzLCAKLSAgICAxMjgsIDY1LCA1MSwgNTcsIDUyLCAxMjgsIDY1LCA1MSwgNTcsIDE3OSwgNjUsIDUxLCA1NywgNTAsIDEyOCwgNjUsIDUxLCAKLSAgICA1NywgNDksIDEyOCwgNjUsIDUxLCA1NywgNDgsIDEyOCwgNjUsIDUxLCA1NiwgNTcsIDEyOCwgNjUsIDUxLCA1NiwgNTYsIAotICAgIDEyOCwgNjUsIDUxLCA1NiwgNTUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCAxMjgsIAotICAgIDY1LCA1MSwgNTYsIDUzLCAxMjgsIDY1LCA1MSwgNTYsIDUyLCAxMjgsIDY1LCA1MSwgNTYsIDUxLCA2NSwgMTI4LCA2NSwgCi0gICAgNTEsIDU2LCAxNzksIDY1LCA1MSwgNTYsIDUwLCAxMjgsIDY1LCA1MSwgNTYsIDQ5LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCAKLSAgICA0OSwgMTI4LCA2NSwgNTEsIDU2LCA0OCwgMTI4LCA2NSwgNTEsIDU1LCA1NywgMTI4LCA2NSwgNTEsIDU1LCA1NiwgMTI4LCAKLSAgICA2NSwgNTEsIDU1LCA1NSwgMTI4LCA2NSwgNTEsIDU1LCA1NCwgMTI4LCA2NSwgNTEsIDU1LCA1MywgMTI4LCA2NSwgNTEsIAotICAgIDU1LCA1MiwgMTI4LCA2NSwgNTEsIDU1LCA1MSwgMTI4LCA2NSwgNTEsIDU1LCA1MCwgMTI4LCA2NSwgNTEsIDU1LCA0OSwgCi0gICAgNjUsIDEyOCwgNjUsIDUxLCA1NSwgNDksIDEyOCwgNjUsIDUxLCA1NSwgNDgsIDEyOCwgNjUsIDUxLCA1NCwgNTcsIDEyOCwgCi0gICAgNjUsIDUxLCA1NCwgNTYsIDY1LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAxMjgsIDY1LCA1MSwgNTQsIDU1LCAxMjgsIDY1LCAKLSAgICA1MSwgNTQsIDU0LCAxMjgsIDY1LCA1MSwgNTQsIDUzLCAxMjgsIDY1LCA1MSwgNTQsIDUyLCA2NSwgMTI4LCA2NSwgNTEsIAotICAgIDU0LCA1MiwgMTI4LCA2NSwgNTEsIDU0LCA1MSwgMTI4LCA2NSwgNTEsIDU0LCA1MCwgMTI4LCA2NSwgNTEsIDU0LCA0OSwgCi0gICAgMTI4LCA2NSwgNTEsIDU0LCA0OCwgMTI4LCA2NSwgNTEsIDUzLCA1NywgNjUsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDEyOCwgCi0gICAgNjUsIDUxLCA1MywgNTYsIDEyOCwgNjUsIDUxLCA1MywgNTUsIDEyOCwgNjUsIDUxLCA1MywgNTQsIDEyOCwgNjUsIDUxLCAKLSAgICA1MywgNTMsIDEyOCwgNjUsIDUxLCA1MywgNTIsIDEyOCwgNjUsIDUxLCA1MywgNTEsIDEyOCwgNjUsIDUxLCA1MywgNTAsIAotICAgIDEyOCwgNjUsIDUxLCA1MywgNDksIDEyOCwgNjUsIDUxLCA1MywgNDgsIDEyOCwgNjUsIDUxLCA1MiwgNTcsIDEyOCwgNjUsIAotICAgIDUxLCA1MiwgNTYsIDEyOCwgNjUsIDUxLCA1MiwgNTUsIDEyOCwgNjUsIDUxLCA1MiwgNTQsIDEyOCwgNjUsIDUxLCA1MiwgCi0gICAgNTMsIDEyOCwgNjUsIDUxLCA1MiwgNTIsIDEyOCwgNjUsIDUxLCA1MiwgNTEsIDEyOCwgNjUsIDUxLCA1MiwgNTAsIDEyOCwgCi0gICAgNjUsIDUxLCA1MiwgNDksIDEyOCwgNjUsIDUxLCA1MiwgNDgsIDEyOCwgNjUsIDUxLCA1MSwgNTcsIDEyOCwgNjUsIDUxLCAKLSAgICA1MSwgNTYsIDEyOCwgNjUsIDUxLCA1MSwgNTUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY3LCAxMjgsIDY1LCA1MSwgNTEsIAotICAgIDU0LCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDEyOCwgNjUsIDUxLCA1MSwgCi0gICAgNTMsIDEyOCwgNjUsIDUxLCA1MSwgNTIsIDEyOCwgNjUsIDUxLCA1MSwgNTEsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY3LCAKLSAgICAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIAotICAgIDEyOCwgNjUsIDUxLCA1MSwgNDksIDEyOCwgNjUsIDUxLCA1MSwgNDgsIDEyOCwgNjUsIDUxLCA1MCwgNTcsIDY1LCAxMjgsIAotICAgIDY1LCA1MSwgNTAsIDU3LCAxMjgsIDY1LCA1MSwgNTAsIDU2LCAxMjgsIDY1LCA1MSwgNTAsIDU1LCAxMjgsIDY1LCA1MSwgCi0gICAgNTAsIDU0LCAxMjgsIDY1LCA1MSwgNTAsIDUzLCAxMjgsIDY1LCA1MSwgNTAsIDUyLCAxMjgsIDY1LCA1MSwgNTAsIDUxLCAKLSAgICAxMjgsIDY1LCA1MSwgNTAsIDUwLCAxMjgsIDY1LCA1MSwgNTAsIDQ5LCAxMjgsIDY1LCA1MSwgNTAsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MSwgNDksIDU3LCAxMjgsIDY1LCA1MSwgNDksIDU2LCAxMjgsIDY1LCA1MSwgNDksIDU1LCAxMjgsIDY1LCA1MSwgNDksIAotICAgIDU0LCAxMjgsIDY1LCA1MSwgNDksIDUzLCAxMjgsIDY1LCA1MSwgNDksIDUyLCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NywgCi0gICAgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjYsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNDksIDUxLCAKLSAgICAxMjgsIDY1LCA1MSwgNDksIDUwLCAxMjgsIDY1LCA1MSwgNDksIDQ5LCAxMjgsIDY1LCA1MSwgNDksIDQ4LCAxMjgsIDY1LCAKLSAgICA1MSwgNDgsIDU3LCA2NywgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjYsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY1LCAxMjgsIAotICAgIDY1LCA1MSwgNDgsIDU3LCAxMjgsIDY1LCA1MSwgNDgsIDU2LCAxMjgsIDY1LCA1MSwgNDgsIDU1LCAxMjgsIDY1LCA1MSwgCi0gICAgNDgsIDU0LCAxMjgsIDY1LCA1MSwgNDgsIDUzLCAxMjgsIDY1LCA1MSwgNDgsIDUyLCAxMjgsIDY1LCA1MSwgNDgsIDUxLCAKLSAgICAxMjgsIDY1LCA1MSwgNDgsIDUwLCAxMjgsIDY1LCA1MSwgNDgsIDQ5LCAxMjgsIDY1LCA1MSwgNDgsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MCwgNTcsIDU3LCA2NSwgMTI4LCA2NSwgNTAsIDU3LCA1NywgMTI4LCA2NSwgNTAsIDU3LCA1NiwgMTI4LCA2NSwgNTAsIAotICAgIDU3LCA1NSwgMTI4LCA2NSwgNTAsIDU3LCA1NCwgMTI4LCA2NSwgNTAsIDU3LCA1MywgMTI4LCA2NSwgNTAsIDU3LCA1MiwgCi0gICAgNjUsIDEyOCwgNjUsIDUwLCA1NywgNTIsIDEyOCwgNjUsIDUwLCA1NywgNTEsIDEyOCwgNjUsIDUwLCA1NywgNTAsIDEyOCwgCi0gICAgNjUsIDUwLCA1NywgNDksIDEyOCwgNjUsIDUwLCA1NywgNDgsIDEyOCwgNjUsIDUwLCA1NiwgNTcsIDY1LCAxMjgsIDY1LCAKLSAgICA1MCwgNTYsIDU3LCAxMjgsIDY1LCA1MCwgNTYsIDU2LCAxMjgsIDY1LCA1MCwgNTYsIDU1LCAxMjgsIDY1LCA1MCwgNTYsIAotICAgIDU0LCAxMjgsIDY1LCA1MCwgNTYsIDUzLCAxMjgsIDY1LCA1MCwgNTYsIDUyLCAxMjgsIDY1LCA1MCwgNTYsIDUxLCAxMjgsIAotICAgIDY1LCA1MCwgNTYsIDUwLCAxMjgsIDY1LCA1MCwgNTYsIDQ5LCAxMjgsIDY1LCA1MCwgNTYsIDQ4LCAxMjgsIDY1LCA1MCwgCi0gICAgNTUsIDU3LCAxMjgsIDY1LCA1MCwgNTUsIDU2LCAxMjgsIDY1LCA1MCwgNTUsIDU1LCAxMjgsIDY1LCA1MCwgNTUsIDU0LCAKLSAgICAxMjgsIDY1LCA1MCwgNTUsIDUzLCAxMjgsIDY1LCA1MCwgNTUsIDUyLCAxMjgsIDY1LCA1MCwgNTUsIDUxLCAxMjgsIDY1LCAKLSAgICA1MCwgNTUsIDUwLCAxMjgsIDY1LCA1MCwgNTUsIDQ5LCAxMjgsIDY1LCA1MCwgNTUsIDQ4LCAxMjgsIDY1LCA1MCwgNTQsIAotICAgIDU3LCAxMjgsIDY1LCA1MCwgNTQsIDU2LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgCi0gICAgMTI4LCA2NSwgNTAsIDU0LCA1NCwgMTI4LCA2NSwgNTAsIDU0LCA1MywgMTI4LCA2NSwgNTAsIDU0LCA1MiwgMTI4LCA2NSwgCi0gICAgNTAsIDU0LCA1MSwgMTI4LCA2NSwgNTAsIDU0LCA1MCwgMTI4LCA2NSwgNTAsIDU0LCA0OSwgMTI4LCA2NSwgNTAsIDU0LCAKLSAgICA0OCwgMTI4LCA2NSwgNTAsIDUzLCA1NywgMTI4LCA2NSwgNTAsIDUzLCA1NiwgMTI4LCA2NSwgNTAsIDUzLCA1NSwgMTI4LCAKLSAgICA2NSwgNTAsIDUzLCA1NCwgMTI4LCA2NSwgNTAsIDUzLCA1MywgMTI4LCA2NSwgNTAsIDUzLCA1MiwgMTI4LCA2NSwgNTAsIAotICAgIDUzLCA1MSwgMTI4LCA2NSwgNTAsIDUzLCA1MCwgMTI4LCA2NSwgNTAsIDUzLCA0OSwgMTI4LCA2NSwgNTAsIDUzLCA0OCwgCi0gICAgMTI4LCA2NSwgNTAsIDUyLCA1NywgMTI4LCA2NSwgNTAsIDUyLCA1NiwgMTI4LCA2NSwgNTAsIDUyLCA1NSwgMTI4LCA2NSwgCi0gICAgNTAsIDUyLCA1NCwgMTI4LCA2NSwgNTAsIDUyLCA1MywgMTI4LCA2NSwgNTAsIDUyLCA1MiwgMTI4LCA2NSwgNTAsIDUyLCAKLSAgICA1MSwgMTI4LCA2NSwgNTAsIDUyLCA1MCwgMTI4LCA2NSwgNTAsIDUyLCA0OSwgMTI4LCA2NSwgNTAsIDUyLCA0OCwgMTI4LCAKLSAgICA2NSwgNTAsIDUxLCA1NywgMTI4LCA2NSwgNTAsIDUxLCA1NiwgMTI4LCA2NSwgNTAsIDUxLCA1NSwgMTI4LCA2NSwgNTAsIAotICAgIDUxLCA1NCwgMTI4LCA2NSwgNTAsIDUxLCA1MywgMTI4LCA2NSwgNTAsIDUxLCA1MiwgMTI4LCA2NSwgNTAsIDUxLCA1MSwgCi0gICAgMTI4LCA2NSwgNTAsIDUxLCA1MCwgMTI4LCA2NSwgNTAsIDUxLCA0OSwgMTI4LCA2NSwgNTAsIDUxLCA0OCwgMTI4LCA2NSwgCi0gICAgNTAsIDUwLCA1NywgMTI4LCA2NSwgNTAsIDUwLCA1NiwgMTI4LCA2NSwgNTAsIDUwLCA1NSwgNjUsIDEyOCwgNjUsIDUwLCAKLSAgICA1MCwgNTUsIDEyOCwgNjUsIDUwLCA1MCwgNTQsIDEyOCwgNjUsIDUwLCA1MCwgNTMsIDEyOCwgNjUsIDUwLCA1MCwgNTIsIAotICAgIDEyOCwgNjUsIDUwLCA1MCwgNTEsIDEyOCwgNjUsIDUwLCA1MCwgNTAsIDEyOCwgNjUsIDUwLCA1MCwgNDksIDEyOCwgNjUsIAotICAgIDUwLCA1MCwgNDgsIDEyOCwgNjUsIDUwLCA0OSwgNTcsIDEyOCwgNjUsIDUwLCA0OSwgNTYsIDEyOCwgNjUsIDUwLCA0OSwgCi0gICAgNTUsIDEyOCwgNjUsIDUwLCA0OSwgNTQsIDY1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCAxMjgsIDY1LCA1MCwgNDksIDUzLCAKLSAgICA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgMTI4LCA2NSwgNTAsIDQ5LCA1MiwgMTI4LCA2NSwgNTAsIDQ5LCA1MSwgMTI4LCAKLSAgICA2NSwgNTAsIDQ5LCA1MCwgMTI4LCA2NSwgNTAsIDQ5LCA0OSwgMTI4LCA2NSwgNTAsIDQ5LCA0OCwgMTI4LCA2NSwgNTAsIAotICAgIDQ4LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTcsIDEyOCwgNjUsIDUwLCA0OCwgNTYsIDEyOCwgNjUsIDUwLCA0OCwgCi0gICAgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDU1LCAxMjgsIDY1LCA1MCwgNDgsIDU0LCAxMjgsIDY1LCA1MCwgNDgsIDUzLCAKLSAgICAxMjgsIDY1LCA1MCwgNDgsIDUyLCAxMjgsIDY1LCA1MCwgNDgsIDUxLCAxMjgsIDY1LCA1MCwgNDgsIDUwLCA2NiwgMTI4LCAKLSAgICA2NSwgNTAsIDQ4LCA1MCwgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDEyOCwgNjUsIDUwLCA0OCwgNDksIDEyOCwgNjUsIAotICAgIDUwLCA0OCwgNDgsIDEyOCwgNjUsIDQ5LCA1NywgNTcsIDEyOCwgNjUsIDQ5LCA1NywgNTYsIDEyOCwgNjUsIDQ5LCA1NywgCi0gICAgNTUsIDEyOCwgNjUsIDQ5LCA1NywgNTQsIDEyOCwgNjUsIDQ5LCA1NywgNTMsIDEyOCwgNjUsIDQ5LCA1NywgNTIsIDEyOCwgCi0gICAgNjUsIDQ5LCA1NywgNTEsIDEyOCwgNjUsIDQ5LCA1NywgNTAsIDEyOCwgNjUsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDQ5LCAKLSAgICA1NywgNDgsIDEyOCwgNjUsIDQ5LCA1NiwgNTcsIDEyOCwgNjUsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIDQ5LCA1NiwgNTUsIAotICAgIDEyOCwgNjUsIDQ5LCA1NiwgNTQsIDEyOCwgNjUsIDQ5LCA1NiwgNTMsIDEyOCwgNjUsIDQ5LCA1NiwgNTIsIDEyOCwgNjUsIAotICAgIDQ5LCA1NiwgNTEsIDEyOCwgNjUsIDQ5LCA1NiwgNTAsIDEyOCwgNjUsIDQ5LCA1NiwgNDksIDEyOCwgNjUsIDQ5LCA1NiwgCi0gICAgNDgsIDEyOCwgNjUsIDQ5LCA1NSwgNTcsIDEyOCwgNjUsIDQ5LCA1NSwgNTYsIDEyOCwgNjUsIDQ5LCA1NSwgNTUsIDEyOCwgCi0gICAgNjUsIDQ5LCA1NSwgNTQsIDEyOCwgNjUsIDQ5LCA1NSwgNTMsIDEyOCwgNjUsIDQ5LCA1NSwgNTIsIDEyOCwgNjUsIDQ5LCAKLSAgICA1NSwgNTEsIDEyOCwgNjUsIDQ5LCA1NSwgNTAsIDEyOCwgNjUsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDQ5LCA1NSwgNDgsIAotICAgIDEyOCwgNjUsIDQ5LCA1NCwgNTcsIDEyOCwgNjUsIDQ5LCA1NCwgNTYsIDEyOCwgNjUsIDQ5LCA1NCwgNTUsIDEyOCwgNjUsIAotICAgIDQ5LCA1NCwgNTQsIDEyOCwgNjUsIDQ5LCA1NCwgNTMsIDEyOCwgNjUsIDQ5LCA1NCwgNTIsIDEyOCwgNjUsIDQ5LCA1NCwgCi0gICAgNTEsIDEyOCwgNjUsIDQ5LCA1NCwgNTAsIDEyOCwgNjUsIDQ5LCA1NCwgNDksIDEyOCwgNjUsIDQ5LCA1NCwgNDgsIDEyOCwgCi0gICAgNjUsIDQ5LCA1MywgNTcsIDEyOCwgNjUsIDQ5LCA1MywgNTYsIDEyOCwgNjUsIDQ5LCA1MywgNTUsIDEyOCwgNjUsIDQ5LCAKLSAgICA1MywgNTQsIDEyOCwgNjUsIDQ5LCA1MywgNTMsIDEyOCwgNjUsIDQ5LCA1MywgNTIsIDEyOCwgNjUsIDQ5LCA1MywgNTEsIAotICAgIDEyOCwgNjUsIDQ5LCA1MywgNTAsIDEyOCwgNjUsIDQ5LCA1MywgNDksIDEyOCwgNjUsIDQ5LCA1MywgNDgsIDEyOCwgNjUsIAotICAgIDQ5LCA1MiwgNTcsIDEyOCwgNjUsIDQ5LCA1MiwgNTYsIDEyOCwgNjUsIDQ5LCA1MiwgNTUsIDEyOCwgNjUsIDQ5LCA1MiwgCi0gICAgNTQsIDEyOCwgNjUsIDQ5LCA1MiwgNTMsIDEyOCwgNjUsIDQ5LCA1MiwgNTIsIDEyOCwgNjUsIDQ5LCA1MiwgNTEsIDEyOCwgCi0gICAgNjUsIDQ5LCA1MiwgNTAsIDEyOCwgNjUsIDQ5LCA1MiwgNDksIDEyOCwgNjUsIDQ5LCA1MiwgNDgsIDEyOCwgNjUsIDQ5LCAKLSAgICA1MSwgNTcsIDEyOCwgNjUsIDQ5LCA1MSwgNTYsIDEyOCwgNjUsIDQ5LCA1MSwgNTUsIDEyOCwgNjUsIDQ5LCA1MSwgNTQsIAotICAgIDEyOCwgNjUsIDQ5LCA1MSwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNTEsIDUzLCAxMjgsIDY1LCA0OSwgNTEsIDUyLCAxMjgsIAotICAgIDY1LCA0OSwgNTEsIDUxLCAxMjgsIDY1LCA0OSwgNTEsIDUwLCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCA2NywgMTI4LCA2NSwgCi0gICAgNDksIDUxLCA0OSwgMTI4LCA2NSwgNDksIDUxLCA0OCwgMTI4LCA2NSwgNDksIDUwLCA1NywgMTI4LCA2NSwgNDksIDUwLCAKLSAgICA1NiwgMTI4LCA2NSwgNDksIDUwLCA1NSwgMTI4LCA2NSwgNDksIDUwLCA1NCwgMTI4LCA2NSwgNDksIDUwLCA1MywgNjUsIAotICAgIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDEyOCwgNjUsIDQ5LCA1MCwgNTIsIDEyOCwgNjUsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIAotICAgIDQ5LCA1MCwgNTAsIDEyOCwgNjUsIDQ5LCA1MCwgNDksIDEyOCwgNjUsIDQ5LCA1MCwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgCi0gICAgNTAsIDQ4LCAxMjgsIDY1LCA0OSwgNDksIDU3LCAxMjgsIDY1LCA0OSwgNDksIDU2LCAxMjgsIDY1LCA0OSwgNDksIDU1LCAKLSAgICAxMjgsIDY1LCA0OSwgNDksIDU0LCAxMjgsIDY1LCA0OSwgNDksIDUzLCA2NSwgMTI4LCA2NSwgNDksIDQ5LCA1MywgMTI4LCAKLSAgICA2NSwgNDksIDQ5LCA1MiwgMTI4LCA2NSwgNDksIDQ5LCA1MSwgMTI4LCA2NSwgNDksIDQ5LCA1MCwgMTI4LCA2NSwgNDksIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgCi0gICAgNDksIDQ4LCAxMjgsIDY1LCA0OSwgNDgsIDU3LCAxMjgsIDY1LCA0OSwgNDgsIDU2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCAKLSAgICA2NywgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIAotICAgIDU1LCAxMjgsIDY1LCA0OSwgNDgsIDU0LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MywgCi0gICAgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY3LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAKLSAgICA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDEyOCwgNjUsIDQ5LCA0OCwgNTEsIAotICAgIDEyOCwgNjUsIDQ5LCA0OCwgNTAsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ5LCA2NSwgCi0gICAgMTI4LCA2NSwgNDksIDQ4LCA0OSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDQ1LCAKLSAgICA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCAxMjgsIDY1LCA0OCwgNTcsIDU3LCAxMjgsIDY1LCA0OCwgNTcsIAotICAgIDU2LCA2NSwgMTI4LCA2NSwgNDgsIDU3LCA1NiwgMTI4LCA2NSwgNDgsIDU3LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgCi0gICAgNTUsIDEyOCwgNjUsIDQ4LCA1NywgNTQsIDEyOCwgNjUsIDQ4LCA1NywgNTMsIDEyOCwgNjUsIDQ4LCA1NywgNTIsIDEyOCwgCi0gICAgNjUsIDQ4LCA1NywgNTEsIDEyOCwgNjUsIDQ4LCA1NywgNTAsIDEyOCwgNjUsIDQ4LCA1NywgNDksIDEyOCwgNjUsIDQ4LCAKLSAgICA1NywgNDgsIDEyOCwgNjUsIDQ4LCA1NiwgNTcsIDEyOCwgNjUsIDQ4LCA1NiwgNTYsIDEyOCwgNjUsIDQ4LCA1NiwgNTUsIAotICAgIDEyOCwgNjUsIDQ4LCA1NiwgNTQsIDEyOCwgNjUsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDQ4LCA1NiwgNTIsIDEyOCwgNjUsIAotICAgIDQ4LCA1NiwgNTEsIDEyOCwgNjUsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIDQ4LCA1NiwgCi0gICAgNDgsIDEyOCwgNjUsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDQ4LCA1NSwgNTYsIDEyOCwgNjUsIDQ4LCA1NSwgNTUsIDEyOCwgCi0gICAgNjUsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDQ4LCA1NSwgNTMsIDEyOCwgNjUsIDQ4LCA1NSwgNTIsIDEyOCwgNjUsIDQ4LCAKLSAgICA1NSwgNTEsIDEyOCwgNjUsIDQ4LCA1NSwgNTAsIDEyOCwgNjUsIDQ4LCA1NSwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIAotICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIAotICAgIDQ4LCA1NCwgNTQsIDY3LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjUsIDEyOCwgCi0gICAgNjUsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCAKLSAgICA1NCwgNTEsIDEyOCwgNjUsIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIAotICAgIDEyOCwgNjUsIDQ4LCA1MywgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIAotICAgIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgCi0gICAgNTEsIDEyOCwgNjUsIDQ4LCA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNDgsIAotICAgIDUyLCA1MywgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNTEsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUxLCAxMjgsIDY1LCA0OCwgNTIsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCAKLSAgICA1MCwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIAotICAgIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCA2NSwgMTI4LCA2NSwgNDgsIDUxLCA1NywgCi0gICAgMTI4LCA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgMTI4LCA2NSwgCi0gICAgNDgsIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgNDgsIDUxLCAKLSAgICA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MCwgNTYsIDY2LCAxMjgsIDY1LCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIAotICAgIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgCi0gICAgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCAKLSAgICA2NSwgNDUsIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIDQ1LCA3NSwgNzIsIAotICAgIDg5LCA4NSwgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAxOTYsIDQ1LCA2NywgCi0gICAgNzIsIDY1LCAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKKyAgICA3NiwgNzksIDEyOCwgNjUsIDc2LCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NiwgNzYsIDIwMSwgNjUsIAorICAgIDc2LCA3NiwgNjUsIDIwMCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgNDUsIDUwLCAxMjgsIDY1LCA3NiwgNzUsIDY1LCA3NiwgCisgICAgNzMsIDEyOCwgNjUsIDc2LCA3MywgNzEsIDc4LCA2OSwgMTk2LCA2NSwgNzYsIDczLCA3MCwgODUsIDEyOCwgNjUsIDc2LCAKKyAgICA3MywgNzAsIDEyOCwgNjUsIDc2LCA3MywgMTk4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIAorICAgIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIAorICAgIDc2LCA2OSwgODIsIDg0LCAxMjgsIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgCisgICAgMTI4LCA2NSwgNzYsIDY5LCA3MCwgMTI4LCA2NSwgNzYsIDY2LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA2NSwgNzYsIDY1LCAKKyAgICA4OSwgNzIsIDY5LCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIAorICAgIDY1LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgCisgICAgNjksIDgzLCA2OSwgNzYsIDgzLCA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCAKKyAgICA3MywgNzcsIDczLCAxOTUsIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIAorICAgIDY1LCA4MiwgMTkzLCA2NSwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAKKyAgICAyMDMsIDY1LCA3MywgODQsIDc5LCAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIAorICAgIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgCisgICAgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCAKKyAgICA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA3OSwgMjA1LCA2NSwgNzIsIAorICAgIDY1LCA3OCwgMTk5LCA2NSwgNzIsIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgCisgICAgODUsIDc4LCA3MSwgMTI4LCA2NSwgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIAorICAgIDgzLCAyMTIsIDY1LCA3MSwgNjUsIDczLCA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgCisgICAgNjUsIDgxLCAxMjgsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgNjksIDY4LCAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIAorICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDcwLCA3MCwgNzMsIDIxNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgCisgICAgNjUsIDEyOCwgNjUsIDY5LCA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIAorICAgIDEyOCwgNjUsIDY5LCA4MywgNjcsIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIAorICAgIDY5LCA4MiwgMTI4LCA2NSwgNjksIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAKKyAgICAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCAKKyAgICA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIAorICAgIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgCisgICAgODQsIDY1LCA3MSwgNjksIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY4LCA3NywgNzMsIDgzLCAKKyAgICA4MywgNzMsIDc5LCAyMDYsIDY1LCA2OCwgNzYsIDY1LCAyMDUsIDY1LCA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIAorICAgIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgCisgICAgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCAKKyAgICA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgCisgICAgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIAorICAgIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgCisgICAgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCAKKyAgICA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIAorICAgIDc5LCA3NywgNzcsIDc5LCA2OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgCisgICAgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIAorICAgIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAKKyAgICAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjYsIAorICAgIDQ5LCA1NywgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NSwgCisgICAgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA2NiwgNDksIDUxLCA0OSwgNjYsIAorICAgIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIDY2LCA0OSwgCisgICAgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCA0OSwgNTYsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTYsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNDgsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTUsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgCisgICAgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1NCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NywgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NCwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MSwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCAKKyAgICA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDUyLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIAorICAgIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTEsIDc3LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDc3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzAsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTAsIDQ5LCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU3LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNDgsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDY1LCAKKyAgICA4OSwgNzMsIDc4LCAxMjgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2NSwgODksIDEyOCwgNjUsIAorICAgIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCA2NiwgNjUsIDY1LCA3MCwgCisgICAgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUzLCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY1LCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTIsIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUwLCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA1NSwgMTI4LCA2NSwgNTYsIDQ4LCA1NCwgMTI4LCA2NSwgCisgICAgNTYsIDQ4LCA1MywgMTI4LCA2NSwgNTYsIDQ4LCA1MiwgMTI4LCA2NSwgNTYsIDQ4LCA1MSwgMTI4LCA2NSwgNTYsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NSwgNTYsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA0OCwgMTI4LCA2NSwgNTUsIDUxLCAxNzgsIDY1LCAKKyAgICA1NSwgNTAsIDE4MiwgNjUsIDU1LCA0OSwgMTgzLCA2NSwgNTUsIDQ5LCAxODEsIDY1LCA1NSwgNDksIDE4MCwgNjUsIDU1LCAKKyAgICA0OSwgMTc5LCA2NSwgNTUsIDQ5LCAxNzgsIDY1LCA1NSwgNDksIDE3NywgNjUsIDU1LCA0OSwgMTc2LCA2NSwgNTUsIDQ4LCAKKyAgICA1NywgNDUsIDE4MiwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODAsIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTc5LCA2NSwgNTUsIAorICAgIDQ4LCA1NywgNDUsIDE3OCwgNjUsIDU1LCA0OCwgMTg1LCA2NSwgNTUsIDQ4LCAxODQsIDY1LCA1NSwgNDgsIDE4MywgNjUsIAorICAgIDU1LCA0OCwgMTgyLCA2NSwgNTUsIDQ4LCAxODEsIDY1LCA1NSwgNDgsIDE4MCwgNjUsIDU1LCA0OCwgMTc5LCA2NSwgNTUsIAorICAgIDQ4LCAxNzgsIDY1LCA1NSwgNDgsIDE3NywgNjUsIDU0LCA1NCwgNTIsIDEyOCwgNjUsIDU0LCA1NCwgNTEsIDEyOCwgNjUsIAorICAgIDU0LCA1NCwgNTAsIDEyOCwgNjUsIDU0LCA1NCwgNDksIDEyOCwgNjUsIDU0LCA1NCwgNDgsIDEyOCwgNjUsIDU0LCA1MywgCisgICAgNTcsIDEyOCwgNjUsIDU0LCA1MywgNTYsIDEyOCwgNjUsIDU0LCA1MywgNTUsIDEyOCwgNjUsIDU0LCA1MywgNTQsIDEyOCwgCisgICAgNjUsIDU0LCA1MywgNTMsIDEyOCwgNjUsIDU0LCA1MywgNTIsIDEyOCwgNjUsIDU0LCA1MywgNTEsIDEyOCwgNjUsIDU0LCAKKyAgICA1MywgNTAsIDEyOCwgNjUsIDU0LCA1MywgNDksIDEyOCwgNjUsIDU0LCA1MiwgNTcsIDEyOCwgNjUsIDU0LCA1MiwgNTYsIAorICAgIDEyOCwgNjUsIDU0LCA1MiwgNTQsIDEyOCwgNjUsIDU0LCA1MiwgNTMsIDEyOCwgNjUsIDU0LCA1MiwgNTIsIDEyOCwgNjUsIAorICAgIDU0LCA1MiwgNTEsIDEyOCwgNjUsIDU0LCA1MiwgNTAsIDEyOCwgNjUsIDU0LCA1MiwgNDgsIDEyOCwgNjUsIDU0LCA1MSwgCisgICAgNTYsIDEyOCwgNjUsIDU0LCA1MSwgNTUsIDEyOCwgNjUsIDU0LCA1MSwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTcsIDEyOCwgCisgICAgNjUsIDU0LCA1MCwgNTYsIDEyOCwgNjUsIDU0LCA1MCwgNTUsIDEyOCwgNjUsIDU0LCA1MCwgNTQsIDEyOCwgNjUsIDU0LCAKKyAgICA1MCwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTEsIDEyOCwgNjUsIDU0LCA1MCwgNTAsIDEyOCwgNjUsIDU0LCA1MCwgNDksIAorICAgIDEyOCwgNjUsIDU0LCA1MCwgNDgsIDEyOCwgNjUsIDU0LCA0OSwgNTcsIDEyOCwgNjUsIDU0LCA0OSwgNTYsIDEyOCwgNjUsIAorICAgIDU0LCA0OSwgNTUsIDEyOCwgNjUsIDU0LCA0OSwgNTQsIDEyOCwgNjUsIDU0LCA0OSwgNTMsIDEyOCwgNjUsIDU0LCA0OSwgCisgICAgNTIsIDEyOCwgNjUsIDU0LCA0OSwgNTEsIDEyOCwgNjUsIDU0LCA0OSwgNTAsIDEyOCwgNjUsIDU0LCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDU0LCA0OSwgNDgsIDEyOCwgNjUsIDU0LCA0OCwgNTcsIDEyOCwgNjUsIDU0LCA0OCwgNTYsIDEyOCwgNjUsIDU0LCAKKyAgICA0OCwgNTQsIDEyOCwgNjUsIDU0LCA0OCwgNTIsIDEyOCwgNjUsIDU0LCA0OCwgNTEsIDEyOCwgNjUsIDU0LCA0OCwgNTAsIAorICAgIDEyOCwgNjUsIDU0LCA0OCwgNDksIDEyOCwgNjUsIDU0LCA0OCwgNDgsIDEyOCwgNjUsIDUzLCA1NywgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA1NywgNTQsIDEyOCwgNjUsIDUzLCA1NywgNTMsIDEyOCwgNjUsIDUzLCA1NywgNTIsIDEyOCwgNjUsIDUzLCA1NywgCisgICAgNTAsIDEyOCwgNjUsIDUzLCA1NywgNDksIDEyOCwgNjUsIDUzLCA1NiwgNTcsIDEyOCwgNjUsIDUzLCA1NiwgNTYsIDEyOCwgCisgICAgNjUsIDUzLCA1NiwgNTUsIDEyOCwgNjUsIDUzLCA1NiwgNTQsIDEyOCwgNjUsIDUzLCA1NiwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1NiwgNTIsIDEyOCwgNjUsIDUzLCA1NiwgNTEsIDEyOCwgNjUsIDUzLCA1NiwgNTAsIDEyOCwgNjUsIDUzLCA1NiwgNDksIAorICAgIDEyOCwgNjUsIDUzLCA1NiwgNDgsIDEyOCwgNjUsIDUzLCA1NSwgNTcsIDEyOCwgNjUsIDUzLCA1NSwgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA1NSwgNTUsIDEyOCwgNjUsIDUzLCA1NSwgNTQsIDEyOCwgNjUsIDUzLCA1NSwgNTMsIDEyOCwgNjUsIDUzLCA1NSwgCisgICAgNTIsIDEyOCwgNjUsIDUzLCA1NSwgNTEsIDEyOCwgNjUsIDUzLCA1NSwgNTAsIDEyOCwgNjUsIDUzLCA1NSwgNDksIDEyOCwgCisgICAgNjUsIDUzLCA1NSwgNDgsIDEyOCwgNjUsIDUzLCA1NCwgNTcsIDEyOCwgNjUsIDUzLCA1NCwgNTYsIDEyOCwgNjUsIDUzLCAKKyAgICA1NCwgNTQsIDEyOCwgNjUsIDUzLCA1NCwgNTMsIDEyOCwgNjUsIDUzLCA1NCwgNTIsIDEyOCwgNjUsIDUzLCA1NCwgNTEsIAorICAgIDEyOCwgNjUsIDUzLCA1MywgNTcsIDEyOCwgNjUsIDUzLCA1MywgNTUsIDEyOCwgNjUsIDUzLCA1MywgNTQsIDEyOCwgNjUsIAorICAgIDUzLCA1MywgNTMsIDEyOCwgNjUsIDUzLCA1MywgNTIsIDEyOCwgNjUsIDUzLCA1MywgNTEsIDEyOCwgNjUsIDUzLCA1MywgCisgICAgNTAsIDEyOCwgNjUsIDUzLCA1MywgNDksIDEyOCwgNjUsIDUzLCA1MywgNDgsIDEyOCwgNjUsIDUzLCA1MiwgNTcsIDEyOCwgCisgICAgNjUsIDUzLCA1MiwgNTYsIDEyOCwgNjUsIDUzLCA1MiwgNTUsIDEyOCwgNjUsIDUzLCA1MiwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1MiwgNTAsIDEyOCwgNjUsIDUzLCA1MiwgNDksIDEyOCwgNjUsIDUzLCA1MiwgNDgsIDEyOCwgNjUsIDUzLCA1MSwgNTcsIAorICAgIDEyOCwgNjUsIDUzLCA1MSwgNTYsIDEyOCwgNjUsIDUzLCA1MSwgNTUsIDEyOCwgNjUsIDUzLCA1MSwgNTQsIDEyOCwgNjUsIAorICAgIDUzLCA1MSwgNTMsIDEyOCwgNjUsIDUzLCA1MSwgNTIsIDEyOCwgNjUsIDUzLCA1MSwgNTAsIDEyOCwgNjUsIDUzLCA1MSwgCisgICAgNDksIDEyOCwgNjUsIDUzLCA1MSwgNDgsIDEyOCwgNjUsIDUzLCA1MCwgNTcsIDEyOCwgNjUsIDUzLCA1MCwgNTYsIDEyOCwgCisgICAgNjUsIDUzLCA1MCwgNTUsIDEyOCwgNjUsIDUzLCA1MCwgNTQsIDEyOCwgNjUsIDUzLCA1MCwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1MCwgNTIsIDEyOCwgNjUsIDUzLCA1MCwgNTEsIDEyOCwgNjUsIDUzLCA1MCwgNTAsIDEyOCwgNjUsIDUzLCA1MCwgNDksIAorICAgIDEyOCwgNjUsIDUzLCA1MCwgNDgsIDEyOCwgNjUsIDUzLCA0OSwgNTcsIDEyOCwgNjUsIDUzLCA0OSwgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA0OSwgNTUsIDEyOCwgNjUsIDUzLCA0OSwgNTQsIDEyOCwgNjUsIDUzLCA0OSwgNTMsIDEyOCwgNjUsIDUzLCA0OSwgCisgICAgNTIsIDEyOCwgNjUsIDUzLCA0OSwgNTEsIDEyOCwgNjUsIDUzLCA0OSwgNTAsIDEyOCwgNjUsIDUzLCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDUzLCA0OSwgNDgsIDEyOCwgNjUsIDUzLCA0OCwgNTcsIDEyOCwgNjUsIDUzLCA0OCwgNTYsIDEyOCwgNjUsIDUzLCAKKyAgICA0OCwgNTUsIDEyOCwgNjUsIDUzLCA0OCwgNTQsIDEyOCwgNjUsIDUzLCA0OCwgNTMsIDEyOCwgNjUsIDUzLCA0OCwgNTIsIAorICAgIDEyOCwgNjUsIDUzLCA0OCwgNTEsIDEyOCwgNjUsIDUzLCA0OCwgNTAsIDEyOCwgNjUsIDUzLCA0OCwgNDksIDEyOCwgNjUsIAorICAgIDUyLCA1NywgNTUsIDEyOCwgNjUsIDUyLCA1NywgNTQsIDEyOCwgNjUsIDUyLCA1NywgNTMsIDEyOCwgNjUsIDUyLCA1NywgCisgICAgNTIsIDEyOCwgNjUsIDUyLCA1NywgNTEsIDEyOCwgNjUsIDUyLCA1NywgNTAsIDEyOCwgNjUsIDUyLCA1NywgNDksIDEyOCwgCisgICAgNjUsIDUyLCA1NywgNDgsIDEyOCwgNjUsIDUyLCA1NiwgNTcsIDEyOCwgNjUsIDUyLCA1NiwgNTYsIDEyOCwgNjUsIDUyLCAKKyAgICA1NiwgNTUsIDEyOCwgNjUsIDUyLCA1NiwgNTQsIDEyOCwgNjUsIDUyLCA1NiwgNTMsIDEyOCwgNjUsIDUyLCA1NiwgNTIsIAorICAgIDEyOCwgNjUsIDUyLCA1NiwgNTEsIDEyOCwgNjUsIDUyLCA1NiwgNTAsIDEyOCwgNjUsIDUyLCA1NiwgNDksIDEyOCwgNjUsIAorICAgIDUyLCA1NiwgNDgsIDEyOCwgNjUsIDUyLCA1NSwgNTcsIDEyOCwgNjUsIDUyLCA1NSwgNTYsIDEyOCwgNjUsIDUyLCA1NSwgCisgICAgNTUsIDEyOCwgNjUsIDUyLCA1NSwgNTQsIDEyOCwgNjUsIDUyLCA1NSwgNTMsIDEyOCwgNjUsIDUyLCA1NSwgNTIsIDEyOCwgCisgICAgNjUsIDUyLCA1NSwgNTEsIDEyOCwgNjUsIDUyLCA1NSwgNTAsIDEyOCwgNjUsIDUyLCA1NSwgNDksIDEyOCwgNjUsIDUyLCAKKyAgICA1NSwgNDgsIDEyOCwgNjUsIDUyLCA1NCwgNTcsIDEyOCwgNjUsIDUyLCA1NCwgNTYsIDEyOCwgNjUsIDUyLCA1NCwgNTUsIAorICAgIDEyOCwgNjUsIDUyLCA1NCwgNTQsIDEyOCwgNjUsIDUyLCA1NCwgNTMsIDEyOCwgNjUsIDUyLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUyLCA1NCwgNTEsIDEyOCwgNjUsIDUyLCA1NCwgNTAsIDEyOCwgNjUsIDUyLCA1NCwgNDksIDEyOCwgNjUsIDUyLCA1NCwgCisgICAgNDgsIDEyOCwgNjUsIDUyLCA1MywgNTcsIDEyOCwgNjUsIDUyLCA1MywgNTYsIDEyOCwgNjUsIDUyLCA1MywgNTUsIDY1LCAKKyAgICAxMjgsIDY1LCA1MiwgNTMsIDU1LCAxMjgsIDY1LCA1MiwgNTMsIDU0LCAxMjgsIDY1LCA1MiwgNTMsIDUzLCAxMjgsIDY1LCAKKyAgICA1MiwgNTMsIDUyLCAxMjgsIDY1LCA1MiwgNTMsIDUxLCAxMjgsIDY1LCA1MiwgNTMsIDUwLCAxMjgsIDY1LCA1MiwgNTMsIAorICAgIDQ5LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgMTI4LCA2NSwgNTIsIDUyLCA1NywgCisgICAgMTI4LCA2NSwgNTIsIDUyLCA1NiwgMTI4LCA2NSwgNTIsIDUyLCA1NSwgMTI4LCA2NSwgNTIsIDUyLCA1NCwgMTI4LCA2NSwgCisgICAgNTIsIDUyLCA1MywgMTI4LCA2NSwgNTIsIDUyLCA1MiwgMTI4LCA2NSwgNTIsIDUyLCA1MSwgMTI4LCA2NSwgNTIsIDUyLCAKKyAgICA1MCwgMTI4LCA2NSwgNTIsIDUyLCA0OSwgMTI4LCA2NSwgNTIsIDUyLCA0OCwgMTI4LCA2NSwgNTIsIDUxLCA1NywgMTI4LCAKKyAgICA2NSwgNTIsIDUxLCA1NiwgMTI4LCA2NSwgNTIsIDUxLCA1NSwgMTI4LCA2NSwgNTIsIDUxLCA1NCwgMTI4LCA2NSwgNTIsIAorICAgIDUxLCA1MywgMTI4LCA2NSwgNTIsIDUxLCA1MiwgMTI4LCA2NSwgNTIsIDUxLCA1MSwgMTI4LCA2NSwgNTIsIDUxLCA1MCwgCisgICAgMTI4LCA2NSwgNTIsIDUxLCA0OSwgMTI4LCA2NSwgNTIsIDUxLCA0OCwgMTI4LCA2NSwgNTIsIDUwLCA1NywgMTI4LCA2NSwgCisgICAgNTIsIDUwLCA1NiwgMTI4LCA2NSwgNTIsIDUwLCA1NSwgMTI4LCA2NSwgNTIsIDUwLCA1NCwgMTI4LCA2NSwgNTIsIDUwLCAKKyAgICA1MywgMTI4LCA2NSwgNTIsIDUwLCA1MiwgMTI4LCA2NSwgNTIsIDUwLCA1MSwgMTI4LCA2NSwgNTIsIDUwLCA1MCwgMTI4LCAKKyAgICA2NSwgNTIsIDUwLCA0OSwgMTI4LCA2NSwgNTIsIDUwLCA0OCwgMTI4LCA2NSwgNTIsIDQ5LCA1NywgMTI4LCA2NSwgNTIsIAorICAgIDQ5LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDEyOCwgNjUsIDUyLCA0OSwgNTUsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU1LCAxMjgsIDY1LCA1MiwgNDksIDU0LCA0NSwgODYsIDY1LCA4MywgMTI4LCAKKyAgICA2NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NSwgNTIsIDQ5LCA1MywgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTMsIAorICAgIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCAxMjgsIDY1LCA1MiwgCisgICAgNDksIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgMTI4LCA2NSwgNTIsIDQ5LCA1MCwgNDUsIDg2LCAKKyAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIAorICAgIDY1LCA1MiwgNDksIDQ5LCAxMjgsIDY1LCA1MiwgNDksIDQ4LCAxOTMsIDY1LCA1MiwgNDksIDQ4LCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ5LCAxNzYsIDY1LCA1MiwgNDgsIDU3LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCAKKyAgICA1NywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTYsIDEyOCwgNjUsIAorICAgIDUyLCA0OCwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU1LCAxMjgsIDY1LCA1MiwgNDgsIDU0LCA0NSwgCisgICAgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NSwgNTIsIDQ4LCA1MywgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgCisgICAgNDgsIDUyLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MSwgMTI4LCAKKyAgICA2NSwgNTIsIDQ4LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDEyOCwgNjUsIDUyLCA0OCwgNDksIAorICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NSwgNTEsIDU3LCA1NywgMTI4LCA2NSwgNTEsIDU3LCA1NiwgMTI4LCA2NSwgCisgICAgNTEsIDU3LCA1NSwgMTI4LCA2NSwgNTEsIDU3LCA1NCwgMTI4LCA2NSwgNTEsIDU3LCA1MywgMTI4LCA2NSwgNTEsIDU3LCAKKyAgICA1MiwgMTI4LCA2NSwgNTEsIDU3LCAxNzksIDY1LCA1MSwgNTcsIDUwLCAxMjgsIDY1LCA1MSwgNTcsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MSwgNTcsIDQ4LCAxMjgsIDY1LCA1MSwgNTYsIDU3LCAxMjgsIDY1LCA1MSwgNTYsIDU2LCAxMjgsIDY1LCA1MSwgNTYsIAorICAgIDU1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgMTI4LCA2NSwgNTEsIDU2LCA1MywgCisgICAgMTI4LCA2NSwgNTEsIDU2LCA1MiwgMTI4LCA2NSwgNTEsIDU2LCA1MSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgMTc5LCA2NSwgCisgICAgNTEsIDU2LCA1MCwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgNDksIDEyOCwgNjUsIDUxLCAKKyAgICA1NiwgNDgsIDEyOCwgNjUsIDUxLCA1NSwgNTcsIDEyOCwgNjUsIDUxLCA1NSwgNTYsIDEyOCwgNjUsIDUxLCA1NSwgNTUsIAorICAgIDEyOCwgNjUsIDUxLCA1NSwgNTQsIDEyOCwgNjUsIDUxLCA1NSwgNTMsIDEyOCwgNjUsIDUxLCA1NSwgNTIsIDEyOCwgNjUsIAorICAgIDUxLCA1NSwgNTEsIDEyOCwgNjUsIDUxLCA1NSwgNTAsIDEyOCwgNjUsIDUxLCA1NSwgNDksIDY1LCAxMjgsIDY1LCA1MSwgCisgICAgNTUsIDQ5LCAxMjgsIDY1LCA1MSwgNTUsIDQ4LCAxMjgsIDY1LCA1MSwgNTQsIDU3LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAKKyAgICA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1NiwgMTI4LCA2NSwgNTEsIDU0LCA1NSwgMTI4LCA2NSwgNTEsIDU0LCA1NCwgMTI4LCAKKyAgICA2NSwgNTEsIDU0LCA1MywgMTI4LCA2NSwgNTEsIDU0LCA1MiwgNjUsIDEyOCwgNjUsIDUxLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUxLCA1NCwgNTEsIDEyOCwgNjUsIDUxLCA1NCwgNTAsIDEyOCwgNjUsIDUxLCA1NCwgNDksIDEyOCwgNjUsIDUxLCA1NCwgCisgICAgNDgsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCAxMjgsIDY1LCA1MSwgNTMsIDU2LCAKKyAgICAxMjgsIDY1LCA1MSwgNTMsIDU1LCAxMjgsIDY1LCA1MSwgNTMsIDU0LCAxMjgsIDY1LCA1MSwgNTMsIDUzLCAxMjgsIDY1LCAKKyAgICA1MSwgNTMsIDUyLCAxMjgsIDY1LCA1MSwgNTMsIDUxLCAxMjgsIDY1LCA1MSwgNTMsIDUwLCAxMjgsIDY1LCA1MSwgNTMsIAorICAgIDQ5LCAxMjgsIDY1LCA1MSwgNTMsIDQ4LCAxMjgsIDY1LCA1MSwgNTIsIDU3LCAxMjgsIDY1LCA1MSwgNTIsIDU2LCAxMjgsIAorICAgIDY1LCA1MSwgNTIsIDU1LCAxMjgsIDY1LCA1MSwgNTIsIDU0LCAxMjgsIDY1LCA1MSwgNTIsIDUzLCAxMjgsIDY1LCA1MSwgCisgICAgNTIsIDUyLCAxMjgsIDY1LCA1MSwgNTIsIDUxLCAxMjgsIDY1LCA1MSwgNTIsIDUwLCAxMjgsIDY1LCA1MSwgNTIsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MSwgNTIsIDQ4LCAxMjgsIDY1LCA1MSwgNTEsIDU3LCAxMjgsIDY1LCA1MSwgNTEsIDU2LCAxMjgsIDY1LCAKKyAgICA1MSwgNTEsIDU1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NywgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjYsIDEyOCwgNjUsIAorICAgIDUxLCA1MSwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCAxMjgsIDY1LCA1MSwgNTEsIDUzLCAxMjgsIDY1LCA1MSwgCisgICAgNTEsIDUyLCAxMjgsIDY1LCA1MSwgNTEsIDUxLCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NywgMTI4LCA2NSwgNTEsIDUxLCAKKyAgICA1MCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCAxMjgsIDY1LCA1MSwgNTEsIAorICAgIDQ5LCAxMjgsIDY1LCA1MSwgNTEsIDQ4LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDUwLCA1NywgCisgICAgMTI4LCA2NSwgNTEsIDUwLCA1NiwgMTI4LCA2NSwgNTEsIDUwLCA1NSwgMTI4LCA2NSwgNTEsIDUwLCA1NCwgMTI4LCA2NSwgCisgICAgNTEsIDUwLCA1MywgMTI4LCA2NSwgNTEsIDUwLCA1MiwgMTI4LCA2NSwgNTEsIDUwLCA1MSwgMTI4LCA2NSwgNTEsIDUwLCAKKyAgICA1MCwgMTI4LCA2NSwgNTEsIDUwLCA0OSwgMTI4LCA2NSwgNTEsIDUwLCA0OCwgMTI4LCA2NSwgNTEsIDQ5LCA1NywgMTI4LCAKKyAgICA2NSwgNTEsIDQ5LCA1NiwgMTI4LCA2NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NSwgNTEsIDQ5LCA1NCwgMTI4LCA2NSwgNTEsIAorICAgIDQ5LCA1MywgMTI4LCA2NSwgNTEsIDQ5LCA1MiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjcsIDEyOCwgNjUsIDUxLCA0OSwgCisgICAgNTEsIDY2LCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgMTI4LCA2NSwgNTEsIDQ5LCAKKyAgICA1MCwgMTI4LCA2NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjcsIAorICAgIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY2LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgCisgICAgMTI4LCA2NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NSwgNTEsIDQ4LCA1NCwgMTI4LCA2NSwgCisgICAgNTEsIDQ4LCA1MywgMTI4LCA2NSwgNTEsIDQ4LCA1MiwgMTI4LCA2NSwgNTEsIDQ4LCA1MSwgMTI4LCA2NSwgNTEsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NSwgNTEsIDQ4LCA0OCwgMTI4LCA2NSwgNTAsIDU3LCA1NywgNjUsIAorICAgIDEyOCwgNjUsIDUwLCA1NywgNTcsIDEyOCwgNjUsIDUwLCA1NywgNTYsIDEyOCwgNjUsIDUwLCA1NywgNTUsIDEyOCwgNjUsIAorICAgIDUwLCA1NywgNTQsIDEyOCwgNjUsIDUwLCA1NywgNTMsIDEyOCwgNjUsIDUwLCA1NywgNTIsIDY1LCAxMjgsIDY1LCA1MCwgCisgICAgNTcsIDUyLCAxMjgsIDY1LCA1MCwgNTcsIDUxLCAxMjgsIDY1LCA1MCwgNTcsIDUwLCAxMjgsIDY1LCA1MCwgNTcsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MCwgNTcsIDQ4LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCA2NSwgMTI4LCA2NSwgNTAsIDU2LCA1NywgMTI4LCAKKyAgICA2NSwgNTAsIDU2LCA1NiwgMTI4LCA2NSwgNTAsIDU2LCA1NSwgMTI4LCA2NSwgNTAsIDU2LCA1NCwgMTI4LCA2NSwgNTAsIAorICAgIDU2LCA1MywgMTI4LCA2NSwgNTAsIDU2LCA1MiwgMTI4LCA2NSwgNTAsIDU2LCA1MSwgMTI4LCA2NSwgNTAsIDU2LCA1MCwgCisgICAgMTI4LCA2NSwgNTAsIDU2LCA0OSwgMTI4LCA2NSwgNTAsIDU2LCA0OCwgMTI4LCA2NSwgNTAsIDU1LCA1NywgMTI4LCA2NSwgCisgICAgNTAsIDU1LCA1NiwgMTI4LCA2NSwgNTAsIDU1LCA1NSwgMTI4LCA2NSwgNTAsIDU1LCA1NCwgMTI4LCA2NSwgNTAsIDU1LCAKKyAgICA1MywgMTI4LCA2NSwgNTAsIDU1LCA1MiwgMTI4LCA2NSwgNTAsIDU1LCA1MSwgMTI4LCA2NSwgNTAsIDU1LCA1MCwgMTI4LCAKKyAgICA2NSwgNTAsIDU1LCA0OSwgMTI4LCA2NSwgNTAsIDU1LCA0OCwgMTI4LCA2NSwgNTAsIDU0LCA1NywgMTI4LCA2NSwgNTAsIAorICAgIDU0LCA1NiwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIDEyOCwgNjUsIDUwLCA1NCwgCisgICAgNTQsIDEyOCwgNjUsIDUwLCA1NCwgNTMsIDEyOCwgNjUsIDUwLCA1NCwgNTIsIDEyOCwgNjUsIDUwLCA1NCwgNTEsIDEyOCwgCisgICAgNjUsIDUwLCA1NCwgNTAsIDEyOCwgNjUsIDUwLCA1NCwgNDksIDEyOCwgNjUsIDUwLCA1NCwgNDgsIDEyOCwgNjUsIDUwLCAKKyAgICA1MywgNTcsIDEyOCwgNjUsIDUwLCA1MywgNTYsIDEyOCwgNjUsIDUwLCA1MywgNTUsIDEyOCwgNjUsIDUwLCA1MywgNTQsIAorICAgIDEyOCwgNjUsIDUwLCA1MywgNTMsIDEyOCwgNjUsIDUwLCA1MywgNTIsIDEyOCwgNjUsIDUwLCA1MywgNTEsIDEyOCwgNjUsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgNjUsIDUwLCA1MywgNDksIDEyOCwgNjUsIDUwLCA1MywgNDgsIDEyOCwgNjUsIDUwLCA1MiwgCisgICAgNTcsIDEyOCwgNjUsIDUwLCA1MiwgNTYsIDEyOCwgNjUsIDUwLCA1MiwgNTUsIDEyOCwgNjUsIDUwLCA1MiwgNTQsIDEyOCwgCisgICAgNjUsIDUwLCA1MiwgNTMsIDEyOCwgNjUsIDUwLCA1MiwgNTIsIDEyOCwgNjUsIDUwLCA1MiwgNTEsIDEyOCwgNjUsIDUwLCAKKyAgICA1MiwgNTAsIDEyOCwgNjUsIDUwLCA1MiwgNDksIDEyOCwgNjUsIDUwLCA1MiwgNDgsIDEyOCwgNjUsIDUwLCA1MSwgNTcsIAorICAgIDEyOCwgNjUsIDUwLCA1MSwgNTYsIDEyOCwgNjUsIDUwLCA1MSwgNTUsIDEyOCwgNjUsIDUwLCA1MSwgNTQsIDEyOCwgNjUsIAorICAgIDUwLCA1MSwgNTMsIDEyOCwgNjUsIDUwLCA1MSwgNTIsIDEyOCwgNjUsIDUwLCA1MSwgNTEsIDEyOCwgNjUsIDUwLCA1MSwgCisgICAgNTAsIDEyOCwgNjUsIDUwLCA1MSwgNDksIDEyOCwgNjUsIDUwLCA1MSwgNDgsIDEyOCwgNjUsIDUwLCA1MCwgNTcsIDEyOCwgCisgICAgNjUsIDUwLCA1MCwgNTYsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNTAsIDU1LCAxMjgsIDY1LCAKKyAgICA1MCwgNTAsIDU0LCAxMjgsIDY1LCA1MCwgNTAsIDUzLCAxMjgsIDY1LCA1MCwgNTAsIDUyLCAxMjgsIDY1LCA1MCwgNTAsIAorICAgIDUxLCAxMjgsIDY1LCA1MCwgNTAsIDUwLCAxMjgsIDY1LCA1MCwgNTAsIDQ5LCAxMjgsIDY1LCA1MCwgNTAsIDQ4LCAxMjgsIAorICAgIDY1LCA1MCwgNDksIDU3LCAxMjgsIDY1LCA1MCwgNDksIDU2LCAxMjgsIDY1LCA1MCwgNDksIDU1LCAxMjgsIDY1LCA1MCwgCisgICAgNDksIDU0LCA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDUwLCAKKyAgICA0OSwgNTMsIDEyOCwgNjUsIDUwLCA0OSwgNTIsIDEyOCwgNjUsIDUwLCA0OSwgNTEsIDEyOCwgNjUsIDUwLCA0OSwgNTAsIAorICAgIDEyOCwgNjUsIDUwLCA0OSwgNDksIDEyOCwgNjUsIDUwLCA0OSwgNDgsIDEyOCwgNjUsIDUwLCA0OCwgNTcsIDY1LCAxMjgsIAorICAgIDY1LCA1MCwgNDgsIDU3LCAxMjgsIDY1LCA1MCwgNDgsIDU2LCAxMjgsIDY1LCA1MCwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgCisgICAgNTAsIDQ4LCA1NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NCwgMTI4LCA2NSwgNTAsIDQ4LCA1MywgMTI4LCA2NSwgNTAsIDQ4LCAKKyAgICA1MiwgMTI4LCA2NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgNjYsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIAorICAgIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAxMjgsIDY1LCA1MCwgNDgsIDQ5LCAxMjgsIDY1LCA1MCwgNDgsIDQ4LCAxMjgsIAorICAgIDY1LCA0OSwgNTcsIDU3LCAxMjgsIDY1LCA0OSwgNTcsIDU2LCAxMjgsIDY1LCA0OSwgNTcsIDU1LCAxMjgsIDY1LCA0OSwgCisgICAgNTcsIDU0LCAxMjgsIDY1LCA0OSwgNTcsIDUzLCAxMjgsIDY1LCA0OSwgNTcsIDUyLCAxMjgsIDY1LCA0OSwgNTcsIDUxLCAKKyAgICAxMjgsIDY1LCA0OSwgNTcsIDUwLCAxMjgsIDY1LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA0OSwgNTcsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OSwgNTYsIDU3LCAxMjgsIDY1LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA0OSwgNTYsIDU1LCAxMjgsIDY1LCA0OSwgNTYsIAorICAgIDU0LCAxMjgsIDY1LCA0OSwgNTYsIDUzLCAxMjgsIDY1LCA0OSwgNTYsIDUyLCAxMjgsIDY1LCA0OSwgNTYsIDUxLCAxMjgsIAorICAgIDY1LCA0OSwgNTYsIDUwLCAxMjgsIDY1LCA0OSwgNTYsIDQ5LCAxMjgsIDY1LCA0OSwgNTYsIDQ4LCAxMjgsIDY1LCA0OSwgCisgICAgNTUsIDU3LCAxMjgsIDY1LCA0OSwgNTUsIDU2LCAxMjgsIDY1LCA0OSwgNTUsIDU1LCAxMjgsIDY1LCA0OSwgNTUsIDU0LCAKKyAgICAxMjgsIDY1LCA0OSwgNTUsIDUzLCAxMjgsIDY1LCA0OSwgNTUsIDUyLCAxMjgsIDY1LCA0OSwgNTUsIDUxLCAxMjgsIDY1LCAKKyAgICA0OSwgNTUsIDUwLCAxMjgsIDY1LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA0OSwgNTUsIDQ4LCAxMjgsIDY1LCA0OSwgNTQsIAorICAgIDU3LCAxMjgsIDY1LCA0OSwgNTQsIDU2LCAxMjgsIDY1LCA0OSwgNTQsIDU1LCAxMjgsIDY1LCA0OSwgNTQsIDU0LCAxMjgsIAorICAgIDY1LCA0OSwgNTQsIDUzLCAxMjgsIDY1LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA0OSwgNTQsIDUxLCAxMjgsIDY1LCA0OSwgCisgICAgNTQsIDUwLCAxMjgsIDY1LCA0OSwgNTQsIDQ5LCAxMjgsIDY1LCA0OSwgNTQsIDQ4LCAxMjgsIDY1LCA0OSwgNTMsIDU3LCAKKyAgICAxMjgsIDY1LCA0OSwgNTMsIDU2LCAxMjgsIDY1LCA0OSwgNTMsIDU1LCAxMjgsIDY1LCA0OSwgNTMsIDU0LCAxMjgsIDY1LCAKKyAgICA0OSwgNTMsIDUzLCAxMjgsIDY1LCA0OSwgNTMsIDUyLCAxMjgsIDY1LCA0OSwgNTMsIDUxLCAxMjgsIDY1LCA0OSwgNTMsIAorICAgIDUwLCAxMjgsIDY1LCA0OSwgNTMsIDQ5LCAxMjgsIDY1LCA0OSwgNTMsIDQ4LCAxMjgsIDY1LCA0OSwgNTIsIDU3LCAxMjgsIAorICAgIDY1LCA0OSwgNTIsIDU2LCAxMjgsIDY1LCA0OSwgNTIsIDU1LCAxMjgsIDY1LCA0OSwgNTIsIDU0LCAxMjgsIDY1LCA0OSwgCisgICAgNTIsIDUzLCAxMjgsIDY1LCA0OSwgNTIsIDUyLCAxMjgsIDY1LCA0OSwgNTIsIDUxLCAxMjgsIDY1LCA0OSwgNTIsIDUwLCAKKyAgICAxMjgsIDY1LCA0OSwgNTIsIDQ5LCAxMjgsIDY1LCA0OSwgNTIsIDQ4LCAxMjgsIDY1LCA0OSwgNTEsIDU3LCAxMjgsIDY1LCAKKyAgICA0OSwgNTEsIDU2LCAxMjgsIDY1LCA0OSwgNTEsIDU1LCAxMjgsIDY1LCA0OSwgNTEsIDU0LCAxMjgsIDY1LCA0OSwgNTEsIAorICAgIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUxLCA1MywgMTI4LCA2NSwgNDksIDUxLCA1MiwgMTI4LCA2NSwgNDksIDUxLCA1MSwgCisgICAgMTI4LCA2NSwgNDksIDUxLCA1MCwgMTI4LCA2NSwgNDksIDUxLCA0OSwgNjcsIDEyOCwgNjUsIDQ5LCA1MSwgNDksIDEyOCwgCisgICAgNjUsIDQ5LCA1MSwgNDgsIDEyOCwgNjUsIDQ5LCA1MCwgNTcsIDEyOCwgNjUsIDQ5LCA1MCwgNTYsIDEyOCwgNjUsIDQ5LCAKKyAgICA1MCwgNTUsIDEyOCwgNjUsIDQ5LCA1MCwgNTQsIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNTAsIAorICAgIDUzLCAxMjgsIDY1LCA0OSwgNTAsIDUyLCAxMjgsIDY1LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCA0OSwgNTAsIDUwLCAxMjgsIAorICAgIDY1LCA0OSwgNTAsIDQ5LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCA2NiwgMTI4LCA2NSwgNDksIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNDksIDQ5LCA1NywgMTI4LCA2NSwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNDksIDQ5LCA1NSwgMTI4LCA2NSwgNDksIDQ5LCAKKyAgICA1NCwgMTI4LCA2NSwgNDksIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDEyOCwgNjUsIDQ5LCA0OSwgNTIsIAorICAgIDEyOCwgNjUsIDQ5LCA0OSwgNTEsIDEyOCwgNjUsIDQ5LCA0OSwgNTAsIDEyOCwgNjUsIDQ5LCA0OSwgNDksIDEyOCwgNjUsIAorICAgIDQ5LCA0OSwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgMTI4LCA2NSwgCisgICAgNDksIDQ4LCA1NywgMTI4LCA2NSwgNDksIDQ4LCA1NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjcsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTUsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1NCwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDUzLCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjYsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTIsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAxMjgsIDY1LCA0OSwgNDgsIDUxLCAxMjgsIDY1LCA0OSwgNDgsIAorICAgIDUwLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OSwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgCisgICAgNDksIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA0NSwgNDksIDQ4LCA1MCwgMTI4LCAKKyAgICA2NSwgNDksIDQ4LCA0OCwgMTI4LCA2NSwgNDgsIDU3LCA1NywgMTI4LCA2NSwgNDgsIDU3LCA1NiwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA1NywgNTYsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIDU1LCAxMjgsIDY1LCA0OCwgCisgICAgNTcsIDU0LCAxMjgsIDY1LCA0OCwgNTcsIDUzLCAxMjgsIDY1LCA0OCwgNTcsIDUyLCAxMjgsIDY1LCA0OCwgNTcsIDUxLCAKKyAgICAxMjgsIDY1LCA0OCwgNTcsIDUwLCAxMjgsIDY1LCA0OCwgNTcsIDQ5LCAxMjgsIDY1LCA0OCwgNTcsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OCwgNTYsIDU3LCAxMjgsIDY1LCA0OCwgNTYsIDU2LCAxMjgsIDY1LCA0OCwgNTYsIDU1LCAxMjgsIDY1LCA0OCwgNTYsIAorICAgIDU0LCAxMjgsIDY1LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCA0OCwgNTYsIDUyLCAxMjgsIDY1LCA0OCwgNTYsIDUxLCAxMjgsIAorICAgIDY1LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA0OCwgNTYsIDQ4LCAxMjgsIDY1LCA0OCwgCisgICAgNTUsIDU3LCAxMjgsIDY1LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA0OCwgNTUsIDU1LCAxMjgsIDY1LCA0OCwgNTUsIDU0LCAKKyAgICAxMjgsIDY1LCA0OCwgNTUsIDUzLCAxMjgsIDY1LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA0OCwgNTUsIDUxLCAxMjgsIDY1LCAKKyAgICA0OCwgNTUsIDUwLCAxMjgsIDY1LCA0OCwgNTUsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIAorICAgIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NywgCisgICAgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCAKKyAgICA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIAorICAgIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIAorICAgIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgCisgICAgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAKKyAgICAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCA2NiwgMTI4LCAKKyAgICA2NSwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIAorICAgIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA2NSwgCisgICAgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MiwgNDksIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIAorICAgIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgNjUsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIDQ4LCA1MSwgCisgICAgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIDQ4LCA1MSwgNTMsIDEyOCwgCisgICAgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTAsIDU2LCA2NiwgMTI4LCA2NSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIAorICAgIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY2LCAKKyAgICAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjUsIDQ1LCA2OSwgODUsIAorICAgIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCA4OSwgODUsIDE5NiwgNDUsIAorICAgIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIDcyLCA2NSwgMjEwLCA0NSwgCisgICAgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGxleGljb25fb2Zmc2V0W10gPSB7Ci0gICAgMCwgMCwgNiwgMTAsIDE0LCAyMiwgMjcsIDM0LCA0NCwgNDksIDU4LCA2NCwgNjYsIDY5LCA4MSwgODksIDEwMiwgMTA4LCAKLSAgICAxMTMsIDExOCwgMTI2LCAxMzUsIDE0NiwgMTUxLCAxNTYsIDE2MSwgMTY0LCAxNjgsIDE3NywgMTgzLCAxODksIDE5NCwgCi0gICAgMjAxLCAyMDksIDIxNywgMjE4LCAyMjEsIDIyOSwgMTY1LCAyMzUsIDI0NCwgMjUxLCAyNjEsIDI2NywgMjc0LCAyNzksIAotICAgIDI4MiwgMjg3LCAyOTMsIDI5NiwgMzAwLCAzMDUsIDMxMSwgMzE3LCAzMjIsIDMyNywgMzMzLCAzMzksIDM0OCwgMzU1LCAKLSAgICAzNjIsIDM3MSwgMzc2LCAzODEsIDM4MywgMzkxLCAzOTksIDQwMCwgNDA4LCA0MTAsIDQxNywgNDIwLCA0MjYsIDQzMywgCi0gICAgMzMxLCA0MzgsIDQ0MCwgNDQyLCA0NDksIDQ1MSwgNDU2LCA0NjQsIDQ3MSwgNDc2LCA0ODAsIDQ4NiwgNDkxLCA1MDEsIAotICAgIDUwNiwgNTEzLCA1MTYsIDUyNCwgNTI4LCA1MzgsIDU0NSwgNTU0LCA1NjEsIDU3MCwgNTc3LCA1ODAsIDU4NCwgNTkyLCAKLSAgICA1OTgsIDYxMSwgNjE4LCA2MjIsIDYyNiwgNjI3LCA2MzYsIDY0MCwgNjQ5LCA2NTUsIDY1OSwgNjYxLCA2NjYsIDY3NCwgCi0gICAgNjc4LCA2ODYsIDY5MSwgNjk0LCA3MDAsIDcwMywgNzA3LCA3MTIsIDcyMCwgNzIzLCA3MzAsIDczNSwgNzQ0LCA3NTMsIAotICAgIDc2MSwgNzY5LCA3NzMsIDc3OSwgNzg3LCA3OTQsIDc5NywgODA3LCA4MTEsIDgxNSwgODI2LCA4MzMsIDg0MCwgODQ0LCAKLSAgICA4NDgsIDg1NCwgODQyLCA4NjMsIDg2OSwgODc0LCA4NzksIDg4MywgODg2LCA4ODksIDg5NCwgOTAzLCA5MTEsIDkxNiwgCi0gICAgNjU4LCA1NzUsIDkyMSwgOTI0LCA5MzAsIDkzNCwgOTM4LCA5NDcsIDk1MywgOTYwLCA5NjksIDk3NiwgOTg5LCA5OTQsIAotICAgIDk5OCwgMTAwNiwgMTAwOSwgMTAxNSwgMTAyMSwgMTAzMCwgMTAzNywgMTA0NSwgMTA1MiwgMTA2MiwgMTA2OSwgMTA3NywgCi0gICAgMTA4NiwgMTA5MCwgMTA5MywgMTEwMCwgMjEsIDExMDQsIDExMTMsIDExMjEsIDExMjgsIDExMzEsIDExMzYsIDExMzgsIAotICAgIDExNDIsIDExNTEsIDExNTYsIDExNTksIDExNjUsIDExNzIsIDExNzUsIDExODAsIDExODUsIDExOTEsIDExOTYsIDEyMDEsIAotICAgIDEyMDYsIDEyMTAsIDEyMTUsIDEyMjEsIDEyMjYsIDEyMzEsIDEyMzUsIDEyNDEsIDEyNDYsIDEyNTEsIDEyNTYsIDEyNjAsIAotICAgIDEyNjUsIDEyNzAsIDEyNzUsIDEyODEsIDEyODcsIDEyOTMsIDEyOTgsIDEzMDIsIDEzMDcsIDEzMTIsIDEzMTcsIDEzMjEsIAotICAgIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDEsIDExNzYsIDExODEsIDExODYsIDExOTIsIDExOTcsIDEzNDUsIDEyMDcsIDEzNTEsIAotICAgIDEzNTYsIDEzNjEsIDEzNjgsIDEzNzIsIDEzNzUsIDEzODQsIDEyMTEsIDEzODgsIDEyMTYsIDEyMjIsIDEyMjcsIDEzOTIsIAotICAgIDEzOTcsIDE0MDIsIDE0MDYsIDE0MTAsIDE0MTYsIDE0MjAsIDEyMzIsIDE0MjMsIDE0MjUsIDEyNDIsIDE0MzAsIDE0MzQsIAotICAgIDEyNDcsIDE0NDAsIDEyNTIsIDE0NDQsIDE0NDgsIDEyNTcsIDE0NTIsIDE0NTcsIDE0NjEsIDE0NjQsIDE0NjgsIDEyNjEsIAotICAgIDEyNjYsIDE0NzMsIDE0NzksIDEyNzEsIDE0OTEsIDE0OTcsIDE1MDMsIDE1MDksIDEyNzYsIDEyODgsIDEyOTQsIDE1MTMsIAotICAgIDE1MTcsIDE1MjEsIDE1MjQsIDEyOTksIDE1MjgsIDE1MzAsIDE1MzUsIDE1NDAsIDE1NDYsIDE1NTEsIDE1NTYsIDE1NjAsIAotICAgIDE1NjUsIDE1NzAsIDE1NzUsIDE1ODAsIDE1ODYsIDE1OTEsIDE1OTYsIDE2MDIsIDE2MDgsIDE2MTMsIDE2MTcsIDE2MjIsIAotICAgIDE2MjcsIDE2MzIsIDE2MzcsIDE2NDIsIDE2NDYsIDE2NTQsIDE2NTksIDE2NjMsIDE2NjgsIDE2NzMsIDE2NzgsIDE2ODMsIAotICAgIDE2ODcsIDE2OTAsIDE2OTcsIDE3MDIsIDE3MDcsIDE3MTIsIDE3MTcsIDE3MjMsIDE3MjgsIDE3MzIsIDEzMDMsIDE3MzUsIAotICAgIDE3NDAsIDE3NDUsIDEzMDgsIDE3NDksIDE3NTMsIDE3NjAsIDEzMTMsIDE3NjcsIDEzMTgsIDE3NzEsIDE3NzMsIDE3NzgsIAotICAgIDE3ODQsIDEzMjIsIDE3ODksIDE3OTgsIDEzMjcsIDE4MDMsIDE4MDksIDE4MTQsIDEzMzIsIDE4MTksIDE4MjQsIDE4MjcsIAotICAgIDE4MzIsIDE4MzYsIDE4NDAsIDE4NDQsIDE4NDcsIDE4NTEsIDEzMzcsIDE4NTYsIDEzNDIsIDE4NjAsIDE4NjIsIDE4NjgsIAotICAgIDE4NzQsIDE4ODAsIDE4ODYsIDE4OTIsIDE4OTgsIDE5MDQsIDE5MTAsIDE5MTUsIDE5MjEsIDE5MjcsIDE5MzMsIDE5MzksIAotICAgIDE5NDUsIDE5NTEsIDE5NTcsIDE5NjMsIDE5NjksIDE5NzQsIDE5NzksIDE5ODQsIDE5ODksIDE5OTQsIDE5OTksIDIwMDQsIAotICAgIDIwMDksIDIwMTQsIDIwMTksIDIwMjUsIDIwMzAsIDIwMzYsIDIwNDEsIDIwNDcsIDIwNTMsIDIwNTgsIDIwNjQsIDIwNzAsIAotICAgIDIwNzYsIDIwODIsIDIwODcsIDIwOTIsIDIwOTQsIDIwOTUsIDIwOTksIDIxMDMsIDIxMDgsIDIxMTIsIDIxMTYsIDIxMjAsIAotICAgIDIxMjUsIDIxMjksIDIxMzIsIDIxMzcsIDIxNDEsIDIxNDYsIDIxNTAsIDIxNTQsIDIxNTksIDIxNjMsIDIxNjYsIDIxNzAsIAotICAgIDIxNzYsIDIxOTAsIDIxOTQsIDIxOTgsIDIyMDIsIDIyMDUsIDIyMTAsIDIyMTQsIDIyMTgsIDIyMjEsIDIyMjUsIDIyMzAsIAotICAgIDIyMzUsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTMsIDIyNTcsIDIyNjEsIDIyNjYsIDIyNzAsIDIyNzUsIDIyNzksIDIyODQsIAotICAgIDIyOTAsIDIyOTcsIDIzMDMsIDIzMDgsIDIzMTMsIDIzMTgsIDIzMjQsIDIzMjksIDIzMzUsIDIzNDAsIDIzNDMsIDIzNDUsIAotICAgIDExOTMsIDIzNDksIDIzNTYsIDIzNjQsIDIzNzQsIDIzODMsIDIzOTcsIDI0MDEsIDI0MDUsIDI0MTAsIDI0MjMsIDI0MzEsIAotICAgIDI0MzUsIDI0NDAsIDI0NDQsIDI0NDcsIDI0NTEsIDI0NTUsIDI0NjAsIDI0NjUsIDI0NzAsIDI0NzQsIDI0NzcsIDI0ODEsIAotICAgIDI0ODgsIDI0OTUsIDI1MDEsIDI1MDYsIDI1MTEsIDI1MTcsIDI1MjMsIDI1MjgsIDI1MzEsIDE3NzUsIDI1MzMsIDI1MzksIAotICAgIDI1NDMsIDI1NDgsIDI1NTIsIDI1NTYsIDE2OTMsIDE3ODYsIDI1NjEsIDI1NjUsIDI1NjgsIDI1NzMsIDI1NzgsIDI1ODMsIAotICAgIDI1ODgsIDI1OTIsIDI1OTksIDI2MDQsIDI2MDcsIDI2MTQsIDI2MjAsIDI2MjQsIDI2MjgsIDI2MzIsIDI2MzcsIDI2NDQsIAotICAgIDI2NDksIDI2NTQsIDI2NjEsIDI2NjcsIDI2NzMsIDI2NzksIDI2OTMsIDI3MTAsIDI3MjUsIDI3NDAsIDI3NDksIDI3NTQsIAotICAgIDI3NTgsIDI3NjMsIDI3NjgsIDI3NzIsIDI3ODQsIDI3OTEsIDI3OTcsIDIyOTMsIDI4MDMsIDI4MTAsIDI4MTYsIDI4MjAsIAotICAgIDI4MjMsIDI4MzAsIDI4MzYsIDI4NDEsIDI4NDUsIDI4NTAsIDI4NTQsIDI4NTgsIDIxMTcsIDI4NjIsIDI4NjcsIDI4NzIsIAotICAgIDI4NzYsIDI4ODEsIDI4ODksIDI4OTMsIDI4OTgsIDI5MDIsIDI5MDYsIDI5MTAsIDI5MTUsIDI5MjAsIDI5MjUsIDI5MjksIAotICAgIDI5MzQsIDI5MzksIDI5NDMsIDI5NDgsIDI5NTIsIDI5NTUsIDI5NTksIDI5NjMsIDI5NzEsIDI5NzYsIDI5ODAsIDI5ODQsIAotICAgIDI5OTAsIDI5OTksIDMwMDMsIDMwMDcsIDMwMTMsIDMwMTgsIDMwMjUsIDMwMjksIDMwMzksIDMwNDMsIDMwNDcsIDMwNTIsIAotICAgIDMwNTYsIDMwNjEsIDMwNjcsIDMwNzIsIDMwNzYsIDMwODAsIDMwODQsIDI0OTEsIDMwOTIsIDMwOTcsIDMxMDMsIDMxMDgsIAotICAgIDMxMTIsIDMxMTcsIDMxMjIsIDMxMjYsIDMxMzIsIDMxMzcsIDIxMjEsIDMxNDMsIDMxNDksIDMxNTQsIDMxNTksIDMxNjQsIAotICAgIDMxNjksIDMxNzQsIDMxNzksIDMxODQsIDMxODksIDMxOTQsIDMyMDAsIDMyMDUsIDEyMDgsIDEwMSwgMzIxMSwgMzIxNSwgCi0gICAgMzIxOSwgMzIyMywgMzIyOCwgMzIzMiwgMzIzNiwgMzI0MiwgMzI0NywgMzI1MSwgMzI1NSwgMzI2MCwgMzI2NSwgMzI2OSwgCi0gICAgMzI3NCwgMzI3OCwgMzI4MSwgMzI4NSwgMzI5MCwgMzI5NCwgMzI5OSwgMzMwMywgMzMwNiwgMzMxMCwgMzMxNCwgMzMxOSwgCi0gICAgMzMyMywgMzMyNiwgMzMzOSwgMzM0MywgMzM0NywgMzM1MSwgMzM1NiwgMzM2MCwgMzM2NCwgMzM2NywgMzM3MSwgMzM3NSwgCi0gICAgMzM4MCwgMzM4NCwgMzM4OSwgMzM5NCwgMzM5OSwgMzQwMywgMzQwOCwgMzQxMSwgMzQxNCwgMzQxOSwgMzQyNSwgMzQyOSwgCi0gICAgMzQzMywgMzQzNiwgMzQ0MSwgMzQ0NSwgMzQ1MCwgMzQ1NCwgMzQ1OCwgMzQ2MSwgMzQ2NywgMzQ3MiwgMzQ3NywgMzQ4MywgCi0gICAgMzQ4OCwgMzQ5MywgMzQ5OSwgMzUwNSwgMzUxMCwgMzUxNSwgMzUyMCwgMzUyNSwgMTE0MCwgNTc5LCAzNTI4LCAzNTMxLCAKLSAgICAzNTM2LCAzNTQwLCAzNTQ0LCAzNTQ4LCAzNTUyLCAzNTU1LCAzNTU5LCAzNTY0LCAzNTY5LCAzNTczLCAzNTc4LCAzNTgyLCAKLSAgICAzNTg3LCAzNTkxLCAzNTk1LCAzNTk5LCAzNjA1LCAzNjExLCAzNjE0LCAzNjE3LCAxMzksIDM2MjMsIDM2MjgsIDM2MzcsIAotICAgIDM2NDUsIDM2NTQsIDM2NjEsIDM2NjcsIDM2NzQsIDM2NzksIDM2ODMsIDM2ODcsIDM2OTUsIDM3MDIsIDM3MDcsIDM3MTQsIAotICAgIDM3MTksIDM3MjMsIDM3MzMsIDM3MzcsIDM3NDEsIDM3NDYsIDM3NTEsIDM3NjEsIDIxMzMsIDM3NjYsIDM3NzAsIDM3NzMsIAotICAgIDM3NzksIDM3ODQsIDM3OTAsIDM3OTYsIDM4MDEsIDM4MDgsIDM4MTIsIDM4MTYsIDYzNywgNzAxLCAxMzY5LCAzODIwLCAKLSAgICAzODI3LCAzODM0LCAzODQwLCAzODQ1LCAzODUyLCAzODU5LCAzODY0LCAzODcwLCAzODc2LCAzODgxLCAzODg1LCAzODkxLCAKLSAgICAzODk4LCAzOTAzLCAzOTA3LCAyMTQyLCAzOTExLCAzOTE5LCAzOTI1LCAzOTMzLCA3MzksIDM5MzksIDM5NDcsIDM5NTgsIAotICAgIDM5NjIsIDM5NzIsIDIxNDcsIDM5NzgsIDM5ODMsIDM5OTgsIDQwMDQsIDQwMTEsIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIAotICAgIDQwNDQsIDQwNDcsIDQwNTAsIDQwNTQsIDQwNTksIDQwNjYsIDQwNzEsIDQwNzUsIDQwNzksIDQwODMsIDQwODcsIDQwOTIsIAotICAgIDQwOTgsIDQxMDksIDQxMTMsIDMyODYsIDQxMTgsIDQxMzAsIDQxMzYsIDQxNDQsIDQxNDgsIDQxNTMsIDE1NjIsIDQxNjAsIAotICAgIDQxNjMsIDQxNjYsIDQxNzAsIDQxNzMsIDQxNzksIDQxODMsIDQxOTcsIDQyMDEsIDQyMDQsIDQyMDgsIDQyMTQsIDQyMjAsIAotICAgIDQyMjUsIDQyMjksIDQyMzMsIDQyMzksIDQyNTAsIDQyNTYsIDQyNjEsIDQyNjcsIDQyNzEsIDQyNzksIDQyOTEsIDQzMDEsIAotICAgIDQzMDcsIDQzMTIsIDQzMjEsIDQzMjksIDQzMzYsIDQzNDIsIDQzNDYsIDQzNTIsIDQzNjEsIDQzNzAsIDQzNzQsIDQzODMsIAotICAgIDQzODgsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDksIDQ0MTUsIDQ0MTksIDQ0MjQsIDQ0MjgsIDQ0MzQsIDIxNTUsIDEzODUsIAotICAgIDQ0NDAsIDQ0NDUsIDQ0NTEsIDQ0NTYsIDQ0NjEsIDQ0NjYsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODcsIDQ0OTIsIDQ0OTgsIAotICAgIDQ1MDMsIDQ1MDgsIDQ1MTMsIDQ1MTksIDQ1MjQsIDQ1MjksIDQ1MzQsIDQ1MzksIDQ1NDUsIDQ1NTAsIDQ1NTYsIDQ1NjEsIAotICAgIDQ1NjYsIDQ1NzEsIDQ1NzYsIDQ1ODEsIDQ1ODYsIDQ1OTIsIDQ1OTcsIDQ2MDIsIDI5MSwgMzIxLCA0NjA3LCA0NjEzLCAKLSAgICA0NjE3LCA0NjIxLCA0NjI2LCA0NjMwLCA0NjM0LCA0NjM3LCA0NjQxLCA0NjQ1LCA0NjQ5LCA0NjUzLCA0NjU3LCA0NjYyLCAKLSAgICA0NjY2LCA0NjcwLCA0Njc2LCA0NDM3LCA0NjgxLCA0Njg1LCA0Njg4LCA0NjkzLCA0Njk4LCA0NzAzLCA0NzA4LCA0NzEzLCAKLSAgICA0NzE4LCA0NzIzLCA0NzI4LCA0NzMzLCA0NzM4LCA0NzQyLCA0NzQ3LCA0NzUyLCA0NzU3LCA0NzYyLCA0NzY3LCA0NzcyLCAKLSAgICA0Nzc3LCA0NzgyLCA0Nzg3LCA0NzkyLCA0Nzk2LCA0ODAxLCA0ODA2LCA0ODExLCA0ODE2LCA0ODIxLCA0ODI2LCA0ODMxLCAKLSAgICA0ODM2LCA0ODQxLCA0ODQ2LCA0ODUwLCA0ODU1LCA0ODYwLCA0ODY1LCA0ODcwLCA0ODc1LCA0ODgwLCA0ODg1LCA0ODkwLCAKLSAgICA0ODk1LCA0OTAwLCA0OTA0LCA0OTA5LCA0OTE0LCA0OTE5LCA0OTI0LCA0OTI5LCA0OTM0LCA0OTM5LCA0OTQ0LCA0OTQ5LCAKLSAgICA0OTU0LCA0OTU4LCA0OTYzLCA0OTY4LCA0OTczLCA0OTc4LCA0OTgzLCA0OTg4LCA0OTkzLCA0OTk4LCA1MDAzLCA1MDA4LCAKLSAgICA1MDEyLCA1MDE3LCA1MDIyLCA1MDI3LCA1MDMyLCA1MDM3LCA1MDQyLCA1MDQ3LCA1MDUyLCA1MDU3LCA1MDYyLCA1MDY2LCAKLSAgICA1MDcxLCA1MDc2LCA1MDgxLCA1MDg2LCA1MDkyLCA1MDk4LCA1MTA0LCA1MTEwLCA1MTE2LCA1MTIyLCA1MTI4LCA1MTMzLCAKLSAgICA1MTM5LCA1MTQ1LCA1MTUxLCA1MTU3LCA1MTYzLCA1MTY5LCA1MTc1LCA1MTgxLCA1MTg3LCA1MTkzLCA1MTk4LCA1MjA0LCAKLSAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUyLCA1MjU4LCA1MjYzLCA1MjY5LCA1Mjc1LCAKLSAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE3LCA1MzIzLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKLSAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgyLCA1Mzg4LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKLSAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ3LCA1NDUzLCA1NDU4LCA1NDYyLCA1NDY4LCA1NDc0LCA1NDgwLCA1NDg2LCAKLSAgICA1NDkyLCA1NDk4LCA1NTA0LCA1NTEwLCA1NTE2LCA1NTIyLCA1NTI3LCA1NTMzLCA1NTM5LCA1NTQ1LCA1NTUxLCA1NTU3LCAKLSAgICA1NTYzLCA1NTY5LCA1NTc1LCA1NTgxLCA1NTg3LCA1NTkyLCA1NTk4LCA1NjA0LCA1NjEwLCA1NjE2LCA1NjIyLCA1NjI4LCAKLSAgICA1NjM0LCA1NjQwLCA1NjQ2LCA1NjUyLCA1NjU3LCA1NjYzLCA1NjY5LCA1Njc1LCA1NjgxLCA1Njg3LCA1NjkzLCA1Njk5LCAKLSAgICA1NzA1LCA1NzExLCA1NzE3LCA1NzIyLCA1NzI4LCA1NzM0LCA1NzQwLCA1NzQ2LCA1NzUyLCA1NzU4LCA1NzY0LCA1NzcwLCAKLSAgICA1Nzc2LCA1NzgyLCA1Nzg3LCA1NzkzLCA1Nzk5LCA1ODA1LCA1ODExLCA1ODE3LCA1ODIzLCA1ODI5LCA1ODM1LCA1ODQxLCAKLSAgICA1ODQ3LCA1ODUyLCA1ODU4LCA1ODY0LCA1ODcwLCA1ODc2LCA1ODgyLCA1ODg4LCA1ODk0LCA1OTAwLCA1OTA2LCA1OTEyLCAKLSAgICA1OTE3LCA1OTIzLCA1OTI5LCA1OTM1LCA1OTQxLCA1OTQ3LCA1OTUzLCA1OTU5LCA1OTY1LCA1OTcxLCA1OTc3LCA1OTgyLCAKLSAgICA1OTg4LCA1OTk0LCA2MDAwLCA2MDA2LCA2MDEyLCA2MDE4LCA2MDI0LCA2MDMwLCA2MDM2LCA2MDQyLCA2MDQ3LCA2MDUzLCAKLSAgICA2MDU5LCA2MDY1LCA2MDcxLCA2MDc3LCA2MDgzLCA2MDg5LCA2MDk1LCA2MTAxLCA2MTA3LCA2MTEyLCA2MTE2LCA2MTE5LCAKLSAgICA2MTI2LCA2MTMwLCA2MTQzLCA2MTQ3LCA2MTUxLCA2MTU1LCA2MTU4LCA2MTYyLCA2MTY3LCA2MTcxLCA2MTc1LCA2MTgxLCAKLSAgICA2MTg4LCA2MTk5LCA2MjA3LCA2MjE0LCA2MjE4LCA2MjI2LCA2MjM1LCA2MjQxLCA2MjUzLCA2MjU4LCA2MjYxLCA2MjY2LCAKLSAgICA2MjcwLCA2MjgwLCA2Mjg4LCA2Mjk2LCA2MzAyLCA2MzA2LCA2MzE2LCA2MzI2LCA2MzM0LCA2MzQxLCA2MzQ4LCA2MzU0LCAKLSAgICA2MzYwLCA2MzY3LCA2MzcxLCA2Mzc4LCA2Mzg4LCA2Mzk4LCA2NDA2LCA2NDEzLCA2NDE4LCA2NDIyLCA2NDI2LCA2NDM0LCAKLSAgICA2NDM4LCA2NDQzLCA2NDUwLCA2NDU4LCA2NDYzLCA2NDY3LCA2NDcyLCA2NDc2LCA2NDgzLCA2NDg4LCA2NTAyLCA2NTA3LCAKLSAgICA2NTEyLCA2NTE5LCAzNTQxLCA2NTI4LCA2NTMyLCA2NTM3LCA2NTQxLCA2NTQ1LCA2NTQ4LCA2NTUzLCA2NTU4LCA2NTY3LCAKLSAgICA2NTczLCA2NTc5LCA2NTg1LCA2NTg5LCA2NjAwLCA2NjEwLCA2NjI1LCA2NjQwLCA2NjU1LCA2NjcwLCA2Njg1LCA2NzAwLCAKLSAgICA2NzE1LCA2NzMwLCA2NzQ1LCA2NzYwLCA2Nzc1LCA2NzkwLCA2ODA1LCA2ODIwLCA2ODM1LCA2ODUwLCA2ODY1LCA2ODgwLCAKLSAgICA2ODk1LCA2OTEwLCA2OTI1LCA2OTQwLCA2OTU1LCA2OTcwLCA2OTg1LCA3MDAwLCA3MDE1LCA3MDMwLCA3MDQ1LCA3MDYwLCAKLSAgICA3MDc1LCA3MDkwLCA3MTA1LCA3MTIwLCA3MTM1LCA3MTUwLCA3MTY1LCA3MTgwLCA3MTk1LCA3MjEwLCA3MjI1LCA3MjQwLCAKLSAgICA3MjU1LCA3MjcwLCA3Mjg1LCA3MzAwLCA3MzE1LCA3MzMwLCA3MzQ1LCA3MzU0LCA3MzYzLCA3MzY4LCA3Mzc0LCA3Mzg0LCAKLSAgICA3Mzg4LCA3MzkyLCA3Mzk3LCA3NDAyLCA3NDEwLCA3NDE0LCA3NDE3LCA3NDIxLCAzMDM0LCA3NDI0LCA3NDI5LCAzMzAsIAotICAgIDUwNCwgNzQzNSwgNzQ0MywgNzQ0NywgNzQ1MSwgNzQ1NCwgNzQ1OCwgNzQ2NCwgNzQ2OCwgNzQ3NiwgNzQ4MiwgNzQ4NywgCi0gICAgNzQ5NCwgNzUwMiwgNzUwOSwgNzUxNSwgNzUyMCwgNzUyNywgNzUzMywgNzU0MSwgNzU0NSwgNzU1MCwgNzU2MiwgNzU3MywgCi0gICAgNzU4MCwgNzU4NCwgNzU4OCwgNzU5MiwgNzU5NSwgNzYwMSwgMzMxMSwgNzYwNSwgNzYxMSwgNzYxNiwgNzYyMSwgNzYyNiwgCi0gICAgNzYzMiwgNzYzNywgNzY0MiwgNzY0NywgNzY1MiwgNzY1OCwgNzY2MywgNzY2OCwgNzY3NCwgNzY3OSwgNzY4NSwgNzY5MCwgCi0gICAgNzY5NiwgNzcwMSwgNzcwNywgNzcxMiwgNzcxNywgNzcyMiwgNzcyNywgNzczMiwgNzczOCwgNzc0MywgNzc0OCwgNzc1MywgCi0gICAgNzc1OSwgNzc2NSwgNzc3MSwgNzc3NywgNzc4MywgNzc4OSwgNzc5NSwgNzgwMSwgNzgwNywgNzgxMywgNzgxOSwgNzgyNSwgCi0gICAgNzgzMCwgNzgzNSwgNzg0MCwgNzg0NSwgNzg1MCwgNzg1NSwgNzg2MCwgNzg2NSwgNzg3MSwgNzg3NywgNzg4MiwgNzg4OCwgCi0gICAgNzg5NCwgNzkwMCwgNzkwNSwgNzkxMCwgNzkxNSwgNzkyMCwgNzkyNiwgNzkzMiwgNzkzNywgNzk0MiwgNzk0NywgNzk1MiwgCi0gICAgNzk1NywgNzk2MywgNzk2OCwgNzk3NCwgNzk4MCwgNzk4NiwgNzk5MiwgNzk5OCwgODAwNCwgODAxMCwgODAxNiwgODAyMiwgCi0gICAgMjE2NCwgNzQ1MywgODAyNywgODAzMSwgODAzNSwgODAzOCwgODA0NSwgODA0OCwgODA1MiwgODA2MCwgODA2NSwgODA3MCwgCi0gICAgODA2MSwgODA3NSwgMjE5MSwgODA3OSwgODA4NSwgODA5MSwgODA5NiwgODEwMSwgODEwOCwgODExNiwgODEyMSwgODEyNSwgCi0gICAgODEyOCwgODEzMiwgODEzOCwgODE0NCwgODE0OCwgMjE5OSwgNTI2LCA4MTUxLCA4MTU1LCA4MTYwLCA4MTY2LCA4MTcxLCAKLSAgICA4MTc1LCA4MTc4LCA4MTgyLCA4MTg4LCA4MTkzLCA4MTk3LCA4MjA0LCA4MjA4LCA4MjEyLCA4MjE2LCA4NzYsIDk1OCwgCi0gICAgODIxOSwgODIyNywgODIzNCwgODI0MCwgODI0NywgODI1NSwgODI2MiwgODI3MywgODI4MCwgODI4NiwgODI5MSwgODMwMywgCi0gICAgMTIyOCwgMTM5MywgMTM5OCwgODMxNCwgMTQwMywgODMxOCwgODMyMiwgODMzMSwgODMzOSwgODM0MywgODM1MiwgODM1OCwgCi0gICAgODM2MywgODM2NywgODM3MywgODM3OCwgODM4NSwgMjc0NSwgODM5MiwgODM5NiwgODQwNSwgODQxNCwgODQyMywgODQzMiwgCi0gICAgODQzOCwgODQ0MywgODQ0OCwgODQ1OSwgODQ3MSwgODQ3NiwgODQ4NCwgMjI1MCwgODQ4OCwgODQ5MCwgODQ5NSwgODQ5OSwgCi0gICAgODUwOCwgODUxNiwgMTQwNywgMTU5LCAzNTgzLCAzNTg4LCA4NTIyLCA4NTI2LCA4NTM1LCA4NTQxLCA4NTQ2LCA4NTQ5LCAKLSAgICA4NTU4LCAzNTkyLCAyNzM3LCA4NTY0LCA4NTcyLCA4NTc2LCA4NTgwLCA4NTg0LCAyMjY3LCA4NTg4LCA4NTkzLCA4NjAwLCAKLSAgICA4NjA2LCA4NjEyLCA4NjE1LCA4NjE3LCA4NjIwLCA4NjI4LCA4NjM2LCA4NjQ0LCA4NjQ3LCA4NjUyLCAyMjgwLCA4NjU3LCAKLSAgICA4MDcyLCA4NjYwLCA4NjYyLCA4NjY3LCA4NjcyLCA4Njc3LCA4NjgyLCA4Njg3LCA4NjkyLCA4Njk3LCA4NzAyLCA4NzA3LCAKLSAgICA4NzEyLCA4NzE4LCA4NzIzLCA4NzI4LCA4NzMzLCA4NzM5LCA4NzQ0LCA4NzQ5LCA4NzU0LCA4NzU5LCA4NzY0LCA4NzY5LCAKLSAgICA4Nzc1LCA4NzgwLCA4Nzg1LCA4NzkwLCA4Nzk1LCA4ODAwLCA4ODA1LCA4ODEwLCA4ODE1LCA4ODIwLCA4ODI1LCA4ODMwLCAKLSAgICA4ODM1LCA4ODQwLCA4ODQ1LCA4ODUwLCA4ODU1LCA4ODYwLCA4ODY2LCA4ODcyLCA4ODc3LCA4ODgyLCA4ODg3LCA4ODkyLCAKLSAgICA4ODk3LCAyMjkxLCAyMjk4LCAyMzA0LCA4OTAyLCA4OTEwLCA4OTE2LCA4OTI0LCAyMzMwLCAyMzM2LCA4OTMyLCA4OTM2LCAKLSAgICA4OTQxLCA4OTQ1LCA4OTQ5LCA4OTUzLCA4OTU4LCA4OTYyLCA4OTY3LCA4OTcxLCA4OTc0LCA4OTc3LCA4OTgzLCA4OTkwLCAKLSAgICA4OTk2LCA5MDAzLCA5MDA5LCA5MDE2LCA5MDIyLCA5MDI5LCA5MDM1LCA5MDQxLCA5MDUwLCA5MDU2LCA5MDYwLCA5MDY0LCAKLSAgICA5MDY4LCA5MDcyLCA5MDc3LCA5MDgxLCA5MDg2LCA5MDkwLCA5MDk2LCA5MTAxLCA5MTA4LCA5MTE5LCA5MTI3LCA5MTM3LCAKLSAgICA5MTQzLCA5MTUzLCA5MTYyLCA5MTY5LCA5MTc0LCA5MTc4LCA5MTg5LCA5MjAyLCA5MjEzLCA5MjI2LCA5MjM3LCA5MjQ5LCAKLSAgICA5MjYxLCA5MjczLCA5Mjg2LCA5Mjk5LCA5MzA2LCA5MzEyLCA5MzI2LCA5MzMzLCA5MzM5LCA5MzQ4LCA5MzU2LCA5MzYwLCAKLSAgICA5MzY1LCA5MzY5LCA5Mzc2LCA5Mzg0LCA5Mzg4LCA5Mzk0LCA5Mzk4LCA5NDA0LCA5NDE0LCA5NDE4LCA5NDIzLCA5NDI4LCAKLSAgICA5NDM1LCA5NDQxLCA5NDUxLCA4MjQyLCA5NDU3LCA5NDYxLCA5NDY4LCA5NDc0LCA5NDgxLCA5NDg4LCA5NTcsIDk0OTIsIAotICAgIDk0OTYsIDk1MDEsIDk1MDYsIDk1MTEsIDk1MTUsIDk1MjEsIDk1MjksIDk1MzUsIDk1MzksIDk1NDIsIDk1NDgsIDk1NTgsIAotICAgIDk1NjIsIDk1NjgsIDk1NzMsIDk1NzcsIDk1ODEsIDk1ODcsIDk1OTMsIDIxODcsIDk1OTgsIDk2MDAsIDk2MDUsIDk2MTMsIAotICAgIDk2MjIsIDk2MjYsIDk2MzIsIDk2MzcsIDk2NDIsIDk2NDcsIDk2NTIsIDk2NTgsIDk2NjMsIDk2NjgsIDQyMzUsIDk2NzMsIAotICAgIDk2NzgsIDk2ODIsIDk2ODgsIDk2OTMsIDk2OTksIDk3MDQsIDk3MDksIDk3MTUsIDk3MjAsIDk2MjcsIDk3MjYsIDk3MzAsIAotICAgIDk3MzcsIDk3NDMsIDk3NDgsIDk3NTIsIDY0OTgsIDk3NTcsIDk3NjYsIDk3NzEsIDk3NzYsIDg1OTYsIDg2MDMsIDk3ODEsIAotICAgIDI5MTIsIDk3ODUsIDk3OTAsIDk3OTUsIDk4MDAsIDk2MzgsIDk4MDQsIDk4MDksIDk4MTQsIDk2NDMsIDk4MTgsIDk2NDgsIAotICAgIDk4MjMsIDk4MzAsIDk4MzcsIDk4NDMsIDk4NTAsIDk4NTYsIDk4NjIsIDk4NjcsIDk4NzQsIDk4NzksIDk4ODQsIDk4ODksIAotICAgIDk4OTUsIDk2NTMsIDk2NTksIDk5MDEsIDk5MDcsIDk5MTIsIDk5MTcsIDk5MjUsIDk2NjQsIDk5MzAsIDExMDIsIDk5MzMsIAotICAgIDk5NDEsIDk5NDcsIDk5NTMsIDk5NjIsIDk5NzAsIDk5NzgsIDk5ODYsIDk5OTQsIDEwMDAyLCAxMDAxMCwgMTAwMTgsIAotICAgIDEwMDI2LCAxMDAzNSwgMTAwNDQsIDEwMDUyLCAxMDA2MSwgMTAwNzAsIDEwMDc5LCAxMDA4OCwgMTAwOTcsIDEwMTA2LCAKLSAgICAxMDExNSwgMTAxMjQsIDEwMTMzLCAxMDE0MiwgMTAxNTAsIDEwMTU1LCAxMDE2MSwgMTAxNjksIDEwMTc2LCAxMDE5MSwgCi0gICAgMTAyMDgsIDEwMjI3LCAxMDIzNiwgMTAyNDQsIDEwMjU5LCAxMDI3MCwgMTAyODAsIDEwMjkwLCAxMDI5OCwgMTAzMDQsIAotICAgIDEwMzE2LCAxMDMyNSwgMTAzMzMsIDEwMzQwLCAxMDM0NywgMTAzNTQsIDEwMzYwLCAxMDM2NSwgMTAzNzUsIDEwMzgzLCAKLSAgICAxMDM5MywgMTA0MDAsIDEwNDEwLCAxMDQyMCwgMTA0MzAsIDEwNDM4LCAxMDQ0NSwgMTA0NTQsIDEwNDY0LCAxMDQ3OCwgCi0gICAgMTA0OTMsIDEwNTAyLCAxMDUxMCwgMTA1MTUsIDEwNTE5LCAxMDUyOCwgMTA1MzQsIDEwNTM5LCAxMDU0OSwgMTA1NTksIAotICAgIDEwNTY5LCAxMDU3NCwgMTA1NzgsIDEwNTg3LCAxMDU5MiwgMTA2MDgsIDEwNjI1LCAxMDYzNSwgMTA2NDYsIDEwNjU5LCAKLSAgICAxMDY2NywgMTA2ODAsIDEwNjkyLCAxMDcwMCwgMTA3MDUsIDEwNzA5LCAxMDcxNSwgMTA3MjAsIDEwNzI4LCAxMDczNiwgCi0gICAgMTA3NDMsIDEwNzQ4LCAxMDc1NiwgMTA3NjYsIDEwNzcyLCAxMDc3NiwgMTA3NzksIDEwNzgzLCAxMDc4OSwgMTA3OTYsIAotICAgIDEwODAwLCAxMDgwOCwgMTA4MTcsIDEwODI1LCAxMDgzMiwgMTA4MzcsIDEwODQyLCAxMDg0NiwgMTA4NTAsIDEwODU4LCAKLSAgICAxMDg3MywgMTA4ODksIDEwODk1LCAxMDkwMywgMTA5MTIsIDEwOTIwLCAxMDkyNiwgMTA5MzAsIDEwOTM3LCAxMDk0OCwgCi0gICAgMTA5NTIsIDEwOTU1LCAxMDk2MSwgOTY2OSwgMTA5NjYsIDEwOTcyLCAxMDk3OSwgMTA5ODUsIDEwOTkwLCAxMDk5NywgCi0gICAgMTEwMDQsIDExMDExLCAxMTAxOCwgMTEwMjUsIDExMDMyLCAxMTAzOSwgMTEwNDYsIDExMDUxLCAxMDIwNCwgMTEwNTYsIAotICAgIDExMDYyLCAxMTA2OSwgMTEwNzYsIDExMDgxLCAxMTA4OCwgMTEwOTcsIDExMTAxLCAxMTExMywgODYzNCwgMTExMTcsIAotICAgIDExMTIwLCAxMTEyNCwgMTExMjgsIDExMTMyLCAxMTEzNiwgMTExNDIsIDExMTQ4LCAxMTE1MywgMTExNTksIDExMTY0LCAKLSAgICAxMTE2OSwgMTExNzUsIDExMTgwLCAxMTE4NSwgOTQzMSwgMTExOTAsIDExMTk0LCAxMTE5OCwgMTEyMDIsIDExMjA3LCAKLSAgICAxMTIxMiwgMTEyMTcsIDExMjI1LCAxMTIzMSwgMTEyMzYsIDExMjQwLCAxMTI0NCwgMTEyNTEsIDExMjU2LCAxMTI2NCwgCi0gICAgMTEyNzEsIDExMjc2LCAxMTI4MCwgMTEyODMsIDExMjg5LCAxMTI5NiwgMTEzMDAsIDExMzAzLCAxMTMwOCwgMTEzMTIsIAotICAgIDQyNzQsIDExMzE4LCAxMTMyNywgNDYsIDExMzM1LCAxMTM0MSwgMTEzNDYsIDExMzUxLCAxMTM1OSwgMTEzNjYsIDExMzcxLCAKLSAgICA5NDQ2LCAxMTM3NywgMTEzODMsIDExMzg4LCAxMTM5MiwgMTEzOTUsIDExNDEwLCAxMTQyOSwgMTE0NDEsIDExNDU0LCAKLSAgICAxMTQ2NywgMTE0ODAsIDExNDk0LCAxMTUwNywgMTE1MjIsIDExNTI5LCA5Njc0LCAxMTUzNSwgMTE1NDksIDExNTU0LCAKLSAgICAxMTU2MCwgMTE1NjUsIDExNTczLCAxMTU3OCwgODQwMSwgMTE1ODMsIDExNTg2LCAxMTU5NCwgMTE2MDEsIDExNjA2LCAKLSAgICAxMTYxMCwgMTE2MTYsIDI5MTcsIDEwMjc4LCAxMTYyMCwgMTE2MjQsIDExNjMwLCAxMTYzNiwgMTE2NDEsIDExNjQ3LCAKLSAgICAxMTY1MiwgOTY4MywgMTE2NTgsIDExNjY0LCAxMTY2OSwgMTE2NzQsIDExNjgyLCAxMTY4OCwgMTE3MDEsIDExNzA5LCAKLSAgICAxMTcxNiwgMTE3MjIsIDk2ODksIDExNzI4LCAxMTczNiwgMTE3NDQsIDExNzUxLCAxMTc2NCwgMTE3NzcsIDExNzg5LCAKLSAgICAxMTc5OSwgMTE4MDcsIDExODE0LCAxMTgyNiwgMTE4MzMsIDExODQzLCAxMTg1MiwgMTE4NjEsIDExODY5LCAxMTg3NiwgCi0gICAgMTE4ODEsIDExODg3LCA5Njk0LCAxMTg5MiwgMTE4OTgsIDExOTAzLCAxMTkwOCwgOTcwMCwgMTE5MTMsIDExOTE2LCAKLSAgICAxMTkyMywgMTE5MjksIDExOTQyLCA5MTEyLCAxMTk1MywgMTE5NTksIDExOTY4LCAxMTk3NiwgMTE5ODMsIDExOTg5LCAKLSAgICAxMjAwMCwgMTIwMDYsIDEyMDExLCAzODM2LCAxMjAxOSwgMTIwMjQsIDExNDAyLCAxMjAzMCwgMTIwMzcsIDEyMDQyLCAKLSAgICA5NzA1LCAxMjA0OCwgMTIwNTMsIDEyMDYwLCAxMjA2NiwgMTIwNzIsIDEyMDc3LCAxMjA4NSwgMTIwOTMsIDEyMTAwLCAKLSAgICAxMjEwNCwgMTIxMTYsIDEyMTMwLCAxMjE0MCwgMTIxNDUsIDEyMTQ5LCAxMjE2MCwgMTIxNjYsIDEyMTcxLCAxMjE3NiwgCi0gICAgOTcxMCwgMTIxODAsIDk3MTYsIDEyMTg1LCAxMjE4OCwgMTIxOTMsIDEyMjA1LCAxMjIxMiwgMTIyMTcsIDEyMjIxLCAKLSAgICAxMjIyOSwgMTIyMzQsIDEyMjM4LCAxMjI0MywgMTIyNDcsIDEyMjU0LCAxMjI2MCwgOTcyMSwgOTYyOCwgMTIyNjcsIDI5MjIsIAotICAgIDEyLCAxMjI3NCwgMTIyNzksIDEyMjgzLCAxMjI4NywgMTIyOTMsIDEyMzAxLCAxMjMxMSwgMTIzMTYsIDEyMzIxLCAxMjMyOCwgCi0gICAgMTIzMzUsIDEyMzM5LCAxMjM1MCwgMTIzNjAsIDEyMzY5LCAxMjM3OCwgMTIzOTAsIDEyMzk1LCAxMjM5OSwgMTI0MDcsIAotICAgIDEyNDIxLCAxMjQyNSwgMTI0MjgsIDEyNDM2LCAxMjQ0MywgMTI0NTEsIDEyNDU1LCAxMjQ2NiwgMTI0NzAsIDEyNDc3LCAKLSAgICAxMjQ4MiwgMTI0ODYsIDEyNDkyLCAxMjQ5NywgMTI1MDMsIDEyNTA4LCAxMjUxMywgMTI1MTcsIDEyNTIzLCAxMjUyOCwgCi0gICAgMTI1MzksIDEyNTQzLCAxMjU0NiwgMTI1NTIsIDEyNTU3LCAxMjU2MywgMTI1NjksIDEyNTc2LCAxMjU4NywgMTI1OTcsIAotICAgIDEyNjA3LCAxMjYxNiwgMTI2MjMsIDEyNjMyLCAxMjYzNiwgOTczMSwgOTczOCwgOTc0NCwgOTc0OSwgMTI2NDIsIDEyNjQ4LCAKLSAgICAxMjY1NCwgMTI2NTksIDEyNjY1LCA5NzUzLCAxMjY3MSwgMTI2NzQsIDEyNjgxLCAxMjY4NiwgMTI3MDEsIDEyNzE3LCAKLSAgICAxMjczMiwgMTI3NDAsIDEyNzQ2LCAxMjc1MSwgOTUwLCAzNzQsIDEyNzU2LCAxMjc2NCwgMTI3NzEsIDEyNzc3LCAxMjc4MiwgCi0gICAgMTI3ODcsIDk3NTgsIDEyNzg5LCAxMjc5MywgMTI3OTgsIDEyODAyLCAxMjgxMiwgMTI4MTcsIDEyODIxLCAxMjgzMCwgCi0gICAgMTI4MzQsIDEyODM3LCAxMjg0NCwgOTc2NywgMTI4NDksIDEyODUyLCAxMjg2MCwgMTI4NjcsIDEyODc1LCAxMjg3OSwgCi0gICAgMTI4ODMsIDEyODkwLCAxMjg5OSwgMTI5MDYsIDEyOTAyLCAxMjkxMywgMTI5MTcsIDEyOTIzLCAxMjkyNywgMTI5MzEsIAotICAgIDEyOTM1LCAxMjk0MSwgMTI5NTEsIDEyOTU5LCAxMjk2NiwgMTI5NzAsIDEyOTc4LCAxMjk4MiwgMTI5ODksIDEyOTkzLCAKLSAgICAxMjk5OCwgMTMwMDIsIDEzMDA5LCAxMzAxNSwgMTMwMjMsIDEzMDI5LCAxMzAzNCwgMTMwNDQsIDEzMDQ5LCAxMzA1NCwgCi0gICAgMTMwNTgsIDEzMDYyLCAxMzA3MCwgNDEyNCwgMTMwNzgsIDEzMDgzLCA5NzcyLCAxMzA4NywgMTMwOTEsIDEzMDk0LCAKLSAgICAxMzEwMiwgMTMxMDksIDEzMTEzLCA2Mjk4LCAxMzExNywgMTMxMjIsIDEzMTI3LCAxMzEzMSwgMTMxNDIsIDEzMTUyLCAKLSAgICAxMzE1NywgMTMxNjMsIDEzMTY4LCAxMzE3MiwgMTMxNzUsIDEzMTgzLCAxMzE4OCwgMTMxOTMsIDEzMjAwLCAxMzIwNSwgCi0gICAgOTc3NywgMTMyMTAsIDEzMjE0LCAxMzIyMSwgMTczNywgNjQ1NiwgMTMyMjYsIDEzMjMxLCAxMzIzNiwgMTMyNDEsIDEzMjQ3LCAKLSAgICAxMzI1MiwgMTMyNTgsIDEzMjYzLCAxMzI2OCwgMTMyNzMsIDEzMjc4LCAxMzI4MywgMTMyODgsIDEzMjkzLCAxMzI5OCwgCi0gICAgMTMzMDMsIDEzMzA4LCAxMzMxMywgMTMzMTgsIDEzMzIzLCAxMzMyOCwgMTMzMzMsIDEzMzM4LCAxMzM0NCwgMTMzNDksIAotICAgIDEzMzU0LCAxMzM1OSwgMTMzNjQsIDEzMzY5LCAxMzM3NSwgMTMzODAsIDEzMzg1LCAxMzM5MSwgMTMzOTYsIDEzNDAyLCAKLSAgICAxMzQwNywgMTM0MTMsIDEzNDE4LCAxMzQyMywgMTM0MjgsIDEzNDMzLCAxMzQzOSwgMTM0NDQsIDEzNDQ5LCAxMzQ1NCwgCi0gICAgOTA5LCAxMTIsIDEzNDYyLCAxMzQ2NiwgMTM0NzEsIDEzNDc2LCAxMzQ4MCwgMTM0ODQsIDEzNDg4LCAxMzQ5MywgMTM0OTcsIAotICAgIDEzNTAyLCAxMzUwNiwgMTM1MDksIDEzNTEzLCAxMzUxNywgMTM1MjMsIDEzNTI4LCAxMzUzOCwgMTM1NDQsIDEzNTUyLCAKLSAgICAxMzU1OCwgMTM1NjIsIDEzNTY2LCAxMzU3MywgMTM1ODEsIDEzNTkwLCAxMzYwMSwgMTM2MTEsIDEzNjE4LCAxMzYyNSwgCi0gICAgMTM2MjksIDEzNjM4LCAxMzY0NywgMTM2NTUsIDEzNjY0LCAxMzY3MywgMTM2ODIsIDEzNjkxLCAxMzcwMSwgMTM3MTEsIAotICAgIDEzNzIxLCAxMzczMSwgMTM3NDEsIDEzNzUwLCAxMzc2MCwgMTM3NzAsIDEzNzgwLCAxMzc5MCwgMTM4MDAsIDEzODEwLCAKLSAgICAxMzgyMCwgMTM4MjksIDEzODM5LCAxMzg0OSwgMTM4NTksIDEzODY5LCAxMzg3OSwgMTM4ODksIDEzODk4LCAxMzkwOCwgCi0gICAgMTM5MTgsIDEzOTI4LCAxMzkzOCwgMTM5NDgsIDEzOTU4LCAxMzk2OCwgMTM5NzgsIDEzOTg4LCAxMzk5NywgMTQwMDcsIAotICAgIDE0MDE3LCAxNDAyNywgMTQwMzcsIDE0MDQ3LCAxNDA1NywgMTQwNjcsIDE0MDc3LCAxNDA4NywgMTQwOTcsIDE0MTA2LCAKLSAgICAxMjM3LCAxNDExMiwgMTQxMTUsIDE0MTE5LCAxNDEyNCwgMTQxMzEsIDE0MTM3LCAxNDE0MiwgMTQxNDYsIDE0MTUxLCAKLSAgICAxNDE2MCwgMTQxNjgsIDE0MTczLCAxNDE3NywgMTQxODEsIDE0MTg3LCAxNDE5MiwgMTQxOTgsIDk3ODYsIDE0MjAzLCAKLSAgICAxNDIwOCwgMTQyMTcsIDk3OTYsIDE0MjIyLCAxNDIyNSwgMTQyMzEsIDE0MjM5LCA5ODAxLCAxNDI0NiwgMTQyNTAsIAotICAgIDE0MjU0LCAxNDI1OSwgMTQyNjMsIDE0MjczLCAxNDI3OSwgMTQyODUsIDE0MjkwLCAxNDI5OSwgMTQzMDcsIDE0MzE0LCAKLSAgICAxNDMyMSwgMTQzMjYsIDE0MzMzLCAxNDMzOCwgMTQzNDIsIDE0MzQ1LCAxNDM1NiwgMTQzNjYsIDE0Mzc1LCAxNDM4MywgCi0gICAgMTQzOTQsIDE0NDA2LCAxNDQxNiwgMTQ0MjEsIDE0NDI1LCAxNDQzMCwgMTQ0MzUsIDE0NDM5LCAxNDQ0NSwgMTQ0NTMsIAotICAgIDE0NDYwLCAxNDQ3MSwgMTQ0NzYsIDE0NDg2LCAxNDQ5NSwgMTQ0OTksIDE0NTAyLCAxNDUwOSwgMTQ1MTksIDE0NTI4LCAKLSAgICAxNDUzNSwgMTQ1MzksIDE0NTQ2LCAxNDU1MiwgMTQ1NTcsIDE0NTYyLCAxNDU2NiwgMTQ1NzUsIDE0NTgwLCAxNDU4NCwgCi0gICAgMTQ1OTAsIDE0NTk0LCAxNDU5OSwgMTQ2MDMsIDE0NjEwLCAxNDYxNywgMTQ2MjEsIDE0NjMwLCAxNDYzOCwgMTQ2NDYsIAotICAgIDE0NjUzLCAxNDY2MSwgMTQ2NzMsIDE0Njg0LCAxNDY5NCwgMTQ3MDEsIDE0NzA3LCAxNDcxNiwgMTQ3MjcsIDE0NzM2LCAKLSAgICAxNDc0OCwgMTQ3NjAsIDE0NzcyLCAxNDc4MiwgMTQ3OTEsIDE0ODAwLCAxNDgwOCwgMTQ4MTUsIDE0ODI0LCAxNDgzMiwgCi0gICAgMTQ4MzYsIDE0ODQxLCAxNDg0NywgMTQ4NTMsIDE0ODU4LCAxNDg2MywgODA5MywgMTQ4NjcsIDE0ODY5LCAxNDg3MywgCi0gICAgMTQ4NzgsIDE0ODg0LCAxNDg5MCwgMTQ4OTksIDE0OTAzLCAxNDkwOSwgMTQ5MTcsIDE0OTI0LCAxNDkzMywgMTQ5NDIsIAotICAgIDE0OTUxLCAxNDk2MCwgMTQ5NjksIDE0OTc4LCAxNDk4NywgMTQ5OTYsIDE1MDA2LCAxNTAxNiwgMTUwMjUsIDE1MDMxLCAKLSAgICAxNTAzOCwgMTUwNDUsIDE1MDUxLCAxNTA2NSwgMTUwNzEsIDE1MDc4LCAxNTA4NiwgMTUwOTUsIDE1MTAzLCAxNTEwOSwgCi0gICAgMTUxMTgsIDE1MTI3LCAxNTEzOCwgMTUxNDgsIDE1MTU2LCAxNTE2MywgMTUxNzEsIDE1MTgwLCAxNTE5MywgMTUyMDIsIAotICAgIDE1MjEwLCAxNTIxNywgMTUyMzAsIDE1MjM2LCAxNTI0MiwgMTUyNTIsIDE1MjYxLCAxNTI3MCwgMTUyNzUsIDE1Mjc5LCAKLSAgICAxNTI4NSwgMTUyOTEsIDE1Mjk2LCAxNTMwMywgMTUzMTAsIDk0NDUsIDE1MzE1LCAxNTMyMCwgMTUzMjcsIDE1MzM1LCAKLSAgICAxNTM0MCwgMTUzNDcsIDE1MzUyLCAxNTM2NCwgMTM1MTksIDE1MzY5LCAxNTM3NywgMTUzODMsIDE1Mzg4LCAxNTM5NiwgCi0gICAgMTU0MDQsIDE1NDExLCAxNTQxOSwgMTU0MjUsIDE1NDMzLCAxNTQ0MSwgMTU0NDcsIDE1NDUyLCAxNTQ1OCwgMTU0NjUsIAotICAgIDE1NDcxLCAxNTQ3NiwgMTU0ODAsIDE1NDkxLCAxNTQ5OSwgMTU1MDUsIDE1NTEwLCAxNTUxNywgMTU1MjYsIDE1NTMyLCAKLSAgICAxNTUzNywgMTU1NDUsIDE1NTU0LCAxNTU2OCwgNDA2OCwgMTU1NzIsIDE1NTc3LCAxNTU4MiwgMTU1ODgsIDE1NTkzLCAKLSAgICAxNTU5OCwgMTU2MDIsIDE1NjA3LCAxNTYxMiwgMTU2MTcsIDgwOTIsIDE1NjIyLCAxNTYyNywgMTU2MzIsIDE1NjM3LCAKLSAgICAxNTY0MiwgMTU2NDYsIDE1NjUxLCAxNTY1NiwgMTU2NjEsIDE1NjY2LCAxNTY3MiwgMTU2NzgsIDE1NjgzLCAxNTY4NywgCi0gICAgMTU2OTMsIDE1Njk4LCAxNTcwMywgMTU3MDgsIDk4MDUsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAxNTczMywgCi0gICAgMTU3NTAsIDE1NzY4LCAxNTc4MCwgMTU3OTMsIDE1ODEwLCAxNTgyNiwgMTU4NDMsIDE1ODUzLCAxNTg3MiwgMTU4ODMsIAotICAgIDE1ODk0LCAxNTkwNSwgMTU5MTYsIDE1OTI4LCAxNTkzOSwgMTU5NTAsIDE1OTY3LCAxNTk3OCwgMTU5ODksIDE1OTk0LCAKLSAgICA5ODEwLCAxNTk5OSwgMTYwMDMsIDI0MjAsIDE2MDA3LCAxNjAxMCwgMTYwMTYsIDE2MDI0LCAxNjAzMiwgMTYwNDEsIAotICAgIDE2MDQ4LCAxNjA1MywgMTYwNjEsIDE2MDY5LCAxNjA3NiwgMTYwODAsIDE2MDg1LCAxNjA5MSwgMTYwOTgsIDE2MTA2LCAKLSAgICAxNjExMywgMTYxMjUsIDE2MTMyLCAxNjEzOCwgMTYxNDYsIDE2MTUxLCAxNjE1NywgMTI2OTUsIDE2MTYzLCAxNjE3MiwgCi0gICAgMTYxNzgsIDE2MTgzLCAxNjE5MSwgMTYyMDAsIDE2MjA4LCAxNjIxNSwgMTYyMjEsIDE2MjI5LCAxNjIzNiwgMTYyNDIsIAotICAgIDE2MjQ4LCAxNjI1NSwgMTYyNjIsIDE2MjY4LCAxNjI3NCwgMTYyODMsIDE2MjkxLCAxNjMwMSwgMTYzMDgsIDE2MzE0LCAKLSAgICAxNjMyMiwgMTYzMjgsIDE2MzM2LCAxNjM0NCwgMTYzNTEsIDE2MzY0LCAxNjM3MSwgMTYzODAsIDE2Mzg5LCAxNjM5OCwgCi0gICAgMTY0MDYsIDE2NDE2LCAxNjQyMywgMTY0MjgsIDM3MjcsIDE2NDM1LCAxNjQ0MCwgMTM1MywgMTY0NDQsIDE1NjIzLCAKLSAgICAxNjQ0OCwgMTY0NTQsIDE2NDU4LCAxNjQ2NiwgMTY0NzgsIDE2NDgzLCAxNjQ5MCwgMTY0OTYsIDE2NTAxLCAxNjUwOCwgCi0gICAgMTU2MjgsIDE2NTEyLCAxNjUxNiwgMTY1MjAsIDE1NjMzLCAxNjUyNCwgMTU2MzgsIDE2NTI4LCAxNjUzNSwgMTY1NDAsIAotICAgIDE2NTQ0LCAxNjU1MSwgMTY1NTUsIDE2NTYzLCAxNjU3MCwgMTY1NzUsIDE2NTc5LCAxNjU4NiwgMTY2MDMsIDE2NjEyLCAKLSAgICAxNjYxNiwgMTY2MTksIDE2NjI3LCAxNjYzMywgMTY2MzgsIDM4MDUsIDE2NjQyLCAxNjY0NCwgMTY2NTIsIDE2NjU5LCAKLSAgICAxNjY2OSwgMTY2ODEsIDE2Njg2LCAxNjY5MCwgMTY2OTYsIDE2NzAxLCAxNjcwNSwgMTY3MTEsIDE2NzE2LCAxNjcyMiwgCi0gICAgMTY3MjUsIDE2NzMyLCAxNjc0MCwgMTY3NDcsIDE2NzUzLCAxNjc1OCwgMTY3NjQsIDE2NzY5LCAxNjc3NiwgMTY3ODIsIAotICAgIDE2Nzg3LCAxNjc5NCwgMTY3OTksIDE2ODAzLCAxNjgwOSwgMTY4MTMsIDE2ODIwLCAxNjgyNiwgMTY4MzEsIDE2ODM3LCAKLSAgICAxNjg0NSwgMTY4NTMsIDE2ODYwLCAxNjg2NiwgMTY4NzEsIDE2ODc3LCAxNjg4MywgMTY4OTEsIDE2ODk5LCAxNjkwNSwgCi0gICAgMTY5MTEsIDE2OTE2LCAxNjkyMywgMTY5MjgsIDE2OTMyLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjEsIAotICAgIDE2OTY0LCAxNjk3MCwgMTY5NzYsIDE2OTc5LCAxNjk4MywgMTY5ODcsIDE2OTk5LCAxNzAwNSwgMTcwMTAsIDE3MDE3LCAKLSAgICAxNzAyMywgMTcwMjksIDE3MDQwLCAxNzA1MCwgMTcwNTksIDE3MDY3LCAxNzA3NCwgMTcwODUsIDE3MDk1LCAxNzEwNSwgCi0gICAgMTcxMTMsIDE3MTE2LCAxNTY1MiwgMTcxMjEsIDE3MTI2LCAxNTY1NywgMTU3OTgsIDE3MTM0LCAxNzE0NywgMTcxNjIsIAotICAgIDE3MTczLCAxNTgxNSwgMTcxOTEsIDE3MjA0LCAxNzIxNywgMTcyMjgsIDExNDE3LCAxNzIzOSwgMTcyNTIsIDE3MjcxLCAKLSAgICAxNzI4MiwgMTcyOTMsIDE3MzA0LCAyNjg4LCAxNzMxNywgMTczMjEsIDE3MzI5LCAxNzM0MCwgMTczNDgsIDE3MzYzLCAKLSAgICAxNzM3OCwgMTczODksIDE3Mzk2LCAxNzQwMiwgMTc0MTAsIDE3NDE0LCAxNzQyMCwgMTc0MjMsIDE3NDM2LCAxNzQ0OCwgCi0gICAgMTc0NTgsIDE3NDY2LCAxNzQ3MywgMTc0ODEsIDE3NDkxLCAxNzQ5NiwgMTc1MDMsIDE3NTA4LCAxNzUxNSwgMTc1MjYsIAotICAgIDE3NTM2LCAxNzU0MiwgMTc1NDcsIDE3NTUyLCAxNTY2MiwgMTc1NTYsIDE3NTYyLCAxNzU2OCwgMTc1NzMsIDE3NTc4LCAKLSAgICAxNzU4MywgMTc1ODcsIDE1NjY3LCAxNTY3MywgMTc1OTEsIDE1Njc5LCAxNzU5NiwgMTc2MDQsIDE3NjA5LCAxNzYxMywgCi0gICAgMTc2MjEsIDE3NjMwLCAxNzYzNywgMTc2NDEsIDk2NDksIDE3NjQ1LCAxNzY0NywgMTc2NTIsIDE3NjU3LCAxNzY2MywgCi0gICAgMTc2NjgsIDE3NjczLCAxNzY3OCwgMTc2ODMsIDE3Njg3LCAxNzY5MywgMTc2OTksIDE3NzA0LCAxNzcxMCwgMTc3MTUsIAotICAgIDE3NzIwLCAxNzcyNCwgMTc3MzAsIDE3NzM1LCAxNzc0MCwgMTc3NDUsIDE3NzU3LCAxNzc2MiwgMTc3NjgsIDE3NzczLCAKLSAgICAxNzc3OCwgMTc3ODQsIDE3NzkwLCAxNzc5NSwgMTc4MDAsIDE3ODA1LCAxNzgxMiwgMTc4MTgsIDE3ODI5LCAxNzgzNiwgCi0gICAgMTc4NDEsIDE3ODQ1LCAxNzg0OSwgMTc4NTIsIDE3ODYwLCAxNzg2NSwgMTc4NzIsIDE3ODc5LCAxNzg4NSwgMTc4OTAsIAotICAgIDE3ODk1LCAxNzkwMCwgMTc5MDcsIDE3OTE3LCAxNzkyNSwgMTc5MzAsIDE3OTM3LCAxNzk0MywgMTc5NTIsIDE3OTYyLCAKLSAgICAxNzk3MiwgMTc5ODYsIDE4MDAwLCAxODAxNCwgMTgwMjgsIDE4MDQzLCAxODA1OCwgMTgwNzUsIDE4MDkzLCAxODEwNiwgCi0gICAgMTgxMTIsIDE4MTE3LCAxODEyMiwgMTgxMjYsIDE4MTM0LCAxODEzOSwgMTgxNDcsIDE4MTUzLCAxODE1OSwgMTgxNjQsIAotICAgIDE4MTY5LCAxODE3MywgMTgxNzgsIDE4MTgyLCAxODE4NywgMTgxOTEsIDE4MjAyLCAxODIwOCwgMTgyMTMsIDE4MjE4LCAKLSAgICAxODIyNSwgMTgyMzAsIDE4MjM0LCAzNjkwLCAxODIzOSwgMTgyNDUsIDE4MjUyLCAxNTY4OCwgMTgyNTgsIDE4MjYyLCAKLSAgICAxODI2OCwgMTgyNzMsIDE4Mjc4LCAxODI4MiwgMTgyODgsIDE4MjkzLCAxODI5OCwgMTgzMDUsIDE4MzEwLCAxNDI3NSwgCi0gICAgMTgzMTQsIDE4MzE5LCAxODMyMywgMTgzMjgsIDE4MzM0LCAxODM0MCwgMTgzNDcsIDE4MzU3LCAxODM2NSwgMTgzNzIsIAotICAgIDE4Mzc3LCAxODM4MSwgMTgzOTAsIDE4Mzk4LCAxODQwNSwgMTg0MTIsIDE4NDE4LCAxODQyMywgMTg0MjksIDE4NDM0LCAKLSAgICAxODQzOSwgMTg0NDUsIDE4NDUwLCAxODQ1NiwgMTg0NjEsIDE4NDY3LCAxODQ3MywgMTg0ODAsIDE4NDg2LCAxODQ5MSwgCi0gICAgMTg0OTYsIDk4NzUsIDE4NTA1LCAxODUwOCwgMTg1MTYsIDE4NTIyLCAxODUyNywgMTg1MzIsIDE4NTQyLCAxODU0OSwgCi0gICAgMTg1NTUsIDE4NTYwLCAxODU2NSwgMTg1NzEsIDE4NTc2LCAxODU4MiwgMTg1ODcsIDE4NTkzLCAxODU5OSwgMTg2MDQsIAotICAgIDE4NjEyLCAxODYxOSwgMTg2MjQsIDE4NjI5LCAxODYzNSwgMTg2NDAsIDE4NjQ0LCAxODY1MywgMTg2NjQsIDE4NjcxLCAKLSAgICAxODY3OSwgMTg2ODYsIDE4NjkxLCAxODY5NiwgMTg3MDIsIDE4NzA3LCAxODcxNSwgMTg3MjEsIDE4NzI3LCAxODczNCwgCi0gICAgMTg3NDAsIDE4NzQ1LCAxODc0OSwgMTg3NTUsIDE4NzYwLCAxODc2NSwgMTg3NjksIDE4Nzc0LCAxNDI2LCA4MTE3LCAyOTM2LCAKLSAgICAxODc3OCwgMTg3ODIsIDE4Nzg2LCAxODc5MCwgMTg3OTQsIDE4Nzk4LCAxODgwMSwgMTg4MDYsIDE4ODEzLCAxODgyMSwgCi0gICAgMTU2OTksIDE4ODI4LCAxODgzOCwgMTg4NDYsIDE4ODUzLCAxODg2MSwgMTg4NzEsIDE4ODgwLCA5MjIwLCAxODg5MywgCi0gICAgMTg4OTgsIDE4OTAzLCAxODkxMSwgMTg5MTgsIDE0MzcxLCAxNDM4MCwgMTg5MjUsIDE4OTM1LCAxODk1MCwgMTg5NTYsIAotICAgIDE4OTYzLCAxODk3MCwgMTg5NzYsIDE4OTgyLCAxODk5MywgMTkwMDEsIDE5MDA5LCAxOTAxOSwgMTkwMjksIDE1NzA0LCAKLSAgICAxOTAzOCwgMTkwNDQsIDE5MDUwLCAxOTA1OCwgMTkwNjYsIDE5MDcxLCAxOTA4MCwgMTkwODgsIDE5MTAwLCAxOTExMCwgCi0gICAgMTkxMjAsIDE5MTMwLCAxOTEzOSwgMTkxNTEsIDE5MTYxLCAxOTE3MSwgMTkxODIsIDE5MTg3LCAxOTE5OSwgMTkyMTEsIAotICAgIDE5MjIzLCAxOTIzNSwgMTkyNDcsIDE5MjU5LCAxOTI3MSwgMTkyODMsIDE5Mjk1LCAxOTMwNywgMTkzMTgsIDE5MzMwLCAKLSAgICAxOTM0MiwgMTkzNTQsIDE5MzY2LCAxOTM3OCwgMTkzOTAsIDE5NDAyLCAxOTQxNCwgMTk0MjYsIDE5NDM4LCAxOTQ0OSwgCi0gICAgMTk0NjEsIDE5NDczLCAxOTQ4NSwgMTk0OTcsIDE5NTA5LCAxOTUyMSwgMTk1MzMsIDE5NTQ1LCAxOTU1NywgMTk1NjksIAotICAgIDE5NTgwLCAxOTU5MiwgMTk2MDQsIDE5NjE2LCAxOTYyOCwgMTk2NDAsIDE5NjUyLCAxOTY2NCwgMTk2NzYsIDE5Njg4LCAKLSAgICAxOTcwMCwgMTk3MTEsIDE5NzIzLCAxOTczNSwgMTk3NDcsIDE5NzU5LCAxOTc3MSwgMTk3ODMsIDE5Nzk1LCAxOTgwNywgCi0gICAgMTk4MTksIDE5ODMxLCAxOTg0MiwgMTk4NTQsIDE5ODY2LCAxOTg3OCwgMTk4OTAsIDE5OTAyLCAxOTkxNCwgMTk5MjYsIAotICAgIDE5OTM4LCAxOTk1MCwgMTk5NjIsIDE5OTczLCAxOTk4NSwgMTk5OTcsIDIwMDA5LCAyMDAyMSwgMjAwMzMsIDIwMDQ1LCAKLSAgICAyMDA1NywgMjAwNjksIDIwMDgxLCAyMDA5MywgMjAxMDQsIDIwMTE2LCAyMDEyOCwgMjAxNDAsIDIwMTUyLCAyMDE2NSwgCi0gICAgMjAxNzgsIDIwMTkxLCAyMDIwNCwgMjAyMTcsIDIwMjMwLCAyMDI0MywgMjAyNTUsIDIwMjY4LCAyMDI4MSwgMjAyOTQsIAotICAgIDIwMzA3LCAyMDMyMCwgMjAzMzMsIDIwMzQ2LCAyMDM1OSwgMjAzNzIsIDIwMzg1LCAyMDM5NywgMjA0MTAsIDIwNDIzLCAKLSAgICAyMDQzNiwgMjA0NDksIDIwNDYyLCAyMDQ3NSwgMjA0ODgsIDIwNTAxLCAyMDUxNCwgMjA1MjcsIDIwNTM5LCAyMDU1MiwgCi0gICAgMjA1NjUsIDIwNTc4LCAyMDU5MSwgMjA2MDQsIDIwNjE3LCAyMDYzMCwgMjA2NDMsIDIwNjU2LCAyMDY2OSwgMjA2ODEsIAotICAgIDIwNjk0LCAyMDcwNywgMjA3MjAsIDIwNzMzLCAyMDc0NiwgMjA3NTksIDIwNzcyLCAyMDc4NSwgMjA3OTgsIDIwODExLCAKLSAgICAyMDgyMywgMjA4MzYsIDIwODQ5LCAyMDg2MiwgMjA4NzUsIDIwODg4LCAyMDkwMSwgMjA5MTQsIDIwOTI3LCAyMDk0MCwgCi0gICAgMjA5NTMsIDIwOTY1LCAyMDk3NiwgMjA5ODksIDIxMDAyLCAyMTAxNSwgMjEwMjgsIDIxMDQxLCAyMTA1NCwgMjEwNjcsIAotICAgIDIxMDgwLCAyMTA5MywgMjExMDYsIDIxMTE4LCAyMTEzMSwgMjExNDQsIDIxMTU3LCAyMTE3MCwgMjExODMsIDIxMTk2LCAKLSAgICAyMTIwOSwgMjEyMjIsIDIxMjM1LCAyMTI0OCwgMjEyNjAsIDIxMjczLCAyMTI4NiwgMjEyOTksIDIxMzEyLCAyMTMyNSwgCi0gICAgMjEzMzgsIDIxMzUxLCAyMTM2NCwgMjEzNzcsIDIxMzkwLCAyMTQwMiwgMjE0MTUsIDIxNDI4LCAyMTQ0MSwgMjE0NTQsIAotICAgIDIxNDY3LCAyMTQ4MCwgMjE0OTMsIDIxNTA2LCAyMTUxOSwgMjE1MzIsIDIxNTQ0LCAyMTU1NywgMjE1NzAsIDIxNTgzLCAKLSAgICAyMTU5NiwgMjE2MDksIDIxNjIyLCAyMTYzNSwgMjE2NDgsIDIxNjYxLCAyMTY3NCwgMjE2ODYsIDIxNjk5LCAyMTcxMiwgCi0gICAgMjE3MjUsIDIxNzM4LCAyMTc1MSwgMjE3NjQsIDIxNzc3LCAyMTc5MCwgMjE4MDMsIDIxODE2LCAyMTgyOCwgMjE4NDEsIAotICAgIDIxODU0LCAyMTg2NywgMjE4ODAsIDIxODkzLCAyMTkwNiwgMjE5MTksIDIxOTMyLCAyMTk0NSwgMjE5NTgsIDIxOTcwLCAKLSAgICAyMTk4MywgMjE5OTYsIDIyMDA5LCAyMjAyMiwgMjIwMzUsIDIyMDQ4LCAyMjA2MSwgMjIwNzQsIDIyMDg3LCAyMjEwMCwgCi0gICAgMjIxMTIsIDIyMTI1LCAyMjEzOCwgMjIxNTEsIDIyMTY0LCAyMjE3NywgMjIxOTAsIDIyMjAzLCAyMjIxNiwgMjIyMjksIAotICAgIDIyMjQyLCAyMjI1NCwgMjIyNjcsIDIyMjgwLCAyMjI5MywgMjIzMDYsIDIyMzE5LCAyMjMzMiwgMjIzNDUsIDIyMzU4LCAKLSAgICAyMjM3MSwgMjIzODQsIDIyMzk2LCAyMjQwNywgMjI0MTYsIDIyNDI0LCAyMjQzMiwgMjI0MzksIDIyNDQ1LCAyMjQ0OSwgCi0gICAgMjI0NTUsIDIyNDYxLCAyMjQ2OSwgMjI0NzQsIDIyNDgwLCAyMjQ4NSwgMjI0ODksIDIyNDk4LCA5NjU0LCAyMjUwOSwgCi0gICAgMjI1MTYsIDIyNTI0LCAyMjUzMSwgMjI1MzgsIDExOTM2LCAyMjU0NSwgMjI1NTIsIDIyNTYxLCAyMjU2NiwgMjI1NzEsIAotICAgIDgxNDUsIDIyNTc4LCAyMjU4MywgMjI1ODYsIDIyNTkxLCAyMjU5OSwgMjI2MDYsIDIyNjEzLCAyMjYyMCwgMjI2MjYsIAotICAgIDIyNjM1LCAyMjY0NCwgMjI2NTMsIDIyNjU5LCAyMjY2OCwgMjI2NzIsIDIyNjc4LCAyMjY4MywgMjI2OTMsIDIyNzAwLCAKLSAgICAyMjcwNiwgMjI3MTQsIDIyNzIwLCAyMjcyNywgMjI3MzcsIDIyNzQ2LCAyMjc1MCwgMjI3NTcsIDIyNzYxLCAyMjc2NiwgCi0gICAgMjI3NzIsIDIyNzgwLCAyMjc4NCwgMjI3OTQsIDE1NzE0LCAyMjgwMywgMjI4MDksIDIyODEzLCAyMjgyMiwgMjI4MzIsIAotICAgIDE1NzE5LCAyMjgzOCwgMjI4NDUsIDIyODU2LCAyMjg2NCwgMjI4NzQsIDIyODgzLCAyMjg5MSwgOTQxMCwgMjI4OTksIAotICAgIDIyOTA0LCAyMjkxMCwgMjI5MTUsIDIyOTE5LCAyMjkyMywgMjI5MjcsIDEwMzc5LCAyMjkzMiwgMjI5NDAsIDIyOTQ3LCAKLSAgICAyMjk1NiwgMjI5NjMsIDIyOTcwLCAyMjk3NiwgMTE4NTYsIDIyOTgzLCAyMjk4OSwgMjI5OTMsIDIyOTk5LCAyMzAwNiwgCi0gICAgMjMwMTIsIDIzMDIwLCAyMzAyNiwgMjMwMzMsIDIzMDM5LCAyMzA0NSwgMjMwNTQsIDIzMDU4LCAyMzA2NiwgMjMwNzUsIAotICAgIDIzMDgyLCAyMzA4NywgMjMwOTEsIDIzMTAyLCAyMzEwNywgMjMxMTIsIDIzMTE3LCAyMzEzMCwgODM0OSwgMjMxMzQsIAotICAgIDIzMTQwLCAyMzE0NSwgMjMxNTMsIDIzMTU3LCAyMzE2NCwgMjMxNzMsIDIzMTc4LCAxNTk5MCwgMjMxODYsIDIzMTkwLCAKLSAgICAyMzIwMiwgMjMyMDcsIDIzMjExLCAyMzIxNCwgMjMyMjAsIDIzMjI2LCAyMzIzMiwgMjMyMzcsIDIzMjQxLCAyMzI0NCwgCi0gICAgMjMyNTUsIDIzMjYwLCA5OTI2LCAyMzI2NywgMjMyNzIsIDEyNDMsIDk5MzEsIDIzMjc3LCAyMzI4MiwgMjMyODcsIDIzMjkyLCAKLSAgICAyMzI5NywgMjMzMDIsIDIzMzA3LCAyMzMxMiwgMjMzMTcsIDIzMzIyLCAyMzMyNywgMjMzMzIsIDIzMzM4LCAyMzM0MywgCi0gICAgMjMzNDgsIDIzMzUzLCAyMzM1OCwgMjMzNjMsIDIzMzY4LCAyMzM3MywgMjMzNzgsIDIzMzgzLCAyMzM4OSwgMjMzOTUsIAotICAgIDIzNDAwLCAyMzQwNSwgMjM0MTAsIDIzNDE1LCAyMzQyMCwgMjM0MjUsIDIzNDMwLCAyMzQzNSwgMjM0NDAsIDIzNDQ2LCAKLSAgICAyMzQ1MSwgMjM0NTYsIDIzNDYxLCAyMzQ2NywgMjM0NzMsIDIzNDc4LCAyMzQ4MywgMjM0ODgsIDIzNDkzLCAyMzQ5OCwgCi0gICAgMjM1MDMsIDIzNTA4LCAyMzUxMywgMjM1MTksIDIzNTI0LCAyMzUyOSwgMjM1MzQsIDIzNTM5LCAyMzU0NSwgMjM1NTAsIAotICAgIDIzNTU1LCAyMzU1OSwgMTM0LCAyMzU2NywgMjM1NzEsIDIzNTc1LCAyMzU3OSwgMjM1ODQsIDIzNTg4LCAxNDI4MSwgMjM0NiwgCi0gICAgMjM1OTIsIDIzNTk3LCAyMzYwMSwgMjM2MDYsIDIzNjEwLCAyMzYxNSwgMjM2MTksIDIzNjI1LCAyMzYzMCwgMjM2MzQsIAotICAgIDIzNjM4LCAyMzY0NiwgMjM2NTAsIDIzNjU0LCAyMzY1OSwgMjM2NjQsIDIzNjY4LCAyMzY3NCwgMjM2NzksIDIzNjgzLCAKLSAgICAyMzY4OCwgMjM2OTMsIDIzNjk3LCAyMzcwNCwgMjM3MTEsIDIzNzE4LCAyMzcyMiwgMjM3MjYsIDIzNzMxLCAyMzczNSwgCi0gICAgMjM3MzgsIDIzNzQ0LCAyMzc1NywgMjM3NjIsIDIzNzY4LCAyMzc3NywgMjM3ODIsIDEwMTUxLCAyMzc4NywgMjM3OTYsIAotICAgIDIzODAxLCAyMzgwNCwgMjc1MSwgMjc1NiwgMjM4MDgsIDIzODE0LCAyMzgyMCwgNzUzOCwgMjM4MjUsIDIzODMwLCAyMzgzNSwgCi0gICAgMjM4NDEsIDIzODQ2LCAxNTEzNCwgMjM4NTEsIDIzODU2LCAyMzg2MSwgMjM4NjYsIDIzODcyLCAyMzg3NywgMjM4ODIsIAotICAgIDIzODg4LCAyMzg5MywgMjM4OTcsIDIzOTAyLCAyMzkwNywgMjM5MTIsIDIzOTE3LCAyMzkyMiwgMjM5MjYsIDIzOTMxLCAKLSAgICAyMzkzNSwgMjM5NDAsIDIzOTQ1LCAyMzk1MCwgMjM5NTUsIDIzOTU5LCAyMzk2NCwgMjM5NjgsIDIzOTczLCAyMzk3OCwgCi0gICAgMjM5ODMsIDIzODk4LCAyOTQ1LCAyMzkwMywgMjM5ODgsIDIzOTk2LCAyNDAwMywgMTA0NzMsIDI0MDE1LCAyNDAyMywgCi0gICAgMjQwMzMsIDI0MDUxLCAyNDA3MCwgMjQwNzksIDI0MDg3LCAyMzkwOCwgMjQwOTQsIDI0MDk5LCAyNDEwNywgMjM5MTMsIAotICAgIDI0MTEyLCAyNDExNywgMjQxMjUsIDI0MTMwLCAyMzkxOCwgMjQxMzUsIDI0MTQzLCAyNDE0OCwgMjQxNTIsIDI0MTU5LCAKLSAgICAyNDE2NSwgMjQxNzQsIDI0MTgyLCAyNDE4NiwgMjQxODksIDI0MTk2LCAyNDIwMCwgMjQyMDQsIDI0MjA5LCAyNDIxNSwgCi0gICAgMjQyMjIsIDI0MjI3LCA5NDM3LCAxNzQyLCAxNzQ3LCAyNDIzMSwgMjQyMzcsIDI0MjQzLCAyNDI0OCwgMjQyNTIsIDI0MjU2LCAKLSAgICAyNDI2MCwgMjQyNjQsIDI0MjY4LCAyNDI3MiwgMjQyNzYsIDI0MjgwLCAyNDI4MywgMjQyODksIDI0Mjk2LCAyNDMwNCwgCi0gICAgMjQzMTAsIDI0MzE2LCAyNDMyMSwgMjQzMjYsIDI0MzMyLCAyNDMzNiwgMjQzNDEsIDE1MDQwLCAxNTA0NywgMjQzNDgsIAotICAgIDI0MzYwLCAyNDM2MywgMjQzNzAsIDI0Mzc0LCAxNzg4MSwgMjQzODEsIDI0Mzg5LCAyNDQwMCwgMjQ0MDksIDI0NDIyLCAKLSAgICAyNDQzMiwgMjQ0NDYsIDI0NDU4LCAyNDQ3MiwgMjQ0ODUsIDI0NDk3LCAyNDUwNywgMjQ1MTksIDI0NTI1LCAyNDU0MCwgCi0gICAgMjQ1NjQsIDI0NTgyLCAyNDYwMSwgMjQ2MTQsIDI0NjI4LCAyNDY0NiwgMjQ2NjIsIDI0Njc5LCAyNDY5NywgMjQ3MDgsIAotICAgIDI0NzI3LCAyNDc0NCwgMjQ3NjQsIDI0NzgyLCAyNDc5NCwgMjQ4MDgsIDI0ODIyLCAyNDgzNCwgMjQ4NTEsIDI0ODcwLCAKLSAgICAyNDg4OCwgMjQ5MDAsIDI0OTE4LCAyNDkzNywgMTU4NTgsIDI0OTUwLCAyNDk3MCwgMjQ5ODIsIDExNDQ4LCAyNDk5NCwgCi0gICAgMjQ5OTksIDI1MDA0LCAyNTAwOSwgMjUwMTUsIDI1MDIwLCAyNTAyNCwgMjUwMzEsIDI1MDM3LCAyNDM3LCAyNTA0MSwgCi0gICAgMjUwNDcsIDI1MDUxLCAyNTA1NCwgMjUwNTgsIDI1MDYxLCAyNTA2OSwgMjUwNzUsIDIzOTM2LCAyNTA3OSwgMjUwODgsIAotICAgIDI1MDk5LCAyNTEwNSwgMjUxMTEsIDI1MTI2LCAyNTEzNSwgMjUxNDMsIDI1MTUwLCAyNTE1NSwgMjUxNTksIDI1MTY2LCAKLSAgICAyNTE3MiwgMjUxODEsIDI1MTg5LCAyNTE5NiwgMjUyMDYsIDI1MjE1LCAyNTIyNSwgMjUyMzAsIDI1MjM5LCAyNTI0OCwgCi0gICAgMjUyNTksIDI1MjcwLCA0MTkyLCAyNTI4MCwgMjUyODQsIDI1Mjk0LCAyNTMwMiwgMjUzMTIsIDI1MzIzLCAyNTMyOCwgCi0gICAgMjUzMzgsIDI1MzQ2LCAyNTM1MywgMjUzNTksIDI1MzY2LCAyNTM3MSwgMjM5NDYsIDI1Mzc1LCAyNTM4NCwgMjUzODgsIAotICAgIDI1MzkxLCAyNTM5NiwgMjU0MDQsIDI1NDExLCAyNTQyMCwgMjU0MjgsIDI1NDM2LCAyNTQ0NCwgMjU0NTQsIDI1NDYzLCAKLSAgICAyNTQ2OSwgMjU0NzUsIDI1NDc5LCAyMzk1MSwgMjM5NTYsIDI1NDgzLCAyNTQ5MywgMjU1MDMsIDI1NTEzLCAyNTUyMSwgCi0gICAgMjU1MjgsIDI1NTM4LCAyNTU0NiwgMjU1NTQsIDI1NTYwLCAyNTU2OCwgODY1LCAyNTU3NywgMTYwNjUsIDYxNSwgMjU1OTEsIAotICAgIDI1NjAwLCAyNTYwOCwgMjU2MTksIDI1NjMwLCAyNTY0MCwgMjU2NDksIDI1NjYxLCAyNTY3MCwgMjU2NzksIDI1Njg2LCAKLSAgICAyNTY5MiwgMjU3MDIsIDI1NzExLCAyNTcyMCwgMjU3MjgsIDI1NzM4LCAyNTc0NiwgMjU3NTQsIDk4OTIsIDI1NzYwLCAKLSAgICAyNTc2MywgMjU3NjcsIDI1NzcyLCAyNTc3NywgMjU3ODEsIDEwNTg4LCAyMzk2OSwgMjM5NzQsIDI1Nzg5LCAyNTc5NSwgCi0gICAgMjU4MDEsIDI1ODA2LCAyNTgxMSwgMjU4MTUsIDI1ODIzLCAyNTgyOSwgMjU4MzUsIDI1ODM5LCAzNjc1LCAyNTg0NywgCi0gICAgMjU4NTIsIDI1ODU3LCAyNTg2MSwgMjU4NjUsIDEwNzAxLCAyNTg3MiwgMjU4ODAsIDI1ODk0LCAyNTkwMSwgMjU5MDcsIAotICAgIDEwNzEwLCAxMDcxNiwgMjU5MTUsIDI1OTIzLCAyNTkzMCwgMjU5MzUsIDI1OTQwLCAyMzk3OSwgMjU5NDYsIDI1OTU3LCAKLSAgICAyNTk2MSwgMjU5NjYsIDI2NDAsIDI1OTcxLCAyNTk4MiwgMjU5ODgsIDI1OTkzLCAyNTk5NywgMjYwMDEsIDI2MDA0LCAKLSAgICAyNjAxMSwgMjYwMTgsIDI2MDI0LCAyNjAzMSwgMjYwMzcsIDI2MDQxLCAyMzk4NCwgMjYwNDYsIDI2MDUwLCAyNjA1NCwgCi0gICAgMTQzMSwgODU0NCwgMjYwNTksIDI2MDY0LCAyNjA2OSwgMjYwNzQsIDI2MDc5LCAyNjA4NCwgMjYwODksIDI2MDk0LCAKLSAgICAyNjA5OSwgMjYxMDQsIDI2MTA5LCAyNjExNCwgMjYxMTksIDI2MTI0LCAyNjEzMCwgMjYxMzUsIDI2MTQwLCAyNjE0NSwgCi0gICAgMjYxNTAsIDI2MTU1LCAyNjE2MCwgMjYxNjYsIDI2MTcxLCAyNjE3NiwgMjYxODEsIDI2MTg2LCAyNjE5MSwgMjYxOTYsIAotICAgIDI2MjAxLCAyNjIwNywgMjYyMTMsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCA1LCAyNjI0MCwgMjYyNDQsIDI2MjQ4LCAKLSAgICAyNjI1MiwgMjYyNTcsIDI2MjYxLCAyNjI2NSwgMjYyNjksIDI2MjczLCAyNjI3OCwgMjYyODIsIDI2Mjg3LCAyNjI5MSwgCi0gICAgMjYyOTQsIDI2Mjk4LCAyNjMwMywgMjYzMDcsIDI2MzEyLCAyNjMxNiwgMjYzMjAsIDI2MzI0LCAyNjMyOSwgMjYzMzMsIAotICAgIDI2MzM3LCAyNjM0NywgMjYzNTIsIDI2MzU2LCAyNjM2MCwgMjYzNjUsIDI2MzcwLCAyNjM3OSwgMjYzODQsIDI2Mzg5LCAKLSAgICAyNjM5MywgMjYzOTcsIDI2NDEwLCAyNjQyMiwgMjY0MzEsIDI2NDQwLCAyNjQ0NSwgMjY0NTEsIDI2NDU2LCAyNjQ2MCwgCi0gICAgMjY0NjQsIDI2NDc0LCAyNjQ4MywgMjY0OTEsIDI2NDk3LCAyNjUwMiwgMjY1MDYsIDI2NTEzLCAyNjUyMywgMjY1MzIsIAotICAgIDI2NTQwLCAxMTc3MCwgMjY1NDgsIDI2NTU2LCAyNjU2NSwgMjY1NzQsIDI2NTgyLCAyNjU5MiwgMjY1OTcsIDI2NjAxLCAKLSAgICAyNjYwNSwgMjY2MDgsIDI2NjEwLCAyNjYxNCwgMjY2MTgsIDI2NjIzLCAyNjYyOCwgMjY2MzIsIDI2NjM2LCAyNjYzOSwgCi0gICAgMjY2NDMsIDI2NjQ2LCAyNjY1MCwgMjY2NTMsIDI2NjU2LCAyNjY2MCwgMjY2NjYsIDI2NjcwLCAyNjY3NCwgMjY2NzgsIAotICAgIDI2NjgzLCAyNjY4OCwgMjY2OTMsIDI2Njk3LCAyNjcwMCwgMjY3MDUsIDI2NzExLCAyNjcxNiwgMjY3MjIsIDI2NzI3LCAKLSAgICAyNjczMSwgMjY3MzcsIDI2NzQxLCAyNjc0NSwgMjY3NTAsIDI2NzU0LCAyNjc1OSwgMjY3NjQsIDI2NzY4LCAyNjc3MiwgCi0gICAgMjY3NzksIDI2NzgzLCAyNjc4NiwgMjY3OTAsIDI2Nzk0LCAyNjgwMCwgMjY4MDYsIDI2ODEwLCAyNjgxNCwgMjY4MTksIAotICAgIDI2ODI2LCAyNjgzMiwgMjY4MzYsIDI2ODQ1LCAyNjg0OSwgMjY4NTMsIDI2ODU2LCAyNjg2MiwgMjY4NjcsIDI2ODczLCAKLSAgICAxNDc1LCAxODA2LCAyNjg3OCwgMjY4ODMsIDI2ODg4LCAyNjg5MywgMjY4OTgsIDI2OTAzLCAyNjkwOCwgMjE3NCwgMjIyMCwgCi0gICAgMjY5MTMsIDI2OTE2LCAyNjkyMCwgMjY5MjQsIDI2OTI5LCAyNjkzMywgMTYwNzcsIDI2OTM3LCAyNjk0MiwgMjY5NDcsIAotICAgIDI2OTUxLCAyNjk1NCwgMjY5NTksIDI2OTYzLCAyNjk2OCwgMjY5NzIsIDE2MDgxLCAyNjk3NywgMjY5ODAsIDI2OTgzLCAKLSAgICAyNjk4NywgMjY5OTIsIDI2OTk2LCAyNzAwOSwgMjcwMTMsIDI3MDE2LCAyNzAyNCwgMjcwMzMsIDI3MDQwLCAyNzA0NSwgCi0gICAgMjcwNTEsIDI3MDU3LCAyNzA2NSwgMjcwNzIsIDI3MDc5LCAyNzA4MywgMjcwODcsIDI3MDkxLCAyNzA5NiwgMjcxMDEsIAotICAgIDI3MTA1LCAyNzExMywgMjcxMTgsIDI3MTMwLCAyNzE0MSwgMjcxNDYsIDI3MTUwLCAyNzE1NywgMjcxNjEsIDI3MTY2LCAKLSAgICAyNzE3MiwgMjcxNzUsIDI3MTgwLCAyNzE4NSwgMjcxODksIDI3MTkzLCAyNzE5NiwgMjcyMDIsIDgyNDgsIDIzNTAsIAotICAgIDI3MjA2LCAyNzIxMSwgMjcyMjcsIDEwMTk4LCAyNzI0NywgMjcyNTYsIDI3MjcyLCAyNzI3NiwgMjcyODMsIDI3Mjg2LCAKLSAgICAyNzI5MiwgMjczMDIsIDI3MzA4LCAyNzMxNywgMjczMzIsIDI3MzQ0LCAyNzM1NSwgMjczNjMsIDI3MzcyLCAyNzM3OCwgCi0gICAgMjczODcsIDI3Mzk3LCAyNzQwNywgMjc0MTgsIDI3NDI5LCAyNzQzOSwgMjc0NDgsIDI3NDU1LCAyNzQ2NCwgMjc0NzIsIAotICAgIDI3NDc5LCAyNzQ4NywgMjc0OTQsIDI3NTAxLCAyNzUxNCwgMjc1MjEsIDI3NTI5LCAyNzUzNiwgMjc1NDIsIDI3NTQ3LCAKLSAgICAyNzU1NiwgMjc1NjIsIDI3NTY3LCAyNzU3NSwgMjc1ODIsIDI3NTg5LCAyNTMwNCwgMjc2MDEsIDI3NjEzLCAyNzYyNywgCi0gICAgMjc2MzUsIDI3NjQyLCAyNzY1NCwgMjc2NjMsIDI3NjcyLCAyNzY4MCwgMjc2ODgsIDI3Njk2LCAyNzcwMywgMjc3MDksIAotICAgIDI3NzE4LCAyNzcyNiwgMjc3MzYsIDI3NzQ1LCAyNzc1NSwgMjc3NjQsIDI3NzczLCAyNzc4MSwgMjc3ODYsIDI3NzkwLCAKLSAgICAyNzc5MywgMjc3OTcsIDI3ODAxLCAyNzgwNSwgMjc4MDksIDI3ODEzLCAyNzgxOSwgMjc4MjUsIDI3ODMzLCAxNjEzOSwgCi0gICAgMjc4NDAsIDI3ODQ1LCAyNzg1MiwgMjc4NTgsIDI3ODY1LCAxNjE0NywgMjc4NzIsIDI3ODc1LCAyNzg4NywgMjc4OTUsIAotICAgIDI3OTAxLCAyNzkwNiwgMjc5MTAsIDI3OTIxLCAxMDY1MSwgMjc5MzEsIDI3OTM5LCAyNzk0OSwgMjc5NTgsIDI3OTY1LCAKLSAgICAyNzk3MiwgMjc5ODAsIDI3OTg0LCAxNjE1OCwgMjc5ODcsIDI3OTk0LCAyNzk5OCwgMjgwMDQsIDI4MDA3LCAyODAxNCwgCi0gICAgMjgwMjAsIDI4MDI3LCAyODAzMywgMjgwMzcsIDI4MDQyLCAyODA0NiwgMjgwNTUsIDI4MDYyLCAyODA2OCwgODMwNiwgCi0gICAgMjgwNzUsIDI4MDgzLCAyODA5MCwgMjgwOTYsIDI4MTAxLCAyODEwNywgMjgxMTMsIDI4MTIxLCAyODEyNywgMjgxMzEsIAotICAgIDI4MTM0LCAyODEzNiwgMjc3OTgsIDI4MTQ1LCAyODE1MSwgMjgxNTcsIDI4MTY3LCAyODE3MiwgMjgxNzksIDI4MTg1LCAKLSAgICAyODE5MCwgMjgxOTUsIDI4MjAwLCAyODIwNCwgMjgyMDksIDI4MjE2LCAyODIyMiwgMjgyMzEsIDI4MjM1LCAyODI0MiwgCi0gICAgMjgyNDgsIDI4MjU3LCA0Mzc4LCAyODI2MywgMjgyNjksIDI4Mjc0LCAyODI4MSwgMjgyOTIsIDI4Mjk3LCAyODMwMSwgCi0gICAgMjgzMTEsIDI4MzE3LCAyODMyMSwgMjgzMjYsIDI4MzM2LCAyODM0NSwgMjgzNDksIDI4MzU2LCAyODM2NCwgMjgzNzEsIAotICAgIDI4Mzc3LCAyODM4MiwgMjgzOTAsIDI4Mzk3LCAyODQwMiwgMjg0MDksIDI4NDIxLCAyODQzMCwgMjg0MzQsIDE0MjEyLCAKLSAgICAyODQ0MiwgMjg0NTIsIDI4NDU2LCAyNzAyMCwgMjg0NjcsIDI4NDcyLCAyODQ3NiwgMjg0ODMsIDI4NDkwLCAyMzY3MCwgCi0gICAgMjc3MjMsIDI4NDk1LCAyODQ5OSwgMjg1MDIsIDI0NzE0LCAyODUwNywgMjg1MjEsIDI4NTM3LCAyODU1NSwgMjg1NzQsIAotICAgIDI4NTkxLCAyODYwOSwgMjQ3MzMsIDI4NjI2LCAyODY0NiwgMjQ3NTAsIDI4NjU4LCAyODY3MCwgMTcxNzgsIDI4NjgyLCAKLSAgICAyNDc3MCwgMjg2OTYsIDI4NzA4LCAxMTQ2MSwgMjg3MjIsIDI4NzI3LCAyODczMiwgMjg3MzcsIDI4NzQzLCAyODc0OSwgCi0gICAgMjg3NTUsIDI4NzU5LCAyODc2NywgMjg3NzQsIDI4Nzc5LCAyODc4OSwgMjg3OTUsIDExMDU5LCAyODgwMSwgMjg4MDMsIAotICAgIDI4ODA4LCAyODgxNiwgMjg4MjAsIDI4MjEyLCAyODgyNiwgMjg4MzMsIDEyNjAxLCAxMjYxMSwgMjg4NDAsIDI4ODUwLCAKLSAgICAyODg1NSwgMjg4NTksIDI4ODYyLCAyODg2OCwgMjg4NzYsIDI4ODg4LCAyODg5OCwgMjg5MTQsIDI4OTI3LCAyODk0MSwgCi0gICAgMTcxOTYsIDI4OTU1LCAyODk2MiwgMjg5NjYsIDI4OTY5LCAyODk3NCwgMjg5NzgsIDI4OTg1LCAyODk5MiwgMjg5OTksIAotICAgIDI5MDA5LCAyOTAxNCwgMjkwMTksIDI5MDI0LCAyOTAzMiwgMjkwNDAsIDI5MDQ1LCAyOTA1NCwgMjkwNTksIDMzNTMsIAotICAgIDI5MDYzLCAyOTA2NiwgMjkwNjksIDI5MDc0LCAyOTA4MSwgMjkwODYsIDI5MTAyLCAyOTExMCwgMjkxMTgsIDk5NjYsIAotICAgIDI5MTI2LCAyOTEzMSwgMjkxMzUsIDI5MTQxLCAyOTE0NiwgMjkxNTIsIDI5MTU1LCAyOTE2MSwgMjkxNzMsIDI5MTgxLCAKLSAgICAyOTE4OCwgMjkxOTQsIDI5MjAxLCAyOTIxMiwgMjkyMjYsIDI5MjM5LCAyOTI0NSwgMjkyNTQsIDI5MjYwLCAyOTI2OSwgCi0gICAgMjkyODEsIDI5MjkyLCAyOTMwMiwgMjkzMTEsIDI5MzIwLCAyOTMyOCwgMjkzMzksIDgyODgsIDI5MzQ2LCAyOTM1MywgCi0gICAgMjkzNTksIDI5MzY0LCAyOTM3MCwgMjkzNzcsIDI5Mzg3LCAyOTM5NywgMjk0MDYsIDI5NDEyLCAyOTQxOSwgMjk0MjQsIAotICAgIDI5NDMyLCAyOTQzOSwgMjk0NDcsIDI5NDU1LCAyOTQ2NywgNjU2MywgOTk1LCAyOTQ3NCwgMjk0ODMsIDI5NDkxLCAyOTQ5NywgCi0gICAgMjk1MDMsIDI5NTA4LCAyOTUxMiwgMjk1MTUsIDI5NTIxLCAyOTUyOCwgMjk1MzMsIDI5NTM4LCAyOTU0MywgMjk1NDcsIAotICAgIDI5NTU5LCAyOTU3MCwgMjk1NzksIDI5NTg3LCAxNjMyMywgMjk1OTIsIDI5NTk3LCAyOTYwMywgMjk2MDksIDEyNTk0LCAKLSAgICA5MDU4LCAyOTYxNCwgMjk2MTgsIDI5NjIyLCAyOTYyNSwgMjk2MjgsIDI5NjM0LCAyOTY0MiwgMjk2NTAsIDI5NjU0LCAKLSAgICAyOTY1OCwgMjk2NjMsIDI5NjY2LCAyOTY3NSwgMjk2NzksIDI5NjgyLCAyOTY5MCwgMjk3MDEsIDI5NzA1LCAyOTcxMSwgCi0gICAgMjk3MTcsIDI5NzIxLCAyOTcyNywgMjk3MzUsIDI5NzU3LCAyOTc4MSwgMjk3OTAsIDI5Nzk3LCAyOTgwNCwgMjk4MTAsIAotICAgIDI5ODE4LCAyOTgyNCwgMjk4MjksIDI5ODQwLCAyOTg1OCwgMjk4NjUsIDI5ODczLCAyOTg3NywgMjk4ODIsIDI5ODkxLCAKLSAgICAyOTkwNCwgMjk5MTIsIDI5OTI0LCAyOTkzNSwgMjk5NDYsIDI5OTU2LCAyOTk3MCwgMjk5NzksIDI5OTg3LCAyOTk5OSwgCi0gICAgMTAyMTUsIDMwMDEwLCAzMDAyMSwgMzAwMzMsIDMwMDQzLCAzMDA1MiwgMzAwNTcsIDMwMDYxLCAzMDA2OSwgMzAwODAsIAotICAgIDMwMDkwLCAzMDA5NSwgMzAwOTksIDMwMTAyLCAzMDEwNSwgMzAxMTMsIDMwMTIxLCAzMDEzMCwgMzAxNDAsIDMwMTQ5LCAKLSAgICAzMDE1NSwgMzAxNjksIDI3MDIsIDMwMTkxLCAzMDIwMiwgMzAyMTEsIDMwMjIxLCAzMDIzMywgMzAyNDIsIDMwMjUxLCAKLSAgICAzMDI2MSwgMzAyNjksIDMwMjc3LCAzMDI4NiwgMzAyOTEsIDMwMzAyLCAzMDMwNywgMzAzMTgsIDMwMzIyLCAzMDMzMiwgCi0gICAgMzAzNDEsIDMwMzQ5LCAzMDM1OSwgMzAzNjksIDMwMzc3LCAzMDM4NiwgMzAzOTMsIDMwNDAxLCAzMDQwOCwgMzA0MTcsIAotICAgIDMwNDI2LCAzMDQzMCwgMzA0MzgsIDMwNDQ1LCAzMDQ1MywgMzA0NjAsIDMwNDcxLCAzMDQ4NiwgMzA0OTMsIDMwNDk5LCAKLSAgICAzMDUwOSwgMzA1MTgsIDMwNTI0LCAzMDUzNSwgMzA1MzksIDMwNTQ2LCAzMDU1MCwgMzA1NTYsIDE1MjY1LCAzMDU2MiwgCi0gICAgMzA1NjYsIDMwNTcxLCAzMDU3NywgMzA1ODQsIDMwNTg4LCAzMDU5MiwgMzA2MDAsIDMwNjA4LCAzMDYxNCwgMzA2MjMsIAotICAgIDMwNjMwLCAzMDYzNSwgMzA2NDAsIDMwNjUwLCAyNTM3MywgMzA2NTQsIDMwNjU3LCAzMDY2MiwgMzA2NjcsIDMwNjcyLCAKLSAgICAzMDY3NywgMzA2ODIsIDMwNjg3LCAzMDY5MiwgMzA2OTcsIDMwNzAzLCAzMDcwOCwgMzA3MTMsIDMwNzE5LCAxMTk5LCA2NjAsIAotICAgIDMwNzI0LCAzMDczMywgMjM5OCwgMzA3NDAsIDMwNzQ1LCAzMDc0OSwgMzA3NTUsIDEyNDgsIDU3OCwgMjkwLCAzMDc2MCwgCi0gICAgMzA3NjksIDMwNzc3LCAzMDc4NiwgMzA3OTQsIDMwODA1LCAzMDgxMywgMzA4MjIsIDMwODMwLCAzMDgzNSwgMTA3OTcsIAotICAgIDMwODM5LCAzMDg0NywgMzA4NTUsIDMwODYwLCAxNjA5NCwgMzgyNCwgMzA4NjYsIDMwODcyLCAzMDg3OCwgNjE0OCwgCi0gICAgMzA4ODMsIDMwODg3LCAzMDg5MywgMzA4OTcsIDMwOTAzLCAzMDkwOCwgMzA5MTUsIDE0NDEsIDMwOTIxLCAzMDkyOCwgCi0gICAgMTM0OCwgNjE1NiwgMzA5MzIsIDMwOTQyLCAzMDk1MCwgMzA5NTYsIDMwOTY2LCAzMDk3NSwgMzA5ODMsIDMwOTg5LCAKLSAgICAzMDk5NywgMzEwMDQsIDEyMTM2LCAzMTAxMCwgMzEwMTcsIDMxMDIyLCAzMTAyOSwgMTQ5NCwgMjE5LCAyMTczLCAzMTAzNSwgCi0gICAgMzEwNDEsIDMxMDQ4LCAzMTA1OSwgMzEwNzAsIDMxMDc4LCAzMTA4NSwgMzEwOTUsIDMxMTA0LCAzMTExMiwgMzExMjEsIAotICAgIDMxMTI4LCAzMTEzNSwgMzExNDgsIDMxMTU1LCAzMTE2MSwgMzExNzIsIDMxMTkxLCAxMjUzLCAzMTE5NiwgMzEyMDEsIAotICAgIDMxMjA5LCAzNzQyLCAzMTIxMywgMzEyMTgsIDMxMjIyLCAzMTIyNiwgMTQ0NSwgMjY2MzcsIDMxMjM2LCAzMTI0MCwgCi0gICAgMzEyNDUsIDMxMjQ5LCAzNjE5LCAzMTI1NSwgMzEyNjMsIDMxMjcwLCAzMTI4MSwgMzEyODksIDMxMjk3LCAzNzQzLCAzNDYsIAotICAgIDMxMzAyLCAzMTMxMCwgMzEzMTgsIDMxMzI1LCAzMTMzMSwgMzEzMzYsIDIyNDIsIDExNjI4LCAzMTM0MywgMzEzNDksIAotICAgIDI4MDM4LCAyODI4NywgMzEzNTUsIDU3NCwgMTA2LCAzMTM1OSwgMzEzNjMsIDMxMzY5LCA2NjMsIDk4NDEsIDMxMzc0LCAKLSAgICAzMTM4MSwgMzEzODcsIDMxMzkxLCAxNjM5LCAzMTM5NCwgMzEzOTgsIDE2NTc2LCAzMTQwMSwgMzE0MDYsIDMxNDEzLCAKLSAgICAzMTQxOSwgMzE0MjQsIDMxNDMyLCAzMTQzOSwgMzE0NDUsIDI0MTMyLCAzMTQ0OSwgMzE0NTMsIDMxNDU3LCAzODEzLCAKLSAgICAxODE4MCwgMzE0NjEsIDMxNDY2LCAzMTQ3MCwgMzE0NzMsIDMxNDgxLCAzMTQ4OSwgMzE0OTQsIDMxNTAyLCAzMTUwNSwgCi0gICAgMzE1MTIsIDMxNTIyLCAzMTUzNCwgMzE1MzksIDMxNTQzLCAzMTU1MSwgMzE1NTgsIDMxNTY0LCAzMTU3MSwgMzE1NzgsIAotICAgIDMxNTgxLCAzMTU4NSwgMzE1ODksIDE0NDksIDMxNTk5LCAzMTYwMSwgMzE2MDYsIDMxNjEyLCAzMTYxOCwgMzE2MjMsIAotICAgIDMxNjI4LCAzMTYzMywgMzE2MzgsIDMxNjQzLCAzMTY0OCwgMzE2NTMsIDMxNjU4LCAzMTY2MywgMzE2NjgsIDMxNjczLCAKLSAgICAzMTY3OCwgMzE2ODMsIDMxNjg4LCAzMTY5NCwgMzE3MDAsIDMxNzA2LCAzMTcxMiwgMzE3MTcsIDMxNzIyLCAzMTcyNywgCi0gICAgMzE3MzMsIDMxNzM4LCAzMTc0MywgMzE3NDgsIDMxNzU0LCAzMTc1OSwgMzE3NjUsIDMxNzcwLCAzMTc3NSwgMzE3ODAsIAotICAgIDMxNzg1LCAzMTc5MSwgMzE3OTYsIDMxODAyLCAzMTgwNywgMzE4MTIsIDMxODE3LCAzMTgyMiwgMzE4MjgsIDMxODMzLCAKLSAgICAzMTgzOSwgMzE4NDQsIDMxODQ5LCAzMTg1NCwgMzE4NTksIDMxODY0LCAzMTg2OSwgMzE4NzQsIDMxODc5LCAzMTg4NCwgCi0gICAgMzE4OTAsIDMxODk2LCAzMTkwMiwgMzE5MDcsIDMxOTEyLCAzMTkxNywgMzE5MjIsIDMxOTI4LCAzMTkzNCwgMzE5NDAsIAotICAgIDMxOTQ2LCAzMTk1MiwgMzE5NTgsIDMxOTYzLCAzMTk2OSwgMzE5NzQsIDMxOTc5LCAzMTk4NCwgMzE5ODksIDMxOTk1LCAKLSAgICAyNDgyLCAzMjAwMCwgMjQ4OSwgMjQ5NiwgMjc5MywgMzIwMDUsIDI1MDIsIDI1MTIsIDMyMDExLCAzMjAxNSwgMzIwMjAsIAotICAgIDMyMDI1LCAzMjAzMSwgMzIwMzYsIDMyMDQxLCAzMjA0NSwgMzIwNTAsIDMyMDU2LCAzMjA2MSwgMzIwNjYsIDMyMDcxLCAKLSAgICAzMjA3NywgMzIwODIsIDMyMDg2LCAzMjA5MCwgMzIwOTUsIDMyMTAwLCAzMjEwNSwgMzIxMTAsIDMyMTE1LCAzMjEyMSwgCi0gICAgMzIxMjcsIDMyMTMyLCAzMjEzNiwgMzIxNDEsIDMyMTQ3LCAzMjE1MSwgMzIxNTYsIDMyMTYxLCAzMjE2NiwgMzIxNzEsIAotICAgIDMyMTc1LCAzMjE3OCwgMzIxODMsIDMyMTg4LCAzMjE5MywgMzIxOTgsIDMyMjAzLCAzMjIwOSwgMzIyMTUsIDMyMjIwLCAKLSAgICAzMjIyNSwgMzIyMzAsIDMyMjM0LCAzMjIzOSwgMzIyNDQsIDMyMjQ5LCAzMjI1NCwgMzIyNTksIDMyMjY0LCAzMjI2OCwgCi0gICAgMzIyNzMsIDMyMjc4LCAzMjI4MywgMzIyODcsIDMyMjkxLCAzMjI5NSwgMzIzMDAsIDMyMzA4LCAzMjMxMywgMzIzMTgsIAotICAgIDMyMzI0LCAzMjMzMCwgMzIzMzYsIDMyMzQxLCAzMjM0NSwgMzIzNDgsIDMyMzUzLCAzMjM1OCwgMzIzNjIsIDMyMzY3LCAKLSAgICAzMjM3MiwgMzIzNzYsIDMyMzgxLCAzMjM4NSwgMzIzODgsIDMyMzkzLCAzOTE0LCAxODkwNiwgMzIzOTgsIDMyNDAzLCAKLSAgICAzMjQwOCwgMzI0MTYsIDIyOTU5LCAzMDkyNSwgOTUxOCwgMzI0MjEsIDMyNDI2LCAzMjQzMCwgMzI0MzUsIDMyNDM5LCAKLSAgICAzMjQ0MywgMzI0NDgsIDMyNDUyLCAzMjQ1NSwgMzI0NTgsIDMyNDYyLCAzMjQ2NywgMzI0NzEsIDMyNDc5LCAzMjQ4MywgCi0gICAgMzI0ODYsIDMyNDkxLCAzMjQ5NSwgMzI0OTksIDMyNTA0LCAzMjUwOSwgMzI1MTMsIDMyNTE5LCAzMjUyNCwgMzI1MjksIAotICAgIDMyNTM2LCAzMjU0MywgMzI1NDcsIDMyNTUwLCAzMjU1NiwgMzI1NjUsIDMyNTcyLCAzMjU4MCwgMzI1ODcsIDMyNTkxLCAKLSAgICAzMjU5NiwgMzI2MDAsIDMyNjA0LCAzMjYxMCwgMzI2MTYsIDMyNjIwLCAzMjYyNiwgMzI2MzEsIDMyNjM2LCAzMjY0MCwgCi0gICAgMzI2NDcsIDMyNjUzLCAzMjY1OSwgMzI2NjUsIDMyNjcxLCAzMjY3OCwgMzI2ODQsIDMyNjkwLCAzMjY5NiwgMzI3MDIsIAotICAgIDMyNzA4LCAzMjcxNCwgMzI3MjAsIDMyNzI3LCAzMjczMywgMzI3NDAsIDMyNzQ2LCAzMjc1MiwgMzI3NTgsIDMyNzY0LCAKLSAgICAzMjc3MCwgMzI3NzYsIDMyNzgyLCAzMjc4OCwgMzI3OTQsIDEyNDc5LCAzMjgwMCwgMzI4MDYsIDMyODExLCAzMjgxNiwgCi0gICAgMzI4MjEsIDMyODI0LCAzMjgzMCwgMzI4MzgsIDMyODQzLCAzMjg0NywgMzI4NTIsIDMyODU4LCAzMjg2NywgMzI4NzMsIAotICAgIDMyODc4LCAzMjg4MywgMzI4ODgsIDMyODkyLCAzMjg5NywgMzI5MDIsIDMyOTA3LCAzMjkxMiwgMzI5MTcsIDMyOTI0LCAKLSAgICAzMjkzMSwgMzI5MzcsIDMyOTQzLCAzMjk0OCwgMTc4MjIsIDMyOTU1LCAzMjk2MSwgMzI5NjgsIDMyOTc0LCAzMjk4MCwgCi0gICAgMzI5ODUsIDMyOTkzLCAzMjk5OCwgMTAzNzIsIDMzMDAyLCAzMzAwNywgMzMwMTIsIDMzMDE4LCAzMzAyMywgMzMwMjgsIAotICAgIDMzMDMyLCAzMzAzNywgMzMwNDIsIDMzMDQ4LCAzMzA1MywgMzMwNTgsIDMzMDYzLCAzMzA2NywgMzMwNzIsIDMzMDc3LCAKLSAgICAzMzA4MSwgMzMwODYsIDMzMDkxLCAzMzA5NSwgMzMxMDAsIDMzMTA0LCAzMzEwOSwgMzMxMTQsIDMzMTE5LCAzMzEyMywgCi0gICAgMzMxMjgsIDMzMTMyLCAzMzEzNiwgMTY2ODIsIDMzMTQxLCAzMzE1MCwgMzMxNTYsIDMzMTYyLCAzMzE3MSwgMzMxNzksIAotICAgIDMzMTg4LCAzMzE5NiwgMzMyMDEsIDMzMjA1LCAzMzIxMiwgMzMyMTgsIDMzMjI2LCAzMzIzMCwgMzMyMzMsIDMzMjM4LCAKLSAgICAzMzI0MiwgMzMyNTEsIDMzMjU5LCAzMzI3NywgMzMyODMsIDE0OTMsIDMzMjg5LCAzMzI5MiwgMzMyOTYsIDI0MjM4LCAKLSAgICAyNDI0NCwgMzMzMDIsIDMzMzA2LCAzMzMxNywgMzMzMjgsIDMzMzM5LCAzMzM1MSwgMzMzNTUsIDMzMzYyLCAzMzM2OSwgCi0gICAgMzMzNzQsIDMzMzc4LCA2MjA0LCA5MjgsIDIyOTU4LCAzMzM4NiwgMzMzOTEsIDMzMzk1LCAzMzQwMCwgMzM0MDQsIDMzNDEwLCAKLSAgICAzMzQxNSwgMzM0MjEsIDMzNDI2LCAzMzQzMiwgMzM0MzcsIDMzNDQzLCAzMzQ0OCwgMzM0NTQsIDMzNDYwLCAzMzQ2NiwgCi0gICAgMzM0NzEsIDMzNDI3LCAzMzQzMywgMzM0NzUsIDMzNDgwLCAzMzQ4NiwgMzM0OTEsIDMzNDk3LCAzMzUwMiwgMzM1MDgsIAotICAgIDMzNTEzLCAzMzQzOCwgMTEzMTQsIDMzNTE3LCAzMzQ0OSwgMzM0NTUsIDMzNDYxLCAyODg1LCAzNTMzLCAzMzUyMywgCi0gICAgMzM1MjYsIDMzNTMxLCAzMzUzNywgMzM1NDMsIDMzNTQ5LCAzMzU1NiwgMzM1NjIsIDMzNTY4LCAzMzU3NCwgMzM1ODAsIAotICAgIDMzNTg2LCAzMzU5MiwgMzM1OTgsIDMzNjA0LCAzMzYxMCwgMzM2MTYsIDMzNjIyLCAzMzYyOCwgMzM2MzUsIDMzNjQxLCAKLSAgICAzMzY0NywgMzM2NTMsIDMzNjU5LCAzMzY2NSwgMzM2NjgsIDMzNjczLCAzMzY3NiwgMzM2ODMsIDMzNjg4LCAzMzY5NiwgCi0gICAgMzM3MDEsIDMzNzA2LCAzMzcxMiwgMzM3MTcsIDMzNzIyLCAzMzcyNiwgMzM3MzEsIDMzNzM3LCAzMzc0MiwgMzM3NDgsIAotICAgIDMzNzUzLCAzMzc1OSwgMzM3NjQsIDMzNzcwLCAzMzc3NiwgMzM3ODAsIDMzNzg1LCAzMzc5MCwgMzM3OTUsIDMzODAwLCAKLSAgICAzMzgwNCwgMzM4MDksIDMzODE0LCAzMzgxOSwgMzM4MjUsIDMzODMxLCAzMzgzNywgMzM4NDMsIDMzODQ4LCAzMzg1MiwgCi0gICAgMzM4NTUsIDMzODYxLCAzMzg2NywgMzM4NzYsIDMzODg0LCAzMzg5MSwgMzM4OTYsIDMzOTAwLCAzMzkwNCwgMzM5MDksIAotICAgIDE2NTMwLCAzMzkxNCwgMzM5MjIsIDMzOTI4LCAzODY2LCAxMzU4LCAzMzkzMywgMzM5MzcsIDgzNTksIDMzOTQzLCAzMzk0OSwgCi0gICAgMzM5NTYsIDgzNjgsIDMzOTYwLCAzMzk2NiwgMzM5NzMsIDMzOTc5LCAzMzk4OCwgMzM5OTYsIDkyNDQsIDM0MDA4LCAKLSAgICAzNDAxMiwgMzQwMTksIDM0MDI1LCAzNDAzMCwgMzQwMzQsIDM0MDM4LCAzNDA0MSwgMzQwNTEsIDM0MDYwLCAzNDA2OCwgCi0gICAgMzM0MjgsIDM0MDczLCAzNDA4MywgMzQwOTMsIDM0MTAzLCAzNDEwOSwgMzQxMTQsIDM0MTI0LCAzNDEyOSwgMzQxNDIsIAotICAgIDM0MTU2LCAzNDE2NywgMzQxNzksIDM0MTkxLCAzNDIwNSwgMzQyMTgsIDM0MjMwLCAzNDI0MiwgMTU4OTksIDM0MjU2LCAKLSAgICAzNDI2MSwgMzQyNjYsIDM0MjcwLCAzNDI3NCwgMzQyNzgsIDE3OTUsIDI5MjkwLCAzNDI4MiwgMzQyODcsIDMzNDc2LCAKLSAgICAzNDI5MiwgMzQyOTUsIDM0MzAwLCAzNDMwNSwgMzQzMTAsIDM0MzE2LCAzNDMyMiwgMTA5NzQsIDM0MzI3LCAzNDMzMywgCi0gICAgMzQzNDAsIDE3MTMwLCAzNDM0NiwgMzQzNTEsIDM0MzU2LCAzNDM2MCwgMzQzNjUsIDM0MzcwLCAzMzQ4MSwgMzQzNzUsIAotICAgIDM0MzgwLCAzNDM4NSwgMzQzOTEsIDMzNDg3LCAzNDM5NiwgMzQzOTksIDM0NDA2LCAzNDQxNCwgMzQ0MjAsIDM0NDI2LCAKLSAgICAzNDQzMiwgMzQ0NDMsIDM0NDQ4LCAzNDQ1NSwgMzQ0NjIsIDM0NDY5LCAzNDQ3NywgMzQ0ODYsIDM0NDk1LCAzNDUwMSwgCi0gICAgMzQ1MDcsIDM0NTE1LCAzMzQ5MiwgMzQ1MjAsIDM0NTI2LCAzNDUzMiwgMzM0OTgsIDM0NTM3LCAzNDU0MiwgMzQ1NTAsIAotICAgIDM0NTU4LCAzNDU2NCwgMzQ1NzEsIDM0NTc3LCAzNDU4NCwgMzQ1OTEsIDM0NTk3LCAzNDYwNSwgMzQ2MTUsIDM0NjIyLCAKLSAgICAzNDYyOCwgMzQ2MzMsIDM0NjM5LCAzNDY0NCwgMzQ2NDksIDM0NjU2LCAzNDY2NSwgMzQ2NzMsIDM0Njc4LCAzNDY4NCwgCi0gICAgMzQ2OTEsIDM0Njk5LCAzNDcwNSwgMzQ3MTAsIDM0NzE2LCAzNDcyNSwgMzQ3MzIsIDMwMTM1LCAzNDczOCwgMzQ3NDIsIAotICAgIDM0NzQ3LCAzNDc1NiwgMzQ3NjEsIDM0NzY2LCAzNDc3MSwgMTM1NDgsIDM0Nzc5LCAzNDc4NCwgMzQ3ODksIDM0Nzk0LCAKLSAgICAzNDc5OCwgMzQ4MDMsIDM0ODA4LCAzNDgxNSwgMzQ4MjAsIDM0ODI1LCAzNDgzMCwgMzM1MDMsIDIyODk1LCAzNDgzNiwgCi0gICAgMjU1OCwgMTQ0LCAzNDgzOSwgMzQ4NDIsIDM0ODQ2LCAzNDg1MCwgMzQ4NjAsIDM0ODY4LCAzNDg3NSwgMzQ4NzksIDM0ODgyLCAKLSAgICAzNDg5MCwgMzQ4OTcsIDM0OTA0LCAzNDkxMywgMzQ5MTcsIDM0OTIwLCAzNDkyNiwgMzQ5MzAsIDM0OTM4LCAzNDk0NiwgCi0gICAgMzQ5NTAsIDM0OTU0LCAzNDk1NywgMzQ5NjMsIDM0OTcwLCAzNDk3NCwgMzQ5NzgsIDM0OTg1LCAzNDk5MywgMzM0MzksIAotICAgIDM1MDAwLCAzNTAwOCwgMzUwMTMsIDExMDM0LCA2MjMsIDM2OSwgMzUwMjUsIDM1MDMwLCAzNTAzNSwgMzUwNDEsIDM1MDQ2LCAKLSAgICAzNTA1MSwgMzg4NywgMzUwNTYsIDM1MDU5LCAzNTA2NCwgMzUwNjksIDM1MDc0LCAzNTA3OSwgMzUwODQsIDM1MDkxLCAKLSAgICAyNDM1NiwgMzUwOTYsIDM1MTAxLCAzNTEwNiwgMzUxMTEsIDM1MTE2LCAzNTEyMiwgMzUxMjcsIDM1MTMzLCAzMzY3OSwgCi0gICAgMzUxMzksIDM1MTQ0LCAzNTE1MCwgMzUxNTYsIDM1MTY2LCAzNTE3MSwgMzUxNzYsIDM1MTgwLCAzNTE4NSwgMzUxOTAsIAotICAgIDM1MTk1LCAzNTIwMCwgMzUyMTMsIDM1MjE4LCAyNDAxOSwgMTgyNTUsIDM5MDAsIDM1MjIyLCAzNTIyOCwgMzUyMzMsIAotICAgIDM1MjM4LCAzNTI0NCwgMzUyNDksIDM1MjU0LCAzNTI1OCwgMzUyNjMsIDM1MjY4LCAzNTI3NCwgMzUyNzksIDM1Mjg0LCAKLSAgICAxMzYzLCAzNTI4OCwgMzUyOTMsIDM1Mjk4LCAzNTMwMywgMzUzMDcsIDM1MzEyLCAzNTMxNywgMzUzMjIsIDM1MzI4LCAKLSAgICAzNTMzNCwgMzUzMzksIDM1MzQzLCAzNTM0NywgMzUzNTIsIDM1MzU3LCAzNTM2MiwgMzUzNjYsIDM1Mzc0LCAzNTM3OCwgCi0gICAgMzUzODQsIDM1Mzg4LCAzNTM5NSwgMTgwMzksIDMzNDUwLCAzNTQwMSwgMzU0MDgsIDM1NDE2LCAzNTQyMywgMzU0MjksIAotICAgIDM1NDQyLCAzNTQ1NCwgMzU0NTksIDM1NDY1LCAzNTQ2OSwgMjgxMiwgMzU0NzMsIDM1NDc3LCAzNDk2NSwgMzU0ODYsIAotICAgIDM1NDk3LCAzNTUwMiwgMzAxOTgsIDM1NTA3LCAzNTUxMiwgMzU1MTYsIDM1NTIxLCAyNDI0OSwgMzU1MjUsIDM1NTI5LCAKLSAgICAzNTUzNCwgMzM0NTYsIDIyOTg1LCAzNTUzOCwgMzU1NDMsIDM1NTQ5LCAzNTU1NCwgMzU1NTgsIDM1NTYyLCAzNTU2NSwgCi0gICAgMzU1NjksIDM1NTc1LCAzNTU4NCwgMzU1OTUsIDM1NjA3LCAzMzQ2MiwgMzU2MTIsIDM1NjE1LCAzNTYxOSwgMzU2MjMsIAotICAgIDQwNiwgMzU2MjgsIDM1NjMzLCAzNTYzOCwgMzU2NDMsIDM1NjQ4LCAzNTY1MywgMzU2NTksIDM1NjY0LCAzNTY2OSwgCi0gICAgMzU2NzUsIDM1NjgwLCAzNTY4NiwgMzU2OTEsIDM1Njk3LCAzNTcwMiwgMzU3MDcsIDM1NzEyLCAzNTcxNywgMzU3MjIsIAotICAgIDM1NzI3LCAzNTczMiwgMzU3MzcsIDM1NzQzLCAzNTc0OCwgMzU3NTMsIDM1NzU4LCAzNTc2MywgMzU3NjgsIDM1NzczLCAKLSAgICAzNTc3OCwgMzU3ODQsIDM1NzkwLCAzNTc5NSwgMzU4MDAsIDM1ODA1LCAzNTgxMCwgMzU4MTUsIDM1ODIwLCAzNTgyNSwgCi0gICAgMzU4MzAsIDM1ODM1LCAzNTg0MCwgMzU4NDUsIDM1ODUwLCAzNTg1NSwgMzU4NjAsIDM1ODY1LCAzNTg3MCwgMzU4NzUsIAotICAgIDM1ODgwLCAzNTg4NiwgMzI1LCA5LCAzNTg5MSwgMzU4OTUsIDM1ODk5LCAzNTkwNywgMzU5MTEsIDM1OTE1LCAzNTkxOCwgCi0gICAgMzU5MjEsIDM1OTIzLCAzNTkyOCwgMzU5MzIsIDM1OTM3LCAzNTk0MSwgMzU5NDYsIDM1OTUwLCAzNTk1NSwgMzU5NTksIAotICAgIDM1OTYyLCAzNTk2NCwgMzU5NjgsIDM1OTczLCAzNTk3NywgMzU5ODgsIDM1OTkxLCAzNTk5MywgMzU5OTcsIDM2MDA5LCAKLSAgICAzNjAxOCwgMzYwMjIsIDM2MDI2LCAzNjAzMiwgMzYwMzcsIDM2MDQ2LCAzNjA1MiwgMzYwNTcsIDM2MDYyLCAzNjA2NiwgCi0gICAgMzYwNzAsIDM2MDc1LCAzNjA4MiwgMzYwODcsIDM2MDkzLCAzNjA5OCwgMzYxMDIsIDM2MTA5LCAyNzczMSwgMjc3NDEsIAotICAgIDM2MTEzLCAzNjExOCwgMzYxMjMsIDM2MTI4LCAzNjEzNSwgMzYxMzksIDM2MTQ2LCAzNjE1MiwgODQ5MSwgMzYxNTYsIAotICAgIDM2MTY1LCAzNjE3MywgMzYxODgsIDM2MjAyLCAzNjIxMSwgMzYyMTksIDM2MjMwLCAzNjIzOSwgMzYyNDQsIDM2MjUxLCAKLSAgICA3NTU2LCAzNjI2MSwgMzYyNjYsIDM2MjcxLCAzNjI3NSwgMzYyNzgsIDM2MjgzLCAzNjI4NywgMzYyOTIsIDM2Mjk2LCAKLSAgICAzNjMwMywgMzYzMDgsIDM2MzEzLCAzNjMxOCwgOTM5MSwgMzYzMjgsIDM2MzMwLCAzNjMzMywgMzYzMzYsIDM2MzQwLCAKLSAgICAzNjM0NiwgMzYzNTAsIDM2MzU1LCAzNjM2MCwgMzYzNzgsIDM2MzkyLCAzNjQxMSwgMzY0MjgsIDM2NDM3LCAzNjQ0NSwgCi0gICAgMzY0NTAsIDM2NDU1LCAxNDg2LCAzNjQ2MSwgMzY0NjcsIDM2NDcyLCAzNjQ4MiwgMzY0OTEsIDM2NDk5LCAzNjUwNCwgCi0gICAgMzY1MTAsIDM2NTE1LCAzNjUyNCwgMzY1MzUsIDM2NTQwLCAzNjU0NywgMzY1NTEsIDM2NTU4LCAzNjU2NiwgMzY1NzMsIAotICAgIDM2NTg2LCAzNjU5NCwgMzY1OTgsIDM2NjA4LCAzNjYxMywgMzY2MTcsIDM2NjI1LCAzNjYzMywgMzY2MzgsIDM2NjQyLCAKLSAgICAzNjY0NiwgMzY2NTUsIDM2NjYxLCAzNjY2NiwgMzY2NzQsIDM2Njg0LCAzNjY5MywgMzY3MDIsIDM2NzExLCAzNjcyMiwgCi0gICAgMzY3MzAsIDM2NzQxLCAzNjc1MCwgMzY3NTcsIDM2NzYzLCAzNjc2OCwgMzY3NzksIDM2NzkwLCAzNjc5NSwgMzY3OTksIAotICAgIDM2ODAyLCAzNjgwNiwgMzY4MTQsIDM2ODIwLCAzNjgzMSwgMzY4NDIsIDM2ODUzLCAzNjg2NCwgMzY4NzUsIDM2ODg2LCAKLSAgICAzNjg5NywgMzY5MDgsIDM2OTIwLCAzNjkzMiwgMzY5NDQsIDM2OTU2LCAzNjk2OCwgMzY5ODAsIDM2OTkyLCAzNjk5NiwgCi0gICAgMzcwMDQsIDM3MDEwLCAzNzAxNywgMzcwMjMsIDM3MDI4LCAzNzAzNCwgMjQ1NywgMzcwMzgsIDM3MDQwLCAzNzA0NSwgCi0gICAgMzcwNTAsIDM3MDU1LCAzNzA1OCwgMzcwNjAsIDM3MDY0LCAzNzA2NywgMzcwNzQsIDM3MDc4LCAxMDY2NCwgMzcwODIsIAotICAgIDM3MDg4LCAzNzA5OCwgMzcxMDMsIDM3MTA5LCAzNzExMywgMzcxMTgsIDM3MTMxLCAyODE2MiwgMzcxMzcsIDM3MTQ2LCAKLSAgICAzNzE1NSwgMTkxMDQsIDM3MTYyLCAzNzE3MSwgMzQwODksIDM3MTc5LCAzNzE4NCwgMzcxODgsIDM3MTk3LCAzNzIwNSwgCi0gICAgMzcyMTIsIDM3MjE3LCAzNzIyMSwgMzcyMjYsIDM3MjM0LCAzNzIzOCwgMzcyNDYsIDM3MjUyLCAzNzI1OCwgMzcyNjMsIAotICAgIDM3MjY3LCAzNzI3MCwgMzcyNzUsIDM3Mjg4LCAzNzMwNCwgMjQ4NDAsIDM3MzIxLCAzNzMzMywgMzczNTAsIDM3MzYyLCAKLSAgICAzNzM3NiwgMjQ4NTcsIDI0ODc2LCAzNzM4OCwgMzc0MDAsIDI3MTksIDM3NDE0LCAzNzQxOSwgMzc0MjQsIDM3NDI5LCAKLSAgICAzNzQzMywgMzc0NDAsIDM3NDUyLCAzNzQ1OSwgMzc0NjgsIDM3NDcxLCAzNzQ4MiwgMzc0OTMsIDM3NDk4LCAzNDUxMiwgCi0gICAgODUyLCAzNzUwMiwgMzc1MDYsIDM3NTEwLCAzNzUxMywgMzc1MTgsIDM3NTIzLCAzNzUyOSwgMzc1MzQsIDM3NTM5LCAKLSAgICAzNzU0NSwgMzc1NTEsIDM3NTU2LCAzNzU2MCwgMzc1NjUsIDM3NTcwLCAzNzU3NSwgMzc1NzksIDM3NTgyLCAzNzU4OCwgCi0gICAgMzc1OTMsIDM3NTk4LCAzNzYwMywgMzc2MDcsIDM3NjEyLCAzNzYxOCwgMzc2MjYsIDI4NDE0LCAzNzYzMSwgMzc2MzYsIAotICAgIDM3NjQzLCAzNzY0OSwgMzc2NTUsIDM3NjYwLCAzNzY2OCwgMjQzNjUsIDM3Njc1LCAzNzY4MCwgMzc2ODUsIDM3NjkwLCAKLSAgICAzNzY5NCwgMzc2OTcsIDM3NzAyLCAzNzcwNiwgMzc3MTAsIDM3NzE3LCAzNzcyMywgMzc3MjksIDM3NzM1LCAzNzc0MiwgCi0gICAgMzc3NDcsIDM3NzUzLCAzNjYyOCwgMzc3NTcsIDM3NzYxLCAzNzc2NiwgMzc3NzksIDM3Nzg0LCAzNzc5MCwgMzc3OTgsIAotICAgIDM3ODA1LCAzNzgxMywgMzc4MjMsIDM3ODI5LCAzNzgzNSwgMzc4NDEsIDM3ODQ1LCAzNzg1NCwgMzc4NjIsIDM3ODY5LCAKLSAgICAzNzg3NCwgMzc4NzksIDExMzM3LCAzNzg4NCwgMzc4OTEsIDM3ODk3LCAzNzkwNywgMzc5MTIsIDM3OTE4LCAzNzkyNiwgCi0gICAgMzc3NSwgMzc5MzMsIDM3OTQwLCAzNzk0NiwgMzc5NTMsIDM3ODEsIDM3OTU3LCAzNzk2MiwgMzc5NzMsIDM3OTgwLCAKLSAgICAzNzk4NiwgMzc5OTUsIDM3OTk5LCA0MjQ0LCAzODAwMiwgMzgwMDksIDM4MDE1LCAzODAyMSwgMzgwMjksIDM4MDM5LCAKLSAgICAzMTMyNiwgMzgwNDYsIDM4MDU0LCAzODA2MCwgMzgwNjUsIDM4MDcxLCAzODA3NiwgMzgwODAsIDI4MDEwLCAzODA4NiwgCi0gICAgMzgwOTMsIDM4MDk5LCAzODEwOCwgMzgxMTUsIDI1NTY1LCAzODEyMSwgMzgxMjYsIDM4MTMwLCAzODEzOCwgMzgxNDYsIAotICAgIDEwMzMwLCA2MTc5LCAzODE1MywgMzgxNTcsIDM4MTU5LCAzODE2MywgMzgxNjgsIDM4MTcwLCAzODE3NSwgMzgxODEsIAotICAgIDM4MTg2LCAzODE5MSwgMzgxOTgsIDM1MDg3LCAzODIwNCwgMzgyMDksIDM4MjEzLCAzODIxOCwgMzgyMjIsIDM4MjMxLCAKLSAgICAzODIzNSwgMzgyNDEsIDM4MjQ4LCAzODI1NCwgMzgyNjEsIDM4MjY2LCAzODI3NSwgMzgyODAsIDM4Mjg0LCAzODI4OSwgCi0gICAgMzgyOTYsIDM4MzA0LCAzODMxMiwgMzgzMTcsIDIzMDQxLCAzODMyMSwgMzgzMjQsIDM4MzI4LCAzODMzMiwgMTE3MjUsIAotICAgIDg3MiwgMzgzMzYsIDM4MzQxLCAzODM0OSwgMzgzNTMsIDM4MzYyLCAzODM2OSwgMzgzNzMsIDM4Mzc3LCAzODM4NSwgCi0gICAgMzgzOTIsIDM4NDAyLCAzODQwNiwgMzg0MTAsIDM4NDE4LCAzODQyNiwgMzg0MzIsIDM4NDM3LCAzODQ0NiwgMTQ1MzAsIAotICAgIDM4NDUyLCAzODQ2MSwgMzg0NjYsIDM4NDczLCAzODQ4MCwgMzg0ODgsIDM4NDk2LCAzODUwNCwgMzg1MDksIDM4NTE2LCAKLSAgICAzODUyMywgMzg1MzAsIDM4NTM3LCAzODU0NCwgMzg1NDksIDM4NTU1LCAzODU3MiwgMzg1ODAsIDM4NTkwLCAzODU5OCwgCi0gICAgMzg2MDUsIDQxNCwgMzg2MDksIDM4NjE1LCAzODYxOSwgMzg2MjQsIDM2MjM1LCAzODYzMCwgMzg2MzMsIDM4NjM3LCAKLSAgICAzODY0OCwgMzg2NTYsIDM3ODYsIDM4NjY0LCAzODY3MCwgMzg2NzYsIDM4Njg2LCAzODY5NSwgMzg3MDUsIDM4NzEyLCAKLSAgICAzODcxOCwgMzg3MjMsIDM3OTIsIDM3OTgsIDM4NzMyLCAzODczOSwgMzg3NDcsIDM4NzUyLCAzODc1NiwgMzg3NjMsIAotICAgIDM4NzcxLCAzODc3OCwgMzg3ODQsIDM4NzkzLCAzODgwMywgMzg4MDksIDM4ODE3LCAzODgyNiwgMzg4MzMsIDM4ODQxLCAKLSAgICAzODg0OCwgMjM3MjgsIDM4ODUyLCAzODg1OSwgMzg4NjUsIDM4ODc1LCAzODg4NCwgMzg4OTIsIDM4OTAzLCAzODkwNywgCi0gICAgMzg5MTcsIDM4OTIzLCAzODkzMCwgMzg5MzgsIDM4OTQ3LCAzODk1NiwgMzg5NjYsIDM4OTc3LCAzODk4NCwgMzg5ODksIAotICAgIDM4OTk2LCAzMDg4LCAzOTAwNCwgMzkwMTAsIDM5MDE1LCAzOTAyMSwgMzkwMjcsIDM5MDMyLCAzOTA0NSwgMzkwNTgsIAotICAgIDM5MDcxLCAzOTA3OCwgMzkwODQsIDM5MDkyLCAzOTEwMCwgMzkxMDUsIDM5MTA5LCAxNDU1LCAzOTExMywgMzkxMTcsIAotICAgIDM5MTIxLCAzOTEyNSwgMzkxMjksIDM5MTMzLCAzOTEzNywgMzkxNDEsIDM5MTQ1LCAzOTE0OSwgMzkxNTMsIDM5MTU3LCAKLSAgICAzOTE2MSwgMzkxNjUsIDM5MTY5LCAzOTE3MywgMzkxNzcsIDM5MTgxLCAzOTE4NSwgMzkxODksIDM5MTkzLCAzOTE5NywgCi0gICAgMzkyMDEsIDM5MjA1LCAzOTIwOSwgMzkyMTMsIDM5MjE3LCAzOTIyMSwgMzkyMjUsIDM5MjI5LCAzOTIzMywgMzkyMzcsIAotICAgIDM5MjQxLCAzOTI0NSwgMzkyNDksIDM5MjUzLCAzOTI1NywgMzkyNjEsIDM5MjY1LCAzOTI2OSwgMzkyNzMsIDM5Mjc3LCAKLSAgICAzOTI4MSwgMzkyODUsIDM5Mjg5LCAzOTI5MywgMzkyOTcsIDM5MzAxLCAzOTMwNSwgMzkzMDksIDM5MzEzLCAzOTMxNywgCi0gICAgMzkzMjEsIDM5MzI1LCAzOTMyOSwgMzkzMzMsIDM5MzM3LCAzOTM0MSwgMzkzNDUsIDM5MzQ5LCAzOTM1MywgMzkzNTcsIAotICAgIDM5MzYxLCAzOTM2NSwgMzkzNjksIDM5MzczLCAzOTM3NywgMzkzODEsIDM5Mzg1LCAzOTM4OSwgMzkzOTMsIDM5Mzk3LCAKLSAgICAzOTQwMSwgMzk0MDUsIDM5NDA5LCAzOTQxMywgMzk0MTcsIDM5NDIxLCAzOTQyNSwgMzk0MjksIDM5NDMzLCAzOTQzNywgCi0gICAgMzk0NDEsIDM5NDQ1LCAzOTQ0OSwgMzk0NTMsIDM5NDU3LCAzOTQ2MSwgMzk0NjUsIDM5NDY5LCAzOTQ3MywgMzk0NzcsIAotICAgIDM5NDgxLCAzOTQ4NSwgMzk0ODksIDM5NDkzLCAzOTQ5NywgMzk1MDEsIDM5NTA1LCAzOTUwOSwgMzk1MTMsIDM5NTE3LCAKLSAgICAzOTUyMSwgMzk1MjUsIDM5NTI5LCAzOTUzMywgMzk1MzcsIDM5NTQxLCAzOTU0NSwgMzk1NDksIDM5NTUzLCAzOTU1NywgCi0gICAgMzk1NjEsIDM5NTY1LCAzOTU2OSwgMzk1NzMsIDM5NTc3LCAzOTU4MSwgMzk1ODUsIDM5NTg5LCAzOTU5MywgMzk1OTcsIAotICAgIDM5NjAxLCAzOTYwNSwgMzk2MDksIDM5NjEzLCAzOTYxNywgMzk2MjEsIDM5NjI1LCAzOTYyOSwgMzk2MzMsIDM5NjM3LCAKLSAgICAzOTY0MSwgMzk2NDUsIDM5NjQ5LCAzOTY1MywgMzk2NTcsIDM5NjYxLCAzOTY2NSwgMzk2NjksIDM5NjczLCAzOTY3NywgCi0gICAgMzk2ODEsIDM5Njg1LCAzOTY4OSwgMzk2OTMsIDM5Njk3LCAzOTcwMSwgMzk3MDUsIDM5NzA5LCAzOTcxMywgMzk3MTcsIAotICAgIDM5NzIxLCAzOTcyNSwgMzk3MzAsIDM5NzM0LCAzOTczOSwgMzk3NDMsIDM5NzQ4LCAzOTc1MiwgMzk3NTcsIDM5NzYxLCAKLSAgICAzOTc2NywgMzk3NzIsIDM5Nzc2LCAzOTc4MSwgMzk3ODUsIDM5NzkwLCAzOTc5NCwgMzk3OTksIDM5ODAzLCAzOTgwOCwgCi0gICAgMzk4MTIsIDM5ODE3LCAzOTgyMSwgMzk4MjYsIDM5ODMwLCAzOTgzNiwgMzk4NDIsIDM5ODQ3LCAzOTg1MSwgMzk4NTYsIAotICAgIDM5ODYwLCAzOTg2NiwgMzk4NzEsIDM5ODc1LCAzOTg4MCwgMzk4ODQsIDM5ODg5LCAzOTg5MywgMzk4OTksIDM5OTA0LCAKLSAgICAzOTkwOCwgMzk5MTMsIDM5OTE3LCAzOTkyMiwgMzk5MjYsIDM5OTMxLCAzOTkzNSwgMzk5NDEsIDM5OTQ2LCAzOTk1MCwgCi0gICAgMzk5NTUsIDM5OTU5LCAzOTk2NSwgMzk5NzAsIDM5OTc0LCAzOTk3OSwgMzk5ODMsIDM5OTg4LCAzOTk5MiwgMzk5OTcsIAotICAgIDQwMDAxLCA0MDAwNiwgNDAwMTAsIDQwMDE2LCA0MDAyMSwgNDAwMjUsIDQwMDMxLCA0MDAzNiwgNDAwNDAsIDQwMDQ2LCAKLSAgICA0MDA1MSwgNDAwNTUsIDQwMDYwLCA0MDA2NCwgNDAwNjksIDQwMDczLCA0MDA3OSwgNDAwODUsIDQwMDkxLCA0MDA5NywgCi0gICAgNDAxMDMsIDQwMTA5LCA0MDExNSwgNDAxMjEsIDQwMTI2LCA0MDEzMCwgNDAxMzUsIDQwMTM5LCA0MDE0NSwgNDAxNTAsIAotICAgIDQwMTU0LCA0MDE1OSwgNDAxNjMsIDQwMTY4LCA0MDE3MiwgNDAxNzcsIDQwMTgxLCA0MDE4NiwgNDAxOTAsIDQwMTk1LCAKLSAgICA0MDE5OSwgNDAyMDQsIDQwMjA4LCA0MDIxNCwgNDAyMTksIDQwMjIzLCA0MDIyOCwgNDAyMzIsIDQwMjM4LCA0MDI0NCwgCi0gICAgNDAyNDksIDExNiwgNTcsIDQwMjUzLCA0MDI1NSwgNDAyNTksIDQwMjYzLCA0MDI2NywgNDAyNzIsIDQwMjc2LCA0MDI4MCwgCi0gICAgMTAyNTEsIDQwMjg1LCA0MDI5MSwgMTc1NiwgNjU5NywgNDAyOTcsIDQwMzAwLCA0MDMwNSwgNDAzMDksIDQwMzE0LCAKLSAgICA0MDMxOCwgNDAzMjIsIDQwMzI3LCAxMTEyMSwgNDAzMzEsIDQwMzM1LCA0MDMzOSwgNTI1LCA0MDM0MywgMTY3ODMsIAotICAgIDQwMzQ4LCA0MDM1MiwgNDAzNTcsIDQwMzYyLCA0MDM2NywgNDAzNzEsIDQwMzc4LCAyODE4NiwgNDAzODQsIDQwMzg3LCAKLSAgICA0MDM5MSwgNDAzOTYsIDQwNDAyLCA0MDQwNiwgNDA0MDksIDQwNDE3LCA0MDQyMywgNDA0MjgsIDQwNDMyLCA0MDQzNSwgCi0gICAgNDA0MzksIDQwNDQ1LCA0MDQ0OSwgNDA0NTMsIDM1ODQsIDM1ODksIDMxNTM3LCA0MDQ1NiwgNDA0NjAsIDQwNDY0LCAKLSAgICA0MDQ2OCwgNDA0NzIsIDQwNDgwLCA0MDQ4NywgNDA0OTEsIDE0NDgwLCA0MDQ5OCwgNDA1MDMsIDQwNTE3LCA0MDUyNCwgCi0gICAgNDA1MzUsIDMzNSwgNDA1NDAsIDQwNTQ0LCA0MDU1MCwgNDA1NjIsIDQwNTY4LCA0MDU3NCwgMzE1NzQsIDQwNTc4LCAKLSAgICA0MDU4NCwgNDA1OTMsIDQwNTk3LCA0MDYwMSwgNDA2MDYsIDQwNjEyLCA0MDYxNywgNDA2MjEsIDQwNjI2LCA0MDYzMCwgCi0gICAgNDA2MzQsIDQwNjQxLCA0MDY0NywgNDA2NTIsIDQwNjY3LCA0MDY4MiwgNDA2OTcsIDQwNzEzLCA0MDczMSwgMTEwNzEsIAotICAgIDQwNzQ1LCA0MDc1MiwgNDA3NTYsIDQwNzU5LCA0MDc2OCwgNDA3NzMsIDQwNzc3LCA0MDc4NSwgMTczMzMsIDQwNzkzLCAKLSAgICA0MDc5NywgNDA4MDcsIDQwODE4LCAzMTUwNywgNDA4MzEsIDQwODM1LCA0MDg0NCwgNDA4NjIsIDQwODgxLCA0MDg4OSwgCi0gICAgMTA1MjUsIDExMjM0LCA0MDg5MywgMjQyNjEsIDQwODk2LCAzMjQ3NSwgNDA5MDEsIDEwNTI0LCA0MDkwNiwgNDA5MTIsIAotICAgIDQwOTE3LCA0MDkyMywgNDA5MjgsIDQwOTM0LCA0MDkzOSwgNDA5NDUsIDQwOTUwLCA0MDk1NiwgNDA5NjIsIDQwOTY4LCAKLSAgICA0MDk3MywgNDA5MjksIDQwOTM1LCA0MDk0MCwgNDA5NDYsIDQwOTUxLCA0MDk1NywgNDA5NjMsIDg1MDQsIDQwODksIAotICAgIDQwOTc3LCA0MDk4NSwgNDA5ODksIDQwOTkyLCA0MDk5NiwgNDEwMDEsIDQxMDA2LCA0MTAxMywgNDEwMTksIDQxMDI1LCAKLSAgICA0MTAzMCwgMTYxNzQsIDQxMDM0LCAyODAyMiwgNDEwMzgsIDQxMDQyLCA0MTA0NiwgNDEwNTIsIDQxMDU2LCAzMDA3NSwgCi0gICAgNDEwNjUsIDk1NDQsIDQxMDY5LCA5OTM3LCA0MTA3MiwgNDEwNzksIDQxMDg1LCA0MTA4OSwgMTMwMDQsIDQxMDk2LCAKLSAgICA0MTEwMiwgNDExMDcsIDQxMTE0LCA0MTEyMSwgNDExMjgsIDMwNzgxLCA4NDEwLCA0MTEzNSwgNDExNDIsIDQxMTQ5LCAKLSAgICA0MTE1NSwgNDExNjAsIDQxMTY3LCA0MTE3OCwgNDExODQsIDQxMTg5LCA0MTE5NCwgNDExOTksIDQxMjAzLCA0MTIwOCwgCi0gICAgNDEyMTUsIDQwOTMwLCA0MTIxOSwgNDEyMjksIDQxMjM4LCA0MTI0OSwgNDEyNTUsIDQxMjYzLCA0MTI3MCwgNDEyNzUsIAotICAgIDQxMjgwLCA0MTI4NSwgNDEyOTAsIDQxMjk1LCA0MTI5OSwgNDEzMDMsIDQxMzEwLCA0MTMxNiwgNDEzMjQsIDIzNTMsIAotICAgIDEwNTAsIDExMTM3LCAxMTE0OSwgMTExNTQsIDExMTYwLCA0MTMzMywgMTExNjUsIDExMTcwLCAxMTE3NiwgNDEzMzgsIAotICAgIDQxMzQ4LCA0MTM1MiwgMTExODEsIDQxMzU3LCAxODQ1MywgNDEzNjAsIDQxMzY1LCA0MTM2OSwgMzc0NjMsIDQxMzgwLCAKLSAgICA0MTM4NSwgNDEzOTIsIDQxMzk5LCA0MTQwMywgNDE0MDYsIDQxNDE0LCAxMTA4NCwgNDE0MjEsIDQxNDI0LCA0MTQzMCwgCi0gICAgNDE0NDAsIDYyMzEsIDQxNDQ5LCA0MTQ1NSwgNDE0NTksIDQxNDY3LCA0MTQ3MSwgNDE0ODEsIDQxNDg3LCA0MTQ5MiwgCi0gICAgNDE1MDMsIDQxNTEyLCA0MTUyMSwgNDE1MzAsIDQxNTM5LCA0MTU0OCwgNDE1NTcsIDQxNTY2LCA0MTU3MiwgNDE1NzgsIAotICAgIDQxNTgzLCA0MTU4OSwgNDE1OTUsIDQxNjAxLCA0MTYwNiwgNDE2MDksIDQxNjE2LCA0MTYyMiwgNDE2MjYsIDQxNjMxLCAKLSAgICA0MTYzOCwgNDE2NDUsIDQxNjQ5LCA0MTY1MiwgNDE2NjIsIDQxNjc1LCA0MTY4NCwgNDE2OTMsIDQxNzA0LCA0MTcxNywgCi0gICAgNDE3MjksIDQxNzQwLCA0MTc0OSwgNDE3NjAsIDQxNzY1LCA0MTc3NCwgNDE3NzksIDExMTg2LCA0MTc4NSwgNDE3OTIsIAotICAgIDQxODAwLCA0MTgwNSwgNDE4MDksIDQxODE2LCA0MTgyMywgNDA0MSwgMjAsIDQxODI3LCA0MTgzMiwgMTgzMDIsIDQxODM2LCAKLSAgICA0MTgzOSwgNDE4NDIsIDMwMjU1LCA0MTg0NiwgMzA3OTAsIDQxODU0LCA0MTg1OCwgNDE4NjIsIDQxODY1LCA0MTg3MSwgCi0gICAgNDE4NzcsIDMzNTI3LCA0MTg4MiwgNDE4OTAsIDQxODk2LCA0MTkwMywgMzAyMzgsIDQxOTA3LCAzMDQ0MSwgNDE5MTEsIAotICAgIDQxOTIwLCA0MTkyNCwgNDE5MzIsIDQxOTM4LCA0MTk0NCwgNDE5NDksIDQxOTUzLCAzMDgwOSwgNDE5NTksIDQxOTYyLCAKLSAgICA0MTk3MCwgNDE5NzgsIDQzNzksIDQxOTg0LCA0MTk4OCwgNDE5OTMsIDQyMDAwLCA0MjAwNiwgNDIwMTEsIDQyMDE2LCAKLSAgICA0MjAyMCwgNDIwMjYsIDQyMDMxLCA0MjAzNywgNDI5NywgOTQ0LCA0MjA0NCwgNDIwNDgsIDQyMDUxLCAxNjY2NCwgNDIwNjMsIAotICAgIDQyMDcxLCA0MjA3OSwgNDIwODcsIDQyMDk1LCA0MjEwMiwgNDIxMTAsIDQyMTE4LCA0MjEyNSwgNDIxMzMsIDQyMTQxLCAKLSAgICA0MjE0OSwgNDIxNTcsIDQyMTY1LCA0MjE3MywgNDIxODEsIDQyMTg5LCA0MjE5NywgNDIyMDUsIDQyMjEzLCA0MjIyMCwgCi0gICAgNDIyMjgsIDQyMjM2LCA0MjI0NCwgNDIyNTIsIDQyMjYwLCA0MjI2OCwgNDIyNzYsIDQyMjg0LCA0MjI5MiwgNDIzMDAsIAotICAgIDQyMzA4LCA0MjMxNiwgNDIzMjQsIDQyMzMyLCA0MjM0MCwgNDIzNDgsIDQyMzU2LCA0MjM2NCwgNDIzNzIsIDQyMzc5LCAKLSAgICA0MjM4NywgNDIzOTQsIDQyNDAyLCA0MjQxMCwgNDI0MTgsIDQyNDI2LCA0MjQzNCwgNDI0NDIsIDQyNDUwLCA0MjQ1OCwgCi0gICAgNDI0NjksIDIzNzY0LCA0MjQ3NCwgNDI0NzcsIDQyNDg0LCA0MjQ4OCwgNDI0OTQsIDQyNDk4LCA0MjUwNCwgNDI1MDksIAotICAgIDQyNTE1LCA0MjUyMCwgNDI1MjUsIDQyNTI5LCA0MjUzMywgNDI1MzgsIDQyNTQzLCA0MjU1MywgNDI1NTksIDQyNTcyLCAKLSAgICA0MjU3OCwgNDI1ODQsIDQyNTkwLCA0MjU5NywgNDI2MDIsIDQyNjA4LCA0MjYxMywgMTgxOTgsIDE0NTgsIDgzMSwgNDI2MTgsIAotICAgIDQyNjIxLCA0MjYyNCwgNDI2MjcsIDMzNjExLCAzMzYxNywgNDI2MzAsIDMzNjIzLCAzMzYzNiwgMzM2NDIsIDMzNjQ4LCAKLSAgICA0MjYzNiwgMzM2NTQsIDMzNjYwLCA0MjY0MiwgNDI2NDgsIDI2LCA0MjY1NiwgNDI2NjMsIDQyNjY3LCA0MjY3MSwgNDI2NzksIAotICAgIDM0NDAxLCA0MjY4MywgNDI2ODcsIDQyNjk0LCA0MjY5OSwgNDI3MDMsIDQyNzA4LCA0MjcxNCwgNDI3MTksIDQyNzI1LCAKLSAgICA0MjczMCwgNDI3MzQsIDQyNzM4LCA0Mjc0MiwgNDI3NDcsIDQyNzUxLCA0Mjc1NiwgNDI3NjAsIDQyNzY0LCA0Mjc3MSwgCi0gICAgNDI3NzYsIDQyNzgwLCA0Mjc4NCwgNDI3ODksIDQyNzkzLCA0Mjc5OCwgNDI4MDIsIDQyODA2LCA0MjgxMSwgNDI4MTcsIAotICAgIDE2OTI0LCAxNjkyOSwgNDI4MjIsIDQyODI2LCA0MjgyOSwgNDI4MzMsIDQyODM3LCAyMjg1MiwgNDI4NDIsIDQyODQ2LCAKLSAgICA0Mjg1MiwgNDI4NTksIDQyODY1LCA0Mjg3MCwgNDI4ODAsIDQyODg1LCA0Mjg5MywgNDI4OTcsIDQyOTAwLCAzNDQxNiwgCi0gICAgNDI5MDQsIDQzNTYsIDQyOTA5LCA0MjkxNCwgNDI5MTgsIDQyOTIzLCA0MjkyNywgNDI5MzIsIDE0NTQ4LCA0Mjk0MywgCi0gICAgNDI5NDcsIDQyOTUwLCA0Mjk1NCwgNDI5NTksIDQyOTYzLCA0Mjk2OCwgNDI5NzMsIDQyOTc3LCA0Mjk4MSwgNDI5ODUsIAotICAgIDQyOTg4LCA0Mjk5MiwgODUyMywgMTQ1NjQsIDQyOTk1LCA0Mjk5OCwgNDMwMDQsIDQzMDA5LCA0MzAxNSwgNDMwMjAsIAotICAgIDQzMDI2LCA0MzAzMSwgNDMwMzcsIDQzMDQyLCA0MzA0OCwgNDMwNTQsIDQzMDYwLCA0MzA2NSwgNDMwNjksIDQzMDczLCAKLSAgICA0MzA4MiwgNDMwOTgsIDQzMTE0LCA0MzEyNCwgMzAxNDUsIDQzMTMxLCA0MzEzNSwgNDMxNDAsIDQzMTQ1LCA0MzE0OSwgCi0gICAgNDMxNTMsIDM4OTUxLCA0MzE1OSwgNDMxNjQsIDQzMTY4LCA0MzE3NSwgNDMxODAsIDQzMTg1LCA0MzE4OSwgNDMxOTMsIAotICAgIDQzMTk5LCAyOTA5MywgNDMyMDMsIDIzMTM2LCA0MzIwOCwgNDMyMTUsIDQzMjIzLCA0MzIyOSwgNDMyMzYsIDQzMjQ0LCAKLSAgICA0MzI1MCwgNDMyNTQsIDQzMjU5LCA0MzI2NSwgNDMyNzMsIDQzMjc4LCA0MzI4MiwgNDMyOTEsIDEwMjMyLCA0MzI5OSwgCi0gICAgNDMzMDMsIDQzMzExLCA0MzMxOCwgNDMzMjMsIDQzMzI4LCA0MzMzMywgNDMzMzcsIDQzMzQwLCA0MzM0NCwgNDMzNDcsIAotICAgIDQzMzUxLCA0MzM1OCwgNDMzNjMsIDQzMzY3LCA0MzM3MywgMjg0OTIsIDMzNjc0LCA0MzM3NywgNDMzODYsIDQzMzk0LCAKLSAgICA0MzQwMCwgNDM0MDcsIDQzNDEzLCA0MzQxOSwgNDM0MjQsIDQzNDI3LCA0MzQyOSwgNDM0MzYsIDQzNDQzLCA0MzQ0OSwgCi0gICAgNDM0NTMsIDQzNDU2LCA0MzQ2MCwgNDM0NjQsIDQzNDY4LCA0MzQ3MywgNDM0NzcsIDQzNDgxLCA0MzQ4NCwgNDM0ODgsIAotICAgIDQzNTAyLCAyNDkwNiwgNDM1MjEsIDQzNTM0LCA0MzU0NywgNDM1NjAsIDI0OTI0LCA0MzU3NSwgMTE0MjIsIDQzNTkwLCAKLSAgICA0MzU5NiwgNDM2MDAsIDQzNjA0LCA0MzYwOCwgNDM2MTIsIDQzNjE5LCA0MzYyNCwgNDM2MjgsIDQzNjM1LCA0MzY0MSwgCi0gICAgNDM2NDYsIDQzNjUyLCA0MzY2MiwgNDM2NzQsIDQzNjg1LCA0MzY5MCwgNDM2OTcsIDQzNzAxLCA0MzcwNSwgNDM3MDgsIAotICAgIDE3MzQzLCAzODU1LCA0MzcxNiwgMTY5NTEsIDQzNzI5LCA0MzczNiwgNDM3NDMsIDQzNzQ3LCA0Mzc1MSwgNDM3NTYsIAotICAgIDQzNzYyLCA0Mzc2NywgNDM3NzMsIDQzNzc3LCA0Mzc4MSwgNDM3ODQsIDQzNzg5LCA0Mzc5MywgNDM3OTgsIDgwODIsIAotICAgIDE2OTYyLCA0MzgwMywgNDM4MDcsIDQzODEzLCA0MzgyMiwgNDM4MjcsIDQzODM2LCA0Mzg0MywgMzg3OTksIDQzODQ5LCAKLSAgICA0Mzg1NCwgNDM4NTgsIDQzODYzLCA0Mzg3MCwgNDM4NzYsIDQzODgwLCA0Mzg4MywgNDM4ODcsIDQzODkyLCAxNTg2NCwgCi0gICAgNDM4OTksIDQzOTA2LCA0MzkxMCwgNDM5MTMsIDQzOTE4LCA0MzkyMywgNDM5MjksIDQzOTM0LCA0MzkzOSwgNDM5NDMsIAotICAgIDQzOTQ4LCA0Mzk1OCwgNDM5NjMsIDQzOTY5LCA0Mzk3NCwgNDM5ODAsIDQzOTg1LCA0Mzk5MSwgNDQwMDEsIDQ0MDA2LCAKLSAgICA0NDAxMSwgNDQwMTUsIDQ0MDIwLCA3NTU4LCA3NTcwLCA0NDAyNSwgNDQwMjgsIDQ0MDM1LCA0NDA0MSwgNDQwNTAsIDk0NzcsIAotICAgIDM2NzYwLCA0NDA1OCwgNDQwNjIsIDQ0MDY2LCAzNDQ2NCwgNDQwNzQsIDQ0MDg1LCA0NDA5MywgMzg5OTksIDQ0MTAwLCAKLSAgICA0NDEwNSwgNDQxMTAsIDQ0MTIxLCA0NDEyOCwgNDQxMzksIDM0NDg4LCAyMzE0NywgNDQxNDcsIDkwNywgNDQxNTIsIAotICAgIDE0OTEzLCA0NDE1OCwgMzAyMjksIDQ0MTY0LCA0NDE2OSwgNDQxNzksIDQ0MTg4LCA0NDE5NSwgNDQyMDEsIDQ0MjA1LCAKLSAgICA0NDIwOCwgNDQyMTUsIDQ0MjIxLCA0NDIyOCwgNDQyMzQsIDQ0MjQ0LCA0NDI1MiwgNDQyNTgsIDQ0MjY0LCA0NDI2OSwgCi0gICAgNDQyNzMsIDQ0MjgwLCA0NDI4NSwgNDQyOTEsIDQ0Mjk4LCA0NDMwNCwgNDM0NjksIDQ0MzA5LCA0NDMxMywgNTU4LCAKLSAgICAxNTAyOSwgNDQzMTksIDQ0MzI0LCA0NDMyNywgNDQzMzMsIDQ0MzQxLCAxMzgwLCA0NDM0NiwgNDQzNTAsIDQ0MzU1LCAKLSAgICA0NDM2MCwgNDQzNjUsIDQ0MzcyLCA0NDM3NiwgNDQzODEsIDQ0Mzg3LCA0NDM5MSwgMzM2ODQsIDQ0Mzk2LCA0NDQwMSwgCi0gICAgNDQ0MTAsIDQ0NDE3LCA0NDQyNywgNDQ0MzMsIDMwMjczLCA0NDQ1MCwgNDQ0NTksIDQ0NDY3LCA0NDQ3MywgNDQ0NzgsIAotICAgIDQ0NDg1LCA0NDQ5MSwgNDQ0OTksIDQ0NTA4LCA0NDUxNiwgNDQ1MjAsIDQ0NTI1LCA0NDUzMywgMzEyNTEsIDM0NDk3LCAKLSAgICA0NDUzOSwgNDQ1NTgsIDE3MjU3LCA0NDU3MiwgNDQ1ODgsIDQ0NjAyLCA0NDYwOCwgNDQ2MTMsIDQ0NjE4LCA0NDYyMywgCi0gICAgNDQ2MjksIDM0NTAzLCA0NDYzNCwgNDQ2MzcsIDQ0NjQ0LCA0NDY0OSwgNDQ2NTMsIDQwNCwgMjk5NSwgNDQ2NjAsIDQ0NjY1LCAKLSAgICA0NDY3MCwgMjk0NTEsIDQ0NDg4LCA0NDY3NCwgNDQ2NzksIDQ0Njg3LCA0NDY5MSwgNDQ2OTQsIDQ0Njk5LCA0NDcwNSwgCi0gICAgNDQ3MTEsIDQ0NzE2LCA0NDcyMCwgMzAzMjgsIDQ0NzIzLCA0NDcyOCwgNDQ3MzIsIDQ0NzM1LCA0NDc0MCwgNDQ3NDQsIAotICAgIDQ0NzQ5LCA0NDc1NCwgNDQ3NTgsIDQ0NzYzLCA0NDc2NywgNDQ3NzEsIDQ0Nzc1LCAyMjg0OCwgMjI4NTksIDQ0NzgwLCAKLSAgICA0NDc4NSwgNDQ3OTEsIDQ0Nzk2LCA0NDgwMiwgMjkwNTAsIDQ0ODA3LCA0NDgxMSwgMjI5NDUsIDE3NTQ5LCA0NDgxNCwgCi0gICAgNDQ4MTksIDQ0ODI0LCA0NDgyOSwgNDQ4MzQsIDQ0ODM5LCA0NDg0NCwgNDQ4NDksIDQ3NCwgNjgsIDMzNjk3LCAzMzcwMiwgCi0gICAgMzM3MDcsIDMzNzEzLCAzMzcxOCwgMzM3MjMsIDQ0ODU0LCAzMzcyNywgNDQ4NTgsIDQ0ODYyLCA0NDg2NiwgMzM3MzIsIAotICAgIDMzNzM4LCA0NDg4MCwgMzM3NDksIDMzNzU0LCA0NDg4OCwgNDQ4OTMsIDMzNzYwLCA0NDg5OCwgNDQ5MDMsIDQ0OTA4LCAKLSAgICA0NDkxMywgNDQ5MTksIDQ0OTI1LCA0NDkzMSwgMzM3NzcsIDQ0OTQ0LCA0NDk1MywgNDQ5NTksIDMzNzgxLCA0NDk2MywgCi0gICAgMzM3ODYsIDQ0OTY4LCAzMzc5MSwgMzM3OTYsIDQ0OTcxLCA0NDk3NiwgNDQ5ODAsIDQ0OTg2LCAzMzMzMiwgNDQ5OTMsIAotICAgIDE0Nzk0LCA0NTAwMCwgNDUwMDUsIDMzODAxLCA0NTAwOSwgNDUwMTQsIDQ1MDE5LCA0NTAyNCwgNDUwMjgsIDQ1MDMzLCAKLSAgICA0NTAzOCwgNDUwNDQsIDQ1MDQ5LCA0NTA1NCwgNDUwNjAsIDQ1MDY2LCA0NTA3MSwgNDUwNzUsIDQ1MDgwLCA0NTA4NSwgCi0gICAgNDUwOTAsIDQ1MDk0LCA0NTA5OSwgNDUxMDQsIDQ1MTA5LCA0NTExNSwgNDUxMjEsIDQ1MTI3LCA0NTEzMiwgNDUxMzYsIAotICAgIDQ1MTQxLCA0NTE0NSwgMzM4MDUsIDMzODEwLCAzMzgxNSwgNDUxNDksIDQ1MTUzLCA0NTE1NywgMzM4MjAsIDMzODI2LCAKLSAgICAzMzgzMiwgMzM4NDQsIDQ1MTY5LCAyODA1OSwgNDUxNzMsIDQ1MTc4LCA0NTE4MiwgNDUxODcsIDQ1MTk0LCA0NTE5OSwgCi0gICAgNDUyMDQsIDQ1MjA5LCA0NTIxMywgNDUyMTcsIDQ1MjI3LCA0NTIzMiwgNDUyMzcsIDQ1MjQxLCA0NTI0NSwgNDUyNDgsIAotICAgIDQ1MjU2LCAzMzg5MiwgNDUyNjEsIDE0NjUsIDQ1MjY3LCA0NTI3MiwgNDUyNzgsIDQ1Mjg2LCA0NTI5MCwgNDUyOTksIAotICAgIDQ1MzAzLCA0NTMwNywgNDUzMTUsIDQ1MzIxLCA0NTMyOSwgNDUzNDUsIDQ1MzQ5LCA0NTM1MywgNDUzNTcsIDQ1MzYyLCAKLSAgICA0NTM2OCwgNDUzODMsIDMzOTI5LCAxNzY0LCAxMzE5OCwgNDUzODcsIDEzNTksIDEzNzQsIDQ1Mzk5LCA0NTQwNywgNDU0MTQsIAotICAgIDQ1NDE5LCA0NTQyNiwgNDU0MzEsIDk5MjIsIDExMzksIDI1NDQsIDExMjEzLCA0NTQzOCwgOTgyMCwgNDU0NDMsIDQ1NDQ2LCAKLSAgICA0NTQ1NSwgMTI2NywgNDU0NjAsIDQzNjI1LCA0NTQ2NywgNDU0NzYsIDQ1NDgxLCA0NTQ4NSwgNDU0OTMsIDI0MzE3LCAKLSAgICAyNTk2LCA0NTUwMCwgMTE2NzgsIDQ1NTEwLCA0NTUxNiwgMjM3MSwgMjM4MSwgNDU1MjUsIDQ1NTM0LCA0NTU0NCwgNDU1NTUsIAotICAgIDMzNzYsIDM3MDk5LCA0NTU2MCwgMTEyNzcsIDQwMTksIDE4MjM2LCAxMjcyLCA0NTU2NCwgNDU1NzIsIDQ1NTc5LCA0NTU4NCwgCi0gICAgNDU1ODgsIDQ1NTkyLCAyNTc5MiwgNDM4OTQsIDExMzA0LCA0NTYwMCwgNDU2MDksIDQ1NjE4LCA0NTYyNiwgNDU2MzMsIAotICAgIDQ1NjQ0LCA0NTY0OSwgNDU2NjIsIDQ1Njc1LCA0NTY4NywgNDU2OTksIDQ1NzExLCA0NTcyMiwgNDU3MzUsIDQ1NzQ2LCAKLSAgICA0NTc1NywgNDU3NjcsIDQ1Nzc1LCA0NTc4MywgNDU3OTUsIDQ1ODA3LCA0NTgxOCwgNDU4MjcsIDQ1ODM1LCA0NTg0MiwgCi0gICAgNDU4NTQsIDQ1ODYxLCA0NTg2NywgNDU4NzYsIDQ1ODgzLCA0NTg5NiwgNDU5MDEsIDQ1OTExLCA0NTkxNiwgNDU5MjIsIAotICAgIDQ1OTI3LCA0MTA4NiwgNDU5MzEsIDQ1OTM4LCA0NTk0MiwgNDU5NDksIDQ1OTU3LCA0NTk2NCwgMjU1NywgNDU5NzEsIAotICAgIDQ1OTgyLCA0NTk5MiwgNDYwMDEsIDQ2MDA5LCA0NjAxOSwgNDYwMjcsIDQ2MDM3LCA0NjA0NiwgNDYwNTEsIDQ2MDU3LCAKLSAgICA0NjA2MywgMzg5OSwgNDYwNzQsIDQ2MDg0LCA0NjA5MywgNDYxMDIsIDQ2MTEwLCA0NjEyMCwgNDYxMjgsIDQ2MTM3LCAKLSAgICA0NjE0MiwgNDYxNDcsIDQ2MTUyLCAxNjk0LCA0NywgNDYxNjAsIDQ2MTY4LCA0NjE3OSwgNDYxOTAsIDE3ODc1LCA0NjIwMCwgCi0gICAgNDYyMDQsIDQ2MjExLCA0NjIxNywgNDYyMjIsIDQ2MjI2LCA0NjIzNywgNDYyNDcsIDQ2MjU2LCA0NjI2NywgMTgyNzUsIAotICAgIDE4MjgwLCA0NjI3MiwgNDYyODEsIDQ2Mjg2LCA0NjI5NiwgNDYzMDEsIDQ2MzA5LCA0NjMxNywgNDYzMjQsIDQ2MzMwLCAKLSAgICAxNjU2LCAyNzcsIDQ2MzM0LCA0NjM0MCwgNDYzNDUsIDQ2MzQ4LCAyMTQzLCA0Mzc0OCwgNDYzNTYsIDQ2MzYwLCA0NjM2MywgCi0gICAgMTUxMCwgNDYzNjksIDE1MjE0LCAxMjc3LCA0NjM3NCwgNDYzODcsIDQ2NDAxLCAyNjgyLCA0NjQxOSwgNDY0MzEsIDQ2NDQzLCAKLSAgICAyNjk2LCAyNzEzLCA0NjQ1NywgNDY0NzAsIDI3MjgsIDQ2NDg0LCA0NjQ5NiwgMjc0MywgNDY1MTAsIDEyODMsIDEyODksIAotICAgIDEyOTUsIDExNTg0LCA0NjUxNSwgNDY1MjAsIDQ2NTI1LCA0NjUyOSwgNDY1NDQsIDQ2NTU5LCA0NjU3NCwgNDY1ODksIAotICAgIDQ2NjA0LCA0NjYxOSwgNDY2MzQsIDQ2NjQ5LCA0NjY2NCwgNDY2NzksIDQ2Njk0LCA0NjcwOSwgNDY3MjQsIDQ2NzM5LCAKLSAgICA0Njc1NCwgNDY3NjksIDQ2Nzg0LCA0Njc5OSwgNDY4MTQsIDQ2ODI5LCA0Njg0NCwgNDY4NTksIDQ2ODc0LCA0Njg4OSwgCi0gICAgNDY5MDQsIDQ2OTE5LCA0NjkzNCwgNDY5NDksIDQ2OTY0LCA0Njk3OSwgNDY5OTQsIDQ3MDA5LCA0NzAyNCwgNDcwMzksIAotICAgIDQ3MDU0LCA0NzA2OSwgNDcwODQsIDQ3MDk5LCA0NzExNCwgNDcxMjksIDQ3MTQ0LCA0NzE1OSwgNDcxNzQsIDQ3MTg5LCAKLSAgICA0NzIwNCwgNDcyMTksIDQ3MjM0LCA0NzI0OSwgNDcyNjQsIDQ3Mjc5LCA0NzI5NCwgNDczMDksIDQ3MzI0LCA0NzMzOSwgCi0gICAgNDczNTQsIDQ3MzY5LCA0NzM4NCwgNDczOTksIDQ3NDE0LCA0NzQyOSwgNDc0NDQsIDQ3NDU5LCA0NzQ3NCwgNDc0ODksIAotICAgIDQ3NTA0LCA0NzUxOSwgNDc1MzQsIDQ3NTQ5LCA0NzU2NCwgNDc1NzksIDQ3NTk0LCA0NzYwOSwgNDc2MjQsIDQ3NjM5LCAKLSAgICA0NzY1NCwgNDc2NjksIDQ3Njg0LCA0NzY5OSwgNDc3MTQsIDQ3NzI5LCA0Nzc0NCwgNDc3NTksIDQ3Nzc0LCA0Nzc4OSwgCi0gICAgNDc4MDQsIDQ3ODE5LCA0NzgzNCwgNDc4NDksIDQ3ODY0LCA0Nzg3OSwgNDc4OTQsIDQ3OTA5LCA0NzkyNCwgNDc5MzksIAotICAgIDQ3OTU0LCA0Nzk2OSwgNDc5ODQsIDQ3OTk5LCA0ODAxNCwgNDgwMjksIDQ4MDQ0LCA0ODA1OSwgNDgwNzQsIDQ4MDg5LCAKLSAgICA0ODEwNCwgNDgxMTksIDQ4MTM0LCA0ODE0OSwgNDgxNjQsIDQ4MTc5LCA0ODE5NCwgNDgyMDksIDQ4MjI0LCA0ODIzOSwgCi0gICAgNDgyNTQsIDQ4MjY5LCA0ODI4NCwgNDgyOTksIDQ4MzE0LCA0ODMyOSwgNDgzNDQsIDQ4MzU5LCA0ODM3NCwgNDgzODksIAotICAgIDQ4NDA0LCA0ODQxOSwgNDg0MzQsIDQ4NDQ5LCA0ODQ2NCwgNDg0NzksIDQ4NDk0LCA0ODUwOSwgNDg1MjQsIDQ4NTM5LCAKLSAgICA0ODU1NCwgNDg1NjksIDQ4NTg0LCA0ODU5OSwgNDg2MTQsIDQ4NjI5LCA0ODY0NCwgNDg2NTksIDQ4Njc0LCA0ODY4OSwgCi0gICAgNDg3MDQsIDQ4NzE5LCA0ODczNCwgNDg3NDksIDQ4NzY0LCA0ODc3OSwgNDg3OTQsIDQ4ODA5LCA0ODgyNCwgNDg4MzksIAotICAgIDQ4ODU0LCA0ODg2OSwgNDg4ODQsIDQ4ODk5LCA0ODkxNCwgNDg5MjksIDQ4OTQ0LCA0ODk1OSwgNDg5NzQsIDQ4OTg5LCAKLSAgICA0OTAwNCwgNDkwMTksIDQ5MDM0LCA0OTA0OSwgNDkwNjQsIDQ5MDc5LCA0OTA5NCwgNDkxMDksIDQ5MTI0LCA0OTEzOSwgCi0gICAgNDkxNTQsIDQ5MTY5LCA0OTE4NCwgNDkxOTksIDQ5MjE0LCA0OTIyOSwgNDkyNDQsIDQ5MjU5LCA0OTI3NCwgNDkyODksIAotICAgIDQ5MzA0LCA0OTMxOSwgNDkzMzQsIDQ5MzQ5LCA0OTM2NCwgNDkzNzksIDQ5Mzk0LCA0OTQwOSwgNDk0MjQsIDQ5NDM5LCAKLSAgICA0OTQ1NCwgNDk0NjksIDQ5NDg0LCA0OTQ5OSwgNDk1MTQsIDQ5NTI5LCA0OTU0NCwgNDk1NTksIDQ5NTc0LCA0OTU4OSwgCi0gICAgNDk2MDQsIDQ5NjE5LCA0OTYzNCwgNDk2NDksIDQ5NjY0LCA0OTY3OSwgNDk2OTQsIDQ5NzA5LCA0OTcyNCwgNDk3MzksIAotICAgIDQ5NzU0LCA0OTc2OSwgNDk3ODQsIDQ5Nzk5LCA0OTgxNCwgNDk4MjksIDQ5ODQ0LCA0OTg1OSwgNDk4NzQsIDQ5ODg5LCAKLSAgICA0OTkwNCwgNDk5MTksIDQ5OTM0LCA0OTk0OSwgNDk5NjQsIDQ5OTc5LCA0OTk5NCwgNTAwMDksIDUwMDI0LCA1MDAzOSwgCi0gICAgNTAwNTQsIDUwMDY5LCA1MDA4NCwgNTAwOTksIDUwMTE0LCA1MDEyOSwgNTAxNDQsIDUwMTU5LCA1MDE3NCwgNTAxODksIAotICAgIDUwMjA0LCA1MDIxOSwgNTAyMzQsIDUwMjQ5LCA1MDI2NCwgNTAyNzksIDUwMjk0LCA1MDMwOSwgNTAzMjQsIDUwMzM5LCAKLSAgICA1MDM1NCwgNTAzNjksIDUwMzg0LCA1MDM5OSwgNTA0MTQsIDUwNDI5LCA1MDQ0NCwgNTA0NTksIDUwNDc0LCA1MDQ4OSwgCi0gICAgNTA1MDQsIDUwNTE5LCA1MDUzNCwgNTA1NDksIDUwNTY0LCA1MDU3OSwgNTA1OTQsIDUwNjA5LCA1MDYyNCwgNTA2MzksIAotICAgIDUwNjU0LCA1MDY2OSwgNTA2ODQsIDUwNjk5LCA1MDcxNCwgNTA3MjksIDUwNzQ0LCA1MDc1OSwgNTA3NzQsIDUwNzg5LCAKLSAgICA1MDgwNCwgNTA4MTksIDUwODM0LCA1MDg0OSwgNTA4NjQsIDUwODc5LCA1MDg5NCwgNTA5MDksIDUwOTI0LCA1MDkzOSwgCi0gICAgNTA5NTQsIDUwOTY5LCA1MDk4NCwgNTA5OTksIDUxMDE0LCA1MTAyOSwgNTEwNDQsIDUxMDU5LCA1MTA3NCwgNTEwODksIAotICAgIDUxMTA0LCA1MTExOSwgNTExMzQsIDUxMTQ5LCA1MTE2NCwgNTExNzksIDUxMTk0LCA1MTIwOSwgNTEyMjQsIDUxMjM5LCAKLSAgICA1MTI1NCwgNTEyNjksIDUxMjg0LCA1MTI5OSwgNTEzMTQsIDUxMzI5LCA1MTM0NCwgNTEzNTksIDUxMzc0LCA1MTM4OSwgCi0gICAgNTE0MDQsIDUxNDE5LCA1MTQzNCwgNTE0NDksIDUxNDY0LCA1MTQ3OSwgNTE0OTQsIDUxNTA5LCA1MTUyNCwgNTE1MzksIAotICAgIDUxNTU0LCA1MTU2OSwgNTE1ODQsIDUxNTk5LCA1MTYxNCwgNTE2MjksIDUxNjQ0LCA1MTY1OSwgNTE2NzQsIDUxNjg5LCAKLSAgICA1MTcwNCwgNTE3MTksIDUxNzM0LCA1MTc0OSwgNTE3NjQsIDUxNzc5LCA1MTc5NCwgNTE4MDksIDUxODI0LCA1MTgzOSwgCi0gICAgNTE4NTQsIDUxODY5LCA1MTg4NCwgNTE4OTksIDUxOTE0LCA1MTkyOSwgNTE5NDQsIDUxOTU5LCA1MTk3NCwgNTE5ODksIAotICAgIDUyMDA0LCA1MjAxOSwgNTIwMzQsIDUyMDQ5LCA1MjA2NCwgNTIwNzksIDUyMDk0LCA1MjEwOSwgNTIxMjQsIDUyMTM5LCAKLSAgICA1MjE1NCwgNTIxNjksIDUyMTg0LCA1MjE5OSwgNTIyMTQsIDUyMjI5LCA1MjI0NCwgNTIyNTksIDUyMjc0LCA1MjI4OSwgCi0gICAgNTIzMDQsIDUyMzE5LCA1MjMzNCwgNTIzNDksIDUyMzY0LCA1MjM3OSwgNTIzOTQsIDUyNDA5LCA1MjQyNCwgNTI0MzksIAotICAgIDUyNDU0LCA1MjQ2OSwgNTI0ODQsIDUyNDk5LCA1MjUxNCwgNTI1MjksIDUyNTQ0LCA1MjU1OSwgNTI1NzQsIDUyNTg5LCAKLSAgICA1MjYwNCwgNTI2MTksIDUyNjM0LCA1MjY0OSwgNTI2NjQsIDUyNjc5LCA1MjY5NCwgNTI3MDksIDUyNzI0LCA1MjczOSwgCi0gICAgNTI3NTQsIDUyNzY5LCA1Mjc4NCwgNTI3OTksIDUyODE0LCA1MjgyOSwgNTI4NDQsIDUyODU5LCA1Mjg3NCwgNTI4ODksIAotICAgIDUyOTA0LCA1MjkxOSwgNTI5MzQsIDUyOTQ5LCA1Mjk2NCwgNTI5NzksIDUyOTk0LCA1MzAwOSwgNTMwMjQsIDUzMDM5LCAKLSAgICA1MzA1NCwgNTMwNjksIDUzMDg0LCA1MzA5OSwgNTMxMTQsIDUzMTI5LCA1MzE0NCwgNTMxNTksIDUzMTc0LCA1MzE4OSwgCi0gICAgNTMyMDQsIDUzMjE5LCA1MzIzNCwgNTMyNDksIDUzMjY0LCA1MzI3OSwgNTMyOTQsIDUzMzA5LCA1MzMyNCwgNTMzMzksIAotICAgIDUzMzU0LCA1MzM2OSwgNTMzODQsIDUzMzk5LCA1MzQxNCwgNTM0MjksIDUzNDQ0LCA1MzQ1OSwgNTM0NzQsIDUzNDg5LCAKLSAgICA1MzUwNCwgNTM1MTksIDUzNTM0LCA1MzU0OSwgNTM1NjQsIDUzNTc5LCA1MzU5NCwgNTM2MDksIDUzNjI0LCA1MzYzOSwgCi0gICAgNTM2NTQsIDUzNjY5LCA1MzY4NCwgNTM2OTksIDUzNzE0LCA1MzcyOSwgNTM3NDQsIDUzNzU5LCA1Mzc3NCwgNTM3ODksIAotICAgIDUzODA0LCA1MzgxOSwgNTM4MzQsIDUzODQ5LCA1Mzg2NCwgNTM4NzksIDUzODk0LCA1MzkwOSwgNTM5MjQsIDUzOTM5LCAKLSAgICA1Mzk1NCwgNTM5NjksIDUzOTg0LCA1Mzk5OSwgNTQwMTQsIDU0MDI5LCA1NDA0NCwgNTQwNTksIDU0MDc0LCA1NDA4OSwgCi0gICAgNTQxMDQsIDU0MTE5LCA1NDEzNCwgNTQxNDksIDU0MTY0LCA1NDE3OSwgNTQxOTQsIDU0MjA5LCA1NDIyNCwgNTQyMzksIAotICAgIDU0MjU0LCA1NDI2OSwgNTQyODQsIDU0Mjk5LCA1NDMxNCwgNTQzMjksIDU0MzQ1LCA1NDM2MSwgNTQzNzcsIDU0MzkzLCAKLSAgICA1NDQwOSwgNTQ0MjUsIDU0NDQxLCA1NDQ1NywgNTQ0NzMsIDU0NDg5LCA1NDUwNSwgNTQ1MjEsIDU0NTM3LCA1NDU1MywgCi0gICAgNTQ1NjksIDU0NTg1LCA1NDYwMSwgNTQ2MTcsIDU0NjMzLCA1NDY0OSwgNTQ2NjUsIDU0NjgxLCA1NDY5NywgNTQ3MTMsIAotICAgIDU0NzI5LCA1NDc0NSwgNTQ3NjEsIDU0Nzc3LCA1NDc5MywgNTQ4MDksIDU0ODI1LCA1NDg0MSwgNTQ4NTcsIDU0ODczLCAKLSAgICA1NDg4OSwgNTQ5MDUsIDU0OTIxLCA1NDkzNywgNTQ5NTMsIDU0OTY5LCA1NDk4NSwgNTUwMDEsIDU1MDE3LCA1NTAzMywgCi0gICAgNTUwNDksIDU1MDY1LCA1NTA4MSwgNTUwOTcsIDU1MTEzLCA1NTEyOSwgNTUxNDUsIDU1MTYxLCA1NTE3NywgNTUxOTMsIAotICAgIDU1MjA5LCA1NTIyNSwgNTUyNDEsIDU1MjU3LCA1NTI3MywgNTUyODksIDU1MzA1LCA1NTMyMSwgNTUzMzcsIDU1MzUzLCAKLSAgICA1NTM2OSwgNTUzODUsIDU1NDAxLCA1NTQxNywgNTU0MzMsIDU1NDQ5LCA1NTQ2NSwgNTU0ODEsIDU1NDk3LCA1NTUxMywgCi0gICAgNTU1MjksIDU1NTQ1LCA1NTU2MSwgNTU1NzcsIDU1NTkzLCA1NTYwOSwgNTU2MjUsIDU1NjQxLCA1NTY1NywgNTU2NzMsIAotICAgIDU1Njg5LCA1NTcwNSwgNTU3MjEsIDU1NzM3LCA1NTc1MywgNTU3NjksIDU1Nzg1LCA1NTgwMSwgNTU4MTcsIDU1ODMzLCAKLSAgICA1NTg0OSwgNTU4NjUsIDU1ODgxLCA1NTg5NywgNTU5MTMsIDU1OTI5LCA1NTk0NSwgNTU5NjEsIDU1OTc3LCA1NTk5MywgCi0gICAgNTYwMDksIDU2MDI1LCA1NjA0MSwgNTYwNTcsIDU2MDczLCA1NjA4OSwgNTYxMDUsIDU2MTIxLCA1NjEzNywgNTYxNTMsIAotICAgIDU2MTY5LCA1NjE4NSwgNTYyMDEsIDU2MjE3LCA1NjIzMywgNTYyNDksIDU2MjY1LCA1NjI4MSwgNTYyOTcsIDU2MzEzLCAKLSAgICA1NjMyOSwgNTYzNDUsIDU2MzYxLCA1NjM3NywgNTYzOTMsIDU2NDA5LCA1NjQyNSwgNTY0NDEsIDU2NDU3LCA1NjQ3MywgCi0gICAgNTY0ODksIDU2NTA1LCA1NjUyMSwgNTY1MzcsIDU2NTUzLCA1NjU2OSwgNTY1ODUsIDU2NjAxLCA1NjYxNywgNTY2MzMsIAotICAgIDU2NjQ5LCA1NjY2NSwgNTY2ODEsIDU2Njk3LCA1NjcxMywgNTY3MjksIDU2NzQ1LCA1Njc2MSwgNTY3NzcsIDU2NzkzLCAKLSAgICA1NjgwOSwgNTY4MjUsIDU2ODQxLCA1Njg1NywgNTY4NzMsIDU2ODg5LCA1NjkwNSwgNTY5MjEsIDU2OTM3LCA1Njk1MywgCi0gICAgNTY5NjksIDU2OTg1LCA1NzAwMSwgNTcwMTcsIDU3MDMzLCA1NzA0OSwgNTcwNjUsIDU3MDgxLCA1NzA5NywgNTcxMTMsIAotICAgIDU3MTI5LCA1NzE0NSwgNTcxNjEsIDU3MTc3LCA1NzE5MywgNTcyMDksIDU3MjI1LCA1NzI0MSwgNTcyNTcsIDU3MjczLCAKLSAgICA1NzI4OSwgNTczMDUsIDU3MzIxLCA1NzMzNywgNTczNTMsIDU3MzY5LCA1NzM4NSwgNTc0MDEsIDU3NDE3LCA1NzQzMywgCi0gICAgNTc0NDksIDU3NDY1LCA1NzQ4MSwgNTc0OTcsIDU3NTEzLCA1NzUyOSwgNTc1NDUsIDU3NTYxLCA1NzU3NywgNTc1OTMsIAotICAgIDU3NjA5LCA1NzYyNSwgNTc2NDEsIDU3NjU3LCA1NzY3MywgNTc2ODksIDU3NzA1LCA1NzcyMSwgNTc3MzcsIDU3NzUzLCAKLSAgICA1Nzc2OSwgNTc3ODUsIDU3ODAxLCA1NzgxNywgNTc4MzMsIDU3ODQ5LCA1Nzg2NSwgNTc4ODEsIDU3ODk3LCA1NzkxMywgCi0gICAgNTc5MjksIDU3OTQ1LCA1Nzk2MSwgNTc5NzcsIDU3OTkzLCA1ODAwOSwgNTgwMjUsIDU4MDQxLCA1ODA1NywgNTgwNzMsIAotICAgIDU4MDg5LCA1ODEwNSwgNTgxMjEsIDU4MTM3LCA1ODE1MywgNTgxNjksIDU4MTg1LCA1ODIwMSwgNTgyMTcsIDU4MjMzLCAKLSAgICA1ODI0OSwgNTgyNjUsIDU4MjgxLCA1ODI5NywgNTgzMTMsIDU4MzI5LCA1ODM0NSwgNTgzNjEsIDU4Mzc3LCA1ODM5MywgCi0gICAgNTg0MDksIDU4NDI1LCA1ODQ0MSwgNTg0NTcsIDU4NDczLCA1ODQ4OSwgNTg1MDUsIDU4NTIxLCA1ODUzNywgNTg1NTMsIAotICAgIDU4NTY5LCA1ODU4NSwgNTg2MDEsIDU4NjE3LCA1ODYzMywgNTg2NDksIDU4NjY1LCA1ODY4MSwgNTg2OTcsIDU4NzEzLCAKLSAgICA1ODcyOSwgNTg3NDUsIDU4NzYxLCA1ODc3NywgNTg3OTMsIDU4ODA5LCA1ODgyNSwgNTg4NDEsIDU4ODU3LCA1ODg3MywgCi0gICAgNTg4ODksIDU4OTA1LCA1ODkyMSwgNTg5MzcsIDU4OTUzLCA1ODk2OSwgNTg5ODUsIDU5MDAxLCA1OTAxNywgNTkwMzMsIAotICAgIDU5MDQ5LCA1OTA2NSwgNTkwODEsIDU5MDk3LCA1OTExMywgNTkxMjksIDU5MTQ1LCA1OTE2MSwgNTkxNzcsIDU5MTkzLCAKLSAgICA1OTIwOSwgNTkyMjUsIDU5MjQxLCA1OTI1NywgNTkyNzMsIDU5Mjg5LCA1OTMwNSwgNTkzMjEsIDU5MzM3LCA1OTM1MywgCi0gICAgNTkzNjksIDU5Mzg1LCA1OTQwMSwgNTk0MTcsIDU5NDMzLCA1OTQ0OSwgNTk0NjUsIDU5NDgxLCA1OTQ5NywgNTk1MTMsIAotICAgIDU5NTI5LCA1OTU0NSwgNTk1NjEsIDU5NTc3LCA1OTU5MywgNTk2MDksIDU5NjI1LCA1OTY0MSwgNTk2NTcsIDU5NjczLCAKLSAgICA1OTY4OSwgNTk3MDUsIDU5NzIxLCA1OTczNywgNTk3NTMsIDU5NzY5LCA1OTc4NSwgNTk4MDEsIDU5ODE3LCA1OTgzMywgCi0gICAgNTk4NDksIDU5ODY1LCA1OTg4MSwgNTk4OTcsIDU5OTEzLCA1OTkyOSwgNTk5NDUsIDU5OTYxLCA1OTk3NywgNTk5OTMsIAotICAgIDYwMDA5LCA2MDAyNSwgNjAwNDEsIDYwMDU3LCA2MDA3MywgNjAwODksIDYwMTA1LCA2MDEyMSwgNjAxMzcsIDYwMTUzLCAKLSAgICA2MDE2OSwgNjAxODUsIDYwMjAxLCA2MDIxNywgNjAyMzMsIDYwMjQ5LCA2MDI2NSwgNjAyODEsIDYwMjk3LCA2MDMxMywgCi0gICAgNjAzMjksIDYwMzQ1LCA2MDM2MSwgNjAzNzcsIDYwMzkzLCA2MDQwOSwgNjA0MjUsIDYwNDQxLCA2MDQ1NywgNjA0NzMsIAotICAgIDYwNDg5LCA2MDUwNSwgNjA1MjEsIDYwNTM3LCA2MDU1MywgNjA1NjksIDYwNTg1LCA2MDYwMSwgNjA2MTcsIDYwNjMzLCAKLSAgICA2MDY0OSwgNjA2NjUsIDYwNjgxLCA2MDY5NywgNjA3MTMsIDYwNzI5LCA2MDc0NSwgNjA3NjEsIDYwNzc3LCA2MDc5MywgCi0gICAgNjA4MDksIDYwODI1LCA2MDg0MSwgNjA4NTcsIDYwODczLCA2MDg4OSwgNjA5MDUsIDYwOTIxLCA2MDkzNywgNjA5NTMsIAotICAgIDYwOTY5LCA2MDk4NSwgNjEwMDEsIDYxMDE3LCA2MTAzMywgNjEwNDksIDYxMDY1LCA2MTA4MSwgNjEwOTcsIDYxMTEzLCAKLSAgICA2MTEyOSwgNjExNDUsIDYxMTYxLCA2MTE3NywgNjExOTMsIDYxMjA5LCA2MTIyNSwgNjEyNDEsIDYxMjU3LCA2MTI3MywgCi0gICAgNjEyODksIDYxMzA1LCA2MTMyMSwgNjEzMzcsIDYxMzUzLCA2MTM2OSwgNjEzODUsIDYxNDAxLCA2MTQxNywgNjE0MzMsIAotICAgIDYxNDQ5LCA2MTQ2NSwgNjE0ODEsIDYxNDk3LCA2MTUxMywgNjE1MjksIDYxNTQ1LCA2MTU2MSwgNjE1NzcsIDYxNTkzLCAKLSAgICA2MTYwOSwgNjE2MjUsIDYxNjQxLCA2MTY1NywgNjE2NzMsIDYxNjg5LCA2MTcwNSwgNjE3MjEsIDYxNzM3LCA2MTc1MywgCi0gICAgNjE3NjksIDYxNzg1LCA2MTgwMSwgNjE4MTcsIDYxODMzLCA2MTg0OSwgNjE4NjUsIDYxODgxLCA2MTg5NywgNjE5MTMsIAotICAgIDYxOTI5LCA2MTk0NSwgNjE5NjEsIDYxOTc3LCA2MTk5MywgNjIwMDksIDYyMDI1LCA2MjA0MSwgNjIwNTcsIDYyMDczLCAKLSAgICA2MjA4OSwgNjIxMDUsIDYyMTIxLCA2MjEzNywgNjIxNTMsIDYyMTY5LCA2MjE4NSwgNjIyMDEsIDYyMjE3LCA2MjIzMywgCi0gICAgNjIyNDksIDYyMjY1LCA2MjI4MSwgNjIyOTcsIDYyMzEzLCA2MjMyOSwgNjIzNDUsIDYyMzYxLCA2MjM3NywgNjIzOTMsIAotICAgIDYyNDA5LCA2MjQyNSwgNjI0NDEsIDYyNDU3LCA2MjQ3MywgNjI0ODksIDYyNTA1LCA2MjUyMSwgNjI1MzcsIDYyNTUzLCAKLSAgICA2MjU2OSwgNjI1ODUsIDYyNjAxLCA2MjYxNywgNjI2MzMsIDYyNjQ5LCA2MjY2NSwgNjI2ODEsIDYyNjk3LCA2MjcxMywgCi0gICAgNjI3MjksIDYyNzQ1LCA2Mjc2MSwgNjI3NzcsIDYyNzkzLCA2MjgwOSwgNjI4MjUsIDYyODQxLCA2Mjg1NywgNjI4NzMsIAotICAgIDYyODg5LCA2MjkwNSwgNjI5MjEsIDYyOTM3LCA2Mjk1MywgNjI5NjksIDYyOTg1LCA2MzAwMSwgNjMwMTYsIDE4MzA3LCAKLSAgICA2MzAyNSwgNjMwMzAsIDYzMDM2LCA2MzA0MiwgNjMwNTIsIDYzMDYwLCAxNjI3MCwgMTY4NjgsIDEwNzMzLCA2MzA3MywgCi0gICAgMTUxOCwgMTUyMiwgNjMwODEsIDM5NzMsIDI5NTY2LCA3NTEyLCA2MzA4NywgNjMwOTIsIDYzMDk3LCA2MzEwMiwgNjMxMDcsIAotICAgIDYzMTEzLCA2MzExOCwgNjMxMjQsIDYzMTI5LCA2MzEzNSwgNjMxNDAsIDYzMTQ1LCA2MzE1MCwgNjMxNTUsIDYzMTYxLCAKLSAgICA2MzE2NiwgNjMxNzEsIDYzMTc2LCA2MzE4MSwgNjMxODYsIDYzMTkxLCA2MzE5NiwgNjMyMDIsIDYzMjA3LCA2MzIxMywgCi0gICAgNjMyMjAsIDI2MDAsIDYzMjI1LCA2MzIzMSwgODkxMiwgNjMyMzUsIDYzMjQwLCA2MzI0NywgNjMyNTUsIDY1LCA2MzI1OSwgCi0gICAgNjMyNjUsIDYzMjcwLCA2MzI3NSwgNjMyNzksIDYzMjg0LCA2MzI4OCwgNjMyOTIsIDExNjIxLCA2MzI5NiwgNjMzMDYsIAotICAgIDYzMzE5LCA2MzMzMCwgNjMzNDMsIDYzMzUwLCA2MzM1NiwgNjMzNjQsIDYzMzY5LCA2MzM3NSwgNjMzODEsIDYzMzg3LCAKLSAgICA2MzM5MiwgNjMzOTcsIDYzNDAyLCA2MzQwNywgNjM0MTEsIDYzNDE2LCA2MzQyMSwgNjM0MjYsIDYzNDMyLCA2MzQzOCwgCi0gICAgNjM0NDQsIDYzNDQ5LCA2MzQ1MywgNjM0NTgsIDYzNDYzLCA2MzQ2NywgNjM0NzIsIDYzNDc3LCA2MzQ4MiwgNjM0ODYsIAotICAgIDExNjM3LCAxMTY0OCwgMTE2NTMsIDE1NjEsIDYzNDkwLCA2MzQ5NiwgMTU2NiwgNjM1MDEsIDYzNTA0LCAxNzc0MSwgCi0gICAgNjM1MDksIDYzNTE1LCA2MzUyMCwgMTU5NywgNjM1MjYsIDE2MDMsIDE2MDksIDExNjgzLCA2MzUzMSwgNjM1NDAsIDYzNTQ4LCAKLSAgICA2MzU1NSwgNjM1NTksIDYzNTYzLCA2MzU2OSwgNjM1NzQsIDMzMzY1LCA2MzU3OSwgNjM1ODYsIDYzNTkzLCA2MzU5OCwgCi0gICAgNjM2MDIsIDYzNjA2LCA2MzYxNSwgMTYxNCwgMTc4NTAsIDYzNjIwLCA2MzYyNCwgMTc4NjEsIDExNjIsIDYzNjI4LCAKLSAgICA2MzYzNSwgNjM2NDAsIDYzNjQ0LCAxNzg5MSwgMTYxOCwgNDEyNDMsIDYzNjQ3LCA2MzY1MiwgNjM2NjIsIDYzNjcxLCAKLSAgICA2MzY3NiwgNjM2ODAsIDYzNjg2LCAxNjIzLCA0Mzg1NSwgNjM2OTEsIDYzNzAwLCA2MzcwNiwgNjM3MTEsIDYzNzE2LCAKLSAgICAxMTg4MiwgMTE4ODgsIDYzNzIyLCA2MzczNCwgNjM3NTEsIDYzNzY4LCA2Mzc4NSwgNjM4MDIsIDYzODE5LCA2MzgzNiwgCi0gICAgNjM4NTMsIDYzODcwLCA2Mzg4NywgNjM5MDQsIDYzOTIxLCA2MzkzOCwgNjM5NTUsIDYzOTcyLCA2Mzk4OSwgNjQwMDYsIAotICAgIDY0MDIzLCA2NDA0MCwgNjQwNTcsIDY0MDc0LCA2NDA5MSwgNjQxMDgsIDY0MTI1LCA2NDE0MiwgNjQxNTksIDY0MTc2LCAKLSAgICA2NDE5MywgNjQyMTAsIDY0MjI3LCA2NDI0NCwgNjQyNjEsIDY0Mjc4LCA2NDI5NSwgNjQzMTIsIDY0MzI5LCA2NDM0NiwgCi0gICAgNjQzNjMsIDY0MzgwLCA2NDM5NywgNjQ0MTQsIDY0NDMxLCA2NDQ0OCwgNjQ0NjUsIDY0NDgyLCA2NDQ5OSwgNjQ1MTYsIAotICAgIDY0NTMzLCA2NDU1MCwgNjQ1NjcsIDY0NTc4LCA2NDU4OCwgNjQ1OTMsIDE2MjgsIDY0NTk3LCA2NDYwMiwgNjQ2MDgsIAotICAgIDY0NjEzLCA2NDYxOCwgNjQ2MjUsIDk4MzksIDE2MzMsIDY0NjMxLCA2NDY0MCwgMjk4ODcsIDY0NjQ1LCA2NDY1NiwgCi0gICAgMTE4OTksIDY0NjY2LCA2NDY3MSwgNjQ2NzcsIDY0NjgyLCA2NDY4OSwgNjQ2OTUsIDY0NzAwLCAxNjM4LCAxODE3NCwgCi0gICAgNjQ3MDUsIDY0NzExLCAxMTkwOSwgMTY0MywgMTE5MTQsIDY0NzE3LCA2NDcyMiwgNjQ3MjgsIDY0NzMzLCA2NDczOCwgCi0gICAgNjQ3NDMsIDY0NzQ4LCA2NDc1MywgNjQ3NTgsIDY0NzYzLCA2NDc2OCwgNjQ3NzQsIDY0NzgwLCA2NDc4NiwgNjQ3OTEsIAotICAgIDY0Nzk1LCA2NDgwMCwgNjQ4MDUsIDY0ODA5LCA2NDgxNCwgNjQ4MTksIDY0ODI0LCA2NDgyOSwgNjQ4MzMsIDY0ODM4LCAKLSAgICA2NDg0NCwgNjQ4NDksIDY0ODU0LCA2NDg1OCwgNjQ4NjMsIDY0ODY4LCA2NDg3NCwgNjQ4NzksIDY0ODg0LCA2NDg5MCwgCi0gICAgNjQ4OTYsIDY0OTAxLCA2NDkwNSwgNjQ5MTAsIDY0OTE1LCA2NDkyMCwgNjQ5MjQsIDY0OTI5LCA2NDkzNCwgNjQ5MzksIAotICAgIDY0OTQ1LCA2NDk1MSwgNjQ5NTYsIDY0OTYwLCA2NDk2NCwgNjQ5NjksIDY0OTc0LCA2NDk3OSwgMzEzOTUsIDY0OTgzLCAKLSAgICA2NDk4OCwgNjQ5OTMsIDY0OTk5LCA2NTAwNCwgNjUwMDksIDY1MDEzLCA2NTAxOCwgNjUwMjMsIDY1MDI5LCA2NTAzNCwgCi0gICAgNjUwMzksIDY1MDQ1LCA2NTA1MSwgNjUwNTYsIDY1MDYwLCA2NTA2NSwgNjUwNzAsIDY1MDc0LCA2NTA3OSwgNjUwODQsIAotICAgIDY1MDg5LCA2NTA5NSwgNjUxMDEsIDY1MTA2LCA2NTExMCwgNjUxMTUsIDY1MTIwLCA2NTEyNCwgNjUxMjksIDY1MTM0LCAKLSAgICA2NTEzOSwgNjUxNDQsIDY1MTQ4LCA2NTE1MSwgNjUxNTQsIDY1MTU5LCA2NTE2NCwgMzQwNTYsIDY1MTcxLCA2NTE3OSwgCi0gICAgMzY5MSwgMjk4MzcsIDY1MTg1LCA2NTE5MiwgNjUxOTgsIDM4MzAsIDEyMDIwLCA2NTIwNCwgNjUyMTQsIDY1MjI5LCAKLSAgICA2NTIzNywgMTIwMjUsIDY1MjQ4LCA2NTI1MywgNjUyNjQsIDY1Mjc2LCA2NTI4OCwgNjUzMDAsIDI3MzQsIDY1MzEyLCAKLSAgICA2NTMxNywgNjUzMjksIDY1MzMzLCA2NTMzOSwgNjUzNDUsIDY1MzUwLCAxNjYwLCAxNzQxOCwgNjUzNTksIDY1MzY0LCAKLSAgICA0MzkxNCwgNjUzNjgsIDY1MzcyLCA2NTM3NywgNjUzODEsIDE4MzE1LCA2NTM4NiwgNjUzODksIDY1Mzk0LCA2NTQwMiwgCi0gICAgNjU0MTAsIDE2NjQsIDEyMDYxLCAxMjA2NywgMTY2OSwgNjU0MTgsIDY1NDI1LCA2NTQzMCwgNjU0MzksIDY1NDQ5LCAKLSAgICA2NTQ1NiwgNjU0NjEsIDY1NDY2LCAxNjc0LCA2NTQ3MywgNjU0NzgsIDE4NDM1LCA2NTQ4MiwgNjU0ODcsIDY1NDk0LCAKLSAgICA2NTUwMCwgNjU1MDQsIDY1NTE1LCA2NTUyNSwgNjU1MzIsIDE4NDU3LCA5NzMzLCA5NzQwLCA0MDIyLCA0MDI4LCA2NTUzOSwgCi0gICAgMTY3OSwgNjU1NDQsIDY1NTUwLCA2NTU1OCwgNjU1NjUsIDY1NTcxLCA2NTU3OCwgNjU1OTAsIDY1NTk2LCA2NTYwMSwgCi0gICAgNjU2MTMsIDY1NjI0LCA2NTYzMywgNjU2NDMsIDM5NTIsIDY1NjUxLCAzMzE2NiwgMzMxNzUsIDE4NDk3LCAxNjg0LCAxNjg4LCAKLSAgICA2NTY2NCwgNjU2NzUsIDY1NjgwLCAxNjk4LCA2NTY4OCwgNjU2OTMsIDY1Njk4LCAxODU1NiwgNjU3MTAsIDY1NzEzLCAKLSAgICA2NTcxOSwgNjU3MjUsIDY1NzMwLCA2NTczOCwgMTcwMywgNjU3NDMsIDY1NzQ4LCA2NTc1NiwgNjU3NjQsIDY1NzcxLCAKLSAgICA2NTc4MCwgNjU3ODgsIDY1Nzk3LCAxNzA4LCA2NTgwMSwgMTcxMywgMjMwMTYsIDY1ODA2LCA2NTgxMywgMTg2MzAsIAotICAgIDY1ODIxLCA2NTgyNywgNjU4MzIsIDY1ODQwLCA2NTg0NywgNjU4NTUsIDY1ODY1LCA2NTg3NCwgNjU4ODQsIDY1ODkzLCAKLSAgICA2NTkwNCwgNjU5MTQsIDY1OTI0LCA2NTkzMywgNjU5NDMsIDY1OTU3LCA2NTk3MCwgNjU5NzksIDY1OTg3LCA2NTk5NywgCi0gICAgNjYwMDYsIDY2MDE4LCA2NjAyOSwgNjYwNDAsIDY2MDUwLCAxNzk0OCwgNjYwNTUsIDEyMjEzLCA2NjA2NCwgNjYwNzAsIAotICAgIDY2MDc1LCA2NjA4MiwgNjYwODksIDY2MDk1LCAxNzYxNywgNjYxMDUsIDY2MTExLCA2NjExNiwgNjYxMjcsIDY2MTMyLCAKLSAgICA2NjE0MCwgMTIyMzAsIDEyMjM1LCA2NjE0OCwgNjYxNTQsIDY2MTU4LCA2NjE2NiwgNDAxNywgMTg2OTIsIDQ0MDA3LCAKLSAgICA2NjE3MSwgNjYxNzcsIDY2MTgyLCA2NjE5MCwgNjYxOTcsIDEzMTc5LCA2NjIwMiwgNjYyMDgsIDE3MjQsIDY2MjEzLCAKLSAgICA2NjIxNiwgMTQzOCwgNjYyMjIsIDY2MjI3LCA2NjIzMiwgNjYyMzgsIDY2MjQzLCA2NjI0OCwgNjYyNTMsIDY2MjU4LCAKLSAgICA2NjI2MywgNjYyNjgsIDE3MzMsIDEzLCA2NjI3NCwgNjYyNzgsIDY2MjgzLCA2NjI4NywgNjYyOTEsIDY2Mjk1LCAzNDI5NiwgCi0gICAgNjYzMDAsIDI1MDcwLCA2NjMwNSwgNjYzMTAsIDY2MzE0LCA2NjMxNywgNjYzMjEsIDY2MzI1LCA2NjMzMCwgNjYzMzQsIAotICAgIDY2MzM5LCA2NjM0MywgNjYzNDksIDM3NTE0LCAzNzUxOSwgMzc1MjQsIDY2MzUyLCA2NjM1OSwgNjYzNjUsIDY2MzczLCAKLSAgICA0MzY3OCwgNjYzODMsIDM3NTMwLCAzNDU2MCwgMzQzMTEsIDM0MzE3LCAzNzU0NiwgMzQzMjMsIDY2Mzg4LCA2NjM5MywgCi0gICAgMzQ1OTMsIDY2Mzk3LCA2NjQwMCwgNjY0MDQsIDY2NDEyLCA2NjQxOSwgNjY0MjIsIDY2NDI3LCA2NjQzMiwgNjY0MzYsIAotICAgIDY2NDQwLCA2NjQ0MywgNjY0NTMsIDY2NDY1LCA2NjQ3MiwgNjY0NzgsIDM0MzI4LCA2NjQ4NSwgMzYwNzgsIDY2NDg4LCAKLSAgICA4OTI5LCAxMDE5LCA2NjQ5MSwgNjY0OTUsIDY2NTAwLCAzODczLCA2NjUwNCwgNjY1MDcsIDE0ODI3LCA2NjUxNCwgNjY1MjEsIAotICAgIDY2NTM0LCA2NjU0MiwgNjY1NTEsIDY2NTYwLCA2NjU2NSwgNjY1NzUsIDY2NTg4LCA2NjYwMCwgNjY2MDcsIDY2NjEyLCAKLSAgICA2NjYyMSwgNjY2MzQsIDM5MDM5LCA2NjY1MiwgNjY2NTcsIDY2NjY0LCA2NjY3MCwgNjY2NzUsIDgxOSwgNjY2ODAsIAotICAgIDY2Njg4LCA2NjY5NSwgNjY3MDIsIDI5MzkyLCA3ODMsIDY2NzA4LCA2NjcxNCwgNjY3MjQsIDY2NzMyLCA2NjczOCwgCi0gICAgNjY3NDMsIDM0MzQ3LCA2MzEwLCAzNDM2MSwgNjY3NDcsIDY2NzU3LCA2Njc2MiwgNjY3NzIsIDY2Nzg3LCA2Njc5MywgCi0gICAgNjY3OTksIDM0MzcxLCA2NjgwNCwgMzM0ODIsIDY2ODA4LCA2NjgxMywgNjY4MjAsIDY2ODI1LCA2NjgyOSwgNjY4MzQsIAotICAgIDE4NTAwLCA2Njg0MSwgNjY4NDYsIDY2ODUwLCA2MzUxLCAzNDM5NywgNjY4NTQsIDY2ODYwLCAzMjQsIDY2ODcwLCA2Njg3NywgCi0gICAgNjY4ODQsIDY2ODg5LCA2Njg5OCwgNjM2NTYsIDY2OTA0LCA2NjkxMiwgNjY5MTYsIDY2OTIwLCA2NjkyNCwgNjY5MjgsIAotICAgIDY2OTMzLCA2NjkzNywgNjY5NDMsIDY2OTUxLCA2Njk1NiwgNjY5NjEsIDY2OTY2LCA2Njk3MCwgNjY5NzUsIDY2OTc5LCAKLSAgICA2Njk4MywgNjY5ODksIDY2OTk1LCA2NzAwMCwgNjcwMDQsIDY3MDA5LCAzNDUyMSwgNjcwMTMsIDM0NTI3LCAzNDUzMywgCi0gICAgNjcwMTgsIDY3MDI0LCA2NzAzMSwgNjcwMzYsIDY3MDQwLCAzMzQ5OSwgMTgxNjcsIDY3MDQzLCA2NzA0NywgNjcwNTIsIAotICAgIDY3MDU5LCA2NzA2NSwgNjcwNjksIDY3MDc0LCA0MzM1MywgNjcwODAsIDY3MDg0LCA2NzA5MSwgNjcwOTUsIDY3MTAwLCAKLSAgICA2NzEwNiwgNjcxMTIsIDY3MTE4LCA2NzEzMCwgNjcxMzksIDY3MTQ5LCA2NzE1NSwgNjcxNjIsIDY3MTY3LCA2NzE3MiwgCi0gICAgNjcxNzYsIDY3MTc5LCA2NzE4NSwgNjcxOTIsIDY3MTk3LCA2NzIwMiwgNjcyMDksIDY3MjE2LCA2NzIyMywgNjcyMjksIAotICAgIDY3MjM0LCA2NzIzOSwgNjcyNDcsIDM0NTM4LCAyNDYyLCA2NzI1MiwgNjcyNTcsIDY3MjYzLCA2NzI2OCwgNjcyNzQsIAotICAgIDY3Mjc5LCA2NzI4NCwgNjcyODksIDY3Mjk1LCAzNDU1OSwgNjczMDAsIDY3MzA2LCA2NzMxMiwgNjczMTgsIDM0NjI5LCAKLSAgICA2NzMyMywgNjczMjgsIDY3MzMzLCAzNDY0MCwgNjczMzgsIDY3MzQzLCA2NzM0OCwgNjczNTQsIDY3MzYwLCAzNDY0NSwgCi0gICAgNjczNjUsIDY3MzcwLCA2NzM3NSwgMzQ3MDAsIDM0NzA2LCA2NzM4MCwgNjczODUsIDM0NzExLCAzNDczMywgMzAxMzYsIAotICAgIDM0NzM5LCAzNDc0MywgNjczOTAsIDEyOTA5LCA2NzM5NCwgNjc0MDIsIDY3NDA4LCA2NzQxNiwgNjc0MjMsIDY3NDI5LCAKLSAgICA2NzQzOSwgNjc0NDUsIDY3NDUyLCAxMTU1NiwgMzQ3NTcsIDY3NDU4LCA2NzQ3MSwgNjc0ODAsIDY3NDg2LCA2NzQ5NSwgCi0gICAgNjc1MDEsIDI1MzgwLCA2NzUwOCwgNjc1MTUsIDY3NTI1LCA2NzUyOCwgMzQ3MDEsIDY3NTMzLCA2NzU0MCwgNjc1NDUsIAotICAgIDY3NTQ5LCA2NzU1MywgNjc1NTgsIDY3NTYyLCA0MTMzLCA2NzU2NywgNjc1NzIsIDY3NTc3LCAzNzYwOCwgMzc2MTMsIAotICAgIDY3NTgxLCAzNzYyNywgNjc1ODYsIDM3NjMyLCA2NzU5MSwgNjc1OTcsIDM3NjQ0LCAzNzY1MCwgMzc2NTYsIDY3NjAyLCAKLSAgICA2NzYwOCwgMjQzNjYsIDY3NjE5LCA2NzYyMiwgNjc2MzQsIDY3NjQyLCAzNDc4MCwgNjc2NDYsIDY3NjU1LCA2NzY2NSwgCi0gICAgNjc2NzQsIDM0NzkwLCA2NzY3OSwgNjc2ODYsIDY3Njk1LCA2NzcwMSwgNjc3MDksIDY3NzE2LCA2NDAyLCA0NjczLCAKLSAgICA2NzcyMSwgMzQ3MTIsIDY3NzI3LCA2NzczMCwgNjc3MzYsIDY3NzQzLCA2Nzc0OCwgNjc3NTMsIDI1MjkwLCA2Nzc1NywgCi0gICAgNjc3NjMsIDY3NzY5LCA2Nzc3NCwgNjc3NzksIDY3NzgzLCA2Nzc4OSwgNjc3OTUsIDM1OTg0LCAxMDQ4LCAzODY4OSwgCi0gICAgNDA0MTksIDQwNDI1LCAzNDgyMSwgMzQ4MjYsIDY3ODAwLCA2NzgwNCwgNjc4MDgsIDY3ODExLCA2NzgyNCwgNjc4MzAsIAotICAgIDY3ODM0LCA2NzgzNywgNjc4NDIsIDM2MzIxLCA2Nzg0NiwgMzM1MDQsIDIyOTY2LCA2Nzg1MiwgNjMzMSwgNjMzOSwgOTU3MCwgCi0gICAgNjc4NTUsIDY3ODYwLCA2Nzg2NSwgNjc4NzAsIDY3ODc1LCA2Nzg4MCwgNjc4ODUsIDY3ODkwLCA2Nzg5NSwgNjc5MDAsIAotICAgIDY3OTA2LCA2NzkxMSwgNjc5MTYsIDY3OTIyLCA2NzkyNywgNjc5MzIsIDY3OTM3LCA2Nzk0MiwgNjc5NDcsIDY3OTUyLCAKLSAgICA2Nzk1OCwgNjc5NjMsIDY3OTY5LCA2Nzk3NCwgNjc5NzksIDY3OTg0LCA2Nzk4OSwgNjc5OTQsIDY3OTk5LCA2ODAwNCwgCi0gICAgNjgwMDksIDY4MDE0LCA2ODAxOSwgNjgwMjUsIDY4MDMwLCA2ODAzNSwgNjgwNDAsIDY4MDQ1LCA2ODA1MCwgNjgwNTUsIAotICAgIDY4MDYxLCA2ODA2NiwgNjgwNzEsIDY4MDc2LCA2ODA4MSwgNjgwODYsIDY4MDkxLCA2ODA5NiwgNjgxMDEsIDY4MTA2LCAKLSAgICA2ODExMiwgNjgxMTcsIDY4MTIyLCA2ODEyNywgNjgxMzIsIDY4MTM4LCA2ODE0NCwgNjgxNDksIDY4MTU1LCA2ODE2MCwgCi0gICAgNjgxNjUsIDY4MTcwLCA2ODE3NSwgNjgxODAsIDE1MTEsIDE0NSwgNjgxODUsIDY4MTg5LCA2ODE5MywgNjgxOTcsIDI3MDc2LCAKLSAgICA2ODIwMSwgNjgyMDUsIDY4MjEwLCA2ODIxNCwgNjgyMTksIDY4MjIzLCA2ODIyOCwgNjgyMzMsIDY4MjM4LCA2ODI0MiwgCi0gICAgNjgyNDYsIDY4MjUxLCA2ODI1NSwgMTQ1NDIsIDY4MjYwLCA2ODI2NCwgNjgyNzEsIDY4MjgxLCAxNjU5NSwgNjgyOTAsIAotICAgIDY4Mjk5LCA2ODMwMywgNjgzMDgsIDY4MzEzLCA2ODMxNywgNjgzMjEsIDI2ODcwLCAzMDc4LCA2ODMyNSwgNjgzMzEsIAotICAgIDE4OTY3LCA2ODMzNSwgNjgzNDQsIDY4MzUyLCA2ODM1OCwgNjgzNjMsIDY4Mzc1LCA2ODM4NywgNjgzOTIsIDY4Mzk2LCAKLSAgICA2ODQwMSwgNjg0MDUsIDY4NDExLCA2ODQxNywgNjg0MjIsIDY4NDMyLCA2ODQ0MiwgNjg0NDgsIDY4NDUzLCA2ODQ1NywgCi0gICAgNjg0NjMsIDY4NDY4LCA2ODQ3NSwgNjg0ODEsIDY4NDg2LCA2ODQ5NSwgNjg1MDQsIDY4NTEyLCAxNjk5MywgNjg1MTYsIAotICAgIDY4NTI1LCA2ODUzMywgNjg1NDUsIDY4NTU2LCA2ODU2NywgNjg1NzYsIDY4NTgwLCA2ODU4OSwgNjg1OTcsIDY4NjA3LCAKLSAgICA2ODYxNSwgNjg2MjIsIDY4NjI4LCA2ODYzMywgNjg2MzksIDY4NjQ0LCA2ODY1NSwgNTQsIDMzMzA5LCA2ODY2MSwgMjgzMzEsIAotICAgIDI4MzQxLCA2ODY2NywgNjg2NzUsIDY4NjgyLCA2ODY4OCwgNjg2OTIsIDY4NzAyLCA2ODcxMywgNjg3MjEsIDY4NzMwLCAKLSAgICA2ODczNSwgNjg3NDAsIDY4NzQ1LCA2ODc0OSwgNjg3NTMsIDE4OTIxLCA2ODc2MSwgNjg3NjUsIDY4NzcxLCA2ODc4MSwgCi0gICAgNjg3ODgsIDY4Nzk0LCA2ODgwMCwgMzc3MDcsIDY4ODA0LCA2ODgwNiwgNjg4MDksIDY4ODE1LCA2ODgxOSwgNjg4MzAsIAotICAgIDY4ODQwLCA2ODg0NiwgNjg4NTMsIDY4ODYwLCAxNDQ3OSwgNjg4NjgsIDY4ODc0LCA2ODg4MywgNjg4OTIsIDY4ODk4LCAKLSAgICAxMDYxNSwgNjg5MDQsIDY4OTEwLCA2ODkxNSwgNjg5MjAsIDY4OTI3LCA2ODkzMiwgNjg5MzksIDY4OTQ1LCA2ODk1MCwgCi0gICAgNjg5NTgsIDY4OTcxLCA2ODk4MCwgNjU5MTksIDY1OTI5LCA2ODk4OSwgNjg5OTUsIDY5MDAxLCA2OTAwOCwgNjkwMTUsIAotICAgIDY5MDIyLCA2OTAyOSwgNjkwMzYsIDY5MDQxLCA2OTA0NSwgNjkwNDksIDY5MDUyLCA2OTA2MiwgNjkwNjYsIDY5MDc4LCAKLSAgICA2OTA4NywgNjkwOTEsIDY5MTAyLCA2OTEwNywgNjkxMTEsIDY1OTM4LCA2OTExNywgNjkxMjQsIDY5MTMzLCA2OTE0MSwgCi0gICAgNjkxNDksIDY5MTU0LCA2OTE1OCwgNjkxNjMsIDY5MTY4LCA2OTE3OCwgNjkxODYsIDY5MTkxLCA2OTE5NSwgNjkxOTksIAotICAgIDY5MjA1LCA2OTIxMywgNjkyMjAsIDY5MjMyLCA2OTI0MCwgNjkyNTEsIDY5MjU4LCA2OTI2NCwgNjkyNzQsIDY5MjgwLCAKLSAgICA2OTI4NCwgNjkyOTEsIDY5Mjk3LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMjMsIDY5MzMyLCA2OTM0MSwgCi0gICAgNjkzNDcsIDY5MzUzLCA2OTM1OSwgNjkzNjQsIDY5MzcxLCA2OTM3NywgNjkzODUsIDY5MzkyLCA2OTM5OCwgMTM2MjIsIAotICAgIDY5NDAzLCA2OTQwOSwgNjk0MTMsIDE1NTI5LCA2OTQxNywgNjk0MjIsIDY5NDMyLCA2OTQ0MSwgNjk0NDcsIDY5NDUzLCAKLSAgICA2OTQ2MSwgNjk0NjgsIDY5NDcyLCA2OTQ3NiwgNjk0ODIsIDY5NDkwLCA2OTQ5NywgNjk1MDMsIDY5NTE0LCA2OTUxOCwgCi0gICAgNjk1MjIsIDY5NTI2LCA2OTUyOSwgNjk1MzUsIDY5NTQwLCA2OTU0NSwgNjk1NDksIDY5NTUzLCA2OTU2MiwgNjk1NzAsIAotICAgIDY5NTc3LCA2OTU4MywgNjk1OTAsIDI1OTYzLCA0MzQyMiwgNjk1OTUsIDY5NjAzLCA2OTYwNywgNjk2MTEsIDY5NjE0LCAKLSAgICA2OTYyMiwgNjk2MjksIDY5NjM1LCA2OTY0NCwgNjk2NTIsIDY5NjU4LCA2OTY2MywgNjk2NjcsIDY5NjcyLCA2OTY3NywgCi0gICAgNjk2ODEsIDY5Njg1LCA2OTY4OSwgNjk2OTQsIDY5NzAzLCA2OTcwNywgNjk3MTQsIDQwNTI4LCA2OTcxOCwgNjk3MjQsIAotICAgIDY5NzI4LCA2OTczNiwgNjk3NDIsIDY5NzQ3LCA2OTc1OCwgNjk3NjYsIDY5NzcyLCA2OTc4MSwgMjQ1MTMsIDY5Nzg5LCAKLSAgICA2OTc5NiwgNjk4MDMsIDY5ODEwLCA2OTgxNywgNjk4MjQsIDQ2NzA0LCAxNDMxNywgNjk4MzEsIDY5ODM4LCA2OTg0MywgCi0gICAgMzc3NDMsIDY1MjksIDY5ODQ5LCA2OTg1NCwgNjk4NTksIDY5ODY1LCA2OTg3MSwgNjk4NzcsIDY5ODgyLCA2OTg4NywgCi0gICAgNjk4OTIsIDY5ODk3LCA2OTkwMywgNjk5MDgsIDY5OTE0LCA2OTkxOSwgNjk5MjUsIDY5OTMwLCA2OTkzNSwgNjk5NDAsIAotICAgIDY5OTQ1LCA2OTk1MCwgNjk5NTUsIDY5OTYwLCA2OTk2NiwgNjk5NzEsIDY5OTc3LCA2OTk4MiwgNjk5ODcsIDY5OTkyLCAKLSAgICA2OTk5NywgNzAwMDIsIDcwMDA3LCA3MDAxMywgNzAwMTgsIDcwMDIzLCA3MDAyOCwgNzAwMzMsIDcwMDM4LCA3MDA0MywgCi0gICAgNzAwNDgsIDcwMDUzLCA3MDA1OCwgNzAwNjMsIDcwMDY5LCA3MDA3NCwgNzAwNzksIDcwMDg0LCA3MDA4OSwgNzAwOTQsIAotICAgIDcwMDk5LCA3MDEwNCwgNzAxMDksIDcwMTE1LCA3MDEyMCwgNzAxMjUsIDcwMTMwLCA3MDEzNSwgNzAxNDAsIDcwMTQ1LCAKLSAgICA3MDE1MCwgNzAxNTUsIDcwMTYwLCA3MDE2NSwgNzAxNzAsIDcwMTc1LCA3MDE4MSwgMTg1NCwgMjYwLCA3MDE4NiwgNDEzNjEsIAotICAgIDcwMTkwLCA3MDE5MywgNzAxOTgsIDcwMjAyLCA3MDIwNSwgMzQxNSwgNzAyMTAsIDcwMjE1LCA3MDIxOSwgNzAyMjgsIAotICAgIDcwMjM5LCA3MDI1NiwgNzAyNzQsIDY5MTQ1LCA3MDI4MiwgNzAyODUsIDcwMjk1LCA3MDMwMiwgNzAzMTEsIDcwMzI3LCAKLSAgICA3MDMzNiwgNzAzNDYsIDcwMzUxLCA3MDM2MSwgNzAzNzAsIDcwMzc4LCA3MDM5MiwgNzA0MDAsIDcwNDA0LCA3MDQwNywgCi0gICAgNzA0MTQsIDcwNDIwLCA3MDQzMSwgNzA0MzgsIDcwNDUwLCA3MDQ2MSwgNzA0NzIsIDcwNDgxLCA3MDQ4OCwgMTI3OCwgNzEwLCAKLSAgICA3MDQ5OCwgMjYyOSwgNzA1MDIsIDcwNTA3LCA3MDUxNiwgOTIyMSwgMTg4OTQsIDIyNDcxLCA3MDUyNCwgNzA1MzIsIAotICAgIDcwNTQ2LCA3MDU1OSwgNzA1NjMsIDcwNTY4LCA3MDU3MywgNzA1NzgsIDcwNTg0LCA3MDU5MCwgNzA1OTUsIDg5MjEsIAotICAgIDE2NjIzLCA3MDYwMCwgNzA2MDQsIDcwNjEyLCAxMjA2MiwgNzA2MTcsIDcwNjIzLCA3MDYzMiwgNzA2NDAsIDE3MzYsIAotICAgIDEyMDc0LCA5MDgsIDY0NjUsIDcwNjQ0LCA3MDY0OCwgNzA2NTcsIDcwNjY3LCAyNDE5LCAyOTEyNywgNzA2NzYsIDcwNjgyLCAKLSAgICAxODQwNywgMjkxNDIsIDcwNjg4LCA0MTkzLCAxMjQ1MiwgNzA2OTQsIDcwNzAxLCA2NTY3MCwgNzA3MDUsIDcwNzA5LCAKLSAgICA3MDcxNSwgNzA3MjAsIDcwNzI1LCAzNjM0LCAxNTQsIDE1NDM3LCA3MDczMCwgNzA3NDIsIDcwNzQ2LCA3MDc1MiwgNzA3NTcsIAotICAgIDI5OTA3LCA3MDc2MSwgMTI0NDAsIDI3NjksIDQsIDcwNzY2LCA3MDc3NiwgNzA3ODcsIDcwNzkzLCA3MDgwNCwgNzA4MTEsIAotICAgIDcwODE3LCA3MDgyMywgNzA4MzEsIDcwODM4LCA3MDg0NCwgNzA4NTQsIDcwODY0LCA3MDg3NCwgNzA4ODMsIDI1MzY3LCAKLSAgICAxMjkwLCA3MDg4OCwgNzA4OTIsIDcwODk2LCA3MDkwMiwgNzA5MDYsIDI3OTIsIDI3OTgsIDg5MTgsIDIyOTQsIDcwOTEwLCAKLSAgICA3MDkxNCwgNzA5MjMsIDcwOTMxLCA3MDk0MiwgNzA5NTAsIDcwOTU4LCA3MDk2NCwgNzA5NjksIDcwOTgwLCA3MDk5MSwgCi0gICAgNzA5OTksIDcxMDA1LCA3MTAxMCwgMTA0MzQsIDcxMDIwLCA3MTAyOCwgNzEwMzIsIDcxMDM2LCA3MTA0MSwgNzEwNDUsIAotICAgIDcxMDU3LCAzMDMxNCwgMTY1NDgsIDcxMDY0LCA3MTA3NCwgNzEwODAsIDcxMDg2LCAxMDUzNiwgNzEwOTYsIDcxMTA3LCAKLSAgICA3MTExOCwgNzExMjgsIDcxMTM3LCA3MTE0MSwgNzExNDgsIDE3NTAsIDk5NiwgNzExNTgsIDcxMTYzLCA3MTE3MSwgNjU0ODMsIAotICAgIDcxMTc5LCA3MTE4NCwgNzExOTUsIDcxMjAyLCA3MTIxNiwgMTUzNjYsIDQ3OCwgNzEyMjYsIDcxMjMwLCA3MTIzNCwgCi0gICAgNzEyNDIsIDcxMjUxLCA3MTI1OSwgNzEyNjUsIDcxMjc5LCA3MTI4NiwgNzEyOTIsIDcxMzAxLCA3MTMwOCwgNzEzMTgsIAotICAgIDcxMzI2LCA3MTMzMywgNzEzNDEsIDcxMzQ4LCA0MDI0LCAxNDksIDcxMzU2LCA3MTM2NywgNzEzNzEsIDcxMzgzLCA3MTM4OSwgCi0gICAgMTI2MzMsIDE5MiwgNzEzOTQsIDk4NzEsIDcxMzk5LCA3MTQwMywgNzE0MTAsIDcxNDE2LCA3MTQyNCwgNzE0MzEsIDkyODAsIAotICAgIDcxNDM4LCA3MTQ0NywgNzE0NTUsIDQwOTMsIDcxNDY4LCA0MTEwLCA3MTQ3MiwgMjg0MiwgNTE0LCA3MTQ3NywgNzE0OTAsIAotICAgIDcxNDk0LCA3MTQ5OSwgMjg0NywgMTg1MywgODA5LCA3MTUwMywgNDExNCwgNzE1MTEsIDcxNTE3LCA3MTUyMSwgODY2LCAKLSAgICA3MTUzMSwgNzE1NDAsIDcxNTQ1LCAzNjUxLCA3MTU0OSwgMTYzMDQsIDE2MzExLCA1MDA2NiwgNzE1NTMsIDQxNDUsIDQwMzQsIAotICAgIDE0MjAwLCA3MTU2MSwgNzE1NjgsIDcxNTczLCAyNTQzMSwgNzE1NzcsIDcxNTg0LCA3MTU5MCwgNzE1OTUsIDcxNjAwLCAKLSAgICAxNjMyNCwgMTg2LCA3MTYwNSwgNzE2MTcsIDcxNjIzLCA3MTYzMSwgMjg1OSwgMTc2OCwgNzE2MzksIDcxNjQxLCA3MTY0NiwgCi0gICAgNzE2NTEsIDcxNjU2LCA3MTY2MiwgNzE2NjcsIDcxNjcyLCA3MTY3NywgNzE2ODIsIDcxNjg3LCA3MTY5MiwgNzE2OTgsIAotICAgIDcxNzAzLCA3MTcwOCwgNzE3MTMsIDcxNzE4LCA3MTcyMywgNzE3MjgsIDcxNzMzLCA3MTczOCwgNzE3NDQsIDcxNzQ5LCAKLSAgICA3MTc1NCwgNzE3NTksIDcxNzY1LCA3MTc3MCwgNzE3NzYsIDcxNzgxLCA3MTc4NiwgNzE3OTEsIDcxNzk2LCA3MTgwMSwgCi0gICAgNzE4MDYsIDcxODExLCA3MTgxNywgNzE4MjIsIDcxODI4LCA3MTgzMywgNzE4MzgsIDcxODQzLCA3MTg0OCwgNzE4NTMsIAotICAgIDcxODU4LCA3MTg2MywgNzE4NjgsIDcxODc0LCA3MTg4MCwgNzE4ODUsIDcxODkwLCA3MTg5NiwgNzE5MDEsIDcxOTA1LCAKLSAgICA3MTkwOSwgNzE5MTQsIDcxOTIwLCA3MTkyNCwgNzE5MzAsIDcxOTM1LCA3MTk0MCwgNzE5NDYsIDcxOTUxLCA3MTk1NSwgCi0gICAgNzE5NjAsIDcxOTY1LCA3MTk2OSwgNzE5NzIsIDcxOTc0LCA3MTk3OCwgNzE5ODEsIDcxOTg4LCA3MTk5MywgNzE5OTcsIAotICAgIDcyMDAyLCA3MjAwNiwgNzIwMTAsIDcyMDE0LCA3MjAyMywgNzIwMjcsIDM1MDI2LCA3MjAzMCwgMzUwMzEsIDcyMDM3LCAKLSAgICA3MjA0MiwgMzUwMzYsIDcyMDUxLCA3MjA2MCwgMzUwNDIsIDcyMDY1LCAzNTA0NywgNzIwNzQsIDcyMDc5LCAxMjY3NiwgCi0gICAgNzIwODMsIDcyMDg4LCA3MjA5MywgMzUwNTIsIDcyMDk3LCA0NDkyMSwgNzIxMDEsIDcyMTA0LCA3MjEwOCwgODU4OSwgCi0gICAgNzIxMTQsIDcyMTE3LCA3MjEyMiwgNzIxMjYsIDM4ODgsIDM1MDU3LCA3MjEyOSwgNzIxMzMsIDcyMTM2LCA3MjE0MSwgCi0gICAgNzIxNDUsIDcyMTUxLCA3MjE1OSwgNzIxNzIsIDcyMTgxLCA3MjE4NywgNzIxOTIsIDcyMTk4LCA3MjIwMiwgNzIyMDgsIAotICAgIDcyMjE0LCA3MjIyMiwgNzIyMjcsIDcyMjMxLCA3MjIzOCwgNzIyNDQsIDcyMjUyLCA3MjI2MSwgNzIyNjksIDM1MDYwLCAKLSAgICA3MjI3NiwgNzIyODYsIDcyMjk5LCA3MjMwNCwgNzIzMDksIDcyMzEzLCA3MjMyMiwgNzIzMjgsIDcyMzM1LCA3MjM0NiwgCi0gICAgNzIzNTgsIDcyMzY1LCA3MjM3NCwgNzIzODMsIDcyMzkyLCA3MjM5OSwgNzI0MDUsIDcyNDEyLCA3MjQyMCwgNzI0MjcsIAotICAgIDcyNDM1LCA3MjQ0NCwgNzI0NTIsIDcyNDU5LCA3MjQ2NywgNzI0NzYsIDcyNDg0LCA3MjQ5MywgNzI1MDMsIDcyNTEyLCAKLSAgICA3MjUyMCwgNzI1MjcsIDcyNTM1LCA3MjU0NCwgNzI1NTIsIDcyNTYxLCA3MjU3MSwgNzI1ODAsIDcyNTg4LCA3MjU5NywgCi0gICAgNzI2MDcsIDcyNjE2LCA3MjYyNiwgNzI2MzcsIDcyNjQ3LCA3MjY1NiwgNzI2NjQsIDcyNjcxLCA3MjY3OSwgNzI2ODgsIAotICAgIDcyNjk2LCA3MjcwNSwgNzI3MTUsIDcyNzI0LCA3MjczMiwgNzI3NDEsIDcyNzUxLCA3Mjc2MCwgNzI3NzAsIDcyNzgxLCAKLSAgICA3Mjc5MSwgNzI4MDAsIDcyODA4LCA3MjgxNywgNzI4MjcsIDcyODM2LCA3Mjg0NiwgNzI4NTcsIDcyODY3LCA3Mjg3NiwgCi0gICAgNzI4ODYsIDcyODk3LCA3MjkwNywgNzI5MTgsIDcyOTMwLCA3Mjk0MSwgNzI5NTEsIDcyOTYwLCA3Mjk2OCwgNzI5NzUsIAotICAgIDcyOTgzLCA3Mjk5MiwgNzMwMDAsIDczMDA5LCA3MzAxOSwgNzMwMjgsIDczMDM2LCA3MzA0NSwgNzMwNTUsIDczMDY0LCAKLSAgICA3MzA3NCwgNzMwODUsIDczMDk1LCA3MzEwNCwgNzMxMTIsIDczMTIxLCA3MzEzMSwgNzMxNDAsIDczMTUwLCA3MzE2MSwgCi0gICAgNzMxNzEsIDczMTgwLCA3MzE5MCwgNzMyMDEsIDczMjExLCA3MzIyMiwgNzMyMzQsIDczMjQ1LCA3MzI1NSwgNzMyNjQsIAotICAgIDczMjcyLCA3MzI4MSwgNzMyOTEsIDczMzAwLCA3MzMxMCwgNzMzMjEsIDczMzMxLCA3MzM0MCwgNzMzNTAsIDczMzYxLCAKLSAgICA3MzM3MSwgNzMzODIsIDczMzk0LCA3MzQwNSwgNzM0MTUsIDczNDI0LCA3MzQzNCwgNzM0NDUsIDczNDU1LCA3MzQ2NiwgCi0gICAgNzM0NzgsIDczNDg5LCA3MzQ5OSwgNzM1MTAsIDczNTIyLCA3MzUzMywgNzM1NDUsIDczNTU4LCA3MzU3MCwgNzM1ODEsIAotICAgIDczNTkxLCA3MzYwMCwgNzM2MDgsIDczNjE1LCA3MzYyMywgNzM2MzIsIDczNjQwLCA3MzY0OSwgNzM2NTksIDczNjY4LCAKLSAgICA3MzY3NiwgNzM2ODUsIDczNjk1LCA3MzcwNCwgNzM3MTQsIDczNzI1LCA3MzczNSwgNzM3NDQsIDczNzUyLCA3Mzc2MSwgCi0gICAgNzM3NzEsIDczNzgwLCA3Mzc5MCwgNzM4MDEsIDczODExLCA3MzgyMCwgNzM4MzAsIDczODQxLCA3Mzg1MSwgNzM4NjIsIAotICAgIDczODc0LCA3Mzg4NSwgNzM4OTUsIDczOTA0LCA3MzkxMiwgNzM5MjEsIDczOTMxLCA3Mzk0MCwgNzM5NTAsIDczOTYxLCAKLSAgICA3Mzk3MSwgNzM5ODAsIDczOTkwLCA3NDAwMSwgNzQwMTEsIDc0MDIyLCA3NDAzNCwgNzQwNDUsIDc0MDU1LCA3NDA2NCwgCi0gICAgNzQwNzQsIDc0MDg1LCA3NDA5NSwgNzQxMDYsIDc0MTE4LCA3NDEyOSwgNzQxMzksIDc0MTUwLCA3NDE2MiwgNzQxNzMsIAotICAgIDc0MTg1LCA3NDE5OCwgNzQyMTAsIDc0MjIxLCA3NDIzMSwgNzQyNDAsIDc0MjQ4LCA3NDI1NywgNzQyNjcsIDc0Mjc2LCAKLSAgICA3NDI4NiwgNzQyOTcsIDc0MzA3LCA3NDMxNiwgNzQzMjYsIDc0MzM3LCA3NDM0NywgNzQzNTgsIDc0MzcwLCA3NDM4MSwgCi0gICAgNzQzOTEsIDc0NDAwLCA3NDQxMCwgNzQ0MjEsIDc0NDMxLCA3NDQ0MiwgNzQ0NTQsIDc0NDY1LCA3NDQ3NSwgNzQ0ODYsIAotICAgIDc0NDk4LCA3NDUwOSwgNzQ1MjEsIDc0NTM0LCA3NDU0NiwgNzQ1NTcsIDc0NTY3LCA3NDU3NiwgNzQ1ODYsIDc0NTk3LCAKLSAgICA3NDYwNywgNzQ2MTgsIDc0NjMwLCA3NDY0MSwgNzQ2NTEsIDc0NjYyLCA3NDY3NCwgNzQ2ODUsIDc0Njk3LCA3NDcxMCwgCi0gICAgNzQ3MjIsIDc0NzMzLCA3NDc0MywgNzQ3NTQsIDc0NzY2LCA3NDc3NywgNzQ3ODksIDc0ODAyLCA3NDgxNCwgNzQ4MjUsIAotICAgIDc0ODM3LCA3NDg1MCwgNzQ4NjIsIDc0ODc1LCA3NDg4OSwgNzQ5MDIsIDc0OTE0LCA3NDkyNSwgNzQ5MzUsIDc0OTQ0LCAKLSAgICA3NDk1MiwgNzQ5NTksIDc0OTY0LCA4NDE5LCA3NDk3MSwgMzUwNzAsIDc0OTc2LCA3NDk4MSwgMzUwNzUsIDc0OTg3LCAKLSAgICAyMjU3OSwgMzUwODAsIDc0OTkyLCA3NDk5OCwgNzUwMDYsIDc1MDEyLCA3NTAxOCwgNzUwMjUsIDc1MDMyLCA3NTAzNywgCi0gICAgNzUwNDEsIDc1MDQ1LCA3NTA0OCwgNzUwNTIsIDc1MDYxLCA3NTA3MCwgNzUwNzgsIDc1MDg0LCA3NTA5NiwgNzUxMDcsIAotICAgIDc1MTExLCAzMTQwLCA4Mzk0LCA3NTExNiwgNzUxMTksIDc1MTIxLCA3NTEyNSwgNzUxMjksIDc1MTMzLCA3NTEzOSwgCi0gICAgNzUxNDQsIDI3OTkwLCA3NTE0OSwgNzUxNTMsIDc1MTU2LCA3NTE2MSwgNzUxNjUsIDc1MTcyLCA3NTE3OCwgNzUxODIsIAotICAgIDY0ODUsIDc1MTg2LCAzNTA5NywgNzUxOTEsIDc1MTk4LCA3NTIwNywgNzUyMTUsIDc1MjI2LCA3NTIzNCwgNzUyNDMsIAotICAgIDc1MjUxLCA3NTI1OCwgNzUyNjUsIDc1MjcxLCA3NTI4MiwgMzUxMDIsIDc1Mjg3LCA3NTI5OCwgNzUzMTAsIDc1MzE4LCAKLSAgICA3NTMyOSwgNzUzMzgsIDc1MzQ5LCA3NTM1NCwgNzUzNjIsIDI1OTUsIDc1MzY3LCAzNzE2NiwgNzUzODAsIDc1Mzg0LCAKLSAgICA3NTM5NiwgNzU0MDQsIDc1NDA5LCA3NTQxNywgNzU0MjgsIDE5MTE0LCA3NTQzNywgNzU0NDMsIDc1NDUwLCA3NTQ1OCwgCi0gICAgNzU0NjQsIDM1MTEyLCA3NTQ2OSwgNDEzOSwgNjMwNTYsIDc1NDc2LCA3NTQ3OSwgNzU0ODcsIDc1NTAwLCA3NTUxMywgCi0gICAgNzU1MjYsIDc1NTM5LCA3NTU0NiwgNzU1NTcsIDc1NTY2LCA3NTU3MSwgNDY1MjEsIDQ2NTI2LCA3NTU3NSwgNzU1NzksIAotICAgIDc1NTg3LCA3NTU5NCwgNzU2MDMsIDc1NjExLCA3NTYxNywgNzU2MjYsIDc1NjM0LCA3NTY0MSwgNzU2NDksIDc1NjUzLCAKLSAgICA3NTY2MiwgNzU2NzEsIDc1NjgxLCA3NTY5NCwgNzU3MDcsIDc1NzE3LCAzNTExNywgNzU3MjMsIDc1NzMwLCA3NTczNiwgCi0gICAgNzU3NDIsIDM1MTIzLCA3NTc0NywgNzU3NTAsIDc1NzU0LCA3NTc2MiwgNzU3NzEsIDQ2MjU5LCA3NTc3OSwgNzU3ODgsIAotICAgIDc1Nzk2LCA3NTgwMywgNzU4MTEsIDc1ODIxLCA3NTgzMCwgNzU4MzksIDM2NDIwLCA3NTg0OCwgNzU4NTksIDc1ODc0LCAKLSAgICA3NTg4NCwgOTkwNCwgMjMyNjMsIDc1ODkzLCA3NTg5OCwgNzU5MDMsIDc1OTA3LCA3NTkxMiwgNzU5MTYsIDc1OTIxLCAKLSAgICA3NTkyNywgNzU5MzIsIDc1OTM3LCA3NTk0MywgNzU5NDgsIDc1OTUzLCAyMzIyOCwgNzU5NTgsIDc1OTY1LCA3NTk3MywgCi0gICAgNzU5ODEsIDc1OTg5LCA3NTk5NCwgNzYwMDEsIDc2MDA4LCA3NjAxMywgMjI3MiwgNzYwMTcsIDc2MDIxLCA3NjAyOSwgCi0gICAgNzYwMzcsIDM1MTQwLCA3NjA0MywgNzYwNDksIDc2MDYxLCA3NjA2NywgNzYwNzQsIDc2MDc4LCA3NjA4NSwgNzYwOTAsIAotICAgIDc2MDk3LCA3NjEwMywgNzYxMTAsIDc2MTIxLCA3NjEzMSwgNzYxNDEsIDc2MTUzLCA3NjE1OSwgNzYxNjcsIDc2MTczLCAKLSAgICA3NjE4MywgNzYxOTMsIDM1MTY3LCA3NjIwMiwgNzYyMTEsIDc2MjE3LCA3NjIyOSwgNzYyNDAsIDc2MjQ3LCA3NjI1MiwgCi0gICAgNzYyNTYsIDc2MjY0LCA3NjI3MCwgNzYyNzUsIDc2MjgwLCA3NjI4NywgNzYyOTUsIDc2MzA3LCA3NjMxNywgNzYzMjYsIAotICAgIDc2MzM1LCA3NjM0MiwgMzcwMTksIDI1NzY0LCA3NjM0OCwgNzYzNTMsIDc2MzU3LCA3NjM2MSwgNzYzNjYsIDc2Mzc0LCAKLSAgICA3NjM4MCwgNzYzOTEsIDc2NDA0LCA3NjQwOSwgNzY0MTYsIDM1MTcyLCA3NjQyMSwgNzY0MzMsIDc2NDQyLCA3NjQ1MCwgCi0gICAgNzY0NjAsIDc2NDcxLCA3NjQ4NCwgNzY0OTEsIDc2NTAwLCA3NjUwOSwgNzY1MTcsIDc2NTIyLCA3NjUyOCwgMTUwMCwgCi0gICAgNzY1MzMsIDc2NTM4LCA3NjU0MywgNzY1NDgsIDc2NTU0LCA3NjU1OSwgNzY1NjQsIDc2NTcwLCA3NjU3NiwgNzY1ODEsIAotICAgIDc2NTg1LCA3NjU5MCwgNzY1OTUsIDc2NjAwLCA2MzYxMSwgNzY2MDUsIDc2NjEwLCA3NjYxNSwgNzY2MjAsIDc2NjI2LCAKLSAgICA3NjYzMiwgNzY2MzcsIDc2NjQxLCA3NjY0NiwgNzY2NTEsIDc2NjU2LCA3NjY2MiwgNzY2NjcsIDc2NjczLCA3NjY3OCwgCi0gICAgNzY2ODMsIDc2Njg4LCA3NjY5MywgNzY2OTcsIDc2NzAzLCA3NjcwOCwgNzY3MTcsIDc2NzIyLCA3NjcyNywgNzY3MzIsIAotICAgIDc2NzM3LCA3Njc0MSwgNzY3NDgsIDc2NzU0LCA0NDMwLCAxODczNywgMzEwNSwgNzY3NTksIDc2NzYzLCA3Njc2OCwgCi0gICAgNzY3NzIsIDc2Nzc2LCA3Njc4MCwgNTAzMjEsIDc2Nzg0LCA3NjcwOSwgNzY3ODYsIDc2Nzk2LCAzNTE4MSwgNzY3OTksIAotICAgIDc2ODA0LCA3NjgxMywgNzY4MTksIDY0NTQsIDM1MTg2LCA3NjgyMywgNzY4MjksIDc2ODM0LCA3Njg0MCwgNzY4NDUsIAotICAgIDc2ODQ5LCA3Njg1NiwgNzY4NjEsIDc2ODcxLCA3Njg4MCwgNzY4ODQsIDc2ODkwLCA3Njg5NiwgNzY5MDIsIDc2OTA2LCAKLSAgICA3NjkxNCwgNzY5MjEsIDc2OTI5LCA3NjkzNywgMzUxOTEsIDc2OTQ0LCA3Njk0NywgNzY5NTQsIDc2OTYwLCA3Njk2NSwgCi0gICAgNzY5NjksIDc2OTc1LCA3Njk4MiwgNzY5ODcsIDc2OTkxLCA3NzAwMCwgNzcwMDgsIDc3MDE0LCA3NzAxOSwgMzUxOTYsIAotICAgIDc3MDI2LCA3NzAzOCwgNzcwNDUsIDc3MDUxLCA3NzA1NiwgNzcwNjIsIDc3MDY5LCA3NzA3NSwgMjI5NzksIDI5NTg5LCAKLSAgICA3NzA4MSwgNzcwODYsIDc3MDkyLCA3NzA5NiwgNzcxMDgsIDc2NzQyLCA3Njc0OSwgMjMxNjAsIDc3MTE4LCA3NzEyMywgCi0gICAgNzcxMzAsIDc3MTM2LCA3NzE0MywgNzcxNDksIDc3MTYwLCA3NzE2NSwgNzcxNzMsIDk2MDksIDc3MTc4LCA3NzE4MSwgCi0gICAgNzcxODcsIDc3MTkxLCA3NzE5NSwgNzcxOTgsIDc3MjA0LCAzNDkzNCwgNDQzMSwgMTA2NywgMTQ1OTYsIDc3MjExLCAKLSAgICA3NzIxNywgNzcyMjMsIDc3MjI5LCA3NzIzNSwgNzcyNDEsIDc3MjQ3LCA3NzI1MywgNzcyNTksIDc3MjY0LCA3NzI2OSwgCi0gICAgNzcyNzQsIDc3Mjc5LCA3NzI4NCwgNzcyODksIDc3Mjk0LCA3NzI5OSwgNzczMDQsIDc3MzA5LCA3NzMxNCwgNzczMTksIAotICAgIDc3MzI0LCA3NzMzMCwgNzczMzUsIDc3MzQwLCA3NzM0NiwgNzczNTEsIDc3MzU2LCA3NzM2MiwgNzczNjgsIDc3Mzc0LCAKLSAgICA3NzM4MCwgNzczODYsIDc3MzkyLCA3NzM5OCwgNzc0MDQsIDc3NDEwLCA3NzQxNSwgNzc0MjAsIDc3NDI2LCA3NzQzMSwgCi0gICAgNzc0MzYsIDc3NDQyLCA3NzQ0NywgNzc0NTIsIDc3NDU3LCA3NzQ2MiwgNzc0NjcsIDc3NDcyLCA3NzQ3NywgNzc0ODIsIAotICAgIDc3NDg3LCA3NzQ5MiwgNzc0OTcsIDc3NTAyLCA3NzUwOCwgNzc1MTMsIDc3NTE4LCA3NzUyMywgNzc1MjksIDc3NTM0LCAKLSAgICA3NzUzOSwgNzc1NDQsIDc3NTQ5LCA3NzU1NSwgNzc1NjAsIDc3NTY1LCA3NzU3MCwgNzc1NzUsIDc3NTgwLCA3NzU4NSwgCi0gICAgNzc1OTAsIDc3NTk1LCA3NzYwMCwgNzc2MDUsIDc3NjEwLCA3NzYxNSwgNzc2MjAsIDc3NjI1LCA3NzYzMCwgNzc2MzUsIAotICAgIDc3NjQwLCA3NzY0NSwgNzc2NTAsIDc3NjU2LCA3NzY2MSwgNzc2NjYsIDc3NjcxLCA3NzY3NiwgNzc2ODEsIDc3Njg2LCAKLSAgICA3NzY5MSwgMTg5MCwgMTYzLCA3NzY5NiwgNzc3MDAsIDc3NzA0LCA3NzcwOSwgNzc3MTcsIDc3NzIxLCA3NzcyOCwgNzc3MzYsIAotICAgIDc3NzQwLCA3Nzc1MywgNzc3NjEsIDc3NzY2LCA3Nzc3MSwgMjgzOTQsIDc3Nzc1LCA3Nzc4MCwgNzc3ODQsIDc3Nzg5LCAKLSAgICA3Nzc5MywgNzc4MDEsIDc3ODA1LCAyMjU4NywgNzc4MTAsIDc3ODE0LCA2NjE2MiwgNzc4MTgsIDc3ODIxLCA3NzgyOSwgCi0gICAgNzc4MzcsIDc3ODQ1LCA3Nzg1MCwgNzc4NTUsIDc3ODYyLCA3Nzg2OSwgNzc4NzUsIDc3ODgxLCA3Nzg4NiwgNzc4OTEsIAotICAgIDc3ODk5LCA3MDU1MSwgNzc5MDYsIDY1OTQ4LCA3NzkxMSwgNzc5MTYsIDc3OTIwLCA3NzkyNywgNjU5NzUsIDEyNzQzLCAKLSAgICA3NzkzMywgNzc5MzgsIDc3OTQzLCA3Nzk0NywgNzc5NTAsIDc3OTU2LCA3Nzk2MCwgNzc5NzAsIDc3OTc5LCA3Nzk4MywgCi0gICAgNzc5ODYsIDc3OTkwLCA3Nzk5NywgNzgwMTAsIDc4MDE2LCA3ODAyNCwgNzgwMzMsIDc4MDQ0LCA3ODA1NSwgNzgwNjYsIAotICAgIDc4MDc3LCA3ODA4NiwgNzgwOTIsIDc4MTAxLCA3ODEwOSwgNzgxMTksIDc4MTMyLCA3ODE0MCwgNzgxNDcsIDc4MTU4LCAKLSAgICA3ODE2NCwgNzgxNjksIDc4MTc0LCA3ODE4MCwgNzgxODYsIDc4MTk2LCA3ODIwMywgNzgyMTMsIDc4MjIyLCA3NjQyMywgCi0gICAgNzgyMzAsIDc4MjM2LCA3ODI0NCwgNzgyNTAsIDc4MjU3LCA3ODI2NSwgNzgyNzAsIDc4MjczLCA3ODI3NywgNzgyODEsIAotICAgIDc4Mjg0LCA3ODI5MCwgNzgyOTYsIDc4MzA0LCA3ODMxNiwgNzgzMjgsIDc4MzM1LCA3ODM0MCwgNzgzNDQsIDc4MzU1LCAKLSAgICA3ODM2MywgNzgzNzAsIDc4MzgyLCA3ODM5MCwgNzgzOTgsIDc4NDA1LCA3ODQxMSwgNzg0MTYsIDc4NDI2LCA3ODQzNSwgCi0gICAgNzg0NDAsIDc4NDUwLCA3ODQ1OSwgNDU1NDksIDc4NDY2LCA3ODQ3MCwgNzg0NzUsIDc4NDgzLCA3ODQ5MCwgNzg0OTYsIAotICAgIDc4NTAwLCA3ODUxMCwgNzg1MjEsIDc4NTI5LCA3ODUzNiwgNzg1NDgsIDc4NTYwLCA3ODU2OSwgNzUzNzAsIDc4NTc2LCAKLSAgICA3ODU4NiwgNzg1OTgsIDc4NjA5LCA3ODYyMywgNzg2MzEsIDc4NjQxLCA3ODY0OCwgNzg2NTYsIDc4NjY5LCA3ODY4MSwgCi0gICAgNzg2OTAsIDc4Njk4LCA3ODcwOCwgNzg3MTksIDc4NzMxLCA3ODc0MCwgNzg3NTAsIDc4NzYwLCA3ODc2OSwgNzg3NzYsIAotICAgIDc4Nzg1LCA3ODgwMCwgNzg4MDgsIDc4ODE4LCA3ODgyNywgNzg4MzUsIDc4ODQ4LCA2MzAyNiwgNzg4NjMsIDc4ODczLCAKLSAgICA3ODg4MiwgNzg4OTQsIDc4OTA0LCA3ODkxNiwgNzg5MjcsIDc4OTM4LCA3ODk0OSwgNzg5NTksIDc4OTcwLCA3ODk3OCwgCi0gICAgNzg5ODQsIDc4OTk0LCA3OTAwMiwgNzkwMDgsIDMxMjkxLCA3OTAxMywgNzkwMTksIDc5MDI4LCA3OTA0MCwgNzkwNDUsIAotICAgIDc5MDUyLCAxMDQ0OCwgMTkxMzQsIDc5MDU4LCA3OTA2NywgNzkwNzIsIDc5MDc2LCA3OTA4MywgNzkwODksIDc5MDk0LCAKLSAgICA3OTA5OSwgNzkxMDcsIDc5MTE1LCAxMzExOSwgNzkxMTksIDc5MTIyLCA3OTEyNCwgNzkxMzEsIDc5MTM3LCA3OTE0OCwgCi0gICAgNzkxNTMsIDc5MTU3LCA3OTE2NCwgNzkxNzAsIDc5MTc1LCA3OTE4MywgNzExMjAsIDcxMTMwLCA3OTE4OSwgNzkxOTYsIAotICAgIDc5MjA2LCAxMTU0MywgNzkyMTMsIDc5MjE4LCAzMTUwNiwgNzkyMjcsIDc5MjMyLCA3OTIzOSwgNzkyNDksIDc5MjU3LCAKLSAgICA3OTI2NSwgNzkyNzQsIDc5MjgwLCA3OTI4NiwgNzkyOTMsIDc5MzAwLCA3OTMwNSwgNzkzMDksIDc5MzE3LCA2NTk5MiwgCi0gICAgNzkzMjIsIDc5MzMxLCA3OTMzOSwgNzkzNDYsIDc5MzUxLCA3OTM1NSwgNzkzNjQsIDc5MzcwLCA3OTM3MywgNzkzNzcsIAotICAgIDc5Mzg2LCA3OTM5NiwgNzc3NDgsIDc5NDA1LCA3OTQwOSwgNzk0MTcsIDc5NDIxLCA3OTQyNywgNzk0MzgsIDc5NDQ4LCAKLSAgICAxOTE0MywgNzk0NTksIDc5NDY4LCA3OTQ3NiwgNzk0ODQsIDc5NDkxLCA2NjAxMSwgOTE0NywgNzk0OTksIDc5NTAzLCAKLSAgICA3OTUxMiwgNzk1MTksIDc5NTIyLCAyOTQ3MCwgNzk1MjUsIDc5NTI5LCA3OTUzNCwgNzk1NTEsIDc5NTYzLCAxMTUwMSwgCi0gICAgNzk1NzUsIDc5NTgwLCA3OTU4NSwgNzk1OTAsIDIyNjY5LCA3OTU5NCwgNzk1OTksIDc5NjA0LCA3OTYxMCwgNzk2MTUsIAotICAgIDYxMjIsIDc5NjIwLCAyMjY3MywgNzk2MjUsIDc5NjMwLCA3OTYzNiwgNzk2NDMsIDc5NjQ4LCA3OTY1MywgNzk2NTksIAotICAgIDc5NjY1LCA3OTY3MSwgNzk2NzYsIDc5NjgyLCA3OTY4NiwgNzk3MDAsIDc5NzA4LCA3OTcxNiwgNzk3MjIsIDc5NzI3LCAKLSAgICA3OTczNCwgNzk3NDQsIDc5NzUzLCA3OTc1OCwgNzk3NjMsIDc5NzY4LCA3OTc3NiwgNzk3ODEsIDc5Nzg3LCA3OTc5MiwgCi0gICAgNzk4MDEsIDY0NzEzLCA3OTgwNiwgNzk4MDksIDc5ODI3LCA3OTg0NiwgNzk4NTksIDc5ODczLCA3OTg4OSwgNzk4OTYsIAotICAgIDc5OTAzLCA3OTkxMiwgNzk5MTksIDc5OTI1LCA3OTkzMiwgNzk5MzcsIDc5OTQzLCA3OTk0OSwgNzk5NTcsIDc5OTYzLCAKLSAgICA3OTk2OCwgNzk5NzMsIDc5OTg5LCAxMTUxNCwgODAwMDMsIDgwMDEwLCA4MDAxOCwgODAwMjQsIDgwMDI4LCA4MDAzMSwgCi0gICAgODAwMzYsIDgwMDQxLCA4MDA0OCwgODAwNTMsIDgwMDYyLCA4MDA2OCwgODAwNzMsIDgwMDc5LCA4MDA4NSwgODAwOTQsIAotICAgIDgwMTAzLCA4MDEwOCwgODAxMTIsIDgwMTIwLCA4MDEyOSwgMTI3NzIsIDgwMTM4LCA4MDE0NCwgODAxNTIsIDgwMTU4LCAKLSAgICA4MDE2NCwgODAxNzAsIDgwMTc1LCA4MDE4MiwgODAxODgsIDEyNzgzLCA4MDE5MywgODAxOTYsIDgwMjAxLCAzNTIyMywgCi0gICAgODAyMTEsIDgwMjIwLCA4MDIyNSwgODAyMzEsIDgwMjM2LCA4MDI0NCwgODAyNTEsIDgwMjYyLCA4MDI3MiwgODAyNzcsIAotICAgIDgwMjg1LCA3MDQ3NCwgODAyOTAsIDgwMjk2LCA4MDMwMSwgODAzMDgsIDgwMzE3LCA4MDMyNSwgODAzMjksIDgwMzM1LCAKLSAgICA4MDM0MSwgODAzNDgsIDgwMzU0LCA4MDM1OCwgMTg1MTgsIDMxMTQsIDgwMzYzLCA4MDM2NywgODAzNzEsIDgwMzc3LCAKLSAgICA4MDM4NiwgODAzOTIsIDgwMzk5LCA4MDQwMywgODA0MjQsIDgwNDQ2LCA4MDQ2MiwgODA0NzksIDgwNDk4LCA4MDUwNywgCi0gICAgODA1MTcsIDgwNTI1LCA4MDUzMiwgODA1MzksIDgwNTQ1LCAyOTM0MiwgODA1NTksIDgwNTYzLCA4MDU2OSwgODA1NzcsIAotICAgIDgwNTg5LCA4MDU5NSwgODA2MDMsIDgwNjEwLCA4MDYxNSwgODA2MjAsIDgwNjI0LCA4MDYzMiwgODA2MzksIDgwNjQzLCAKLSAgICA4MDY0OSwgODA2NTUsIDgwNjYwLCAzNzMwLCA0NjcyMSwgODA2NjYsIDgwNjcwLCA4MDY3NCwgODA2NzgsIDgwNjgzLCAKLSAgICA4MDY4OCwgODA2OTMsIDgwNjk5LCA4MDcwNSwgODA3MTEsIDgwNzE4LCA4MDcyNCwgODA3MzEsIDgwNzM3LCA4MDc0MywgCi0gICAgODA3NDgsIDgwNzU0LCA4MDc1OSwgODA3NjMsIDgwNzY4LCA4MDc3MiwgODA3NzcsIDQ2NzM2LCA4MDc4MSwgODA3ODYsIAotICAgIDgwNzk0LCA4MDc5OCwgODA4MDMsIDgwODEwLCA4MDgxOSwgODA4MjUsIDgwODM0LCA4MDgzOCwgODA4NDUsIDgwODQ5LCAKLSAgICA4MDg1MiwgODA4NTksIDgwODY1LCA4MDg3NCwgODA4ODQsIDgwODg5LCA4MDg5MywgODA5MDEsIDgwOTEwLCA4MDkxNCwgCi0gICAgODA5MjIsIDgwOTI4LCA4MDkzMywgODA5MzgsIDgwOTQ0LCA4MDk1MCwgODA5NTUsIDgwOTU5LCA4MDk2NSwgODA5NzAsIAotICAgIDgwOTc0LCA4MDk3OCwgODA5ODEsIDgwOTg2LCA4MDk5NCwgODEwMDQsIDgxMDEwLCA4MTAxNSwgODEwMjUsIDQ0MDMxLCAKLSAgICA4MTAzMywgODEwNDUsIDgxMDQ5LCA4MTA1NSwgODEwNjcsIDgxMDc4LCA4MTA4NSwgODEwOTEsIDgxMDk4LCA4MTEwNSwgCi0gICAgODExMTcsIDgxMTI0LCA4MTEzMCwgMjI3NDcsIDgxMTM0LCA4MTE0MiwgODExNDgsIDgxMTU1LCA4MTE2MSwgODExNjcsIAotICAgIDgxMTczLCA4MTE3OCwgODExODMsIDgxMTg4LCA4MTE5NywgODEyMDUsIDgxMjE2LCA3MzUwLCA4MTIyMSwgMTc5NjcsIAotICAgIDgxMjI3LCA4MTIzMSwgODEyMzUsIDgxMjM5LCA4MTI0NywgODEyNTYsIDgxMjYwLCA4MTI2NywgODEyNzYsIDgxMjg0LCAKLSAgICA4MTI5NywgODEzMDMsIDgwNzczLCAzMjM5MCwgODEzMDgsIDgxMzEwLCA4MTMxNSwgODEzMjAsIDgxMzI1LCA4MTMzMCwgCi0gICAgODEzMzUsIDgxMzQwLCA4MTM0NSwgODEzNTAsIDgxMzU1LCA4MTM2MCwgODEzNjUsIDgxMzcwLCA4MTM3NSwgODEzODAsIAotICAgIDgxMzg2LCA4MTM5MSwgODEzOTYsIDgxNDAxLCA4MTQwNiwgODE0MTEsIDgxNDE2LCA4MTQyMSwgODE0MjYsIDgxNDMyLCAKLSAgICA4MTQzOCwgODE0NDQsIDgxNDQ5LCA4MTQ1NCwgODE0NjYsIDgxNDcxLCAxODk2LCA2MywgODE0NzYsIDgxNDgxLCAzNTIyOSwgCi0gICAgODE0ODUsIDM1MjM0LCAzNTIzOSwgMzUyNDUsIDM1MjUwLCA4MTQ4OSwgMzUyNTUsIDIzNzg1LCA4MTUxMSwgODE1MTUsIAotICAgIDgxNTE5LCA4MTUyNCwgODE1MjgsIDM1MjU5LCA4MTUzMiwgODE1NDAsIDgxNTQ3LCAzNTI2NCwgODE1NTMsIDgxNTU2LCAKLSAgICA4MTU2MSwgODE1NjUsIDgxNTc0LCAxMDI2NiwgODE1ODIsIDM1MjY5LCAyMzY0MSwgODE1ODUsIDgxNTg5LCA4MTU5NywgCi0gICAgMTQxMiwgODE2MDIsIDM1MjgwLCA4MTYwNSwgODE2MTAsIDI3NzUwLCAyNzc2MCwgMzgxODIsIDgxNjE1LCA4MTYyMCwgCi0gICAgODE2MjUsIDgxNjMwLCA4MTYzNiwgODE2NDEsIDgxNjUwLCA4MTY1NSwgODE2NjQsIDgxNjcyLCA4MTY3OSwgODE2ODUsIAotICAgIDgxNjkwLCA4MTY5NSwgODE3MDAsIDgxNzEwLCA4MTcxOSwgODE3MjcsIDgxNzMyLCA4MTc0MCwgODE3NDQsIDgxNzUyLCAKLSAgICA4MTc1NiwgODE3NjMsIDgxNzcxLCAzNTA4OCwgNDExOTIsIDgxNzc4LCA4MTc4NCwgODE3ODksIDgxNzk0LCAxMzE1NCwgCi0gICAgMzA1MjksIDgxNzk5LCA4MTgwNCwgODE4MTEsIDgxODE3LCA4MTgyMiwgODE4MzAsIDgxODQwLCA4MTg1MCwgODE4NTYsIAotICAgIDgxODYxLCA4MTg2NywgMTkxNjUsIDgxODc0LCAzOTA1MiwgODE4ODcsIDgxODkyLCA4MTg5OCwgMzMzODEsIDgxOTExLCAKLSAgICA4MTkxNywgODE5MjEsIDgxOTMwLCA4MTkzOSwgODE5NDYsIDgxOTUyLCA4MTk2MCwgODE5NjksIDgxOTc2LCA4MTk4MiwgCi0gICAgODE5ODUsIDgxOTg5LCA4MTk5MywgMjc4OTEsIDgxOTk3LCA4MjAwNCwgODIwMTAsIDgyMDE4LCA4MjAyMywgODIwMjcsIAotICAgIDI1OTExLCA4MjAzMywgODIwMzYsIDgyMDQ0LCA4MjA1MSwgODIwNTksIDgyMDcyLCA4MjA4NiwgODIwOTMsIDgyMDk5LCAKLSAgICA4MjEwNiwgODIxMTIsIDM1Mjk0LCA4MjExNiwgODIxMjMsIDgyMTMxLCA4MjEzOSwgODIxNDUsIDM1Mjk5LCA4MjE1MywgCi0gICAgODIxNTksIDgyMTY0LCA4MjE3NCwgODIxODAsIDgyMTg5LCAzMzE4MywgMzc2MTQsIDgyMTk3LCA4MjIwMiwgODIyMDcsIAotICAgIDgyMjExLCA4MjIxNiwgODIyMjAsIDgyMjI4LCA4MjIzMywgMTYyOTYsIDQ0MDQ0LCA4MjIzNywgODIyNDIsIDM1MzA0LCAKLSAgICA2NzU0NywgODIyNDYsIDgyMjUxLCA4MjI1NSwgODIyNjIsIDgyMjcxLCA4MjI3NSwgODIyODMsIDgyMjg5LCA4MjI5NCwgCi0gICAgODIzMDAsIDgyMzA1LCA4MjMxMiwgODIzMTgsIDgyMzIzLCA4MjMyOCwgODIzMzksIDgyMzQ4LCA4MjM2MCwgODIzNzUsIAotICAgIDM1NTcxLCA4MjM4MSwgMTgwODYsIDM1MzA4LCA4MjM4NSwgODIzOTIsIDgyMzk4LCAyNjAyNywgODI0MDIsIDgyNDA5LCAKLSAgICA4MjQxOCwgODI0MjUsIDgyNDM0LCA4MjQ0MCwgODI0NDUsIDgyNDUzLCA4MjQ1OSwgMzUzMTgsIDgyNDY0LCA4MjQ3MywgCi0gICAgODEwNzMsIDgyNDgyLCA4MjQ4OSwgODI0OTUsIDgyNTAxLCA4MjUxMCwgODI1MjAsIDgyNTI4LCA4MjUzNSwgODI1MzksIAotICAgIDM1MzIzLCA4MjU0MiwgMzUzMjksIDM1MzM1LCA4MjU0NywgODI1NTUsIDgyNTYzLCA4MjU3MywgODI1ODIsIDgyNTkwLCAKLSAgICA4MjU5NywgODI2MDcsIDM1MzQwLCA4MjYxMSwgODI2MTMsIDgyNjE3LCA4MjYyMiwgODI2MjYsIDgyNjMwLCA4MjYzNiwgCi0gICAgODI2NDEsIDgyNjQ1LCA4MjY1NiwgODI2NjEsIDgyNjY2LCAzMTE5LCA4MjY3MCwgODI2NzcsIDgyNjgxLCA4MjY5MCwgCi0gICAgODI2OTgsIDgyNzA1LCA4MjcxMCwgODI3MTUsIDY3NTk4LCA4MjcxOSwgODI3MjIsIDgyNzI4LCA4MjczNiwgODI3NDIsIAotICAgIDgyNzQ2LCA4Mjc1MSwgODI3NTgsIDgyNzYzLCA4Mjc2OCwgODI3NzIsIDgyNzc4LCA4Mjc4MywgMzc2NDUsIDgyNzg3LCAKLSAgICA4Mjc5MCwgODI3OTUsIDgyNzk5LCA4MjgwNCwgODI4MTEsIDgyODE2LCA4MjgyMCwgNDI1ODAsIDgyODI4LCAyNzc2OSwgCi0gICAgMjc3NzgsIDgyODM0LCA4Mjg0MCwgODI4NDYsIDgyODUxLCA4Mjg1NSwgODI4NTgsIDgyODY4LCA4Mjg3NywgODI4ODIsIAotICAgIDgyODg4LCA4Mjg5NSwgODI5MDEsIDgyOTA1LCA4MjkxMywgODI5MTgsIDM3NjUxLCA3Nzk1MiwgODI5MjIsIDgyOTMwLCAKLSAgICA4MjkzNiwgODI5NDMsIDgyOTQ4LCA4Mjk1MiwgODI5NTcsIDYzMjQyLCA4Mjk2MywgODI5NjksIDM3NjU3LCA4Mjk3NCwgCi0gICAgODI5NzksIDgyOTgzLCA4Mjk4OCwgODI5OTMsIDgyOTk4LCA4MzAwMiwgODMwMDcsIDgzMDEyLCA4MzAxOCwgODMwMjMsIAotICAgIDgzMDI4LCA4MzAzNCwgODMwNDAsIDgzMDQ1LCA4MzA0OSwgODMwNTQsIDgzMDU5LCA4MzA2NCwgODMwNjgsIDI2MDI2LCAKLSAgICA4MzA3MywgODMwNzgsIDgzMDg0LCA4MzA5MCwgODMwOTYsIDgzMTAxLCA4MzEwNSwgODMxMTAsIDgzMTE1LCA4MzEyMCwgCi0gICAgODMxMjQsIDgzMTI5LCA4MzEzNCwgODMxMzksIDgzMTQ0LCA0Njk5MSwgODMxNDgsIDM1MzQ4LCA4MzE1NiwgODMxNjAsIAotICAgIDgzMTY4LCA4MzE3NiwgODMxODcsIDgzMTkyLCA4MzE5NiwgMjQyMTEsIDc1NDczLCA4MzIwMSwgODMyMDcsIDgzMjEyLCAKLSAgICA4MzIyMiwgODMyMjksIDgzMjM0LCA4MzI0MiwgODMyNTEsIDgzMjU2LCA4MzI2MCwgODMyNjUsIDgzMjczLCA4MzI4MSwgCi0gICAgODMyODgsIDcwNzM2LCA4MzI5NCwgODMzMDIsIDgzMzA5LCA4MzMyMCwgODMzMjYsIDgzMzMyLCAzNTM1OCwgODMzMzUsIAotICAgIDgzMzQyLCA4MzM1MCwgODMzNTUsIDQ0MjQ3LCA4MzM1OSwgODMzNjQsIDgzMzcxLCA4MzM3NiwgOTQ4NCwgODMzODAsIAotICAgIDgzMzg4LCA4MzM5NSwgODM0MDIsIDgzNDExLCA4MzQxOCwgODM0MjQsIDgzNDM4LCA2MTk0LCA4MzQ0NiwgODM0NTIsIAotICAgIDgzNDU2LCA4MzQ1OSwgODM0NjcsIDgzNDc0LCA4MzQ3OSwgODM0OTIsIDgzNDk5LCA4MzUwNSwgODM1MDksIDgzNTE0LCAKLSAgICA4MzUyMSwgODM1MjYsIDY1ODUxLCA4MzUzMSwgODM1MzQsIDgzNTQzLCA4MzU1MCwgODM1NTYsIDgzNTYwLCA4MzU2MywgCi0gICAgODM1NzEsIDgzNTgwLCA4MzU5MCwgODM2MDAsIDgzNjA5LCA4MzYyMCwgODM2MjgsIDgzNjM5LCA4MzY0NCwgODM2NDgsIAotICAgIDgzNjUzLCA4MzY1NywgMzgzMTMsIDgzNjY1LCAyMzA0MiwgMzgzMjIsIDgzNjcwLCA4MzY3NSwgODM2ODAsIDgzNjg1LCAKLSAgICA4MzY5MCwgODM2OTUsIDgzNzAwLCA4MzcwNCwgODM3MDksIDgzNzE0LCA4MzcxOSwgODM3MjQsIDgzNzI5LCA4MzczNCwgCi0gICAgODM3MzgsIDgzNzQzLCA4Mzc0OCwgODM3NTIsIDgzNzU2LCA4Mzc2MCwgODM3NjQsIDgzNzY5LCA4Mzc3NCwgODM3NzgsIAotICAgIDgzNzgzLCA4Mzc4NywgODM3OTEsIDgzNzk2LCA4MzgwMSwgODM4MDYsIDgzODExLCA4MzgxNSwgODM4MjAsIDgzODI1LCAKLSAgICA4MzgyOSwgODM4MzQsIDgzODM5LCA4Mzg0NCwgODM4NDksIDgzODU0LCA4Mzg1OSwgODM4NjQsIDgzODY5LCA4Mzg3NCwgCi0gICAgODM4NzksIDgzODg0LCA4Mzg4OSwgODM4OTQsIDgzODk5LCA4MzkwNCwgODM5MDksIDgzOTE0LCA4MzkxOSwgODM5MjQsIAotICAgIDgzOTI5LCA4MzkzMywgODM5MzgsIDgzOTQzLCA4Mzk0OCwgODM5NTMsIDgzOTU4LCA4Mzk2MywgODM5NjgsIDgzOTczLCAKLSAgICA4Mzk3OCwgODM5ODMsIDgzOTg4LCA4Mzk5MiwgODM5OTcsIDg0MDAxLCA4NDAwNiwgODQwMTEsIDg0MDE2LCA4NDAyMSwgCi0gICAgODQwMjYsIDg0MDMxLCA4NDAzNiwgODQwNDEsIDg0MDQ2LCA4NDA1MCwgODQwNTQsIDg0MDU5LCA4NDA2NCwgODQwNjgsIAotICAgIDg0MDczLCA4NDA3OCwgODQwODIsIDg0MDg3LCA4NDA5MiwgODQwOTcsIDg0MTAyLCA4NDEwNiwgODQxMTEsIDg0MTE2LCAKLSAgICA4NDEyMCwgODQxMjUsIDg0MTI5LCA4NDEzMywgODQxMzcsIDg0MTQxLCA4NDE0NiwgODQxNTAsIDg0MTU0LCA4NDE1OCwgCi0gICAgODQxNjIsIDg0MTY2LCA4NDE3MCwgODQxNzQsIDg0MTc4LCA4NDE4MiwgODQxODcsIDg0MTkyLCA4NDE5NywgODQyMDIsIAotICAgIDg0MjA3LCA4NDIxMiwgODQyMTcsIDg0MjIyLCA4NDIyNywgODQyMzIsIDg0MjM2LCA4NDI0MCwgODQyNDQsIDg0MjQ4LCAKLSAgICA4NDI1MiwgODQyNTYsIDg0MjYxLCA4NDI2NSwgODQyNzAsIDg0Mjc0LCA4NDI3OSwgODQyODQsIDg0Mjg4LCA4NDI5MiwgCi0gICAgODQyOTcsIDg0MzAxLCA4NDMwNSwgODQzMDksIDg0MzEzLCA4NDMxNywgODQzMjEsIDg0MzI1LCA4NDMyOSwgODQzMzMsIAotICAgIDg0MzM3LCA4NDM0MSwgODQzNDUsIDg0MzQ5LCA4NDM1MywgODQzNTgsIDg0MzYzLCA4NDM2NywgODQzNzEsIDg0Mzc1LCAKLSAgICA4NDM3OSwgODQzODMsIDg0Mzg3LCA4NDM5MiwgODQzOTYsIDg0NDAwLCA4NDQwNCwgODQ0MDgsIDg0NDEyLCA4NDQxNiwgCi0gICAgODQ0MjEsIDg0NDI1LCA4NDQzMCwgODQ0MzQsIDg0NDM4LCA4NDQ0MiwgODQ0NDYsIDg0NDUwLCA4NDQ1NCwgODQ0NTgsIAotICAgIDg0NDYyLCA4NDQ2NiwgODQ0NzAsIDg0NDc0LCA4NDQ3OSwgODQ0ODMsIDg0NDg3LCA4NDQ5MSwgODQ0OTUsIDg0NDk5LCAKLSAgICA4NDUwMywgODQ1MDcsIDg0NTExLCA4NDUxNSwgODQ1MTksIDg0NTIzLCA4NDUyOCwgODQ1MzIsIDg0NTM2LCA4NDU0MSwgCi0gICAgODQ1NDYsIDg0NTUwLCA4NDU1NCwgODQ1NTgsIDg0NTYyLCA4NDU2NiwgODQ1NzAsIDg0NTc0LCA4NDU3OCwgODQ1ODMsIAotICAgIDg0NTg3LCA4NDU5MiwgODQ1OTYsIDg0NjAxLCA4NDYwNSwgODQ2MTAsIDg0NjE0LCA4NDYyMCwgODQ2MjUsIDg0NjI5LCAKLSAgICA4NDYzNCwgODQ2MzgsIDg0NjQzLCA4NDY0NywgODQ2NTIsIDg0NjU2LCA4NDY2MSwgMTUxOSwgODQ2NjUsIDI4NzMsIDE3NzQsIAotICAgIDE2OTIsIDI3NzA1LCA4NDY2OSwgMjg4MiwgODQ2NzMsIDEzODEsIDg0Njc4LCAxMzIzLCA4NDY4MiwgODQ2ODYsIDI4OTksIAotICAgIDg0NjkwLCA4NDY5NywgODQ3MDQsIDg0NzE4LCAyOTAzLCA3NDUyLCA4NDcyNywgODQ3MzUsIDg0NzQyLCA4NDc1MywgCi0gICAgODQ3NjIsIDg0NzY5LCA4NDc4MSwgODQ3OTQsIDg0ODA3LCA4NDgxOCwgODQ4MjMsIDg0ODMwLCA4NDg0MiwgODQ4NDYsIAotICAgIDI5MDcsIDEyODUwLCA4NDg1NiwgODQ4NjEsIDg0ODcwLCA4NDg4MCwgODQ4ODUsIDI5MTEsIDg0ODkzLCA4NDg5NywgCi0gICAgODQ5MDIsIDg0OTA5LCA4NDkxNSwgODQ5MjMsIDg0OTM1LCAxMzI4LCAxNDIwMSwgODQ5NDUsIDg0OTQ5LCA4NDk1NSwgCi0gICAgODQ5NjksIDg0OTgxLCA4NDk5MywgODUwMDMsIDg1MDEyLCA4NTAyMSwgODUwMzAsIDg1MDM4LCA4NTA0OSwgODUwNTcsIAotICAgIDQyOTIsIDg1MDY3LCA4NTA3OCwgODUwODcsIDg1MDkzLCA4NTEwOCwgODUxMTUsIDg1MTIxLCA4NTEyNiwgMzg0NDcsIAotICAgIDg1MTMxLCAyOTM1LCAxNDIwNSwgODUxMzUsIDg1MTQyLCA5NDA5LCA4NTE1MSwgMjk0MCwgMzQ3OTYsIDg1MTU3LCA2NTU3MywgCi0gICAgODUxNjQsIDg1MTcwLCA4NTE4MSwgODUxODcsIDg1MTk0LCA4NTIwMCwgODUyMDgsIDg1MjE1LCA4NTIyMSwgODUyMzIsIAotICAgIDg1MjQyLCA4NTI1MSwgODUyNjIsIDg1MjcxLCA4NTI3OCwgODUyODQsIDg1Mjk0LCA4NTMwMiwgODUzMDgsIDg1MzIzLCAKLSAgICA4NTMyOSwgODUzMzQsIDg1MzQxLCA4NTM0NCwgODUzNTAsIDg1MzU3LCA4NTM2MywgODUzNzEsIDg1MzgwLCA4NTM4OCwgCi0gICAgODUzOTQsIDg1NDAzLCA0NjI2MSwgODU0MTcsIDg1NDIyLCA4NTQyOCwgMTYwNzIsIDg1NDMzLCA4NTQ0NiwgODU0NTgsIAotICAgIDg1NDY3LCA4NTQ3NSwgODU0ODIsIDg1NDg2LCA4NTQ5MCwgODU0OTMsIDg1NTAwLCA4NTUwNywgODU1MTUsIDg1NTIzLCAKLSAgICA4NTUzMiwgODU1NDAsIDE1OTgzLCA4NTU0OCwgODU1NTMsIDg1NTU3LCA4NTU2OSwgODU1NzYsIDg1NTg1LCA4NDEsIAotICAgIDg1NTk1LCA4NTYwNCwgODU2MTUsIDI5NTYsIDg1NjE5LCA4NTYyMywgODU2MjksIDg1NjQyLCA4NTY1NCwgODU2NjQsIAotICAgIDg1NjczLCA4NTY4NSwgMjg0NDYsIDg1Njk2LCA4NTcwNCwgODU3MTMsIDg1NzI0LCA4NTczNSwgODU3NDUsIDg1NzU1LCAKLSAgICA4NTc2NCwgODU3NzIsIDEyMzY0LCA4NTc3OSwgODU3ODMsIDg1Nzg2LCA4NTc5MSwgODU3OTYsIDg1ODAwLCA4NTgwNiwgCi0gICAgMTMzMywgODU4MTMsIDg1ODE3LCAxMjkzMiwgODU4MjEsIDg1ODMyLCA4NTg0MSwgODU4NDksIDg1ODU4LCA4NTg2NiwgCi0gICAgODU4ODIsIDg1ODkzLCA4NTkwMiwgODU5MTAsIDg1OTIyLCA4NTkzMywgODU5NDksIDg1OTU5LCA4NTk4MCwgODU5OTQsIAotICAgIDg2MDA3LCA4NjAxNSwgODYwMjIsIDc0OTgsIDg2MDM1LCA4NjA0MCwgODYwNDYsIDYyMDMsIDg2MDUyLCA4NjA1NSwgCi0gICAgODYwNjIsIDg2MDcyLCA4NTU0LCA4NjA3OSwgODYwODQsIDg2MDg5LCA4NjA5NCwgODYxMDIsIDg2MTExLCA4NjExOSwgCi0gICAgODYxMjQsIDg2MTMxLCAxMDQ5NiwgMTA1MDUsIDg2MTM3LCA4NjE0OCwgODYxNTMsIDg2MTU5LCAyOTcyLCAyOTc3LCAKLSAgICA4NjE2NSwgMTE4NTcsIDg2MTcxLCA4NjE3OCwgODYxODUsIDg2MTk4LCAyMjgxLCA4NywgODYyMDMsIDg2MjA4LCA4NjIxNiwgCi0gICAgODYyMjYsIDg2MjM1LCA4NjI0MSwgODYyNTAsIDg2MjU4LCA4NjI2OCwgODYyNzIsIDg2Mjc2LCA4NjI4MSwgODYyODUsIAotICAgIDg2Mjk3LCAzMDAwLCA4NjMwNSwgODYzMTMsIDg2MzE4LCA4NjMyOSwgODYzNDAsIDg2MzUyLCA4NjM2MywgODYzNzMsIAotICAgIDg2MzgyLCAyMzA4MywgODYzODcsIDg2MzkzLCA4NjM5OCwgODY0MDgsIDg2NDE4LCA4NjQyMywgODY0MjksIDg2NDMzLCAKLSAgICA4NjQzOCwgODY0NDcsIDIzMDk1LCA4NjQ1MSwgNDM4NCwgMjQsIDg2NDU2LCA4NjQ2NSwgODY0NzIsIDg2NDc5LCA4NjQ4NSwgCi0gICAgODY0OTEsIDEwNDksIDg2NDk2LCA4NjUwMSwgNjYxMjgsIDg2NTA2LCA4NjUxMSwgODY1MTcsIDg2NTIzLCA4NjUzMSwgCi0gICAgODY1MzYsIDg2NTQ0LCA4NjU1MSwgODY1NTcsIDg2NTYyLCA0MjQ2NCwgNDYxNTUsIDg2NTY4LCAzMDA0LCAzMiwgODY1NzgsIAotICAgIDg2NTkxLCA4NjU5NiwgODY2MDQsIDg2NjA5LCA4NjYxNSwgMzAyNiwgMzA0OTcsIDg2NjIwLCA4NjYyOCwgODY2MzUsIAotICAgIDg2NjQwLCA4NjY0OSwgNjM0OTIsIDQwMTgsIDY3MjE4LCA4NjY1NywgODY2NjEsIDE3MTksIDE4MzMsIDg2NjY2LCA4NjY3MSwgCi0gICAgODY2NzgsIDE4MzcsIDI4MCwgODY2ODUsIDg2NjkxLCA4NjY5NiwgMzA0OCwgODY3MDAsIDg2NzA1LCA4NjcxMiwgMTg0MSwgCi0gICAgODY3MTcsIDg2NzIzLCA4NjcyOCwgODY3NDAsIDY0MzAsIDg2NzUwLCA4Njc1NywgMTg0OCwgODY3NjMsIDg2NzY4LCAKLSAgICA4Njc3NSwgODY3ODIsIDg2Nzk3LCA4NjgwNCwgODY4MTUsIDg2ODIwLCA4NjgyOCwgMjY1NywgODY4MzIsIDg2ODQ0LCAKLSAgICA4Njg0OSwgODY4NTMsIDg2ODU5LCAzMDMxMywgMjI4NiwgODY4NjMsIDg2ODc0LCA4Njg3OCwgODY4ODIsIDg2ODg4LCAKLSAgICA4Njg5MiwgODY5MDEsIDg2OTA1LCA4NjkxNiwgODY5MjAsIDIzMzIsIDM0NjEzLCA4NjkyNCwgODY5MzQsIDMxMzksIAotICAgIDg2OTQyLCA5OTA5LCA4Njk1MSwgODY5NTYsIDg2OTYwLCA4Njk2OSwgODY5NzYsIDg2OTgyLCAzMTA5LCAxNjEzNiwgCi0gICAgODY5ODYsIDg2OTk5LCA4NzAxNywgODcwMjIsIDg3MDMwLCA4NzAzOCwgODcwNDgsIDEwNzY4LCAxNDMxOCwgODcwNjAsIAotICAgIDg3MDczLCA4NzA4MCwgODcwOTQsIDg3MTAxLCA4NzExNywgODcxMjQsIDg3MTMwLCAyMzEyNywgMTM1NTYsIDg3MTM3LCAKLSAgICA4NzE0NCwgODcxNTQsIDg3MTYzLCA0Njk5MCwgODcxNzUsIDQ3MTI1LCA4NzE4MywgODcxODYsIDg3MTkyLCA4NzE5OCwgCi0gICAgODcyMDQsIDg3MjEwLCA4NzIxNiwgODcyMjMsIDg3MjMwLCA4NzIzNiwgODcyNDIsIDg3MjQ4LCA4NzI1NCwgODcyNjAsIAotICAgIDg3MjY2LCA4NzI3MiwgODcyNzgsIDg3Mjg0LCA4NzI5MCwgODcyOTYsIDg3MzAyLCA4NzMwOCwgODczMTQsIDg3MzIwLCAKLSAgICA4NzMyNiwgODczMzIsIDg3MzM4LCA4NzM0NCwgODczNTAsIDg3MzU2LCA4NzM2MiwgODczNjgsIDg3Mzc0LCA4NzM4MCwgCi0gICAgODczODYsIDg3MzkyLCA4NzM5OCwgODc0MDQsIDg3NDEwLCA4NzQxNiwgODc0MjIsIDg3NDI4LCA4NzQzNCwgODc0NDAsIAotICAgIDg3NDQ2LCA4NzQ1MiwgODc0NTgsIDg3NDY0LCA4NzQ3MCwgODc0NzYsIDg3NDgyLCA4NzQ4OCwgODc0OTQsIDg3NTAwLCAKLSAgICA4NzUwNiwgODc1MTIsIDg3NTE4LCA4NzUyNCwgODc1MzAsIDg3NTM2LCA4NzU0MywgODc1NDksIDg3NTU2LCA4NzU2MywgCi0gICAgODc1NjksIDg3NTc2LCA4NzU4MywgODc1ODksIDg3NTk1LCA4NzYwMSwgODc2MDcsIDg3NjEzLCA4NzYxOSwgODc2MjUsIAotICAgIDg3NjMxLCA4NzYzNywgODc2NDMsIDg3NjQ5LCA4NzY1NSwgODc2NjEsIDg3NjY3LCA4NzY3MywgMzEyMywgOTg4MiwgCi0gICAgODc2NzksIDg3Njg1LCA4NzY5MywgODc2OTcsIDg0OTA1LCAzMTI3LCA4NzcwMSwgMjI4NjAsIDEzMTg5LCAzOTY4LCAKLSAgICA4NzcwNSwgMzEzMywgODc3MDksIDg3NzE5LCA4NzcyNSwgODc3MzEsIDg3NzM3LCA4Nzc0MywgODc3NDksIDg3NzU1LCAKLSAgICA4Nzc2MSwgODc3NjcsIDg3NzczLCA4Nzc3OSwgODc3ODUsIDg3NzkxLCA4Nzc5NywgODc4MDMsIDg3ODA5LCA4NzgxNSwgCi0gICAgODc4MjEsIDg3ODI3LCA4NzgzMywgODc4MzksIDg3ODQ1LCA4Nzg1MSwgODc4NTcsIDg3ODYzLCA4Nzg2OSwgODc4NzYsIAotICAgIDg3ODgzLCA4Nzg4OSwgODc4OTUsIDg3OTAxLCA4NzkwNywgODc5MTMsIDg3OTE5LCAxMzM4LCA4NzkyNSwgODc5MzAsIAotICAgIDg3OTM1LCA4Nzk0MCwgODc5NDUsIDg3OTUwLCA4Nzk1NSwgODc5NjAsIDg3OTY1LCA4Nzk2OSwgODc5NzMsIDg3OTc3LCAKLSAgICA4Nzk4MSwgODc5ODUsIDg3OTg5LCA4Nzk5MywgODc5OTcsIDg4MDAxLCA4ODAwNywgODgwMTMsIDg4MDE5LCA4ODAyNSwgCi0gICAgODgwMjksIDg4MDMzLCA4ODAzNywgODgwNDEsIDg4MDQ1LCA4ODA0OSwgODgwNTMsIDg4MDU3LCA4ODA2MSwgODgwNjYsIAotICAgIDg4MDcxLCA4ODA3NiwgODgwODEsIDg4MDg2LCA4ODA5MSwgODgwOTYsIDg4MTAxLCA4ODEwNiwgODgxMTEsIDg4MTE2LCAKLSAgICA4ODEyMSwgODgxMjYsIDg4MTMxLCA4ODEzNiwgODgxNDEsIDg4MTQ2LCA4ODE1MSwgODgxNTYsIDg4MTYxLCA4ODE2NiwgCi0gICAgODgxNzEsIDg4MTc2LCA4ODE4MSwgODgxODYsIDg4MTkxLCA4ODE5NiwgODgyMDEsIDg4MjA2LCA4ODIxMSwgODgyMTYsIAotICAgIDg4MjIxLCA4ODIyNiwgODgyMzEsIDg4MjM2LCA4ODI0MSwgODgyNDYsIDg4MjUxLCA4ODI1NiwgODgyNjEsIDg4MjY2LCAKLSAgICA4ODI3MSwgODgyNzYsIDg4MjgxLCA4ODI4NiwgODgyOTEsIDg4Mjk2LCA4ODMwMSwgODgzMDYsIDg4MzExLCA4ODMxNiwgCi0gICAgODgzMjEsIDg4MzI2LCA4ODMzMSwgODgzMzYsIDg4MzQxLCA4ODM0NiwgODgzNTEsIDg4MzU2LCA4ODM2MSwgODgzNjYsIAotICAgIDg4MzcxLCA4ODM3NiwgODgzODEsIDg4Mzg2LCA4ODM5MSwgODgzOTYsIDg4NDAxLCA4ODQwNiwgODg0MTEsIDg4NDE2LCAKLSAgICA4ODQyMSwgODg0MjYsIDg4NDMxLCA4ODQzNiwgODg0NDEsIDg4NDQ2LCA4ODQ1MSwgODg0NTYsIDg4NDYxLCA4ODQ2NiwgCi0gICAgODg0NzEsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg1MDEsIDg4NTA2LCA4ODUxMSwgODg1MTYsIAotICAgIDg4NTIxLCA4ODUyNiwgODg1MzEsIDg4NTM2LCA4ODU0MSwgODg1NDYsIDg4NTUxLCA4ODU1NiwgODg1NjEsIDg4NTY2LCAKLSAgICA4ODU3MSwgODg1NzYsIDg4NTgxLCA4ODU4NiwgODg1OTEsIDg4NTk2LCA4ODYwMSwgODg2MDYsIDg4NjExLCA4ODYxNiwgCi0gICAgODg2MjEsIDg4NjI2LCA4ODYzMSwgODg2MzYsIDg4NjQxLCA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIAotICAgIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg2LCA4ODY5MSwgODg2OTYsIDg4NzAxLCA4ODcwNiwgODg3MTEsIDg4NzE2LCAKLSAgICA4ODcyMSwgODg3MjYsIDg4NzMxLCA4ODczNiwgODg3NDEsIDg4NzQ2LCA4ODc1MSwgODg3NTYsIDg4NzYxLCA4ODc2NiwgCi0gICAgODg3NzEsIDg4Nzc2LCA4ODc4MSwgODg3ODYsIDg4NzkxLCA4ODc5NiwgODg4MDEsIDg4ODA2LCA4ODgxMSwgODg4MTYsIAotICAgIDg4ODIxLCA4ODgyNiwgODg4MzEsIDg4ODM2LCA4ODg0MSwgODg4NDYsIDg4ODUxLCA4ODg1NiwgODg4NjEsIDg4ODY2LCAKLSAgICA4ODg3MSwgODg4NzYsIDg4ODgxLCA4ODg4NiwgODg4OTEsIDg4ODk2LCA4ODkwMSwgODg5MDYsIDg4OTExLCA4ODkxNiwgCi0gICAgODg5MjEsIDg4OTI2LCA4ODkzMSwgODg5MzYsIDg4OTQxLCA4ODk0NiwgODg5NTEsIDg4OTU3LCA4ODk2MiwgODg5NjcsIAotICAgIDg4OTcyLCA4ODk3NywgODg5ODIsIDg4OTg3LCA4ODk5MiwgODg5OTgsIDg5MDAzLCA4OTAwOCwgODkwMTMsIDg5MDE4LCAKLSAgICA4OTAyMywgODkwMjgsIDg5MDMzLCA4OTAzOCwgODkwNDMsIDg5MDQ4LCA4OTA1MywgODkwNTgsIDg5MDYzLCA4OTA2OCwgCi0gICAgODkwNzMsIDg5MDc4LCA4OTA4MywgODkwODgsIDg5MDkzLCA4OTA5OCwgODkxMDMsIDg5MTA4LCA4OTExMywgODkxMTgsIAotICAgIDg5MTIzLCA4OTEyOCwgODkxMzMsIDg5MTM4LCA4OTE0MywgODkxNDgsIDg5MTUzLCA4OTE1OCwgODkxNjcsIDg5MTcyLCAKLSAgICA4OTE4MSwgODkxODYsIDg5MTk1LCA4OTIwMCwgODkyMDksIDg5MjE0LCA4OTIyMywgODkyMjgsIDg5MjM3LCA4OTI0MiwgCi0gICAgODkyNTEsIDg5MjU2LCA4OTI2NSwgODkyNzAsIDg5Mjc1LCA4OTI4NCwgODkyODgsIDg5Mjk3LCA4OTMwMiwgODkzMTEsIAotICAgIDg5MzE2LCA4OTMyNSwgODkzMzAsIDg5MzM5LCA4OTM0NCwgODkzNTMsIDg5MzU4LCA4OTM2NywgODkzNzIsIDg5MzgxLCAKLSAgICA4OTM4NiwgODkzOTUsIDg5NDAwLCA4OTQwOSwgODk0MTQsIDg5NDIzLCA4OTQyOCwgODk0MzMsIDg5NDM4LCA4OTQ0MywgCi0gICAgODk0NDgsIDg5NDUzLCA4OTQ1OCwgODk0NjIsIDg5NDY3LCA4OTQ3MiwgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIAotICAgIDg5NDk4LCA4OTUwMywgODk1MDgsIDg5NTEzLCA4OTUxOSwgODk1MjMsIDg5NTI4LCA4OTUzNCwgODk1MzksIDg5NTQ0LCAKLSAgICA4OTU0OSwgODk1NTQsIDg5NTU5LCA4OTU2NCwgODk1NjksIDg5NTc0LCA4OTU3OSwgODk1ODQsIDg5NTkwLCA4OTU5NSwgCi0gICAgODk2MDAsIDg5NjA1LCA4OTYxMSwgODk2MTYsIDg5NjIxLCA4OTYyNiwgODk2MzEsIDg5NjM3LCA4OTY0MiwgODk2NDcsIAotICAgIDg5NjUyLCA4OTY1NywgODk2NjIsIDg5NjY4LCA4OTY3MywgODk2NzgsIDg5NjgzLCA4OTY4OCwgODk2OTMsIDg5Njk4LCAKLSAgICA4OTcwMywgODk3MDgsIDg5NzEzLCA4OTcxOCwgODk3MjMsIDg5NzI4LCA4OTczMywgODk3MzgsIDg5NzQzLCA4OTc0OCwgCi0gICAgODk3NTMsIDg5NzU4LCA4OTc2MywgODk3NjgsIDg5NzczLCA4OTc3OCwgODk3ODMsIDg5Nzg5LCA4OTc5NSwgODk4MDEsIAotICAgIDg5ODA2LCA4OTgxMSwgODk4MTYsIDg5ODIxLCA4OTgyNywgODk4MzMsIDg5ODM5LCA4OTg0NCwgODk4NDksIDg5ODU0LCAKLSAgICA4OTg2MCwgODk4NjUsIDg5ODcwLCA4OTg3NSwgODk4ODAsIDg5ODg1LCA4OTg5MCwgODk4OTUsIDg5OTAwLCA4OTkwNSwgCi0gICAgODk5MTAsIDg5OTE1LCA4OTkyMCwgODk5MjUsIDg5OTMwLCA4OTkzNSwgODk5NDAsIDg5OTQ2LCA4OTk1MiwgODk5NTgsIAotICAgIDg5OTYzLCA4OTk2OCwgODk5NzMsIDg5OTc4LCA4OTk4NCwgODk5OTAsIDg5OTk2LCA5MDAwMSwgOTAwMDYsIDkwMDExLCAKLSAgICA5MDAxNiwgOTAwMjEsIDkwMDI2LCA5MDAzMSwgOTAwMzYsIDkwMDQxLCAxNzUzOSwgOTAwNDYsIDkwMDUyLCA5MDA1NywgCi0gICAgOTAwNjIsIDkwMDY3LCA5MDA3MiwgOTAwNzcsIDkwMDgzLCA5MDA4OCwgOTAwOTMsIDkwMDk4LCA5MDEwMywgOTAxMDgsIAotICAgIDkwMTE0LCA5MDExOSwgOTAxMjQsIDkwMTI5LCA5MDEzNCwgOTAxMzksIDkwMTQ0LCA5MDE0OSwgOTAxNTQsIDkwMTU5LCAKLSAgICA5MDE2NCwgOTAxNjksIDkwMTc0LCA5MDE3OSwgOTAxODQsIDkwMTg5LCA5MDE5NCwgOTAxOTksIDkwMjA0LCA5MDIwOSwgCi0gICAgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMzAsIDkwMjM1LCA5MDI0MCwgOTAyNDUsIDkwMjUwLCA5MDI1NSwgOTAyNjAsIAotICAgIDkwMjY1LCA5MDI3MCwgOTAyNzUsIDkwMjgwLCA5MDI4NSwgOTAyOTAsIDkwMjk1LCA5MDMwMCwgOTAzMDUsIDkwMzEwLCAKLSAgICA5MDMxNSwgOTAzMjAsIDkwMzI1LCA5MDMzMCwgOTAzMzUsIDkwMzQwLCA5MDM0NSwgOTAzNTAsIDkwMzU1LCA5MDM2MCwgCi0gICAgOTAzNjUsIDkwMzcwLCA5MDM3NSwgOTAzODAsIDkwMzg1LCA5MDM5MCwgOTAzOTUsIDkwNDAwLCA5MDQwNSwgOTA0MTAsIAotICAgIDkwNDE1LCA5MDQyMCwgOTA0MjUsIDkwNDMwLCA5MDQzNiwgOTA0NDEsIDkwNDQ2LCA5MDQ1MSwgOTA0NTYsIDkwNDYxLCAKLSAgICA5MDQ2NiwgOTA0NzEsIDkwNDc2LCA5MDQ4MSwgOTA0ODYsIDkwNDkxLCA5MDQ5NywgOTA1MDIsIDkwNTA4LCA5MDUxMywgCi0gICAgOTA1MTgsIDkwNTIzLCA5MDUyOCwgOTA1MzMsIDkwNTM4LCA5MDU0NCwgOTA1NDksIDkwNTU0LCA5MDU2MCwgOTA1NjUsIAotICAgIDkwNTcwLCA5MDU3NSwgOTA1ODAsIDkwNTg1LCA5MDU5MSwgOTA1OTcsIDkwNjAyLCA5MDYwNywgMTMyMTEsIDkwNjEyLCAKLSAgICA5MDYxNywgOTA2MjIsIDkwNjI3LCA5MDYzMiwgOTA2MzcsIDkwNjQyLCA5MDY0NywgOTA2NTIsIDkwNjU3LCA5MDY2MiwgCi0gICAgOTA2NjcsIDkwNjcyLCA5MDY3NywgOTA2ODIsIDkwNjg3LCA5MDY5MiwgOTA2OTcsIDkwNzAyLCA5MDcwNywgOTA3MTIsIAotICAgIDkwNzE3LCA5MDcyMiwgOTA3MjcsIDkwNzMyLCA5MDczNywgOTA3NDIsIDkwNzQ3LCA5MDc1MiwgOTA3NTcsIDkwNzYyLCAKLSAgICA5MDc2NywgOTA3NzIsIDkwNzc3LCA5MDc4MiwgOTA3ODcsIDkwNzkyLCA5MDc5NywgOTA4MDIsIDkwODA3LCA5MDgxMiwgCi0gICAgOTA4MTcsIDkwODIyLCA5MDgyNywgOTA4MzIsIDkwODM3LCA5MDg0MiwgOTA4NDcsIDkwODUyLCA5MDg1NywgOTA4NjIsIAotICAgIDkwODY3LCA5MDg3MiwgOTA4NzcsIDkwODgyLCA5MDg4NywgOTA4OTIsIDkwODk3LCA5MDkwMiwgOTA5MDcsIDkwOTEyLCAKLSAgICA5MDkxNywgOTA5MjIsIDkwOTI3LCA5MDkzMiwgOTA5MzgsIDkwOTQzLCA5MDk0OCwgOTA5NTMsIDkwOTU4LCA5MDk2NCwgCi0gICAgOTA5NjksIDkwOTc0LCA5MDk3OSwgOTA5ODQsIDkwOTg5LCA5MDk5NCwgOTEwMDAsIDkxMDA1LCA5MTAxMCwgOTEwMTUsIAotICAgIDkxMDIwLCA5MTAyNSwgOTEwMzEsIDkxMDM2LCA5MTA0MSwgOTEwNDYsIDkxMDUxLCA5MTA1NiwgOTEwNjIsIDkxMDY3LCAKLSAgICA5MTA3MiwgOTEwNzcsIDkxMDgyLCA5MTA4NywgOTEwOTMsIDkxMDk5LCA5MTEwNCwgOTExMDksIDkxMTE0LCA5MTEyMCwgCi0gICAgOTExMjYsIDkxMTMyLCA5MTEzNywgOTExNDIsIDkxMTQ4LCA5MTE1NCwgOTExNTksIDkxMTY1LCA5MTE3MSwgOTExNzcsIAotICAgIDkxMTgyLCA5MTE4NywgOTExOTMsIDkxMTk4LCA5MTIwNCwgOTEyMDksIDkxMjE1LCA5MTIyNCwgOTEyMjksIDkxMjM0LCAKLSAgICA5MTI0MCwgOTEyNDUsIDkxMjUxLCA5MTI1NiwgOTEyNjEsIDkxMjY2LCA5MTI3MSwgOTEyNzYsIDkxMjgxLCA5MTI4NiwgCi0gICAgOTEyOTEsIDkxMjk2LCA5MTMwMSwgOTEzMDYsIDkxMzExLCA5MTMxNiwgOTEzMjEsIDkxMzI2LCA5MTMzMSwgOTEzMzYsIAotICAgIDkxMzQxLCA5MTM0NiwgOTEzNTEsIDkxMzU2LCA5MTM2MSwgOTEzNjYsIDkxMzcxLCA5MTM3NiwgOTEzODEsIDkxMzg2LCAKLSAgICA5MTM5MSwgOTEzOTYsIDkxNDAxLCA5MTQwNiwgOTE0MTIsIDkxNDE4LCA5MTQyNCwgOTE0MjksIDkxNDM0LCA5MTQzOSwgCi0gICAgOTE0NDQsIDkxNDQ5LCA5MTQ1NCwgOTE0NTksIDkxNDY0LCA5MTQ2OSwgOTE0NzQsIDkxNDc5LCA5MTQ4NCwgOTE0ODksIAotICAgIDkxNDk0LCA5MTQ5OSwgOTE1MDQsIDkxNTA5LCA5MTUxNCwgOTE1MTksIDkxNTI0LCA5MTUzMCwgOTE1MzYsIDkxNTQxLCAKLSAgICA5MTU0NywgOTE1NTIsIDkxNTU3LCA5MTU2MywgOTE1NjgsIDkxNTc0LCA5MTU3OSwgOTE1ODUsIDkxNTkwLCA5MTU5NiwgCi0gICAgOTE2MDEsIDkxNjA3LCA5MTYxMiwgOTE2MTcsIDkxNjIyLCA5MTYyNywgOTE2MzIsIDkxNjM3LCA5MTY0MiwgODc3MjAsIAotICAgIDg3NzI2LCA4NzczMiwgODc3MzgsIDkxNjQ4LCA4Nzc0NCwgODc3NTAsIDkxNjU0LCA4Nzc1NiwgODc3NjIsIDg3NzY4LCAKLSAgICA4Nzc3NCwgODc3ODAsIDg3Nzg2LCA4Nzc5MiwgODc3OTgsIDg3ODA0LCA5MTY2MCwgODc4MTAsIDg3ODE2LCA4NzgyMiwgCi0gICAgOTE2NjYsIDg3ODI4LCA4NzgzNCwgODc4NDAsIDg3ODQ2LCA5MTY3MiwgODc4NTIsIDg3ODU4LCA4Nzg2NCwgODc4ODQsIAotICAgIDkxNjc4LCA5MTY4NCwgODc4OTAsIDkxNjkwLCA4Nzg5NiwgODc5MDIsIDg3OTA4LCA4NzkxNCwgODc5MjAsIDMxNTAsIAotICAgIDMxNTUsIDkxNjk2LCA5MTcwMSwgOTE3MDQsIDkxNzEwLCA5MTcxNiwgOTE3MjMsIDkxNzI4LCA5MTczMywgMjMzNywgCisgICAgMCwgMCwgNiwgMTAsIDE0LCAxOSwgMjcsIDM0LCA0NCwgNDksIDU1LCA2NCwgNjYsIDY5LCA4MSwgODksIDEwMiwgMTA4LCAKKyAgICAxMTMsIDExOSwgMTI0LCAxMzIsIDE0MSwgMTQ2LCAxNTcsIDE2MiwgMTY3LCAxNzAsIDE3NCwgMTgzLCAxODksIDE5NSwgCisgICAgMjAwLCAyMDcsIDIxNSwgMjIzLCAyMjQsIDIyNywgMjM1LCAyNDQsIDE3MSwgMjUwLCAyNTYsIDI2MywgMjczLCAyODAsIAorICAgIDI4NSwgMjg4LCAyOTMsIDI5OSwgMzAzLCAzMDYsIDMxMSwgMzE3LCAzMjMsIDMyOCwgMzMzLCAzMzksIDM0NSwgMzU0LCAKKyAgICAzNjEsIDM2OCwgMzc3LCAzNzksIDM4NCwgMzg5LCAzOTcsIDM5OSwgNDA3LCA0MDgsIDQxNiwgNDE4LCAzMzcsIDQyNSwgCisgICAgNDI4LCA0MzAsIDQzNiwgNDM4LCA0NDUsIDQ1MCwgNDU3LCA0NjIsIDQ2NywgNDc0LCA0ODIsIDQ4NiwgNDkyLCA0OTcsIAorICAgIDUwNywgNTEyLCA1MTksIDUyMiwgNTMwLCA1MzksIDU0MywgNTUzLCA1NjAsIDU2NywgNTc0LCA1ODMsIDU5MCwgNTkzLCAKKyAgICA1OTksIDYwMywgNjA3LCA2MTUsIDYxOSwgNjMyLCA2MzYsIDYzNywgNjQ0LCA2NTMsIDY2MiwgNjY1LCA2NzEsIDY3NSwgCisgICAgNjc3LCA2ODcsIDY5MiwgNzAwLCA3MDQsIDcwNywgNzE1LCA3MTksIDcyNCwgNzI5LCA3MzUsIDc0MCwgNzQ0LCA3NDcsIAorICAgIDc1NSwgNzY0LCA3NzMsIDc4MSwgNzg5LCA3OTMsIDc5OSwgODA3LCA4MTQsIDgxNywgODI3LCA4MzEsIDg0MiwgODUxLCAKKyAgICA4NTgsIDg2MSwgODY4LCA4NzAsIDg3NiwgODgwLCA4ODUsIDg4OSwgODk1LCA5MDQsIDkwOSwgOTEzLCA1ODgsIDkxNiwgCisgICAgOTIxLCA5MzAsIDkzOCwgOTQzLCA5NDYsIDY3NCwgOTUxLCA5NTYsIDk1OSwgOTY1LCA5NjksIDk3MywgOTc5LCA5ODYsIAorICAgIDk5NSwgOTk4LCAxMDA1LCAxMDE0LCAxMDI3LCAxMDMxLCAxMDM5LCAxMDQyLCAxMDQ4LCAxMDU0LCAxMDYzLCAxMDcwLCAKKyAgICAxMDczLCAxMDgxLCAxMDg4LCAxMDk1LCAxMDk5LCAxMTAyLCAxMTEwLCAxMTE0LCAxMTIzLCAxMTI5LCAxMTMzLCAxMTM2LCAKKyAgICAxMTQwLCAyNiwgMTE0NywgMTE1NiwgMTE2MSwgMTE2NiwgMTE3MiwgMTE3NywgMTE4MiwgMTE4NywgMTE5MSwgMTE5NiwgCisgICAgMTIwMiwgMTIwNywgMTIxMiwgMTIxNiwgMTIyMiwgMTIyNywgMTIzMiwgMTIzNywgMTI0MSwgMTI0NiwgMTI1MSwgMTI1NiwgCisgICAgMTI2MiwgMTI2OCwgMTI3NCwgMTI3OSwgMTI4MywgMTI4OCwgMTI5MywgMTI5OCwgMTMwMiwgMTMwNywgMTMxMiwgMTMxNywgCisgICAgMTMyMiwgMTE1NywgMTE2MiwgMTE2NywgMTE3MywgMTE3OCwgMTMyNiwgMTE4OCwgMTMzMiwgMTMzNywgMTM0MiwgMTM0OSwgCisgICAgMTM1MywgMTM1NiwgMTM2NSwgMTE5MiwgMTM2OSwgMTE5NywgMTIwMywgMTIwOCwgMTM3MywgMTM3OCwgMTM4MywgMTM4NywgCisgICAgMTM5MSwgMTM5NywgMTQwMSwgMTIxMywgMTQwNCwgMTQwNiwgMTIyMywgMTQxMSwgMTQxNSwgMTIyOCwgMTQyMSwgMTIzMywgCisgICAgMTQyNSwgMTQyOSwgMTIzOCwgMTQzMywgMTQzOCwgMTQ0MiwgMTQ0NSwgMTQ0OSwgMTI0MiwgMTI0NywgMTQ1NCwgMTQ2MCwgCisgICAgMTI1MiwgMTQ3MiwgMTQ3OCwgMTQ4NCwgMTQ5MCwgMTI1NywgMTI2OSwgMTI3NSwgMTQ5NCwgMTQ5OCwgMTUwMiwgMTUwNSwgCisgICAgMTI4MCwgMTUwOSwgMTUxMSwgMTUxNiwgMTUyMSwgMTUyNywgMTUzMiwgMTUzNywgMTU0MSwgMTU0NiwgMTU1MSwgMTU1NiwgCisgICAgMTU2MSwgMTU2NywgMTU3MiwgMTU3NywgMTU4MywgMTU4OSwgMTU5NCwgMTU5OCwgMTYwMywgMTYwOCwgMTYxMywgMTYxOCwgCisgICAgMTYyMywgMTYyNywgMTYzNSwgMTY0MCwgMTY0NCwgMTY0OSwgMTY1NCwgMTY1OSwgMTY2NCwgMTY2OCwgMTY3MSwgMTY3OCwgCisgICAgMTY4MywgMTY4OCwgMTY5MywgMTY5OCwgMTcwNCwgMTcwOSwgMTcxMywgMTI4NCwgMTcxNiwgMTcyMSwgMTcyNiwgMTI4OSwgCisgICAgMTczMCwgMTczNCwgMTc0MSwgMTI5NCwgMTc0OCwgMTI5OSwgMTc1MiwgMTc1NCwgMTc1OSwgMTc2NSwgMTMwMywgMTc3MCwgCisgICAgMTc3OSwgMTMwOCwgMTc4NCwgMTc5MCwgMTc5NSwgMTMxMywgMTgwMCwgMTgwNSwgMTgwOSwgMTgxMiwgMTgxNywgMTgyMSwgCisgICAgMTgyNSwgMTgyOSwgMTgzMiwgMTgzNiwgMTMxOCwgMTg0MSwgMTMyMywgMTg0NSwgMTg0NywgMTg1MywgMTg1OSwgMTg2NSwgCisgICAgMTg3MSwgMTg3NywgMTg4MywgMTg4OSwgMTg5NSwgMTkwMCwgMTkwNiwgMTkxMiwgMTkxOCwgMTkyNCwgMTkzMCwgMTkzNiwgCisgICAgMTk0MiwgMTk0OCwgMTk1NCwgMTk1OSwgMTk2NCwgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NCwgMTk4OSwgMTk5NCwgMTk5OSwgCisgICAgMjAwNCwgMjAxMCwgMjAxNSwgMjAyMSwgMjAyNiwgMjAzMiwgMjAzOCwgMjA0MywgMjA0OSwgMjA1NSwgMjA2MSwgMjA2NywgCisgICAgMjA3MiwgMjA3NywgMjA3OSwgMjA4MCwgMjA4NCwgMjA4OCwgMjA5MywgMjA5NywgMjEwMSwgMjEwNSwgMjExMCwgMjExNCwgCisgICAgMjExNywgMjEyMiwgMjEyNiwgMjEzMSwgMjEzNSwgMjEzOSwgMjE0NCwgMjE0OCwgMjE1MSwgMjE1NSwgMjE2MSwgMjE3NSwgCisgICAgMjE3OSwgMjE4MywgMjE4NywgMjE5MCwgMjE5NSwgMjE5OSwgMjIwMywgMjIwNiwgMjIxMCwgMjIxNSwgMjIyMCwgMjIyNSwgCisgICAgMjIzMCwgMjIzNCwgMjIzOCwgMjI0MiwgMjI0NiwgMjI1MSwgMjI1NSwgMjI2MCwgMjI2NCwgMjI2OSwgMjI3NSwgMjI4MiwgCisgICAgMjI4OCwgMjI5MywgMjI5OCwgMjMwMywgMjMwOSwgMjMxNCwgMjMyMCwgMjMyNSwgMjMyOCwgMjMzMCwgMTE3NCwgMjMzNCwgCisgICAgMjM0MSwgMjM0OSwgMjM1OSwgMjM2OCwgMjM4MiwgMjM4NiwgMjM5MCwgMjM5NSwgMjQwOCwgMjQxNiwgMjQyMCwgMjQyNSwgCisgICAgMjQyOSwgMjQzMiwgMjQzNiwgMjQ0MCwgMjQ0NSwgMjQ1MCwgMjQ1NSwgMjQ1OSwgMjQ2MiwgMjQ2NiwgMjQ3MywgMjQ4MCwgCisgICAgMjQ4NiwgMjQ5MSwgMjQ5NiwgMjUwMiwgMjUwOCwgMjUxMywgMjUxNiwgMTc1NiwgMjUxOCwgMjUyNCwgMjUyOCwgMjUzMywgCisgICAgMjUzNywgMjU0MSwgMTY3NCwgMTc2NywgMjU0NiwgMjU1MCwgMjU1MywgMjU1OCwgMjU2MywgMjU2OCwgMjU3MywgMjU3NywgCisgICAgMjU4NCwgMjU4OSwgMjU5MiwgMjU5NiwgMjYwMywgMjYwOSwgMjYxMywgMjYxNywgMjYyMSwgMjYyNiwgMjYzMywgMjYzOCwgCisgICAgMjY0MywgMjY1MCwgMjY1NiwgMjY2MiwgMjY2OCwgMjY4MiwgMjY5OSwgMjcxNCwgMjcyOSwgMjczOCwgMjc0MywgMjc0NywgCisgICAgMjc1MiwgMjc1NywgMjc2MSwgMjc3MywgMjc4MCwgMjc4NiwgMjI3OCwgMjc5MiwgMjc5OSwgMjgwNSwgMjgwOSwgMjgxMiwgCisgICAgMjgxOSwgMjgyNSwgMjgzMCwgMjgzNCwgMjgzOSwgMjg0MywgMjg0NywgMjEwMiwgMjg1MSwgMjg1NiwgMjg2MSwgMjg2NSwgCisgICAgMjg3MCwgMjg3OCwgMjg4MiwgMjg4NywgMjg5MSwgMjg5NSwgMjg5OSwgMjkwNCwgMjkwOSwgMjkxNCwgMjkxOCwgMjkyMywgCisgICAgMjkyOCwgMjkzMiwgMjkzNywgMjk0MSwgMjk0NCwgMjk0OCwgMjk1MiwgMjk2MCwgMjk2NSwgMjk2OSwgMjk3MywgMjk3OSwgCisgICAgMjk4OCwgMjk5MiwgMjk5NiwgMzAwMiwgMzAwNywgMzAxNCwgMzAxOCwgMzAyOCwgMzAzMiwgMzAzNiwgMzA0MSwgMzA0NSwgCisgICAgMzA1MCwgMzA1NiwgMzA2MSwgMzA2NSwgMzA2OSwgMzA3MywgMjQ3NiwgMzA4MSwgMzA4NiwgMzA5MiwgMzA5NywgMzEwMSwgCisgICAgMzEwNiwgMzExMSwgMzExNSwgMzEyMSwgMzEyNiwgMjEwNiwgMzEzMiwgMzEzOCwgMzE0MywgMzE0OCwgMzE1MywgMzE1OCwgCisgICAgMzE2MywgMzE2OCwgMzE3MywgMzE3OCwgMzE4MywgMzE4OSwgMzE5NCwgMTE4OSwgMTAxLCAzMjAwLCAzMjA0LCAzMjA4LCAKKyAgICAzMjEyLCAzMjE3LCAzMjIxLCAzMjI1LCAzMjMxLCAzMjM2LCAzMjQwLCAzMjQ0LCAzMjQ5LCAzMjU0LCAzMjU4LCAzMjYzLCAKKyAgICAzMjY3LCAzMjcwLCAzMjc0LCAzMjc5LCAzMjgzLCAzMjg4LCAzMjkyLCAzMjk1LCAzMjk5LCAzMzAzLCAzMzA4LCAzMzEyLCAKKyAgICAzMzE1LCAzMzI4LCAzMzMyLCAzMzM2LCAzMzQwLCAzMzQ1LCAzMzQ5LCAzMzUzLCAzMzU2LCAzMzYwLCAzMzY0LCAzMzY5LCAKKyAgICAzMzczLCAzMzc4LCAzMzgzLCAzMzg4LCAzMzkyLCAzMzk3LCAzNDAwLCAzNDAzLCAzNDA4LCAzNDE0LCAzNDE4LCAzNDIyLCAKKyAgICAzNDI1LCAzNDMwLCAzNDM0LCAzNDM5LCAzNDQzLCAzNDQ3LCAzNDUwLCAzNDU2LCAzNDYxLCAzNDY2LCAzNDcyLCAzNDc3LCAKKyAgICAzNDgyLCAzNDg4LCAzNDk0LCAzNDk5LCAzNTA0LCAzNTA5LCAzNTE0LCAxMDk3LCA1OTIsIDM1MTcsIDM1MjAsIDM1MjUsIAorICAgIDM1MjksIDM1MzMsIDM1MzcsIDM1NDEsIDM1NDQsIDM1NDgsIDM1NTMsIDM1NTgsIDM1NjIsIDM1NjcsIDM1NzEsIDM1NzYsIAorICAgIDM1ODAsIDM1ODQsIDM1ODgsIDM1OTQsIDM2MDAsIDM2MDMsIDM2MDYsIDE1MCwgMzYxMiwgMzYxNywgMzYyNiwgMzYzNCwgCisgICAgMzY0MywgMzY1MywgMzY2MCwgMzY2NiwgMzY3MywgMzY3OCwgMzY4MiwgMzY4NiwgMzY5NCwgMzcwMSwgMzcwNiwgMzcxMywgCisgICAgMzcxOCwgMzcyMiwgMzczMiwgMzczNiwgMzc0MCwgMzc0NSwgMzc1MCwgMzc2MCwgMjExOCwgMzc2NSwgMzc2OSwgMzc3MiwgCisgICAgMzc3OCwgMzc4MywgMzc4OSwgMzc5NSwgMzgwMCwgMzgwNywgMzgxMSwgMzgxNSwgNjE2LCA3MDUsIDEzNTAsIDM4MTksIAorICAgIDM4MjYsIDM4MzMsIDM4MzksIDM4NDQsIDM4NTEsIDM4NTgsIDM4NjMsIDM4NjksIDM4NzUsIDM4ODAsIDM4ODQsIDM4OTAsIAorICAgIDM4OTcsIDM5MDIsIDM5MDYsIDM5MTAsIDIxMjcsIDM5MTYsIDM5MjQsIDM5MzAsIDM5MzgsIDc1OSwgMzk0NCwgMzk1MiwgCisgICAgMzk2MywgMzk2NywgMzk3NywgMjEzMiwgMzk4MywgMzk4OCwgNDAwMywgNDAwOSwgNDAxNiwgNDAyNiwgNDAzMiwgNDAzNywgCisgICAgNDA0MywgNDA0OSwgNDA1MiwgNDA1NSwgNDA1OSwgNDA2NCwgNDA3MSwgNDA4MCwgNDA4NSwgNDA4OSwgNDA5MywgNDA5NywgCisgICAgNDEwMSwgNDEwNiwgNDExMiwgNDEyMywgNDEyNywgMzI3NSwgNDEzMiwgNDE0NCwgNDE1MCwgNDE1OCwgNDE2MiwgNDE2NywgCisgICAgMTU0MywgNDE3NCwgNDE3NywgNDE4MCwgNDE4NCwgNDE4NywgNDE5MywgNDE5NywgNDIxMSwgNDIxNSwgNDIxOCwgNDIyMiwgCisgICAgNDIyOCwgNDIzNCwgNDIzOSwgNDI0MywgNDI0NywgNDI1MywgNDI2NCwgNDI3MCwgNDI3NSwgNDI4MSwgNDI4NSwgNDI5MywgCisgICAgNDMwNSwgNDMxNSwgNDMyMSwgNDMyNiwgNDMzNSwgNDM0MywgNDM1MCwgNDM1NiwgNDM2MiwgNDM2NiwgNDM3MiwgNDM4MSwgCisgICAgNDM5MCwgNDM5NCwgNDQwMywgNDQwOCwgNDQxMiwgNDQxNywgNDQyMSwgNDQyOSwgNDQzNSwgNDQzOSwgNDQ0NCwgNDQ0OCwgCisgICAgNDQ1NCwgMjE0MCwgMTM2NiwgNDQ2MCwgNDQ2NSwgNDQ3MSwgNDQ3NiwgNDQ4MSwgNDQ4NiwgNDQ5MSwgNDQ5NiwgNDUwMSwgCisgICAgNDUwNywgNDUxMiwgNDUxOCwgNDUyMywgNDUyOCwgNDUzMywgNDUzOSwgNDU0NCwgNDU0OSwgNDU1NCwgNDU1OSwgNDU2NSwgCisgICAgNDU3MCwgNDU3NiwgNDU4MSwgNDU4NiwgNDU5MSwgNDU5NiwgNDYwMSwgNDYwNiwgNDYxMiwgNDYxNywgNDYyMiwgMjk3LCAKKyAgICAzMzIsIDQ2MjcsIDQ2MzMsIDQ2MzcsIDQ2NDEsIDQ2NDYsIDQ2NTAsIDQ2NTQsIDQ2NTcsIDQ2NjEsIDQ2NjUsIDQ2NjksIAorICAgIDQ2NzMsIDQ2NzcsIDQ2ODIsIDQ2ODYsIDQ2OTAsIDQ2OTYsIDQ0NTcsIDQ3MDEsIDQ3MDUsIDQ3MDgsIDQ3MTMsIDQ3MTgsIAorICAgIDQ3MjMsIDQ3MjgsIDQ3MzMsIDQ3MzgsIDQ3NDMsIDQ3NDgsIDQ3NTMsIDQ3NTgsIDQ3NjIsIDQ3NjcsIDQ3NzIsIDQ3NzcsIAorICAgIDQ3ODIsIDQ3ODcsIDQ3OTIsIDQ3OTcsIDQ4MDIsIDQ4MDcsIDQ4MTIsIDQ4MTYsIDQ4MjEsIDQ4MjYsIDQ4MzEsIDQ4MzYsIAorICAgIDQ4NDEsIDQ4NDYsIDQ4NTEsIDQ4NTYsIDQ4NjEsIDQ4NjYsIDQ4NzAsIDQ4NzUsIDQ4ODAsIDQ4ODUsIDQ4OTAsIDQ4OTUsIAorICAgIDQ5MDAsIDQ5MDUsIDQ5MTAsIDQ5MTUsIDQ5MjAsIDQ5MjQsIDQ5MjksIDQ5MzQsIDQ5MzksIDQ5NDQsIDQ5NDksIDQ5NTQsIAorICAgIDQ5NTksIDQ5NjQsIDQ5NjksIDQ5NzQsIDQ5NzgsIDQ5ODMsIDQ5ODgsIDQ5OTMsIDQ5OTgsIDUwMDMsIDUwMDgsIDUwMTMsIAorICAgIDUwMTgsIDUwMjMsIDUwMjgsIDUwMzIsIDUwMzcsIDUwNDIsIDUwNDcsIDUwNTIsIDUwNTcsIDUwNjIsIDUwNjcsIDUwNzIsIAorICAgIDUwNzcsIDUwODIsIDUwODYsIDUwOTEsIDUwOTYsIDUxMDEsIDUxMDYsIDUxMTIsIDUxMTgsIDUxMjQsIDUxMzAsIDUxMzYsIAorICAgIDUxNDIsIDUxNDgsIDUxNTMsIDUxNTksIDUxNjUsIDUxNzEsIDUxNzcsIDUxODMsIDUxODksIDUxOTUsIDUyMDEsIDUyMDcsIAorICAgIDUyMTMsIDUyMTgsIDUyMjQsIDUyMzAsIDUyMzYsIDUyNDIsIDUyNDgsIDUyNTQsIDUyNjAsIDUyNjYsIDUyNzIsIDUyNzgsIAorICAgIDUyODMsIDUyODksIDUyOTUsIDUzMDEsIDUzMDcsIDUzMTMsIDUzMTksIDUzMjUsIDUzMzEsIDUzMzcsIDUzNDMsIDUzNDgsIAorICAgIDUzNTQsIDUzNjAsIDUzNjYsIDUzNzIsIDUzNzgsIDUzODQsIDUzOTAsIDUzOTYsIDU0MDIsIDU0MDgsIDU0MTMsIDU0MTksIAorICAgIDU0MjUsIDU0MzEsIDU0MzcsIDU0NDMsIDU0NDksIDU0NTUsIDU0NjEsIDU0NjcsIDU0NzMsIDU0NzgsIDU0ODIsIDU0ODgsIAorICAgIDU0OTQsIDU1MDAsIDU1MDYsIDU1MTIsIDU1MTgsIDU1MjQsIDU1MzAsIDU1MzYsIDU1NDIsIDU1NDcsIDU1NTMsIDU1NTksIAorICAgIDU1NjUsIDU1NzEsIDU1NzcsIDU1ODMsIDU1ODksIDU1OTUsIDU2MDEsIDU2MDcsIDU2MTIsIDU2MTgsIDU2MjQsIDU2MzAsIAorICAgIDU2MzYsIDU2NDIsIDU2NDgsIDU2NTQsIDU2NjAsIDU2NjYsIDU2NzIsIDU2NzcsIDU2ODMsIDU2ODksIDU2OTUsIDU3MDEsIAorICAgIDU3MDcsIDU3MTMsIDU3MTksIDU3MjUsIDU3MzEsIDU3MzcsIDU3NDIsIDU3NDgsIDU3NTQsIDU3NjAsIDU3NjYsIDU3NzIsIAorICAgIDU3NzgsIDU3ODQsIDU3OTAsIDU3OTYsIDU4MDIsIDU4MDcsIDU4MTMsIDU4MTksIDU4MjUsIDU4MzEsIDU4MzcsIDU4NDMsIAorICAgIDU4NDksIDU4NTUsIDU4NjEsIDU4NjcsIDU4NzIsIDU4NzgsIDU4ODQsIDU4OTAsIDU4OTYsIDU5MDIsIDU5MDgsIDU5MTQsIAorICAgIDU5MjAsIDU5MjYsIDU5MzIsIDU5MzcsIDU5NDMsIDU5NDksIDU5NTUsIDU5NjEsIDU5NjcsIDU5NzMsIDU5NzksIDU5ODUsIAorICAgIDU5OTEsIDU5OTcsIDYwMDIsIDYwMDgsIDYwMTQsIDYwMjAsIDYwMjYsIDYwMzIsIDYwMzgsIDYwNDQsIDYwNTAsIDYwNTYsIAorICAgIDYwNjIsIDYwNjcsIDYwNzMsIDYwNzksIDYwODUsIDYwOTEsIDYwOTcsIDYxMDMsIDYxMDksIDYxMTUsIDYxMjEsIDYxMjcsIAorICAgIDYxMzIsIDYxMzYsIDYxMzksIDYxNDYsIDYxNTAsIDYxNjMsIDYxNjcsIDYxNzEsIDYxNzUsIDYxNzgsIDYxODIsIDYxODcsIAorICAgIDYxOTEsIDYxOTUsIDYyMDEsIDYyMDgsIDYyMTksIDYyMjcsIDYyMzQsIDYyMzgsIDYyNDYsIDYyNTUsIDYyNjEsIDYyNjUsIAorICAgIDYyNzcsIDYyODIsIDYyODUsIDYyOTAsIDYyOTQsIDYzMDQsIDYzMTIsIDYzMjAsIDYzMjYsIDYzMzAsIDYzNDAsIDYzNTAsIAorICAgIDYzNTgsIDYzNjUsIDYzNzIsIDYzNzgsIDYzODQsIDYzOTEsIDYzOTUsIDY0MDIsIDY0MTIsIDY0MjIsIDY0MzAsIDY0MzcsIAorICAgIDY0NDIsIDY0NDYsIDY0NTAsIDY0NTgsIDY0NjIsIDY0NjcsIDY0NzQsIDY0ODIsIDY0ODcsIDY0OTEsIDY0OTYsIDY1MDAsIAorICAgIDY1MDcsIDY1MTIsIDY1MjYsIDY1MzEsIDY1MzYsIDY1NDMsIDM1MzAsIDY1NTIsIDY1NTYsIDY1NjEsIDY1NjUsIDY1NjksIAorICAgIDY1NzIsIDY1NzcsIDY1ODIsIDY1OTEsIDY1OTcsIDY2MDMsIDY2MDksIDY2MTMsIDY2MjQsIDY2MzQsIDY2NDksIDY2NjQsIAorICAgIDY2NzksIDY2OTQsIDY3MDksIDY3MjQsIDY3MzksIDY3NTQsIDY3NjksIDY3ODQsIDY3OTksIDY4MTQsIDY4MjksIDY4NDQsIAorICAgIDY4NTksIDY4NzQsIDY4ODksIDY5MDQsIDY5MTksIDY5MzQsIDY5NDksIDY5NjQsIDY5NzksIDY5OTQsIDcwMDksIDcwMjQsIAorICAgIDcwMzksIDcwNTQsIDcwNjksIDcwODQsIDcwOTksIDcxMTQsIDcxMjksIDcxNDQsIDcxNTksIDcxNzQsIDcxODksIDcyMDQsIAorICAgIDcyMTksIDcyMzQsIDcyNDksIDcyNjQsIDcyNzksIDcyOTQsIDczMDksIDczMjQsIDczMzksIDczNTQsIDczNjksIDczNzgsIAorICAgIDczODcsIDczOTIsIDczOTgsIDc0MDgsIDc0MTIsIDc0MTYsIDc0MjEsIDc0MjYsIDc0MzQsIDc0MzgsIDc0NDEsIDc0NDUsIAorICAgIDMwMjMsIDc0NDgsIDc0NTMsIDMzNiwgNTEwLCA3NDU5LCA3NDY3LCA3NDcxLCA3NDc1LCA3NDc4LCA3NDgyLCA3NDg4LCAKKyAgICA3NDkyLCA3NTAwLCA3NTA2LCA3NTExLCA3NTE4LCA3NTI2LCA3NTMzLCA3NTM5LCA3NTQ0LCA3NTUxLCA3NTU3LCA3NTY1LCAKKyAgICA3NTY5LCA3NTc0LCA3NTg2LCA3NTk3LCA3NjA0LCA3NjA4LCA3NjEyLCA3NjE2LCA3NjE5LCA3NjI1LCAzMzAwLCA3NjI5LCAKKyAgICA3NjM1LCA3NjQwLCA3NjQ1LCA3NjUwLCA3NjU2LCA3NjYxLCA3NjY2LCA3NjcxLCA3Njc2LCA3NjgyLCA3Njg3LCA3NjkyLCAKKyAgICA3Njk4LCA3NzAzLCA3NzA5LCA3NzE0LCA3NzIwLCA3NzI1LCA3NzMxLCA3NzM2LCA3NzQxLCA3NzQ2LCA3NzUxLCA3NzU2LCAKKyAgICA3NzYyLCA3NzY3LCA3NzcyLCA3Nzc3LCA3NzgzLCA3Nzg5LCA3Nzk1LCA3ODAxLCA3ODA3LCA3ODEzLCA3ODE5LCA3ODI1LCAKKyAgICA3ODMxLCA3ODM3LCA3ODQzLCA3ODQ5LCA3ODU0LCA3ODU5LCA3ODY0LCA3ODY5LCA3ODc0LCA3ODc5LCA3ODg0LCA3ODg5LCAKKyAgICA3ODk1LCA3OTAxLCA3OTA2LCA3OTEyLCA3OTE4LCA3OTI0LCA3OTI5LCA3OTM0LCA3OTM5LCA3OTQ0LCA3OTUwLCA3OTU2LCAKKyAgICA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg3LCA3OTkyLCA3OTk4LCA4MDA0LCA4MDEwLCA4MDE2LCA4MDIyLCAKKyAgICA4MDI4LCA4MDM0LCA4MDQwLCA4MDQ2LCAyMTQ5LCA3NDc3LCA4MDUxLCA4MDU1LCA4MDU5LCA4MDYyLCA4MDY5LCA4MDcyLCAKKyAgICA4MDc2LCA4MDg0LCA4MDg5LCA4MDk0LCA4MDg1LCA4MDk5LCAyMTc2LCA4MTAzLCA4MTA5LCA4MTE1LCA4MTIwLCA4MTI1LCAKKyAgICA4MTMyLCA4MTQwLCA4MTQ1LCA4MTQ5LCA4MTUyLCA4MTU2LCA4MTYyLCA4MTY4LCA4MTcyLCAyMTg0LCA1NDEsIDgxNzUsIAorICAgIDgxNzksIDgxODQsIDgxOTAsIDgxOTUsIDgxOTksIDgyMDIsIDgyMDYsIDgyMTIsIDgyMTcsIDgyMjEsIDgyMjgsIDgyMzIsIAorICAgIDgyMzYsIDgyNDAsIDg4MiwgOTg0LCA4MjQzLCA4MjUxLCA4MjU4LCA4MjY0LCA4MjcxLCA4Mjc5LCA4Mjg2LCA4Mjk3LCAKKyAgICA4MzA0LCA4MzEwLCA4MzE1LCA4MzI3LCAxMjA5LCAxMzc0LCAxMzc5LCA4MzM4LCAxMzg0LCA4MzQyLCA4MzQ2LCA4MzU1LCAKKyAgICA4MzYzLCA4MzY3LCA4Mzc2LCA4MzgyLCA4Mzg3LCA4MzkxLCA4Mzk3LCA4NDAyLCA4NDEwLCA4NDE3LCAyNzM0LCA4NDI0LCAKKyAgICA4NDI4LCA4NDM3LCA4NDQ2LCA4NDU1LCA4NDY0LCA4NDcwLCA4NDc1LCA4NDgwLCA4NDkxLCA4NTAwLCA4NTEyLCA4NTE3LCAKKyAgICA4NTI1LCAyMjM1LCA4NTI5LCA4NTMxLCA4NTM2LCA4NTQwLCA4NTQ5LCA4NTU3LCAxMzg4LCAxNjUsIDM1NzIsIDM1NzcsIAorICAgIDg1NjMsIDg1NjcsIDg1NzYsIDg1ODIsIDg1ODcsIDg1OTAsIDg1OTksIDM1ODEsIDg2MDUsIDI3MjYsIDg2MDksIDg2MTcsIAorICAgIDg2MjEsIDg2MjUsIDg2MjksIDIyNTIsIDg2MzMsIDg2MzgsIDg2NDUsIDg2NTEsIDg2NTcsIDg2NjAsIDg2NjIsIDg2NjUsIAorICAgIDg2NzMsIDg2ODEsIDg2ODksIDg2OTIsIDg2OTcsIDIyNjUsIDg3MDIsIDgwOTYsIDg3MDUsIDg3MDcsIDg3MTIsIDg3MTcsIAorICAgIDg3MjIsIDg3MjcsIDg3MzIsIDg3MzcsIDg3NDIsIDg3NDcsIDg3NTIsIDg3NTcsIDg3NjMsIDg3NjgsIDg3NzMsIDg3NzgsIAorICAgIDg3ODQsIDg3ODksIDg3OTQsIDg3OTksIDg4MDQsIDg4MDksIDg4MTQsIDg4MjAsIDg4MjUsIDg4MzAsIDg4MzUsIDg4NDAsIAorICAgIDg4NDUsIDg4NTAsIDg4NTUsIDg4NjAsIDg4NjUsIDg4NzAsIDg4NzUsIDg4ODAsIDg4ODUsIDg4OTAsIDg4OTUsIDg5MDAsIAorICAgIDg5MDUsIDg5MTEsIDg5MTcsIDg5MjIsIDg5MjcsIDg5MzIsIDg5MzcsIDg5NDIsIDIyNzYsIDIyODMsIDIyODksIDg5NDcsIAorICAgIDg5NTUsIDg5NjEsIDg5NjksIDIzMTUsIDIzMjEsIDg5NzcsIDg5ODEsIDg5ODYsIDg5OTAsIDg5OTQsIDg5OTgsIDkwMDMsIAorICAgIDkwMDcsIDkwMTIsIDkwMTYsIDkwMTksIDkwMjIsIDkwMjgsIDkwMzUsIDkwNDEsIDkwNDgsIDkwNTQsIDkwNjEsIDkwNjcsIAorICAgIDkwNzQsIDkwODAsIDkwODYsIDkwOTUsIDkxMDEsIDkxMDUsIDkxMDksIDkxMTMsIDkxMTcsIDkxMjIsIDkxMjYsIDkxMzEsIAorICAgIDkxMzUsIDkxNDEsIDkxNDYsIDkxNTMsIDkxNjQsIDkxNzIsIDkxODIsIDkxODgsIDkxOTgsIDkyMDcsIDkyMTQsIDkyMTksIAorICAgIDkyMjMsIDkyMzQsIDkyNDQsIDkyNTcsIDkyNjgsIDkyODEsIDkyOTIsIDkzMDQsIDkzMTYsIDkzMjgsIDkzNDEsIDkzNTQsIAorICAgIDkzNjEsIDkzNjcsIDkzNzgsIDkzODgsIDk0MDIsIDk0MDksIDk0MTUsIDk0MjQsIDk0MzIsIDk0MzYsIDk0NDEsIDk0NDUsIAorICAgIDk0NTIsIDk0NjAsIDk0NjcsIDk0NzEsIDk0NzcsIDk0ODEsIDk0ODcsIDk0OTcsIDk1MDEsIDk1MDYsIDk1MTEsIDk1MTgsIAorICAgIDk1MjQsIDk1MzQsIDgyNjYsIDk1NDAsIDk1NDQsIDk1NTEsIDk1NTcsIDk1NjQsIDk1NzEsIDk4MywgOTU3NSwgOTU3OSwgCisgICAgOTU4NCwgOTU4OSwgOTU5NCwgOTU5OCwgOTYwNCwgOTYxMiwgOTYxOSwgOTYyNSwgOTYyOSwgOTYzMiwgOTYzOCwgOTY0OCwgCisgICAgOTY1MiwgOTY1OCwgOTY2MywgOTY2NywgOTY3MSwgOTY3NywgOTY4MywgMjE3MiwgOTY4OCwgOTY5MCwgOTY5NSwgOTcwMywgCisgICAgOTcxMiwgOTcxNiwgOTcyMiwgOTcyNywgOTczMiwgOTczNywgOTc0MiwgOTc0OCwgOTc1MywgOTc1OCwgNDI0OSwgOTc2MywgCisgICAgOTc2OCwgOTc3MiwgOTc3OCwgOTc4MywgOTc4OSwgOTc5NCwgOTc5OSwgOTgwNSwgOTgxMCwgOTcxNywgOTgxNiwgOTgyMCwgCisgICAgOTgyNywgOTgzMywgOTgzOCwgOTg0MiwgNjUyMiwgOTg0NywgOTg1NiwgOTg2MSwgOTg2NiwgODY0MSwgODY0OCwgOTg3MSwgCisgICAgMjkwMSwgOTg3NSwgOTg4MCwgOTg4NSwgOTg5MCwgOTcyOCwgOTg5NCwgOTg5OSwgOTkwNCwgOTczMywgOTkwOCwgOTczOCwgCisgICAgOTkxMywgOTkyMCwgOTkyNywgOTkzMywgOTk0MCwgOTk0NiwgOTk1MiwgOTk1NywgOTk2NCwgOTk2OSwgOTk3NCwgOTk3OSwgCisgICAgOTk4NSwgOTc0MywgOTc0OSwgOTk5MSwgOTk5NywgMTAwMDIsIDEwMDA3LCAxMDAxNSwgOTc1NCwgMTAwMjAsIDExMTIsIAorICAgIDEwMDIzLCAxMDAzMSwgMTAwMzcsIDEwMDQzLCAxMDA1MiwgMTAwNjAsIDEwMDY4LCAxMDA3NiwgMTAwODQsIDEwMDkyLCAKKyAgICAxMDEwMCwgMTAxMDgsIDEwMTE2LCAxMDEyNSwgMTAxMzQsIDEwMTQyLCAxMDE1MSwgMTAxNjAsIDEwMTY5LCAxMDE3OCwgCisgICAgMTAxODcsIDEwMTk2LCAxMDIwNSwgMTAyMTQsIDEwMjIzLCAxMDIzMiwgMTAyNDAsIDEwMjQ1LCAxMDI1MSwgMTAyNTksIAorICAgIDEwMjY2LCAxMDI4MSwgMTAyOTgsIDEwMzE3LCAxMDMyNiwgMTAzMzQsIDEwMzQ5LCAxMDM2MCwgMTAzNjgsIDEwMzc4LCAKKyAgICAxMDM4OCwgMTAzOTYsIDEwNDAyLCAxMDQxNCwgMTA0MjMsIDEwNDMxLCAxMDQzOCwgMTA0NDUsIDEwNDUyLCAxMDQ1OCwgCisgICAgMTA0NjMsIDEwNDczLCAxMDQ4MSwgMTA0OTEsIDEwNDk4LCAxMDUwOCwgMTA1MTgsIDEwNTI4LCAxMDUzNiwgMTA1NDMsIAorICAgIDEwNTUyLCAxMDU2MiwgMTA1NzYsIDEwNTkxLCAxMDYwMCwgMTA2MDgsIDEwNjEzLCAxMDYxNywgMTA2MjYsIDEwNjMyLCAKKyAgICAxMDYzNywgMTA2NDcsIDEwNjU3LCAxMDY2NywgMTA2NzIsIDEwNjc2LCAxMDY4NSwgMTA2OTAsIDEwNzA2LCAxMDcyMywgCisgICAgMTA3MzMsIDEwNzQ0LCAxMDc1NywgMTA3NjUsIDEwNzc4LCAxMDc5MCwgMTA3OTgsIDEwODAzLCAxMDgwNywgMTA4MTMsIAorICAgIDEwODE4LCAxMDgyNiwgMTA4MzQsIDEwODQxLCAxMDg0NiwgMTA4NTQsIDEwODY0LCAxMDg3MCwgMTA4NzQsIDEwODc3LCAKKyAgICAxMDg4MSwgMTA4ODcsIDEwODk0LCAxMDg5OCwgMTA5MDYsIDEwOTE1LCAxMDkyMywgMTA5MzAsIDEwOTM1LCAxMDk0MCwgCisgICAgMTA5NDQsIDEwOTQ4LCAxMDk1NiwgMTA5NzEsIDEwOTg3LCAxMDk5MywgMTEwMDEsIDExMDEwLCAxMTAxOCwgMTEwMjQsIAorICAgIDExMDI4LCAxMTAzNSwgMTEwNDYsIDExMDUwLCAxMTA1MywgMTEwNTksIDk3NTksIDExMDY0LCAxMTA3MCwgMTEwNzcsIAorICAgIDExMDgzLCAxMTA4OCwgMTEwOTUsIDExMTAyLCAxMTEwOSwgMTExMTYsIDExMTIzLCAxMTEzMCwgMTExMzcsIDExMTQ0LCAKKyAgICAxMTE0OSwgMTAyOTQsIDExMTU0LCAxMTE2MCwgMTExNjcsIDExMTc0LCAxMTE3OSwgMTExODYsIDExMTk1LCAxMTE5OSwgCisgICAgMTEyMTEsIDg2NzksIDExMjE1LCAxMTIxOCwgMTEyMjIsIDExMjI2LCAxMTIzMCwgMTEyMzQsIDExMjQwLCAxMTI0NiwgCisgICAgMTEyNTEsIDExMjU3LCAxMTI2MiwgMTEyNjcsIDExMjczLCAxMTI3OCwgMTEyODMsIDk1MTQsIDExMjg4LCAxMTI5MiwgCisgICAgMTEyOTYsIDExMzAwLCAxMTMwNSwgMTEzMTAsIDExMzE1LCAxMTMyMywgMTEzMjksIDExMzM0LCAxMTMzOCwgMTEzNDIsIAorICAgIDExMzQ5LCAxMTM1NCwgMTEzNjIsIDExMzY5LCAxMTM3NCwgMTEzNzgsIDExMzgxLCAxMTM4NywgMTEzOTQsIDExMzk4LCAKKyAgICAxMTQwMSwgMTE0MDYsIDExNDEwLCA0Mjg4LCAxMTQxNiwgMTE0MjUsIDQ2LCAxMTQzMywgMTE0MzksIDExNDQ0LCAxMTQ0OSwgCisgICAgMTE0NTcsIDExNDY0LCAxMTQ2OSwgOTUyOSwgMTE0NzUsIDExNDgxLCAxMTQ4NiwgMTE0OTAsIDExNDkzLCAxMTUwOCwgCisgICAgMTE1MjcsIDExNTM5LCAxMTU1MiwgMTE1NjUsIDExNTc4LCAxMTU5MiwgMTE2MDUsIDExNjIwLCAxMTYyNywgOTc2NCwgCisgICAgMTE2MzMsIDExNjQ3LCAxMTY1MiwgMTE2NTgsIDExNjYzLCAxMTY3MSwgMTE2NzYsIDg0MzMsIDExNjgxLCAxMTY4NCwgCisgICAgMTE2OTIsIDExNjk5LCAxMTcwNCwgMTE3MDgsIDExNzE0LCAyOTA2LCAxMDM3NiwgMTE3MTgsIDExNzIyLCAxMTcyOCwgCisgICAgMTE3MzQsIDExNzM5LCAxMTc0NSwgMTE3NTAsIDk3NzMsIDExNzU2LCAxMTc2MiwgMTE3NjcsIDExNzcyLCAxMTc4MCwgCisgICAgMTE3ODYsIDExNzk5LCAxMTgwNywgMTE4MTQsIDExODIwLCA5Nzc5LCAxMTgyNiwgMTE4MzQsIDExODQyLCAxMTg0OSwgCisgICAgMTE4NjIsIDExODc1LCAxMTg4NywgMTE4OTcsIDExOTA5LCAxMTkxNywgMTE5MjQsIDExOTM2LCAxMTk0MywgMTE5NTMsIAorICAgIDExOTYyLCAxMTk3MSwgMTE5NzksIDExOTg2LCAxMTk5MSwgMTE5OTcsIDk3ODQsIDEyMDAyLCAxMjAwOCwgMTIwMTMsIAorICAgIDEyMDE4LCA5NzkwLCAxMjAyMywgMTIwMjYsIDEyMDMzLCAxMjAzOSwgMTIwNTIsIDkxNTcsIDEyMDYzLCAxMjA2OSwgCisgICAgMTIwNzgsIDEyMDg2LCAxMjA5MywgMTIwOTksIDEyMTEwLCAxMjExNiwgMTIxMjEsIDM4MzUsIDEyMTI5LCAxMjEzNCwgCisgICAgMTE1MDAsIDEyMTQwLCAxMjE0NywgMTIxNTIsIDk3OTUsIDEyMTU4LCAxMjE2MywgMTIxNzAsIDEyMTc2LCAxMjE4MiwgCisgICAgMTIxODcsIDEyMTk1LCAxMjIwMywgMTIyMTAsIDEyMjE0LCAxMjIyNiwgMTIyNDAsIDEyMjUwLCAxMjI1NSwgMTIyNTksIAorICAgIDEyMjcwLCAxMjI3NiwgMTIyODEsIDEyMjg2LCA5ODAwLCAxMjI5MCwgOTgwNiwgMTIyOTUsIDEyMjk4LCAxMjMwMywgCisgICAgMTIzMTUsIDEyMzIyLCAxMjMyNywgMTIzMzEsIDEyMzM5LCAxMjM0NCwgMTIzNDgsIDEyMzUzLCAxMjM1NywgMTIzNjQsIAorICAgIDEyMzcwLCA5ODExLCA5NzE4LCAxMjM3NywgMjkxMSwgMTIsIDEyMzg0LCAxMjM4OSwgMTIzOTMsIDEyMzk3LCAxMjQwMywgCisgICAgMTI0MTEsIDEyNDIxLCAxMjQyNiwgMTI0MzEsIDEyNDM4LCAxMjQ0NSwgMTI0NDksIDEyNDYwLCAxMjQ3MCwgMTI0NzksIAorICAgIDEyNDg4LCAxMjUwMCwgMTI1MDUsIDEyNTA5LCAxMjUxNywgMTI1MzEsIDEyNTM1LCAxMjUzOCwgMTI1NDYsIDEyNTUzLCAKKyAgICAxMjU2MSwgMTI1NjUsIDEyNTc2LCAxMjU4MCwgMTI1ODcsIDEyNTkyLCAxMjU5NiwgMTI2MDIsIDEyNjA3LCAxMjYxMywgCisgICAgMTI2MTgsIDEyNjIzLCAxMjYyNywgMTI2MzMsIDEyNjM4LCAxMjY0OSwgMTI2NTMsIDEyNjU2LCAxMjY2MiwgMTI2NjcsIAorICAgIDEyNjczLCAxMjY3OSwgMTI2ODYsIDEyNjk3LCAxMjcwNywgMTI3MTcsIDEyNzI2LCAxMjczMywgMTI3NDIsIDEyNzQ2LCAKKyAgICA5ODIxLCA5ODI4LCA5ODM0LCA5ODM5LCAxMjc1MiwgMTI3NTgsIDEyNzY0LCAxMjc2OSwgMTI3NzUsIDk4NDMsIDEyNzgxLCAKKyAgICAxMjc4NCwgMTI3OTEsIDEyNzk2LCAxMjgxMSwgMTI4MjcsIDEyODQyLCAxMjg1MCwgMTI4NTYsIDEyODYxLCA5NzYsIDM4NywgCisgICAgMTI4NjYsIDEyODc0LCAxMjg4MSwgMTI4ODcsIDEyODkyLCAxMjg5NywgOTg0OCwgMTI4OTksIDEyOTAzLCAxMjkwOCwgCisgICAgMTI5MTIsIDEyOTIyLCAxMjkyNywgMTI5MzEsIDEyOTQwLCAxMjk0NCwgMTI5NDcsIDEyOTU0LCA5ODU3LCAxMjk1OSwgCisgICAgMTI5NjIsIDEyOTcwLCAxMjk3NywgMTI5ODUsIDEyOTg5LCAxMjk5MywgMTMwMDAsIDEzMDA5LCAxMzAxNiwgMTMwMTIsIAorICAgIDEzMDIzLCAxMzAyNywgMTMwMzMsIDEzMDM3LCAxMzA0MSwgMTMwNDUsIDEzMDUxLCAxMzA2MSwgMTMwNjksIDEzMDc2LCAKKyAgICAxMzA4MCwgMTMwODgsIDEzMDkyLCAxMzA5OSwgMTMxMDMsIDEzMTA4LCAxMzExMiwgMTMxMTksIDEzMTI1LCAxMzEzMywgCisgICAgMTMxMzksIDEzMTQ0LCAxMzE1NCwgMTMxNTksIDEzMTY0LCAxMzE2OCwgMTMxNzIsIDEzMTgwLCA0MTM4LCAxMzE4OCwgCisgICAgMTMxOTMsIDk4NjIsIDEzMTk3LCAxMzIwMSwgMTMyMDQsIDEzMjEyLCAxMzIxOSwgMTMyMjMsIDYzMjIsIDEzMjI3LCAKKyAgICAxMzIzMiwgMTMyMzcsIDEzMjQxLCAxMzI1MiwgMTMyNjIsIDEzMjY3LCAxMzI3MywgMTMyNzgsIDEzMjgyLCAxMzI4NSwgCisgICAgMTMyOTMsIDEzMjk4LCAxMzMwMywgMTMzMTAsIDEzMzE1LCA5ODY3LCAxMzMyMCwgMTMzMjQsIDEzMzMxLCAxNzE4LCA2NDgwLCAKKyAgICAxMzMzNiwgMTMzNDEsIDEzMzQ2LCAxMzM1MSwgMTMzNTcsIDEzMzYyLCAxMzM2OCwgMTMzNzMsIDEzMzc4LCAxMzM4MywgCisgICAgMTMzODgsIDEzMzkzLCAxMzM5OCwgMTM0MDMsIDEzNDA4LCAxMzQxMywgMTM0MTgsIDEzNDIzLCAxMzQyOCwgMTM0MzMsIAorICAgIDEzNDM4LCAxMzQ0MywgMTM0NDgsIDEzNDU0LCAxMzQ1OSwgMTM0NjQsIDEzNDY5LCAxMzQ3NCwgMTM0NzksIDEzNDg1LCAKKyAgICAxMzQ5MCwgMTM0OTUsIDEzNTAxLCAxMzUwNiwgMTM1MTIsIDEzNTE3LCAxMzUyMywgMTM1MjgsIDEzNTMzLCAxMzUzOCwgCisgICAgMTM1NDMsIDEzNTQ5LCAxMzU1NCwgMTM1NTksIDEzNTY0LCA5MzYsIDExMiwgMTM1NzIsIDEzNTc2LCAxMzU4MSwgMTM1ODYsIAorICAgIDEzNTkwLCAxMzU5NCwgMTM1OTgsIDEzNjAzLCAxMzYwNywgMTM2MTIsIDEzNjE2LCAxMzYxOSwgMTM2MjMsIDEzNjI3LCAKKyAgICAxMzYzMywgMTM2MzgsIDEzNjQ4LCAxMzY1NCwgMTM2NjIsIDEzNjY4LCAxMzY3MiwgMTM2NzYsIDEzNjgzLCAxMzY5MSwgCisgICAgMTM3MDAsIDEzNzExLCAxMzcyMSwgMTM3MjgsIDEzNzM1LCAxMzczOSwgMTM3NDgsIDEzNzU3LCAxMzc2NSwgMTM3NzQsIAorICAgIDEzNzgzLCAxMzc5MiwgMTM4MDEsIDEzODExLCAxMzgyMSwgMTM4MzEsIDEzODQxLCAxMzg1MSwgMTM4NjAsIDEzODcwLCAKKyAgICAxMzg4MCwgMTM4OTAsIDEzOTAwLCAxMzkxMCwgMTM5MjAsIDEzOTMwLCAxMzkzOSwgMTM5NDksIDEzOTU5LCAxMzk2OSwgCisgICAgMTM5NzksIDEzOTg5LCAxMzk5OSwgMTQwMDgsIDE0MDE4LCAxNDAyOCwgMTQwMzgsIDE0MDQ4LCAxNDA1OCwgMTQwNjgsIAorICAgIDE0MDc4LCAxNDA4OCwgMTQwOTgsIDE0MTA3LCAxNDExNywgMTQxMjcsIDE0MTM3LCAxNDE0NywgMTQxNTcsIDE0MTY3LCAKKyAgICAxNDE3NywgMTQxODcsIDE0MTk3LCAxNDIwNywgMTQyMTYsIDEyMTgsIDE0MjIyLCAxNDIyNSwgMTQyMjksIDE0MjM0LCAKKyAgICAxNDI0MSwgMTQyNDcsIDE0MjUyLCAxNDI1NiwgMTQyNjEsIDE0MjcwLCAxNDI3OCwgMTQyODMsIDE0Mjg3LCAxNDI5MSwgCisgICAgMTQyOTcsIDE0MzAyLCAxNDMwOCwgOTg3NiwgMTQzMTMsIDE0MzE4LCAxNDMyNywgOTg4NiwgMTQzMzIsIDE0MzM1LCAKKyAgICAxNDM0MSwgMTQzNDksIDk4OTEsIDE0MzU2LCAxNDM2MCwgMTQzNjQsIDE0MzY5LCAxNDM3MywgMTQzODMsIDE0Mzg5LCAKKyAgICAxNDM5NSwgMTQ0MDAsIDE0NDA5LCAxNDQxNywgMTQ0MjQsIDE0NDMxLCAxNDQzNiwgMTQ0NDMsIDE0NDQ4LCAxNDQ1MiwgCisgICAgMTQ0NTUsIDE0NDY2LCAxNDQ3NiwgMTQ0ODUsIDE0NDkzLCAxNDUwNCwgMTQ1MTYsIDE0NTI2LCAxNDUzMSwgMTQ1MzUsIAorICAgIDE0NTQwLCAxNDU0NSwgMTQ1NDksIDE0NTU1LCAxNDU2MywgMTQ1NzAsIDE0NTgxLCAxNDU4NiwgMTQ1OTYsIDE0NjA1LCAKKyAgICAxNDYwOSwgMTQ2MTIsIDE0NjE5LCAxNDYyOSwgMTQ2MzgsIDE0NjQ1LCAxNDY0OSwgMTQ2NTYsIDE0NjYyLCAxNDY2NywgCisgICAgMTQ2NzIsIDE0Njc2LCAxNDY4NSwgMTQ2OTAsIDE0Njk0LCAxNDcwMCwgMTQ3MDQsIDE0NzA5LCAxNDcxMywgMTQ3MjAsIAorICAgIDE0NzI3LCAxNDczMSwgMTQ3NDAsIDE0NzQ4LCAxNDc1NiwgMTQ3NjMsIDE0NzcxLCAxNDc4MywgMTQ3OTQsIDE0ODA0LCAKKyAgICAxNDgxMSwgMTQ4MTcsIDE0ODI2LCAxNDgzNywgMTQ4NDYsIDE0ODU4LCAxNDg3MCwgMTQ4ODIsIDE0ODkyLCAxNDkwMSwgCisgICAgMTQ5MTAsIDE0OTE4LCAxNDkyNSwgMTQ5MzQsIDE0OTQyLCAxNDk0NiwgMTQ5NTEsIDE0OTU3LCAxNDk2MywgMTQ5NjgsIAorICAgIDE0OTczLCA4MTE3LCAxNDk3NywgMTQ5NzksIDE0OTgzLCAxNDk4OCwgMTQ5OTUsIDE1MDAxLCAxNTAwNywgMTUwMTYsIAorICAgIDE1MDIwLCAxNTAyNiwgMTUwMzQsIDE1MDQxLCAxNTA1MCwgMTUwNTksIDE1MDY4LCAxNTA3NywgMTUwODYsIDE1MDk1LCAKKyAgICAxNTEwNCwgMTUxMTMsIDE1MTIzLCAxNTEzMywgMTUxNDIsIDE1MTQ4LCAxNTE1NSwgMTUxNjIsIDE1MTY4LCAxNTE4MiwgCisgICAgMTUxODgsIDE1MTk1LCAxNTIwMywgMTUyMTIsIDE1MjIwLCAxNTIyNiwgMTUyMzUsIDE1MjQ0LCAxNTI1NSwgMTUyNjUsIAorICAgIDE1MjczLCAxNTI4MCwgMTUyODgsIDE1Mjk3LCAxNTMxMCwgMTUzMTksIDE1MzI3LCAxNTMzNCwgMTUzNDcsIDE1MzUzLCAKKyAgICAxNTM1OSwgMTUzNjksIDE1Mzc4LCAxNTM4NywgMTUzOTIsIDE1Mzk2LCAxNTQwMiwgMTU0MDgsIDE1NDEzLCAxNTQyMCwgCisgICAgMTU0MjcsIDk1MjgsIDE1NDMyLCAxNTQzNywgMTU0NDQsIDE1NDUyLCAxNTQ1NywgMTU0NjQsIDE1NDY5LCAxNTQ4MSwgCisgICAgMTM2MjksIDE1NDg2LCAxNTQ5NCwgMTU1MDAsIDE1NTA1LCAxNTUxMywgMTU1MjEsIDE1NTI4LCAxNTUzNiwgMTU1NDIsIAorICAgIDE1NTUwLCAxNTU1OCwgMTU1NjQsIDE1NTY5LCAxNTU3NSwgMTU1ODIsIDE1NTg4LCAxNTU5MywgMTU1OTcsIDE1NjA4LCAKKyAgICAxNTYxNiwgMTU2MjIsIDE1NjI3LCAxNTYzNCwgMTU2NDMsIDE1NjQ5LCAxNTY1NCwgMTU2NjIsIDE1NjcxLCAxNTY4NSwgCisgICAgNDA4MiwgMTU2ODksIDE1Njk0LCAxNTY5OSwgMTU3MDUsIDE1NzEwLCAxNTcxNSwgMTU3MTksIDE1NzI0LCAxNTcyOSwgCisgICAgMTU3MzQsIDgxMTYsIDE1NzM5LCAxNTc0NCwgMTU3NDksIDE1NzU0LCAxNTc1OSwgMTU3NjMsIDE1NzY4LCAxNTc3MywgCisgICAgMTU3NzgsIDE1NzgzLCAxNTc4OSwgMTU3OTUsIDE1ODAwLCAxNTgwNCwgMTU4MTAsIDE1ODE1LCAxNTgyMCwgMTU4MjUsIAorICAgIDk4OTUsIDE1ODMwLCAxNTgzNSwgMTU4NDAsIDE1ODQ1LCAxNTg1MCwgMTU4NjcsIDE1ODg1LCAxNTg5NywgMTU5MTAsIAorICAgIDE1OTI3LCAxNTk0MywgMTU5NjAsIDE1OTcwLCAxNTk4OSwgMTYwMDAsIDE2MDExLCAxNjAyMiwgMTYwMzMsIDE2MDQ1LCAKKyAgICAxNjA1NiwgMTYwNjcsIDE2MDg0LCAxNjA5NSwgMTYxMDYsIDE2MTExLCA5OTAwLCAxNjExNiwgMTYxMjAsIDI0MDUsIAorICAgIDE2MTI0LCAxNjEyNywgMTYxMzMsIDE2MTQxLCAxNjE0OSwgMTYxNTUsIDE2MTY0LCAxNjE3MSwgMTYxNzYsIDE2MTg0LCAKKyAgICAxNjE5MiwgMTYxOTksIDE2MjAzLCAxNjIwOCwgMTYyMTQsIDE2MjIxLCAxNjIyOSwgMTYyMzYsIDE2MjQ4LCAxNjI1NSwgCisgICAgMTYyNjEsIDE2MjY5LCAxNjI3NCwgMTYyODAsIDEyODA1LCAxNjI4NiwgMTYyOTUsIDE2MzAxLCAxNjMwNiwgMTYzMTQsIAorICAgIDE2MzIzLCAxNjMzMSwgMTYzMzgsIDE2MzQ0LCAxNjM1MiwgMTYzNTksIDE2MzY1LCAxNjM3MSwgMTYzNzgsIDE2Mzg1LCAKKyAgICAxNjM5MSwgMTYzOTcsIDE2NDA2LCAxNjQxNCwgMTY0MjQsIDE2NDMxLCAxNjQzNywgMTY0NDUsIDE2NDUxLCAxNjQ1OSwgCisgICAgMTY0NjcsIDE2NDc0LCAxNjQ4NywgMTY0OTQsIDE2NTAzLCAxNjUxMiwgMTY1MjEsIDE2NTI5LCAxNjUzOSwgMTY1NDYsIAorICAgIDE2NTUxLCAzNzI2LCAxNjU1OCwgMTY1NjMsIDEzMzQsIDE2NTY3LCAxNTc0MCwgMTY1NzEsIDE2NTc3LCAxNjU4MSwgCisgICAgMTY1ODksIDE2NjAxLCAxNjYwNiwgMTY2MTMsIDE2NjE5LCAxNjYyNCwgMTY2MzEsIDE1NzQ1LCAxNjYzNSwgMTY2MzksIAorICAgIDE2NjQzLCAxNTc1MCwgMTY2NDcsIDE1NzU1LCAxNjY1MSwgMTY2NTgsIDE2NjYzLCAxNjY2NywgMTY2NzQsIDE2Njc4LCAKKyAgICAxNjY4NiwgMTY2OTMsIDE2Njk4LCAxNjcwMiwgMTY3MDksIDE2NzI2LCAxNjczNSwgMTY3MzksIDE2NzQyLCAxNjc1MCwgCisgICAgMTY3NTYsIDE2NzYxLCAzODA0LCAxNjc2NSwgMTY3NjcsIDE2Nzc1LCAxNjc4MiwgMTY3OTIsIDE2ODA0LCAxNjgwOSwgCisgICAgMTY4MTMsIDE2ODE5LCAxNjgyNCwgMTY4MzIsIDE2ODM2LCAxNjg0MiwgMTY4NDcsIDE2ODUzLCAxNjg1NiwgMTY4NjMsIAorICAgIDE2ODcxLCAxNjg3OCwgMTY4ODQsIDE2ODg5LCAxNjg5NSwgMTY5MDAsIDE2OTA3LCAxNjkxMywgMTY5MTgsIDE2OTI1LCAKKyAgICAxNjkzMCwgMTY5MzQsIDE2OTQwLCAxNjk0NCwgMTY5NTEsIDE2OTU3LCAxNjk2MiwgMTY5NjgsIDE2OTc2LCAxNjk4NCwgCisgICAgMTY5OTEsIDE2OTk3LCAxNzAwMiwgMTcwMDgsIDE3MDE0LCAxNzAyMiwgMTcwMjcsIDE3MDM1LCAxNzA0MSwgMTcwNDcsIAorICAgIDE3MDUyLCAxNzA1OSwgMTcwNjQsIDE3MDY4LCAxNzA3NCwgMTcwNzksIDE3MDg2LCAxNzA5MSwgMTcwOTcsIDE3MTAwLCAKKyAgICAxNzEwNiwgMTcxMTIsIDE3MTE1LCAxNzExOSwgMTcxMjMsIDE3MTM1LCAxNzE0MSwgMTcxNDYsIDE3MTUzLCAxNzE1OSwgCisgICAgMTcxNjUsIDE3MTc2LCAxNzE4NiwgMTcxOTUsIDE3MjAzLCAxNzIxMCwgMTcyMjEsIDE3MjMxLCAxNzI0MSwgMTcyNDksIAorICAgIDE3MjUyLCAxNTc2OSwgMTcyNTcsIDE3MjYyLCAxNTc3NCwgMTU5MTUsIDE3MjcwLCAxNzI4MywgMTcyOTgsIDE3MzA5LCAKKyAgICAxNTkzMiwgMTczMjcsIDE3MzQwLCAxNzM1MywgMTczNjQsIDExNTE1LCAxNzM3NSwgMTczODgsIDE3NDA3LCAxNzQxOCwgCisgICAgMTc0MjksIDE3NDQwLCAyNjc3LCAxNzQ1MywgMTc0NTcsIDE3NDY1LCAxNzQ3NiwgMTc0ODcsIDE3NDk1LCAxNzUxMCwgCisgICAgMTc1MjUsIDE3NTM2LCAxNzU0MywgMTc1NDksIDE3NTU3LCAxNzU2MSwgMTc1NjcsIDE3NTcwLCAxNzU4MywgMTc1OTUsIAorICAgIDE3NjA1LCAxNzYxMywgMTc2MjAsIDE3NjI4LCAxNzYzOCwgMTc2NDMsIDE3NjUwLCAxNzY1NSwgMTc2NjIsIDE3NjczLCAKKyAgICAxNzY4MywgMTc2ODksIDE3Njk0LCAxNzY5OSwgMTU3NzksIDE3NzAzLCAxNzcwOSwgMTc3MTUsIDE3NzIwLCAxNzcyNSwgCisgICAgMTc3MzAsIDE3NzM0LCAxNTc4NCwgMTU3OTAsIDE3NzM4LCAxNTc5NiwgMTc3NDMsIDE3NzUxLCAxNzc1NiwgMTc3NjAsIAorICAgIDE3NzY3LCAxNzc3NSwgMTc3ODQsIDE3NzkxLCAxNzc5NSwgOTczOSwgMTc3OTksIDE3ODAxLCAxNzgwNiwgMTc4MTEsIAorICAgIDE3ODE3LCAxNzgyMiwgMTc4MjcsIDE3ODMyLCAxNzgzNywgMTc4NDEsIDE3ODQ3LCAxNzg1MywgMTc4NTgsIDE3ODY0LCAKKyAgICAxNzg2OSwgMTc4NzQsIDE3ODc4LCAxNzg4NCwgMTc4ODksIDE3ODkzLCAxNzg5OCwgMTc5MDMsIDE3OTE1LCAxNzkyMCwgCisgICAgMTc5MjYsIDE3OTMxLCAxNzkzNiwgMTc5NDIsIDE3OTQ4LCAxNzk1MywgMTc5NTgsIDE3OTYzLCAxNzk3MCwgMTc5NzYsIAorICAgIDE3OTg3LCAxNzk5NCwgMTc5OTksIDE4MDAzLCAxODAwNywgMTgwMTAsIDE4MDE4LCAxODAyMywgMTgwMjksIDE4MDM2LCAKKyAgICAxODA0MywgMTgwNDksIDE4MDU0LCAxODA1OSwgMTgwNjQsIDE4MDcxLCAxODA4MSwgMTgwODksIDE4MDk0LCAxODEwMSwgCisgICAgMTgxMDcsIDE4MTE2LCAxODEyNiwgMTgxMzYsIDE4MTUwLCAxODE2NCwgMTgxNzgsIDE4MTkyLCAxODIwNywgMTgyMjIsIAorICAgIDE4MjM5LCAxODI1NywgMTgyNzAsIDE4Mjc2LCAxODI4MSwgMTgyODYsIDE4MjkwLCAxODI5OCwgMTgzMDMsIDE4MzExLCAKKyAgICAxODMxNywgMTgzMjMsIDE4MzI4LCAxODMzMywgMTgzMzcsIDE4MzQyLCAxODM0NiwgMTgzNTEsIDE4MzU1LCAxODM2NiwgCisgICAgMTgzNzIsIDE4Mzc3LCAxODM4MiwgMTgzODksIDE4Mzk0LCAxODM5OCwgMzY4OSwgMTg0MDMsIDE4NDA5LCAxODQxNiwgCisgICAgMTU4MDUsIDE4NDIyLCAxODQyNiwgMTg0MzIsIDE4NDM3LCAxODQ0MiwgMTg0NDYsIDE4NDUyLCAxODQ1NywgMTg0NjIsIAorICAgIDE4NDY5LCAxODQ3NCwgMTQzODUsIDE4NDc4LCAxODQ4MywgMTg0ODcsIDE4NDkyLCAxODQ5OCwgMTg1MDQsIDE4NTExLCAKKyAgICAxODUyMSwgMTg1MjksIDE4NTM2LCAxODU0MSwgMTg1NDUsIDE4NTU0LCAxODU2MiwgMTg1NjksIDE4NTc2LCAxODU4MiwgCisgICAgMTg1ODcsIDE4NTkzLCAxODU5OCwgMTg2MDMsIDE4NjA5LCAxODYxNCwgMTg2MjAsIDE4NjI1LCAxODYzMSwgMTg2MzcsIAorICAgIDE4NjQ0LCAxODY1MCwgMTg2NTUsIDE4NjYwLCA5OTY1LCAxODY2OSwgMTg2NzIsIDE4NjgwLCAxODY4NiwgMTg2OTEsIAorICAgIDE4Njk2LCAxODcwNiwgMTg3MTMsIDE4NzE5LCAxODcyNCwgMTg3MjksIDE4NzM1LCAxODc0MCwgMTg3NDYsIDE4NzUxLCAKKyAgICAxODc1NywgMTg3NjMsIDE4NzY5LCAxODc3NCwgMTg3ODIsIDE4Nzg5LCAxODc5NCwgMTg3OTksIDE4ODA1LCAxODgxMCwgCisgICAgMTg4MTQsIDE4ODIzLCAxODgzNCwgMTg4NDEsIDE4ODQ4LCAxODg1NiwgMTg4NjMsIDE4ODY4LCAxODg3MywgMTg4NzksIAorICAgIDE4ODg0LCAxODg5MiwgMTg4OTgsIDE4OTA0LCAxODkxMSwgMTg5MTcsIDE4OTIyLCAxODkyNiwgMTg5MzIsIDE4OTM3LCAKKyAgICAxODk0MiwgMTg5NDYsIDE4OTUxLCAxNDA3LCA4MTQxLCAyOTI1LCAxODk1NSwgMTg5NTksIDE4OTYzLCAxODk2NywgMTg5NzEsIAorICAgIDE4OTc1LCAxODk3OCwgMTg5ODMsIDE4OTkwLCAxODk5OCwgMTU4MTYsIDE5MDA1LCAxOTAxNSwgMTkwMjMsIDE5MDMwLCAKKyAgICAxOTAzOCwgMTkwNDgsIDE5MDU3LCA5Mjc1LCAxOTA3MCwgMTkwNzUsIDE5MDgwLCAxOTA4OCwgMTkwOTUsIDE0NDgxLCAKKyAgICAxNDQ5MCwgMTkxMDIsIDE5MTEyLCAxOTEyNywgMTkxMzMsIDE5MTQwLCAxOTE0NywgMTkxNTMsIDE5MTU5LCAxOTE3MCwgCisgICAgMTkxNzgsIDE5MTg2LCAxOTE5NiwgMTkyMDYsIDE1ODIxLCAxOTIxNSwgMTkyMjEsIDE5MjI3LCAxOTIzNSwgMTkyNDMsIAorICAgIDE5MjQ4LCAxOTI1NywgMTkyNjUsIDE5Mjc3LCAxOTI4NywgMTkyOTcsIDE5MzA3LCAxOTMxNiwgMTkzMjgsIDE5MzM4LCAKKyAgICAxOTM0OCwgMTkzNTksIDE5MzY2LCAxOTM3MSwgMTkzODMsIDE5Mzk1LCAxOTQwNywgMTk0MTksIDE5NDMxLCAxOTQ0MywgCisgICAgMTk0NTUsIDE5NDY3LCAxOTQ3OSwgMTk0OTEsIDE5NTAyLCAxOTUxNCwgMTk1MjYsIDE5NTM4LCAxOTU1MCwgMTk1NjIsIAorICAgIDE5NTc0LCAxOTU4NiwgMTk1OTgsIDE5NjEwLCAxOTYyMiwgMTk2MzMsIDE5NjQ1LCAxOTY1NywgMTk2NjksIDE5NjgxLCAKKyAgICAxOTY5MywgMTk3MDUsIDE5NzE3LCAxOTcyOSwgMTk3NDEsIDE5NzUzLCAxOTc2NCwgMTk3NzYsIDE5Nzg4LCAxOTgwMCwgCisgICAgMTk4MTIsIDE5ODI0LCAxOTgzNiwgMTk4NDgsIDE5ODYwLCAxOTg3MiwgMTk4ODQsIDE5ODk1LCAxOTkwNywgMTk5MTksIAorICAgIDE5OTMxLCAxOTk0MywgMTk5NTUsIDE5OTY3LCAxOTk3OSwgMTk5OTEsIDIwMDAzLCAyMDAxNSwgMjAwMjYsIDIwMDM4LCAKKyAgICAyMDA1MCwgMjAwNjIsIDIwMDc0LCAyMDA4NiwgMjAwOTgsIDIwMTEwLCAyMDEyMiwgMjAxMzQsIDIwMTQ2LCAyMDE1NywgCisgICAgMjAxNjksIDIwMTgxLCAyMDE5MywgMjAyMDUsIDIwMjE3LCAyMDIyOSwgMjAyNDEsIDIwMjUzLCAyMDI2NSwgMjAyNzcsIAorICAgIDIwMjg4LCAyMDMwMCwgMjAzMTIsIDIwMzI0LCAyMDMzNiwgMjAzNDksIDIwMzYyLCAyMDM3NSwgMjAzODgsIDIwNDAxLCAKKyAgICAyMDQxNCwgMjA0MjcsIDIwNDM5LCAyMDQ1MiwgMjA0NjUsIDIwNDc4LCAyMDQ5MSwgMjA1MDQsIDIwNTE3LCAyMDUzMCwgCisgICAgMjA1NDMsIDIwNTU2LCAyMDU2OSwgMjA1ODEsIDIwNTk0LCAyMDYwNywgMjA2MjAsIDIwNjMzLCAyMDY0NiwgMjA2NTksIAorICAgIDIwNjcyLCAyMDY4NSwgMjA2OTgsIDIwNzExLCAyMDcyMywgMjA3MzYsIDIwNzQ5LCAyMDc2MiwgMjA3NzUsIDIwNzg4LCAKKyAgICAyMDgwMSwgMjA4MTQsIDIwODI3LCAyMDg0MCwgMjA4NTMsIDIwODY1LCAyMDg3OCwgMjA4OTEsIDIwOTA0LCAyMDkxNywgCisgICAgMjA5MzAsIDIwOTQzLCAyMDk1NiwgMjA5NjksIDIwOTgyLCAyMDk5NSwgMjEwMDcsIDIxMDIwLCAyMTAzMywgMjEwNDYsIAorICAgIDIxMDU5LCAyMTA3MiwgMjEwODUsIDIxMDk4LCAyMTExMSwgMjExMjQsIDIxMTM3LCAyMTE0OSwgMjExNjAsIDIxMTczLCAKKyAgICAyMTE4NiwgMjExOTksIDIxMjEyLCAyMTIyNSwgMjEyMzgsIDIxMjUxLCAyMTI2NCwgMjEyNzcsIDIxMjkwLCAyMTMwMiwgCisgICAgMjEzMTUsIDIxMzI4LCAyMTM0MSwgMjEzNTQsIDIxMzY3LCAyMTM4MCwgMjEzOTMsIDIxNDA2LCAyMTQxOSwgMjE0MzIsIAorICAgIDIxNDQ0LCAyMTQ1NywgMjE0NzAsIDIxNDgzLCAyMTQ5NiwgMjE1MDksIDIxNTIyLCAyMTUzNSwgMjE1NDgsIDIxNTYxLCAKKyAgICAyMTU3NCwgMjE1ODYsIDIxNTk5LCAyMTYxMiwgMjE2MjUsIDIxNjM4LCAyMTY1MSwgMjE2NjQsIDIxNjc3LCAyMTY5MCwgCisgICAgMjE3MDMsIDIxNzE2LCAyMTcyOCwgMjE3NDEsIDIxNzU0LCAyMTc2NywgMjE3ODAsIDIxNzkzLCAyMTgwNiwgMjE4MTksIAorICAgIDIxODMyLCAyMTg0NSwgMjE4NTgsIDIxODcwLCAyMTg4MywgMjE4OTYsIDIxOTA5LCAyMTkyMiwgMjE5MzUsIDIxOTQ4LCAKKyAgICAyMTk2MSwgMjE5NzQsIDIxOTg3LCAyMjAwMCwgMjIwMTIsIDIyMDI1LCAyMjAzOCwgMjIwNTEsIDIyMDY0LCAyMjA3NywgCisgICAgMjIwOTAsIDIyMTAzLCAyMjExNiwgMjIxMjksIDIyMTQyLCAyMjE1NCwgMjIxNjcsIDIyMTgwLCAyMjE5MywgMjIyMDYsIAorICAgIDIyMjE5LCAyMjIzMiwgMjIyNDUsIDIyMjU4LCAyMjI3MSwgMjIyODQsIDIyMjk2LCAyMjMwOSwgMjIzMjIsIDIyMzM1LCAKKyAgICAyMjM0OCwgMjIzNjEsIDIyMzc0LCAyMjM4NywgMjI0MDAsIDIyNDEzLCAyMjQyNiwgMjI0MzgsIDIyNDUxLCAyMjQ2NCwgCisgICAgMjI0NzcsIDIyNDkwLCAyMjUwMywgMjI1MTYsIDIyNTI5LCAyMjU0MiwgMjI1NTUsIDIyNTY4LCAyMjU4MCwgMjI1OTEsIAorICAgIDIyNjAwLCAyMjYwOCwgMjI2MTYsIDIyNjIzLCAyMjYyOSwgMjI2MzMsIDIyNjM5LCAyMjY0NSwgMjI2NTMsIDIyNjU4LCAKKyAgICAyMjY2NCwgMjI2NjksIDIyNjczLCAyMjY4MiwgOTc0NCwgMjI2OTMsIDIyNzAwLCAyMjcwOCwgMjI3MTUsIDIyNzIyLCAKKyAgICAxMjA0NiwgMjI3MjksIDIyNzM2LCAyMjc0NSwgMjI3NTAsIDIyNzU1LCA4MTY5LCAyMjc2MiwgMjI3NjcsIDIyNzcwLCAKKyAgICAyMjc3NSwgMjI3ODMsIDIyNzkwLCAyMjc5NywgMjI4MDQsIDIyODEwLCAyMjgxOSwgMjI4MjgsIDIyODM3LCAyMjg0MywgCisgICAgMjI4NTEsIDIyODYwLCAyMjg2NCwgMjI4NzAsIDIyODc1LCAyMjg4NSwgMjI4OTIsIDIyODk4LCAyMjkwNiwgMjI5MTIsIAorICAgIDIyOTE5LCAyMjkyOSwgMjI5MzgsIDIyOTQyLCAyMjk0OSwgMjI5NTMsIDIyOTU4LCAyMjk2NCwgMjI5NzIsIDIyOTc2LCAKKyAgICAyMjk4NiwgMTU4MzEsIDIyOTk1LCAyMzAwMSwgMjMwMDUsIDIzMDE0LCAyMzAyNCwgMTU4MzYsIDIzMDMwLCAyMzAzNywgCisgICAgMjMwNDgsIDIzMDU2LCAyMzA2NiwgMjMwNzUsIDIzMDgzLCA5NDkzLCAyMzA5MSwgMjMwOTYsIDIzMTAyLCAyMzEwNywgCisgICAgMjMxMTEsIDIzMTE1LCAyMzExOSwgMTA0NzcsIDIzMTI0LCAyMzEzMiwgMjMxMzksIDIzMTQ4LCAyMzE1NSwgMjMxNjIsIAorICAgIDIzMTY4LCAxMTk2NiwgMjMxNzUsIDIzMTgxLCAyMzE4NSwgMjMxOTEsIDIzMTk4LCAyMzIwNCwgMjMyMTIsIDIzMjE4LCAKKyAgICAyMzIyNSwgMjMyMzEsIDIzMjM3LCAyMzI0NiwgMjMyNTAsIDIzMjU4LCAyMzI2NywgMjMyNzQsIDIzMjc5LCAyMzI4MywgCisgICAgMjMyOTQsIDIzMjk5LCAyMzMwNCwgMjMzMTAsIDIzMzE1LCAyMzMyOCwgODM3MywgMjMzMzIsIDIzMzM4LCAyMzM0NCwgCisgICAgMjMzNDksIDIzMzU3LCAyMzM2MSwgMjMzNjgsIDIzMzc3LCAyMzM4MiwgMTYxMDcsIDIzMzkwLCAyMzM5NCwgMjM0MDYsIAorICAgIDIzNDExLCAyMzQxNSwgMjM0MTgsIDIzNDI0LCAyMzQzMCwgMjM0MzYsIDIzNDQxLCAyMzQ0NSwgMjM0NDgsIDIzNDU5LCAKKyAgICAyMzQ2NCwgMTAwMTYsIDIzNDcxLCAyMzQ3NiwgMTIyNCwgMTAwMjEsIDIzNDgxLCAyMzQ4NiwgMjM0OTEsIDIzNDk2LCAKKyAgICAyMzUwMSwgMjM1MDYsIDIzNTExLCAyMzUxNiwgMjM1MjEsIDIzNTI2LCAyMzUzMSwgMjM1MzYsIDIzNTQyLCAyMzU0NywgCisgICAgMjM1NTIsIDIzNTU3LCAyMzU2MiwgMjM1NjcsIDIzNTcyLCAyMzU3NywgMjM1ODIsIDIzNTg3LCAyMzU5MywgMjM1OTksIAorICAgIDIzNjA0LCAyMzYwOSwgMjM2MTQsIDIzNjE5LCAyMzYyNCwgMjM2MjksIDIzNjM0LCAyMzYzOSwgMjM2NDQsIDIzNjUwLCAKKyAgICAyMzY1NSwgMjM2NjAsIDIzNjY1LCAyMzY3MSwgMjM2NzcsIDIzNjgyLCAyMzY4NywgMjM2OTIsIDIzNjk3LCAyMzcwMiwgCisgICAgMjM3MDcsIDIzNzEyLCAyMzcxNywgMjM3MjMsIDIzNzI4LCAyMzczMywgMjM3MzgsIDIzNzQzLCAyMzc0OSwgMjM3NTQsIAorICAgIDIzNzU5LCAyMzc2MywgMTMzMCwgMTQwLCAyMzc3MSwgMjM3NzUsIDIzNzc5LCAyMzc4MywgMjM3ODgsIDIzNzkyLCAxNDM5MSwgCisgICAgMjMzMSwgMjM3OTYsIDIzODAxLCAyMzgwNSwgMjM4MTAsIDIzODE0LCAyMzgxOSwgMjM4MjMsIDIzODI5LCAyMzgzNCwgCisgICAgMjM4MzgsIDIzODQyLCAyMzg1MCwgMjM4NTQsIDIzODU4LCAyMzg2MywgMjM4NjgsIDIzODcyLCAyMzg3OCwgMjM4ODMsIAorICAgIDIzODg3LCAyMzg5MiwgMjM4OTcsIDIzOTAxLCAyMzkwOCwgMjM5MTUsIDIzOTIyLCAyMzkyNywgMjM5MzEsIDIzOTM1LCAKKyAgICAyMzk0MCwgMjM5NDQsIDIzOTQ3LCAyMzk1MywgMjM5NjYsIDIzOTcxLCAyMzk3NywgMjM5ODYsIDIzOTkxLCAxMDI0MSwgCisgICAgMjM5OTYsIDI0MDA1LCAyNDAxMCwgMjQwMTMsIDI3NDAsIDI3NDUsIDI0MDE3LCAyNDAyMywgMjQwMjksIDM2NTAsIDI0MDM0LCAKKyAgICAyNDAzOSwgMjQwNDQsIDI0MDUwLCAyNDA1NSwgMTUyNTEsIDI0MDYwLCAyNDA2NSwgMjQwNzAsIDI0MDc1LCAyNDA4MSwgCisgICAgMjQwODYsIDI0MDkxLCAyNDA5NywgMjQxMDIsIDI0MTA2LCAyNDExMSwgMjQxMTYsIDI0MTIxLCAyNDEyNiwgMjQxMzEsIAorICAgIDI0MTM1LCAyNDE0MCwgMjQxNDQsIDI0MTQ5LCAyNDE1NCwgMjQxNTksIDI0MTY0LCAyNDE2OCwgMjQxNzMsIDI0MTc3LCAKKyAgICAyNDE4MiwgMjQxODcsIDI0MTkyLCAyNDEwNywgMjkzNCwgMjQxMTIsIDI0MTk3LCAyNDIwNSwgMjQyMTIsIDEwNTcxLCAKKyAgICAyNDIyNCwgMjQyMzIsIDI0MjQyLCAyNDI2MCwgMjQyNzksIDI0Mjg4LCAyNDI5NiwgMjQxMTcsIDI0MzAzLCAyNDMwOCwgCisgICAgMjQzMTYsIDI0MTIyLCAyNDMyMSwgMjQzMjYsIDI0MzM0LCAyNDMzOSwgMjQxMjcsIDI0MzQ0LCAyNDM1MiwgMjQzNTcsIAorICAgIDI0MzYxLCAyNDM2OCwgMjQzNzQsIDI0MzgzLCAyNDM5MSwgMjQzOTUsIDI0Mzk4LCAyNDQwNSwgMjQ0MDksIDI0NDEzLCAKKyAgICAyNDQxOCwgMjQ0MjQsIDI0NDMxLCAyNDQzNiwgOTUyMCwgMTcyMywgMTcyOCwgMjQ0NDAsIDI0NDQ2LCAyNDQ1MiwgMjQ0NTcsIAorICAgIDI0NDYxLCAyNDQ2NSwgMjQ0NjksIDI0NDczLCAyNDQ3NywgMjQ0ODEsIDI0NDg1LCAyNDQ4OSwgMjQ0OTIsIDI0NDk4LCAKKyAgICAyNDUwNSwgMjQ1MTMsIDI0NTE5LCAyNDUyNSwgMjQ1MzAsIDI0NTM1LCAyNDU0MSwgMjQ1NDUsIDI0NTUwLCAxNTE1NywgCisgICAgMTUxNjQsIDI0NTU3LCAyNDU2OSwgMjQ1NzIsIDI0NTc5LCAyNDU4MywgMTgwNDUsIDI0NTkwLCAyNDU5OCwgMjQ2MDksIAorICAgIDI0NjE4LCAyNDYzMSwgMjQ2NDEsIDI0NjU1LCAyNDY2NywgMjQ2ODEsIDI0Njk0LCAyNDcwNiwgMjQ3MTYsIDI0NzI4LCAKKyAgICAyNDczNCwgMjQ3NDAsIDI0NzU1LCAyNDc3OSwgMjQ3OTcsIDI0ODE2LCAyNDgyOSwgMjQ4NDMsIDI0ODYxLCAyNDg3NywgCisgICAgMjQ4OTQsIDI0OTEyLCAyNDkyMywgMjQ5NDIsIDI0OTU5LCAyNDk3OSwgMjQ5OTcsIDI1MDA5LCAyNTAyMywgMjUwMzcsIAorICAgIDI1MDQ5LCAyNTA2NiwgMjUwODUsIDI1MTAzLCAyNTExNSwgMjUxMzMsIDI1MTUyLCAxNTk3NSwgMjUxNjUsIDI1MTg1LCAKKyAgICAyNTE5NywgMTE1NDYsIDI1MjA5LCAyNTIxNCwgMjUyMTksIDI1MjI0LCAyNTIzMCwgMjUyMzUsIDI1MjM5LCAyNTI0NiwgCisgICAgMjUyNTIsIDI0MjIsIDI1MjU2LCAyNTI2MiwgMjUyNjYsIDI1MjY5LCAyNTI4MCwgMjUyODQsIDI1Mjg3LCAyNTI5NSwgCisgICAgMjUzMDEsIDI0MTQ1LCAyNTMwNSwgMjUzMTQsIDI1MzI1LCAyNTMzMSwgMjUzMzcsIDI1MzUyLCAyNTM2MSwgMjUzNjksIAorICAgIDI1Mzc2LCAyNTM4MSwgMjUzODUsIDI1MzkyLCAyNTM5OCwgMjU0MDcsIDI1NDE1LCAyNTQyMiwgMjU0MzIsIDI1NDQxLCAKKyAgICAyNTQ1MSwgMjU0NTYsIDI1NDY1LCAyNTQ3NCwgMjU0ODUsIDI1NDk2LCA0MjA2LCAyNTUwNiwgMjU1MTAsIDI1NTIwLCAKKyAgICAyNTUyOCwgMjU1MzgsIDI1NTQ5LCAyNTU1NCwgMjU1NjQsIDI1NTcyLCAyNTU3OSwgMjU1ODUsIDI1NTkyLCAyNTU5NywgCisgICAgMjQxNTUsIDI1NjAxLCAyNTYxMCwgMjU2MTQsIDI1NjE3LCAyNTYyMiwgMjU2MzAsIDI1NjM3LCAyNTY0NiwgMjU2NTQsIAorICAgIDI1NjYyLCAyNTY3MCwgMjU2ODAsIDI1Njg5LCAyNTY5NSwgMjU3MDEsIDI1NzA1LCAyNDE2MCwgMjQxNjUsIDI1NzA5LCAKKyAgICAyNTcxOSwgMjU3MjksIDI1NzM5LCAyNTc0NywgMjU3NTQsIDI1NzY0LCAyNTc3MiwgMjU3ODAsIDI1Nzg2LCAyNTc5NCwgCisgICAgODcyLCAyNTgwMywgMTYxODgsIDU1NywgMjU4MTcsIDI1ODI2LCAyNTgzNCwgMjU4NDUsIDI1ODU2LCAyNTg2NiwgMjU4NzUsIAorICAgIDI1ODg3LCAyNTg5NiwgMjU5MDUsIDI1OTEyLCAyNTkxOCwgMjU5MjgsIDI1OTM3LCAyNTk0NiwgMjU5NTQsIDI1OTY0LCAKKyAgICAyNTk3MiwgMjU5ODAsIDk5ODIsIDI1OTg2LCAyNTk4OSwgMjU5OTMsIDI1OTk4LCAyNjAwMywgMjYwMDcsIDEwNjg2LCAKKyAgICAyNDE3OCwgMjQxODMsIDI2MDE1LCAyNjAyMSwgMjYwMjcsIDI2MDMyLCAyNjAzNywgMjYwNDEsIDI2MDQ5LCAyNjA1NSwgCisgICAgMjYwNjEsIDI2MDY1LCAzNjc0LCAyNjA3MywgMjYwNzgsIDI2MDgzLCAyNjA4NywgMjYwOTEsIDEwNzk5LCAyNjA5OCwgCisgICAgMjYxMDYsIDI2MTIwLCAyNjEyNywgMjYxMzMsIDEwODA4LCAxMDgxNCwgMjYxNDEsIDI2MTQ5LCAyNjE1NiwgMjYxNjEsIAorICAgIDI2MTY2LCAyNDE4OCwgMjYxNzIsIDI2MTgzLCAyNjE4NywgMjYxOTIsIDI2MjksIDI2MTk3LCAyNjIwOCwgMjYyMTQsIAorICAgIDI2MjE5LCAyNjIyMywgMjYyMjcsIDI2MjMwLCAyNjIzNywgMjYyNDQsIDI2MjUwLCAyNjI1NywgMjYyNjMsIDI2MjY3LCAKKyAgICAyNDE5MywgMjYyNzIsIDI2Mjc2LCAyNjI4MCwgMTQxMiwgODU4NSwgMjYyODUsIDI2MjkwLCAyNjI5NSwgMjYzMDAsIAorICAgIDI2MzA1LCAyNjMxMCwgMjYzMTUsIDI2MzIwLCAyNjMyNSwgMjYzMzAsIDI2MzM1LCAyNjM0MCwgMjYzNDUsIDI2MzUwLCAKKyAgICAyNjM1NiwgMjYzNjEsIDI2MzY2LCAyNjM3MSwgMjYzNzYsIDI2MzgxLCAyNjM4NiwgMjYzOTIsIDI2Mzk3LCAyNjQwMiwgCisgICAgMjY0MDcsIDI2NDEyLCAyNjQxNywgMjY0MjIsIDI2NDI3LCAyNjQzMywgMjY0MzksIDI2NDQ0LCAyNjQ1MCwgMjY0NTUsIAorICAgIDI2NDYwLCA1LCAyNjQ2NiwgMjY0NzAsIDI2NDc0LCAyNjQ3OCwgMjY0ODMsIDI2NDg3LCAyNjQ5MSwgMjY0OTUsIDI2NDk5LCAKKyAgICAyNjUwNCwgMjY1MDgsIDI2NTEzLCAyNjUxNywgMjY1MjAsIDI2NTI0LCAyNjUyOSwgMjY1MzMsIDI2NTM4LCAyNjU0MiwgCisgICAgMjY1NDYsIDI2NTUwLCAyNjU1NSwgMjY1NTksIDI2NTYzLCAyNjU3MywgMjY1NzgsIDI2NTgyLCAyNjU4NiwgMjY1OTEsIAorICAgIDI2NTk2LCAyNjYwNSwgMjY2MTAsIDI2NjE1LCAyNjYxOSwgMjY2MjMsIDI2NjM2LCAyNjY0OCwgMjY2NTcsIDI2NjY2LCAKKyAgICAyNjY3MSwgMjY2NzcsIDI2NjgyLCAyNjY4NiwgMjY2OTAsIDI2NzAwLCAyNjcwOSwgMjY3MTcsIDI2NzIzLCAyNjcyOCwgCisgICAgMjY3MzIsIDI2NzM5LCAyNjc0OSwgMjY3NTgsIDI2NzY2LCAxMTg2OCwgMjY3NzQsIDI2NzgyLCAyNjc5MSwgMjY4MDAsIAorICAgIDI2ODA4LCAyNjgxOCwgMjY4MjMsIDI2ODI3LCAyNjgzMSwgMjY4MzQsIDI2ODM2LCAyNjg0MCwgMjY4NDQsIDI2ODQ5LCAKKyAgICAyNjg1NCwgMjY4NTgsIDI2ODYyLCAyNjg2NSwgMjY4NjksIDI2ODcyLCAyNjg3NiwgMjY4NzksIDI2ODgyLCAyNjg4NiwgCisgICAgMjY4OTIsIDI2ODk2LCAyNjkwMCwgMjY5MDQsIDI2OTA4LCAyNjkxMywgMjY5MTgsIDI2OTIzLCAyNjkyNywgMjY5MzAsIAorICAgIDI2OTM1LCAyNjk0MSwgMjY5NDYsIDI2OTUyLCAyNjk1NywgMjY5NjEsIDI2OTY3LCAyNjk3MSwgMjY5NzUsIDI2OTgwLCAKKyAgICAyNjk4NCwgMjY5ODksIDI2OTk0LCAyNjk5OCwgMjcwMDIsIDI3MDA5LCAyNzAxMywgMjcwMTYsIDI3MDIwLCAyNzAyNCwgCisgICAgMjcwMzAsIDI3MDM2LCAyNzA0MCwgMjcwNDQsIDI3MDQ5LCAyNzA1NiwgMjcwNjIsIDI3MDY2LCAyNzA3NSwgMjcwNzksIAorICAgIDI3MDgzLCAyNzA4NiwgMjcwOTIsIDI3MDk3LCAyNzEwMywgMTQ1NiwgMTc4NywgMjcxMDgsIDI3MTEzLCAyNzExOCwgCisgICAgMjcxMjMsIDI3MTI4LCAyNzEzMywgMjcxMzgsIDIxNTksIDIyMDUsIDI3MTQzLCAyNzE0NiwgMjcxNTAsIDI3MTU0LCAKKyAgICAyNzE1OSwgMjcxNjMsIDE2MjAwLCAyNzE2NywgMjcxNzIsIDI3MTc3LCAyNzE4MSwgMjcxODQsIDI3MTg5LCAyNzE5MywgCisgICAgMjcxOTgsIDI3MjAyLCAxNjIwNCwgMjcyMDcsIDI3MjEwLCAyNzIxMywgMjcyMTcsIDI3MjIyLCAyNzIyNiwgMjcyMzksIAorICAgIDI3MjQzLCAyNzI0NiwgMjcyNTQsIDI3MjYzLCAyNzI3MCwgMjcyNzUsIDI3MjgxLCAyNzI4NywgMjcyOTUsIDI3MzAyLCAKKyAgICAyNzMwOSwgMjczMTMsIDI3MzE3LCAyNzMyMSwgMjczMjYsIDI3MzMxLCAyNzMzNSwgMjczNDMsIDI3MzQ4LCAyNzM2MCwgCisgICAgMjczNzEsIDI3Mzc2LCAyNzM4MCwgMjczODcsIDI3MzkxLCAyNzM5NiwgMjc0MDIsIDI3NDA1LCAyNzQxMCwgMjc0MTUsIAorICAgIDI3NDE5LCAyNzQyMywgMjc0MjYsIDI3NDMyLCA4MjcyLCAyMzM1LCAyNzQzNiwgMjc0NDEsIDI3NDU3LCAxMDI4OCwgCisgICAgMjc0NzcsIDI3NDg2LCAyNzUwMiwgMjc1MDYsIDI3NTEzLCAyNzUxNiwgMjc1MjIsIDI3NTMyLCAyNzUzOCwgMjc1NDcsIAorICAgIDI3NTYyLCAyNzU3NCwgMjc1ODUsIDI3NTkzLCAyNzYwMiwgMjc2MDgsIDI3NjE3LCAyNzYyNywgMjc2MzcsIDI3NjQ4LCAKKyAgICAyNzY1OSwgMjc2NjksIDI3Njc4LCAyNzY4NSwgMjc2OTQsIDI3NzAyLCAyNzcwOSwgMjc3MTcsIDI3NzI0LCAyNzczMSwgCisgICAgMjc3NDQsIDI3NzUxLCAyNzc1OSwgMjc3NjYsIDI3NzcyLCAyNzc3NywgMjc3ODYsIDI3NzkzLCAyNzc5OSwgMjc4MDQsIAorICAgIDI3ODEyLCAyNzgxOSwgMjc4MjYsIDI1NTMwLCAyNzgzOCwgMjc4NTAsIDI3ODY0LCAyNzg3MiwgMjc4ODAsIDI3ODg3LCAKKyAgICAyNzg5OSwgMjc5MDgsIDI3OTE3LCAyNzkyNSwgMjc5MzMsIDI3OTQxLCAyNzk0OCwgMjc5NTQsIDI3OTYzLCAyNzk3MSwgCisgICAgMjc5ODEsIDI3OTkwLCAyODAwMCwgMjgwMDksIDI4MDE4LCAyODAyNiwgMjgwMzEsIDI4MDM1LCAyODAzOCwgMjgwNDIsIAorICAgIDI4MDQ2LCAyODA1MCwgMjgwNTQsIDI4MDU4LCAyODA2NCwgMjgwNzAsIDI4MDc1LCAyODA4MywgMTYyNjIsIDI4MDkwLCAKKyAgICAyODA5NSwgMjgxMDIsIDI4MTA4LCAyODExNSwgMTYyNzAsIDI4MTIyLCAyODEyNSwgMjgxMzcsIDI4MTQ1LCAyODE1MSwgCisgICAgMjgxNTYsIDI4MTYwLCAyODE3MSwgMTA3NDksIDI4MTgxLCAyODE4OSwgMjgxOTksIDI4MjA4LCAyODIxNSwgMjgyMjIsIAorICAgIDI4MjMwLCAyODIzNCwgMTYyODEsIDI4MjM3LCAyODI0NCwgMjgyNDgsIDI4MjU0LCAyODI1NywgMjgyNjQsIDI4MjcwLCAKKyAgICAyODI3NSwgMjgyODIsIDI4Mjg4LCAyODI5MiwgMjgyOTcsIDI4MzAxLCAyODMxMCwgMjgzMTcsIDI4MzIzLCA4MzMwLCAKKyAgICAyODMzMCwgMjgzMzgsIDI4MzQ1LCAyODM1MSwgMjgzNTYsIDI4MzYyLCAyODM2OCwgMjgzNzYsIDI4MzgyLCAyODM4NiwgCisgICAgMjgzODksIDI4MzkxLCAyODA0MywgMjg0MDAsIDI4NDA2LCAyODQxMiwgMjg0MjIsIDI4NDI3LCAyODQzNCwgMjg0NDAsIAorICAgIDI4NDQ1LCAyODQ1MCwgMjg0NTUsIDI4NDU5LCAyODQ2NCwgMjg0NzEsIDI4NDc3LCAyODQ4NiwgMjg0OTAsIDI4NDk3LCAKKyAgICAyODUwMywgMjg1MTIsIDQzOTgsIDI4NTE4LCAyODUyNCwgMjg1MjksIDI4NTM2LCAyODU0NywgMjg1NTIsIDI4NTU2LCAKKyAgICAyODU2NiwgMjg1NzIsIDI4NTc2LCAyODU4MSwgMjg1OTEsIDI4NjAwLCAyODYwNCwgMjg2MTEsIDI4NjE5LCAyODYyNiwgCisgICAgMjg2MzIsIDI4NjM3LCAyODY0NSwgMjg2NTIsIDI4NjU3LCAyODY2NCwgMjg2NzYsIDI4Njg1LCAyODY4OSwgMTQzMjIsIAorICAgIDI4Njk3LCAyODcwNywgMjg3MTEsIDI3MjUwLCAyODcyMiwgMjg3MjcsIDI4NzMxLCAyODczOCwgMjg3NDUsIDIzODc0LCAKKyAgICAyNzk2OCwgMjg3NTAsIDI4NzU0LCAyODc1NywgMjQ5MjksIDI4NzYyLCAyODc3NiwgMjg3OTIsIDI4ODEwLCAyODgyOSwgCisgICAgMjg4NDYsIDI4ODY0LCAyNDk0OCwgMjg4ODEsIDI4OTAxLCAyNDk2NSwgMjg5MTMsIDI4OTI1LCAxNzMxNCwgMjg5MzcsIAorICAgIDI0OTg1LCAyODk1MSwgMjg5NjMsIDExNTU5LCAyODk3NywgMjg5ODIsIDI4OTg3LCAyODk5MiwgMjg5OTgsIDI5MDA0LCAKKyAgICAyOTAxMCwgMjkwMTQsIDI5MDIyLCAyOTAyOSwgMjkwMzQsIDI5MDQ0LCAyOTA1MCwgMTExNTcsIDI5MDU2LCAyOTA1OCwgCisgICAgMjkwNjMsIDI5MDcxLCAyOTA3NSwgMjg0NjcsIDI5MDgxLCAyOTA4OCwgMTI3MTEsIDEyNzIxLCAyOTA5NSwgMjkxMDUsIAorICAgIDI5MTEwLCAyOTExNCwgMjkxMTcsIDI5MTIzLCAyOTEzMSwgMjkxNDMsIDI5MTUzLCAyOTE2OSwgMjkxODIsIDI5MTk2LCAKKyAgICAxNzMzMiwgMjkyMTAsIDI5MjE3LCAyOTIyMSwgMjkyMjQsIDI5MjI5LCAyOTIzMywgMjkyNDAsIDI5MjQ3LCAyOTI1NCwgCisgICAgMjkyNjQsIDI5MjY5LCAyOTI3NCwgMjkyNzksIDI5Mjg3LCAyOTI5NSwgMjkzMDAsIDI5MzA5LCAyOTMxNCwgMzM0MiwgCisgICAgMjkzMTgsIDI5MzIxLCAyOTMyNCwgMjkzMjksIDI5MzM2LCAyOTM0MSwgMjkzNTcsIDI5MzY1LCAyOTM3MywgMTAwNTYsIAorICAgIDI5MzgxLCAyOTM4NiwgMjkzOTAsIDI5Mzk2LCAyOTQwMSwgMjk0MDcsIDI5NDEwLCAyOTQxNiwgMjk0MjgsIDI5NDM2LCAKKyAgICAyOTQ0MywgMjk0NDksIDI5NDU2LCAyOTQ2NywgMjk0ODEsIDI5NDk0LCAyOTUwMCwgMjk1MDksIDI5NTE1LCAyOTUyNCwgCisgICAgMjk1MzYsIDI5NTQ3LCAyOTU1NywgMjk1NjYsIDI5NTc1LCAyOTU4MywgMjk1OTQsIDgzMTIsIDI5NjAxLCAyOTYwOCwgCisgICAgMjk2MTQsIDI5NjE5LCAyOTYyNSwgMjk2MzIsIDI5NjQzLCAyOTY1MywgMjk2NjMsIDI5NjcyLCAyOTY3OCwgMjk2ODUsIAorICAgIDI5NjkwLCAyOTY5OCwgMjk3MDUsIDI5NzEzLCAyOTcyMSwgMjk3MzMsIDY1ODcsIDEwMjgsIDI5NzQwLCAyOTc0OSwgCisgICAgMjk3NTcsIDI5NzYzLCAyOTc2OSwgMjk3NzQsIDI5Nzc4LCAyOTc4MSwgMjk3ODcsIDI5Nzk0LCAyOTc5OSwgMjk4MDQsIAorICAgIDI5ODA5LCAyOTgxMywgMjk4MjUsIDI5ODM2LCAyOTg0NSwgMjk4NTMsIDE2NDQ2LCAyOTg1OCwgMjk4NjYsIDI5ODcxLCAKKyAgICAyOTg3NywgMjk4ODMsIDEyNzA0LCA5MTAzLCAyOTg4OCwgMjk4OTIsIDI5ODk2LCAyOTg5OSwgMjk5MDIsIDI5OTA4LCAKKyAgICAyOTkxNiwgMjk5MjQsIDI5OTI4LCAyOTkzMiwgMjk5MzcsIDI5OTQwLCAyOTk0OSwgMjk5NTMsIDI5OTU2LCAyOTk2NCwgCisgICAgMjk5NzUsIDI5OTc5LCAyOTk4NSwgMjk5OTEsIDI5OTk1LCAzMDAwMSwgMzAwMDksIDMwMDMxLCAzMDA1NSwgMzAwNjQsIAorICAgIDMwMDcxLCAzMDA3OCwgMzAwODQsIDMwMDkyLCAzMDA5OCwgMzAxMDMsIDMwMTE0LCAzMDEzMiwgMzAxMzksIDMwMTQ3LCAKKyAgICAzMDE1MSwgMzAxNTYsIDMwMTY1LCAzMDE3OCwgMzAxODYsIDMwMTk4LCAzMDIwOSwgMzAyMjAsIDMwMjMwLCAzMDI0NCwgCisgICAgMzAyNTMsIDMwMjYxLCAzMDI3MywgMTAzMDUsIDMwMjg0LCAzMDI5NSwgMzAzMDcsIDMwMzE3LCAzMDMyNiwgMzAzMzEsIAorICAgIDMwMzM1LCAzMDM0MywgMzAzNTQsIDMwMzY0LCAzMDM2OSwgMzAzNzMsIDMwMzc2LCAzMDM3OSwgMzAzODcsIDMwMzk1LCAKKyAgICAzMDQwNCwgMzA0MTQsIDMwNDIzLCAzMDQyOSwgMzA0NDMsIDI2OTEsIDMwNDY1LCAzMDQ3NiwgMzA0ODUsIDMwNDk1LCAKKyAgICAzMDUwNywgMzA1MTYsIDMwNTI1LCAzMDUzNSwgMzA1NDMsIDMwNTUxLCAzMDU2MCwgMzA1NjUsIDMwNTc2LCAzMDU4MSwgCisgICAgMzA1OTAsIDMwNjAxLCAzMDYwNSwgMzA2MDgsIDMwNjE4LCAzMDYyNywgMzA2MzUsIDMwNjQ1LCAzMDY1NSwgMzA2NjMsIAorICAgIDMwNjcyLCAzMDY3OSwgMzA2ODcsIDMwNjk0LCAzMDcwMywgMzA3MTIsIDMwNzE3LCAzMDcyMSwgMzA3MjksIDMwNzM2LCAKKyAgICAzMDc0NCwgMzA3NTEsIDMwNzYyLCAzMDc3NywgMzA3ODQsIDMwNzkwLCAzMDgwMCwgMzA4MDksIDMwODE1LCAzMDgyNiwgCisgICAgMzA4MzAsIDMwODM3LCAzMDg0MSwgMzA4NDcsIDE1MzgyLCAzMDg1MywgMzA4NTcsIDMwODYyLCAzMDg2OCwgMzA4NzUsIAorICAgIDMwODc5LCAzMDg4MywgMzA4OTEsIDMwODk5LCAzMDkwNSwgMzA5MTQsIDMwOTIxLCAzMDkyNiwgMzA5MzEsIDMwOTQxLCAKKyAgICAyNTU5OSwgMzA5NDUsIDMwOTQ4LCAzMDk1MywgMzA5NTgsIDMwOTYzLCAzMDk2OCwgMzA5NzMsIDMwOTc4LCAzMDk4MywgCisgICAgMzA5ODgsIDMwOTk0LCAzMDk5OSwgMzEwMDQsIDMxMDEwLCAxMTgwLCA2NzYsIDMxMDE1LCAzMTAyNCwgMjM4MywgMzEwMzEsIAorICAgIDMxMDM2LCAzMTA0MCwgMzEwNDYsIDEyMjksIDU5MSwgMzEwNTEsIDI5NiwgMzEwNTUsIDMxMDY0LCAzMTA3MiwgMzEwODEsIAorICAgIDMxMDg5LCAzMTEwMCwgMzExMDgsIDMxMTE3LCAzMTEyNSwgMzExMzAsIDEwODk1LCAzMTEzNCwgMzExNDIsIDMxMTUwLCAKKyAgICAzMTE1NSwgMTYyMTcsIDM4MjMsIDMxMTYxLCAzMTE2NywgMzExNzMsIDYxNjgsIDMxMTc4LCAzMTE4MiwgMzExODgsIAorICAgIDMxMTkyLCAzMTE5OCwgMzEyMDMsIDMxMjEwLCAxNDIyLCAzMTIxNiwgMzEyMjMsIDMxMjI3LCAxMzI5LCA2MTc2LCAzMTIzMiwgCisgICAgMzEyNDIsIDMxMjUwLCAzMTI1NiwgMzEyNjYsIDMxMjc1LCAzMTI4MywgMzEyODksIDMxMjk0LCAzMTMwMiwgMzEzMDksIAorICAgIDEyMjQ2LCAzMTMxNSwgMzEzMjIsIDMxMzI3LCAzMTMzNCwgMTQ3NSwgMjI1LCAyMTU4LCAzMTM0MCwgMzEzNDYsIDMxMzUzLCAKKyAgICAzMTM2NCwgMzEzNzUsIDMxMzgzLCAzMTM5MCwgMzE0MDAsIDMxNDA5LCAzMTQxNywgMzE0MjYsIDMxNDMzLCAzMTQ0MCwgCisgICAgMzE0NTMsIDMxNDYwLCAzMTQ2NiwgMzE0NzcsIDMxNDk2LCAxMjM0LCAzMTUwMSwgMzE1MDYsIDMxNTE0LCAzNzQxLCAKKyAgICAzMTUxOCwgMzE1MjMsIDMxNTI3LCAzMTUzMSwgMTQyNiwgMjY4NjMsIDMxNTQxLCAzMTU0NSwgMzE1NTAsIDMxNTU0LCAKKyAgICAzNjA4LCAzMTU2MCwgMzE1NjgsIDMxNTc1LCAzMTU4NiwgMzE1OTQsIDMxNjE5LCAzMTYyNywgMzE2MzIsIDM3NDIsIDM1MiwgCisgICAgMzE2MzgsIDMxNjQ2LCAzMTY1NCwgMzE2NjEsIDMxNjY3LCAzMTY3MiwgMjIyNywgMTE3MjYsIDMxNjc5LCAzMTY4NSwgCisgICAgMjgyOTMsIDI4NTQyLCAzMTY5MSwgNTg3LCAxMDYsIDMxNjk1LCAzMTY5OSwgMzE3MDUsIDY4OSwgOTkzMSwgMzE3MTAsIAorICAgIDMxNzE3LCAzMTcyMywgMzE3MjcsIDMxNzMxLCAxNjIwLCAzMTczNCwgMzE3MzgsIDE2Njk5LCAzMTc0MSwgMzE3NDYsIAorICAgIDMxNzUzLCAzMTc1OSwgMzE3NjQsIDMxNzcyLCAzMTc3OSwgMzE3ODUsIDI0MzQxLCAzMTc4OSwgMzE3OTMsIDMxNzk3LCAKKyAgICAzODEyLCAxODM0NCwgMzE4MDEsIDMxODA2LCAzMTgxMCwgMzE4MTMsIDMxODIxLCAzMTgyOSwgMzE4MzQsIDMxODQzLCAKKyAgICAzMTg1MSwgMzE4NTQsIDMxODYxLCAzMTg3MSwgMzE4ODMsIDMxODg4LCAzMTg5MiwgMzE5MDAsIDMxOTA3LCAzMTkxMywgCisgICAgMzE5MjAsIDMxOTI3LCAzMTkzMCwgMzE5MzQsIDMxOTM4LCAxNDMwLCAzMTk0OCwgMzE5NTAsIDMxOTU1LCAzMTk2MSwgCisgICAgMzE5NjcsIDMxOTcyLCAzMTk3NywgMzE5ODIsIDMxOTg3LCAzMTk5MiwgMzE5OTcsIDMyMDAyLCAzMjAwNywgMzIwMTIsIAorICAgIDMyMDE3LCAzMjAyMiwgMzIwMjcsIDMyMDMyLCAzMjAzNywgMzIwNDMsIDMyMDQ5LCAzMjA1NSwgMzIwNjEsIDMyMDY2LCAKKyAgICAzMjA3MSwgMzIwNzYsIDMyMDgyLCAzMjA4NywgMzIwOTIsIDMyMDk3LCAzMjEwMywgMzIxMDgsIDMyMTE0LCAzMjExOSwgCisgICAgMzIxMjQsIDMyMTI5LCAzMjEzNCwgMzIxNDAsIDMyMTQ1LCAzMjE1MSwgMzIxNTYsIDMyMTYxLCAzMjE2NiwgMzIxNzEsIAorICAgIDMyMTc3LCAzMjE4MiwgMzIxODgsIDMyMTkzLCAzMjE5OCwgMzIyMDMsIDMyMjA4LCAzMjIxMywgMzIyMTgsIDMyMjIzLCAKKyAgICAzMjIyOCwgMzIyMzMsIDMyMjM5LCAzMjI0NSwgMzIyNTEsIDMyMjU2LCAzMjI2MSwgMzIyNjYsIDMyMjcxLCAzMjI3NywgCisgICAgMzIyODMsIDMyMjg5LCAzMjI5NSwgMzIzMDEsIDMyMzA3LCAzMjMxMiwgMzIzMTgsIDMyMzIzLCAzMjMyOCwgMzIzMzMsIAorICAgIDMyMzM4LCAzMjM0NCwgMjQ2NywgMzIzNDksIDI0NzQsIDI0ODEsIDI3ODIsIDMyMzU0LCAyNDg3LCAyNDk3LCAzMjM2MCwgCisgICAgMzIzNjQsIDMyMzY5LCAzMjM3NCwgMzIzODAsIDMyMzg1LCAzMjM5MCwgMzIzOTQsIDMyMzk5LCAzMjQwNSwgMzI0MTAsIAorICAgIDMyNDE1LCAzMjQyMCwgMzI0MjYsIDMyNDMxLCAzMjQzNSwgMzI0MzksIDMyNDQ0LCAzMjQ0OSwgMzI0NTQsIDMyNDU5LCAKKyAgICAzMjQ2NCwgMzI0NzAsIDMyNDc2LCAzMjQ4MSwgMzI0ODUsIDMyNDkwLCAzMjQ5NiwgMzI1MDAsIDMyNTA1LCAzMjUxMCwgCisgICAgMzI1MTUsIDMyNTIwLCAzMjUyNCwgMzI1MjcsIDMyNTMyLCAzMjUzNywgMzI1NDIsIDMyNTQ3LCAzMjU1MiwgMzI1NTgsIAorICAgIDMyNTY0LCAzMjU2OSwgMzI1NzQsIDMyNTc5LCAzMjU4MywgMzI1ODgsIDMyNTkzLCAzMjU5OCwgMzI2MDMsIDMyNjA4LCAKKyAgICAzMjYxMywgMzI2MTcsIDMyNjIyLCAzMjYyNywgMzI2MzIsIDMyNjM2LCAzMjY0MCwgMzI2NDQsIDMyNjQ5LCAzMjY1NywgCisgICAgMzI2NjIsIDMyNjY3LCAzMjY3MywgMzI2NzksIDMyNjg1LCAzMjY5MCwgMzI2OTQsIDMyNjk3LCAzMjcwMiwgMzI3MDcsIAorICAgIDMyNzExLCAzMjcxNiwgMzI3MjEsIDMyNzI1LCAzMjczMCwgMzI3MzQsIDMyNzM3LCAzMjc0MiwgMzkxOSwgMTkwODMsIAorICAgIDMyNzQ3LCAzMjc1MiwgMzI3NTcsIDMyNzY1LCAyMzE1MSwgMzEyMjAsIDk2MDEsIDMyNzcwLCAzMjc3NSwgMzI3NzksIAorICAgIDMyNzg0LCAzMjc4OCwgMzI3OTIsIDMyNzk3LCAzMjgwMSwgMzI4MDQsIDMyODA3LCAzMjgxMSwgMzI4MTYsIDMyODIwLCAKKyAgICAzMjgyOCwgMzI4MzIsIDMyODM1LCAzMjg0MCwgMzI4NDQsIDMyODQ4LCAzMjg1MywgMzI4NTgsIDMyODYyLCAzMjg2OCwgCisgICAgMzI4NzMsIDMyODc4LCAzMjg4NSwgMzI4OTIsIDMyODk2LCAzMjg5OSwgMzI5MDUsIDMyOTE0LCAzMjkyMSwgMzI5MjksIAorICAgIDMyOTM2LCAzMjk0MCwgMzI5NDUsIDMyOTQ5LCAzMjk1MywgMzI5NTksIDMyOTY1LCAzMjk2OSwgMzI5NzUsIDMyOTgwLCAKKyAgICAzMjk4NSwgMzI5ODksIDMyOTk2LCAzMzAwMiwgMzMwMDgsIDMzMDE0LCAzMzAyMCwgMzMwMjcsIDMzMDMzLCAzMzAzOSwgCisgICAgMzMwNDUsIDMzMDUxLCAzMzA1NywgMzMwNjMsIDMzMDY5LCAzMzA3NiwgMzMwODIsIDMzMDg5LCAzMzA5NSwgMzMxMDEsIAorICAgIDMzMTA3LCAzMzExMywgMzMxMTksIDMzMTI1LCAzMzEzMSwgMzMxMzcsIDMzMTQzLCAxMjU4OSwgMzMxNDksIDMzMTU1LCAKKyAgICAzMzE2MCwgMzMxNjUsIDMzMTcwLCAzMzE3MywgMzMxNzksIDMzMTg3LCAzMzE5MiwgMzMxOTYsIDMzMjAxLCAzMzIwNywgCisgICAgMzMyMTYsIDMzMjIyLCAzMzIyNywgMzMyMzIsIDMzMjM3LCAzMzI0MSwgMzMyNDYsIDMzMjUxLCAzMzI1NiwgMzMyNjEsIAorICAgIDMzMjY2LCAzMzI3MywgMzMyODAsIDMzMjg2LCAzMzI5MiwgMzMyOTcsIDE3OTgwLCAzMzMwNCwgMzMzMTAsIDMzMzE3LCAKKyAgICAzMzMyMywgMzMzMjksIDMzMzM0LCAzMzM0MiwgMzMzNDcsIDEwNDcwLCAzMzM1MSwgMzMzNTYsIDMzMzYxLCAzMzM2NywgCisgICAgMzMzNzIsIDMzMzc3LCAzMzM4MSwgMzMzODYsIDMzMzkxLCAzMzM5NywgMzM0MDIsIDMzNDA3LCAzMzQxMiwgMzM0MTYsIAorICAgIDMzNDIxLCAzMzQyNiwgMzM0MzAsIDMzNDM1LCAzMzQ0MCwgMzM0NDQsIDMzNDQ5LCAzMzQ1MywgMzM0NTgsIDMzNDYzLCAKKyAgICAzMzQ2OCwgMzM0NzIsIDMzNDc3LCAzMzQ4MSwgMzM0ODUsIDE2ODA1LCAzMzQ5MCwgMzM0OTksIDMzNTA1LCAzMzUxMSwgCisgICAgMzM1MjAsIDMzNTI4LCAzMzUzNywgMzM1NDUsIDMzNTUwLCAzMzU1NCwgMzM1NjEsIDMzNTY3LCAzMzU3NSwgMzM1NzksIAorICAgIDMzNTgyLCAzMzU4NywgMzM1OTEsIDMzNjAwLCAzMzYwOCwgMzM2MjYsIDMzNjMyLCAxNDc0LCAzMzYzOCwgMzM2NDEsIAorICAgIDMzNjQ1LCAyNDQ0NywgMjQ0NTMsIDMzNjUxLCAzMzY1NSwgMzM2NjYsIDMzNjc3LCAzMzY4OCwgMzM3MDAsIDMzNzA0LCAKKyAgICAzMzcxMSwgMzM3MTgsIDMzNzI1LCAzMzczMCwgMzM3MzQsIDYyMjQsIDk2MywgMjMxNTAsIDMzNzQyLCAzMzc0NywgMzM3NTEsIAorICAgIDMzNzU2LCAzMzc2MCwgMzM3NjYsIDMzNzcxLCAzMzc3NywgMzM3ODIsIDMzNzg4LCAzMzc5MywgMzM3OTksIDMzODA0LCAKKyAgICAzMzgxMCwgMzM4MTYsIDMzODIyLCAzMzgyNywgMzM3ODMsIDMzNzg5LCAzMzgzMSwgMzM4MzYsIDMzODQyLCAzMzg0NywgCisgICAgMzM4NTMsIDMzODU4LCAzMzg2NCwgMzM4NjksIDMzNzk0LCAxMTQxMiwgMzM4NzMsIDMzODA1LCAzMzgxMSwgMzM4MTcsIAorICAgIDI4NzQsIDM1MjIsIDMzODc5LCAzMzg4MiwgMzM4ODcsIDMzODkzLCAzMzg5OSwgMzM5MDUsIDMzOTEyLCAzMzkxOCwgCisgICAgMzM5MjQsIDMzOTMwLCAzMzkzNiwgMzM5NDIsIDMzOTQ4LCAzMzk1NCwgMzM5NjAsIDMzOTY2LCAzMzk3MiwgMzM5NzgsIAorICAgIDMzOTg0LCAzMzk5MSwgMzM5OTcsIDM0MDAzLCAzNDAwOSwgMzQwMTUsIDM0MDIxLCAzNDAyNCwgMzQwMjksIDM0MDMyLCAKKyAgICAzNDAzOSwgMzQwNDQsIDM0MDUyLCAzNDA1NywgMzQwNjIsIDM0MDY4LCAzNDA3MywgMzQwNzgsIDM0MDgyLCAzNDA4NywgCisgICAgMzQwOTMsIDM0MDk4LCAzNDEwNCwgMzQxMDksIDM0MTE1LCAzNDEyMCwgMzQxMjYsIDM0MTMyLCAzNDEzNiwgMzQxNDEsIAorICAgIDM0MTQ2LCAzNDE1MSwgMzQxNTYsIDM0MTYwLCAzNDE2NSwgMzQxNzAsIDM0MTc1LCAzNDE4MSwgMzQxODcsIDM0MTkzLCAKKyAgICAzNDE5OSwgMzQyMDQsIDM0MjA4LCAzNDIxMSwgMzQyMTcsIDM0MjIzLCAzNDIzMiwgMzQyNDAsIDM0MjQ3LCAzNDI1MiwgCisgICAgMzQyNTYsIDM0MjYwLCAzNDI2NSwgMTY2NTMsIDM0MjcwLCAzNDI3OCwgMzQyODQsIDM4NjUsIDEzMzksIDM0Mjg5LCAKKyAgICAzNDI5MywgODM4MywgMzQyOTksIDM0MzA1LCAzNDMxMiwgODM5MiwgMzQzMTYsIDM0MzIyLCAzNDMyOSwgMzQzMzUsIAorICAgIDM0MzQ0LCAzNDM1MiwgOTI5OSwgMzQzNjQsIDM0MzY4LCAzNDM3NSwgMzQzODEsIDM0Mzg2LCAzNDM5MCwgMzQzOTQsIAorICAgIDM0Mzk3LCAzNDQwNywgMzQ0MTYsIDM0NDI0LCAzMzc4NCwgMzQ0MjksIDM0NDM5LCAzNDQ0OSwgMzQ0NTksIDM0NDY1LCAKKyAgICAzNDQ3MCwgMzQ0ODAsIDM0NDg1LCAzNDQ5OCwgMzQ1MTIsIDM0NTIzLCAzNDUzNSwgMzQ1NDcsIDM0NTYxLCAzNDU3NCwgCisgICAgMzQ1ODYsIDM0NTk4LCAxNjAxNiwgMzQ2MTIsIDM0NjE3LCAzNDYyMiwgMzQ2MjYsIDM0NjMwLCAzNDYzNCwgMTc3NiwgCisgICAgMjk1NDUsIDM0NjM4LCAzNDY0MywgMzM4MzIsIDM0NjQ4LCAzNDY1MSwgMzQ2NTYsIDM0NjYxLCAzNDY2NiwgMzQ2NzIsIAorICAgIDM0Njc4LCAxMTA3MiwgMzQ2ODMsIDM0Njg5LCAzNDY5NiwgMTcyNjYsIDM0NzAyLCAzNDcwNywgMzQ3MTIsIDM0NzE2LCAKKyAgICAzNDcyMSwgMzQ3MjYsIDMzODM3LCAzNDczMSwgMzQ3MzYsIDM0NzQxLCAzNDc0NywgMzM4NDMsIDM0NzUyLCAzNDc1NSwgCisgICAgMzQ3NjIsIDM0NzcwLCAzNDc3NiwgMzQ3ODIsIDM0Nzg4LCAzNDc5OSwgMzQ4MDQsIDM0ODExLCAzNDgxOCwgMzQ4MjUsIAorICAgIDM0ODMzLCAzNDg0MiwgMzQ4NTEsIDM0ODU3LCAzNDg2MywgMzQ4NzEsIDMzODQ4LCAzNDg3NiwgMzQ4ODIsIDM0ODg4LCAKKyAgICAzMzg1NCwgMzQ4OTMsIDM0ODk4LCAzNDkwNiwgMzQ5MTQsIDM0OTIwLCAzNDkyNywgMzQ5MzMsIDM0OTQwLCAzNDk0NywgCisgICAgMzQ5NTMsIDM0OTYxLCAzNDk3MSwgMzQ5NzgsIDM0OTg0LCAzNDk4OSwgMzQ5OTUsIDM1MDAwLCAzNTAwNSwgMzUwMTIsIAorICAgIDM1MDIxLCAzNTAyOSwgMzUwMzQsIDM1MDQwLCAzNTA0NywgMzUwNTUsIDM1MDYxLCAzNTA2NiwgMzUwNzIsIDM1MDgxLCAKKyAgICAzNTA4OCwgMzA0MDksIDM1MDk0LCAzNTA5OCwgMzUxMDMsIDM1MTEyLCAzNTExNywgMzUxMjIsIDM1MTI3LCAxMzY1OCwgCisgICAgMzUxMzUsIDM1MTQwLCAzNTE0NSwgMzUxNTAsIDM1MTU0LCAzNTE1OSwgMzUxNjQsIDM1MTcxLCAzNTE3NiwgMzUxODEsIAorICAgIDM1MTg2LCAzMzg1OSwgMjMwODcsIDM1MTkyLCAyNTQzLCAxNTUsIDM1MTk1LCAzNTE5OCwgMzUyMDIsIDM1MjA2LCAzNTIxNiwgCisgICAgMzUyMjQsIDM1MjMxLCAzNTIzNSwgMzUyMzgsIDM1MjQ2LCAzNTI1MywgMzUyNjAsIDM1MjY5LCAzNTI3MywgMzUyNzYsIAorICAgIDM1MjgyLCAzNTI4NiwgMzUyOTQsIDM1MzAyLCAzNTMwNiwgMzUzMTAsIDM1MzEzLCAzNTMxOSwgMzUzMjYsIDM1MzMwLCAKKyAgICAzNTMzNCwgMzUzNDEsIDM1MzQ5LCAzMzc5NSwgMzUzNTYsIDM1MzY0LCAzNTM2OSwgMTExMzIsIDYwMCwgMzc1LCAzNTM4MSwgCisgICAgMzUzODYsIDM1MzkxLCAzNTM5NywgMzU0MDIsIDM1NDA3LCAzODg2LCAzNTQxMiwgMzU0MTUsIDM1NDIwLCAzNTQyNSwgCisgICAgMzU0MzAsIDM1NDM1LCAzNTQ0MCwgMzU0NDcsIDI0NTY1LCAzNTQ1MiwgMzU0NTcsIDM1NDYyLCAzNTQ2NywgMzU0NzIsIAorICAgIDM1NDc4LCAzNTQ4MywgMzU0ODksIDM0MDM1LCAzNTQ5NSwgMzU1MDAsIDM1NTA2LCAzNTUxMiwgMzU1MjIsIDM1NTI3LCAKKyAgICAzNTUzMiwgMzU1MzYsIDM1NTQxLCAzNTU0NiwgMzU1NTEsIDM1NTU2LCAzNTU2OSwgMzU1NzQsIDI0MjI4LCAxODQxOSwgCisgICAgMzg5OSwgMzU1NzgsIDM1NTg0LCAzNTU4OSwgMzU1OTQsIDM1NjAwLCAzNTYwNSwgMzU2MTAsIDM1NjE0LCAzNTYxOSwgCisgICAgMzU2MjQsIDM1NjMwLCAzNTYzNSwgMzU2NDAsIDEzNDQsIDM1NjQ0LCAzNTY0OSwgMzU2NTQsIDM1NjU5LCAzNTY2MywgCisgICAgMzU2NjgsIDM1NjczLCAzNTY3OCwgMzU2ODQsIDM1NjkwLCAzNTY5NSwgMzU2OTksIDM1NzAzLCAzNTcwOCwgMzU3MTMsIAorICAgIDM1NzE4LCAzNTcyMiwgMzU3MzAsIDM1NzM0LCAzNTc0MCwgMzU3NDQsIDM1NzUxLCAzNTc2MCwgMTgyMDMsIDMzODA2LCAKKyAgICAzNTc2NiwgMzU3NzMsIDM1NzgxLCAzNTc4OCwgMzU3OTQsIDM1ODA3LCAzNTgxOSwgMzU4MjQsIDM1ODMwLCAzNTgzNCwgCisgICAgMjgwMSwgMzU4MzgsIDM1ODQyLCAzNTMyMSwgMzU4NTEsIDM1ODYyLCAzNTg2NywgMzA0NzIsIDM1ODcyLCAzNTg3NywgCisgICAgMzU4ODEsIDM1ODg2LCAyNDQ1OCwgMzU4OTAsIDM1ODk0LCAzNTg5OSwgMzM4MTIsIDIzMTc3LCAzNTkwMywgMzU5MDgsIAorICAgIDM1OTE0LCAzNTkxOSwgMzU5MjMsIDM1OTI3LCAzNTkzMCwgMzU5MzQsIDM1OTQwLCAzNTk0OSwgMzU5NjAsIDM1OTcyLCAKKyAgICAzMzgxOCwgMzU5NzcsIDM1OTgwLCAzNTk4NCwgMzU5ODgsIDQxNCwgMzU5OTMsIDM1OTk4LCAzNjAwMywgMzYwMDgsIAorICAgIDM2MDEzLCAzNjAxOCwgMzYwMjQsIDM2MDI5LCAzNjAzNCwgMzYwNDAsIDM2MDQ1LCAzNjA1MSwgMzYwNTYsIDM2MDYyLCAKKyAgICAzNjA2NywgMzYwNzIsIDM2MDc3LCAzNjA4MiwgMzYwODcsIDM2MDkyLCAzNjA5NywgMzYxMDIsIDM2MTA4LCAzNjExMywgCisgICAgMzYxMTgsIDM2MTIzLCAzNjEyOCwgMzYxMzMsIDM2MTM4LCAzNjE0MywgMzYxNDksIDM2MTU1LCAzNjE2MCwgMzYxNjUsIAorICAgIDM2MTcwLCAzNjE3NSwgMzYxODAsIDM2MTg1LCAzNjE5MCwgMzYxOTUsIDM2MjAwLCAzNjIwNSwgMzYyMTAsIDM2MjE1LCAKKyAgICAzNjIyMCwgMzYyMjUsIDM2MjMwLCAzNjIzNSwgMzYyNDAsIDM2MjQ1LCAzNjI1MSwgMzI2LCA5LCAzNjI1NiwgMzYyNjAsIAorICAgIDM2MjY0LCAzNjI3MiwgMzYyNzYsIDM2MjgwLCAzNjI4MywgMzYyODYsIDM2Mjg4LCAzNjI5MywgMzYyOTcsIDM2MzAyLCAKKyAgICAzNjMwNiwgMzYzMTEsIDM2MzE1LCAzNjMyMCwgMzYzMjQsIDM2MzI3LCAzNjMyOSwgMzYzMzMsIDM2MzM4LCAzNjM0MiwgCisgICAgMzYzNTMsIDM2MzU2LCAzNjM1OCwgMzYzNjIsIDM2Mzc0LCAzNjM4MywgMzYzODcsIDM2MzkxLCAzNjM5NywgMzY0MDIsIAorICAgIDM2NDExLCAzNjQxNywgMzY0MjIsIDM2NDI3LCAzNjQzMSwgMzY0MzUsIDM2NDQwLCAzNjQ0NywgMzY0NTIsIDM2NDU4LCAKKyAgICAzNjQ2MywgMzY0NjcsIDM2NDc0LCAyNzk3NiwgMjc5ODYsIDM2NDc4LCAzNjQ4MywgMzY0ODgsIDM2NDkzLCAzNjUwMCwgCisgICAgMzY1MDQsIDM2NTExLCAzNjUxNywgODUzMiwgMzY1MjEsIDM2NTMwLCAzNjUzOCwgMzY1NTMsIDM2NTY3LCAzNjU3NiwgCisgICAgMzY1ODQsIDM2NTk1LCAzNjYwNCwgMzY2MDksIDM2NjE2LCA3NTgwLCAzNjYyNiwgMzY2MzEsIDM2NjM2LCAzNjY0MCwgCisgICAgMzY2NDMsIDM2NjQ4LCAzNjY1MiwgMzY2NTcsIDM2NjYxLCAzNjY2OCwgMzY2NzMsIDM2Njc4LCAzNjY4MywgOTQ3NCwgCisgICAgMzY2OTMsIDM2Njk1LCAzNjY5OCwgMzY3MDEsIDM2NzA1LCAzNjcxMSwgMzY3MTUsIDM2NzIwLCAzNjcyNSwgMzY3NDMsIAorICAgIDM2NzU3LCAzNjc3NiwgMzY3OTMsIDM2ODAyLCAzNjgxMCwgMzY4MTUsIDM2ODIwLCAxNDY3LCAzNjgyNiwgMzY4MzIsIAorICAgIDM2ODM3LCAzNjg0NywgMzY4NTYsIDM2ODY0LCAzNjg2OSwgMzY4NzUsIDM2ODgwLCAzNjg4OSwgMzY5MDAsIDM2OTA1LCAKKyAgICAzNjkxMiwgMzY5MTgsIDM2OTIyLCAzNjkyOSwgMzY5MzcsIDM2OTQ0LCAzNjk1NywgMzY5NjUsIDM2OTY5LCAzNjk3OSwgCisgICAgMzY5ODQsIDM2OTg4LCAzNjk5NiwgMzcwMDQsIDM3MDA5LCAzNzAxMywgMzcwMTcsIDM3MDI2LCAzNzAzMiwgMzcwMzcsIAorICAgIDM3MDQ1LCAzNzA1NSwgMzcwNjQsIDM3MDczLCAzNzA4MiwgMzcwOTMsIDM3MTAxLCAzNzExMiwgMzcxMjEsIDM3MTI4LCAKKyAgICAzNzEzNCwgMzcxMzksIDM3MTUwLCAzNzE2MSwgMzcxNjYsIDM3MTcwLCAzNzE3MywgMzcxNzcsIDM3MTg1LCAzNzE5MSwgCisgICAgMzcyMDIsIDM3MjEzLCAzNzIyNCwgMzcyMzUsIDM3MjQ2LCAzNzI1NywgMzcyNjgsIDM3Mjc5LCAzNzI5MSwgMzczMDMsIAorICAgIDM3MzE1LCAzNzMyNywgMzczMzksIDM3MzUxLCAzNzM2MywgMzczNzIsIDM3Mzc2LCAzNzM4NCwgMzczOTAsIDM3Mzk2LCAKKyAgICAzNzQwMywgMzc0MDksIDM3NDE0LCAzNzQyMCwgMjQ0MiwgMzc0MjQsIDM3NDI2LCAzNzQzMSwgMzc0MzYsIDM3NDQxLCAKKyAgICAzNzQ0NCwgMzc0NDYsIDM3NDUwLCAzNzQ1MywgMzc0NjAsIDM3NDY0LCAxMDc2MiwgMzc0NjgsIDM3NDc0LCAzNzQ4NCwgCisgICAgMzc0ODksIDM3NDk1LCAzNzQ5OSwgMzc1MDQsIDM3NTE3LCAyODQxNywgMzc1MjMsIDM3NTMyLCAzNzU0MSwgMTkyODEsIAorICAgIDM3NTQ4LCAzNzU1NywgMzQ0NDUsIDM3NTY1LCAzNzU3MCwgMzc1NzQsIDM3NTgzLCAzNzU5MSwgMzc1OTgsIDM3NjAzLCAKKyAgICAzNzYwNywgMzc2MTIsIDM3NjE3LCAzNzYyNSwgMzc2MjksIDM3NjM3LCAzNzY0MywgMzc2NDksIDM3NjU0LCAzNzY1OSwgCisgICAgMzc2NjMsIDM3NjY2LCAzNzY3MSwgMzc2ODQsIDM3NzAwLCAyNTA1NSwgMzc3MTcsIDM3NzI5LCAzNzc0NiwgMzc3NTgsIAorICAgIDM3NzcyLCAyNTA3MiwgMjUwOTEsIDM3Nzg0LCAzNzc5NiwgMjcwOCwgMzc4MTAsIDM3ODE1LCAzNzgyMCwgMzc4MjUsIAorICAgIDM3ODI5LCAzNzgzNiwgMzc4NDgsIDM3ODU1LCAzNzg2NCwgMzc4NjcsIDM3ODc4LCAzNzg4OSwgMzc4OTQsIDM0ODY4LCAKKyAgICA4OTMsIDM3ODk4LCAzNzkwMiwgMzc5MDYsIDM3OTA5LCAzNzkxNCwgMzc5MTksIDM3OTI1LCAzNzkzMCwgMzc5MzUsIAorICAgIDM3OTQxLCAzNzk0NywgMzc5NTIsIDM3OTU2LCAzNzk2MSwgMzc5NjYsIDM3OTcxLCAzNzk3NSwgMzc5NzgsIDM3OTg0LCAKKyAgICAzNzk4OSwgMzc5OTQsIDM3OTk5LCAzODAwMywgMzgwMDgsIDM4MDE0LCAzODAyMiwgMjg2NjksIDM4MDI3LCAzODAzMiwgCisgICAgMzgwMzksIDM4MDQ1LCAzODA1MSwgMzgwNTYsIDM4MDY0LCAyNDU3NCwgMzgwNzEsIDM4MDc2LCAzODA4MSwgMzgwODYsIAorICAgIDM4MDkwLCAzODA5MywgMzgwOTgsIDM4MTAyLCAzODEwNiwgMzgxMTMsIDM4MTE5LCAzODEyNSwgMzgxMzEsIDM4MTM4LCAKKyAgICAzODE0MywgMzgxNDksIDM2OTk5LCAzODE1MywgMzgxNTcsIDM4MTYyLCAzODE3NSwgMzgxODAsIDM4MTg2LCAzODE5NCwgCisgICAgMzgyMDEsIDM4MjA5LCAzODIxOSwgMzgyMjUsIDM4MjMxLCAzODIzNywgMzgyNDEsIDM4MjUwLCAzODI1OCwgMzgyNjUsIAorICAgIDM4MjcwLCAzODI3NSwgMTE0MzUsIDM4MjgwLCAzODI4NywgMzgyOTMsIDM4MzAzLCAzODMwOCwgMzgzMTQsIDM4MzIyLCAKKyAgICAzNzc0LCAzODMyOSwgMzgzMzYsIDM4MzQyLCAzODM0OSwgMzc4MCwgMzgzNTMsIDM4MzU4LCAzODM2OSwgMzgzNzYsIAorICAgIDM4MzgyLCAzODM5MSwgMzgzOTUsIDQyNTgsIDM4Mzk4LCAzODQwNSwgMzg0MTEsIDM4NDE3LCAzODQyNSwgMzg0MzUsIAorICAgIDMxNjYyLCAzODQ0MiwgMzg0NTAsIDM4NDU2LCAzODQ2MSwgMzg0NjcsIDM4NDcyLCAzODQ3NiwgMjgyNjAsIDM4NDgyLCAKKyAgICAzODQ4OSwgMzg0OTUsIDM4NTA0LCAzODUxMSwgMjU3OTEsIDM4NTE3LCAzODUyMiwgMzg1MjYsIDM4NTM0LCAzODU0MiwgCisgICAgMTA0MjgsIDYxOTksIDM4NTQ5LCAzODU1MywgMzg1NTUsIDM4NTU5LCAzODU2NCwgMzg1NjYsIDM4NTcxLCAzODU3NywgCisgICAgMzg1ODIsIDM4NTg3LCAzODU5NCwgMzU0NDMsIDM4NjAwLCAzODYwNSwgMzg2MDksIDM4NjE0LCAzODYxOCwgMzg2MjcsIAorICAgIDM4NjMxLCAzODYzNywgMzg2NDQsIDM4NjUwLCAzODY1NywgMzg2NjIsIDM4NjcxLCAzODY3NiwgMzg2ODAsIDM4Njg1LCAKKyAgICAzODY5MiwgMzg3MDAsIDM4NzA4LCAzODcxMywgMjMyMzMsIDM4NzE3LCAzODcyMCwgMzg3MjQsIDM4NzI4LCAxMTgyMywgCisgICAgOTA3LCAzODczMiwgMzg3MzcsIDM4NzQ1LCAzODc0OSwgMzg3NTgsIDM4NzY1LCAzODc2OSwgMzg3NzMsIDM4NzgxLCAKKyAgICAzODc4OCwgMzg3OTgsIDM4ODAyLCAzODgwNiwgMzg4MTQsIDM4ODIyLCAzODgyOCwgMzg4MzMsIDM4ODQyLCAxNDY0MCwgCisgICAgMzg4NDgsIDM4ODU3LCAzODg2MiwgMzg4NjksIDM4ODc2LCAzODg4NCwgMzg4OTEsIDM4ODk5LCAzODkwNywgMzg5MTIsIAorICAgIDM4OTE5LCAzODkyNiwgMzg5MzMsIDM4OTQwLCAzODk0NywgMzg5NTIsIDM4OTU5LCAzODk2NSwgMzg5ODIsIDM4OTkwLCAKKyAgICAzOTAwMCwgMzkwMDgsIDM5MDE1LCA0MjIsIDM5MDE5LCAzOTAyNSwgMzkwMjksIDM5MDM0LCAzNjYwMCwgMzkwNDAsIAorICAgIDM5MDQzLCAzOTA0NywgMzkwNTgsIDM5MDY2LCAzNzg1LCAzOTA3NCwgMzkwODAsIDM5MDg2LCAzOTA5NiwgMzkxMDUsIAorICAgIDM5MTE1LCAzOTEyMiwgMzkxMjgsIDM5MTMzLCAzNzkxLCAzNzk3LCAzOTE0MiwgMzkxNDksIDM5MTU3LCAzOTE2MiwgCisgICAgMzkxNjYsIDM5MTczLCAzOTE4MSwgMzkxODgsIDM5MTk0LCAzOTIwMywgMzkyMTMsIDM5MjE5LCAzOTIyNywgMzkyMzYsIAorICAgIDM5MjQzLCAzOTI1MSwgMzkyNTgsIDIzOTM3LCAzOTI2MiwgMzkyNjksIDM5Mjc1LCAzOTI4NSwgMzkyOTQsIDM5MzAyLCAKKyAgICAzOTMxMywgMzkzMTcsIDM5MzI3LCAzOTMzMywgMzkzNDAsIDM5MzQ4LCAzOTM1NywgMzkzNjYsIDM5Mzc2LCAzOTM4NywgCisgICAgMzkzOTQsIDM5Mzk5LCAzOTQwNiwgMzA3NywgMzk0MTQsIDM5NDIwLCAzOTQyNSwgMzk0MzEsIDM5NDM3LCAzOTQ0MiwgCisgICAgMzk0NTUsIDM5NDY4LCAzOTQ4MSwgMzk0ODgsIDM5NDk0LCAzOTUwMiwgMzk1MTAsIDM5NTE1LCAzOTUxOSwgMTQzNiwgCisgICAgMzk1MjMsIDM5NTI3LCAzOTUzMSwgMzk1MzUsIDM5NTM5LCAzOTU0MywgMzk1NDcsIDM5NTUxLCAzOTU1NSwgMzk1NTksIAorICAgIDM5NTYzLCAzOTU2NywgMzk1NzEsIDM5NTc1LCAzOTU3OSwgMzk1ODMsIDM5NTg3LCAzOTU5MSwgMzk1OTUsIDM5NTk5LCAKKyAgICAzOTYwMywgMzk2MDcsIDM5NjExLCAzOTYxNSwgMzk2MTksIDM5NjIzLCAzOTYyNywgMzk2MzEsIDM5NjM1LCAzOTYzOSwgCisgICAgMzk2NDMsIDM5NjQ3LCAzOTY1MSwgMzk2NTUsIDM5NjU5LCAzOTY2MywgMzk2NjcsIDM5NjcxLCAzOTY3NSwgMzk2NzksIAorICAgIDM5NjgzLCAzOTY4NywgMzk2OTEsIDM5Njk1LCAzOTY5OSwgMzk3MDMsIDM5NzA3LCAzOTcxMSwgMzk3MTUsIDM5NzE5LCAKKyAgICAzOTcyMywgMzk3MjcsIDM5NzMxLCAzOTczNSwgMzk3MzksIDM5NzQzLCAzOTc0NywgMzk3NTEsIDM5NzU1LCAzOTc1OSwgCisgICAgMzk3NjMsIDM5NzY3LCAzOTc3MSwgMzk3NzUsIDM5Nzc5LCAzOTc4MywgMzk3ODcsIDM5NzkxLCAzOTc5NSwgMzk3OTksIAorICAgIDM5ODAzLCAzOTgwNywgMzk4MTEsIDM5ODE1LCAzOTgxOSwgMzk4MjMsIDM5ODI3LCAzOTgzMSwgMzk4MzUsIDM5ODM5LCAKKyAgICAzOTg0MywgMzk4NDcsIDM5ODUxLCAzOTg1NSwgMzk4NTksIDM5ODYzLCAzOTg2NywgMzk4NzEsIDM5ODc1LCAzOTg3OSwgCisgICAgMzk4ODMsIDM5ODg3LCAzOTg5MSwgMzk4OTUsIDM5ODk5LCAzOTkwMywgMzk5MDcsIDM5OTExLCAzOTkxNSwgMzk5MTksIAorICAgIDM5OTIzLCAzOTkyNywgMzk5MzEsIDM5OTM1LCAzOTkzOSwgMzk5NDMsIDM5OTQ3LCAzOTk1MSwgMzk5NTUsIDM5OTU5LCAKKyAgICAzOTk2MywgMzk5NjcsIDM5OTcxLCAzOTk3NSwgMzk5NzksIDM5OTgzLCAzOTk4NywgMzk5OTEsIDM5OTk1LCAzOTk5OSwgCisgICAgNDAwMDMsIDQwMDA3LCA0MDAxMSwgNDAwMTUsIDQwMDE5LCA0MDAyMywgNDAwMjcsIDQwMDMxLCA0MDAzNSwgNDAwMzksIAorICAgIDQwMDQzLCA0MDA0NywgNDAwNTEsIDQwMDU1LCA0MDA1OSwgNDAwNjMsIDQwMDY3LCA0MDA3MSwgNDAwNzUsIDQwMDc5LCAKKyAgICA0MDA4MywgNDAwODcsIDQwMDkxLCA0MDA5NSwgNDAwOTksIDQwMTAzLCA0MDEwNywgNDAxMTEsIDQwMTE1LCA0MDExOSwgCisgICAgNDAxMjMsIDQwMTI3LCA0MDEzMSwgNDAxMzUsIDQwMTQwLCA0MDE0NCwgNDAxNDksIDQwMTUzLCA0MDE1OCwgNDAxNjIsIAorICAgIDQwMTY3LCA0MDE3MSwgNDAxNzcsIDQwMTgyLCA0MDE4NiwgNDAxOTEsIDQwMTk1LCA0MDIwMCwgNDAyMDQsIDQwMjA5LCAKKyAgICA0MDIxMywgNDAyMTgsIDQwMjIyLCA0MDIyNywgNDAyMzEsIDQwMjM2LCA0MDI0MCwgNDAyNDYsIDQwMjUyLCA0MDI1NywgCisgICAgNDAyNjEsIDQwMjY2LCA0MDI3MCwgNDAyNzYsIDQwMjgxLCA0MDI4NSwgNDAyOTAsIDQwMjk0LCA0MDI5OSwgNDAzMDMsIAorICAgIDQwMzA5LCA0MDMxNCwgNDAzMTgsIDQwMzIzLCA0MDMyNywgNDAzMzIsIDQwMzM2LCA0MDM0MSwgNDAzNDUsIDQwMzUxLCAKKyAgICA0MDM1NiwgNDAzNjAsIDQwMzY1LCA0MDM2OSwgNDAzNzUsIDQwMzgwLCA0MDM4NCwgNDAzODksIDQwMzkzLCA0MDM5OCwgCisgICAgNDA0MDIsIDQwNDA3LCA0MDQxMSwgNDA0MTYsIDQwNDIwLCA0MDQyNiwgNDA0MzEsIDQwNDM1LCA0MDQ0MSwgNDA0NDYsIAorICAgIDQwNDUwLCA0MDQ1NiwgNDA0NjEsIDQwNDY1LCA0MDQ3MCwgNDA0NzQsIDQwNDc5LCA0MDQ4MywgNDA0ODksIDQwNDk1LCAKKyAgICA0MDUwMSwgNDA1MDcsIDQwNTEzLCA0MDUxOSwgNDA1MjUsIDQwNTMxLCA0MDUzNiwgNDA1NDAsIDQwNTQ1LCA0MDU0OSwgCisgICAgNDA1NTUsIDQwNTYwLCA0MDU2NCwgNDA1NjksIDQwNTczLCA0MDU3OCwgNDA1ODIsIDQwNTg3LCA0MDU5MSwgNDA1OTYsIAorICAgIDQwNjAwLCA0MDYwNSwgNDA2MDksIDQwNjE0LCA0MDYxOCwgNDA2MjQsIDQwNjI5LCA0MDYzMywgNDA2MzgsIDQwNjQyLCAKKyAgICA0MDY0OCwgNDA2NTQsIDQwNjU5LCAxMjIsIDYzLCA0MDY2MywgNDA2NjUsIDQwNjY5LCA0MDY3MywgNDA2NzcsIDQwNjgyLCAKKyAgICA0MDY4NiwgNDA2OTAsIDQwNjk1LCAxMDM0MSwgNDA3MDAsIDQwNzA2LCAxNzM3LCA2NjIxLCA0MDcxMiwgNDA3MTUsIAorICAgIDQwNzIwLCA0MDcyNCwgNDA3MjksIDQwNzMzLCA0MDczNywgNDA3NDIsIDExMjE5LCA0MDc0NiwgNDA3NTAsIDQwNzU0LCAKKyAgICA1NDAsIDQwNzU4LCAxNjkxNCwgNDA3NjMsIDQwNzY3LCA0MDc3MiwgNDA3NzcsIDQwNzgyLCA0MDc4NiwgNDA3OTMsIAorICAgIDI4NDQxLCA0MDc5OSwgNDA4MDIsIDQwODA2LCA0MDgxMSwgNDA4MTcsIDQwODIxLCA0MDgyNCwgNDA4MzIsIDQwODM4LCAKKyAgICA0MDg0MywgNDA4NDcsIDQwODUwLCA0MDg1NCwgNDA4NjAsIDQwODY0LCA0MDg2OCwgMzU3MywgMzU3OCwgMzE4ODYsIAorICAgIDQwODcxLCA0MDg3NSwgNDA4NzksIDQwODgzLCA0MDg4NywgNDA4OTUsIDQwOTAyLCA0MDkwNiwgMTQ1OTAsIDQwOTEzLCAKKyAgICA0MDkxOCwgNDA5MzIsIDQwOTM5LCA0MDk1MCwgMzQxLCA0MDk1NSwgNDA5NTksIDQwOTY1LCA0MDk3NywgNDA5ODMsIAorICAgIDQwOTg5LCA0MDk5MywgMzE5MjMsIDQxMDAyLCA0MTAwOCwgNDEwMTcsIDQxMDIxLCA0MTAyNSwgNDEwMzAsIDQxMDM2LCAKKyAgICA0MTA0MSwgNDEwNDUsIDQxMDUwLCA0MTA1NCwgNDEwNTgsIDQxMDY1LCA0MTA3MSwgNDEwNzYsIDQxMDg3LCA0MTEwMiwgCisgICAgNDExMTcsIDQxMTMyLCA0MTE0OCwgNDExNjYsIDExMTY5LCA0MTE4MCwgNDExODcsIDQxMTkxLCA0MTE5NCwgNDEyMDMsIAorICAgIDQxMjA4LCA0MTIxMiwgNDEyMjAsIDE3NDY5LCA0MTIyOCwgNDEyMzIsIDQxMjQyLCA0MTI1MywgMzE4NTYsIDQxMjY2LCAKKyAgICA0MTI3MCwgNDEyNzksIDQxMjk3LCA0MTMxNiwgNDEzMjQsIDEwNjIzLCAxMTMzMiwgNDEzMjgsIDI0NDcwLCA0MTMzMSwgCisgICAgMzI4MjQsIDQxMzM2LCAxMDYyMiwgNDEzNDEsIDQxMzQ3LCA0MTM1MiwgNDEzNTgsIDQxMzYzLCA0MTM2OSwgNDEzNzQsIAorICAgIDQxMzgwLCA0MTM4NSwgNDEzOTEsIDQxMzk3LCA0MTQwMywgNDE0MDgsIDQxMzY0LCA0MTM3MCwgNDEzNzUsIDQxMzgxLCAKKyAgICA0MTM4NiwgNDEzOTIsIDQxMzk4LCA4NTQ1LCA0MTAzLCA0MTQxMiwgNDE0MjAsIDQxNDI0LCA0MTQyNywgNDE0MzQsIAorICAgIDQxNDM4LCA0MTQ0MywgNDE0NDgsIDQxNDU1LCA0MTQ2MSwgNDE0NjcsIDQxNDcyLCAxNjI5NywgNDE0NzYsIDI4Mjc3LCAKKyAgICA0MTQ4MCwgNDE0ODQsIDQxNDg4LCA0MTQ5NCwgNDE0OTgsIDMwMzQ5LCA0MTUwNywgOTYzNCwgNDE1MTEsIDEwMDI3LCAKKyAgICA0MTUxNCwgNDE1MjEsIDQxNTI3LCA0MTUzMSwgMTMxMTQsIDQxNTM4LCA0MTU0NCwgNDE1NDksIDQxNTU2LCA0MTU2MywgCisgICAgNDE1NzAsIDMxMDc2LCA4NDQyLCA0MTU3NywgNDE1ODQsIDQxNTkxLCA0MTU5NywgNDE2MDIsIDQxNjA5LCA0MTYyMCwgCisgICAgNDE2MjYsIDQxNjMxLCA0MTYzNiwgNDE2NDEsIDQxNjQ1LCA0MTY1MCwgNDE2NTcsIDQxMzY1LCA0MTY2MSwgNDE2NzEsIAorICAgIDQxNjgwLCA0MTY5MSwgNDE2OTcsIDQxNzA1LCA0MTcxMiwgNDE3MTcsIDQxNzIyLCA0MTcyNywgNDE3MzIsIDQxNzM3LCAKKyAgICA0MTc0MSwgNDE3NDUsIDQxNzUyLCA0MTc1OCwgNDE3NjYsIDIzMzgsIDEwODYsIDExMjM1LCAxMTI0NywgMTEyNTIsIAorICAgIDExMjU4LCA0MTc3NSwgMTEyNjMsIDExMjY4LCAxMTI3NCwgNDE3ODAsIDQxNzkwLCA0MTc5NCwgMTEyNzksIDQxNzk5LCAKKyAgICAxODYxNywgNDE4MDIsIDQxODA3LCA0MTgxMSwgMzc4NTksIDQxODIyLCA0MTgyNywgNDE4MzQsIDQxODQxLCA0MTg0NSwgCisgICAgNDE4NDgsIDQxODU2LCAxMTE4MiwgNDE4NjMsIDQxODY2LCA0MTg3MiwgNDE4ODIsIDYyNTEsIDQxODkxLCA0MTg5NywgCisgICAgNDE5MDEsIDQxOTA5LCA0MTkxMywgNDE5MjMsIDQxOTI5LCA0MTkzNCwgNDE5NDUsIDQxOTU0LCA0MTk2MywgNDE5NzIsIAorICAgIDQxOTgxLCA0MTk5MCwgNDE5OTksIDQyMDA4LCA0MjAxNCwgNDIwMjAsIDQyMDI1LCA0MjAzMSwgNDIwMzcsIDQyMDQzLCAKKyAgICA0MjA0OCwgNDIwNTEsIDQyMDU4LCA0MjA2NCwgNDIwNjgsIDQyMDczLCA0MjA4MCwgNDIwODcsIDQyMDkxLCA0MjA5NCwgCisgICAgNDIxMDQsIDQyMTE3LCA0MjEyNiwgNDIxMzUsIDQyMTQ2LCA0MjE1OSwgNDIxNzEsIDQyMTgyLCA0MjE5MSwgNDIyMDIsIAorICAgIDQyMjA3LCA0MjIxNiwgNDIyMjEsIDExMjg0LCA0MjIyNywgNDIyMzQsIDQyMjQyLCA0MjI0NywgNDIyNTEsIDQyMjU4LCAKKyAgICA0MjI2NSwgNDA0NiwgMjUsIDQyMjY5LCA0MjI3NCwgMTg0NjYsIDQyMjc4LCA0MjI4MSwgNDIyODQsIDMwNTI5LCA0MjI4OCwgCisgICAgMzEwODUsIDQyMjk2LCA0MjMwMCwgNDIzMDQsIDQyMzA3LCA0MjMxMywgNDIzMTksIDQyMzI0LCAzMzg4MywgNDIzMzMsIAorICAgIDQyMzQxLCA0MjM0NywgNDIzNTQsIDMwNTEyLCA0MjM1OCwgMzA3MzIsIDQyMzYyLCA0MjM3MSwgNDIzNzUsIDQyMzgzLCAKKyAgICA0MjM4OSwgNDIzOTUsIDQyNDAwLCA0MjQwNCwgMzExMDQsIDQyNDEwLCA0MjQxMywgNDI0MjEsIDQyNDI5LCA0Mzk5LCAKKyAgICA0MjQzNSwgNDI0MzksIDQyNDQ0LCA0MjQ1MSwgNDI0NTcsIDQyNDYyLCA0MjQ2NywgNDI0NzEsIDQyNDc3LCA0MjQ4MiwgCisgICAgNDI0ODgsIDQzMTEsIDg0OCwgNDI0OTUsIDQyNDk5LCA0MjUwMiwgMTY3ODcsIDQyNTE0LCA0MjUyMiwgNDI1MzAsIDQyNTM4LCAKKyAgICA0MjU0NiwgNDI1NTMsIDQyNTYxLCA0MjU2OSwgNDI1NzYsIDQyNTg0LCA0MjU5MiwgNDI2MDAsIDQyNjA4LCA0MjYxNiwgCisgICAgNDI2MjQsIDQyNjMyLCA0MjY0MCwgNDI2NDgsIDQyNjU2LCA0MjY2NCwgNDI2NzEsIDQyNjc5LCA0MjY4NywgNDI2OTUsIAorICAgIDQyNzAzLCA0MjcxMSwgNDI3MTksIDQyNzI3LCA0MjczNSwgNDI3NDMsIDQyNzUxLCA0Mjc1OSwgNDI3NjcsIDQyNzc1LCAKKyAgICA0Mjc4MywgNDI3OTEsIDQyNzk5LCA0MjgwNywgNDI4MTUsIDQyODIzLCA0MjgzMCwgNDI4MzgsIDQyODQ1LCA0Mjg1MywgCisgICAgNDI4NjEsIDQyODY5LCA0Mjg3NywgNDI4ODUsIDQyODkzLCA0MjkwMSwgNDI5MDksIDQyOTIwLCAyMzk3MywgNDI5MjUsIAorICAgIDQyOTI4LCA0MjkzNSwgNDI5MzksIDQyOTQ1LCA0Mjk0OSwgNDI5NTUsIDQyOTYwLCA0Mjk2NiwgNDI5NzEsIDQyOTc2LCAKKyAgICA0Mjk4MCwgNDI5ODQsIDQyOTg5LCA0Mjk5NCwgNDMwMDQsIDQzMDEwLCA0MzAyMywgNDMwMjksIDQzMDM1LCA0MzA0MSwgCisgICAgNDMwNDgsIDQzMDUzLCA0MzA1OSwgNDMwNjQsIDE4MzYyLCA4NTYsIDQzMDY5LCA0MzA3MiwgNDMwNzUsIDQzMDc4LCAKKyAgICAzMzk2NywgMzM5NzMsIDQzMDgxLCAzMzk3OSwgMzM5OTIsIDMzOTk4LCAzNDAwNCwgNDMwODcsIDM0MDEwLCAzNDAxNiwgCisgICAgNDMwOTMsIDQzMDk5LCAxOCwgNDMxMDcsIDQzMTE0LCA0MzExOCwgNDMxMjIsIDQzMTMwLCAzNDc1NywgNDMxMzQsIDQzMTM4LCAKKyAgICA0MzE0NSwgNDMxNTAsIDQzMTU0LCA0MzE1OSwgNDMxNjUsIDQzMTcwLCA0MzE3NiwgNDMxODEsIDQzMTg1LCA0MzE4OSwgCisgICAgNDMxOTMsIDQzMTk4LCA0MzIwMiwgNDMyMDcsIDQzMjExLCA0MzIxNSwgNDMyMjIsIDQzMjI3LCA0MzIzMSwgNDMyMzUsIAorICAgIDQzMjQwLCA0MzI0NCwgNDMyNDksIDQzMjUzLCA0MzI1NywgNDMyNjIsIDQzMjY4LCAxNzA2MCwgMTcwNjUsIDQzMjczLCAKKyAgICA0MzI3NywgNDMyODAsIDQzMjg0LCA0MzI4OCwgMjMwNDQsIDQzMjkzLCA0MzI5NywgNDMzMDMsIDQzMzEwLCA0MzMxNiwgCisgICAgNDMzMjEsIDQzMzMxLCA0MzMzNiwgNDMzNDQsIDQzMzQ4LCA0MzM1MSwgMzQ3NzIsIDQzMzU1LCA0Mzc2LCA0MzM2MCwgCisgICAgNDMzNjUsIDQzMzY5LCA0MzM3NCwgNDMzNzgsIDQzMzgzLCAxNDY1OCwgNDMzOTQsIDQzMzk4LCA0MzQwMSwgNDM0MDUsIAorICAgIDQzNDEwLCA0MzQxNCwgNDM0MTksIDQzNDI0LCA0MzQyOCwgNDM0MzIsIDQzNDM2LCA0MzQzOSwgNDM0NDMsIDg1NjQsIAorICAgIDE0Njc0LCA0MzQ0NiwgNDM0NDksIDQzNDU1LCA0MzQ2MCwgNDM0NjYsIDQzNDcxLCA0MzQ3NywgNDM0ODIsIDQzNDg4LCAKKyAgICA0MzQ5MywgNDM0OTksIDQzNTA1LCA0MzUxMSwgNDM1MTYsIDQzNTIwLCA0MzUyNCwgNDM1MzMsIDQzNTQ5LCA0MzU2NSwgCisgICAgNDM1NzUsIDMwNDE5LCA0MzU4MiwgNDM1ODYsIDQzNTkxLCA0MzU5NiwgNDM2MDAsIDQzNjA0LCAzOTM2MSwgNDM2MTAsIAorICAgIDQzNjE1LCA0MzYxOSwgNDM2MjYsIDQzNjMxLCA0MzYzNiwgNDM2NDAsIDQzNjQ0LCA0MzY1MCwgMjkzNDgsIDQzNjU0LCAKKyAgICAyMzM0MCwgNDM2NTksIDQzNjY2LCA0MzY3NCwgNDM2ODAsIDQzNjg3LCA0MzY5NSwgNDM3MDEsIDQzNzA1LCA0MzcxMCwgCisgICAgNDM3MTYsIDQzNzI0LCA0MzcyOSwgNDM3MzMsIDQzNzQyLCAxMDMyMiwgNDM3NTAsIDQzNzU0LCA0Mzc2MiwgNDM3NjksIAorICAgIDQzNzc0LCA0Mzc3OSwgNDM3ODQsIDQzNzg4LCA0Mzc5MSwgNDM3OTUsIDQzNzk4LCA0MzgwMiwgNDM4MDksIDQzODE0LCAKKyAgICA0MzgxOCwgNDM4MjQsIDI4NzQ3LCAzNDAzMCwgNDM4MjgsIDQzODM3LCA0Mzg0NSwgNDM4NTEsIDQzODU4LCA0Mzg2NCwgCisgICAgNDM4NzAsIDQzODc1LCA0Mzg3OCwgNDM4ODAsIDQzODg3LCA0Mzg5NCwgNDM5MDAsIDQzOTA0LCA0MzkwNywgNDM5MTEsIAorICAgIDQzOTE1LCA0MzkxOSwgNDM5MjQsIDQzOTI4LCA0MzkzMiwgNDM5MzUsIDQzOTM5LCA0Mzk1MywgMjUxMjEsIDQzOTcyLCAKKyAgICA0Mzk4NSwgNDM5OTgsIDQ0MDExLCAyNTEzOSwgNDQwMjYsIDExNTIwLCA0NDA0MSwgNDQwNDcsIDQ0MDUxLCA0NDA2MSwgCisgICAgNDQwNjUsIDQ0MDY5LCA0NDA3MywgNDQwODAsIDQ0MDg1LCA0NDA4OSwgNDQwOTYsIDQ0MTAyLCA0NDEwNywgNDQxMTMsIAorICAgIDQ0MTIzLCA0NDEzNSwgNDQxNDYsIDQ0MTUxLCA0NDE1OCwgNDQxNjIsIDQ0MTY2LCA0NDE2OSwgMTc0OTAsIDM4NTQsIAorICAgIDQ0MTc3LCAxNzA4NywgNDQxOTAsIDQ0MTk3LCA0NDIwNCwgNDQyMDgsIDQ0MjEyLCA0NDIxNywgNDQyMjMsIDQ0MjI4LCAKKyAgICA0NDIzNCwgNDQyMzgsIDQ0MjQyLCA0NDI0NSwgNDQyNTAsIDQ0MjU0LCA0NDI1OSwgODEwNiwgMTAxMiwgNDQyNjQsIAorICAgIDQ0MjY4LCA0NDI3NCwgNDQyODMsIDQ0Mjg4LCA0NDI5NywgNDQzMDQsIDM5MjA5LCA0NDMxMCwgNDQzMTUsIDQ0MzE5LCAKKyAgICA0NDMyNCwgNDQzMzEsIDQ0MzM3LCA0NDM0MSwgNDQzNDQsIDQ0MzQ4LCA0NDM1MywgMTU5ODEsIDQ0MzYwLCA0NDM2NywgCisgICAgNDQzNzEsIDQ0Mzc0LCA0NDM3OSwgNDQzODQsIDQ0MzkwLCA0NDM5NSwgNDQ0MDAsIDQ0NDA0LCA0NDQwOSwgNDQ0MTksIAorICAgIDQ0NDI0LCA0NDQzMCwgNDQ0MzUsIDQ0NDQxLCA0NDQ0NiwgNDQ0NTIsIDQ0NDYyLCA0NDQ2NywgNDQ0NzIsIDQ0NDc2LCAKKyAgICA0NDQ4MSwgNzU4MiwgNzU5NCwgNDQ0ODYsIDQ0NDg5LCA0NDQ5NiwgNDQ1MDIsIDQ0NTExLCA5NTYwLCAzNzEzMSwgNDQ1MTksIAorICAgIDQ0NTIzLCA0NDUyNywgMzQ4MjAsIDQ0NTM1LCA0NDU0NiwgNDQ1NTQsIDM5NDA5LCA0NDU2MSwgNDQ1NjYsIDQ0NTcxLCAKKyAgICA0NDU4MiwgNDQ1ODksIDQ0NjAwLCAzNDg0NCwgMjMzNTEsIDQ0NjA4LCA5MzQsIDQ0NjEzLCAxNTAzMCwgNDQ2MTksIAorICAgIDMwNTAzLCA0NDYyNSwgNDQ2MzAsIDQ0NjQwLCA0NDY0OSwgNDQ2NTYsIDQ0NjYyLCA0NDY2NiwgNDQ2NjksIDQ0Njc2LCAKKyAgICA0NDY4MiwgNDQ2ODksIDQ0Njk1LCA0NDcwNSwgNDQ3MTMsIDQ0NzE5LCA0NDcyNSwgNDQ3MzAsIDQ0NzM0LCA0NDc0MSwgCisgICAgNDQ3NDYsIDQ0NzUyLCA0NDc1OSwgNDQ3NjUsIDQzOTIwLCA0NDc3MCwgNDQ3NzQsIDU3MSwgMTUxNDYsIDQ0NzgwLCAKKyAgICA0NDc4NSwgNDQ3ODgsIDQ0Nzk0LCA0NDgwMiwgMTM2MSwgNDQ4MDcsIDQ0ODExLCA0NDgxNiwgNDQ4MjEsIDQ0ODI2LCAKKyAgICA0NDgzMywgNDQ4MzcsIDQ0ODQyLCA0NDg0OCwgNDQ4NTIsIDM0MDQwLCA0NDg1NywgNDQ4NjIsIDQ0ODcxLCA0NDg3OCwgCisgICAgNDQ4ODgsIDQ0ODk0LCAzMDU0NywgNDQ5MTEsIDQ0OTIwLCA0NDkyOCwgNDQ5MzQsIDQ0OTM5LCA0NDk0NiwgNDQ5NTIsIAorICAgIDQ0OTYwLCA0NDk2OSwgNDQ5NzcsIDQ0OTgxLCA0NDk4NiwgNDQ5OTQsIDMxNTU2LCAzNDg1MywgNDUwMDAsIDQ1MDE5LCAKKyAgICAxNzM5MywgNDUwMzMsIDQ1MDQ5LCA0NTA2MywgNDUwNjksIDQ1MDc0LCA0NTA3OSwgNDUwODQsIDQ1MDkwLCAzNDg1OSwgCisgICAgNDUwOTUsIDQ1MDk4LCA0NTEwNSwgNDUxMTIsIDQ1MTE3LCA0NTEyMSwgNDEyLCAyOTg0LCA0NTEyOCwgNDUxMzMsIDQ1MTM4LCAKKyAgICAyOTcxNywgNDQ5NDksIDQ1MTQyLCA0NTE0NywgNDUxNTUsIDQ1MTU5LCA0NTE2MiwgNDUxNjcsIDQ1MTczLCA0NTE3OSwgCisgICAgNDUxODQsIDQ1MTg4LCAzMDYxNCwgNDUxOTEsIDQ1MTk2LCA0NTIwMCwgNDUyMDMsIDQ1MjA4LCA0NTIxMiwgNDUyMTcsIAorICAgIDQ1MjIyLCA0NTIyNiwgNDUyMzEsIDQ1MjM1LCA0NTIzOSwgNDUyNDMsIDIzMDQwLCAyMzA1MSwgNDUyNDgsIDQ1MjUzLCAKKyAgICA0NTI1OSwgNDUyNjQsIDQ1MjcwLCAyOTMwNSwgNDUyNzUsIDQ1Mjc5LCAyMzEzNywgMTc2OTYsIDQ1MjgyLCA0NTI4NywgCisgICAgNDUyOTIsIDQ1Mjk3LCA0NTMwMiwgNDUzMDcsIDQ1MzEyLCA0NTMxNywgNDY1LCA2OCwgMzQwNTMsIDM0MDU4LCAzNDA2MywgCisgICAgMzQwNjksIDM0MDc0LCAzNDA3OSwgNDUzMjIsIDM0MDgzLCA0NTMyNiwgNDUzMzAsIDQ1MzM0LCAzNDA4OCwgMzQwOTQsIAorICAgIDQ1MzQ4LCAzNDEwNSwgMzQxMTAsIDQ1MzU2LCA0NTM2MSwgMzQxMTYsIDQ1MzY2LCA0NTM3MSwgNDUzNzYsIDQ1MzgxLCAKKyAgICA0NTM5MCwgNDUzOTYsIDQ1NDAyLCA0NTQwOCwgMzQxMzMsIDQ1NDIxLCA0NTQzMCwgNDU0MzYsIDM0MTM3LCA0NTQ0MCwgCisgICAgMzQxNDIsIDQ1NDQ1LCAzNDE0NywgMzQxNTIsIDQ1NDQ4LCA0NTQ1MywgNDU0NTcsIDQ1NDYzLCAzMzY4MSwgNDU0NzAsIAorICAgIDE0OTA0LCA0NTQ3NywgNDU0ODIsIDM0MTU3LCA0NTQ4NiwgNDU0OTEsIDQ1NDk2LCA0NTUwMSwgNDU1MDUsIDQ1NTEwLCAKKyAgICA0NTUxNSwgNDU1MjEsIDQ1NTI2LCA0NTUzMSwgNDU1MzcsIDQ1NTQzLCA0NTU0OCwgNDU1NTIsIDQ1NTU3LCA0NTU2MiwgCisgICAgNDU1NjcsIDQ1NTcxLCA0NTU3NiwgNDU1ODEsIDQ1NTg2LCA0NTU5MiwgNDU1OTgsIDQ1NjA0LCA0NTYwOSwgNDU2MTMsIAorICAgIDQ1NjE4LCA0NTYyMiwgMzQxNjEsIDM0MTY2LCAzNDE3MSwgNDU2MjYsIDQ1NjMwLCA0NTYzNSwgNDU2MzksIDM0MTc2LCAKKyAgICAzNDE4MiwgMzQxODgsIDM0MjAwLCA0NTY1MSwgMjgzMTQsIDQ1NjU1LCA0NTY2MCwgNDU2NjQsIDQ1NjY5LCA0NTY3NiwgCisgICAgNDU2ODEsIDQ1Njg2LCA0NTY5MSwgNDU2OTUsIDQ1Njk5LCA0NTcwOSwgNDU3MTQsIDQ1NzE5LCA0NTcyMywgNDU3MjcsIAorICAgIDQ1NzMwLCA0NTczOCwgMzQyNDgsIDQ1NzQzLCAxNDQ2LCA0NTc0OSwgNDU3NTQsIDQ1NzYwLCA0NTc2OCwgNDU3NzIsIAorICAgIDQ1NzgxLCA0NTc4OSwgNDU3OTMsIDQ1Nzk3LCA0NTgwNSwgNDU4MTEsIDQ1ODE5LCA0NTgzNSwgNDU4MzksIDQ1ODQzLCAKKyAgICA0NTg0NywgNDU4NTIsIDQ1ODU4LCA0NTg3MywgMzQyODUsIDE3NDUsIDEzMzA4LCA0NTg3NywgMTM0MCwgMTM1NSwgNDU4ODksIAorICAgIDQ1ODk3LCA0NTkwNCwgNDU5MDksIDQ1OTE2LCA0NTkyMSwgMTAwMTIsIDEwOTYsIDI1MjksIDExMzExLCA0NTkyOCwgOTkxMCwgCisgICAgNDU5MzMsIDQ1OTM2LCA0NTk0NSwgMTI0OCwgNDU5NTAsIDQ0MDg2LCA0NTk1NywgNDU5NjYsIDQ1OTcxLCA0NTk3NSwgCisgICAgNDU5ODMsIDI0NTI2LCAyNTgxLCA0NTk5MCwgMTE3NzYsIDQ2MDAwLCA0NjAwNiwgMjM1NiwgMjM2NiwgNDYwMTUsIDQ2MDI0LCAKKyAgICA0NjAzNCwgNDYwNDUsIDMzNjUsIDM3NDg1LCA0NjA1MCwgMTEzNzUsIDQwMjQsIDE4NDAwLCAxMjUzLCA0NjA1NCwgNDYwNjIsIAorICAgIDQ2MDY5LCA0NjA3NCwgNDYwNzgsIDQ2MDgyLCAyNjAxOCwgNDQzNTUsIDExNDAyLCA0NjA5MCwgNDYwOTksIDQ2MTA4LCAKKyAgICA0NjExNiwgNDYxMjMsIDQ2MTM0LCA0NjEzOSwgNDYxNTIsIDQ2MTY1LCA0NjE3NywgNDYxODksIDQ2MjAxLCA0NjIxMiwgCisgICAgNDYyMjUsIDQ2MjM2LCA0NjI0NywgNDYyNTcsIDQ2MjY1LCA0NjI3MywgNDYyODUsIDQ2Mjk3LCA0NjMwOCwgNDYzMTcsIAorICAgIDQ2MzI1LCA0NjMzMiwgNDYzNDQsIDQ2MzUxLCA0NjM1NywgNDYzNjYsIDQ2MzczLCA0NjM4NiwgNDYzOTEsIDQ2NDAxLCAKKyAgICA0NjQwNiwgNDY0MTIsIDQ2NDE3LCA0MTUyOCwgNDY0MjEsIDQ2NDI4LCA0NjQzMiwgNDY0MzksIDQ2NDQ3LCA0NjQ1NCwgCisgICAgMjU0MiwgNDY0NjEsIDQ2NDcyLCA0NjQ4MiwgNDY0OTEsIDQ2NDk5LCA0NjUwOSwgNDY1MTcsIDQ2NTI2LCA0NjUzNiwgCisgICAgNDY1NDUsIDQ2NTUwLCA0NjU1NiwgNDY1NjIsIDM4OTgsIDQ2NTczLCA0NjU4MywgNDY1OTIsIDQ2NjAxLCA0NjYwOSwgCisgICAgNDY2MTksIDQ2NjI3LCA0NjYzNiwgNDY2NDEsIDQ2NjQ2LCA0NjY1MSwgMTY3NSwgNDcsIDQ2NjU5LCA0NjY2NywgNDY2NzgsIAorICAgIDQ2Njg5LCAxODAzOSwgNDY2OTksIDQ2NzAzLCA0NjcxMCwgNDY3MTYsIDQ2NzIxLCA0NjcyNSwgNDY3MzYsIDQ2NzQ2LCAKKyAgICA0Njc1NSwgNDY3NjYsIDE4NDM5LCAxODQ0NCwgNDY3NzEsIDQ2NzgwLCA0Njc4NSwgNDY3OTUsIDQ2ODAwLCA0NjgwOCwgCisgICAgNDY4MTYsIDQ2ODIzLCA0NjgyOSwgMTYzNywgMjgzLCA0NjgzMywgNDY4MzksIDQ2ODQ0LCA0Njg0NywgMjEyOCwgNDQyMDksIAorICAgIDQ2ODU1LCA0Njg1OSwgNDY4NjIsIDE0OTEsIDQ2ODY4LCAxNTMzMSwgMTI1OCwgNDY4NzMsIDQ2ODg2LCA0NjkwMCwgMjY3MSwgCisgICAgNDY5MTgsIDQ2OTMwLCA0Njk0MiwgMjY4NSwgMjcwMiwgNDY5NTYsIDQ2OTY5LCAyNzE3LCA0Njk4MywgNDY5OTUsIDI3MzIsIAorICAgIDQ3MDA5LCAxMjY0LCAxMjcwLCAxMjc2LCAxMTY4MiwgNDcwMTQsIDQ3MDE5LCA0NzAyNCwgNDcwMjgsIDQ3MDQzLCA0NzA1OCwgCisgICAgNDcwNzMsIDQ3MDg4LCA0NzEwMywgNDcxMTgsIDQ3MTMzLCA0NzE0OCwgNDcxNjMsIDQ3MTc4LCA0NzE5MywgNDcyMDgsIAorICAgIDQ3MjIzLCA0NzIzOCwgNDcyNTMsIDQ3MjY4LCA0NzI4MywgNDcyOTgsIDQ3MzEzLCA0NzMyOCwgNDczNDMsIDQ3MzU4LCAKKyAgICA0NzM3MywgNDczODgsIDQ3NDAzLCA0NzQxOCwgNDc0MzMsIDQ3NDQ4LCA0NzQ2MywgNDc0NzgsIDQ3NDkzLCA0NzUwOCwgCisgICAgNDc1MjMsIDQ3NTM4LCA0NzU1MywgNDc1NjgsIDQ3NTgzLCA0NzU5OCwgNDc2MTMsIDQ3NjI4LCA0NzY0MywgNDc2NTgsIAorICAgIDQ3NjczLCA0NzY4OCwgNDc3MDMsIDQ3NzE4LCA0NzczMywgNDc3NDgsIDQ3NzYzLCA0Nzc3OCwgNDc3OTMsIDQ3ODA4LCAKKyAgICA0NzgyMywgNDc4MzgsIDQ3ODUzLCA0Nzg2OCwgNDc4ODMsIDQ3ODk4LCA0NzkxMywgNDc5MjgsIDQ3OTQzLCA0Nzk1OCwgCisgICAgNDc5NzMsIDQ3OTg4LCA0ODAwMywgNDgwMTgsIDQ4MDMzLCA0ODA0OCwgNDgwNjMsIDQ4MDc4LCA0ODA5MywgNDgxMDgsIAorICAgIDQ4MTIzLCA0ODEzOCwgNDgxNTMsIDQ4MTY4LCA0ODE4MywgNDgxOTgsIDQ4MjEzLCA0ODIyOCwgNDgyNDMsIDQ4MjU4LCAKKyAgICA0ODI3MywgNDgyODgsIDQ4MzAzLCA0ODMxOCwgNDgzMzMsIDQ4MzQ4LCA0ODM2MywgNDgzNzgsIDQ4MzkzLCA0ODQwOCwgCisgICAgNDg0MjMsIDQ4NDM4LCA0ODQ1MywgNDg0NjgsIDQ4NDgzLCA0ODQ5OCwgNDg1MTMsIDQ4NTI4LCA0ODU0MywgNDg1NTgsIAorICAgIDQ4NTczLCA0ODU4OCwgNDg2MDMsIDQ4NjE4LCA0ODYzMywgNDg2NDgsIDQ4NjYzLCA0ODY3OCwgNDg2OTMsIDQ4NzA4LCAKKyAgICA0ODcyMywgNDg3MzgsIDQ4NzUzLCA0ODc2OCwgNDg3ODMsIDQ4Nzk4LCA0ODgxMywgNDg4MjgsIDQ4ODQzLCA0ODg1OCwgCisgICAgNDg4NzMsIDQ4ODg4LCA0ODkwMywgNDg5MTgsIDQ4OTMzLCA0ODk0OCwgNDg5NjMsIDQ4OTc4LCA0ODk5MywgNDkwMDgsIAorICAgIDQ5MDIzLCA0OTAzOCwgNDkwNTMsIDQ5MDY4LCA0OTA4MywgNDkwOTgsIDQ5MTEzLCA0OTEyOCwgNDkxNDMsIDQ5MTU4LCAKKyAgICA0OTE3MywgNDkxODgsIDQ5MjAzLCA0OTIxOCwgNDkyMzMsIDQ5MjQ4LCA0OTI2MywgNDkyNzgsIDQ5MjkzLCA0OTMwOCwgCisgICAgNDkzMjMsIDQ5MzM4LCA0OTM1MywgNDkzNjgsIDQ5MzgzLCA0OTM5OCwgNDk0MTMsIDQ5NDI4LCA0OTQ0MywgNDk0NTgsIAorICAgIDQ5NDczLCA0OTQ4OCwgNDk1MDMsIDQ5NTE4LCA0OTUzMywgNDk1NDgsIDQ5NTYzLCA0OTU3OCwgNDk1OTMsIDQ5NjA4LCAKKyAgICA0OTYyMywgNDk2MzgsIDQ5NjUzLCA0OTY2OCwgNDk2ODMsIDQ5Njk4LCA0OTcxMywgNDk3MjgsIDQ5NzQzLCA0OTc1OCwgCisgICAgNDk3NzMsIDQ5Nzg4LCA0OTgwMywgNDk4MTgsIDQ5ODMzLCA0OTg0OCwgNDk4NjMsIDQ5ODc4LCA0OTg5MywgNDk5MDgsIAorICAgIDQ5OTIzLCA0OTkzOCwgNDk5NTMsIDQ5OTY4LCA0OTk4MywgNDk5OTgsIDUwMDEzLCA1MDAyOCwgNTAwNDMsIDUwMDU4LCAKKyAgICA1MDA3MywgNTAwODgsIDUwMTAzLCA1MDExOCwgNTAxMzMsIDUwMTQ4LCA1MDE2MywgNTAxNzgsIDUwMTkzLCA1MDIwOCwgCisgICAgNTAyMjMsIDUwMjM4LCA1MDI1MywgNTAyNjgsIDUwMjgzLCA1MDI5OCwgNTAzMTMsIDUwMzI4LCA1MDM0MywgNTAzNTgsIAorICAgIDUwMzczLCA1MDM4OCwgNTA0MDMsIDUwNDE4LCA1MDQzMywgNTA0NDgsIDUwNDYzLCA1MDQ3OCwgNTA0OTMsIDUwNTA4LCAKKyAgICA1MDUyMywgNTA1MzgsIDUwNTUzLCA1MDU2OCwgNTA1ODMsIDUwNTk4LCA1MDYxMywgNTA2MjgsIDUwNjQzLCA1MDY1OCwgCisgICAgNTA2NzMsIDUwNjg4LCA1MDcwMywgNTA3MTgsIDUwNzMzLCA1MDc0OCwgNTA3NjMsIDUwNzc4LCA1MDc5MywgNTA4MDgsIAorICAgIDUwODIzLCA1MDgzOCwgNTA4NTMsIDUwODY4LCA1MDg4MywgNTA4OTgsIDUwOTEzLCA1MDkyOCwgNTA5NDMsIDUwOTU4LCAKKyAgICA1MDk3MywgNTA5ODgsIDUxMDAzLCA1MTAxOCwgNTEwMzMsIDUxMDQ4LCA1MTA2MywgNTEwNzgsIDUxMDkzLCA1MTEwOCwgCisgICAgNTExMjMsIDUxMTM4LCA1MTE1MywgNTExNjgsIDUxMTgzLCA1MTE5OCwgNTEyMTMsIDUxMjI4LCA1MTI0MywgNTEyNTgsIAorICAgIDUxMjczLCA1MTI4OCwgNTEzMDMsIDUxMzE4LCA1MTMzMywgNTEzNDgsIDUxMzYzLCA1MTM3OCwgNTEzOTMsIDUxNDA4LCAKKyAgICA1MTQyMywgNTE0MzgsIDUxNDUzLCA1MTQ2OCwgNTE0ODMsIDUxNDk4LCA1MTUxMywgNTE1MjgsIDUxNTQzLCA1MTU1OCwgCisgICAgNTE1NzMsIDUxNTg4LCA1MTYwMywgNTE2MTgsIDUxNjMzLCA1MTY0OCwgNTE2NjMsIDUxNjc4LCA1MTY5MywgNTE3MDgsIAorICAgIDUxNzIzLCA1MTczOCwgNTE3NTMsIDUxNzY4LCA1MTc4MywgNTE3OTgsIDUxODEzLCA1MTgyOCwgNTE4NDMsIDUxODU4LCAKKyAgICA1MTg3MywgNTE4ODgsIDUxOTAzLCA1MTkxOCwgNTE5MzMsIDUxOTQ4LCA1MTk2MywgNTE5NzgsIDUxOTkzLCA1MjAwOCwgCisgICAgNTIwMjMsIDUyMDM4LCA1MjA1MywgNTIwNjgsIDUyMDgzLCA1MjA5OCwgNTIxMTMsIDUyMTI4LCA1MjE0MywgNTIxNTgsIAorICAgIDUyMTczLCA1MjE4OCwgNTIyMDMsIDUyMjE4LCA1MjIzMywgNTIyNDgsIDUyMjYzLCA1MjI3OCwgNTIyOTMsIDUyMzA4LCAKKyAgICA1MjMyMywgNTIzMzgsIDUyMzUzLCA1MjM2OCwgNTIzODMsIDUyMzk4LCA1MjQxMywgNTI0MjgsIDUyNDQzLCA1MjQ1OCwgCisgICAgNTI0NzMsIDUyNDg4LCA1MjUwMywgNTI1MTgsIDUyNTMzLCA1MjU0OCwgNTI1NjMsIDUyNTc4LCA1MjU5MywgNTI2MDgsIAorICAgIDUyNjIzLCA1MjYzOCwgNTI2NTMsIDUyNjY4LCA1MjY4MywgNTI2OTgsIDUyNzEzLCA1MjcyOCwgNTI3NDMsIDUyNzU4LCAKKyAgICA1Mjc3MywgNTI3ODgsIDUyODAzLCA1MjgxOCwgNTI4MzMsIDUyODQ4LCA1Mjg2MywgNTI4NzgsIDUyODkzLCA1MjkwOCwgCisgICAgNTI5MjMsIDUyOTM4LCA1Mjk1MywgNTI5NjgsIDUyOTgzLCA1Mjk5OCwgNTMwMTMsIDUzMDI4LCA1MzA0MywgNTMwNTgsIAorICAgIDUzMDczLCA1MzA4OCwgNTMxMDMsIDUzMTE4LCA1MzEzMywgNTMxNDgsIDUzMTYzLCA1MzE3OCwgNTMxOTMsIDUzMjA4LCAKKyAgICA1MzIyMywgNTMyMzgsIDUzMjUzLCA1MzI2OCwgNTMyODMsIDUzMjk4LCA1MzMxMywgNTMzMjgsIDUzMzQzLCA1MzM1OCwgCisgICAgNTMzNzMsIDUzMzg4LCA1MzQwMywgNTM0MTgsIDUzNDMzLCA1MzQ0OCwgNTM0NjMsIDUzNDc4LCA1MzQ5MywgNTM1MDgsIAorICAgIDUzNTIzLCA1MzUzOCwgNTM1NTMsIDUzNTY4LCA1MzU4MywgNTM1OTgsIDUzNjEzLCA1MzYyOCwgNTM2NDMsIDUzNjU4LCAKKyAgICA1MzY3MywgNTM2ODgsIDUzNzAzLCA1MzcxOCwgNTM3MzMsIDUzNzQ4LCA1Mzc2MywgNTM3NzgsIDUzNzkzLCA1MzgwOCwgCisgICAgNTM4MjMsIDUzODM4LCA1Mzg1MywgNTM4NjgsIDUzODgzLCA1Mzg5OCwgNTM5MTMsIDUzOTI4LCA1Mzk0MywgNTM5NTgsIAorICAgIDUzOTczLCA1Mzk4OCwgNTQwMDMsIDU0MDE4LCA1NDAzMywgNTQwNDgsIDU0MDYzLCA1NDA3OCwgNTQwOTMsIDU0MTA4LCAKKyAgICA1NDEyMywgNTQxMzgsIDU0MTUzLCA1NDE2OCwgNTQxODMsIDU0MTk4LCA1NDIxMywgNTQyMjgsIDU0MjQzLCA1NDI1OCwgCisgICAgNTQyNzMsIDU0Mjg4LCA1NDMwMywgNTQzMTgsIDU0MzMzLCA1NDM0OCwgNTQzNjMsIDU0Mzc4LCA1NDM5MywgNTQ0MDgsIAorICAgIDU0NDIzLCA1NDQzOCwgNTQ0NTMsIDU0NDY4LCA1NDQ4MywgNTQ0OTgsIDU0NTEzLCA1NDUyOCwgNTQ1NDMsIDU0NTU4LCAKKyAgICA1NDU3MywgNTQ1ODgsIDU0NjAzLCA1NDYxOCwgNTQ2MzMsIDU0NjQ4LCA1NDY2MywgNTQ2NzgsIDU0NjkzLCA1NDcwOCwgCisgICAgNTQ3MjMsIDU0NzM4LCA1NDc1MywgNTQ3NjgsIDU0NzgzLCA1NDc5OCwgNTQ4MTMsIDU0ODI4LCA1NDg0MywgNTQ4NTksIAorICAgIDU0ODc1LCA1NDg5MSwgNTQ5MDcsIDU0OTIzLCA1NDkzOSwgNTQ5NTUsIDU0OTcxLCA1NDk4NywgNTUwMDMsIDU1MDE5LCAKKyAgICA1NTAzNSwgNTUwNTEsIDU1MDY3LCA1NTA4MywgNTUwOTksIDU1MTE1LCA1NTEzMSwgNTUxNDcsIDU1MTYzLCA1NTE3OSwgCisgICAgNTUxOTUsIDU1MjExLCA1NTIyNywgNTUyNDMsIDU1MjU5LCA1NTI3NSwgNTUyOTEsIDU1MzA3LCA1NTMyMywgNTUzMzksIAorICAgIDU1MzU1LCA1NTM3MSwgNTUzODcsIDU1NDAzLCA1NTQxOSwgNTU0MzUsIDU1NDUxLCA1NTQ2NywgNTU0ODMsIDU1NDk5LCAKKyAgICA1NTUxNSwgNTU1MzEsIDU1NTQ3LCA1NTU2MywgNTU1NzksIDU1NTk1LCA1NTYxMSwgNTU2MjcsIDU1NjQzLCA1NTY1OSwgCisgICAgNTU2NzUsIDU1NjkxLCA1NTcwNywgNTU3MjMsIDU1NzM5LCA1NTc1NSwgNTU3NzEsIDU1Nzg3LCA1NTgwMywgNTU4MTksIAorICAgIDU1ODM1LCA1NTg1MSwgNTU4NjcsIDU1ODgzLCA1NTg5OSwgNTU5MTUsIDU1OTMxLCA1NTk0NywgNTU5NjMsIDU1OTc5LCAKKyAgICA1NTk5NSwgNTYwMTEsIDU2MDI3LCA1NjA0MywgNTYwNTksIDU2MDc1LCA1NjA5MSwgNTYxMDcsIDU2MTIzLCA1NjEzOSwgCisgICAgNTYxNTUsIDU2MTcxLCA1NjE4NywgNTYyMDMsIDU2MjE5LCA1NjIzNSwgNTYyNTEsIDU2MjY3LCA1NjI4MywgNTYyOTksIAorICAgIDU2MzE1LCA1NjMzMSwgNTYzNDcsIDU2MzYzLCA1NjM3OSwgNTYzOTUsIDU2NDExLCA1NjQyNywgNTY0NDMsIDU2NDU5LCAKKyAgICA1NjQ3NSwgNTY0OTEsIDU2NTA3LCA1NjUyMywgNTY1MzksIDU2NTU1LCA1NjU3MSwgNTY1ODcsIDU2NjAzLCA1NjYxOSwgCisgICAgNTY2MzUsIDU2NjUxLCA1NjY2NywgNTY2ODMsIDU2Njk5LCA1NjcxNSwgNTY3MzEsIDU2NzQ3LCA1Njc2MywgNTY3NzksIAorICAgIDU2Nzk1LCA1NjgxMSwgNTY4MjcsIDU2ODQzLCA1Njg1OSwgNTY4NzUsIDU2ODkxLCA1NjkwNywgNTY5MjMsIDU2OTM5LCAKKyAgICA1Njk1NSwgNTY5NzEsIDU2OTg3LCA1NzAwMywgNTcwMTksIDU3MDM1LCA1NzA1MSwgNTcwNjcsIDU3MDgzLCA1NzA5OSwgCisgICAgNTcxMTUsIDU3MTMxLCA1NzE0NywgNTcxNjMsIDU3MTc5LCA1NzE5NSwgNTcyMTEsIDU3MjI3LCA1NzI0MywgNTcyNTksIAorICAgIDU3Mjc1LCA1NzI5MSwgNTczMDcsIDU3MzIzLCA1NzMzOSwgNTczNTUsIDU3MzcxLCA1NzM4NywgNTc0MDMsIDU3NDE5LCAKKyAgICA1NzQzNSwgNTc0NTEsIDU3NDY3LCA1NzQ4MywgNTc0OTksIDU3NTE1LCA1NzUzMSwgNTc1NDcsIDU3NTYzLCA1NzU3OSwgCisgICAgNTc1OTUsIDU3NjExLCA1NzYyNywgNTc2NDMsIDU3NjU5LCA1NzY3NSwgNTc2OTEsIDU3NzA3LCA1NzcyMywgNTc3MzksIAorICAgIDU3NzU1LCA1Nzc3MSwgNTc3ODcsIDU3ODAzLCA1NzgxOSwgNTc4MzUsIDU3ODUxLCA1Nzg2NywgNTc4ODMsIDU3ODk5LCAKKyAgICA1NzkxNSwgNTc5MzEsIDU3OTQ3LCA1Nzk2MywgNTc5NzksIDU3OTk1LCA1ODAxMSwgNTgwMjcsIDU4MDQzLCA1ODA1OSwgCisgICAgNTgwNzUsIDU4MDkxLCA1ODEwNywgNTgxMjMsIDU4MTM5LCA1ODE1NSwgNTgxNzEsIDU4MTg3LCA1ODIwMywgNTgyMTksIAorICAgIDU4MjM1LCA1ODI1MSwgNTgyNjcsIDU4MjgzLCA1ODI5OSwgNTgzMTUsIDU4MzMxLCA1ODM0NywgNTgzNjMsIDU4Mzc5LCAKKyAgICA1ODM5NSwgNTg0MTEsIDU4NDI3LCA1ODQ0MywgNTg0NTksIDU4NDc1LCA1ODQ5MSwgNTg1MDcsIDU4NTIzLCA1ODUzOSwgCisgICAgNTg1NTUsIDU4NTcxLCA1ODU4NywgNTg2MDMsIDU4NjE5LCA1ODYzNSwgNTg2NTEsIDU4NjY3LCA1ODY4MywgNTg2OTksIAorICAgIDU4NzE1LCA1ODczMSwgNTg3NDcsIDU4NzYzLCA1ODc3OSwgNTg3OTUsIDU4ODExLCA1ODgyNywgNTg4NDMsIDU4ODU5LCAKKyAgICA1ODg3NSwgNTg4OTEsIDU4OTA3LCA1ODkyMywgNTg5MzksIDU4OTU1LCA1ODk3MSwgNTg5ODcsIDU5MDAzLCA1OTAxOSwgCisgICAgNTkwMzUsIDU5MDUxLCA1OTA2NywgNTkwODMsIDU5MDk5LCA1OTExNSwgNTkxMzEsIDU5MTQ3LCA1OTE2MywgNTkxNzksIAorICAgIDU5MTk1LCA1OTIxMSwgNTkyMjcsIDU5MjQzLCA1OTI1OSwgNTkyNzUsIDU5MjkxLCA1OTMwNywgNTkzMjMsIDU5MzM5LCAKKyAgICA1OTM1NSwgNTkzNzEsIDU5Mzg3LCA1OTQwMywgNTk0MTksIDU5NDM1LCA1OTQ1MSwgNTk0NjcsIDU5NDgzLCA1OTQ5OSwgCisgICAgNTk1MTUsIDU5NTMxLCA1OTU0NywgNTk1NjMsIDU5NTc5LCA1OTU5NSwgNTk2MTEsIDU5NjI3LCA1OTY0MywgNTk2NTksIAorICAgIDU5Njc1LCA1OTY5MSwgNTk3MDcsIDU5NzIzLCA1OTczOSwgNTk3NTUsIDU5NzcxLCA1OTc4NywgNTk4MDMsIDU5ODE5LCAKKyAgICA1OTgzNSwgNTk4NTEsIDU5ODY3LCA1OTg4MywgNTk4OTksIDU5OTE1LCA1OTkzMSwgNTk5NDcsIDU5OTYzLCA1OTk3OSwgCisgICAgNTk5OTUsIDYwMDExLCA2MDAyNywgNjAwNDMsIDYwMDU5LCA2MDA3NSwgNjAwOTEsIDYwMTA3LCA2MDEyMywgNjAxMzksIAorICAgIDYwMTU1LCA2MDE3MSwgNjAxODcsIDYwMjAzLCA2MDIxOSwgNjAyMzUsIDYwMjUxLCA2MDI2NywgNjAyODMsIDYwMjk5LCAKKyAgICA2MDMxNSwgNjAzMzEsIDYwMzQ3LCA2MDM2MywgNjAzNzksIDYwMzk1LCA2MDQxMSwgNjA0MjcsIDYwNDQzLCA2MDQ1OSwgCisgICAgNjA0NzUsIDYwNDkxLCA2MDUwNywgNjA1MjMsIDYwNTM5LCA2MDU1NSwgNjA1NzEsIDYwNTg3LCA2MDYwMywgNjA2MTksIAorICAgIDYwNjM1LCA2MDY1MSwgNjA2NjcsIDYwNjgzLCA2MDY5OSwgNjA3MTUsIDYwNzMxLCA2MDc0NywgNjA3NjMsIDYwNzc5LCAKKyAgICA2MDc5NSwgNjA4MTEsIDYwODI3LCA2MDg0MywgNjA4NTksIDYwODc1LCA2MDg5MSwgNjA5MDcsIDYwOTIzLCA2MDkzOSwgCisgICAgNjA5NTUsIDYwOTcxLCA2MDk4NywgNjEwMDMsIDYxMDE5LCA2MTAzNSwgNjEwNTEsIDYxMDY3LCA2MTA4MywgNjEwOTksIAorICAgIDYxMTE1LCA2MTEzMSwgNjExNDcsIDYxMTYzLCA2MTE3OSwgNjExOTUsIDYxMjExLCA2MTIyNywgNjEyNDMsIDYxMjU5LCAKKyAgICA2MTI3NSwgNjEyOTEsIDYxMzA3LCA2MTMyMywgNjEzMzksIDYxMzU1LCA2MTM3MSwgNjEzODcsIDYxNDAzLCA2MTQxOSwgCisgICAgNjE0MzUsIDYxNDUxLCA2MTQ2NywgNjE0ODMsIDYxNDk5LCA2MTUxNSwgNjE1MzEsIDYxNTQ3LCA2MTU2MywgNjE1NzksIAorICAgIDYxNTk1LCA2MTYxMSwgNjE2MjcsIDYxNjQzLCA2MTY1OSwgNjE2NzUsIDYxNjkxLCA2MTcwNywgNjE3MjMsIDYxNzM5LCAKKyAgICA2MTc1NSwgNjE3NzEsIDYxNzg3LCA2MTgwMywgNjE4MTksIDYxODM1LCA2MTg1MSwgNjE4NjcsIDYxODgzLCA2MTg5OSwgCisgICAgNjE5MTUsIDYxOTMxLCA2MTk0NywgNjE5NjMsIDYxOTc5LCA2MTk5NSwgNjIwMTEsIDYyMDI3LCA2MjA0MywgNjIwNTksIAorICAgIDYyMDc1LCA2MjA5MSwgNjIxMDcsIDYyMTIzLCA2MjEzOSwgNjIxNTUsIDYyMTcxLCA2MjE4NywgNjIyMDMsIDYyMjE5LCAKKyAgICA2MjIzNSwgNjIyNTEsIDYyMjY3LCA2MjI4MywgNjIyOTksIDYyMzE1LCA2MjMzMSwgNjIzNDcsIDYyMzYzLCA2MjM3OSwgCisgICAgNjIzOTUsIDYyNDExLCA2MjQyNywgNjI0NDMsIDYyNDU5LCA2MjQ3NSwgNjI0OTEsIDYyNTA3LCA2MjUyMywgNjI1MzksIAorICAgIDYyNTU1LCA2MjU3MSwgNjI1ODcsIDYyNjAzLCA2MjYxOSwgNjI2MzUsIDYyNjUxLCA2MjY2NywgNjI2ODMsIDYyNjk5LCAKKyAgICA2MjcxNSwgNjI3MzEsIDYyNzQ3LCA2Mjc2MywgNjI3NzksIDYyNzk1LCA2MjgxMSwgNjI4MjcsIDYyODQzLCA2Mjg1OSwgCisgICAgNjI4NzUsIDYyODkxLCA2MjkwNywgNjI5MjMsIDYyOTM5LCA2Mjk1NSwgNjI5NzEsIDYyOTg3LCA2MzAwMywgNjMwMTksIAorICAgIDYzMDM1LCA2MzA1MSwgNjMwNjcsIDYzMDgzLCA2MzA5OSwgNjMxMTUsIDYzMTMxLCA2MzE0NywgNjMxNjMsIDYzMTc5LCAKKyAgICA2MzE5NSwgNjMyMTEsIDYzMjI3LCA2MzI0MywgNjMyNTksIDYzMjc1LCA2MzI5MSwgNjMzMDcsIDYzMzIzLCA2MzMzOSwgCisgICAgNjMzNTUsIDYzMzcxLCA2MzM4NywgNjM0MDMsIDYzNDE5LCA2MzQzNSwgNjM0NTEsIDYzNDY3LCA2MzQ4MywgNjM0OTksIAorICAgIDYzNTE1LCA2MzUzMCwgMTYxNTIsIDYzNTM5LCA2MzU0NCwgNjM1NTAsIDYzNTU2LCA2MzU2NiwgNjM1NzQsIDE2MzkzLCAKKyAgICAxNjk5OSwgMTA4MzEsIDYzNTg3LCAxNDk5LCAxNTAzLCA2MzU5NSwgMzk3OCwgMjk4MzIsIDc1MzYsIDYzNjAxLCA2MzYwNiwgCisgICAgNjM2MTEsIDYzNjE2LCA2MzYyMSwgNjM2MjcsIDYzNjMyLCA2MzYzOCwgNjM2NDMsIDYzNjQ5LCA2MzY1NCwgNjM2NTksIAorICAgIDYzNjY0LCA2MzY2OSwgNjM2NzUsIDYzNjgwLCA2MzY4NSwgNjM2OTAsIDYzNjk1LCA2MzcwMCwgNjM3MDUsIDYzNzEwLCAKKyAgICA2MzcxNiwgNjM3MjEsIDYzNzI3LCA2MzczNCwgMjU4NSwgNjM3MzksIDYzNzQ1LCA4OTU3LCA2Mzc0OSwgNjM3NTQsIAorICAgIDYzNzYxLCA2Mzc2OSwgNjUsIDYzNzczLCA2Mzc3OSwgNjM3ODQsIDYzNzg5LCA2Mzc5MywgNjM3OTgsIDYzODAyLCA2MzgwNiwgCisgICAgMTE3MTksIDYzODEwLCA2MzgyMCwgNjM4MzMsIDYzODQ0LCA2Mzg1NywgNjM4NjQsIDYzODcwLCAxMTIzNiwgNjM4NzgsIAorICAgIDYzODgzLCA2Mzg4OSwgNjM4OTUsIDYzOTAxLCA2MzkwNiwgNjM5MTEsIDYzOTE2LCA2MzkyMSwgNjM5MjUsIDYzOTMwLCAKKyAgICA2MzkzNSwgNjM5NDAsIDYzOTQ2LCA2Mzk1MiwgNjM5NTgsIDYzOTYzLCA2Mzk2NywgNjM5NzIsIDYzOTc3LCA2Mzk4MSwgCisgICAgNjM5ODYsIDYzOTkxLCA2Mzk5NiwgNjQwMDAsIDExNzM1LCAxMTc0NiwgMTE3NTEsIDE1NDIsIDY0MDA0LCA2NDAxMCwgCisgICAgMTU0NywgMTc4OTAsIDY0MDE1LCAxNzg5OSwgNjQwMjAsIDY0MDI2LCA2NDAzMSwgMTU3OCwgNjQwMzcsIDE1ODQsIDE1OTAsIAorICAgIDExNzgxLCA2NDA0MiwgNjQwNTEsIDY0MDU5LCA2NDA2NywgNjQwNzQsIDY0MDc4LCA2NDA4MiwgNjQwODgsIDY0MDkzLCAKKyAgICAzMzcyMSwgNjQwOTgsIDY0MTA1LCA2NDExMiwgNjQxMTcsIDY0MTIxLCA2NDEyNSwgNjQxMzQsIDE1OTUsIDE4MDA4LCAKKyAgICA2NDEzOSwgNjQxNDMsIDE4MDE5LCAxMTI2LCA2NDE0NywgNjQxNTQsIDY0MTU5LCA2NDE2MywgMTgwNTUsIDE1OTksIAorICAgIDQxNjg1LCA2NDE2NiwgNjQxNzEsIDY0MTgxLCA2NDE5MCwgNjQxOTUsIDY0MTk5LCA2NDIwNSwgMTYwNCwgNDQzMTYsIAorICAgIDY0MjEwLCA2NDIxOSwgNjQyMjUsIDY0MjMwLCA2NDIzNSwgMTE5OTIsIDExOTk4LCA2NDI0MSwgNjQyNTMsIDY0MjcwLCAKKyAgICA2NDI4NywgNjQzMDQsIDY0MzIxLCA2NDMzOCwgNjQzNTUsIDY0MzcyLCA2NDM4OSwgNjQ0MDYsIDY0NDIzLCA2NDQ0MCwgCisgICAgNjQ0NTcsIDY0NDc0LCA2NDQ5MSwgNjQ1MDgsIDY0NTI1LCA2NDU0MiwgNjQ1NTksIDY0NTc2LCA2NDU5MywgNjQ2MTAsIAorICAgIDY0NjI3LCA2NDY0NCwgNjQ2NjEsIDY0Njc4LCA2NDY5NSwgNjQ3MTIsIDY0NzI5LCA2NDc0NiwgNjQ3NjMsIDY0NzgwLCAKKyAgICA2NDc5NywgNjQ4MTQsIDY0ODMxLCA2NDg0OCwgNjQ4NjUsIDY0ODgyLCA2NDg5OSwgNjQ5MTYsIDY0OTMzLCA2NDk1MCwgCisgICAgNjQ5NjcsIDY0OTg0LCA2NTAwMSwgNjUwMTgsIDY1MDM1LCA2NTA1MiwgNjUwNjksIDY1MDg2LCA2NTA5NywgNjUxMDcsIAorICAgIDY1MTEyLCAxNjA5LCA2NTExNiwgNjUxMjEsIDY1MTI3LCA2NTEzMiwgNjUxMzcsIDY1MTQ0LCA5OTI5LCAxNjE0LCA2NTE1MCwgCisgICAgNjUxNTksIDMwMTYxLCA2NTE2NCwgNjUxNzUsIDEyMDA5LCA2NTE4NSwgNjUxOTAsIDY1MTk2LCA2NTIwMSwgNjUyMDgsIAorICAgIDY1MjE0LCA2NTIxOSwgMTYxOSwgMTgzMzgsIDY1MjI0LCA2NTIzMCwgMTIwMTksIDE2MjQsIDEyMDI0LCA2NTIzNiwgCisgICAgNjUyNDEsIDY1MjQ3LCA2NTI1MiwgNjUyNTcsIDY1MjYyLCA2NTI2NywgNjUyNzIsIDY1Mjc3LCA2NTI4MiwgNjUyODcsIAorICAgIDY1MjkzLCA2NTI5OSwgNjUzMDUsIDY1MzEwLCA2NTMxNCwgNjUzMTksIDY1MzI0LCA2NTMyOCwgNjUzMzMsIDY1MzM4LCAKKyAgICA2NTM0MywgNjUzNDgsIDY1MzUyLCA2NTM1NywgNjUzNjMsIDY1MzY4LCA2NTM3MywgNjUzNzcsIDY1MzgyLCA2NTM4NywgCisgICAgNjUzOTMsIDY1Mzk4LCA2NTQwMywgNjU0MDksIDY1NDE1LCA2NTQyMCwgNjU0MjQsIDY1NDI5LCA2NTQzNCwgNjU0MzksIAorICAgIDY1NDQzLCA2NTQ0OCwgNjU0NTMsIDY1NDU4LCA2NTQ2NCwgNjU0NzAsIDY1NDc1LCA2NTQ3OSwgNjU0ODMsIDY1NDg4LCAKKyAgICA2NTQ5MywgNjU0OTgsIDMxNzM1LCA2NTUwMiwgNjU1MDcsIDY1NTEyLCA2NTUxOCwgNjU1MjMsIDY1NTI4LCA2NTUzMiwgCisgICAgNjU1MzcsIDY1NTQyLCA2NTU0OCwgNjU1NTMsIDY1NTU4LCA2NTU2NCwgNjU1NzAsIDY1NTc1LCA2NTU3OSwgNjU1ODQsIAorICAgIDY1NTg5LCA2NTU5MywgNjU1OTgsIDY1NjAzLCA2NTYwOCwgNjU2MTQsIDY1NjIwLCA2NTYyNSwgNjU2MjksIDY1NjM0LCAKKyAgICA2NTYzOSwgNjU2NDMsIDY1NjQ4LCA2NTY1MywgNjU2NTgsIDY1NjYzLCA2NTY2NywgNjU2NzAsIDY1NjczLCA2NTY3OCwgCisgICAgNjU2ODMsIDM0NDEyLCA2NTY5MCwgNjU2OTgsIDM2OTAsIDMwMTExLCA2NTcwNCwgNjU3MTEsIDY1NzE3LCAzODI5LCAKKyAgICAxMjEzMCwgNjU3MjMsIDY1NzMzLCA2NTc0OCwgNjU3NTYsIDEyMTM1LCA2NTc2NywgNjU3NzIsIDY1NzgzLCA2NTc5NSwgCisgICAgNjU4MDcsIDY1ODE5LCAyNzIzLCA2NTgzMSwgNjU4MzYsIDY1ODQ4LCA2NTg1MiwgNjU4NTgsIDY1ODY0LCA2NTg2OSwgCisgICAgNjU4NzgsIDE2NDEsIDE3NTY1LCA2NTg4NSwgNjU4OTAsIDQ0Mzc1LCA2NTg5NCwgNjU4OTgsIDY1OTAzLCA2NTkwNywgCisgICAgMTg0NzksIDY1OTEyLCA2NTkxNSwgNjU5MjAsIDY1OTI4LCA2NTkzNiwgMTY0NSwgMTIxNzEsIDEyMTc3LCAxNjUwLCAKKyAgICA2NTk0NCwgNjU5NTEsIDY1OTU2LCA2NTk2NSwgNjU5NzUsIDY1OTgyLCA2NTk4NywgNjU5OTIsIDE2NTUsIDY1OTk5LCAKKyAgICA2NjAwNCwgMTg1OTksIDY2MDA4LCA2NjAxMywgNjYwMjAsIDY2MDI2LCA2NjAzMCwgNjYwNDEsIDY2MDUxLCA2NjA1OCwgCisgICAgMTg2MjEsIDk4MjMsIDk4MzAsIDQwMjcsIDQwMzMsIDY2MDY1LCAxNjYwLCA2NjA3MCwgNjYwNzYsIDY2MDg0LCA2NjA5MSwgCisgICAgNjYwOTcsIDY2MTA0LCA2NjExNiwgNjYxMjIsIDY2MTI3LCA2NjEzOSwgNjYxNTAsIDY2MTU5LCA2NjE2OSwgMzk1NywgCisgICAgNjYxNzcsIDMzNTE1LCAzMzUyNCwgMTg2NjEsIDE2NjUsIDE2NjksIDY2MTkwLCA2NjE5NCwgNjYxOTcsIDY2MjA4LCAKKyAgICA2NjIxMywgMTY3OSwgNjYyMjEsIDY2MjI2LCA2NjIzMSwgMTg3MjAsIDY2MjQzLCA2NjI0NiwgNjYyNTIsIDY2MjU4LCAKKyAgICA2NjI2MywgNjYyNzEsIDE2ODQsIDY2Mjc2LCA2NjI4MSwgNjYyODksIDY2Mjk3LCA2NjMwNCwgNjYzMTMsIDY2MzIxLCAKKyAgICA2NjMzMCwgMTY4OSwgNjYzMzQsIDE2OTQsIDIzMjA4LCA2NjMzOSwgNjYzNDYsIDE4ODAwLCA2NjM1NCwgNjYzNjQsIAorICAgIDY2MzcwLCA2NjM3NSwgNjYzODMsIDY2MzkwLCA2NjM5OSwgNjY0MDcsIDY2NDE3LCA2NjQyNiwgNjY0MzYsIDY2NDQ1LCAKKyAgICA2NjQ1NiwgNjY0NjYsIDY2NDc2LCA2NjQ4NSwgNjY0OTUsIDY2NTA5LCA2NjUyMiwgNjY1MzEsIDY2NTM5LCA2NjU0OSwgCisgICAgNjY1NTgsIDY2NTcwLCA2NjU4MSwgNjY1OTIsIDY2NjAyLCAxODExMiwgNjY2MDcsIDEyMzIzLCA2NjYxNiwgNjY2MjIsIAorICAgIDY2NjI3LCA2NjYzNCwgNjY2NDEsIDY2NjQ3LCAxNzc3MSwgNjY2NTcsIDY2NjYzLCA2NjY2OCwgNjY2NzksIDY2Njg0LCAKKyAgICA2NjY5MiwgMTIzNDAsIDEyMzQ1LCA2NjcwMCwgNjY3MDYsIDY2NzEwLCA2NjcxOCwgNDAyMiwgMTg4NjksIDQ0NDY4LCAKKyAgICA2NjcyMywgNjY3MjksIDY2NzM0LCA2Njc0MiwgNjY3NDksIDEzMjg5LCA2Njc1NCwgNjY3NjAsIDE3MDUsIDY2NzY1LCAKKyAgICA2Njc2OCwgMTQxOSwgNjY3NzQsIDY2Nzc5LCA2Njc4NCwgNjY3OTAsIDY2Nzk1LCA2NjgwMCwgNjY4MDUsIDY2ODEwLCAKKyAgICA2NjgxNSwgNjY4MjAsIDE3MTQsIDEzLCA2NjgyNiwgNjY4MzAsIDY2ODM1LCA2NjgzOSwgNjY4NDMsIDY2ODQ3LCAzNDY1MiwgCisgICAgNjY4NTIsIDI1Mjk2LCA2Njg1NywgNjY4NjIsIDY2ODY2LCA2Njg2OSwgNjY4NzMsIDY2ODc3LCA2Njg4MiwgNjY4ODYsIAorICAgIDY2ODkxLCA2Njg5NSwgNjY5MDEsIDM3OTEwLCAzNzkxNSwgMzc5MjAsIDY2OTA0LCA2NjkxMSwgNjY5MTcsIDY2OTI1LCAKKyAgICA0NDEzOSwgNjY5MzUsIDM3OTI2LCAzNDkxNiwgMzQ2NjcsIDM0NjczLCAzNzk0MiwgMzQ2NzksIDY2OTQwLCA2Njk0NSwgCisgICAgMzQ5NDksIDY2OTQ5LCA2Njk1MiwgNjY5NTYsIDY2OTY0LCA2Njk3MSwgNjY5NzQsIDY2OTc5LCA2Njk4NCwgNjY5ODgsIAorICAgIDY2OTkyLCA2Njk5NSwgNjcwMDUsIDY3MDE3LCA2NzAyNCwgNjcwMzAsIDM0Njg0LCA2NzAzNywgMzY0NDMsIDY3MDQwLCAKKyAgICA4OTc0LCAxMDUyLCA2NzA0MywgNjcwNDcsIDY3MDUyLCAzODcyLCA2NzA1NiwgNjcwNTksIDE0OTM3LCA2NzA2NiwgNjcwNzMsIAorICAgIDY3MDg2LCA2NzA5NCwgNjcxMDMsIDY3MTEyLCA2NzExNywgNjcxMjcsIDY3MTQwLCA2NzE1MiwgNjcxNTksIDY3MTY0LCAKKyAgICA2NzE3MywgNjcxODYsIDM5NDQ5LCA2NzIwNCwgNjcyMDksIDY3MjE2LCA2NzIyMiwgNjcyMjcsIDgzNSwgNjcyMzIsIAorICAgIDY3MjQwLCA2NzI0NywgNjcyNTQsIDI5NjU4LCA4MDMsIDY3MjYwLCA2NzI2NiwgNjcyNzYsIDY3Mjg0LCA2NzI5MCwgCisgICAgNjcyOTUsIDM0NzAzLCA2MzM0LCAzNDcxNywgNjcyOTksIDY3MzA5LCA2NzMxNCwgNjczMjIsIDY3MzMyLCA2NzM0NywgCisgICAgNjczNTMsIDY3MzU5LCAzNDcyNywgNjczNjQsIDMzODM4LCA2NzM2OCwgNjczNzMsIDY3MzgwLCA2NzM4NSwgNjczODksIAorICAgIDY3Mzk0LCAxODY2NCwgNjc0MDEsIDY3NDA2LCA2NzQxMCwgNjM3NSwgMzQ3NTMsIDY3NDE0LCA2NzQyMCwgMzI1LCA2NzQzMCwgCisgICAgNjc0MzcsIDY3NDQzLCA2NzQ1MCwgNjc0NTUsIDY3NDY0LCAxNDU3MywgNjQxNzUsIDY0MTg1LCA2NzQ3MCwgNjc0NzgsIAorICAgIDY3NDgyLCA2NzQ4NiwgNjc0OTAsIDY3NDk0LCA2NzQ5OSwgNjc1MDMsIDY3NTA5LCA2NzUxNywgNjc1MjIsIDY3NTI3LCAKKyAgICA2NzUzMiwgNjc1MzYsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTU1LCA2NzU2MSwgNjc1NjYsIDY3NTcwLCA2NzU3NSwgCisgICAgMzQ4NzcsIDY3NTc5LCAzNDg4MywgMzQ4ODksIDY3NTg0LCA2NzU5MCwgNjc1OTcsIDY3NjAyLCA2NzYwNiwgMzM4NTUsIAorICAgIDE4MzMxLCA2NzYwOSwgNjc2MTMsIDY3NjE4LCA2NzYyNSwgNjc2MzEsIDY3NjM1LCA2NzY0MCwgNDM4MDQsIDY3NjQ2LCAKKyAgICA2NzY1MCwgNjc2NTcsIDY3NjYxLCA2NzY2NiwgNjc2NzIsIDY3Njc4LCA2NzY4NCwgNjc2OTYsIDY3NzA1LCA2NzcxNSwgCisgICAgNjc3MjEsIDY3NzI4LCA2NzczMywgNjc3MzgsIDY3NzQyLCA2Nzc0NSwgNjc3NTEsIDY3NzU4LCA2Nzc2MywgNjc3NjgsIAorICAgIDY3Nzc1LCA2Nzc4MiwgNjc3ODksIDY3Nzk1LCA2NzgwMCwgNjc4MDUsIDY3ODEzLCAzNDg5NCwgMjQ0NywgNjc4MTgsIAorICAgIDY3ODIzLCA2NzgyOSwgNjc4MzQsIDY3ODQwLCA2Nzg0NSwgNjc4NTAsIDY3ODU1LCA2Nzg2MSwgMzQ5MTUsIDY3ODY2LCAKKyAgICA2Nzg3MiwgNjc4NzgsIDY3ODg0LCAzNDk4NSwgNjc4ODksIDY3ODk0LCA2Nzg5OSwgMzQ5OTYsIDY3OTA0LCA2NzkwOSwgCisgICAgNjc5MTQsIDY3OTIwLCA2NzkyNiwgMzUwMDEsIDY3OTMxLCA2NzkzNiwgNjc5NDEsIDM1MDU2LCAzNTA2MiwgNjc5NDYsIAorICAgIDY3OTUxLCAzNTA2NywgMzUwODksIDMwNDEwLCAzNTA5NSwgMzUwOTksIDY3OTU2LCAxMzAxOSwgNjc5NjAsIDY3OTY4LCAKKyAgICA2Nzk3NCwgNjc5ODIsIDY3OTg5LCA2Nzk5NSwgNjgwMDUsIDY4MDExLCA2ODAxOCwgMTE2NTQsIDM1MTEzLCA2ODAyNCwgCisgICAgNjgwMzcsIDY4MDQ2LCA2ODA1MiwgNjgwNjEsIDY4MDY3LCAyNTYwNiwgNjgwNzQsIDY4MDgxLCA2ODA5MSwgNjgwOTksIAorICAgIDY4MTAyLCAzNTA1NywgNjgxMDcsIDY4MTE0LCA2ODExOSwgNjgxMjMsIDY4MTI3LCA2ODEzMiwgNjgxMzYsIDQxNDcsIAorICAgIDY4MTQxLCA2ODE0NiwgNjgxNTEsIDM4MDA0LCAzODAwOSwgNjgxNTUsIDM4MDIzLCA2ODE2MCwgMzgwMjgsIDY4MTY1LCAKKyAgICA2ODE3MSwgMzgwNDAsIDM4MDQ2LCAzODA1MiwgNjgxNzYsIDY4MTgyLCAyNDU3NSwgNjgxOTMsIDY4MTk2LCA2ODIwOCwgCisgICAgNjgyMTYsIDM1MTM2LCA2ODIyMCwgNjgyMjksIDY4MjM5LCA2ODI0OCwgMzUxNDYsIDY4MjUzLCA2ODI2MCwgNjgyNjksIAorICAgIDY4Mjc1LCA2ODI4MywgNjgyOTAsIDY0MjYsIDQ2OTMsIDY4Mjk1LCAzNTA2OCwgNjgzMDEsIDY4MzA0LCA2ODMxMCwgCisgICAgNjgzMTcsIDY4MzIyLCA2ODMyNywgMjU1MTYsIDY4MzMxLCA2ODMzNywgNjgzNDMsIDY4MzQ4LCA2ODM1MywgNjgzNTcsIAorICAgIDY4MzYzLCA2ODM2OSwgMzYzNDksIDEwODQsIDM5MDk5LCA0MDgzNCwgNDA4NDAsIDM1MTc3LCAzNTE4MiwgNjgzNzQsIAorICAgIDY4Mzc4LCA2ODM4MiwgNjgzODUsIDY4Mzk4LCA2ODQwNCwgNjg0MDgsIDY4NDExLCA2ODQxNiwgMzY2ODYsIDY4NDIwLCAKKyAgICAzMzg2MCwgMjMxNTgsIDY4NDI2LCA2MzU1LCA2MzYzLCA5NjYwLCA2ODQyOSwgNjg0MzQsIDY4NDM5LCA2ODQ0NCwgNjg0NDksIAorICAgIDY4NDU0LCA2ODQ1OSwgNjg0NjQsIDY4NDY5LCA2ODQ3NCwgNjg0ODAsIDY4NDg1LCA2ODQ5MCwgNjg0OTYsIDY4NTAxLCAKKyAgICA2ODUwNiwgNjg1MTEsIDY4NTE2LCA2ODUyMSwgNjg1MjYsIDY4NTMyLCA2ODUzNywgNjg1NDMsIDY4NTQ4LCA2ODU1MywgCisgICAgNjg1NTgsIDY4NTYzLCA2ODU2OCwgNjg1NzMsIDY4NTc4LCA2ODU4MywgNjg1ODgsIDY4NTkzLCA2ODU5OSwgNjg2MDQsIAorICAgIDY4NjA5LCA2ODYxNCwgNjg2MTksIDY4NjI0LCA2ODYyOSwgNjg2MzUsIDY4NjQwLCA2ODY0NSwgNjg2NTAsIDY4NjU1LCAKKyAgICA2ODY2MCwgNjg2NjUsIDY4NjcwLCA2ODY3NSwgNjg2ODAsIDY4Njg2LCA2ODY5MSwgNjg2OTYsIDY4NzAxLCA2ODcwNiwgCisgICAgNjg3MTIsIDY4NzE4LCA2ODcyMywgNjg3MjksIDY4NzM0LCA2ODczOSwgNjg3NDQsIDY4NzQ5LCA2ODc1NCwgMTQ5MiwgMTU2LCAKKyAgICA2ODc1OSwgNjg3NjMsIDY4NzY3LCA2ODc3MSwgMjczMDYsIDY4Nzc1LCA2ODc3OSwgNjg3ODQsIDY4Nzg4LCA2ODc5MywgCisgICAgNjg3OTcsIDY4ODAyLCA2ODgwNywgNjg4MTIsIDY4ODE2LCA2ODgyMCwgNjg4MjUsIDY4ODI5LCAxNDY1MiwgNjg4MzQsIAorICAgIDY4ODM4LCA2ODg0NSwgNjg4NTUsIDE2NzE4LCA2ODg2NCwgNjg4NzMsIDY4ODc3LCA2ODg4MiwgNjg4ODcsIDY4ODkxLCAKKyAgICA2ODg5NSwgMjcxMDAsIDMwNjcsIDY4ODk5LCA2ODkwNSwgMTkxNDQsIDY4OTA5LCA2ODkxOCwgNjg5MjYsIDY4OTMyLCAKKyAgICA2ODkzNywgNjg5NDksIDY4OTYxLCA2ODk2NiwgNjg5NzAsIDY4OTc1LCA2ODk3OSwgNjg5ODUsIDY4OTkxLCA2ODk5NiwgCisgICAgNjkwMDYsIDY5MDE2LCA2OTAyMiwgNjkwMjcsIDY5MDMxLCA2OTAzNywgNjkwNDIsIDY5MDQ5LCA2OTA1NSwgNjkwNjAsIAorICAgIDY5MDY5LCA2OTA3OCwgNjkwODYsIDY5MDkwLCAxNzEyOSwgNjkwOTMsIDY5MTAyLCA2OTExMCwgNjkxMjIsIDY5MTMzLCAKKyAgICA2OTE0NCwgNjkxNTMsIDY5MTU3LCA2OTE2NiwgNjkxNzQsIDY5MTg0LCA2OTE5MiwgNjkxOTksIDY5MjA1LCA2OTIxMCwgCisgICAgNjkyMTksIDY5MjI1LCA2OTIzMCwgNjkyNDEsIDYwLCAzMzY1OCwgNjkyNDcsIDI4NTg2LCAyODU5NiwgNjkyNTMsIDY5MjYxLCAKKyAgICA2OTI2OCwgNjkyNzQsIDY5Mjc4LCA2OTI4OCwgNjkyOTksIDY5MzA3LCA2OTMxNiwgNjkzMjEsIDY5MzI2LCA2OTMzMSwgCisgICAgNjkzMzUsIDY5MzM5LCAxOTA5OCwgNjkzNDcsIDY5MzUxLCA2OTM1NywgNjkzNjcsIDY5Mzc0LCA2OTM4MCwgNjkzODYsIAorICAgIDM4MTAzLCA2OTM5MCwgNjkzOTIsIDY5Mzk1LCA2OTQwMSwgNjk0MDUsIDY5NDE2LCA2OTQyNiwgNjk0MzIsIDY5NDM5LCAKKyAgICA2OTQ0NiwgMTQ1ODksIDY5NDU0LCA2OTQ2MCwgNjk0NjksIDY5NDc4LCA2OTQ4NCwgMTA3MTMsIDY5NDkwLCA2OTQ5NiwgCisgICAgNjk1MDEsIDY5NTA2LCA2OTUxMywgNjk1MTgsIDY5NTI1LCA2OTUzMSwgNjk1MzYsIDY5NTQ0LCA2OTU1NywgNjk1NjYsIAorICAgIDY5NTc1LCA2NjQ3MSwgNjY0ODEsIDY5NTg1LCA2OTU5MSwgNjk1OTcsIDY5NjA0LCA2OTYxMSwgNjk2MTgsIDY5NjI1LCAKKyAgICA2OTYzMiwgNjk2MzcsIDY5NjQxLCA2OTY0NSwgNjk2NDgsIDY5NjU4LCA2OTY2MiwgNjk2NzQsIDY5NjgzLCA2OTY4NywgCisgICAgNjk2OTgsIDY5NzAzLCA2OTcwNywgNjY0OTAsIDY5NzEzLCA2OTcyMCwgNjk3MjksIDY5NzM3LCA2OTc0NSwgNjk3NTAsIAorICAgIDY5NzU0LCA2OTc1OSwgNjk3NjQsIDY5Nzc0LCA2OTc4MiwgNjk3ODcsIDY5NzkxLCA2OTc5NSwgNjk4MDEsIDY5ODA5LCAKKyAgICA2OTgxNiwgNjk4MjgsIDY5ODM2LCA2OTg0NywgNjk4NTQsIDY5ODYwLCA2OTg3MCwgNjk4NzYsIDY5ODgwLCA2OTg4OSwgCisgICAgNjk4OTgsIDY5OTA1LCA2OTkxMSwgNjk5MTYsIDY5OTIwLCA2OTkyNCwgNjk5MjgsIDY5OTM3LCA2OTk0NiwgNjk5NTUsIAorICAgIDY5OTYxLCA2OTk2NywgNjk5NzMsIDY5OTc4LCA2OTk4NSwgNjk5OTEsIDY5OTk5LCA3MDAwNiwgNzAwMTIsIDEzNzMyLCAKKyAgICA3MDAxNywgNzAwMjMsIDcwMDI3LCAxNTY0NiwgNzAwMzEsIDcwMDM2LCA3MDA0NiwgNzAwNTUsIDcwMDYxLCA3MDA2NywgCisgICAgNzAwNzUsIDcwMDgyLCA3MDA4NiwgNzAwOTAsIDcwMDk3LCA3MDEwMywgNzAxMTEsIDcwMTE4LCA3MDEyNCwgNzAxMzUsIAorICAgIDcwMTM5LCA3MDE0MywgNzAxNDcsIDcwMTUwLCA3MDE1NiwgNzAxNjEsIDcwMTY2LCA3MDE3MCwgNzAxNzQsIDcwMTgzLCAKKyAgICA3MDE5MSwgNzAxOTgsIDcwMjA0LCA3MDIxMSwgMjYxODksIDQzODczLCA3MDIxNiwgNzAyMjQsIDcwMjI4LCA3MDIzMiwgCisgICAgNzAyMzUsIDcwMjQzLCA3MDI1MCwgNzAyNTYsIDcwMjY1LCA3MDI3MywgNzAyNzksIDcwMjg0LCA3MDI4OCwgNzAyOTMsIAorICAgIDcwMjk4LCA3MDMwMiwgNzAzMDYsIDcwMzEwLCA3MDMxNSwgNzAzMjQsIDcwMzI4LCA3MDMzNSwgNDA5NDMsIDcwMzM5LCAKKyAgICA3MDM0NSwgNzAzNDksIDcwMzU3LCA3MDM2MywgNzAzNjgsIDcwMzc5LCA3MDM4NywgNzAzOTMsIDcwNDAyLCAyNDcyMiwgCisgICAgNzA0MTAsIDcwNDE3LCA3MDQyNCwgNzA0MzEsIDcwNDM4LCA3MDQ0NSwgNDcyMDMsIDE0NDI3LCA3MDQ1MiwgNzA0NTksIAorICAgIDcwNDY0LCAzODEzOSwgNDM1OSwgNzA0NzAsIDcwNDc1LCA3MDQ4MCwgNzA0ODYsIDcwNDkyLCA3MDQ5OCwgNzA1MDMsIAorICAgIDcwNTA4LCA3MDUxMywgNzA1MTgsIDcwNTI0LCA3MDUyOSwgNzA1MzUsIDcwNTQwLCA3MDU0NiwgNzA1NTEsIDcwNTU2LCAKKyAgICA3MDU2MSwgNzA1NjYsIDcwNTcxLCA3MDU3NiwgNzA1ODEsIDcwNTg3LCA3MDU5MiwgNzA1OTgsIDcwNjAzLCA3MDYwOCwgCisgICAgNzA2MTMsIDcwNjE4LCA3MDYyMywgNzA2MjgsIDcwNjM0LCA3MDYzOSwgNzA2NDQsIDcwNjQ5LCA3MDY1NCwgNzA2NTksIAorICAgIDcwNjY0LCA3MDY2OSwgNzA2NzQsIDcwNjc5LCA3MDY4NCwgNzA2OTAsIDcwNjk1LCA3MDcwMCwgNzA3MDUsIDcwNzEwLCAKKyAgICA3MDcxNSwgNzA3MjAsIDcwNzI1LCA3MDczMCwgNzA3MzYsIDcwNzQxLCA3MDc0NiwgNzA3NTEsIDcwNzU2LCA3MDc2MSwgCisgICAgNzA3NjYsIDcwNzcxLCA3MDc3NiwgNzA3ODEsIDcwNzg2LCA3MDc5MSwgNzA3OTYsIDcwODAyLCAxODM5LCAyNzIsIDcwODA3LCAKKyAgICA0MTgwMywgNzA4MTEsIDcwODE0LCA3MDgxOSwgNzA4MjMsIDcwODI2LCAzNDA0LCA3MDgzMSwgNzA4MzYsIDcwODQwLCAKKyAgICA3MDg0OSwgNzA4NjAsIDcwODc3LCA3MDg5NSwgNjk3NDEsIDcwOTAzLCA3MDkwNiwgNzA5MTYsIDcwOTIzLCA3MDkzMiwgCisgICAgNzA5NDgsIDcwOTU3LCA3MDk2NywgNzA5NzIsIDcwOTgyLCA3MDk5MSwgNzA5OTksIDcxMDEzLCA3MTAyMSwgNzEwMjUsIAorICAgIDcxMDI4LCA3MTAzNSwgNzEwNDEsIDcxMDUyLCA3MTA1OSwgNzEwNzEsIDcxMDgyLCA3MTA5MywgNzExMDIsIDcxMTA5LCAKKyAgICAxMjU5LCA3MjcsIDcxMTE5LCAyNjE4LCA3MTEyMywgNzExMjgsIDcxMTM3LCA5Mjc2LCAxOTA3MSwgMjI2NTUsIDcxMTQ1LCAKKyAgICA3MTE1MywgNzExNjcsIDcxMTgwLCA3MTE4NCwgNzExODksIDcxMTk0LCA3MTE5OSwgNzEyMDUsIDcxMjExLCA3MTIxNiwgCisgICAgODk2NiwgMTY3NDYsIDcxMjIxLCA3MTIyNSwgNzEyMzMsIDkzODQsIDcxMjM4LCA3MTI0NCwgNzEyNTMsIDcxMjYxLCAxNzE3LCAKKyAgICAxMjE4NCwgOTM1LCA2NDg5LCA3MTI2NSwgNzEyNjksIDcxMjc4LCA3MTI4OCwgMjQwNCwgMjkzODIsIDcxMjk3LCA3MTMwMywgCisgICAgMTg1NzEsIDI5Mzk3LCA3MTMwOSwgNDIwNywgMTI1NjIsIDcxMzE1LCA3MTMyMiwgNjYyMDMsIDcxMzI2LCA3MTMzMCwgCisgICAgNzEzMzYsIDcxMzQxLCA3MTM0NiwgMzYyMywgMTYwLCAzNjQ5LCA3MTM1MSwgNzEzNjMsIDcxMzY3LCA3MTM3MywgNzEzNzgsIAorICAgIDMwMTgxLCA3MTM4MiwgMTI1NTAsIDI3NTgsIDQsIDcxMzg3LCA3MTM5NywgNzE0MDgsIDcxNDE0LCA3MTQyNSwgNzE0MzIsIAorICAgIDcxNDM4LCA3MTQ0NCwgNzE0NTIsIDcxNDU5LCA3MTQ2NSwgNzE0NzUsIDcxNDg1LCA3MTQ5NSwgNzE1MDQsIDI1NTkzLCAKKyAgICAxMjcxLCA3MTUwOSwgNzE1MTMsIDcxNTE3LCA3MTUyMywgNzE1MjcsIDI3ODEsIDI3ODcsIDg5NjMsIDIyNzksIDcxNTMxLCAKKyAgICA3MTUzNSwgNzE1NDQsIDcxNTUyLCA3MTU2MywgNzE1NzEsIDcxNTc5LCA3MTU4NSwgNzE1OTAsIDcxNjAxLCA3MTYxMiwgCisgICAgNzE2MjAsIDcxNjI2LCA3MTYzMSwgMTA1MzIsIDcxNjQxLCA3MTY0OSwgNzE2NTMsIDcxNjU3LCA3MTY2MiwgNzE2NjYsIAorICAgIDcxNjc4LCAzMDU5NywgMTY2NzEsIDcxNjg1LCA3MTY5NSwgNzE3MDEsIDcxNzA3LCAxMDYzNCwgNzE3MTcsIDcxNzI4LCAKKyAgICA3MTczOSwgNzE3NDksIDcxNzU4LCA3MTc2MiwgNzE3NjksIDE3MzEsIDEwMjksIDcxNzc5LCA3MTc4NCwgNzE3OTIsIAorICAgIDY2MDA5LCA3MTgwMCwgNzE4MDUsIDcxODE2LCA3MTgyMywgNzE4MzcsIDE1NDgzLCA0ODQsIDcxODQ3LCA3MTg1MSwgCisgICAgNzE4NTUsIDcxODYzLCA3MTg3MiwgNzE4ODAsIDcxODg2LCA3MTkwMCwgNzE5MDcsIDcxOTEzLCA3MTkyMiwgNzE5MjksIAorICAgIDcxOTM5LCA3MTk0NywgNzE5NTQsIDcxOTYyLCA3MTk2OSwgNDAyOSwgMTQ0LCA3MTk3NywgNzE5ODgsIDcxOTkyLCA3MjAwNCwgCisgICAgNzIwMTAsIDEyNzQzLCAxOTgsIDcyMDE1LCA5OTYxLCA3MjAyMCwgMjgyNiwgNzIwMjQsIDcyMDMxLCA3MjAzNywgNzIwNDgsIAorICAgIDcyMDU2LCA3MjA2MywgOTMzNSwgNzIwNzAsIDcyMDc5LCA3MjA4NywgNDEwNywgNzIxMDAsIDQxMjQsIDcyMTA0LCA3MjEwOSwgCisgICAgNzIxMTUsIDcyMTIwLCA3MjEyNSwgNzIxMzAsIDI4MzEsIDUyMCwgNzIxMzYsIDcyMTQ5LCA3MjE1MywgNzIxNTgsIDI4MzYsIAorICAgIDE4MzgsIDgyOSwgNzIxNjIsIDQxMjgsIDcyMTcwLCA3MjE3NiwgNzIxODAsIDg3MywgNzIxOTAsIDcyMTk5LCA3MjIwNCwgCisgICAgMzY0MCwgNzIyMDgsIDE2NDI3LCAxNjQzNCwgNTA1NjUsIDcyMjEyLCA0MTU5LCA0MDM5LCAxNDMxMCwgNzIyMjAsIDcyMjI3LCAKKyAgICA3MjIzMiwgMjU2NTcsIDcyMjM2LCA3MjI0MywgNzIyNDksIDcyMjU0LCA3MjI1OSwgMTY0NDcsIDE5MiwgNzIyNjQsIAorICAgIDcyMjc2LCA3MjI4MiwgNzIyOTAsIDI4NDgsIDE3NDksIDcyMjk4LCA3MjMwMCwgNzIzMDUsIDcyMzEwLCA3MjMxNSwgCisgICAgNzIzMjEsIDcyMzI2LCA3MjMzMSwgNzIzMzYsIDcyMzQxLCA3MjM0NiwgNzIzNTEsIDcyMzU3LCA3MjM2MiwgNzIzNjcsIAorICAgIDcyMzcyLCA3MjM3NywgNzIzODIsIDcyMzg3LCA3MjM5MiwgNzIzOTcsIDcyNDAzLCA3MjQwOCwgNzI0MTMsIDcyNDE4LCAKKyAgICA3MjQyNCwgNzI0MjksIDcyNDM1LCA3MjQ0MCwgNzI0NDUsIDcyNDUwLCA3MjQ1NSwgNzI0NjAsIDcyNDY1LCA3MjQ3MCwgCisgICAgNzI0NzYsIDcyNDgxLCA3MjQ4NywgNzI0OTIsIDcyNDk3LCA3MjUwMiwgNzI1MDcsIDcyNTEyLCA3MjUxNywgNzI1MjIsIAorICAgIDcyNTI3LCA3MjUzMywgNzI1MzksIDcyNTQ0LCA3MjU0OSwgNzI1NTUsIDcyNTYwLCA3MjU2NCwgNzI1NjgsIDcyNTczLCAKKyAgICA3MjU3OSwgNzI1ODMsIDcyNTg5LCA3MjU5NCwgNzI1OTksIDcyNjA1LCA3MjYxMCwgNzI2MTQsIDcyNjE5LCA3MjYyNCwgCisgICAgNzI2MjgsIDcyNjMxLCA3MjYzMywgNzI2MzcsIDcyNjQwLCA3MjY0NywgNzI2NTIsIDcyNjU2LCA3MjY2MSwgNzI2NjUsIAorICAgIDcyNjY5LCA3MjY3MywgNzI2ODIsIDcyNjg2LCAzNTM4MiwgNzI2ODksIDM1Mzg3LCA3MjY5NiwgNzI3MDEsIDM1MzkyLCAKKyAgICA3MjcxMCwgNzI3MTksIDM1Mzk4LCA3MjcyNCwgMzU0MDMsIDcyNzMzLCA3MjczOCwgMTI3ODYsIDcyNzQyLCA3Mjc0NywgCisgICAgNzI3NTIsIDM1NDA4LCA3Mjc1NiwgNDUzOTgsIDcyNzYwLCA3Mjc2MywgNzI3NjcsIDg2MzQsIDcyNzczLCA3Mjc3NiwgCisgICAgNzI3ODEsIDcyNzg2LCA3Mjc5MCwgMzg4NywgMzU0MTMsIDcyNzkzLCA3Mjc5NywgNzI4MDAsIDcyODExLCA3MjgxNiwgCisgICAgNzI4MjAsIDcyODI2LCA3MjgzNCwgNzI4NDcsIDcyODU1LCA3Mjg2NCwgNzI4NzAsIDcyODc1LCA3Mjg4MSwgNzI4ODUsIAorICAgIDcyODkxLCA3Mjg5NywgNzI5MDUsIDcyOTEwLCA3MjkxNCwgNzI5MjEsIDcyOTI3LCA3MjkzNSwgNzI5NDQsIDcyOTUyLCAKKyAgICAzNTQxNiwgNzI5NTksIDcyOTY5LCA3Mjk4MiwgNzI5ODcsIDcyOTkyLCA3Mjk5NiwgNzMwMDUsIDczMDExLCA3MzAxOCwgCisgICAgNzMwMjksIDczMDQxLCA3MzA0OCwgNzMwNTcsIDczMDY2LCA3MzA3NSwgNzMwODIsIDczMDg4LCA3MzA5NSwgNzMxMDMsIAorICAgIDczMTEwLCA3MzExOCwgNzMxMjcsIDczMTM1LCA3MzE0MiwgNzMxNTAsIDczMTU5LCA3MzE2NywgNzMxNzYsIDczMTg2LCAKKyAgICA3MzE5NSwgNzMyMDMsIDczMjEwLCA3MzIxOCwgNzMyMjcsIDczMjM1LCA3MzI0NCwgNzMyNTQsIDczMjYzLCA3MzI3MSwgCisgICAgNzMyODAsIDczMjkwLCA3MzI5OSwgNzMzMDksIDczMzIwLCA3MzMzMCwgNzMzMzksIDczMzQ3LCA3MzM1NCwgNzMzNjIsIAorICAgIDczMzcxLCA3MzM3OSwgNzMzODgsIDczMzk4LCA3MzQwNywgNzM0MTUsIDczNDI0LCA3MzQzNCwgNzM0NDMsIDczNDUzLCAKKyAgICA3MzQ2NCwgNzM0NzQsIDczNDgzLCA3MzQ5MSwgNzM1MDAsIDczNTEwLCA3MzUxOSwgNzM1MjksIDczNTQwLCA3MzU1MCwgCisgICAgNzM1NTksIDczNTY5LCA3MzU4MCwgNzM1OTAsIDczNjAxLCA3MzYxMywgNzM2MjQsIDczNjM0LCA3MzY0MywgNzM2NTEsIAorICAgIDczNjU4LCA3MzY2NiwgNzM2NzUsIDczNjgzLCA3MzY5MiwgNzM3MDIsIDczNzExLCA3MzcxOSwgNzM3MjgsIDczNzM4LCAKKyAgICA3Mzc0NywgNzM3NTcsIDczNzY4LCA3Mzc3OCwgNzM3ODcsIDczNzk1LCA3MzgwNCwgNzM4MTQsIDczODIzLCA3MzgzMywgCisgICAgNzM4NDQsIDczODU0LCA3Mzg2MywgNzM4NzMsIDczODg0LCA3Mzg5NCwgNzM5MDUsIDczOTE3LCA3MzkyOCwgNzM5MzgsIAorICAgIDczOTQ3LCA3Mzk1NSwgNzM5NjQsIDczOTc0LCA3Mzk4MywgNzM5OTMsIDc0MDA0LCA3NDAxNCwgNzQwMjMsIDc0MDMzLCAKKyAgICA3NDA0NCwgNzQwNTQsIDc0MDY1LCA3NDA3NywgNzQwODgsIDc0MDk4LCA3NDEwNywgNzQxMTcsIDc0MTI4LCA3NDEzOCwgCisgICAgNzQxNDksIDc0MTYxLCA3NDE3MiwgNzQxODIsIDc0MTkzLCA3NDIwNSwgNzQyMTYsIDc0MjI4LCA3NDI0MSwgNzQyNTMsIAorICAgIDc0MjY0LCA3NDI3NCwgNzQyODMsIDc0MjkxLCA3NDI5OCwgNzQzMDYsIDc0MzE1LCA3NDMyMywgNzQzMzIsIDc0MzQyLCAKKyAgICA3NDM1MSwgNzQzNTksIDc0MzY4LCA3NDM3OCwgNzQzODcsIDc0Mzk3LCA3NDQwOCwgNzQ0MTgsIDc0NDI3LCA3NDQzNSwgCisgICAgNzQ0NDQsIDc0NDU0LCA3NDQ2MywgNzQ0NzMsIDc0NDg0LCA3NDQ5NCwgNzQ1MDMsIDc0NTEzLCA3NDUyNCwgNzQ1MzQsIAorICAgIDc0NTQ1LCA3NDU1NywgNzQ1NjgsIDc0NTc4LCA3NDU4NywgNzQ1OTUsIDc0NjA0LCA3NDYxNCwgNzQ2MjMsIDc0NjMzLCAKKyAgICA3NDY0NCwgNzQ2NTQsIDc0NjYzLCA3NDY3MywgNzQ2ODQsIDc0Njk0LCA3NDcwNSwgNzQ3MTcsIDc0NzI4LCA3NDczOCwgCisgICAgNzQ3NDcsIDc0NzU3LCA3NDc2OCwgNzQ3NzgsIDc0Nzg5LCA3NDgwMSwgNzQ4MTIsIDc0ODIyLCA3NDgzMywgNzQ4NDUsIAorICAgIDc0ODU2LCA3NDg2OCwgNzQ4ODEsIDc0ODkzLCA3NDkwNCwgNzQ5MTQsIDc0OTIzLCA3NDkzMSwgNzQ5NDAsIDc0OTUwLCAKKyAgICA3NDk1OSwgNzQ5NjksIDc0OTgwLCA3NDk5MCwgNzQ5OTksIDc1MDA5LCA3NTAyMCwgNzUwMzAsIDc1MDQxLCA3NTA1MywgCisgICAgNzUwNjQsIDc1MDc0LCA3NTA4MywgNzUwOTMsIDc1MTA0LCA3NTExNCwgNzUxMjUsIDc1MTM3LCA3NTE0OCwgNzUxNTgsIAorICAgIDc1MTY5LCA3NTE4MSwgNzUxOTIsIDc1MjA0LCA3NTIxNywgNzUyMjksIDc1MjQwLCA3NTI1MCwgNzUyNTksIDc1MjY5LCAKKyAgICA3NTI4MCwgNzUyOTAsIDc1MzAxLCA3NTMxMywgNzUzMjQsIDc1MzM0LCA3NTM0NSwgNzUzNTcsIDc1MzY4LCA3NTM4MCwgCisgICAgNzUzOTMsIDc1NDA1LCA3NTQxNiwgNzU0MjYsIDc1NDM3LCA3NTQ0OSwgNzU0NjAsIDc1NDcyLCA3NTQ4NSwgNzU0OTcsIAorICAgIDc1NTA4LCA3NTUyMCwgNzU1MzMsIDc1NTQ1LCA3NTU1OCwgNzU1NzIsIDc1NTg1LCA3NTU5NywgNzU2MDgsIDc1NjE4LCAKKyAgICA3NTYyNywgNzU2MzUsIDc1NjQyLCA3NTY0NywgODQ1MSwgNzU2NTQsIDM1NDI2LCA3NTY1OSwgNzU2NjQsIDM1NDMxLCAKKyAgICA3NTY3MCwgMjI3NjMsIDM1NDM2LCA3NTY3NSwgNzU2ODEsIDc1Njg5LCA3NTY5NSwgNzU3MDEsIDc1NzA4LCA3NTcxNSwgCisgICAgNzU3MjAsIDc1NzI1LCA3NTcyOSwgNzU3MzMsIDc1NzM2LCA3NTc0MCwgNzU3NDksIDc1NzU4LCA3NTc2NiwgNzU3NzIsIAorICAgIDc1Nzg0LCA3NTc5NSwgNzU3OTksIDMxMjksIDg0MjYsIDc1ODA0LCA3NTgwNywgNzU4MDksIDc1ODEzLCA3NTgxNywgCisgICAgNzU4MjEsIDc1ODI3LCA3NTgzMiwgMjgyNDAsIDc1ODM3LCA3NTg0MSwgNzU4NDQsIDc1ODQ5LCA3NTg1MywgNzU4NjAsIAorICAgIDc1ODY2LCA3NTg3MCwgNjUwOSwgNzU4NzQsIDM1NDUzLCA3NTg3OSwgNzU4ODYsIDc1ODk1LCA3NTkwMywgNzU5MTQsIAorICAgIDc1OTIyLCA3NTkzMSwgNzU5MzksIDc1OTQ2LCA3NTk1MywgNzU5NTksIDc1OTcwLCAzNTQ1OCwgNzU5NzUsIDc1OTg2LCAKKyAgICA3NTk5OCwgNzYwMDYsIDc2MDE3LCA3NjAyNiwgNzYwMzQsIDc2MDQ1LCA3NjA1MCwgNzYwNTgsIDI1ODAsIDc2MDYzLCAKKyAgICAzNzU1MiwgNzYwNzYsIDc2MDgwLCA3NjA5MiwgNzYxMDAsIDc2MTA1LCA3NjExMywgNzYxMjQsIDE5MjkxLCA3NjEzMywgCisgICAgNzYxMzksIDc2MTQ2LCA3NjE1NCwgNzYxNjAsIDM1NDY4LCA3NjE2NSwgNDE1MywgNjM1NzAsIDc2MTcyLCA3NjE3NSwgCisgICAgNzYxODMsIDc2MTk2LCA3NjIwOSwgNzYyMjIsIDc2MjM1LCA3NjI0MiwgNzYyNTMsIDc2MjYyLCA3NjI2NywgNDcwMjAsIAorICAgIDQ3MDI1LCA3NjI3MSwgNzYyNzUsIDc2MjgzLCA3NjI5MCwgNzYyOTksIDc2MzA3LCA3NjMxMywgNzYzMjIsIDc2MzMwLCAKKyAgICA3NjMzNywgNzYzNDUsIDc2MzQ5LCA3NjM1OCwgNzYzNjcsIDc2Mzc3LCA3NjM5MCwgNzY0MDMsIDc2NDEzLCAzNTQ3MywgCisgICAgNzY0MTksIDc2NDI2LCA3NjQzMiwgNzY0MzgsIDM1NDc5LCA3NjQ0MywgNzY0NDYsIDc2NDUwLCA3NjQ1OCwgNzY0NjcsIAorICAgIDQ2NzU4LCA3NjQ3NSwgNzY0ODQsIDc2NDkyLCA3NjQ5OSwgNzY1MDcsIDc2NTE3LCA3NjUyNiwgNzY1MzUsIDM2Nzg1LCAKKyAgICA3NjU0NCwgNzY1NTUsIDc2NTcwLCA3NjU4MCwgOTk5NCwgMjM0NjcsIDc2NTg5LCA3NjU5NCwgNzY1OTksIDc2NjAzLCAKKyAgICAxNzc2MywgNzY2MDgsIDc2NjEzLCA3NjYxOSwgNzY2MjQsIDc2NjI5LCA3NjYzNSwgNzY2NDAsIDc2NjQ1LCAyMzQzMiwgCisgICAgNzY2NTAsIDc2NjU3LCA3NjY2NSwgNzY2NzMsIDc2NjgxLCA3NjY4NiwgNzY2OTMsIDc2NzAwLCA3NjcwNSwgMjI1NywgCisgICAgNzY3MDksIDc2NzEzLCA3NjcyMSwgNzY3MjksIDM1NDk2LCA3NjczNSwgNzY3NDEsIDc2NzUzLCA3Njc1OSwgNzY3NjYsIAorICAgIDc2NzcwLCA3Njc3NywgNzY3ODIsIDc2Nzg5LCA3Njc5NSwgNzY4MDIsIDc2ODEzLCA3NjgyMywgNzY4MzMsIDc2ODQ1LCAKKyAgICA3Njg1MSwgNzY4NTksIDc2ODY1LCA3Njg3NSwgNzY4ODUsIDM1NTIzLCA3Njg5NCwgNzY5MDMsIDc2OTA5LCA3NjkyMSwgCisgICAgNzY5MzIsIDc2OTM5LCA3Njk0NCwgNzY5NDgsIDc2OTU2LCA3Njk2MiwgNzY5NjcsIDc2OTcyLCA3Njk3OSwgNzY5ODcsIAorICAgIDc2OTk5LCA3NzAwOSwgNzcwMTgsIDc3MDI3LCA3NzAzNSwgNzcwNDIsIDM3NDA1LCAyNTk5MCwgNzcwNDgsIDc3MDUzLCAKKyAgICA3NzA1NywgNzcwNjEsIDc3MDY2LCA3NzA3NCwgNzcwODAsIDc3MDkxLCA3NzEwNCwgNzcxMDksIDc3MTE2LCAzNTUyOCwgCisgICAgNzcxMjEsIDc3MTMzLCA3NzE0MiwgNzcxNTAsIDc3MTYwLCA3NzE3MSwgNzcxODQsIDc3MTkxLCA3NzIwMCwgNzcyMDksIAorICAgIDc3MjE3LCA3NzIyMiwgNzcyMjgsIDE0ODEsIDc3MjMzLCA3NzIzOCwgNzcyNDMsIDc3MjQ4LCA3NzI1NCwgNzcyNTksIAorICAgIDc3MjY0LCA3NzI3MCwgNzcyNzYsIDc3MjgxLCA3NzI4NSwgNzcyOTAsIDc3Mjk1LCA3NzMwMCwgNjQxMzAsIDc3MzA1LCAKKyAgICA3NzMxMCwgNzczMTUsIDc3MzIwLCA3NzMyNiwgNzczMzIsIDc3MzM3LCA3NzM0MSwgNzczNDYsIDE3NzYyLCA3NzM1MSwgCisgICAgNzczNTcsIDc3MzYyLCA3NzM2OCwgNzczNzMsIDc3Mzc4LCA3NzM4MywgNzczODgsIDc3MzkyLCA3NzM5OCwgNzc0MDMsIAorICAgIDc3NDEyLCA3NzQxNywgNzc0MjIsIDc3NDI3LCA3NzQzMiwgNzc0MzYsIDc3NDQzLCA3NzQ0OSwgNDQ1MCwgMTg5MTQsIAorICAgIDMwOTQsIDc3NDU0LCA3NzQ1OCwgNzc0NjMsIDc3NDY3LCA3NzQ3MSwgNzc0NzUsIDUwODIwLCA3NzQ3OSwgNzc0MDQsIAorICAgIDc3NDgxLCA3NzQ5MSwgMzU1MzcsIDc3NDk0LCA3NzQ5OSwgNzc1MDgsIDc3NTE0LCA2NDc4LCAzNTU0MiwgNzc1MTgsIAorICAgIDc3NTI0LCA3NzUyOSwgNzc1MzUsIDc3NTQwLCA3NzU0NCwgNzc1NTEsIDc3NTU2LCA3NzU2NiwgNzc1NzUsIDc3NTc5LCAKKyAgICA3NzU4NSwgNzc1OTEsIDc3NTk3LCA3NzYwMSwgNzc2MDksIDc3NjE2LCA3NzYyNCwgNzc2MzIsIDM1NTQ3LCA3NzYzOSwgCisgICAgNzc2NDIsIDc3NjQ5LCA3NzY1NSwgNzc2NjAsIDc3NjY0LCA3NzY3MCwgNzc2NzgsIDc3Njg1LCA3NzY5MCwgNzc2OTQsIAorICAgIDc3NzAzLCA3NzcxMSwgNzc3MTcsIDc3NzIyLCAzNTU1MiwgNzc3MjksIDc3NzQxLCA3Nzc0OCwgNzc3NTQsIDc3NzU5LCAKKyAgICA3Nzc2NSwgNzc3NzIsIDc3Nzc4LCAyMzE3MSwgMjk4NTUsIDc3Nzg0LCA3Nzc4OSwgNzc3OTUsIDc3Nzk5LCA3NzgxMSwgCisgICAgNzc0MzcsIDc3NDQ0LCAyMzM2NCwgNzc4MjEsIDc3ODI2LCA3NzgzMywgNzc4MzksIDc3ODQ2LCA3Nzg1MiwgNzc4NjMsIAorICAgIDc3ODY4LCA3Nzg3NiwgOTY5OSwgNzc4ODEsIDc3ODg0LCA3Nzg5MCwgNzc4OTQsIDc3ODk4LCA3NzkwMSwgNzc5MDcsIAorICAgIDc3OTEzLCAzNTI5MCwgNDQ1MSwgMTA5MywgMTQ3MDYsIDc3OTIwLCA3NzkyNiwgNzc5MzIsIDc3OTM4LCA3Nzk0NCwgCisgICAgNzc5NTAsIDc3OTU2LCA3Nzk2MiwgNzc5NjgsIDc3OTczLCA3Nzk3OCwgNzc5ODMsIDc3OTg4LCA3Nzk5MywgNzc5OTgsIAorICAgIDc4MDAzLCA3ODAwOCwgNzgwMTMsIDc4MDE4LCA3ODAyMywgNzgwMjgsIDc4MDMzLCA3ODAzOSwgNzgwNDQsIDc4MDQ5LCAKKyAgICA3ODA1NSwgNzgwNjAsIDc4MDY1LCA3ODA3MSwgNzgwNzcsIDc4MDgzLCA3ODA4OSwgNzgwOTUsIDc4MTAxLCA3ODEwNywgCisgICAgNzgxMTMsIDc4MTE5LCA3ODEyNCwgNzgxMjksIDc4MTM1LCA3ODE0MCwgNzgxNDUsIDc4MTUxLCA3ODE1NiwgNzgxNjEsIAorICAgIDc4MTY2LCA3ODE3MSwgNzgxNzYsIDc4MTgxLCA3ODE4NiwgNzgxOTEsIDc4MTk2LCA3ODIwMSwgNzgyMDYsIDc4MjExLCAKKyAgICA3ODIxNywgNzgyMjIsIDc4MjI3LCA3ODIzMiwgNzgyMzgsIDc4MjQzLCA3ODI0OCwgNzgyNTMsIDc4MjU4LCA3ODI2NCwgCisgICAgNzgyNjksIDc4Mjc0LCA3ODI3OSwgNzgyODQsIDc4Mjg5LCA3ODI5NCwgNzgyOTksIDc4MzA0LCA3ODMwOSwgNzgzMTQsIAorICAgIDc4MzE5LCA3ODMyNCwgNzgzMjksIDc4MzM0LCA3ODMzOSwgNzgzNDQsIDc4MzQ5LCA3ODM1NCwgNzgzNTksIDc4MzY1LCAKKyAgICA3ODM3MCwgNzgzNzUsIDc4MzgwLCA3ODM4NSwgNzgzOTAsIDc4Mzk1LCA3ODQwMCwgMTg3NSwgMTY5LCA3ODQwNSwgNzg0MDksIAorICAgIDc4NDEzLCA3ODQxOCwgNzg0MjYsIDc4NDMwLCA3ODQzNywgNzg0NDUsIDc4NDQ5LCA3ODQ2MiwgNzg0NzAsIDc4NDc1LCAKKyAgICA3ODQ4MCwgMjg2NDksIDc4NDg0LCA3ODQ4OSwgNzg0OTMsIDc4NDk4LCA3ODUwMiwgNzg1MTAsIDc4NTE0LCAyMjc3MSwgCisgICAgNzg1MTksIDc4NTIzLCA2NjcxNCwgNzg1MjcsIDc4NTMwLCA3ODUzOCwgNzg1NDYsIDc4NTU0LCA3ODU1OSwgNzg1NjQsIAorICAgIDc4NTcxLCA3ODU3OCwgNzg1ODQsIDc4NTkwLCA3ODU5NSwgNzg2MDIsIDc4NjA3LCA3ODYxNSwgNzExNzIsIDc4NjIyLCAKKyAgICA2NjUwMCwgNzg2MjcsIDc4NjMyLCA3ODYzNiwgNzg2NDMsIDY2NTI3LCAxMjg1MywgNzg2NDksIDc4NjU0LCA3ODY1OSwgCisgICAgNzg2NjMsIDc4NjY2LCA3ODY3NSwgNzg2ODEsIDc4Njg1LCA3ODY5NSwgNzg3MDQsIDc4NzA4LCA3ODcxMSwgNzg3MTUsIAorICAgIDc4NzIyLCA3ODczNSwgNzg3NDEsIDc4NzQ5LCA3ODc1OCwgNzg3NjksIDc4NzgwLCA3ODc5MSwgNzg4MDIsIDc4ODExLCAKKyAgICA3ODgxNywgNzg4MjYsIDc4ODM0LCA3ODg0NCwgNzg4NTcsIDc4ODY1LCA3ODg3MiwgNzg4ODMsIDc4ODg5LCA3ODg5NCwgCisgICAgNzg4OTksIDc4OTA1LCA3ODkxNSwgNzg5MjEsIDc4OTMxLCA3ODkzOCwgNzg5NDgsIDc4OTU3LCA3NzEyMywgNzg5NjUsIAorICAgIDc4OTcxLCA3ODk3OSwgNzg5ODUsIDc4OTkyLCA3OTAwMCwgNzkwMDUsIDc5MDA4LCA3OTAxMiwgNzkwMTgsIDc5MDIyLCAKKyAgICA3OTAyNSwgNzkwMzEsIDc5MDM3LCA3OTA0NSwgNzkwNTcsIDc5MDY5LCA3OTA3NiwgNzkwODEsIDc5MDg1LCA3OTA5NiwgCisgICAgNzkxMDQsIDc5MTExLCA3OTEyMywgNzkxMzEsIDc5MTM5LCA3OTE0NiwgNzkxNTIsIDc5MTU3LCA3OTE2NywgNzkxNzYsIAorICAgIDc5MTgxLCA3OTE5MSwgNzkyMDAsIDQ2MDM5LCA3OTIwNywgNzkyMTEsIDc5MjE2LCA3OTIyNCwgNzkyMzEsIDc5MjM3LCAKKyAgICA3OTI0MSwgNzkyNTEsIDc5MjYyLCA3OTI3MCwgNzkyNzcsIDc5Mjg5LCA3OTMwMSwgNzkzMTAsIDc2MDY2LCA3OTMxNywgCisgICAgNzkzMjcsIDc5MzM5LCA3OTM1MCwgNzkzNjQsIDc5MzcyLCA3OTM4MiwgNzkzODksIDc5Mzk3LCA3OTQxMCwgNzk0MjIsIAorICAgIDc5NDMxLCA3OTQzOSwgNzk0NDksIDc5NDYwLCA3OTQ3MiwgNzk0ODEsIDc5NDkxLCA3OTUwMSwgNzk1MTAsIDc5NTE3LCAKKyAgICA3OTUyNiwgNzk1NDEsIDc5NTQ5LCA3OTU1OSwgNzk1NjgsIDc5NTc2LCA3OTU4OSwgNjM1NDAsIDc5NjA0LCA3OTYxNCwgCisgICAgNzk2MjMsIDc5NjM1LCA3OTY0NSwgNzk2NTcsIDc5NjY4LCA3OTY4MiwgNzk2OTYsIDc5NzEwLCA3OTcyNCwgNzk3MzgsIAorICAgIDc5NzUyLCA3OTc2NiwgNzk3ODAsIDc5Nzk0LCA3OTgwOCwgNzk4MjIsIDc5ODM2LCA3OTg1MCwgNzk4NjQsIDc5ODc4LCAKKyAgICA3OTg5MiwgNzk5MDYsIDc5OTIwLCA3OTkzNCwgNzk5NDgsIDc5OTYyLCA3OTk3NiwgNzk5OTAsIDgwMDA0LCA4MDAxOCwgCisgICAgODAwMzIsIDgwMDQ2LCA4MDA2MCwgODAwNzQsIDgwMDg4LCA4MDEwMiwgODAxMTYsIDgwMTMwLCA4MDE0NCwgODAxNTgsIAorICAgIDgwMTcyLCA4MDE4NiwgODAyMDAsIDgwMjE0LCA4MDIyOCwgODAyNDIsIDgwMjU2LCA4MDI3MCwgODAyODQsIDgwMjk4LCAKKyAgICA4MDMxMiwgODAzMjYsIDgwMzQwLCA4MDM1NCwgODAzNjgsIDgwMzgyLCA4MDM5NiwgODA0MTAsIDgwNDI0LCA4MDQzOCwgCisgICAgODA0NTIsIDgwNDY2LCA4MDQ4MCwgODA0OTQsIDgwNTA4LCA4MDUyMiwgODA1MzYsIDgwNTUwLCA4MDU2NCwgODA1NzgsIAorICAgIDgwNTkyLCA4MDYwNiwgODA2MjAsIDgwNjM0LCA4MDY0OCwgODA2NjIsIDgwNjc2LCA4MDY5MCwgODA3MDQsIDgwNzE4LCAKKyAgICA4MDczMiwgODA3NDYsIDgwNzYwLCA4MDc3NCwgODA3ODgsIDgwODAyLCA4MDgxNiwgODA4MzAsIDgwODQ0LCA4MDg1OCwgCisgICAgODA4NzIsIDgwODg2LCA4MDkwMCwgODA5MTQsIDgwOTI4LCA4MDk0MiwgODA5NTYsIDgwOTcwLCA4MDk4NCwgODA5OTgsIAorICAgIDgxMDEyLCA4MTAyNiwgODEwNDAsIDgxMDU0LCA4MTA2OCwgODEwODIsIDgxMDk2LCA4MTExMCwgODExMjQsIDgxMTM4LCAKKyAgICA4MTE1MiwgODExNjYsIDgxMTgwLCA4MTE5NCwgODEyMDgsIDgxMjIyLCA4MTIzNiwgODEyNTAsIDgxMjY0LCA4MTI3OCwgCisgICAgODEyOTIsIDgxMzA2LCA4MTMyMCwgODEzMzQsIDgxMzQ4LCA4MTM2MiwgODEzNzYsIDgxMzkwLCA4MTQwNCwgODE0MTgsIAorICAgIDgxNDMyLCA4MTQ0NiwgODE0NjAsIDgxNDc0LCA4MTQ4OCwgODE1MDIsIDgxNTE2LCA4MTUzMCwgODE1NDQsIDgxNTU4LCAKKyAgICA4MTU3MiwgODE1ODYsIDgxNjAwLCA4MTYxNCwgODE2MjgsIDgxNjQyLCA4MTY1NiwgODE2NzAsIDgxNjg0LCA4MTY5OCwgCisgICAgODE3MTIsIDgxNzI2LCA4MTc0MCwgODE3NTQsIDgxNzY4LCA4MTc4MiwgODE3OTYsIDgxODEwLCA4MTgyNCwgODE4MzgsIAorICAgIDgxODUyLCA4MTg2NiwgODE4ODAsIDgxODk0LCA4MTkwOCwgODE5MjIsIDgxOTM2LCA4MTk1MCwgODE5NjQsIDgxOTc4LCAKKyAgICA4MTk5MiwgODIwMDYsIDgyMDIwLCA4MjAzNCwgODIwNDgsIDgyMDYyLCA4MjA3NiwgODIwOTAsIDgyMTA0LCA4MjExOCwgCisgICAgODIxMzIsIDgyMTQ2LCA4MjE2MCwgODIxNzQsIDgyMTg4LCA4MjIwMiwgODIyMTYsIDgyMjMwLCA4MjI0NCwgODIyNTgsIAorICAgIDgyMjcyLCA4MjI4NiwgODIzMDAsIDgyMzE0LCA4MjMyOCwgODIzNDIsIDgyMzU2LCA4MjM3MCwgODIzODQsIDgyMzk4LCAKKyAgICA4MjQxMiwgODI0MjYsIDgyNDQwLCA4MjQ1NCwgODI0NjgsIDgyNDgyLCA4MjQ5NiwgODI1MTAsIDgyNTI0LCA4MjUzOCwgCisgICAgODI1NTIsIDgyNTY2LCA4MjU4MCwgODI1OTQsIDgyNjA4LCA4MjYyMiwgODI2MzYsIDgyNjUwLCA4MjY2NCwgODI2NzgsIAorICAgIDgyNjkyLCA4MjcwNiwgODI3MjAsIDgyNzM0LCA4Mjc0OCwgODI3NjIsIDgyNzc2LCA4Mjc5MCwgODI4MDQsIDgyODE4LCAKKyAgICA4MjgzMiwgODI4NDYsIDgyODYwLCA4Mjg3NCwgODI4ODgsIDgyOTAyLCA4MjkxNiwgODI5MzAsIDgyOTQ0LCA4Mjk1OCwgCisgICAgODI5NzIsIDgyOTg2LCA4MzAwMCwgODMwMTQsIDgzMDI4LCA4MzA0MiwgODMwNTYsIDgzMDcwLCA4MzA4NCwgODMwOTgsIAorICAgIDgzMTEyLCA4MzEyNiwgODMxNDAsIDgzMTU0LCA4MzE2OCwgODMxODIsIDgzMTk2LCA4MzIxMCwgODMyMjQsIDgzMjM4LCAKKyAgICA4MzI1MiwgODMyNjYsIDgzMjgwLCA4MzI5NCwgODMzMDgsIDgzMzIyLCA4MzMzNiwgODMzNTAsIDgzMzY0LCA4MzM3OCwgCisgICAgODMzOTIsIDgzNDA2LCA4MzQyMCwgODM0MzQsIDgzNDQ4LCA4MzQ2MiwgODM0NzYsIDgzNDkwLCA4MzUwNCwgODM1MTgsIAorICAgIDgzNTMyLCA4MzU0NiwgODM1NjAsIDgzNTc0LCA4MzU4OCwgODM2MDIsIDgzNjE2LCA4MzYzMCwgODM2NDQsIDgzNjU4LCAKKyAgICA4MzY3MiwgODM2ODYsIDgzNzAwLCA4MzcxNCwgODM3MjgsIDgzNzQyLCA4Mzc1NiwgODM3NzAsIDgzNzg0LCA4Mzc5OCwgCisgICAgODM4MTIsIDgzODI2LCA4Mzg0MCwgODM4NTQsIDgzODY4LCA4Mzg4MiwgODM4OTYsIDgzOTEwLCA4MzkyNCwgODM5MzgsIAorICAgIDgzOTUyLCA4Mzk2NiwgODM5ODAsIDgzOTk0LCA4NDAwOCwgODQwMjIsIDg0MDM2LCA4NDA1MCwgODQwNjQsIDg0MDc4LCAKKyAgICA4NDA5MiwgODQxMDYsIDg0MTIwLCA4NDEzNCwgODQxNDgsIDg0MTYyLCA4NDE3NiwgODQxOTAsIDg0MjA0LCA4NDIxOCwgCisgICAgODQyMzIsIDg0MjQ2LCA4NDI2MCwgODQyNzQsIDg0Mjg4LCA4NDMwMiwgODQzMTYsIDg0MzMwLCA4NDM0NCwgODQzNTgsIAorICAgIDg0MzcyLCA4NDM4NiwgODQ0MDAsIDg0NDE0LCA4NDQyOCwgODQ0NDIsIDg0NDU2LCA4NDQ3MCwgODQ0ODQsIDg0NDk4LCAKKyAgICA4NDUxMiwgODQ1MjYsIDg0NTQwLCA4NDU1NCwgODQ1NjgsIDg0NTgyLCA4NDU5NiwgODQ2MTAsIDg0NjI0LCA4NDYzOCwgCisgICAgODQ2NTIsIDg0NjY2LCA4NDY4MCwgODQ2OTQsIDg0NzA4LCA4NDcyMiwgODQ3MzYsIDg0NzUwLCA4NDc2NCwgODQ3NzgsIAorICAgIDg0NzkyLCA4NDgwNiwgODQ4MjAsIDg0ODM0LCA4NDg0OCwgODQ4NjIsIDg0ODc2LCA4NDg5MCwgODQ5MDQsIDg0OTE4LCAKKyAgICA4NDkzMiwgODQ5NDYsIDg0OTYwLCA4NDk3NCwgODQ5ODgsIDg1MDAyLCA4NTAxNiwgODUwMzAsIDg1MDQ0LCA4NTA1OCwgCisgICAgODUwNzIsIDg1MDg2LCA4NTEwMCwgODUxMTQsIDg1MTI4LCA4NTE0MiwgODUxNTYsIDg1MTcwLCA4NTE4NCwgODUxOTgsIAorICAgIDg1MjEyLCA4NTIyNiwgODUyNDAsIDg1MjU0LCA4NTI2OCwgODUyODIsIDg1Mjk2LCA4NTMxMCwgODUzMjQsIDg1MzM4LCAKKyAgICA4NTM1MiwgODUzNjYsIDg1MzgwLCA4NTM5NCwgODU0MDgsIDg1NDIyLCA4NTQzNiwgODU0NTAsIDg1NDY0LCA4NTQ3OCwgCisgICAgODU0OTIsIDg1NTA2LCA4NTUyMCwgODU1MzQsIDg1NTQ4LCA4NTU2MiwgODU1NzYsIDg1NTkwLCA4NTYwNCwgODU2MTgsIAorICAgIDg1NjMyLCA4NTY0NiwgODU2NjAsIDg1Njc0LCA4NTY4OCwgODU3MDIsIDg1NzE2LCA4NTczMCwgODU3NDQsIDg1NzU4LCAKKyAgICA4NTc3MiwgODU3ODYsIDg1ODAwLCA4NTgxNCwgODU4MjgsIDg1ODQyLCA4NTg1NiwgODU4NzAsIDg1ODg0LCA4NTg5OCwgCisgICAgODU5MTIsIDg1OTI2LCA4NTk0MCwgODU5NTQsIDg1OTY4LCA4NTk4MiwgODU5OTYsIDg2MDEwLCA4NjAyNCwgODYwMzgsIAorICAgIDg2MDUyLCA4NjA2NiwgODYwODAsIDg2MDk0LCA4NjEwOCwgODYxMjIsIDg2MTM2LCA4NjE1MCwgODYxNjQsIDg2MTc4LCAKKyAgICA4NjE5MiwgODYyMDYsIDg2MjIwLCA4NjIzNCwgODYyNDgsIDg2MjYyLCA4NjI3NiwgODYyOTAsIDg2MzA0LCA4NjMxOCwgCisgICAgODYzMzIsIDg2MzQ2LCA4NjM2MCwgODYzNzQsIDg2Mzg4LCA4NjQwMiwgODY0MTYsIDg2NDMwLCA4NjQ0NCwgODY0NTgsIAorICAgIDg2NDcyLCA4NjQ4NiwgODY1MDAsIDg2NTE0LCA4NjUyOCwgODY1NDIsIDg2NTU2LCA4NjU3MCwgODY1ODQsIDg2NTk4LCAKKyAgICA4NjYxMiwgODY2MjYsIDg2NjQwLCA4NjY1NCwgODY2NjgsIDg2NjgyLCA4NjY5NiwgODY3MTAsIDg2NzI0LCA4NjczOCwgCisgICAgODY3NTIsIDg2NzY2LCA4Njc4MCwgODY3OTQsIDg2ODA4LCA4NjgyMiwgODY4MzYsIDg2ODUwLCA4Njg2NCwgODY4NzgsIAorICAgIDg2ODkyLCA4NjkwNiwgODY5MjAsIDg2OTM0LCA4Njk0OCwgODY5NjIsIDg2OTc2LCA4Njk5MCwgODcwMDQsIDg3MDE4LCAKKyAgICA4NzAzMiwgODcwNDYsIDg3MDYwLCA4NzA3NCwgODcwODgsIDg3MTAyLCA4NzExNiwgODcxMzAsIDg3MTQ0LCA4NzE1OCwgCisgICAgODcxNzIsIDg3MTg2LCA4NzIwMCwgODcyMTQsIDg3MjI4LCA4NzI0MiwgODcyNTYsIDg3MjcwLCA4NzI4NCwgODcyOTgsIAorICAgIDg3MzEyLCA4NzMyNiwgODczNDAsIDg3MzU0LCA4NzM2OCwgODczODIsIDg3Mzk2LCA4NzQxMCwgODc0MjQsIDg3NDM4LCAKKyAgICA4NzQ1MiwgODc0NjYsIDg3NDgwLCA4NzQ5NCwgODc1MDgsIDg3NTIyLCA4NzUzNiwgODc1NTAsIDg3NTY0LCA4NzU3OCwgCisgICAgODc1OTIsIDg3NjA2LCA4NzYyMCwgODc2MzQsIDg3NjQ4LCA4NzY2MiwgODc2NzYsIDg3NjkwLCA4NzcwNCwgODc3MTgsIAorICAgIDg3NzMyLCA4Nzc0NiwgODc3NjAsIDg3Nzc0LCA4Nzc4OCwgODc4MDIsIDg3ODE2LCA4NzgzMCwgODc4NDQsIDg3ODU4LCAKKyAgICA4Nzg3MiwgODc4ODYsIDg3OTAwLCA4NzkxNCwgODc5MjgsIDg3OTQyLCA4Nzk1NiwgODc5NzAsIDg3OTg0LCA4Nzk5OCwgCisgICAgODgwMTIsIDg4MDI2LCA4ODA0MCwgODgwNTQsIDg4MDY4LCA4ODA4MiwgODgwOTYsIDg4MTEwLCA4ODEyNCwgODgxMzgsIAorICAgIDg4MTUyLCA4ODE2NiwgODgxODAsIDg4MTk0LCA4ODIwOCwgODgyMjIsIDg4MjM2LCA4ODI1MCwgODgyNjQsIDg4Mjc4LCAKKyAgICA4ODI5MiwgODgzMDYsIDg4MzIwLCA4ODMzNCwgODgzNDgsIDg4MzYyLCA4ODM3NiwgODgzOTAsIDg4NDA0LCA4ODQxOCwgCisgICAgODg0MzIsIDg4NDQ2LCA4ODQ2MCwgODg0NzQsIDg4NDg4LCA4ODUwMiwgODg1MTYsIDg4NTMwLCA4ODU0NCwgODg1NTgsIAorICAgIDg4NTcyLCA4ODU4NiwgODg2MDAsIDg4NjE0LCA4ODYyOCwgODg2NDIsIDg4NjU2LCA4ODY3MCwgODg2ODQsIDg4Njk4LCAKKyAgICA4ODcxMiwgODg3MjYsIDg4NzQwLCA4ODc1NCwgODg3NjgsIDg4NzgyLCA4ODc5NiwgODg4MTAsIDg4ODI0LCA4ODgzOCwgCisgICAgODg4NTIsIDg4ODY2LCA4ODg4MCwgODg4OTQsIDg4OTA4LCA4ODkyMiwgODg5MzYsIDg4OTUwLCA4ODk2NCwgODg5NzgsIAorICAgIDg4OTkyLCA4OTAwNiwgODkwMjAsIDg5MDM0LCA4OTA0OCwgODkwNjIsIDg5MDc2LCA4OTA5MCwgODkxMDQsIDg5MTE4LCAKKyAgICA4OTEzMiwgODkxNDYsIDg5MTYwLCA4OTE3NCwgODkxODgsIDg5MjAyLCA4OTIxNiwgODkyMzAsIDg5MjQ0LCA4OTI1OCwgCisgICAgODkyNzIsIDg5Mjg2LCA4OTMwMCwgODkzMTQsIDg5MzI4LCA4OTM0MiwgODkzNTYsIDg5MzcwLCA4OTM4NCwgODkzOTgsIAorICAgIDg5NDEyLCA4OTQyNiwgODk0NDAsIDg5NDU0LCA4OTQ2OCwgODk0ODIsIDg5NDk2LCA4OTUxMCwgODk1MjQsIDg5NTM4LCAKKyAgICA4OTU1MiwgODk1NjYsIDg5NTgwLCA4OTU5NCwgODk2MDgsIDg5NjIyLCA4OTYzNiwgODk2NTAsIDg5NjY0LCA4OTY3OCwgCisgICAgODk2OTIsIDg5NzA2LCA4OTcyMCwgODk3MzQsIDg5NzQ4LCA4OTc2MiwgODk3NzYsIDg5NzkwLCA4OTgwNCwgODk4MTgsIAorICAgIDg5ODMyLCA4OTg0NiwgODk4NjAsIDg5ODc0LCA4OTg4OCwgODk5MDIsIDg5OTE2LCA4OTkzMCwgODk5NDQsIDg5OTU4LCAKKyAgICA4OTk3MiwgODk5ODYsIDkwMDAwLCA5MDAxNCwgOTAwMjgsIDkwMDQyLCA5MDA1NiwgOTAwNzAsIDkwMDg0LCA5MDA5OCwgCisgICAgOTAxMTIsIDkwMTI2LCA5MDE0MCwgOTAxNTQsIDkwMTY4LCA5MDE4MiwgOTAxOTYsIDkwMjEwLCA5MDIyNCwgOTAyMzgsIAorICAgIDkwMjQ5LCA5MDI2MCwgOTAyNzAsIDkwMjgxLCA5MDI4OSwgOTAyOTUsIDkwMzA1LCA5MDMxMywgOTAzMTksIDMxNjIxLCAKKyAgICA5MDMyNCwgOTAzMzAsIDkwMzM5LCA5MDM1MSwgOTAzNTYsIDkwMzYzLCAxMDU0NiwgMTkzMTEsIDkwMzY5LCA5MDM3OCwgCisgICAgOTAzODMsIDkwMzg3LCA5MDM5NCwgOTA0MDAsIDkwNDA1LCA5MDQxMCwgOTA0MTgsIDkwNDI2LCAxMzIyOSwgOTA0MzAsIAorICAgIDkwNDMzLCA5MDQzNSwgOTA0NDIsIDkwNDQ4LCA5MDQ1OSwgOTA0NjQsIDkwNDY4LCA5MDQ3MywgOTA0ODAsIDkwNDg2LCAKKyAgICA5MDQ5MSwgOTA0OTksIDcxNzQxLCA3MTc1MSwgOTA1MDUsIDkwNTEyLCA5MDUyMiwgMTE2NDEsIDkwNTI5LCA5MDUzNCwgCisgICAgMzE4NTUsIDkwNTQzLCA5MDU0OCwgOTA1NTUsIDkwNTY1LCA5MDU3MywgOTA1ODEsIDkwNTkwLCA5MDU5NiwgOTA2MDIsIAorICAgIDkwNjA5LCA5MDYxNiwgOTA2MjEsIDkwNjI1LCA5MDYzMywgNjY1NDQsIDkwNjM4LCA5MDY0NywgOTA2NTUsIDkwNjYyLCAKKyAgICA5MDY2NywgOTA2NzEsIDkwNjgwLCA5MDY4NiwgOTA2ODksIDkwNjkzLCA5MDcwMiwgOTA3MTIsIDc4NDU3LCA5MDcyMSwgCisgICAgOTA3MjUsIDkwNzMzLCA5MDczNywgOTA3NDMsIDkwNzU0LCA5MDc2NCwgMTkzMjAsIDkwNzc1LCA5MDc4NCwgOTA3OTIsIAorICAgIDkwODAwLCA5MDgwNywgNjY1NjMsIDkxOTIsIDkwODE1LCA5MDgxOSwgOTA4MjgsIDkwODM1LCA5MDgzOCwgMjk3MzYsIAorICAgIDkwODQxLCA5MDg0NSwgOTA4NTAsIDkwODY3LCA5MDg3OSwgMTE1OTksIDkwODkxLCA5MDg5NiwgOTA5MDEsIDkwOTA2LCAKKyAgICAyMjg2MSwgOTA5MTAsIDkwOTE1LCA5MDkyMCwgOTA5MjYsIDkwOTMxLCA2MTQyLCA5MDkzNiwgMjI4NjUsIDkwOTQxLCAKKyAgICA5MDk0NiwgOTA5NTIsIDkwOTU5LCA5MDk2NCwgOTA5NjksIDkwOTc1LCA5MDk4MSwgOTA5ODcsIDkwOTkyLCA5MDk5OCwgCisgICAgOTEwMDIsIDkxMDE2LCA5MTAyNCwgOTEwMzIsIDkxMDM4LCA5MTA0MywgOTEwNTAsIDkxMDYwLCA5MTA2OSwgOTEwNzQsIAorICAgIDkxMDc5LCA5MTA4NCwgOTEwOTIsIDkxMDk3LCA5MTEwMywgOTExMDgsIDkxMTE3LCA2NTIzMiwgOTExMjIsIDkxMTI1LCAKKyAgICA5MTE0MywgOTExNjIsIDkxMTc1LCA5MTE4OSwgOTEyMDUsIDkxMjEyLCA5MTIxOSwgOTEyMjgsIDkxMjM1LCA5MTI0MSwgCisgICAgOTEyNDgsIDkxMjUzLCA5MTI1OSwgOTEyNjUsIDkxMjczLCA5MTI3OSwgOTEyODQsIDkxMjg5LCA5MTMwNSwgMTE2MTIsIAorICAgIDkxMzE5LCA5MTMyNiwgOTEzMzQsIDkxMzQwLCA5MTM0NCwgOTEzNDcsIDkxMzUyLCA5MTM1NywgOTEzNjQsIDkxMzY5LCAKKyAgICA5MTM3OCwgOTEzODQsIDkxMzg5LCA5MTM5NSwgOTE0MDEsIDkxNDEwLCA5MTQxOSwgMzg5NTUsIDkxNDI0LCA5MTQzMiwgCisgICAgOTE0NDEsIDEyODgyLCA5MTQ1MCwgOTE0NTYsIDkxNDY0LCA5MTQ3MCwgOTE0NzYsIDkxNDgyLCA5MTQ4NywgOTE0OTQsIAorICAgIDkxNTAwLCAxMjg5MywgOTE1MDUsIDkxNTA4LCA5MTUxMywgMzU1NzksIDkxNTIzLCA5MTUzMiwgOTE1MzcsIDkxNTQzLCAKKyAgICA5MTU0OCwgOTE1NTYsIDkxNTYzLCA5MTU3NCwgOTE1ODQsIDkxNTg5LCA5MTU5NywgNzEwOTUsIDkxNjAyLCA5MTYwOCwgCisgICAgOTE2MTMsIDkxNjIwLCA5MTYyOSwgOTE2MzcsIDkxNjQxLCA5MTY0NywgOTE2NTMsIDkxNjYwLCA5MTY2NiwgOTE2NzAsIAorICAgIDE4NjgyLCAzMTAzLCA5MTY3NSwgOTE2NzksIDkxNjgzLCA5MTY4OSwgOTE2OTgsIDkxNzA0LCA5MTcxMSwgOTE3MTUsIAorICAgIDkxNzM2LCA5MTc1OCwgOTE3NzQsIDkxNzkxLCA5MTgxMCwgOTE4MTksIDkxODI5LCA5MTgzNywgOTE4NDQsIDkxODUxLCAKKyAgICA5MTg1NywgMjk1OTcsIDkxODcxLCA5MTg3NSwgOTE4ODEsIDkxODg5LCA5MTkwMSwgOTE5MDcsIDkxOTE1LCA5MTkyMiwgCisgICAgOTE5MjcsIDkxOTMyLCA5MTkzNiwgOTE5NDQsIDkxOTUxLCA5MTk1NSwgOTE5NjEsIDkxOTY3LCA5MTk3MiwgMzcyOSwgCisgICAgNDcyMjAsIDkxOTc4LCA5MTk4MiwgOTE5ODYsIDkxOTkwLCA5MTk5NSwgOTIwMDAsIDkyMDA1LCA5MjAxMSwgOTIwMTcsIAorICAgIDkyMDIzLCA5MjAzMCwgOTIwMzYsIDkyMDQzLCA5MjA0OSwgOTIwNTUsIDkyMDYwLCA5MjA2NiwgOTIwNzEsIDkyMDc1LCAKKyAgICA5MjA4MCwgOTIwODQsIDkyMDg5LCA0NzIzNSwgOTIwOTMsIDkyMDk4LCA5MjEwNiwgOTIxMTAsIDkyMTE1LCA5MjEyMiwgCisgICAgOTIxMzEsIDkyMTM3LCA5MjE0NiwgOTIxNTAsIDkyMTU3LCA5MjE2MSwgOTIxNjQsIDkyMTcxLCA5MjE3NywgOTIxODYsIAorICAgIDkyMTk2LCA5MjIwNiwgOTIyMTEsIDkyMjE1LCA5MjIyMiwgOTIyMzAsIDkyMjM5LCA5MjI0MywgOTIyNTEsIDkyMjU3LCAKKyAgICA5MjI2MiwgOTIyNjcsIDkyMjczLCA5MjI3OSwgOTIyODQsIDkyMjg4LCA5MjI5NCwgOTIyOTksIDkyMzAzLCA5MjMwNywgCisgICAgOTIzMTAsIDkyMzE1LCA5MjMyMywgOTIzMzMsIDkyMzM5LCA5MjM0NCwgOTIzNTQsIDQ0NDkyLCA5MjM2MiwgOTIzNzQsIAorICAgIDkyMzgwLCA5MjM4NCwgOTIzOTAsIDkyNDAyLCA5MjQxMywgOTI0MjAsIDkyNDI2LCA5MjQzMywgOTI0NDAsIDkyNDUyLCAKKyAgICA5MjQ1OSwgOTI0NjUsIDIyOTM5LCA5MjQ2OSwgOTI0NzcsIDkyNDgzLCA5MjQ5MCwgOTI0OTYsIDkyNTAyLCA5MjUwOCwgCisgICAgOTI1MTMsIDkyNTE4LCA5MjUyMywgOTI1MjcsIDkyNTM2LCA5MjU0NCwgOTI1NTUsIDczNzQsIDkyNTYwLCAxODEzMSwgCisgICAgOTI1NjYsIDkyNTcwLCA5MjU3NCwgOTI1NzgsIDkyNTg2LCA5MjU5NSwgOTI1OTksIDkyNjA2LCA5MjYxNSwgOTI2MjMsIAorICAgIDkyNjM2LCA5MjY0MiwgOTIwODUsIDMyNzM5LCA5MjY0NywgOTI2NDksIDkyNjU0LCA5MjY1OSwgOTI2NjQsIDkyNjY5LCAKKyAgICA5MjY3NCwgOTI2NzksIDkyNjg0LCA5MjY4OSwgOTI2OTQsIDkyNjk5LCA5MjcwNCwgOTI3MDksIDkyNzE0LCA5MjcxOSwgCisgICAgOTI3MjUsIDkyNzMwLCA5MjczNSwgOTI3NDAsIDkyNzQ1LCA5Mjc1MCwgOTI3NTUsIDkyNzYwLCA5Mjc2NSwgOTI3NzEsIAorICAgIDkyNzc3LCA5Mjc4MywgOTI3ODgsIDkyNzkzLCA5MjgwNSwgOTI4MTAsIDE4ODEsIDU0LCA5MjgxNSwgOTI4MjAsIDM1NTg1LCAKKyAgICA5MjgyNCwgMzU1OTAsIDM1NTk1LCAzNTYwMSwgMzU2MDYsIDkyODI4LCAzNTYxMSwgMjM5OTQsIDkyODUwLCA5Mjg1NCwgCisgICAgOTI4NTgsIDkyODYzLCA5Mjg2NywgMzU2MTUsIDkyODcxLCA5Mjg3OSwgOTI4ODYsIDkyODkyLCAzNTYyMCwgOTI5MDIsIAorICAgIDkyOTA1LCA5MjkxMCwgOTI5MTQsIDkyOTIzLCAxMDM1NiwgOTI5MzEsIDM1NjI1LCAyMzg0NSwgOTI5MzQsIDkyOTM4LCAKKyAgICA5Mjk0NiwgMTM5MywgOTI5NTEsIDM1NjM2LCA5Mjk1NCwgOTI5NTksIDI3OTk1LCAyODAwNSwgMzg1NzgsIDkyOTY0LCAKKyAgICA5Mjk2OSwgOTI5NzQsIDkyOTc5LCA5Mjk4NSwgOTI5OTAsIDkyOTk5LCA5MzAwNCwgOTMwMTMsIDkzMDIxLCA5MzAyOCwgCisgICAgOTMwMzQsIDkzMDM5LCA5MzA0NCwgOTMwNDksIDkzMDU5LCA5MzA2OCwgOTMwNzYsIDkzMDgxLCA5MzA4OSwgOTMwOTMsIAorICAgIDkzMTAxLCA5MzEwNSwgOTMxMTIsIDkzMTIwLCAzNTQ0NCwgNDE2MzQsIDkzMTI3LCA5MzEzMywgOTMxMzgsIDkzMTQzLCAKKyAgICAxMzI2NCwgMzA4MjAsIDkzMTQ4LCA5MzE1MywgOTMxNjAsIDkzMTY2LCA5MzE3MSwgOTMxNzksIDkzMTg5LCA5MzE5OSwgCisgICAgOTMyMDUsIDkzMjEwLCA5MzIxNiwgMTkzNDIsIDkzMjIzLCAzOTQ2MiwgOTMyMzYsIDkzMjQxLCA5MzI0NywgMzM3MzcsIAorICAgIDY5NTc5LCA5MzI2MCwgOTMyNjQsIDkzMjczLCA5MzI4MiwgOTMyODksIDkzMjk1LCA5MzMwMywgOTMzMTIsIDkzMzE5LCAKKyAgICA0MTc1NCwgOTMzMjUsIDkzMzI4LCA5MzMzMiwgOTMzMzYsIDkzMzQwLCAyODE0MSwgOTMzNDYsIDkzMzUzLCA5MzM1OSwgCisgICAgOTMzNjcsIDkzMzcyLCA5MzM3NiwgMjYxMzcsIDkzMzgyLCA5MzM4NSwgOTMzOTMsIDkzNDAwLCA5MzQwOCwgOTM0MjEsIAorICAgIDkzNDM1LCA5MzQ0MiwgOTM0NDgsIDkzNDU1LCA5MzQ2MSwgMzU2NTAsIDkzNDY1LCA5MzQ3MiwgOTM0ODAsIDkzNDg4LCAKKyAgICA5MzQ5NCwgMzU2NTUsIDkzNTAyLCA5MzUwOCwgOTM1MTMsIDkzNTIzLCA5MzUyOSwgOTM1MzgsIDMzNTMyLCAzODAxMCwgCisgICAgOTM1NDYsIDkzNTUxLCA5MzU1NiwgOTM1NjAsIDkzNTY1LCA5MzU2OSwgOTM1NzcsIDkzNTgyLCAxNjQxOSwgNDQ1MDUsIAorICAgIDkzNTg2LCA5MzU5MSwgMzU2NjAsIDY4MTIxLCA5MzU5NSwgOTM2MDAsIDkzNjA0LCA5MzYxMSwgOTM2MjAsIDkzNjI0LCAKKyAgICA5MzYzMiwgOTM2MzgsIDkzNjQzLCA5MzY0OSwgODQ5MywgOTM2NTQsIDkzNjYwLCA5MzY2NSwgOTM2NzAsIDkzNjgxLCAKKyAgICA5MzY5MCwgOTM3MDIsIDkzNzE3LCAzNTkzNiwgOTM3MjMsIDE4MjUwLCAzNTY2NCwgOTM3MjcsIDkzNzM0LCA5Mzc0MCwgCisgICAgMjYyNTMsIDkzNzQ0LCA5Mzc1MSwgOTM3NjAsIDkzNzY3LCA5Mzc3NiwgOTM3ODIsIDkzNzg3LCA5Mzc5NSwgOTM4MDEsIAorICAgIDkzODA2LCAzNTY3NCwgOTM4MTEsIDkzODIwLCA5MjQwOCwgOTM4MjksIDkzODM2LCA5Mzg0MiwgOTM4NDgsIDkzODU3LCAKKyAgICA5Mzg2NywgOTM4NzUsIDkzODgyLCA5Mzg4NiwgMzU2NzksIDkzODg5LCAzNTY4NSwgMzU2OTEsIDkzODk0LCA5MzkwMiwgCisgICAgOTM5MTAsIDkzOTIwLCA5MzkyOSwgOTM5MzcsIDkzOTQ0LCA5Mzk1NCwgMzU2OTYsIDkzOTU4LCA5Mzk2MCwgOTM5NjQsIAorICAgIDkzOTY5LCA5Mzk3MywgOTM5NzcsIDkzOTgzLCA5Mzk4OCwgOTM5OTIsIDk0MDAzLCA5NDAwOCwgOTQwMTMsIDMxMDgsIAorICAgIDk0MDE3LCA5NDAyNCwgOTQwMjgsIDk0MDM3LCA5NDA0NSwgOTQwNTIsIDk0MDU3LCA5NDA2MiwgNjgxNzIsIDk0MDY2LCAKKyAgICA5NDA2OSwgOTQwNzUsIDk0MDgzLCA5NDA4OSwgOTQwOTMsIDk0MDk4LCA5NDEwNSwgOTQxMTAsIDk0MTE1LCA5NDExOSwgCisgICAgOTQxMjUsIDk0MTMwLCAzODA0MSwgOTQxMzQsIDk0MTM3LCA5NDE0MiwgOTQxNDYsIDk0MTUxLCA5NDE1OCwgOTQxNjMsIAorICAgIDk0MTY3LCA0MzAzMSwgOTQxNzUsIDI4MDE0LCAyODAyMywgOTQxODEsIDk0MTg3LCA5NDE5MywgOTQxOTgsIDk0MjAyLCAKKyAgICA5NDIwNSwgOTQyMTUsIDk0MjI0LCA5NDIyOSwgOTQyMzUsIDk0MjQyLCA5NDI0OCwgOTQyNTIsIDk0MjYwLCA5NDI2NSwgCisgICAgMzgwNDcsIDc4Njc3LCA5NDI2OSwgOTQyNzcsIDk0MjgzLCA5NDI5MCwgOTQyOTUsIDk0Mjk5LCA5NDMwNCwgNjM3NTYsIAorICAgIDk0MzEwLCA5NDMxNiwgMzgwNTMsIDk0MzIxLCA5NDMyNiwgOTQzMzAsIDk0MzM1LCA5NDM0MCwgOTQzNDUsIDk0MzQ5LCAKKyAgICA5NDM1NCwgOTQzNTksIDk0MzY1LCA5NDM3MCwgOTQzNzUsIDk0MzgxLCA5NDM4NywgOTQzOTIsIDk0Mzk2LCA5NDQwMSwgCisgICAgOTQ0MDYsIDk0NDExLCA5NDQxNSwgMjYyNTIsIDk0NDIwLCA5NDQyNSwgOTQ0MzEsIDk0NDM3LCA5NDQ0MywgOTQ0NDgsIAorICAgIDk0NDUyLCA5NDQ1NywgOTQ0NjIsIDk0NDY3LCA5NDQ3MSwgOTQ0NzYsIDk0NDgxLCA5NDQ4NiwgOTQ0OTEsIDQ3NDkwLCAKKyAgICA5NDQ5NSwgMzU3MDQsIDk0NTAzLCA5NDUwNywgOTQ1MTUsIDk0NTIzLCA5NDUzNCwgOTQ1MzksIDk0NTQzLCAyNDQyMCwgCisgICAgNzYxNjksIDk0NTQ4LCA5NDU1NCwgOTQ1NTksIDk0NTY5LCA5NDU3NiwgOTQ1ODEsIDk0NTg5LCA5NDU5OCwgOTQ2MDMsIAorICAgIDk0NjA3LCA5NDYxMiwgOTQ2MjAsIDk0NjI4LCA5NDYzNSwgNzEzNTcsIDk0NjQxLCA5NDY0OSwgOTQ2NTYsIDk0NjY3LCAKKyAgICA5NDY3MywgOTQ2NzksIDM1NzE0LCA5NDY4MiwgOTQ2ODksIDk0Njk3LCA5NDcwMiwgNDQ3MDgsIDk0NzA2LCA5NDcxMSwgCisgICAgOTQ3MTgsIDk0NzIzLCA5NTY3LCA5NDcyNywgOTQ3MzUsIDk0NzQyLCA5NDc0OSwgOTQ3NTgsIDk0NzY1LCA5NDc3MSwgCisgICAgOTQ3ODUsIDYyMTQsIDk0NzkzLCA5NDc5OSwgOTQ4MDMsIDk0ODA2LCA5NDgxNCwgOTQ4MjEsIDk0ODI2LCA5NDgzOSwgCisgICAgOTQ4NDYsIDk0ODUyLCA5NDg1NiwgOTQ4NjQsIDk0ODY5LCA5NDg3NiwgOTQ4ODEsIDY2NDAzLCA5NDg4NiwgOTQ4ODksIAorICAgIDk0ODk4LCA5NDkwNSwgOTQ5MTEsIDk0OTE1LCA5NDkxOCwgOTQ5MjYsIDk0OTMyLCA5NDk0MSwgOTQ5NTEsIDk0OTYxLCAKKyAgICA5NDk3MCwgOTQ5ODEsIDk0OTg5LCA5NTAwMCwgOTUwMDUsIDk1MDA5LCA5NTAxNCwgOTUwMTgsIDM4NzA5LCA5NTAyNiwgCisgICAgMjMyMzQsIDM4NzE4LCA5NTAzMSwgOTUwMzYsIDk1MDQxLCA5NTA0NiwgOTUwNTEsIDk1MDU2LCA5NTA2MSwgOTUwNjUsIAorICAgIDk1MDcwLCA5NTA3NSwgOTUwODAsIDk1MDg1LCA5NTA5MCwgOTUwOTUsIDk1MDk5LCA5NTEwNCwgOTUxMDksIDk1MTEzLCAKKyAgICA5NTExNywgOTUxMjEsIDk1MTI1LCA5NTEzMCwgOTUxMzUsIDk1MTM5LCA5NTE0NCwgOTUxNDgsIDk1MTUyLCA5NTE1NywgCisgICAgOTUxNjIsIDk1MTY3LCA5NTE3MiwgOTUxNzYsIDk1MTgxLCA5NTE4NiwgOTUxOTAsIDk1MTk1LCA5NTIwMCwgOTUyMDUsIAorICAgIDk1MjEwLCA5NTIxNSwgOTUyMjAsIDk1MjI1LCA5NTIzMCwgOTUyMzUsIDk1MjQwLCA5NTI0NSwgOTUyNTAsIDk1MjU1LCAKKyAgICA5NTI2MCwgOTUyNjUsIDk1MjcwLCA5NTI3NSwgOTUyODAsIDk1Mjg1LCA5NTI5MCwgOTUyOTQsIDk1Mjk5LCA5NTMwNCwgCisgICAgOTUzMDksIDk1MzE0LCA5NTMxOSwgOTUzMjQsIDk1MzI5LCA5NTMzNCwgOTUzMzksIDk1MzQ0LCA5NTM0OSwgOTUzNTMsIAorICAgIDk1MzU4LCA5NTM2MiwgOTUzNjcsIDk1MzcyLCA5NTM3NywgOTUzODIsIDk1Mzg3LCA5NTM5MiwgOTUzOTcsIDk1NDAyLCAKKyAgICA5NTQwNywgOTU0MTEsIDk1NDE1LCA5NTQyMCwgOTU0MjUsIDk1NDI5LCA5NTQzNCwgOTU0MzksIDk1NDQzLCA5NTQ0OCwgCisgICAgOTU0NTMsIDk1NDU4LCA5NTQ2MywgOTU0NjcsIDk1NDcyLCA5NTQ3NywgOTU0ODEsIDk1NDg2LCA5NTQ5MCwgOTU0OTQsIAorICAgIDk1NDk4LCA5NTUwMiwgOTU1MDcsIDk1NTExLCA5NTUxNSwgOTU1MTksIDk1NTIzLCA5NTUyNywgOTU1MzEsIDk1NTM1LCAKKyAgICA5NTUzOSwgOTU1NDMsIDk1NTQ4LCA5NTU1MywgOTU1NTgsIDk1NTYzLCA5NTU2OCwgOTU1NzMsIDk1NTc4LCA5NTU4MywgCisgICAgOTU1ODgsIDk1NTkzLCA5NTU5NywgOTU2MDEsIDk1NjA1LCA5NTYwOSwgOTU2MTMsIDk1NjE3LCA5NTYyMiwgOTU2MjYsIAorICAgIDk1NjMxLCA5NTYzNSwgOTU2NDAsIDk1NjQ1LCA5NTY0OSwgOTU2NTMsIDk1NjU4LCA5NTY2MiwgOTU2NjYsIDk1NjcwLCAKKyAgICA5NTY3NCwgOTU2NzgsIDk1NjgyLCA5NTY4NiwgOTU2OTAsIDk1Njk0LCA5NTY5OCwgOTU3MDIsIDk1NzA2LCA5NTcxMCwgCisgICAgOTU3MTQsIDk1NzE5LCA5NTcyNCwgOTU3MjgsIDk1NzMyLCA5NTczNiwgOTU3NDAsIDk1NzQ0LCA5NTc0OCwgOTU3NTMsIAorICAgIDk1NzU3LCA5NTc2MSwgOTU3NjUsIDk1NzY5LCA5NTc3MywgOTU3NzcsIDk1NzgyLCA5NTc4NiwgOTU3OTEsIDk1Nzk1LCAKKyAgICA5NTc5OSwgOTU4MDMsIDk1ODA3LCA5NTgxMSwgOTU4MTUsIDk1ODE5LCA5NTgyMywgOTU4MjcsIDk1ODMxLCA5NTgzNSwgCisgICAgOTU4NDAsIDk1ODQ0LCA5NTg0OCwgOTU4NTIsIDk1ODU2LCA5NTg2MCwgOTU4NjQsIDk1ODY4LCA5NTg3MiwgOTU4NzYsIAorICAgIDk1ODgwLCA5NTg4NCwgOTU4ODksIDk1ODkzLCA5NTg5NywgOTU5MDIsIDk1OTA3LCA5NTkxMSwgOTU5MTUsIDk1OTE5LCAKKyAgICA5NTkyMywgOTU5MjcsIDk1OTMxLCA5NTkzNSwgOTU5MzksIDk1OTQ0LCA5NTk0OCwgOTU5NTMsIDk1OTU3LCA5NTk2MiwgCisgICAgOTU5NjYsIDk1OTcxLCA5NTk3NSwgOTU5ODEsIDk1OTg2LCA5NTk5MCwgOTU5OTUsIDk1OTk5LCA5NjAwNCwgOTYwMDgsIAorICAgIDk2MDEzLCA5NjAxNywgOTYwMjIsIDE1MDAsIDk2MDI2LCAyODYyLCAxNzU1LCAxNjczLCAyNzk1MCwgOTYwMzAsIDI4NzEsIAorICAgIDk2MDM0LCAxMzYyLCA5NjAzOSwgMTMwNCwgOTYwNDMsIDk2MDQ3LCAyODg4LCA5NjA1MSwgOTYwNTksIDk2MDY2LCA5NjA3MywgCisgICAgOTYwODcsIDI4OTIsIDc0NzYsIDk2MDk2LCA5NjEwNCwgOTYxMTEsIDk2MTIyLCA5NjEzMSwgOTYxMzgsIDk2MTUwLCAKKyAgICA5NjE2MywgOTYxNzYsIDk2MTg3LCA5NjE5MiwgOTYxOTksIDk2MjExLCA5NjIxNSwgMjg5NiwgMTI5NjAsIDk2MjI1LCAKKyAgICA5NjIzMCwgOTYyMzksIDk2MjQ5LCA5NjI1NCwgMjkwMCwgOTYyNjIsIDk2MjY2LCA5NjI3MSwgOTYyNzgsIDk2Mjg0LCAKKyAgICA5NjI5MiwgOTYzMDQsIDk2MzE0LCAxMzA5LCAxNDMxMSwgOTYzMjcsIDk2MzMxLCA5NjMzNywgOTYzNTEsIDk2MzYzLCAKKyAgICA5NjM3NSwgOTYzODUsIDk2Mzk0LCA5NjQwMywgOTY0MTIsIDk2NDIwLCA5NjQzMSwgOTY0MzksIDQzMDYsIDk2NDQ5LCAKKyAgICA5NjQ2MCwgOTY0NjksIDk2NDc1LCA5NjQ5MCwgOTY0OTcsIDk2NTAzLCA5NjUwOCwgMzg4NDMsIDk2NTEzLCAyOTI0LCAKKyAgICAxNDMxNSwgOTY1MTcsIDk2NTI0LCA5NDkyLCA5NjUzMywgOTY1MzksIDI5MjksIDM1MTUyLCA5NjU0OCwgNjYwOTksIAorICAgIDk2NTU1LCA5NjU1OSwgOTY1NjUsIDk2NTc2LCA5NjU4MiwgOTY1ODksIDk2NTk1LCA5NjYwMywgOTY2MTAsIDk2NjE2LCAKKyAgICA5NjYyNywgOTY2MzcsIDk2NjQ2LCA5NjY1NywgOTY2NjYsIDk2NjczLCA5NjY3OSwgOTY2ODksIDk2Njk3LCA5NjcwMywgCisgICAgOTY3MTgsIDk2NzI0LCA5NjcyOSwgOTY3MzYsIDk2NzM5LCA5Njc0NSwgOTY3NTIsIDk2NzU4LCA5Njc2NiwgOTY3NzUsIAorICAgIDk2NzgzLCA5Njc4OSwgOTY3OTgsIDQ2NzYwLCA5NjgxMiwgOTY4MTcsIDk2ODIzLCAxNjE5NSwgOTY4MjgsIDk2ODQxLCAKKyAgICA5Njg1MywgOTY4NjIsIDk2ODcwLCA5Njg3NywgOTY4ODEsIDk2ODg1LCA5Njg4OCwgOTY4OTUsIDk2OTAyLCA5NjkxMCwgCisgICAgOTY5MTgsIDk2OTI3LCA5NjkzNSwgMTYxMDAsIDk2OTQzLCA5Njk0OCwgOTY5NTIsIDk2OTY0LCA5Njk3MSwgOTY5NzgsIAorICAgIDk2OTg3LCA4NzcsIDk2OTk3LCA5NzAwNiwgOTcwMTcsIDI5NDUsIDk3MDIxLCA5NzAyNSwgOTcwMzEsIDk3MDQ0LCA5NzA1NiwgCisgICAgOTcwNjYsIDk3MDc1LCA5NzA4NywgMjg3MDEsIDk3MDk4LCA5NzEwNiwgOTcxMTUsIDk3MTI2LCA5NzEzNywgOTcxNDcsIAorICAgIDk3MTU3LCA5NzE2NiwgOTcxNzQsIDEyNDc0LCA5NzE4MSwgOTcxODUsIDk3MTg4LCA5NzE5MywgOTcxOTgsIDk3MjAyLCAKKyAgICA5NzIwOCwgMTMxNCwgOTcyMTUsIDk3MjE5LCAxMzA0MiwgOTcyMjMsIDk3MjM0LCA5NzI0MywgOTcyNTEsIDk3MjYwLCAKKyAgICA5NzI2OCwgOTcyODQsIDk3Mjk1LCA5NzMwNCwgOTczMTIsIDk3MzI0LCA5NzMzNSwgOTczNTEsIDk3MzYxLCA5NzM4MiwgCisgICAgOTczOTYsIDk3NDA5LCA5NzQxNywgOTc0MjQsIDc1MjIsIDk3NDM3LCA5NzQ0MiwgOTc0NDgsIDYyMjMsIDk3NDU0LCAKKyAgICA5NzQ1NywgOTc0NjQsIDk3NDc0LCA4NTk1LCA5NzQ4MSwgOTc0ODYsIDk3NDkxLCA5NzQ5NiwgOTc1MDQsIDk3NTEzLCAKKyAgICA5NzUyMSwgOTc1MjYsIDk3NTMzLCAxMDU5NCwgMTA2MDMsIDk3NTM5LCA5NzU1MCwgOTc1NTUsIDk3NTYxLCAyOTYxLCAKKyAgICAyOTY2LCA5NzU2NywgMTE5NjcsIDk3NTczLCA5NzU4MCwgOTc1ODcsIDk3NjAwLCA5NzYwNSwgMjI2NiwgODcsIDk3NjEzLCAKKyAgICA5NzYxOCwgOTc2MjYsIDk3NjM2LCA5NzY0NSwgOTc2NTEsIDk3NjYwLCA5NzY2OCwgOTc2NzgsIDk3NjgyLCA5NzY4NiwgCisgICAgOTc2OTEsIDk3Njk1LCA5NzcwNywgMjk4OSwgOTc3MTUsIDk3NzIzLCA5NzcyOCwgOTc3MzksIDk3NzUwLCA5Nzc2MiwgCisgICAgOTc3NzMsIDk3NzgzLCA5Nzc5MiwgMjMyNzUsIDk3Nzk3LCA5NzgwMywgOTc4MDgsIDk3ODE4LCA5NzgyOCwgOTc4MzMsIAorICAgIDMwNzEzLCA5NzgzOSwgOTc4NDQsIDk3ODUzLCAyMzI4NywgOTc4NTcsIDQ0MDQsIDE2LCA5Nzg2MiwgOTc4NzEsIDk3ODc4LCAKKyAgICA5Nzg4NSwgOTc4OTEsIDk3ODk2LCA5NzkwMCwgOTc5MDYsIDEwODUsIDk3OTExLCA5NzkxNiwgNjY2ODAsIDk3OTIxLCAKKyAgICA5NzkyNiwgOTc5MzIsIDk3OTM4LCA5Nzk0NiwgOTc5NTEsIDk3OTU5LCA5Nzk2NiwgOTc5NzIsIDk3OTc3LCA0MjkxNSwgCisgICAgNDY2NTQsIDk3OTgzLCAxODA2LCAzMiwgOTc5OTMsIDk4MDA2LCA5ODAxMSwgOTgwMTksIDk4MDI0LCA5ODAzMCwgMzAxNSwgCisgICAgMzA3ODgsIDk4MDM1LCA5ODA0MywgOTgwNTAsIDk4MDU1LCA5ODA2NCwgNjQwMDYsIDQwMjMsIDY3Nzg0LCA5ODA3MiwgCisgICAgOTgwNzYsIDE3MDAsIDE4MTgsIDk4MDgxLCA5ODA4NiwgOTgwOTMsIDE4MjIsIDI4NiwgOTgxMDAsIDk4MTA2LCA5ODExMSwgCisgICAgMzAzNywgOTgxMTUsIDk4MTIwLCA5ODEyNywgMTgyNiwgOTgxMzIsIDk4MTM4LCA5ODE0MywgOTgxNTUsIDY0NTQsIDk4MTY1LCAKKyAgICA5ODE3MiwgMTgzMywgOTgxNzgsIDk4MTgzLCA5ODE5MCwgOTgxOTcsIDk4MjEyLCA5ODIxOSwgOTgyMzAsIDk4MjM1LCAKKyAgICA5ODI0MywgMjY0NiwgOTgyNDcsIDk4MjU5LCA5ODI2NCwgOTgyNjgsIDk4Mjc0LCAzMDU5NiwgMjI3MSwgOTgyNzgsIAorICAgIDk4Mjg5LCA5ODI5MywgOTgyOTcsIDk4MzAzLCA5ODMwNywgOTgzMTYsIDk4MzIwLCA5ODMzMSwgOTgzMzUsIDIzMTcsIAorICAgIDM0OTY5LCA5ODMzOSwgOTgzNDksIDMxMjgsIDk4MzU3LCA5ODM2NiwgOTk5OSwgOTgzNzEsIDk4Mzc2LCA5ODM4MCwgCisgICAgOTgzODksIDk4Mzk2LCA5ODQwMiwgMzA5OCwgMTYyNTksIDk4NDA2LCA5ODQxOSwgOTg0MzcsIDk4NDQyLCA5ODQ1MCwgCisgICAgOTg0NTgsIDk4NDY4LCAxMDg2NiwgMTQ0MjgsIDk4NDgwLCA5ODQ5MywgOTg1MDAsIDk4NTE0LCA5ODUyMSwgOTg1MzcsIAorICAgIDk4NTQ0LCA5ODU1MCwgMjMzMjUsIDEzNjY2LCA5ODU1NywgOTg1NjQsIDk4NTc0LCA5ODU4MywgNDc0ODksIDk4NTk1LCAKKyAgICA0NzYyNCwgOTg2MDMsIDk4NjA2LCA5ODYxMiwgOTg2MTgsIDk4NjI0LCA5ODYzMCwgOTg2MzYsIDk4NjQzLCA5ODY1MCwgCisgICAgOTg2NTYsIDk4NjYyLCA5ODY2OCwgOTg2NzQsIDk4NjgwLCA5ODY4NiwgOTg2OTIsIDk4Njk4LCA5ODcwNCwgOTg3MTAsIAorICAgIDk4NzE2LCA5ODcyMiwgOTg3MjgsIDk4NzM0LCA5ODc0MCwgOTg3NDYsIDk4NzUyLCA5ODc1OCwgOTg3NjQsIDk4NzcwLCAKKyAgICA5ODc3NiwgOTg3ODIsIDk4Nzg4LCA5ODc5NCwgOTg4MDAsIDk4ODA2LCA5ODgxMiwgOTg4MTgsIDk4ODI0LCA5ODgzMCwgCisgICAgOTg4MzYsIDk4ODQyLCA5ODg0OCwgOTg4NTQsIDk4ODYwLCA5ODg2NiwgOTg4NzIsIDk4ODc4LCA5ODg4NCwgOTg4OTAsIAorICAgIDk4ODk2LCA5ODkwMiwgOTg5MDgsIDk4OTE0LCA5ODkyMCwgOTg5MjYsIDk4OTMyLCA5ODkzOCwgOTg5NDQsIDk4OTUwLCAKKyAgICA5ODk1NiwgOTg5NjMsIDk4OTY5LCA5ODk3NiwgOTg5ODMsIDk4OTg5LCA5ODk5NiwgOTkwMDMsIDk5MDA5LCA5OTAxNSwgCisgICAgOTkwMjEsIDk5MDI3LCA5OTAzMywgOTkwMzksIDk5MDQ1LCA5OTA1MSwgOTkwNTcsIDk5MDYzLCA5OTA2OSwgOTkwNzUsIAorICAgIDk5MDgxLCA5OTA4NywgOTkwOTMsIDMxMTIsIDk5NzIsIDk5MDk5LCA5OTEwNSwgOTkxMTMsIDk5MTE3LCA5NjI3NCwgMzExNiwgCisgICAgOTkxMjEsIDIzMDUyLCAxMzI5OSwgMzk3MywgOTkxMjUsIDMxMjIsIDk5MTI5LCA5OTEzOSwgOTkxNDUsIDk5MTUxLCAKKyAgICA5OTE1NywgOTkxNjMsIDk5MTY5LCA5OTE3NSwgOTkxODEsIDk5MTg3LCA5OTE5MywgOTkxOTksIDk5MjA1LCA5OTIxMSwgCisgICAgOTkyMTcsIDk5MjIzLCA5OTIyOSwgOTkyMzUsIDk5MjQxLCA5OTI0NywgOTkyNTMsIDk5MjU5LCA5OTI2NSwgOTkyNzEsIAorICAgIDk5Mjc3LCA5OTI4MywgOTkyODksIDk5Mjk2LCA5OTMwMywgOTkzMDksIDk5MzE1LCA5OTMyMSwgOTkzMjcsIDk5MzMzLCAKKyAgICA5OTMzOSwgMTMxOSwgOTkzNDUsIDk5MzUwLCA5OTM1NSwgOTkzNjAsIDk5MzY1LCA5OTM3MCwgOTkzNzUsIDk5MzgwLCAKKyAgICA5OTM4NSwgOTkzODksIDk5MzkzLCA5OTM5NywgOTk0MDEsIDk5NDA1LCA5OTQwOSwgOTk0MTMsIDk5NDE3LCA5OTQyMSwgCisgICAgOTk0MjcsIDk5NDMzLCA5OTQzOSwgOTk0NDUsIDk5NDQ5LCA5OTQ1MywgOTk0NTcsIDk5NDYxLCA5OTQ2NSwgOTk0NjksIAorICAgIDk5NDczLCA5OTQ3NywgOTk0ODEsIDk5NDg2LCA5OTQ5MSwgOTk0OTYsIDk5NTAxLCA5OTUwNiwgOTk1MTEsIDk5NTE2LCAKKyAgICA5OTUyMSwgOTk1MjYsIDk5NTMxLCA5OTUzNiwgOTk1NDEsIDk5NTQ2LCA5OTU1MSwgOTk1NTYsIDk5NTYxLCA5OTU2NiwgCisgICAgOTk1NzEsIDk5NTc2LCA5OTU4MSwgOTk1ODYsIDk5NTkxLCA5OTU5NiwgOTk2MDEsIDk5NjA2LCA5OTYxMSwgOTk2MTYsIAorICAgIDk5NjIxLCA5OTYyNiwgOTk2MzEsIDk5NjM2LCA5OTY0MSwgOTk2NDYsIDk5NjUxLCA5OTY1NiwgOTk2NjEsIDk5NjY2LCAKKyAgICA5OTY3MSwgOTk2NzYsIDk5NjgxLCA5OTY4NiwgOTk2OTEsIDk5Njk2LCA5OTcwMSwgOTk3MDYsIDk5NzExLCA5OTcxNiwgCisgICAgOTk3MjEsIDk5NzI2LCA5OTczMSwgOTk3MzYsIDk5NzQxLCA5OTc0NiwgOTk3NTEsIDk5NzU2LCA5OTc2MSwgOTk3NjYsIAorICAgIDk5NzcxLCA5OTc3NiwgOTk3ODEsIDk5Nzg2LCA5OTc5MSwgOTk3OTYsIDk5ODAxLCA5OTgwNiwgOTk4MTEsIDk5ODE2LCAKKyAgICA5OTgyMSwgOTk4MjYsIDk5ODMxLCA5OTgzNiwgOTk4NDEsIDk5ODQ2LCA5OTg1MSwgOTk4NTYsIDk5ODYxLCA5OTg2NiwgCisgICAgOTk4NzEsIDk5ODc2LCA5OTg4MSwgOTk4ODYsIDk5ODkxLCA5OTg5NiwgOTk5MDEsIDk5OTA2LCA5OTkxMSwgOTk5MTYsIAorICAgIDk5OTIxLCA5OTkyNiwgOTk5MzEsIDk5OTM2LCA5OTk0MSwgOTk5NDYsIDk5OTUxLCA5OTk1NiwgOTk5NjEsIDk5OTY2LCAKKyAgICA5OTk3MSwgOTk5NzYsIDk5OTgxLCA5OTk4NiwgOTk5OTEsIDk5OTk2LCAxMDAwMDEsIDEwMDAwNiwgMTAwMDExLCAxMDAwMTYsIAorICAgIDEwMDAyMSwgMTAwMDI2LCAxMDAwMzEsIDEwMDAzNiwgMTAwMDQxLCAxMDAwNDYsIDEwMDA1MSwgMTAwMDU2LCAxMDAwNjEsIAorICAgIDEwMDA2NiwgMTAwMDcxLCAxMDAwNzYsIDEwMDA4MSwgMTAwMDg2LCAxMDAwOTEsIDEwMDA5NiwgMTAwMTAxLCAxMDAxMDYsIAorICAgIDEwMDExMSwgMTAwMTE2LCAxMDAxMjEsIDEwMDEyNiwgMTAwMTMxLCAxMDAxMzYsIDEwMDE0MSwgMTAwMTQ2LCAxMDAxNTEsIAorICAgIDEwMDE1NiwgMTAwMTYxLCAxMDAxNjYsIDEwMDE3MSwgMTAwMTc2LCAxMDAxODEsIDEwMDE4NiwgMTAwMTkxLCAxMDAxOTYsIAorICAgIDEwMDIwMSwgMTAwMjA2LCAxMDAyMTEsIDEwMDIxNiwgMTAwMjIxLCAxMDAyMjYsIDEwMDIzMSwgMTAwMjM2LCAxMDAyNDEsIAorICAgIDEwMDI0NiwgMTAwMjUxLCAxMDAyNTYsIDEwMDI2MSwgMTAwMjY2LCAxMDAyNzEsIDEwMDI3NiwgMTAwMjgxLCAxMDAyODYsIAorICAgIDEwMDI5MSwgMTAwMjk2LCAxMDAzMDEsIDEwMDMwNiwgMTAwMzExLCAxMDAzMTYsIDEwMDMyMSwgMTAwMzI2LCAxMDAzMzEsIAorICAgIDEwMDMzNiwgMTAwMzQxLCAxMDAzNDYsIDEwMDM1MSwgMTAwMzU2LCAxMDAzNjEsIDEwMDM2NiwgMTAwMzcxLCAxMDAzNzcsIAorICAgIDEwMDM4MiwgMTAwMzg3LCAxMDAzOTIsIDEwMDM5NywgMTAwNDAyLCAxMDA0MDcsIDEwMDQxMiwgMTAwNDE4LCAxMDA0MjMsIAorICAgIDEwMDQyOCwgMTAwNDMzLCAxMDA0MzgsIDEwMDQ0MywgMTAwNDQ4LCAxMDA0NTMsIDEwMDQ1OCwgMTAwNDYzLCAxMDA0NjgsIAorICAgIDEwMDQ3MywgMTAwNDc4LCAxMDA0ODMsIDEwMDQ4OCwgMTAwNDkzLCAxMDA0OTgsIDEwMDUwMywgMTAwNTA4LCAxMDA1MTMsIAorICAgIDEwMDUxOCwgMTAwNTIzLCAxMDA1MjgsIDEwMDUzMywgMTAwNTM4LCAxMDA1NDMsIDEwMDU0OCwgMTAwNTUzLCAxMDA1NTgsIAorICAgIDEwMDU2MywgMTAwNTY4LCAxMDA1NzMsIDEwMDU3OCwgMTAwNTg3LCAxMDA1OTIsIDEwMDYwMSwgMTAwNjA2LCAxMDA2MTUsIAorICAgIDEwMDYyMCwgMTAwNjI5LCAxMDA2MzQsIDEwMDY0MywgMTAwNjQ4LCAxMDA2NTcsIDEwMDY2MiwgMTAwNjcxLCAxMDA2NzYsIAorICAgIDEwMDY4NSwgMTAwNjkwLCAxMDA2OTUsIDEwMDcwNCwgMTAwNzA4LCAxMDA3MTcsIDEwMDcyMiwgMTAwNzMxLCAxMDA3MzYsIAorICAgIDEwMDc0NSwgMTAwNzUwLCAxMDA3NTksIDEwMDc2NCwgMTAwNzczLCAxMDA3NzgsIDEwMDc4NywgMTAwNzkyLCAxMDA4MDEsIAorICAgIDEwMDgwNiwgMTAwODE1LCAxMDA4MjAsIDEwMDgyOSwgMTAwODM0LCAxMDA4NDMsIDEwMDg0OCwgMTAwODUzLCAxMDA4NTgsIAorICAgIDEwMDg2MywgMTAwODY4LCAxMDA4NzMsIDEwMDg3OCwgMTAwODgyLCAxMDA4ODcsIDEwMDg5MiwgMTAwODk3LCAxMDA5MDIsIAorICAgIDEwMDkwNywgMTAwOTEyLCAxMDA5MTgsIDEwMDkyMywgMTAwOTI4LCAxMDA5MzMsIDEwMDkzOSwgMTAwOTQzLCAxMDA5NDgsIAorICAgIDEwMDk1NCwgMTAwOTU5LCAxMDA5NjQsIDEwMDk2OSwgMTAwOTc0LCAxMDA5NzksIDEwMDk4NCwgMTAwOTg5LCAxMDA5OTQsIAorICAgIDEwMDk5OSwgMTAxMDA0LCAxMDEwMTAsIDEwMTAxNSwgMTAxMDIwLCAxMDEwMjUsIDEwMTAzMSwgMTAxMDM2LCAxMDEwNDEsIAorICAgIDEwMTA0NiwgMTAxMDUxLCAxMDEwNTcsIDEwMTA2MiwgMTAxMDY3LCAxMDEwNzIsIDEwMTA3NywgMTAxMDgyLCAxMDEwODgsIAorICAgIDEwMTA5MywgMTAxMDk4LCAxMDExMDMsIDEwMTEwOCwgMTAxMTEzLCAxMDExMTgsIDEwMTEyMywgMTAxMTI4LCAxMDExMzMsIAorICAgIDEwMTEzOCwgMTAxMTQzLCAxMDExNDgsIDEwMTE1MywgMTAxMTU4LCAxMDExNjMsIDEwMTE2OCwgMTAxMTczLCAxMDExNzgsIAorICAgIDEwMTE4MywgMTAxMTg4LCAxMDExOTMsIDEwMTE5OCwgMTAxMjAzLCAxMDEyMDksIDEwMTIxNSwgMTAxMjIxLCAxMDEyMjYsIAorICAgIDEwMTIzMSwgMTAxMjM2LCAxMDEyNDEsIDEwMTI0NywgMTAxMjUzLCAxMDEyNTksIDEwMTI2NCwgMTAxMjY5LCAxMDEyNzQsIAorICAgIDEwMTI4MCwgMTAxMjg1LCAxMDEyOTAsIDEwMTI5NSwgMTAxMzAwLCAxMDEzMDUsIDEwMTMxMCwgMTAxMzE1LCAxMDEzMjAsIAorICAgIDEwMTMyNSwgMTAxMzMwLCAxMDEzMzUsIDEwMTM0MCwgMTAxMzQ1LCAxMDEzNTAsIDEwMTM1NSwgMTAxMzYwLCAxMDEzNjYsIAorICAgIDEwMTM3MiwgMTAxMzc4LCAxMDEzODMsIDEwMTM4OCwgMTAxMzkzLCAxMDEzOTgsIDEwMTQwNCwgMTAxNDEwLCAxMDE0MTYsIAorICAgIDEwMTQyMSwgMTAxNDI2LCAxMDE0MzEsIDEwMTQzNiwgMTAxNDQxLCAxMDE0NDYsIDEwMTQ1MSwgMTAxNDU2LCAxMDE0NjEsIAorICAgIDE3Njg2LCAxMDE0NjYsIDEwMTQ3MiwgMTAxNDc3LCAxMDE0ODIsIDEwMTQ4NywgMTAxNDkyLCAxMDE0OTcsIDEwMTUwMywgCisgICAgMTAxNTA4LCAxMDE1MTMsIDEwMTUxOCwgMTAxNTIzLCAxMDE1MjgsIDEwMTUzNCwgMTAxNTM5LCAxMDE1NDQsIDEwMTU0OSwgCisgICAgMTAxNTU0LCAxMDE1NTksIDEwMTU2NCwgMTAxNTY5LCAxMDE1NzQsIDEwMTU3OSwgMTAxNTg0LCAxMDE1ODksIDEwMTU5NCwgCisgICAgMTAxNTk5LCAxMDE2MDQsIDEwMTYwOSwgMTAxNjE0LCAxMDE2MTksIDEwMTYyNCwgMTAxNjI5LCAxMDE2MzQsIDEwMTYzOSwgCisgICAgMTAxNjQ0LCAxMDE2NTAsIDEwMTY1NSwgMTAxNjYwLCAxMDE2NjUsIDEwMTY3MCwgMTAxNjc1LCAxMDE2ODAsIDEwMTY4NSwgCisgICAgMTAxNjkwLCAxMDE2OTUsIDEwMTcwMCwgMTAxNzA1LCAxMDE3MTAsIDEwMTcxNSwgMTAxNzIwLCAxMDE3MjUsIDEwMTczMCwgCisgICAgMTAxNzM1LCAxMDE3NDAsIDEwMTc0NSwgMTAxNzUwLCAxMDE3NTUsIDEwMTc2MCwgMTAxNzY1LCAxMDE3NzAsIDEwMTc3NSwgCisgICAgMTAxNzgwLCAxMDE3ODUsIDEwMTc5MCwgMTAxNzk1LCAxMDE4MDAsIDEwMTgwNSwgMTAxODEwLCAxMDE4MTUsIDEwMTgyMCwgCisgICAgMTAxODI1LCAxMDE4MzAsIDEwMTgzNSwgMTAxODQwLCAxMDE4NDUsIDEwMTg1MCwgMTAxODU2LCAxMDE4NjEsIDEwMTg2NiwgCisgICAgMTAxODcxLCAxMDE4NzYsIDEwMTg4MSwgMTAxODg2LCAxMDE4OTEsIDEwMTg5NiwgMTAxOTAxLCAxMDE5MDYsIDEwMTkxMSwgCisgICAgMTAxOTE3LCAxMDE5MjIsIDEwMTkyOCwgMTAxOTMzLCAxMDE5MzgsIDEwMTk0MywgMTAxOTQ4LCAxMDE5NTMsIDEwMTk1OCwgCisgICAgMTAxOTY0LCAxMDE5NjksIDEwMTk3NCwgMTAxOTgwLCAxMDE5ODUsIDEwMTk5MCwgMTAxOTk1LCAxMDIwMDAsIDEwMjAwNSwgCisgICAgMTAyMDExLCAxMDIwMTcsIDEwMjAyMiwgMTAyMDI3LCAxMzMyMSwgMTAyMDMyLCAxMDIwMzcsIDEwMjA0MiwgMTAyMDQ3LCAKKyAgICAxMDIwNTIsIDEwMjA1NywgMTAyMDYyLCAxMDIwNjcsIDEwMjA3MiwgMTAyMDc3LCAxMDIwODIsIDEwMjA4NywgMTAyMDkyLCAKKyAgICAxMDIwOTcsIDEwMjEwMiwgMTAyMTA3LCAxMDIxMTIsIDEwMjExNywgMTAyMTIyLCAxMDIxMjcsIDEwMjEzMiwgMTAyMTM3LCAKKyAgICAxMDIxNDIsIDEwMjE0NywgMTAyMTUyLCAxMDIxNTcsIDEwMjE2MiwgMTAyMTY3LCAxMDIxNzIsIDEwMjE3NywgMTAyMTgyLCAKKyAgICAxMDIxODcsIDEwMjE5MiwgMTAyMTk3LCAxMDIyMDIsIDEwMjIwNywgMTAyMjEyLCAxMDIyMTcsIDEwMjIyMiwgMTAyMjI3LCAKKyAgICAxMDIyMzIsIDEwMjIzNywgMTAyMjQyLCAxMDIyNDcsIDEwMjI1MiwgMTAyMjU3LCAxMDIyNjIsIDEwMjI2NywgMTAyMjcyLCAKKyAgICAxMDIyNzcsIDEwMjI4MiwgMTAyMjg3LCAxMDIyOTIsIDEwMjI5NywgMTAyMzAyLCAxMDIzMDcsIDEwMjMxMiwgMTAyMzE3LCAKKyAgICAxMDIzMjIsIDEwMjMyNywgMTAyMzMyLCAxMDIzMzcsIDEwMjM0MiwgMTAyMzQ3LCAxMDIzNTIsIDEwMjM1OCwgMTAyMzYzLCAKKyAgICAxMDIzNjgsIDEwMjM3MywgMTAyMzc4LCAxMDIzODQsIDEwMjM4OSwgMTAyMzk0LCAxMDIzOTksIDEwMjQwNCwgMTAyNDA5LCAKKyAgICAxMDI0MTQsIDEwMjQyMCwgMTAyNDI1LCAxMDI0MzAsIDEwMjQzNSwgMTAyNDQwLCAxMDI0NDUsIDEwMjQ1MSwgMTAyNDU2LCAKKyAgICAxMDI0NjEsIDEwMjQ2NiwgMTAyNDcxLCAxMDI0NzYsIDEwMjQ4MiwgMTAyNDg3LCAxMDI0OTIsIDEwMjQ5NywgMTAyNTAyLCAKKyAgICAxMDI1MDcsIDEwMjUxMywgMTAyNTE5LCAxMDI1MjQsIDEwMjUyOSwgMTAyNTM0LCAxMDI1NDAsIDEwMjU0NiwgMTAyNTUyLCAKKyAgICAxMDI1NTcsIDEwMjU2MiwgMTAyNTY4LCAxMDI1NzQsIDEwMjU3OSwgMTAyNTg1LCAxMDI1OTEsIDEwMjU5NywgMTAyNjAyLCAKKyAgICAxMDI2MDcsIDEwMjYxMywgMTAyNjE4LCAxMDI2MjQsIDEwMjYyOSwgMTAyNjM1LCAxMDI2NDQsIDEwMjY0OSwgMTAyNjU0LCAKKyAgICAxMDI2NjAsIDEwMjY2NSwgMTAyNjcxLCAxMDI2NzYsIDEwMjY4MSwgMTAyNjg2LCAxMDI2OTEsIDEwMjY5NiwgMTAyNzAxLCAKKyAgICAxMDI3MDYsIDEwMjcxMSwgMTAyNzE2LCAxMDI3MjEsIDEwMjcyNiwgMTAyNzMxLCAxMDI3MzYsIDEwMjc0MSwgMTAyNzQ2LCAKKyAgICAxMDI3NTEsIDEwMjc1NiwgMTAyNzYxLCAxMDI3NjYsIDEwMjc3MSwgMTAyNzc2LCAxMDI3ODEsIDEwMjc4NiwgMTAyNzkxLCAKKyAgICAxMDI3OTYsIDEwMjgwMSwgMTAyODA2LCAxMDI4MTEsIDEwMjgxNiwgMTAyODIxLCAxMDI4MjYsIDEwMjgzMiwgMTAyODM4LCAKKyAgICAxMDI4NDQsIDEwMjg0OSwgMTAyODU0LCAxMDI4NTksIDEwMjg2NCwgMTAyODY5LCAxMDI4NzQsIDEwMjg3OSwgMTAyODg0LCAKKyAgICAxMDI4ODksIDEwMjg5NCwgMTAyODk5LCAxMDI5MDQsIDEwMjkwOSwgMTAyOTE0LCAxMDI5MTksIDEwMjkyNCwgMTAyOTI5LCAKKyAgICAxMDI5MzQsIDEwMjkzOSwgMTAyOTQ0LCAxMDI5NTAsIDEwMjk1NiwgMTAyOTYxLCAxMDI5NjcsIDEwMjk3MiwgMTAyOTc3LCAKKyAgICAxMDI5ODMsIDEwMjk4OCwgMTAyOTk0LCAxMDI5OTksIDEwMzAwNSwgMTAzMDEwLCAxMDMwMTYsIDEwMzAyMSwgMTAzMDI3LCAKKyAgICAxMDMwMzIsIDEwMzAzNywgMTAzMDQyLCAxMDMwNDcsIDEwMzA1MiwgMTAzMDU3LCAxMDMwNjIsIDk5MTQwLCA5OTE0NiwgCisgICAgOTkxNTIsIDk5MTU4LCAxMDMwNjgsIDk5MTY0LCA5OTE3MCwgMTAzMDc0LCA5OTE3NiwgOTkxODIsIDk5MTg4LCA5OTE5NCwgCisgICAgOTkyMDAsIDk5MjA2LCA5OTIxMiwgOTkyMTgsIDk5MjI0LCAxMDMwODAsIDk5MjMwLCA5OTIzNiwgOTkyNDIsIDEwMzA4NiwgCisgICAgOTkyNDgsIDk5MjU0LCA5OTI2MCwgOTkyNjYsIDEwMzA5MiwgOTkyNzIsIDk5Mjc4LCA5OTI4NCwgOTkzMDQsIDEwMzA5OCwgCisgICAgMTAzMTA0LCA5OTMxMCwgMTAzMTEwLCA5OTMxNiwgOTkzMjIsIDk5MzI4LCA5OTMzNCwgOTkzNDAsIDMxMzksIDMxNDQsIAorICAgIDEwMzExNiwgMTAzMTIxLCAxMDMxMjQsIDEwMzEzMCwgMTAzMTM2LCAxMDMxNDMsIDEwMzE0OCwgMTAzMTUzLCAyMzIyLCAKIH07CiAKIC8qIGNvZGUtPm5hbWUgcGhyYXNlYm9vayAqLwogI2RlZmluZSBwaHJhc2Vib29rX3NoaWZ0IDgKLSNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAyMDEKKyNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAxOTgKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tbXSA9IHsKLSAgICAwLCAyMTEsIDIyOCwgMjQwLCAyMTIsIDgyLCAyMTcsIDMxLCA4MiwgNDIsIDU0LCAyNDMsIDk3LCA1NCwgMjE4LCAyNDYsIAotICAgIDU0LCAyNTAsIDIzNSwgMjUwLCAxNjAsIDQ5LCAyMTksIDc2LCA1MCwgMjE5LCA3NiwgMjUwLCA1OSwgOTEsIDU0LCAyNDUsIAotICAgIDIzMywgMjM1LCAyMTksIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTIsIDAsIDE3LCAyMDIsIDg0LCAxNywgMTA1LCAxNywgMTA4LCAKLSAgICAxNywgMTQ3LCAxNywgMTQ5LCAxNywgMTcwLCAxNywgMTk1LCAxNywgMjEzLCAxMTEsIDE3LCAxOTksIDE3LCAyMjIsIDYzLCAKLSAgICAyNDUsIDI0MiwgMjEzLCAxNDMsIDIyNywgMTc5LCA1NCwgMjQxLCAzNSwgNTQsIDIzNywgMjQ3LCA1NCwgMjE3LCA0NywgODIsIAotICAgIDI0NSwgMjMxLCAyNTAsIDQ5LCA4LCA2LCAxLCA2MywgOCwgNiwgMSwgMjQ5LCAyNTUsIDgsIDYsIDEsIDI0NywgMTI1LCA4LCAKLSAgICA2LCAxLCAyNDUsIDUxLCA4LCA2LCAxLCA3NCwgOCwgNiwgMSwgMjQwLCAxNzQsIDgsIDYsIDEsIDIzOSwgNzUsIDgsIDYsIDEsIAotICAgIDIzNywgMTcxLCA4LCA2LCAxLCA3NSwgOCwgNiwgMSwgMjMwLCAxODQsIDgsIDYsIDEsIDIzMCwgNTQsIDgsIDYsIDEsIDE1OSwgCi0gICAgOCwgNiwgMSwgMjI2LCAxODUsIDgsIDYsIDEsIDIyMywgMTYzLCA4LCA2LCAxLCA3OCwgOCwgNiwgMSwgMjE5LCAxODQsIDgsIAotICAgIDYsIDEsIDIxNywgMTM0LCA4LCA2LCAxLCAxNDYsIDgsIDYsIDEsIDE5NCwgOCwgNiwgMSwgMjEwLCA2OSwgOCwgNiwgMSwgCi0gICAgNjgsIDgsIDYsIDEsIDIwNiwgMTY0LCA4LCA2LCAxLCAyMDQsIDE0NCwgOCwgNiwgMSwgMjAzLCAxOTYsIDgsIDYsIDEsIAotICAgIDIwMywgMTI0LCA4LCA2LCAxLCAyMDIsIDE1OSwgNDksIDUxLCAxNTUsIDIxNiwgNzQsIDIxMiwgMCwgNTAsIDUxLCAxNTUsIAotICAgIDI0NiwgNTMsIDI1MSwgMTM4LCAxMjQsIDIyNywgMTE0LCAyMzcsIDI1NCwgMjUxLCAxMzgsIDgsIDUsIDEsIDYzLCA4LCA1LCAKLSAgICAxLCAyNDksIDI1NSwgOCwgNSwgMSwgMjQ3LCAxMjUsIDgsIDUsIDEsIDI0NSwgNTEsIDgsIDUsIDEsIDc0LCA4LCA1LCAxLCAKLSAgICAyNDAsIDE3NCwgOCwgNSwgMSwgMjM5LCA3NSwgOCwgNSwgMSwgMjM3LCAxNzEsIDgsIDUsIDEsIDc1LCA4LCA1LCAxLCAyMzAsIAotICAgIDE4NCwgOCwgNSwgMSwgMjMwLCA1NCwgOCwgNSwgMSwgMTU5LCA4LCA1LCAxLCAyMjYsIDE4NSwgOCwgNSwgMSwgMjIzLCAKLSAgICAxNjMsIDgsIDUsIDEsIDc4LCA4LCA1LCAxLCAyMTksIDE4NCwgOCwgNSwgMSwgMjE3LCAxMzQsIDgsIDUsIDEsIDE0NiwgOCwgCi0gICAgNSwgMSwgMTk0LCA4LCA1LCAxLCAyMTAsIDY5LCA4LCA1LCAxLCA2OCwgOCwgNSwgMSwgMjA2LCAxNjQsIDgsIDUsIDEsIAotICAgIDIwNCwgMTQ0LCA4LCA1LCAxLCAyMDMsIDE5NiwgOCwgNSwgMSwgMjAzLCAxMjQsIDgsIDUsIDEsIDIwMiwgMTU5LCA0OSwgCi0gICAgMjQ1LCA5MywgMTU1LCA4MCwgMjI3LCAxMTQsIDUwLCAyNDUsIDkzLCAxNTUsIDIwOCwgMjI3LCAyMjEsIDE5MCwgMjExLCAKLSAgICAyMjgsIDIzMCwgMjM5LCAyNDAsIDIxMiwgODIsIDI0NiwgMjIwLCA1NCwgMjE4LCAyMCwgNTQsIDI0NSwgOTIsIDU0LCAyMDMsIAotICAgIDQzLCA1NCwgMjQ3LCAyMDMsIDE0MiwgMjE0LCAxNjgsIDU0LCAyNDMsIDIzMSwgMjQ1LCAxNjksIDU0LCAyNDAsIDQxLCAKLSAgICAyMTksIDI0MCwgMjMxLCAzMSwgMjI3LCAyMTcsIDUyLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIyMSwgMTY2LCA1NCwgCi0gICAgMjEyLCA3LCAyMzUsIDIyMCwgMjE2LCAxMjksIDU0LCAyMjUsIDE3MCwgMjQ0LCA1NSwgNTQsIDIxOCwgNzUsIDU0LCAyMTAsIAotICAgIDE5OSwgMTA4LCAyMTAsIDE5OSwgMTQ3LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDIyNCwgMTUzLCA1NCwgMjE4LCAxMjYsIDU0LCAKLSAgICAxMDEsIDI0MywgODUsIDI0NiwgMjMxLCAyMTAsIDE5OSwgMTA1LCAyMjUsIDgwLCAyMTksIDI0MCwgMjMxLCAzMSwgMjE2LCAKLSAgICAxMSwgNTIsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIxNywgNTUsIDIwNCwgCi0gICAgMTYxLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDIzMCwgMjM5LCAKLSAgICAyMTcsIDQ3LCA4MiwgOCwgNiwgMSwgMzQsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMTY1LCA4LCA2LCAxLCAzNCwgCi0gICAgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMzQsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIAotICAgIDM0LCAzLCAyMTUsIDI1MywgNTUsIDgsIDYsIDEsIDI1MSwgMTA5LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzEsIAotICAgIDgsIDYsIDEsIDE4OCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgCi0gICAgNTIsIDgsIDYsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgCi0gICAgMjM1LCAyMDYsIDMsIDE2NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICAyNDMsIDIzMSwgOCwgNiwgMSwgMjQwLCAyNDMsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MiwgOCwgNiwgCi0gICAgMSwgMTU4LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMjIzLCAyMjQsIDU0LCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMTA2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMTY1LCA4LCAKLSAgICA2LCAxLCAyMDksIDQwLCA4LCA1LCAxLCAyMTMsIDU3LCAxOTQsIDgsIDUsIDEsIDM0LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCi0gICAgMzQsIDMsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDM0LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMzQsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAyNTEsIDEwOSwgOCwgNSwgCi0gICAgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAxODgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxODgsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDYsIAotICAgIDUyLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDI0MCwgMjQzLCA4LCA1LCAxLCAyMjMsIDE2NCwgCi0gICAgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMTY1LCA4LCA1LCAxLCAKLSAgICAxNTgsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzEsIAotICAgIDI0MywgMTM3LCA1NCwgOCwgNSwgMSwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCi0gICAgMTA2LCAzLCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgOCwgNSwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDE2NSwgOCwgNSwgMSwgMjA5LCA0MCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDI0MywgMjMxLCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMzQsIDMsIDI0NywgCi0gICAgMjE0LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAzNCwgMywgCi0gICAgMjIwLCA2MiwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDE2NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMjQ3LCAxMjYsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyNDcsIDEyNiwgCi0gICAgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ3LCAyOSwgCi0gICAgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NywgMjksIDgsIDUsIDEsIAotICAgIDI0NSwgNTIsIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDk1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCA5NSwgOCwgCi0gICAgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMTg4LCAzLCAyNDcsIAotICAgIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTg4LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgNzAsIDU1LCA4LCA2LCAxLCAxODgsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MiwgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxODgsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NiwgNTIsIDgsIDUsIAotICAgIDEsIDIzOSwgNzYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAyMzksIDc2LCAKLSAgICAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCA3MCwgNTUsIDgsIAotICAgIDYsIDEsIDIzOSwgNzYsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzksIDc2LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjM3LCAKLSAgICAxNzIsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgOTUsIAotICAgIDgsIDUsIDEsIDIzNywgMTcyLCAzLCA5NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDIyNSwgMTcwLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIDIxNCwgCi0gICAgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYyLCA4LCA2LCAxLCAKLSAgICAyMzUsIDIwNiwgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDMsIDg0LCA3NSwgOCwgNiwgMzIsIDIzMSwgODEsIDgsIDUsIDMyLCAKLSAgICAyMzEsIDgxLCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjMwLCAxODUsIDMsIDI0NiwgNTIsIDgsIAotICAgIDYsIDEsIDIzMCwgNTUsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjI4LCAKLSAgICAyMzEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxNjUsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxNjUsIDgsIDYsIDEsIDIyOCwgCi0gICAgMTMxLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgCi0gICAgMjQ3LCAyOSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDI0MywgCi0gICAgODUsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDI0MywgODUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA5NSwgOCwgNSwgCi0gICAgMSwgMjI4LCAxMzEsIDMsIDk1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMTY1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTY1LCAKLSAgICA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgCi0gICAgMjIzLCAxNjQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMjMsIDE2NCwgCi0gICAgMjE3LCAyNTEsIDI0NywgMTM3LCAyNTAsIDE2MCwgOCwgNiwgMSwgMjQxLCA3OCwgOCwgNSwgMSwgMjQxLCA3OCwgOCwgNiwgCi0gICAgMSwgMTU4LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMTU4LCAzLCAyNDcsIAotICAgIDIxNCwgOCwgNSwgMSwgMTU4LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTU4LCAzLCA1MiwgMTY1LCA4LCA1LCAxLCAxNTgsIAotICAgIDMsIDUyLCAxNjUsIDgsIDYsIDMyLCAyMjAsIDczLCA4LCA1LCAzMiwgMjIwLCA3MywgOCwgNiwgMSwgMjE3LCAxLCAzLCAKLSAgICAxNjUsIDgsIDUsIDEsIDIxNywgMSwgMywgMTY1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMTcsIAotICAgIDEsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMTcsIDEsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxNywgMSwgMywgMjQ3LCAyOSwgCi0gICAgOCwgNiwgMSwgMjE1LCA5NCwgMywgMTY1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAxNjUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIAotICAgIDI0NiwgNTIsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NiwgMjMxLCA4LCAKLSAgICA1LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjE1LCAKLSAgICA5NCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NiwgCi0gICAgMjMxLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAKLSAgICAyMTAsIDcwLCAzLCA5NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMywgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDEwNiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAKLSAgICAxNzAsIDgsIDYsIDEsIDEwNiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDEwNiwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDEwNiwgCi0gICAgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNiwgMSwgMTA2LCAzLCA1MiwgMTY1LCAKLSAgICA4LCA1LCAxLCAxMDYsIDMsIDUyLCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMTA2LCAzLCAyMjAsIAotICAgIDYyLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDI0NiwgNTIsIDgsIDYsIAotICAgIDEsIDIwMywgMTI1LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMTY1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMTY1LCAKLSAgICA4LCA2LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDIsIAotICAgIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDE2MywgMTk0LCA4LCA1LCAKLSAgICAxLCA2NiwgMywgOTUsIDgsIDYsIDEsIDY2LCAzLCAxMTMsIDgsIDYsIDEsIDY2LCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgNjYsIAotICAgIDMsIDIwOCwgMTQyLCA4LCA2LCAxLCAxNDMsIDE5NSwgOCwgNSwgMSwgMTQzLCAxOTUsIDgsIDYsIDEsIDE3MSwgNzgsIDgsIAotICAgIDYsIDEsIDI0NywgMTI2LCAzLCAxMTMsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxMTMsIDgsIDYsIDEsIDI1MSwgODQsIDI0NSwgCi0gICAgNTEsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDExMywgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIAotICAgIDI0NSwgNTIsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjQ0LCAzNywgOCwgNiwgMSwgMjE2LCA3MywgNzQsIAotICAgIDgsIDYsIDEsIDIxNCwgMTkyLCA4LCA2LCAxLCAxNzEsIDc0LCA4LCA2LCAxLCAyNDAsIDE3NSwgMywgMTEzLCA4LCA1LCAxLCAKLSAgICAyNDAsIDE3NSwgMywgMTEzLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAxMTMsIDgsIDYsIDEsIDIzOCwgMjM1LCA4LCA1LCAxLCAKLSAgICAyMzUsIDI1NSwgOCwgNiwgMSwgMjMwLCAyMzAsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgCi0gICAgMywgMTEzLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAxMTMsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxNDIsIDgsIDUsIDEsIAotICAgIDIyOCwgMjYsIDMsIDk1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA0OSwgCi0gICAgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTYzLCA1MCwgMjI3LCAyMTAsIDgsIDYsIDEsIDE1OCwgMywgMTAxLCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDUzLCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTMsIDgsIDYsIDEsIDIyMCwgCi0gICAgNTcsIDgsIDUsIDEsIDIyMCwgNTcsIDgsIDYsIDEsIDIxOSwgMTg1LCAzLCAxMTMsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAKLSAgICAxMTMsIDgsIDEsIDIwMiwgMjE2LCA4LCA2LCAxLCAxNDMsIDEwOCwgOCwgNSwgMSwgMTQzLCAxMDgsIDgsIDYsIDEsIDI0MSwgCi0gICAgNywgOCwgMSwgMjE2LCA3MywgMjQxLCA4LCAyMjcsIDE0LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyMTksIDE0MiwgMTEzLCA4LCAKLSAgICA2LCAxLCAyMTAsIDcwLCAzLCAxMTMsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDExMywgOCwgNiwgMSwgMjEwLCA3MCwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTMsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1MywgOCwgNiwgCi0gICAgMSwgMjA2LCAyMTYsIDgsIDYsIDEsIDIwNiwgMTY1LCAzLCAxMTMsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAxMTMsIDgsIDUsIAotICAgIDEsIDIwMywgMTI1LCAzLCAxMTMsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCA5NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDk1LCAKLSAgICA4LCA2LCAxLCAyNDAsIDE3NywgOCwgNiwgMSwgMjQwLCAxNzgsIDIxNiwgNzIsIDgsIDUsIDEsIDI0MCwgMTc4LCAyMTYsIAotICAgIDcyLCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjA5LCAyNDgsIDgsIDEsIDEyMCwgMywgOTUsIDgsIDYsIDEsIDE0MywgMTcwLCAKLSAgICA4LCA1LCAxLCAxNDMsIDE3MCwgOCwgMSwgMjMwLCAyMzksIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCAxLCAyMDMsIAotICAgIDE5OSwgOCwgMSwgMjQ0LCAzMCwgMjQ2LCAyNywgOCwgMSwgMjI3LCAyNTQsIDI0NiwgMjcsIDgsIDEsIDI1MCwgMjQ4LCAKLSAgICAyNDYsIDI3LCA4LCAxLCAyMTYsIDc5LCAyNDYsIDI3LCA4LCA2LCAxLCAyNDIsIDEsIDMsIDI0NywgMjksIDgsIDYsIDEsIAotICAgIDI0NSwgNTIsIDMsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyNDIsIDEsIDMsIDI0NywgMjksIDgsIAotICAgIDYsIDEsIDIyNywgODEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA1LCAxLCAyMzAsIDE4NCwgOCwgNSwgMSwgMjI3LCA4MSwgOCwgCi0gICAgNiwgMSwgMjIyLCA0OSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDUsIDEsIDIzMCwgMTg0LCA4LCA1LCAxLCAyMjIsIDQ5LCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIAotICAgIDI5LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMTU4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAKLSAgICAxNTgsIDMsIDI0NywgMjksIDgsIDYsIDEsIDEwNiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTA2LCAzLCAyNDcsIDI5LCA4LCAKLSAgICA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIAotICAgIDE3MCwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIAotICAgIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDI0NywgMjksIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIAotICAgIDI1LCAyNDcsIDI5LCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgCi0gICAgMjQzLCAyMzIsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjA3LCAxNzQsIDc0LCA4LCA2LCAxLCAzNCwgMywgMjQzLCAyMzIsIAotICAgIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDM0LCAzLCA3MCwgCi0gICAgODcsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDcwLCA4NywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAyNTEsIAotICAgIDExMCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDI1MSwgMTEwLCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgCi0gICAgOTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDk1LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzksIAotICAgIDc2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDcsIAotICAgIDI5LCA4LCA2LCAxLCAxNTgsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDE1OCwgMywgMjIwLCA2MiwgOCwgNiwgMSwgMTU4LCAzLCAKLSAgICAyMjAsIDYzLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjIwLCA2MywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKLSAgICAyNDAsIDE3OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzMCwgMTg1LCAKLSAgICAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDIsIDAsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDUsIDEsIDIwMiwgMTU5LCA4LCA1LCAKLSAgICAxLCAyNDIsIDAsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDE2NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAyMzUsIDI1MiwgOCwgNiwgMSwgMjAzLCAxOTksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCi0gICAgMjIzLCAxNjQsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjE1LCAyNTMsIDg3LCAyNSwgMTY1LCA4LCA1LCAxLCAKLSAgICAzNCwgMywgMjE1LCAyNTMsIDg3LCAyNSwgMTY1LCA4LCA2LCAxLCAyNTEsIDExMCwgMywgMTY1LCA4LCA1LCAxLCAyNTEsIAotICAgIDExMCwgMywgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDIxMSwgMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjExLCAzMiwgCi0gICAgMjUsIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDUyLCAyMzcsIDI1MywgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMzQsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgCi0gICAgNiwgMSwgMTg4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIAotICAgIDYsIDEsIDE1OCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAKLSAgICAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE1OCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMTcsIAotICAgIDEsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMjE3LCAxLCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDIxNywgMSwgMywgCi0gICAgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMTA2LCAKLSAgICAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDIzMCwgCi0gICAgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIAotICAgIDI0NSwgMjM0LCA1NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjQ1LCAyMzQsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAKLSAgICAyNDUsIDIzNCwgNTYsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NSwgMjM0LCA1NiwgOCwgNiwgMSwgMjAyLCAyMzQsIDgsIDUsIAotICAgIDEsIDIwMiwgMjM0LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NywgCi0gICAgMjksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAxNjMsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjQ1LCAKLSAgICA5NSwgOCwgNiwgMSwgMjE5LCAyMTYsIDgsIDUsIDEsIDIxOSwgMjE2LCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMTEzLCA4LCAKLSAgICA1LCAxLCAyMDIsIDE2MCwgMywgMTEzLCA4LCA2LCAxLCAzNCwgMywgNzAsIDU1LCA4LCA1LCAxLCAzNCwgMywgNzAsIDU1LCAKLSAgICA4LCA2LCAxLCAxODgsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAxNTgsIDMsIAotICAgIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjI1LCAxNzAsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMTU4LCAzLCA3MCwgCi0gICAgODcsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgODcsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAKLSAgICAyNDUsIDk1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ1LCA5NSwgOCwgCi0gICAgNSwgMSwgMjQzLCA4NCwgMjMwLCAxODQsIDgsIDUsIDEsIDI0NCwgMTMwLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjE3LCA2NiwgCi0gICAgMjQzLCAxOTEsIDgsIDYsIDEsIDM0LCAzLCA5NSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDk1LCA4LCA1LCAxLCAyNDcsIAotICAgIDEyNiwgMywgOTUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxNDIsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0MywgMjI4LCA5NSwgCi0gICAgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjEwLCAxNjksIAotICAgIDIwOSwgMjQ4LCA4LCA2LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCA1LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCA2LCAxLCAKLSAgICA2NiwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMTQyLCA4LCA2LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjQsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgOTUsIDgsIDUsIDEsIDE4OCwgMywgOTUsIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAxODUsIAotICAgIDMsIDk1LCA4LCA2LCAxLCA1LCAyMTcsIDEzNSwgMywgMjM2LCAxMTYsIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMTcsIDEzNSwgMywgCi0gICAgMjM2LCAxMTYsIDIwOSwgMjQ4LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDk1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDk1LCA4LCA2LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgOTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDYzLCA4LCAKLSAgICA1LCAxLCAyNTEsIDIsIDgsIDUsIDEsIDIwNywgMTc0LCAyNTEsIDIsIDgsIDUsIDEsIDY2LCAzLCAxMTMsIDgsIDUsIDEsIAotICAgIDE3MSwgNzgsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyMDksIDI0OCwgOCwgCi0gICAgNSwgMSwgMjQ1LCA1MiwgMywgMTEzLCA4LCA1LCAxLCAyMTYsIDczLCA3NCwgOCwgNSwgMSwgMjE0LCAxOTIsIDgsIDUsIDEsIAotICAgIDIxNCwgMTkzLCAzLCAxMTMsIDgsIDUsIDEsIDE3MSwgNzQsIDgsIDUsIDEsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDUsIDEsIAotICAgIDIxNiwgNzMsIDE3MSwgMTg4LCAzLCAxMTMsIDgsIDUsIDEsIDI0NiwgMTYsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDUsIDEsIAotICAgIDI0MywgODQsIDIzMCwgMTg1LCAzLCA5NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMTEzLCA4LCA1LCAxLCAxMzIsIDIzOSwgCi0gICAgNzUsIDgsIDEsIDUsIDYsIDIzOSwgNzUsIDgsIDUsIDEsIDIzOCwgMjM1LCA4LCA1LCAxLCAyMTYsIDE4MiwgMjM2LCA1MywgCi0gICAgOCwgNSwgMSwgMjA3LCAxNzQsIDIzNywgMTcxLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMTEzLCA4LCA1LCAxLCAyMzcsIDMyLCAKLSAgICAzLCAxMTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAyMzAsIDgsIDEsIDUsIDYsIDc1LCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0OCwgMTI0LCA4LCA1LCAKLSAgICAxLCAyMjgsIDEzMSwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMjcsIDE2NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyNiwgCi0gICAgMTg1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjI2LCAxODYsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAKLSAgICAxMTMsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjE2LCA3OSwgMTEzLCAKLSAgICA4LCAxLCA1LCA2LCAyMjMsIDE2MywgOCwgNSwgMSwgMjQ4LCAyMjUsIDc4LCA4LCAxLCA1LCA2LCAyMjAsIDczLCA4LCA1LCAKLSAgICAxLCAyNDYsIDE2LCAyMjAsIDM2LCA4LCA1LCAxLCAyMTgsIDE5MiwgOCwgNSwgMSwgMjA3LCAxNzQsIDE0NiwgOCwgNSwgMSwgCi0gICAgMjA3LCAxNzQsIDIxNywgMSwgMywgMTYzLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIxNywgMSwgMywgMTEzLCA4LCAKLSAgICA1LCAxLCAyMTcsIDEsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIAotICAgIDIxNywgMSwgMywgMjM5LCAyNDAsIDgsIDUsIDEsIDIxNiwgNzMsIDIxNywgMSwgMywgMjM5LCAyNDAsIDgsIDEsIDUsIDYsIAotICAgIDE0NiwgOCwgMSwgNSwgNiwgMjMwLCAyMzksIDE0NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTEzLCA4LCA1LCAxLCAyNDEsIAotICAgIDcsIDgsIDUsIDEsIDI0MywgODQsIDIzMCwgMTg1LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCA4LCA1LCAxLCAyMTEsIDE3NCwgCi0gICAgMjE2LCA3MywgMjQxLCA3LCA4LCA1LCAxLCAyNDEsIDgsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTAsIDY5LCAKLSAgICA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDEwNiwgMTQyLCA4LCA1LCAxLCAyMDYsIDIxNiwgCi0gICAgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDExMywgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA4LCA1LCAxLCAyMDcsIAotICAgIDE3NCwgMjA0LCAxNDQsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDMsIDEyNCwgOCwgMSwgNSwgNiwgMjAzLCAxMjQsIDgsIDUsIAotICAgIDEsIDIwMiwgMTYwLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAKLSAgICAyNDAsIDE3NywgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDI0NSwgOTUsIDgsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDEsIAotICAgIDIxOCwgMTk5LCAyMDUsIDE4NiwgMjM5LCAxMjYsIDgsIDEsIDIzMCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCAxLCAKLSAgICAyMTEsIDQwLCAyNDcsIDEyNSwgOCwgMSwgMjQ4LCA3MCwgMjQ2LCAyNywgOCwgMSwgNSwgNiwgMjQ5LCAyNTUsIDgsIDUsIDEsIAotICAgIDI0NiwgMTYsIDE3MSwgNzQsIDgsIDEsIDUsIDYsIDIzOSwgNzYsIDMsIDExMywgOCwgMSwgNSwgNiwgMjM3LCAxNzEsIDgsIAotICAgIDUsIDEsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjA3LCAxNzQsIDIzMCwgNTQsIDgsIDEsIDUsIDYsIDE1OSwgCi0gICAgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIDExMywgOCwgMSwgMjM4LCA0NSwgMjExLCA2MiwgMywgOTUsIDgsIDEsIDIxNiwgNzMsIAotICAgIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCA1LCAxLCAyNDIsIDEsIDI0MywgMTkxLCA4LCA1LCAxLCAyNDQsIDMsIDI0MywgCi0gICAgMTkxLCA4LCA1LCAxLCAyNDIsIDEsIDI0MywgMTkyLCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMDgsIDIyLCAyNDMsIDE5MSwgCi0gICAgOCwgNSwgMSwgMjA5LCAxMzcsIDI0MywgMTkxLCA4LCA1LCAxLCAyMDksIDE5NCwgMjQzLCAxOTIsIDMsIDI0NSwgOTUsIDgsIAotICAgIDUsIDEsIDI0MCwgMzksIDI0MywgMTkxLCA4LCA1LCAxLCAyMjYsIDI0MSwgMjQzLCAxOTEsIDgsIDUsIDEsIDIyNiwgMTg3LCAKLSAgICAyNDMsIDE5MSwgOCwgMSwgMjQ4LCA3MCwgMjE4LCAyNDUsIDgsIDEsIDI0OCwgNzgsIDIxOCwgMjQ1LCA4LCA1LCAxLCAyMDcsIAotICAgIDE3NCwgMjM3LCAxNzIsIDMsIDIzOSwgMjQwLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzIsIDMsIDIzOSwgMjQxLCAyNSwgCi0gICAgMjA5LCAyNDgsIDY1LCAxLCA1LCAyMzcsIDE3MSwgNjUsIDEsIDUsIDIzNywgMTcyLCAzLCAxMTMsIDY1LCAxLCA1LCAyMzAsIAotICAgIDE4NCwgNjUsIDEsIDUsIDE0NiwgNjUsIDEsIDUsIDIwNywgMTc0LCAxNDYsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjE3LCAxLCAKLSAgICAzLCAxMTMsIDY1LCAxLCA1LCA2LCAyMzAsIDIzOSwgMTQ2LCA2NSwgMSwgNSwgMjA0LCAxNDQsIDY1LCAxLCA1LCAyMDMsIAotICAgIDEyNCwgNjUsIDEsIDIxNywgMjM2LCA2NSwgMSwgNTIsIDIxNywgMjM2LCA2NSwgMSwgMjA3LCAxNzQsIDI0NSwgMjMzLCA2NSwgCi0gICAgMSwgMjUwLCAxNjAsIDY1LCAxLCAyMTYsIDczLCAyNDUsIDIzMywgNjUsIDEsIDUwLCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgCi0gICAgNDksIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA2NSwgMSwgMjE2LCA3MywgMjM4LCA0NSwgMjExLCAKLSAgICA2MSwgNjUsIDEsIDQ5LCAyNTAsIDk0LCA2NSwgMSwgNTAsIDI1MCwgOTQsIDY1LCAxLCAxMTIsIDI1MCwgOTQsIDY1LCAxLCAKLSAgICAxMjEsIDI1MCwgOTQsIDY1LCAxLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjQ3LCAyOSwgNjUsIDEsIDgwLCAyMjcsIDExNCwgNjUsIAotICAgIDEsIDIyNSwgMTcwLCA2NSwgMSwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjM3LCAyNTQsIDI1MSwgMTM4LCA2NSwgMSwgCi0gICAgMTI0LCA4MCwgMjI3LCAxMTQsIDY1LCAxLCAxMjQsIDIyNSwgMTcwLCA2NSwgMSwgMTI0LCAyMzcsIDI1NCwgMjUxLCAxMzgsIAotICAgIDY1LCAxLCAxMjQsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIwOCwgODIsIDI0NSwgMjQyLCA2NSwgMSwgMTYyLCAKLSAgICAyMDgsIDgyLCAyNDUsIDI0MiwgNjUsIDEsIDI0NiwgMjE2LCA1MCwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDI0NiwgMjE2LCAKLSAgICA0OSwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDExMiwgMjEwLCAzLCA2NSwgMSwgMTIxLCAyMTAsIDMsIDY1LCAxLCA5MSwgNTQsIAotICAgIDY1LCAxLCAyMjQsIDEwMywgNTQsIDI0NywgMjE0LCA3MCwgNTUsIDIxNSwgMjUzLCA1NSwgMjIwLCA2MiwgNSwgMjA4LCAKLSAgICAyMjcsIDUyLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMTYsIDU4LCAxMTMsIDY1LCAxLCAyNDUsIDEzMSwgMjUxLCAKLSAgICAxMzgsIDY1LCAxLCA1LCAyMzgsIDIzNSwgNjUsIDEsIDUsIDE1OSwgNjUsIDEsIDUsIDE5NCwgNjUsIDEsIDUsIDIwMywgCi0gICAgMTk2LCA2NSwgMSwgNSwgMjE2LCA3MywgMjM4LCA0NSwgMjExLCA2MSwgNjUsIDEsIDI0MCwgMTk4LCAxNDMsIDE0MiwgNjUsIAotICAgIDEsIDEzOCwgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDE0MywgMTQyLCA2NSwgMSwgCi0gICAgMjQwLCAxOTcsIDE0MywgMTQyLCA2NSwgMSwgMjAzLCAxLCAyNDQsIDI3LCAxNDMsIDgyLCA2NSwgMSwgMjAzLCA3NywgMjQ0LCAKLSAgICAyNywgMTQzLCA4MiwgNjUsIDEsIDIwNSwgMTg0LCA2NSwgMSwgMjA2LCAyNTEsIDY1LCAxLCA1MiwgMjUwLCAxNjAsIDY1LCAKLSAgICAxLCAxMjQsIDEyMSwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgMTEyLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCA0OSwgMjUwLCA5NCwgCi0gICAgNjUsIDEsIDEyNCwgNTAsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDIxNSwgMjUyLCA2NSwgMSwgMTAxLCAyMzcsIDI1NCwgMjUxLCAKLSAgICAxMzgsIDY1LCAxLCAxMDEsIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDY1LCAxLCAxMDEsIDUyLCAyNTEsIDEyNiwgMjUxLCAKLSAgICAxMzgsIDY1LCAxLCAxMjQsIDIwOCwgMjI3LCA2NSwgMSwgMjE2LCAxODgsIDI0NSwgMjQyLCA2NSwgMSwgMjQ4LCAxNDIsIAotICAgIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyNDEsIDg0LCAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjQ4LCAxNDIsIDEyNCwgMjA4LCAKLSAgICAxNjEsIDY1LCAxLCAyNDEsIDg0LCAxMjQsIDIwOCwgMTYxLCA2NSwgMSwgMjEzLCAzNCwgNjUsIDEsIDE3MSwgMjEzLCAzNCwgCi0gICAgNjUsIDEsIDEyNCwgNDksIDQ3LCAzOSwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgCi0gICAgMjQ2LCA1MywgMjUxLCAxMzgsIDM5LCAyMDgsIDIyNywgMzksIDIyNSwgMTcwLCAzOSwgMjE5LCAxOTgsIDM5LCAyNDcsIAotICAgIDIxNCwgMzksIDcwLCA1NSwgMzksIDI0MywgMjMxLCAzOSwgMjM2LCAxMTYsIDU1LCAzOSwgMjE1LCAyNTMsIDU1LCAzOSwgCi0gICAgNTIsIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIDI0NywgMjksIDM5LCA4MCwgMjI3LCAxMTUsIDU1LCAzOSwgNTIsIDgwLCAKLSAgICAyMjcsIDExNSwgNTUsIDM5LCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgMjQ3LCA1MiwgMzksIDIzMCwgMjM5LCAyNDcsIAotICAgIDIxNCwgMzksIDIwNywgMTc0LCAyNDUsIDIzNCwgNTUsIDM5LCAyNDUsIDIzNCwgNTUsIDM5LCAyMTYsIDczLCAyNDUsIDIzNCwgCi0gICAgNTUsIDM5LCAyNDUsIDIzNCwgODcsIDIxNiwgMTYsIDM5LCAyMzcsIDI1NCwgMjUxLCAxMzksIDU2LCAzOSwgMjUxLCAxMjYsIAotICAgIDI1MSwgMTM5LCA1NiwgMzksIDQ5LCAyMTAsIDQsIDU2LCAzOSwgNTAsIDIxMCwgNCwgNTYsIDM5LCA0OSwgMjUwLCAyMTgsIAotICAgIDU1LCAzOSwgMjM2LCA1MywgMzksIDQ5LCAxNjIsIDIxNSwgMjUzLCA1NiwgMzksIDExMiwgMjEwLCA0LCA1NiwgMzksIDEyMSwgCi0gICAgMjEwLCA0LCA1NiwgMzksIDkxLCAyLCA1NiwgMzksIDIyNCwgMTAzLCAyLCA1NiwgMzksIDIxOSwgMTQwLCAyMzYsIDExNiwgCi0gICAgNTYsIDM5LCAyMTYsIDc5LCAyMzYsIDExNiwgNTYsIDM5LCA3MCwgNTYsIDM5LCAyNDMsIDIzMiwgNTYsIDM5LCAyMTUsIAotICAgIDI1MywgNTYsIDM5LCAyNDUsIDIzNCwgNTYsIDM5LCAyNDYsIDIzMSwgMzksIDIyMCwgNjIsIDM5LCA4MCwgMjI3LCAxMTUsIAotICAgIDU2LCAzOSwgMjQ3LCAyMDgsIDU2LCAzOSwgMjMwLCAyMzksIDUyLCAyNTAsIDEyNywgNTYsIDM5LCAyNDcsIDMwLCA1NiwgCi0gICAgMzksIDI0NiwgNTMsIDI1MSwgMTM5LCA1NiwgMzksIDI0NywgMjE1LCA1NiwgMzksIDIzMCwgMjM5LCAyNDcsIDIxNSwgNTYsIAotICAgIDM5LCAyMDgsIDIyOCwgNTYsIDM5LCAyMjUsIDE3MSwgNTYsIDM5LCAxMjQsIDIyNywgMTE0LCAzOSwgNTIsIDEyNCwgMjI3LCAKLSAgICAxMTQsIDM5LCAyMDgsIDIyOCwgMjE5LCAxOTksIDM5LCAyMTIsIDIyOCwgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAxNjMsIAotICAgIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgMjEyLCAyMjgsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCAxNjMsIDIxMiwgMSwgMjE5LCAKLSAgICAxOTksIDM5LCA1MCwgMTYyLCAyMTUsIDI1MywgNTYsIDM5LCAyMzAsIDIzOSwgMjQ3LCAyMDgsIDU2LCAzOSwgNTEsIDU2LCAKLSAgICAzOSwgMjE0LCAxNzYsIDU2LCAzOSwgMjAzLCAxOTcsIDU1LCAzOSwgODAsIDIwOCwgMjI3LCAzOSwgNTIsIDIxOSwgMTk4LCAKLSAgICAzOSwgMjM3LCAyNTQsIDE0MywgODIsIDM5LCAyNTEsIDEyNiwgMTQzLCA4MiwgMzksIDMwLCAyMTgsIDIzOSwgMzksIDMwLCAKLSAgICAyMjgsIDI1MiwgMzksIDMwLCAyNDMsIDIyNSwgMjA4LCAxNDksIDM5LCAzMCwgMjAyLCAyMjEsIDM5LCAyNDcsIDIwOCwgNTUsIAotICAgIDM5LCAyNDEsIDM1LCAyLCA1NiwgMzksIDUyLCA4MCwgMjI3LCAxMTUsIDU2LCAzOSwgNDksIDI1MCwgMjE4LCA1NiwgMzksIAotICAgIDIyMSwgMTY2LCAyMDgsIDIyOCwgNTUsIDM5LCAyMzYsIDEyMiwgNTUsIDM5LCAyNTEsIDcsIDE1NiwgMjA4LCAxNzMsIDU1LCAKLSAgICAzOSwgNDksIDUwLCA1MywgNTYsIDM5LCAxNzcsIDUzLCA1NiwgMzksIDIzOCwgNCwgMjMwLCA5NiwgMzksIDUwLCAyNTAsIAotICAgIDk1LCA1NSwgMzksIDQ5LCAxNjIsIDIxNSwgMjUzLCA1NSwgMzksIDI0MCwgMzYsIDM5LCAyMDMsIDE5NywgNTYsIDM5LCA0OSwgCi0gICAgMjUwLCA5NSwgNTYsIDM5LCA1MCwgMjUwLCA5NSwgNTYsIDM5LCA1MCwgMjUwLCA5NSwgMjUsIDExMiwgMjUwLCA5NSwgNTYsIAotICAgIDM5LCA1MCwgMTYyLCAyMTUsIDI1MywgNTUsIDM5LCA3MCwgODcsIDIxNiwgMTYsIDM5LCAyNTAsIDYwLCA1NiwgMzksIDUyLCAKLSAgICAyMTUsIDI1MywgNTYsIDM5LCAyMDIsIDMwLCA1NSwgMzksIDUyLCAyNDcsIDIxNSwgNTYsIDM5LCA1MiwgMjQ3LCAyMTQsIAotICAgIDM5LCA1MiwgMjI1LCAxNzAsIDM5LCA1MiwgMjI1LCAxNzEsIDU2LCAzOSwgNTIsIDIwOCwgMjI3LCAzOSwgNTIsIDIzMCwgCi0gICAgMjM5LCAyNDcsIDIxNCwgMzksIDUyLCA4NiwgNTMsIDU2LCAzOSwgOCwgNSwgMSwgNjMsIDM5LCA4LCA1LCAxLCA3NCwgMzksIAotICAgIDgsIDUsIDEsIDc1LCAzOSwgOCwgNSwgMSwgNzgsIDM5LCA4LCA1LCAxLCA2OCwgMzksIDgsIDUsIDEsIDI0NywgMTI1LCAzOSwgCi0gICAgOCwgNSwgMSwgMjQ1LCA1MSwgMzksIDgsIDUsIDEsIDIzNywgMTcxLCAzOSwgOCwgNSwgMSwgMjI2LCAxODUsIDM5LCA4LCA1LCAKLSAgICAxLCAxNDYsIDM5LCA4LCA1LCAxLCAyMTAsIDY5LCAzOSwgOCwgNSwgMSwgMjA2LCAxNjQsIDM5LCA4LCA1LCAxLCAyMDMsIAotICAgIDE5NiwgMzAsIDYsIDEsIDIzNywgMjAsIDMwLCA1LCAxLCAyMzcsIDIwLCAzMCwgNiwgMSwgMjUwLCAxMjYsIDIxNCwgMjQ2LCAKLSAgICAzMCwgNSwgMSwgMjUwLCAxMjYsIDIxNCwgMjQ2LCAzMCwgMjIxLCA0NCwgNTQsIDMwLCAyMjYsIDI1MSwgMjIxLCA0NCwgNTQsIAotICAgIDMwLCA2LCAxLCAyMTksIDEyNiwgMjQzLCAxOTksIDMwLCA1LCAxLCAyMTksIDEyNiwgMjQzLCAxOTksIDMwLCAyMDIsIDIyMSwgCi0gICAgMzAsIDUsIDIxNiwgNzMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA1LCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAKLSAgICAxNDUsIDk3LCAzMCwgNSwgMjE2LCA3MywgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDIxNywgNDcsIAotICAgIDgyLCAzMCwgNiwgMSwgMjAyLCAyMjcsIDMwLCAyMDgsIDE0OSwgMzAsIDI0MywgMjI1LCAyMDgsIDE0OSwgMzAsIDYsIDEsIAotICAgIDI1MSwgMywgMywgMjA4LCAxNDksIDMwLCAyNTAsIDIwMywgMjA5LCAxNjMsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMDgsIAotICAgIDE0OSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMDgsIDE0OSwgCi0gICAgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgCi0gICAgMSwgMjIwLCAzNywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMDgsIDE0OSwgCi0gICAgMzAsIDYsIDEsIDI1MSwgMiwgMzAsIDYsIDEsIDI0OCwgMTA2LCAzMCwgNiwgMSwgMjM4LCAyMzUsIDMwLCA2LCAxLCAyNDQsIAotICAgIDM3LCAzMCwgNiwgMSwgMjQxLCAzNywgMzAsIDYsIDEsIDIwMiwgODMsIDMwLCA2LCAxLCAyNDAsIDI0OCwgMzAsIDYsIDEsIAotICAgIDIwOSwgNzQsIDMwLCA2LCAxLCAyMzAsIDIzMCwgMzAsIDYsIDEsIDIyOSwgMjQ3LCAzMCwgNiwgMSwgMjI4LCAyNCwgMzAsIAotICAgIDYsIDEsIDIyMywgMjQ2LCAzMCwgNiwgMSwgMjIxLCA4NCwgMzAsIDYsIDEsIDIwMywgMTcwLCAzMCwgNiwgMSwgMjIwLCAzNCwgCi0gICAgMzAsIDYsIDEsIDIxOCwgMTY3LCAzMCwgNiwgMSwgMjE2LCA1OSwgMzAsIDYsIDEsIDIxMiwgMTQ0LCAzMCwgNiwgMSwgMjA5LCAKLSAgICAyMDcsIDMwLCA2LCAxLCAyMDYsIDIxNiwgMzAsIDYsIDEsIDIxOCwgMTkyLCAzMCwgNiwgMSwgMjQ2LCAxNDIsIDMwLCA2LCAKLSAgICAxLCAyMTcsIDIwMiwgMzAsIDYsIDEsIDIyMCwgMzYsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjQsIDMwLCA2LCAKLSAgICAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjQsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjQxLCAKLSAgICAzOCwgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgCi0gICAgMjA4LCAxNDksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI1MSwgCi0gICAgMiwgMzAsIDUsIDEsIDI0OCwgMTA2LCAzMCwgNSwgMSwgMjM4LCAyMzUsIDMwLCA1LCAxLCAyNDQsIDM3LCAzMCwgNSwgMSwgCi0gICAgMjQxLCAzNywgMzAsIDUsIDEsIDIwMiwgODMsIDMwLCA1LCAxLCAyNDAsIDI0OCwgMzAsIDUsIDEsIDIwOSwgNzQsIDMwLCA1LCAKLSAgICAxLCAyMzAsIDIzMCwgMzAsIDUsIDEsIDIyOSwgMjQ3LCAzMCwgNSwgMSwgMjI4LCAyNCwgMzAsIDUsIDEsIDIyMywgMjQ2LCAKLSAgICAzMCwgNSwgMSwgMjIxLCA4NCwgMzAsIDUsIDEsIDIwMywgMTcwLCAzMCwgNSwgMSwgMjIwLCAzNCwgMzAsIDUsIDEsIDIxOCwgCi0gICAgMTY3LCAzMCwgNSwgMSwgMjE2LCA1OSwgMzAsIDUsIDEsIDQ2LCAyMTIsIDE0NCwgMzAsIDUsIDEsIDIxMiwgMTQ0LCAzMCwgCi0gICAgNSwgMSwgMjA5LCAyMDcsIDMwLCA1LCAxLCAyMDYsIDIxNiwgMzAsIDUsIDEsIDIxOCwgMTkyLCAzMCwgNSwgMSwgMjQ2LCAKLSAgICAxNDIsIDMwLCA1LCAxLCAyMTcsIDIwMiwgMzAsIDUsIDEsIDIyMCwgMzYsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAKLSAgICAyMjQsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjQsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMDgsIDE0OSwgMzAsIAotICAgIDUsIDEsIDIwNiwgMjE3LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMjMwLCAKLSAgICAxOSwgOTcsIDMwLCAyNDgsIDEwNywgOTcsIDMwLCAyMDksIDc1LCA5NywgMzAsIDIwNiwgMjE3LCAzLCAyMzYsIDExNiwgOTcsIAotICAgIDMwLCAyMDYsIDIxNywgMywgMjUxLCAxMjYsIDI1LCAyMzYsIDExNiwgOTcsIDMwLCAyMDYsIDIxNywgMywgMjQzLCAyMzIsIAotICAgIDI1LCAyMzYsIDExNiwgOTcsIDMwLCAyMTgsIDE5MywgOTcsIDMwLCAyMTgsIDE2OCwgOTcsIDMwLCAyMzAsIDE5LCA5NywgCi0gICAgMzAsIDEsIDI1MCwgMTI2LCAyMjksIDAsIDMwLCA1LCAxLCAyNTAsIDEyNiwgMjI5LCAwLCAzMCwgMSwgMjExLCA3MSwgMzAsIAotICAgIDUsIDEsIDIxMSwgNzEsIDMwLCAxLCAyNDMsIDE5OSwgMzAsIDUsIDEsIDI0MywgMTk5LCAzMCwgMSwgMjI5LCAwLCAzMCwgNSwgCi0gICAgMSwgMjI5LCAwLCAzMCwgMSwgMjE0LCAyNDYsIDMwLCA1LCAxLCAyMTQsIDI0NiwgODQsIDYsIDEsIDIxMywgMzUsIDg0LCA1LCAKLSAgICAxLCAyMTMsIDM1LCA4NCwgNiwgMSwgMjQwLCA0NSwgODQsIDUsIDEsIDI0MCwgNDUsIDg0LCA2LCAxLCAyMjksIDEyNywgODQsIAotICAgIDUsIDEsIDIyOSwgMTI3LCA4NCwgNiwgMSwgMjM2LCAxMDcsIDg0LCA1LCAxLCAyMzYsIDEwNywgODQsIDYsIDEsIDIzOCwgCi0gICAgMjMwLCA4NCwgNSwgMSwgMjM4LCAyMzAsIDg0LCA2LCAxLCAyMTMsIDEsIDg0LCA1LCAxLCAyMTMsIDEsIDg0LCA2LCAxLCAKLSAgICAyNDQsIDUyLCA4NCwgNSwgMSwgMjQ0LCA1MiwgMzAsIDIyOSwgMjQ4LCA5NywgMzAsIDIxNiwgNjAsIDk3LCAzMCwgMjI2LCAKLSAgICAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDEsIDIwMiwgMjI3LCAzMCwgNiwgMjA5LCA3NSwgOTcsIDMwLCAyMjYsIDIyMSwgCi0gICAgMjQxLCAzOCwgOTcsIDMwLCAyMTYsIDczLCAyMjYsIDIyMSwgMjQxLCAzOCwgOTcsIDMwLCA2LCAxLCAyMTIsIDI0MiwgMzAsIAotICAgIDUsIDEsIDIxMiwgMjQyLCAzMCwgNiwgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDYsIDEsIDIxNCwgMjQzLCAzMCwgNSwgCi0gICAgMSwgMjE0LCAyNDMsIDMwLCAyMTYsIDYwLCAzLCAyMTEsIDMyLCA5NywgMzAsIDYsIDIxNiwgNzMsIDIyNiwgMjIxLCAyMTIsIAotICAgIDE0NSwgOTcsIDMwLCA2LCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNiwgMjE2LCA3MywgMjQyLCA4MywgCi0gICAgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzYsIDYsIDEsIDIzMSwgMTExLCAzLCAyMzcsIDI1MywgMzYsIDYsIDEsIDIzMCwgCi0gICAgMjM0LCAzNiwgNiwgMSwgMjQzLCAxMzAsIDM2LCA2LCAxLCAyMzgsIDUyLCAzNiwgNiwgMSwgMjA3LCAxMSwgMjMxLCAxMTAsIAotICAgIDM2LCA2LCAxLCAyNDEsIDI1MiwgMzYsIDYsIDEsIDI0NywgMTM1LCA3NSwgMzYsIDYsIDEsIDIwMywgMTEsIDM2LCA2LCAxLCAKLSAgICAyMzAsIDE2MSwgMzYsIDYsIDEsIDIyNywgODAsIDM2LCA2LCAxLCAyMjIsIDQxLCAzNiwgNiwgMSwgMjA4LCA4LCAzNiwgNiwgCi0gICAgMSwgMjI5LCA0OSwgMzYsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgMzYsIDYsIDEsIDIxMiwgMjI4LCA2OCwgMzYsIAotICAgIDYsIDEsIDI0MSwgMjQ4LCAzNiwgNiwgMSwgNjMsIDM2LCA2LCAxLCAyNDgsIDE2MiwgMzYsIDYsIDEsIDIwNiwgNTUsIDM2LCAKLSAgICA2LCAxLCAyMzgsIDEwNSwgMzYsIDYsIDEsIDI0NCwgNzUsIDM2LCA2LCAxLCAyMzEsIDExMCwgMzYsIDYsIDEsIDIwMiwgNzEsIAotICAgIDM2LCA2LCAxLCAyMDIsIDkyLCAzNiwgNiwgMSwgNzUsIDM2LCA2LCAxLCAyMTIsIDIyOCwgNzUsIDM2LCA2LCAxLCAxNzMsIAotICAgIDM2LCA2LCAxLCAyNDEsIDEyMiwgMzYsIDYsIDEsIDI0MSwgMTAzLCAzNiwgNiwgMSwgMjQxLCA5MiwgMzYsIDYsIDEsIDc4LCAKLSAgICAzNiwgNiwgMSwgMjE5LCAzNCwgMzYsIDYsIDEsIDI0MSwgMjgsIDM2LCA2LCAxLCAyNDEsIDE3LCAzNiwgNiwgMSwgMjA5LCAKLSAgICAxODcsIDM2LCA2LCAxLCA2OCwgMzYsIDYsIDEsIDI0MSwgMTU0LCAzNiwgNiwgMSwgMTUyLCAzNiwgNiwgMSwgMjA4LCAxNCwgCi0gICAgMzYsIDYsIDEsIDI0NiwgMTcwLCAzNiwgNiwgMSwgMjEzLCA5MCwgMzYsIDYsIDEsIDIxMywgNDYsIDM2LCA2LCAxLCAyMzcsIAotICAgIDkxLCA1NCwgMzYsIDYsIDEsIDIwMywgMzAsIDM2LCA2LCAxLCAyMTIsIDcsIDU0LCAzNiwgNiwgMSwgNzQsIDM2LCA2LCAxLCAKLSAgICAyMDIsIDIxMywgMzYsIDYsIDEsIDE5OCwgMzYsIDUsIDEsIDYzLCAzNiwgNSwgMSwgMjQ4LCAxNjIsIDM2LCA1LCAxLCAyMDYsIAotICAgIDU1LCAzNiwgNSwgMSwgMjM4LCAxMDUsIDM2LCA1LCAxLCAyNDQsIDc1LCAzNiwgNSwgMSwgMjMxLCAxMTAsIDM2LCA1LCAxLCAKLSAgICAyMDIsIDcxLCAzNiwgNSwgMSwgMjAyLCA5MiwgMzYsIDUsIDEsIDc1LCAzNiwgNSwgMSwgMjEyLCAyMjgsIDc1LCAzNiwgNSwgCi0gICAgMSwgMTczLCAzNiwgNSwgMSwgMjQxLCAxMjIsIDM2LCA1LCAxLCAyNDEsIDEwMywgMzYsIDUsIDEsIDI0MSwgOTIsIDM2LCA1LCAKLSAgICAxLCA3OCwgMzYsIDUsIDEsIDIxOSwgMzQsIDM2LCA1LCAxLCAyNDEsIDI4LCAzNiwgNSwgMSwgMjQxLCAxNywgMzYsIDUsIDEsIAotICAgIDIwOSwgMTg3LCAzNiwgNSwgMSwgNjgsIDM2LCA1LCAxLCAyNDEsIDE1NCwgMzYsIDUsIDEsIDE1MiwgMzYsIDUsIDEsIDIwOCwgCi0gICAgMTQsIDM2LCA1LCAxLCAyNDYsIDE3MCwgMzYsIDUsIDEsIDIxMywgOTAsIDM2LCA1LCAxLCAyMTMsIDQ2LCAzNiwgNSwgMSwgCi0gICAgMjM3LCA5MSwgNTQsIDM2LCA1LCAxLCAyMDMsIDMwLCAzNiwgNSwgMSwgMjEyLCA3LCA1NCwgMzYsIDUsIDEsIDc0LCAzNiwgCi0gICAgNSwgMSwgMjAyLCAyMTMsIDM2LCA1LCAxLCAxOTgsIDM2LCA1LCAxLCAyMzEsIDExMSwgMywgMjM3LCAyNTMsIDM2LCA1LCAxLCAKLSAgICAyMzAsIDIzNCwgMzYsIDUsIDEsIDI0MywgMTMwLCAzNiwgNSwgMSwgMjM4LCA1MiwgMzYsIDUsIDEsIDIwNywgMTEsIDIzMSwgCi0gICAgMTEwLCAzNiwgNSwgMSwgMjQxLCAyNTIsIDM2LCA1LCAxLCAyNDcsIDEzNSwgNzUsIDM2LCA1LCAxLCAyMDMsIDExLCAzNiwgCi0gICAgNSwgMSwgMjMwLCAxNjEsIDM2LCA1LCAxLCAyMjcsIDgwLCAzNiwgNSwgMSwgMjIyLCA0MSwgMzYsIDUsIDEsIDIwOCwgOCwgCi0gICAgMzYsIDUsIDEsIDIyOSwgNDksIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDM2LCA1LCAxLCAyMTIsIDIyOCwgCi0gICAgNjgsIDM2LCA1LCAxLCAyNDEsIDI0OCwgMzYsIDYsIDEsIDIyMCwgMzYsIDM2LCA1LCAxLCAyMjAsIDM2LCAzNiwgNiwgMSwgCi0gICAgMjAzLCA2NiwgMzYsIDUsIDEsIDIwMywgNjYsIDM2LCA2LCAxLCAyMzAsIDIyOCwgNzQsIDM2LCA1LCAxLCAyMzAsIDIyOCwgCi0gICAgNzQsIDM2LCA2LCAxLCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNiwgMSwgCi0gICAgMjMwLCAyMjgsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgCi0gICAgNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDYsIDEsIDIzMCwgMjI4LCAKLSAgICAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDYsIDEsIDIyOCwgCi0gICAgMjI1LCAzNiwgNSwgMSwgMjI4LCAyMjUsIDM2LCA2LCAxLCAyMTcsIDIwMiwgMzYsIDUsIDEsIDIxNywgMjAyLCAzNiwgNiwgCi0gICAgMSwgMjM5LCAyMzUsIDM2LCA1LCAxLCAyMzksIDIzNSwgMzYsIDYsIDEsIDIzMCwgMTg2LCAzNiwgNSwgMSwgMjMwLCAxODYsIAotICAgIDM2LCA2LCAxLCAyMzAsIDE4NywgMywgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzYsIDUsIDEsIDIzMCwgMTg3LCAzLCA1MiwgCi0gICAgMjM3LCAyNTQsIDI1MSwgMTM4LCAzNiwgNiwgMSwgMjA3LCAxNCwgMzYsIDUsIDEsIDIwNywgMTQsIDM2LCA2LCAxLCAyMTUsIAotICAgIDE5MSwgMjIwLCAzNiwgMzYsIDUsIDEsIDIxNSwgMTkxLCAyMjAsIDM2LCAzNiwgNiwgMSwgMjIwLCAzNywgMywgMjA4LCAKLSAgICAxOTcsIDM2LCA1LCAxLCAyMjAsIDM3LCAzLCAyMDgsIDE5NywgMzYsIDYsIDEsIDIxOSwgMjI0LCAzNiwgNSwgMSwgMjE5LCAKLSAgICAyMjQsIDM2LCA2LCAxLCAyMjksIDAsIDM2LCA1LCAxLCAyMjksIDAsIDM2LCAyMDksIDM1LCA1NCwgMzksIDM2LCAyMDgsIAotICAgIDE5NywgMzksIDM2LCAyMTksIDE0MSwgMzksIDM2LCAyNDQsIDE0MiwgMjE4LCA3MSwgMzksIDM2LCAyMTcsIDE5NiwgMjE4LCAKLSAgICA3MSwgMzksIDM2LCAyMTgsIDU1LCAzOSwgMzYsIDIzNiwgMTIsIDIwOSwgMzUsIDU0LCAzOSwgMzYsIDIyNCwgMTE0LCA1NCwgCi0gICAgMzYsIDYsIDEsIDIxMiwgMjI4LCAyMzUsIDIwNiwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyMTIsIDIyOCwgMjM1LCAyMDYsIAotICAgIDMsIDIwOSwgMjQ4LCAzNiwgNiwgMSwgMjEzLCAxMzksIDU0LCAzNiwgNSwgMSwgMjEzLCAxMzksIDU0LCAzNiwgNiwgMSwgCi0gICAgMjQxLCAyOSwgMywgMjA4LCAyNTQsIDM2LCA1LCAxLCAyNDEsIDI5LCAzLCAyMDgsIDI1NCwgMzYsIDYsIDEsIDIzOCwgMTA2LCAKLSAgICAzLCAyMDYsIDIxNSwgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCAyMDYsIDIxNSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCA5NSwgCi0gICAgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCA5NSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIAotICAgIDIzOCwgMTA2LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDIwMiwgNzIsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDIsIDcyLCAKLSAgICAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjAyLCA5MywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwMiwgOTMsIDMsIDI0NCwgMjAsIAotICAgIDM2LCA2LCAxLCAyMzAsIDQ0LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIAotICAgIDIzMCwgNDQsIDMsIDgwLCA5NSwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDgwLCA5NSwgMzYsIDYsIDEsIDIzMCwgNDQsIDMsIAotICAgIDk1LCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgOTUsIDM2LCA2LCAxLCAyNDgsIDIxNCwgMTczLCAzNiwgNSwgMSwgMjQ4LCAKLSAgICAyMTQsIDE3MywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAyNDQsIDIwLCAKLSAgICAzNiwgNiwgMzIsIDI0MSwgOTMsIDIzOCwgMTA1LCAzNiwgNSwgMzIsIDI0MSwgOTMsIDIzOCwgMTA1LCAzNiwgNiwgMSwgCi0gICAgMjE5LCAzNSwgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyMTksIDM1LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDI1MSwgMTQ1LCAKLSAgICAxNTIsIDM2LCA1LCAxLCAyNTEsIDE0NSwgMTUyLCAzNiwgNiwgMSwgMjQxLCAxOCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIAotICAgIDI0MSwgMTgsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMDksIDE4OCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwOSwgMTg4LCAKLSAgICAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjExLCA1MywgNjgsIDM2LCA1LCAxLCAyMTEsIDUzLCA2OCwgMzYsIDYsIDEsIDIxMSwgCi0gICAgNTMsIDEwNiwgMywgOTUsIDM2LCA1LCAxLCAyMTEsIDUzLCAxMDYsIDMsIDk1LCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIAotICAgIDI0NCwgMjAsIDM2LCA1LCAxLCAyMzcsIDE2MCwgMywgMjQ0LCAyMCwgMzYsIDYsIDMyLCAyMDksIDE4OCwgMjA4LCAxNCwgCi0gICAgMzYsIDUsIDMyLCAyMDksIDE4OCwgMjA4LCAxNCwgMzYsIDYsIDEsIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgCi0gICAgMjQ2LCAxNzEsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgODAsIDk1LCAzNiwgNSwgMSwgMjQ2LCAxNzEsIAotICAgIDMsIDgwLCA5NSwgMzYsIDYsIDEsIDIxMywgMTIsIDM2LCA1LCAxLCAyMTMsIDEyLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0NiwgCi0gICAgMTcwLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDI0NiwgMTcwLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0NiwgMTcxLCAzLCAyNDQsIAotICAgIDIwLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgMSwgMjE5LCAxMzMsIDM2LCA2LCAxLCAKLSAgICAyMDIsIDcyLCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDIwMiwgNzIsIDMsIDI0NywgMjE0LCAzNiwgNiwgMSwgMjMwLCA0NCwgCi0gICAgMywgMTEzLCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgMTEzLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDIwOSwgMjQ4LCAzNiwgCi0gICAgNSwgMSwgMjQxLCAxMjMsIDMsIDIwOSwgMjQ4LCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMTEzLCAzNiwgNSwgMSwgMjQxLCAKLSAgICA5MywgMywgMTEzLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAyMDksIAotICAgIDI0OCwgMzYsIDYsIDEsIDIyOSwgMTM4LCAyNDYsIDE3MCwgMzYsIDUsIDEsIDIyOSwgMTM4LCAyNDYsIDE3MCwgMzYsIDYsIAotICAgIDEsIDI0MSwgMTA0LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDI0MSwgMTA0LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDIxOSwgCi0gICAgMTMzLCAzNiwgNiwgMSwgMzQsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMzQsIDMsIDI0NywgMjE0LCAzNiwgNiwgMSwgMzQsIAotICAgIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMzQsIDMsIDI0MywgMjMxLCAzNiwgNiwgMzIsIDM0LCAyMzEsIDExMCwgMzYsIDUsIAotICAgIDMyLCAzNCwgMjMxLCAxMTAsIDM2LCA2LCAxLCAyMzEsIDExMSwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAyMzEsIDExMSwgMywgCi0gICAgMjQ3LCAyMTQsIDM2LCA2LCAxLCAyMTQsIDE5MiwgMzYsIDUsIDEsIDIxNCwgMTkyLCAzNiwgNiwgMSwgMjE0LCAxOTMsIDMsIAotICAgIDI0MywgMjMxLCAzNiwgNSwgMSwgMjE0LCAxOTMsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjAyLCA3MiwgMywgMjQzLCAKLSAgICAyMzEsIDM2LCA1LCAxLCAyMDIsIDcyLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIwMiwgOTMsIDMsIDI0MywgMjMxLCAzNiwgCi0gICAgNSwgMSwgMjAyLCA5MywgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyNTEsIDE0NSwgMjQxLCAyNTIsIDM2LCA1LCAxLCAyNTEsIAotICAgIDE0NSwgMjQxLCAyNTIsIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzAsIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgMjI1LCAxNzAsIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAKLSAgICAyMzEsIDM2LCA2LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIAotICAgIDI0OCwgMjI1LCA3OCwgMzYsIDUsIDEsIDI0OCwgMjI1LCA3OCwgMzYsIDYsIDEsIDI0OCwgMjI1LCAxNTgsIDMsIDI0MywgCi0gICAgMjMxLCAzNiwgNSwgMSwgMjQ4LCAyMjUsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAxODgsIDMsIDI0MywgMjMxLCAKLSAgICAzNiwgNSwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzAsIDM2LCA1LCAxLCAxMDYsIDMsIAotICAgIDIyNSwgMTcwLCAzNiwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM2LCA2LCAKLSAgICAxLCAxMDYsIDMsIDUyLCAxNjUsIDM2LCA1LCAxLCAxMDYsIDMsIDUyLCAxNjUsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgCi0gICAgMjQzLCAyMzEsIDM2LCA1LCAxLCAyNDYsIDE3MSwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMjQ0LCAKLSAgICAyMCwgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjAzLCAzMSwgMywgMjQzLCAyMzEsIDM2LCAKLSAgICA1LCAxLCAyMDMsIDMxLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCAzNiwgCi0gICAgNSwgMSwgMjM4LCAxMDYsIDMsIDIxMSwgMzIsIDI1LCAxMTMsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgMTEzLCAzNiwgNSwgCi0gICAgMSwgMjM3LCAxNjAsIDMsIDExMywgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCA5NSwgMzYsIDUsIDEsIDIzNywgMTYwLCAzLCAKLSAgICA5NSwgMzYsIDYsIDEsIDIyOSwgMTAsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMjksIDEwLCAyNDQsIDc1LCAzNiwgNiwgMSwgCi0gICAgMjI5LCAxMCwgMjQzLCAxMzAsIDM2LCA1LCAxLCAyMjksIDEwLCAyNDMsIDEzMCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIwMiwgCi0gICAgMjEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMDIsIDIxLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjQxLCAyNDQsIDM2LCA1LCAxLCAKLSAgICAyMjksIDEwLCAyNDEsIDI0NCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIyNywgODAsIDM2LCA1LCAxLCAyMjksIDEwLCAyMjcsIAotICAgIDgwLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjIyLCA0MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIyMiwgNDEsIDM2LCA2LCAxLCAKLSAgICAyMjksIDEwLCAyMTIsIDcxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjEyLCA3MSwgMzYsIDYsIDEsIDIyOSwgMTAsIDIwOCwgCi0gICAgMTkxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjA4LCAxOTEsIDM2LCA2LCAxLCAyMTYsIDczLCAyMDIsIDkyLCAzNiwgNSwgMSwgCi0gICAgMjE2LCA3MywgMjAyLCA5MiwgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAxMTMsIDM2LCA1LCAxLCAyNDEsIDEyMywgMywgMTEzLCAKLSAgICAzNiwgNiwgMSwgMjI3LCAxNjEsIDM2LCA1LCAxLCAyMjcsIDE2MSwgMzYsIDYsIDEsIDIxNiwgNjEsIDM2LCA1LCAxLCAyMTYsIAotICAgIDYxLCAzNiwgNiwgMSwgMjAzLCA5OSwgMzYsIDUsIDEsIDIwMywgOTksIDM2LCA2LCAxLCAyMTcsIDEyNiwgMzYsIDUsIDEsIAotICAgIDIxNywgMTI2LCAzNiwgNiwgMSwgMjA0LCA2MiwgMzYsIDUsIDEsIDIwNCwgNjIsIDM2LCA2LCAxLCAyNTEsIDI2LCAxNzMsIAotICAgIDM2LCA1LCAxLCAyNTEsIDI2LCAxNzMsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyNDEsIAotICAgIDEyMywgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIAotICAgIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjE5LCAzNSwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMjAsIAotICAgIDM2LCA2LCAxLCAyMTMsIDEzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjEzLCAxMywgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIAotICAgIDI0MSwgOTMsIDMsIDQ5LCAxMTMsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCA0OSwgMTEzLCAzNiwgNiwgMSwgMjQxLCAyMzcsIAotICAgIDM2LCA1LCAxLCAyNDEsIDIzNywgMzYsIDYsIDEsIDI0NCwgMTI0LCAzNiwgNSwgMSwgMjQ0LCAxMjQsIDM2LCA2LCAxLCAKLSAgICAyNDEsIDEyMywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDI0MSwgMTIzLCAzLCAyNDQsIDIwLCAxNzgsIDYsIDEsIDI1MCwgNSwgCi0gICAgMTc4LCA2LCAxLCAyNDgsIDEyMiwgMTc4LCA2LCAxLCAyMzgsIDY5LCAxNzgsIDYsIDEsIDI0NCwgMjEyLCAxNzgsIDYsIDEsIAotICAgIDI0MSwgMTY3LCAxNzgsIDYsIDEsIDIwMiwgMTE2LCAxNzgsIDYsIDEsIDI0MSwgMTQ3LCAxNzgsIDYsIDEsIDI0MCwgMjUwLCAKLSAgICAxNzgsIDYsIDEsIDEzNSwgMTc4LCA2LCAxLCAyMDIsIDcxLCAxNzgsIDYsIDEsIDIzMSwgMTksIDE3OCwgNiwgMSwgMjI3LCAKLSAgICA4MywgMTc4LCA2LCAxLCAyMDMsIDE3NCwgMTc4LCA2LCAxLCAyNDcsIDkyLCAxNzgsIDYsIDEsIDIyOSwgMTgwLCAxNzgsIDYsIAotICAgIDEsIDIzNiwgMTM2LCAxNzgsIDYsIDEsIDIzMCwgMTgxLCAxNzgsIDYsIDEsIDIzOCwgMTE2LCAxNzgsIDYsIDEsIDI0NiwgCi0gICAgMTYwLCAxNzgsIDYsIDEsIDIyNCwgMjQwLCAxNzgsIDYsIDEsIDIwMywgMTEsIDE3OCwgNiwgMSwgMjIxLCAxNTIsIDE3OCwgCi0gICAgNiwgMSwgMjEzLCA5MCwgMTc4LCA2LCAxLCAyMDUsIDE4OSwgMTc4LCA2LCAxLCAyNDYsIDE5OSwgMTc4LCA2LCAxLCAyMTksIAotICAgIDE2LCAxNzgsIDYsIDEsIDIzMCwgMTQ0LCAxNzgsIDYsIDEsIDIxNiwgMjIwLCAxNzgsIDYsIDEsIDIxNCwgMTU1LCAxNzgsIAotICAgIDYsIDEsIDIwNSwgMjM0LCAxNzgsIDYsIDEsIDIwOCwgMTk0LCAxNzgsIDYsIDEsIDIxNiwgMTIyLCAxNzgsIDYsIDEsIDI0NSwgCi0gICAgMjU0LCAxNzgsIDYsIDEsIDIwMiwgMjUyLCAxNzgsIDYsIDEsIDIxOCwgMTAyLCAxNzgsIDYsIDEsIDIyOSwgMTkxLCAxNzgsIAotICAgIDYsIDEsIDIyMCwgNjAsIDE3OCwgNiwgMSwgMjQwLCA0NywgMTc4LCA2NSwgMSwgNDksIDE2MiwgMjE1LCAyNTIsIDE3OCwgCi0gICAgMjUwLCAxNjAsIDE3OCwgMjQxLCA5NiwgODIsIDE3OCwgMjQwLCAyMTIsIDgyLCAxNzgsIDI0NSwgMjMzLCAxNzgsIDIxNywgCi0gICAgNDcsIDgyLCAxNzgsIDI1MSwgMTQ2LCA4MiwgMTc4LCA1LCAxLCAyNTAsIDUsIDE3OCwgNSwgMSwgMjQ4LCAxMjIsIDE3OCwgCi0gICAgNSwgMSwgMjM4LCA2OSwgMTc4LCA1LCAxLCAyNDQsIDIxMiwgMTc4LCA1LCAxLCAyNDEsIDE2NywgMTc4LCA1LCAxLCAyMDIsIAotICAgIDExNiwgMTc4LCA1LCAxLCAyNDEsIDE0NywgMTc4LCA1LCAxLCAyNDAsIDI1MCwgMTc4LCA1LCAxLCAxMzUsIDE3OCwgNSwgMSwgCi0gICAgMjAyLCA3MSwgMTc4LCA1LCAxLCAyMzEsIDE5LCAxNzgsIDUsIDEsIDIyNywgODMsIDE3OCwgNSwgMSwgMjAzLCAxNzQsIAotICAgIDE3OCwgNSwgMSwgMjQ3LCA5MiwgMTc4LCA1LCAxLCAyMjksIDE4MCwgMTc4LCA1LCAxLCAyMzYsIDEzNiwgMTc4LCA1LCAxLCAKLSAgICAyMzAsIDE4MSwgMTc4LCA1LCAxLCAyMzgsIDExNiwgMTc4LCA1LCAxLCAyNDYsIDE2MCwgMTc4LCA1LCAxLCAyMjQsIDI0MCwgCi0gICAgMTc4LCA1LCAxLCAyMDMsIDExLCAxNzgsIDUsIDEsIDIyMSwgMTUyLCAxNzgsIDUsIDEsIDIxMywgOTAsIDE3OCwgNSwgMSwgCi0gICAgMjA1LCAxODksIDE3OCwgNSwgMSwgMjQ2LCAxOTksIDE3OCwgNSwgMSwgMjE5LCAxNiwgMTc4LCA1LCAxLCAyMzAsIDE0NCwgCi0gICAgMTc4LCA1LCAxLCAyMTYsIDIyMCwgMTc4LCA1LCAxLCAyMTQsIDE1NSwgMTc4LCA1LCAxLCAyMDUsIDIzNCwgMTc4LCA1LCAxLCAKLSAgICAyMDgsIDE5NCwgMTc4LCA1LCAxLCAyMTYsIDEyMiwgMTc4LCA1LCAxLCAyNDUsIDI1NCwgMTc4LCA1LCAxLCAyMDIsIDI1MiwgCi0gICAgMTc4LCA1LCAxLCAyMTgsIDEwMiwgMTc4LCA1LCAxLCAyMjksIDE5MSwgMTc4LCA1LCAxLCAyMjAsIDYwLCAxNzgsIDUsIDEsIAotICAgIDI0MCwgNDcsIDE3OCwgNSwgMzIsIDI0MSwgMTY4LCAyMDIsIDI1MiwgMTc4LCAyMzksIDEwMiwgMjExLCA2MSwgMTc4LCAKLSAgICAyMzUsIDIyMCwgMjE2LCAxNSwgMTc4LCAyNDAsIDI0NiwgNTQsIDIyNywgMjIxLCAxNzgsIDI0MCwgMjQ2LCA1NCwgMTc4LCAKLSAgICAyNDIsIDYwLCA1NCwgMTEwLCAyNTEsIDEzOSwgMjQwLCAyNDEsIDExMCwgMjUxLCAxMzksIDIxNCwgMTU2LCAxMTAsIDI1MSwgCi0gICAgMTM5LCAyMTMsIDY5LCAxMTAsIDI1MSwgMTM5LCAyMDIsIDEwMywgMjE3LCAxMDksIDExMCwgMjUxLCAxMzksIDIwMiwgMTAzLCAKLSAgICAyMzgsIDI1NCwgMTEwLCAyNTEsIDEzOSwgMjA4LCAyMDksIDExMCwgMjUxLCAxMzksIDIxNiwgNzAsIDExMCwgMjUxLCAxMzksIAotICAgIDIwMiwgMTAxLCAxMTAsIDI1MSwgMTM5LCAyMTksIDYxLCAxMTAsIDI1MSwgMTM5LCAyMDMsIDIzLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMDksIDExNSwgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjcsIDExMCwgMjUxLCAxMzksIDIzOCwgMTY4LCAyMjMsIDIwOCwgCi0gICAgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjUsIDExMCwgMjUxLCAxMzksIDIxNywgMTEwLCAyMTksIDkwLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMDksIDE1OCwgMjM4LCAxODMsIDExMCwgMjUxLCAxMzksIDIxOSwgNDAsIDExMCwgMjUxLCAxMzksIDI1MCwgNDMsIDIzNywgCi0gICAgMTUyLCAxMTAsIDI1MSwgMTM5LCAyMjMsIDIxOCwgMTEwLCAyNTEsIDEzOSwgMjI1LCAxNDUsIDExMCwgMjUxLCAxMzksIAotICAgIDIyNCwgMjI5LCAxMTAsIDI1MSwgMTM5LCAyMjQsIDIzMCwgMjI5LCAxOTIsIDExMCwgMjUxLCAxMzksIDI0NCwgMTUxLCAKLSAgICAxMTAsIDI1MSwgMTM5LCAyMTcsIDEyMSwgMTEwLCAyNTEsIDEzOSwgMjA5LCAxNTgsIDIxNywgMTA0LCAxMTAsIDI1MSwgCi0gICAgMTM5LCAyMDMsIDMzLCAyNDgsIDEyMywgMjAyLCAyMzMsIDExMCwgMjUxLCAxMzksIDIyMCwgNDMsIDExMCwgMjUxLCAxMzksIAotICAgIDIzMSwgNjksIDExMCwgMjUxLCAxMzksIDI0NCwgNTMsIDExMCwgMjUxLCAxMzksIDIwMiwgMjgsIDExMCwgMTMxLCAyMjUsIAotICAgIDc1LCAyNDYsIDYxLCAxMTAsIDIxOCwgNjMsIDIxMywgMTUsIDExMCwgMjE4LCA2MywgMjM3LCA4MiwgMjE0LCAxNTYsIDExMCwgCi0gICAgMjE4LCA2MywgMjM3LCA4MiwgMjE5LCA1NCwgMTEwLCAyMTgsIDYzLCAyMzcsIDgyLCAyMTcsIDExNCwgMTEwLCAyMTgsIDYzLCAKLSAgICAyMzYsIDIzMiwgMTEwLCAyMTgsIDYzLCAyMDgsIDExLCAxMTAsIDIxOCwgNjMsIDIxNCwgMTU2LCAxMTAsIDIxOCwgNjMsIAotICAgIDIxOSwgNTQsIDExMCwgMjE4LCA2MywgMjE3LCAxMTQsIDExMCwgMjE4LCA2MywgMjM2LCAxMjgsIDExMCwgMjE4LCA2MywgCi0gICAgMjM2LCAxMjksIDIzNywgODQsIDM1LCAyMDYsIDU5LCAxMTAsIDIxOCwgNjMsIDIxNywgNTEsIDExMCwgMjE4LCA2MywgMjQ0LCAKLSAgICAxOTgsIDIxOSwgMjQ1LCAyMjUsIDEwNSwgMTEwLCAyMTgsIDYzLCAyMjQsIDIxOSwgMTEwLCAyMTcsIDE3OSwgMjI1LCAxMDIsIAotICAgIDExMCwgMjE4LCA2MywgMjE2LCAyMDAsIDExMCwgMjE3LCAxNzksIDIxOSwgNjMsIDExMCwgMjE4LCA2MywgMjEzLCAwLCAKLSAgICAyNDMsIDg1LCAxMTAsIDIxOCwgNjMsIDIxMiwgMTI0LCAyNDMsIDg1LCAxMTAsIDIxNywgMTc5LCAyMTIsIDgsIDIxOSwgNTYsIAotICAgIDExMCwgMTMxLCAyMDYsIDIyMSwgMjQzLCA4NSwgMTEwLCAxMzEsIDIyNiwgMjUxLCAyNDMsIDg1LCAxMTAsIDIxNywgMTc5LCAKLSAgICAyMjEsIDQxLCAyMzcsIDE1MSwgMTEwLCAyMTgsIDYzLCAyMTcsIDExNSwgMjE3LCAxMDksIDExMCwgMSwgMjUxLCAzMCwgCi0gICAgMTEwLCAxLCAyNDgsIDEwOCwgMTEwLCAxLCAyMzgsIDY3LCAxMTAsIDEsIDI0NCwgMTc4LCAxMTAsIDEsIDIzNywgNjcsIAotICAgIDExMCwgMSwgMjA2LCA1OSwgMTEwLCAxLCAyMDIsIDk1LCAxMTAsIDEsIDIzNywgMjEsIDExMCwgMSwgMjA5LCAxMzIsIDExMCwgCi0gICAgMSwgMjAyLCAyMzYsIDExMCwgMSwgNDYsIDIzMCwgMjIsIDExMCwgMSwgMjMwLCAyMiwgMTEwLCAxLCAyMjgsIDIwLCAxMTAsIAotICAgIDEsIDQ2LCAyMjQsIDI0NywgMTEwLCAxLCAyMjQsIDI0NywgMTEwLCAxLCA0NiwgMjIxLCA0MCwgMTEwLCAxLCAyMjEsIDQwLCAKLSAgICAxMTAsIDEsIDIxNCwgMjQ5LCAxMTAsIDEsIDI1MCwgMywgMTEwLCAxLCA0NiwgMjE5LCAzNCwgMTEwLCAxLCAyMTksIDM0LCAKLSAgICAxMTAsIDEsIDQ2LCAyMDgsIDE1LCAxMTAsIDEsIDIwOCwgMTUsIDExMCwgMSwgMjE3LCA3NCwgMTEwLCAxLCAyMTYsIDkxLCAKLSAgICAxMTAsIDEsIDIxMiwgMjU1LCAxMTAsIDEsIDIwOSwgMjAzLCAxMTAsIDMyLCAyMDMsIDksIDUyLCAyMDYsIDU5LCAxMTAsIAotICAgIDMyLCAyMDMsIDksIDIwNiwgNjAsIDIwMiwgMjM2LCAxMTAsIDMyLCAyMDMsIDksIDUyLCAyMDIsIDIzNiwgMTEwLCAyMTcsIAotICAgIDE3OSwgMjM4LCAxNjcsIDExMCwgMjE3LCAxNzksIDIzOCwgMTY1LCAxMCwgNDIsIDU0LCAxMCwgMiwgMjE0LCAyNDIsIDEwLCAKLSAgICAyMzksIDE3MCwgMjI1LCA4OCwgMTAsIDIsIDIxNSwgMjQsIDEwLCAyLCAyMTQsIDI0NSwgMTAsIDQyLCAxMzEsIDU1LCAyNTAsIAotICAgIDE0MCwgMjQ1LCAxMDYsIDIxNSwgMjA0LCAyNTAsIDE0MCwgMjM5LCAxNDAsIDIxNSwgMjA0LCAxMCwgMjE2LCAxNjUsIDI1MCwgCi0gICAgMTQwLCAyMTgsIDI0NywgMjI0LCAxMTYsIDU0LCAyNTAsIDE0MCwgMjE4LCAyNDcsIDIwOSwgMTUzLCAyMDksIDM3LCA1NCwgCi0gICAgMjUxLCA4NiwgNTQsIDEwLCAyNDUsIDIzMywgMTAsIDI0NCwgMTM4LCAyMTMsIDEzMCwgMTAsIDIxOCwgNjUsIDIwNiwgNDAsIAotICAgIDU0LCAxMCwgMiwgMjI0LCA5NSwgMTAsIDIsIDIxNSwgMywgMjUxLCAzMywgMjA0LCA4NiwgMTAsIDIsIDI1MSwgMzMsIDI1MCwgCi0gICAgNjQsIDEwLCAyLCAyMTYsIDE5OCwgMjUxLCAzMiwgMTAsIDIsIDIxNiwgMjA2LCAyNTEsIDEyLCAyNTAsIDIxMCwgMTAsIDIsIAotICAgIDIwOSwgMjQwLCAxMCwgNSwgMTM4LCAyMDksIDI1MSwgMTAsIDUsIDEzOCwgMzIsIDEzNywgMywgMjI4LCAyOSwgMywgMjAzLCAKLSAgICA0NywgMTAsIDUsIDEzOCwgMjAyLCAxMDcsIDEwLCA1LCAyNDAsIDcxLCAxMCwgNSwgMjQ0LCAxNzIsIDEwLCA1LCAyMjksIAotICAgIDIyOSwgMTAsIDIxMywgMTQzLCAxMCwgMSwgODIsIDEwLCAyMDgsIDcwLCA3MCwgMjE3LCAxNzksIDgyLCAxMCwgMjE3LCA0NywgCi0gICAgODIsIDEwLCAxLCAyMjksIDIzMywgMjAzLCA0NywgMTAsIDEsIDIzNywgMTI3LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgCi0gICAgNTUsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIAotICAgIDEzNywgMywgMjM3LCAxMjgsIDU2LCAxMCwgMSwgODksIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDI1MSwgMzAsIDEwLCAxLCAKLSAgICAyNDgsIDEzOCwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk4LCAxMCwgMSwgMjA5LCAxNjksIDEwLCAxLCAyMDksIDg4LCAxMCwgCi0gICAgMSwgMjMwLCAxNTgsIDEwLCAxLCAyMzcsIDE0OCwgMTAsIDEsIDIyOSwgMTQwLCAxMCwgMSwgMjQ0LCAxODQsIDEwLCAxLCAKLSAgICAyMDksIDEwMCwgMTAsIDEsIDIxNiwgMTIyLCAxMCwgMSwgMjAyLCAxMDcsIDEwLCAxLCAyMTQsIDE2MSwgMTAsIDEsIDIxMywgCi0gICAgMzksIDEwLCAxLCAyMTUsIDI4LCAxMCwgMSwgMjQ0LCAyMDcsIDEwLCAxLCAyMDksIDI1MSwgMTAsIDEsIDIwMiwgMTEwLCAKLSAgICAxMCwgMSwgMjUxLCA1OSwgMTAsIDEsIDIzOCwgMTE0LCAxMCwgMSwgMjI5LCAxOTAsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIAotICAgIDIyOSwgMTkwLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgCi0gICAgMSwgMjQwLCA3NSwgODksIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAKLSAgICAyMDksIDIwOSwgMTAsIDEsIDI0MCwgNDcsIDEwLCAxLCAyMTcsIDExOSwgMTAsIDEsIDIzMCwgMjIsIDEwLCAxLCAyMjgsIAotICAgIDI4LCAxMCwgMSwgMjI1LCA1LCAxMCwgMSwgMjIxLCAxNzgsIDEwLCAxLCAyMzcsIDQzLCAxMCwgMSwgMjA0LCA3MCwgMTAsIAotICAgIDEsIDEzNywgMjI1LCAxMjksIDEwLCAxLCAyMDMsIDQ3LCAxMCwgMjQwLCA2OSwgMTAsIDI0NCwgMTcwLCAxMCwgMjI5LCAKLSAgICAyMjcsIDEwLCAyNDAsIDcxLCAxMCwgMjQ0LCAxNzIsIDEwLCAyMjksIDIyOSwgMTAsIDIxMywgODAsIDEwLCAyMTAsIDIyMiwgCi0gICAgMTAsIDIyNSwgMTY0LCA1NSwgMTAsIDIzNywgMTI4LCA1NSwgMTAsIDIzNywgMTI4LCA1NiwgMTAsIDIxMCwgMjQ2LCAyNTEsIAotICAgIDMwLCAxMCwgMjMwLCAyMzksIDI0NCwgMTcyLCAxMCwgMTMxLCAyMjEsIDE3OSwgMjM4LCA4NSwgMTAsIDIwMSwgMjQ4LCAxMCwgCi0gICAgMjIsIDIsIDUsIDIwNiwgMTY1LCA1NSwgMTAsIDIyLCAyLCAyMzAsIDIzOSwgNSwgMjA2LCAxNjUsIDU1LCAxMCwgMjIsIDIsIAotICAgIDcwLCA1NiwgMTAsIDIxNiwgNzMsIDI0NCwgMTcyLCAxMCwgMjQwLCA3MiwgMywgMTIwLCAyNDMsIDgzLCAxMCwgMjA0LCA3MiwgCi0gICAgMjM3LCAxMjgsIDU2LCAyNTAsIDE0MCwgMTcsIDIwMiwgODQsIDI1MCwgMTQwLCAxNywgMTA1LCAyNTAsIDE0MCwgMTcsIAotICAgIDEwOCwgMjUwLCAxNDAsIDE3LCAxNDcsIDI1MCwgMTQwLCAxNywgMTQ5LCAyNTAsIDE0MCwgMTcsIDE3MCwgMjUwLCAxNDAsIAotICAgIDE3LCAxOTUsIDI1MCwgMTQwLCAxNywgMjEzLCAxMTEsIDI1MCwgMTQwLCAxNywgMTk5LCAyNTAsIDE0MCwgMTcsIDIyMiwgCi0gICAgNjMsIDEwLCAyMTgsIDI0NiwgNTQsIDEwLCAyNDQsIDY4LCAyMTMsIDEzMCwgMTAsIDIwOSwgMzUsIDIxMywgMTMwLCAxMCwgCi0gICAgMjM5LCAyMzMsIDIxOCwgNjEsIDIxMSwgOTQsIDEwLCAxLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEsIDI0MywgODQsIAotICAgIDIxNywgMTE5LCAxMCwgMSwgMjEwLCAxOTksIDI1MSwgMzAsIDEwLCAxLCAxMzcsIDIwNCwgODcsIDEwLCAxLCAxMzcsIDMsIAotICAgIDIwNCwgNzIsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDEzNywgMywgMjA0LCA3MiwgMjM3LCAxMjgsIDU2LCAxMCwgMSwgMTM4LCAKLSAgICAyMzcsIDEyNywgMTAsIDEsIDEzOCwgMjM3LCAxMjgsIDI1MSwgMzAsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyMDQsIDcwLCAKLSAgICAxMCwgMSwgMTA2LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyMDMsIDQ3LCAxMCwgMSwgMjA3LCAKLSAgICAyMzMsIDEwLCAxLCAyMDcsIDIzMSwgMTAsIDEsIDI0OCwgMTQ4LCAxMCwgMSwgMjA5LCAxNzAsIDMsIDIxNSwgMjUyLCAxMCwgCi0gICAgMSwgMjA5LCAxNzAsIDMsIDEyNiwgMTg3LCA4NywgMjQyLCA2OCwgMTAsIDEsIDIxOSwgMTYsIDEwLCAxLCAyMDksIDE2NywgCi0gICAgMTAsIDEsIDI0OCwgMTM2LCAxMCwgMSwgMTUxLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxNTEsIDMsIDEyMCwgMTg3LCAKLSAgICA4MCwgNTUsIDEwLCAxLCAyMjAsIDI1NCwgMTAsIDEsIDI0MiwgNSwgMTAsIDEsIDE1MSwgMywgMTI2LCAxODcsIDU1LCAxMCwgCi0gICAgMSwgMjA5LCAxOTEsIDEwLCAxLCAyMDksIDE4OSwgMTAsIDEsIDI0NCwgMTE1LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDIxNSwgCi0gICAgMjUyLCAxMCwgMSwgMjQ0LCAxODUsIDMsIDcwLCA1NiwgMTAsIDEsIDI0NCwgMTg1LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA1LCAKLSAgICAyMDksIDI1MSwgMTAsIDEsIDI0NCwgMTkxLCAxMCwgMSwgMjQ0LCAxMTcsIDEwLCAxLCAyNDIsIDMzLCAxMCwgMSwgMjQ0LCAKLSAgICAxODUsIDMsIDEyNiwgMTg3LCA4NywgMjQyLCA2OCwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIAotICAgIDEsIDIxNSwgMTc3LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIxNSwgCi0gICAgMjUyLCAxMCwgMSwgMjE2LCAxMjMsIDMsIDcwLCA1NiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAyMDYsIDE2NSwgNTYsIDEwLCAKLSAgICAxLCAyMTYsIDEyMywgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDEyMCwgMTg3LCAKLSAgICA1NSwgMTAsIDEsIDIzMCwgMTU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgMSwgMjE0LCAKLSAgICAxNjIsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAKLSAgICAxLCAyMTQsIDE2MiwgMywgMTI2LCAxODcsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjE1LCAyOSwgMywgCi0gICAgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjE1LCAyOSwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjA5LCAyNTIsIDMsIDEyNiwgCi0gICAgMTg3LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxLCAKLSAgICAyNDAsIDQ4LCAzLCA3MCwgMjI0LCA1LCA1NiwgMTAsIDEsIDI0MCwgNDgsIDMsIDcwLCA1NiwgMTAsIDEsIDIwNiwgNDgsIAotICAgIDEwLCAxLCAyNDAsIDQ4LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMTksIDE0LCAxMCwgMSwgMjE3LCAxMjAsIDMsIDcwLCAKLSAgICA1NSwgMTAsIDEsIDIxNywgMTIwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjksIDE4OSwgMTAsIDEsIDIxMCwgMTY5LCAKLSAgICAyMzAsIDIyLCAxMCwgMSwgMjMwLCAyMywgMywgMjE1LCAyNTIsIDEwLCAxLCAyMzAsIDIzLCAzLCA3MCwgNTUsIDEwLCAxLCAKLSAgICAyMjIsIDIwNSwgMTAsIDEsIDIzMCwgMjMsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzOCwgMjUxLCAxMCwgMSwgMjM4LCAKLSAgICAyNTIsIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjIyLCAxMjYsIDEwLCAxLCAyMzgsIDI1MiwgMywgMTIwLCAxODcsIDU2LCAxMCwgCi0gICAgMSwgMjM3LCAyMTcsIDEwLCAxLCAyMzgsIDI1MiwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI4LCAyOSwgMywgNSwgMjA2LCAKLSAgICAxNjQsIDEwLCAxLCAyMjgsIDI5LCAzLCA3MCwgNTUsIDEwLCAxLCAyMjgsIDI5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAKLSAgICAyMjgsIDI5LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgNzAsIDU2LCAxMCwgMSwgMjIxLCAxNzksIAotICAgIDIzOCwgODUsIDEwLCAxLCAyMTUsIDIzMCwgMTAsIDEsIDIyMSwgMTc5LCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyMSwgMTc5LCAKLSAgICAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDEwOSwgMTAsIDEsIDIwOSwgMTkyLCAzLCA3MCwgNTUsIAotICAgIDEwLCAxLCAyMzcsIDQ0LCAzLCA4OSwgNTUsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIDM2LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAKLSAgICAzNywgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTksIDIzOCwgMzYsIDEwLCAxLCAyMDQsIDcxLCAKLSAgICAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyOSwgNzYsIDIyMCwgNzMsIDEwLCAxLCAyMjAsIDczLCAxMCwgMSwgNjgsIDEwLCAxLCAKLSAgICAyMDIsIDIxMywgMTAsIDEsIDIyOSwgNzYsIDIwMiwgMjEzLCAxMCwgMSwgMjA0LCA3MSwgMywgMTIwLCAxODcsIDU1LCAxMCwgCi0gICAgMSwgMjA2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDIwMywgNDcsIDEwLCAxLCA4OSwgMywgMjA5LCAyNDgsIDEwLCAxLCA4OSwgCi0gICAgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMDQsIDcxLCAzLCA3MCwgNTUsIDEwLCAxLCA3NCwgMTAsIDEsIDg5LCAzLCAxMjYsIAotICAgIDE4NywgNTYsIDEwLCAxLCA4OSwgMjQ4LCAyMjMsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDIzNywgMTI4LCA1NSwgMTAsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAxMCwgMSwgMjUxLCAxMDksIDEwLCA1LCAxMzgsIDMyLCAyMTUsIDI5LCAzLCAyMjgsIDI5LCAKLSAgICAzLCAxMzcsIDIyNSwgMTI5LCAxMCwgNSwgMTM4LCAzMiwgMjE3LCAxMjAsIDMsIDIyOCwgMjksIDMsIDEzNywgMjI1LCAxMjksIAotICAgIDEwLCA1LCAxMzgsIDgzLCA4MSwgMTgsIDEwLCA1LCAxMzgsIDIyOCwgMjksIDI1MSwgMzAsIDEwLCA1LCAxMzgsIDIzMCwgCi0gICAgMTU4LCAxMCwgNSwgMTM4LCAxMjYsIDI0MywgODMsIDEwLCA1LCAxMzgsIDIxNCwgMTYxLCAxMCwgMjQxLCA4NCwgNzYsIAotICAgIDI1MCwgNywgMTAsIDIxMSwgOTAsIDc2LCAyMTUsIDE0MywgMjQxLCAxMjMsIDIzNiwgMjI3LCAxMCwgNSwgMTM4LCAyMTUsIAotICAgIDE4OSwgMjAyLCA4NCwgMTAsIDUsIDEzOCwgMjA2LCAyMTksIDIxNiwgMTQyLCAyMDIsIDg0LCAxMCwgNSwgMTM4LCAyNDMsIAotICAgIDg0LCAyMzcsIDY1LCA3NiwgMjI5LCAxNDAsIDEwLCA1LCAxMzgsIDgzLCA2NCwgMTgsIDEwLCA1LCAxMjQsIDIxNCwgMTYxLCAKLSAgICAxMCwgNSwgMTM4LCAyMjUsIDE2NSwgMTAsIDUsIDIwNCwgNzAsIDEwLCA1LCAyMDMsIDQ3LCAxMCwgNSwgMTM4LCAyMDMsIAotICAgIDQ3LCAxMCwgNSwgMTM4LCAyMjEsIDE3OCwgMTAsIDIxOCwgOTcsIDc2LCAyMTUsIDE0LCAxMCwgMjQxLCA5NCwgMjQ2LCAKLSAgICAyMTgsIDEyNCwgMjExLCA2MSwgMTAsIDI0MSwgOTQsIDI0NiwgMjE4LCAxMzgsIDIxMSwgNjEsIDEwLCAyMTUsIDE4OSwgCi0gICAgMTM4LCAyMTEsIDYyLCAzLCAyNDAsIDgsIDI0NiwgMjE3LCAxMCwgNSwgMTI0LCAyMjUsIDUsIDEwLCAxLCAyNDQsIDE4NSwgCi0gICAgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMjQwLCAyMDIsIAotICAgIDI1MCwgMTQwLCAxNywgMjAyLCA4NCwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTA1LCAyNDAsIDIwMiwgMjUwLCAxNDAsIAotICAgIDE3LCAxMDgsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE0NywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTQ5LCAyNDAsIAotICAgIDIwMiwgMjUwLCAxNDAsIDE3LCAxNzAsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE5NSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAKLSAgICAxNywgMjEzLCAxMTEsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE5OSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMjIyLCAKLSAgICA2MywgMTAsIDEsIDIxMywgNDAsIDMsIDcwLCA1NiwgMTAsIDEsIDI0NCwgMjA4LCAzLCA3MCwgNTYsIDEwLCAxLCAyMzgsIAotICAgIDExNSwgMywgNzAsIDU2LCAxMCwgMiwgMjEyLCAxMjMsIDI1MCwgMjM1LCAxMCwgMiwgMjEyLCAxMjMsIDIxOCwgMjcsIDIyNCwgCi0gICAgMjQwLCAxMCwgMSwgMjM3LCA0NCwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAyMTAsIDg5LCAyNDEsIDg0LCA3NiwgMjE5LCAKLSAgICA4OCwgMjEwLCA4OSwgMjEwLCAxOTUsIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjM5LCAxMDIsIAotICAgIDIxMSwgNjEsIDIxMCwgODksIDIxMCwgMTk1LCAyNDUsIDI0MiwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQyLCAyMTAsIAotICAgIDg5LCAyMzYsIDEwNiwgMjQ1LCAyNDIsIDIxMCwgODksIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIDIyMiwgMjEwLCA4OSwgCi0gICAgMjQ1LCAyNDMsIDIxMiwgNjgsIDIxNiwgMTYsIDIxMCwgODksIDIxMCwgMTk1LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAKLSAgICAyMjIsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MywgMjEyLCA2OCwgMjE2LCAxNiwgMjEwLCA4OSwgMjQ1LCAxODYsIAotICAgIDIxMCwgODksIDIzNywgODksIDIyMCwgOTEsIDIxMCwgODksIDIzNywgODksIDIyNCwgMjE3LCAyMTAsIDg5LCAyMzcsIDg5LCAKLSAgICAyNTAsIDYxLCAyMTAsIDg5LCAyNTEsIDE0NiwgODIsIDIxMCwgODksIDEsIDI1MSwgMzUsIDIxMCwgODksIDEsIDIxMCwgCi0gICAgMTk5LCAyNTEsIDM1LCAyMTAsIDg5LCAxLCAyNDgsIDEwNSwgMjEwLCA4OSwgMSwgMjM4LCAyNDEsIDIxMCwgODksIDEsIAotICAgIDIzOCwgMjQyLCAyMzgsIDIxOSwgMjEwLCA4OSwgMSwgMjQ0LCAxODEsIDIxMCwgODksIDEsIDI0MywgODQsIDI0NCwgMTgyLCAKLSAgICAyMTUsIDI0NiwgMjEwLCA4OSwgMSwgMjM3LCA2NywgMjEwLCA4OSwgMSwgMjA0LCA3MCwgMjEwLCA4OSwgMSwgMjAyLCAxMDcsIAotICAgIDIxMCwgODksIDEsIDIzNywgMTksIDIxMCwgODksIDEsIDIwOSwgMTI4LCAyMTAsIDg5LCAxLCAyMDksIDEyOSwgMjM4LCAKLSAgICAyMTksIDIxMCwgODksIDEsIDIwMiwgMjAwLCAyMTAsIDg5LCAxLCAyMDIsIDIwMSwgMjM3LCA2NywgMjEwLCA4OSwgMSwgCi0gICAgMjI5LCAyNTAsIDIxMCwgODksIDEsIDIyOCwgMjcsIDIxMCwgODksIDEsIDIyNCwgMTEyLCAyMTAsIDg5LCAxLCAyMjEsIDQwLCAKLSAgICAyMTAsIDg5LCAxLCAyMTMsIDEzNiwgMjEwLCA4OSwgMSwgNDYsIDIxMywgMTM2LCAyMTAsIDg5LCAxLCA3NCwgMjEwLCA4OSwgCi0gICAgMSwgMjE5LCAzNCwgMjEwLCA4OSwgMSwgMjE2LCA3MywgMjE5LCAzNCwgMjEwLCA4OSwgMSwgMjE1LCAyNiwgMjEwLCA4OSwgCi0gICAgMSwgMjE3LCAxMTMsIDIxMCwgODksIDEsIDIxNSwgMjQ2LCAyMTAsIDg5LCAxLCAyMTIsIDI1NSwgMjEwLCA4OSwgMSwgMjA5LCAKLSAgICAyMDEsIDIxMCwgODksIDEsIDIxOCwgMjMxLCAyNDgsIDkyLCAyMTAsIDg5LCAxLCAyMTgsIDIzMSwgMjM4LCAxMTIsIDIxMCwgCi0gICAgODksIDEsIDIxOCwgMjMxLCAyNDMsIDI1MiwgMjEwLCA4OSwgMjE3LCAxOTIsIDU1LCAyMTAsIDg5LCAyMTcsIDE5MiwgNTYsIAotICAgIDIxMCwgODksIDIxNywgMTkyLCAyNDIsIDgyLCAyMTAsIDg5LCAyMDIsIDExLCA1NSwgMjEwLCA4OSwgMjAyLCAxMSwgNTYsIAotICAgIDIxMCwgODksIDIwMiwgMTEsIDI0MiwgODIsIDIxMCwgODksIDIxNiwgMTYxLCA1NSwgMjEwLCA4OSwgMjE2LCAxNjEsIDU2LCAKLSAgICAyMTAsIDg5LCAyNDIsIDgzLCAyMDIsIDE4LCAyMzYsIDEwNSwgMjEwLCA4OSwgMjQyLCA4MywgMjAyLCAxOCwgMjUwLCAyMTEsIAotICAgIDIxMCwgODksIDIzNywgNzAsIDU1LCAyMTAsIDg5LCAyMzcsIDcwLCA1NiwgMjEwLCA4OSwgMjM3LCA2OSwgMjQyLCA4MiwgCi0gICAgMjEwLCA4OSwgMjQxLCAxMSwgNTUsIDIxMCwgODksIDI0MSwgMTEsIDU2LCAyMTAsIDg5LCAyMTUsIDEwOSwgMjEwLCA4OSwgCi0gICAgMjQwLCA0MSwgMjQzLCA4NSwgMjEwLCA4OSwgMjE3LCAyNSwgMjEwLCA4OSwgMjE1LCAxMzcsIDIxMCwgODksIDEyMCwgODAsIAotICAgIDE4NywgNTUsIDIxMCwgODksIDEyMCwgODAsIDE4NywgNTYsIDIxMCwgODksIDEyNiwgMTg3LCA1NSwgMjEwLCA4OSwgMTI2LCAKLSAgICAxODcsIDU2LCAyMTAsIDg5LCAyMjAsIDg5LCAyMjcsIDExNSwgNTUsIDIxMCwgODksIDIyMCwgODksIDIyNywgMTE1LCA1NiwgCi0gICAgMjEwLCA4OSwgMjIzLCAxOTQsIDIxMCwgODksIDI0OCwgMjIyLCAyMTAsIDg5LCAxLCAyMTIsIDQsIDIwMiwgNzgsIDIxMCwgCi0gICAgODksIDEsIDIxMiwgNCwgMjI5LCAxMzMsIDIxMCwgODksIDEsIDIxMiwgNCwgMjQwLCA2MCwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKLSAgICAxMjYsIDE4NywgMjM2LCA1NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIAotICAgIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIAotICAgIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDI0OCwgMTI2LCAyNSwgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIAotICAgIDEyMCwgMTg3LCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAyMzAsIDIzOSwgNSwgMjA2LCAKLSAgICAxNjUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMTUxLCAzLCAxMjAsIDE4NywgNTUsIAotICAgIDEwLCAxLCAxNTEsIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDEyMCwgMTg3LCAKLSAgICAyMDUsIDI0NCwgMjQ4LCAxMjYsIDI1LCA1LCAyMDksIDI1MSwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMzAsIDIzOSwgNSwgCi0gICAgMjA2LCAxNjUsIDU2LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDk1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDIzOSwgMTQ3LCAxODcsIAotICAgIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDIxOCwgCi0gICAgNTksIDE4MywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMjQwLCA0OCwgCi0gICAgMywgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjQwLCA0OCwgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCAKLSAgICAyMjksIDE5MCwgMywgNzAsIDU1LCAxMCwgMSwgMjI5LCAxOTAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOSwgMTkwLCAKLSAgICAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDgzLCAzLCA3MCwgNTUsIDEwLCAxLCA4MywgMywgNzAsIAotICAgIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCA1LCAyMDksIDI1MSwgCi0gICAgMTAsIDEsIDIyMSwgMTc5LCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIyOCwgMjksIDMsIDE0MiwgMTAsIDEsIDIxNiwgMTIzLCAKLSAgICAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIxNCwgCi0gICAgMTYyLCAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDU2LCAKLSAgICAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAyMTQsIDE2MiwgMywgCi0gICAgNSwgMTAsIDEsIDIwOSwgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDEwLCAxLCAyMDksIAotICAgIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCA1NSwgMTAsIDEsIDEzNywgCi0gICAgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDEzNywgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAKLSAgICAxNywgMTI2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgCi0gICAgMSwgMjQwLCA3NSwgODksIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgCi0gICAgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMjM5LCAxNDcsIDU2LCAxMCwgMSwgMjA0LCA3MSwgMywgMjQwLCAyMDIsIAotICAgIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDIwNCwgNzEsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgCi0gICAgNTUsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCA4OSwgCi0gICAgMjQ4LCAyMjQsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgNTUsIDEwLCAxLCAxNTEsIDMsIDI0MCwgMjAyLCAKLSAgICAyNTAsIDE0MCwgMTcsIDIzOSwgMTQ3LCA1NiwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAKLSAgICAyMzksIDE0NywgNTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgMSwgMjMwLCAyMywgMywgCi0gICAgMTIwLCAxODcsIDU1LCAyMDksIDEwNSwgMSwgMjM3LCAxNTcsIDIwOSwgMTA1LCAxLCAyMTMsIDQ5LCAyMDksIDEwNSwgMSwgCi0gICAgMjIxLCAxNzcsIDIwOSwgMTA1LCAxLCAyMTYsIDIxNiwgMjA5LCAxMDUsIDEsIDI0OSwgMzAsIDIwOSwgMTA1LCAxLCAyMjcsIAotICAgIDE1OCwgMjA5LCAxMDUsIDEsIDIzMCwgMzcsIDIwOSwgMTA1LCAxLCAyNTEsIDE5LCAyMDksIDEwNSwgMSwgMjA2LCA4NCwgCi0gICAgMjA5LCAxMDUsIDEsIDIyNSwgNCwgMjA5LCAxMDUsIDEsIDI0MCwgMTA2LCAyMDksIDEwNSwgMSwgMjQzLCAyNTUsIDIwOSwgCi0gICAgMTA1LCAxLCAyMDksIDEwNywgMjA5LCAxMDUsIDEsIDIyOCwgMTA5LCAyMDksIDEwNSwgMSwgMjM5LCA0LCAyMDksIDEwNSwgCi0gICAgMSwgMjM4LCA0MiwgMjA5LCAxMDUsIDEsIDIxNCwgMTYwLCAyMDksIDEwNSwgMSwgMjQ0LCAxMzYsIDIwOSwgMTA1LCAxLCAKLSAgICAyMDIsIDk4LCAyMDksIDEwNSwgMSwgMjA5LCAyMDIsIDIwOSwgMTA1LCAxLCAyMDMsIDExMCwgMjA5LCAxMDUsIDEsIDIxOSwgCi0gICAgNDcsIDIwOSwgMTA1LCAxLCAyMzAsIDE2NiwgMjA5LCAxMDUsIDEsIDI0NiwgMTczLCAyMDksIDEwNSwgMSwgMjA3LCAyNDAsIAotICAgIDIwOSwgMTA1LCAxLCAyMzcsIDExLCAyMDksIDEwNSwgMSwgMjI5LCAxNDMsIDIwOSwgMTA1LCAxLCAyMDksIDEwNiwgMjA5LCAKLSAgICAxMDUsIDEsIDIwMiwgMTE0LCAyMDksIDEwNSwgMSwgMjEzLCAzOCwgMjA5LCAxMDUsIDEsIDIxNSwgMzIsIDIwOSwgMTA1LCAKLSAgICAxLCAyNDQsIDIxMCwgMjA5LCAxMDUsIDEsIDEzNSwgMjA5LCAxMDUsIDEsIDIwMiwgMTcsIDIwOSwgMTA1LCAxLCAyNTEsIAotICAgIDU2LCAyMDksIDEwNSwgMSwgMjM4LCAxMTMsIDIwOSwgMTA1LCAxLCAyMTcsIDEyMywgMjA5LCAxMDUsIDEsIDIwNCwgMTA5LCAKLSAgICAyMDksIDEwNSwgMjUxLCAxNDgsIDIwOSwgMTA1LCAyNTEsIDI0NiwgMjA5LCAxMDUsIDIzNSwgMTY1LCAyMDksIDEwNSwgCi0gICAgMjQxLCAxNjAsIDIwOSwgMTA1LCAyMDcsIDMyLCAyMDksIDEwNSwgMjIwLCAxNywgMjA5LCAxMDUsIDI0MSwgMTcwLCAyMDksIAotICAgIDEwNSwgMjQwLCAxOTMsIDIwOSwgMTA1LCAyMjAsIDg4LCAyMDksIDEwNSwgMjIwLCA5NiwgMjA5LCAxMDUsIDIxMCwgMjIyLCAKLSAgICAyMDksIDEwNSwgMSwgMjIzLCAxMDYsIDIyMSwgMjU1LCAxNywgMjAyLCA4NCwgMjIxLCAyNTUsIDE3LCAxMDUsIDIyMSwgCi0gICAgMjU1LCAxNywgMTA4LCAyMjEsIDI1NSwgMTcsIDE0NywgMjIxLCAyNTUsIDE3LCAxNDksIDIyMSwgMjU1LCAxNywgMTcwLCAKLSAgICAyMjEsIDI1NSwgMTcsIDE5NSwgMjIxLCAyNTUsIDE3LCAyMTMsIDExMSwgMjIxLCAyNTUsIDE3LCAxOTksIDIyMSwgMjU1LCAKLSAgICAxNywgMjIyLCA2MywgMjIxLCAyNTUsIDEsIDYzLCAyMjEsIDI1NSwgMSwgMjQxLCAxNjEsIDIyMSwgMjU1LCAxLCA3NSwgCi0gICAgMjIxLCAyNTUsIDEsIDc0LCAyMjEsIDI1NSwgMSwgNjgsIDIyMSwgMjU1LCAxLCAyMjAsIDE4LCAyMjEsIDI1NSwgMSwgNzgsIAotICAgIDIyMSwgMjU1LCAxLCAyNDQsIDE5OSwgMjIxLCAyNTUsIDEsIDIyMywgMTYzLCAyMjEsIDI1NSwgMSwgMjQ5LCAzMiwgMjIxLCAKLSAgICAyNTUsIDEsIDE4NSwgMjIxLCAyNTUsIDEsIDIxMCwgMjIsIDIyMSwgMjU1LCAxLCAyMzAsIDE4MSwgMjIxLCAyNTUsIDEsIAotICAgIDI0NiwgMTk5LCAyMjEsIDI1NSwgMSwgMjQ0LCAyMTIsIDIyMSwgMjU1LCAxLCAyMTYsIDIyMCwgMjIxLCAyNTUsIDEsIDIxNSwgCi0gICAgMTg1LCAyMjEsIDI1NSwgMSwgMjE1LCAzNiwgMjIxLCAyNTUsIDEsIDIzOCwgMjA3LCAyMjEsIDI1NSwgMSwgMjQwLCAxMDgsIAotICAgIDIyMSwgMjU1LCAxLCAxNzMsIDIyMSwgMjU1LCAxLCAyMjgsIDExMywgMjIxLCAyNTUsIDEsIDIyMywgMTExLCAyMDMsIDI1MiwgCi0gICAgMjIxLCAyNTUsIDEsIDE5MiwgMjIxLCAyNTUsIDEsIDIyMSwgMTEsIDIyMSwgMjU1LCAxLCAyMDEsIDIwMSwgMjIxLCAyNTUsIAotICAgIDEsIDE1MiwgMjIxLCAyNTUsIDEsIDIwNCwgMTExLCAyMjEsIDI1NSwgMSwgMTk4LCAyMjEsIDI1NSwgMSwgMjIxLCAxMiwgCi0gICAgMjAzLCAyNTIsIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyMzAsIDE4MSwgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDI0NiwgMTk5LCAKLSAgICAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjE2LCAyMjAsIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDEzOCwgMjA4LCAxNjEsIAotICAgIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDEyNCwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDIxNSwgMjQ1LCAKLSAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDI0NCwgMTksIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMTM4LCAKLSAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDEyNCwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAyMTUsIDI0NSwgCi0gICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMjIzLCA3MSwgODIsIDIyMSwgMjU1LCAzOSwgNTIsIDcwLCA1NSwgMjIxLCAyNTUsIAotICAgIDEzOCwgMTQzLCAyNTAsIDE2MCwgMjIxLCAyNTUsIDEyNCwgMTQzLCAyNTAsIDE2MCwgMjIxLCAyNTUsIDE2LCAyMjAsIDE5LCAKLSAgICAyNDQsIDMzLCAyMjEsIDI1NSwgMTYsIDIzOCwgMjA2LCAyMjEsIDI1NSwgMjQ1LCAyMzMsIDIyMSwgMjU1LCAyNDAsIDIxMiwgCi0gICAgODIsIDIyMSwgMjU1LCAyMjgsIDg0LCAyMTQsIDI1MiwgMSwgMjUxLCAzNywgMjE0LCAyNTIsIDEsIDI0OCwgNTEsIDIxNCwgCi0gICAgMjUyLCAxLCAyMzgsIDI0MCwgMjE0LCAyNTIsIDEsIDI0NCwgMTgzLCAyMTQsIDI1MiwgMSwgMjMwLCAxOTIsIDIxNCwgMjUyLCAKLSAgICAxLCAyNDksIDMwLCAyMTQsIDI1MiwgMSwgMjAyLCA4NywgMjE0LCAyNTIsIDEsIDIzMCwgMjAxLCAyMTQsIDI1MiwgMSwgCi0gICAgMjA4LCAyMDAsIDIxNCwgMjUyLCAxLCAyMDIsIDE4MiwgMjE0LCAyNTIsIDEsIDIzMCwgMzgsIDIxNCwgMjUyLCAxLCAyMjgsIAotICAgIDEwNiwgMjE0LCAyNTIsIDEsIDIyNCwgMTEyLCAyMTQsIDI1MiwgMSwgMjIxLCA0MCwgMjE0LCAyNTIsIDEsIDIxMiwgMTIxLCAKLSAgICAyMTQsIDI1MiwgMSwgMjMxLCA0OSwgMjE0LCAyNTIsIDEsIDI0MCwgMjYsIDIxNCwgMjUyLCAxLCAyMDgsIDE4LCAyMTQsIAotICAgIDI1MiwgMSwgMjE3LCA0NCwgMjE0LCAyNTIsIDEsIDIxNSwgMjQ2LCAyMTQsIDI1MiwgMSwgMjEzLCA2NiwgMjE0LCAyNTIsIAotICAgIDEsIDIxMCwgMTcsIDIxNCwgMjUyLCAxMzEsIDIzMSwgNDksIDIxNCwgMjUyLCAxMzEsIDIzMSwgNDgsIDIxNCwgMjUyLCAKLSAgICAxMzEsIDIyMCwgODQsIDIxNCwgMjUyLCAxMzEsIDI0NCwgMTk3LCAyMTQsIDI1MiwgNjUsIDEsIDI0MSwgNDIsIDIwMiwgCi0gICAgMTgyLCAyMTQsIDI1MiwgMTMxLCAyNDEsIDQyLCAyMDIsIDE4MiwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDc0LCAyMTQsIAotICAgIDI1MiwgMjIsIDIsIDc0LCAyMTQsIDI1MiwgMjIsIDIsIDIxOSwgMTk3LCAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgCi0gICAgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDIxOSwgMTk3LCA2MywgMjE0LCAKLSAgICAyNTIsIDIyLCAyLCAxNjMsIDYzLCAyMTQsIDI1MiwgMjIsIDIsIDYzLCAyMTQsIDI1MiwgNjUsIDEsIDIxMiwgMjI4LCA2MywgCi0gICAgMjE0LCAyNTIsIDIyLCAyLCAyMTIsIDIyOCwgNjMsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA2OCwgMjE0LCAyNTIsIDIyLCAyLCAKLSAgICA2OCwgMjE0LCAyNTIsIDY1LCAxLCA3NSwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDc1LCAyMTQsIDI1MiwgMjIsIDIsIDc1LCAKLSAgICAyMTQsIDI1MiwgMjIsIDIsIDc4LCAyMTQsIDI1MiwgMjIsIDIsIDIxMCwgMjIyLCAyMTQsIDI1MiwgMTMxLCAyMjIsIDIyMywgCi0gICAgMjE0LCAyNTIsIDIxNywgMTc5LCAyMjIsIDIyMywgMjE0LCAyNTIsIDIxNywgMTc5LCAyNTEsIDgzLCAyMTQsIDI1MiwgMjE3LCAKLSAgICAxNzksIDI1MCwgMjIyLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI0OCwgMjAyLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI1MCwgNDQsIAotICAgIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjEyLCAyNDMsIDIxNCwgMjUyLCAyNTEsIDE0NiwgODIsIDIxNCwgMjUyLCAyMTcsIDE3OSwgCi0gICAgMjI0LCAyNTAsIDIxNywgODAsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjAyLCAyNSwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTcsIAotICAgIDgwLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwMiwgMTEzLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwNywgMTcwLCAyMTQsIDI1MiwgCi0gICAgMjE3LCAxNzksIDI1MCwgMTExLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIxMiwgOCwgMjI1LCA3NywgMjE0LCAyNTIsIDIxNywgCi0gICAgMTc5LCAyNTAsIDIwNiwgMjI1LCAxMTgsIDEsIDIzNywgMTM0LCAyMjUsIDExOCwgMSwgMjUxLCAyMzIsIDIyNSwgMTE4LCAxLCAKLSAgICAyNTEsIDgxLCAyMjUsIDExOCwgMSwgMjUxLCAxMjIsIDIyNSwgMTE4LCAxLCAyNTEsIDczLCAyMjUsIDExOCwgMSwgMjA2LCAKLSAgICAxODQsIDIyNSwgMTE4LCAxLCAyNTAsIDEsIDIyNSwgMTE4LCAxLCAyMzAsIDIwMSwgMjI1LCAxMTgsIDEsIDI1MCwgNDEsIAotICAgIDIyNSwgMTE4LCAxLCAyNTEsIDQyLCAyMjUsIDExOCwgMSwgMjUxLCA0NywgMjI1LCAxMTgsIDEsIDI1MSwgMzksIDIyNSwgCi0gICAgMTE4LCAxLCAyNTAsIDI0NywgMjI1LCAxMTgsIDEsIDI1MCwgMjMxLCAyMjUsIDExOCwgMSwgMjUwLCA4MSwgMjI1LCAxMTgsIAotICAgIDEsIDIzMSwgNDksIDIyNSwgMTE4LCAxLCAyNTAsIDE3NSwgMjI1LCAxMTgsIDEsIDI1MCwgNTEsIDIyNSwgMTE4LCAxLCAKLSAgICAyNTAsIDE0OCwgMjI1LCAxMTgsIDEsIDI1MCwgMTQ0LCAyMjUsIDExOCwgMSwgMjUwLCA3NSwgMjI1LCAxMTgsIDEsIDI1MCwgCi0gICAgNDksIDIyNSwgMTE4LCAxLCAyNDIsIDE4LCAyMjUsIDExOCwgMSwgMjMwLCAzMCwgMjI1LCAxMTgsIDEsIDI1MSwgNTksIAotICAgIDIyNSwgMTE4LCAyNTEsIDg3LCA4MiwgMjI1LCAxMTgsIDIwNSwgMTg3LCA4MiwgMjI1LCAxMTgsIDIzOCwgMTc5LCA4MiwgCi0gICAgMjI1LCAxMTgsIDIxNywgMTc4LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDUsIDIwNiwgMTY1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAKLSAgICAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxODQsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDIwOSwgMjUyLCAzLCAxMjAsIAotICAgIDE4NywgNTUsIDEwLCAxLCAyNDAsIDQ4LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMTcsIAotICAgIDEyMCwgMywgNzAsIDU2LCAxMCwgMSwgMjI4LCAyOSwgMywgNTIsIDE0MiwgMTAsIDEsIDgzLCAzLCAxMjYsIDE4NywgNTUsIAotICAgIDEwLCAxLCA4OSwgMywgMTIwLCAxODcsIDI0OCwgMTI2LCAyNSwgMjM3LCAxMjgsIDU1LCAxMCwgMSwgODksIDMsIDEyMCwgCi0gICAgMTg3LCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMjcsIDE0LCAxMCwgMSwgMjA0LCA3MSwgCi0gICAgMywgNzAsIDIwNCwgNCwgMTAsIDEsIDIxNSwgMjE1LCAyMDMsIDQ3LCAxMCwgMSwgMTI0LCAyNTEsIDMwLCAxMCwgMSwgMjQ0LCAKLSAgICAxODUsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIxNSwgMjksIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzOCwgMjUyLCAKLSAgICAzLCAyMzAsIDIzOSwgOTUsIDEwLCAxLCAyMTEsIDUzLCAyMDQsIDcwLCAxMCwgMSwgMjAyLCAxMDgsIDMsIDIzMCwgMjM5LCAKLSAgICAyMDYsIDE2NSwgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzAsIDIzLCAzLCA3MCwgNTYsIAotICAgIDEwLCAyMDcsIDE3NCwgMjQ0LCAxNzMsIDU2LCAxMCwgMjQ1LCA5MywgMjQwLCA3MSwgMTAsIDI0NSwgOTMsIDI0NCwgMTcyLCAKLSAgICAxMCwgMjQ1LCA5MywgMjI5LCAyMjksIDEwLCAyNDUsIDkzLCAyNDAsIDY5LCAxMCwgMjQ1LCA5MywgMjQ0LCAxNzAsIDEwLCAKLSAgICAyNDUsIDkzLCAyMjksIDIyNywgMTAsIDE0MywgMTE4LCA3MCwgNTUsIDEwLCAxNDMsIDEyMCwgMTg3LCA1NSwgMTAsIDE0MywgCi0gICAgMjI3LCAxNSwgNTUsIDEwLCAxNDMsIDExOCwgNzAsIDU2LCAxMCwgMTQzLCAxMjAsIDE4NywgNTYsIDEwLCAxNDMsIDIyNywgCi0gICAgMTUsIDU2LCAxMCwgMTcxLCAyNDAsIDY5LCAxMCwgMTcxLCAyNDQsIDE3MCwgMTAsIDE3MSwgMjI5LCAyMjcsIDEwLCA1LCAKLSAgICAxMzgsIDIwNCwgNzAsIDEwLCAyNDAsIDcyLCAzLCAyMTUsIDI1MiwgMTAsIDI0MCwgNzIsIDMsIDcwLCA1NSwgMTAsIDIyOSwgCi0gICAgMjMwLCAzLCA3MCwgNTYsIDEwLCA0OSwgMjUwLCA5NSwgNTUsIDEwLCA1MCwgMjUwLCA5NSwgNTUsIDEwLCA0OSwgMjUwLCAKLSAgICA5NSwgNTYsIDEwLCA1MCwgMjUwLCA5NSwgNTYsIDEwLCA1MiwgNTAsIDI1MCwgOTUsIDU1LCAxMCwgNTIsIDUwLCAyNTAsIAotICAgIDk1LCA4NywgMywgMjQzLCA4NSwgMTAsIDUwLCAyNTAsIDk1LCA4NywgMywgMjQzLCA4NSwgMTAsIDI0NCwgMTczLCAzLCAKLSAgICAyNDMsIDg1LCAxMCwgMTMxLCAyMTIsIDE1NCwgMjIxLCAxNzksIDIzOCwgODUsIDkyLCAyLCAyMzAsIDIzOSwgMjQ3LCA1MiwgCi0gICAgOTIsIDIsIDI0NywgNTIsIDkyLCAyLCAyNTAsIDE4MCwgOTIsIDIsIDIwNSwgMTk5LCA5MiwgMSwgMjEyLCAyMjgsIDYzLCAKLSAgICA5MiwgMSwgNjMsIDkyLCAxLCAyNTIsIDI1LCA5MiwgMSwgNzUsIDkyLCAxLCAyMzEsIDgzLCA5MiwgMSwgNjgsIDkyLCAxLCAKLSAgICAyMDYsIDE3OCwgOTIsIDEsIDEyNSwgMTQ2LCA5MiwgMSwgMTI1LCAxNTksIDkyLCAxLCAyNDcsIDU1LCA3NCwgOTIsIDEsIAotICAgIDIxMiwgMjI4LCA3NCwgOTIsIDEsIDc0LCA5MiwgMSwgMjUxLCA2NCwgOTIsIDEsIDI0NywgNTUsIDc4LCA5MiwgMSwgMjEyLCAKLSAgICAyMjgsIDc4LCA5MiwgMSwgNzgsIDkyLCAxLCAyNTAsIDM0LCA5MiwgMSwgMTczLCA5MiwgMSwgMjI5LCAxNDQsIDkyLCAxLCAKLSAgICAyMzksIDgsIDkyLCAxLCAyMzgsIDExOSwgOTIsIDEsIDIyMiwgMjAzLCA5MiwgMSwgMjQ3LCA5MiwgOTIsIDEsIDI0NiwgCi0gICAgMTk5LCA5MiwgMSwgMjMwLCAxODEsIDkyLCAxLCAyMzAsIDE0OSwgOTIsIDEsIDIyMSwgMTEsIDkyLCAxLCAyMDcsIDI0MSwgCi0gICAgOTIsIDEsIDIwNywgMjI5LCA5MiwgMSwgMjQ0LCAxMjAsIDkyLCAxLCAyNDQsIDEwNCwgOTIsIDEsIDIyMSwgMjI3LCA5MiwgCi0gICAgMSwgMjEwLCAyMiwgOTIsIDEsIDIwOSwgMTA4LCA5MiwgMSwgMjQ0LCAyMTIsIDkyLCAxLCAyNDQsIDEsIDkyLCAxLCAyMDEsIAotICAgIDIwMSwgOTIsIDEsIDIyMSwgMjA5LCA5MiwgMSwgMTg1LCA5MiwgMSwgMjE4LCAyMDgsIDkyLCAxLCAyNDksIDMyLCA5MiwgMSwgCi0gICAgMjQ4LCA5OCwgOTIsIDEsIDE5MiwgOTIsIDEsIDE5OCwgOTIsIDEsIDIxNiwgMjIwLCA5MiwgMSwgMjE1LCAxODUsIDkyLCAxLCAKLSAgICAyMjgsIDExMywgOTIsIDEsIDIyNywgNzcsIDkyLCAxLCAyMjcsIDY4LCA5MiwgMSwgMjA2LCA4NiwgOTIsIDEsIDIxMywgOTAsIAotICAgIDkyLCAxLCAyMTEsIDE2NCwgOTIsIDEsIDIxNSwgMzYsIDkyLCAxLCAxNTIsIDkyLCAyMiwgMiwgMjIwLCA3MywgOTIsIDIyLCAKLSAgICAyLCAyMjAsIDE2LCA5MiwgMiwgMjIxLCA1MSwgOTIsIDIsIDI1MCwgMTcsIDkyLCAyMiwgMiwgMjUyLCAyNSwgOTIsIDIyLCAKLSAgICAyLCA3NSwgOTIsIDIyLCAyLCAyMzEsIDgzLCA5MiwgMjIsIDIsIDY4LCA5MiwgMjIsIDIsIDIwNiwgMTc4LCA5MiwgMjIsIDIsIAotICAgIDEyNSwgMTQ2LCA5MiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgNzQsIDkyLCAyMiwgMiwgCi0gICAgMjEyLCAyMjgsIDc0LCA5MiwgMjIsIDIsIDc0LCA5MiwgMjIsIDIsIDI1MSwgNjQsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgNzgsIAotICAgIDkyLCAyMiwgMiwgMjEyLCAyMjgsIDc4LCA5MiwgMjIsIDIsIDc4LCA5MiwgMjIsIDIsIDI1MCwgMzQsIDkyLCAyLCAyMDUsIAotICAgIDIwNCwgOTIsIDIyLCAyLCAyMTcsIDIyOSwgNzQsIDkyLCAyMiwgMiwgMjUwLCAxMywgOTIsIDIyMCwgMzksIDkyLCAyMTEsIAotICAgIDQyLCAyLCAyMDcsIDI2LCA5MiwgMjExLCA0MiwgMiwgMjUwLCAxODIsIDkyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDkyLCAKLSAgICAyNTEsIDEyNiwgMjUxLCAxMzgsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgMTYzLCA3NCwgOTIsIDIyLCAyLCAyMDcsIDI0LCA5MiwgCi0gICAgMjIsIDIsIDIwNiwgMTc3LCA5MiwgMSwgMjE3LCAxMjYsIDkyLCAxLCAyMjksIDEyNSwgOTIsIDEsIDIzOCwgOTQsIDkyLCAxLCAKLSAgICAyMDIsIDExNiwgOTIsIDEsIDI0NCwgMTA5LCA5MiwgMSwgMjE2LCA2MSwgOTIsIDEsIDI0MCwgMTA4LCA5MiwgMSwgMjAyLCAKLSAgICAxNjgsIDkyLCAxLCAxMjUsIDIxNSwgMTg2LCA5MiwgMSwgMTI1LCAyMjcsIDc4LCA5MiwgMjIsIDIsIDEyNSwgMTU5LCA5MiwgCi0gICAgMjIsIDIsIDEyNSwgMjI3LCA3OCwgOTIsIDI0NCwgMTY2LCA5MiwgNTIsIDI0NCwgMTY2LCA5MiwgMTcsIDIwMiwgODQsIDkyLCAKLSAgICAxNywgMTA1LCA5MiwgMTcsIDEwOCwgOTIsIDE3LCAxNDcsIDkyLCAxNywgMTQ5LCA5MiwgMTcsIDE3MCwgOTIsIDE3LCAxOTUsIAotICAgIDkyLCAxNywgMjEzLCAxMTEsIDkyLCAxNywgMTk5LCA5MiwgMTcsIDIyMiwgNjMsIDkyLCAyNTEsIDE0NiwgNTQsIDkyLCAyLCAKLSAgICAxMzgsIDIxMSwgMjI3LCAyNDMsIDg1LCA5MiwgMSwgMjQ3LCA1NSwgNjMsIDkyLCAxLCAyMjAsIDczLCA5MiwgMSwgMjIwLCAKLSAgICAxNiwgOTIsIDEsIDI1MCwgMTMsIDkyLCAxLCAyMDcsIDI0LCA5MiwgMSwgMjA2LCAxNzcsIDkyLCAxLCAyMjUsIDgyLCAyNDQsIAotICAgIDEyMCwgOTIsIDEsIDIwMiwgODAsIDkyLCAxLCA3OSwgMTk4LCA5MiwgMSwgMjM4LCAxNTUsIDkyLCAxLCAyMzAsIDEyOSwgCi0gICAgOTIsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDkyLCAxLCAyNDQsIDExMCwgOTIsIDEsIDI0OCwgMTk4LCAxNzksIDI1MCwgMjA5LCAKLSAgICAxNzksIDIsIDI0NywgNTIsIDE3OSwgMiwgMjUwLCAxODAsIDE3OSwgMiwgMjA1LCAxOTksIDE3OSwgMSwgNjMsIDE3OSwgMSwgCi0gICAgMjUyLCAyNSwgMTc5LCAxLCA3NSwgMTc5LCAxLCAyMzEsIDgzLCAxNzksIDEsIDY4LCAxNzksIDEsIDIwNiwgMTc4LCAxNzksIAotICAgIDEsIDEyNSwgMTQ2LCAxNzksIDEsIDEyNSwgMTU5LCAxNzksIDEsIDc0LCAxNzksIDEsIDI1MSwgNjQsIDE3OSwgMSwgNzgsIAotICAgIDE3OSwgMSwgMjUwLCAzNCwgMTc5LCAxLCAxNzMsIDE3OSwgMSwgMjI5LCAxNDQsIDE3OSwgMSwgMjM5LCA4LCAxNzksIDEsIAotICAgIDIzOCwgMTE5LCAxNzksIDEsIDIyMiwgMjAzLCAxNzksIDEsIDI0NywgOTIsIDE3OSwgMSwgMjQ2LCAxOTksIDE3OSwgMSwgCi0gICAgMjMwLCAxODEsIDE3OSwgMSwgMjMwLCAxNDksIDE3OSwgMSwgMjIxLCAxMSwgMTc5LCAxLCAyMDcsIDI0MSwgMTc5LCAxLCAKLSAgICAyMDcsIDIyOSwgMTc5LCAxLCAyNDQsIDEyMCwgMTc5LCAxLCAyNDQsIDEwNCwgMTc5LCAxLCAyMjEsIDIyNywgMTc5LCAxLCAKLSAgICAyMTAsIDIyLCAxNzksIDEsIDIwOSwgMTA4LCAxNzksIDEsIDI0NCwgMjEyLCAxNzksIDEsIDI0NCwgMSwgMTc5LCAxLCAyMDEsIAotICAgIDIwMSwgMTc5LCAxLCAxODUsIDE3OSwgMSwgMjE4LCAyMDgsIDE3OSwgMSwgMjQ5LCAzMiwgMTc5LCAxLCAyNDgsIDk4LCAKLSAgICAxNzksIDEsIDE5MiwgMTc5LCAxLCAxOTgsIDE3OSwgMSwgMjE2LCAyMjAsIDE3OSwgMSwgMjI4LCAxMTMsIDE3OSwgMSwgCi0gICAgMjEzLCA5MCwgMTc5LCAxLCAyMTEsIDE2NCwgMTc5LCAxLCAyMTUsIDM2LCAxNzksIDEsIDE1MiwgMTc5LCAyLCAyMjEsIDUxLCAKLSAgICAxNzksIDIsIDI1MCwgMTcsIDE3OSwgMjIsIDIsIDI1MiwgMjUsIDE3OSwgMjIsIDIsIDc1LCAxNzksIDIyLCAyLCAyMzEsIAotICAgIDgzLCAxNzksIDIyLCAyLCA2OCwgMTc5LCAyMiwgMiwgMjA2LCAxNzgsIDE3OSwgMjIsIDIsIDEyNSwgMTQ2LCAxNzksIDIyLCAKLSAgICAyLCAxMjUsIDIxNSwgMTg2LCAxNzksIDIyLCAyLCA3NCwgMTc5LCAyMiwgMiwgMjUxLCA2NCwgMTc5LCAyMiwgMiwgNzgsIAotICAgIDE3OSwgMjIsIDIsIDI1MCwgMzQsIDE3OSwgMiwgMjA1LCAyMDQsIDE3OSwgMSwgMjI5LCAxMzUsIDIxMCwgMjIsIDE3OSwgCi0gICAgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAxNzksIDEsIDIxNSwgMTg1LCAxNzksIDEsIDIxNiwgNjEsIDE3OSwgMSwgMjAyLCAKLSAgICAxNjgsIDE3OSwgMSwgMTI1LCAyMTUsIDE4NiwgMTc5LCAxLCAxMjUsIDIyNywgNzgsIDE3OSwgMjIsIDIsIDEyNSwgMTU5LCAKLSAgICAxNzksIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE3OSwgMTcsIDIwMiwgODQsIDE3OSwgMTcsIDEwNSwgMTc5LCAxNywgMTA4LCAKLSAgICAxNzksIDE3LCAxNDcsIDE3OSwgMTcsIDE0OSwgMTc5LCAxNywgMTcwLCAxNzksIDE3LCAxOTUsIDE3OSwgMTcsIDIxMywgCi0gICAgMTExLCAxNzksIDE3LCAxOTksIDE3OSwgMTcsIDIyMiwgNjMsIDE3OSwgMSwgMjE2LCAyMjEsIDMsIDEwMSwgMjQzLCAyMjcsIAotICAgIDE3OSwgMSwgMjE2LCAyMjEsIDMsIDIyNiwgMjUxLCAyNDMsIDIyNywgMTc5LCAyMTUsIDEyMCwgODIsIDE3OSwgMjE1LCAKLSAgICAxMjAsIDU0LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDEwNSwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxMDgsIDE3OSwgCi0gICAgMjQ1LCA5MiwgMjIxLCA0MywgMTQ3LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDE0OSwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAKLSAgICAxMTgsIDIyNywgMTgwLCAyMDksIDk4LCAyMDksIDkzLCAyNDQsIDMxLCAxNzksIDI0NSwgOTIsIDI0NCwgMzIsIDIxMiwgODIsIAotICAgIDE3OSwgMjMwLCAyMDIsIDE3OSwgMjM4LCAyMzEsIDgyLCAyMzcsIDE5OCwgMiwgMjUxLCAxMjEsIDI0OCwgNjYsIDIzNywgCi0gICAgMTk4LCAyLCAyNDgsIDY2LCAyMzcsIDE5OCwgMiwgMjA1LCAxOTksIDIzNywgMTk4LCAxLCA2MywgMjM3LCAxOTgsIDEsIAotICAgIDI1MiwgMjUsIDIzNywgMTk4LCAxLCA3NSwgMjM3LCAxOTgsIDEsIDIzMSwgODMsIDIzNywgMTk4LCAxLCA2OCwgMjM3LCAKLSAgICAxOTgsIDEsIDIwNiwgMTc4LCAyMzcsIDE5OCwgMSwgMjQxLCAxNjEsIDIzNywgMTk4LCAxLCAyNTEsIDY0LCAyMzcsIDE5OCwgCi0gICAgMSwgMjIwLCAxOCwgMjM3LCAxOTgsIDEsIDI1MCwgMzQsIDIzNywgMTk4LCAxLCAxNzMsIDIzNywgMTk4LCAxLCAyMjksIAotICAgIDE0NCwgMjM3LCAxOTgsIDEsIDIzOSwgOCwgMjM3LCAxOTgsIDEsIDIzOCwgMTE5LCAyMzcsIDE5OCwgMSwgMjIyLCAyMDMsIAotICAgIDIzNywgMTk4LCAxLCAyNDcsIDkyLCAyMzcsIDE5OCwgMSwgMjQ2LCAxOTksIDIzNywgMTk4LCAxLCAyMzAsIDE4MSwgMjM3LCAKLSAgICAxOTgsIDEsIDIzMCwgMTQ5LCAyMzcsIDE5OCwgMSwgMjIxLCAxMSwgMjM3LCAxOTgsIDEsIDIwNywgMjQxLCAyMzcsIDE5OCwgCi0gICAgMSwgMjA3LCAyMjksIDIzNywgMTk4LCAxLCAyNDQsIDEyMCwgMjM3LCAxOTgsIDEsIDI0NCwgMTA0LCAyMzcsIDE5OCwgMSwgCi0gICAgMjIxLCAyMjcsIDIzNywgMTk4LCAxLCAyMTAsIDIyLCAyMzcsIDE5OCwgMSwgMjA5LCAxMDgsIDIzNywgMTk4LCAxLCAyNDQsIAotICAgIDIxMiwgMjM3LCAxOTgsIDEsIDI0NCwgMSwgMjM3LCAxOTgsIDEsIDIwMSwgMjAxLCAyMzcsIDE5OCwgMSwgMTg1LCAyMzcsIAotICAgIDE5OCwgMSwgMjE4LCAyMDgsIDIzNywgMTk4LCAxLCAyNDksIDMyLCAyMzcsIDE5OCwgMSwgMjQ4LCA5OCwgMjM3LCAxOTgsIAotICAgIDEsIDE5MiwgMjM3LCAxOTgsIDEsIDE5OCwgMjM3LCAxOTgsIDEsIDIxNiwgMjIwLCAyMzcsIDE5OCwgMSwgMjI4LCAxMTMsIAotICAgIDIzNywgMTk4LCAxLCAyMjcsIDc3LCAyMzcsIDE5OCwgMSwgMjA2LCA4NiwgMjM3LCAxOTgsIDEsIDIxMywgOTAsIDIzNywgCi0gICAgMTk4LCAxLCAyMTUsIDM2LCAyMzcsIDE5OCwgMSwgMTUyLCAyMzcsIDE5OCwgMiwgMjIxLCA1MSwgMjM3LCAxOTgsIDIyLCAyLCAKLSAgICAyNTIsIDI1LCAyMzcsIDE5OCwgMjIsIDIsIDc1LCAyMzcsIDE5OCwgMjIsIDIsIDIzMSwgODMsIDIzNywgMTk4LCAyMiwgMiwgCi0gICAgNjgsIDIzNywgMTk4LCAyMiwgMiwgMjA2LCAxNzgsIDIzNywgMTk4LCAyMiwgMiwgMjQxLCAxNjEsIDIzNywgMTk4LCAyMiwgCi0gICAgMiwgMjUxLCA2NCwgMjM3LCAxOTgsIDIyLCAyLCAyMjAsIDE4LCAyMzcsIDE5OCwgMjIsIDIsIDI1MCwgMzQsIDIzNywgMTk4LCAKLSAgICAyLCAyMDUsIDIwNCwgMjM3LCAxOTgsIDIsIDIwNywgMjgsIDIzNywgMTk4LCAxLCAyMjksIDEyNSwgMjM3LCAxOTgsIDEsIAotICAgIDIzOCwgOTQsIDIzNywgMTk4LCAxLCAyMDIsIDExNiwgMjM3LCAxOTgsIDEsIDIxNSwgMTg1LCAyMzcsIDE5OCwgMSwgMjQwLCAKLSAgICAxMDgsIDIzNywgMTk4LCAxNywgMjAyLCA4NCwgMjM3LCAxOTgsIDE3LCAxMDUsIDIzNywgMTk4LCAxNywgMTA4LCAyMzcsIAotICAgIDE5OCwgMTcsIDE0NywgMjM3LCAxOTgsIDE3LCAxNDksIDIzNywgMTk4LCAxNywgMTcwLCAyMzcsIDE5OCwgMTcsIDE5NSwgCi0gICAgMjM3LCAxOTgsIDE3LCAyMTMsIDExMSwgMjM3LCAxOTgsIDE3LCAxOTksIDIzNywgMTk4LCAxNywgMjIyLCA2MywgMjM3LCAKLSAgICAxOTgsIDIwOCwgMjA4LCAyMzcsIDE5OCwgMjUxLCAxMjAsIDIzNywgMTk4LCAyMzAsIDIyMiwgMjM3LCAxOTgsIDIwNiwgCi0gICAgMjA2LCAyMzcsIDE5OCwgMjQxLCAxMzAsIDIyMCwgMjMsIDIzNywgMTk4LCAyLCAyMDMsIDg1LCAyMzcsIDIxMywgMiwgMjQ3LCAKLSAgICA1MiwgMjM3LCAyMTMsIDIsIDI1MCwgMTgwLCAyMzcsIDIxMywgMiwgMjA1LCAxOTksIDIzNywgMjEzLCAxLCA2MywgMjM3LCAKLSAgICAyMTMsIDEsIDI1MiwgMjUsIDIzNywgMjEzLCAxLCA3NSwgMjM3LCAyMTMsIDEsIDIzMSwgODMsIDIzNywgMjEzLCAxLCA2OCwgCi0gICAgMjM3LCAyMTMsIDEsIDIwNiwgMTc4LCAyMzcsIDIxMywgMSwgMTI1LCAxNDYsIDIzNywgMjEzLCAxLCAxMjUsIDE1OSwgMjM3LCAKLSAgICAyMTMsIDIyLCAyNDcsIDU1LCA3NCwgMjM3LCAyMTMsIDEsIDc0LCAyMzcsIDIxMywgMSwgMjUxLCA2NCwgMjM3LCAyMTMsIAotICAgIDIyLCAyNDcsIDU1LCA3OCwgMjM3LCAyMTMsIDEsIDc4LCAyMzcsIDIxMywgMSwgMjUwLCAzNCwgMjM3LCAyMTMsIDEsIDE3MywgCi0gICAgMjM3LCAyMTMsIDEsIDIyOSwgMTQ0LCAyMzcsIDIxMywgMSwgMjM5LCA4LCAyMzcsIDIxMywgMSwgMjM4LCAxMTksIDIzNywgCi0gICAgMjEzLCAxLCAyMjIsIDIwMywgMjM3LCAyMTMsIDEsIDI0NywgOTIsIDIzNywgMjEzLCAxLCAyNDYsIDE5OSwgMjM3LCAyMTMsIAotICAgIDEsIDIzMCwgMTgxLCAyMzcsIDIxMywgMSwgMjMwLCAxNDksIDIzNywgMjEzLCAxLCAyMjEsIDExLCAyMzcsIDIxMywgMSwgCi0gICAgMjA3LCAyNDEsIDIzNywgMjEzLCAxLCAyMDcsIDIyOSwgMjM3LCAyMTMsIDEsIDI0NCwgMTIwLCAyMzcsIDIxMywgMSwgMjQ0LCAKLSAgICAxMDQsIDIzNywgMjEzLCAxLCAyMjEsIDIyNywgMjM3LCAyMTMsIDEsIDIxMCwgMjIsIDIzNywgMjEzLCAxLCAyMDksIDEwOCwgCi0gICAgMjM3LCAyMTMsIDEsIDI0NCwgMjEyLCAyMzcsIDIxMywgMSwgMjQ0LCAxLCAyMzcsIDIxMywgMSwgMjAxLCAyMDEsIDIzNywgCi0gICAgMjEzLCAxLCAxODUsIDIzNywgMjEzLCAxLCAyMTgsIDIwOCwgMjM3LCAyMTMsIDEsIDI0OSwgMzIsIDIzNywgMjEzLCAxLCAKLSAgICAyNDgsIDk4LCAyMzcsIDIxMywgMSwgMTkyLCAyMzcsIDIxMywgMSwgMTk4LCAyMzcsIDIxMywgMSwgMjE2LCAyMjAsIDIzNywgCi0gICAgMjEzLCAxLCAyMjgsIDExMywgMjM3LCAyMTMsIDEsIDIyNywgNzcsIDIzNywgMjEzLCAxLCAyMDYsIDg2LCAyMzcsIDIxMywgCi0gICAgMSwgMjEzLCA5MCwgMjM3LCAyMTMsIDEsIDIxMSwgMTY0LCAyMzcsIDIxMywgMSwgMjE1LCAzNiwgMjM3LCAyMTMsIDEsIAotICAgIDE1MiwgMjM3LCAyMTMsIDIsIDIyMSwgNTEsIDIzNywgMjEzLCAyLCAyNTAsIDE3LCAyMzcsIDIxMywgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDIzNywgMjEzLCAyMiwgMiwgNzUsIDIzNywgMjEzLCAyMiwgMiwgMjMxLCA4MywgMjM3LCAyMTMsIDIyLCAyLCA2OCwgCi0gICAgMjM3LCAyMTMsIDIyLCAyLCAyMDYsIDE3OCwgMjM3LCAyMTMsIDIyLCAyLCAxMjUsIDE0NiwgMjM3LCAyMTMsIDIyLCAyLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAyMzcsIDIxMywgMjIsIDIsIDI0NywgNTUsIDc0LCAyMzcsIDIxMywgMjIsIDIsIDc0LCAyMzcsIAotICAgIDIxMywgMjIsIDIsIDI1MSwgNjQsIDIzNywgMjEzLCAyMiwgMiwgMjQ3LCA1NSwgNzgsIDIzNywgMjEzLCAyMiwgMiwgNzgsIAotICAgIDIzNywgMjEzLCAyMiwgMiwgMjUwLCAzNCwgMjM3LCAyMTMsIDIsIDIwNSwgMjA0LCAyMzcsIDIxMywgMjIwLCAzOSwgMjM3LCAKLSAgICAyMTMsIDEsIDEyNSwgMjE1LCAxODYsIDIzNywgMjEzLCAxLCAxMjUsIDIyNywgNzgsIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAKLSAgICAxNTksIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMzcsIDIxMywgMTcsIDIwMiwgODQsIDIzNywgMjEzLCAxNywgCi0gICAgMTA1LCAyMzcsIDIxMywgMTcsIDEwOCwgMjM3LCAyMTMsIDE3LCAxNDcsIDIzNywgMjEzLCAxNywgMTQ5LCAyMzcsIDIxMywgCi0gICAgMTcsIDE3MCwgMjM3LCAyMTMsIDE3LCAxOTUsIDIzNywgMjEzLCAxNywgMjEzLCAxMTEsIDIzNywgMjEzLCAxNywgMTk5LCAKLSAgICAyMzcsIDIxMywgMTcsIDIyMiwgNjMsIDIzNywgMjEzLCAyNTEsIDE0NiwgNTQsIDIzNywgMjEzLCAyMTUsIDEyMCwgNTQsIAotICAgIDIzNywgMjEzLCAxLCAyMDIsIDgwLCAxOTMsIDIsIDI0NywgNTIsIDE5MywgMiwgMjUwLCAxODAsIDE5MywgMiwgMjA1LCAKLSAgICAxOTksIDE5MywgMSwgNjMsIDE5MywgMSwgMjUyLCAyNSwgMTkzLCAxLCA3NSwgMTkzLCAxLCAyMzEsIDgzLCAxOTMsIDEsIAotICAgIDY4LCAxOTMsIDEsIDIwNiwgMTc4LCAxOTMsIDEsIDEyNSwgMTQ2LCAxOTMsIDEsIDEyNSwgMTU5LCAxOTMsIDEsIDc0LCAKLSAgICAxOTMsIDEsIDI1MSwgNjQsIDE5MywgMSwgNzgsIDE5MywgMSwgMjUwLCAzNCwgMTkzLCAxLCAxNzMsIDE5MywgMSwgMjI5LCAKLSAgICAxNDQsIDE5MywgMSwgMjM5LCA4LCAxOTMsIDEsIDIzOCwgMTE5LCAxOTMsIDEsIDIyMiwgMjAzLCAxOTMsIDEsIDI0NywgOTIsIAotICAgIDE5MywgMSwgMjQ2LCAxOTksIDE5MywgMSwgMjMwLCAxODEsIDE5MywgMSwgMjMwLCAxNDksIDE5MywgMSwgMjIxLCAxMSwgCi0gICAgMTkzLCAxLCAyMDcsIDI0MSwgMTkzLCAxLCAyMDcsIDIyOSwgMTkzLCAxLCAyNDQsIDEyMCwgMTkzLCAxLCAyNDQsIDEwNCwgCi0gICAgMTkzLCAxLCAyMjEsIDIyNywgMTkzLCAxLCAyMTAsIDIyLCAxOTMsIDEsIDIwOSwgMTA4LCAxOTMsIDEsIDI0NCwgMjEyLCAKLSAgICAxOTMsIDEsIDI0NCwgMSwgMTkzLCAxLCAyMDEsIDIwMSwgMTkzLCAxLCAxODUsIDE5MywgMSwgMjE4LCAyMDgsIDE5MywgMSwgCi0gICAgMjQ5LCAzMiwgMTkzLCAxLCAyNDgsIDk4LCAxOTMsIDEsIDE5MiwgMTkzLCAxLCAxOTgsIDE5MywgMSwgMjE2LCAyMjAsIAotICAgIDE5MywgMSwgMjI4LCAxMTMsIDE5MywgMSwgMjI3LCA3NywgMTkzLCAxLCAyMDYsIDg2LCAxOTMsIDEsIDIxMywgOTAsIDE5MywgCi0gICAgMSwgMjExLCAxNjQsIDE5MywgMSwgMjE1LCAzNiwgMTkzLCAxLCAxNTIsIDE5MywgMiwgMjIxLCA1MSwgMTkzLCAyLCAyNTAsIAotICAgIDE3LCAxOTMsIDIyLCAyLCAyNTIsIDI1LCAxOTMsIDIyLCAyLCA3NSwgMTkzLCAyMiwgMiwgMjMxLCA4MywgMTkzLCAyMiwgMiwgCi0gICAgNjgsIDE5MywgMjIsIDIsIDIwNiwgMTc4LCAxOTMsIDIyLCAyLCAxMjUsIDE0NiwgMTkzLCAyMiwgMiwgMTI1LCAyMTUsIAotICAgIDE4NiwgMTkzLCAyMiwgMiwgNzQsIDE5MywgMjIsIDIsIDI1MSwgNjQsIDE5MywgMjIsIDIsIDc4LCAxOTMsIDIyLCAyLCAKLSAgICAyNTAsIDM0LCAxOTMsIDIsIDIwNSwgMjA0LCAxOTMsIDI1MSwgNjUsIDIyNywgMTk2LCA4MiwgMTkzLCAyNTAsIDM1LCAyMjcsIAotICAgIDE5NiwgODIsIDE5MywgMSwgMjE1LCAxODUsIDE5MywgMSwgMjE2LCA2MSwgMTkzLCAxLCAyMDIsIDE2OCwgMTkzLCAxLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAxOTMsIDEsIDEyNSwgMjI3LCA3OCwgMTkzLCAyMiwgMiwgMTI1LCAxNTksIDE5MywgMjIsIDIsIAotICAgIDEyNSwgMjI3LCA3OCwgMTkzLCAxNywgMjAyLCA4NCwgMTkzLCAxNywgMTA1LCAxOTMsIDE3LCAxMDgsIDE5MywgMTcsIDE0NywgCi0gICAgMTkzLCAxNywgMTQ5LCAxOTMsIDE3LCAxNzAsIDE5MywgMTcsIDE5NSwgMTkzLCAxNywgMjEzLCAxMTEsIDE5MywgMTcsIAotICAgIDE5OSwgMTkzLCAxNywgMjIyLCA2MywgMTkzLCAyMzAsIDIwMiwgMTkzLCAxLCAyMDQsIDExMSwgMTkzLCAyMzksIDEzOCwgCi0gICAgMTE4LCAyMTcsIDU1LCAxOTMsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxOTMsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIAotICAgIDE5MywgMjM5LCAxMzgsIDExOCwgMjEyLCA4MCwgMTkzLCAyMzksIDEzOCwgMTE4LCAyNDEsIDEzOCwgMTkzLCAyMzksIDEzOCwgCi0gICAgMTI2LCAyMTIsIDc5LCA0NCwgMiwgMjUwLCAxODAsIDQ0LCAyLCAyMDUsIDE5OSwgNDQsIDEsIDYzLCA0NCwgMSwgMjUyLCAKLSAgICAyNSwgNDQsIDEsIDc1LCA0NCwgMSwgMjMxLCA4MywgNDQsIDEsIDY4LCA0NCwgMSwgMjA2LCAxNzgsIDQ0LCAxLCA3NCwgNDQsIAotICAgIDEsIDI0MSwgMTYxLCA0NCwgMSwgMjUxLCA2NCwgNDQsIDEsIDc4LCA0NCwgMSwgMjIwLCAxOCwgNDQsIDEsIDI1MCwgMzQsIAotICAgIDQ0LCAxLCAxNzMsIDQ0LCAxLCAyMjIsIDIwMywgNDQsIDEsIDI0NywgOTIsIDQ0LCAxLCAyMzAsIDE4MSwgNDQsIDEsIDIyMSwgCi0gICAgMTEsIDQ0LCAxLCAyMDcsIDI0MSwgNDQsIDEsIDIyMSwgMjI3LCA0NCwgMSwgMjEwLCAyMiwgNDQsIDEsIDIwMSwgMjAxLCAKLSAgICA0NCwgMSwgMjIxLCAyMDksIDQ0LCAxLCAxODUsIDQ0LCAxLCAxOTIsIDQ0LCAxLCAxOTgsIDQ0LCAxLCAyMTYsIDIyMCwgNDQsIAotICAgIDEsIDIxNSwgMTg1LCA0NCwgMSwgMjI4LCAxMTMsIDQ0LCAxLCAyMjcsIDc3LCA0NCwgMSwgMjI3LCA2OCwgNDQsIDEsIDIwNiwgCi0gICAgODYsIDQ0LCAxLCAyMTMsIDkwLCA0NCwgMSwgMjExLCAxNjQsIDQ0LCAxLCAyMTUsIDM2LCA0NCwgMSwgMTUyLCA0NCwgMjIsIAotICAgIDIsIDI1MiwgMjUsIDQ0LCAyMiwgMiwgNzUsIDQ0LCAyMiwgMiwgMjMxLCA4MywgNDQsIDIyLCAyLCA2OCwgNDQsIDIyLCAyLCAKLSAgICAyMDYsIDE3OCwgNDQsIDIyLCAyLCA3NCwgNDQsIDIyLCAyLCAyNDEsIDE2MSwgNDQsIDIyLCAyLCAyNTEsIDY0LCA0NCwgMjIsIAotICAgIDIsIDc4LCA0NCwgMjIsIDIsIDIyMCwgMTgsIDQ0LCAyMiwgMiwgMjUwLCAzNCwgNDQsIDIsIDIwNSwgMjA0LCA0NCwgMjIwLCAKLSAgICAzOSwgNDQsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgNDQsIDE3LCAyMDIsIDg0LCA0NCwgMTcsIDEwNSwgNDQsIDE3LCAxMDgsIAotICAgIDQ0LCAxNywgMTQ3LCA0NCwgMTcsIDE0OSwgNDQsIDE3LCAxNzAsIDQ0LCAxNywgMTk1LCA0NCwgMTcsIDIxMywgMTExLCA0NCwgCi0gICAgMTcsIDE5OSwgNDQsIDE3LCAyMjIsIDYzLCA0NCwgNDIsIDIwOSwgMTUyLCA0NCwgNDIsIDExOCwgMjM2LCAxMSwgNDQsIDQyLCAKLSAgICAxMTgsIDIwOSwgMzYsIDQ0LCAyNDQsIDEzMywgNTQsIDQ0LCAyMjQsIDM4LCA1NCwgNDQsIDIwMywgNTAsIDU0LCA0NCwgCi0gICAgMjQ0LCA3MiwgNTQsIDQ0LCAyNDUsIDE0MSwgNTQsIDQ0LCAyNTAsIDgyLCA4NywgNTQsIDQ0LCAyMTUsIDEyMCwgNTQsIDQ0LCAKLSAgICA0MiwgNTQsIDE3NSwgMiwgMzksIDI0NywgNTMsIDU1LCAxNzUsIDIsIDI0NywgNTIsIDE3NSwgMiwgMjUwLCAxODAsIDE3NSwgCi0gICAgMiwgMjA1LCAxOTksIDE3NSwgMSwgNjMsIDE3NSwgMSwgMjUyLCAyNSwgMTc1LCAxLCA3NSwgMTc1LCAxLCAyMzEsIDgzLCAKLSAgICAxNzUsIDEsIDY4LCAxNzUsIDEsIDIwNiwgMTc4LCAxNzUsIDEsIDEyNSwgMTQ2LCAxNzUsIDEsIDEyNSwgMTU5LCAxNzUsIDEsIAotICAgIDc0LCAxNzUsIDEsIDI0MSwgMTYxLCAxNzUsIDEsIDI1MSwgNjQsIDE3NSwgMSwgNzgsIDE3NSwgMSwgMjIwLCAxOCwgMTc1LCAKLSAgICAxLCAyNTAsIDM0LCAxNzUsIDEsIDE3MywgMTc1LCAxLCAyMjksIDE0NCwgMTc1LCAxLCAyMzksIDgsIDE3NSwgMSwgMjM4LCAKLSAgICAxMTksIDE3NSwgMSwgMjIyLCAyMDMsIDE3NSwgMSwgMjQ3LCA5MiwgMTc1LCAxLCAyNDYsIDE5OSwgMTc1LCAxLCAyMzAsIAotICAgIDE4MSwgMTc1LCAxLCAyMzAsIDE0OSwgMTc1LCAxLCAyMjEsIDExLCAxNzUsIDEsIDIwNywgMjQxLCAxNzUsIDEsIDIwNywgCi0gICAgMjI5LCAxNzUsIDEsIDI0NCwgMTIwLCAxNzUsIDEsIDI0NCwgMTA0LCAxNzUsIDEsIDIyMSwgMjI3LCAxNzUsIDEsIDIxMCwgCi0gICAgMjIsIDE3NSwgMSwgMjA5LCAxMDgsIDE3NSwgMSwgMjQ0LCAyMTIsIDE3NSwgMSwgMjQ0LCAxLCAxNzUsIDEsIDIwMSwgMjAxLCAKLSAgICAxNzUsIDEsIDE4NSwgMTc1LCAxLCAyMTgsIDIwOCwgMTc1LCAxLCAyNDksIDMyLCAxNzUsIDEsIDI0OCwgOTgsIDE3NSwgMSwgCi0gICAgMTkyLCAxNzUsIDEsIDE5OCwgMTc1LCAxLCAyMTYsIDIyMCwgMTc1LCAxLCAyMTUsIDE4NSwgMTc1LCAxLCAyMjgsIDExMywgCi0gICAgMTc1LCAxLCAyMjcsIDc3LCAxNzUsIDEsIDIyNywgNjgsIDE3NSwgMSwgMjA2LCA4NiwgMTc1LCAxLCAyMTMsIDkwLCAxNzUsIAotICAgIDEsIDIxMSwgMTY0LCAxNzUsIDEsIDIxNSwgMzYsIDE3NSwgMSwgMTUyLCAxNzUsIDIsIDI1MCwgMTcsIDE3NSwgMjIsIDIsIAotICAgIDI1MiwgMjUsIDE3NSwgMjIsIDIsIDc1LCAxNzUsIDIyLCAyLCAyMzEsIDgzLCAxNzUsIDIyLCAyLCA2OCwgMTc1LCAyMiwgMiwgCi0gICAgMjA2LCAxNzgsIDE3NSwgMjIsIDIsIDEyNSwgMTQ2LCAxNzUsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNzUsIDIyLCAyLCAKLSAgICA3NCwgMTc1LCAyMiwgMiwgMjQxLCAxNjEsIDE3NSwgMjIsIDIsIDI1MSwgNjQsIDE3NSwgMjIsIDIsIDc4LCAxNzUsIDIyLCAKLSAgICAyLCAyMjAsIDE4LCAxNzUsIDIyLCAyLCAyNTAsIDM0LCAxNzUsIDIsIDIwNSwgMjA0LCAxNzUsIDIyNywgMTk2LCA4MiwgCi0gICAgMTc1LCAyNTEsIDY1LCAyMjcsIDE5NiwgODIsIDE3NSwgMSwgMjA4LCAyMCwgMTc1LCAxLCAyNDEsIDI1NSwgMTc1LCAxLCAKLSAgICAyMTUsIDE2NiwgMTc1LCAxLCAxMjUsIDIxNSwgMTg2LCAxNzUsIDEsIDEyNSwgMjI3LCA3OCwgMTc1LCAyMiwgMiwgMTI1LCAKLSAgICAxNTksIDE3NSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTc1LCAxNywgMjAyLCA4NCwgMTc1LCAxNywgMTA1LCAxNzUsIDE3LCAKLSAgICAxMDgsIDE3NSwgMTcsIDE0NywgMTc1LCAxNywgMTQ5LCAxNzUsIDE3LCAxNzAsIDE3NSwgMTcsIDE5NSwgMTc1LCAxNywgCi0gICAgMjEzLCAxMTEsIDE3NSwgMTcsIDE5OSwgMTc1LCAxNywgMjIyLCA2MywgMTc1LCAyMzksIDEzOCwgMTcsIDIwMiwgODUsIDM1LCAKLSAgICAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTE4LCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgCi0gICAgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyMCwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAKLSAgICAxMzgsIDE3LCAxMjYsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTE4LCAzNSwgCi0gICAgMjQwLCAyMjUsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjAsIDM1LCAyNDAsIDIyNSwgMjE4LCAKLSAgICAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyNiwgMzUsIDI0MCwgMjI1LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIAotICAgIDIsIDIwNywgMTY0LCAyMDAsIDIsIDI0NywgNTIsIDIwMCwgMiwgMjUwLCAxODAsIDIwMCwgMiwgMjA1LCAxOTksIDIwMCwgMSwgCi0gICAgNjMsIDIwMCwgMSwgMjUyLCAyNSwgMjAwLCAxLCA3NSwgMjAwLCAxLCAyMzEsIDgzLCAyMDAsIDEsIDY4LCAyMDAsIDEsIAotICAgIDIwNiwgMTc4LCAyMDAsIDEsIDEyNSwgMTQ2LCAyMDAsIDEsIDEyNSwgMTU5LCAyMDAsIDEsIDc0LCAyMDAsIDEsIDI0MSwgCi0gICAgMTYxLCAyMDAsIDEsIDI1MSwgNjQsIDIwMCwgMSwgNzgsIDIwMCwgMSwgMjIwLCAxOCwgMjAwLCAxLCAyNTAsIDM0LCAyMDAsIAotICAgIDEsIDE3MywgMjAwLCAxLCAyMjksIDE0NCwgMjAwLCAxLCAyMzksIDgsIDIwMCwgMSwgMjM4LCAxMTksIDIwMCwgMSwgMjIyLCAKLSAgICAyMDMsIDIwMCwgMSwgMjQ3LCA5MiwgMjAwLCAxLCAyNDYsIDE5OSwgMjAwLCAxLCAyMzAsIDE4MSwgMjAwLCAxLCAyMzAsIAotICAgIDE0OSwgMjAwLCAxLCAyMjEsIDExLCAyMDAsIDEsIDIwNywgMjQxLCAyMDAsIDEsIDIwNywgMjI5LCAyMDAsIDEsIDI0NCwgCi0gICAgMTIwLCAyMDAsIDEsIDI0NCwgMTA0LCAyMDAsIDEsIDIyMSwgMjI3LCAyMDAsIDEsIDIxMCwgMjIsIDIwMCwgMSwgMjA5LCAKLSAgICAxMDgsIDIwMCwgMSwgMjQ0LCAyMTIsIDIwMCwgMSwgMjQ0LCAxLCAyMDAsIDEsIDIwMSwgMjAxLCAyMDAsIDEsIDE4NSwgCi0gICAgMjAwLCAxLCAyMTgsIDIwOCwgMjAwLCAxLCAyNDksIDMyLCAyMDAsIDEsIDI0OCwgOTgsIDIwMCwgMSwgMTkyLCAyMDAsIDEsIAotICAgIDE5OCwgMjAwLCAxLCAyMTYsIDIyMCwgMjAwLCAxLCAyMTUsIDE4NSwgMjAwLCAxLCAyMjgsIDExMywgMjAwLCAxLCAyMjcsIAotICAgIDc3LCAyMDAsIDEsIDIwNiwgODYsIDIwMCwgMSwgMjEzLCA5MCwgMjAwLCAxLCAyMTEsIDE2NCwgMjAwLCAxLCAyMTUsIDM2LCAKLSAgICAyMDAsIDEsIDE1MiwgMjAwLCAyLCAyMjEsIDUxLCAyMDAsIDIsIDI1MCwgMTcsIDIwMCwgMjIsIDIsIDI1MiwgMjUsIDIwMCwgCi0gICAgMjIsIDIsIDc1LCAyMDAsIDIyLCAyLCAyMzEsIDgzLCAyMDAsIDIyLCAyLCA2OCwgMjAwLCAyMiwgMiwgMjA2LCAxNzgsIAotICAgIDIwMCwgMjIsIDIsIDEyNSwgMTQ2LCAyMDAsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMDAsIDIyLCAyLCA3NCwgMjAwLCAyMiwgCi0gICAgMiwgMjQxLCAxNjEsIDIwMCwgMjIsIDIsIDI1MSwgNjQsIDIwMCwgMjIsIDIsIDc4LCAyMDAsIDIyLCAyLCAyMjAsIDE4LCAKLSAgICAyMDAsIDIyLCAyLCAyNTAsIDM0LCAyMDAsIDIsIDIwNSwgMjA0LCAyMDAsIDIyNywgMTk2LCA4MiwgMjAwLCAyNTEsIDY1LCAKLSAgICAyMjcsIDE5NiwgODIsIDIwMCwgMSwgMjQwLCAxMDgsIDIwMCwgMSwgMTI1LCAyMTUsIDE4NiwgMjAwLCAxLCAxMjUsIDIyNywgCi0gICAgNzgsIDIwMCwgMjIsIDIsIDEyNSwgMTU5LCAyMDAsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIwMCwgMTcsIDIwMiwgODQsIAotICAgIDIwMCwgMTcsIDEwNSwgMjAwLCAxNywgMTA4LCAyMDAsIDE3LCAxNDcsIDIwMCwgMTcsIDE0OSwgMjAwLCAxNywgMTcwLCAKLSAgICAyMDAsIDE3LCAxOTUsIDIwMCwgMTcsIDIxMywgMTExLCAyMDAsIDE3LCAxOTksIDIwMCwgMTcsIDIyMiwgNjMsIDIwMCwgMiwgCi0gICAgMjMwLCAxMzUsIDIwMCwgMiwgMjA2LCAyMjIsIDE2NCwgMiwgMjQ3LCA1MiwgMTY0LCAyLCAyNTAsIDE4MCwgMTY0LCAyLCAKLSAgICAyMDUsIDE5OSwgMTY0LCAxLCA2MywgMTY0LCAxLCAyNTIsIDI1LCAxNjQsIDEsIDc1LCAxNjQsIDEsIDIzMSwgODMsIDE2NCwgCi0gICAgMSwgNjgsIDE2NCwgMSwgMjA2LCAxNzgsIDE2NCwgMSwgMTI1LCAxNDYsIDE2NCwgMSwgMTI1LCAxNTksIDE2NCwgMSwgNzQsIAotICAgIDE2NCwgMSwgMjQxLCAxNjEsIDE2NCwgMSwgMjUxLCA2NCwgMTY0LCAxLCA3OCwgMTY0LCAxLCAyMjAsIDE4LCAxNjQsIDEsIAotICAgIDI1MCwgMzQsIDE2NCwgMSwgMTczLCAxNjQsIDEsIDIyOSwgMTQ0LCAxNjQsIDEsIDIzOSwgOCwgMTY0LCAxLCAyMzgsIDExOSwgCi0gICAgMTY0LCAxLCAyMjIsIDIwMywgMTY0LCAxLCAyNDcsIDkyLCAxNjQsIDEsIDI0NiwgMTk5LCAxNjQsIDEsIDIzMCwgMTgxLCAKLSAgICAxNjQsIDEsIDIzMCwgMTQ5LCAxNjQsIDEsIDIyMSwgMTEsIDE2NCwgMSwgMjA3LCAyNDEsIDE2NCwgMSwgMjA3LCAyMjksIAotICAgIDE2NCwgMSwgMjQ0LCAxMjAsIDE2NCwgMSwgMjQ0LCAxMDQsIDE2NCwgMSwgMjIxLCAyMjcsIDE2NCwgMSwgMjEwLCAyMiwgCi0gICAgMTY0LCAxLCAyMDksIDEwOCwgMTY0LCAxLCAyNDQsIDIxMiwgMTY0LCAxLCAyNDQsIDEsIDE2NCwgMSwgMjAxLCAyMDEsIAotICAgIDE2NCwgMSwgMjIxLCAyMDksIDE2NCwgMSwgMTg1LCAxNjQsIDEsIDIxOCwgMjA4LCAxNjQsIDEsIDI0OSwgMzIsIDE2NCwgMSwgCi0gICAgMjQ4LCA5OCwgMTY0LCAxLCAxOTIsIDE2NCwgMSwgMTk4LCAxNjQsIDEsIDIxNiwgMjIwLCAxNjQsIDEsIDIxNSwgMTg1LCAKLSAgICAxNjQsIDEsIDIyOCwgMTEzLCAxNjQsIDEsIDIyNywgNzcsIDE2NCwgMSwgMjI3LCA2OCwgMTY0LCAxLCAyMDYsIDg2LCAxNjQsIAotICAgIDEsIDIxMywgOTAsIDE2NCwgMSwgMjExLCAxNjQsIDE2NCwgMSwgMjE1LCAzNiwgMTY0LCAxLCAxNTIsIDE2NCwgMSwgMjA3LCAKLSAgICAyMTAsIDE2NCwgMiwgMjUwLCAxNywgMTY0LCAyMiwgMiwgMjUyLCAyNSwgMTY0LCAyMiwgMiwgNzUsIDE2NCwgMjIsIDIsIAotICAgIDIzMSwgODMsIDE2NCwgMjIsIDIsIDY4LCAxNjQsIDIyLCAyLCAyMDYsIDE3OCwgMTY0LCAyMiwgMiwgMTI1LCAxNDYsIDE2NCwgCi0gICAgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE2NCwgMjIsIDIsIDc0LCAxNjQsIDIyLCAyLCAyNDEsIDE2MSwgMTY0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMTY0LCAyMiwgMiwgNzgsIDE2NCwgMjIsIDIsIDIyMCwgMTgsIDE2NCwgMjIsIDIsIDI1MCwgMzQsIDE2NCwgCi0gICAgMiwgMjA1LCAyMDQsIDE2NCwgMSwgNzAsIDIxNiwgOTcsIDE2NCwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAxNjQsIDEsIAotICAgIDI1MCwgMTI2LCAyMzEsIDgzLCAxNjQsIDEsIDEyNSwgMjE1LCAxODYsIDE2NCwgMSwgMTI1LCAyMjcsIDc4LCAxNjQsIDIyLCAKLSAgICAyLCAxMjUsIDE1OSwgMTY0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNjQsIDE3LCAyMDIsIDg0LCAxNjQsIDE3LCAxMDUsIAotICAgIDE2NCwgMTcsIDEwOCwgMTY0LCAxNywgMTQ3LCAxNjQsIDE3LCAxNDksIDE2NCwgMTcsIDE3MCwgMTY0LCAxNywgMTk1LCAKLSAgICAxNjQsIDE3LCAyMTMsIDExMSwgMTY0LCAxNywgMTk5LCAxNjQsIDE3LCAyMjIsIDYzLCAxNjQsIDQyLCAyMDksIDE1MiwgCi0gICAgMTY0LCA0MiwgMTE4LCAyMzYsIDExLCAxNjQsIDQyLCAxMTgsIDIwOSwgMzYsIDE2NCwgMjM5LCAxMzgsIDExOCwgMjE3LCAKLSAgICA1NSwgMTY0LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTY0LCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAxNjQsIDI0NCwgCi0gICAgMTM4LCA4MiwgMTY0LCAxLCAyNDYsIDEzMSwgMjIxLCAyMjgsIDE2NCwgMSwgMjQ2LCAxMzEsIDIyMywgMTYzLCAxNjQsIDEsIAotICAgIDI0NiwgMTMxLCAyMTUsIDE4NiwgMTY0LCAxLCAyNDYsIDEzMSwgMTU5LCAxNjQsIDEsIDI0NiwgMTMxLCAyMjcsIDc4LCAKLSAgICAxNjQsIDEsIDI0NiwgMTMxLCAyMzAsIDU0LCAxNDAsIDIsIDI1MCwgMTc5LCAxNDAsIDIsIDIwNSwgMTk4LCAxNDAsIDEsIAotICAgIDI1MCwgNiwgMTQwLCAxLCAyNTEsIDIzNSwgMTQwLCAxLCAyNTEsIDg5LCAxNDAsIDEsIDI1MSwgMTA0LCAxNDAsIDEsIDIzMCwgCi0gICAgMTkxLCAxNDAsIDEsIDIzMSwgODIsIDE0MCwgMSwgMjA2LCAxNjksIDE0MCwgMSwgMjA2LCAxNzIsIDE0MCwgMSwgMjMwLCAKLSAgICAyMTcsIDE0MCwgMSwgMjMwLCAyMTgsIDE0MCwgMSwgMjMxLCA2OCwgMTQwLCAxLCAyMzEsIDcwLCAxNDAsIDEsIDI0MCwgCi0gICAgMTk0LCAxNDAsIDEsIDI0MSwgMTU2LCAxNDAsIDEsIDI1MSwgNDksIDE0MCwgMSwgMjE5LCAxODcsIDE0MCwgMSwgMjIwLCAKLSAgICAxMSwgMTQwLCAxLCAyNTAsIDIwLCAxNDAsIDEsIDI1MSwgNSwgMjI5LCAyMDYsIDE0MCwgMSwgMjI1LCAxNDcsIDIyOSwgCi0gICAgMjA2LCAxNDAsIDEsIDI1MSwgNSwgMjM4LCAyMTAsIDE0MCwgMSwgMjI1LCAxNDcsIDIzOCwgMjEwLCAxNDAsIDEsIDIyOSwgCi0gICAgMjU1LCAyMjMsIDEwMywgMTQwLCAxLCAyMTQsIDIzNSwgMjM4LCAyMTAsIDE0MCwgMSwgMjUxLCA1LCAyNDcsIDgsIDE0MCwgCi0gICAgMSwgMjI1LCAxNDcsIDI0NywgOCwgMTQwLCAxLCAyNTEsIDUsIDIzMCwgMTY0LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMzAsIAotICAgIDE2NCwgMTQwLCAxLCAyMTAsIDE1LCAyMjMsIDEwMywgMTQwLCAxLCAyMTAsIDE1LCAyMTQsIDIzNCwgMjIzLCAxMDQsIDE0MCwgCi0gICAgMSwgMjE0LCAyMzUsIDIzMCwgMTY0LCAxNDAsIDEsIDI1MSwgNSwgMjA3LCAyMzcsIDE0MCwgMSwgMjI1LCAxNDcsIDIwNywgCi0gICAgMjM3LCAxNDAsIDEsIDI1MSwgNSwgMjQ0LCAxMTEsIDE0MCwgMSwgMjI1LCAxNDcsIDI0NCwgMTExLCAxNDAsIDEsIDIyMywgCi0gICAgMTkxLCAyMjMsIDU4LCAxNDAsIDEsIDIxNCwgMjM1LCAyNDQsIDExMSwgMTQwLCAxLCAyNTEsIDUsIDIwOSwgMTk1LCAxNDAsIAotICAgIDEsIDIyNSwgMTQ3LCAyMDksIDE5NSwgMTQwLCAxLCAyNTEsIDUsIDI0NCwgMTMxLCAxNDAsIDEsIDIyNSwgMTQ3LCAyNDQsIAotICAgIDEzMSwgMTQwLCAxLCAyNDQsIDE2MiwgMjIzLCA1OCwgMTQwLCAxLCAyMTQsIDIzNSwgMjQ0LCAxMzEsIDE0MCwgMSwgMjUxLCAKLSAgICA1LCAyMTksIDQyLCAxNDAsIDEsIDIyNSwgMTQ3LCAyMTksIDQyLCAxNDAsIDEsIDI1MSwgNSwgMjQ4LCAyMDAsIDE0MCwgMSwgCi0gICAgMjI1LCAxNDcsIDI0OCwgMjAwLCAxNDAsIDEsIDIyNSwgNjIsIDE0MCwgMSwgMjUwLCAyNDEsIDI0OCwgMjAwLCAxNDAsIDEsIAotICAgIDIwMywgNTcsIDE0MCwgMSwgMjE2LCAxNjQsIDE0MCwgMSwgMjQ0LCAxNjIsIDIyNywgMjQzLCAxNDAsIDEsIDIwNiwgNTcsIAotICAgIDE0MCwgMSwgMjEwLCAxNSwgMjE0LCAyMDcsIDE0MCwgMSwgMjIzLCAxOTEsIDIxNCwgMjA3LCAxNDAsIDEsIDI0NCwgMTYyLCAKLSAgICAyMTQsIDIwNywgMTQwLCAxLCAyMzcsIDcxLCAxNDAsIDEsIDIyMywgMTkxLCAyMjcsIDI0MywgMTQwLCAxLCAyNDAsIDYyLCAKLSAgICAxNDAsIDIsIDI1MSwgMzgsIDE0MCwgMjIsIDIsIDI1MSwgOTksIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyNTEsIDEwNiwgCi0gICAgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDI1MSwgMTA2LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjMwLCAyMTQsIDE0MCwgMjIsIAotICAgIDIsIDI0MywgMjAwLCAyMzAsIDIxNCwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDIxOSwgMTY3LCAxNDAsIDIyLCAyLCAyNDMsIAotICAgIDIwMCwgMjE5LCAxNjcsIDE0MCwgMjIsIDIsIDIzOCwgMjUzLCAxNDAsIDIyLCAyLCAyMjksIDExLCAxNDAsIDIyLCAyLCAKLSAgICAyNDMsIDIwMCwgMjI5LCAxMSwgMTQwLCAyMiwgMiwgMjI5LCAxMywgMjQ0LCA1MCwgMTQwLCAyMiwgMiwgMjI5LCAxMiwgCi0gICAgMjM3LCAxNTgsIDI1MSwgOTksIDE0MCwgMjIsIDIsIDIyOSwgMTIsIDIzNywgMTU4LCAyNDMsIDIwMCwgMjUxLCA5OSwgMTQwLCAKLSAgICAyMiwgMiwgMjI5LCAxMiwgMjM3LCAxNTgsIDIzOCwgMjA5LCAxNDAsIDIyLCAyLCAyMzgsIDIwOSwgMTQwLCAyMjcsIDg5LCAKLSAgICAxNywgMjAyLCA4NCwgMTQwLCAyMjcsIDg5LCAxNywgMTA1LCAxNDAsIDIyNywgODksIDE3LCAxMDgsIDE0MCwgMjI3LCA4OSwgCi0gICAgMTcsIDE0NywgMTQwLCAyMjcsIDg5LCAxNywgMTQ5LCAxNDAsIDIyNywgODksIDE3LCAxNzAsIDE0MCwgMjI3LCA4OSwgMTcsIAotICAgIDE5NSwgMTQwLCAyMjcsIDg5LCAxNywgMjEzLCAxMTEsIDE0MCwgMjI3LCA4OSwgMTcsIDE5OSwgMTQwLCAyMjcsIDg5LCAxNywgCi0gICAgMjIyLCA2MywgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDIzOCwgMjUzLCAxNDAsIDIyLCAyLCAyNDMsIDIwMCwgMjM4LCAyMDksIAotICAgIDE0MCwgMjE3LCAxNzksIDIyOCwgMTk0LCAyMDksIDEwMywgMTY3LCAyMjksIDI3LCAyMzAsIDE4LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjksIDExNiwgMjI5LCAxMzksIDIwOSwgMTAzLCAxNjcsIDIyOSwgMTE2LCAyMjksIDEwOCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI5LCAxMTYsIDIyOSwgMTAzLCAyMDksIDEwMywgMTY3LCAyMjksIDExNiwgMjI5LCAxMTIsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyOSwgMTE2LCAyMTYsIDE4NSwgMjA5LCAxMDMsIDE2NywgMjIyLCAxMjksIDIyMiwgMTE2LCAyMDksIDEwMywgMTY3LCAKLSAgICAyNDYsIDExNywgMjQ2LCAxODgsIDIwOSwgMTAzLCAxNjcsIDI0NiwgMTE3LCAyNDYsIDEyNywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjQ2LCAxMTcsIDI0NiwgMTg3LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTIsIDEzLCAyMDksIDEwMywgMTY3LCAyNDYsIAotICAgIDExNywgMjQ2LCAxMTMsIDIwOSwgMTAzLCAxNjcsIDIwMiwgMjQ4LCAyMDIsIDI1NSwgMjA5LCAxMDMsIDE2NywgMjQzLCAKLSAgICAxMTQsIDI0NiwgMTk2LCAyMDksIDEwMywgMTY3LCAyMDgsIDE3MywgMjE5LCA1MywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgCi0gICAgMjA5LCA5NywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjIzLCA4MCwgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjE4LCAKLSAgICAxNzAsIDIwOSwgMTAzLCAxNjcsIDIyMSwgMTkyLCAyMjIsIDIzMCwgMjA5LCAxMDMsIDE2NywgMjQzLCAxMTQsIDI0NCwgNTEsIAotICAgIDIwOSwgMTAzLCAxNjcsIDIwOCwgMTczLCAyMDksIDIyMywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCAxNiwgMjA5LCAKLSAgICAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCAxMDQsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgNDMsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDIyMSwgMTkyLCAyMjEsIDg0LCAyMDksIDEwMywgMTY3LCAyNDgsIDI0LCAyNDksIDAsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxOCwgNzAsIDIxOCwgOTgsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgxLCAyMTgsIDE3MiwgMjA5LCAxMDMsIDE2NywgMjM5LCAKLSAgICAxODcsIDI0MCwgMTA4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE4LCAyMDEsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCi0gICAgMTg3LCAyNDAsIDgxLCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE0LCAyNDcsIDIwOSwgMTAzLCAxNjcsIDIyNCwgODMsIAotICAgIDE5MiwgMjA5LCAxMDMsIDE2NywgMjAyLCAyNDgsIDIwMywgODYsIDIwOSwgMTAzLCAxNjcsIDIxNSwgMjI4LCAyMTUsIDE0NCwgCi0gICAgMjA5LCAxMDMsIDE2NywgMjE1LCAxNDUsIDIwOSwgMTAzLCAxNjcsIDIyNywgNTAsIDIyNywgMTA3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjYsIDIzOSwgMjA5LCAxMDMsIDE2NywgMjA0LCAxLCAyMDQsIDEwNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjE1LCAKLSAgICA2LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTUsIDExNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjExLCA5LCAyMDksIAotICAgIDEwMywgMTY3LCAyMzYsIDEzNywgMjM2LCAyMzMsIDIwOSwgMTAzLCAxNjcsIDIyNywgNTAsIDI0NiwgOTcsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDE1OCwgMjUwLCAyMjMsIDIwOSwgMTAzLCAxNjcsIDIzNiwgMTM3LCAyMjEsIDE4NywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE5LCAxNDQsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA2MywgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDIzNywgMTI1LCAKLSAgICAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjUyLCAyNSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MCwgMjQ3LCAyMDksIAotICAgIDEwMywgMTY3LCAyMTQsIDIyOSwgNzUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMzEsIDgzLCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTQsIDIyOSwgMjA3LCAyNCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIwNywgMjIsIDIwOSwgMTAzLCAxNjcsIDIxNCwgCi0gICAgMjI5LCA2OCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIwNiwgMTc4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MywgMjA5LCAKLSAgICAxMDMsIDI0NSwgOTIsIDE2LCAyNDksIDEsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA3NCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE0LCAyMjksIDI1MSwgMTA5LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNzgsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAKLSAgICAyNTEsIDY1LCAyMjUsIDEzNSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MSwgNjUsIDIyNSwgMTM2LCAyMDksIDEwMywgCi0gICAgMTY3LCAyMjgsIDMyLCAyMDksIDEwMywgMTY3LCAyMjUsIDEzMiwgMjA5LCAxMDMsIDE2NywgMjI1LCAxMzMsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDIyNSwgMTQxLCAyNDEsIDEyOSwgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDIwOSwgNDcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyNSwgMTQxLCAyMDgsIDg4LCAyMDksIDEwMywgMTY3LCAyMjUsIDE0MSwgMjQ2LCAxNzUsIDIwOSwgMTAzLCAxNjcsIDIwOSwgCi0gICAgOTUsIDIwOSwgMTAzLCAxNjcsIDIyMiwgNzIsIDIwOSwgMTAzLCAxNjcsIDIwMywgODAsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCi0gICAgMTc3LCAyMDksIDEwMywgMTcsIDIwMiwgODQsIDIwOSwgMTAzLCAxNywgMTA1LCAyMDksIDEwMywgMTcsIDEwOCwgMjA5LCAKLSAgICAxMDMsIDE3LCAxNDcsIDIwOSwgMTAzLCAxNywgMTQ5LCAyMDksIDEwMywgMTcsIDE3MCwgMjA5LCAxMDMsIDE3LCAxOTUsIAotICAgIDIwOSwgMTAzLCAxNywgMjEzLCAxMTEsIDIwOSwgMTAzLCAxNywgMTk5LCAyMDksIDEwMywgMTcsIDIyMiwgNjMsIDIwOSwgCi0gICAgMTAzLCAxNjcsIDI1MCwgMjE5LCAyMDksIDEwMywgMTY3LCAyMjksIDExMywgMjI4LCAxMiwgMSwgMjI5LCAyNiwgMjI4LCAKLSAgICAxMiwgMSwgMjI5LCAxMTYsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMjksIDExNiwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIAotICAgIDIyMiwgMTI4LCAyMjgsIDEyLCAxLCAyNDUsIDI1NCwgMjI4LCAxMiwgMSwgMjEyLCAxNCwgMjA5LCAyMzIsIDIyOCwgMTIsIAotICAgIDEsIDIyMCwgMjMzLCAyMjgsIDEyLCAxLCAyNDMsIDExMywgMjI4LCAxMiwgMSwgMTM1LCAyMjgsIDEyLCAxLCAyMDksIDQ4LCAKLSAgICAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjA5LCA0OCwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIyMSwgMTkxLCAyMjgsIDEyLCAKLSAgICAxLCAyNDgsIDIzLCAyMjgsIDEyLCAxLCAyMTgsIDY5LCAyMjgsIDEyLCAxLCAyMTgsIDE4MSwgMjEwLCAyMTEsIDIyOCwgMTIsIAotICAgIDEsIDIzOSwgMTg3LCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjE4LCAxODEsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMzksIAotICAgIDE4NywgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIyNCwgODIsIDIyOCwgMTIsIDEsIDIwMiwgMjQ3LCAyMjgsIDEyLCAxLCAKLSAgICAyMjcsIDUwLCAyMjcsIDEwNywgMjI4LCAxMiwgMSwgMjI3LCA1MCwgMjI3LCAxMiwgMjI4LCAxMiwgMSwgMjA0LCAwLCAyMjgsIAotICAgIDEyLCAxLCAyMTIsIDE0LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjM2LCAxMzcsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCA3OCwgCi0gICAgMjI4LCAxMiwgMSwgMjM2LCAxMzcsIDIwOSwgMjMyLCAyMjgsIDEyLCAyNDEsIDEwOCwgMjI4LCAxMiwgMjIsIDIsIDYzLCAKLSAgICAyMjgsIDEyLCAyMiwgMiwgMjI1LCAxNDEsIDIzMCwgNCwgMjI4LCAxMiwgMjIsIDIsIDI1MiwgMjUsIDIyOCwgMTIsIDIyLCAKLSAgICAyLCAyNTAsIDI0NywgMjI4LCAxMiwgMjIsIDIsIDc1LCAyMjgsIDEyLCAyMiwgMiwgMjMxLCA4MywgMjI4LCAxMiwgMjIsIDIsIAotICAgIDIwMywgMTI0LCAyMjgsIDEyLCAyMiwgMiwgMjAyLCAxNjksIDIyOCwgMTIsIDIyLCAyLCA2OCwgMjI4LCAxMiwgMjIsIDIsIAotICAgIDIwNiwgMTc4LCAyMjgsIDEyLCAyMiwgMiwgMjI1LCAxNDEsIDIyOSwgOSwgMjI4LCAxMiwgMjEzLCAxMzgsIDIsIDIyNywgCi0gICAgNDksIDIyOCwgMTIsIDIxMywgMTM4LCAyLCAyMjAsIDIzMywgMjI4LCAxMiwgMjIsIDIsIDc0LCAyMjgsIDEyLCAyMiwgMiwgCi0gICAgMjQxLCAxNDUsIDIyOCwgMTIsIDIyLCAyLCA3OCwgMjI4LCAxMiwgMjIsIDIsIDI1MCwgOCwgMjI4LCAxMiwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDIyOCwgMTIsIDIyOSwgMjcsIDIyOCwgMTEzLCAyMjgsIDEyLCAxNDMsIDIyNSwgMTQxLCAyNDEsIDEyOSwgCi0gICAgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjA5LCA0NywgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjA5LCAyLCAyMjgsIDEyLCAKLSAgICAxNDMsIDIyNSwgMTQxLCAyNDcsIDE2LCAyMjgsIDEyLCAyNDcsIDU4LCA4MiwgMjI4LCAxMiwgMjIyLCA4MSwgMjI4LCAxMiwgCi0gICAgMTcsIDIwMiwgODQsIDIyOCwgMTIsIDE3LCAxMDUsIDIyOCwgMTIsIDE3LCAxMDgsIDIyOCwgMTIsIDE3LCAxNDcsIDIyOCwgCi0gICAgMTIsIDE3LCAxNDksIDIyOCwgMTIsIDE3LCAxNzAsIDIyOCwgMTIsIDE3LCAxOTUsIDIyOCwgMTIsIDE3LCAyMTMsIDExMSwgCi0gICAgMjI4LCAxMiwgMTcsIDE5OSwgMjI4LCAxMiwgMTcsIDIyMiwgNjMsIDIyOCwgMTIsIDIzNiwgMTM3LCAyMjEsIDE5MSwgMjI4LCAKLSAgICAxMiwgMjM2LCAxMzcsIDIyNCwgODIsIDIyOCwgMTIsIDEsIDIyOSwgMTE3LCAyMzgsIDM5LCAyMjgsIDEyLCAxLCAyMjksIAotICAgIDExNywgMjIwLCAyMzMsIDc3LCA0LCAyMjAsIDM5LCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjA4LCAKLSAgICAyNiwgNjMsIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyNTUsIDIyLCAyMTUsIDIzMiwgMjQ4LCAxNjQsIAotICAgIDE5MiwgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDI1NSwgMjIsIDIzNywgMjMyLCAyMDgsIDYsIDE5MiwgCi0gICAgNzcsIDEzMSwgODEsIDIwMywgMywgMjI0LCAxNzMsIDIyNSwgMjIsIDE5MiwgNzcsIDEzMSwgMjQ2LCAxMiwgMjAzLCAzLCAKLSAgICAyMjQsIDE3MywgMjEzLCA5NywgMTkyLCA3NywgMTMxLCAyNDcsIDM0LCAyMDMsIDMsIDIyNCwgMTczLCAyMTgsIDE3MSwgCi0gICAgMjEzLCA4MywgMTkyLCA3NywgMTMxLCAyMDMsIDMsIDIyNCwgMTczLCAyMDgsIDYsIDIxMywgODMsIDE5MiwgNzcsIDEzMSwgCi0gICAgMjE0LCAyMDUsIDIxMywgODIsIDc3LCAxMzEsIDI0NywgMTk2LCAyMDMsIDMsIDIyNCwgMTcyLCA3NywgMTMxLCAyNDgsIDQ1LCAKLSAgICAyMTIsIDIzOCwgMjAzLCAzLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjMwLCAyNDMsIDIwOCwgNSwgNzcsIDEzMSwgMjQ0LCA0NCwgCi0gICAgMjA4LCA2LCAyNDcsIDE5NSwgNzcsIDEzMSwgMjEzLCA4MiwgNzcsIDEzMSwgMjIwLCAyMzgsIDIxMywgODIsIDc3LCAxMzEsIAotICAgIDIwOCwgNiwgMjEzLCA4MiwgNzcsIDEzMSwgMjIwLCAyMzgsIDIwOCwgNiwgMjEzLCA4MiwgNzcsIDEzMSwgMjE1LCAyNTUsIAotICAgIDI0NiwgMTU2LCAyMTEsIDE4MCwgMjEzLCA4MiwgNzcsIDEzMSwgMjE2LCA2NSwgMjM4LCA5LCAyMTMsIDgyLCA3NywgMTMxLCAKLSAgICAyNDcsIDM0LCAyNTUsIDI2LCAyMTUsIDE0OSwgMjI1LCAyMSwgMTYzLCAyNDcsIDYxLCA3NywgMTMxLCAyMzcsIDIzMiwgCi0gICAgMjA4LCA1LCA3NywgMjI3LCAzNSwgMiwgMjQ2LCAxOTcsIDIxNSwgMTQ4LCA3NywgMjI3LCAzNSwgMiwgMjI3LCAxNTksIAotICAgIDIxNSwgMTQ4LCA3NywgMjUwLCA1NSwgMiwgMjEzLCA5MywgMjM4LCAxOTMsIDI1NSwgMjcsIDIxNSwgMTQ4LCA3NywgMjUwLCAKLSAgICA1NSwgMiwgMjU1LCAyNCwgMTg1LCA3NywgMjUwLCA1NSwgMiwgMjE0LCAxNzgsIDIwOCwgMCwgNzcsIDIsIDIxNiwgMTYwLCAKLSAgICAyNDMsIDEyNywgMjM4LCAxOTIsIDc3LCAyLCAyMTYsIDE2MCwgMjQzLCAxMjcsIDIzOCwgNDEsIDc3LCAyLCAyMTYsIDE2MCwgCi0gICAgMjQzLCAxMjcsIDIzNywgMjMzLCA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIDIzOCwgMTkyLCA3NywgMiwgMjE2LCAxNjAsIAotICAgIDIyMywgOTksIDIzOCwgNDEsIDc3LCAyLCAyMTYsIDE2MCwgMjQzLCAxMjcsIDIxNiwgMTYwLCAyMjMsIDk4LCA3NywgMTcsIAotICAgIDIwMiwgODQsIDc3LCAxNywgMTA1LCA3NywgMTcsIDEwOCwgNzcsIDE3LCAxNDcsIDc3LCAxNywgMTQ5LCA3NywgMTcsIDE3MCwgCi0gICAgNzcsIDE3LCAxOTUsIDc3LCAxNywgMjEzLCAxMTEsIDc3LCAxNywgMTk5LCA3NywgMTcsIDIyMiwgNjMsIDc3LCAxNywgMTYyLCAKLSAgICAxMDUsIDc3LCAxNywgMTYyLCAxMDgsIDc3LCAxNywgMTYyLCAxNDcsIDc3LCAxNywgMTYyLCAxNDksIDc3LCAxNywgMTYyLCAKLSAgICAxNzAsIDc3LCAxNywgMTYyLCAxOTUsIDc3LCAxNywgMTYyLCAyMTMsIDExMSwgNzcsIDE3LCAxNjIsIDE5OSwgNzcsIDE3LCAKLSAgICAxNjIsIDIyMiwgNjMsIDc3LCAxNywgMTYyLCAyMDIsIDg0LCA3NywgMTMxLCAyNDcsIDE5OCwgMjE1LCAxNDgsIDc3LCAxMzEsIAotICAgIDIyMiwgMTk0LCAyNDcsIDEyNywgMjIwLCAyNDksIDIwMiwgMTksIDc3LCAxMzEsIDI0NywgMzQsIDI1NSwgMjYsIDIxNSwgCi0gICAgMTQ5LCAyNDcsIDEyOCwgMjI0LCAxMjYsIDI0NywgNjEsIDc3LCAxMzEsIDIyMiwgMTk0LCAyNDcsIDEyNywgMjEzLCA5NCwgCi0gICAgMjE1LCAxNDgsIDc3LCAxMzEsIDI0NiwgMTcxLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjA4LCAyMSwgMjU1LCAyMywgNzcsIAotICAgIDEzMSwgMjM3LCAyMTUsIDIxNSwgMTQ5LCAyMzcsIDE3NCwgNzcsIDEzMSwgMjM3LCAyMTUsIDIxNSwgMTQ5LCAyMzcsIDE4MCwgCi0gICAgNzcsIDEzMSwgMjUwLCAyMjQsIDIyOSwgMTM0LCAyMzcsIDE3NCwgNzcsIDEzMSwgMjUwLCAyMjQsIDIyOSwgMTM0LCAyMzcsIAotICAgIDE4MCwgNzcsIDIsIDIwMywgNzIsIDIwOCwgNCwgNzcsIDIsIDIyNSwgMTAxLCAyMDgsIDQsIDc3LCAxLCAxNzMsIDc3LCAxLCAKLSAgICAyMjksIDE0NCwgNzcsIDEsIDIzOSwgOCwgNzcsIDEsIDIzOCwgMTE5LCA3NywgMSwgMjIyLCAyMDMsIDc3LCAxLCAyNDcsIAotICAgIDkyLCA3NywgMSwgMjQ2LCAxOTksIDc3LCAxLCAyMzAsIDE4MSwgNzcsIDEsIDIyMSwgMTEsIDc3LCAxLCAyMDcsIDI0MSwgCi0gICAgNzcsIDEsIDIwNywgMjI5LCA3NywgMSwgMjQ0LCAxMjAsIDc3LCAxLCAyNDQsIDEwNCwgNzcsIDEsIDIyMSwgMjI3LCA3NywgCi0gICAgMSwgMjEwLCAyMiwgNzcsIDEsIDIwOSwgMTA4LCA3NywgMSwgMjQ0LCAyMTIsIDc3LCAxLCAyNDQsIDEsIDc3LCAxLCAyMDEsIAotICAgIDIwMSwgNzcsIDEsIDE4NSwgNzcsIDEsIDIxOCwgMjA4LCA3NywgMSwgMjQ5LCAzMiwgNzcsIDEsIDI0OCwgOTgsIDc3LCAxLCAKLSAgICAxOTIsIDc3LCAxLCAyMDgsIDIwLCA3NywgMSwgMjA4LCAxMCwgNzcsIDEsIDI0MSwgMjU1LCA3NywgMSwgMjQxLCAyNDksIAotICAgIDc3LCAxLCAyMDQsIDExMSwgNzcsIDEsIDIwMiwgODAsIDc3LCAxLCAyMDIsIDExNiwgNzcsIDEsIDI1NSwgMjksIDc3LCAxLCAKLSAgICAxOTgsIDc3LCAxLCAyMTYsIDIyMCwgNzcsIDEsIDIyOCwgMTEzLCA3NywgMSwgMjEzLCA5MCwgNzcsIDEsIDIxMSwgMTY0LCAKLSAgICA3NywgMSwgMjE1LCAzNiwgNzcsIDEsIDE1MiwgNzcsIDEsIDYzLCA3NywgMSwgMjI4LCAyMjMsIDc3LCAxLCAyMzksIDIyOSwgCi0gICAgMjE2LCAyMjAsIDc3LCAxLCAyMjksIDQ3LCA3NywgMSwgMjE1LCAxODUsIDc3LCAyMiwgMiwgMjUyLCAyNSwgNzcsIDIyLCAyLCAKLSAgICA3NSwgNzcsIDIyLCAyLCAyMzEsIDgzLCA3NywgMjIsIDIsIDY4LCA3NywgMjIsIDIsIDIwNiwgMTc4LCA3NywgMjIsIDIsIAotICAgIDEyNSwgMTQ2LCA3NywgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDc3LCAyMiwgMiwgMTI1LCAxNTksIDc3LCAyMiwgMiwgMTI1LCAKLSAgICAyMjcsIDc4LCA3NywgMjIsIDIsIDc0LCA3NywgMjIsIDIsIDI0MSwgMTYxLCA3NywgMjIsIDIsIDc4LCA3NywgMjIsIDIsIAotICAgIDIyMCwgMTgsIDc3LCAyLCAyMTUsIDIzOCwgMjExLCAxMSwgMjIyLCAyMDQsIDIxNSwgMjI3LCA3NywgMiwgMjE1LCAyMzIsIAotICAgIDI0OCwgMTYzLCA3NywgMjIsIDIsIDIxNiwgNzMsIDc1LCA3NywgMjIsIDIsIDIxNiwgNzMsIDIzMSwgODMsIDc3LCAyLCAKLSAgICAyMjAsIDI0OSwgMjAyLCAyMCwgMjIzLCAxMDcsIDI0NCwgMjEyLCA3NywgMiwgMjEyLCAyNywgMjI3LCAyMzYsIDc3LCAxMzEsIAotICAgIDIzNywgMTM5LCA3NywgMTMxLCAyMTksIDEzMiwgNzcsIDIsIDIyNywgMjM5LCAyMTUsIDE0OCwgNzcsIDIsIDIwMywgNzcsIAotICAgIDIxNSwgMTQ4LCA3NywgMiwgMjI3LCAyNDAsIDIwOCwgMjEsIDI0NywgNjEsIDc3LCAyLCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgCi0gICAgMiwgMjM3LCAyMzYsIDI0NywgNjIsIDIxNiwgNjMsIDc3LCAyLCAyMzcsIDIzNiwgMjI1LCAxNCwgMjE2LCA2MywgNzcsIDIsIAotICAgIDIzMCwgMjM5LCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDIsIDIyNywgMjQwLCAyMDgsIDIxLCAyNDcsIDYxLCAKLSAgICA3NywgMjEwLCAyNTQsIDIsIDIyNSwgMjQsIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMiwgMjMwLCAyMzksIDIyNSwgMjQsIAotICAgIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMSwgMTczLCA3NywgMjEwLCAyNTQsIDEsIDIyOSwgMTQ0LCA3NywgMjEwLCAyNTQsIAotICAgIDEsIDIzOSwgOCwgNzcsIDIxMCwgMjU0LCAxLCAyMzgsIDExOSwgNzcsIDIxMCwgMjU0LCAxLCAyMjIsIDIwMywgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyNDcsIDkyLCA3NywgMjEwLCAyNTQsIDEsIDI0NiwgMTk5LCA3NywgMjEwLCAyNTQsIDEsIDIzMCwgMTgxLCAKLSAgICA3NywgMjEwLCAyNTQsIDEsIDIyMSwgMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjA3LCAyNDEsIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMjA3LCAyMjksIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxMDQsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjIxLCAyMjcsIDc3LCAyMTAsIDI1NCwgMSwgMjEwLCAyMiwgNzcsIDIxMCwgMjU0LCAxLCAyMDksIDEwOCwgCi0gICAgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDIxMiwgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDEsIDc3LCAyMTAsIDI1NCwgMSwgMjAxLCAKLSAgICAyMDEsIDc3LCAyMTAsIDI1NCwgMSwgMTg1LCA3NywgMjEwLCAyNTQsIDEsIDIxOCwgMjA4LCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDI0OSwgMzIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ4LCA5OCwgNzcsIDIxMCwgMjU0LCAxLCAxOTIsIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMjA4LCAyMCwgNzcsIDIxMCwgMjU0LCAxLCAyMDgsIDEwLCA3NywgMjEwLCAyNTQsIDEsIDI0MSwgMjU1LCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDI0MSwgMjQ5LCA3NywgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCA3NywgMjEwLCAyNTQsIDEsIDIwMiwgODAsIAotICAgIDc3LCAyMTAsIDI1NCwgMSwgMjAyLCAxMTYsIDc3LCAyMTAsIDI1NCwgMSwgMjU1LCAyOSwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAxOTgsIDc3LCAyMTAsIDI1NCwgMSwgMjE2LCAyMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjI4LCAxMTMsIDc3LCAyMTAsIDI1NCwgCi0gICAgMSwgMjEzLCA5MCwgNzcsIDIxMCwgMjU0LCAxLCAyMTEsIDE2NCwgNzcsIDIxMCwgMjU0LCAxLCAyMTUsIDM2LCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDE1MiwgNzcsIDIxMCwgMjU0LCAxLCA2MywgNzcsIDIxMCwgMjU0LCAxLCAyMjgsIDIyMywgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyMzksIDIyOSwgMjA0LCAxMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjM5LCAyMjksIDE5OCwgNzcsIDIxMCwgMjU0LCAKLSAgICAxLCAyMzksIDIyOSwgMjE2LCAyMjAsIDc3LCAyMjgsIDIxMCwgMjE1LCAxNDYsIDIyOSwgMTQ0LCA3NywgMjI4LCAyMTAsIAotICAgIDIxNSwgMTQ2LCAyMjksIDE0NSwgMjQ3LCAxMjgsIDIyNCwgMTI2LCAyNDcsIDYxLCA3NywgMjQ3LCA0OSwgMiwgNzksIDI0OCwgCi0gICAgMTU1LCA3NywgMjQ3LCA0OSwgMiwgMTU3LCAyNDgsIDE1NSwgNzcsIDI0NywgNDksIDIsIDI0NywgNTAsIDIwOSwgMTg1LCAKLSAgICA3NywgMjQ3LCA0OSwgMiwgMjE0LCAyMDQsIDI1NSwgMjgsIDc3LCAxNiwgMjQyLCA1NSwgMjQ3LCAxOTMsIDc3LCAxNiwgCi0gICAgMjE2LCAxNTksIDIxNSwgMjM5LCA3NywgMTYsIDIxOSwgMTU1LCAyMzgsIDE5MSwgNzcsIDE2LCAyMTYsIDE1OSwgMjE1LCAKLSAgICAyNDAsIDIxNiwgNjUsIDIzOCwgOCwgNzcsIDE2LCAyMTgsIDE3MSwgMTg1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5MywgCi0gICAgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTQsIDIyMCwgMjM4LCAyNTUsIDI1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIAotICAgIDE5NCwgMjM3LCAyMzQsIDI1NSwgMjUsIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTk0LCAyNDcsIDEyOCwgMjU1LCAyNSwgCi0gICAgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAyMTYsIDE2MCwgMjQzLCAxMjYsIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgCi0gICAgMjM3LCAyMzMsIDc3LCAxMzEsIDI0NywgMTk3LCAyMTIsIDIzOCwgMjM4LCA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDc3LCAKLSAgICAxMzEsIDIyNCwgODQsIDIwMywgMywgMjM4LCA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMDgsIAotICAgIDUsIDc3LCAxMzEsIDgxLCAyNDcsIDIyMCwgMjE1LCAyMjksIDIwMywgMywgMjI0LCAxNzMsIDIyNSwgMjIsIDE5MiwgNzcsIAotICAgIDEzMSwgMjQ2LCAxMiwgMjQ3LCAyMjAsIDIxNSwgMjI5LCAyMDMsIDMsIDIyNCwgMTczLCAyMTMsIDk3LCAxOTIsIDIxNiwgCi0gICAgMTUsIDIxMCwgMTc0LCA1NCwgMjI3LCAyMjEsIDIxMCwgMTc0LCA1NCwgMjE2LCAxNSwgMjEwLCAxNzQsIDIsIDMsIDI0MywgCi0gICAgODMsIDIyNywgMjIxLCAyMTAsIDE3NCwgMiwgMywgMjQzLCA4MywgNzcsIDEzMSwgMjI3LCAyMzEsIDIyNSwgMjUsIDIxNSwgCi0gICAgMTQ4LCA3NywgMTMxLCAyMDgsIDExMiwgMjI1LCAyNSwgMjE1LCAxNDgsIDY5LCAxLCAxNzMsIDY5LCAxLCAyMjksIDE0NCwgCi0gICAgNjksIDEsIDIzOSwgOCwgNjksIDEsIDIzOCwgMTE5LCA2OSwgMSwgMjIyLCAyMDMsIDY5LCAxLCAyNDcsIDkyLCA2OSwgMSwgCi0gICAgMjQ2LCAxOTksIDY5LCAxLCAyMzAsIDE4MSwgNjksIDEsIDIzMCwgMTQ5LCA2OSwgMSwgMjIxLCAxMSwgNjksIDEsIDIyMSwgCi0gICAgMTkzLCA2OSwgMSwgMjA3LCAyNDEsIDY5LCAxLCAyMDcsIDIyOSwgNjksIDEsIDI0NCwgMTIwLCA2OSwgMSwgMjQ0LCAxMDQsIAotICAgIDY5LCAxLCAyMjEsIDIyNywgNjksIDEsIDIxMCwgMjIsIDY5LCAxLCAyMDksIDEwOCwgNjksIDEsIDI0NCwgMjEyLCA2OSwgMSwgCi0gICAgMjQ0LCAxLCA2OSwgMSwgMjAxLCAyMDEsIDY5LCAxLCAxODUsIDY5LCAxLCAyMTgsIDIwOCwgNjksIDEsIDI0OSwgMzIsIDY5LCAKLSAgICAxLCAyNDgsIDk4LCA2OSwgMSwgMTkyLCA2OSwgMSwgMTk4LCA2OSwgMSwgMjE2LCAyMjAsIDY5LCAxLCAyMjgsIDExMywgNjksIAotICAgIDEsIDIwNCwgMTExLCA2OSwgMSwgMjE1LCAzNiwgNjksIDEsIDE1MiwgNjksIDEsIDIyNywgNzcsIDY5LCAxLCA2MywgNjksIAotICAgIDEsIDIxMywgNjcsIDYzLCA2OSwgMSwgNzUsIDY5LCAxLCAyMzEsIDgzLCA2OSwgMSwgNjgsIDY5LCAxLCAyMDYsIDE3OCwgCi0gICAgNjksIDEsIDc0LCA2OSwgMSwgMjI0LCA1NSwgNzQsIDY5LCAxLCA3OCwgNjksIDEsIDI1MCwgMzQsIDY5LCAyMiwgMiwgMjA5LCAKLSAgICAyMzQsIDI1MiwgMjUsIDY5LCAyMiwgMiwgMjUyLCAyNSwgNjksIDIyLCAyLCA3NSwgNjksIDIyLCAyLCAyMzEsIDgzLCA2OSwgCi0gICAgMjIsIDIsIDY4LCA2OSwgMjIsIDIsIDIwNiwgMTc4LCA2OSwgMjIsIDIsIDc0LCA2OSwgMjIsIDIsIDI1MSwgNjQsIDY5LCAKLSAgICAyMiwgMiwgMjI0LCA1NSwgMjMxLCA4MywgNjksIDIyLCAyLCAyMjQsIDU1LCA3OCwgNjksIDIyLCAyLCAxODgsIDU1LCA2OSwgCi0gICAgMiwgMjUwLCAxODAsIDY5LCAyLCA3MCwgNTYsIDY5LCAyLCAyMDUsIDE5OSwgNjksIDIsIDIwNSwgMjA0LCA2OSwgMiwgMjUwLCAKLSAgICA3OSwgNjksIDEwOSwgMiwgMTc0LCAxOTgsIDY5LCAxMDksIDIsIDE3NCwgMjE2LCAyMjAsIDY5LCAxMDksIDIsIDE3NCwgCi0gICAgMjA0LCAxMTEsIDY5LCAxMDksIDIsIDE3NCwgMTUyLCA2OSwgMSwgMjM3LCAyNDksIDIxNSwgMzYsIDY5LCAxNywgMjAyLCAKLSAgICA4NCwgNjksIDE3LCAxMDUsIDY5LCAxNywgMTA4LCA2OSwgMTcsIDE0NywgNjksIDE3LCAxNDksIDY5LCAxNywgMTcwLCA2OSwgCi0gICAgMTcsIDE5NSwgNjksIDE3LCAyMTMsIDExMSwgNjksIDE3LCAxOTksIDY5LCAxNywgMjIyLCA2MywgNjksIDIsIDIyNywgODYsIAotICAgIDIxNCwgMTY3LCA2OSwgMiwgMjE0LCAxNjcsIDY5LCAxNiwgMjI3LCA0NCwgNjksIDE2LCAyNDUsIDIyNywgNjksIDE2LCAKLSAgICAyNTEsIDg1LCA2OSwgMTYsIDIzOCwgMTc0LCA2OSwgMSwgMjEzLCA5MCwgNjksIDEsIDIxMSwgMTY0LCA2OSwgMSwgMTI1LCAKLSAgICAxNDYsIDY5LCAxLCAxMjUsIDIxNSwgMTg2LCA2OSwgMSwgMTI1LCAxNTksIDY5LCAxLCAxMjUsIDIyNywgNzgsIDY5LCAyMiwgCi0gICAgMiwgMTI1LCAxNDYsIDY5LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgNjksIDIyLCAyLCAxMjUsIDE1OSwgNjksIDIyLCAyLCAKLSAgICAxMjUsIDIyNywgNzgsIDY5LCAxLCAyMjQsIDU1LCAyMjIsIDIwMywgNjksIDEsIDIyNCwgNTUsIDIzMCwgMTQ5LCA2OSwgMSwgCi0gICAgMjI0LCA1NSwgMjQ4LCAxOTgsIDY5LCAxLCAyMjQsIDU1LCAyNDgsIDE5MywgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAKLSAgICAyMDEsIDIwMSwgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAxOTIsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgMjI4LCAKLSAgICAxMTMsIDY5LCAxLCAyMTMsIDk2LCAyMjksIDIzNywgMjEzLCA5MCwgNjksIDIyLCAyLCAyMTMsIDk2LCAyMjksIDIzNywgCi0gICAgMjQwLCAyMzgsIDY5LCAxNDMsIDEzMSwgMjEzLCA5NiwgMjI5LCAyMzcsIDIzNywgNzksIDY5LCAxNDMsIDEzMSwgMjEzLCAKLSAgICA5NiwgMjI5LCAyMzcsIDIyOSwgMjAyLCAyMTgsIDE4MCwgNjksIDEsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgCi0gICAgMjA5LCAxMDgsIDY5LCAxLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIxNywgMTUyLCA2OSwgMjIsIDIsIDIwNCwgCi0gICAgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjQwLCAyMzgsIDY5LCAyMiwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAKLSAgICAyMDcsIDI0LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE2MCwgNjksIDIsIDIwNCwgNDQsIAotICAgIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTksIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgCi0gICAgMTU4LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE1NywgNjksIDIsIDIwNCwgNDQsIDIxNywgCi0gICAgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTYsIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMjEsIDIyNywgCi0gICAgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwMiwgMTc2LCA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAKLSAgICAyMjksIDIzNywgMjM4LCA4NCwgNjksIDIyLCAyLCAyMzgsIDE4NiwgMjI5LCAyMzcsIDc1LCA2OSwgMjIsIDIsIDIyOSwgCi0gICAgMjA3LCAyMjAsIDczLCA2OSwgMjIsIDIsIDIyOSwgMjA3LCA2OCwgNjksIDIyLCAyLCAyMjksIDIwNywgMjQxLCAxNjEsIDY5LCAKLSAgICAxLCAyMTMsIDY3LCAxNzMsIDY5LCAxLCAyMTMsIDY3LCAyMjksIDE0NCwgNjksIDEsIDIxMywgNjcsIDIzOSwgOCwgNjksIDEsIAotICAgIDIxMywgNjcsIDI0NywgOTIsIDY5LCAxLCAyMTMsIDY3LCAyMDIsIDExNiwgNjksIDEsIDIxMywgNjcsIDIyMSwgMTEsIDY5LCAKLSAgICAxLCAyMTMsIDY3LCAyNDQsIDIxMiwgNjksIDEsIDIxMywgNjcsIDIwMSwgMjAxLCA2OSwgMSwgMjEzLCA2NywgMjE4LCAyMDgsIAotICAgIDY5LCAxLCAyMTMsIDY3LCAyNDAsIDEwOCwgNjksIDEsIDIxMywgNjcsIDI0OSwgMzIsIDY5LCAxLCAyMTMsIDY3LCAyMDksIAotICAgIDEwOCwgNjksIDEsIDIxMywgNjcsIDE1MiwgNjksIDEwOSwgMiwgMjEzLCA2NywgMTc0LCAyMDQsIDExMSwgNjksIDIyLCAyLCAKLSAgICAyMTMsIDY3LCAyNTIsIDI1LCA2OSwgMjIsIDIsIDIxMywgNjcsIDc0LCA2OSwgMjIsIDIsIDIxMywgNjcsIDE4OCwgNTUsIAotICAgIDY5LCAyMiwgMiwgMjEzLCA2NywgNDYsIDIwMywgMTI0LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTksIDY5LCAyLCAyMTMsIAotICAgIDY3LCAyMDgsIDE1OCwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU2LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTUsIDY5LCAyLCAKLSAgICAyMTMsIDY3LCAyNDUsIDE1NiwgMjA4LCAxNTksIDY5LCAyLCAyMTMsIDY3LCAyNDUsIDE1NiwgMjA4LCAxNTgsIDY5LCAyLCAKLSAgICAyMTMsIDY3LCAyNDUsIDE1NiwgMjQxLCA5NSwgMjA4LCAxNjEsIDY5LCAxLCAyMTUsIDEzMCwgMjE5LCAxMzksIDI0MCwgCi0gICAgMTA4LCA2OSwgMiwgMjE1LCAxMzAsIDIxOSwgMTM5LCAyMDgsIDE1NiwgNjksIDIxMywgNjcsIDE3LCAyMDIsIDg0LCA2OSwgCi0gICAgMjEzLCA2NywgMTcsIDEwNSwgNjksIDIxMywgNjcsIDE3LCAxMDgsIDY5LCAyMTMsIDY3LCAxNywgMTQ3LCA2OSwgMjEzLCAKLSAgICA2NywgMTcsIDE0OSwgNjksIDIxMywgNjcsIDE3LCAxNzAsIDY5LCAyMTMsIDY3LCAxNywgMTk1LCA2OSwgMjEzLCA2NywgMTcsIAotICAgIDIxMywgMTExLCA2OSwgMjEzLCA2NywgMTcsIDE5OSwgNjksIDIxMywgNjcsIDE3LCAyMjIsIDYzLCA2OSwgMiwgMjI5LCAKLSAgICAxMzcsIDIwOCwgMTYwLCA2OSwgMiwgMjI5LCAxMzcsIDIwOCwgMTU4LCA2OSwgMjIsIDIsIDI1MSwgNTEsIDYzLCA2OSwgMjIsIAotICAgIDIsIDI1MSwgNTEsIDI1MSwgNjQsIDY5LCAxNiwgMjEzLCA2NywgMTA1LCA2OSwgMTYsIDIxMywgNjcsIDI0MCwgMjExLCAKLSAgICAxMTQsIDYsIDEsIDI1MCwgMjMxLCAxMTQsIDYsIDEsIDI0OCwgMjQyLCAxMTQsIDYsIDEsIDIzOCwgMjM0LCAxMTQsIDYsIDEsIAotICAgIDI0MywgOTMsIDExNCwgNiwgMSwgMjQxLCA5MiwgMTE0LCA2LCAxLCAyMDUsIDIxMywgMTE0LCA2LCAxLCAyMDIsIDg3LCAKLSAgICAxMTQsIDYsIDEsIDIwOSwgMjMwLCAxMTQsIDYsIDEsIDIzMSwgNDksIDExNCwgNiwgMSwgMjMwLCA0LCAxMTQsIDYsIDEsIAotICAgIDIyOCwgMiwgMTE0LCA2LCAxLCAyMjUsIDEyMiwgMTE0LCA2LCAxLCAyMjMsIDc0LCAxMTQsIDYsIDEsIDIyMCwgMzEsIDExNCwgCi0gICAgNiwgMSwgMjE5LCA5MSwgMTE0LCA2LCAxLCAyMDIsIDc2LCAxMTQsIDYsIDEsIDIxNiwgMjAyLCAxMTQsIDYsIDEsIDIxNCwgCi0gICAgMjQzLCAxMTQsIDYsIDEsIDIwOSwgMjE4LCAxMTQsIDYsIDEsIDIwNiwgMjU1LCAxMTQsIDYsIDEsIDIxOCwgMjAwLCAxMTQsIAotICAgIDYsIDEsIDIyOSwgMTMyLCAxMTQsIDYsIDEsIDIzOCwgMTEwLCAxMTQsIDYsIDEsIDIxNywgMTExLCAxMTQsIDYsIDEsIDIxMiwgCi0gICAgMjU1LCAxMTQsIDYsIDEsIDI0NiwgMTI5LCAxMTQsIDYsIDEsIDI0NywgNjEsIDExNCwgNiwgMSwgMjMwLCAxMzMsIDExNCwgCi0gICAgNiwgMSwgMjQ2LCA2OCwgMTE0LCA2LCAxLCAyNDYsIDE4MywgMTE0LCA2LCAxLCAyMDMsIDE4MCwgMTE0LCA2LCAxLCAyMzAsIAotICAgIDE0NiwgMTE0LCA2LCAxLCAyMzcsIDE1NCwgMTE0LCA2LCAxLCAyMzcsIDY3LCAxMTQsIDYsIDEsIDIzNiwgMjU0LCAxMTQsIAotICAgIDYsIDEsIDIwNCwgNjIsIDExNCwgNiwgMSwgMjM3LCA5MiwgMTE0LCA2LCAxLCAyMzYsIDEzMiwgMTE0LCA2LCAxLCAyMDIsIAotICAgIDI0OSwgMTE0LCA2LCAxLCAyNTEsIDk4LCAxMTQsIDEsIDI1MCwgMjMxLCAxMTQsIDEsIDI0OCwgMjQyLCAxMTQsIDEsIDIzOCwgCi0gICAgMjM0LCAxMTQsIDEsIDI0MywgOTMsIDExNCwgMSwgMjQxLCA5MiwgMTE0LCAxLCAyMDUsIDIxMywgMTE0LCAxLCAyMDIsIDg3LCAKLSAgICAxMTQsIDEsIDIwOSwgMjMwLCAxMTQsIDEsIDIzMSwgNDksIDExNCwgMSwgMjMwLCA0LCAxMTQsIDEsIDIyOCwgMiwgMTE0LCAKLSAgICAxLCAyMjUsIDEyMiwgMTE0LCAxLCAyMjMsIDc0LCAxMTQsIDEsIDIyMCwgMzEsIDExNCwgMSwgMjE5LCA5MSwgMTE0LCAxLCAKLSAgICAyMDIsIDc2LCAxMTQsIDEsIDIxNiwgMjAyLCAxMTQsIDEsIDIxNCwgMjQzLCAxMTQsIDEsIDIwOSwgMjE4LCAxMTQsIDEsIAotICAgIDIwNiwgMjU1LCAxMTQsIDEsIDIxOCwgMjAwLCAxMTQsIDEsIDIyOSwgMTMyLCAxMTQsIDEsIDIzOCwgMTEwLCAxMTQsIDEsIAotICAgIDIxNywgMTExLCAxMTQsIDEsIDIxMiwgMjU1LCAxMTQsIDEsIDI0NiwgMTI5LCAxMTQsIDEsIDI0NywgNjEsIDExNCwgMSwgCi0gICAgMjMwLCAxMzMsIDExNCwgMSwgMjQ2LCA2OCwgMTE0LCAxLCAyNDYsIDE4MywgMTE0LCAxLCAyMDMsIDE4MCwgMTE0LCAxLCAKLSAgICAyMzAsIDE0NiwgMTE0LCAxLCAyMzcsIDE1NCwgMTE0LCAxLCAyMzcsIDY3LCAxMTQsIDEsIDIzNiwgMjU0LCAxMTQsIDEsIAotICAgIDIwNCwgNjIsIDExNCwgMSwgMjM3LCA5MiwgMTE0LCAxLCAyMzYsIDEzMiwgMTE0LCAxLCAyNDAsIDI2LCAxMTQsIDEsIDIwMiwgCi0gICAgMjQ5LCAxMTQsIDEsIDI0MSwgMTEwLCAxMTQsIDEsIDIwNywgMTc0LCAyMzgsIDIzNCwgMTE0LCAxLCAyNTEsIDU5LCAxMTQsIAotICAgIDIxOSwgODksIDIxMywgMTMwLCA2NSwgMSwgMTE0LCAyMjMsIDc0LCAxMTQsIDEsIDI1MSwgOTgsIDExNCwgMSwgMjM3LCA5MSwgCi0gICAgNTQsIDExNCwgMSwgMjI4LCAxMDQsIDU0LCAyOCwgMTIzLCAyMjksIDU5LCAyOCwgMTIzLCAyMTEsIDE1NiwgMjgsIDEyMywgCi0gICAgMjIyLCA5MywgMjgsIDEyMywgMjA4LCAyNDAsIDI4LCAxMjMsIDIxMSwgMTQ1LCAyOCwgMTIzLCAyMTYsIDQ3LCAyOCwgMTIzLCAKLSAgICAyMjQsIDE0MSwgMjgsIDEyMywgMjE4LCAxNTMsIDI4LCAxMjMsIDIxMSwgMTUzLCAyOCwgMTIzLCAyMTIsIDExMSwgMjgsIAotICAgIDEyMywgMjExLCAxNTAsIDI4LCAxMjMsIDIzMSwgMTA2LCAyOCwgMTIzLCAyNDYsIDc0LCAyOCwgMTIzLCAyMTEsIDE2MCwgCi0gICAgMjgsIDEyMywgMjQ2LCAxMzgsIDI4LCAxMjMsIDIyOSwgMTIwLCAyOCwgMTIzLCAyMDksIDY2LCAyOCwgMTIzLCAyMTgsIAotICAgIDE5MCwgMjgsIDEyMywgMjM2LCAyNTEsIDI4LCAxMjMsIDIyMiwgODksIDI4LCAxMjMsIDIxMSwgMTU0LCAyOCwgMTIzLCAKLSAgICAyMjIsIDgzLCAyOCwgMTIzLCAyMjIsIDg3LCAyOCwgMTIzLCAyMDgsIDIzNywgMjgsIDEyMywgMjE2LCAzNSwgMjgsIDEyMywgCi0gICAgMjExLCAxNTIsIDI4LCAxMjMsIDIxNiwgNDUsIDI4LCAxMjMsIDIyOSwgMjQzLCAyOCwgMTIzLCAyMjQsIDEzNCwgMjgsIAotICAgIDEyMywgMjI5LCAyNDYsIDI4LCAxMjMsIDIxOCwgMTQ4LCAyOCwgMTIzLCAyMTgsIDE0NiwgMjgsIDEyMywgMjE4LCAxMzQsIAotICAgIDI4LCAxMjMsIDIxOCwgMTQyLCAyOCwgMTIzLCAyMTgsIDE0MCwgMjgsIDEyMywgMjE4LCAxMzcsIDI4LCAxMjMsIDIxOCwgCi0gICAgMTM5LCAyOCwgMTIzLCAyMTgsIDEzNiwgMjgsIDEyMywgMjE4LCAxNDEsIDI4LCAxMjMsIDIxOCwgMTUxLCAyOCwgMTIzLCAKLSAgICAyMTgsIDE1MiwgMjgsIDEyMywgMjE4LCAxMzUsIDI4LCAxMjMsIDIxOCwgMTQ1LCAyOCwgMTIzLCAyMjksIDI0NCwgMjgsIAotICAgIDEyMywgMjI5LCAyNDIsIDI4LCAxMjMsIDIxMiwgMTA0LCAyOCwgMTIzLCAyMTIsIDEwMiwgMjgsIDEyMywgMjEyLCA5NCwgCi0gICAgMjgsIDEyMywgMjEyLCA5NywgMjgsIDEyMywgMjEyLCAxMDMsIDI4LCAxMjMsIDIxMiwgOTksIDI4LCAxMjMsIDIxMiwgOTgsIAotICAgIDI4LCAxMjMsIDIxMiwgOTYsIDI4LCAxMjMsIDIxMiwgMTA3LCAyOCwgMTIzLCAyMTIsIDEwOSwgMjgsIDEyMywgMjEyLCAKLSAgICAxMTAsIDI4LCAxMjMsIDIxMiwgMTA1LCAyOCwgMTIzLCAyMTIsIDk1LCAyOCwgMTIzLCAyMTIsIDEwMCwgMjgsIDEyMywgCi0gICAgMjEyLCAxMDgsIDI4LCAxMjMsIDI0NiwgMTIwLCAyOCwgMTIzLCAyNDYsIDExOCwgMjgsIDEyMywgMjQ2LCAyMTAsIDI4LCAKLSAgICAxMjMsIDI0NiwgMjA4LCAyOCwgMTIzLCAyMTksIDEwNywgMjgsIDEyMywgMjMxLCAxMDEsIDI4LCAxMjMsIDIzMSwgOTIsIAotICAgIDI4LCAxMjMsIDIzMSwgMTAwLCAyOCwgMTIzLCAyMzEsIDk3LCAyOCwgMTIzLCAyMzEsIDk1LCAyOCwgMTIzLCAyMzEsIDk5LCAKLSAgICAyOCwgMTIzLCAyMTEsIDE1NywgMjgsIDEyMywgMjMxLCAxMDQsIDI4LCAxMjMsIDIzMSwgMTA1LCAyOCwgMTIzLCAyMzEsIAotICAgIDkzLCAyOCwgMTIzLCAyMzEsIDk4LCAyOCwgMTIzLCAyMDMsIDI5LCAyOCwgMTIzLCAyNDYsIDczLCAyOCwgMTIzLCAyNDYsIAotICAgIDEyMSwgMjgsIDEyMywgMjQ2LCAxMTksIDI4LCAxMjMsIDI0NiwgMjExLCAyOCwgMTIzLCAyNDYsIDIwOSwgMjgsIDEyMywgCi0gICAgMjQ2LCAxMzYsIDI4LCAxMjMsIDI0NiwgMTM3LCAyOCwgMTIzLCAyNDYsIDEyMiwgMjgsIDEyMywgMjQ2LCAyMTIsIDI4LCAKLSAgICAxMjMsIDIxOCwgMTg4LCAyOCwgMTIzLCAyMjksIDI0NSwgMjgsIDEyMywgMjExLCAxNTgsIDI4LCAxMjMsIDIwMywgMzUsIAotICAgIDI4LCAxMjMsIDIyOSwgNTAsIDI4LCAxMjMsIDIyMiwgODUsIDI4LCAxMjMsIDIyMiwgOTEsIDI4LCAxMjMsIDIyMiwgOTAsIAotICAgIDI4LCAxMjMsIDIwOCwgMjM0LCAyOCwgMTIzLCAyNDAsIDcsIDI4LCAxNzYsIDI0MCwgNywgMjgsIDE3NiwgNjMsIDI4LCAKLSAgICAxNzYsIDI1MSwgMTA5LCAyOCwgMTc2LCAxOTgsIDI4LCAxNzYsIDIwMywgOTksIDI4LCAxNzYsIDI0MSwgNTUsIDI4LCAxNzYsIAotICAgIDc0LCAyOCwgMTc2LCAyMDMsIDM5LCAyOCwgMTc2LCAyMDMsIDUyLCAyOCwgMTc2LCA3OCwgMjgsIDE3NiwgMjA0LCAxMTEsIAotICAgIDI4LCAxNzYsIDIwNCwgMTA3LCAyOCwgMTc2LCAyMjAsIDczLCAyOCwgMTc2LCAyMDIsIDI0NywgMjgsIDE3NiwgNjgsIDI4LCAKLSAgICAxNzYsIDIwNCwgNDgsIDI4LCAxNzYsIDIwNCwgNjIsIDI4LCAxNzYsIDIwNCwgMzAsIDI4LCAxNzYsIDIwMiwgMjEzLCAyOCwgCi0gICAgMTc2LCAyNDAsIDIzOCwgMjgsIDE3NiwgMjAzLCAxMSwgMjgsIDE3NiwgNzUsIDI4LCAxNzYsIDI1NSwgMjAsIDI4LCAxNzYsIAotICAgIDI1NSwgMTksIDI4LCAxNzYsIDIwMywgMTEzLCAyOCwgMTc2LCAyMDMsIDExMSwgMjgsIDE3NiwgMjQxLCA1MywgMjgsIDE3NiwgCi0gICAgMjQxLCA1MiwgMjgsIDE3NiwgMjQxLCA1NCwgMjgsIDE3NiwgMjAzLCAzOCwgMjgsIDE3NiwgMjAzLCAzNywgMjgsIDE3NiwgCi0gICAgMjIwLCAxODEsIDI4LCAxNzYsIDIyMCwgMTgyLCAyOCwgMTc2LCAyMjAsIDE3NSwgMjgsIDE3NiwgMjIwLCAxODAsIDI4LCAKLSAgICAxNzYsIDIyMCwgMTc4LCAyOCwgMTc2LCAyMDIsIDI0MSwgMjgsIDE3NiwgMjAyLCAyNDAsIDI4LCAxNzYsIDIwMiwgMjM5LCAKLSAgICAyOCwgMTc2LCAyMDIsIDI0MiwgMjgsIDE3NiwgMjAyLCAyNDMsIDI4LCAxNzYsIDIwNywgOTcsIDI4LCAxNzYsIDIwNywgOTYsIAotICAgIDI4LCAxNzYsIDIwNywgOTQsIDI4LCAxNzYsIDIwNywgOTAsIDI4LCAxNzYsIDIwNywgOTEsIDI4LCAxNzYsIDIwMiwgMjEyLCAKLSAgICAyOCwgMTc2LCAyMDIsIDIwOSwgMjgsIDE3NiwgMjAyLCAyMTAsIDI4LCAxNzYsIDIwMiwgMjA0LCAyOCwgMTc2LCAyMDIsIAotICAgIDIwNSwgMjgsIDE3NiwgMjAyLCAyMDYsIDI4LCAxNzYsIDIwMiwgMjA4LCAyOCwgMTc2LCAyNDAsIDIzMiwgMjgsIDE3NiwgCi0gICAgMjQwLCAyMzQsIDI4LCAxNzYsIDIwMywgMTAsIDI4LCAxNzYsIDIzNSwgMjA1LCAyOCwgMTc2LCAyMzUsIDE5NywgMjgsIAotICAgIDE3NiwgMjM1LCAyMDAsIDI4LCAxNzYsIDIzNSwgMTk4LCAyOCwgMTc2LCAyMzUsIDIwMiwgMjgsIDE3NiwgMjM1LCAyMDQsIAotICAgIDI4LCAxNzYsIDI1MCwgMTM3LCAyOCwgMTc2LCAyNTAsIDEzNCwgMjgsIDE3NiwgMjUwLCAxMzIsIDI4LCAxNzYsIDI1MCwgCi0gICAgMTMzLCAyOCwgMTc2LCAyMTEsIDE2MSwgMjgsIDE3NiwgMjU1LCAyMSwgMjgsIDE3NiwgMjAzLCAxMTIsIDI4LCAxNzYsIAotICAgIDIwMywgMzYsIDI4LCAxNzYsIDIyMCwgMTc3LCAyOCwgMTc2LCAyMjAsIDE3NiwgMjgsIDEwNywgMjI5LCA1OSwgMjgsIDEwNywgCi0gICAgMjExLCAxNTYsIDI4LCAxMDcsIDIyOSwgNTIsIDI4LCAxMDcsIDIyMiwgOTMsIDI4LCAxMDcsIDIyMiwgOTEsIDI4LCAxMDcsIAotICAgIDIyMiwgOTAsIDI4LCAxMDcsIDIwOCwgMjQwLCAyOCwgMTA3LCAyMTYsIDQ3LCAyOCwgMTA3LCAyMTYsIDQyLCAyOCwgMTA3LCAKLSAgICAyMTYsIDM5LCAyOCwgMTA3LCAyMTYsIDMyLCAyOCwgMTA3LCAyMTYsIDI3LCAyOCwgMTA3LCAyMTYsIDIyLCAyOCwgMTA3LCAKLSAgICAyMTYsIDMzLCAyOCwgMTA3LCAyMTYsIDQ1LCAyOCwgMTA3LCAyMjQsIDE0MSwgMjgsIDEwNywgMjE4LCAxNTMsIDI4LCAxMDcsIAotICAgIDIxOCwgMTQyLCAyOCwgMTA3LCAyMTIsIDExMSwgMjgsIDEwNywgMjExLCAxNTAsIDI4LCAxMDcsIDIzMSwgMTA2LCAyOCwgCi0gICAgMTA3LCAyNDYsIDc0LCAyOCwgMTA3LCAyNDYsIDEzOCwgMjgsIDEwNywgMjI5LCAxMjAsIDI4LCAxMDcsIDIwOSwgNjYsIDI4LCAKLSAgICAxMDcsIDIxOCwgMTkwLCAyOCwgMTA3LCAyMzYsIDI1MSwgMjgsIDEwNywgMjI5LCA1MywgMjgsIDEwNywgMjI5LCA1MSwgMjgsIAotICAgIDEwNywgMjIyLCA4OSwgMjgsIDEwNywgMjIyLCA4MywgMjgsIDEwNywgMjIyLCA4NSwgMjgsIDEwNywgMjIyLCA4OCwgMjgsIAotICAgIDEwNywgMjIyLCA4NCwgMjgsIDEwNywgMjA4LCAyMzcsIDI4LCAxMDcsIDIwOCwgMjM0LCAyOCwgMTA3LCAyMTYsIDQwLCAyOCwgCi0gICAgMTA3LCAyMTYsIDM1LCAyOCwgMTA3LCAyMTYsIDIxLCAyOCwgMTA3LCAyMTYsIDIwLCAyOCwgMTA3LCAyMTEsIDE1MiwgMjgsIAotICAgIDEwNywgMjE2LCAzNywgMjgsIDEwNywgMjE2LCAzNiwgMjgsIDEwNywgMjE2LCAyOSwgMjgsIDEwNywgMjE2LCAzMSwgMjgsIAotICAgIDEwNywgMjE2LCA0NCwgMjgsIDEwNywgMjE2LCAyNCwgMjgsIDEwNywgMjE2LCAzNCwgMjgsIDEwNywgMjE2LCA0MywgMjgsIAotICAgIDEwNywgMjE2LCAxOSwgMjgsIDEwNywgMjI0LCAxMzcsIDI4LCAxMDcsIDIyNCwgMTMyLCAyOCwgMTA3LCAyMjQsIDEzNCwgCi0gICAgMjgsIDEwNywgMjI0LCAxMzEsIDI4LCAxMDcsIDIyNCwgMTI5LCAyOCwgMTA3LCAyMjQsIDEzNSwgMjgsIDEwNywgMjI0LCAKLSAgICAxNDAsIDI4LCAxMDcsIDIyNCwgMTM4LCAyOCwgMTA3LCAyMjksIDI0NiwgMjgsIDEwNywgMjE4LCAxNDQsIDI4LCAxMDcsIAotICAgIDIxOCwgMTQ1LCAyOCwgMTA3LCAyMTgsIDE1MCwgMjgsIDEwNywgMjI5LCAyNDQsIDI4LCAxMDcsIDIxMiwgMTA0LCAyOCwgCi0gICAgMTA3LCAyMTIsIDk0LCAyOCwgMTA3LCAyMTIsIDk3LCAyOCwgMTA3LCAyMTIsIDk5LCAyOCwgMTA3LCAyMTksIDEwNywgMjgsIAotICAgIDEwNywgMjMxLCAxMDEsIDI4LCAxMDcsIDIzMSwgOTQsIDI4LCAxMDcsIDIxMSwgMTU3LCAyOCwgMTA3LCAyMzEsIDEwMiwgCi0gICAgMjgsIDEwNywgMjAzLCAyOSwgMjgsIDEwNywgMjAzLCAyNSwgMjgsIDEwNywgMjAzLCAyNiwgMjgsIDEwNywgMjE4LCAxODgsIAotICAgIDI4LCAxMDcsIDIyOSwgMjQ1LCAyOCwgMTA3LCAyMzYsIDI0OSwgMjgsIDEwNywgMjM2LCAyNDcsIDI4LCAxMDcsIDIzNiwgCi0gICAgMjUwLCAyOCwgMTA3LCAyMzYsIDI0OCwgMjgsIDEwNywgMjAzLCAzNSwgMjgsIDEwNywgMjI5LCA1NSwgMjgsIDEwNywgMjI5LCAKLSAgICA1NCwgMjgsIDEwNywgMjI5LCA1OCwgMjgsIDEwNywgMjI5LCA1NiwgMjgsIDEwNywgMjI5LCA1NywgMjgsIDEwNywgMjExLCAKLSAgICAxNTQsIDMzLCA0LCAxNTIsIDMzLCA0LCAyMzYsIDI2LCAzMywgNCwgMjM3LCAzLCAzMywgNCwgMjM3LCAxNTcsIDMzLCA0LCAKLSAgICAyMzcsIDQ4LCAzMywgNCwgMjM3LCA2NywgMzMsIDQsIDIzNiwgMTM2LCAzMywgNCwgMjM2LCAxMzUsIDMzLCA0LCAyMjgsIAotICAgIDExMywgMzMsIDQsIDIyNiwgMjM5LCAzMywgNCwgMjI3LCAxNDgsIDMzLCA0LCAyMjgsIDExMiwgMzMsIDQsIDIyNywgMjI2LCAKLSAgICAzMywgNCwgMjI3LCAyMzQsIDMzLCA0LCAyMjcsIDQ5LCAzMywgNCwgMjI2LCAyMDcsIDMzLCA0LCAyMzcsIDEyLCAzMywgNCwgCi0gICAgMjM3LCA2LCAzMywgNCwgMjM3LCA4LCAzMywgNCwgMjM3LCAxMSwgMzMsIDQsIDIzNywgOSwgMzMsIDQsIDIzNywgMTAsIDMzLCAKLSAgICA0LCAyMzcsIDcsIDMzLCA0LCAyMzcsIDUsIDMzLCA0LCAxOTIsIDMzLCA0LCAyMjMsIDI0NiwgMzMsIDQsIDIyNCwgMTU1LCAKLSAgICAzMywgNCwgMjI1LCAxNzUsIDMzLCA0LCAyMjUsIDgsIDMzLCA0LCAyMjUsIDIwLCAzMywgNCwgMjI0LCA4MiwgMzMsIDQsIAotICAgIDIyMywgMTgwLCAzMywgNCwgMjEwLCA4MCwgMzMsIDQsIDIxMCwgNzQsIDMzLCA0LCAyMTAsIDc2LCAzMywgNCwgMjEwLCA3OSwgCi0gICAgMzMsIDQsIDIxMCwgNzcsIDMzLCA0LCAyMTAsIDc4LCAzMywgNCwgMjEwLCA3NSwgMzMsIDQsIDIxMCwgNzMsIDMzLCA0LCAKLSAgICAyMTYsIDIyMCwgMzMsIDQsIDIxNSwgMTQ1LCAzMywgNCwgMjE2LCA1NywgMzMsIDQsIDIxNiwgMjE2LCAzMywgNCwgMjE2LCAKLSAgICAxMzUsIDMzLCA0LCAyMTYsIDE1OCwgMzMsIDQsIDIxNSwgMjI3LCAzMywgNCwgMjE1LCAxMTEsIDMzLCA0LCAyMTUsIDM2LCAKLSAgICAzMywgNCwgMjExLCAxMCwgMzMsIDQsIDIxMiwgMTYyLCAzMywgNCwgMjE1LCAzMywgMzMsIDQsIDIxNCwgMTY1LCAzMywgNCwgCi0gICAgMjE0LCAxNzcsIDMzLCA0LCAyMTIsIDEzLCAzMywgNCwgMjEwLCAxNzIsIDMzLCA0LCAyMTMsIDkwLCAzMywgNCwgMjEyLCAKLSAgICAxOTksIDMzLCA0LCAyMTMsIDExLCAzMywgNCwgMjEzLCA4NSwgMzMsIDQsIDIxMywgNDEsIDMzLCA0LCAyMTMsIDQzLCAzMywgCi0gICAgNCwgMjEyLCAyNDIsIDMzLCA0LCAyMTIsIDE4MCwgMzMsIDQsIDIxNywgMTI2LCAzMywgNCwgMjE3LCA2NSwgMzMsIDQsIAotICAgIDIxNywgODgsIDMzLCA0LCAyMTcsIDEyNSwgMzMsIDQsIDIxNywgMTA1LCAzMywgNCwgMjE3LCAxMDYsIDMzLCA0LCAyMTcsIAotICAgIDc3LCAzMywgNCwgMjE3LCA3NiwgMzMsIDQsIDIxNywgMTksIDMzLCA0LCAyMTcsIDE1LCAzMywgNCwgMjE3LCAxOCwgMzMsIAotICAgIDQsIDIxNywgMTYsIDMzLCA0LCAyMTcsIDE3LCAzMywgNCwgMjE3LCAxMDIsIDMzLCA0LCAyMTcsIDk0LCAzMywgNCwgMjE3LCAKLSAgICA5NywgMzMsIDQsIDIxNywgMTAxLCAzMywgNCwgMjE3LCA5OCwgMzMsIDQsIDIxNywgOTksIDMzLCA0LCAyMTcsIDk2LCAzMywgCi0gICAgNCwgMjE3LCA5MywgMzMsIDQsIDIxNywgODksIDMzLCA0LCAyMTcsIDkyLCAzMywgNCwgMjE3LCA5MCwgMzMsIDQsIDIxNywgCi0gICAgOTEsIDMzLCA0LCAyNDksIDMyLCAzMywgNCwgMjQ3LCAxOTMsIDMzLCA0LCAyNDgsIDg2LCAzMywgNCwgMjQ5LCAzMCwgMzMsIAotICAgIDQsIDI0OCwgMTUwLCAzMywgNCwgMjQ4LCAxNjIsIDMzLCA0LCAyNDgsIDIzLCAzMywgNCwgMjQ3LCAxNDIsIDMzLCA0LCAKLSAgICAyMDYsIDg2LCAzMywgNCwgMjA0LCAxNjMsIDMzLCA0LCAyMDUsIDIzMCwgMzMsIDQsIDIwNiwgODUsIDMzLCA0LCAyMDYsIAotICAgIDUwLCAzMywgNCwgMjA2LCA1NSwgMzMsIDQsIDIwNSwgMTg5LCAzMywgNCwgMjA0LCAxNTQsIDMzLCA0LCAyMTAsIDIyLCAzMywgCi0gICAgNCwgMjA3LCAyMDMsIDMzLCA0LCAyMDksIDIsIDMzLCA0LCAyMTAsIDE4LCAzMywgNCwgMjA5LCAxNzYsIDMzLCA0LCAyMDksIAotICAgIDE4NywgMzMsIDQsIDEzNSwgMzMsIDQsIDIwNywgMTYwLCAzMywgNCwgMjQ3LCA5MiwgMzMsIDQsIDI0NSwgMTEwLCAzMywgNCwgCi0gICAgMjQ2LCA3OSwgMzMsIDQsIDI0NywgOTEsIDMzLCA0LCAyNDYsIDIzMCwgMzMsIDQsIDI0NiwgMjM4LCAzMywgNCwgMjQ1LCAKLSAgICAyNTQsIDMzLCA0LCAyNDUsIDc0LCAzMywgNCwgMjAzLCAxODIsIDMzLCA0LCAyMDMsIDE1MiwgMzMsIDQsIDIwMywgMTcwLCAKLSAgICAzMywgNCwgMjAzLCAxODEsIDMzLCA0LCAyMDMsIDE3NSwgMzMsIDQsIDIwMywgMTc2LCAzMywgNCwgMjAzLCAxNjAsIDMzLCAKLSAgICA0LCAyMDMsIDE1OSwgMzMsIDQsIDIwMywgMTQ2LCAzMywgNCwgMjAzLCAxNDIsIDMzLCA0LCAyMDMsIDE0NSwgMzMsIDQsIAotICAgIDIwMywgMTQzLCAzMywgNCwgMjAzLCAxNDQsIDMzLCA0LCAyMDEsIDIwMSwgMzMsIDQsIDIyMSwgODQsIDMzLCA0LCAyMjIsIAotICAgIDEwMCwgMzMsIDQsIDIyMywgMTA2LCAzMywgNCwgMjIyLCAyMzUsIDMzLCA0LCAyMjIsIDI0MCwgMzMsIDQsIDIyMSwgMTkxLCAKLSAgICAzMywgNCwgMjIxLCAyMCwgMzMsIDQsIDIyMSwgMTEsIDMzLCA0LCAyMjAsIDIyNiwgMzMsIDQsIDIyMCwgMjQ4LCAzMywgNCwgCi0gICAgMjIxLCAxMCwgMzMsIDQsIDIyMSwgMCwgMzMsIDQsIDIyMSwgMSwgMzMsIDQsIDIyMCwgMjMzLCAzMywgNCwgMjIwLCAyMTYsIAotICAgIDMzLCA0LCAyMzgsIDQ1LCA2MywgMzMsIDQsIDIzOCwgNDUsIDY4LCAzMywgNCwgMjM4LCA0NSwgNzUsIDMzLCA0LCAyMzgsIAotICAgIDQ1LCAyNTIsIDI1LCAzMywgNCwgMjM4LCA0NSwgMjQxLCAxNjEsIDMzLCA0LCAyMzgsIDQ1LCA3NCwgMzMsIDQsIDIzOCwgCi0gICAgNDUsIDc4LCAzMywgNCwgMjM4LCA0NSwgMjA0LCAxMTEsIDMzLCA0LCAxNzMsIDMzLCA0LCAyMjgsIDIwOSwgMzMsIDQsIAotICAgIDIyOSwgMTAwLCAzMywgNCwgMjMwLCA0MSwgMzMsIDQsIDIyOSwgMTk4LCAzMywgNCwgMjI5LCAyMDEsIDMzLCA0LCAyMjksIAotICAgIDI2LCAzMywgNCwgMjI5LCAyNSwgMzMsIDQsIDIyOCwgMTY3LCAzMywgNCwgMjI4LCAxNjAsIDMzLCA0LCAyMjgsIDE2NiwgCi0gICAgMzMsIDQsIDIyOCwgMTYxLCAzMywgNCwgMjI4LCAxNjIsIDMzLCA0LCAyMjgsIDE1MywgMzMsIDQsIDIyOCwgMTQ3LCAzMywgCi0gICAgNCwgMjI4LCAxNDksIDMzLCA0LCAyMjgsIDE1MiwgMzMsIDQsIDIyOCwgMTUwLCAzMywgNCwgMjI4LCAxNTEsIDMzLCA0LCAKLSAgICAyMjgsIDE0OCwgMzMsIDQsIDIyOCwgMTQ2LCAzMywgNCwgMjI4LCAxNDIsIDMzLCA0LCAyMjgsIDE0NSwgMzMsIDQsIDIyOCwgCi0gICAgMTQzLCAzMywgNCwgMjI4LCAxNDQsIDMzLCA0LCAyMDQsIDExMSwgMzMsIDQsIDIwMywgMjE3LCAzMywgNCwgMjA0LCAzMCwgCi0gICAgMzMsIDQsIDIwNCwgMTEwLCAzMywgNCwgMjA0LCA1NSwgMzMsIDQsIDIwNCwgNjIsIDMzLCA0LCAyMDQsIDAsIDMzLCA0LCAKLSAgICAyMDMsIDI1NSwgMzMsIDQsIDIxOCwgMTk5LCA2MywgMzMsIDQsIDIxOCwgMTk5LCA2OCwgMzMsIDQsIDIxOCwgMTk5LCA3NSwgCi0gICAgMzMsIDQsIDIxOCwgMTk5LCAyNTIsIDI1LCAzMywgNCwgMjE4LCAxOTksIDI0MSwgMTYxLCAzMywgNCwgMjE4LCAxOTksIDc0LCAKLSAgICAzMywgNCwgMjE4LCAxOTksIDc4LCAzMywgNCwgMjAyLCAxMTYsIDMzLCA0LCAyMDIsIDYsIDMzLCA0LCAyMDIsIDM5LCAzMywgCi0gICAgNCwgMjAyLCAxMTQsIDMzLCA0LCAyMDIsIDkwLCAzMywgNCwgMjAyLCA5MiwgMzMsIDQsIDIwMiwgMTcsIDMzLCA0LCAyMDEsIAotICAgIDI0OSwgMzMsIDQsIDIwMiwgODAsIDMzLCA0LCAyMDIsIDU3LCAzMywgNCwgMjAyLCA2NiwgMzMsIDQsIDIwMiwgNzksIDMzLCAKLSAgICA0LCAyMDIsIDcwLCAzMywgNCwgMjAyLCA3MSwgMzMsIDQsIDIwMiwgNjMsIDMzLCA0LCAyMDIsIDQ4LCAzMywgNCwgMTk4LCAKLSAgICAzMywgNCwgMjAyLCAyMTMsIDMzLCA0LCAyMDMsIDExLCAzMywgNCwgMjAzLCAxMTAsIDMzLCA0LCAyMDMsIDQ5LCAzMywgNCwgCi0gICAgMjAzLCA1MiwgMzMsIDQsIDIwMiwgMjQ3LCAzMywgNCwgMjAyLCAyMzgsIDMzLCA0LCAyNDQsIDIxMiwgMzMsIDQsIDI0MiwgCi0gICAgNDIsIDMzLCA0LCAyNDMsIDIzMywgMzMsIDQsIDI0NCwgMjExLCAzMywgNCwgMjQ0LCA2MSwgMzMsIDQsIDI0NCwgNzUsIDMzLCAKLSAgICA0LCAyNDMsIDExMywgMzMsIDQsIDI0MiwgMTAsIDMzLCA0LCAyNDQsIDEyMCwgMzMsIDQsIDI0NCwgODUsIDMzLCA0LCAyNDQsIAotICAgIDk3LCAzMywgNCwgMjQ0LCAxMTksIDMzLCA0LCAyNDQsIDEwNywgMzMsIDQsIDI0NCwgMTA4LCAzMywgNCwgMjQ0LCA5MCwgCi0gICAgMzMsIDQsIDI0NCwgNzYsIDMzLCA0LCAyMzAsIDE4MSwgMzMsIDQsIDIzMCwgODIsIDMzLCA0LCAyMzAsIDE0MSwgMzMsIDQsIAotICAgIDIzMCwgMTgwLCAzMywgNCwgMjMwLCAxNTksIDMzLCA0LCAyMzAsIDE2MSwgMzMsIDQsIDIzMCwgMTAxLCAzMywgNCwgMjMwLCAKLSAgICA2MiwgMzMsIDQsIDIzOSwgOCwgMzMsIDQsIDIzNywgMjMwLCAzMywgNCwgMjM4LCA4MSwgMzMsIDQsIDIzOSwgNSwgMzMsIDQsIAotICAgIDIzOCwgMTgyLCAzMywgNCwgMjM4LCAxOTAsIDMzLCA0LCAyMzgsIDM5LCAzMywgNCwgMjM4LCAzOCwgMzMsIDQsIDIzNywgCi0gICAgMTkwLCAzMywgNCwgMjM3LCAxODYsIDMzLCA0LCAyMzcsIDE4OSwgMzMsIDQsIDIzNywgMTg3LCAzMywgNCwgMjM3LCAxODgsIAotICAgIDMzLCA0LCAyMzgsIDE1NSwgMzMsIDQsIDIzOCwgMTM1LCAzMywgNCwgMjM4LCAxNDUsIDMzLCA0LCAyMzgsIDE1NCwgMzMsIAotICAgIDQsIDIzOCwgMTQ5LCAzMywgNCwgMjM4LCAxNTAsIDMzLCA0LCAyMzgsIDEzOSwgMzMsIDQsIDIzOCwgMTI0LCAzMywgNCwgCi0gICAgMjA5LCAxMDgsIDMzLCA0LCAyMDksIDIyLCAzMywgNCwgMjA5LCA3MCwgMzMsIDQsIDIwOSwgMTA3LCAzMywgNCwgMjA5LCAKLSAgICA5MCwgMzMsIDQsIDIwOSwgOTIsIDMzLCA0LCAyMDksIDQ3LCAzMywgNCwgMjA5LCAxMywgMzMsIDQsIDI0NiwgMTk5LCAzMywgCi0gICAgNCwgMjQ2LCA5OCwgMzMsIDQsIDI0NiwgMTQyLCAzMywgNCwgMjQ2LCAxOTgsIDMzLCA0LCAyNDYsIDE2NiwgMzMsIDQsIAotICAgIDI0NiwgMTcwLCAzMywgNCwgMjQ2LCAxMTYsIDMzLCA0LCAyNDYsIDg3LCAzMywgNCwgMjE4LCAyMDgsIDMzLCA0LCAyMTgsIAotICAgIDE3MywgMzMsIDQsIDIxOCwgMTkyLCAzMywgNCwgMjE4LCAyMDcsIDMzLCA0LCAyMTgsIDE5NCwgMzMsIDQsIDIxOCwgMTk1LCAKLSAgICAzMywgNCwgMjE4LCAxODAsIDMzLCA0LCAyMTgsIDE2OSwgMzMsIDQsIDIwOCwgMjAsIDMzLCA0LCAyMDcsIDI0OSwgMzMsIDQsIAotICAgIDIwNywgMjU1LCAzMywgNCwgMjA4LCAxOSwgMzMsIDQsIDIwOCwgMTMsIDMzLCA0LCAyMDgsIDE0LCAzMywgNCwgMjA3LCAKLSAgICAyNTMsIDMzLCA0LCAyMDcsIDI0NywgMzMsIDQsIDIwNywgMTA2LCAzMywgNCwgMjA3LCA5OCwgMzMsIDQsIDIwNywgMTAyLCAKLSAgICAzMywgNCwgMjA3LCAxMDUsIDMzLCA0LCAyMDcsIDEwMywgMzMsIDQsIDIwNywgMTA0LCAzMywgNCwgMjA3LCAxMDAsIDMzLCAKLSAgICA0LCAyMDcsIDk5LCAzMywgNCwgMjQwLCAxMDgsIDMzLCA0LCAyMzksIDEwOCwgMzMsIDQsIDI0MCwgMjYsIDMzLCA0LCAyNDAsIAotICAgIDEwNywgMzMsIDQsIDI0MCwgNTMsIDMzLCA0LCAyNDAsIDYwLCAzMywgNCwgMjM5LCAxODYsIDMzLCA0LCAyMzksIDg2LCAzMywgCi0gICAgNCwgMTg1LCAzMywgNCwgMjE3LCAxOTEsIDMzLCA0LCAyMTgsIDE2NywgMzMsIDQsIDIxOSwgMTY4LCAzMywgNCwgMjE5LCAKLSAgICAyMywgMzMsIDQsIDIxOSwgMzQsIDMzLCA0LCAyMTgsIDY5LCAzMywgNCwgMjE3LCAxNTIsIDMzLCA0LCAyMTUsIDEwMSwgMzMsIAotICAgIDQsIDIyMywgMTY5LCAzMywgNCwgMjM5LCA4MCwgMzMsIDM5LCAyMzgsIDE3OSwgMjUsIDIyLCAyMjcsIDE5NiwgODIsIDMzLCAKLSAgICAzOSwgMjIsIDIyNywgMTk2LCA4MiwgMzMsIDM5LCAyMzgsIDE3OSwgODIsIDMzLCAyMTQsIDE2OCwgODIsIDMzLCAyMDMsIAotICAgIDIzNywgMzMsIDIzOSwgMTAyLCAyMTEsIDYxLCAzMywgMjQ1LCAyMzMsIDMzLCAyMTMsIDE0MywgMzMsIDI0NSwgMjQyLCAzMywgCi0gICAgMjE3LCAyNDYsIDI0NSwgMjQyLCAzMywgMjE3LCA0NywgODIsIDMzLCAyMTksIDg5LCAyMTMsIDEzMCwgMzMsIDE3LCAxMDUsIAotICAgIDMzLCAxNywgMTA4LCAzMywgMTcsIDE0NywgMzMsIDE3LCAxNDksIDMzLCAxNywgMTcwLCAzMywgMTcsIDE5NSwgMzMsIDE3LCAKLSAgICAyMTMsIDExMSwgMzMsIDE3LCAxOTksIDMzLCAxNywgMjIyLCA2MywgMzMsIDQyLCAyMDksIDE1MiwgMzMsIDQyLCAyMDcsIAotICAgIDE1MSwgMzMsIDQyLCAyMDksIDUzLCAzMywgNDIsIDIzOSwgMTUzLCAzMywgNDIsIDI0MCwgMTgsIDMzLCA0MiwgMjEyLCA3NCwgCi0gICAgMzMsIDQyLCAyMTMsIDEwNSwgMzMsIDQyLCAyNDEsIDEzNCwgMzMsIDQyLCAyMjIsIDU4LCAzMywgNDIsIDIzNiwgMTEsIDMzLCAKLSAgICA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDMzLCA0LCAyMTQsIDE3MywgMjIzLCAxODAsIDMzLCA0LCAyMjMsIDE3NiwgMzMsIDQsIAotICAgIDIyMywgMTc3LCAzMywgNCwgMjIzLCAxNzgsIDMzLCA0LCAyMTQsIDE3MywgMjQ3LCAxNDIsIDMzLCA0LCAyNDcsIDEzOSwgCi0gICAgMzMsIDQsIDI0NywgMTQwLCAzMywgNCwgMjQ3LCAxNDEsIDMzLCA0LCAyMTQsIDE3MywgMjM5LCA4NiwgMzMsIDQsIDIzOSwgCi0gICAgODIsIDMzLCA0LCAyMzksIDgzLCAzMywgNCwgMjM5LCA4NCwgMzMsIDQsIDIxNCwgMTczLCAyMTcsIDE1MiwgMzMsIDQsIAotICAgIDIxNywgMTQ4LCAzMywgNCwgMjE3LCAxNDksIDMzLCA0LCAyMTcsIDE1MCwgMzMsIDIwOCwgMTYyLCAxMzEsIDIwMiwgMjUwLCAKLSAgICAzMywgMjA4LCAxNjIsIDEzMSwgMjQ0LCAyMiwgMzMsIDIwOCwgMTYyLCAxMzEsIDIxNiwgMiwgMzMsIDIwOCwgMTYyLCAxMzEsIAotICAgIDIxMiwgMjI4LCAyMTYsIDIsIDMzLCAyMDgsIDE2MiwgMTMxLCAyNDMsIDIwNywgMzMsIDIwOCwgMTYyLCAxMzEsIDIyOSwgCi0gICAgMTc5LCAzMywgMjA4LCAxNjIsIDEzMSwgMjQ2LCAxMjQsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMzcsIDAsIDMzLCAyMDgsIAotICAgIDE2MiwgMTMxLCAyNDQsIDIxLCAzMywgMjA4LCAxNjIsIDEzMSwgMjI4LCAxODEsIDkwLCAxLCA2MywgOTAsIDEsIDc0LCA5MCwgCi0gICAgMSwgNzUsIDkwLCAxLCA3OCwgOTAsIDEsIDY4LCA5MCwgMSwgMjA2LCAxNjQsIDkwLCAxLCAyMzksIDgsIDkwLCAxLCAxNzMsIAotICAgIDkwLCAxLCAyMzgsIDE5MCwgOTAsIDEsIDIzOCwgODEsIDkwLCAxLCAyMzgsIDM5LCA5MCwgMSwgMjM3LCAyMzAsIDkwLCAxLCAKLSAgICAyMzcsIDE5MiwgOTAsIDEsIDE1MiwgOTAsIDEsIDIzNywgNjcsIDkwLCAxLCAyMzcsIDMsIDkwLCAxLCAyMzYsIDEzNiwgOTAsIAotICAgIDEsIDIzNiwgMjYsIDkwLCAxLCAyMzUsIDI1NSwgOTAsIDEsIDIyOCwgMTEzLCA5MCwgMSwgMjI3LCAyMzQsIDkwLCAxLCAKLSAgICAyMjcsIDE0OCwgOTAsIDEsIDIyNywgNDksIDkwLCAxLCAyMjYsIDIzOSwgOTAsIDEsIDIyNiwgMjA4LCA5MCwgMSwgMTkyLCAKLSAgICA5MCwgMSwgMjI1LCAyMCwgOTAsIDEsIDIyNCwgMTU1LCA5MCwgMSwgMjI0LCA4MiwgOTAsIDEsIDIyMywgMjQ2LCA5MCwgMSwgCi0gICAgMjAxLCAyMDEsIDkwLCAxLCAyMzYsIDE2MCwgOTAsIDEsIDIyMywgOTMsIDkwLCAxLCAyMjIsIDI0MCwgOTAsIDEsIDIyMiwgCi0gICAgMTAwLCA5MCwgMSwgMjIxLCAxOTEsIDkwLCAxLCAyMjEsIDg0LCA5MCwgMSwgMjIxLCAyMiwgOTAsIDEsIDIxNywgNjQsIDkwLCAKLSAgICAxLCAyMTcsIDUwLCA5MCwgMSwgMjE3LCA0MywgOTAsIDEsIDIxNywgMzQsIDkwLCAxLCAyMTcsIDIzLCA5MCwgMSwgMjE3LCAKLSAgICAyMSwgOTAsIDEsIDIxNSwgMzYsIDkwLCAxLCAxOTQsIDkwLCAxLCAyMTQsIDE3NywgOTAsIDEsIDIxMiwgMTYyLCA5MCwgMSwgCi0gICAgMjEyLCAxMywgOTAsIDEsIDIxMSwgMTAsIDkwLCAxLCAyMTAsIDE3NywgOTAsIDEsIDI0NCwgMjEyLCA5MCwgMSwgMjEwLCAKLSAgICAyMiwgOTAsIDEsIDI0NCwgNzUsIDkwLCAxLCAyMDksIDE4NywgOTAsIDEsIDI0MywgMjMzLCA5MCwgMSwgMjA5LCAyLCA5MCwgCi0gICAgMSwgMjQzLCAxMTMsIDkwLCAxLCAyNDIsIDQyLCA5MCwgMSwgMjQyLCAxMywgOTAsIDEsIDI0MywgMTI0LCA5MCwgMSwgMjA4LCAKLSAgICAxOTAsIDkwLCAxLCAyMDgsIDE4OSwgOTAsIDEsIDIwOCwgMTc4LCA5MCwgMSwgMjA4LCAxNzcsIDkwLCAxLCAyMDgsIDE3NiwgCi0gICAgOTAsIDEsIDIwOCwgMTc1LCA5MCwgMSwgMjA4LCAyMCwgOTAsIDEsIDIwOCwgMTQsIDkwLCAxLCAyMDcsIDI1NSwgOTAsIDEsIAotICAgIDIwNywgMjUzLCA5MCwgMSwgMjA3LCAyNDksIDkwLCAxLCAyMDcsIDI0OCwgOTAsIDEsIDIwNCwgMTExLCA5MCwgMSwgMjA0LCAKLSAgICA2MiwgOTAsIDEsIDIwNCwgMzAsIDkwLCAxLCAyMDQsIDAsIDkwLCAxLCAyMDMsIDIxNywgOTAsIDEsIDIwMywgMjA0LCA5MCwgCi0gICAgMSwgMTk4LCA5MCwgMSwgMjAzLCA1MiwgOTAsIDEsIDIwMywgMTEsIDkwLCAxLCAyMDIsIDI0NywgOTAsIDEsIDIwMiwgMjEzLCAKLSAgICA5MCwgMSwgMjAyLCAxNzcsIDkwLCAxLCAyMjMsIDE4NywgOTAsIDUsIDEsIDIwMywgNTIsIDkwLCA1LCAxLCAyMDMsIDExLCAKLSAgICA5MCwgNSwgMSwgMjAyLCAyNDcsIDkwLCA1LCAxLCAyMDIsIDIxMywgOTAsIDUsIDEsIDIwMiwgMTc3LCA5MCwgNSwgMSwgCi0gICAgMjIzLCAxODcsIDE5LCAyMCwgMjM1LCAyMjAsIDE5LCAyMCwgNzQsIDE5LCAyMCwgMjUxLCAyNDUsIDE5LCAyMCwgNzUsIDE5LCAKLSAgICAyMCwgMjMxLCA4MywgMTksIDIwLCA3OCwgMTksIDIwLCAyMjAsIDE4LCAxOSwgMjAsIDIwMywgMTIzLCAyMjAsIDE4LCAxOSwgCi0gICAgMjAsIDg4LCAyNDEsIDE2MSwgMTksIDIwLCA4OCwgNzUsIDE5LCAyMCwgNjMsIDE5LCAyMCwgMjUyLCAyNSwgMTksIDIwLCAKLSAgICAyMDQsIDYyLCAxOSwgMjAsIDE5NiwgMjA0LCA2MiwgMTksIDIwLCAyMDQsIDMwLCAxOSwgMjAsIDE5NiwgMjA0LCAzMCwgMTksIAotICAgIDIwLCAyMDQsIDE5LCAxOSwgMjAsIDE5NiwgMjA0LCAxOSwgMTksIDIwLCAyMDQsIDAsIDE5LCAyMCwgMTk2LCAyMDQsIDAsIAotICAgIDE5LCAyMCwgMjAzLCAyNDQsIDE5LCAyMCwgMTk2LCAyMDMsIDI0NCwgMTksIDIwLCAyMjMsIDY4LCAyMDMsIDI0NCwgMTksIAotICAgIDIwLCAyMDQsIDExMSwgMTksIDIwLCAxOTYsIDIwNCwgMTExLCAxOSwgMjAsIDIwNCwgMTEwLCAxOSwgMjAsIDE5NiwgMjA0LCAKLSAgICAxMTAsIDE5LCAyMCwgMjIzLCA2OCwgMjA0LCAxMTAsIDE5LCAyMCwgMjUxLCA2NCwgMTksIDIwLCAyMDMsIDEyMywgMjA0LCAKLSAgICAxNDQsIDE5LCAyMCwgMjM4LCA0NSwgMjExLCA2MSwgMTksIDIwLCA0NiwgMTY1LCAxOSwgMjAsIDQ2LCAyMzcsIDI1MywgMTksIAotICAgIDIwLCA0NiwgMjQ3LCAyNDgsIDE2MiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIwOCwgMTQ1LCAxNjIsIDIxNSwgMjUyLCAxOSwgCi0gICAgMjAsIDQ2LCA1MCwgMTYyLCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDUyLCAxNjUsIDE5LCAKLSAgICAyMCwgNDYsIDUyLCAyMTIsIDIyOCwgODAsIDIxMSwgMTksIDE5LCAyMCwgNDYsIDEwMSwgMjQzLCA4NSwgMTksIDIwLCA0NiwgCi0gICAgMjEyLCAyMjgsIDIzNiwgMTA2LCA5NSwgMTksIDIwLCA0NiwgMjE4LCA3NiwgMTksIDIwLCA0NiwgMTIxLCAyMTAsIDMsIDE5LCAKLSAgICAyMCwgMjQxLCA5MiwgMTksIDIwLCAyMzEsIDQ5LCAxOSwgMjAsIDIyMCwgMzEsIDE5LCAyMCwgMjUwLCAyMzEsIDE5LCAyMCwgCi0gICAgMjE5LCAzNCwgMTksIDIwLCAyMTksIDE2NiwgMTksIDIwLCAyMTgsIDE2NywgMTksIDIwLCAyMTgsIDEyOSwgMTksIDIwLCAKLSAgICAyMTgsIDY5LCAxOSwgMjAsIDIxOCwgNDUsIDE5LCAyMCwgMjAzLCAxMjMsIDIxOCwgNDUsIDE5LCAyMCwgODgsIDIzNywgNDgsIAotICAgIDE5LCAyMCwgODgsIDIzNywgMywgMTksIDIwLCAxODUsIDE5LCAyMCwgMjE5LCAxNjgsIDE5LCAyMCwgMjE3LCAxNTAsIDE5LCAKLSAgICAyMCwgMTk2LCAyMTcsIDE1MCwgMTksIDIwLCAyMTcsIDE0OCwgMTksIDIwLCAxOTYsIDIxNywgMTQ4LCAxOSwgMjAsIDIxNywgCi0gICAgMTQ3LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDcsIDE5LCAyMCwgMjE3LCAxNDUsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NSwgMTksIAotICAgIDIwLCAyMTcsIDE0NCwgMTksIDIwLCAxOTYsIDIxNywgMTQ0LCAxOSwgMjAsIDIxNywgMTUyLCAxOSwgMjAsIDE5NiwgMjE3LCAKLSAgICAxNTIsIDE5LCAyMCwgMjE3LCAxNTEsIDE5LCAyMCwgMTk2LCAyMTcsIDE1MSwgMTksIDIwLCAyMDMsIDEyMywgMjE3LCAxNTEsIAotICAgIDE5LCAyMCwgMjE5LCAxODQsIDE5LCAyMCwgMTk2LCAyMTksIDE4NCwgMTksIDIwLCA4OCwgMjM3LCAxNzEsIDE5LCAyMCwgCi0gICAgMjA5LCAxODcsIDE5LCAyMCwgMjEwLCAxNiwgMTksIDIwLCAyMDksIDIsIDE5LCAyMCwgMjA4LCAyNDIsIDE5LCAyMCwgMTM1LCAKLSAgICAxOSwgMjAsIDIwOCwgMTQ4LCAxOSwgMjAsIDIwMywgMTIzLCAyMDgsIDE0OCwgMTksIDIwLCA4OCwgMjQ0LCA2MSwgMTksIAotICAgIDIwLCA4OCwgMjQzLCAyMzMsIDE5LCAyMCwgMjEwLCAyMiwgMTksIDIwLCAyMTAsIDE4LCAxOSwgMjAsIDIwNywgMTU4LCAxOSwgCi0gICAgMjAsIDE5NiwgMjA3LCAxNTgsIDE5LCAyMCwgMjA3LCAxNDAsIDE5LCAyMCwgMTk2LCAyMDcsIDE0MCwgMTksIDIwLCAyMDcsIAotICAgIDEzOSwgMTksIDIwLCAxOTYsIDIwNywgMTM5LCAxOSwgMjAsIDEwOCwgMTksIDIwLCAxOTYsIDEwOCwgMTksIDIwLCAyMDcsIAotICAgIDEzMCwgMTksIDIwLCAxOTYsIDIwNywgMTMwLCAxOSwgMjAsIDIwNywgMTYwLCAxOSwgMjAsIDE5NiwgMjA3LCAxNjAsIDE5LCAKLSAgICAyMCwgMjA3LCAxNTksIDE5LCAyMCwgMTk2LCAyMDcsIDE1OSwgMTksIDIwLCAyMjMsIDY4LCAyMDcsIDE1OSwgMTksIDIwLCAKLSAgICAyMTAsIDY5LCAxOSwgMjAsIDIwNywgMjM2LCAxOSwgMjAsIDIwNywgMjIwLCAxOSwgMjAsIDIwNywgMjE4LCAxOSwgMjAsIAotICAgIDIwNywgMjQxLCAxOSwgMjAsIDIyOSwgMjAxLCAxOSwgMjAsIDIzMCwgMzYsIDE5LCAyMCwgMjI5LCAxMDAsIDE5LCAyMCwgCi0gICAgMjI5LCA4NywgMTksIDIwLCAyMjksIDI2LCAxOSwgMjAsIDIyOSwgNiwgMTksIDIwLCAyMDMsIDEyMywgMjI5LCA2LCAxOSwgCi0gICAgMjAsIDE3MywgMTksIDIwLCAyMzAsIDQxLCAxOSwgMjAsIDIyOCwgMTYyLCAxOSwgMjAsIDE5NiwgMjI4LCAxNjIsIDE5LCAKLSAgICAyMCwgMjI4LCAxNjAsIDE5LCAyMCwgMTk2LCAyMjgsIDE2MCwgMTksIDIwLCAyMjgsIDE1OSwgMTksIDIwLCAxOTYsIDIyOCwgCi0gICAgMTU5LCAxOSwgMjAsIDIyOCwgMTU3LCAxOSwgMjAsIDE5NiwgMjI4LCAxNTcsIDE5LCAyMCwgMjI4LCAxNTYsIDE5LCAyMCwgCi0gICAgMTk2LCAyMjgsIDE1NiwgMTksIDIwLCAyMjgsIDE2NywgMTksIDIwLCAxOTYsIDIyOCwgMTY3LCAxOSwgMjAsIDIyOCwgMTY2LCAKLSAgICAxOSwgMjAsIDE5NiwgMjI4LCAxNjYsIDE5LCAyMCwgMjIzLCA2OCwgMjI4LCAxNjYsIDE5LCAyMCwgMjMwLCA1NCwgMTksIAotICAgIDIwLCAyMjgsIDE2OCwgMTksIDIwLCAyMTEsIDIzNywgMjI5LCAxOTEsIDE5LCAyMCwgMjExLCAyMzcsIDIyOSwgODgsIDE5LCAKLSAgICAyMCwgMjExLCAyMzcsIDIyOSwgMjAsIDE5LCAyMCwgMjExLCAyMzcsIDIzMCwgMjAsIDE5LCAyMCwgMjQ2LCAyMzgsIDE5LCAKLSAgICAyMCwgMjQ3LCA5MCwgMTksIDIwLCAyNDYsIDc5LCAxOSwgMjAsIDI0NiwgNjksIDE5LCAyMCwgMjQ1LCAyNTQsIDE5LCAyMCwgCi0gICAgMjQ1LCAxODAsIDE5LCAyMCwgMjAzLCAxMjMsIDI0NSwgMTgwLCAxOSwgMjAsIDI0NywgOTIsIDE5LCAyMCwgMjQ3LCA5MSwgCi0gICAgMTksIDIwLCAyNDUsIDcyLCAxOSwgMjAsIDE5NiwgMjQ1LCA3MiwgMTksIDIwLCAyNDUsIDcwLCAxOSwgMjAsIDE5NiwgMjQ1LCAKLSAgICA3MCwgMTksIDIwLCAyNDUsIDY5LCAxOSwgMjAsIDE5NiwgMjQ1LCA2OSwgMTksIDIwLCAyNDUsIDY4LCAxOSwgMjAsIDE5NiwgCi0gICAgMjQ1LCA2OCwgMTksIDIwLCAyNDUsIDY3LCAxOSwgMjAsIDE5NiwgMjQ1LCA2NywgMTksIDIwLCAyNDUsIDc0LCAxOSwgMjAsIAotICAgIDE5NiwgMjQ1LCA3NCwgMTksIDIwLCAyNDUsIDczLCAxOSwgMjAsIDE5NiwgMjQ1LCA3MywgMTksIDIwLCAyMjMsIDY4LCAKLSAgICAyNDUsIDczLCAxOSwgMjAsIDI0NywgMTI1LCAxOSwgMjAsIDIxNCwgMjA2LCAyMDksIDExMCwgMTksIDIwLCAyMjUsIDIwLCAKLSAgICAxOSwgMjAsIDIyNSwgMTc0LCAxOSwgMjAsIDIyNCwgMTU1LCAxOSwgMjAsIDIyNCwgMTI1LCAxOSwgMjAsIDIyNCwgODIsIAotICAgIDE5LCAyMCwgMjI0LCAzNSwgMTksIDIwLCAyMDMsIDEyMywgMjI0LCAzNSwgMTksIDIwLCAxOTIsIDE5LCAyMCwgMjI1LCAKLSAgICAxNzUsIDE5LCAyMCwgMjIzLCAxNzgsIDE5LCAyMCwgMTk2LCAyMjMsIDE3OCwgMTksIDIwLCAyMjMsIDE3NiwgMTksIDIwLCAKLSAgICAxOTYsIDIyMywgMTc2LCAxOSwgMjAsIDIyMywgMTc1LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzUsIDE5LCAyMCwgMjIzLCAxNzQsIAotICAgIDE5LCAyMCwgMTk2LCAyMjMsIDE3NCwgMTksIDIwLCAyMjMsIDE3MywgMTksIDIwLCAxOTYsIDIyMywgMTczLCAxOSwgMjAsIAotICAgIDIyMywgMTgwLCAxOSwgMjAsIDE5NiwgMjIzLCAxODAsIDE5LCAyMCwgMjIzLCAxNzksIDE5LCAyMCwgMTk2LCAyMjMsIDE3OSwgCi0gICAgMTksIDIwLCAyMjMsIDY4LCAyMjMsIDE3OSwgMTksIDIwLCAyMjYsIDE4NSwgMTksIDIwLCAxOTYsIDIyNiwgMTg1LCAxOSwgCi0gICAgMjAsIDIyNCwgMTU5LCAxOSwgMjAsIDI1MCwgNDgsIDIyNiwgMTg1LCAxOSwgMjAsIDIxNCwgMjA2LCAyMjYsIDE4NSwgMTksIAotICAgIDIwLCAyMjIsIDI0MCwgMTksIDIwLCAyMjMsIDEwNSwgMTksIDIwLCAyMjIsIDEwMCwgMTksIDIwLCAyMjIsIDc1LCAxOSwgCi0gICAgMjAsIDIyMSwgMTkxLCAxOSwgMjAsIDIyMSwgMTgwLCAxOSwgMjAsIDIwMywgMTIzLCAyMjEsIDE4MCwgMTksIDIwLCAyMDEsIAotICAgIDIwMSwgMTksIDIwLCAyMjMsIDEwNiwgMTksIDIwLCAyMjEsIDE4LCAxOSwgMjAsIDE5NiwgMjIxLCAxOCwgMTksIDIwLCAKLSAgICAyMjEsIDIwLCAxOSwgMjAsIDE5NiwgMjIxLCAyMCwgMTksIDIwLCAyMjEsIDE5LCAxOSwgMjAsIDE5NiwgMjIxLCAxOSwgMTksIAotICAgIDIwLCAyMjMsIDY4LCAyMjEsIDE5LCAxOSwgMjAsIDIyMywgMTYzLCAxOSwgMjAsIDg4LCAyMjIsIDIwNSwgMTksIDIwLCAKLSAgICAyMjIsIDEwNSwgMTksIDIwLCAyMjcsIDIzNCwgMTksIDIwLCAyMjgsIDExMSwgMTksIDIwLCAyMjcsIDE0OCwgMTksIDIwLCAKLSAgICAyMjcsIDEzMCwgMTksIDIwLCAyMjcsIDQ5LCAxOSwgMjAsIDIyNywgMTgsIDE5LCAyMCwgMjAzLCAxMjMsIDIyNywgMTgsIAotICAgIDE5LCAyMCwgMjI4LCAxMTMsIDE5LCAyMCwgMjI4LCAxMTIsIDE5LCAyMCwgMjI2LCAyMDUsIDE5LCAyMCwgMTk2LCAyMjYsIAotICAgIDIwNSwgMTksIDIwLCAyMjYsIDIwNCwgMTksIDIwLCAxOTYsIDIyNiwgMjA0LCAxOSwgMjAsIDIyNiwgMjAzLCAxOSwgMjAsIAotICAgIDE5NiwgMjI2LCAyMDMsIDE5LCAyMCwgMjI2LCAyMDIsIDE5LCAyMCwgMTk2LCAyMjYsIDIwMiwgMTksIDIwLCAyMjYsIDIwMSwgCi0gICAgMTksIDIwLCAxOTYsIDIyNiwgMjAxLCAxOSwgMjAsIDIyNiwgMjA3LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDcsIDE5LCAyMCwgCi0gICAgMjI2LCAyMDYsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNiwgMTksIDIwLCAxNTksIDE5LCAyMCwgMTk2LCAxNTksIDE5LCAyMCwgCi0gICAgMTc0LCAxNTksIDE5LCAyMCwgMjE0LCAxNzcsIDE5LCAyMCwgMjE1LCAzMSwgMTksIDIwLCAyMTIsIDE2MiwgMTksIDIwLCAKLSAgICAyMTIsIDE0MiwgMTksIDIwLCAyMTIsIDEzLCAxOSwgMjAsIDIxMSwgMjUwLCAxOSwgMjAsIDIwMywgMTIzLCAyMTEsIDI1MCwgCi0gICAgMTksIDIwLCAyMTUsIDM2LCAxOSwgMjAsIDIxNSwgMzMsIDE5LCAyMCwgMjEwLCAxNjgsIDE5LCAyMCwgMTk2LCAyMTAsIAotICAgIDE2OCwgMTksIDIwLCAyMTAsIDE2MiwgMTksIDIwLCAxOTYsIDIxMCwgMTYyLCAxOSwgMjAsIDIxMCwgMTYxLCAxOSwgMjAsIAotICAgIDE5NiwgMjEwLCAxNjEsIDE5LCAyMCwgMjEwLCAxNTcsIDE5LCAyMCwgMTk2LCAyMTAsIDE1NywgMTksIDIwLCAyMTAsIDE1NiwgCi0gICAgMTksIDIwLCAxOTYsIDIxMCwgMTU2LCAxOSwgMjAsIDIxMCwgMTcyLCAxOSwgMjAsIDE5NiwgMjEwLCAxNzIsIDE5LCAyMCwgCi0gICAgMjEwLCAxNzEsIDE5LCAyMCwgMTk2LCAyMTAsIDE3MSwgMTksIDIwLCAyMjMsIDY4LCAyMTAsIDE3MSwgMTksIDIwLCAxOTQsIAotICAgIDE5LCAyMCwgMjUwLCA0OCwgMTk0LCAxOSwgMjAsIDIxMCwgMTczLCAxOSwgMjAsIDI0OCwgNDAsIDE5NCwgMTksIDIwLCAKLSAgICAyMjQsIDI4LCAyMTIsIDcwLCAxOSwgMjAsIDIyMywgNjgsIDIxMiwgNjEsIDE5LCAyMCwgMjIzLCA2OCwgMjE1LCA5MiwgMTksIAotICAgIDIwLCAyMjMsIDY4LCAyMTEsIDE3OSwgMTksIDIwLCAyMjMsIDY4LCAyMTEsIDEzLCAxOSwgMjAsIDIyMywgNjgsIDIxMiwgCi0gICAgNjAsIDE5LCAyMCwgMjIzLCA2OCwgMjE0LCAxODAsIDE5LCAyMCwgMjEzLCA0MywgMTksIDIwLCAyMTMsIDExLCAxOSwgMjAsIAotICAgIDIxMywgNiwgMTksIDIwLCAyMTIsIDI0MiwgMTksIDIwLCAyMTIsIDIzNiwgMTksIDIwLCAyMTMsIDkwLCAxOSwgMjAsIDIxMywgCi0gICAgODUsIDE5LCAyMCwgMjEyLCAxNzcsIDE5LCAyMCwgMTk2LCAyMTIsIDE3NywgMTksIDIwLCAyMTIsIDE3NiwgMTksIDIwLCAKLSAgICAxOTYsIDIxMiwgMTc2LCAxOSwgMjAsIDIxMiwgMTc1LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzUsIDE5LCAyMCwgMjEyLCAxNzQsIAotICAgIDE5LCAyMCwgMTk2LCAyMTIsIDE3NCwgMTksIDIwLCAyMTIsIDE3MywgMTksIDIwLCAxOTYsIDIxMiwgMTczLCAxOSwgMjAsIAotICAgIDIxMiwgMTgwLCAxOSwgMjAsIDE5NiwgMjEyLCAxODAsIDE5LCAyMCwgMjEyLCAxNzksIDE5LCAyMCwgMTk2LCAyMTIsIDE3OSwgCi0gICAgMTksIDIwLCAyMTMsIDkyLCAxOSwgMjAsIDIwMywgNTIsIDE5LCAyMCwgMjAzLCAxMDgsIDE5LCAyMCwgMjAzLCAxMSwgMTksIAotICAgIDIwLCAyMDMsIDIsIDE5LCAyMCwgMjAyLCAyNDcsIDE5LCAyMCwgMjAyLCAyMzIsIDE5LCAyMCwgMjAzLCAxMjMsIDIwMiwgCi0gICAgMjMyLCAxOSwgMjAsIDE5OCwgMTksIDIwLCAyMDMsIDExMCwgMTksIDIwLCAyMDIsIDE3NCwgMTksIDIwLCAxOTYsIDIwMiwgCi0gICAgMTc0LCAxOSwgMjAsIDIwMiwgMTczLCAxOSwgMjAsIDE5NiwgMjAyLCAxNzMsIDE5LCAyMCwgMjAyLCAxNzIsIDE5LCAyMCwgCi0gICAgMTk2LCAyMDIsIDE3MiwgMTksIDIwLCAyMDIsIDE3MSwgMTksIDIwLCAxOTYsIDIwMiwgMTcxLCAxOSwgMjAsIDIwMiwgMTcwLCAKLSAgICAxOSwgMjAsIDE5NiwgMjAyLCAxNzAsIDE5LCAyMCwgMjAyLCAxNzYsIDE5LCAyMCwgMTk2LCAyMDIsIDE3NiwgMTksIDIwLCAKLSAgICAyMDIsIDE3NSwgMTksIDIwLCAxOTYsIDIwMiwgMTc1LCAxOSwgMjAsIDIyMywgNjgsIDIwMiwgMTc1LCAxOSwgMjAsIDIwMywgCi0gICAgMTI0LCAxOSwgMjAsIDI0OCwgODQsIDIwMywgMTI0LCAxOSwgMjAsIDE5NiwgMjAzLCAxMjQsIDE5LCAyMCwgMjE0LCAyMDYsIAotICAgIDIwMywgMTEsIDE5LCAyMCwgMjE2LCAxNTgsIDE5LCAyMCwgMjE3LCAwLCAyMTYsIDE1OCwgMTksIDIwLCAxOTYsIDIyNywgCi0gICAgMjM0LCAxOSwgMjAsIDIxNiwgMjE1LCAxOSwgMjAsIDIxNiwgNTcsIDE5LCAyMCwgMjE2LCAzLCAxOSwgMjAsIDIxNSwgMjI3LCAKLSAgICAxOSwgMjAsIDIxNSwgMjA4LCAxOSwgMjAsIDE5NiwgMjI3LCA0OSwgMTksIDIwLCAyMTYsIDIyMCwgMTksIDIwLCAyMTYsIAotICAgIDIxNiwgMTksIDIwLCAxOTYsIDIyOCwgMTEzLCAxOSwgMjAsIDIxNSwgMTEwLCAxOSwgMjAsIDE5NiwgMjE1LCAxMTAsIDE5LCAKLSAgICAyMCwgMTQ2LCAxOSwgMjAsIDE5NiwgMTQ2LCAxOSwgMjAsIDE3NCwgMTQ2LCAxOSwgMjAsIDI0MCwgNjAsIDE5LCAyMCwgCi0gICAgMjQwLCAxMDUsIDE5LCAyMCwgMjQwLCAyNiwgMTksIDIwLCAyNDAsIDEyLCAxOSwgMjAsIDIzOSwgMTg2LCAxOSwgMjAsIAotICAgIDIzOSwgMTc1LCAxOSwgMjAsIDI0MCwgMTA4LCAxOSwgMjAsIDI0MCwgMTA3LCAxOSwgMjAsIDIzOSwgODUsIDE5LCAyMCwgCi0gICAgMTk2LCAyMzksIDg1LCAxOSwgMjAsIDI0MCwgMTc0LCAxOSwgMjAsIDIwOSwgOTIsIDE5LCAyMCwgMjIzLCAxNjEsIDIwOSwgCi0gICAgOTIsIDE5LCAyMCwgMjA5LCA3MCwgMTksIDIwLCAyMjMsIDE2MSwgMjA5LCA3MCwgMTksIDIwLCAyMDksIDY0LCAxOSwgMjAsIAotICAgIDIyMywgMTYxLCAyMDksIDY0LCAxOSwgMjAsIDIwOSwgNDcsIDE5LCAyMCwgMjA5LCA0MiwgMTksIDIwLCAyMDksIDEwOCwgCi0gICAgMTksIDIwLCAyMDksIDEwNywgMTksIDIwLCAyMDksIDEyLCAxOSwgMjAsIDE5NiwgMjA5LCAxMiwgMTksIDIwLCAyMDksIAotICAgIDExMCwgMTksIDIwLCAyMDcsIDIyNywgMTksIDIwLCAyMDcsIDIyNSwgMTksIDIwLCAyMDcsIDIyNCwgMTksIDIwLCAyMDcsIAotICAgIDIyOSwgMTksIDIwLCAyMDcsIDIzMCwgMTksIDIwLCAyMDcsIDEyNCwgMTksIDIwLCAyMDcsIDEyMywgMTksIDIwLCAyMDcsIAotICAgIDEyMiwgMTksIDIwLCAyMDcsIDEyNiwgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDY3LCAxOSwgMjAsIDIyMSwgMzksIDIzNywgMywgCi0gICAgMTksIDIwLCAyMjEsIDM5LCAyMzYsIDIzOSwgMTksIDIwLCAyMjEsIDM5LCAyMzYsIDEzNiwgMTksIDIwLCAyMjEsIDM5LCAKLSAgICAyMzYsIDExNywgMTksIDIwLCAyMjEsIDM5LCAxNTIsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCAxNTcsIDE5LCAyMCwgMjIxLCAKLSAgICAzOSwgMjM3LCAxNzEsIDE5LCAyMCwgMjIxLCAzOCwgMjM3LCAxNzEsIDE5LCAyMCwgMjM2LCAyMjYsIDE5LCAyMCwgMjE3LCAKLSAgICAxMjIsIDE5LCAyMCwgMjE3LCA4OCwgMTksIDIwLCAyMTcsIDgzLCAxOSwgMjAsIDIxNywgNzcsIDE5LCAyMCwgMjE3LCA3MiwgCi0gICAgMTksIDIwLCAyMTcsIDEyNiwgMTksIDIwLCAyMTcsIDEyNSwgMTksIDIwLCAyMTcsIDEzNCwgMTksIDIwLCAyMDgsIDE4NiwgCi0gICAgMTksIDIwLCAyMDgsIDE4NCwgMTksIDIwLCAyMDgsIDE4MywgMTksIDIwLCAyMDgsIDE4NywgMTksIDIwLCAxOTYsIDIxNiwgCi0gICAgMTU4LCAxOSwgMjAsIDE5NiwgMjE2LCA1NywgMTksIDIwLCAxOTYsIDIxNSwgMjI3LCAxOSwgMjAsIDE5NiwgMjE2LCAyMjAsIAotICAgIDE5LCAyMCwgMjIyLCAyMDEsIDE5LCAyMCwgMjIyLCAxNTEsIDE5LCAyMCwgMjIyLCAxNDcsIDE5LCAyMCwgMjIyLCAxMjgsIAotICAgIDE5LCAyMCwgMjIyLCAxMjMsIDE5LCAyMCwgMjIyLCAyMDMsIDE5LCAyMCwgMjIyLCAyMDIsIDE5LCAyMCwgMjIyLCAyMDUsIAotICAgIDE5LCAyMCwgMjIxLCAyMjAsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgNDMsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgMTEsIAotICAgIDE5LCAyMCwgMjE0LCAyMDYsIDIxMiwgMjQyLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDkwLCAxOSwgMjAsIDIwMywgMjQyLCAKLSAgICAyMDksIDkyLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDcwLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDQ3LCAxOSwgMjAsIAotICAgIDIwMywgMjQyLCAyMDksIDEwOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMTAsIDE5LCAyMCwgMjI3LCAxNTUsIDE5LCAyMCwgCi0gICAgMjI3LCAxNTQsIDE5LCAyMCwgMjI3LCAxNTMsIDE5LCAyMCwgMjI3LCAxNTIsIDE5LCAyMCwgMjI3LCAxNjEsIDE5LCAyMCwgCi0gICAgMjI3LCAxNjAsIDE5LCAyMCwgMjI3LCAxNjIsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgOTIsIDE5LCAyMCwgMjA5LCAxMDksIAotICAgIDIwOSwgNzAsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgNjQsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgNDcsIDE5LCAyMCwgCi0gICAgMjA5LCAxMDksIDIwOSwgNDIsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgMTA4LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIAotICAgIDEwNywgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAxMTAsIDE5LCAyMCwgMjUxLCA1MCwgMjQ5LCAyNTUsIDE5LCAyMCwgMjQ4LCAKLSAgICA0MCwgNzQsIDE5LCAyMCwgMjQ4LCA0MCwgNzUsIDE5LCAyMCwgMjQ4LCA0MCwgNzgsIDE5LCAyMCwgMjQ4LCA0MCwgNjMsIAotICAgIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCA2MiwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDMwLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgCi0gICAgMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDExMSwgMTksIDIwLCAyNDgsIDQwLCAyMjIsIDI0MCwgMTksIDIwLCAyNDgsIDQwLCAKLSAgICAyMjIsIDEwMCwgMTksIDIwLCAyNDgsIDQwLCAyMjEsIDE5MSwgMTksIDIwLCAyNDgsIDQwLCAyMDEsIDIwMSwgMTksIDIwLCAKLSAgICAyNDgsIDQwLCAyMjksIDIwMSwgMTksIDIwLCAyNDgsIDQwLCAyMjksIDEwMCwgMTksIDIwLCAyNDgsIDQwLCAyMjksIDI2LCAKLSAgICAxOSwgMjAsIDI0OCwgNDAsIDE3MywgMTksIDIwLCAyMTQsIDIwNiwgMjM3LCA2NywgMTksIDIwLCAyMTQsIDIwNiwgMjM3LCAKLSAgICAzLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzYsIDEzNiwgMTksIDIwLCAyMTQsIDIwNiwgMTUyLCAxOSwgMjAsIDg4LCAyMzgsIAotICAgIDg3LCAxOSwgMjAsIDg4LCAyMzgsIDkxLCAxOSwgMjAsIDg4LCAyMzgsIDEwNSwgMTksIDIwLCA4OCwgMjM4LCAxMDQsIDE5LCAKLSAgICAyMCwgODgsIDIzOCwgOTMsIDE5LCAyMCwgODgsIDIzOCwgMTE5LCAxOSwgMjAsIDg4LCAyMTUsIDE0NSwgMTksIDIwLCA4OCwgCi0gICAgMjE1LCAyMjcsIDE5LCAyMCwgODgsIDIxNiwgMTU4LCAxOSwgMjAsIDg4LCAyMTYsIDEzNSwgMTksIDIwLCA4OCwgMjE2LCAKLSAgICA1NywgMTksIDIwLCA4OCwgMjE2LCAyMjAsIDE5LCAyMCwgODgsIDIwMywgMjE3LCAxOSwgMjAsIDg4LCAyMDQsIDAsIDE5LCAKLSAgICAyMCwgODgsIDIwNCwgNjIsIDE5LCAyMCwgODgsIDIwNCwgNTUsIDE5LCAyMCwgODgsIDIwNCwgMzAsIDE5LCAyMCwgODgsIAotICAgIDIwNCwgMTExLCAxOSwgMjAsIDg4LCAyMzUsIDI0NywgMTksIDIwLCA4OCwgMjM1LCAyNDgsIDE5LCAyMCwgODgsIDIzNSwgCi0gICAgMjUxLCAxOSwgMjAsIDg4LCAyMzUsIDI1MCwgMTksIDIwLCA4OCwgMjM1LCAyNDksIDE5LCAyMCwgODgsIDIzNSwgMjU0LCAKLSAgICAxOSwgMjAsIDg4LCAyMDksIDIyLCAxOSwgMjAsIDg4LCAyMDksIDQ3LCAxOSwgMjAsIDg4LCAyMDksIDkyLCAxOSwgMjAsIAotICAgIDg4LCAyMDksIDkwLCAxOSwgMjAsIDg4LCAyMDksIDcwLCAxOSwgMjAsIDg4LCAyMDksIDEwOCwgMTksIDIwLCA4OCwgMjA3LCAKLSAgICAyMDgsIDE5LCAyMCwgODgsIDIwNywgMjE4LCAxOSwgMjAsIDg4LCAyMDcsIDIzNiwgMTksIDIwLCA4OCwgMjA3LCAyMzUsIAotICAgIDE5LCAyMCwgODgsIDIwNywgMjIwLCAxOSwgMjAsIDg4LCAyMDcsIDI0MSwgMTksIDIwLCA4OCwgMjE3LCAxOTEsIDE5LCAyMCwgCi0gICAgODgsIDIxOCwgNjksIDE5LCAyMCwgODgsIDIxOSwgMzQsIDE5LCAyMCwgODgsIDIxOSwgMjMsIDE5LCAyMCwgODgsIDIxOCwgCi0gICAgMTY3LCAxOSwgMjAsIDg4LCAxODUsIDE5LCAyMCwgODgsIDIxOSwgMTg0LCAxOSwgMjAsIDg4LCAyMzcsIDIzMCwgMTksIDIwLCAKLSAgICA4OCwgMjM4LCAzOSwgMTksIDIwLCA4OCwgMjM4LCAxOTAsIDE5LCAyMCwgODgsIDIzOCwgMTgyLCAxOSwgMjAsIDg4LCAyMzgsIAotICAgIDgxLCAxOSwgMjAsIDg4LCAyMzksIDgsIDE5LCAyMCwgODgsIDIyOSwgMTA5LCAxOSwgMjAsIDg4LCAyMjksIDExNSwgMTksIAotICAgIDIwLCA4OCwgMjI5LCAxMjksIDE5LCAyMCwgODgsIDIyOSwgMTI4LCAxOSwgMjAsIDg4LCAyMjksIDEyMiwgMTksIDIwLCA4OCwgCi0gICAgMjI5LCAxNDQsIDE5LCAyMCwgODgsIDIyOSwgNDIsIDE5LCAyMCwgODgsIDIyOSwgNDMsIDE5LCAyMCwgODgsIDIyOSwgNDYsIAotICAgIDE5LCAyMCwgODgsIDIyOSwgNDUsIDE5LCAyMCwgODgsIDIyOSwgNDQsIDE5LCAyMCwgODgsIDIyOSwgNDcsIDE5LCAyMCwgCi0gICAgODgsIDIyOSwgNDgsIDE5LCAyMCwgODgsIDIyMSwgODQsIDE5LCAyMCwgODgsIDIyMSwgMTkxLCAxOSwgMjAsIDg4LCAyMjIsIAotICAgIDI0MCwgMTksIDIwLCA4OCwgMjIyLCAyMzUsIDE5LCAyMCwgODgsIDIyMiwgMTAwLCAxOSwgMjAsIDg4LCAyMDEsIDIwMSwgCi0gICAgMTksIDIwLCA4OCwgMjIzLCAyNDYsIDE5LCAyMCwgODgsIDIyNCwgODIsIDE5LCAyMCwgODgsIDIyNSwgMjAsIDE5LCAyMCwgCi0gICAgODgsIDIyNSwgOCwgMTksIDIwLCA4OCwgMjI0LCAxNTUsIDE5LCAyMCwgODgsIDE5MiwgMTksIDIwLCA4OCwgMjAyLCAyMTMsIAotICAgIDE5LCAyMCwgODgsIDIwMiwgMjQ3LCAxOSwgMjAsIDg4LCAyMDMsIDUyLCAxOSwgMjAsIDg4LCAyMDMsIDQ5LCAxOSwgMjAsIAotICAgIDg4LCAyMDMsIDExLCAxOSwgMjAsIDg4LCAxOTgsIDE5LCAyMCwgODgsIDIzMCwgODIsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgCi0gICAgODIsIDE5LCAyMCwgODgsIDIzMCwgMTAxLCAxOSwgMjAsIDg4LCAyMzAsIDE2MSwgMTksIDIwLCA4OCwgMjMwLCAxNTksIDE5LCAKLSAgICAyMCwgODgsIDIzMCwgMTQxLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIDE0MSwgMTksIDIwLCA4OCwgMjMwLCAxODEsIDE5LCAKLSAgICAyMCwgODgsIDIzMCwgMTE0LCAxOSwgMjAsIDg4LCAyMzAsIDExOCwgMTksIDIwLCA4OCwgMjMwLCAxMjgsIDE5LCAyMCwgODgsIAotICAgIDIzMCwgMTI3LCAxOSwgMjAsIDg4LCAyMzAsIDEyNiwgMTksIDIwLCA4OCwgMjMwLCAxMjksIDE5LCAyMCwgODgsIDIyNiwgCi0gICAgMjM5LCAxOSwgMjAsIDg4LCAyMjcsIDQ5LCAxOSwgMjAsIDg4LCAyMjcsIDIzNCwgMTksIDIwLCA4OCwgMjI3LCAyMjYsIDE5LCAKLSAgICAyMCwgODgsIDIyNywgMTQ4LCAxOSwgMjAsIDg4LCAyMjgsIDExMywgMTksIDIwLCA4OCwgMjQzLCAxMTcsIDE5LCAyMCwgODgsIAotICAgIDI0MywgMTE4LCAxOSwgMjAsIDg4LCAyNDMsIDEyMywgMTksIDIwLCA4OCwgMjQzLCAxMjIsIDE5LCAyMCwgODgsIDI0MywgCi0gICAgMTE5LCAxOSwgMjAsIDg4LCAyNDMsIDEyNCwgMTksIDIwLCA4OCwgMjI3LCAxNTEsIDE5LCAyMCwgODgsIDIyNywgMTUzLCAKLSAgICAxOSwgMjAsIDg4LCAyMjcsIDE1NywgMTksIDIwLCA4OCwgMjI3LCAxNTYsIDE5LCAyMCwgODgsIDIyNywgMTU1LCAxOSwgMjAsIAotICAgIDg4LCAyMjcsIDE2MSwgMTksIDIwLCA4OCwgMjA4LCAxODEsIDE5LCAyMCwgODgsIDIwOCwgMTgzLCAxOSwgMjAsIDg4LCAKLSAgICAyMDgsIDE4NiwgMTksIDIwLCA4OCwgMjA4LCAxODUsIDE5LCAyMCwgODgsIDIwOCwgMTg0LCAxOSwgMjAsIDg4LCAyMDgsIAotICAgIDE4NywgMTksIDIwLCA4OCwgMjA4LCAxNzYsIDE5LCAyMCwgODgsIDIwOCwgMTc3LCAxOSwgMjAsIDg4LCAyMDgsIDE4OSwgCi0gICAgMTksIDIwLCA4OCwgMjA4LCAxODgsIDE5LCAyMCwgODgsIDIwOCwgMTc4LCAxOSwgMjAsIDg4LCAyMDgsIDE5MCwgMTksIDIwLCAKLSAgICA4OCwgMjAyLCA2LCAxOSwgMjAsIDg4LCAyMDIsIDE3LCAxOSwgMjAsIDg4LCAyMDIsIDkyLCAxOSwgMjAsIDg4LCAyMDIsIAotICAgIDkwLCAxOSwgMjAsIDg4LCAyMDIsIDM5LCAxOSwgMjAsIDg4LCAyMDIsIDExNiwgMTksIDIwLCA4OCwgMjAyLCAxNTksIDE5LCAKLSAgICAyMCwgODgsIDgxLCAyMDIsIDE1OSwgMTksIDIwLCA4OCwgMjQxLCAyNDIsIDE5LCAyMCwgODgsIDI0MSwgMjQzLCAxOSwgMjAsIAotICAgIDg4LCAyNDEsIDI1MiwgMTksIDIwLCA4OCwgMjQxLCAyNTEsIDE5LCAyMCwgODgsIDI0MSwgMjQ2LCAxOSwgMjAsIDg4LCAKLSAgICAyNDEsIDI1NSwgMTksIDIwLCA4OCwgMjExLCAxMCwgMTksIDIwLCA4OCwgMjEyLCAxMywgMTksIDIwLCA4OCwgMjE0LCAxNzcsIAotICAgIDE5LCAyMCwgODgsIDIxNCwgMTY1LCAxOSwgMjAsIDg4LCAyMTIsIDE2MiwgMTksIDIwLCA4OCwgMjE1LCAzNiwgMTksIDIwLCAKLSAgICA4OCwgMjEyLCAxOTksIDE5LCAyMCwgODgsIDIxMiwgMjQyLCAxOSwgMjAsIDg4LCAyMTMsIDQzLCAxOSwgMjAsIDg4LCAyMTMsIAotICAgIDQxLCAxOSwgMjAsIDg4LCAyMTMsIDExLCAxOSwgMjAsIDg4LCAyMTMsIDkwLCAxOSwgMjAsIDg4LCAyMTMsIDkyLCAxOSwgCi0gICAgMjAsIDg4LCAyMDcsIDI0OSwgMTksIDIwLCA4OCwgMjA3LCAyNTMsIDE5LCAyMCwgODgsIDIwOCwgMTQsIDE5LCAyMCwgODgsIAotICAgIDIwOCwgMTMsIDE5LCAyMCwgODgsIDIwNywgMjU1LCAxOSwgMjAsIDg4LCAyMDgsIDIwLCAxOSwgMjAsIDg4LCAyNDYsIDk4LCAKLSAgICAxOSwgMjAsIDg4LCAyNDYsIDExNiwgMTksIDIwLCA4OCwgMjQ2LCAxNzAsIDE5LCAyMCwgODgsIDI0NiwgMTY2LCAxOSwgMjAsIAotICAgIDg4LCAyNDYsIDE0MiwgMTksIDIwLCA4OCwgMjQ2LCAxOTksIDE5LCAyMCwgODgsIDIwNywgMjExLCAxOSwgMjAsIDg4LCAKLSAgICAyMDcsIDIxMiwgMTksIDIwLCA4OCwgMjA3LCAyMTUsIDE5LCAyMCwgODgsIDIwNywgMjE0LCAxOSwgMjAsIDg4LCAyMDcsIAotICAgIDIxMywgMTksIDIwLCA4OCwgMjA3LCAyMTYsIDE5LCAyMCwgMjQ2LCAxNDMsIDU0LCAxOSwgMjAsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCAxOSwgMjAsIDIxNywgMTE4LCAxOSwgMjAsIDIyMiwgMTk5LCAxOSwgMjAsIDIyMSwgMjE3LCAxOSwgMjAsIDIyMSwgCi0gICAgMjE2LCAxOSwgMjAsIDIyMSwgMjE1LCAxOSwgMjAsIDIyMSwgMjE0LCAxOSwgMjAsIDIyMSwgMjE5LCAxOSwgMjAsIDIyMSwgCi0gICAgMjE4LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDEwLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDksIDE5LCAyMCwgMjAzLCAKLSAgICAyNDIsIDIwOSwgOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA3LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDYsIDE5LCAyMCwgCi0gICAgMjAzLCAyNDIsIDIwOSwgMTMsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTIsIDE5LCAyMCwgMjAzLCAyNDIsIDQ2LCAyMDksIAotICAgIDExMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDE0NCwgMjIwLCA2NCwgMjExLCAyMjksIDgyLCAyMjAsIDY0LCAxLCAyNDgsIAotICAgIDEzMiwgMjIwLCA2NCwgMSwgMjI2LCAyMjUsIDIyMCwgNjQsIDEsIDI0MCwgNTcsIDIyMCwgNjQsIDEsIDIxNSwgMTYsIDIyMCwgCi0gICAgNjQsIDEsIDIyMiwgNTYsIDIyMCwgNjQsIDEsIDIwNywgMzYsIDIyMCwgNjQsIDEsIDI0NCwgMTg2LCAyMjAsIDY0LCAxLCAKLSAgICAyMDgsIDIxNCwgMjIwLCA2NCwgMSwgMjQ1LCAyNDUsIDIyMCwgNjQsIDEsIDI0NiwgMjI1LCAyMjAsIDY0LCAxLCAyMjMsIAotICAgIDIzMywgMjIwLCA2NCwgMSwgMjM4LCAyMCwgMjIwLCA2NCwgMSwgMjIyLCAxODksIDIyMCwgNjQsIDEsIDIxMSwgNTQsIDIyMCwgCi0gICAgNjQsIDEsIDIxNSwgMTM4LCAyMjAsIDY0LCAxLCAyNTEsIDYxLCAyMjAsIDY0LCAxLCAyMjAsIDIyLCAyMjAsIDY0LCAxLCAKLSAgICAyMDYsIDIxMCwgMjIwLCA2NCwgMSwgMjQxLCAxODcsIDIyMCwgNjQsIDEsIDIzMCwgMjMzLCAyMjAsIDY0LCAxLCAyNDEsIAotICAgIDE4OCwgMjIwLCA2NCwgMSwgMjE5LCAyNDQsIDIyMCwgNjQsIDEsIDIwNywgMTUsIDIyMCwgNjQsIDEsIDIzMSwgODksIDIyMCwgCi0gICAgNjQsIDEsIDI0MSwgMTg1LCAyMjAsIDY0LCAxLCAyMTksIDEzLCAyMjAsIDY0LCAyNDAsIDU2LCA4MiwgMjIwLCA2NCwgMjE2LCAKLSAgICA3MywgMjQwLCA1NiwgODIsIDE5NywgMSwgMjQwLCA0NiwgMjQwLCAzOCwgMjQwLCA2MSwgMjQwLCAxNzQsIDE5NywgMSwgCi0gICAgMjA2LCAxNjQsIDE5NywgMSwgMjA2LCAxOTUsIDIwNiwgMjExLCA2OCwgMTk3LCAxLCAyMDIsIDIxNiwgMTk3LCAxLCAyMDMsIAotICAgIDEyNCwgMTk3LCAxLCAyMDQsIDE0NCwgMTk3LCAxLCAyMDksIDE1LCAyMDksIDE0LCAyMDksIDQwLCAxOTcsIDEsIDI0MCwgCi0gICAgMjQzLCAxOTcsIDEsIDI1MCwgMTk5LCA2MywgMTk3LCAxLCAyMTksIDIyOCwgNzgsIDE5NywgMSwgMjUxLCAxNDIsIDYzLCAKLSAgICAxOTcsIDEsIDI1MSwgOTMsIDE5NywgMSwgMjI3LCAyNCwgNzgsIDE5NywgMSwgMjEyLCAyMjEsIDc4LCAxOTcsIDEsIDc4LCAKLSAgICAxOTcsIDEsIDIyMCwgNzMsIDE5NywgMSwgMjIwLCAzMSwgMTk3LCAxLCAyMTYsIDE5NSwgMjE2LCAyMDgsIDIxNiwgMTIwLCAKLSAgICAxNDYsIDE5NywgMSwgMjI5LCAyMTYsIDE5NywgMSwgMjQ2LCAyMjEsIDE5NywgMSwgMjI5LCAyMTcsIDIzMCwgNTQsIDE5NywgCi0gICAgMSwgMjM5LCA3NSwgMTk3LCAxLCAyNDEsIDc4LCAxOTcsIDEsIDIzOCwgMTg1LCAyMzcsIDE3NywgMjM5LCA3NSwgMTk3LCAxLCAKLSAgICAyMzgsIDIyNCwgMTk3LCAxLCAyMDMsIDIwOSwgMjAzLCAyMDAsIDIwNCwgMTQ0LCAxOTcsIDEsIDIzNywgMTQ5LCAyMzcsIAotICAgIDE3MSwgMTk3LCAxLCAyMzcsIDE1MywgMjM3LCAxNzEsIDE5NywgMSwgMjI3LCAyNiwgMjM3LCAxNzEsIDE5NywgMSwgMjEyLCAKLSAgICAyMjQsIDIzNywgMTcxLCAxOTcsIDEsIDIyMywgNjMsIDIyMSwgMiwgMjIzLCA2NCwgMjIzLCAxNjMsIDE5NywgMSwgMjEyLCAKLSAgICAyMjIsIDIyMywgMTYzLCAxOTcsIDEsIDI0MiwgODAsIDE5NywgMSwgMjMwLCAyMTIsIDIzMCwgMjE2LCAyMzAsIDIwMywgNzUsIAotICAgIDE5NywgMSwgNzQsIDE5NywgMSwgMjMwLCAxNTIsIDIzMCwgMTg0LCAxOTcsIDEsIDIzOCwgMTY5LCAxOTcsIDEsIDIyNywgCi0gICAgMjcsIDI1MSwgMTA5LCAxOTcsIDEsIDIxMiwgMjI2LCA2MywgMTk3LCAxLCAyMzAsIDE5NSwgMjQxLCA1MSwgMTk3LCAxLCAKLSAgICAyMTgsIDIyNiwgMjE4LCAyNTEsIDIxOSwgMTg0LCAxOTcsIDEsIDI1MSwgMjMsIDI0MSwgNDksIDE5NywgMSwgMjExLCAyMzQsIAotICAgIDE5NCwgMTk3LCAxLCAyMTIsIDE0NiwgMjI3LCAyMywgMTk0LCAxOTcsIDEsIDIxMiwgMjIwLCAxOTQsIDE5NywgMSwgMjQ3LCAKLSAgICAxMjUsIDE5NywgMSwgMjAyLCAxNTksIDE5NywgMSwgMjA4LCAxOTUsIDIwOCwgMjA3LCAyMDcsIDEwOCwgMjEwLCA2OSwgCi0gICAgMTk3LCAxLCAyMTIsIDIxOSwgMjEwLCA2OSwgMTk3LCAxLCAyNDUsIDUxLCAxOTcsIDEsIDI0OCwgMTExLCAyNDgsIDExNCwgCi0gICAgMjQ4LCA0NiwgMjQ5LCAyNTUsIDE5NywgMSwgMjEyLCAyMjUsIDI0OSwgMjU1LCAxOTcsIDEsIDI0MiwgNzksIDE5NywgMSwgCi0gICAgMjIwLCAyLCAxOTcsIDEsIDI0MSwgMTQ2LCAyNDEsIDE0OCwgNzQsIDE5NywgMSwgMjI1LCAxMTMsIDIyNSwgMTIzLCAyMjYsIAotICAgIDE4NSwgMTk3LCAxLCAyMjcsIDI1LCAyMjYsIDE4NSwgMTk3LCAxLCAyMTIsIDIyMywgMjI2LCAxODUsIDE5NywgMSwgMjI3LCAKLSAgICAyNDksIDIyOCwgOTEsIDIyNywgMzQsIDE1OSwgMTk3LCAxLCAyNDIsIDgxLCAxOTcsIDEsIDIzMSwgMjMsIDE5NywgMSwgCi0gICAgMjMxLCAyNCwgMTk3LCAxLCAyNDQsIDIwMCwgMjQ0LCAyMDYsIDI0NSwgNTEsIDE5NywgMSwgMjE5LCAyMjIsIDI0MCwgMjQyLCAKLSAgICA3OCwgMTk3LCAxLCAyNDEsIDE4MywgMTk3LCAxLCAyMzAsIDIzMiwgMTk3LCAxLCAyNDUsIDcxLCAxOTcsIDEsIDI0NywgNzUsIAotICAgIDE5NywgMSwgMjQ2LCAyMzcsIDE5NywgMSwgMjExLCA5OSwgMTk3LCAxLCAyMjcsIDIyLCAxOTcsIDEsIDIxMiwgMjE4LCAKLSAgICAxOTcsIDEsIDIzNSwgMTYxLCAxOTcsIDEsIDIxNywgMTM0LCAxOTcsIDEsIDIwMywgMTk2LCAxOTcsIDIxMiwgMTIwLCAyMTcsIAotICAgIDE3OCwgMTk3LCAyMjMsIDIyNiwgMjE3LCAxNzgsIDE5NywgMjQ1LCAxMzEsIDIxNywgMTc4LCAxOTcsIDI1MCwgMTA4LCA5NywgCi0gICAgMTk3LCAyMDcsIDE2MiwgOTcsIDE5NywgMjQ4LCAxMzAsIDk3LCAxOTcsIDEsIDIzMCwgNTQsIDE5NywgMSwgMjEzLCA5MiwgCi0gICAgMTk3LCAxLCAyMjAsIDE4LCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyMTksIDIyNywgMTk3LCAxLCAyMzksIDEzMSwgCi0gICAgMjQ3LCAyMCwgMjMwLCAyMTUsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDI0MSwgMTQ3LCAxOTcsIDEsIDIzOSwgMTMxLCAKLSAgICAyNDcsIDIwLCAyNTEsIDE0MSwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjUxLCA5MywgMjA5LCAyNTQsIDEsIDYzLCAKLSAgICAyMDksIDI1NCwgMSwgNzUsIDIwOSwgMjU0LCAxLCA2OCwgMjA5LCAyNTQsIDEsIDE3MywgMjA5LCAyNTQsIDEsIDIzOSwgOCwgCi0gICAgMjA5LCAyNTQsIDEsIDIyMiwgMjAzLCAyMDksIDI1NCwgMSwgMjEwLCAyMiwgMjA5LCAyNTQsIDEsIDI0NCwgMjEyLCAyMDksIAotICAgIDI1NCwgMSwgMjAxLCAyMDEsIDIwOSwgMjU0LCAxLCAxODUsIDIwOSwgMjU0LCAxLCAyNDksIDMyLCAyMDksIDI1NCwgMSwgCi0gICAgMTkyLCAyMDksIDI1NCwgMSwgMTk4LCAyMDksIDI1NCwgMSwgMjI4LCAxMTMsIDIwOSwgMjU0LCAxLCAyMDQsIDExMSwgMjA5LCAKLSAgICAyNTQsIDEsIDIxNSwgMzYsIDIwOSwgMjU0LCAxLCAxNTIsIDIwOSwgMjU0LCAyMiwgMiwgNzUsIDIwOSwgMjU0LCAyMiwgMiwgCi0gICAgNjgsIDIwOSwgMjU0LCAyLCAyMDUsIDIwNCwgMjM3LCA5NiwgMSwgNjMsIDIzNywgOTYsIDEsIDc1LCAyMzcsIDk2LCAxLCAKLSAgICA2OCwgMjM3LCA5NiwgMSwgMTczLCAyMzcsIDk2LCAxLCAyMzksIDgsIDIzNywgOTYsIDEsIDIyMiwgMjAzLCAyMzcsIDk2LCAKLSAgICAxLCAyMTAsIDIyLCAyMzcsIDk2LCAxLCAyNDQsIDIxMiwgMjM3LCA5NiwgMSwgMjAxLCAyMDEsIDIzNywgOTYsIDEsIDE4NSwgCi0gICAgMjM3LCA5NiwgMSwgMjQ5LCAzMiwgMjM3LCA5NiwgMSwgMTkyLCAyMzcsIDk2LCAxLCAxOTgsIDIzNywgOTYsIDEsIDIxNiwgCi0gICAgMjIwLCAyMzcsIDk2LCAxLCAyMjgsIDExMywgMjM3LCA5NiwgMSwgMjA0LCAxMTEsIDIzNywgOTYsIDEsIDIxNSwgMzYsIAotICAgIDIzNywgOTYsIDEsIDE1MiwgMjM3LCA5NiwgMjIsIDIsIDc1LCAyMzcsIDk2LCAyMiwgMiwgNjgsIDIzNywgOTYsIDIsIDIxOSwgCi0gICAgMTI0LCAyMTgsIDE4NSwgMjEyLCAxMjAsIDIxNywgMTc4LCAyMTgsIDE4NSwgNTIsIDIxNywgMTc4LCAyNDcsIDE4NSwgMSwgCi0gICAgNjMsIDI0NywgMTg1LCAxLCA3NSwgMjQ3LCAxODUsIDEsIDY4LCAyNDcsIDE4NSwgMSwgMTczLCAyNDcsIDE4NSwgMSwgMjM5LCAKLSAgICA4LCAyNDcsIDE4NSwgMSwgMjIyLCAyMDMsIDI0NywgMTg1LCAxLCAyMTAsIDIyLCAyNDcsIDE4NSwgMSwgMjQ0LCAyMTIsIAotICAgIDI0NywgMTg1LCAxLCAyMDEsIDIwMSwgMjQ3LCAxODUsIDEsIDE4NSwgMjQ3LCAxODUsIDEsIDI0OSwgMzIsIDI0NywgMTg1LCAKLSAgICAxLCAxOTIsIDI0NywgMTg1LCAxLCAxOTgsIDI0NywgMTg1LCAxLCAyMTYsIDIyMCwgMjQ3LCAxODUsIDEsIDIyOCwgMTEzLCAKLSAgICAyNDcsIDE4NSwgMSwgMjA0LCAxMTEsIDI0NywgMTg1LCAxLCAyMTUsIDM2LCAyNDcsIDE4NSwgMSwgMTUyLCAyNDcsIDE4NSwgCi0gICAgMjIsIDIsIDc1LCAyNDcsIDE4NSwgMjIsIDIsIDY4LCAyMDksIDI1MywgMSwgNjMsIDIwOSwgMjUzLCAxLCA3NSwgMjA5LCAKLSAgICAyNTMsIDEsIDY4LCAyMDksIDI1MywgMSwgMTczLCAyMDksIDI1MywgMSwgMjM5LCA4LCAyMDksIDI1MywgMSwgMjIyLCAyMDMsIAotICAgIDIwOSwgMjUzLCAxLCAyMTAsIDIyLCAyMDksIDI1MywgMSwgMjQ0LCAyMTIsIDIwOSwgMjUzLCAxLCAyMDEsIDIwMSwgMjA5LCAKLSAgICAyNTMsIDEsIDE4NSwgMjA5LCAyNTMsIDEsIDI0OSwgMzIsIDIwOSwgMjUzLCAxLCAxOTIsIDIwOSwgMjUzLCAxLCAxOTgsIAotICAgIDIwOSwgMjUzLCAxLCAyMjgsIDExMywgMjA5LCAyNTMsIDEsIDIwNCwgMTExLCAyMDksIDI1MywgMSwgMjE1LCAzNiwgMjA5LCAKLSAgICAyNTMsIDIyLCAyLCA3NSwgMjA5LCAyNTMsIDIyLCAyLCA2OCwgODUsIDEsIDE3MywgODUsIDEsIDIyOSwgMTQ0LCA4NSwgMSwgCi0gICAgMjI5LCAyNiwgODUsIDEsIDIyOSwgMTE1LCA4NSwgMSwgMjIyLCAxMjgsIDg1LCAxLCAyNDcsIDkyLCA4NSwgMSwgMjQ2LCAKLSAgICAxOTksIDg1LCAxLCAyNDUsIDI1NCwgODUsIDEsIDI0NiwgMTE2LCA4NSwgMSwgMjIwLCAyMzMsIDg1LCAxLCAyNDQsIDIxMiwgCi0gICAgODUsIDEsIDIwNywgMjI5LCA4NSwgMSwgMjQzLCAxMTMsIDg1LCAxLCAyMDcsIDIyNCwgODUsIDEsIDIyMSwgMTk3LCA4NSwgCi0gICAgMSwgMjEwLCAyMiwgODUsIDEsIDIwOSwgMTA4LCA4NSwgMSwgMTM1LCA4NSwgMSwgMjA5LCA0NywgODUsIDEsIDIyMSwgMTkxLCAKLSAgICA4NSwgMSwgMjQ5LCAzMiwgODUsIDEsIDIxOCwgMjA4LCA4NSwgMSwgMjE4LCA2OSwgODUsIDEsIDIxOCwgMTgwLCA4NSwgMSwgCi0gICAgMjI0LCA4MiwgODUsIDEsIDIwMiwgMjQ3LCA4NSwgMSwgMjE1LCAyMjcsIDg1LCAxLCAyMjcsIDQ5LCA4NSwgMSwgMjA1LCAKLSAgICAxODksIDg1LCAxLCAyMTMsIDkwLCA4NSwgMSwgMjExLCAxMjQsIDg1LCAxLCAyMTUsIDM2LCA4NSwgMSwgMTUyLCA4NSwgMSwgCi0gICAgMjI4LCAxMTMsIDg1LCAxLCAyMTcsIDEyNiwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDExMiwgODUsIDIzMSwgMzYsIDIyLCAKLSAgICAyMTcsIDEyNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDg4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgODMsIDg1LCAyMzEsIAotICAgIDM2LCAyMiwgMjE3LCA2NSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDM1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMjMsIDg1LCAKLSAgICAyMzEsIDM2LCAyMiwgMjE3LCAyMiwgODUsIDIzMSwgMzYsIDIyLCAyMTUsIDEwMiwgODUsIDIzMSwgMzYsIDIyLCAyMTUsIAotICAgIDk1LCA4NSwgMjMxLCAzNiwgMjIsIDIyNiwgMTk5LCA4NSwgMjMxLCAzNiwgMjIsIDIyNiwgMTg4LCA4NSwgMjMxLCAzNiwgCi0gICAgMjIsIDIxNywgMTA2LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMTE4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgNzMsIDIwNywgCi0gICAgMTIxLCAxMDUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA3MywgMjA3LCAxMjEsIDEwOCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIAotICAgIDEwOCwgODUsIDIyLCAyMzEsIDIxLCAyNTAsIDE0OCwgODUsIDIyLCAyMzEsIDIxLCAyNTIsIDI1LCA4NSwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDg1LCAyMiwgMiwgNzUsIDg1LCAyMiwgMiwgMjMxLCA4MywgODUsIDIyLCAyLCAyMDMsIDEyNCwgODUsIDIyLCAyLCAKLSAgICAyMDIsIDE2OSwgODUsIDIyLCAyLCA2OCwgODUsIDIyLCAyLCAyMDYsIDE3OCwgODUsIDIyLCAyLCAyMDcsIDM5LCA4NSwgMjIsIAotICAgIDIsIDIyMCwgNzMsIDg1LCAyMiwgMiwgMTk4LCA4NSwgMjIsIDIsIDIzMSwgMTEwLCA4NSwgMjIsIDIsIDc0LCA4NSwgMjIsIAotICAgIDIsIDI1MSwgMTA5LCA4NSwgMjIsIDIsIDI1MSwgNjQsIDg1LCAyMiwgMiwgMjIwLCAxOCwgODUsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICA4NSwgMiwgMjIyLCA3MywgODUsIDIsIDIxNiwgMTU2LCA4NSwgMiwgMjAyLCAxODAsIDg1LCAyLCAyMjMsIDE5MCwgODUsIDIsIAotICAgIDIwOCwgNzMsIDg1LCAyLCAyNDgsIDIzMywgODUsIDIsIDIxNSwgMjIyLCA4NSwgMiwgMjA4LCAxNzEsIDg1LCAyLCAyMzAsIAotICAgIDExLCA4NSwgMiwgMjUxLCA2NiwgODUsIDIsIDIxNCwgMjQ0LCAyMTQsIDIzNywgODUsIDIsIDIwNSwgMjAxLCA4NSwgMiwgCi0gICAgMjQ1LCAyNDgsIDg1LCAyLCAyNDgsIDIwNSwgODUsIDIsIDIyOSwgMTM2LCA4NSwgMiwgMjQ4LCAyMjgsIDg1LCAyLCAyNDcsIAotICAgIDY0LCAyMTgsIDEzMCwgMjI4LCAxNzMsIDg1LCAyLCAyMjcsIDIwMywgMjA4LCAxNDgsIDg1LCAyLCAyNDgsIDEwMCwgODUsIAotICAgIDIsIDIxOCwgMTgyLCAyMjMsIDI0MywgODUsIDIsIDIyOSwgNCwgODUsIDI0NSwgOTIsIDE2LCAyMTYsIDQ5LCA4NSwgMiwgCi0gICAgMjUwLCAxNiwgODUsIDIsIDI1MCwgMzcsIDg1LCAxNywgMjAyLCA4NCwgODUsIDE3LCAxMDUsIDg1LCAxNywgMTA4LCA4NSwgCi0gICAgMTcsIDE0NywgODUsIDE3LCAxNDksIDg1LCAxNywgMTcwLCA4NSwgMTcsIDE5NSwgODUsIDE3LCAyMTMsIDExMSwgODUsIDE3LCAKLSAgICAxOTksIDg1LCAxNywgMjIyLCA2MywgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjExLCAyNTMsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIyMywgMjEwLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDEyOSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjQ4LCAxMzMsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDI0NywgMTY1LCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMTgsIDcsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgMSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjE3LCAyNTUsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgNSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjE4LCAzLCA5NCwgMjQ4LCA1OSwgOTQsIDI0MSwgMTA4LCA5NCwgMjQ1LCAyMzMsIDk0LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgOTQsIDI0NSwgMjQyLCA5NCwgMjM5LCAxNDcsIDI0MywgODMsIDk0LCAyMDgsIDE3MCwgMjEyLCA3LCAKLSAgICAyMzUsIDIyMCwgOTQsIDIxMiwgMTYwLCA0LCAyNDcsIDI0NCwgMjI1LCA4OCwgOTQsIDIyNSwgMTE5LCAyNDUsIDIzMywgOTQsIAotICAgIDIyNSwgMTE5LCAyMzksIDEwMiwgMjExLCA2MSwgOTQsIDIyMiwgNTQsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAKLSAgICAxMDUsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAxMDgsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAxNDcsIAotICAgIDk0LCAyMiwgMjEzLCAxMzAsIDk0LCAxNywgMjAyLCA4NCwgOTQsIDE3LCAxMDUsIDk0LCAxNywgMTA4LCA5NCwgMTcsIDE0NywgCi0gICAgOTQsIDE3LCAxNDksIDk0LCAxNywgMTcwLCA5NCwgMTcsIDE5NSwgOTQsIDE3LCAyMTMsIDExMSwgOTQsIDE3LCAxOTksIDk0LCAKLSAgICAxNywgMjIyLCA2MywgOTQsIDEsIDYzLCA5NCwgMSwgNzQsIDk0LCAxLCA3NSwgOTQsIDEsIDc4LCA5NCwgMSwgNjgsIDk0LCAKLSAgICAxLCAyMjAsIDczLCA5NCwgMSwgMjA3LCAyNCwgOTQsIDEsIDI0MSwgMTYxLCA5NCwgMSwgMjAxLCAyMDEsIDk0LCAxLCAyNTAsIAotICAgIDIyMywgOTQsIDEsIDI0OSwgMzIsIDk0LCAxLCAxODUsIDk0LCAxLCAyMTcsIDEyNiwgOTQsIDEsIDIzOSwgOCwgOTQsIDEsIAotICAgIDE5MiwgOTQsIDEsIDIyOCwgMTEzLCA5NCwgMSwgMjE1LCAzNiwgOTQsIDEsIDIxMywgOTAsIDk0LCAxLCAyMTAsIDIyLCA5NCwgCi0gICAgMSwgMjQ0LCAyMTIsIDk0LCAxLCAyNDYsIDE5OSwgOTQsIDEsIDIzMCwgMTgxLCA5NCwgMSwgMTk4LCA5NCwgMSwgMjE2LCAKLSAgICAyMjAsIDk0LCAxLCAyMDQsIDExMSwgOTQsIDEsIDI0MCwgMTA4LCA5NCwgMSwgMTczLCA5NCwgMSwgMjI5LCAxNDQsIDk0LCAKLSAgICAxLCAyMDgsIDIwLCA5NCwgMSwgMjAyLCAxMTYsIDk0LCAxLCAyMzcsIDE1NywgOTQsIDEsIDIwMiwgMTAsIDk0LCAxLCAyMjcsIAotICAgIDE2MSwgOTQsIDEsIDIwMiwgNjYsIDk0LCAxLCAyNDYsIDE0MiwgOTQsIDEsIDIwOCwgMTcwLCAxNjMsIDIyLCA1NCwgOTQsIAotICAgIDEsIDIwOCwgMTcwLCA3NCwgOTQsIDEsIDIwOCwgMTcwLCA3NSwgOTQsIDEsIDIwOCwgMTcwLCA3OCwgOTQsIDEsIDIwOCwgCi0gICAgMTcwLCA2OCwgOTQsIDEsIDIwOCwgMTcwLCAyMjAsIDczLCA5NCwgMSwgMjA4LCAxNzAsIDIwNywgMjQsIDk0LCAxLCAyMDgsIAotICAgIDE3MCwgMjUwLCAyMjMsIDk0LCAxLCAyMDgsIDE3MCwgMjQ5LCAzMiwgOTQsIDEsIDIwOCwgMTcwLCAxODUsIDk0LCAxLCAKLSAgICAyMDgsIDE3MCwgMjE3LCAxMjYsIDk0LCAxLCAyMDgsIDE3MCwgMjM5LCA4LCA5NCwgMSwgMjA4LCAxNzAsIDE5MiwgOTQsIDEsIAotICAgIDIwOCwgMTcwLCAyMTAsIDIyLCA5NCwgMSwgMjA4LCAxNzAsIDI0NCwgMjEyLCA5NCwgMSwgMjA4LCAxNzAsIDI0NiwgMTk5LCAKLSAgICA5NCwgMSwgMjA4LCAxNzAsIDIzMCwgMTgxLCA5NCwgMSwgMjA4LCAxNzAsIDIwOCwgMjAsIDk0LCAxLCAyMDgsIDE3MCwgCi0gICAgMTk4LCA5NCwgMSwgMjA4LCAxNzAsIDIwNCwgMTExLCA5NCwgMSwgMjA4LCAxNzAsIDE3MywgOTQsIDEsIDIwOCwgMTcwLCAKLSAgICAyMzksIDUsIDk0LCAxLCAyMDgsIDE3MCwgMjM3LCAxNTcsIDk0LCAxLCAyMDgsIDE3MCwgMjMwLCAxNDAsIDk0LCAxLCAyMDgsIAotICAgIDE3MCwgMjIyLCA5OCwgOTQsIDEsIDIwOCwgMTcwLCAyNDEsIDI1NSwgOTQsIDEsIDIxMiwgMTYwLCA3NCwgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCA3NSwgOTQsIDEsIDIxMiwgMTYwLCAyMzAsIDE5MiwgOTQsIDEsIDIxMiwgMTYwLCAyMDcsIDI0LCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDY4LCA5NCwgMSwgMjEyLCAxNjAsIDI1MCwgMjIzLCA5NCwgMSwgMjEyLCAxNjAsIDE3MywgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCAyMzksIDgsIDk0LCAxLCAyMTIsIDE2MCwgMTUyLCA5NCwgMSwgMjEyLCAxNjAsIDE4NSwgOTQsIDEsIDIxMiwgMTYwLCAKLSAgICAyMTMsIDkwLCA5NCwgMSwgMjEyLCAxNjAsIDIxMCwgMjIsIDk0LCAxLCAyMTIsIDE2MCwgMjQ0LCAyMTIsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgMjMwLCAxODEsIDk0LCAxLCAyMTIsIDE2MCwgMjQwLCAxMDgsIDk0LCAxLCAyMTIsIDE2MCwgMjM5LCA1LCA5NCwgMSwgCi0gICAgMjEyLCAxNjAsIDIzNywgMTU3LCA5NCwgMSwgMjEyLCAxNjAsIDIwOCwgMjAsIDk0LCAxLCAyMTIsIDE2MCwgMjAyLCAxMTYsIAotICAgIDk0LCAxLCAyMTIsIDE2MCwgMjE2LCAyMTYsIDk0LCAxLCAyMTIsIDE2MCwgMjQ2LCAxOTksIDk0LCAxLCAyMTIsIDE2MCwgCi0gICAgMjAyLCA4MCwgOTQsIDEsIDIyNSwgMTE5LCA3NSwgOTQsIDEsIDIyNSwgMTE5LCAxNzMsIDk0LCAxLCAyMjUsIDExOSwgMjE2LCAKLSAgICAyMjAsIDk0LCAxLCAyMjUsIDExOSwgMjQwLCAxMDgsIDk0LCAxLCAyMjUsIDExOSwgMjAyLCA4MCwgOTQsIDEsIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyNTAsIDE4MSwgMTA1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNSwgMjAwLCAxMDUsIDk0LCAxLCAKLSAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAxNzQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjA3LCAzNCwgOTQsIDEsIAotICAgIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzAsIDIzOSwgMjA3LCAzNCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDgsIDI0NSwgCi0gICAgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxMjYsIDI0OCwgMjQ1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDYzLCAKLSAgICA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDc1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE3MywgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMjIsIDIwMywgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDcsIDkyLCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIwNywgMjQxLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNywgMjI5LCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDI0NCwgMTIwLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIyMSwgMjI3LCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAyMTIsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMTg1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxOCwgMjA4LCA5NCwgMSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDIxMSwgMTY0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIDk0LCAxLCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjAyLCAxMTYsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjUxLCA3MywgOTQsIDEsIDIwOCwgMTcwLCAKLSAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDIwOCwgMTcwLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgCi0gICAgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjM4LCAxMTksIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDIyMiwgMjAzLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDcsIDkyLCA5NCwgMSwgCi0gICAgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzAsIDE0OSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIAotICAgIDI0NCwgMjA3LCAyNDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMTA0LCA5NCwgMSwgMjI1LCAKLSAgICAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIAotICAgIDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMSwgMTY0LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyNDUsIDY1LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCA5NCwgCi0gICAgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDExNiwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNjIsIAotICAgIDY4LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE2MiwgMTk4LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgCi0gICAgMjQ0LCAyNDgsIDk4LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMjAxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMjcsIDE2MSwgMTksIDIwLCAyMTksIDE4OCwgMTksIDIwLCAyNTAsIDgsIDE5LCAyMCwgMjUxLCAKLSAgICAyMzYsIDE5LCAyMCwgMjA0LCA2NSwgMTksIDIwLCAyMTgsIDEzLCAxOSwgMjAsIDIxOSwgNDMsIDE5LCAyMCwgMjE3LCAxNDMsIAotICAgIDE5LCAyMCwgMjA5LCAxOTYsIDE5LCAyMCwgMjI5LCAyMDgsIDE5LCAyMCwgMjI4LCAxNjQsIDE5LCAyMCwgMjI1LCA2MywgCi0gICAgMTksIDIwLCAyMjEsIDE0OSwgMTksIDIwLCAyMjMsIDU5LCAxOSwgMjAsIDIyNywgMjQ0LCAxOSwgMjAsIDIxMSwgMjMyLCAKLSAgICAxOSwgMjAsIDIxNCwgMjA4LCAxOSwgMjAsIDIxMiwgMjA3LCAxOSwgMjAsIDIxMywgNDcsIDE5LCAyMCwgMjEyLCAxNzIsIAotICAgIDE5LCAyMCwgMjAyLCAyMjIsIDE5LCAyMCwgMjAzLCA1OCwgMTksIDIwLCAyMTYsIDE2NSwgMTksIDIwLCAyMjEsIDE3LCAxOSwgCi0gICAgMjAsIDIyMCwgNTMsIDIyMSwgMTcsIDE5LCAyMCwgMjIxLCAxNiwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIDE2LCAxOSwgMjAsIAotICAgIDIyMSwgMTUsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAxNSwgMTksIDIwLCAyMjEsIDE0LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgCi0gICAgMTQsIDE5LCAyMCwgMjE1LCAxMDcsIDE5LCAyMCwgMjE1LCAxMDYsIDE5LCAyMCwgMjE1LCAxMDUsIDE5LCAyMCwgMjE1LCAKLSAgICAxMDQsIDE5LCAyMCwgMjE1LCAxMDMsIDE5LCAyMCwgMjE1LCAxMTEsIDE5LCAyMCwgMjIwLCA1MywgMjE5LCAxODQsIDE5LCAKLSAgICAyMCwgMjIwLCA1MywgMjEwLCA2OSwgMTksIDIwLCAyMjAsIDUzLCAyMzAsIDU0LCAxOSwgMjAsIDIyMCwgNTMsIDI0NywgCi0gICAgMTI1LCAxOSwgMjAsIDIyMCwgNTMsIDIyNiwgMTg1LCAxOSwgMjAsIDIyMCwgNTMsIDIyMywgMTYzLCAxOSwgMjAsIDIyMCwgCi0gICAgNTMsIDE5NCwgMTksIDIwLCAyMjAsIDUzLCAyMTMsIDkyLCAxOSwgMjAsIDI0MSwgMTc0LCAyMDQsIDE0NCwgMTksIDIwLCAKLSAgICAyMDQsIDQ0LCAyMDQsIDE0NCwgMTksIDIwLCA0NiwgNSwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIxNiwgMTg4LCAyNDMsIAotICAgIDg1LCAxOSwgMjAsIDIxNywgMCwgMjE1LCAxMDgsIDE5LCAyMCwgMTk2LCAyMjcsIDE4LCAxOSwgMjAsIDE5NiwgMjI4LCAKLSAgICAxMTIsIDE5LCAyMCwgMjA5LCAxMSwgMTksIDIwLCAyMDksIDEzLCAxOSwgMjAsIDIwNywgMjIxLCAxOSwgMjAsIDIwNywgCi0gICAgMjIzLCAxOSwgMjAsIDIwNywgMjI4LCAxOSwgMjAsIDIwOCwgMTgwLCAxOSwgMjAsIDIwOCwgMTgyLCAxOSwgMjAsIDIxNCwgCi0gICAgMjA2LCAyMTIsIDE3NywgMTksIDIwLCAyMTQsIDIwNiwgMjEyLCAyMzYsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNiwgMTE3LCAKLSAgICAxOSwgMjAsIDg4LCAyMzcsIDE4NSwgMTksIDIwLCA4OCwgMjQ0LCAzNSwgMjM4LCAxODIsIDE5LCAyMCwgODgsIDIzOSwgNSwgCi0gICAgMTksIDIwLCA4OCwgMjM3LCAxOTAsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgNjQsIDE5LCAyMCwgODgsIDIzMCwgNjIsIDE5LCAKLSAgICAyMCwgMjQ4LCAxNTMsIDI0NCwgMzUsIDE1OSwgMTksIDIwLCAyNDgsIDE1MywgMjQ0LCAzNSwgMTQ2LCAxOSwgMjAsIDg4LCAKLSAgICAyNDQsIDMwLCAxOTQsIDIyNywgMTI0LCAyMDUsIDE2OSwgMjI3LCAxNzQsIDIyNywgMTI0LCAxLCAxNzMsIDIyNywgMTI0LCAKLSAgICAxLCAyMjksIDE0NCwgMjI3LCAxMjQsIDEsIDIzOSwgOCwgMjI3LCAxMjQsIDEsIDIzOCwgMTE5LCAyMjcsIDEyNCwgMSwgCi0gICAgMjIyLCAyMDMsIDIyNywgMTI0LCAxLCAyNDcsIDkyLCAyMjcsIDEyNCwgMSwgMjQ2LCAxOTksIDIyNywgMTI0LCAxLCAyMzAsIAotICAgIDE4MSwgMjI3LCAxMjQsIDEsIDIzMCwgMTQ5LCAyMjcsIDEyNCwgMSwgMjAzLCA3OCwgMjI3LCAxMjQsIDEsIDIxMCwgMjIsIAotICAgIDIyNywgMTI0LCAxLCAyMDksIDEwOCwgMjI3LCAxMjQsIDEsIDI0NCwgMjEyLCAyMjcsIDEyNCwgMSwgMjQ0LCAxLCAyMjcsIAotICAgIDEyNCwgMSwgMjAxLCAyMDEsIDIyNywgMTI0LCAxLCAxODUsIDIyNywgMTI0LCAxLCAyMTgsIDIwOCwgMjI3LCAxMjQsIDEsIAotICAgIDI0OSwgMzIsIDIyNywgMTI0LCAxLCAyNDgsIDk4LCAyMjcsIDEyNCwgMSwgMTkyLCAyMjcsIDEyNCwgMSwgMTk4LCAyMjcsIAotICAgIDEyNCwgMSwgMjE2LCAyMjAsIDIyNywgMTI0LCAxLCAyMjgsIDExMywgMjI3LCAxMjQsIDEsIDIwNCwgMTExLCAyMjcsIDEyNCwgCi0gICAgMSwgMjEzLCA5MCwgMjI3LCAxMjQsIDEsIDIxMSwgMTY0LCAyMjcsIDEyNCwgMSwgMjE1LCAzNiwgMjI3LCAxMjQsIDEsIAotICAgIDE1MiwgMjI3LCAxMjQsIDEsIDIzNywgMTgxLCAyMjcsIDEyNCwgMSwgMjA4LCAxMTksIDIyNywgMTI0LCAyMiwgMiwgNjMsIAotICAgIDIyNywgMTI0LCAyMiwgMiwgNzUsIDIyNywgMTI0LCAyMiwgMiwgNjgsIDIyNywgMTI0LCAyMiwgMiwgMjQxLCAxNjEsIDIyNywgCi0gICAgMTI0LCAyMiwgMiwgMjUxLCA2NCwgMjI3LCAxMjQsIDIyLCAyLCAyMjAsIDE4LCAyMjcsIDEyNCwgMjIsIDIsIDI1MCwgMzQsIAotICAgIDIyNywgMTI0LCAyMiwgMiwgNzQsIDIyNywgMTI0LCAyMiwgMiwgNzgsIDIyNywgMTI0LCAyMTAsIDI1NCwgMSwgMTk4LCAKLSAgICAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCAyMjcsIAotICAgIDEyNCwgNSwgMSwgMTczLCAyMjcsIDEyNCwgNSwgMSwgMjIyLCAyMDMsIDIyNywgMTI0LCA1LCAxLCAyNTAsIDE4MCwgMjI3LCAKLSAgICAxMjQsIDUsIDEsIDIxMCwgMjIsIDIyNywgMTI0LCA1LCAxLCAyMDEsIDIwMSwgMjI3LCAxMjQsIDUsIDEsIDE4NSwgMjI3LCAKLSAgICAxMjQsIDUsIDEsIDE5MiwgMjI3LCAxMjQsIDUsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgNSwgMSwgMjI4LCAxMTMsIDIyNywgCi0gICAgMTI0LCAyLCAyMjMsIDIzMSwgMjI3LCAxMjQsIDIsIDIyOSwgMTg2LCAyMjcsIDEyNCwgMiwgMjE1LCAzNCwgMjI3LCAxMjQsIAotICAgIDIsIDIyNywgMTgsIDIyNywgMTI0LCAyNDAsIDIxMiwgODIsIDIyNywgMTI0LCAyMTcsIDQ3LCA4MiwgMjI3LCAxMjQsIDE3LCAKLSAgICAyMDIsIDg0LCAyMjcsIDEyNCwgMTcsIDEwNSwgMjI3LCAxMjQsIDE3LCAxMDgsIDIyNywgMTI0LCAxNywgMTQ3LCAyMjcsIAotICAgIDEyNCwgMTcsIDE0OSwgMjI3LCAxMjQsIDE3LCAxNzAsIDIyNywgMTI0LCAxNywgMTk1LCAyMjcsIDEyNCwgMTcsIDIxMywgCi0gICAgMTExLCAyMjcsIDEyNCwgMTcsIDE5OSwgMjI3LCAxMjQsIDE3LCAyMjIsIDYzLCA0NSwgMjI3LCAyMzUsIDEsIDE3MywgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMDMsIDE4MiwgNDUsIDIyNywgMjM1LCAxLCAyMjIsIDIwMywgNDUsIDIyNywgMjM1LCAxLCAyMDgsIAotICAgIDIwLCA0NSwgMjI3LCAyMzUsIDEsIDIxNSwgMzYsIDQ1LCAyMjcsIDIzNSwgMSwgMTk4LCA0NSwgMjI3LCAyMzUsIDEsIDIxMCwgCi0gICAgMjIsIDQ1LCAyMjcsIDIzNSwgMSwgMjA5LCAxMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMjI4LCAxMTMsIDQ1LCAyMjcsIDIzNSwgCi0gICAgMSwgMTg1LCA0NSwgMjI3LCAyMzUsIDEsIDIxOCwgMjA4LCA0NSwgMjI3LCAyMzUsIDEsIDE5MiwgNDUsIDIyNywgMjM1LCAxLCAKLSAgICAyNDAsIDEwOCwgNDUsIDIyNywgMjM1LCAxLCAyMDYsIDg2LCA0NSwgMjI3LCAyMzUsIDEsIDE1MiwgNDUsIDIyNywgMjM1LCAKLSAgICAxLCAyMTcsIDEyNiwgNDUsIDIyNywgMjM1LCAxLCAyMjksIDE0NCwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDEwLCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIwMSwgMjAxLCA0NSwgMjI3LCAyMzUsIDEsIDYzLCA0NSwgMjI3LCAyMzUsIDEsIDc1LCA0NSwgMjI3LCAKLSAgICAyMzUsIDEsIDI0MSwgMTYxLCA0NSwgMjI3LCAyMzUsIDEsIDI0MSwgMTQ3LCA0NSwgMjI3LCAyMzUsIDEsIDY4LCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIyMCwgMTgsIDQ1LCAyMjcsIDIzNSwgMSwgNzgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA3LCAyNCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCA3NCwgNDUsIDIyNywgMjM1LCAxLCAyNTAsIDMyLCA0NSwgMjI3LCAyMzUsIDEsIDI1MSwgNjQsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjA4LCAxNTksIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAKLSAgICAxNTcsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTYsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTUsIDIyMiwgMjE0LCA0NSwgCi0gICAgMjI2LCAyMzMsIDEsIDEzOCwgMjE3LCAxMjYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE3LCAxMjYsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTczLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwMywgCi0gICAgMTgyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyMiwgMjAzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKLSAgICAxMjQsIDE3MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDMsIDE4MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTI0LCAyMjIsIDIwMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDgsIDIwLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxNSwgMzYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTk4LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwOCwgMjAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE1LCAKLSAgICAzNiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAxOTgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgCi0gICAgMjEwLCAyMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDksIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTM4LCAyMDEsIDIwMSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTAsIDIyLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwOSwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwMSwgMjAxLCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE4NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTgsIAotICAgIDIwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgCi0gICAgMTg1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxOCwgMjA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKLSAgICAxMjQsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyNDAsIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTM4LCAyMDYsIDg2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyOCwgMTEzLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDI0MCwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwNiwgODYsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjI4LCAxMTMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgCi0gICAgMTUyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDI0NCwgMjEyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKLSAgICAxMzgsIDI0OSwgMzIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMTUyLCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAxLCAxMjQsIDI0NCwgMjEyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDI0OSwgMzIsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjI4LCAxNjksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjAzLCAxNDksIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjI4LCAxNjksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgCi0gICAgMjAzLCAxNDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjExLCA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKLSAgICAxLCAxMjQsIDIxMSwgOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIyLCAyMTIsIDIxNiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDI1MiwgMjUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMzEsIDgzLCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNjgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDYsIAotICAgIDE3OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDc0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgCi0gICAgMjUxLCAxMDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA3OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIAotICAgIDIsIDIyMCwgOTcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDcsIDI0LCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAyMiwgMiwgMjUwLCA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjUxLCAyMzYsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDYsIDE3MCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIxOSwgMTg4LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjIwLCA5NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIAotICAgIDIwNywgMjAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMzAsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCi0gICAgMSwgNDYsIDIwNiwgMTY0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjIyLCAyMDUsIDIyMiwgMjE0LCA0NSwgCi0gICAgMjI2LCAyMzMsIDEsIDQ2LCAyMjMsIDE2MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIyNiwgMTg1LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjMwLCA1NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDI0NSwgCi0gICAgNTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyNDksIDI1NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTQzLCAKLSAgICAyMjUsIDkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNDMsIDIyNSwgOTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAotICAgIDE3LCAyMDIsIDg0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTA1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgCi0gICAgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTQ3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTQ5LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTcwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTk1LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMjEzLCAxMTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxOTksIDIyMiwgCi0gICAgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAyMjIsIDYzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxMDQsIDE3LCAxMDUsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIsIDIyOCwgOTcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIsIDIyOCwgOTYsIAotICAgIDg1LCAxNiwgMjE5LCA1MSwgODUsIDE2LCAyMjMsIDIxMSwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDEzMCwgMjI5LCAyMiwgCi0gICAgODUsIDE2LCAyNDgsIDEzNCwgMjI5LCAyMiwgODUsIDE2LCAyNDcsIDE2NiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDgsIAotICAgIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAyLCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMCwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIAotICAgIDYsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCA0LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTYxLCAyMjksIDIyLCA4NSwgMTYsIAotICAgIDI0NCwgMTU3LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU2LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU5LCAyMjksIDIyLCAKLSAgICA4NSwgMTYsIDI0NCwgMTU4LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU1LCAyMjksIDIyLCA4NSwgMTYsIDIwNywgMTY3LCAKLSAgICA4NSwgMTYsIDIyMywgMjExLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDEzMCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ4LCAxMzQsIAotICAgIDIxNSwgMjIwLCA4NSwgMTYsIDI0NywgMTY2LCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDgsIDIxNSwgMjIwLCA4NSwgMTYsIAotICAgIDIxOCwgMiwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCAwLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDYsIDIxNSwgMjIwLCA4NSwgCi0gICAgMTYsIDIxOCwgNCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNjEsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU3LCAyMTUsIAotICAgIDIyMCwgODUsIDE2LCAyNDQsIDE1NiwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTksIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgCi0gICAgMTU4LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1NSwgMjE1LCAyMjAsIDI0NywgMTg2LCAxLCAxNzMsIDI0NywgMTg2LCAxLCAKLSAgICAyMzksIDgsIDI0NywgMTg2LCAxLCAyMjIsIDIwMywgMjQ3LCAxODYsIDEsIDIyMiwgMTQ2LCAyNDcsIDE4NiwgMSwgMTg1LCAKLSAgICAyNDcsIDE4NiwgMSwgMjQ5LCAzMiwgMjQ3LCAxODYsIDEsIDE5MiwgMjQ3LCAxODYsIDEsIDIyMywgMjUwLCAyNDcsIDE4NiwgCi0gICAgMSwgMjEwLCAyMiwgMjQ3LCAxODYsIDEsIDI0NCwgMjEyLCAyNDcsIDE4NiwgMSwgMjAxLCAyMDEsIDI0NywgMTg2LCAxLCAKLSAgICAyMjEsIDE0NywgMjQ3LCAxODYsIDEsIDI0NywgOTIsIDI0NywgMTg2LCAxLCAyMzAsIDE4MSwgMjQ3LCAxODYsIDEsIDIyMSwgCi0gICAgMTEsIDI0NywgMTg2LCAxLCAyMjEsIDMsIDI0NywgMTg2LCAxLCAxOTgsIDI0NywgMTg2LCAxLCAyMTYsIDIyMCwgMjQ3LCAKLSAgICAxODYsIDEsIDIyOCwgMTEzLCAyNDcsIDE4NiwgMSwgMjA2LCA4NiwgMjQ3LCAxODYsIDEsIDIxNSwgMzYsIDI0NywgMTg2LCAKLSAgICAxLCA2MywgMjQ3LCAxODYsIDEsIDE1MiwgMjQ3LCAxODYsIDIyLCAyLCA3NSwgMjQ3LCAxODYsIDIyLCAyLCA2OCwgMjQ3LCAKLSAgICAxODYsIDIyLCAyLCA3NCwgMjQ3LCAxODYsIDIyLCAyLCA3OCwgMjQ3LCAxODYsIDIyLCAyLCAyNTEsIDEwOSwgMjQ3LCAxODYsIAotICAgIDIxOSwgMTM2LCAyNDcsIDE4NiwgMjQxLCA4NCwgNzYsIDIxNCwgMTY3LCA0NSwgMTA0LCAxLCAxMzgsIDE3MywgNDUsIDEwNCwgCi0gICAgMSwgMTM4LCAyMjksIDE0NCwgNDUsIDEwNCwgMSwgMTM4LCAyMjgsIDE1MywgNDUsIDEwNCwgMSwgMTI0LCAxNzMsIDQ1LCAKLSAgICAxMDQsIDEsIDEyNCwgMjI4LCAxNTMsIDQ1LCAxMDQsIDEsIDEyNCwgMjI5LCAxNDQsIDQ1LCAxMDQsIDEsIDIyMiwgMjAzLCAKLSAgICA0NSwgMTA0LCAxLCAxMzgsIDI0NywgOTIsIDQ1LCAxMDQsIDEsIDEzOCwgMjQ2LCAxOTksIDQ1LCAxMDQsIDEsIDEyNCwgCi0gICAgMjQ3LCA5MiwgNDUsIDEwNCwgMSwgMTI0LCAyMTUsIDM2LCA0NSwgMTA0LCAxLCAxMjQsIDI0NiwgMTk5LCA0NSwgMTA0LCAxLCAKLSAgICAyMjEsIDExLCA0NSwgMTA0LCAxLCAyMTYsIDE3MSwgNDUsIDEwNCwgMSwgMTM4LCAyMTYsIDE2OSwgNDUsIDEwNCwgMSwgCi0gICAgMjQ0LCAyMTIsIDQ1LCAxMDQsIDEsIDEyNCwgMjE2LCAxNjksIDQ1LCAxMDQsIDEsIDIxNiwgMTgwLCA0NSwgMTA0LCAxLCAKLSAgICAxMzgsIDIxMCwgMjIsIDQ1LCAxMDQsIDEsIDEzOCwgMjA5LCAxMDgsIDQ1LCAxMDQsIDEsIDEyNCwgMjEwLCAyMiwgNDUsIAotICAgIDEwNCwgMSwgMTI0LCAyMDksIDEwOCwgNDUsIDEwNCwgMSwgMjAxLCAyMDEsIDQ1LCAxMDQsIDEsIDI0OSwgMzIsIDQ1LCAKLSAgICAxMDQsIDEsIDEzOCwgMTg1LCA0NSwgMTA0LCAxLCAxMzgsIDIxOCwgMjA4LCA0NSwgMTA0LCAxLCAxMzgsIDI0MCwgMTA4LCAKLSAgICA0NSwgMTA0LCAxLCAxMjQsIDE4NSwgNDUsIDEwNCwgMSwgMTI0LCAyNDAsIDEwOCwgNDUsIDEwNCwgMSwgMTI0LCAyMTgsIAotICAgIDIwOCwgNDUsIDEwNCwgMSwgMTkyLCA0NSwgMTA0LCAxLCAxMjQsIDE5OCwgNDUsIDEwNCwgMSwgMTM4LCAxOTgsIDQ1LCAKLSAgICAxMDQsIDEsIDIxNiwgMjIwLCA0NSwgMTA0LCAxLCAyMTUsIDE0MCwgNDUsIDEwNCwgMSwgMjI4LCAxMTMsIDQ1LCAxMDQsIDEsIAotICAgIDIyNiwgMjMyLCA0NSwgMTA0LCAxLCAyMDQsIDExMSwgNDUsIDEwNCwgMSwgMTM4LCAyMTMsIDkwLCA0NSwgMTA0LCAxLCAKLSAgICAxMzgsIDIxMSwgMTY0LCA0NSwgMTA0LCAxLCAxMzgsIDIxNSwgMzYsIDQ1LCAxMDQsIDEsIDEzOCwgMTUyLCA0NSwgMTA0LCAKLSAgICAxLCAyMjcsIDc3LCA0NSwgMTA0LCAxLCA2MywgNDUsIDEwNCwgMSwgMTI0LCAxNTIsIDQ1LCAxMDQsIDEsIDc1LCA0NSwgCi0gICAgMTA0LCAxLCAyMzEsIDgzLCA0NSwgMTA0LCAxLCA2OCwgNDUsIDEwNCwgMSwgMjA2LCAxNzgsIDQ1LCAxMDQsIDEsIDI0MSwgCi0gICAgMTYxLCA0NSwgMTA0LCAxLCAyMjAsIDE4LCA0NSwgMTA0LCAxLCAyMjgsIDk3LCA0NSwgMTA0LCAxLCAyMzcsIDI0OSwgMjE1LCAKLSAgICAzNiwgNDUsIDEwNCwgMTA5LCAyLCAxNzQsIDIxNiwgMjIwLCA0NSwgMTA0LCAxMDksIDIsIDE3NCwgMjI4LCAxMTMsIDQ1LCAKLSAgICAxMDQsIDEwOSwgMiwgMjI4LCAxMTQsIDIwOSwgMjI4LCAyMjgsIDg2LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgMjMwLCAxLCAKLSAgICAyMjgsIDg2LCA0NSwgMTA0LCAxMDksIDIsIDQ2LCAyMjIsIDIwMywgNDUsIDEwNCwgMTA5LCAyLCAxMjQsIDE4NSwgNDUsIAotICAgIDEwNCwgMTA5LCAyLCAxMzgsIDIxNiwgMTcwLCAyMTksIDI0NSwgMTI0LCAxODUsIDQ1LCAxMDQsIDEwOSwgMiwgMTkyLCA0NSwgCi0gICAgMTA0LCAxMDksIDIsIDI0OSwgMzIsIDQ1LCAxMDQsIDEwOSwgMiwgMjE1LCAzNiwgNDUsIDEwNCwgMiwgMjE1LCAxMCwgNDUsIAotICAgIDEwNCwgMjIsIDIsIDYzLCA0NSwgMTA0LCAyMiwgMiwgMjI1LCAxNDEsIDIxNCwgMjI1LCA0NSwgMTA0LCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgNDUsIDEwNCwgMjIsIDIsIDIwOSwgMjM0LCAyNTIsIDI1LCA0NSwgMTA0LCAyMiwgMiwgNzUsIDQ1LCAxMDQsIDIyLCAKLSAgICAyLCAyMzEsIDgzLCA0NSwgMTA0LCAyMiwgMiwgMjA3LCAyNCwgNDUsIDEwNCwgMjIsIDIsIDIwNiwgMTc3LCA0NSwgMTA0LCAKLSAgICAyMiwgMiwgNjgsIDQ1LCAxMDQsIDIyLCAyLCAyMDYsIDE3OCwgNDUsIDEwNCwgMjIsIDIsIDc4LCA0NSwgMTA0LCAyMiwgMiwgCi0gICAgMjIwLCA5OCwgNTYsIDQ1LCAxMDQsIDIyLCAyLCAyMTksIDE4OCwgNDUsIDEwNCwgMjIsIDIsIDc0LCA0NSwgMTA0LCAyMiwgCi0gICAgMiwgMjUxLCAxMDksIDQ1LCAxMDQsIDIyLCAyLCAyMjAsIDE4LCA0NSwgMTA0LCAyMiwgMiwgMjUxLCA2NCwgNDUsIDEwNCwgCi0gICAgMjIsIDIsIDEwNCwgMjUxLCA2NCwgNDUsIDEwNCwgMjIsIDIsIDIyMCwgOTgsIDU1LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgCi0gICAgMjMwLCAwLCA0NSwgMTA0LCAyLCAyMDgsIDE2MCwgNDUsIDEwNCwgMiwgMjA4LCAxNTksIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAKLSAgICAyMDgsIDE1OCwgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIDIwOCwgMTU3LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgMjA4LCAxNTYsIAotICAgIDQ1LCAxMDQsIDIsIDIxNiwgMjIxLCAyMzcsIDE1NiwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIxNCwgMjUzLCA0NSwgMTA0LCAKLSAgICAyLCAyMjksIDEwNCwgMjI5LCAyMzksIDQ1LCAxMDQsIDM5LCAyNDUsIDExMywgMjQzLCA4NSwgNDUsIDEwNCwgMjM2LCAxMDgsIAotICAgIDE3LCAyMDIsIDg0LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDEwNSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxMDgsIDQ1LCAKLSAgICAxMDQsIDIzNiwgMTA4LCAxNywgMTQ3LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDE0OSwgNDUsIDEwNCwgMjM2LCAxMDgsIAotICAgIDE3LCAxNzAsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTk1LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDIxMywgMTExLCA0NSwgCi0gICAgMTA0LCAyMzYsIDEwOCwgMTcsIDE5OSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAyMjIsIDYzLCA0NSwgMTA0LCAxMDQsIDE3LCAKLSAgICAyMDIsIDg0LCA0NSwgMTA0LCAxMDQsIDE3LCAxMDUsIDQ1LCAxMDQsIDEwNCwgMTcsIDEwOCwgNDUsIDEwNCwgMTA0LCAxNywgCi0gICAgMTQ3LCA0NSwgMTA0LCAxMDQsIDE3LCAxNDksIDQ1LCAxMDQsIDEwNCwgMTcsIDE3MCwgNDUsIDEwNCwgMTA0LCAxNywgMTk1LCAKLSAgICA0NSwgMTA0LCAxMDQsIDE3LCAyMTMsIDExMSwgNDUsIDEwNCwgMTA0LCAxNywgMTk5LCA0NSwgMTA0LCAxMDQsIDE3LCAyMjIsIAotICAgIDYzLCA0NSwgMTA0LCAyLCAyMDQsIDI5LCA0NSwgMTA0LCAyLCAyMDQsIDI4LCA0NSwgMTA0LCAyLCAyMTQsIDIxMiwgNDUsIAotICAgIDEwNCwgMiwgMjI5LCAxNzUsIDQ1LCAxMDQsIDIsIDIzNiwgMzYsIDQ1LCAxMDQsIDIsIDI0MywgOTksIDQ1LCAxMDQsIDIsIAotICAgIDIxNiwgNzMsIDIxNSwgMTk4LCAyMTYsIDE4MCwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIwMywgNzksIDQ1LCAxMDQsIDIsIAotICAgIDIzMCwgMzUsIDQ1LCAxMDQsIDIsIDIzMCwgMzQsIDQ1LCAxMDQsIDIsIDIxNCwgMjIwLCA0NSwgMTA0LCAyLCAyMTQsIDIxOSwgCi0gICAgNDUsIDEwNCwgMiwgMjM3LCA5OCwgNDUsIDEwNCwgMiwgMjQ3LCA4OSwgMzksIDI0MiwgNzUsIDI0NiwgNTMsIDI1MSwgMTM4LCAKLSAgICAzOSwgMjQzLCAyMzAsIDM5LCAyMzEsIDI3LCAzOSwgMTgzLCA0NywgMzksIDIwOCwgNzAsIDI0MywgODUsIDM5LCAyMDMsIAotICAgIDE5NSwgNTYsIDM5LCAyMDQsIDIxLCAyMjcsIDExNSwgNTYsIDM5LCAxNzEsIDEzMSwgNTYsIDM5LCA1MiwgMTcxLCAxMzEsIAotICAgIDU2LCAzOSwgMTU3LCAyNDYsIDIxOSwgMjExLCAzMiwgNTYsIDM5LCAyMTEsIDE4LCAyNDYsIDIxOSwgMjExLCAzMiwgNTYsIAotICAgIDM5LCAyMTksIDc4LCA1NSwgMzksIDUyLCAyMTksIDc4LCA1NSwgMzksIDIxOSwgNzgsIDU2LCAzOSwgMjE5LCA3OCwgMjE5LCAKLSAgICAxOTksIDEzMCwgMiwgMjA3LCA5LCAyMTYsIDUxLCAxMzAsIDIsIDIwNywgOSwgMjQ3LCA1NCwgMTMwLCAyLCAyNDYsIDIzNCwgCi0gICAgMTMwLCAyLCAyMTAsIDE5MSwgMTMwLCAyLCAyNDgsIDU2LCAxMzAsIDEsIDI1MSwgNDUsIDEzMCwgMSwgMjUxLCA0NiwgMjA5LCAKLSAgICAxNzgsIDEzMCwgMSwgMjMxLCA3OSwgMTMwLCAxLCAyMzEsIDgwLCAyMDksIDE3OCwgMTMwLCAxLCAyMDcsIDEyLCAxMzAsIDEsIAotICAgIDIwNywgMTMsIDIwOSwgMTc4LCAxMzAsIDEsIDIxNiwgMjIxLCAyMTYsIDEwMywgMTMwLCAxLCAyMTYsIDIyMSwgMjE2LCAKLSAgICAxMDQsIDIwOSwgMTc4LCAxMzAsIDEsIDIyOCwgMTE0LCAyMjcsIDE5NywgMTMwLCAxLCAyMjgsIDExNCwgMjI3LCAxOTgsIAotICAgIDIwOSwgMTc4LCAxMzAsIDEsIDI0MSwgMTI3LCAxMzAsIDEsIDI1MSwgNjIsIDEzMCwgMSwgMjIwLCA0OSwgMTMwLCAxLCAKLSAgICAyMjAsIDUwLCAyMDksIDE3OCwgMTMwLCAxLCAxNzMsIDEzMCwgMSwgMjMwLCA0NCwgMjI1LCAxNDQsIDEzMCwgMSwgMjM5LCAKLSAgICA4LCAxMzAsIDEsIDIzOSwgOSwgMjM4LCAyNSwgMTMwLCAxLCAyMjIsIDIwMywgMTMwLCAxLCAyNDcsIDkyLCAxMzAsIDEsIAotICAgIDI0NywgOTMsIDIyOCwgMTAwLCAxMzAsIDEsIDIzMCwgMTgxLCAxMzAsIDEsIDIzMCwgMTgyLCAyMzAsIDE1MywgMTMwLCAxLCAKLSAgICAyMjEsIDExLCAxMzAsIDEsIDIxMCwgMjMsIDIyNywgMjUzLCAxMzAsIDEsIDIxMCwgMjMsIDIyMywgMjA2LCAyMjUsIDE0NCwgCi0gICAgMTMwLCAxLCAyNDQsIDIxMywgMjIzLCAyMDYsIDI1MSwgNCwgMTMwLCAxLCAyNDQsIDIxMywgMjIzLCAyMDYsIDIyNSwgMTQ0LCAKLSAgICAxMzAsIDEsIDIyMywgMTExLCAyMTYsIDE4MywgMTMwLCAxLCAyMTAsIDIyLCAxMzAsIDEsIDIxMCwgMjMsIDIwOSwgMjAwLCAKLSAgICAxMzAsIDEsIDI0NCwgMjEyLCAxMzAsIDEsIDI0NCwgMjEzLCAyMjUsIDE2MywgMTMwLCAxLCAyMDEsIDIwMSwgMTMwLCAxLCAKLSAgICAxODUsIDEzMCwgMSwgMjE5LCAxNjksIDIyOSwgMjUxLCAxMzAsIDEsIDI0OSwgMzIsIDEzMCwgMSwgMjQ5LCAzMywgMjI5LCAKLSAgICAxODcsIDEzMCwgMSwgMTkyLCAxMzAsIDEsIDE5OCwgMTMwLCAxLCAyMTYsIDIyMCwgMTMwLCAxLCAyMjgsIDExMywgMTMwLCAKLSAgICAxLCAyMDQsIDExMSwgMTMwLCAxLCAyMTUsIDM3LCAyMTUsIDIxLCAxMzAsIDEsIDIxNSwgMzcsIDIxNCwgMjMyLCAxMzAsIDEsIAotICAgIDIxNSwgMzYsIDEzMCwgMSwgMTUyLCAxMzAsIDIsIDIxNiwgOTQsIDEzMCwgMjIsIDIsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAKLSAgICAyMDcsIDgsIDEzMCwgMjIsIDIsIDIwNywgOSwgMjE0LCAyMjgsIDEzMCwgMjIsIDIsIDIxMCwgMjI0LCAxMzAsIDIyLCAyLCAKLSAgICAyMTAsIDIyNSwgMjMxLCA3MSwgMTMwLCAyMiwgMiwgMjE2LCAyMjEsIDIxNiwgMTAzLCAxMzAsIDIyLCAyLCAyMTYsIDIyMSwgCi0gICAgMjE2LCAxMDQsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMjgsIDExNCwgMjI3LCAxOTcsIDEzMCwgMjIsIDIsIDIyOCwgMTE0LCAKLSAgICAyMjcsIDE5OCwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIwOSwgMjM1LCAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjE2LCAxMDMsIAotICAgIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIxNiwgMTA0LCAyMDksIDE3OCwgCi0gICAgMTMwLCAyMiwgMiwgMjE4LCAyNDksIDEzMCwgMjIsIDIsIDIxOCwgMjUwLCAyMDksIDE3OCwgMTMwLCAyNTEsIDExNywgMjUxLCAKLSAgICAxMTYsIDEzMCwgMSwgMjMwLCAyMywgMjE0LCAyMjcsIDEzMCwgMSwgMjI5LCAxMTEsIDIxNCwgMjI3LCAxMzAsIDEsIDIwNywgCi0gICAgMTAxLCAyMTQsIDIyNywgMTMwLCAxLCAyNDEsIDE1NSwgMjE0LCAyMjcsIDEzMCwgMSwgMjA2LCA1NiwgMjE0LCAyMjcsIAotICAgIDEzMCwgMSwgMjAyLCAxMDYsIDIxNCwgMjI3LCAxMzAsIDEsIDI1MCwgNTIsIDIxNCwgMjI3LCAxMzAsIDE3LCAyMDIsIDg0LCAKLSAgICAxMzAsIDE3LCAxMDUsIDEzMCwgMTcsIDEwOCwgMTMwLCAxNywgMTQ3LCAxMzAsIDE3LCAxNDksIDEzMCwgMTcsIDE3MCwgCi0gICAgMTMwLCAxNywgMTk1LCAxMzAsIDE3LCAyMTMsIDExMSwgMTMwLCAxNywgMTk5LCAxMzAsIDE3LCAyMjIsIDYzLCAxMzAsIAotICAgIDIxOSwgMTA0LCAxMzAsIDIxOSwgMTMwLCAxMzAsIDIwNCwgMTQsIDEzMCwgMjQ3LCAzMSwgMjE5LCAxMjMsIDEzMCwgMjQ3LCAKLSAgICAzMSwgMjEyLCAxMzksIDEzMCwgMjQ3LCAzMSwgMjE5LCA3NSwgMTMwLCAyMTksIDEyOSwgMTMwLCAzMSwgMTYsIDI0MywgOTEsIAotICAgIDEzMCwgMzEsIDE2LCAyNDQsIDM0LCAxMzAsIDMxLCAxNiwgMjQyLCAyNywgMTMwLCAzMSwgMTYsIDI0NCwgMTY0LCAxMzAsIAotICAgIDMxLCAxNiwgMjQ0LCAxNjUsIDIxMCwgMTkxLCAxMzAsIDMxLCAxNiwgMjQzLCAxNzUsIDEzMCwgMzEsIDE2LCAyNDQsIDIwNSwgCi0gICAgMTMwLCAzMSwgMTYsIDI0NCwgMTAsIDEzMCwgMzEsIDE2LCAyNDQsIDE4NywgMTMwLCAzMSwgMTYsIDI0NCwgMTY1LCAyMzgsIAotICAgIDE4NCwgMTMwLCAzMSwgMTYsIDM5LCAyMDksIDE3MSwgMTMwLCAzMSwgMTYsIDM5LCAyNDEsIDgyLCAxMzAsIDMxLCAxNiwgCi0gICAgMzksIDIyOSwgMTgyLCAxMzAsIDMxLCAxNiwgMzksIDIyOSwgMTg0LCAxMzAsIDMxLCAxNiwgMzksIDIzMCwgMTU3LCAxMzAsIAotICAgIDMxLCAxNiwgMzksIDIyOSwgMTgzLCAzLCAyMzAsIDE1NywgMTMwLCAzMSwgMTYsIDM5LCAyMjksIDE4NSwgMywgMjMwLCAKLSAgICAxNTcsIDEzMCwgMzEsIDE2LCAzOSwgMjQ4LCAxMTksIDEzMCwgMzEsIDE2LCAzOSwgMjM4LCAyOSwgMTMwLCAzMSwgMTYsIAotICAgIDIxNiwgMTQsIDE3MSwgMjQyLCAzNywgMTMwLCAzMSwgMTYsIDIxNiwgMTQsIDE3MSwgMjQ0LCAyMDMsIDEzMCwgMzEsIDE2LCAKLSAgICAyMTYsIDE0LCAyNDYsIDE2LCAyMDcsIDE5NSwgMTMwLCAzMSwgMTYsIDIxNiwgMTQsIDI0NiwgMTYsIDIwOSwgMjQ0LCAxMzAsIAotICAgIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE5LCAxMTgsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTcsIDE3NywgCi0gICAgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAyNDYsIDE2LCAyMTgsIDk0LCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDI0NiwgMTYsIAotICAgIDIxOCwgODAsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTgsIDExOSwgMjEwLCAyMTMsIDIsIDIxOSwgMTAxLCAKLSAgICAyMTAsIDIxMywgMiwgMjE5LCAxMTQsIDIxMCwgMjEzLCAyLCAyMTksIDExMCwgMjEwLCAyMTMsIDEsIDYzLCAyMTAsIDIxMywgCi0gICAgMSwgNzUsIDIxMCwgMjEzLCAxLCA2OCwgMjEwLCAyMTMsIDEsIDI1MSwgMTA5LCAyMTAsIDIxMywgMSwgNzgsIDIxMCwgMjEzLCAKLSAgICAxLCA3NCwgMjEwLCAyMTMsIDEsIDI0MCwgMjM4LCAyMTAsIDIxMywgMSwgMTczLCAyMTAsIDIxMywgMSwgMjE3LCAxMjYsIAotICAgIDIxMCwgMjEzLCAxLCAyMzksIDgsIDIxMCwgMjEzLCAxLCAyMjIsIDIwMywgMjEwLCAyMTMsIDEsIDI0NywgOTIsIDIxMCwgCi0gICAgMjEzLCAxLCAyMzAsIDE4MSwgMjEwLCAyMTMsIDEsIDIwMiwgMTE2LCAyMTAsIDIxMywgMSwgMjIxLCAxMSwgMjEwLCAyMTMsIAotICAgIDEsIDIxMCwgMjIsIDIxMCwgMjEzLCAxLCAyNDQsIDIxMiwgMjEwLCAyMTMsIDEsIDIwMSwgMjAxLCAyMTAsIDIxMywgMSwgCi0gICAgMTg1LCAyMTAsIDIxMywgMSwgMjQwLCAxMDgsIDIxMCwgMjEzLCAxLCAyMDYsIDg2LCAyMTAsIDIxMywgMSwgMjQ5LCAzMiwgCi0gICAgMjEwLCAyMTMsIDEsIDE5MiwgMjEwLCAyMTMsIDEsIDE5OCwgMjEwLCAyMTMsIDEsIDIxNiwgMjIwLCAyMTAsIDIxMywgMSwgCi0gICAgMjI4LCAxMTMsIDIxMCwgMjEzLCAxLCAyMDQsIDExMSwgMjEwLCAyMTMsIDEsIDIxNSwgMzYsIDIxMCwgMjEzLCAxLCAyMDMsIAotICAgIDE4MiwgMjEwLCAyMTMsIDEsIDE1MiwgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAxMjcsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgCi0gICAgMTAzLCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIDEwMCwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDExNywgMjEwLCAyMTMsIDIyLCAKLSAgICAyLCAyMTksIDk5LCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTIxLCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTA5LCAyMTAsIAotICAgIDIxMywgMjIsIDIsIDIxOSwgMTI4LCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTE5LCAyMTAsIDIxMywgMiwgMjE5LCAxMzEsIAotICAgIDIxMCwgMjEzLCAyLCAyMDUsIDIwNCwgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCA2NCwgMTkyLCAyMTAsIDIxMywgMTA5LCAyLCAKLSAgICAyMTksIDY0LCAyMDQsIDExMSwgMjEwLCAyMTMsIDEsIDIyOSwgMTQ0LCAyMTAsIDIxMywgMSwgMjEwLCAxNTAsIDIxMCwgCi0gICAgMjEzLCAxNywgMjAyLCA4NCwgMjEwLCAyMTMsIDE3LCAxMDUsIDIxMCwgMjEzLCAxNywgMTA4LCAyMTAsIDIxMywgMTcsIAotICAgIDE0NywgMjEwLCAyMTMsIDE3LCAxNDksIDIxMCwgMjEzLCAxNywgMTcwLCAyMTAsIDIxMywgMTcsIDE5NSwgMjEwLCAyMTMsIAotICAgIDE3LCAyMTMsIDExMSwgMjEwLCAyMTMsIDE3LCAxOTksIDIxMCwgMjEzLCAxNywgMjIyLCA2MywgMjEwLCAyMTMsIDI1MCwgCi0gICAgMTcsIDIxMCwgMjEzLCAxLCAyMTYsIDc2LCAyMTAsIDIxMywgMSwgMjI3LCAxNzEsIDIxMCwgMjEzLCAxLCAyNDgsIDk4LCAKLSAgICAyMTAsIDIxMywgMSwgNDYsIDIzMCwgNTQsIDIxMCwgMjEzLCAxLCA0NiwgMjI2LCAxODUsIDI0OCwgMjA4LCAxLCA2MywgCi0gICAgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCA2MywgMjQ4LCAyMDgsIDEsIDE1MiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxNTIsIAotICAgIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMTUyLCAyNDgsIDIwOCwgMSwgMjQ5LCAzMiwgMjQ4LCAyMDgsIDEsIDIyOSwgMjM2LCAKLSAgICAyNDksIDMyLCAyNDgsIDIwOCwgMSwgMTg1LCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE4NSwgMjQ4LCAyMDgsIDEsIDIwMSwgCi0gICAgMjAxLCAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDIwMSwgMjAxLCAyNDgsIDIwOCwgMSwgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAKLSAgICAyMTIsIDEzMSwgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAyMTksIDE0MywgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAyMzksIDgsIAotICAgIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMjM5LCA4LCAyNDgsIDIwOCwgMSwgMjMwLCAxODEsIDI0OCwgMjA4LCAxLCAyNDQsIAotICAgIDIxMiwgMjQ4LCAyMDgsIDEsIDIxNiwgMjIwLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDIxNiwgMjIwLCAyNDgsIDIwOCwgMSwgCi0gICAgMTkyLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE5MiwgMjQ4LCAyMDgsIDEsIDIxMSwgMjM2LCAyMTAsIDIyLCAyNDgsIAotICAgIDIwOCwgMSwgMjIxLCAxNzAsIDIxMCwgMjIsIDI0OCwgMjA4LCAxLCAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIAotICAgIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDE5OCwgMjQ4LCAyMDgsIDEsIAotICAgIDIxMiwgMTMxLCAxOTgsIDI0OCwgMjA4LCAxLCAyMjIsIDIwMywgMjQ4LCAyMDgsIDEsIDIyOCwgMTEzLCAyNDgsIDIwOCwgMSwgCi0gICAgMjEyLCAxMzEsIDIyOCwgMTEzLCAyNDgsIDIwOCwgMSwgMjIxLCAxMSwgMjQ4LCAyMDgsIDEsIDI0NywgOTIsIDI0OCwgMjA4LCAKLSAgICAxLCAyMjMsIDI1LCAyNDgsIDIwOCwgMSwgMjI1LCA1NCwgMjQ4LCAyMDgsIDEsIDc1LCAyNDgsIDIwOCwgMSwgNjgsIDI0OCwgCi0gICAgMjA4LCAyLCAyMDgsIDE2NCwgMjQ4LCAyMDgsIDIyLCAyLCA3NCwgMjQ4LCAyMDgsIDIyLCAyLCAyMTksIDE0MywgNzQsIAotICAgIDI0OCwgMjA4LCAyMiwgMiwgMjQxLCAxNjEsIDI0OCwgMjA4LCAyMiwgMiwgNzUsIDI0OCwgMjA4LCAyMiwgMiwgMjI5LCAKLSAgICAyMzYsIDc1LCAyNDgsIDIwOCwgMjIsIDIsIDc4LCAyNDgsIDIwOCwgMjIsIDIsIDIyOSwgMjM2LCA3OCwgMjQ4LCAyMDgsIAotICAgIDIyLCAyLCA2OCwgMjQ4LCAyMDgsIDIyLCAyLCAxMDYsIDM1LCAyMTIsIDEzMSwgMjE1LCAzNiwgMjQ4LCAyMDgsIDEwOSwgMiwgCi0gICAgMjIyLCAyMDUsIDI0OCwgMjA4LCAxMDksIDIsIDIzNywgMTcxLCAyNDgsIDIwOCwgMjE5LCAxMTIsIDI0OCwgMjA4LCAyMTksIAotICAgIDEwOCwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMjMsIDExMSwgMjI0LCAyMTgsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgCi0gICAgMjE4LCAxMjIsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjMwLCA3OSwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMTksIAotICAgIDExMiwgMjI3LCAxODEsIDEsIDE3MywgMjI3LCAxODEsIDEsIDIyOSwgNDAsIDIyNywgMTgxLCAxLCAyMjksIDE0NCwgMjI3LCAKLSAgICAxODEsIDEsIDIzOSwgOCwgMjI3LCAxODEsIDEsIDIzOCwgNTEsIDIyNywgMTgxLCAxLCAyMjIsIDIwMywgMjI3LCAxODEsIDEsIAotICAgIDI0NywgOTIsIDIyNywgMTgxLCAxLCAyNDYsIDE5OSwgMjI3LCAxODEsIDEsIDIzMCwgMTgxLCAyMjcsIDE4MSwgMSwgMjIxLCAKLSAgICAxMSwgMjI3LCAxODEsIDEsIDIxMCwgMjIsIDIyNywgMTgxLCAxLCAyMDksIDEwOCwgMjI3LCAxODEsIDEsIDI0NCwgMjEyLCAKLSAgICAyMjcsIDE4MSwgMSwgMjAxLCAyMDEsIDIyNywgMTgxLCAxLCAxODUsIDIyNywgMTgxLCAxLCAyMTgsIDk4LCAyMjcsIDE4MSwgCi0gICAgMSwgMjE4LCAyMDgsIDIyNywgMTgxLCAxLCAyNDAsIDEwOCwgMjI3LCAxODEsIDEsIDIzOSwgMjI3LCAyMjcsIDE4MSwgMSwgCi0gICAgMjQ5LCAzMiwgMjI3LCAxODEsIDEsIDI0OCwgNDQsIDIyNywgMTgxLCAxLCAxOTIsIDIyNywgMTgxLCAxLCAyMjQsIDg5LCAKLSAgICAyMjcsIDE4MSwgMSwgMjA4LCAyMCwgMjI3LCAxODEsIDEsIDIwOCwgMTAsIDIyNywgMTgxLCAxLCAyNDEsIDI1NSwgMjI3LCAKLSAgICAxODEsIDEsIDE5OCwgMjI3LCAxODEsIDEsIDIxNiwgMjIwLCAyMjcsIDE4MSwgMSwgMjI4LCAxMTMsIDIyNywgMTgxLCAxLCAKLSAgICAxNTIsIDIyNywgMTgxLCAxLCAyMzYsIDIyNCwgMjI3LCAxODEsIDEsIDIwNiwgODYsIDIyNywgMTgxLCAxLCAyMTUsIDM2LCAKLSAgICAyMjcsIDE4MSwgMSwgMjEzLCA5MCwgMjI3LCAxODEsIDEsIDIwNCwgMTExLCAyMjcsIDE4MSwgMSwgNjMsIDIyNywgMTgxLCAKLSAgICAyMTAsIDI1NCwgMSwgMTk4LCAyMjcsIDE4MSwgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCAyMjcsIDE4MSwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDIyNywgMTgxLCAyMiwgMiwgNzUsIDIyNywgMTgxLCAyMiwgMiwgNzgsIDIyNywgMTgxLCAyMiwgMiwgMjIwLCAxOCwgCi0gICAgMjI3LCAxODEsIDIyLCAyLCA2OCwgMjI3LCAxODEsIDIyLCAyLCAyMDYsIDE3OCwgMjI3LCAxODEsIDIyLCAyLCA3NCwgMjI3LCAKLSAgICAxODEsIDEwOSwgMiwgMjMwLCA1NCwgMjI3LCAxODEsIDEwOSwgMiwgMjI2LCAxODUsIDIyNywgMTgxLCAxMDksIDIsIDE1OSwgCi0gICAgMjI3LCAxODEsIDEwOSwgMiwgMjIzLCAxNjMsIDIyNywgMTgxLCAxMDksIDIsIDIxOSwgMTg0LCAyMjcsIDE4MSwgMTA5LCAyLCAKLSAgICAxNDYsIDIyNywgMTgxLCAxMDksIDIsIDIxMCwgNjksIDIyNywgMTgxLCAxMDksIDIsIDIyMCwgMjQxLCAyMjcsIDE4MSwgCi0gICAgMTA5LCAyLCAyMzAsIDAsIDIyNywgMTgxLCAyLCAyMTYsIDE4MSwgMjI3LCAxODEsIDIsIDIyMSwgNTEsIDIyNywgMTgxLCAKLSAgICAyMTcsIDE3OSwgMjEwLCAyMCwgMjI3LCAxODEsIDIxNywgMTc5LCAyMjAsIDI1MiwgMjA5LCA1LCAyMTAsIDIwLCAyMjcsIAotICAgIDE4MSwgMjE3LCAxNzksIDI0NiwgMjA2LCAyMjcsIDE4MSwgMjE3LCAxNzksIDIwOCwgMiwgMjQ2LCAyMDYsIDIyNywgMTgxLCAKLSAgICAyMTcsIDE3OSwgMjA4LCAxLCAyMjcsIDE4MSwgMTcsIDIwMiwgODQsIDIyNywgMTgxLCAxNywgMTA1LCAyMjcsIDE4MSwgMTcsIAotICAgIDEwOCwgMjI3LCAxODEsIDE3LCAxNDcsIDIyNywgMTgxLCAxNywgMTQ5LCAyMjcsIDE4MSwgMTcsIDE3MCwgMjI3LCAxODEsIAotICAgIDE3LCAxOTUsIDIyNywgMTgxLCAxNywgMjEzLCAxMTEsIDIyNywgMTgxLCAxNywgMTk5LCAyMjcsIDE4MSwgMTcsIDIyMiwgCi0gICAgNjMsIDIyNywgMTgxLCAxLCAyMDcsIDI0MSwgMjI3LCAxODEsIDEsIDIwNywgMjI5LCAyMjcsIDE4MSwgMSwgMjQ0LCAxMjAsIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMjAyLCA4NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxMDUsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxNywgMTA4LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE0NywgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNDksIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTcwLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE5NSwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDE3LCAyMTMsIDExMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxOTksIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgCi0gICAgMjIyLCA2MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyOCwgMTEzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUwLCA0OSwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgODEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTAsIDIyMywgMjIwLCA0NywgCi0gICAgMjQ2LCAxMzUsIDEsIDI1MSwgMzksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjgsIDExMiwgMjIwLCA0NywgMjQ2LCAxMzUsIAotICAgIDEsIDI1MSwgMjQzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAyNDQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIAotICAgIDI0MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgMjM3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI3LCAxNDgsIDIyMCwgCi0gICAgNDcsIDI0NiwgMTM1LCAxLCAyMzAsIDIxNSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIzMSwgODQsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxLCAyMzAsIDIzNiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIzMCwgMjI0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgCi0gICAgMjI2LCAyMzksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDcsIDMxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA3LCAyOSwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNiwgMjI5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA2LCAxNzAsIDIyMCwgNDcsIAotICAgIDI0NiwgMTM1LCAxLCAyMjcsIDIzNCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgNDYsIDIyMCwgNDcsIDI0NiwgMTM1LCAKLSAgICAxLCAyNDEsIDE2NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgOTIsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIAotICAgIDIxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI3LCA0OSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIxOSwgMjE5LCAyMjAsIAotICAgIDQ3LCAyNDYsIDEzNSwgMSwgMjIwLCA5MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIxOSwgMjA2LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMSwgMjIwLCA2MCwgMjIwLCA0NywgMjQ2LCAxMzUsIDIyMywgMjQ3LCAyMDcsIDIwNiwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDIzOSwgMywgMjA3LCAyMDcsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMjMsIDI0NSwgMjA3LCAyMDcsIDIyMCwgNDcsIAotICAgIDI0NiwgMTM1LCAyMTYsIDExOCwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxOCwgMjA2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjUxLCAKLSAgICA3MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxNywgMTc5LCAyMjMsIDI0MSwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxNywgMTc5LCAKLSAgICA1MiwgMjIzLCAyNDEsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjEwLCAxODQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgCi0gICAgMjQ4LCA2NCwgMjE5LCAxMTMsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjE3LCAxNjcsIDIxMCwgMjEzLCAyMTcsIAotICAgIDE3OSwgMjQ4LCA2NCwgMjQ3LCA3NywgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMjcsIDE3MiwgMjE0LCAyMjQsIAotICAgIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjMwLCA0NCwgMjE0LCAyMjQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCAKLSAgICA2NCwgMjQ0LCAyMTMsIDIxNCwgMjI0LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDI0OSwgMzMsIDIxNCwgMjI0LCAKLSAgICAyMDYsIDUyLCAxNDMsIDIyOSwgMjM0LCAyMDYsIDUyLCAxNDMsIDIxMywgNTgsIDIwNiwgNTIsIDE0MywgMjE3LCAyNDUsIAotICAgIDIwNiwgNTIsIDIsIDIyMiwgNzYsIDIwNiwgNTIsIDIsIDIwMywgODcsIDIyNCwgMTQ2LCAyMTAsIDE3NSwgMjA2LCA1MiwgCi0gICAgMTQzLCAyMDMsIDg3LCAyNTEsIDc3LCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMzEsIDM2LCAKLSAgICAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMjksIDIyMiwgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIAotICAgIDE0MywgMjQ3LCA1NSwgNTYsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjI5LCAyMjIsIDIzMSwgMzYsIDIxMCwgMTc2LCAKLSAgICAyMTQsIDE5NCwgMjA2LCA1MiwgMTQzLCA1MiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjA4LCA3MCwgMjEwLCAxNzUsIAotICAgIDIwNiwgNTIsIDE0MywgMjI5LCAyMjIsIDI1MCwgMTgyLCAyMDYsIDUyLCAxNDMsIDcwLCA1NiwgMjA2LCA1MiwgMTQzLCAKLSAgICAxMjAsIDE4NywgNTYsIDIwNiwgNTIsIDE0MywgMTI2LCAxODcsIDU2LCAyMDYsIDUyLCAxNDMsIDIxNiwgNCwgMjI5LCAyMzMsIAotICAgIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDI1MCwgNDcsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAyLCAKLSAgICAyMDUsIDIwMCwgMjEwLCAxNzUsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyMDcsIDI2LCAyMDYsIDUyLCAyLCAyMTYsIDczLCAKLSAgICAyMDUsIDIwMCwgMjA3LCAyNiwgMjA2LCA1MiwgMiwgMjA1LCAyMDAsIDI1MCwgMTgyLCAyMDYsIDUyLCAyLCAyMTYsIDczLCAKLSAgICAyMDUsIDIwMCwgMjUwLCAxODIsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyMDcsIDI3LCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgCi0gICAgMiwgMjA1LCAyMDAsIDI1MCwgMTgzLCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDI1MCwgMTk3LCAyMDYsIAotICAgIDUyLCAyLCAyNTAsIDE4MSwgMjQ5LCAyLCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjA2LCA3NywgMjA2LCA1MiwgMiwgMjUwLCAKLSAgICAxODEsIDIwNiwgNzgsIDMsIDIwOSwgMjQ4LCAyMDYsIDUyLCAyLCAyMDgsIDIwMSwgMjA2LCA1MiwgMiwgMjM3LCAxNSwgCi0gICAgMTYzLCAyNTAsIDE4MCwgMjA2LCA1MiwgMiwgMTYzLCAyNTAsIDE4MCwgMjA2LCA1MiwgMiwgMjE1LCAxNDcsIDE2MywgMjUwLCAKLSAgICAxODAsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyMDcsIDMzLCAyMjMsIDIzMiwgMjA2LCA1MiwgMiwgMjUwLCAxMjIsIDIwNiwgCi0gICAgNTIsIDIsIDIxNSwgMTk4LCAyNTAsIDEyMiwgMjA2LCA1MiwgMTQzLCAyNDcsIDU1LCA1NSwgMjA2LCA1MiwgMiwgMjMwLCAKLSAgICAxMzUsIDIwNiwgNTIsIDIsIDIwNiwgMjIyLCAyMDYsIDUyLCAxNDMsIDIxNSwgMjUzLCA1NSwgMjA2LCA1MiwgMTQzLCA1MiwgCi0gICAgMjE1LCAyNTMsIDU1LCA4LCAxLCA1LCA2LCA2MywgOCwgMSwgNSwgNiwgMjUxLCAxMDksIDgsIDUsIDEsIDIwNywgMTc0LCAKLSAgICAyNTEsIDEwOSwgOCwgMSwgNSwgNiwgMjQ4LCAyMjUsIDI0OSwgMjU1LCA4LCAxLCA1LCA2LCAyNDcsIDEyNSwgOCwgMSwgNSwgCi0gICAgNiwgMjQ1LCA1MSwgOCwgMSwgNSwgNiwgMjQwLCAyNDMsIDgsIDEsIDUsIDYsIDc0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMTcxLCAKLSAgICA3NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDc1LCA4LCAxLCA1LCA2LCAyMzAsIDE4NCwgOCwgMSwgNSwgNiwgMjMwLCA1NCwgOCwgCi0gICAgMSwgNSwgNiwgMjI4LCAxMzEsIDMsIDk1LCA4LCAxLCA1LCA2LCAyMjYsIDE4NSwgOCwgMSwgNSwgNiwgMjE2LCA3MywgMjIzLCAKLSAgICAxNjMsIDgsIDEsIDUsIDYsIDc4LCA4LCAxLCA1LCA2LCAxNzEsIDc4LCA4LCA1LCAxLCAyMTIsIDE1NCwgNzgsIDgsIDUsIDEsIAotICAgIDIxMiwgMTU0LCAxNzEsIDc4LCA4LCA1LCAxLCAyMTIsIDE1NCwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyMCwgCi0gICAgNzMsIDgsIDEsIDUsIDYsIDIxOSwgMjE2LCA4LCA1LCAxLCAyMDgsIDE0NSwgMTYyLCA3OCwgOCwgNSwgMSwgMjQ3LCAyNDgsIAotICAgIDE2MiwgNzgsIDgsIDEsIDUsIDYsIDIxOSwgMTg0LCA4LCAxLCA1LCA2LCAyMTYsIDczLCAxNDYsIDgsIDEsIDUsIDYsIDIwNywgCi0gICAgMTc0LCAxNDYsIDgsIDEsIDUsIDYsIDIxMCwgNjksIDgsIDEsIDUsIDYsIDY4LCA4LCA1LCAxLCAyMTIsIDE1NCwgNjgsIDgsIAotICAgIDUsIDEsIDIxMiwgMTU0LCAyNDMsIDIyOSwgNjgsIDgsIDUsIDEsIDIxMiwgMTU0LCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIAotICAgIDEsIDUsIDYsIDIwNiwgMTY0LCA4LCAxLCA1LCA2LCAyMDQsIDE0NCwgOCwgMSwgNSwgNiwgMjAyLCAxNTksIDgsIDEsIDUsIAotICAgIDYsIDI0MCwgMTc3LCA4LCAxLCAyMDUsIDE4NiwgMjI4LCAzLCAyMTEsIDIwMCwgOCwgMSwgMjUxLCA1OSwgMzAsIDEsIDUsIAotICAgIDYsIDIzOCwgMjM1LCAzMCwgMSwgNSwgNiwgMjI4LCAyNCwgMzAsIDEsIDUsIDYsIDIxOCwgMTY3LCAzMCwgMSwgNSwgNiwgCi0gICAgMjE2LCA1OSwgMzAsIDEsIDUsIDYsIDIxNywgMjAyLCAzNiwgMSwgNSwgNiwgMjQxLCAxMjIsIDY1LCAxLCA2LCA2MywgNjUsIAotICAgIDEsIDYsIDI1MSwgMTA5LCA2NSwgMSwgNiwgMjQ5LCAyNTUsIDY1LCAxLCA2LCAyNDgsIDIyNSwgMjQ5LCAyNTUsIDY1LCAxLCAKLSAgICA2LCAyNDUsIDUxLCA2NSwgMSwgNiwgNzQsIDY1LCAxLCA2LCAyMTYsIDczLCA3NCwgNjUsIDEsIDYsIDIzOSwgNzUsIDY1LCAKLSAgICAxLCA2LCAyMzcsIDE3MSwgNjUsIDEsIDYsIDc1LCA2NSwgMSwgNiwgMjMwLCAxODQsIDY1LCAxLCA2LCAyMzAsIDU0LCA2NSwgCi0gICAgMSwgNiwgMTU5LCA2NSwgMSwgNiwgMjI2LCAxODUsIDY1LCAxLCA2LCAyMjMsIDE2MywgNjUsIDEsIDYsIDIxNiwgNzMsIAotICAgIDIyMywgMTYzLCA2NSwgMSwgNiwgNzgsIDY1LCAxLCA2LCAyMTksIDIxNiwgNjUsIDEsIDYsIDIxOSwgMTg0LCA2NSwgMSwgNiwgCi0gICAgMTQ2LCA2NSwgMSwgNiwgMjEwLCA2OSwgNjUsIDEsIDYsIDY4LCA2NSwgMSwgNiwgMjA0LCAxNDQsIDY1LCAxLCA1LCA2MywgCi0gICAgNjUsIDEsIDUsIDIwNywgMTc0LCA2MywgNjUsIDEsIDUsIDI1MSwgMiwgNjUsIDEsIDUsIDIwNywgMTc0LCAyNTEsIDEwOSwgCi0gICAgNjUsIDEsIDUsIDI0OSwgMjU1LCA2NSwgMSwgNSwgMjQ1LCA1MSwgNjUsIDEsIDUsIDc0LCA2NSwgMSwgNSwgMjE0LCAxOTIsIAotICAgIDY1LCAxLCA1LCAxNzEsIDc0LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDE3MSwgNzQsIDY1LCAxLCA1LCAyMzksIDc1LCA2NSwgMSwgCi0gICAgNSwgMjA3LCAxNzQsIDc1LCA2NSwgMSwgNSwgMjMwLCA1NCwgNjUsIDEsIDUsIDIyNiwgMTg1LCA2NSwgMSwgNSwgMjQxLCAKLSAgICA3OCwgNjUsIDEsIDUsIDc4LCA2NSwgMSwgNSwgMTcxLCA3OCwgNjUsIDEsIDUsIDIwOCwgMTQ1LCAxNjIsIDc4LCA2NSwgMSwgCi0gICAgNSwgMjQ3LCAyNDgsIDE2MiwgNzgsIDY1LCAxLCA1LCAyMTksIDE4NCwgNjUsIDEsIDUsIDIxMCwgNjksIDY1LCAxLCA1LCAKLSAgICA2OCwgNjUsIDEsIDUsIDIxMiwgMTU0LCA2OCwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMjYsIDE4NSwgNjUsIDEsIDUsIDIwNiwgCi0gICAgMTY0LCA2NSwgMSwgNSwgMjUxLCA1OSwgNjUsIDEsIDUsIDI0OCwgMTA2LCA2NSwgMSwgNSwgMzAsIDIzOCwgMjM1LCA2NSwgCi0gICAgMSwgNSwgMjQ0LCAzNywgNjUsIDEsIDUsIDMwLCAyMTgsIDE5MiwgNjUsIDEsIDUsIDI0NiwgMTQyLCA4LCAyMTAsIDI0NiwgCi0gICAgNSwgMSwgNzUsIDgsIDIxMCwgMjQ2LCA1LCAxLCAxNDYsIDgsIDIxMCwgMjQ2LCA1LCAxLCA2OCwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIwNiwgMTY0LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDI0OCwgMTA2LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDIzOCwgMjM1LCAKLSAgICAzMCwgMjEwLCAyNDYsIDUsIDEsIDIxNiwgNTksIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjE4LCAxOTIsIDMwLCAyMTAsIDI0NiwgCi0gICAgNSwgMSwgMjQ2LCAxNDIsIDgsIDUsIDEsIDIwNywgMjQsIDgsIDUsIDEsIDY2LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyNDUsIDUyLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjI2LCAxODYsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMTksIDE4NSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjE3LCAxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDMsIDIzOSwgMjQxLCAyNSwgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTAxLCAyMDgsIAotICAgIDIyNywgOCwgNSwgMSwgMjEwLCA3MCwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDEwMSwgMjA4LCAKLSAgICAyMjcsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzksIDc1LCA2NSwgMSwgMzYsIDI0MSwgOTIsIDgsIDUsIDEsIDIzMSwgNCwgCi0gICAgMjM5LCA3NSwgOCwgNSwgMSwgMjA5LCAxMTEsIDMsIDIxMSwgMzYsIDgsIDUsIDYsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgCi0gICAgNSwgMSwgMjMwLCAyMzEsIDMsIDk1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgOTUsIDgsIDUsIDYsIDEsIDEwNiwgMywgOTUsIAotICAgIDgsIDUsIDEsIDIwNiwgMjE3LCAzLCA5NSwgOCwgNSwgMSwgNjYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0NSwgCi0gICAgNTIsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzksIAotICAgIDc2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjgsIAotICAgIDEzMSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyMywgCi0gICAgMTY0LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE3LCAKLSAgICAxLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDEsIDgsIAotICAgIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDMsIDE5NywgCi0gICAgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI1MSwgMywgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyMzYsIAotICAgIDExNiwgMjUsIDIwOSwgMjQ4LCA4LCA1LCAxLCAxODgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTcxLCAxODgsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjE2LCA3MywgMTcxLCAxODgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjE0LCAKLSAgICAxOTMsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTcxLCAKLSAgICAxNTgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQxLCA4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDEwNiwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIAotICAgIDI1MSwgMiwgNjUsIDEsIDUsIDI0NywgMTI1LCA2NSwgMSwgNSwgMjQ3LCAxMjYsIDMsIDI0NSwgOTUsIDY1LCAxLCA1LCAKLSAgICAyNDAsIDI0MywgNjUsIDEsIDUsIDIxNiwgNzMsIDE3MSwgNzQsIDY1LCAxLCA1LCAyNDAsIDE3NCwgNjUsIDEsIDUsIDI0MywgCi0gICAgODQsIDIzMCwgMTg1LCAzLCA5NSwgNjUsIDEsIDUsIDEzMiwgMjM5LCA3NSwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMzcsIAotICAgIDE3MSwgNjUsIDEsIDUsIDIzNSwgMjA2LCAzLCA5NSwgNjUsIDEsIDUsIDIzMCwgMjMwLCA2NSwgMSwgNSwgNiwgNzUsIDY1LCAKLSAgICAxLCA1LCA2LCAyMzUsIDIwNiwgMywgOTUsIDY1LCAxLCA1LCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDY1LCAxLCA1LCAyMjgsIAotICAgIDEzMSwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjI4LCAxMzEsIDMsIDIxOSwgMTQyLCAxMTMsIDY1LCAxLCA1LCA2LCAKLSAgICAxNTksIDY1LCAxLCA1LCAyMjYsIDE4NiwgMywgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIyNiwgMTg2LCAzLCAxNjMsIAotICAgIDIyNywgMjEwLCA2NSwgMSwgNSwgMjIzLCAxNjQsIDMsIDQ5LCAxMTMsIDY1LCAxLCA1LCAyMjMsIDE2NCwgMywgMjE2LCA3OSwgCi0gICAgMTEzLCA2NSwgMSwgNSwgNiwgMjIzLCAxNjMsIDY1LCAxLCA1LCAyNDgsIDIyNSwgNzgsIDY1LCAxLCA1LCAyMTgsIDE5MiwgCi0gICAgNjUsIDEsIDUsIDIxNSwgOTQsIDMsIDExMywgNjUsIDEsIDUsIDI0MSwgNywgNjUsIDEsIDUsIDIxMCwgNzAsIDMsIDIxOSwgCi0gICAgMTQyLCAxMTMsIDY1LCAxLCA1LCAxMDYsIDE0MiwgNjUsIDEsIDUsIDIwNiwgMjE2LCA2NSwgMSwgNSwgNiwgNjgsIDY1LCAxLCAKLSAgICA1LCAyMDYsIDE2NSwgMywgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA2NSwgMSwgNSwgMjAyLCAxNTksIAotICAgIDY1LCAxLCA1LCAyMDIsIDE2MCwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjAyLCAxNjAsIDMsIDI0NSwgOTUsIDY1LCAKLSAgICAxLCA1LCAyNDAsIDE3NywgNjUsIDEsIDUsIDIwOSwgNzQsIDM5LCAyNDIsIDgzLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM5LCAKLSAgICAyNDIsIDgzLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAyMTIsIDI1LCA1NiwgMzksIDIxMCwgMTgyLCA4MiwgMzksIDIyNSwgCi0gICAgMTY5LCAzOSwgMjM3LCAyNTEsIDM5LCAyMjUsIDE2NywgMzksIDI1MSwgMTI0LCAzOSwgMjM3LCAyNTIsIDM5LCAyNTEsIAotICAgIDEyNSwgMzksIDgsIDUsIDEsIDIxNywgMSwgNTYsIDM5LCAyNDcsIDIxMywgMzksIDIyNSwgMTY4LCAzOSwgNTIsIDI0NiwgCi0gICAgNTMsIDU1LCAzOSwgMjIwLCA2MywgNTUsIDM5LCAyMDIsIDMwLCA1NiwgMzksIDIzMCwgMjE2LCA1NiwgMzksIDIwNiwgMjExLCAKLSAgICA1NSwgMzksIDIwNiwgMTk0LCA1NSwgMzksIDgsIDUsIDEsIDIzOSwgMjE0LCAxNzEsIDM0LCA1NSwgMzksIDgsIDUsIDEsIAotICAgIDI1MSwgMTA5LCAzOSwgOCwgNSwgMSwgMjUwLCAxNzgsIDM5LCA4LCA1LCAxLCAyNTAsIDE4LCAzOSwgOCwgNSwgMSwgMjQ3LCAKLSAgICAxMjYsIDI0NiwgMjMxLCAzOSwgOCwgNSwgMSwgMjMxLCA0LCAyNDUsIDUxLCAzOSwgOCwgNSwgMSwgMjQwLCAyNDMsIDM5LCAKLSAgICA4LCA1LCAxLCAyMzksIDc1LCAzOSwgOCwgMSwgNSwgNiwgMjM5LCA3NSwgMzksIDgsIDUsIDEsIDIzMCwgNTQsIDM5LCA4LCAKLSAgICA1LCAxLCAxNTksIDM5LCA4LCAxLCA1LCA2LCAxNTksIDM5LCA4LCAxLCA1LCA2LCAyMjYsIDE4NSwgMzksIDgsIDUsIDEsIAotICAgIDIyMywgMTYzLCAzOSwgOCwgMSwgNSwgNiwgMjIzLCAxNjMsIDM5LCA4LCAxLCA1LCA2LCAxNDYsIDM5LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDIxNSwgMTkyLCAzOSwgOCwgNSwgMSwgMTk0LCAzOSwgOCwgNSwgMSwgMTYzLCAxOTQsIDM5LCA4LCA1LCAxLCAKLSAgICAyMDIsIDE1OSwgMzksIDgsIDUsIDEsIDI1MSwgMiwgMzksIDgsIDUsIDEsIDI0OSwgMjU1LCAzOSwgOCwgNSwgMSwgMjQ4LCAKLSAgICAxMDYsIDM5LCA4LCA1LCAxLCAyMTQsIDE5MiwgMzksIDgsIDUsIDEsIDI0MCwgMTc0LCAzOSwgOCwgNSwgMSwgMjI4LCAxMzEsIAotICAgIDMsIDUyLCAxMDEsIDIwOCwgMjI3LCAzOSwgOCwgNSwgMSwgMTU4LCAzLCAxNTcsIDI0NiwgMjE5LCA5NSwgMzksIDgsIDUsIAotICAgIDEsIDIxOSwgMTg0LCAzOSwgOCwgNSwgMSwgMjQxLCA3LCAzOSwgOCwgNSwgMSwgMTA2LCAzLCAxNTcsIDI0NiwgMjE5LCA5NSwgCi0gICAgMzksIDgsIDUsIDEsIDIwNCwgMTQ0LCAzOSwgOCwgNSwgMSwgMzQsIDMsIDI0MywgMjMxLCAzOSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICAyNDMsIDIzMSwgMzksIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM5LCAxMTIsIDIxMCwgNCwgNTUsIDM5LCA1MiwgCi0gICAgMjMwLCAyMzksIDI0NywgMjE1LCA1NiwgMzksIDI1MSwgNywgMTU2LCAyMDgsIDE3MywgNTYsIDM5LCA0OSwgMjUwLCA5NSwgCi0gICAgNTUsIDM5LCA1MCwgMjUwLCA5NSwgMjUsIDEyMSwgMjUwLCA5NSwgNTYsIDgsIDYsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTYsIAotICAgIDgsIDUsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTYsIDgsIDYsIDEsIDY2LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDY2LCAzLCA3MCwgCi0gICAgNTUsIDgsIDYsIDEsIDY2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDY2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDY2LCAzLCAyMjcsIAotICAgIDExNSwgNTYsIDgsIDUsIDEsIDY2LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMiwgCi0gICAgMjUsIDE2NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMyLCAyNSwgMTY1LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgNzAsIDU2LCA4LCA1LCAKLSAgICAxLCAyNDUsIDUyLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjQ1LCAKLSAgICA1MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgCi0gICAgMjQ2LCAyMzEsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDUzLCAKLSAgICA1NiwgOCwgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAKLSAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAKLSAgICAxNzEsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgNTYsIAotICAgIDgsIDYsIDEsIDE4OCwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNiwgMSwgCi0gICAgMTg4LCAzLCAyNDYsIDIzMiwgMjUsIDI0NywgMjE0LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgMjMyLCAyNSwgMjQ3LCAyMTQsIAotICAgIDgsIDYsIDEsIDI0MCwgMTc1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIzOSwgCi0gICAgNzYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMzksIDc2LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDcwLCAKLSAgICA1NSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMjM3LCAxNzIsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMzcsIDE3MiwgCi0gICAgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NiwgCi0gICAgMjMxLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyMTUsIDU2LCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyMTUsIAotICAgIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjgsIAotICAgIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIAotICAgIDIzMiwgMjUsIDE2NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMTY1LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAxNjUsIDgsIDYsIAotICAgIDEsIDIzMCwgNTUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjMwLCA1NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAKLSAgICAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIAotICAgIDcwLCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDcwLCAyNDgsIDEyNiwgCi0gICAgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAotICAgIDIyOCwgMTMxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIAotICAgIDIyOCwgMTMxLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAKLSAgICAyMjYsIDE4NiwgMywgMTY1LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMTY1LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgNzAsIAotICAgIDU1LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAyMjYsIDE4NiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgCi0gICAgNzAsIDU1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU2LCA4LCA2LCAKLSAgICAxLCAyMjMsIDE2NCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAKLSAgICAxLCAyMjMsIDE2NCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDI0MywgMjMxLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjQzLCAyMzEsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAKLSAgICAyNSwgMTY1LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMTY1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNywgMSwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjE3LCAxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNSwgCi0gICAgMSwgMjE3LCAxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMjcsIDExNSwgCi0gICAgNTYsIDgsIDUsIDEsIDIxNywgMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDUsIAotICAgIDEsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAKLSAgICA3MCwgNTYsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI1MSwgMTI2LCAyNSwgNzAsIDU1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAKLSAgICAyNTEsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ3LCAzMCwgMjUsIDcwLCA1NSwgOCwgNSwgMSwgCi0gICAgMjE1LCA5NCwgMywgMjQ3LCAzMCwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxMCwgNzAsIAotICAgIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTYsIDgsIAotICAgIDUsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAKLSAgICAyMTAsIDcwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMTAsIAotICAgIDcwLCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAKLSAgICAyMzIsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIAotICAgIDYsIDEsIDEwNiwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIDEwNiwgMywgCi0gICAgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgCi0gICAgMjI1LCAxNzEsIDI1LCAyNDMsIDIzMSwgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDI0MywgMjMxLCA4LCA2LCAxLCAKLSAgICAyMDYsIDE2NSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjA2LCAxNjUsIAotICAgIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDIzNywgMjUzLCAKLSAgICA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAxNjUsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ1LCAzLCAxNjUsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDI0MywgCi0gICAgMjMxLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAKLSAgICAyMDQsIDE0NSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDE5NywgMywgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyMDMsIDE5NywgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDMsIDE5NywgMywgMjQzLCAyMzEsIDgsIAotICAgIDUsIDEsIDIwMywgMTk3LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDYsIAotICAgIDUyLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU2LCA4LCA2LCAxLCAKLSAgICAyMDIsIDE2MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAKLSAgICAyMzcsIDE3MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDUsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMzQsIDMsIAotICAgIDUwLCAxNjIsIDIxNSwgMjUyLCA4LCA1LCAxLCAxNjMsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTYzLCAyMTUsIAotICAgIDk0LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDE2MywgMjE1LCA5NCwgMywgMTM4LCA5NSwgOCwgNiwgMSwgMjEzLCA1NywgCi0gICAgMTk0LCA4LCA1LCAxLCAyNDQsIDM3LCA4LCA2LCAxLCAzNCwgMywgNzAsIDU2LCA4LCA1LCAxLCAzNCwgMywgNzAsIDU2LCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAzNCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyNDYsIAotICAgIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgCi0gICAgNzAsIDU2LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIAotICAgIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgCi0gICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICAyNDcsIDIxNSwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCA3MCwgNTYsIAotICAgIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMTg4LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDE4OCwgMywgNzAsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAyMzYsIDExNiwgCi0gICAgNTUsIDgsIDYsIDEsIDE4OCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIAotICAgIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAKLSAgICAxMTYsIDU1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIAotICAgIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgNzAsIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDE1OCwgCi0gICAgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAKLSAgICAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIAotICAgIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIAotICAgIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIAotICAgIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgCi0gICAgNTYsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgCi0gICAgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMTA2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgMTE2LCAKLSAgICA1NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIAotICAgIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIAotICAgIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCAKLSAgICA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAyMzcsIDI1MywgOCwgCi0gICAgNSwgMSwgMjAzLCAxMjUsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDMsIAotICAgIDEyNSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgCi0gICAgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMjI0LCAxNDcsIDIyNywgNzgsIDgsIDUsIDEsIDIyNCwgMTQ3LCAyMjcsIDc4LCA4LCA2LCAxLCAKLSAgICAyMjQsIDE0NywgMjA2LCAxNjQsIDgsIDUsIDEsIDIyNCwgMTQ3LCAyMDYsIDE2NCwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIAotICAgIDIyNywgMTQsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMjcsIDE0LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NSwgCi0gICAgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgCi0gICAgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIAotICAgIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDEsIAotICAgIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCi0gICAgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQxLCAzOCwgCi0gICAgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIAotICAgIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIAotICAgIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MSwgCi0gICAgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAKLSAgICAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk1LCAzMCwgCi0gICAgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgCi0gICAgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAKLSAgICAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKLSAgICAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDEsIAotICAgIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgCi0gICAgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgCi0gICAgMjMwLCAyMzEsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjMwLCAKLSAgICAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgCi0gICAgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIAotICAgIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIxNywgCi0gICAgMTk1LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM1LCAKLSAgICAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAKLSAgICAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIAotICAgIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNSwgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIAotICAgIDIwNiwgMjE3LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCAKLSAgICA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAotICAgIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAKLSAgICAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCAKLSAgICA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMTk1LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAKLSAgICAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAKLSAgICAyNDQsIDE0MSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAKLSAgICAxLCAyNTEsIDMsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQxLCAzOCwgCi0gICAgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjA2LCA3MCwgMzAsIAotICAgIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAKLSAgICAyMjAsIDM1LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIAotICAgIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOSwgCi0gICAgMTg5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAKLSAgICAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCAKLSAgICA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIAotICAgIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgCi0gICAgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAKLSAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAKLSAgICAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIAotICAgIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCi0gICAgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAotICAgIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgCi0gICAgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIAotICAgIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKLSAgICAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAKLSAgICAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIAotICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAKLSAgICAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgCi0gICAgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAKLSAgICAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgCi0gICAgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAKLSAgICAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIAotICAgIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgCi0gICAgMjIxLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAKLSAgICAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgCi0gICAgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAKLSAgICAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAotICAgIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDUsIDE2NywgMzAsIDUsIDEsIDI1MSwgMywgMywgCi0gICAgMjI1LCAxNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgCi0gICAgMywgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIAotICAgIDMsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgCi0gICAgMjUxLCAzLCAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDI1MSwgMywgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIAotICAgIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDIwOSwgCi0gICAgMzAsIDIyOCwgMjUyLCAzMCwgMjE3LCAyMDksIDMwLCAyMTcsIDE5NSwgMzAsIDIxOCwgMjM5LCAzMCwgMjQzLCAyMjUsIDI1LCAKLSAgICAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAotICAgIDEsIDI0MCwgMjQ5LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAKLSAgICAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCi0gICAgMjQwLCAyNDksIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjE3LCAyMDksIDMwLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMDUsIDE2NywgMzAsIDUsIDEsIAotICAgIDIzMCwgMjMxLCAzLCAyMjUsIDE3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCAKLSAgICA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTgsIAotICAgIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIAotICAgIDMsIDIwNSwgMTY3LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIwNiwgCi0gICAgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE5LCAxODksIDMwLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCAyNDQsIAotICAgIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAKLSAgICAyMDUsIDE2NywgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMjUsIDE3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIAotICAgIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAotICAgIDEsIDIxNiwgNjAsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjE2LCA2MCwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMDYsIAotICAgIDIxNywgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIAotICAgIDEsIDIwNiwgMjE3LCAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDIwNiwgCi0gICAgMjE3LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjE2LCA2MCwgMywgCi0gICAgMjQ0LCAxNDEsIDMwLCAyNDMsIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCAyNDMsIDIyNSwgMjUsIDIxOSwgMTg5LCAzMCwgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIAotICAgIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgCi0gICAgMzcsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIAotICAgIDIyMCwgMzUsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIAotICAgIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMjA5LCAzMCwgMjE5LCAxODksIDMwLCAyNDQsIDE0MSwgMjQxLCA5MywgMjE3LCA2MiwgMjQxLCAxMDQsIDIxNywgNjIsIAotICAgIDI0MSwgOTMsIDIxMSwgMjI4LCAyNDEsIDEwNCwgMjExLCAyMjgsIDIwOSwgMjgsIDIxMSwgMjI4LCAyMzksIDE0NSwgMjExLCAKLSAgICAyMjgsIDIxMiwgODYsIDIxMSwgMjI4LCAyNDAsIDE2LCAyMTEsIDIyOCwgMjE3LCAxNzksIDIxMSwgMjI4LCAyMDksIDYzLCAKLSAgICAyMTEsIDIyOCwgMjM3LCAxNDYsIDIxMSwgMjI4LCAyMDIsIDg1LCAyMDQsIDI0LCAyMTEsIDIyOCwgMjAyLCA4NSwgMjA0LCAKLSAgICAyNCwgMjIxLCAxODMsIDIwMiwgODUsIDIwNCwgMjQsIDIzMCwgOTYsIDIyNywgMjEzLCA4MiwgMjE2LCA3LCA4MiwgMjM1LCAKLSAgICAyMjAsIDIyMSwgMTg0LCAyMzUsIDIyMCwgMjQwLCAxNiwgMjQ0LCAxNDQsIDI0MSwgOTMsIDI0NCwgMTQ0LCAyNDEsIDEwNCwgCi0gICAgMjQ0LCAxNDQsIDIzNiwgMTA2LCAxNDIsIDUyLCA4MCwgMjI3LCAxMTQsIDUyLCAxMjQsIDIyNywgMTE0LCA0OSwgMjEyLCAKLSAgICAxMjAsIDIxNywgMzEsIDgyLCA1MCwgMjEyLCAxMjAsIDIxNywgMzEsIDgyLCAyMTIsIDEyMCwgMjI2LCAyNTUsIDIxNywgMzEsIAotICAgIDgyLCAyMTIsIDEyMCwgMjM2LCAyNDEsIDIxNywgMzEsIDgyLCA0OSwgNTIsIDIxNywgMzEsIDgyLCA1MCwgNTIsIDIxNywgCi0gICAgMzEsIDgyLCA1MiwgMjI2LCAyNTUsIDIxNywgMzEsIDgyLCA1MiwgMjM2LCAyNDEsIDIxNywgMzEsIDgyLCAyNDQsIDE5NSwgCi0gICAgNTIsIDI0NCwgMTk1LCAyNDcsIDE3NywgMjA4LCA4MiwgMjQ3LCAxNzcsIDExOCwgNzAsIDIyNywgMjMyLCAxMjAsIDcwLCAKLSAgICAyMjcsIDIzMiwgMjM2LCAxMDYsIDI0MSwgMTA4LCAyMzUsIDIxOCwgMjE4LCA2MiwgMjI3LCAxMTUsIDIxMywgMTMwLCAyMTksIAotICAgIDg5LCAyMTMsIDEzMCwgMjI3LCAyMTMsIDI0MSwgMTAyLCAyMTYsIDcsIDI0MSwgMTAyLCAyMTgsIDQyLCAyNDMsIDE2NSwgCi0gICAgMjM5LCAxNTcsIDIyNywgMjEzLCAyMTksIDE5NiwgMjE2LCA3LCAyMTksIDE5NiwgMjIzLCA3MywgMjIxLCAxOTAsIDIxMSwgCi0gICAgMjI4LCAyMTgsIDI0NywgMjI0LCAxMTYsIDU0LCAyMTgsIDI0NywgMjA5LCAxNTMsIDIwOSwgMzcsIDU0LCAyMTcsIDIzNiwgCi0gICAgNTIsIDIxNywgMjM2LCAyMDgsIDcwLCAyMTcsIDIzNiwgMjE2LCA3MywgMjE3LCAyMzYsIDIxNiwgNzMsIDUyLCAyMTcsIAotICAgIDIzNiwgMjE2LCA3MywgMjA4LCA3MCwgMjE3LCAyMzYsIDI0NywgMzMsIDIxMiwgMTIwLCAyMjcsIDIxNywgMjUwLCAyMTgsIAotICAgIDIxNywgMzEsIDgyLCAyMTIsIDEyMCwgMjE2LCAxMSwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMTYsIDEzNCwgODIsIDUyLCAKLSAgICAyNDAsIDIxMiwgODIsIDIzMCwgMjQ3LCAyMTksIDE5OCwgMjA2LCAyNDMsIDE2NywgMjA4LCAyNTAsIDI0NywgMzQsIDIzMSwgCi0gICAgOCwgMjE4LCA2MiwgMjUwLCA1NywgMjM1LCAyMjEsIDI0NywgMTc3LCAyMzksIDEzOCwgMjEyLCA1NywgNDksIDUxLCAyNDcsIAotICAgIDIyNywgMywgMjE3LCA0MSwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjE3LCA0MSwgNTIsIDIxNywgNDcsIDgyLCAyMTcsIDQ3LCAKLSAgICAyNDAsIDIxMiwgODIsIDI0MCwgMjEyLCAyMTcsIDQ3LCA4MiwgMjA4LCAyMDMsIDIsIDI0MCwgMjUwLCAyMTYsIDczLCAyMTgsIAotICAgIDEyNiwgNTQsIDYyLCA5NiwgMjQ3LCAxNzcsIDYyLCA4NiwgMjQ3LCAxNzcsIDEyNCwgMjUwLCA1OSwgMjE2LCA3MywgMjEzLCAKLSAgICAxNDMsIDI0NiwgMTcsIDIwNiwgMjI0LCAxMjAsIDI1MCwgNTgsIDI1MSwgMTgsIDIwNSwgMjQzLCAyNDUsIDIzMSwgMjI0LCAKLSAgICAxMDMsIDU0LCAyMTAsIDE1MywgMjQ0LCAxNDQsIDIzMCwgMjM5LCAyMDYsIDI0MywgMjM5LCAxOTgsIDIxNywgMTc5LCA4MiwgCi0gICAgMTI2LCA3MCwgMjE3LCAxNzgsIDIxNywgNTgsIDIxNywgMjM2LCAyMzksIDE0NywgNzAsIDIxNywgMTc4LCAyMzksIDIzMywgCi0gICAgNzAsIDIxNywgMTc4LCAxMjAsIDcwLCAyMTcsIDE3OCwgMjM5LCAxNDcsIDcwLCA4MiwgMjQyLCA4MywgMjQ1LCAxMzAsIAotICAgIDIwOCwgODEsIDgwLCAyMzksIDE0NywgMjQzLCA4MywgMjI1LCAxMCwgMTMsIDIxMSwgMjI4LCAyMDMsIDIzOCwgMjMwLCA5NiwgCi0gICAgMjM5LCAxMDAsIDI1MCwgMTU1LCAyMzAsIDIzNywgMjA4LCAyMTksIDIzMCwgMjM3LCAyMTMsIDEzMCwgMjMwLCAyMzcsIAotICAgIDIxOCwgNzYsIDIyNywgMjEzLCAyMzAsIDIwNywgMjE2LCA3LCAyMzAsIDIwNywgMjM5LCAyNDUsIDIxMSwgMTgsIDIzMCwgCi0gICAgMjA3LCAyMTgsIDQyLCAyNDMsIDE2NSwgMjMwLCAyMDcsIDIzMSwgMjAsIDIxMCwgMTAxLCAyMTAsIDE3MCwgMjUxLCAxMjgsIAotICAgIDIxMCwgMTAxLCAyMTAsIDE3MCwgMjMxLCAyMCwgMTAsIDIzOSwgMTU5LCAyMTMsIDYxLCAyNTEsIDEyOCwgMTAsIDIzOSwgCi0gICAgMTU5LCAyMTMsIDYxLCAyMjMsIDY3LCAxNywgMjEzLCA2MiwgMjIxLCAxODYsIDE3LCAyMTMsIDYyLCAyMTAsIDE5OSwgMjAyLCAKLSAgICA4NCwgMjEwLCAxOTksIDgsIDUsIDEsIDc1LCAyMTAsIDE5OSwgMTQ5LCAyMTAsIDE5OSwgMTcwLCAyMTAsIDE5OSwgMTk1LCAKLSAgICAyMTAsIDE5OSwgMjEzLCAxMTEsIDIxMCwgMTk5LCAxOTksIDIxMCwgMTk5LCAyMjIsIDYzLCAyMTAsIDE5OSwgOTEsIDU0LCAKLSAgICAyMTAsIDE5OSwgMjI0LCAxMDIsIDIxMCwgMTk5LCAyNDEsIDM1LCA1NCwgMjEwLCAxOTksIDQ5LCAyMTksIDc2LCAyMTAsIAotICAgIDE5OSwgNTAsIDIxOSwgNzYsIDIxMCwgMTk5LCA4LCA1LCAxLCAyMjMsIDE2MywgMjEwLCAyNDYsIDIwMiwgODQsIDIxMCwgCi0gICAgMjQ2LCAxMDUsIDIxMCwgMjQ2LCAxMDgsIDIxMCwgMjQ2LCAxNDcsIDIxMCwgMjQ2LCAxNDksIDIxMCwgMjQ2LCAxNzAsIAotICAgIDIxMCwgMjQ2LCAxOTUsIDIxMCwgMjQ2LCAyMTMsIDExMSwgMjEwLCAyNDYsIDE5OSwgMjEwLCAyNDYsIDIyMiwgNjMsIDIxMCwgCi0gICAgMjQ2LCA5MSwgNTQsIDIxMCwgMjQ2LCAyMjQsIDEwMiwgMjEwLCAyNDYsIDI0MSwgMzUsIDU0LCAyMTAsIDI0NiwgNDksIAotICAgIDIxOSwgNzYsIDIxMCwgMjQ2LCA1MCwgMjE5LCA3NiwgOCwgMjEwLCAyNDYsIDUsIDEsIDYzLCA4LCAyMTAsIDI0NiwgNSwgMSwgCi0gICAgNzQsIDgsIDIxMCwgMjQ2LCA1LCAxLCA3OCwgOCwgMjEwLCAyNDYsIDUsIDEsIDIwMywgMTk2LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjE0LCAxOTIsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMzcsIDE3MSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIzMCwgNTQsIDgsIAotICAgIDIxMCwgMjQ2LCA1LCAxLCAxNTksIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMjYsIDE4NSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIyMywgCi0gICAgMTYzLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjE5LCAxODQsIDgsIDIxMCwgMjQ2LCA1LCAxLCAxOTQsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMTAsIDY5LCAyNDAsIDIyOSwgNTQsIDI0NSwgMjQzLCA1NCwgMjQ1LCAxMTUsIDU0LCAyMzksIDEyOCwgMjM5LCAxMzIsIAotICAgIDU0LCAyMjcsIDk0LCA1NCwgMjI0LCAxMTcsIDU0LCAyMjMsIDkwLCA1NCwgMjE4LCAyMjQsIDU0LCAyMTUsIDEyMCwgNTQsIAotICAgIDIwMywgMjQ2LCA1NCwgMjIyLCAyMTQsIDIxMywgMjksIDU0LCAyNDMsIDkyLCA1NCwgMjQwLCAyMzAsIDU0LCAyMjksIDc5LCAKLSAgICA1NCwgMjA3LCAxOTYsIDU0LCAyNDIsIDY2LCA1NCwgMjM4LCAxNjYsIDIxOSwgMiwgNTQsIDIxOCwgMjIxLCA1NCwgMjM3LCAKLSAgICAyMjUsIDU0LCAyNTAsIDI0LCA1NCwgMjM2LCAzMiwgNTQsIDI0NiwgMjMzLCA1NCwgMjI3LCA4NCwgMjA4LCAxMjUsIDU0LCAKLSAgICAyMTEsIDIwOSwgNTQsIDIwOSwgMTUwLCA1NCwgMjMxLCAzNCwgMjE1LCAxMjAsIDU0LCAyMDcsIDE3NywgMjI3LCA5NCwgNTQsIAotICAgIDIyMSwgMTczLCAxMzEsIDU0LCAyMjUsIDEyMCwgNTQsIDIxNSwgMTQyLCA1NCwgMjI4LCA0LCA1NCwgMzksIDQ5LCAyMzcsIAotICAgIDg3LCA1NSwgMzksIDUwLCAyMzcsIDg3LCA1NSwgMzksIDE2MywgODAsIDIyNywgMTE1LCAyMTksIDE5OSwgMzksIDIxMiwgCi0gICAgMjI4LCA4MCwgMjI3LCAxMTUsIDIxOSwgMTk5LCAzOSwgMjUwLCAxOTQsIDUzLCA1NSwgMzksIDI0NiwgMTgsIDUzLCA1NSwgCi0gICAgMzksIDQ5LCA1MywgNTUsIDM5LCA1MCwgNTMsIDU1LCAzOSwgMjE1LCAyNTMsIDIxOSwgMTk5LCAzOSwgMjQ2LCAxOCwgMjE1LCAKLSAgICAyNTMsIDIxOSwgMTk5LCAzOSwgMjUwLCAxOTQsIDIxNSwgMjUzLCAyMTksIDE5OSwgMzksIDEyNiwgMTg3LCA1NSwgMzksIAotICAgIDIzOSwgMTQ3LCAxODcsIDU1LCAzOSwgMjQxLCA4OCwgMjQ2LCA2MSwgMzksIDI0MSwgODgsIDIxMSwgMTc3LCAzOSwgMjQxLCAKLSAgICA4OCwgMjQzLCAyMjEsIDM5LCAyNDEsIDg4LCAyNDYsIDYyLCAyNDksIDIwLCAzOSwgNDksIDUwLCA1MywgNTUsIDM5LCAyNDEsIAotICAgIDg4LCAyMTQsIDE4NCwgMzksIDI0MSwgODgsIDIyOSwgMTQ3LCAzOSwgMjQxLCA4OCwgMjA2LCAyMTQsIDIxOCwgNTksIDIwOCwgCi0gICAgODUsIDM5LCAyMTYsIDc0LCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgNTIsIDgwLCAyMTEsIDMyLCAyMTksIDE5OSwgMzksIAotICAgIDI1MCwgMjA0LCA5NywgMzksIDIwOCwgNzAsIDIwNiwgMjQ1LCAzOSwgMjA0LCAyNywgMjQ3LCAyMDgsIDU1LCAzOSwgOTYsIAotICAgIDUzLCAyMTksIDE5OSwgMzksIDE2MywgNTIsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCA4NiwgMjM3LCA4NywgMywgMTUwLCAKLSAgICAyNDIsIDY4LCAzOSwgOTYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgMzksIDQ5LCA1MywgNTYsIDM5LCA1MCwgNTMsIAotICAgIDU2LCAzOSwgMjUwLCA2MCwgNTUsIDI1MSwgMTM0LCAyMjAsIDY5LCAyNTEsIDExOCwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxMCwgCi0gICAgMjU1LCAxNjksIDYsIDI0NywgMTI1LCAyNDQsIDU1LCAyNDYsIDIyMywgMjQ2LCAyMTgsIDIyNywgMTE1LCA5NywgMjQ3LCAKLSAgICAzNSwgMjIwLCA2OSwgMjQ3LCA4NCwgMjA2LCAyNTQsIDI0MCwgMjMxLCAyNDUsIDIwMCwgMjE0LCAxODEsIDI0NCwgNTUsIAotICAgIDI0MCwgOTAsIDEzMiwgNSwgMjM5LCA3NSwgMTMyLCA2LCAyMzcsIDE3MSwgMjQ4LCA0MSwgNiwgMjM3LCAxNzEsIDE2OSwgNiwgCi0gICAgMjM3LCAxNzEsIDIxOCwgOTMsIDI0NSwgMjAwLCAyMTgsIDkzLCAyNDUsIDIwMSwgMTE1LCAxMjAsIDIxOCwgMTY3LCAxMzIsIAotICAgIDYsIDc1LCAyNDgsIDQxLCA2LCA3NSwgMTMyLCA2LCAxNTksIDEzMiwgNSwgMTU5LCAyMjgsIDEzMSwgNjYsIDI0OCwgMjMxLCAKLSAgICA5NywgMTY5LCA2LCAyMjMsIDE2MywgMjIxLCA0MiwgNTQsIDIxMSwgMjQxLCAyMTYsIDE0NiwgMjQ1LCAxNjgsIDEzMiwgNiwgCi0gICAgMjE5LCAxODQsIDE2OSwgNiwgMjE5LCAxODQsIDE2OSwgNiwgMjE3LCAxMzQsIDEzMiwgNiwgMTQ2LCAyNDgsIDQxLCA2LCAKLSAgICAxNDYsIDE2OSwgNiwgMTQ2LCAyMTcsIDI0MywgMjA5LCAyNDEsIDIxNiwgODYsIDIxMywgMTIyLCA4MiwgMjA5LCAxNjIsIAotICAgIDU0LCAyMDgsIDExNSwgMTMxLCA1NCwgMjA2LCAzOSwgMTY5LCA2LCAyMDIsIDE1OSwgMjE5LCAyMTUsIDU0LCAyMjAsIDU5LCAKLSAgICA1NCwgMjMwLCAyMzksIDIyMCwgNTksIDU0LCAyNDgsIDQxLCA2LCAyMDIsIDE1OSwgMjA3LCAxNzQsIDMwLCA1LCAxLCAyMzAsIAotICAgIDIzMCwgMjI5LCAxODgsIDU0LCAyNTAsIDIxMywgNTQsIDEzMiwgNiwgMjQ5LCAyNTUsIDI0OCwgNDEsIDYsIDI0NywgMTI1LCAKLSAgICAyNDAsIDI1NSwgOTcsIDEzMiwgNSwgNzQsIDEzMiwgNiwgNzQsIDEzMiwgNiwgMjQwLCAxNzQsIDIwNywgMTc0LCA2LCAyNDAsIAotICAgIDE3NCwgMTMyLCA2LCAyMjYsIDE4NSwgMTMyLCA1LCA3OCwgMTM3LCA5NywgMjQ4LCAxMDksIDk3LCAyMzgsIDY4LCA5NywgCi0gICAgMjQ0LCAxNzksIDk3LCAyMzEsIDI1LCAyMTEsIDIzOSwgMjE1LCAxOTgsIDYsIDIxNywgMTM0LCAyNDAsIDkzLCA1NCwgMTY5LCAKLSAgICA1LCAyMTgsIDE2NywgMTY5LCA1LCAyMzgsIDIzNSwgMTY5LCA2LCAyMzgsIDIzNSwgMTY5LCA2LCAyMTgsIDE2NywgMTY5LCAKLSAgICAyMjMsIDE2MiwgMjEwLCAyMTcsIDIwNywgMTc0LCA0MSwgNiwgMjM5LCA3NSwgMjA3LCAxNzQsIDQxLCA2LCAxNTksIDIxNiwgCi0gICAgNzMsIDQxLCA2LCAxNTksIDIwNywgMTc0LCA0MSwgNiwgMjAzLCAxMjQsIDE2OSwgMzcsIDYsIDI0NSwgNTEsIDE2OSwgMzcsIAotICAgIDUsIDI0NSwgNTEsIDE2OSwgMzcsIDUsIDc0LCAxNjksIDM3LCA1LCA3NSwgMTY5LCAzNywgNSwgMjMwLCAxODQsIDIxNywgCi0gICAgMjEyLCAyMjcsIDExNCwgMjA3LCAxNzQsIDI1MCwgMjM1LCAyMTgsIDI0NywgNTQsIDI1MSwgNDEsIDIwNywgMTc0LCA1LCAKLSAgICAyNDAsIDE3NCwgMTYsIDM1LCAyMTQsIDI1MiwgMjExLCAyMzksIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMTMsIDEwNywgCi0gICAgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIyMiwgNTcsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMDksIDE0MywgMjA0LCAKLSAgICAxNjEsIDIzOSwgMTM4LCAxMTgsIDIwOSwgNjAsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTIwLCAyMDksIDU3LCAyMDQsIDE2MSwgCi0gICAgMjM5LCAxMzgsIDExOCwgMjQwLCAyMSwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjAsIDI0MCwgMjAsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMTI2LCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIzOSwgMTQ3LCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDExOCwgMjEyLCA3OCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMzksIDIzMywgMjEyLCA3NiwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAxMTgsIDI0MSwgMTM4LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyNiwgMjQxLCAxMzYsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMjM5LCAyMzMsIDI0MSwgMTM2LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIxMywgMTEyLCAyNDEsIDEzNiwgMjM5LCAKLSAgICAxMzgsIDIyMSwgNDMsIDEwNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwOCwgMjE1LCAKLSAgICAyMTAsIDIyMSwgNDQsIDE0NywgMjE1LCAyMTAsIDIyMSwgNDQsIDE0OSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE3MCwgMjE1LCAKLSAgICAyMTAsIDIyMSwgNDQsIDE5NSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIxMywgMTExLCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk5LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjIyLCA2MywgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUyLCAyMTUsIDIxMCwgMjIxLCAKLSAgICA0NCwgMjQxLCAxMTIsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDcsIDE1NCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTgsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIzNiwgMTEsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjM2LCAxMSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjA5LCAzNiwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwNSwgNSwgMjE1LCAyMTAsIAotICAgIDIyMSwgNDQsIDEwOCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE0NywgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE0OSwgNSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDE3MCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5NSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIAotICAgIDIxMywgMTExLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk5LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjIyLCA2MywgNSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUyLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQxLCAxMTIsIDUsIDIxNSwgMjEwLCAKLSAgICAyMjEsIDQ0LCAyMDcsIDE1NCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTgsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKLSAgICAxMTgsIDIzNiwgMTEsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjM2LCAxMSwgNSwgMjE1LCAyMTAsIDIyMSwgCi0gICAgNDQsIDExOCwgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjA5LCAzNywgMjQ3LCAxMjYsIDI0NSwgNTEsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUzLCAyMDksIAotICAgIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjE2LCA3MywgMTE4LCAyMzYsIDExLCA4LCA1LCAxLCAyMTYsIDczLCAyNDcsIDEyNSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIxMiwgODgsIDIyNywgMjU1LCAxOCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTksIAotICAgIDI0MSwgMTgyLCAxOCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTksIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKLSAgICAxMTgsIDIzNiwgMTIsIDIwOSwgMzYsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjAyLCA4NSwgMjA5LCA1NywgMjA3LCAxNzQsIAotICAgIDE3LCAxMDgsIDIwNywgMTc0LCAxNywgMTQ3LCA5NiwgNDcsIDE3NywgNDcsIDg2LCA0NywgMTgzLCA0NywgNDksIDUwLCA0NywgCi0gICAgMTEyLCAxMjEsIDQ3LCAxNTMsIDIwNCwgNDYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDQ3LCA5NiwgNTMsIDMsIDk1LCA4NiwgNTMsIDMsIDk1LCA5NiwgMjA0LCA3NiwgNDcsIAotICAgIDg2LCAyMDQsIDc2LCA0NywgOTYsIDEyMCwgMjM3LCA2MiwgNDcsIDE3NywgMTIwLCAyMzcsIDYyLCA0NywgODYsIDEyMCwgCi0gICAgMjM3LCA2MiwgNDcsIDE4MywgMTIwLCAyMzcsIDYyLCA0NywgOTYsIDUzLCAzLCAyMDksIDI0OCwgODYsIDUzLCAzLCAyMDksIAotICAgIDI0OCwgOTYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNzcsIDUzLCAyMzksIDEyMCwgMTQyLCA4NiwgNTMsIDIzOSwgMTIwLCAKLSAgICAxNDIsIDE4MywgNTMsIDIzOSwgMTIwLCAxNDIsIDExMiwgMTIxLCA1MywgMywgMjQ4LCAyMTgsIDk2LCA1MywgMywgMTEzLCAKLSAgICA4NiwgNTMsIDMsIDExMywgOTYsIDUzLCAzLCAyMjcsIDE0LCA4NiwgNTMsIDMsIDIyNywgMTQsIDQ5LCA1MCwgMjA0LCA3NiwgCi0gICAgNDcsIDQ5LCA1MCwgNTMsIDMsIDk1LCAxODMsIDIwMiwgMzAsIDQ3LCAxNzcsIDUzLCAzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIAotICAgIDE3NywgNTMsIDMsIDIwOCwgMjExLCAyMTYsIDUsIDE4MywgNTMsIDMsIDIwOCwgMjExLCAyMjcsIDIxMiwgMTgzLCA1MywgMywgCi0gICAgMjA4LCAyMTEsIDIxNiwgNSwgODYsIDUzLCAzLCAyNDUsIDE2NiwgMjQyLCA2OCwgMTgzLCA1MywgMywgMjQ1LCAxNjYsIAotICAgIDIyNywgMjEyLCAyNTAsIDE5NCwgMjA4LCAxNDUsIDIxMywgMTQ2LCA0NywgMjQ2LCAxOCwgMjA4LCAxNDUsIDIxMywgMTQ2LCAKLSAgICA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMjA4LCAxNzMsIDE2MywgMTQyLCA5NiwgNTMsIDIwOCwgMTczLCAyNDgsIDIzMSwgCi0gICAgMTE1LCA4NiwgNTMsIDIwOCwgMTczLCAxNDIsIDI1MCwgMTk0LCAxNzEsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAxNzEsIAotICAgIDI0NiwgNjIsIDQ3LCA5NiwgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIxMiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgCi0gICAgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgNSwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIyNywgMjEyLCA4NiwgMjM3LCAKLSAgICA4NywgMywgMTUwLCAyMDYsIDIxMiwgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDIxNiwgNSwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIyNywgMjEyLCA4NiwgNTMsIDExNSwgOTYsIDQ3LCAxNzcsIDUzLCA5NiwgCi0gICAgNzYsIDE4MywgNDcsIDk2LCA1MywgMTE1LCA4NiwgNDcsIDk2LCAyMTksIDE0NiwgMjUwLCA5MSwgMTc3LCAyMTksIDE0NiwgCi0gICAgMjUwLCA5MSwgODYsIDIxOSwgMTQ2LCAyNTAsIDkxLCAxODMsIDIxOSwgMTQ2LCAyNTAsIDkxLCA5NiwgMjM3LCA4NywgMTE1LCAKLSAgICA4NiwgMjM3LCA4NiwgODYsIDIzNywgODcsIDExNSwgOTYsIDIzNywgODYsIDk2LCA1MiwgNTMsIDMsIDk1LCA0OSwgNTAsIAotICAgIDUyLCA1MywgMywgOTUsIDg2LCA1MiwgNTMsIDMsIDk1LCA5NiwgNTIsIDQ3LCAxNzcsIDUyLCA0NywgODYsIDUyLCA0NywgCi0gICAgMTgzLCA1MiwgNDcsIDQ5LCA1MCwgNTIsIDQ3LCAxMTIsIDEyMSwgNTIsIDQ3LCAxNTMsIDIwNCwgNDYsIDUyLCA0NywgMTUzLCAKLSAgICAyNDEsIDE3NiwgNTIsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUyLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDUyLCA0NywgCi0gICAgOTYsIDIwOCwgNzAsIDQ3LCA4NiwgMjA4LCA3MCwgNDcsIDk2LCAyMTEsIDE3MSwgNDcsIDg2LCAyMTEsIDE3MSwgNDcsIAotICAgIDE3NywgNTMsIDMsIDUyLCA5NSwgMTgzLCA1MywgMywgNTIsIDk1LCA5NiwgMjQ0LCAxNDMsIDQ3LCAxNzcsIDI0NCwgMTQzLCAKLSAgICA0NywgODYsIDI0NCwgMTQzLCA0NywgMTgzLCAyNDQsIDE0MywgNDcsIDk2LCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDUzLCAKLSAgICAyMDgsIDE3MywgMTQyLCA5NiwgNjEsIDQ3LCAxNzcsIDYxLCA0NywgODYsIDYxLCA0NywgMTgzLCA2MSwgNDcsIDE3NywgNjEsIAotICAgIDUzLCAyMzksIDEyMCwgMTQyLCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgMjE5LCAyNiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIAotICAgIDIxOSwgMjcsIDMsIDIzNiwgMTA2LCAxNDIsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAyMTksIDI3LCAzLCA4MCwgMTQyLCAKLSAgICAxNzcsIDYxLCA1MiwgNDcsIDE3NywgNjEsIDUyLCA1MywgMjIwLCAzMiwgMjE5LCAyNiwgODYsIDYxLCA1MywgMjM5LCAxMjAsIAotICAgIDIwNCwgOTksIDE1MywgMjA0LCA0NiwgNTMsIDIwOCwgMTczLCAyNDUsIDE2NSwgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgCi0gICAgMjA4LCAxNzMsIDI0NSwgMTY1LCAxMTIsIDEyMSwgNjEsIDQ3LCA1MCwgNTMsIDMsIDUsIDI0NiwgNjEsIDE4MywgNTMsIDk2LCAKLSAgICA3NiwgMTc3LCA0NywgMTI2LCA4NiwgMjUwLCA5MSwgOTYsIDUzLCAzLCA4MCwgOTUsIDg2LCA1MywgMywgODAsIDk1LCA0OSwgCi0gICAgNTAsIDUzLCAzLCA4MCwgOTUsIDk2LCA1MywgMywgNTIsIDgwLCA5NSwgODYsIDUzLCAzLCA1MiwgODAsIDk1LCA0OSwgNTAsIAotICAgIDUzLCAzLCA1MiwgODAsIDk1LCA5NiwgMjIwLCA2LCA0NywgODYsIDIyMCwgNiwgNDcsIDQ5LCA1MCwgMjIwLCA2LCA0NywgCi0gICAgMzUsIDI1MSwgMTQsIDI0NSwgMjI4LCAyMTksIDY5LCAyNDMsIDIwNSwgMjA5LCA4MywgMjQwLCAyMDcsIDIwOSwgODMsIAotICAgIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQwLCAyMDgsIDI0MSwgOTQsIDIxMywgMTE3LCAyMzEsIDM4LCAyMjMsIDEwMSwgMjQxLCAKLSAgICAxMTUsIDIyMCwgNjksIDIyMSwgMTY2LCAyNTAsIDIzMiwgMjQxLCAxMTUsIDIyMCwgNjksIDUsIDI0MSwgMTE1LCAyMjAsIAotICAgIDY5LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjI0LCAyNDQsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIDI1MCwgODIsIAotICAgIDIyNCwgMjQ0LCA1LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjI0LCAyNDQsIDI0MSwgODQsIDc2LCAyMTcsIDIxNCwgMjIzLCAKLSAgICAxNjIsIDIxNywgMjI0LCAyMjMsIDE2MiwgMjQ1LCAxNzEsIDIyMywgMTYyLCAyMTAsIDIxNywgMjI0LCAxMDMsIDU0LCAyMjQsIAotICAgIDEwMSwgNTQsIDcwLCAyMTgsIDc2LCAyNDMsIDEzNywgMjEyLCA1NywgMjEzLCAxMTgsIDIyNCwgMTAyLCAyNTAsIDYwLCAKLSAgICAyMTksIDI1NCwgMjE1LCAyNTMsIDIxOSwgMjU0LCAyNDcsIDE3OCwgMjE5LCAyNTQsIDUxLCAyMTUsIDIwNCwgMjQ1LCAxMDYsIAotICAgIDIxNSwgMjA0LCAyMzksIDE0MCwgMjE1LCAyMDQsIDIxNywgMjEwLCAxMzUsIDIzMSwgMjcsIDUwLCAyNTAsIDIxNywgMjUwLCAKLSAgICAyMTcsIDIyNSwgMTcsIDI1MCwgMjE3LCAyMTEsIDIwOCwgMjUwLCAyMTcsIDI0MywgMTM5LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAotICAgIDI0MywgMTQzLCAyMTksIDgyLCAxMzUsIDIyMSwgMTY2LCAyMTksIDgyLCAxMzUsIDIyNywgMzcsIDI1MCwgMjI2LCAyMjcsIAotICAgIDM3LCAyMTksIDI0NCwgMjMwLCAyNDQsIDIwNiwgMjM3LCAyMzEsIDIsIDUyLCAyMzEsIDIsIDIwOCwgNzAsIDIzMSwgMiwgCi0gICAgMjQ1LCAxODgsIDIzMSwgMiwgMjEwLCAxODksIDIzMSwgMiwgMjA1LCAxNzgsIDIzMSwgMiwgMjQ2LCAxOCwgMjMxLCAyLCAKLSAgICAyNDYsIDE4LCAyNDUsIDE4OCwgMjMxLCAyLCAyNTAsIDE5NCwgMjQ1LCAxODgsIDIzMSwgMiwgMjA5LCA4MiwgMjQ4LCAxNTIsIAotICAgIDIxNiwgMTY4LCAyMTcsIDIxMSwgNzAsIDIyNCwgMTAyLCAyNDAsIDIxNSwgMjM4LCAxNzIsIDIxNywgMjExLCAyMzYsIDEyMSwgCi0gICAgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTYsIDczLCAyMDgsIDIyNywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDIxMiwgMTIyLCAKLSAgICAyMDQsIDc1LCAyMDMsIDIyNiwgMjE3LCAyMjQsIDIyMSwgMTY2LCAyMDgsIDIyNywgMjI0LCAxMDMsIDIwOCwgMjI3LCAyNTAsIAotICAgIDUzLCAxNTYsIDEzNSwgMjIxLCAxNjYsIDI1MCwgNTMsIDE1NiwgMTM1LCAyNTAsIDE1MSwgMTU2LCAxMzUsIDI1MCwgMTUxLCAKLSAgICAyNDcsIDE0OCwgMjIxLCAxNjYsIDI1MSwgMTI3LCAxNTYsIDEzNSwgMjIyLCAyMzIsIDI1MCwgMTUxLCAyMjEsIDE3NSwgCi0gICAgMjUxLCAxMjcsIDE1NiwgMTM1LCAyNTEsIDcsIDE1NiwgMTM1LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgMjUxLCA3LCAKLSAgICAxNTYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjA4LCA3MCwgMjA4LCAyMjcsIDI1MSwgMTUsIDE1NiwgMTM1LCAyNDEsIDMwLCAKLSAgICAxMzUsIDIzOCwgMTcxLCAyNDEsIDMwLCAxMzUsIDI0MywgMjA2LCAyNDgsIDEwMywgMjUwLCAxNTMsIDIwOSwgOTMsIDIyNywgCi0gICAgMTIyLCAyMzgsIDE3MSwgMTU2LCAxMzUsIDI1MCwgMTUxLCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjA5LCA5MywgMjMxLCAKLSAgICA2NSwgMjIwLCA2OSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAyNTAsIDE1MSwgMTU2LCAxMzUsIDI0NSwgMjQzLCAyNDEsIAotICAgIDM0LCAyNDEsIDM1LCAyNDUsIDI0MiwgMjE1LCAyNTMsIDIzMSwgNTAsIDE1NiwgMTM1LCAyMTUsIDI1MywgMTU2LCAxMzUsIAotICAgIDI0NSwgMTU5LCAxMzUsIDI0MCwgMjU0LCAyNDEsIDMzLCAxMzUsIDIxMSwgOTUsIDI0MSwgMzQsIDI0NCwgMzgsIDE1NiwgCi0gICAgMTM1LCAxNTYsIDIwOCwgMTczLCAyNDcsIDEzNywgMjQ0LCA1NiwgMjI1LCAxNywgMjQ3LCAxMzYsIDIxNywgNDUsIDE1NiwgCi0gICAgMTM1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNSwgMTU0LCAxMzUsIDIyMSwgMTY2LCAyMzUsIDE1NCwgMTM1LCAyMTEsIDM5LCAKLSAgICAyNDEsIDMwLCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMTU2LCAxMzUsIAotICAgIDIyNywgMTc5LCAxMTUsIDE1NiwgMTM1LCAyMzcsIDI0NywgMTE1LCAxNTYsIDEzNSwgMjI3LCAxNzksIDI0NywgMTQ4LCAKLSAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjMsIDI0MCwgCi0gICAgMjI3LCAxNzgsIDIyMywgMjQwLCAyMzcsIDI0NiwgMjQ4LCAxMDMsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIyMSwgMTY2LCAKLSAgICAyMjcsIDE3OCwgMjIxLCAxNjYsIDIzNywgMjQ2LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAxNTYsIDEzNSwgCi0gICAgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAKLSAgICAyMzcsIDI0NywgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMjQxLCAzMCwgCi0gICAgMTM1LCAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAyNDEsIDMwLCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjM3LCAKLSAgICAyNDYsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjI3LCAxNzgsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDIzNywgCi0gICAgMjQ2LCAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAyMjcsIDE3OCwgMjE3LCAyNDksIDIxMCwgMjM2LCAyMTcsIAotICAgIDI1MCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDIzNywgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTcsIDI1MCwgMjE5LCAKLSAgICAyNDUsIDI0MSwgMzAsIDEzNSwgMjEwLCAyMzcsIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIDI0MywgMTA0LCAyMjEsIDE2NiwgCi0gICAgMjE3LCAyNTIsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjEwLCAyMzgsIDIxMCwgMjQ1LCAyMjAsIDY5LCAyMTAsIDE5OCwgMjIwLCAKLSAgICA2OSwgMjIxLCAxNjYsIDM0LCAyMTAsIDI0NSwgMjIwLCA2OSwgMjIxLCAxNjYsIDM0LCAyMTAsIDE5OCwgMjIwLCA2OSwgCi0gICAgMjEwLCAyNDUsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMTk4LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjIsIAotICAgIDIzMiwgMzQsIDIxMCwgMjQ1LCA3NiwgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMjIsIDIzMiwgMzQsIDIxMCwgMTk4LCA3NiwgCi0gICAgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMTAsIDI0NSwgNzYsIDMsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAxOTgsIDc2LCAzLCAKLSAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyMywgMjIxLCAyMjMsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIyLCAyMDYsIDIzNywgNTEsIAotICAgIDIzMSwgNjUsIDIyMCwgNjksIDUxLCAyMTksIDIzNiwgMjIwLCA2OSwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMTU2LCAKLSAgICAxMzUsIDUxLCAyMTksIDIzNiwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgNTEsIDI0NywgNDgsIDUxLCAyNDUsIDk5LCA0MywgCi0gICAgMjE4LCA3NiwgNDMsIDIyNCwgMTAyLCA0MywgMjA4LCAyMTksIDQzLCAyNDMsIDEzNywgMjEyLCA1NywgNDMsIDcwLCAyMTksIAotICAgIDI1NCwgNDMsIDIxNSwgMjUzLCAyMTksIDI1NCwgNDMsIDI1MCwgNjAsIDIxOSwgMjU0LCA0MywgMjQxLCAzNCwgNDMsIDI0NCwgCi0gICAgMTQ0LCAxMDMsIDIxOCwgNzYsIDEwMywgMjI0LCAxMDIsIDEwMywgMjA4LCAyMTksIDEwMywgNzAsIDIxOSwgMjU0LCA1MCwgCi0gICAgMjEwLCAzLCA0OSwgMjEwLCAzLCAxMjEsIDIxMCwgMywgMTEyLCAyMTAsIDMsIDI1MCwgNjMsIDIyNCwgNzcsIDIwOCwgNDksIAotICAgIDIzOSwgMTY1LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDUwLCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDUwLCAKLSAgICAyMDcsIDE3MywgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTcsIDIwNSwgMjIxLCAxNjYsIDIwOCwgNDksIDI0MywgMTA0LCAyMjEsIAotICAgIDE2NiwgMjM5LCAxNjYsIDIyMiwgMjM0LCA1MiwgODAsIDI0OCwgMjMxLCA1MiwgNTAsIDIwNywgMTczLCAyMTcsIDI1MCwgCi0gICAgMjA2LCAyNDgsIDIxNiwgMTE3LCAyMTAsIDIzNywgMjA2LCAyNDgsIDIxNiwgMTE3LCAyMjEsIDE3MiwgMjExLCAyLCAyMjAsIAotICAgIDY5LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMSwgMjIxLCAxNzIsIDIxMSwgMiwgNzYsIDIxOSwgMjQ1LCAKLSAgICAxNTYsIDEzNSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDIsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjE5LCAKLSAgICAyMzYsIDIyMCwgNjksIDIzMSwgNjUsIDIyMCwgNjksIDIyMywgMjI4LCAyMzcsIDI0LCAyNDUsIDIwNSwgMjI1LCA2OSwgCi0gICAgMjMwLCAyNTUsIDIwMywgMTU2LCAyMjMsIDgxLCAyMjEsIDE3NCwgNTAsIDI1MCwgMjE4LCAzLCAyNTAsIDEyOCwgNTAsIAotICAgIDIwOCwgODUsIDIyMywgMTYyLCAyMjcsIDM3LCAyNTAsIDIyNiwgMjIzLCAxNjIsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMjMsIAotICAgIDE2MiwgMjMwLCAyNDQsIDIyMywgMTYyLCAyMDYsIDIzNywgMjQzLCAyMjIsIDIxOSwgMjU0LCA3MCwgMjE5LCAyNTQsIDIxMSwgCi0gICAgOTUsIDIxOSwgMjU0LCAyNDMsIDEzNywgMjA4LCAyMTksIDI0NywgMjM0LCA0OSwgMjIxLCAxNzIsIDI0MCwgOTIsIDIxMywgCi0gICAgMTQyLCAyMTcsIDIyNCwgNTAsIDIyMSwgMTcyLCAyNDAsIDkyLCAyMTMsIDE0MiwgMjE3LCAyMjQsIDQ5LCAyMTMsIDE0MiwgCi0gICAgMjE3LCAyMjQsIDUwLCAyMTMsIDE0MiwgMjE3LCAyMjQsIDIxNiwgNzMsIDIwOCwgMjI4LCAyNDEsIDM0LCAyNDUsIDkzLCAKLSAgICAyMjcsIDM3LCAyMTksIDI0NCwgMjQ1LCA5MywgMjI3LCAzNywgMjUwLCAyMjYsIDUyLCAyMTAsIDI0NCwgNTIsIDIxMCwgCi0gICAgMTk3LCA1MiwgMjMwLCAyNDQsIDUyLCAyMDYsIDIzNywgMjE4LCAxMDMsIDE1NiwgMjUsIDIxOSwgODIsIDEzNSwgMjI3LCAKLSAgICAxNzksIDMsIDI0MywgODUsIDIzNywgMjQ3LCAzLCAyNDMsIDg1LCAyMDUsIDI0MiwgMjIzLCAyNDAsIDIyNywgMTc4LCAyMDUsIAotICAgIDI0MiwgMjIzLCAyNDAsIDIzNywgMjQ2LCAyMjcsIDE3OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAKLSAgICAyMzcsIDI0NywgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgCi0gICAgMjI3LCAxNzgsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIAotICAgIDIxNywgMjQ5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjEwLCAyMzYsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjE3LCAKLSAgICAyNTMsIDIxOSwgMjQ1LCAyNDEsIDM2LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxMCwgMjM5LCAyMTksIDI0NSwgMjQxLCAzNiwgCi0gICAgMjIxLCAxNjYsIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjEsIDE2NiwgNTEsIDIxOSwgMjM2LCAKLSAgICA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIAotICAgIDUxLCAyMTksIDIzNiwgNzYsIDIxOSwgMjQ1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyNywgMTc5LCAyNDcsIDE0OCwgMjIxLCAKLSAgICAxNjYsIDI0MSwgMzAsIDEzNSwgMjM3LCAyNDcsIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMTcsIDI1MCwgCi0gICAgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIxMCwgMjM3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIAotICAgIDEzNSwgMjIxLCAxNjYsIDIyMSwgMTcyLCAyMTEsIDIsIDIyMCwgNjksIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIAotICAgIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDEsIDIyMSwgMTY2LCAyMjEsIDE3MiwgMjExLCAyLCA3NiwgMjE5LCAyNDUsIDE1NiwgCi0gICAgMTM1LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAyLCAyMTksIDI0NSwgCi0gICAgMjQxLCAzNiwgODAsIDI0MSwgMTA4LCAyMjQsIDE0NiwgMjM2LCAxMDYsIDI0MSwgMTA4LCAxMTIsIDUwLCAyNDMsIDIyOCwgCi0gICAgMjQxLCAxMDgsIDEyMSwgNTAsIDI0MywgMjI4LCAyNDEsIDEwOCwgMjQxLCAxMTUsIDc2LCAzLCAxNjMsIDIzNiwgMTA2LCAKLSAgICA5NSwgMjQxLCAxMTUsIDc2LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDUsIAotICAgIDI0MSwgMTE1LCA3NiwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCAyNDEsIAotICAgIDExNSwgNzYsIDMsIDcwLCA1NSwgMjQxLCAxMTUsIDc2LCAzLCAyMTksIDIwMywgNSwgMjQxLCAxMTUsIDc2LCAzLCAyMTksIAotICAgIDIwMywgMjQxLCAxMTUsIDc2LCAzLCAyMDYsIDI0NiwgMjQxLCAxMTUsIDc2LCAzLCAxMjAsIDIzNiwgMTA2LCAyMTEsIDE5LCAKLSAgICAyNDUsIDE5NCwgMywgMTYzLCAyMzYsIDEwNiwgOTUsIDI0NSwgMTk0LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgCi0gICAgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDUsIDI0NSwgMTk0LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAKLSAgICAyMzYsIDEwNiwgOTUsIDI0NSwgMTk0LCAzLCAyMTksIDIwMywgNSwgMjQ1LCAxOTQsIDMsIDIxOSwgMjAzLCAyMDIsIDE2MCwgCi0gICAgMjIxLCAxNjQsIDI0OSwgMTEsIDIyNCwgMjQzLCAyNDMsIDIyMywgNTQsIDI0MSwgMTE3LCA0NywgMjM2LCAzOCwgMTEyLCAKLSAgICAyNTAsIDk0LCAxMjEsIDI1MCwgOTQsIDIxNywgMjE4LCAyMTgsIDIyNywgMjA0LCA3MiwgMjI3LCAxMTQsIDQ5LCAyNDYsIAotICAgIDIyNiwgNTAsIDI0NiwgMjI2LCA0OSwgMjM5LCAyMDQsIDUwLCAyMzksIDIwNCwgMjQ3LCAyNDgsIDUwLCAyNDUsIDEzMiwgCi0gICAgMjQ3LCAyNDgsIDQ5LCAyNDUsIDEzMiwgMjA4LCAxNDUsIDUwLCAyNDUsIDEzMiwgMjA4LCAxNDUsIDQ5LCAyNDUsIDEzMiwgCi0gICAgMjE2LCA3MywgMjIxLCAxNjYsIDU0LCA1MSwgMjI2LCAyNDYsIDI1MCwgMTI4LCAyMTQsIDE1OCwgMjE0LCAxNjYsIDIwOSwgCi0gICAgMTYyLCAyMTYsIDE0NywgMjE4LCAzNCwgMjMxLCAzMSwgMjA1LCAyMTgsIDIxMSwgMTc3LCAyMTgsIDk3LCA3NiwgMjMwLCAKLSAgICAyNTQsIDU0LCAyMDcsIDE3NCwgMjIxLCAxNjYsIDU0LCAyMDQsIDgyLCAyMzYsIDQwLCAyMDgsIDE0NSwgNDksIDI0NSwgCi0gICAgMTY1LCAyMDgsIDE0NSwgNTAsIDI0NSwgMTY1LCAyNDcsIDI0OCwgNDksIDI0NSwgMTY1LCAyNDcsIDI0OCwgNTAsIDI0NSwgCi0gICAgMTY1LCAyMDgsIDE0NSwgMTYyLCAyMzEsIDIsIDI0NywgMjQ4LCAxNjIsIDIzMSwgMiwgMjM5LCAxMTUsIDIxMiwgMzEsIAotICAgIDExMiwgMjUwLCA5NSwgMjQ4LCAxMDQsIDEyMCwgMjM2LCAxMDYsIDI0OCwgMjIwLCAyMTksIDI0NywgMjI5LCAxNTEsIDI0MSwgCi0gICAgMjYsIDIwOCwgMTczLCAyMDksIDkzLCAyMTYsIDE2LCAyMDMsIDE5NywgMjMxLCA1MCwgMzQsIDIxNiwgMTQ0LCAyNDcsIAotICAgIDIzMywgMjI5LCAxNDksIDIyNywgMjE3LCAyNTAsIDIxOCwgMTU1LCAyMTYsIDExLCAyNTAsIDIxOCwgMTU1LCAyNDEsIDI2LCAKLSAgICAyMDgsIDE3MywgMjA5LCA5MywgMjI3LCAyMjIsIDI0OCwgMTE1LCAyMTUsIDI1MiwgMjQ1LCA2MSwgMjUxLCAxNSwgMjUwLCAKLSAgICAxMDMsIDIxMCwgMTAwLCAyMDgsIDEzMCwgMjE1LCAxMjUsIDI0MywgMTg1LCAyMTksIDIzNywgMjQ1LCAyMDksIDIwOSwgCi0gICAgMjIwLCAyMTIsIDQ0LCAyNDUsIDE1NSwgMjQ1LCAxNTQsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjM1LCAyMDMsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjExLCAxNjksIDIxNywgNjIsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQxLCAKLSAgICAzNiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDMsIDE0MywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIAotICAgIDYzLCAyNDMsIDIyMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIxNywgNjMsIDI0NiwgNjEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjExLCA2OSwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMiwgNTgsIDE0MiwgMjUwLCAKLSAgICAxNjksIDIzOSwgOTgsIDE2LCAyNDksIDIxLCAxNDIsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjEyLCA1NywgCi0gICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDksIDIwLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIAotICAgIDIyNywgMTc4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIzNywgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDk2LCAyMDYsIDc2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDg2LCAyMDYsIDc2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIxNywgNjMsIDk2LCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCA4NiwgNDcsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjQ5LCAyMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMjEsIDIxMCwgNCwgMjA2LCAKLSAgICAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCAzOCwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIAotICAgIDYzLCAxMjEsIDI0NywgMzMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ0LCAzNywgMjUwLCAxNjksIDIzOSwgCi0gICAgOTgsIDE2LCAxMjEsIDIxMCwgNCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxNzcsIDIwNiwgNzYsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMTc3LCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgCi0gICAgMjE5LCAyMDMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKLSAgICAyMTcsIDYzLCAxMTIsIDI0NywgMzMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ0LCA0OCwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxODMsIDIwNiwgNzYsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMTgzLCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDMwLCAKLSAgICAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDM4LCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyNDMsIDIyMiwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjMwLCA4OSwgMjA2LCAyNDYsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyMTIsIAotICAgIDI0MCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDMwLCAyMTcsIDYyLCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDI0NiwgNjIsIDIxMSwgOTQsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ1LCAyNDIsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDI0MywgCi0gICAgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMSwgOTUsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIAotICAgIDIzMCwgODksIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDI0MywgMjMxLCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDEyMSwgMjEyLCAyNDAsIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgNDksIDIxMiwgMjQwLCAKLSAgICAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIwOCwgMjI4LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMzcsIDI0NywgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ1LCAyMzQsIDE0MiwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMDIsIDI5LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDIxMSwgNzAsIDIwOCwgMjI3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMywgMTQ0LCAyMDYsIAotICAgIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMjEsIDE2NiwgMjQxLCAzNiwgMjUwLCAxNjksIDIzOSwgCi0gICAgOTgsIDE2LCAyMTcsIDYzLCAyMTcsIDQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDEyMSwgMjQ3LCAzNCwgMjA4LCAyMjcsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyNDcsIDM0LCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKLSAgICAyMzAsIDIzMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTYsIDU5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIyMCwgMzYsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjUxLCAzLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDEsIDM4LCAKLSAgICAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMzAsIDIzMSwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjIwLCAzNywgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjUxLCAyLCAyMjEsIDE2NiwgMjQ2LCAxNjksIAotICAgIDgyLCA1MCwgMjUwLCAyMTgsIDMsIDE4MywgMjAyLCAzMCwgNDcsIDIxMiwgMjEwLCAxNzEsIDI0NywgMjMzLCAyNDgsIDEyOSwgCi0gICAgOTcsIDgwLCAyMjcsIDExNSwgMywgMTAxLCAyNDMsIDg1LCAyMzEsIDgsIDk3LCAyNDUsIDE4OSwgMjA2LCAyNDQsIDk3LCAKLSAgICAyNDMsIDE1OCwgMjA2LCAyNDQsIDk3LCAyNDEsIDk2LCA5NywgMjQ1LCAyMjQsIDk3LCA2MSwgNTEsIDMsIDI0NiwgMjE4LCAKLSAgICA4MCwgMjI3LCAxMTQsIDI0MSwgNjgsIDk3LCAyNTAsIDI1MCwgMjI5LCAxNTIsIDk3LCAyMzcsIDM3LCA5NywgNDMsIDIzNiwgCi0gICAgMTA2LCAyNDgsIDIzMSwgMywgMjIxLCAxNjMsIDQzLCAyMDgsIDg2LCAyNDIsIDcwLCAyNDcsIDIwMywgMjQ2LCA2MiwgMywgCi0gICAgMjIxLCAxNjksIDQ3LCAyMDYsIDI0MiwgOTcsIDIyNCwgNDAsIDk3LCAyMzUsIDIxNiwgOTcsIDIyMCwgNywgMjM3LCAxNzAsIAotICAgIDk3LCAyMjAsIDcsIDIyOCwgMTI5LCA5NywgMjE5LCA1OSwgOTcsIDIxOSwgNTgsIDk3LCAyNDMsIDE2NywgMjQ1LCA5MSwgCi0gICAgMTYsIDIzOSwgMTU5LCAxMDgsIDIxMiwgNSwgOTcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MiwgMjQ0LCA2OCwgCi0gICAgMjEzLCAxMzEsIDIyOSwgMTUyLCA5NywgMjE3LCAyMzgsIDIxOSwgMTUzLCAyMjIsIDIwOCwgMjE5LCAxNTMsIDIxNywgMjM0LCAKLSAgICAyMTQsIDE4NSwgOTcsIDI0NiwgMzMsIDIxNCwgMTg1LCA5NywgNDksIDIxOSwgNzcsIDIwNiwgMjIxLCAxMTMsIDQ5LCAyMTksIAotICAgIDc3LCAyNDAsIDIwMCwgNDksIDIxOSwgNzcsIDIyNiwgMjUxLCAxMTMsIDUwLCAyMTksIDc3LCAyMDYsIDIyMSwgMTEzLCA1MCwgCi0gICAgMjE5LCA3NywgMjQwLCAyMDAsIDUwLCAyMTksIDc3LCAyMjYsIDI1MSwgMTEzLCA0OSwgNTEsIDI0NywgMjI3LCAyMDYsIAotICAgIDIyMSwgMjQ1LCAxNjUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDI0MCwgMjAwLCA0OSwgNTEsIDI0NywgMjI3LCAyMjYsIDI1MSwgCi0gICAgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDIwNiwgMjIxLCAyNDUsIDE2NSwgNTAsIDUxLCAyNDcsIDIyNywgMjQwLCAKLSAgICAyMDAsIDUwLCA1MSwgMjQ3LCAyMjcsIDIyNiwgMjUxLCAyNDUsIDE2NSwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMDYsIAotICAgIDIyMSwgMTEzLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDEwMSwgMjE4LCAxNTksIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgCi0gICAgMjI2LCAyNTEsIDExMywgMjQ1LCA5MywgMjQ3LCAyMjcsIDI0MCwgMjAwLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIwNiwgCi0gICAgMjIxLCAxMTMsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMTAxLCAyMTgsIDE1OSwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAKLSAgICAyMjYsIDI1MSwgMTEzLCAyMzEsIDMsIDI0MCwgMjAwLCAyMzYsIDEwNiwgMjI3LCAxMTUsIDI0MCwgMjAwLCAyMDYsIDIyMSwgCi0gICAgNDksIDIxOSwgMjQ1LCAyMjYsIDI1MSwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMTQsIDE2NywgMjA2LCAyMjEsIDUwLCAKLSAgICAyMTksIDI0NSwgMjI2LCAyNTEsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjE0LCAxNjcsIDIxMCwgMjE4LCAyMDgsIDE0NCwgCi0gICAgMjEwLCAyMTgsIDI0NywgMjQ3LCAyMDgsIDE0NSwgNTEsIDE1NSwgMjQ3LCAyNDgsIDUxLCAxNTUsIDI0NywgMjQ4LCA1MSwgCi0gICAgMjQ3LCAyMjcsIDExNSwgMjA4LCAxNDUsIDUxLCAxNTUsIDQwLCAxNiwgMjQ3LCAyNDcsIDQ5LCA4MCwgOTgsIDIyNywgMTE0LCAKLSAgICA1MCwgODAsIDk4LCAyMjcsIDExNCwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMywgMjM2LCAxMDYsIDIxNCwgMjAyLCAKLSAgICAyMjcsIDExMiwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMSwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMCwgCi0gICAgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyMDgsIDE0NSwgMjE2LCAxNiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAKLSAgICAyNDcsIDI0OCwgMjE2LCAxNiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDMsIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIAotICAgIDEyMSwgMjUsIDIzNiwgMTA2LCAzLCAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgCi0gICAgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDMsIDIwOCwgODUsIDI0NCwgMjksIDE2LCAxNTcsIDEyMSwgMjUsIAotICAgIDIzNiwgMTA2LCAzLCAyMDgsIDg1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgMjA4LCA4NSwgCi0gICAgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNiwgCi0gICAgMywgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAKLSAgICAxNTcsIDEyMSwgMjUsIDIzNiwgMTA1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNSwgMjQ0LCAyOSwgMTYsIAotICAgIDE1NywgODAsIDI1LCAyMDgsIDE0NSwgMjI3LCAyMjIsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjQ3LCAyNDgsIDIyNywgCi0gICAgMjIyLCA1MSwgMjM5LCAxNzIsIDIxNiwgNzgsIDk3LCAyNDEsIDEzMSwgOTcsIDgwLCAyMjcsIDExNSwgMjQwLCAyMDAsIAotICAgIDIyNCwgMjE0LCAyNDcsIDIxNCwgMjI0LCAyMTQsIDE2MywgMTE1LCAyMTIsIDIyNywgMjI0LCAyMTQsIDIxMiwgMjI4LCAKLSAgICAxMTUsIDIyNywgMjgsIDIyNCwgMjE0LCAxNjMsIDExNSwgMTIwLCAyMTIsIDIxMywgMjI0LCAyMTQsIDEyMCwgMjEyLCAyMTQsIAotICAgIDExNSwgMjI3LCAyOCwgMjI0LCAyMTQsIDEyMCwgMjEyLCAyMTQsIDIzMCwgOTcsIDIyNCwgMjE0LCAyMDgsIDY2LCAyMjQsIAotICAgIDIxNCwgMjA5LCAxMjQsIDIyNCwgMjE0LCAyMTgsIDI1MywgMjQxLCAxODAsIDIzNywgMjM5LCAyMzksIDkyLCAyMDgsIDE0NSwgCi0gICAgMjE5LCA3NiwgMjQ3LCAyNDgsIDIxOSwgNzYsIDIwOCwgMTQ1LCAyNDUsIDkzLCAxNTUsIDI0NywgMjQ4LCAyNDUsIDkzLCAKLSAgICAxNTUsIDIwOCwgMTQ1LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAyNDcsIDI0OCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgCi0gICAgNjEsIDIwOCwgMTAxLCAyNDgsIDExNSwgMjE1LCAyNTMsIDMsIDI0NiwgNjEsIDIxMSwgNTEsIDIzOSwgMjE1LCAyNTEsIAotICAgIDE0MiwgMjQ1LCA5MCwgMjQxLCAxMTYsIDIzMCwgMjQ0LCAyNDQsIDY4LCAyNDAsIDIwNCwgOTcsIDYyLCAyMTYsIDExLCA1MiwgCi0gICAgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCA1MiwgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCA1MiwgMjA4LCA4NSwgNjIsIDI0MiwgCi0gICAgNjksIDUyLCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgNTIsIDIwOCwgODYsIDMsIDgwLCAxNDIsIDYyLCAyMjcsIDIxNywgNTIsIAotICAgIDIwOCwgODYsIDMsIDgwLCAxNDIsIDYyLCAyMTYsIDExLCAyMDgsIDg2LCAzLCA1MiwgODAsIDE0MiwgMjUxLCAzNCwgMjQ2LCAKLSAgICAxOSwgMjExLCA1OCwgMjA4LCAyMjAsIDI0NiwgMTksIDIzNiwgNDEsIDMsIDIzOSwgMTk1LCAyMTQsIDI0MSwgNjIsIDIyNSwgCi0gICAgMTAsIDIyNywgMjE3LCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjE2LCAxMSwgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDIwNiwgCi0gICAgMjIzLCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjQyLCA2OSwgMjA4LCA4NSwgNTIsIDgwLCAxNDIsIDYyLCA1MSwgMzUsIAotICAgIDIxMSwgNjEsIDYyLCAyNDYsIDYyLCAzNSwgMjE2LCAxNDgsIDE2LCAzNSwgMjIxLCA0OCwgMTYsIDM1LCAyMTEsIDkwLCA3NiwgCi0gICAgMjM3LCA2MSwgMTYsIDM1LCAyMTEsIDkwLCA3NiwgMjA5LCAxMTIsIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIwOSwgMTEyLCAKLSAgICAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMDgsIDEwNSwgMTYsIDM1LCAyNDEsIDcxLCAxNiwgMzUsIDI1MSwgMTMwLCAxNiwgMzUsIAotICAgIDI0OCwgMTI4LCAxNiwgMzUsIDI0OSwgMTksIDE2LCAzNSwgMjM2LCAxMDYsIDIxMCwgNSwgMTYsIDM1LCAyMjcsIDExNSwgCi0gICAgMjQwLCA1MSwgMTYsIDM1LCA4MCwgMjEwLCA1LCAxNiwgMzUsIDIzOSwgMTU5LCAyNDAsIDUxLCAxNiwgMzUsIDI0NywgMjUsIAotICAgIDIxNiwgNzcsIDE2LCAzNSwgMjEzLCA3LCAyMTksIDIxMSwgMTYsIDM1LCAyMTMsIDcsIDIzMSwgNDksIDE2LCAzNSwgMjQ0LCAKLSAgICAxMzksIDIyNywgMTA1LCAyNDEsIDksIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgMTA1LCAxNiwgMzUsIDI0NCwgOCwgCi0gICAgMjQ1LCAxODQsIDEwOCwgMTYsIDM1LCAyNDQsIDgsIDI0NSwgMTg0LCAxNDcsIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgCi0gICAgMTQ5LCAxNiwgMzUsIDE4MiwgMjUxLCAxMzAsIDE2LCAzNSwgMjEwLCA5NSwgMjMxLCAxMTIsIDE2LCAzNSwgMjQxLCA4NCwgCi0gICAgNzYsIDIwOCwgMTA2LCAyNDgsIDMzLCAxNiwgMzUsIDI0NywgNTksIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIyNSwgOSwgMTYsIAotICAgIDM1LCAyMTAsIDI0MiwgMTYsIDM1LCAyNDEsIDksIDE2LCAzNSwgMjQwLCAxMSwgMjEzLCAxMzAsIDE2LCAzNSwgMjM3LCAKLSAgICAyMzgsIDIxMywgMTMwLCAxNiwgMzUsIDIxNiwgMTQ5LCAyMTMsIDEzMCwgMTYsIDM1LCAyMDYsIDIzNiwgMjEzLCAxMzAsIAotICAgIDE2LCAzNSwgMjExLCAyMjgsIDE2LCAzNSwgMjQ0LCA0NiwgMjQ4LCAzNywgOTcsIDE3MSwgMjQ3LCAyMzMsIDE2LCAzNSwgCi0gICAgMjIyLCAyMTEsIDE2LCAzNSwgMjQ0LCA0NywgMjM5LCAxNTksIDEwOCwgMTYsIDM1LCAyMTAsIDI0MywgMjM5LCAxNTksIAotICAgIDEwOCwgMjIwLCA4MiwgMTEzLCAyMjAsIDgyLCAyNDYsIDE5NCwgMjIwLCA4MiwgMjM5LCAxNjIsIDIyMCwgODIsIDIzMCwgCi0gICAgMjM5LCAyMzksIDE2MiwgMjIwLCA4MiwgMjQ4LCAxMjUsIDI0NywgMTkwLCAyMjAsIDgyLCAyNDcsIDI0MSwgMjA4LCAyNTAsIAotICAgIDIyMCwgODIsIDI0NywgMjI0LCAyNDgsIDIzNiwgMjM1LCAxNTMsIDIyMCwgODIsIDI1MCwgMjM3LCA3NiwgMjQ2LCAxNjgsIAotICAgIDIyMCwgODIsIDI0NCwgMTQ0LCAyMjAsIDgyLCAyNDUsIDgwLCAyNTEsIDEzNCwgMjIxLCA0NiwgMjIwLCA4MiwgNTIsIDI0OSwgCi0gICAgMjAsIDQzLCAxNywgMTA1LCA0MywgMTcsIDEwOCwgNDMsIDE3LCAxNDcsIDQzLCAxNywgMTQ5LCA0MywgMTcsIDE3MCwgNDMsIAotICAgIDE3LCAxOTUsIDQzLCAxNywgMjEzLCAxMTEsIDQzLCAxNywgMTk5LCA0MywgMTcsIDIyMiwgNjMsIDQzLCA0MiwgMjA5LCAKLSAgICAxNTIsIDQzLCA0MiwgMjQxLCAxMTIsIDQzLCA0MiwgMjA3LCAxNTQsIDQzLCA0MiwgMjA5LCA1NSwgNDMsIDQyLCAyMzksIAotICAgIDE0MSwgNDMsIDQyLCAyNDAsIDIyLCA0MywgNDIsIDIxMiwgODIsIDQzLCA0MiwgMjEzLCAxMDgsIDQzLCA0MiwgMjQxLCAKLSAgICAxNDAsIDQzLCA0MiwgMjIyLCA2MCwgNDMsIDQyLCAyMDcsIDE1MSwgMTAyLCAxNywgMTA1LCAxMDIsIDE3LCAxMDgsIDEwMiwgCi0gICAgMTcsIDE0NywgMTAyLCAxNywgMTQ5LCAxMDIsIDE3LCAxNzAsIDEwMiwgMTcsIDE5NSwgMTAyLCAxNywgMjEzLCAxMTEsIAotICAgIDEwMiwgMTcsIDE5OSwgMTAyLCAxNywgMjIyLCA2MywgMTAyLCA0MiwgMjA5LCAxNTIsIDEwMiwgNDIsIDI0MSwgMTEyLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1NCwgMTAyLCA0MiwgMjA5LCA1NSwgMTAyLCA0MiwgMjM5LCAxNDEsIDEwMiwgNDIsIDI0MCwgMjIsIAotICAgIDEwMiwgNDIsIDIxMiwgODIsIDEwMiwgNDIsIDIxMywgMTA4LCAxMDIsIDQyLCAyNDEsIDE0MCwgMTAyLCA0MiwgMjIyLCA2MCwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTEsIDE3LCAxMTgsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMTIwLCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgMTcsIDEyNiwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMzksIDE0NywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMzksIAotICAgIDIzMywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMTIsIDg4LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIxMywgMTEyLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDI0MSwgMTQzLCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIyMiwgNjQsIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCA0MiwgMjA5LCAxNTMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQxLCAxMTMsIDIzOSwgMTAyLCAKLSAgICAyMTEsIDYxLCA0MiwgMjA3LCAxNTUsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjA5LCA1NiwgMjM5LCAxMDIsIDIxMSwgNjEsIAotICAgIDQyLCAyMzksIDE0MiwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyNDAsIDIzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIxMiwgCi0gICAgODMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjEzLCAxMDksIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQxLCAxNDEsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjIyLCA2MSwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMDcsIDE1MiwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDEwMiwgOCwgNSwgMSwgNjMsIDEwMiwgOCwgNSwgMSwgMjQ5LCAyNTUsIDEwMiwgOCwgNSwgMSwgCi0gICAgMjQ3LCAxMjUsIDEwMiwgOCwgNSwgMSwgMjQ1LCA1MSwgMTAyLCA4LCA1LCAxLCA3NCwgMTAyLCA4LCA1LCAxLCAyNDAsIAotICAgIDE3NCwgMTAyLCA4LCA1LCAxLCAyMzksIDc1LCAxMDIsIDgsIDUsIDEsIDIzNywgMTcxLCAxMDIsIDgsIDUsIDEsIDc1LCAKLSAgICAxMDIsIDgsIDUsIDEsIDIzMCwgMTg0LCAxMDIsIDgsIDUsIDEsIDIzMCwgNTQsIDEwMiwgOCwgNSwgMSwgMTU5LCAxMDIsIDgsIAotICAgIDUsIDEsIDIyNiwgMTg1LCAxMDIsIDgsIDUsIDEsIDIyMywgMTYzLCAxMDIsIDgsIDUsIDEsIDc4LCAxMDIsIDgsIDUsIDEsIAotICAgIDIxOSwgMTg0LCAxMDIsIDgsIDUsIDEsIDIxNywgMTM0LCAxMDIsIDgsIDUsIDEsIDE0NiwgMTAyLCA4LCA1LCAxLCAxOTQsIAotICAgIDEwMiwgOCwgNSwgMSwgMjEwLCA2OSwgMTAyLCA4LCA1LCAxLCA2OCwgMTAyLCA4LCA1LCAxLCAyMDYsIDE2NCwgMTAyLCA4LCAKLSAgICA1LCAxLCAyMDQsIDE0NCwgMTAyLCA4LCA1LCAxLCAyMDMsIDE5NiwgMTAyLCA4LCA1LCAxLCAyMDMsIDEyNCwgMTAyLCA4LCAKLSAgICA1LCAxLCAyMDIsIDE1OSwgNDMsIDgsIDYsIDEsIDYzLCA0MywgOCwgNiwgMSwgMjQ5LCAyNTUsIDQzLCA4LCA2LCAxLCAyNDcsIAotICAgIDEyNSwgNDMsIDgsIDYsIDEsIDI0NSwgNTEsIDQzLCA4LCA2LCAxLCA3NCwgNDMsIDgsIDYsIDEsIDI0MCwgMTc0LCA0MywgOCwgCi0gICAgNiwgMSwgMjM5LCA3NSwgNDMsIDgsIDYsIDEsIDIzNywgMTcxLCA0MywgOCwgNiwgMSwgNzUsIDQzLCA4LCA2LCAxLCAyMzAsIAotICAgIDE4NCwgNDMsIDgsIDYsIDEsIDIzMCwgNTQsIDQzLCA4LCA2LCAxLCAxNTksIDQzLCA4LCA2LCAxLCAyMjYsIDE4NSwgNDMsIAotICAgIDgsIDYsIDEsIDIyMywgMTYzLCA0MywgOCwgNiwgMSwgNzgsIDQzLCA4LCA2LCAxLCAyMTksIDE4NCwgNDMsIDgsIDYsIDEsIAotICAgIDIxNywgMTM0LCA0MywgOCwgNiwgMSwgMTQ2LCA0MywgOCwgNiwgMSwgMTk0LCA0MywgOCwgNiwgMSwgMjEwLCA2OSwgNDMsIAotICAgIDgsIDYsIDEsIDY4LCA0MywgOCwgNiwgMSwgMjA2LCAxNjQsIDQzLCA4LCA2LCAxLCAyMDQsIDE0NCwgNDMsIDgsIDYsIDEsIAotICAgIDIwMywgMTk2LCA0MywgOCwgNiwgMSwgMjAzLCAxMjQsIDQzLCA4LCA2LCAxLCAyMDIsIDE1OSwgNDMsIDgsIDUsIDEsIDYzLCAKLSAgICA0MywgOCwgNSwgMSwgMjQ5LCAyNTUsIDQzLCA4LCA1LCAxLCAyNDcsIDEyNSwgNDMsIDgsIDUsIDEsIDI0NSwgNTEsIDQzLCAKLSAgICA4LCA1LCAxLCA3NCwgNDMsIDgsIDUsIDEsIDI0MCwgMTc0LCA0MywgOCwgNSwgMSwgMjM5LCA3NSwgNDMsIDgsIDUsIDEsIAotICAgIDIzNywgMTcxLCA0MywgOCwgNSwgMSwgNzUsIDQzLCA4LCA1LCAxLCAyMzAsIDE4NCwgNDMsIDgsIDUsIDEsIDIzMCwgNTQsIAotICAgIDQzLCA4LCA1LCAxLCAxNTksIDQzLCA4LCA1LCAxLCAyMjYsIDE4NSwgNDMsIDgsIDUsIDEsIDIyMywgMTYzLCA0MywgOCwgNSwgCi0gICAgMSwgNzgsIDQzLCA4LCA1LCAxLCAyMTksIDE4NCwgNDMsIDgsIDUsIDEsIDIxNywgMTM0LCA0MywgOCwgNSwgMSwgMTQ2LCAKLSAgICA0MywgOCwgNSwgMSwgMTk0LCA0MywgOCwgNSwgMSwgMjEwLCA2OSwgNDMsIDgsIDUsIDEsIDY4LCA0MywgOCwgNSwgMSwgCi0gICAgMjA2LCAxNjQsIDQzLCA4LCA1LCAxLCAyMDQsIDE0NCwgNDMsIDgsIDUsIDEsIDIwMywgMTk2LCA0MywgOCwgNSwgMSwgMjAzLCAKLSAgICAxMjQsIDQzLCA4LCA1LCAxLCAyMDIsIDE1OSwgNDMsIDE3LCAyMDIsIDg0LCAxODIsIDQzLCA0MiwgMjQxLCAxMTIsIDE4MiwgCi0gICAgNDMsIDQyLCAyMDcsIDE1NCwgMTgyLCA0MywgNDIsIDIwOSwgNTUsIDE4MiwgNDMsIDQyLCAyMzksIDE0MSwgMTgyLCA0MywgCi0gICAgNDIsIDI0MCwgMjIsIDE4MiwgNDMsIDQyLCAyMTIsIDgyLCAxODIsIDQzLCA0MiwgMjEzLCAxMDgsIDE4MiwgNDMsIDQyLCAKLSAgICAyNDEsIDE0MCwgMTgyLCA0MywgNDIsIDIyMiwgNjAsIDE4MiwgNDMsIDQyLCAyMDcsIDE1MSwgNTIsIDQzLCAxNywgMTA1LCAKLSAgICA1MiwgNDMsIDE3LCAxMDgsIDUyLCA0MywgMTcsIDE0NywgNTIsIDQzLCAxNywgMTQ5LCA1MiwgNDMsIDE3LCAxNzAsIDUyLCAKLSAgICA0MywgMTcsIDE5NSwgNTIsIDQzLCAxNywgMjEzLCAxMTEsIDUyLCA0MywgMTcsIDE5OSwgNTIsIDQzLCAxNywgMjIyLCA2MywgCi0gICAgNTIsIDQzLCA0MiwgMjA5LCAxNTIsIDE4MiwgNDMsIDE3LCAyMDIsIDg0LCA5OCwgMTE2LCAxNTcsIDIzNiwgMTA1LCA5OCwgCi0gICAgMTE2LCA3OSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMjA2LCAzOCwgOTgsIDExNiwgNzksIDIwNiwgMzgsIDk4LCAxMTYsIAotICAgIDE1NywgMjA4LCA3MCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgMjA4LCA3MCwgMjQ0LCAxNDUsIDIzNiwgCi0gICAgMTA1LCA5OCwgMTE2LCAxNTcsIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgMjA4LCA3MCwgMjQ0LCAKLSAgICAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDE1NywgMjE3LCA1OCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgCi0gICAgMjE3LCA1OCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDIxNywgNTgsIDI0NCwgMTQ1LCAyMDYsIDM4LCAKLSAgICA5OCwgMTE2LCA3OSwgMjE3LCA1OCwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjE2LCAxNiwgCi0gICAgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCA1MCwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgCi0gICAgOTgsIDExNiwgNzksIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDEyMSwgMTU3LCAyNSwgNDksIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIAotICAgIDc5LCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMTIsIDE1NywgCi0gICAgMjUsIDUwLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCA5OCwgMTE2LCA3OSwgMTEyLCAKLSAgICAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA0OSwgCi0gICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDQ5LCAyMjcsIDEzNCwgOTgsIDExNiwgNzksIDExMiwgMjUsIDIyNywgCi0gICAgMjIyLCA5OCwgMTE2LCAxNTcsIDgwLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgODAsIDE1NywgMjUsIDUwLCAyMzcsIDQ5LCAKLSAgICA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA1MCwgMTEyLCAKLSAgICAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDUwLCAKLSAgICAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNTAsIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNzksIDgwLCAKLSAgICAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgNDksIAotICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA0OSwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIAotICAgIDQ5LCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAKLSAgICAyNSwgNDksIDExMiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA0OSwgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCAKLSAgICA3OSwgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgNDksIDc5LCAKLSAgICAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCA3OSwgMjUsIDQ5LCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAKLSAgICAxMjEsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgCi0gICAgMTM0LCA5OCwgMTE2LCA1MCwgMTU3LCAyNSwgNDksIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNDksIDE1NywgMjUsIDUwLCAKLSAgICAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMzYsIAotICAgIDEwNSwgOTgsIDExNiwgNDksIDc5LCAyNSwgNTAsIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCA3OSwgMjUsIDQ5LCAKLSAgICAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIAotICAgIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgMTU3LCAyNSwgNDksIDExMiwgMjM3LCA0OSwgOTgsIAotICAgIDExNiwgNDksIDE1NywgMjUsIDUwLCAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAyMzYsIDEwNSwgOTgsIAotICAgIDExNiwgMTU3LCA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCA0OSwgNzksIDI1LCA1MCwgODAsIDIyNywgMTM0LCA5OCwgCi0gICAgMTE2LCA1MCwgNzksIDI1LCA0OSwgODAsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgMjM2LCAxMDYsIDIzNywgCi0gICAgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCAxMjEsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIAotICAgIDExMiwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAKLSAgICAxMTYsIDQ5LCAxMTIsIDc5LCAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAxMTIsIDc5LCAyNSwgNDksIAotICAgIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDQ5LCAxMjEsIDc5LCAyNSwgNTAsIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAKLSAgICAxMjEsIDc5LCAyNSwgNDksIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgMTEyLCAyMzYsIDEwNiwgCi0gICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCAxMjEsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCA1MCwgMTU3LCAKLSAgICAyNSwgNDksIDgwLCAyMzcsIDQ5LCA5OCwgMTE2LCA0OSwgMTU3LCAyNSwgNTAsIDgwLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgCi0gICAgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCA1MiwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgNTIsIAotICAgIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCA1MiwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCA1MiwgCi0gICAgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDUyLCAyMzYsIDEwNSwgOTgsIDExNiwgNTIsIDIwNiwgMzgsIDk4LCAxMTYsIAotICAgIDEyMSwgMjEyLCAxMjAsIDI1LCA1MCwgMjQyLCA3OCwgOTgsIDExNiwgMTIxLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAotICAgIDExNiwgNTIsIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDEyMSwgMjEyLCAxMjAsIDI1LCA0OSwgMjQyLCA3OCwgOTgsIAotICAgIDExNiwgMTIxLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICAxMTIsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDExMiwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKLSAgICAxMTYsIDUyLCAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMTIsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKLSAgICAxMTYsIDExMiwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgODAsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDgwLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAotICAgIDExNiwgNTIsIDgwLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgODAsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKLSAgICAxMTYsIDgwLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDEyMSwgMjEyLCAxMjAsIDI1LCAyMzYsIDEwNiwgMjQyLCA3OCwgOTgsIDExNiwgMTIxLCA1MiwgMjUsIDIzNiwgMTA2LCAKLSAgICAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDEyMSwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxMTIsIDIxMiwgMTIwLCAyNSwgCi0gICAgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIDExMiwgNTIsIDI1LCAyMzYsIDEwNiwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAKLSAgICAxMTIsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgODAsIDIxMiwgMTIwLCAyNSwgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIAotICAgIDgwLCA1MiwgMjUsIDIzNiwgMTA2LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIAotICAgIDE1NywgMjUwLCAxMjksIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIDEyMSwgMjUsIDIyNywgCi0gICAgMjIyLCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgCi0gICAgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjA2LCAyMjEsIDUwLCAyMDgsIDE3MywgMjI2LCAKLSAgICAyNTEsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDI0MywgMjI4LCAyMDYsIDIyMSwgNDksIDIwOCwgMTczLCAyMjYsIDI1MSwgCi0gICAgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjQ1LCAxMzAsIDk4LCAxMTYsIDE1NywgMjI3LCAyMjIsIDk4LCAKLSAgICAxMTYsIDE1NywgMjA2LCAyMjQsIDk4LCAxMTYsIDE1NywgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDIsIDcwLCA5OCwgCi0gICAgMTE2LCA3OSwgMjI3LCAyMjIsIDk4LCAxMTYsIDc5LCAyMDYsIDIyNCwgOTgsIDExNiwgNzksIDIxNiwgMTYsIDk4LCAxMTYsIAotICAgIDc5LCAyNDIsIDcwLCA5OCwgMTE2LCAxNTcsIDQ5LCAyNSwgNzksIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgCi0gICAgNzksIDI0MiwgNzAsIDk4LCAxMTYsIDc5LCA0OSwgMjUsIDE1NywgMjE2LCAxNiwgOTgsIDExNiwgNzksIDExMiwgMjUsIAotICAgIDE1NywgMjQyLCA3MCwgMjA2LCAyMjEsIDE2MiwgMjQ4LCAzMywgMjI2LCAyNTEsIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIAotICAgIDIyNiwgMjUxLCAxMTgsIDIxNywgNTYsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMjYsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMjYsIAotICAgIDI1MSwgMTYyLCAyNDgsIDMzLCAyMjYsIDI1MSwgMjM5LCAyMzMsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMjYsIDI1MSwgMTI2LCAKLSAgICAyMTcsIDU0LCAyNDgsIDMzLCAyMjYsIDI1MSwgMjEzLCAxMTIsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMzksIDEwMiwgMjQ4LCAKLSAgICAzMywgNDksIDIxMywgMTEyLCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIDEyNiwgMjE3LCA1NCwgMjQ4LCAzMywgNDksIDIzOSwgCi0gICAgMjMzLCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIDE2MiwgMjQ4LCAzMywgNDksIDEyNiwgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAKLSAgICAxMTgsIDIxNywgNTYsIDI0OCwgMzMsIDQ5LCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCA1MCwgMTYyLCAyNDgsIDMzLCAxNTcsIAotICAgIDIxMywgNzksIDIyNSwgMTAsIDIxMywgNzksIDI0NCwgMTUwLCAyMTMsIDc5LCAyMDYsIDIyMSwgMTE4LCAyNDEsIDEzOSwgCi0gICAgMjQ4LCAzMywgNTAsIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIDIxNywgNjAsIDIyNiwgMjUxLCAyMjcsIDIyMiwgMjE3LCAKLSAgICA2MCwgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCAyMjcsIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIAotICAgIDQ5LCAyNSwgMjI2LCAyNTEsIDQ5LCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIAotICAgIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgCi0gICAgMjI3LCAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCAKLSAgICAyMTcsIDYwLCAyMDYsIDIyMSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDIyNywgCi0gICAgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgNDksIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgNjIsIAotICAgIDIxMSwgMTc3LCA2MSwgMjExLCAxNzcsIDYxLCA1MSwgMywgMjE1LCAxODksIDI0NSwgMTY0LCA2MSwgNTEsIDI0NSwgMTk1LCAKLSAgICA2MiwgNSwgMjExLCAxNzcsIDUxLCAzLCAyMzYsIDEwNiwgMjQwLCA5LCA1MSwgMywgODAsIDI0MCwgOSwgNTEsIDMsIDIxOSwgCi0gICAgMjI5LCAyNDUsIDEyNSwgMjQwLCA5LCA1MSwgMywgMjA2LCAyMjEsIDQ5LCAyMDgsIDE3MywgMjI2LCAyNTEsIDUwLCAyNDAsIAotICAgIDksIDUxLCAzLCAyMDYsIDIyMSwgNTAsIDIwOCwgMTczLCAyMjYsIDI1MSwgNDksIDI0MCwgOSwgNTEsIDMsIDI0MywgMjI4LCAKLSAgICAyNDUsIDEyNSwgMjQwLCA5LCA2MiwgNSwgMjExLCAxNzcsIDYxLCA1LCAyMTEsIDE3NywgNjIsIDIxNiwgMTQzLCA2MSwgCi0gICAgMjE2LCAxNDMsIDYyLCA4MCwgMjE2LCAxNDMsIDYxLCA4MCwgMjE2LCAxNDMsIDYyLCAyMTksIDgwLCA2MSwgMjE5LCA4MCwgCi0gICAgNjIsIDIwNiwgMjIzLCAyMDgsIDg1LCA2MSwgMjA2LCAyMjMsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgNSwgMjA4LCA4NSwgCi0gICAgNjEsIDIwNiwgMjIzLCA1LCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgMjA4LCA4NSwgNjEsIDIxNiwgMTEsIDIwOCwgODUsIDYyLCAKLSAgICAyMTYsIDExLCA1LCAyMDgsIDg1LCA2MSwgMjE2LCAxMSwgNSwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIxOCwgNjAsIDYxLCAKLSAgICAyMTYsIDExLCAyMTgsIDYwLCA2MiwgMjQyLCA2OSwgMjA4LCA4NSwgNjEsIDI0MiwgNjksIDIwOCwgODUsIDYyLCAyNDIsIAotICAgIDY5LCA1LCAyMDgsIDg1LCA2MSwgMjQyLCA2OSwgNSwgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCAyMDgsIDg1LCA2MSwgMjI3LCAKLSAgICAyMTcsIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgNSwgMjA4LCA4NSwgNjEsIDIyNywgMjE3LCA1LCAyMDgsIDg1LCA2MiwgCi0gICAgMjI3LCAyMTcsIDIxOCwgNjAsIDYxLCAyMjcsIDIxNywgMjE4LCA2MCwgNjIsIDI0MywgMjIxLCA2MSwgMjQzLCAyMjEsIDYxLCAKLSAgICAyNDMsIDIyMiwgMjQ1LCAxOTUsIDYyLCA1LCAyNDMsIDIyMSwgMjM5LCAyNDIsIDIyNiwgMjQ2LCA2MSwgMjQ2LCA2MSwgCi0gICAgMjQyLCA4MywgMjQ2LCA2MSwgMjQ2LCA2MiwgMywgODAsIDI0MCwgOSwgMjQ3LCAxNzMsIDYyLCAyNDYsIDYxLCAyNDYsIDYyLCAKLSAgICAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMjYsIDI1MSwgCi0gICAgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgCi0gICAgNTAsIDIxNywgNjAsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDI1MSwgMTUsIDI0NywgMTQ4LCAyMDYsIDIyMSwgNDksIDIxNywgCi0gICAgNjAsIDI0OCwgNDMsIDQ5LCAxNjIsIDYyLCAyNDYsIDYxLCA1MCwgMTYyLCA2MiwgMjQ2LCA2MSwgMjMwLCAyNDAsIDI0NywgCi0gICAgMTc3LCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIwNiwgMjIxLCAxNjIsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjI2LCAKLSAgICAyNTEsIDE2MiwgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgNDksIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgCi0gICAgMTI4LCAyMDYsIDIyMSwgNTAsIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgMTI4LCAyMjYsIDI1MSwgNTAsIDIxNywgNjAsIAotICAgIDI0NiwgNTUsIDI1MCwgMTI4LCAyMjYsIDI1MSwgNDksIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgMTI4LCAyMDYsIDIyMSwgCi0gICAgMTYyLCAyNDYsIDYxLCAyMjYsIDI1MSwgMTYyLCAyNDYsIDYxLCA2MiwgMjI2LCAyNTEsIDUwLCAyMDgsIDg1LCA2MiwgMjI2LCAKLSAgICAyNTEsIDQ5LCAyMDgsIDg1LCA2MiwgMjA2LCAyMjEsIDQ5LCAyMDgsIDg1LCA2MiwgMjA2LCAyMjEsIDUwLCAyMDgsIDg1LCAKLSAgICA2MSwgMjQ3LCAxNzcsIDUxLCAzLCA0OSwgMTYyLCAyNDgsIDQzLCA1MSwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIAotICAgIDIwNiwgMjIxLCA0OSwgMjQzLCAyMjgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIyNiwgMjUxLCA1MCwgMjQzLCAyMjgsIDE2MiwgCi0gICAgMjQ4LCA0MywgNjEsIDUxLCAzLCA4MCwgMjQ4LCA1NSwgMjI3LCAxMTQsIDYxLCAyMDYsIDIyMywgMjA4LCA4NiwgMywgMjQzLCAKLSAgICA4NSwgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCA1MCwgCi0gICAgMTYyLCAyNDgsIDQzLCAyMjgsIDgsIDI0NiwgNjEsIDYxLCA1MSwgMywgMjA2LCAyMjEsIDQ5LCAyMTcsIDU5LCA2MSwgNTEsIAotICAgIDMsIDIyNiwgMjUxLCA0OSwgMjE3LCA1OSwgNjEsIDUxLCAzLCAyMjYsIDI1MSwgNTAsIDIxNywgNTksIDYxLCA1MSwgMywgCi0gICAgMjA2LCAyMjEsIDUwLCAyMTcsIDU5LCA2MSwgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDQ5LCAyMTcsIDU5LCA2MSwgMjQ2LCAKLSAgICA2MiwgMywgMjI2LCAyNTEsIDQ5LCAyMTcsIDU5LCA2MSwgMjQ2LCA2MiwgMywgMjI2LCAyNTEsIDUwLCAyMTcsIDU5LCA2MSwgCi0gICAgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDUwLCAyMTcsIDU5LCAyMDYsIDIyMSwgNDksIDIwOCwgODUsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjA4LCA4NSwgMjI2LCAyNTEsIDQ5LCAyMDgsIDg1LCA2MSwgMjI1LCAxMCwgMjExLCAxNzcsIDYyLCAyMjUsIDEwLCAyMTEsIAotICAgIDE3NywgNjEsIDIyNSwgMTAsIDUsIDIxMSwgMTc3LCA2MiwgMjI1LCAxMCwgNSwgMjExLCAxNzcsIDIyNiwgMjUxLCA1MCwgCi0gICAgMjA4LCA4NSwgNjIsIDIxMCwgMjE1LCAzLCAyMTYsIDE2MiwgMjQ2LCA3LCAyMDcsIDMsIDIxMiwgMTUsIDI0NSwgMjM2LCAKLSAgICA2MiwgMjExLCA5NCwgNjEsIDIxMSwgOTQsIDIyNywgMTMxLCAyMDksIDE3LCAyMTAsIDIxNCwgMjUwLCA3OCwgMjIxLCAxODgsIAotICAgIDI0NCwgMTksIDIyMSwgMTg4LCAyNDUsIDIwNCwgMjE5LCAyNTAsIDYyLCAyMDksIDE2MSwgNjEsIDIwOSwgMTYxLCAyNDgsIAotICAgIDI0OCwgMjQ3LCAyMzMsIDI0OCwgMjQ4LCA5OCwgMywgMjQ2LCAxNjgsIDI0OCwgMjQ4LCA5OCwgMywgMjAzLCAxOTYsIDIxNCwgCi0gICAgMjU0LCAyMDcsIDQsIDMsIDIxNiwgMTkxLCAyNDIsIDQ4LCAyMzYsIDQ3LCAyNDgsIDEwMiwgNjEsIDIxMiwgMjM3LCAyMTgsIAotICAgIDE1OSwgNjIsIDIxMiwgMjM3LCAyMTgsIDE1OSwgMjEzLCA2OCwgMjE2LCA3MywgMjE1LCAxOTgsIDIzOSwgMjAxLCAyMzcsIAotICAgIDU2LCAyNDcsIDE3NywgNjIsIDQ5LCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDYxLCA0OSwgCi0gICAgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDExMiwgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCAKLSAgICA2MSwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCAyMTIsIDYzLCAyNSwgMjQ1LCAxMjksIDI0NywgMTEsIDU0LCAyMTYsIDIwMywgCi0gICAgNTQsIDI0OCwgNjIsIDU0LCAyNDcsIDgzLCAyNTAsIDIwOCwgMjE5LCAyMzAsIDI0NSwgMTMwLCAyNDYsIDE0MywgMjE2LCAKLSAgICA1OSwgMjQ1LCAxMzEsIDc2LCAyMjcsIDksIDI0NSwgMTMxLCA3NiwgMjMwLCAxNTEsIDIxMSwgOTUsIDI1LCAyNDUsIDEzOCwgCi0gICAgMjQwLCA3NSwgOTcsIDI1MSwgMTE1LCAyMTMsIDcwLCAyMzcsIDEzMSwgMjUsIDIxMiwgMTU5LCAyMTksIDMzLCA5NywgMjAzLCAKLSAgICAxLCAyMDMsIDc2LCAyMDgsIDc1LCAzNSwgMjM3LCA1MSwgMjA4LCA3NSwgMzUsIDIyOCwgMzMsIDIwOCwgNzUsIDM1LCAyMzksIAotICAgIDI0OSwgMjA4LCA3NSwgMzUsIDIwOSwgMTgsIDIwOCwgNzUsIDM1LCAyMDQsIDE2LCAyMDgsIDc1LCAzNSwgMjA0LCA4MCwgCi0gICAgMjA4LCA3NSwgMzUsIDIyNCwgMTIsIDIwOCwgNzUsIDM1LCAyNDEsIDE3OSwgMjA0LCAzNywgNzYsIDI0MywgMjQ5LCA2MSwgCi0gICAgMjM5LCAxMTQsIDI0MCwgMTAyLCA2MSwgMjEyLCAzMCwgMjQwLCAxMDIsIDYyLCAyMTIsIDMwLCAyNDAsIDEwMiwgNjEsIAotICAgIDIxMCwgMjE1LCAzLCAyMTYsIDE2MiwgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMjksIDIyOCwgMSwgMjE3LCA1NiwgMjI0LCAKLSAgICAyOSwgMjI0LCAyMzQsIDI0MCwgNDMsIDU0LCAyNDEsIDE3OSwgMjI1LCAxMjcsIDU0LCAyMzAsIDY5LCAyMTQsIDIxOCwgCi0gICAgMjA2LCAyMDUsIDIyMiwgMjI0LCAyMTgsIDczLCAyNTAsIDExNCwgMjA5LCAyMDUsIDIzOCwgMTc4LCAyNDcsIDU3LCAyMjcsIAotICAgIDE4NCwgMjA1LCAyMDIsIDIyNywgMTQ1LCAyMTQsIDE4NywgMjE1LCAyMCwgMjQ3LCA0MywgMjUwLCAxNDUsIDIxOCwgMTA4LCAKLSAgICA2MSwgMjQ2LCAxNTAsIDIyOSwgODEsIDYxLCAyNDYsIDE1MCwgMjE3LCA0OCwgNjEsIDI0NiwgMTUwLCAyMTUsIDIwNiwgNjEsIAotICAgIDI0NiwgMTUwLCAyNDgsIDU0LCA2MSwgMjQ2LCAxNTAsIDIyOSwgMzEsIDYxLCAyNDYsIDE1MCwgMjE5LCA0NSwgNjIsIDI0NiwgCi0gICAgMTUwLCAyMjksIDgxLCA2MiwgMjQ2LCAxNTAsIDIxNywgNDgsIDYyLCAyNDYsIDE1MCwgMjE1LCAyMDYsIDYyLCAyNDYsIAotICAgIDE1MCwgMjQ4LCA1NCwgNjIsIDI0NiwgMTUwLCAyMjksIDMxLCA2MiwgMjQ2LCAxNTAsIDIxOSwgNDUsIDYyLCAyMTEsIDIyNiwgCi0gICAgMjEwLCAyMjcsIDYxLCAyMzcsIDU2LCAyMTAsIDIyNywgNjEsIDI0MywgMjIyLCAyMTAsIDIyNywgNjIsIDI0NiwgNSwgMjEwLCAKLSAgICAyMjcsIDYxLCAyMTEsIDIyNiwgMjEwLCAyMjcsIDYyLCAyMzcsIDU2LCAyMTAsIDIyNywgNjIsIDI0MywgMjIyLCAyMTAsIAotICAgIDIyNywgNjEsIDI0NiwgNSwgMjEwLCAyMjcsIDIzNiwgNDcsIDIxMSwgMTgyLCAyMTcsIDU2LCAyMjEsIDE2MCwgMjQxLCAKLSAgICAxMzksIDIyMSwgMTYwLCAyNDgsIDE1OCwgMjQxLCAxMzksIDIyMSwgMTU1LCAyNDgsIDE1OCwgMjEyLCA4MSwgMjIxLCAxNTUsIAotICAgIDIyMywgMTk1LCAyMzksIDIxNywgNTQsIDIyMywgMTk1LCAyMjMsIDY2LCA1NCwgMjIzLCAxOTUsIDIxMywgNTcsIDU0LCAKLSAgICAyMDQsIDQ2LCAyMTAsIDg5LCAyNDUsIDEzMCwgMjQxLCAxNzYsIDIxMCwgODksIDI0NSwgMTMwLCAyMDYsIDIzMywgMjE2LCAKLSAgICAxMzksIDk3LCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDEyMCwgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTgsIAotICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE3LCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExNSwgCi0gICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTMsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTExLCAKLSAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDEwOSwgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjM4LCAxNzYsIAotICAgIDIyNSwgNzAsIDYyLCAyMDYsIDIzMywgMjE2LCAxMzksIDk3LCAyMTYsIDE0MCwgMjE5LCA5NSwgOTcsIDIxOSwgNjgsIDIxOSwgCi0gICAgOTUsIDk3LCAyMTgsIDIzOCwgMjE5LCA5NSwgNTQsIDIwNCwgMzUsIDk3LCAyNDMsIDIxNCwgMjQwLCAxMDEsIDI0MywgMjE0LCAKLSAgICAyNDAsIDEwMCwgMjQzLCAyMTQsIDI0MCwgOTksIDI0MywgMjE0LCAyNDAsIDk4LCAyNDMsIDIxNCwgMjQwLCA5NywgMjQzLCAKLSAgICAyMTQsIDI0MCwgOTYsIDYxLCAyNDYsIDYyLCAzLCA3MCwgMjE2LCAxNiwgNjEsIDI0NiwgNjIsIDMsIDEyMCwgMjQzLCA4MywgCi0gICAgNjIsIDI0NiwgNjIsIDMsIDYxLCA3MCwgMjE2LCAxNiwgNjIsIDI0NiwgNjIsIDMsIDEyMCwgNjEsIDI0MywgODMsIDIyNCwgCi0gICAgNDUsIDM1LCAyMDMsIDc2LCAyMjQsIDQ1LCAzNSwgMjAzLCAwLCAyNDMsIDE5NSwgMzUsIDIzNywgMjQ4LCAyMDMsIDc2LCAKLSAgICAyNDMsIDE5NSwgMzUsIDIyNywgMTc3LCAyMDMsIDAsIDI0MywgMTk1LCAzNSwgMjI3LCAxNzcsIDIwMywgNzYsIDI0MywgCi0gICAgMTk1LCAzNSwgMjM3LCAyNDgsIDIwMywgMCwgNjEsIDIzOSwgMjI1LCA2MiwgMjM5LCAyMjUsIDIzNywgMTMxLCAyNSwgMjE4LCAKLSAgICAxNjMsIDI1MCwgMjI4LCAyNDUsIDEyOCwgMjEwLCAxNTQsIDIxMSwgMTAzLCA3NiwgMjUxLCA5MiwgMjE0LCAyMDMsIDI1MSwgCi0gICAgMjksIDIzOSwgMTk3LCAyMzgsIDE4NywgMjExLCAxMDMsIDc2LCAyMzcsIDI2LCAyNTAsIDQyLCA5NywgMjM5LCAyMTMsIAotICAgIDIxOSwgMjA3LCA2MSwgMjExLCA5NCwgMTI2LCAyMjcsIDEwOSwgMjQ1LCAxODEsIDIxNiwgMTYsIDEyNiwgMjI3LCAxMDksIAotICAgIDI0NSwgMTgxLCAyMjcsIDIyMiwgMjA0LCA5MSwgNTQsIDEzOCwgMjA1LCAxNzksIDU0LCAyNDIsIDc1LCAyNDAsIDQzLCA1NCwgCi0gICAgMjQyLCA3NSwgMjI1LCAxMjcsIDU0LCAyMzAsIDI1MCwgMjQwLCA0MywgMjUsIDIyNSwgMTI3LCA1NCwgMjI1LCAxMjcsIDI1LCAKLSAgICAyNDAsIDQzLCA1NCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDU0LCAyMjUsIDEyNywgMywgMjExLCAzMiwgMjUsIDIyNSwgCi0gICAgMTI3LCAyNSwgMjQwLCA0MywgNTQsIDgwLCAyMjUsIDEyNywgMywgMjExLCAzMiwgNTQsIDIzNiwgMTA2LCAyMjUsIDEyNywgCi0gICAgMywgMjExLCAzMiwgNTQsIDIyNSwgMTAsIDYxLCAyNDYsIDYxLCAyMjUsIDEwLCA2MiwgMjQ2LCA2MSwgMjI1LCAxMCwgNSwgCi0gICAgNjEsIDI0NiwgNjEsIDIyNSwgODYsIDk3LCAyNDMsIDEzNSwgOTcsIDIwNiwgMjMwLCAyMTksIDY3LCA5NywgMjQ1LCAyNDcsIAotICAgIDIzOSwgOTcsIDIwNiwgMjAxLCAyMjIsIDIxNywgMjQ2LCAyMDMsIDIxOSwgMTM3LCAyMzAsIDc1LCAyMDUsIDI0MCwgMjQ2LCAKLSAgICAxMjMsIDYyLCAyMjQsIDMwLCAyMjcsIDEyOCwgMjEzLCAxMDEsIDIxMywgMTQwLCAyMTcsIDM4LCAyMTMsIDEyMCwgMjEyLCAKLSAgICAxMCwgMjQ4LCAyNTEsIDI0OCwgMjE3LCAxMDMsIDIyOSwgMTUxLCA2MSwgMjQyLCA1OCwgMjI1LCAxMjIsIDYxLCAyNDIsIAotICAgIDU4LCAyMjksIDgxLCA2MiwgMjQyLCA1OCwgMjI1LCAxMjIsIDYyLCAyNDIsIDU4LCAyMjksIDgxLCAyMTIsIDE2LCAyMDQsIAotICAgIDMsIDIxMiwgMTksIDIxMCwgMjE1LCAyNDgsIDEzNSwgMjQ2LCA3LCAyMTYsIDE5MCwgNjIsIDIxMiwgMTUsIDIwOSwgMTksIAotICAgIDI0NiwgOCwgMjUsIDIxNiwgMTkwLCAyMDcsIDE3NCwgNjEsIDIxMiwgMjM3LCAyMTgsIDE1OSwgMjA3LCAxNzQsIDYyLCAKLSAgICAyMTIsIDIzNywgMjE4LCAxNTksIDYxLCAyNDMsIDIyMiwgMjMxLCA1MCwgMjExLCAxNzcsIDI0NSwgMTI0LCAyMjgsIDE1LCAKLSAgICAyNDMsIDE2MiwgMjQ3LCAzOSwgMjE5LCAyNTMsIDIxOCwgMTYzLCAyNDcsIDQwLCAyMTIsIDQ4LCAyMzcsIDM2LCAzLCA2MSwgCi0gICAgMjQ1LCAxMzAsIDQzLCAyNDUsIDEyNCwgMjI4LCAxNSwgMjQ2LCAxOTUsIDIyMSwgMTkyLCAyNDEsIDYyLCAyNTAsIDI1NSwgCi0gICAgMjIwLCAyNiwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MiwgMjA3LCAxMzEsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjEsIAotICAgIDIwNywgMTMxLCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYyLCA0OSwgMjI4LCAxNiwgMjI0LCAyMzMsIDYxLCA0OSwgMjI4LCAKLSAgICAxNiwgMjI0LCAyMzMsIDI0MiwgNTMsIDIxMiwgNDAsIDU0LCA3OSwgNjEsIDI0MiwgNjksIDIwOCwgODUsIDQ5LCAyNDYsIAotICAgIDE2LCAyNDEsIDYyLCAxMDMsIDIxNCwgMjU0LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjMxLCA1MCwgNjEsIDI0NiwgNjIsIDIzMSwgCi0gICAgNTAsIDYyLCAyMTEsIDE3NywgNjIsIDIwOCwgNTAsIDIxNiwgODQsIDQ5LCAyNDEsIDYxLCAyMTYsIDg0LCA0OSwgMjQxLCAKLSAgICA2MCwgMjUwLCA1NCwgMTYsIDM1LCAyMDYsIDIwNSwgNzksIDI0NiwgNjIsIDMsIDIxMSwgMzIsIDI1LCAxMjAsIDE4NywgNTUsIAotICAgIDIxOCwgMjU0LCAyMTYsIDEzLCAyMzAsIDI1MiwgMjE4LCAyNTQsIDIyNywgMjE5LCAyMzAsIDI1MiwgMjE4LCAyNTQsIDIzMCwgCi0gICAgMjM5LCAyMTgsIDI1NCwgNjIsIDI0NSwgMTMxLCAyMjAsIDMyLCAyMTMsIDgsIDIxMiwgMjUyLCAyMTIsIDIwMywgMjQ2LCAKLSAgICA5MCwgMjQ3LCAxOSwgMjM2LCAyMzEsIDIxMiwgODksIDIzOCwgMTg4LCAyMDQsIDMsIDIzNiwgMjMsIDIzOCwgMTg4LCAzLCAKLSAgICAyMzcsIDEwMSwgMjI1LCAxMDcsIDE2LCAzNSwgMjI3LCAxMzMsIDIyNCwgMTIsIDIwNywgNCwgMjIwLCAzMiwgMjM3LCAyMzksIAotICAgIDIzOSwgMTQ4LCAyMzksIDIyNiwgMjMxLCA1MCwgMjM2LCAxMjYsIDI0MCwgMzQsIDIxNSwgMTUsIDUxLCAyMzksIDE0NywgCi0gICAgMjQ1LCAxNjQsIDIxMiwgNjYsIDIzNSwgMTYzLCAyMTIsIDY5LCAyMTgsIDIzMCwgMywgMjQ4LCAyNTEsIDIwOSwgMTQ0LCAKLSAgICAyMzAsIDE2OSwgMjQ4LCAyMzYsIDk3LCAyMzcsIDU5LCAyMzcsIDI1MCwgOTcsIDIzOSwgMTA1LCAyMTcsIDE4MCwgMjQ1LCAKLSAgICAxMDAsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNjEsIDIzOSwgMjI2LCAzLCAyMzYsIDEwNiwgMTAxLCA2MiwgMjExLCAzMywgCi0gICAgNjIsIDIxNSwgMjUsIDIxNCwgMTkwLCAyMDYsIDIyMSwgMjQ4LCAzOCwgMjE0LCAxOTAsIDYyLCAyMTQsIDE5MCwgMjI2LCAKLSAgICAyNTEsIDI0OCwgMzgsIDIxNCwgMTkwLCA2MSwgMjE0LCAxOTAsIDYxLCA3OSwgMjQ2LCAxNjksIDgyLCAyMDksIDE2MiwgCi0gICAgMjI3LCA0NywgNTQsIDIwOSwgMjIxLCAyNDIsIDUyLCAyNTEsIDUyLCAyNDEsIDU3LCAyMTYsIDE4OCwgMjM5LCAyMzgsIAotICAgIDIxNiwgMTg4LCAyMzcsIDEyMywgMjA1LCAyMjgsIDIzNywgMTIzLCAyMDMsIDIyMCwgMjM3LCAxMjMsIDIyNiwgMjUxLCA1MCwgCi0gICAgMjE5LCA4LCAyMTksIDgsIDIwNiwgMjIxLCA1MCwgMjE5LCA4LCA2MSwgMjIyLCA5NywgNjIsIDIyMiwgOTcsIDI0NiwgMTY5LCAKLSAgICA4MiwgNzksIDI0NiwgMTY5LCA4MiwgMjIzLCAyMjQsIDIwMywgMTk2LCA3OSwgMjIzLCAyMjQsIDIwMywgMTk2LCAyNDgsIAotICAgIDI0OCwgMjAzLCAxOTYsIDc5LCAyNDgsIDI0OCwgMjAzLCAxOTYsIDIxOSwgMjA3LCAzMCwgMjQ1LCAxMzAsIDc5LCAzMCwgCi0gICAgMjQ1LCAxMzAsIDE3MSwgMjQ2LCAyMTgsIDI0NSwgMTMwLCA3OSwgMTcxLCAyNDYsIDIxOCwgMjQ1LCAxMzAsIDgsIDI0NSwgCi0gICAgMTMwLCAyMTMsIDc3LCA2MSwgOCwgMjQ1LCAxMzAsIDIxOSwgMjA3LCA4LCAyNDUsIDEzMCwgMjI1LCAxMjQsIDI0NSwgMTMwLCAKLSAgICAyMTEsIDk1LCA3NiwgMjQ0LCAxMzcsIDIzOSwgMTQ3LCAyMDksIDE4MCwgMjUwLCA1OSwgMjM5LCAxNDcsIDI0OCwgMjQ5LCAKLSAgICAyNTAsIDU5LCA3OSwgMjM5LCAxNDcsIDI0OCwgMjQ5LCAyNTAsIDU5LCAyMzksIDE0NywgMjQ2LCAzLCAyNTAsIDU5LCA2MiwgCi0gICAgMjM5LCAxNDcsIDIxOCwgNjEsIDIxMSwgOTQsIDYxLCAyMzksIDE0NywgMjE4LCA2MSwgMjExLCA5NCwgMjExLCAyMjEsIAotICAgIDIxMSwgNDIsIDIxOSwgMjA3LCA2MSwgMjExLCA5NCwgNDMsIDYxLCAyMTEsIDk0LCAxNzEsIDI0NiwgMjE4LCA2MiwgMjExLCAKLSAgICA5NCwgNjIsIDI0NiwgMjE4LCA2MSwgMjExLCA5NCwgMjE5LCAyMDcsIDYyLCAyMTEsIDk0LCA3OSwgMjE5LCAyMDcsIDYyLCAKLSAgICAyMTEsIDk0LCAyMTgsIDExOCwgMjExLCA5NCwgMjEzLCA3NywgNjEsIDIxMSwgOTQsIDc5LCAyNTAsIDU5LCAxNzEsIDI0NiwgCi0gICAgMjE4LCAyNTAsIDU5LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCAKLSAgICA5NCwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMTIsIDg4LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgCi0gICAgMjQxLCAxNDMsIDIxOCwgNjEsIDIxNiwgMTQxLCA2MiwgMjExLCA5NCwgNzksIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTYsIAotICAgIDE0MSwgNjIsIDIxMSwgOTQsIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjEyLCA4MywgMjE4LCA2MSwgMjUwLCAKLSAgICA1OSwgMjA5LCAxODAsIDI1MCwgNTksIDE3MSwgMjQ2LCAyMTgsIDIwOSwgMTgwLCAyNTAsIDU5LCA3OSwgMjA5LCAxODAsIAotICAgIDI1MCwgNTksIDIxMiwgODgsIDIxOCwgMjE4LCA2MiwgMjUsIDYxLCAyMzksIDIwMCwgNjIsIDIzOSwgMjAwLCA2MSwgMjM5LCAKLSAgICAyMDAsIDI0MSwgMTQzLCAyMTgsIDIxOCwgMjE5LCAyMDcsIDYyLCAyMzksIDIwMCwgNDMsIDE3MSwgMjQ2LCAyMTgsIDI0MSwgCi0gICAgMTQzLCAyMTgsIDYxLCAyMTEsIDk0LCA3OSwgMjA5LCAxODAsIDIxOCwgMTE4LCAyNTAsIDU5LCAyMTIsIDE3LCAyMDgsIAotICAgIDI0NCwgMjA4LCA3OCwgMjEyLCAxNywgNzksIDI0NiwgMTQ2LCAyMTIsIDE3LCAyMTEsIDIyMywgNzksIDIxMSwgMjIzLCAKLSAgICAyNDgsIDI0OSwgMjUwLCA1OSwgMjQxLCAxNDMsIDIwOSwgMTgwLCAyMTcsIDIxMywgMjUwLCA1OSwgNzksIDI0MSwgMTQzLCAKLSAgICAyMDksIDE4MCwgMjE3LCAyMTMsIDI1MCwgNTksIDI0NSwgMTMxLCA4MiwgMjEzLCA3NywgNjEsIDI0NiwgNjEsIDE4MiwgCi0gICAgMTAzLCAyNDUsIDEzMSwgODIsIDIyNiwgMjUxLCA1MCwgMjQyLCA1MCwgNjEsIDIxMSwgMTc3LCAyMDYsIDIyMSwgNTAsIAotICAgIDI0MiwgNTAsIDYxLCAyMTEsIDE3NywgMjI2LCAyNTEsIDUwLCAyMTMsIDc3LCA2MSwgMjExLCAxNzcsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjEzLCA3NywgNjEsIDIxMSwgMTc3LCA2MiwgMjE3LCA0NywgMTMxLCAyMTksIDIzMywgNjEsIDIxNywgNDcsIDEzMSwgMjE5LCAKLSAgICAyMzMsIDYxLCAyNDAsIDIxMiwgMTMxLCAyMTksIDIzMywgNjIsIDI0MywgMjIyLCAyMjQsIDEwMywgNjEsIDIwMywgMTk2LCAKLSAgICA3OSwgMjQwLCAyMTIsIDEzMSwgOTcsIDE1NywgODAsIDE0MiwgMjI1LCAxMCwgODAsIDE0MiwgNzksIDgwLCAxNDIsIDc5LCAKLSAgICAyMTIsIDEyMCwgMjA3LCAxNzQsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjEyLCAxMjAsIDI0NSwgCi0gICAgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgNTIsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAKLSAgICAyMTksIDIzMywgNzksIDUyLCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDEyNCwgMjEyLCAxMjAsIAotICAgIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMTI0LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgCi0gICAgMjE5LCAyMzMsIDI0NSwgODYsIDIxMSwgNzgsIDIxOSwgODksIDIsIDIxOSwgMjMzLCA3OSwgMjQwLCAyMTIsIDEzMSwgMjE5LCAKLSAgICAyMzMsIDc5LCAyMzcsIDU2LCAyNDAsIDIxMiwgMTMxLCAyMTksIDIzMywgNzksIDYyLCAyMzcsIDU1LCAyMTUsIDE5OCwgNzksIAotICAgIDYyLCAyMzcsIDU2LCAyNDcsIDE3NywgMjM5LCAyMDEsIDIzNywgNTUsIDIxNSwgMTk4LCAyMzksIDIwMSwgMjM3LCA1NiwgCi0gICAgMjQ3LCAxNzcsIDIyNSwgMTAsIDQ5LCAyMTksIDc3LCAyMTksIDIzMywgMjI1LCAxMCwgNTAsIDIxOSwgNzcsIDIxOSwgMjMzLCAKLSAgICAyMjUsIDEwLCAyMzksIDIxNCwgNDksIDIxOSwgNzcsIDIxOSwgMjMzLCAyMjUsIDEwLCAyMzksIDIxNCwgNTAsIDIxOSwgNzcsIAotICAgIDIxOSwgMjMzLCAyMjUsIDEwLCAyMjcsIDIxNywgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAxMCwgMjE2LCAKLSAgICAxMSwgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgNzksIDIyNywgMjE3LCAyNTAsIDIxOCwgMjE3LCAzMSwgMTMxLCAKLSAgICAyMTksIDIzMywgNzksIDIxNiwgMTEsIDI1MCwgMjE4LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjI3LCAyMTcsIAotICAgIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDc5LCAyMTYsIDExLCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCAKLSAgICAxNTcsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAxNTcsIDUwLCAyMDgsIDEzMywgMjEzLCAKLSAgICAzMywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIDEwLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIAotICAgIDEwLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDEwNSwgMjQzLCAKLSAgICAxNzQsIDE4MiwgNDMsIDE3LCAxMDgsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTQ3LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIAotICAgIDE0OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxNzAsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTk1LCAyNDMsIDE3NCwgCi0gICAgMTgyLCA0MywgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE5OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAKLSAgICAyMjIsIDYzLCAyNDMsIDE3NCwgMTgyLCA0MywgNDIsIDIwOSwgMTUyLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTA1LCAyNDMsIAotICAgIDE3NCwgNDMsIDQxLCAxNywgMTA4LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTQ3LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgCi0gICAgMTQ5LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTcwLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTk1LCAyNDMsIDE3NCwgNDMsIAotICAgIDQxLCAxNywgMjEzLCAxMTEsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxOTksIDI0MywgMTc0LCA0MywgNDEsIDE3LCAyMjIsIAotICAgIDYzLCAyNDMsIDE3NCwgNDMsIDQxLCA0MiwgMjA5LCAxNTIsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDEwNSwgMjQzLCAKLSAgICAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTA4LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxNDcsIDI0MywgMTc0LCAxODIsIAotICAgIDQzLCA0MSwgMTcsIDE0OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTcwLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIAotICAgIDE3LCAxOTUsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAKLSAgICAxOTksIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIyMiwgNjMsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgNDIsIDIwOSwgCi0gICAgMTUyLCA3OSwgMjA0LCAyNiwgODYsIDQ3LCA3OSwgOTEsIDU0LCA3OSwgMjI0LCAxMDMsIDU0LCA3OSwgMjQzLCAxMzcsIDU0LCAKLSAgICA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgNzksIDg2LCA0NywgNzksIDE1MywgMjQxLCAxNzYsIDQ3LCAyNDIsIDYzLCAKLSAgICAyMTgsIDYzLCA4NiwgNDcsIDc5LCAyMTUsIDE5MCwgODYsIDQ3LCAyMDgsIDg0LCA4NiwgNDcsIDc5LCAyMDgsIDg0LCA4NiwgCi0gICAgNDcsIDI0NCwgMTQzLCAyMDgsIDg0LCA4NiwgNDcsIDc5LCAyNDQsIDE0MywgMjA4LCA4NCwgODYsIDQ3LCA2MiwgODYsIDQ3LCAKLSAgICAyMDksIDMxLCAyMDgsIDE0MywgODYsIDI1MCwgOTQsIDIwOSwgMzEsIDI0NywgMjQ2LCA4NiwgMjUwLCA5NCwgNjIsIDg2LCAKLSAgICAyNTAsIDk0LCA3OSwgNjIsIDI0NSwgODYsIDE4MywgMjUsIDg2LCA0NywgNzksIDYyLCAyNDUsIDg2LCAxNzcsIDI1LCA4NiwgCi0gICAgNDcsIDIxMSwgMTc0LCA2MiwgODYsIDQ3LCA3OSwgMjQ1LCAyMTcsIDYyLCA4NiwgNDcsIDIxNiwgMTAsIDYxLCA4NiwgNDcsIAotICAgIDIyNywgMjE2LCA2MSwgODYsIDQ3LCAyNDksIDI0LCAyMTMsIDc3LCA2MSwgODYsIDQ3LCAyMzksIDExNywgMjEzLCA3NywgCi0gICAgNjEsIDg2LCA0NywgNzksIDIyNiwgMjUxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDc5LCAyMDYsIDIyMSwgMjE2LCA5LCA2MSwgCi0gICAgODYsIDQ3LCAyMjEsIDE2MiwgMjI2LCAyNTEsIDIxNiwgOSwgNjEsIDg2LCA0NywgMjQ1LCA5MywgMjI3LCAxNCwgMjIxLCAKLSAgICAxNjIsIDIwNiwgMjIxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDQzLCA3OSwgNjEsIDg2LCA0NywgMjA0LCAzMiwgODYsIDQ3LCAKLSAgICAyNDgsIDQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAyNDgsIDQyLCA4NiwgNDcsIDI0OCwgNDIsIDE1MywgMjQxLCAxNzYsIAotICAgIDQ3LCA3OSwgMjQ4LCA0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgNzksIDI0OCwgNDIsIDg2LCA0NywgNzksIDI0OCwgCi0gICAgNDIsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMDksIDE4MiwgODYsIDQ3LCA3OSwgMjA5LCAxODEsIDg2LCA0NywgMjA0LCA1NiwgCi0gICAgODYsIDQ3LCA3OSwgMjA0LCA1NiwgODYsIDQ3LCAyMjAsIDMsIDg2LCA0NywgNTIsIDI0NSwgOTMsIDIyNywgMTQsIDEyNiwgCi0gICAgMjQzLCAxODQsIDI1MCwgMjE3LCA2MSwgMjA4LCA4NiwgMjQ1LCAxOTUsIDUsIDYxLCAyMDgsIDg1LCAyMTgsIDIzMywgMTcxLCAKLSAgICAyMTAsIDI0NCwgMTcxLCAyMTAsIDE5NywgNDksIDIxNSwgOTMsIDI0OSwgMTEsIDI0NCwgNDMsIDUwLCAyMTUsIDkzLCAyNDksIAotICAgIDExLCAyNDQsIDQzLCAyMTksIDI0NSwgMywgNzAsIDIzMSwgNiwgMjE2LCA3NCwgMjEyLCAxLCAyMTcsIDI0OCwgMjEwLCAKLSAgICAyNDQsIDIxMCwgMTk4LCAyMTcsIDI0OCwgMjEyLCAwLCA4MCwgMjQ4LCAyMzEsIDMsIDIzNiwgMTA2LCA5NSwgMTMsIDIxNSwgCi0gICAgMjQ1LCAyNDMsIDIyNywgMTYzLCAyNDMsIDEzNiwgMTMsIDI0MCwgODQsIDI0MywgMjI3LCAxMDMsIDIyNywgMzcsIDI1MCwgCi0gICAgMjI2LCAxMDMsIDIyNywgMzcsIDIxOSwgMjQ0LCA2MSwgMjQzLCAyMjIsIDMsIDI0NiwgMjE2LCAyNDMsIDg1LCAyNSwgMywgCi0gICAgMjQzLCA4NSwgMjQxLCAxMTUsIDc2LCAyMjAsIDEsIDIwNiwgMjEyLCAyMjYsIDI1MSwgNTAsIDI0NSwgMTY2LCAzLCAyNDMsIAotICAgIDg1LCAyMDYsIDIyMSwgNDksIDI0NSwgMTY2LCAzLCAyNDMsIDg1LCA0OSwgMjE5LCAyMDksIDIzMCwgOTksIDUwLCAyMTksIAotICAgIDIwOSwgMjMwLCA5OSwgMjM5LCAxMDIsIDIxOSwgMjA5LCAyMzAsIDk5LCAyMjgsIDgsIDExMiwgMjEwLCAzLCAyMjgsIDgsIAotICAgIDEyMSwgMjEwLCAzLCA0OSwgMjUsIDUwLCA1MiwgMjA3LCAxNzMsIDQ5LCAyNSwgNTAsIDIxMCwgMywgNDksIDIyMywgMjI4LCAKLSAgICAxNjMsIDUwLCAyMTAsIDMsIDE2MywgNDksIDIxMCwgMywgMTEyLCAyMTAsIDQsIDMsIDI0NiwgNjIsIDU1LCAyMjYsIDI0NywgCi0gICAgMjQzLCAxNDIsIDI0NywgMTM3LCAyMzYsIDEwNiwgMjE1LCAxMzUsIDYxLCAyNDUsIDIxNiwgMjQzLCAyMjEsIDYxLCAyNDUsIAotICAgIDIxNiwgMjQzLCAyMjIsIDMsIDk2LCAyMDgsIDI1NCwgNjEsIDI0NSwgMjE2LCAyNDMsIDIyMiwgMywgODYsIDIwOCwgMjU0LCAKLSAgICA2MSwgNTEsIDMsIDk2LCAyMDgsIDI1NCwgNjEsIDUxLCAzLCA4NiwgMjA4LCAyNTQsIDEzLCA0OSwgNjEsIDUxLCAxNTUsIAotICAgIDEzLCA1MCwgNjEsIDUxLCAxNTUsIDEzLCA0OSwgMjUwLCAyMTgsIDE1NSwgMTMsIDUwLCAyNTAsIDIxOCwgMTU1LCAxMywgCi0gICAgNDksIDUyLCAyNTAsIDIxOCwgMTU1LCAxMywgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCAxMywgNDksIDYxLCAyMDgsIDEzMywgCi0gICAgMjEzLCAzMywgMTU1LCAxMywgNTAsIDYxLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAxMywgNDksIDIzOSwgMjE0LCAyMTksIAotICAgIDc2LCAxMywgNTAsIDIzOSwgMjE0LCAyMTksIDc2LCAxNzcsIDIxNywgNTgsIDQ3LCAxODMsIDIxNywgNTgsIDQ3LCAyNTAsIAotICAgIDE5NCwgMjM4LCAyMjYsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAyMzgsIDIyNiwgMjQ2LCA2MiwgNDcsIDUwLCA1MywgMywgCi0gICAgNDMsIDIxOCwgNzYsIDE2MywgOTYsIDQ3LCAxNjMsIDg2LCA0NywgMTYzLCA0OSwgNTAsIDQ3LCAxNjMsIDk2LCA1MiwgNDcsIAotICAgIDE2MywgODYsIDUyLCA0NywgMTYzLCA0OSwgNTAsIDUyLCA0NywgMTYzLCA5NiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgCi0gICAgODYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIDk2LCA1MiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgODYsIDUyLCA1MywgCi0gICAgMjM5LCAxMjAsIDE0MiwgMTYzLCA4NiwgMjExLCAxNzEsIDQ3LCA1OCwgNTksIDI0OCwgMzYsIDU4LCA1OSwgMjQzLCA4MiwgCi0gICAgNTgsIDU5LCAyNDIsIDIxMCwgNTgsIDU5LCAyNDMsIDgxLCA1OCwgNTksIDI0MiwgMTQ2LCA1OCwgNTksIDI0MywgMTcsIDU4LCAKLSAgICA1OSwgMjQyLCAyMDksIDU4LCA1OSwgMjQzLCA4MCwgNTgsIDU5LCAyNDIsIDExNCwgNTgsIDU5LCAyNDIsIDI0MSwgNTgsIAotICAgIDU5LCAyNDIsIDE3NywgNTgsIDU5LCAyNDMsIDQ4LCA1OCwgNTksIDI0MiwgMTQ1LCA1OCwgNTksIDI0MywgMTYsIDU4LCA1OSwgCi0gICAgMjQyLCAyMDgsIDU4LCA1OSwgMjQzLCA3OSwgNTgsIDU5LCAyNDIsIDk4LCA1OCwgNTksIDI0MiwgMjI1LCA1OCwgNTksIAotICAgIDI0MiwgMTYxLCA1OCwgNTksIDI0MywgMzIsIDU4LCA1OSwgMjQyLCAxMjksIDU4LCA1OSwgMjQzLCAwLCA1OCwgNTksIDI0MiwgCi0gICAgMTkyLCA1OCwgNTksIDI0MywgNjMsIDU4LCA1OSwgMjQyLCAxMTMsIDU4LCA1OSwgMjQyLCAyNDAsIDU4LCA1OSwgMjQyLCAKLSAgICAxNzYsIDU4LCA1OSwgMjQzLCA0NywgNTgsIDU5LCAyNDIsIDE0NCwgNTgsIDU5LCAyNDMsIDE1LCA1OCwgNTksIDI0MiwgCi0gICAgMjA3LCA1OCwgNTksIDI0MywgNzgsIDU4LCA1OSwgMjQyLCA5MCwgNTgsIDU5LCAyNDIsIDIxNywgNTgsIDU5LCAyNDIsIAotICAgIDE1MywgNTgsIDU5LCAyNDMsIDI0LCA1OCwgNTksIDI0MiwgMTIxLCA1OCwgNTksIDI0MiwgMjQ4LCA1OCwgNTksIDI0MiwgCi0gICAgMTg0LCA1OCwgNTksIDI0MywgNTUsIDU4LCA1OSwgMjQyLCAxMDUsIDU4LCA1OSwgMjQyLCAyMzIsIDU4LCA1OSwgMjQyLCAKLSAgICAxNjgsIDU4LCA1OSwgMjQzLCAzOSwgNTgsIDU5LCAyNDIsIDEzNiwgNTgsIDU5LCAyNDMsIDcsIDU4LCA1OSwgMjQyLCAxOTksIAotICAgIDU4LCA1OSwgMjQzLCA3MCwgNTgsIDU5LCAyNDIsIDk3LCA1OCwgNTksIDI0MiwgMjI0LCA1OCwgNTksIDI0MiwgMTYwLCA1OCwgCi0gICAgNTksIDI0MywgMzEsIDU4LCA1OSwgMjQyLCAxMjgsIDU4LCA1OSwgMjQyLCAyNTUsIDU4LCA1OSwgMjQyLCAxOTEsIDU4LCAKLSAgICA1OSwgMjQzLCA2MiwgNTgsIDU5LCAyNDIsIDExMiwgNTgsIDU5LCAyNDIsIDIzOSwgNTgsIDU5LCAyNDIsIDE3NSwgNTgsIAotICAgIDU5LCAyNDMsIDQ2LCA1OCwgNTksIDI0MiwgMTQzLCA1OCwgNTksIDI0MywgMTQsIDU4LCA1OSwgMjQyLCAyMDYsIDU4LCA1OSwgCi0gICAgMjQzLCA3NywgNTgsIDU5LCAyNDIsIDg2LCA1OCwgNTksIDI0MiwgMjEzLCA1OCwgNTksIDI0MiwgMTQ5LCA1OCwgNTksIAotICAgIDI0MywgMjAsIDU4LCA1OSwgMjQyLCAxMTcsIDU4LCA1OSwgMjQyLCAyNDQsIDU4LCA1OSwgMjQyLCAxODAsIDU4LCA1OSwgCi0gICAgMjQzLCA1MSwgNTgsIDU5LCAyNDIsIDEwMSwgNTgsIDU5LCAyNDIsIDIyOCwgNTgsIDU5LCAyNDIsIDE2NCwgNTgsIDU5LCAKLSAgICAyNDMsIDM1LCA1OCwgNTksIDI0MiwgMTMyLCA1OCwgNTksIDI0MywgMywgNTgsIDU5LCAyNDIsIDE5NSwgNTgsIDU5LCAyNDMsIAotICAgIDY2LCA1OCwgNTksIDI0MiwgOTMsIDU4LCA1OSwgMjQyLCAyMjAsIDU4LCA1OSwgMjQyLCAxNTYsIDU4LCA1OSwgMjQzLCAyNywgCi0gICAgNTgsIDU5LCAyNDIsIDEyNCwgNTgsIDU5LCAyNDIsIDI1MSwgNTgsIDU5LCAyNDIsIDE4NywgNTgsIDU5LCAyNDMsIDU4LCAKLSAgICA1OCwgNTksIDI0MiwgMTA4LCA1OCwgNTksIDI0MiwgMjM1LCA1OCwgNTksIDI0MiwgMTcxLCA1OCwgNTksIDI0MywgNDIsIAotICAgIDU4LCA1OSwgMjQyLCAxMzksIDU4LCA1OSwgMjQzLCAxMCwgNTgsIDU5LCAyNDIsIDIwMiwgNTgsIDU5LCAyNDMsIDczLCA1OCwgCi0gICAgNTksIDI0MiwgODksIDU4LCA1OSwgMjQyLCAyMTYsIDU4LCA1OSwgMjQyLCAxNTIsIDU4LCA1OSwgMjQzLCAyMywgNTgsIDU5LCAKLSAgICAyNDIsIDEyMCwgNTgsIDU5LCAyNDIsIDI0NywgNTgsIDU5LCAyNDIsIDE4MywgNTgsIDU5LCAyNDMsIDU0LCA1OCwgNTksIAotICAgIDI0MiwgMTA0LCA1OCwgNTksIDI0MiwgMjMxLCA1OCwgNTksIDI0MiwgMTY3LCA1OCwgNTksIDI0MywgMzgsIDU4LCA1OSwgCi0gICAgMjQyLCAxMzUsIDU4LCA1OSwgMjQzLCA2LCA1OCwgNTksIDI0MiwgMTk4LCA1OCwgNTksIDI0MywgNjksIDU4LCA1OSwgMjQyLCAKLSAgICA5NiwgNTgsIDU5LCAyNDIsIDIyMywgNTgsIDU5LCAyNDIsIDE1OSwgNTgsIDU5LCAyNDMsIDMwLCA1OCwgNTksIDI0MiwgCi0gICAgMTI3LCA1OCwgNTksIDI0MiwgMjU0LCA1OCwgNTksIDI0MiwgMTkwLCA1OCwgNTksIDI0MywgNjEsIDU4LCA1OSwgMjQyLCAKLSAgICAxMTEsIDU4LCA1OSwgMjQyLCAyMzgsIDU4LCA1OSwgMjQyLCAxNzQsIDU4LCA1OSwgMjQzLCA0NSwgNTgsIDU5LCAyNDIsIAotICAgIDE0MiwgNTgsIDU5LCAyNDMsIDEzLCA1OCwgNTksIDI0MiwgMjA1LCA1OCwgNTksIDI0MywgNzYsIDU4LCA1OSwgMjQyLCA4NCwgCi0gICAgNTgsIDU5LCAyNDIsIDIxMSwgNTgsIDU5LCAyNDIsIDE0NywgNTgsIDU5LCAyNDMsIDE4LCA1OCwgNTksIDI0MiwgMTE1LCAKLSAgICA1OCwgNTksIDI0MiwgMjQyLCA1OCwgNTksIDI0MiwgMTc4LCA1OCwgNTksIDI0MywgNDksIDU4LCA1OSwgMjQyLCA5OSwgNTgsIAotICAgIDU5LCAyNDIsIDIyNiwgNTgsIDU5LCAyNDIsIDE2MiwgNTgsIDU5LCAyNDMsIDMzLCA1OCwgNTksIDI0MiwgMTMwLCA1OCwgCi0gICAgNTksIDI0MywgMSwgNTgsIDU5LCAyNDIsIDE5MywgNTgsIDU5LCAyNDMsIDY0LCA1OCwgNTksIDI0MiwgOTEsIDU4LCA1OSwgCi0gICAgMjQyLCAyMTgsIDU4LCA1OSwgMjQyLCAxNTQsIDU4LCA1OSwgMjQzLCAyNSwgNTgsIDU5LCAyNDIsIDEyMiwgNTgsIDU5LCAKLSAgICAyNDIsIDI0OSwgNTgsIDU5LCAyNDIsIDE4NSwgNTgsIDU5LCAyNDMsIDU2LCA1OCwgNTksIDI0MiwgMTA2LCA1OCwgNTksIAotICAgIDI0MiwgMjMzLCA1OCwgNTksIDI0MiwgMTY5LCA1OCwgNTksIDI0MywgNDAsIDU4LCA1OSwgMjQyLCAxMzcsIDU4LCA1OSwgCi0gICAgMjQzLCA4LCA1OCwgNTksIDI0MiwgMjAwLCA1OCwgNTksIDI0MywgNzEsIDU4LCA1OSwgMjQyLCA4NywgNTgsIDU5LCAyNDIsIAotICAgIDIxNCwgNTgsIDU5LCAyNDIsIDE1MCwgNTgsIDU5LCAyNDMsIDIxLCA1OCwgNTksIDI0MiwgMTE4LCA1OCwgNTksIDI0MiwgCi0gICAgMjQ1LCA1OCwgNTksIDI0MiwgMTgxLCA1OCwgNTksIDI0MywgNTIsIDU4LCA1OSwgMjQyLCAxMDIsIDU4LCA1OSwgMjQyLCAKLSAgICAyMjksIDU4LCA1OSwgMjQyLCAxNjUsIDU4LCA1OSwgMjQzLCAzNiwgNTgsIDU5LCAyNDIsIDEzMywgNTgsIDU5LCAyNDMsIDQsIAotICAgIDU4LCA1OSwgMjQyLCAxOTYsIDU4LCA1OSwgMjQzLCA2NywgNTgsIDU5LCAyNDIsIDk0LCA1OCwgNTksIDI0MiwgMjIxLCA1OCwgCi0gICAgNTksIDI0MiwgMTU3LCA1OCwgNTksIDI0MywgMjgsIDU4LCA1OSwgMjQyLCAxMjUsIDU4LCA1OSwgMjQyLCAyNTIsIDU4LCAKLSAgICA1OSwgMjQyLCAxODgsIDU4LCA1OSwgMjQzLCA1OSwgNTgsIDU5LCAyNDIsIDEwOSwgNTgsIDU5LCAyNDIsIDIzNiwgNTgsIAotICAgIDU5LCAyNDIsIDE3MiwgNTgsIDU5LCAyNDMsIDQzLCA1OCwgNTksIDI0MiwgMTQwLCA1OCwgNTksIDI0MywgMTEsIDU4LCA1OSwgCi0gICAgMjQyLCAyMDMsIDU4LCA1OSwgMjQzLCA3NCwgNTgsIDU5LCAyNDIsIDg1LCA1OCwgNTksIDI0MiwgMjEyLCA1OCwgNTksIAotICAgIDI0MiwgMTQ4LCA1OCwgNTksIDI0MywgMTksIDU4LCA1OSwgMjQyLCAxMTYsIDU4LCA1OSwgMjQyLCAyNDMsIDU4LCA1OSwgCi0gICAgMjQyLCAxNzksIDU4LCA1OSwgMjQzLCA1MCwgNTgsIDU5LCAyNDIsIDEwMCwgNTgsIDU5LCAyNDIsIDIyNywgNTgsIDU5LCAKLSAgICAyNDIsIDE2MywgNTgsIDU5LCAyNDMsIDM0LCA1OCwgNTksIDI0MiwgMTMxLCA1OCwgNTksIDI0MywgMiwgNTgsIDU5LCAyNDIsIAotICAgIDE5NCwgNTgsIDU5LCAyNDMsIDY1LCA1OCwgNTksIDI0MiwgOTIsIDU4LCA1OSwgMjQyLCAyMTksIDU4LCA1OSwgMjQyLCAKLSAgICAxNTUsIDU4LCA1OSwgMjQzLCAyNiwgNTgsIDU5LCAyNDIsIDEyMywgNTgsIDU5LCAyNDIsIDI1MCwgNTgsIDU5LCAyNDIsIAotICAgIDE4NiwgNTgsIDU5LCAyNDMsIDU3LCA1OCwgNTksIDI0MiwgMTA3LCA1OCwgNTksIDI0MiwgMjM0LCA1OCwgNTksIDI0MiwgCi0gICAgMTcwLCA1OCwgNTksIDI0MywgNDEsIDU4LCA1OSwgMjQyLCAxMzgsIDU4LCA1OSwgMjQzLCA5LCA1OCwgNTksIDI0MiwgMjAxLCAKLSAgICA1OCwgNTksIDI0MywgNzIsIDU4LCA1OSwgMjQyLCA4OCwgNTgsIDU5LCAyNDIsIDIxNSwgNTgsIDU5LCAyNDIsIDE1MSwgNTgsIAotICAgIDU5LCAyNDMsIDIyLCA1OCwgNTksIDI0MiwgMTE5LCA1OCwgNTksIDI0MiwgMjQ2LCA1OCwgNTksIDI0MiwgMTgyLCA1OCwgCi0gICAgNTksIDI0MywgNTMsIDU4LCA1OSwgMjQyLCAxMDMsIDU4LCA1OSwgMjQyLCAyMzAsIDU4LCA1OSwgMjQyLCAxNjYsIDU4LCAKLSAgICA1OSwgMjQzLCAzNywgNTgsIDU5LCAyNDIsIDEzNCwgNTgsIDU5LCAyNDMsIDUsIDU4LCA1OSwgMjQyLCAxOTcsIDU4LCA1OSwgCi0gICAgMjQzLCA2OCwgNTgsIDU5LCAyNDIsIDk1LCA1OCwgNTksIDI0MiwgMjIyLCA1OCwgNTksIDI0MiwgMTU4LCA1OCwgNTksIAotICAgIDI0MywgMjksIDU4LCA1OSwgMjQyLCAxMjYsIDU4LCA1OSwgMjQyLCAyNTMsIDU4LCA1OSwgMjQyLCAxODksIDU4LCA1OSwgCi0gICAgMjQzLCA2MCwgNTgsIDU5LCAyNDIsIDExMCwgNTgsIDU5LCAyNDIsIDIzNywgNTgsIDU5LCAyNDIsIDE3MywgNTgsIDU5LCAKLSAgICAyNDMsIDQ0LCA1OCwgNTksIDI0MiwgMTQxLCA1OCwgNTksIDI0MywgMTIsIDU4LCA1OSwgMjQyLCAyMDQsIDU4LCA1OSwgCi0gICAgMjQzLCA3NSwgODYsIDIwNywgMTM0LCA1MywgMywgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCA1MiwgODAsIDk1LCAKLSAgICA5NiwgNTIsIDUzLCAzLCA4MCwgOTUsIDg2LCA1MiwgNTMsIDMsIDgwLCA5NSwgNDksIDUwLCA1MiwgNTMsIDMsIDgwLCA5NSwgCi0gICAgODYsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIDE0MiwgOTYsIDUyLCA1MywgMjM5LCAxMjAsIDE0MiwgODYsIDUyLCA1MywgCi0gICAgMjM5LCAxMjAsIDE0MiwgMTgzLCA1MywgMywgMjM2LCAxMDYsIDk1LCAxNzcsIDUzLCAzLCAyMzYsIDEwNiwgOTUsIDE3NywgCi0gICAgMjA4LCA3MCwgNDcsIDE4MywgMjA4LCA3MCwgNDcsIDk2LCA1MiwgMjQ0LCAxNDUsIDQ3LCA4NiwgNTIsIDI0NCwgMTQ1LCAKLSAgICA0NywgOTYsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDIwNywgMTM0LCAKLSAgICAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCA1MywgMywgMjQyLCA4MywgMjExLCA3NywgMTc3LCA1MywgMjA4LCAxNzMsIAotICAgIDE0MiwgMTgzLCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDUzLCAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA4NiwgNTMsIDMsIAotICAgIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OCwgODYsIDIwNywgMTM0LCA1MywgCi0gICAgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAKLSAgICAyNTAsIDk2LCA4NiwgMjUwLCA5NiwgOTYsIDUyLCAyNTAsIDk2LCA4NiwgNTIsIDI1MCwgOTYsIDk2LCA1MywgMjA4LCAxNzMsIAotICAgIDYyLCAyNDMsIDIyMSwgODYsIDUzLCAyMDgsIDE3MywgNjIsIDI0MywgMjIxLCA5NiwgNTMsIDIzOSwgMTIwLCAyNDgsIDIzMSwgCi0gICAgMjA4LCAxNzMsIDYyLCAyNDMsIDIyMSwgODYsIDUzLCAyMzksIDEyMCwgMjQ4LCAyMzEsIDIwOCwgMTczLCA2MiwgMjQzLCAKLSAgICAyMjEsIDE1MywgMjA0LCA0NiwgMjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDI1LCAyMTEsIAotICAgIDIzOCwgMjA0LCA0NiwgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDMsIDExMywgMTUzLCAyNDEsIDE3NiwgNTMsIDMsIDExMywgCi0gICAgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgMywgMTEzLCAyMTEsIDIzOCwgMjA0LCA0NiwgNTMsIDMsIDExMywgMTUzLCAyMDQsIAotICAgIDQ2LCA1MywgMjUsIDE1MywgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIDI1LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCAKLSAgICA1MywgMjUsIDE1MywgMjA0LCA0NiwgNDcsIDIxNSwgMjQ1LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDI0MCwgODQsIDI0MywgCi0gICAgMjI3LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDIxNSwgMjQ1LCAyNDMsIDIyNywgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA1MywgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjQ1LCAxMjQsIDIxMSwgMjM4LCAKLSAgICAyNDEsIDE3NiwgNDcsIDI0MCwgODQsIDI0MywgMjI4LCAyNDUsIDEyNCwgMTUzLCAyNDEsIDE3NiwgNDcsIDIxNSwgMjQ1LCAKLSAgICAyNDMsIDIyOCwgMjQ1LCAxMjQsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDUzLCAyNDUsIDEyNCwgCi0gICAgMTUzLCAyMDQsIDQ2LCA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMDQsIDc2LCAKLSAgICA1MywgMjE4LCA1OSwgMjQzLCAxNjQsIDIxNiwgMTYsIDUzLCAyMTgsIDU5LCA4NiwgMjA5LCA4NCwgMjQ1LCA4NCwgMjA2LCAKLSAgICAyMTIsIDUzLCAyMTgsIDU5LCA4NiwgMjA5LCA4NCwgMjQ1LCA4NCwgMjQyLCA2OCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCAKLSAgICA4NCwgMjQ1LCA4NCwgMjI3LCAyMTIsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDI0NSwgODQsIDIxNiwgNSwgMjE2LCAKLSAgICA4LCAyNTAsIDEyOSwgMjQ2LCAxOCwgNDcsIDIyNywgMjE1LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyMDgsIDE0NSwgCi0gICAgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjQ3LCAyNDgsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDIwOCwgMTQ1LCAyNTAsIAotICAgIDEyOSwgMjQ2LCAxOCwgNTMsIDMsIDIyNCwgMTAyLCAyMDgsIDE0NSwgMjUwLCAxMjksIDI1MCwgMTk0LCA1MywgMywgMjE4LCAKLSAgICA3NiwgMjI2LCAyNTEsIDUwLCAyMTMsIDE0NSwgMjQ2LCAxOCwgNDcsIDIyNiwgMjUxLCA0OSwgMjEzLCAxNDUsIDI1MCwgCi0gICAgMTk0LCA0NywgMjUwLCAxOTQsIDI0NiwgMTYsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAyNDYsIDE2LCAyNDYsIDYyLCA0NywgCi0gICAgODYsIDUzLCA4NywgMjEyLCAyMjgsIDk2LCA0NywgOTYsIDUzLCA4NywgMjEyLCAyMjgsIDg2LCA0NywgMjEyLCAyMjgsIDg2LCAKLSAgICA1MywgODcsIDk2LCA0NywgODYsIDUzLCAzLCA5MSwgNTYsIDk2LCA1MywgMywgOTEsIDU2LCA4NiwgNTMsIDIwOSwgMjUsIAotICAgIDIwMywgMTk2LCA0OSwgNTAsIDUzLCAyMDksIDI1LCA1LCAyNDYsIDYxLCAxNzcsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIAotICAgIDUsIDI0NiwgNjEsIDQ5LCAxNTAsIDExMiwgNTAsIDE1MCwgMTIxLCAyMzcsIDg2LCA0OSwgMTUwLCAxMjEsIDUwLCAxNTAsIAotICAgIDExMiwgMjM3LCA4NiwgMTEyLCAxNTAsIDUwLCAxMjEsIDE1MCwgNDksIDIzNywgODYsIDExMiwgMTUwLCA0OSwgMTIxLCAKLSAgICAxNTAsIDUwLCAyMzcsIDg2LCA0OSwgMTUwLCAxMTIsIDUwLCAxNTAsIDExMiwgMjM3LCA4NiwgMTEyLCAxNTAsIDUwLCAxMjEsIAotICAgIDE1MCwgNTAsIDIzNywgODYsIDQ5LCAxNTAsIDEyMSwgNTAsIDE1MCwgMTIxLCAyMzcsIDg2LCAxMTIsIDE1MCwgNDksIDEyMSwgCi0gICAgMTUwLCA0OSwgMjM3LCA4NiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCAyMDgsIDE3MywgMTQyLCA4NiwgMjM3LCA4NywgCi0gICAgMywgMTUwLCAxMTIsIDIwOCwgMTczLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA1MCwgMjA4LCAxNzMsIDE0MiwgMTgzLCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMDgsIDE3MywgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIwOCwgMTczLCAKLSAgICAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjA4LCAxNzMsIDE0MiwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAKLSAgICAyMDgsIDE3MywgMTQyLCAxODMsIDIzNywgODcsIDMsIDE1MCwgNDksIDIwOCwgMTczLCAxNDIsIDk2LCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDExMiwgMjM5LCAxMjAsIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCAyMzksIDEyMCwgMTQyLCAxNzcsIAotICAgIDIzNywgODcsIDMsIDE1MCwgNTAsIDIzOSwgMTIwLCAxNDIsIDE4MywgMjM3LCA4NywgMywgMTUwLCA1MCwgMjM5LCAxMjAsIAotICAgIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMzksIDEyMCwgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIAotICAgIDIzOSwgMTIwLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgMjM5LCAxMjAsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDQ5LCAyMzksIDEyMCwgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA5NiwgMjM3LCA4NywgMywgCi0gICAgMTUwLCAyNDIsIDcwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIDI0OCwgMTEwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMjE2LCAxNiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA3MCwgMTgzLCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDk2LCAyMzcsIAotICAgIDg3LCAzLCAxNTAsIDExMiwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDIwNiwgMjI0LCA5NiwgMjM3LCA4NywgMywgMTUwLCAKLSAgICAxMjEsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDcwLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA5NiwgCi0gICAgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIyNCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCA4NywgOTYsIDIzNywgODcsIDMsIAotICAgIDE1MCwgMjQyLCA3MCwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgMTYzLCAyNDQsIDE0NCwgOTYsIDIzNywgODcsIAotICAgIDMsIDE1MCwgMTIxLCAyNDgsIDEyNiwgMTYzLCAyNDQsIDE0NCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgMTYzLCAKLSAgICAyNDQsIDE0NCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyNDgsIDEyNiwgMTYzLCAyNDQsIDE0NCwgMTc3LCAyMzcsIAotICAgIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDE4MywgMjM3LCA4NywgMywgCi0gICAgMTUwLCA0OSwgMjQ4LCAxMTAsIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCA1MCwgNTIsIDUzLCAzLCAyMTUsIAotICAgIDE4OSwgMjM3LCA2NCwgMjQxLCAzNSwgMiwgODcsIDg2LCA0NywgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgODYsIDQ3LCA5NiwgCi0gICAgNTMsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDg2LCA1MywgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgODYsIDUzLCA4NywgCi0gICAgMjUxLCA3LCAxNTYsIDEzNSwgMjI3LCAxNzksIDg3LCA5NiwgNDcsIDk2LCA1MywgMjA5LCAyNSwgMjI3LCAxNzgsIDIzNywgCi0gICAgMjQ3LCA4NywgODYsIDQ3LCAyMTAsIDI0NSwgODcsIDg2LCA0NywgOTYsIDUzLCAyMDksIDI1LCAyMTAsIDI0NCwgMjEwLCAKLSAgICAxOTgsIDg3LCA5NiwgNDcsIDQ5LCAyMzksIDI0NCwgMjA5LCAyNDgsIDUwLCAyMzksIDI0NCwgMjA5LCAyNDgsIDExMiwgCi0gICAgMjM5LCAyNDQsIDIwOSwgMjQ4LCAxMjEsIDIzOSwgMjQ0LCAyMDksIDI0OCwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAyNDQsIAotICAgIDQzLCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxMSwgMTg4LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIwNywgMTIxLCAyNDUsIDI0MiwgCi0gICAgNDksIDYxLCAyNDUsIDkzLCAxNTUsIDUwLCA2MSwgMjQ1LCA5MywgMTU1LCA0OSwgNjEsIDIxOSwgNzYsIDUwLCA2MSwgMjE5LCAKLSAgICA3NiwgMjAyLCAxNjAsIDIyMSwgMTY0LCA0OSwgMjMxLCA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDUwLCAyMzEsIAotICAgIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNDksIDI0OCwgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA1MCwgCi0gICAgMjQ4LCA2NSwgMTU1LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAyMDYsIDI0NiwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjA2LCAKLSAgICAyNDYsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAyMzEsIDUwLCAyMDgsIDE0NSwgMjQ1LCAxNjUsIDUwLCA1MSwgCi0gICAgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAyMzEsIDUwLCAyNDcsIDI0OCwgMjQ1LCAxNjUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIAotICAgIDIwOCwgMjU1LCAyMzEsIDUwLCAyNDcsIDI0OCwgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAKLSAgICAyMzEsIDUwLCAyMDgsIDE0NSwgMjQ1LCAxNjUsIDQ5LCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDMsIDI0MywgODUsIDUwLCAyNTAsIAotICAgIDIxOCwgMjQ3LCAyMjcsIDMsIDI0MywgODUsIDQ5LCAyNTAsIDEyOSwgMjI3LCAxNzksIDE1NSwgNTAsIDI1MCwgMTI5LCAKLSAgICAyMzcsIDI0NywgMTU1LCA1MiwgNDksIDI1MCwgMTI5LCAyMzcsIDI0NywgMTU1LCA1MiwgNTAsIDI1MCwgMTI5LCAyMjcsIAotICAgIDE3OSwgMTU1LCA0OSwgNjIsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCA2MiwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgCi0gICAgMjQyLCA4MywgMjQwLCA0MCwgODAsIDIwMiwgMzAsIDIyNywgMTE0LCAyMjUsIDE3LCAyNTAsIDIxOCwgMjIwLCAxLCAyMjcsIAotICAgIDIyMiwgNTAsIDI1MCwgMjE4LCAyMDYsIDY5LCAzLCAyMTEsIDE3NywgMjI1LCAxNywgNTAsIDI1MCwgMjE4LCAzLCAyNDMsIAotICAgIDg1LCAyNTAsIDIxOCwgMywgMjE1LCA5NCwgMjMxLCA2LCAyNTEsIDEyNiwgMjUwLCAyMTcsIDIxMSwgMjA4LCAyNTAsIDIxOCwgCi0gICAgMjIwLCAxLCAyMjcsIDIyMiwgMjExLCAyMDgsIDI1MCwgMjE4LCAyMjAsIDEsIDIwNiwgMjI0LCAyMDcsIDE3NCwgMjUwLCAKLSAgICAyMTcsIDIxNiwgNzMsIDI1MCwgMjE3LCAyNTAsIDIxOCwgMywgMjA2LCAyNDYsIDIxNiwgNzMsIDI1MCwgMjE4LCAzLCAyMDYsIAotICAgIDI0NiwgMjIwLCA4OSwgMjUwLCAyMTgsIDIyMCwgMSwgMjA2LCAyMjQsIDIyMCwgODksIDI1MCwgMjE4LCAyMjAsIDEsIDI0MiwgCi0gICAgNzAsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgCi0gICAgMTEyLCAyNSwgMjE2LCAxNiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIAotICAgIDUzLCAyMTgsIDU5LCAxMTIsIDI1LCAyMjcsIDIyMiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgCi0gICAgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAxMjEsIDI1LCAyMTYsIDE2LCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAKLSAgICAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDEyMSwgMjUsIDIyNywgMjIyLCAyMjUsIDE3LCAyNTAsIAotICAgIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDUwLCAyNSwgMjA2LCAyMjQsIAotICAgIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNDksIAotICAgIDI1LCAyMDYsIDIyNCwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAKLSAgICAyMTgsIDU5LCA1MCwgMjUsIDI0MiwgNzAsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAKLSAgICAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNDksIDI1LCAyNDIsIDcwLCAyMTYsIDczLCAyNDEsIDk0LCAyMTMsIDExNywgMjQxLCAKLSAgICA5NCwgMjEzLCAxMTgsIDMsIDIxOSwgMjAzLCAyNDEsIDk0LCAyMTMsIDExOCwgMywgNSwgMjQ2LCA2MiwgNTUsIDI0MSwgOTQsIAotICAgIDIxMywgMTE4LCAzLCA1MCwgNTMsIDU1LCAyNDEsIDk0LCAyMTMsIDExOCwgMywgNDksIDUzLCA1NSwgMjQ2LCA2MiwgMywgCi0gICAgMjM2LCAxMDYsIDE0MiwgNDMsIDgwLCAxNDIsIDQzLCAyMTksIDgxLCA0MywgMjE2LCA3NCwgMjEyLCAwLCA0MywgMjE4LCAKLSAgICAyMzMsIDI0NiwgNjIsIDI0MywgMTQyLCAyNDcsIDEzNywgMjM2LCAxMDYsIDI0OCwgMjMxLCAyNSwgMjA4LCAxNDUsIDE2MiwgCi0gICAgMjQzLCAxNDIsIDI0NywgMTM3LCA4MCwgMTQyLCAyNDYsIDYyLCAzLCAyMTAsIDIwMCwgMjAzLCAxOTYsIDQzLCAyNTAsIAotICAgIDE5MiwgMjQzLCAxMzcsIDU0LCAxMTIsIDUzLCAyMDksIDI1LCAyNDYsIDYxLCA0MywgNjEsIDI0NywgMTc3LCA0MywgMjQ3LCAKLSAgICAxNzcsIDQzLCAyMjcsIDE3OCwgNDMsIDIzNywgMjQ2LCAyNDYsIDYyLCAzLCA1LCAyNDYsIDYyLCAyMDgsIDE3MywgMjA5LCAKLSAgICA5MywgMjE2LCAxNiwgMjQ2LCA2MiwgMywgMTIwLCAyMzYsIDEwNiwgMjExLCAyMCwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxNiwgCi0gICAgMTYsIDEwMywgMjE1LCAyNDUsIDI0MywgMjI4LCAyMTIsIDU3LCAxMDMsIDI0MCwgODQsIDI0MywgMjI4LCAyMTIsIDU3LCAKLSAgICAxMDMsIDI1MCwgNTksIDEwMywgNSwgMjQ2LCA2MSwgMTAzLCAyMTEsIDE3NywgMTIwLCAyMzAsIDk4LCAyMTEsIDE3NSwgCi0gICAgMjA4LCA4NiwgMywgNzAsIDU1LCAyMDgsIDg2LCAzLCAyMDYsIDI0NiwgMjE1LCA5NCwgMjMxLCA1MCwgMjA4LCA4NSwgMjA4LCAKLSAgICA4NiwgMywgMjEzLCAxMjQsIDI1MCwgNTAsIDI0NywgMjQ3LCA1MCwgMjA4LCA4NiwgODcsIDQ5LCAyMDgsIDg1LCA0OSwgCi0gICAgMjA4LCA4NiwgMjQ4LCAxMTAsIDgwLCAxNDIsIDgwLCAyNDgsIDIzMSwgMjQ4LCAxMTAsIDUwLCAyMDgsIDg1LCAyNDcsIAotICAgIDIzNSwgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQ3LCAyMzUsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYyLCAyNDcsIDIzNCwgCi0gICAgMjMsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDIzLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MSwgMjM2LCA0MCwgNjIsIDIzNiwgCi0gICAgNDAsIDQ5LCAyMDQsIDIxLCAyNDAsIDQwLCA1MCwgMjA0LCAyMSwgMjQwLCA0MCwgNDksIDUyLCAyMDQsIDIxLCAyNDAsIDQwLCAKLSAgICA1MCwgNTIsIDIwNCwgMjEsIDI0MCwgNDAsIDIzMSwgNDIsIDIzMSwgMjcsIDIwOCwgMjUxLCAxMTUsIDIzMSwgMjcsIDIzMSwgCi0gICAgMjgsIDIyMiwgMjM0LCAzLCA4MCwgMTQyLCAyNDIsIDc3LCAyMjMsIDIyOCwgNTEsIDMsIDI0NSwgMTg3LCAyMTksIDIwOCwgCi0gICAgMjMxLCAzOSwgMjUwLCA4MSwgMjEyLCAxOTMsIDIxNywgMjI0LCAyNDEsIDM1LCAyLCAyNSwgMjEyLCA1OSwgMjE5LCA4MSwgCi0gICAgMjQxLCAzNSwgMiwgMjUsIDIxMiwgNTksIDIxOSwgODIsIDMsIDIwOCwgMjI4LCA1NSwgMjM1LCAxNTQsIDIwOCwgMTczLCAKLSAgICAyNSwgMjEyLCA1OSwgMjE5LCA4MSwgMjM4LCA0OCwgMjExLCA5MywgMjA5LCA4MSwgMjQyLCA2OSwgMjA4LCA4NiwgMywgNDksIAotICAgIDE2MiwgMjQ4LCA0MywgMjQyLCA2OSwgMjA4LCA4NiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjIsIDI0MywgMjIyLCAzLCAKLSAgICAxMjEsIDQ3LCA2MiwgMjI2LCAyNDYsIDYxLCAyNDYsIDYyLCAzLCAxMjEsIDQ3LCA2MiwgMjQ2LCA2MiwgMywgMTIxLCA0NywgCi0gICAgMjQxLCAyMCwgNjEsIDIxMSwgMTc3LCAyNDEsIDIwLCA2MiwgMjExLCAxNzcsIDI0MSwgMjAsIDYxLCAyNDMsIDIyMSwgMjQxLCAKLSAgICAyMCwgNjIsIDI0MywgMjIxLCAyNDEsIDIwLCA2MSwgMjQ2LCA2MSwgMjQxLCAyMCwgNjIsIDI0NiwgNjEsIDIxNSwgMTM0LCAKLSAgICAyMTYsIDc0LCAyMTIsIDEsIDIxOSwgMjU0LCAyMTIsIDEsIDMsIDIxOSwgMjAzLCAyMTYsIDc0LCAyMTIsIDEsIDMsIDIzNiwgCi0gICAgMTA2LCA5NSwgMjQ4LCA3MywgMjEyLCAwLCAyNDgsIDczLCAyMTYsIDc0LCAyMTIsIDAsIDUyLCAyMTgsIDc2LCAyMDgsIDcwLCAKLSAgICAyMTgsIDc2LCAyMjcsIDIxNywgMjQ1LCA4NiwgMjUwLCAyMTgsIDE1NSwgMjE2LCAxMSwgMjQ1LCA4NiwgMjUwLCAyMTgsIAotICAgIDE1NSwgMjA4LCAyMTIsIDIyNCwgMTAwLCAyMjMsIDE2MiwgNDMsIDcwLCAyMTksIDI1NCwgMjIzLCAxNjIsIDQzLCA5MSwgCi0gICAgMjE5LCAyNTQsIDIyMywgMTYyLCA0MywgMjMsIDIxOSwgMjU0LCAyMjMsIDE2MiwgMjA2LCAyMzgsIDIxOSwgMjU1LCAzLCAKLSAgICAyNDMsIDg1LCAyMjMsIDE2MiwgMjA2LCAyMzgsIDIxOSwgMjU1LCAzLCAyMTgsIDc2LCAyMjMsIDE2MiwgNTEsIDIzMCwgCi0gICAgMjQ1LCAyMTksIDI1NCwgMjIzLCAxNjIsIDUxLCAyMDYsIDIzOCwgMjE5LCAyNTQsIDEyMCwgMjI3LCAzNywgMjUsIDIxOSwgCi0gICAgMjU0LCAxMjAsIDIyNywgMzcsIDIxOSwgMjQ1LCAyMTksIDI1NCwgMjIzLCAxNjIsIDIzLCAyMTksIDI1NCwgMjI0LCA1OCwgCi0gICAgMTIwLCAyMTAsIDIyMCwgMjEwLCAyMTgsIDMsIDIzMSwgMiwgMjE3LCA1OCwgMjMxLCAzLCAyMTksIDI1NCwgMjM5LCAyNTIsIAotICAgIDIxOSwgNzEsIDIzMSwgMiwgMjMxLCAzLCAzLCA1MiwgOTUsIDIzMSwgMywgMjUwLCAxNSwgMywgMjEyLCA1NywgMjQ2LCA1NCwgCi0gICAgMjM5LCA5OSwgMjUwLCAxOTQsIDIzMSwgMCwgMjI3LCAxMTUsIDIzMSwgMSwgMywgMjE2LCAxNDIsIDIxOSwgNTIsIDI1MCwgCi0gICAgMTA0LCAyMTgsIDUzLCAyMjcsIDExNSwgMjMxLCAxLCAzLCAyMTMsIDE0NSwgMjE5LCA1MiwgMjUwLCAxMDQsIDIxOCwgNTMsIAotICAgIDIyNywgMTE1LCAyMzEsIDEsIDIyMSwgMTY2LCAyMzEsIDQ0LCAyMDksIDkzLCAyMTgsIDUzLCAyMzEsIDMsIDI1MCwgMTA0LCAKLSAgICAzNCwgMjE4LCA2MywgMjE5LCAyNTQsIDIxNywgNTIsIDIzMSwgMywgMjE5LCAyNTQsIDIzMSwgMywgMywgOTYsIDUzLCAzLCAKLSAgICAxMTMsIDIzMSwgMywgMywgMjMsIDU0LCAyMzEsIDMsIDMsIDIzMCwgMjQ0LCAyMzEsIDMsIDMsIDIwNiwgMjM3LCAyMzEsIDMsIAotICAgIDMsIDIxOSwgMjAzLCAyMzEsIDMsIDMsIDIwNiwgMjQ2LCAyMzAsIDk5LCAyMjgsIDgsIDQ5LCAyMDgsIDg2LCAyMTksIDI1NCwgCi0gICAgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgMjQ1LCAyMjMsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIAotICAgIDIxOCwgMTE0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAyMTcsIDIxOSwgOTEsIDIsIDMsIDUsIDI0NiwgNjIsIAotICAgIDU1LCA5MSwgMiwgMywgMjQ2LCA1MywgMjUxLCAxMzksIDU1LCA5MSwgMiwgMywgMjA4LCAyMjgsIDU1LCA5MSwgMiwgMywgCi0gICAgNzAsIDU2LCA5MSwgMiwgMywgMjA4LCAyMjgsIDU2LCA5MSwgMiwgMywgMjEwLCAyNDYsIDEwOCwgOTEsIDIsIDMsIDYyLCAKLSAgICAyMDgsIDg1LCAyMjQsIDEwMywgMiwgMywgMjQ1LCAyMzQsIDU1LCAyMjQsIDEwMywgMiwgMywgNzAsIDU2LCAyMjQsIDEwMywgCi0gICAgMiwgMywgMjQwLCA4NCwgMjQzLCA4MywgMjI0LCAxMDMsIDIsIDMsIDIxNSwgMjQ1LCAyNDMsIDgzLCA5MSwgMiwgMjMxLCAKLSAgICA1MCwgNDksIDE2MiwgMjQ2LCA2MSwgOTEsIDIsIDIzMSwgNTAsIDUwLCAxNjIsIDI0NiwgNjEsIDIwNiwgNTQsIDIxOSwgCi0gICAgMjQ1LCAyNDUsIDEzMSwgMjE3LCAyMjQsIDIyMywgMjI0LCAyLCAzLCA3MCwgNTUsIDIyMywgMjI0LCAyLCAzLCAyMDYsIAotICAgIDI0NiwgMjEzLCAxNDIsIDIxNywgMjI1LCAzLCAyNDcsIDI0OCwgMjQ2LCAxNSwgMjEyLCAzNCwgMjE3LCAyMjQsIDIyMywgCi0gICAgMjI0LCAyLCAyMzEsIDUwLCA0OSwgMTYyLCAyNDYsIDYxLCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgNTAsIDE2MiwgMjQ2LCAKLSAgICA2MSwgNDMsIDIyMywgMjI0LCAyLCAzLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDUyLCAyNDYsIAotICAgIDYxLCA0MywgMjQzLCAxMzcsIDU0LCA5MSwgMiwgMjMxLCA1MCwgMjA4LCA4NSwgMjI0LCAxMDMsIDIsIDIzMSwgNTAsIDIwOCwgCi0gICAgODUsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCAyMDgsIDg1LCAyMzAsIDI1MywgMjE3LCAyMjQsIDIxNiwgNiwgMjMwLCAyNTMsIAotICAgIDIxNywgMjI0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNiwgMTE2LCAyNDUsIDIyMywgMjUwLCAyNDUsIDIxOSwgMjQ1LCAKLSAgICAyNDUsIDE3MSwgMjMwLCAyNDUsIDMsIDI0MywgODUsIDIwNiwgMjM4LCAzLCAyMjQsIDEwMywgNTQsIDIwNiwgMjM4LCAzLCAKLSAgICAyMTksIDIwMywgMjMwLCAyNDUsIDMsIDIxOSwgMjAzLCAyMzAsIDI0NSwgMywgMjI3LCAzNywgMjUwLCAyMjYsIDIwNiwgCi0gICAgMjM4LCAzLCAyMjcsIDM3LCAyMTksIDI0NCwgMjA2LCAyMzgsIDg3LCAyMzAsIDI0NCwgMjMwLCAyNDUsIDg3LCAyMDYsIAotICAgIDIzNywgMjA2LCAyMzgsIDg3LCAyNDgsIDIzMSwgODcsIDIzMCwgMjQ0LCAyMzAsIDI0NSwgODcsIDI0OCwgMjMxLCA4NywgCi0gICAgMjA2LCAyMzcsIDIwNiwgMjM4LCAyNDgsIDExMCwgMjUsIDIzMCwgOTgsIDMsIDIwNiwgMjM3LCAyMzAsIDI0NSwgMjQ4LCAKLSAgICAxMTAsIDI1LCAyMzAsIDk4LCAzLCAyMzAsIDI0NCwgMjQ2LCAxNiwgMjA2LCAyMzgsIDMsIDIxMywgMTIzLCAyNDYsIDE2LCAKLSAgICAyMzAsIDI0NSwgMywgMjEzLCAxMjMsIDUyLCA1MSwgMjMwLCAyNDQsIDUyLCA1MSwgMjA2LCAyMzcsIDI0NiwgMTYsIDIwNiwgCi0gICAgMjM4LCAzLCAyMTMsIDEyNCwgMjUsIDIxMiwgMzQsIDIxNywgMjI0LCAyMjcsIDM3LCAyNSwgMywgNzAsIDU1LCAyMjcsIDM3LCAKLSAgICAyMTksIDI0NSwgMywgNzAsIDU1LCA1MiwgMjI3LCAzNywgMjUwLCAyMjYsIDUyLCAyMjcsIDM3LCAyMTksIDI0NCwgMTIwLCAKLSAgICAyMzAsIDI0NiwgMjI3LCAzNywgMjUwLCAyMjYsIDEyMCwgMjMwLCAyNDYsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMTIsIDQzLCAKLSAgICAyMjgsIDgsIDIxOSwgMjQ0LCAyMTIsIDQzLCAyMjgsIDgsIDI1MCwgMjI2LCAyMjcsIDM3LCAyMTksIDI0NSwgMjE5LCAyMDAsIAotICAgIDIyNywgMzcsIDI1MCwgMjI2LCAyMjcsIDM3LCAyNSwgMywgMTAxLCAyMTEsIDc3LCAyMjcsIDM3LCAyMTksIDI0NSwgMywgCi0gICAgMTAxLCAyMTEsIDc3LCAyMjcsIDM3LCAyNSwgMywgMjM2LCAxMDYsIDI0NCwgMTQ0LCAyMjcsIDM3LCAyMTksIDI0NSwgMywgCi0gICAgMjM2LCAxMDYsIDI0NCwgMTQ0LCAyMjcsIDM3LCAyNSwgMywgNTIsIDIxOSwgMjAzLCAyMjcsIDM3LCAyNSwgMywgMjA2LCAKLSAgICAyNDYsIDIyNywgMzcsIDI1LCAzLCA1MiwgMjA2LCAyNDYsIDUsIDIwNiwgNTEsIDMsIDIwNiwgMjQ2LCAyMjcsIDM3LCAyMTksIAotICAgIDI0NSwgMywgNTIsIDIxOSwgMjAzLCAyMjcsIDM3LCAyMTksIDI0NSwgMywgNTIsIDIwNiwgMjQ2LCAyMDIsIDE2MCwgMjIxLCAKLSAgICAxNjQsIDI0MywgOTQsIDI1MCwgMTg0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNiwgMTc5LCAyNTAsIDE4NCwgMjQxLCAzNSwgCi0gICAgMiwgMywgNzAsIDU2LCAyMzUsIDE1NCwgMywgNzAsIDU1LCAyMDgsIDcwLCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDMsIDUyLCAKLSAgICA4MCwgOTUsIDIwOCwgNzAsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMywgMjA4LCA3MCwgODAsIDk1LCAyMDgsIDIyOCwgMjE5LCAKLSAgICAyNTUsIDMsIDcwLCA1NSwgMjA4LCAyMjgsIDIxOSwgMjU1LCAzLCAyMTUsIDI0NSwgMjQzLCA4MywgMjEyLCAxMjksIDIyNCwgCi0gICAgMTAzLCAyMTIsIDEyOCwgMjQ1LCAyMTAsIDMsIDcwLCA1NSwgMjQxLCAzNSwgMywgMjUwLCA1OSwgMjUxLCA3LCAxNTYsIAotICAgIDIwOCwgMTczLCAzLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjUwLCAxNTEsIDE1NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDEsIAotICAgIDM1LCAyLCA4NywgOTEsIDU0LCA5MSwgMiwgODcsIDI0MSwgMzUsIDU0LCAyNDEsIDM1LCAyLCA4NywgMjA4LCAyMjgsIDIxOSwgCi0gICAgMjU0LCA1MiwgMjQ1LCAyNDMsIDI0MSwgMzYsIDEyMCwgMjQ1LCAyMDMsIDI0MSwgMzUsIDIxMiwgMTQzLCAxMjYsIDI0NSwgCi0gICAgMjAzLCAyNDEsIDM1LCAyMTIsIDE0MywgMjQxLCAzNSwgMiwgMywgMTIwLCAxODcsIDg3LCAyNSwgMTIwLCAxODcsIDU2LCAKLSAgICAyNDEsIDMwLCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMjI3LCAxNzksIDMsIDI0NiwgNjIsIDIzMSwgNiwgMjM3LCAyNDcsIDMsIAotICAgIDI0NiwgNjIsIDIzMSwgNiwgMjI3LCAxNzksIDMsIDIxNywgNDcsIDEzMSwgNTUsIDIzNywgMjQ3LCAzLCAyMTcsIDQ3LCAKLSAgICAxMzEsIDU1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMTM1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgCi0gICAgNTksIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAyMzEsIDYsIAotICAgIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDIzMSwgNiwgMjI3LCAxNzksIDIxOSwgCi0gICAgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAKLSAgICAyMDgsIDE3MywgMywgNzAsIDU1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAKLSAgICA4NywgMjE2LCAxNiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgODcsIDIyNywgCi0gICAgMjIyLCAyMjcsIDE3OSwgMjE5LCAyNDUsIDI1MCwgMTUyLCAyMzcsIDI0NywgMjE5LCAyNDUsIDI1MCwgMTUyLCAyMjcsIAotICAgIDE3OSwgMjUsIDIxMiwgMTE4LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyNSwgMjEyLCAxMTgsIDIyMSwgMTY2LCAKLSAgICAxNTYsIDEzNSwgMjI3LCAxNzksIDI1LCAyMjEsIDE2NiwgMjUwLCAxNTIsIDIzNywgMjQ3LCAyNSwgMjIxLCAxNjYsIDI1MCwgCi0gICAgMTUyLCAyMjcsIDE3OSwgODcsIDI0MiwgNzYsIDE1NiwgODcsIDIzNywgMjQ2LCAyMzcsIDI0NywgODcsIDI0MiwgNzYsIAotICAgIDE1NiwgODcsIDIyNywgMTc4LCAyMjcsIDE3OSwgODcsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjQxLCAzNiwgMjM3LCAyNDcsIAotICAgIDg3LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDI0MSwgMzYsIDIyNywgMTc5LCA4NywgMjEyLCAxMjksIDg3LCAyMzcsIDI0NiwgCi0gICAgMjM3LCAyNDcsIDg3LCAyMTIsIDEyOSwgODcsIDIyNywgMTc4LCAyMjcsIDE3OSwgODcsIDIzNywgMjQ3LCA4NywgMjQyLCAKLSAgICA3NiwgMjQxLCAzNiwgMjM3LCAyNDcsIDg3LCAyMjcsIDE3OSwgODcsIDI0MiwgNzYsIDI0MSwgMzYsIDIyNywgMTc5LCA4NywgCi0gICAgMjEyLCA1OSwgMTU2LCA4NywgMjM3LCAyNDcsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMzcsIDI0NywgODcsIDIxMiwgNTksIAotICAgIDE1NiwgODcsIDIyNywgMTc5LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAKLSAgICAyNDUsIDIyNywgMTc4LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDIxMiwgNTksIDE1NiwgCi0gICAgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OSwgMywgNzAsIDIzMSwgNiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAKLSAgICAyNDUsIDIzNywgMjQ3LCAzLCA3MCwgMjMxLCA2LCAyNDIsIDc2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzgsIAotICAgIDI0MiwgNzYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMjQyLCA3NiwgMjEyLCA1OSwgMTU2LCAyMDgsIAotICAgIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAyNDIsIDc2LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAKLSAgICAyNDYsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjI3LCAxNzgsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjM3LCAyNDYsIDIxMiwgCi0gICAgMTI5LCA4NywgMjI3LCAxNzksIDg3LCAyNDEsIDM1LCA1NCwgMjEyLCAxMjksIDg3LCAyMzcsIDI0NywgODcsIDI0MSwgMzUsIAotICAgIDU0LCA1MiwgMjIyLCAyMjEsIDIyNywgMTc4LCA1MiwgMjIyLCAyMjEsIDIzNywgMjQ2LCA1MiwgMjIyLCAyMjEsIDIyNywgCi0gICAgMTc5LCAzLCAyMDYsIDI0NiwgMjM3LCAyNDcsIDIxOSwgMjAwLCAyMjcsIDE3OCwgMjM3LCAyNDcsIDI0OCwgMTEwLCAyMjcsIAotICAgIDE3OCwgMjI3LCAxNzksIDI0NiwgMTYsIDI0NywgMTM3LCAyNDUsIDg3LCAyMzcsIDI0NywgMjQ2LCAxNiwgMjQ3LCAxMzcsIAotICAgIDI0NSwgODcsIDIyNywgMTc5LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4OCwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIzNywgCi0gICAgMjQ3LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4OCwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIxMiwgMzUsIDIwOSwgOTcsIAotICAgIDIyOCwgNiwgMjA5LCA5NywgMjEyLCAzNSwgMjA5LCA5OCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjgsIDYsIDIwOSwgOTgsIAotICAgIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQxLCAzNSwgMiwgMywgMjQ3LCAxNzAsIDU1LCAyMTcsIDI1MCwgODcsIDIxMiwgMTE4LCAKLSAgICAyNDEsIDM1LCA1NCwgMjEwLCAyMzcsIDg3LCAyMTIsIDExOCwgMjQxLCAzNSwgNTQsIDIxNywgMjUwLCA4NywgMjEyLCAxMTgsIAotICAgIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAyMzcsIDg3LCAyMTIsIDExOCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTcsIDI1MCwgCi0gICAgODcsIDI0MSwgMzUsIDU0LCAyMTAsIDIzNywgODcsIDI0MSwgMzUsIDU0LCAyMTcsIDI1MCwgODcsIDIyMSwgMTY2LCAxNTYsIAotICAgIDEzNSwgMjEwLCAyMzcsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxNywgMjUwLCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgCi0gICAgMjEwLCAyMzcsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAyMTcsIDI1MCwgODcsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCAKLSAgICAyMTAsIDIzNywgODcsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCA1MiwgMjE3LCAyNDksIDUyLCAyMTAsIDIzNiwgCi0gICAgMjEwLCAyNDUsIDMsIDI0MywgODUsIDIxMCwgMTk4LCAzLCAyNDMsIDg1LCAyMTAsIDI0NSwgMywgOTEsIDIsIDU2LCAyMTAsIAotICAgIDE5OCwgMywgOTEsIDIsIDU2LCAyMTAsIDI0NSwgMywgMjIzLCAyMjQsIDIsIDU2LCAyMTAsIDE5OCwgMywgMjIzLCAyMjQsIAotICAgIDIsIDU2LCAyMTAsIDI0NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIxMCwgMTk4LCA3NiwgCi0gICAgMjE5LCAyNDUsIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjEwLCAyNDUsIDc2LCA4NywgMjQxLCAzNSwgNTQsIDIxMCwgCi0gICAgMTk4LCA3NiwgODcsIDI0MSwgMzUsIDU0LCAyMTAsIDI0NSwgNzYsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxMCwgMTk4LCAKLSAgICA3NiwgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjEwLCAyNDUsIDc2LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjEwLCAxOTgsIAotICAgIDc2LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDc2LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTAsIDE5OCwgCi0gICAgNzYsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDUxLCA0OSwgMTcxLCA5OCwgMjE5LCAyNTQsIDUxLCA1MCwgMTcxLCA5OCwgCi0gICAgMjE5LCAyNTQsIDI0NiwgMTYsIDIxMCwgMjQ0LCAyNDYsIDE2LCAyMTAsIDE5NywgMjQ2LCAxNiwgMjEwLCAyNDUsIDIxOSwgCi0gICAgMjQ1LCAxNTYsIDEzNSwgMjQ2LCAxNiwgMjEwLCAxOTgsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDg3LCAyMTAsIAotICAgIDE5NywgMjEwLCAxOTgsIDg3LCAyMTAsIDI0NCwgMjEwLCAyNDUsIDg3LCAyMTAsIDI0NCwgMjEwLCAxOTgsIDg3LCAyMTAsIAotICAgIDE5NywgMjEwLCAxOTgsIDI0OCwgMTEwLCAyMTAsIDI0NCwgMjEwLCAxOTgsIDI0OCwgMTEwLCAyNSwgMjMwLCA5OCwgMjQ3LCAKLSAgICAxMzcsIDI0NCwgMTQ1LCAzLCAyMTAsIDI0NCwgMjQxLCAxMTUsIDc2LCAyMjAsIDEsIDI0MiwgNjgsIDIxOCwgMTA0LCAzLCAKLSAgICAyMDksIDE3NywgMjA4LCAxNDQsIDIwOCwgMTAyLCAyMzAsIDI0NCwgMjM5LCAxNjAsIDIyMSwgMTgxLCAyMTIsIDIyOCwgNDksIAotICAgIDIxMCwgMywgMjEyLCAyMjgsIDEyMSwgMjEwLCAzLCAyMTIsIDIyOCwgMTEyLCAyMTAsIDMsIDIxOCwgMjM0LCAzLCAxOTQsIAotICAgIDgwLCAyNDgsIDIzMSwgMjA4LCA3MCwgNTAsIDIwNywgMTczLCA1MiwgODAsIDI0OCwgMjMxLCA0OSwgMjA3LCAxNzMsIDgwLCAKLSAgICAyNDgsIDIzMSwgNTIsIDQ5LCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDQ5LCAyMDcsIDE3MywgMTYzLCAyNDQsIAotICAgIDE0NSwgMjM5LCAxMjAsIDQ5LCAyMjQsIDI0NSwgNzYsIDUyLCAyMDYsIDM4LCAyMTIsIDIyOCwgMTIxLCAyMTAsIDQsIDMsIAotICAgIDIxOSwgMjAzLCAyMTIsIDIyOCwgMTEyLCAyMTAsIDQsIDMsIDIwNiwgMjQ2LCAyMTIsIDIyOCwgMTEyLCAyMTAsIDQsIDg3LCAKLSAgICAyMTIsIDIyOCwgMTIxLCAyMTAsIDMsIDUyLCAxMjEsIDIxMCwgMywgNTIsIDExMiwgMjEwLCAzLCA1MiwgMjExLCAzMiwgCi0gICAgMjIxLCAxNjYsIDU0LCAyMTYsIDczLCA1MiwgMjExLCAzMiwgMjIxLCAxNjYsIDU0LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAotICAgIDI0MywgMTQ0LCAzLCAyMTYsIDczLCAyMjIsIDIzMywgMjEyLCA1NywgODAsIDIyNywgMTE1LCAzLCAyNDYsIDYyLCA1NSwgCi0gICAgODAsIDIyNywgMTE1LCAzLCAyNDYsIDYyLCA1NiwgMTIxLCAyMTAsIDQsIDMsIDI0NiwgNjIsIDU2LCAyMTksIDgyLCAzLCAKLSAgICAyMzYsIDEwNiwgOTUsIDIxOSwgODIsIDMsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAyNDgsIAotICAgIDY3LCAyMTYsIDExNywgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgOTUsIDIwOCwgNzAsIDI0NSwgMjQzLCAKLSAgICAyMTksIDI1NCwgMjA4LCA3MCwgMjIyLCAyMjEsIDIyNywgMTc4LCAyMDgsIDcwLCAyMjIsIDIyMSwgMjM3LCAyNDYsIDI0MiwgCi0gICAgNzYsIDIxMiwgNTksIDIyNywgMTc5LCAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MiwgNzYsIDIxMiwgNTksIDIzNywgMjQ3LCAKLSAgICAyMTksIDI0NSwgMTU2LCAxMzUsIDIwOCwgNzAsIDIxMiwgMSwgMjQ4LCA2NywgMjE2LCAxMTcsIDIyOCwgOCwgMjA4LCA3MCwgCi0gICAgODAsIDI0OCwgMjMxLCAyMTksIDI1NCwgNTIsIDIxMiwgMSwgMjE5LCAyNTQsIDYxLCA4MCwgMTQyLCAyMjMsIDE2MiwgNjEsIAotICAgIDgwLCAxNDIsIDE1MywgMjQxLCAxNzYsIDYxLCA0NywgMTUzLCAyMDQsIDQ2LCA2MSwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNjEsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNjEsIDQ3LCA0OSwgNTAsIDYxLCA0NywgOTYsIDYyLCA0NywgMTc3LCA2MiwgCi0gICAgNDcsIDE4MywgNjIsIDQ3LCAxNTMsIDI0MSwgMTc2LCA2MiwgNDcsIDE1MywgMjA0LCA0NiwgNjIsIDQ3LCAyMTEsIDIzOCwgCi0gICAgMjQxLCAxNzYsIDYyLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDYyLCA0NywgNDksIDUwLCA2MiwgNDcsIDExMiwgMTIxLCAKLSAgICA2MiwgNDcsIDg2LCA1MywgMywgMjA4LCAyMTEsIDI0MiwgNjgsIDg2LCA1MywgMywgMjA4LCAyMTEsIDIwNiwgMjEyLCA5NiwgCi0gICAgNTMsIDMsIDIwOCwgMjExLCAyNDIsIDY4LCA5NiwgNTMsIDMsIDIwOCwgMjExLCAyMDYsIDIxMiwgNTEsIDMsIDIwOCwgMTQ1LCAKLSAgICAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyNDcsIDI0OCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjA2LCAyMjEsIDUwLCAyNDMsIAotICAgIDIyOCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjI2LCAyNTEsIDQ5LCAyNDMsIDIyOCwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgCi0gICAgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCAyMDgsIAotICAgIDE0NSwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgMjQ3LCAyNDgsIDE2MiwgMjQ4LCA0MywgMjQyLCA4MywgMjExLCAKLSAgICAxNzcsIDYyLCAyMjgsIDgsIDIxMSwgMTc3LCA2MSwgMjI4LCA4LCAyMTEsIDE3NywgNjIsIDIwNSwgMjQyLCA1LCAyMTEsIAotICAgIDE3NywgNjEsIDIwNSwgMjQyLCA1LCAyMTEsIDE3NywgNjIsIDIxOCwgMjU1LCA2MSwgMjE4LCAyNTUsIDYxLCAyMzcsIDE3LCAKLSAgICA2MiwgMjM3LCAxNywgMjM2LCAxMDYsIDYyLCAyMzcsIDE3LCA2MiwgMjI4LCA4LCAyNDYsIDYxLCA2MiwgMjI1LCAxMCwgCi0gICAgMjQzLCAyMjEsIDYxLCAyMjUsIDEwLCAyNDMsIDIyMSwgNjIsIDIyNSwgMTAsIDIyNiwgMjQ2LCA2MSwgMjI1LCAxMCwgMjI2LCAKLSAgICAyNDYsIDYyLCA1LCAyNDMsIDIyMSwgNjIsIDUsIDIyNiwgMjQ2LCA2MSwgNSwgMjI2LCAyNDYsIDYyLCAyMzYsIDEwNiwgCi0gICAgMjQxLCAxMDksIDYxLCAyMzYsIDEwNiwgMjQxLCAxMDksIDYyLCA4MCwgMjQxLCAxMDksIDYxLCA4MCwgMjQxLCAxMDksIDQ5LCAKLSAgICA1MywgMywgNSwgMjQ2LCA2MSwgMTI2LCA5NiwgMjUwLCA5MSwgNDksIDUzLCAzLCA0MywgMjE4LCA3NiwgMTYzLCA5NiwgCi0gICAgMjExLCAxNzEsIDQ3LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDUyLCA4MCwgCi0gICAgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAxNDIsIDk2LCAyMDcsIDEzNCwgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCAKLSAgICA5NiwgNTMsIDMsIDI0MiwgODMsIDIxMSwgNzcsIDk2LCA1MywgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgOTYsIDUzLCAzLCAKLSAgICAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDgsIDk2LCAyMDcsIDEzNCwgNTMsIAotICAgIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgCi0gICAgNTMsIDIwOSwgMjUsIDIwMywgMTk2LCAyMDQsIDc2LCA1MywgMjE4LCA1OSwgMjQzLCAxNjQsIDIyNywgMjIyLCAyNDEsIDM1LCAKLSAgICAyLCA4NywgOTYsIDQ3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCA5NiwgNDcsIDk2LCA1MywgODcsIDIxNiwgCi0gICAgNzQsIDI1MSwgNywgMTU2LCAxMzUsIDg2LCA1MywgMjA5LCAyNSwgMjM3LCAyNDYsIDg2LCA1MywgMjA5LCAyNSwgMjEwLCAKLSAgICAxOTcsIDk2LCAyMTcsIDU4LCA0NywgODYsIDIxNywgNTgsIDQ3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCAKLSAgICA4NiwgNDcsIDg2LCA1MywgODcsIDIxNiwgNzQsIDI1MSwgNywgMTU2LCAxMzUsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIAotICAgIDk2LCA0NywgOTYsIDUzLCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgOTYsIDUzLCA4NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgCi0gICAgMjU0LCA4NiwgNTMsIDg3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDE4MywgMjA4LCA4NCwgMjAyLCAzMCwgNDcsIAotICAgIDIxMiwgMjI4LCAyMTIsIDU5LCAxNTMsIDQ3LCAyMTIsIDIyOCwgMjQ5LCAyMiwgMjExLCAyMzgsIDQ3LCA2MSwgMjI1LCAxMCwgCi0gICAgMjExLCA5NCwgNjIsIDUsIDIxMSwgOTQsIDYxLCA1LCAyMTEsIDk0LCA2MiwgMjE2LCAxMSwgMjE4LCAyNTUsIDYxLCAyMTYsIAotICAgIDExLCAyMTgsIDI1NSwgNzksIDIyOCwgOCwgMjQ2LCA2MSwgNzksIDIxOSwgMjA1LCAzLCAyMTksIDIwNSwgMjMxLCA2LCA3OSwgCi0gICAgMjQ2LCA2MiwgMywgMjQ2LCA2MiwgMjMxLCA2LCA3OSwgMjQ2LCA2MSwgNzksIDQzLCAyMTQsIDI1NCwgMjEyLCA1OSwgMTUzLCAKLSAgICA1MywgMywgMjM2LCAxMTUsIDIzNywgNjQsIDI0OSwgMjIsIDIxMSwgMjM4LCA1MywgMywgMjM2LCAxMTUsIDIwOSwgMjQ4LCAKLSAgICAyMTIsIDU5LCAxNTMsIDUzLCAzLCAyMzYsIDEwNiwgMjA5LCAyNDgsIDI0OSwgMjIsIDIxMSwgMjM4LCA1MywgMywgMjM2LCAKLSAgICAxMDYsIDIwOSwgMjQ4LCAyNDgsIDExOCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMTUzLCAyNDEsIDE3NSwgMjEyLCAKLSAgICAyMjgsIDI0OCwgMTE4LCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAxNTMsIDI0MSwgMTc1LCA5NiwgMjA4LCA4NCwgNDcsIAotICAgIDE3NywgMjA4LCA4NCwgNDcsIDg2LCAyMDgsIDg0LCA0NywgMTgzLCAyMDgsIDg0LCA0NywgNDksIDUwLCAyMDgsIDg0LCA0NywgCi0gICAgMTEyLCAxMjEsIDIwOCwgODQsIDQ3LCAxNTMsIDIwNCwgNDYsIDIwOCwgODQsIDQ3LCAxNTMsIDI0MSwgMTc2LCAyMDgsIDg0LCAKLSAgICA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDgsIDg0LCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDIwOCwgODQsIDQ3LCA5NiwgCi0gICAgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCAxNzcsIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgODYsIDIwOCwgODQsIDI0NCwgMTQzLCAKLSAgICA0NywgMTgzLCAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDI0NiwgMTgsIDIwOCwgODQsIDE3MSwgMjQ2LCA2MiwgNDcsIDI1MCwgCi0gICAgMTk0LCAyMDgsIDg0LCAxNzEsIDI0NiwgNjIsIDQ3LCA5NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE3NywgMjA4LCAKLSAgICA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTgzLCAyMDgsIDg0LCA1MywgCi0gICAgMjA4LCAxNzMsIDE0MiwgMTUzLCAyMDQsIDQ2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTUzLCAyNDEsIDE3NiwgCi0gICAgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAKLSAgICAxNDIsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgOTYsIDIwOCwgODQsIDUzLCAzLCAKLSAgICA1MiwgMjM2LCAxMDYsIDk1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCA1MiwgMjM2LCAxMDYsIDk1LCA4NiwgMjA4LCA4NCwgNTMsIAotICAgIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDIzNiwgMTA2LCAKLSAgICAyMTAsIDExLCAyMjksIDE1MSwgODAsIDIxMCwgMTEsIDIyOSwgMTUxLCA5NiwgMjA4LCA4NCwgNTMsIDExNSwgODYsIDIwOCwgCi0gICAgODQsIDQ3LCAxNzcsIDIwOCwgODQsIDUzLCA5NiwgNzYsIDE4MywgMjA4LCA4NCwgNDcsIDg2LCAyMDgsIDg0LCA1MywgMTE1LCAKLSAgICA5NiwgMjA4LCA4NCwgNDcsIDE4MywgMjA4LCA4NCwgNTMsIDk2LCA3NiwgMTc3LCAyMDgsIDg0LCA0NywgOTYsIDIwOCwgODQsIAotICAgIDIxOSwgMTQ2LCAyNTAsIDkxLCAxNzcsIDIwOCwgODQsIDIxOSwgMTQ2LCAyNTAsIDkxLCA4NiwgMjA4LCA4NCwgMjE5LCAKLSAgICAxNDYsIDI1MCwgOTEsIDE4MywgMjA4LCA4NCwgMjE5LCAxNDYsIDI1MCwgOTEsIDk2LCA2MiwgNDMsIDYxLCA0NywgMTc3LCAKLSAgICA2MiwgNDMsIDYxLCA0NywgODYsIDYyLCA0MywgNjEsIDQ3LCAxODMsIDYyLCA0MywgNjEsIDQ3LCAyNTAsIDE5NCwgMjA4LCAKLSAgICA4NCwgNTAsIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgMjA4LCA4NCwgMjQ3LCAyNDgsIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgCi0gICAgMjA4LCA4NCwgNDksIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgMjA4LCA4NCwgMjA4LCAxNDUsIDIwNywgOTIsIDQ3LCAyMTYsIAotICAgIDc4LCAyMjcsIDIyMiwgMjE2LCA3OCwgMjE2LCAxNiwgMjIyLCAyMTIsIDIyNywgMjIyLCAyMjIsIDIxMiwgMjE2LCAxNiwgCi0gICAgMjM5LCAxNDcsIDI0NSwgMTY2LCAyNTAsIDkyLCAyNDYsIDU3LCAyNTAsIDE5MywgODYsIDYyLCA0NywgMjA5LCAzMSwgMjA4LCAKLSAgICAxNDMsIDk2LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIDMxLCAyMTYsIDEyLCAxNzcsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgCi0gICAgMzEsIDIwOCwgMTQzLCA4NiwgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAzMSwgMjI3LCAyMTgsIDE4MywgMjQxLCAzMSwgMjUwLCAKLSAgICA5NCwgNjIsIDk2LCAyNDEsIDMxLCAyNTAsIDk0LCA2MiwgMTc3LCAyNDEsIDMxLCAyNTAsIDk0LCA2MiwgODYsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDYyLCAxODMsIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIAotICAgIDIyNywgMjEyLCAxODMsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMTYsIDUsIDE3NywgMjA4LCA4NCwgNTMsIAotICAgIDMsIDE2MywgMjA4LCAyMTEsIDIyNywgMjEyLCAxNzcsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMTYsIDUsIAotICAgIDk2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDg2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAKLSAgICAyMDgsIDIxMSwgMjA2LCAyMTIsIDk2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjQyLCA2OCwgODYsIDIwOCwgCi0gICAgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyNDIsIDY4LCA2MiwgMjQ1LCA4NiwgMTgzLCAyNSwgOTYsIDQ3LCA2MiwgMjQ1LCAKLSAgICA4NiwgMTgzLCAyNSwgODYsIDQ3LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgOTYsIDQ3LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgCi0gICAgODYsIDQ3LCA2MiwgMjQ1LCA4NiwgOTYsIDI1LCAxNzcsIDQ3LCA2MiwgMjQ1LCA4NiwgODYsIDI1LCAxNzcsIDQ3LCA2MiwgCi0gICAgMjQ1LCA4NiwgOTYsIDI1LCAxODMsIDQ3LCA2MiwgMjQ1LCA4NiwgODYsIDI1LCAxODMsIDQ3LCAyMTYsIDU1LCA1MywgMTIxLCAKLSAgICAyMjcsIDIyMiwgMjE2LCA1NSwgNTMsIDEyMSwgMjE2LCAxNiwgMjE2LCA1NSwgNTMsIDExMiwgMjI3LCAyMjIsIDIxNiwgNTUsIAotICAgIDUzLCAxMTIsIDIxNiwgMTYsIDIxNiwgNTUsIDUzLCA0OSwgMjA2LCAyMjQsIDIxNiwgNTUsIDUzLCA1MCwgMjA2LCAyMjQsIAotICAgIDIxNiwgNTUsIDUzLCA0OSwgMjQyLCA3MCwgMjE2LCA1NSwgNTMsIDUwLCAyNDIsIDcwLCAxNzcsIDYxLCA1MywgMjM5LCAKLSAgICAxMjAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgMTQyLCAxMTIsIDI1MCwgOTUsIDIzMSwgNTAsIDM0LCAyMTYsIDE0NCwgCi0gICAgMjQ3LCAyMzMsIDI0OCwgMjQ4LCA5OCwgMywgMTU3LCAyMDMsIDE5NiwgNDMsIDIwMywgMTk2LCA0MywgMjYsIDIwMywgMTk2LCAKLSAgICA2MiwgNTEsIDI0NiwgMjE1LCA2MiwgMjQzLCAyMjIsIDI0NiwgMjE1LCAyMDcsIDE3NCwgNjIsIDIxOCwgMjU1LCAyMzYsIAotICAgIDEwNiwgNjIsIDIyMCwgODEsIDYyLCAyMjAsIDgxLCA2MiwgMjI1LCAxMCwgMjA2LCAyMjMsIDIwOCwgODYsIDI0NiwgMjE1LCAKLSAgICA2MiwgMjI1LCAxMCwgMjQyLCA2OSwgMjA4LCA4NiwgMjQ2LCAyMTUsIDYyLCAyMjUsIDEwLCAyMjcsIDIxNywgMjA4LCA4NiwgCi0gICAgMjQ2LCAyMTUsIDYyLCAyMjUsIDEwLCAyMTYsIDExLCAyMDgsIDg2LCAyNDYsIDIxNSwgMjA4LCAxNDUsIDE2MiwgNjIsIAotICAgIDI0NiwgNjEsIDI0NywgMjQ4LCAxNjIsIDYyLCAyNDYsIDYxLCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjQ1LCA4MiwgCi0gICAgMjE1LCAxOTgsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDYyLCAyNDUsIDgyLCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIAotICAgIDI0NSwgODIsIDIxNSwgMTk4LCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIDI0NSwgODIsIDUxLCAyMTgsIDM0LCAyMzEsIDMxLCAKLSAgICAyMDYsIDI1MCwgNTQsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE3NywgMjA3LCAxMzQsIDUzLCAKLSAgICAzLCAyMDgsIDg2LCAyNTAsIDkzLCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxODMsIDIwNywgCi0gICAgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTgwLCA2LCAxLCAyNTAsIDAsIDE4MCwgNiwgMSwgMjQ3LCAxODEsIAotICAgIDE4MCwgNiwgMSwgMjA2LCA1MywgMTgwLCA2LCAxLCAyMzgsIDUwLCAxODAsIDYsIDEsIDI0MywgMTA4LCAxODAsIDYsIDEsIAotICAgIDIwMywgMjQsIDE4MCwgNiwgMSwgMjAyLCA2NCwgMTgwLCA2LCAxLCAyNDEsIDI1MCwgMTgwLCA2LCAxLCAyMDIsIDg5LCAKLSAgICAxODAsIDYsIDEsIDIzMCwgMTg4LCAxODAsIDYsIDEsIDgxLCAyMzAsIDE4OCwgMTgwLCA2LCAxLCA3NSwgMTgwLCA2LCAxLCAKLSAgICAyNDMsIDEyOCwgMTgwLCA2LCAxLCAyMzAsIDEwLCAxODAsIDYsIDEsIDIyNywgNzksIDE4MCwgNiwgMSwgMjIzLCAxNjcsIAotICAgIDE4MCwgNiwgMSwgMjIzLCA2OSwgMTgwLCA2LCAxLCAyMjAsIDIwLCAxODAsIDYsIDEsIDIxOCwgNTYsIDE4MCwgNiwgMSwgCi0gICAgMjE1LCAyNDQsIDE4MCwgNiwgMSwgMjEyLCA0MSwgMTgwLCA2LCAxLCAyMDcsIDE2MSwgMTgwLCA2LCAxLCAyMDcsIDEwLCAKLSAgICAxODAsIDYsIDEsIDIzOSwgMTIzLCAxODAsIDYsIDEsIDIzNywgMjMsIDE4MCwgNiwgMSwgMjE5LCAyMTcsIDE4MCwgNiwgMSwgCi0gICAgMjE5LCAzNCwgMTgwLCA2LCAxLCAyMTIsIDIwMiwgMTgwLCA2LCAxLCAyMDcsIDI1NSwgMTgwLCA2LCAxLCAyNDYsIDEwNCwgCi0gICAgMTgwLCA2LCAxLCAyMTMsIDkwLCAxODAsIDYsIDEsIDIwMywgMzAsIDE4MCwgNiwgMSwgMjAzLCAzMiwgMTgwLCA2LCAxLCAKLSAgICAyMDMsIDY0LCAxODAsIDYsIDEsIDIxMSwgMjA0LCAxNTIsIDE4MCwgNiwgMSwgMjAyLCAyMTMsIDE4MCwgNiwgMSwgNSwgCi0gICAgMjAyLCAxODMsIDE4MCwgNiwgMSwgNSwgMjAyLCAxODQsIDMsIDIwOSwgMjQ4LCAxODAsIDYsIDEsIDIwMiwgMjQ3LCAxODAsIAotICAgIDYsIDEsIDIzMCwgMjI5LCA1LCAyMDIsIDE4MywgMTgwLCA2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA2LCAxLCAKLSAgICAyMzAsIDIyOSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNiwgMSwgMjM5LCAyMzUsIDE4MCwgNiwgMSwgMjMwLCAxODYsIAotICAgIDE4MCwgNiwgMSwgMjEyLCAyMDEsIDE4MCwgNiwgMSwgMjA4LCA2MCwgNjMsIDE4MCwgNiwgMSwgMjI3LCAyNTIsIDIyMywgCi0gICAgMTY3LCAxODAsIDUsIDEsIDI1MCwgMCwgMTgwLCA1LCAxLCAyNDcsIDE4MSwgMTgwLCA1LCAxLCAyMDYsIDUzLCAxODAsIDUsIAotICAgIDEsIDIzOCwgNTAsIDE4MCwgNSwgMSwgMjQzLCAxMDgsIDE4MCwgNSwgMSwgMjAzLCAyNCwgMTgwLCA1LCAxLCAyMDIsIDY0LCAKLSAgICAxODAsIDUsIDEsIDI0MSwgMjUwLCAxODAsIDUsIDEsIDIwMiwgODksIDE4MCwgNSwgMSwgMjMwLCAxODgsIDE4MCwgNSwgMSwgCi0gICAgODEsIDIzMCwgMTg4LCAxODAsIDUsIDEsIDc1LCAxODAsIDUsIDEsIDI0MywgMTI4LCAxODAsIDUsIDEsIDIzMCwgMTAsIAotICAgIDE4MCwgNSwgMSwgMjI3LCA3OSwgMTgwLCA1LCAxLCAyMjMsIDE2NywgMTgwLCA1LCAxLCAyMjMsIDY5LCAxODAsIDUsIDEsIAotICAgIDIyMCwgMjAsIDE4MCwgNSwgMSwgMjE4LCA1NiwgMTgwLCA1LCAxLCAyMTUsIDI0NCwgMTgwLCA1LCAxLCAyMTIsIDQxLCAKLSAgICAxODAsIDUsIDEsIDIwNywgMTYxLCAxODAsIDUsIDEsIDIwNywgMTAsIDE4MCwgNSwgMSwgMjM5LCAxMjMsIDE4MCwgNSwgMSwgCi0gICAgMjM3LCAyMywgMTgwLCA1LCAxLCAyMTksIDIxNywgMTgwLCA1LCAxLCAyMTksIDM0LCAxODAsIDUsIDEsIDIxMiwgMjAyLCAKLSAgICAxODAsIDUsIDEsIDIwNywgMjU1LCAxODAsIDUsIDEsIDI0NiwgMTA0LCAxODAsIDUsIDEsIDIxMywgOTAsIDE4MCwgNSwgMSwgCi0gICAgMjAzLCAzMCwgMTgwLCA1LCAxLCAyMDMsIDMyLCAxODAsIDUsIDEsIDIwMywgNjQsIDE4MCwgNSwgMSwgMjExLCAyMDQsIAotICAgIDE1MiwgMTgwLCA1LCAxLCAyMDIsIDIxMywgMTgwLCA1LCAxLCA1LCAyMDIsIDE4MywgMTgwLCA1LCAxLCA1LCAyMDIsIDE4NCwgCi0gICAgMywgMjA5LCAyNDgsIDE4MCwgNSwgMSwgMjAyLCAyNDcsIDE4MCwgNSwgMSwgMjMwLCAyMjksIDUsIDIwMiwgMTgzLCAxODAsIAotICAgIDUsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDUsIDEsIDIzMCwgMjI5LCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA1LCAKLSAgICAxLCAyMzksIDIzNSwgMTgwLCA1LCAxLCAyMzAsIDE4NiwgMTgwLCA1LCAxLCAyMTIsIDIwMSwgMTgwLCA1LCAxLCAyMDgsIAotICAgIDYwLCA2MywgMTgwLCA1LCAxLCAyMjcsIDI1MiwgMjIzLCAxNjcsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA1MiwgMTQyLCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgNTIsIDE0MiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg1LCAzLCA5NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgMzQsIDMsIDk1LCA4LCA1LCAKLSAgICAxLCAyMTAsIDcwLCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMzcsIAotICAgIDE3MiwgMywgMjQ0LCAyMCwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ0LCAKLSAgICAyMCwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDQsIDIwLCA4LCA2LCAKLSAgICAxLCAyNTEsIDIsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCAxMTMsIDgsIDYsIDEsIDIwNywgMTc0LCA2MywgOCwgNiwgMSwgCi0gICAgMjA3LCAxNzQsIDI1MSwgMiwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDUwLCAxMTMsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAKLSAgICAxMTMsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAxMTMsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyNDUsIDk1LCA4LCA2LCAxLCAKLSAgICAxNjIsIDIzNywgMTcxLCA4LCA1LCAxLCAxNjIsIDIzNywgMTcxLCA4LCA1LCAxLCAyMDksIDI0NiwgMjE4LCAxOTIsIDgsIDUsIAotICAgIDEsIDE4OCwgMywgMjIxLCAxNjMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAKLSAgICAxNTgsIDMsIDEyNCwgMjE1LCAyNTMsIDIzMSwgNiwgOCwgMSwgNSwgNiwgMjA3LCAxNzQsIDc0LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjMwLCAxODQsIDY1LCAxLCA2LCAyMDYsIDE2NCwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCAKLSAgICA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCA4NCwgNiwgMSwgMjUxLCAyNCwgODQsIDUsIDEsIAotICAgIDI1MSwgMjQsIDg0LCA2LCAxLCAyMDUsIDIyNywgODQsIDUsIDEsIDIwNSwgMjI3LCA4NCwgNiwgMSwgMjM4LCAyMzUsIDg0LCAKLSAgICA1LCAxLCAyMzgsIDIzNSwgODQsIDYsIDEsIDI0NCwgMTgwLCA4NCwgNSwgMSwgMjQ0LCAxODAsIDg0LCA2LCAxLCAyNDEsIAotICAgIDE0NCwgODQsIDUsIDEsIDI0MSwgMTQ0LCA4NCwgNiwgMSwgMjExLCAyNDMsIDg0LCA1LCAxLCAyMTEsIDI0MywgODQsIDYsIAotICAgIDEsIDIwMiwgOTksIDg0LCA1LCAxLCAyMDIsIDk5LCA4NCwgNiwgMSwgMjM3LCA4MCwgODQsIDUsIDEsIDIzNywgODAsIDg0LCAKLSAgICA2LCAxLCAyMDksIDcyLCA4NCwgNSwgMSwgMjA5LCA3MiwgODQsIDYsIDEsIDIzNSwgMTY4LCA4NCwgNSwgMSwgMjM1LCAxNjgsIAotICAgIDg0LCA2LCAxLCAyMjksIDI1MiwgODQsIDUsIDEsIDIyOSwgMjUyLCA4NCwgNiwgMSwgMjI3LCAyNDgsIDg0LCA1LCAxLCAKLSAgICAyMjcsIDI0OCwgODQsIDYsIDEsIDIyNCwgMTU1LCA4NCwgNSwgMSwgMjI0LCAxNTUsIDg0LCA2LCAxLCAyMjIsIDEwMCwgODQsIAotICAgIDUsIDEsIDIyMiwgMTAwLCA4NCwgNiwgMSwgMjI4LCAyMjUsIDg0LCA1LCAxLCAyMjgsIDIyNSwgODQsIDYsIDEsIDc4LCA4NCwgCi0gICAgNSwgMSwgNzgsIDg0LCA2LCAxLCAyMTgsIDE2NywgODQsIDUsIDEsIDIxOCwgMTY3LCA4NCwgNiwgMSwgMjE1LCAyMjcsIDg0LCAKLSAgICA1LCAxLCAyMTUsIDIyNywgODQsIDYsIDEsIDIxMiwgMTMyLCA4NCwgNSwgMSwgMjEyLCAxMzIsIDg0LCA2LCAxLCAyMDksIAotICAgIDIwNywgODQsIDUsIDEsIDIwOSwgMjA3LCA4NCwgNiwgMSwgMjA3LCAzOSwgODQsIDUsIDEsIDIwNywgMzksIDg0LCA2LCAxLCAKLSAgICAyNDAsIDI2LCA4NCwgNSwgMSwgMjQwLCAyNiwgODQsIDYsIDEsIDIyOSwgMTIyLCA4NCwgNSwgMSwgMjI5LCAxMjIsIDg0LCAKLSAgICA2LCAxLCAyMTcsIDIwMiwgODQsIDUsIDEsIDIxNywgMjAyLCA4NCwgNiwgMSwgMjIwLCAxMiwgODQsIDUsIDEsIDIyMCwgMTIsIAotICAgIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjUxLCAzMCwgODQsIDUsIDEsIDI0MywgMjI2LCAyNTEsIDMwLCA4NCwgNiwgMSwgMzgsIAotICAgIDg0LCAyNTEsIDU5LCA4NCwgNSwgMSwgMzgsIDg0LCAyNTEsIDU5LCA4NCwgNiwgMSwgMjQ1LCAxMTMsIDI0MSwgMTQ0LCA4NCwgCi0gICAgNSwgMSwgMjQ1LCAxMTMsIDI0MSwgMTQ0LCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIyOSwgMjUyLCA4NCwgNSwgMSwgMjQzLCAKLSAgICAyMjYsIDIyOSwgMjUyLCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIyMiwgMTAwLCA4NCwgNSwgMSwgMjQzLCAyMjYsIDIyMiwgCi0gICAgMTAwLCA4NCwgNiwgMSwgMjQ1LCAxMTMsIDIyMiwgMTAwLCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIyMiwgMTAwLCA4NCwgNiwgCi0gICAgMSwgMzgsIDg0LCAyMjAsIDEyLCA4NCwgNSwgMSwgMzgsIDg0LCAyMjAsIDEyLCA4NCwgNiwgMSwgMjE0LCAyNDYsIDg0LCA1LCAKLSAgICAxLCAyMTQsIDI0NiwgODQsIDYsIDEsIDI0NSwgMTI4LCAyMTMsIDM1LCA4NCwgNSwgMSwgMjQ1LCAxMjgsIDIxMywgMzUsIAotICAgIDg0LCA2LCAxLCAzOCwgODQsIDIxMywgMzUsIDg0LCA1LCAxLCAzOCwgODQsIDIxMywgMzUsIDg0LCA2LCAxLCAzOCwgODQsIAotICAgIDI0MSwgNywgODQsIDUsIDEsIDM4LCA4NCwgMjQxLCA3LCA4NCwgNiwgMSwgMjUxLCA0MywgMjI5LCAxMjcsIDg0LCA1LCAxLCAKLSAgICAyNTEsIDQzLCAyMjksIDEyNywgODQsIDYsIDEsIDI0MywgMjI2LCAyMzYsIDEwNywgODQsIDUsIDEsIDI0MywgMjI2LCAyMzYsIAotICAgIDEwNywgODQsIDYsIDEsIDM4LCA4NCwgMjM2LCAxMDcsIDg0LCA1LCAxLCAzOCwgODQsIDIzNiwgMTA3LCA4NCwgNiwgMSwgCi0gICAgMzgsIDg0LCAxNTIsIDg0LCA1LCAxLCAzOCwgODQsIDE1MiwgODQsIDYsIDEsIDIyOCwgMTMwLCAxNTIsIDg0LCA1LCAxLCAKLSAgICAyMjgsIDEzMCwgMTUyLCA4NCwgNiwgMSwgMzgsIDg0LCAyMzcsIDQyLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzcsIDQyLCA4NCwgCi0gICAgNiwgMSwgMzgsIDg0LCAyMzcsIDgzLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzcsIDgzLCA4NCwgNiwgMSwgMzgsIDg0LCAyMzgsIAotICAgIDIzMCwgODQsIDUsIDEsIDM4LCA4NCwgMjM4LCAyMzAsIDg0LCA2LCAxLCAzOCwgODQsIDI0MywgMTMxLCA4NCwgNSwgMSwgCi0gICAgMzgsIDg0LCAyNDMsIDEzMSwgODQsIDYsIDEsIDM4LCA4NCwgMjEzLCAxLCA4NCwgNSwgMSwgMzgsIDg0LCAyMTMsIDEsIDg0LCAKLSAgICA2LCAxLCAzOCwgMjIxLCA1NCwgMjEzLCAxLCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIxMywgMSwgODQsIDYsIDEsIDM4LCAKLSAgICAyMjEsIDU0LCAyMjIsIDE1MSwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMjIsIDE1MSwgODQsIDYsIDEsIDM4LCAyMjEsIAotICAgIDU0LCAyMjAsIDI0OCwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMjAsIDI0OCwgODQsIDYsIDEsIDM4LCAyMjEsIDU0LCAKLSAgICAyMDQsIDc3LCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIwNCwgNzcsIDg0LCAxNiwgMjMwLCAxOCwgODQsIDE2LCAyMjQsIAotICAgIDE1NiwgMjE1LCAyMjcsIDg0LCAxNiwgMjE4LCAxNjgsIDIxNSwgMjI3LCA4NCwgMTYsIDIxMSwgODUsIDg0LCAxNiwgMjA5LCAKLSAgICAyMDgsIDIxNSwgMjI3LCA4NCwgMTYsIDIyOSwgMTIzLCAyMTUsIDIyNywgODQsIDE2LCAyMTMsIDIsIDIxMiwgMTMyLCA4NCwgCi0gICAgNiwgMSwgMjQ1LCAxMTMsIDIxMywgMzUsIDg0LCA1LCAxLCAyNDUsIDExMywgMjEzLCAzNSwgODQsIDYsIDEsIDI0NSwgMTEzLCAKLSAgICAyMzgsIDIzMCwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMzgsIDIzMCwgODQsIDM5LCAyMjIsIDEwMSwgNTUsIDg0LCAzOSwgCi0gICAgMjExLCAxOTcsIDI1MCwgNjcsIDg0LCAzOSwgMjExLCAxOTcsIDIyNywgMTg2LCA4NCwgNiwgMSwgMjQ4LCAxNiwgMjI5LCAKLSAgICAxMjcsIDg0LCA1LCAxLCAyNDgsIDE2LCAyMjksIDEyNywgODQsIDM4LCAyMjEsIDU0LCAyMzksIDEwMiwgMjExLCA2MSwgODQsIAotICAgIDM4LCAyMjEsIDU0LCAyNDMsIDE2NywgMjE3LCA0NywgODIsIDg0LCAzOCwgMjIxLCA1NCwgMjMxLCAzMCwgMjE3LCA0NywgCi0gICAgODIsIDg0LCAzOCwgMjIxLCA1NCwgMjA2LCA0MCwgMjQzLCAxNDEsIDg0LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgODQsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCA4NCwgMjI0LCAyNSwgMjQzLCAxNDEsIDExNCwgNSwgMSwgMjUwLCAyMzEsIDExNCwgNSwgMSwgCi0gICAgMjQ4LCAyNDIsIDExNCwgNSwgMSwgMjM4LCAyMzQsIDExNCwgNSwgMSwgMjQzLCA5MywgMTE0LCA1LCAxLCAyNDEsIDkyLCAKLSAgICAxMTQsIDUsIDEsIDIwNSwgMjEzLCAxMTQsIDUsIDEsIDIwMiwgODcsIDExNCwgNSwgMSwgMjA5LCAyMzAsIDExNCwgNSwgMSwgCi0gICAgMjMxLCA0OSwgMTE0LCA1LCAxLCAyMzAsIDQsIDExNCwgNSwgMSwgMjI4LCAyLCAxMTQsIDUsIDEsIDIyNSwgMTIyLCAxMTQsIAotICAgIDUsIDEsIDIyMywgNzQsIDExNCwgNSwgMSwgMjIwLCAzMSwgMTE0LCA1LCAxLCAyMTksIDkxLCAxMTQsIDUsIDEsIDIwMiwgCi0gICAgNzYsIDExNCwgNSwgMSwgMjE2LCAyMDIsIDExNCwgNSwgMSwgMjE0LCAyNDMsIDExNCwgNSwgMSwgMjA5LCAyMTgsIDExNCwgCi0gICAgNSwgMSwgMjA2LCAyNTUsIDExNCwgNSwgMSwgMjE4LCAyMDAsIDExNCwgNSwgMSwgMjI5LCAxMzIsIDExNCwgNSwgMSwgMjM4LCAKLSAgICAxMTAsIDExNCwgNSwgMSwgMjE3LCAxMTEsIDExNCwgNSwgMSwgMjEyLCAyNTUsIDExNCwgNSwgMSwgMjQ2LCAxMjksIDExNCwgCi0gICAgNSwgMSwgMjQ3LCA2MSwgMTE0LCA1LCAxLCAyMzAsIDEzMywgMTE0LCA1LCAxLCAyNDYsIDY4LCAxMTQsIDUsIDEsIDI0NiwgCi0gICAgMTgzLCAxMTQsIDUsIDEsIDIwMywgMTgwLCAxMTQsIDUsIDEsIDIzMCwgMTQ2LCAxMTQsIDUsIDEsIDIzNywgMTU0LCAxMTQsIAotICAgIDUsIDEsIDIzNywgNjcsIDExNCwgNSwgMSwgMjM2LCAyNTQsIDExNCwgNSwgMSwgMjA0LCA2MiwgMTE0LCA1LCAxLCAyMzcsIAotICAgIDkyLCAxMTQsIDUsIDEsIDIzNiwgMTMyLCAxMTQsIDUsIDEsIDIwMiwgMjQ5LCAxMTQsIDUsIDEsIDI1MSwgOTgsIDIwOCwgCi0gICAgMjQ3LCAxLCAxOTgsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwNiwgMjA4LCAyNDcsIDEsIDIwMywgMTA1LCAyMDgsIDI0NywgMSwgCi0gICAgMjAzLCA5NSwgMjA4LCAyNDcsIDEsIDIwMywgOTMsIDIwOCwgMjQ3LCAxLCAyNDgsIDExMiwgMjUxLCAxNDAsIDIwMywgODgsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDg4LCAyMDgsIDI0NywgMSwgMjAzLCAxMDMsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwMCwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgMTAyLCAyMDgsIDI0NywgMSwgMjAzLCAxMDEsIDIwOCwgMjQ3LCAxLCAyMDMsIDE1LCAyMDgsIDI0NywgCi0gICAgMSwgMjAzLCA5NywgMjA4LCAyNDcsIDEsIDIwMywgODYsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA4NiwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgODMsIDIwOCwgMjQ3LCAxLCAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjQ4LCAxMTIsIDI1MSwgMTQwLCAKLSAgICAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTEsIDIwOCwgMjQ3LCAxLCAyMDMsIDkwLCAyMDgsIDI0NywgCi0gICAgMSwgMjAzLCAxMTAsIDIwOCwgMjQ3LCAxLCAyMDMsIDg0LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgODQsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDczLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgNzMsIDIwOCwgMjQ3LCAxLCAyMDMsIDExLCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDI1MSwgNzEsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyMDcsIAotICAgIDIwMCwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDIwMywgODIsIDIwOCwgMjQ3LCAxLCAyMDMsIDgxLCAyMDgsIDI0NywgMSwgCi0gICAgMjAzLCA3OCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDkyLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgNzYsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDc0LCAyMDgsIDI0NywgMSwgMjAyLCAyMTMsIDIwOCwgMjQ3LCAxLCAyMDMsIDcxLCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCA3MCwgMjA4LCAyNDcsIDEsIDIwMywgOTQsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5NCwgCi0gICAgMjA4LCAyNDcsIDEsIDI1MCwgNCwgMjAzLCA5NCwgMjA4LCAyNDcsIDEsIDIwMywgNjksIDIwOCwgMjQ3LCAxLCAyMDMsIDY3LCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA2OCwgMjA4LCAyNDcsIDEsIDIwMywgNjYsIDIwOCwgMjQ3LCAxLCAyMDMsIDY1LCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCAxMDQsIDIwOCwgMjQ3LCAxLCAyMDMsIDYzLCAyMDgsIDI0NywgMSwgMjAzLCA2MSwgMjA4LCAyNDcsIAotICAgIDEsIDIwMywgNjAsIDIwOCwgMjQ3LCAxLCAyMDMsIDU4LCAyMDgsIDI0NywgMSwgMjAzLCA1NSwgMjA4LCAyNDcsIDEsIDIwOSwgCi0gICAgMTk5LCAyMDMsIDU1LCAyMDgsIDI0NywgMSwgMjAzLCA1MywgMjA4LCAyNDcsIDEsIDIwMywgNTIsIDIwOCwgMjQ3LCAxLCAKLSAgICAyMDIsIDI0NywgMjA4LCAyNDcsIDY1LCAxLCAyMjgsIDEwMywgODIsIDIwOCwgMjQ3LCAyMTMsIDEzMSwgODIsIDIwOCwgCi0gICAgMjQ3LCAxMDksIDIzMCwgOTYsIDMzLCA0LCAyMjcsIDQ4LCAzMywgNCwgMjI0LCA4MSwgMzMsIDQsIDIxNSwgMjI1LCAzMywgCi0gICAgNCwgMjEyLCAxMiwgMzMsIDQsIDIxMiwgMjQxLCAzMywgNCwgMjQ4LCAyMiwgMzMsIDQsIDIwOCwgMTcyLCAzMywgNCwgMjQ1LCAKLSAgICAyNTMsIDMzLCA0LCAyMjEsIDE4OSwgMzMsIDQsIDIyMCwgMjMyLCAzMywgNCwgMjM4LCA0NSwgMjIwLCA5NywgMzMsIDQsIAotICAgIDIwMiwgMTYsIDMzLCA0LCAyNDMsIDExMSwgMzMsIDQsIDI0NCwgODksIDMzLCA0LCAyMzAsIDEwMCwgMzMsIDQsIDIwOSwgCi0gICAgNDYsIDMzLCA0LCAyNDYsIDExNSwgMzMsIDQsIDIxOCwgMTc5LCAzMywgNCwgMjE4LCA2OCwgMzMsIDQsIDIzOCwgMTI1LCAKLSAgICAzMywgNCwgMjM4LCAxMjEsIDMzLCA0LCAyMzgsIDEyMiwgMzMsIDQsIDIzOCwgMTIzLCAzMywgNCwgMjExLCAxNjQsIDMzLCAKLSAgICA0LCAyMTEsIDExOSwgMzMsIDQsIDIxMSwgMTMyLCAzMywgNCwgMjExLCAxNjMsIDMzLCA0LCAyMTEsIDEzNywgMzMsIDQsIAotICAgIDIxMSwgMTM4LCAzMywgNCwgMjExLCAxMjQsIDMzLCA0LCAyNDcsIDUsIDMzLCA0LCAyNDYsIDI0MCwgMzMsIDQsIDI0NiwgCi0gICAgMjQyLCAzMywgNCwgMjQ3LCA0LCAzMywgNCwgMjQ3LCAyLCAzMywgNCwgMjQ3LCAzLCAzMywgNCwgMjQ2LCAyNDEsIDMzLCA0LCAKLSAgICAyMDEsIDIzNSwgMzMsIDQsIDIwMSwgMjEzLCAzMywgNCwgMjAxLCAyMjYsIDMzLCA0LCAyMDEsIDIzNCwgMzMsIDQsIDIwMSwgCi0gICAgMjI5LCAzMywgNCwgMjAxLCAyMzAsIDMzLCA0LCAyMDEsIDIxOCwgMzMsIDQsIDI0NywgMCwgMzMsIDQsIDI0NiwgMjQzLCAKLSAgICAzMywgNCwgMjQ2LCAyNDUsIDMzLCA0LCAyNDYsIDI1NSwgMzMsIDQsIDI0NiwgMjUzLCAzMywgNCwgMjQ2LCAyNTQsIDMzLCAKLSAgICA0LCAyNDYsIDI0NCwgMzMsIDQsIDIxNywgMTMsIDMzLCA0LCAyMTcsIDMsIDMzLCA0LCAyMTcsIDksIDMzLCA0LCAyMTcsIAotICAgIDEyLCAzMywgNCwgMjE3LCAxMCwgMzMsIDQsIDIxNywgMTEsIDMzLCA0LCAyMTcsIDgsIDMzLCA0LCAyMjgsIDE0MSwgMzMsIAotICAgIDQsIDIyOCwgMTMzLCAzMywgNCwgMjI4LCAxMzYsIDMzLCA0LCAyMjgsIDE0MCwgMzMsIDQsIDIyOCwgMTM3LCAzMywgNCwgCi0gICAgMjI4LCAxMzgsIDMzLCA0LCAyMjgsIDEzNCwgMzMsIDQsIDIwMywgMTQwLCAzMywgNCwgMjAzLCAxMjcsIDMzLCA0LCAyMDMsIAotICAgIDEzNSwgMzMsIDQsIDIwMywgMTM5LCAzMywgNCwgMjAzLCAxMzcsIDMzLCA0LCAyMDMsIDEzOCwgMzMsIDQsIDIwMywgMTM0LCAKLSAgICAzMywgNCwgMjM3LCAxODMsIDMzLCA0LCAyMzcsIDE3MywgMzMsIDQsIDIzNywgMTc2LCAzMywgNCwgMjM3LCAxODIsIDMzLCAKLSAgICA0LCAyMzcsIDE3OCwgMzMsIDQsIDIzNywgMTc5LCAzMywgNCwgMjM3LCAxNzUsIDM5LCAzNiwgMSwgMjQ4LCAxNjIsIDM5LCAKLSAgICAzNiwgMSwgMjA2LCA1NSwgMzksIDM2LCAxLCAyMzgsIDEwNSwgMzksIDM2LCAxLCAyNDQsIDc1LCAzOSwgMzYsIDEsIDIwMiwgCi0gICAgNzEsIDM5LCAzNiwgMSwgMjAyLCA5MiwgMzksIDM2LCAxLCAxNzMsIDM5LCAzNiwgMSwgMjQxLCAxMjIsIDM5LCAzNiwgMSwgCi0gICAgMjQxLCAxMDMsIDM5LCAzNiwgMSwgMjQxLCA5MiwgMzksIDM2LCAxLCA3OCwgMzksIDM2LCAxLCAyMTksIDM0LCAzOSwgMzYsIAotICAgIDEsIDI0MSwgMjgsIDM5LCAzNiwgMSwgMjQxLCAxNywgMzksIDM2LCAxLCAyMDksIDE4NywgMzksIDM2LCAxLCAxNTIsIDM5LCAKLSAgICAzNiwgMSwgMjA4LCAxNCwgMzksIDM2LCAxLCAyNDYsIDE3MCwgMzksIDM2LCAxLCAyMTMsIDkwLCAzOSwgMzYsIDEsIDIxMywgCi0gICAgNDYsIDM5LCAzNiwgMSwgMjM5LCAyMzUsIDM5LCAzNiwgMSwgMjQxLCAxMywgMzksIDM2LCAxLCA2MywgMzksIDM2LCAxLCAKLSAgICAyMzEsIDExMCwgMzksIDM2LCAxLCAyNDMsIDEyOSwgMzksIDM2LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzOSwgMzYsIDEsIAotICAgIDIwMywgNjYsIDM5LCAzNiwgMSwgMjAyLCAyMTMsIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDYzLCAzOSwgMzYsIDEsIDIyNywgCi0gICAgODYsIDIwMiwgMTgzLCAzOSwgMzYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzOSwgMzYsIDEsIDIzMCwgMjI4LCAyNDgsIDczLCAKLSAgICAyMDIsIDE4MywgNTAsIDI1MCwgMjE4LCAyMTAsIDI0MSwgMjI1LCA4OCwgNTAsIDI1MCwgMjE4LCAyNDIsIDgzLCAyMTAsIAotICAgIDI0MSwgMjI1LCA4OCwgNDksIDIxMCwgMjQxLCAxNTUsIDUwLCAyMTAsIDI0MSwgMTU1LCA0OSwgMjQyLCA4MywgMjEwLCAKLSAgICAyNDEsIDE1NSwgNTAsIDI0MiwgODMsIDIxMCwgMjQxLCAxNTUsIDIxNiwgMTg4LCAyMzAsIDI0OSwgMjI1LCA4OCwgMjE2LCAKLSAgICAxODgsIDI0MiwgODMsIDIzMCwgMjQ5LCAyMjUsIDg4LCAyNDIsIDgzLCAyMDgsIDEwMywgMjI1LCA4OCwgNDksIDIwOCwgCi0gICAgMTAzLCAxNTUsIDUwLCAyMDgsIDEwMywgMTU1LCAyMTYsIDE4OCwgMjExLCAxNzcsIDQ5LCAyMTYsIDE4OCwgMjIwLCAzMywgCi0gICAgMTU1LCA1MCwgMjE2LCAxODgsIDIyMCwgMzMsIDE1NSwgMjQxLCAxNjIsIDI0NSwgMTYzLCAyMTksIDg3LCAyMzksIDE2MSwgCi0gICAgMjE5LCA4NywgMjE2LCA3MywgMjM5LCAxNjEsIDIxOSwgODcsIDIzNSwgMjE3LCAyNDIsIDgzLCAyMjAsIDkyLCAxODMsIAotICAgIDI1MCwgMjI3LCAxNzcsIDI1MCwgMjI3LCAyNDIsIDgzLCAyMTYsIDExLCAyNTAsIDIxNywgNTIsIDIyMCwgODksIDIzNSwgCi0gICAgMjIwLCAyMzAsIDIzOSwgMjMwLCAyNDcsIDIxOSwgMTM1LCAyNDcsIDIyMywgMjM1LCAyMjEsIDMsIDI0MywgMjMxLCAyMDgsIAotICAgIDIyOCwgMywgMjE1LCAyNTMsIDU1LCA0OSwgMTI0LCAyMTksIDc5LCAxNTUsIDUwLCAxMjQsIDIxOSwgNzksIDE1NSwgMjA4LCAKLSAgICAyMjgsIDMsIDcwLCA1NSwgMjA4LCAyMjgsIDMsIDcwLCA1NiwgNDksIDgwLCAyNDgsIDIzMSwgMywgMjE3LCA0MSwgNTAsIAotICAgIDgwLCAyNDgsIDIzMSwgMywgMjE3LCA0MSwgMjA4LCAxNDUsIDQ5LCAxNjIsIDE1NSwgMjA4LCAxNDUsIDUwLCAxNjIsIDE1NSwgCi0gICAgMjQ3LCAyNDgsIDQ5LCAxNjIsIDE1NSwgMjQ3LCAyNDgsIDUwLCAxNjIsIDE1NSwgNDksIDIxMiwgMTU0LCAxMDYsIDE1NSwgCi0gICAgNTAsIDIxMiwgMTU0LCAxMDYsIDE1NSwgNDksIDUyLCAyMTksIDc2LCA1MCwgNTIsIDIxOSwgNzYsIDEyMCwgMTg3LCAxMTUsIAotICAgIDExOCwgNzAsIDIxNywgMTc4LCAxMTgsIDcwLCAxMTUsIDEyMCwgMTg3LCAyMTcsIDE3OCwgMTAzLCAyMzksIDE0NywgNzAsIAotICAgIDIxNywgMTc4LCAyMzksIDIzMywgNzAsIDgyLCAyMTYsIDczLCAyMTcsIDQ3LCA4MiwgODAsIDIwOCwgMjI3LCAyMTUsIDI1MywgCi0gICAgMjE4LCA2MiwgMjAzLCAyMzgsIDIxMywgMTMxLCAxMDEsIDI0MywgODUsIDIwNywgMTc0LCAyNDUsIDIzMywgMjE2LCAxODgsIAotICAgIDI0MywgODUsIDIxNiwgMTg4LCAyNDUsIDIzMywgMjA3LCAxNzQsIDIxMywgMTQzLCAyNDQsIDE5NiwgMywgNDksIDIzNywgCi0gICAgMjI0LCAyNDQsIDE5NiwgMywgNTAsIDIzNywgMjI0LCAyMDcsIDE3NCwgMjQ0LCAxOTUsIDIwOCwgMTQ1LCAxNjIsIDIxNCwgCi0gICAgMTY4LCA1NCwgMjA3LCAxMzUsIDI0NCwgMTQ0LCAyMDksIDMwLCAyNDQsIDE0NCwgMjExLCA3NiwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDgwLCAyMTIsIDg4LCAyNDMsIDgzLCAyMDQsIDIxLCA4MCwgMjI3LCAxMTQsIDI0NywgNDYsIDUyLCAyMzUsIDIyMCwgCi0gICAgMjE2LCA3MywgMjQ1LCAyMzMsIDUyLCAyMjYsIDI1MiwgMjE3LCAzMSwgODIsIDEyLCA0MCwgMjE2LCAxMDAsIDEyLCA0MCwgCi0gICAgMjQ2LCAyNiwgMTIsIDQwLCAyMTQsIDE3MSwgMTA1LCAxMiwgNDAsIDIxNCwgMTcxLCAxMDgsIDEyLCA0MCwgMjE0LCAxNzEsIAotICAgIDE0NywgMTIsIDQwLCAyMTgsIDIyOSwgMTIsIDQwLCAyNDcsIDIzMywgMTIsIDQwLCAyMTAsIDgsIDEyLCA0MCwgMjI5LCAzNCwgCi0gICAgMTA1LCAxMiwgNDAsIDIyOSwgMzQsIDEwOCwgMTIsIDQwLCAyNDMsIDEzOCwgMTIsIDQwLCAyMTQsIDE3NSwgMTIsIDQwLCA1LCAKLSAgICAxMDUsIDEyLCA0MCwgNSwgMTA4LCAxMiwgNDAsIDIyOCwgMjMsIDEwNSwgMTIsIDQwLCAyMjgsIDIzLCAxMDgsIDEyLCA0MCwgCi0gICAgMjI4LCAyMywgMTQ3LCAxMiwgNDAsIDIyOCwgMjMsIDE0OSwgMTIsIDQwLCAyMTIsIDI0LCAxMiwgNDAsIDIwOSwgMzMsIDEyLCAKLSAgICA0MCwgMjEyLCAyMiwgMTA1LCAxMiwgNDAsIDIxMiwgMjIsIDEwOCwgMTIsIDQwLCAyMzcsIDU2LCAxMDUsIDEyLCA0MCwgCi0gICAgMjM3LCA1NiwgMTA4LCAxMiwgNDAsIDIzNywgMTIzLCAxMiwgNDAsIDIxNiwgMTc4LCAxMiwgNDAsIDI0NiwgMTEyLCAxMiwgCi0gICAgNDAsIDIxMCwgMjE0LCAxMiwgNDAsIDIyNCwgMjksIDEyLCA0MCwgMjQ0LCA3MywgMTIsIDQwLCAyMjQsIDIwLCAxMiwgNDAsIAotICAgIDI0NiwgNDQsIDEyLCA0MCwgMjA0LCA4MSwgMTA1LCAxMiwgNDAsIDIwNCwgODEsIDEwOCwgMTIsIDQwLCAyMzksIDI0OSwgCi0gICAgMTIsIDQwLCAyMTksIDQ2LCAxMDUsIDEyLCA0MCwgMjE5LCA0NiwgMTA4LCAxMiwgNDAsIDIxMiwgMTI3LCAxNjIsIDIwOCwgCi0gICAgOTYsIDIwOCwgMjUsIDEyLCA0MCwgMjQ1LCAxNDksIDEyLCA0MCwgMjQzLCAxMDIsIDEyLCA0MCwgMjMwLCAxNzYsIDEyLCAKLSAgICA0MCwgMjQ4LCAxNSwgNzYsIDI0NiwgMTAsIDEyLCA0MCwgMjQwLCAxOTEsIDEyLCA0MCwgMjExLCAxOTksIDEwNSwgMTIsIAotICAgIDQwLCAyMTEsIDE5OSwgMTA4LCAxMiwgNDAsIDI0OCwgMjQ0LCAxMiwgNDAsIDIxMiwgMTM0LCAxMiwgNDAsIDI0NywgMTIyLCAKLSAgICAyMTIsIDEzNCwgMTIsIDQwLCAyMjIsIDIyMCwgMTA1LCAxMiwgNDAsIDIyMiwgMjIwLCAxMDgsIDEyLCA0MCwgMjIyLCAyMjAsIAotICAgIDE0NywgMTIsIDQwLCAyMjIsIDIyMCwgMTQ5LCAxMiwgNDAsIDIyNCwgMjI3LCAxMiwgNDAsIDIxMywgMzcsIDEyLCA0MCwgCi0gICAgMjE2LCAxODQsIDEyLCA0MCwgMjQwLCAyMTksIDEyLCA0MCwgMjIwLCA0NSwgMTIsIDQwLCAyNDcsIDIwMSwgMTA1LCAxMiwgCi0gICAgNDAsIDI0NywgMjAxLCAxMDgsIDEyLCA0MCwgMjI1LCAxNSwgMTIsIDQwLCAyMjQsIDI0LCAxMiwgNDAsIDIzOCwgMSwgMTA1LCAKLSAgICAxMiwgNDAsIDIzOCwgMSwgMTA4LCAxMiwgNDAsIDIzOCwgMSwgMTQ3LCAxMiwgNDAsIDIwOCwgMjQ1LCAxMiwgNDAsIDI0NiwgCi0gICAgOSwgMTIsIDQwLCAyMDQsIDQ2LCAxMDUsIDEyLCA0MCwgMjA0LCA0NiwgMTA4LCAxMiwgNDAsIDI0NywgMTIyLCAyMTQsIAotICAgIDE2NSwgMTIsIDQwLCAyMTIsIDEyNywgMjM2LCA1MywgMTIsIDQwLCAyMzYsIDUzLCAxMiwgNDAsIDI0NywgMTIyLCAyMTEsIAotICAgIDIxMSwgMTIsIDQwLCAyNDcsIDEyMiwgMjEzLCAzMiwgMTIsIDQwLCAyMzksIDE3MiwgMTIsIDQwLCAyNDcsIDEyMiwgMjQ3LCAKLSAgICAyMywgMTIsIDQwLCAyMTIsIDEyNywgMjA0LCAxMDEsIDEyLCA0MCwgMjA0LCAxMDIsIDEwNSwgMTIsIDQwLCAyMDQsIDEwMiwgCi0gICAgMTA4LCAxMiwgNDAsIDI0NiwgNDcsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOCwgMzEsIDEyLCA0MCwgMTYzLCAxMDUsIDEyLCAKLSAgICA0MCwgMTYzLCAxMDgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIyNywgMjgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOCwgMjE2LCAxMiwgCi0gICAgNDAsIDIyNCwgMTYsIDEwNSwgMTIsIDQwLCAyMjQsIDE2LCAxMDgsIDEyLCA0MCwgMjE2LCAxOTAsIDEyLCA0MCwgMjQ4LCAKLSAgICAyNSwgMTIsIDQwLCAyNDcsIDEyMiwgMjA5LCAyMjQsIDIyNywgMjI4LCAxMiwgNDAsIDI0NywgMTIyLCAyMjcsIDIyOSwgMTIsIAotICAgIDQwLCAyNDcsIDEyMiwgMjA0LCAxNiwgMTIsIDQwLCAyNDcsIDEyMiwgMjM5LCAxOTAsIDEyLCA0MCwgMjQxLCAxNzMsIDEwNSwgCi0gICAgMTIsIDQwLCAyNDEsIDE3MywgMTA4LCAxMiwgNDAsIDI0MSwgMTczLCAxNDcsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0MSwgMTcyLCAKLSAgICAxMiwgNDAsIDIzNywgNjQsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzNiwgNDksIDEyLCA0MCwgMjQ4LCAxMSwgMTIsIDQwLCAyMzgsIAotICAgIDg5LCAxMiwgNDAsIDI0NywgMTIyLCAyMzksIDI0MywgMTIsIDQwLCAyNDcsIDEyMiwgMjQ4LCA2MCwgMTIsIDQwLCAyNDcsIAotICAgIDEyMiwgMjE1LCAxLCAxMiwgNDAsIDIxMiwgMTI3LCAyMDQsIDM4LCAxMiwgNDAsIDIxMiwgMTI3LCAyMDMsIDQ0LCAxMiwgCi0gICAgNDAsIDI0NywgMTIyLCAyMzksIDEyMSwgMTIsIDQwLCAyMzAsIDE4MywgMjQwLCAyMjQsIDEyLCA0MCwgMjQ3LCAxMjIsIAotICAgIDI0MCwgMjI0LCAxMiwgNDAsIDIzMCwgMTgzLCAyMDgsIDE0NiwgMTIsIDQwLCAyNDcsIDEyMiwgMjA4LCAxNDYsIDEyLCA0MCwgCi0gICAgMjMwLCAxODMsIDI0MiwgNjEsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0MiwgNjEsIDEyLCA0MCwgMjA3LCAxNzEsIDEyLCA0MCwgCi0gICAgMjMwLCAxODMsIDIwNywgMTcxLCAxMiwgNDAsIDI0NywgMTIyLCAyMDcsIDE3MSwgNzEsIDQwLCAxMDUsIDcxLCA0MCwgMjI3LCAKLSAgICAxMTQsIDcxLCA0MCwgMjQzLCA4NSwgNzEsIDQwLCAyMTIsIDU3LCA3MSwgNDAsIDIxNCwgMTcwLCA3MSwgNDAsIDExMywgNzEsIAotICAgIDQwLCAxMDgsIDcxLCA0MCwgMjI3LCAxNDMsIDcxLCA0MCwgMjI1LCAxMjIsIDcxLCA0MCwgMjI3LCAyMDcsIDcxLCA0MCwgCi0gICAgMjQxLCA2NywgNzEsIDQwLCAxOTksIDcxLCA0MCwgMTIxLCAyNDcsIDIzMywgNzEsIDQwLCAyNDUsIDE1MSwgNzEsIDQwLCAKLSAgICAyMzUsIDE2MiwgNzEsIDQwLCAyMTAsIDgsIDcxLCA0MCwgMTcxLCAyNDcsIDIzMywgNzEsIDQwLCAyMjksIDMzLCA3MSwgNDAsIAotICAgIDIxOCwgMTYsIDcxLCA0MCwgMjAzLCAyMjgsIDcxLCA0MCwgMjExLCAxOTAsIDcxLCA0MCwgNTAsIDE3MSwgMjQ3LCAyMzMsIAotICAgIDcxLCA0MCwgMjM2LCAyNTUsIDI0MSwgODcsIDcxLCA0MCwgMjA5LCAxNTIsIDcxLCA0MCwgMjQzLCAxMzgsIDcxLCA0MCwgCi0gICAgMjE0LCAxNzUsIDcxLCA0MCwgMjQ2LCAyNiwgNzEsIDQwLCAyMTcsIDIyNiwgNzEsIDQwLCAyNTEsIDgwLCA3MSwgNDAsIAotICAgIDIyNCwgNywgNzEsIDQwLCAyNDEsIDg3LCA3MSwgNDAsIDI0MSwgMTc5LCA3MSwgNDAsIDIxNCwgMTk3LCA3MSwgNDAsIDIzOCwgCi0gICAgMzksIDcxLCA0MCwgMjM4LCA0MCwgMjEyLCAzOCwgNzEsIDQwLCAyNDAsIDIyMywgNzEsIDQwLCAyNDgsIDcyLCA3MSwgNDAsIAotICAgIDIwMywgMjUwLCA3MSwgNDAsIDI0NiwgMTMzLCA3MSwgNDAsIDIxNSwgMjA3LCA3MSwgNDAsIDIzMSwgNDUsIDcxLCA0MCwgCi0gICAgMjEyLCAzNiwgNzEsIDQwLCAyMjgsIDIyLCA3MSwgNDAsIDI0NSwgMTYxLCA3MSwgNDAsIDIxMSwgMTgxLCA3MSwgNDAsIAotICAgIDIyNCwgMTIsIDcxLCA0MCwgMjE1LCAyNDEsIDcxLCA0MCwgMjAzLCAyMzUsIDcxLCA0MCwgMjIwLCAyNSwgNzEsIDQwLCAKLSAgICAyMDcsIDE4MCwgNzEsIDQwLCAyNDIsIDQ0LCA3MSwgNDAsIDIxMiwgMjI4LCAyMDksIDMzLCA3MSwgNDAsIDI0MiwgODMsIAotICAgIDI0NiwgMjYsIDcxLCA0MCwgMTYzLCAyMTEsIDM4LCA3MSwgNDAsIDEyMCwgMjM3LCA5OSwgNzEsIDQwLCAyMTIsIDIzNCwgCi0gICAgNzEsIDQwLCAyNDcsIDI0MCwgNzEsIDQwLCAyMTIsIDIxLCA3MSwgNDAsIDI0NywgMjA1LCA3MSwgNDAsIDIxMSwgNzUsIDcxLCAKLSAgICA0MCwgMjM3LCA1NSwgNzEsIDQwLCAyMzcsIDEzOCwgNzEsIDQwLCAyNDMsIDg4LCA3MSwgNDAsIDIzNywgMTIzLCA3MSwgNDAsIAotICAgIDI0NywgMjIzLCA3MSwgNDAsIDIxNiwgMTc4LCA3MSwgNDAsIDIxNCwgMTgzLCA3MSwgNDAsIDI0MywgMTY5LCA3MSwgNDAsIAotICAgIDI1MCwgOSwgNzEsIDQwLCAyMTEsIDE3NywgNzEsIDQwLCAyMjEsIDE2NSwgNzEsIDQwLCAyMTAsIDIxNCwgNzEsIDQwLCAKLSAgICAyMTQsIDIwOCwgNzEsIDQwLCAyMjQsIDI5LCA3MSwgNDAsIDIwOCwgOTUsIDcxLCA0MCwgMjI4LCA5OSwgNzEsIDQwLCAyMTEsIAotICAgIDYxLCA3MSwgNDAsIDI0NCwgNzMsIDcxLCA0MCwgMjA0LCA2MSwgNzEsIDQwLCAyNDMsIDExNCwgMjIxLCAxNjUsIDcxLCA0MCwgCi0gICAgMjQ1LCAyMjksIDcxLCA0MCwgMjM5LCA5NSwgNzEsIDQwLCAyNDYsIDM4LCA3MSwgNDAsIDIxMSwgODAsIDcxLCA0MCwgMjA0LCAKLSAgICA4MCwgNzEsIDQwLCAyMzksIDI0OSwgNzEsIDQwLCAyNDYsIDM0LCA3MSwgNDAsIDI0MCwgNjcsIDcxLCA0MCwgNTIsIDIwMywgCi0gICAgMTk2LCA3MSwgNDAsIDE2MiwgMjA4LCA5NiwgMjA4LCAyNSwgNzEsIDQwLCAyMTIsIDUwLCA3MSwgNDAsIDI0MCwgNzksIDcxLCAKLSAgICA0MCwgMjQ1LCAxNDksIDcxLCA0MCwgMjQzLCAxMDIsIDcxLCA0MCwgMjE3LCAyMjMsIDcxLCA0MCwgMjMwLCAxNzYsIDcxLCAKLSAgICA0MCwgMjI0LCAyNDksIDcxLCA0MCwgMjA4LCAyMjYsIDcxLCA0MCwgMjEwLCAxNjQsIDcxLCA0MCwgMjI3LCAxMzcsIDcxLCAKLSAgICA0MCwgMjA2LCAxOTEsIDcxLCA0MCwgMjQwLCAyNCwgNzEsIDQwLCAyNDgsIDE1LCA3NiwgMjQ2LCAxMCwgNzEsIDQwLCAyMTIsIAotICAgIDE1OCwgNzEsIDQwLCAyNDIsIDgzLCAyMDksIDE0NCwgNzEsIDQwLCAyMDQsIDMzLCA3MSwgNDAsIDIxMiwgNjUsIDcxLCA0MCwgCi0gICAgMjQzLCAxNTYsIDcxLCA0MCwgMjQwLCAxOTEsIDcxLCA0MCwgMjExLCAyMTQsIDcxLCA0MCwgNDcsIDcxLCA0MCwgMjExLCAKLSAgICA2MywgNzEsIDQwLCAyMTEsIDE5OCwgNzEsIDQwLCAyMDgsIDExOCwgNzEsIDQwLCAyMzgsIDEwLCA3MSwgNDAsIDI0NywgMTAsIAotICAgIDcxLCA0MCwgMjExLCA5OCwgNzEsIDQwLCAyNDgsIDI0NCwgNzEsIDQwLCAyMTYsIDUyLCA3MSwgNDAsIDIxMiwgMTM0LCA3MSwgCi0gICAgNDAsIDIzMCwgMTY4LCA3MSwgNDAsIDIyMiwgMjE5LCA3MSwgNDAsIDIxMywgMzcsIDcxLCA0MCwgMjQwLCA1NSwgNzEsIDQwLCAKLSAgICAyMjAsIDQ1LCA3MSwgNDAsIDI1MCwgMjI2LCA3MSwgNDAsIDIxOCwgODMsIDcxLCA0MCwgMjQxLCAxODMsIDcxLCA0MCwgCi0gICAgMjQ3LCAyMDAsIDcxLCA0MCwgMjI1LCAxNSwgNzEsIDQwLCAyMjQsIDEwNCwgNzEsIDQwLCAyMTMsIDE0OSwgNzEsIDQwLCAKLSAgICAyNTAsIDk4LCA3MSwgNDAsIDIyNCwgMjQsIDcxLCA0MCwgMjA4LCAxNTAsIDcxLCA0MCwgMjE5LCAyNTIsIDcxLCA0MCwgCi0gICAgMjQ4LCAxOSwgNzEsIDQwLCAyMTEsIDU5LCA3MSwgNDAsIDI0NSwgMjQxLCA3MSwgNDAsIDIzOCwgMCwgNzEsIDQwLCAyMDgsIAotICAgIDI0NSwgNzEsIDQwLCAyMzEsIDksIDcxLCA0MCwgMjQ4LCAzMSwgNzEsIDQwLCAyMDQsIDEwMiwgMjQxLCA4NywgNzEsIDQwLCAKLSAgICAyNDYsIDksIDcxLCA0MCwgMjA0LCA0NSwgNzEsIDQwLCAyMTQsIDE2NSwgNzEsIDQwLCAyMzYsIDUzLCA3MSwgNDAsIDIxMSwgCi0gICAgMjExLCA3MSwgNDAsIDIwNiwgNzksIDcxLCA0MCwgMjQ4LCAxNTcsIDcxLCA0MCwgMjE4LCAxMzEsIDcxLCA0MCwgMjQ5LCAKLSAgICAxMywgNzEsIDQwLCAyMTMsIDMyLCA3MSwgNDAsIDIxNiwgMTM3LCA3MSwgNDAsIDIxNSwgMTI4LCA3MSwgNDAsIDIzOSwgCi0gICAgMTcyLCA3MSwgNDAsIDI0OCwgMTcsIDcxLCA0MCwgMjQ3LCAyMywgNzEsIDQwLCAyNDgsIDQ4LCA3MSwgNDAsIDIyNCwgMjYsIAotICAgIDcxLCA0MCwgMjA0LCAxMDEsIDcxLCA0MCwgMjQ2LCA0NywgNzEsIDQwLCAyMDQsIDEyLCA3MSwgNDAsIDI0MywgMTQ5LCA3MSwgCi0gICAgNDAsIDIwNSwgMjE0LCA3MSwgNDAsIDIzOCwgMzEsIDcxLCA0MCwgMjI3LCAyOCwgNzEsIDQwLCAyMzgsIDIxNiwgNzEsIDQwLCAKLSAgICAyMjQsIDE1LCA3MSwgNDAsIDIxMiwgNTYsIDcxLCA0MCwgMjEyLCAyMjgsIDIwOSwgMjQ3LCAyNDgsIDYwLCA3MSwgNDAsIAotICAgIDIxNiwgMTkwLCA3MSwgNDAsIDI0OCwgMjUsIDcxLCA0MCwgMjAzLCAyMTksIDcxLCA0MCwgMjQwLCAxMDIsIDcxLCA0MCwgCi0gICAgMjI3LCAyMjgsIDcxLCA0MCwgMjA5LCAyMjQsIDIyNywgMjI4LCA3MSwgNDAsIDIyNywgMjI0LCA3MSwgNDAsIDIxMSwgMjQwLCAKLSAgICA3MSwgNDAsIDIyNywgMjI5LCA3MSwgNDAsIDIwNCwgMTYsIDcxLCA0MCwgMjM5LCAxOTAsIDcxLCA0MCwgMjQxLCAxNzIsIAotICAgIDcxLCA0MCwgMjM3LCA2NCwgNzEsIDQwLCAyMzksIDEzNiwgNzEsIDQwLCAyMzYsIDQ5LCA3MSwgNDAsIDI0OCwgMTEsIDcxLCAKLSAgICA0MCwgMjA5LCAyMzMsIDcxLCA0MCwgMjM3LCAxNDUsIDcxLCA0MCwgMjQwLCAxNywgNzEsIDQwLCAyMTUsIDMwLCAyMDQsIAotICAgIDEyLCA3MSwgNDAsIDI0NywgMTIsIDcxLCA0MCwgMjM4LCA4OSwgNzEsIDQwLCAyMzksIDI0MywgNzEsIDQwLCAyNDgsIDYwLCAKLSAgICA3MSwgNDAsIDIxNSwgMSwgNzEsIDQwLCAyNDQsIDU4LCA3MSwgNDAsIDIwNCwgMzgsIDcxLCA0MCwgMjM3LCAzNCwgNzEsIAotICAgIDQwLCAyMDMsIDQ0LCA3MSwgNDAsIDIyNCwgMTE1LCA3MSwgNDAsIDI0OCwgNDMsIDcxLCA0MCwgMjQxLCA5OSwgNzEsIDQwLCAKLSAgICAyMzksIDEyMSwgNzEsIDQwLCAyMDgsIDY3LCA3MSwgNDAsIDI0MiwgNDYsIDcxLCA0MCwgMjE2LCAxNzIsIDcxLCA0MCwgCi0gICAgMjIxLCAxNjcsIDcxLCA0MCwgMjQwLCAyMjQsIDcxLCA0MCwgMjA4LCAxNDYsIDcxLCA0MCwgMjQyLCA2MSwgNzEsIDQwLCAKLSAgICAyMDcsIDE3MSwgNzEsIDQwLCAyMzksIDE5MywgMTM5LCAyNDQsIDE4LCAxNjcsIDQ5LCAyMDgsIDE3MywgMjE2LCAxNiwgCi0gICAgMTM5LCAyNDQsIDE4LCAxNjcsIDg3LCAyMDgsIDE3MywgNTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCA0OSwgMjA4LCAxNzMsIAotICAgIDEwMSwgMjUsIDIxNiwgMTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCA4NywgMjA4LCAxNzMsIDEwMSwgMjUsIDU2LCAxMzksIDI0NCwgCi0gICAgMTgsIDE2NywgMjM5LCAxMDIsIDIxMCwgMTg2LCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCA1NSwgCi0gICAgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgNTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgCi0gICAgMjM5LCAxMjAsIDIyNywgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMDYsIDIyMSwgMjI3LCAKLSAgICAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDIwNiwgMjIxLCAyMTYsIDE2LCAxMzksIDI0NCwgCi0gICAgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMjYsIDI1MSwgMjI3LCAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTksIAotICAgIDIwMiwgMTM5LCAyMTEsIDIyOCwgMTM5LCAyNDUsIDIzMywgMTM5LCAyMzksIDEwMiwgMjExLCA2MSwgMjQzLCAxNDYsIDgyLCAKLSAgICAyMzAsIDE2OSwgMjMxLCAyOSwgMjExLCA5NywgOTcsIDEzOSwgMjMwLCAxOTksIDgyLCAxMzksIDI0NiwgMTIsIDgyLCAxMzksIAotICAgIDQyLCAyMDIsIDg0LCA0OSwgMjUwLCAyMTgsIDE1NSwgNTAsIDI1MCwgMjE4LCAxNTUsIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgCi0gICAgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCA0OSwgMjQ1LCAxNjYsIDE1NSwgNTAsIDI0NSwgMTY2LCAxNTUsIDQ5LCA2MSwgMjQ1LCAKLSAgICAxNjYsIDE1NSwgNTAsIDYxLCAyNDUsIDE2NiwgMTU1LCA0OSwgNjIsIDIyNywgMTg1LCAxNTUsIDUwLCA2MiwgMjI3LCAxODUsIAotICAgIDE1NSwgMjE4LCAyOSwgODIsIDIzOCwgMTU4LCA4MiwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCAyMDgsIDEzMywgCi0gICAgMjEzLCAzMywgMTU1LCA0OSwgNjEsIDIyNywgMTg1LCAxNTUsIDUwLCA2MSwgMjI3LCAxODUsIDE1NSwgNDksIDYxLCAyMDgsIAotICAgIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgNjEsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDQ5LCA2MSwgNTEsIDE1NSwgNTAsIAotICAgIDYxLCA1MSwgMTU1LCAyMDQsIDc2LCAyNDQsIDE0NCwgMjE2LCA3MywgNTIsIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgNTIsIAotICAgIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgMTI0LCA1MiwgMjE3LCAyMzcsIDIxNywgMzEsIDgyLCAyMTgsIDI5LCAxMzEsIDI0MCwgCi0gICAgMTAyLCAyMzcsIDk3LCAyMjEsIDQ0LCAxMDUsIDIzNywgOTcsIDIyMSwgNDQsIDEwOCwgMjM3LCA5NywgMjIxLCA0NCwgMTQ3LCAKLSAgICAyMzcsIDk3LCAyMjEsIDQ0LCAxNDksIDIzNywgOTcsIDIyMSwgNDQsIDE3MCwgMjM3LCA5NywgMjIxLCA0NCwgMTk1LCAyMzcsIAotICAgIDk3LCAyMjEsIDQ0LCAyMTMsIDExMSwgMjM3LCA5NywgMjIxLCA0NCwgMTk5LCAyMzcsIDk3LCAyMjEsIDQ0LCAyMjIsIDYzLCAKLSAgICAxMzksIDIyNywgMTY3LCAxNDMsIDgyLCAxMzksIDIxNSwgMjQ1LCAxNDMsIDgyLCAxMzksIDI0NCwgMjcsIDE0MywgODIsIAotICAgIDEzOSwgMjQxLCA2NiwgMTQzLCA4MiwgMjgsIDIxMiwgMTIwLCA3MCwgMTQzLCA4MiwgMjgsIDUyLCA3MCwgMTQzLCA4MiwgCi0gICAgMjA0LCA3MiwgMjQ0LCAxNDQsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCA4MiwgODAsIDIzMCwgMywgMjE2LCAxMDEsIDMsIAotICAgIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAxMzEsIDIwNiwgMjIxLCAyMzcsIDEzNywgCi0gICAgODAsIDIzMCwgMywgMjE2LCAxMDEsIDMsIDIwNSwgMTg2LCAyMTEsIDI0MSwgMTMxLCAyMDYsIDIyMSwgMjM3LCAxMzcsIDgwLCAKLSAgICAyMzAsIDMsIDIxNiwgMTAxLCAxMzEsIDIyNiwgMjUxLCAyMzcsIDEzNywgNDMsIDIxOCwgMjksIDgyLCAxMzksIDIwOSwgCi0gICAgMTY0LCAyMjcsIDExNSwgMjQwLCA1MiwgMjEzLCAxMzEsIDk3LCAyMzcsIDk3LCAyMjEsIDQ0LCAyMDksIDE1MiwgMjM3LCAKLSAgICA5NywgMjIxLCA0NCwgMjA3LCAxNTEsIDIzNywgOTcsIDIyMSwgNDQsIDIwOSwgNTMsIDgwLCAxMzksIDIzMCwgMTk5LCA4MiwgCi0gICAgMjI1LCA3MiwgODIsIDIxOSwgNzEsIDI1MCwgMjUxLCA4MiwgMTM5LCA1NywgMjMxLCAzMSwgMTM5LCAxNjIsIDI0MCwgMTAsIAotICAgIDIxMSwgMjI4LCAxNzIsIDEsIDUsIDYzLCAxNzIsIDEsIDYzLCAxNzIsIDEsIDUsIDc1LCAxNzIsIDEsIDc1LCAxNzIsIDEsIAotICAgIDUsIDY4LCAxNzIsIDEsIDY4LCAxNzIsIDEsIDUsIDc0LCAxNzIsIDEsIDc0LCAxNzIsIDEsIDUsIDc4LCAxNzIsIDEsIDc4LCAKLSAgICAxNzIsIDEsIDE3MywgMTcyLCAxLCAyMzksIDgsIDE3MiwgMSwgMjI5LCAxMDAsIDE3MiwgMSwgMjM4LCA4MSwgMTcyLCAxLCAKLSAgICAyMjgsIDIwOSwgMTcyLCAxLCAyMzcsIDIzMCwgMTcyLCAxLCAyMjksIDIwMSwgMTcyLCAxLCAyMzgsIDE5MCwgMTcyLCAxLCAKLSAgICAyMjksIDI2LCAxNzIsIDEsIDIzOCwgMzksIDE3MiwgMSwgMjE1LCAzNiwgMTcyLCAxLCAyMDIsIDExNiwgMTcyLCAxLCAyMTIsIAotICAgIDE2MiwgMTcyLCAxLCAyMDIsIDM5LCAxNzIsIDEsIDIxMSwgMTAsIDE3MiwgMSwgMjAyLCA2LCAxNzIsIDEsIDIxNCwgMTc3LCAKLSAgICAxNzIsIDEsIDIwMiwgOTIsIDE3MiwgMSwgMjEyLCAxMywgMTcyLCAxLCAyMDIsIDE3LCAxNzIsIDEsIDIxMCwgMjIsIDE3MiwgCi0gICAgMSwgMjQ0LCAyMTIsIDE3MiwgMSwgMjA5LCAyLCAxNzIsIDEsIDI0MywgMjMzLCAxNzIsIDEsIDUsIDIwNywgMjAzLCAxNzIsIAotICAgIDEsIDIwNywgMjAzLCAxNzIsIDEsIDI0MiwgNDIsIDE3MiwgMSwgMjA5LCAxODcsIDE3MiwgMSwgMjQ0LCA3NSwgMTcyLCAxLCAKLSAgICAxMzUsIDE3MiwgMSwgMjQzLCAxMTMsIDE3MiwgMSwgMjAxLCAyMDEsIDE3MiwgMSwgMjIyLCAxMDAsIDE3MiwgMSwgMjIxLCAKLSAgICA4NCwgMTcyLCAxLCAyMjIsIDI0MCwgMTcyLCAxLCAyMjEsIDE5MSwgMTcyLCAxLCAxNTIsIDE3MiwgMSwgMjQ5LCAzMiwgCi0gICAgMTcyLCAxLCAxODUsIDE3MiwgMSwgMjM3LCAzLCAxNzIsIDEsIDI0OCwgODYsIDE3MiwgMSwgMjE4LCAxNjcsIDE3MiwgMSwgCi0gICAgMjM2LCAyNiwgMTcyLCAxLCAyNDcsIDE5MywgMTcyLCAxLCAyMTcsIDE5MSwgMTcyLCAxLCAyMzcsIDY3LCAxNzIsIDEsIAotICAgIDI0OCwgMTYyLCAxNzIsIDEsIDIxOSwgMzQsIDE3MiwgMSwgMjM2LCAxMzYsIDE3MiwgMSwgMjQ4LCAyMywgMTcyLCAxLCAKLSAgICAyMTgsIDY5LCAxNzIsIDEsIDE5MiwgMTcyLCAxLCAyMjQsIDE1NSwgMTcyLCAxLCAyMjMsIDI0NiwgMTcyLCAxLCAyMjUsIAotICAgIDIwLCAxNzIsIDEsIDIyNCwgODIsIDE3MiwgMSwgNSwgMTk4LCAxNzIsIDEsIDE5OCwgMTcyLCAxLCA1LCAyMDIsIDIxMywgCi0gICAgMTcyLCAxLCAyMDIsIDIxMywgMTcyLCAxLCA1LCAyMDIsIDI0NywgMTcyLCAxLCAyMDIsIDI0NywgMTcyLCAxLCAyMTYsIAotICAgIDIyMCwgMTcyLCAxLCAyMTYsIDU3LCAxNzIsIDEsIDIxNSwgMTQ1LCAxNzIsIDEsIDIxNiwgMTU4LCAxNzIsIDEsIDIxNSwgCi0gICAgMjI3LCAxNzIsIDEsIDUsIDIwNCwgMTExLCAxNzIsIDEsIDIwNCwgMTExLCAxNzIsIDEsIDIwNCwgMzAsIDE3MiwgMSwgMjA0LCAKLSAgICA2MiwgMTcyLCAxLCAyMDQsIDAsIDE3MiwgMSwgMjIzLCAxNjMsIDE3MiwgMSwgMjA0LCAxNjMsIDE3MiwgMSwgNSwgMTczLCAKLSAgICAxNzIsIDEsIDUsIDIyOSwgMjAxLCAzOSwgMjI5LCAyMjUsIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDM5LCAyMjksIDIyNSwgCi0gICAgMjEzLCAxNDgsIDIxMSwgMjQxLCA4MiwgMjI5LCAyMjUsIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDIyOSwgMjI1LCAyMTMsIAotICAgIDE0OCwgMjExLCAyNDEsIDgyLCAxNzIsIDIzMCwgMTk5LCA4MiwgMTcyLCAyMDUsIDE4NiwgMjMwLCAxOTksIDgyLCAxNzIsIAotICAgIDI0MywgMTkyLCAyMDIsIDIyOCwgMjI5LCAyMjUsIDUyLCAyMzUsIDIyMCwgNjcsIDEsIDUsIDYzLCA2NywgMSwgNjMsIDY3LCAKLSAgICAxLCA1LCA3NSwgNjcsIDEsIDc1LCA2NywgMSwgNSwgNjgsIDY3LCAxLCA2OCwgNjcsIDEsIDUsIDc0LCA2NywgMSwgNzQsIAotICAgIDY3LCAxLCA1LCA3OCwgNjcsIDEsIDc4LCA2NywgMSwgMTczLCA2NywgMSwgMjM5LCA4LCA2NywgMSwgMjI5LCAxMDAsIDY3LCAKLSAgICAxLCAyMzgsIDgxLCA2NywgMSwgMjI4LCAyMDksIDY3LCAxLCAyMzcsIDIzMCwgNjcsIDEsIDIyOSwgMjAxLCA2NywgMSwgCi0gICAgMjM4LCAxOTAsIDY3LCAxLCAyMjksIDI2LCA2NywgMSwgMjM4LCAzOSwgNjcsIDEsIDIxNSwgMzYsIDY3LCAxLCAyMDIsIAotICAgIDExNiwgNjcsIDEsIDIxMiwgMTYyLCA2NywgMSwgMjAyLCAzOSwgNjcsIDEsIDIxMSwgMTAsIDY3LCAxLCAyMDIsIDYsIDY3LCAKLSAgICAxLCAyMTQsIDE3NywgNjcsIDEsIDIwMiwgOTIsIDY3LCAxLCAyMTIsIDEzLCA2NywgMSwgMjAyLCAxNywgNjcsIDEsIDIxMCwgCi0gICAgMjIsIDY3LCAxLCAyNDQsIDIxMiwgNjcsIDEsIDIwOSwgMiwgNjcsIDEsIDI0MywgMjMzLCA2NywgMSwgNSwgMjA3LCAyMDMsIAotICAgIDY3LCAxLCAyMDcsIDIwMywgNjcsIDEsIDI0MiwgNDIsIDY3LCAxLCAyMDksIDE4NywgNjcsIDEsIDI0NCwgNzUsIDY3LCAxLCAKLSAgICAxMzUsIDY3LCAxLCAyNDMsIDExMywgNjcsIDEsIDIwMSwgMjAxLCA2NywgMSwgMjIyLCAxMDAsIDY3LCAxLCAyMjEsIDg0LCAKLSAgICA2NywgMSwgMjIyLCAyNDAsIDY3LCAxLCAyMjEsIDE5MSwgNjcsIDEsIDE1MiwgNjcsIDEsIDI0OSwgMzIsIDY3LCAxLCAxODUsIAotICAgIDY3LCAxLCAyMzcsIDMsIDY3LCAxLCAyNDgsIDg2LCA2NywgMSwgMjE4LCAxNjcsIDY3LCAxLCAyMzYsIDI2LCA2NywgMSwgCi0gICAgMjQ3LCAxOTMsIDY3LCAxLCAyMTcsIDE5MSwgNjcsIDEsIDIzNywgNjcsIDY3LCAxLCAyNDgsIDE2MiwgNjcsIDEsIDIxOSwgCi0gICAgMzQsIDY3LCAxLCAyMzYsIDEzNiwgNjcsIDEsIDI0OCwgMjMsIDY3LCAxLCAyMTgsIDY5LCA2NywgMSwgMTkyLCA2NywgMSwgCi0gICAgMjI0LCAxNTUsIDY3LCAxLCAyMjMsIDI0NiwgNjcsIDEsIDIyNSwgMjAsIDY3LCAxLCAyMjQsIDgyLCA2NywgMSwgNSwgMTk4LCAKLSAgICA2NywgMSwgMTk4LCA2NywgMSwgNSwgMjAyLCAyMTMsIDY3LCAxLCAyMDIsIDIxMywgNjcsIDEsIDUsIDIwMiwgMjQ3LCA2NywgCi0gICAgMSwgMjAyLCAyNDcsIDY3LCAxLCAyMTYsIDIyMCwgNjcsIDEsIDIxNiwgNTcsIDY3LCAxLCAyMTUsIDE0NSwgNjcsIDEsIAotICAgIDIxNiwgMTU4LCA2NywgMSwgMjE1LCAyMjcsIDY3LCAxLCA1LCAyMDQsIDExMSwgNjcsIDEsIDIwNCwgMTExLCA2NywgMSwgCi0gICAgMjA0LCAzMCwgNjcsIDEsIDIwNCwgNjIsIDY3LCAxLCAyMDQsIDAsIDY3LCAxLCAyMjMsIDE2MywgNjcsIDEsIDIwNCwgMTYzLCAKLSAgICA2NywgMSwgNSwgMTczLCA2NywgMSwgNSwgMjI5LCAyMDEsIDY3LCAxLCAyMDYsIDg2LCA2NywgMSwgMjA1LCAyMzAsIDY3LCAKLSAgICAxLCAyMDYsIDU1LCA2NywgMSwgMjA1LCAxODksIDY3LCAxMDEsIDI0MywgODUsIDIyOSwgMjI1LCAyMTcsIDIxNSwgMjExLCAKLSAgICAyNDEsIDgyLCA2NywgMjMwLCAxOTksIDgyLCA2NywgMjA1LCAxODYsIDIzMCwgMTk5LCA4MiwgNjcsIDI0MywgMTkyLCAyMjgsIAotICAgIDI0OSwgMjQ4LCAxLCAxLCAyNDksIDI1NSwgMjQ4LCAxLCAxLCAyMTksIDE4NCwgMjQ4LCAxLCAxLCAyMjYsIDE4NSwgMjQ4LCAKLSAgICAxLCAxLCAyNDAsIDE3NCwgMjQ4LCAxLCAxLCAyNDUsIDUxLCAyNDgsIDEsIDEsIDIxMCwgNjksIDI0OCwgMSwgMSwgMjIzLCAKLSAgICAxNjMsIDI0OCwgMSwgMSwgMTU5LCAyNDgsIDEsIDEsIDIzOSwgNzUsIDI0OCwgMSwgMSwgMjMwLCA1NCwgMjQ4LCAxLCAxLCAKLSAgICAyMzcsIDE3MSwgMjQ4LCAxLCAxLCAyMzAsIDE4NCwgMjQ4LCAxLCAxLCAyMTcsIDEzNCwgMjQ4LCAxLCAxLCAyMDMsIDE5NiwgCi0gICAgMjQ4LCAxLCAxLCAyMDIsIDgxLCAyNDgsIDEsIDEsIDI0NiwgMjAwLCAyNDgsIDEsIDEsIDIxMywgOTIsIDI0OCwgMSwgMSwgCi0gICAgMTQ2LCAyNDgsIDEsIDEsIDIwMiwgMTU5LCAyNDgsIDEsIDEsIDI0NywgMTI1LCAyNDgsIDEsIDEsIDE5NCwgMjQ4LCAxLCAxLCAKLSAgICA2MywgMjQ4LCAxLCAxLCA3OCwgMjQ4LCAxLCAxLCA3NCwgMjQ4LCAxLCAxLCAyNDEsIDE0NywgMjQ4LCAxLCAxLCAyNTEsIAotICAgIDY0LCAyNDgsIDEsIDEsIDI0MSwgMTQ1LCAyNDgsIDEsIDEsIDI1MCwgMzQsIDI0OCwgMSwgMSwgMjE5LCAyMTYsIDI0OCwgMSwgCi0gICAgMSwgMjUwLCAyMzEsIDI0OCwgMSwgMSwgMjQxLCA5MiwgMjQ4LCAxLCAxLCAyNTAsIDIyMywgMjQ4LCAxLCAxLCAyNDEsIDc4LCAKLSAgICAyNDgsIDEsIDEsIDI0MSwgMjgsIDI0OCwgMSwgMSwgNzUsIDI0OCwgMSwgMSwgNjgsIDI0OCwgMSwgMSwgMjMwLCAxOTcsIAotICAgIDI0OCwgMSwgMSwgMjA2LCAxNjQsIDI0OCwgMSwgMSwgMjIyLCAyMDUsIDI0OCwgMSwgMSwgMjM4LCA0MywgMjQ4LCAxLCAxLCAKLSAgICAyMzEsIDg0LCAyOCwgMSwgMjI5LCA1OSwgMjgsIDEsIDIxMSwgMTU2LCAyOCwgMSwgMjI5LCA1MiwgMjgsIDEsIDIyMiwgOTMsIAotICAgIDI4LCAxLCAyMjIsIDkxLCAyOCwgMSwgMjIyLCA5MCwgMjgsIDEsIDIwOCwgMjQwLCAyOCwgMSwgMjExLCAxNDUsIDI4LCAxLCAKLSAgICAyMTYsIDQ3LCAyOCwgMSwgMjE2LCA0MiwgMjgsIDEsIDIxNiwgMzksIDI4LCAxLCAyMTYsIDMyLCAyOCwgMSwgMjE2LCAyNywgCi0gICAgMjgsIDEsIDIxNiwgMjIsIDI4LCAxLCAyMTYsIDMzLCAyOCwgMSwgMjE2LCA0NSwgMjgsIDEsIDIyNCwgMTQxLCAyOCwgMSwgCi0gICAgMjE4LCAxNTMsIDI4LCAxLCAyMTEsIDE1MywgMjgsIDEsIDIxOCwgMTQyLCAyOCwgMSwgMjEyLCAxMTEsIDI4LCAxLCAyMTEsIAotICAgIDE1MCwgMjgsIDEsIDIzMSwgMTA2LCAyOCwgMSwgMjQ2LCA3NCwgMjgsIDEsIDIxMSwgMTYwLCAyOCwgMSwgMjQ2LCAxMzgsIAotICAgIDI4LCAxLCAyMjksIDEyMCwgMjgsIDEsIDIwOSwgNjYsIDI4LCAxLCAyMTgsIDE5MCwgMjgsIDEsIDIzNiwgMjUxLCAyOCwgMSwgCi0gICAgNjMsIDI4LCAxLCAyNTEsIDEwOSwgMjgsIDEsIDE5OCwgMjgsIDEsIDIwMywgOTksIDI4LCAxLCAyNDEsIDU1LCAyOCwgMSwgCi0gICAgNzQsIDI4LCAxLCAyMDMsIDM5LCAyOCwgMSwgMjAzLCA1MiwgMjgsIDEsIDc4LCAyOCwgMSwgMjA0LCAxMTEsIDI4LCAxLCAKLSAgICAyMDQsIDEwNywgMjgsIDEsIDIyMCwgNzMsIDI4LCAxLCAyMDIsIDI0NywgMjgsIDEsIDY4LCAyOCwgMSwgMjA0LCA0OCwgMjgsIAotICAgIDEsIDIwNCwgNjIsIDI4LCAxLCAyMDQsIDMwLCAyOCwgMSwgMjAyLCAyMTMsIDI4LCAxLCAyNDAsIDIzOCwgMjgsIDEsIDIwMywgCi0gICAgMTEsIDI4LCAxLCA3NSwgMjgsIDI0MCwgNywgMjgsIDEsIDIxMSwgMTU0LCAyOCwgMSwgMjIyLCA4MywgMjgsIDEsIDIyMiwgCi0gICAgODUsIDI4LCAxLCAyMjIsIDg4LCAyOCwgMSwgMjE2LCA0MCwgMjgsIDEsIDIxNiwgMjEsIDI4LCAxLCAyMTYsIDI5LCAyOCwgCi0gICAgMSwgMjE2LCAzNCwgMjgsIDEsIDIxNiwgMTksIDI4LCAxLCAyMjQsIDEzNCwgMjgsIDEsIDIyNCwgMTMxLCAyOCwgMSwgMjI0LCAKLSAgICAxMzUsIDI4LCAxLCAyMjksIDI0NiwgMjgsIDEsIDIxOCwgMTQ4LCAyOCwgMSwgMjE4LCAxMzQsIDI4LCAxLCAyMTgsIDE0MCwgCi0gICAgMjgsIDEsIDIxOCwgMTM3LCAyOCwgMSwgMjE4LCAxNTEsIDI4LCAxLCAyMTgsIDEzNSwgMjgsIDEsIDIyOSwgMjQ0LCAyOCwgCi0gICAgMSwgMjI5LCAyNDIsIDI4LCAxLCAyMTIsIDEwNCwgMjgsIDEsIDIxMiwgMTAyLCAyOCwgMSwgMjEyLCA5NCwgMjgsIDEsIAotICAgIDIxMiwgOTksIDI4LCAxLCAyMTIsIDEwOSwgMjgsIDEsIDIxOSwgMTA3LCAyOCwgMSwgMjExLCAxNTcsIDI4LCAxLCAyMDMsIAotICAgIDI5LCAyOCwgMSwgMjAzLCAyNSwgMjgsIDEsIDIwMywgMjYsIDI4LCAxLCAyMjksIDI0NSwgMjgsIDEsIDIxMSwgMTU4LCAyOCwgCi0gICAgMSwgMjAzLCAzNSwgMjgsIDEsIDIwMiwgMjQxLCAyOCwgMSwgMjAyLCAyNDAsIDI4LCAxLCAyMDIsIDI0MywgMjgsIDEsIAotICAgIDIwMiwgMjA0LCAyOCwgMSwgMjAyLCAyMDUsIDI4LCAxLCAyMDIsIDIwOCwgMjgsIDEsIDI1MCwgMTM3LCAyOCwgMSwgMjUwLCAKLSAgICAxMzEsIDEzOSwgMjUwLCAyMDUsIDIyNywgMTAzLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjE2LCA3NCwgODIsIDEzOSwgMjUwLCAKLSAgICAyMDUsIDExOCwgODIsIDEzOSwgMjUwLCAyMDUsIDEyMCwgODIsIDEzOSwgMjUwLCAyMDUsIDEyNiwgODIsIDEzOSwgMjUwLCAKLSAgICAyMDUsIDIzOSwgMTQ3LCA4MiwgMTM5LCAyNTAsIDIwNSwgMjA4LCAxNDUsIDgyLCAxMzksIDI1MCwgMjA1LCAxMDEsIDgyLCAKLSAgICAxMzksIDI1MCwgMjA1LCAyNDcsIDI0OCwgODIsIDEzOSwgMjUwLCAyMDUsIDIzOSwgMjQ1LCA4MiwgMTM5LCAyNTAsIDIwNSwgCi0gICAgMjE0LCAxNzEsIDgyLCAxMzksIDI1MCwgMjA1LCAyMDksIDYxLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjM5LCAxNDAsIDgyLCAKLSAgICAxMzksIDI1MCwgMjA1LCAyMzcsIDUyLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjQxLCAxODAsIDgyLCAxMzksIDI1MCwgMjA1LCAKLSAgICAyMjUsIDEyMywgODIsIDI0OCwgMSwgMSwgMjQ3LCAxOTMsIDI0OCwgMSwgMSwgMjAyLCAzOSwgMjQ4LCAxLCAxLCAyMzAsIAotICAgIDE0MSwgMjQ4LCAxLCAxLCAyMzcsIDIzMCwgMjQ4LCAxLCAxLCAyNDEsIDE2MSwgMjQ4LCAxLCAxLCAyNDEsIDc1LCAyNDgsIAotICAgIDEsIDEsIDIyMCwgMTgsIDI0OCwgMSwgMSwgMjIwLCAyMiwgMjQ4LCAxLCAxLCAyMzAsIDIyNCwgMjQ4LCAxLCAxLCAyNTAsIAotICAgIDIwNywgMjQ4LCAxLCAxLCAyMzEsIDE2LCAyNDgsIDEsIDEsIDIwNiwgMjI5LCAyNDgsIDEsIDEsIDIzMSwgNjYsIDI0OCwgMSwgCi0gICAgMSwgMjIyLCAxODMsIDI0OCwgMSwgMSwgMjUxLCA1OCwgMjQ4LCAxLCAxLCAyNTAsIDI5LCAyNDgsIDEsIDEsIDI1MCwgMjQ3LCAKLSAgICAyNDgsIDEsIDEsIDIyMCwgMzksIDI0OCwgMSwgMSwgMjIwLCAyNCwgMjQ4LCAxLCAxLCAyMzEsIDEzLCAyNDgsIDEsIDQ2LCAKLSAgICAxLCAyMTksIDE4NCwgMjQ4LCAxLCA0NiwgMSwgMjEwLCA2OSwgMjQ4LCAxLCA0NiwgMSwgMjMwLCA1NCwgMjQ4LCAxLCA0NiwgCi0gICAgMSwgMjM3LCAxNzEsIDI0OCwgMSwgMSwgMjM4LCAxMjAsIDI0OCwgMSwgMSwgMjI3LCAxNjIsIDI0OCwgMSwgMSwgMjAxLCAKLSAgICAyNDIsIDEyLCAyMTEsIDMyLCAyMTAsIDY5LCAxMiwgMjExLCAzMiwgMjA0LCA0MSwgMTIsIDIxMSwgMzIsIDIwMywgMTcxLCAKLSAgICAxMiwgMjExLCAzMiwgMjQ3LCAxMzgsIDEyLCAyMTEsIDMyLCAyMTAsIDE3MywgMTIsIDIxMSwgMzIsIDIzNSwgMjEwLCAxMiwgCi0gICAgMjExLCAzMiwgMjM1LCAyMTQsIDEyLCAyMTEsIDMyLCAyMzYsIDM1LCAxMiwgMjExLCAzMiwgMjM1LCAyMTEsIDEyLCAyMTEsIAotICAgIDMyLCAyMTAsIDcyLCAxMiwgMjExLCAzMiwgMjM1LCAyMTMsIDEyLCAyMTEsIDMyLCAyMzUsIDIwOSwgMTIsIDIxMSwgMzIsIAotICAgIDIzNiwgMzMsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMiwgMTIsIDIxMSwgMzIsIDIzNSwgMjA4LCAxMiwgMjExLCAzMiwgMjIzLCAKLSAgICAxNjMsIDEyLCAyMTEsIDMyLCAyMzcsIDE3MSwgMTIsIDIxMSwgMzIsIDE5NCwgMTIsIDIxMSwgMzIsIDIxOSwgMTg0LCAxMiwgCi0gICAgMjExLCAzMiwgMjExLCAyMzEsIDEyLCAyMTEsIDMyLCAyNDUsIDUxLCAxMiwgMjExLCAzMiwgMjM1LCAyMTUsIDEyLCAyMTEsIAotICAgIDMyLCAyMzcsIDEzLCAxMiwgMjExLCAzMiwgMjEwLCA4MSwgMTIsIDIxMSwgMzIsIDIxMCwgMTUyLCAxMiwgMjExLCAzMiwgCi0gICAgMjExLCAxMDgsIDEyLCAyMTEsIDMyLCAyMTMsIDk4LCAxMiwgMjExLCAzMiwgMjE5LCAzOCwgMTIsIDIxMSwgMzIsIDIxNywgCi0gICAgMTM2LCAxMiwgMjExLCAzMiwgMjA4LCAxNzQsIDEyLCAyMTEsIDMyLCAyMTAsIDcxLCAxMiwgMjExLCAzMiwgMjEwLCAxNjMsIAotICAgIDEyLCAyMTEsIDMyLCAyMzUsIDIyMywgMTIsIDIxMSwgMzIsIDIzNSwgMjA3LCAxMiwgMjExLCAzMiwgMjE4LCAyMTAsIDEyLCAKLSAgICAyMTEsIDMyLCAyMTcsIDEzNCwgNjcsIDEsIDUsIDIyOCwgMjA5LCA2NywgMSwgNSwgMjEyLCAxNjIsIDY3LCAxLCA1LCAyMTEsIAotICAgIDEwLCA2NywgMSwgNSwgMTM1LCA2NywgMSwgNSwgMjIxLCA4NCwgNjcsIDEsIDUsIDE1MiwgNjcsIDEsIDUsIDIzNywgMywgCi0gICAgNjcsIDEsIDUsIDIzNiwgMjYsIDY3LCAxLCA1LCAyMzcsIDY3LCA2NywgMSwgNSwgMjM2LCAxMzYsIDY3LCAxLCA1LCAyMjMsIAotICAgIDI0NiwgNjcsIDEsIDUsIDIxNiwgMjIwLCA2NywgMSwgNSwgMjE2LCA1NywgNjcsIDEsIDUsIDIxNSwgMTQ1LCA2NywgMSwgNSwgCi0gICAgMjE2LCAxNTgsIDY3LCAxLCA1LCAyMTUsIDIyNywgMTAyLCAyOCwgMjI5LCA1OSwgMTAyLCAyOCwgMjIyLCA5MywgMTAyLCAKLSAgICAyOCwgMjA4LCAyNDAsIDEwMiwgMjgsIDIxNiwgNDcsIDEwMiwgMjgsIDIyNCwgMTQxLCAxMDIsIDI4LCAyMTgsIDE1MywgCi0gICAgMTAyLCAyOCwgMjEyLCAxMTEsIDEwMiwgMjgsIDIzMSwgMTA2LCAxMDIsIDI4LCAyNDYsIDc0LCAxMDIsIDI4LCAyNDYsIAotICAgIDEzOCwgMTAyLCAyOCwgMjI5LCAxMjAsIDEwMiwgMjgsIDIwOSwgNjYsIDEwMiwgMjgsIDIxOCwgMTkwLCAxMDIsIDI4LCAKLSAgICAyMzYsIDI1MSwgMTAyLCAyOCwgMjI5LCA2MCwgNjMsIDEwMiwgMjgsIDIyMiwgOTQsIDYzLCAxMDIsIDI4LCAyMDgsIDI0MSwgCi0gICAgNjMsIDEwMiwgMjgsIDIxNiwgNDgsIDYzLCAxMDIsIDI4LCAyMjQsIDE0MiwgNjMsIDEwMiwgMjgsIDIxOCwgMTU0LCA2MywgCi0gICAgMTAyLCAyOCwgMjEyLCAxMTIsIDYzLCAxMDIsIDI4LCAyMzEsIDEwNywgNjMsIDEwMiwgMjgsIDI0NiwgNzUsIDYzLCAxMDIsIAotICAgIDI4LCAyNDYsIDEzOSwgNjMsIDEwMiwgMjgsIDIyOSwgMTIxLCA2MywgMTAyLCAyOCwgMjA5LCA2NywgNjMsIDEwMiwgMjgsIAotICAgIDIxOCwgMTkxLCA2MywgMTAyLCAyOCwgMjM2LCAyNTIsIDYzLCAxMDIsIDI4LCAyNDYsIDc1LCA2OCwgMTAyLCAyMjgsIDI1MywgCi0gICAgMTY3LCAyMjAsIDU0LCAxMDIsIDIyOCwgMjUzLCAxNjcsIDE1OCwgMjM2LCAyNiwgMTAyLCAxODksIDEwNSwgMTAyLCAxODksIAotICAgIDEwOCwgMTAyLCAxODksIDE0NywgMTAyLCAxODksIDE0OSwgMTAyLCAxODksIDE3MCwgMTAyLCAxODksIDE5NSwgMTAyLCAKLSAgICAxODksIDIxMywgMTExLCAxMDIsIDE4OSwgMTk5LCAxMDIsIDE4OSwgMjIyLCA2MywgMTAyLCAxODksIDIwOSwgMTUyLCAxMDIsIAotICAgIDE4OSwgMjI0LCAyOSwgMTAyLCAxODksIDIzOSwgMjQ5LCAxMDIsIDE4OSwgMjA0LCA4MCwgMTAyLCAxODksIDIwMywgMjQzLCAKLSAgICAxMDIsIDE4OSwgMjI0LCAyMjAsIDEwMiwgMTg5LCAyNDEsIDE3OSwgMTAyLCAxODksIDIxMCwgMjE0LCAxMDIsIDE4OSwgCi0gICAgMjExLCA2NCwgMTAyLCAxODksIDIzNywgNzQsIDEwMiwgMTg5LCAyMTIsIDksIDEwMiwgMTg5LCAyMjMsIDg0LCAxMDIsIAotICAgIDE4OSwgMjExLCAyMTMsIDEwMiwgMTg5LCAyNDAsIDQsIDEwMiwgMTg5LCAyNDUsIDIxMSwgMTAyLCAxODksIDIyOCwgMTAyLCAKLSAgICAxMDIsIDE4OSwgMjE2LCA5NSwgMTAyLCAxODksIDI0NywgNzEsIDEwMiwgMTg5LCAyMTEsIDE0LCAxMDIsIDE4OSwgMjEwLCAKLSAgICAxOTYsIDEwMiwgMTg5LCAyNDEsIDY1LCAxMDIsIDE4OSwgMjE2LCA4NywgMTAyLCAxODksIDI1MSwgMTAsIDEwMiwgMTg5LCAKLSAgICAyNDAsIDMzLCAxMDIsIDE4OSwgMjE2LCA4NSwgMTAyLCAxODksIDIxMywgMTQ5LCAxMDIsIDE4OSwgMjE2LCAxNTcsIDQzLCAKLSAgICAxODksIDIxNywgNDYsIDQzLCAxODksIDIyOSwgODMsIDQzLCAxODksIDIxNCwgMTk1LCA0MywgMTg5LCAyMjgsIDI0OSwgNDMsIAotICAgIDQyLCAyMDksIDE1MywgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIwNywgMTUyLCAyMjAsIDMyLCA2MiwgMjExLCAKLSAgICAxNzcsIDQzLCA0MiwgMjA5LCA1NCwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIzOSwgMTU0LCAyMjAsIDMyLCAKLSAgICA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjQwLCAxOSwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIxMiwgNzUsIAotICAgIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMTMsIDEwNiwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIAotICAgIDI0MSwgMTM1LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDIxOSwgNjcsIDU0LCA0MywgNDIsIDIwNywgMTUyLCAxMDUsIDQzLCAKLSAgICA0MiwgMjA3LCAxNTIsIDEwOCwgNDMsIDQyLCAyMDcsIDE1MiwgMTQ3LCA0MywgNDIsIDIwNywgMTUyLCAxNDksIDQzLCA0MiwgCi0gICAgMjA3LCAxNTIsIDE3MCwgNDMsIDQyLCAyMDcsIDE1MiwgMTk1LCA0MywgNDIsIDIwNywgMTUyLCAyMTMsIDExMSwgNDMsIDQyLCAKLSAgICAyMDcsIDE1MiwgMTk5LCA0MywgNDIsIDIwNywgMTUyLCAyMjIsIDYzLCA0MywgNDIsIDIwOSwgNTMsIDQzLCA0MiwgMjA5LCAKLSAgICA1NCwgMTA1LCA0MywgNDIsIDIwOSwgNTQsIDEwOCwgNDMsIDQyLCAyMDksIDU0LCAxNDcsIDQzLCA0MiwgMjA5LCA1NCwgCi0gICAgMTQ5LCA0MywgNDIsIDIwOSwgNTQsIDE3MCwgNDMsIDI4LCAyMjksIDU5LCA0MywgMjgsIDIyMiwgOTMsIDQzLCAyOCwgMjA4LCAKLSAgICAyNDAsIDQzLCAyOCwgMjE2LCA0NywgNDMsIDI4LCAyMjQsIDE0MSwgNDMsIDI4LCAyMTgsIDE1MywgNDMsIDI4LCAyMTIsIAotICAgIDExMSwgNDMsIDI4LCAyMzEsIDEwNiwgNDMsIDI4LCAyNDYsIDc0LCA0MywgMjgsIDI0NiwgMTM4LCA0MywgMjgsIDIyOSwgCi0gICAgMTIwLCA0MywgMjgsIDIwOSwgNjYsIDQzLCAyOCwgMjE4LCAxOTAsIDQzLCAyOCwgMjM2LCAyNTEsIDQzLCAyOCwgMjI5LCAKLSAgICA2MCwgNjMsIDQzLCAyOCwgMjIyLCA5NCwgNjMsIDQzLCAyOCwgMjA4LCAyNDEsIDYzLCA0MywgMjgsIDIxNiwgNDgsIDYzLCAKLSAgICA0MywgMjgsIDIyNCwgMTQyLCA2MywgNDMsIDI4LCAyMTgsIDE1NCwgNjMsIDQzLCAyOCwgMjEyLCAxMTIsIDYzLCA0MywgMjgsIAotICAgIDIzMSwgMTA3LCA2MywgNDMsIDI4LCAyNDYsIDc1LCA2MywgNDMsIDI4LCAyNDYsIDEzOSwgNjMsIDQzLCAyOCwgMjI5LCAKLSAgICAxMjEsIDYzLCA0MywgMjgsIDIwOSwgNjcsIDYzLCA0MywgMjgsIDIxOCwgMTkxLCA2MywgNDMsIDI4LCAyMzYsIDI1MiwgNjMsIAotICAgIDQzLCAyMjgsIDI1MywgMTY3LCAyNDYsIDE4OSwgNDMsIDIyOCwgMjUzLCAxNjcsIDIzMCwgNzgsIDQzLCAyOCwgMjMxLCAKLSAgICAxMDcsIDY4LCAyMjgsIDI1MywgMjExLCA5NywgOTcsIDQzLCAxODksIDEwNSwgNDMsIDE4OSwgMTA4LCA0MywgMTg5LCAxNDcsIAotICAgIDQzLCAxODksIDE0OSwgNDMsIDE4OSwgMTcwLCA0MywgMTg5LCAxOTUsIDQzLCAxODksIDIxMywgMTExLCA0MywgMTg5LCAKLSAgICAxOTksIDQzLCAxODksIDIyMiwgNjMsIDQzLCAxODksIDIwOSwgMTUyLCA0MywgMTg5LCAyMjQsIDI5LCA0MywgMTg5LCAyMzksIAotICAgIDI0OSwgNDMsIDE4OSwgMjA0LCA4MCwgNDMsIDE4OSwgMjAzLCAyNDMsIDQzLCAxODksIDIyNCwgMjIwLCA0MywgMTg5LCAKLSAgICAyNDEsIDE3OSwgNDMsIDE4OSwgMjEwLCAyMTQsIDQzLCAxODksIDIxMSwgNjQsIDQzLCAxODksIDIzNywgNzQsIDQzLCAxODksIAotICAgIDIxMiwgOSwgNDMsIDE4OSwgMjIzLCA4NCwgNDMsIDE4OSwgMjExLCAyMTMsIDQzLCAxODksIDI0MCwgNCwgNDMsIDE4OSwgCi0gICAgMjQ1LCAyMTEsIDQzLCAxODksIDIyOCwgMTAyLCA0MywgMTg5LCAyMTQsIDE2OSwgNDMsIDE4OSwgMjI1LCAxMjYsIDQzLCAKLSAgICAxODksIDI0MCwgNDIsIDQzLCAxODksIDIxMCwgMjI2LCA0MywgMTg5LCAyNDAsIDIxNiwgNDMsIDE4OSwgMjE3LCAyMzMsIAotICAgIDQzLCAxODksIDI1MCwgMzgsIDQzLCAxODksIDIzMCwgMjAwLCA0MywgMTg5LCAyMTYsIDg1LCA0MywgMTg5LCAyNDUsIDE3MCwgCi0gICAgNDMsIDE4OSwgMjQ1LCAxNjAsIDQzLCAxODksIDIzNiwgMjQ0LCA0MywgMTg5LCAyNDYsIDIxNywgNDMsIDE4OSwgMjI3LCAwLCAKLSAgICA0MywgMTg5LCAyMjcsIDIyMiwgNDMsIDE4OSwgMjE2LCAxNiwgNDMsIDE4OSwgMjI1LCAxMSwgNDMsIDE4OSwgMjE2LCAxMTIsIAotICAgIDQzLCAxODksIDIxMSwgMTQsIDQzLCAxODksIDIxMCwgMTk2LCA0MywgMTg5LCAyNDEsIDY1LCA0MywgMTg5LCAyMTYsIDg3LCAKLSAgICA0MywgMTg5LCAyNTEsIDEwLCA0MywgMTg5LCAyMjIsIDc5LCA0MywgNDIsIDIwOSwgNTQsIDE5NSwgNDMsIDQyLCAyMDksIAotICAgIDU0LCAyMTMsIDExMSwgNDMsIDQyLCAyMDksIDU0LCAxOTksIDQzLCA0MiwgMjA5LCA1NCwgMjIyLCA2MywgNDMsIDQyLCAKLSAgICAyMzksIDE1MywgNDMsIDQyLCAyMzksIDE1NCwgMTA1LCA0MywgNDIsIDIzOSwgMTU0LCAxMDgsIDQzLCA0MiwgMjM5LCAxNTQsIAotICAgIDE0NywgNDMsIDQyLCAyMzksIDE1NCwgMTQ5LCA0MywgNDIsIDIzOSwgMTU0LCAxNzAsIDQzLCA0MiwgMjM5LCAxNTQsIDE5NSwgCi0gICAgNDMsIDQyLCAyMzksIDE1NCwgMjEzLCAxMTEsIDQzLCA0MiwgMjM5LCAxNTQsIDE5OSwgNDMsIDQyLCAyMzksIDE1NCwgMjIyLCAKLSAgICA2MywgNDMsIDQyLCAyNDAsIDE4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgMTcxLCAxMzksIDIwOSwgMTY0LCAxNiwgCi0gICAgMzUsIDI0MCwgNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjI1LCA5NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNTAsIAotICAgIDE1MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjUsIDYzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgNzYsIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjMwLCA3NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNTAsIDMwLCAxMzksIDIwOSwgMTY0LCAKLSAgICAxNiwgMzUsIDIxMywgMTI5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyMCwgNzksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjIxLCAxNTMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCA3MCwgNTEsIDIzNywgMTMsIDUxLCAyNDEsIDI0LCA1MSwgCi0gICAgMjQwLCAyMjYsIDIyNywgMTIwLCAyMjcsIDE0NywgNTQsIDQzLCA2NywgNjMsIDQzLCA2NywgNzUsIDQzLCA2NywgNjgsIDQzLCAKLSAgICA2NywgNzQsIDQzLCA2NywgNzgsIDQzLCA2NywgMTczLCA0MywgNjcsIDIyOSwgMTAwLCA0MywgNjcsIDIyOCwgMjA5LCA0MywgCi0gICAgNjcsIDIyOSwgMjAxLCA0MywgNjcsIDIyOSwgMjYsIDQzLCA2NywgMjE1LCAzNiwgNDMsIDY3LCAyMTIsIDE2MiwgNDMsIDY3LCAKLSAgICAyMTEsIDEwLCA0MywgNjcsIDIxNCwgMTc3LCA0MywgNjcsIDIxMiwgMTMsIDQzLCA2NywgMjEwLCAyMiwgNDMsIDY3LCAyMDksIAotICAgIDIsIDQzLCA2NywgMjA3LCAyMDMsIDQzLCA2NywgMjA5LCAxODcsIDQzLCA2NywgMTM1LCA0MywgNjcsIDIwMSwgMjAxLCA0MywgCi0gICAgNjcsIDIyMiwgMTAwLCA0MywgNjcsIDIyMSwgODQsIDQzLCA2NywgMjIyLCAyNDAsIDQzLCA2NywgMjIxLCAxOTEsIDQzLCAKLSAgICA2NywgMTUyLCA0MywgNjcsIDIzNywgMywgNDMsIDY3LCAyMzYsIDI2LCA0MywgNjcsIDIzNywgNjcsIDQzLCA2NywgMjM2LCAKLSAgICAxMzYsIDQzLCA2NywgMTkyLCA0MywgNjcsIDIyNCwgMTU1LCA0MywgNjcsIDIyMywgMjQ2LCA0MywgNjcsIDIyNSwgMjAsIAotICAgIDQzLCA2NywgMjI0LCA4MiwgNDMsIDY3LCAxOTgsIDQzLCA2NywgMjAyLCAyMTMsIDQzLCA2NywgMjAyLCAyNDcsIDQzLCA2NywgCi0gICAgMjE2LCAyMjAsIDQzLCA2NywgMjE2LCA1NywgNDMsIDY3LCAyMTUsIDE0NSwgNDMsIDY3LCAyMTYsIDE1OCwgNDMsIDY3LCAKLSAgICAyMTUsIDIyNywgNDMsIDY3LCAyMDQsIDExMSwgNDMsIDY3LCAyMDQsIDMwLCA0MywgNjcsIDIwNCwgNjIsIDQzLCA2NywgCi0gICAgMjA0LCAwLCA1MSwgMjUwLCAxNzQsIDUxLCAyNTAsIDgzLCA1MSwgMjUwLCAyMDEsIDUxLCAyNTEsIDIzOSwgNTEsIDIzMSwgCi0gICAgMTgsIDUxLCAyMzAsIDI0MiwgNTEsIDIwNiwgMjI3LCA1MSwgMjQwLCAyNTMsIDUxLCAyNDEsIDE1OCwgNTEsIDIyMCwgMjEsIAotICAgIDUxLCAyMjAsIDE0LCA1MSwgMjMwLCAxNiwgNTEsIDIyOSwgMjM4LCA1MSwgMjI5LCAyMzUsIDUxLCAyMzgsIDIyMCwgNTEsIAotICAgIDIzOCwgMjI5LCA1MSwgMjM4LCA3MCwgNTEsIDIzOCwgNjYsIDUxLCAyMjgsIDEzMiwgNTEsIDIzOCwgNTgsIDUxLCAyMjksIAotICAgIDc1LCA1MSwgMjI5LCA3NCwgNTEsIDIyOSwgNzMsIDUxLCAyMjksIDcyLCA1MSwgMjM3LCAyMDAsIDUxLCAyMzcsIDE5OSwgCi0gICAgNTEsIDIyOCwgMTgwLCA1MSwgMjI4LCAxODIsIDUxLCAyMjksIDE5NCwgNTEsIDIyOCwgMjUxLCA1MSwgMjI5LCAzLCA1MSwgCi0gICAgMjE1LCAxNywgNTEsIDIxNCwgMjM2LCA1MSwgMjEyLCA5MiwgNTEsIDIxMywgMTM0LCA1MSwgMjEzLCAxMzMsIDUxLCAyNDQsIAotICAgIDIwOSwgNTEsIDI0NCwgMTQsIDUxLCAyNDMsIDg2LCA1MSwgMjA4LCAxNjMsIDUxLCAyMjMsIDc5LCA1MSwgMjIxLCAxNTQsIAotICAgIDUxLCAyMzcsIDE0MiwgNTEsIDIxOSwgMTYzLCA1MSwgMjE5LCAxNjIsIDUxLCAyNDksIDI5LCA1MSwgMjE4LCAxNjQsIDUxLCAKLSAgICAyMTgsIDEyNywgNTEsIDIxOCwgMTI4LCA1MSwgMjQ4LCA1NywgNTEsIDIzNiwgMjQsIDUxLCAyMzYsIDE5LCA1MSwgMjQ3LCAKLSAgICAxNTEsIDUxLCAyMzYsIDQsIDUxLCAyMzcsIDM5LCA1MSwgMjE4LCAyMjAsIDUxLCAyMTksIDQsIDUxLCAyMzcsIDIyLCA1MSwgCi0gICAgMjE5LCAwLCA1MSwgMjE5LCAxOCwgNTEsIDI0OCwgMTQ1LCA1MSwgMjE4LCA1OCwgNTEsIDI0NywgMjUzLCA1MSwgMjM2LCAKLSAgICAxMjAsIDUxLCAyMTgsIDQ2LCA1MSwgMjM2LCAxMTEsIDUxLCAyMzYsIDExMywgNTEsIDIyNSwgMTM4LCA1MSwgMjI1LCAxMzQsIAotICAgIDUxLCAyMjUsIDE0MywgNTEsIDIyNSwgODMsIDUxLCAyMjUsIDExMCwgNTEsIDIyNCwgMTIxLCA1MSwgMjI0LCA5NywgNTEsIAotICAgIDIyNCwgOTYsIDUxLCAyMjUsIDAsIDUxLCAyMjQsIDI1MywgNTEsIDIyNSwgMSwgNTEsIDIwMywgMTA5LCA1MSwgMjAzLCAKLSAgICAxMDcsIDUxLCAyMDIsIDIwMiwgNTEsIDIxNSwgMjQzLCA1MSwgMjE1LCAyNDcsIDUxLCAyMTUsIDExOSwgNTEsIDIxNSwgCi0gICAgMTEzLCA1MSwgMjE2LCAxMDksIDUxLCAyMTYsIDEwNiwgNTEsIDIwNCwgNzgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCAKLSAgICA0MywgMjAyLCA4NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxMDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAxNDksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTcwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDE5NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMTMsIDExMSwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyMzYsIDQzLCAxOTksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjIyLCA2MywgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDksIDE1MiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyNDEsIDExMiwgCi0gICAgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAKLSAgICAyMDksIDU1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIzOSwgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDI0MCwgMjIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjEyLCA4MiwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyMzYsIDQzLCAyMTMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyNDEsIDE0MCwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMjIsIDYwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgCi0gICAgMTUxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQ1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDIwNywgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQyLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQ3LCA1MSwgMjM2LCAzNCwgNTEsIDI0NCwgMjEyLCA1MSwgMjUwLCAzNCwgCi0gICAgNTEsIDE0MiwgNTEsIDIxOSwgMjA2LCA1MSwgMjE5LCAzOSwgNTEsIDI0MywgMTE1LCA1MSwgMjQzLCAxMTYsIDIxMSwgMTc2LCAKLSAgICA1MSwgMjQzLCAxMTYsIDI0NSwgMTA1LCA1MSwgMjMwLCAxOTcsIDUxLCAyNDEsIDI3LCAyMjMsIDg1LCAyMzcsIDQwLCA1MSwgCi0gICAgMjQxLCAyNywgMjIzLCA4NSwgMjEwLCA5MiwgNTEsIDI0MSwgMjcsIDIyMywgODUsIDIwOSwgMjQ1LCA1MSwgMjQxLCAyNywgCi0gICAgMjIzLCA4NSwgMjI0LCAyNTIsIDUxLCAyNDUsIDE2MiwgNTEsIDIxOSwgMTY5LCAyNTAsIDIzMywgNTEsIDIwMSwgMjAxLCAKLSAgICA1MSwgMjIzLCAyNDcsIDYzLCA1MSwgMTkyLCA1MSwgMTczLCA1MSwgMjI5LCAyMDQsIDUxLCAyMjUsIDU5LCA1MSwgMjM4LCAKLSAgICAyMDgsIDUxLCAyNDcsIDc2LCA1MSwgMjI5LCAyMDMsIDUxLCAyMTgsIDIxMSwgNTEsIDIyMiwgMjA3LCA1MSwgMjIzLCAyNDcsIAotICAgIDI0MCwgMTc0LCA1MSwgMjIzLCAyNDcsIDIzOSwgNzUsIDUxLCAyMjQsIDE5NiwgNTEsIDIyOSwgMTQ2LCA1MSwgMjM1LCAKLSAgICAyMTUsIDUxLCAyMjksIDEwMiwgNTEsIDIyNCwgMTU3LCA1MSwgMjM4LCA4MywgNTEsIDIwOSwgNCwgNTEsIDIyMywgMjQ3LCAKLSAgICAxNTksIDUxLCAyMjQsIDkwLCA1MSwgMjQzLCAxMjUsIDUxLCAyMjksIDQxLCA1MSwgMjM5LCAxODgsIDUxLCAyMjEsIDIyOSwgCi0gICAgNTEsIDIyMywgMjQ3LCAyMjYsIDE4NSwgNTEsIDIyNCwgODcsIDUxLCAyNDUsIDI1NSwgNTEsIDIyOSwgMzUsIDUxLCAyMjQsIAotICAgIDg4LCAyMTEsIDE3NiwgNTEsIDI0NiwgMCwgMjExLCAxNzYsIDUxLCAyMjYsIDE4NiwgMjExLCAxNzYsIDUxLCAyMjksIDM2LCAKLSAgICAyMTEsIDE3NiwgNTEsIDIyNCwgODgsIDI0NSwgMTA1LCA1MSwgMjQ2LCAwLCAyNDUsIDEwNSwgNTEsIDIyNiwgMTg2LCAyNDUsIAotICAgIDEwNSwgNTEsIDIyOSwgMzYsIDI0NSwgMTA1LCA1MSwgMjI2LCAxODYsIDExNSwgMTk0LCA1MSwgMjI2LCAxODYsIDExNSwgCi0gICAgMjE1LCA5NCwgMjExLCAxNzYsIDUxLCAxODUsIDUxLCAyMjgsIDI0NCwgNTEsIDIyMywgMjUwLCA1MSwgMjM4LCAxNSwgNTEsIAotICAgIDIxNiwgMjA3LCA1MSwgMjE2LCAyMDgsIDExNSwgMTk0LCA1MSwgMjE2LCAyMDgsIDExNSwgMjE1LCA5NCwgMjExLCAxNzYsIAotICAgIDUxLCAyMTcsIDIwNCwgNTEsIDIyMSwgMTIyLCA1MSwgMjIzLCAyNDcsIDE5NCwgNTEsIDIyMywgMjQ4LCA1MSwgMjE3LCAKLSAgICAxNTQsIDUxLCAyMjEsIDIyLCA1MSwgMjIzLCAyNDcsIDIwNiwgMTY0LCA1MSwgMjIzLCAxODcsIDUxLCAyMjgsIDE3MCwgNTEsIAotICAgIDIyMywgMTg4LCAyMjUsIDAsIDUxLCAyMTcsIDE1MywgNTEsIDIyMSwgMjEsIDUxLCAyMjMsIDI0NywgMjA0LCAxNDQsIDUxLCAKLSAgICAyMjMsIDE4MSwgNTEsIDIyOCwgMTY4LCA1MSwgMjIzLCAxODIsIDIyNSwgMCwgNTEsIDIzMCwgNTUsIDIyMCwgNTgsIDUxLCAKLSAgICAyMjYsIDE4NiwgMjIwLCA1OCwgNTEsIDI1MCwgMjQ3LCA1MSwgMjQ3LCAyMjksIDUxLCAyNDcsIDYsIDUxLCAyNDYsIDIzOSwgCi0gICAgNTEsIDI0NywgMTI2LCAxMTUsIDIyOSwgMTQ2LCA1MSwgMjQ1LCAyNTQsIDUxLCAyNDQsIDEyOSwgNTEsIDIzNywgMTg0LCAKLSAgICA1MSwgMTUyLCA1MSwgMjM2LCAzNSwgNTEsIDIzMSwgNDksIDUxLCAyMjksIDQ4LCA1MSwgMjI5LCAzNiwgMjQ3LCA0NywgNTEsIAotICAgIDIyOCwgMjExLCA1MSwgMjI3LCA1MiwgNTEsIDIyNywgNTEsIDUxLCAyMjcsIDM4LCA1MSwgMjI2LCAyMDAsIDUxLCAyMjUsIAotICAgIDYwLCAyMTIsIDM2LCA1MSwgMjI0LCAxMjAsIDUxLCAyMjQsIDU2LCA1MSwgMjE4LCAyMDksIDUxLCAyMTgsIDcyLCA1MSwgCi0gICAgMjE4LCAxMSwgNTEsIDIxOCwgOSwgNTEsIDIxMSwgMTY4LCA1MSwgMjEwLCAxNzcsIDUxLCAyMDQsIDY0LCA1MSwgMjA2LCAKLSAgICAxNjUsIDExNSwgMjI2LCAxODUsIDUxLCAzNCwgMTE1LCAyMjYsIDE4NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIAotICAgIDEzMywgMTA1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTQ5LCAxMzksIDIwOSwgMTY0LCAxNiwgCi0gICAgMzUsIDI0NCwgMTMzLCAxNzAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE5NSwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyNDQsIDEzMywgMjEzLCAxMTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE5OSwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjIyLCA2MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgCi0gICAgMjA5LCAxNTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDI0MSwgMTEyLCAxMzksIDIwOSwgMTY0LCAxNiwgCi0gICAgMzUsIDI0NCwgMTMzLCAyMDcsIDE1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA5LCA1NSwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjM5LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIAotICAgIDI0MCwgMjIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIxMiwgODIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDIxMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyNDEsIDE0MCwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjIyLCA2MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAKLSAgICAxNTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAyMDcsIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDIsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIAotICAgIDE0OCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDIwNywgMTQ0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE1MCwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDYsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgCi0gICAgNTMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgNTIsIDUxLCAyMzgsIDI0NiwgMjM3LCAxNiwgMzUsIAotICAgIDIwOSwgOTMsIDI0NSwgMTQyLCAyMzcsIDUxLCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjE2LCAxNTEsIDI0MSwgMTc5LCAKLSAgICAyMzcsIDE2LCAzNSwgMjQzLCAyMDMsIDI1MCwgNTAsIDIwOSwgOTMsIDI0OCwgMTQwLCAyMzcsIDE2LCAzNSwgMjAyLCAyMjYsIAotICAgIDIzOSwgMTgwLCAyMzcsIDE2LCAzNSwgMjA0LCAxMDMsIDIzNywgMTYsIDM1LCAyNDUsIDIxNCwgMjM3LCAxNiwgMzUsIDIwOSwgCi0gICAgOTMsIDI1MCwgMTA1LCAyMzcsIDE2LCAzNSwgMjM2LCAxMjcsIDIwOCwgMTY5LCAyMzcsIDE2LCAzNSwgNSwgMjA5LCAyMzEsIAotICAgIDIzNywgMTYsIDM1LCAyMDgsIDk3LCAyMzcsIDE2LCAzNSwgMjE5LCAzMiwgMjM3LCAxNiwgMzUsIDIxMSwgOTYsIDIzNywgCi0gICAgMTYsIDM1LCAyNDAsIDQ0LCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxOCwgMzIsIDIzNywgMTYsIDM1LCAyMjQsIDc1LCAKLSAgICAyMzcsIDE2LCAzNSwgMjQxLCA2NCwgMjM3LCAxNiwgMzUsIDIzOSwgMTgxLCAyMzcsIDE2LCAzNSwgMjAzLCAyMzYsIDIyMCwgCi0gICAgMzIsIDIwOSwgOTMsIDI0NCwgNzEsIDIzNywgMTYsIDM1LCAyNTAsIDE1NCwgMjM3LCAxNiwgMzUsIDI0NSwgMTkzLCAyMzcsIAotICAgIDE2LCAzNSwgMjQ4LCA0OSwgMjA5LCAyNCwgMjM3LCAxNiwgMzUsIDIzOCwgMTMsIDIzNywgMTYsIDM1LCAyMTEsIDE5MiwgCi0gICAgMjUwLCAxNzMsIDIzNywgMTYsIDM1LCAyMTYsIDc3LCAyMzcsIDE2LCAzNSwgMjMxLCAxMiwgMjM3LCAxNiwgMzUsIDIzNywgCi0gICAgMjQ5LCAyMDksIDIzMSwgMjM3LCAxNiwgMzUsIDIyNCwgOCwgMjQ1LCAxNjQsIDIzNywgMTYsIDM1LCAyMzcsIDI0OSwgMjE3LCAKLSAgICAyNDQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNTEsIDE0MywgMjA0LCA4MCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI0NiwgCi0gICAgMjQsIDIzOSwgMjQ5LCAyMzcsIDE2LCAzNSwgMjMxLCAyNiwgMjM3LCAxNiwgMzUsIDI0MiwgMjAsIDIzNywgMTYsIDM1LCAKLSAgICAyMTYsIDgwLCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxOCwgMTYsIDIzNywgMTYsIDM1LCAyMTcsIDIyMSwgMjM3LCAxNiwgCi0gICAgMzUsIDI0NCwgMTQ5LCA3NiwgMjA5LCA5MywgMjI3LCAxMzQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDAsIDgyLCAyMzcsIAotICAgIDE2LCAzNSwgMjE5LCAyNTAsIDIzNywgMTYsIDM1LCAyMjAsIDg1LCAyMzcsIDE2LCAzNSwgMjQ0LCA0MiwgMjM3LCAxNiwgCi0gICAgMzUsIDI0NCwgNjMsIDIzNywgMTYsIDM1LCAyMzEsIDQwLCAyMzcsIDE2LCAzNSwgMjQ3LCAyMTcsIDIzNywgMTYsIDM1LCAKLSAgICAyNDUsIDIzNSwgMjA4LCAxNzMsIDIyNSwgMywgMjM3LCAxNiwgMzUsIDIzOCwgMjE1LCAyMDgsIDE2OSwgMjM3LCAxNiwgMzUsIAotICAgIDIxNywgMTYzLCAyMDYsIDIxMywgMjM3LCAxNiwgMzUsIDIxOSwgMjQ5LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjA0LCA1MCwgCi0gICAgMjM3LCAxNiwgMzUsIDIxNiwgNjgsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDcsIDEyLCAyMzcsIDE2LCAzNSwgMjA5LCAKLSAgICA5MywgMjUwLCAxMDEsIDIwOSwgMTgsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMjksIDE5NSwgMjExLCA2OCwgMjI0LCAxMiwgCi0gICAgMjM3LCAxNiwgMzUsIDI0NCwgOSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIyNSwgODUsIDIyNSwgMTM5LCAyMzcsIDE2LCAKLSAgICAzNSwgMjUxLCAxNDQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMDQsIDk2LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjM4LCAKLSAgICAxNzMsIDIwNCwgMTYsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMzAsIDg0LCAyMjgsIDMzLCAyMzcsIDE2LCAzNSwgMjQzLCAKLSAgICAxNTMsIDIzNywgMTYsIDM1LCAyMjcsIDEyMSwgMjM3LCAxNiwgMzUsIDIzMSwgMTUsIDIwOCwgMjQsIDIzNywgMTYsIDM1LCAKLSAgICA1LCAyMTcsIDI0NCwgMjM3LCAxNiwgMzUsIDI1MSwgODIsIDI0NSwgMjI2LCAyMzcsIDE2LCAzNSwgMjQ4LCAxNDMsIDI0NSwgCi0gICAgMjI2LCAxMSwgNCwgMjMwLCAyMDEsIDExLCA0LCAyMzAsIDE5MywgMTEsIDQsIDc1LCAxMSwgNCwgMjMwLCAyMjcsIDExLCA0LCAKLSAgICAyMzEsIDEwOCwgMTEsIDQsIDIzMSwgOTEsIDExLCA0LCAyMzEsIDExMCwgMTEsIDQsIDIzMSwgMTA5LCAxMSwgNCwgMjUwLCAKLSAgICA0OSwgMTEsIDQsIDI1MCwgMTAsIDExLCA0LCA2MywgMTEsIDQsIDI1MCwgMTc1LCAxMSwgNCwgMjA2LCAyMjUsIDExLCA0LCAKLSAgICAyMDYsIDIyOCwgMTEsIDQsIDIwNiwgMjI2LCAxMSwgNCwgMjE5LCAyMjQsIDExLCA0LCAyMTksIDE5MywgMTEsIDQsIDc4LCAKLSAgICAxMSwgNCwgMjIwLCA5LCAxMSwgNCwgMjQwLCAyMTcsIDExLCA0LCA3NCwgMTEsIDQsIDIwMywgMjE3LCAxMSwgNCwgMjQ4LCAKLSAgICA1MSwgMTEsIDQsIDI0OCwgNDcsIDExLCA0LCAyNDgsIDg2LCAxMSwgNCwgMjQ4LCA2MSwgMTEsIDQsIDI0OCwgNzUsIDExLCAKLSAgICA0LCAyNDgsIDc0LCAxMSwgNCwgMjQ4LCA3NywgMTEsIDQsIDI0OCwgNzYsIDExLCA0LCAyNDgsIDIwOSwgMTEsIDQsIDI0OCwgCi0gICAgMjAxLCAxMSwgNCwgMjQ5LCAzMiwgMTEsIDQsIDI0OCwgMjMyLCAxMSwgNCwgMjQ3LCAxNjMsIDExLCA0LCAyNDcsIDE2NywgCi0gICAgMTEsIDQsIDI0NywgMTY0LCAxMSwgNCwgMjQ3LCAyNTIsIDExLCA0LCAyNDcsIDIzMywgMTEsIDQsIDI0OCwgMjMsIDExLCA0LCAKLSAgICAyNDgsIDIsIDExLCA0LCAyNDgsIDEwMSwgMTEsIDQsIDI0OCwgMTYyLCAxMSwgNCwgMjQ4LCAxMTMsIDExLCA0LCAyNDcsIAotICAgIDE0NywgMTEsIDQsIDI0NywgMTQzLCAxMSwgNCwgMjQ3LCAxOTMsIDExLCA0LCAyNDcsIDE2MiwgMTEsIDQsIDI0NywgMTU1LCAKLSAgICAxMSwgNCwgMjQ3LCAxNjAsIDExLCA0LCAyNDcsIDEzMSwgMTEsIDQsIDI0NywgMTI5LCAxMSwgNCwgMjQ3LCAxMzYsIDExLCAKLSAgICA0LCAyNDcsIDEzNCwgMTEsIDQsIDI0NywgMTMyLCAxMSwgNCwgMjQ3LCAxMzMsIDExLCA0LCAyMTgsIDEwNSwgMTEsIDQsIAotICAgIDIxOCwgMTAxLCAxMSwgNCwgMjE4LCAxNjcsIDExLCA0LCAyMTgsIDExNywgMTEsIDQsIDIxOCwgMTMzLCAxMSwgNCwgMjE4LCAKLSAgICAxNjAsIDExLCA0LCAyMTgsIDE1NiwgMTEsIDQsIDIxOSwgNTUsIDExLCA0LCAyMTksIDQ0LCAxMSwgNCwgMTg1LCAxMSwgNCwgCi0gICAgMjE5LCA5NiwgMTEsIDQsIDIxNywgMTczLCAxMSwgNCwgMjE3LCAxNzUsIDExLCA0LCAyMTcsIDE3NCwgMTEsIDQsIDIxOCwgCi0gICAgMjUsIDExLCA0LCAyMTgsIDE0LCAxMSwgNCwgMjE4LCA2OSwgMTEsIDQsIDIxOCwgNDEsIDExLCA0LCAyMTcsIDE1OSwgMTEsIAotICAgIDQsIDIxNywgMTU1LCAxMSwgNCwgMjE3LCAxOTEsIDExLCA0LCAyMTcsIDE3MiwgMTEsIDQsIDIxNywgMTY0LCAxMSwgNCwgCi0gICAgMjE3LCAxNzAsIDExLCA0LCAyMTcsIDEzOCwgMTEsIDQsIDIxNywgMTM3LCAxMSwgNCwgMjE3LCAxNDIsIDExLCA0LCAyMTcsIAotICAgIDE0MSwgMTEsIDQsIDIxNywgMTM5LCAxMSwgNCwgMjE3LCAxNDAsIDExLCA0LCAyNDgsIDE4MywgMTEsIDQsIDI0OCwgMTgyLCAKLSAgICAxMSwgNCwgMjQ4LCAxODksIDExLCA0LCAyNDgsIDE4NCwgMTEsIDQsIDI0OCwgMTg2LCAxMSwgNCwgMjQ4LCAxODUsIDExLCAKLSAgICA0LCAyNDgsIDE4OCwgMTEsIDQsIDI0OCwgMTg3LCAxMSwgNCwgMjQ4LCAxOTUsIDExLCA0LCAyNDgsIDE5NCwgMTEsIDQsIAotICAgIDI0OCwgMTk4LCAxMSwgNCwgMjQ4LCAxOTYsIDExLCA0LCAyNDgsIDE3NCwgMTEsIDQsIDI0OCwgMTc2LCAxMSwgNCwgMjQ4LCAKLSAgICAxNzUsIDExLCA0LCAyNDgsIDE3OSwgMTEsIDQsIDI0OCwgMTc4LCAxMSwgNCwgMjQ4LCAxODEsIDExLCA0LCAyNDgsIDE4MCwgCi0gICAgMTEsIDQsIDI0OCwgMTkwLCAxMSwgNCwgMjQ4LCAxOTMsIDExLCA0LCAyNDgsIDE5MSwgMTEsIDQsIDI0OCwgMTcwLCAxMSwgCi0gICAgNCwgMjQ4LCAxNjksIDExLCA0LCAyNDgsIDE3NywgMTEsIDQsIDI0OCwgMTczLCAxMSwgNCwgMjQ4LCAxNzEsIDExLCA0LCAKLSAgICAyNDgsIDE3MiwgMTEsIDQsIDI0OCwgMTY2LCAxMSwgNCwgMjQ4LCAxNjUsIDExLCA0LCAyNDgsIDE2OCwgMTEsIDQsIDI0OCwgCi0gICAgMTY3LCAxMSwgNCwgMjIzLCA0NywgMTEsIDQsIDIyMywgNDYsIDExLCA0LCAyMjMsIDUyLCAxMSwgNCwgMjIzLCA0OCwgMTEsIAotICAgIDQsIDIyMywgNDksIDExLCA0LCAyMjMsIDUxLCAxMSwgNCwgMjIzLCA1MCwgMTEsIDQsIDIyMywgNTUsIDExLCA0LCAyMjMsIAotICAgIDU0LCAxMSwgNCwgMjIzLCA1NywgMTEsIDQsIDIyMywgNTYsIDExLCA0LCAyMjMsIDQzLCAxMSwgNCwgMjIzLCA0MiwgMTEsIAotICAgIDQsIDIyMywgNDUsIDExLCA0LCAyMjMsIDQ0LCAxMSwgNCwgMjIzLCAzNiwgMTEsIDQsIDIyMywgMzUsIDExLCA0LCAyMjMsIAotICAgIDQwLCAxMSwgNCwgMjIzLCAzOSwgMTEsIDQsIDIyMywgMzcsIDExLCA0LCAyMjMsIDM4LCAxMSwgNCwgMjIzLCAzMCwgMTEsIAotICAgIDQsIDIyMywgMjksIDExLCA0LCAyMjMsIDM0LCAxMSwgNCwgMjIzLCAzMywgMTEsIDQsIDIyMywgMzEsIDExLCA0LCAyMjMsIAotICAgIDMyLCAxMSwgNCwgMjM2LCAxODAsIDExLCA0LCAyMzYsIDE3OSwgMTEsIDQsIDIzNiwgMTg1LCAxMSwgNCwgMjM2LCAxODEsIAotICAgIDExLCA0LCAyMzYsIDE4MiwgMTEsIDQsIDIzNiwgMTg0LCAxMSwgNCwgMjM2LCAxODMsIDExLCA0LCAyMzYsIDE4OCwgMTEsIAotICAgIDQsIDIzNiwgMTg3LCAxMSwgNCwgMjM2LCAxOTAsIDExLCA0LCAyMzYsIDE4OSwgMTEsIDQsIDIzNiwgMTcxLCAxMSwgNCwgCi0gICAgMjM2LCAxNzMsIDExLCA0LCAyMzYsIDE3MiwgMTEsIDQsIDIzNiwgMTc2LCAxMSwgNCwgMjM2LCAxNzUsIDExLCA0LCAyMzYsIAotICAgIDE3OCwgMTEsIDQsIDIzNiwgMTc3LCAxMSwgNCwgMjM2LCAxNjcsIDExLCA0LCAyMzYsIDE2NiwgMTEsIDQsIDIzNiwgMTc0LCAKLSAgICAxMSwgNCwgMjM2LCAxNzAsIDExLCA0LCAyMzYsIDE2OCwgMTEsIDQsIDIzNiwgMTY5LCAxMSwgNCwgMjM2LCAxNjEsIDExLCAKLSAgICA0LCAyMzYsIDE2NSwgMTEsIDQsIDIzNiwgMTY0LCAxMSwgNCwgMjM2LCAxNjIsIDExLCA0LCAyMzYsIDE2MywgMTEsIDQsIAotICAgIDIyNCwgOTMsIDExLCA0LCAyMjQsIDkyLCAxMSwgNCwgMjI0LCAxNTUsIDExLCA0LCAyMjQsIDk5LCAxMSwgNCwgMjI0LCAKLSAgICAxMjcsIDExLCA0LCAyMjQsIDE0NSwgMTEsIDQsIDIyNCwgMTQzLCAxMSwgNCwgMjI1LCA3MSwgMTEsIDQsIDIyNSwgNjYsIAotICAgIDExLCA0LCAxOTIsIDExLCA0LCAyMjUsIDEwNiwgMTEsIDQsIDIyMywgMjEzLCAxMSwgNCwgMjIzLCAyMTIsIDExLCA0LCAKLSAgICAyMjMsIDIxNiwgMTEsIDQsIDIyMywgMjE0LCAxMSwgNCwgMjI0LCAyMSwgMTEsIDQsIDIyMywgMjUyLCAxMSwgNCwgMjI0LCAKLSAgICA4MiwgMTEsIDQsIDIyNCwgMjcsIDExLCA0LCAyMjQsIDIwNywgMTEsIDQsIDIyNSwgMjAsIDExLCA0LCAyMjMsIDE5MywgMTEsIAotICAgIDQsIDIyMywgMTg5LCAxMSwgNCwgMjIzLCAyNDYsIDExLCA0LCAyMjMsIDIwOSwgMTEsIDQsIDIyMywgMjAyLCAxMSwgNCwgCi0gICAgMjIzLCAyMDcsIDExLCA0LCAyMjMsIDE2NiwgMTEsIDQsIDIyMywgMTY1LCAxMSwgNCwgMjIzLCAxNzEsIDExLCA0LCAyMjMsIAotICAgIDE2OCwgMTEsIDQsIDIzOSwgMjM2LCAxMSwgNCwgMjM5LCAyMzAsIDExLCA0LCAyNDAsIDI2LCAxMSwgNCwgMjM5LCAyNTEsIAotICAgIDExLCA0LCAyNDAsIDczLCAxMSwgNCwgMjQwLCA2NCwgMTEsIDQsIDI0MCwgMTA4LCAxMSwgNCwgMjQwLCA3OCwgMTEsIDQsIAotICAgIDIzOSwgMTM5LCAxMSwgNCwgMjM5LCAxODYsIDExLCA0LCAyMzksIDE2NywgMTEsIDQsIDIzOSwgOTEsIDExLCA0LCAyMzksIAotICAgIDkwLCAxMSwgNCwgMjM5LCAxMDgsIDExLCA0LCAyMzksIDk2LCAxMSwgNCwgMjM5LCA5NCwgMTEsIDQsIDIzOSwgOTUsIDExLCAKLSAgICA0LCAyMzksIDc4LCAxMSwgNCwgMjM5LCA3NywgMTEsIDQsIDIzOSwgODEsIDExLCA0LCAyMzksIDc5LCAxMSwgNCwgMjA1LCAKLSAgICAxOTYsIDExLCA0LCAyMDUsIDE5MSwgMTEsIDQsIDIwNSwgMjMwLCAxMSwgNCwgMjA1LCAyMDUsIDExLCA0LCAyMDUsIDIxOSwgCi0gICAgMTEsIDQsIDIwNSwgMjE2LCAxMSwgNCwgMjA1LCAyMjIsIDExLCA0LCAyMDUsIDIyMSwgMTEsIDQsIDIwNiwgNjMsIDExLCA0LCAKLSAgICAyMDYsIDU4LCAxMSwgNCwgMjA2LCA4NiwgMTEsIDQsIDIwNiwgNzUsIDExLCA0LCAyMDUsIDE3MiwgMTEsIDQsIDIwNSwgCi0gICAgMTY4LCAxMSwgNCwgMjA1LCAxODksIDExLCA0LCAyMDUsIDE3NCwgMTEsIDQsIDIwNSwgMjMzLCAxMSwgNCwgMjA2LCA0NCwgCi0gICAgMTEsIDQsIDIwNCwgMTU3LCAxMSwgNCwgMjA0LCAxNTUsIDExLCA0LCAyMDQsIDE2MywgMTEsIDQsIDIwNCwgMTYwLCAxMSwgCi0gICAgNCwgMjA0LCAxNTgsIDExLCA0LCAyMDQsIDE1OSwgMTEsIDQsIDIwNCwgMTQ4LCAxMSwgNCwgMjA0LCAxNDcsIDExLCA0LCAKLSAgICAyMDQsIDE1MiwgMTEsIDQsIDIwNCwgMTUxLCAxMSwgNCwgMjA0LCAxNDksIDExLCA0LCAyMDQsIDE1MCwgMTEsIDQsIDI0MywgCi0gICAgMTQ3LCAxMSwgNCwgMjQzLCAxMzQsIDExLCA0LCAyNDMsIDIzMywgMTEsIDQsIDI0MywgMTczLCAxMSwgNCwgMjQzLCAyMDgsIAotICAgIDExLCA0LCAyNDMsIDIxMywgMTEsIDQsIDI0MywgMjEyLCAxMSwgNCwgMjQ0LCAxNDAsIDExLCA0LCAyNDQsIDEzNCwgMTEsIAotICAgIDQsIDI0NCwgMjEyLCAxMSwgNCwgMjQ0LCAxNjAsIDExLCA0LCAyNDIsIDI1LCAxMSwgNCwgMjQyLCAyNiwgMTEsIDQsIDI0MywgCi0gICAgODUsIDExLCA0LCAyNDIsIDY3LCAxMSwgNCwgMjQzLCAxMTMsIDExLCA0LCAyNDMsIDg3LCAxMSwgNCwgMjQ0LCA3LCAxMSwgCi0gICAgNCwgMjQ0LCA3NSwgMTEsIDQsIDI0NCwgMjgsIDExLCA0LCAyNDIsIDE2LCAxMSwgNCwgMjQyLCAxNCwgMTEsIDQsIDI0MiwgCi0gICAgNDIsIDExLCA0LCAyNDIsIDI0LCAxMSwgNCwgMjQyLCAxOSwgMTEsIDQsIDI0MiwgMjIsIDExLCA0LCAyMDgsIDIwMCwgMTEsIAotICAgIDQsIDIwOCwgMTkyLCAxMSwgNCwgMjA5LCAyLCAxMSwgNCwgMjA4LCAyMTAsIDExLCA0LCAyMDgsIDI0OCwgMTEsIDQsIDIwOCwgCi0gICAgMjUwLCAxMSwgNCwgMjA4LCAyNDksIDExLCA0LCAyMDksIDIxMiwgMTEsIDQsIDIwOSwgMTk4LCAxMSwgNCwgMjEwLCAyMiwgCi0gICAgMTEsIDQsIDIwOSwgMjIyLCAxMSwgNCwgMjA3LCAxODUsIDExLCA0LCAyMDcsIDE4NCwgMTEsIDQsIDIwNywgMTg3LCAxMSwgCi0gICAgNCwgMjA3LCAxODYsIDExLCA0LCAyMDgsIDEzMSwgMTEsIDQsIDIwOCwgMTIxLCAxMSwgNCwgMTM1LCAxMSwgNCwgMjA4LCAKLSAgICAxNDQsIDExLCA0LCAyMDksIDExNCwgMTEsIDQsIDIwOSwgMTg3LCAxMSwgNCwgMjA5LCAxMzksIDExLCA0LCAyMDcsIDE2OCwgCi0gICAgMTEsIDQsIDIwNywgMTYzLCAxMSwgNCwgMjA3LCAyMDMsIDExLCA0LCAyMDcsIDE4MywgMTEsIDQsIDIwNywgMTY5LCAxMSwgCi0gICAgNCwgMjA3LCAxODEsIDExLCA0LCAyNDQsIDkyLCAxMSwgNCwgMjQ0LCA5MSwgMTEsIDQsIDI0NCwgOTcsIDExLCA0LCAyNDQsIAotICAgIDkzLCAxMSwgNCwgMjQ0LCA5NCwgMTEsIDQsIDI0NCwgOTYsIDExLCA0LCAyNDQsIDk1LCAxMSwgNCwgMjQ0LCAxMTMsIDExLCAKLSAgICA0LCAyNDQsIDExMiwgMTEsIDQsIDI0NCwgMTIwLCAxMSwgNCwgMjQ0LCAxMTQsIDExLCA0LCAyNDQsIDgyLCAxMSwgNCwgCi0gICAgMjQ0LCA4NCwgMTEsIDQsIDI0NCwgODMsIDExLCA0LCAyNDQsIDg3LCAxMSwgNCwgMjQ0LCA4NiwgMTEsIDQsIDI0NCwgOTAsIAotICAgIDExLCA0LCAyNDQsIDg4LCAxMSwgNCwgMjQ0LCAxMDUsIDExLCA0LCAyNDQsIDEwOCwgMTEsIDQsIDI0NCwgMTA2LCAxMSwgNCwgCi0gICAgMjQ0LCA3OCwgMTEsIDQsIDI0NCwgNzcsIDExLCA0LCAyNDQsIDg1LCAxMSwgNCwgMjQ0LCA4MSwgMTEsIDQsIDI0NCwgNzksIAotICAgIDExLCA0LCAyNDQsIDgwLCAxMSwgNCwgMjIzLCAzLCAxMSwgNCwgMjIzLCAyLCAxMSwgNCwgMjIzLCAxMCwgMTEsIDQsIDIyMywgCi0gICAgNSwgMTEsIDQsIDIyMywgNiwgMTEsIDQsIDIyMywgNywgMTEsIDQsIDIyMywgMTksIDExLCA0LCAyMjMsIDE4LCAxMSwgNCwgCi0gICAgMjIzLCAyNSwgMTEsIDQsIDIyMywgMjAsIDExLCA0LCAyMjIsIDI1MSwgMTEsIDQsIDIyMiwgMjUwLCAxMSwgNCwgMjIzLCAxLCAKLSAgICAxMSwgNCwgMjIyLCAyNTIsIDExLCA0LCAyMjMsIDExLCAxMSwgNCwgMjIzLCAxNywgMTEsIDQsIDIyMywgMTUsIDExLCA0LCAKLSAgICAyMjIsIDI0MywgMTEsIDQsIDIyMiwgMjQyLCAxMSwgNCwgMjIyLCAyNDgsIDExLCA0LCAyMjIsIDI0NiwgMTEsIDQsIDIyMiwgCi0gICAgMjQ0LCAxMSwgNCwgMjIyLCAyNDUsIDExLCA0LCAyMzYsIDE0NiwgMTEsIDQsIDIzNiwgMTQ1LCAxMSwgNCwgMjM2LCAxNTIsIAotICAgIDExLCA0LCAyMzYsIDE0NywgMTEsIDQsIDIzNiwgMTQ5LCAxMSwgNCwgMjM2LCAxNDgsIDExLCA0LCAyMzYsIDE1MSwgMTEsIAotICAgIDQsIDIzNiwgMTUwLCAxMSwgNCwgMjM2LCAxNTgsIDExLCA0LCAyMzYsIDE1NiwgMTEsIDQsIDIzNiwgMTYwLCAxMSwgNCwgCi0gICAgMjM2LCAxNTksIDExLCA0LCAyMzYsIDEzOSwgMTEsIDQsIDIzNiwgMTQwLCAxMSwgNCwgMjM2LCAxNDMsIDExLCA0LCAyMzYsIAotICAgIDE0MiwgMTEsIDQsIDIzNiwgMTQ0LCAxMSwgNCwgMjM2LCAxNTMsIDExLCA0LCAyMzYsIDE1NSwgMTEsIDQsIDIzNiwgMTU0LCAKLSAgICAxMSwgNCwgMjM2LCAxMzgsIDExLCA0LCAyMjIsIDUyLCAxMSwgNCwgMjIyLCA1MCwgMTEsIDQsIDIyMiwgMTAwLCAxMSwgNCwgCi0gICAgMjIyLCA1NSwgMTEsIDQsIDIyMiwgODIsIDExLCA0LCAyMjIsIDk2LCAxMSwgNCwgMjIyLCA5NSwgMTEsIDQsIDIyMywgNjEsIAotICAgIDExLCA0LCAyMDEsIDIwMSwgMTEsIDQsIDIyMywgNzYsIDExLCA0LCAyMjEsIDMyLCAxMSwgNCwgMjIxLCAzNCwgMTEsIDQsIAotICAgIDIyMSwgMzMsIDExLCA0LCAyMjEsIDE2NSwgMTEsIDQsIDIyMSwgMTUwLCAxMSwgNCwgMjIxLCAxOTEsIDExLCA0LCAyMjEsIAotICAgIDE3NiwgMTEsIDQsIDIyMiwgMjA5LCAxMSwgNCwgMjIyLCAyNDAsIDExLCA0LCAyMjIsIDIyNSwgMTEsIDQsIDIyMSwgMjcsIAotICAgIDExLCA0LCAyMjEsIDIzLCAxMSwgNCwgMjIxLCA4NCwgMTEsIDQsIDIyMSwgMzEsIDExLCA0LCAyMjEsIDI5LCAxMSwgNCwgCi0gICAgMjIxLCAzMCwgMTEsIDQsIDIzNiwgMjExLCAxMSwgNCwgMjM2LCAyMTAsIDExLCA0LCAyMzYsIDIxNiwgMTEsIDQsIDIzNiwgCi0gICAgMjEyLCAxMSwgNCwgMjM2LCAyMTMsIDExLCA0LCAyMzYsIDIxNSwgMTEsIDQsIDIzNiwgMjE0LCAxMSwgNCwgMjM2LCAyMjIsIAotICAgIDExLCA0LCAyMzYsIDIyMCwgMTEsIDQsIDIzNiwgMjI0LCAxMSwgNCwgMjM2LCAyMjMsIDExLCA0LCAyMzYsIDIwMywgMTEsIAotICAgIDQsIDIzNiwgMjA1LCAxMSwgNCwgMjM2LCAyMDQsIDExLCA0LCAyMzYsIDIwNywgMTEsIDQsIDIzNiwgMjA5LCAxMSwgNCwgCi0gICAgMjM2LCAyMDgsIDExLCA0LCAyMzYsIDIxNywgMTEsIDQsIDIzNiwgMjE5LCAxMSwgNCwgMjM2LCAyMTgsIDExLCA0LCAyMzYsIAotICAgIDE5OSwgMTEsIDQsIDIzNiwgMTk4LCAxMSwgNCwgMjM2LCAyMDYsIDExLCA0LCAyMzYsIDIwMiwgMTEsIDQsIDIzNiwgMjAwLCAKLSAgICAxMSwgNCwgMjM2LCAyMDEsIDExLCA0LCAyMzYsIDE5MywgMTEsIDQsIDIzNiwgMTkyLCAxMSwgNCwgMjM2LCAxOTcsIDExLCAKLSAgICA0LCAyMzYsIDE5NiwgMTEsIDQsIDIzNiwgMTk0LCAxMSwgNCwgMjM2LCAxOTUsIDExLCA0LCAyMjcsIDkwLCAxMSwgNCwgCi0gICAgMjI3LCA4MiwgMTEsIDQsIDIyNywgMTQ4LCAxMSwgNCwgMjI3LCAxMDAsIDExLCA0LCAyMjcsIDEzOSwgMTEsIDQsIDIyNywgCi0gICAgMTM4LCAxMSwgNCwgMjI3LCAxNDIsIDExLCA0LCAyMjcsIDE0MCwgMTEsIDQsIDIyOCwgMCwgMTEsIDQsIDIyNywgMjQ1LCAKLSAgICAxMSwgNCwgMjI4LCAxMTMsIDExLCA0LCAyMjgsIDExLCAxMSwgNCwgMjI2LCAyMTcsIDExLCA0LCAyMjYsIDIxNiwgMTEsIDQsIAotICAgIDIyNiwgMjE5LCAxMSwgNCwgMjI2LCAyMTgsIDExLCA0LCAyMjcsIDYsIDExLCA0LCAyMjYsIDI0OCwgMTEsIDQsIDIyNywgCi0gICAgNDksIDExLCA0LCAyMjcsIDExLCAxMSwgNCwgMjI3LCAxNjUsIDExLCA0LCAyMjcsIDIzNCwgMTEsIDQsIDIyNywgMTgyLCAKLSAgICAxMSwgNCwgMjI2LCAyMTEsIDExLCA0LCAyMjYsIDIwOSwgMTEsIDQsIDIyNiwgMjM5LCAxMSwgNCwgMjI2LCAyMTUsIDExLCAKLSAgICA0LCAyMjYsIDIxMywgMTEsIDQsIDIyNiwgMjE0LCAxMSwgNCwgMjI2LCAxOTAsIDExLCA0LCAyMjYsIDE4OSwgMTEsIDQsIAotICAgIDIyNiwgMTk5LCAxMSwgNCwgMjI2LCAxOTMsIDExLCA0LCAyMjYsIDE5MSwgMTEsIDQsIDIyNiwgMTkyLCAxMSwgNCwgMjM4LCAKLSAgICA1NCwgMTEsIDQsIDIzOCwgNTMsIDExLCA0LCAyMzgsIDgxLCAxMSwgNCwgMjM4LCA2NSwgMTEsIDQsIDIzOCwgNzMsIDExLCAKLSAgICA0LCAyMzgsIDcyLCAxMSwgNCwgMjM4LCA3NSwgMTEsIDQsIDIzOCwgNzQsIDExLCA0LCAyMzgsIDIxNywgMTEsIDQsIDIzOCwgCi0gICAgMjEyLCAxMSwgNCwgMjM5LCA4LCAxMSwgNCwgMjM4LCAyMjcsIDExLCA0LCAyMzcsIDIwNSwgMTEsIDQsIDIzNywgMjA0LCAKLSAgICAxMSwgNCwgMjM3LCAyMDcsIDExLCA0LCAyMzcsIDIwNiwgMTEsIDQsIDIzOCwgMTgsIDExLCA0LCAyMzgsIDE2LCAxMSwgNCwgCi0gICAgMjM4LCAzOSwgMTEsIDQsIDIzOCwgMjYsIDExLCA0LCAyMzgsIDE1OSwgMTEsIDQsIDIzOCwgMTU3LCAxMSwgNCwgMjM4LCAKLSAgICAxOTAsIDExLCA0LCAyMzgsIDE3MCwgMTEsIDQsIDIzNywgMTk0LCAxMSwgNCwgMjM3LCAxOTMsIDExLCA0LCAyMzcsIDIzMCwgCi0gICAgMTEsIDQsIDIzNywgMjAzLCAxMSwgNCwgMjM3LCAxOTUsIDExLCA0LCAyMzcsIDIwMiwgMTEsIDQsIDIyOSwgNjQsIDExLCA0LCAKLSAgICAyMjksIDYxLCAxMSwgNCwgMjI5LCAxMDAsIDExLCA0LCAyMjksIDc4LCAxMSwgNCwgMjI5LCA4OSwgMTEsIDQsIDIyOSwgOTMsIAotICAgIDExLCA0LCAyMjksIDkxLCAxMSwgNCwgMjI5LCAyMjYsIDExLCA0LCAyMjksIDIwOSwgMTEsIDQsIDE3MywgMTEsIDQsIDIyOSwgCi0gICAgMjUzLCAxMSwgNCwgMjI4LCAxODcsIDExLCA0LCAyMjgsIDE5MiwgMTEsIDQsIDIyOCwgMTg5LCAxMSwgNCwgMjI4LCAyNTAsIAotICAgIDExLCA0LCAyMjgsIDI0NSwgMTEsIDQsIDIyOSwgMjYsIDExLCA0LCAyMjksIDEsIDExLCA0LCAyMjksIDE3MCwgMTEsIDQsIAotICAgIDIyOSwgMTUzLCAxMSwgNCwgMjI5LCAyMDEsIDExLCA0LCAyMjksIDE3NCwgMTEsIDQsIDIyOCwgMTc1LCAxMSwgNCwgMjI4LCAKLSAgICAxNzEsIDExLCA0LCAyMjgsIDIwOSwgMTEsIDQsIDIyOCwgMTg2LCAxMSwgNCwgMjI4LCAxNzksIDExLCA0LCAyMjgsIDE4MywgCi0gICAgMTEsIDQsIDIzOCwgMTQxLCAxMSwgNCwgMjM4LCAxNDAsIDExLCA0LCAyMzgsIDE0NSwgMTEsIDQsIDIzOCwgMTQyLCAxMSwgCi0gICAgNCwgMjM4LCAxNDQsIDExLCA0LCAyMzgsIDE0MywgMTEsIDQsIDIzOCwgMTUyLCAxMSwgNCwgMjM4LCAxNTEsIDExLCA0LCAKLSAgICAyMzgsIDE1NSwgMTEsIDQsIDIzOCwgMTUzLCAxMSwgNCwgMjM4LCAxMzIsIDExLCA0LCAyMzgsIDEzMSwgMTEsIDQsIDIzOCwgCi0gICAgMTM0LCAxMSwgNCwgMjM4LCAxMzMsIDExLCA0LCAyMzgsIDEzNywgMTEsIDQsIDIzOCwgMTM2LCAxMSwgNCwgMjM4LCAxMzksIAotICAgIDExLCA0LCAyMzgsIDEzOCwgMTEsIDQsIDIzOCwgMTQ3LCAxMSwgNCwgMjM4LCAxNDYsIDExLCA0LCAyMzgsIDE1MCwgMTEsIAotICAgIDQsIDIzOCwgMTQ4LCAxMSwgNCwgMjM4LCAxMjcsIDExLCA0LCAyMzgsIDEyNiwgMTEsIDQsIDIzOCwgMTM1LCAxMSwgNCwgCi0gICAgMjM4LCAxMzAsIDExLCA0LCAyMzgsIDEyOCwgMTEsIDQsIDIzOCwgMTI5LCAxMSwgNCwgMjI0LCAxNzQsIDExLCA0LCAyMjQsIAotICAgIDE3NSwgMTEsIDQsIDIyNCwgMTkzLCAxMSwgNCwgMjI0LCAxOTIsIDExLCA0LCAyMjQsIDE5NSwgMTEsIDQsIDIyNCwgMTk0LCAKLSAgICAxMSwgNCwgMjI0LCAxNjUsIDExLCA0LCAyMjQsIDE2NywgMTEsIDQsIDIyNCwgMTY2LCAxMSwgNCwgMjI0LCAxNzAsIDExLCAKLSAgICA0LCAyMjQsIDE2OSwgMTEsIDQsIDIyNCwgMTcyLCAxMSwgNCwgMjI0LCAxNzEsIDExLCA0LCAyMjQsIDE3NiwgMTEsIDQsIAotICAgIDIyNCwgMTc4LCAxMSwgNCwgMjI0LCAxNzcsIDExLCA0LCAyMjQsIDE2MSwgMTEsIDQsIDIyNCwgMTYwLCAxMSwgNCwgMjI0LCAKLSAgICAxNjgsIDExLCA0LCAyMjQsIDE2NCwgMTEsIDQsIDIyNCwgMTYyLCAxMSwgNCwgMjI0LCAxNjMsIDExLCA0LCAyMzUsIDIzMywgCi0gICAgMTEsIDQsIDIzNSwgMjMyLCAxMSwgNCwgMjM1LCAyMzksIDExLCA0LCAyMzUsIDIzNCwgMTEsIDQsIDIzNSwgMjM2LCAxMSwgCi0gICAgNCwgMjM1LCAyMzUsIDExLCA0LCAyMzUsIDIzOCwgMTEsIDQsIDIzNSwgMjM3LCAxMSwgNCwgMjM1LCAyNDQsIDExLCA0LCAKLSAgICAyMzUsIDI0MywgMTEsIDQsIDIzNSwgMjQ2LCAxMSwgNCwgMjM1LCAyNDUsIDExLCA0LCAyMzUsIDIyNSwgMTEsIDQsIDIzNSwgCi0gICAgMjI0LCAxMSwgNCwgMjM1LCAyMjcsIDExLCA0LCAyMzUsIDIyNiwgMTEsIDQsIDIzNSwgMjI5LCAxMSwgNCwgMjM1LCAyMjgsIAotICAgIDExLCA0LCAyMzUsIDIzMSwgMTEsIDQsIDIzNSwgMjMwLCAxMSwgNCwgMjM1LCAyNDAsIDExLCA0LCAyMzUsIDI0MiwgMTEsIAotICAgIDQsIDIzNSwgMjQxLCAxMSwgNCwgMjIyLCAxNDgsIDExLCA0LCAyMjIsIDE1MCwgMTEsIDQsIDIyMiwgMTQ5LCAxMSwgNCwgCi0gICAgMjIyLCAxOTMsIDExLCA0LCAyMjIsIDE5MSwgMTEsIDQsIDIyMiwgMjAzLCAxMSwgNCwgMjIyLCAxOTYsIDExLCA0LCAyMjIsIAotICAgIDExMCwgMTEsIDQsIDIyMiwgMTA5LCAxMSwgNCwgMjIyLCAxMTEsIDExLCA0LCAyMjIsIDEyMCwgMTEsIDQsIDIyMiwgMTE3LCAKLSAgICAxMSwgNCwgMjIyLCAxMjgsIDExLCA0LCAyMjIsIDEyMiwgMTEsIDQsIDIyMiwgMTg0LCAxMSwgNCwgMjIyLCAxOTAsIDExLCAKLSAgICA0LCAyMjIsIDE4NiwgMTEsIDQsIDIzNiwgMjMwLCAxMSwgNCwgMjM2LCAyNDUsIDExLCA0LCAyMzYsIDI1NCwgMTEsIDQsIAotICAgIDIzNywgODMsIDExLCA0LCAyMzcsIDcyLCAxMSwgNCwgMTUyLCAxMSwgNCwgMjM3LCA5NCwgMTEsIDQsIDIzNiwgNiwgMTEsIAotICAgIDQsIDIzNiwgNSwgMTEsIDQsIDIzNiwgOCwgMTEsIDQsIDIzNiwgNywgMTEsIDQsIDIzNiwgNDYsIDExLCA0LCAyMzYsIDM3LCAKLSAgICAxMSwgNCwgMjM2LCAxMzYsIDExLCA0LCAyMzYsIDEwOSwgMTEsIDQsIDIzNywgMTgsIDExLCA0LCAyMzcsIDY3LCAxMSwgNCwgCi0gICAgMjM3LCAzMCwgMTEsIDQsIDIwNCwgODMsIDExLCA0LCAyMDQsIDY4LCAxMSwgNCwgMjA0LCAxMTEsIDExLCA0LCAyMDQsIDkzLCAKLSAgICAxMSwgNCwgMjAzLCAyMDYsIDExLCA0LCAyMDMsIDIwOCwgMTEsIDQsIDIwMywgMjA3LCAxMSwgNCwgMjAzLCAyMjksIDExLCAKLSAgICA0LCAyMDQsIDAsIDExLCA0LCAyMDMsIDIzOSwgMTEsIDQsIDIwNCwgNDIsIDExLCA0LCAyMDQsIDYyLCAxMSwgNCwgMjA0LCAKLSAgICA0NywgMTEsIDQsIDIwMiwgMjQsIDExLCA0LCAyMDIsIDIzLCAxMSwgNCwgMjAyLCAzOSwgMTEsIDQsIDIwMiwgMjcsIDExLCAKLSAgICA0LCAyMDIsIDMyLCAxMSwgNCwgMjAyLCAzNCwgMTEsIDQsIDIwMiwgMzMsIDExLCA0LCAyMDIsIDEwMCwgMTEsIDQsIDIwMiwgCi0gICAgOTcsIDExLCA0LCAyMDIsIDExNiwgMTEsIDQsIDIwMiwgMTA0LCAxMSwgNCwgMjAxLCAyNTUsIDExLCA0LCAyMDIsIDEsIDExLCAKLSAgICA0LCAyMDIsIDAsIDExLCA0LCAyMDIsIDEzLCAxMSwgNCwgMjAyLCAxMiwgMTEsIDQsIDIwMiwgMTcsIDExLCA0LCAyMDIsIAotICAgIDE0LCAxMSwgNCwgMjAyLCA4MiwgMTEsIDQsIDIwMiwgOTIsIDExLCA0LCAyMDIsIDg2LCAxMSwgNCwgMjAxLCAyNTEsIDExLCAKLSAgICA0LCAyMDEsIDI1MCwgMTEsIDQsIDIwMiwgNiwgMTEsIDQsIDIwMSwgMjU0LCAxMSwgNCwgMjAxLCAyNTIsIDExLCA0LCAyMDEsIAotICAgIDI1MywgMTEsIDQsIDIwMSwgMjM3LCAxMSwgNCwgMjAxLCAyMzYsIDExLCA0LCAyMDEsIDI0MiwgMTEsIDQsIDIwMSwgMjQwLCAKLSAgICAxMSwgNCwgMjAxLCAyMzgsIDExLCA0LCAyMDEsIDIzOSwgMTEsIDQsIDI0NiwgNTAsIDExLCA0LCAyNDYsIDQzLCAxMSwgNCwgCi0gICAgMjQ2LCA3OSwgMTEsIDQsIDI0NiwgNjMsIDExLCA0LCAyNDYsIDc2LCAxMSwgNCwgMjQ2LCA3MCwgMTEsIDQsIDI0NiwgNzgsIAotICAgIDExLCA0LCAyNDYsIDc3LCAxMSwgNCwgMjQ3LCAxNywgMTEsIDQsIDI0NywgOSwgMTEsIDQsIDI0NywgOTIsIDExLCA0LCAKLSAgICAyNDcsIDQ4LCAxMSwgNCwgMjQ1LCAxMDEsIDExLCA0LCAyNDUsIDEwMywgMTEsIDQsIDI0NSwgMTAyLCAxMSwgNCwgMjQ1LCAKLSAgICAxNTgsIDExLCA0LCAyNDUsIDE0OCwgMTEsIDQsIDI0NSwgMjU0LCAxMSwgNCwgMjQ1LCAxNzUsIDExLCA0LCAyNDYsIDIwMiwgCi0gICAgMTEsIDQsIDI0NiwgMjM4LCAxMSwgNCwgMjQ2LCAyMDcsIDExLCA0LCAyNDUsIDc3LCAxMSwgNCwgMjQ1LCA3NSwgMTEsIDQsIAotICAgIDI0NSwgMTEwLCAxMSwgNCwgMjQ1LCA5OSwgMTEsIDQsIDI0NSwgODMsIDExLCA0LCAyNDUsIDk2LCAxMSwgNCwgMjQ1LCA1NCwgCi0gICAgMTEsIDQsIDI0NSwgNTMsIDExLCA0LCAyNDUsIDY2LCAxMSwgNCwgMjQ1LCA2MCwgMTEsIDQsIDI0NSwgNTUsIDExLCA0LCAKLSAgICAyNDUsIDU3LCAxMSwgNCwgMjAxLCAyMjAsIDExLCA0LCAyMDEsIDIxOSwgMTEsIDQsIDIwMSwgMjI2LCAxMSwgNCwgMjAxLCAKLSAgICAyMjEsIDExLCA0LCAyMDEsIDIyMywgMTEsIDQsIDIwMSwgMjIyLCAxMSwgNCwgMjAxLCAyMjUsIDExLCA0LCAyMDEsIDIyNCwgCi0gICAgMTEsIDQsIDIwMSwgMjMyLCAxMSwgNCwgMjAxLCAyMzEsIDExLCA0LCAyMDEsIDIzNSwgMTEsIDQsIDIwMSwgMjMzLCAxMSwgCi0gICAgNCwgMjAxLCAyMTYsIDExLCA0LCAyMDEsIDIxOCwgMTEsIDQsIDIwMSwgMjE3LCAxMSwgNCwgMjAxLCAyMjcsIDExLCA0LCAKLSAgICAyMDEsIDIzMCwgMTEsIDQsIDIwMSwgMjI4LCAxMSwgNCwgMjAxLCAyMDksIDExLCA0LCAyMDEsIDIxMywgMTEsIDQsIDIwMSwgCi0gICAgMjEyLCAxMSwgNCwgMjAxLCAyMTAsIDExLCA0LCAyMDEsIDIxMSwgMTEsIDQsIDIwMSwgMjAzLCAxMSwgNCwgMjAxLCAyMDIsIAotICAgIDExLCA0LCAyMDEsIDIwOCwgMTEsIDQsIDIwMSwgMjA2LCAxMSwgNCwgMjAxLCAyMDQsIDExLCA0LCAyMDEsIDIwNSwgMTEsIAotICAgIDQsIDIyMCwgMjAxLCAxMSwgNCwgMjIwLCAyMDAsIDExLCA0LCAyMjAsIDIwNiwgMTEsIDQsIDIyMCwgMjAyLCAxMSwgNCwgCi0gICAgMjIwLCAyMDMsIDExLCA0LCAyMjAsIDIwNSwgMTEsIDQsIDIyMCwgMjA0LCAxMSwgNCwgMjIwLCAyMTEsIDExLCA0LCAyMjAsIAotICAgIDIxMCwgMTEsIDQsIDIyMCwgMjE0LCAxMSwgNCwgMjIwLCAyMTMsIDExLCA0LCAyMjAsIDE5NCwgMTEsIDQsIDIyMCwgMTk1LCAKLSAgICAxMSwgNCwgMjIwLCAxOTgsIDExLCA0LCAyMjAsIDE5OSwgMTEsIDQsIDIyMCwgMjA3LCAxMSwgNCwgMjIwLCAyMDksIDExLCAKLSAgICA0LCAyMjAsIDE4OSwgMTEsIDQsIDIyMCwgMTk3LCAxMSwgNCwgMjIwLCAxOTMsIDExLCA0LCAyMjAsIDE5MCwgMTEsIDQsIAotICAgIDIyMCwgMTkxLCAxMSwgNCwgMjIwLCAxODQsIDExLCA0LCAyMjAsIDE4MywgMTEsIDQsIDIyMCwgMTg4LCAxMSwgNCwgMjIwLCAKLSAgICAxODcsIDExLCA0LCAyMjAsIDE4NSwgMTEsIDQsIDIyMCwgMTg2LCAxMSwgNCwgMjEyLCA5MCwgMTEsIDQsIDE5NSwgMTEsIDQsIAotICAgIDIxMiwgMTYyLCAxMSwgNCwgMjEyLCA5MywgMTEsIDQsIDIxMiwgMTUwLCAxMSwgNCwgMjEyLCAxNTMsIDExLCA0LCAyMTIsIAotICAgIDE1MSwgMTEsIDQsIDIxNCwgMjI1LCAxMSwgNCwgMjE0LCAyMTEsIDExLCA0LCAyMTUsIDM2LCAxMSwgNCwgMjE0LCAyMzMsIAotICAgIDExLCA0LCAyMTAsIDIwNCwgMTEsIDQsIDIxMCwgMjA2LCAxMSwgNCwgMjEwLCAyMDUsIDExLCA0LCAyMTEsIDI0NCwgMTEsIAotICAgIDQsIDIxMSwgMjMzLCAxMSwgNCwgMjEyLCAxMywgMTEsIDQsIDIxMSwgMjQ4LCAxMSwgNCwgMjEzLCAxMDMsIDExLCA0LCAKLSAgICAyMTQsIDE3NywgMTEsIDQsIDIxMywgMTMyLCAxMSwgNCwgMjEwLCAxODEsIDExLCA0LCAyMTAsIDE3OCwgMTEsIDQsIDIxMSwgCi0gICAgMTAsIDExLCA0LCAyMTAsIDIwMywgMTEsIDQsIDIxMCwgMTg1LCAxMSwgNCwgMjEwLCAxOTMsIDExLCA0LCAyMTAsIDgzLCAKLSAgICAxMSwgNCwgMjEwLCA4MiwgMTEsIDQsIDIxMCwgMTUxLCAxMSwgNCwgMjEwLCA5MSwgMTEsIDQsIDIxMCwgODUsIDExLCA0LCAKLSAgICAyMTAsIDkwLCAxMSwgNCwgMjExLCAxMjYsIDExLCA0LCAyMTEsIDEyNSwgMTEsIDQsIDIxMSwgMTMyLCAxMSwgNCwgMjExLCAKLSAgICAxMjcsIDExLCA0LCAyMTEsIDEyOSwgMTEsIDQsIDIxMSwgMTMxLCAxMSwgNCwgMjExLCAxMzAsIDExLCA0LCAyMTEsIDE0MSwgCi0gICAgMTEsIDQsIDIxMSwgMTM5LCAxMSwgNCwgMjExLCAxNjQsIDExLCA0LCAyMTEsIDE0MiwgMTEsIDQsIDIxMSwgMTIxLCAxMSwgCi0gICAgNCwgMjExLCAxMjAsIDExLCA0LCAyMTEsIDEyNCwgMTEsIDQsIDIxMSwgMTIyLCAxMSwgNCwgMjExLCAxMzUsIDExLCA0LCAKLSAgICAyMTEsIDEzOCwgMTEsIDQsIDIxMSwgMTM2LCAxMSwgNCwgMjExLCAxMTcsIDExLCA0LCAyMTEsIDExNSwgMTEsIDQsIDIxMSwgCi0gICAgMTE5LCAxMSwgNCwgMjExLCAxMTgsIDExLCA0LCAyMTEsIDExMCwgMTEsIDQsIDIxMSwgMTA5LCAxMSwgNCwgMjExLCAxMTQsIAotICAgIDExLCA0LCAyMTEsIDExMywgMTEsIDQsIDIxMSwgMTExLCAxMSwgNCwgMjExLCAxMTIsIDExLCA0LCAyMDIsIDc1LCAxMSwgNCwgCi0gICAgMjAyLCA3NCwgMTEsIDQsIDIwMiwgODAsIDExLCA0LCAyMDIsIDc3LCAxMSwgNCwgMjAyLCA1NCwgMTEsIDQsIDIwMiwgNTYsIAotICAgIDExLCA0LCAyMDIsIDU1LCAxMSwgNCwgMjAyLCA1OSwgMTEsIDQsIDIwMiwgNTgsIDExLCA0LCAyMDIsIDYzLCAxMSwgNCwgCi0gICAgMjAyLCA2MCwgMTEsIDQsIDIwMiwgNjgsIDExLCA0LCAyMDIsIDY3LCAxMSwgNCwgMjAyLCA3MSwgMTEsIDQsIDIwMiwgNjksIAotICAgIDExLCA0LCAyMDIsIDUwLCAxMSwgNCwgMjAyLCA0OSwgMTEsIDQsIDIwMiwgNTcsIDExLCA0LCAyMDIsIDUzLCAxMSwgNCwgCi0gICAgMjAyLCA1MSwgMTEsIDQsIDIwMiwgNTIsIDExLCA0LCAyMDIsIDQyLCAxMSwgNCwgMjAyLCA0MSwgMTEsIDQsIDIwMiwgNDYsIAotICAgIDExLCA0LCAyMDIsIDQ1LCAxMSwgNCwgMjAyLCA0MywgMTEsIDQsIDIwMiwgNDQsIDExLCA0LCAyNDYsIDE3NiwgMTEsIDQsIAotICAgIDI0NiwgMTcyLCAxMSwgNCwgMjQ2LCAxOTksIDExLCA0LCAyNDYsIDE4NSwgMTEsIDQsIDI0NiwgOTQsIDExLCA0LCAyNDYsIAotICAgIDkzLCAxMSwgNCwgMjQ2LCA5NiwgMTEsIDQsIDI0NiwgOTUsIDExLCA0LCAyNDYsIDEwOSwgMTEsIDQsIDI0NiwgMTA4LCAxMSwgCi0gICAgNCwgMjQ2LCAxMTYsIDExLCA0LCAyNDYsIDExMSwgMTEsIDQsIDI0NiwgMTQ3LCAxMSwgNCwgMjQ2LCAxNDUsIDExLCA0LCAKLSAgICAyNDYsIDE3MCwgMTEsIDQsIDI0NiwgMTU1LCAxMSwgNCwgMjQ2LCA4OCwgMTEsIDQsIDI0NiwgOTgsIDExLCA0LCAyNDYsIAotICAgIDkyLCAxMSwgNCwgMjQ2LCA4OSwgMTEsIDQsIDI0NiwgOTEsIDExLCA0LCAyNDYsIDgxLCAxMSwgNCwgMjQ2LCA4MCwgMTEsIAotICAgIDQsIDI0NiwgODUsIDExLCA0LCAyNDYsIDg0LCAxMSwgNCwgMjQ2LCA4MiwgMTEsIDQsIDI0NiwgODMsIDExLCA0LCAyMTUsIAotICAgIDE4MSwgMTEsIDQsIDIxNSwgMTg1LCAxMSwgNCwgMjE1LCAxNjMsIDExLCA0LCAyMTUsIDE2NCwgMTEsIDQsIDIxNSwgMTY4LCAKLSAgICAxMSwgNCwgMjE1LCAxNjcsIDExLCA0LCAyMTUsIDE3MSwgMTEsIDQsIDIxNSwgMTY5LCAxMSwgNCwgMjE1LCAxNzUsIDExLCAKLSAgICA0LCAyMTUsIDE3NCwgMTEsIDQsIDIxNSwgMTgwLCAxMSwgNCwgMjE1LCAxNzYsIDExLCA0LCAyMTUsIDE1OSwgMTEsIDQsIAotICAgIDIxNSwgMTU3LCAxMSwgNCwgMjE1LCAxNjUsIDExLCA0LCAyMTUsIDE2MiwgMTEsIDQsIDIxNSwgMTYwLCAxMSwgNCwgMjE1LCAKLSAgICAxNjEsIDExLCA0LCAyMTUsIDE1MiwgMTEsIDQsIDIxNSwgMTUxLCAxMSwgNCwgMjE1LCAxNTYsIDExLCA0LCAyMTUsIDE1NSwgCi0gICAgMTEsIDQsIDIxNSwgMTUzLCAxMSwgNCwgMjE1LCAxNTQsIDExLCA0LCAyMjEsIDE0NSwgMTEsIDQsIDIyMSwgMTQ0LCAxMSwgCi0gICAgNCwgMjIxLCAxNDcsIDExLCA0LCAyMjEsIDE0NiwgMTEsIDQsIDIyMSwgMTM2LCAxMSwgNCwgMjIxLCAxMzgsIDExLCA0LCAKLSAgICAyMjEsIDEzNywgMTEsIDQsIDIyMSwgMTQwLCAxMSwgNCwgMjIxLCAxMzksIDExLCA0LCAyMjEsIDE0MywgMTEsIDQsIDIyMSwgCi0gICAgMTQyLCAxMSwgNCwgMjIxLCAxMzAsIDExLCA0LCAyMjEsIDEyOSwgMTEsIDQsIDIyMSwgMTM1LCAxMSwgNCwgMjIxLCAxMzMsIAotICAgIDExLCA0LCAyMjEsIDEzMSwgMTEsIDQsIDIyMSwgMTMyLCAxMSwgNCwgMjIxLCAxMjQsIDExLCA0LCAyMjEsIDEyMywgMTEsIAotICAgIDQsIDIyMSwgMTI4LCAxMSwgNCwgMjIxLCAxMjcsIDExLCA0LCAyMjEsIDEyNSwgMTEsIDQsIDIyMSwgMTI2LCAxMSwgNCwgCi0gICAgMjEzLCA1MywgMTEsIDQsIDIxMywgNDgsIDExLCA0LCAyMTMsIDkwLCAxMSwgNCwgMjEzLCA2NCwgMTEsIDQsIDIxMiwgMTg4LCAKLSAgICAxMSwgNCwgMjEyLCAxOTAsIDExLCA0LCAyMTIsIDE4OSwgMTEsIDQsIDIxMiwgMjEyLCAxMSwgNCwgMjEyLCAyMDgsIDExLCAKLSAgICA0LCAyMTIsIDI0MiwgMTEsIDQsIDIxMiwgMjMyLCAxMSwgNCwgMjEzLCAyMSwgMTEsIDQsIDIxMywgMTQsIDExLCA0LCAyMTMsIAotICAgIDQzLCAxMSwgNCwgMjEzLCAzMCwgMTEsIDQsIDIxMiwgMTg0LCAxMSwgNCwgMjEyLCAxODEsIDExLCA0LCAyMTIsIDE5OSwgCi0gICAgMTEsIDQsIDIxMiwgMTg3LCAxMSwgNCwgMjEyLCAxODUsIDExLCA0LCAyMTIsIDE4NiwgMTEsIDQsIDIxMiwgMTY1LCAxMSwgCi0gICAgNCwgMjEyLCAxNjQsIDExLCA0LCAyMTIsIDE3MSwgMTEsIDQsIDIxMiwgMTY4LCAxMSwgNCwgMjEyLCAxNjYsIDExLCA0LCAKLSAgICAyMTIsIDE2NywgMTEsIDQsIDIxNiwgMTcyLCAxMSwgNCwgMjE2LCAxNjYsIDExLCA0LCAyMTYsIDIyMCwgMTEsIDQsIDIxNiwgCi0gICAgMTc4LCAxMSwgNCwgMjE1LCAxMjIsIDExLCA0LCAyMTUsIDEyNCwgMTEsIDQsIDIxNSwgMTIzLCAxMSwgNCwgMjE1LCAxOTksIAotICAgIDExLCA0LCAyMTUsIDE4NywgMTEsIDQsIDIxNSwgMjI3LCAxMSwgNCwgMjE1LCAyMDMsIDExLCA0LCAyMTYsIDY2LCAxMSwgNCwgCi0gICAgMjE2LCAxNTgsIDExLCA0LCAyMTYsIDEwNSwgMTEsIDQsIDIxNSwgMTE1LCAxMSwgNCwgMjE1LCAxMTIsIDExLCA0LCAyMTUsIAotICAgIDE0NSwgMTEsIDQsIDIxNSwgMTIxLCAxMSwgNCwgMjE1LCAxMTcsIDExLCA0LCAyMTUsIDExOCwgMTEsIDQsIDIxNSwgOTcsIAotICAgIDExLCA0LCAyMTUsIDk2LCAxMSwgNCwgMjE1LCAxMDIsIDExLCA0LCAyMTUsIDEwMCwgMTEsIDQsIDIxNSwgOTgsIDExLCA0LCAKLSAgICAyMTUsIDk5LCAxMSwgNCwgMjMwLCAxMzEsIDExLCA0LCAyMzAsIDEzMCwgMTEsIDQsIDIzMCwgMTQxLCAxMSwgNCwgMjMwLCAKLSAgICAxMzIsIDExLCA0LCAyMzAsIDEzNywgMTEsIDQsIDIzMCwgMTM2LCAxMSwgNCwgMjMwLCAxMzksIDExLCA0LCAyMzAsIDEzOCwgCi0gICAgMTEsIDQsIDIzMCwgNzIsIDExLCA0LCAyMzAsIDcxLCAxMSwgNCwgMjMwLCA3NCwgMTEsIDQsIDIzMCwgNzMsIDExLCA0LCAKLSAgICAyMzAsIDg4LCAxMSwgNCwgMjMwLCA4NiwgMTEsIDQsIDIzMCwgMTAxLCAxMSwgNCwgMjMwLCA5MCwgMTEsIDQsIDIzMCwgNjUsIAotICAgIDExLCA0LCAyMzAsIDYzLCAxMSwgNCwgMjMwLCA4MiwgMTEsIDQsIDIzMCwgNzAsIDExLCA0LCAyMzAsIDY3LCAxMSwgNCwgCi0gICAgMjMwLCA2OCwgMTEsIDQsIDIzMCwgNTcsIDExLCA0LCAyMzAsIDU2LCAxMSwgNCwgMjMwLCA2MSwgMTEsIDQsIDIzMCwgNjAsIAotICAgIDExLCA0LCAyMzAsIDU4LCAxMSwgNCwgMjMwLCA1OSwgMTEsIDQsIDIxNywgODEsIDExLCA0LCAyMTcsIDc5LCAxMSwgNCwgCi0gICAgMjE3LCA4OCwgMTEsIDQsIDIxNywgODIsIDExLCA0LCAyMTcsIDg1LCAxMSwgNCwgMjE3LCA4NCwgMTEsIDQsIDIxNywgODcsIAotICAgIDExLCA0LCAyMTcsIDg2LCAxMSwgNCwgMjE3LCAzMiwgMTEsIDQsIDIxNywgMjksIDExLCA0LCAyMTcsIDM0LCAxMSwgNCwgCi0gICAgMjE3LCAzMywgMTEsIDQsIDIxNywgNjgsIDExLCA0LCAyMTcsIDY3LCAxMSwgNCwgMjE3LCA3NywgMTEsIDQsIDIxNywgNzEsIAotICAgIDExLCA0LCAyMTcsIDI0LCAxMSwgNCwgMjE3LCAyMCwgMTEsIDQsIDIxNywgNjUsIDExLCA0LCAyMTcsIDI4LCAxMSwgNCwgCi0gICAgMjE3LCAyNiwgMTEsIDQsIDIxNywgMjcsIDExLCA0LCAyMTcsIDQsIDExLCA0LCAyMTcsIDIsIDExLCA0LCAyMTcsIDE0LCAKLSAgICAxMSwgNCwgMjE3LCA3LCAxMSwgNCwgMjE3LCA1LCAxMSwgNCwgMjE3LCA2LCAxMSwgNCwgMjMwLCAxMjAsIDExLCA0LCAyMzAsIAotICAgIDExOSwgMTEsIDQsIDIzMCwgMTI2LCAxMSwgNCwgMjMwLCAxMjEsIDExLCA0LCAyMzAsIDEyMywgMTEsIDQsIDIzMCwgMTIyLCAKLSAgICAxMSwgNCwgMjMwLCAxMjUsIDExLCA0LCAyMzAsIDEyNCwgMTEsIDQsIDIzMCwgMTExLCAxMSwgNCwgMjMwLCAxMTMsIDExLCAKLSAgICA0LCAyMzAsIDExMiwgMTEsIDQsIDIzMCwgMTE2LCAxMSwgNCwgMjMwLCAxMTUsIDExLCA0LCAyMzAsIDExOCwgMTEsIDQsIAotICAgIDIzMCwgMTE3LCAxMSwgNCwgMjMwLCAxMDcsIDExLCA0LCAyMzAsIDEwNiwgMTEsIDQsIDIzMCwgMTE0LCAxMSwgNCwgMjMwLCAKLSAgICAxMTAsIDExLCA0LCAyMzAsIDEwOCwgMTEsIDQsIDIzMCwgMTA5LCAxMSwgNCwgMjMwLCAxMDMsIDExLCA0LCAyMzAsIDEwMiwgCi0gICAgMTEsIDQsIDIzMCwgMTA1LCAxMSwgNCwgMjMwLCAxMDQsIDExLCA0LCAyMjIsIDI1LCAxMSwgNCwgMjIyLCAyNCwgMTEsIDQsIAotICAgIDIyMiwgMzIsIDExLCA0LCAyMjIsIDI2LCAxMSwgNCwgMjIyLCAyOCwgMTEsIDQsIDIyMiwgMjcsIDExLCA0LCAyMjIsIDMxLCAKLSAgICAxMSwgNCwgMjIyLCAyOSwgMTEsIDQsIDIyMiwgMTQsIDExLCA0LCAyMjIsIDE1LCAxMSwgNCwgMjIyLCAyMCwgMTEsIDQsIAotICAgIDIyMiwgMTksIDExLCA0LCAyMjIsIDIzLCAxMSwgNCwgMjIyLCAyMSwgMTEsIDQsIDIyMiwgOSwgMTEsIDQsIDIyMiwgMTgsIAotICAgIDExLCA0LCAyMjIsIDEzLCAxMSwgNCwgMjIyLCAxMCwgMTEsIDQsIDIyMiwgMTEsIDExLCA0LCAyMjIsIDQsIDExLCA0LCAKLSAgICAyMjIsIDMsIDExLCA0LCAyMjIsIDgsIDExLCA0LCAyMjIsIDcsIDExLCA0LCAyMjIsIDUsIDExLCA0LCAyMjIsIDYsIDExLCAKLSAgICA0LCAyMjAsIDIzNiwgMTEsIDQsIDIyMCwgMjM1LCAxMSwgNCwgMjIwLCAyNDgsIDExLCA0LCAyMjAsIDI0MCwgMTEsIDQsIAotICAgIDIyMCwgMjQ1LCAxMSwgNCwgMjIwLCAyNDQsIDExLCA0LCAyMjAsIDI0NywgMTEsIDQsIDIyMCwgMjQ2LCAxMSwgNCwgMjIwLCAKLSAgICAyMjEsIDExLCA0LCAyMjAsIDIyMywgMTEsIDQsIDIyMCwgMjIyLCAxMSwgNCwgMjIwLCAyMjgsIDExLCA0LCAyMjAsIDIyNywgCi0gICAgMTEsIDQsIDIyMCwgMjMzLCAxMSwgNCwgMjIwLCAyMjksIDExLCA0LCAyMjAsIDIxOSwgMTEsIDQsIDIyMCwgMjE3LCAxMSwgCi0gICAgNCwgMjIwLCAyMjYsIDExLCA0LCAyMjAsIDIyMCwgMTEsIDQsIDIwMywgMTYyLCAxMSwgNCwgMjAzLCAxNjEsIDExLCA0LCAKLSAgICAyMDMsIDE3MCwgMTEsIDQsIDIwMywgMTY0LCAxMSwgNCwgMjAzLCAxNjYsIDExLCA0LCAyMDMsIDE2NSwgMTEsIDQsIDIwMywgCi0gICAgMTY4LCAxMSwgNCwgMjAzLCAxNjcsIDExLCA0LCAyMDMsIDE1MCwgMTEsIDQsIDIwMywgMTUxLCAxMSwgNCwgMjAzLCAxNTUsIAotICAgIDExLCA0LCAyMDMsIDE1NCwgMTEsIDQsIDIwMywgMTYwLCAxMSwgNCwgMjAzLCAxNTgsIDExLCA0LCAyMDMsIDEyOCwgMTEsIAotICAgIDQsIDIwMywgMTI2LCAxMSwgNCwgMjAzLCAxNDEsIDExLCA0LCAyMDMsIDEzMSwgMTEsIDQsIDIwMywgMTI5LCAxMSwgNCwgCi0gICAgMjAzLCAxMzAsIDExLCA0LCAyMDIsIDI1MywgMTEsIDQsIDIwMiwgMjUxLCAxMSwgNCwgMjAzLCAxMSwgMTEsIDQsIDIwMiwgCi0gICAgMjU0LCAxMSwgNCwgMjAzLCA1LCAxMSwgNCwgMjAzLCA0LCAxMSwgNCwgMjAzLCA4LCAxMSwgNCwgMjAzLCA2LCAxMSwgNCwgCi0gICAgMjAyLCAxOTEsIDExLCA0LCAyMDIsIDE5MCwgMTEsIDQsIDIwMiwgMTk0LCAxMSwgNCwgMjAyLCAxOTIsIDExLCA0LCAyMDIsIAotICAgIDIyNywgMTEsIDQsIDIwMiwgMjIzLCAxMSwgNCwgMjAyLCAyNDcsIDExLCA0LCAyMDIsIDIzMSwgMTEsIDQsIDIwMiwgMTgyLCAKLSAgICAxMSwgNCwgMjAyLCAxNzgsIDExLCA0LCAyMDIsIDIxMywgMTEsIDQsIDIwMiwgMTg5LCAxMSwgNCwgMjAyLCAxODUsIDExLCAKLSAgICA0LCAyMDIsIDE4NiwgMTEsIDQsIDIwMiwgMTYyLCAxMSwgNCwgMjAyLCAxNjEsIDExLCA0LCAyMDIsIDE2OSwgMTEsIDQsIAotICAgIDIwMiwgMTY1LCAxMSwgNCwgMjAyLCAxNjMsIDExLCA0LCAyMDIsIDE2NCwgMTEsIDQwLCAyMTcsIDY4LCAxMSwgNDAsIDIyNywgCi0gICAgMTQ4LCAxMSwgNDAsIDIyOSwgNjQsIDExLCA0MCwgMjIwLCAyNDAsIDExLCA0MCwgMjQ1LCA2MCwgMTEsIDQwLCAyMTEsIAotICAgIDEzMiwgMTEsIDQwLCAyMzgsIDEzOCwgMTEsIDQwLCAyMzgsIDE3MCwgMTEsIDQwLCAyMjQsIDE1NSwgMTEsIDQwLCAyMzUsIAotICAgIDIzMywgMTEsIDQwLCAyMjYsIDE5MiwgMTEsIDQwLCAyNDgsIDE3MCwgMTEsIDQwLCAyMjQsIDI3LCAxMSwgNDAsIDIwMiwgCi0gICAgMjQ3LCAxMSwgNDAsIDIxNywgMTU5LCAxMSwgNDAsIDIzNSwgMjI3LCAxMSwgNDAsIDIwOSwgMjEyLCAxMSwgNDAsIDIzOSwgCi0gICAgOCwgMTEsIDQwLCAyMDEsIDI1NCwgMTEsIDQwLCAyNDUsIDU0LCAxMSwgNDAsIDI0NCwgODAsIDExLCA0MCwgMjQ3LCAxNjAsIAotICAgIDExLCA0MCwgMjM4LCAxMzQsIDExLCA0MCwgMjIwLCAyMjksIDExLCA0MCwgMjA3LCAyMDMsIDExLCA0MCwgMjIwLCA5LCAxMSwgCi0gICAgNDAsIDIzMCwgMTA3LCAxMSwgNDAsIDIwMiwgMTMsIDExLCA0MCwgMjE3LCAxMzgsIDExLCA0MCwgMjM2LCAxNzgsIDExLCAKLSAgICA0MCwgMjAyLCAyNTMsIDExLCA0MCwgMjA0LCAxNTksIDExLCA0MCwgMjEyLCAxNzEsIDExLCA0MCwgMjA2LCA0NCwgMTEsIAotICAgIDQwLCAyMDIsIDExNiwgMTEsIDQwLCAyMzAsIDEwMSwgMTEsIDQwLCAyMjAsIDE5MywgMTEsIDQwLCAyMzAsIDEwNSwgMTEsIAotICAgIDQwLCAyMzgsIDE4LCAxMSwgNDAsIDIzMCwgMTI1LCAxMSwgNDAsIDIwNCwgMCwgMTEsIDQwLCAyNDIsIDQyLCAxMSwgNDAsIAotICAgIDIxMiwgMTg2LCAxMSwgNDAsIDIyNywgMTQyLCAxMSwgNDAsIDI0NSwgNjYsIDExLCA0MCwgMjQ1LCAxMDIsIDExLCA0MCwgCi0gICAgMjQ2LCA2MywgMTEsIDQwLCAyMzUsIDIzMCwgMTEsIDQwLCAyMTMsIDUzLCAxMSwgNDAsIDIwMSwgMjUzLCAxMSwgNDAsIAotICAgIDIxMiwgMjMyLCAxMSwgNDAsIDI0NiwgMTcwLCAxMSwgNDAsIDIwMSwgMjIzLCAxMSwgNDAsIDIyMywgNTEsIDExLCA0MCwgCi0gICAgMjI5LCAyMDEsIDIyNywgOTEsIDEsIDI0OSwgMzIsIDIyNywgOTEsIDEsIDE4NSwgMjI3LCA5MSwgMSwgMjE4LCAyMDgsIAotICAgIDIyNywgOTEsIDEsIDI0NCwgMjEyLCAyMjcsIDkxLCAxLCAyMTAsIDIyLCAyMjcsIDkxLCAxLCAyMDksIDEwOCwgMjI3LCA5MSwgCi0gICAgMSwgMjM5LCA4LCAyMjcsIDkxLCAxLCAxNzMsIDIyNywgOTEsIDEsIDIyOSwgMTQ0LCAyMjcsIDkxLCAxLCAyMzAsIDE4MSwgCi0gICAgMjI3LCA5MSwgMSwgMjQ3LCA5MiwgMjI3LCA5MSwgMSwgMjQ2LCAxOTksIDIyNywgOTEsIDEsIDI0MSwgMjU1LCAyMjcsIDkxLCAKLSAgICAxLCAyMDgsIDIwLCAyMjcsIDkxLCAxLCAyMDgsIDEwLCAyMjcsIDkxLCAxLCAxOTIsIDIyNywgOTEsIDEsIDIwMSwgMjAxLCAKLSAgICAyMjcsIDkxLCAxLCAyMjgsIDExMywgMjI3LCA5MSwgMSwgMjE1LCAzNiwgMjI3LCA5MSwgMSwgMjAyLCA4MCwgMjI3LCA5MSwgCi0gICAgMSwgMjAyLCAxMTYsIDIyNywgOTEsIDEsIDIyMiwgMjAzLCAyMjcsIDkxLCAxLCAxNTIsIDIyNywgOTEsIDEsIDIwMywgMTgyLCAKLSAgICAyMjcsIDkxLCAxLCAyMzcsIDEyLCAyMjcsIDkxLCAxLCAyNDAsIDEwOCwgMjI3LCA5MSwgMSwgMjA0LCAxMTEsIDIyNywgOTEsIAotICAgIDEsIDIxMywgOTAsIDIyNywgOTEsIDEsIDE5OCwgMjI3LCA5MSwgMSwgMjM4LCAxMTksIDIyNywgOTEsIDEsIDYzLCAyMjcsIAotICAgIDkxLCAxLCAyNTEsIDEwOSwgMjI3LCA5MSwgMSwgNzQsIDIyNywgOTEsIDEsIDI0MCwgMjM4LCAyMjcsIDkxLCAxLCA3NSwgCi0gICAgMjI3LCA5MSwgMSwgNzgsIDIyNywgOTEsIDEsIDY4LCAyMjcsIDkxLCAxLCAyMDcsIDI0LCAyMjcsIDkxLCAxLCAyMDcsIDE4LCAKLSAgICAyMjcsIDkxLCAxLCAyMjAsIDczLCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyMDksIDIsIDIyNywgOTEsIDEsIDE0MywgCi0gICAgMjIzLCAxMTEsIDIxOCwgNjksIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDI0NSwgNjUsIDIyNywgOTEsIDEsIDE0MywgCi0gICAgMjIzLCAxNzAsIDI0OCwgMjMsIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDIwMSwgMjAxLCAyMjcsIDkxLCAxLCAxNDMsIAotICAgIDIyMywgMTcwLCAyMzAsIDE1MCwgMjI3LCA5MSwgMjE3LCAxNzksIDI0NSwgMjMzLCAyMjcsIDkxLCAyMTcsIDE3OSwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDQ4LCA0LCAyNDEsIDE2MSwgNDgsIDQsIDI0MSwgMTU3LCA0OCwgNCwgMjM3LCA0OCwgNDgsIDQsIAotICAgIDIwNCwgNTUsIDQ4LCA0LCAyMDQsIDU0LCA0OCwgNCwgMjE5LCAyMywgNDgsIDQsIDI0OCwgOTMsIDQ4LCA0LCAyNDgsIDE1MCwgCi0gICAgNDgsIDQsIDIyNSwgNDYsIDQ4LCA0LCAyMjgsIDIzOSwgNDgsIDQsIDIyNCwgMTg3LCA0OCwgNCwgMjM4LCAyMDMsIDQ4LCA0LCAKLSAgICAyNDAsIDUzLCA0OCwgNCwgMjA2LCA1MCwgNDgsIDQsIDIwOSwgMTc2LCA0OCwgNCwgMjA5LCA5MCwgNDgsIDQsIDI0MywgCi0gICAgMjQ3LCA0OCwgNCwgMjQzLCAyNDQsIDQ4LCA0LCAyMjcsIDIyNiwgNDgsIDQsIDIxNiwgMTM1LCA0OCwgNCwgMjQ0LCA2MSwgCi0gICAgNDgsIDQsIDIyMywgMTYsIDQ4LCA0LCAyMTQsIDE2NSwgNDgsIDQsIDIxMywgNDEsIDQ4LCA0LCAyMDIsIDkwLCA0OCwgNCwgCi0gICAgMjAyLCA3MCwgNDgsIDQsIDI0NiwgMjMwLCA0OCwgNCwgMjMwLCAxNTksIDQ4LCA0LCAyMjIsIDM5LCA0OCwgNCwgMjAzLCAKLSAgICA0OSwgNDgsIDQsIDIyOSwgMTk4LCA0OCwgNCwgMjIyLCAxNzYsIDQ4LCA0LCAyMzgsIDE4MiwgNDgsIDQsIDIyNSwgOCwgNDgsIAotICAgIDQsIDIyMiwgMjM1LCA0OCwgNCwgMjIxLCAwLCA0OCwgNCwgNzUsIDQ4LCA0LCAyMzEsIDQ5LCA0OCwgNCwgMjM3LCAzLCA0OCwgCi0gICAgNCwgMjM2LCAyMzgsIDQ4LCA0LCAyMDQsIDMwLCA0OCwgNCwgMjA0LCAxOCwgNDgsIDQsIDIxOCwgMTY3LCA0OCwgNCwgMjQ4LCAKLSAgICA5MSwgNDgsIDQsIDI0OCwgODYsIDQ4LCA0LCAyMjUsIDM5LCA0OCwgNCwgMjI4LCAyMzYsIDQ4LCA0LCAyMjQsIDE4NCwgNDgsIAotICAgIDQsIDIzOCwgMTk5LCA0OCwgNCwgMjQwLCAyNiwgNDgsIDQsIDIwNSwgMjMwLCA0OCwgNCwgMjA5LCAyLCA0OCwgNCwgMjA5LCAKLSAgICA3MCwgNDgsIDQsIDI0MywgMjM5LCA0OCwgNCwgMjQzLCAyNDMsIDQ4LCA0LCAyMjcsIDE0OCwgNDgsIDQsIDIxNiwgNTcsIAotICAgIDQ4LCA0LCAyNDMsIDIzMywgNDgsIDQsIDIyMywgMTAsIDQ4LCA0LCAyMTIsIDE2MiwgNDgsIDQsIDIxMywgMTEsIDQ4LCA0LCAKLSAgICAyMDIsIDM5LCA0OCwgNCwgMjAyLCA2NiwgNDgsIDQsIDI0NiwgNzksIDQ4LCA0LCAyMzAsIDE0MSwgNDgsIDQsIDIyMiwgMzIsIAotICAgIDQ4LCA0LCAyMDMsIDExLCA0OCwgNCwgMjI5LCAxMDAsIDQ4LCA0LCAyMjIsIDE2OCwgNDgsIDQsIDIzOCwgODEsIDQ4LCA0LCAKLSAgICAyMjQsIDE1NSwgNDgsIDQsIDIyMiwgMTAwLCA0OCwgNCwgMjIwLCAyNDgsIDQ4LCA0LCA2MywgNDgsIDQsIDI1MCwgMjMxLCAKLSAgICA0OCwgNCwgMjIyLCAxOTgsIDQ4LCA0LCAxNTIsIDQ4LCA0LCAyMzcsIDEyNiwgNDgsIDQsIDIwNCwgMTExLCA0OCwgNCwgCi0gICAgMjA0LCA5NywgNDgsIDQsIDE4NSwgNDgsIDQsIDI0OCwgOTgsIDQ4LCA0LCAyNDksIDMyLCA0OCwgNCwgMjI1LCA1NCwgNDgsIAotICAgIDQsIDIyOCwgMjQ0LCA0OCwgNCwgMjI4LCAyNDIsIDQ4LCA0LCAyMjQsIDE5MSwgNDgsIDQsIDIzOCwgMjA3LCA0OCwgNCwgCi0gICAgMjQwLCAxMDgsIDQ4LCA0LCAyMDYsIDg2LCA0OCwgNCwgMjEwLCAyMiwgNDgsIDQsIDIwOSwgMTA4LCA0OCwgNCwgMjQ0LCAxLCAKLSAgICA0OCwgNCwgMjQzLCAyNDYsIDQ4LCA0LCAyMjgsIDExMywgNDgsIDQsIDIxNiwgMjIwLCA0OCwgNCwgMjQ0LCAyMTIsIDQ4LCAKLSAgICA0LCAyMjMsIDI1LCA0OCwgNCwgMjE1LCAzNiwgNDgsIDQsIDIxMywgOTAsIDQ4LCA0LCAyMDIsIDExNiwgNDgsIDQsIDIwMiwgCi0gICAgODAsIDQ4LCA0LCAyNDcsIDkyLCA0OCwgNCwgMjMwLCAxODEsIDQ4LCA0LCAyMjIsIDQ4LCA0OCwgNCwgMTk4LCA0OCwgNCwgCi0gICAgMTczLCA0OCwgNCwgMjMwLCA0LCA0OCwgNCwgMjIyLCAxODIsIDQ4LCA0LCAyMzksIDgsIDQ4LCA0LCAxOTIsIDQ4LCA0LCAKLSAgICAyMDEsIDIwMSwgNDgsIDQsIDIyMSwgMTEsIDQ4LCA0LCAyMjAsIDE4LCA0OCwgNCwgMjIwLCAxMywgNDgsIDQsIDIzNiwgCi0gICAgMTE3LCA0OCwgNCwgMjAzLCAyNDQsIDQ4LCA0LCAyMDMsIDI0MCwgNDgsIDQsIDIxOCwgNDUsIDQ4LCA0LCAyNDgsIDg5LCAKLSAgICA0OCwgNCwgMjQ4LCAxMCwgNDgsIDQsIDIyNSwgMzQsIDQ4LCA0LCAyMjgsIDIzNCwgNDgsIDQsIDIyNCwgMTgwLCA0OCwgNCwgCi0gICAgMjM4LCAxOTUsIDQ4LCA0LCAyMzksIDE3NSwgNDgsIDQsIDIwNSwgMTc2LCA0OCwgNCwgMjA4LCAxNDgsIDQ4LCA0LCAyMDksIAotICAgIDQyLCA0OCwgNCwgMjQzLCAyMzYsIDQ4LCA0LCAyNDMsIDI0MSwgNDgsIDQsIDIyNywgMTgsIDQ4LCA0LCAyMTUsIDIwOCwgCi0gICAgNDgsIDQsIDI0MywgOTAsIDQ4LCA0LCAyMjIsIDI1MywgNDgsIDQsIDIxMSwgMjUwLCA0OCwgNCwgMjEyLCAyMzYsIDQ4LCA0LCAKLSAgICAyMDIsIDE1LCA0OCwgNCwgMjAyLCA2MSwgNDgsIDQsIDI0NSwgMTgwLCA0OCwgNCwgMjMwLCA5MSwgNDgsIDQsIDIyMiwgMjIsIAotICAgIDQ4LCA0LCAyMDIsIDIzMiwgNDgsIDQsIDIyOSwgNiwgNDgsIDQsIDIyMiwgMTY2LCA0OCwgNCwgMjM4LCAyOCwgNDgsIDQsIAotICAgIDIyNCwgMzUsIDQ4LCA0LCAyMjEsIDE4MCwgNDgsIDQsIDIyMCwgMjMwLCA0OCwgNCwgNjgsIDQ4LCA0LCAyMDYsIDI1NSwgCi0gICAgNDgsIDQsIDIzNiwgMjYsIDQ4LCA0LCAyMzYsIDEzLCA0OCwgNCwgMjAzLCAyMTcsIDQ4LCA0LCAyMDMsIDIxMCwgNDgsIDQsIAotICAgIDIxNywgMTkxLCA0OCwgNCwgMjQ4LCA4OCwgNDgsIDQsIDI0NywgMTkzLCA0OCwgNCwgMjI1LCAzMywgNDgsIDQsIDIyOCwgCi0gICAgMjMyLCA0OCwgNCwgMjI0LCAxNzksIDQ4LCA0LCAyMzgsIDE5NCwgNDgsIDQsIDIzOSwgMTA4LCA0OCwgNCwgMjA0LCAxNjMsIAotICAgIDQ4LCA0LCAyMDcsIDIwMywgNDgsIDQsIDIwOSwgMjIsIDQ4LCA0LCAyNDMsIDIzNCwgNDgsIDQsIDI0MywgMjQwLCA0OCwgNCwgCi0gICAgMjI2LCAyMzksIDQ4LCA0LCAyMTUsIDE0NSwgNDgsIDQsIDI0MiwgNDIsIDQ4LCA0LCAyMjIsIDI0OCwgNDgsIDQsIDIxMSwgCi0gICAgMTAsIDQ4LCA0LCAyMTIsIDE5OSwgNDgsIDQsIDIwMiwgNiwgNDgsIDQsIDIwMiwgNTcsIDQ4LCA0LCAyNDUsIDExMCwgNDgsIAotICAgIDQsIDIzMCwgODIsIDQ4LCA0LCAyMjIsIDE4LCA0OCwgNCwgMjAyLCAyMTMsIDQ4LCA0LCAyMjgsIDIwOSwgNDgsIDQsIDIyMiwgCi0gICAgMTY1LCA0OCwgNCwgMjM3LCAyMzAsIDQ4LCA0LCAyMjMsIDI0NiwgNDgsIDQsIDIyMSwgODQsIDQ4LCA0LCAyMjAsIDIyNiwgCi0gICAgNDgsIDQsIDc4LCA0OCwgNCwgMjIwLCAzMSwgNDgsIDQsIDIyMiwgMTI0LCA0OCwgNCwgMjM2LCAxMzYsIDQ4LCA0LCAyMzYsIAotICAgIDEyMCwgNDgsIDQsIDIwNCwgMCwgNDgsIDQsIDIwMywgMjQ1LCA0OCwgNCwgMjE4LCA2OSwgNDgsIDQsIDI0OCwgOTAsIDQ4LCAKLSAgICA0LCAyNDgsIDIzLCA0OCwgNCwgMjI1LCAzNSwgNDgsIDQsIDIyOCwgMjM1LCA0OCwgNCwgMjI0LCAxODIsIDQ4LCA0LCAyMzgsIAotICAgIDE5NywgNDgsIDQsIDIzOCwgMTk2LCA0OCwgNCwgMjM5LCAxODYsIDQ4LCA0LCAyMDUsIDE4OSwgNDgsIDQsIDEzNSwgNDgsIAotICAgIDQsIDIwOSwgNDcsIDQ4LCA0LCAyNDMsIDIzNywgNDgsIDQsIDI0MywgMjQyLCA0OCwgNCwgMjI3LCA0OSwgNDgsIDQsIDIxNSwgCi0gICAgMjI3LCA0OCwgNCwgMjQzLCAxMTMsIDQ4LCA0LCAyMjMsIDEsIDQ4LCA0LCAyMTIsIDEzLCA0OCwgNCwgMjEyLCAyNDIsIDQ4LCAKLSAgICA0LCAyMDIsIDE3LCA0OCwgNCwgMjAyLCA2MywgNDgsIDQsIDI0NSwgMjU0LCA0OCwgNCwgMjMwLCAxMDEsIDQ4LCA0LCAyMjIsIAotICAgIDIzLCA0OCwgNCwgMjAyLCAyNDcsIDQ4LCA0LCAyMjksIDI2LCA0OCwgNCwgMjIyLCAxNjcsIDQ4LCA0LCAyMzgsIDM5LCA0OCwgCi0gICAgNCwgMjI0LCA4MiwgNDgsIDQsIDIyMSwgMTkxLCA0OCwgNCwgMjIwLCAyMzMsIDQ4LCA0LCA3NCwgNDgsIDQsIDI0MSwgOTIsIAotICAgIDQ4LCA0LCAyMjIsIDE4NywgNDgsIDQsIDIzNywgNjcsIDQ4LCA0LCAyMzcsIDMzLCA0OCwgNCwgMjA0LCA2MiwgNDgsIDQsIAotICAgIDIwNCwgNDksIDQ4LCA0LCAyMTksIDM0LCA0OCwgNCwgMjQ4LCA5NCwgNDgsIDQsIDI0OCwgMTYyLCA0OCwgNCwgMjI1LCA0NywgCi0gICAgNDgsIDQsIDIyOCwgMjQwLCA0OCwgNCwgMjI4LCAyMzgsIDQ4LCA0LCAyMjQsIDE4OCwgNDgsIDQsIDIzOCwgMjA0LCA0OCwgCi0gICAgNCwgMjM4LCAyMDIsIDQ4LCA0LCAyNDAsIDYwLCA0OCwgNCwgMjA2LCA1NSwgNDgsIDQsIDIwOSwgMTg3LCA0OCwgNCwgMjA5LCAKLSAgICA5MiwgNDgsIDQsIDI0MywgMjQ4LCA0OCwgNCwgMjQzLCAyNDUsIDQ4LCA0LCAyMjcsIDIzNCwgNDgsIDQsIDIxNiwgMTU4LCAKLSAgICA0OCwgNCwgMjQ0LCA3NSwgNDgsIDQsIDIyMywgMTcsIDQ4LCA0LCAyMTQsIDE3NywgNDgsIDQsIDIxMywgNDMsIDQ4LCA0LCAKLSAgICAyMDIsIDkyLCA0OCwgNCwgMjAyLCA3MSwgNDgsIDQsIDI0NiwgMjM4LCA0OCwgNCwgMjMwLCAxNjEsIDQ4LCA0LCAyMjIsIAotICAgIDQxLCA0OCwgNCwgMjAzLCA1MiwgNDgsIDQsIDIyOSwgMjAxLCA0OCwgNCwgMjIyLCAxNzcsIDQ4LCA0LCAyMjIsIDE3MywgCi0gICAgNDgsIDQsIDIzOCwgMTkwLCA0OCwgNCwgMjM4LCAxNzcsIDQ4LCA0LCAyMjUsIDIwLCA0OCwgNCwgMjIyLCAyNDAsIDQ4LCA0LCAKLSAgICAyMjEsIDEsIDQ4LCA0LCAyMjIsIDIwNSwgNDgsIDQsIDIyNywgMTg4LCA0OCwgMjQ1LCAyMzMsIDQ4LCAyMzksIDEwMiwgCi0gICAgMjExLCA2MSwgNDgsIDIxNywgNDcsIDgyLCA0OCwgNCwgMjIzLCAwLCAyNDAsIDEwOCwgNDgsIDQsIDIyMywgMCwgMTczLCAKLSAgICA0OCwgNCwgMjIzLCAwLCAyMTEsIDI1MCwgNDgsIDE2LCAyNDAsIDQ5LCA0OCwgMTYsIDIyOSwgMTk2LCA0OCwgMTYsIDIwOCwgCi0gICAgMjE1LCA0OCwgMTYsIDIyMiwgNzUsIDQ4LCAxNiwgMjQ4LCAyMzcsIDQ4LCAxNiwgMjQwLCAxMDcsIDQ4LCAxNiwgMjEwLCAKLSAgICAxOCwgNDgsIDE2LCAyNDQsIDE2NCwgNDgsIDE2LCAyNDMsIDg5LCA0OCwgMTYsIDIyOCwgMTkzLCA0OCwgMTYsIDIwOCwgCi0gICAgMTUyLCA0OCwgMTYsIDI0MywgMTEyLCA0OCwgMTYsIDIzMCwgOTIsIDQ4LCAxNywgMjAyLCA4NCwgNDgsIDE3LCAxMDUsIDQ4LCAKLSAgICAxNywgMTA4LCA0OCwgMTcsIDE0NywgNDgsIDE3LCAxNDksIDQ4LCAxNywgMTcwLCA0OCwgMTcsIDE5NSwgNDgsIDE3LCAyMTMsIAotICAgIDExMSwgNDgsIDE3LCAxOTksIDQ4LCAxNywgMjIyLCA2MywgNDgsIDQsIDIyMywgMCwgMTkyLCA0OCwgNCwgMjIzLCAwLCAKLSAgICAyNDMsIDExMywgMzYsIDYsIDEsIDIwMiwgODgsIDM2LCA1LCAxLCAyMDIsIDg4LCAzNiwgNiwgMSwgMjQxLCAyNTAsIDM2LCAKLSAgICA1LCAxLCAyNDEsIDI1MCwgMzYsIDYsIDEsIDIxNiwgNzMsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjE2LCA3MywgMjQxLCAyNTIsIAotICAgIDM2LCA2LCAxLCAyMzAsIDIzMCwgMzYsIDUsIDEsIDIzMCwgMjMwLCAzNiwgNiwgMSwgMjQzLCAxMjksIDM2LCA1LCAxLCAKLSAgICAyNDMsIDEyOSwgMzYsIDYsIDEsIDIyNCwgNDMsIDIwNywgMTQsIDM2LCA1LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzNiwgNiwgCi0gICAgMSwgMjQ3LCAyMDQsIDIyMCwgMzYsIDM2LCA1LCAxLCAyNDcsIDIwNCwgMjIwLCAzNiwgMzYsIDYsIDEsIDIyMiwgMjE2LCAKLSAgICAyMDMsIDM0LCAzNiwgNSwgMSwgMjIyLCAyMTYsIDIwMywgMzQsIDM2LCA2LCAxLCAyMDMsIDMxLCAzLCAyNDksIDI2LCAyMDMsIAotICAgIDM0LCAzNiwgNSwgMSwgMjAzLCAzMSwgMywgMjQ5LCAyNiwgMjAzLCAzNCwgMzYsIDYsIDEsIDIzMCwgMjI4LCAyMDMsIDY2LCAKLSAgICAzNiwgNSwgMSwgMjMwLCAyMjgsIDIwMywgNjYsIDM2LCA2LCAxLCAyMTYsIDczLCAyMDIsIDIxMywgMzYsIDUsIDEsIDIxNiwgCi0gICAgNzMsIDIwMiwgMjEzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIDYzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDYzLCAzNiwgNiwgMSwgCi0gICAgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDYsIAotICAgIDEsIDI0OCwgMzUsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ4LCAzNSwgMjAyLCAxODMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgCi0gICAgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAKLSAgICAxODMsIDM2LCA2LCAxLCAyMDIsIDI0OSwgMzYsIDUsIDEsIDIwMiwgMjQ5LCAzNiwgNiwgMSwgMjE2LCA3MywgMjA4LCAxNCwgCi0gICAgMzYsIDUsIDEsIDIxNiwgNzMsIDIwOCwgMTQsIDM2LCA2LCAxLCAyMTIsIDcsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMTIsIDcsIAotICAgIDI0NCwgNzUsIDM2LCA2LCAxLCAyMTIsIDcsIDI0MSwgMTIyLCAzNiwgNSwgMSwgMjEyLCA3LCAyNDEsIDEyMiwgMzYsIDYsIAotICAgIDEsIDIxMiwgNywgMjQxLCAxMDMsIDM2LCA1LCAxLCAyMTIsIDcsIDI0MSwgMTAzLCAzNiwgNiwgMSwgMjI0LCA0NywgNzgsIAotICAgIDM2LCA1LCAxLCAyMjQsIDQ3LCA3OCwgMzYsIDYsIDEsIDI0OCwgNjMsIDc4LCAzNiwgNSwgMSwgMjQ4LCA2MywgNzgsIDM2LCAKLSAgICA2LCAxLCA1MiwgMjI0LCA0NywgNzgsIDM2LCA1LCAxLCA1MiwgMjI0LCA0NywgNzgsIDM2LCAxLCAyMjMsIDIyNywgNzgsIAotICAgIDM5LCAzNiwgMjA0LCAxNDYsIDM5LCAzNiwgMjA5LCAxNTMsIDIyNCwgMTE0LCA1NCwgMzksIDM2LCAyMzYsIDEyLCAyMjQsIAotICAgIDExNCwgNTQsIDM5LCAzNiwgMjA5LCAzNywgMjI0LCAxMTQsIDU0LCAyMTIsIDU1LCAyNTAsIDU5LCAzOSwgMzYsIDEsIDIwNywgCi0gICAgMTEsIDIzMSwgMTEwLCAzOSwgMzYsIDEsIDc1LCAzOSwgMzYsIDEsIDIwMywgMTEsIDM5LCAzNiwgMSwgNjgsIDM5LCAzNiwgCi0gICAgMSwgMjM3LCA5MSwgNTQsIDM5LCAzNiwgMSwgMjAzLCAzMCwgMzksIDM2LCAxLCAyMTIsIDcsIDU0LCAzOSwgMzYsIDEsIAotICAgIDIyMCwgMzYsIDM5LCAzNiwgMjI5LCAyMTMsIDM5LCAzNiwgMjE5LCA0MSwgMzYsIDIyOSwgMjEzLCAzNiwgMjE5LCA0MSwgCi0gICAgMzYsIDYsIDEsIDI0MiwgOSwgMzYsIDUsIDEsIDI0MiwgOSwgMzYsIDYsIDEsIDI0MSwgMjQxLCAzNiwgNSwgMSwgMjQxLCAKLSAgICAyNDEsIDM2LCA2LCAxLCAyMDIsIDQ3LCAzNiwgNSwgMSwgMjAyLCA0NywgMzYsIDYsIDEsIDI0NiwgMjU0LCAzNiwgNSwgMSwgCi0gICAgMjQ2LCAyNTQsIDM2LCA2LCAxLCAyNDEsIDIzOCwgMzYsIDUsIDEsIDI0MSwgMjM4LCAzNiwgNiwgMSwgMjA5LCAxODgsIDMsIAotICAgIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjA5LCAxODgsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjA3LCAxNTgsIDM2LCA1LCAxLCAKLSAgICAyMDcsIDE1OCwgMzYsIDYsIDEsIDIwNywgMjQ1LCAzNiwgNSwgMSwgMjA3LCAyNDUsIDM2LCA2LCAxLCAyMDcsIDI1MCwgMzYsIAotICAgIDUsIDEsIDIwNywgMjUwLCAzNiwgNiwgMSwgMjA5LCAxOTMsIDM2LCA1LCAxLCAyMDksIDE5MywgMzYsIDYsIDEsIDIzNSwgCi0gICAgMjUxLCAzNiwgNSwgMSwgMjM1LCAyNTEsIDM2LCA2LCAxLCAyMTIsIDE3NywgMzYsIDUsIDEsIDIxMiwgMTc3LCAzNiwgNiwgCi0gICAgMSwgNTIsIDc4LCAzNiwgNSwgMSwgNTIsIDc4LCAzNiwgNiwgMSwgMjQ1LCAxMjgsIDc4LCAzNiwgNSwgMSwgMjQ1LCAxMjgsIAotICAgIDc4LCA2NSwgMSwgMzYsIDIzNywgOTEsIDU0LCA2NSwgMSwgMzYsIDIxMiwgNywgNTQsIDM5LCAzNiwgMSwgMjQxLCAxNTQsIAotICAgIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDc0LCAyNCwgMSwgNjMsIDI0LCAxLCAxNzMsIDI0LCAxLCA2OCwgMjQsIDEsIDIyOCwgCi0gICAgMjA5LCAyNCwgMSwgMjQxLCAxNjEsIDI0LCAxLCAyMTYsIDEzNSwgMjQsIDEsIDIxMCwgMSwgMjQsIDEsIDc4LCAyNCwgMSwgCi0gICAgMjIwLCAyNDgsIDI0LCAxLCA3NSwgMjQsIDEsIDIyOCwgMTEzLCAyNCwgMSwgMTg1LCAyNCwgMSwgMjE2LCAzLCAyNCwgMSwgCi0gICAgMjE2LCA1MCwgMjQsIDEsIDIyNywgMjI1LCAyNCwgMSwgMjI1LCA3LCAyNCwgMSwgMjEwLCAxOCwgMjQsIDEsIDIyMywgMjMsIAotICAgIDI0LCAxLCAyMjIsIDQ2LCAyNCwgMSwgMjI2LCAxODUsIDI0LCAxLCAyMTAsIDE3OSwgMjQsIDEsIDIyMywgMjQ2LCAyNCwgMSwgCi0gICAgMjEzLCA2LCAyNCwgMSwgMjEyLCAxNjIsIDI0LCAxLCAyMTMsIDE2LCAyNCwgMSwgMjEzLCAxMTMsIDI0LCAxLCAyMjgsIAotICAgIDEzNywgMjQsIDEsIDIyOSwgMTcwLCAyNCwgMSwgMjIxLCA1NSwgMjQsIDEsIDIyMSwgODQsIDI0LCAxLCAyMjIsIDE3LCAyNCwgCi0gICAgMSwgMjAyLCAyMjksIDI0LCAxLCAyMTIsIDE5OSwgMjQsIDEsIDIwMiwgMTg3LCAyNCwgMSwgMTk4LCAyNCwgMSwgMjIxLCAKLSAgICAxMTgsIDI0LCAxLCAyMjksIDE1NiwgMjQsIDEsIDIxOCwgMjEyLCAyNCwgMSwgMjIyLCAzOSwgMjQsIDEsIDIyMSwgOTksIAotICAgIDI0LCAxLCAyMTcsIDE4MywgMjQsIDEsIDIwMywgMjE0LCAyNCwgMSwgMjE5LCAyMywgMjQsIDEsIDI0MCwgNTMsIDI0LCAxLCAKLSAgICAyMTUsIDE0NSwgMjQsIDEsIDIyNiwgMjM5LCAyNCwgMSwgMjI0LCAxNTUsIDI0LCAxLCAyMjIsIDEwMCwgMjQsIDEsIDIxNiwgCi0gICAgNzUsIDI0LCAxLCAyMTYsIDIwMiwgMjQsIDEsIDIyOSwgMTgwLCAyNCwgMSwgMjIyLCAxMzEsIDI0LCAxLCAyMjIsIDE4MiwgCi0gICAgMjQsIDEsIDIyMiwgMjAzLCAyNCwgMSwgMjEyLCAyNDIsIDI0LCAxLCAyMTcsIDE4OCwgMjQsIDEsIDIzOSwgMTA4LCAyNCwgCi0gICAgMSwgMjM5LCAxNzksIDI0LCAxLCAyMDQsIDExMSwgMjQsIDEsIDIwMSwgMjAxLCAyNCwgMSwgMjI3LCAxNDgsIDI0LCAxLCAKLSAgICAyMTgsIDE2NywgMjQsIDEsIDIyNywgMTAsIDI0LCAxLCAyMjksIDI2LCAyNCwgMSwgMjI1LCA0NCwgMjQsIDEsIDIxNiwgCi0gICAgMTA3LCAyNCwgMSwgMjI0LCAyNDAsIDI0LCAxLCAxOTIsIDI0LCAxLCAyMDksIDIsIDI0LCAxLCAyMjksIDEwMCwgMjQsIDEsIAotICAgIDIyNCwgODIsIDI0LCAxLCAyMjUsIDUyLCAyNCwgMSwgMjA5LCAxMzIsIDI0LCAxLCAyMjgsIDI0NCwgMjQsIDEsIDIwOSwgCi0gICAgMTUyLCAyNCwgMSwgMjIxLCA4NiwgMjQsIDEsIDIxNCwgMjUxLCAyNCwgMSwgMjQwLCAxMDQsIDI0LCAxLCAyMjgsIDI0NiwgCi0gICAgMjQsIDEsIDIyOSwgMjEsIDI0LCAzOSwgMTMxLCAyMjgsIDI1NSwgMjQsIDM5LCAxMzEsIDIwNywgMTk0LCAyNCwgMjIyLCAKLSAgICA0NSwgMjQsIDIzOSwgMTAyLCAyMTEsIDYxLCAyNCwgMjQ1LCAyNDIsIDI0LCAyNDUsIDIzMywgMjQsIDIxMywgMTQzLCAyNCwgCi0gICAgMjE3LCA0NywgODIsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxOCwgMTE5LCA2NSwgMSwgMjQ2LCAxMjgsIAotICAgIDE0MywgMjAzLCA3NywgMjE4LCAxMTksIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxMywgNjUsIDY1LCAxLCAKLSAgICAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTMsIDY1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTcsIDY1LCAKLSAgICA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjE3LCA2NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgCi0gICAgMjE1LCAxNDUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTUsIDE0NSwgNjUsIDEsIDI0MCwgMTk4LCAyNDIsIAotICAgIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjQyLCA4MywgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjQyLCA4MywgCi0gICAgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDI0MiwgODMsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MiwgODMsIDE0MywgCi0gICAgMTQyLCA2NSwgMSwgMjQwLCAxOTgsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjQyLCA4MywgCi0gICAgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIAotICAgIDEyNCwgMjQyLCA4MywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MiwgODMsIDIyNywgMjE0LCAKLSAgICAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk4LCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDIyNywgMjE0LCAxNDMsIAotICAgIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDIyNywgMjE0LCAxNDMsIDE0MiwgCi0gICAgNjUsIDEsIDI0MCwgMTk3LCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCA3MCwgODAsIDE0MiwgNjUsIDEsIDcwLCAyMTIsIAotICAgIDU3LCA2NSwgMSwgNzAsIDIzNiwgMTA2LCAxNDIsIDY1LCAxLCAyMjYsIDI1MSwgNTAsIDI0NSwgMTY2LCAyNTAsIDIxNywgCi0gICAgNjUsIDEsIDIxNiwgMTg4LCAxMTIsIDQ3LCA2NSwgMSwgMjE2LCAxODgsIDEyMSwgNDcsIDY1LCAxLCAyMTYsIDE4OCwgMjQwLCAKLSAgICAyMTIsIDgyLCA2NSwgMSwgMjE2LCAxODgsIDIzMCwgMjM5LCAyNDAsIDIxMiwgODIsIDY1LCAxLCAxMjQsIDIzMCwgMjM5LCAKLSAgICAyNDAsIDIxMiwgODIsIDY1LCAxLCAyMTEsIDQyLCAyNSwgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDIxMSwgNDIsIDI1LCAxMjQsIAotICAgIDIwOCwgMTYxLCA4LCA2LCAxLCAyNDEsIDE0OSwgMjUxLCAzMCwgOCwgNSwgMSwgMjQxLCAxNDksIDI1MSwgMzAsIDgsIDYsIAotICAgIDEsIDI0MSwgMTQ5LCAyNTEsIDU5LCA4LCA1LCAxLCAyNDEsIDE0OSwgMjUxLCA1OSwgOCwgNiwgMSwgMjM3LCAzMSwgOCwgNSwgCi0gICAgMSwgMjM3LCAzMSwgOCwgNiwgMSwgMjA3LCAxMDcsIDgsIDUsIDEsIDIwNywgMTA3LCA4LCA2LCAxLCAyMDgsIDg5LCA4LCA1LCAKLSAgICAxLCAyMDgsIDg5LCA4LCA2LCAxLCAyNDUsIDEwNywgOCwgNSwgMSwgMjQ1LCAxMDcsIDgsIDYsIDEsIDI0NSwgMTA4LCAzLCAKLSAgICAyNDUsIDIzMywgOCwgNSwgMSwgMjQ1LCAxMDgsIDMsIDI0NSwgMjMzLCA4LCAxLCA1LCA2LCAyNDAsIDE3NCwgOCwgMSwgNSwgCi0gICAgNiwgMTk0LCA4LCA2LCAxLCAyNTIsIDI1LCA4LCA1LCAxLCAyNTIsIDI1LCA4LCA2LCAxLCAyNTAsIDE3OCwgOCwgNSwgMSwgCi0gICAgMjUwLCAxNzgsIDgsIDYsIDEsIDI1MCwgMzQsIDgsIDUsIDEsIDI1MCwgMzQsIDgsIDYsIDEsIDI1MCwgMTgsIDgsIDUsIDEsIAotICAgIDI1MCwgMTgsIDgsIDYsIDEsIDI1MCwgMTksIDMsIDIzNiwgMTA2LCAxNDIsIDgsIDUsIDEsIDI1MCwgMTksIDMsIDIzNiwgCi0gICAgMTA2LCAxNDIsIDgsIDYsIDEsIDI1MCwgOCwgOCwgNSwgMSwgMjUwLCA4LCA4LCA2LCAxLCAyMTYsIDczLCAyNDcsIDEyNiwgCi0gICAgMywgMjQzLCA4NSwgOCwgNSwgMSwgMjE2LCA3MywgMjQ3LCAxMjYsIDMsIDI0MywgODUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIAotICAgIDk1LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAKLSAgICAyMzAsIDU1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDIxMSwgMzIsIDI1LCAyNDMsIDIyOCwgOTUsIAotICAgIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIxMSwgMzIsIDI1LCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDI0NywgMjAzLCAxNTksIAotICAgIDgsIDUsIDEsIDI0NywgMjAzLCAxNTksIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMzgsIDk1LCA4LCA1LCAxLCAyMjgsIDEzMSwgCi0gICAgMywgMTM4LCA5NSwgOCwgNiwgMSwgMTU4LCAzLCAxNjMsIDIxMSwgMzIsIDIxOSwgMTk5LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDE2MywgMjExLCAzMiwgMjE5LCAxOTksIDgsIDYsIDEsIDE1OCwgMywgMjI3LCAxNCwgOCwgNSwgMSwgMTU4LCAzLCAyMjcsIAotICAgIDE0LCA4LCA2LCAxLCAyMjAsIDE4LCA4LCA1LCAxLCAyMjAsIDE4LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMjExLCAzMiwgCi0gICAgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDYsIAotICAgIDEsIDIxOSwgMTg1LCAzLCAyMzksIDE5OSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIzOSwgMTk5LCA4LCA2LCAxLCAyMTksIAotICAgIDE4NSwgMywgMjExLCAxNzAsIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjExLCAxNzAsIDIwOSwgMjQ4LCA4LCAKLSAgICA2LCAxLCAyMTcsIDEzNSwgMywgMjExLCAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIDIxMSwgCi0gICAgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDYsIDEsIDIxNywgMTM1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDIxNywgCi0gICAgMTM1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIxNywgMSwgMjE1LCAxOTIsIDgsIDUsIDEsIDIxNywgMSwgMjE1LCAKLSAgICAxOTIsIDgsIDYsIDEsIDIxNSwgMTMyLCAyMTUsIDE5MiwgOCwgNSwgMSwgMjE1LCAxMzIsIDIxNSwgMTkyLCA4LCA2LCAxLCAKLSAgICAyMDYsIDE2NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAKLSAgICAyMDQsIDE1MiwgOCwgNSwgMSwgMjA0LCAxNTIsIDgsIDYsIDEsIDIwNSwgMTk3LCAyMDIsIDE1OSwgOCwgNSwgMSwgMjA1LCAKLSAgICAxOTcsIDIwMiwgMTU5LCA4LCA2LCAxLCAyMDksIDQxLCAzLCA5NSwgOCwgNSwgMSwgMjA5LCA0MSwgMywgOTUsIDgsIDYsIDEsIAotICAgIDIwOSwgNDEsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIwOSwgNDEsIDMsIDIxMSwgMzIsIDIwOSwgCi0gICAgMjUsIDI0NCwgMjAsIDgsIDYsIDEsIDIwNiwgNDUsIDgsIDUsIDEsIDIwNiwgNDUsIDgsIDYsIDEsIDI0MCwgMjUwLCA4LCA1LCAKLSAgICAxLCAyNDAsIDI1MCwgOCwgNiwgMSwgMjMwLCAyMTUsIDgsIDUsIDEsIDIzMCwgMjE1LCA4LCA2LCAxLCAyNDUsIDIxOCwgOCwgCi0gICAgNSwgMSwgMjQ1LCAyMTgsIDY1LCAxLCAyMDYsIDE5MywgOCwgNSwgMSwgMjQyLCAzMiwgOCwgNSwgMSwgMjI2LCAyMjIsIDgsIAotICAgIDUsIDEsIDIyMywgMjIwLCA4LCA1LCAxLCAyMjEsIDQ3LCA4LCA1LCAxLCAyMTUsIDEzMSwgOCwgMSwgNSwgNiwgMjE1LCAKLSAgICAxMzEsIDgsIDUsIDEsIDIwNywgMTkxLCA4LCA1LCAxLCAyMDcsIDYsIDgsIDYsIDEsIDIzMSwgNCwgMjQ1LCA1MSwgOCwgNSwgCi0gICAgMSwgMjMxLCA0LCAyNDUsIDUxLCA4LCA2LCAxLCAyMzEsIDQsIDI0MCwgMTc0LCA4LCA1LCAxLCAyMzEsIDQsIDI0MCwgMTc0LCAKLSAgICA4LCA2LCAxLCAyMzEsIDQsIDIzOSwgNzUsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzEsIDQsIDIzOSwgNzUsIDgsIDUsIDEsIAotICAgIDIwNywgMTc0LCAyMzEsIDQsIDIzOSwgNzUsIDgsIDYsIDEsIDIwNywgMTc0LCAxNTksIDgsIDUsIDEsIDIwNywgMTc0LCAKLSAgICAxNTksIDgsIDYsIDEsIDIzMSwgNCwgMTQ2LCA4LCA1LCAxLCAyMzEsIDQsIDE0NiwgOCwgNiwgMSwgMjMxLCA0LCAxOTQsIDgsIAotICAgIDUsIDEsIDIzMSwgNCwgMTk0LCA4LCA2LCAxLCAyMzEsIDQsIDIxMCwgNjksIDgsIDUsIDEsIDIzMSwgNCwgMjEwLCA2OSwgCi0gICAgNjUsIDEsIDEyNCwgMjQ2LCA1MywgMjUxLCAxMzgsIDY1LCAxLCAyNDUsIDI0MiwgNjUsIDEsIDIxMiwgMjI4LCAyNDEsIDM1LCAKLSAgICA1NCwgOCwgNiwgMSwgMjE0LCAyNTUsIDgsIDUsIDEsIDIxNCwgMjU1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzEsIDgsIAotICAgIDUsIDEsIDIyOCwgMTMxLCAzLCAyMTYsIDc5LCAyMzYsIDExNiwgMjUsIDI0OCwgMTI0LCA4LCAxLCAyMTIsIDExNCwgMjQzLCAKLSAgICA4NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDQsIDIwLCA4LCA2LCAKLSAgICAxLCAyNDcsIDEyNiwgMywgMTQyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTQyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgCi0gICAgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDYsIDEsIDY2LCAzLCAyMzksIAotICAgIDE5OSwgOCwgNSwgMSwgNjYsIDMsIDIzOSwgMTk5LCA4LCA2LCAxLCAyNDAsIDE3NSwgMywgOTUsIDgsIDUsIDEsIDI0MCwgCi0gICAgMTc1LCAzLCA5NSwgOCwgNiwgMSwgMjA1LCAxODIsIDI1MSwgMTA5LCA4LCA1LCAxLCAyMDUsIDE4MiwgMjUxLCAxMDksIDgsIAotICAgIDYsIDEsIDIwNSwgMTgyLCAyMjAsIDczLCA4LCA1LCAxLCAyMDUsIDE4MiwgMjIwLCA3MywgOCwgNiwgMSwgMjA1LCAxODIsIAotICAgIDIwNywgMjQsIDgsIDUsIDEsIDIwNSwgMTgyLCAyMDcsIDI0LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyMjAsIDg5LCA5NSwgOCwgCi0gICAgNSwgMSwgMjM5LCA3NiwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAKLSAgICAyMzAsIDU1LCAzLCAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMjMsIAotICAgIDE2NCwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIDIxNywgMSwgMywgCi0gICAgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMjAsIAotICAgIDg5LCA5NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDExMywgOCwgNiwgMSwgMjE2LCA3MywgMTcxLCA3NCwgOCwgNiwgMSwgCi0gICAgMTMyLCAyMzksIDc1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMjQ4LCAxMjQsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzAsIDU0LCAKLSAgICA4LCA2LCAxLCAyMDcsIDE3NCwgMjEwLCA2OSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA4LCA2LCAxLCAyNDYsIAotICAgIDE0MiwgOCwgNiwgMSwgMjQ4LCAxMDYsIDgsIDUsIDEsIDI0OCwgMTA2LCA4LCA2LCAxLCAyMjAsIDM2LCA4LCA1LCAxLCAKLSAgICAyMjAsIDM2LCA4LCAyNDEsIDQwLCAxLCAyMTIsIDE1NCwgNzUsIDY1LCAxLCA2LCAyMzcsIDE3MiwgMywgOTUsIDY1LCAxLCAKLSAgICA1LCAzMiwgMjIwLCA3MywgOCwgMSwgNSwgNiwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCAyNDEsIDQwLCAxLCAyMTYsIDczLCAKLSAgICAyNDAsIDE3NCwgOCwgMjQxLCA0MCwgMSwgMjE2LCA3MywgMjE5LCAxODQsIDgsIDI0MSwgNDAsIDEsIDIzMCwgMjM5LCAyMjYsIAotICAgIDE4NSwgOCwgMjQxLCA0MCwgMSwgMjM1LCAyMDYsIDIyNywgMjAsIDgsIDI0MSwgNDAsIDEsIDI1MCwgMTI2LCAyMjYsIDE4NSwgCi0gICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDYzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyLCAKLSAgICAyNDIsIDExLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNjgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA3NCwgMjEwLCAxNDksIAotICAgIDIyMywgOTQsIDEsIDc4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgMjM3LCA4NSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyOSwgCi0gICAgMjYsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjksIDExNSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIzOCwgMzksIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAxLCAyMzgsIDkxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgMjUwLCAxODAsIDIxMCwgMTQ5LCAyMjMsIAotICAgIDk0LCAxLCAyNDUsIDI1NCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0NiwgMTE2LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgCi0gICAgMjMwLCAxMDEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzAsIDE0MywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIwNywgMjE4LCAKLSAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjA3LCAyMjQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDQsIDkwLCAyMTAsIDE0OSwgCi0gICAgMjIzLCA5NCwgMSwgMjQ0LCA5OSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDEzNSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIAotICAgIDIwOSwgNDcsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDMsIDExMywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0MywgMjM3LCAKLSAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjIxLCAxOTEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTgsIDY5LCAyMTAsIDE0OSwgCi0gICAgMjIzLCA5NCwgMSwgMjE4LCAxODAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDgsIDIzLCAyMTAsIDE0OSwgMjIzLCA5NCwgCi0gICAgMSwgMjQ4LCA5MCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyNCwgODIsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTUsIAotICAgIDIyNywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyNywgNDksIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTUsIDE3MSwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDEsIDIxMiwgMTMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzYsIDEzNiwgMjEwLCAxNDksIDIyMywgCi0gICAgOTQsIDIyLCAyLCA2MywgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCA3NSwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCAKLSAgICA2OCwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCA3NCwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCAyMjAsIDE4LCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MiwgMjEwLCAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTEsIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA4OSwgMTUzLCAKLSAgICAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMTcsIDU1LCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAKLSAgICAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjEyLCAKLSAgICA4MCwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyNDEsIDEzOCwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTI2LCAKLSAgICAyMTIsIDc5LCAxNTMsIDIzMSwgMzMsIDIxNywgNTYsIDgyLCAxNTMsIDIzMSwgMzMsIDIxOCwgOTYsIDgyLCAxNTMsIDIzMSwgCi0gICAgMzMsIDIxNSwgMTIwLCA4MiwgMTUzLCAyMzEsIDMzLCAyMTcsIDU3LCA4MiwgMjE4LCAyMDQsIDEsIDE3MywgMjE4LCAyMDQsIAotICAgIDEsIDIyOSwgMTQ0LCAyMTgsIDIwNCwgMSwgMjM5LCA4LCAyMTgsIDIwNCwgMSwgMjIyLCAyMDMsIDIxOCwgMjA0LCAxLCAKLSAgICAyNDcsIDkyLCAyMTgsIDIwNCwgMSwgMjQ2LCAxOTksIDIxOCwgMjA0LCAxLCAyMzAsIDE4MSwgMjE4LCAyMDQsIDEsIDIyMSwgCi0gICAgMTEsIDIxOCwgMjA0LCAxLCAyMTAsIDIyLCAyMTgsIDIwNCwgMSwgMjA5LCAxMDgsIDIxOCwgMjA0LCAxLCAyNDQsIDIxMiwgCi0gICAgMjE4LCAyMDQsIDEsIDIwMSwgMjAxLCAyMTgsIDIwNCwgMSwgMTg1LCAyMTgsIDIwNCwgMSwgMjE4LCAyMDgsIDIxOCwgMjA0LCAKLSAgICAxLCAyNDksIDMyLCAyMTgsIDIwNCwgMSwgMTkyLCAyMTgsIDIwNCwgMSwgMjA4LCAyMCwgMjE4LCAyMDQsIDEsIDIwOCwgMTAsIAotICAgIDIxOCwgMjA0LCAxLCAyNDEsIDI1NSwgMjE4LCAyMDQsIDEsIDIwNCwgMTExLCAyMTgsIDIwNCwgMSwgMjAyLCA4MCwgMjE4LCAKLSAgICAyMDQsIDEsIDIwMiwgMTE2LCAyMTgsIDIwNCwgMSwgNSwgNjMsIDIxOCwgMjA0LCAxLCAxOTgsIDIxOCwgMjA0LCAxLCAyMTYsIAotICAgIDIyMCwgMjE4LCAyMDQsIDEsIDIyOCwgMTEzLCAyMTgsIDIwNCwgMSwgMjEzLCA5MCwgMjE4LCAyMDQsIDEsIDIxNSwgMzYsIAotICAgIDIxOCwgMjA0LCAxLCAxNTIsIDIxOCwgMjA0LCAxLCA2MywgMjE4LCAyMDQsIDEsIDc1LCAyMTgsIDIwNCwgMSwgNjgsIDIxOCwgCi0gICAgMjA0LCAxLCA3NCwgMjE4LCAyMDQsIDEsIDc4LCAyMTgsIDIwNCwgMSwgMjE3LCAxMjYsIDIxOCwgMjA0LCAxLCAyMDMsIAotICAgIDE4MiwgMjE4LCAyMDQsIDEsIDI0MCwgMTA4LCAyMTgsIDIwNCwgMSwgMjM4LCAxNTUsIDIxOCwgMjA0LCAxLCAyNDEsIDE2MSwgCi0gICAgMjE4LCAyMDQsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgMjE4LCAyMDQsIDIxMCwgMjU0LCAxLCAxOTgsIDIxOCwgMjA0LCAxLCAKLSAgICAyMDcsIDI0MSwgMjE4LCAyMDQsIDEsIDIwNywgMjI5LCAyMTgsIDIwNCwgMSwgMjQ0LCAxMjAsIDIxOCwgMjA0LCAxLCAyMjEsIAotICAgIDIyNywgMjE4LCAyMDQsIDEsIDI1MCwgMjU1LCAxOTgsIDIxOCwgMjA0LCAxLCAyMDUsIDE4NSwgMjEzLCA5MCwgMjE4LCAKLSAgICAyMDQsIDEsIDIwNSwgMTg2LCAxNTIsIDIxOCwgMjA0LCAxLCAyNTAsIDY2LCAyNDAsIDEwOCwgMjE4LCAyMDQsIDIxMCwgCi0gICAgMjU0LCAxLCAyMTYsIDIyMCwgMjE4LCAyMDQsIDIxMCwgMjAxLCAxLCAyMTYsIDIyMCwgMjE4LCAyMDQsIDEsIDI0NywgNTIsIAotICAgIDIxOCwgMjA0LCAyMTIsIDEyMCwgMjM3LCA2NSwgODIsIDIxOCwgMjA0LCA1MiwgMjM3LCA2NSwgODIsIDIxOCwgMjA0LCAKLSAgICAxMzEsIDIxMywgODIsIDIxOCwgMjA0LCAxMzEsIDUyLCAyMTMsIDgyLCAyMTQsIDIxNSwgMiwgMjUwLCAxODAsIDIxNCwgCi0gICAgMjE1LCAyLCAyMDUsIDE5OSwgMjE0LCAyMTUsIDEsIDYzLCAyMTQsIDIxNSwgMSwgMjUyLCAyNSwgMjE0LCAyMTUsIDEsIDc1LCAKLSAgICAyMTQsIDIxNSwgMSwgMjMxLCA4MywgMjE0LCAyMTUsIDEsIDY4LCAyMTQsIDIxNSwgMSwgMjA2LCAxNzgsIDIxNCwgMjE1LCAKLSAgICAxLCAxMjUsIDE0NiwgMjE0LCAyMTUsIDEsIDEyNSwgMjE1LCAxODYsIDIxNCwgMjE1LCAxLCAxMjUsIDE1OSwgMjE0LCAyMTUsIAotICAgIDEsIDEyNSwgMjI3LCA3OCwgMjE0LCAyMTUsIDEsIDc0LCAyMTQsIDIxNSwgMSwgMjQxLCAxNjEsIDIxNCwgMjE1LCAxLCAKLSAgICAyNTEsIDY0LCAyMTQsIDIxNSwgMSwgNzgsIDIxNCwgMjE1LCAxLCAyMjAsIDE4LCAyMTQsIDIxNSwgMSwgMjUwLCAzNCwgCi0gICAgMjE0LCAyMTUsIDEsIDE3MywgMjE0LCAyMTUsIDEsIDIyOSwgMTQ0LCAyMTQsIDIxNSwgMSwgMjM5LCA4LCAyMTQsIDIxNSwgCi0gICAgMSwgMjM4LCAxMTksIDIxNCwgMjE1LCAxLCAyMjIsIDIwMywgMjE0LCAyMTUsIDEsIDI0NywgOTIsIDIxNCwgMjE1LCAxLCAKLSAgICAyNDYsIDE5OSwgMjE0LCAyMTUsIDEsIDIzMCwgMTgxLCAyMTQsIDIxNSwgMSwgMjMwLCAxNDksIDIxNCwgMjE1LCAxLCAyMjEsIAotICAgIDExLCAyMTQsIDIxNSwgMSwgMjA3LCAyNDEsIDIxNCwgMjE1LCAxLCAyMDcsIDIyOSwgMjE0LCAyMTUsIDEsIDI0NCwgMTIwLCAKLSAgICAyMTQsIDIxNSwgMSwgMjQ0LCAxMDQsIDIxNCwgMjE1LCAxLCAyMjEsIDIyNywgMjE0LCAyMTUsIDEsIDIxMCwgMjIsIDIxNCwgCi0gICAgMjE1LCAxLCAyMDksIDEwOCwgMjE0LCAyMTUsIDEsIDI0NCwgMjEyLCAyMTQsIDIxNSwgMSwgMjQ0LCAxLCAyMTQsIDIxNSwgCi0gICAgMSwgMjAxLCAyMDEsIDIxNCwgMjE1LCAxLCAxODUsIDIxNCwgMjE1LCAxLCAyMTgsIDIwOCwgMjE0LCAyMTUsIDEsIDI0OSwgCi0gICAgMzIsIDIxNCwgMjE1LCAxLCAyNDgsIDk4LCAyMTQsIDIxNSwgMSwgMTkyLCAyMTQsIDIxNSwgMSwgMTk4LCAyMTQsIDIxNSwgCi0gICAgMSwgMjE2LCAyMjAsIDIxNCwgMjE1LCAxLCAyMjgsIDExMywgMjE0LCAyMTUsIDEsIDIwNiwgODYsIDIxNCwgMjE1LCAxLCAKLSAgICAyMTMsIDkwLCAyMTQsIDIxNSwgMSwgMjExLCAxNjQsIDIxNCwgMjE1LCAxLCAyMTUsIDM2LCAyMTQsIDIxNSwgMSwgMTUyLCAKLSAgICAyMTQsIDIxNSwgMSwgMjI3LCA3NywgMjE0LCAyMTUsIDEwOSwgMiwgMjM3LCAxNTUsIDIxNCwgMjE1LCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgMjE0LCAyMTUsIDIyLCAyLCA3NSwgMjE0LCAyMTUsIDIyLCAyLCAyMzEsIDgzLCAyMTQsIDIxNSwgMjIsIDIsIDY4LCAKLSAgICAyMTQsIDIxNSwgMjIsIDIsIDIwNiwgMTc4LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMTQ2LCAyMTQsIDIxNSwgMjIsIDIsIAotICAgIDEyNSwgMjE1LCAxODYsIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAxNTksIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAKLSAgICAyMTQsIDIxNSwgMjIsIDIsIDc0LCAyMTQsIDIxNSwgMjIsIDIsIDI0MSwgMTYxLCAyMTQsIDIxNSwgMjIsIDIsIDI1MSwgNjQsIAotICAgIDIxNCwgMjE1LCAyMiwgMiwgNzgsIDIxNCwgMjE1LCAyMiwgMiwgMjIwLCAxOCwgMjE0LCAyMTUsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICAyMTQsIDIxNSwgMiwgMjA1LCAyMDQsIDIxNCwgMjE1LCAyNDQsIDE2NiwgMjE0LCAyMTUsIDUyLCAyNDQsIDE2NiwgMjE0LCAKLSAgICAyMTUsIDE3LCAyMDIsIDg0LCAyMTQsIDIxNSwgMTcsIDEwNSwgMjE0LCAyMTUsIDE3LCAxMDgsIDIxNCwgMjE1LCAxNywgCi0gICAgMTQ3LCAyMTQsIDIxNSwgMTcsIDE0OSwgMjE0LCAyMTUsIDE3LCAxNzAsIDIxNCwgMjE1LCAxNywgMTk1LCAyMTQsIDIxNSwgCi0gICAgMTcsIDIxMywgMTExLCAyMTQsIDIxNSwgMTcsIDE5OSwgMjE0LCAyMTUsIDE3LCAyMjIsIDYzLCAzOSwgOTIsIDE3LCAyMDIsIAotICAgIDg0LCAzOSwgOTIsIDE3LCAxMDUsIDM5LCA5MiwgMTcsIDEwOCwgMzksIDkyLCAxNywgMTQ3LCAzOSwgOTIsIDE3LCAxNDksIAotICAgIDM5LCA5MiwgMTcsIDE3MCwgMzksIDkyLCAxNywgMTk1LCAzOSwgOTIsIDE3LCAyMTMsIDExMSwgMzksIDkyLCAxNywgMTk5LCAKLSAgICAzOSwgOTIsIDE3LCAyMjIsIDYzLCAzOSwgOTIsIDEsIDYzLCAzOSwgOTIsIDEsIDY4LCAzOSwgOTIsIDEsIDE3MywgMzksIAotICAgIDkyLCAxLCAyMDEsIDIwMSwgMzksIDkyLCAxLCAxODUsIDM5LCA5MiwgMSwgMjE2LCAyMjAsIDM5LCA5MiwgMSwgMjA1LCAKLSAgICAyMzAsIDM5LCA5MiwgMiwgMjUwLCAxNywgOTIsIDIsIDIxMSwgMjI3LCAyNDcsIDUyLCA5MiwgMiwgMjQ3LCA1MywgMjA1LCAKLSAgICAyMDQsIDkyLCAyLCA1MiwgMjQ3LCA1MywgMjA1LCAyMDQsIDkyLCAyLCAyNDcsIDUzLCAxMDgsIDkyLCAyLCAyNDcsIDUzLCAKLSAgICAxNDcsIDkyLCAyLCAyNDcsIDUzLCAyNTAsIDE3LCA5MiwgMiwgMjE3LCAxNjIsIDkyLCAyMzgsIDIyOCwgMjQwLCA3LCA5MiwgCi0gICAgMjQ3LCAzMywgOTIsIDIzNywgNTgsIDkyLCAyLCAyMTIsIDE1NywgOTIsIDIzMCwgMTczLCAyMjAsIDM5LCAyMjksIDIwNywgCi0gICAgMjI3LCAxNDksIDE3LCAyMDIsIDg0LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxMDUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMTcsIDEwOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTQ3LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxNDksIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMTcsIDE3MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTk1LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDE3LCAyMTMsIDExMSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTk5LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAyMjIsIAotICAgIDYzLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE3MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjksIDE0NCwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMzksIDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjIyLCAyMDMsIDIyOSwgMjA3LCAyMjcsIAotICAgIDE0OSwgMSwgMjE1LCAzNiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTMsIDkwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIAotICAgIDIwMiwgMTE2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyMSwgMTEsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjEwLCAyMiwgCi0gICAgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMzYsIDMwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIwMSwgMjAxLCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDE4NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTgsIDIwOCwgMjI5LCAyMDcsIDIyNywgCi0gICAgMTQ5LCAxLCAxOTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ0LCAyMTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ5LCAKLSAgICAzMiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTYsIDIyMCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxOTgsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMjI4LCAxMTMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjA0LCAxMTEsIDIyOSwgMjA3LCAKLSAgICAyMjcsIDE0OSwgMSwgMjA5LCAxMDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTUyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIAotICAgIDIwNiwgODYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ3LCA5MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCA2MywgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMjAsIDczLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDc1LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDEsIDIyMCwgMTgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDIwNywgMjQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDc0LCAKLSAgICAyMjksIDIwNywgMjI3LCAxNDksIDIyLCA2OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgMjQxLCAxNjEsIDIyOSwgMjA3LCAKLSAgICAyMjcsIDE0OSwgMjIsIDc4LCAyMjksIDIwNywgMjI3LCAxNDksIDE0MywgMjE4LCA4NCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxNDMsIDI0NywgNjgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTQzLCAyNDcsIDY5LCAyMTgsIDg0LCAyMjksIDIwNywgMjI3LCAKLSAgICAxNDksIDIsIDI0NSwgNzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMiwgMjEyLCAxNzAsIDIxNiwgMTE5LCAxLCAxNzMsIDIxNiwgCi0gICAgMTE5LCAxLCAyMzksIDgsIDIxNiwgMTE5LCAxLCAyMjIsIDIwMywgMjE2LCAxMTksIDEsIDIxMCwgMjIsIDIxNiwgMTE5LCAxLCAKLSAgICAyNDQsIDIxMiwgMjE2LCAxMTksIDEsIDIwMSwgMjAxLCAyMTYsIDExOSwgMSwgMTg1LCAyMTYsIDExOSwgMSwgMjQ5LCAzMiwgCi0gICAgMjE2LCAxMTksIDEsIDE5MiwgMjE2LCAxMTksIDEsIDI0NywgOTIsIDIxNiwgMTE5LCAxLCAyMzAsIDE4MSwgMjE2LCAxMTksIAotICAgIDEsIDIyMSwgMTEsIDIxNiwgMTE5LCAxLCAyMTUsIDM2LCAyMTYsIDExOSwgMSwgMjE2LCAyMjAsIDIxNiwgMTE5LCAxLCAKLSAgICAyMjgsIDExMywgMjE2LCAxMTksIDEsIDE5OCwgMjE2LCAxMTksIDEsIDIwNCwgMTExLCAyMTYsIDExOSwgMSwgMTUyLCAyMTYsIAotICAgIDExOSwgMSwgMjI1LCA1NCwgMjE2LCAxMTksIDEsIDIyMiwgMTgyLCAyMTYsIDExOSwgMSwgMjIzLCAyNSwgMjE2LCAxMTksIAotICAgIDEsIDIyMCwgMjM0LCAyMTYsIDExOSwgMSwgNjMsIDIxNiwgMTE5LCAyMiwgMiwgNzUsIDIxNiwgMTE5LCAyMiwgMiwgNjgsIAotICAgIDIxNiwgMTE5LCAyMiwgMiwgNzQsIDIxNiwgMTE5LCAyMiwgMiwgMjUxLCA2NCwgMjE2LCAxMTksIDIyLCAyLCA3OCwgMjE2LCAKLSAgICAxMTksIDIyLCAyLCAyNTAsIDM0LCAyMTYsIDExOSwgMjIsIDIsIDI0MCwgMjM4LCAyMTYsIDExOSwgMjIsIDIsIDI0MSwgCi0gICAgMTg5LCAyMTYsIDExOSwgMTA5LCAyLCAyMjIsIDIwNSwgMjE2LCAxMTksIDEwOSwgMiwgMjIzLCAxNjMsIDIxNiwgMTE5LCAKLSAgICAxMDksIDIsIDE0NiwgMjE2LCAxMTksIDEwOSwgMiwgMjM3LCAxNzEsIDIxNiwgMTE5LCAyMDUsIDIwNCwgMjE2LCAxMTksIAotICAgIDIxNCwgMTY4LCA4MiwgMjgsIDEyMywgMjA4LCAyMzYsIDI4LCAxMjMsIDIwOCwgMjM1LCAyOCwgMTIzLCAyMDgsIDIzMywgCi0gICAgMjgsIDEyMywgMjA4LCAyMzgsIDI4LCAxMjMsIDIxNiwgNDIsIDI4LCAxMjMsIDIxNiwgMjYsIDI4LCAxMjMsIDIxNiwgMjEsIAotICAgIDI4LCAxMjMsIDIxNiwgMjMsIDI4LCAxMjMsIDIxNiwgMzksIDI4LCAxMjMsIDIxNiwgMzIsIDI4LCAxMjMsIDIxNiwgMjUsIAotICAgIDI4LCAxMjMsIDIxNiwgNDQsIDI4LCAxMjMsIDIxNiwgMjcsIDI4LCAxMjMsIDIxNiwgNDYsIDI4LCAxMjMsIDIxNiwgNDMsIAotICAgIDI4LCAxMjMsIDIyNCwgMTM3LCAyOCwgMTIzLCAyMjQsIDEyOCwgMjgsIDEyMywgMjI0LCAxMzEsIDI4LCAxMjMsIDIxOCwgCi0gICAgMTM4LCAyOCwgMTIzLCAyMTgsIDE0OSwgMjgsIDEyMywgMjE4LCAxNTAsIDI4LCAxMjMsIDIxMSwgMTQ4LCAyOCwgMTIzLCAKLSAgICAyMzEsIDk2LCAyOCwgMTIzLCAyMzEsIDEwMywgMjgsIDEyMywgMjExLCAxNTksIDI4LCAxMjMsIDIxMSwgMTQ2LCAyOCwgCi0gICAgMTIzLCAyMTgsIDE4OSwgMjgsIDEyMywgMjM2LCAyNDYsIDI4LCAxMjMsIDIxMSwgMTQzLCAxOTAsIDIsIDIxOSwgMTAyLCAKLSAgICAxOTAsIDIsIDI0NiwgMjM1LCAxOTAsIDIsIDIyNywgMjQyLCAxOTAsIDIsIDIwNCwgMjAsIDE5MCwgMSwgNjMsIDE5MCwgMSwgCi0gICAgMjM1LCAyMDYsIDIyOSwgMjExLCAxOTAsIDEsIDc1LCAxOTAsIDEsIDIzMSwgODMsIDE5MCwgMSwgNjgsIDE5MCwgMSwgMjE5LCAKLSAgICAxNjksIDI0NiwgMjA1LCAxOTAsIDEsIDIyMiwgMjA0LCAyMjcsIDIwMSwgMTkwLCAxLCAyMjIsIDIwNCwgMjI3LCAyMDIsIAotICAgIDIxNiwgMTczLCAxOTAsIDEsIDc0LCAxOTAsIDEsIDI1MSwgNjQsIDE5MCwgMSwgNzgsIDE5MCwgMSwgMTczLCAxOTAsIDEsIAotICAgIDIzMCwgNDQsIDIxNCwgMjI3LCAxOTAsIDEsIDIzMCwgNDQsIDIyMywgMjA1LCAxOTAsIDEsIDIzOSwgOCwgMTkwLCAxLCAKLSAgICAyMzksIDksIDIyMywgMjA1LCAxOTAsIDEsIDIyMiwgMjAzLCAxOTAsIDEsIDI0NywgOTIsIDE5MCwgMSwgMjQ3LCA5MywgCi0gICAgMjIzLCAyMDUsIDE5MCwgMSwgMjMwLCAxODEsIDE5MCwgMSwgMjIxLCAxMiwgMjIzLCAyMDUsIDE5MCwgMSwgMjMwLCAxODIsIAotICAgIDIyNSwgMTQ0LCAxOTAsIDEsIDIyMSwgMTEsIDE5MCwgMSwgMjA3LCAyNDEsIDE5MCwgMSwgMjA3LCAyNDIsIDIyNSwgMTQ0LCAKLSAgICAxOTAsIDEsIDI0NCwgMTIwLCAxOTAsIDEsIDI0NCwgMTIxLCAyMjUsIDE0NCwgMTkwLCAxLCAyMjMsIDExMSwgMjIzLCAyMDUsIAotICAgIDE5MCwgMSwgMjEwLCAyMiwgMTkwLCAxLCAyMTAsIDIzLCAyMjMsIDIwNSwgMTkwLCAxLCAyNDQsIDIxMiwgMTkwLCAxLCAKLSAgICAyNDQsIDIxMywgMjI1LCAxNDQsIDE5MCwgMSwgMjAxLCAyMDEsIDE5MCwgMSwgMTg1LCAxOTAsIDEsIDIxOSwgMTY5LCAyMjMsIAotICAgIDIwNSwgMTkwLCAxLCAyNDksIDMyLCAxOTAsIDEsIDI0OSwgMzMsIDIyMywgMjA1LCAxOTAsIDEsIDE5MiwgMTkwLCAxLCAKLSAgICAxOTgsIDE5MCwgMSwgMjE2LCAyMjAsIDE5MCwgMSwgMjE2LCAyMjEsIDI1MSwgNzQsIDE5MCwgMSwgMjI4LCAxMTMsIDE5MCwgCi0gICAgMSwgMjA0LCAxMTEsIDE5MCwgMSwgMjE1LCAzNywgMjIzLCAyMDUsIDE5MCwgMSwgMjE1LCAzNywgMjI1LCAxNDQsIDE5MCwgCi0gICAgMSwgMjE1LCAzNiwgMTkwLCAxLCAxNTIsIDE5MCwgMiwgMjQ2LCAyMzYsIDIwOSwgMTU1LCAxOTAsIDIyLCAyLCAyMDksIAotICAgIDIxNCwgMTkwLCAyMiwgMiwgMjA4LCAxNjYsIDE5MCwgMjIsIDIsIDIwMywgMjExLCAxOTAsIDIyLCAyLCAyMDMsIDIxMiwgCi0gICAgMjI0LCAyNTEsIDE5MCwgMjIsIDIsIDIxMCwgMjI0LCAxOTAsIDIyLCAyLCAyMTAsIDIyNSwgMjI0LCAyMzksIDE5MCwgMjIsIAotICAgIDIsIDIwOSwgMjM1LCAxOTAsIDIyLCAyLCAyNDMsIDE2MywgMjIzLCAyMDQsIDE5MCwgMjIsIDIsIDIxOCwgMjQ5LCAxOTAsIAotICAgIDEwOSwgMiwgMjI5LCAxNzMsIDE5MCwgMTA5LCAyLCAyMTksIDYsIDE5MCwgMTA5LCAyLCAyNDcsIDc3LCAxOTAsIDIxOSwgCi0gICAgMTE1LCAxOTAsIDQ5LCAyMTYsIDkzLCAxOTAsIDUwLCAyMTYsIDkzLCAxOTAsIDIxOSwgMTU4LCAyNTAsIDIyNSwgMTkwLCAKLSAgICAyMTksIDE1OCwgMjI1LCAxNjIsIDE5MCwgMjE5LCAxNTgsIDIyNiwgMjI2LCAxOTAsIDIxOSwgMTU4LCAyMDQsIDE0LCAxOTAsIAotICAgIDIxOSwgMTU4LCAyMTksIDExNiwgMTkwLCAyMTksIDE1OCwgMjI3LCAxMDYsIDE5MCwgMjE5LCAxNTgsIDIyNiwgMjIwLCAKLSAgICAxOTAsIDIxOSwgMTU4LCAyNTEsIDExNiwgMTkwLCAyMTksIDE1OCwgMjUxLCAxMTcsIDI1MSwgMTE2LCAxOTAsIDIxOSwgCi0gICAgMTU4LCAyMTgsIDEwNywgMTkwLCAyMDcsIDE3NCwgMjE5LCAxNTgsIDIxOCwgMTA3LCAxOTAsIDIxOSwgMTExLCAxOTAsIDE3LCAKLSAgICAyMDIsIDg0LCAxOTAsIDE3LCAxMDUsIDE5MCwgMTcsIDEwOCwgMTkwLCAxNywgMTQ3LCAxOTAsIDE3LCAxNDksIDE5MCwgMTcsIAotICAgIDE3MCwgMTkwLCAxNywgMTk1LCAxOTAsIDE3LCAyMTMsIDExMSwgMTkwLCAxNywgMTk5LCAxOTAsIDE3LCAyMjIsIDYzLCAKLSAgICAxOTAsIDIxOSwgMTU4LCAyMDgsIDIwMiwgMjA3LCAxODksIDE5MCwgMjE5LCAxNTgsIDIzMCwgMjExLCA2OSwgMSwgMjEzLCAKLSAgICA2NywgMjM4LCAxMTksIDY5LCAxLCAyMTMsIDY3LCAyNDYsIDE5OSwgNjksIDEsIDIxMywgNjcsIDIzMCwgMTQ5LCA2OSwgMSwgCi0gICAgMjEzLCA2NywgMjIxLCAyMjcsIDY5LCAxLCAyMTMsIDY3LCAyNDgsIDk4LCA2OSwgMiwgMjEzLCA2NywgMjE0LCAyMTMsIDY5LCAKLSAgICA2NSwgMSwgMjEzLCA2NywgMjE2LCAxMzYsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjIxLCAxMSwgNjksIDEsIDQ1LCAyMjgsIAotICAgIDg1LCAyNDAsIDEwOCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzksIDgsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjM4LCAxMTksIAotICAgIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjMwLCAxODEsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjMwLCAxNDksIDY5LCAxLCA0NSwgCi0gICAgMjI4LCA4NSwgMjQ0LCAxMjAsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAxMDQsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjIxLCAKLSAgICAyMjcsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIwMiwgODQsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDEwNSwgNjksIDQ1LCAyMjgsIAotICAgIDg1LCAxNywgMTA4LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxNDcsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE0OSwgNjksIDQ1LCAKLSAgICAyMjgsIDg1LCAxNywgMTcwLCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxOTUsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIxMywgCi0gICAgMTExLCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxOTksIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIyMiwgNjMsIDY5LCAxLCA0NSwgCi0gICAgMjI4LCA4NSwgMjI3LCA3NywgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIDIxMiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIAotICAgIDEsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ5LCAzMiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDgsIDk4LCAyNDYsIDE5MiwgMSwgCi0gICAgNjMsIDI0NiwgMTkyLCAxLCA3NSwgMjQ2LCAxOTIsIDEsIDY4LCAyNDYsIDE5MiwgMSwgNzQsIDI0NiwgMTkyLCAxLCAyNTEsIAotICAgIDY0LCAyNDYsIDE5MiwgMSwgNzgsIDI0NiwgMTkyLCAxLCAxNzMsIDI0NiwgMTkyLCAxLCAyMjksIDE0NCwgMjQ2LCAxOTIsIAotICAgIDEsIDIzOSwgOCwgMjQ2LCAxOTIsIDEsIDIzOCwgMTE5LCAyNDYsIDE5MiwgMSwgMjIyLCAxMTIsIDI0NiwgMTkyLCAxLCAKLSAgICAyMjIsIDIwMywgMjQ2LCAxOTIsIDEsIDI0NiwgMTk5LCAyNDYsIDE5MiwgMSwgMjQ2LCAxNDQsIDI0NiwgMTkyLCAxLCAyMzAsIAotICAgIDE4MSwgMjQ2LCAxOTIsIDEsIDIzMCwgMTQ5LCAyNDYsIDE5MiwgMSwgMjIyLCAxMDIsIDI0NiwgMTkyLCAxLCAyMjIsIDEwNCwgCi0gICAgMjQ2LCAxOTIsIDEsIDIyMiwgMTAzLCAyNDYsIDE5MiwgMSwgMjEwLCAyMiwgMjQ2LCAxOTIsIDEsIDIwOSwgMTA4LCAyNDYsIAotICAgIDE5MiwgMSwgMjQ0LCAyMTIsIDI0NiwgMTkyLCAxLCAyNDQsIDEsIDI0NiwgMTkyLCAxLCAyMjEsIDUzLCAyNDYsIDE5MiwgMSwgCi0gICAgMjAxLCAyMDEsIDI0NiwgMTkyLCAxLCAyNDQsIDEyMCwgMjQ2LCAxOTIsIDEsIDE4NSwgMjQ2LCAxOTIsIDEsIDIxOCwgMTIsIAotICAgIDI0NiwgMTkyLCAxLCAyMTgsIDIwOCwgMjQ2LCAxOTIsIDEsIDI0OSwgMzIsIDI0NiwgMTkyLCAxLCAyNDgsIDk4LCAyNDYsIAotICAgIDE5MiwgMSwgMjIzLCAyMzgsIDI0NiwgMTkyLCAxLCAxOTIsIDI0NiwgMTkyLCAxLCAyNDgsIDE5OCwgMjQ2LCAxOTIsIDEsIAotICAgIDE5OCwgMjQ2LCAxOTIsIDEsIDIxNiwgMjIwLCAyNDYsIDE5MiwgMSwgMjI4LCAxMTMsIDI0NiwgMTkyLCAxLCAyMDYsIDg2LCAKLSAgICAyNDYsIDE5MiwgMSwgMjExLCAxNjQsIDI0NiwgMTkyLCAxLCAyMTUsIDM2LCAyNDYsIDE5MiwgMSwgMTUyLCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDI1MiwgMjUsIDI0NiwgMTkyLCAyMiwgMiwgNzUsIDI0NiwgMTkyLCAyMiwgMiwgMjMxLCA4MywgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCAyNDEsIDE0NSwgMjQ2LCAxOTIsIDIyLCAyLCA2OCwgMjQ2LCAxOTIsIDIyLCAyLCAyMjAsIDczLCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDc4LCAyNDYsIDE5MiwgMjIsIDIsIDI1MSwgNjQsIDI0NiwgMTkyLCAyMiwgMiwgMjUwLCAzNCwgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCAyMDcsIDI0LCAyNDYsIDE5MiwgMTA5LCAyLCAxOTgsIDI0NiwgMTkyLCAxMDksIDIsIDIxNiwgMjIwLCAyNDYsIAotICAgIDE5MiwgMTA5LCAyLCAyMjgsIDExMywgMjQ2LCAxOTIsIDEwOSwgMiwgMjA0LCAxMTEsIDI0NiwgMTkyLCAxLCA0NiwgMjMwLCAKLSAgICA1NCwgMjQ2LCAxOTIsIDEsIDQ2LCAyMzksIDc1LCAyNDYsIDE5MiwgMSwgNDYsIDIyMiwgMjA1LCAyNDYsIDE5MiwgMTA5LCAKLSAgICAyLCA0NiwgMjIyLCAyMDUsIDI0NiwgMTkyLCAxLCA0NiwgMjQ2LCAyMDAsIDI0NiwgMTkyLCAxLCA0NiwgMjEwLCA2OSwgCi0gICAgMjQ2LCAxOTIsIDEsIDQ2LCAyMjMsIDE2MywgMjQ2LCAxOTIsIDEsIDQ2LCAyMTksIDE4NCwgMjQ2LCAxOTIsIDEsIDQ2LCAKLSAgICAyMDMsIDEyNCwgMjQ2LCAxOTIsIDEsIDQ2LCAxNDYsIDI0NiwgMTkyLCAxLCA0NiwgMTU5LCAyNDYsIDE5MiwgMSwgNDYsIAotICAgIDIxMSwgMTY3LCAyNDYsIDE5MiwgMTA5LCAyLCA0NiwgMjI2LCAxODUsIDI0NiwgMTkyLCAxMDksIDIsIDQ2LCAyMzcsIDE3MSwgCi0gICAgMjQ2LCAxOTIsIDE3LCAyMDIsIDg0LCAyNDYsIDE5MiwgMTcsIDEwNSwgMjQ2LCAxOTIsIDE3LCAxMDgsIDI0NiwgMTkyLCAKLSAgICAxNywgMTQ3LCAyNDYsIDE5MiwgMTcsIDE0OSwgMjQ2LCAxOTIsIDE3LCAxNzAsIDI0NiwgMTkyLCAxNywgMTk1LCAyNDYsIAotICAgIDE5MiwgMTcsIDIxMywgMTExLCAyNDYsIDE5MiwgMTcsIDE5OSwgMjQ2LCAxOTIsIDE3LCAyMjIsIDYzLCAyNDYsIDE5MiwgCi0gICAgMjE3LCAxNzksIDIxMSwgMjAxLCAyNDYsIDE5MiwgMjE3LCAxNzksIDI0NCwgMTY2LCAyNDYsIDE5MiwgMjE3LCAxNzksIDUyLCAKLSAgICAyNDQsIDE2NiwgMjQ2LCAxOTIsIDIxNywgMTc5LCAyMDgsIDcwLCAyNDQsIDE2NiwgNjksIDEsIDIyOSwgMTM3LCAyMzksIDgsIAotICAgIDY5LCAxLCAyMjksIDEzNywgMjQ3LCA5MiwgNjksIDEsIDIyOSwgMTM3LCAyNDYsIDE5OSwgNjksIDEsIDIyOSwgMTM3LCAKLSAgICAyMzAsIDE4MSwgNjksIDEsIDIyOSwgMTM3LCAyMzAsIDE0OSwgNjksIDEsIDIyOSwgMTM3LCAyMjEsIDExLCA2OSwgMSwgCi0gICAgMjI5LCAxMzcsIDIwNywgMjQxLCA2OSwgMSwgMjI5LCAxMzcsIDIwNywgMjI5LCA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMTIwLCAKLSAgICA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMTA0LCA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMSwgNjksIDEsIDIyOSwgMTM3LCAyMDEsIAotICAgIDIwMSwgNjksIDEsIDIyOSwgMTM3LCAyMTUsIDM2LCA2OSwgMSwgMjI5LCAxMzcsIDE1MiwgNjksIDEsIDIyOSwgMTM3LCAKLSAgICAyMzcsIDEyLCA2OSwgMSwgMjI5LCAxMzcsIDI0MCwgMTA4LCA2OSwgNjUsIDEsIDIyOSwgMTM3LCAyMTYsIDEzNiwgNjksIDEsIAotICAgIDIyOSwgMTM3LCAyMDMsIDE4MiwgNjksIDEsIDIyOSwgMTM3LCAyMDIsIDExNiwgNjksIDEsIDIyOSwgMTM3LCAyMTYsIDIyMCwgCi0gICAgNjksIDIyNywgMzYsIDIyOSwgMTM3LCAyMjAsIDk0LCA2OSwgMjI3LCAzNiwgMjI5LCAxMzcsIDIxNywgNzgsIDY5LCAyMjcsIAotICAgIDM2LCAyMjksIDEzNywgMjM2LCAxOTEsIDY5LCAxNiwgMjUxLCA1MSwgMjQwLCAyMTEsIDY5LCAxNiwgMjUxLCA1MSwgMTA1LCAKLSAgICA2OSwgMTYsIDI1MSwgNTEsIDEwOCwgNjksIDEsIDI1MSwgNTEsIDIxNiwgMjIwLCA2OSwgMiwgMjE5LCA5OCwgMjI5LCAyMzcsIAotICAgIDIwOCwgMTYxLCA2OSwgMiwgNDUsIDIyOCwgODUsIDIwOCwgMTU5LCA2OSwgMiwgNDUsIDIyOCwgODUsIDIwOCwgMTU2LCA2OSwgCi0gICAgMSwgMjEyLCAxNzgsIDIxOSwgMTM5LCAyNDYsIDE5OSwgNjksIDEsIDIxMiwgMTc4LCAyMTksIDEzOSwgMjEzLCA5MCwgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIyOSwgMjYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDI2LCA0NSwgMjA1LCAyMjAsIAotICAgIDEsIDEyNCwgMjI5LCAxMTUsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDExNSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIAotICAgIDIyOSwgMTI0LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAxMjQsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMzgsIDM5LCAKLSAgICA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM4LCAzOSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyMiwgMTI4LCA0NSwgMjA1LCAKLSAgICAyMjAsIDEsIDEzOCwgMjIyLCAxMjgsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDUsIDI1NCwgNDUsIDIwNSwgMjIwLCAxLCAKLSAgICAxMzgsIDI0NSwgMjU0LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ2LCAxMTYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyNDYsIAotICAgIDExNiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxMiwgMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTIsIDEzLCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgMjIwLCAyMzMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjAsIDIzMywgNDUsIDIwNSwgMjIwLCAKLSAgICAxLCAxMjQsIDI0MywgMTEzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQzLCAxMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKLSAgICAxMzUsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAxMzUsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDksIDQ3LCA0NSwgMjA1LCAKLSAgICAyMjAsIDEsIDEzOCwgMjA5LCA0NywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyMSwgMTkxLCA0NSwgMjA1LCAyMjAsIDEsIAotICAgIDEzOCwgMjIxLCAxOTEsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDgsIDIzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQ4LCAKLSAgICAyMywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxOCwgNjksIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTgsIDY5LCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgMjE4LCAxODAsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTgsIDE4MCwgNDUsIDIwNSwgMjIwLCAKLSAgICAxLCAxMjQsIDIzOSwgMTg2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM5LCAxODYsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKLSAgICAyMjQsIDgyLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI0LCA4MiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIwMiwgMjQ3LCAKLSAgICA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjAyLCAyNDcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTUsIDIyNywgNDUsIDIwNSwgCi0gICAgMjIwLCAxLCAxMzgsIDIxNSwgMjI3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjI3LCA0OSwgNDUsIDIwNSwgMjIwLCAxLCAKLSAgICAxMzgsIDIyNywgNDksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDUsIDE4OSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIwNSwgCi0gICAgMTg5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjM2LCAxMzYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMzYsIDEzNiwgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDc4LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgNzgsIDQ1LCAyMDUsIDIyMCwgMjI1LCAxNDEsIAotICAgIDIzMCwgMCwgNDUsIDIwNSwgMjIwLCAyMiwgMjUyLCAyNSwgNDUsIDIwNSwgMjIwLCAyMiwgNzUsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMjIsIDIwNywgMjQsIDQ1LCAyMDUsIDIyMCwgMjIsIDY4LCA0NSwgMjA1LCAyMjAsIDIyLCA3NCwgNDUsIDIwNSwgMjIwLCAKLSAgICAyMiwgNzgsIDQ1LCAyMDUsIDIyMCwgMjI1LCAxNDEsIDIyOSwgMTE4LCA0NSwgMjA1LCAyMjAsIDIyLCAyMzUsIDE3MSwgNDUsIAotICAgIDIwNSwgMjIwLCAyMiwgMjA3LCAyMywgNDUsIDIwNSwgMjIwLCAyMiwgMjA3LCAzOSwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCAKLSAgICAzMiwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCA4LCA0NSwgMjA1LCAyMjAsIDIyLCAyNTAsIDIzMSwgNDUsIDIwNSwgMjIwLCAKLSAgICAyMiwgMjUwLCAyNDcsIDQ1LCAyMDUsIDIyMCwgMTQzLCAyMjUsIDE0MSwgMjQxLCAxMjksIDQ1LCAyMDUsIDIyMCwgMTQzLCAKLSAgICAyMjUsIDE0MSwgMjIxLCA1MiwgNDUsIDIwNSwgMjIwLCAxNDMsIDIyNSwgMTQxLCAyMDksIDQ3LCA0NSwgMjA1LCAyMjAsIAotICAgIDE0MywgMjI1LCAxNDEsIDIxMSwgMjUyLCA0NSwgMjA1LCAyMjAsIDE2LCAyMjksIDksIDQ1LCAyMDUsIDIyMCwgMTYsIDIyMSwgCi0gICAgNTIsIDQ1LCAyMDUsIDIyMCwgMTYsIDIxNCwgMjUzLCA0NSwgMjA1LCAyMjAsIDE2LCAyMzYsIDEzNywgMjM2LCAxMzEsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMTYsIDIyOSwgMTksIDIyOSwgMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgNzQsIDIyNSwgMiwgMjI1LCA2MSwgCi0gICAgMSwgNzgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQ2LCAxOTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIxLCAxMSwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMDcsIDI0MSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDcsIDIyOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyNDQsIDEyMCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDQsIDEwNCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjEsIDIyNywgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTMsIDkwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxMSwgMTY0LCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDIyLCAyLCAyMzEsIDgzLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDYsIDE3OCwgMjI1LCAyLCAyMjUsIDYxLCAKLSAgICAyMiwgMiwgMjUxLCAyNDUsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDI1MCwgMzQsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIAotICAgIDI1MSwgMjM4LCAyMjUsIDIsIDIyNSwgNjEsIDI0NiwgMTU5LCAyMjUsIDIsIDIyNSwgNjEsIDI1MSwgNzAsIDIyOSwgMTA3LCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDI1MCwgMjA5LCAyMjUsIDIsIDIyNSwgNjEsIDQsIDIxNiwgOTgsIDgyLCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDIwMywgMjM4LCAyMTYsIDk4LCA4MiwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjA1LCAxOTksIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMjA1LCAyMDQsIDMzLCA0LCAyMDcsIDIyMiwgMzMsIDQsIDIwNywgMjI1LCAzMywgNCwgMjA3LCAyMjgsIDMzLCA0LCAKLSAgICAyMDcsIDIyNiwgMzMsIDQsIDIwNywgMjI3LCAzMywgNCwgMjA3LCAyMjQsIDMzLCA0LCAyNDQsIDk4LCAzMywgNCwgMjQ0LCAKLSAgICAxMDAsIDMzLCA0LCAyNDQsIDEwMywgMzMsIDQsIDI0NCwgMTAxLCAzMywgNCwgMjQ0LCAxMDIsIDMzLCA0LCAyNDQsIDk5LCAKLSAgICAzMywgNCwgMjQxLCAyNDIsIDMzLCA0LCAyNDEsIDI0NiwgMzMsIDQsIDI0MSwgMjU0LCAzMywgNCwgMjQxLCAyNTEsIDMzLCAKLSAgICA0LCAyNDEsIDI1MiwgMzMsIDQsIDI0MSwgMjQzLCAzMywgNCwgMjQ2LCAyNTIsIDMzLCA0LCAyNDYsIDI0NiwgMzMsIDQsIAotICAgIDI0NiwgMjQ4LCAzMywgNCwgMjQ2LCAyNTEsIDMzLCA0LCAyNDYsIDI0OSwgMzMsIDQsIDI0NiwgMjUwLCAzMywgNCwgMjQ2LCAKLSAgICAyNDcsIDMzLCA0LCAyNDgsIDE5OCwgMzMsIDQsIDI0OCwgMTc3LCAzMywgNCwgMjQ4LCAxODksIDMzLCA0LCAyNDgsIDE5NywgCi0gICAgMzMsIDQsIDI0OCwgMTkyLCAzMywgNCwgMjQ4LCAxOTMsIDMzLCA0LCAyNDgsIDE4MSwgOCwgNSwgMSwgMjQ4LCAyMjUsIAotICAgIDI1MSwgMiwgOCwgNSwgMSwgMzQsIDIxNiwgNzEsIDgsIDUsIDEsIDI0OCwgMzksIDc0LCA4LCA1LCAxLCAyNDgsIDIyNSwgCi0gICAgNzQsIDgsIDUsIDEsIDE4OCwgMywgMjM5LCAxOTksIDgsIDUsIDEsIDIyNywgMTg3LCAyNDAsIDE3NCwgOCwgNSwgMSwgMTMyLCAKLSAgICAyMzksIDc2LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgNTIsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIxNSwgCi0gICAgMjUyLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDUsIDEyNiwgOCwgCi0gICAgNSwgMSwgMjQxLCA3OSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDI0OCwgMzksIDc4LCA4LCA1LCAxLCAyNDgsIDM5LCAxNTgsIAotICAgIDMsIDk1LCA4LCA1LCAxLCAxNzEsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMjM5LCAyMjAsIDczLCA4LCA1LCAxLCAKLSAgICAyMDcsIDE3NCwgMjIwLCA3NCwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjAsIDc0LCAzLCAyMzYsIDEwNiwgOTUsIDgsIAotICAgIDUsIDEsIDIwNywgMTc0LCAxNTgsIDIyMCwgNCwgOCwgNSwgMSwgMjA3LCAxNzQsIDE1OCwgMjIwLCA1LCAzLCA5NSwgOCwgNSwgCi0gICAgMSwgMjExLCA2NiwgMTQ2LCA4LCAxLCA1LCA2LCAyMTcsIDEsIDMsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjE3LCAxLCAKLSAgICAyMDQsIDMsIDIzNywgMTAyLCA4LCA1LCAxLCA1MiwgMTQ2LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDI0NSwgMTI2LCA4LCA1LCAKLSAgICAxLCA1MiwgMjE3LCAxLCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMTMyLCAxNDYsIDgsIDUsIDEsIDEzMiwgMjE3LCAxLCAzLCAKLSAgICAyMTUsIDI1MiwgOCwgNSwgMSwgMjQ4LCAyMTYsIDI0MSwgNywgOCwgNSwgMSwgMTA2LCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgCi0gICAgMjEwLCA4LCA1LCAxLCAxMDYsIDI0OCwgMjMxLCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgMjEwLCA4LCA1LCAxLCAyMDcsIDE3LCAKLSAgICA4LCA1LCAxLCAyMDcsIDE3NCwgMjA3LCAxNywgOCwgNSwgMSwgMTA2LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyNDYsIDE0MiwgCi0gICAgOCwgNSwgMSwgMjQ2LCAxNDMsIDMsIDEyNCwgNTAsIDIxNSwgMjUyLCA4LCA1LCAxLCAyNDYsIDE0MywgMywgMTI0LCA0OSwgCi0gICAgMjEzLCAxMjUsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxMjQsIDUwLCAyMTUsIDI1MiwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIAotICAgIDE2MywgNDksIDIyNywgMjEwLCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTYzLCA0OSwgMjI3LCAyMTEsIDI1LCAxMjQsIDUwLCAKLSAgICAyMTUsIDI1MiwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDE2MywgNDksIDIyNywgMjExLCAzLCAyMTMsIDEyNSwgOCwgNSwgMSwgCi0gICAgMjAzLCAxMjUsIDMsIDIxMiwgMjI4LCA1MCwgMjI3LCAyMTAsIDY1LCAyNDcsIDIxNSwgMywgMjMwLCAyMzksIDI0NywgMjE0LCAKLSAgICA2NSwgMSwgNSwgMjM3LCAzMSwgNjUsIDEsIDUsIDIyOCwgMTMxLCAzLCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgNjUsIDEsIAotICAgIDUsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA2NSwgMSwgNSwgMTA2LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyMTUsIAotICAgIDExLCAyMDMsIDY2LCA4LCA1LCAxLCAyMzAsIDIyOCwgNzQsIDgsIDUsIDEsIDE3MSwgMjIwLCA3MywgOCwgNSwgMSwgMjA2LCAKLSAgICAyMjgsIDgsIDUsIDEsIDIzMCwgMjM5LCAyNTEsIDIsIDMwLCAxLCA1LCA2LCAyMjAsIDM2LCA5MCwgNSwgMSwgNjMsIDkwLCAKLSAgICA1LCAxLCA3NCwgOTAsIDUsIDEsIDc1LCA5MCwgNSwgMSwgNzgsIDkwLCA1LCAxLCA2OCwgOTAsIDUsIDEsIDIwNiwgMTY0LCAKLSAgICA5MCwgNSwgMSwgMjM5LCA4LCA5MCwgNSwgMSwgMTczLCA5MCwgNSwgMSwgMjM4LCAxOTAsIDkwLCA1LCAxLCAyMzgsIDgxLCAKLSAgICA5MCwgNSwgMSwgMjM4LCAzOSwgOTAsIDUsIDEsIDIzNywgMjMwLCA5MCwgNSwgMSwgMjM3LCAxOTIsIDkwLCA1LCAxLCAxNTIsIAotICAgIDkwLCA1LCAxLCAyMzcsIDY3LCA5MCwgNSwgMSwgMjM3LCAzLCA5MCwgNSwgMSwgMjM2LCAxMzYsIDkwLCA1LCAxLCAyMzYsIAotICAgIDI2LCA5MCwgNSwgMSwgMjM1LCAyNTUsIDkwLCA1LCAxLCAyMjgsIDExMywgOTAsIDUsIDEsIDIyNywgMjM0LCA5MCwgNSwgMSwgCi0gICAgMjI3LCAxNDgsIDkwLCA1LCAxLCAyMjcsIDQ5LCA5MCwgNSwgMSwgMjI2LCAyMzksIDkwLCA1LCAxLCAyMjYsIDIwOCwgOTAsIAotICAgIDUsIDEsIDE5MiwgOTAsIDUsIDEsIDIyNSwgMjAsIDkwLCA1LCAxLCAyMjQsIDE1NSwgOTAsIDUsIDEsIDIyNCwgODIsIDkwLCAKLSAgICA1LCAxLCAyMjMsIDI0NiwgOTAsIDUsIDEsIDIwMSwgMjAxLCA5MCwgNSwgMSwgMjM2LCAxNjAsIDkwLCA1LCAxLCAyMjMsIAotICAgIDkzLCA5MCwgNSwgMSwgMjIyLCAyNDAsIDkwLCA1LCAxLCAyMjIsIDEwMCwgOTAsIDUsIDEsIDIyMSwgMTkxLCA5MCwgNSwgMSwgCi0gICAgMjIxLCA4NCwgOTAsIDUsIDEsIDIyMSwgMjIsIDkwLCA1LCAxLCAyMTcsIDY0LCA5MCwgNSwgMSwgMjE3LCA1MCwgOTAsIDUsIAotICAgIDEsIDIxNywgNDMsIDkwLCA1LCAxLCAyMTcsIDM0LCA5MCwgNSwgMSwgMjE3LCAyMywgOTAsIDUsIDEsIDIxNywgMjEsIDkwLCAKLSAgICA1LCAxLCAyMTUsIDM2LCA5MCwgNSwgMSwgMTk0LCA5MCwgNSwgMSwgMjE0LCAxNzcsIDkwLCA1LCAxLCAyMTIsIDE2MiwgOTAsIAotICAgIDUsIDEsIDIxMiwgMTMsIDkwLCA1LCAxLCAyMTEsIDEwLCA5MCwgNSwgMSwgMjEwLCAxNzcsIDkwLCA1LCAxLCAyNDQsIDIxMiwgCi0gICAgOTAsIDUsIDEsIDIxMCwgMjIsIDkwLCA1LCAxLCAyNDQsIDc1LCA5MCwgNSwgMSwgMjA5LCAxODcsIDkwLCA1LCAxLCAyNDMsIAotICAgIDIzMywgOTAsIDUsIDEsIDIwOSwgMiwgOTAsIDUsIDEsIDI0MywgMTEzLCA5MCwgNSwgMSwgMjQyLCA0MiwgOTAsIDUsIDEsIAotICAgIDI0MiwgMTMsIDkwLCA1LCAxLCAyNDMsIDEyNCwgOTAsIDUsIDEsIDIwOCwgMTkwLCA5MCwgNSwgMSwgMjA4LCAxODksIDkwLCAKLSAgICA1LCAxLCAyMDgsIDE3OCwgOTAsIDUsIDEsIDIwOCwgMTc3LCA5MCwgNSwgMSwgMjA4LCAxNzYsIDkwLCA1LCAxLCAyMDgsIAotICAgIDE3NSwgOTAsIDUsIDEsIDIwOCwgMjAsIDkwLCA1LCAxLCAyMDgsIDE0LCA5MCwgNSwgMSwgMjA3LCAyNTUsIDkwLCA1LCAxLCAKLSAgICAyMDcsIDI1MywgOTAsIDUsIDEsIDIwNywgMjQ5LCA5MCwgNSwgMSwgMjA3LCAyNDgsIDkwLCA1LCAxLCAyMDQsIDExMSwgOTAsIAotICAgIDUsIDEsIDIwNCwgNjIsIDkwLCA1LCAxLCAyMDQsIDMwLCA5MCwgNSwgMSwgMjA0LCAwLCA5MCwgNSwgMSwgMjAzLCAyMTcsIAotICAgIDkwLCA1LCAxLCAyMDMsIDIwNCwgOTAsIDUsIDEsIDE5OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjksIDE2LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIxNCwgMjUzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOCwgODYsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjI0LCA5MywgMjI1LCAyLCAyMjUsIDYxLCAxLCAxODUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjAxLCAyMDEsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjQ2LCAxMzQsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA4LCAyMjksIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjI5LCAxMTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIyLCAxMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA5LCAzOSwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyMDQsIDEwNSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDMsIDc2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIzNiwgMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA2LCAyNTUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgNzUsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjE4LCAyMDIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjUwLCA0NSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMzgsIDMyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzMCwgMTQ3LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxNiwgMTk3LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDI0OSwgMzIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjMwLCAxMzMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjQzLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjM4LCA4OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDMsIDIzNSwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyNDgsIDk2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOSwgMTcsIDIyNywgMTksIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjI4LCA4NywgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjQsIDk0LCAyMjcsIDE5LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDIxOSwgMTY5LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMywgMTExLCAyMjcsIDE5LCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOCwgMjMwLCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMiwgMTE5LCAyMjcsIAotICAgIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzNSwgMjA2LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMjAsIAotICAgIDMwLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMzEsIDQ3LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNTAsIDIzMCwgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjAzLCA0MSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjExLCAyNDIsIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNiwgMjUyLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNDYsIDE1NywgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAyMiwgMiwgMjIxLCAzNywgMjI1LCAyLCAyMjUsIDYxLCAyNDYsIDE1OCwgMjI1LCAyLCAyMjUsIDYxLCAyMjYsIAotICAgIDIyMywgMjMwLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMjUwLCAxNDksIDIzMCwgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAKLSAgICAyMDIsIDg0LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxMDUsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDEwOCwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAxNywgMTQ3LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxNDksIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDE3MCwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxNywgMTk1LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAyMTMsIDExMSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgCi0gICAgMTk5LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAyMjIsIDYzLCAyOCwgMTc2LCAyMjAsIDE3NCwgMjgsIDE3NiwgMjIwLCAxNzksIAotICAgIDI4LCAxNzYsIDIwMiwgMjQ2LCAyOCwgMTc2LCAyMDIsIDI0NSwgMjgsIDE3NiwgMjAyLCAyNDQsIDI4LCAxNzYsIDIwNywgCi0gICAgODksIDI4LCAxNzYsIDIwNywgOTMsIDI4LCAxNzYsIDIwMiwgMjExLCAyOCwgMTc2LCAyMDIsIDIwNywgMjgsIDE3NiwgMjQwLCAKLSAgICAyMzcsIDI4LCAxNzYsIDI0MCwgMjM1LCAyOCwgMTc2LCAyNDAsIDIzNiwgMjgsIDE3NiwgMjQwLCAyMzMsIDI4LCAxNzYsIAotICAgIDIzNSwgMTk2LCAyOCwgMTc2LCAyMzUsIDE5NSwgMjgsIDE3NiwgMjM1LCAxOTMsIDI4LCAxNzYsIDIzNSwgMTk0LCAyOCwgCi0gICAgMTc2LCAyMzUsIDE5OSwgMjgsIDE3NiwgMjM1LCAxOTIsIDI4LCAxNzYsIDIzNSwgMTkxLCAyOCwgMTc2LCAyMzUsIDIwMSwgCi0gICAgMjgsIDE3NiwgMjUwLCAxMzYsIDI4LCAxNzYsIDI1MCwgMTM1LCAyOCwgMTA3LCAyMjIsIDg2LCAyOCwgMTA3LCAyMjIsIDkyLCAKLSAgICAyOCwgMTA3LCAyMTEsIDE0NSwgMjgsIDEwNywgMjExLCAxNDQsIDI4LCAxMDcsIDIwOCwgMjM1LCAyOCwgMTA3LCAyMDgsIAotICAgIDIzMywgMjgsIDEwNywgMjA4LCAyMzIsIDI4LCAxMDcsIDIwOCwgMjM4LCAyOCwgMTA3LCAyMDgsIDIzOSwgMjgsIDEwNywgCi0gICAgMjA4LCAyMzEsIDI4LCAxMDcsIDIxNiwgMjYsIDI4LCAxMDcsIDIxNiwgNDEsIDI4LCAxMDcsIDIxMSwgMTUxLCAyOCwgMTA3LCAKLSAgICAyMTYsIDM4LCAyOCwgMTA3LCAyMTYsIDI4LCAyOCwgMTA3LCAyMTYsIDMwLCAyOCwgMTA3LCAyMTYsIDE3LCAyOCwgMTA3LCAKLSAgICAyMTYsIDE4LCAyOCwgMTA3LCAyMjksIDI0MywgMjgsIDEwNywgMjI0LCAxMzYsIDI4LCAxMDcsIDIyNCwgMTMwLCAyOCwgCi0gICAgMTA3LCAyMTEsIDE1NSwgMjgsIDEwNywgMjI0LCAxMzMsIDI4LCAxMDcsIDIyNCwgMTM5LCAyOCwgMTA3LCAyMTgsIDEzNCwgCi0gICAgMjgsIDEwNywgMjE4LCAxNDMsIDI4LCAxMDcsIDIxOCwgMTQ3LCAyOCwgMTA3LCAyMTEsIDE1MywgMjgsIDEwNywgMjE4LCAKLSAgICAxMzcsIDI4LCAxMDcsIDIxOCwgMTUxLCAyOCwgMTA3LCAyMTgsIDE1MiwgMjgsIDEwNywgMjEyLCAxMDMsIDI4LCAxMDcsIAotICAgIDIxMiwgMTA2LCAyOCwgMTA3LCAyMTEsIDE0OSwgMjgsIDEwNywgMjExLCAxNDcsIDI4LCAxMDcsIDIxMiwgMTAxLCAyOCwgCi0gICAgMTA3LCAyMTIsIDEwOSwgMjgsIDEwNywgMjEyLCAxMTAsIDI4LCAxMDcsIDIxMiwgOTUsIDI4LCAxMDcsIDIxMiwgMTA4LCAKLSAgICAyOCwgMTA3LCAyMTksIDEwNSwgMjgsIDEwNywgMjE5LCAxMDYsIDI4LCAxMDcsIDIwMywgMjcsIDI4LCAxMDcsIDIwMywgMjgsIAotICAgIDI4LCAxMDcsIDI0NiwgNzIsIDI4LCAxMDcsIDI0NiwgNzEsIDI4LCAxMDcsIDIxMSwgMTYwLCAyOCwgMTA3LCAyMTgsIDE4NywgCi0gICAgMjgsIDEwNywgMjE4LCAxODYsIDEyLCAxNSwgMjMzLCA3NCwgMTIsIDE1LCAyMzMsIDczLCAxMiwgMTUsIDIzMywgNzIsIDEyLCAKLSAgICAxNSwgMjMzLCA3MSwgMTIsIDE1LCAyMzMsIDcwLCAxMiwgMTUsIDIzMywgNjksIDEyLCAxNSwgMjMzLCA2OCwgMTIsIDE1LCAKLSAgICAyMzMsIDY3LCAxMiwgMTUsIDIzMywgNjYsIDEyLCAxNSwgMjMzLCA2NSwgMTIsIDE1LCAyMzMsIDY0LCAxMiwgMTUsIDIzMywgCi0gICAgNjMsIDEyLCAxNSwgMjMzLCA2MiwgMTIsIDE1LCAyMzMsIDYxLCAxMiwgMTUsIDIzMywgNjAsIDEyLCAxNSwgMjMzLCA1OSwgCi0gICAgMTIsIDE1LCAyMzMsIDU4LCAxMiwgMTUsIDIzMywgNTcsIDEyLCAxNSwgMjMzLCA1NiwgMTIsIDE1LCAyMzMsIDU1LCAxMiwgCi0gICAgMTUsIDIzMywgNTQsIDEyLCAxNSwgMjMzLCA1MywgMTIsIDE1LCAyMzMsIDUyLCAxMiwgMTUsIDIzMywgNTEsIDEyLCAxNSwgCi0gICAgMjMzLCA1MCwgMTIsIDE1LCAyMzMsIDQ5LCAxMiwgMTUsIDIzMywgNDgsIDEyLCAxNSwgMjMzLCA0NywgMTIsIDE1LCAyMzMsIAotICAgIDQ2LCAxMiwgMTUsIDIzMywgNDUsIDEyLCAxNSwgMjMzLCA0NCwgMTIsIDE1LCAyMzMsIDQzLCAxMiwgMTUsIDIzMywgNDIsIAotICAgIDEyLCAxNSwgMjMzLCA0MSwgMTIsIDE1LCAyMzMsIDQwLCAxMiwgMTUsIDIzMywgMzksIDEyLCAxNSwgMjMzLCAzOCwgMTIsIAotICAgIDE1LCAyMzMsIDM3LCAxMiwgMTUsIDIzMywgMzYsIDEyLCAxNSwgMjMzLCAzNSwgMTIsIDE1LCAyMzMsIDM0LCAxMiwgMTUsIAotICAgIDIzMywgMzMsIDEyLCAxNSwgMjMzLCAzMiwgMTIsIDE1LCAyMzMsIDMxLCAxMiwgMTUsIDIzMywgMzAsIDEyLCAxNSwgMjMzLCAKLSAgICAyOSwgMTIsIDE1LCAyMzMsIDI4LCAxMiwgMTUsIDIzMywgMjcsIDEyLCAxNSwgMjMzLCAyNiwgMTIsIDE1LCAyMzMsIDI1LCAKLSAgICAxMiwgMTUsIDIzMywgMjQsIDEyLCAxNSwgMjMzLCAyMywgMTIsIDE1LCAyMzMsIDIyLCAxMiwgMTUsIDIzMywgMjEsIDEyLCAKLSAgICAxNSwgMjMzLCAyMCwgMTIsIDE1LCAyMzMsIDE5LCAxMiwgMTUsIDIzMywgMTgsIDEyLCAxNSwgMjMzLCAxNywgMTIsIDE1LCAKLSAgICAyMzMsIDE2LCAxMiwgMTUsIDIzMywgMTUsIDEyLCAxNSwgMjMzLCAxNCwgMTIsIDE1LCAyMzMsIDEzLCAxMiwgMTUsIDIzMywgCi0gICAgMTIsIDEyLCAxNSwgMjMzLCAxMSwgMTIsIDE1LCAyMzMsIDEwLCAxMiwgMTUsIDIzMywgOSwgMTIsIDE1LCAyMzMsIDgsIDEyLCAKLSAgICAxNSwgMjMzLCA3LCAxMiwgMTUsIDIzMywgNiwgMTIsIDE1LCAyMzMsIDUsIDEyLCAxNSwgMjMzLCA0LCAxMiwgMTUsIDIzMywgCi0gICAgMywgMTIsIDE1LCAyMzMsIDIsIDEyLCAxNSwgMjMzLCAxLCAxMiwgMTUsIDIzMywgMCwgMTIsIDE1LCAyMzIsIDI1NSwgMTIsIAotICAgIDE1LCAyMzIsIDI1NCwgMTIsIDE1LCAyMzIsIDI1MywgMTIsIDE1LCAyMzIsIDI1MiwgMTIsIDE1LCAyMzIsIDI1MSwgMTIsIAotICAgIDE1LCAyMzIsIDI1MCwgMTIsIDE1LCAyMzIsIDI0OSwgMTIsIDE1LCAyMzIsIDI0OCwgMTIsIDE1LCAyMzIsIDI0NywgMTIsIAotICAgIDE1LCAyMzIsIDI0NiwgMTIsIDE1LCAyMzIsIDI0NSwgMTIsIDE1LCAyMzIsIDI0NCwgMTIsIDE1LCAyMzIsIDI0MywgMTIsIAotICAgIDE1LCAyMzIsIDI0MiwgMTIsIDE1LCAyMzIsIDI0MSwgMTIsIDE1LCAyMzIsIDI0MCwgMTIsIDE1LCAyMzIsIDIzOSwgMTIsIAotICAgIDE1LCAyMzIsIDIzOCwgMTIsIDE1LCAyMzIsIDIzNywgMTIsIDE1LCAyMzIsIDIzNiwgMTIsIDE1LCAyMzIsIDIzNSwgMTIsIAotICAgIDE1LCAyMzIsIDIzNCwgMTIsIDE1LCAyMzIsIDIzMywgMTIsIDE1LCAyMzIsIDIzMiwgMTIsIDE1LCAyMzIsIDIzMSwgMTIsIAotICAgIDE1LCAyMzIsIDIzMCwgMTIsIDE1LCAyMzIsIDIyOSwgMTIsIDE1LCAyMzIsIDIyOCwgMTIsIDE1LCAyMzIsIDIyNywgMTIsIAotICAgIDE1LCAyMzIsIDIyNiwgMTIsIDE1LCAyMzIsIDIyNSwgMTIsIDE1LCAyMzIsIDIyNCwgMTIsIDE1LCAyMzIsIDIyMywgMTIsIAotICAgIDE1LCAyMzIsIDIyMiwgMTIsIDE1LCAyMzIsIDIyMSwgMTIsIDE1LCAyMzIsIDIyMCwgMTIsIDE1LCAyMzIsIDIxOSwgMTIsIAotICAgIDE1LCAyMzIsIDIxOCwgMTIsIDE1LCAyMzIsIDIxNywgMTIsIDE1LCAyMzIsIDIxNiwgMTIsIDE1LCAyMzIsIDIxNSwgMTIsIAotICAgIDE1LCAyMzIsIDIxNCwgMTIsIDE1LCAyMzIsIDIxMywgMTIsIDE1LCAyMzIsIDIxMiwgMTIsIDE1LCAyMzIsIDIxMSwgMTIsIAotICAgIDE1LCAyMzIsIDIxMCwgMTIsIDE1LCAyMzIsIDIwOSwgMTIsIDE1LCAyMzIsIDIwOCwgMTIsIDE1LCAyMzIsIDIwNywgMTIsIAotICAgIDE1LCAyMzIsIDIwNiwgMTIsIDE1LCAyMzIsIDIwNSwgMTIsIDE1LCAyMzIsIDIwNCwgMTIsIDE1LCAyMzIsIDIwMywgMTIsIAotICAgIDE1LCAyMzIsIDIwMiwgMTIsIDE1LCAyMzIsIDIwMSwgMTIsIDE1LCAyMzIsIDIwMCwgMTIsIDE1LCAyMzIsIDE5OSwgMTIsIAotICAgIDE1LCAyMzIsIDE5OCwgMTIsIDE1LCAyMzIsIDE5NywgMTIsIDE1LCAyMzIsIDE5NiwgMTIsIDE1LCAyMzIsIDE5NSwgMTIsIAotICAgIDE1LCAyMzIsIDE5NCwgMTIsIDE1LCAyMzIsIDE5MywgMTIsIDE1LCAyMzIsIDE5MiwgMTIsIDE1LCAyMzIsIDE5MSwgMTIsIAotICAgIDE1LCAyMzIsIDE5MCwgMTIsIDE1LCAyMzIsIDE4OSwgMTIsIDE1LCAyMzIsIDE4OCwgMTIsIDE1LCAyMzIsIDE4NywgMTIsIAotICAgIDE1LCAyMzIsIDE4NiwgMTIsIDE1LCAyMzIsIDE4NSwgMTIsIDE1LCAyMzIsIDE4NCwgMTIsIDE1LCAyMzIsIDE4MywgMTIsIAotICAgIDE1LCAyMzIsIDE4MiwgMTIsIDE1LCAyMzIsIDE4MSwgMTIsIDE1LCAyMzIsIDE4MCwgMTIsIDE1LCAyMzIsIDE3OSwgMTIsIAotICAgIDE1LCAyMzIsIDE3OCwgMTIsIDE1LCAyMzIsIDE3NywgMTIsIDE1LCAyMzIsIDE3NiwgMTIsIDE1LCAyMzIsIDE3NSwgMTIsIAotICAgIDE1LCAyMzIsIDE3NCwgMTIsIDE1LCAyMzIsIDE3MywgMTIsIDE1LCAyMzIsIDE3MiwgMTIsIDE1LCAyMzIsIDE3MSwgMTIsIAotICAgIDE1LCAyMzIsIDE3MCwgMTIsIDE1LCAyMzIsIDE2OSwgMTIsIDE1LCAyMzIsIDE2OCwgMTIsIDE1LCAyMzIsIDE2NywgMTIsIAotICAgIDE1LCAyMzIsIDE2NiwgMTIsIDE1LCAyMzIsIDE2NSwgMTIsIDE1LCAyMzIsIDE2NCwgMTIsIDE1LCAyMzIsIDE2MywgMTIsIAotICAgIDE1LCAyMzIsIDE2MiwgMTIsIDE1LCAyMzIsIDE2MSwgMTIsIDE1LCAyMzIsIDE2MCwgMTIsIDE1LCAyMzIsIDE1OSwgMTIsIAotICAgIDE1LCAyMzIsIDE1OCwgMTIsIDE1LCAyMzIsIDE1NywgMTIsIDE1LCAyMzIsIDE1NiwgMTIsIDE1LCAyMzIsIDE1NSwgMTIsIAotICAgIDE1LCAyMzIsIDE1NCwgMTIsIDE1LCAyMzIsIDE1MywgMTIsIDE1LCAyMzIsIDE1MiwgMTIsIDE1LCAyMzIsIDE1MSwgMTIsIAotICAgIDE1LCAyMzIsIDE1MCwgMTIsIDE1LCAyMzIsIDE0OSwgMTIsIDE1LCAyMzIsIDE0OCwgMTIsIDE1LCAyMzIsIDE0NywgMTIsIAotICAgIDE1LCAyMzIsIDE0NiwgMTIsIDE1LCAyMzIsIDE0NSwgMTIsIDE1LCAyMzIsIDE0NCwgMTIsIDE1LCAyMzIsIDE0MywgMTIsIAotICAgIDE1LCAyMzIsIDE0MiwgMTIsIDE1LCAyMzIsIDE0MSwgMTIsIDE1LCAyMzIsIDE0MCwgMTIsIDE1LCAyMzIsIDEzOSwgMTIsIAotICAgIDE1LCAyMzIsIDEzOCwgMTIsIDE1LCAyMzIsIDEzNywgMTIsIDE1LCAyMzIsIDEzNiwgMTIsIDE1LCAyMzIsIDEzNSwgMTIsIAotICAgIDE1LCAyMzIsIDEzNCwgMTIsIDE1LCAyMzIsIDEzMywgMTIsIDE1LCAyMzIsIDEzMiwgMTIsIDE1LCAyMzIsIDEzMSwgMTIsIAotICAgIDE1LCAyMzIsIDEzMCwgMTIsIDE1LCAyMzIsIDEyOSwgMTIsIDE1LCAyMzIsIDEyOCwgMTIsIDE1LCAyMzIsIDEyNywgMTIsIAotICAgIDE1LCAyMzIsIDEyNiwgMTIsIDE1LCAyMzIsIDEyNSwgMTIsIDE1LCAyMzIsIDEyNCwgMTIsIDE1LCAyMzIsIDEyMywgMTIsIAotICAgIDE1LCAyMzIsIDEyMiwgMTIsIDE1LCAyMzIsIDEyMSwgMTIsIDE1LCAyMzIsIDEyMCwgMTIsIDE1LCAyMzIsIDExOSwgMTIsIAotICAgIDE1LCAyMzIsIDExOCwgMTIsIDE1LCAyMzIsIDExNywgMTIsIDE1LCAyMzIsIDExNiwgMTIsIDE1LCAyMzIsIDExNSwgMTIsIAotICAgIDE1LCAyMzIsIDExNCwgMTIsIDE1LCAyMzIsIDExMywgMTIsIDE1LCAyMzIsIDExMiwgMTIsIDE1LCAyMzIsIDExMSwgMTIsIAotICAgIDE1LCAyMzIsIDExMCwgMTIsIDE1LCAyMzIsIDEwOSwgMTIsIDE1LCAyMzIsIDEwOCwgMTIsIDE1LCAyMzIsIDEwNywgMTIsIAotICAgIDE1LCAyMzIsIDEwNiwgMTIsIDE1LCAyMzIsIDEwNSwgMTIsIDE1LCAyMzIsIDEwNCwgMTIsIDE1LCAyMzIsIDEwMywgMTIsIAotICAgIDE1LCAyMzIsIDEwMiwgMTIsIDE1LCAyMzIsIDEwMSwgMTIsIDE1LCAyMzIsIDEwMCwgMTIsIDE1LCAyMzIsIDk5LCAxMiwgCi0gICAgMTUsIDIzMiwgOTgsIDEyLCAxNSwgMjMyLCA5NywgMTIsIDE1LCAyMzIsIDk2LCAxMiwgMTUsIDIzMiwgOTUsIDEyLCAxNSwgCi0gICAgMjMyLCA5NCwgMTIsIDE1LCAyMzIsIDkzLCAxMiwgMTUsIDIzMiwgOTIsIDEyLCAxNSwgMjMyLCA5MSwgMTIsIDE1LCAyMzIsIAotICAgIDkwLCAxMiwgMTUsIDIzMiwgODksIDEyLCAxNSwgMjMyLCA4OCwgMTIsIDE1LCAyMzIsIDg3LCAxMiwgMTUsIDIzMiwgODYsIAotICAgIDEyLCAxNSwgMjMyLCA4NSwgMTIsIDE1LCAyMzIsIDg0LCAxMiwgMTUsIDIzMiwgODMsIDEyLCAxNSwgMjMyLCA4MiwgMTIsIAotICAgIDE1LCAyMzIsIDgxLCAxMiwgMTUsIDIzMiwgODAsIDEyLCAxNSwgMjMyLCA3OSwgMTIsIDE1LCAyMzIsIDc4LCAxMiwgMTUsIAotICAgIDIzMiwgNzcsIDEyLCAxNSwgMjMyLCA3NiwgMTIsIDE1LCAyMzIsIDc1LCAxMiwgMTUsIDIzMiwgNzQsIDEyLCAxNSwgMjMyLCAKLSAgICA3MywgMTIsIDE1LCAyMzIsIDcyLCAxMiwgMTUsIDIzMiwgNzEsIDEyLCAxNSwgMjMyLCA3MCwgMTIsIDE1LCAyMzIsIDY5LCAKLSAgICAxMiwgMTUsIDIzMiwgNjgsIDEyLCAxNSwgMjMyLCA2NywgMTIsIDE1LCAyMzIsIDY2LCAxMiwgMTUsIDIzMiwgNjUsIDEyLCAKLSAgICAxNSwgMjMyLCA2NCwgMTIsIDE1LCAyMzIsIDYzLCAxMiwgMTUsIDIzMiwgNjIsIDEyLCAxNSwgMjMyLCA2MSwgMTIsIDE1LCAKLSAgICAyMzIsIDYwLCAxMiwgMTUsIDIzMiwgNTksIDEyLCAxNSwgMjMyLCA1OCwgMTIsIDE1LCAyMzIsIDU3LCAxMiwgMTUsIDIzMiwgCi0gICAgNTYsIDEyLCAxNSwgMjMyLCA1NSwgMTIsIDE1LCAyMzIsIDU0LCAxMiwgMTUsIDIzMiwgNTMsIDEyLCAxNSwgMjMyLCA1MiwgCi0gICAgMTIsIDE1LCAyMzIsIDUxLCAxMiwgMTUsIDIzMiwgNTAsIDEyLCAxNSwgMjMyLCA0OSwgMTIsIDE1LCAyMzIsIDQ4LCAxMiwgCi0gICAgMTUsIDIzMiwgNDcsIDEyLCAxNSwgMjMyLCA0NiwgMTIsIDE1LCAyMzIsIDQ1LCAxMiwgMTUsIDIzMiwgNDQsIDEyLCAxNSwgCi0gICAgMjMyLCA0MywgMTIsIDE1LCAyMzIsIDQyLCAxMiwgMTUsIDIzMiwgNDEsIDEyLCAxNSwgMjMyLCA0MCwgMTIsIDE1LCAyMzIsIAotICAgIDM5LCAxMiwgMTUsIDIzMiwgMzgsIDEyLCAxNSwgMjMyLCAzNywgMTIsIDE1LCAyMzIsIDM2LCAxMiwgMTUsIDIzMiwgMzUsIAotICAgIDEyLCAxNSwgMjMyLCAzNCwgMTIsIDE1LCAyMzIsIDMzLCAxMiwgMTUsIDIzMiwgMzIsIDEyLCAxNSwgMjMyLCAzMSwgMTIsIAotICAgIDE1LCAyMzIsIDMwLCAxMiwgMTUsIDIzMiwgMjksIDEyLCAxNSwgMjMyLCAyOCwgMTIsIDE1LCAyMzIsIDI3LCAxMiwgMTUsIAotICAgIDIzMiwgMjYsIDEyLCAxNSwgMjMyLCAyNSwgMTIsIDE1LCAyMzIsIDI0LCAxMiwgMTUsIDIzMiwgMjMsIDEyLCAxNSwgMjMyLCAKLSAgICAyMiwgMTIsIDE1LCAyMzIsIDIxLCAxMiwgMTUsIDIzMiwgMjAsIDEyLCAxNSwgMjMyLCAxOSwgMTIsIDE1LCAyMzIsIDE4LCAKLSAgICAxMiwgMTUsIDIzMiwgMTcsIDEyLCAxNSwgMjMyLCAxNiwgMTIsIDE1LCAyMzIsIDE1LCAxMiwgMTUsIDIzMiwgMTQsIDEyLCAKLSAgICAxNSwgMjMyLCAxMywgMTIsIDE1LCAyMzIsIDEyLCAxMiwgMTUsIDIzMiwgMTEsIDEyLCAxNSwgMjMyLCAxMCwgMTIsIDE1LCAKLSAgICAyMzIsIDksIDEyLCAxNSwgMjMyLCA4LCAxMiwgMTUsIDIzMiwgNywgMTIsIDE1LCAyMzIsIDYsIDEyLCAxNSwgMjMyLCA1LCAKLSAgICAxMiwgMTUsIDIzMiwgNCwgMTIsIDE1LCAyMzIsIDMsIDEyLCAxNSwgMjMyLCAyLCAxMiwgMTUsIDIzMiwgMSwgMTIsIDE1LCAKLSAgICAyMzIsIDAsIDEyLCAxNSwgMjMxLCAyNTUsIDEyLCAxNSwgMjMxLCAyNTQsIDEyLCAxNSwgMjMxLCAyNTMsIDEyLCAxNSwgCi0gICAgMjMxLCAyNTIsIDEyLCAxNSwgMjMxLCAyNTEsIDEyLCAxNSwgMjMxLCAyNTAsIDEyLCAxNSwgMjMxLCAyNDksIDEyLCAxNSwgCi0gICAgMjMxLCAyNDgsIDEyLCAxNSwgMjMxLCAyNDcsIDEyLCAxNSwgMjMxLCAyNDYsIDEyLCAxNSwgMjMxLCAyNDUsIDEyLCAxNSwgCi0gICAgMjMxLCAyNDQsIDEyLCAxNSwgMjMxLCAyNDMsIDEyLCAxNSwgMjMxLCAyNDIsIDEyLCAxNSwgMjMxLCAyNDEsIDEyLCAxNSwgCi0gICAgMjMxLCAyNDAsIDEyLCAxNSwgMjMxLCAyMzksIDEyLCAxNSwgMjMxLCAyMzgsIDEyLCAxNSwgMjMxLCAyMzcsIDEyLCAxNSwgCi0gICAgMjMxLCAyMzYsIDEyLCAxNSwgMjMxLCAyMzUsIDEyLCAxNSwgMjMxLCAyMzQsIDEyLCAxNSwgMjMxLCAyMzMsIDEyLCAxNSwgCi0gICAgMjMxLCAyMzIsIDEyLCAxNSwgMjMxLCAyMzEsIDEyLCAxNSwgMjMxLCAyMzAsIDEyLCAxNSwgMjMxLCAyMjksIDEyLCAxNSwgCi0gICAgMjMxLCAyMjgsIDEyLCAxNSwgMjMxLCAyMjcsIDEyLCAxNSwgMjMxLCAyMjYsIDEyLCAxNSwgMjMxLCAyMjUsIDEyLCAxNSwgCi0gICAgMjMxLCAyMjQsIDEyLCAxNSwgMjMxLCAyMjMsIDEyLCAxNSwgMjMxLCAyMjIsIDEyLCAxNSwgMjMxLCAyMjEsIDEyLCAxNSwgCi0gICAgMjMxLCAyMjAsIDEyLCAxNSwgMjMxLCAyMTksIDEyLCAxNSwgMjMxLCAyMTgsIDEyLCAxNSwgMjMxLCAyMTcsIDEyLCAxNSwgCi0gICAgMjMxLCAyMTYsIDEyLCAxNSwgMjMxLCAyMTUsIDEyLCAxNSwgMjMxLCAyMTQsIDEyLCAxNSwgMjMxLCAyMTMsIDEyLCAxNSwgCi0gICAgMjMxLCAyMTIsIDEyLCAxNSwgMjMxLCAyMTEsIDEyLCAxNSwgMjMxLCAyMTAsIDEyLCAxNSwgMjMxLCAyMDksIDEyLCAxNSwgCi0gICAgMjMxLCAyMDgsIDEyLCAxNSwgMjMxLCAyMDcsIDEyLCAxNSwgMjMxLCAyMDYsIDEyLCAxNSwgMjMxLCAyMDUsIDEyLCAxNSwgCi0gICAgMjMxLCAyMDQsIDEyLCAxNSwgMjMxLCAyMDMsIDEyLCAxNSwgMjMxLCAyMDIsIDEyLCAxNSwgMjMxLCAyMDEsIDEyLCAxNSwgCi0gICAgMjMxLCAyMDAsIDEyLCAxNSwgMjMxLCAxOTksIDEyLCAxNSwgMjMxLCAxOTgsIDEyLCAxNSwgMjMxLCAxOTcsIDEyLCAxNSwgCi0gICAgMjMxLCAxOTYsIDEyLCAxNSwgMjMxLCAxOTUsIDEyLCAxNSwgMjMxLCAxOTQsIDEyLCAxNSwgMjMxLCAxOTMsIDEyLCAxNSwgCi0gICAgMjMxLCAxOTIsIDEyLCAxNSwgMjMxLCAxOTEsIDEyLCAxNSwgMjMxLCAxOTAsIDEyLCAxNSwgMjMxLCAxODksIDEyLCAxNSwgCi0gICAgMjMxLCAxODgsIDEyLCAxNSwgMjMxLCAxODcsIDEyLCAxNSwgMjMxLCAxODYsIDEyLCAxNSwgMjMxLCAxODUsIDEyLCAxNSwgCi0gICAgMjMxLCAxODQsIDEyLCAxNSwgMjMxLCAxODMsIDEyLCAxNSwgMjMxLCAxODIsIDEyLCAxNSwgMjMxLCAxODEsIDEyLCAxNSwgCi0gICAgMjMxLCAxODAsIDEyLCAxNSwgMjMxLCAxNzksIDEyLCAxNSwgMjMxLCAxNzgsIDEyLCAxNSwgMjMxLCAxNzcsIDEyLCAxNSwgCi0gICAgMjMxLCAxNzYsIDEyLCAxNSwgMjMxLCAxNzUsIDEyLCAxNSwgMjMxLCAxNzQsIDEyLCAxNSwgMjMxLCAxNzMsIDEyLCAxNSwgCi0gICAgMjMxLCAxNzIsIDEyLCAxNSwgMjMxLCAxNzEsIDEyLCAxNSwgMjMxLCAxNzAsIDEyLCAxNSwgMjMxLCAxNjksIDEyLCAxNSwgCi0gICAgMjMxLCAxNjgsIDEyLCAxNSwgMjMxLCAxNjcsIDEyLCAxNSwgMjMxLCAxNjYsIDEyLCAxNSwgMjMxLCAxNjUsIDEyLCAxNSwgCi0gICAgMjMxLCAxNjQsIDEyLCAxNSwgMjMxLCAxNjMsIDEyLCAxNSwgMjMxLCAxNjIsIDEyLCAxNSwgMjMxLCAxNjEsIDEyLCAxNSwgCi0gICAgMjMxLCAxNjAsIDEyLCAxNSwgMjMxLCAxNTksIDEyLCAxNSwgMjMxLCAxNTgsIDEyLCAxNSwgMjMxLCAxNTcsIDEyLCAxNSwgCi0gICAgMjMxLCAxNTYsIDEyLCAxNSwgMjMxLCAxNTUsIDEyLCAxNSwgMjMxLCAxNTQsIDEyLCAxNSwgMjMxLCAxNTMsIDEyLCAxNSwgCi0gICAgMjMxLCAxNTIsIDEyLCAxNSwgMjMxLCAxNTEsIDEyLCAxNSwgMjMxLCAxNTAsIDEyLCAxNSwgMjMxLCAxNDksIDEyLCAxNSwgCi0gICAgMjMxLCAxNDgsIDEyLCAxNSwgMjMxLCAxNDcsIDEyLCAxNSwgMjMxLCAxNDYsIDEyLCAxNSwgMjMxLCAxNDUsIDEyLCAxNSwgCi0gICAgMjMxLCAxNDQsIDEyLCAxNSwgMjMxLCAxNDMsIDEyLCAxNSwgMjMxLCAxNDIsIDEyLCAxNSwgMjMxLCAxNDEsIDEyLCAxNSwgCi0gICAgMjMxLCAxNDAsIDEyLCAxNSwgMjMxLCAxMzksIDEyLCAxNSwgMjMxLCAxMzgsIDEyLCAxNSwgMjMxLCAxMzcsIDEyLCAxNSwgCi0gICAgMjMxLCAxMzYsIDEyLCAxNSwgMjMxLCAxMzUsIDEyLCAxNSwgMjMxLCAxMzQsIDEyLCAxNSwgMjMxLCAxMzMsIDEyLCAxNSwgCi0gICAgMjMxLCAxMzIsIDEyLCAxNSwgMjMxLCAxMzEsIDEyLCAxNSwgMjMxLCAxMzAsIDEyLCAxNSwgMjMxLCAxMjksIDEyLCAxNSwgCi0gICAgMjMxLCAxMjgsIDEyLCAxNSwgMjMxLCAxMjcsIDEyLCAxNSwgMjMxLCAxMjYsIDEyLCAxNSwgMjMxLCAxMjUsIDEyLCAxNSwgCi0gICAgMjMxLCAxMjQsIDEyLCAxNSwgMjMxLCAxMjMsIDEyLCAxNSwgMjMxLCAxMjIsIDEyLCAxNSwgMjMxLCAxMjEsIDEyLCAxNSwgCi0gICAgMjMxLCAxMjAsIDEyLCAxNSwgMjMxLCAxMTksIDEyLCAxNSwgMjMxLCAxMTgsIDEyLCAxNSwgMjMxLCAxMTcsIDEyLCAxNSwgCi0gICAgMjMxLCAxMTYsIDEyLCAxNSwgMjMxLCAxMTUsIDgsIDUsIDMyLCAyNDAsIDMwLCA4LCA1LCAzMiwgMjQwLCAyNiwgOCwgNSwgCi0gICAgMzIsIDIzOSwgMjI4LCA4LCA1LCAzMiwgMjQwLCAyOSwgOCwgNSwgMzIsIDI0MCwgMjgsIDgsIDUsIDMyLCAxNjMsIDIxNSwgCi0gICAgOTQsIDIxMCwgNjksIDgsIDUsIDMyLCAyMTEsIDEwOCwgMTc4LCA1LCAzMiwgMjI0LCAyNDEsIDIyMSwgMTUyLCAxNzgsIDUsIAotICAgIDMyLCAyMjQsIDI0MSwgMjQxLCAxNjcsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMzEsIDE5LCAxNzgsIDUsIDMyLCAyMDUsIAotICAgIDIzNSwgMjIxLCAxNTIsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMDMsIDE3NCwgMTEwLCAxLCAyMDIsIDIzNywgMywgMjM2LCAKLSAgICAyMzIsIDExMCwgMjE4LCA2MywgMjMwLCA4MSwgMjA2LCA2NywgMTEwLCAzMiwgMjAzLCA5LCAyMDIsIDIzNywgMjAyLCAyMzcsIAotICAgIDIxOSwgNTQsIDExMCwgMSwgMjUwLCAyNTAsIDI1MCwgMywgMTEwLCAxLCAyMDQsIDI3LCAyNTEsIDMwLCAxMTAsIDEsIDIwNCwgCi0gICAgMjcsIDI0NCwgMTc4LCAxMTAsIDEsIDIwNCwgMjcsIDIzNywgNjcsIDExMCwgMSwgMjA0LCAyNywgMjMwLCAyMiwgMTEwLCAxLCAKLSAgICAyMDQsIDI3LCAyMjgsIDIwLCAxMTAsIDEsIDIwNCwgMjcsIDQ2LCAyMjQsIDI0NywgMTEwLCAxLCAyMDQsIDI3LCAyMTYsIAotICAgIDkxLCAxMTAsIDEsIDIwNCwgMjcsIDIwOSwgMjAzLCAxMTAsIDEsIDI1MCwgMjUwLCA5MSwgNTQsIDExMCwgMSwgMjEzLCAwLCAKLSAgICAzLCAyMTMsIDAsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAzLCAyMTIsIDEyNCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIAotICAgIDMsIDI0NCwgMTk4LCAyNSwgMjEzLCAwLCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgMywgMjQ0LCAxOTgsIDI1LCAyMTIsIAotICAgIDEyNCwgMjQzLCA4NSwgMTEwLCAxLCAxMzcsIDMsIDIxOSwgNTQsIDExMCwgMSwgMTM3LCAzLCAyMTcsIDExNCwgMTEwLCAxLCAKLSAgICAxMzcsIDMsIDIyNSwgMTA1LCAxMTAsIDEsIDI0OCwgMTA5LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMzgsIDY4LCAzLCAyNDQsIAotICAgIDE5NywgMTEwLCAxLCAyNDQsIDE3OSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjM3LCA2OCwgMywgMjI1LCAxMDUsIDExMCwgMSwgCi0gICAgMjA2LCA2MCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjAyLCA5NiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjA5LCAxMzMsIDMsIAotICAgIDI0NCwgMTk3LCAxMTAsIDEsIDIwMiwgMjM3LCAzLCAyNDQsIDE5NywgMTEwLCAxLCA0NiwgMjMwLCAyMywgMywgMjQ0LCAKLSAgICAxOTcsIDExMCwgMSwgMjMwLCAyMywgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjI4LCAyMSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgCi0gICAgMjI0LCAyNDgsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIyMSwgNDEsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNCwgMjUwLCAzLCAKLSAgICAyNDQsIDE5NywgMTEwLCAxLCA0NiwgMjE5LCAzNSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE5LCAzNSwgMywgMjQ0LCAxOTcsIAotICAgIDExMCwgMSwgMjA4LCAxNiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE3LCA3NSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE2LCAKLSAgICA5MiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjEzLCAwLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMDksIDIwNCwgMywgMjQ0LCAKLSAgICAxOTcsIDExMCwgMSwgMjA2LCA2MCwgMywgMjM2LCAxMjgsIDExMCwgMSwgMjQ4LCAxMDksIDMsIDIxNiwgMjAwLCAxMTAsIDEsIAotICAgIDIzMCwgMjMsIDMsIDIxNiwgMjAwLCAxMTAsIDEsIDIxOSwgMzUsIDMsIDIxNiwgMjAwLCAxMTAsIDMyLCAxMzcsIDIyOCwgCi0gICAgMjAsIDEwLCAxLCAxMzcsIDIwNCwgODgsIDY0LCAxOCwgMTAsIDEsIDEzNywgMjA0LCA4OCwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAKLSAgICAxNDksIDY0LCAxOCwgMTAsIDEsIDI0OCwgMTQ5LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDE0OSwgODEsIDE4LCAxMCwgMSwgCi0gICAgMjQ4LCAxNDksIDE3NCwgMTgsIDEwLCAxLCAyMTksIDE3LCA2NCwgMTgsIDEwLCAxLCAyMTksIDE3LCA0NiwgMTgsIDEwLCAxLCAKLSAgICAyMTksIDE3LCA4MSwgMTgsIDEwLCAxLCAyMTksIDE3LCAxNzQsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDY0LCAxOCwgMTAsIDEsIAotICAgIDI0OCwgMTM3LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDEzNywgODEsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMDcsIDIzMiwgNjQsIDE4LCAxMCwgMSwgMjA3LCAyMzIsIDQ2LCAxOCwgMTAsIDEsIDIwNywgMjMyLCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMDcsIDIzMiwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTY4LCA2NCwgMTgsIDEwLCAxLCAyMDksIDE2OCwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTY4LCAxNzQsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIwNywgMjM0LCA0NiwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgODEsIDE4LCAxMCwgMSwgMjA3LCAKLSAgICAyMzQsIDE3NCwgMTgsIDEwLCAxLCAyMDYsIDQ5LCA2NCwgMTgsIDEwLCAxLCAyMDYsIDQ5LCA0NiwgMTgsIDEwLCAxLCAyMDYsIAotICAgIDQ5LCA4MSwgMTgsIDEwLCAxLCAyMDYsIDQ5LCAxNzQsIDE4LCAxMCwgMSwgMjE5LCAxNSwgNjQsIDE4LCAxMCwgMSwgMjE5LCAKLSAgICAxNSwgNDYsIDE4LCAxMCwgMSwgMjE5LCAxNSwgODEsIDE4LCAxMCwgMSwgMjE5LCAxNSwgMTc0LCAxOCwgMTAsIDEsIDI0MiwgCi0gICAgNiwgNjQsIDE4LCAxMCwgMSwgMjQyLCA2LCA0NiwgMTgsIDEwLCAxLCAyNDIsIDYsIDgxLCAxOCwgMTAsIDEsIDI0MiwgNiwgCi0gICAgMTc0LCAxOCwgMTAsIDEsIDIyMCwgMjU1LCA2NCwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgNDYsIDE4LCAxMCwgMSwgMjIwLCAKLSAgICAyNTUsIDgxLCAxOCwgMTAsIDEsIDIyMCwgMjU1LCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIwOSwgMTkyLCA0NiwgMTgsIDEwLCAxLCAyMDksIDE5MiwgODEsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMDksIDE5MCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxOTAsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTkwLCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMDksIDE5MCwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMTE4LCA2NCwgMTgsIDEwLCAxLCAyNDQsIDExOCwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjQ0LCAxOTIsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTkyLCA0NiwgMTgsIDEwLCAxLCAyNDIsIDM0LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyNDIsIDM0LCA0NiwgMTgsIDEwLCAxLCAyNDQsIDExNiwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxMTYsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDIzMCwgMTU2LCA2NCwgMTgsIDEwLCAxLCAyMzAsIDE1NiwgNDYsIDE4LCAxMCwgMSwgMjE1LCAxNzgsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIxNSwgMTc4LCA0NiwgMTgsIDEwLCAxLCAyMjksIDE5MCwgNjQsIDE4LCAxMCwgMSwgMjI5LCAKLSAgICAxOTAsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgMTkwLCA4MSwgMTgsIDEwLCAxLCAyMjksIDE5MCwgMTc0LCAxOCwgMTAsIDEsIAotICAgIDIzOCwgMjUyLCA2NCwgMTgsIDEwLCAxLCAyMzgsIDI1MiwgNDYsIDE4LCAxMCwgMSwgMjM4LCAyNTIsIDgxLCAxOCwgMTAsIAotICAgIDEsIDIzOCwgMjUyLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDY0LCAxOCwgMTAsIDEsIDIzNywgMjE4LCA0NiwgMTgsIAotICAgIDEwLCAxLCAyMzcsIDIxOCwgODEsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDE3NCwgMTgsIDEwLCAxLCAyMjIsIDEyNywgNjQsIAotICAgIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDQ2LCAxOCwgMTAsIDEsIDIyMiwgMTI3LCA4MSwgMTgsIDEwLCAxLCAyMjIsIDEyNywgCi0gICAgMTc0LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAyMzgsIDg2LCA2NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMjM4LCA4NiwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDY0LCAxOCwgMTAsIDEsIDIxNSwgMjMxLCA0NiwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgCi0gICAgODEsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAzLCA4OSwgODcsIDY0LCAxOCwgMTAsIAotICAgIDEsIDIzNywgNDQsIDMsIDg5LCA4NywgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNywgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjM3LCA0NCwgMjM4LCAzNywgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNywgODEsIDE4LCAxMCwgMSwgMjM3LCAKLSAgICA0NCwgMjM4LCAzNywgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTEwLCA2NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAKLSAgICAyNDMsIDExMCwgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMTAsIDgxLCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgCi0gICAgMTEwLCAxNzQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCA2NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIAotICAgIDIzNywgMTI4LCA4NywgNDYsIDE4LCAxMCwgMTYsIDcwLCA1NSwgMTAsIDE2LCA3MCwgNTYsIDEwLCAxNiwgMTIwLCAxODcsIAotICAgIDU1LCAxMCwgMTYsIDEyMCwgMTg3LCA1NiwgMTAsIDE2LCAxMjYsIDE4NywgNTUsIDEwLCAxNiwgMTI2LCAxODcsIDU2LCAxMCwgCi0gICAgMTYsIDEyNiwgMTg3LCAyMTgsIDU5LCAxODMsIDU1LCAxMCwgMTYsIDEyNiwgMTg3LCAyMTgsIDU5LCAxODMsIDU2LCAxMCwgCi0gICAgMTYsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgMTYsIDIzOSwgMTQ3LCAxODcsIDU2LCAxMCwgMTYsIDUyLCA4MCwgMjQ4LCAKLSAgICAyMzEsIDU2LCAxMCwgMTYsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxNiwgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NiwgCi0gICAgMTAsIDE2LCAyMTUsIDI1MiwgMTAsIDE2LCA1LCAyMDksIDI1MiwgNTUsIDEwLCAxNiwgNSwgMjA5LCAyNTIsIDU2LCAxMCwgCi0gICAgMSwgMjIyLCAyMDYsIDY0LCAxOCwgMTAsIDEsIDIyMiwgMjA2LCA0NiwgMTgsIDEwLCAxLCAyMjIsIDIwNiwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjIyLCAyMDYsIDE3NCwgMTgsIDEwLCAxLCAxMDYsIDY0LCAxOCwgMTAsIDEsIDEwNiwgNDYsIDE4LCAxMCwgMSwgCi0gICAgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMSwgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMSwgMjAyLCAyMTQsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAxLCAxMDYsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMjA2LCA1NiwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMjA2LCA1NiwgNDYsIDE4LCAxMCwgMSwgMjI5LCA3NiwgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjI5LCA3NiwgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMSwgMjI5LCA3NiwgMjAyLCAyMTQsIDY0LCAxOCwgMTAsIDEsIDIyOSwgCi0gICAgNzYsIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAxLCAxODgsIDY0LCAxOCwgMTAsIDEsIDE4OCwgNDYsIDE4LCAxMCwgMSwgMTg4LCAKLSAgICA4MSwgMTgsIDEwLCAxLCAxODgsIDE3NCwgMTgsIDEwLCAxLCAyMDcsIDE2LCAyMjksIDIwNSwgMjI5LCA3NiwgMTM3LCAyMjUsIAotICAgIDEzMCwgODEsIDE4LCAxMCwgMSwgMjA3LCAxNiwgMjI5LCAyMDUsIDIyOSwgNzYsIDEzNywgMjI1LCAxMzAsIDE3NCwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgCi0gICAgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMTAsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDExMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDIwNCwgNzEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDQsIDcxLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTA2LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTA2LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIAotICAgIDIxNCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCA4MSwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCi0gICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAotICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKLSAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA4MSwgMTgsIDEwLCAxLCAyNDAsIDc1LCAKLSAgICA4OSwgNjQsIDE4LCAxMCwgMSwgMjQwLCA3NSwgODksIDQ2LCAxOCwgMTAsIDEsIDI0MCwgNzUsIDg5LCA4MSwgMTgsIDEwLCAKLSAgICAxLCAyNDAsIDc1LCA4OSwgMTc0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxODQsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMTg0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjA5LCA4OSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCA4OSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgCi0gICAgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMjksIDE0MSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE1MSwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDIyOSwgMTQxLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTQsIDE2MiwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjE0LCAxNjIsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAKLSAgICAyOSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAotICAgIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKLSAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMDIsIDExMSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMzgsIDExNSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIAotICAgIDQ4LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDI0MCwgCi0gICAgNDgsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDI0MCwgNDgsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNywgCi0gICAgMTIwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjE3LCAxMjAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAKLSAgICAyMywgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgCi0gICAgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgCi0gICAgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAKLSAgICAyMywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgODMsIDY0LCAxOCwgMTAsIDMyLCA4MywgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKLSAgICAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyOSwgCi0gICAgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAKLSAgICAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAxODQsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDEwMSwgMywgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDIxNiwgMTIzLCAKLSAgICAzLCAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMTM3LCAyMjUsIDEzMCwgMywgMjEwLCAxOTksIDEzNywgNjQsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgMTcxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMjgsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDAsIDcyLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQ0LCAKLSAgICAxNzMsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIzMCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIAotICAgIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgCi0gICAgMTI4LCA4NywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDI0OCwgMTM5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDI0OCwgMTM5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxMzcsIDIyNSwgMTMwLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIxNiwgMTIzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAKLSAgICAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgCi0gICAgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgCi0gICAgMTIwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIzMCwgMjMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIAotICAgIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4MywgCi0gICAgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIxNiwgMTIzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxMzcsIDIyNSwgMTMwLCAKLSAgICAzLCAyMTAsIDE5OSwgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIyMSwgMTc5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgODksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjM3LCAKLSAgICA0NCwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMzcsIDQ0LCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgODEsIDE4LCAxMCwgCi0gICAgMzIsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDgzLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIAotICAgIDI0NCwgMjA4LCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyNDQsIDIwOCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjAyLCAKLSAgICAxMTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgCi0gICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIxNywgMTIwLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIAotICAgIDIzLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIAotICAgIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKLSAgICA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgCi0gICAgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAyMTAsIAotICAgIDE5OSwgMTM3LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4OSwgCi0gICAgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIAotICAgIDE3NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMzcsIDQ0LCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTMsIDgxLCAzLCAyNDAsIDcyLCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgMTczLCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIxMywgODEsIDMsIDIyOSwgMjMwLCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxMzcsIDIyNSwgMTMwLCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTM3LCAyMjUsIAotICAgIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgCi0gICAgNDAsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAotICAgIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKLSAgICAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIAotICAgIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAKLSAgICAyNTIsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyNTEsIDYwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMzgsIDExNSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDg5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDg5LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMjksIDE0MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4OSwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAotICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIxMywgNDAsIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIxNiwgMTIzLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjE2LCAxMjMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMzcsIDQ0LCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgMTUxLCAxNzQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMTc0LCAxOCwgCi0gICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMDIsIDExMSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMTM3LCAzLCAyNDAsIDcwLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMTM3LCAzLCAyNDAsIDcwLCA2NCwgMTgsIDIxOSwgMjMxLCA0OSwgMjE5LCA3NiwgMjE5LCAyMzEsIDUwLCAyMTksIDc2LCAKLSAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgMywgCi0gICAgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIAotICAgIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDE1MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAKLSAgICAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAzLCAKLSAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIAotICAgIDE2MiwgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIAotICAgIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNCwgCi0gICAgMTYyLCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDMsIDE1MSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIDMsIAotICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAotICAgIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCAKLSAgICA0MCwgMywgODMsIDMsIDIyOSwgMTQxLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDIyOSwgMTQxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgCi0gICAgMjA4LCAzLCAyMjksIDE0MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIAotICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgCi0gICAgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIAotICAgIDI1MSwgNjAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAzLCAKLSAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgCi0gICAgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgMywgODMsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIAotICAgIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCAxNTEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIyOCwgMjksIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgCi0gICAgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCAxODQsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICAyMjksIDE0MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDE1MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDgzLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCAxNTEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgMTg0LCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIAotICAgIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgCi0gICAgNDQsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjIxLCAxNzksIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIAotICAgIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgCi0gICAgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMywgCi0gICAgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgCi0gICAgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAKLSAgICAxNzAsIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgMywgCi0gICAgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxMzcsIDIyNSwgCi0gICAgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAKLSAgICAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgCi0gICAgMjA4LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgODMsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMjEsIDE3OSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjI4LCAyOSwgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCA4OSwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIAotICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjI4LCAyOSwgMywgMTg0LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDMsIDE1MSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDE4NCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIAotICAgIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgCi0gICAgMTc5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE1LCA0LCAyMDYsIDE4OCwgMjUwLCA4MiwgMjI4LCAyNTQsIAotICAgIDIxMSwgNjIsIDIsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDExNiwgMjA2LCAxODgsIDI1MCwgODIsIDIyOCwgMjU0LCAyMTEsIAotICAgIDYyLCAyLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCAxMywgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNDQsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMjQsIDU3LCA2NCwgMTgsIDEwLCAzMiwgMjE1LCA1LCA2NCwgMTgsIDEwLCAzMiwgMjE2LCAxNzQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyNTEsIDMzLCA2NCwgMTgsIDEwLCAzMiwgMjA0LCA5MCwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgNCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDIxNSwgMywgMjUxLCAzMywgMjA0LCA4OSwgMTAsIDMyLCAyMzAsIDE3MiwgMjE2LCA1NiwgNTQsIDEwLCAzMiwgMjQ4LCAKLSAgICA1MywgMjUwLCAxNDIsIDI1MCwgMTQzLCA1NywgMjE0LCAxNDksIDU3LCAyMTQsIDM4LCA1NywgMjEzLCAyMjYsIDU3LCAyMTMsIAotICAgIDIxNSwgNTcsIDIxMywgMjA0LCA1NywgMjEzLCAxOTMsIDU3LCAyMTMsIDE4MiwgNTcsIDIxMywgMTcxLCA1NywgMjEzLCAKLSAgICAxNjAsIDU3LCAyMTQsIDE0OCwgNTcsIDIxNCwgMTM3LCA1NywgMjE0LCAxMjYsIDU3LCAyMTQsIDExNSwgNTcsIDIxNCwgCi0gICAgMTA0LCA1NywgMjE0LCA5MywgNTcsIDIxNCwgODIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDUsIDIzMywgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDEzOSwgMjQ1LCAyMzMsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAxMzksIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQ1LCAyNDIsIDIxNywgMjQxLCAyMzksIAotICAgIDE1OSwgMzUsIDgwLCAyMTMsIDE0MywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0MCwgMjEyLCA4MiwgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDIxNywgNDcsIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYxLCAKLSAgICAyMjcsIDE4NSwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAyMjcsIDE4NSwgMjQ3LCAyMjUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMzYsIDEwNiwgMjQxLCAxMDgsIDM5LCAzMiwgNDksIDIzNywgMTM3LCAzOSwgCi0gICAgMzIsIDUwLCAyMzcsIDEzNywgMzksIDUyLCAyMDgsIDIyOCwgNDksIDIzNywgMTM3LCAzOSwgNTIsIDIwOCwgMjI4LCA1MCwgCi0gICAgMjM3LCAxMzcsIDM5LCAyMjUsIDE3MSwgNDksIDIzNywgMTM3LCAzOSwgMjI1LCAxNzEsIDUwLCAyMzcsIDEzNywgMzksIAotICAgIDI0NSwgMjA2LCAyMjUsIDE3MCwgMzksIDMyLCA0OSwgMTYyLCA1NiwgMzksIDMyLCA1MCwgMTYyLCA1NiwgMzksIDIwOCwgCi0gICAgMjI4LCA0OSwgMTYyLCA1NiwgMzksIDIwOCwgMjI4LCA1MCwgMTYyLCA1NiwgMzksIDIyNSwgMTcxLCA0OSwgMTYyLCA1NiwgCi0gICAgMzksIDIyNSwgMTcxLCA1MCwgMTYyLCA1NiwgMzksIDI0NSwgMjA2LCAyMjUsIDE3MSwgNTYsIDM5LCAzNiwgMjA4LCAxOTgsIAotICAgIDQ5LCAyMzcsIDEzNywgMzksIDM2LCAyMDgsIDE5OCwgNTAsIDIzNywgMTM3LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgCi0gICAgMTIwLCA3MCwgMjI3LCAyMzIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDEsIDEwNCwgMjQ0LCAxNDQsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDEsIDkzLCAyNDQsIDE0NCwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIAotICAgIDEyNCwgMjI3LCAxMTQsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMDQsIDcyLCAxMjQsIDIyNywgMTE0LCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDIxOSwgNzYsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjE5LCAKLSAgICA3NiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyNDUsIDkzLCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIAotICAgIDgwLCA1MCwgMjQ1LCA5MywgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAKLSAgICAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMjE3LCAyNDEsIAotICAgIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MiwgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAKLSAgICA2MiwgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAKLSAgICAzNSwgODAsIDQ5LCAyNTAsIDIxOCwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDI1MCwgMjE4LCAxNTUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjQ1LCAxNjYsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgCi0gICAgODAsIDUwLCAyNDUsIDE2NiwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYxLCAyNDUsIDE2NiwgMTU1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAyNDUsIDE2NiwgMTU1LCAyMTMsIDEyMSwgMjQzLCA4NSwgNjEsIAotICAgIDIxMywgMTIxLCAyNDMsIDg1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDUxLCAxNTUsIDIxNywgMjQxLCAKLSAgICAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNTEsIDE1NSwgMjQ0LCAxNDMsIDIxOSwgMTk4LCAyNDYsIDIxNCwgMjE5LCAxOTgsIAotICAgIDIwNCwgNzIsIDIxOSwgMTk4LCA1MiwgMjA0LCA3MiwgMjE5LCAxOTgsIDI0NCwgMTQzLCAxMjQsIDIyNywgMTE0LCAyNDYsIAotICAgIDIxNCwgMTI0LCAyMjcsIDExNCwgMjA0LCA3MiwgMTI0LCAyMjcsIDExNCwgNSwgMjQ1LCAyMzMsIDUsIDEzOSwgMjQ1LCAKLSAgICAyMzMsIDUsIDIzOSwgMTAyLCAyMTEsIDYxLCA1LCAyMTMsIDE0MywgNSwgMjQ1LCAyNDIsIDUsIDIxNywgNDcsIDgyLCA1LCAKLSAgICAyNDAsIDIxMiwgODIsIDUsIDI0MSwgMTA0LCAyNDQsIDE0NCwgNSwgNDksIDIxOSwgNzYsIDUsIDUwLCAyMTksIDc2LCA1LCAKLSAgICA0OSwgMjQ1LCA5MywgMTU1LCA1LCA1MCwgMjQ1LCA5MywgMTU1LCA1LCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNSwgCi0gICAgNTAsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUsIDQyLCA1NCwgNSwgMjUwLCAyMzUsIDUsIDI1MCwgNTksIDUsIDkxLCAKLSAgICA1NCwgNSwgMjM1LCAyMTksIDUsIDIyNywgMTc5LCA1NCwgNSwgMjM3LCAyNDcsIDU0LCA1LCAyNDEsIDM1LCA1NCwgNSwgCi0gICAgMjE2LCA3NCwgMjEyLCAwLCA1LCAyNDMsIDk3LCA1NCwgNSwgMjE4LCAyNDYsIDU0LCA1LCAyNDUsIDIzMSwgMjUwLCA0OSwgCi0gICAgMTAsIDI0MCwgNzAsIDY0LCAxOCwgMTAsIDIwOSwgMjEwLCAzLCAyNDAsIDcwLCA1NSwgMTAsIDI0NCwgMTcxLCA2NCwgMTgsIAotICAgIDEwLCAyMDksIDI0OSwgMjM5LCAxMzcsIDEwLCAyMjksIDIyOCwgNjQsIDE4LCAxMCwgMjQwLCA3MiwgNjQsIDE4LCAxMCwgCi0gICAgMjQwLCA3MiwgMTc0LCAxOCwgMTAsIDI0NCwgMTczLCA2NCwgMTgsIDEwLCAyNDQsIDE3MywgMTc0LCAxOCwgMTAsIDIyOSwgCi0gICAgMjMwLCA2NCwgMTgsIDEwLCAyMjksIDIzMCwgMTc0LCAxOCwgMTAsIDIxMywgODEsIDY0LCAxOCwgMTAsIDIxMywgODEsIAotICAgIDE3NCwgMTgsIDEwLCAyMTAsIDIyMywgNjQsIDE4LCAxMCwgMjEwLCAyMjMsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDEyOCwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIDg3LCAKLSAgICA0NiwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgODcsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMjA0LCA3MSwgMywgMjM3LCAKLSAgICAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNjQsIDE4LCAxMCwgMSwgMTM3LCAKLSAgICAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDQ2LCAxOCwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDgxLCAxOCwgMTAsIDEsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDE3NCwgMTgsIDEwLCAxLCAxMzcsIDY0LCAxOCwgMTAsIDEsIDEzNywgNDYsIDE4LCAxMCwgCi0gICAgMSwgMjQ4LCAxMzksIDY0LCAxOCwgMTAsIDEsIDI0OCwgMTM5LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDEzOSwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjQ4LCAxMzksIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OSwgNjQsIDE4LCAxMCwgMSwgMjA5LCAKLSAgICAxNzAsIDIyNSwgOTksIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTcwLCA2NCwgMTgsIDEwLCAxLCAyMDksIDE3MCwgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjA5LCAxNzAsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTcwLCAxNzQsIDE4LCAxMCwgMSwgMjA5LCA4OSwgNjQsIAotICAgIDE4LCAxMCwgMSwgMjA5LCA4OSwgNDYsIDE4LCAxMCwgMSwgMjA5LCA4OSwgODEsIDE4LCAxMCwgMSwgMjA5LCA4OSwgMTc0LCAKLSAgICAxOCwgMTAsIDEsIDE4NCwgNjQsIDE4LCAxMCwgMSwgMTg0LCA0NiwgMTgsIDEwLCAxLCAxODQsIDgxLCAxOCwgMTAsIDEsIAotICAgIDE4NCwgMTc0LCAxOCwgMTAsIDEsIDE1MSwgNjQsIDE4LCAxMCwgMSwgMTUxLCA0NiwgMTgsIDEwLCAxLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDE1MSwgMTc0LCAxOCwgMTAsIDEsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAxLCAyMjksIDE0MSwgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDEsIDIyOSwgMTQxLCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAxODUsIDY0LCAKLSAgICAxOCwgMTAsIDEsIDI0NCwgMTg1LCA0NiwgMTgsIDEwLCAxLCAyMDksIDEwMSwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxMDEsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAxLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMSwgMjAyLCAKLSAgICAxMDgsIDY0LCAxOCwgMTAsIDEsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjE0LCAxNjIsIDQ2LCAxOCwgMTAsIDEsIDIxNCwgMTYyLCA4MSwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIxMywgNDAsIDY0LCAxOCwgMTAsIDEsIDIxMywgNDAsIDQ2LCAxOCwgMTAsIDEsIDIxMywgNDAsIDgxLCAxOCwgMTAsIAotICAgIDEsIDIxMywgNDAsIDE3NCwgMTgsIDEwLCAxLCAyMTUsIDI5LCA2NCwgMTgsIDEwLCAxLCAyMTUsIDI5LCA0NiwgMTgsIDEwLCAKLSAgICAxLCAyMTUsIDI5LCA4MSwgMTgsIDEwLCAxLCAyMTUsIDI5LCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDY0LCAxOCwgMTAsIAotICAgIDEsIDI0NCwgMjA4LCA0NiwgMTgsIDEwLCAxLCAyNDQsIDIwOCwgODEsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDE3NCwgMTgsIAotICAgIDEwLCAxLCAyMDksIDI1MiwgNjQsIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMjUyLCA4MSwgCi0gICAgMTgsIDEwLCAxLCAyMDksIDI1MiwgMTc0LCAxOCwgMTAsIDEsIDIwMiwgMTExLCA2NCwgMTgsIDEwLCAxLCAyMDIsIDExMSwgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIDgxLCAxOCwgMTAsIDEsIDIwMiwgMTExLCAxNzQsIDE4LCAxMCwgMSwgMjUxLCAKLSAgICA2MCwgNjQsIDE4LCAxMCwgMSwgMjUxLCA2MCwgNDYsIDE4LCAxMCwgMSwgMjUxLCA2MCwgODEsIDE4LCAxMCwgMSwgMjUxLCAKLSAgICA2MCwgMTc0LCAxOCwgMTAsIDEsIDIzOCwgMTE1LCA2NCwgMTgsIDEwLCAxLCAyMzgsIDExNSwgNDYsIDE4LCAxMCwgMSwgCi0gICAgMjM4LCAxMTUsIDgxLCAxOCwgMTAsIDEsIDIzOCwgMTE1LCAxNzQsIDE4LCAxMCwgMSwgMjQwLCA0OCwgNjQsIDE4LCAxMCwgCi0gICAgMSwgMjQwLCA0OCwgNDYsIDE4LCAxMCwgMSwgMjQwLCA0OCwgODEsIDE4LCAxMCwgMSwgMjQwLCA0OCwgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIxNywgMTIwLCA2NCwgMTgsIDEwLCAxLCAyMTcsIDEyMCwgNDYsIDE4LCAxMCwgMSwgMjE3LCAxMjAsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIxNywgMTIwLCAxNzQsIDE4LCAxMCwgMSwgMjMwLCAyMywgNjQsIDE4LCAxMCwgMSwgMjMwLCAyMywgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjMwLCAyMywgODEsIDE4LCAxMCwgMSwgMjMwLCAyMywgMTc0LCAxOCwgMTAsIDEsIDIyOCwgMjksIDY0LCAxOCwgCi0gICAgMTAsIDEsIDIyOCwgMjksIDQ2LCAxOCwgMTAsIDEsIDIyOCwgMjksIDgxLCAxOCwgMTAsIDEsIDIyOCwgMjksIDE3NCwgMTgsIAotICAgIDEwLCAxLCA4MywgNjQsIDE4LCAxMCwgMSwgODMsIDQ2LCAxOCwgMTAsIDEsIDgzLCA4MSwgMTgsIDEwLCAxLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDEsIDIyMSwgMTc5LCA2NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMSwgMjIxLCAxNzksIAotICAgIDgxLCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgNjQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgODEsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDQ2LCAxOCwgMTAsIDEsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDEsIDEzNywgCi0gICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDEsIDg5LCA2NCwgMTgsIDEwLCAxLCA4OSwgNDYsIDE4LCAxMCwgMSwgODksIDgxLCAKLSAgICAxOCwgMTAsIDEsIDg5LCAxNzQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICAxMzcsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDg3LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgNDYsIDE4LCAyMDIsIDg1LCAyMDQsIDI0LCAyMjEsIDE5MCwgMjExLCAKLSAgICAyMjgsIDE1NCwgMjQwLCAyMTIsIDgyLCAxNTQsIDIxNywgMzEsIDgyLCAxNTQsIDQyLCA1NCwgMTU0LCAyNDMsIDk3LCA1NCwgCi0gICAgMTU0LCAyMTgsIDI0NiwgNTQsIDE1NCwgMjUwLCAyMzUsIDE1NCwgMjUwLCAxNjAsIDE1NCwgNDksIDIxOSwgNzYsIDE1NCwgCi0gICAgNTAsIDIxOSwgNzYsIDE1NCwgMjUwLCA1OSwgMTU0LCA5MSwgNTQsIDE1NCwgMjQ1LCAyMzMsIDE1NCwgMjM1LCAyMTksIAotICAgIDE1NCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE1NCwgMjEyLCAwLCAxNTQsIDE3LCAyMDIsIDg0LCAxNTQsIDE3LCAxMDUsIDE1NCwgCi0gICAgMTcsIDEwOCwgMTU0LCAxNywgMTQ3LCAxNTQsIDE3LCAxNDksIDE1NCwgMTcsIDE3MCwgMTU0LCAxNywgMTk1LCAxNTQsIDE3LCAKLSAgICAyMTMsIDExMSwgMTU0LCAxNywgMTk5LCAxNTQsIDE3LCAyMjIsIDYzLCAxNTQsIDI0NSwgMjQyLCAxNTQsIDIxMywgMTQzLCAKLSAgICAxNTQsIDIyNywgMTc5LCA1NCwgMTU0LCAyNDEsIDM1LCA1NCwgMTU0LCAyMzcsIDI0NywgNTQsIDE1NCwgMjE3LCA0NywgODIsIAotICAgIDE1NCwgMjQ1LCAyMzEsIDI1MCwgNDksIDE1NCwgOCwgNiwgMSwgNjMsIDE1NCwgOCwgNiwgMSwgMjQ5LCAyNTUsIDE1NCwgOCwgCi0gICAgNiwgMSwgMjQ3LCAxMjUsIDE1NCwgOCwgNiwgMSwgMjQ1LCA1MSwgMTU0LCA4LCA2LCAxLCA3NCwgMTU0LCA4LCA2LCAxLCAKLSAgICAyNDAsIDE3NCwgMTU0LCA4LCA2LCAxLCAyMzksIDc1LCAxNTQsIDgsIDYsIDEsIDIzNywgMTcxLCAxNTQsIDgsIDYsIDEsIAotICAgIDc1LCAxNTQsIDgsIDYsIDEsIDIzMCwgMTg0LCAxNTQsIDgsIDYsIDEsIDIzMCwgNTQsIDE1NCwgOCwgNiwgMSwgMTU5LCAKLSAgICAxNTQsIDgsIDYsIDEsIDIyNiwgMTg1LCAxNTQsIDgsIDYsIDEsIDIyMywgMTYzLCAxNTQsIDgsIDYsIDEsIDc4LCAxNTQsIDgsIAotICAgIDYsIDEsIDIxOSwgMTg0LCAxNTQsIDgsIDYsIDEsIDIxNywgMTM0LCAxNTQsIDgsIDYsIDEsIDE0NiwgMTU0LCA4LCA2LCAxLCAKLSAgICAxOTQsIDE1NCwgOCwgNiwgMSwgMjEwLCA2OSwgMTU0LCA4LCA2LCAxLCA2OCwgMTU0LCA4LCA2LCAxLCAyMDYsIDE2NCwgCi0gICAgMTU0LCA4LCA2LCAxLCAyMDQsIDE0NCwgMTU0LCA4LCA2LCAxLCAyMDMsIDE5NiwgMTU0LCA4LCA2LCAxLCAyMDMsIDEyNCwgCi0gICAgMTU0LCA4LCA2LCAxLCAyMDIsIDE1OSwgMTU0LCA0OSwgNTEsIDE1NSwgMTU0LCAyMTYsIDc0LCAyMTIsIDAsIDE1NCwgNTAsIAotICAgIDUxLCAxNTUsIDE1NCwgMjQ2LCA1MywgMjUxLCAxMzgsIDE1NCwgMTI0LCAyMjcsIDExNCwgMTU0LCAyMzcsIDI1NCwgMjUxLCAKLSAgICAxMzgsIDE1NCwgOCwgNSwgMSwgNjMsIDE1NCwgOCwgNSwgMSwgMjQ5LCAyNTUsIDE1NCwgOCwgNSwgMSwgMjQ3LCAxMjUsIAotICAgIDE1NCwgOCwgNSwgMSwgMjQ1LCA1MSwgMTU0LCA4LCA1LCAxLCA3NCwgMTU0LCA4LCA1LCAxLCAyNDAsIDE3NCwgMTU0LCA4LCAKLSAgICA1LCAxLCAyMzksIDc1LCAxNTQsIDgsIDUsIDEsIDIzNywgMTcxLCAxNTQsIDgsIDUsIDEsIDc1LCAxNTQsIDgsIDUsIDEsIAotICAgIDIzMCwgMTg0LCAxNTQsIDgsIDUsIDEsIDIzMCwgNTQsIDE1NCwgOCwgNSwgMSwgMTU5LCAxNTQsIDgsIDUsIDEsIDIyNiwgCi0gICAgMTg1LCAxNTQsIDgsIDUsIDEsIDIyMywgMTYzLCAxNTQsIDgsIDUsIDEsIDc4LCAxNTQsIDgsIDUsIDEsIDIxOSwgMTg0LCAKLSAgICAxNTQsIDgsIDUsIDEsIDIxNywgMTM0LCAxNTQsIDgsIDUsIDEsIDE0NiwgMTU0LCA4LCA1LCAxLCAxOTQsIDE1NCwgOCwgNSwgCi0gICAgMSwgMjEwLCA2OSwgMTU0LCA4LCA1LCAxLCA2OCwgMTU0LCA4LCA1LCAxLCAyMDYsIDE2NCwgMTU0LCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NCwgMTU0LCA4LCA1LCAxLCAyMDMsIDE5NiwgMTU0LCA4LCA1LCAxLCAyMDMsIDEyNCwgMTU0LCA4LCA1LCAxLCAyMDIsIAotICAgIDE1OSwgMTU0LCA0OSwgMjQ1LCA5MywgMTU1LCAxNTQsIDgwLCAyMjcsIDExNCwgMTU0LCA1MCwgMjQ1LCA5MywgMTU1LCAKLSAgICAxNTQsIDIwOCwgMjI3LCAxNTQsIDQ5LCA2MSwgMjE5LCA3NiwgMTU0LCA1MCwgNjEsIDIxOSwgNzYsIDEyNywgMTM5LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgMTI3LCA0OSwgMjQ1LCAxNjYsIDE1NSwgMTI3LCA1MCwgMjQ1LCAxNjYsIDE1NSwgMTI3LCAxMzksIAotICAgIDI0NSwgMjMzLCAxMjcsIDY3LCAxMDEsIDI0MywgODUsIDEyNywgNjcsIDEsIDIwNCwgMCwgMTI3LCA2NywgMSwgNSwgNjMsIAotICAgIDEyNywgNjcsIDEsIDUsIDc1LCAxMjcsIDY3LCAxLCA1LCA2OCwgMTI3LCA2NywgMSwgNSwgNzQsIDEyNywgNjcsIDEsIDUsIAotICAgIDc4LCAxMjcsIDY3LCAxLCA1LCAxOTgsIDEyNywgNjcsIDEsIDUsIDIwMiwgMjEzLCAxMjcsIDY3LCAxLCA1LCAyMDIsIDI0NywgCi0gICAgMTI3LCA2NywgMSwgNSwgMjA3LCAyMDMsIDEyNywgMjI5LCAyMjUsIDIxNywgMjE1LCAyMTEsIDI0MSwgODIsIDEyNywgNjcsIAotICAgIDEsIDYzLCAxMjcsIDY3LCAxLCA3NSwgMTI3LCA2NywgMSwgNjgsIDEyNywgNjcsIDEsIDc0LCAxMjcsIDY3LCAxLCA3OCwgCi0gICAgMTI3LCA2NywgMSwgMTczLCAxMjcsIDY3LCAxLCAyMjksIDEwMCwgMTI3LCA2NywgMSwgMjI4LCAyMDksIDEyNywgNjcsIDEsIAotICAgIDIyOSwgMjAxLCAxMjcsIDY3LCAxLCAyMjksIDI2LCAxMjcsIDY3LCAxLCAyMTUsIDM2LCAxMjcsIDY3LCAxLCAyMTIsIDE2MiwgCi0gICAgMTI3LCA2NywgMSwgMjExLCAxMCwgMTI3LCA2NywgMSwgMjE0LCAxNzcsIDEyNywgNjcsIDEsIDIxMiwgMTMsIDEyNywgNjcsIAotICAgIDEsIDIxMCwgMjIsIDEyNywgNjcsIDEsIDIwOSwgMiwgMTI3LCA2NywgMSwgMjA3LCAyMDMsIDEyNywgNjcsIDEsIDIwOSwgCi0gICAgMTg3LCAxMjcsIDY3LCAxLCAxMzUsIDEyNywgNjcsIDEsIDIwMSwgMjAxLCAxMjcsIDY3LCAxLCAyMjIsIDEwMCwgMTI3LCAKLSAgICA2NywgMSwgMjIxLCA4NCwgMTI3LCA2NywgMSwgMjIyLCAyNDAsIDEyNywgNjcsIDEsIDIyMSwgMTkxLCAxMjcsIDY3LCAxLCAKLSAgICAxNTIsIDEyNywgNjcsIDEsIDIzNywgMywgMTI3LCA2NywgMSwgMjM2LCAyNiwgMTI3LCA2NywgMSwgMjM3LCA2NywgMTI3LCAKLSAgICA2NywgMSwgMjM2LCAxMzYsIDEyNywgNjcsIDEsIDE5MiwgMTI3LCA2NywgMSwgMjI0LCAxNTUsIDEyNywgNjcsIDEsIDIyMywgCi0gICAgMjQ2LCAxMjcsIDY3LCAxLCAyMjUsIDIwLCAxMjcsIDY3LCAxLCAyMjQsIDgyLCAxMjcsIDY3LCAxLCAxOTgsIDEyNywgNjcsIAotICAgIDEsIDIwMiwgMjEzLCAxMjcsIDY3LCAxLCAyMDIsIDI0NywgMTI3LCA2NywgMSwgMjE2LCAyMjAsIDEyNywgNjcsIDEsIDIxNiwgCi0gICAgNTcsIDEyNywgNjcsIDEsIDIxNSwgMTQ1LCAxMjcsIDY3LCAxLCAyMTYsIDE1OCwgMTI3LCA2NywgMSwgMjE1LCAyMjcsIAotICAgIDEyNywgNjcsIDEsIDIwNCwgMTExLCAxMjcsIDY3LCAxLCAyMjMsIDE2MywgMTI3LCA2NywgMjA1LCAxODYsIDIxMSwgMjQxLCAKLSAgICA4MiwgMTI3LCA2NywgMjEzLCAxNDgsIDIxMSwgMjQxLCA4MiwgMTI3LCAyOCwgMjQwLCA3LCAxMjcsIDI4LCAxLCAyMjksIAotICAgIDU5LCAxMjcsIDI4LCAxLCAyMTEsIDE1NiwgMTI3LCAyOCwgMSwgMjI5LCA1MiwgMTI3LCAyOCwgMSwgMjIyLCA5MywgMTI3LCAKLSAgICAyOCwgMSwgMjIyLCA5MSwgMTI3LCAyOCwgMSwgMjIyLCA5MCwgMTI3LCAyOCwgMSwgMjA4LCAyNDAsIDEyNywgMjgsIDEsIAotICAgIDIxMSwgMTQ1LCAxMjcsIDI4LCAxLCAyMTYsIDQ3LCAxMjcsIDI4LCAxLCAyMTYsIDQyLCAxMjcsIDI4LCAxLCAyMTYsIDM5LCAKLSAgICAxMjcsIDI4LCAxLCAyMTYsIDMyLCAxMjcsIDI4LCAxLCAyMTYsIDI3LCAxMjcsIDI4LCAxLCAyMTYsIDIyLCAxMjcsIDI4LCAKLSAgICAxLCAyMTYsIDMzLCAxMjcsIDI4LCAxLCAyMTYsIDQ1LCAxMjcsIDI4LCAxLCAyMjQsIDE0MSwgMTI3LCAyOCwgMSwgMjE4LCAKLSAgICAxNTMsIDEyNywgMjgsIDEsIDIxMSwgMTUzLCAxMjcsIDI4LCAxLCAyMTgsIDE0MiwgMTI3LCAyOCwgMSwgMjEyLCAxMTEsIAotICAgIDEyNywgMjgsIDEsIDIxMSwgMTUwLCAxMjcsIDI4LCAxLCAyMzEsIDEwNiwgMTI3LCAyOCwgMSwgMjQ2LCA3NCwgMTI3LCAyOCwgCi0gICAgMSwgMjExLCAxNjAsIDEyNywgMjgsIDEsIDI0NiwgMTM4LCAxMjcsIDI4LCAxLCAyMjksIDEyMCwgMTI3LCAyOCwgMSwgMjA5LCAKLSAgICA2NiwgMTI3LCAyOCwgMSwgMjE4LCAxOTAsIDEyNywgMjgsIDEsIDIzNiwgMjUxLCAxMjcsIDI4LCAxLCA2MywgMTI3LCAyOCwgCi0gICAgMSwgMjUxLCAxMDksIDEyNywgMjgsIDEsIDE5OCwgMTI3LCAyOCwgMSwgMjAzLCA5OSwgMTI3LCAyOCwgMSwgMjQxLCA1NSwgCi0gICAgMTI3LCAyOCwgMSwgNzQsIDEyNywgMjgsIDEsIDIwMywgMzksIDEyNywgMjgsIDEsIDIwMywgNTIsIDEyNywgMjgsIDEsIDc4LCAKLSAgICAxMjcsIDI4LCAxLCAyMDQsIDExMSwgMTI3LCAyOCwgMSwgMjA0LCAxMDcsIDEyNywgMjgsIDEsIDIyMCwgNzMsIDEyNywgMjgsIAotICAgIDEsIDIwMiwgMjQ3LCAxMjcsIDI4LCAxLCA2OCwgMTI3LCAyOCwgMSwgMjA0LCA0OCwgMTI3LCAyOCwgMSwgMjA0LCA2MiwgCi0gICAgMTI3LCAyOCwgMSwgMjA0LCAzMCwgMTI3LCAyOCwgMSwgMjAyLCAyMTMsIDEyNywgMjgsIDEsIDI0MCwgMjM4LCAxMjcsIDI4LCAKLSAgICAxLCAyMDMsIDExLCAxMjcsIDI4LCAxLCA3NSwgMTU0LCAyNDYsIDIyMCwgNTQsIDE1NCwgMjE4LCAyMCwgNTQsIDE1NCwgCi0gICAgMjIxLCAxNjYsIDU0LCAxNTQsIDIyNSwgMTcwLCAxNTQsIDI0NywgMjAzLCAxNDIsIDE1NCwgMjAzLCA0MywgNTQsIDE1NCwgCi0gICAgMjAzLCAyNDYsIDU0LCAxMjcsIDIzOSwgMTU2LCAxNTcsIDIwNiwgMzgsIDEyNywgOTYsIDQ3LCAxMjcsIDE3NywgNDcsIAotICAgIDEyNywgODYsIDQ3LCAxMjcsIDE4MywgNDcsIDEyNywgNjIsIDIxMSwgMTc3LCAxMjcsIDYxLCAyNDYsIDYxLCAyMzAsIDI1MSwgCi0gICAgMjUwLCAyMDUsIDI1MCwgMjI4LCAyMzAsIDI1MSwgMjUwLCAyMDUsIDIxMywgMTMwLCAyMzAsIDI1MSwgMjUwLCAyMDUsIAotICAgIDIwOSwgMTM4LCAyMjAsIDkwLCAyMTYsIDk2LCAyNDYsIDE4MiwgMjE2LCA5NiwgMjQ2LCAxODIsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAyMzksIDYzLCAyOSwgNjYsIDQsIDI0OSwgMjA4LCA3NCwgMjksIDY2LCA0LCAyNDksIDIxNywgNzUsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAxODUsIDc4LCAyOSwgNjYsIDQsIDI0OSwgMjM1LCA2OCwgMjksIDY2LCA0LCAyNDksIDI1NCwgMjQ0LCAyMTIsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAyMDEsIDI0NCwgNzUsIDI5LCA2NiwgNCwgMjQ5LCAyNDEsIDI0MywgMjMzLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMjMxLCAyNDMsIDExMywgMjksIDY2LCA0LCAyNDksIDE5NSwgMjQyLCA0MiwgMjksIDY2LCA0LCAyNDksIDE4OSwgMjMwLCAKLSAgICAxODEsIDI5LCA2NiwgNCwgMjQ5LCAyMDAsIDIzMCwgMTYxLCAyOSwgNjYsIDQsIDI0OSwgMjEwLCAyMzAsIDEwMSwgMjksIAotICAgIDY2LCA0LCAyNDksIDE4MSwgMjMwLCA4MiwgMjksIDY2LCA0LCAyNDksIDE2OSwgMTczLCAyOSwgNjYsIDQsIDI0OSwgMjAyLCAKLSAgICAyMjksIDIwMSwgMjksIDY2LCA0LCAyNDksIDE3OSwgMjI5LCAxMDAsIDI5LCA2NiwgNCwgMjQ5LCAxNzYsIDIyOSwgMjYsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAxNjUsIDIyOCwgMjA5LCAyOSwgNjYsIDQsIDI0OSwgMTY2LCAxOTIsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAyMzIsIDIyNSwgMjAsIDI5LCA2NiwgNCwgMjQ5LCAxNzMsIDIyNCwgMTU1LCAyOSwgNjYsIDQsIDI0OSwgMjMwLCAyMjQsIAotICAgIDgyLCAyOSwgNjYsIDQsIDI0OSwgMjIyLCAyMjMsIDI0NiwgMjksIDY2LCA0LCAyNDksIDI0MywgMjAxLCAyMDEsIDI5LCA2NiwgCi0gICAgNCwgMjQ5LCAyMjEsIDIyMiwgMjQwLCAyOSwgNjYsIDQsIDI0OSwgMjE1LCAyMjIsIDEwMCwgMjksIDY2LCA0LCAyNDksIAotICAgIDE5NCwgMjIxLCAxOTEsIDI5LCA2NiwgNCwgMjQ5LCAxOTEsIDIyMSwgODQsIDI5LCA2NiwgNCwgMjQ5LCAyNTAsIDE4NSwgCi0gICAgMjksIDY2LCA0LCAyNDksIDE3NCwgMjE5LCAzNCwgMjksIDY2LCA0LCAyNDksIDIwNywgMjE4LCAxNjcsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAyMzQsIDIxOCwgNjksIDI5LCA2NiwgNCwgMjQ5LCAxOTYsIDIxNywgMTkxLCAyOSwgNjYsIDQsIDI0OSwgMjI5LCAKLSAgICAyMTcsIDEyNiwgMjksIDY2LCA0LCAyNDksIDE2OCwgMjE3LCAxMDYsIDI5LCA2NiwgNCwgMjQ5LCAyMjQsIDIxNywgODgsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAyMTMsIDIxNywgNzcsIDI5LCA2NiwgNCwgMjQ5LCAxODYsIDIxNiwgMjIwLCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMjE4LCAyMTYsIDE1OCwgMjksIDY2LCA0LCAyNDksIDE5MywgMjE2LCA1NywgMjksIDY2LCA0LCAyNDksIDI1MiwgCi0gICAgMjE1LCAyMjcsIDI5LCA2NiwgNCwgMjQ5LCAyMTksIDIxNSwgMTQ1LCAyOSwgNjYsIDQsIDI0OSwgMjE0LCAyMTUsIDM2LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMjM3LCAyMTQsIDE3NywgMjksIDY2LCA0LCAyNDksIDIwNSwgMjEyLCAxNjIsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAyMzMsIDIxMiwgMTMsIDI5LCA2NiwgNCwgMjQ5LCAxODgsIDIxMSwgMTAsIDI5LCA2NiwgNCwgMjQ5LCAxODcsIAotICAgIDIxMCwgMjIsIDI5LCA2NiwgNCwgMjQ5LCAyNDgsIDIwOSwgMTg3LCAyOSwgNjYsIDQsIDI0OSwgMjA5LCAyMDksIDIsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAyNDYsIDEzNSwgMjksIDY2LCA0LCAyNDksIDE3NywgMjA3LCAyMDMsIDI5LCA2NiwgNCwgMjQ5LCAxOTIsIAotICAgIDIwNCwgMTExLCAyOSwgNjYsIDQsIDI0OSwgMTcxLCAyMDQsIDYyLCAyOSwgNjYsIDQsIDI0OSwgMjA2LCAyMDQsIDMwLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMjA0LCAyMDQsIDAsIDI5LCA2NiwgNCwgMjQ5LCAyMjgsIDIwMiwgMTE2LCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMTcyLCAyMDIsIDkyLCAyOSwgNjYsIDQsIDI0OSwgMjI1LCAyMDIsIDE3LCAyOSwgNjYsIDQsIDI0OSwgMjIwLCAyNTQsIDM0LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMjAzLCAyNTMsIDE3OCwgMjksIDY2LCA0LCAyNDksIDE2MiwgMjUwLCAzNCwgMjksIDY2LCA0LCAKLSAgICAyNDksIDE3NSwgMjQyLCA5LCAyOSwgNjYsIDQsIDI0OSwgMTU4LCAyNDIsIDgsIDI5LCA2NiwgNCwgMjQ5LCAxOTgsIDIyMSwgCi0gICAgMjAsIDI5LCA2NiwgNCwgMjQ5LCAyMTYsIDIxNywgMTg5LCAyOSwgNjYsIDQsIDI0OSwgMTg0LCAyMTcsIDE5MywgMjksIDY2LCAKLSAgICA0LCAyNDksIDE3MCwgMjE2LCAyMTgsIDI5LCA2NiwgNCwgMjQ5LCAyMTIsIDIxNiwgMjE3LCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMTc4LCAyMTUsIDIyNiwgMjksIDY2LCA0LCAyNDksIDE4MCwgMjEwLCAxOSwgMjksIDY2LCA0LCAyNDksIDE2MCwgMjA3LCAKLSAgICAxNTgsIDI5LCA2NiwgNCwgMjQ5LCAxNTcsIDEwOCwgMjksIDY2LCAxNiwgMjQ5LCAyMjcsIDI5LCA2NiwgMTYsIDI0OSwgCi0gICAgMjI2LCAyOSwgNjYsIDE2LCAyNDksIDIyMywgMjksIDY2LCAxNiwgMjQ5LCAyMTEsIDI5LCA2NiwgMTYsIDI0OSwgMTk5LCAKLSAgICAyOSwgNjYsIDE2LCAyNDksIDE5NywgMjksIDY2LCAxNiwgMjQ5LCAxOTAsIDI5LCA2NiwgMTYsIDI0OSwgMTgzLCAyOSwgNjYsIAotICAgIDE2LCAyNDksIDE4MiwgMjksIDY2LCAxNiwgMjQ5LCAxNjcsIDI5LCA2NiwgMTYsIDI0OSwgMTY0LCAyOSwgNjYsIDE2LCAKLSAgICAyNDksIDE2MywgMjksIDY2LCAxNiwgMjQ5LCAxNjEsIDI5LCA2NiwgMTYsIDI0OSwgMTU5LCAyOSwgNjYsIDEzMywgMjQ5LCAKLSAgICAxNTYsIDIyNSwgMTIyLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTUsIDIwMywgMjUwLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTQsIAotICAgIDI0NCwgNTgsIDI5LCA2NiwgMTMzLCAyNDksIDE1MywgMjQxLCAzMiwgMjksIDY2LCAxMzMsIDI0OSwgMTUyLCAyMjUsIDkzLCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCAxNTEsIDIxMSwgMTAxLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTAsIDI0MCwgMjE5LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxNDksIDIxNiwgMTg0LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDgsIDIxMywgNDIsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDE0NywgMjM3LCA2NiwgMjksIDY2LCAxMzMsIDI0OSwgMTQ2LCAyMTEsIDIzNSwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgMTQ1LCAyNDgsIDIxLCAyOSwgNjYsIDEzMywgMjQ5LCAxNDQsIDI0NSwgMTQ5LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDMsIAotICAgIDI0NywgMTc5LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDIsIDIwNCwgMzgsIDI5LCA2NiwgMTMzLCAyNDksIDE0MSwgMjQ4LCAKLSAgICAyMjcsIDI5LCA2NiwgMTMzLCAyNDksIDE0MCwgMjIwLCA0MSwgMjksIDY2LCAxMzMsIDI0OSwgMTM5LCAyMTEsIDIwNywgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTM4LCAyNDUsIDU5LCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTM3LCAyMjksIDI0OSwgMjksIDY2LCAKLSAgICAyMjQsIDQ1LCAyNDksIDEzNiwgMjMwLCAyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzUsIDIyMCwgNTUsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDEzNCwgMjA0LCAxMiwgMjksIDY2LCAxMzMsIDI0OSwgMTMzLCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTMyLCAyNTAsIAotICAgIDExOSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzMSwgMjI0LCAyMzIsIDI5LCA2NiwgMTMzLCAyNDksIDEzMCwgMjQ3LCAKLSAgICAyMDIsIDI5LCA2NiwgMTMzLCAyNDksIDEyOSwgMjM4LCAzMSwgMjksIDY2LCAxMzMsIDI0OSwgMTI4LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxMjcsIDIwMywgMjQxLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjYsIDI5LCA2NiwgMTMzLCAyNDksIDEyNSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTI0LCAyMzYsIDUzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjMsIDI5LCA2NiwgMTMzLCAyNDksIDEyMiwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTIxLCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTE5LCAyMDcsIDE3MiwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgMTE4LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTcsIDI5LCA2NiwgMTMzLCAyNDksIDExNiwgMjQ2LCAxMCwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTE1LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTQsIDI5LCA2NiwgMTMzLCAyNDksIDExMywgMjM4LCAyMjEsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDExMiwgMjUwLCAxMDYsIDI5LCA2NiwgMTMzLCAyNDksIDExMSwgMjksIDY2LCAxMzMsIDI0OSwgMTEwLCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCAxMDksIDI5LCA2NiwgMTMzLCAyNDksIDEwOCwgMjksIDY2LCAxMzMsIDI0OSwgMTA3LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMDYsIDI5LCA2NiwgMTMzLCAyNDksIDEwNSwgMjksIDY2LCAxMzMsIDI0OSwgMTA0LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxMDMsIDI5LCA2NiwgMTMzLCAyNDksIDEwMiwgMjI0LCAzNywgMjksIDY2LCAxMzMsIDI0OSwgMTAxLCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMDAsIDIwOCwgOTUsIDI5LCA2NiwgMTMzLCAyNDksIDk5LCAyOSwgNjYsIDEzMywgMjQ5LCA5OCwgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgOTcsIDI5LCA2NiwgMTMzLCAyNDksIDk2LCAyOSwgNjYsIDEzMywgMjQ5LCA5NSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgOTQsIDI5LCA2NiwgMTMzLCAyNDksIDkzLCAyOSwgNjYsIDEzMywgMjQ5LCA5MiwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgOTEsIDI5LCA2NiwgMTMzLCAyNDksIDkwLCAyOSwgNjYsIDEzMywgMjQ5LCA4OSwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgODgsIDIzNywgMzUsIDI5LCA2NiwgMTMzLCAyNDksIDY3LCAyMzksIDE2OCwgMjksIDY2LCAxMzMsIDI0OSwgNjQsIDI0OCwgCi0gICAgMjA0LCAyOSwgNjYsIDEzMywgMjQ5LCA1OSwgMjExLCAyMTQsIDI5LCA2NiwgMTMzLCAyNDksIDU4LCA0NywgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgNTcsIDI5LCA2NiwgMTMzLCAyNDksIDU2LCAyMTAsIDE1NSwgMjksIDY2LCAxMzMsIDI0OSwgNTUsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDU0LCAyOSwgNjYsIDEzMywgMjQ5LCA1MywgMjA0LCAzNCwgMjQ2LCAxNzksIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDUyLCAyNDYsIDE3OSwgMjksIDY2LCAxMzMsIDI0OSwgNTEsIDI0NiwgMTgwLCAyMzksIDEzNCwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgNTAsIDIwNCwgMzYsIDI5LCA2NiwgMTMzLCAyNDksIDQ5LCAyOSwgNjYsIDEzMywgMjQ5LCA0OCwgMjksIDY2LCAKLSAgICAyMjQsIDQ1LCAyNDksIDQ3LCAyNDMsIDE2OCwgMjksIDY2LCAxMzMsIDI0OSwgNDYsIDI5LCA2NiwgMTMzLCAyNDksIDQ1LCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCA0MywgMjksIDY2LCAxMzMsIDI0OSwgNDIsIDI5LCA2NiwgMTMzLCAyNDksIDQxLCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCA0MCwgMjQ0LCAxNDcsIDI5LCA2NiwgMTMzLCAyNDksIDM5LCAyOSwgNjYsIDEzMywgMjQ5LCAzOCwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMzcsIDI5LCA2NiwgMTMzLCAyNDksIDM2LCAyOSwgNjYsIDEzMywgMjQ5LCAzNSwgMjksIDY2LCAKLSAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDEyMCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDg3LCAyOSwgNjYsIDEzMywgCi0gICAgMjA1LCAyNDEsIDI0OSwgODYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4NSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAKLSAgICAyNDksIDg0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODMsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MiwgCi0gICAgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgxLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODAsIDI5LCA2NiwgCi0gICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3OSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc4LCAyOSwgNjYsIDEzMywgMjA1LCAKLSAgICAyNDEsIDI0OSwgNzcsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIAotICAgIDc1LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MywgMjksIAotICAgIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDcyLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzEsIDI5LCA2NiwgMTMzLCAKLSAgICAyMDUsIDI0MSwgMjQ5LCA3MCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY5LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIAotICAgIDI0OSwgNjgsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY1LCAKLSAgICAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjMsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MiwgMjksIDY2LCAKLSAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDYxLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjAsIDI5LCA2NiwgMTMzLCAyMDUsIAotICAgIDI0MSwgMjQ5LCA0NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDM0LCAyNTEsIDEwMiwgMjAzLCAyMzgsIDIxMywgCi0gICAgMTMxLCAyMjcsIDExNCwgMjUxLCAxMDIsIDIwMywgMjM4LCAyMTMsIDEzMSwgMjQzLCA4NSwgMjUxLCAxMDIsIDI0NiwgMTY5LCAKLSAgICA4MiwgMjUxLCAxMDIsIDQyLCAxMDUsIDI1MSwgMTAyLCA0MiwgMTA4LCAyNTEsIDEwMiwgNDIsIDE0NywgMjUxLCAxMDIsIAotICAgIDQyLCAxNDksIDI1MSwgMTAyLCA0MiwgMTcwLCAyNTEsIDEwMiwgNDIsIDE5NSwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMSwgCi0gICAgMjUxLCAxMDIsIDQyLCAxOTksIDI1MSwgMTAyLCA0MiwgMjIyLCA2MywgMjUxLCAxMDIsIDQyLCAyMDksIDE1MiwgMjUxLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1MSwgMjUxLCAxMDIsIDQyLCAyMDksIDUzLCAyNTEsIDEwMiwgNDIsIDIzOSwgMTUzLCAyNTEsIAotICAgIDEwMiwgNDIsIDI0MCwgMTgsIDI1MSwgMTAyLCA0MiwgMjEyLCA3NCwgMjUxLCAxMDIsIDQyLCAyMTMsIDEwNSwgMjUxLCAKLSAgICAxMDIsIDQyLCAyNDEsIDEzNCwgMjUxLCAxMDIsIDQyLCAyMjIsIDU4LCAyNTEsIDEwMiwgNDIsIDExOCwgMjM2LCAxMSwgCi0gICAgMjUxLCAxMDIsIDQyLCAxMjAsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMTI2LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIAotICAgIDIzOSwgMTQ3LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIxMiwgCi0gICAgODgsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjQxLCAxNDMsIAotICAgIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAxMTgsIDIwOSwgMzYsIDI1MSwgCi0gICAgMTAyLCA0MiwgMTIwLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDEyNiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMzksIAotICAgIDE0NywgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMzksIDIzMywgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTIsIDg4LCAKLSAgICAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMywgMTEyLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MSwgMTQzLCAyMDksIAotICAgIDM2LCAyNTEsIDEwMiwgNDIsIDIyMiwgNjQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTIsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjA5LCA1NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAKLSAgICAyMzksIDE1NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDAsIDE5LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMiwgNzUsIAotICAgIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMDYsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQxLCAxMzUsIDIwOSwgCi0gICAgMzYsIDI1MSwgMTAyLCA0MiwgMjIyLCA1OSwgMjA5LCAzNiwgMjUxLCAxMDIsIDIwNCwgNTEsIDI0OCwgMjE5LCAyMDYsIAotICAgIDIzNSwgMjUxLCAxMDIsIDIwNCwgNTEsIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIxNCwgMTcxLCAKLSAgICAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIwOSwgNjEsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjA0LCA1MSwgMjM5LCAKLSAgICAxNDAsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjQyLCA0NSwgMjI1LCAxOSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgCi0gICAgMjI3LCA5NSwgMjI1LCAxOSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjI1LCAxOSwgMjE0LCAxNzEsIDIxMCwgCi0gICAgMjQwLCAyNTEsIDEwMiwgMjI1LCAxOSwgMjA5LCA2MSwgMjEwLCAyNDAsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAKLSAgICAyMTcsIDU1LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM3LCAxMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgCi0gICAgMTE4LCAyNDIsIDY1LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDE3MCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE4LCAKLSAgICAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgCi0gICAgMjMzLCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTksIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgMjUwLCAKLSAgICAzNiwgMjM5LCAyMzMsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMDksIDIzNywgMzAsIAotICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNiwgCi0gICAgMTIsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMDksIDIzNywgMzAsIAotICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIwOSwgMzcsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgCi0gICAgMjMzLCAyMDksIDM3LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjExLCA4OCwgMzAsIAotICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAKLSAgICAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM2LCAxMiwgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIAotICAgIDM2LCAyMzksIDIzMywgMjM2LCAxMiwgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIwOSwgMzcsIDIxMSwgCi0gICAgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIwOSwgMzcsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAKLSAgICAzNiwgMjQwLCAxOSwgMjA5LCAzNywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjI0LCA4NSwgCi0gICAgMzAsIDI1MSwgMTI5LCAyMzcsIDI5LCAxMTgsIDIxOCwgODYsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTA1LCAzMCwgMjUxLCAKLSAgICAxMjksIDIzNywgMjUsIDEwNSwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAxMDgsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgCi0gICAgMTA4LCAzMCwgMjUxLCAxMjksIDI0NSwgNTYsIDEyMCwgMjQyLCA2NCwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAxMjAsIAotICAgIDI0MiwgNjQsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMTcwLCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDIwOSwgMTUyLCAzMCwgCi0gICAgMjUxLCAxMjksIDIwOCwgNjEsIDIwOSwgMTUzLCAyNTAsIDI1NSwgMTgsIDMwLCAyNTEsIDEyOSwgMjM3LCAyNSwgMjA5LCAKLSAgICAxNTIsIDMwLCAyNTEsIDEyOSwgMjI0LCAyMjIsIDIwOSwgMTUyLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIwOSwgMTUyLCAKLSAgICAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIwOSwgNTMsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMjQwLCAxOCwgMzAsIDI1MSwgCi0gICAgMTI5LCAyMDgsIDYxLCAyNDAsIDE5LCAyNTAsIDI1NSwgMTgsIDMwLCAyNTEsIDEyOSwgMjM3LCAyNSwgMjQwLCAxOCwgMzAsIAotICAgIDI1MSwgMTI5LCAyMDksIDc2LCAyNDAsIDE4LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDExOCwgMjM2LCAxMSwgMzAsIDI1MSwgCi0gICAgMTI5LCAyMDksIDc2LCAxMjYsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjA4LCA2MSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMjM5LCAyMzMsIAotICAgIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjQ3LCAyMSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjIzLCA2MCwgCi0gICAgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTE4LCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIAotICAgIDIwOSwgNzYsIDIzOSwgMjMzLCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI0NCwgNDAsIDIzOSwgMjMzLCAyMjQsIDg1LCAzMCwgCi0gICAgMjUxLCAxMjksIDIxMSwgNDksIDI0MCwgMTksIDIyNCwgODUsIDMwLCAxMTgsIDE2MiwgNTQsIDMwLCAxMTgsIDE2MiwgMiwgCi0gICAgMjUwLCAyNTUsIDE4LCAzMCwgMTIwLCAyMDksIDU4LCA1NCwgMzAsIDEyNiwgMjE3LCA1NCwgNTQsIDMwLCAyMDMsIDUwLCAKLSAgICA1NCwgMzAsIDIwOSwgMjM4LCA1NCwgMzAsIDI0MiwgNjYsIDU0LCAzMCwgMjIwLCA4NywgNTQsIDMwLCAxMjAsIDIyMCwgODYsIAotICAgIDU0LCAzMCwgMTI2LCAyMjAsIDg2LCA1NCwgMzAsIDIzOSwgMTQ3LCAyMjAsIDg2LCA1NCwgMzAsIDIzOSwgMjMzLCAyMjAsIAotICAgIDg2LCA1NCwgMzAsIDIyNCwgMjE2LCA1NCwgMzAsIDIyOCwgMTM5LCAyNDgsIDIxOSwgNTQsIDMwLCAyMjcsIDg4LCA1NCwgCi0gICAgMzAsIDIxOSwgMjEzLCA1NCwgMzAsIDIwMywgMTczLCA1NCwgMzAsIDI1MCwgODcsIDU0LCAzMCwgMjUwLCAxMDIsIDU0LCAKLSAgICAzMCwgMjM4LCA3LCA1NCwgMzAsIDIwOCwgMjMsIDI0OCwgMjE5LCA1NCwgMzAsIDIwMiwgODUsIDU0LCAzMCwgMTE4LCAyMTcsIAotICAgIDU2LCA1NCwgMzAsIDIxMiwgMTEzLCA1NCwgMjE1LCAyMTAsIDIxMywgMTAyLCA1NCwgMjE1LCAyMTAsIDIwNiwgMjQ5LCA1NCwgCi0gICAgMjE1LCAyMTAsIDIxMywgMTM1LCA1NCwgMjE1LCAyMTAsIDIxMywgMTAwLCA1NCwgMjE1LCAyMTAsIDI0MywgMTgzLCAyMTMsIAotICAgIDEwMCwgNTQsIDIxNSwgMjEwLCAyMTIsIDEzNSwgNTQsIDIxNSwgMjEwLCAyNDQsIDM2LCA1NCwgMjE1LCAyMTAsIDIxNywgCi0gICAgMzksIDU0LCAyMTUsIDIxMCwgMjEzLCAxMTksIDU0LCAyMTUsIDIxMCwgMjQyLCAyMywgNTQsIDIxNSwgMjEwLCAyNTAsIDgyLCAKLSAgICA1NCwgMjE1LCAyMTAsIDI0NiwgMjEzLCA1NCwgMzAsIDE2LCAyMDksIDIwOCwgMjE2LCA1OSwgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyMTksIDI1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOCwgNzgsIDIzNywgNjQsIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjA5LCAyMTEsIDIzNywgNjQsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCA0MiwgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyNDYsIDEzMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDMsIDI1MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKLSAgICAyMzcsIDM1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzOCwgMjEzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwOSwgMCwgCi0gICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCA0NywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDI0MCwgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCAyMTMsIDgsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ2LCA0LCAyMTgsIDIwMywgMjQzLCAxNjAsIAotICAgIDIsIDIyNSwgMTIxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNSwgNjgsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE0LCAKLSAgICAyMTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjI3LCAxNDMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCA1LCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMjYsIDIxOCwgOTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQzLCA5OCwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyNDUsIDIzOSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTIsIDQ2LCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDI0NSwgMjQwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgMTQ3LCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDIxMiwgMjUxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzNiwgNTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCi0gICAgMjM3LCAxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMTc0LCAyMjcsIDIxMCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKLSAgICAyNDcsIDE3LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxNiwgMTg0LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MSwgCi0gICAgMTg2LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MiwgNzEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA3LCAxODgsIAotICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCAxNTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE4LCA5MiwgMjA4LCA5NSwgCi0gICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDUsIDIxMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTksIDkyLCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDIxNSwgMjAxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNywgMTI3LCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDIxOSwgMTk0LCAyNDksIDI1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzOSwgMTkzLCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDIzNywgMjU1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxMSwgNTAsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgNSwgMjUwLCA5LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNCwgNzIsIDI0OCwgMjM4LCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDM5LCAyMjAsIDg5LCA5NSwgMjI2LCAxOTcsIDEsIDYzLCAyMjYsIDE5NywgMSwgNzQsIDIyNiwgCi0gICAgMTk3LCAxLCAyNDksIDI1NSwgMjI2LCAxOTcsIDEsIDI0OCwgOTksIDIyNiwgMTk3LCAxLCAyMzksIDc1LCAyMjYsIDE5NywgCi0gICAgMSwgMjQ1LCA1MSwgMjI2LCAxOTcsIDEsIDc1LCAyMjYsIDE5NywgMSwgMjA0LCAxNDQsIDIyNiwgMTk3LCAxLCAyMDIsIAotICAgIDE1OSwgMjI2LCAxOTcsIDEsIDIwOSwgMTEwLCAyMjYsIDE5NywgMSwgMjMwLCAxODQsIDIyNiwgMTk3LCAxLCAyMzAsIDU0LCAKLSAgICAyMjYsIDE5NywgMSwgMjE3LCAxMzQsIDIyNiwgMTk3LCAxLCAxNTksIDIyNiwgMTk3LCAxLCAyMjYsIDE4NSwgMjI2LCAxOTcsIAotICAgIDEsIDIyMywgMTYzLCAyMjYsIDE5NywgMSwgMjI0LCA4NywgMjI2LCAxOTcsIDEsIDIyMSwgMjI4LCAyMjYsIDE5NywgMSwgCi0gICAgNjgsIDIyNiwgMTk3LCAxLCAyMTksIDE4NCwgMjI2LCAxOTcsIDEsIDIyOSwgNDgsIDIyNiwgMTk3LCAxLCAxNDYsIDIyNiwgCi0gICAgMTk3LCAxLCAxOTQsIDIyNiwgMTk3LCAxLCAyMTAsIDY5LCAyMjYsIDE5NywgMSwgMjA3LCAyNDQsIDIyNiwgMTk3LCAxLCAKLSAgICAyNTAsIDIzMSwgMjI2LCAxOTcsIDEsIDI0MSwgOTIsIDIyNiwgMTk3LCAxLCAyMzcsIDE3MSwgMjI2LCAxOTcsIDEsIDIwMywgCi0gICAgMTk2LCAyNDcsIDMyLCAxLCA2MywgMjQ3LCAzMiwgMSwgMjE5LCAxNzAsIDI0NywgMzIsIDEsIDI0NSwgNTEsIDI0NywgMzIsIAotICAgIDEsIDE1OSwgMjQ3LCAzMiwgMSwgMjA2LCAxNzYsIDI0NywgMzIsIDEsIDE0NiwgMjQ3LCAzMiwgMSwgMjI3LCAyMzgsIDI0NywgCi0gICAgMzIsIDEsIDI1NCwgMzQsIDI0NywgMzIsIDEsIDIxNywgMTM0LCAyNDcsIDMyLCAxLCAyNDksIDI1NSwgMjQ3LCAzMiwgMSwgCi0gICAgMjI2LCAxODUsIDI0NywgMzIsIDEsIDc4LCAyNDcsIDMyLCAxLCAyNDQsIDIxNCwgMjQ3LCAzMiwgMSwgMjEwLCA2OSwgMjQ3LCAKLSAgICAzMiwgMSwgMjEzLCA5MiwgMjQ3LCAzMiwgMSwgMjEzLCA5MSwgMjQ3LCAzMiwgMSwgMTk0LCAyNDcsIDMyLCAxLCAyNDcsIAotICAgIDEyNCwgMjQ3LCAzMiwgMSwgNjgsIDI0NywgMzIsIDEsIDIyMSwgMjI4LCAyNDcsIDMyLCAxLCAyMDMsIDE5NiwgMjQ3LCAzMiwgCi0gICAgMSwgMjIzLCAxNjMsIDI0NywgMzIsIDEsIDIwNywgMjQzLCAyNDcsIDMyLCAxLCAyMTksIDE4NCwgMjQ3LCAzMiwgMSwgMjExLCAKLSAgICAxNjcsIDI0NywgMzIsIDEsIDc1LCAyNDcsIDMyLCAxLCA3NCwgMjQ3LCAzMiwgMSwgMjA2LCAxNzMsIDI0NywgMzIsIDEsIAotICAgIDIzMCwgNTQsIDI0NywgMzIsIDEsIDIzMCwgNDUsIDI0NywgMzIsIDEsIDIyMywgMjcsIDI0NywgMzIsIDEsIDIwNiwgMTc4LCAKLSAgICAyNDcsIDMyLCAxLCAyMzksIDc1LCAyNDcsIDMyLCAxLCAyMzksIDEwLCAyNDcsIDMyLCAxLCAyMTEsIDEwOCwgMjQ3LCAzMiwgCi0gICAgMSwgMjExLCAxMDcsIDI0NywgMzIsIDEsIDIyMiwgMjA1LCAyNDcsIDMyLCAxLCAyMzEsIDgzLCAyNDcsIDMyLCAxLCAyNDcsIAotICAgIDEyMywgMjQ3LCAzMiwgMSwgMjA3LCAyNDQsIDI0NywgMzIsIDEsIDIwNiwgMTc1LCAyNDcsIDMyLCAxLCAyMTUsIDE4NiwgCi0gICAgMjQ3LCAzMiwgMSwgMjI1LCA1OSwgMjQ3LCAzMiwgMSwgMjI1LCA1OCwgMjQ3LCAzMiwgMSwgMjI1LCA1NywgMjQ3LCAzMiwgCi0gICAgMSwgMjI1LCA1NiwgMjQ3LCAzMiwgMSwgMjI3LCAyMzcsIDI0NywgMzIsIDEsIDI0MSwgMTkwLCAyNDcsIDMyLCAxLCAyMDYsIAotICAgIDE3NCwgODQsIDI0MSwgNDQsIDIwOSwgMzUsIDgyLCA4NCwgMjQxLCA0NCwgMTcsIDEwNSwgODQsIDI0MSwgNDQsIDE3LCAKLSAgICAxMDgsIDg0LCAyNDEsIDQ0LCAxNywgMTQ3LCA4NCwgMjQxLCA0NCwgMTcsIDE0OSwgODQsIDI0MSwgNDQsIDE3LCAxNzAsIAotICAgIDg0LCAyNDEsIDQ0LCAxNywgMTk1LCA4NCwgMjQxLCA0NCwgMTcsIDIxMywgMTExLCA4NCwgMjQxLCA0NCwgMTcsIDE5OSwgCi0gICAgODQsIDI0MSwgNDQsIDE3LCAyMjIsIDYzLCA4NCwgMjQxLCA0NCwgNDIsIDIwOSwgMTUyLCA4NCwgMjQxLCA0NCwgNDIsIAotICAgIDIwNywgMTUxLCA4NCwgMjQxLCA0NCwgNDIsIDIwOSwgNTMsIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAxNTMsIDg0LCAyNDEsIAotICAgIDQ0LCA0MiwgMjQwLCAxOCwgODQsIDI0MSwgNDQsIDQyLCAyMTIsIDc0LCA4NCwgMjQxLCA0NCwgNDIsIDIxMywgMTA1LCA4NCwgCi0gICAgMjQxLCA0NCwgNDIsIDI0MSwgMTM0LCA4NCwgMjQxLCA0NCwgNDIsIDIyMiwgNTgsIDg0LCAyNDEsIDQ0LCA0MiwgMTE4LCAKLSAgICAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDEyMCwgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAxMjYsIDIzNiwgMTEsIAotICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIAotICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgCi0gICAgODQsIDI0MSwgNDQsIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAKLSAgICAzOCwgMzcsIDEsIDYzLCAzOCwgMzcsIDEsIDI0OCwgMTYyLCAzOCwgMzcsIDEsIDIyOSwgMjAxLCAzOCwgMzcsIDEsIDI0NCwgCi0gICAgNzUsIDM4LCAzNywgMSwgNzQsIDM4LCAzNywgMSwgMjA2LCA1NSwgMzgsIDM3LCAxLCAyMDIsIDkyLCAzOCwgMzcsIDEsIAotICAgIDIzNywgNjcsIDM4LCAzNywgMSwgMjA5LCA5MiwgMzgsIDM3LCAxLCA3NSwgMzgsIDM3LCAxLCAxNzMsIDM4LCAzNywgMSwgCi0gICAgMjQxLCAxMjIsIDM4LCAzNywgMSwgMjQxLCAxMDMsIDM4LCAzNywgMSwgMjQxLCA5MiwgMzgsIDM3LCAxLCAyNDEsIDcsIDM4LCAKLSAgICAzNywgMSwgNzgsIDM4LCAzNywgMSwgMjE5LCAzNCwgMzgsIDM3LCAxLCAyMTMsIDQzLCAzOCwgMzcsIDEsIDIyOCwgMjA5LCAKLSAgICAzOCwgMzcsIDEsIDI0MSwgMjgsIDM4LCAzNywgMSwgMjQxLCAxNywgMzgsIDM3LCAxLCAyMDksIDE4NywgMzgsIDM3LCAxLCAKLSAgICA2OCwgMzgsIDM3LCAxLCAyNDEsIDEyNSwgMzgsIDM3LCAxLCAyMTgsIDE5NSwgMzgsIDM3LCAxLCAyMjksIDEyOSwgMzgsIAotICAgIDM3LCAxLCAyNDEsIDE1NCwgMzgsIDM3LCAxLCAyNDEsIDE5LCAzOCwgMzcsIDEsIDI0NiwgMTcwLCAzOCwgMzcsIDEsIDIzMSwgCi0gICAgODMsIDM4LCAzNywgMSwgMjA2LCAxNzgsIDM4LCAzNywgMSwgMjQxLCAwLCAzOCwgMzcsIDIyMSwgNDQsIDEwNSwgMzgsIDM3LCAKLSAgICAyMjEsIDQ0LCAxNzAsIDM4LCAzNywgMjIxLCA0NCwgMjA5LCAxNTIsIDM4LCAzNywgMjIxLCA0NCwgMjQwLCAxOCwgMjM4LCAKLSAgICAxNywgMSwgMjUxLCA2NywgMjM4LCAxNywgMSwgMjQ4LCAyNTUsIDIzOCwgMTcsIDEsIDIzOCwgNzgsIDIzOCwgMTcsIDEsIAotICAgIDI0NCwgMTk0LCAyMzgsIDE3LCAxLCAyNTEsIDYzLCAyMzgsIDE3LCAxLCAyMTcsIDExNywgMjM4LCAxNywgMSwgMjMwLCAKLSAgICAxOTYsIDIzOCwgMTcsIDEsIDIzNywgMTUwLCAyMzgsIDE3LCAxLCAyMDksIDQ5LCAyMzgsIDE3LCAxLCAyNDEsIDEzMywgCi0gICAgMjM4LCAxNywgMSwgMjI4LCAxNzYsIDIzOCwgMTcsIDEsIDIyOCwgOTAsIDIzOCwgMTcsIDEsIDIyNSwgMTE0LCAyMzgsIDE3LCAKLSAgICAxLCAyMjMsIDYyLCAyMzgsIDE3LCAxLCAyMzAsIDE1NCwgMjM4LCAxNywgMSwgMjA2LCAxOTYsIDIzOCwgMTcsIDEsIDIxOSwgCi0gICAgMTQ1LCAyMzgsIDE3LCAxLCAyMjIsIDU4LCAyMzgsIDE3LCAxLCAyMTYsIDE5NiwgMjM4LCAxNywgMSwgMjE0LCAyMTYsIAotICAgIDIzOCwgMTcsIDEsIDIwOSwgMTY2LCAyMzgsIDE3LCAxLCAyMDQsIDEwLCAyMzgsIDE3LCAxLCAyNDAsIDg4LCAyMzgsIDE3LCAKLSAgICAxLCAyMzEsIDg3LCAyMzgsIDE3LCAxLCAyMzUsIDI1MiwgMjM4LCAxNywgMSwgMjE5LCAyMjMsIDIzOCwgMTcsIDEsIDIyMiwgCi0gICAgNjQsIDIzNiwgMTEsIDM4LCAyMTgsIDIzNywgMSwgMjUwLCAyMzEsIDM4LCAyMTgsIDIzNywgMSwgMjQ3LCAxNjAsIDM4LCAKLSAgICAyMTgsIDIzNywgMSwgMjM4LCAyNDgsIDM4LCAyMTgsIDIzNywgMSwgMjQzLCAxMDEsIDM4LCAyMTgsIDIzNywgMSwgNzQsIAotICAgIDM4LCAyMTgsIDIzNywgMSwgMjAyLCA2MiwgMzgsIDIxOCwgMjM3LCAxLCAyNDEsIDI0NywgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDIsIDk5LCAzOCwgMjE4LCAyMzcsIDEsIDI0MSwgMjQ1LCAzOCwgMjE4LCAyMzcsIDEsIDc1LCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIyOSwgMTUsIDM4LCAyMTgsIDIzNywgMSwgMjI3LCAyMDYsIDM4LCAyMTgsIDIzNywgMSwgMjI0LCAyMzgsIDM4LCAyMTgsIAotICAgIDIzNywgMSwgMjIyLCAyMjgsIDM4LCAyMTgsIDIzNywgMSwgMjA1LCAxNzUsIDM4LCAyMTgsIDIzNywgMSwgMjE5LCAyMiwgCi0gICAgMzgsIDIxOCwgMjM3LCAxLCAyMTYsIDEyMSwgMzgsIDIxOCwgMjM3LCAxLCAyMTIsIDE0MiwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDksIDI1MCwgMzgsIDIxOCwgMjM3LCAxLCA2OCwgMzgsIDIxOCwgMjM3LCAxLCAyNDYsIDE1MSwgMzgsIDIxOCwgMjM3LCAKLSAgICAxLCAyMTIsIDIzNSwgMzgsIDIxOCwgMjM3LCAxLCAyMTMsIDQ1LCAzOCwgMjE4LCAyMzcsIDEsIDIwMiwgMjE1LCAzOCwgCi0gICAgMjE4LCAyMzcsIDEsIDIwMywgMzAsIDM4LCAyMTgsIDIzNywgMSwgNzgsIDM4LCAyMTgsIDIzNywgMSwgMjIwLCAxOCwgMzgsIAotICAgIDIxOCwgMjM3LCAxLCAyNDEsIDE1NCwgMzgsIDIxOCwgMjM3LCAxLCAxNTIsIDM4LCAyMTgsIDIzNywgMSwgMjA3LCAyNTQsIAotICAgIDM4LCAyMTgsIDIzNywgMSwgMjA2LCA0MywgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIDM0LCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgCi0gICAgMzIsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCA2NiwgMzgsIDIxOCwgMjM3LCAxLCAyMzEsIDExMCwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDIsIDIxMywgMzgsIDIxOCwgMjM3LCAxLCAxOTgsIDM4LCAyMTgsIDIzNywgMSwgMjM1LCAxNzEsIDM5LCAzOCwgMjE4LCAKLSAgICAyMzcsIDEsIDI1MCwgMjMxLCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyNDMsIDEwMSwgMzksIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjAyLCA5OSwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjIyLCAyMjgsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDIxMiwgMTQyLCAKLSAgICAyMDcsIDE5LCAxLCAyNTEsIDYsIDIwNywgMTksIDEsIDI0OCwgMTA2LCAyMDcsIDE5LCAxLCAyMzgsIDIzNiwgMjA3LCAxOSwgCi0gICAgMSwgMjI5LCAxNDQsIDIwNywgMTksIDEsIDI0NCwgMzcsIDIwNywgMTksIDEsIDIzNiwgMTM2LCAyMDcsIDE5LCAxLCAyMDQsIAotICAgIDAsIDIwNywgMTksIDEsIDIwMiwgODMsIDIwNywgMTksIDEsIDIzNiwgNDUsIDIwNywgMTksIDEsIDIwOSwgMTMyLCAyMDcsIAotICAgIDE5LCAxLCAyMDIsIDIzNiwgMjA3LCAxOSwgMSwgMjMwLCAyMiwgMjA3LCAxOSwgMSwgMjEyLCAyNTUsIDIwNywgMTksIDEsIAotICAgIDIyOCwgMjQsIDIwNywgMTksIDEsIDIyNCwgMjQ3LCAyMDcsIDE5LCAxLCAyNDMsIDI1MywgMjA3LCAxOSwgMSwgMjIxLCA0MCwgCi0gICAgMjA3LCAxOSwgMSwgMjAyLCA2LCAyMDcsIDE5LCAxLCAyMTQsIDI0OCwgMjA3LCAxOSwgMSwgMjUxLCA1OSwgMjA3LCAxOSwgCi0gICAgMSwgMjE3LCAxOTEsIDIwNywgMTksIDEsIDIxNSwgMjcsIDIwNywgMTksIDEsIDIxNywgNzAsIDIwNywgMTksIDEsIDIxNiwgCi0gICAgMTc1LCAyMDcsIDE5LCAxLCAyMDksIDk2LCAyMDcsIDE5LCAxLCAyMzgsIDExNCwgMjA3LCAxOSwgMSwgMTM1LCAyMDcsIDE5LCAKLSAgICAxLCA3NSwgMjA3LCAxOSwgMSwgNjgsIDIwNywgMTksIDEsIDIxMSwgMTE5LCAyMDcsIDE5LCAyMDMsIDIzOCwgMjQzLCAxNDEsIAotICAgIDM4LCAyMTgsIDIzMSwgMiwgNjMsIDM4LCAyMTgsIDIzMSwgMiwgNzUsIDM4LCAyMTgsIDIzMSwgMiwgNjgsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMTczLCAzOCwgMjE4LCAyMzEsIDIsIDIyOCwgMjA5LCAzOCwgMjE4LCAyMzEsIDIsIDIzOSwgOCwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAyMzcsIDIzMCwgMzgsIDIxOCwgMjMxLCAyLCAyMDMsIDE4MiwgMzgsIDIxOCwgMjMxLCAyLCAyNDcsIDkyLCAKLSAgICAzOCwgMjE4LCAyMzEsIDIsIDIzMCwgMTgxLCAzOCwgMjE4LCAyMzEsIDIsIDIzMCwgMTQxLCAzOCwgMjE4LCAyMzEsIDIsIAotICAgIDIxMCwgMjIsIDM4LCAyMTgsIDIzMSwgMiwgMjA3LCAyMDMsIDM4LCAyMTgsIDIzMSwgMiwgMjQ0LCAyMTIsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMjQzLCAyMzMsIDM4LCAyMTgsIDIzMSwgMiwgMjQyLCA0MiwgMzgsIDIxOCwgMjMxLCAyLCAyMDksIDEwOCwgCi0gICAgMzgsIDIxOCwgMjMxLCAyLCAxODUsIDM4LCAyMTgsIDIzMSwgMiwgMjQ5LCAzMiwgMzgsIDIxOCwgMjMxLCAyLCAyNDAsIAotICAgIDEwOCwgMzgsIDIxOCwgMjMxLCAyLCAyMDEsIDIwMSwgMzgsIDIxOCwgMjMxLCAyLCAyMjEsIDg0LCAzOCwgMjE4LCAyMzEsIAotICAgIDIsIDE5MiwgMzgsIDIxOCwgMjMxLCAyLCAyMjQsIDE1NSwgMzgsIDIxOCwgMjMxLCAyLCAyMjMsIDI0NiwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAxOTgsIDM4LCAyMTgsIDIzMSwgMiwgMjA2LCA4NiwgMzgsIDIxOCwgMjMxLCAyLCAyMDUsIDIzMCwgMzgsIAotICAgIDIxOCwgMjMxLCAyLCAyMTYsIDIyMCwgMzgsIDIxOCwgMjMxLCAyLCAyMTUsIDE0NSwgMzgsIDIxOCwgMjMxLCAyLCAyMjgsIAotICAgIDExMywgMzgsIDIxOCwgMjMxLCAyLCAyMTUsIDM2LCAzOCwgMjE4LCAyMzEsIDIsIDIwMiwgMTE2LCAzOCwgMjE4LCAyMzEsIAotICAgIDIsIDIxMywgOTAsIDM4LCAyMTgsIDIzMSwgMiwgMjExLCAxNjQsIDM4LCAyMTgsIDIzMSwgMiwgMTUyLCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDI1MCwgMjgsIDM4LCAyMTgsIDIzMSwgMiwgMjUwLCAyNywgMzgsIDIxOCwgMjMxLCAyLCAyNTAsIDI2LCAzOCwgCi0gICAgMjE4LCAyMzEsIDIsIDIwMywgMTUzLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgMTkwLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgCi0gICAgMTg5LCAzOCwgMjE4LCAyMzEsIDIsIDI0OSwgOCwgMzgsIDIxOCwgMjMxLCAyLCAyNDcsIDE0NCwgMzgsIDIxOCwgMjMxLCAKLSAgICAyMDMsIDIzOCwgMjQzLCAxNDEsIDM4LCAyMTgsIDIzMSwgNDIsIDEwNSwgMzgsIDIxOCwgMjMxLCA0MiwgMTA4LCAzOCwgCi0gICAgMjE4LCAyMzEsIDQyLCAyMDksIDE1MiwgMzgsIDIxOCwgMjMxLCA0MiwgMjA3LCAxNTEsIDM4LCAyMTgsIDIzMSwgNDIsIAotICAgIDIzNiwgMTEsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzUsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzQsIDI0NCwgMTcsIDYsIDEsIAotICAgIDE2MywgNjMsIDI0NCwgMTcsIDYsIDEsIDE2MywgMjUxLCA3MywgMjQ0LCAxNywgNiwgMSwgMTYzLCA3OCwgMjQ0LCAxNywgNiwgCi0gICAgMSwgMTYzLCAyMjAsIDE4LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgNzUsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCAKLSAgICA3NCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDYzLCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgMjUxLCA3MywgMjQ0LCAKLSAgICAxNywgNiwgMSwgMjEyLCAyMjgsIDc4LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgMjIwLCAxOCwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjUwLCA4LCAyNDQsIDE3LCA2LCAxLCAyMTksIDE5NSwgMjQ0LCAxNywgNiwgMSwgMjAzLCAyMTcsIDI0NCwgMTcsIDYsIDEsIAotICAgIDIwMywgNDksIDI0NCwgMTcsIDYsIDEsIDIzNywgMTcxLCAyNDQsIDE3LCA2LCAxLCAyMTksIDIzLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDgsIDE1MCwgMjQ0LCAxNywgNiwgMSwgMjA5LCAxNzYsIDI0NCwgMTcsIDYsIDEsIDI0NCwgNjEsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0NiwgMTY2LCAyNDQsIDE3LCA2LCAxLCAyMzAsIDE1OSwgMjQ0LCAxNywgNiwgMSwgMjI5LCAyMDgsIDI0NCwgMTcsIDYsIAotICAgIDEsIDIzOCwgMjExLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDE1NCwgMjQ0LCAxNywgNiwgMSwgMjA2LCA1MCwgMjQ0LCAxNywgNiwgCi0gICAgMSwgMjQwLCAyNDMsIDI0NCwgMTcsIDYsIDEsIDIwOSwgOTAsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTcsIDI0NCwgMTcsIDYsIAotICAgIDEsIDIwMiwgOTAsIDI0NCwgMTcsIDYsIDEsIDI0MSwgNywgMjQ0LCAxNywgNiwgMSwgMjAyLCA3MCwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQxLCAyOCwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxMjIsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTAzLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDEsIDkyLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDc4LCAyNDQsIDE3LCA2LCAxLCAyMjAsIDU3LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDAsIDIyMCwgMjQ0LCAxNywgNSwgMSwgMTYzLCA3NSwgMjQ0LCAxNywgNSwgMSwgMTYzLCA3NCwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMTYzLCA2MywgMjQ0LCAxNywgNSwgMSwgMTYzLCAyNTEsIDczLCAyNDQsIDE3LCA1LCAxLCAxNjMsIDc4LCAyNDQsIDE3LCA1LCAKLSAgICAxLCAxNjMsIDIyMCwgMTgsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCA3NSwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIAotICAgIDc0LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgNjMsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAyNTEsIDczLCAyNDQsIAotICAgIDE3LCA1LCAxLCAyMTIsIDIyOCwgNzgsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAyMjAsIDE4LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNTAsIDgsIDI0NCwgMTcsIDUsIDEsIDIxOSwgMTk1LCAyNDQsIDE3LCA1LCAxLCAyMDMsIDIxNywgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjAzLCA0OSwgMjQ0LCAxNywgNSwgMSwgMjM3LCAxNzEsIDI0NCwgMTcsIDUsIDEsIDIxOSwgMjMsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0OCwgMTUwLCAyNDQsIDE3LCA1LCAxLCAyMDksIDE3NiwgMjQ0LCAxNywgNSwgMSwgMjQ0LCA2MSwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQ2LCAxNjYsIDI0NCwgMTcsIDUsIDEsIDIzMCwgMTU5LCAyNDQsIDE3LCA1LCAxLCAyMjksIDIwOCwgMjQ0LCAxNywgNSwgCi0gICAgMSwgMjM4LCAyMTEsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTU0LCAyNDQsIDE3LCA1LCAxLCAyMDYsIDUwLCAyNDQsIDE3LCA1LCAKLSAgICAxLCAyNDAsIDI0MywgMjQ0LCAxNywgNSwgMSwgMjA5LCA5MCwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxNywgMjQ0LCAxNywgNSwgCi0gICAgMSwgMjAyLCA5MCwgMjQ0LCAxNywgNSwgMSwgMjQxLCA3LCAyNDQsIDE3LCA1LCAxLCAyMDIsIDcwLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDEsIDI4LCAyNDQsIDE3LCA1LCAxLCAyNDEsIDEyMiwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxMDMsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0MSwgOTIsIDI0NCwgMTcsIDUsIDEsIDI0MSwgNzgsIDI0NCwgMTcsIDUsIDEsIDIyMCwgNTcsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0MCwgMjIwLCAyMTMsIDUwLCAxLCAyMTksIDIwLCAyMTMsIDUwLCAxLCAyMDgsIDEzMSwgMjEzLCA1MCwgMSwgMjI5LCA5NiwgCi0gICAgMjEzLCA1MCwgMSwgMjQwLCA1MywgMjEzLCA1MCwgMSwgMjA5LCA2NSwgMjEzLCA1MCwgMSwgMjEyLCAxMywgMjEzLCA1MCwgCi0gICAgMSwgMjEwLCAxOTAsIDIxMywgNTAsIDEsIDI0NiwgOTAsIDIxMywgNTAsIDEsIDIwMywgNTEsIDIxMywgNTAsIDEsIDIzNiwgCi0gICAgOSwgMjEzLCA1MCwgMSwgMjQ4LCA4NSwgMjEzLCA1MCwgMSwgMjQ0LCA3NCwgMjEzLCA1MCwgMSwgMjM4LCAyNTAsIDIxMywgCi0gICAgNTAsIDEsIDIwNSwgMTcwLCAyMTMsIDUwLCAxLCAyMDksIDcxLCAyMTMsIDUwLCAxLCAyMDIsIDE1LCAyMTMsIDUwLCAxLCAKLSAgICAyMjUsIDE4LCAyMTMsIDUwLCAxLCAyMzAsIDgwLCAyMTMsIDUwLCAxLCAyMDMsIDI1NCwgMjEzLCA1MCwgMSwgMjM3LCAxNTksIAotICAgIDIxMywgNTAsIDEsIDIyNywgMzMsIDIxMywgNTAsIDEsIDIyNCwgMTExLCAyMTMsIDUwLCAxLCAyMzEsIDkwLCAyMTMsIDUwLCAKLSAgICAxLCAyNDEsIDE1MiwgMjEzLCA1MCwgMSwgMjUwLCA3NSwgMjEzLCA1MCwgMSwgMjUxLCAxMTMsIDIxMywgNTAsIDEsIDIyMCwgCi0gICAgMzEsIDIxMywgNTAsIDEsIDIwMywgMjQxLCAyMTMsIDUwLCAxLCAyMTksIDIxMSwgMjEzLCA1MCwgMSwgMjUxLCA3MywgMjEzLCAKLSAgICA1MCwgMSwgMjE1LCAyMjQsIDIxMywgNTAsIDEsIDIyMSwgNDAsIDIxMywgNTAsIDEsIDI0MSwgMTcyLCAyMTMsIDUwLCAxLCAKLSAgICAyNTEsIDc4LCAyMTMsIDUwLCAxLCAyMzUsIDE2MiwgMjEzLCA1MCwgMSwgMjA2LCAyMjQsIDIxMywgNTAsIDEsIDIyMCwgOTUsIAotICAgIDIxMywgNTAsIDEsIDIyMCwgMTAsIDIxMywgNTAsIDEsIDIyMCwgNTUsIDIxMywgNTAsIDEsIDI1MCwgMTEsIDIxMywgNTAsIAotICAgIDEsIDI1MCwgMTIxLCAyMTMsIDUwLCAxLCAyMTksIDI0NCwgMjEzLCA1MCwgMSwgMjUxLCA1NCwgMjEzLCA1MCwgMSwgMjQxLCAKLSAgICAyMSwgMjEzLCA1MCwgMSwgMjUwLCA5OSwgMjEzLCA1MCwgMSwgMjQxLCAxODMsIDIxMywgNTAsIDEsIDIzNSwgMTcwLCAyMTMsIAotICAgIDUwLCAxLCAyMDMsIDE2LCAyMTksIDIyNSwgMSwgMjUxLCAzMCwgMjE5LCAyMjUsIDEsIDI0OSwgMzIsIDIxOSwgMjI1LCAxLCAKLSAgICAyMTAsIDIyLCAyMTksIDIyNSwgMSwgMjMwLCAxODEsIDIxOSwgMjI1LCAxLCAyMDMsIDE4MiwgMjE5LCAyMjUsIDEsIDIyOSwgCi0gICAgMTQ0LCAyMTksIDIyNSwgMSwgMjQ0LCA2MCwgMjE5LCAyMjUsIDEsIDIxNiwgMjIwLCAyMTksIDIyNSwgMSwgMjE1LCAzNiwgCi0gICAgMjE5LCAyMjUsIDEsIDIxMywgNSwgMjE5LCAyMjUsIDEsIDI0NCwgMSwgMjE5LCAyMjUsIDEsIDI0NywgNywgMjE5LCAyMjUsIAotICAgIDEsIDIzOSwgOCwgMjE5LCAyMjUsIDEsIDI0MCwgMTA4LCAyMTksIDIyNSwgMSwgMjE3LCAxMjQsIDIxOSwgMjI1LCAxLCAKLSAgICAyMzAsIDM4LCAyMTksIDIyNSwgMSwgMjI4LCAxMDgsIDIxOSwgMjI1LCAxLCAyMjQsIDEyNCwgMjE5LCAyMjUsIDEsIDIyMSwgCi0gICAgMjQsIDIxOSwgMjI1LCAxLCAyMDQsIDcwLCAyMTksIDIyNSwgMSwgMTUyLCAyMTksIDIyNSwgMSwgMTk4LCAyMTksIDIyNSwgCi0gICAgMSwgNjMsIDIxOSwgMjI1LCAxLCA3NCwgMjE5LCAyMjUsIDEsIDc1LCAyMTksIDIyNSwgMSwgNzgsIDIxOSwgMjI1LCAxLCAKLSAgICA2OCwgMjE5LCAyMjUsIDEsIDI1MiwgMjUsIDIxOSwgMjI1LCAxLCAyNDEsIDE2MSwgMjE5LCAyMjUsIDEsIDIyMCwgMTgsIAotICAgIDIxOSwgMjI1LCAxNywgMjAyLCA4NCwgMjE5LCAyMjUsIDE3LCAxMDUsIDIxOSwgMjI1LCAxNywgMTA4LCAyMTksIDIyNSwgCi0gICAgMTcsIDE0NywgMjE5LCAyMjUsIDE3LCAxNDksIDIxOSwgMjI1LCAxNywgMTcwLCAyMTksIDIyNSwgMTcsIDE5NSwgMjE5LCAKLSAgICAyMjUsIDE3LCAyMTMsIDExMSwgMjE5LCAyMjUsIDE3LCAxOTksIDIxOSwgMjI1LCAxNywgMjIyLCA2MywgMjQxLCAxMTgsIDEsIAotICAgIDYzLCAyNDEsIDExOCwgMSwgMjQ4LCAxNjIsIDI0MSwgMTE4LCAxLCAyNDYsIDIzOCwgMjQxLCAxMTgsIDEsIDI0NiwgMTcwLCAKLSAgICAyNDEsIDExOCwgMSwgMjQ0LCA3NSwgMjQxLCAxMTgsIDEsIDIyMywgMTcsIDI0MSwgMTE4LCAxLCAyNDMsIDI0OCwgMjQxLCAKLSAgICAxMTgsIDEsIDI0MSwgMTQ1LCAyNDEsIDExOCwgMSwgNzQsIDI0MSwgMTE4LCAxLCAyNDAsIDYwLCAyNDEsIDExOCwgMSwgCi0gICAgMjM4LCAxOTAsIDI0MSwgMTE4LCAxLCAyMzgsIDUyLCAyNDEsIDExOCwgMSwgMjM3LCA2NywgMjQxLCAxMTgsIDEsIDc1LCAKLSAgICAyNDEsIDExOCwgMSwgMjMwLCAxNjEsIDI0MSwgMTE4LCAxLCAyMjksIDIwMSwgMjQxLCAxMTgsIDEsIDIyNywgMjM0LCAyNDEsIAotICAgIDExOCwgMSwgMjI3LCA3MywgMjQxLCAxMTgsIDEsIDIyNSwgMjAsIDI0MSwgMTE4LCAxLCAyMjIsIDI0MCwgMjQxLCAxMTgsIAotICAgIDEsIDIwMSwgMjAxLCAyNDEsIDExOCwgMSwgMjIyLCA0MSwgMjQxLCAxMTgsIDEsIDc4LCAyNDEsIDExOCwgMSwgMjE5LCAzNCwgCi0gICAgMjQxLCAxMTgsIDEsIDIxNywgMTA2LCAyNDEsIDExOCwgMSwgMjE2LCAxNTgsIDI0MSwgMTE4LCAxLCAyMTUsIDE4MCwgMjQxLCAKLSAgICAxMTgsIDEsIDIxNCwgMTc3LCAyNDEsIDExOCwgMSwgMjEzLCA0MywgMjQxLCAxMTgsIDEsIDIwOSwgMTg3LCAyNDEsIDExOCwgCi0gICAgMSwgMjA5LCA5MiwgMjQxLCAxMTgsIDEsIDY4LCAyNDEsIDExOCwgMSwgMjA2LCA1NSwgMjQxLCAxMTgsIDEsIDIwMywgMTc2LCAKLSAgICAyNDEsIDExOCwgMSwgMjAzLCAxMjQsIDI0MSwgMTE4LCAxLCAyMDIsIDkyLCAyNDEsIDExOCwgMSwgMjAyLCA3MSwgMjQxLCAKLSAgICAxMTgsIDEsIDIzOCwgMTA1LCAyNDEsIDExOCwgMSwgMjM4LCAxMTEsIDI0MSwgMTE4LCAxLCAyMjksIDEyOSwgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMSwgMjUxLCAxLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDgsIDEwOCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCi0gICAgMjM4LCA2OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ0LCAxNDAsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMTcxLCAKLSAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDEwMiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQwLCAxODMsIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDEsIDIwMiwgNjUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwOSwgMjEzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAKLSAgICAyNDYsIDE5OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCAyMjQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgODAsIAotICAgIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMjIzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIDkwLCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAxLCAyMjgsIDE3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDIzNSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCi0gICAgMjAzLCAxNzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MiwgNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ3LCAzOSwgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxNDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyOSwgMjQwLCAyNDcsIDE0LCAyNTEsIAotICAgIDMxLCAxLCAyMjYsIDE5NCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjM3LCAxNCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE3LCAKLSAgICAxMDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI1MCwgMTc3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDEwNywgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxNDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NSwgNjMsIDI0NywgMTQsIDI1MSwgMzEsIAotICAgIDEsIDIyNSwgMTAzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTcsIDExMSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjIxLCAKLSAgICAxNTEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMjQwLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIDczLCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDE2MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjIwLCAzMSwgMjQ3LCAxNCwgMjUxLCAzMSwgCi0gICAgMSwgMjA3LCAxMjUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MCwgODMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMjUzLCAKLSAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDE3NiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE5LCA5LCAyNDcsIDE0LCAyNTEsIAotICAgIDMxLCAxLCAyMzgsIDk1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTYsIDE3MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCAKLSAgICA5OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjA1LCAyMzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwOCwgMTkzLCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyMTIsIDIwNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxOTQsIDI0NywgMTQsIDI1MSwgCi0gICAgMzEsIDEsIDI0NSwgNjQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NywgNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAzLCAKLSAgICA1NiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE4LCAxMDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyOSwgNjIsIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDI0NiwgNDksIDgyLCAyOSwgMzQsIDIsIDI1MSwgMjMxLCAyOSwgMzQsIDIsIDI1MSwgMjMwLCAyOSwgMzQsIAotICAgIDIsIDI1MSwgMjI5LCAyOSwgMzQsIDIsIDI1MSwgMjI4LCAyOSwgMzQsIDIsIDI1MSwgMjI3LCAyOSwgMzQsIDIsIDI1MSwgCi0gICAgMjI2LCAyOSwgMzQsIDIsIDI1MSwgMjI1LCAyOSwgMzQsIDIsIDI1MSwgMjI0LCAyOSwgMzQsIDIsIDI1MSwgMjIzLCAyOSwgCi0gICAgMzQsIDIsIDI1MSwgMjIyLCAyOSwgMzQsIDIsIDI1MSwgMjIxLCAyOSwgMzQsIDIsIDI1MSwgMjIwLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMjE5LCAyOSwgMzQsIDIsIDI1MSwgMjE4LCAyOSwgMzQsIDIsIDI1MSwgMjE3LCAyOSwgMzQsIDIsIDI1MSwgMjE2LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMjE1LCAyOSwgMzQsIDIsIDI1MSwgMjE0LCAyOSwgMzQsIDIsIDI1MSwgMjEzLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMjEyLCAyOSwgMzQsIDIsIDI1MSwgMjExLCAyOSwgMzQsIDIsIDI1MSwgMjEwLCAyOSwgMzQsIDIsIDI1MSwgMjA5LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMjA4LCAyOSwgMzQsIDIsIDI1MSwgMjA3LCAyOSwgMzQsIDIsIDI1MSwgMjA2LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMjA1LCAyOSwgMzQsIDIsIDI1NCwgMjM5LCAyOSwgMzQsIDIsIDI1MSwgMjA0LCAyOSwgMzQsIDIsIDI1MSwgMjAzLCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMjAyLCAyOSwgMzQsIDIsIDI1MSwgMjAxLCAyOSwgMzQsIDIsIDI1MSwgMjAwLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTk5LCAyOSwgMzQsIDIsIDI1MSwgMTk4LCAyOSwgMzQsIDIsIDI1MSwgMTk3LCAyOSwgMzQsIDIsIDI1MSwgMTk2LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTk1LCAyOSwgMzQsIDIsIDI1MSwgMTk0LCAyOSwgMzQsIDIsIDI1MSwgMTkzLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTkyLCAyOSwgMzQsIDIsIDI1MSwgMTkxLCAyOSwgMzQsIDIsIDI1MSwgMTkwLCAyOSwgMzQsIDIsIDI1MSwgMTg5LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTg4LCAyOSwgMzQsIDIsIDI1MSwgMTg3LCAyOSwgMzQsIDIsIDI1MSwgMTg2LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTg1LCAyOSwgMzQsIDIsIDI1MSwgMTg0LCAyOSwgMzQsIDIsIDI1MSwgMTgzLCAyOSwgMzQsIDIsIDI1MSwgMTgyLCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTgxLCAyOSwgMzQsIDIsIDI1MSwgMTgwLCAyOSwgMzQsIDIsIDI1MSwgMTc5LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTc4LCAyOSwgMzQsIDIsIDI1MSwgMTc3LCAyOSwgMzQsIDIsIDI1MSwgMTc2LCAyOSwgMzQsIDIsIDI1MSwgMTc1LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTc0LCAyOSwgMzQsIDIsIDI1MSwgMTczLCAyOSwgMzQsIDIsIDI1MSwgMTcyLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTcxLCAyOSwgMzQsIDIsIDI1MSwgMTcwLCAyOSwgMzQsIDIsIDI1MSwgMTY5LCAyOSwgMzQsIDIsIDI1MSwgMTY4LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTY3LCAyOSwgMzQsIDIsIDI1MSwgMTY2LCAyOSwgMzQsIDIsIDI1MSwgMTY1LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTY0LCAyOSwgMzQsIDIsIDI1MSwgMTYzLCAyOSwgMzQsIDIsIDI1MSwgMTYyLCAyOSwgMzQsIDIsIDI1NCwgMTUyLCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTYxLCAyOSwgMzQsIDIsIDI1MSwgMTYwLCAyOSwgMzQsIDIsIDI1NCwgMTE3LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTU5LCAyOSwgMzQsIDIsIDI1MSwgMTU4LCAyOSwgMzQsIDIsIDI1MSwgMTU3LCAyOSwgMzQsIDIsIDI1MSwgMTU2LCAKLSAgICAyOSwgMzQsIDIsIDI1NCwgMTA0LCAyOSwgMzQsIDIsIDI1MSwgMTU1LCAyOSwgMzQsIDIsIDI1MSwgMTU0LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTUzLCAyOSwgMzQsIDIsIDI1MSwgMTUyLCAyOSwgMzQsIDIsIDI1MSwgMTUxLCAyOSwgMzQsIDIsIDI1MywgMTc2LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTc1LCAyOSwgMzQsIDIsIDI1MywgMTc0LCAyOSwgMzQsIDIsIDI1MywgMTczLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTcyLCAyOSwgMzQsIDIsIDI1MywgMTcxLCAyOSwgMzQsIDIsIDI1MywgMTcwLCAyOSwgMzQsIDIsIDI1MywgMTY5LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTY3LCAyOSwgMzQsIDIsIDI1MywgMTY2LCAyOSwgMzQsIDIsIDI1MywgMTY1LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTY0LCAyOSwgMzQsIDIsIDI1MywgMTYzLCAyOSwgMzQsIDIsIDI1MywgMTYyLCAyOSwgMzQsIDIsIDI1MywgMTYwLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTU5LCAyOSwgMzQsIDIsIDI1MywgMTU4LCAyOSwgMzQsIDIsIDI1MywgMTU3LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTU2LCAyOSwgMzQsIDIsIDI1MywgMTU1LCAyOSwgMzQsIDIsIDI1MywgMTU0LCAyOSwgMzQsIDIsIDI1MywgMTUzLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTUyLCAyOSwgMzQsIDIsIDI1MywgMTUxLCAyOSwgMzQsIDIsIDI1MywgMTUwLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTQ5LCAyOSwgMzQsIDIsIDI1MywgMTQ4LCAyOSwgMzQsIDIsIDI1MywgMTQ3LCAyOSwgMzQsIDIsIDI1MywgMTQ2LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTQ1LCAyOSwgMzQsIDIsIDI1MywgMTQ0LCAyOSwgMzQsIDIsIDI1MywgMTQzLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTQyLCAyOSwgMzQsIDIsIDI1MywgMTQwLCAyOSwgMzQsIDIsIDI1MywgMTM5LCAyOSwgMzQsIDIsIDI1MywgMTM4LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTM0LCAyOSwgMzQsIDIsIDI1MywgMTMzLCAyOSwgMzQsIDIsIDI1MywgMTMyLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTMxLCAyOSwgMzQsIDIsIDI1MywgMTI3LCAyOSwgMzQsIDIsIDI1MywgMTI2LCAyOSwgMzQsIDIsIDI1MywgMTI1LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTI0LCAyOSwgMzQsIDIsIDI1MywgMTIzLCAyOSwgMzQsIDIsIDI1MywgMTIyLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTIxLCAyOSwgMzQsIDIsIDI1MywgMTIwLCAyOSwgMzQsIDIsIDI1MywgMTE5LCAyOSwgMzQsIDIsIDI1MywgMTE4LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTE3LCAyOSwgMzQsIDIsIDI1MywgMTE2LCAyOSwgMzQsIDIsIDI1MywgMTE1LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTE0LCAyOSwgMzQsIDIsIDI1MywgMTEzLCAyOSwgMzQsIDIsIDI1MywgMTEyLCAyOSwgMzQsIDIsIDI1MywgMTExLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTEwLCAyOSwgMzQsIDIsIDI1MywgMTA5LCAyOSwgMzQsIDIsIDI1MywgMTA4LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTA3LCAyOSwgMzQsIDIsIDI1MywgMTA2LCAyOSwgMzQsIDIsIDI1MywgMTA1LCAyOSwgMzQsIDIsIDI1MywgMTAzLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTAyLCAyOSwgMzQsIDIsIDI1MywgMTAxLCAyOSwgMzQsIDIsIDI1MywgMTAwLCAyOSwgMzQsIDIsIAotICAgIDI1MywgOTksIDI5LCAzNCwgMiwgMjUzLCA5NywgMjksIDM0LCAyLCAyNTMsIDk2LCAyOSwgMzQsIDIsIDI1MywgOTUsIDI5LCAKLSAgICAzNCwgMiwgMjUzLCA5NCwgMjksIDM0LCAyLCAyNTMsIDkyLCAyOSwgMzQsIDIsIDI1MywgOTEsIDI5LCAzNCwgMiwgMjUzLCAKLSAgICA5MCwgMjksIDM0LCAyLCAyNTMsIDU2LCAyOSwgMzQsIDIsIDI1MywgNTQsIDI5LCAzNCwgMiwgMjUzLCA1MiwgMjksIDM0LCAKLSAgICAyLCAyNTMsIDUwLCAyOSwgMzQsIDIsIDI1MywgNDgsIDI5LCAzNCwgMiwgMjUzLCA0NiwgMjksIDM0LCAyLCAyNTMsIDQ0LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgNDIsIDI5LCAzNCwgMiwgMjUzLCA0MCwgMjksIDM0LCAyLCAyNTMsIDM4LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMzYsIDI5LCAzNCwgMiwgMjUzLCAzMywgMjksIDM0LCAyLCAyNTMsIDMxLCAyOSwgMzQsIDIsIDI1MywgMjksIDI5LCAKLSAgICAzNCwgMiwgMjUzLCAyNywgMjksIDM0LCAyLCAyNTMsIDI1LCAyOSwgMzQsIDIsIDI1MywgMjMsIDI5LCAzNCwgMiwgMjUzLCAKLSAgICAyMSwgMjksIDM0LCAyLCAyNTMsIDE5LCAyOSwgMzQsIDIsIDI1MiwgMTkzLCAyOSwgMzQsIDIsIDI1MiwgMTkyLCAyOSwgMzQsIAotICAgIDIsIDI1MiwgMTkxLCAyOSwgMzQsIDIsIDI1MiwgMTkwLCAyOSwgMzQsIDIsIDI1MiwgMTg5LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgMTg4LCAyOSwgMzQsIDIsIDI1MiwgMTg2LCAyOSwgMzQsIDIsIDI1MiwgMTg1LCAyOSwgMzQsIDIsIDI1MiwgMTg0LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgMTgzLCAyOSwgMzQsIDIsIDI1MiwgMTgyLCAyOSwgMzQsIDIsIDI1MiwgMTgxLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTc5LCAyOSwgMzQsIDIsIDI1MiwgMTc4LCAyOSwgMzQsIDIsIDI1MiwgMTc0LCAyOSwgMzQsIDIsIDI1MiwgMTczLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTcxLCAyOSwgMzQsIDIsIDI1MiwgMTcwLCAyOSwgMzQsIDIsIDI1MiwgMTY5LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTY4LCAyOSwgMzQsIDIsIDI1MiwgMTY3LCAyOSwgMzQsIDIsIDI1MiwgMTY2LCAyOSwgMzQsIDIsIDI1MiwgMTY1LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTY0LCAyOSwgMzQsIDIsIDI1MiwgMTYzLCAyOSwgMzQsIDIsIDI1MiwgMTYyLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTYxLCAyOSwgMzQsIDIsIDI1MiwgMTYwLCAyOSwgMzQsIDIsIDI1MiwgMTU5LCAyOSwgMzQsIDIsIDI1MiwgMTU4LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTU3LCAyOSwgMzQsIDIsIDI1MiwgMTU2LCAyOSwgMzQsIDIsIDI1MiwgMTU1LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTU0LCAyOSwgMzQsIDIsIDI1MiwgMTUzLCAyOSwgMzQsIDIsIDI1MiwgMTUyLCAyOSwgMzQsIDIsIDI1MiwgMTUxLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTUwLCAyOSwgMzQsIDIsIDI1MiwgMTQ5LCAyOSwgMzQsIDIsIDI1MiwgMTQ4LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTQ3LCAyOSwgMzQsIDIsIDI1MiwgMTQ2LCAyOSwgMzQsIDIsIDI1MiwgMTQ1LCAyOSwgMzQsIDIsIDI1MiwgMTQ0LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTQzLCAyOSwgMzQsIDIsIDI1MiwgMTQyLCAyOSwgMzQsIDIsIDI1MiwgMTQxLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTQwLCAyOSwgMzQsIDIsIDI1MiwgMTM5LCAyOSwgMzQsIDIsIDI1MiwgMTM4LCAyOSwgMzQsIDIsIDI1MiwgMTM3LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTM2LCAyOSwgMzQsIDIsIDI1MiwgMTM1LCAyOSwgMzQsIDIsIDI1MiwgMTM0LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTMzLCAyOSwgMzQsIDIsIDI1MiwgMTMyLCAyOSwgMzQsIDIsIDI1MiwgMTMxLCAyOSwgMzQsIDIsIDI1MiwgMTMwLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTI5LCAyOSwgMzQsIDIsIDI1MiwgMTI4LCAyOSwgMzQsIDIsIDI1MiwgMTI3LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTI2LCAyOSwgMzQsIDIsIDI1MiwgMTI1LCAyOSwgMzQsIDIsIDI1MiwgMTI0LCAyOSwgMzQsIDIsIDI1MiwgMTIzLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTIyLCAyOSwgMzQsIDIsIDI1MiwgMTIxLCAyOSwgMzQsIDIsIDI1MiwgMTIwLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTE5LCAyOSwgMzQsIDIsIDI1MiwgMTE4LCAyOSwgMzQsIDIsIDI1MiwgMTE3LCAyOSwgMzQsIDIsIDI1MiwgMTE2LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTE1LCAyOSwgMzQsIDIsIDI1MiwgMTE0LCAyOSwgMzQsIDIsIDI1MiwgMTEzLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTEyLCAyOSwgMzQsIDIsIDI1MiwgMTExLCAyOSwgMzQsIDIsIDI1MiwgMTEwLCAyOSwgMzQsIDIsIDI1MiwgMTA5LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTA4LCAyOSwgMzQsIDIsIDI1MiwgMTA3LCAyOSwgMzQsIDIsIDI1MiwgMTA2LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTA1LCAyOSwgMzQsIDIsIDI1MiwgMTA0LCAyOSwgMzQsIDIsIDI1MiwgMTAzLCAyOSwgMzQsIDIsIDI1MiwgMTAyLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTAxLCAyOSwgMzQsIDIsIDI1MiwgMTAwLCAyOSwgMzQsIDIsIDI1MiwgOTksIDI5LCAzNCwgMiwgCi0gICAgMjUyLCA5OCwgMjksIDM0LCAyLCAyNTIsIDk3LCAyOSwgMzQsIDIsIDI1MiwgOTYsIDI5LCAzNCwgMiwgMjUyLCA5NSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDk0LCAyOSwgMzQsIDIsIDI1MiwgOTMsIDI5LCAzNCwgMiwgMjUyLCA5MiwgMjksIDM0LCAyLCAyNTIsIAotICAgIDkxLCAyOSwgMzQsIDIsIDI1MiwgOTAsIDI5LCAzNCwgMiwgMjUyLCA4OSwgMjksIDM0LCAyLCAyNTIsIDg4LCAyOSwgMzQsIAotICAgIDIsIDI1MiwgODcsIDI5LCAzNCwgMiwgMjUyLCA4NiwgMjksIDM0LCAyLCAyNTIsIDg1LCAyOSwgMzQsIDIsIDI1MiwgODQsIAotICAgIDI5LCAzNCwgMiwgMjUyLCA4MywgMjksIDM0LCAyLCAyNTIsIDgyLCAyOSwgMzQsIDIsIDI1MiwgODEsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCA4MCwgMjksIDM0LCAyLCAyNTIsIDc5LCAyOSwgMzQsIDIsIDI1MiwgNzgsIDI5LCAzNCwgMiwgMjUyLCA3NywgMjksIAotICAgIDM0LCAyLCAyNTIsIDc2LCAyOSwgMzQsIDIsIDI1MiwgNzUsIDI5LCAzNCwgMiwgMjUyLCA3NCwgMjksIDM0LCAyLCAyNTIsIAotICAgIDczLCAyOSwgMzQsIDIsIDI1MiwgNzIsIDI5LCAzNCwgMiwgMjUyLCA3MSwgMjksIDM0LCAyLCAyNTIsIDcwLCAyOSwgMzQsIAotICAgIDIsIDI1MiwgNjksIDI5LCAzNCwgMiwgMjUyLCA2OCwgMjksIDM0LCAyLCAyNTIsIDY3LCAyOSwgMzQsIDIsIDI1MiwgNjYsIAotICAgIDI5LCAzNCwgMiwgMjUyLCA2NSwgMjksIDM0LCAyLCAyNTIsIDY0LCAyOSwgMzQsIDIsIDI1MiwgNjMsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCA2MiwgMjksIDM0LCAyLCAyNTIsIDYxLCAyOSwgMzQsIDIsIDI1MiwgNjAsIDI5LCAzNCwgMiwgMjUyLCA1OSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDU4LCAyOSwgMzQsIDIsIDI1MiwgNTcsIDI5LCAzNCwgMiwgMjUyLCA1NiwgMjksIDM0LCAyLCAyNTIsIAotICAgIDU1LCA2MywgMjksIDM0LCAyLCAyNTIsIDU0LCAyNDksIDI1NSwgMjksIDM0LCAyLCAyNTIsIDUzLCAyNDUsIDUxLCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNTIsIDc0LCAyOSwgMzQsIDIsIDI1MiwgNTEsIDI0MCwgMTc0LCAyOSwgMzQsIDIsIDI1MiwgNTAsIAotICAgIDIzNywgMTcxLCAyOSwgMzQsIDIsIDI1MiwgNDksIDIzMCwgMTg0LCAyOSwgMzQsIDIsIDI1MiwgNDgsIDIzMCwgNTQsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA0NywgMTU5LCAyOSwgMzQsIDIsIDI1MiwgNDYsIDIyOCwgMTE4LCAyOSwgMzQsIDIsIDI1MiwgNDUsIAotICAgIDIyOCwgMTE3LCAyOSwgMzQsIDIsIDI1MiwgNDQsIDIyOCwgMTE2LCAyOSwgMzQsIDIsIDI1MiwgNDMsIDIyOCwgMTE1LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNDIsIDIwNCwgMTQ0LCAyOSwgMzQsIDIsIDI1MiwgNDEsIDIwMywgMTk2LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgNDAsIDIwMywgMTI0LCAyOSwgMzQsIDIsIDI1MiwgMzksIDIyMCwgMzYsIDI5LCAzNCwgMiwgMjUyLCAzOCwgMjUxLCAxNDcsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAzNywgMjQ4LCAxOTksIDI5LCAzNCwgMiwgMjUyLCAzNiwgMjQ0LCAxMjIsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAzNSwgMjQwLCAxODIsIDI5LCAzNCwgMiwgMjUyLCAzNCwgMjMwLCAxNjEsIDI5LCAzNCwgMiwgMjUyLCAzMywgMjksIAotICAgIDM0LCAyLCAyNTIsIDMyLCAyOSwgMzQsIDIsIDI1MiwgMzEsIDI5LCAzNCwgMiwgMjUyLCAzMCwgMjksIDM0LCAyLCAyNTIsIAotICAgIDI5LCAyOSwgMzQsIDIsIDI1MiwgMjgsIDI5LCAzNCwgMiwgMjUyLCAyNywgMjksIDM0LCAyLCAyNTIsIDI2LCAyNDUsIDU4LCAKLSAgICA0LCA2MywgMjQ1LCA1OCwgNCwgNzQsIDI0NSwgNTgsIDQsIDc1LCAyNDUsIDU4LCA0LCA3OCwgMjQ1LCA1OCwgNCwgNjgsIAotICAgIDI0NSwgNTgsIDQsIDIzMCwgMTgxLCAyNDUsIDU4LCA0LCAyMzAsIDEwMSwgMjQ1LCA1OCwgNCwgMTczLCAyNDUsIDU4LCA0LCAKLSAgICAyMjksIDIwMSwgMjQ1LCA1OCwgNCwgMjI5LCAxMDAsIDI0NSwgNTgsIDQsIDIyOSwgMjYsIDI0NSwgNTgsIDQsIDIyOCwgCi0gICAgMjA5LCAyNDUsIDU4LCA0LCAyMjgsIDExMywgMjQ1LCA1OCwgNCwgMjI3LCAyMzQsIDI0NSwgNTgsIDQsIDIyNywgMTQ4LCAKLSAgICAyNDUsIDU4LCA0LCAyMjcsIDQ5LCAyNDUsIDU4LCA0LCAyMjYsIDIzOSwgMjQ1LCA1OCwgNCwgMTkyLCAyNDUsIDU4LCA0LCAKLSAgICAyMjUsIDIwLCAyNDUsIDU4LCA0LCAyMjQsIDE1NSwgMjQ1LCA1OCwgNCwgMjI0LCA4MiwgMjQ1LCA1OCwgNCwgMjIzLCAyNDYsIAotICAgIDI0NSwgNTgsIDQsIDIwMSwgMjAxLCAyNDUsIDU4LCA0LCAyMjIsIDI0MCwgMjQ1LCA1OCwgNCwgMjIyLCAxMDAsIDI0NSwgCi0gICAgNTgsIDQsIDIyMSwgMTkxLCAyNDUsIDU4LCA0LCAyMjEsIDg0LCAyNDUsIDU4LCA0LCAxODUsIDI0NSwgNTgsIDQsIDIxOSwgCi0gICAgMzQsIDI0NSwgNTgsIDQsIDIxOCwgMTY3LCAyNDUsIDU4LCA0LCAyMTgsIDY5LCAyNDUsIDU4LCA0LCAyMTcsIDE5MSwgMjQ1LCAKLSAgICA1OCwgNCwgMjE2LCAyMjAsIDI0NSwgNTgsIDQsIDIxNiwgMTU4LCAyNDUsIDU4LCA0LCAyMTYsIDU3LCAyNDUsIDU4LCA0LCAKLSAgICAyMTUsIDIyNywgMjQ1LCA1OCwgNCwgMjE1LCAxNDUsIDI0NSwgNTgsIDQsIDIxNSwgMzYsIDI0NSwgNTgsIDQsIDIxNCwgCi0gICAgMTc3LCAyNDUsIDU4LCA0LCAyMTIsIDE2MiwgMjQ1LCA1OCwgNCwgMjEyLCAxMywgMjQ1LCA1OCwgNCwgMjExLCAxMCwgMjQ1LCAKLSAgICA1OCwgNCwgMjEwLCAyMiwgMjQ1LCA1OCwgNCwgMjA5LCAxODcsIDI0NSwgNTgsIDQsIDIwOSwgMiwgMjQ1LCA1OCwgNCwgCi0gICAgMTM1LCAyNDUsIDU4LCA0LCAyMDcsIDIwMywgMjQ1LCA1OCwgNCwgMjA0LCAxMTEsIDI0NSwgNTgsIDQsIDIwNCwgNjIsIAotICAgIDI0NSwgNTgsIDQsIDIwNCwgMzAsIDI0NSwgNTgsIDQsIDIwNCwgMCwgMjQ1LCA1OCwgNCwgMjAzLCAxODIsIDI0NSwgNTgsIAotICAgIDQsIDIwMywgMTc2LCAyNDUsIDU4LCA0LCAyMDIsIDExNiwgMjQ1LCA1OCwgNCwgMjAyLCAxNywgMjMxLCA1MSwgMjUwLCAKLSAgICAxMzAsIDEsIDI1MSwgMjgsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNDgsIDEwNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIAotICAgIDIzOCwgNjcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNDQsIDE3NywgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIzNywgNjcsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDQsIDcwLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjAyLCA5NSwgMjMxLCA1MSwgCi0gICAgMjUwLCAxMzAsIDEsIDIzNywgMTksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDksIDEyOCwgMjMxLCA1MSwgMjUwLCAxMzAsIAotICAgIDEsIDIwMiwgMjM1LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI5LCAyNTAsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjgsIAotICAgIDE5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI0LCAyNDcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjEsIDQwLCAyMzEsIAotICAgIDUxLCAyNTAsIDEzMCwgMSwgMjE0LCAyNDksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNTAsIDMsIDIzMSwgNTEsIDI1MCwgCi0gICAgMTMwLCAxLCAyMTksIDM0LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjE1LCAyNiwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIAotICAgIDIxNywgNjksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMTYsIDkxLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjEyLCAyNTUsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDksIDIwMSwgMjMxLCA1MSwgMjUwLCAxMzAsIDIxNCwgMTY4LCA1NCwgMjMxLCA1MSwgCi0gICAgMjUwLCAxMzAsIDQyLCAxMDUsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTA4LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIAotICAgIDE0NywgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDksIDE1MiwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDcsIDE1MSwgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTE4LCAyMDksIDM2LCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAyMTksIDEzNCwgMSwgMjUxLCAyOCwgMjE5LCAxMzQsIAotICAgIDEsIDI0OCwgMTA1LCAyMTksIDEzNCwgMSwgMjM4LCA2NywgMjE5LCAxMzQsIDEsIDI0NCwgMTc3LCAyMTksIDEzNCwgMSwgCi0gICAgMjM3LCA2NywgMjE5LCAxMzQsIDEsIDIwNCwgNzAsIDIxOSwgMTM0LCAxLCAyMDIsIDk1LCAyMTksIDEzNCwgMSwgMjM3LCAKLSAgICAxOSwgMjE5LCAxMzQsIDEsIDIwOSwgMTI4LCAyMTksIDEzNCwgMSwgMjAyLCAyMzUsIDIxOSwgMTM0LCAxLCAyMjksIDI1MCwgCi0gICAgMjE5LCAxMzQsIDEsIDIyOCwgMTksIDIxOSwgMTM0LCAxLCAyMjQsIDI0NywgMjE5LCAxMzQsIDEsIDQ2LCAyMjEsIDQwLCAKLSAgICAyMTksIDEzNCwgMSwgMjIxLCA0MCwgMjE5LCAxMzQsIDEsIDIxNCwgMjQ5LCAyMTksIDEzNCwgMSwgMjUwLCAzLCAyMTksIAotICAgIDEzNCwgMSwgMjE5LCAzNCwgMjE5LCAxMzQsIDEsIDIxNSwgMjYsIDIxOSwgMTM0LCAxLCAyMTcsIDY5LCAyMTksIDEzNCwgMSwgCi0gICAgMjE2LCA5MSwgMjE5LCAxMzQsIDEsIDIxMiwgMjU1LCAyMTksIDEzNCwgMSwgMjA5LCAyMDEsIDIxOSwgMTM0LCAyMjcsIAotICAgIDIxNywgMjM5LCAyMTIsIDIxOSwgMTM0LCAyMTYsIDExLCAyMzksIDIxMiwgMjE5LCAxMzQsIDQyLCAxMDUsIDIxOSwgMTM0LCAKLSAgICA0MiwgMTA4LCAyMTksIDEzNCwgNDIsIDE0NywgMjE5LCAxMzQsIDQyLCAxNDksIDIxOSwgMTM0LCA0MiwgMTcwLCAyMTksIAotICAgIDEzNCwgNDIsIDIwOSwgMTUyLCAyMTksIDEzNCwgNDIsIDIwNywgMTUxLCAyMjMsIDEwMiwgMSwgNDYsIDI1MSwgMjgsIDIyMywgCi0gICAgMTAyLCAxLCAyNTEsIDI4LCAyMjMsIDEwMiwgMSwgNDYsIDI0OCwgMTA1LCAyMjMsIDEwMiwgMSwgMjQ4LCAxMDUsIDIyMywgCi0gICAgMTAyLCAxLCAyMzgsIDY3LCAyMjMsIDEwMiwgMSwgMjQ0LCAxNzcsIDIyMywgMTAyLCAxLCA0NiwgMjM3LCA2NywgMjIzLCAKLSAgICAxMDIsIDEsIDIzNywgNjcsIDIyMywgMTAyLCAxLCAyMDQsIDcwLCAyMjMsIDEwMiwgMSwgMjAyLCA5NSwgMjIzLCAxMDIsIDEsIAotICAgIDIzNywgMTksIDIyMywgMTAyLCAxLCAyMDksIDEyOCwgMjIzLCAxMDIsIDEsIDQ2LCAyMDIsIDIzNSwgMjIzLCAxMDIsIDEsIAotICAgIDIwMiwgMjM1LCAyMjMsIDEwMiwgMSwgNDYsIDIyOSwgMjUwLCAyMjMsIDEwMiwgMSwgMjI5LCAyNTAsIDIyMywgMTAyLCAxLCAKLSAgICA0NiwgMjI4LCAxOSwgMjIzLCAxMDIsIDEsIDIyOCwgMTksIDIyMywgMTAyLCAxLCA0NiwgMjI0LCAyNDcsIDIyMywgMTAyLCAKLSAgICAxLCAyMjQsIDI0NywgMjIzLCAxMDIsIDEsIDQ2LCAyMjEsIDQwLCAyMjMsIDEwMiwgMSwgMjIxLCA0MCwgMjIzLCAxMDIsIDEsIAotICAgIDIxNCwgMjQ5LCAyMjMsIDEwMiwgMSwgMjUwLCAzLCAyMjMsIDEwMiwgMSwgMjE5LCAzNCwgMjIzLCAxMDIsIDEsIDIxNSwgCi0gICAgMjYsIDIyMywgMTAyLCAxLCAyMTcsIDY5LCAyMjMsIDEwMiwgMSwgMjE2LCA5MSwgMjIzLCAxMDIsIDEsIDQ2LCAyMTIsIAotICAgIDI1NSwgMjIzLCAxMDIsIDEsIDIxMiwgMjU1LCAyMjMsIDEwMiwgMSwgMjA5LCAyMDEsIDIyMywgMTAyLCA0MiwgMTA1LCAKLSAgICAyMjMsIDEwMiwgNDIsIDEwOCwgMjIzLCAxMDIsIDQyLCAxNDcsIDIyMywgMTAyLCA0MiwgMTQ5LCAyMjMsIDEwMiwgMjQ1LCAKLSAgICAxMTYsIDQyLCAxNDksIDIyMywgMTAyLCA0MiwgMTcwLCAyMjMsIDEwMiwgNDIsIDIwOSwgMTUyLCAyMjMsIDEwMiwgNDIsIAotICAgIDIwNywgMTUxLCAyMjMsIDEwMiwgNDIsIDExOCwgMjM2LCAxMSwgMjM3LCA3OCwgMSwgMjUxLCAyOCwgMjM3LCA3OCwgMSwgCi0gICAgMjQ4LCAxMDUsIDIzNywgNzgsIDEsIDIzOCwgNjcsIDIzNywgNzgsIDEsIDI0NCwgMTc2LCAyMzcsIDc4LCAxLCAyMzcsIDY3LCAKLSAgICAyMzcsIDc4LCAxLCAyMDQsIDcwLCAyMzcsIDc4LCAxLCAyMDIsIDk0LCAyMzcsIDc4LCAxLCAyMzcsIDE5LCAyMzcsIDc4LCAKLSAgICAxLCAyMDksIDEyOCwgMjM3LCA3OCwgMSwgMjAyLCAyMzUsIDIzNywgNzgsIDEsIDIyOSwgMjUwLCAyMzcsIDc4LCAxLCAyMjgsIAotICAgIDE5LCAyMzcsIDc4LCAxLCAyMjQsIDI0NywgMjM3LCA3OCwgMSwgMjIxLCA0MCwgMjM3LCA3OCwgMSwgMjE0LCAyNDksIDIzNywgCi0gICAgNzgsIDEsIDI1MCwgMiwgMjM3LCA3OCwgMSwgMjE5LCAzNCwgMjM3LCA3OCwgMSwgMjE1LCAyNiwgMjM3LCA3OCwgMSwgMjE3LCAKLSAgICA2OSwgMjM3LCA3OCwgMSwgMjEyLCAyNTUsIDIzNywgNzgsIDEsIDIwOSwgMjAxLCAyMzcsIDc4LCA0MiwgMTA1LCAyMzcsIAotICAgIDc4LCA0MiwgMTcwLCAyMzcsIDc4LCA0MiwgMjA5LCAxNTIsIDIzNywgNzgsIDQyLCAyMDcsIDE1MSwgMjM3LCA3OCwgNDIsIAotICAgIDExOCwgMjM2LCAxMSwgMjE4LCAxNzgsIDEsIDI1MSwgMjUsIDIxOCwgMTc4LCAxLCAyNDgsIDEwOCwgMjE4LCAxNzgsIDEsIAotICAgIDIzOCwgMjM3LCAyMTgsIDE3OCwgMSwgMjQ0LCAzOSwgMjE4LCAxNzgsIDEsIDIzNywgNjcsIDIxOCwgMTc4LCAxLCAyMDQsIAotICAgIDc3LCAyMTgsIDE3OCwgMSwgMjAyLCAxMDksIDIxOCwgMTc4LCAxLCAyMzcsIDIxLCAyMTgsIDE3OCwgMSwgMjA5LCAxMzIsIAotICAgIDIxOCwgMTc4LCAxLCAyMDIsIDIzNiwgMjE4LCAxNzgsIDEsIDIzMCwgMjIsIDIxOCwgMTc4LCAxLCAyMjgsIDI1LCAyMTgsIAotICAgIDE3OCwgMSwgMjI0LCAyNDcsIDIxOCwgMTc4LCAxLCAyMjEsIDQwLCAyMTgsIDE3OCwgMSwgMjEzLCAxMzcsIDIxOCwgMTc4LCAKLSAgICAxLCAyNTEsIDU5LCAyMTgsIDE3OCwgMSwgMjE5LCAzNCwgMjE4LCAxNzgsIDEsIDIxNSwgMjcsIDIxOCwgMTc4LCAxLCAyMTcsIAotICAgIDc0LCAyMTgsIDE3OCwgMSwgMjE1LCAyMDAsIDIxOCwgMTc4LCAxLCAyMTIsIDI1NSwgMjE4LCAxNzgsIDEsIDIwOSwgMjA3LCAKLSAgICAyMTgsIDE3OCwgNDIsIDEwNSwgMjE4LCAxNzgsIDQyLCAyMDksIDE1MiwgMjE4LCAxNzgsIDQyLCAyMDcsIDE1MSwgMjE4LCAKLSAgICAxNzgsIDQyLCAxMTgsIDIzNiwgMTEsIDIxOCwgMTc4LCA0MiwgMTA4LCAyMTgsIDE3OCwgNDIsIDE0NywgMjE4LCAxNzgsIAotICAgIDIwMywgMjM4LCAyMTMsIDEzMCwgMjI2LCAxOTYsIDEsIDYzLCAyMjYsIDE5NiwgMSwgMjQ5LCAyNTUsIDIyNiwgMTk2LCAxLCAKLSAgICAyMzksIDc1LCAyMjYsIDE5NiwgMSwgMjQ1LCA1MSwgMjI2LCAxOTYsIDEsIDc0LCAyMjYsIDE5NiwgMSwgMjA2LCAxNjQsIAotICAgIDIyNiwgMTk2LCAxLCA3NSwgMjI2LCAxOTYsIDEsIDIwMywgMTI0LCAyMjYsIDE5NiwgMSwgMjMwLCA1NCwgMjI2LCAxOTYsIAotICAgIDEsIDE1OSwgMjI2LCAxOTYsIDEsIDIyNiwgMTg1LCAyMjYsIDE5NiwgMSwgMjIzLCAxNjMsIDIyNiwgMTk2LCAxLCA3OCwgCi0gICAgMjI2LCAxOTYsIDEsIDE0NiwgMjI2LCAxOTYsIDEsIDIxMSwgMTY3LCAyMjYsIDE5NiwgMSwgMjEwLCA2OSwgMjI2LCAxOTYsIAotICAgIDEsIDY4LCAyMjYsIDE5NiwgMSwgMjQwLCAxNzQsIDIyNiwgMTk2LCAxLCAyMTcsIDEzNCwgMjI2LCAxOTYsIDEsIDE5NCwgCi0gICAgMjI2LCAxOTYsIDEsIDIwNywgMjQ0LCAyMjYsIDE5NiwgMSwgMjUwLCAyMzEsIDIyNiwgMTk2LCAxLCAyNDEsIDkyLCAyMjYsIAotICAgIDE5NiwgMSwgMjI2LCAxOTksIDIyNiwgMTk2LCAxLCAyMjEsIDIyOCwgMjI2LCAxOTYsIDEsIDI0NywgMTI1LCAyMjYsIDE5NiwgCi0gICAgMjA4LCA4MiwgODIsIDEyOSwgMjM2LCAyNTMsIDEsIDYzLCAxMjksIDIzNiwgMjUzLCAxLCA3NCwgMTI5LCAyMzYsIDI1MywgCi0gICAgMSwgNzUsIDEyOSwgMjM2LCAyNTMsIDEsIDc4LCAxMjksIDIzNiwgMjUzLCAxLCAxOTgsIDEyOSwgMjM2LCAyNTMsIDEsIAotICAgIDIwNCwgMTExLCAxMjksIDIzNiwgMjUzLCAxLCAyNDksIDMyLCAxMjksIDIzNiwgMjUzLCAxLCAyNDksIDMxLCAxMjksIDIzNiwgCi0gICAgMjUzLCAxLCAxODUsIDEyOSwgMjM2LCAyNTMsIDEsIDE5MiwgMTI5LCAyMzYsIDI1MywgMSwgMjAxLCAyMDEsIDEyOSwgMjM2LCAKLSAgICAyNTMsIDEsIDIyMywgMTEwLCAxMjksIDIzNiwgMjUzLCAxLCAyMjIsIDI0MCwgMTI5LCAyMzYsIDI1MywgMSwgMjIyLCAyMzksIAotICAgIDEyOSwgMjM2LCAyNTMsIDEsIDIxNiwgMjIwLCAxMjksIDIzNiwgMjUzLCAxLCAyMTYsIDIxOSwgMTI5LCAyMzYsIDI1MywgMSwgCi0gICAgMjI4LCAxMTMsIDEyOSwgMjM2LCAyNTMsIDEsIDIyOSwgMTQ0LCAxMjksIDIzNiwgMjUzLCAxLCAyMzcsIDEyLCAxMjksIAotICAgIDIzNiwgMjUzLCAxLCAyMTUsIDM2LCAxMjksIDIzNiwgMjUzLCAxLCAyMTUsIDM1LCAxMjksIDIzNiwgMjUzLCAxLCAyMTQsIAotICAgIDE3NywgMTI5LCAyMzYsIDI1MywgMSwgMTczLCAxMjksIDIzNiwgMjUzLCAxLCAyMTcsIDEyNiwgMTI5LCAyMzYsIDI1MywgMSwgCi0gICAgMjEwLCAyMiwgMTI5LCAyMzYsIDI1MywgMSwgMjEwLCAyMSwgMTI5LCAyMzYsIDI1MywgMSwgMjA5LCAxODcsIDEyOSwgMjM2LCAKLSAgICAyNTMsIDEsIDIwOSwgMTg2LCAxMjksIDIzNiwgMjUzLCAxLCAxMzUsIDEyOSwgMjM2LCAyNTMsIDEsIDI0NCwgMjEyLCAxMjksIAotICAgIDIzNiwgMjUzLCAxNiwgMjA1LCAyMjQsIDEyOSwgMjM2LCAyNTMsIDE2LCAyMDUsIDIyMywgMTI5LCAxOTEsIDEsIDYzLCAKLSAgICAxMjksIDE5MSwgMSwgNzQsIDEyOSwgMTkxLCAxLCA3NSwgMTI5LCAxOTEsIDEsIDc4LCAxMjksIDE5MSwgMSwgMTk4LCAxMjksIAotICAgIDE5MSwgMSwgMjA0LCAxMTEsIDEyOSwgMTkxLCAxLCAyNDksIDMyLCAxMjksIDE5MSwgMSwgMTg1LCAxMjksIDE5MSwgMSwgCi0gICAgMTkyLCAxMjksIDE5MSwgMSwgMjAxLCAyMDEsIDEyOSwgMTkxLCAxLCAyMjIsIDI0MCwgMTI5LCAxOTEsIDEsIDIxNiwgMjIwLCAKLSAgICAxMjksIDE5MSwgMSwgMjI4LCAxMTMsIDEyOSwgMTkxLCAxLCAyMjksIDE0NCwgMTI5LCAxOTEsIDEsIDIzNywgMTIsIDEyOSwgCi0gICAgMTkxLCAxLCAyMTUsIDM2LCAxMjksIDE5MSwgMSwgMjUwLCAxMjYsIDIxNSwgMzYsIDEyOSwgMTkxLCAxLCAyMTQsIDE3NywgCi0gICAgMTI5LCAxOTEsIDEsIDE3MywgMTI5LCAxOTEsIDEsIDIxNywgMTI2LCAxMjksIDE5MSwgMSwgMjEwLCAyMiwgMTI5LCAxOTEsIAotICAgIDEsIDIwOSwgMTg3LCAxMjksIDE5MSwgMSwgMTM1LCAxMjksIDE5MSwgMSwgMjQ0LCAyMTIsIDEyOSwgMTkxLCAyMzksIDEzOCwgCi0gICAgMjQxLCAxMTMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDEyOSwgMTkxLCAyMjcsIDM2LCAKLSAgICAyMTUsIDIzMywgMTI5LCAxOTEsIDIyNywgMzYsIDIzMSwgNTYsIDEyOSwgMTkxLCA0MiwgMTA1LCAxMjksIDE5MSwgNDIsIAotICAgIDEwOCwgMTI5LCAxOTEsIDQyLCAxNDcsIDEyOSwgMTkxLCA0MiwgMTQ5LCAxMjksIDE5MSwgNDIsIDE3MCwgMTI5LCAxOTEsIAotICAgIDQyLCAxOTUsIDEyOSwgMTkxLCA0MiwgMjEzLCAxMTEsIDEyOSwgMTkxLCA0MiwgMTk5LCAxMjksIDE5MSwgNDIsIDIyMiwgCi0gICAgNjMsIDEyOSwgMTkxLCA0MiwgMjA5LCAxNTIsIDEyOSwgMTkxLCA0MiwgMjA3LCAxNTEsIDEyOSwgMTkxLCA0MiwgMjA5LCAKLSAgICA1MywgMTI5LCAxOTEsIDQyLCAyMzksIDE1MywgMTI5LCAxOTEsIDQyLCAyNDAsIDE4LCAxMjksIDE5MSwgNDIsIDIxMiwgNzQsIAotICAgIDEyOSwgMTkxLCA0MiwgMjEzLCAxMDUsIDEyOSwgMTkxLCA0MiwgMTE4LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDEyMCwgCi0gICAgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMjYsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIAotICAgIDEyOSwgMTkxLCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgMTI5LCAKLSAgICAxOTEsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgMTI5LCAxOTEsIAotICAgIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDExOCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjAsIDIwOSwgCi0gICAgMzYsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMTQ3LCAyMDksIDM2LCAxMjksIAotICAgIDE5MSwgNDIsIDIzOSwgMjMzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMiwgODgsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgCi0gICAgMjEzLCAxMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjIyLCAKLSAgICA2NCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDcsIDE1MiwgCi0gICAgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDksIDU0LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMTU0LCAyMDksIDM2LCAKLSAgICAxMjksIDE5MSwgNDIsIDI0MCwgMTksIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEyLCA3NSwgMjA5LCAzNiwgMTI5LCAxOTEsIAotICAgIDQyLCAyMTMsIDEwNiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyNDEsIDEzNSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAKLSAgICAyMjIsIDU5LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDExOCwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjAsIAotICAgIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgCi0gICAgMTQ3LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIAotICAgIDE5MSwgNDIsIDIxMiwgODgsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTIsIDIwOSwgCi0gICAgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjIyLCA2NCwgMjM2LCAKLSAgICAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMTgsIDIwNywgMTU3LCAxMjksIDE5MSwgMjM5LCAxMzgsIDEyMCwgCi0gICAgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTI2LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMzksIAotICAgIDE0NywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjM5LCAyMzMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAKLSAgICAxMzgsIDIxMiwgODgsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIxMywgMTEyLCAyMDcsIDE1NiwgMTI5LCAxOTEsIAotICAgIDIzOSwgMTM4LCAyNDEsIDE0MywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjIyLCA2NCwgMjA3LCAxNTYsIDEyOSwgCi0gICAgMTkxLCAyMzksIDEzOCwgMjA5LCAxNTMsIDIwNywgMTU2LCAyMjksIDEzMSwgMSwgNjMsIDIyOSwgMTMxLCAyMiwgMiwgNzUsIAotICAgIDIyOSwgMTMxLCAyMiwgMiwgNjgsIDIyOSwgMTMxLCAyMiwgMiwgMTI1LCAxNDYsIDIyOSwgMTMxLCAyMiwgMiwgNzQsIDIyOSwgCi0gICAgMTMxLCAyMiwgMiwgNzgsIDIyOSwgMTMxLCAyMiwgMjI3LCAxOTYsIDgyLCAyMjksIDEzMSwgMiwgNTIsIDIxNSwgMjUzLCAKLSAgICA1NiwgMjI5LCAxMzEsIDIsIDI1MCwgMTgwLCAyMjksIDEzMSwgMiwgMjA1LCAxOTksIDIyOSwgMTMxLCAxLCAxNzMsIDIyOSwgCi0gICAgMTMxLCAxLCAyMjksIDE0NCwgMjI5LCAxMzEsIDEsIDIzOSwgOCwgMjI5LCAxMzEsIDEsIDIzOCwgMTE5LCAyMjksIDEzMSwgCi0gICAgMSwgMjQ3LCA5MiwgMjI5LCAxMzEsIDEsIDI0NiwgMTk5LCAyMjksIDEzMSwgMSwgMjMwLCAxODEsIDIyOSwgMTMxLCAxLCAKLSAgICAyMjEsIDExLCAyMjksIDEzMSwgMSwgMjA3LCAyNDEsIDIyOSwgMTMxLCAxLCAyMDcsIDIyOSwgMjI5LCAxMzEsIDEsIDI0NCwgCi0gICAgMTIwLCAyMjksIDEzMSwgMSwgMjQ0LCAxMDQsIDIyOSwgMTMxLCAxLCAyMjEsIDIyNywgMjI5LCAxMzEsIDEsIDIxMCwgMjIsIAotICAgIDIyOSwgMTMxLCAxLCAyMDksIDEwOCwgMjI5LCAxMzEsIDEsIDI0NCwgMjEyLCAyMjksIDEzMSwgMSwgMjQ0LCAxLCAyMjksIAotICAgIDEzMSwgMSwgMjAxLCAyMDEsIDIyOSwgMTMxLCAxLCAxODUsIDIyOSwgMTMxLCAxLCAyMTgsIDIwOCwgMjI5LCAxMzEsIDEsIAotICAgIDI0OSwgMzIsIDIyOSwgMTMxLCAxLCAyNDgsIDk4LCAyMjksIDEzMSwgMSwgMTkyLCAyMjksIDEzMSwgMSwgMTk4LCAyMjksIAotICAgIDEzMSwgMSwgMjE2LCAyMjAsIDIyOSwgMTMxLCAxLCAyMjgsIDExMywgMjI5LCAxMzEsIDEsIDIwNiwgODYsIDIyOSwgMTMxLCAKLSAgICAxLCAyMTMsIDkwLCAyMjksIDEzMSwgMSwgMjExLCAxNjQsIDIyOSwgMTMxLCAxLCAyMTUsIDM2LCAyMjksIDEzMSwgMSwgCi0gICAgMjAyLCAxMTYsIDIyOSwgMTMxLCAxLCAxNTIsIDIyOSwgMTMxLCAxLCAyMjksIDQ3LCAyMjksIDEzMSwgMSwgMjA3LCAyMDksIAotICAgIDIyOSwgMTMxLCAyLCAyNDgsIDIzMSwgNTUsIDIyOSwgMTMxLCAyLCAyNDcsIDEzLCAyMjksIDEzMSwgMiwgNzAsIDU2LCAKLSAgICAyMjksIDEzMSwgMjA1LCAyMDQsIDIyOSwgMTMxLCAxNywgMTA1LCAyMjksIDEzMSwgMTcsIDEwOCwgMjI5LCAxMzEsIDE3LCAKLSAgICAxNDcsIDIyOSwgMTMxLCAxNywgMTQ5LCAyMjksIDEzMSwgNDIsIDIwOSwgMTUyLCAyMjksIDEzMSwgNDIsIDIwNywgMTUxLCAKLSAgICAyMjksIDEzMSwgNDIsIDExOCwgMjM2LCAxMSwgMjI5LCAxMzEsIDQyLCAxMTgsIDIwOSwgMzYsIDIyOSwgMTMxLCAyMTcsIAotICAgIDE3OSwgMjQzLCA4NSwgMjI5LCAxMzEsIDIxNywgMTc5LCA1LCAyNDYsIDYxLCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NiwgCi0gICAgNjEsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ1LCAxMzksIDE0MiwgMjI5LCAxMzEsIDIxNywgMTc5LCAyMjUsIDExNiwgMjI5LCAKLSAgICAxMzEsIDIxNywgMTc5LCAyMjcsIDUsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ0LCAxNjYsIDIyOSwgMTMxLCAyMTcsIDE3OSwgCi0gICAgNTIsIDI0NCwgMTY2LCAyMjksIDEzMSwgMjE3LCAxNzksIDIyNywgMTA4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzcsIDY3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjgsIDE5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzcsIDE5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjQsIDI0NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjE3LCA2OSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA0LCA3MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjEyLCAyNTUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIxNiwgOTEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDI0OCwgMTA1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDksIDIwMSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjE0LCAyMjUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyOSwgMjUwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMjEsIDQwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjksIDEyNiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjE1LCAyNiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjE0LCAyNDksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDI0MCwgNjAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI1MSwgMzAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDI1MCwgMiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjQzLCAyNTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIzOCwgNjcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0NCwgMTc3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzgsIDEwNywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCAxMjgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIwMiwgOTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0MywgMjUxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMDIsIDIzNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCA5NCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjA5LCA3MywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgNDIsIDEwNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgNDIsIAotICAgIDI0MCwgMTgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDE0MSwgMjMxLCAzMSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzNywgCi0gICAgNDMsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMjgsIDI4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM3LCAxNDgsIDM4LCAKLSAgICAxNTMsIDI1MCwgMTQxLCAxLCAyMjUsIDUsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMTcsIDExOSwgMzgsIDE1MywgMjUwLCAKLSAgICAxNDEsIDEsIDIwNCwgNzAsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE1LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgCi0gICAgMjE2LCAxMjIsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDgsIDEzOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgMTY5LCAKLSAgICAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNiwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzMCwgMjIsIDM4LCAxNTMsIAotICAgIDI1MCwgMTQxLCAxLCAyMjEsIDE3OCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIyOSwgMTQwLCAzOCwgMTUzLCAyNTAsIDE0MSwgCi0gICAgMSwgMjE1LCAyOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDAsIDQ3LCAKLSAgICAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjUxLCAzMCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI1MSwgNTksIDM4LCAxNTMsIAotICAgIDI1MCwgMTQxLCAxLCAyNDQsIDIwNywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzOCwgMTgxLCAzOCwgMTUzLCAyNTAsIDE0MSwgCi0gICAgMSwgMjQ0LCAxODQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzgsIDExNCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgCi0gICAgMjUxLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjAyLCAxMDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDEwMCwgMzgsIAotICAgIDE1MywgMjUwLCAxNDEsIDEsIDIwMywgNDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDg4LCAzOCwgMTUzLCAyNTAsIAotICAgIDE0MSwgMSwgMjAyLCAxMTAsIDM4LCAxNTMsIDI1MCwgMTQxLCA0MiwgMTA1LCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDIwOSwgCi0gICAgMTUyLCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDIwNywgMTUxLCAyMjUsIDExNSwgMSwgMjUxLCAyOCwgMjI1LCAxMTUsIDEsIAotICAgIDI0OCwgMTA1LCAyMjUsIDExNSwgMSwgMjQ4LCA5MiwgMjI1LCAxMTUsIDEsIDIzOCwgNjcsIDIyNSwgMTE1LCAxLCAyMzgsIAotICAgIDkyLCAyMjUsIDExNSwgMSwgMjQ0LCAxNzcsIDIyNSwgMTE1LCAxLCAyMzcsIDY3LCAyMjUsIDExNSwgMSwgMjA0LCA3MCwgCi0gICAgMjI1LCAxMTUsIDIsIDIwNywgMjksIDIyNSwgMTE1LCAxLCAyMDIsIDk1LCAyMjUsIDExNSwgMSwgMjAyLCA3MywgMjI1LCAKLSAgICAxMTUsIDEsIDIzMCwgMTYzLCAyMjUsIDExNSwgMSwgMjMwLCAxNDUsIDIyNSwgMTE1LCAxLCAyMzcsIDE5LCAyMjUsIDExNSwgCi0gICAgMSwgMjA5LCAxMjgsIDIyNSwgMTE1LCAxLCAyMDIsIDIzNSwgMjI1LCAxMTUsIDEsIDIyOSwgMjUwLCAyMjUsIDExNSwgMSwgCi0gICAgMjAzLCAxNzksIDIyNSwgMTE1LCAxLCAyMjksIDEzMywgMjI1LCAxMTUsIDEsIDIyOCwgMTksIDIyNSwgMTE1LCAxLCAyNDMsIAotICAgIDI1MCwgMjI1LCAxMTUsIDEsIDIwOSwgOTksIDIyNSwgMTE1LCAxLCAyMjQsIDI0NywgMjI1LCAxMTUsIDEsIDIyMSwgNDAsIAotICAgIDIyNSwgMTE1LCAxLCAyMTQsIDI0OSwgMjI1LCAxMTUsIDEsIDI1MCwgMywgMjI1LCAxMTUsIDEsIDI1MSwgMjM0LCAyMjUsIAotICAgIDExNSwgMSwgMjE5LCAzNCwgMjI1LCAxMTUsIDEsIDI0MCwgNjAsIDIyNSwgMTE1LCAxLCAyMTUsIDI2LCAyMjUsIDExNSwgMSwgCi0gICAgMjE3LCA2OSwgMjI1LCAxMTUsIDEsIDIwMywgMTU3LCAyMjUsIDExNSwgMSwgMjE3LCA5NSwgMjI1LCAxMTUsIDEsIDIxNiwgCi0gICAgOTEsIDIyNSwgMTE1LCAxLCAyMTIsIDI1NSwgMjI1LCAxMTUsIDEsIDIxMSwgMTMzLCAyMjUsIDExNSwgMSwgMjA5LCAyMDEsIAotICAgIDIyNSwgMTE1LCAyNTEsIDE0NiwgMTMxLCA1NSwgMjI1LCAxMTUsIDI1MSwgMTQ2LCAxMzEsIDU2LCAyMjUsIDExNSwgNDIsIAotICAgIDEwNSwgMjI1LCAxMTUsIDQyLCAxNzAsIDIyNSwgMTE1LCA0MiwgMjA5LCAxNTIsIDIyNSwgMTE1LCA0MiwgMjA3LCAxNTEsIAotICAgIDIyNSwgMTE1LCA0MiwgMTE4LCAyMzYsIDExLCAyMjUsIDExNSwgMjE3LCAxNzksIDIxMSwgOTQsIDIyNSwgMTE1LCAyMTcsIAotICAgIDE3OSwgMjM5LCAyMTIsIDIyNSwgMTE1LCAyMTcsIDE3OSwgNTIsIDcwLCAyMDQsIDUsIDI0MywgODUsIDIyNSwgMTE1LCAKLSAgICAyMTcsIDE3OSwgNzAsIDIwNCwgNSwgMjQzLCA4NSwgMjI1LCAxMTUsIDIxNywgMTc5LCAyNDMsIDg1LCAyMjUsIDExNSwgCi0gICAgMjE3LCAxNzksIDEyMCwgMjQzLCA4MywgMjI1LCAxMTUsIDIxNywgMTc5LCAyMjcsIDExNSwgMjQwLCA3LCAyNTAsIDE0LCAxLCAKLSAgICA2MywgMjUwLCAxNCwgMSwgMjUyLCAyNSwgMjUwLCAxNCwgMSwgMjUwLCAxNzgsIDI1MCwgMTQsIDEsIDI1MSwgMjQwLCAyNTAsIAotICAgIDE0LCAxLCAyNTAsIDIzMSwgMjUwLCAxNCwgMSwgMjUxLCAyNDEsIDI1MCwgMTQsIDEsIDI1MSwgMTA5LCAyNTAsIDE0LCAxLCAKLSAgICAyNTEsIDEwNSwgMjUwLCAxNCwgMSwgNzQsIDI1MCwgMTQsIDEsIDI0MSwgMTYxLCAyNTAsIDE0LCAxLCA3OCwgMjUwLCAxNCwgCi0gICAgMSwgMjIwLCAxOCwgMjUwLCAxNCwgMSwgNzUsIDI1MCwgMTQsIDEsIDIzMSwgODMsIDI1MCwgMTQsIDEsIDY4LCAyNTAsIDE0LCAKLSAgICAxLCAyMDYsIDE3OCwgMjUwLCAxNCwgMSwgMjI5LCAyMDEsIDI1MCwgMTQsIDEsIDIwMywgMTc2LCAyNTAsIDE0LCAxLCAyMDMsIAotICAgIDEzOCwgMjUwLCAxNCwgMSwgMjAzLCAxNDgsIDI1MCwgMTQsIDEsIDIzOCwgMTkwLCAyNTAsIDE0LCAxLCAyMzgsIDE1MCwgCi0gICAgMjUwLCAxNCwgMSwgMjM4LCAxMDUsIDI1MCwgMTQsIDEsIDI0NiwgMjM4LCAyNTAsIDE0LCAxLCAyMzAsIDE2MSwgMjUwLCAKLSAgICAxNCwgMSwgMjA5LCAxODcsIDI1MCwgMTQsIDEsIDIwOSwgOTIsIDI1MCwgMTQsIDEsIDI0NCwgNzUsIDI1MCwgMTQsIDEsIAotICAgIDI0MywgMjQ4LCAyNTAsIDE0LCAxLCAyMDcsIDIzNiwgMjUwLCAxNCwgMSwgMjE5LCAzNCwgMjUwLCAxNCwgMSwgMjQwLCA2MCwgCi0gICAgMjUwLCAxNCwgMSwgMjQ4LCAxNjIsIDI1MCwgMTQsIDEsIDI0OCwgOTQsIDI1MCwgMTQsIDEsIDIyMiwgMTkwLCAyNTAsIDE0LCAKLSAgICAxLCAyMjIsIDEwNiwgMjUwLCAxNCwgMSwgMjIyLCAxMDcsIDI1MCwgMTQsIDEsIDIyMiwgMjQwLCAyNTAsIDE0LCAxLCAyMjEsIAotICAgIDEsIDI1MCwgMTQsIDEsIDIyMSwgMjIyLCAyNTAsIDE0LCAxLCAyMjUsIDIwLCAyNTAsIDE0LCAxLCAyMzYsIDE4NiwgMjUwLCAKLSAgICAxNCwgMSwgMjAyLCAxNjYsIDI1MCwgMTQsIDEsIDIwMywgNTIsIDI1MCwgMTQsIDEsIDIwNiwgNTUsIDI1MCwgMTQsIDEsIAotICAgIDIxNiwgMTU4LCAyNTAsIDE0LCAxLCAyMjcsIDIzNCwgMjUwLCAxNCwgMSwgMjE0LCAxNzcsIDI1MCwgMTQsIDEsIDIwMiwgCi0gICAgOTIsIDI1MCwgMTQsIDEsIDIxMywgNDMsIDI1MCwgMTQsIDEsIDIwMiwgNzEsIDI1MCwgMTQsIDEsIDIxMiwgMTY5LCAyNTAsIAotICAgIDE0LCAxLCAyMTEsIDEzNCwgMjUwLCAxNCwgMSwgMjM3LCA2NywgMjUwLCAxNCwgMjUxLCAxNDYsIDgyLCAyMDgsIDIxMywgCi0gICAgMTIwLCAxODcsIDExNSwgMTE4LCA3MCwgMjE3LCAxNzgsIDUsIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCAKLSAgICAyMjgsIDgsIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCAyMjgsIDgsIDExOCwgNzAsIDExNSwgMTIwLCAxODcsIAotICAgIDIxNywgMTc4LCAyMjgsIDgsIDEyMCwgMjE1LCAyNTAsIDExNSwgMTE4LCAyMTUsIDI1MywgMjE3LCAxNzgsIDIyOCwgOCwgCi0gICAgMTE4LCAyMTUsIDI1MywgMTE1LCAxMjAsIDIxNSwgMjUwLCAyMTcsIDE3OCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjUxLCAKLSAgICAyOCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjQ4LCAxMDUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIzOCwgNjcsIDIzMSwgMTAsIAotICAgIDIxOSwgNzAsIDEsIDI0NCwgMTc3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzcsIDY3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAKLSAgICAyMDQsIDcwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDIsIDk1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzcsIDE5LCAyMzEsIAotICAgIDEwLCAyMTksIDcwLCAxLCAyMDksIDEyOCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjAyLCAyMzUsIDIzMSwgMTAsIDIxOSwgCi0gICAgNzAsIDEsIDIyOSwgMjUwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjgsIDE5LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjQsIAotICAgIDI0NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjIxLCA0MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE0LCAyNDksIDIzMSwgCi0gICAgMTAsIDIxOSwgNzAsIDEsIDI1MCwgMywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE5LCAzNCwgMjMxLCAxMCwgMjE5LCA3MCwgCi0gICAgMSwgMjE1LCAyNiwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE3LCA2OSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE2LCA5MSwgCi0gICAgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjEyLCAyNTUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwOSwgMjAxLCAyMzEsIDEwLCAKLSAgICAyMTksIDcwLCA0MiwgMTA1LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTA4LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTQ3LCAKLSAgICAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTQ5LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMjA5LCAxNTIsIDIzMSwgMTAsIDIxOSwgCi0gICAgNzAsIDQyLCAyMDcsIDE1MSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCAxMCwgMjE5LCA3MCwgCi0gICAgNDIsIDExOCwgMjA5LCAzNiwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDI1MSwgMjgsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAKLSAgICAyNDgsIDEwNSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzOCwgNjcsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyNDQsIDE3NywgCi0gICAgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzNywgNjcsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDQsIDY5LCAyMzEsIDEwLCAKLSAgICAyMTksIDE0OSwgMSwgMjAyLCA5NSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzNywgMTksIDIzMSwgMTAsIDIxOSwgMTQ5LCAKLSAgICAxLCAyMDksIDEyOCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwMiwgMjM1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI5LCAKLSAgICAyNTAsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMjgsIDE5LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI0LCAyNDYsIDIzMSwgCi0gICAgMTAsIDIxOSwgMTQ5LCAxLCAyMjEsIDQwLCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjE0LCAyNDksIDIzMSwgMTAsIDIxOSwgCi0gICAgMTQ5LCAxLCAyMTksIDM0LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjE1LCAyNiwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIAotICAgIDIxMiwgMjU1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjA5LCAyMDEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTA1LCAKLSAgICAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDEwOCwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxNDcsIDIzMSwgMTAsIDIxOSwgCi0gICAgMTQ5LCA0MiwgMTQ5LCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDIwOSwgMTUyLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIAotICAgIDIwNywgMTUxLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAKLSAgICAxMTgsIDIwOSwgMzYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjUxLCAyOCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNDgsIAotICAgIDEwNSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzgsIDY3LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI0NCwgMTc3LCAKLSAgICAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzNywgNjcsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjA0LCA2OSwgMjE3LCAyMDMsIAotICAgIDIxOSwgMTQ5LCAxLCAyMDIsIDk1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzNywgMTksIDIxNywgMjAzLCAyMTksIDE0OSwgCi0gICAgMSwgMjAyLCAyMzUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI5LCAyNTAsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI4LCAKLSAgICAxOSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjQsIDI0NiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjEsIDQwLCAyMTcsIAotICAgIDIwMywgMjE5LCAxNDksIDEsIDIxNCwgMjQ5LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIxOSwgMzQsIDIxNywgMjAzLCAKLSAgICAyMTksIDE0OSwgMSwgMjE1LCAyNiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMTIsIDI1NSwgMjE3LCAyMDMsIDIxOSwgCi0gICAgMTQ5LCAxLCAyMDksIDIwMSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMTQsIDE2OCwgODIsIDIxNywgMjAzLCAyMTksIDE0OSwgCi0gICAgMjA3LCAxNzQsIDIxNCwgMTY4LCA4MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMzksIDE0NywgMTg3LCAzLCAyNDUsIDEzMCwgCi0gICAgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMzksIDE0NywgMTg3LCAzLCAyNDMsIDg1LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAKLSAgICAxMDUsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDEwOCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTQ3LCAyMTcsIDIwMywgCi0gICAgMjE5LCAxNDksIDQyLCAxNDksIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDIwOSwgMTUyLCAyMTcsIDIwMywgMjE5LCAxNDksIAotICAgIDQyLCAyMDcsIDE1MSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTE4LCAyMzYsIDExLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCA2MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCA2MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIAotICAgIDEwOSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNzUsIDM4LCAKLSAgICAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNzQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDc4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyMjAsIDczLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDIyMCwgNzMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMjMyLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMjMyLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEwOCwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEwOCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMjIsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMjIsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTA3LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDAsIDE4MSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDAsIDE4MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUwLCA4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MCwgOCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5MCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDkwLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDEwMSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDEwMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjIwLCA3MSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyMjAsIDcxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDM5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgMzksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgMTAwLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDEwNiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MCwgMjMxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgOTgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgNzAsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCA3MCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA4OSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDg5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDU2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgNTYsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCAyMjMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgNzgsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA5NywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCA0NiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjIwLCA5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyMzUsIDE2NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCAxNjksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCAxNjksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgMTQ4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MCwgMTQ4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMzAsIDIyNiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyMzAsIDIyNiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjE5LCAyNDYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjE5LCAyNDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgMTQ0LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MCwgMTQ0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTAsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk0LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTAsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgNywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNDEsIDcsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDI1MCwgNDksIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCA0OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgMjUxLCA5MSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDkxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCAyMTksIDIyNCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQ4LCAyMTUsIDM4LCAxNDUsIDYsIDEsIDYzLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNTIsIDI1LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE3MSwgMzgsIDE0NSwgNiwgMSwgMjUwLCAyNDIsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDg5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2NiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjUsIDM4LCAxNDUsIDYsIDEsIDI1MCwgMjI2LCAzOCwgMTQ1LCA2LCAxLCA3NCwgMzgsIAotICAgIDE0NSwgNiwgMSwgMjQ2LCAxNywgNzQsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTYxLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1NCwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTUwLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAotICAgIDE0NywgMzgsIDE0NSwgNiwgMSwgNzUsIDM4LCAxNDUsIDYsIDEsIDIzMSwgODMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTMyLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEyOSwgMzgsIDE0NSwgNiwgMSwgMjUxLCA0NywgMzgsIDE0NSwgNiwgMSwgMjA2LCAyMzIsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTIyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEwNSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKLSAgICAxMDMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgOTIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNTYsIDM4LCAxNDUsIDYsIDEsIDc4LCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyMjAsIDE4LCAzOCwgMTQ1LCA2LCAxLCAyMjIsIDcxLCAyMjAsIDczLCAzOCwgMTQ1LCA2LCAxLCAKLSAgICAyMTUsIDE0MSwgMjIwLCA3MywgMzgsIDE0NSwgNiwgMSwgMjIwLCA3MiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA0NiwgMzgsIAotICAgIDE0NSwgNiwgMSwgMjQxLCA5NywgMzgsIDE0NSwgNiwgMSwgMjQxLCAyOCwgMzgsIDE0NSwgNiwgMSwgMjEyLCAyMjgsIDI0MSwgCi0gICAgMjgsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTcsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjUyLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIAotICAgIDI1MCwgMzgsIDE0NSwgNiwgMSwgMjQxLCA3MCwgMzgsIDE0NSwgNiwgMSwgMjQwLCAyMzksIDM4LCAxNDUsIDYsIDEsIDI0MSwgCi0gICAgMTY3LCAzOCwgMTQ1LCA2LCAxLCA2OCwgMzgsIDE0NSwgNiwgMSwgMjA2LCAxNzgsIDM4LCAxNDUsIDYsIDEsIDIyMiwgNzEsIAotICAgIDIwNywgMjQsIDM4LCAxNDUsIDYsIDEsIDIxNSwgMTQxLCAyMDcsIDI0LCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDIyNiwgMzgsIAotICAgIDE0NSwgNiwgMSwgMjQwLCAxODEsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMTc2LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDY5LCA1NCwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjA2LCAxOTMsIDM4LCAxNDUsIDUsIDEsIDYzLCAzOCwgMTQ1LCA1LCAxLCAyNTIsIDI1LCAzOCwgCi0gICAgMTQ1LCA1LCAxLCAyNDEsIDE3MSwgMzgsIDE0NSwgNSwgMSwgMjUwLCAyNDIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY5LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDg5LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjUsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI1MCwgMjI2LCAzOCwgMTQ1LCA1LCAxLCA3NCwgMzgsIDE0NSwgNSwgMSwgMjQ2LCAxNywgNzQsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTYxLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE1NCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAKLSAgICAxNTMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTUwLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE0NywgMzgsIDE0NSwgNSwgMSwgNzUsIAotICAgIDM4LCAxNDUsIDUsIDEsIDIzMSwgODMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTMyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEyOSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjUxLCA0NywgMzgsIDE0NSwgNSwgMSwgMjA2LCAyMzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTIyLCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEwNSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMDMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgOTIsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgNTYsIDM4LCAxNDUsIDUsIDEsIDc4LCAzOCwgMTQ1LCA1LCAxLCAyMjAsIDE4LCAzOCwgCi0gICAgMTQ1LCA1LCAxLCAyMjIsIDcxLCAyMjAsIDczLCAzOCwgMTQ1LCA1LCAxLCAyMTUsIDE0MSwgMjIwLCA3MywgMzgsIDE0NSwgCi0gICAgNSwgMSwgMjIwLCA3MiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA0NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA5NywgMzgsIDE0NSwgCi0gICAgNSwgMSwgMjQxLCAyOCwgMzgsIDE0NSwgNSwgMSwgMjEyLCAyMjgsIDI0MSwgMjgsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTcsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjUyLCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDI1MCwgMzgsIDE0NSwgNSwgMSwgMjQxLCA3MCwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQwLCAyMzksIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY3LCAzOCwgMTQ1LCA1LCAxLCA2OCwgMzgsIAotICAgIDE0NSwgNSwgMSwgMjA2LCAxNzgsIDM4LCAxNDUsIDUsIDEsIDIyMiwgNzEsIDIwNywgMjQsIDM4LCAxNDUsIDUsIDEsIDIxNSwgCi0gICAgMTQxLCAyMDcsIDI0LCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDIyNiwgMzgsIDE0NSwgNSwgMSwgMjQwLCAxODEsIDM4LCAxNDUsIAotICAgIDUsIDEsIDI0MCwgMTc2LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDY5LCA1NCwgMzgsIDE0NSwgNSwgMSwgMjA2LCAxOTMsIDM4LCAKLSAgICAxNDUsIDQyLCAxMDUsIDM4LCAxNDUsIDQyLCAxNzAsIDM4LCAxNDUsIDQyLCAyMDksIDE1MiwgMzgsIDE0NSwgNDIsIDI0MCwgCi0gICAgMTgsIDM4LCAxNDUsIDQyLCAxMTgsIDIzNiwgMTEsIDM4LCAxNDUsIDQyLCAxMTgsIDIwOSwgMzYsIDIxNSwgMTI5LCAxNywgCi0gICAgMTA1LCAyMTUsIDEyOSwgMTcsIDEwOCwgMjE1LCAxMjksIDE3LCAxNDcsIDIxNSwgMTI5LCAxNywgMTQ5LCAyMTUsIDEyOSwgCi0gICAgMTcsIDE3MCwgMjE1LCAxMjksIDE3LCAxOTUsIDIxNSwgMTI5LCAxNywgMjEzLCAxMTEsIDIxNSwgMTI5LCAxNywgMTk5LCAKLSAgICAyMTUsIDEyOSwgMTcsIDIyMiwgNjMsIDIxNSwgMTI5LCA0MiwgMjA5LCAxNTIsIDIxNSwgMTI5LCA0MiwgMjA3LCAxNTEsIAotICAgIDIxNSwgMTI5LCA0MiwgMjA5LCA1MywgMjE1LCAxMjksIDQyLCAyMzksIDE1MywgMjE1LCAxMjksIDQyLCAyNDAsIDE4LCAKLSAgICAyMTUsIDEyOSwgNDIsIDIxMiwgNzQsIDIxNSwgMTI5LCA0MiwgMjEzLCAxMDUsIDIxNSwgMTI5LCA0MiwgMjQxLCAxMzQsIAotICAgIDIxNSwgMTI5LCA0MiwgMjIyLCA1OCwgMjE1LCAxMjksIDQyLCAxMTgsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMTIwLCAKLSAgICAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDEyNiwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyMzksIDE0NywgMjM2LCAxMSwgCi0gICAgMjE1LCAxMjksIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyMTIsIDg4LCAyMzYsIDExLCAyMTUsIAotICAgIDEyOSwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDI0MSwgMTQzLCAyMzYsIDExLCAyMTUsIDEyOSwgCi0gICAgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDIxNSwgMTI5LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMjE1LCAxMjksIDIzOSwgCi0gICAgMTM4LCAxMTgsIDIxNywgNTUsIDIxNSwgMTI5LCAyMzksIDEzOCwgMTE4LCAyMDksIDYwLCAyMTUsIDEyOSwgMjM5LCAxMzgsIAotICAgIDEyMCwgMjA5LCA1NywgMTQ0LCAyLCAyNDcsIDUyLCAxNDQsIDIsIDI1MCwgMTgwLCAxNDQsIDIsIDIwNSwgMTk5LCAxNDQsIAotICAgIDIsIDIzMCwgMTM1LCAxNDQsIDIsIDIwNiwgMjIyLCAxNDQsIDEsIDYzLCAxNDQsIDEsIDI1MiwgMjUsIDE0NCwgMSwgNzUsIAotICAgIDE0NCwgMSwgMjMxLCA4MywgMTQ0LCAxLCA2OCwgMTQ0LCAxLCAyMDYsIDE3OCwgMTQ0LCAxLCAxMjUsIDE0NiwgMTQ0LCAxLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAxNDQsIDEsIDEyNSwgMTU5LCAxNDQsIDEsIDEyNSwgMjI3LCA3OCwgMTQ0LCAxLCA3NCwgMTQ0LCAKLSAgICAxLCAyNTEsIDY0LCAxNDQsIDEsIDc4LCAxNDQsIDEsIDI1MCwgMzQsIDE0NCwgMSwgMTczLCAxNDQsIDEsIDIyOSwgMTQ0LCAKLSAgICAxNDQsIDEsIDIzOSwgOCwgMTQ0LCAxLCAyMzgsIDExOSwgMTQ0LCAxLCAyMjIsIDIwMywgMTQ0LCAxLCAyNDcsIDkyLCAxNDQsIAotICAgIDEsIDI0NiwgMTk5LCAxNDQsIDEsIDIzMCwgMTgxLCAxNDQsIDEsIDIzMCwgMTQ5LCAxNDQsIDEsIDIyMSwgMTEsIDE0NCwgMSwgCi0gICAgMjA3LCAyNDEsIDE0NCwgMSwgMjA3LCAyMjksIDE0NCwgMSwgMjQ0LCAxMjAsIDE0NCwgMSwgMjQ0LCAxMDQsIDE0NCwgMSwgCi0gICAgMjIxLCAyMjcsIDE0NCwgMSwgMjEwLCAyMiwgMTQ0LCAxLCAyMDksIDEwOCwgMTQ0LCAxLCAyNDQsIDIxMiwgMTQ0LCAxLCAKLSAgICAyNDQsIDEsIDE0NCwgMSwgMjAxLCAyMDEsIDE0NCwgMSwgMTg1LCAxNDQsIDEsIDIxOCwgMjA4LCAxNDQsIDEsIDI0OSwgMzIsIAotICAgIDE0NCwgMSwgMjQ4LCA5OCwgMTQ0LCAxLCAxOTIsIDE0NCwgMSwgMTk4LCAxNDQsIDEsIDIxNiwgMjIwLCAxNDQsIDEsIDIyOCwgCi0gICAgMTEzLCAxNDQsIDEsIDIwNiwgODYsIDE0NCwgMSwgMjEzLCA5MCwgMTQ0LCAxLCAyMTEsIDE2NCwgMTQ0LCAxLCAyMTUsIDM2LCAKLSAgICAxNDQsIDEsIDE1MiwgMTQ0LCAxLCAyMjcsIDc3LCAxNDQsIDEsIDM4LCA0NCwgMjI3LCA2OCwgMTQ0LCAxLCAzOCwgNDQsIAotICAgIDIxNSwgMTg1LCAxNDQsIDEsIDM4LCA0NCwgMjIxLCAyMDksIDE0NCwgMjIsIDIsIDI1MiwgMjUsIDE0NCwgMjIsIDIsIDI0OCwgCi0gICAgOTUsIDI1MiwgMjUsIDE0NCwgMjIsIDIsIDc1LCAxNDQsIDIyLCAyLCAyMzEsIDgzLCAxNDQsIDIyLCAyLCA2OCwgMTQ0LCAKLSAgICAyMiwgMiwgMjA2LCAxNzgsIDE0NCwgMjIsIDIsIDEyNSwgMTQ2LCAxNDQsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNDQsIAotICAgIDIyLCAyLCAxMjUsIDE1OSwgMTQ0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNDQsIDIyLCAyLCA3NCwgMTQ0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMTQ0LCAyMiwgMiwgNzgsIDE0NCwgMjIsIDIsIDI1MCwgMzQsIDE0NCwgMjA1LCAyMDQsIDE0NCwgMjQ0LCAKLSAgICAxNjYsIDE0NCwgNTIsIDI0NCwgMTY2LCAxNDQsIDIxNywgMTc5LCAyNDMsIDg1LCAxNDQsIDIxNywgMTc5LCA1MiwgMjQzLCAKLSAgICA4NSwgMTQ0LCAyMTcsIDE3OSwgMjI3LCAxMTQsIDE0NCwgMjE3LCAxNzksIDI0NSwgMTM5LCAxNDIsIDE0NCwgMjE3LCAxNzksIAotICAgIDIyNywgNSwgMTQ0LCA0MiwgMTA1LCAxNDQsIDQyLCAxMDgsIDE0NCwgNDIsIDE0NywgMTQ0LCA0MiwgMTQ5LCAxNDQsIDQyLCAKLSAgICAxNzAsIDE0NCwgNDIsIDE5NSwgMTQ0LCA0MiwgMjEzLCAxMTEsIDE0NCwgNDIsIDE5OSwgMTQ0LCA0MiwgMjIyLCA2MywgCi0gICAgMTQ0LCA0MiwgMjA5LCAxNTIsIDE0NCwgNDIsIDIwNywgMTUxLCAxNDQsIDQyLCAyMDksIDUzLCAxNDQsIDQyLCAyMzksIAotICAgIDE1MywgMTQ0LCA0MiwgMjQwLCAxOCwgMTQ0LCA0MiwgMjEyLCA3NCwgMTQ0LCA0MiwgMjEzLCAxMDUsIDE0NCwgNDIsIDI0MSwgCi0gICAgMTM0LCAxNDQsIDQyLCAyMjIsIDU4LCAxNDQsIDQyLCAxMTgsIDIzNiwgMTEsIDE0NCwgNDIsIDExOCwgMjA5LCAzNiwgMTQ0LCAKLSAgICAxNywgMjAyLCA4NCwgMTQ0LCAxNywgMTA1LCAxNDQsIDE3LCAxMDgsIDE0NCwgMTcsIDE0NywgMTQ0LCAxNywgMTQ5LCAxNDQsIAotICAgIDE3LCAxNzAsIDE0NCwgMTcsIDE5NSwgMTQ0LCAxNywgMjEzLCAxMTEsIDE0NCwgMTcsIDE5OSwgMTQ0LCAxNywgMjIyLCA2MywgCi0gICAgMTQ0LCA0MiwgMjMwLCA5NiwgMjMwLCAxNSwgMiwgMjQ3LCA1MiwgMjMwLCAxNSwgMiwgMjUwLCAxODAsIDIzMCwgMTUsIDIsIAotICAgIDIwNSwgMTk5LCAyMzAsIDE1LCAxLCA2MywgMjMwLCAxNSwgMSwgMjUyLCAyNSwgMjMwLCAxNSwgMSwgNzUsIDIzMCwgMTUsIAotICAgIDEsIDIzMSwgODMsIDIzMCwgMTUsIDEsIDY4LCAyMzAsIDE1LCAxLCAyMDYsIDE3OCwgMjMwLCAxNSwgMSwgNzQsIDIzMCwgCi0gICAgMTUsIDEsIDI1MSwgNjQsIDIzMCwgMTUsIDEsIDc4LCAyMzAsIDE1LCAxLCAyNTAsIDM0LCAyMzAsIDE1LCAxLCAxNzMsIAotICAgIDIzMCwgMTUsIDEsIDIyOSwgMTQ0LCAyMzAsIDE1LCAxLCAyMzksIDgsIDIzMCwgMTUsIDEsIDIzOCwgMTE5LCAyMzAsIDE1LCAKLSAgICAxLCAyMjIsIDIwMywgMjMwLCAxNSwgMSwgMjQ3LCA5MiwgMjMwLCAxNSwgMSwgMjQ2LCAxOTksIDIzMCwgMTUsIDEsIDIzMCwgCi0gICAgMTgxLCAyMzAsIDE1LCAxLCAyMzAsIDE0OSwgMjMwLCAxNSwgMSwgMjIxLCAxMSwgMjMwLCAxNSwgMSwgMjA3LCAyNDEsIAotICAgIDIzMCwgMTUsIDEsIDIwNywgMjI5LCAyMzAsIDE1LCAxLCAyNDQsIDEyMCwgMjMwLCAxNSwgMSwgMjQ0LCAxMDksIDIzMCwgCi0gICAgMTUsIDEsIDI0NCwgMTA0LCAyMzAsIDE1LCAxLCAyMTYsIDYxLCAyMzAsIDE1LCAxLCAyMjEsIDIyNywgMjMwLCAxNSwgMSwgCi0gICAgMjEwLCAyMiwgMjMwLCAxNSwgMSwgMjA5LCAxMDgsIDIzMCwgMTUsIDEsIDI0NCwgMjEyLCAyMzAsIDE1LCAxLCAyNDQsIDEsIAotICAgIDIzMCwgMTUsIDEsIDIwMSwgMjAxLCAyMzAsIDE1LCAxLCAxODUsIDIzMCwgMTUsIDEsIDIxOCwgMjA4LCAyMzAsIDE1LCAxLCAKLSAgICAyNDksIDMyLCAyMzAsIDE1LCAxLCAyNDgsIDk4LCAyMzAsIDE1LCAxLCAxOTIsIDIzMCwgMTUsIDEsIDE5OCwgMjMwLCAxNSwgCi0gICAgMSwgMjE2LCAyMjAsIDIzMCwgMTUsIDEsIDIyOCwgMTEzLCAyMzAsIDE1LCAxLCAyMDYsIDg2LCAyMzAsIDE1LCAxLCAyMTMsIAotICAgIDkwLCAyMzAsIDE1LCAxLCAyMTEsIDE2NCwgMjMwLCAxNSwgMSwgMjE1LCAzNiwgMjMwLCAxNSwgMSwgMTUyLCAyMzAsIDE1LCAKLSAgICAyMiwgMiwgMjUyLCAyNSwgMjMwLCAxNSwgMjIsIDIsIDc1LCAyMzAsIDE1LCAyMiwgMiwgMjMxLCA4MywgMjMwLCAxNSwgMjIsIAotICAgIDIsIDY4LCAyMzAsIDE1LCAyMiwgMiwgMjA2LCAxNzgsIDIzMCwgMTUsIDIyLCAyLCA3NCwgMjMwLCAxNSwgMjIsIDIsIDI1MSwgCi0gICAgNjQsIDIzMCwgMTUsIDIyLCAyLCA3OCwgMjMwLCAxNSwgMjIsIDIsIDI1MCwgMzQsIDIzMCwgMTUsIDIsIDIwNSwgMjA0LCAKLSAgICAyMzAsIDE1LCAyLCAyMjEsIDUxLCAyMzAsIDE1LCAyNTEsIDE0NiwgNTQsIDIzMCwgMTUsIDI0MSwgNTksIDU0LCAyMzAsIAotICAgIDE1LCA0MiwgNTQsIDIzMCwgMTUsIDIxNCwgMTY4LCA4MiwgMjMwLCAxNSwgNTIsIDIxNCwgMTY4LCA4MiwgMjMwLCAxNSwgCi0gICAgMjQ0LCAxNjYsIDIzMCwgMTUsIDUyLCAyNDQsIDE2NiwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTUsIDE5LCAyMTEsIAotICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwOSwgMjUxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0OSwgNSwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxLCAyNDcsIDgxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0NCwgMTkzLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIAotICAgIDIzOCwgMjQ5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyNSwgMTQ4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMiwgCi0gICAgMjAwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyOCwgODksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIzLCA5MywgMjExLCAKLSAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDYsIDgyLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxOSwgMTUwLCAyMTEsIDI0NiwgCi0gICAgMjExLCAyNTQsIDEsIDIwMywgOTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE2LCAxOTksIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMSwgMjM3LCAxNDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjMwLCAyMCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAKLSAgICAyMzAsIDE3NSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjEsIDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjUxLCA3MywgCi0gICAgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDEsIDE1OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMzEsIDg0LCAyMTEsIAotICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwNywgMTgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIwLCA2MCwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxLCAyNDEsIDE0NywgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjUsIDE2MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAKLSAgICAxNywgMjAyLCA4NCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTA1LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxMDgsIAotICAgIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE0NywgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTQ5LCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDE3LCAxNzAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE5NSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMjEzLCAKLSAgICAxMTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE5OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMjIyLCA2MywgMjQ2LCAKLSAgICAxOTMsIDIsIDI0NywgNTIsIDI0NiwgMTkzLCAyLCAyNTAsIDE4MCwgMjQ2LCAxOTMsIDIsIDIwNSwgMTk5LCAyNDYsIDE5MywgCi0gICAgMSwgMjUyLCAyNSwgMjQ2LCAxOTMsIDEsIDc1LCAyNDYsIDE5MywgMSwgNjgsIDI0NiwgMTkzLCAxLCA3NCwgMjQ2LCAxOTMsIAotICAgIDEsIDIzMCwgNDEsIDI0NiwgMTkzLCAxLCAyMjksIDE0MywgMjQ2LCAxOTMsIDEsIDIzOSwgNSwgMjQ2LCAxOTMsIDEsIDIzOCwgCi0gICAgMTE4LCAyNDYsIDE5MywgMSwgMjIyLCAyMDIsIDI0NiwgMTkzLCAxLCAyNDcsIDkxLCAyNDYsIDE5MywgMSwgMjQ2LCAxOTgsIAotICAgIDI0NiwgMTkzLCAxLCAyMzAsIDE4MCwgMjQ2LCAxOTMsIDEsIDIzMCwgMTQ4LCAyNDYsIDE5MywgMSwgMjIxLCAxMCwgMjQ2LCAKLSAgICAxOTMsIDEsIDIwNywgMjQwLCAyNDYsIDE5MywgMSwgMjA3LCAyMjgsIDI0NiwgMTkzLCAxLCAyNDQsIDExOSwgMjQ2LCAxOTMsIAotICAgIDEsIDI0NCwgMTAzLCAyNDYsIDE5MywgMSwgMjIxLCAyMjYsIDI0NiwgMTkzLCAxLCAyMTAsIDE4LCAyNDYsIDE5MywgMSwgCi0gICAgMjA5LCAxMDcsIDI0NiwgMTkzLCAxLCAyNDQsIDIxMSwgMjQ2LCAxOTMsIDEsIDI0NCwgMCwgMjQ2LCAxOTMsIDEsIDIyMywgCi0gICAgMTA2LCAyNDYsIDE5MywgMSwgMjE5LCAxNjgsIDI0NiwgMTkzLCAxLCAyMTgsIDIwNywgMjQ2LCAxOTMsIDEsIDI0OSwgMzAsIAotICAgIDI0NiwgMTkzLCAxLCAyNDgsIDk3LCAyNDYsIDE5MywgMSwgMjI1LCAxNzUsIDI0NiwgMTkzLCAxLCAyMDIsIDE2NywgMjQ2LCAKLSAgICAxOTMsIDEsIDIwMywgMTEwLCAyNDYsIDE5MywgMSwgMjE2LCAyMTYsIDI0NiwgMTkzLCAxLCAyMjgsIDExMiwgMjQ2LCAxOTMsIAotICAgIDEsIDIwNCwgMTEwLCAyNDYsIDE5MywgMSwgMjE1LCAzMywgMjQ2LCAxOTMsIDEsIDIzNywgMTU3LCAyNDYsIDE5MywgMjIsIAotICAgIDIsIDYzLCAyNDYsIDE5MywgMjIsIDIsIDc1LCAyNDYsIDE5MywgMjIsIDIsIDIzMSwgODMsIDI0NiwgMTkzLCAyMiwgMiwgCi0gICAgNjgsIDI0NiwgMTkzLCAyMiwgMiwgMjA2LCAxNzgsIDI0NiwgMTkzLCAyMiwgMiwgNzQsIDI0NiwgMTkzLCAyMiwgMiwgMjUxLCAKLSAgICA2NCwgMjQ2LCAxOTMsIDIyLCAyLCA3OCwgMjQ2LCAxOTMsIDIyLCAyLCAyNTAsIDM0LCAyNDYsIDE5MywgMjIsIDIsIDIyMCwgCi0gICAgNTcsIDI0NiwgMTkzLCAxNTgsIDgyLCAyNDYsIDE5MywgMjUwLCAzNSwgODIsIDI0NiwgMTkzLCAyMDUsIDIwNCwgMjQ2LCAKLSAgICAxOTMsIDIyNSwgMTczLCAyNDYsIDE5MywgMTcsIDIwMiwgODQsIDI0NiwgMTkzLCAxNywgMTA1LCAyNDYsIDE5MywgMTcsIAotICAgIDEwOCwgMjQ2LCAxOTMsIDE3LCAxNDcsIDI0NiwgMTkzLCAxNywgMTQ5LCAyNDYsIDE5MywgMTcsIDE3MCwgMjQ2LCAxOTMsIAotICAgIDE3LCAxOTUsIDI0NiwgMTkzLCAxNywgMjEzLCAxMTEsIDI0NiwgMTkzLCAxNywgMTk5LCAyNDYsIDE5MywgMTcsIDIyMiwgCi0gICAgNjMsIDI0NiwgMTkzLCAyMTQsIDE2OCwgODIsIDI0NiwgMTkzLCAyNDQsIDE2NiwgMjQ2LCAxOTMsIDUyLCAyNDQsIDE2NiwgCi0gICAgMjQ2LCAxOTMsIDIxNywgNDcsIDgyLCAyMjUsIDE0NiwgMSwgNjMsIDIyNSwgMTQ2LCAxLCA3NSwgMjI1LCAxNDYsIDEsIDY4LCAKLSAgICAyMjUsIDE0NiwgMSwgNzQsIDIyNSwgMTQ2LCAxLCA3OCwgMjI1LCAxNDYsIDEsIDE3MywgMjI1LCAxNDYsIDEsIDIyOSwgCi0gICAgMTQ0LCAyMjUsIDE0NiwgMSwgMjM5LCA4LCAyMjUsIDE0NiwgMSwgMjM4LCAxMTksIDIyNSwgMTQ2LCAxLCAyNDcsIDkyLCAKLSAgICAyMjUsIDE0NiwgMSwgMjQ2LCAxOTksIDIyNSwgMTQ2LCAxLCAyMzAsIDE4MSwgMjI1LCAxNDYsIDEsIDIzMCwgMTQ5LCAyMjUsIAotICAgIDE0NiwgMSwgMjIxLCAxMSwgMjI1LCAxNDYsIDEsIDIwNywgMjQxLCAyMjUsIDE0NiwgMSwgMjA3LCAyMjksIDIyNSwgMTQ2LCAKLSAgICAxLCAyNDQsIDEyMCwgMjI1LCAxNDYsIDEsIDI0NCwgMTA0LCAyMjUsIDE0NiwgMSwgMjIxLCAyMjcsIDIyNSwgMTQ2LCAxLCAKLSAgICAyMTAsIDIyLCAyMjUsIDE0NiwgMSwgMjA5LCAxMDgsIDIyNSwgMTQ2LCAxLCAyNDQsIDIxMiwgMjI1LCAxNDYsIDEsIDI0NCwgCi0gICAgMSwgMjI1LCAxNDYsIDEsIDIwMSwgMjAxLCAyMjUsIDE0NiwgMSwgMTg1LCAyMjUsIDE0NiwgMSwgMjE4LCAyMDgsIDIyNSwgCi0gICAgMTQ2LCAxLCAyNDksIDMyLCAyMjUsIDE0NiwgMSwgMjQ4LCA5OCwgMjI1LCAxNDYsIDEsIDE5MiwgMjI1LCAxNDYsIDEsIAotICAgIDIxNiwgMjIwLCAyMjUsIDE0NiwgMSwgMjI4LCAxMTMsIDIyNSwgMTQ2LCAxLCAyMDYsIDg2LCAyMjUsIDE0NiwgMSwgMjE1LCAKLSAgICAzNiwgMjI1LCAxNDYsIDEsIDE1MiwgMjI1LCAxNDYsIDEsIDIxNSwgMTg1LCAyMjUsIDE0NiwgMiwgMjIxLCA1MSwgMjI1LCAKLSAgICAxNDYsIDI1MSwgMTQ2LCA1NCwgMjI1LCAxNDYsIDIxNCwgMTY4LCA4MiwgMjI1LCAxNDYsIDMyLCAyMTIsIDIwNiwgMTgxLCAKLSAgICAyLCAyNDcsIDUyLCAxODEsIDIsIDI1MCwgMTgwLCAxODEsIDIsIDIwNSwgMTk5LCAxODEsIDEsIDYzLCAxODEsIDEsIDI1MiwgCi0gICAgMjUsIDE4MSwgMSwgNzUsIDE4MSwgMSwgMjMxLCA4MywgMTgxLCAxLCA2OCwgMTgxLCAxLCAyMDYsIDE3OCwgMTgxLCAxLCAKLSAgICAxMjUsIDE0NiwgMTgxLCAxLCAxMjUsIDIxNSwgMTg2LCAxODEsIDEsIDEyNSwgMTU5LCAxODEsIDEsIDEyNSwgMjI3LCA3OCwgCi0gICAgMTgxLCAxLCA3NCwgMTgxLCAxLCAyNTEsIDY0LCAxODEsIDEsIDc4LCAxODEsIDEsIDI1MCwgMzQsIDE4MSwgMSwgMTczLCAKLSAgICAxODEsIDEsIDIyOSwgMTQ0LCAxODEsIDEsIDIzOSwgOCwgMTgxLCAxLCAyMzgsIDExOSwgMTgxLCAxLCAyMjIsIDIwMywgCi0gICAgMTgxLCAxLCAyNDcsIDkyLCAxODEsIDEsIDI0NiwgMTk5LCAxODEsIDEsIDIzMCwgMTgxLCAxODEsIDEsIDIzMCwgMTQ5LCAKLSAgICAxODEsIDEsIDIyMSwgMTEsIDE4MSwgMSwgMjA3LCAyNDEsIDE4MSwgMSwgMjA3LCAyMjksIDE4MSwgMSwgMjQ0LCAxMjAsIAotICAgIDE4MSwgMSwgMjQ0LCAxMDQsIDE4MSwgMSwgMjIxLCAyMjcsIDE4MSwgMSwgMjEwLCAyMiwgMTgxLCAxLCAyMDksIDEwOCwgCi0gICAgMTgxLCAxLCAyNDQsIDIxMiwgMTgxLCAxLCAyNDQsIDEsIDE4MSwgMSwgMjAxLCAyMDEsIDE4MSwgMSwgMTg1LCAxODEsIDEsIAotICAgIDIxOCwgMjA4LCAxODEsIDEsIDI0OSwgMzIsIDE4MSwgMSwgMjQ4LCA5OCwgMTgxLCAxLCAxOTIsIDE4MSwgMSwgMTk4LCAKLSAgICAxODEsIDEsIDIxNiwgMjIwLCAxODEsIDEsIDIyOCwgMTEzLCAxODEsIDEsIDIyNywgNzcsIDE4MSwgMSwgMjA2LCA4NiwgCi0gICAgMTgxLCAxLCAyMTMsIDkwLCAxODEsIDEsIDIxMSwgMTY0LCAxODEsIDEsIDIxNSwgMzYsIDE4MSwgMSwgMTUyLCAxODEsIDIyLCAKLSAgICAyLCAyNTIsIDI1LCAxODEsIDIyLCAyLCA3NSwgMTgxLCAyMiwgMiwgMjMxLCA4MywgMTgxLCAyMiwgMiwgNjgsIDE4MSwgMjIsIAotICAgIDIsIDIwNiwgMTc4LCAxODEsIDIyLCAyLCAxMjUsIDE0NiwgMTgxLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTgxLCAyMiwgMiwgCi0gICAgMTI1LCAxNTksIDE4MSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTgxLCAyMiwgMiwgNzQsIDE4MSwgMjIsIDIsIDI1MSwgNjQsIAotICAgIDE4MSwgMjIsIDIsIDc4LCAxODEsIDIyLCAyLCAyNTAsIDM0LCAxODEsIDIsIDIwNSwgMjA0LCAxODEsIDIsIDI1MCwgMTcsIAotICAgIDE4MSwgMiwgMjMwLCAxMzUsIDE4MSwgMiwgMjA2LCAyMjIsIDE4MSwgMjIwLCAzOSwgMTgxLCAyNDQsIDE2NiwgMTgxLCA1MiwgCi0gICAgMjQ0LCAxNjYsIDE4MSwgMjUxLCAxNDYsIDU0LCAxODEsIDIxMywgMTMwLCAxODEsIDIxNCwgMjM5LCA4MiwgMTgxLCAyLCAKLSAgICAyMjEsIDUxLCAxODEsIDIyLCA2NSwgODIsIDE4MSwgMjQwLCAxOTksIDIxMiwgMjI4LCAyMiwgODIsIDE4MSwgMjEwLCAxODAsIAotICAgIDgyLCAxODEsIDE3LCAyMDIsIDg0LCAxODEsIDE3LCAxMDUsIDE4MSwgMTcsIDEwOCwgMTgxLCAxNywgMTQ3LCAxODEsIDE3LCAKLSAgICAxNDksIDE4MSwgMTcsIDE3MCwgMTgxLCAxNywgMTk1LCAxODEsIDE3LCAyMTMsIDExMSwgMTgxLCAxNywgMTk5LCAxODEsIAotICAgIDE3LCAyMjIsIDYzLCAxODEsIDI0MSwgMTI4LCAxODEsIDIsIDIxMiwgMTU3LCAxODEsIDIzNywgNTgsIDE4MSwgMjQ1LCAKLSAgICAxOTEsIDU0LCAxODEsIDIxNCwgMTY4LCAyMjUsIDkyLCAxODEsIDIxNCwgMTY4LCAyMjUsIDkxLCAxNDAsIDI1MCwgMTI2LCAKLSAgICAxNywgMTA1LCAxNDAsIDI1MCwgMTI2LCAxNywgMTA4LCAxNDAsIDI1MCwgMTI2LCAxNywgMTQ3LCAxNDAsIDI1MCwgMTI2LCAKLSAgICAxNywgMTQ5LCAxNDAsIDI1MCwgMTI2LCAxNywgMTcwLCAxNDAsIDI1MCwgMTI2LCAxNywgMTk1LCAxNDAsIDI1MCwgMTI2LCAKLSAgICAxNywgMjEzLCAxMTEsIDE0MCwgMjUwLCAxMjYsIDE3LCAxOTksIDE0MCwgMjUwLCAxMjYsIDE3LCAyMjIsIDYzLCAxNDAsIAotICAgIDI1MCwgMTI2LCA0MiwgMjA5LCAxNTIsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMDcsIDE1MSwgMTQwLCAyNTAsIDEyNiwgNDIsIAotICAgIDIwOSwgNTMsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMzksIDE1MywgMTQwLCAyNTAsIDEyNiwgNDIsIDI0MCwgMTgsIDE0MCwgCi0gICAgMjUwLCAxMjYsIDQyLCAyMTIsIDc0LCAxNDAsIDI1MCwgMTI2LCA0MiwgMjEzLCAxMDUsIDE0MCwgMjUwLCAxMjYsIDQyLCAKLSAgICAyNDEsIDEzNCwgMTQwLCAyNTAsIDEyNiwgNDIsIDIyMiwgNTgsIDE0MCwgMjUwLCAxMjYsIDQyLCAxMTgsIDIzNiwgMTEsIAotICAgIDE0MCwgMjUwLCAxMjYsIDQyLCAxMTgsIDIwOSwgMzYsIDIyOSwgMTE0LCAxLCA2MywgMjI5LCAxMTQsIDEsIDI1MiwgMjUsIAotICAgIDIyOSwgMTE0LCAxLCA3NSwgMjI5LCAxMTQsIDEsIDY4LCAyMjksIDExNCwgMSwgNzQsIDIyOSwgMTE0LCAxLCAyNTEsIDY0LCAKLSAgICAyMjksIDExNCwgMSwgNzgsIDIyOSwgMTE0LCAxLCAyNTAsIDM0LCAyMjksIDExNCwgMSwgMTczLCAyMjksIDExNCwgMSwgCi0gICAgMjI5LCAxNDQsIDIyOSwgMTE0LCAxLCAyMzksIDgsIDIyOSwgMTE0LCAxLCAyMzgsIDE1NSwgMjI5LCAxMTQsIDEsIDIzOCwgCi0gICAgMTE5LCAyMjksIDExNCwgMSwgMjIyLCAyMDMsIDIyOSwgMTE0LCAxLCAyNDcsIDkyLCAyMjksIDExNCwgMSwgMjQ2LCAxOTksIAotICAgIDIyOSwgMTE0LCAxLCAyMzAsIDE4MSwgMjI5LCAxMTQsIDEsIDIzMCwgMTI5LCAyMjksIDExNCwgMSwgMjIxLCAxMSwgMjI5LCAKLSAgICAxMTQsIDEsIDIwNywgMjQxLCAyMjksIDExNCwgMSwgMjA3LCAyMjksIDIyOSwgMTE0LCAxLCAyNDQsIDEyMCwgMjI5LCAxMTQsIAotICAgIDEsIDI0NCwgMTA0LCAyMjksIDExNCwgMSwgMjIxLCAyMjcsIDIyOSwgMTE0LCAxLCAyMTAsIDIyLCAyMjksIDExNCwgMSwgCi0gICAgMjA5LCAxMDgsIDIyOSwgMTE0LCAxLCAyNDQsIDIxMiwgMjI5LCAxMTQsIDEsIDI0NCwgMTEwLCAyMjksIDExNCwgMSwgMjQ0LCAKLSAgICAxLCAyMjksIDExNCwgMSwgMjAxLCAyMDEsIDIyOSwgMTE0LCAxLCAxODUsIDIyOSwgMTE0LCAxLCAyMTgsIDIwOCwgMjI5LCAKLSAgICAxMTQsIDEsIDI0OSwgMzIsIDIyOSwgMTE0LCAxLCAyNDgsIDE5OCwgMjI5LCAxMTQsIDEsIDI0OCwgOTgsIDIyOSwgMTE0LCAKLSAgICAxLCAxOTIsIDIyOSwgMTE0LCAxLCAxOTgsIDIyOSwgMTE0LCAxLCAyMTYsIDIyMCwgMjI5LCAxMTQsIDEsIDIyOCwgMTEzLCAKLSAgICAyMjksIDExNCwgMSwgMjA2LCA4NiwgMjI5LCAxMTQsIDEsIDIxNSwgMzYsIDIyOSwgMTE0LCAxLCAxNTIsIDIyOSwgMTE0LCAKLSAgICAxLCAyMjcsIDc3LCAyMjksIDExNCwgMjIsIDIsIDI1MiwgMjUsIDIyOSwgMTE0LCAyMiwgMiwgNzUsIDIyOSwgMTE0LCAyMiwgCi0gICAgMiwgMjMxLCA4MywgMjI5LCAxMTQsIDIyLCAyLCA2OCwgMjI5LCAxMTQsIDIyLCAyLCA3NCwgMjI5LCAxMTQsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAyMjksIDExNCwgMjIsIDIsIDc4LCAyMjksIDExNCwgMjIsIDIsIDI1MCwgMzQsIDIyOSwgMTE0LCAyLCAyNTAsIAotICAgIDE4MCwgMjI5LCAxMTQsIDIsIDIwNSwgMjA0LCAyMjksIDExNCwgMiwgMjIxLCA1MSwgMjI5LCAxMTQsIDIsIDIxMywgODAsIAotICAgIDIyOSwgMTE0LCAyNDQsIDE2NiwgMjI5LCAxMTQsIDUyLCAyNDQsIDE2NiwgMjI5LCAxMTQsIDIwMywgMjM4LCAyMTMsIDEzMCwgCi0gICAgMjI5LCAxMTQsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMTQsIDUyLCAyMTQsIDE2OCwgODIsIDIyOSwgMTE0LCAyNTEsIDE0NiwgCi0gICAgNTQsIDIyMywgMjMwLCAxLCA2MywgMjIzLCAyMzAsIDEsIDc1LCAyMjMsIDIzMCwgMSwgNjgsIDIyMywgMjMwLCAxLCA3NCwgCi0gICAgMjIzLCAyMzAsIDEsIDE3MywgMjIzLCAyMzAsIDEsIDIyOSwgMTQ0LCAyMjMsIDIzMCwgMSwgMjM5LCA4LCAyMjMsIDIzMCwgCi0gICAgMSwgMjM4LCAxMTksIDIyMywgMjMwLCAxLCAyNDcsIDkyLCAyMjMsIDIzMCwgMSwgMjQ2LCAxOTksIDIyMywgMjMwLCAxLCAKLSAgICAyMzAsIDE4MSwgMjIzLCAyMzAsIDEsIDIzMCwgMTI5LCAyMjMsIDIzMCwgMSwgMjIxLCAxMSwgMjIzLCAyMzAsIDEsIDIwNywgCi0gICAgMjQxLCAyMjMsIDIzMCwgMSwgMjA3LCAyMjksIDIyMywgMjMwLCAxLCAyNDQsIDEyMCwgMjIzLCAyMzAsIDEsIDI0NCwgMTEwLCAKLSAgICAyMjMsIDIzMCwgMSwgMjQ0LCAxMDQsIDIyMywgMjMwLCAxLCAyMjEsIDIyNywgMjIzLCAyMzAsIDEsIDIxMCwgMjIsIDIyMywgCi0gICAgMjMwLCAxLCAyMDksIDEwOCwgMjIzLCAyMzAsIDEsIDI0NCwgMjEyLCAyMjMsIDIzMCwgMSwgMjQ0LCAxLCAyMjMsIDIzMCwgCi0gICAgMSwgMjAxLCAyMDEsIDIyMywgMjMwLCAxLCAxODUsIDIyMywgMjMwLCAxLCAyMTgsIDIwOCwgMjIzLCAyMzAsIDEsIDI0OSwgCi0gICAgMzIsIDIyMywgMjMwLCAxLCAyNDgsIDk4LCAyMjMsIDIzMCwgMSwgMTkyLCAyMjMsIDIzMCwgMSwgMTk4LCAyMjMsIDIzMCwgCi0gICAgMSwgMjE2LCAyMjAsIDIyMywgMjMwLCAxLCAyMjgsIDExMywgMjIzLCAyMzAsIDEsIDIwNiwgODYsIDIyMywgMjMwLCAxLCAKLSAgICAyMTUsIDM2LCAyMjMsIDIzMCwgMSwgMTUyLCAyMjMsIDIzMCwgMSwgMjE1LCAxODUsIDIyMywgMjMwLCAxLCAyMTYsIDYxLCAKLSAgICAyMjMsIDIzMCwgMjE0LCAxNjgsIDgyLCAyMjksIDEwNiwgMSwgNjMsIDIyOSwgMTA2LCAxLCAyNTIsIDI1LCAyMjksIDEwNiwgCi0gICAgMSwgNzUsIDIyOSwgMTA2LCAxLCAyMzEsIDgzLCAyMjksIDEwNiwgMSwgNjgsIDIyOSwgMTA2LCAxLCAyMDYsIDE3OCwgMjI5LCAKLSAgICAxMDYsIDEsIDc0LCAyMjksIDEwNiwgMSwgMjUxLCA2NCwgMjI5LCAxMDYsIDEsIDc4LCAyMjksIDEwNiwgMSwgMjUwLCAzNCwgCi0gICAgMjI5LCAxMDYsIDEsIDE3MywgMjI5LCAxMDYsIDEsIDIyOSwgMTQ0LCAyMjksIDEwNiwgMSwgMjM5LCA4LCAyMjksIDEwNiwgCi0gICAgMSwgMjM4LCAxNTUsIDIyOSwgMTA2LCAxLCAyMzgsIDExOSwgMjI5LCAxMDYsIDEsIDIyMiwgMjAzLCAyMjksIDEwNiwgMSwgCi0gICAgMjQ3LCA5MiwgMjI5LCAxMDYsIDEsIDI0NiwgMTk5LCAyMjksIDEwNiwgMSwgMjMwLCAxODEsIDIyOSwgMTA2LCAxLCAyMzAsIAotICAgIDEyOSwgMjI5LCAxMDYsIDEsIDIzMCwgMTQ5LCAyMjksIDEwNiwgMSwgMjIxLCAxMSwgMjI5LCAxMDYsIDEsIDIwNywgMjQxLCAKLSAgICAyMjksIDEwNiwgMSwgMjA3LCAyMjksIDIyOSwgMTA2LCAxLCAyNDQsIDEyMCwgMjI5LCAxMDYsIDEsIDI0NCwgMTEwLCAyMjksIAotICAgIDEwNiwgMSwgMjE1LCAxODUsIDIyOSwgMTA2LCAxLCAyNDQsIDEwNCwgMjI5LCAxMDYsIDEsIDIyMSwgMjI3LCAyMjksIDEwNiwgCi0gICAgMSwgMjEwLCAyMiwgMjI5LCAxMDYsIDEsIDIwOSwgMTA4LCAyMjksIDEwNiwgMSwgMjQ0LCAyMTIsIDIyOSwgMTA2LCAxLCAKLSAgICAyNDQsIDEsIDIyOSwgMTA2LCAxLCAyMDEsIDIwMSwgMjI5LCAxMDYsIDEsIDE4NSwgMjI5LCAxMDYsIDEsIDIxOCwgMjA4LCAKLSAgICAyMjksIDEwNiwgMSwgMjQ5LCAzMiwgMjI5LCAxMDYsIDEsIDI0OCwgMTk4LCAyMjksIDEwNiwgMSwgMjQ4LCA5OCwgMjI5LCAKLSAgICAxMDYsIDEsIDE5MiwgMjI5LCAxMDYsIDEsIDE5OCwgMjI5LCAxMDYsIDEsIDIxNiwgMjIwLCAyMjksIDEwNiwgMSwgMjI4LCAKLSAgICAxMTMsIDIyOSwgMTA2LCAxLCAyMDYsIDg2LCAyMjksIDEwNiwgMSwgMjEzLCA5MCwgMjI5LCAxMDYsIDEsIDIxNSwgMzYsIAotICAgIDIyOSwgMTA2LCAxLCAxNTIsIDIyOSwgMTA2LCAyLCAyNTAsIDE4MCwgMjI5LCAxMDYsIDIyLCAyLCAyNTIsIDI1LCAyMjksIAotICAgIDEwNiwgMjIsIDIsIDc1LCAyMjksIDEwNiwgMjIsIDIsIDIzMSwgODMsIDIyOSwgMTA2LCAyMiwgMiwgNjgsIDIyOSwgMTA2LCAKLSAgICAyMiwgMiwgMjA2LCAxNzgsIDIyOSwgMTA2LCAyMiwgMiwgNzQsIDIyOSwgMTA2LCAyMiwgMiwgMjUxLCA2NCwgMjI5LCAxMDYsIAotICAgIDIyLCAyLCA3OCwgMjI5LCAxMDYsIDIyLCAyLCAyNTAsIDM0LCAyMjksIDEwNiwgMiwgMjIxLCA1MSwgMjI5LCAxMDYsIDIsIAotICAgIDIwNSwgMjA0LCAyMjksIDEwNiwgMTcsIDIwMiwgODQsIDIyOSwgMTA2LCAxNywgMTA1LCAyMjksIDEwNiwgMTcsIDEwOCwgCi0gICAgMjI5LCAxMDYsIDE3LCAxNDcsIDIyOSwgMTA2LCAxNywgMTQ5LCAyMjksIDEwNiwgMTcsIDE3MCwgMjI5LCAxMDYsIDE3LCAKLSAgICAxOTUsIDIyOSwgMTA2LCAxNywgMjEzLCAxMTEsIDIyOSwgMTA2LCAxNywgMTk5LCAyMjksIDEwNiwgMTcsIDIyMiwgNjMsIAotICAgIDIzOCwgNiwgMiwgMzksIDI1MCwgMTgxLCA1NSwgMjM4LCA2LCAyLCAyNDcsIDUyLCAyMzgsIDYsIDIsIDI1MCwgMTgwLCAKLSAgICAyMzgsIDYsIDIsIDIwNSwgMTk5LCAyMzgsIDYsIDEsIDYzLCAyMzgsIDYsIDEsIDI1MiwgMjUsIDIzOCwgNiwgMSwgNzUsIAotICAgIDIzOCwgNiwgMSwgMjMxLCA4MywgMjM4LCA2LCAxLCA2OCwgMjM4LCA2LCAxLCAyMDYsIDE3OCwgMjM4LCA2LCAxLCAxMjUsIAotICAgIDE0NiwgMjM4LCA2LCAxLCAxMjUsIDE1OSwgMjM4LCA2LCAxLCAyNDEsIDE2MSwgMjM4LCA2LCAxLCAyNTEsIDY0LCAyMzgsIAotICAgIDYsIDEsIDIyMCwgMTgsIDIzOCwgNiwgMSwgMjUwLCAzNCwgMjM4LCA2LCAxLCAxNzMsIDIzOCwgNiwgMSwgMjI5LCAxNDQsIAotICAgIDIzOCwgNiwgMSwgMjM5LCA4LCAyMzgsIDYsIDEsIDIzOCwgMTE5LCAyMzgsIDYsIDEsIDIyMiwgMjAzLCAyMzgsIDYsIDEsIAotICAgIDI0NywgOTIsIDIzOCwgNiwgMSwgMjQ2LCAxOTksIDIzOCwgNiwgMSwgMjMwLCAxODEsIDIzOCwgNiwgMSwgMjMwLCAxNDksIAotICAgIDIzOCwgNiwgMSwgMjIxLCAxMSwgMjM4LCA2LCAxLCAyMDcsIDI0MSwgMjM4LCA2LCAxLCAyMDcsIDIyOSwgMjM4LCA2LCAxLCAKLSAgICAyNDQsIDEyMCwgMjM4LCA2LCAxLCAyNDQsIDEwNCwgMjM4LCA2LCAxLCAyMjEsIDIyNywgMjM4LCA2LCAxLCAyMTAsIDIyLCAKLSAgICAyMzgsIDYsIDEsIDIwOSwgMTA4LCAyMzgsIDYsIDEsIDI0NCwgMjEyLCAyMzgsIDYsIDEsIDI0NCwgMSwgMjM4LCA2LCAxLCAKLSAgICAyMDEsIDIwMSwgMjM4LCA2LCAxLCAxODUsIDIzOCwgNiwgMSwgMjE4LCAyMDgsIDIzOCwgNiwgMSwgMjQ5LCAzMiwgMjM4LCAKLSAgICA2LCAxLCAyNDgsIDk4LCAyMzgsIDYsIDEsIDE5MiwgMjM4LCA2LCAxLCAxOTgsIDIzOCwgNiwgMSwgMjE2LCAyMjAsIDIzOCwgCi0gICAgNiwgMSwgMjI4LCAxMTMsIDIzOCwgNiwgMSwgMjI3LCA3NywgMjM4LCA2LCAxLCAyMDYsIDg2LCAyMzgsIDYsIDEsIDIxMywgCi0gICAgOTAsIDIzOCwgNiwgMSwgMjExLCAxNjQsIDIzOCwgNiwgMSwgMjE1LCAzNiwgMjM4LCA2LCAxLCAxNTIsIDIzOCwgNiwgMiwgCi0gICAgMjIxLCA1MSwgMjM4LCA2LCAyLCAyNTAsIDE3LCAyMzgsIDYsIDIyLCAyLCAyNTIsIDI1LCAyMzgsIDYsIDIyLCAyLCA3NSwgCi0gICAgMjM4LCA2LCAyMiwgMiwgMjMxLCA4MywgMjM4LCA2LCAyMiwgMiwgNjgsIDIzOCwgNiwgMjIsIDIsIDIwNiwgMTc4LCAyMzgsIAotICAgIDYsIDIyLCAyLCAxMjUsIDE0NiwgMjM4LCA2LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjM4LCA2LCAyMiwgMiwgMjQxLCAKLSAgICAxNjEsIDIzOCwgNiwgMjIsIDIsIDI1MSwgNjQsIDIzOCwgNiwgMjIsIDIsIDIyMCwgMTgsIDIzOCwgNiwgMjIsIDIsIDI1MCwgCi0gICAgMzQsIDIzOCwgNiwgMiwgMjA1LCAyMDQsIDIzOCwgNiwgMjIwLCAzOSwgMjM4LCA2LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIAotICAgIDIzOCwgNiwgMiwgMjE4LCA3NCwgMjM4LCA2LCAxLCAyMDYsIDUyLCAyNTAsIDE4MCwgMjM4LCA2LCAxLCAyMDYsIDUyLCA1MiwgCi0gICAgMjUwLCAxODAsIDIzOCwgNiwgMSwgMTI1LCAyMTUsIDE4NiwgMjM4LCA2LCAxLCAxMjUsIDIyNywgNzgsIDIzOCwgNiwgMjIsIAotICAgIDIsIDEyNSwgMTU5LCAyMzgsIDYsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDM5LCAyMzgsIDYsIDE3LCAyMDIsIDg0LCAzOSwgCi0gICAgMjM4LCA2LCAxNywgMTA1LCAzOSwgMjM4LCA2LCAxNywgMTA4LCAzOSwgMjM4LCA2LCAxNywgMTQ3LCAzOSwgMjM4LCA2LCAKLSAgICAxNywgMTQ5LCAzOSwgMjM4LCA2LCAxNywgMTcwLCAzOSwgMjM4LCA2LCAxNywgMTk1LCAzOSwgMjM4LCA2LCAxLCA2MywgMzksIAotICAgIDIzOCwgNiwgMSwgMTczLCAzOSwgMjM4LCA2LCAxLCAyMDEsIDIwMSwgMzksIDIzOCwgNiwgMSwgMjA1LCAyMzAsIDM5LCAKLSAgICAyMzgsIDYsIDEsIDE4NSwgMjA4LCAyMDQsIDI1MCwgMjA5LCAyMDgsIDIwNCwgMSwgNjMsIDIwOCwgMjA0LCAxLCAyNTIsIAotICAgIDI1LCAyMDgsIDIwNCwgMSwgNzUsIDIwOCwgMjA0LCAxLCAyMzEsIDgzLCAyMDgsIDIwNCwgMSwgNjgsIDIwOCwgMjA0LCAxLCAKLSAgICAyMDYsIDE3OCwgMjA4LCAyMDQsIDEsIDEyNSwgMTQ2LCAyMDgsIDIwNCwgMSwgMTI1LCAyMTUsIDE4NiwgMjA4LCAyMDQsIDEsIAotICAgIDEyNSwgMTU5LCAyMDgsIDIwNCwgMSwgMTI1LCAyMjcsIDc4LCAyMDgsIDIwNCwgMSwgNzQsIDIwOCwgMjA0LCAxLCAyNTEsIAotICAgIDY0LCAyMDgsIDIwNCwgMSwgNzgsIDIwOCwgMjA0LCAxLCAyNTAsIDM0LCAyMDgsIDIwNCwgMSwgMTczLCAyMDgsIDIwNCwgMSwgCi0gICAgMjI5LCAxNDQsIDIwOCwgMjA0LCAxLCAyMzksIDgsIDIwOCwgMjA0LCAxLCAyMzgsIDExOSwgMjA4LCAyMDQsIDEsIDIyMiwgCi0gICAgMjAzLCAyMDgsIDIwNCwgMSwgMjQ3LCA5MiwgMjA4LCAyMDQsIDEsIDI0NiwgMTk5LCAyMDgsIDIwNCwgMSwgMjMwLCAxODEsIAotICAgIDIwOCwgMjA0LCAxLCAyMzAsIDE0OSwgMjA4LCAyMDQsIDEsIDIyMSwgMTEsIDIwOCwgMjA0LCAxLCAyMDcsIDI0MSwgMjA4LCAKLSAgICAyMDQsIDEsIDIwNywgMjI5LCAyMDgsIDIwNCwgMSwgMjQ0LCAxMjAsIDIwOCwgMjA0LCAxLCAyNDQsIDEwNCwgMjA4LCAyMDQsIAotICAgIDEsIDIyMSwgMjI3LCAyMDgsIDIwNCwgMSwgMjEwLCAyMiwgMjA4LCAyMDQsIDEsIDIwOSwgMTA4LCAyMDgsIDIwNCwgMSwgCi0gICAgMjQ0LCAyMTIsIDIwOCwgMjA0LCAxLCAyNDQsIDEsIDIwOCwgMjA0LCAxLCAyMDEsIDIwMSwgMjA4LCAyMDQsIDEsIDE4NSwgCi0gICAgMjA4LCAyMDQsIDEsIDIxOCwgMjA4LCAyMDgsIDIwNCwgMSwgMjQ5LCAzMiwgMjA4LCAyMDQsIDEsIDI0OCwgOTgsIDIwOCwgCi0gICAgMjA0LCAxLCAxOTIsIDIwOCwgMjA0LCAxLCAxOTgsIDIwOCwgMjA0LCAxLCAyMTYsIDIyMCwgMjA4LCAyMDQsIDEsIDIyOCwgCi0gICAgMTEzLCAyMDgsIDIwNCwgMSwgMjA2LCA4NiwgMjA4LCAyMDQsIDEsIDIxMywgOTAsIDIwOCwgMjA0LCAxLCAyMTEsIDE2NCwgCi0gICAgMjA4LCAyMDQsIDEsIDIxNSwgMzYsIDIwOCwgMjA0LCAxLCAxNTIsIDIwOCwgMjA0LCAyMiwgMiwgMjUyLCAyNSwgMjA4LCAKLSAgICAyMDQsIDIyLCAyLCA3NSwgMjA4LCAyMDQsIDIyLCAyLCAyMzEsIDgzLCAyMDgsIDIwNCwgMjIsIDIsIDY4LCAyMDgsIDIwNCwgCi0gICAgMjIsIDIsIDIwNiwgMTc4LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMTQ2LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMjE1LCAKLSAgICAxODYsIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAxNTksIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMDgsIDIwNCwgCi0gICAgMjIsIDIsIDc0LCAyMDgsIDIwNCwgMjIsIDIsIDIxMiwgMjI4LCA3NCwgMjA4LCAyMDQsIDIyLCAyLCAyNTEsIDY0LCAyMDgsIAotICAgIDIwNCwgMjIsIDIsIDc4LCAyMDgsIDIwNCwgMjIsIDIsIDIxMiwgMjI4LCA3OCwgMjA4LCAyMDQsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICAyMDgsIDIwNCwgMiwgMjQ3LCA1MiwgMjA4LCAyMDQsIDIsIDI1MCwgMTgwLCAyMDgsIDIwNCwgMiwgMjA1LCAxOTksIDIwOCwgCi0gICAgMjA0LCAyLCAyMDUsIDIwNCwgMjA4LCAyMDQsIDIsIDIyMSwgNTEsIDIwOCwgMjA0LCAyLCAyNTAsIDE3LCAyMDgsIDIwNCwgCi0gICAgMjM3LCAxOTEsIDIwOCwgMjA0LCAyNTEsIDE0NiwgNTQsIDIwOCwgMjA0LCAyMjAsIDM5LCAyMDgsIDIwNCwgMTcsIDIwMiwgCi0gICAgODQsIDIwOCwgMjA0LCAxNywgMTA1LCAyMDgsIDIwNCwgMTcsIDEwOCwgMjA4LCAyMDQsIDE3LCAxNDcsIDIwOCwgMjA0LCAKLSAgICAxNywgMTQ5LCAyMDgsIDIwNCwgMTcsIDE3MCwgMjA4LCAyMDQsIDE3LCAxOTUsIDIwOCwgMjA0LCAxNywgMjEzLCAxMTEsIAotICAgIDIwOCwgMjA0LCAxNywgMTk5LCAyMDgsIDIwNCwgMTcsIDIyMiwgNjMsIDE4NiwgMSwgNjMsIDE4NiwgMSwgMjUyLCAyNSwgCi0gICAgMTg2LCAxLCA3NSwgMTg2LCAxLCAyMzEsIDgzLCAxODYsIDEsIDY4LCAxODYsIDEsIDIwNiwgMTc4LCAxODYsIDEsIDEyNSwgCi0gICAgMTQ2LCAxODYsIDEsIDEyNSwgMjE1LCAxODYsIDE4NiwgMSwgMTI1LCAxNTksIDE4NiwgMSwgMTI1LCAyMjcsIDc4LCAxODYsIAotICAgIDEsIDc0LCAxODYsIDEsIDI1MSwgNjQsIDE4NiwgMSwgNzgsIDE4NiwgMSwgMjUwLCAzNCwgMTg2LCAxLCAxNzMsIDE4NiwgMSwgCi0gICAgMjI5LCAxNDQsIDE4NiwgMSwgMjM5LCA4LCAxODYsIDEsIDIzOCwgMTE5LCAxODYsIDEsIDIyMiwgMjAzLCAxODYsIDEsIAotICAgIDI0NywgOTIsIDE4NiwgMSwgMjQ2LCAxOTksIDE4NiwgMSwgMjMwLCAxODEsIDE4NiwgMSwgMjMwLCAxNDksIDE4NiwgMSwgCi0gICAgMjIxLCAxMSwgMTg2LCAxLCAyMDcsIDI0MSwgMTg2LCAxLCAyMDcsIDIyOSwgMTg2LCAxLCAyNDQsIDEyMCwgMTg2LCAxLCAKLSAgICAyNDQsIDEwNCwgMTg2LCAxLCAyMjEsIDIyNywgMTg2LCAxLCAyMTAsIDIyLCAxODYsIDEsIDIwOSwgMTA4LCAxODYsIDEsIAotICAgIDI0NCwgMjEyLCAxODYsIDEsIDI0NCwgMSwgMTg2LCAxLCAyMDEsIDIwMSwgMTg2LCAxLCAxODUsIDE4NiwgMSwgMjE4LCAKLSAgICAyMDgsIDE4NiwgMSwgMjQ5LCAzMiwgMTg2LCAxLCAyNDgsIDk4LCAxODYsIDEsIDE5MiwgMTg2LCAxLCAxOTgsIDE4NiwgMSwgCi0gICAgMjE2LCAyMjAsIDE4NiwgMSwgMjI4LCAxMTMsIDE4NiwgMSwgMjA2LCA4NiwgMTg2LCAxLCAyMTMsIDkwLCAxODYsIDEsIAotICAgIDIxMSwgMTY0LCAxODYsIDEsIDIxNSwgMzYsIDE4NiwgMSwgMTUyLCAxODYsIDIyLCAyLCAyNTIsIDI1LCAxODYsIDIyLCAyLCAKLSAgICA3NSwgMTg2LCAyMiwgMiwgMjMxLCA4MywgMTg2LCAyMiwgMiwgNjgsIDE4NiwgMjIsIDIsIDIwNiwgMTc4LCAxODYsIDIyLCAKLSAgICAyLCAxMjUsIDE0NiwgMTg2LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTg2LCAyMiwgMiwgNzQsIDE4NiwgMjIsIDIsIDI1MSwgCi0gICAgNjQsIDE4NiwgMjIsIDIsIDc4LCAxODYsIDIyLCAyLCAyNTAsIDM0LCAxODYsIDIsIDI0NywgNTIsIDE4NiwgMiwgMjUwLCAKLSAgICAxODAsIDE4NiwgMiwgMjA1LCAxOTksIDE4NiwgMiwgMjA1LCAyMDQsIDE4NiwgMiwgMjIxLCA1MSwgMTg2LCAyLCAyMTIsIAotICAgIDE1NywgMTg2LCAyNDQsIDE2NiwgMTg2LCA1MiwgMjQ0LCAxNjYsIDE4NiwgMjEzLCAxMzEsIDI0MywgODUsIDE4NiwgMjEzLCAKLSAgICAxMzEsIDE0MiwgMTg2LCAyMTYsIDk4LCAyMjUsIDkyLCAxODYsIDIxNiwgOTgsIDIyNSwgOTEsIDE4NiwgMjE2LCA5OCwgCi0gICAgMjI1LCA5MCwgMTg2LCAyNDEsIDg0LCA3NiwgMjA5LCAxMTMsIDgyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIwOCwgODAsIAotICAgIDI1LCAyMDcsIDkyLCAyMTksIDIzMiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDgwLCAyNSwgMjQyLCA4MywgMjQ1LCAKLSAgICAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCAyNDUsIDEzNywgMTg2LCAyMTQsIAotICAgIDE2OCwgMTMxLCAzLCAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDUyLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAKLSAgICAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDIwOCwgNzAsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDUyLCAyMTUsIAotICAgIDI1MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCA1MiwgMjE1LCAyNTMsIDMsIDIxNiwgMTYyLCAxODYsIDIxNCwgMTY4LCAxMzEsIAotICAgIDMsIDUyLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDcwLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgCi0gICAgMTMxLCAzLCAyMTcsIDU4LCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMTMsIDEyOCwgMjQ1LCAxMzcsIAotICAgIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCA1OSwgMjUsIDIxNiwgMTYyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgCi0gICAgNTksIDI1LCAxMjAsIDI0MSwgODYsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCA1OSwgMjUsIDIzOSwgMTQ3LCAyNDEsIAotICAgIDg2LCAxODYsIDEsIDIwOSwgMzIsIDI1MCwgMjU1LCA3NSwgMTg2LCAxLCAyMDcsIDEzNiwgMjUwLCAyNTUsIDc1LCAxODYsIAotICAgIDEsIDIwNywgMTM2LCAyNTAsIDI1NSwgMjMxLCA4MywgMTg2LCAxLCAyNTAsIDI1NSwgNjgsIDE4NiwgMjIsIDIsIDI1MCwgCi0gICAgMjU1LCA2OCwgMTg2LCAyMiwgMiwgMjUwLCAyNTUsIDIwNiwgMTc4LCAyMjQsIDc0LCAxLCA2MywgMjI0LCA3NCwgMSwgMjUyLCAKLSAgICAyNSwgMjI0LCA3NCwgMSwgNzUsIDIyNCwgNzQsIDEsIDIzMSwgODMsIDIyNCwgNzQsIDEsIDY4LCAyMjQsIDc0LCAxLCAyMDYsIAotICAgIDE3OCwgMjI0LCA3NCwgMSwgMTI1LCAxNDYsIDIyNCwgNzQsIDEsIDEyNSwgMjE1LCAxODYsIDIyNCwgNzQsIDEsIDEyNSwgCi0gICAgMTU5LCAyMjQsIDc0LCAxLCAxMjUsIDIyNywgNzgsIDIyNCwgNzQsIDEsIDc0LCAyMjQsIDc0LCAxLCAyNTEsIDY0LCAyMjQsIAotICAgIDc0LCAxLCA3OCwgMjI0LCA3NCwgMSwgMjUwLCAzNCwgMjI0LCA3NCwgMSwgMTczLCAyMjQsIDc0LCAxLCAyMjksIDE0NCwgCi0gICAgMjI0LCA3NCwgMSwgMjM5LCA4LCAyMjQsIDc0LCAxLCAyMzgsIDExOSwgMjI0LCA3NCwgMSwgMjIyLCAyMDMsIDIyNCwgNzQsIAotICAgIDEsIDI0NywgOTIsIDIyNCwgNzQsIDEsIDI0NiwgMTk5LCAyMjQsIDc0LCAxLCAyMzAsIDE4MSwgMjI0LCA3NCwgMSwgMjMwLCAKLSAgICAxNDksIDIyNCwgNzQsIDEsIDIyMSwgMTEsIDIyNCwgNzQsIDEsIDIwNywgMjQxLCAyMjQsIDc0LCAxLCAyMDcsIDIyOSwgCi0gICAgMjI0LCA3NCwgMSwgMjQ0LCAxMjAsIDIyNCwgNzQsIDEsIDI0NCwgMTA0LCAyMjQsIDc0LCAxLCAyMjEsIDIyNywgMjI0LCAKLSAgICA3NCwgMSwgMjEwLCAyMiwgMjI0LCA3NCwgMSwgMjA5LCAxMDgsIDIyNCwgNzQsIDEsIDI0NCwgMjEyLCAyMjQsIDc0LCAxLCAKLSAgICAyNDQsIDEsIDIyNCwgNzQsIDEsIDIwMSwgMjAxLCAyMjQsIDc0LCAxLCAxODUsIDIyNCwgNzQsIDEsIDIxOCwgMjA4LCAyMjQsIAotICAgIDc0LCAxLCAyNDksIDMyLCAyMjQsIDc0LCAxLCAyNDgsIDk4LCAyMjQsIDc0LCAxLCAxOTIsIDIyNCwgNzQsIDEsIDE5OCwgCi0gICAgMjI0LCA3NCwgMSwgMjE2LCAyMjAsIDIyNCwgNzQsIDEsIDIyOCwgMTEzLCAyMjQsIDc0LCAxLCAyMDYsIDg2LCAyMjQsIDc0LCAKLSAgICAxLCAyMTMsIDkwLCAyMjQsIDc0LCAxLCAyMTEsIDE2NCwgMjI0LCA3NCwgMSwgMjE1LCAzNiwgMjI0LCA3NCwgMSwgMTUyLCAKLSAgICAyMjQsIDc0LCAxLCAyMjcsIDc3LCAyMjQsIDc0LCAyMiwgMiwgMjUyLCAyNSwgMjI0LCA3NCwgMjIsIDIsIDc1LCAyMjQsIAotICAgIDc0LCAyMiwgMiwgMjMxLCA4MywgMjI0LCA3NCwgMjIsIDIsIDY4LCAyMjQsIDc0LCAyMiwgMiwgMjA2LCAxNzgsIDIyNCwgCi0gICAgNzQsIDIyLCAyLCAxMjUsIDE0NiwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIyNCwgNzQsIDIyLCAyLCAxMjUsIAotICAgIDE1OSwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjI0LCA3NCwgMjIsIDIsIDc0LCAyMjQsIDc0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMjI0LCA3NCwgMjIsIDIsIDc4LCAyMjQsIDc0LCAyMiwgMiwgMjUwLCAzNCwgMjI0LCA3NCwgMiwgMjUwLCAKLSAgICAxODAsIDIyNCwgNzQsIDIsIDIwNSwgMTk5LCAyMjQsIDc0LCAyLCAyMDUsIDIwNCwgMjI0LCA3NCwgMiwgMjUwLCAxMjMsIAotICAgIDIyNCwgNzQsIDI0NCwgMTY2LCAyMjQsIDc0LCA1MiwgMjQ0LCAxNjYsIDIyNCwgNzQsIDI1MSwgMTQ2LCA1NCwgMjI0LCA3NCwgCi0gICAgMiwgMjM2LCAwLCAyMjQsIDc0LCAxNywgMjAyLCA4NCwgMjI0LCA3NCwgMTcsIDEwNSwgMjI0LCA3NCwgMTcsIDEwOCwgMjI0LCAKLSAgICA3NCwgMTcsIDE0NywgMjI0LCA3NCwgMTcsIDE0OSwgMjI0LCA3NCwgMTcsIDE3MCwgMjI0LCA3NCwgMTcsIDE5NSwgMjI0LCAKLSAgICA3NCwgMTcsIDIxMywgMTExLCAyMjQsIDc0LCAxNywgMTk5LCAyMjQsIDc0LCAxNywgMjIyLCA2MywgMjA5LCAyMzksIDEsIAotICAgIDYzLCAyMDksIDIzOSwgMSwgMjUyLCAyNSwgMjA5LCAyMzksIDEsIDc1LCAyMDksIDIzOSwgMSwgMjMxLCA4MywgMjA5LCAKLSAgICAyMzksIDEsIDY4LCAyMDksIDIzOSwgMSwgMjA2LCAxNzgsIDIwOSwgMjM5LCAxLCA3NCwgMjA5LCAyMzksIDEsIDI1MSwgNjQsIAotICAgIDIwOSwgMjM5LCAxLCA3OCwgMjA5LCAyMzksIDEsIDI1MCwgMzQsIDIwOSwgMjM5LCAxLCAxNzMsIDIwOSwgMjM5LCAxLCAKLSAgICAyMjksIDE0NCwgMjA5LCAyMzksIDEsIDIzOSwgOCwgMjA5LCAyMzksIDEsIDIzOCwgMTE5LCAyMDksIDIzOSwgMSwgMjIyLCAKLSAgICAyMDMsIDIwOSwgMjM5LCAxLCAyNDcsIDkyLCAyMDksIDIzOSwgMSwgMjQ2LCAxOTksIDIwOSwgMjM5LCAxLCAyMzAsIDE4MSwgCi0gICAgMjA5LCAyMzksIDEsIDIzMCwgMTQ5LCAyMDksIDIzOSwgMSwgMjIxLCAxMSwgMjA5LCAyMzksIDEsIDIwNywgMjQxLCAyMDksIAotICAgIDIzOSwgMSwgMjA3LCAyMjksIDIwOSwgMjM5LCAxLCAyNDQsIDEyMCwgMjA5LCAyMzksIDEsIDI0NCwgMTA0LCAyMDksIDIzOSwgCi0gICAgMSwgMjIxLCAyMjcsIDIwOSwgMjM5LCAxLCAyMTAsIDIyLCAyMDksIDIzOSwgMSwgMjA5LCAxMDgsIDIwOSwgMjM5LCAxLCAKLSAgICAyNDQsIDIxMiwgMjA5LCAyMzksIDEsIDI0NCwgMSwgMjA5LCAyMzksIDEsIDIwMSwgMjAxLCAyMDksIDIzOSwgMSwgMTg1LCAKLSAgICAyMDksIDIzOSwgMSwgMjE4LCAyMDgsIDIwOSwgMjM5LCAxLCAyNDksIDMyLCAyMDksIDIzOSwgMSwgMjQ4LCA5OCwgMjA5LCAKLSAgICAyMzksIDEsIDE5MiwgMjA5LCAyMzksIDEsIDE5OCwgMjA5LCAyMzksIDEsIDIxNiwgMjIwLCAyMDksIDIzOSwgMSwgMjI4LCAKLSAgICAxMTMsIDIwOSwgMjM5LCAxLCAyMDYsIDg2LCAyMDksIDIzOSwgMSwgMjEzLCA5MCwgMjA5LCAyMzksIDEsIDIxNSwgMzYsIAotICAgIDIwOSwgMjM5LCAxLCAxNTIsIDIwOSwgMjM5LCAxLCAyMTUsIDE4NSwgMjA5LCAyMzksIDIsIDI1MCwgMTgwLCAyMDksIDIzOSwgCi0gICAgMiwgMjA1LCAxOTksIDIwOSwgMjM5LCAyMiwgMiwgMjUyLCAyNSwgMjA5LCAyMzksIDIyLCAyLCA3NSwgMjA5LCAyMzksIDIyLCAKLSAgICAyLCAyMzEsIDgzLCAyMDksIDIzOSwgMjIsIDIsIDY4LCAyMDksIDIzOSwgMjIsIDIsIDIwNiwgMTc4LCAyMDksIDIzOSwgMjIsIAotICAgIDIsIDc0LCAyMDksIDIzOSwgMjIsIDIsIDI1MSwgNjQsIDIwOSwgMjM5LCAyMiwgMiwgNzgsIDIwOSwgMjM5LCAyMiwgMiwgCi0gICAgMjUwLCAzNCwgMjA5LCAyMzksIDIsIDIwNSwgMjA0LCAyMDksIDIzOSwgMiwgMjIxLCA1MSwgMjA5LCAyMzksIDE3LCAyMDIsIAotICAgIDg0LCAyMDksIDIzOSwgMTcsIDEwNSwgMjA5LCAyMzksIDE3LCAxMDgsIDIwOSwgMjM5LCAxNywgMTQ3LCAyMDksIDIzOSwgCi0gICAgMTcsIDE0OSwgMjA5LCAyMzksIDE3LCAxNzAsIDIwOSwgMjM5LCAxNywgMTk1LCAyMDksIDIzOSwgMTcsIDIxMywgMTExLCAKLSAgICAyMDksIDIzOSwgMTcsIDE5OSwgMjA5LCAyMzksIDE3LCAyMjIsIDYzLCAyNTEsIDY4LCAxLCAxNzMsIDI1MSwgNjgsIDEsIAotICAgIDIyOSwgMTQ0LCAyNTEsIDY4LCAxLCAyMjIsIDIwMywgMjUxLCA2OCwgMSwgMjAxLCAyMDEsIDI1MSwgNjgsIDEsIDIxMCwgCi0gICAgMjIsIDI1MSwgNjgsIDEsIDI1MCwgMjU1LCAyMTAsIDIyLCAyNTEsIDY4LCAxLCAxODUsIDI1MSwgNjgsIDEsIDIxOCwgMjA4LCAKLSAgICAyNTEsIDY4LCAxLCAyNDksIDMyLCAyNTEsIDY4LCAxLCAxOTIsIDI1MSwgNjgsIDEsIDIzMCwgMTgxLCAyNTEsIDY4LCAxLCAKLSAgICAyNDYsIDE5OSwgMjUxLCA2OCwgMSwgMjA5LCAxMDgsIDI1MSwgNjgsIDEsIDIxNiwgMjIwLCAyNTEsIDY4LCAxLCAyMjgsIAotICAgIDExMywgMjUxLCA2OCwgMSwgMjE1LCAzNiwgMjUxLCA2OCwgMSwgMjIxLCAxMSwgMjUxLCA2OCwgMSwgMTUyLCAyNTEsIDY4LCAKLSAgICAxLCA2MywgMjUxLCA2OCwgMSwgMjQ0LCAyMTIsIDI1MSwgNjgsIDEsIDI0NCwgMSwgMjUxLCA2OCwgMSwgMjM5LCA4LCAyNTEsIAotICAgIDY4LCAxLCAyNTAsIDI1NSwgMjM5LCA4LCAyNTEsIDY4LCAxLCAyMzgsIDExOSwgMjUxLCA2OCwgMSwgMjQ4LCA5OCwgMjUxLCAKLSAgICA2OCwgMSwgMjMwLCAxNDksIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAyMjgsIDExMywgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIAotICAgIDIxNiwgMjIwLCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgMjI3LCAxMzUsIDIxNiwgMjIwLCAyNTEsIDY4LCAyMiwgMiwgNjMsIAotICAgIDI1MSwgNjgsIDIyLCAyLCAyNTIsIDI1LCAyNTEsIDY4LCAyMiwgMiwgNzUsIDI1MSwgNjgsIDIyLCAyLCAyMzEsIDgzLCAKLSAgICAyNTEsIDY4LCAyMiwgMiwgNjgsIDI1MSwgNjgsIDIyLCAyLCAyMDYsIDE3OCwgMjUxLCA2OCwgMjIsIDIsIDc0LCAyNTEsIAotICAgIDY4LCAyMiwgMiwgMjUwLCAxMywgMjUxLCA2OCwgMjIsIDIsIDc4LCAyNTEsIDY4LCAyMiwgMiwgMjUxLCA2NCwgMjUxLCA2OCwgCi0gICAgMjIsIDIsIDI1MCwgMjQ3LCAyNTEsIDY4LCAyLCAyMjksIDg2LCAyNTEsIDY4LCAxNywgMjAyLCA4NCwgMjUxLCA2OCwgMTcsIAotICAgIDEwNSwgMjUxLCA2OCwgMTcsIDEwOCwgMjUxLCA2OCwgMTcsIDE0NywgMjUxLCA2OCwgMTcsIDE0OSwgMjUxLCA2OCwgMTcsIAotICAgIDE3MCwgMjUxLCA2OCwgMTcsIDE5NSwgMjUxLCA2OCwgMTcsIDIxMywgMTExLCAyNTEsIDY4LCAxNywgMTk5LCAyNTEsIDY4LCAKLSAgICAxNywgMjIyLCA2MywgMjUxLCA2OCwgNDIsIDIwOSwgMTUyLCAyNTEsIDY4LCA0MiwgMjA3LCAxNTEsIDI1MSwgNjgsIDIsIDUsIAotICAgIDIxNCwgMTY3LCAyNTEsIDY4LCAyLCAyMTQsIDE2NywgMjUxLCA2OCwgMiwgMjE1LCAxMzYsIDI1MSwgNjgsIDE2LCAyMDUsIAotICAgIDIzMCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIyLCAyMDIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDYzLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDQsIDMwLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDIxMywgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNiwgMSwgMTk4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgCi0gICAgNiwgMSwgMjMxLCA4MywgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA2LCAxNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIAotICAgIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCA3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCAyMjMsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDYsIDEsIDIzOSwgOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjI5LCAyNiwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNiwgMSwgMjQxLCA1NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAxOTcsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIAotICAgIDEsIDIwNywgMzEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0MSwgNzUsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMCwgCi0gICAgNzYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNywgMjM2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjEsIDM3LCAKLSAgICAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDQsIDIxMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCA0OSwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0NywgMTkzLCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA2LCAxLCAyMTcsIDE5MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM2LCAyMjgsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDYsIDEsIDIzNiwgMTI0LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzYsIDUxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAKLSAgICAxLCAyMzcsIDkyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMTEsIDExNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgCi0gICAgMjEyLCAxNDIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNSwgMTkwLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjIsIAotICAgIDIwMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNjMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNCwgMzAsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDUsIDEsIDIwMiwgMjEzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAxOTgsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDUsIDEsIDIwMiwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzEsIDgzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKLSAgICAxLCAyMDYsIDE3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNzQsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDc4LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDIyMywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM5LCA4LCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA1LCAxLCAyMjksIDI2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDEsIDU2LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA1LCAxLCAyMDIsIDE5NywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA3LCAzMSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCi0gICAgMSwgMjQxLCA3NSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIwLCA3NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA3LCAKLSAgICAyMzYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMSwgMzcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI0NCwgMjEyLCAKLSAgICAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDQ5LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDI0NywgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQ3LCAxOTMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIxNywgMTkxLCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA1LCAxLCAyMzYsIDIyOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM2LCAxMjQsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDUsIDEsIDIzNiwgNTEsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzNywgOTIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAotICAgIDEsIDIxMSwgMTE2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMTIsIDE0MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgCi0gICAgMjA1LCAxOTAsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAyMDIsIDg0LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTA1LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCAxNywgMTA4LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgCi0gICAgMTQ5LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTcwLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTk1LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCAxNywgMjEzLCAxMTEsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxOTksIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAyMjIsIAotICAgIDYzLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjA5LCAxNTIsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMDcsIDE1MSwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNDIsIDIwOSwgNTMsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMzksIDE1MywgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNDIsIDI0MCwgMTgsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMTIsIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgCi0gICAgMjEzLCAxMDUsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyNDEsIDEzNCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIyMiwgNTgsIAotICAgIDIwNCwgOTIsIDI0NiwgNDgsIDIyMCwgMzksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE4NSwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTczLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMjgsIDExMywgMjE5LCAKLSAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTkyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDQsIDIxMiwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjAyLCAxMTYsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDIwNiwgODYsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIyMiwgMjAzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCAxNTIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIzOSwgOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgMjI5LCAxNDQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxNSwgMzYsIDIxOSwgNDksIDI0NiwgNjYsIAotICAgIDIzNywgNzcsIDEsIDI0OSwgMzIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NywgOTIsIDIxOSwgNDksIDI0NiwgCi0gICAgNjYsIDIzNywgNzcsIDEsIDIxMCwgMjIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwOSwgMTA4LCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDEsIDIwMSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjE4LCAyMDgsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxNiwgMjIwLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICAyNDAsIDEwOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ2LCAxOTksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDYzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA3NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMSwgNzUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDc4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICA2OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjA3LCAzOSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgMjM1LCAxNzEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMTksIDE4NCwgMjE5LCA0OSwgMjQ2LCA2NiwgCi0gICAgMjM3LCA3NywgMSwgNDYsIDIzMCwgNTQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMTAsIDY5LCAyMTksIAotICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjI2LCAxODUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAKLSAgICAyMjMsIDE2MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDE1OSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgNDYsIDIwNCwgMTQ0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjIyLCAyMDUsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMDMsIDEyNCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIAotICAgIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIDIwOCwgMTYxLCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMjM4LCA0NSwgMjExLCA2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMjE1LCAyNDUsIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAxNDMsIAotICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDIzOCwgNDUsIDIxMSwgNjIsIDI0MCwgNSwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMjE0LCAyMzksIDIwOCwgMTYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMTQzLCAxNjMsIAotICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIAotICAgIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMjA4LCAxNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgCi0gICAgNjIsIDIwNiwgNjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNCwgMTQ5LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIAotICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMTQzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDIyNiwgMjU0LCAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNiwgMjU0LCAyMDgsIDE2MSwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCA2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMjI2LCAyNTQsIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNiwgMjU0LCAxNDMsIAotICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCA2MiwgMjQwLCA1LCA5LCAyLCA2MywgOSwgCi0gICAgMiwgMzQsIDIzLCA2MywgOSwgMiwgMzQsIDIzLCAyNDksIDE1LCA5LCAyLCAzNCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgCi0gICAgOSwgMiwgMzQsIDIzLCAxNTIsIDksIDIsIDM0LCAyMywgMjMxLCA4NSwgOSwgMiwgMzQsIDIzLCAyMjgsIDkzLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMzQsIDIzLCAyMjMsIDE5OSwgOSwgMiwgMzQsIDIzLCAyMTUsIDIyLCA5LCAyLCAyNTQsIDM0LCA5LCAyLCAKLSAgICAyNTEsIDIzMiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyNTAsIDczLCA5LCAyLCAyNTEsIDIzMywgMjMsIDI0MiwgMzAsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzOCwgMjQ2LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzOCwgMjMzLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAxNTIsIDksIDIsIDI1MSwgMjMzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAotICAgIDIsIDI1MSwgMjMzLCAyMywgMjMxLCA1OSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjgsIDk0LCA5LCAyLCAyNTEsIDIzMywgCi0gICAgMjMsIDIxMywgMjcsIDksIDIsIDI1MSwgMjMzLCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDI1MSwgMjMzLCAKLSAgICAyMzcsIDIwOCwgOSwgMiwgMjUxLCAxNDksIDksIDIsIDI1MSwgMTUwLCAyMywgMjQ4LCAyNTIsIDksIDIsIDI1MSwgMTUwLCAKLSAgICAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyNTEsIDE1MCwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAKLSAgICAyNTEsIDE1MCwgMjMsIDIxMywgODgsIDksIDIsIDI1MSwgMTUwLCAyMywgMjA5LCAyNDIsIDksIDIsIDI1MSwgMTIyLCA5LCAKLSAgICAyLCAyNTEsIDQ3LCA5LCAyLCAyNTEsIDQ4LCAyMywgMjQxLCAyMiwgOSwgMiwgMjUxLCA0OCwgMjMsIDIxMiwgMjQ1LCA5MSwgCi0gICAgMjM4LCA1NSwgOSwgMiwgMjUxLCAzOSwgOSwgMiwgMjUxLCA0MCwgMjMsIDI1MSwgMzksIDksIDIsIDI1MSwgNDAsIDIzLCAKLSAgICAyNDMsIDE4NiwgOSwgMiwgMjUxLCA0MCwgMjMsIDIzOCwgNTUsIDksIDIsIDI1MSwgNDAsIDIzLCAxNTIsIDksIDIsIDI1MSwgCi0gICAgNDAsIDIzLCAyMzAsIDI3LCA5LCAyLCAyNTEsIDQwLCAyMywgMjI5LCAxMDAsIDksIDIsIDI1MSwgNDAsIDIzLCAyMTMsIDQzLCAKLSAgICA5LCAyLCAyNTEsIDQwLCAyMywgMjA2LCAxODYsIDksIDIsIDI1MSwgMzYsIDksIDIsIDI1MSwgMjgsIDksIDIsIDI1MCwgCi0gICAgMjQzLCA5LCAyLCAyNTAsIDI0NCwgMjMsIDIxMywgNDMsIDksIDIsIDI1MCwgMjMxLCA5LCAyLCAyNTAsIDIzMiwgMTE1LCAKLSAgICAyNTAsIDIzMSwgOSwgMiwgMjUwLCAyMzIsIDEyNiwgMjA4LCAyMTksIDksIDIsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NywgCi0gICAgMjE5LCAyNTEsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NiwgOSwgMiwgMjUwLCAyMzIsIDkxLCAyMjMsIDk3LCAyMTEsIDE3NiwgCi0gICAgOSwgMiwgMjUwLCAyMDAsIDksIDIsIDI1MCwgMTcwLCA5LCAyLCAyNTAsIDEzOCwgOSwgMiwgMjUwLCAxMzksIDIzLCAyMjgsIAotICAgIDE4MywgOSwgMiwgMjUwLCAxMTAsIDksIDIsIDI1MCwgODAsIDksIDIsIDI1MCwgNzUsIDksIDIsIDI1MCwgNzYsIDIwMiwgCi0gICAgMzUsIDIwOSwgMTQxLCA5LCAyLCAyNTAsIDc2LCAyMzAsIDMxLCAyMDksIDE0MSwgOSwgMiwgMjUwLCA3NiwgMTE1LCAyNTAsIAotICAgIDc2LCAyMDcsIDE5OCwgMTE1LCAyMDcsIDE5OCwgMjA3LCAxOTgsIDExNSwgMjA3LCAxOTgsIDIxOSwgOTYsIDksIDIsIDI1MCwgCi0gICAgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIDc1LCA5LCAyLCAyNTAsIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCAKLSAgICA3NiwgMjQ1LCAxMjQsIDI1MCwgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIDc1LCA5LCAyLCAyNTAsIDczLCA5LCAyLCAKLSAgICAyNTAsIDY5LCA5LCAyLCAyNDksIDMyLCA5LCAyLCAyNDksIDE1LCA5LCAyLCAyNDksIDksIDksIDIsIDI0OSwgMywgOSwgMiwgCi0gICAgMjQ4LCAyNTMsIDksIDIsIDI0OCwgMjU0LCAxMTUsIDI0OCwgMjUzLCA5LCAyLCAyNDgsIDI1MiwgOSwgMiwgMTQyLCA5LCAyLCAKLSAgICAyNDgsIDIzMCwgOSwgMiwgMjQ4LCA4NiwgOSwgMiwgMjQ4LCA4NywgMjMsIDYzLCA5LCAyLCAyNDgsIDg3LCAyMywgMjM4LCAKLSAgICAyMjQsIDksIDIsIDI0OCwgODcsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQ3LCAxOTMsIDksIDIsIDI0NywgCi0gICAgMTk0LCAxMTUsIDI0NywgMTk0LCAyNTEsIDIzMiwgOSwgMiwgMjQ3LCAxOTQsIDExNSwgMjQ3LCAxOTQsIDIwNiwgMjU1LCA5LCAKLSAgICAyLCAyNDcsIDE5NCwgMjQ1LCAxMjQsIDI0NywgMTkzLCA5LCAyLCAyNDcsIDE3MSwgOSwgMiwgMjQ3LCAxNzIsIDExNSwgCi0gICAgMjQ3LCAxNzEsIDksIDIsIDI0NywgMTYwLCA5LCAyLCAyNDcsIDE1OSwgOSwgMiwgMjQ0LCAyMTIsIDksIDIsIDI0NCwgMjAzLCAKLSAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDM0LCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIAotICAgIDIzLCAyNTAsIDI0MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgCi0gICAgNjksIDIzLCAyNDgsIDg2LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOSwgOCwgOSwgMiwgMjQ0LCAyMDQsIAotICAgIDIyOSwgNjksIDIzLCAyMzksIDksIDkxLCAyMjUsIDc5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOCwgODEsIAotICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM4LCA2MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzcsIAotICAgIDIxOSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAxNTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjMwLCAKLSAgICAyMjQsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjMwLCAyMjUsIDkxLCAyMjYsIDIzOSwgOSwgMiwgMjQ0LCAyMDQsIAotICAgIDIyOSwgNjksIDIzLCAyMzAsIDEyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyNDQsIAotICAgIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjM5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjQwLCA5MSwgCi0gICAgMjI1LCA3OCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIAotICAgIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NiwgOSwgMiwgCi0gICAgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMTIsIDE2MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMDksIDI0MiwgCi0gICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMDcsIDQxLCA5MSwgMjM4LCA2MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgCi0gICAgNjksIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjQ0LCAxNzUsIDksIDIsIDI0NCwgMTU0LCA5LCAyLCAyNDQsIDE1MywgOSwgMiwgCi0gICAgMjQ0LCAxNTIsIDksIDIsIDI0MywgMjMzLCA5LCAyLCAyNDMsIDIxNSwgOSwgMiwgMjQzLCAxODgsIDksIDIsIDI0MywgMTg5LCAKLSAgICAyMywgMjEzLCA0MywgOSwgMiwgMjQzLCAxODYsIDksIDIsIDI0MywgMTc2LCA5LCAyLCAyNDMsIDE3NywgMjI5LCAyMzIsIAotICAgIDEwNiwgMjM3LCAyMDksIDI0MywgMTU2LCA5LCAyLCAyNDMsIDE1NiwgOSwgMiwgMjQyLCA0MiwgOSwgMiwgMjQyLCA0MywgCi0gICAgMTE1LCAyNDIsIDQyLCA5LCAyLCAyNDIsIDQzLCAyMzcsIDIwOCwgOSwgMiwgMjQyLCA0MywgMjEzLCAyNCwgOSwgMiwgMjQyLCAKLSAgICA0MCwgOSwgMiwgMjQyLCA0MSwgMjMsIDI0MSwgNCwgOSwgMiwgMjQyLCAzOSwgOSwgMiwgMjQyLCAzNywgOSwgMiwgMjQyLCAKLSAgICAzNiwgOSwgMiwgMjQyLCAzNSwgOSwgMiwgMjQyLCAzMSwgOSwgMiwgMjQyLCAyOSwgOSwgMiwgMjQyLCAzMCwgMjM3LCAyMDgsIAotICAgIDksIDIsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjQyLCAyOCwgOSwgMiwgMjQyLCAyMSwgOSwgMiwgCi0gICAgNzQsIDksIDIsIDE4OCwgMjMsIDIxOSwgOTYsIDksIDIsIDE4OCwgMTE1LCAxODgsIDIyMSwgNDEsIDExNSwgMjIxLCA0MCwgCi0gICAgOSwgMiwgMjQxLCAxOTAsIDksIDIsIDI0MSwgMTkxLCAyMywgMzQsIDkxLCAyMzcsIDE2MCwgOTEsIDI0NCwgMjEyLCA5LCAyLCAKLSAgICAyNDEsIDE5MSwgMjMsIDIzOCwgMjI0LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyNDEsIDE5MSwgMjMsIAotICAgIDIxNSwgOCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDEsIDE5MSwgMjMsIDY4LCA5LCAyLCAyNDEsIAotICAgIDE2MywgOSwgMiwgMjQxLCAxNTEsIDksIDIsIDI0MSwgMTIyLCA5LCAyLCAyNDEsIDkyLCA5LCAyLCAyNDEsIDkzLCAyMywgCi0gICAgMjM4LCAyMzIsIDksIDIsIDI0MSwgOTMsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDI0MSwgOTMsIDIzLCAyMjUsIAotICAgIDIwLCA5LCAyLCAyNDEsIDkzLCAyNDUsIDEyNCwgMjQxLCA5MiwgOSwgMiwgMjQxLCA5MywgMjE5LCAyNTEsIDI0MSwgOTIsIAotICAgIDksIDIsIDI0MSwgOTMsIDIxMSwgMTc2LCA5LCAyLCAyNDEsIDI1LCA5LCAyLCAyNDEsIDIyLCA5LCAyLCAyNDEsIDQsIDksIAotICAgIDIsIDI0MCwgMTc5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDYzLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDM0LCA5MSwgMjI4LCAzMCwgCi0gICAgOSwgMiwgMjQwLCAxODAsIDIzLCAzNCwgOTEsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIAotICAgIDI1MCwgMjMxLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0OSwgMTUsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQyLCAzMCwgMjM3LCAKLSAgICAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIAotICAgIDE1MiwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzcsIDE2MCwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjMxLCA4NiwgCi0gICAgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI5LCAyMzEsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI5LCAyMzIsIAotICAgIDIxMSwgMTc2LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMjA3LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMTEzLCA5LCAKLSAgICAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyNywgMTQ4LCA5LCAKLSAgICAyLCAyNDAsIDE4MCwgMjMsIDIyNiwgMjM5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIwNywgNDAsIDksIDIsIDI0MCwgMTgwLCAKLSAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjM5LCA4LCA5LCAyLCAyMzksIDksIDIzNywgMjA4LCA5LCAyLCAyMzksIDYsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDM0LCA5MSwgMjQ0LCAyMTMsIDkxLCAxNTIsIDksIDIsIDIzOSwgNywgMjMsIDM0LCA5MSwgMTUyLCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAzNCwgOTEsIDIzMSwgODUsIDksIDIsIDIzOSwgNywgMjMsIDI1MSwgMTUwLCAyMDksIDE0MiwgOTEsIAotICAgIDIxMCwgMTAsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyNTAsIDc0LCA5MSwgMjM4LCAyNDYsIDksIDIsIDIzOSwgNywgMjMsIDI0OSwgMTUsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDI0OCwgMjMxLCA5MSwgMjE2LCAyMjAsIDksIDIsIDIzOSwgNywgMjMsIDI0NywgMTYwLCA5LCAyLCAyMzksIDcsIAotICAgIDIzLCAyNDcsIDE2MSwgOTEsIDIxNiwgMjIwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDQsIDIxMiwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjQzLCAyMzMsIDksIDIsIDIzOSwgNywgMjMsIDI0MywgMTg5LCAyMywgMjEzLCA0MywgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAKLSAgICA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCAxMjIsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgMTIzLCA5MSwgMjI4LCAxMTMsIAotICAgIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgOTIsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgOTMsIDIzLCAyMzgsIDIzMywgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjQsIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDIzOCwgODEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgNzksIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgCi0gICAgODAsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCA2NCwgOTEsIDIxMSwgMTAsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDIzNywgMTYwLCA5MSwgMjI2LCAyNDAsIDkxLCAyNDEsIDQsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgMTQwLCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyMzcsIDE0MSwgOTEsIDIyOCwgMTEzLCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIDQsIDkxLCAyMjcsIAotICAgIDE0OCwgOSwgMiwgMjM5LCA3LCAyMywgMjM2LCAyMSwgOSwgMiwgMjM5LCA3LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDIzMCwgMjEwLCA5MSwgMjM2LCAyNywgOTEsIDI1MCwgNzUsIDksIDIsIDIzOSwgNywgMjMsIDIzMCwgCi0gICAgMTIsIDksIDIsIDIzOSwgNywgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAyMjksIDk0LCA5LCAyLCAyMzksIDcsIAotICAgIDIzLCAyMjksIDk1LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAyMDgsIDkxLCAyNTAsIDIzMSwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjI4LCAxMTMsIDksIDIsIDIzOSwgNywgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjM5LCA3LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjIxLCA0MSwgCi0gICAgMTE1LCAyMjEsIDQwLCA5LCAyLCAyMzksIDcsIDIzLCAxODUsIDksIDIsIDIzOSwgNywgMjMsIDIxNSwgOCwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjE0LCAyMzAsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgNDQsIAotICAgIDkxLCAyMDcsIDE4MSwgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCA5LCA5LCAyLCAyMzksIDcsIDIzLCAyMTAsIDIyMCwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzOSwgNywgMjMsIDY4LCA5LCAyLCAyMzksIDcsIDIzLCAyMDcsIDI5LCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAyMDcsIDMwLCA5MSwgMjQyLCA0MiwgOSwgMiwgMjM5LCA3LCAxMTUsIDIzOSwgNiwgOSwgMiwgCi0gICAgMjM5LCAxLCA5LCAyLCAyMzksIDIsIDI0NSwgMTI0LCAyMzksIDEsIDksIDIsIDIzOCwgMjU1LCA5LCAyLCAyMzksIDAsIAotICAgIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMjM4LCAyNDYsIDksIDIsIDIzOCwgMjQ3LCAKLSAgICAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMjM4LCAyNDUsIDksIDIsIDIzOCwgCi0gICAgMjQzLCA5LCAyLCAyMzgsIDIzNCwgOSwgMiwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM4LCAKLSAgICAyMzMsIDExNSwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjMzLCAyNDUsIDEyNCwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjI0LCAKLSAgICA5LCAyLCAyMzgsIDIyMywgOSwgMiwgMjM4LCAyMTgsIDksIDIsIDIzOCwgMTYyLCA5LCAyLCAyMzgsIDE2MywgMjMsIDIyOCwgCi0gICAgMTgzLCA5LCAyLCAyMzgsIDgxLCA5LCAyLCAyMzgsIDgyLCAyMywgNzQsIDksIDIsIDIzOCwgODIsIDIzLCA2OCwgOSwgMiwgCi0gICAgMjM4LCA4MiwgMjQ1LCAxMjQsIDIzOCwgODEsIDksIDIsIDIzOCwgNzksIDksIDIsIDIzOCwgODAsIDExNSwgMjM4LCA3OSwgCi0gICAgOSwgMiwgMjM4LCA4MCwgMjQ1LCAxMjQsIDIzOCwgNzksIDksIDIsIDIzOCwgNzYsIDksIDIsIDIzOCwgNjMsIDksIDIsIAotICAgIDIzOCwgNjQsIDIzNywgMjA4LCA5LCAyLCAyMzgsIDYxLCA5LCAyLCAyMzgsIDYyLCAyMywgMzQsIDkxLCAyMzEsIDg1LCA5LCAKLSAgICAyLCAyMzgsIDYyLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzgsIDYyLCAyMywgMjMxLCA4NSwgOSwgMiwgCi0gICAgMjM4LCA2MiwgMjMsIDIyNiwgMjQwLCA5MSwgMjMxLCA4NSwgOSwgMiwgMjM4LCA2MiwgMjMsIDE4NSwgOSwgMiwgMjM4LCAKLSAgICA1NywgOSwgMiwgMjM4LCA1NSwgOSwgMiwgMjM4LCA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzOCwgNTYsIDIzLCAKLSAgICAyNDksIDE1LCA5LCAyLCAyMzgsIDU2LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzOCwgNTYsIDIwOSwgMTQxLCA5LCAyLCAyMzcsIAotICAgIDIzMCwgOSwgMiwgMjM3LCAyMzEsIDI0NSwgMTI0LCAyMzcsIDIzMCwgOSwgMiwgMjM3LCAyMjgsIDksIDIsIDIzNywgMjI5LCAKLSAgICAyMywgMjMwLCAxMiwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMzAsIDEzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIAotICAgIDIzNywgMjI5LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMTUsIDksIDkxLCAyMDcsIDE5NywgOSwgMiwgCi0gICAgMjM3LCAyMjksIDIzNywgMjA4LCA5LCAyLCAyMzcsIDIxOSwgOSwgMiwgMjM3LCAyMjAsIDIzLCAzNCwgOTEsIDIyOCwgMTgzLCAKLSAgICA5LCAyLCAyMzcsIDIyMCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMzcsIDIyMCwgMTE1LCAyMzcsIDIyMCwgMjI2LCAyMzAsIDksIAotICAgIDIsIDIzNywgMjEyLCA5LCAyLCAyMzcsIDIxMCwgOSwgMiwgMjM3LCAyMTEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzcsIDIwMiwgCi0gICAgOSwgMiwgMjM3LCAyMDEsIDksIDIsIDIzNywgMTk3LCA5LCAyLCAyMzcsIDE5NiwgOSwgMiwgMTUyLCA5LCAyLCAyMzcsIAotICAgIDE2MCwgMjA5LCAxNDEsIDksIDIsIDIzNywgMTYwLCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAxNDAsIDksIDIsIDIzNywgMywgOSwgCi0gICAgMiwgMjM3LCA0LCAyMywgMjUwLCA3NSwgOSwgMiwgMjM3LCA0LCAyMywgMjUwLCA3MywgOSwgMiwgMjM3LCA0LCAyMywgMjQ5LCAKLSAgICAxNSwgOSwgMiwgMjM3LCA0LCAyMywgMjQzLCAxNTYsIDksIDIsIDIzNywgNCwgMjMsIDIzOCwgMjU1LCA5LCAyLCAyMzcsIDQsIAotICAgIDIzLCAyMjksIDg0LCA5LCAyLCAyMzcsIDQsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMzcsIDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAKLSAgICAyMzcsIDQsIDIzLCA2OCwgOSwgMiwgMjM2LCAyNiwgOSwgMiwgMjM2LCAyMSwgOSwgMiwgMjM2LCAyMiwgMjMsIDI1MCwgCi0gICAgMjMxLCA5LCAyLCAyMzYsIDIyLCAyMywgMjM3LCAxNDAsIDksIDIsIDIzNiwgMjIsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM2LCAKLSAgICAyMiwgMjMsIDIyNywgOTIsIDksIDIsIDIzNiwgMjIsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMzYsIDE3LCA5LCAyLCA3NSwgOSwgCi0gICAgMiwgMjM1LCAyMDYsIDYzLCA5LCAyLCAyMzUsIDE2NiwgOSwgMiwgMjMxLCAxMTMsIDksIDIsIDIzMSwgMTE0LCAxMTUsIAotICAgIDIzMSwgMTE0LCAyNDcsIDE2MCwgOSwgMiwgMjMxLCAxMTQsIDExNSwgMjMxLCAxMTQsIDIxMSwgMTc2LCA5LCAyLCAyMzEsIAotICAgIDg4LCA5LCAyLCAyMzEsIDg1LCA5LCAyLCAyMzEsIDg2LCAyNDMsIDIxNSwgOSwgMiwgMjMxLCA4NiwgMjE2LCA1NywgOSwgMiwgCi0gICAgMjMxLCA4NiwgMTE1LCAyMzEsIDg2LCAyMTIsIDI0OSwgMTE1LCAyMTIsIDI0OSwgMjA3LCAzMCwgMTE1LCAyMDcsIDI5LCA5LCAKLSAgICAyLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjMxLCA3NywgOSwgMiwgMjMxLCA3OCwgMjMsIDIzOCwgMjMzLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjMxLCA3NiwgOSwgMiwgMjMxLCA2NiwgOSwgMiwgMjMxLCA2NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAKLSAgICAyMzEsIDY3LCAyNDUsIDEyNCwgMjMxLCA2NiwgOSwgMiwgMjMxLCA2NywgMjE5LCAyNTEsIDIzMSwgNjYsIDksIDIsIDIzMSwgCi0gICAgNjcsIDIxMSwgMTc2LCA5LCAyLCAyMzEsIDU5LCA5LCAyLCAyMzEsIDQ5LCA5LCAyLCAyMzAsIDIyNCwgOSwgMiwgMjMwLCAKLSAgICAyMDksIDksIDIsIDE3MywgOSwgMiwgMjMwLCA0NCwgMjMsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUxLCAxMjIsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyNTEsIDEyMywgOTEsIDIyOCwgMjA3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUwLCA3MywgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDI0OSwgMTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjMwLCA0NCwgMjMsIAotICAgIDE0MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0OCwgODYsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDEsIDIyLCA5LCAyLCAyMzAsIAotICAgIDQ0LCAyMywgMjQxLCA0LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM5LCA4LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyNDYsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDIyNCwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIzOCwgMjI1LCA5MSwgMjEzLCA4OSwgOTEsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA4MSwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNjMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU2LCA5MSwgMjE0LCAyMzAsIDksIAotICAgIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjMwLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCAyMDEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMzAsIDQ0LCAKLSAgICAyMywgMjMxLCA2NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzMCwgMTIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjksIDEwMCwgOSwgCi0gICAgMiwgMjMwLCA0NCwgMjMsIDIyOSwgOTQsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjcsIDE0OCwgOSwgMiwgMjMwLCA0NCwgMjMsIAotICAgIDIyNiwgMjM5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjEsIDkxLCAKLSAgICAyNDIsIDQyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMSwgOTEsIDIzOCwgODEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIAotICAgIDIxLCA5MSwgMjA5LCAxODcsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNCwgCi0gICAgMTU2LCA5MSwgMjIxLCAzNSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjIxLCAKLSAgICA0MCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxOCwgMTY3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE1LCAxNDUsIDksIDIsIDIzMCwgCi0gICAgNDQsIDIzLCAyMTUsIDM2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE0LCAyMzAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDkwLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA0MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgOSwgOSwgMiwgMjMwLCA0NCwgMjMsIAotICAgIDIxMiwgMTk5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEyLCAxNDksIDksIDIsIDIzMCwgNDQsIDIzLCAyMTAsIDIyOSwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIwOSwgMjE4LCA5LCAyLCAyMzAsIDQ0LCAyMywgNjgsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDQwLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMiwgMjMsIDE4NSwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjAyLCAzOSwgOSwgMiwgMjMwLCA0MiwgOSwgMiwgCi0gICAgMjMwLCA0MywgMjQ1LCAxMjQsIDIzMCwgNDIsIDksIDIsIDIzMCwgMzIsIDksIDIsIDIzMCwgMjksIDksIDIsIDIzMCwgMjcsIAotICAgIDksIDIsIDIzMCwgMjYsIDksIDIsIDIzMCwgMjQsIDksIDIsIDIzMCwgMjUsIDExNSwgMjMwLCAyNCwgOSwgMiwgMjMwLCAxMiwgCi0gICAgOSwgMiwgMjMwLCAxMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzAsIDgsIDksIDIsIDIzMCwgOSwgMjMsIAotICAgIDI0OSwgMTUsIDksIDIsIDIzMCwgOSwgMjQ1LCAxMjQsIDIzMCwgOCwgOSwgMiwgMjMwLCA2LCA5LCAyLCAyMzAsIDUsIDksIAotICAgIDIsIDIyOSwgMjMxLCA5LCAyLCAyMjksIDIzMiwgMjI4LCA5NSwgMjMsIDEwNiwgMTE1LCAyMjgsIDk1LCAyMywgNjgsIDksIAotICAgIDIsIDIyOSwgMjMyLCAxMTUsIDIyOSwgMjMyLCAyMjgsIDk1LCAyMywgMTA2LCAxMTUsIDIyOCwgOTUsIDIzLCA2OCwgOSwgMiwgCi0gICAgMjI5LCAxNzEsIDksIDIsIDIyOSwgMTAwLCA5LCAyLCAyMjksIDEwMSwgMjMsIDI0OSwgMTUsIDksIDIsIDIyOSwgMTAxLCAKLSAgICAyMywgNjgsIDksIDIsIDIyOSwgMTAxLCAyMywgMjA3LCAyOSwgOSwgMiwgMjI5LCA5NCwgOSwgMiwgMjI5LCA4NCwgOSwgMiwgCi0gICAgMjI5LCA3MSwgOSwgMiwgMjI5LCA3MCwgOSwgMiwgMjI5LCA2OCwgOSwgMiwgMjI5LCA2OSwgMTE1LCAyMjksIDY4LCA5LCAyLCAKLSAgICAyMjgsIDIwOSwgOSwgMiwgMjI4LCAyMTAsIDExNSwgMjM3LCA0LCAyMywgMjUwLCA3NCwgMjI4LCAyMTAsIDExNSwgMjM3LCAKLSAgICA0LCAyMywgMjUwLCA3MywgOSwgMiwgMjI4LCAyMDcsIDksIDIsIDIyOCwgMjA1LCA5LCAyLCAyMjgsIDIwNiwgMjA2LCA2OSwgCi0gICAgMTgsIDksIDIsIDIyOCwgMjA0LCA5LCAyLCAyMjgsIDE5NiwgOSwgMiwgMjI4LCAxOTcsIDIzNywgMjA4LCA5LCAyLCAyMjgsIAotICAgIDE5NSwgOSwgMiwgMjI4LCAxODMsIDksIDIsIDIyOCwgMTg0LCAyMTksIDI1MSwgMjI4LCAxODMsIDksIDIsIDIyOCwgMTc3LCAKLSAgICA5LCAyLCAyMjgsIDE1NSwgOSwgMiwgMjI4LCAxMTMsIDksIDIsIDIyOCwgOTQsIDksIDIsIDIyOCwgOTUsIDIzLCA2MywgOSwgCi0gICAgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgMjQ0LCAyMTMsIDkxLCAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIAotICAgIDIzOCwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjUxLCAzOSwgCi0gICAgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjUwLCA3NiwgMjAyLCAzNSwgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIyOCwgOTUsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDI0NCwgMTU0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjQxLCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzOSwgOCwgCi0gICAgOSwgMiwgMjI4LCA5NSwgMjMsIDIzOCwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjM3LCAyMTksIDksIDIsIDIyOCwgOTUsIAotICAgIDIzLCAyMzcsIDIyMCwgOTEsIDIzNywgMjE5LCA5LCAyLCAyMjgsIDk1LCAyMywgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgCi0gICAgMjM3LCAxNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzcsIDQsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCAKLSAgICA4NiwgMjM3LCAyMDgsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NywgOTEsIAotICAgIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjcsIDkxLCAyMjYsIDIzOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOSwgCi0gICAgMTAwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjI5LCA4NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjI4LCAxOTYsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjgsIDE5NywgOTEsIDIzNywgNCwgOTEsIDYzLCA5LCAyLCAKLSAgICAyMjgsIDk1LCAyMywgMjI4LCA5NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNywgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjYsIAotICAgIDIzOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNiwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI1LCAyMCwgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjIzLCAxOTksIDksIDIsIDIyOCwgOTUsIAotICAgIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMywgNDQsIDkxLCAyMTAsIDIyMCwgOSwgMiwgMjI4LCA5NSwgCi0gICAgMjMsIDIxMiwgMjQ1LCA5MSwgMjM4LCA1NiwgOTEsIDI0MSwgMjIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIDI0NSwgOTEsIAotICAgIDIzOCwgNTYsIDIwOSwgMTQxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAxOTcsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIAotICAgIDE5OCwgOTEsIDIxMiwgMTk3LCA5LCAyLCAyMjgsIDk1LCAyMywgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIAotICAgIDI1NSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAxODgsIDkxLCAzNCwgCi0gICAgOTEsIDIxMSwgMTEsIDkxLCAyMDEsIDIwMSwgOSwgMiwgMjI4LCA5NSwgMjMsIDY4LCA5LCAyLCAyMjgsIDk1LCAyMywgMTA2LCAKLSAgICA5MSwgNjMsIDksIDIsIDIyOCwgOTUsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNywgCi0gICAgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNiwgMTg2LCAKLSAgICA5LCAyLCAyMjgsIDk1LCAyMTEsIDE3NiwgOSwgMiwgMjI4LCA5MiwgOSwgMiwgMjI4LCA5MywgMjMsIDIxMywgNDMsIDksIDIsIAotICAgIDIyOCwgOTMsIDIzLCAyMTMsIDQ0LCA5MSwgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTMsIDIzNywgMjA4LCA5LCAyLCAyMjgsIAotICAgIDkzLCAyMzcsIDIwOSwgMTE1LCAyMjgsIDkzLCAyMzcsIDIwOSwgMjEzLCA0MywgOSwgMiwgMjI4LCA4OCwgOSwgMiwgMjI4LCAKLSAgICAzMCwgOSwgMiwgMjI4LCAzMSwgMjMsIDIyOCwgMzAsIDksIDIsIDIyOCwgMjgsIDksIDIsIDIyOCwgMjksIDIzLCAyMjgsIAotICAgIDE4MywgOSwgMiwgMjI4LCAyOSwgMjMsIDIyOCwgMTg0LCA5MSwgMjE1LCAxNDUsIDksIDIsIDIyNywgMTQ4LCA5LCAyLCAKLSAgICAyMjcsIDEyOSwgOSwgMiwgMjI3LCAxMTcsIDksIDIsIDIyNywgOTIsIDksIDIsIDIyNiwgMjM5LCA5LCAyLCAyMjYsIDI0MCwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI1MSwgMzksIDksIDIsIDIyNiwgMjM4LCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDEsIDQsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQxLCA1LCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM3LCA0LCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjksIDksIAotICAgIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyNywgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI4LCA5MSwgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjgsIDExNCwgOTEsIDI1MCwgNzUsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjI4LCA5NCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjEsIDg0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIAotICAgIDIxMiwgMTYzLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTIsIDE0MSwgOTEsIDI0NywgMTkzLCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIwNywgMTk3LCA5LCAyLCAyMjYsIDIzOCwgMjA5LCAxNDEsIDksIDIsIDIyNiwgMjM4LCAyNDUsIAotICAgIDEyNCwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMTksIDI1MSwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMTEsIAotICAgIDE3NiwgOSwgMiwgMjI2LCAyMzgsIDIxMywgMjQsIDksIDIsIDIyNiwgMjM2LCA5LCAyLCAyMjYsIDIzMCwgOSwgMiwgMjI2LCAKLSAgICAyMzEsIDExNSwgMjI2LCAyMzAsIDksIDIsIDIyNiwgMjMxLCAyMTksIDI1MSwgMjI2LCAyMzAsIDksIDIsIDIyNiwgMjMxLCAKLSAgICAyMTMsIDI0LCA5LCAyLCAyMjYsIDIyNywgOSwgMiwgMjI2LCAyMjQsIDksIDIsIDIyNiwgMjIyLCA5LCAyLCAyMjYsIDIyMywgCi0gICAgMTE1LCAyMjYsIDIyMiwgOSwgMiwgMjI2LCAyMjMsIDExNSwgMjI2LCAyMjMsIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAKLSAgICAyLCAxOTIsIDksIDIsIDIyNSwgMTc3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyNSwgMTc3LCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjI1LCAxNzYsIDksIDIsIDIyNSwgMTQ4LCA5LCAyLCAyMjUsIDEwMCwgOSwgMiwgMjI1LCA3OSwgOSwgMiwgMjI1LCA3OCwgCi0gICAgOSwgMiwgMjI1LCAyMCwgOSwgMiwgMjI0LCAyMjgsIDksIDIsIDIyNCwgMTU1LCA5LCAyLCAyMjQsIDExMCwgOSwgMiwgMjIzLCAKLSAgICAyNDYsIDksIDIsIDIyMywgMjQ3LCAxMTUsIDIyMywgMjQ2LCA5LCAyLCAyMjMsIDIzNSwgOSwgMiwgMjIzLCAyMzYsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyMjMsIDIxNywgOSwgMiwgMjIzLCAyMDMsIDksIDIsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDIwMCwgMjMsIAotICAgIDYzLCA5LCAyLCAyMjMsIDIwMCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMjMsIDIwMCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAKLSAgICAyMjMsIDIwMCwgMTE1LCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIDIzLCAzNCwgOTEsIDIwMSwgCi0gICAgMjAxLCA5LCAyLCAyMjMsIDIwMCwgMjQ1LCAxMjQsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDE5NywgOSwgMiwgMjIzLCAxOTgsIAotICAgIDIzLCA2MywgOSwgMiwgMjIzLCAxOTgsIDIzLCAzNCwgOTEsIDI0MywgMjMzLCA5LCAyLCAyMjMsIDE5OCwgMjMsIDI0MywgCi0gICAgMjMzLCA5LCAyLCAyMjMsIDE5OCwgMjM3LCAyMDgsIDksIDIsIDIwMSwgMjAxLCA5LCAyLCAyMjMsIDEwOSwgOSwgMiwgMjIzLCAKLSAgICA5NiwgOSwgMiwgMjIzLCA5NywgMjMwLCAyMzgsIDksIDIsIDIyMywgOTcsIDIzLCAyMTIsIDIwMCwgMjA5LCAxNDEsIDksIDIsIAotICAgIDIyMywgOTcsIDIxOSwgMjUxLCAyMjMsIDk2LCA5LCAyLCAyMjMsIDk1LCA5LCAyLCAyMjMsIDg4LCAyMjEsIDI2LCA5LCAyLCAKLSAgICAyMjMsIDg3LCA5LCAyLCAyMjMsIDg2LCA5LCAyLCAyMjIsIDI0MCwgOSwgMiwgMjIyLCAyNDEsIDIzLCA2MywgOSwgMiwgCi0gICAgMjIyLCAyNDEsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjIsIDI0MSwgMjEzLCAyNCwgOSwgMiwgMjIyLCAxMDAsIDksIDIsIAotICAgIDIyMiwgMTAxLCAyMywgNzQsIDksIDIsIDIyMiwgOTksIDksIDIsIDIyMiwgNjksIDksIDIsIDIyMiwgNzAsIDIzLCAyMzgsIAotICAgIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyMiwgNzAsIDIzLCAyMzgsIDIyNSwgOTEsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgCi0gICAgMjIyLCA2NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjIyLCA2NiwgMjMsIDI1MCwgNzYsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAyMTksIDksIDIsIAotICAgIDIyMiwgNjYsIDIzLCAyMjUsIDIxLCA5MSwgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjIyLCAKLSAgICAyNDAsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0MywgOSwgMiwgMjIyLCAKLSAgICA2NiwgMjMsIDIxMywgNDQsIDkxLCAzNCwgMjUwLCAyMzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMjUwLCAKLSAgICA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDQsIDkxLCAyNTAsIDc2LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgCi0gICAgMjMsIDIwNywgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjA2LCAxODYsIDksIDIsIDIyMiwgNTMsIDksIAotICAgIDIsIDIyMSwgODQsIDksIDIsIDIyMSwgNTYsIDksIDIsIDIyMSwgNDAsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAKLSAgICAyMzgsIDIyNCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIyNSwgNzksIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIAotICAgIDIzLCAyMTUsIDgsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMTUsIDksIDExNSwgMjIxLCA0MSwgMjI4LCA5MywgCi0gICAgMjMsIDIxNSwgOCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMjEsIDQxLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjIxLCA0MSwgMTE1LCAyMjEsIDQwLCA5LCAyLCAyMjEsIDQxLCAyNDUsIDEyNCwgMjIxLCA0MCwgOSwgMiwgCi0gICAgMjIxLCA0MSwgMjQ1LCAxMjQsIDIyMSwgNDEsIDIyOCwgOTMsIDExNSwgMjI4LCA5MiwgOSwgMiwgMjIxLCAzNSwgOSwgMiwgCi0gICAgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNTAsIDY5LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI0OCwgODYsIDksIAotICAgIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjQyLCAzNywgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMzcsIDIxOSwgCi0gICAgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIAotICAgIDIzLCAyMzAsIDI3LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMjEsIDM2LCAyNTEsIAotICAgIDE1MCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIxMiwgMTM4LCA5LCAyLCAyMjEsIDM2LCAKLSAgICAyNTEsIDE1MCwgMjMsIDIwNywgNDAsIDksIDIsIDIyMSwgMzYsIDIyOSwgNjksIDIzLCAyNDgsIDg2LCA5LCAyLCAyMjEsIAotICAgIDM2LCAyMjksIDY5LCAyMywgMjQ4LCA4NywgNjgsIDksIDIsIDE4NSwgOSwgMiwgMjE5LCAxNTksIDksIDIsIDIxOSwgMTIyLCAKLSAgICA5LCAyLCAyMTksIDk2LCA5LCAyLCAyMTgsIDIyMiwgOSwgMiwgMjE4LCAxNjcsIDksIDIsIDIxOCwgMTY4LCAyMywgNjMsIDksIAotICAgIDIsIDIxOCwgMTY4LCAyMywgMjUxLCAyMzIsIDksIDIsIDIxOCwgMTY4LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjE4LCAxNjgsIAotICAgIDIzLCAyNDcsIDE5MywgOSwgMiwgMjE4LCAxNjgsIDIzLCA3NCwgOSwgMiwgMjE4LCAxNjgsIDIzLCA3NSwgOSwgMiwgMjE4LCAKLSAgICAxNjgsIDIzLCAyMzUsIDE2NiwgOSwgMiwgMjE4LCAxNjgsIDIzLCA2OCwgOSwgMiwgMjE4LCAxNjgsIDIzLCAyMDcsIDQwLCAKLSAgICA5LCAyLCAyMTgsIDE2OCwgMjQ1LCAxMjQsIDIxOCwgMTY3LCA5LCAyLCAyMTgsIDEwOSwgOSwgMiwgMjE4LCAxMTAsIDIzLCAKLSAgICAyMzAsIDgsIDksIDIsIDIxOCwgMTEwLCAyMywgMjA3LCAyOSwgOSwgMiwgMjE4LCAxMTAsIDIzLCAyMDIsIDExNiwgOSwgMiwgCi0gICAgMjE4LCAxMTAsIDIxOSwgMjUxLCAyMTgsIDEwOSwgOSwgMiwgMjE2LCAyMjAsIDksIDIsIDIxNiwgMjE0LCA5LCAyLCAyMTYsIAotICAgIDU3LCA5LCAyLCAyMTUsIDE0NSwgOSwgMiwgMjE1LCAzNiwgOSwgMiwgMjE1LCAyMywgMjIxLCAyNiwgOSwgMiwgMjE1LCAyMiwgCi0gICAgOSwgMiwgMjE1LCAyMywgMjMsIDYzLCA5LCAyLCAyMTUsIDIzLCAyMywgMjQyLCA0MiwgOSwgMiwgMjE1LCAyMywgMjMsIAotICAgIDI0MiwgNDAsIDksIDIsIDIxNSwgMjMsIDIzLCAxNTIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMzAsIDEyLCA5LCAyLCAyMTUsIAotICAgIDIzLCAyMywgMjI4LCAxODMsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjE1LCAyMywgMjMsIDIyNCwgCi0gICAgMTU1LCA5LCAyLCAyMTUsIDIzLCAyMywgMjIxLCA0MCwgOSwgMiwgMjE1LCAyMywgMjMsIDIxNSwgOCwgOSwgMiwgMjE1LCAKLSAgICAyMywgMjMsIDIxMywgOSwgOSwgMiwgMjE1LCAyMywgMjMsIDIxMCwgMTAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDQwLCAKLSAgICA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCAzNSwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgNiwgOSwgMiwgMjE1LCAyMywgMjMsIAotICAgIDIwNiwgMjEwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA2LCAxODYsIDksIDIsIDIxNSwgMjMsIDExNSwgMjE1LCAyMiwgOSwgMiwgCi0gICAgMjE1LCAyMywgMjM3LCAyMDgsIDksIDIsIDIxNSwgOCwgOSwgMiwgMjE1LCA5LCAyMjgsIDk1LCAyMywgMjUwLCA3MywgOSwgCi0gICAgMiwgMjE0LCAyMzgsIDksIDIsIDIxNCwgMjMwLCA5LCAyLCAyMTMsIDkwLCA5LCAyLCAyMTMsIDg4LCA5LCAyLCAyMTMsIDg5LCAKLSAgICAyMywgNjMsIDksIDIsIDIxMywgODksIDIzLCAyNDksIDE1LCA5LCAyLCAyMTMsIDg5LCAyMywgMjM4LCA1NSwgOSwgMiwgCi0gICAgMjEzLCA4OSwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMTMsIDg5LCAyMywgMjEyLCAxOTcsIDksIDIsIDIxMywgODksIDIzLCAKLSAgICAyMDcsIDE4MSwgOSwgMiwgMjEzLCA4OSwgMjMsIDY4LCA5LCAyLCAyMTMsIDg5LCAyMywgMTA2LCA5MSwgNjMsIDksIDIsIAotICAgIDIxMywgODYsIDksIDIsIDIxMywgODQsIDksIDIsIDIxMywgNTksIDksIDIsIDIxMywgNDMsIDksIDIsIDIxMywgNDQsIDIzNiwgCi0gICAgMjYsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0NCwgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0NCwgMjEwLCAxMSwgMTE1LCAyMTAsIDExLCAyMzgsIDIyNSwgMTE1LCAKLSAgICAyMzgsIDIyNCwgOSwgMiwgMjEzLCAzNiwgOSwgMiwgMjEzLCAzMSwgOSwgMiwgMjEzLCAyNywgOSwgMiwgMjEzLCAyNiwgOSwgCi0gICAgMiwgMjEzLCAyMywgOSwgMiwgMjEzLCA5LCA5LCAyLCAyMTMsIDEwLCAyMywgNjMsIDksIDIsIDIxMywgMTAsIDIzLCAyMzEsIAotICAgIDY2LCA5LCAyLCAyMTMsIDMsIDksIDIsIDIxMywgNCwgMjMsIDYzLCA5LCAyLCAyMTMsIDQsIDIzLCAyNDgsIDI1MywgOSwgMiwgCi0gICAgMjEzLCA0LCAyMywgMjQ3LCAxNzEsIDksIDIsIDIxMywgNCwgMjMsIDI0MywgMTc2LCA5LCAyLCAyMTMsIDQsIDIzLCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjEzLCA0LCAyMywgMjMxLCA4NSwgOSwgMiwgMjEzLCA0LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAotICAgIDIsIDIxMywgNCwgMjMsIDIyOCwgMTc3LCA5LCAyLCAyMTMsIDQsIDIzLCAyMjYsIDIyNCwgOSwgMiwgMjEzLCA0LCAyMywgCi0gICAgMjIzLCAyMzUsIDksIDIsIDIxMywgNCwgMjMsIDIxNSwgOCwgOSwgMiwgMjEyLCAyNTMsIDksIDIsIDIxMiwgMjQ4LCA5LCAyLCAKLSAgICAyMTIsIDI0OSwgMjA5LCAxNDEsIDksIDIsIDIxMiwgMjQ5LCAxMTUsIDIxMiwgMjQ5LCAyNDcsIDE2MSwgMTE1LCAyNDcsIAotICAgIDE2MCwgOSwgMiwgMjEyLCAyNDQsIDksIDIsIDIxMiwgMTk5LCA5LCAyLCAyMTIsIDIwMCwgMTE1LCAyMzAsIDIzOSwgMjEyLCAKLSAgICAxOTksIDksIDIsIDIxMiwgMTk3LCA5LCAyLCAyMTIsIDE5NiwgOSwgMiwgMjEyLCAxNjIsIDksIDIsIDIxMiwgMTYzLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjEyLCAxNDksIDksIDIsIDIxMiwgMTQ3LCA5LCAyLCAyMTIsIDE0OCwgMTE1LCAyMTIsIDE0OCwgMjEyLCAKLSAgICAxOTcsIDksIDIsIDIxMiwgMTQwLCA5LCAyLCAyMTIsIDEzOCwgOSwgMiwgMjExLCAxMCwgOSwgMiwgMjExLCAxMSwgMTE1LCAKLSAgICAyMTEsIDEwLCA5LCAyLCAyMTAsIDIzMiwgOSwgMiwgMjEwLCAyMzEsIDksIDIsIDIxMCwgMjI5LCA5LCAyLCAyMTAsIDIyMCwgCi0gICAgOSwgMiwgMjEwLCAyMTksIDksIDIsIDIxMCwgMTkzLCA5LCAyLCAyMTAsIDE5MiwgOSwgMiwgMjEwLCAyMiwgOSwgMiwgMjEwLCAKLSAgICAyMywgMjUwLCA1OSwgOSwgMiwgMjEwLCAyMywgMjMsIDIzNywgMywgOSwgMiwgMjEwLCAyMywgMjMsIDIyNCwgMTU1LCA5LCAKLSAgICAyLCAyMTAsIDIzLCAyMzcsIDIwOCwgOSwgMiwgMjEwLCAxMCwgOSwgMiwgMjEwLCAxMSwgMTE1LCAyMTAsIDExLCAyMjIsIAotICAgIDEwMSwgMTE1LCAyMjIsIDEwMSwgMjQzLCAxNTcsIDExNSwgMjQzLCAxNTYsIDksIDIsIDIxMCwgMTEsIDIxMSwgMTc2LCA5LCAKLSAgICAyLCAyMDksIDI1NSwgOSwgMiwgMTYwLCAyMywgMjQ4LCA4NiwgOSwgMiwgMTYwLCAyMywgMjM3LCAyMTksIDksIDIsIDE2MCwgCi0gICAgMjMsIDIxMywgNDMsIDksIDIsIDE2MCwgMjMsIDIxMiwgMTk5LCA5LCAyLCAxNjAsIDIzLCAyMDcsIDE5NywgOSwgMiwgMTYwLCAKLSAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjA5LCAyNDIsIDksIDIsIDIwOSwgMjE4LCA5LCAyLCAyMDksIDE4NywgOSwgMiwgMjA5LCAKLSAgICAxODgsIDIzNywgMjA4LCA5LCAyLCAyMDksIDIsIDksIDIsIDIwOSwgMywgMjA5LCAxNDEsIDksIDIsIDIwOCwgMjI5LCA5LCAKLSAgICAyLCAyMDgsIDIwNiwgOSwgMiwgMjA4LCAyMDcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA4LCAyMDcsIDExNSwgMjA4LCAyMDYsIAotICAgIDksIDIsIDIwOCwgMjA3LCAxMTUsIDIwOCwgMjA3LCAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjA3LCAyMDMsIDksIDIsIDIwNywgMTk3LCA5LCAyLCAyMDcsIDE5NSwgOSwgMiwgMjA3LCAxOTEsIDksIAotICAgIDIsIDIwNywgMTgxLCA5LCAyLCAyMDcsIDE4MiwgMTE1LCAyMDcsIDE4MiwgMjAyLCAxMTcsIDExNSwgMjAyLCAxMTYsIDksIAotICAgIDIsIDY4LCA5LCAyLCAxMDYsIDIzNywgMjE5LCA5LCAyLCAxMDYsIDEwNiwgNjgsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDIxOSwgCi0gICAgMTY5LCAxMTUsIDIxOSwgMTY5LCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMTA2LCAxMTUsIDEwNiwgMjEwLCAKLSAgICAxOTQsIDExNSwgMjEwLCAxOTMsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDEwNiwgMjE2LCA3MywgMTE1LCAxMDYsIDIxNiwgNzIsIAotICAgIDksIDIsIDIwNywgNDAsIDksIDIsIDIwNywgMzUsIDksIDIsIDIwNywgMjksIDksIDIsIDIwNywgMzAsIDIyOCwgMTc3LCA5LCAKLSAgICAyLCAyMDcsIDMwLCAyMywgMjQ5LCAxNSwgOSwgMiwgMjA3LCAzMCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyMDcsIDMwLCAyMywgCi0gICAgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDIwNywgMzAsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCAxMDYsIDIzNywgMjA4LCAKLSAgICA5LCAyLCAyMDcsIDMwLCAyMzcsIDIwOCwgOSwgMiwgMjA3LCAzMCwgMjEzLCAyNCwgOSwgMiwgMjA3LCAzMCwgMjEzLCAyNSwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIwNywgMjUsIDksIDIsIDIwNywgNiwgOSwgMiwgMjA3LCA3LCAyMywgMjI4LCA5NCwgOSwgCi0gICAgMiwgMjA3LCA3LCAyMywgMjI1LCAyMSwgOTEsIDI0NCwgMjEyLCA5LCAyLCAyMDcsIDcsIDIzLCAyMTMsIDg4LCA5LCAyLCAKLSAgICAyMDcsIDcsIDIzLCA2OCwgOSwgMiwgMjA3LCA1LCA5LCAyLCAyMDcsIDEsIDksIDIsIDIwNywgMiwgMjMsIDIyOSwgMjMxLCAKLSAgICA5LCAyLCAyMDcsIDIsIDIzLCAxODUsIDksIDIsIDIwNiwgMjU1LCA5LCAyLCAyMDcsIDAsIDIzNywgMjA4LCA5LCAyLCAyMDYsIAotICAgIDIxMCwgOSwgMiwgMjA2LCAyMTEsIDI0NSwgMTI0LCAyMDYsIDIxMCwgOSwgMiwgMjA2LCAyMTEsIDIxMywgMjQsIDksIDIsIAotICAgIDIwNiwgMjA4LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDM0LCA5MSwgMTUyLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDM0LCA5MSwgCi0gICAgMjAxLCAyMDEsIDksIDIsIDIwNiwgMjA5LCAyMywgMjUxLCAzOSwgOSwgMiwgMjA2LCAyMDksIDIzLCAxNTIsIDksIDIsIAotICAgIDIwNiwgMjA5LCAyMywgMjIxLCA0MCwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDQwLCA5LCAyLCAyMDYsIDIwOSwgMjMsIAotICAgIDIwNywgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDIwNywgNDEsIDkxLCAyNDgsIDg2LCA5LCAyLCAKLSAgICAyMDYsIDIwNywgOSwgMiwgMjA2LCAyMDQsIDksIDIsIDIwNiwgMjAzLCA5LCAyLCAyMDYsIDE5OSwgOSwgMiwgMjA2LCAyMDAsIAotICAgIDIzLCA2MywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyNTAsIDY5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE0MiwgOSwgMiwgMjA2LCAKLSAgICAyMDAsIDIzLCAyNDIsIDMxLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOSwgOCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIAotICAgIDI0NiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM3LCAyMzAsIDksIDIsIDIwNiwgMjAwLCAyMywgMTUyLCA5LCAyLCAyMDYsIAotICAgIDIwMCwgMjMsIDIzMSwgODUsIDksIDIsIDIwNiwgMjAwLCAyMywgMjMxLCA2NiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzAsIAotICAgIDIwOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjYsIDIyMiwgOSwgMiwgCi0gICAgMjA2LCAyMDAsIDIzLCAyMjQsIDExMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxODUsIDksIDIsIDIwNiwgMjAwLCAyMywgMjEzLCAKLSAgICA0MywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMTIsIDE0NywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMDcsIDIwMywgOSwgMiwgCi0gICAgMjA2LCAyMDAsIDIzLCAxMDYsIDkxLCAyMzcsIDIxOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDYsIAotICAgIDIwMCwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMDYsIDE5NywgOSwgMiwgMjA2LCAxOTgsIDIzLCA2OCwgOSwgMiwgMjA2LCAKLSAgICAxODYsIDksIDIsIDIwNiwgMTg3LCAyMywgNjMsIDksIDIsIDIwNiwgMTg3LCAyMywgMjI4LCAyMDksIDksIDIsIDIwNiwgCi0gICAgMTg3LCAyMywgMjI4LCAxODMsIDksIDIsIDIwNiwgMTg3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIwNiwgMTgyLCA5LCAyLCAKLSAgICAyMDYsIDE4NSwgOSwgMiwgMjA2LCAxODMsIDksIDIsIDIwNiwgMTc5LCA5LCAyLCAyMDYsIDE2NywgOSwgMiwgMjA2LCAxNjgsIAotICAgIDIzLCAyMjksIDIzMSwgOSwgMiwgMjA2LCAxNjYsIDksIDIsIDIwMiwgMTE2LCA5LCAyLCAyMDIsIDExNywgMjA5LCAxNDEsIAotICAgIDksIDIsIDIwMiwgMTE3LCAxMDMsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjAyLCAxMTIsIDksIDIsIDIwMiwgMTA1LCA5LCAyLCAKLSAgICAyMDIsIDkxLCA5LCAyLCAyMDIsIDM5LCA5LCAyLCAyMDIsIDQwLCAxMTUsIDIwMiwgMzksIDksIDIsIDIwMiwgMzgsIDksIDIsIAotICAgIDIwMiwgMzYsIDksIDIsIDIwMiwgMzcsIDIzMCwgMzEsIDIwOSwgMTQxLCA5LCAyLCAyMDIsIDMxLCA5LCAyLCAyMDIsIDIyLCAKLSAgICA5LCAyLCAyMDIsIDYsIDksIDIsIDIwMiwgNCwgOSwgMiwgMjAyLCA1LCAyMywgNjMsIDksIDIsIDIwMiwgMywgOSwgMiwgCi0gICAgMjAyLCAyLCA5LCAyLCAyMjksIDI1NCwgMjQxLCAxMTksIDksIDIsIDI1MSwgMjMzLCAyMywgMjIxLCA0MCwgOSwgMiwgMjUxLCAKLSAgICAxNTAsIDIzLCA2MywgOSwgMiwgMjUwLCAyNDQsIDIzLCAyMjgsIDE5OCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAKLSAgICAyMDcsIDQxLCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDIsIDksIDIsIDI0MywgMTU3LCA5MSwgMjEyLCAxOTksIDksIDIsIAotICAgIDI0MiwgNDEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzNywgMjE5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIAotICAgIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgMjMyLCA5MSwgMjMwLCAxMywgOTEsIDYzLCA5LCAyLCAyMzksIDcsIAotICAgIDIzLCAyNTAsIDczLCA5LCAyLCAyMzgsIDE4OSwgOSwgMiwgMjM4LCA3MSwgOSwgMiwgMjM2LCAzLCA5LCAyLCAyMzAsIDQ0LCAKLSAgICAyMywgMjUwLCAyMDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyNTAsIDcyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NSwgOSwgCi0gICAgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjE5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCA0LCAyMywgMjUwLCA3MywgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIyNiwgMjIyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTg1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEyLCAKLSAgICAxOTIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDIwMywgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNiwgMjA4LCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjM4LCA4MSwgOSwgMiwgMjI2LCAyMzgsIDIxMywgMjUsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzOCwgCi0gICAgMjMsIDI0MSwgNSwgOTEsIDIyOCwgMzAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjEyLCAxOTksIDksIDIsIDIyNCwgMjI3LCA5LCAKLSAgICAyLCAyMjMsIDE5OCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAyMjMsIDEwOCwgOSwgMiwgMjIyLCA2OCwgOSwgMiwgMjIyLCA2NywgCi0gICAgOSwgMiwgMjIyLCA2NiwgMjMsIDI0OCwgMjUzLCA5LCAyLCAyMjIsIDY2LCAyMywgMjM4LCA4MSwgOSwgMiwgMjIxLCA1NywgCi0gICAgMjE1LCAxOTgsIDIyMiwgNTksIDI0NCwgNTQsIDksIDIsIDIxOCwgMjIzLCAyNTAsIDU5LCA5LCAyLCAyMTgsIDExMywgOSwgCi0gICAgMiwgMjE1LCAyMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMDksIDEsIDksIDIsIDIwNywgNywgMjMsIDIyNSwgCi0gICAgMjAsIDksIDIsIDEwNiwgNjgsIDksIDE0MSwgMiwgMTIwLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDEyNiwgMjUwLCA3NSwgOSwgCi0gICAgMTQxLCAyLCAyMzksIDE0NywgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMTIsIAotICAgIDg4LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyNTAsIDc1LCAKLSAgICA5LCAxNDEsIDIsIDIyMiwgNjQsIDI1MCwgNzUsIDksIDE0MSwgMiwgMTI2LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMzksIAotICAgIDE0NywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIxMiwgODgsIDI0MywgCi0gICAgMTU2LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjQzLCAxNTYsIDksIAotICAgIDE0MSwgMiwgMjIyLCA2NCwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDY4LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAKLSAgICA2OCwgOSwgMTQxLCAyLCAyMTIsIDg4LCA2OCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgNjgsIDksIDE0MSwgMiwgMjQxLCAxNDMsIAotICAgIDY4LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDY4LCA5LCAxNDEsIDIsIDExOCwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMTIwLCAKLSAgICAyMzgsIDE2NCwgOSwgMTQxLCAyLCAxMjYsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMzgsIDE2NCwgOSwgCi0gICAgMTQxLCAyLCAyMzksIDIzMywgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjEyLCA4OCwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjEzLCAKLSAgICAxMTIsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMzgsIAotICAgIDE2NCwgOSwgMTQxLCAyLCAxMTgsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDEyMCwgMjM4LCAxNjEsIDksIDE0MSwgMiwgMTI2LCAKLSAgICAyMzgsIDE2MSwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjM4LCAxNjEsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIzOCwgMTYxLCAKLSAgICA5LCAxNDEsIDIsIDEyMCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAxMjYsIDIxMywgNTksIDksIDE0MSwgMiwgMTI2LCAyMTMsIAotICAgIDYwLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjEzLCAKLSAgICA1OSwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMTMsIDU5LCA5LCAxNDEsIDIsIAotICAgIDI0MSwgMTQzLCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIxMywgNTksIDksIDE0MSwgMiwgMTE4LCAyMTMsIDU0LCAKLSAgICA5LCAxNDEsIDIsIDEyMCwgMjEzLCA1NCwgOSwgMTQxLCAyLCAxMjYsIDIxMywgNTQsIDksIDE0MSwgMiwgMTI2LCAyMTMsIAotICAgIDU1LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjEzLCA1NCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjEzLCAKLSAgICA1NCwgOSwgMTQxLCAyLCAyMTMsIDYwLCAyMywgMjM4LCAyNDcsIDkxLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMTMsIDYwLCAKLSAgICAyMywgMjM4LCAyNDcsIDkxLCAyMjQsIDExMCwgOSwgMTQxLCAyLCAxMTgsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyMCwgCi0gICAgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTI2LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjYsIDI0NywgMTU3LCAyMDYsIDY5LCAKLSAgICAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0NywgMTU2LCA5LCAxNDEsIAotICAgIDIsIDEyNiwgMjA2LCA2OSwgMjM5LCAxNTksIDI0MSwgNiwgOSwgMTQxLCAyLCAxMjYsIDIwNiwgNjksIDIzOSwgMTU5LCAKLSAgICAyNDEsIDMsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExOCwgOSwgMTQxLCAyLCAyMzksIAotICAgIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE2LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgCi0gICAgMjI3LCAxMTksIDYzLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTksIDI0OSwgMjU1LCAKLSAgICA5LCAxNDEsIDIsIDIxMiwgODgsIDIwNiwgNjksIDIzOSwgMTU5LCAyNTAsIDcxLCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIAotICAgIDY5LCAyMzksIDE1OSwgMjMxLCA1OCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNjAsIAotICAgIDYzLCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA2MCwgMjQ5LCAyNTUsIDksIDE0MSwgMiwgCi0gICAgMjQxLCAxNDMsIDIwNiwgNjksIDIzOSwgMTU5LCAyMDYsIDE4MSwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjA2LCA2OSwgMjM5LCAKLSAgICAxNTksIDIwNiwgMTgwLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDc0LCA5LCAxNDEsIDIsIAotICAgIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDczLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgCi0gICAgMTU5LCAyMzEsIDcyLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDc1LCA2MywgOSwgMTQxLCAKLSAgICAyLCAxMjAsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDEyNiwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgCi0gICAgMjM5LCAxNDcsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgCi0gICAgMTQxLCAyLCAyMTIsIDg4LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAxMTgsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIAotICAgIDEyMCwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgMTI2LCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ4LCAyNDAsIAotICAgIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0OCwgMjQxLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQ4LCAKLSAgICAyNDAsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0OCwgMjQxLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMjIsIDc3LCA5LCAKLSAgICAxNDEsIDIsIDIyMiwgNzgsIDksIDE0MSwgMiwgMTE4LCAyNDEsIDIsIDksIDE0MSwgMiwgMTIwLCAyNDEsIDIsIDksIDE0MSwgCi0gICAgMiwgMTE4LCAyMDksIDYxLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAxMjAsIDIwOSwgNTgsIDI0MywgMTU2LCA5LCAxNDEsIDIsIAotICAgIDIzOSwgMjMzLCAyMTIsIDc3LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAxMTgsIDIwOSwgNjEsIDIwNiwgNjksIDIzOSwgMTU5LCAKLSAgICA2MywgOSwgMTQxLCAyLCAxMjAsIDIwOSwgNTgsIDIwNiwgNjksIDIzOSwgMTU5LCA2MywgOSwgMTQxLCAyLCAxMTgsIDI0MSwgCi0gICAgMTM5LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDExOCwgMjE3LCA1NiwgMjUwLCA3NSwgOSwgMTQxLCAyLCAzOCwgMjUwLCA2MiwgCi0gICAgMTE4LCAyMTIsIDc4LCA5LCAxNDEsIDIsIDM4LCAyNTAsIDYyLCAxMTgsIDIxNywgNTUsIDksIDE0MSwgMiwgMTE4LCAyMTcsIAotICAgIDU2LCAyMzcsIDIwMiwgOSwgMTQxLCAyLCAxMTgsIDE2MiwgMjM3LCAyMDIsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDExOCwgCi0gICAgMjA5LCA2MCwgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMTIwLCAyMDksIDU3LCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAyMzksIAotICAgIDE1MywgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMjQwLCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMTA2LCAyMDYsIDY5LCAxOCwgCi0gICAgOSwgMTQxLCAyLCAyMzksIDIzMywgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMTIsIDg4LCAxMDYsIDIwNiwgNjksIAotICAgIDE4LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAxMDYsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAxMDYsIDIwNiwgCi0gICAgNjksIDE4LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDIxNywgMTc5LCAyLCAzOCwgMjUwLCAKLSAgICA2MiwgMjAzLCAyMzgsIDI0MywgMTQxLCA5LCAyMTcsIDE3OSwgMiwgODAsIDI0NSwgMjQyLCA5LCAyMTcsIDE3OSwgMiwgCi0gICAgMjQzLCAyMjgsIDI0NSwgMjQyLCA5LCAyMTcsIDE3OSwgMiwgMjQzLCAyMjgsIDIwOCwgODEsIDksIDIxNywgMTc5LCAyLCAKLSAgICAyNDMsIDIyOCwgMjE3LCA2MSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjEsIDQxLCAyMDksIDE0MSwgOSwgMiwgMjUxLCAyMzMsIAotICAgIDIzLCAyMTIsIDE5NywgOSwgMiwgMjUxLCAxMjMsIDIzLCAyNDEsIDQsIDksIDIsIDI0OSwgMTYsIDIzLCAyNDMsIDE1NywgCi0gICAgMjA5LCAxNDEsIDksIDIsIDI0OSwgNCwgMjMsIDI1MSwgMTQ5LCA5LCAyLCAyNDksIDQsIDIzLCAyMjIsIDEwMCwgOSwgMiwgCi0gICAgMjQ5LCA0LCAyMywgMjAyLCAxMTYsIDksIDIsIDI0NywgMTk0LCAxMTUsIDI0NywgMTk0LCAyMywgMjIzLCAxMDksIDksIDIsIAotICAgIDI0NCwgMjEzLCAyMywgMjA5LCAyNDIsIDksIDIsIDI0NCwgMjA0LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MywgMTg5LCAyMywgCi0gICAgMjMxLCA4NSwgOSwgMiwgMjQzLCAxODksIDIzLCAxMDYsIDEwNiwgNjgsIDksIDIsIDI0MywgMTg3LCAyMywgMjA3LCAyOSwgCi0gICAgOSwgMiwgMjQyLCAzOCwgMjMsIDI1MCwgMjAwLCA5LCAyLCAyNDIsIDM4LCAyMywgMjUwLCA3NSwgOSwgMiwgMjQyLCAzOCwgCi0gICAgMjMsIDI1MCwgNzYsIDI1MCwgNTAsIDIyNywgMjIyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjQzLCAxNzYsIDksIDIsIDI0MiwgCi0gICAgMzgsIDIzLCAyNDIsIDMxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjQxLCAyMiwgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOSwgOCwgCi0gICAgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOCwgODEsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzgsIDY0LCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjQyLCAzOCwgMjMsIDIzOCwgNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAxNTIsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzcsIDMsIAotICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAKLSAgICAyNDIsIDM4LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDE3NywgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyOCwgMTc4LCA5MSwgMjI5LCAyMzEsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDgyLCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI4LCAyOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOCwgMjksIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyNiwgMjI4LCA5MSwgMjM4LCA1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyNSwgNzksIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjQsIDIyOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMjIyLCAxMDAsIDksIDIsIAotICAgIDI0MiwgMzgsIDIzLCAyMTgsIDE2NywgOSwgMiwgMjQyLCAzOCwgMjMsIDIxMywgNDMsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMTIsIDE2MywgMjM3LCAyMDgsIDksIDIsIDI0MSwgMTkxLCAyMywgMjI4LCAxODMsIDksIDIsIDI0MSwgMTkxLCAyMywgCi0gICAgMjE5LCA5NiwgOSwgMiwgMjQxLCAyMywgMjAzLCAxOTYsIDksIDIsIDI0MSwgNSwgMjQ1LCAxMjQsIDI0MSwgNCwgOSwgMiwgCi0gICAgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyNTAsIDc1LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIzNywgMywgOSwgCi0gICAgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAKLSAgICAyMjgsIDExMywgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgCi0gICAgMjMsIDIyNSwgMjAsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjI0LCAyMjgsIDksIDIsIDI0MCwgMTgwLCAyMTMsIAotICAgIDI1LCAyMywgMjExLCAxMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMTEsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDksIDMsIAotICAgIDksIDIsIDIzOSwgNywgMjMsIDI0MywgMTg5LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAzOCwgMjMsIDIzMSwgCi0gICAgODYsIDIzNywgMjA4LCA5LCAyLCAyMzksIDcsIDIzLCAyNDIsIDM4LCAyMywgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDI0MSwgMjUsIDksIDIsIDIzOSwgNywgMjMsIDIzOSwgOCwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjUsIDkxLCAyNDMsIAotICAgIDIzMywgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjUsIDkxLCAyMjIsIDI0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCAKLSAgICAxNjAsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAxNzgsIDkxLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjI4LCAyOCwgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAyOSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjYsIAotICAgIDIyNywgOSwgMiwgMjM5LCA3LCAyMywgMjIzLCAxOTksIDksIDIsIDIzOSwgNywgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyMjIsIDI0MSwgOTEsIDI0MSwgMTkwLCA5LCAyLCAyMzksIDcsIDIzLCAyMjIsIDI0MSwgOTEsIDIzOCwgODEsIAotICAgIDksIDIsIDIzOSwgNywgMjMsIDIxMywgMywgOSwgMiwgMjM5LCA3LCAyMywgMjAyLCAyMiwgOSwgMiwgMjM5LCAyLCAyMTUsIAotICAgIDE5OCwgMjIyLCA1OSwgMjQ0LCA1NCwgOSwgMiwgMjM4LCAxNjMsIDIzLCA2OCwgOSwgMiwgMjM4LCA1NiwgMjMsIDIzOCwgCi0gICAgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzcsIDIyOSwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzcsIAotICAgIDIyMCwgOTEsIDIzOCwgNTYsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjM3LCAxNjAsIDIwOSwgMTQyLCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjM3LCA0LCAyMywgMjUwLCA3NiwgMTE1LCAyMzcsIDQsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ3LCAKLSAgICAxOTMsIDksIDIsIDIzMCwgNDQsIDIzLCAxNzMsIDksIDIsIDIzMCwgNDQsIDIzLCAxMDYsIDEwNiwgNjgsIDksIDIsIDIzMCwgCi0gICAgNDQsIDIzLCAyMDYsIDIxMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwMiwgNywgMTE1LCAyMDIsIDYsIDksIDIsIDIyOCwgODMsIAotICAgIDksIDIsIDIyOCwgODEsIDksIDIsIDIyOCwgODAsIDksIDIsIDIyOCwgNzksIDksIDIsIDIyOCwgNzgsIDksIDIsIDIyOCwgCi0gICAgNzcsIDksIDIsIDIyOCwgNzYsIDksIDIsIDIyOCwgNzUsIDExNSwgMjI4LCA3NSwgMjM3LCAyMDgsIDksIDIsIDIyOCwgNzQsIAotICAgIDksIDIsIDIyOCwgNzMsIDExNSwgMjI4LCA3MiwgOSwgMiwgMjI4LCA3MSwgOSwgMiwgMjI4LCA3MCwgOSwgMiwgMjI4LCA2OSwgCi0gICAgOSwgMiwgMjI4LCA2OCwgOSwgMiwgMjI4LCA2NywgOSwgMiwgMjI4LCA2NiwgOSwgMiwgMjI4LCA2NSwgOSwgMiwgMjI4LCAKLSAgICA2NCwgOSwgMiwgMjI4LCA2MywgOSwgMiwgMjI4LCA2MiwgOSwgMiwgMjI4LCA2MSwgOSwgMiwgMjI4LCA2MCwgOSwgMiwgCi0gICAgMjI4LCA1OSwgOSwgMiwgMjI4LCA1OCwgOSwgMiwgMjI4LCA1NywgOSwgMiwgMjI4LCA1NiwgOSwgMiwgMjI4LCA1NSwgOSwgCi0gICAgMiwgMjI4LCA1NCwgOSwgMiwgMjI4LCA1MiwgOSwgMiwgMjI4LCA1MywgMjMsIDIzNywgMjMwLCA5LCAyLCAyMjgsIDUzLCAKLSAgICAyMywgMjMxLCA4NSwgOSwgMiwgMjI4LCA1MywgMjMsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCA1MywgMjMsIAotICAgIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgNTMsIDIzLCAyMDcsIDQxLCA5MSwgMjQ5LCAKLSAgICAzMiwgOSwgMiwgMjI4LCA1MSwgOSwgMiwgMjI4LCA1MCwgOSwgMiwgMjI4LCA0OSwgOSwgMiwgMjI4LCA0OCwgOSwgMiwgCi0gICAgMjI4LCA0NywgOSwgMiwgMjI4LCA0NiwgOSwgMiwgMjI4LCA0NSwgOSwgMiwgMjI4LCA0NCwgOSwgMiwgMjI4LCA0MywgOSwgCi0gICAgMiwgMjI4LCA0MiwgOSwgMiwgMjI4LCA0MCwgOSwgMiwgMjI4LCA0MSwgMjMsIDI1MCwgNzUsIDksIDIsIDIyOCwgNDEsIDIzLCAKLSAgICAyNDksIDE1LCA5LCAyLCAyMjgsIDQxLCAyMywgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyMjgsIDQxLCAKLSAgICAyMywgMjI4LCAyMDcsIDksIDIsIDIyOCwgNDEsIDIzLCAyMjgsIDExMywgOSwgMiwgMjI4LCA0MSwgMjMsIDIwOSwgMjE4LCAKLSAgICA5LCAyLCAyMjgsIDQxLCAyMywgMjA5LCAxODcsIDksIDIsIDIyOCwgNDEsIDIzLCAyMDcsIDQwLCA5LCAyLCAyMjgsIDQxLCAKLSAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCA0MSwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMjgsIDM5LCA5LCAyLCAyMjgsIDM3LCAKLSAgICA5LCAyLCAyMjgsIDM4LCAyMywgMjQyLCA0MCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIzOSwgOCwgOSwgMiwgMjI4LCAzOCwgMjMsIAotICAgIDIzMSwgODUsIDksIDIsIDIyOCwgMzgsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIyMiwgCi0gICAgMTAwLCA5LCAyLCAyMjgsIDM4LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCAKLSAgICAzOCwgMjMsIDIxMywgMjgsIDkxLCAyMjksIDEwMCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgMzgsIAotICAgIDIzLCAyMDYsIDE5NywgOSwgMiwgMjI4LCAzNSwgOSwgMiwgMjI4LCAzNCwgOSwgMiwgMjI2LCAyMzgsIDIzNywgMjA5LCAyMywgCi0gICAgMjUwLCA3NSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDMsIDE1NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzcsIDE0MCwgOSwgCi0gICAgMiwgMjI2LCAyMzgsIDIzLCAyMTksIDk2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgCi0gICAgMjI2LCAyMzYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyNCwgMTU2LCA5MSwgMjAyLCAxMTUsIDksIAotICAgIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAyMywgMjM5LCA4LCA5LCAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgCi0gICAgMjMsIDIzMCwgMTIsIDksIDIsIDIyMiwgNjYsIDIzLCAyNDMsIDE4OSwgMjM3LCAyMDgsIDksIDIsIDIyMiwgNjYsIDIzLCAKLSAgICAyMzgsIDU1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAyMTIsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzcsIDMsIDksIDIsIAotICAgIDIyMiwgNjYsIDIzLCAyMjksIDE3MSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyOCwgNzgsIDksIDIsIDIyMiwgNjYsIDIzLCAKLSAgICAyMjUsIDc5LCA5LCAyLCAyMjIsIDY2LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTYsIDksIDIsIDIyMiwgNjYsIDIzLCA2OCwgCi0gICAgOSwgMiwgMjIyLCA2NiwgMjMsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMjIsIDY2LCAyMywgMjA2LCAxOTcsIDksIDIsIDIxNSwgCi0gICAgMjMsIDIzNywgMjA5LCAyMywgMTUyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjQxLCA5MiwgOSwgMiwgMjE1LCAyMywgMjMsIAotICAgIDIxMywgNDQsIDI1MCwgNTAsIDIyNywgMjIyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA5LCAyNDIsIDksIDIsIDIxMywgODcsIAotICAgIDIwOSwgMTQxLCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDMsIDksIDIsIDIxMywgNDQsIDkxLCAyMzYsIDIxLCA5LCAyLCAKLSAgICAyMTMsIDQ0LCA5MSwgMjIzLCA4NiwgOSwgMiwgMjEzLCA0NCwgOTEsIDIxNCwgMjMwLCA5LCAyLCAyMTIsIDE5OCwgOTEsIAotICAgIDI0MiwgMzgsIDIzLCAyMjIsIDEwMCwgOSwgMiwgMjEyLCAxOTgsIDkxLCAyNDEsIDE5MSwgMjMsIDI1MCwgMjMxLCA5LCAyLCAKLSAgICAyMTIsIDE2MywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDksIDI0MywgOTEsIDIxNSwgMjIsIDksIDIsIDIwNywgMTkyLCAyMywgCi0gICAgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMDcsIDE5MiwgMjMsIDEyNiwgMjQzLCAxNTYsIDksIDIsIDIwNiwgMjA5LCAKLSAgICAyMzAsIDIzOCwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDI0NCwgMTUzLCA5LCAKLSAgICAyLCAyMDYsIDIwMCwgMjMsIDIyOCwgMzYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjI2LCAyMzYsIDksIDIsIDIwMiwgMTE1LCAKLSAgICA5LCAyLCAyMDIsIDcsIDExNSwgMjAyLCA3LCA5MSwgMjE0LCAyMzAsIDksIDIsIDIwMiwgNSwgMjMsIDEyNiwgMjQzLCAxNTcsIAotICAgIDIwOSwgMTQxLCAxNCwgNywgMjU1LCAxOCwgMTQsIDcsIDI1NSwgMTcsIDE0LCA3LCAyNTUsIDE2LCAxNCwgNywgMjU1LCAxNSwgCi0gICAgMTQsIDcsIDI1NSwgMTQsIDE0LCA3LCAyNTUsIDEzLCAxNCwgNywgMjU1LCAxMiwgMTQsIDcsIDI1NSwgMTEsIDE0LCA3LCAKLSAgICAyNTUsIDEwLCAxNCwgNywgMjU1LCA5LCAxNCwgNywgMjU1LCA4LCAxNCwgNywgMjU1LCA3LCAxNCwgNywgMjU1LCA2LCAxNCwgCi0gICAgNywgMjU1LCA0LCAxNCwgNywgMjU1LCAzLCAxNCwgNywgMjU1LCAyLCAxNCwgNywgMjU1LCAxLCAxNCwgNywgMjU1LCAwLCAKLSAgICAxNCwgNywgMjU0LCAyNTUsIDE0LCA3LCAyNTQsIDI1NCwgMTQsIDcsIDI1NCwgMjUzLCAxNCwgNywgMjU0LCAyNTIsIDE0LCAKLSAgICA3LCAyNTQsIDI1MSwgMTQsIDcsIDI1NCwgMjUwLCAxNCwgNywgMjU0LCAyNDksIDE0LCA3LCAyNTQsIDI0OCwgMTQsIDcsIAotICAgIDI1NCwgMjQ3LCAxNCwgNywgMjU0LCAyNDYsIDE0LCA3LCAyNTQsIDI0NSwgMTQsIDcsIDI1NCwgMjQ0LCAxNCwgNywgMjU0LCAKLSAgICAyNDMsIDE0LCA3LCAyNTQsIDI0MSwgMTQsIDcsIDI1NCwgMjQwLCAxNCwgNywgMjU0LCAyMzgsIDE0LCA3LCAyNTQsIDIzNywgCi0gICAgMTQsIDcsIDI1NCwgMjM2LCAxNCwgNywgMjU0LCAyMzUsIDE0LCA3LCAyNTQsIDIzNCwgMTQsIDcsIDI1NCwgMjMzLCAxNCwgCi0gICAgNywgMjU0LCAyMzIsIDE0LCA3LCAyNTQsIDIzMSwgMTQsIDcsIDI1NCwgMjMwLCAxNCwgNywgMjU0LCAyMjksIDE0LCA3LCAKLSAgICAyNTQsIDIyOCwgMTQsIDcsIDI1NCwgMjI3LCAxNCwgNywgMjU0LCAyMjUsIDE0LCA3LCAyNTQsIDIyNCwgMTQsIDcsIDI1NCwgCi0gICAgMjIzLCAxNCwgNywgMjU0LCAyMjEsIDE0LCA3LCAyNTQsIDIyMCwgMTQsIDcsIDI1NCwgMjE5LCAxNCwgNywgMjU0LCAyMTgsIAotICAgIDE0LCA3LCAyNTQsIDIxNywgMTQsIDcsIDI1NCwgMjE2LCAxNCwgNywgMjU0LCAyMTUsIDE0LCA3LCAyNTQsIDIxNCwgMTQsIAotICAgIDcsIDI1NCwgMjExLCAxNCwgNywgMjU0LCAyMTAsIDE0LCA3LCAyNTQsIDIwOSwgMTQsIDcsIDI1NCwgMjA4LCAxNCwgNywgCi0gICAgMjU0LCAyMDcsIDE0LCA3LCAyNTQsIDIwNiwgMTQsIDcsIDI1NCwgMjA1LCAxNCwgNywgMjU0LCAyMDQsIDE0LCA3LCAyNTQsIAotICAgIDIwMywgMTQsIDcsIDI1NCwgMjAyLCAxNCwgNywgMjU0LCAyMDEsIDE0LCA3LCAyNTQsIDIwMCwgMTQsIDcsIDI1NCwgMTk5LCAKLSAgICAxNCwgNywgMjU0LCAxOTgsIDE0LCA3LCAyNTQsIDE5NywgMTQsIDcsIDI1NCwgMTk2LCAxNCwgNywgMjU0LCAxOTUsIDE0LCAKLSAgICA3LCAyNTQsIDE5NCwgMTQsIDcsIDI1NCwgMTkzLCAxNCwgNywgMjU0LCAxOTIsIDE0LCA3LCAyNTQsIDE4OCwgMTQsIDcsIAotICAgIDI1NCwgMTg3LCAxNCwgNywgMjU0LCAxODYsIDE0LCA3LCAyNTQsIDE4NSwgMTQsIDcsIDI0OSwgMjUzLCAxNCwgNywgMjQ5LCAKLSAgICAyNTEsIDE0LCA3LCAyNDksIDI0OSwgMTQsIDcsIDI0OSwgMjQ3LCAxNCwgNywgMjQ5LCAyNDUsIDE0LCA3LCAyNDksIDI0NCwgCi0gICAgMTQsIDcsIDI0OSwgMjQyLCAxNCwgNywgMjQ5LCAyNDAsIDE0LCA3LCAyNDksIDIzOCwgMTQsIDcsIDI0OSwgMjM2LCAxNCwgCi0gICAgNywgMjQ3LCAxMjEsIDE0LCA3LCAyNDcsIDEyMCwgMTQsIDcsIDI0NywgMTE5LCAxNCwgNywgMjQ3LCAxMTgsIDE0LCA3LCAKLSAgICAyNDcsIDExNywgMTQsIDcsIDI0NywgMTE2LCAxNCwgNywgMjQ3LCAxMTUsIDE0LCA3LCAyNDcsIDExNCwgMTQsIDcsIDI0NywgCi0gICAgMTEzLCAxNCwgNywgMjQ3LCAxMTIsIDE0LCA3LCAyNDcsIDExMSwgMTQsIDcsIDI0NywgMTEwLCAxNCwgNywgMjQ3LCAxMDksIAotICAgIDE0LCA3LCAyNDcsIDEwOCwgMTQsIDcsIDI0NywgMTA3LCAxNCwgNywgMjQ3LCAxMDYsIDE0LCA3LCAyNDcsIDEwNSwgMTQsIAotICAgIDcsIDI0NywgMTA0LCAxNCwgNywgMjQ3LCAxMDMsIDE0LCA3LCAyNDcsIDEwMiwgMTQsIDcsIDI0NywgMTAxLCAxNCwgNywgCi0gICAgMjQ3LCAxMDAsIDE0LCA3LCAyNDcsIDk5LCAxNCwgNywgMjQ3LCA5OCwgMTQsIDcsIDI0NywgOTcsIDE0LCA3LCAyNDcsIDk2LCAKLSAgICAxNCwgNywgMjQ3LCA5NSwgMTQsIDcsIDI0NywgOTQsIDE0LCA3LCAyNDUsIDUwLCAxNCwgNywgMjQ1LCA0OSwgMTQsIDcsIAotICAgIDI0NSwgNDgsIDE0LCA3LCAyNDUsIDQ3LCAxNCwgNywgMjQ1LCA0NiwgMTQsIDcsIDI0NSwgNDUsIDE0LCA3LCAyNDUsIDQ0LCAKLSAgICAxNCwgNywgMjQ1LCA0MywgMTQsIDcsIDI0NSwgNDIsIDE0LCA3LCAyNDUsIDQxLCAxNCwgNywgMjQ1LCA0MCwgMTQsIDcsIAotICAgIDI0NSwgMzksIDE0LCA3LCAyNDUsIDM4LCAxNCwgNywgMjQ1LCAzNywgMTQsIDcsIDI0NSwgMzYsIDE0LCA3LCAyNDUsIDM1LCAKLSAgICAxNCwgNywgMjQ1LCAzNCwgMTQsIDcsIDI0NSwgMzMsIDE0LCA3LCAyNDUsIDMyLCAxNCwgNywgMjQ1LCAzMSwgMTQsIDcsIAotICAgIDI0NSwgMzAsIDE0LCA3LCAyNDUsIDI5LCAxNCwgNywgMjQ1LCAyOCwgMTQsIDcsIDI0NSwgMjcsIDE0LCA3LCAyNDUsIDI2LCAKLSAgICAxNCwgNywgMjQ1LCAyNSwgMTQsIDcsIDI0NSwgMjQsIDE0LCA3LCAyNDUsIDIzLCAxNCwgNywgMjQ1LCAyMiwgMTQsIDcsIAotICAgIDI0NSwgMjEsIDE0LCA3LCAyNDUsIDIwLCAxNCwgNywgMjQ1LCAxOSwgMTQsIDcsIDI0NSwgMTgsIDE0LCA3LCAyNDUsIDE3LCAKLSAgICAxNCwgNywgMjQ1LCAxNiwgMTQsIDcsIDI0NSwgMTUsIDE0LCA3LCAyNDUsIDE0LCAxNCwgNywgMjQ1LCAxMywgMTQsIDcsIAotICAgIDI0NSwgMTIsIDE0LCA3LCAyNDUsIDExLCAxNCwgNywgMjQ1LCAxMCwgMTQsIDcsIDI0NSwgOSwgMTQsIDcsIDI0NSwgOCwgCi0gICAgMTQsIDcsIDI0NSwgNywgMTQsIDcsIDI0NSwgNiwgMTQsIDcsIDI0NSwgNSwgMTQsIDcsIDI0NSwgNCwgMTQsIDcsIDI0NSwgCi0gICAgMywgMTQsIDcsIDI0NSwgMiwgMTQsIDcsIDI0NSwgMSwgMTQsIDcsIDI0NSwgMCwgMTQsIDcsIDI0NCwgMjU1LCAxNCwgNywgCi0gICAgMjQ0LCAyNTQsIDE0LCA3LCAyNDQsIDI1MywgMTQsIDcsIDI0NCwgMjUyLCAxNCwgNywgMjQ0LCAyNTEsIDE0LCA3LCAyNDQsIAotICAgIDI1MCwgMTQsIDcsIDI0NCwgMjQ5LCAxNCwgNywgMjQ0LCAyNDgsIDE0LCA3LCAyNDQsIDI0NywgMTQsIDcsIDI0NCwgMjQ2LCAKLSAgICAxNCwgNywgMjQ0LCAyNDUsIDE0LCA3LCAyNDQsIDI0NCwgMTQsIDcsIDI0NCwgMjQzLCAxNCwgNywgMjQ0LCAyNDIsIDE0LCAKLSAgICA3LCAyNDQsIDI0MSwgMTQsIDcsIDI0NCwgMjQwLCAxNCwgNywgMjQ0LCAyMzksIDE0LCA3LCAyNDQsIDIzOCwgMTQsIDcsIAotICAgIDI0NCwgMjM3LCAxNCwgNywgMjQ0LCAyMzYsIDE0LCA3LCAyNDQsIDIzNSwgMTQsIDcsIDI0NCwgMjM0LCAxNCwgNywgMjQ0LCAKLSAgICAyMzMsIDE0LCA3LCAyNDQsIDIzMiwgMTQsIDcsIDI0NCwgMjMxLCAxNCwgNywgMjQ0LCAyMzAsIDE0LCA3LCAyNDQsIDIyOSwgCi0gICAgMTQsIDcsIDI0NCwgMjI4LCAxNCwgNywgMjQ0LCAyMjcsIDE0LCA3LCAyNDQsIDIyNiwgMTQsIDcsIDI0NCwgMjI1LCAxNCwgCi0gICAgNywgMjQ0LCAyMjQsIDE0LCA3LCAyNDQsIDIyMywgMTQsIDcsIDI0NCwgMjIyLCAxNCwgNywgMjQ0LCAyMjEsIDE0LCA3LCAKLSAgICAyNDQsIDIyMCwgMTQsIDcsIDI0NCwgMjE5LCAxNCwgNywgMjQ0LCAyMTgsIDE0LCA3LCAyNDQsIDIxNywgMTQsIDcsIDI0NCwgCi0gICAgMjE2LCAxNCwgNywgMjQ0LCAyMTUsIDE0LCA3LCAyNDEsIDIzNSwgMTQsIDcsIDI0MSwgMjM0LCAxNCwgNywgMjQxLCAyMzMsIAotICAgIDE0LCA3LCAyNDEsIDIzMiwgMTQsIDcsIDI0MSwgMjMxLCAxNCwgNywgMjQxLCAyMzAsIDE0LCA3LCAyNDEsIDIyOSwgMTQsIAotICAgIDcsIDI0MSwgMjI4LCAxNCwgNywgMjQxLCAyMjcsIDE0LCA3LCAyNDEsIDIyNiwgMTQsIDcsIDI0MSwgMjI1LCAxNCwgNywgCi0gICAgMjQxLCAyMjQsIDE0LCA3LCAyNDEsIDIyMywgMTQsIDcsIDI0MSwgMjIyLCAxNCwgNywgMjQxLCAyMjEsIDE0LCA3LCAyNDEsIAotICAgIDIyMCwgMTQsIDcsIDI0MSwgMjE5LCAxNCwgNywgMjQxLCAyMTgsIDE0LCA3LCAyNDEsIDIxNywgMTQsIDcsIDI0MSwgMjE2LCAKLSAgICAxNCwgNywgMjQxLCAyMTUsIDE0LCA3LCAyNDEsIDIxNCwgMTQsIDcsIDI0MSwgMjEzLCAxNCwgNywgMjQxLCAyMTIsIDE0LCAKLSAgICA3LCAyNDEsIDIxMSwgMTQsIDcsIDI0MSwgMjEwLCAxNCwgNywgMjQxLCAyMDksIDE0LCA3LCAyNDEsIDIwOCwgMTQsIDcsIAotICAgIDI0MSwgMjA3LCAxNCwgNywgMjQxLCAyMDYsIDE0LCA3LCAyNDEsIDIwNSwgMTQsIDcsIDI0MSwgMjA0LCAxNCwgNywgMjQxLCAKLSAgICAyMDMsIDE0LCA3LCAyNDEsIDIwMiwgMTQsIDcsIDI0MSwgMjAxLCAxNCwgNywgMjQxLCAyMDAsIDE0LCA3LCAyNDEsIDE5OSwgCi0gICAgMTQsIDcsIDI0MSwgMTk4LCAxNCwgNywgMjQxLCAxOTcsIDE0LCA3LCAyNDEsIDE5NiwgMTQsIDcsIDI0MSwgMTk1LCAxNCwgCi0gICAgNywgMjQxLCAxOTQsIDE0LCA3LCAyNDEsIDE5MywgMTQsIDcsIDI0MSwgMTkyLCAxNCwgNywgMjQwLCAxNzMsIDE0LCA3LCAKLSAgICAyNDAsIDE3MiwgMTQsIDcsIDI0MCwgMTcxLCAxNCwgNywgMjQwLCAxNzAsIDE0LCA3LCAyNDAsIDE2OSwgMTQsIDcsIDI0MCwgCi0gICAgMTY4LCAxNCwgNywgMjQwLCAxNjcsIDE0LCA3LCAyNDAsIDE2NiwgMTQsIDcsIDI0MCwgMTY1LCAxNCwgNywgMjQwLCAxNjQsIAotICAgIDE0LCA3LCAyNDAsIDE2MywgMTQsIDcsIDI0MCwgMTYyLCAxNCwgNywgMjQwLCAxNjEsIDE0LCA3LCAyNDAsIDE2MCwgMTQsIAotICAgIDcsIDI0MCwgMTU5LCAxNCwgNywgMjQwLCAxNTgsIDE0LCA3LCAyNDAsIDE1NywgMTQsIDcsIDI0MCwgMTU2LCAxNCwgNywgCi0gICAgMjQwLCAxNTUsIDE0LCA3LCAyNDAsIDE1NCwgMTQsIDcsIDI0MCwgMTUzLCAxNCwgNywgMjQwLCAxNTIsIDE0LCA3LCAyNDAsIAotICAgIDE1MSwgMTQsIDcsIDI0MCwgMTUwLCAxNCwgNywgMjQwLCAxNDksIDE0LCA3LCAyNDAsIDE0OCwgMTQsIDcsIDI0MCwgMTQ3LCAKLSAgICAxNCwgNywgMjQwLCAxNDYsIDE0LCA3LCAyNDAsIDE0NSwgMTQsIDcsIDI0MCwgMTQ0LCAxNCwgNywgMjQwLCAxNDMsIDE0LCAKLSAgICA3LCAyNDAsIDE0MiwgMTQsIDcsIDI0MCwgMTQxLCAxNCwgNywgMjQwLCAxNDAsIDE0LCA3LCAyNDAsIDEzOSwgMTQsIDcsIAotICAgIDI0MCwgMTM4LCAxNCwgNywgMjQwLCAxMzcsIDE0LCA3LCAyNDAsIDEzNiwgMTQsIDcsIDI0MCwgMTM1LCAxNCwgNywgMjQwLCAKLSAgICAxMzQsIDE0LCA3LCAyNDAsIDEzMywgMTQsIDcsIDI0MCwgMTMyLCAxNCwgNywgMjQwLCAxMzEsIDE0LCA3LCAyNDAsIDEzMCwgCi0gICAgMTQsIDcsIDI0MCwgMTI5LCAxNCwgNywgMjQwLCAxMjgsIDE0LCA3LCAyNDAsIDEyNywgMTQsIDcsIDI0MCwgMTI2LCAxNCwgCi0gICAgNywgMjQwLCAxMjUsIDE0LCA3LCAyNDAsIDEyNCwgMTQsIDcsIDI0MCwgMTIzLCAxNCwgNywgMjQwLCAxMjIsIDE0LCA3LCAKLSAgICAyNDAsIDEyMSwgMTQsIDcsIDI0MCwgMTIwLCAxNCwgNywgMjQwLCAxMTksIDE0LCA3LCAyNDAsIDExOCwgMTQsIDcsIDI0MCwgCi0gICAgMTE3LCAxNCwgNywgMjQwLCAxMTYsIDE0LCA3LCAyNDAsIDExNSwgMTQsIDcsIDI0MCwgMTE0LCAxNCwgNywgMjQwLCAxMTMsIAotICAgIDE0LCA3LCAyNDAsIDExMiwgMTQsIDcsIDI0MCwgMTExLCAxNCwgNywgMjQwLCAxMTAsIDE0LCA3LCAyNDAsIDEwOSwgMTQsIAotICAgIDcsIDIzOSwgNzQsIDE0LCA3LCAyMzksIDczLCAxNCwgNywgMjM5LCA3MiwgMTQsIDcsIDIzOSwgNzEsIDE0LCA3LCAyMzksIAotICAgIDcwLCAxNCwgNywgMjM5LCA2OSwgMTQsIDcsIDIzOSwgNjgsIDE0LCA3LCAyMzksIDY3LCAxNCwgNywgMjM5LCA2NiwgMTQsIAotICAgIDcsIDIzOSwgNjUsIDE0LCA3LCAyMzksIDY0LCAxNCwgNywgMjM5LCA2MywgMTQsIDcsIDIzOSwgNjIsIDE0LCA3LCAyMzksIAotICAgIDYxLCAxNCwgNywgMjM5LCA2MCwgMTQsIDcsIDIzOSwgNTksIDE0LCA3LCAyMzksIDU4LCAxNCwgNywgMjM5LCA1NywgMTQsIAotICAgIDcsIDIzOSwgNTYsIDE0LCA3LCAyMzksIDU1LCAxNCwgNywgMjM5LCA1NCwgMTQsIDcsIDIzOSwgNTMsIDE0LCA3LCAyMzksIAotICAgIDUyLCAxNCwgNywgMjM5LCA1MSwgMTQsIDcsIDIzOSwgNTAsIDE0LCA3LCAyMzksIDQ5LCAxNCwgNywgMjM5LCA0OCwgMTQsIAotICAgIDcsIDIzOSwgNDcsIDE0LCA3LCAyMzksIDQ2LCAxNCwgNywgMjM5LCA0NSwgMTQsIDcsIDIzOSwgNDQsIDE0LCA3LCAyMzksIAotICAgIDQzLCAxNCwgNywgMjM5LCA0MiwgMTQsIDcsIDIzOSwgNDEsIDE0LCA3LCAyMzksIDQwLCAxNCwgNywgMjM5LCAzOSwgMTQsIAotICAgIDcsIDIzOSwgMzgsIDE0LCA3LCAyMzksIDM3LCAxNCwgNywgMjM5LCAzNiwgMTQsIDcsIDIzOSwgMzUsIDE0LCA3LCAyMzksIAotICAgIDM0LCAxNCwgNywgMjM5LCAzMywgMTQsIDcsIDIzOSwgMzIsIDE0LCA3LCAyMzksIDMxLCAxNCwgNywgMjM5LCAzMCwgMTQsIAotICAgIDcsIDIzOSwgMjksIDE0LCA3LCAyMzksIDI4LCAxNCwgNywgMjM5LCAyNywgMTQsIDcsIDIzOSwgMjYsIDE0LCA3LCAyMzksIAotICAgIDI1LCAxNCwgNywgMjM5LCAyNCwgMTQsIDcsIDIzOSwgMjMsIDE0LCA3LCAyMzksIDIyLCAxNCwgNywgMjM5LCAyMSwgMTQsIAotICAgIDcsIDIzOSwgMjAsIDE0LCA3LCAyMzksIDE5LCAxNCwgNywgMjM5LCAxOCwgMTQsIDcsIDIzOSwgMTcsIDE0LCA3LCAyMzksIAotICAgIDE2LCAxNCwgNywgMjM5LCAxNSwgMTQsIDcsIDIzOSwgMTQsIDE0LCA3LCAyMzksIDEzLCAxNCwgNywgMjM5LCAxMiwgMTQsIAotICAgIDcsIDIzOSwgMTEsIDE0LCA3LCAyMzcsIDE2OSwgMTQsIDcsIDIzNywgMTY4LCAxNCwgNywgMjM3LCAxNjcsIDE0LCA3LCAKLSAgICAyMzcsIDE2NiwgMTQsIDcsIDIzNywgMTY1LCAxNCwgNywgMjM3LCAxNjQsIDE0LCA3LCAyMzcsIDE2MywgMTQsIDcsIDIzNywgCi0gICAgMTYyLCAxNCwgNywgMjM3LCAxNjEsIDE0LCA3LCAyMzUsIDE5MCwgMTQsIDcsIDIzNSwgMTg5LCAxNCwgNywgMjM1LCAxODgsIAotICAgIDE0LCA3LCAyMzUsIDE4NywgMTQsIDcsIDIzNSwgMTg2LCAxNCwgNywgMjM1LCAxODUsIDE0LCA3LCAyMzUsIDE4NCwgMTQsIAotICAgIDcsIDIzNSwgMTgzLCAxNCwgNywgMjM1LCAxODIsIDE0LCA3LCAyMzUsIDE4MSwgMTQsIDcsIDIzNSwgMTgwLCAxNCwgNywgCi0gICAgMjM1LCAxNzksIDE0LCA3LCAyMzUsIDE3OCwgMTQsIDcsIDIzNSwgMTc3LCAxNCwgNywgMjM1LCAxNzYsIDE0LCA3LCAyMzUsIAotICAgIDE3NSwgMTQsIDcsIDIzNSwgMTc0LCAxNCwgNywgMjM1LCAxNzMsIDE0LCA3LCAyMzUsIDE3MiwgMTQsIDcsIDIzMCwgNTMsIAotICAgIDE0LCA3LCAyMzAsIDUyLCAxNCwgNywgMjMwLCA1MSwgMTQsIDcsIDIzMCwgNTAsIDE0LCA3LCAyMzAsIDQ5LCAxNCwgNywgCi0gICAgMjMwLCA0OCwgMTQsIDcsIDIzMCwgNDcsIDE0LCA3LCAyMzAsIDQ2LCAxNCwgNywgMjI4LCAxMjgsIDE0LCA3LCAyMjgsIAotICAgIDEyNywgMTQsIDcsIDIyOCwgMTI2LCAxNCwgNywgMjI4LCAxMjUsIDE0LCA3LCAyMjgsIDEyNCwgMTQsIDcsIDIyOCwgMTIzLCAKLSAgICAxNCwgNywgMjI4LCAxMjIsIDE0LCA3LCAyMjgsIDEyMSwgMTQsIDcsIDIyOCwgMTIwLCAxNCwgNywgMjI4LCAxMTksIDE0LCAKLSAgICA3LCAyMjYsIDE4MywgMTQsIDcsIDIyNiwgMTgyLCAxNCwgNywgMjI2LCAxODEsIDE0LCA3LCAyMjYsIDE3OSwgMTQsIDcsIAotICAgIDIyNiwgMTc3LCAxNCwgNywgMjI2LCAxNzYsIDE0LCA3LCAyMjYsIDE3NCwgMTQsIDcsIDIyNiwgMTcyLCAxNCwgNywgMjI2LCAKLSAgICAxNzAsIDE0LCA3LCAyMjYsIDE2OCwgMTQsIDcsIDIyNiwgMTY2LCAxNCwgNywgMjI2LCAxNjQsIDE0LCA3LCAyMjYsIDE2MiwgCi0gICAgMTQsIDcsIDIyNiwgMTYxLCAxNCwgNywgMjI2LCAxNTksIDE0LCA3LCAyMjYsIDE1NywgMTQsIDcsIDIyNiwgMTU2LCAxNCwgCi0gICAgNywgMjI2LCAxNTUsIDE0LCA3LCAyMjYsIDE1NCwgMTQsIDcsIDIyNiwgMTUzLCAxNCwgNywgMjI2LCAxNTIsIDE0LCA3LCAKLSAgICAyMjYsIDE1MSwgMTQsIDcsIDIyNiwgMTUwLCAxNCwgNywgMjI2LCAxNDksIDE0LCA3LCAyMjYsIDE0NywgMTQsIDcsIDIyNiwgCi0gICAgMTQ1LCAxNCwgNywgMjI2LCAxNDMsIDE0LCA3LCAyMjYsIDE0MiwgMTQsIDcsIDIyNiwgMTQwLCAxNCwgNywgMjI2LCAxMzksIAotICAgIDE0LCA3LCAyMjYsIDEzNywgMTQsIDcsIDIyNiwgMTM2LCAxNCwgNywgMjI2LCAxMzQsIDE0LCA3LCAyMjYsIDEzMiwgMTQsIAotICAgIDcsIDIyNiwgMTMwLCAxNCwgNywgMjI2LCAxMjgsIDE0LCA3LCAyMjYsIDEyNiwgMTQsIDcsIDIyNiwgMTI1LCAxNCwgNywgCi0gICAgMjI2LCAxMjMsIDE0LCA3LCAyMjYsIDEyMSwgMTQsIDcsIDIyNiwgMTIwLCAxNCwgNywgMjI2LCAxMTgsIDE0LCA3LCAyMjYsIAotICAgIDExNiwgMTQsIDcsIDIyNiwgMTE0LCAxNCwgNywgMjI2LCAxMTIsIDE0LCA3LCAyMjYsIDExMSwgMTQsIDcsIDIyNiwgMTA5LCAKLSAgICAxNCwgNywgMjI2LCAxMDcsIDE0LCA3LCAyMjYsIDEwNSwgMTQsIDcsIDIyNiwgMTA0LCAxNCwgNywgMjI2LCAxMDIsIDE0LCAKLSAgICA3LCAyMjYsIDEwMCwgMTQsIDcsIDIyNiwgOTksIDE0LCA3LCAyMjYsIDk4LCAxNCwgNywgMjI2LCA5NiwgMTQsIDcsIDIyNiwgCi0gICAgOTQsIDE0LCA3LCAyMjYsIDkyLCAxNCwgNywgMjI2LCA5MCwgMTQsIDcsIDIyNiwgODgsIDE0LCA3LCAyMjYsIDg2LCAxNCwgCi0gICAgNywgMjI2LCA4NCwgMTQsIDcsIDIyNiwgODMsIDE0LCA3LCAyMjYsIDgxLCAxNCwgNywgMjI2LCA3OSwgMTQsIDcsIDIyNiwgCi0gICAgNzcsIDE0LCA3LCAyMjYsIDc1LCAxNCwgNywgMjIzLCAxNjAsIDE0LCA3LCAyMjMsIDE1OSwgMTQsIDcsIDIyMywgMTU4LCAKLSAgICAxNCwgNywgMjIzLCAxNTcsIDE0LCA3LCAyMjMsIDE1NiwgMTQsIDcsIDIyMywgMTU1LCAxNCwgNywgMjIzLCAxNTQsIDE0LCAKLSAgICA3LCAyMjMsIDE1MywgMTQsIDcsIDIyMywgMTUyLCAxNCwgNywgMjIzLCAxNTEsIDE0LCA3LCAyMjMsIDE1MCwgMTQsIDcsIAotICAgIDIyMywgMTQ5LCAxNCwgNywgMjIzLCAxNDgsIDE0LCA3LCAyMjMsIDE0NywgMTQsIDcsIDIyMywgMTQ2LCAxNCwgNywgMjIzLCAKLSAgICAxNDUsIDE0LCA3LCAyMjMsIDE0NCwgMTQsIDcsIDIyMywgMTQzLCAxNCwgNywgMjIzLCAxNDIsIDE0LCA3LCAyMjMsIDE0MSwgCi0gICAgMTQsIDcsIDIyMywgMTQwLCAxNCwgNywgMjIzLCAxMzksIDE0LCA3LCAyMjMsIDEzOCwgMTQsIDcsIDIyMywgMTM3LCAxNCwgCi0gICAgNywgMjIzLCAxMzYsIDE0LCA3LCAyMjMsIDEzNSwgMTQsIDcsIDIyMywgMTM0LCAxNCwgNywgMjIzLCAxMzMsIDE0LCA3LCAKLSAgICAyMjMsIDEzMiwgMTQsIDcsIDIyMywgMTMxLCAxNCwgNywgMjIzLCAxMzAsIDE0LCA3LCAyMjMsIDEyOSwgMTQsIDcsIDIyMywgCi0gICAgMTI4LCAxNCwgNywgMjIzLCAxMjcsIDE0LCA3LCAyMjMsIDEyNiwgMTQsIDcsIDIyMywgMTI1LCAxNCwgNywgMjIzLCAxMjQsIAotICAgIDE0LCA3LCAyMjMsIDEyMywgMTQsIDcsIDIyMywgMTIyLCAxNCwgNywgMjIzLCAxMjEsIDE0LCA3LCAyMjMsIDEyMCwgMTQsIAotICAgIDcsIDIyMywgMTE5LCAxNCwgNywgMjIzLCAxMTgsIDE0LCA3LCAyMjMsIDExNywgMTQsIDcsIDIyMywgMTE2LCAxNCwgNywgCi0gICAgMjIzLCAxMTUsIDE0LCA3LCAyMjMsIDExNCwgMTQsIDcsIDIyMywgMTEzLCAxNCwgNywgMjIzLCAxMTIsIDE0LCA3LCAyMjEsIAotICAgIDI1MiwgMTQsIDcsIDIyMSwgMjUxLCAxNCwgNywgMjIxLCAyNTAsIDE0LCA3LCAyMjEsIDI0OSwgMTQsIDcsIDIyMSwgMjQ4LCAKLSAgICAxNCwgNywgMjIxLCAyNDcsIDE0LCA3LCAyMjEsIDI0NiwgMTQsIDcsIDIyMSwgMjQ1LCAxNCwgNywgMjIxLCAyNDQsIDE0LCAKLSAgICA3LCAyMjEsIDI0MywgMTQsIDcsIDIyMSwgMjQyLCAxNCwgNywgMjIxLCAyNDEsIDE0LCA3LCAyMjEsIDI0MCwgMTQsIDcsIAotICAgIDIyMSwgMjM5LCAxNCwgNywgMjIxLCAyMzgsIDE0LCA3LCAyMjEsIDIzNywgMTQsIDcsIDIyMSwgMjM2LCAxNCwgNywgMjIxLCAKLSAgICAyMzUsIDE0LCA3LCAyMjEsIDIzNCwgMTQsIDcsIDIyMSwgMjMzLCAxNCwgNywgMjIxLCAyMzIsIDE0LCA3LCAyMjEsIDIzMSwgCi0gICAgMTQsIDcsIDIyMSwgODMsIDE0LCA3LCAyMjEsIDgyLCAxNCwgNywgMjIxLCA4MSwgMTQsIDcsIDIyMSwgODAsIDE0LCA3LCAKLSAgICAyMjEsIDc5LCAxNCwgNywgMjIxLCA3OCwgMTQsIDcsIDIyMSwgNzcsIDE0LCA3LCAyMjEsIDc2LCAxNCwgNywgMjIxLCA3NSwgCi0gICAgMTQsIDcsIDIyMSwgNzQsIDE0LCA3LCAyMjEsIDczLCAxNCwgNywgMjIxLCA3MiwgMTQsIDcsIDIyMSwgNzEsIDE0LCA3LCAKLSAgICAyMjEsIDcwLCAxNCwgNywgMjIxLCA2OSwgMTQsIDcsIDIyMSwgNjgsIDE0LCA3LCAyMjEsIDY3LCAxNCwgNywgMjIxLCA2NiwgCi0gICAgMTQsIDcsIDIyMSwgNjUsIDE0LCA3LCAyMjEsIDY0LCAxNCwgNywgMjIxLCA2MywgMTQsIDcsIDIyMSwgNjIsIDE0LCA3LCAKLSAgICAyMjEsIDYxLCAxNCwgNywgMjIxLCA2MCwgMTQsIDcsIDIyMSwgNTksIDE0LCA3LCAyMjEsIDU4LCAxNCwgNywgMjIwLCAxNzMsIAotICAgIDE0LCA3LCAyMjAsIDE3MiwgMTQsIDcsIDIyMCwgMTcxLCAxNCwgNywgMjIwLCAxNzAsIDE0LCA3LCAyMjAsIDE2OSwgMTQsIAotICAgIDcsIDIyMCwgMTY4LCAxNCwgNywgMjIwLCAxNjcsIDE0LCA3LCAyMjAsIDE2NiwgMTQsIDcsIDIyMCwgMTY1LCAxNCwgNywgCi0gICAgMjIwLCAxNjQsIDE0LCA3LCAyMjAsIDE2MywgMTQsIDcsIDIyMCwgMTYyLCAxNCwgNywgMjIwLCAxNjEsIDE0LCA3LCAyMjAsIAotICAgIDE2MCwgMTQsIDcsIDIyMCwgMTU5LCAxNCwgNywgMjIwLCAxNTgsIDE0LCA3LCAyMjAsIDE1NywgMTQsIDcsIDIyMCwgMTU2LCAKLSAgICAxNCwgNywgMjIwLCAxNTUsIDE0LCA3LCAyMjAsIDE1NCwgMTQsIDcsIDIyMCwgMTUzLCAxNCwgNywgMjIwLCAxNTIsIDE0LCAKLSAgICA3LCAyMjAsIDE1MSwgMTQsIDcsIDIyMCwgMTUwLCAxNCwgNywgMjIwLCAxNDksIDE0LCA3LCAyMjAsIDE0OCwgMTQsIDcsIAotICAgIDIyMCwgMTQ3LCAxNCwgNywgMjIwLCAxNDYsIDE0LCA3LCAyMjAsIDE0NSwgMTQsIDcsIDIyMCwgMTQ0LCAxNCwgNywgMjIwLCAKLSAgICAxNDMsIDE0LCA3LCAyMjAsIDE0MiwgMTQsIDcsIDIyMCwgMTQxLCAxNCwgNywgMjIwLCAxNDAsIDE0LCA3LCAyMjAsIDEzOSwgCi0gICAgMTQsIDcsIDIyMCwgMTM4LCAxNCwgNywgMjIwLCAxMzcsIDE0LCA3LCAyMjAsIDEzNiwgMTQsIDcsIDIyMCwgMTM1LCAxNCwgCi0gICAgNywgMjIwLCAxMzQsIDE0LCA3LCAyMjAsIDEzMywgMTQsIDcsIDIyMCwgMTMyLCAxNCwgNywgMjIwLCAxMzEsIDE0LCA3LCAKLSAgICAyMjAsIDEzMCwgMTQsIDcsIDIyMCwgMTI5LCAxNCwgNywgMjIwLCAxMjgsIDE0LCA3LCAyMjAsIDEyNywgMTQsIDcsIDIyMCwgCi0gICAgMTI2LCAxNCwgNywgMjIwLCAxMjUsIDE0LCA3LCAyMjAsIDEyNCwgMTQsIDcsIDIyMCwgMTIzLCAxNCwgNywgMjIwLCAxMjIsIAotICAgIDE0LCA3LCAyMjAsIDEyMSwgMTQsIDcsIDIyMCwgMTIwLCAxNCwgNywgMjIwLCAxMTksIDE0LCA3LCAyMjAsIDExOCwgMTQsIAotICAgIDcsIDIyMCwgMTE3LCAxNCwgNywgMjIwLCAxMTYsIDE0LCA3LCAyMjAsIDExNSwgMTQsIDcsIDIyMCwgMTE0LCAxNCwgNywgCi0gICAgMjIwLCAxMTMsIDE0LCA3LCAyMjAsIDExMiwgMTQsIDcsIDIyMCwgMTExLCAxNCwgNywgMjIwLCAxMTAsIDE0LCA3LCAyMjAsIAotICAgIDEwOSwgMTQsIDcsIDIyMCwgMTA4LCAxNCwgNywgMjIwLCAxMDcsIDE0LCA3LCAyMjAsIDEwNiwgMTQsIDcsIDIyMCwgMTA1LCAKLSAgICAxNCwgNywgMjIwLCAxMDQsIDE0LCA3LCAyMjAsIDEwMywgMTQsIDcsIDIyMCwgMTAyLCAxNCwgNywgMjIwLCAxMDEsIDE0LCAKLSAgICA3LCAyMjAsIDEwMCwgMTQsIDcsIDIyMCwgOTksIDE0LCA3LCAyMTksIDE4MywgMTQsIDcsIDIxOSwgMTgyLCAxNCwgNywgCi0gICAgMjE5LCAxODEsIDE0LCA3LCAyMTksIDE4MCwgMTQsIDcsIDIxOSwgMTc5LCAxNCwgNywgMjE5LCAxNzgsIDE0LCA3LCAyMTksIAotICAgIDE3NywgMTQsIDcsIDIxOSwgMTc2LCAxNCwgNywgMjE5LCAxNzUsIDE0LCA3LCAyMTksIDE3NCwgMTQsIDcsIDIxOSwgMTczLCAKLSAgICAxNCwgNywgMjE5LCAxNzIsIDE0LCA3LCAyMTksIDE3MSwgMTQsIDcsIDIxNywgMTMzLCAxNCwgNywgMjE3LCAxMzIsIDE0LCAKLSAgICA3LCAyMTcsIDEzMSwgMTQsIDcsIDIxNywgMTMwLCAxNCwgNywgMjE3LCAxMjksIDE0LCA3LCAyMTcsIDEyOCwgMTQsIDcsIAotICAgIDIxNywgMTI3LCAxNCwgNywgMjE2LCAyNTUsIDE0LCA3LCAyMTYsIDI1NCwgMTQsIDcsIDIxNiwgMjUzLCAxNCwgNywgMjE2LCAKLSAgICAyNTIsIDE0LCA3LCAyMTYsIDI1MSwgMTQsIDcsIDIxNiwgMjUwLCAxNCwgNywgMjE2LCAyNDksIDE0LCA3LCAyMTYsIDI0OCwgCi0gICAgMTQsIDcsIDIxNiwgMjQ3LCAxNCwgNywgMjE2LCAyNDYsIDE0LCA3LCAyMTYsIDI0NSwgMTQsIDcsIDIxNiwgMjQ0LCAxNCwgCi0gICAgNywgMjE2LCAyNDMsIDE0LCA3LCAyMTYsIDI0MiwgMTQsIDcsIDIxNiwgMjQxLCAxNCwgNywgMjE2LCAyNDAsIDE0LCA3LCAKLSAgICAyMTYsIDIzOSwgMTQsIDcsIDIxNiwgMjM4LCAxNCwgNywgMjE2LCAyMzcsIDE0LCA3LCAyMTYsIDIzNiwgMTQsIDcsIDIxNiwgCi0gICAgMjM1LCAxNCwgNywgMjE2LCAyMzQsIDE0LCA3LCAyMTYsIDIzMywgMTQsIDcsIDIxNiwgMjMyLCAxNCwgNywgMjE2LCAyMzEsIAotICAgIDE0LCA3LCAyMTYsIDIzMCwgMTQsIDcsIDIxNiwgMjI5LCAxNCwgNywgMjE2LCAyMjgsIDE0LCA3LCAyMTYsIDIyNywgMTQsIAotICAgIDcsIDIxNiwgMjI2LCAxNCwgNywgMjE2LCAyMjUsIDE0LCA3LCAyMTYsIDIyNCwgMTQsIDcsIDIxNiwgMjIzLCAxNCwgNywgCi0gICAgMjE2LCAyMjIsIDE0LCA3LCAyMTUsIDkxLCAxNCwgNywgMjE1LCA5MCwgMTQsIDcsIDIxNSwgODksIDE0LCA3LCAyMTUsIDg4LCAKLSAgICAxNCwgNywgMjE1LCA4NywgMTQsIDcsIDIxNSwgODYsIDE0LCA3LCAyMTUsIDg1LCAxNCwgNywgMjE1LCA4NCwgMTQsIDcsIAotICAgIDIxNSwgODMsIDE0LCA3LCAyMTUsIDgyLCAxNCwgNywgMjE1LCA4MSwgMTQsIDcsIDIxNSwgODAsIDE0LCA3LCAyMTUsIDc5LCAKLSAgICAxNCwgNywgMjE1LCA3OCwgMTQsIDcsIDIxNSwgNzcsIDE0LCA3LCAyMTUsIDc2LCAxNCwgNywgMjE1LCA3NSwgMTQsIDcsIAotICAgIDIxNSwgNzQsIDE0LCA3LCAyMTUsIDczLCAxNCwgNywgMjE1LCA3MiwgMTQsIDcsIDIxNSwgNzEsIDE0LCA3LCAyMTUsIDcwLCAKLSAgICAxNCwgNywgMjE1LCA2OSwgMTQsIDcsIDIxNSwgNjgsIDE0LCA3LCAyMTUsIDY3LCAxNCwgNywgMjE1LCA2NiwgMTQsIDcsIAotICAgIDIxNSwgNjUsIDE0LCA3LCAyMTUsIDY0LCAxNCwgNywgMjE1LCA2MywgMTQsIDcsIDIxNSwgNjIsIDE0LCA3LCAyMTUsIDYxLCAKLSAgICAxNCwgNywgMjE1LCA2MCwgMTQsIDcsIDIxNSwgNTksIDE0LCA3LCAyMTUsIDU4LCAxNCwgNywgMjE1LCA1NywgMTQsIDcsIAotICAgIDIxNSwgNTYsIDE0LCA3LCAyMTUsIDU1LCAxNCwgNywgMjE1LCA1NCwgMTQsIDcsIDIxNSwgNTMsIDE0LCA3LCAyMTUsIDUyLCAKLSAgICAxNCwgNywgMjE1LCA1MSwgMTQsIDcsIDIxNSwgNTAsIDE0LCA3LCAyMTUsIDQ5LCAxNCwgNywgMjE1LCA0OCwgMTQsIDcsIAotICAgIDIxNSwgNDcsIDE0LCA3LCAyMTUsIDQ2LCAxNCwgNywgMjE1LCA0NSwgMTQsIDcsIDIxNSwgNDQsIDE0LCA3LCAyMTUsIDQzLCAKLSAgICAxNCwgNywgMjE1LCA0MiwgMTQsIDcsIDIxNSwgNDEsIDE0LCA3LCAyMTUsIDQwLCAxNCwgNywgMjE1LCAzOSwgMTQsIDcsIAotICAgIDIxNSwgMzgsIDE0LCA3LCAyMTAsIDY3LCAxNCwgNywgMjEwLCA2NiwgMTQsIDcsIDIxMCwgNjUsIDE0LCA3LCAyMTAsIDY0LCAKLSAgICAxNCwgNywgMjEwLCA2MywgMTQsIDcsIDIxMCwgNjIsIDE0LCA3LCAyMTAsIDYxLCAxNCwgNywgMjEwLCA2MCwgMTQsIDcsIAotICAgIDIxMCwgNTksIDE0LCA3LCAyMTAsIDU4LCAxNCwgNywgMjEwLCA1NywgMTQsIDcsIDIxMCwgNTYsIDE0LCA3LCAyMTAsIDU1LCAKLSAgICAxNCwgNywgMjEwLCA1NCwgMTQsIDcsIDIxMCwgNTMsIDE0LCA3LCAyMTAsIDUyLCAxNCwgNywgMjEwLCA1MSwgMTQsIDcsIAotICAgIDIxMCwgNTAsIDE0LCA3LCAyMTAsIDQ5LCAxNCwgNywgMjEwLCA0OCwgMTQsIDcsIDIxMCwgNDcsIDE0LCA3LCAyMTAsIDQ2LCAKLSAgICAxNCwgNywgMjEwLCA0NSwgMTQsIDcsIDIxMCwgNDQsIDE0LCA3LCAyMTAsIDQzLCAxNCwgNywgMjEwLCA0MiwgMTQsIDcsIAotICAgIDIxMCwgNDEsIDE0LCA3LCAyMTAsIDQwLCAxNCwgNywgMjEwLCAzOSwgMTQsIDcsIDIxMCwgMzgsIDE0LCA3LCAyMTAsIDM3LCAKLSAgICAxNCwgNywgMjEwLCAzNiwgMTQsIDcsIDIxMCwgMzUsIDE0LCA3LCAyMTAsIDM0LCAxNCwgNywgMjEwLCAzMywgMTQsIDcsIAotICAgIDIxMCwgMzIsIDE0LCA3LCAyMTAsIDMxLCAxNCwgNywgMjEwLCAzMCwgMTQsIDcsIDIxMCwgMjksIDE0LCA3LCAyMTAsIDI4LCAKLSAgICAxNCwgNywgMjEwLCAyNywgMTQsIDcsIDIxMCwgMjYsIDE0LCA3LCAyMTAsIDI1LCAxNCwgNywgMjEwLCAyNCwgMTQsIDcsIAotICAgIDIwNywgODgsIDE0LCA3LCAyMDcsIDg3LCAxNCwgNywgMjA3LCA4NiwgMTQsIDcsIDIwNywgODUsIDE0LCA3LCAyMDcsIDg0LCAKLSAgICAxNCwgNywgMjA3LCA4MywgMTQsIDcsIDIwNywgODIsIDE0LCA3LCAyMDcsIDgxLCAxNCwgNywgMjA3LCA4MCwgMTQsIDcsIAotICAgIDIwNywgNzksIDE0LCA3LCAyMDcsIDc4LCAxNCwgNywgMjA3LCA3NywgMTQsIDcsIDIwNywgNzYsIDE0LCA3LCAyMDcsIDc1LCAKLSAgICAxNCwgNywgMjA3LCA3NCwgMTQsIDcsIDIwNywgNzMsIDE0LCA3LCAyMDcsIDcyLCAxNCwgNywgMjA3LCA3MSwgMTQsIDcsIAotICAgIDIwNywgNzAsIDE0LCA3LCAyMDcsIDY5LCAxNCwgNywgMjA3LCA2OCwgMTQsIDcsIDIwNywgNjcsIDE0LCA3LCAyMDcsIDY2LCAKLSAgICAxNCwgNywgMjA3LCA2NSwgMTQsIDcsIDIwNywgNjQsIDE0LCA3LCAyMDcsIDYzLCAxNCwgNywgMjA3LCA2MiwgMTQsIDcsIAotICAgIDIwNywgNjEsIDE0LCA3LCAyMDcsIDYwLCAxNCwgNywgMjA3LCA1OSwgMTQsIDcsIDIwNywgNTgsIDE0LCA3LCAyMDcsIDU3LCAKLSAgICAxNCwgNywgMjA3LCA1NiwgMTQsIDcsIDIwNywgNTUsIDE0LCA3LCAyMDcsIDU0LCAxNCwgNywgMjA3LCA1MywgMTQsIDcsIAotICAgIDIwNywgNTIsIDE0LCA3LCAyMDcsIDUxLCAxNCwgNywgMjA3LCA1MCwgMTQsIDcsIDIwNywgNDksIDE0LCA3LCAyMDcsIDQ4LCAKLSAgICAxNCwgNywgMjA3LCA0NywgMTQsIDcsIDIwNywgNDYsIDE0LCA3LCAyMDcsIDQ1LCAxNCwgNywgMjA3LCA0NCwgMTQsIDcsIAotICAgIDIwNywgNDMsIDE0LCA3LCAyMDcsIDQyLCAxNCwgNywgMjA2LCAxNjMsIDE0LCA3LCAyMDYsIDE2MiwgMTQsIDcsIDIwNiwgCi0gICAgMTYxLCAxNCwgNywgMjA2LCAxNjAsIDE0LCA3LCAyMDYsIDE1OSwgMTQsIDcsIDIwNiwgMTU4LCAxNCwgNywgMjA2LCAxNTcsIAotICAgIDE0LCA3LCAyMDYsIDE1NiwgMTQsIDcsIDIwNiwgMTU1LCAxNCwgNywgMjA2LCAxNTQsIDE0LCA3LCAyMDYsIDE1MywgMTQsIAotICAgIDcsIDIwNiwgMTUyLCAxNCwgNywgMjA2LCAxNTEsIDE0LCA3LCAyMDYsIDE1MCwgMTQsIDcsIDIwNiwgMTQ5LCAxNCwgNywgCi0gICAgMjA2LCAxNDgsIDE0LCA3LCAyMDYsIDE0NywgMTQsIDcsIDIwNiwgMTQ2LCAxNCwgNywgMjA2LCAxNDUsIDE0LCA3LCAyMDYsIAotICAgIDE0NCwgMTQsIDcsIDIwNiwgMTQzLCAxNCwgNywgMjA2LCAxNDIsIDE0LCA3LCAyMDYsIDE0MSwgMTQsIDcsIDIwNiwgMTQwLCAKLSAgICAxNCwgNywgMjA2LCAxMzksIDE0LCA3LCAyMDYsIDEzOCwgMTQsIDcsIDIwNiwgMTM3LCAxNCwgNywgMjA2LCAxMzYsIDE0LCAKLSAgICA3LCAyMDYsIDEzNSwgMTQsIDcsIDIwNiwgMTM0LCAxNCwgNywgMjA2LCAxMzMsIDE0LCA3LCAyMDYsIDEzMiwgMTQsIDcsIAotICAgIDIwNiwgMTMxLCAxNCwgNywgMjA2LCAxMzAsIDE0LCA3LCAyMDYsIDEyOSwgMTQsIDcsIDIwNiwgMTI4LCAxNCwgNywgMjA2LCAKLSAgICAxMjcsIDE0LCA3LCAyMDYsIDEyNiwgMTQsIDcsIDIwNiwgMTI1LCAxNCwgNywgMjA2LCAxMjQsIDE0LCA3LCAyMDYsIDEyMywgCi0gICAgMTQsIDcsIDIwNiwgMTIyLCAxNCwgNywgMjA2LCAxMjEsIDE0LCA3LCAyMDYsIDEyMCwgMTQsIDcsIDIwNiwgMTE5LCAxNCwgCi0gICAgNywgMjA2LCAxMTgsIDE0LCA3LCAyMDYsIDExNywgMTQsIDcsIDIwNiwgMTE2LCAxNCwgNywgMjA2LCAxMTUsIDE0LCA3LCAKLSAgICAyMDYsIDExNCwgMTQsIDcsIDIwNiwgMTEzLCAxNCwgNywgMjA2LCAxMTIsIDE0LCA3LCAyMDYsIDExMSwgMTQsIDcsIDIwNiwgCi0gICAgMTEwLCAxNCwgNywgMjA2LCAxMDksIDE0LCA3LCAyMDYsIDEwOCwgMTQsIDcsIDIwNiwgMTA3LCAxNCwgNywgMjA2LCAxMDYsIAotICAgIDE0LCA3LCAyMDYsIDEwNSwgMTQsIDcsIDIwNiwgMTA0LCAxNCwgNywgMjA2LCAxMDMsIDE0LCA3LCAyMDYsIDEwMiwgMTQsIAotICAgIDcsIDIwNiwgMTAxLCAxNCwgNywgMjA2LCAxMDAsIDE0LCA3LCAyMDYsIDk5LCAxNCwgNywgMjA2LCA5OCwgMTQsIDcsIDIwNiwgCi0gICAgOTcsIDE0LCA3LCAyMDYsIDk2LCAxNCwgNywgMjA2LCA5NSwgMTQsIDcsIDIwNiwgOTQsIDE0LCA3LCAyMDYsIDkzLCAxNCwgCi0gICAgNywgMjA2LCA5MiwgMTQsIDcsIDIwNiwgOTEsIDE0LCA3LCAyMDYsIDkwLCAxNCwgNywgMjA2LCA4OSwgMTQsIDcsIDIwNiwgCi0gICAgODgsIDE0LCA3LCAyMDYsIDg3LCAxNCwgNywgMjA0LCAxNDMsIDE0LCA3LCAyMDQsIDE0MiwgMTQsIDcsIDIwNCwgMTQxLCAKLSAgICAxNCwgNywgMjA0LCAxNDAsIDE0LCA3LCAyMDQsIDEzOSwgMTQsIDcsIDIwNCwgMTM4LCAxNCwgNywgMjA0LCAxMzcsIDE0LCAKLSAgICA3LCAyMDQsIDEzNiwgMTQsIDcsIDIwNCwgMTM1LCAxNCwgNywgMjA0LCAxMzQsIDE0LCA3LCAyMDQsIDEzMywgMTQsIDcsIAotICAgIDIwNCwgMTMyLCAxNCwgNywgMjA0LCAxMzEsIDE0LCA3LCAyMDQsIDEzMCwgMTQsIDcsIDIwNCwgMTI5LCAxNCwgNywgMjA0LCAKLSAgICAxMjgsIDE0LCA3LCAyMDQsIDEyNywgMTQsIDcsIDIwNCwgMTI2LCAxNCwgNywgMjA0LCAxMjUsIDE0LCA3LCAyMDQsIDEyNCwgCi0gICAgMTQsIDcsIDIwNCwgMTIzLCAxNCwgNywgMjA0LCAxMjIsIDE0LCA3LCAyMDQsIDEyMSwgMTQsIDcsIDIwNCwgMTIwLCAxNCwgCi0gICAgNywgMjA0LCAxMTksIDE0LCA3LCAyMDQsIDExOCwgMTQsIDcsIDIwNCwgMTE3LCAxNCwgNywgMjA0LCAxMTYsIDE0LCA3LCAKLSAgICAyMDQsIDExNSwgMTQsIDcsIDIwNCwgMTE0LCAxNCwgNywgMjA0LCAxMTMsIDE0LCA3LCAyMDQsIDExMiwgMTQsIDcsIDIwMywgCi0gICAgMTk0LCAxNCwgNywgMjAzLCAxOTMsIDE0LCA3LCAyMDMsIDE5MiwgMTQsIDcsIDIwMywgMTkxLCAxNCwgNywgMjAzLCAxOTAsIAotICAgIDE0LCA3LCAyMDMsIDE4OSwgMTQsIDcsIDIwMywgMTg4LCAxNCwgNywgMjAzLCAxODcsIDE0LCA3LCAyMDMsIDE4NiwgMTQsIAotICAgIDcsIDIwMywgMTg1LCAxNCwgNywgMjAzLCAxODQsIDE0LCA3LCAyMDMsIDE4MywgMTQsIDcsIDIwMywgMTIyLCAxNCwgNywgCi0gICAgMjAzLCAxMjEsIDE0LCA3LCAyMDMsIDEyMCwgMTQsIDcsIDIwMywgMTE5LCAxNCwgNywgMjAzLCAxMTgsIDE0LCA3LCAyMDMsIAotICAgIDExNywgMTQsIDcsIDIwMywgMTE2LCAxNCwgNywgMjAzLCAxMTUsIDE0LCA3LCAyMDMsIDExNCwgMTQsIDcsIDIwMiwgMTU4LCAKLSAgICAxNCwgNywgMjAyLCAxNTcsIDE0LCA3LCAyMDIsIDE1NiwgMTQsIDcsIDIwMiwgMTU1LCAxNCwgNywgMjAyLCAxNTQsIDE0LCAKLSAgICA3LCAyMDIsIDE1MywgMTQsIDcsIDIwMiwgMTUyLCAxNCwgNywgMjAyLCAxNTEsIDE0LCA3LCAyMDIsIDE1MCwgMTQsIDcsIAotICAgIDIwMiwgMTQ5LCAxNCwgNywgMjAyLCAxNDgsIDE0LCA3LCAyMDIsIDE0NywgMTQsIDcsIDIwMiwgMTQ2LCAxNCwgNywgMjAyLCAKLSAgICAxNDUsIDE0LCA3LCAyMDIsIDE0NCwgMTQsIDcsIDIwMiwgMTQzLCAxNCwgNywgMjAyLCAxNDIsIDE0LCA3LCAyMDIsIDE0MSwgCi0gICAgMTQsIDcsIDIwMiwgMTQwLCAxNCwgNywgMjAyLCAxMzksIDE0LCA3LCAyMDIsIDEzOCwgMTQsIDcsIDIwMiwgMTM3LCAxNCwgCi0gICAgNywgMjAyLCAxMzYsIDE0LCA3LCAyMDIsIDEzNSwgMTQsIDcsIDIwMiwgMTM0LCAxNCwgNywgMjAyLCAxMzMsIDE0LCA3LCAKLSAgICAyMDIsIDEzMiwgMTQsIDcsIDIwMiwgMTMxLCAxNCwgNywgMjAyLCAxMzAsIDE0LCA3LCAyMDIsIDEyOSwgMTQsIDcsIDIwMiwgCi0gICAgMTI4LCAxNCwgNywgMjAyLCAxMjcsIDE0LCA3LCAyMDIsIDEyNiwgMTQsIDcsIDIwMiwgMTI1LCAxNCwgNywgMjAyLCAxMjQsIAotICAgIDE0LCA3LCAyMDIsIDEyMywgMTQsIDcsIDIwMiwgMTIyLCAxNCwgNywgMjAyLCAxMjEsIDE0LCA3LCAyMDIsIDEyMCwgMTQsIAotICAgIDcsIDIwMiwgMTE5LCAxNCwgNywgMjAyLCAxMTgsIDE0LCA3LCAyNTIsIDI0LCAxNCwgNywgMjUyLCAyMywgMTQsIDcsIDI1MiwgCi0gICAgMjIsIDE0LCA3LCAyNTIsIDIxLCAxNCwgNywgMjUyLCAyMCwgMTQsIDcsIDI1MiwgMTksIDE0LCA3LCAyNTIsIDE4LCAxNCwgCi0gICAgNywgMjUyLCAxNywgMTQsIDcsIDI1MiwgMTYsIDE0LCA3LCAyNTIsIDE1LCAxNCwgNywgMjUyLCAxNCwgMTQsIDcsIDI1MiwgCi0gICAgMTMsIDE0LCA3LCAyNTIsIDEyLCAxNCwgNywgMjUyLCAxMSwgMTQsIDcsIDI1MiwgMTAsIDE0LCA3LCAyNTIsIDksIDE0LCA3LCAKLSAgICAyNTIsIDgsIDE0LCA3LCAyNTIsIDcsIDE0LCA3LCAyNTIsIDYsIDE0LCA3LCAyNTIsIDUsIDE0LCA3LCAyNTIsIDQsIDE0LCAKLSAgICA3LCAyNTIsIDMsIDE0LCA3LCAyNTIsIDIsIDE0LCA3LCAyNTIsIDEsIDE0LCA3LCAyNTIsIDAsIDE0LCA3LCAyNTEsIDI1NSwgCi0gICAgMTQsIDcsIDI1MSwgMjU0LCAxNCwgNywgMjUxLCAyNTMsIDE0LCA3LCAyNTEsIDI1MiwgMTQsIDcsIDI1MSwgMjUxLCAxNCwgCi0gICAgNywgMjUxLCAyNTAsIDE0LCA3LCAyNTEsIDI0OSwgMTQsIDcsIDI1MSwgMjQ4LCAxNCwgNywgMjUxLCAyNDcsIDI3LCA3LCAKLSAgICAyNTUsIDE4LCAyNywgNywgMjU1LCAxNywgMjcsIDcsIDI1NSwgMTYsIDI3LCA3LCAyNTUsIDE1LCAyNywgNywgMjU1LCAxNCwgCi0gICAgMjcsIDcsIDI1NSwgMTIsIDI3LCA3LCAyNTUsIDksIDI3LCA3LCAyNTUsIDgsIDI3LCA3LCAyNTUsIDcsIDI3LCA3LCAyNTUsIAotICAgIDYsIDI3LCA3LCAyNTUsIDUsIDI3LCA3LCAyNTUsIDQsIDI3LCA3LCAyNTUsIDMsIDI3LCA3LCAyNTUsIDIsIDI3LCA3LCAKLSAgICAyNTUsIDEsIDI3LCA3LCAyNTQsIDI1NSwgMjcsIDcsIDI1NCwgMjU0LCAyNywgNywgMjU0LCAyNTMsIDI3LCA3LCAyNTQsIAotICAgIDI1MSwgMjcsIDcsIDI1NCwgMjUwLCAyNywgNywgMjU0LCAyNDksIDI3LCA3LCAyNTQsIDI0OCwgMjcsIDcsIDI1NCwgMjQ3LCAKLSAgICAyNywgNywgMjU0LCAyNDYsIDI3LCA3LCAyNTQsIDI0NSwgMjcsIDcsIDI1NCwgMjQ0LCAyNywgNywgMjU0LCAyNDMsIDI3LCAKLSAgICA3LCAyNTQsIDI0MiwgMjcsIDcsIDI1NCwgMjQxLCAyNywgNywgMjU0LCAyNDAsIDI3LCA3LCAyNTQsIDIzOCwgMjcsIDcsIAotICAgIDI1NCwgMjM3LCAyNywgNywgMjU0LCAyMzYsIDI3LCA3LCAyNTQsIDIzNSwgMjcsIDcsIDI1NCwgMjMzLCAyNywgNywgMjU0LCAKLSAgICAyMzIsIDI3LCA3LCAyNTQsIDIzMSwgMjcsIDcsIDI1NCwgMjMwLCAyNywgNywgMjU0LCAyMjksIDI3LCA3LCAyNTQsIDIyOCwgCi0gICAgMjcsIDcsIDI1NCwgMjI3LCAyNywgNywgMjU0LCAyMjYsIDI3LCA3LCAyNTQsIDIyNSwgMjcsIDcsIDI1NCwgMjIzLCAyNywgCi0gICAgNywgMjU0LCAyMjIsIDI3LCA3LCAyNTQsIDIyMSwgMjcsIDcsIDI1NCwgMjE5LCAyNywgNywgMjU0LCAyMTcsIDI3LCA3LCAKLSAgICAyNTQsIDIxNiwgMjcsIDcsIDI1NCwgMjE1LCAyNywgNywgMjU0LCAyMTQsIDI3LCA3LCAyNTQsIDIxMywgMjcsIDcsIDI1NCwgCi0gICAgMjEyLCAyNywgNywgMjU0LCAyMTEsIDI3LCA3LCAyNTQsIDIxMCwgMjcsIDcsIDI1NCwgMjA5LCAyNywgNywgMjU0LCAyMDgsIAotICAgIDI3LCA3LCAyNTQsIDIwNywgMjcsIDcsIDI1NCwgMjA2LCAyNywgNywgMjU0LCAyMDUsIDI3LCA3LCAyNTQsIDIwNCwgMjcsIAotICAgIDcsIDI1NCwgMjAzLCAyNywgNywgMjU0LCAyMDIsIDI3LCA3LCAyNTQsIDIwMSwgMjcsIDcsIDI1NCwgMjAwLCAyNywgNywgCi0gICAgMjU0LCAxOTksIDI3LCA3LCAyNTQsIDE5OCwgMjcsIDcsIDI1NCwgMTk3LCAyNywgNywgMjU0LCAxOTYsIDI3LCA3LCAyNTQsIAotICAgIDE5NSwgMjcsIDcsIDI1NCwgMTk0LCAyNywgNywgMjU0LCAxOTMsIDI3LCA3LCAyNTQsIDE5MiwgMjcsIDcsIDI1NCwgMTkxLCAKLSAgICAyNywgNywgMjU0LCAxOTAsIDI3LCA3LCAyNTQsIDE4OSwgMjcsIDcsIDI1NCwgMTg4LCAyNywgNywgMjU0LCAxODcsIDI3LCAKLSAgICA3LCAyNTQsIDE4NiwgMjcsIDcsIDI1NCwgMTg1LCAyNywgNywgMjU0LCAxODQsIDI3LCA3LCAyNTQsIDE4MywgMjcsIDcsIAotICAgIDI1NCwgMTgyLCAyNywgNywgMjU0LCAxODEsIDI3LCA3LCAyNTQsIDE4MCwgMjcsIDcsIDI1NCwgMTc5LCAyNywgNywgMjU0LCAKLSAgICAxNzgsIDI3LCA3LCAyNTQsIDE3NywgMjcsIDcsIDI1NCwgMTc2LCAyNywgNywgMjU0LCAxNzUsIDI3LCA3LCAyNTQsIDE3NCwgCi0gICAgMjcsIDcsIDI1NCwgMTczLCAyNywgNywgMjU0LCAxNzIsIDI3LCA3LCAyNTQsIDE3MSwgMjcsIDcsIDI1NCwgMTcwLCAyNywgCi0gICAgNywgMjU0LCAxNjksIDI3LCA3LCAyNTQsIDE2OCwgMjcsIDcsIDI1NCwgMTY3LCAyNywgNywgMjU0LCAxNjYsIDI3LCA3LCAKLSAgICAyNTQsIDE2NSwgMjcsIDcsIDI1NCwgMTY0LCAyNywgNywgMjU0LCAxNjMsIDI3LCA3LCAyNTQsIDE2MiwgMjcsIDcsIDI1NCwgCi0gICAgMTYxLCAyNywgNywgMjU0LCAxNjAsIDI3LCA3LCAyNTQsIDE1OSwgMjcsIDcsIDI1NCwgMTU4LCAyNywgNywgMjU0LCAxNTcsIAotICAgIDI3LCA3LCAyNTQsIDE1NiwgMjcsIDcsIDI1NCwgMTU1LCAyNywgNywgMjU0LCAxNTQsIDI3LCA3LCAyNTQsIDE1MywgMjcsIAotICAgIDcsIDI1NCwgMTUxLCAyNywgNywgMjU0LCAxNTAsIDI3LCA3LCAyNTQsIDE0OSwgMjcsIDcsIDI1NCwgMTQ4LCAyNywgNywgCi0gICAgMjU0LCAxNDcsIDI3LCA3LCAyNTQsIDE0NiwgMjcsIDcsIDI1NCwgMTQ1LCAyNywgNywgMjU0LCAxNDQsIDI3LCA3LCAyNTQsIAotICAgIDE0MywgMjcsIDcsIDI1NCwgMTQyLCAyNywgNywgMjU0LCAxNDEsIDI3LCA3LCAyNTQsIDE0MCwgMjcsIDcsIDI1NCwgMTM5LCAKLSAgICAyNywgNywgMjU0LCAxMzgsIDI3LCA3LCAyNTQsIDEzNywgMjcsIDcsIDI1NCwgMTM2LCAyNywgNywgMjU0LCAxMzUsIDI3LCAKLSAgICA3LCAyNTQsIDEzNCwgMjcsIDcsIDI1NCwgMTMzLCAyNywgNywgMjU0LCAxMzIsIDI3LCA3LCAyNTQsIDEzMSwgMjcsIDcsIAotICAgIDI1NCwgMTMwLCAyNywgNywgMjU0LCAxMjksIDI3LCA3LCAyNTQsIDEyOCwgMjcsIDcsIDI1NCwgMTI3LCAyNywgNywgMjU0LCAKLSAgICAxMjYsIDI3LCA3LCAyNTQsIDEyNSwgMjcsIDcsIDI1NCwgMTI0LCAyNywgNywgMjU0LCAxMjMsIDI3LCA3LCAyNTQsIDEyMiwgCi0gICAgMjcsIDcsIDI1NCwgMTIxLCAyNywgNywgMjU0LCAxMjAsIDI3LCA3LCAyNTQsIDExOSwgMjcsIDcsIDI1NCwgMTE4LCAyNywgCi0gICAgNywgMjU0LCAxMTYsIDI3LCA3LCAyNTQsIDExNSwgMjcsIDcsIDI1NCwgMTE0LCAyNywgNywgMjU0LCAxMTMsIDI3LCA3LCAKLSAgICAyNTQsIDExMiwgMjcsIDcsIDI1NCwgMTExLCAyNywgNywgMjU0LCAxMTAsIDI3LCA3LCAyNTQsIDEwOSwgMjcsIDcsIDI1NCwgCi0gICAgMTA4LCAyNywgNywgMjU0LCAxMDcsIDI3LCA3LCAyNTQsIDEwNiwgMjcsIDcsIDI1NCwgMTA1LCAyNywgNywgMjU0LCAxMDMsIAotICAgIDI3LCA3LCAyNTQsIDEwMiwgMjcsIDcsIDI1NCwgMTAxLCAyNywgNywgMjU0LCAxMDAsIDI3LCA3LCAyNTQsIDk5LCAyNywgNywgCi0gICAgMjU0LCA5OCwgMjcsIDcsIDI1NCwgOTcsIDI3LCA3LCAyNTQsIDk2LCAyNywgNywgMjU0LCA5NSwgMjcsIDcsIDI1NCwgOTQsIAotICAgIDI3LCA3LCAyNTQsIDkzLCAyNywgNywgMjU0LCA5MiwgMjcsIDcsIDI1NCwgOTEsIDI3LCA3LCAyNTQsIDkwLCAyNywgNywgCi0gICAgMjU0LCA4OSwgMjcsIDcsIDI1NCwgODgsIDI3LCA3LCAyNTQsIDg3LCAyNywgNywgMjU0LCA4NiwgMjcsIDcsIDI1NCwgODUsIAotICAgIDI3LCA3LCAyNTQsIDg0LCAyNywgNywgMjU0LCA4MywgMjcsIDcsIDI1NCwgODIsIDI3LCA3LCAyNTQsIDgxLCAyNywgNywgCi0gICAgMjU0LCA4MCwgMjcsIDcsIDI1NCwgNzksIDI3LCA3LCAyNTQsIDc4LCAyNywgNywgMjU0LCA3NywgMjcsIDcsIDI1NCwgNzYsIAotICAgIDI3LCA3LCAyNTQsIDc1LCAyNywgNywgMjU0LCA3NCwgMjcsIDcsIDI1NCwgNzMsIDI3LCA3LCAyNTQsIDcyLCAyNywgNywgCi0gICAgMjU0LCA3MSwgMjcsIDcsIDI1NCwgNzAsIDI3LCA3LCAyNTQsIDY5LCAyNywgNywgMjU0LCA2OCwgMjcsIDcsIDI1NCwgNjcsIAotICAgIDI3LCA3LCAyNTQsIDY2LCAyNywgNywgMjU0LCA2NSwgMjcsIDcsIDI1NCwgNjQsIDI3LCA3LCAyNTQsIDYzLCAyNywgNywgCi0gICAgMjU0LCA2MiwgMjcsIDcsIDI1NCwgNjEsIDI3LCA3LCAyNTQsIDYwLCAyNywgNywgMjU0LCA1OSwgMjcsIDcsIDI1NCwgNTgsIAotICAgIDI3LCA3LCAyNTQsIDU3LCAyNywgNywgMjU0LCA1NiwgMjcsIDcsIDI1NCwgNTUsIDI3LCA3LCAyNTQsIDU0LCAyNywgNywgCi0gICAgMjU0LCA1MywgMjcsIDcsIDI1NCwgNTIsIDI3LCA3LCAyNTQsIDUxLCAyNywgNywgMjU0LCA1MCwgMjcsIDcsIDI1NCwgNDksIAotICAgIDI3LCA3LCAyNTQsIDQ4LCAyNywgNywgMjU0LCA0NywgMjcsIDcsIDI1NCwgNDYsIDI3LCA3LCAyNTQsIDQ1LCAyNywgNywgCi0gICAgMjU0LCA0NCwgMjcsIDcsIDI1NCwgNDMsIDI3LCA3LCAyNTQsIDQyLCAyNywgNywgMjU0LCA0MSwgMjcsIDcsIDI1NCwgNDAsIAotICAgIDI3LCA3LCAyNTQsIDM5LCAyNywgNywgMjU0LCAzOCwgMjcsIDcsIDI1NCwgMzcsIDI3LCA3LCAyNTQsIDM2LCAyNywgNywgCi0gICAgMjU0LCAzNSwgMjcsIDcsIDI1NCwgMzMsIDI3LCA3LCAyNTQsIDMyLCAyNywgNywgMjU0LCAzMSwgMjcsIDcsIDI1NCwgMzAsIAotICAgIDI3LCA3LCAyNTQsIDI5LCAyNywgNywgMjU0LCAyOCwgMjcsIDcsIDI1NCwgMjcsIDI3LCA3LCAyNTQsIDI2LCAyNywgNywgCi0gICAgMjU0LCAyNSwgMjcsIDcsIDI1NCwgMjQsIDI3LCA3LCAyNTQsIDIzLCAyNywgNywgMjU0LCAyMiwgMjcsIDcsIDI1NCwgMjEsIAotICAgIDI3LCA3LCAyNTQsIDIwLCAyNywgNywgMjU0LCAxOSwgMjcsIDcsIDI1NCwgMTgsIDI3LCA3LCAyNTQsIDE3LCAyNywgNywgCi0gICAgMjU0LCAxNiwgMjcsIDcsIDI1NCwgMTUsIDI3LCA3LCAyNTQsIDE0LCAyNywgNywgMjU0LCAxMywgMjcsIDcsIDI1NCwgMTIsIAotICAgIDI3LCA3LCAyNTQsIDExLCAyNywgNywgMjU0LCAxMCwgMjcsIDcsIDI1NCwgOSwgMjcsIDcsIDI1NCwgOCwgMjcsIDcsIDI1NCwgCi0gICAgNywgMjcsIDcsIDI1NCwgNiwgMjcsIDcsIDI1NCwgNSwgMjcsIDcsIDI1NCwgNCwgMjcsIDcsIDI1NCwgMywgMjcsIDcsIAotICAgIDI1NCwgMiwgMjcsIDcsIDI1NCwgMSwgMjcsIDcsIDI1NCwgMCwgMjcsIDcsIDI1MywgMjU1LCAyNywgNywgMjUzLCAyNTQsIAotICAgIDI3LCA3LCAyNTMsIDI1MywgMjcsIDcsIDI1MywgMjUyLCAyNywgNywgMjUzLCAyNTEsIDI3LCA3LCAyNTMsIDI1MCwgMjcsIAotICAgIDcsIDI1MywgMjQ5LCAyNywgNywgMjUzLCAyNDgsIDI3LCA3LCAyNTMsIDI0NywgMjcsIDcsIDI1MywgMjQ2LCAyNywgNywgCi0gICAgMjUzLCAyNDUsIDI3LCA3LCAyNTMsIDI0NCwgMjcsIDcsIDI1MywgMjQzLCAyNywgNywgMjUzLCAyNDIsIDI3LCA3LCAyNTMsIAotICAgIDI0MSwgMjcsIDcsIDI1MywgMjQwLCAyNywgNywgMjUzLCAyMzksIDI3LCA3LCAyNTMsIDIzOCwgMjcsIDcsIDI1MywgMjM3LCAKLSAgICAyNywgNywgMjUzLCAyMzYsIDI3LCA3LCAyNTMsIDIzNSwgMjcsIDcsIDI1MywgMjM0LCAyNywgNywgMjUzLCAyMzMsIDI3LCAKLSAgICA3LCAyNTMsIDIzMiwgMjcsIDcsIDI1MywgMjMxLCAyNywgNywgMjUzLCAyMzAsIDI3LCA3LCAyNTMsIDIyOSwgMjcsIDcsIAotICAgIDI1MywgMjI4LCAyNywgNywgMjUzLCAyMjcsIDI3LCA3LCAyNTMsIDIyNiwgMjcsIDcsIDI1MywgMjI1LCAyNywgNywgMjUzLCAKLSAgICAyMjQsIDI3LCA3LCAyNTMsIDIyMywgMjcsIDcsIDI1MywgMjIyLCAyNywgNywgMjUzLCAyMjEsIDI3LCA3LCAyNTMsIDIyMCwgCi0gICAgMjcsIDcsIDI1MywgMjE5LCAyNywgNywgMjUzLCAyMTgsIDI3LCA3LCAyNTMsIDIxNywgMjcsIDcsIDI1MywgMjE2LCAyNywgCi0gICAgNywgMjUzLCAyMTUsIDI3LCA3LCAyNTMsIDIxNCwgMjcsIDcsIDI1MywgMjEzLCAyNywgNywgMjUzLCAyMTIsIDI3LCA3LCAKLSAgICAyNTMsIDIxMSwgMjcsIDcsIDI1MywgMjEwLCAyNywgNywgMjUzLCAyMDksIDI3LCA3LCAyNTMsIDIwOCwgMjcsIDcsIDI1MywgCi0gICAgMjA3LCAyNywgNywgMjUzLCAyMDYsIDI3LCA3LCAyNTMsIDIwNSwgMjcsIDcsIDI1MywgMjA0LCAyNywgNywgMjUzLCAyMDMsIAotICAgIDI3LCA3LCAyNTMsIDIwMiwgMjcsIDcsIDI1MywgMjAxLCAyNywgNywgMjUzLCAyMDAsIDI3LCA3LCAyNTMsIDE5OSwgMjcsIAotICAgIDcsIDI1MywgMTk4LCAyNywgNywgMjUzLCAxOTcsIDI3LCA3LCAyNTMsIDE5NiwgMjcsIDcsIDI1MywgMTk1LCAyNywgNywgCi0gICAgMjUzLCAxOTQsIDI3LCA3LCAyNTMsIDE5MywgMjcsIDcsIDI1MywgMTkyLCAyNywgNywgMjUzLCAxOTEsIDI3LCA3LCAyNTMsIAotICAgIDE5MCwgMjcsIDcsIDI1MywgMTg5LCAyNywgNywgMjUzLCAxODgsIDI3LCA3LCAyNTMsIDE4NywgMjcsIDcsIDI1MywgMTg2LCAKLSAgICAyNywgNywgMjUzLCAxODUsIDI3LCA3LCAyNTMsIDE4NCwgMjcsIDcsIDI1MywgMTgzLCAyNywgNywgMjUzLCAxODIsIDI3LCAKLSAgICA3LCAyNTMsIDE4MSwgMjcsIDcsIDI1MywgMTgwLCAyNywgNywgMjUzLCAxNzksIDI3LCA3LCAyNTMsIDE3NywgMjcsIDcsIAotICAgIDI1MywgMTc2LCAyNywgNywgMjUzLCAxNzUsIDI3LCA3LCAyNTMsIDE3NCwgMjcsIDcsIDI1MywgMTczLCAyNywgNywgMjUzLCAKLSAgICAxNzIsIDI3LCA3LCAyNTMsIDE3MSwgMjcsIDcsIDI1MywgMTcwLCAyNywgNywgMjUzLCAxNjksIDI3LCA3LCAyNTMsIDE2OCwgCi0gICAgMjcsIDcsIDI1MywgMTY3LCAyNywgNywgMjUzLCAxNjQsIDI3LCA3LCAyNTMsIDE2MywgMjcsIDcsIDI1MywgMTYyLCAyNywgCi0gICAgNywgMjUzLCAxNjEsIDI3LCA3LCAyNTMsIDE1NywgMjcsIDcsIDI1MywgMTU2LCAyNywgNywgMjUzLCAxNTUsIDI3LCA3LCAKLSAgICAyNTMsIDE1NCwgMjcsIDcsIDI1MywgMTUzLCAyNywgNywgMjUzLCAxNTIsIDI3LCA3LCAyNTMsIDE1MSwgMjcsIDcsIDI1MywgCi0gICAgMTUwLCAyNywgNywgMjUzLCAxNDksIDI3LCA3LCAyNTMsIDE0OCwgMjcsIDcsIDI1MywgMTQ3LCAyNywgNywgMjUzLCAxNDYsIAotICAgIDI3LCA3LCAyNTMsIDE0NSwgMjcsIDcsIDI1MywgMTQ0LCAyNywgNywgMjUzLCAxNDMsIDI3LCA3LCAyNTMsIDE0MiwgMjcsIAotICAgIDcsIDI1MywgMTQxLCAyNywgNywgMjUzLCAxNDAsIDI3LCA3LCAyNTMsIDEzOSwgMjcsIDcsIDI1MywgMTM3LCAyNywgNywgCi0gICAgMjUzLCAxMzYsIDI3LCA3LCAyNTMsIDEzNSwgMjcsIDcsIDI1MywgMTM0LCAyNywgNywgMjUzLCAxMzMsIDI3LCA3LCAyNTMsIAotICAgIDEzMiwgMjcsIDcsIDI1MywgMTMxLCAyNywgNywgMjUzLCAxMzAsIDI3LCA3LCAyNTMsIDEyOSwgMjcsIDcsIDI1MywgMTI4LCAKLSAgICAyNywgNywgMjUzLCAxMjcsIDI3LCA3LCAyNTMsIDEyNiwgMjcsIDcsIDI1MywgMTI1LCAyNywgNywgMjUzLCAxMjQsIDI3LCAKLSAgICA3LCAyNTMsIDEyMywgMjcsIDcsIDI1MywgMTIyLCAyNywgNywgMjUzLCAxMjEsIDI3LCA3LCAyNTMsIDEyMCwgMjcsIDcsIAotICAgIDI1MywgMTE5LCAyNywgNywgMjUzLCAxMTgsIDI3LCA3LCAyNTMsIDExNywgMjcsIDcsIDI1MywgMTE2LCAyNywgNywgMjUzLCAKLSAgICAxMTUsIDI3LCA3LCAyNTMsIDExNCwgMjcsIDcsIDI1MywgMTEzLCAyNywgNywgMjUzLCAxMTIsIDI3LCA3LCAyNTMsIDExMSwgCi0gICAgMjcsIDcsIDI1MywgMTEwLCAyNywgNywgMjUzLCAxMDksIDI3LCA3LCAyNTMsIDEwOCwgMjcsIDcsIDI1MywgMTA3LCAyNywgCi0gICAgNywgMjUzLCAxMDYsIDI3LCA3LCAyNTMsIDEwNSwgMjcsIDcsIDI1MywgMTA0LCAyNywgNywgMjUzLCAxMDMsIDI3LCA3LCAKLSAgICAyNTMsIDEwMiwgMjcsIDcsIDI1MywgMTAxLCAyNywgNywgMjUzLCAxMDAsIDI3LCA3LCAyNTMsIDk5LCAyNywgNywgMjUzLCAKLSAgICA5OCwgMjcsIDcsIDI1MywgOTcsIDI3LCA3LCAyNTMsIDk2LCAyNywgNywgMjUzLCA5NSwgMjcsIDcsIDI1MywgOTQsIDI3LCAKLSAgICA3LCAyNTMsIDkzLCAyNywgNywgMjUzLCA5MiwgMjcsIDcsIDI1MywgOTEsIDI3LCA3LCAyNTMsIDkwLCAyNywgNywgMjUzLCAKLSAgICA4OSwgMjcsIDcsIDI1MywgODgsIDI3LCA3LCAyNTMsIDg3LCAyNywgNywgMjUzLCA4NiwgMjcsIDcsIDI1MywgODUsIDI3LCAKLSAgICA3LCAyNTMsIDg0LCAyNywgNywgMjUzLCA4MywgMjcsIDcsIDI1MywgODIsIDI3LCA3LCAyNTMsIDgxLCAyNywgNywgMjUzLCAKLSAgICA4MCwgMjcsIDcsIDI1MywgNzksIDI3LCA3LCAyNTMsIDc4LCAyNywgNywgMjUzLCA3NywgMjcsIDcsIDI1MywgNzYsIDIxNiwgCi0gICAgMjIxLCAyMTksIDI0NSwgMjE2LCA1NywgMjcsIDcsIDI1MywgNzUsIDI3LCA3LCAyNTMsIDc0LCAyNywgNywgMjUzLCA3MywgCi0gICAgMjcsIDcsIDI1MywgNzIsIDI3LCA3LCAyNTMsIDcxLCAyNywgNywgMjUzLCA3MCwgMjcsIDcsIDI1MywgNjksIDI3LCA3LCAKLSAgICAyNTMsIDY4LCAyNywgNywgMjUzLCA2NywgMjcsIDcsIDI1MywgNjYsIDI3LCA3LCAyNTMsIDY1LCAyNywgNywgMjUzLCA2NCwgCi0gICAgMTk5LCAyNywgNywgMjUzLCA2MywgMjcsIDcsIDI1MywgNjIsIDI3LCA3LCAyNTMsIDYxLCAyNywgNywgMjUzLCA2MCwgMjcsIAotICAgIDcsIDI1MywgNTksIDI3LCA3LCAyNTMsIDU4LCAyNywgNywgMjUzLCA1NywgMjcsIDcsIDI1MywgNTUsIDI3LCA3LCAyNTMsIAotICAgIDUzLCAyNywgNywgMjUzLCA1MSwgMjcsIDcsIDI1MywgNDksIDI3LCA3LCAyNTMsIDQ3LCAyNywgNywgMjUzLCA0NSwgMjcsIAotICAgIDcsIDI1MywgNDMsIDI3LCA3LCAyNTMsIDQxLCAyNywgNywgMjUzLCAzOSwgMjcsIDcsIDI1MywgMzcsIDI0OCwgMTQyLCAKLSAgICAyMjcsIDM2LCA4MiwgMjcsIDcsIDI1MywgMzUsIDI0MSwgODQsIDIyNywgMzYsIDgyLCAyNywgNywgMjUzLCAzNCwgMjcsIDcsIAotICAgIDI1MywgMzIsIDI3LCA3LCAyNTMsIDMwLCAyNywgNywgMjUzLCAyOCwgMjcsIDcsIDI1MywgMjYsIDI3LCA3LCAyNTMsIDI0LCAKLSAgICAyNywgNywgMjUzLCAyMiwgMjcsIDcsIDI1MywgMjAsIDI3LCA3LCAyNTMsIDE4LCAyNywgNywgMjUzLCAxNywgMjcsIDcsIAotICAgIDI1MywgMTYsIDI3LCA3LCAyNTMsIDE1LCAyNywgNywgMjUzLCAxNCwgMjcsIDcsIDI1MywgMTMsIDI3LCA3LCAyNTMsIDEyLCAKLSAgICAyNywgNywgMjUzLCAxMSwgMjcsIDcsIDI1MywgMTAsIDI3LCA3LCAyNTMsIDksIDI3LCA3LCAyNTMsIDgsIDI3LCA3LCAyNTMsIAotICAgIDcsIDI3LCA3LCAyNTMsIDYsIDI3LCA3LCAyNTMsIDUsIDI3LCA3LCAyNTMsIDQsIDI3LCA3LCAyNTMsIDMsIDI3LCA3LCAKLSAgICAyNTMsIDIsIDI3LCA3LCAyNTMsIDEsIDI3LCA3LCAyNTMsIDAsIDI3LCA3LCAyNTIsIDI1NSwgMjcsIDcsIDI1MiwgMjU0LCAKLSAgICAyNywgNywgMjUyLCAyNTMsIDI3LCA3LCAyNTIsIDI1MiwgMjcsIDcsIDI1MiwgMjUxLCAyNywgNywgMjUyLCAyNTAsIDI3LCAKLSAgICA3LCAyNTIsIDI0OSwgMjcsIDcsIDI1MiwgMjQ4LCAyNywgNywgMjUyLCAyNDcsIDI3LCA3LCAyNTIsIDI0NiwgMjcsIDcsIAotICAgIDI1MiwgMjQ1LCAyNywgNywgMjUyLCAyNDQsIDI3LCA3LCAyNTIsIDI0MywgMjcsIDcsIDI1MiwgMjQyLCAyNywgNywgMjUyLCAKLSAgICAyNDEsIDI3LCA3LCAyNTIsIDI0MCwgMjcsIDcsIDI1MiwgMjM5LCAyNywgNywgMjUyLCAyMzgsIDI3LCA3LCAyNTIsIDIzNywgCi0gICAgMjcsIDcsIDI1MiwgMjM2LCAyNywgNywgMjUyLCAyMzUsIDI3LCA3LCAyNTIsIDIzNCwgMjcsIDcsIDI1MiwgMjMzLCAyNywgCi0gICAgNywgMjUyLCAyMzIsIDI3LCA3LCAyNTIsIDIzMSwgMjcsIDcsIDI1MiwgMjMwLCAyNywgNywgMjUyLCAyMjksIDI3LCA3LCAKLSAgICAyNTIsIDIyOCwgMjcsIDcsIDI1MiwgMjI3LCAyNywgNywgMjUyLCAyMjYsIDI3LCA3LCAyNTIsIDIyNSwgMjcsIDcsIDI1MiwgCi0gICAgMjI0LCAyNywgNywgMjUyLCAyMjMsIDI3LCA3LCAyNTIsIDIyMiwgMjcsIDcsIDI1MiwgMjIxLCAyNywgNywgMjUyLCAyMjAsIAotICAgIDI3LCA3LCAyNTIsIDIxOSwgMjcsIDcsIDI1MiwgMjE4LCAyNywgNywgMjUyLCAyMTcsIDI3LCA3LCAyNTIsIDIxNiwgMjcsIAotICAgIDcsIDI1MiwgMjE1LCAyNywgNywgMjUyLCAyMTQsIDI3LCA3LCAyNTIsIDIxMywgMjcsIDcsIDI1MiwgMjEyLCAyNywgNywgCi0gICAgMjUyLCAyMTEsIDI3LCA3LCAyNTIsIDIxMCwgMjcsIDcsIDI1MiwgMjA5LCAyNywgNywgMjUyLCAyMDgsIDI3LCA3LCAyNTIsIAotICAgIDIwNywgMjcsIDcsIDI1MiwgMjA2LCAyNywgNywgMjUyLCAyMDUsIDI3LCA3LCAyNTIsIDIwNCwgMjcsIDcsIDI1MiwgMjAzLCAKLSAgICAyNywgNywgMjUyLCAyMDIsIDI3LCA3LCAyNTIsIDIwMSwgMjcsIDcsIDI1MiwgMjAwLCAyNywgNywgMjUyLCAxOTksIDI3LCAKLSAgICA3LCAyNTIsIDE5OCwgMjcsIDcsIDI1MiwgMTk3LCAyNywgNywgMjUyLCAxOTYsIDI3LCA3LCAyNTIsIDE5NSwgMjcsIDcsIAotICAgIDI1MiwgMTk0LCAyNywgNywgMjUyLCAxOTMsIDI3LCA3LCAyNTIsIDE5MiwgMjcsIDcsIDI1MiwgMTkxLCAyNywgNywgMjUyLCAKLSAgICAxOTAsIDI3LCA3LCAyNTIsIDE4OSwgMjcsIDcsIDI1MiwgMTg4LCAyNywgNywgMjUyLCAxODcsIDI3LCA3LCAyNTIsIDE4NiwgCi0gICAgMjcsIDcsIDI1MiwgMTg1LCAyNywgNywgMjUyLCAxODQsIDI3LCA3LCAyNTIsIDE4MywgMjcsIDcsIDI1MiwgMTgyLCAyNywgCi0gICAgNywgMjUyLCAxODEsIDI3LCA3LCAyNTIsIDE4MCwgMjcsIDcsIDI1MiwgMTc5LCAyNywgNywgMjUyLCAxNzgsIDI3LCA3LCAKLSAgICAyNTIsIDE3NywgMjcsIDcsIDI1MiwgMTc2LCAyNywgNywgMjUyLCAxNzUsIDI3LCA3LCAyNTIsIDE3NCwgMjcsIDcsIDI1MiwgCi0gICAgMTczLCAyNywgNywgMjUyLCAxNzIsIDI3LCA3LCAyNTIsIDE3MSwgMjcsIDcsIDI1MiwgMTcwLCAyNywgNywgMjUyLCAxNjksIAotICAgIDI3LCA3LCAyNTIsIDE2OCwgMjcsIDcsIDI1MiwgMTY3LCAyNywgNywgMjUyLCAxNjYsIDI3LCA3LCAyNTIsIDE2NSwgMjcsIAotICAgIDcsIDI1MiwgMTY0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMTM2LCAyMjQsIDE5NywgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIAotICAgIDE5OCwgMjM5LCAxNzgsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCA0NywgMjI0LCAxOTgsIDIxOCwgMTE1LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIxOCwgNDcsIDIyNCwgMTk4LCAyMTgsIDExNiwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDEwNywgMjI0LCAxOTcsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAxOTUsIDI0LCAxLCAyMTgsIDE5OCwgMjA4LCAxOTksIDIyNCwgMTk3LCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIyMCwgMjE1LCAyMjQsIDE5NywgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDI1NCwgMjE5LCAxNjksIDIyMiwgCi0gICAgMzIsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCA0NywgMjE5LCAxNjksIDIyMiwgMzMsIDIxOCwgMTE1LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIxOCwgNDcsIDIxOSwgMTY5LCAyMjIsIDMzLCAyMTgsIDExNiwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1NiwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMDcsIDIwNCwgMjI1LCAxNTcsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAxOTcsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjI1LCAxNTMsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAxODYsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjEzLCAxMTQsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCA5MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjksIAotICAgIDE2MywgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDAsIDI0LCAxLCAyMTgsIDE5OCwgMjEwLCAxNzksIDI0LCAxLCAyMTgsIDE5OCwgCi0gICAgMjIyLCAxMzUsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAxMCwgMjQsIDEsIDIxOCwgMTk4LCAyMjcsIDE3NiwgMjI4LCAxNzUsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMDEsIDIyNCwgMjA1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTYwLCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIxOSwgNjIsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxMjUsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjI0LCA1NSwgMjIyLCAxNzAsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAxOTYsIDIyNCwgMjA4LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDEwNiwgMjAyLCAxODgsIDIyMywgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgMTAxLCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIyMSwgMTAxLCAyMjEsIDEwMiwgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDkxLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyNCwgMTkwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgMjExLCAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgMzEsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjMwLCAyMSwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDE2OSwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIzLCAyNiwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCAyMTksIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAKLSAgICAxNTQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCA3NCwgMjQsIDEsIDIxOCwgMTk4LCAyMTcsIDE3MiwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMDcsIDIwMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjYsIDIzNSwgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI1MSwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMDksIDExNywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjksIAotICAgIDE3MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDIyLCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMTg4LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyNCwgMzIsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAxOTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI3LCAyOSwgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMzksIDI0NiwgMjQsIDEsIDIxOCwgMTk4LCAyMTUsIDIxMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDIzMywgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI0NywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDEwNywgMjE4LCAxNTcsIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjEyLCAyNDcsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAyMzAsIAotICAgIDIyMSwgMTExLCAyMDIsIDE5NiwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDIzNywgMjI0LCA1MSwgMjQsIDEsIDIxOCwgMTk4LCAKLSAgICAyMTksIDE2NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDIsIDI0LCAxLCAyMTgsIDE5OCwgMjA2LCAyMzEsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIyLCAxNzMsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTAsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCA0NCwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMjUsIDQ5LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjUxLCAyNCwgMSwgMjE4LCAxOTgsIDIwOSwgCi0gICAgMTIxLCAyNCwgMSwgMjE4LCAxOTgsIDIxMSwgMjQ0LCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTY1LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMSwgMTE1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTU4LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjQ4LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIyOSwgMjQxLCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTE4LCAyNCwgMSwgMjE4LCAxOTgsIDIwNiwgCi0gICAgNTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI2LCAyMzksIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAyMzAsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIzLCA3NSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDQ4LCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgMTEzLCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIwNywgMjA0LCAyMjUsIDE1NSwgMjQsIDEsIDIxOCwgMTk3LCAyMTIsIDE1MiwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMTMsIDExOCwgMjA3LCAyMDMsIDI0LCAxLCAyMTgsIDE5NywgMjI3LCAzMSwgMjIxLCA5NywgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMjUsIDU1LCAyMjUsIDE1OSwgMjQsIDEsIDIxOCwgMTk3LCAyMjksIDkyLCAyNCwgMSwgMjE4LCAxOTcsIDIwMywgMTgsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjI1LCA1MCwgMjQsIDEsIDIxOCwgMTk3LCAyMzAsIDcsIDI0LCAxLCAyMTgsIDE5NywgMjE5LCAKLSAgICAxOSwgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDk2LCAyMjcsIDIyMywgMjQsIDEsIDIxOCwgMTk3LCAyMjgsIDI5LCAyMjEsIAotICAgIDExMSwgMjIxLCA2LCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgOTQsIDIxMywgMTcsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAKLSAgICAyNDksIDIyMiwgNDcsIDI0LCAxLCAyMTgsIDE5NywgMjM4LCA5OCwgMjQsIDEsIDIxOCwgMTk3LCAyMTgsIDEwNSwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMDcsIDIwNCwgMjIxLCAxMDksIDI0LCAxLCAyMTgsIDE5NywgMjEzLCAyMiwgMjIyLCA0MiwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMTMsIDE4LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMTk4LCAyMDksIDEyMCwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMjUsIDM3LCAyMjUsIDUxLCAyNCwgMSwgMjE4LCAxOTcsIDIyMCwgMjQ5LCAyMjEsIDk3LCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIyOSwgMTU5LCAyNCwgMSwgMjE4LCAxOTcsIDIzOCwgOTksIDI0LCAxLCAyMTgsIDE5NywgMjI5LCAxNTUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjI4LCAxMDcsIDI0LCAxLCAyMTgsIDE5NywgMjE5LCA2NSwgMjQsIDEsIDIxOCwgMTk3LCAyMDUsIDIzNywgCi0gICAgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDEzNywgMjIzLCAxODQsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxNzIsIDIyNSwgMzMsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjAzLCAyMTUsIDI0LCAxLCAyMTgsIDE5NywgMjE1LCAxMiwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMTAsIDE0LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjEwLCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTU2LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIyMiwgMTU3LCAyMjgsIDcsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMDAsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjEwLCAyMzAsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCA0MSwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDM2LCAyNCwgMSwgMjE4LCAKLSAgICAxOTcsIDIyMSwgOSwgMjQsIDEsIDIxOCwgMTk3LCAyMTcsIDE3NiwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIwOSwgMjIyLCAKLSAgICAxNzQsIDI0LCAxLCAyMTgsIDE5NywgMjQwLCAzMSwgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDI4LCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDI0MCwgNTMsIDI0LCAxLCAyMTgsIDE5NywgMjI5LCAxNjcsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAxNzcsIDIyMiwgMzYsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAxNzcsIDIyMiwgMTIsIDI0LCAxLCAyMTgsIDE5NywgMjI3LCAxNzUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjIyLCAxODAsIDI0LCAxLCAyMTgsIDE5NywgMjIxLCAxMjAsIDI0LCAxLCAyMTgsIDE5NywgMTkyLCAyNCwgCi0gICAgMSwgMjE4LCAxOTcsIDIyOSwgNzcsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxMjUsIDI0LCAxLCAxNjgsIDIyMiwgMTM2LCAKLSAgICAyMjUsIDE1NywgMjQsIDEsIDE2OCwgMjIwLCAyMTQsIDI0LCAxLCAxNjgsIDIwMiwgMTk2LCAyNCwgMSwgMTY4LCAyMDQsIAotICAgIDk1LCAyNCwgMSwgMTY4LCAyMjIsIDE3MywgMjQsIDEsIDE2OCwgMjIzLCAxNCwgMjQsIDEsIDE2OCwgMjIyLCAxNDMsIDI0LCAKLSAgICAxLCAxNjgsIDIzOCwgMTA4LCAyNCwgMSwgMTY4LCAyMjUsIDQ1LCAyNCwgMSwgMTY4LCAyMzgsIDIwNSwgMjQsIDEsIDE2OCwgCi0gICAgMjIwLCAyMzksIDIyNCwgOTEsIDIyNCwgMjEyLCAyNCwgMSwgMTY4LCAyMjEsIDg5LCAyMjUsIDM2LCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDQyLCAyNCwgMSwgMTY4LCAyMTgsIDExMSwgMjQsIDEsIDE2OCwgMjIyLCAyNTUsIDI0LCAxLCAxNjgsIDIyNSwgNTMsIAotICAgIDI0NywgODgsIDI0LCAxLCAxNjgsIDIyOSwgMTU3LCAyNCwgMSwgMTY4LCAyMzgsIDEwOSwgMjQsIDEsIDE2OCwgMjI5LCAKLSAgICAxNjQsIDI0LCAxLCAxNjgsIDIwMiwgMjE0LCAyMjMsIDIxNSwgMjQsIDEsIDE2OCwgMjIwLCAyMDgsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgMzAsIDI0LCAxLCAxNjgsIDIyMSwgMTE5LCAyNCwgMSwgMTY4LCAyMjUsIDM2LCAyNCwgMSwgMTY4LCAyMDMsIDE5LCAKLSAgICAyNCwgMSwgMTY4LCAyMjgsIDI0MSwgMjQsIDEsIDE2OCwgMjMwLCA0MSwgMjQsIDEsIDE2OCwgMjEzLCAxMTMsIDI0LCAxLCAKLSAgICAxNjgsIDIyMywgOCwgMjQsIDEsIDE2OCwgMjEwLCAxMiwgMjQsIDEsIDE2OCwgMjIyLCAxNiwgMjQsIDEsIDE2OCwgMjA4LCAKLSAgICAxOTksIDIwMiwgMTk5LCAyNCwgMSwgMTY4LCAyMTEsIDUsIDI0LCAxLCAxNjgsIDIyMiwgMTYzLCAyMjEsIDYsIDI0LCAxLCAKLSAgICAxNjgsIDIwNSwgMjM2LCAyNCwgMSwgMTY4LCAyMjMsIDc4LCAyNCwgMSwgMTY4LCAyMjUsIDE3NywgMjI5LCAxNjYsIDI0LCAKLSAgICAxLCAxNjgsIDIyMSwgMTAyLCAyNCwgMSwgMTY4LCAyMjIsIDE1OCwgMjQsIDEsIDE2OCwgMjI4LCAxMSwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCAzOCwgMjQsIDEsIDE2OCwgMjI0LCAxODksIDI0LCAxLCAxNjgsIDIyMSwgOTYsIDI0LCAxLCAxNjgsIDIwOSwgMTE2LCAKLSAgICAyNCwgMSwgMTY4LCAyMjIsIDE2MCwgMjQsIDEsIDE2OCwgMjM5LCAxMDYsIDI0LCAxLCAxNjgsIDIyMywgMTMsIDI0LCAxLCAKLSAgICAxNjgsIDIyMSwgMTIxLCAyNCwgMSwgMTY4LCAyMjEsIDExNywgMjQsIDEsIDE2OCwgMjQ3LCAxNjksIDI0LCAxLCAxNjgsIAotICAgIDIwNSwgMjM4LCAyNCwgMSwgMTY4LCAyMjUsIDQzLCAyNCwgMSwgMTY4LCAyMTUsIDE0NSwgMjQsIDEsIDE2OCwgMjIyLCA0NiwgCi0gICAgMjQsIDEsIDE2OCwgMjI4LCAyOCwgMjQsIDEsIDE2OCwgMjA4LCAxOTYsIDI0LCAxLCAxNjgsIDIyMSwgMTAzLCAyMjIsIAotICAgIDEyNSwgMjQsIDEsIDE2OCwgMjIyLCAzOCwgMjQsIDEsIDE2OCwgMjI5LCAxNzAsIDI0LCAxLCAxNjgsIDIyMiwgMTY1LCAyNCwgCi0gICAgMSwgMTY4LCAyMjUsIDE1MCwgMjQsIDEsIDE2OCwgMjI1LCAzMSwgMjQsIDEsIDE2OCwgMjI2LCAyMzksIDI0LCAxLCAxNjgsIAotICAgIDIyOCwgMTc1LCAyNCwgMSwgMTY4LCAyMjIsIDQ0LCAyNCwgMSwgMTY4LCAyMjIsIDEyNSwgMjQsIDEsIDE2OCwgMjAzLCAKLSAgICAyMDUsIDI0LCAxLCAxNjgsIDIyMiwgMTYxLCAyNCwgMSwgMTY4LCAyMjEsIDEwNiwgMjQsIDEsIDE2OCwgMjIxLCA5OCwgMjQsIAotICAgIDEsIDE2OCwgMjI4LCAxOTAsIDIyMiwgMiwgMjQsIDEsIDE2OCwgMjIxLCAxMDQsIDI0LCAxLCAxNjgsIDIyMywgMjEsIDI0LCAKLSAgICAxLCAxNjgsIDIyNSwgMTc3LCAyMjEsIDEwOSwgMjQsIDEsIDE2OCwgMjAzLCAxMTAsIDI0LCAxLCAxNjgsIDIyMywgMjAsIAotICAgIDI0LCAxLCAxNjgsIDIxMiwgMTk0LCAyNCwgMSwgMTY4LCAyMTMsIDExNiwgMjQsIDEsIDE2OCwgMjI1LCAzOSwgMjQsIDEsIAotICAgIDE2OCwgMjI1LCAxNTcsIDI0LCAxLCAxNjgsIDIyNSwgNDksIDI0LCAxLCAxNjgsIDIyOSwgMTU4LCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDQwLCAyNCwgMSwgMTY4LCAyMjksIDE2MiwgMjQsIDEsIDE2OCwgMjI1LCA1MywgMjE4LCAxNjIsIDI0LCAxLCAxNjgsIAotICAgIDIwMiwgMTc5LCAyNCwgMSwgMTY4LCAyMjIsIDM0LCAyNCwgMSwgMTY4LCAyMjQsIDE0NCwgMjQsIDEsIDE2OCwgMjIzLCAKLSAgICAyNDQsIDI0LCAxLCAxNjgsIDIxMiwgMjUwLCAyNCwgMSwgMTY4LCAyMjksIDE4MSwgMjI3LCAyNDYsIDI0LCAxLCAxNjgsIAotICAgIDIyOSwgMTgxLCAyNDAsIDY2LCAyNCwgMSwgMTY4LCAyMjIsIDE5NSwgMjQsIDEsIDE2OCwgMjIzLCA3NSwgMjQsIDEsIDE2OCwgCi0gICAgMjI3LCA5NiwgMjQsIDEsIDE2OCwgMjE4LCAxMjMsIDI0LCAxLCAxNjgsIDIxOSwgOSwgMjQsIDEsIDE2OCwgMjA5LCAxMzIsIAotICAgIDI0LCAxLCAxMzQsIDIyNSwgMjksIDI0LCAxLCAxMzQsIDIwNCwgOTMsIDI0LCAxLCAxMzQsIDIyMiwgMzIsIDI0LCAxLCAKLSAgICAxMzQsIDIyNCwgMTk3LCAyNCwgMSwgMTM0LCAyMjIsIDMwLCAyNCwgMSwgMTM0LCAyMjcsIDE0MSwgMjQsIDEsIDEzNCwgCi0gICAgMjIyLCAzNSwgMjQsIDEsIDEzNCwgMjIxLCAxMTYsIDI0LCAxLCAxMzQsIDIyMiwgMTc5LCAyNCwgMSwgMTM0LCAyMjEsIDYsIAotICAgIDI0LCAxLCAxMzQsIDIwMywgMjE2LCAyNCwgMSwgMTM0LCAyMjIsIDEzMywgMjQsIDEsIDEzNCwgMjEzLCA0MSwgMjQsIDEsIAotICAgIDEzNCwgMjIyLCAxNDQsIDI0LCAxLCAxMzQsIDIyOSwgMTY1LCAyNCwgMSwgMTM0LCAyMDksIDExOCwgMjQsIDEsIDEzNCwgCi0gICAgMjEzLCAyMCwgMjQsIDEsIDEzNCwgMjIyLCA0MywgMjQsIDEsIDEzNCwgMjEwLCAyMzAsIDI0LCAxLCAxMzQsIDIyOSwgMTcwLCAKLSAgICAyNCwgMSwgMTM0LCAyMDMsIDk4LCAyNCwgMSwgMTM0LCAyMjgsIDE5MSwgMjQsIDEsIDEzNCwgMjE0LCAyMzMsIDI0LCAxLCAKLSAgICAxMzQsIDIyNCwgMjAyLCAyNCwgMSwgMTM0LCAyMjMsIDEyLCAyNCwgMSwgMTM0LCAyMjUsIDEyNSwgMjQsIDEsIDEzNCwgCi0gICAgMjI0LCAyMDgsIDI0LCAxLCAxMzQsIDIxMywgMTE1LCAyNCwgMSwgMTM0LCAyMDMsIDQyLCAyNCwgMSwgMTM0LCAyMjIsIDM3LCAKLSAgICAyNCwgMSwgMTM0LCAyMjksIDE2MSwgMjI1LCAzMiwgMjQsIDEsIDEzNCwgMjIyLCAxNDAsIDI0LCAxLCAxMzQsIDIwNywgCi0gICAgMjAzLCAyNCwgMSwgMTM0LCAyMzgsIDExOCwgMjQsIDEsIDEzNCwgMjIyLCAxMzAsIDI0LCAxLCAxMzQsIDI0MCwgMzIsIDI0LCAKLSAgICAxLCAxMzQsIDIyMywgMTYsIDI0LCAxLCAxMzQsIDIyNCwgMTgxLCAyNCwgMSwgMTM0LCAyMjcsIDE2OSwgMjQsIDEsIDEzNCwgCi0gICAgMjIyLCAyNTQsIDI0LCAxLCAxMzQsIDIyNCwgNTAsIDI0LCAxLCAxMzQsIDIyNCwgMTg1LCAyNCwgMSwgMTM0LCAyMTcsIAotICAgIDE1NiwgMjQsIDEsIDEzNCwgMjI0LCAxODMsIDI0LCAxLCAxMzQsIDIyNCwgMTk5LCAyNCwgMSwgMTM0LCAyMjYsIDIyMiwgCi0gICAgMjQsIDEsIDEzNCwgMjIxLCAxMDgsIDI0LCAxLCAxMzQsIDIyNSwgNTIsIDI0LCAxLCAxMzQsIDIyOCwgMTY1LCAyNCwgMSwgCi0gICAgMTM0LCAyMjAsIDI1MSwgMjQsIDEsIDEzNCwgMjA5LCAxMjEsIDI0LCAxLCAxMzQsIDIxMSwgMjQ0LCAyNCwgMSwgMTM0LCAKLSAgICAyMDIsIDE3OSwgMjQsIDEsIDEzNCwgMjI5LCAxNjIsIDI0LCAxLCAxMzQsIDIxNiwgMjAxLCAyNCwgMSwgMTM0LCAyMDksIAotICAgIDE3NSwgMjQsIDEsIDEzNCwgMjIyLCAxNDEsIDI0LCAxLCAxMzQsIDIyNCwgMjA0LCAyNCwgMSwgMTM0LCAyMjEsIDEwNywgCi0gICAgMjQsIDEsIDEzNCwgMjI5LCAxNjAsIDI0LCAxLCAxMzQsIDIxOCwgMTE3LCAyNCwgMSwgMTM0LCAyMTgsIDIxMywgMjQsIDEsIAotICAgIDEzNCwgMjIwLCAyMjUsIDI0LCAxLCAxMzQsIDIyNywgMTc1LCAyNCwgMSwgMTM0LCAyMjIsIDE4MCwgMjQsIDEsIDEzNCwgCi0gICAgMjI0LCAyMDEsIDI0LCAxLCAxMzQsIDIyMiwgMTUzLCAyNCwgMSwgMTM0LCAyMDIsIDE5MywgMjQsIDEsIDEzNCwgMjE5LCAKLSAgICA5NiwgMjQsIDEsIDEzNCwgMjAyLCAxOTIsIDI0LCAxLCAxMzQsIDIyMywgMjEsIDI0LCAxLCAxMzQsIDIyMSwgOTcsIDI0LCAKLSAgICAxLCAxMzQsIDIxMSwgNywgMjQsIDEsIDEzNCwgMjI4LCAxOTUsIDI0LCAxLCAxMzQsIDIyMiwgMTY5LCAyNCwgMSwgMTM0LCAKLSAgICAyMjIsIDEzOCwgMjQsIDEsIDEzNCwgMjA3LCAxODUsIDI0LCAxLCAxMzQsIDIyNCwgMjEyLCAyNCwgMSwgMTM0LCAyMjgsIAotICAgIDE4NSwgMjQsIDEsIDEzNCwgMjIxLCAxMDUsIDI0LCAxLCAxMzQsIDIwOSwgMTE5LCAyNCwgMSwgMTM0LCAyMjUsIDE1MiwgCi0gICAgMjQsIDEsIDEzNCwgMjIyLCAxNzgsIDI0LCAxLCAxMzQsIDIyNywgMTY4LCAyNCwgMSwgMTM0LCAyMjIsIDE1OSwgMjQsIDEsIAotICAgIDEzNCwgMjIxLCAxMTAsIDI0LCAxLCAxMzQsIDIyMiwgMTYsIDI0LCAxLCAxMzQsIDIzOCwgMTAyLCAyNCwgMSwgMTM0LCAKLSAgICAyMjgsIDIwOSwgMjQsIDEsIDEzNCwgMjE2LCAxMDgsIDIyMCwgNDUsIDI0LCAxLCAxMzQsIDIxMCwgMSwgMjQsIDEsIDEzNCwgCi0gICAgMjA4LCAxNDEsIDI0LCAxLCAxMzQsIDIyMCwgMjQ4LCAyNCwgMSwgMTM0LCAyMTYsIDMsIDI0LCAxLCAxMzQsIDIyNywgMjI1LCAKLSAgICAyNCwgMSwgMTM0LCAyMjUsIDcsIDI0LCAxLCAxMzQsIDIyNiwgMTg1LCAyNCwgMSwgMTM0LCAyMTAsIDE3OSwgMjQsIDEsIAotICAgIDEzNCwgMjIzLCAyNDYsIDI0LCAxLCAxMzQsIDIxMywgNiwgMjQsIDEsIDEzNCwgMjEzLCAxNiwgMjQsIDEsIDEzNCwgMjI4LCAKLSAgICAxMzcsIDI0LCAxLCAxMzQsIDIyMSwgODQsIDI0LCAxLCAxMzQsIDIxMiwgMTk5LCAyNCwgMSwgMTM0LCAyMjEsIDk5LCAyNCwgCi0gICAgMSwgMTM0LCAyMTksIDIzLCAyNCwgMSwgMTM0LCAyMjIsIDEwMCwgMjQsIDEsIDEzNCwgMjEyLCAyMjksIDI0LCAxLCAxMzQsIAotICAgIDIxNywgMTcxLCAyNCwgMSwgMTM0LCAyMjMsIDE4NCwgMjQsIDEsIDEzNCwgMjI3LCAxMCwgMjQsIDEsIDEzNCwgMjE2LCAKLSAgICAxMDgsIDIyMywgMjM5LCAyNCwgMSwgMTM0LCAyMDksIDIsIDI0LCAxLCAxMzQsIDIyMSwgODYsIDI0LCAxLCAxMzQsIDIyNSwgCi0gICAgNTMsIDIxMywgMTExLCAyNCwgMSwgMTM0LCAyMTQsIDIzMSwgMjQsIDEsIDEzNCwgMjQwLCAxMDcsIDI0LCAxLCA5MywgMjIzLCAKLSAgICAyMCwgMjQsIDEsIDkzLCAyMDgsIDE0NywgMjQsIDEsIDkzLCAyMjUsIDQyLCAyNCwgMSwgOTMsIDIyOCwgMTEsIDI0LCAxLCAKLSAgICA5MywgMjA1LCAxNzcsIDI0LCAxLCA5MywgMjI3LCAxNiwgMjQsIDEsIDkzLCAyMTksIDE2OCwgMjQsIDEsIDkzLCAyMTEsIAotICAgIDI1NSwgMjQsIDEsIDkzLCAyMTYsIDE3NiwgMjQsIDEsIDkzLCAyMjEsIDExMiwgMjQsIDEsIDkzLCAyMjIsIDI0NywgMjQsIAotICAgIDEsIDkzLCAyMTcsIDE4OCwgMjQsIDEsIDkzLCAyMDksIDIzMiwgMjQsIDEsIDkzLCAyMjIsIDE0NiwgMjQsIDEsIDkzLCAKLSAgICAyMjgsIDIzNywgMjQsIDEsIDkzLCAyMDMsIDIwOCwgMjQsIDEsIDkzLCAyMTQsIDE2NSwgMjQsIDEsIDkzLCAyMjIsIDE3MCwgCi0gICAgMjQsIDEsIDkzLCAyMTksIDE2NSwgMjQsIDEsIDkzLCAyMDgsIDE0OCwgMjQsIDEsIDkzLCAyMjgsIDE4OSwgMjQsIDEsIDkzLCAKLSAgICAyMjcsIDMwLCAyNCwgMSwgOTMsIDIyMSwgMTE1LCAyNCwgMSwgOTMsIDIyMiwgMTIyLCAyNCwgMSwgOTMsIDIyNSwgMTU4LCAKLSAgICAyNCwgMSwgOTMsIDIyMiwgMTM5LCAyNCwgMSwgOTMsIDIyMiwgMTIxLCAyNCwgMSwgOTMsIDIyMSwgMTE0LCAyNCwgMSwgOTMsIAotICAgIDIxNiwgMCwgMjQsIDEsIDkzLCAyMjIsIDM0LCAyNCwgMSwgOTMsIDIxOSwgMjEsIDI0LCAxLCA5MywgMjE1LCAzMywgMjQsIAotICAgIDEsIDkzLCAyMjIsIDE1NCwgMjQsIDEsIDkzLCAyMjQsIDE5MSwgMjQsIDEsIDkzLCAyMzgsIDk2LCAyNCwgMSwgOTMsIDIyMiwgCi0gICAgMTQyLCAyNCwgMSwgOTMsIDIyMiwgNDUsIDI0LCAxLCA5MywgMjI1LCAxMDYsIDI0LCAxLCA5MywgMjI3LCAxMiwgMjQsIDEsIAotICAgIDkzLCAyMjIsIDE3NSwgMjQsIDEsIDkzLCAyMjMsIDQsIDI0LCAxLCA5MywgMjEwLCAwLCAyMjEsIDk3LCAyNCwgMSwgOTMsIAotICAgIDIxMywgMTE3LCAyNCwgMSwgOTMsIDIxNywgMTgxLCAyNCwgMSwgOTMsIDIyMywgMjQsIDIxMiwgNiwgMjQsIDEsIDkzLCAKLSAgICAyMjIsIDE2MiwgMjIxLCA2LCAyNCwgMSwgOTMsIDIwMywgNywgMjQsIDEsIDkzLCAyMzgsIDk3LCAyNCwgMSwgOTMsIDIwNywgCi0gICAgMjAyLCAyNCwgMSwgOTMsIDIwMywgMjIsIDI0LCAxLCA5MywgMjE4LCA2OSwgMjQsIDEsIDkzLCAyMDcsIDE5MCwgMjQsIDEsIAotICAgIDkzLCAyMjksIDE2OCwgMjQsIDEsIDkzLCAyMTEsIDYsIDI0LCAxLCA5MywgMjA5LCAxMjAsIDI0LCAxLCA5MywgMjA1LCAKLSAgICAyMzksIDI0LCAxLCA5MywgMjA0LCA0MywgMjQsIDEsIDkzLCAyMjgsIDExMCwgMjQsIDEsIDkzLCAyMTcsIDE5MSwgMjQsIDEsIAotICAgIDkzLCAyMTAsIDEzLCAyNCwgMSwgOTMsIDIzOCwgMTE3LCAyNCwgMSwgOTMsIDIyMiwgMTg1LCAyNCwgMSwgOTMsIDIxMywgCi0gICAgMTksIDI0LCAxLCA5MywgMjI0LCAxODYsIDI0LCAxLCA5MywgMjI1LCA0NiwgMjQsIDEsIDkzLCAyMjAsIDIxMiwgMjQsIDEsIAotICAgIDkzLCAyMjEsIDI1NCwgMjQsIDEsIDkzLCAyMzgsIDIwMSwgMjQsIDEsIDkzLCAyMDcsIDE5MSwgMjQsIDEsIDkzLCAyMjgsIAotICAgIDE5OSwgMjQsIDEsIDkzLCAyMDMsIDc0LCAyNCwgMSwgOTMsIDIyMCwgMjQ5LCAyNDYsIDMyLCAyNCwgMSwgOTMsIDIwMiwgCi0gICAgMjUzLCAyNCwgMSwgOTMsIDIyNCwgMjAzLCAyNCwgMSwgOTMsIDIyMywgOSwgMjQsIDEsIDkzLCAyMTgsIDE1OCwgMjQsIDEsIAotICAgIDkzLCAyMDIsIDE5OCwgMjQsIDEsIDkzLCAyMjcsIDE3MCwgMjQsIDEsIDkzLCAyMzksIDEwNiwgMjQsIDEsIDkzLCAyMzgsIAotICAgIDIwMCwgMjQsIDEsIDkzLCAyMjIsIDEzMiwgMjQsIDEsIDkzLCAyMjksIDE3MCwgMjQsIDEsIDkzLCAyMjUsIDE2MSwgMjQsIAotICAgIDEsIDkzLCAyMjIsIDE0NSwgMjQsIDEsIDkzLCAyMzgsIDEwMywgMjQsIDEsIDkzLCAyNDAsIDEwOCwgMjQsIDEsIDkzLCAKLSAgICAyMjEsIDg3LCAyNCwgMSwgOTMsIDIxOCwgMjE0LCAyNCwgMSwgOTMsIDIwMywgMjAsIDI0LCAxLCA5MywgMjIyLCAxNzEsIAotICAgIDI0LCAxLCA5MywgMjIwLCAyNDksIDI0OCwgMTAzLCAyNCwgMSwgOTMsIDIyMCwgMTkyLCAyNCwgMSwgOTMsIDIxOCwgNDMsIAotICAgIDI0LCAxLCA5MywgMjI0LCAxNDQsIDI0LCAxLCA5MywgMjM5LCAxMDQsIDI0LCAxLCA5MywgMjIzLCAxMDAsIDI0LCAxLCA5MywgCi0gICAgMjIzLCAyNDQsIDI0LCAxLCA5MywgMjM4LCAxMDIsIDI0LCAxLCA5MywgMjM5LCAxMDksIDc1LCAyNCwgMSwgOTMsIDIyMywgCi0gICAgMTg1LCAyNCwgMSwgOTMsIDIxNywgMTg3LCAyNCwgMSwgOTMsIDIyMiwgMTM0LCAyNCwgMSwgOTMsIDIyOCwgMTc1LCAyNCwgCi0gICAgMSwgOTMsIDIxOCwgMTU1LCAyNCwgMSwgOTMsIDIyMSwgMTAwLCAyNCwgMSwgOTMsIDIwMywgMjEsIDI0LCAxLCA5MywgMjIyLCAKLSAgICAxNTUsIDI0LCAxLCA5MywgMjE5LCAxNjksIDIxOCwgMjUyLCAyNCwgMSwgOTMsIDIzOSwgMTA5LCAyNDcsIDcxLCAyNCwgMSwgCi0gICAgOTMsIDIzOSwgMTc5LCAyNCwgMSwgOTMsIDIyMiwgMzksIDI0LCAxLCA5MywgNjMsIDI0LCAxLCA5MywgMjA4LCAxNDEsIDI0LCAKLSAgICAxLCA5MywgNzgsIDI0LCAxLCA5MywgNzUsIDI0LCAxLCA5MywgMjI4LCA5LCAyNCwgMSwgOTMsIDIxOSwgMTY5LCAyMTgsIAotICAgIDc3LCAyNCwgMSwgOTMsIDIxMCwgMTgsIDI0LCAxLCA5MywgMjA5LCAyMTksIDI0LCAxLCA5MywgMjIzLCAyNCwgMjIzLCAKLSAgICAxNzIsIDIzNiwgMzgsIDI0LCAxLCA5MywgMjEyLCAyNTAsIDI0LCAxLCA5MywgMjAzLCAxNywgMjQsIDEsIDkzLCAyMjIsIAotICAgIDExNSwgMjQsIDEsIDkzLCAyMDIsIDIwMywgMjQsIDEsIDkzLCAyMDIsIDIzMCwgMjEwLCAxNTksIDI0LCAxLCA5MywgMjAyLCAKLSAgICAyMzAsIDI0NSwgMTUxLCAyNCwgMSwgOTMsIDIwMiwgMTg3LCAyNCwgMSwgOTMsIDIwMiwgMTk1LCAyNCwgMSwgOTMsIDIyOSwgCi0gICAgMTU2LCAyNCwgMSwgOTMsIDIxOCwgMjEyLCAyNCwgMSwgOTMsIDIyMiwgNDAsIDI0MSwgMzksIDI0LCAxLCA5MywgMjE3LCAKLSAgICAxODMsIDI0LCAxLCA5MywgMjAzLCAyMTQsIDI0LCAxLCA5MywgMjQwLCA1MywgMjQsIDEsIDkzLCAyMDYsIDUwLCAyNCwgMSwgCi0gICAgOTMsIDIyNiwgMjM5LCAyNCwgMSwgOTMsIDIyNCwgMTU1LCAyNCwgMSwgOTMsIDIxNiwgNzUsIDI0LCAxLCA5MywgMjE2LCAKLSAgICAyMDIsIDI0LCAxLCA5MywgMjIyLCAxMTQsIDI0LCAxLCA5MywgMjIyLCAyMDMsIDI0LCAxLCA5MywgMjEyLCAyNDIsIDI0LCAKLSAgICAxLCA5MywgMjEyLCAyMjksIDI0LCAxLCA5MywgMjM5LCAxMDksIDIxNiwgMTExLCAyNCwgMSwgOTMsIDIwMSwgMjAxLCAyNCwgCi0gICAgMSwgOTMsIDIxOCwgMTY3LCAyNCwgMSwgOTMsIDIyNywgMTAsIDI0LCAxLCA5MywgMjI5LCAyNiwgMjQsIDEsIDkzLCAyMjQsIAotICAgIDI0MCwgMjQsIDEsIDkzLCAxOTIsIDI0LCAxLCA5MywgMjI1LCAxMDMsIDI0LCAxLCA5MywgMjA5LCAxMjIsIDI0LCAxLCA5MywgCi0gICAgMjI5LCAxMDAsIDI0LCAxLCA5MywgMjI0LCA1NCwgMjQsIDEsIDkzLCAyMDksIDE1MiwgMjQsIDEsIDkzLCAyNDAsIDc3LCAKLSAgICAyNCwgMSwgOTMsIDIzOCwgOTAsIDI0LCAxLCAyMTgsIDE5NiwgMTczLCAyNCwgMSwgMjE4LCAxOTYsIDY4LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIyOCwgMjA5LCAyNCwgMSwgMjE4LCAxOTYsIDI0MSwgMTYxLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgMTM1LCAKLSAgICAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjAsIDI0OCwgMjQsIDEsIDIxOCwgMTk2LCAyMjgsIAotICAgIDExMywgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDMsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCA1MCwgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMjUsIDcsIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxOCwgMjQsIDEsIDIxOCwgMTk2LCAyMjMsIDIzLCAyNCwgMSwgMjE4LCAKLSAgICAxOTYsIDIyMiwgNDYsIDI0LCAxLCAyMTgsIDE5NiwgMjI2LCAxODUsIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxNzksIDI0LCAKLSAgICAxLCAyMTgsIDE5NiwgMjEzLCA2LCAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMTYyLCAyNCwgMSwgMjE4LCAxOTYsIDIxMywgCi0gICAgMTEzLCAyNCwgMSwgMjE4LCAxOTYsIDIyOCwgMTM3LCAyNCwgMSwgMjE4LCAxOTYsIDIyOSwgMTcwLCAyNCwgMSwgMjE4LCAKLSAgICAxOTYsIDIyMSwgNTUsIDI0LCAxLCAyMTgsIDE5NiwgMjIxLCA4NCwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDE3LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIwMiwgMjI5LCAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMTk5LCAyNCwgMSwgMjE4LCAxOTYsIDE5OCwgMjQsIAotICAgIDEsIDIxOCwgMTk2LCAyMjEsIDExOCwgMjQsIDEsIDIxOCwgMTk2LCAyMTgsIDIxMiwgMjQsIDEsIDIxOCwgMTk2LCAyMjEsIAotICAgIDk5LCAyNCwgMSwgMjE4LCAxOTYsIDIwMywgMjE0LCAyNCwgMSwgMjE4LCAxOTYsIDIxOSwgMjMsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjE1LCAxNDUsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxMDAsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCA3NSwgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMjksIDE4MCwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDEzMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDE4MiwgCi0gICAgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDI0MiwgMjQsIDEsIDIxOCwgMTk2LCAyMTcsIDE4OCwgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMzksIDE3OSwgMjQsIDEsIDIxOCwgMTk2LCAyMDQsIDExMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjcsIDE0OCwgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMjcsIDEwLCAyNCwgMSwgMjE4LCAxOTYsIDIyOSwgMjYsIDI0LCAxLCAyMTgsIDE5NiwgMjI1LCA0NCwgCi0gICAgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDEwNywgMjQsIDEsIDIxOCwgMTk2LCAxOTIsIDI0LCAxLCAyMTgsIDE5NiwgMjI0LCAKLSAgICA4MiwgMjQsIDEsIDIxOCwgMTk2LCAyMjUsIDUyLCAyNCwgMSwgMjE4LCAxOTYsIDIwOSwgMTMyLCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIyOCwgMjQ0LCAyNCwgMSwgMjE4LCAxOTYsIDIxNCwgMjUxLCAyNCwgMSwgMjE4LCAxOTYsIDIwNCwgMTYyLCAyMjMsIDI0OSwgCi0gICAgMSwgMjEwLCAyMiwgMjIzLCAyNDksIDEsIDIyMiwgMTUxLCAyMjMsIDI0OSwgMSwgMjAyLCAyNDcsIDIyMywgMjQ5LCAxLCAKLSAgICAyMjQsIDExMiwgMjIzLCAyNDksIDEsIDI0OSwgMzIsIDIyMywgMjQ5LCAxLCAyNDQsIDIxMiwgMjIzLCAyNDksIDEsIDYzLCAKLSAgICAyMjMsIDI0OSwgMSwgMjE4LCAxOTIsIDIyMywgMjQ5LCAxLCAyMjksIDEzOSwgMjIzLCAyNDksIDEsIDIzNywgOTUsIDIyMywgCi0gICAgMjQ5LCAxLCAyNDQsIDE4OCwgMjIzLCAyNDksIDEsIDI0NiwgOTgsIDIyMywgMjQ5LCAxLCAyMjksIDIwMCwgMjIzLCAyNDksIAotICAgIDEsIDIyMCwgNDYsIDIyMywgMjQ5LCAxLCAyMjUsIDE1OCwgMjIzLCAyNDksIDEsIDIyMiwgNjgsIDIyMywgMjQ5LCAxLCAKLSAgICAxODUsIDIyMywgMjQ5LCAxLCAyMjAsIDE4LCAyMjMsIDI0OSwgMSwgNzgsIDIyMywgMjQ5LCAxLCAyMTUsIDIyNywgMjIzLCAKLSAgICAyNDksIDEsIDIxMywgMTEsIDIyMywgMjQ5LCAxLCAyMDksIDkxLCAyMjMsIDI0OSwgMSwgMjQxLCAxODksIDIyMywgMjQ5LCAKLSAgICAxLCAyMDQsIDExMSwgMjIzLCAyNDksIDEsIDc0LCAyMjMsIDI0OSwgMSwgMjI5LCAyNiwgMjIzLCAyNDksIDEsIDIyOCwgMTcsIAotICAgIDIyMywgMjQ5LCAxLCAyMjgsIDExMywgMjIzLCAyNDksIDEsIDIzNywgMTQ3LCAyMjMsIDI0OSwgMSwgMjE2LCA1NywgMjIzLCAKLSAgICAyNDksIDEsIDIwOSwgMTY1LCAyMjMsIDI0OSwgMTcsIDIwMiwgODQsIDIyMywgMjQ5LCAxNywgMTA1LCAyMjMsIDI0OSwgMTcsIAotICAgIDEwOCwgMjIzLCAyNDksIDE3LCAxNDcsIDIyMywgMjQ5LCAxNywgMTQ5LCAyMjMsIDI0OSwgMTcsIDE3MCwgMjIzLCAyNDksIAotICAgIDE3LCAxOTUsIDIyMywgMjQ5LCAxNywgMjEzLCAxMTEsIDIyMywgMjQ5LCAxNywgMTk5LCAyMjMsIDI0OSwgMTcsIDIyMiwgCi0gICAgNjMsIDIyMywgMjQ5LCAyNDQsIDE2NiwgMjIzLCAyNDksIDUyLCAyNDQsIDE2NiwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAotICAgIDI0MSwgNzQsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAxNzMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMTQsIDE3NywgMjQ4LCAKLSAgICAyMTIsIDIwNiwgODMsIDEsIDI0MCwgMTA4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjI1LCA0NywgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDIwMywgOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzOCwgMjQ5LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQzLCAKLSAgICAyMzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjgsIDI0MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzMCwgMTAxLCAyNDgsIAotICAgIDIxMiwgMjA2LCA4MywgMSwgMjM1LCAyNTMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDQsIDExMSwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDIwMiwgMTcsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzgsIDE5NCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAotICAgIDI0MywgMTEzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQ2LCAyMzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDYsIDE3MSwgCi0gICAgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDEzNSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0OSwgMzIsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCAyMDQsIDE2MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwMywgNDYsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKLSAgICAxODUsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDQsIDEwOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDYzLCAyNDgsIDIxMiwgCi0gICAgMjA2LCA4MywgMSwgNzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjAsIDE4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgNjgsIAotICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDEsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDc0LCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgNzUsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMTM4LCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAKLSAgICAxMjQsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDIyNCwgMTUwLCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDM5LCAyMjYsIDI1MywgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMjM2LCAyNDIsIDIwOCwgMTYxLCAKLSAgICAyNDgsIDIxMiwgMjA2LCA4MywgMjM5LCAxMDIsIDIxMSwgNjEsIDExOSwgMTE3LCAyMiwgMjI5LCAxOTcsIDExOSwgMTE3LCAKLSAgICAyMiwgMjI5LCAxOTMsIDExOSwgMTE3LCAyMiwgMjI5LCA5NywgMTE5LCAxMTcsIDIyLCAyMjksIDYzLCAxMTksIDExNywgMjIsIAotICAgIDIyOSwgMjE4LCAxMTksIDExNywgMjIsIDIyOSwgMjE1LCAxMTksIDExNywgMjIsIDIyOCwgMjAwLCAxMTksIDExNywgMjIsIAotICAgIDIyOCwgMTcyLCAxMTksIDExNywgMjIsIDIyOSwgMTk5LCAxMTksIDExNywgMjIsIDIyOSwgMTU0LCAxMTksIDExNywgMjIsIAotICAgIDIzMCwgMTcsIDExOSwgMTE3LCAyMiwgMjMwLCAxNCwgMTE5LCAxMTcsIDIyLCAyMjksIDUsIDExOSwgMTE3LCAyMiwgMjI5LCAKLSAgICAyLCAxMTksIDExNywgMjIsIDIyOSwgMjEyLCAxMTksIDExNywgMjIsIDIyOSwgMjEwLCAxMTksIDExNywgMjIsIDIyOCwgCi0gICAgMjAyLCAxMTksIDExNywgMjIsIDIyOCwgMjAxLCAxMTksIDExNywgMjIsIDIyOSwgMjMsIDExOSwgMTE3LCAyMiwgMjI4LCAKLSAgICAyNDcsIDExOSwgMTE3LCAyMiwgMjI5LCA5OSwgMTE5LCAxMTcsIDIyLCAyMjksIDk4LCAxMTksIDExNywgMjIsIDIzMCwgMzIsIAotICAgIDExOSwgMTE3LCAyMiwgMjI5LCAyMTQsIDExOSwgMTE3LCAyMiwgMjI4LCAxNjMsIDExOSwgMTE3LCAyMiwgMjI4LCAxNTQsIAotICAgIDExOSwgMTE3LCAyMiwgMjMwLCA0MCwgMTE5LCAxMTcsIDIyLCAyMzAsIDMzLCAxMTksIDExNywgMTA5LCAyMDYsIDYxLCAKLSAgICAxMTksIDExNywgMTA5LCAyMjEsIDkwLCAxMTksIDExNywgMTA5LCAyMjcsIDI1MSwgMTE5LCAxMTcsIDEwOSwgMjM3LCA3NiwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjIxLCAyMzAsIDExOSwgMTE3LCAxMDksIDIxNiwgMTY3LCAxMTksIDExNywgMTA5LCAyMjIsIDEsIAotICAgIDExOSwgMTE3LCAxMDksIDIxNywgMTAwLCAxMTksIDExNywgMTA5LCAyMDMsIDYyLCAxMTksIDExNywgMTA5LCAyMzYsIDIyMSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjI1LCA2NywgMTE5LCAxMTcsIDEwOSwgMjQ2LCAxNzQsIDExOSwgMTE3LCAxMDksIDIyMywgMjgsIAotICAgIDExOSwgMTE3LCAxMDksIDIzNiwgMTU3LCAxMTksIDExNywgMTA5LCAyMTgsIDg1LCAxMTksIDExNywgMTA5LCAyMjEsIDk1LCAKLSAgICAxMTksIDExNywgMTA5LCAyMjMsIDY1LCAxMTksIDExNywgMTA5LCAyNTAsIDM0LCAxMTksIDExNywgMTA5LCAyMDMsIDE3OCwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjQ3LCAxNSwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjA3LCAxOTksIDExOSwgMTE3LCAxMzEsIAotICAgIDI0NiwgNjcsIDIxMiwgMTMsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIyOSwgMTcyLCAxMTksIDExNywgMTMxLCAyNDYsIAotICAgIDY3LCAyMjksIDEzMCwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjExLCA0LCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAKLSAgICAyMzYsIDEyMywgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjA5LCAyMDYsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA5LCAKLSAgICA0NCwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMDgsIDksIDI0NiwgMjI5LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjQ2LCAKLSAgICAxNjMsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA5LCA2OSwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyNDAsIDUwLCAxMTksIAotICAgIDExNywgMiwgMjAzLCAxMzYsIDIyMSwgODUsIDExOSwgMTE3LCAyLCAyMDMsIDEzNiwgMjE2LCA1OSwgMTE5LCAxMTcsIDIsIAotICAgIDIwMywgMTM2LCAyMDgsIDEyNCwgMTE5LCAxMTcsIDIsIDIwMywgMTM2LCAyNDAsIDg5LCAxMTksIDExNywgMiwgMjA1LCAKLSAgICAxNzMsIDIxNCwgMTU5LCAxMTksIDExNywgMiwgMjI1LCA2LCAyMTEsIDgsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjIxLCAKLSAgICAxMzQsIDExOSwgMTE3LCAyLCAyMzUsIDE2NywgMjAzLCA4MSwgMTE5LCAxMTcsIDIsIDIwMywgMTc3LCAxMTksIDExNywgMiwgCi0gICAgMjQ2LCA2NywgMjA3LCAyNTIsIDIxNSwgMjE2LCAxMTksIDExNywgMTcsIDIwMiwgODQsIDExOSwgMTE3LCAxNywgMTA1LCAKLSAgICAxMTksIDExNywgMTcsIDEwOCwgMTE5LCAxMTcsIDE3LCAxNDcsIDExOSwgMTE3LCAxNywgMTQ5LCAxMTksIDExNywgMTcsIAotICAgIDE3MCwgMTE5LCAxMTcsIDE3LCAxOTUsIDExOSwgMTE3LCAxNywgMjEzLCAxMTEsIDExOSwgMTE3LCAxNywgMTk5LCAxMTksIAotICAgIDExNywgMTcsIDIyMiwgNjMsIDExOSwgMTE3LCA0MiwgMjA5LCAxNDcsIDExOSwgMTE3LCA0MiwgMjM2LCAxMCwgMTE5LCAKLSAgICAxMTcsIDQyLCAyMDksIDE1MywgMjA5LCAzNCwgMTE5LCAxMTcsIDQyLCAyMjQsIDExMywgMTE5LCAxMTcsIDQyLCAyMzYsIAotICAgIDEyLCAyMjQsIDExMywgMTE5LCAxMTcsIDQyLCAyMDksIDE1MywgMjQ4LCA2OCwgMTE5LCAxMTcsIDQyLCAyMDgsIDcyLCAKLSAgICAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIyNiwgMjM0LCAxMTksIDExNywgMiwgMjAzLCAxMzMsIDExOSwgMTE3LCAyLCAyMzYsIAotICAgIDIxNiwgMTE5LCAxMTcsIDIsIDIwOSwgNTksIDIzNiwgMjE2LCAxMTksIDExNywgMiwgMjAxLCAyNDcsIDIwOSwgMTAyLCAKLSAgICAxMTksIDExNywgMiwgMjM2LCAxNDEsIDExOSwgMTE3LCAyLCAyMjEsIDE0OCwgMTE5LCAxMTcsIDIsIDIwMywgMTY5LCAxMTksIAotICAgIDExNywgMiwgMjIxLCA4OCwgMTE5LCAxMTcsIDIsIDI1MCwgMTgsIDExOSwgMTE3LCAyLCAyMDcsIDEyOSwgMjQ2LCAyMjgsIAotICAgIDExOSwgMTE3LCAyLCAyMjUsIDYsIDIwOCwgMTIsIDExOSwgMTE3LCAyLCAyMDksIDIwNywgMTE5LCAxMTcsIDIsIDIyNywgNywgCi0gICAgMTE5LCAxMTcsIDIsIDIyMywgMjAxLCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjM3LCAxNDMsIDIyNiwgMjEyLCAyMjEsIDkzLCAKLSAgICAyMjEsIDkyLCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjQ1LCAxMDksIDIwOCwgMywgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIAotICAgIDIwNywgMTI3LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjA3LCAxMjgsIDI0NiwgODYsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAKLSAgICAyMTcsIDE4NiwgMjQ0LCAxMzUsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyMjEsIDE0MSwgMjA4LCAxMzIsIDExOSwgMTE3LCAKLSAgICAyNDYsIDM5LCAyLCAyMDgsIDcsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDMsIDQ4LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgCi0gICAgMjI3LCA5MywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyNywgMjUwLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCAxMzIsIAotICAgIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjksIDYsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMzcsIDczLCAxMTksIDExNywgCi0gICAgMjQ2LCAzOSwgMiwgMjIzLCAyNDIsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDksIDQ1LCAxMTksIDExNywgMjQ2LCAzOSwgCi0gICAgMiwgMjA4LCAxNywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIxOCwgMjA1LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI5LCAKLSAgICAxNDIsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMzcsIDEzMywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwNiwgODAsIDExOSwgCi0gICAgMTE3LCAyNDYsIDM5LCAyLCAyNDAsIDg2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCA4OCwgMTE5LCAxMTcsIDI0NiwgCi0gICAgMzksIDIsIDIwNywgMjQ2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI4LCAxNTgsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAKLSAgICAyMDQsIDE1MywgMTExLCAxLCAxODUsIDExMSwgMSwgMjQ5LCAzMiwgMTExLCAxLCAxMSwgMTg1LCAxMTEsIDEsIDIxOCwgOTgsIAotICAgIDExMSwgMSwgMTkyLCAxMTEsIDEsIDIyNCwgMTU4LCAxMTEsIDEsIDI1MCwgMTI2LCAxOTIsIDExMSwgMSwgMjQwLCAxMDgsIAotICAgIDExMSwgMSwgMjA2LCA4NiwgMTExLCAxLCAyMDUsIDIzMSwgMTExLCAxLCAyMTAsIDIyLCAxMTEsIDEsIDI0NCwgMjEyLCAKLSAgICAxMTEsIDEsIDExLCAyMDcsIDI0MSwgMTExLCAxLCAxMSwgMjEwLCAyMiwgMTExLCAxLCAyMDcsIDI0MSwgMTExLCAxLCAyNDQsIAotICAgIDEyMCwgMTExLCAxLCAyMDEsIDIwMSwgMTExLCAxLCAyMjIsIDEwNCwgMTExLCAxLCAxMSwgMjIxLCAyMjcsIDExMSwgMSwgCi0gICAgMjUwLCAxMjYsIDIwMSwgMjAxLCAxMTEsIDEsIDIyMSwgMjI3LCAxMTEsIDEsIDIyMSwgMjEzLCAxMTEsIDEsIDIyOCwgMTEzLCAKLSAgICAxMTEsIDEsIDIyNiwgMTk4LCAxMTEsIDEsIDIyNywgMTYxLCAxMTEsIDEsIDIyNywgMTUwLCAxMTEsIDEsIDIwOCwgMTg3LCAKLSAgICAxMTEsIDEsIDI0MywgMTIxLCAxMTEsIDEsIDIwOCwgMTc5LCAxMTEsIDEsIDI0MywgMTIwLCAxMTEsIDEsIDE3MywgMTExLCAKLSAgICAxLCAyMzksIDgsIDExMSwgMSwgMTEsIDE3MywgMTExLCAxLCAyMTcsIDEyNiwgMTExLCAxLCAyMTcsIDEwMywgMTExLCAxLCAKLSAgICAyMjIsIDIwMywgMTExLCAxLCAyMjIsIDE1MiwgMTExLCAxLCAyNTAsIDEyNiwgMjIyLCAyMDMsIDExMSwgMSwgMTUyLCAxMTEsIAotICAgIDEsIDIwMywgMTgyLCAxMTEsIDEsIDIzOCwgMTE5LCAxMTEsIDEsIDIzOCwgOTQsIDExMSwgMSwgMjA3LCAyNTEsIDExMSwgMSwgCi0gICAgMjQxLCAyMzksIDExMSwgMSwgMjIxLCAxMSwgMTExLCAxLCAyMjAsIDI1MCwgMTExLCAxLCAyMDgsIDEwLCAxMTEsIDEsIAotICAgIDI0MSwgMjQ5LCAxMTEsIDEsIDExLCAyMDgsIDEwLCAxMTEsIDEsIDExLCAyNDEsIDI0OSwgMTExLCAxLCAyMTYsIDEzMywgCi0gICAgMjA4LCAxMCwgMTExLCAxLCAyMTMsIDkwLCAxMTEsIDEsIDIxMSwgMTY0LCAxMTEsIDEsIDIwMiwgODAsIDExMSwgMSwgMjAyLCAKLSAgICA4LCAxMTEsIDEsIDIwOCwgMjAsIDExMSwgMSwgMjQxLCAyNTUsIDExMSwgMSwgMTEsIDIwOCwgMjAsIDExMSwgMSwgMjE1LCAKLSAgICAzNiwgMTExLCAxLCAyMDIsIDExNiwgMTExLCAxLCAyMDIsIDksIDExMSwgMSwgMjAxLCAyMzUsIDExMSwgMSwgMjAxLCAyMTUsIAotICAgIDExMSwgMSwgMjUwLCAxMjYsIDIwMSwgMjM1LCAxMTEsIDEsIDIwMSwgMjA3LCAxMTEsIDEsIDIwMSwgMjE0LCAxMTEsIDEsIAotICAgIDIwNCwgMTExLCAxMTEsIDEsIDI1MSwgNzMsIDExMSwgMSwgMjM3LCAxMiwgMTExLCAxLCAyMjMsIDcwLCAxMTEsIDIsIDI1MCwgCi0gICAgNjUsIDExMSwgMiwgMjE2LCAxMzMsIDIwNSwgMTg0LCAxMTEsIDIsIDIxNiwgMTMzLCAyNTAsIDY1LCAxMTEsIDIyLCAyLCAKLSAgICA2MywgMTExLCAyMiwgMiwgMjUyLCAyNSwgMTExLCAyMiwgMiwgMjUxLCA2OSwgMTExLCAyMiwgMiwgMjUwLCAyMzEsIDExMSwgCi0gICAgMjIsIDIsIDI1MCwgMjIzLCAxMTEsIDIyLCAyLCA3OCwgMTExLCAyMiwgMiwgMjIwLCAxOCwgMTExLCAyMiwgMiwgMjA0LCAwLCAKLSAgICAxMTEsIDIyLCAyLCAyMDQsIDE0NCwgMTExLCAyMiwgMiwgNzQsIDExMSwgMjIsIDIsIDI0MSwgOTIsIDExMSwgMjIsIDIsIAotICAgIDI0MSwgNzgsIDExMSwgMjIsIDIsIDIyMCwgNzAsIDExMSwgMjIsIDIsIDc1LCAxMTEsIDIyLCAyLCAyMzUsIDE3MSwgMTExLCAKLSAgICAyMiwgMiwgMjM1LCAxNzAsIDExMSwgMjIsIDIsIDIzNSwgMTY5LCAxMTEsIDIyLCAyLCAyMzAsIDIzNCwgMTExLCAyMiwgMiwgCi0gICAgMjMxLCAxMTAsIDExMSwgMjIsIDIsIDIzMSwgODMsIDExMSwgMjIsIDIsIDIzMCwgMTk3LCAxMTEsIDIyLCAyLCAyMzEsIDI0LCAKLSAgICAxMTEsIDIyLCAyLCA2OCwgMTExLCAyMiwgMiwgMjA3LCAzOSwgMTExLCAyMiwgMiwgMjA3LCAzOCwgMTExLCAyMiwgMiwgCi0gICAgMjA3LCAzNywgMTExLCAyMiwgMiwgMjA2LCAxNzgsIDExMSwgMjIsIDIsIDIwNywgMjEsIDExMSwgMjIsIDIsIDIwNiwgMjQxLCAKLSAgICAxMTEsIDIyLCAyLCAyMDMsIDEyNCwgMTExLCAyMiwgMiwgMjAzLCAxMSwgMTExLCAyMiwgMiwgMjUxLCAxMDksIDExMSwgMjIsIAotICAgIDIsIDI1MSwgMTA1LCAxMTEsIDIyLCAyLCAyNDEsIDIxLCAxMTEsIDIyLCAyLCAyMTUsIDE4OSwgMjQxLCAyMSwgMTExLCAyMiwgCi0gICAgMiwgMjQxLCAyOCwgMTExLCAyMiwgMiwgMjE1LCAxODksIDI0MSwgMjgsIDExMSwgMjIsIDIsIDI1MSwgNjQsIDExMSwgMjIsIAotICAgIDIsIDI0MSwgMTQ1LCAxMTEsIDIyLCAyLCAyNTAsIDM0LCAxMTEsIDIyLCAyLCAyMTksIDIxNiwgMTExLCAyMiwgMiwgMjIzLCAKLSAgICAxNjMsIDExMSwgMjIsIDIsIDIyMiwgMjA1LCAxMTEsIDE0MywgMjE2LCAxNiwgMTExLCAxNDMsIDIwOCwgMTQ1LCAyMTYsIAotICAgIDE2LCAxMTEsIDE0MywgNTUsIDExMSwgMTQzLCA1NiwgMTExLCAxLCAyMDgsIDE1OSwgMTExLCAxLCAyMDgsIDE1OCwgMTExLCAKLSAgICAxLCAyMDgsIDE1NywgMTExLCAxLCAyMDgsIDE1NiwgMTExLCAxLCAyMDgsIDE1NSwgMTExLCAxLCAyMDgsIDE1NCwgMTExLCAKLSAgICAxLCAyMDgsIDE1MywgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNjAsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTU5LCAxMTEsIAotICAgIDEsIDIxNiwgMTMzLCAyMDgsIDE1NywgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTYsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgCi0gICAgMTU1LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1MywgNjcsIDEsIDI1MCwgMTI2LCA3NCwgMTcyLCAxLCAyNTAsIDEyNiwgCi0gICAgMjAzLCA1MiwgMTAwLCAxLCAyMzcsIDE3MSwgMTAwLCAxLCAyMDMsIDE5NiwgMTAwLCAxLCAyMTksIDE4NCwgMTAwLCAxLCAKLSAgICAyMTAsIDY5LCAxMDAsIDEsIDI0MCwgMTc0LCAxMDAsIDEsIDIzMCwgNTQsIDEwMCwgMSwgMTU5LCAxMDAsIDEsIDI0OSwgCi0gICAgMjU1LCAxMDAsIDEsIDI0NSwgNTEsIDEwMCwgMSwgMjA2LCAxNjQsIDEwMCwgMSwgMjM5LCA3NSwgMTAwLCAxLCAxNDYsIAotICAgIDEwMCwgMSwgMjE5LCAxODUsIDIyMywgMTYzLCAxMDAsIDEsIDI0NSwgNTIsIDE5NCwgMTAwLCAxLCAyNDAsIDE3NSwgMjIzLCAKLSAgICAxNjMsIDEwMCwgMSwgMjMwLCA1NSwgMjI2LCAxODUsIDEwMCwgMSwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgMjA5LCAxMTAsIAotICAgIDEwMCwgMSwgMjEyLCA0NSwgMjQ0LCAyLCAxMDAsIDEsIDI0NCwgMiwgMTAwLCAxLCAyMjksIDQ4LCAxMDAsIDEsIDIxMiwgCi0gICAgNDUsIDIzMCwgMTg0LCAxMDAsIDEsIDIzNiwgMjI1LCAxMDAsIDEsIDIyNywgMTYyLCAxMDAsIDEsIDIxNiwgNjIsIDEwMCwgCi0gICAgMSwgMjI2LCAxODUsIDEwMCwgMSwgMjIzLCAxNjMsIDEwMCwgMSwgMjMwLCAxODQsIDEwMCwgMSwgMTk0LCAxMDAsIDEsIAotICAgIDIyNiwgMTg2LCAyMjMsIDE2MywgMTAwLCAxLCAyMjMsIDE2NCwgMjI2LCAxODUsIDEwMCwgMSwgMjMwLCAxODUsIDIyNiwgCi0gICAgMTg1LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgMTg0LCAxMDAsIDEsIDIyNiwgMTg2LCAzLCAyNDMsIDg1LCAxMDAsIDEsIAotICAgIDIyMywgMTY0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAzLCAKLSAgICAxODcsIDIzMSwgNywgMjUsIDU1LCAxMDAsIDEsIDIxNSwgOTQsIDMsIDI0MywgODUsIDEwMCwgMSwgMjE1LCA5NCwgMywgNzAsIAotICAgIDU2LCAxMDAsIDEsIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMTk0LCAKLSAgICAxMDAsIDEsIDIxNSwgOTQsIDE5NCwgMTAwLCAxLCAyMjYsIDE4NiwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMjMsIDE2NCwgCi0gICAgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIAotICAgIDE4NSwgMTk0LCAxMDAsIDEsIDIzMCwgMTg1LCAyMTUsIDk0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjMsIAotICAgIDE2MywgMTAwLCAxLCAyMzAsIDE4NSwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMTAsIDY5LCAxMDAsIDEsIAotICAgIDIxNSwgOTQsIDIxMCwgNzAsIDE0NiwgMTAwLCAxLCAyMTUsIDk0LCAyMTksIDE4NCwgMTAwLCAxLCAyMTUsIDk0LCAyMTksIAotICAgIDE4NSwgMTQ2LCAxMDAsIDEsIDIxMCwgNzAsIDE5NCwgMTAwLCAxLCAyMTAsIDcwLCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAKLSAgICAyMDQsIDE0NCwgMTAwLCAxLCAyMDQsIDQwLCAxMDAsIDEsIDIwNCwgMTQ1LCAxNDYsIDEwMCwgMSwgMjE1LCA5NCwgMjIzLCAKLSAgICAxNjMsIDEwMCwgMSwgMjE1LCA5NCwgMjI2LCAxODUsIDEwMCwgMSwgMjMwLCA1NSwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgCi0gICAgMjM5LCA3NiwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCA1NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDU1LCAKLSAgICAxNDYsIDEwMCwgMSwgNjMsIDEwMCwgMSwgMjEyLCA0NSwgMjE5LCAxOTUsIDEwMCwgMSwgMjIwLCA5NywgMTAwLCAxLCA3OCwgCi0gICAgMTAwLCAxLCAyNTAsIDE3NiwgMTAwLCAxLCA3NSwgMTAwLCAxLCA3NCwgMTAwLCAxLCAyMzEsIDExMCwgMTAwLCAxLCAyMTIsIAotICAgIDIyOCwgNzUsIDEwMCwgMSwgMjA3LCAxNywgMTAwLCAxLCAyNDEsIDE2MSwgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDE0NywgCi0gICAgMTAwLCAxLCAyMTUsIDIwOSwgNzUsIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCAxNjEsIDEwMCwgMSwgMTYzLCA3NSwgMTAwLCAxLCAKLSAgICAyMDMsIDUyLCAxMDAsIDEsIDY4LCAxMDAsIDEsIDI0MCwgMjM4LCAxMDAsIDEsIDIwMywgMTQ3LCAxMDAsIDEsIDEwNiwgCi0gICAgMjIzLCAxNjMsIDEwMCwgMSwgMTYzLCA2OCwgMTAwLCAxLCAyMTUsIDIwOSwgNjgsIDEwMCwgMSwgMjA3LCAxOCwgMTAwLCAxLCAKLSAgICAyMTIsIDQ1LCA2OCwgMTAwLCAxLCAyMjAsIDE1LCAxMDAsIDEsIDIxOSwgMTk1LCAxMDAsIDEsIDIxOSwgMjE2LCAxMDAsIDEsIAotICAgIDIwNCwgMTExLCAxMDAsIDEsIDIwNCwgMCwgMTAwLCAxLCAyMDQsIDMwLCAxMDAsIDEsIDIwNCwgNTMsIDEwMCwgMSwgMjAzLCAKLSAgICAyMzAsIDEwMCwgMSwgMjIzLCA3MiwgNjgsIDEwMCwgMSwgMjIzLCA3MiwgNzgsIDEwMCwgMSwgMjIzLCA3MiwgNzUsIDEwMCwgCi0gICAgMSwgMjIzLCA3MiwgNjMsIDEwMCwgMSwgMjE4LCAyMzUsIDI1MCwgMjMxLCAxMDAsIDEsIDIxOCwgMjM1LCAyNTAsIDI0NywgCi0gICAgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDkyLCAxMDAsIDEsIDIxMiwgNDUsIDI1MCwgMjMxLCAxMDAsIDEsIDIxMiwgNDUsIAotICAgIDIyMCwgMzEsIDEwMCwgMSwgMTI1LCAyMjYsIDE4NSwgMTAwLCAyNTEsIDg4LCA0OSwgMjM2LCAxMDYsIDIxNCwgMTcyLCAKLSAgICAxMDAsIDI1MSwgODgsIDIyNCwgMTUwLCAyMzYsIDEwNiwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgNTAsIDIzNiwgMTA2LCAKLSAgICAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAxMjQsIDgwLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyMjQsIDE1MCwgODAsIAotICAgIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDEzOCwgODAsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIxNCwgCi0gICAgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIyNywgMjEzLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAKLSAgICAyMDksIDIyNiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMDksIDI0OCwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAxODgsIAotICAgIDExMywgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMzUsIDIwNiwgMTEzLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIwOSwgCi0gICAgMjI3LCAxMTMsIDEwMCwgMjUxLCA4OCwgMTM4LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDgsIDI0NCwgMTY1LCAxMDAsIAotICAgIDI1MSwgODgsIDEzOCwgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgMTM4LCAxNjMsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIAotICAgIDEzOCwgMjQzLCA4NSwgMTAwLCAyNTEsIDg4LCAxMzgsIDI0NiwgNjEsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMjcsIDExNCwgCi0gICAgMTAwLCAyNTEsIDg4LCAxMzgsIDIwNCwgNzUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDYsIDM4LCAxMDAsIDI1MSwgODgsIAotICAgIDEyNCwgMTY1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA4LCAyNDQsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIzNywgMjUzLCAKLSAgICAxMDAsIDI1MSwgODgsIDEyNCwgMTYzLCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAxMjQsIDI0MywgODUsIDEwMCwgMjUxLCAKLSAgICA4OCwgMTI0LCAyNDYsIDYxLCAxMDAsIDI1MSwgODgsIDEyNCwgMjI3LCAxMTQsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMDQsIAotICAgIDc1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA2LCAzOCwgMTAwLCAyNTEsIDg4LCAxMjQsIDQ3LCAxMDAsIDIsIDE1OCwgMywgCi0gICAgMjQ1LCAxMzAsIDEwMCwgMjA5LCA2OCwgMSwgMjE0LCAxNTAsIDEwMCwgNTIsIDgyLCAxMDAsIDIxNywgMTc5LCAyNDYsIAotICAgIDEyNiwgMjM5LCAxMDIsIDIxMSwgNjEsIDIxMiwgMjE1LCAyMzksIDE1OCwgMSwgMjE5LCAyMDEsIDIxMiwgMjE1LCAyMzksIAotICAgIDE1OCwgMjQ1LCAxOTAsIDIxOSwgMjAxLCAyMTIsIDIxNSwgMjM5LCAxNTgsIDEyMSwgMjExLCA3NSwgMjEyLCAyMTUsIDIzOSwgCi0gICAgMTU4LCAxMTIsIDIxMSwgNzUsIDYwLCAzMSwgMTYsIDIxNywgMTk1LCA2MCwgMzEsIDE2LCAyNDQsIDE0NiwgNjAsIDMxLCAKLSAgICAxNiwgMjE4LCAyMzksIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDI0MywgCi0gICAgMTcxLCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjQzLCAxNzEsIDYwLCAKLSAgICAzMSwgMTYsIDIyOSwgMjIxLCA2MCwgMzEsIDE2LCAyMTAsIDg2LCA2MCwgMzEsIDE2LCAyMTksIDgzLCA2MCwgMzEsIDE2LCAKLSAgICAyMDIsIDIxOSwgNjAsIDMxLCAxNiwgMjAyLCAyMjAsIDI0MywgMTcxLCA2MCwgMzEsIDE2LCAyMjgsIDIyNiwgNjAsIDMxLCAKLSAgICAxNiwgMjUwLCAxNzEsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyNDAsIDIwNiwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIwOSwgCi0gICAgMTYzLCA2MCwgMzEsIDE2LCAyMjksIDE3NiwgNjAsIDMxLCAxNiwgMjUwLCAxNjEsIDYwLCAzMSwgMTYsIDI1MCwgMTYyLCAKLSAgICAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjEwLCA5MywgNjAsIDMxLCAxNiwgMjA5LCA1MCwgNjAsIDMxLCAxNiwgMjIwLCA0MiwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzOCwgMjMsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMTcsIDE5NCwgNjAsIDMxLCAKLSAgICAxNiwgMjQ2LCAxOTAsIDYwLCAzMSwgMTYsIDIwNiwgNjIsIDYwLCAzMSwgMTYsIDIzMCwgMjA2LCAyNTAsIDEyNCwgNjAsIAotICAgIDMxLCAxNiwgMjI5LCAxNzgsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAotICAgIDIxNCwgMjEwLCA2MCwgMzEsIDE2LCAyMTksIDczLCA2MCwgMzEsIDE2LCAyMTEsIDg0LCAyNTAsIDE2NCwgNjAsIDMxLCAxNiwgCi0gICAgMjE5LCAxOTEsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMDYsIDcyLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjUwLCAxNjUsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyNTAsIDE1OSwgNjAsIDMxLCAxNiwgMjI5LCAzOCwgNjAsIDMxLCAxNiwgMjE2LCA2OSwgCi0gICAgNjAsIDMxLCAxNiwgMjE4LCAxNjUsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMDgsIDIxNywgNjAsIDMxLCAxNiwgMjUwLCAKLSAgICAyMjksIDYwLCAzMSwgMTYsIDIxNCwgMTUzLCA2MCwgMzEsIDE2LCAyMTAsIDk3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCi0gICAgMjEwLCA5NywgMjI0LCAyMjEsIDIxMSwgODIsIDYwLCAzMSwgMTYsIDIxOSwgMTg2LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCi0gICAgMjA5LCA4NiwgNjAsIDMxLCAxNiwgMjI3LCAyMDAsIDYwLCAzMSwgMTYsIDI0MiwgMiwgNjAsIDMxLCAxNiwgMjA4LCA4NywgCi0gICAgNjAsIDMxLCAxNiwgMjA5LCAxMzQsIDYwLCAzMSwgMTYsIDIyOCwgMjI5LCA2MCwgMzEsIDE2LCAyNTAsIDE3MSwgMjQwLCAKLSAgICAyMDYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzMSwgNjIsIDYwLCAKLSAgICAzMSwgMTYsIDIwOCwgNTcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjksIDIyNCwgMjA4LCA1NiwgNjAsIDMxLCAxNiwgCi0gICAgMjE5LCAxMSwgNjAsIDMxLCAxNiwgMjE3LCAxOTksIDYwLCAzMSwgMTYsIDIyOSwgNywgNjAsIDMxLCAxNiwgMjQ2LCAxMTAsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMTYsIDE3NywgNjAsIDMxLCAxNiwgMjE5LCA4NiwgMjUwLCAxMjQsIDYwLCAzMSwgCi0gICAgMTYsIDIxOSwgODQsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzUsIDE2MCwgNjAsIDMxLCAxNiwgMjIzLCA4MiwgNjAsIDMxLCAKLSAgICAxNiwgMjE4LCAyMTcsIDYwLCAzMSwgMTYsIDIyOSwgOCwgMjUxLCA5LCA2MCwgMzEsIDE2LCAyMDgsIDU3LCAyNTEsIDksIAotICAgIDYwLCAzMSwgMTYsIDIxMSwgNTUsIDYwLCAzMSwgMTYsIDIzNywgMjQwLCA2MCwgMzEsIDE2LCAyMzAsIDIwNiwgMjIyLCAKLSAgICAyMjYsIDYwLCAzMSwgMTYsIDIyMCwgNDIsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjIyLCAyMjYsIDYwLCAKLSAgICAzMSwgMTYsIDIxOCwgMjE2LCA2MCwgMzEsIDE2LCAyMjgsIDI0OCwgNjAsIDMxLCAxNiwgMjE4LCAyMTUsIDYwLCAzMSwgMTYsIAotICAgIDIyOCwgMjI4LCA2MCwgMzEsIDE2LCAyMTksIDEyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAKLSAgICAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjI5LCAxNzgsIDIyMiwgMjI3LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjAyLCAyMTcsIAotICAgIDYwLCAzMSwgMTYsIDI1MCwgMTYyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjUwLCAxNjMsIDIxMCwgOTQsIDIyMiwgMjI2LCAKLSAgICA2MCwgMzEsIDE2LCAyMDIsIDIxOCwgNjAsIDMxLCAxNiwgMjI4LCAyMjcsIDYwLCAzMSwgMTYsIDI0MSwgMTIxLCA2MCwgMzEsIAotICAgIDE2LCAyNDYsIDE5MSwgNjAsIDMxLCAxNiwgMjI0LCAxMjIsIDIzMCwgMjA1LCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyMjIsIAotICAgIDIyNiwgNjAsIDMxLCAxNiwgMjE4LCAxNjUsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTcsIDIwMCwgMjIyLCAyMjYsIDYwLCAKLSAgICAzMSwgMTYsIDIyMCwgMzgsIDYwLCAzMSwgMTYsIDI1MCwgMTg5LCA2MCwgMzEsIDE2LCAyMjYsIDE5NSwgNjAsIDMxLCAxNiwgCi0gICAgMjE5LCA4NCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIxOSwgODYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDAsIDI0NCwgCi0gICAgMjE5LCA4NSwgNjAsIDMxLCAxNiwgMjI4LCAxMzUsIDYwLCAzMSwgMTYsIDI1MCwgMTkwLCA2MCwgMzEsIDE2LCAyMDgsIDU3LCAKLSAgICAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQxLCAxMjQsIDYwLCAzMSwgMTYsIDIxMCwgOTcsIDIyMiwgMjI2LCA2MCwgMzEsIAotICAgIDE2LCAyMTAsIDg3LCA2MCwgMzEsIDE2LCAyNDYsIDExMCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MSwgNDMsIDYwLCAzMSwgCi0gICAgMTYsIDIxNCwgMTU0LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjAzLCAxNjMsIDIyOSwgMzgsIDYwLCAzMSwgMTYsIDIwOCwgCi0gICAgNTQsIDYwLCAzMSwgMTYsIDIxNywgMjAxLCA2MCwgMzEsIDE2LCAyMDgsIDU4LCA2MCwgMzEsIDE2LCAyMDgsIDU1LCA2MCwgCi0gICAgMzEsIDE2LCAyMTcsIDE5OCwgNjAsIDMxLCAxNiwgMjA4LCA1MywgNjAsIDMxLCAxNiwgMjE3LCAxOTcsIDYwLCAzMSwgMTYsIAotICAgIDIzOCwgMjIsIDYwLCAzMSwgMTYsIDI1MCwgMTE2LCA2MCwgMzEsIDE2LCAyNDAsIDI0NCwgMjUwLCAxMTYsIDYwLCAzMSwgCi0gICAgMTYsIDIxOSwgMTg2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjA5LCA4NSwgMjQxLCAxLCA2MCwgMzEsIDE2LCAyMDksIDg1LCAKLSAgICAyNDAsIDIwNSwgNjAsIDMxLCAxNiwgMjA5LCA4NywgMjUwLCAxNjYsIDYwLCAzMSwgMTYsIDIwOSwgNzksIDIzMCwgMTksIAotICAgIDI1MCwgMTU4LCA2MCwgMzEsIDE2LCAyMjksIDIyMywgNjAsIDMxLCAxNiwgMjQxLCA4MCwgNjAsIDMxLCAxNiwgMjAzLCAxNCwgCi0gICAgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIwMywgMTQsIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMTEsIDgzLCA2MCwgMzEsIDE2LCAKLSAgICAyMjksIDM5LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjQzLCAxNzIsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAyNTEsIDksIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAyMjIsIDIyNiwgCi0gICAgNjAsIDMxLCAxNiwgMjUwLCAxNjUsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNTAsIDE2NywgNjAsIDMxLCAxNiwgMjQzLCAKLSAgICAxNzEsIDYwLCAzMSwgMTYsIDIwOCwgNjgsIDYwLCAzMSwgMTYsIDIwOSwgMTI1LCA2MCwgMzEsIDE2LCAyMjgsIDI1MiwgNjAsIAotICAgIDMxLCAxNiwgMjI3LCAyMDUsIDI0MSwgNzMsIDI0NiwgMTAwLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjQyLCAzLCAyNDYsIAotICAgIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIwOCwgNzEsIDI0NiwgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjA5LCAKLSAgICAxMzYsIDI0NiwgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjMxLCA1NywgMjQ2LCAxMDAsIDYwLCAzMSwgMTYsIDIzOCwgCi0gICAgMjMsIDIyMiwgMjI3LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjM4LCAyMywgMjE5LCA3NCwgMjUwLCAxMTIsIDYwLCAzMSwgCi0gICAgMTYsIDIzOCwgMjMsIDIxOSwgNzQsIDI0NCwgNiwgNjAsIDMxLCAxNiwgMjQzLCAxOTYsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAKLSAgICAyMTksIDc0LCAyNTAsIDExMywgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAyMTksIDc0LCAyNTAsIDExMywgCi0gICAgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAyMTksIDc0LCAyNDQsIDYsIDYwLCAzMSwgMTYsIDIwOCwgNzYsIDYwLCAKLSAgICAzMSwgMTYsIDI1MCwgMTE3LCA2MCwgMzEsIDE2LCAyMzEsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxOSwgNjAsIDMxLCAxNiwgCi0gICAgMjUxLCA3NSwgMjE4LCA1MiwgMjUwLCAxMTgsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDI1MCwgMTE1LCA2MCwgMzEsIDE2LCAKLSAgICAyNTEsIDc1LCAyNTAsIDExOCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjI0LCAyMTUsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIAotICAgIDIyNCwgMjI2LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMzgsIDI0LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMzgsIDIxLCA2MCwgCi0gICAgMzEsIDE2LCAyNTEsIDc1LCAyMTgsIDUyLCAyMzgsIDI0LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMTcsIDIwNywgMjM1LCAKLSAgICAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDI1MSwgMTEsIDIxNywgMjA3LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCAKLSAgICA4NCwgMjQ0LCA1LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjUxLCAxMSwgMjQ0LCA1LCAyMzUsIDE1OCwgNjAsIAotICAgIDMxLCAxNiwgMjI1LCA4NCwgMjA4LCA2MywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIwOCwgNzcsIDYwLCAzMSwgCi0gICAgMTYsIDIyNSwgODQsIDIwOSwgMTMwLCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjA5LCAxMzAsIDIyNywgMjA5LCAKLSAgICAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjI3LCAyMDksIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAKLSAgICAyMTgsIDk1LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjMwLCAyMTMsIDIwOSwgMTU2LCAyMzUsIDE1OSwgNjAsIDMxLCAxNiwgCi0gICAgMjUwLCAxNjMsIDIwOSwgMTU2LCAyMzUsIDE1OSwgNjAsIDMxLCAxNiwgMjQwLCA4MCwgMjA5LCAxMjcsIDYwLCAzMSwgMTYsIAotICAgIDI0MCwgODAsIDIyNCwgNDYsIDYwLCAzMSwgMTYsIDI0MCwgODAsIDI0MywgMjAyLCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAKLSAgICAyMDYsIDY2LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjE3LCAyMDYsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAKLSAgICAyMjUsIDg0LCAyMTgsIDk1LCAyMDksIDEzMCwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzOCwgMTksIDIyMywgMTY0LCAyNTAsIAotICAgIDE2NiwgNjAsIDMxLCAxNiwgMjM4LCAxOSwgMjIzLCAxNjQsIDI0MywgMTcwLCA2MCwgMzEsIDE2LCAyNDEsIDkwLCAyMzAsIAotICAgIDE5LCAyMzksIDExMCwgMjA1LCAxNzEsIDYwLCAzMSwgMTYsIDIzMSwgNjMsIDYwLCAzMSwgMTYsIDIzMSwgNjEsIDYwLCAzMSwgCi0gICAgMTYsIDIzOSwgMTEwLCAyNTAsIDEyNSwgMjQ0LCA0LCAyMzUsIDE1NywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAKLSAgICAxODUsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjIzLCA4MiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIyMywgCi0gICAgNzcsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyMzksIAotICAgIDExMCwgMjEyLCA2NCwgMjQzLCAyMTYsIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyOSwgCi0gICAgMjAxLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIwMiwgMTcsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIAotICAgIDIxNywgMjIyLCAxMDEsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyMiwgMTAxLCAyNTAsIAotICAgIDIwMiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIyNSwgMTI4LCAyNDYsIDEwMiwgMjQzLCAyMDIsIDYwLCAzMSwgMTYsIDIzOSwgCi0gICAgMTEwLCAyMjUsIDEyOCwgMjQ2LCAxMDIsIDIyNCwgNDYsIDYwLCAzMSwgMTYsIDI0MCwgMjcsIDIxMiwgNjQsIDI0NiwgMTAyLCAKLSAgICAyMDYsIDY1LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjEyLCA2NCwgMjQ2LCAxMDIsIDIxMCwgOTgsIDYwLCAzMSwgMTYsIAotICAgIDIzOSwgMTEwLCAyMjIsIDIyOSwgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIDIwMSwgMjQxLCA2MCwgMzEsIDE2LCAyNDYsIDEwMywgCi0gICAgMjI5LCAzNywgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIDIxMSwgMjE5LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjM1LCAyMDYsIAotICAgIDIwMywgMTMsIDIwOSwgMTMxLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQxLCA5MSwgMjUwLCAxOTEsIDYwLCAzMSwgMTYsIAotICAgIDIwMywgMTMsIDIwOCwgNjQsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyMDgsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgCi0gICAgMjA5LCAxMzEsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyNTAsIDE2OCwgMjQyLCAzLCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgCi0gICAgMjQzLCAyMTAsIDIyNCwgNDQsIDIwOSwgMTM1LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDI0MywgMTkzLCAKLSAgICAyNDAsIDIxOCwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyMDgsIDc0LCAyMjAsIDQ4LCAyNDMsIDEwNSwgNjAsIAotICAgIDMxLCAxNiwgMjAzLCAxMywgMjUwLCAxNjgsIDI0MiwgMywgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDIyNCwgCi0gICAgNDQsIDIwOSwgMTM1LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjQzLCAxOTMsIDI0MCwgMjE4LCAyNDMsIAotICAgIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjA4LCA3NCwgMjIwLCA0OCwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIzOCwgCi0gICAgMTc1LCAyNDMsIDIwOSwgNjAsIDMxLCAxNiwgMjM4LCAxNzUsIDIwMywgMTIsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyNTAsIAotICAgIDE2OCwgMjI0LCAxMjMsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyNTAsIDE2OCwgMjI0LCAyNTUsIDYwLCAzMSwgMTYsIDI0MywgCi0gICAgMjE4LCAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjQzLCAyMTgsIDIwOSwgNzcsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIAotICAgIDc3LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCA3OCwgMjQzLCAxNTUsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIAotICAgIDc4LCAyMDgsIDY1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCA3OCwgMjA5LCAxMjMsIDYwLCAzMSwgMTYsIDIxMiwgCi0gICAgMTMwLCAyNTAsIDg4LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjUwLCA4OSwgMjQzLCAxNTUsIDYwLCAzMSwgMTYsIDIxMiwgCi0gICAgMTMwLCAyNTAsIDg5LCAyMDgsIDY1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjUwLCA4OSwgMjA5LCAxMjMsIDYwLCAzMSwgCi0gICAgMTYsIDI0MywgMTk0LCAyMzgsIDE1NiwgNjAsIDMxLCAxNiwgMjQzLCAyMDEsIDIxOSwgMjE2LCA2MCwgMzEsIDE2LCAyMTEsIAotICAgIDcxLCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMTg1LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjA1LCAxNzEsIDYwLCAzMSwgCi0gICAgMTYsIDI1MCwgMTA5LCAyMzksIDgsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjUwLCAKLSAgICAxMDksIDIyOSwgMjAxLCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjAyLCAxNywgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIyMiwgCi0gICAgMTAwLCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIDIyNCwgMjI1LCA2MCwgMzEsIDE2LCAyMjksIDE3OCwgMjIyLCAKLSAgICAyMjcsIDIyNCwgMjI1LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMjksIAotICAgIDE3OCwgMjIyLCAyMjcsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMjksIDM5LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjM4LCAKLSAgICAyMywgMjIyLCAyMjcsIDIyOSwgMjIwLCAzMSwgMTYsIDIxMiwgMTIwLCAyNDgsIDIyNiwgMzEsIDE2LCA1MiwgMjQ4LCAyMjYsIAotICAgIDMxLCAxNiwgNDYsIDI0OCwgMjI2LCAzMSwgMTYsIDIxNiwgNzQsIDQ2LCAyNDgsIDIyNiwgMzEsIDE2LCAyNDQsIDE0MywgCi0gICAgMjQ4LCAyMjYsIDMxLCAxNiwgMjEyLCAyMjgsIDI0OCwgMjI2LCAzMSwgMTYsIDQ5LCAyMTYsIDEwMSwgNTQsIDMxLCAxNiwgCi0gICAgNTAsIDIxNiwgMTAxLCA1NCwgMzEsIDE2LCAyMTYsIDEwMSwgMjQzLCA4MywgMzEsIDE2LCAyNDQsIDE4NSwgMjE0LCAxNTcsIAotICAgIDMxLCAxNiwgMjQ0LCAyMTMsIDI0NywgNDUsIDMxLCAxNiwgMjE0LCAxNTcsIDMxLCAxNiwgMjQ1LCAyNTAsIDMxLCAxNiwgCi0gICAgMjE2LCA5OSwgMjQwLCAxNSwgMzEsIDE2LCAyMTYsIDk5LCAyNDAsIDE0LCAzMSwgMTYsIDIxNiwgOTksIDI0MCwgMTMsIDMxLCAKLSAgICAxNiwgMjQwLCAzNiwgMzEsIDE2LCAyNDAsIDM3LCA1NiwgMzEsIDE2LCAyNDcsIDIxNiwgODIsIDMxLCAxNiwgMjQ3LCA4MiwgCi0gICAgMzEsIDE2LCAyNDcsIDIyOCwgMzEsIDE2LCAxNTUsIDMxLCAxNiwgMjIwLCAyOCwgMjExLCAxMDIsIDMxLCAxNiwgMjA3LCAKLSAgICAxMzMsIDIxMSwgMTAyLCAzMSwgMTYsIDIwOSwgMjksIDIxMSwgMTAyLCAzMSwgMTYsIDIzOSwgMTQ2LCAyMTEsIDEwMiwgMzEsIAotICAgIDE2LCAyMzksIDIzMiwgMjExLCAxMDIsIDMxLCAxNiwgMjEyLCA4NywgMjExLCAxMDIsIDMxLCAxNiwgMjEyLCA4NSwgMjM5LCAKLSAgICAxMjcsIDMxLCAxNiwgMjM5LCAxNDQsIDIzOSwgMTI3LCAzMSwgMTYsIDIzOSwgNzYsIDI0NiwgMzAsIDMxLCAxNiwgMjM5LCAKLSAgICA3NiwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI1MSwgMCwgMzEsIDE2LCAyMzksIDc2LCAyNDYsIDMxLCAyMTksIDIxOCwgMjQ4LCAKLSAgICAyMTEsIDMxLCAxNiwgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAxNiwgMjQwLCAxNzUsIDI0NiwgMzAsIDMxLCAxNiwgMjQwLCAKLSAgICAxNzUsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNTEsIDAsIDMxLCAxNiwgMjQwLCAxNzUsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNDgsIAotICAgIDIxMSwgMzEsIDE2LCAyNDIsIDQ3LCAyNDYsIDI5LCAzMSwgMTYsIDI0MiwgNDcsIDI0NiwgMjgsIDMxLCAxNiwgMjIzLCAKLSAgICAyMjYsIDIyNSwgMTksIDIxNiwgODUsIDMxLCAxNiwgNTIsIDIxMywgNTYsIDMxLCAxNiwgNTIsIDIzOSwgMjE2LCAzMSwgMTYsIAotICAgIDIzOSwgMjE3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMzksIDIxNywgMjQyLCA3MCwgMzEsIDE2LCAyMjMsIDY2LCAyMDYsIDIyNCwgCi0gICAgMzEsIDE2LCAyMjMsIDY2LCAyNDIsIDcwLCAzMSwgMTYsIDIxMywgNTcsIDIwNiwgMjI0LCAzMSwgMTYsIDIxMywgNTcsIAotICAgIDI0MiwgNzAsIDMxLCAxNiwgMjE3LCA1NiwgMTQzLCAyMTMsIDU2LCAzMSwgMTYsIDIxNywgNTYsIDE0MywgMjM5LCAyMTYsIAotICAgIDMxLCAxNiwgMjQ1LCAyMzAsIDIwOCwgMjIxLCAzMSwgMTYsIDI0NSwgNzgsIDIwOCwgMjIxLCAzMSwgMTYsIDIxOSwgMjE4LCAKLSAgICAyNTEsIDAsIDMxLCAxNiwgMjE5LCAyMTgsIDI0OCwgMjExLCAzMSwgMTYsIDIxNywgMzcsIDI1MSwgMCwgMzEsIDE2LCAyMTcsIAotICAgIDM3LCAyNDgsIDIxMSwgMzEsIDE2LCAyMjMsIDIyOSwgMjE2LCA4NSwgMzEsIDE2LCAyMDQsIDMxLCAyMTYsIDg1LCAzMSwgCi0gICAgMTYsIDE2MiwgMjE2LCA4NSwgMzEsIDE2LCAyMTcsIDU2LCAyMTYsIDg1LCAzMSwgMTYsIDI0MSwgMTM5LCAyMTYsIDg1LCAKLSAgICAzMSwgMTYsIDIxMiwgODEsIDIxNiwgODUsIDMxLCAxNiwgMjA5LCA1MSwgMjE2LCA4NSwgMzEsIDE2LCAyMTIsIDczLCAyMTYsIAotICAgIDg1LCAzMSwgMTYsIDExOCwgMjM2LCAxMiwgMjA3LCAxNDksIDIxNiwgODUsIDMxLCAxNiwgMjAzLCAxOTcsIDIyMSwgMTU2LCAKLSAgICAzMSwgMTYsIDkxLCAyMjEsIDE1NiwgMzEsIDE2LCAyNDYsIDYyLCAyMDMsIDE5NywgMjIxLCAxNTYsIDMxLCAxNiwgNTEsIAotICAgIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgMTYsIDUxLCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIAotICAgIDE1NywgMTEyLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMTIsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCAKLSAgICA4NiwgMjIxLCAxNTcsIDQ5LCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA0OSwgMjQ4LCA0MywgMzEsIAotICAgIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNTAsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDUwLCAyNDgsIAotICAgIDQzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMjEsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIAotICAgIDEyMSwgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTEyLCA1MCwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIAotICAgIDg2LCAyMjEsIDE1NywgMTEyLCA1MCwgMjQ4LCA0MywgMzEsIDE2LCAyMjQsIDMwLCAyMjEsIDE1NywgMjA0LCAzMywgMzEsIAotICAgIDE2LCAyMjQsIDMwLCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDgzLCAyMjEsIDE1NywgMTIxLCAyMDQsIDMzLCAKLSAgICAzMSwgMTYsIDIwOCwgODMsIDIyMSwgMTU3LCAxMjEsIDI0OCwgNDMsIDMxLCAxNiwgMjE5LCA3NywgMjIxLCAxNTYsIDMxLCAKLSAgICAxNiwgMjA1LCAxODMsIDIyMSwgMTU2LCAzMSwgMTYsIDIyMSwgMTU3LCAyNDgsIDQzLCAzMSwgMTYsIDIyMSwgNDksIDIyMSwgCi0gICAgMTU2LCAzMSwgMTYsIDI0NiwgMSwgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAxNiwgMjQ2LCAxLCAyMjEsIDE1NywgMjQ4LCAKLSAgICA0MywgMzEsIDE2LCAyNDcsIDIxNCwgMzEsIDE2LCAyMDQsIDMxLCAyMjEsIDE2MCwgMzEsIDE2LCAxNjIsIDIyMSwgMTYwLCAKLSAgICAzMSwgMTYsIDIxNywgNTYsIDIyMSwgMTYwLCAzMSwgMTYsIDI0MSwgMTM5LCAyMjEsIDE2MCwgMzEsIDE2LCAyMTIsIDgxLCAKLSAgICAyMjEsIDE2MCwgMzEsIDE2LCAyMDksIDUxLCAyMjEsIDE2MCwgMzEsIDE2LCAyMTIsIDczLCAyMjEsIDE2MCwgMzEsIDE2LCAKLSAgICAxMTgsIDIzNiwgMTIsIDIwNywgMTQ5LCAyMjEsIDE2MCwgMzEsIDE2LCAzOSwgMjExLCA3NywgMzEsIDE2LCAzOSwgMjExLCAKLSAgICAxODQsIDIxMSwgNzcsIDMxLCAxNiwgMzksIDIwOCwgOTQsIDMxLCAxNiwgMzksIDIwOCwgOTMsIDMxLCAxNiwgMzksIDIwOCwgCi0gICAgOTIsIDMxLCAxNiwgMjQwLCAwLCAyMDgsIDk0LCAzMSwgMTYsIDI0MCwgMCwgMjA4LCA5MywgMzEsIDE2LCAyNDAsIDAsIAotICAgIDIwOCwgOTIsIDMxLCAxNiwgMzksIDI1MCwgMzEsIDI0MywgODUsIDMxLCAxNiwgMzksIDIzOSwgMjI0LCAzMSwgMTYsIDM5LCAKLSAgICAyMzksIDIyMywgMzEsIDE2LCAzOSwgMjM5LCAyMjIsIDMxLCAxNiwgMzksIDIzOSwgMjIxLCAzMSwgMTYsIDM5LCAyMzksIAotICAgIDIyMCwgMzEsIDE2LCAyNDgsIDE0MiwgMjQ4LCAxNTksIDMxLCAxNiwgMjQxLCA4NCwgMjQ4LCAxNTksIDMxLCAxNiwgMjQ4LCAKLSAgICAxNDIsIDIwOCwgMjUwLCAzMSwgMTYsIDI0MSwgODQsIDIwOCwgMjUwLCAzMSwgMTYsIDI0OCwgMTQyLCAyMTIsIDM3LCAzMSwgCi0gICAgMTYsIDI0MSwgODQsIDIxMiwgMzcsIDMxLCAxNiwgMjQ4LCAxNDIsIDIxOCwgMTc0LCAzMSwgMTYsIDI0MSwgODQsIDIxOCwgCi0gICAgMTc0LCAzMSwgMTYsIDM5LCAyNTEsIDEzOCwgMzEsIDE2LCAzOSwgMjExLCAxMDUsIDMxLCAxNiwgMzksIDIwOSwgMTQwLCAKLSAgICAzMSwgMTYsIDM5LCAyMTEsIDEwNiwgMzEsIDE2LCAzOSwgMjI1LCA5NiwgMzEsIDE2LCAzOSwgMjI1LCA5NSwgMzEsIDE2LCAKLSAgICAzOSwgMjUxLCAxMzcsIDMxLCAxNiwgMzksIDIyNywgMiwgMzEsIDE2LCAyNTAsIDEwMCwgMjA2LCAyMjQsIDMxLCAxNiwgCi0gICAgMjUwLCAxMDAsIDI0MiwgNzAsIDMxLCAxNiwgMzksIDI0MywgMTAwLCAzMSwgMTYsIDM5LCAyMTUsIDI0OSwgMzEsIDE2LCAKLSAgICAzOSwgMjM5LCAyMDYsIDMxLCAxNiwgMzksIDIxMiwgMzMsIDMxLCAxNiwgMzksIDI0OCwgMTIwLCAzMSwgMTYsIDM5LCA1MiwgCi0gICAgMjA4LCAxNTAsIDMxLCAxNiwgMzksIDIwOCwgNzAsIDIwOCwgMTUwLCAzMSwgMTYsIDIxNSwgMjU0LCAzMSwgMTYsIDIxMSwgCi0gICAgMCwgMzEsIDE2LCAyMDIsIDE1OSwgMzEsIDE2LCAyMTgsIDE2NiwgMzEsIDE2LCAyMjQsIDIwNiwgMzEsIDE2LCAyMzksIAotICAgIDE1NSwgMzEsIDE2LCAyNDUsIDE0MCwgMzEsIDE2LCAyNDQsIDYyLCAzMSwgMTYsIDIzOCwgMTQsIDIyMSwgMTYxLCAyMTIsIAotICAgIDU3LCAzMSwgMTYsIDIzOCwgMTQsIDIyMSwgMTYxLCAyMjEsIDE5MiwgMjEyLCA1NywgMzEsIDE2LCAyMDgsIDEyMCwgMzEsIAotICAgIDE2LCAyMDcsIDE3NSwgMzEsIDE2LCAyMzAsIDIzOSwgMjA3LCAxNzUsIDMxLCAxNiwgMjA3LCAxNzYsIDIxMiwgNTcsIDMxLCAKLSAgICAxNiwgMjA3LCAxNzYsIDIwNiwgMjI0LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDMxLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIAotICAgIDI4LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI3LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI2LCAzMSwgMTYsIDIxOSwgCi0gICAgMjM0LCAyMTEsIDI1LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI0LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDIzLCAzMSwgCi0gICAgMTYsIDIxOSwgMjM0LCAyMTEsIDIyLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDIxLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIAotICAgIDMwLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI5LCAzMSwgMTYsIDIzNywgNzUsIDMxLCAxNiwgMjIyLCAyMzgsIDMxLCAxNiwgCi0gICAgMjQxLCA4NCwgNzYsIDIxMSwgNjcsIDMxLCAxNiwgMjQ0LCA1NSwgMjEyLCA1NywgMzEsIDE2LCAzOSwgMTIxLCAyNDcsIAotICAgIDI0MCwgMzEsIDE2LCAzOSwgMTEyLCAyNDcsIDI0MCwgMzEsIDE2LCAzOSwgMjM3LCA4OCwgMzEsIDE2LCAzOSwgMjEyLCAyMywgCi0gICAgMjE4LCA5OSwgMzEsIDE2LCAyMTksIDI4LCA4MiwgMzEsIDE2LCAyMTksIDI4LCAxMTIsIDgyLCAzMSwgMTYsIDE2MiwgMjE5LCAKLSAgICAyOCwgODIsIDMxLCAxNiwgMjM4LCA0NywgMjA2LCAyMjQsIDMxLCAxNiwgMjM4LCA0NywgMjQyLCA3MCwgMzEsIDE2LCAzLCAKLSAgICAyMzksIDI1NSwgMzEsIDE2LCAyNDQsIDE2OCwgMzEsIDE2LCAyNDQsIDE2OSwgMjUxLCAxNCwgMzEsIDE2LCAyMjUsIDY1LCAKLSAgICAzMSwgMTYsIDIyNywgMjAsIDMxLCAxNiwgMjQ3LCAyMTEsIDMxLCAxNiwgMjEzLCAxNDcsIDIwNCwgMzMsIDMxLCAxNiwgCi0gICAgMjEzLCAxNDcsIDI0OCwgNDMsIDMxLCAxNiwgMjI0LCAxMDYsIDMxLCAxNiwgMjI0LCAxMDcsIDI0OCwgNDMsIDMxLCAxNiwgCi0gICAgMjEzLCAxNDEsIDIwNCwgMzMsIDMxLCAxNiwgMjEzLCAxNDEsIDI0OCwgNDMsIDMxLCAxNiwgMjM5LCA5MywgMjA0LCAzMywgCi0gICAgMzEsIDE2LCAyMzksIDkzLCAyNDgsIDQzLCAzMSwgMTYsIDIyNywgMjEsIDIxOCwgMjQ0LCAyMTYsIDg1LCAzMSwgMTYsIAotICAgIDIyNywgMjEsIDIzMSwgNTQsIDIxNiwgODUsIDMxLCAxNiwgMjQ3LCAyMTIsIDIxNiwgODUsIDMxLCAxNiwgMjEzLCAxNDcsIAotICAgIDIxNiwgODUsIDMxLCAxNiwgMjI0LCAxMDcsIDIxNiwgODUsIDMxLCAxNiwgMjEzLCAxNDEsIDIxNiwgODUsIDMxLCAxNiwgCi0gICAgMjA5LCAxNTQsIDIxOCwgMjQyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIxOCwgMjQzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMTgsIAotICAgIDI0MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDUzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMTgsIDI0MiwgMjQ1LCAxMDQsIAotICAgIDIxNywgMjE2LCAyMTgsIDI0NCwgMjQzLCAxODEsIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIAotICAgIDIxNiwgMjE4LCAyNDMsIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1MywgCi0gICAgMzEsIDE2LCAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE4MSwgMzEsIDE2LCAKLSAgICAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE4MCwgMzEsIDE2LCAyMDksIAotICAgIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE3OSwgMzEsIDE2LCAyNDUsIDEzMywgCi0gICAgMzEsIDE2LCAyMzcsIDI0MywgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAxNiwgMjM3LCAyNDMsIDI0MCwgMTc1LCAyNDYsIDMwLCAKLSAgICAzMSwgMTYsIDUxLCAyNDksIDI1NSwgMzEsIDE2LCAyMDUsIDIwMywgMzEsIDE2LCAyMTgsIDY2LCAzMSwgMTYsIDI0NiwgMjEsIAotICAgIDMxLCAxNiwgMjE0LCAyMDAsIDMxLCAxNiwgMjQ2LCAyNSwgMzEsIDE2LCAyMDgsIDEzOCwgMzEsIDE2LCAyMTgsIDM2LCAzMSwgCi0gICAgMTYsIDIxOCwgMzcsIDIzOSwgMjA5LCAzMSwgMTYsIDIxNCwgMjAxLCAyMzksIDIwOSwgMzEsIDE2LCAyMDgsIDEzOSwgMjE2LCAKLSAgICA4MiwgMzEsIDE2LCAyMTgsIDIyNSwgMjEwLCAyNDcsIDMxLCAxNiwgMjI5LCA5MCwgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAKLSAgICAxNiwgMjI5LCA5MCwgMjQxLCA4NCwgNzYsIDIxOCwgMTU5LCAzMSwgMTYsIDIyOSwgOTAsIDQ2LCAyMjEsIDE2MCwgMzEsIAotICAgIDE2LCAyMjksIDkwLCAyMTYsIDE1MCwgODIsIDMxLCAxNiwgMjI5LCA5MCwgMjA0LCAzMSwgMjIxLCAxNjAsIDMxLCAxNiwgCi0gICAgMjI5LCA5MCwgMTYyLCAyMjEsIDE2MCwgMzEsIDE2LCAyMjksIDkwLCAyMTcsIDU2LCAyMjEsIDE2MSwgMjExLCA3OCwgMjQyLCAKLSAgICA3MCwgMzEsIDE2LCAyMjksIDkwLCAyMTcsIDU2LCAyMjEsIDE2MSwgMjExLCA3OCwgMjA2LCAyMjQsIDMxLCAxNiwgMjI5LCAKLSAgICA5MCwgMjQxLCAxMzksIDIyMSwgMTYxLCAyMTEsIDc4LCAyNDIsIDcwLCAzMSwgMTYsIDIyOSwgOTAsIDI0MSwgMTM5LCAyMjEsIAotICAgIDE2MSwgMjExLCA3OCwgMjA2LCAyMjQsIDMxLCAxNiwgMjI5LCA5MCwgMjM5LCAyMTcsIDU0LCAzMCwgMjA1LCAxODgsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDE0OCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTI3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEyMCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxMTIsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA2LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNSwgCi0gICAgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDQsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTAzLCAzMCwgCi0gICAgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDYsIDMwLCAyMDUsIAotICAgIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ1LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NCwgMzAsIDIwNSwgMTg4LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxNDMsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQyLCAzMCwgMjA1LCAxODgsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDE0MSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDAsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTM5LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzOCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxMzYsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM1LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNCwgCi0gICAgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzMsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTMyLCAzMCwgCi0gICAgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDExMSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMTAsIDMwLCAyMDUsIAotICAgIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA5LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwOCwgMzAsIDIwNSwgMTg4LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxMDcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0OCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTM3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExMiwgCi0gICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDQsIDMwLCAyMzEsIAotICAgIDUsIDIyMSwgMTY0LCAyMTAsIDE0NiwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTQ1LCAzMCwgMjMxLCA1LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxNDQsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0MywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTQwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzOCwgMzAsIAotICAgIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzIsIDMwLCAyMzEsIDUsIAotICAgIDIyMSwgMTY0LCAyMTAsIDEzMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMjksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyOCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI2LCAKLSAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNCwgMzAsIDIzMSwgCi0gICAgNSwgMjIxLCAxNjQsIDIxMCwgMTIzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjIsIDMwLCAyMzEsIDUsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDEyMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxMTgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE2LCAzMCwgCi0gICAgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNCwgMzAsIDIzMSwgNSwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTEzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDExMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDgsIAotICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNywgMzksIDMwLCAzMSwgMjA4LCA2NiwgMzksIDMwLCAzMSwgMjA5LCAKLSAgICAxMjQsIDM5LCAzMCwgMzEsIDIxOCwgMjUzLCAzMCwgMzEsIDIyNywgMjA0LCAyMjQsIDQ1LCAzNSwgMjQxLCAxNzksIDI0MywgCi0gICAgMTk1LCAzNSwgMjM3LCA1MCwgMjQxLCAxNzksIDI0MywgMTk1LCAzNSwgMjM2LCAxNiwgMjQxLCAxNzksIDI0MywgMTk1LCAKLSAgICAzNSwgMjQxLCAxNzgsIDIzNywgNTEsIDI0MywgMTk1LCAzNSwgMjQxLCAxNzgsIDIzNiwgMTUsIDI0MywgMTk1LCAzNSwgCi0gICAgMjQxLCAxNzksIDIwOSwgMTI2LCAzNSwgMjQ2LCAyMTcsIDIwOSwgMTI2LCAzNSwgMjM5LCAxMDIsIDI0NiwgNjEsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjI0LCA5OCwgMjA5LCAxMjYsIDM1LCAyNDgsIDIyMSwgMjA5LCAxMjYsIDM1LCAyMjksIDE5NSwgMjEyLCAKLSAgICAzNiwgMjA5LCAxMjYsIDM1LCAyNDUsIDE4NSwgMjA5LCAxMjYsIDM1LCAyNTAsIDc3LCAyMDksIDEyNiwgMzUsIDIxOSwgCi0gICAgMjUwLCAyMDksIDEyNiwgMzUsIDI0NywgMjIxLCAyMTksIDIxMSwgMjA5LCAxMjYsIDM1LCAyNDQsIDU3LCAyMTksIDI0NSwgCi0gICAgMjQzLCAxNDgsIDIwOSwgMTI2LCAzNSwgMjQzLCAxNDUsIDIwOSwgMTI2LCAzNSwgMjAyLCAyMjUsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjMxLCA0MCwgMjA5LCAxMjYsIDM1LCAyMTksIDcsIDIwOSwgMTI2LCAzNSwgMjE2LCAxNTcsIDIwOSwgMTI2LCAzNSwgMjQ1LCAKLSAgICAxOTcsIDIwOSwgMTI2LCAzNSwgMjM2LCAxMjcsIDI0OSwgMjUsIDIwOSwgMTI2LCAzNSwgMjA0LCAxMDMsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjM5LCAxODEsIDIwOSwgMTI2LCAzNSwgMjUxLCAxMTIsIDIwOSwgMTI2LCAzNSwgMjE2LCAxMTQsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjE2LCA4OSwgMjA5LCAxMjYsIDM1LCAyNDEsIDE3NywgMjA5LCAxMjYsIDM1LCAyMzAsIDg1LCAyMDksIDEyNiwgMzUsIAotICAgIDI0NSwgMTkyLCAyMDksIDEyNiwgMzUsIDI0MSwgODMsIDIwOSwgMTI2LCAzNSwgMjQyLCAxNSwgMjA5LCAxMjYsIDM1LCAKLSAgICAyNDYsIDE4NiwgMjA5LCAxMjYsIDM1LCAyNDQsIDY3LCAyMDksIDEyNiwgMzUsIDI2LCAyMTYsIDg4LCAyMDksIDEyNiwgMzUsIAotICAgIDIxOSwgMTYwLCAyMDksIDEyNiwgMzUsIDIyNywgMjA4LCAyMDksIDEyNiwgMzUsIDI0NiwgMTQsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjI5LCA4MCwgMjA5LCAxMjYsIDM1LCAyMzgsIDIxNCwgMjA5LCAxMjYsIDM1LCAyMTEsIDQzLCAyMDksIDEyNiwgMzUsIAotICAgIDIxNywgMTY4LCAyMDksIDEyNiwgMzUsIDIzOSwgMTAxLCAyMDksIDEyNiwgMzUsIDIxNiwgOTAsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjI3LCAyNDcsIDIxOSwgMjQ1LCAyMjQsIDc4LCAyMDksIDEyNiwgMzUsIDIxNiwgODYsIDIwOSwgMTI2LCAzNSwgMjM4LCAKLSAgICAzMywgMjA4LCAxNzMsIDIyNSwgMywgMjA5LCAxMjYsIDM1LCAyNDEsIDg1LCAyMDksIDEyNiwgMzUsIDIxMSwgNTYsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjM3LCAyNDUsIDIwOSwgMTI2LCAzNSwgMjQxLCA3NiwgMjA5LCAxMjYsIDM1LCAyMTksIDUwLCAyMDksIAotICAgIDEyNiwgMzUsIDIxNSwgMjQyLCAyMDksIDEyNiwgMzUsIDIzOSwgMjA3LCAyMDksIDEyNiwgMzUsIDIwNiwgNjQsIDIxOSwgCi0gICAgMjQ1LCAyMDQsIDg0LCAyMDksIDEyNiwgMzUsIDI0NSwgMjAyLCAyMDksIDEyNiwgMzUsIDIyNSwgMTgsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjQwLCAyNDUsIDIwOSwgMTI2LCAzNSwgMjA2LCAyMzQsIDIwOSwgMTI2LCAzNSwgMjQzLCAxODIsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjQ2LCAxNiwgMjI0LCA3LCAyMDksIDEyNiwgMzUsIDIzNywgMjIyLCAyMDksIDEyNiwgMzUsIDIzOCwgMjE1LCAyMzEsIAotICAgIDQ5LCAyMDksIDEyNiwgMzUsIDIyNSwgNzMsIDIwOSwgMTI2LCAzNSwgMjUxLCAxMzMsIDIwOSwgMTI2LCAzNSwgMjQxLCAKLSAgICAxMDEsIDIwOSwgMTI2LCAzNSwgMjQyLCA3NCwgMjA5LCAxMjYsIDM1LCAyMDQsIDgyLCAyMDksIDEyNiwgMzUsIDIxMiwgCi0gICAgMTE1LCAyMDksIDEyNiwgMzUsIDIzMSwgMTQsIDIwOSwgMTI2LCAzNSwgMjQ0LCAyNSwgMjA5LCAxMjYsIDM1LCAyNDQsIAotICAgIDE0OCwgMjA5LCAxMjYsIDM1LCAyNDMsIDE3OCwgMjA5LCAxMjYsIDM1LCAyNDAsIDIwOSwgMjA5LCAxMjYsIDM1LCAyMTMsIAotICAgIDEwNCwgMjA5LCAxMjYsIDM1LCAyMTEsIDYwLCAyMDksIDEyNiwgMzUsIDIzNywgOTAsIDIwOSwgMTI2LCAzNSwgMjQ1LCAKLSAgICAyMjYsIDIwOSwgMTI2LCAzNSwgMjQ2LCAxMSwgMjA5LCAxMjYsIDM1LCAyNDAsIDg3LCAyMDksIDEyNiwgMzUsIDI1MSwgNzYsIAotICAgIDIwOSwgMTI2LCAzNSwgMjQ1LCAyMjUsIDIwOSwgMTI2LCAzNSwgMjIwLCAzMiwgMjA5LCA5MywgMjA2LCA0MSwgMjA5LCAKLSAgICAxMjYsIDM1LCAyNDMsIDIwNCwgMjA5LCAxMjYsIDM1LCAyMjgsIDEwMSwgMjA5LCAxMjYsIDM1LCAyMzksIDE1MCwgMjQ1LCAKLSAgICAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDEwNSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDEwOCwgCi0gICAgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDE0NywgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIAotICAgIDE0OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDE3MCwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgCi0gICAgMTcsIDE5NSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDIxMywgMTExLCAyNDUsIDE1MywgMjE1LCAyMTcsIAotICAgIDIwNiwgMjM2LCAxNywgMTk5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMjIyLCA2MywgMjQ1LCAxNTMsIAotICAgIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDEwNSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDEwOCwgMjQ1LCAKLSAgICAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE0NywgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE0OSwgCi0gICAgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE3MCwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIAotICAgIDE5NSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDIxMywgMTExLCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgCi0gICAgMTQ4LCAxNywgMTk5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMjIyLCA2MywgMTMsIDI2LCA2LCA2MywgCi0gICAgMTMsIDI2LCA2LCAyNDksIDI1NSwgMTMsIDI2LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCA2LCAyNDUsIDUxLCAxMywgMjYsIDYsIAotICAgIDc0LCAxMywgMjYsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDYsIDIzOSwgNzUsIDEzLCAyNiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgCi0gICAgNiwgNzUsIDEzLCAyNiwgNiwgMjMwLCAxODQsIDEzLCAyNiwgNiwgMjMwLCA1NCwgMTMsIDI2LCA2LCAxNTksIDEzLCAyNiwgCi0gICAgNiwgMjI2LCAxODUsIDEzLCAyNiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgNiwgNzgsIDEzLCAyNiwgNiwgMjE5LCAxODQsIDEzLCAKLSAgICAyNiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgNiwgMTQ2LCAxMywgMjYsIDYsIDE5NCwgMTMsIDI2LCA2LCAyMTAsIDY5LCAxMywgCi0gICAgMjYsIDYsIDY4LCAxMywgMjYsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDYsIDIwMywgMTk2LCAKLSAgICAxMywgMjYsIDYsIDIwMywgMTI0LCAxMywgMjYsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDUsIDYzLCAxMywgMjYsIDUsIDI0OSwgCi0gICAgMjU1LCAxMywgMjYsIDUsIDI0NywgMTI1LCAxMywgMjYsIDUsIDI0NSwgNTEsIDEzLCAyNiwgNSwgNzQsIDEzLCAyNiwgNSwgCi0gICAgMjQwLCAxNzQsIDEzLCAyNiwgNSwgMjM5LCA3NSwgMTMsIDI2LCA1LCAyMzcsIDE3MSwgMTMsIDI2LCA1LCA3NSwgMTMsIDI2LCAKLSAgICA1LCAyMzAsIDE4NCwgMTMsIDI2LCA1LCAyMzAsIDU0LCAxMywgMjYsIDUsIDE1OSwgMTMsIDI2LCA1LCAyMjYsIDE4NSwgMTMsIAotICAgIDI2LCA1LCAyMjMsIDE2MywgMTMsIDI2LCA1LCA3OCwgMTMsIDI2LCA1LCAyMTksIDE4NCwgMTMsIDI2LCA1LCAyMTcsIDEzNCwgCi0gICAgMTMsIDI2LCA1LCAxNDYsIDEzLCAyNiwgNSwgMTk0LCAxMywgMjYsIDUsIDIxMCwgNjksIDEzLCAyNiwgNSwgNjgsIDEzLCAKLSAgICAyNiwgNSwgMjA2LCAxNjQsIDEzLCAyNiwgNSwgMjA0LCAxNDQsIDEzLCAyNiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgNSwgCi0gICAgMjAzLCAxMjQsIDEzLCAyNiwgNSwgMjAyLCAxNTksIDEzLCAzNywgNiwgNjMsIDEzLCAzNywgNiwgMjQ5LCAyNTUsIDEzLCAKLSAgICAzNywgNiwgMjQ3LCAxMjUsIDEzLCAzNywgNiwgMjQ1LCA1MSwgMTMsIDM3LCA2LCA3NCwgMTMsIDM3LCA2LCAyNDAsIDE3NCwgCi0gICAgMTMsIDM3LCA2LCAyMzksIDc1LCAxMywgMzcsIDYsIDIzNywgMTcxLCAxMywgMzcsIDYsIDc1LCAxMywgMzcsIDYsIDIzMCwgCi0gICAgMTg0LCAxMywgMzcsIDYsIDIzMCwgNTQsIDEzLCAzNywgNiwgMTU5LCAxMywgMzcsIDYsIDIyNiwgMTg1LCAxMywgMzcsIDYsIAotICAgIDIyMywgMTYzLCAxMywgMzcsIDYsIDc4LCAxMywgMzcsIDYsIDIxOSwgMTg0LCAxMywgMzcsIDYsIDIxNywgMTM0LCAxMywgCi0gICAgMzcsIDYsIDE0NiwgMTMsIDM3LCA2LCAxOTQsIDEzLCAzNywgNiwgMjEwLCA2OSwgMTMsIDM3LCA2LCA2OCwgMTMsIDM3LCA2LCAKLSAgICAyMDYsIDE2NCwgMTMsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDM3LCA2LCAyMDMsIDEyNCwgCi0gICAgMTMsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDM3LCA1LCA2MywgMTMsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDM3LCA1LCAyNDcsIAotICAgIDEyNSwgMTMsIDM3LCA1LCAyNDUsIDUxLCAxMywgMzcsIDUsIDc0LCAxMywgMzcsIDUsIDI0MCwgMTc0LCAxMywgMzcsIDUsIAotICAgIDIzOSwgNzUsIDEzLCAzNywgNSwgNzUsIDEzLCAzNywgNSwgMjMwLCAxODQsIDEzLCAzNywgNSwgMjMwLCA1NCwgMTMsIDM3LCAKLSAgICA1LCAxNTksIDEzLCAzNywgNSwgMjI2LCAxODUsIDEzLCAzNywgNSwgMjIzLCAxNjMsIDEzLCAzNywgNSwgNzgsIDEzLCAzNywgCi0gICAgNSwgMjE5LCAxODQsIDEzLCAzNywgNSwgMjE3LCAxMzQsIDEzLCAzNywgNSwgMTQ2LCAxMywgMzcsIDUsIDE5NCwgMTMsIDM3LCAKLSAgICA1LCAyMTAsIDY5LCAxMywgMzcsIDUsIDY4LCAxMywgMzcsIDUsIDIwNiwgMTY0LCAxMywgMzcsIDUsIDIwNCwgMTQ0LCAxMywgCi0gICAgMzcsIDUsIDIwMywgMTk2LCAxMywgMzcsIDUsIDIwMywgMTI0LCAxMywgMzcsIDUsIDIwMiwgMTU5LCAxMywgMjYsIDM3LCA2LCAKLSAgICA2MywgMTMsIDI2LCAzNywgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMzcsIDYsIDI0NywgMTI1LCAxMywgMjYsIDM3LCA2LCAyNDUsIAotICAgIDUxLCAxMywgMjYsIDM3LCA2LCA3NCwgMTMsIDI2LCAzNywgNiwgMjQwLCAxNzQsIDEzLCAyNiwgMzcsIDYsIDIzOSwgNzUsIAotICAgIDEzLCAyNiwgMzcsIDYsIDIzNywgMTcxLCAxMywgMjYsIDM3LCA2LCA3NSwgMTMsIDI2LCAzNywgNiwgMjMwLCAxODQsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMzcsIDYsIDE1OSwgMTMsIDI2LCAzNywgNiwgMjI2LCAxODUsIDEzLCAyNiwgCi0gICAgMzcsIDYsIDIyMywgMTYzLCAxMywgMjYsIDM3LCA2LCA3OCwgMTMsIDI2LCAzNywgNiwgMjE5LCAxODQsIDEzLCAyNiwgMzcsIAotICAgIDYsIDIxNywgMTM0LCAxMywgMjYsIDM3LCA2LCAxNDYsIDEzLCAyNiwgMzcsIDYsIDE5NCwgMTMsIDI2LCAzNywgNiwgMjEwLCAKLSAgICA2OSwgMTMsIDI2LCAzNywgNiwgNjgsIDEzLCAyNiwgMzcsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDM3LCA2LCAyMDQsIDE0NCwgCi0gICAgMTMsIDI2LCAzNywgNiwgMjAzLCAxOTYsIDEzLCAyNiwgMzcsIDYsIDIwMywgMTI0LCAxMywgMjYsIDM3LCA2LCAyMDIsIAotICAgIDE1OSwgMTMsIDI2LCAzNywgNSwgNjMsIDEzLCAyNiwgMzcsIDUsIDI0OSwgMjU1LCAxMywgMjYsIDM3LCA1LCAyNDcsIDEyNSwgCi0gICAgMTMsIDI2LCAzNywgNSwgMjQ1LCA1MSwgMTMsIDI2LCAzNywgNSwgNzQsIDEzLCAyNiwgMzcsIDUsIDI0MCwgMTc0LCAxMywgCi0gICAgMjYsIDM3LCA1LCAyMzksIDc1LCAxMywgMjYsIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDI2LCAzNywgNSwgNzUsIDEzLCAyNiwgCi0gICAgMzcsIDUsIDIzMCwgMTg0LCAxMywgMjYsIDM3LCA1LCAyMzAsIDU0LCAxMywgMjYsIDM3LCA1LCAxNTksIDEzLCAyNiwgMzcsIAotICAgIDUsIDIyNiwgMTg1LCAxMywgMjYsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDI2LCAzNywgNSwgNzgsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIxOSwgMTg0LCAxMywgMjYsIDM3LCA1LCAyMTcsIDEzNCwgMTMsIDI2LCAzNywgNSwgMTQ2LCAxMywgMjYsIDM3LCA1LCAKLSAgICAxOTQsIDEzLCAyNiwgMzcsIDUsIDIxMCwgNjksIDEzLCAyNiwgMzcsIDUsIDY4LCAxMywgMjYsIDM3LCA1LCAyMDYsIDE2NCwgCi0gICAgMTMsIDI2LCAzNywgNSwgMjA0LCAxNDQsIDEzLCAyNiwgMzcsIDUsIDIwMywgMTk2LCAxMywgMjYsIDM3LCA1LCAyMDMsIAotICAgIDEyNCwgMTMsIDI2LCAzNywgNSwgMjAyLCAxNTksIDEzLCAxMzIsIDYsIDYzLCAxMywgMTMyLCA2LCAyNDcsIDEyNSwgMTMsIAotICAgIDEzMiwgNiwgMjQ1LCA1MSwgMTMsIDEzMiwgNiwgMjM5LCA3NSwgMTMsIDEzMiwgNiwgMjMwLCAxODQsIDEzLCAxMzIsIDYsIAotICAgIDIzMCwgNTQsIDEzLCAxMzIsIDYsIDIyMywgMTYzLCAxMywgMTMyLCA2LCA3OCwgMTMsIDEzMiwgNiwgMjE5LCAxODQsIDEzLCAKLSAgICAxMzIsIDYsIDIxNywgMTM0LCAxMywgMTMyLCA2LCAxOTQsIDEzLCAxMzIsIDYsIDIxMCwgNjksIDEzLCAxMzIsIDYsIDY4LCAKLSAgICAxMywgMTMyLCA2LCAyMDYsIDE2NCwgMTMsIDEzMiwgNiwgMjA0LCAxNDQsIDEzLCAxMzIsIDYsIDIwMywgMTk2LCAxMywgCi0gICAgMTMyLCA2LCAyMDMsIDEyNCwgMTMsIDEzMiwgNiwgMjAyLCAxNTksIDEzLCAxMzIsIDUsIDYzLCAxMywgMTMyLCA1LCAyNDksIAotICAgIDI1NSwgMTMsIDEzMiwgNSwgMjQ3LCAxMjUsIDEzLCAxMzIsIDUsIDI0NSwgNTEsIDEzLCAxMzIsIDUsIDI0MCwgMTc0LCAxMywgCi0gICAgMTMyLCA1LCAyMzcsIDE3MSwgMTMsIDEzMiwgNSwgNzUsIDEzLCAxMzIsIDUsIDIzMCwgMTg0LCAxMywgMTMyLCA1LCAyMzAsIAotICAgIDU0LCAxMywgMTMyLCA1LCAxNTksIDEzLCAxMzIsIDUsIDIyNiwgMTg1LCAxMywgMTMyLCA1LCAyMjMsIDE2MywgMTMsIDEzMiwgCi0gICAgNSwgMjE5LCAxODQsIDEzLCAxMzIsIDUsIDIxNywgMTM0LCAxMywgMTMyLCA1LCAxNDYsIDEzLCAxMzIsIDUsIDE5NCwgMTMsIAotICAgIDEzMiwgNSwgMjEwLCA2OSwgMTMsIDEzMiwgNSwgNjgsIDEzLCAxMzIsIDUsIDIwNiwgMTY0LCAxMywgMTMyLCA1LCAyMDQsIAotICAgIDE0NCwgMTMsIDEzMiwgNSwgMjAzLCAxOTYsIDEzLCAxMzIsIDUsIDIwMywgMTI0LCAxMywgMTMyLCA1LCAyMDIsIDE1OSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDYzLCAxMywgMjYsIDEzMiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMTMyLCA2LCAyNDcsIDEyNSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDI0NSwgNTEsIDEzLCAyNiwgMTMyLCA2LCA3NCwgMTMsIDI2LCAxMzIsIDYsIDI0MCwgMTc0LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjM5LCA3NSwgMTMsIDI2LCAxMzIsIDYsIDIzNywgMTcxLCAxMywgMjYsIDEzMiwgNiwgNzUsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMzAsIDE4NCwgMTMsIDI2LCAxMzIsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMTMyLCA2LCAxNTksIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMjYsIDE4NSwgMTMsIDI2LCAxMzIsIDYsIDIyMywgMTYzLCAxMywgMjYsIDEzMiwgNiwgNzgsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMTksIDE4NCwgMTMsIDI2LCAxMzIsIDYsIDIxNywgMTM0LCAxMywgMjYsIDEzMiwgNiwgMTQ2LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMTk0LCAxMywgMjYsIDEzMiwgNiwgMjEwLCA2OSwgMTMsIDI2LCAxMzIsIDYsIDY4LCAxMywgMjYsIAotICAgIDEzMiwgNiwgMjA2LCAxNjQsIDEzLCAyNiwgMTMyLCA2LCAyMDQsIDE0NCwgMTMsIDI2LCAxMzIsIDYsIDIwMywgMTk2LCAxMywgCi0gICAgMjYsIDEzMiwgNiwgMjAzLCAxMjQsIDEzLCAyNiwgMTMyLCA2LCAyMDIsIDE1OSwgMTMsIDI2LCAxMzIsIDUsIDYzLCAxMywgCi0gICAgMjYsIDEzMiwgNSwgMjQ5LCAyNTUsIDEzLCAyNiwgMTMyLCA1LCAyNDcsIDEyNSwgMTMsIDI2LCAxMzIsIDUsIDI0NSwgNTEsIAotICAgIDEzLCAyNiwgMTMyLCA1LCA3NCwgMTMsIDI2LCAxMzIsIDUsIDI0MCwgMTc0LCAxMywgMjYsIDEzMiwgNSwgMjM5LCA3NSwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIzNywgMTcxLCAxMywgMjYsIDEzMiwgNSwgNzUsIDEzLCAyNiwgMTMyLCA1LCAyMzAsIDE4NCwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIzMCwgNTQsIDEzLCAyNiwgMTMyLCA1LCAxNTksIDEzLCAyNiwgMTMyLCA1LCAyMjYsIDE4NSwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIyMywgMTYzLCAxMywgMjYsIDEzMiwgNSwgNzgsIDEzLCAyNiwgMTMyLCA1LCAyMTksIDE4NCwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIxNywgMTM0LCAxMywgMjYsIDEzMiwgNSwgMTQ2LCAxMywgMjYsIDEzMiwgNSwgMTk0LCAxMywgCi0gICAgMjYsIDEzMiwgNSwgMjEwLCA2OSwgMTMsIDI2LCAxMzIsIDUsIDY4LCAxMywgMjYsIDEzMiwgNSwgMjA2LCAxNjQsIDEzLCAKLSAgICAyNiwgMTMyLCA1LCAyMDQsIDE0NCwgMTMsIDI2LCAxMzIsIDUsIDIwMywgMTk2LCAxMywgMjYsIDEzMiwgNSwgMjAzLCAxMjQsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMDIsIDE1OSwgMTMsIDE2NiwgNiwgNjMsIDEzLCAxNjYsIDYsIDI0OSwgMjU1LCAxMywgMTY2LCAKLSAgICA2LCAyNDUsIDUxLCAxMywgMTY2LCA2LCA3NCwgMTMsIDE2NiwgNiwgMjQwLCAxNzQsIDEzLCAxNjYsIDYsIDIzOSwgNzUsIAotICAgIDEzLCAxNjYsIDYsIDIzMCwgMTg0LCAxMywgMTY2LCA2LCAyMzAsIDU0LCAxMywgMTY2LCA2LCAxNTksIDEzLCAxNjYsIDYsIAotICAgIDIyNiwgMTg1LCAxMywgMTY2LCA2LCAyMjMsIDE2MywgMTMsIDE2NiwgNiwgNzgsIDEzLCAxNjYsIDYsIDIxOSwgMTg0LCAxMywgCi0gICAgMTY2LCA2LCAyMTcsIDEzNCwgMTMsIDE2NiwgNiwgMTk0LCAxMywgMTY2LCA2LCAyMTAsIDY5LCAxMywgMTY2LCA2LCA2OCwgCi0gICAgMTMsIDE2NiwgNiwgMjA2LCAxNjQsIDEzLCAxNjYsIDYsIDIwNCwgMTQ0LCAxMywgMTY2LCA2LCAyMDMsIDE5NiwgMTMsIAotICAgIDE2NiwgNiwgMjAzLCAxMjQsIDEzLCAxNjYsIDUsIDYzLCAxMywgMTY2LCA1LCAyNDksIDI1NSwgMTMsIDE2NiwgNSwgMjQ3LCAKLSAgICAxMjUsIDEzLCAxNjYsIDUsIDI0NSwgNTEsIDEzLCAxNjYsIDUsIDc0LCAxMywgMTY2LCA1LCAyNDAsIDE3NCwgMTMsIDE2NiwgCi0gICAgNSwgMjM5LCA3NSwgMTMsIDE2NiwgNSwgMjM3LCAxNzEsIDEzLCAxNjYsIDUsIDc1LCAxMywgMTY2LCA1LCAyMzAsIDE4NCwgCi0gICAgMTMsIDE2NiwgNSwgMjMwLCA1NCwgMTMsIDE2NiwgNSwgMTU5LCAxMywgMTY2LCA1LCAyMjYsIDE4NSwgMTMsIDE2NiwgNSwgCi0gICAgMjIzLCAxNjMsIDEzLCAxNjYsIDUsIDc4LCAxMywgMTY2LCA1LCAyMTksIDE4NCwgMTMsIDE2NiwgNSwgMjE3LCAxMzQsIDEzLCAKLSAgICAxNjYsIDUsIDE0NiwgMTMsIDE2NiwgNSwgMTk0LCAxMywgMTY2LCA1LCAyMTAsIDY5LCAxMywgMTY2LCA1LCA2OCwgMTMsIAotICAgIDE2NiwgNSwgMjA2LCAxNjQsIDEzLCAxNjYsIDUsIDIwNCwgMTQ0LCAxMywgMTY2LCA1LCAyMDMsIDE5NiwgMTMsIDE2NiwgNSwgCi0gICAgMjAzLCAxMjQsIDEzLCAxNjYsIDUsIDIwMiwgMTU5LCAxMywgMTY5LCA2LCA2MywgMTMsIDE2OSwgNiwgMjQ5LCAyNTUsIDEzLCAKLSAgICAxNjksIDYsIDI0NSwgNTEsIDEzLCAxNjksIDYsIDc0LCAxMywgMTY5LCA2LCAyNDAsIDE3NCwgMTMsIDE2OSwgNiwgMjM5LCAKLSAgICA3NSwgMTMsIDE2OSwgNiwgNzUsIDEzLCAxNjksIDYsIDIzMCwgMTg0LCAxMywgMTY5LCA2LCAyMzAsIDU0LCAxMywgMTY5LCAKLSAgICA2LCAxNTksIDEzLCAxNjksIDYsIDIyNiwgMTg1LCAxMywgMTY5LCA2LCA3OCwgMTMsIDE2OSwgNiwgMTk0LCAxMywgMTY5LCAKLSAgICA2LCAyMTAsIDY5LCAxMywgMTY5LCA2LCA2OCwgMTMsIDE2OSwgNiwgMjA2LCAxNjQsIDEzLCAxNjksIDYsIDIwNCwgMTQ0LCAKLSAgICAxMywgMTY5LCA2LCAyMDMsIDE5NiwgMTMsIDE2OSwgNiwgMjAzLCAxMjQsIDEzLCAxNjksIDUsIDYzLCAxMywgMTY5LCA1LCAKLSAgICAyNDksIDI1NSwgMTMsIDE2OSwgNSwgMjQ3LCAxMjUsIDEzLCAxNjksIDUsIDI0NSwgNTEsIDEzLCAxNjksIDUsIDc0LCAxMywgCi0gICAgMTY5LCA1LCAyNDAsIDE3NCwgMTMsIDE2OSwgNSwgMjM5LCA3NSwgMTMsIDE2OSwgNSwgMjM3LCAxNzEsIDEzLCAxNjksIDUsIAotICAgIDc1LCAxMywgMTY5LCA1LCAyMzAsIDE4NCwgMTMsIDE2OSwgNSwgMjMwLCA1NCwgMTMsIDE2OSwgNSwgMTU5LCAxMywgMTY5LCAKLSAgICA1LCAyMjYsIDE4NSwgMTMsIDE2OSwgNSwgMjIzLCAxNjMsIDEzLCAxNjksIDUsIDc4LCAxMywgMTY5LCA1LCAyMTksIDE4NCwgCi0gICAgMTMsIDE2OSwgNSwgMjE3LCAxMzQsIDEzLCAxNjksIDUsIDE0NiwgMTMsIDE2OSwgNSwgMTk0LCAxMywgMTY5LCA1LCAyMTAsIAotICAgIDY5LCAxMywgMTY5LCA1LCA2OCwgMTMsIDE2OSwgNSwgMjA2LCAxNjQsIDEzLCAxNjksIDUsIDIwNCwgMTQ0LCAxMywgMTY5LCAKLSAgICA1LCAyMDMsIDE5NiwgMTMsIDE2OSwgNSwgMjAzLCAxMjQsIDEzLCAxNjksIDUsIDIwMiwgMTU5LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgNjMsIDEzLCAyNiwgMTY2LCA2LCAyNDksIDI1NSwgMTMsIDI2LCAxNjYsIDYsIDI0NywgMTI1LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjQ1LCA1MSwgMTMsIDI2LCAxNjYsIDYsIDc0LCAxMywgMjYsIDE2NiwgNiwgMjQwLCAxNzQsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMzksIDc1LCAxMywgMjYsIDE2NiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgMTY2LCA2LCA3NSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIzMCwgMTg0LCAxMywgMjYsIDE2NiwgNiwgMjMwLCA1NCwgMTMsIDI2LCAxNjYsIDYsIDE1OSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIyNiwgMTg1LCAxMywgMjYsIDE2NiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgMTY2LCA2LCA3OCwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIxOSwgMTg0LCAxMywgMjYsIDE2NiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgMTY2LCA2LCAxNDYsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAxOTQsIDEzLCAyNiwgMTY2LCA2LCAyMTAsIDY5LCAxMywgMjYsIDE2NiwgNiwgNjgsIDEzLCAyNiwgMTY2LCA2LCAyMDYsIAotICAgIDE2NCwgMTMsIDI2LCAxNjYsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDE2NiwgNiwgMjAzLCAxOTYsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMDMsIDEyNCwgMTMsIDI2LCAxNjYsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDE2NiwgNSwgNjMsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyNDksIDI1NSwgMTMsIDI2LCAxNjYsIDUsIDI0NywgMTI1LCAxMywgMjYsIDE2NiwgNSwgMjQ1LCA1MSwgMTMsIDI2LCAxNjYsIAotICAgIDUsIDc0LCAxMywgMjYsIDE2NiwgNSwgMjQwLCAxNzQsIDEzLCAyNiwgMTY2LCA1LCAyMzksIDc1LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjM3LCAxNzEsIDEzLCAyNiwgMTY2LCA1LCA3NSwgMTMsIDI2LCAxNjYsIDUsIDIzMCwgMTg0LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjMwLCA1NCwgMTMsIDI2LCAxNjYsIDUsIDE1OSwgMTMsIDI2LCAxNjYsIDUsIDIyNiwgMTg1LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjIzLCAxNjMsIDEzLCAyNiwgMTY2LCA1LCA3OCwgMTMsIDI2LCAxNjYsIDUsIDIxOSwgMTg0LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjE3LCAxMzQsIDEzLCAyNiwgMTY2LCA1LCAxNDYsIDEzLCAyNiwgMTY2LCA1LCAxOTQsIDEzLCAyNiwgMTY2LCA1LCAyMTAsIAotICAgIDY5LCAxMywgMjYsIDE2NiwgNSwgNjgsIDEzLCAyNiwgMTY2LCA1LCAyMDYsIDE2NCwgMTMsIDI2LCAxNjYsIDUsIDIwNCwgCi0gICAgMTQ0LCAxMywgMjYsIDE2NiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgMTY2LCA1LCAyMDMsIDEyNCwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIwMiwgMTU5LCAxMywgNDEsIDYsIDYzLCAxMywgNDEsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDYsIDI0NywgMTI1LCAxMywgCi0gICAgNDEsIDYsIDI0NSwgNTEsIDEzLCA0MSwgNiwgNzQsIDEzLCA0MSwgNiwgMjQwLCAxNzQsIDEzLCA0MSwgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDQxLCA2LCAyMzcsIDE3MSwgMTMsIDQxLCA2LCA3NSwgMTMsIDQxLCA2LCAyMzAsIDE4NCwgMTMsIDQxLCA2LCAyMzAsIAotICAgIDU0LCAxMywgNDEsIDYsIDE1OSwgMTMsIDQxLCA2LCAyMjYsIDE4NSwgMTMsIDQxLCA2LCAyMjMsIDE2MywgMTMsIDQxLCA2LCAKLSAgICA3OCwgMTMsIDQxLCA2LCAyMTksIDE4NCwgMTMsIDQxLCA2LCAyMTcsIDEzNCwgMTMsIDQxLCA2LCAxNDYsIDEzLCA0MSwgNiwgCi0gICAgMTk0LCAxMywgNDEsIDYsIDIxMCwgNjksIDEzLCA0MSwgNiwgNjgsIDEzLCA0MSwgNiwgMjA2LCAxNjQsIDEzLCA0MSwgNiwgCi0gICAgMjA0LCAxNDQsIDEzLCA0MSwgNiwgMjAzLCAxOTYsIDEzLCA0MSwgNiwgMjAzLCAxMjQsIDEzLCA0MSwgNiwgMjAyLCAxNTksIAotICAgIDEzLCA0MSwgNSwgNjMsIDEzLCA0MSwgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgNSwgMjQ1LCAKLSAgICA1MSwgMTMsIDQxLCA1LCA3NCwgMTMsIDQxLCA1LCAyNDAsIDE3NCwgMTMsIDQxLCA1LCAyMzksIDc1LCAxMywgNDEsIDUsIAotICAgIDIzNywgMTcxLCAxMywgNDEsIDUsIDc1LCAxMywgNDEsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDUsIDIzMCwgNTQsIDEzLCA0MSwgCi0gICAgNSwgMTU5LCAxMywgNDEsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDUsIDIyMywgMTYzLCAxMywgNDEsIDUsIDc4LCAxMywgNDEsIAotICAgIDUsIDIxOSwgMTg0LCAxMywgNDEsIDUsIDIxNywgMTM0LCAxMywgNDEsIDUsIDE0NiwgMTMsIDQxLCA1LCAxOTQsIDEzLCA0MSwgCi0gICAgNSwgMjEwLCA2OSwgMTMsIDQxLCA1LCA2OCwgMTMsIDQxLCA1LCAyMDYsIDE2NCwgMTMsIDQxLCA1LCAyMDQsIDE0NCwgMTMsIAotICAgIDQxLCA1LCAyMDMsIDE5NiwgMTMsIDQxLCA1LCAyMDMsIDEyNCwgMTMsIDQxLCA1LCAyMDIsIDE1OSwgMTMsIDQxLCAyNiwgNiwgCi0gICAgNjMsIDEzLCA0MSwgMjYsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCA2LCAyNDcsIDEyNSwgMTMsIDQxLCAyNiwgNiwgMjQ1LCAKLSAgICA1MSwgMTMsIDQxLCAyNiwgNiwgNzQsIDEzLCA0MSwgMjYsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDI2LCA2LCAyMzksIDc1LCAKLSAgICAxMywgNDEsIDI2LCA2LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgNiwgNzUsIDEzLCA0MSwgMjYsIDYsIDIzMCwgMTg0LCAxMywgCi0gICAgNDEsIDI2LCA2LCAyMzAsIDU0LCAxMywgNDEsIDI2LCA2LCAxNTksIDEzLCA0MSwgMjYsIDYsIDIyNiwgMTg1LCAxMywgNDEsIAotICAgIDI2LCA2LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgNiwgNzgsIDEzLCA0MSwgMjYsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDI2LCAKLSAgICA2LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgNiwgMTQ2LCAxMywgNDEsIDI2LCA2LCAxOTQsIDEzLCA0MSwgMjYsIDYsIDIxMCwgCi0gICAgNjksIDEzLCA0MSwgMjYsIDYsIDY4LCAxMywgNDEsIDI2LCA2LCAyMDYsIDE2NCwgMTMsIDQxLCAyNiwgNiwgMjA0LCAxNDQsIAotICAgIDEzLCA0MSwgMjYsIDYsIDIwMywgMTk2LCAxMywgNDEsIDI2LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAyNiwgNiwgMjAyLCAKLSAgICAxNTksIDEzLCA0MSwgMjYsIDUsIDYzLCAxMywgNDEsIDI2LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgNSwgMjQ3LCAxMjUsIAotICAgIDEzLCA0MSwgMjYsIDUsIDI0NSwgNTEsIDEzLCA0MSwgMjYsIDUsIDc0LCAxMywgNDEsIDI2LCA1LCAyNDAsIDE3NCwgMTMsIAotICAgIDQxLCAyNiwgNSwgMjM5LCA3NSwgMTMsIDQxLCAyNiwgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDUsIDc1LCAxMywgNDEsIAotICAgIDI2LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAyNiwgNSwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgNSwgMTU5LCAxMywgNDEsIDI2LCAKLSAgICA1LCAyMjYsIDE4NSwgMTMsIDQxLCAyNiwgNSwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDUsIDc4LCAxMywgNDEsIDI2LCA1LCAKLSAgICAyMTksIDE4NCwgMTMsIDQxLCAyNiwgNSwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDUsIDE0NiwgMTMsIDQxLCAyNiwgNSwgCi0gICAgMTk0LCAxMywgNDEsIDI2LCA1LCAyMTAsIDY5LCAxMywgNDEsIDI2LCA1LCA2OCwgMTMsIDQxLCAyNiwgNSwgMjA2LCAxNjQsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgNSwgMjAzLCAKLSAgICAxMjQsIDEzLCA0MSwgMjYsIDUsIDIwMiwgMTU5LCAxMywgNDEsIDM3LCA2LCA2MywgMTMsIDQxLCAzNywgNiwgMjQ5LCAyNTUsIAotICAgIDEzLCA0MSwgMzcsIDYsIDI0NywgMTI1LCAxMywgNDEsIDM3LCA2LCAyNDUsIDUxLCAxMywgNDEsIDM3LCA2LCA3NCwgMTMsIAotICAgIDQxLCAzNywgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMzcsIDYsIDIzOSwgNzUsIDEzLCA0MSwgMzcsIDYsIDIzNywgMTcxLCAxMywgCi0gICAgNDEsIDM3LCA2LCA3NSwgMTMsIDQxLCAzNywgNiwgMjMwLCAxODQsIDEzLCA0MSwgMzcsIDYsIDIzMCwgNTQsIDEzLCA0MSwgCi0gICAgMzcsIDYsIDE1OSwgMTMsIDQxLCAzNywgNiwgMjI2LCAxODUsIDEzLCA0MSwgMzcsIDYsIDIyMywgMTYzLCAxMywgNDEsIDM3LCAKLSAgICA2LCA3OCwgMTMsIDQxLCAzNywgNiwgMjE5LCAxODQsIDEzLCA0MSwgMzcsIDYsIDIxNywgMTM0LCAxMywgNDEsIDM3LCA2LCAKLSAgICAxNDYsIDEzLCA0MSwgMzcsIDYsIDE5NCwgMTMsIDQxLCAzNywgNiwgMjEwLCA2OSwgMTMsIDQxLCAzNywgNiwgNjgsIDEzLCAKLSAgICA0MSwgMzcsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDQxLCAzNywgNiwgMjAzLCAxOTYsIAotICAgIDEzLCA0MSwgMzcsIDYsIDIwMywgMTI0LCAxMywgNDEsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDQxLCAzNywgNSwgNjMsIDEzLCAKLSAgICA0MSwgMzcsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDM3LCA1LCAyNDcsIDEyNSwgMTMsIDQxLCAzNywgNSwgMjQ1LCA1MSwgMTMsIAotICAgIDQxLCAzNywgNSwgNzQsIDEzLCA0MSwgMzcsIDUsIDI0MCwgMTc0LCAxMywgNDEsIDM3LCA1LCAyMzksIDc1LCAxMywgNDEsIAotICAgIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAzNywgNSwgNzUsIDEzLCA0MSwgMzcsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDM3LCAKLSAgICA1LCAyMzAsIDU0LCAxMywgNDEsIDM3LCA1LCAxNTksIDEzLCA0MSwgMzcsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDM3LCA1LCAKLSAgICAyMjMsIDE2MywgMTMsIDQxLCAzNywgNSwgNzgsIDEzLCA0MSwgMzcsIDUsIDIxOSwgMTg0LCAxMywgNDEsIDM3LCA1LCAyMTcsIAotICAgIDEzNCwgMTMsIDQxLCAzNywgNSwgMTQ2LCAxMywgNDEsIDM3LCA1LCAxOTQsIDEzLCA0MSwgMzcsIDUsIDIxMCwgNjksIDEzLCAKLSAgICA0MSwgMzcsIDUsIDY4LCAxMywgNDEsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDQxLCAzNywgNSwgMjA0LCAxNDQsIDEzLCA0MSwgCi0gICAgMzcsIDUsIDIwMywgMTk2LCAxMywgNDEsIDM3LCA1LCAyMDMsIDEyNCwgMTMsIDQxLCAzNywgNSwgMjAyLCAxNTksIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCA2MywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCAzNywgNiwgMjQ3LCAKLSAgICAxMjUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDUsIDUxLCAxMywgNDEsIDI2LCAzNywgNiwgNzQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyNDAsIDE3NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDc1LCAxMywgNDEsIDI2LCAzNywgNiwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzAsIAotICAgIDU0LCAxMywgNDEsIDI2LCAzNywgNiwgMTU5LCAxMywgNDEsIDI2LCAzNywgNiwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgMzcsIDYsIDc4LCAxMywgNDEsIDI2LCAzNywgNiwgMjE5LCAxODQsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDE0NiwgMTMsIDQxLCAyNiwgMzcsIDYsIDE5NCwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDIxMCwgNjksIDEzLCA0MSwgMjYsIDM3LCA2LCA2OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNiwgCi0gICAgMTY0LCAxMywgNDEsIDI2LCAzNywgNiwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDYsIDIwMywgMTI0LCAxMywgNDEsIDI2LCAzNywgNiwgMjAyLCAxNTksIDEzLCA0MSwgMjYsIDM3LCA1LCA2MywgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCAzNywgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyNDUsIDUxLCAxMywgNDEsIDI2LCAzNywgNSwgNzQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDUsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgMzcsIDUsIDc1LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDU0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMTU5LCAxMywgNDEsIDI2LCAzNywgNSwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDUsIDc4LCAxMywgNDEsIDI2LCAzNywgNSwgMjE5LCAxODQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTcsIDEzNCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDE0NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDE5NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxMCwgCi0gICAgNjksIDEzLCA0MSwgMjYsIDM3LCA1LCA2OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwNiwgMTY0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTI0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjAyLCAxNTksIDEzLCAyMjQsIDQxLCA2LCA2MywgMTMsIDIyNCwgNDEsIDYsIDI0OSwgCi0gICAgMjU1LCAxMywgMjI0LCA0MSwgNiwgMjQ3LCAxMjUsIDEzLCAyMjQsIDQxLCA2LCAyNDUsIDUxLCAxMywgMjI0LCA0MSwgNiwgCi0gICAgNzQsIDEzLCAyMjQsIDQxLCA2LCAyNDAsIDE3NCwgMTMsIDIyNCwgNDEsIDYsIDIzOSwgNzUsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMzcsIDE3MSwgMTMsIDIyNCwgNDEsIDYsIDc1LCAxMywgMjI0LCA0MSwgNiwgMjMwLCAxODQsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMzAsIDU0LCAxMywgMjI0LCA0MSwgNiwgMTU5LCAxMywgMjI0LCA0MSwgNiwgMjI2LCAxODUsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMjMsIDE2MywgMTMsIDIyNCwgNDEsIDYsIDc4LCAxMywgMjI0LCA0MSwgNiwgMjE5LCAxODQsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMTcsIDEzNCwgMTMsIDIyNCwgNDEsIDYsIDE0NiwgMTMsIDIyNCwgNDEsIDYsIDE5NCwgMTMsIDIyNCwgNDEsIDYsIDIxMCwgCi0gICAgNjksIDEzLCAyMjQsIDQxLCA2LCA2OCwgMTMsIDIyNCwgNDEsIDYsIDIwNiwgMTY0LCAxMywgMjI0LCA0MSwgNiwgMjA0LCAKLSAgICAxNDQsIDEzLCAyMjQsIDQxLCA2LCAyMDMsIDE5NiwgMTMsIDIyNCwgNDEsIDYsIDIwMywgMTI0LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjAyLCAxNTksIDEzLCAyMjQsIDQxLCA1LCA2MywgMTMsIDIyNCwgNDEsIDUsIDI0OSwgMjU1LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMjQ3LCAxMjUsIDEzLCAyMjQsIDQxLCA1LCAyNDUsIDUxLCAxMywgMjI0LCA0MSwgNSwgNzQsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAyNDAsIDE3NCwgMTMsIDIyNCwgNDEsIDUsIDIzOSwgNzUsIDEzLCAyMjQsIDQxLCA1LCAyMzcsIDE3MSwgMTMsIDIyNCwgNDEsIAotICAgIDUsIDc1LCAxMywgMjI0LCA0MSwgNSwgMjMwLCAxODQsIDEzLCAyMjQsIDQxLCA1LCAyMzAsIDU0LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMTU5LCAxMywgMjI0LCA0MSwgNSwgMjI2LCAxODUsIDEzLCAyMjQsIDQxLCA1LCAyMjMsIDE2MywgMTMsIDIyNCwgNDEsIDUsIAotICAgIDc4LCAxMywgMjI0LCA0MSwgNSwgMjE5LCAxODQsIDEzLCAyMjQsIDQxLCA1LCAyMTcsIDEzNCwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDE0NiwgMTMsIDIyNCwgNDEsIDUsIDE5NCwgMTMsIDIyNCwgNDEsIDUsIDIxMCwgNjksIDEzLCAyMjQsIDQxLCA1LCA2OCwgCi0gICAgMTMsIDIyNCwgNDEsIDUsIDIwNiwgMTY0LCAxMywgMjI0LCA0MSwgNSwgMjA0LCAxNDQsIDEzLCAyMjQsIDQxLCA1LCAyMDMsIAotICAgIDE5NiwgMTMsIDIyNCwgNDEsIDUsIDIwMywgMTI0LCAxMywgMjI0LCA0MSwgNSwgMjAyLCAxNTksIDEzLCAzNywgNSwgMjQzLCAKLSAgICA4NCwgNzUsIDEzLCAzNywgNSwgMjQzLCA4NCwgMjMwLCAxODQsIDEzLCAyNiwgNiwgMjUxLCAyLCAxMywgMjYsIDYsIDI0OCwgCi0gICAgMTA2LCAxMywgMjYsIDYsIDIzOCwgMjM1LCAxMywgMjYsIDYsIDI0NCwgMzcsIDEzLCAyNiwgNiwgMjQxLCAzNywgMTMsIDI2LCAKLSAgICA2LCAyMDIsIDgzLCAxMywgMjYsIDYsIDI0MCwgMjQ4LCAxMywgMjYsIDYsIDIwOSwgNzQsIDEzLCAyNiwgNiwgMjMwLCAyMzAsIAotICAgIDEzLCAyNiwgNiwgMjI5LCAyNDcsIDEzLCAyNiwgNiwgMjI4LCAyNCwgMTMsIDI2LCA2LCAyMjMsIDI0NiwgMTMsIDI2LCA2LCAKLSAgICAyMjEsIDg0LCAxMywgMjYsIDYsIDIwMywgMTcwLCAxMywgMjYsIDYsIDIyMCwgMzQsIDEzLCAyNiwgNiwgMjE4LCAxNjcsIAotICAgIDEzLCAyNiwgNiwgMjE2LCA1OSwgMTMsIDI2LCA2LCAyMDksIDc1LCA5NywgMTMsIDI2LCA2LCAyMTIsIDE0NCwgMTMsIDI2LCAKLSAgICA2LCAyMDksIDIwNywgMTMsIDI2LCA2LCAyMDYsIDIxNiwgMTMsIDI2LCA2LCAyMTgsIDE5MiwgMTMsIDI2LCA2LCAyNDYsIAotICAgIDE0MiwgMTMsIDI2LCA2LCAyMTcsIDIwMiwgMTMsIDI2LCA2LCAyMjAsIDM2LCAxMywgMjYsIDIyMywgMTAxLCAxMywgMjYsIAotICAgIDUsIDI1MSwgMiwgMTMsIDI2LCA1LCAyNDgsIDEwNiwgMTMsIDI2LCA1LCAyMzgsIDIzNSwgMTMsIDI2LCA1LCAyNDQsIDM3LCAKLSAgICAxMywgMjYsIDUsIDI0MSwgMzcsIDEzLCAyNiwgNSwgMjAyLCA4MywgMTMsIDI2LCA1LCAyNDAsIDI0OCwgMTMsIDI2LCA1LCAKLSAgICAyMDksIDc0LCAxMywgMjYsIDUsIDIzMCwgMjMwLCAxMywgMjYsIDUsIDIyOSwgMjQ3LCAxMywgMjYsIDUsIDIyOCwgMjQsIAotICAgIDEzLCAyNiwgNSwgMjIzLCAyNDYsIDEzLCAyNiwgNSwgMjIxLCA4NCwgMTMsIDI2LCA1LCAyMDMsIDE3MCwgMTMsIDI2LCA1LCAKLSAgICAyMjAsIDM0LCAxMywgMjYsIDUsIDIxOCwgMTY3LCAxMywgMjYsIDUsIDIxNiwgNTksIDEzLCAyNiwgNSwgNDYsIDIxMiwgCi0gICAgMTQ0LCAxMywgMjYsIDUsIDIxMiwgMTQ0LCAxMywgMjYsIDUsIDIwOSwgMjA3LCAxMywgMjYsIDUsIDIwNiwgMjE2LCAxMywgCi0gICAgMjYsIDUsIDIxOCwgMTkyLCAxMywgMjYsIDUsIDI0NiwgMTQyLCAxMywgMjYsIDUsIDIxNywgMjAyLCAxMywgMjYsIDUsIAotICAgIDIyMCwgMzYsIDEzLCAyNiwgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCAyNiwgMjQxLCAzOCwgOTcsIDEzLCAyNiwgMjA5LCA3NSwgCi0gICAgOTcsIDEzLCAyNiwgMjI5LCAyNDgsIDk3LCAxMywgMjYsIDIxOCwgMTkzLCA5NywgMTMsIDI2LCAyMTYsIDYwLCA5NywgMTMsIAotICAgIDI2LCAyMTgsIDE2OCwgOTcsIDEzLCAzNywgNiwgMjUxLCAyLCAxMywgMzcsIDYsIDI0OCwgMTA2LCAxMywgMzcsIDYsIDIzOCwgCi0gICAgMjM1LCAxMywgMzcsIDYsIDI0NCwgMzcsIDEzLCAzNywgNiwgMjQxLCAzNywgMTMsIDM3LCA2LCAyMDIsIDgzLCAxMywgMzcsIAotICAgIDYsIDI0MCwgMjQ4LCAxMywgMzcsIDYsIDIwOSwgNzQsIDEzLCAzNywgNiwgMjMwLCAyMzAsIDEzLCAzNywgNiwgMjI5LCAKLSAgICAyNDcsIDEzLCAzNywgNiwgMjI4LCAyNCwgMTMsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIDM3LCA2LCAyMjEsIDg0LCAxMywgMzcsIAotICAgIDYsIDIwMywgMTcwLCAxMywgMzcsIDYsIDIyMCwgMzQsIDEzLCAzNywgNiwgMjE4LCAxNjcsIDEzLCAzNywgNiwgMjE2LCA1OSwgCi0gICAgMTMsIDM3LCA2LCAyMDksIDc1LCA5NywgMTMsIDM3LCA2LCAyMTIsIDE0NCwgMTMsIDM3LCA2LCAyMDksIDIwNywgMTMsIDM3LCAKLSAgICA2LCAyMDYsIDIxNiwgMTMsIDM3LCA2LCAyMTgsIDE5MiwgMTMsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDM3LCA2LCAyMTcsIAotICAgIDIwMiwgMTMsIDM3LCA2LCAyMjAsIDM2LCAxMywgMzcsIDIyMywgMTAxLCAxMywgMzcsIDUsIDI1MSwgMiwgMTMsIDM3LCA1LCAKLSAgICAyNDgsIDEwNiwgMTMsIDM3LCA1LCAyMzgsIDIzNSwgMTMsIDM3LCA1LCAyNDQsIDM3LCAxMywgMzcsIDUsIDI0MSwgMzcsIAotICAgIDEzLCAzNywgNSwgMjAyLCA4MywgMTMsIDM3LCA1LCAyNDAsIDI0OCwgMTMsIDM3LCA1LCAyMDksIDc0LCAxMywgMzcsIDUsIAotICAgIDIzMCwgMjMwLCAxMywgMzcsIDUsIDIyOSwgMjQ3LCAxMywgMzcsIDUsIDIyOCwgMjQsIDEzLCAzNywgNSwgMjIzLCAyNDYsIAotICAgIDEzLCAzNywgNSwgMjIxLCA4NCwgMTMsIDM3LCA1LCAyMDMsIDE3MCwgMTMsIDM3LCA1LCAyMjAsIDM0LCAxMywgMzcsIDUsIAotICAgIDIxOCwgMTY3LCAxMywgMzcsIDUsIDIxNiwgNTksIDEzLCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAxMywgMzcsIDUsIDIxMiwgCi0gICAgMTQ0LCAxMywgMzcsIDUsIDIwOSwgMjA3LCAxMywgMzcsIDUsIDIwNiwgMjE2LCAxMywgMzcsIDUsIDIxOCwgMTkyLCAxMywgCi0gICAgMzcsIDUsIDI0NiwgMTQyLCAxMywgMzcsIDUsIDIxNywgMjAyLCAxMywgMzcsIDUsIDIyMCwgMzYsIDEzLCAzNywgMjE5LCAKLSAgICA2OSwgMjQzLCAyMDUsIDEzLCAzNywgMjQxLCAzOCwgOTcsIDEzLCAzNywgMjA5LCA3NSwgOTcsIDEzLCAzNywgMjI5LCAyNDgsIAotICAgIDk3LCAxMywgMzcsIDIxOCwgMTkzLCA5NywgMTMsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDM3LCAyMTgsIDE2OCwgOTcsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDI1MSwgMiwgMTMsIDI2LCAzNywgNiwgMjQ4LCAxMDYsIDEzLCAyNiwgMzcsIDYsIDIzOCwgMjM1LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyNDQsIDM3LCAxMywgMjYsIDM3LCA2LCAyNDEsIDM3LCAxMywgMjYsIDM3LCA2LCAyMDIsIDgzLCAxMywgCi0gICAgMjYsIDM3LCA2LCAyNDAsIDI0OCwgMTMsIDI2LCAzNywgNiwgMjA5LCA3NCwgMTMsIDI2LCAzNywgNiwgMjMwLCAyMzAsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIyOSwgMjQ3LCAxMywgMjYsIDM3LCA2LCAyMjgsIDI0LCAxMywgMjYsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIAotICAgIDI2LCAzNywgNiwgMjIxLCA4NCwgMTMsIDI2LCAzNywgNiwgMjAzLCAxNzAsIDEzLCAyNiwgMzcsIDYsIDIyMCwgMzQsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIxOCwgMTY3LCAxMywgMjYsIDM3LCA2LCAyMTYsIDU5LCAxMywgMjYsIDM3LCA2LCAyMDksIDc1LCA5NywgCi0gICAgMTMsIDI2LCAzNywgNiwgMjEyLCAxNDQsIDEzLCAyNiwgMzcsIDYsIDIwOSwgMjA3LCAxMywgMjYsIDM3LCA2LCAyMDYsIAotICAgIDIxNiwgMTMsIDI2LCAzNywgNiwgMjE4LCAxOTIsIDEzLCAyNiwgMzcsIDYsIDI0NiwgMTQyLCAxMywgMjYsIDM3LCA2LCAKLSAgICAyMTcsIDIwMiwgMTMsIDI2LCAzNywgNiwgMjIwLCAzNiwgMTMsIDI2LCAzNywgMjIzLCAxMDEsIDEzLCAyNiwgMzcsIDUsIAotICAgIDI1MSwgMiwgMTMsIDI2LCAzNywgNSwgMjQ4LCAxMDYsIDEzLCAyNiwgMzcsIDUsIDIzOCwgMjM1LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyNDQsIDM3LCAxMywgMjYsIDM3LCA1LCAyNDEsIDM3LCAxMywgMjYsIDM3LCA1LCAyMDIsIDgzLCAxMywgMjYsIDM3LCA1LCAKLSAgICAyNDAsIDI0OCwgMTMsIDI2LCAzNywgNSwgMjA5LCA3NCwgMTMsIDI2LCAzNywgNSwgMjMwLCAyMzAsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIyOSwgMjQ3LCAxMywgMjYsIDM3LCA1LCAyMjgsIDI0LCAxMywgMjYsIDM3LCA1LCAyMjMsIDI0NiwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjIxLCA4NCwgMTMsIDI2LCAzNywgNSwgMjAzLCAxNzAsIDEzLCAyNiwgMzcsIDUsIDIyMCwgMzQsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIxOCwgMTY3LCAxMywgMjYsIDM3LCA1LCAyMTYsIDU5LCAxMywgMjYsIDM3LCA1LCA0NiwgMjEyLCAxNDQsIDEzLCAyNiwgCi0gICAgMzcsIDUsIDIxMiwgMTQ0LCAxMywgMjYsIDM3LCA1LCAyMDksIDIwNywgMTMsIDI2LCAzNywgNSwgMjA2LCAyMTYsIDEzLCAKLSAgICAyNiwgMzcsIDUsIDIxOCwgMTkyLCAxMywgMjYsIDM3LCA1LCAyNDYsIDE0MiwgMTMsIDI2LCAzNywgNSwgMjE3LCAyMDIsIAotICAgIDEzLCAyNiwgMzcsIDUsIDIyMCwgMzYsIDEzLCAyNiwgMzcsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgMjYsIDM3LCAyNDEsIAotICAgIDM4LCA5NywgMTMsIDI2LCAzNywgMjA5LCA3NSwgOTcsIDEzLCAyNiwgMzcsIDIyOSwgMjQ4LCA5NywgMTMsIDI2LCAzNywgCi0gICAgMjE4LCAxOTMsIDk3LCAxMywgMjYsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDI2LCAzNywgMjE4LCAxNjgsIDk3LCAxMywgNDEsIAotICAgIDI2LCA2LCAyNTEsIDIsIDEzLCA0MSwgMjYsIDYsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCA2LCAyMzgsIDIzNSwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgNiwgMjQxLCAzNywgMTMsIDQxLCAyNiwgNiwgMjAyLCA4MywgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDYsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIDYsIDIzMCwgMjMwLCAxMywgNDEsIAotICAgIDI2LCA2LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgNiwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgNiwgMjIzLCAyNDYsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDIyMSwgODQsIDEzLCA0MSwgMjYsIDYsIDIwMywgMTcwLCAxMywgNDEsIDI2LCA2LCAyMjAsIDM0LCAxMywgNDEsIAotICAgIDI2LCA2LCAyMTgsIDE2NywgMTMsIDQxLCAyNiwgNiwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgNiwgMjA5LCA3NSwgOTcsIDEzLCAKLSAgICA0MSwgMjYsIDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCA2LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgNiwgMjA2LCAyMTYsIAotICAgIDEzLCA0MSwgMjYsIDYsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCA2LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgNiwgMjE3LCAKLSAgICAyMDIsIDEzLCA0MSwgMjYsIDYsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDIyMywgMTAxLCAxMywgNDEsIDI2LCA1LCAyNTEsIDIsIAotICAgIDEzLCA0MSwgMjYsIDUsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCA1LCAyMzgsIDIzNSwgMTMsIDQxLCAyNiwgNSwgMjQ0LCAzNywgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjQxLCAzNywgMTMsIDQxLCAyNiwgNSwgMjAyLCA4MywgMTMsIDQxLCAyNiwgNSwgMjQwLCAyNDgsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIDUsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCA1LCAyMjksIDI0NywgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgNSwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDUsIDIyMSwgODQsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIwMywgMTcwLCAxMywgNDEsIDI2LCA1LCAyMjAsIDM0LCAxMywgNDEsIDI2LCA1LCAyMTgsIDE2NywgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgNSwgNDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMTIsIAotICAgIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDUsIDIwNiwgMjE2LCAxMywgNDEsIDI2LCA1LCAKLSAgICAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgNSwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDUsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAKLSAgICA1LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDQxLCAyNiwgMjQxLCAzOCwgOTcsIDEzLCAKLSAgICA0MSwgMjYsIDIwOSwgNzUsIDk3LCAxMywgNDEsIDI2LCAyMjksIDI0OCwgOTcsIDEzLCA0MSwgMjYsIDIxOCwgMTkzLCA5NywgCi0gICAgMTMsIDQxLCAyNiwgMjE2LCA2MCwgOTcsIDEzLCA0MSwgMjYsIDIxOCwgMTY4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDYsIAotICAgIDI1MSwgMiwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCAzNywgNiwgMjM4LCAyMzUsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA2LCAyNDQsIDM3LCAxMywgNDEsIDI2LCAzNywgNiwgMjQxLCAzNywgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMiwgCi0gICAgODMsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIAotICAgIDM3LCA2LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCAzNywgNiwgMjI4LCAyNCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCAzNywgNiwgMjIxLCA4NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIwMywgMTcwLCAxMywgNDEsIDI2LCAzNywgNiwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOCwgMTY3LCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgNzUsIDk3LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNiwgMjE2LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNiwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAzNywgNiwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMzcsIDIyMywgMTAxLCAxMywgCi0gICAgNDEsIDI2LCAzNywgNSwgMjUxLCAyLCAxMywgNDEsIDI2LCAzNywgNSwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAKLSAgICAyMzgsIDIzNSwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDEsIDM3LCAxMywgNDEsIAotICAgIDI2LCAzNywgNSwgMjAyLCA4MywgMTMsIDQxLCAyNiwgMzcsIDUsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCAzNywgNSwgMjA5LCAKLSAgICA3NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCAzNywgNSwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIAotICAgIDM3LCA1LCAyMjgsIDI0LCAxMywgNDEsIDI2LCAzNywgNSwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjEsIDg0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjAsIDM0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjE4LCAxNjcsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTYsIDU5LCAxMywgNDEsIDI2LCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDIwNiwgMjE2LCAxMywgNDEsIDI2LCAzNywgNSwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDYsIDE0MiwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAzNywgNSwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDIxOSwgNjksIDI0MywgMjA1LCAxMywgNDEsIDI2LCAzNywgMjQxLCAzOCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMDksIDc1LCAKLSAgICA5NywgMTMsIDQxLCAyNiwgMzcsIDIyOSwgMjQ4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDIxOCwgMTkzLCA5NywgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDIxNiwgNjAsIDk3LCAxMywgNDEsIDI2LCAzNywgMjE4LCAxNjgsIDk3LCAxMywgMjYsIDYsIDI0MywgMTk5LCAKLSAgICAxMywgMjYsIDUsIDI0MywgMTk5LCAxMywgMjYsIDE3LCAyMDIsIDg0LCAxMywgMjYsIDE3LCAxMDUsIDEzLCAyNiwgMTcsIAotICAgIDEwOCwgMTMsIDI2LCAxNywgMTQ3LCAxMywgMjYsIDE3LCAxNDksIDEzLCAyNiwgMTcsIDE3MCwgMTMsIDI2LCAxNywgMTk1LCAKLSAgICAxMywgMjYsIDE3LCAyMTMsIDExMSwgMTMsIDI2LCAxNywgMTk5LCAxMywgMjYsIDE3LCAyMjIsIDYzLCAxMywgMTY5LCAxNywgCi0gICAgMjAyLCA4NCwgMTMsIDE2OSwgMTcsIDEwNSwgMTMsIDE2OSwgMTcsIDEwOCwgMTMsIDE2OSwgMTcsIDE0NywgMTMsIDE2OSwgCi0gICAgMTcsIDE0OSwgMTMsIDE2OSwgMTcsIDE3MCwgMTMsIDE2OSwgMTcsIDE5NSwgMTMsIDE2OSwgMTcsIDIxMywgMTExLCAxMywgCi0gICAgMTY5LCAxNywgMTk5LCAxMywgMTY5LCAxNywgMjIyLCA2MywgMTMsIDQxLCAxNywgMjAyLCA4NCwgMTMsIDQxLCAxNywgMTA1LCAKLSAgICAxMywgNDEsIDE3LCAxMDgsIDEzLCA0MSwgMTcsIDE0NywgMTMsIDQxLCAxNywgMTQ5LCAxMywgNDEsIDE3LCAxNzAsIDEzLCAKLSAgICA0MSwgMTcsIDE5NSwgMTMsIDQxLCAxNywgMjEzLCAxMTEsIDEzLCA0MSwgMTcsIDE5OSwgMTMsIDQxLCAxNywgMjIyLCA2MywgCi0gICAgMTMsIDQxLCAyNiwgMTcsIDIwMiwgODQsIDEzLCA0MSwgMjYsIDE3LCAxMDUsIDEzLCA0MSwgMjYsIDE3LCAxMDgsIDEzLCAKLSAgICA0MSwgMjYsIDE3LCAxNDcsIDEzLCA0MSwgMjYsIDE3LCAxNDksIDEzLCA0MSwgMjYsIDE3LCAxNzAsIDEzLCA0MSwgMjYsIAotICAgIDE3LCAxOTUsIDEzLCA0MSwgMjYsIDE3LCAyMTMsIDExMSwgMTMsIDQxLCAyNiwgMTcsIDE5OSwgMTMsIDQxLCAyNiwgMTcsIAotICAgIDIyMiwgNjMsIDEzLCAyMjQsIDQxLCAxNywgMjAyLCA4NCwgMTMsIDIyNCwgNDEsIDE3LCAxMDUsIDEzLCAyMjQsIDQxLCAxNywgCi0gICAgMTA4LCAxMywgMjI0LCA0MSwgMTcsIDE0NywgMTMsIDIyNCwgNDEsIDE3LCAxNDksIDEzLCAyMjQsIDQxLCAxNywgMTcwLCAKLSAgICAxMywgMjI0LCA0MSwgMTcsIDE5NSwgMTMsIDIyNCwgNDEsIDE3LCAyMTMsIDExMSwgMTMsIDIyNCwgNDEsIDE3LCAxOTksIAotICAgIDEzLCAyMjQsIDQxLCAxNywgMjIyLCA2MywgMjEsIDEyOCwgMjMxLCAzNSwgMjEsIDIzNywgMTIwLCAyMzEsIDM1LCAyMSwgCi0gICAgMjM3LCAxMTYsIDIzMSwgMzUsIDIxLCAyMzcsIDEwNSwgMjMxLCAzNSwgMjEsIDIzNywgMTA5LCAyMzEsIDM1LCAyMSwgMjM3LCAKLSAgICAxMjIsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDEyMCwgMTIyLCAyNDgsIDExNywgMjEsIAotICAgIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIAotICAgIDEyOCwgMTIyLCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDIzNiwgMjM2LCAyMjcsIAotICAgIDAsIDIxLCAyMzcsIDEyMCwgMTIyLCAyMzYsIDIzNywgMjEsIDEyOCwgMTIyLCAyMjQsIDE0OCwgMjEsIDIzNywgMTIwLCAKLSAgICAxMjIsIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMTYsIDE4OCwgCi0gICAgMjI5LCAyOCwgMjEsIDEyOCwgMTIyLCAxMDEsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNSwgCi0gICAgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNiwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA3LCAyMSwgCi0gICAgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTAxLCAKLSAgICAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAKLSAgICAyMDgsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMjcsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDI0NSwgCi0gICAgMTI3LCAyMSwgMTI4LCAxMDEsIDI0OCwgMTE4LCAxMTUsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMjQ4LCAxMTgsIDExNSwgCi0gICAgMjI0LCAxNDgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMDksIDIxLCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyMDksIDIxLCAKLSAgICAyMSwgMTI4LCAxMjIsIDEwMSwgMjExLCA1MywgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0OCwgMTE4LCAKLSAgICAxNDgsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjM2LCAKLSAgICAyMzYsIDIxMSwgMTg2LCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNiwgMTQ4LCAyMTIsIAotICAgIDE1NSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzYsIDE0OCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDEyMiwgMjM2LCAKLSAgICAyMzYsIDEwMSwgMTEyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTEyLCAyMTEsIDE4NiwgMTQ4LCAyMzksIAotICAgIDE1MSwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ2LCA2MCwgCi0gICAgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjM2LCAxMTQsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDIzNiwgMjM1LCAyMSwgCi0gICAgMTI4LCAxNDgsIDI0OCwgMTA0LCAxMjIsIDEwMSwgMjExLCA1MiwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIAotICAgIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjEyLCAxNTYsIDI0NSwgMjA3LCAyMSwgMTI4LCAKLSAgICAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjEyLCAxNTYsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMDEsIDE0OCwgMjM2LCAxMTUsIAotICAgIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzYsIDExNSwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAKLSAgICAxMDEsIDI0NSwgMjA4LCAyMzYsIDIzNiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTI4LCAxNDgsIAotICAgIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDEyMiwgMTAxLCAKLSAgICAyNDUsIDIwOCwgMjQ1LCA5OCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTAxLCAxNDgsIDI0NSwgOTgsIDEyMiwgMjA2LCAKLSAgICAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDk4LCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgNDMsIAotICAgIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCA0MywgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxNDgsIAotICAgIDI1MCwgMjE2LCAyMTksIDIxMiwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDI1MCwgMjE2LCAyMzEsIDUwLCAKLSAgICAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgNDMsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTAxLCAKLSAgICAxNDgsIDI0NSwgMjA4LCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjUwLCAyMTYsIDIxOSwgMjExLCAyMSwgCi0gICAgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNTAsIDIxNSwgMjEsIDEyOCwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMiwgMTIyLCAKLSAgICAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMiwgMTIyLCAyNDUsIDEyNywgMjEsIDEyOCwgCi0gICAgMTAxLCAxNDgsIDI1MCwgMjE2LCAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM2LCAxMTUsIDEwMSwgMjM2LCAKLSAgICAyMzUsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjUzLCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgCi0gICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyMzYsIDIzNSwgMjEsIDIzNywgMTExLCAyMzksIAotICAgIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDgsIDIxMSwgCi0gICAgMTkzLCAyMSwgMjM3LCAxMTgsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDIzOSwgMTQ3LCAyMzksIAotICAgIDI1NCwgMjQ1LCAyMDgsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMDksIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAKLSAgICAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgCi0gICAgMjM5LCAyNTQsIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzOSwgMTQ3LCAKLSAgICAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzksIDE0NywgCi0gICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIAotICAgIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAKLSAgICAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTE2LCAyMzksIDIzMywgMjM5LCAyNTQsIAotICAgIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIyMCwgOCwgMjEsIDIzNywgCi0gICAgMTA5LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMjAsIDgsIDIxLCAyMzcsIDEwNSwgMjM5LCAyMzMsIDIzOSwgCi0gICAgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNSwgMjEsIAotICAgIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgCi0gICAgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNiwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIAotICAgIDExMCwgMjEsIDIzNywgMTExLCAyNDgsIDEwNCwgMjE5LCAxMzUsIDI0MCwgOTQsIDIxLCAyMzcsIDExMSwgMjM3LCA0NSwgCi0gICAgMjEsIDIzNywgMTExLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIzNywgNDYsIDE0OCwgMjEyLCAxNTUsIDIxLCAKLSAgICAyMzcsIDExMSwgMTQ4LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMTEsIDIxMSwgCi0gICAgMTk0LCAxMjIsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDI0NiwgMjE3LCAyMSwgMjM3LCAxMTEsIAotICAgIDIxMSwgMTk0LCAyNDYsIDIxOCwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjQ2LCAyMTgsIDE0OCwgCi0gICAgMjEyLCAxNTYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyMjcsIDg1LCAyMSwgMjM3LCAxMTcsIDIxLCAKLSAgICAyMzcsIDExOCwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTE4LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTE4LCAKLSAgICAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMDcsIDI0NSwgOTQsIDIxLCAyMzcsIDEwNiwgMjEsIDIzNywgMTE2LCAyMjAsIDgsIAotICAgIDIxLCAyMzcsIDExNSwgMjEsIDIzNywgMTE2LCAxNzEsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExNiwgMTQ4LCAyMTIsIAotICAgIDE1NSwgMjEsIDIzNywgMTE2LCAxNzEsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTYsIDIyMSwgMTkyLCAyMDksIAotICAgIDIxLCAyMSwgMjM3LCAxMTYsIDE3MSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTE2LCAxNDgsIDIzOSwgMTUxLCAyMSwgCi0gICAgMjM3LCAxMTQsIDIyMCwgOCwgMjEsIDIzNywgMTEzLCAyMSwgMjM3LCAxMTksIDIxLCAyMzcsIDEwNCwgMjEsIDIzNywgMTA1LCAKLSAgICAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDUsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDUsIDE0OCwgMjM5LCAKLSAgICAxNTEsIDIxLCAyMzcsIDEwOSwgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDE3MSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgCi0gICAgMTA4LCAyMSwgMjM3LCAxMDksIDIxMiwgMzYsIDIxLCAyMzcsIDEwOSwgMTcxLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAKLSAgICAxMDksIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDEwOSwgMTcxLCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAKLSAgICAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAxNDgsIDIxMiwgMTU2LCAyMDgsIDEyNywgMjMxLCAzNSwgMjEsIAotICAgIDIzNywgMTA5LCAxNDgsIDI0OCwgMTA0LCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMjEsIDIxLCAxMjgsIDEyMiwgMTAxLCAKLSAgICAyMTUsIDI1MiwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEwOSwgMTIyLCAxMDEsIDIxNSwgCi0gICAgMjUyLCAyMSwgMjM3LCAxMjIsIDEyMiwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTA5LCAyMjcsIDg1LCAyMSwgMTI4LCAKLSAgICAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0NSwgMjA3LCAyMSwgCi0gICAgMjM3LCAxMDksIDEyMiwgMTAxLCAyMTUsIDI1MywgMjQ1LCAyMDcsIDIxLCAxMjgsIDIyNywgODYsIDI0MiwgNzAsIDIxLCAKLSAgICAxMjgsIDIyNywgODYsIDEyMSwgMjE1LCAyNDgsIDIxMSwgNTIsIDIxLCAxMjgsIDIyNywgODYsIDEyMSwgMjE1LCAyNDgsIAotICAgIDI0NSwgODUsIDIxLCAxMjgsIDIyNywgODYsIDEyMSwgMjE5LCAyMjAsIDI0NiwgNjAsIDIxLCAxMjgsIDIyNywgODYsIDIwNiwgCi0gICAgMjI0LCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAyMjcsIDg2LCAyMDYsIDIyNCwgMjEsIDIzNywgMTIwLCAyMjcsIDg2LCAKLSAgICAyMDYsIDIyNCwgMjEsIDIzNywgMTA1LCAyMjcsIDg2LCAyMDYsIDIyNCwgMjEsIDIzNywgMTIyLCAyMjcsIDg2LCAyMDYsIAotICAgIDIyNCwgMjEsIDEyOCwgMjI3LCA4NiwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDIyNywgODYsIDI0OCwgMTE3LCAyMSwgCi0gICAgMTI4LCAyMjcsIDg2LCAyMDgsIDEyOCwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAKLSAgICAyMjcsIDg2LCAyMDksIDIxLCAyMSwgMTI4LCAyMjcsIDg2LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NiwgCi0gICAgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMjIsIDIyNywgODYsIDEyMiwgMTQ4LCAxMjIsIDE0OCwgMjE5LCAyMTEsIDIxLCAKLSAgICAyMzcsIDEyMiwgMjI3LCA4NiwgMTIyLCAxNDgsIDEyMiwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIAotICAgIDIzNywgMTIwLCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDksIDIyNywgODYsIDIzMSwgMzUsIDIxLCAyMzcsIDEyMiwgCi0gICAgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIAotICAgIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMjE1LCAyNTIsIDIxLCAKLSAgICAyMzcsIDEyMiwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEzMSwgMjI3LCA4NSwgMjEsIAotICAgIDIzNywgMTIwLCAxMjIsIDEwMSwgMjQ1LCAxMzEsIDIyNywgODUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyNDIsIDcwLCAyMSwgCi0gICAgMjM3LCAxMDksIDIxNSwgMjUzLCAxMjEsIDEyMiwgMTQ4LCAyMzYsIDExNiwgMjI0LCAxNDgsIDIxLCAyMzcsIDEyMiwgMjE1LCAKLSAgICAyNTMsIDEyMSwgMTAxLCAxNDgsIDEyMiwgMjQ1LCAxMzAsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMDYsIDIyNCwgMjEsIDEyOCwgCi0gICAgMjE1LCAyNTMsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAKLSAgICAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTA1LCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIyLCAyMTUsIAotICAgIDI1MywgMjI3LCA4NSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIyNCwgMTQ4LCAyMSwgMTI4LCAyMTUsIDI1MywgMTAxLCAyNDUsIAotICAgIDIwNywgMjEsIDEyOCwgMjE1LCAyNTMsIDEwMSwgMjE2LCAxODgsIDIyOSwgMjgsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMzEsIAotICAgIDM1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjA5LCAyMSwgMjEsIDIzNywgMTA3LCAyMTUsIDI1MywgMjA5LCAyMSwgMjEsIDEyOCwgCi0gICAgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAKLSAgICAxMTQsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIyMCwgMzEsIDIxLCAyMzcsIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCAKLSAgICA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjMxLCA0OSwgMjEsIDIzNywgCi0gICAgMTA3LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMDYsIDI0NywgMjEsIDIzNywgMTE2LCAxMjIsIDIxNSwgMjUzLCAyMjcsIAotICAgIDg1LCAyMSwgMjM3LCAxMDksIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMiwgMTIyLCAyMTUsIDI1MywgCi0gICAgMjI3LCA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDEyOCwgMTAxLCAKLSAgICAyNDIsIDcwLCAyMSwgMjM3LCAxMDksIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMDEsIDIwNiwgMjI0LCAyMSwgMjM3LCAxMjAsIAotICAgIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDEwMSwgMTEyLCAxNDgsIAotICAgIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDcsIDEwMSwgMjA5LCAyMSwgMjEsIDEyOCwgMTAxLCAxNDgsIDIyNywgODUsIDIxLCAKLSAgICAxMjgsIDEwMSwgMjI3LCA4NSwgMjEsIDEyOCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMDEsIAotICAgIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMTQsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDIyMCwgMzEsIDIxLCAKLSAgICAyMzcsIDExNiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTA5LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAKLSAgICAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAKLSAgICAyNTMsIDIyNywgODYsIDIzMSwgNDksIDIxLCAyMzcsIDEyMiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgCi0gICAgMTIwLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDgsIDExNywgMjEsIDIzNywgMTE4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIAotICAgIDg2LCAyNDUsIDIwNywgMjEsIDIzNywgMTE4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjEyLCAxNTUsIAotICAgIDIxLCAyMzcsIDEwNywgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIxOSwgMjExLCAyMSwgMjM3LCAxMDcsIAotICAgIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMDcsIDEwMSwgMjE1LCAyNTMsIAotICAgIDIyNywgODYsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMDksIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIAotICAgIDE1NSwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTQ4LCAKLSAgICAyNDMsIDIyNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAxNDgsIDI0NSwgMjA3LCAyMSwgMTI4LCAxMjIsIDE0OCwgCi0gICAgMjEyLCAxNTYsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTIyLCAyNDgsIDExNywgMjEsIAotICAgIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAyNDcsIDI1MSwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgCi0gICAgMTIyLCAyMzYsIDIzNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIzOSwgMTUyLCAxMjIsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgCi0gICAgMTQ4LCAyMzksIDE1MiwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxNDgsIDExMywgMjEsIDEyOCwgMTIyLCAxNDgsIAotICAgIDI0NSwgOTQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDg4LCAxNDgsIDIzMSwgNiwgMjEsIDIzNywgMTE4LCAxMjIsIDE0OCwgCi0gICAgMjQ1LCA4OCwgMTQ4LCAyMzEsIDYsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDg4LCAxNDgsIDIwNiwgMjQ3LCAyMSwgMTI4LCAKLSAgICAxMjIsIDE0OCwgMjQ2LCA2MSwgMjEsIDIzNywgMTE2LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDExNiwgMTIyLCAxNDgsIAotICAgIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMjgsIDcsIAotICAgIDIxLCAyMzcsIDEwOSwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMTIsIDM2LCAyMSwgMjM3LCAKLSAgICAxMjIsIDEyMiwgMTQ4LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMjIsIDE0OCwgMjMxLCA0OSwgMjEsIDIzNywgMTIyLCAKLSAgICAxMjIsIDIwOSwgMjEsIDIxLCAxMjgsIDIwOSwgMjEsIDIxLCAxMjgsIDE0OCwgMjM3LCA0NSwgMjEsIDEyOCwgMTQ4LCAyMTIsIAotICAgIDE1NiwgMjQzLCAyMjcsIDIxLCAxMjgsIDE0OCwgMjEyLCAxNTYsIDI0NSwgMjA3LCAyMSwgMTI4LCAxNDgsIDIxMiwgMTU2LCAKLSAgICAyNDgsIDExNywgMjEsIDEyOCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTIyLCAyMjQsIDE0OCwgCi0gICAgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTAxLCAyMTUsIDI1MiwgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMjE1LCAyNTMsIAotICAgIDIyNywgODUsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyMCwgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMTE1LCAxMjAsIAotICAgIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjYsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAKLSAgICAyMzksIDE0NywgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMTE1LCAyMzksIDE0NywgMjE2LCAxODgsIDIyOSwgMjgsIDIxLCAKLSAgICAyMzcsIDExMiwgMjEsIDEyOCwgMjM3LCA0NSwgMjEsIDIwOCwgMTI5LCAyMTIsIDExOSwgMjEsIDIwOCwgMTI5LCAyMjMsIAotICAgIDIyNSwgMjEsIDIwOCwgMTI5LCAyNDgsIDEwMywgMjEsIDIzOCwgMiwgMjEyLCAxMTksIDIxLCAyMzgsIDIsIDIyMywgMjI1LCAKLSAgICAyMSwgMjM4LCAyLCAyNDgsIDEwMywgMjEsIDIxMSwgMzcsIDIxMiwgMTE5LCAyMSwgMjExLCAzNywgMjIzLCAyMjUsIDIxLCAKLSAgICAyMTEsIDM3LCAyNDgsIDEwMywgMjEsIDI0NywgMjAxLCAyMTIsIDExOSwgMjEsIDI0NywgMjAxLCAyMjMsIDIyNSwgMjEsIAotICAgIDI0NywgMjAxLCAyNDgsIDEwMywgMjEsIDIxNSwgMTQzLCAyMTIsIDExOSwgMjEsIDIxNSwgMTQzLCAyMjMsIDIyNSwgMjEsIAotICAgIDIxNSwgMTQzLCAyNDgsIDEwMywgMjEsIDIxMCwgMTg5LCAyMTAsIDEwMiwgMjEsIDIxMCwgMTg5LCAyNDgsIDEwMywgMjEsIAotICAgIDIxMSwgMTczLCAyMjgsIDgsIDIxMiwgMTE5LCAyMSwgMjExLCAxNzMsIDUsIDIxMiwgMTE5LCAyMSwgMjExLCAxNzMsIDIyOCwgCi0gICAgOCwgMjIzLCAyMjUsIDIxLCAyMTEsIDE3MywgNSwgMjIzLCAyMjUsIDIxLCAyMTEsIDE3MywgMjEzLCAxMjYsIDIxLCAyMzksIAotICAgIDIwOCwgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIzOSwgMjA4LCA1LCAyMTIsIDExOSwgMjEsIDIzOSwgMjA4LCAyMjgsIDgsIAotICAgIDIyMywgMjI1LCAyMSwgMjM5LCAyMDgsIDUsIDIyMywgMjI1LCAyMSwgMjM5LCAyMDgsIDIxMywgMTI2LCAyMSwgMjExLCAKLSAgICAxNzMsIDIzOSwgMjA4LCAyNTAsIDI1MiwgMjEsIDIyNCwgMCwgMTEyLCAxMjEsIDIyOCwgNywgMjEsIDIyNCwgMCwgMTEyLCAKLSAgICAxMjEsIDIxMiwgMzYsIDIxLCAyMjQsIDAsIDExMiwgMjEzLCAxMjYsIDIxLCAyMjQsIDAsIDEyMSwgMjEzLCAxMjYsIDIxLCAKLSAgICAyMjQsIDAsIDExMiwgMTIxLCAyNTAsIDI1MywgMjI4LCA3LCAyMSwgMjI0LCAwLCAxMTIsIDEyMSwgMjUwLCAyNTMsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjQsIDAsIDIxMiwgMTU2LCAyMDgsIDE3MywgMjEyLCAxNTYsIDIxNCwgMTkwLCAyMSwgMjIzLCAyNTUsIAotICAgIDI0MCwgMywgMjQ1LCAxOTcsIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ1LCAxOTcsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIAotICAgIDIxMSwgNTMsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAKLSAgICAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDUsIDIxLCAKLSAgICAyMjMsIDI1NSwgMjEyLCAxMjAsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCA1MiwgMjExLCA1MiwgMjEsIAotICAgIDIyMywgMjU1LCA1MiwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDUyLCAyNTAsIDI1MiwgMjEsIDIyMywgCi0gICAgMjU1LCA1MiwgMjUwLCAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCAyNDUsIDEzMCwgMjEsIDIyMywgCi0gICAgMjU1LCAyMDgsIDcwLCAyMTEsIDUzLCAyMjQsIDMsIDIxLCAyMjMsIDI1NSwgMjA4LCA3MCwgMjAzLCAyMjEsIDIzOSwgMjExLCAKLSAgICAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDI1MCwgMjUyLCAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDI1MCwgMjUzLCAyMDMsIAotICAgIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIAotICAgIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDgsIDEyMSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMTIsIDM2LCAKLSAgICAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ1LCAxNjYsIDIyOCwgNywgMjEsIDIyMywgCi0gICAgMjU1LCAyNDUsIDE2NiwgMjE1LCAxOTYsIDIxLCAyMjMsIDI1NSwgMjQ2LCAxNjksIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQ2LCAxNjksIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDYsIDE2OSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDk4LCAyMTIsIAotICAgIDM2LCAyMSwgMjIzLCAyNTUsIDk4LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgOTgsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAKLSAgICAyMDIsIDMwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwMiwgMzAsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMDIsIDMwLCAKLSAgICAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMTksIDMwLCAyMjUsIDksIAotICAgIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjI4LCA3LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjA4LCAKLSAgICA5OSwgMjE1LCAxOTQsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NCwgMjUwLCAyNTIsIDIxLCAyMDgsIDk5LCAyMTUsIAotICAgIDE5NSwgMjEyLCAxMTksIDIxLCAyMDgsIDk5LCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDIxNSwgMTk1LCAKLSAgICAyNTAsIDI1MiwgMjEsIDIwOCwgOTksIDIxMywgNzEsIDIxLCAyMDgsIDk5LCAyNTAsIDEwNywgMjExLCAyMDIsIDIxMiwgCi0gICAgMTE5LCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIDIxMSwgMjAyLCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIAotICAgIDIxMSwgMjAyLCAyMDgsIDY5LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAKLSAgICAyMjUsIDksIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjI4LCA1LCAyMSwgCi0gICAgMjI0LCAyLCAyMDgsIDEyMywgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjA4LCAxMjMsIDIyNSwgOSwgMjEsIDIyNCwgMiwgMjA4LCAKLSAgICAxMjMsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjA4LCAxMjMsIDIyOCwgNSwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDI1MCwgMTIsIAotICAgIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAyMjUsIDksIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAKLSAgICAyNTAsIDEyLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAyMjgsIDUsIDIxLCAyMjQsIDIsIDI0OCwgCi0gICAgMTA0LCAyMDgsIDEyMywgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjUsIDksIDIxLCAyMjQsIAotICAgIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyOCwgNSwgCi0gICAgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAKLSAgICAyMjUsIDksIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIAotICAgIDUzLCAyMjgsIDUsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDUyLCAKLSAgICAyMTEsIDUyLCAyMSwgMjI0LCAxLCA1MiwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCA1MiwgMjUwLCAyNTIsIAotICAgIDIxLCAyMjQsIDEsIDUyLCAyNTAsIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCAyNDUsIDEzMCwgMjEsIAotICAgIDIyNCwgMSwgMjA4LCA3MCwgMjExLCA1MywgMjI0LCAzLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyMDMsIDIyMSwgMjM5LCAKLSAgICAyMTEsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDI1MCwgMjUzLCAyMjQsIDMsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDI1MCwgCi0gICAgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDI0OCwgMTIwLCAyMSwgMjI0LCAxLCAyNDUsIDE2NiwgMjEyLCAKLSAgICAzNiwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIyOCwgNywgMjEsIDIyNCwgCi0gICAgMSwgMjQ2LCAxNjgsIDIxLCAyMjQsIDEsIDk4LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCA5OCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAKLSAgICA5OCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMjUsIDksIAotICAgIDIxLCAyMjQsIDEsIDIwMiwgMzAsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjE5LCAzMCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgCi0gICAgMjE5LCAzMCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyMTksIDMwLCAyMjgsIDcsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTUsIAotICAgIDIxMiwgMTE5LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAyNTAsIAotICAgIDI1MiwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDI0MiwgNzgsIAotICAgIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDI1MCwgMjUyLCAyMSwgMjA4LCAxMDAsIDIxMywgNzEsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQ1LCA4OCwgMjE3LCA1NiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjUsIDksIDIxLCAKLSAgICAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyOCwgCi0gICAgNSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIDEzNiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIAotICAgIDEzNiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIzNywgMTM2LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAKLSAgICA4OCwgMjM3LCAxMzYsIDIyOCwgNSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMDksIDI3LCAyNDYsIDYyLCAyMTIsIDM2LCAKLSAgICAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIwOSwgMjcsIDI0NiwgNjIsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAKLSAgICAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMjgsIDcsIAotICAgIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMjUsIDksIDIxLCAyMjMsIAotICAgIDI1NSwgMjI3LCAxNSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDUsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIyNSwgCi0gICAgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCA1MiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAotICAgIDI0NSwgODgsIDIwOCwgNzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgMjA4LCA3MCwgMjI1LCAKLSAgICA5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDIwOCwgNzAsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIAotICAgIDg4LCAyMDksIDg0LCAyMTEsIDUyLCAyMSwgMjIzLCAyNTUsIDI0NSwgODYsIDI0NSwgMTMxLCAyMTIsIDM2LCAyMSwgMjIzLCAKLSAgICAyNTUsIDI0NSwgODYsIDI0NSwgMTMxLCAyMjUsIDksIDIxLCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMTUsIDE5NCwgCi0gICAgMjQyLCA3OCwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1NCwgMjEsIDIyMywgMjU1LCAyMTMsIDcxLCAyMSwgMjIzLCAyNTUsIAotICAgIDI0NSwgODgsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMzYsIDIyOSwgCi0gICAgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCAyMTIsIAotICAgIDEyMCwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDUyLCAyMzYsIDIyOSwgMjM5LCAxMTksIAotICAgIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgCi0gICAgMjU1LCAyNDUsIDg4LCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgCi0gICAgMTQ5LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKLSAgICAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIDE5NCwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgCi0gICAgMTk0LCA1MiwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjQ2LCAxNDksIAotICAgIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQzLCAyMjgsIDIxOSwgNTIsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCi0gICAgMjQzLCAyMjgsIDIxOSwgNTIsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDMsIDIyOCwgMjE5LCA1MiwgMjI4LCAKLSAgICA3LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDI0NSwgODgsIAotICAgIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIAotICAgIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyNDIsIDc4LCAyMSwgCi0gICAgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIzNiwgMTQsIAotICAgIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAKLSAgICAyMjcsIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjEyLCAKLSAgICAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgCi0gICAgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgCi0gICAgMjI5LCAyNDYsIDIyNywgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDcsIAotICAgIDIxLCAyMTUsIDE5NSwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyNDYsIDIyNiwgMjEsIDIxNSwgMTk1LCA1MiwgMjM2LCAyMjksIAotICAgIDI0NiwgMjI2LCAyMSwgMjE1LCAxOTUsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjQ2LCAyMjYsIDIxLCAyMjQsIDEsIDI0NSwgCi0gICAgODgsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjM2LCAyMjksIDIzOSwgMjA1LCAKLSAgICAyMjgsIDcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIDIwNSwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgCi0gICAgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgCi0gICAgMjI5LCAyMzksIDIwNSwgMjA4LCA3MCwgNSwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgCi0gICAgMjA1LCAyMDgsIDcwLCAyMjgsIDgsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgCi0gICAgNSwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyMTIsIDExOSwgCi0gICAgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMjA1LCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAKLSAgICAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgCi0gICAgMjA1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgNywgMjEsIDIxNSwgCi0gICAgMTk1LCAyMTIsIDEyMCwgMjM2LCAyMjksIDIzOSwgMjA0LCAyMSwgMjE1LCAxOTUsIDUyLCAyMzYsIDIyOSwgMjM5LCAyMDQsIAotICAgIDIxLCAyMTUsIDE5NSwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyMzksIDIwNCwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjEyLCAzNiwgCi0gICAgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMjgsIDcsIDIxLCAyMjQsIDEsIAotICAgIDI0NSwgODgsIDIyOCwgNSwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjQ1LCAyMzcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIxMiwgMjQsIDIxLCAyMjQsIAotICAgIDEsIDIwNCwgNzYsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIyOCwgNywgMjEsIDIxNSwgMTk1LCAyMTIsIDExOSwgCi0gICAgMjEsIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjE1LCAxOTUsIDI1MCwgMjUyLCAyMSwgMjI0LCAxLCAyMTMsIDcyLCAyMTksIAotICAgIDgxLCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCA1LCAyMTIsIDExOSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgCi0gICAgMjQ2LCA2MiwgMjI1LCAxMCwgMjEyLCAxMTksIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDUsIDI0MiwgNzgsIAotICAgIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIyNSwgMTAsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAKLSAgICAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgCi0gICAgMjM2LCAyMjksIDIwNCwgMTAwLCAyMjUsIDEwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIAotICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgCi0gICAgMjI5LCAyMDQsIDEwMCwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIAotICAgIDEwMCwgMjI1LCAxMCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgCi0gICAgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIDIwMywgMjIxLCAyNDYsIDYyLCAyMzksIDExOSwgMjEyLCAxMTksIDIxLCAKLSAgICAyMjMsIDI1NSwgMjAzLCAyMjEsIDI0NiwgNjIsIDIzOSwgMTE5LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDMsIDIyMSwgCi0gICAgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjAzLCAyMjEsIDI0NiwgNjIsIAotICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAyNDAsIDMsIDI0NiwgNTksIDIxMiwgMTE5LCAyMSwgCi0gICAgMjIzLCAyNTUsIDI0MCwgMywgMjQ2LCA1OSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDYsIDU5LCAyMzYsIAotICAgIDIyOSwgMjA0LCAxMDAsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NiwgNTksIDIzNiwgMjI5LCAyMDQsIDEwMCwgCi0gICAgMjQyLCA3OCwgMjEsIDI0MiwgNCwgMjUwLCA5NSwgMjEyLCAzNiwgMjEsIDI0MiwgNCwgMjUwLCA5NSwgMjI4LCA3LCAyMSwgCi0gICAgMjQyLCA0LCAyNDAsIDc0LCAyMSwgMjQyLCA0LCAyMTIsIDM5LCAyMSwgMjQyLCA0LCAyMDksIDE0NSwgMjEsIDI0MiwgNCwgCi0gICAgMjE2LCAxMTUsIDIxLCAyNDIsIDQsIDIxMiwgMTI1LCAyMSwgMjQyLCA0LCAyMTIsIDEyNiwgMjUwLCAyNTIsIDIxLCAyNDIsIAotICAgIDQsIDI0MCwgMjIxLCAyMTksIDIyMSwgMjA4LCAyMjEsIDIxLCAyNDIsIDQsIDIzOCwgMTIsIDIxLCAyMzcsIDY0LCAyMSwgCi0gICAgMjM3LCA2NSwgMjE2LCAxLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIDIxMSwgNTIsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgCi0gICAgMjA4LCAyMjQsIDIxLCAyMzcsIDY1LCAyMjQsIDEsIDIxMSwgNTIsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgMjQ1LCA4NywgCi0gICAgMjEsIDIzNywgNjUsIDIyNCwgMSwgMjQ1LCA4NywgMjEsIDIzNywgNjUsIDIyNCwgNCwgMjQ2LCA2MSwgMjEsIDI0MCwgMTAzLCAKLSAgICAyNDMsIDE2NiwgMjE4LCAzNCwgMjIxLCAxNjgsIDIzOSwgMTUyLCAyMDgsIDIyMiwgMjEsIDI0MCwgMTAzLCAyNDMsIDE2NiwgCi0gICAgMjE4LCAzNCwgMjIxLCAxNjgsIDExMiwgMjE5LCAyNDUsIDI0MiwgNzAsIDIxLCAyNDAsIDEwMywgMjQzLCAxNjYsIDIxOCwgCi0gICAgMzQsIDIyMSwgMTY4LCAxMTIsIDIxOSwgMjQ1LCAxMjEsIDIwOCwgMjIyLCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDIwNiwgCi0gICAgMjI0LCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDIyMiwgMjE1LCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDI0MiwgNzAsIDIxLCAKLSAgICAyNDIsIDU3LCAyNDAsIDE5MCwgMjIyLCAyMTYsIDI0MiwgNzAsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMTIxLCAyMjIsIAotICAgIDIxNSwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAxMTIsIDIyMiwgMjE1LCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDIyMiwgCi0gICAgMjE2LCAyMDYsIDIyNCwgMjEsIDIzOSwgMTY0LCAyMjIsIDIxNSwgMjEsIDIzOSwgMTY0LCAyNDUsIDE5NywgMjEsIDIzOSwgCi0gICAgMTY0LCAyMDMsIDIyNCwgMjEsIDI0MCwgMTg1LCAyMjAsIDgsIDIxLCAyNDAsIDE4NSwgMjExLCAxNzIsIDIxLCAyNDAsIAotICAgIDE4NSwgMjQ2LCAxNSwgMjEsIDI0MCwgMTkyLCAyNDgsIDM0LCAyMTIsIDExOSwgMjEsIDI0MCwgMTkyLCAyNDgsIDM0LCAKLSAgICAyMjMsIDIyNSwgMjEsIDI0MCwgMTg1LCAxNjIsIDIyMCwgOCwgMjEsIDI0MCwgMTg1LCAyMDQsIDI3LCAyMjAsIDgsIDIxLCAKLSAgICAyNDAsIDE4NSwgMTYyLCAyNDYsIDE1LCAyMSwgMjQwLCAxODUsIDIwNCwgMjUsIDIyNCwgMywgMjEsIDI0MCwgMTkyLCAyMDQsIAotICAgIDksIDIxLCAyNDAsIDE4NiwgMjA2LCAyMjQsIDIxLCAyNDAsIDE4NiwgMjQyLCA3MCwgMjEsIDI0MCwgMTg2LCAyMzksIDE5MSwgCi0gICAgMjEsIDI0MCwgMTg4LCAyMTEsIDUyLCAyMSwgMjQwLCAxODgsIDIxMSwgNTMsIDI0MiwgNzgsIDIxLCAyNDAsIDE4OCwgMjExLCAKLSAgICA1MywgMjUwLCAyNTIsIDIxLCAyNDAsIDE4OSwgMjExLCA1MiwgMjEsIDI0MCwgMTg5LCAyMTEsIDUzLCAyNDIsIDc4LCAyMSwgCi0gICAgMjQwLCAxODksIDIxMSwgNTMsIDI1MCwgMjUyLCAyMSwgMjQwLCAxODgsIDI0NSwgODUsIDIxLCAyNDAsIDE4OSwgMjQ1LCAKLSAgICA4NSwgMjEsIDI0MCwgMTg4LCAyNDYsIDU2LCAyMSwgMjQ2LCAxNjQsIDIxNywgMTgyLCAyMSwgMjQ2LCAxNjQsIDIyMiwgCi0gICAgMjE1LCAyMSwgMjQ2LCAxNjQsIDIxMCwgMjM0LCAyMSwgMjA5LCAxNDYsIDI0NiwgMTY0LCAyMzYsIDI0NCwgMjEsIDIwOSwgCi0gICAgMTQ2LCAyNDYsIDE2NCwgMjI0LCAxNDgsIDIxLCAyMDksIDE0NiwgMjQ2LCAxNjQsIDIyNywgMCwgMjEsIDI0MSwgMTgxLCAKLSAgICAyMSwgMjIxLCAxNjgsIDIyMiwgMjE1LCAyMSwgMjIxLCAxNjgsIDI0NSwgMTk3LCAyMSwgMjIxLCAxNjgsIDIwMywgMjIyLCAKLSAgICAyMSwgMjIxLCAxNjgsIDIwNCwgMjIsIDIxLCAyNTEsIDU1LCAyNDgsIDI3LCAyMTksIDIxMSwgMjEsIDI1MSwgNTUsIDIxMCwgCi0gICAgMjMzLCAyMzEsIDQ5LCAyMSwgMjUxLCA1NSwgMjQ4LCAyOSwgNSwgMjE1LCAxOTMsIDIxLCAyNTEsIDU1LCAyMTAsIDIzNSwgCi0gICAgNSwgMjE1LCAxOTMsIDIxLCAyNDcsIDIxNiwgMjMxLCAyMiwgMjEsIDI0NywgMjE2LCAyNDAsIDIxMCwgMjEsIDIyNCwgOCwgCi0gICAgMjQ2LCAxNiwgMjIyLCAyMTUsIDIxLCAyMjQsIDgsIDI0NiwgMTYsIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAyNDYsIDE2LCAKLSAgICAyNDUsIDE5NywgMjEsIDIyNCwgOCwgMjEyLCAzMSwgMjEsIDIyNCwgOCwgMjEyLCAzMiwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIAotICAgIDIxMiwgMzIsIDIyMCwgOCwgMjEsIDIyNCwgOCwgMjM5LCAxMTUsIDIxLCAyMjQsIDgsIDIzOSwgMTE2LCAyMDMsIDIyNCwgCi0gICAgMjEsIDIyNCwgOCwgMjM5LCAxMTYsIDIyMCwgOCwgMjEsIDIyNCwgOCwgMTcxLCAyNDYsIDYxLCAyMSwgMjI0LCA4LCAxNzEsIAotICAgIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAxNzEsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIDIxOSwgMjA0LCAyMSwgMjI0LCAKLSAgICA4LCAxNzEsIDIxOSwgMjA1LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAyMTksIDIwNSwgMjAzLCA1OSwgMjEsIDIyNCwgCi0gICAgOCwgMTcxLCAyMTYsIDE0MywgMjEsIDIyNCwgOCwgMTcxLCAyMTYsIDE0NCwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgCi0gICAgMjE2LCAxNDQsIDIwMywgNTksIDIxLCAyMjQsIDgsIDIyOSwgNjYsIDIxLCAyMjQsIDgsIDIyOSwgNjcsIDIzOSwgMTUxLCAKLSAgICAyMSwgMjI0LCA4LCAyMjksIDY3LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMjA5LCAxNDUsIDIxLCAyMjQsIDgsIDIwOSwgCi0gICAgMTQ2LCAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMjA5LCAxNDYsIDIxMCwgMjM0LCAyMSwgMjI3LCA5OSwgMjE3LCAyMzksIAotICAgIDIwOCwgMTY5LCAyMSwgMjI3LCAxMDEsIDIyNiwgMjUxLCAxMTUsIDIwNiwgMjIwLCAyMSwgMjI3LCAxMDEsIDIwNiwgMjIxLCAKLSAgICAxMTUsIDIyNiwgMjUwLCAyMSwgMjI0LCA4LCAyNDUsIDE2NCwgMjEsIDIyNCwgOCwgMjAzLCAyMjMsIDIxMiwgMTE5LCAyMSwgCi0gICAgMjI0LCA4LCAyMDMsIDIyMywgMjQyLCA3OCwgMjEsIDIwOCwgMTUxLCAyMTEsIDcyLCAyMTksIDIxMiwgMjQwLCA3NiwgMjEsIAotICAgIDIwOCwgMTUxLCAyMjcsIDE0NCwgMjI3LCA5OCwgMjEsIDIwOCwgMTUxLCAyMDgsIDIxMSwgMjQ4LCAxMDQsIDIyNywgOTgsIAotICAgIDIxLCAyMDgsIDE1MSwgMjA4LCAyMTEsIDIwOCwgMTI3LCAyMzEsIDcsIDIyNCwgNywgMjEsIDIwOCwgMTUxLCAyMzEsIDcsIAotICAgIDIyNCwgOCwgMjE2LCAxMTUsIDIxLCAyMDgsIDE1MSwgMjIzLCAyNTQsIDI1MSwgNzksIDI0NiwgMTY1LCAyMSwgMjA4LCAKLSAgICAxNTEsIDI0NiwgMjE4LCAyMTEsIDcyLCAyMTksIDIxMSwgMjEsIDIwOCwgMTUxLCAyNDYsIDIxOCwgMjMxLCA3LCAyMjQsIDcsIAotICAgIDIxLCAyMDksIDE3MiwgMjEsIDIwOSwgMTczLCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjIwLCAzMiwgMjA4LCAxNTAsIDIxLCAKLSAgICAyMDksIDE3MywgMjIwLCAzMiwgMjA4LCAxNTEsIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyMjAsIDMyLCAyMjcsIDk4LCAyMSwgCi0gICAgMjA5LCAxNzMsIDIyMCwgMzIsIDIyNywgOTksIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyNDgsIDUwLCAyMjcsIDk4LCAyMSwgCi0gICAgMjIzLCAyNTUsIDIzMCwgMTY1LCAyMSwgMjI0LCAxLCAyMzAsIDE2NSwgMjEsIDIyMiwgMjM3LCAyMSwgMjM3LCAxNDUsIDIxLCAKLSAgICAyNDAsIDIxMywgMjEsIDIxMiwgMjExLCAyMzYsIDIzNCwgMjExLCAyMDMsIDIxLCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIxOCwgCi0gICAgMzMsIDIxLCAyMDQsIDk4LCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIyNCwgNiwgMjEsIDIzOSwgMjAzLCAyMTIsIDIxMSwgMjM2LCAKLSAgICAyMzQsIDIyNCwgNiwgMjEsIDIxMiwgMjExLCAyMDgsIDIyMywgMjM5LCAxMjAsIDIwNCwgMTA0LCAyMSwgMjA4LCAxMzQsIAotICAgIDIxMSwgNTMsIDIxMSwgNDEsIDIxLCAyMDgsIDEzNCwgMjQ1LCA4NiwgMjQ4LCAxMjAsIDIxLCAyMDgsIDEzNSwgMjA3LCAKLSAgICAxMzcsIDIxLCAyMDYsIDIyMSwgMjQ4LCAxOCwgMjA4LCAyMjMsIDIzOSwgMTIwLCAyMzYsIDIzNCwgMjMwLCA5NSwgMjEsIAotICAgIDIyNywgMTI2LCAyNDUsIDIzOCwgMjEsIDIyNywgMTI2LCAyMjcsIDE5NSwgMjEsIDIyNywgMTI2LCAyMjcsIDE5NCwgMjEsIAotICAgIDIyNywgMTI2LCAyMjcsIDE5MywgMjEsIDIyNywgMTI2LCAyMjcsIDE5MiwgMjEsIDIyNywgMTI2LCAyMjcsIDE5MSwgMjEsIAotICAgIDIyNywgMTI2LCAyMjcsIDE5MCwgMjEsIDIyNywgMTI2LCAyMjcsIDE4OSwgMjEsIDI0MCwgMiwgMjEsIDIyNywgNDUsIDIxMSwgCi0gICAgMjI4LCAyMSwgMjI3LCA0NiwgMjExLCAyMjgsIDIxLCAyMjcsIDQ3LCAyMzcsIDQxLCAyMSwgMjI3LCA0NywgMjA0LCAyMywgCi0gICAgMjEsIDIyNywgNDcsIDI0NCwgMjQsIDIxLCAyMjcsIDQ3LCAyMzcsIDY1LCAyMjIsIDIzNywgMjEsIDIyNywgNDcsIDIwOCwgCi0gICAgMTM2LCAyMSwgMjI3LCA0NywgMjI3LCAxMjUsIDI0MywgMTk4LCAyMSwgMjQ1LCAyMzMsIDIxLCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgMjEsIDIxMywgMTQzLCAyMSwgMjQ1LCAyNDIsIDIxLCAyMTksIDc2LCAyMSwgMjQwLCAxMCwgMjI0LCA2NiwgMjEsIAotICAgIDI0MCwgMTAsIDIyNCwgNjUsIDIxLCAyNDAsIDEwLCAyMjQsIDY0LCAyMSwgMjQwLCAxMCwgMjI0LCA2MywgMjEsIDI0MCwgCi0gICAgMTAsIDIyNCwgNjIsIDIxLCAyMTUsIDE5NywgMjI0LCA2NiwgMjEsIDIxNSwgMTk3LCAyMjQsIDY1LCAyMSwgMjE1LCAxOTcsIAotICAgIDIyNCwgNjQsIDIxLCAyMTUsIDE5NywgMjI0LCA2MywgMjEsIDIxNSwgMTk3LCAyMjQsIDYyLCAyMSwgMjE1LCAxOTcsIDIyNCwgCi0gICAgNjEsIDIxLCAyMTUsIDE5NywgMjI0LCA2MCwgMjEsIDIxNSwgMTk3LCAyMjQsIDU5LCAyMSwgMjE1LCAxOTcsIDIyNCwgNzMsIAotICAgIDIxLCAyMTUsIDE5NywgMjI0LCA3MiwgMjEsIDIxNSwgMTk3LCAyMjQsIDcxLCAyMSwgMjE1LCAxOTcsIDIyNCwgNzAsIDIxLCAKLSAgICAyMTUsIDE5NywgMjI0LCA2OSwgMjEsIDIxNSwgMTk3LCAyMjQsIDY4LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjcsIDczLCA3MiwgCi0gICAgNCwgMjI2LCAxODQsIDIyOSwgMTAwLCA3MywgNzIsIDQsIDIyNiwgMTgwLCAxNzMsIDczLCA3MiwgNCwgMjI2LCAxNzgsIAotICAgIDIyOCwgMjA5LCA3MywgNzIsIDQsIDIyNiwgNTQsIDIyOSwgMTk4LCA3MywgNzIsIDQsIDIyNiwgMjQsIDIyOSwgMjAxLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgNDMsIDIyOSwgNiwgNzMsIDcyLCA0LCAyMjYsIDcxLCAyMjksIDI2LCA3MywgNzIsIDQsIDIyNSwgMTk2LCAKLSAgICAyMjgsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDE3NSwgMjA0LCAzMCwgNzMsIDcyLCA0LCAyMjYsIDE3MywgMjA0LCAxMTEsIAotICAgIDczLCA3MiwgNCwgMjI2LCAxNzEsIDIwMywgMjE3LCA3MywgNzIsIDQsIDIyNSwgMjQ5LCAyMDQsIDU1LCA3MywgNzIsIDQsIAotICAgIDIyNiwgMSwgMjA0LCA2MiwgNzMsIDcyLCA0LCAyMjYsIDUsIDIwMywgMjQ0LCA3MywgNzIsIDQsIDIyNiwgNzQsIDIwNCwgMCwgCi0gICAgNzMsIDcyLCA0LCAyMjUsIDE4MSwgMjAzLCAyMTMsIDczLCA3MiwgNCwgMjI1LCAyMzIsIDIwNCwgNTMsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA1OCwgMjAzLCAyMDEsIDczLCA3MiwgNCwgMjI2LCA3MCwgMjAzLCAyMDMsIDczLCA3MiwgNCwgMjI1LCAyMzYsIAotICAgIDIwMywgMjAyLCA3MywgNzIsIDQsIDIyNiwgMTY5LCAyMjQsIDExMCwgNzMsIDcyLCA0LCAyMjYsIDE2NywgMjI1LCAxMjIsIAotICAgIDczLCA3MiwgNCwgMjI2LCAxNjUsIDIyMywgMjE5LCA3MywgNzIsIDQsIDIyNiwgNjAsIDIyNCwgMjQwLCA3MywgNzIsIDQsIAotICAgIDIyNiwgMjUsIDIyNCwgNTQsIDczLCA3MiwgNCwgMjI1LCAyMjEsIDIyMywgMjQzLCA3MywgNzIsIDQsIDIyNSwgMTg2LCAKLSAgICAyMjMsIDIzNywgNzMsIDcyLCA0LCAyMjYsIDE2MywgMjQ4LCA4NiwgNzMsIDcyLCA0LCAyMjYsIDE2MCwgMjQ5LCAzMiwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDE1OCwgMjQ3LCAxOTMsIDczLCA3MiwgNCwgMjI1LCAyMjUsIDI0OCwgMTUwLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMjIsIDI0OCwgMTYyLCA3MywgNzIsIDQsIDIyNiwgMTYsIDI0OCwgMTAsIDczLCA3MiwgNCwgMjI1LCAyMzcsIDI0OCwgMjMsIAotICAgIDczLCA3MiwgNCwgMjI2LCAxNDgsIDc1LCA3MywgNzIsIDQsIDIyNiwgMTQ2LCA2MywgNzMsIDcyLCA0LCAyMjYsIDE0NCwgCi0gICAgNjgsIDczLCA3MiwgNCwgMjI1LCAyMTIsIDI0MSwgMTYxLCA3MywgNzIsIDQsIDIyNiwgMTksIDc0LCA3MywgNzIsIDQsIAotICAgIDIyNSwgMjEwLCAyMjAsIDE4LCA3MywgNzIsIDQsIDIyNSwgMjI4LCA3OCwgNzMsIDcyLCA0LCAyMjUsIDIzOCwgMjQxLCAKLSAgICAxNDUsIDczLCA3MiwgNCwgMjI1LCAyNDQsIDIzMSwgNDksIDczLCA3MiwgNCwgMjI1LCAyNDAsIDIzMSwgNDksIDczLCA3MiwgCi0gICAgNCwgMjI1LCAxODAsIDI1MCwgMjMxLCA3MywgNzIsIDQsIDIyNSwgMTk3LCAyNDEsIDkyLCA3MywgNzIsIDQsIDIyNiwgMTMzLCAKLSAgICAyMTIsIDE2MiwgNzMsIDcyLCA0LCAyMjYsIDEzMSwgMjE1LCAzNiwgNzMsIDcyLCA0LCAyMjYsIDEyOSwgMjExLCAxMCwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIxMywgMjE0LCAxNjUsIDczLCA3MiwgNCwgMjI2LCAzLCAyMTQsIDE3NywgNzMsIDcyLCA0LCAyMjUsIAotICAgIDIzOSwgMjExLCAyNTAsIDczLCA3MiwgNCwgMjI2LCA0MCwgMjEyLCAxMywgNzMsIDcyLCA0LCAyMjUsIDE3OSwgMjEyLCAKLSAgICAxNjEsIDczLCA3MiwgNCwgMjI2LCAxMTksIDIyNywgMTQ4LCA3MywgNzIsIDQsIDIyNiwgMTE3LCAyMjgsIDExMywgNzMsIAotICAgIDcyLCA0LCAyMjYsIDExNSwgMjI2LCAyMzksIDczLCA3MiwgNCwgMjI2LCAzNSwgMjI3LCAyMjYsIDczLCA3MiwgNCwgMjI2LCAKLSAgICA0NiwgMjI3LCAyMzQsIDczLCA3MiwgNCwgMjI2LCA2NSwgMjI3LCAxOCwgNzMsIDcyLCA0LCAyMjUsIDIyMiwgMjI3LCA0OSwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDksIDE2MywgMjI3LCAyMzQsIDczLCA3MiwgNCwgMjI2LCAxNDEsIDI0MywgMjMzLCA3MywgNzIsIAotICAgIDQsIDIyNiwgMTM4LCAyNDQsIDIxMiwgNzMsIDcyLCA0LCAyMjYsIDEzNSwgMjQyLCA0MiwgNzMsIDcyLCA0LCAyMjYsIDMwLCAKLSAgICAyNDQsIDYxLCA3MywgNzIsIDQsIDIyNSwgMTk1LCAyNDMsIDkwLCA3MywgNzIsIDQsIDIyNSwgMTk0LCAyNDMsIDExMywgNzMsIAotICAgIDcyLCA0LCAyMjYsIDEyNywgMjA5LCAyLCA3MywgNzIsIDQsIDIyNiwgMTI0LCAyMTAsIDIyLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMTIyLCAyMDcsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDI4LCAyMDksIDE3NiwgNzMsIDcyLCA0LCAyMjYsIDY0LCAyMDksIAotICAgIDE4NywgNzMsIDcyLCA0LCAyMjYsIDE1LCAyMDgsIDE0OCwgNzMsIDcyLCA0LCAyMjYsIDUwLCAxMzUsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAxMTMsIDIzMCwgMTQxLCA3MywgNzIsIDQsIDIyNiwgMTEwLCAyMzAsIDE4MSwgNzMsIDcyLCA0LCAyMjYsIDEwOCwgCi0gICAgMjMwLCA4MiwgNzMsIDcyLCA0LCAyMjUsIDIxOCwgMjMwLCAxNTksIDczLCA3MiwgNCwgMjI2LCA2LCAyMzAsIDE2MSwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIxNSwgMjMwLCA5MSwgNzMsIDcyLCA0LCAyMjYsIDU2LCAyMzAsIDEwMSwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDIwMCwgMTYzLCAyMzAsIDEwMSwgNzMsIDcyLCA0LCAyMjYsIDEwNiwgMjAzLCAxMSwgNzMsIDcyLCA0LCAyMjYsIDEwMywgCi0gICAgMTk4LCA3MywgNzIsIDQsIDIyNiwgMTAxLCAyMDIsIDIxMywgNzMsIDcyLCA0LCAyMjYsIDEwLCAyMDMsIDQ5LCA3MywgNzIsIAotICAgIDQsIDIyNiwgMzksIDIwMywgNTIsIDczLCA3MiwgNCwgMjI1LCAyMzQsIDIwMiwgMjMyLCA3MywgNzIsIDQsIDIyNSwgMjU0LCAKLSAgICAyMDIsIDI0NywgNzMsIDcyLCA0LCAyMjYsIDk3LCAyNDAsIDI2LCA3MywgNzIsIDQsIDIyNiwgOTUsIDI0MCwgMTA4LCA3MywgCi0gICAgNzIsIDQsIDIyNiwgOTMsIDIzOSwgMTA4LCA3MywgNzIsIDQsIDIyNiwgNDEsIDI0MCwgNTMsIDczLCA3MiwgNCwgMjI2LCAKLSAgICA0NCwgMjQwLCA2MCwgNzMsIDcyLCA0LCAyMjUsIDI0MiwgMjM5LCAxNzUsIDczLCA3MiwgNCwgMjI2LCAzMSwgMjM5LCAxODYsIAotICAgIDczLCA3MiwgNCwgMjI1LCAxNzgsIDIzOSwgMTA3LCA3MywgNzIsIDQsIDIyNiwgMTgsIDI0MCwgODEsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA5MSwgMjIyLCA2OCwgNzMsIDcyLCA0LCAyMjYsIDg5LCAyMjMsIDgzLCA3MywgNzIsIDQsIDIyNiwgODcsIDIyMSwgCi0gICAgNDAsIDczLCA3MiwgNCwgMjI2LCAyLCAyMjIsIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDIwNiwgMjIxLCAxODUsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAxOTksIDIzNywgMywgNzMsIDcyLCA0LCAyMjYsIDgyLCAxNTIsIDczLCA3MiwgNCwgMjI1LCAxODksIDIzNiwgCi0gICAgMjYsIDczLCA3MiwgNCwgMjI2LCA4NSwgMjM3LCA0OCwgNzMsIDcyLCA0LCAyMjYsIDIzLCAyMzcsIDY3LCA3MywgNzIsIDQsIAotICAgIDIyNiwgODAsIDIzNiwgMTE3LCA3MywgNzIsIDQsIDIyNSwgMjM1LCAyMzYsIDEzNiwgNzMsIDcyLCA0LCAyMjYsIDM2LCAKLSAgICAyMzcsIDQ3LCA3MywgNzIsIDQsIDIyNSwgMjQ3LCAyMzYsIDExMCwgNzMsIDcyLCA0LCAyMjYsIDY2LCAyMzYsIDIzOCwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDI0NSwgMjM3LCAxMjYsIDczLCA3MiwgNCwgMjI2LCAzMiwgMjM2LCAxMywgNzMsIDcyLCA0LCAyMjYsIAotICAgIDY3LCAyMzcsIDMzLCA3MywgNzIsIDQsIDIyNSwgMTgyLCAyMzYsIDEyMCwgNzMsIDcyLCA0LCAyMjYsIDczLCAyMzYsIDI1LCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMjksIDIyMiwgMTY4LCA3MywgNzIsIDQsIDIyNiwgNzgsIDIyMiwgMTgyLCA3MywgNzIsIDQsIAotICAgIDIyNiwgMzcsIDIyMiwgMTY1LCA3MywgNzIsIDQsIDIyNiwgNCwgMjIyLCAxNzYsIDczLCA3MiwgNCwgMjI1LCAyMjksIDIyMiwgCi0gICAgMTc3LCA3MywgNzIsIDQsIDIyNSwgMjE5LCAyMjIsIDE2NiwgNzMsIDcyLCA0LCAyMjUsIDI1NSwgMjIyLCAxNjcsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMTYsIDIyMiwgMTgxLCA3MywgNzIsIDQsIDIyNSwgMjQ4LCAyMjIsIDE2NCwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDMzLCAxNjMsIDIyMiwgMTc3LCA3MywgNzIsIDQsIDIyNiwgMTMsIDE2MywgMjIyLCAxNjYsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAxOTIsIDE2MywgMjIyLCAxNjcsIDczLCA3MiwgNCwgMjI1LCAyMjAsIDIzOCwgODEsIDczLCA3MiwgNCwgMjI2LCA4LCAyMzksIAotICAgIDgsIDczLCA3MiwgNCwgMjI1LCAyMDcsIDIzNywgMjMwLCA3MywgNzIsIDQsIDIyNSwgMTg1LCAyMzgsIDE4MiwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDIwOSwgMjM3LCAyMTYsIDczLCA3MiwgNCwgMjI1LCAyMDgsIDIzNywgMjI2LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMTkxLCAyMjIsIDE4NywgNzMsIDcyLCA0LCAyMjYsIDYyLCAyMjIsIDEyNCwgNzMsIDcyLCA0LCAyMjUsIDE5OCwgMjIyLCAKLSAgICAxMTMsIDczLCA3MiwgNCwgMjI2LCA1MSwgMjE4LCAxNjcsIDczLCA3MiwgNCwgMjI2LCAyMCwgMTg1LCA3MywgNzIsIDQsIAotICAgIDIyNiwgNjksIDIxNywgMTkxLCA3MywgNzIsIDQsIDIyNiwgMzgsIDIxOSwgMjMsIDczLCA3MiwgNCwgMjI2LCA2OCwgMjE5LCAKLSAgICAzNCwgNzMsIDcyLCA0LCAyMjYsIDE3LCAyMTgsIDQ1LCA3MywgNzIsIDQsIDIyNiwgNTMsIDIxOCwgNjksIDczLCA3MiwgNCwgCi0gICAgMjI1LCAyMzAsIDIyNSwgMzksIDczLCA3MiwgNCwgMjI2LCA1NywgMjI1LCA1NCwgNzMsIDcyLCA0LCAyMjUsIDI1MywgMjI1LCAKLSAgICAzMywgNzMsIDcyLCA0LCAyMjYsIDcyLCAyMjUsIDQ2LCA3MywgNzIsIDQsIDIyNSwgMTg3LCAyMjUsIDQ2LCA3MywgNzIsIDQsIAotICAgIDIyNiwgNDcsIDIyNSwgNDcsIDczLCA3MiwgNCwgMjI1LCAyMDMsIDIyNSwgMzQsIDczLCA3MiwgNCwgMjI1LCAyMDEsIDIyNSwgCi0gICAgMzUsIDczLCA3MiwgNCwgMjI1LCAxODgsIDIyNSwgMjcsIDczLCA3MiwgNCwgMjI1LCAyMTQsIDE2MywgMjI1LCA0NywgNzMsIAotICAgIDcyLCA0LCAyMjYsIDE0LCAxNjMsIDIyNSwgMzQsIDczLCA3MiwgNCwgMjI1LCAyMzMsIDE2MywgMjI1LCAzNSwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDI0MywgMjI4LCAyMzYsIDczLCA3MiwgNCwgMjI2LCAyNywgMjI4LCAyNDQsIDczLCA3MiwgNCwgMjI2LCA0NSwgCi0gICAgMjI4LCAyMzIsIDczLCA3MiwgNCwgMjI2LCA3NiwgMjI4LCAyMzksIDczLCA3MiwgNCwgMjI2LCAxMSwgMjI4LCAyNDAsIDczLCAKLSAgICA3MiwgNCwgMjI2LCA3LCAyMjgsIDIzNCwgNzMsIDcyLCA0LCAyMjUsIDIxNywgMjI4LCAyMzUsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyNTEsIDIzOCwgMTk5LCA3MywgNzIsIDQsIDIyNiwgNjMsIDIzOCwgMjA3LCA3MywgNzIsIDQsIDIyNSwgMjI3LCAyMzgsIAotICAgIDE5NCwgNzMsIDcyLCA0LCAyMjYsIDI2LCAyMzgsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDEyLCAyMzgsIDIwNCwgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDQ4LCAyMzgsIDE5NSwgNzMsIDcyLCA0LCAyMjYsIDQ5LCAyMzgsIDE5NywgNzMsIDcyLCA0LCAyMjUsIDIwNCwgCi0gICAgMjE2LCAyMjAsIDczLCA3MiwgNCwgMjI1LCAyNTIsIDIyMywgMTAsIDczLCA3MiwgNCwgMjI1LCAyNDYsIDIyMywgMjUsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyNTAsIDIyMiwgMjQ4LCA3MywgNzIsIDQsIDIyNSwgMTg0LCAyMjMsIDE2LCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMCwgMjIzLCAxNywgNzMsIDcyLCA0LCAyMjYsIDUyLCAyMjIsIDI1MywgNzMsIDcyLCA0LCAyMjYsIDU1LCAyMjMsIDEsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMjMsIDIyMiwgNDgsIDczLCA3MiwgNCwgMjI1LCAxODMsIDIyMiwgMTgsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyMjYsIDIyMiwgMzksIDczLCA3MiwgNCwgMjI1LCAyNDEsIDIyMiwgMjIsIDczLCA3MiwgNCwgMjI1LCAxOTMsIDIwNSwgCi0gICAgMjMwLCA3MywgNzIsIDQsIDIyNSwgMTkwLCAyMDYsIDg2LCA3MywgNzIsIDQsIDIyNSwgMjI0LCAyMDQsIDE2MywgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDIwMiwgMjA2LCA1MCwgNzMsIDcyLCA0LCAyMjYsIDM0LCAyMDYsIDU1LCA3MywgNzIsIDQsIDIyNSwgMjMxLCAKLSAgICAyMDUsIDE3NiwgNzMsIDcyLCA0LCAyMjYsIDQyLCAyMDUsIDE4OSwgNzMsIDcyLCA0LCAyMjUsIDIxMSwgMjIwLCAyNDIsIAotICAgIDczLCA3MiwgNCwgMjI2LCA2MSwgMjIxLCA1LCA3MywgNzIsIDQsIDIyNSwgMjA1LCAyMjAsIDIyNCwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDIxLCAyMjAsIDI1MywgNzMsIDcyLCA0LCAyMjYsIDU5LCAyMjAsIDIzMSwgNzMsIDcyLCAxNywgMTA1LCA3MywgNzIsIAotICAgIDE3LCAxMDgsIDczLCA3MiwgMTcsIDE0NywgNzMsIDcyLCAxNywgMTQ5LCA3MywgNzIsIDE3LCAxNzAsIDczLCA3MiwgMTcsIAotICAgIDE5NSwgNzMsIDcyLCAxNywgMjEzLCAxMTEsIDczLCA3MiwgMTcsIDE5OSwgNzMsIDcyLCAxNywgMjIyLCA2MywgNzMsIDcyLCAKLSAgICAzOSwgNDIsIDIwOSwgMTc0LCA3MywgNzIsIDM5LCA0MiwgMjA5LCAxNDcsIDczLCA3MiwgMzksIDQyLCAyMzYsIDEwLCA3MywgCi0gICAgNzIsIDM5LCA0MiwgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIDIwOSwgMTUzLCAyMDksIDM0LCA3MywgNzIsIDM5LCA0MiwgCi0gICAgMjM2LCAxMiwgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIDIyNCwgMTEzLCAxMCwgMTMsIDI1MSwgMzAsIDEwLCAxMywgMjQ4LCAKLSAgICAxMzgsIDEwLCAxMywgMjMwLCAxNTgsIDEwLCAxMywgMjQ0LCAxODQsIDEwLCAxMywgMjA0LCA3MCwgMTAsIDEzLCAyMDIsIAotICAgIDEwNywgMTAsIDEzLCAyMzcsIDE0OCwgMTAsIDEzLCAyMDksIDI1MSwgMTAsIDEzLCAyMDMsIDQ3LCAxMCwgMTMsIDIzMCwgCi0gICAgMjIsIDEwLCAxMywgMjI4LCAyOCwgMTAsIDEzLCAyMjUsIDUsIDEwLCAxMywgMjIxLCAxNzgsIDEwLCAxMywgMjE0LCAxNjEsIAotICAgIDEwLCAxMywgMjUxLCA1OSwgMTAsIDEzLCAyNDAsIDQ3LCAxMCwgMTMsIDIxNSwgMjgsIDEwLCAxMywgMjE3LCAxMTksIDEwLCAKLSAgICAxMywgMjE2LCAxMjIsIDEwLCAxMywgMjEzLCAzOSwgMTAsIDEzLCAyMDksIDE2OSwgMTAsIDEzLCAyMDksIDg4LCAxMCwgMTMsIAotICAgIDIyOSwgMTQwLCAxMCwgMTMsIDIwOSwgMTAwLCAxMCwgMTMsIDI0NCwgMjA3LCAxMCwgMTMsIDIwMiwgMTEwLCAxMCwgMTMsIAotICAgIDIzOCwgMTE0LCAxMCwgMTMsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMTMsIDI0MywgODQsIDIyMSwgMTc4LCAxMCwgMTMsIAotICAgIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxMywgMjQzLCA4NCwgMjE3LCAxMTksIDEwLCAxMywgODEsIDI0OCwgMTM4LCAxMCwgCi0gICAgMTMsIDgxLCAyMzAsIDE1OCwgMTAsIDEzLCA4MSwgMjM3LCA0MywgMTAsIDEzLCA4MSwgMjM3LCAxNDgsIDEwLCAxMywgODEsIAotICAgIDIwMywgNDcsIDEwLCAxMywgODEsIDIzMCwgMjIsIDEwLCAxMywgODEsIDIyOCwgMjgsIDEwLCAxMywgODEsIDIyNSwgNSwgCi0gICAgMTAsIDEzLCA4MSwgMjIxLCAxNzgsIDEwLCAxMywgODEsIDIxNCwgMTYxLCAxMCwgMTMsIDgxLCAyNTEsIDU5LCAxMCwgMTMsIAotICAgIDgxLCAyNDAsIDQ3LCAxMCwgMTMsIDgxLCAyMTUsIDI4LCAxMCwgMTMsIDgxLCAyMTcsIDExOSwgMTAsIDEzLCA4MSwgMjEzLCAKLSAgICAzOSwgMTAsIDEzLCA4MSwgMjA5LCAxNjksIDEwLCAxMywgODEsIDIwOSwgODgsIDEwLCAxMywgODEsIDIyOSwgMTQwLCAxMCwgCi0gICAgMTMsIDgxLCAyNDQsIDIwNywgMTAsIDEzLCA4MSwgMjM4LCAxMTQsIDEwLCAxMywgMjA5LCAyNDcsIDIzMCwgMTU4LCAxMCwgCi0gICAgMTMsIDIwOSwgMjQ3LCAyMzcsIDE0OCwgMTAsIDEzLCAyMDksIDI0NywgMjAzLCA0NywgMTAsIDEzLCAyMDksIDI0NywgMjI4LCAKLSAgICAyOCwgMTAsIDEzLCAyMDksIDI0NywgMjIxLCAxNzgsIDEwLCAxMywgMjA5LCAyNDcsIDIxNCwgMTYxLCAxMCwgMTMsIDIwOSwgCi0gICAgMjQ3LCAyNTEsIDU5LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTUsIDI4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTcsIDExOSwgMTAsIAotICAgIDEzLCAyMDksIDI0NywgMjEzLCAzOSwgMTAsIDEzLCAyMDksIDI0NywgMjI5LCAxNDAsIDEwLCAxMywgMjA5LCAyNDcsIDI0NCwgCi0gICAgMjA3LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMzgsIDExNCwgMTAsIDEzLCAyMDksIDI0NywgMjQzLCA4NCwgMjIxLCAxNzgsIDEwLCAKLSAgICAxMywgMjA5LCAyNDcsIDI0MywgODQsIDIxNywgMTE5LCAxMCwgMTMsIDIxMSwgNDAsIDI0OCwgMTM4LCAxMCwgMTMsIDIxMSwgCi0gICAgNDAsIDIzMCwgMTU4LCAxMCwgMTMsIDIxMSwgNDAsIDIzNywgNDMsIDEwLCAxMywgMjExLCA0MCwgMjM3LCAxNDgsIDEwLCAKLSAgICAxMywgMjExLCA0MCwgMjA5LCAyNTEsIDEwLCAxMywgMjExLCA0MCwgMjAzLCA0NywgMTAsIDEzLCAyMTEsIDQwLCAyMzAsIAotICAgIDIyLCAxMCwgMTMsIDIxMSwgNDAsIDIyNSwgNSwgMTAsIDEzLCAyMTEsIDQwLCAyMjEsIDE3OCwgMTAsIDEzLCAyMTEsIDQwLCAKLSAgICAyMTQsIDE2MSwgMTAsIDEzLCAyMTEsIDQwLCAyNTEsIDU5LCAxMCwgMTMsIDIxMSwgNDAsIDI0MCwgNDcsIDEwLCAxMywgCi0gICAgMjExLCA0MCwgMjE1LCAyOCwgMTAsIDEzLCAyMTEsIDQwLCAyMTcsIDExOSwgMTAsIDEzLCAyMTEsIDQwLCAyMTMsIDM5LCAKLSAgICAxMCwgMTMsIDIxMSwgNDAsIDIwOSwgMTY5LCAxMCwgMTMsIDIxMSwgNDAsIDIwOSwgODgsIDEwLCAxMywgMjExLCA0MCwgCi0gICAgMjI5LCAxNDAsIDEwLCAxMywgMjExLCA0MCwgMjQ0LCAyMDcsIDEwLCAxMywgMjExLCA0MCwgMjAyLCAxMTAsIDEwLCAxMywgCi0gICAgMjExLCA0MCwgMjM4LCAxMTQsIDEwLCAxMywgMjExLCA0MCwgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxMywgMjExLCA0MCwgCi0gICAgMjQzLCA4NCwgMjQwLCA0NywgMTAsIDEzLCAyMjcsIDEzLCAyNTEsIDMwLCAxMCwgMTMsIDIyNywgMTMsIDI0OCwgMTM4LCAKLSAgICAxMCwgMTMsIDIyNywgMTMsIDIzMCwgMTU4LCAxMCwgMTMsIDIyNywgMTMsIDI0NCwgMTg0LCAxMCwgMTMsIDIyNywgMTMsIAotICAgIDIzNywgNDMsIDEwLCAxMywgMjI3LCAxMywgMjA0LCA3MCwgMTAsIDEzLCAyMjcsIDEzLCAyMDIsIDEwNywgMTAsIDEzLCAKLSAgICAyMjcsIDEzLCAyMzcsIDE0OCwgMTAsIDEzLCAyMjcsIDEzLCAyMDksIDI1MSwgMTAsIDEzLCAyMjcsIDEzLCAyMDMsIDQ3LCAKLSAgICAxMCwgMTMsIDIyNywgMTMsIDIyOCwgMjgsIDEwLCAxMywgMjI3LCAxMywgMjI1LCA1LCAxMCwgMTMsIDIyNywgMTMsIDIyMSwgCi0gICAgMTc4LCAxMCwgMTMsIDIyNywgMTMsIDIxNCwgMTYxLCAxMCwgMTMsIDIyNywgMTMsIDI1MSwgNTksIDEwLCAxMywgMjI3LCAKLSAgICAxMywgMjQwLCA0NywgMTAsIDEzLCAyMjcsIDEzLCAyMTUsIDI4LCAxMCwgMTMsIDIyNywgMTMsIDIxNywgMTE5LCAxMCwgMTMsIAotICAgIDIyNywgMTMsIDIxNiwgMTIyLCAxMCwgMTMsIDIyNywgMTMsIDIxMywgMzksIDEwLCAxMywgMjI3LCAxMywgMjA5LCAxNjksIAotICAgIDEwLCAxMywgMjI3LCAxMywgMjA5LCA4OCwgMTAsIDEzLCAyMjcsIDEzLCAyMjksIDE0MCwgMTAsIDEzLCAyMjcsIDEzLCAKLSAgICAyMDksIDEwMCwgMTAsIDEzLCAyMjcsIDEzLCAyNDQsIDIwNywgMTAsIDEzLCAyMjcsIDEzLCAyMDIsIDExMCwgMTAsIDEzLCAKLSAgICAyMjcsIDEzLCAyMzgsIDExNCwgMTAsIDEzLCAxNjksIDI0OCwgMTM4LCAxMCwgMTMsIDE2OSwgMjMwLCAxNTgsIDEwLCAxMywgCi0gICAgMTY5LCAyNDQsIDE4NCwgMTAsIDEzLCAxNjksIDIwNCwgNzAsIDEwLCAxMywgMTY5LCAyMDIsIDEwNywgMTAsIDEzLCAxNjksIAotICAgIDIzNywgMTQ4LCAxMCwgMTMsIDE2OSwgMjA5LCAyNTEsIDEwLCAxMywgMTY5LCAyMDMsIDQ3LCAxMCwgMTMsIDE2OSwgMjI4LCAKLSAgICAyOCwgMTAsIDEzLCAxNjksIDIyNSwgNSwgMTAsIDEzLCAxNjksIDIyMSwgMTc4LCAxMCwgMTMsIDE2OSwgMjE0LCAxNjEsIAotICAgIDEwLCAxMywgMTY5LCAyNTEsIDU5LCAxMCwgMTMsIDE2OSwgMjQwLCA0NywgMTAsIDEzLCAxNjksIDIxNSwgMjgsIDEwLCAxMywgCi0gICAgMTY5LCAyMTcsIDExOSwgMTAsIDEzLCAxNjksIDIxNiwgMTIyLCAxMCwgMTMsIDE2OSwgMjEzLCAzOSwgMTAsIDEzLCAxNjksIAotICAgIDIwOSwgMTY5LCAxMCwgMTMsIDE2OSwgMjA5LCA4OCwgMTAsIDEzLCAxNjksIDIyOSwgMTQwLCAxMCwgMTMsIDE2OSwgMjA5LCAKLSAgICAxMDAsIDEwLCAxMywgMTY5LCAyNDQsIDIwNywgMTAsIDEzLCAxNjksIDIwMiwgMTEwLCAxMCwgMTMsIDE2OSwgMjM4LCAxMTQsIAotICAgIDEwLCAxMywgMjE5LCAyNTUsIDgzLCAzLCAxNTEsIDMsIDIwOSwgMjA5LCAxMCwgMTMsIDIxOSwgMjU1LCAxNTEsIDMsIDI0NCwgCi0gICAgMTg0LCAyMjUsIDE0MiwgOTksIDI0MSwgMTc2LCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIDIxMSwgMjM4LCAyMDQsIDE2LCAKLSAgICAyMjUsIDE0MiwgOTksIDIwNCwgNDYsIDIwNCwgMTYsIDIyNSwgMTQyLCA5OSwgMTUzLCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIAotICAgIDIxNiwgMTM4LCAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDIzNywgMjQ0LCAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDYxLCAKLSAgICAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDEyMCwgNzYsIDI0NiwgCi0gICAgMTgxLCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ2LCAKLSAgICAxODEsIDIyNSwgMTQyLCA5OSwgMjM5LCAyMzMsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgCi0gICAgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyNDEsIDE0MywgCi0gICAgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIyMiwgNjQsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAKLSAgICAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDgsIAotICAgIDI0MywgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgCi0gICAgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCAKLSAgICA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMjIsIAotICAgIDY0LCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAKLSAgICAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDYsIAotICAgIDU4LCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgMjQ2LCAKLSAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIDc2LCAyNDYsIAotICAgIDU4LCAyMjUsIDE0MiwgOTksIDIyMiwgNjQsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIxOCwgNzksIDIyNSwgMTQyLCAKLSAgICA5OSwgMjE5LCAyNDIsIDIyNSwgMTQyLCA5OSwgMjQ4LCAyNDQsIDIyNSwgMTQyLCA5OSwgMjQ2LCA5OSwgMjI1LCAxNDIsIAotICAgIDk5LCAyMTEsIDE4MywgMjI1LCAxNDIsIDk5LCAyMTAsIDIxNiwgMjI1LCAxNDIsIDk5LCAyNTAsIDIxLCAyMjUsIDE0MiwgCi0gICAgOTksIDIwNCwgNywgMjI1LCAxNDIsIDk5LCAyMzAsIDk0LCAyMjUsIDE0MiwgOTksIDI0OSwgMjUsIDE2MSwgOTksIDIzNiwgCi0gICAgMTA2LCAyNDksIDI1LCAxNjEsIDk5LCAyMzYsIDEwNCwgMTYxLCA5OSwgMjM2LCAxMDMsIDE2MSwgOTksIDIzNiwgMTAyLCAKLSAgICAxNjEsIDk5LCAyMzYsIDEwMSwgMTYxLCA5OSwgMjM2LCAxMDAsIDE2MSwgOTksIDIzNiwgOTksIDE2MSwgOTksIDIzNiwgOTgsIAotICAgIDE2MSwgOTksIDIzNiwgOTcsIDE2MSwgOTksIDIzNiwgOTYsIDE2MSwgOTksIDIzNiwgOTUsIDE2MSwgOTksIDIzNiwgOTQsIAotICAgIDE2MSwgOTksIDIzNiwgOTMsIDE2MSwgOTksIDIzNiwgOTIsIDE2MSwgOTksIDIzNiwgOTEsIDE2MSwgOTksIDIzNiwgOTAsIAotICAgIDE2MSwgOTksIDIzNiwgODksIDE2MSwgOTksIDIzNiwgODgsIDE2MSwgOTksIDIzNiwgODcsIDE2MSwgOTksIDIzNiwgODYsIAotICAgIDE2MSwgOTksIDIzNiwgODUsIDE2MSwgOTksIDIzNiwgODQsIDE2MSwgOTksIDIzNiwgODMsIDE2MSwgOTksIDIzNiwgODIsIAotICAgIDE2MSwgOTksIDIzNiwgODEsIDE2MSwgOTksIDIzNiwgODAsIDE2MSwgOTksIDIzNiwgNzksIDE2MSwgOTksIDIzNiwgNzgsIAotICAgIDE2MSwgOTksIDIzNiwgNzcsIDE2MSwgOTksIDIzNiwgNzYsIDE2MSwgOTksIDIzNiwgNzUsIDE2MSwgOTksIDIzNiwgNzQsIAotICAgIDE2MSwgOTksIDIzNiwgNzMsIDE2MSwgOTksIDIzNiwgNzIsIDE2MSwgOTksIDIzNiwgNzEsIDE2MSwgOTksIDIzNiwgNzAsIAotICAgIDE2MSwgOTksIDIzNiwgNjksIDE2MSwgOTksIDIzNiwgNjgsIDE2MSwgOTksIDIzNiwgNjcsIDE2MSwgOTksIDIzNiwgNjYsIAotICAgIDE2MSwgOTksIDIzNiwgNjUsIDE2MSwgOTksIDIzNiwgNjQsIDE2MSwgOTksIDIzNiwgNjMsIDE2MSwgOTksIDIzNiwgNjIsIAotICAgIDE2MSwgOTksIDIzNiwgNjEsIDE2MSwgOTksIDIzNiwgNjAsIDE2MSwgOTksIDIzNiwgNTksIDE2MSwgOTksIDIzNiwgNTgsIAotICAgIDE2MSwgOTksIDIzNiwgNTcsIDE2MSwgOTksIDIzNiwgNTYsIDE2MSwgOTksIDgwLCAyNDksIDI1LCAxNjEsIDk5LCAyMDYsIAotICAgIDM3LCAxNjEsIDk5LCAyMDYsIDM2LCAxNjEsIDk5LCAyMDYsIDM1LCAxNjEsIDk5LCAyMDYsIDM0LCAxNjEsIDk5LCAyMDYsIAotICAgIDMzLCAxNjEsIDk5LCAyMDYsIDMyLCAxNjEsIDk5LCAyMDYsIDMxLCAxNjEsIDk5LCAyMDYsIDMwLCAxNjEsIDk5LCAyMDYsIAotICAgIDI5LCAxNjEsIDk5LCAyMDYsIDI4LCAxNjEsIDk5LCAyMDYsIDI3LCAxNjEsIDk5LCAyMDYsIDI2LCAxNjEsIDk5LCAyMDYsIAotICAgIDI1LCAxNjEsIDk5LCAyMDYsIDI0LCAxNjEsIDk5LCAyMDYsIDIzLCAxNjEsIDk5LCAyMDYsIDIyLCAxNjEsIDk5LCAyMDYsIAotICAgIDIxLCAxNjEsIDk5LCAyMDYsIDIwLCAxNjEsIDk5LCAyMDYsIDE5LCAxNjEsIDk5LCAyMDYsIDE4LCAxNjEsIDk5LCAyMDYsIAotICAgIDE3LCAxNjEsIDk5LCAyMDYsIDE2LCAxNjEsIDk5LCAyMDYsIDE1LCAxNjEsIDk5LCAyMDYsIDE0LCAxNjEsIDk5LCAyMDYsIAotICAgIDEzLCAxNjEsIDk5LCAyMDYsIDEyLCAxNjEsIDk5LCAyMDYsIDExLCAxNjEsIDk5LCAyMDYsIDEwLCAxNjEsIDk5LCAyMDYsIAotICAgIDksIDE2MSwgOTksIDIwNiwgOCwgMTYxLCA5OSwgMjA2LCA3LCAxNjEsIDk5LCAyMDYsIDYsIDE2MSwgOTksIDIwNiwgNSwgCi0gICAgMTYxLCA5OSwgMjA2LCA0LCAxNjEsIDk5LCAyMDYsIDMsIDE2MSwgOTksIDIwNiwgMiwgMTYxLCA5OSwgMjA2LCAxLCAxNjEsIAotICAgIDk5LCAyMDYsIDAsIDE2MSwgOTksIDIwNSwgMjU1LCAxNjEsIDk5LCAyMDUsIDI1NCwgMTYxLCA5OSwgMjA1LCAyNTMsIDE2MSwgCi0gICAgOTksIDIwNSwgMjUyLCAxNjEsIDk5LCAyMDUsIDI1MSwgMTYxLCA5OSwgMjA1LCAyNTAsIDE2MSwgOTksIDIwNSwgMjQ5LCAKLSAgICAxNjEsIDk5LCAyMDUsIDI0OCwgMTYxLCA5OSwgMjA1LCAyNDcsIDE2MSwgOTksIDIwNSwgMjQ2LCAxNjEsIDk5LCAyMDUsIAotICAgIDI0NSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQ5LCAyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyMTEsIDIyNSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDIxMSwgMjI1LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIAotICAgIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgCi0gICAgMTEyLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAyMTEsIDIyNSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIAotICAgIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgCi0gICAgODIsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIAotICAgIDM4LCAxMjAsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIAotICAgIDM4LCAyMzksIDE0NywgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgMjM3LCA1MywgMjE4LCAKLSAgICA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgMTEyLCA3NiwgMjM3LCAKLSAgICA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjIsIDY0LCAKLSAgICA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMzAsIDE3OSwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDIzNywgNTMsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIxNiwgMTM4LCAyMzAsIDk0LCAyMTgsIDg4LCAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDI0MywgCi0gICAgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjQzLCAKLSAgICAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMTQ3LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgCi0gICAgMjMzLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAKLSAgICAzOCwgMjEzLCAxMTIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyNDMsIDIyMCwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDksIDE1MywgNzYsIAotICAgIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMjksIDMyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIxNywgNDksIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCA2MiwgMjMwLCA5NCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDI0NiwgMiwgMjE4LCAKLSAgICA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDI0NiwgMiwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAKLSAgICAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgMTEyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIAotICAgIDE0MywgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjA5LCAxNTMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMjksIDMyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjQ2LCAyLCAyMTgsIAotICAgIDg4LCAyNDcsIDM4LCAyMjksIDgyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCA2MSwgMjMwLCA5NCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjM5LCAxNzMsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzcsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzQsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzMsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOCwgMzIsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzEsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzAsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIwOCwgMjksIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMjgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDcsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDYsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDUsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOCwgNDQsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDMsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDIsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIwOCwgNDEsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDAsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzksIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzYsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOCwgMzUsIDE3LCAyMDIsIDg1LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIwMiwgODUsIDI0NSwgMjMzLCAxNywgMTE4LCAKLSAgICAyNDUsIDIzMywgMTcsIDEyMCwgMjQ1LCAyMzMsIDE3LCAxMjYsIDI0NSwgMjMzLCAxNywgMjM5LCAxNDcsIDI0NSwgMjMzLCAKLSAgICAxNywgMjM5LCAyMzMsIDI0NSwgMjMzLCAxNywgMjEyLCA4OCwgMjQ1LCAyMzMsIDE3LCAyMTMsIDExMiwgMjQ1LCAyMzMsIAotICAgIDE3LCAyNDEsIDE0MywgMjQ1LCAyMzMsIDE3LCAyMjIsIDY0LCAyNDUsIDIzMywgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDIwMiwgCi0gICAgODQsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIwMiwgODQsIDEwMiwgOCwgNiwgMSwgNjMsIDEwMiwgOCwgNiwgMSwgCi0gICAgMjQ5LCAyNTUsIDEwMiwgOCwgNiwgMSwgMjQ3LCAxMjUsIDEwMiwgOCwgNiwgMSwgMjQ1LCA1MSwgMTAyLCA4LCA2LCAxLCAKLSAgICA3NCwgMTAyLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTAyLCA4LCA2LCAxLCAyMzksIDc1LCAxMDIsIDgsIDYsIDEsIDIzNywgCi0gICAgMTcxLCAxMDIsIDgsIDYsIDEsIDc1LCAxMDIsIDgsIDYsIDEsIDIzMCwgMTg0LCAxMDIsIDgsIDYsIDEsIDIzMCwgNTQsIAotICAgIDEwMiwgOCwgNiwgMSwgMTU5LCAxMDIsIDgsIDYsIDEsIDIyNiwgMTg1LCAxMDIsIDgsIDYsIDEsIDIyMywgMTYzLCAxMDIsIAotICAgIDgsIDYsIDEsIDc4LCAxMDIsIDgsIDYsIDEsIDIxOSwgMTg0LCAxMDIsIDgsIDYsIDEsIDIxNywgMTM0LCAxMDIsIDgsIDYsIAotICAgIDEsIDE0NiwgMTAyLCA4LCA2LCAxLCAxOTQsIDEwMiwgOCwgNiwgMSwgMjEwLCA2OSwgMTAyLCA4LCA2LCAxLCA2OCwgMTAyLCAKLSAgICA4LCA2LCAxLCAyMDYsIDE2NCwgMTAyLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTAyLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTAyLCAKLSAgICA4LCA2LCAxLCAyMDMsIDEyNCwgMTAyLCA4LCA2LCAxLCAyMDIsIDE1OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAKLSAgICA4LCA2LCAxLCAxOTQsIDQzLCAzNywgOCwgNiwgMSwgMjQ3LCAxMjUsIDQzLCAzNywgOCwgNiwgMSwgMTQ2LCA0MywgMjQ2LCAKLSAgICAyMzksIDQzLCAyMDMsIDE5OCwgMTAzLCA4LCA2LCAxLCA2MywgMTAzLCA4LCA2LCAxLCAyNDksIDI1NSwgMTAzLCA4LCA2LCAKLSAgICAxLCAyNDcsIDEyNSwgMTAzLCA4LCA2LCAxLCAyNDUsIDUxLCAxMDMsIDgsIDYsIDEsIDc0LCAxMDMsIDgsIDYsIDEsIDI0MCwgCi0gICAgMTc0LCAxMDMsIDgsIDYsIDEsIDIzOSwgNzUsIDEwMywgOCwgNiwgMSwgMjM3LCAxNzEsIDEwMywgOCwgNiwgMSwgNzUsIAotICAgIDEwMywgOCwgNiwgMSwgMjMwLCAxODQsIDEwMywgOCwgNiwgMSwgMjMwLCA1NCwgMTAzLCA4LCA2LCAxLCAxNTksIDEwMywgOCwgCi0gICAgNiwgMSwgMjI2LCAxODUsIDEwMywgOCwgNiwgMSwgMjIzLCAxNjMsIDEwMywgOCwgNiwgMSwgNzgsIDEwMywgOCwgNiwgMSwgCi0gICAgMjE5LCAxODQsIDEwMywgOCwgNiwgMSwgMjE3LCAxMzQsIDEwMywgOCwgNiwgMSwgMTQ2LCAxMDMsIDgsIDYsIDEsIDE5NCwgCi0gICAgMTAzLCA4LCA2LCAxLCAyMTAsIDY5LCAxMDMsIDgsIDYsIDEsIDY4LCAxMDMsIDgsIDYsIDEsIDIwNiwgMTY0LCAxMDMsIDgsIAotICAgIDYsIDEsIDIwNCwgMTQ0LCAxMDMsIDgsIDYsIDEsIDIwMywgMTk2LCAxMDMsIDgsIDYsIDEsIDIwMywgMTI0LCAxMDMsIDgsIAotICAgIDYsIDEsIDIwMiwgMTU5LCAxMDMsIDIzNSwgMjU1LCAxMDMsIDIyMywgMTg3LCAxMDMsIDIxNCwgMTc5LCAxMDMsIDIxMSwgCi0gICAgMTY3LCAxMDMsIDIxOCwgMTAsIDEwMywgMjA0LCA2MywgMTgyLCA0MywgOCwgNiwgMSwgNjMsIDE4MiwgNDMsIDgsIDYsIDEsIAotICAgIDI0OSwgMjU1LCAxODIsIDQzLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTgyLCA0MywgOCwgNiwgMSwgMjQ1LCA1MSwgMTgyLCA0MywgCi0gICAgOCwgNiwgMSwgNzQsIDE4MiwgNDMsIDgsIDYsIDEsIDI0MCwgMTc0LCAxODIsIDQzLCA4LCA2LCAxLCAyMzksIDc1LCAxODIsIAotICAgIDQzLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTgyLCA0MywgOCwgNiwgMSwgNzUsIDE4MiwgNDMsIDgsIDYsIDEsIDIzMCwgMTg0LCAKLSAgICAxODIsIDQzLCA4LCA2LCAxLCAyMzAsIDU0LCAxODIsIDQzLCA4LCA2LCAxLCAxNTksIDE4MiwgNDMsIDgsIDYsIDEsIDIyNiwgCi0gICAgMTg1LCAxODIsIDQzLCA4LCA2LCAxLCAyMjMsIDE2MywgMTgyLCA0MywgOCwgNiwgMSwgNzgsIDE4MiwgNDMsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg0LCAxODIsIDQzLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTgyLCA0MywgOCwgNiwgMSwgMTQ2LCAxODIsIDQzLCA4LCAKLSAgICA2LCAxLCAxOTQsIDE4MiwgNDMsIDgsIDYsIDEsIDIxMCwgNjksIDE4MiwgNDMsIDgsIDYsIDEsIDY4LCAxODIsIDQzLCA4LCAKLSAgICA2LCAxLCAyMDYsIDE2NCwgMTgyLCA0MywgOCwgNiwgMSwgMjA0LCAxNDQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwMywgMTk2LCAKLSAgICAxODIsIDQzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTgyLCA0MywgOCwgNiwgMSwgMjAyLCAxNTksIDIxNiwgMTg4LCAyMjUsIAotICAgIDI2LCA1NCwgMjE2LCAxODgsIDIyNSwgMjMsIDU0LCAxODIsIDEwMywgOCwgNiwgMSwgNjMsIDE4MiwgMTAzLCA4LCA2LCAxLCAKLSAgICAyNDksIDI1NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0NywgMTI1LCAxODIsIDEwMywgOCwgNiwgMSwgMjQ1LCA1MSwgMTgyLCAKLSAgICAxMDMsIDgsIDYsIDEsIDc0LCAxODIsIDEwMywgOCwgNiwgMSwgMjQwLCAxNzQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMzksIAotICAgIDc1LCAxODIsIDEwMywgOCwgNiwgMSwgMjM3LCAxNzEsIDE4MiwgMTAzLCA4LCA2LCAxLCA3NSwgMTgyLCAxMDMsIDgsIDYsIAotICAgIDEsIDIzMCwgMTg0LCAxODIsIDEwMywgOCwgNiwgMSwgMjMwLCA1NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDE1OSwgMTgyLCAKLSAgICAxMDMsIDgsIDYsIDEsIDIyNiwgMTg1LCAxODIsIDEwMywgOCwgNiwgMSwgMjIzLCAxNjMsIDE4MiwgMTAzLCA4LCA2LCAxLCAKLSAgICA3OCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxOSwgMTg0LCAxODIsIDEwMywgOCwgNiwgMSwgMjE3LCAxMzQsIDE4MiwgMTAzLCAKLSAgICA4LCA2LCAxLCAxNDYsIDE4MiwgMTAzLCA4LCA2LCAxLCAxOTQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTAsIDY5LCAxODIsIAotICAgIDEwMywgOCwgNiwgMSwgNjgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDYsIDE2NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwNCwgCi0gICAgMTQ0LCAxODIsIDEwMywgOCwgNiwgMSwgMjAzLCAxOTYsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTgyLCAxMDMsIAotICAgIDgsIDYsIDEsIDIwMiwgMTU5LCAyNDUsIDEyOCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxOSwgMTg0LCAxODIsIDEwMywgMjM1LCAKLSAgICAxNjQsIDE4MiwgMTAzLCAxODUsIDE4MiwgMTAzLCAyMTUsIDM2LCAxODIsIDEwMywgMjUxLCAyMzIsIDE4MiwgMTAzLCAyMDQsIAotICAgIDYzLCA1MSwgMjQzLCAxMzIsIDEwMywgMjQ2LCA0MiwgMTAzLCAyNDUsIDE3NiwgMTAzLCAyMzksIDEyOSwgMTAzLCAyMzUsIAotICAgIDE1NSwgMTAzLCAyMjIsIDIxMywgMTAzLCAyMjIsIDIwNSwgMTAzLCAyMjAsIDUxLCAxMDMsIDIxMSwgMjQ1LCAxMDMsIDExMiwgCi0gICAgMywgMjQwLCAyMTIsIDgyLCAxMDMsIDIwNSwgMTY2LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDYzLCAyMTYsIDEzMCwgCi0gICAgMjMxLCAzMiwgMTYsIDEsIDI0OSwgMjU1LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDI0NywgMTI1LCAyMTYsIDEzMCwgCi0gICAgMjMxLCAzMiwgMTYsIDEsIDI0NSwgNTEsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAKLSAgICAxNiwgMSwgMjQwLCAxNzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjM5LCA3NSwgMjE2LCAxMzAsIDIzMSwgMzIsIAotICAgIDE2LCAxLCAyMzcsIDE3MSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAKLSAgICAyMzAsIDE4NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMzAsIDU0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIAotICAgIDE1OSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMjYsIDE4NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMjMsIAotICAgIDE2MywgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3OCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTksIDE4NCwgCi0gICAgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTcsIDEzNCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAxNDYsIDIxNiwgCi0gICAgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMTk0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIxMCwgNjksIDIxNiwgMTMwLCAKLSAgICAyMzEsIDMyLCAxNiwgMSwgNjgsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjA2LCAxNjQsIDIxNiwgMTMwLCAyMzEsIAotICAgIDMyLCAxNiwgMSwgMjA0LCAxNDQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjAzLCAxOTYsIDIxNiwgMTMwLCAyMzEsIAotICAgIDMyLCAxNiwgMSwgMjAzLCAxMjQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjAyLCAxNTksIDUxLCAxNzIsIDIzNiwgCi0gICAgMTMwLCAxMDMsIDY3LCAyMjksIDE0LCAxMDMsIDY3LCAyMTUsIDM2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDAsIAotICAgIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTEyLCAxMDMsIDY3LCAyNDQsIAotICAgIDc1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNiwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgNzgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTE4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODUsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDk0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDEwMSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MywgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgMTE2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3OSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgODQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDcsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDEwOSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDk4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5NiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTIyLCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCAxMjEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMDIsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEyMCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTExLCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA5NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDk5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODAsIDEwMywgMTIsIDIwNiwgCi0gICAgMjM5LCAyMzMsIDExMCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkwLCAKLSAgICAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODMsIDEwMywgMTIsIDIwNiwgCi0gICAgMjM5LCAyMzMsIDExNCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA4LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIAotICAgIDEyLCAyMDYsIDIzOSwgMjMzLCA4OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTIxLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTksIDIwOCwgMTMzLCAyMTMsIAotICAgIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDEwMywgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgODYsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDk5LCAKLSAgICAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MiwgMjA4LCAxMzMsIDIxMywgMzMsIAotICAgIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTEzLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIAotICAgIDIzOSwgMjMzLCA5NSwgNDMsIDE4OSwgMjUxLCAxMTEsIDQzLCAxODksIDI1MSwgMTM2LCAyNDUsIDYyLCAyMzksIDE4NCwgCi0gICAgMjQ2LCAxNiwgMjA3LCAzLCAyMjIsIDgwLCAzLCAyMTEsIDkxLCAyMTAsIDIwOSwgMTE1LCAyMjQsIDExLCAyMTAsIDIwOCwgCi0gICAgMjQ2LCA0NiwgMjUwLCA1MCwgMjQyLCAxNywgMjEwLCAyMDcsIDExNSwgMjQ3LCAxODIsIDIxNiwgMTg5LCAyNDcsIDIwOCwgCi0gICAgMjUwLCA1MCwgMjIyLCA3OSwgMjA0LCA4MSwgMjA0LCA3NSwgMjA1LCAxODEsIDIyNCwgMTE4LCAyMDQsIDY1LCAyNDEsIAotICAgIDE4MCwgMjM4LCA0NiwgMjQwLCAyMjgsIDI0MSwgMTgwLCAyMzgsIDQ2LCAyNTAsIDIzOCwgMjQxLCAxODAsIDIzOCwgNDYsIAotICAgIDI1MCwgNjgsIDIzOCwgNDYsIDMsIDIyNCwgMjMxLCAyMjIsIDIxNCwgMjI0LCAzMCwgOTcsIDIwNCwgNjcsIDI0NSwgMTM5LCAKLSAgICAyMjQsIDMwLCA5NywgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMzAsIDk3LCAyMDQsIDY3LCAyMzgsIDc3LCAyMjQsIDMwLCAKLSAgICA5NywgMjM5LCAxMDIsIDIyNCwgMzAsIDk3LCAyMDQsIDk0LCAyMzgsIDc3LCAyMjQsIDMwLCA5NywgMjI4LCAxLCAyMTcsIAotICAgIDU2LCAyMjQsIDMwLCA5NywgMjA0LCA5NCwgMjQ1LCAxMzksIDIyNCwgMzAsIDk3LCAyNDUsIDEzOSwgMjI0LCAyOSwgMjIyLCAKLSAgICAyMTQsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMzksIDI0NSwgMjE3LCA1NiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIyOCwgCi0gICAgMSwgMjE3LCA1NiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIzOSwgMTAyLCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjEwLCAKLSAgICAyMTUsIDMsIDI0MCwgMTAyLCAyMzgsIDQ0LCAyMTEsIDk0LCAyMTIsIDIzMywgMjExLCA5NCwgMjA5LCA4MCwgNjIsIDI0MiwgCi0gICAgNDksIDYxLCAyMTAsIDIxNCwgNjEsIDIxMCwgMjE1LCAzLCA1LCAyNDYsIDcsIDYxLCAyMTAsIDIxNSwgMjQ4LCAxMzUsIAotICAgIDI0NiwgNywgNjEsIDIxMCwgMjE1LCAyNDgsIDEzNSwgMjQ2LCA4LCAzLCAyMTYsIDE5MCwgMjQ2LCA4LCAzLCAyMTYsIDE5MCwgCi0gICAgMjQ2LCA4LCAzLCAyMTIsIDE5LCAyNDYsIDgsIDMsIDIyNywgMTMxLCAyNDYsIDgsIDMsIDIwOCwgMTM3LCAyMzksIDE4NSwgCi0gICAgMjA0LCAxNywgMjQ4LCAyNywgMjQwLCAxMDIsIDIzNiwgNDcsIDI0MywgMTAyLCAyMTAsIDIsIDI0NywgMTU4LCAyNDYsIAotICAgIDE0OCwgMjE0LCAxNjMsIDI0MCwgMjIyLCAyMDgsIDk1LCAyNDQsIDY5LCAyMDgsIDk1LCAyMTksIDEzNSwgMjA4LCA5NSwgCi0gICAgMjQ3LCA4NSwgMjM2LCA0NywgMjE4LCAyNDgsIDIwNywgMTkzLCAyNDYsIDE1MiwgMjQ4LCAzMCwgMjE1LCAyMDIsIDIzNywgCi0gICAgMiwgMjEwLCAyMTIsIDI0OCwgMzAsIDI0MSwgMTg0LCA3NiwgMjI1LCAxMzEsIDI0MSwgMTg0LCA3NiwgMjE2LCA1MiwgMjM3LCAKLSAgICAyOCwgMjM5LCAxNDcsIDIyNywgMjMwLCAyNDYsIDYsIDIyNSwgMTA0LCAyMjcsIDIyOSwgMjQwLCA4NSwgMjI3LCAyMjksIAotICAgIDIyNywgMjMwLCAyMzksIDE5MiwgMjMxLCA1MCwgMjA0LCAxNiwgMjIzLCAxOTYsIDIwOCwgMTY1LCAyNTAsIDMzLCAyMzgsIAotICAgIDUsIDIyNCwgMjQ5LCAyMDQsIDc5LCAyMDksIDIyNSwgMjI3LCAxOTksIDI0OCwgMjM5LCAyMTgsIDEyMCwgMjE2LCAxMzgsIAotICAgIDI1MCwgMTU3LCAyMzcsIDI0NCwgMjUwLCAxNTcsIDIxOSwgMjksIDIxOSwgMzEsIDI0NiwgMTUzLCAyMTEsIDQ1LCAyMzcsIAotICAgIDEzMiwgMjEyLCA1MSwgNzYsIDIxOCwgMTAwLCAyMjUsIDE2LCAyMjAsIDMyLCAyNDgsIDExLCAyMTgsIDIxLCAyMjcsIDIxMCwgCi0gICAgMjE2LCA1MywgMjQ1LCAxNDUsIDIxNiwgNTMsIDI0OCwgMjUxLCAyNDUsIDE3OSwgMjE2LCA1MiwgMjQ1LCA4OSwgMjUsIAotICAgIDIxNiwgNTIsIDIxMSwgNzksIDI0NywgMjM3LCAyMTEsIDIyNCwgMjQ3LCAyMTksIDIzOSwgMTI4LCAyMzksIDEyNCwgMjE1LCAKLSAgICAyMjMsIDIxMCwgMTY1LCAyMTgsIDIzLCAyNDQsIDE2MywgMjIwLCA3NSwgMjEwLCAxODMsIDIzOSwgMTI1LCAyMTIsIDIwNCwgCi0gICAgMjM5LCAyNDQsIDI0NywgNzksIDMsIDIxMCwgMTU4LCAyNDQsIDEzLCAyMTIsIDcsIDIzNSwgMTYzLCAyNDUsIDE0MywgMjEzLCAKLSAgICA1MSwgMjM1LCAxNjIsIDIzNSwgMTYzLCAyNDUsIDE0MywgMjQyLCA3MywgMjQ1LCAxNzgsIDI0NiwgMTE0LCAxNDIsIDI0NywgCi0gICAgNTEsIDIyNywgMzIsIDI0NSwgODEsIDIzNiwgMTE5LCAyMTgsIDI1LCAyMTIsIDIxNywgMjQ4LCAxMTYsIDI0NywgMjMzLCAKLSAgICAyMTgsIDI2LCA3NiwgMjM5LCAxNzQsIDI0NSwgMTc3LCAyMzksIDE2MywgMjUsIDIyOSwgMzMsIDIwOSwgMTg0LCAyMDQsIDMsIAotICAgIDIzNywgMTAyLCAyMTUsIDEzLCAyNDcsIDI1MCwgMjUsIDI0NSwgOTksIDIwNCwgMTMsIDIzOCwgNDksIDI0NSwgMjUxLCAKLSAgICAyMzgsIDQ5LCAyMDgsIDUxLCAyNDIsIDU0LCAyNDgsIDE0NiwgMjIzLCAyMzUsIDI0NiwgMjMsIDI0OCwgMTQ2LCAyMjMsIAotICAgIDIzNCwgMjQ5LCAyOCwgMjQ3LCAyNDksIDIzOSwgMTYzLCAyNSwgMjI5LCAzNCwgMywgMjE4LCA4OSwgMjQ3LCAyNTAsIDMsIAotICAgIDIxOCwgMzgsIDI0NSwgMTY3LCAyMTgsIDQwLCAyMTYsIDU0LCAyMDMsIDIyNywgMjE3LCAyNDIsIDI0OCwgNTgsIDI0NywgCi0gICAgNzgsIDIzMCwgMTc4LCAyNDYsIDEwNiwgMjA4LCA5NSwgMjQwLCA2OCwgMjQ2LCAxMDUsIDIzOSwgMjQ3LCAyMzksIDI0OCwgCi0gICAgMjExLCAyMjIsIDI0OCwgMjUwLCAyMTksIDY2LCAyMTgsIDM5LCAyNDUsIDIxNSwgMjQ4LCAyNTEsIDIwOSwgMjI5LCAyMDgsIAotICAgIDk1LCAyNDUsIDEyOCwgMjM5LCAyMTksIDIxOCwgMTIxLCAyNDQsIDY2LCAyMzAsIDE2OSwgMjQzLCA5NiwgMjQ3LCAyNywgCi0gICAgMjExLCA0NCwgMjA0LCAxNywgMjQ2LCAxMzAsIDIyNCwgMzAsIDIwNSwgMjE3LCAyNDYsIDIwNCwgMjE0LCAxOTYsIDIxNCwgCi0gICAgMjIzLCAyMzgsIDExLCAyNDcsIDQ4LCAyMzcsIDU2LCAzLCAyMDgsIDIxMSwgMjIwLCAzMiwgMjA5LCA5MywgMjI3LCAyMjIsIAotICAgIDI0NywgMjQzLCA3NiwgMjM5LCAxOTYsIDIyNCwgMTE5LCAyMjUsIDEzLCAyMTYsIDExMCwgMjE2LCA1NCwgMzEsIDIyOSwgCi0gICAgMTUwLCAzLCAyMzAsIDE3NywgMjExLCAxNSwgMjI0LCAxNTIsIDIyNywgMTY3LCAyMTIsIDQ5LCAyNDUsIDE4NCwgMjI5LCAKLSAgICAzMCwgMjQ4LCAxNTgsIDI1MCwgNzgsIDMxLCAyMjEsIDE1NSwgMjQ4LCAxNTgsIDI0NCwgMTksIDMxLCAyMjEsIDE1NSwgCi0gICAgMjQwLCA2LCAyMzksIDEzMywgMjUxLCAxMTQsIDIwOCwgMjUyLCAyNDcsIDI4LCAyMzYsIDQ5LCAyNDAsIDM1LCAyMDQsIDM2LCAKLSAgICAyMTUsIDIxMywgMjQ1LCAyNTIsIDIzOSwgMjM5LCAyMTgsIDU0LCAyNSwgMjM5LCAyNDMsIDIyNCwgMTUyLCAyMjMsIDI1MywgCi0gICAgMjQ3LCA2NSwgMjQ2LCA2NSwgMjM3LCA2MCwgMjUwLCA4NSwgMjE5LCAxMzgsIDIwOCwgMTQ1LCAyMzcsIDgzLCAyNDYsIDUxLCAKLSAgICAyMDksIDE0NCwgMjA4LCAyNTMsIDI0NiwgMzcsIDI0OCwgMjAsIDIxOCwgMjQxLCAyNTAsIDg0LCAyMDUsIDIyNiwgMjM4LCAKLSAgICAyMzgsIDI0MywgMTY3LCAyMzYsIDIzMCwgMjEyLCA0MiwgMjI1LCAxNzIsIDI0OCwgNjksIDIzOCwgMjM5LCAyNDMsIDIxMywgCi0gICAgMjQ3LCAyMzYsIDIzOSwgMTk4LCAyMTgsIDg4LCAyNDcsIDM2LCAzMSwgMjIxLCAxNjAsIDIyMywgMjI2LCAzMSwgMjIxLCAKLSAgICAxNTUsIDIxNCwgMjA5LCAyMzcsIDIxNCwgMzEsIDIyOSwgMTQ5LCAyMDgsIDI3LCAyMDUsIDIwNiwgMzEsIDIxNCwgMTg5LCAKLSAgICAyMTUsIDEyNiwgMjEyLCAyNDYsIDMsIDIxNCwgMjI2LCAyMDksIDE0OSwgMjE2LCAyMDksIDI1LCAyNDgsIDI1MSwgMjEyLCAKLSAgICA2NywgMjUsIDIxMiwgNjcsIDI0OCwgNCwgMjQ4LCAyMTMsIDI1LCAyMzYsIDExMiwgMjQ2LCAxNTQsIDIzOSwgMjI1LCAyMTIsIAotICAgIDE4LCAyMTUsIDEyNywgMjEwLCAxODgsIDIxMSwgMTg5LCAyMjUsIDEzLCAyMDgsIDUyLCAyMzYsIDUwLCAyMTYsIDIxMCwgCi0gICAgMjUwLCAyMzksIDIzOSwgMTcxLCAyMTUsIDEzOSwgMjM5LCAxNzEsIDIxMCwgMTYwLCAyMDQsIDUxLCAyMjcsIDEzNiwgMjM4LCAKLSAgICAzMCwgMjE2LCAyMTEsIDIyNCwgMTgsIDIxNiwgMjExLCAyNDcsIDM5LCAyNDUsIDEzNiwgMjQ4LCAyMTAsIDI1LCAyNDgsIAotICAgIDI1MSwgMjA1LCAxODAsIDI0MCwgMjUsIDIzNiwgMTMzLCAyMTEsIDczLCAyNSwgMjQ4LCAyNTEsIDIzNSwgMTYzLCAyMzYsIAotICAgIDEzMywgMjExLCA3MywgMjUsIDIxNywgMTg0LCAyMTAsIDksIDIwOSwgMTQ5LCAyMTksIDE1NiwgMjUsIDI0OCwgMjUxLCAKLSAgICAyMTIsIDIwLCAyNDcsIDQ0LCAyMjQsIDEyLCAyNDcsIDYzLCAyNDgsIDE2MSwgMywgMjA3LCAzLCAyNDcsIDE4NCwgMjQ1LCAKLSAgICAxOTgsIDIzNiwgMzksIDI0NywgMTgyLCAyNDYsIDQ1LCAyNDQsIDIzLCAyMzYsIDM5LCAyNDcsIDE4MywgMjQ2LCAzNSwgCi0gICAgMjQ3LCAxODMsIDI0NCwgMTUsIDI0NCwgMTYsIDIzMCwgMjA4LCAyMjMsIDY3LCAyMTksIDcyLCAyMTEsIDEwNCwgMjM2LCAKLSAgICAzOSwgMjQ3LCAxODMsIDIzNiwgMzksIDMsIDIzOCwgMjIyLCAyMjAsIDY3LCAyNDcsIDE4MywgMjMwLCAxNjksIDIxOCwgMzEsIAotICAgIDIyMCwgNjYsIDI0MCwgMjI3LCAyMTgsIDMxLCAyMjAsIDY2LCAyMzYsIDQ4LCAyNDgsIDIzNSwgMjUwLCAyMywgMjA5LCAKLSAgICAxNTcsIDIyNSwgMTcyLCAyMzYsIDQ0LCAyMjcsIDEsIDIzNiwgNDQsIDI0NSwgMTgyLCAyMTEsIDU3LCAyMTQsIDE5NSwgCi0gICAgMjQ0LCAyNiwgMjExLCA1NywgMjQwLCA5MSwgMjMwLCAxODksIDIyOCwgMTMsIDIzMCwgMTY5LCAyNDcsIDE5LCAyNDAsIAotICAgIDIyNywgMjQ3LCAxOSwgNjEsIDIxOSwgMywgNjIsIDIxOSwgMywgMjA0LCA3MywgNjEsIDIzOSwgMjI1LCAyMDQsIDczLCA2MiwgCi0gICAgMjM5LCAyMjUsIDIxNSwgMjAxLCA2MiwgMjE1LCAyMDEsIDIyOCwgMTA1LCAyNDksIDEyLCAyMTYsIDIwOSwgMjUsIDIxMiwgCi0gICAgMTgzLCAyNDcsIDI0MSwgMjUsIDQ3LCAyNTAsIDIzNCwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExOSwgMjQxLCAKLSAgICA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExNiwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExNCwgMjQxLCA5OCwgNjUsIAotICAgIDIzOSwgMjM0LCAyMDcsIDExMiwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExMCwgMjE2LCAxNzIsIDIyNCwgOSwgCi0gICAgMjE5LCAxOTMsIDIwNCwgODEsIDI0NywgMTg4LCAyNDUsIDE0OSwgMjA4LCAyNDUsIDIyNywgMTgzLCAyMTYsIDIxMiwgMjQ3LCAKLSAgICAxNywgMjQyLCA2MSwgMjQ1LCAxMzUsIDIwNCwgMzksIDIxMiwgMjYsIDIxMiwgMjQsIDIzNiwgNDksIDIxNiwgMTg0LCAyMzgsIAotICAgIDM1LCAyMTMsIDM3LCAyMjQsIDQ4LCAyMTUsIDIwNSwgMjQ2LCAxNDAsIDI0MywgMTAyLCAyMTgsIDEzMSwgMjQ4LCAyMSwgCi0gICAgMjQxLCAxMTQsIDIyMCwgNzgsIDIxMSwgMjAyLCAyMTMsIDMyLCAyNDcsIDE4NywgMjUwLCAxOTgsIDIzNiwgMTE4LCAyMjgsIAotICAgIDk4LCAyNDgsIDE0NCwgMjM5LCAyNDMsIDIwOCwgNTEsIDIzOSwgMjQzLCAyNDgsIDI4LCAyMDcsIDE3MSwgMjM3LCA4MSwgCi0gICAgMjQ2LCAxNDEsIDI0OSwgMjgsIDI0NiwgMTQxLCAyMzksIDExOCwgMjQ5LCAyOCwgMjQ2LCAxNDEsIDI0OCwgNjAsIDIxOSwgCi0gICAgNSwgMjI5LCAyNCwgMjE4LCA0NCwgMjQyLCA1MSwgMjQ3LCA2NywgMjQ5LCAxNywgMjQ3LCA2NywgMjQzLCA5NSwgMjI0LCAKLSAgICAxMCwgMjQwLCAxMDIsIDI0NSwgMTUwLCAyNDAsIDEwMiwgMjA4LCAyNDYsIDI0MCwgMTAyLCAyMTYsIDIxMywgMjQwLCAxMDIsIAotICAgIDI0NywgMTgsIDI0MCwgMTAyLCAyNDIsIDYyLCAyNDAsIDEwMiwgMjExLCAxODcsIDIwNCwgMzksIDIzNiwgNTAsIDI0MCwgCi0gICAgMTAyLCAyMjQsIDQ5LCAyNDAsIDEwMiwgMjQzLCAxMDMsIDI0MCwgMTAyLCAyMTgsIDEzMiwgMjQwLCAxMDIsIDIzOSwgMTIyLCAKLSAgICAyNDAsIDEwMiwgMjM3LCAxMjksIDI0MCwgMTAyLCAyMDMsIDI1MywgMjQwLCAxMDIsIDI0OCwgMTU2LCAyNDAsIDEwMiwgCi0gICAgMjE5LCAxMjAsIDI0MCwgMTAyLCAyMTgsIDEzMiwgMjIxLCAxNjcsIDIxOSwgNDYsIDIxNywgMjMwLCAyNDYsIDEyNSwgMjQwLCAKLSAgICAxODQsIDI0MCwgMTkxLCAyNDEsIDE4MywgMjIxLCAxNjcsIDIyNCwgNywgMjA4LCAxNTAsIDYxLCAxMTIsIDIxOCwgNTksIAotICAgIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCAxMjEsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCA0OSwgMjE4LCA1OSwgCi0gICAgMjQ5LCAyMywgMjMxLCAzNSwgNjEsIDUwLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyMzksIDIzNywgMjM3LCAxMjQsIAotICAgIDU0LCAyMDQsIDczLCAyMzcsIDEyNCwgNTQsIDIyMCwgNTIsIDIzNywgMTI0LCA1NCwgMjA5LCAyMCwgMTEyLCA1NCwgMjA5LCAKLSAgICAyMCwgMTIxLCA1NCwgMjQ2LCAzNiwgMjM3LCAxMDAsIDU0LCAxNzEsIDIzNywgMTAwLCA1NCwgMjQ1LCAxMjIsIDIwMywgCi0gICAgMjQ5LCAyMzcsIDgzLCAyNDAsIDE4NywgMjIyLCAyMzYsIDIxMCwgNjgsIDIzMCwgMTYwLCAyNDIsIDU2LCAyMjksIDg1LCAKLSAgICAyNDgsIDcxLCAyMDMsIDI0OSwgMjQ2LCA5LCAyMTcsIDE2NSwgMjM3LCAxMDMsIDIxOCwgMjIsIDIyNSwgMTEyLCAyMTIsIAotICAgIDIzOSwgMjUwLCA0NiwgMjEyLCAyMzksIDIzNiwgMjQzLCAyMTIsIDIzOSwgMjAzLCAyNDksIDIxNCwgMjQwLCAyMDMsIDI0OSwgCi0gICAgMjQ4LCAzLCAyMzksIDE2OSwgMjQ3LCAxNTAsIDIzMSwgNTAsIDIxMiwgMTM2LCAyNDcsIDE0OSwgMjMxLCA1MCwgMjEyLCAKLSAgICAxMzYsIDI0NywgMjMyLCAyMzgsIDYwLCAyMjUsIDEyMiwgMjAzLCAyNTAsIDI0MCwgODIsIDIyNSwgMTIzLCAyNSwgMjAzLCAKLSAgICAyNTEsIDIzNiwgMTI3LCAyMzcsIDk5LCAxMjAsIDIyNCwgMjQxLCAyMzYsIDEyNywgMjM3LCA5OSwgMTIwLCAyMDMsIDI0OCwgCi0gICAgMjM2LCAxMjcsIDIzNywgOTksIDIxOCwgNTEsIDIyMCwgNjUsIDIwMywgMjUxLCAzLCAyNDcsIDE2OCwgMjQxLCAxODEsIAotICAgIDI0NywgMjA5LCAzLCAyMDYsIDQ2LCAyMTgsIDIzMCwgMywgMjQ4LCAzMiwgMjM3LCAxNDUsIDIyNSwgMTIzLCAzLCAyMzcsIAotICAgIDIyNywgMjE4LCAxNjgsIDIyNSwgMTA4LCAyMjUsIDEyMywgMywgMjA3LCAxODAsIDIyMCwgNDQsIDIyNSwgMTIyLCAyMjAsIAotICAgIDQ0LCAyMDMsIDI1MCwgMjQ5LCAyNywgMjQ1LCAxOTksIDIwMywgMjM0LCAyMTcsIDIzNSwgMjMwLCAxNjksIDIyMCwgNjEsIAotICAgIDIzMCwgMTY5LCAyMzgsIDM0LCAyMzgsIDg5LCAyNDksIDI4LCAyNTAsIDIyMSwgMjQwLCAxOTYsIDI1MSwgMjAsIDI1MSwgCi0gICAgMjEsIDIyNCwgMzksIDIzMSwgNTUsIDIxMiwgNjIsIDIzMSwgMjUsIDI0NCwgMTIsIDIxOCwgMjI5LCAyMzcsIDIyMSwgMjQ0LCAKLSAgICAxNjcsIDIyNywgOTcsIDIyMywgOTEsIDIxOCwgNTAsIDI0MCwgMTAzLCAyMjUsIDc0LCAyMzcsIDE0NCwgMjQ4LCAyMjksIAotICAgIDIxOCwgNTMsIDIxMCwgODgsIDIxOCwgMTI0LCAyMjksIDY3LCA4MiwgMjI3LCAxLCAyMjcsIDE3NCwgMjE1LCAyNTIsIDIzOCwgCi0gICAgMTgwLCAyMTEsIDYzLCAyMjksIDY2LCAyNDcsIDI0MiwgMjQ1LCAxNTIsIDMsIDIzNywgNTUsIDIwNCwgNTgsIDI0OCwgMTU0LCAKLSAgICAyMzcsIDU1LCAyNDcsIDIwMywgMjM3LCA1NSwgMTIwLCAyMzcsIDUzLCAyMTEsIDIyMCwgMjM3LCA1NSwgMjM3LCAyMzcsIAotICAgIDIzNywgNTUsIDIzNywgNTYsIDMsIDQ3LCAyNDgsIDI2LCAyMzcsIDU1LCAyMzcsIDI0NCwgMjM3LCA1NSwgMjAzLCA0NSwgCi0gICAgMjM3LCA1NSwgMjE3LCAxNjYsIDIzNywgNTUsIDIzNywgNTYsIDMsIDIxNiwgNTQsIDIxNiwgNjcsIDIzNywgNTMsIDIzNywgCi0gICAgNTYsIDI0NCwgNjYsIDI0MywgMjIyLCAyMTMsIDYzLCAzLCAzNCwgNzAsIDIzMSwgNiwgMjQxLCAxMTcsIDE1NywgMjQ3LCAKLSAgICAxODAsIDI1MCwgMjIwLCA5NywgMjQ4LCAxMiwgMjEyLCA1NCwgOTcsIDI0NSwgMjQ0LCA5NywgMjExLCAxOTYsIDIxMCwgCi0gICAgMTY3LCA5NywgMjQyLCA0OSwgMjQ0LCAxNDUsIDk3LCAyMTgsIDEyNSwgNzYsIDIxOCwgNDUsIDIzOSwgMjEwLCAyNDgsIDgzLCAKLSAgICAyNDMsIDEzMywgOTcsIDIxMSwgMjEyLCAyNDgsIDI1MCwgMjA5LCAzOCwgMjQ4LCAyNTAsIDYxLCAyMzksIDE5NywgMjM2LCAKLSAgICAxMiwgMjE4LCA1NywgOTcsIDIyNCwgNTMsIDI0OSwgMTAsIDI0NSwgOTIsIDI0MCwgMjE0LCA3OSwgMjQzLCA5NywgNTQsIAotICAgIDI0NSwgMTQxLCAyNDcsIDM3LCAyNDgsIDIzNCwgMywgMjAzLCA0MywgNTQsIDI0OCwgMjM0LCAzLCAyNDMsIDk3LCA1NCwgCi0gICAgMjQ4LCAyMzQsIDMsIDI0MCwgMjMwLCA1NCwgMjQ4LCAyMzQsIDMsIDIxOCwgMjAsIDU0LCAyMjQsIDUzLCAzLCAyMDQsIDExLCAKLSAgICAyNDYsIDE3OCwgMywgMTc3LCAyMDgsIDkxLCAyNSwgMjAzLCA0MywgNTQsIDIxNCwgMTc0LCAyMTgsIDIyOCwgMjQ1LCAyMjAsIAotICAgIDI0NywgMjA3LCAyMjQsIDEwOCwgMjM5LCAyMDIsIDI0MywgMTU0LCAyMTksIDI0OCwgMjQzLCAxNTksIDI0MiwgMTIsIDI0MCwgCi0gICAgMTEsIDIzOSwgMTgyLCAxNzEsIDI0MCwgMTEsIDIzOSwgMTgyLCAyMTksIDE1NCwgMywgMjQ1LCA5NSwgMjE5LCAxNTQsIAotICAgIDI0MCwgOTUsIDIwNiwgMjI0LCAyNDcsIDcyLCAyMDksIDE4MywgMjQ3LCA3MiwgMjQ3LCAzOCwgMjMxLCAzNSwgMjQ2LCAKLSAgICAxNzgsIDMsIDE3NywgMjA4LCA5MCwgMjQ2LCAxNzgsIDMsIDE4MywgMjA4LCA5MCwgMjQ4LCAyMzEsIDI0NiwgMTc3LCAyNDYsIAotICAgIDIyLCAyMTcsIDE2MSwgMjE1LCAxOTEsIDIxNywgMTYxLCAyMTksIDk0LCAyMTEsIDUzLCAyMTUsIDEzMywgMjA4LCA4MiwgCi0gICAgMjE1LCAxMzMsIDI0OCwgOCwgMjEwLCA3LCAyMjcsIDIyNywgMjIxLCAxNTgsIDIyMSwgMTU5LCAzLCAyNDQsIDY1LCAyNDUsIAotICAgIDE1MSwgMjQ2LCAxNiwgMjQ4LCA5LCAxNzEsIDI0OCwgOSwgMjM3LCAyNDQsIDI0OCwgOSwgMjQ4LCAyNiwgMjQ4LCA5LCAKLSAgICAyMTksIDI0MywgMjQ4LCA5LCAyNDgsIDYsIDIyMywgODUsIDI0OSwgMTQsIDIxNCwgMTgyLCAyMjQsIDI0MiwgMjA5LCAxNjIsIAotICAgIDIxNiwgMTUyLCAyMTksIDE1MiwgMjQwLCA2NSwgMjI1LCAxNzIsIDIxNCwgMjIyLCAyNTAsIDE5NSwgMjE3LCAxODUsIDI1MSwgCi0gICAgMTE5LCAyMjcsIDMsIDI0NiwgMTYyLCAyMjQsIDI1NCwgMjE5LCAyMTAsIDIwOCwgOTgsIDIzMSwgNDYsIDIwOCwgOTgsIAotICAgIDIxOSwgMTYxLCAyNDEsIDIzNiwgOTcsIDIzMSwgNDMsIDI0MSwgNTcsIDI0MSwgNTgsIDMsIDE4MywgNTMsIDU1LCAyNDYsIAotICAgIDE2LCAyMjUsIDEzNywgMywgMjI2LCAyNDksIDIzOSwgMjI1LCAyNDYsIDE2LCAyMjUsIDEzNywgMywgMjE2LCAxODgsIDIzOSwgCi0gICAgMjI1LCAxNzEsIDIyNSwgMTM3LCAzLCAyMTYsIDE4OCwgMjM5LCAyMjUsIDE3MSwgMjI1LCAxMzcsIDMsIDIyNiwgMjQ5LCAKLSAgICAyMzksIDIyNSwgMjE4LCAyOCwgMjE4LCAyOSwgMjM2LCA1MywgMjIyLCAyMTAsIDIyNCwgODAsIDIxOCwgMTc2LCAyMjQsIAotICAgIDgwLCAyMTgsIDE3NywgMywgODYsIDUzLCAyNTAsIDUwLCAyMjcsIDIyMiwgMjA1LCAyMjksIDIyNCwgNzksIDIyNCwgODAsIAotICAgIDIxOCwgMTc3LCAyMjAsIDY4LCAyMjEsIDE5MiwgMjI0LCA4MCwgMjE4LCAxNzUsIDI1MCwgMTk2LCAzLCAyNDgsIDIyMCwgCi0gICAgMjQ3LCA2NSwgMjQ3LCA2NiwgMywgMjM5LCAyMTgsIDIwNSwgMjI2LCAyNDcsIDY1LCAyMDksIDE1OSwgMjE2LCAyMDQsIAotICAgIDIwNSwgMjI1LCAyNDAsIDYsIDIxNywgMjE3LCAyMTgsIDM1LCAyMTEsIDc0LCAyMTcsIDI1NCwgMjQ4LCAxNjAsIDIwNywgCi0gICAgMTM4LCA4NiwgMjUwLCA5MSwgMjQ2LCAxOCwgODYsIDI1LCA5NiwgMTcxLCAyNDYsIDYyLCAyNTAsIDkxLCAyNDYsIDE4LCAKLSAgICA4NiwgMjUsIDk2LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTIsIDMsIDQzLCAxMTgsIDIxOSwgMTk5LCAyNDYsIDE4LCAxODMsIAotICAgIDI1LCAxNzcsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MSwgMjUwLCAxOTQsIDE4MywgMjUsIDE3NywgMTcxLCAyNDYsIDYyLCAKLSAgICAyNTAsIDkxLCAxMjQsIDI0NywgMjA2LCA5NywgMTM4LCAyNDcsIDIwNiwgOTcsIDIxMSwgMjE3LCAzLCAyNDcsIDU4LCA5NSwgCi0gICAgMjExLCAyMTYsIDIxMSwgMjE3LCAzLCAxMTgsIDIxMSwgMjQxLCAyMDQsIDc1LCAyMTEsIDIxNywgMywgMTI2LCAyMTEsIAotICAgIDI0MSwgMjA0LCA3NCwgMjQ4LCAyMDMsIDI0MSwgMTE3LCAyMTgsIDgxLCAyMjcsIDIxNywgMjI1LCAxNDksIDIzOCwgNDksIAotICAgIDIxNiwgMTEsIDIyNSwgMTQ5LCAyMzgsIDQ5LCAyMjcsIDQzLCAzLCAyMzEsIDE3LCAyMTksIDksIDI0NiwgMTYsIDIyNywgCi0gICAgNDMsIDMsIDIyOSwgMTUxLCAyMjksIDE1MSwgMjI3LCA0MiwgMTcxLCAyMjcsIDQyLCAyNDgsIDEyOCwgMjQ4LCAxMjksIDMsIAotICAgIDI0NywgNTgsIDk1LCAyNDgsIDcsIDIyNywgMTA1LCA5NywgMjE2LCAyMDUsIDI0NywgMTQ1LCAyNDksIDI2LCAzLCA5NiwgCi0gICAgNTMsIDU1LCAyNDEsIDg0LCAzLCA5NiwgNTMsIDU1LCAyMjAsIDMyLCAzLCAyNDAsIDIxMiwgMTMxLCAzLCA0OSwgNTAsIDUzLCAKLSAgICA1NSwgMjExLCAyNDksIDMsIDg2LCA1MywgNTUsIDIwOCwgMTQ1LCAzLCAxNzcsIDUzLCA1NSwgMjIxLCAxOTIsIDExOCwgCi0gICAgMjA2LCAyNDgsIDI0MSwgMTQxLCA5NywgMjI5LCAxNDgsIDIwOSwgMTUyLCAyMzEsIDExLCAxNiwgMzUsIDgsIDYsIDIyNywgCi0gICAgMTczLCAyMzEsIDExLCAxNiwgMzUsIDgsIDUsIDIyNywgMTczLCAyMzEsIDExLCAxNiwgMzUsIDIyMSwgNDUsIDIzMSwgMTEsIAotICAgIDE2LCAzNSwgMjEwLCAxMDIsIDIzMSwgMTEsIDE2LCAzNSwgOCwgMjI3LCAxNzMsIDIzOSwgMjQ5LCAyNDEsIDExNywgMjA4LCAKLSAgICAxNDAsIDIwMywgMjI1LCAyMzcsIDEzMCwgMjIxLCAyOCwgMjUsIDI0OCwgMTQsIDIzNiwgMTM0LCAyMTgsIDEwNiwgMjI0LCAKLSAgICAxNTEsIDIwOSwgMTYwLCAyNDUsIDExMiwgMjQ4LCAyNTEsIDIxMiwgODgsIDIxOCwgNjEsIDIxMSwgOTUsIDMsIDEwMSwgCi0gICAgMjQzLCA4NSwgMjMwLCAxNjksIDE2LCAzNSwgMjQ4LCAxNDEsIDIwOCwgODAsIDI0MSwgMTAwLCA2MiwgNTEsIDI0NywgMTQ1LCAKLSAgICA2MSwgNTEsIDI0NywgMTQ1LCAyMjgsIDgsIDIxNiwgMTM4LCAyNDYsIDYxLCAyMjgsIDgsIDI0OCwgMjYsIDI0NiwgNjEsIAotICAgIDIyOCwgOCwgMjE5LCAyNDMsIDI0MywgMjIxLCAyMjgsIDgsIDI0OCwgMjYsIDI0MywgMjIxLCA1LCAyMTksIDI0MywgMjQzLCAKLSAgICAyMjEsIDUsIDI0OCwgMjYsIDI0MywgMjIxLCAyMDYsIDIyMywgMjE2LCAxMzgsIDIwOCwgODUsIDI0MiwgNjksIDIxNiwgCi0gICAgMTM4LCAyMDgsIDg1LCAyMDYsIDIyMywgNSwgMjE2LCAxMzgsIDIwOCwgODUsIDI0MiwgNjksIDUsIDIxNiwgMTM4LCAyMDgsIAotICAgIDg1LCAyMjYsIDI1MSwgNTAsIDIxMywgNzcsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgNTAsIDIxMywgNzcsIDYxLCAyNDYsIAotICAgIDYxLCA0MywgMjQ1LCAxMzEsIDIxOCwgNDgsIDI0NSwgMTMxLCAyMTgsIDQ5LCAzLCAyMzcsIDEzNiwgNTYsIDI0NSwgMTMxLCAKLSAgICAyMTgsIDQ4LCAyMjEsIDE2MiwgNDksIDIxMywgMTQ2LCAzLCAxMjYsIDI0MywgODMsIDIyMSwgMTYyLCA1MCwgMjEzLCAxNDYsIAotICAgIDMsIDEyNiwgMjQzLCA4MywgMTYsIDM1LCAyMjUsIDg3LCAyNDYsIDE4NCwgNjEsIDgsIDI0NSwgMTMwLCA3OSwgOCwgMjQ1LCAKLSAgICAxMzAsIDI0NiwgMjIyLCAyNDUsIDEzMCwgMjIwLCA0MCwgOTcsIDI0MiwgNzIsIDc2LCAyMTksIDMyLCAyMzAsIDM5LCAyMjQsIAotICAgIDIyLCAyMTAsIDk2LCAyMjQsIDIzNywgMywgMjIyLCA2NCwgMjQ3LCAyMjIsIDI0NywgMjM4LCA3NiwgMjM1LCAyMjIsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAxMTgsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAxMjAsIDIyMCwgODMsIDI0NiwgMjAsIAotICAgIDI0MCwgMTAzLCAxMjYsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMzksIDE0NywgMjIwLCA4MywgMjQ2LCAyMCwgCi0gICAgMjQwLCAxMDMsIDIzOSwgMjMzLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjEyLCA4OCwgMjIwLCA4MywgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDIxMywgMTEyLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxNDMsIDIyMCwgODMsIAotICAgIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjIsIDY0LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA5LCAxNTMsIDIyMCwgCi0gICAgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDExMywgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTU1LCAKLSAgICAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjIwLCAyNywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTMyLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMjA5LCAyNiwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIzOSwgMTQzLCAyNDYsIDIwLCAyNDAsIDEwMywgCi0gICAgMjM5LCAyMzEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMTIsIDg0LCAyNDYsIDIwLCAyNDAsIDEwMywgMjEzLCAxMTAsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAyNDEsIDE0MiwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMiwgNjIsIDI0NiwgMjAsIDI0MCwgMTAzLCAKLSAgICAyMDksIDE1MSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTExLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA3LCAxNTMsIDUwLCAKLSAgICAyMTEsIDIxNiwgNTAsIDIxMSwgMjE3LCAzLCAxMTgsIDIxMSwgMjQxLCAyMDQsIDc1LCA1MCwgMjExLCAyMTcsIDMsIDEyNiwgCi0gICAgMjExLCAyNDEsIDIwNCwgNzQsIDI0NywgMTc1LCAyNDcsIDE3NiwgMywgMjExLCAyNDEsIDIwNCwgNzQsIDIxNSwgMjUxLCAKLSAgICAyNDgsIDEyOCwgMjQ4LCA5LCAyNDcsIDU2LCAyMjUsIDEwOSwgMjQ2LCAxOSwgNjIsIDIxMiwgNjMsIDI1LCAyNDUsIDEyOSwgCi0gICAgMjIxLCAxOTIsIDIxOCwgMTEyLCAyMzYsIDEyNiwgMjI1LCAxMjMsIDIzMSwgNTAsIDI0NywgMTUyLCAyMTAsIDIyOCwgMjI3LCAKLSAgICAxNjYsIDIxMiwgNTIsIDIxOSwgMjQ1LCAyMTEsIDE3OCwgMjQ0LCAxNTAsIDIxMCwgMjEwLCAyMTEsIDIwNSwgMjExLCAyMDYsIAotICAgIDIwNCwgNTksIDIzMCwgODMsIDQ5LCAyMzcsIDEyNCwgMjA5LCAxNjIsIDIxNiwgMTUyLCAyMDksIDE2MiwgMjE2LCAxNTMsIAotICAgIDMsIDIxOSwgMTUzLCA1MCwgMjM3LCAxMjQsIDIwOSwgMTYyLCAyMTYsIDE1MiwgNjEsIDIwOCwgMTI2LCAyMDksIDE2MSwgCi0gICAgNjIsIDIwOCwgMTI2LCAyMDksIDE2MSwgMjA5LCAxNjIsIDIyMCwgMzIsIDIwOCwgMTQ1LCA3NiwgMjI0LCA3NiwgMjQ2LCAKLSAgICA0MCwgMjI0LCA4MCwgMjE4LCAxNzYsIDI0OSwgMjYsIDc2LCAyNDEsIDU3LCAyMTEsIDEwMCwgMjQxLCA1NywgMjQxLCA1OCwgCi0gICAgMywgMjI3LCAxMzEsIDIzOSwgMTg5LCAyNDEsIDU3LCAyMTksIDEwLCAxMTUsIDIxMSwgMTAwLCAyNDEsIDU3LCAyMjcsIAotICAgIDEwNCwgMjE5LCA5MywgNjIsIDIxNywgMTYxLCAyMjYsIDI1MSwgNDksIDIxOSwgOCwgMjI2LCAyNTEsIDQ5LCAyNDgsIDI0NiwgCi0gICAgMjE5LCA5LCAyMjYsIDI1MSwgNDksIDIzOSwgMTQ5LCAyMTksIDksIDIyNiwgMjUxLCA0OSwgMjE5LCAxNDcsIDIyNiwgMjUxLCAKLSAgICA0OSwgMjQ1LCAxNDQsIDQ5LCAyMDMsIDIyMCwgMjM3LCAxMjMsIDIwNywgMTc0LCAyMjAsIDUyLCAyMzcsIDEyNCwgNTQsIAotICAgIDIxNiwgMTg4LCAyMzcsIDEyNCwgMywgMjM5LCAyNTQsIDIxMSwgMTk1LCAyMTYsIDczLCAyMTYsIDE4OCwgMjM3LCAxMjQsIAotICAgIDMsIDIzOSwgMjU0LCAyMTEsIDE5NSwgMjE2LCA3MywgMjA5LCAyMCwgMTEyLCA1NCwgMjE2LCA3MywgMjA5LCAyMCwgMTIxLCAKLSAgICA1NCwgMjE2LCA3MywgMjA1LCAyMjgsIDIzNywgMTIzLCAyMTYsIDczLCAyMzcsIDEyNCwgMywgMTAxLCAyNDAsIDMsIDI0MCwgCi0gICAgMjAxLCAyMTYsIDE4OCwgMjM3LCAxMjQsIDMsIDIxOSwgNzEsIDI0OCwgMTA0LCAxMDEsIDI1LCAyMTUsIDI1MywgMjM5LCAKLSAgICAyNTMsIDYxLCAxMjEsIDIxOCwgNTksIDQ5LCAyMzcsIDEyNCwgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCA0OSwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCA0OSwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDQ5LCAyMTgsIDU5LCAyNDksIDIzLCAKLSAgICAyMzEsIDM1LCA2MiwgNTAsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgMTEyLCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCAxMTIsIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgMTEyLCAyMTgsIDU5LCAyNDksIDIzLCAKLSAgICAyMzEsIDM1LCA2MiwgMTIxLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyNDQsIDExLCAyNDUsIDIyMCwgMjI5LCAxNTAsIAotICAgIDI1LCAyMjQsIDksIDEyNiwgMjIyLCAyMTgsIDI0NSwgMjE5LCAyMTcsIDIzMSwgMjE4LCA2NywgMjQ3LCA3NCwgNjIsIDIzNywgCi0gICAgOTEsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIDE1NCwgNjEsIDIzNywgOTEsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIAotICAgIDE1NCwgMjEyLCA3LCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAxNTQsIDIwOSwgMjIxLCAyNDcsIDIyLCAyMDQsIDYsIDIyOSwgCi0gICAgMTQ5LCAxMTgsIDI0NywgMTQ2LCAyMjQsIDksIDEyMCwgMjQ3LCAxNDYsIDIyNCwgOSwgMTI2LCAyNDcsIDE0NiwgMjI0LCA5LCAKLSAgICAyMDgsIDExNywgMzgsIDIxOCwgMjI4LCAyNDUsIDIyMCwgMjM3LCA5MSwgMjQzLCAxNTQsIDIxNCwgMTg0LCAyMTcsIDIzMiwgCi0gICAgMjM1LCAxNTYsIDI0MCwgNjUsIDIzNSwgMTU2LCAyMTksIDI0OCwgMjQzLCAxNjAsIDIzNSwgMTU2LCAyNDMsIDEwNywgMywgCi0gICAgMjA5LCAxMTIsIDI0MywgMTA3LCAzLCAyMDksIDExMywgMjUsIDIxOCwgMTYxLCAyNDMsIDEwNywgMywgMjE4LCAxNjEsIAotICAgIDIzOSwgMTM1LCAzLCAyMTgsIDE2MSwgMjM5LCAxMzUsIDMsIDIwOCwgMjI1LCAyMzksIDEzNSwgMywgMjUwLCAyMzIsIDIwMywgCi0gICAgMTk2LCA2MiwgMjM5LCAxODIsIDIzOSwgMTgyLCAxNzEsIDIzOSwgMTgyLCAyNDcsIDM4LCAxMjIsIDI0MywgMTQwLCAyNDcsIAotICAgIDM4LCAyNDAsIDExLCAyNDcsIDIzMywgMjQwLCAxMSwgMjQ3LCA4NywgMjQxLCA5NCwgMjIxLCAxNjAsIDI0MSwgOTQsIDIyMSwgCi0gICAgMTYxLCAyMTksIDE1MywgMjQxLCA5NCwgMjIxLCAxNjEsIDIxOSwgMTU5LCAyMjEsIDE2MCwgMjIxLCAxNjEsIDIxOSwgMTUzLCAKLSAgICAyMjEsIDE2MSwgMjE5LCAxNTksIDI0MSwgOTQsIDI0MywgMTA2LCAyNDEsIDk0LCAyMTksIDE1MywgMjQxLCA5NCwgMjE5LCAKLSAgICAxNTEsIDI0MywgMTA2LCAyMTksIDE1MywgMjE5LCAxNTEsIDIwNCwgODUsIDIxMSwgMjAyLCAyMjEsIDE2MSwgMjE5LCAxNTksIAotICAgIDIxMSwgMjAyLCAyNDcsIDczLCAyMTksIDE1OSwgMjQ0LCAxMSwgMjA0LCAxNSwgMjI0LCAxMDUsIDIyNSwgNjQsIDIxOSwgCi0gICAgMjAxLCAyNDYsIDE4LCA1MCwgMjUsIDQ5LCAyMTMsIDE0NiwgMjUwLCA5MSwgMjQ3LCA1OCwgMjAzLCAxOTYsIDIzMSwgNDEsIAotICAgIDIzOSwgMTc2LCAyMTIsIDcyLCA5NywgMjQ0LCA2NCwgMjM5LCAxNzYsIDIxMiwgNzIsIDk3LCAyNDUsIDIyMSwgMzgsIDIyOSwgCi0gICAgMTUxLCAyMTUsIDIxNCwgMjIyLCAyMTAsIDIxOSwgMTU0LCAzLCA0MywgMjA5LCAxMTIsIDIxMSwgNjUsIDI0NiwgMTc3LCAKLSAgICAyNDQsIDE5NiwgMjI5LCAzMywgMjI3LCA5OCwgMjExLCAyMTUsIDIzNywgNjUsIDIzMSwgNTAsIDIxMiwgMTM2LCAxMjYsIAotICAgIDIxNiwgMTYzLCA1NSwgMTI2LCAyMTYsIDE2MywgNTYsIDEyNiwgMjE2LCAxNjMsIDIyNywgMjIyLCAxMjYsIDIxNiwgMTYzLCAKLSAgICAyMTYsIDE2LCA0OSwgMjExLCAyMTIsIDI0NywgMTkyLCA1MCwgMjExLCAyMTIsIDI0NywgMTkyLCAxMjAsIDIxMSwgMjEyLCAKLSAgICAyNDcsIDE5MSwgMTI2LCAyMTEsIDIxMiwgMjQ3LCAxOTEsIDQ5LCAyMDksIDM4LCAyNDcsIDE5MiwgNTAsIDIwOSwgMzgsIAotICAgIDI0NywgMTkyLCA0OSwgMjUwLCAyMjAsIDI0NywgMTkyLCA1MCwgMjUwLCAyMjAsIDI0NywgMTkyLCAyMjQsIDM0LCAyNDcsIAotICAgIDE5MiwgMjI3LCAxMzIsIDIyNCwgMzQsIDI0NywgMTkyLCAyMjcsIDEzMiwgMjI0LCAzMywgMjQ4LCAyNDgsIDk4LCAzLCAKLSAgICAyNDgsIDI0NywgMjQ4LCAyNDgsIDEzMiwgMjAzLCAxOTYsIDI0OCwgMjQ4LCA5OCwgMywgMTMyLCAyMDMsIDE5NiwgMjQ4LCAKLSAgICAyNDgsIDI2LCAxMzIsIDIwMywgMTk2LCAyNDgsIDI0OCwgOTgsIDMsIDI2LCAxMzIsIDIwMywgMTk2LCAxNTcsIDI0NiwgCi0gICAgMTY5LCA4MiwgMjQ4LCAyNDgsIDk4LCAzLCAyNiwgMjQ2LCAxNjgsIDIwMywgMjMzLCAyMjUsIDEwNiwgMjI0LCAxNCwgMjM5LCAKLSAgICAxMDMsIDIwOCwgMTY3LCAyMDgsIDEyMiwgMjExLCA4NiwgNzYsIDIyNywgMTQ2LCAyMTIsIDEzNywgNzYsIDIzMCwgMTcwLCAKLSAgICAyMjMsIDI1MSwgMjM3LCAyNDEsIDI0MCwgMTAyLCAyMzcsIDI0MSwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIDI0MCwgMTg0LCAKLSAgICAyNDAsIDEwMywgMywgMjA5LCAxNzksIDc2LCAyMzAsIDg1LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDcsIAotICAgIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgOCwgMjUsIDIxMiwgMzAsIDI0MCwgMTg0LCAyMTIsIDMwLCAyNDAsIAotICAgIDEwMywgMywgMTcxLCAyMjQsIDgsIDI1LCAyNDUsIDI0NiwgMjEwLCAxNjYsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIAotICAgIDIyNCwgOCwgMjUsIDIwOCwgMjQzLCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIzNywgMTM1LCAyMTIsIDMwLCAKLSAgICAyNDAsIDEwMywgMywgMjM2LCA1MiwgMjA0LCA4LCAyNDAsIDEwMiwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIAotICAgIDI0MCwgMTg0LCAyNDAsIDEwMywgMjE0LCAyMTQsIDI0NCwgNDUsIDIzOSwgMTc0LCAyMTYsIDExMywgMjQwLCAxMDIsIDIxMiwgCi0gICAgMzAsIDI0MCwgMTAzLCAzLCAyMzcsIDU0LCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIxMCwgMjEwLCAyMTIsIAotICAgIDI5LCAyNDAsIDEwMiwgMjIyLCAyMTYsIDI0MCwgMTAyLCAyNDAsIDIwMywgMjQwLCAxMDIsIDIwNiwgMjUzLCAyNDAsIDEwMiwgCi0gICAgMjQwLCAxMDMsIDMsIDI0NSwgMjQ2LCAyMTAsIDE2NiwgMjE5LCAxLCAyNDAsIDEwMiwgMjQ1LCAyMTIsIDI0MCwgMTAyLCAKLSAgICAyNDUsIDIxMywgMjQwLCAxMDIsIDIyOSwgNjUsIDI0MCwgMTAyLCAyNDAsIDEwMywgMjA5LCAyMywgMzQsIDIyOSwgNjYsIAotICAgIDIyOSwgNjUsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgMjI5LCA2NSwgMjQwLCAxMDMsIDMsIDI0NiwgMTYsIAotICAgIDI0MCwgMTg0LCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTAsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MSwgCi0gICAgMjUsIDIwNCwgOCwgMjQwLCAxOTEsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MSwgMjUsIDIwOCwgMjQzLCAyNDAsIAotICAgIDE4NCwgMjQzLCAxNjEsIDI0MCwgMTAyLCAyMDMsIDIzMiwgMjQwLCAxMDIsIDI1MCwgMjE0LCAyNDAsIDEwMiwgMjE4LCAxOSwgCi0gICAgMjQwLCAxMDIsIDI0NSwgMTE0LCAyNDAsIDEwMiwgMjE4LCAyMzIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgMjI3LCAxNywgCi0gICAgNzYsIDIwOCwgNjIsIDI0MywgMTYxLCAyNDcsIDE0OCwgMjE2LCAxMTMsIDI0MCwgMTAyLCAyMzksIDExNCwgMjQwLCAxMDMsIAotICAgIDMsIDE3MSwgMjI0LCA3LCAyNTAsIDIxMiwgMjQwLCAxMDIsIDI0MCwgNTgsIDI0MCwgMTAyLCAyMDQsIDYwLCAyNDAsIDEwMiwgCi0gICAgMjEyLCA1MywgMjQwLCAxMDIsIDIwOCwgMjA1LCAyNDAsIDEwMiwgMjM3LCAyNDIsIDI0MCwgMTAyLCAyMjcsIDQsIDI0NSwgCi0gICAgMTE0LCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAyMzYsIDIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgCi0gICAgMTcxLCAyMjQsIDgsIDI1LCAyNDUsIDI0NiwgMjEwLCAxNjYsIDI0MCwgMTAzLCAyMTQsIDE4NiwgMjMxLCA1MCwgMjQwLCAKLSAgICA1OSwgMjUwLCA1NiwgMjQwLCAxMDIsIDIzOSwgMTk0LCAyNDAsIDEwMiwgMjEyLCA1NCwgMjQwLCAxMDIsIDI0MywgMTMzLCAKLSAgICAyNDAsIDEwMiwgMjQwLCAxMDMsIDIwNCwgMywgMjI0LCA3LCAyNDAsIDEwMywgMywgMjI1LCAxMiwgMjI1LCA3NiwgMjM3LCAKLSAgICAyNDEsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIwOSwgCi0gICAgMTc5LCA3NiwgMjMwLCA4NSwgMjEyLCAzMCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAyMTIsIDMwLCAKLSAgICAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjM3LCA1NCwgMjQwLCAxODQsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMDMsIDIxOCwgCi0gICAgMjEyLCAzMSwgMjI5LCA2NSwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDI0NiwgMTYsIDI0MCwgMTg0LCAyMTgsIDE5LCAyNDcsIAotICAgIDE4LCAyNDAsIDEwMiwgMjQ1LCAxMTQsIDI0NywgMTgsIDI0MCwgMTAyLCAyMDQsIDYwLCAyNDcsIDE4LCAyNDAsIDEwMiwgCi0gICAgMjEyLCA0NywgMjM5LCAxMTQsIDI0MCwgMTAyLCAyMTIsIDQ3LCAyMTIsIDMwLCAyNDAsIDEwMiwgMjA2LCAyMTgsIDI0MCwgCi0gICAgMTAyLCAyNDAsIDEwMywgMywgMjE1LCAyMTIsIDI0MCwgMTg0LCAyNDAsIDEwMywgMywgMjIxLCAxOTIsIDIzOCwgMjcsIAotICAgIDIzOCwgMTYwLCAyNDAsIDEwMywgMywgMjIwLCA1MiwgMjM4LCAxNjAsIDIxOCwgMjMwLCAyNDcsIDIzOSwgMjQ0LCA1OSwgCi0gICAgMjE0LCAxNjQsIDIyNCwgNDgsIDIzNywgNTcsIDIyNCwgNDgsIDIxMSwgMjE4LCAyMjQsIDQ4LCAyMzcsIDkzLCAyMTgsIAotICAgIDIzMCwgMjE2LCAxODcsIDExOCwgMjM3LCAxMjMsIDIxOCwgMjMwLCAyMTYsIDE4NywgMjQ3LCAyNTEsIDIzNywgMTAwLCAKLSAgICAyMzEsIDUwLCAyNDYsIDIyNCwgMjE4LCAyMzAsIDIzOSwgMTEzLCAyMTgsIDIzMCwgMywgMjE4LCAxOSwgMjQwLCAxMDIsIAotICAgIDIxOCwgMjMwLCAzLCAyMzksIDE4MywgMjM3LCA5OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjExLCAKLSAgICAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjExLCAKLSAgICAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAKLSAgICAyMjksIDIwNywgMTc0LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAxNTMsIDI0MSwgCi0gICAgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIAotICAgIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgCi0gICAgMjA1LCAyMTIsIDIyNywgMjI5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDIxMSwgMjM4LCAKLSAgICAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMDUsIAotICAgIDIxMiwgMjI3LCAyMjksIDc5LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgCi0gICAgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIAotICAgIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIxMSwgMjM4LCAyMDQsIAotICAgIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIxMSwgMjM4LCAyNDEsIAotICAgIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDc5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMjExLCAKLSAgICAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIAotICAgIDc5LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAyMzYsIDEyNSwgMjE3LCA0MCwgNTEsIDIxOSwgCi0gICAgMjMzLCAyMzYsIDEyNSwgMjE3LCA0MCwgNTEsIDIxOSwgMjM0LCAyMzEsIDUwLCA2MiwgMjExLCAxNzcsIDIxMiwgMiwgMjE3LCAKLSAgICA0MCwgNTEsIDIxOSwgMjMzLCAyMTIsIDIsIDIxNywgNDAsIDUxLCAyMTksIDIzNCwgMjMxLCA1MCwgNjIsIDIxMSwgMTc3LCAKLSAgICA5NiwgMjE1LCAyMTgsIDE3NywgMjE1LCAyMTgsIDg2LCAyMTUsIDIxOCwgMTgzLCAyMTUsIDIxOCwgMTMyLCAzMiwgMjQwLCAKLSAgICAyNTEsIDIxOSwgMjMzLCA3OSwgMTMyLCAzMiwgMjQwLCAyNTEsIDIxOSwgMjMzLCAzMiwgMTcxLCAyNDAsIDI1MSwgMjE5LCAKLSAgICAyMzMsIDc5LCAzMiwgMTcxLCAyNDAsIDI1MSwgMjE5LCAyMzMsIDc5LCAyNTAsIDIzNiwgMjE5LCAyMzMsIDIxMCwgMTY5LCAKLSAgICAyNTAsIDIzNiwgMjE5LCAyMzMsIDQxLCA3OSwgNTIsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIAotICAgIDIzMywgNDEsIDc5LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDQxLCA3OSwgMTI0LCA1MiwgMjQ1LCAKLSAgICAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAyMzAsIDI0OCwgMjE5LCAyMzMsIDQxLCAyMzAsIDI0OCwgMjE5LCAKLSAgICAyMzMsIDc5LCA0MSwgMjMwLCAyNDgsIDIxOSwgMjMzLCAyMDUsIDI0MiwgNzksIDIxMiwgMCwgMjA1LCAyNDIsIDc5LCAyMTYsIAotICAgIDc0LCAyMTIsIDAsIDI0NiwgMTY3LCAyNDgsIDIwLCAyMTYsIDc0LCAyNDYsIDE2NywgMjQ4LCAyMCwgMjE1LCAyMTgsIDIzNywgCi0gICAgMzgsIDIxMSwgODEsIDIyNywgNDAsIDIxNiwgMTkzLCAyNDcsIDM5LCAyMzYsIDI0MCwgMjA4LCAxMTAsIDIzNiwgMjQwLCAKLSAgICAyMDgsIDExMSwgMywgMjQ3LCAxNzgsIDIyMSwgMTY3LCAyMDgsIDExMCwgMjI0LCAyMTMsIDE1NywgMjE2LCAxOTQsIDIxMSwgCi0gICAgODcsIDIwOCwgMTA4LCAyMDgsIDEwOSwgMjQ3LCAzOSwgMjQ3LCAxNTMsIDIyMCwgMjksIDI0NywgMTUzLCAyMDgsIDU5LCAKLSAgICAyNDcsIDE1NCwgMjExLCA2MSwgMjI0LCAxMDksIDI1MCwgMjQwLCAyMzksIDI1MCwgMjQxLCA3NywgMjE4LCA1MSwgMjQ3LCAKLSAgICAzOSwgMjIwLCAyOSwgMjE4LCA1MSwgMjQ3LCAzOSwgMjA5LCAxOTcsIDIyMCwgMjksIDIwOSwgMTk3LCAyNTAsIDIyLCAyMjAsIAotICAgIDI5LCAyNTAsIDIyLCAyMTYsIDE0NSwgMjA2LCA0NywgMjQ0LCA0MSwgMjA4LCA1MCwgMjUwLCA4NiwgMjI3LCA4LCAyMDgsIAotICAgIDExNiwgMjI0LCA0MiwgMjI0LCAxMywgMjE2LCAxOTIsIDIxMCwgMTgyLCAyMTYsIDE5MiwgMjI0LCAxMywgMjQ3LCA4NiwgCi0gICAgMjUxLCA5NSwgMjA4LCAxMDcsIDIxMiwgMjUxLCAyMTUsIDE4OCwgMjExLCAyMTAsIDIzNiwgMTA2LCAyMDgsIDExNCwgMjI3LCAKLSAgICAxMzQsIDgwLCAyMDgsIDExNCwgMjI3LCAxMzQsIDI0NSwgMTk5LCA1NCwgMjE4LCA1MSwgMjQ3LCAyNCwgMjE2LCA2NywgCi0gICAgMjI3LCAxMzQsIDIwOCwgODIsIDIzOSwgMjI2LCAyMjAsIDMyLCAyMTgsIDMwLCAyNDMsIDg4LCAyMjEsIDE5MiwgMjQxLCAKLSAgICA2MywgNTQsIDIxMiwgMjgsIDk3LCAyMjEsIDE5MiwgMjEyLCAyOCwgOTcsIDIxNywgMTYwLCAyMjcsIDg3LCAyMzEsIDUwLCAKLSAgICAyMzAsIDE5OCwgMjE4LCA5NywgOTcsIDI0MywgMTE0LCAyMjEsIDE2NiwgMjI3LCA4NywgOTcsIDIxOCwgMjQsIDIwNCwgODEsIAotICAgIDk3LCAyMjEsIDE4MiwgMjA0LCA4MSwgOTcsIDI0OCwgODIsIDIyMSwgMTkyLCAyNDgsIDgxLCAyNDgsIDgwLCAyMjQsIDEzLCAKLSAgICAyNDgsIDgwLCAyMTksIDI1LCAyMjEsIDE5MiwgMjE5LCAyNCwgMjQ2LCAxMzIsIDI0NSwgMTIzLCAyMjQsIDIzNiwgOTcsIAotICAgIDIwMywgMjQ3LCA5NywgMjE2LCA4MywgMjQ5LCAyOCwgOTcsIDIwOCwgMTY4LCAyMDQsIDgxLCAyNDYsIDEzLCAyMTIsIDIwOSwgCi0gICAgMjQ4LCAyMDYsIDI0OCwgMjA0LCAyMTksIDU3LCAyNDUsIDE4MywgMjQ1LCA3OSwgMjQ5LCA3LCAyNDYsIDQxLCA0OSwgMjI2LCAKLSAgICAyMjksIDIwOCwgODYsIDMsIDIxNSwgMTg5LCAyNDUsIDE2NCwgMjE3LCAyMjAsIDU0LCA0MywgMjMxLCAyNSwgMjExLCAyMzksIAotICAgIDI0NywgMjMxLCA5NywgMjM4LCA1OSwgOTcsIDI0NSwgMTU3LCAyNSwgMjI4LCAxOCwgMjEyLCA1NCwgMjUxLCAxMzUsIDIxMiwgCi0gICAgMjMxLCAyNDksIDYsIDI0OCwgMTI3LCAyNDgsIDEyOCwgMjQ4LCAxNTEsIDIxOCwgOTcsIDc2LCAyMDMsIDIzMSwgMjM3LCAKLSAgICAxMzEsIDI1LCAyMDMsIDIyNSwgMjEzLCA4LCAyMjAsIDU2LCAyNDIsIDQ2LCAyMjQsIDE3LCAyMTYsIDE5MywgMjA4LCAxMTgsIAotICAgIDIyNCwgMTksIDI0OCwgMTksIDIwNiwgMjIzLCAyMjQsIDExOSwgMjUxLCA1MiwgMjA2LCAyMjMsIDI1MSwgNTIsIDIwNiwgCi0gICAgMjIzLCA1LCAyNTEsIDUyLCA1LCAyNTEsIDUyLCAyMjEsIDE3MSwgMjUxLCA1MiwgMjUxLCA1MywgMjQ0LCAyNSwgMjUxLCAKLSAgICA1MywgMjUwLCA5NywgMjE0LCAyMjEsIDIyMCwgMjksIDIzOSwgMjUwLCAyNDEsIDc3LCAyNDMsIDIxMSwgMjI3LCA0MCwgCi0gICAgMjE5LCA2MCwgMjEyLCAyNTEsIDEzNiwgMTYsIDM1LCAyMTcsIDM2LCAxMzYsIDE2LCAzNSwgMjUxLCA1NCwgMTM2LCAxNiwgCi0gICAgMzUsIDIzOSwgMjQ5LCAxMzYsIDE2LCAzNSwgMjQxLCAxNzksIDEzNiwgMTYsIDM1LCAyMDQsIDgwLCAxMzYsIDE2LCAzNSwgCi0gICAgMjUwLCAxNDYsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjE2LCAxMzIsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjE2LCAKLSAgICAxMzEsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjA1LCAxOTUsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjA1LCAxOTQsIAotICAgIDEzNiwgMTYsIDM1LCAyMDUsIDIwOSwgMTM2LCAxNiwgMzUsIDIwNSwgMjA4LCAxMzYsIDE2LCAzNSwgMjA1LCAyMDcsIDEzNiwgCi0gICAgMTYsIDM1LCAyMTAsIDIyMSwgMTM2LCAxNiwgMzUsIDIxOCwgMTg0LCAyMTAsIDIyMSwgMTM2LCAxNiwgMzUsIDYyLCAyMTAsIAotICAgIDIyMSwgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MiwgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MSwgCi0gICAgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MCwgMTM2LCAxNiwgMzUsIDI0NiwgNjQsIDEzNiwgMTYsIDM1LCAyMTUsIAotICAgIDEsIDEzNiwgMTYsIDM1LCAyMjIsIDUxLCAxMzYsIDE2LCAzNSwgMjA1LCAxOTMsIDEzNiwgMTYsIDM1LCAyMDUsIDE5MiwgCi0gICAgMTM2LCAxNiwgMzUsIDIxNSwgMjE5LCAyMTUsIDEsIDEzNiwgMTYsIDM1LCAyMTUsIDIxOSwgMjE1LCAwLCAxMzYsIDE2LCAKLSAgICAzNSwgMjM4LCAzMSwgMTM2LCAxNiwgMzUsIDIxMiwgMTMzLCAxMzYsIDE2LCAzNSwgMjMwLCAyMjEsIDIxOSwgMjM5LCAxMzYsIAotICAgIDE2LCAzNSwgMjMwLCAyMjEsIDIxOSwgMjM4LCAxMzYsIDE2LCAzNSwgMjQ1LCAxMzQsIDc2LCAyMzAsIDIyMCwgMTM2LCAxNiwgCi0gICAgMzUsIDIxNiwgMTI4LCA3NiwgMjMwLCAyMjAsIDEzNiwgMTYsIDM1LCAyNDUsIDE3NCwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAKLSAgICAyMzAsIDIxOSwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ1LCAxMzQsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIDI0NSwgMTM0LCA3NiwgMjQ1LCAxNzIsIDEzNiwgMTYsIDM1LCAKLSAgICAyNDUsIDE3NCwgMjUwLCAxODgsIDEzNiwgMTYsIDM1LCAyMTUsIDIsIDc2LCAyNDUsIDE3NCwgMjUwLCAxODgsIDEzNiwgMTYsIAotICAgIDM1LCAyMTAsIDI1MywgNzYsIDIxNSwgMiwgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgMjA2LCA0MiwgMTM2LCAxNiwgCi0gICAgMzUsIDIwOCwgMjE4LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIyNywgMjMzLCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIAotICAgIDI1MCwgMTg3LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAKLSAgICAyMTUsIDIsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjE1LCAyLCA3NiwgMjUwLCAxODYsIAotICAgIDEzNiwgMTYsIDM1LCAyMDUsIDIxMCwgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjgsIDc2LCAyNTAsIDE4NiwgCi0gICAgMTM2LCAxNiwgMzUsIDIxNiwgMTI4LCA3NiwgMjUwLCAxODUsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNywgMTM2LCAxNiwgMzUsIAotICAgIDIxNiwgMTI2LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjUsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNCwgMTM2LCAxNiwgMzUsIDI1MSwgCi0gICAgMTcsIDEzNiwgMTYsIDM1LCAyNTEsIDE2LCAxMzYsIDE2LCAzNSwgMjI1LCA5NywgMTM2LCAxNiwgMzUsIDIxNSwgNywgMTM2LCAKLSAgICAxNiwgMzUsIDI1MCwgOTAsIDEzNiwgMTYsIDM1LCAyMTYsIDE1NSwgMTM2LCAxNiwgMzUsIDIxNiwgMTU0LCAxMzYsIDE2LCAKLSAgICAzNSwgMjUwLCAyNSwgMTM2LCAxNiwgMzUsIDI0OCwgNTIsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjA5LCAyMTYsIDEzNiwgCi0gICAgMTYsIDM1LCAyMDksIDIxNSwgMTM2LCAxNiwgMzUsIDIxNywgNDIsIDIyNywgMTIzLCAxMzYsIDE2LCAzNSwgMjQ4LCAwLCAKLSAgICAxMzYsIDE2LCAzNSwgMjQ3LCAyNTUsIDEzNiwgMTYsIDM1LCAyNDcsIDI1NCwgMTM2LCAxNiwgMzUsIDI1MCwgMjQ5LCAxMzYsIAotICAgIDE2LCAzNSwgMjIwLCA1NSwgMTM2LCAxNiwgMzUsIDIxMSwgMTk4LCAxMzYsIDE2LCAzNSwgMjA4LCAyMTYsIDEzNiwgMTYsIAotICAgIDM1LCAyMzcsIDIxMCwgMTM2LCAxNiwgMzUsIDIwNCwgNjgsIDEzNiwgMTYsIDM1LCAyMTgsIDE4LCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ3LCA3MCwgMTM2LCAxNiwgMzUsIDIwNywgMTY2LCAxMzYsIDE2LCAzNSwgMjQ3LCA0MSwgMjI0LCAyMywgMTM2LCAxNiwgCi0gICAgMzUsIDIxNCwgMTk5LCA3NiwgMjMwLCA4NywgMTM2LCAxNiwgMzUsIDI0NywgODMsIDEzNiwgMTYsIDM1LCAyMDgsIDc5LCAKLSAgICAxMzYsIDE2LCAzNSwgMjExLCA5MiwgMjA4LCA3OSwgMTM2LCAxNiwgMzUsIDIyNywgMzksIDEzNiwgMTYsIDM1LCAyMTIsIAotICAgIDExLCAxMzYsIDE2LCAzNSwgMjA2LCAyMDIsIDEzNiwgMTYsIDM1LCAyMzYsIDUwLCAyNDIsIDI3LCAxMzYsIDE2LCAzNSwgCi0gICAgMjUwLCA3MCwgMTM2LCAxNiwgMzUsIDIxOCwgMjYsIDI1MCwgNzAsIDEzNiwgMTYsIDM1LCAyNDcsIDIxMCwgMTM2LCAxNiwgCi0gICAgMzUsIDIxOCwgMTcsIDI0NywgMjEwLCAxMzYsIDE2LCAzNSwgMjUwLCAyNDYsIDEzNiwgMTYsIDM1LCAyMTEsIDQ4LCAyMTAsIAotICAgIDIwMiwgMjExLCA0NywgMTM2LCAxNiwgMzUsIDIxMSwgNDgsIDIxMCwgMjAyLCAyMTEsIDQ2LCAxMzYsIDE2LCAzNSwgMjEwLCAKLSAgICAyNDksIDEzNiwgMTYsIDM1LCAyMTcsIDI0NywgMTM2LCAxNiwgMzUsIDI0MywgMTUwLCAxMzYsIDE2LCAzNSwgMjQzLCAxNTIsIAotICAgIDEzNiwgMTYsIDM1LCAyNDMsIDE1MSwgMTM2LCAxNiwgMzUsIDIxNywgMTY5LCAxMzYsIDE2LCAzNSwgMjE3LCAxNTgsIDEzNiwgCi0gICAgMTYsIDM1LCAyNDUsIDEyMSwgMTM2LCAxNiwgMzUsIDI0NSwgMTIwLCAxMzYsIDE2LCAzNSwgMjQ1LCAxMTksIDEzNiwgMTYsIAotICAgIDM1LCAyNDUsIDExOCwgMTM2LCAxNiwgMzUsIDI0NSwgMTE3LCAxMzYsIDE2LCAzNSwgMjUxLCAyOSwgMTM2LCAxNiwgMzUsIAotICAgIDI0OCwgMjA3LCA3NiwgMjI1LCA4MSwgMTM2LCAxNiwgMzUsIDI0OCwgMjA3LCA3NiwgMjA2LCA3NCwgMTM2LCAxNiwgMzUsIAotICAgIDIxNiwgODEsIDEzNiwgMTYsIDM1LCAyMzYsIDQyLCAxMzYsIDE2LCAzNSwgMjIyLCA3OSwgMTM2LCAxNiwgMzUsIDI0NCwgCi0gICAgMTMyLCAxMzYsIDE2LCAzNSwgMjI0LCAzNywgMTM2LCAxNiwgMzUsIDE2MiwgMjQyLCA1OSwgMTM2LCAxNiwgMzUsIDE2MiwgCi0gICAgMjE5LCAyMTQsIDYyLCAyMjcsIDIxNywgMjMwLCAyMDQsIDUwLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDIzMCwgMjA0LCAKLSAgICA1MCwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIzMCwgMjA0LCA1MCwgMjA4LCA4NSwgNjIsIDI0MiwgNjksIDIzMCwgMjA0LCAKLSAgICA1MCwgMjA4LCA4NSwgNjIsIDIxMiwgNDcsIDUsIDI0NiwgNjEsIDIyNSwgMTAsIDI2LCA2MSwgMjQ2LCA2MSwgMjYsIDYxLCAKLSAgICAyNDYsIDYxLCA3OSwgNjEsIDI0NiwgNjEsIDIwNSwgMjQyLCA3OSwgNjEsIDI0NiwgNjEsIDI0MCwgMTk1LCA3OSwgNjEsIAotICAgIDI0NiwgNjEsIDYxLCAyNDYsIDYyLCAyNDUsIDE5NSwgNjIsIDUsIDI0NiwgNjEsIDIxNSwgMTkxLCAyMDksIDIxNywgNjIsIAotICAgIDIwOCwgMjEzLCAyMTEsIDE3NywgNjIsIDIxMiwgNDcsIDUsIDIxMSwgMTc3LCAxNTcsIDYxLCAyMTEsIDE3NywgMjI1LCAxMCwgCi0gICAgNjEsIDIxMSwgMTc3LCAyNiwgNjEsIDIxMSwgMTc3LCA3OSwgNjEsIDIxMSwgMTc3LCAyMDUsIDI0MiwgNzksIDYxLCAyMTEsIAotICAgIDE3NywgMjQwLCAxOTUsIDc5LCA2MSwgMjExLCAxNzcsIDYxLCA1MSwgMjQ1LCAxOTUsIDYyLCAyMDUsIDI0MiwgNSwgMjExLCAKLSAgICAxNzcsIDYxLCA1MSwgMjQ1LCAxOTUsIDYyLCAyMjUsIDEwLCAyMTEsIDE3NywgNTEsIDIwOSwgMjE3LCA2MiwgMjA4LCAyMTMsIAotICAgIDI0MywgMjIxLCA2MiwgMjA1LCAyNDIsIDUsIDI0MywgMjIxLCA2MiwgMjI1LCAxMCwgNSwgMjQzLCAyMjEsIDYxLCAyNDMsIAotICAgIDIyMiwgMjQ1LCAxOTUsIDYyLCAyMDUsIDI0MiwgNSwgMjQzLCAyMjEsIDYxLCAyNDMsIDIyMiwgMjQ1LCAxOTUsIDYyLCAKLSAgICAyMjUsIDEwLCAyNDMsIDIyMSwgMjQzLCAyMjIsIDIwOSwgMjE3LCA2MiwgMjA4LCAyMTMsIDIyNiwgMjQ2LCA2MiwgMjA1LCAKLSAgICAyNDIsIDUsIDIyNiwgMjQ2LCA2MiwgMjI1LCAxMCwgNSwgMjI2LCAyNDYsIDYxLCAyMjYsIDI0NywgMjQ1LCAxOTUsIDYyLCAKLSAgICA1LCAyMjYsIDI0NiwgMjA5LCA2MywgMzAsIDI0NSwgMTMwLCAxNTcsIDMwLCAyNDUsIDEzMCwgMjI1LCAxMCwgMzAsIDI0NSwgCi0gICAgMTMwLCAyNiwgMzAsIDI0NSwgMTMwLCAyMDUsIDI0MiwgMjYsIDMwLCAyNDUsIDEzMCwgMjA1LCAyNDIsIDc5LCAzMCwgMjQ1LCAKLSAgICAxMzAsIDI0MCwgMTk1LCA3OSwgMzAsIDI0NSwgMTMwLCAyMDksIDYzLCAyMTQsIDI1NCwgMTU3LCAyMTQsIDI1NCwgMjI1LCAKLSAgICAxMCwgMjE0LCAyNTQsIDI2LCAyMTQsIDI1NCwgNzksIDIxNCwgMjU0LCAyMDUsIDI0MiwgNzksIDIxNCwgMjU0LCAyNDAsIAotICAgIDE5NSwgNzksIDIxNCwgMjU0LCAxNTcsIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjI1LCAxMCwgMjM5LCAyMzMsIAotICAgIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgMjM5LCAyMzMsIDIxMSwgCi0gICAgMTkxLCAyNTAsIDU5LCAyMDUsIDI0MiwgNzksIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQwLCAxOTUsIDc5LCAKLSAgICAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDE1NywgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgMTAsIAotICAgIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAyMTIsIDg4LCAKLSAgICAyMTEsIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQwLCAxOTUsIAotICAgIDc5LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMTU3LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgCi0gICAgMTAsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIAotICAgIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIAotICAgIDE1NywgMTI2LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMTI2LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMTI2LCAKLSAgICAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMTI2LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMzksIAotICAgIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjM5LCAKLSAgICAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMzksIDE0NywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIAotICAgIDIxNiwgNzQsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIzOSwgMjMzLCAyMTgsIAotICAgIDYxLCA2MiwgMjExLCA5NCwgNzksIDIzOSwgMjMzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjEyLCA4OCwgCi0gICAgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMTIsIDg4LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjEyLCA4OCwgMjE4LCAKLSAgICA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDIyNSwgMTAsIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDI0MSwgCi0gICAgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjA1LCAyNDIsIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIAotICAgIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAKLSAgICAyMTEsIDk0LCA3OSwgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjA3LCAxNTUsIDIxOCwgNjEsIDIxOCwgCi0gICAgMTE4LCAyMTEsIDk0LCA5NiwgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDUsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDg2LCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgCi0gICAgOTYsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIAotICAgIDk0LCA4NiwgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDk2LCA1MywgMywgMjI4LCA4LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyMjgsIDgsIDIwOCwgCi0gICAgODYsIDI1MCwgOTQsIDg2LCA1MywgMywgMjI4LCA4LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyMjgsIDgsIAotICAgIDIwOCwgODYsIDI1MCwgOTQsIDk2LCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgMTc3LCA1MywgMywgNSwgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgODYsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAKLSAgICA5NiwgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDg2LCA1MywgMywgCi0gICAgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDk2LCA1MywgMywgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgNzksIDE3NywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA4NiwgNTMsIDMsIDI0MSwgMzEsIDI1MCwgCi0gICAgOTQsIDc5LCAxODMsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgOTYsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDc5LCAxNzcsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA4NiwgNTMsIDMsIDIyOCwgOCwgCi0gICAgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDE4MywgNTMsIDMsIDIyOCwgOCwgMjQxLCAzMSwgMjUwLCA5NCwgOTYsIDIwOCwgODQsIAotICAgIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCA4NiwgMjA4LCAKLSAgICA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDk2LCAKLSAgICAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgCi0gICAgODYsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIAotICAgIDc1LCA5NiwgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgCi0gICAgODYsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDk2LCAKLSAgICAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCA4NiwgMjA4LCAKLSAgICA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgOTYsIDIwOCwgODQsIAotICAgIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCA3OSwgMjEzLCA3NSwgCi0gICAgODYsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCAKLSAgICA3OSwgMjEzLCA3NSwgOTYsIDI0MCwgMSwgNDcsIDE3NywgMjQwLCAxLCA0NywgODYsIDI0MCwgMSwgNDcsIDE4MywgMjQwLCAKLSAgICAxLCA0NywgOTYsIDEwMywgNDcsIDE3NywgMTAzLCA0NywgODYsIDEwMywgNDcsIDE4MywgMTAzLCA0NywgOTYsIDI0NSwgCi0gICAgMjIyLCA0NywgMTc3LCAyNDUsIDIyMiwgNDcsIDg2LCAyNDUsIDIyMiwgNDcsIDE4MywgMjQ1LCAyMjIsIDQ3LCA5NiwgNzksIAotICAgIDI0NSwgMjIyLCA0NywgMTc3LCA3OSwgMjQ1LCAyMjIsIDQ3LCA4NiwgNzksIDI0NSwgMjIyLCA0NywgMTgzLCA3OSwgMjQ1LCAKLSAgICAyMjIsIDQ3LCA5NiwgNzksIDQ3LCAxNzcsIDc5LCA0NywgODYsIDc5LCA0NywgMTgzLCA3OSwgNDcsIDk2LCA0MSwgNDcsIAotICAgIDE3NywgNDEsIDQ3LCA4NiwgNDEsIDQ3LCAxODMsIDQxLCA0NywgMTUzLCAyMDQsIDQ2LCA0MSwgNDcsIDE1MywgMjQxLCAKLSAgICAxNzYsIDQxLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA0MSwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0MSwgNDcsIDQ5LCAKLSAgICA1MCwgNDEsIDQ3LCAxMTIsIDEyMSwgNDEsIDQ3LCAyMDQsIDI2LCA5NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIAotICAgIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgODYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAxNTcsIDE1MCwgNDcsIDIwNCwgCi0gICAgMjYsIDE1MywgMjA0LCA0NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCAxNTcsIDE1MCwgNDcsIAotICAgIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgCi0gICAgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDE1MywgMjQxLCAxNzYsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMjExLCAyMzgsIDIwNCwgNDYsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIAotICAgIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDIyNSwgMTAsIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgCi0gICAgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAyMTEsIDIzOCwgMjA0LCA0NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAxNzcsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgNzksIDE1MCwgNDcsIAotICAgIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIDc5LCAxNTAsIDQ3LCAKLSAgICAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgMjA1LCAyNDIsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDIwNSwgMjQyLCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAKLSAgICAxNzYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDUsIDI0MiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDk2LCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCAxNzcsIDIwOCwgODYsIDI1MCwgOTQsIDg2LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDIwOCwgODYsIDI1MCwgCi0gICAgOTQsIDk2LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgODYsIDYxLCA1MywgMjA0LCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDYxLCA1MywgMjA0LCA1LCAyMDgsIAotICAgIDg2LCAyNTAsIDk0LCA5NiwgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgMTc3LCA1MywgMywgMjIxLCAxNjIsIDIwOSwgCi0gICAgMjQ4LCA4NiwgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgMTgzLCA1MywgMywgMjIxLCAxNjIsIDIwOSwgMjQ4LCA3OSwgCi0gICAgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDEwNSwgNzksIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMjAsIDIwOSwgNTcsIDc5LCAKLSAgICA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTE4LCAyMzcsIDEzNywgNzksIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMTgsIDIwOSwgCi0gICAgNjAsIDk2LCAyNDcsIDI0NSwgNjEsIDQ3LCA4NiwgMjQ3LCAyNDgsIDIxMywgNzgsIDYxLCA0NywgOTYsIDIwOCwgMTQ1LCAKLSAgICAyMTMsIDc4LCA2MSwgNDcsIDg2LCAyMDgsIDE0NSwgMjEzLCA3OCwgNjEsIDQ3LCA5NiwgMjI3LCAyMTYsIDYxLCA0NywgODYsIAotICAgIDIxNiwgMTAsIDYxLCA0NywgOTYsIDIxNiwgMTAsIDYxLCA0NywgODYsIDIyNywgMjE2LCA2MSwgNDcsIDk2LCAyNDksIDI0LCAKLSAgICAyMTMsIDc3LCA2MSwgNDcsIDg2LCAyNDksIDI0LCAyMTMsIDc3LCA2MSwgNDcsIDk2LCAyMzksIDExNywgMjEzLCA3NywgNjEsIAotICAgIDQ3LCA4NiwgMjM5LCAxMTcsIDIxMywgNzcsIDYxLCA0NywgNjEsIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMDUsIDYxLCA1MywgCi0gICAgMjEzLCA3NiwgMjA0LCAyNCwgMTIwLCAyMDksIDU3LCAyMDIsIDI2LCAyNDAsIDEwMiwgMjI0LCA1MiwgMjQwLCAxMDIsIAotICAgIDI0MCwgMTAzLCAzLCAyMDksIDgwLCAyMjIsIDIyMiwgMjQwLCAxMDIsIDIwOSwgNjIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgCi0gICAgMjM3LCA2MywgMjE1LCAyMjEsIDI0MCwgMTAyLCAyMzYsIDIwLCAyNDAsIDEwMiwgMiwgNzYsIDIwOSwgOTMsIDIzNiwgNTIsIAotICAgIDI0NSwgMTQ2LCAyMjcsIDEwMiwgMjQwLCAxMDIsIDIxNCwgMTg4LCAyMDcsIDE3OSwgMjA2LCAyNDAsIDI0MCwgMTAyLCAKLSAgICAyNDYsIDE2MSwgMjA0LCA1NywgMTIsIDE1LCAyMzUsIDE1MiwgMTIsIDE1LCAyMzUsIDE1MSwgMTIsIDE1LCAyMzUsIDE1MCwgCi0gICAgMTIsIDE1LCAyMzUsIDE0OSwgMTIsIDE1LCAyMzUsIDE0OCwgMTIsIDE1LCAyMzUsIDE0NywgMTIsIDE1LCAyMzUsIDE0NiwgCi0gICAgMTIsIDE1LCAyMzUsIDE0NSwgMTIsIDE1LCAyMzUsIDE0NCwgMTIsIDE1LCAyMzUsIDE0MywgMTIsIDE1LCAyMzUsIDE0MiwgCi0gICAgMTIsIDE1LCAyMzUsIDE0MSwgMTIsIDE1LCAyMzUsIDE0MCwgMTIsIDE1LCAyMzUsIDEzOSwgMTIsIDE1LCAyMzUsIDEzOCwgCi0gICAgMTIsIDE1LCAyMzUsIDEzNywgMTIsIDE1LCAyMzUsIDEzNiwgMTIsIDE1LCAyMzUsIDEzNSwgMTIsIDE1LCAyMzUsIDEzNCwgCi0gICAgMTIsIDE1LCAyMzUsIDEzMywgMTIsIDE1LCAyMzUsIDEzMiwgMTIsIDE1LCAyMzUsIDEzMSwgMTIsIDE1LCAyMzUsIDEzMCwgCi0gICAgMTIsIDE1LCAyMzUsIDEyOSwgMTIsIDE1LCAyMzUsIDEyOCwgMTIsIDE1LCAyMzUsIDEyNywgMTIsIDE1LCAyMzUsIDEyNiwgCi0gICAgMTIsIDE1LCAyMzUsIDEyNSwgMTIsIDE1LCAyMzUsIDEyNCwgMTIsIDE1LCAyMzUsIDEyMywgMTIsIDE1LCAyMzUsIDEyMiwgCi0gICAgMTIsIDE1LCAyMzUsIDEyMSwgMTIsIDE1LCAyMzUsIDEyMCwgMTIsIDE1LCAyMzUsIDExOSwgMTIsIDE1LCAyMzUsIDExOCwgCi0gICAgMTIsIDE1LCAyMzUsIDExNywgMTIsIDE1LCAyMzUsIDExNiwgMTIsIDE1LCAyMzUsIDExNSwgMTIsIDE1LCAyMzUsIDExNCwgCi0gICAgMTIsIDE1LCAyMzUsIDExMywgMTIsIDE1LCAyMzUsIDExMiwgMTIsIDE1LCAyMzUsIDExMSwgMTIsIDE1LCAyMzUsIDExMCwgCi0gICAgMTIsIDE1LCAyMzUsIDEwOSwgMTIsIDE1LCAyMzUsIDEwOCwgMTIsIDE1LCAyMzUsIDEwNywgMTIsIDE1LCAyMzUsIDEwNiwgCi0gICAgMTIsIDE1LCAyMzUsIDEwNSwgMTIsIDE1LCAyMzUsIDEwNCwgMTIsIDE1LCAyMzUsIDEwMywgMTIsIDE1LCAyMzUsIDEwMiwgCi0gICAgMTIsIDE1LCAyMzUsIDEwMSwgMTIsIDE1LCAyMzUsIDEwMCwgMTIsIDE1LCAyMzUsIDk5LCAxMiwgMTUsIDIzNSwgOTgsIDEyLCAKLSAgICAxNSwgMjM1LCA5NywgMTIsIDE1LCAyMzUsIDk2LCAxMiwgMTUsIDIzNSwgOTUsIDEyLCAxNSwgMjM1LCA5NCwgMTIsIDE1LCAKLSAgICAyMzUsIDkzLCAxMiwgMTUsIDIzNSwgOTIsIDEyLCAxNSwgMjM1LCA5MSwgMTIsIDE1LCAyMzUsIDkwLCAxMiwgMTUsIDIzNSwgCi0gICAgODksIDEyLCAxNSwgMjM1LCA4OCwgMTIsIDE1LCAyMzUsIDg3LCAxMiwgMTUsIDIzNSwgODYsIDEyLCAxNSwgMjM1LCA4NSwgCi0gICAgMTIsIDE1LCAyMzUsIDg0LCAxMiwgMTUsIDIzNSwgODMsIDEyLCAxNSwgMjM1LCA4MiwgMTIsIDE1LCAyMzUsIDgxLCAxMiwgCi0gICAgMTUsIDIzNSwgODAsIDEyLCAxNSwgMjM1LCA3OSwgMTIsIDE1LCAyMzUsIDc4LCAxMiwgMTUsIDIzNSwgNzcsIDEyLCAxNSwgCi0gICAgMjM1LCA3NiwgMTIsIDE1LCAyMzUsIDc1LCAxMiwgMTUsIDIzNSwgNzQsIDEyLCAxNSwgMjM1LCA3MywgMTIsIDE1LCAyMzUsIAotICAgIDcyLCAxMiwgMTUsIDIzNSwgNzEsIDEyLCAxNSwgMjM1LCA3MCwgMTIsIDE1LCAyMzUsIDY5LCAxMiwgMTUsIDIzNSwgNjgsIAotICAgIDEyLCAxNSwgMjM1LCA2NywgMTIsIDE1LCAyMzUsIDY2LCAxMiwgMTUsIDIzNSwgNjUsIDEyLCAxNSwgMjM1LCA2NCwgMTIsIAotICAgIDE1LCAyMzUsIDYzLCAxMiwgMTUsIDIzNSwgNjIsIDEyLCAxNSwgMjM1LCA2MSwgMTIsIDE1LCAyMzUsIDYwLCAxMiwgMTUsIAotICAgIDIzNSwgNTksIDEyLCAxNSwgMjM1LCA1OCwgMTIsIDE1LCAyMzUsIDU3LCAxMiwgMTUsIDIzNSwgNTYsIDEyLCAxNSwgMjM1LCAKLSAgICA1NSwgMTIsIDE1LCAyMzUsIDU0LCAxMiwgMTUsIDIzNSwgNTMsIDEyLCAxNSwgMjM1LCA1MiwgMTIsIDE1LCAyMzUsIDUxLCAKLSAgICAxMiwgMTUsIDIzNSwgNTAsIDEyLCAxNSwgMjM1LCA0OSwgMTIsIDE1LCAyMzUsIDQ4LCAxMiwgMTUsIDIzNSwgNDcsIDEyLCAKLSAgICAxNSwgMjM1LCA0NiwgMTIsIDE1LCAyMzUsIDQ1LCAxMiwgMTUsIDIzNSwgNDQsIDEyLCAxNSwgMjM1LCA0MywgMTIsIDE1LCAKLSAgICAyMzUsIDQyLCAxMiwgMTUsIDIzNSwgNDEsIDEyLCAxNSwgMjM1LCA0MCwgMTIsIDE1LCAyMzUsIDM5LCAxMiwgMTUsIDIzNSwgCi0gICAgMzgsIDEyLCAxNSwgMjM1LCAzNywgMTIsIDE1LCAyMzUsIDM2LCAxMiwgMTUsIDIzNSwgMzUsIDEyLCAxNSwgMjM1LCAzNCwgCi0gICAgMTIsIDE1LCAyMzUsIDMzLCAxMiwgMTUsIDIzNSwgMzIsIDEyLCAxNSwgMjM1LCAzMSwgMTIsIDE1LCAyMzUsIDMwLCAxMiwgCi0gICAgMTUsIDIzNSwgMjksIDEyLCAxNSwgMjM1LCAyOCwgMTIsIDE1LCAyMzUsIDI3LCAxMiwgMTUsIDIzNSwgMjYsIDEyLCAxNSwgCi0gICAgMjM1LCAyNSwgMTIsIDE1LCAyMzUsIDI0LCAxMiwgMTUsIDIzNSwgMjMsIDEyLCAxNSwgMjM1LCAyMiwgMTIsIDE1LCAyMzUsIAotICAgIDIxLCAxMiwgMTUsIDIzNSwgMjAsIDEyLCAxNSwgMjM1LCAxOSwgMTIsIDE1LCAyMzUsIDE4LCAxMiwgMTUsIDIzNSwgMTcsIAotICAgIDEyLCAxNSwgMjM1LCAxNiwgMTIsIDE1LCAyMzUsIDE1LCAxMiwgMTUsIDIzNSwgMTQsIDEyLCAxNSwgMjM1LCAxMywgMTIsIAotICAgIDE1LCAyMzUsIDEyLCAxMiwgMTUsIDIzNSwgMTEsIDEyLCAxNSwgMjM1LCAxMCwgMTIsIDE1LCAyMzUsIDksIDEyLCAxNSwgCi0gICAgMjM1LCA4LCAxMiwgMTUsIDIzNSwgNywgMTIsIDE1LCAyMzUsIDYsIDEyLCAxNSwgMjM1LCA1LCAxMiwgMTUsIDIzNSwgNCwgCi0gICAgMTIsIDE1LCAyMzUsIDMsIDEyLCAxNSwgMjM1LCAyLCAxMiwgMTUsIDIzNSwgMSwgMTIsIDE1LCAyMzUsIDAsIDEyLCAxNSwgCi0gICAgMjM0LCAyNTUsIDEyLCAxNSwgMjM0LCAyNTQsIDEyLCAxNSwgMjM0LCAyNTMsIDEyLCAxNSwgMjM0LCAyNTIsIDEyLCAxNSwgCi0gICAgMjM0LCAyNTEsIDEyLCAxNSwgMjM0LCAyNTAsIDEyLCAxNSwgMjM0LCAyNDksIDEyLCAxNSwgMjM0LCAyNDgsIDEyLCAxNSwgCi0gICAgMjM0LCAyNDcsIDEyLCAxNSwgMjM0LCAyNDYsIDEyLCAxNSwgMjM0LCAyNDUsIDEyLCAxNSwgMjM0LCAyNDQsIDEyLCAxNSwgCi0gICAgMjM0LCAyNDMsIDEyLCAxNSwgMjM0LCAyNDIsIDEyLCAxNSwgMjM0LCAyNDEsIDEyLCAxNSwgMjM0LCAyNDAsIDEyLCAxNSwgCi0gICAgMjM0LCAyMzksIDEyLCAxNSwgMjM0LCAyMzgsIDEyLCAxNSwgMjM0LCAyMzcsIDEyLCAxNSwgMjM0LCAyMzYsIDEyLCAxNSwgCi0gICAgMjM0LCAyMzUsIDEyLCAxNSwgMjM0LCAyMzQsIDEyLCAxNSwgMjM0LCAyMzMsIDEyLCAxNSwgMjM0LCAyMzIsIDEyLCAxNSwgCi0gICAgMjM0LCAyMzEsIDEyLCAxNSwgMjM0LCAyMzAsIDEyLCAxNSwgMjM0LCAyMjksIDEyLCAxNSwgMjM0LCAyMjgsIDEyLCAxNSwgCi0gICAgMjM0LCAyMjcsIDEyLCAxNSwgMjM0LCAyMjYsIDEyLCAxNSwgMjM0LCAyMjUsIDEyLCAxNSwgMjM0LCAyMjQsIDEyLCAxNSwgCi0gICAgMjM0LCAyMjMsIDEyLCAxNSwgMjM0LCAyMjIsIDEyLCAxNSwgMjM0LCAyMjEsIDEyLCAxNSwgMjM0LCAyMjAsIDEyLCAxNSwgCi0gICAgMjM0LCAyMTksIDEyLCAxNSwgMjM0LCAyMTgsIDEyLCAxNSwgMjM0LCAyMTcsIDEyLCAxNSwgMjM0LCAyMTYsIDEyLCAxNSwgCi0gICAgMjM0LCAyMTUsIDEyLCAxNSwgMjM0LCAyMTQsIDEyLCAxNSwgMjM0LCAyMTMsIDEyLCAxNSwgMjM0LCAyMTIsIDEyLCAxNSwgCi0gICAgMjM0LCAyMTEsIDEyLCAxNSwgMjM0LCAyMTAsIDEyLCAxNSwgMjM0LCAyMDksIDEyLCAxNSwgMjM0LCAyMDgsIDEyLCAxNSwgCi0gICAgMjM0LCAyMDcsIDEyLCAxNSwgMjM0LCAyMDYsIDEyLCAxNSwgMjM0LCAyMDUsIDEyLCAxNSwgMjM0LCAyMDQsIDEyLCAxNSwgCi0gICAgMjM0LCAyMDMsIDEyLCAxNSwgMjM0LCAyMDIsIDEyLCAxNSwgMjM0LCAyMDEsIDEyLCAxNSwgMjM0LCAyMDAsIDEyLCAxNSwgCi0gICAgMjM0LCAxOTksIDEyLCAxNSwgMjM0LCAxOTgsIDEyLCAxNSwgMjM0LCAxOTcsIDEyLCAxNSwgMjM0LCAxOTYsIDEyLCAxNSwgCi0gICAgMjM0LCAxOTUsIDEyLCAxNSwgMjM0LCAxOTQsIDEyLCAxNSwgMjM0LCAxOTMsIDEyLCAxNSwgMjM0LCAxOTIsIDEyLCAxNSwgCi0gICAgMjM0LCAxOTEsIDEyLCAxNSwgMjM0LCAxOTAsIDEyLCAxNSwgMjM0LCAxODksIDEyLCAxNSwgMjM0LCAxODgsIDEyLCAxNSwgCi0gICAgMjM0LCAxODcsIDEyLCAxNSwgMjM0LCAxODYsIDEyLCAxNSwgMjM0LCAxODUsIDEyLCAxNSwgMjM0LCAxODQsIDEyLCAxNSwgCi0gICAgMjM0LCAxODMsIDEyLCAxNSwgMjM0LCAxODIsIDEyLCAxNSwgMjM0LCAxODEsIDEyLCAxNSwgMjM0LCAxODAsIDEyLCAxNSwgCi0gICAgMjM0LCAxNzksIDEyLCAxNSwgMjM0LCAxNzgsIDEyLCAxNSwgMjM0LCAxNzcsIDEyLCAxNSwgMjM0LCAxNzYsIDEyLCAxNSwgCi0gICAgMjM0LCAxNzUsIDEyLCAxNSwgMjM0LCAxNzQsIDEyLCAxNSwgMjM0LCAxNzMsIDEyLCAxNSwgMjM0LCAxNzIsIDEyLCAxNSwgCi0gICAgMjM0LCAxNzEsIDEyLCAxNSwgMjM0LCAxNzAsIDEyLCAxNSwgMjM0LCAxNjksIDEyLCAxNSwgMjM0LCAxNjgsIDEyLCAxNSwgCi0gICAgMjM0LCAxNjcsIDEyLCAxNSwgMjM0LCAxNjYsIDEyLCAxNSwgMjM0LCAxNjUsIDEyLCAxNSwgMjM0LCAxNjQsIDEyLCAxNSwgCi0gICAgMjM0LCAxNjMsIDEyLCAxNSwgMjM0LCAxNjIsIDEyLCAxNSwgMjM0LCAxNjEsIDEyLCAxNSwgMjM0LCAxNjAsIDEyLCAxNSwgCi0gICAgMjM0LCAxNTksIDEyLCAxNSwgMjM0LCAxNTgsIDEyLCAxNSwgMjM0LCAxNTcsIDEyLCAxNSwgMjM0LCAxNTYsIDEyLCAxNSwgCi0gICAgMjM0LCAxNTUsIDEyLCAxNSwgMjM0LCAxNTQsIDEyLCAxNSwgMjM0LCAxNTMsIDEyLCAxNSwgMjM0LCAxNTIsIDEyLCAxNSwgCi0gICAgMjM0LCAxNTEsIDEyLCAxNSwgMjM0LCAxNTAsIDEyLCAxNSwgMjM0LCAxNDksIDEyLCAxNSwgMjM0LCAxNDgsIDEyLCAxNSwgCi0gICAgMjM0LCAxNDcsIDEyLCAxNSwgMjM0LCAxNDYsIDEyLCAxNSwgMjM0LCAxNDUsIDEyLCAxNSwgMjM0LCAxNDQsIDEyLCAxNSwgCi0gICAgMjM0LCAxNDMsIDEyLCAxNSwgMjM0LCAxNDIsIDEyLCAxNSwgMjM0LCAxNDEsIDEyLCAxNSwgMjM0LCAxNDAsIDEyLCAxNSwgCi0gICAgMjM0LCAxMzksIDEyLCAxNSwgMjM0LCAxMzgsIDEyLCAxNSwgMjM0LCAxMzcsIDEyLCAxNSwgMjM0LCAxMzYsIDEyLCAxNSwgCi0gICAgMjM0LCAxMzUsIDEyLCAxNSwgMjM0LCAxMzQsIDEyLCAxNSwgMjM0LCAxMzMsIDEyLCAxNSwgMjM0LCAxMzIsIDEyLCAxNSwgCi0gICAgMjM0LCAxMzEsIDEyLCAxNSwgMjM0LCAxMzAsIDEyLCAxNSwgMjM0LCAxMjksIDEyLCAxNSwgMjM0LCAxMjgsIDEyLCAxNSwgCi0gICAgMjM0LCAxMjcsIDEyLCAxNSwgMjM0LCAxMjYsIDEyLCAxNSwgMjM0LCAxMjUsIDEyLCAxNSwgMjM0LCAxMjQsIDEyLCAxNSwgCi0gICAgMjM0LCAxMjMsIDEyLCAxNSwgMjM0LCAxMjIsIDEyLCAxNSwgMjM0LCAxMjEsIDEyLCAxNSwgMjM0LCAxMjAsIDEyLCAxNSwgCi0gICAgMjM0LCAxMTksIDEyLCAxNSwgMjM0LCAxMTgsIDEyLCAxNSwgMjM0LCAxMTcsIDEyLCAxNSwgMjM0LCAxMTYsIDEyLCAxNSwgCi0gICAgMjM0LCAxMTUsIDEyLCAxNSwgMjM0LCAxMTQsIDEyLCAxNSwgMjM0LCAxMTMsIDEyLCAxNSwgMjM0LCAxMTIsIDEyLCAxNSwgCi0gICAgMjM0LCAxMTEsIDEyLCAxNSwgMjM0LCAxMTAsIDEyLCAxNSwgMjM0LCAxMDksIDEyLCAxNSwgMjM0LCAxMDgsIDEyLCAxNSwgCi0gICAgMjM0LCAxMDcsIDEyLCAxNSwgMjM0LCAxMDYsIDEyLCAxNSwgMjM0LCAxMDUsIDEyLCAxNSwgMjM0LCAxMDQsIDEyLCAxNSwgCi0gICAgMjM0LCAxMDMsIDEyLCAxNSwgMjM0LCAxMDIsIDEyLCAxNSwgMjM0LCAxMDEsIDEyLCAxNSwgMjM0LCAxMDAsIDEyLCAxNSwgCi0gICAgMjM0LCA5OSwgMTIsIDE1LCAyMzQsIDk4LCAxMiwgMTUsIDIzNCwgOTcsIDEyLCAxNSwgMjM0LCA5NiwgMTIsIDE1LCAyMzQsIAotICAgIDk1LCAxMiwgMTUsIDIzNCwgOTQsIDEyLCAxNSwgMjM0LCA5MywgMTIsIDE1LCAyMzQsIDkyLCAxMiwgMTUsIDIzNCwgOTEsIAotICAgIDEyLCAxNSwgMjM0LCA5MCwgMTIsIDE1LCAyMzQsIDg5LCAxMiwgMTUsIDIzNCwgODgsIDEyLCAxNSwgMjM0LCA4NywgMTIsIAotICAgIDE1LCAyMzQsIDg2LCAxMiwgMTUsIDIzNCwgODUsIDEyLCAxNSwgMjM0LCA4NCwgMTIsIDE1LCAyMzQsIDgzLCAxMiwgMTUsIAotICAgIDIzNCwgODIsIDEyLCAxNSwgMjM0LCA4MSwgMTIsIDE1LCAyMzQsIDgwLCAxMiwgMTUsIDIzNCwgNzksIDEyLCAxNSwgMjM0LCAKLSAgICA3OCwgMTIsIDE1LCAyMzQsIDc3LCAxMiwgMTUsIDIzNCwgNzYsIDEyLCAxNSwgMjM0LCA3NSwgMTIsIDE1LCAyMzQsIDc0LCAKLSAgICAxMiwgMTUsIDIzNCwgNzMsIDEyLCAxNSwgMjM0LCA3MiwgMTIsIDE1LCAyMzQsIDcxLCAxMiwgMTUsIDIzNCwgNzAsIDEyLCAKLSAgICAxNSwgMjM0LCA2OSwgMTIsIDE1LCAyMzQsIDY4LCAxMiwgMTUsIDIzNCwgNjcsIDEyLCAxNSwgMjM0LCA2NiwgMTIsIDE1LCAKLSAgICAyMzQsIDY1LCAxMiwgMTUsIDIzNCwgNjQsIDEyLCAxNSwgMjM0LCA2MywgMTIsIDE1LCAyMzQsIDYyLCAxMiwgMTUsIDIzNCwgCi0gICAgNjEsIDEyLCAxNSwgMjM0LCA2MCwgMTIsIDE1LCAyMzQsIDU5LCAxMiwgMTUsIDIzNCwgNTgsIDEyLCAxNSwgMjM0LCA1NywgCi0gICAgMTIsIDE1LCAyMzQsIDU2LCAxMiwgMTUsIDIzNCwgNTUsIDEyLCAxNSwgMjM0LCA1NCwgMTIsIDE1LCAyMzQsIDUzLCAxMiwgCi0gICAgMTUsIDIzNCwgNTIsIDEyLCAxNSwgMjM0LCA1MSwgMTIsIDE1LCAyMzQsIDUwLCAxMiwgMTUsIDIzNCwgNDksIDEyLCAxNSwgCi0gICAgMjM0LCA0OCwgMTIsIDE1LCAyMzQsIDQ3LCAxMiwgMTUsIDIzNCwgNDYsIDEyLCAxNSwgMjM0LCA0NSwgMTIsIDE1LCAyMzQsIAotICAgIDQ0LCAxMiwgMTUsIDIzNCwgNDMsIDEyLCAxNSwgMjM0LCA0MiwgMTIsIDE1LCAyMzQsIDQxLCAxMiwgMTUsIDIzNCwgNDAsIAotICAgIDEyLCAxNSwgMjM0LCAzOSwgMTIsIDE1LCAyMzQsIDM4LCAxMiwgMTUsIDIzNCwgMzcsIDEyLCAxNSwgMjM0LCAzNiwgMTIsIAotICAgIDE1LCAyMzQsIDM1LCAxMiwgMTUsIDIzNCwgMzQsIDEyLCAxNSwgMjM0LCAzMywgMTIsIDE1LCAyMzQsIDMyLCAxMiwgMTUsIAotICAgIDIzNCwgMzEsIDEyLCAxNSwgMjM0LCAzMCwgMTIsIDE1LCAyMzQsIDI5LCAxMiwgMTUsIDIzNCwgMjgsIDEyLCAxNSwgMjM0LCAKLSAgICAyNywgMTIsIDE1LCAyMzQsIDI2LCAxMiwgMTUsIDIzNCwgMjUsIDEyLCAxNSwgMjM0LCAyNCwgMTIsIDE1LCAyMzQsIDIzLCAKLSAgICAxMiwgMTUsIDIzNCwgMjIsIDEyLCAxNSwgMjM0LCAyMSwgMTIsIDE1LCAyMzQsIDIwLCAxMiwgMTUsIDIzNCwgMTksIDEyLCAKLSAgICAxNSwgMjM0LCAxOCwgMTIsIDE1LCAyMzQsIDE3LCAxMiwgMTUsIDIzNCwgMTYsIDEyLCAxNSwgMjM0LCAxNSwgMTIsIDE1LCAKLSAgICAyMzQsIDE0LCAxMiwgMTUsIDIzNCwgMTMsIDEyLCAxNSwgMjM0LCAxMiwgMTIsIDE1LCAyMzQsIDExLCAxMiwgMTUsIDIzNCwgCi0gICAgMTAsIDEyLCAxNSwgMjM0LCA5LCAxMiwgMTUsIDIzNCwgOCwgMTIsIDE1LCAyMzQsIDcsIDEyLCAxNSwgMjM0LCA2LCAxMiwgCi0gICAgMTUsIDIzNCwgNSwgMTIsIDE1LCAyMzQsIDQsIDEyLCAxNSwgMjM0LCAzLCAxMiwgMTUsIDIzNCwgMiwgMTIsIDE1LCAyMzQsIAotICAgIDEsIDEyLCAxNSwgMjM0LCAwLCAxMiwgMTUsIDIzMywgMjU1LCAxMiwgMTUsIDIzMywgMjU0LCAxMiwgMTUsIDIzMywgMjUzLCAKLSAgICAxMiwgMTUsIDIzMywgMjUyLCAxMiwgMTUsIDIzMywgMjUxLCAxMiwgMTUsIDIzMywgMjUwLCAxMiwgMTUsIDIzMywgMjQ5LCAKLSAgICAxMiwgMTUsIDIzMywgMjQ4LCAxMiwgMTUsIDIzMywgMjQ3LCAxMiwgMTUsIDIzMywgMjQ2LCAxMiwgMTUsIDIzMywgMjQ1LCAKLSAgICAxMiwgMTUsIDIzMywgMjQ0LCAxMiwgMTUsIDIzMywgMjQzLCAxMiwgMTUsIDIzMywgMjQyLCAxMiwgMTUsIDIzMywgMjQxLCAKLSAgICAxMiwgMTUsIDIzMywgMjQwLCAxMiwgMTUsIDIzMywgMjM5LCAxMiwgMTUsIDIzMywgMjM4LCAxMiwgMTUsIDIzMywgMjM3LCAKLSAgICAxMiwgMTUsIDIzMywgMjM2LCAxMiwgMTUsIDIzMywgMjM1LCAxMiwgMTUsIDIzMywgMjM0LCAxMiwgMTUsIDIzMywgMjMzLCAKLSAgICAxMiwgMTUsIDIzMywgMjMyLCAxMiwgMTUsIDIzMywgMjMxLCAxMiwgMTUsIDIzMywgMjMwLCAxMiwgMTUsIDIzMywgMjI5LCAKLSAgICAxMiwgMTUsIDIzMywgMjI4LCAxMiwgMTUsIDIzMywgMjI3LCAxMiwgMTUsIDIzMywgMjI2LCAxMiwgMTUsIDIzMywgMjI1LCAKLSAgICAxMiwgMTUsIDIzMywgMjI0LCAxMiwgMTUsIDIzMywgMjIzLCAxMiwgMTUsIDIzMywgMjIyLCAxMiwgMTUsIDIzMywgMjIxLCAKLSAgICAxMiwgMTUsIDIzMywgMjIwLCAxMiwgMTUsIDIzMywgMjE5LCAxMiwgMTUsIDIzMywgMjE4LCAxMiwgMTUsIDIzMywgMjE3LCAKLSAgICAxMiwgMTUsIDIzMywgMjE2LCAxMiwgMTUsIDIzMywgMjE1LCAxMiwgMTUsIDIzMywgMjE0LCAxMiwgMTUsIDIzMywgMjEzLCAKLSAgICAxMiwgMTUsIDIzMywgMjEyLCAxMiwgMTUsIDIzMywgMjExLCAxMiwgMTUsIDIzMywgMjEwLCAxMiwgMTUsIDIzMywgMjA5LCAKLSAgICAxMiwgMTUsIDIzMywgMjA4LCAxMiwgMTUsIDIzMywgMjA3LCAxMiwgMTUsIDIzMywgMjA2LCAxMiwgMTUsIDIzMywgMjA1LCAKLSAgICAxMiwgMTUsIDIzMywgMjA0LCAxMiwgMTUsIDIzMywgMjAzLCAxMiwgMTUsIDIzMywgMjAyLCAxMiwgMTUsIDIzMywgMjAxLCAKLSAgICAxMiwgMTUsIDIzMywgMjAwLCAxMiwgMTUsIDIzMywgMTk5LCAxMiwgMTUsIDIzMywgMTk4LCAxMiwgMTUsIDIzMywgMTk3LCAKLSAgICAxMiwgMTUsIDIzMywgMTk2LCAxMiwgMTUsIDIzMywgMTk1LCAxMiwgMTUsIDIzMywgMTk0LCAxMiwgMTUsIDIzMywgMTkzLCAKLSAgICAxMiwgMTUsIDIzMywgMTkyLCAxMiwgMTUsIDIzMywgMTkxLCAxMiwgMTUsIDIzMywgMTkwLCAxMiwgMTUsIDIzMywgMTg5LCAKLSAgICAxMiwgMTUsIDIzMywgMTg4LCAxMiwgMTUsIDIzMywgMTg3LCAxMiwgMTUsIDIzMywgMTg2LCAxMiwgMTUsIDIzMywgMTg1LCAKLSAgICAxMiwgMTUsIDIzMywgMTg0LCAxMiwgMTUsIDIzMywgMTgzLCAxMiwgMTUsIDIzMywgMTgyLCAxMiwgMTUsIDIzMywgMTgxLCAKLSAgICAxMiwgMTUsIDIzMywgMTgwLCAxMiwgMTUsIDIzMywgMTc5LCAxMiwgMTUsIDIzMywgMTc4LCAxMiwgMTUsIDIzMywgMTc3LCAKLSAgICAxMiwgMTUsIDIzMywgMTc2LCAxMiwgMTUsIDIzMywgMTc1LCAxMiwgMTUsIDIzMywgMTc0LCAxMiwgMTUsIDIzMywgMTczLCAKLSAgICAxMiwgMTUsIDIzMywgMTcyLCAxMiwgMTUsIDIzMywgMTcxLCAxMiwgMTUsIDIzMywgMTcwLCAxMiwgMTUsIDIzMywgMTY5LCAKLSAgICAxMiwgMTUsIDIzMywgMTY4LCAxMiwgMTUsIDIzMywgMTY3LCAxMiwgMTUsIDIzMywgMTY2LCAxMiwgMTUsIDIzMywgMTY1LCAKLSAgICAxMiwgMTUsIDIzMywgMTY0LCAxMiwgMTUsIDIzMywgMTYzLCAxMiwgMTUsIDIzMywgMTYyLCAxMiwgMTUsIDIzMywgMTYxLCAKLSAgICAxMiwgMTUsIDIzMywgMTYwLCAxMiwgMTUsIDIzMywgMTU5LCAxMiwgMTUsIDIzMywgMTU4LCAxMiwgMTUsIDIzMywgMTU3LCAKLSAgICAxMiwgMTUsIDIzMywgMTU2LCAxMiwgMTUsIDIzMywgMTU1LCAxMiwgMTUsIDIzMywgMTU0LCAxMiwgMTUsIDIzMywgMTUzLCAKLSAgICAxMiwgMTUsIDIzMywgMTUyLCAxMiwgMTUsIDIzMywgMTUxLCAxMiwgMTUsIDIzMywgMTUwLCAxMiwgMTUsIDIzMywgMTQ5LCAKLSAgICAxMiwgMTUsIDIzMywgMTQ4LCAxMiwgMTUsIDIzMywgMTQ3LCAxMiwgMTUsIDIzMywgMTQ2LCAxMiwgMTUsIDIzMywgMTQ1LCAKLSAgICAxMiwgMTUsIDIzMywgMTQ0LCAxMiwgMTUsIDIzMywgMTQzLCAxMiwgMTUsIDIzMywgMTQyLCAxMiwgMTUsIDIzMywgMTQxLCAKLSAgICAxMiwgMTUsIDIzMywgMTQwLCAxMiwgMTUsIDIzMywgMTM5LCAxMiwgMTUsIDIzMywgMTM4LCAxMiwgMTUsIDIzMywgMTM3LCAKLSAgICAxMiwgMTUsIDIzMywgMTM2LCAxMiwgMTUsIDIzMywgMTM1LCAxMiwgMTUsIDIzMywgMTM0LCAxMiwgMTUsIDIzMywgMTMzLCAKLSAgICAxMiwgMTUsIDIzMywgMTMyLCAxMiwgMTUsIDIzMywgMTMxLCAxMiwgMTUsIDIzMywgMTMwLCAxMiwgMTUsIDIzMywgMTI5LCAKLSAgICAxMiwgMTUsIDIzMywgMTI4LCAxMiwgMTUsIDIzMywgMTI3LCAxMiwgMTUsIDIzMywgMTI2LCAxMiwgMTUsIDIzMywgMTI1LCAKLSAgICAxMiwgMTUsIDIzMywgMTI0LCAxMiwgMTUsIDIzMywgMTIzLCAyMjgsIDE0LCAyMDksIDI1NSwgMTYwLCAyMTEsIDIyOCwgCi0gICAgMTYwLCAyNDAsIDIxMiwgODIsIDE2MCwgMjE3LCAzMSwgODIsIDE2MCwgNDIsIDU0LCAxNjAsIDI0MywgOTcsIDU0LCAxNjAsIAotICAgIDIxOCwgMjQ2LCA1NCwgMTYwLCAyNTAsIDIzNSwgMTYwLCAyNTAsIDE2MCwgMTYwLCA0OSwgMjE5LCA3NiwgMTYwLCA1MCwgCi0gICAgMjE5LCA3NiwgMTYwLCAyNTAsIDU5LCAxNjAsIDkxLCA1NCwgMTYwLCAyNDUsIDIzMywgMTYwLCAyMzUsIDIxOSwgMTYwLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMTYwLCAyMTIsIDAsIDE2MCwgMTcsIDIwMiwgODQsIDE2MCwgMTcsIDEwNSwgMTYwLCAxNywgCi0gICAgMTA4LCAxNjAsIDE3LCAxNDcsIDE2MCwgMTcsIDE0OSwgMTYwLCAxNywgMTcwLCAxNjAsIDE3LCAxOTUsIDE2MCwgMTcsIAotICAgIDIxMywgMTExLCAxNjAsIDE3LCAxOTksIDE2MCwgMTcsIDIyMiwgNjMsIDE2MCwgMjQ1LCAyNDIsIDE2MCwgMjEzLCAxNDMsIAotICAgIDE2MCwgMjI3LCAxNzksIDU0LCAxNjAsIDI0MSwgMzUsIDU0LCAxNjAsIDIzNywgMjQ3LCA1NCwgMTYwLCAyMTcsIDQ3LCA4MiwgCi0gICAgMTYwLCAyNDUsIDIzMSwgMjUwLCA0OSwgMTYwLCA4LCA2LCAxLCA2MywgMTYwLCA4LCA2LCAxLCAyNDksIDI1NSwgMTYwLCA4LCAKLSAgICA2LCAxLCAyNDcsIDEyNSwgMTYwLCA4LCA2LCAxLCAyNDUsIDUxLCAxNjAsIDgsIDYsIDEsIDc0LCAxNjAsIDgsIDYsIDEsIAotICAgIDI0MCwgMTc0LCAxNjAsIDgsIDYsIDEsIDIzOSwgNzUsIDE2MCwgOCwgNiwgMSwgMjM3LCAxNzEsIDE2MCwgOCwgNiwgMSwgCi0gICAgNzUsIDE2MCwgOCwgNiwgMSwgMjMwLCAxODQsIDE2MCwgOCwgNiwgMSwgMjMwLCA1NCwgMTYwLCA4LCA2LCAxLCAxNTksIAotICAgIDE2MCwgOCwgNiwgMSwgMjI2LCAxODUsIDE2MCwgOCwgNiwgMSwgMjIzLCAxNjMsIDE2MCwgOCwgNiwgMSwgNzgsIDE2MCwgOCwgCi0gICAgNiwgMSwgMjE5LCAxODQsIDE2MCwgOCwgNiwgMSwgMjE3LCAxMzQsIDE2MCwgOCwgNiwgMSwgMTQ2LCAxNjAsIDgsIDYsIDEsIAotICAgIDE5NCwgMTYwLCA4LCA2LCAxLCAyMTAsIDY5LCAxNjAsIDgsIDYsIDEsIDY4LCAxNjAsIDgsIDYsIDEsIDIwNiwgMTY0LCAKLSAgICAxNjAsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxNjAsIDgsIDYsIDEsIDIwMywgMTk2LCAxNjAsIDgsIDYsIDEsIDIwMywgMTI0LCAKLSAgICAxNjAsIDgsIDYsIDEsIDIwMiwgMTU5LCAxNjAsIDQ5LCA1MSwgMTU1LCAxNjAsIDIxNiwgNzQsIDIxMiwgMCwgMTYwLCA1MCwgCi0gICAgNTEsIDE1NSwgMTYwLCAyNDYsIDUzLCAyNTEsIDEzOCwgMTYwLCAxMjQsIDIyNywgMTE0LCAxNjAsIDIzNywgMjU0LCAyNTEsIAotICAgIDEzOCwgMTYwLCA4LCA1LCAxLCA2MywgMTYwLCA4LCA1LCAxLCAyNDksIDI1NSwgMTYwLCA4LCA1LCAxLCAyNDcsIDEyNSwgCi0gICAgMTYwLCA4LCA1LCAxLCAyNDUsIDUxLCAxNjAsIDgsIDUsIDEsIDc0LCAxNjAsIDgsIDUsIDEsIDI0MCwgMTc0LCAxNjAsIDgsIAotICAgIDUsIDEsIDIzOSwgNzUsIDE2MCwgOCwgNSwgMSwgMjM3LCAxNzEsIDE2MCwgOCwgNSwgMSwgNzUsIDE2MCwgOCwgNSwgMSwgCi0gICAgMjMwLCAxODQsIDE2MCwgOCwgNSwgMSwgMjMwLCA1NCwgMTYwLCA4LCA1LCAxLCAxNTksIDE2MCwgOCwgNSwgMSwgMjI2LCAKLSAgICAxODUsIDE2MCwgOCwgNSwgMSwgMjIzLCAxNjMsIDE2MCwgOCwgNSwgMSwgNzgsIDE2MCwgOCwgNSwgMSwgMjE5LCAxODQsIAotICAgIDE2MCwgOCwgNSwgMSwgMjE3LCAxMzQsIDE2MCwgOCwgNSwgMSwgMTQ2LCAxNjAsIDgsIDUsIDEsIDE5NCwgMTYwLCA4LCA1LCAKLSAgICAxLCAyMTAsIDY5LCAxNjAsIDgsIDUsIDEsIDY4LCAxNjAsIDgsIDUsIDEsIDIwNiwgMTY0LCAxNjAsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ0LCAxNjAsIDgsIDUsIDEsIDIwMywgMTk2LCAxNjAsIDgsIDUsIDEsIDIwMywgMTI0LCAxNjAsIDgsIDUsIDEsIDIwMiwgCi0gICAgMTU5LCAxNjAsIDQ5LCAyNDUsIDkzLCAxNTUsIDE2MCwgODAsIDIyNywgMTE0LCAxNjAsIDUwLCAyNDUsIDkzLCAxNTUsIAotICAgIDE2MCwgMjA4LCAyMjcsIDI0NywgNjAsIDIwOSwgMjU1LCA1NywgMjE0LCA3MSwgNTcsIDIxNCwgNjAsIDU3LCAyMTQsIDQ5LCAKLSAgICA1NywgMjE0LCAzNywgNTcsIDIxNCwgMjYsIDU3LCAyMTQsIDE1LCA1NywgMjE0LCA0LCA1NywgMjEzLCAyNDksIDU3LCAyMTMsIAotICAgIDIzOCwgNTcsIDIxMywgMjMwLCA1NywgMjEzLCAyMjksIDU3LCAyMTMsIDIyOCwgNTcsIDIxMywgMjI3LCA1NywgMjEzLCAKLSAgICAyMjUsIDU3LCAyMTMsIDIyNCwgNTcsIDIxMywgMjIzLCA1NywgMjEzLCAyMjIsIDU3LCAyMTMsIDIyMSwgNTcsIDIxMywgCi0gICAgMjIwLCA1NywgMjEzLCAyMTksIDU3LCAyMTMsIDIxOCwgNTcsIDIxMywgMjE3LCA1NywgMjEzLCAyMTYsIDU3LCAyMTMsIAotICAgIDIxNCwgNTcsIDIxMywgMjEzLCA1NywgMjEzLCAyMTIsIDU3LCAyMTMsIDIxMSwgNTcsIDIxMywgMjEwLCA1NywgMjEzLCAKLSAgICAyMDksIDU3LCAyMTMsIDIwOCwgNTcsIDIxMywgMjA3LCA1NywgMjEzLCAyMDYsIDU3LCAyMTMsIDIwNSwgNTcsIDIxMywgCi0gICAgMjAzLCA1NywgMjEzLCAyMDIsIDU3LCAyMTMsIDIwMSwgNTcsIDIxMywgMjAwLCA1NywgMjEzLCAxOTksIDU3LCAyMTMsIAotICAgIDE5OCwgNTcsIDIxMywgMTk3LCA1NywgMjEzLCAxOTYsIDU3LCAyMTMsIDE5NSwgNTcsIDIxMywgMTk0LCA1NywgMjEzLCAKLSAgICAxOTIsIDU3LCAyMTMsIDE5MSwgNTcsIDIxMywgMTkwLCA1NywgMjEzLCAxODksIDU3LCAyMTMsIDE4OCwgNTcsIDIxMywgCi0gICAgMTg3LCA1NywgMjEzLCAxODYsIDU3LCAyMTMsIDE4NSwgNTcsIDIxMywgMTg0LCA1NywgMjEzLCAxODMsIDU3LCAyMTMsIAotICAgIDE4MSwgNTcsIDIxMywgMTgwLCA1NywgMjEzLCAxNzksIDU3LCAyMTMsIDE3OCwgNTcsIDIxMywgMTc3LCA1NywgMjEzLCAKLSAgICAxNzYsIDU3LCAyMTMsIDE3NSwgNTcsIDIxMywgMTc0LCA1NywgMjEzLCAxNzMsIDU3LCAyMTMsIDE3MiwgNTcsIDIxMywgCi0gICAgMTcwLCA1NywgMjEzLCAxNjksIDU3LCAyMTMsIDE2OCwgNTcsIDIxMywgMTY3LCA1NywgMjEzLCAxNjYsIDU3LCAyMTMsIAotICAgIDE2NSwgNTcsIDIxMywgMTY0LCA1NywgMjEzLCAxNjMsIDU3LCAyMTMsIDE2MiwgNTcsIDIxMywgMTYxLCA1NywgMjEzLCAKLSAgICAxNTksIDU3LCAyMTMsIDE1OCwgNTcsIDIxMywgMTU3LCA1NywgMjEzLCAxNTYsIDU3LCAyMTMsIDE1NSwgNTcsIDIxMywgCi0gICAgMTU0LCA1NywgMjEzLCAxNTMsIDU3LCAyMTMsIDE1MiwgNTcsIDIxMywgMTUxLCA1NywgMjEzLCAxNTAsIDU3LCAyMTQsIAotICAgIDE0NywgNTcsIDIxNCwgMTQ2LCA1NywgMjE0LCAxNDUsIDU3LCAyMTQsIDE0NCwgNTcsIDIxNCwgMTQzLCA1NywgMjE0LCAKLSAgICAxNDIsIDU3LCAyMTQsIDE0MSwgNTcsIDIxNCwgMTQwLCA1NywgMjE0LCAxMzksIDU3LCAyMTQsIDEzOCwgNTcsIDIxNCwgCi0gICAgMTM2LCA1NywgMjE0LCAxMzUsIDU3LCAyMTQsIDEzNCwgNTcsIDIxNCwgMTMzLCA1NywgMjE0LCAxMzIsIDU3LCAyMTQsIAotICAgIDEzMSwgNTcsIDIxNCwgMTMwLCA1NywgMjE0LCAxMjksIDU3LCAyMTQsIDEyOCwgNTcsIDIxNCwgMTI3LCA1NywgMjE0LCAKLSAgICAxMjUsIDU3LCAyMTQsIDEyNCwgNTcsIDIxNCwgMTIzLCA1NywgMjE0LCAxMjIsIDU3LCAyMTQsIDEyMSwgNTcsIDIxNCwgCi0gICAgMTIwLCA1NywgMjE0LCAxMTksIDU3LCAyMTQsIDExOCwgNTcsIDIxNCwgMTE3LCA1NywgMjE0LCAxMTYsIDU3LCAyMTQsIAotICAgIDExNCwgNTcsIDIxNCwgMTEzLCA1NywgMjE0LCAxMTIsIDU3LCAyMTQsIDExMSwgNTcsIDIxNCwgMTEwLCA1NywgMjE0LCAKLSAgICAxMDksIDU3LCAyMTQsIDEwOCwgNTcsIDIxNCwgMTA3LCA1NywgMjE0LCAxMDYsIDU3LCAyMTQsIDEwNSwgNTcsIDIxNCwgCi0gICAgMTAzLCA1NywgMjE0LCAxMDIsIDU3LCAyMTQsIDEwMSwgNTcsIDIxNCwgMTAwLCA1NywgMjE0LCA5OSwgNTcsIDIxNCwgOTgsIAotICAgIDU3LCAyMTQsIDk3LCA1NywgMjE0LCA5NiwgNTcsIDIxNCwgOTUsIDU3LCAyMTQsIDk0LCA1NywgMjE0LCA5MiwgNTcsIDIxNCwgCi0gICAgOTEsIDU3LCAyMTQsIDkwLCA1NywgMjE0LCA4OSwgNTcsIDIxNCwgODgsIDU3LCAyMTQsIDg3LCA1NywgMjE0LCA4NiwgNTcsIAotICAgIDIxNCwgODUsIDU3LCAyMTQsIDg0LCA1NywgMjE0LCA4MywgNTcsIDIxNCwgODEsIDU3LCAyMTQsIDgwLCA1NywgMjE0LCA3OSwgCi0gICAgNTcsIDIxNCwgNzgsIDU3LCAyMTQsIDc3LCA1NywgMjE0LCA3NiwgNTcsIDIxNCwgNzUsIDU3LCAyMTQsIDc0LCA1NywgMjE0LCAKLSAgICA3MywgNTcsIDIxNCwgNzIsIDU3LCAyMTQsIDcwLCA1NywgMjE0LCA2OSwgNTcsIDIxNCwgNjgsIDU3LCAyMTQsIDY3LCA1NywgCi0gICAgMjE0LCA2NiwgNTcsIDIxNCwgNjUsIDU3LCAyMTQsIDY0LCA1NywgMjE0LCA2MywgNTcsIDIxNCwgNjIsIDU3LCAyMTQsIDYxLCAKLSAgICA1NywgMjE0LCA1OSwgNTcsIDIxNCwgNTgsIDU3LCAyMTQsIDU3LCA1NywgMjE0LCA1NiwgNTcsIDIxNCwgNTUsIDU3LCAyMTQsIAotICAgIDU0LCA1NywgMjE0LCA1MywgNTcsIDIxNCwgNTIsIDU3LCAyMTQsIDUxLCA1NywgMjE0LCA1MCwgNTcsIDIxNCwgNDgsIDU3LCAKLSAgICAyMTQsIDQ3LCA1NywgMjE0LCA0NiwgNTcsIDIxNCwgNDUsIDU3LCAyMTQsIDQ0LCA1NywgMjE0LCA0MywgNTcsIDIxNCwgNDIsIAotICAgIDU3LCAyMTQsIDQxLCA1NywgMjE0LCA0MCwgNTcsIDIxNCwgMzksIDU3LCAyMTQsIDM2LCA1NywgMjE0LCAzNSwgNTcsIDIxNCwgCi0gICAgMzQsIDU3LCAyMTQsIDMzLCA1NywgMjE0LCAzMiwgNTcsIDIxNCwgMzEsIDU3LCAyMTQsIDMwLCA1NywgMjE0LCAyOSwgNTcsIAotICAgIDIxNCwgMjgsIDU3LCAyMTQsIDI3LCA1NywgMjE0LCAyNSwgNTcsIDIxNCwgMjQsIDU3LCAyMTQsIDIzLCA1NywgMjE0LCAyMiwgCi0gICAgNTcsIDIxNCwgMjEsIDU3LCAyMTQsIDIwLCA1NywgMjE0LCAxOSwgNTcsIDIxNCwgMTgsIDU3LCAyMTQsIDE3LCA1NywgMjE0LCAKLSAgICAxNiwgNTcsIDIxNCwgMTQsIDU3LCAyMTQsIDEzLCA1NywgMjE0LCAxMiwgNTcsIDIxNCwgMTEsIDU3LCAyMTQsIDEwLCA1NywgCi0gICAgMjE0LCA5LCA1NywgMjE0LCA4LCA1NywgMjE0LCA3LCA1NywgMjE0LCA2LCA1NywgMjE0LCA1LCA1NywgMjE0LCAzLCA1NywgCi0gICAgMjE0LCAyLCA1NywgMjE0LCAxLCA1NywgMjE0LCAwLCA1NywgMjEzLCAyNTUsIDU3LCAyMTMsIDI1NCwgNTcsIDIxMywgMjUzLCAKLSAgICA1NywgMjEzLCAyNTIsIDU3LCAyMTMsIDI1MSwgNTcsIDIxMywgMjUwLCA1NywgMjEzLCAyNDgsIDU3LCAyMTMsIDI0NywgNTcsIAotICAgIDIxMywgMjQ2LCA1NywgMjEzLCAyNDUsIDU3LCAyMTMsIDI0NCwgNTcsIDIxMywgMjQzLCA1NywgMjEzLCAyNDIsIDU3LCAKLSAgICAyMTMsIDI0MSwgNTcsIDIxMywgMjQwLCA1NywgMjEzLCAyMzksIDU3LCAyMTMsIDIzNywgNTcsIDIxMywgMjM2LCA1NywgCi0gICAgMjEzLCAyMzUsIDU3LCAyMTMsIDIzNCwgNTcsIDIxMywgMjMzLCA1NywgMjEzLCAyMzIsIDU3LCAyMTMsIDIzMSwgMjIxLCAKLSAgICA0OCwgMjIxLCA1MCwgMjExLCA5MCwgNzYsIDIzNywgNjEsIDIxMiwgMywgMjExLCA5MCwgNzYsIDIwOSwgMTEyLCAyMTEsIAotICAgIDEyLCAyNDEsIDg0LCA3NiwgMjA5LCAxMTIsIDI0MCwgMjQwLCAyNDEsIDg0LCA3NiwgMjA4LCAxMDUsIDI0MSwgNDcsIDI0MSwgCi0gICAgNzEsIDI0MSwgNzIsIDI1MSwgMTMwLCAyNTEsIDEzMSwgMjUxLCAyNywgMjQ4LCAxMzEsIDI0OSwgMTksIDI0NywgMTk5LCAKLSAgICAxNjcsIDIxMCwgNSwgMjM2LCAxMDYsIDIxMCwgNSwgMjM2LCAzMSwgMjEwLCAxMCwgMjI3LCAxMTUsIDI0MCwgNTEsIDIyMiwgCi0gICAgMjE0LCAyMjcsIDExNCwgMjQxLCA4NCwgNzYsIDIyNywgMTE0LCAyMjcsIDE2MywgMjIxLCAyNTMsIDI0MSwgNTAsIDIyNywgCi0gICAgMTE1LCAyMTAsIDUsIDgwLCAyMTAsIDUsIDIwNCwgMTY1LCAyMzksIDE1OSwgMjQwLCA1MSwgMjQwLCAzMCwgMjQ3LCAyNSwgCi0gICAgMjE2LCA3NywgMjQ1LCAxNDcsIDIxMywgNywgMjE5LCAyMTEsIDIyNywgNDEsIDEwNSwgMjEyLCAxMywgMjEzLCA3LCAyMzEsIAotICAgIDQ5LCAyMjcsIDQxLCAyMDIsIDg0LCAyMTIsIDE2MiwgMjQ0LCAxMzksIDIyNywgMTA1LCAyNDEsIDksIDI0MywgMTIzLCAKLSAgICAyNDQsIDgsIDI0NSwgMTg0LCAxMDUsIDI0NCwgMTI4LCAyNDQsIDgsIDI0NSwgMTg0LCAxMDgsIDI0NCwgMTI3LCAyNDQsIDgsIAotICAgIDI0NSwgMTg0LCAxNDcsIDI0NCwgMTI2LCAyNDQsIDgsIDI0NSwgMTg0LCAxNDksIDI0NCwgMTI1LCAxODIsIDI1MSwgMTMwLCAKLSAgICAyMjMsIDg5LCAyMTAsIDk1LCAyMzEsIDExMiwgMjEwLCA5OSwgMjQxLCA4NCwgNzYsIDIwOCwgMTA2LCAyNDgsIDMzLCAyNDAsIAotICAgIDI0NywgMjQ3LCA1OSwgMjQ3LCA2MSwgMjQxLCA4NCwgNzYsIDIyNSwgOSwgMjQxLCA0OCwgMjEwLCAyNDIsIDIxMSwgMywgCi0gICAgMjQxLCA5LCAyNDEsIDEwLCAyMzEsIDI1LCAyMTMsIDEzMSwgMTQ5LCAyNDAsIDExLCAyMTMsIDEzMCwgMjM5LCAxMTIsIAotICAgIDIzMSwgMjUsIDIxMywgMTMxLCAxNDcsIDIzNywgMjM4LCAyMTMsIDEzMCwgMjM3LCAyMzUsIDIzMSwgMjUsIDIxMywgMTMxLCAKLSAgICAxMDgsIDIxNiwgMTQ5LCAyMTMsIDEzMCwgMjE1LCAxNTAsIDIzMSwgMjUsIDIxMywgMTMxLCAxMDUsIDIwNiwgMjM2LCAyMTMsIAotICAgIDEzMCwgMjA2LCAxOTMsIDIxMSwgMjMxLCAyNDQsIDQ2LCAyNDQsIDQ4LCAyMTksIDE1NywgMjQ2LCAxODIsIDIxOSwgMTU5LCAKLSAgICAxMzgsIDIyMCwgODAsIDIxNywgMjQwLCAyMzYsIDEwOSwgMjQ3LCAyMTgsIDIxOCwgMjM2LCAyMzcsIDI3LCAyNDcsIDIzMCwgCi0gICAgMjIxLCAxOTIsIDI0NywgMjE4LCAyMzcsIDI3LCAyMjMsIDUzLCAyMzEsIDM1LCAyMzEsIDM3LCAyMjIsIDIwOCwgMjI3LCAKLSAgICAxMTQsIDIyMiwgMjMxLCAyMTEsIDkwLCA3NiwgMjE0LCAxNTIsIDI1MCwgMTIwLCAyMTEsIDE2NCwgMjQxLCA4NCwgNzYsIAotICAgIDIxNCwgMTUyLCAyNTAsIDEyMCwgMjQxLCAxMiwgMTY3LCAyMTAsIDYsIDIxMywgMTE3LCAyMzYsIDEwNiwgMjEwLCA2LCAKLSAgICAyMTMsIDExNywgMjM2LCAyOCwgMTY3LCAyMTAsIDYsIDMsIDIzMCwgNjYsIDIzNiwgMTA2LCAyMTAsIDYsIDMsIDIzMCwgNjYsIAotICAgIDIzNiwgMjksIDIyNywgMTE1LCAyMTAsIDYsIDIxMywgMTE3LCA4MCwgMjEwLCA2LCAyMTMsIDExNywgMjA0LCAxNjQsIDIxOSwgCi0gICAgNjksIDIyNywgMTE1LCAyMzksIDE1MSwgMjE5LCA2OSwgMjI3LCAxMTUsIDI0MiwgNzAsIDIxOCwgODcsIDIxOSwgNjksIAotICAgIDIyNywgMTE1LCAyNDksIDE4LCAyMTksIDY5LCAyMjcsIDExNSwgMjA2LCAyMjQsIDIxOCwgODIsIDIxNiwgNzQsIDIyNywgCi0gICAgMTE1LCAyNDAsIDUxLCAyMTYsIDc0LCAyMzEsIDM1LCAyMTYsIDU3LCAyMTIsIDEyMCwgMjEzLCA3LCAxMDgsIDIxMiwgMTE3LCAKLSAgICAyMTEsIDE2NiwgMjEyLCAxMjAsIDIxMywgNywgMTQ3LCAyMTIsIDExNiwgMjExLCAxNjUsIDI0NCwgOCwgMjQ1LCAxODQsIAotICAgIDIxMSwgMzQsIDI0NCwgMTIzLCAyMTcsIDIyNywgMjA2LCAxOTIsIDEwNSwgMjE3LCAyMjcsIDIwNiwgMTkwLCAyMTcsIDE5MCwgCi0gICAgMjE3LCAyMjcsIDIwNiwgMTkyLCAxMDgsIDIxNywgMjI3LCAyMDYsIDE4OSwgMjE3LCAxODksIDIxMywgMTE4LCAyMDgsIAotICAgIDEwNCwgMjExLCA4OSwgMjExLCAxNywgMjQ3LCA2MCwgMjQ2LCAxODIsIDI0NywgMSwgMjI0LCAyMjQsIDIwNCwgMTAzLCAKLSAgICAyMjMsIDE4MSwgMjExLCA5MCwgNzYsIDIzNywgMjIzLCAyNTAsIDEyMCwgMjExLCA5MCwgNzYsIDIxNywgMjA4LCAyNTAsIAotICAgIDEyMCwgMjExLCAyMzAsIDI0MSwgODQsIDc2LCAyMzcsIDIyMywgMjUwLCAxMjAsIDI0MSwgODQsIDc2LCAyMTcsIDIwOCwgCi0gICAgMjUwLCAxMjAsIDI0MSwgNDUsIDIxMSwgOTAsIDc2LCAyMTEsIDM0LCAyMTEsIDI0NSwgMjEyLCAxMjAsIDIzOCwgMywgMTY3LCAKLSAgICAyMzAsIDI0MSwgMjEzLCA5NSwgMjEyLCAxMjAsIDE2NywgMjMwLCAyNDEsIDIxNCwgMTkxLCAyNDUsIDE4NCwgMjEzLCAxMjcsIAotICAgIDIzMCwgMjQxLCAyNDUsIDExMSwgMjExLCAzNSwgMjA5LCAxMzgsIDIxMSwgMTA4LCAyMjAsIDAsIDIxMCwgODQsIDI0NSwgCi0gICAgMjMyLCAyMTksIDIyNiwgMjE3LCAyMjgsIDIyNCwgMjIzLCAyMTgsIDcyLCAyNTAsIDE1NiwgMjE3LCAyMjIsIDI0NSwgMjMyLCAKLSAgICAyNTAsIDE3MiwgMjIzLCA0MSwgMjEyLCAxNzEsIDgsIDYsIDEsIDIzOCwgMTE5LCA4LCA1LCAxLCAyMzgsIDExOSwgMjQ2LCAKLSAgICAyMDEsIDI1MSwgOCwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIDIyMiwgMjAwLCAxLCAyMjcsIAotICAgIDY4LCAyMjgsIDEyLCAxLCAyMzksIDE4NywgMjM5LCAxNzgsIDIyOCwgMTIsIDEsIDIzOSwgMTg3LCAyNDAsIDYzLCAyMjgsIAotICAgIDEyLCAxLCAyMTUsIDIyNywgMjI4LCAxMiwgMSwgMjI3LCA0OSwgNzcsIDEzMSwgMjQ4LCA0NSwgMjEyLCAyMzgsIDIzOCwgCi0gICAgODIsIDIyNCwgMTczLCAyMTYsIDY0LCAyMzksIDg5LCAyMzksIDg4LCAyMzksIDg3LCAyMjMsIDE4MywgMjAxLCAyNDMsIAotICAgIDIwMSwgMjQ0LCAyMDEsIDI0NiwgMjI2LCAyNDMsIDIxNSwgMjM1LCAyMjYsIDI0NSwgMjE1LCAyMzcsIDIxOSwgMzcsIDIyNiwgCi0gICAgMjQyLCAyMTUsIDIzNCwgMjIxLCAyMjMsIDIyNCwgODYsIDIwNCwgMiwgMjI2LCAyNDQsIDIxNSwgMjM2LCAyMzksIDExMSwgCi0gICAgMjE5LCAzNiwgMjA0LCA1MiwgMjQxLCAxMDcsIDIzOSwgOTksIDIyNCwgMTU0LCAyMjAsIDMyLCAyMDYsIDE5NCwgOTcsIAotICAgIDIyNCwgMTU0LCAyNDQsIDE0NSwgOTcsIDk2LCAyMDgsIDg0LCA1MywgMywgNTIsIDgwLCA5NSwgODYsIDIwOCwgODQsIDUzLCAKLSAgICAzLCA1MiwgODAsIDk1LCAxMSwgNCwgMjMwLCAxOTksIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAKLSAgICAyMjcsIDE4NSwgMTU1LCAyMDUsIDE2NSwgMjA1LCA1NCwgMjA0LCAyNDIsIDIwNCwgMjMxLCAyMDQsIDIyMCwgMjA0LCAyMDksIAotICAgIDIwNCwgMTk4LCAyMDQsIDE4NywgMjA0LCAxNzYsIDIwNSwgMTY0LCAyMDUsIDE1MywgMjA1LCAxNDIsIDIwNSwgMTMxLCAKLSAgICAyMDUsIDEyMCwgMjA1LCAxMDksIDIwNSwgOTgsIDI0NywgMTMwLCAyMTksIDI0MSwgODIsIDI0OCwgMTMsIDIwMSwgMjQ1LCAKLSAgICA5LCAyLCAyMjEsIDU3LCAyMDksIDE0MSwgOSwgMiwgMjIxLCA1NywgMTE1LCAyMjEsIDU3LCAyNDcsIDE2MSwgMTE1LCAyNDcsIAotICAgIDE2MCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIxMiwgNjQsIDI0NiwgMTAyLCAyMDYsIDY1LCAyMDUsIDg3LCAyMDUsIDc2LCAKLSAgICAyMDUsIDY1LCAyMDUsIDUzLCAyMDUsIDQyLCAyMDUsIDMxLCAyMDUsIDIwLCAyMDUsIDksIDIwNCwgMjU0LCAyMDQsIDI0NiwgCi0gICAgMjA0LCAyNDUsIDIwNCwgMjQ0LCAyMDQsIDI0MywgMjA0LCAyNDEsIDIwNCwgMjQwLCAyMDQsIDIzOSwgMjA0LCAyMzgsIAotICAgIDIwNCwgMjM3LCAyMDQsIDIzNiwgMjA0LCAyMzUsIDIwNCwgMjM0LCAyMDQsIDIzMywgMjA0LCAyMzIsIDIwNCwgMjMwLCAKLSAgICAyMDQsIDIyOSwgMjA0LCAyMjgsIDIwNCwgMjI3LCAyMDQsIDIyNiwgMjA0LCAyMjUsIDIwNCwgMjI0LCAyMDQsIDIyMywgCi0gICAgMjA0LCAyMjIsIDIwNCwgMjIxLCAyMDQsIDIxOSwgMjA0LCAyMTgsIDIwNCwgMjE3LCAyMDQsIDIxNiwgMjA0LCAyMTUsIAotICAgIDIwNCwgMjE0LCAyMDQsIDIxMywgMjA0LCAyMTIsIDIwNCwgMjExLCAyMDQsIDIxMCwgMjA0LCAyMDgsIDIwNCwgMjA3LCAKLSAgICAyMDQsIDIwNiwgMjA0LCAyMDUsIDIwNCwgMjA0LCAyMDQsIDIwMywgMjA0LCAyMDIsIDIwNCwgMjAxLCAyMDQsIDIwMCwgCi0gICAgMjA0LCAxOTksIDIwNCwgMTk3LCAyMDQsIDE5NiwgMjA0LCAxOTUsIDIwNCwgMTk0LCAyMDQsIDE5MywgMjA0LCAxOTIsIAotICAgIDIwNCwgMTkxLCAyMDQsIDE5MCwgMjA0LCAxODksIDIwNCwgMTg4LCAyMDQsIDE4NiwgMjA0LCAxODUsIDIwNCwgMTg0LCAKLSAgICAyMDQsIDE4MywgMjA0LCAxODIsIDIwNCwgMTgxLCAyMDQsIDE4MCwgMjA0LCAxNzksIDIwNCwgMTc4LCAyMDQsIDE3NywgCi0gICAgMjA0LCAxNzUsIDIwNCwgMTc0LCAyMDQsIDE3MywgMjA0LCAxNzIsIDIwNCwgMTcxLCAyMDQsIDE3MCwgMjA0LCAxNjksIAotICAgIDIwNCwgMTY4LCAyMDQsIDE2NywgMjA0LCAxNjYsIDIwNSwgMTYzLCAyMDUsIDE2MiwgMjA1LCAxNjEsIDIwNSwgMTYwLCAKLSAgICAyMDUsIDE1OSwgMjA1LCAxNTgsIDIwNSwgMTU3LCAyMDUsIDE1NiwgMjA1LCAxNTUsIDIwNSwgMTU0LCAyMDUsIDE1MiwgCi0gICAgMjA1LCAxNTEsIDIwNSwgMTUwLCAyMDUsIDE0OSwgMjA1LCAxNDgsIDIwNSwgMTQ3LCAyMDUsIDE0NiwgMjA1LCAxNDUsIAotICAgIDIwNSwgMTQ0LCAyMDUsIDE0MywgMjA1LCAxNDEsIDIwNSwgMTQwLCAyMDUsIDEzOSwgMjA1LCAxMzgsIDIwNSwgMTM3LCAKLSAgICAyMDUsIDEzNiwgMjA1LCAxMzUsIDIwNSwgMTM0LCAyMDUsIDEzMywgMjA1LCAxMzIsIDIwNSwgMTMwLCAyMDUsIDEyOSwgCi0gICAgMjA1LCAxMjgsIDIwNSwgMTI3LCAyMDUsIDEyNiwgMjA1LCAxMjUsIDIwNSwgMTI0LCAyMDUsIDEyMywgMjA1LCAxMjIsIAotICAgIDIwNSwgMTIxLCAyMDUsIDExOSwgMjA1LCAxMTgsIDIwNSwgMTE3LCAyMDUsIDExNiwgMjA1LCAxMTUsIDIwNSwgMTE0LCAKLSAgICAyMDUsIDExMywgMjA1LCAxMTIsIDIwNSwgMTExLCAyMDUsIDExMCwgMjA1LCAxMDgsIDIwNSwgMTA3LCAyMDUsIDEwNiwgCi0gICAgMjA1LCAxMDUsIDIwNSwgMTA0LCAyMDUsIDEwMywgMjA1LCAxMDIsIDIwNSwgMTAxLCAyMDUsIDEwMCwgMjA1LCA5OSwgMjA1LCAKLSAgICA5NywgMjA1LCA5NiwgMjA1LCA5NSwgMjA1LCA5NCwgMjA1LCA5MywgMjA1LCA5MiwgMjA1LCA5MSwgMjA1LCA5MCwgMjA1LCAKLSAgICA4OSwgMjA1LCA4OCwgMjA1LCA4NiwgMjA1LCA4NSwgMjA1LCA4NCwgMjA1LCA4MywgMjA1LCA4MiwgMjA1LCA4MSwgMjA1LCAKLSAgICA4MCwgMjA1LCA3OSwgMjA1LCA3OCwgMjA1LCA3NywgMjA1LCA3NSwgMjA1LCA3NCwgMjA1LCA3MywgMjA1LCA3MiwgMjA1LCAKLSAgICA3MSwgMjA1LCA3MCwgMjA1LCA2OSwgMjA1LCA2OCwgMjA1LCA2NywgMjA1LCA2NiwgMjA1LCA2NCwgMjA1LCA2MywgMjA1LCAKLSAgICA2MiwgMjA1LCA2MSwgMjA1LCA2MCwgMjA1LCA1OSwgMjA1LCA1OCwgMjA1LCA1NywgMjA1LCA1NiwgMjA1LCA1NSwgMjA1LCAKLSAgICA1MiwgMjA1LCA1MSwgMjA1LCA1MCwgMjA1LCA0OSwgMjA1LCA0OCwgMjA1LCA0NywgMjA1LCA0NiwgMjA1LCA0NSwgMjA1LCAKLSAgICA0NCwgMjA1LCA0MywgMjA1LCA0MSwgMjA1LCA0MCwgMjA1LCAzOSwgMjA1LCAzOCwgMjA1LCAzNywgMjA1LCAzNiwgMjA1LCAKLSAgICAzNSwgMjA1LCAzNCwgMjA1LCAzMywgMjA1LCAzMiwgMjA1LCAzMCwgMjA1LCAyOSwgMjA1LCAyOCwgMjA1LCAyNywgMjA1LCAKLSAgICAyNiwgMjA1LCAyNSwgMjA1LCAyNCwgMjA1LCAyMywgMjA1LCAyMiwgMjA1LCAyMSwgMjA1LCAxOSwgMjA1LCAxOCwgMjA1LCAKLSAgICAxNywgMjA1LCAxNiwgMjA1LCAxNSwgMjA1LCAxNCwgMjA1LCAxMywgMjA1LCAxMiwgMjA1LCAxMSwgMjA1LCAxMCwgMjA1LCAKLSAgICA4LCAyMDUsIDcsIDIwNSwgNiwgMjA1LCA1LCAyMDUsIDQsIDIwNSwgMywgMjA1LCAyLCAyMDUsIDEsIDIwNSwgMCwgMjA0LCAKLSAgICAyNTUsIDIwNCwgMjUzLCAyMDQsIDI1MiwgMjA0LCAyNTEsIDIwNCwgMjUwLCAyMDQsIDI0OSwgMjA0LCAyNDgsIDIwNCwgCi0gICAgMjQ3LCA4LCA2LCAxLCAzNCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDIyNSwgMTcxLCAKLSAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMTg4LCAzLCA4MCwgCi0gICAgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgCi0gICAgNSwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgODAsIAotICAgIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgCi0gICAgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAKLSAgICAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDI0NywgMjksIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDI0NywgMjksIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAKLSAgICAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIAotICAgIDE2NSwgOCwgNSwgMSwgMjIyLCAyMDYsIDMsIDIwOCwgMjI4LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIAotICAgIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAKLSAgICAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIAotICAgIDI1MywgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDgwLCAyMjcsIDExNSwgNTYsIAotICAgIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjIwLCAKLSAgICA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIDYzLCAKLSAgICAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDM0LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgMywgCi0gICAgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIAotICAgIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIAotICAgIDE4OCwgMywgNzAsIDg3LCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDcwLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNzAsIDg3LCAyNSwgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCAKLSAgICA2MywgMjUsIDcwLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgCi0gICAgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMjMwLCAxODUsIAotICAgIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMzAsIDE4NSwgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDIyOCwgCi0gICAgMTMxLCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgCi0gICAgMjA4LCAyMjcsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMDgsIDIyNywgCi0gICAgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAKLSAgICAxMDYsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgCi0gICAgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIwOCwgMjI3LCAKLSAgICA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDI1MSwgMTEwLCAzLCAyMzcsIDI1MywgCi0gICAgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxNzEsIDE1OCwgMywgMTY1LCA4LCA1LCAxLCAyMDcsIAotICAgIDE3NCwgMjA2LCAxNjUsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjUsIDMsIDE2NSwgOCwgNSwgMSwgCi0gICAgMjE0LCAxOTMsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMTQsIDE5MywgMywgMTY1LCA4LCA1LCAxLCAyMzYsIDExNSwgMjE0LCAKLSAgICAxOTMsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzYsIDExNSwgMjE0LCAxOTMsIDMsIDE2NSwgMTAsIDIxMywgMTI3LCA4OSwgCi0gICAgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDMwLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwNCwgCi0gICAgNzAsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEyOSwgMTAsIDIxMywgMTI3LCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDczLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDY4LCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMjEzLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDMsIDc0LCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTA5LCAxMCwgCi0gICAgMjEzLCAxMjcsIDIyMSwgMTc5LCAzLCAyMjksIDE4OSwgMTc5LCAxLCAyMjksIDExOSwgNDQsIDEwOSwgMjMwLCA1NCwgNDQsIAotICAgIDEwOSwgMjIyLCAyMDUsIDQ0LCAxMDksIDI0NywgMTI1LCA0NCwgMTA5LCAyMjEsIDEzLCA0NCwgMTA5LCAyMDcsIDI0NCwgCi0gICAgNDQsIDEwOSwgMjIxLCAyMjgsIDQ0LCAxMDksIDIxMCwgNjksIDQ0LCAxMDksIDIyMywgMTYzLCA0NCwgMTA5LCAyMTksIAotICAgIDE4NCwgNDQsIDEwOSwgMjI2LCAxODUsIDQ0LCAxMDksIDIwMywgMTI0LCA0NCwgMTA5LCAxNDYsIDQ0LCAxMDksIDE1OSwgCi0gICAgNDQsIDEwOSwgMjA2LCAxNjQsIDQ0LCAxMDksIDIyNywgNjksIDQ0LCAxMDksIDIyNywgNzgsIDQ0LCAxMDksIDIxNSwgMTg2LCAKLSAgICA0NCwgMTA5LCAyMjEsIDIxMCwgNDQsIDEwOSwgMjMwLCAxODQsIDQ0LCAxMDksIDIxMywgOTIsIDQ0LCAxMDksIDIxMSwgCi0gICAgMTY3LCA0NCwgMTA5LCAxOTQsIDQ0LCAxMDksIDIzNywgMTcxLCA0NCwgMTA5LCAyMjgsIDIyNCwgNDQsIDQsIDIzMCwgNDEsIAotICAgIDQ0LCA0LCAyMjksIDEwMCwgNDQsIDQsIDIyOSwgODcsIDQ0LCA0LCAyMjgsIDIwOSwgNDQsIDQsIDIyOCwgMTc0LCA0NCwgNCwgCi0gICAgMjI5LCAyMDEsIDQ0LCA0LCAyMjksIDE5OCwgNDQsIDQsIDIzMCwgMTgsIDQ0LCA0LCAyMjksIDI2LCA0NCwgNCwgMjI5LCA2LCAKLSAgICA0NCwgNCwgMjI5LCAyMTksIDQ0LCA0LCAyMjIsIDIwMiwgNDQsIDQsIDIyMiwgMTUxLCA0NCwgNCwgMjIyLCAxNDcsIDQ0LCAKLSAgICA0LCAyMjIsIDExNiwgNDQsIDQsIDIyMiwgMTA4LCA0NCwgNCwgMjIyLCAxOTAsIDQ0LCA0LCAyMjIsIDE4OCwgNDQsIDQsIAotICAgIDIyMiwgMTk5LCA0NCwgNCwgMjIyLCAxMjgsIDQ0LCA0LCAyMjIsIDEyMywgNDQsIDQsIDIyMiwgMTkyLCA0NCwgNCwgMjQ3LCAKLSAgICA5MSwgNDQsIDQsIDI0NiwgNzksIDQ0LCA0LCAyNDYsIDY5LCA0NCwgNCwgMjQ1LCAxMTAsIDQ0LCA0LCAyNDUsIDc2LCA0NCwgCi0gICAgNCwgMjQ2LCAyMzgsIDQ0LCA0LCAyNDYsIDIzMCwgNDQsIDQsIDI0NywgODAsIDQ0LCA0LCAyNDUsIDI1NCwgNDQsIDQsIAotICAgIDI0NSwgMTgwLCA0NCwgNCwgMjQ3LCAxNSwgNDQsIDQsIDIyMSwgMTAsIDQ0LCA0LCAyMjAsIDI0OCwgNDQsIDQsIDIyMCwgCi0gICAgMjQzLCA0NCwgNCwgMjIwLCAyMjYsIDQ0LCA0LCAyMjAsIDIxOCwgNDQsIDQsIDIyMSwgMSwgNDQsIDQsIDIyMSwgMCwgNDQsIAotICAgIDQsIDIyMSwgNywgNDQsIDQsIDIyMCwgMjMzLCA0NCwgNCwgMjIwLCAyMzAsIDQ0LCA0LCAyMjEsIDQsIDQ0LCA0LCAyMDcsIAotICAgIDI0MCwgNDQsIDQsIDIwNywgMjIwLCA0NCwgNCwgMjA3LCAyMTksIDQ0LCA0LCAyMDcsIDIwOCwgNDQsIDQsIDIwNywgMjA1LCAKLSAgICA0NCwgNCwgMjA3LCAyMzYsIDQ0LCA0LCAyMDcsIDIzNSwgNDQsIDQsIDIwNywgMjM5LCA0NCwgNCwgMjA3LCAyMTgsIDQ0LCAKLSAgICA0LCAyMDcsIDIxNywgNDQsIDQsIDIwNywgMjM4LCA0NCwgNCwgMjIxLCAyMjYsIDQ0LCA0LCAyMjEsIDIxMiwgNDQsIDQsIAotICAgIDIyMSwgMjExLCA0NCwgNCwgMjIxLCAxOTUsIDQ0LCA0LCAyMjEsIDE5NCwgNDQsIDQsIDIyMSwgMjIyLCA0NCwgNCwgMjIxLCAKLSAgICAyMjEsIDQ0LCA0LCAyMjEsIDIyNSwgNDQsIDQsIDIyMSwgMTk3LCA0NCwgNCwgMjIxLCAxOTYsIDQ0LCA0LCAyMjEsIDIyNCwgCi0gICAgNDQsIDQsIDIxMCwgMTgsIDQ0LCA0LCAyMDksIDIsIDQ0LCA0LCAyMDgsIDI0MiwgNDQsIDQsIDIwNywgMjAzLCA0NCwgNCwgCi0gICAgMjA3LCAxNjUsIDQ0LCA0LCAyMDksIDE4NywgNDQsIDQsIDIwOSwgMTc2LCA0NCwgNCwgMjA5LCAyNTAsIDQ0LCA0LCAxMzUsIAotICAgIDQ0LCA0LCAyMDgsIDE0OCwgNDQsIDQsIDIwOSwgMjA3LCA0NCwgNCwgMjIzLCAxMDYsIDQ0LCA0LCAyMjIsIDEwMCwgNDQsIAotICAgIDQsIDIyMiwgNzUsIDQ0LCA0LCAyMjEsIDg0LCA0NCwgNCwgMjIxLCAyNSwgNDQsIDQsIDIyMiwgMjQwLCA0NCwgNCwgMjIyLCAKLSAgICAyMzUsIDQ0LCA0LCAyMjMsIDkyLCA0NCwgNCwgMjIxLCAxOTEsIDQ0LCA0LCAyMjEsIDE4MCwgNDQsIDQsIDIyMywgNjUsIAotICAgIDQ0LCA0LCAyMTksIDE2OCwgNDQsIDQsIDIxOCwgMTY3LCA0NCwgNCwgMjE4LCAxMjksIDQ0LCA0LCAyMTcsIDE5MSwgNDQsIAotICAgIDQsIDIxNywgMTU3LCA0NCwgNCwgMjE5LCAzNCwgNDQsIDQsIDIxOSwgMjMsIDQ0LCA0LCAyMTksIDE0OCwgNDQsIDQsIDIxOCwgCi0gICAgNjksIDQ0LCA0LCAyMTgsIDQ1LCA0NCwgNCwgMjE5LCA0OCwgNDQsIDQsIDIyNSwgMTc1LCA0NCwgNCwgMjI0LCAxNTUsIDQ0LCAKLSAgICA0LCAyMjQsIDEyNSwgNDQsIDQsIDIyMywgMjQ2LCA0NCwgNCwgMjIzLCAxOTIsIDQ0LCA0LCAyMjUsIDIwLCA0NCwgNCwgCi0gICAgMjI1LCA4LCA0NCwgNCwgMjI1LCAxNDAsIDQ0LCA0LCAyMjQsIDgyLCA0NCwgNCwgMjI0LCAzNSwgNDQsIDQsIDIyNSwgNjcsIAotICAgIDQ0LCA0LCAyMDMsIDExMCwgNDQsIDQsIDIwMywgMTEsIDQ0LCA0LCAyMDMsIDIsIDQ0LCA0LCAyMDIsIDIxMywgNDQsIDQsIAotICAgIDIwMiwgMTgxLCA0NCwgNCwgMjAzLCA1MiwgNDQsIDQsIDIwMywgNDksIDQ0LCA0LCAyMDMsIDg5LCA0NCwgNCwgMjAyLCAKLSAgICAyNDcsIDQ0LCA0LCAyMDIsIDIzMiwgNDQsIDQsIDIwMywgNjIsIDQ0LCA0LCAyMTYsIDIxNiwgNDQsIDQsIDIxNiwgNTcsIAotICAgIDQ0LCA0LCAyMTYsIDMsIDQ0LCA0LCAyMTUsIDE0NSwgNDQsIDQsIDIxNSwgMTE0LCA0NCwgNCwgMjE2LCAxNTgsIDQ0LCA0LCAKLSAgICAyMTYsIDEzNSwgNDQsIDQsIDIxNiwgMTk3LCA0NCwgNCwgMjE1LCAyMjcsIDQ0LCA0LCAyMTUsIDIwOCwgNDQsIDQsIDIxNiwgCi0gICAgMTY3LCA0NCwgNCwgMjI4LCAxMTIsIDQ0LCA0LCAyMjcsIDE0OCwgNDQsIDQsIDIyNywgMTMwLCA0NCwgNCwgMjI2LCAyMzksIAotICAgIDQ0LCA0LCAyMjYsIDIxMCwgNDQsIDQsIDIyNywgMjM0LCA0NCwgNCwgMjI3LCAyMjYsIDQ0LCA0LCAyMjgsIDg2LCA0NCwgNCwgCi0gICAgMjI3LCA0OSwgNDQsIDQsIDIyNywgMTgsIDQ0LCA0LCAyMjcsIDI1MSwgNDQsIDQsIDIwNiwgODUsIDQ0LCA0LCAyMDUsIAotICAgIDIzMCwgNDQsIDQsIDIwNSwgMjE1LCA0NCwgNCwgMjA0LCAxNjMsIDQ0LCA0LCAyMDQsIDE1NiwgNDQsIDQsIDIwNiwgNTUsIAotICAgIDQ0LCA0LCAyMDYsIDUwLCA0NCwgNCwgMjA2LCA4MSwgNDQsIDQsIDIwNSwgMTg5LCA0NCwgNCwgMjA1LCAxNzYsIDQ0LCA0LCAKLSAgICAyMDYsIDYxLCA0NCwgNCwgMjI3LCA2NywgNDQsIDQsIDIyNywgNjIsIDQ0LCA0LCAyMjcsIDYxLCA0NCwgNCwgMjI3LCA1OCwgCi0gICAgNDQsIDQsIDIyNywgNTcsIDQ0LCA0LCAyMjcsIDY0LCA0NCwgNCwgMjI3LCA2MywgNDQsIDQsIDIyNywgNjYsIDQ0LCA0LCAKLSAgICAyMjcsIDYwLCA0NCwgNCwgMjI3LCA1OSwgNDQsIDQsIDIyNywgNjUsIDQ0LCA0LCAyMjcsIDc2LCA0NCwgNCwgMjI3LCA3MSwgCi0gICAgNDQsIDQsIDIyNywgNzAsIDQ0LCA0LCAyMjcsIDU0LCA0NCwgNCwgMjI3LCA1MywgNDQsIDQsIDIyNywgNzMsIDQ0LCA0LCAKLSAgICAyMjcsIDcyLCA0NCwgNCwgMjI3LCA3NSwgNDQsIDQsIDIyNywgNTYsIDQ0LCA0LCAyMjcsIDU1LCA0NCwgNCwgMjI3LCA3NCwgCi0gICAgNDQsIDQsIDIxNSwgMTg0LCA0NCwgNCwgMjE1LCAxNzMsIDQ0LCA0LCAyMTUsIDE3MiwgNDQsIDQsIDIxNSwgMTY1LCA0NCwgCi0gICAgNCwgMjE1LCAxNTgsIDQ0LCA0LCAyMTUsIDE4MCwgNDQsIDQsIDIxNSwgMTc5LCA0NCwgNCwgMjE1LCAxODMsIDQ0LCA0LCAKLSAgICAyMTUsIDE3MSwgNDQsIDQsIDIxNSwgMTcwLCA0NCwgNCwgMjE1LCAxODIsIDQ0LCA0LCAyMjEsIDIwOCwgNDQsIDQsIDIyMSwgCi0gICAgMjAzLCA0NCwgNCwgMjIxLCAyMDIsIDQ0LCA0LCAyMjEsIDE5OSwgNDQsIDQsIDIyMSwgMTk4LCA0NCwgNCwgMjIxLCAyMDUsIAotICAgIDQ0LCA0LCAyMjEsIDIwNCwgNDQsIDQsIDIyMSwgMjA3LCA0NCwgNCwgMjIxLCAyMDEsIDQ0LCA0LCAyMjEsIDIwMCwgNDQsIAotICAgIDQsIDIyMSwgMjA2LCA0NCwgNCwgMjMwLCAxODAsIDQ0LCA0LCAyMzAsIDE0MSwgNDQsIDQsIDIzMCwgMTM0LCA0NCwgNCwgCi0gICAgMjMwLCA4MiwgNDQsIDQsIDIzMCwgNjQsIDQ0LCA0LCAyMzAsIDE2MSwgNDQsIDQsIDIzMCwgMTU5LCA0NCwgNCwgMjMwLCAKLSAgICAxNzQsIDQ0LCA0LCAyMzAsIDEwMSwgNDQsIDQsIDIzMCwgOTEsIDQ0LCA0LCAyMzAsIDE2NywgNDQsIDQsIDIxMywgODUsIAotICAgIDQ0LCA0LCAyMTMsIDExLCA0NCwgNCwgMjEzLCA2LCA0NCwgNCwgMjEyLCAxOTksIDQ0LCA0LCAyMTIsIDE4MiwgNDQsIDQsIAotICAgIDIxMywgNDMsIDQ0LCA0LCAyMTMsIDQxLCA0NCwgNCwgMjEzLCA3NCwgNDQsIDQsIDIxMiwgMjQyLCA0NCwgNCwgMjEyLCAKLSAgICAyMzYsIDQ0LCA0LCAyMTMsIDUyLCA0NCwgNCwgMjExLCAxNjMsIDQ0LCA0LCAyMTEsIDEzMiwgNDQsIDQsIDIxMSwgMTI4LCAKLSAgICA0NCwgNCwgMjExLCAxMTksIDQ0LCA0LCAyMTEsIDExNiwgNDQsIDQsIDIxMSwgMTM4LCA0NCwgNCwgMjExLCAxMzcsIDQ0LCAKLSAgICA0LCAyMTEsIDE2MiwgNDQsIDQsIDIxMSwgMTI0LCA0NCwgNCwgMjExLCAxMjMsIDQ0LCA0LCAyMTEsIDE0MCwgNDQsIDQsIAotICAgIDIxNSwgMzMsIDQ0LCA0LCAyMTIsIDE2MiwgNDQsIDQsIDIxMiwgMTQyLCA0NCwgNCwgMjExLCAxMCwgNDQsIDQsIDIxMCwgCi0gICAgMTc5LCA0NCwgNCwgMjE0LCAxNzcsIDQ0LCA0LCAyMTQsIDE2NSwgNDQsIDQsIDIxNSwgMTgsIDQ0LCA0LCAyMTIsIDEzLCAKLSAgICA0NCwgNCwgMjExLCAyNTAsIDQ0LCA0LCAyMTQsIDIxNywgNDQsIDQsIDIzNywgMTU3LCA0NCwgNCwgMjM3LCAzLCA0NCwgNCwgCi0gICAgMjM2LCAyMzksIDQ0LCA0LCAyMzYsIDI2LCA0NCwgNCwgMjM2LCAxLCA0NCwgNCwgMjM3LCA2NywgNDQsIDQsIDIzNywgNDgsIAotICAgIDQ0LCA0LCAyMzcsIDE0NywgNDQsIDQsIDIzNiwgMTM2LCA0NCwgNCwgMjM2LCAxMTcsIDQ0LCA0LCAyMzcsIDc2LCA0NCwgNCwgCi0gICAgMjI4LCAyMjMsIDQ0LCA0LCAyMjgsIDIyMiwgNDQsIDQsIDIyOCwgMjE3LCA0NCwgNCwgMjI4LCAyMTYsIDQ0LCA0LCAyMjgsIAotICAgIDIxMywgNDQsIDQsIDIyOCwgMjEyLCA0NCwgNCwgMjI4LCAyMTksIDQ0LCA0LCAyMjgsIDIxOCwgNDQsIDQsIDIyOCwgMjIxLCAKLSAgICA0NCwgNCwgMjI4LCAyMTUsIDQ0LCA0LCAyMjgsIDIxNCwgNDQsIDQsIDIyOCwgMjIwLCA0NCwgNCwgMjEyLCAyMDUsIDE0MCwgCi0gICAgMTA5LCAyLCAyMDMsIDc1LCAxNDAsIDEwOSwgMiwgMjE2LCAxODYsIDE0MCwgMTA5LCAyLCAyMTYsIDEwMiwgMTE0LCAxLCAKLSAgICAyMDcsIDk1LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTczLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAxNDQsIDg1LCAKLSAgICAxMDksIDIsIDI0NSwgMjQ5LCAyMjksIDI2LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAxMTUsIDg1LCAxMDksIDIsIAotICAgIDI0NSwgMjQ5LCAyMjIsIDEyOCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NywgOTIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAKLSAgICAyNDYsIDE5OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NSwgMjU0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ2LCAxMTYsIAotICAgIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjAsIDIzMywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NCwgMjEyLCA4NSwgMTA5LCAKLSAgICAyLCAyNDUsIDI0OSwgMjA3LCAyMjksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDMsIDExMywgODUsIDEwOSwgMiwgMjQ1LCAKLSAgICAyNDksIDIwNywgMjI0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjAxLCAyMDEsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTAsIAotICAgIDIyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjA5LCAxMDgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxMzUsIDg1LCAxMDksIAotICAgIDIsIDI0NSwgMjQ5LCAyMDksIDQ3LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjIxLCAxOTEsIDg1LCAxMDksIDIsIDI0NSwgCi0gICAgMjQ5LCAyNDksIDMyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAyMDgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTgsIAotICAgIDY5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAxODAsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjQsIDgyLCA4NSwgCi0gICAgMTA5LCAyLCAyNDUsIDI0OSwgMjAyLCAyNDcsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTUsIDIyNywgODUsIDEwOSwgMiwgCi0gICAgMjQ1LCAyNDksIDIyNywgNDksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMDUsIDE4OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIAotICAgIDIxMywgOTAsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTEsIDE2NCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxNSwgMzYsIAotICAgIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxNTIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjgsIDExMywgODUsIDIyLCAyLCAKLSAgICAyNDUsIDI0OSwgMjE3LCAxMjYsIDg1LCAyMzEsIDM2LCAyMiwgMiwgMjQ1LCAyNDksIDIxNywgNjUsIDg1LCAyMzEsIDM2LCAKLSAgICAyMiwgMiwgMjQ1LCAyNDksIDIxNSwgMTAyLCA4NSwgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTUsIDk1LCA4NSwgCi0gICAgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTcsIDEwNiwgODUsIDIyLCAyLCAyMjAsIDM5LCA4NSwgMjIsIDIsIDI1MSwgCi0gICAgMjQyLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMjAzLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTUxLCAxNzIsIDEsIDI0OCwgCi0gICAgNzksIDIyMiwgMTE2LCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTkwLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTI4LCA2NywgCi0gICAgMSwgMjQ4LCA3OSwgMjIyLCAyMDMsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDE1MSwgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTE2LCAKLSAgICA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxOTAsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDEyOCwgNjcsIDEsIDI1MSwgNTcsIDI0NiwgCi0gICAgMjM4LCA2NywgMSwgMjUxLCA1NywgMjA3LCAyMDMsIDY3LCAxLCAyNTEsIDU3LCAxMzUsIDY3LCAxLCAyNTEsIDU3LCAyMTksIAotICAgIDE4NCwgNjUsIDEsIDI0MCwgMTk4LCAyNDAsIDE5NywgMjQ1LCAxODgsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MCwgCi0gICAgMTk4LCAyNDUsIDE4OCwgMTQzLCAxNDIsIAorICAgIDAsIDIwOCwgMjQ0LCAyMzgsIDQzLCA4MSwgMjE0LCA2MywgODEsIDQxLCA1NCwgMjQwLCAxOTQsIDU0LCAyMTYsIDI3LCA1NCwgCisgICAgMjUxLCA4OSwgMjUxLCAxMywgNDksIDIxNiwgMTE1LCA1MSwgMjE2LCAxMTUsIDI1MCwgMTY1LCA5MywgNTQsIDI0NiwgNzAsIAorICAgIDIzMywgMzIsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDksIDE2LCAxNywgMTk5LCA4MSwgMTcsIDEwMiwgMTcsIDEwNSwgMTcsIAorICAgIDE0NywgMTcsIDE0OSwgMTcsIDE2NCwgMTcsIDE4NywgMTcsIDIxMCwgMTM1LCAxNywgMTkyLCAxNywgMjE5LCAxMTMsIDI0NiwgCisgICAgNzksIDIxMCwgMTY3LCAyMjQsIDI0MSwgNTQsIDIzOCwgMTIyLCA1NCwgMjM1LCA2NywgNTQsIDIxNCwgNzksIDgxLCAyNDYsIAorICAgIDY4LCAyNTAsIDE1NSwgOCwgNiwgMSwgNjIsIDgsIDYsIDEsIDI1MCwgMTAzLCA4LCA2LCAxLCAyNDcsIDIyMywgOCwgNiwgMSwgCisgICAgMjQyLCAxNTMsIDgsIDYsIDEsIDcyLCA4LCA2LCAxLCAyMzgsIDUsIDgsIDYsIDEsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMzQsIAorICAgIDI0NywgOCwgNiwgMSwgNzAsIDgsIDYsIDEsIDIyNywgMjUxLCA4LCA2LCAxLCAyMjcsIDExOCwgOCwgNiwgMSwgMTU2LCA4LCAKKyAgICA2LCAxLCAyMjMsIDI0MywgOCwgNiwgMSwgMjIwLCAyMTQsIDgsIDYsIDEsIDc0LCA4LCA2LCAxLCAyMTYsIDIyNiwgOCwgNiwgCisgICAgMSwgMjE0LCAxNjcsIDgsIDYsIDEsIDE0NiwgOCwgNiwgMSwgMjEyLCAxMjIsIDgsIDYsIDEsIDIwNywgODMsIDgsIDYsIDEsIAorICAgIDY2LCA4LCA2LCAxLCAyMDMsIDE2OCwgOCwgNiwgMSwgMjAxLCAxNDcsIDgsIDYsIDEsIDIwMCwgMTk1LCA4LCA2LCAxLCAKKyAgICAyMDAsIDEyMywgOCwgNiwgMSwgMTk5LCAxNTcsIDQ5LCA1MiwgMTU5LCAyMTMsIDEwNiwgMjA5LCAxNiwgNTEsIDUyLCAxNTksIAorICAgIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMTI4LCAyMjQsIDE3NiwgMjM1LCA3NCwgMjUxLCAyNTEsIDgsIDQsIDEsIDYyLCA4LCA0LCAKKyAgICAxLCAyNTAsIDEwMywgOCwgNCwgMSwgMjQ3LCAyMjMsIDgsIDQsIDEsIDI0MiwgMTUzLCA4LCA0LCAxLCA3MiwgOCwgNCwgMSwgCisgICAgMjM4LCA1LCA4LCA0LCAxLCAyMzYsIDE1NiwgOCwgNCwgMSwgMjM0LCAyNDcsIDgsIDQsIDEsIDcwLCA4LCA0LCAxLCAyMjcsIAorICAgIDI1MSwgOCwgNCwgMSwgMjI3LCAxMTgsIDgsIDQsIDEsIDE1NiwgOCwgNCwgMSwgMjIzLCAyNDMsIDgsIDQsIDEsIDIyMCwgCisgICAgMjE0LCA4LCA0LCAxLCA3NCwgOCwgNCwgMSwgMjE2LCAyMjYsIDgsIDQsIDEsIDIxNCwgMTY3LCA4LCA0LCAxLCAxNDYsIDgsIAorICAgIDQsIDEsIDIxMiwgMTIyLCA4LCA0LCAxLCAyMDcsIDgzLCA4LCA0LCAxLCA2NiwgOCwgNCwgMSwgMjAzLCAxNjgsIDgsIDQsIAorICAgIDEsIDIwMSwgMTQ3LCA4LCA0LCAxLCAyMDAsIDE5NSwgOCwgNCwgMSwgMjAwLCAxMjMsIDgsIDQsIDEsIDE5OSwgMTU3LCA0OSwgCisgICAgMjQyLCAxOTYsIDE1OSwgODMsIDIyNCwgMTc2LCA1MSwgMjQyLCAxOTYsIDE1OSwgMjA1LCAyNDAsIDIxOCwgMjQwLCAyMDgsIAorICAgIDI0NCwgMjI4LCA1MCwgMjM4LCA0MywgODEsIDI0NywgNTgsIDU0LCAyMTUsIDU2LCA1NCwgMjQyLCAxOTUsIDU0LCAyMDAsIAorICAgIDQyLCA1NCwgMjQ4LCA0NiwgMTQ4LCAyMTEsIDE5MywgNTQsIDI0MSwgNzQsIDI0MywgMTksIDU0LCAyMzcsIDEyOCwgMjE3LCAKKyAgICAyOSwgMjI4LCA5OSwgMjI1LCAyMywgNTMsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMTgsIDIxNSwgNTQsIDIwOSwgMjMsIAorICAgIDIzMywgMzMsIDIxMywgMTYxLCA1NCwgMjIyLCAyMjgsIDI0MSwgMTU1LCA1NCwgMjE1LCAxMTIsIDU0LCAyMDcsIDIxMywgCisgICAgMTA1LCAyMDcsIDIxMywgMTQ3LCAyNTEsIDIzOSwgMjUxLCAyNTEsIDIyMSwgMjA5LCA1NCwgMjE1LCAxNjMsIDU0LCAxMDEsIAorICAgIDI0MCwgMTgyLCAyNDcsIDY5LCAyMDcsIDIxMywgMTAyLCAyMjIsIDEzNiwgMjE3LCAyOSwgMjI4LCA5OSwgMjEzLCA0MSwgCisgICAgNTMsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMjAxLCAxNjQsIAorICAgIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMjI4LCA1MCwgMjE0LCAKKyAgICA3OSwgODEsIDgsIDYsIDEsIDM1LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMTY5LCA4LCA2LCAxLCAzNSwgMywgCisgICAgMjQ2LCAxNDYsIDgsIDYsIDEsIDM1LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMzUsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDM1LCAKKyAgICAzLCAyMTMsIDI3LCA1NiwgOCwgNiwgMSwgMjUxLCAyMjEsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDY5LCA4LCA2LCAKKyAgICAxLCAxOTcsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgMywgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ2LCA4LCAKKyAgICA2LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDIzMywgMTksIDMsIAorICAgIDE2OSwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIzMywgMTksIDMsIDI0MSwgNzQsIDgsIDYsIAorICAgIDEsIDIzOCwgNzQsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMTYzLCAzLCAyMzUsIDczLCA4LCAKKyAgICA2LCAxLCAxNjMsIDMsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MCwgCisgICAgOCwgNiwgMSwgMTYzLCAzLCAyNDEsIDc0LCAyMjEsIDE5LCA1NCwgOCwgNiwgMSwgMTYzLCAzLCA5NywgOCwgNiwgMSwgMTA4LCAKKyAgICAzLCAyMzUsIDczLCA4LCA2LCAxLCAxMDgsIDMsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgCisgICAgMTA4LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMTY5LCA4LCA2LCAxLCAyMDYsIDU0LCA4LCA0LCAxLCAKKyAgICAyMTAsIDc5LCAyMTIsIDEyMiwgOCwgNCwgMSwgMzUsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAzLCAxNjksIDgsIDQsIDEsIAorICAgIDM1LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMzUsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgMjQxLCA3NCwgOCwgNCwgCisgICAgMSwgMzUsIDMsIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAyNTEsIDIyMSwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgNjksIAorICAgIDgsIDQsIDEsIDE5NywgMywgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAKKyAgICAxNDYsIDgsIDQsIDEsIDE5NywgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjM1LCA3MywgOCwgNCwgMSwgCisgICAgMjMzLCAxOSwgMywgMTY5LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQxLCAKKyAgICA3NCwgOCwgNCwgMSwgMjM4LCA3NCwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAxNjMsIAorICAgIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDI0MCwgMjM1LCA1NCwgOCwgNCwgMSwgMTYzLCAzLCA5NywgCisgICAgOCwgNCwgMSwgMTA4LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxMDgsIDMsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyNDYsIAorICAgIDE0NiwgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMTY5LCA4LCA0LCAxLCAyMDYsIAorICAgIDU0LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMzUsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAzNSwgCisgICAgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1NywgOCwgNiwgMSwgCisgICAgMzUsIDMsIDIxNywgMTEwLCA4LCA0LCAxLCAzNSwgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAxNjksIDgsIAorICAgIDQsIDEsIDI0NywgMjI0LCAzLCAxNjksIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjQ3LCAKKyAgICAyMjQsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgNzMsIAorICAgIDU2LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDEyNSwgOCwgNiwgCisgICAgMSwgMjQyLCAxNTQsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCA5NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDk3LCA4LCA2LCAxLCAxOTcsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAxOTcsIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAxOTcsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjQ4LCA1NywgOCwgCisgICAgNiwgMSwgMTk3LCAzLCA3MywgNTYsIDgsIDQsIDEsIDE5NywgMywgNzMsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDIxNywgMTEwLCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAxOTcsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxOTcsIDMsIAorICAgIDI0NywgMTI1LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDYsIDE0NiwgCisgICAgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAKKyAgICAyMzYsIDE1NywgMywgNzMsIDU2LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgNzMsIDU2LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgCisgICAgMjQ3LCA2OSwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAyNDYsIDE0NiwgCisgICAgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgOTcsIDgsIDQsIDEsIDIzNCwgCisgICAgMjQ4LCAzLCA5NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIwNSwgMjQwLCAKKyAgICA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDgsIDYsIDEsIAorICAgIDIzMywgMTksIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0OCwgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIAorICAgIDIxNywgMTEwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMjMzLCAxOSwgMywgNzMsIDU2LCA4LCAKKyAgICA0LCAxLCAyNDAsIDE4MSwgNzAsIDgsIDYsIDMzLCAyMjgsIDE0OSwgOCwgNCwgMzMsIDIyOCwgMTQ5LCA4LCA2LCAxLCAyMjcsIAorICAgIDI1MiwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIAorICAgIDI0NywgNjksIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMjYsIDM3LCA4LCA2LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTY5LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMTY5LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjQ3LCA2OSwgOCwgCisgICAgNCwgMSwgMjI1LCAxOTMsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMTAxLCAyNDAsIDE4MiwgOCwgNCwgMSwgMjI1LCAxOTMsIAorICAgIDMsIDEwMSwgMjQwLCAxODIsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA5NywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDk3LCA4LCAKKyAgICA2LCAxLCAyMjAsIDIxNSwgMywgMTY5LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMTY5LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgCisgICAgMjQ3LCA2OSwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyNDcsIDEyNSwgCisgICAgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMjAsIDIxNSwgMjE1LCAzMCwgMjQ3LCAyMzUsIAorICAgIDI1MSwgMTMsIDgsIDYsIDEsIDIzOCwgMTY1LCA4LCA0LCAxLCAyMzgsIDE2NSwgOCwgNiwgMSwgMTYzLCAzLCAyMjIsIDIyOCwgCisgICAgOCwgNCwgMSwgMTYzLCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMTYzLCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDI0OCwgNTcsIDgsIDYsIDEsIDE2MywgMywgNTMsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCA1MywgMTY5LCA4LCA2LCAzMywgCisgICAgMjE3LCAxMjEsIDgsIDQsIDMzLCAyMTcsIDEyMSwgOCwgNiwgMSwgMjE0LCAzMywgMywgMTY5LCA4LCA0LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAxNjksIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDI0NywgNjksIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDI0NywgNjksIDgsIDYsIAorICAgIDEsIDIxNCwgMzMsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjEyLCAKKyAgICAxMjMsIDMsIDE2OSwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDE2OSwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgMTQ2LCAKKyAgICA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAKKyAgICAyMTIsIDEyMywgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMTIsIDEyMywgCisgICAgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NywgNjksIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0NywgNjksIAorICAgIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgCisgICAgMjA3LCA4NCwgMywgOTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDk3LCA4LCA2LCAxLCAxMDgsIDMsIDIwNSwgMjQwLCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAxMDgsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgCisgICAgMjI4LCA4LCA2LCAxLCAxMDgsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjQ4LCA1NywgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMTA4LCAzLCAyMTMsIDI3LCA1NiwgOCwgNiwgMSwgMTA4LCAzLCA1MywgMTY5LCA4LCAKKyAgICA0LCAxLCAxMDgsIDMsIDUzLCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjE3LCAxMTAsIDgsIDQsIDEsIDEwOCwgMywgMjE3LCAKKyAgICAxMTAsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDI0NiwgMTQ2LCA4LCAKKyAgICA2LCAxLCAyMDAsIDEyNCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgCisgICAgMjAwLCAxMjQsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAxNjksIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAKKyAgICAxNjksIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTYsIDgsIDYsIDEsIAorICAgIDE5OSwgMTU4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxNjgsIDIxMiwgCisgICAgMTIyLCA4LCA0LCAxLCA2OCwgMywgOTcsIDgsIDYsIDEsIDY4LCAzLCAxMTcsIDgsIDYsIDEsIDY4LCAzLCAyMDUsIDE1NSwgCisgICAgOCwgNCwgMSwgNjgsIDMsIDIwNSwgMTU1LCA4LCA2LCAxLCAxNTAsIDE4NywgOCwgNCwgMSwgMTUwLCAxODcsIDgsIDYsIDEsIAorICAgIDE3NiwgNzQsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAxMTcsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAxMTcsIDgsIDYsIDEsIAorICAgIDI1MSwgMTk2LCAyNDIsIDE1MywgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDExNywgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDIwNSwgCisgICAgMTU1LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjA1LCAxNTUsIDgsIDQsIDEsIDIwNCwgMTg1LCAyNDEsIDEzNiwgOCwgNiwgCisgICAgMSwgMjEzLCAxMDUsIDcyLCA4LCA2LCAxLCAyMTEsIDIxOCwgOCwgNiwgMSwgMTc2LCA3MiwgOCwgNiwgMSwgMjM4LCA2LCAzLCAKKyAgICAxMTcsIDgsIDQsIDEsIDIzOCwgNiwgMywgMTE3LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMTE3LCA4LCA2LCAxLCAyMzYsIAorICAgIDYwLCA4LCA0LCAxLCAyMzMsIDY5LCA4LCA2LCAxLCAyMjgsIDQxLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCA5NywgOCwgNiwgMSwgCisgICAgMjI3LCAxMTksIDMsIDExNywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDExNywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDE0OCwgCisgICAgOCwgNCwgMSwgMjI1LCA4OSwgMywgOTcsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMjMsIDI0MywgOCwgNiwgMSwgMjIwLCAyMTUsIAorICAgIDMsIDQ5LCAxMTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAxNjgsIDUxLCAyMjUsIDE2LCA4LCA2LCAxLCAxNjMsIDMsIDEwMSwgCisgICAgMjA1LCAyNDAsIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjQsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjQsIDgsIDYsIDEsIAorICAgIDIxNywgMTA1LCA4LCA0LCAxLCAyMTcsIDEwNSwgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDExNywgOCwgNCwgMSwgMjE2LCAKKyAgICAyMjcsIDMsIDExNywgOCwgMSwgMTk5LCAyMTQsIDgsIDYsIDEsIDE1MCwgMTA1LCA4LCA0LCAxLCAxNTAsIDEwNSwgOCwgNiwgCisgICAgMSwgMjM4LCA5NCwgOCwgMSwgMjEzLCAxMDUsIDIzOCwgOTUsIDIyNCwgNzQsIDgsIDQsIDEsIDIwNywgODQsIDMsIDIxNiwgCisgICAgMTg0LCAxMTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDExNywgOCwgNCwgMSwgMjA3LCA4NCwgMywgMTE3LCA4LCA2LCAxLCAKKyAgICAyMDcsIDg0LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI0LCA4LCA0LCAxLCAxMDgsIDMsIAorICAgIDIzMywgMTI0LCA4LCA2LCAxLCAyMDMsIDIyMCwgOCwgNiwgMSwgMjAzLCAxNjksIDMsIDExNywgOCwgNiwgMSwgMjAwLCAKKyAgICAxMjQsIDMsIDExNywgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDExNywgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDk3LCA4LCA0LCAKKyAgICAxLCAxOTksIDE1OCwgMywgOTcsIDgsIDYsIDEsIDIzOCwgOCwgOCwgNiwgMSwgMjM4LCA5LCAyMTMsIDEwNCwgOCwgNCwgMSwgCisgICAgMjM4LCA5LCAyMTMsIDEwNCwgOCwgNCwgMSwgMjM4LCA5LCAzLCAyMDcsIDYsIDgsIDEsIDEyMCwgMywgOTcsIDgsIDYsIDEsIAorICAgIDE1MCwgMTY0LCA4LCA0LCAxLCAxNTAsIDE2NCwgOCwgMSwgMjI4LCA1MCwgMjM1LCAxMjMsIDIwOCwgNzcsIDMsIDk3LCA4LCAKKyAgICAxLCAyMDAsIDE5OCwgOCwgMSwgMjQxLCAxMjksIDI0NiwgMTIxLCA4LCAxLCAyMjUsIDYxLCAyNDYsIDEyMSwgOCwgMSwgCisgICAgMjUxLCAxMDIsIDI0NiwgMTIxLCA4LCAxLCAyMTMsIDExMSwgMjQ2LCAxMjEsIDgsIDYsIDEsIDIzOSwgOTUsIDMsIDI0NywgCisgICAgMTI1LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgNCwgMSwgMTk5LCAxNTgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzksIDk1LCAKKyAgICAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjI0LCAxNDIsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA0LCAxLCAyMjcsIDI1MSwgOCwgCisgICAgNCwgMSwgMjI0LCAxNDIsIDgsIDYsIDEsIDIxOSwgOTksIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCA0LCAxLCAyMjcsIDI1MSwgCisgICAgOCwgNCwgMSwgMjE5LCA5OSwgOCwgNiwgMSwgMzUsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAzNSwgMywgMjQ3LCAxMjUsIDgsIAorICAgIDYsIDEsIDIzMywgMTksIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTYzLCAKKyAgICAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTYzLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTA4LCAzLCAyNDcsIDEyNSwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAxNjksIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjQ3LCAxMjUsIDgsIAorICAgIDQsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDI0NywgMTI1LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMzUsIAorICAgIDczLCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAyMDQsIDE4NSwgNzIsIDgsIDYsIAorICAgIDEsIDM1LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDM1LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIAorICAgIDgsIDYsIDEsIDM1LCAzLCA3MywgODgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMzUsIDMsIDczLCA4OCwgMjYsIDIyMiwgCisgICAgMjI4LCA4LCA2LCAxLCAyNTEsIDIyMiwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDI1MSwgMjIyLCAzLCAyMjIsIDIyOCwgOCwgCisgICAgNiwgMSwgMjM2LCAxNTcsIDMsIDk3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgOTcsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAKKyAgICAyNDcsIDEyNSwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjQ3LCAxMjUsIAorICAgIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTYzLCAzLCAyMTcsIDExMCwgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMTYzLCAzLCAyMTcsIDExMSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDIxNywgMTExLCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIzOCwgOSwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzOCwgOSwgMywgCisgICAgMjQ3LCAxMjUsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjM5LCA5NCwgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDQsIDEsIDE5OSwgMTU3LCA4LCA0LCAxLCAyMzksIDk0LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMTY5LCA4LCAKKyAgICA0LCAxLCAyMzYsIDE1NywgMywgMTY5LCA4LCA2LCAxLCAyMzMsIDY2LCA4LCA2LCAxLCAyMDAsIDE5OCwgOCwgNiwgMSwgCisgICAgMjIwLCAyMTUsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMjEzLCAKKyAgICAyNywgODgsIDI2LCAxNjksIDgsIDQsIDEsIDM1LCAzLCAyMTMsIDI3LCA4OCwgMjYsIDE2OSwgOCwgNiwgMSwgMjUxLCAyMjIsIAorICAgIDMsIDE2OSwgOCwgNCwgMSwgMjUxLCAyMjIsIDMsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyMDgsIDQ3LCAyNiwgMTY5LCA4LCAKKyAgICA0LCAxLCAxNjMsIDMsIDIwOCwgNDcsIDI2LCAxNjksIDgsIDYsIDEsIDM1LCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMzUsIAorICAgIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMzUsIDMsIDIyOCwgCisgICAgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDE5NywgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgNTMsIDIzNSwgNzMsIAorICAgIDgsIDYsIDEsIDE5NywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCAKKyAgICA2LCAxLCAyMzMsIDE5LCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxOSwgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIAorICAgIDIzMywgMTksIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIAorICAgIDYsIDEsIDE2MywgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMTYzLCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAKKyAgICA1MywgMjM1LCA3MywgOCwgNCwgMSwgMjE0LCAzMywgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIyOCwgCisgICAgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDEwOCwgMywgNTMsIAorICAgIDIzNSwgNzMsIDgsIDQsIDEsIDEwOCwgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDEwOCwgMywgMjI4LCA1MCwgMjQ4LCA1NywgCisgICAgOCwgNCwgMSwgMTA4LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ2LCA3MSwgNTcsIDgsIAorICAgIDQsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDcxLCA1NywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQ2LCA3MSwgNTcsIDgsIDQsIAorICAgIDEsIDIwNywgODQsIDMsIDI0NiwgNzEsIDU3LCA4LCA2LCAxLCAxOTksIDIzMiwgOCwgNCwgMSwgMTk5LCAyMzIsIDgsIDYsIAorICAgIDEsIDIzNCwgMjQ4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjAsIAorICAgIDIxNSwgMywgMTY4LCA1MSwgMjI1LCAxNiwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0MiwgMTk4LCA4LCA2LCAxLCAyMTcsIAorICAgIDMsIDgsIDQsIDEsIDIxNywgMywgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDExNywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDExNywgCisgICAgOCwgNiwgMSwgMzUsIDMsIDczLCA1NiwgOCwgNCwgMSwgMzUsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyNDcsIDY5LCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDI0NywgNjksIDgsIDYsIDEsIDE2MywgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAKKyAgICAxLCAxNjMsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDIyMiwgCisgICAgMjI4LCA4LCA0LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDE2MywgMywgNzMsIDU2LCA4LCAKKyAgICA0LCAxLCAxNjMsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTYzLCAzLCA3MywgODgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMTYzLCAzLCA3MywgODgsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAyMDAsIDEyNCwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjIwLCAyMTUsIAorICAgIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjQwLCAxODEsIDIyNywgMjUxLCAKKyAgICA4LCA0LCAxLCAyNDEsIDIzMCwgMjQxLCAzNCwgOCwgNCwgMSwgMjE0LCA5OCwgMjQxLCAzNCwgOCwgNiwgMSwgMzUsIDMsIAorICAgIDk3LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgOTcsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCA5NywgOCwgNiwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDE0OCwgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyMDcsIAorICAgIDE4MywgMjA3LCA2LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjA3LCAxODMsIDIwNywgNiwgOCwgNiwgMSwgMjM1LCAxMjMsIAorICAgIDIwOCwgNzYsIDgsIDQsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA4LCA2LCAxLCA2OCwgMywgOTcsIDgsIDYsIDEsIDEwOCwgCisgICAgMTQ4LCA4LCA2LCAxLCAyMDQsIDE4NSwgMjAzLCAxNjgsIDgsIDYsIDEsIDE5NywgMywgOTcsIDgsIDQsIDEsIDE5NywgMywgCisgICAgOTcsIDgsIDYsIDEsIDIyNywgMjUyLCAzLCA5NywgOCwgNCwgMSwgMjI3LCAyNTIsIDMsIDk3LCA4LCA2LCAxLCA0LCAyMTQsIAorICAgIDE2OCwgMywgMjMzLCAxODcsIDIwNywgNiwgOCwgNCwgMSwgMjE0LCAxNjgsIDMsIDIzMywgMTg3LCAyMDcsIDYsIDgsIDYsIAorICAgIDEsIDIxNCwgMzMsIDMsIDk3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCA5NywgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDk3LCA4LCAKKyAgICA0LCAxLCAyMDAsIDEyNCwgMywgOTcsIDgsIDQsIDEsIDIwNCwgMTg1LCA2MiwgOCwgNCwgMSwgMjUxLCAxMTIsIDgsIDQsIDEsIAorICAgIDIwNCwgMTg1LCAyNTEsIDExMiwgOCwgNCwgMSwgNjgsIDMsIDExNywgOCwgNCwgMSwgMTc2LCA3NCwgOCwgNCwgMSwgMjQ3LCAKKyAgICAyMjQsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjA3LCA2LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgCisgICAgMTE3LCA4LCA0LCAxLCAyMTMsIDEwNSwgNzIsIDgsIDQsIDEsIDIxMSwgMjE4LCA4LCA0LCAxLCAyMTEsIDIxOSwgMywgMTE3LCAKKyAgICA4LCA0LCAxLCAxNzYsIDcyLCA4LCA0LCAxLCAyMTMsIDEwNSwgMTc2LCA3MiwgOCwgNCwgMSwgMjEzLCAxMDUsIDE3NiwgCisgICAgMTk3LCAzLCAxMTcsIDgsIDQsIDEsIDI0NiwgMTEwLCAyMTMsIDEwNSwgMTc2LCA3MiwgOCwgNCwgMSwgMjQwLCAxODEsIAorICAgIDIyNywgMjUyLCAzLCA5NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDExNywgOCwgNCwgMSwgMTM1LCAyMzYsIDE1NiwgOCwgMSwgCisgICAgNCwgNiwgMjM2LCAxNTYsIDgsIDQsIDEsIDIzNiwgNjAsIDgsIDQsIDEsIDIxMywgMjE0LCAyMzMsIDEyNCwgOCwgNCwgMSwgCisgICAgMjA0LCAxODUsIDIzNCwgMjQ3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMTE3LCA4LCA0LCAxLCAyMzQsIDEwNCwgMywgMTE3LCAKKyAgICA4LCA0LCAxLCAyMzMsIDE5LCAzLCA5NywgOCwgNCwgMSwgMjI4LCA0MSwgOCwgMSwgNCwgNiwgNzAsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjQ4LCAyMjYsIDgsIDQsIDEsIDIyNSwgMTkzLCAKKyAgICAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMjQsIDIyNiwgOCwgNCwgMSwgMjA0LCAxODUsIDIyMywgMjQzLCA4LCA0LCAKKyAgICAxLCAyMDQsIDE4NSwgMjIzLCAyNDQsIDMsIDE2OCwgMjI1LCAxNiwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDExNywgOCwgNCwgCisgICAgMSwgMjIwLCAyMTUsIDMsIDQ5LCAxMTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMTMsIDExMSwgMTE3LCA4LCAxLCA0LCA2LCAKKyAgICAyMjAsIDIxNCwgOCwgNCwgMSwgMjQ5LCA3MSwgNzQsIDgsIDEsIDQsIDYsIDIxNywgMTIxLCA4LCA0LCAxLCAyNDYsIDExMCwgCisgICAgMjE3LCA4MywgOCwgNCwgMSwgMjE1LCAyMjksIDgsIDQsIDEsIDIwNCwgMTg1LCAxNDYsIDgsIDQsIDEsIDIwNCwgMTg1LCAKKyAgICAyMTQsIDMzLCAzLCAxNjgsIDIyNSwgMTYsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMTQsIDMzLCAzLCAxMTcsIDgsIDQsIDEsIAorICAgIDIxNCwgMzMsIDMsIDE2OCwgMjI1LCAxNiwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjA3LCA2LCA4LCA0LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAyMzcsIDY4LCA4LCA0LCAxLCAyMTMsIDEwNSwgMjE0LCAzMywgMywgMjM3LCA2OCwgOCwgMSwgNCwgNiwgMTQ2LCA4LCAKKyAgICAxLCA0LCA2LCAyMjgsIDUwLCAxNDYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAxMTcsIDgsIDQsIDEsIDIzOCwgOTQsIDgsIDQsIAorICAgIDEsIDI0MCwgMTgxLCAyMjcsIDI1MiwgMywgMjA4LCA0NywgMjYsIDExNywgOCwgNCwgMSwgMjA4LCAxOTAsIDIxMywgMTA1LCAKKyAgICAyMzgsIDk0LCA4LCA0LCAxLCAyMzgsIDk1LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjA0LCAxODUsIDIwNywgODMsIDgsIDQsIAorICAgIDEsIDIwNywgODQsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDEwOCwgMTQ4LCA4LCA0LCAxLCAyMDMsIDIyMCwgOCwgNCwgCisgICAgMSwgMjAzLCAxNjksIDMsIDExNywgOCwgNCwgMSwgMjA0LCAxODUsIDIwMywgMTY4LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAxLCAKKyAgICAxNDcsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDAsIDEyMywgOCwgMSwgNCwgNiwgMjAwLCAxMjMsIDgsIDQsIDEsIDE5OSwgCisgICAgMTU4LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIzOCwgOCwgCisgICAgOCwgNCwgMSwgMjM4LCA5LCAzLCAyNDIsIDE5OCwgOCwgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDgsIDEsIDIxNSwgMjM2LCAKKyAgICAyMDIsIDE4OSwgMjM2LCAyMDcsIDgsIDEsIDIyOCwgNTAsIDIzNSwgMTIzLCAyMDgsIDc2LCA4LCAxLCAyMDgsIDU1LCAyNDcsIAorICAgIDIyMywgOCwgMSwgMjQ4LCAxNzIsIDI0NiwgMTIxLCA4LCAxLCA0LCA2LCAyNTAsIDEwMywgOCwgNCwgMSwgMjQ2LCAxMTAsIAorICAgIDE3NiwgNzIsIDgsIDEsIDQsIDYsIDIzNiwgMTU3LCAzLCAxMTcsIDgsIDEsIDQsIDYsIDIzNCwgMjQ3LCA4LCA0LCAxLCAKKyAgICAyMjcsIDI1MiwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMjcsIDExOCwgOCwgMSwgNCwgNiwgMTU2LCA4LCAKKyAgICA0LCAxLCAyMTQsIDE2OCwgMywgMTE3LCA4LCAxLCAyMzUsIDEyMywgMjA4LCA3NywgMywgOTcsIDgsIDEsIDIxMywgMTA1LCAKKyAgICAyMzUsIDEyMywgMjA4LCA3NywgMywgOTcsIDgsIDQsIDEsIDIzOSwgOTUsIDI0MSwgMzQsIDgsIDQsIDEsIDI0MSwgMTAyLCAKKyAgICAyNDEsIDM0LCA4LCA0LCAxLCAyMzksIDk1LCAyNDEsIDM1LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjA1LCAzNCwgMjQxLCAKKyAgICAzNCwgOCwgNCwgMSwgMjA2LCAxNTEsIDI0MSwgMzQsIDgsIDQsIDEsIDIwNiwgMjA4LCAyNDEsIDM1LCAzLCAyNDIsIDE5OCwgCisgICAgOCwgNCwgMSwgMjM3LCAxMjUsIDI0MSwgMzQsIDgsIDQsIDEsIDIyNCwgNDQsIDI0MSwgMzQsIDgsIDQsIDEsIDIyMywgMjQ1LCAKKyAgICAyNDEsIDM0LCA4LCAxLCAyNDgsIDE3MiwgMjE2LCAyNiwgOCwgMSwgMjQ4LCAxODAsIDIxNiwgMjYsIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAyMzQsIDI0OCwgMywgMjM3LCA2OCwgOCwgNCwgMSwgMjA0LCAxODUsIDIzNCwgMjQ4LCAzLCAyMzcsIDY5LCAyNiwgCisgICAgMjA3LCA2LCA2NywgMSwgNCwgMjM0LCAyNDcsIDY3LCAxLCA0LCAyMzQsIDI0OCwgMywgMTE3LCA2NywgMSwgNCwgMjI3LCAKKyAgICAyNTEsIDY3LCAxLCA0LCAxNDYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMTQ2LCA2NywgMSwgNCwgMjA0LCAxODUsIDIxNCwgMzMsIAorICAgIDMsIDExNywgNjcsIDEsIDQsIDYsIDIyOCwgNTAsIDE0NiwgNjcsIDEsIDQsIDIwMSwgMTQ3LCA2NywgMSwgNCwgMjAwLCAKKyAgICAxMjMsIDY3LCAxLCAyMTUsIDE0LCA2NywgMSwgNTMsIDIxNSwgMTQsIDY3LCAxLCAyMDQsIDE4NSwgMjQ2LCA3MCwgNjcsIDEsIAorICAgIDI1MSwgMTMsIDY3LCAxLCAyMTMsIDEwNSwgMjQ2LCA3MCwgNjcsIDEsIDUxLCAxNjcsIDIxMywgMjYsIDY3LCAxLCA0OSwgCisgICAgMTY3LCAyMTMsIDI2LCA2NywgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDY3LCAxLCAyMTMsIDEwNSwgMjM1LCAxMjMsIDIwOCwgCisgICAgNzYsIDY3LCAxLCA0OSwgMjUwLCAyMDIsIDY3LCAxLCA1MSwgMjUwLCAyMDIsIDY3LCAxLCAxMTUsIDI1MCwgMjAyLCA2NywgCisgICAgMSwgMTI3LCAyNTAsIDIwMiwgNjcsIDEsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMjQ3LCAxMjUsIDY3LCAxLCA4MywgMjI0LCAKKyAgICAxNzYsIDY3LCAxLCAyMjIsIDIyOCwgNjcsIDEsIDI1MSwgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDIzNSwgNzQsIDI1MSwgCisgICAgMjUxLCA2NywgMSwgMTI4LCA4MywgMjI0LCAxNzYsIDY3LCAxLCAxMjgsIDIyMiwgMjI4LCA2NywgMSwgMTI4LCAyMzUsIDc0LCAKKyAgICAyNTEsIDI1MSwgNjcsIDEsIDEyOCwgMjUxLCAyMzksIDI1MSwgMjUxLCA2NywgMSwgMjA1LCA5NSwgMjQ2LCA3OSwgNjcsIDEsIAorICAgIDE2NywgMjA1LCA5NSwgMjQ2LCA3OSwgNjcsIDEsIDI0NywgNTQsIDUxLCAxNjcsIDIxMywgMjYsIDY3LCAxLCAyNDcsIDU0LCAKKyAgICA0OSwgMTY3LCAyMTMsIDI2LCA2NywgMSwgMTE1LCAyMDcsIDE3LCA2NywgMSwgMTI3LCAyMDcsIDE3LCA2NywgMSwgOTMsIAorICAgIDU0LCA2NywgMSwgMjIxLCAxNTcsIDU0LCAyNDgsIDU3LCA3MywgNTYsIDIxMywgMjcsIDU2LCAyMTcsIDExMCwgNCwgMjA1LCAKKyAgICAyNDAsIDUzLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAyMTMsIDg5LCAxMTcsIDY3LCAxLCAyNDIsIDIzNSwgMjUxLCAKKyAgICAyNTEsIDY3LCAxLCA0LCAyMzYsIDYwLCA2NywgMSwgNCwgMTU2LCA2NywgMSwgNCwgMjEyLCAxMjIsIDY3LCAxLCA0LCAyMDAsIAorICAgIDE5NSwgNjcsIDEsIDQsIDIxMywgMTA1LCAyMzUsIDEyMywgMjA4LCA3NiwgNjcsIDEsIDIzOCwgMjksIDE1MCwgMTQ4LCA2NywgCisgICAgMSwgMTIyLCAxNTAsIDE0OCwgNjcsIDEsIDIyMSwgMjA2LCAxNTAsIDE0OCwgNjcsIDEsIDEyOCwgMTUwLCAxNDgsIDY3LCAxLCAKKyAgICAyMzgsIDI4LCAxNTAsIDE0OCwgNjcsIDEsIDE5OSwgMjU1LCAyNDEsIDEyNiwgMTUwLCA4MSwgNjcsIDEsIDIwMCwgNzYsIAorICAgIDI0MSwgMTI2LCAxNTAsIDgxLCA2NywgMSwgMjAyLCAxODcsIDY3LCAxLCAyMDQsIDEsIDY3LCAxLCA1MywgMjUxLCAxMywgCisgICAgNjcsIDEsIDEyOCwgMTI3LCAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgMTE1LCAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgNDksIAorICAgIDI1MCwgMjAyLCA2NywgMSwgMTI4LCA1MSwgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDIxMywgMjYsIDY3LCAxLCAxMDEsIDIzNSwgCisgICAgNzQsIDI1MSwgMjUxLCA2NywgMSwgMTAxLCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIDY3LCAxLCAxMDEsIDUzLCAyNTEsIAorICAgIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAxMjgsIDIwNSwgMjQwLCA2NywgMSwgMjEzLCAyMjAsIDI0NiwgNzksIDY3LCAxLCAKKyAgICAyNDgsIDI0NCwgMTIyLCAyMDUsIDE3NCwgNjcsIDEsIDIzOCwgMTcxLCAxMjIsIDIwNSwgMTc0LCA2NywgMSwgMjQ4LCAyNDQsIAorICAgIDEyOCwgMjA1LCAxNzQsIDY3LCAxLCAyMzgsIDE3MSwgMTI4LCAyMDUsIDE3NCwgNjcsIDEsIDIxMCwgNTYsIDY3LCAxLCAKKyAgICAxNzYsIDIxMCwgNTYsIDY3LCAxLCAxMjgsIDQ5LCA0OCwgMzgsIDIzNSwgNzQsIDI1MSwgMjUxLCAzOCwgMjUxLCAyMzksIAorICAgIDI1MSwgMjUxLCAzOCwgMjQ2LCAxNDcsIDI1MSwgMjUxLCAzOCwgMjA1LCAyNDAsIDM4LCAyMjIsIDIyOCwgMzgsIDIxNiwgCisgICAgMjQxLCAzOCwgMjQ4LCA1NywgMzgsIDczLCA1NiwgMzgsIDI0MSwgNzQsIDM4LCAyMzMsIDE4NywgNTYsIDM4LCAyMTMsIDI3LCAKKyAgICA1NiwgMzgsIDUzLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDM4LCAyNDcsIDEyNSwgMzgsIDgzLCAyMjQsIDE3NywgNTYsIDM4LCAKKyAgICA1MywgODMsIDIyNCwgMTc3LCA1NiwgMzgsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgMzgsIDI0NywgMTQ5LCAzOCwgMjI4LCAKKyAgICA1MCwgMjQ4LCA1NywgMzgsIDIwNCwgMTg1LCAyNDYsIDcxLCA1NiwgMzgsIDI0NiwgNzEsIDU2LCAzOCwgMjEzLCAxMDUsIAorICAgIDI0NiwgNzEsIDU2LCAzOCwgMjQ2LCA3MSwgODgsIDIxMywgNDYsIDM4LCAyMzUsIDc0LCAyNTEsIDI1MiwgNTcsIDM4LCAKKyAgICAyNTEsIDIzOSwgMjUxLCAyNTIsIDU3LCAzOCwgNDksIDIwNywgMTgsIDU3LCAzOCwgNTEsIDIwNywgMTgsIDU3LCAzOCwgNDksIAorICAgIDI1MSwgNzEsIDU2LCAzOCwgMjMzLCAxMjQsIDM4LCA0OSwgMTY3LCAyMTMsIDI3LCA1NywgMzgsIDExNSwgMjA3LCAxOCwgCisgICAgNTcsIDM4LCAxMjcsIDIwNywgMTgsIDU3LCAzOCwgOTMsIDIsIDU3LCAzOCwgMjIxLCAxNTcsIDIsIDU3LCAzOCwgMjE2LCAKKyAgICAxODIsIDIzMywgMTg3LCA1NywgMzgsIDIxMywgMTExLCAyMzMsIDE4NywgNTcsIDM4LCA3MywgNTcsIDM4LCAyNDEsIDc1LCAKKyAgICA1NywgMzgsIDIxMywgMjcsIDU3LCAzOCwgMjQ2LCA3MSwgNTcsIDM4LCAyNDcsIDY5LCAzOCwgMjE3LCAxMTAsIDM4LCA4MywgCisgICAgMjI0LCAxNzcsIDU3LCAzOCwgMjQ4LCA1MSwgNTcsIDM4LCAyMjgsIDUwLCA1MywgMjUwLCAyMzUsIDU3LCAzOCwgMjQ3LCAKKyAgICAxMjYsIDU3LCAzOCwgMjQ2LCAxNDcsIDI1MSwgMjUyLCA1NywgMzgsIDI0OCwgNTgsIDU3LCAzOCwgMjI4LCA1MCwgMjQ4LCAKKyAgICA1OCwgNTcsIDM4LCAyMDUsIDI0MSwgNTcsIDM4LCAyMjIsIDIyOSwgNTcsIDM4LCAxMjgsIDIyNCwgMTc2LCAzOCwgNTMsIAorICAgIDEyOCwgMjI0LCAxNzYsIDM4LCAyMDUsIDI0MSwgMjE2LCAyNDIsIDM4LCAyMDksIDI1MCwgMjA4LCA0NywgMjE2LCAyNDIsIAorICAgIDM4LCAxNjgsIDIwOCwgNDcsIDIxNiwgMjQyLCAzOCwgMjA5LCAyNTAsIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgMTY4LCAKKyAgICAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDUxLCAxNjcsIDIxMywgMjcsIDU3LCAzOCwgMjI4LCA1MCwgMjQ4LCA1MSwgNTcsIAorICAgIDM4LCA1MiwgNTcsIDM4LCAyMTEsIDIwMSwgNTcsIDM4LCAyMDAsIDE5NiwgNTYsIDM4LCA4MywgMjA1LCAyNDAsIDM4LCA1MywgCisgICAgMjE2LCAyNDEsIDM4LCAyMzUsIDc0LCAxNTAsIDgxLCAzOCwgMjUxLCAyMzksIDE1MCwgODEsIDM4LCAzMSwgMjE2LCAyMCwgCisgICAgMzgsIDMxLCAyMjYsIDU4LCAzOCwgMzEsIDI0MSwgNjgsIDIwNSwgMTYyLCAzOCwgMzEsIDE5OSwgMjE5LCAzOCwgMjQ4LCAKKyAgICA1MSwgNTYsIDM4LCAyMzgsIDEyMiwgMiwgNTcsIDM4LCA1MywgODMsIDIyNCwgMTc3LCA1NywgMzgsIDQ5LCAyNTEsIDcxLCAKKyAgICA1NywgMzgsIDIxOCwgMjE1LCAyMDUsIDI0MSwgNTYsIDM4LCAyMzMsIDE5MywgNTYsIDM4LCAyNTEsIDExNywgMTYwLCAyMDUsIAorICAgIDE4NiwgNTYsIDM4LCA0OSwgNTEsIDU1LCA1NywgMzgsIDE4MiwgNTUsIDU3LCAzOCwgMjM1LCA4MCwgMjI3LCAxNjEsIDM4LCAKKyAgICA1MSwgMjUwLCAyMDMsIDU2LCAzOCwgNDksIDE2NywgMjEzLCAyNywgNTYsIDM4LCAyMzcsIDEyMiwgMzgsIDIwMCwgMTk2LCAKKyAgICA1NywgMzgsIDQ5LCAyNTAsIDIwMywgNTcsIDM4LCA1MSwgMjUwLCAyMDMsIDU3LCAzOCwgNTEsIDI1MCwgMjAzLCAyNiwgCisgICAgMTE1LCAyNTAsIDIwMywgNTcsIDM4LCA1MSwgMTY3LCAyMTMsIDI3LCA1NiwgMzgsIDczLCA4OCwgMjEzLCA0NiwgMzgsIAorICAgIDI1MCwgMTY2LCA1NywgMzgsIDUzLCAyMTMsIDI3LCA1NywgMzgsIDE5OSwgMjcsIDU2LCAzOCwgNTMsIDI0OCwgNTgsIDU3LCAKKyAgICAzOCwgNTMsIDI0OCwgNTcsIDM4LCA1MywgMjIyLCAyMjgsIDM4LCA1MywgMjIyLCAyMjksIDU3LCAzOCwgNTMsIDIwNSwgCisgICAgMjQwLCAzOCwgNTMsIDIyOCwgNTAsIDI0OCwgNTcsIDM4LCA1MywgODcsIDU1LCA1NywgMzgsIDgsIDQsIDEsIDYyLCAzOCwgCisgICAgOCwgNCwgMSwgNzIsIDM4LCA4LCA0LCAxLCA3MCwgMzgsIDgsIDQsIDEsIDc0LCAzOCwgOCwgNCwgMSwgNjYsIDM4LCA4LCA0LCAKKyAgICAxLCAyNDcsIDIyMywgMzgsIDgsIDQsIDEsIDI0MiwgMTUzLCAzOCwgOCwgNCwgMSwgMjM0LCAyNDcsIDM4LCA4LCA0LCAxLCAKKyAgICAyMjMsIDI0MywgMzgsIDgsIDQsIDEsIDE0NiwgMzgsIDgsIDQsIDEsIDIwNywgODMsIDM4LCA4LCA0LCAxLCAyMDMsIDE2OCwgCisgICAgMzgsIDgsIDQsIDEsIDIwMCwgMTk1LCAzMSwgNiwgMSwgMjM0LCA5MiwgMzEsIDQsIDEsIDIzNCwgOTIsIDMxLCA2LCAxLCAKKyAgICAyNTAsIDIzNCwgMjEyLCAxNiwgMzEsIDQsIDEsIDI1MCwgMjM0LCAyMTIsIDE2LCAzMSwgMjE4LCA5MywgNTQsIDMxLCAyMjQsIAorICAgIDU0LCAyMTgsIDkzLCA1NCwgMzEsIDYsIDEsIDIxNiwgMTY3LCAyNDEsIDQyLCAzMSwgNCwgMSwgMjE2LCAxNjcsIDI0MSwgCisgICAgNDIsIDMxLCAxOTksIDIxOSwgMzEsIDQsIDIxMywgMTA1LCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA0LCAyMzksIAorICAgIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNCwgMjEzLCAxMDUsIDIzOSwgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgCisgICAgOTksIDMxLCAyMTQsIDc5LCA4MSwgMzEsIDYsIDEsIDE5OSwgMjI1LCAzMSwgMjA1LCAxNjIsIDMxLCAyNDEsIDY4LCAyMDUsIAorICAgIDE2MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMDUsIDE2MiwgMzEsIDI1MSwgNTYsIDIwNiwgMTc3LCAzMSwgNiwgMSwgCisgICAgMjM4LCAxMjUsIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMjgsIDQyLCAKKyAgICAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDIwNSwgCisgICAgMTYyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAyNiwgCisgICAgMjA1LCAxNjIsIDMxLCA2LCAxLCAyNTEsIDExMiwgMzEsIDYsIDEsIDI0OCwgMjA4LCAzMSwgNiwgMSwgMjM2LCA2MCwgMzEsIAorICAgIDYsIDEsIDI0MSwgMTM2LCAzMSwgNiwgMSwgMjM4LCAxMjQsIDMxLCA2LCAxLCAxOTksIDgwLCAzMSwgNiwgMSwgMjM4LCA3OSwgCisgICAgMzEsIDYsIDEsIDIwNiwgODgsIDMxLCA2LCAxLCAyMjgsIDQxLCAzMSwgNiwgMSwgMjI3LCA1NCwgMzEsIDYsIDEsIDIyNSwgCisgICAgODcsIDMxLCA2LCAxLCAyMjEsIDQxLCAzMSwgNiwgMSwgMjE4LCAxMzMsIDMxLCA2LCAxLCAyMDAsIDE2OSwgMzEsIDYsIDEsIAorICAgIDIxNywgODEsIDMxLCA2LCAxLCAyMTUsIDIwNCwgMzEsIDYsIDEsIDIxMywgOTAsIDMxLCA2LCAxLCAyMDksIDE2MywgMzEsIAorICAgIDYsIDEsIDIwNiwgMjIxLCAzMSwgNiwgMSwgMjAzLCAyMjAsIDMxLCA2LCAxLCAyMTUsIDIyOSwgMzEsIDYsIDEsIDI0NiwgCisgICAgMjM2LCAzMSwgNiwgMSwgMjE0LCAyMzUsIDMxLCA2LCAxLCAyMTcsIDgzLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjQxLCAKKyAgICA2NywgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY3LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwNSwgMTYyLCAzMSwgCisgICAgNCwgMSwgMjM4LCAxMjUsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAKKyAgICAyMjgsIDQyLCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY4LCAyNiwgMjA1LCAxNjIsIDMxLCAKKyAgICA0LCAxLCAyNTEsIDExMiwgMzEsIDQsIDEsIDI0OCwgMjA4LCAzMSwgNCwgMSwgMjM2LCA2MCwgMzEsIDQsIDEsIDI0MSwgCisgICAgMTM2LCAzMSwgNCwgMSwgMjM4LCAxMjQsIDMxLCA0LCAxLCAxOTksIDgwLCAzMSwgNCwgMSwgMjM4LCA3OSwgMzEsIDQsIDEsIAorICAgIDIwNiwgODgsIDMxLCA0LCAxLCAyMjgsIDQxLCAzMSwgNCwgMSwgMjI3LCA1NCwgMzEsIDQsIDEsIDIyNSwgODcsIDMxLCA0LCAKKyAgICAxLCAyMjEsIDQxLCAzMSwgNCwgMSwgMjE4LCAxMzMsIDMxLCA0LCAxLCAyMDAsIDE2OSwgMzEsIDQsIDEsIDIxNywgODEsIAorICAgIDMxLCA0LCAxLCAyMTUsIDIwNCwgMzEsIDQsIDEsIDIxMywgOTAsIDMxLCA0LCAxLCA0NywgMjA5LCAxNjMsIDMxLCA0LCAxLCAKKyAgICAyMDksIDE2MywgMzEsIDQsIDEsIDIwNiwgMjIxLCAzMSwgNCwgMSwgMjAzLCAyMjAsIDMxLCA0LCAxLCAyMTUsIDIyOSwgMzEsIAorICAgIDQsIDEsIDI0NiwgMjM2LCAzMSwgNCwgMSwgMjE0LCAyMzUsIDMxLCA0LCAxLCAyMTcsIDgzLCAzMSwgNCwgMSwgMjI4LCA0MiwgCisgICAgMywgMjQxLCA2NywgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY3LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjA1LCAKKyAgICAxNjIsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDE2MiwgMzEsIAorICAgIDYsIDIyNywgODMsIDk5LCAzMSwgMjQ4LCAyMDksIDk5LCAzMSwgMjA2LCA4OSwgOTksIDMxLCAyMDMsIDIyMSwgMywgMjMzLCAKKyAgICAxODcsIDk5LCAzMSwgMjAzLCAyMjEsIDMsIDI1MSwgMjM5LCAyNiwgMjMzLCAxODcsIDk5LCAzMSwgMjAzLCAyMjEsIDMsIAorICAgIDI0MSwgNzUsIDI2LCAyMzMsIDE4NywgOTksIDMxLCAyMTUsIDIzMCwgOTksIDMxLCAyMTUsIDIwNSwgOTksIDMxLCAyMjcsIAorICAgIDgzLCA5OSwgMzEsIDEsIDI1MCwgMjM0LCAyMjYsIDYyLCAzMSwgNCwgMSwgMjUwLCAyMzQsIDIyNiwgNjIsIDMxLCAxLCAKKyAgICAyMDgsIDg2LCAzMSwgNCwgMSwgMjA4LCA4NiwgMzEsIDEsIDI0MSwgNDIsIDMxLCA0LCAxLCAyNDEsIDQyLCAzMSwgMSwgCisgICAgMjI2LCA2MiwgMzEsIDQsIDEsIDIyNiwgNjIsIDMxLCAxLCAyMTIsIDE2LCAzMSwgNCwgMSwgMjEyLCAxNiwgODUsIDYsIDEsIAorICAgIDIxMCwgNTcsIDg1LCA0LCAxLCAyMTAsIDU3LCA4NSwgNiwgMSwgMjM3LCAxMzIsIDg1LCA0LCAxLCAyMzcsIDEzMiwgODUsIAorICAgIDYsIDEsIDIyNiwgMTkwLCA4NSwgNCwgMSwgMjI2LCAxOTAsIDg1LCA2LCAxLCAyMzMsIDE3OCwgODUsIDQsIDEsIDIzMywgCisgICAgMTc4LCA4NSwgNiwgMSwgMjM2LCA1NSwgODUsIDQsIDEsIDIzNiwgNTUsIDg1LCA2LCAxLCAyMTAsIDIzLCA4NSwgNCwgMSwgCisgICAgMjEwLCAyMywgODUsIDYsIDEsIDI0MSwgMTUyLCA4NSwgNCwgMSwgMjQxLCAxNTIsIDMxLCAyMjcsIDU1LCA5OSwgMzEsIAorICAgIDIxMywgOTEsIDk5LCAzMSwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgMSwgMTk5LCAyMjUsIDMxLCA2LCAyMDYsIDg5LCAKKyAgICA5OSwgMzEsIDIyNCwgMjQsIDIzOCwgMTI1LCA5OSwgMzEsIDIxMywgMTA1LCAyMjQsIDI0LCAyMzgsIDEyNSwgOTksIDMxLCAKKyAgICA2LCAxLCAyMTAsIDgsIDMxLCA0LCAxLCAyMTAsIDgsIDMxLCA2LCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA2LCAxLCAKKyAgICAyMTIsIDEzLCAzMSwgNCwgMSwgMjEyLCAxMywgMzEsIDIxMywgOTEsIDMsIDIwOCwgNDcsIDk5LCAzMSwgNiwgMjEzLCAxMDUsIAorICAgIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDYsIDIzOSwgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA2LCAKKyAgICAyMTMsIDEwNSwgMjM5LCAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzcsIDYsIDEsIDIyOCwgMTc5LCAzLCAyMzUsIAorICAgIDczLCAzNywgNiwgMSwgMjI4LCA0NSwgMzcsIDYsIDEsIDI0MCwgMjI4LCAzNywgNiwgMSwgMjM1LCAxMzIsIDM3LCA2LCAxLCAKKyAgICAyMDQsIDE3LCAyMjgsIDE3OCwgMzcsIDYsIDEsIDIzOSwgOTAsIDM3LCA2LCAxLCAyNDcsIDIzMywgNzAsIDM3LCA2LCAxLCAKKyAgICAyMDAsIDksIDM3LCA2LCAxLCAyMjcsIDIyNywgMzcsIDYsIDEsIDIyNCwgMTQxLCAzNywgNiwgMSwgMjE5LCA5MSwgMzcsIDYsIAorICAgIDEsIDIwNSwgMjAsIDM3LCA2LCAxLCAyMjYsIDExMSwgMzcsIDYsIDEsIDIzMywgMTksIDMsIDIzNSwgNzMsIDM3LCA2LCAxLCAKKyAgICAyMDksIDI1MCwgNjYsIDM3LCA2LCAxLCAyMzksIDg2LCAzNywgNiwgMSwgNjIsIDM3LCA2LCAxLCAyNDksIDgsIDM3LCA2LCAKKyAgICAxLCAyMDMsIDU5LCAzNywgNiwgMSwgMjM1LCAxODUsIDM3LCA2LCAxLCAyNDEsIDE3NSwgMzcsIDYsIDEsIDIyOCwgMTc4LCAKKyAgICAzNywgNiwgMSwgMTk5LCA2OCwgMzcsIDYsIDEsIDE5OSwgODksIDM3LCA2LCAxLCA3MCwgMzcsIDYsIDEsIDIwOSwgMjUwLCAKKyAgICA3MCwgMzcsIDYsIDEsIDE2MSwgMzcsIDYsIDEsIDIzOCwgMjA5LCAzNywgNiwgMSwgMjM4LCAxOTAsIDM3LCA2LCAxLCAyMzgsIAorICAgIDE3OSwgMzcsIDYsIDEsIDc0LCAzNywgNiwgMSwgMjE2LCA3MywgMzcsIDYsIDEsIDIzOCwgMTE1LCAzNywgNiwgMSwgMjM4LCAKKyAgICAxMDQsIDM3LCA2LCAxLCAyMDYsIDIwMSwgMzcsIDYsIDEsIDY2LCAzNywgNiwgMSwgMjM4LCAyNDgsIDM3LCA2LCAxLCAxNDQsIAorICAgIDM3LCA2LCAxLCAyMDUsIDI2LCAzNywgNiwgMSwgMjQ3LCA4LCAzNywgNiwgMSwgMjEwLCAxMTQsIDM3LCA2LCAxLCAyMTAsIAorICAgIDY4LCAzNywgNiwgMSwgMjM0LCAxNjUsIDU0LCAzNywgNiwgMSwgMjAwLCAyOSwgMzcsIDYsIDEsIDIwOSwgMjMsIDU0LCAzNywgCisgICAgNiwgMSwgNzIsIDM3LCA2LCAxLCAxOTksIDIxMSwgMzcsIDYsIDEsIDE4MywgMzcsIDQsIDEsIDYyLCAzNywgNCwgMSwgMjQ5LCAKKyAgICA4LCAzNywgNCwgMSwgMjAzLCA1OSwgMzcsIDQsIDEsIDIzNSwgMTg1LCAzNywgNCwgMSwgMjQxLCAxNzUsIDM3LCA0LCAxLCAKKyAgICAyMjgsIDE3OCwgMzcsIDQsIDEsIDE5OSwgNjgsIDM3LCA0LCAxLCAxOTksIDg5LCAzNywgNCwgMSwgNzAsIDM3LCA0LCAxLCAKKyAgICAyMDksIDI1MCwgNzAsIDM3LCA0LCAxLCAxNjEsIDM3LCA0LCAxLCAyMzgsIDIwOSwgMzcsIDQsIDEsIDIzOCwgMTkwLCAzNywgCisgICAgNCwgMSwgMjM4LCAxNzksIDM3LCA0LCAxLCA3NCwgMzcsIDQsIDEsIDIxNiwgNzMsIDM3LCA0LCAxLCAyMzgsIDExNSwgMzcsIAorICAgIDQsIDEsIDIzOCwgMTA0LCAzNywgNCwgMSwgMjA2LCAyMDEsIDM3LCA0LCAxLCA2NiwgMzcsIDQsIDEsIDIzOCwgMjQ4LCAzNywgCisgICAgNCwgMSwgMTQ0LCAzNywgNCwgMSwgMjA1LCAyNiwgMzcsIDQsIDEsIDI0NywgOCwgMzcsIDQsIDEsIDIxMCwgMTE0LCAzNywgCisgICAgNCwgMSwgMjEwLCA2OCwgMzcsIDQsIDEsIDIzNCwgMTY1LCA1NCwgMzcsIDQsIDEsIDIwMCwgMjksIDM3LCA0LCAxLCAyMDksIAorICAgIDIzLCA1NCwgMzcsIDQsIDEsIDcyLCAzNywgNCwgMSwgMTk5LCAyMTEsIDM3LCA0LCAxLCAxODMsIDM3LCA0LCAxLCAyMjgsIAorICAgIDE3OSwgMywgMjM1LCA3MywgMzcsIDQsIDEsIDIyOCwgNDUsIDM3LCA0LCAxLCAyNDAsIDIyOCwgMzcsIDQsIDEsIDIzNSwgCisgICAgMTMyLCAzNywgNCwgMSwgMjA0LCAxNywgMjI4LCAxNzgsIDM3LCA0LCAxLCAyMzksIDkwLCAzNywgNCwgMSwgMjQ3LCAyMzMsIAorICAgIDcwLCAzNywgNCwgMSwgMjAwLCA5LCAzNywgNCwgMSwgMjI3LCAyMjcsIDM3LCA0LCAxLCAyMjQsIDE0MSwgMzcsIDQsIDEsIAorICAgIDIxOSwgOTEsIDM3LCA0LCAxLCAyMDUsIDIwLCAzNywgNCwgMSwgMjI2LCAxMTEsIDM3LCA0LCAxLCAyMzMsIDE5LCAzLCAKKyAgICAyMzUsIDczLCAzNywgNCwgMSwgMjA5LCAyNTAsIDY2LCAzNywgNCwgMSwgMjM5LCA4NiwgMzcsIDYsIDEsIDIxNywgODMsIAorICAgIDM3LCA0LCAxLCAyMTcsIDgzLCAzNywgNiwgMSwgMjAwLCA2NSwgMzcsIDQsIDEsIDIwMCwgNjUsIDM3LCA2LCAxLCAyMjgsIAorICAgIDM5LCA3MiwgMzcsIDQsIDEsIDIyOCwgMzksIDcyLCAzNywgNiwgMSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgCisgICAgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNiwgMSwgMjI4LCAzOSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjI4LCAKKyAgICAzOSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNiwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjQ4LCAxNzUsIAorICAgIDE5OSwgMTgxLCAzNywgNiwgMSwgMjI4LCAzOSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjI4LCAzOSwgMjQ4LCAKKyAgICAxNzUsIDE5OSwgMTgxLCAzNywgNiwgMSwgMjI2LCAzMSwgMzcsIDQsIDEsIDIyNiwgMzEsIDM3LCA2LCAxLCAyMTQsIDIzNSwgCisgICAgMzcsIDQsIDEsIDIxNCwgMjM1LCAzNywgNiwgMSwgMjM3LCA2MywgMzcsIDQsIDEsIDIzNywgNjMsIDM3LCA2LCAxLCAyMjcsIAorICAgIDI1MywgMzcsIDQsIDEsIDIyNywgMjUzLCAzNywgNiwgMSwgMjI3LCAyNTQsIDMsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgCisgICAgMzcsIDQsIDEsIDIyNywgMjU0LCAzLCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIDM3LCA2LCAxLCAyMDQsIDIwLCAzNywgNCwgCisgICAgMSwgMjA0LCAyMCwgMzcsIDYsIDEsIDIxMiwgMjIxLCAyMTcsIDgzLCAzNywgNCwgMSwgMjEyLCAyMjEsIDIxNywgODMsIDM3LCAKKyAgICA2LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDIxMCwgMzcsIDQsIDEsIDIxNywgODQsIDMsIDIwNSwgMjEwLCAzNywgNiwgMSwgCisgICAgMjE3LCAxMSwgMzcsIDQsIDEsIDIxNywgMTEsIDM3LCA2LCAxLCAyMjYsIDYyLCAzNywgNCwgMSwgMjI2LCA2MiwgMzcsIAorICAgIDIwNiwgNDksIDU0LCAzOCwgMzcsIDIwNSwgMjEwLCAzOCwgMzcsIDIxNiwgMTgzLCAzOCwgMzcsIDI0MSwgMjQyLCAyMTUsIAorICAgIDEwOCwgMzgsIDM3LCAyMTQsIDIyOSwgMjE1LCAxMDgsIDM4LCAzNywgMjE1LCA5MiwgMzgsIDM3LCAyMzMsIDgzLCAyMDYsIAorICAgIDQ5LCA1NCwgMzgsIDM3LCAyMjEsIDE2OCwgNTQsIDM3LCA2LCAxLCAyMDksIDI1MCwgMjMzLCAxOSwgMywgMjA3LCA2LCAzNywgCisgICAgNCwgMSwgMjA5LCAyNTAsIDIzMywgMTksIDMsIDIwNywgNiwgMzcsIDYsIDEsIDIxMCwgMTYzLCA1NCwgMzcsIDQsIDEsIAorICAgIDIxMCwgMTYzLCA1NCwgMzcsIDYsIDEsIDIzOCwgMTE2LCAzLCAyMDYsIDExLCAzNywgNCwgMSwgMjM4LCAxMTYsIDMsIDIwNiwgCisgICAgMTEsIDM3LCA2LCAxLCAyMzUsIDE4NiwgMywgMjAzLCAyMTksIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMjAzLCAyMTksIDM3LCAKKyAgICA2LCAxLCAyMzUsIDE4NiwgMywgOTcsIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgOTcsIDM3LCA2LCAxLCAyMzUsIDE4NiwgMywgCisgICAgMTAxLCAxMTcsIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMTAxLCAxMTcsIDM3LCA2LCAxLCAxOTksIDY5LCAzLCAyNDEsIAorICAgIDExOSwgMzcsIDQsIDEsIDE5OSwgNjksIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMTk5LCA5MCwgMywgMjQxLCAxMTksIDM3LCAKKyAgICA0LCAxLCAxOTksIDkwLCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIyNywgMTA4LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIAorICAgIDIyNywgMTA4LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIyNywgMTA4LCAzLCA4MywgOTcsIDM3LCA0LCAxLCAyMjcsIDEwOCwgCisgICAgMywgODMsIDk3LCAzNywgNiwgMSwgMjI3LCAxMDgsIDMsIDk3LCAzNywgNCwgMSwgMjI3LCAxMDgsIDMsIDk3LCAzNywgNiwgCisgICAgMSwgMjQ5LCA2MCwgMTYxLCAzNywgNCwgMSwgMjQ5LCA2MCwgMTYxLCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDI0MSwgMTE5LCAKKyAgICAzNywgNCwgMSwgMjM4LCAxODAsIDMsIDI0MSwgMTE5LCAzNywgNiwgMzMsIDIzOCwgMTgwLCAyMzUsIDE4NSwgMzcsIDQsIAorICAgIDMzLCAyMzgsIDE4MCwgMjM1LCAxODUsIDM3LCA2LCAxLCAyMTYsIDc0LCAzLCAxMDEsIDExNywgMzcsIDQsIDEsIDIxNiwgCisgICAgNzQsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMjUyLCAyLCAxNDQsIDM3LCA0LCAxLCAyNTIsIDIsIDE0NCwgMzcsIDYsIDEsIAorICAgIDIzOCwgMTA1LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzOCwgMTA1LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIwNiwgCisgICAgMjAyLCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIwNiwgMjAyLCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIwOCwgNjgsIDY2LCAKKyAgICAzNywgNCwgMSwgMjA4LCA2OCwgNjYsIDM3LCA2LCAxLCAyMDgsIDY4LCAxMDgsIDMsIDk3LCAzNywgNCwgMSwgMjA4LCA2OCwgCisgICAgMTA4LCAzLCA5NywgMzcsIDYsIDEsIDIzNCwgMjM2LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzNCwgMjM2LCAzLCAyNDEsIAorICAgIDExOSwgMzcsIDYsIDMzLCAyMDYsIDIwMiwgMjA1LCAyNiwgMzcsIDQsIDMzLCAyMDYsIDIwMiwgMjA1LCAyNiwgMzcsIDYsIAorICAgIDEsIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjQ3LCA5LCAKKyAgICAzLCA4MywgOTcsIDM3LCA0LCAxLCAyNDcsIDksIDMsIDgzLCA5NywgMzcsIDYsIDEsIDIxMCwgMzQsIDM3LCA0LCAxLCAyMTAsIAorICAgIDM0LCAzNywgNiwgMSwgMjUyLCAyLCAyNDcsIDgsIDM3LCA0LCAxLCAyNTIsIDIsIDI0NywgOCwgMzcsIDYsIDEsIDI1MiwgMiwgCisgICAgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDI1MiwgMiwgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDEsIDIxNiwgCisgICAgMTc0LCAzNywgNiwgMSwgMTk5LCA2OSwgMywgMjQ4LCA1NywgMzcsIDQsIDEsIDE5OSwgNjksIDMsIDI0OCwgNTcsIDM3LCA2LCAKKyAgICAxLCAyMjcsIDEwOCwgMywgMTE3LCAzNywgNCwgMSwgMjI3LCAxMDgsIDMsIDExNywgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAKKyAgICAyMDcsIDYsIDM3LCA0LCAxLCAyMzgsIDIxMCwgMywgMjA3LCA2LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDExNywgMzcsIDQsIAorICAgIDEsIDIzOCwgMTgwLCAzLCAxMTcsIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgMjA3LCA2LCAzNywgNCwgMSwgMjM4LCAxODAsIAorICAgIDMsIDIwNywgNiwgMzcsIDYsIDEsIDIyNiwgMjAxLCAyNDcsIDgsIDM3LCA0LCAxLCAyMjYsIDIwMSwgMjQ3LCA4LCAzNywgNiwgCisgICAgMSwgMjM4LCAxOTEsIDMsIDIwNywgNiwgMzcsIDQsIDEsIDIzOCwgMTkxLCAzLCAyMDcsIDYsIDM3LCA0LCAxLCAyMTYsIAorICAgIDE3NCwgMzcsIDYsIDEsIDM1LCAzLCAyNDgsIDU3LCAzNywgNCwgMSwgMzUsIDMsIDI0OCwgNTcsIDM3LCA2LCAxLCAzNSwgMywgCisgICAgMjQxLCA3NCwgMzcsIDQsIDEsIDM1LCAzLCAyNDEsIDc0LCAzNywgNiwgMzMsIDM1LCAyMjgsIDE3OCwgMzcsIDQsIDMzLCAKKyAgICAzNSwgMjI4LCAxNzgsIDM3LCA2LCAxLCAyMjgsIDE3OSwgMywgMjQ4LCA1NywgMzcsIDQsIDEsIDIyOCwgMTc5LCAzLCAyNDgsIAorICAgIDU3LCAzNywgNiwgMSwgMjExLCAyMTgsIDM3LCA0LCAxLCAyMTEsIDIxOCwgMzcsIDYsIDEsIDIxMSwgMjE5LCAzLCAyNDEsIAorICAgIDc0LCAzNywgNCwgMSwgMjExLCAyMTksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxOTksIDY5LCAzLCAyNDEsIDc0LCAzNywgNCwgCisgICAgMSwgMTk5LCA2OSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDE5OSwgOTAsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAxOTksIDkwLCAKKyAgICAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMjUyLCAyLCAyMzksIDkwLCAzNywgNCwgMSwgMjUyLCAyLCAyMzksIDkwLCAzNywgNiwgCisgICAgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDM3LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgMzcsIDYsIDEsIDIzMywgCisgICAgMTksIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTYzLCAzLCAyNDEsIDc0LCAKKyAgICAzNywgNCwgMSwgMTYzLCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMjQ5LCA3MSwgNzQsIDM3LCA0LCAxLCAyNDksIDcxLCA3NCwgCisgICAgMzcsIDYsIDEsIDI0OSwgNzEsIDE2MywgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDI0OSwgNzEsIDE2MywgMywgMjQxLCA3NCwgCisgICAgMzcsIDYsIDEsIDE5NywgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDE5NywgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjgsIDM3LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI4LCAzNywgNiwgMSwgMTA4LCAzLCAyNDEsIDc0LCAzNywgNCwgCisgICAgMSwgMTA4LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTA4LCAzLCA1MywgMTY5LCAzNywgNCwgMSwgMTA4LCAzLCA1MywgMTY5LCAKKyAgICAzNywgNiwgMSwgMjQ3LCA5LCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjQ3LCA5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgCisgICAgMjM1LCAxODYsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjAwLCAKKyAgICAzMCwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDIwMCwgMzAsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAyMzUsIDE4NiwgMywgCisgICAgMjA4LCA0NywgMjYsIDExNywgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAyMDgsIDQ3LCAyNiwgMTE3LCAzNywgNiwgMSwgMjM0LCAKKyAgICAyMzYsIDMsIDExNywgMzcsIDQsIDEsIDIzNCwgMjM2LCAzLCAxMTcsIDM3LCA2LCAxLCAyMzQsIDIzNiwgMywgOTcsIDM3LCAKKyAgICA0LCAxLCAyMzQsIDIzNiwgMywgOTcsIDM3LCA2LCAxLCAyMjYsIDcyLCAyNDEsIDE3NSwgMzcsIDQsIDEsIDIyNiwgNzIsIAorICAgIDI0MSwgMTc1LCAzNywgNiwgMSwgMjI2LCA3MiwgMjQwLCAyMjgsIDM3LCA0LCAxLCAyMjYsIDcyLCAyNDAsIDIyOCwgMzcsIAorICAgIDYsIDEsIDIyNiwgNzIsIDE5OSwgMTgsIDM3LCA0LCAxLCAyMjYsIDcyLCAxOTksIDE4LCAzNywgNiwgMSwgMjI2LCA3MiwgCisgICAgMjM5LCA4MiwgMzcsIDQsIDEsIDIyNiwgNzIsIDIzOSwgODIsIDM3LCA2LCAxLCAyMjYsIDcyLCAyMjQsIDE0MSwgMzcsIDQsIAorICAgIDEsIDIyNiwgNzIsIDIyNCwgMTQxLCAzNywgNiwgMSwgMjI2LCA3MiwgMjE5LCA5MSwgMzcsIDQsIDEsIDIyNiwgNzIsIDIxOSwgCisgICAgOTEsIDM3LCA2LCAxLCAyMjYsIDcyLCAyMDksIDg5LCAzNywgNCwgMSwgMjI2LCA3MiwgMjA5LCA4OSwgMzcsIDYsIDEsIAorICAgIDIyNiwgNzIsIDIwNSwgMjA0LCAzNywgNCwgMSwgMjI2LCA3MiwgMjA1LCAyMDQsIDM3LCA2LCAxLCAyMTMsIDEwNSwgMTk5LCAKKyAgICA4OSwgMzcsIDQsIDEsIDIxMywgMTA1LCAxOTksIDg5LCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIDExNywgMzcsIDQsIDEsIAorICAgIDIzOCwgMjEwLCAzLCAxMTcsIDM3LCA2LCAxLCAyMjQsIDIyMywgMzcsIDQsIDEsIDIyNCwgMjIzLCAzNywgNiwgMSwgMjEzLCAKKyAgICA5MywgMzcsIDQsIDEsIDIxMywgOTMsIDM3LCA2LCAxLCAyMDAsIDk4LCAzNywgNCwgMSwgMjAwLCA5OCwgMzcsIDYsIDEsIAorICAgIDIxNCwgMTU5LCAzNywgNCwgMSwgMjE0LCAxNTksIDM3LCA2LCAxLCAyMDEsIDY0LCAzNywgNCwgMSwgMjAxLCA2NCwgMzcsIAorICAgIDYsIDEsIDI1MSwgMTM4LCAxNjEsIDM3LCA0LCAxLCAyNTEsIDEzOCwgMTYxLCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIDEwMSwgCisgICAgMTE3LCAzNywgNCwgMSwgMjM4LCAyMTAsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDEwMSwgMTE3LCAKKyAgICAzNywgNCwgMSwgMjM4LCAxODAsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMjE2LCA3NCwgMywgMjQxLCAxMTksIDM3LCA0LCAKKyAgICAxLCAyMTYsIDc0LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIxMCwgMzUsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjEwLCAKKyAgICAzNSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgNDksIDExNywgMzcsIDQsIDEsIDIzOCwgMTgwLCAzLCAKKyAgICA0OSwgMTE3LCAzNywgNiwgMSwgMjM5LCA3NSwgMzcsIDQsIDEsIDIzOSwgNzUsIDM3LCA2LCAxLCAyNDEsIDIyNCwgMzcsIDQsIAorICAgIDEsIDI0MSwgMjI0LCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM4LCAyMTAsIDMsIDI0MSwgCisgICAgMTE5LCAxODQsIDYsIDEsIDI1MCwgMTA5LCAxODQsIDYsIDEsIDI0OCwgMjI0LCAxODQsIDYsIDEsIDIzNSwgMTQ5LCAxODQsIAorICAgIDYsIDEsIDI0MiwgNTgsIDE4NCwgNiwgMSwgMjM5LCA1LCAxODQsIDYsIDEsIDE5OSwgMTE0LCAxODQsIDYsIDEsIDIzOCwgCisgICAgMjQxLCAxODQsIDYsIDEsIDIzOCwgODEsIDE4NCwgNiwgMSwgMTM4LCAxODQsIDYsIDEsIDE5OSwgNjgsIDE4NCwgNiwgMSwgCisgICAgMjI4LCA4NiwgMTg0LCA2LCAxLCAyMjQsIDE0NSwgMTg0LCA2LCAxLCAyMDAsIDE3MywgMTg0LCA2LCAxLCAyNDcsIDE5MCwgCisgICAgMTg0LCA2LCAxLCAyMjYsIDI0MywgMTg0LCA2LCAxLCAyMzMsIDIwNywgMTg0LCA2LCAxLCAyMjcsIDI0OCwgMTg0LCA2LCAxLCAKKyAgICAyMzUsIDE5NiwgMTg0LCA2LCAxLCAyNDYsIDI1NCwgMTg0LCA2LCAxLCAyMjIsIDQwLCAxODQsIDYsIDEsIDIwMCwgOSwgCisgICAgMTg0LCA2LCAxLCAyMTgsIDIwMSwgMTg0LCA2LCAxLCAyMTAsIDExNCwgMTg0LCA2LCAxLCAyMDIsIDE5MywgMTg0LCA2LCAxLCAKKyAgICAyNDcsIDM3LCAxODQsIDYsIDEsIDIxNiwgNTQsIDE4NCwgNiwgMSwgMjI3LCAyMTAsIDE4NCwgNiwgMSwgMjEzLCAyNTIsIAorICAgIDE4NCwgNiwgMSwgMjExLCAxODAsIDE4NCwgNiwgMSwgMjAyLCAyMzgsIDE4NCwgNiwgMSwgMjA1LCAyMDcsIDE4NCwgNiwgMSwgCisgICAgMjEzLCAxNTQsIDE4NCwgNiwgMSwgMjQ2LCA5MSwgMTg0LCA2LCAxLCAxOTksIDI1MCwgMTg0LCA2LCAxLCAyMTUsIDEzOSwgCisgICAgMTg0LCA2LCAxLCAyMjYsIDI1NCwgMTg0LCA2LCAxLCAyMTcsIDEwOCwgMTg0LCA2LCAxLCAyMzcsIDEzNCwgMTg0LCA2NywgCisgICAgMSwgNDksIDE2NywgMjEzLCAyNiwgMTg0LCAyNTEsIDEzLCAxODQsIDIzOCwgMTgzLCA4MSwgMTg0LCAyMzgsIDQzLCA4MSwgCisgICAgMTg0LCAyNDYsIDcwLCAxODQsIDIxNCwgNzksIDgxLCAxODQsIDI1MiwgMywgODEsIDE4NCwgNCwgMSwgMjUwLCAxMDksIAorICAgIDE4NCwgNCwgMSwgMjQ4LCAyMjQsIDE4NCwgNCwgMSwgMjM1LCAxNDksIDE4NCwgNCwgMSwgMjQyLCA1OCwgMTg0LCA0LCAxLCAKKyAgICAyMzksIDUsIDE4NCwgNCwgMSwgMTk5LCAxMTQsIDE4NCwgNCwgMSwgMjM4LCAyNDEsIDE4NCwgNCwgMSwgMjM4LCA4MSwgCisgICAgMTg0LCA0LCAxLCAxMzgsIDE4NCwgNCwgMSwgMTk5LCA2OCwgMTg0LCA0LCAxLCAyMjgsIDg2LCAxODQsIDQsIDEsIDIyNCwgCisgICAgMTQ1LCAxODQsIDQsIDEsIDIwMCwgMTczLCAxODQsIDQsIDEsIDI0NywgMTkwLCAxODQsIDQsIDEsIDIyNiwgMjQzLCAxODQsIAorICAgIDQsIDEsIDIzMywgMjA3LCAxODQsIDQsIDEsIDIyNywgMjQ4LCAxODQsIDQsIDEsIDIzNSwgMTk2LCAxODQsIDQsIDEsIDI0NiwgCisgICAgMjU0LCAxODQsIDQsIDEsIDIyMiwgNDAsIDE4NCwgNCwgMSwgMjAwLCA5LCAxODQsIDQsIDEsIDIxOCwgMjAxLCAxODQsIDQsIAorICAgIDEsIDIxMCwgMTE0LCAxODQsIDQsIDEsIDIwMiwgMTkzLCAxODQsIDQsIDEsIDI0NywgMzcsIDE4NCwgNCwgMSwgMjE2LCA1NCwgCisgICAgMTg0LCA0LCAxLCAyMjcsIDIxMCwgMTg0LCA0LCAxLCAyMTMsIDI1MiwgMTg0LCA0LCAxLCAyMTEsIDE4MCwgMTg0LCA0LCAxLCAKKyAgICAyMDIsIDIzOCwgMTg0LCA0LCAxLCAyMDUsIDIwNywgMTg0LCA0LCAxLCAyMTMsIDE1NCwgMTg0LCA0LCAxLCAyNDYsIDkxLCAKKyAgICAxODQsIDQsIDEsIDE5OSwgMjUwLCAxODQsIDQsIDEsIDIxNSwgMTM5LCAxODQsIDQsIDEsIDIyNiwgMjU0LCAxODQsIDQsIDEsIAorICAgIDIxNywgMTA4LCAxODQsIDQsIDEsIDIzNywgMTM0LCAxODQsIDQsIDMzLCAyMzksIDYsIDE5OSwgMjUwLCAxODQsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAxODQsIDIzMywgMzMsIDIxMywgNDUsIDE4NCwgMjM4LCA3NywgNTQsIDIyNSwgMjcsIDE4NCwgMjM4LCAKKyAgICA3NywgNTQsIDE4NCwgMjM5LCAxNTcsIDU0LCAxMTMsIDI1MSwgMjUyLCAyMzgsIDcyLCAxMTMsIDI1MSwgMjUyLCAyMTEsIAorICAgIDE4MSwgMTEzLCAyNTEsIDI1MiwgMjEwLCA5MiwgMTEzLCAyNTEsIDI1MiwgMTk5LCAxMDAsIDIxNCwgMTQyLCAxMTMsIDI1MSwgCisgICAgMjUyLCAxOTksIDEwMCwgMjM2LCA3OSwgMTEzLCAyNTEsIDI1MiwgMjA1LCAyMjIsIDExMywgMjUxLCAyNTIsIDIxMywgMTAyLCAKKyAgICAxMTMsIDI1MSwgMjUyLCAxOTksIDk4LCAxMTMsIDI1MSwgMjUyLCAyMTYsIDEwMCwgMTEzLCAyNTEsIDI1MiwgMjAwLCAyMiwgCisgICAgMTEzLCAyNTEsIDI1MiwgMjA2LCAxMjksIDExMywgMjUxLCAyNTIsIDIzNSwgMjQ3LCAxMTMsIDI1MSwgMjUyLCAyMzUsIAorICAgIDI0OCwgMjIxLCAzLCAxMTMsIDI1MSwgMjUyLCAyMzUsIDI0NSwgMTEzLCAyNTEsIDI1MiwgMjE0LCAxNDMsIDIxNiwgMTI5LCAKKyAgICAxMTMsIDI1MSwgMjUyLCAyMDYsIDE3MiwgMjM2LCA4LCAxMTMsIDI1MSwgMjUyLCAyMTYsIDc5LCAxMTMsIDI1MSwgMjUyLCAKKyAgICAyNTAsIDE0OCwgMjM0LCAyMjgsIDExMywgMjUxLCAyNTIsIDIyMSwgMTMsIDExMywgMjUxLCAyNTIsIDIyMiwgMjAzLCAxMTMsIAorICAgIDI1MSwgMjUyLCAyMjIsIDI5LCAxMTMsIDI1MSwgMjUyLCAyMjIsIDMwLCAyMjYsIDI1NSwgMTEzLCAyNTEsIDI1MiwgMjQxLCAKKyAgICAyNTEsIDExMywgMjUxLCAyNTIsIDIxNCwgMTU0LCAxMTMsIDI1MSwgMjUyLCAyMDYsIDE3MiwgMjE0LCAxMzcsIDExMywgCisgICAgMjUxLCAyNTIsIDIwMCwgMzIsIDI0OCwgMjI1LCAxOTksIDIzMSwgMTEzLCAyNTEsIDI1MiwgMjE3LCA5MCwgMTEzLCAyNTEsIAorICAgIDI1MiwgMjI4LCAxMzcsIDExMywgMjUxLCAyNTIsIDI0MSwgMTUzLCAxMTMsIDI1MSwgMjUyLCAxOTksIDI1LCAxMTMsIDEzNCwgCisgICAgMjIyLCAxMzEsIDI0NiwgMTU1LCAxMTMsIDIxNSwgMTAwLCAyMTAsIDM3LCAxMTMsIDIxNSwgMTAwLCAyMzQsIDE1NiwgMjExLCAKKyAgICAxODEsIDExMywgMjE1LCAxMDAsIDIzNCwgMTU2LCAyMTYsIDkzLCAxMTMsIDIxNSwgMTAwLCAyMzQsIDE1NiwgMjE0LCAxNDcsIAorICAgIDExMywgMjE1LCAxMDAsIDIzNCwgNDcsIDExMywgMjE1LCAxMDAsIDIwNSwgMjMsIDExMywgMjE1LCAxMDAsIDIxMSwgMTgxLCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMTYsIDkzLCAxMTMsIDIxNSwgMTAwLCAyMTQsIDE0NywgMTEzLCAyMTUsIDEwMCwgMjMzLCAxOTksIAorICAgIDExMywgMjE1LCAxMDAsIDIzMywgMjAwLCAyMzQsIDE1OCwgMzYsIDIwMywgNjMsIDExMywgMjE1LCAxMDAsIDIxNCwgODMsIAorICAgIDExMywgMjE1LCAxMDAsIDI0MiwgNDMsIDIxNywgMzQsIDIyMiwgMTYzLCAxMTMsIDIxNSwgMTAwLCAyMjIsIDE5LCAxMTMsIAorICAgIDIxNCwgMjEyLCAyMjIsIDE2MCwgMTEzLCAyMTUsIDEwMCwgMjEzLCAyMzIsIDExMywgMjE0LCAyMTIsIDIxNiwgMTAyLCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMTAsIDIyLCAyNDAsIDE4MiwgMTEzLCAyMTUsIDEwMCwgMjA5LCAxNDMsIDI0MCwgMTgyLCAxMTMsIAorICAgIDIxNCwgMjEyLCAyMDksIDI0LCAyMTYsIDk1LCAxMTMsIDEzNCwgMjAzLCAyMjUsIDI0MCwgMTgyLCAxMTMsIDEzNCwgMjI0LCAKKyAgICA1NCwgMjQwLCAxODIsIDExMywgMjE0LCAyMTIsIDIxOCwgOTAsIDIzNCwgMjI3LCAxMTMsIDIxNSwgMTAwLCAyMTQsIDE0OCwgCisgICAgMjE0LCAxNDIsIDExMywgMSwgMjUxLCAxNDIsIDExMywgMSwgMjQ4LCAyMTAsIDExMywgMSwgMjM1LCAxNDcsIDExMywgMSwgCisgICAgMjQyLCAyMywgMTEzLCAxLCAyMzQsIDEzOSwgMTEzLCAxLCAyMDMsIDYzLCAxMTMsIDEsIDE5OSwgOTIsIDExMywgMSwgMjM0LCAKKyAgICA5MywgMTEzLCAxLCAyMDYsIDE0NiwgMTEzLCAxLCAxOTksIDIzNCwgMTEzLCAxLCA0NywgMjI3LCA4NiwgMTEzLCAxLCAyMjcsIAorICAgIDg2LCAxMTMsIDEsIDIyNSwgODMsIDExMywgMSwgNDcsIDIyMiwgNDcsIDExMywgMSwgMjIyLCA0NywgMTEzLCAxLCA0NywgCisgICAgMjE4LCA4OSwgMTEzLCAxLCAyMTgsIDg5LCAxMTMsIDEsIDIxMiwgMTksIDExMywgMSwgMjUwLCAxMDcsIDExMywgMSwgNDcsIAorICAgIDIxNiwgNzMsIDExMywgMSwgMjE2LCA3MywgMTEzLCAxLCA0NywgMjA1LCAyNywgMTEzLCAxLCAyMDUsIDI3LCAxMTMsIDEsIAorICAgIDIxNCwgMTA2LCAxMTMsIDEsIDIxMywgMTIzLCAxMTMsIDEsIDIxMCwgMjEsIDExMywgMSwgMjA2LCAyMTcsIDExMywgMzMsIAorICAgIDIwMCwgNywgNTMsIDIwMywgNjMsIDExMywgMzMsIDIwMCwgNywgMjAzLCA2NCwgMTk5LCAyMzQsIDExMywgMzMsIDIwMCwgNywgCisgICAgNTMsIDE5OSwgMjM0LCAxMTMsIDIxNCwgMjEyLCAyMzUsIDI0NywgMTEzLCAyMTQsIDIxMiwgMjM1LCAyNDUsIDksIDQxLCAKKyAgICA1NCwgOSwgMiwgMjEyLCAxMiwgOSwgMjM2LCAyNTMsIDIyMiwgMTQ1LCA5LCAyLCAyMTIsIDUyLCA5LCAyLCAyMTIsIDE1LCAKKyAgICA5LCA0MSwgMTM0LCA1NiwgMjUwLCAyNDgsIDI0MiwgMjEwLCAyMTIsIDIzNCwgMjUwLCAyNDgsIDIzNiwgMjIyLCAyMTIsIAorICAgIDIzNCwgOSwgMjEzLCAxOTcsIDI1MCwgMjQ4LCAyMTYsIDI4LCAyMjEsIDE3MCwgNTQsIDI1MCwgMjQ4LCAyMTYsIDI4LCAKKyAgICAyMDYsIDE2NywgMjA2LCA1MSwgNTQsIDI1MSwgMTk4LCA1NCwgOSwgMjQ2LCA3MCwgOSwgMjQxLCAyMzgsIDIxMCwgMTU0LCAKKyAgICA5LCAyMTUsIDEwMiwgMjAzLCA0NCwgNTQsIDksIDIsIDIyMSwgMTQ5LCA5LCAyLCAyMTIsIDI5LCAyNTEsIDE0NSwgMjAxLCAKKyAgICA4OCwgOSwgMiwgMjUxLCAxNDUsIDI1MCwgMTcwLCA5LCAyLCAyMTMsIDIzMCwgMjUxLCAxNDQsIDksIDIsIDIxMywgMjM4LCAKKyAgICAyNTEsIDEyMiwgMjUxLCA2MywgOSwgMiwgMjA2LCAyNTQsIDksIDQsIDEyMiwgMjA3LCA5LCA5LCA0LCAxMjIsIDMzLCAxNDAsIAorICAgIDMsIDIyNSwgOTIsIDMsIDIwMCwgNDYsIDksIDQsIDEyMiwgMTk5LCAxMDUsIDksIDQsIDIzNywgMTU4LCA5LCA0LCAyNDIsIAorICAgIDE3LCA5LCA0LCAyMjcsIDM2LCA5LCAyMTAsIDE2NywgOSwgMSwgODEsIDksIDIwNSwgODMsIDczLCAyMTQsIDIxMiwgODEsIAorICAgIDksIDIxNCwgNzksIDgxLCA5LCAxLCAyMjcsIDQwLCAyMDAsIDQ2LCA5LCAxLCAyMzQsIDIwMywgOSwgMSwgMTQwLCAzLCAKKyAgICAyMjIsIDIyNCwgNTYsIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyMDEsIDczLCAzLCAyMzQsIDIwNCwgNTYsIAorICAgIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDU3LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyNTEsIDE0MiwgOSwgCisgICAgMSwgMjQ4LCAyNDAsIDksIDEsIDIwNiwgMTg0LCAyMjIsIDE1NiwgOSwgMSwgMjA2LCAxODMsIDksIDEsIDIwNiwgMTAyLCA5LCAKKyAgICAxLCAyMjcsIDIyNCwgOSwgMSwgMjM0LCAyMjQsIDksIDEsIDIyNiwgMjAzLCA5LCAxLCAyNDIsIDI5LCA5LCAxLCAyMDYsIAorICAgIDExNCwgOSwgMSwgMjEzLCAxNTQsIDksIDEsIDE5OSwgMTA1LCA5LCAxLCAyMTEsIDE4NiwgOSwgMSwgMjEwLCA2MSwgOSwgMSwgCisgICAgMjEyLCA1NiwgOSwgMSwgMjQyLCA1MiwgOSwgMSwgMjA3LCA5LCA5LCAxLCAxOTksIDEwOCwgOSwgMSwgMjUxLCAxNzEsIDksIAorICAgIDEsIDIzNSwgMTk0LCA5LCAxLCAyMjYsIDI1MywgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMjYsIDI1MywgMywgMTI2LCAKKyAgICAxOTAsIDU3LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIAorICAgIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAxMjYsIDE5MCwgNTYsIDksIDIwNiwgMjIzLCA5LCAxLCAKKyAgICAyMzcsIDEzNCwgOSwgMSwgMjE0LCAxNTIsIDksIDEsIDIyNywgODYsIDksIDEsIDIyNSwgOTEsIDksIDEsIDIyMiwgNjEsIDksIAorICAgIDEsIDIxOCwgMjI3LCA5LCAxLCAyMzQsIDExNSwgOSwgMSwgMjAxLCA3MiwgOSwgMSwgMTQwLCAyMjIsIDE4NywgOSwgMSwgCisgICAgMjAwLCA0NiwgOSwgMjM3LCAxNTYsIDksIDI0MiwgMTUsIDksIDIyNywgMzQsIDksIDIzNywgMTU4LCA5LCAyNDIsIDE3LCA5LCAKKyAgICAyMjcsIDM2LCA5LCAyMTAsIDEwNCwgOSwgMjA3LCAyMzYsIDksIDIyMiwgMjIyLCA1NiwgOSwgMjM0LCAyMDQsIDU2LCA5LCAKKyAgICAyMzQsIDIwNCwgNTcsIDksIDIwOCwgNCwgMjUxLCAxNDIsIDksIDIyOCwgNTAsIDI0MiwgMTcsIDksIDEzNCwgMjE4LCAyMjgsIAorICAgIDIzNSwgMTY1LCA5LCAxOTgsIDI0NSwgOSwgMjIsIDIsIDQsIDIwMywgMTY5LCA1NiwgOSwgMjIsIDIsIDIyOCwgNTAsIDQsIAorICAgIDIwMywgMTY5LCA1NiwgOSwgMjIsIDIsIDczLCA1NywgOSwgMjEzLCAxMDUsIDI0MiwgMTcsIDksIDIzNywgMTU5LCAzLCAKKyAgICAxMjAsIDI0MCwgMTgwLCA5LCAyMDEsIDc0LCAyMzQsIDIwNCwgNTcsIDI1MCwgMjQ4LCAxNywgMTk5LCA4MSwgMjUwLCAyNDgsIAorICAgIDE3LCAxMDIsIDI1MCwgMjQ4LCAxNywgMTA1LCAyNTAsIDI0OCwgMTcsIDE0NywgMjUwLCAyNDgsIDE3LCAxNDksIDI1MCwgCisgICAgMjQ4LCAxNywgMTY0LCAyNTAsIDI0OCwgMTcsIDE4NywgMjUwLCAyNDgsIDE3LCAyMTAsIDEzNSwgMjUwLCAyNDgsIDE3LCAKKyAgICAxOTIsIDI1MCwgMjQ4LCAxNywgMjE5LCAxMTMsIDksIDIxNiwgMjcsIDU0LCA5LCAyNDEsIDE2OCwgMjEwLCAxNTQsIDksIAorICAgIDIwNiwgNDksIDIxMCwgMTU0LCA5LCAyMzcsIDYxLCAyMTUsIDk4LCAyMDgsIDEwOSwgOSwgMSwgMjQwLCAxODEsIDI0OCwgCisgICAgMjQwLCA5LCAxLCAyNDAsIDE4MSwgMjE0LCAxNTIsIDksIDEsIDIwNywgMjEzLCAyNTEsIDE0MiwgOSwgMSwgMTQwLCAyMDEsIAorICAgIDg5LCA5LCAxLCAxNDAsIDMsIDIwMSwgNzQsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTQwLCAzLCAyMDEsIDc0LCAyMzQsIDIwNCwgCisgICAgNTcsIDksIDEsIDEyMiwgMjM0LCAyMDMsIDksIDEsIDEyMiwgMjM0LCAyMDQsIDI1MSwgMTQyLCA5LCAxLCAxMjIsIDIzNCwgCisgICAgMjA0LCAyMDEsIDcyLCA5LCAxLCAxMDgsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTIyLCAyMzQsIDIwNCwgMjAwLCA0NiwgCisgICAgOSwgMSwgMjA0LCAyNDUsIDksIDEsIDIwNCwgMjQzLCA5LCAxLCAyNDgsIDI1MCwgOSwgMSwgMjA2LCAxODQsIDMsIDIxMywgCisgICAgMjYsIDksIDEsIDIwNiwgMTg0LCAzLCAxMjYsIDE5MCwgODgsIDIzOSwgMTY1LCA5LCAxLCAyMTYsIDU0LCA5LCAxLCAyMDYsIAorICAgIDE4MSwgOSwgMSwgMjQ4LCAyMzgsIDksIDEsIDE1NSwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAxNTUsIDMsIDEyMCwgMTkwLCAKKyAgICA4MywgNTYsIDksIDEsIDIxOCwgNDcsIDksIDEsIDIzOSwgOTksIDksIDEsIDE1NSwgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMDYsIDIwNSwgOSwgMSwgMjA2LCAyMDMsIDksIDEsIDI0MSwgMjE1LCA5LCAxLCAyNDIsIDMwLCAzLCAyMTMsIDI2LCA5LCAKKyAgICAxLCAyNDIsIDMwLCAzLCA3MywgNTcsIDksIDEsIDI0MiwgMzAsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDQsIDIwNywgOSwgOSwgCisgICAgMSwgMjQyLCAzNiwgOSwgMSwgMjQxLCAyMTcsIDksIDEsIDIzOSwgMTI3LCA5LCAxLCAyNDIsIDMwLCAzLCAxMjYsIDE5MCwgCisgICAgODgsIDIzOSwgMTY1LCA5LCAxLCAyNDIsIDMwLCAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgMSwgMjEyLCAyMDcsIDksIDEsIAorICAgIDIxMywgMTU1LCAzLCA0LCAyMDMsIDE2OCwgOSwgMSwgMjEzLCAxNTUsIDMsIDIxMywgMjYsIDksIDEsIDIxMywgMTU1LCAzLCAKKyAgICA3MywgNTcsIDksIDEsIDIxMywgMTU1LCAzLCA0LCAyMDMsIDE2OSwgNTcsIDksIDEsIDIxMywgMTU1LCAzLCA3MywgMjQ4LCAKKyAgICAyMjgsIDI2LCA3MywgNTYsIDksIDEsIDIxMywgMTU1LCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDIyNywgMjIxLCA5LCAxLCAKKyAgICAyMTMsIDE1NSwgMywgMjM2LCAyMjksIDE5MCwgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA3MywgCisgICAgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIxMSwgMTg3LCAzLCAxMjYsIDE5MCwgMjQ4LCAKKyAgICAyMjgsIDI2LCAxMjYsIDE5MCwgNTYsIDksIDEsIDIxMiwgNTcsIDMsIDEyMCwgMTkwLCA1NywgOSwgMSwgMjEyLCA1NywgMywgCisgICAgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMDcsIDEwLCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjYsIAorICAgIDE5MCwgNTYsIDksIDEsIDI0MCwgMTgxLCAyMzcsIDEzNCwgOSwgMSwgMjM3LCAxMzUsIDMsIDczLCAyMjEsIDU2LCA1NywgOSwgCisgICAgMSwgMjM3LCAxMzUsIDMsIDczLCA1NywgOSwgMSwgMjAzLCA1MiwgOSwgMSwgMjM3LCAxMzUsIDMsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMSwgMjE2LCA1MiwgOSwgMSwgMjE0LCAxNTMsIDMsIDczLCA1NiwgOSwgMSwgMjE0LCAxNTMsIDMsIDEyNiwgMTkwLCAKKyAgICA1NiwgOSwgMSwgMjI2LCAyNTIsIDksIDEsIDIwNywgMTgzLCAyMjcsIDg2LCA5LCAxLCAyMjcsIDg3LCAzLCAyMTMsIDI2LCAKKyAgICA5LCAxLCAyMjcsIDg3LCAzLCA3MywgNTYsIDksIDEsIDIxOSwgMjU1LCA5LCAxLCAyMjcsIDg3LCAzLCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDEsIDIzNiwgNzYsIDksIDEsIDIzNiwgNzcsIDMsIDIxMywgMjYsIDksIDEsIDIxOSwgMTc2LCA5LCAxLCAyMzYsIDc3LCAKKyAgICAzLCAxMjAsIDE5MCwgNTcsIDksIDEsIDIzNSwgMzcsIDksIDEsIDIzNiwgNzcsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjI1LCA5MiwgMywgNCwgMjAzLCAxNjgsIDksIDEsIDIyNSwgOTIsIDMsIDczLCA1NiwgOSwgMSwgMjI1LCA5MiwgMywgMTI2LCAKKyAgICAxOTAsIDU2LCA5LCAxLCAyMjUsIDkyLCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIxOCwgMjI4LCAzLCA3MywgNTcsIDksIDEsIAorICAgIDIxOCwgMjI4LCAyMzUsIDE2NSwgOSwgMSwgMjEzLCA0LCA5LCAxLCAyMTgsIDIyOCwgMywgMjEzLCAyNiwgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA3LCA5LCAxLCAyMDYsIDIwNiwgMywgNzMsIAorICAgIDU2LCA5LCAxLCAyMzQsIDExNiwgMywgOTAsIDU2LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTMsIDksIDEsIDIzNCwgMTE2LCAKKyAgICAyMzUsIDExNCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyMDYsIDE4NCwgMjIyLCAxNTcsIDIzNSwgMTEzLCA5LCAxLCAyMDEsIAorICAgIDczLCAzLCAyMTMsIDI2LCA5LCAxLCAyMjYsIDEzOSwgMjE3LCAxMjEsIDksIDEsIDIxNywgMTIxLCA5LCAxLCA2NiwgOSwgMSwgCisgICAgMTk5LCAyMTEsIDksIDEsIDIyNiwgMTM5LCAxOTksIDIxMSwgOSwgMSwgMjAxLCA3MywgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMDMsIDU5LCA5LCAxLCAyMzcsIDE2MiwgMjAwLCA0NiwgOSwgMSwgOTAsIDMsIDIwNywgNiwgOSwgMSwgOTAsIDMsIDQsIAorICAgIDIwMywgMTY4LCA5LCAxLCAyMDEsIDczLCAzLCA3MywgNTYsIDksIDEsIDcyLCA5LCAxLCA5MCwgMywgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxLCA5MCwgMjQ5LCA2OSwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMjM2LCAxODMsIDIwOCwgCisgICAgNzYsIDksIDEsIDI1MSwgMjIxLCA5LCA0LCAxMjIsIDMzLCAyMTIsIDU3LCAzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg3LCAKKyAgICA5LCA0LCAxMjIsIDMzLCAyMTQsIDE1MywgMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4NywgOSwgNCwgMTIyLCA4NCwgODIsIAorICAgIDE5LCA5LCA0LCAxMjIsIDIyNSwgOTIsIDI1MSwgMTQyLCA5LCA0LCAxMjIsIDIyNywgMjI0LCA5LCA0LCAxMjIsIDEyNiwgCisgICAgMjQwLCAxODAsIDksIDQsIDEyMiwgMjExLCAxODYsIDksIDIzOCwgMTcxLCA3NiwgMjUwLCAxMTEsIDksIDIwOCwgMTA1LCAKKyAgICA3NiwgMjEyLCAxNzMsIDIzOCwgMjEwLCAyMzQsIDQyLCA5LCA0LCAxMjIsIDIxMiwgMjE5LCAxOTksIDgxLCA5LCA0LCAxMjIsIAorICAgIDIwMywgMjIzLCAyMTMsIDE3NCwgMTk5LCA4MSwgOSwgNCwgMTIyLCAyNDAsIDE4MSwgMjM0LCAxMzcsIDc2LCAyMjYsIDIwMywgCisgICAgOSwgNCwgMTIyLCA4NCwgNjUsIDE5LCA5LCA0LCAxMjgsIDIxMSwgMTg2LCA5LCA0LCAxMjIsIDIyMiwgMjIzLCA5LCA0LCAKKyAgICAyMDEsIDcyLCA5LCA0LCAyMDAsIDQ2LCA5LCA0LCAxMjIsIDIwMCwgNDYsIDksIDQsIDEyMiwgMjE4LCAyMjcsIDksIDIxNSwgCisgICAgMTM0LCA3NiwgMjEyLCA0MiwgOSwgMjM4LCAxODEsIDI0NywgNTYsIDEyOCwgMjA4LCA3NiwgOSwgMjM4LCAxODEsIDI0NywgCisgICAgNTYsIDEyMiwgMjA4LCA3NiwgOSwgMjEyLCAyMTksIDEyMiwgMjA4LCA3NywgMywgMjM3LCA5NCwgMjQ3LCA1NSwgOSwgNCwgCisgICAgMTI4LCAyMjIsIDYxLCA5LCAxLCAyNDIsIDMwLCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgOSwgMSwgMjEzLCAxNTUsIDMsIAorICAgIDIyOCwgNTAsIDIwMywgMTY4LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE5OSwgODEsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgCisgICAgMTAyLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEwNSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxNDcsIDIzOCwgMzMsIAorICAgIDI1MCwgMjQ4LCAxNywgMTQ5LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE2NCwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAKKyAgICAxODcsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMjEwLCAxMzUsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTkyLCAyMzgsIAorICAgIDMzLCAyNTAsIDI0OCwgMTcsIDIxOSwgMTEzLCA5LCAxLCAyMTAsIDYyLCAzLCA3MywgNTcsIDksIDEsIDI0MiwgNTMsIDMsIAorICAgIDczLCA1NywgOSwgMSwgMjM1LCAxOTUsIDMsIDczLCA1NywgOSwgMiwgMjA5LCAxNDIsIDI1MSwgODksIDksIDIsIDIwOSwgCisgICAgMTQyLCAyMTUsIDYzLCAyMjIsIDQwLCA5LCAxLCAyMzQsIDExNiwgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDIwNywgMTAzLCAKKyAgICAyMzgsIDE3MSwgNzYsIDIxNiwgMTI3LCAyMDcsIDEwMywgMjA3LCAyMDksIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDcsIDEwMywgCisgICAgMjA4LCA2LCAyMzYsIDE4MywgMjA4LCA3NiwgMjA3LCAxMDMsIDIwNywgMjA5LCAyNDYsIDc5LCAyMDcsIDEwMywgMjA4LCA2LCAKKyAgICAyNDYsIDc5LCAyMDcsIDEwMywgMjMzLCAxNzcsIDI0NiwgNzksIDIwNywgMTAzLCAyNDYsIDgwLCAyMDksIDg2LCAyMjUsIAorICAgIDI4LCAyMDcsIDEwMywgMjQ2LCA4MCwgMjA5LCA4NiwgMjEzLCA0NiwgMjA3LCAxMDMsIDIwNywgMjA5LCAyNDYsIDgwLCAKKyAgICAyMDksIDg2LCAyMjUsIDI4LCAyMDcsIDEwMywgMjA4LCA2LCAyNDYsIDgwLCAyMDksIDg2LCAyMTMsIDQ2LCAyMDcsIDEwMywgCisgICAgMjQzLCAzNiwgMjA3LCAxMDMsIDIzNCwgMTYzLCAyMTcsIDE0MCwgMjA3LCAxMDMsIDIzNCwgMTYzLCAyMjIsIDE3LCAyMDcsIAorICAgIDEwMywgMjM0LCAxNjMsIDI1MCwgMTY3LCAyMDcsIDEwMywgMjUyLCAzLCA4MSwgMjA3LCAxMDMsIDEsIDI1MSwgMTQ3LCAKKyAgICAyMDcsIDEwMywgMSwgMjA3LCAyMTMsIDI1MSwgMTQ3LCAyMDcsIDEwMywgMSwgMjQ4LCAyMDcsIDIwNywgMTAzLCAxLCAyMzYsIAorICAgIDY2LCAyMDcsIDEwMywgMSwgMjM2LCA2NywgMjM2LCA0NCwgMjA3LCAxMDMsIDEsIDI0MiwgMjYsIDIwNywgMTAzLCAxLCAKKyAgICAyNDAsIDE4MSwgMjQyLCAyNywgMjEzLCAyMCwgMjA3LCAxMDMsIDEsIDIzNCwgMTM5LCAyMDcsIDEwMywgMSwgMjAxLCA3MiwgCisgICAgMjA3LCAxMDMsIDEsIDE5OSwgMTA1LCAyMDcsIDEwMywgMSwgMjM0LCA5MSwgMjA3LCAxMDMsIDEsIDIwNiwgMTQyLCAyMDcsIAorICAgIDEwMywgMSwgMjA2LCAxNDMsIDIzNiwgNDQsIDIwNywgMTAzLCAxLCAxOTksIDE5OCwgMjA3LCAxMDMsIDEsIDE5OSwgMTk5LCAKKyAgICAyMzQsIDEzOSwgMjA3LCAxMDMsIDEsIDIyNywgNTcsIDIwNywgMTAzLCAxLCAyMjUsIDkwLCAyMDcsIDEwMywgMSwgMjIxLCAKKyAgICAxNjYsIDIwNywgMTAzLCAxLCAyMTgsIDg5LCAyMDcsIDEwMywgMSwgMjEwLCAxNjAsIDIwNywgMTAzLCAxLCA0NywgMjEwLCAKKyAgICAxNjAsIDIwNywgMTAzLCAxLCA3MiwgMjA3LCAxMDMsIDEsIDIxNiwgNzMsIDIwNywgMTAzLCAxLCAyMTMsIDEwNSwgMjE2LCAKKyAgICA3MywgMjA3LCAxMDMsIDEsIDIxMiwgNTQsIDIwNywgMTAzLCAxLCAyMTQsIDE0NiwgMjA3LCAxMDMsIDEsIDIxMywgMjAsIAorICAgIDIwNywgMTAzLCAxLCAyMTAsIDIxLCAyMDcsIDEwMywgMSwgMjA2LCAyMTUsIDIwNywgMTAzLCAxLCAyMTYsIDEyLCAyNDgsIAorICAgIDE5NCwgMjA3LCAxMDMsIDEsIDIxNiwgMTIsIDIzNSwgMTkyLCAyMDcsIDEwMywgMSwgMjE2LCAxMiwgMjQxLCA5NSwgMjA3LCAKKyAgICAxMDMsIDIxNCwgMjI1LCA1NiwgMjA3LCAxMDMsIDIxNCwgMjI1LCA1NywgMjA3LCAxMDMsIDIxNCwgMjI1LCAyMzksIDE3OSwgCisgICAgMjA3LCAxMDMsIDE5OSwgOCwgNTYsIDIwNywgMTAzLCAxOTksIDgsIDU3LCAyMDcsIDEwMywgMTk5LCA4LCAyMzksIDE3OSwgCisgICAgMjA3LCAxMDMsIDIxMywgMTkzLCA1NiwgMjA3LCAxMDMsIDIxMywgMTkzLCA1NywgMjA3LCAxMDMsIDIzOSwgMTgwLCAxOTksIAorICAgIDE1LCAyMzMsIDE3NiwgMjA3LCAxMDMsIDIzOSwgMTgwLCAxOTksIDE1LCAyNTEsIDY0LCAyMDcsIDEwMywgMjM0LCAxNDQsIAorICAgIDU2LCAyMDcsIDEwMywgMjM0LCAxNDQsIDU3LCAyMDcsIDEwMywgMjM0LCAxNDMsIDIzOSwgMTc5LCAyMDcsIDEwMywgMjM4LCAKKyAgICA5OCwgNTYsIDIwNywgMTAzLCAyMzgsIDk4LCA1NywgMjA3LCAxMDMsIDIxMiwgMTM4LCAyMDcsIDEwMywgMjM3LCAxMjgsIAorICAgIDI0MCwgMTgyLCAyMDcsIDEwMywgMjE0LCA1NywgMjA3LCAxMDMsIDIxMiwgMTY3LCAyMDcsIDEwMywgMTIwLCA4MywgMTkwLCAKKyAgICA1NiwgMjA3LCAxMDMsIDEyMCwgODMsIDE5MCwgNTcsIDIwNywgMTAzLCAxMjYsIDE5MCwgNTYsIDIwNywgMTAzLCAxMjYsIAorICAgIDE5MCwgNTcsIDIwNywgMTAzLCAyMTcsIDEzOCwgMjI0LCAxNzcsIDU2LCAyMDcsIDEwMywgMjE3LCAxMzgsIDIyNCwgMTc3LCAKKyAgICA1NywgMjA3LCAxMDMsIDIyMCwgMjQ1LCAyMDcsIDEwMywgMjQ5LCA2OCwgMjA3LCAxMDMsIDEsIDIwOSwgMjAsIDE5OSwgNzUsIAorICAgIDIwNywgMTAzLCAxLCAyMDksIDIwLCAyMjYsIDE5NiwgMjA3LCAxMDMsIDEsIDIwOSwgMjAsIDIzNywgMTQ3LCA5LCAxLCAKKyAgICAyNDgsIDI0MSwgMywgMTI2LCAxOTAsIDIzMywgMTI2LCA1NywgOSwgMSwgMjQ4LCAyNDEsIDMsIDczLCAyNDgsIDIyOCwgMjYsIAorICAgIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjQ4LCAyNDEsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCAyNDgsIAorICAgIDI0MSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgMjQ4LCAyMjgsIDI2LCAxMjAsIDE5MCwgNTYsIDksIDEsIDI0OCwgCisgICAgMjQxLCAzLCAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDksIDEsIDI0OCwgMjQxLCAzLCAyMjgsIDUwLCA0LCAKKyAgICAyMDMsIDE2OSwgNTcsIDksIDEsIDI0OCwgMjQxLCAzLCA0LCAyMDMsIDE2OCwgOSwgMSwgMTU1LCAzLCAxMjAsIDE5MCwgNTYsIAorICAgIDksIDEsIDE1NSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDI0MiwgMzAsIDMsIDEyMCwgMTkwLCAKKyAgICAyMDIsIDI0OCwgMjQ4LCAyMjgsIDI2LCA0LCAyMDcsIDksIDksIDEsIDI0MiwgMzAsIDMsIDIyOCwgNTAsIDQsIDIwMywgCisgICAgMTY5LCA1NywgOSwgMSwgMjEzLCAxNTUsIDMsIDk3LCA5LCAxLCAyMTEsIDE4NywgMywgMjM2LCAyMjksIDE5MCwgNTYsIDksIAorICAgIDEsIDI1MSwgMTcyLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTkxLCAKKyAgICA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyMCwgMTkwLCAyMDIsIDI0OCwgNTYsIDksIDEsIDIzNywgMTM1LCAzLCAxMjAsIAorICAgIDE5MCwgNTcsIDksIDEsIDIzNywgMTM1LCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgMjI2LCAyNTMsIAorICAgIDMsIDczLCA1NiwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyNiwgMTkwLCAKKyAgICAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCA4NCwgMywgNzMsIDU2LCA5LCAxLCA4NCwgMywgNzMsIDU3LCA5LCAxLCAyMTgsIAorICAgIDIyOCwgMywgMTIwLCAxOTAsIDU3LCA5LCAxLCAyMTgsIDIyOCwgMywgNCwgMjA3LCA5LCA5LCAxLCAyMTgsIDIyOCwgMywgNCwgCisgICAgMjAzLCAxNjgsIDksIDEsIDIyNSwgOTIsIDMsIDE0OCwgOSwgMSwgMjEzLCAxNTUsIDMsIDEyMCwgMTkwLCAyMDIsIDI0OCwgCisgICAgNTYsIDksIDEsIDIxMywgMTU1LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCAxMjAsIDE5MCwgMjAyLCAKKyAgICAyNDgsIDU2LCA5LCAxLCAxNTUsIDMsIDQsIDksIDEsIDIwNywgMTAsIDU3LCA5LCAxLCAxNTUsIDMsIDQsIDksIDEsIDIwNywgCisgICAgMTAsIDI2LCAxMjAsIDI0MCwgMTgwLCA5LCAxLCAyMTEsIDE4NywgMywgNCwgOSwgMSwgMjA3LCAxMCwgMjYsIDEyMCwgMjQwLCAKKyAgICAxODAsIDksIDEsIDIxMywgMTU1LCAzLCA0LCA5LCAxLCAyMDcsIDEwLCAyNiwgMTIwLCAyNDAsIDE4MCwgOSwgMSwgMTU1LCAKKyAgICAzLCA0LCA5LCAxLCAyMDcsIDEwLCA1NiwgOSwgMSwgMTQwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgNTYsIDksIAorICAgIDEsIDE0MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjYsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIzOCwgCisgICAgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIAorICAgIDEyNiwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAyMzYsIDIyOSwgNTcsIDksIAorICAgIDEsIDIwMSwgNzMsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCA1NiwgOSwgMSwgMjAxLCA3MywgMywgMjM4LCAzMywgCisgICAgMjUwLCAyNDgsIDE3LCAxMjYsIDU2LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIAorICAgIDU2LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjYsIDU2LCA5LCAxLCAxNTUsIDMsIAorICAgIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMjM2LCAyMjksIDU3LCA5LCAxLCAyMTEsIDE4NywgMywgMjM4LCAzMywgMjUwLCAKKyAgICAyNDgsIDE3LCAyMzYsIDIyOSwgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgOSwgMSwgMjI3LCAKKyAgICA4NywgMywgMTIwLCAxOTAsIDU2LCAyMDYsIDExOSwgMSwgMjM0LCAyMzMsIDIwNiwgMTE5LCAxLCAyMTAsIDcxLCAyMDYsIAorICAgIDExOSwgMSwgMjE4LCAyMjYsIDIwNiwgMTE5LCAxLCAyMTMsIDI0OCwgMjA2LCAxMTksIDEsIDI0OSwgMTM0LCAyMDYsIDExOSwgCisgICAgMSwgMjI0LCAyMjAsIDIwNiwgMTE5LCAxLCAyMjcsIDEwMSwgMjA2LCAxMTksIDEsIDI1MSwgMTI5LCAyMDYsIDExOSwgMSwgCisgICAgMjAzLCA4OCwgMjA2LCAxMTksIDEsIDIyMiwgNjAsIDIwNiwgMTE5LCAxLCAyMzcsIDE5MywgMjA2LCAxMTksIDEsIDI0MSwgCisgICAgOTgsIDIwNiwgMTE5LCAxLCAyMDYsIDEyMSwgMjA2LCAxMTksIDEsIDIyNSwgMTcyLCAyMDYsIDExOSwgMSwgMjM2LCA4NSwgCisgICAgMjA2LCAxMTksIDEsIDIzNSwgMTE5LCAyMDYsIDExOSwgMSwgMjExLCAxODUsIDIwNiwgMTE5LCAxLCAyNDEsIDIzNiwgMjA2LCAKKyAgICAxMTksIDEsIDE5OSwgOTUsIDIwNiwgMTE5LCAxLCAyMDYsIDIxNiwgMjA2LCAxMTksIDEsIDIwMCwgMTA5LCAyMDYsIDExOSwgCisgICAgMSwgMjE2LCA4NiwgMjA2LCAxMTksIDEsIDIyNywgMjMyLCAyMDYsIDExOSwgMSwgMjQ3LCAxMSwgMjA2LCAxMTksIDEsIAorICAgIDIwNCwgMjUyLCAyMDYsIDExOSwgMSwgMjM0LCA4MywgMjA2LCAxMTksIDEsIDIyNiwgMjA2LCAyMDYsIDExOSwgMSwgMjA2LCAKKyAgICAxMjAsIDIwNiwgMTE5LCAxLCAxOTksIDExMiwgMjA2LCAxMTksIDEsIDIxMCwgNjAsIDIwNiwgMTE5LCAxLCAyMTIsIDYwLCAKKyAgICAyMDYsIDExOSwgMSwgMjQyLCA1NiwgMjA2LCAxMTksIDEsIDEzOCwgMjA2LCAxMTksIDEsIDE5OSwgMTQsIDIwNiwgMTE5LCAKKyAgICAxLCAyNTEsIDE2OCwgMjA2LCAxMTksIDEsIDIzNSwgMTkzLCAyMDYsIDExOSwgMSwgMjE0LCAxNTYsIDIwNiwgMTE5LCAxLCAKKyAgICAyMDEsIDExMiwgMjA2LCAxMTksIDI1MiwgNSwgMjA2LCAxMTksIDI1MiwgMTAzLCAyMDYsIDExOSwgMjMyLCAyMzQsIDIwNiwgCisgICAgMTE5LCAyMzgsIDI1NCwgMjA2LCAxMTksIDIwNCwgMzksIDIwNiwgMTE5LCAyMTcsIDYyLCAyMDYsIDExOSwgMjM5LCA4LCAKKyAgICAyMDYsIDExOSwgMjM4LCAyNCwgMjA2LCAxMTksIDIxNywgMTM3LCAyMDYsIDExOSwgMjE3LCAxNDUsIDIwNiwgMTE5LCAyMDcsIAorICAgIDIzNiwgMjA2LCAxMTksIDEsIDIyMCwgMTU3LCAyMTksIDQ5LCAxNywgMTk5LCA4MSwgMjE5LCA0OSwgMTcsIDEwMiwgMjE5LCAKKyAgICA0OSwgMTcsIDEwNSwgMjE5LCA0OSwgMTcsIDE0NywgMjE5LCA0OSwgMTcsIDE0OSwgMjE5LCA0OSwgMTcsIDE2NCwgMjE5LCAKKyAgICA0OSwgMTcsIDE4NywgMjE5LCA0OSwgMTcsIDIxMCwgMTM1LCAyMTksIDQ5LCAxNywgMTkyLCAyMTksIDQ5LCAxNywgMjE5LCAKKyAgICAxMTMsIDIxOSwgNDksIDEsIDYyLCAyMTksIDQ5LCAxLCAyMzgsIDI1NSwgMjE5LCA0OSwgMSwgNzAsIDIxOSwgNDksIDEsIAorICAgIDcyLCAyMTksIDQ5LCAxLCA2NiwgMjE5LCA0OSwgMSwgMjE3LCA2MywgMjE5LCA0OSwgMSwgNzQsIDIxOSwgNDksIDEsIDI0MiwgCisgICAgNDQsIDIxOSwgNDksIDEsIDIyMCwgMjE0LCAyMTksIDQ5LCAxLCAyNDksIDEzNiwgMjE5LCA0OSwgMSwgMTcyLCAyMTksIDQ5LCAKKyAgICAxLCAyMDcsIDM2LCAyMTksIDQ5LCAxLCAyMjcsIDI0OCwgMjE5LCA0OSwgMSwgMjQ3LCAzNywgMjE5LCA0OSwgMSwgMjQyLCAKKyAgICA1OCwgMjE5LCA0OSwgMSwgMjEzLCAyNTIsIDIxOSwgNDksIDEsIDIxMiwgMjE1LCAyMTksIDQ5LCAxLCAyMTIsIDY0LCAyMTksIAorICAgIDQ5LCAxLCAyMzYsIDMyLCAyMTksIDQ5LCAxLCAyMzcsIDE5NSwgMjE5LCA0OSwgMSwgMTYxLCAyMTksIDQ5LCAxLCAxOTQsIAorICAgIDIxOSwgNDksIDEsIDIyMCwgMTYyLCAyMDAsIDI1MiwgMjE5LCA0OSwgMSwgMTc4LCAyMTksIDQ5LCAxLCAyMTgsIDYwLCAKKyAgICAyMTksIDQ5LCAxLCAxODgsIDIxOSwgNDksIDEsIDE0NCwgMjE5LCA0OSwgMSwgMjAxLCAxMTQsIDIxOSwgNDksIDEsIDE4MywgCisgICAgMjE5LCA0OSwgMSwgMjE4LCA2MSwgMjAwLCAyNTIsIDIxOSwgNDksIDEsIDIyNywgMTU4LCAyMjcsIDI0OCwgMjE5LCA0OSwgCisgICAgMSwgMjI3LCAxNTgsIDI0NywgMzcsIDIxOSwgNDksIDEsIDIyNywgMTU4LCAyMTMsIDI1MiwgMjE5LCA0OSwgMzgsIDIwOSwgCisgICAgMjUwLCAxMjIsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMjA5LCAyNTAsIDEyOCwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAKKyAgICAyMDksIDI1MCwgMjEzLCAxOSwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAxNjgsIDI0MSwgMTE4LCAyMDUsIDE3NCwgMjE5LCAKKyAgICA0OSwgMzgsIDE2OCwgMTIyLCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDE2OCwgMTI4LCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIAorICAgIDE2OCwgMjEzLCAxOSwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAyMjAsIDEyMiwgODEsIDIxOSwgNDksIDM4LCA1MywgNzMsIAorICAgIDU2LCAyMTksIDQ5LCAxMjIsIDE1MCwgMjUxLCAxMywgMjE5LCA0OSwgMTI4LCAxNTAsIDI1MSwgMTMsIDIxOSwgNDksIDE2LCAKKyAgICAyMTcsIDY0LCAyNDEsIDEzMiwgMjE5LCA0OSwgMTYsIDIzNiwgMzEsIDIxOSwgNDksIDI0NiwgNzAsIDIxOSwgNDksIDIzOCwgCisgICAgNDMsIDgxLCAyMTksIDQ5LCAyMjUsIDE0NywgMjEyLCAyMiwgMSwgMjUxLCAxNDksIDIxMiwgMjIsIDEsIDI0OCwgMTUyLCAKKyAgICAyMTIsIDIyLCAxLCAyMzYsIDY1LCAyMTIsIDIyLCAxLCAyNDIsIDI4LCAyMTIsIDIyLCAxLCAyMjgsIDMsIDIxMiwgMjIsIDEsIAorICAgIDI0OSwgMTM0LCAyMTIsIDIyLCAxLCAxOTksIDg0LCAyMTIsIDIyLCAxLCAyMjgsIDEyLCAyMTIsIDIyLCAxLCAyMDUsIDIxMywgCisgICAgMjEyLCAyMiwgMSwgMTk5LCAxODAsIDIxMiwgMjIsIDEsIDIyNywgMTAyLCAyMTIsIDIyLCAxLCAyMjUsIDE2OSwgMjEyLCAKKyAgICAyMiwgMSwgMjIxLCAxNjYsIDIxMiwgMjIsIDEsIDIxOCwgODksIDIxMiwgMjIsIDEsIDIwOSwgMTQwLCAyMTIsIDIyLCAxLCAKKyAgICAyMjgsIDExNywgMjEyLCAyMiwgMSwgMjM3LCAxMTIsIDIxMiwgMjIsIDEsIDIwNSwgMzAsIDIxMiwgMjIsIDEsIDIxNCwgNzYsIAorICAgIDIxMiwgMjIsIDEsIDIxMywgMjAsIDIxMiwgMjIsIDEsIDIxMCwgODksIDIxMiwgMjIsIDEsIDIwNywgMzEsIDIxMiwgMjIsIAorICAgIDEzNCwgMjI4LCAxMTcsIDIxMiwgMjIsIDEzNCwgMjI4LCAxMTYsIDIxMiwgMjIsIDEzNCwgMjE3LCAxMzMsIDIxMiwgMjIsIAorICAgIDEzNCwgMjQyLCA0MiwgMjEyLCAyMiwgNjcsIDEsIDIzOCwgMTI5LCAxOTksIDE4MCwgMjEyLCAyMiwgMTM0LCAyMzgsIDEyOSwgCisgICAgMTk5LCAxODAsIDIxMiwgMjIsIDIyLCAyLCAxNjgsIDcyLCAyMTIsIDIyLCAyMiwgMiwgNzIsIDIxMiwgMjIsIDIyLCAyLCAKKyAgICAyMTYsIDI0MCwgMjUyLCAxMzgsIDIxMiwgMjIsIDIyLCAyLCAxNjgsIDI1MiwgMTM4LCAyMTIsIDIyLCAyMiwgMiwgMjUyLCAKKyAgICAxMzgsIDIxMiwgMjIsIDIyLCAyLCAyMTYsIDI0MCwgNjIsIDIxMiwgMjIsIDIyLCAyLCAxNjgsIDYyLCAyMTIsIDIyLCAyMiwgCisgICAgMiwgNjIsIDIxMiwgMjIsIDY3LCAxLCAyMDksIDI1MCwgNjIsIDIxMiwgMjIsIDIyLCAyLCAyMDksIDI1MCwgNjIsIDIxMiwgCisgICAgMjIsIDIyLCAyLCAxNjgsIDY2LCAyMTIsIDIyLCAyMiwgMiwgNjYsIDIxMiwgMjIsIDY3LCAxLCA3MCwgMjEyLCAyMiwgMjIsIAorICAgIDIsIDE2OCwgNzAsIDIxMiwgMjIsIDIyLCAyLCA3MCwgMjEyLCAyMiwgMjIsIDIsIDc0LCAyMTIsIDIyLCAyMiwgMiwgMjA3LCAKKyAgICAyMzYsIDIxMiwgMjIsIDEzNCwgMjIwLCAxNywgMjEyLCAyMiwgMjE0LCAyMTIsIDIyMCwgMTcsIDIxMiwgMjIsIDIxNCwgCisgICAgMjEyLCAyNTEsIDE5NSwgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MSwgNzUsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNDksIDQ4LCAKKyAgICAyMTIsIDIyLCAyMTQsIDIxMiwgMjUwLCAxNDksIDIxMiwgMjIsIDIxNCwgMjEyLCAyMTAsIDksIDIxMiwgMjIsIDI1MiwgMywgCisgICAgODEsIDIxMiwgMjIsIDIxNCwgMjEyLCAyMjIsIDUwLCAyMTQsIDExMiwgMjEyLCAyMiwgMjE0LCAyMTIsIDE5OSwgMjIsIAorICAgIDIxMiwgMjIsIDIxNCwgMjEyLCAyMTQsIDExMiwgMjEyLCAyMiwgMjE0LCAyMTIsIDE5OSwgMTExLCAyMTIsIDIyLCAyMTQsIAorICAgIDIxMiwgMjA0LCAxODEsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTAsIDIxOSwgMjEyLCAyMiwgMjE0LCAyMTIsIDIwOSwgMjQsIAorICAgIDIyMiwgMTMzLCAyMTIsIDIyLCAyMTQsIDIxMiwgMjUxLCA1OSwgMjIyLCAxNzYsIDEsIDIzNCwgMjEwLCAyMjIsIDE3NiwgMSwgCisgICAgMjUyLCA4OSwgMjIyLCAxNzYsIDEsIDI1MSwgMTkzLCAyMjIsIDE3NiwgMSwgMjUxLCAyMzUsIDIyMiwgMTc2LCAxLCAyNTEsIAorICAgIDE4NSwgMjIyLCAxNzYsIDEsIDIwMywgMTg4LCAyMjIsIDE3NiwgMSwgMjUwLCAxMDUsIDIyMiwgMTc2LCAxLCAyMjgsIDEyLCAKKyAgICAyMjIsIDE3NiwgMSwgMjUwLCAxNDYsIDIyMiwgMTc2LCAxLCAyNTEsIDE1NCwgMjIyLCAxNzYsIDEsIDI1MSwgMTU5LCAyMjIsIAorICAgIDE3NiwgMSwgMjUxLCAxNTEsIDIyMiwgMTc2LCAxLCAyNTEsIDEwMSwgMjIyLCAxNzYsIDEsIDI1MSwgODUsIDIyMiwgMTc2LCAKKyAgICAxLCAyNTAsIDE4OCwgMjIyLCAxNzYsIDEsIDIyOCwgMTE3LCAyMjIsIDE3NiwgMSwgMjUxLCAyOCwgMjIyLCAxNzYsIDEsIAorICAgIDI1MCwgMTU3LCAyMjIsIDE3NiwgMSwgMjUxLCAxLCAyMjIsIDE3NiwgMSwgMjUwLCAyNTMsIDIyMiwgMTc2LCAxLCAyNTAsIAorICAgIDE4MSwgMjIyLCAxNzYsIDEsIDI1MCwgMTU1LCAyMjIsIDE3NiwgMSwgMjM5LCAxMTIsIDIyMiwgMTc2LCAxLCAyMjcsIDk0LCAKKyAgICAyMjIsIDE3NiwgMSwgMjUxLCAxNzEsIDIyMiwgMTc2LCAyNTEsIDE5OSwgODEsIDIyMiwgMTc2LCAyMDIsIDE5MSwgODEsIAorICAgIDIyMiwgMTc2LCAyMzYsIDMsIDgxLCAyMjIsIDE3NiwgMjE0LCAyMTEsIDksIDEsIDI0OCwgMjQxLCAzLCA0LCAyMDMsIDE2OSwgCisgICAgNTcsIDksIDEsIDI0OCwgMjQxLCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDE5MywgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMDcsIDEwLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDIzNywgMTM1LCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAxMjYsIDE5MCwgCisgICAgNTYsIDksIDEsIDIxNCwgMTUzLCAzLCA3MywgNTcsIDksIDEsIDIyNSwgOTIsIDMsIDUzLCAxNDgsIDksIDEsIDg0LCAzLCAKKyAgICAxMjYsIDE5MCwgNTYsIDksIDEsIDkwLCAzLCAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCAyMzQsIDIwNCwgNTYsIDksIDEsIAorICAgIDkwLCAzLCAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDksIDEsIDIxMywgMTU1LCAzLCAyMjQsIDc0LCA5LCAxLCAKKyAgICAyMDEsIDczLCAzLCA3MywgMjAxLCA0LCA5LCAxLCAyMTIsIDI0NSwgMjAwLCA0NiwgOSwgMSwgMTI4LCAyNTEsIDE0MiwgOSwgCisgICAgMSwgMjQyLCAzMCwgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMTIsIDU3LCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIzNiwgCisgICAgNzcsIDMsIDIyOCwgNTAsIDk3LCA5LCAxLCAyMDgsIDY4LCAyMDEsIDcyLCA5LCAxLCAxOTksIDEwNiwgMywgMjI4LCA1MCwgCisgICAgMjAzLCAxNjksIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMjcsIDg3LCAzLCA3MywgNTcsIAorICAgIDksIDEsIDI0OCwgMjQxLCAzLCA0LCA4NCwgNTYsIDksIDEsIDIxNiwgNTUsIDMsIDQsIDg0LCA1NiwgOSwgMSwgMjA2LCAKKyAgICAxODQsIDMsIDQsIDIwNiwgMTg0LCA1NiwgOSwgMSwgMjEzLCAxNTUsIDMsIDQsIDIxOCwgMjI4LCA1NiwgOSwgMSwgOTAsIDMsIAorICAgIDEyMCwgMTkwLCAyNDgsIDIyOCwgMjYsIDQsIDIxOCwgMjI4LCA1NiwgOSwgMSwgMjUxLCAxOTYsIDIzNywgMTM0LCA5LCAxLCAKKyAgICAyNTEsIDE5NiwgMjE0LCAxNTIsIDksIDEsIDI1MSwgMTk2LCAyMTgsIDIyNywgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjUwLCAKKyAgICAyNTAsIDksIDQsIDEyMiwgMjEyLCA1NiwgOSwgNCwgMTIyLCAyNTEsIDE3MSwgOSwgNCwgMTIyLCAyMTQsIDE1MiwgOSwgNCwgCisgICAgMTIyLCAyMTgsIDIyOCwgMywgMjI3LCAzNiwgOSwgNCwgMTI4LCAyMTgsIDIyOCwgMywgMjI3LCAzNiwgOSwgNCwgMTIyLCAKKyAgICAyMDAsIDIzOCwgMjUwLCAxNTQsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDI1MCwgMTg3LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAKKyAgICAyNTEsIDg0LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyMTIsIDM3LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyMTQsIDExNiwgOSwgCisgICAgNCwgMTIyLCAyMDAsIDIzOCwgMjAxLCA5NSwgOSwgNCwgMTIyLCAyMzYsIDI1MywgMjIyLCAxNDUsIDksIDQsIDEyMiwgMiwgCisgICAgMjEyLCA1MiwgOSwgMjQwLCAyNTEsIDIzOCwgMTcxLCA3NiwgMjUwLCAxMTEsIDksIDIwNCwgMTg1LCAyNDIsIDE4LCA1NywgCisgICAgOSwgMjQyLCAxOTYsIDIzNywgMTU4LCA5LCAyNDIsIDE5NiwgMjQyLCAxNywgOSwgMjQyLCAxOTYsIDIyNywgMzYsIDksIAorICAgIDI0MiwgMTk2LCAyMzcsIDE1NiwgOSwgMjQyLCAxOTYsIDI0MiwgMTUsIDksIDI0MiwgMTk2LCAyMjcsIDM0LCA5LCAxNTAsIAorICAgIDExMiwgNzMsIDU2LCA5LCAxNTAsIDEyMCwgMTkwLCA1NiwgOSwgMTUwLCAyMjQsIDc1LCA1NiwgOSwgMTUwLCAxMTIsIDczLCAKKyAgICA1NywgOSwgMTUwLCAxMjAsIDE5MCwgNTcsIDksIDE1MCwgMjI0LCA3NSwgNTcsIDksIDE3NiwgMjM3LCAxNTYsIDksIDE3NiwgCisgICAgMjQyLCAxNSwgOSwgMTc2LCAyMjcsIDM0LCA5LCA0LCAxMjIsIDIwMSwgNzIsIDksIDIzNywgMTU5LCAzLCAyMTMsIDI2LCA5LCAKKyAgICAyMzcsIDE1OSwgMywgNzMsIDU2LCA5LCAyMjcsIDM3LCAzLCA3MywgNTcsIDksIDQ5LCAyNTAsIDIwMywgNTYsIDksIDUxLCAKKyAgICAyNTAsIDIwMywgNTYsIDksIDQ5LCAyNTAsIDIwMywgNTcsIDksIDUxLCAyNTAsIDIwMywgNTcsIDksIDUzLCA1MSwgMjUwLCAKKyAgICAyMDMsIDU2LCA5LCA1MywgNTEsIDI1MCwgMjAzLCA4OCwgMywgMjQwLCAxODIsIDksIDUxLCAyNTAsIDIwMywgODgsIDMsIAorICAgIDI0MCwgMTgyLCA5LCAyNDIsIDE4LCAzLCAyNDAsIDE4MiwgOSwgMTM0LCAyMDksIDE3MywgMjE4LCAyMjgsIDIzNSwgMTY1LCAKKyAgICA5NCwgMiwgMjI4LCA1MCwgMjQ3LCAxNDksIDk0LCAyLCAyNDcsIDE0OSwgOTQsIDIsIDI1MSwgMzMsIDk0LCAyLCAyMDIsIAorICAgIDIwMywgOTQsIDEsIDIwOSwgMjUwLCA2MiwgOTQsIDEsIDYyLCA5NCwgMSwgMjUyLCAxMzgsIDk0LCAxLCA3MCwgOTQsIDEsIAorICAgIDIyOCwgMTUxLCA5NCwgMSwgNjYsIDk0LCAxLCAyMDMsIDE4MiwgOTQsIDEsIDEwOSwgMTQ2LCA5NCwgMSwgMTA5LCAxNTYsIAorICAgIDk0LCAxLCAyNDcsIDE1MiwgNzIsIDk0LCAxLCAyMDksIDI1MCwgNzIsIDk0LCAxLCA3MiwgOTQsIDEsIDI1MSwgMTc2LCA5NCwgCisgICAgMSwgMjQ3LCAxNTIsIDc0LCA5NCwgMSwgMjA5LCAyNTAsIDc0LCA5NCwgMSwgNzQsIDk0LCAxLCAyNTAsIDEzOSwgOTQsIDEsIAorICAgIDE2MSwgOTQsIDEsIDIyNiwgMjA3LCA5NCwgMSwgMjM2LCA4OSwgOTQsIDEsIDIzNSwgMTk5LCA5NCwgMSwgMjE5LCAyNTMsIAorICAgIDk0LCAxLCAyNDcsIDE5MCwgOTQsIDEsIDI0NywgMzcsIDk0LCAxLCAyMjcsIDI0OCwgOTQsIDEsIDIyNywgMjE1LCA5NCwgMSwgCisgICAgMjE4LCA2MCwgOTQsIDEsIDIwNCwgMjUzLCA5NCwgMSwgMjA0LCAyNDEsIDk0LCAxLCAyNDEsIDIyMCwgOTQsIDEsIDI0MSwgCisgICAgMjA0LCA5NCwgMSwgMjE5LCAyMSwgOTQsIDEsIDIwNywgMzYsIDk0LCAxLCAyMDYsIDEyMiwgOTQsIDEsIDI0MiwgNTgsIDk0LCAKKyAgICAxLCAyNDEsIDEwMCwgOTQsIDEsIDE4OCwgOTQsIDEsIDIxOSwgMywgOTQsIDEsIDE3MiwgOTQsIDEsIDIxNSwgMjQ1LCA5NCwgCisgICAgMSwgMjQ5LCAxMzYsIDk0LCAxLCAyNDgsIDIwMCwgOTQsIDEsIDE3OCwgOTQsIDEsIDE4MywgOTQsIDEsIDIxMywgMjUyLCAKKyAgICA5NCwgMSwgMjEyLCAyMTUsIDk0LCAxLCAxOTQsIDk0LCAxLCAyMjQsIDEzOCwgOTQsIDEsIDIyNCwgMTI5LCA5NCwgMSwgCisgICAgMjAzLCA5MCwgOTQsIDEsIDIxMCwgMTE0LCA5NCwgMSwgMjA4LCAxNzksIDk0LCAxLCAyMTIsIDY0LCA5NCwgMSwgMTQ0LCAKKyAgICA5NCwgMjIsIDIsIDIxNywgMTIxLCA5NCwgMjIsIDIsIDIxNywgNjEsIDk0LCAyLCAyMTgsIDEwMCwgOTQsIDIsIDI1MCwgCisgICAgMTIyLCA5NCwgMjIsIDIsIDI1MiwgMTM4LCA5NCwgMjIsIDIsIDcwLCA5NCwgMjIsIDIsIDIyOCwgMTUxLCA5NCwgMjIsIDIsIAorICAgIDY2LCA5NCwgMjIsIDIsIDIwMywgMTgyLCA5NCwgMjIsIDIsIDEwOSwgMTQ2LCA5NCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIAorICAgIDk0LCAyMiwgMiwgMjQ3LCAxNTIsIDcyLCA5NCwgMjIsIDIsIDIwOSwgMjUwLCA3MiwgOTQsIDIyLCAyLCA3MiwgOTQsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgOTQsIDIyLCAyLCAyNDcsIDE1MiwgNzQsIDk0LCAyMiwgMiwgMjA5LCAyNTAsIDc0LCA5NCwgMjIsIDIsIAorICAgIDc0LCA5NCwgMjIsIDIsIDI1MCwgMTM5LCA5NCwgMiwgMjAyLCAyMDgsIDk0LCAyMiwgMiwgMjE1LCA2LCA3MiwgOTQsIDIyLCAKKyAgICAyLCAyNTAsIDExNywgOTQsIDIxNywgODYsIDk0LCAyMDgsIDU3LCAyLCAyMDQsIDMzLCA5NCwgMjA4LCA1NywgMiwgMjUxLCAKKyAgICAzNSwgOTQsIDIzNSwgNzQsIDI1MSwgMjUxLCA5NCwgMjUxLCAyMzksIDI1MSwgMjUxLCA5NCwgMjIsIDIsIDI0NywgMTUyLCAKKyAgICAxNjgsIDcyLCA5NCwgMjIsIDIsIDIwNCwgMzEsIDk0LCAyMiwgMiwgMjAzLCAxODEsIDk0LCAxLCAyMTQsIDE1OSwgOTQsIDEsIAorICAgIDIyNiwgMTg4LCA5NCwgMSwgMjM1LCAxNzQsIDk0LCAxLCAxOTksIDExNCwgOTQsIDEsIDI0MSwgMjA5LCA5NCwgMSwgMjEzLCAKKyAgICA5MywgOTQsIDEsIDIzNywgMTk1LCA5NCwgMSwgMTk5LCAxNjYsIDk0LCAxLCAxMDksIDIxMiwgMjE2LCA5NCwgMSwgMTA5LCAKKyAgICAyMjQsIDEzOSwgOTQsIDIyLCAyLCAxMDksIDE1NiwgOTQsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCA5NCwgMjQyLCAxMCwgOTQsIAorICAgIDUzLCAyNDIsIDEwLCA5NCwgMTcsIDE5OSwgODEsIDk0LCAxNywgMTAyLCA5NCwgMTcsIDEwNSwgOTQsIDE3LCAxNDcsIDk0LCAKKyAgICAxNywgMTQ5LCA5NCwgMTcsIDE2NCwgOTQsIDE3LCAxODcsIDk0LCAxNywgMjEwLCAxMzUsIDk0LCAxNywgMTkyLCA5NCwgMTcsIAorICAgIDIxOSwgMTEzLCA5NCwgMjUyLCAzLCA1NCwgOTQsIDIsIDEyMiwgMjA4LCAyNDMsIDI0MCwgMTgyLCA5NCwgMSwgMjQ3LCAKKyAgICAxNTIsIDYyLCA5NCwgMSwgMjE3LCAxMjEsIDk0LCAxLCAyMTcsIDYxLCA5NCwgMSwgMjUwLCAxMTcsIDk0LCAxLCAyMDQsIAorICAgIDMxLCA5NCwgMSwgMjAzLCAxODEsIDk0LCAxLCAyMjIsIDEzOCwgMjQxLCAyMjAsIDk0LCAxLCAxOTksIDc3LCA5NCwgMSwgCisgICAgODAsIDE4MywgOTQsIDEsIDIzNSwgMjM1LCA5NCwgMSwgMjI3LCAxOTQsIDk0LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgOTQsIAorICAgIDEsIDI0MSwgMjEwLCA5NCwgMSwgMjQ5LCA0NCwgMTg1LCAyNTEsIDYyLCAxODUsIDIsIDI0NywgMTQ5LCAxODUsIDIsIDI1MSwgCisgICAgMzMsIDE4NSwgMiwgMjAyLCAyMDMsIDE4NSwgMSwgNjIsIDE4NSwgMSwgMjUyLCAxMzgsIDE4NSwgMSwgNzAsIDE4NSwgMSwgCisgICAgMjI4LCAxNTEsIDE4NSwgMSwgNjYsIDE4NSwgMSwgMjAzLCAxODIsIDE4NSwgMSwgMTA5LCAxNDYsIDE4NSwgMSwgMTA5LCAKKyAgICAxNTYsIDE4NSwgMSwgNzIsIDE4NSwgMSwgMjUxLCAxNzYsIDE4NSwgMSwgNzQsIDE4NSwgMSwgMjUwLCAxMzksIDE4NSwgMSwgCisgICAgMTYxLCAxODUsIDEsIDIyNiwgMjA3LCAxODUsIDEsIDIzNiwgODksIDE4NSwgMSwgMjM1LCAxOTksIDE4NSwgMSwgMjE5LCAKKyAgICAyNTMsIDE4NSwgMSwgMjQ3LCAxOTAsIDE4NSwgMSwgMjQ3LCAzNywgMTg1LCAxLCAyMjcsIDI0OCwgMTg1LCAxLCAyMjcsIAorICAgIDIxNSwgMTg1LCAxLCAyMTgsIDYwLCAxODUsIDEsIDIwNCwgMjUzLCAxODUsIDEsIDIwNCwgMjQxLCAxODUsIDEsIDI0MSwgCisgICAgMjIwLCAxODUsIDEsIDI0MSwgMjA0LCAxODUsIDEsIDIxOSwgMjEsIDE4NSwgMSwgMjA3LCAzNiwgMTg1LCAxLCAyMDYsIAorICAgIDEyMiwgMTg1LCAxLCAyNDIsIDU4LCAxODUsIDEsIDI0MSwgMTAwLCAxODUsIDEsIDE4OCwgMTg1LCAxLCAxNzIsIDE4NSwgMSwgCisgICAgMjE1LCAyNDUsIDE4NSwgMSwgMjQ5LCAxMzYsIDE4NSwgMSwgMjQ4LCAyMDAsIDE4NSwgMSwgMTc4LCAxODUsIDEsIDE4MywgCisgICAgMTg1LCAxLCAyMTMsIDI1MiwgMTg1LCAxLCAxOTQsIDE4NSwgMSwgMjEwLCAxMTQsIDE4NSwgMSwgMjA4LCAxNzksIDE4NSwgCisgICAgMSwgMjEyLCA2NCwgMTg1LCAxLCAxNDQsIDE4NSwgMiwgMjE4LCAxMDAsIDE4NSwgMiwgMjUwLCAxMjIsIDE4NSwgMjIsIDIsIAorICAgIDI1MiwgMTM4LCAxODUsIDIyLCAyLCA3MCwgMTg1LCAyMiwgMiwgMjI4LCAxNTEsIDE4NSwgMjIsIDIsIDY2LCAxODUsIDIyLCAKKyAgICAyLCAyMDMsIDE4MiwgMTg1LCAyMiwgMiwgMTA5LCAxNDYsIDE4NSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE4NSwgMjIsIDIsIAorICAgIDcyLCAxODUsIDIyLCAyLCAyNTEsIDE3NiwgMTg1LCAyMiwgMiwgNzQsIDE4NSwgMjIsIDIsIDI1MCwgMTM5LCAxODUsIDIsIAorICAgIDIwMiwgMjA4LCAxODUsIDEsIDIyNiwgMTk4LCAyMDcsIDM2LCAxODUsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCAxODUsIDEsIAorICAgIDIxMiwgMjE1LCAxODUsIDEsIDIxMywgOTMsIDE4NSwgMSwgMTk5LCAxNjYsIDE4NSwgMSwgMTA5LCAyMTIsIDIxNiwgMTg1LCAKKyAgICAxLCAxMDksIDIyNCwgMTM5LCAxODUsIDIyLCAyLCAxMDksIDE1NiwgMTg1LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTg1LCAKKyAgICAxNywgMTk5LCA4MSwgMTg1LCAxNywgMTAyLCAxODUsIDE3LCAxMDUsIDE4NSwgMTcsIDE0NywgMTg1LCAxNywgMTQ5LCAxODUsIAorICAgIDE3LCAxNjQsIDE4NSwgMTcsIDE4NywgMTg1LCAxNywgMjEwLCAxMzUsIDE4NSwgMTcsIDE5MiwgMTg1LCAxNywgMjE5LCAKKyAgICAxMTMsIDE4NSwgMSwgMjEzLCAyNTMsIDMsIDEwMSwgMjQxLCA3MCwgMTg1LCAxLCAyMTMsIDI1MywgMywgMjI0LCA1NCwgCisgICAgMjQxLCA3MCwgMTg1LCAyMTIsIDE0OSwgODEsIDE4NSwgMjEyLCAxNDksIDU0LCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAKKyAgICAxMDIsIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIDEwNSwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgMTQ3LCAxODUsIDI0MiwgCisgICAgMTk1LCAyMTgsIDkyLCAxNDksIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIDExMiwgMjI0LCAyNDIsIDIwNiwgMTEyLCAyMDYsIAorICAgIDEwNywgMjQxLCAxMzAsIDE4NSwgMjQyLCAxOTUsIDI0MSwgMTMxLCAyMDksIDEwMCwgMTg1LCAyMjgsIDEzLCAxODUsIDIzNiwgCisgICAgNTYsIDgxLCAyMzUsIDE4LCAyLCAyNTEsIDIzNCwgMjQ4LCAxNjgsIDIzNSwgMTgsIDIsIDI0OCwgMTY4LCAyMzUsIDE4LCAyLCAKKyAgICAyMDIsIDIwMywgMjM1LCAxOCwgMSwgNjIsIDIzNSwgMTgsIDEsIDI1MiwgMTM4LCAyMzUsIDE4LCAxLCA3MCwgMjM1LCAxOCwgCisgICAgMSwgMjI4LCAxNTEsIDIzNSwgMTgsIDEsIDY2LCAyMzUsIDE4LCAxLCAyMDMsIDE4MiwgMjM1LCAxOCwgMSwgMjM4LCAyNTUsIAorICAgIDIzNSwgMTgsIDEsIDI1MSwgMTc2LCAyMzUsIDE4LCAxLCAyMTcsIDYzLCAyMzUsIDE4LCAxLCAyNTAsIDEzOSwgMjM1LCAxOCwgCisgICAgMSwgMTYxLCAyMzUsIDE4LCAxLCAyMjYsIDIwNywgMjM1LCAxOCwgMSwgMjM2LCA4OSwgMjM1LCAxOCwgMSwgMjM1LCAxOTksIAorICAgIDIzNSwgMTgsIDEsIDIxOSwgMjUzLCAyMzUsIDE4LCAxLCAyNDcsIDE5MCwgMjM1LCAxOCwgMSwgMjQ3LCAzNywgMjM1LCAxOCwgCisgICAgMSwgMjI3LCAyNDgsIDIzNSwgMTgsIDEsIDIyNywgMjE1LCAyMzUsIDE4LCAxLCAyMTgsIDYwLCAyMzUsIDE4LCAxLCAyMDQsIAorICAgIDI1MywgMjM1LCAxOCwgMSwgMjA0LCAyNDEsIDIzNSwgMTgsIDEsIDI0MSwgMjIwLCAyMzUsIDE4LCAxLCAyNDEsIDIwNCwgCisgICAgMjM1LCAxOCwgMSwgMjE5LCAyMSwgMjM1LCAxOCwgMSwgMjA3LCAzNiwgMjM1LCAxOCwgMSwgMjA2LCAxMjIsIDIzNSwgMTgsIAorICAgIDEsIDI0MiwgNTgsIDIzNSwgMTgsIDEsIDI0MSwgMTAwLCAyMzUsIDE4LCAxLCAxODgsIDIzNSwgMTgsIDEsIDE3MiwgMjM1LCAKKyAgICAxOCwgMSwgMjE1LCAyNDUsIDIzNSwgMTgsIDEsIDI0OSwgMTM2LCAyMzUsIDE4LCAxLCAyNDgsIDIwMCwgMjM1LCAxOCwgMSwgCisgICAgMTc4LCAyMzUsIDE4LCAxLCAxODMsIDIzNSwgMTgsIDEsIDIxMywgMjUyLCAyMzUsIDE4LCAxLCAxOTQsIDIzNSwgMTgsIDEsIAorICAgIDIyNCwgMTM4LCAyMzUsIDE4LCAxLCAyMDMsIDkwLCAyMzUsIDE4LCAxLCAyMTAsIDExNCwgMjM1LCAxOCwgMSwgMjEyLCA2NCwgCisgICAgMjM1LCAxOCwgMSwgMTQ0LCAyMzUsIDE4LCAyLCAyMTgsIDEwMCwgMjM1LCAxOCwgMjIsIDIsIDI1MiwgMTM4LCAyMzUsIDE4LCAKKyAgICAyMiwgMiwgNzAsIDIzNSwgMTgsIDIyLCAyLCAyMjgsIDE1MSwgMjM1LCAxOCwgMjIsIDIsIDY2LCAyMzUsIDE4LCAyMiwgMiwgCisgICAgMjAzLCAxODIsIDIzNSwgMTgsIDIyLCAyLCAyMzgsIDI1NSwgMjM1LCAxOCwgMjIsIDIsIDI1MSwgMTc2LCAyMzUsIDE4LCAKKyAgICAyMiwgMiwgMjE3LCA2MywgMjM1LCAxOCwgMjIsIDIsIDI1MCwgMTM5LCAyMzUsIDE4LCAyLCAyMDIsIDIwOCwgMjM1LCAxOCwgCisgICAgMiwgMjA0LCAzNSwgMjM1LCAxOCwgMSwgMjI2LCAxODgsIDIzNSwgMTgsIDEsIDIzNSwgMTc0LCAyMzUsIDE4LCAxLCAxOTksIAorICAgIDExNCwgMjM1LCAxOCwgMSwgMjEyLCAyMTUsIDIzNSwgMTgsIDEsIDIzNywgMTk1LCAyMzUsIDE4LCAxNywgMTk5LCA4MSwgCisgICAgMjM1LCAxOCwgMTcsIDEwMiwgMjM1LCAxOCwgMTcsIDEwNSwgMjM1LCAxOCwgMTcsIDE0NywgMjM1LCAxOCwgMTcsIDE0OSwgCisgICAgMjM1LCAxOCwgMTcsIDE2NCwgMjM1LCAxOCwgMTcsIDE4NywgMjM1LCAxOCwgMTcsIDIxMCwgMTM1LCAyMzUsIDE4LCAxNywgCisgICAgMTkyLCAyMzUsIDE4LCAxNywgMjE5LCAxMTMsIDIzNSwgMTgsIDIwNSwgMjIxLCAyMzUsIDE4LCAyNTEsIDIzMywgMjM1LCAKKyAgICAxOCwgMjI4LCAzMywgMjM1LCAxOCwgMjAzLCAyMTAsIDIzNSwgMTgsIDIzOCwgMjE3LCAyMTcsIDY4LCAyMzUsIDE4LCAyLCAKKyAgICAyMDAsIDg0LCAyMzUsIDMzLCAyLCAyNDcsIDE0OSwgMjM1LCAzMywgMiwgMjUxLCAzMywgMjM1LCAzMywgMiwgMjAyLCAyMDMsIAorICAgIDIzNSwgMzMsIDEsIDYyLCAyMzUsIDMzLCAxLCAyNTIsIDEzOCwgMjM1LCAzMywgMSwgNzAsIDIzNSwgMzMsIDEsIDIyOCwgCisgICAgMTUxLCAyMzUsIDMzLCAxLCA2NiwgMjM1LCAzMywgMSwgMjAzLCAxODIsIDIzNSwgMzMsIDEsIDEwOSwgMTQ2LCAyMzUsIDMzLCAKKyAgICAxLCAxMDksIDE1NiwgMjM1LCAzMywgMjIsIDI0NywgMTUyLCA3MiwgMjM1LCAzMywgMSwgNzIsIDIzNSwgMzMsIDEsIDI1MSwgCisgICAgMTc2LCAyMzUsIDMzLCAyMiwgMjQ3LCAxNTIsIDc0LCAyMzUsIDMzLCAxLCA3NCwgMjM1LCAzMywgMSwgMjUwLCAxMzksIAorICAgIDIzNSwgMzMsIDEsIDE2MSwgMjM1LCAzMywgMSwgMjI2LCAyMDcsIDIzNSwgMzMsIDEsIDIzNiwgODksIDIzNSwgMzMsIDEsIAorICAgIDIzNSwgMTk5LCAyMzUsIDMzLCAxLCAyMTksIDI1MywgMjM1LCAzMywgMSwgMjQ3LCAxOTAsIDIzNSwgMzMsIDEsIDI0NywgCisgICAgMzcsIDIzNSwgMzMsIDEsIDIyNywgMjQ4LCAyMzUsIDMzLCAxLCAyMjcsIDIxNSwgMjM1LCAzMywgMSwgMjE4LCA2MCwgMjM1LCAKKyAgICAzMywgMSwgMjA0LCAyNTMsIDIzNSwgMzMsIDEsIDIwNCwgMjQxLCAyMzUsIDMzLCAxLCAyNDEsIDIyMCwgMjM1LCAzMywgMSwgCisgICAgMjQxLCAyMDQsIDIzNSwgMzMsIDEsIDIxOSwgMjEsIDIzNSwgMzMsIDEsIDIwNywgMzYsIDIzNSwgMzMsIDEsIDIwNiwgMTIyLCAKKyAgICAyMzUsIDMzLCAxLCAyNDIsIDU4LCAyMzUsIDMzLCAxLCAyNDEsIDEwMCwgMjM1LCAzMywgMSwgMTg4LCAyMzUsIDMzLCAxLCAKKyAgICAxNzIsIDIzNSwgMzMsIDEsIDIxNSwgMjQ1LCAyMzUsIDMzLCAxLCAyNDksIDEzNiwgMjM1LCAzMywgMSwgMjQ4LCAyMDAsIAorICAgIDIzNSwgMzMsIDEsIDE3OCwgMjM1LCAzMywgMSwgMTgzLCAyMzUsIDMzLCAxLCAyMTMsIDI1MiwgMjM1LCAzMywgMSwgMTk0LCAKKyAgICAyMzUsIDMzLCAxLCAyMjQsIDEzOCwgMjM1LCAzMywgMSwgMjAzLCA5MCwgMjM1LCAzMywgMSwgMjEwLCAxMTQsIDIzNSwgMzMsIAorICAgIDEsIDIwOCwgMTc5LCAyMzUsIDMzLCAxLCAyMTIsIDY0LCAyMzUsIDMzLCAxLCAxNDQsIDIzNSwgMzMsIDIsIDIxOCwgMTAwLCAKKyAgICAyMzUsIDMzLCAyLCAyNTAsIDEyMiwgMjM1LCAzMywgMjIsIDIsIDI1MiwgMTM4LCAyMzUsIDMzLCAyMiwgMiwgNzAsIDIzNSwgCisgICAgMzMsIDIyLCAyLCAyMjgsIDE1MSwgMjM1LCAzMywgMjIsIDIsIDY2LCAyMzUsIDMzLCAyMiwgMiwgMjAzLCAxODIsIDIzNSwgCisgICAgMzMsIDIyLCAyLCAxMDksIDE0NiwgMjM1LCAzMywgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIzNSwgMzMsIDIyLCAyLCAyNDcsIAorICAgIDE1MiwgNzIsIDIzNSwgMzMsIDIyLCAyLCA3MiwgMjM1LCAzMywgMjIsIDIsIDI1MSwgMTc2LCAyMzUsIDMzLCAyMiwgMiwgCisgICAgMjQ3LCAxNTIsIDc0LCAyMzUsIDMzLCAyMiwgMiwgNzQsIDIzNSwgMzMsIDIyLCAyLCAyNTAsIDEzOSwgMjM1LCAzMywgMiwgCisgICAgMjAyLCAyMDgsIDIzNSwgMzMsIDIxNywgODYsIDIzNSwgMzMsIDEsIDEwOSwgMjEyLCAyMTYsIDIzNSwgMzMsIDEsIDEwOSwgCisgICAgMjI0LCAxMzksIDIzNSwgMzMsIDIyLCAyLCAxMDksIDE1NiwgMjM1LCAzMywgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDIzNSwgCisgICAgMzMsIDE3LCAxOTksIDgxLCAyMzUsIDMzLCAxNywgMTAyLCAyMzUsIDMzLCAxNywgMTA1LCAyMzUsIDMzLCAxNywgMTQ3LCAKKyAgICAyMzUsIDMzLCAxNywgMTQ5LCAyMzUsIDMzLCAxNywgMTY0LCAyMzUsIDMzLCAxNywgMTg3LCAyMzUsIDMzLCAxNywgMjEwLCAKKyAgICAxMzUsIDIzNSwgMzMsIDE3LCAxOTIsIDIzNSwgMzMsIDE3LCAyMTksIDExMywgMjM1LCAzMywgMjUyLCAzLCA1NCwgMjM1LCAKKyAgICAzMywgMjEyLCAxNDksIDU0LCAyMzUsIDMzLCAxLCAxOTksIDc3LCAyMTcsIDI0LCAyLCAyNDcsIDE0OSwgMjE3LCAyNCwgMiwgCisgICAgMjUxLCAzMywgMjE3LCAyNCwgMiwgMjAyLCAyMDMsIDIxNywgMjQsIDEsIDYyLCAyMTcsIDI0LCAxLCAyNTIsIDEzOCwgMjE3LCAKKyAgICAyNCwgMSwgNzAsIDIxNywgMjQsIDEsIDIyOCwgMTUxLCAyMTcsIDI0LCAxLCA2NiwgMjE3LCAyNCwgMSwgMjAzLCAxODIsIAorICAgIDIxNywgMjQsIDEsIDEwOSwgMTQ2LCAyMTcsIDI0LCAxLCAxMDksIDE1NiwgMjE3LCAyNCwgMSwgNzIsIDIxNywgMjQsIDEsIAorICAgIDI1MSwgMTc2LCAyMTcsIDI0LCAxLCA3NCwgMjE3LCAyNCwgMSwgMjUwLCAxMzksIDIxNywgMjQsIDEsIDE2MSwgMjE3LCAyNCwgCisgICAgMSwgMjI2LCAyMDcsIDIxNywgMjQsIDEsIDIzNiwgODksIDIxNywgMjQsIDEsIDIzNSwgMTk5LCAyMTcsIDI0LCAxLCAyMTksIAorICAgIDI1MywgMjE3LCAyNCwgMSwgMjQ3LCAxOTAsIDIxNywgMjQsIDEsIDI0NywgMzcsIDIxNywgMjQsIDEsIDIyNywgMjQ4LCAKKyAgICAyMTcsIDI0LCAxLCAyMjcsIDIxNSwgMjE3LCAyNCwgMSwgMjE4LCA2MCwgMjE3LCAyNCwgMSwgMjA0LCAyNTMsIDIxNywgMjQsIAorICAgIDEsIDIwNCwgMjQxLCAyMTcsIDI0LCAxLCAyNDEsIDIyMCwgMjE3LCAyNCwgMSwgMjQxLCAyMDQsIDIxNywgMjQsIDEsIDIxOSwgCisgICAgMjEsIDIxNywgMjQsIDEsIDIwNywgMzYsIDIxNywgMjQsIDEsIDIwNiwgMTIyLCAyMTcsIDI0LCAxLCAyNDIsIDU4LCAyMTcsIAorICAgIDI0LCAxLCAyNDEsIDEwMCwgMjE3LCAyNCwgMSwgMTg4LCAyMTcsIDI0LCAxLCAxNzIsIDIxNywgMjQsIDEsIDIxNSwgMjQ1LCAKKyAgICAyMTcsIDI0LCAxLCAyNDksIDEzNiwgMjE3LCAyNCwgMSwgMjQ4LCAyMDAsIDIxNywgMjQsIDEsIDE3OCwgMjE3LCAyNCwgMSwgCisgICAgMTgzLCAyMTcsIDI0LCAxLCAyMTMsIDI1MiwgMjE3LCAyNCwgMSwgMTk0LCAyMTcsIDI0LCAxLCAyMjQsIDEzOCwgMjE3LCAKKyAgICAyNCwgMSwgMjAzLCA5MCwgMjE3LCAyNCwgMSwgMjEwLCAxMTQsIDIxNywgMjQsIDEsIDIwOCwgMTc5LCAyMTcsIDI0LCAxLCAKKyAgICAyMTIsIDY0LCAyMTcsIDI0LCAxLCAxNDQsIDIxNywgMjQsIDIsIDIxOCwgMTAwLCAyMTcsIDI0LCAyLCAyNTAsIDEyMiwgCisgICAgMjE3LCAyNCwgMjIsIDIsIDI1MiwgMTM4LCAyMTcsIDI0LCAyMiwgMiwgNzAsIDIxNywgMjQsIDIyLCAyLCAyMjgsIDE1MSwgCisgICAgMjE3LCAyNCwgMjIsIDIsIDY2LCAyMTcsIDI0LCAyMiwgMiwgMjAzLCAxODIsIDIxNywgMjQsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMjE3LCAyNCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIxNywgMjQsIDIyLCAyLCA3MiwgMjE3LCAyNCwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMTcsIDI0LCAyMiwgMiwgNzQsIDIxNywgMjQsIDIyLCAyLCAyNTAsIDEzOSwgMjE3LCAyNCwgMiwgMjAyLCAyMDgsIAorICAgIDIxNywgMjQsIDI1MSwgMTc3LCAyMjUsIDIsIDgxLCAyMTcsIDI0LCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgMjE3LCAyNCwgMSwgCisgICAgMjEyLCAyMTUsIDIxNywgMjQsIDEsIDIxMywgOTMsIDIxNywgMjQsIDEsIDE5OSwgMTY2LCAyMTcsIDI0LCAxLCAxMDksIAorICAgIDIxMiwgMjE2LCAyMTcsIDI0LCAxLCAxMDksIDIyNCwgMTM5LCAyMTcsIDI0LCAyMiwgMiwgMTA5LCAxNTYsIDIxNywgMjQsIAorICAgIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAyMTcsIDI0LCAxNywgMTk5LCA4MSwgMjE3LCAyNCwgMTcsIDEwMiwgMjE3LCAyNCwgCisgICAgMTcsIDEwNSwgMjE3LCAyNCwgMTcsIDE0NywgMjE3LCAyNCwgMTcsIDE0OSwgMjE3LCAyNCwgMTcsIDE2NCwgMjE3LCAyNCwgCisgICAgMTcsIDE4NywgMjE3LCAyNCwgMTcsIDIxMCwgMTM1LCAyMTcsIDI0LCAxNywgMTkyLCAyMTcsIDI0LCAxNywgMjE5LCAxMTMsIAorICAgIDIxNywgMjQsIDIyOCwgMTMsIDIxNywgMjQsIDEsIDIwMSwgMTE0LCAyMTcsIDI0LCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAKKyAgICAyMTcsIDI0LCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMjE3LCAyNCwgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMjE3LCAKKyAgICAyNCwgMjM2LCAyMTksIDExMiwgMjA5LCA5OCwgMjE3LCAyNCwgMjM2LCAyMTksIDExMiwgMjM4LCAyMjcsIDIxNywgMjQsIAorICAgIDIzNiwgMjE5LCAxMjYsIDIwOSwgOTcsIDQ1LCAyLCAyNTEsIDMzLCA0NSwgMiwgMjAyLCAyMDMsIDQ1LCAxLCA2MiwgNDUsIAorICAgIDEsIDI1MiwgMTM4LCA0NSwgMSwgNzAsIDQ1LCAxLCAyMjgsIDE1MSwgNDUsIDEsIDY2LCA0NSwgMSwgMjAzLCAxODIsIDQ1LCAKKyAgICAxLCA3MiwgNDUsIDEsIDIzOCwgMjU1LCA0NSwgMSwgMjUxLCAxNzYsIDQ1LCAxLCA3NCwgNDUsIDEsIDIxNywgNjMsIDQ1LCAKKyAgICAxLCAyNTAsIDEzOSwgNDUsIDEsIDE2MSwgNDUsIDEsIDIxOSwgMjUzLCA0NSwgMSwgMjQ3LCAxOTAsIDQ1LCAxLCAyMjcsIAorICAgIDI0OCwgNDUsIDEsIDIxOCwgNjAsIDQ1LCAxLCAyMDQsIDI1MywgNDUsIDEsIDIxOSwgMjEsIDQ1LCAxLCAyMDcsIDM2LCA0NSwgCisgICAgMSwgMTg4LCA0NSwgMSwgMjE5LCAzLCA0NSwgMSwgMTcyLCA0NSwgMSwgMTc4LCA0NSwgMSwgMTgzLCA0NSwgMSwgMjEzLCAKKyAgICAyNTIsIDQ1LCAxLCAyMTIsIDIxNSwgNDUsIDEsIDE5NCwgNDUsIDEsIDIyNCwgMTM4LCA0NSwgMSwgMjI0LCAxMjksIDQ1LCAKKyAgICAxLCAyMDMsIDkwLCA0NSwgMSwgMjEwLCAxMTQsIDQ1LCAxLCAyMDgsIDE3OSwgNDUsIDEsIDIxMiwgNjQsIDQ1LCAxLCAxNDQsIAorICAgIDQ1LCAyMiwgMiwgMjUyLCAxMzgsIDQ1LCAyMiwgMiwgNzAsIDQ1LCAyMiwgMiwgMjI4LCAxNTEsIDQ1LCAyMiwgMiwgNjYsIAorICAgIDQ1LCAyMiwgMiwgMjAzLCAxODIsIDQ1LCAyMiwgMiwgNzIsIDQ1LCAyMiwgMiwgMjM4LCAyNTUsIDQ1LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDQ1LCAyMiwgMiwgNzQsIDQ1LCAyMiwgMiwgMjE3LCA2MywgNDUsIDIyLCAyLCAyNTAsIDEzOSwgNDUsIDIsIDIwMiwgCisgICAgMjA4LCA0NSwgMjE3LCA4NiwgNDUsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCA0NSwgMTcsIDE5OSwgODEsIDQ1LCAxNywgMTAyLCAKKyAgICA0NSwgMTcsIDEwNSwgNDUsIDE3LCAxNDcsIDQ1LCAxNywgMTQ5LCA0NSwgMTcsIDE2NCwgNDUsIDE3LCAxODcsIDQ1LCAxNywgCisgICAgMjEwLCAxMzUsIDQ1LCAxNywgMTkyLCA0NSwgMTcsIDIxOSwgMTEzLCA0NSwgNDEsIDIwNiwgMTY2LCA0NSwgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgNDUsIDQxLCAxMTIsIDIwNiwgNTAsIDQ1LCAyNDEsIDIzMywgNTQsIDQ1LCAyMjEsIDkwLCA1NCwgNDUsIAorICAgIDIwMCwgNDksIDU0LCA0NSwgMjQxLCAxNzIsIDU0LCA0NSwgMjQyLCAyNDYsIDU0LCA0NSwgMjUwLCAxODksIDg4LCA1NCwgCisgICAgNDUsIDIxMiwgMTQ5LCA1NCwgNDUsIDQxLCA1NCwgMTgwLCAyLCAzOCwgMjQ3LCAxNTAsIDU2LCAxODAsIDIsIDI0NywgMTQ5LCAKKyAgICAxODAsIDIsIDI1MSwgMzMsIDE4MCwgMiwgMjAyLCAyMDMsIDE4MCwgMSwgNjIsIDE4MCwgMSwgMjUyLCAxMzgsIDE4MCwgMSwgCisgICAgNzAsIDE4MCwgMSwgMjI4LCAxNTEsIDE4MCwgMSwgNjYsIDE4MCwgMSwgMjAzLCAxODIsIDE4MCwgMSwgMTA5LCAxNDYsIAorICAgIDE4MCwgMSwgMTA5LCAxNTYsIDE4MCwgMSwgNzIsIDE4MCwgMSwgMjM4LCAyNTUsIDE4MCwgMSwgMjUxLCAxNzYsIDE4MCwgMSwgCisgICAgNzQsIDE4MCwgMSwgMjE3LCA2MywgMTgwLCAxLCAyNTAsIDEzOSwgMTgwLCAxLCAxNjEsIDE4MCwgMSwgMjI2LCAyMDcsIAorICAgIDE4MCwgMSwgMjM2LCA4OSwgMTgwLCAxLCAyMzUsIDE5OSwgMTgwLCAxLCAyMTksIDI1MywgMTgwLCAxLCAyNDcsIDE5MCwgCisgICAgMTgwLCAxLCAyNDcsIDM3LCAxODAsIDEsIDIyNywgMjQ4LCAxODAsIDEsIDIyNywgMjE1LCAxODAsIDEsIDIxOCwgNjAsIAorICAgIDE4MCwgMSwgMjA0LCAyNTMsIDE4MCwgMSwgMjA0LCAyNDEsIDE4MCwgMSwgMjQxLCAyMjAsIDE4MCwgMSwgMjQxLCAyMDQsIAorICAgIDE4MCwgMSwgMjE5LCAyMSwgMTgwLCAxLCAyMDcsIDM2LCAxODAsIDEsIDIwNiwgMTIyLCAxODAsIDEsIDI0MiwgNTgsIDE4MCwgCisgICAgMSwgMjQxLCAxMDAsIDE4MCwgMSwgMTg4LCAxODAsIDEsIDE3MiwgMTgwLCAxLCAyMTUsIDI0NSwgMTgwLCAxLCAyNDksIAorICAgIDEzNiwgMTgwLCAxLCAyNDgsIDIwMCwgMTgwLCAxLCAxNzgsIDE4MCwgMSwgMTgzLCAxODAsIDEsIDIxMywgMjUyLCAxODAsIAorICAgIDEsIDIxMiwgMjE1LCAxODAsIDEsIDE5NCwgMTgwLCAxLCAyMjQsIDEzOCwgMTgwLCAxLCAyMjQsIDEyOSwgMTgwLCAxLCAKKyAgICAyMDMsIDkwLCAxODAsIDEsIDIxMCwgMTE0LCAxODAsIDEsIDIwOCwgMTc5LCAxODAsIDEsIDIxMiwgNjQsIDE4MCwgMSwgCisgICAgMTQ0LCAxODAsIDIsIDI1MCwgMTIyLCAxODAsIDIyLCAyLCAyNTIsIDEzOCwgMTgwLCAyMiwgMiwgNzAsIDE4MCwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxODAsIDIyLCAyLCA2NiwgMTgwLCAyMiwgMiwgMjAzLCAxODIsIDE4MCwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxODAsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxODAsIDIyLCAyLCA3MiwgMTgwLCAyMiwgMiwgMjM4LCAyNTUsIDE4MCwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCAxODAsIDIyLCAyLCA3NCwgMTgwLCAyMiwgMiwgMjE3LCA2MywgMTgwLCAyMiwgMiwgMjUwLCAxMzksIAorICAgIDE4MCwgMiwgMjAyLCAyMDgsIDE4MCwgMjI1LCAyLCA4MSwgMTgwLCAyNTEsIDE3NywgMjI1LCAyLCA4MSwgMTgwLCAxLCAKKyAgICAyMDUsIDMyLCAxODAsIDEsIDIzOSwgOTMsIDE4MCwgMSwgMjEyLCAxOTYsIDE4MCwgMSwgMTA5LCAyMTIsIDIxNiwgMTgwLCAKKyAgICAxLCAxMDksIDIyNCwgMTM5LCAxODAsIDIyLCAyLCAxMDksIDE1NiwgMTgwLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTgwLCAKKyAgICAxNywgMTk5LCA4MSwgMTgwLCAxNywgMTAyLCAxODAsIDE3LCAxMDUsIDE4MCwgMTcsIDE0NywgMTgwLCAxNywgMTQ5LCAxODAsIAorICAgIDE3LCAxNjQsIDE4MCwgMTcsIDE4NywgMTgwLCAxNywgMjEwLCAxMzUsIDE4MCwgMTcsIDE5MiwgMTgwLCAxNywgMjE5LCAKKyAgICAxMTMsIDE4MCwgMjM2LCAyMTksIDE3LCAxOTksIDgyLCAzNiwgMjE3LCAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgCisgICAgMjM2LCAyMTksIDE3LCAxMTIsIDM2LCAyMTcsIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIAorICAgIDEyMCwgMzYsIDIxNywgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgMTI2LCAzNiwgMjE3LCAKKyAgICAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAxMTIsIDM2LCAyMzgsIDU2LCAyMTUsIDUwLCA3NiwgCisgICAgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgMTIwLCAzNiwgMjM4LCA1NiwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIAorICAgIDIxOSwgMTcsIDEyNiwgMzYsIDIzOCwgNTYsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMiwgMjA0LCAxNzUsIDIyNywgNjMsIAorICAgIDIsIDIwOCwgMjQzLCAyNDcsIDE0OSwgMjI3LCA2MywgMiwgMjQ3LCAxNDksIDIyNywgNjMsIDIsIDI1MSwgMzMsIDIyNywgCisgICAgNjMsIDIsIDIwMiwgMjAzLCAyMjcsIDYzLCAxLCA2MiwgMjI3LCA2MywgMSwgMjUyLCAxMzgsIDIyNywgNjMsIDEsIDcwLCAKKyAgICAyMjcsIDYzLCAxLCAyMjgsIDE1MSwgMjI3LCA2MywgMSwgNjYsIDIyNywgNjMsIDEsIDIwMywgMTgyLCAyMjcsIDYzLCAxLCAKKyAgICAxMDksIDE0NiwgMjI3LCA2MywgMSwgMTA5LCAxNTYsIDIyNywgNjMsIDEsIDcyLCAyMjcsIDYzLCAxLCAyMzgsIDI1NSwgCisgICAgMjI3LCA2MywgMSwgMjUxLCAxNzYsIDIyNywgNjMsIDEsIDc0LCAyMjcsIDYzLCAxLCAyMTcsIDYzLCAyMjcsIDYzLCAxLCAKKyAgICAyNTAsIDEzOSwgMjI3LCA2MywgMSwgMTYxLCAyMjcsIDYzLCAxLCAyMjYsIDIwNywgMjI3LCA2MywgMSwgMjM2LCA4OSwgCisgICAgMjI3LCA2MywgMSwgMjM1LCAxOTksIDIyNywgNjMsIDEsIDIxOSwgMjUzLCAyMjcsIDYzLCAxLCAyNDcsIDE5MCwgMjI3LCAKKyAgICA2MywgMSwgMjQ3LCAzNywgMjI3LCA2MywgMSwgMjI3LCAyNDgsIDIyNywgNjMsIDEsIDIyNywgMjE1LCAyMjcsIDYzLCAxLCAKKyAgICAyMTgsIDYwLCAyMjcsIDYzLCAxLCAyMDQsIDI1MywgMjI3LCA2MywgMSwgMjA0LCAyNDEsIDIyNywgNjMsIDEsIDI0MSwgCisgICAgMjIwLCAyMjcsIDYzLCAxLCAyNDEsIDIwNCwgMjI3LCA2MywgMSwgMjE5LCAyMSwgMjI3LCA2MywgMSwgMjA3LCAzNiwgMjI3LCAKKyAgICA2MywgMSwgMjA2LCAxMjIsIDIyNywgNjMsIDEsIDI0MiwgNTgsIDIyNywgNjMsIDEsIDI0MSwgMTAwLCAyMjcsIDYzLCAxLCAKKyAgICAxODgsIDIyNywgNjMsIDEsIDE3MiwgMjI3LCA2MywgMSwgMjE1LCAyNDUsIDIyNywgNjMsIDEsIDI0OSwgMTM2LCAyMjcsIAorICAgIDYzLCAxLCAyNDgsIDIwMCwgMjI3LCA2MywgMSwgMTc4LCAyMjcsIDYzLCAxLCAxODMsIDIyNywgNjMsIDEsIDIxMywgMjUyLCAKKyAgICAyMjcsIDYzLCAxLCAyMTIsIDIxNSwgMjI3LCA2MywgMSwgMTk0LCAyMjcsIDYzLCAxLCAyMjQsIDEzOCwgMjI3LCA2MywgMSwgCisgICAgMjAzLCA5MCwgMjI3LCA2MywgMSwgMjEwLCAxMTQsIDIyNywgNjMsIDEsIDIwOCwgMTc5LCAyMjcsIDYzLCAxLCAyMTIsIDY0LCAKKyAgICAyMjcsIDYzLCAxLCAxNDQsIDIyNywgNjMsIDIsIDIxOCwgMTAwLCAyMjcsIDYzLCAyLCAyNTAsIDEyMiwgMjI3LCA2MywgMjIsIAorICAgIDIsIDI1MiwgMTM4LCAyMjcsIDYzLCAyMiwgMiwgNzAsIDIyNywgNjMsIDIyLCAyLCAyMjgsIDE1MSwgMjI3LCA2MywgMjIsIAorICAgIDIsIDY2LCAyMjcsIDYzLCAyMiwgMiwgMjAzLCAxODIsIDIyNywgNjMsIDIyLCAyLCAxMDksIDE0NiwgMjI3LCA2MywgMjIsIAorICAgIDIsIDEwOSwgMjEyLCAyMTYsIDIyNywgNjMsIDIyLCAyLCA3MiwgMjI3LCA2MywgMjIsIDIsIDIzOCwgMjU1LCAyMjcsIDYzLCAKKyAgICAyMiwgMiwgMjUxLCAxNzYsIDIyNywgNjMsIDIyLCAyLCA3NCwgMjI3LCA2MywgMjIsIDIsIDIxNywgNjMsIDIyNywgNjMsIAorICAgIDIyLCAyLCAyNTAsIDEzOSwgMjI3LCA2MywgMiwgMjAyLCAyMDgsIDIyNywgNjMsIDIyNSwgMiwgODEsIDIyNywgNjMsIDI1MSwgCisgICAgMTc3LCAyMjUsIDIsIDgxLCAyMjcsIDYzLCAxLCAyMzcsIDE5NSwgMjI3LCA2MywgMSwgMTA5LCAyMTIsIDIxNiwgMjI3LCAKKyAgICA2MywgMSwgMTA5LCAyMjQsIDEzOSwgMjI3LCA2MywgMjIsIDIsIDEwOSwgMTU2LCAyMjcsIDYzLCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgMjI3LCA2MywgMTcsIDE5OSwgODEsIDIyNywgNjMsIDE3LCAxMDIsIDIyNywgNjMsIDE3LCAxMDUsIDIyNywgNjMsIAorICAgIDE3LCAxNDcsIDIyNywgNjMsIDE3LCAxNDksIDIyNywgNjMsIDE3LCAxNjQsIDIyNywgNjMsIDE3LCAxODcsIDIyNywgNjMsIAorICAgIDE3LCAyMTAsIDEzNSwgMjI3LCA2MywgMTcsIDE5MiwgMjI3LCA2MywgMTcsIDIxOSwgMTEzLCAyMjcsIDYzLCAyLCAyMjcsIAorICAgIDIwMSwgMjI3LCA2MywgMiwgMjAzLCAyMjYsIDE0MiwgMiwgMjQ3LCAxNDksIDE0MiwgMiwgMjUxLCAzMywgMTQyLCAyLCAKKyAgICAyMDIsIDIwMywgMTQyLCAxLCA2MiwgMTQyLCAxLCAyNTIsIDEzOCwgMTQyLCAxLCA3MCwgMTQyLCAxLCAyMjgsIDE1MSwgCisgICAgMTQyLCAxLCA2NiwgMTQyLCAxLCAyMDMsIDE4MiwgMTQyLCAxLCAxMDksIDE0NiwgMTQyLCAxLCAxMDksIDE1NiwgMTQyLCAxLCAKKyAgICA3MiwgMTQyLCAxLCAyMzgsIDI1NSwgMTQyLCAxLCAyNTEsIDE3NiwgMTQyLCAxLCA3NCwgMTQyLCAxLCAyMTcsIDYzLCAxNDIsIAorICAgIDEsIDI1MCwgMTM5LCAxNDIsIDEsIDE2MSwgMTQyLCAxLCAyMjYsIDIwNywgMTQyLCAxLCAyMzYsIDg5LCAxNDIsIDEsIDIzNSwgCisgICAgMTk5LCAxNDIsIDEsIDIxOSwgMjUzLCAxNDIsIDEsIDI0NywgMTkwLCAxNDIsIDEsIDI0NywgMzcsIDE0MiwgMSwgMjI3LCAKKyAgICAyNDgsIDE0MiwgMSwgMjI3LCAyMTUsIDE0MiwgMSwgMjE4LCA2MCwgMTQyLCAxLCAyMDQsIDI1MywgMTQyLCAxLCAyMDQsIAorICAgIDI0MSwgMTQyLCAxLCAyNDEsIDIyMCwgMTQyLCAxLCAyNDEsIDIwNCwgMTQyLCAxLCAyMTksIDIxLCAxNDIsIDEsIDIwNywgCisgICAgMzYsIDE0MiwgMSwgMjA2LCAxMjIsIDE0MiwgMSwgMjQyLCA1OCwgMTQyLCAxLCAyNDEsIDEwMCwgMTQyLCAxLCAxODgsIAorICAgIDE0MiwgMSwgMjE5LCAzLCAxNDIsIDEsIDE3MiwgMTQyLCAxLCAyMTUsIDI0NSwgMTQyLCAxLCAyNDksIDEzNiwgMTQyLCAxLCAKKyAgICAyNDgsIDIwMCwgMTQyLCAxLCAxNzgsIDE0MiwgMSwgMTgzLCAxNDIsIDEsIDIxMywgMjUyLCAxNDIsIDEsIDIxMiwgMjE1LCAKKyAgICAxNDIsIDEsIDE5NCwgMTQyLCAxLCAyMjQsIDEzOCwgMTQyLCAxLCAyMjQsIDEyOSwgMTQyLCAxLCAyMDMsIDkwLCAxNDIsIDEsIAorICAgIDIxMCwgMTE0LCAxNDIsIDEsIDIwOCwgMTc5LCAxNDIsIDEsIDIxMiwgNjQsIDE0MiwgMSwgMTQ0LCAxNDIsIDEsIDIwNCwgCisgICAgMjIyLCAxNDIsIDIsIDI1MCwgMTIyLCAxNDIsIDIyLCAyLCAyNTIsIDEzOCwgMTQyLCAyMiwgMiwgNzAsIDE0MiwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxNDIsIDIyLCAyLCA2NiwgMTQyLCAyMiwgMiwgMjAzLCAxODIsIDE0MiwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxNDIsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxNDIsIDIyLCAyLCA3MiwgMTQyLCAyMiwgMiwgMjM4LCAyNTUsIDE0MiwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCAxNDIsIDIyLCAyLCA3NCwgMTQyLCAyMiwgMiwgMjE3LCA2MywgMTQyLCAyMiwgMiwgMjUwLCAxMzksIAorICAgIDE0MiwgMiwgMjAyLCAyMDgsIDE0MiwgMSwgNzMsIDIxMywgMTI5LCAxNDIsIDIsIDIxNiwgMTI5LCAxNDIsIDEsIDI0NiwgCisgICAgMjI1LCAyMjMsIDI0MywgMTQyLCAxLCAyNDYsIDIyNSwgMjAwLCAxMjMsIDE0MiwgMSwgMjQ2LCAyMjUsIDIyNCwgMTMwLCAKKyAgICAxNDIsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIxNywgNzQsIDE0MiwgMjM2LCAyMTksIAorICAgIDExMiwgMjM2LCAyMzcsIDE0MiwgMjM2LCAyMTksIDEyNiwgMjM4LCAyMjQsIDE0MiwgMjM2LCAyMTksIDExMiwgMjA0LCAKKyAgICAxNjIsIDE0MiwgMjM2LCAyMTksIDExMiwgMjA2LCAxNTcsIDE0MiwgMjM2LCAyMTksIDEyNiwgMjA0LCAxNjEsIDE0MiwgCisgICAgMjM2LCAyMTksIDExMiwgMjM3LCAxMDcsIDE0MiwgMSwgMjUwLCAyMzQsIDIyOCwgMTUxLCAxNDIsIDEsIDEwOSwgMjEyLCAKKyAgICAyMTYsIDE0MiwgMSwgMTA5LCAyMjQsIDEzOSwgMTQyLCAyMiwgMiwgMTA5LCAxNTYsIDE0MiwgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDE0MiwgMTcsIDE5OSwgODEsIDE0MiwgMTcsIDEwMiwgMTQyLCAxNywgMTA1LCAxNDIsIDE3LCAxNDcsIDE0MiwgMTcsIAorICAgIDE0OSwgMTQyLCAxNywgMTY0LCAxNDIsIDE3LCAxODcsIDE0MiwgMTcsIDIxMCwgMTM1LCAxNDIsIDE3LCAxOTIsIDE0MiwgCisgICAgMTcsIDIxOSwgMTEzLCAxNDIsIDQxLCAyMDYsIDE2NiwgMTQyLCA0MSwgMTEyLCAyMzMsIDgyLCAxNDIsIDQxLCAxMTIsIAorICAgIDIwNiwgNTAsIDE0MiwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMTQyLCAKKyAgICAyMzYsIDIxOSwgMTI2LCAyMTQsIDg1LCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTgsIDE0MiwgMjM2LCAyMTksIDExMiwgCisgICAgMjM4LCAyMjcsIDE0MiwgMjM2LCAyMTksIDEyNiwgMjA5LCA5NywgMTQyLCAyNDEsIDIzOCwgODEsIDE0MiwgMSwgMjQ2LCAKKyAgICAyMjUsIDIxOSwgMjIsIDE0MiwgMSwgMjQ2LCAyMjUsIDIyMCwgMjE0LCAxNDIsIDEsIDI0NiwgMjI1LCAyMTIsIDIxNiwgCisgICAgMTQyLCAxLCAyNDYsIDIyNSwgMTU2LCAxNDIsIDEsIDI0NiwgMjI1LCAyMjQsIDEzOSwgMTQyLCAxLCAyNDYsIDIyNSwgMjI3LCAKKyAgICAxMTgsIDE0MywgMiwgMjUxLCAzMiwgMTQzLCAyLCAyMDIsIDIwMiwgMTQzLCAxLCAyNTAsIDExMCwgMTQzLCAxLCAyNTIsIAorICAgIDkyLCAxNDMsIDEsIDI1MSwgMjAxLCAxNDMsIDEsIDI1MSwgMjE2LCAxNDMsIDEsIDIyOCwgMiwgMTQzLCAxLCAyMjgsIDE1MCwgCisgICAgMTQzLCAxLCAyMDMsIDE3MywgMTQzLCAxLCAyMDMsIDE3NiwgMTQzLCAxLCAyMjgsIDI4LCAxNDMsIDEsIDIyOCwgMjksIAorICAgIDE0MywgMSwgMjI4LCAxMzYsIDE0MywgMSwgMjI4LCAxMzgsIDE0MywgMSwgMjM4LCAyNSwgMTQzLCAxLCAyMzgsIDI1MCwgCisgICAgMTQzLCAxLCAyNTEsIDE2MSwgMTQzLCAxLCAyMTYsIDIyOSwgMTQzLCAxLCAyMTcsIDU2LCAxNDMsIDEsIDI1MCwgMTI1LCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyMjcsIDEzLCAxNDMsIDEsIDIyMiwgMjA1LCAyMjcsIDEzLCAxNDMsIDEsIDI1MSwgMTE1LCAKKyAgICAyMzYsIDM1LCAxNDMsIDEsIDIyMiwgMjA1LCAyMzYsIDM1LCAxNDMsIDEsIDIyNywgNjIsIDIyMCwgMTU0LCAxNDMsIDEsIAorICAgIDIxMiwgNSwgMjM2LCAzNSwgMTQzLCAxLCAyNTEsIDExNSwgMjQ3LCAxMDIsIDE0MywgMSwgMjIyLCAyMDUsIDI0NywgMTAyLCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyMjcsIDIzMCwgMTQzLCAxLCAyMjIsIDIwNSwgMjI3LCAyMzAsIDE0MywgMSwgMjA3LCAyOSwgCisgICAgMjIwLCAxNTQsIDE0MywgMSwgMjA3LCAyOSwgMjEyLCA0LCAyMjAsIDE1NSwgMTQzLCAxLCAyMTIsIDUsIDIyNywgMjMwLCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyMDQsIDI0OSwgMTQzLCAxLCAyMjIsIDIwNSwgMjA0LCAyNDksIDE0MywgMSwgMjUxLCAxMTUsIAorICAgIDI0MSwgMjExLCAxNDMsIDEsIDIyMiwgMjA1LCAyNDEsIDIxMSwgMTQzLCAxLCAyMjAsIDI0MiwgMjIwLCAxMDgsIDE0MywgMSwgCisgICAgMjEyLCA1LCAyNDEsIDIxMSwgMTQzLCAxLCAyNTEsIDExNSwgMjA2LCAyMDksIDE0MywgMSwgMjIyLCAyMDUsIDIwNiwgMjA5LCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyNDEsIDIzMSwgMTQzLCAxLCAyMjIsIDIwNSwgMjQxLCAyMzEsIDE0MywgMSwgMjQyLCA2LCAKKyAgICAyMjAsIDEwOCwgMTQzLCAxLCAyMTIsIDUsIDI0MSwgMjMxLCAxNDMsIDEsIDI1MSwgMTE1LCAyMTYsIDgxLCAxNDMsIDEsIAorICAgIDIyMiwgMjA1LCAyMTYsIDgxLCAxNDMsIDEsIDI1MSwgMTE1LCAyNDksIDQ2LCAxNDMsIDEsIDIyMiwgMjA1LCAyNDksIDQ2LCAKKyAgICAxNDMsIDEsIDIyMiwgMTE4LCAxNDMsIDEsIDI1MSwgOTUsIDI0OSwgNDYsIDE0MywgMSwgMjAwLCA1NiwgMTQzLCAxLCAyMTMsIAorICAgIDE5NiwgMTQzLCAxLCAyNDIsIDYsIDIyNSwgNDksIDE0MywgMSwgMjAzLCA2MSwgMTQzLCAxLCAyMDcsIDI5LCAyMTEsIDIzMywgCisgICAgMTQzLCAxLCAyMjAsIDI0MiwgMjExLCAyMzMsIDE0MywgMSwgMjQyLCA2LCAyMTEsIDIzMywgMTQzLCAxLCAyMzQsIDE0NSwgCisgICAgMTQzLCAxLCAyMjAsIDI0MiwgMjI1LCA0OSwgMTQzLCAxLCAyMzcsIDE0OSwgMTQzLCAyLCAyNTEsIDE1MCwgMTQzLCAyMiwgCisgICAgMiwgMjUxLCAyMTEsIDE0MywgMjIsIDIsIDIyNiwgMjMyLCAyNTEsIDIxOCwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjUxLCAKKyAgICAyMTgsIDE0MywgMjIsIDIsIDIyNiwgMjMyLCAyMjgsIDI1LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMjgsIDI1LCAxNDMsIAorICAgIDIyLCAyLCAyMjYsIDIzMiwgMjE2LCAyMDksIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIxNiwgMjA5LCAxNDMsIDIyLCAyLCAKKyAgICAyMzYsIDc4LCAxNDMsIDIyLCAyLCAyMjYsIDczLCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMjYsIDczLCAxNDMsIDIyLCAyLCAKKyAgICAyMjYsIDc1LCAyNDEsIDE1MCwgMTQzLCAyMiwgMiwgMjI2LCA3NCwgMjM0LCAyMzQsIDI1MSwgMjExLCAxNDMsIDIyLCAyLCAKKyAgICAyMjYsIDc0LCAyMzQsIDIzNCwgMjQxLCA0MywgMjUxLCAyMTEsIDE0MywgMjIsIDIsIDIyNiwgNzQsIDIzNCwgMjM0LCAyMzYsIAorICAgIDM0LCAxNDMsIDIyLCAyLCAyMzYsIDM0LCAxNDMsIDIyNCwgMTUxLCAxNywgMTk5LCA4MSwgMTQzLCAyMjQsIDE1MSwgMTcsIAorICAgIDEwMiwgMTQzLCAyMjQsIDE1MSwgMTcsIDEwNSwgMTQzLCAyMjQsIDE1MSwgMTcsIDE0NywgMTQzLCAyMjQsIDE1MSwgMTcsIAorICAgIDE0OSwgMTQzLCAyMjQsIDE1MSwgMTcsIDE2NCwgMTQzLCAyMjQsIDE1MSwgMTcsIDE4NywgMTQzLCAyMjQsIDE1MSwgMTcsIAorICAgIDIxMCwgMTM1LCAxNDMsIDIyNCwgMTUxLCAxNywgMTkyLCAxNDMsIDIyNCwgMTUxLCAxNywgMjE5LCAxMTMsIDE0MywgMjIsIAorICAgIDIsIDI0MSwgNDMsIDIzNiwgNzgsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIzNiwgMzQsIDE0MywgMjE0LCAyMTIsIDIyNiwgMCwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjI2LCA4OSwgMjI3LCA4MiwgMjA2LCAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMjAyLCAyMDYsIAorICAgIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAxNzEsIDIwNiwgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDE2NiwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMTc1LCAyMDYsIDExNywgMTcxLCAyMjYsIDE3OSwgMjEzLCAyMTcsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIxOSwgMTc5LCAyMTksIDE2NiwgMjA2LCAxMTcsIDE3MSwgMjQ2LCAyMTEsIDI0NywgMjYsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDI0NiwgMjExLCAyNDYsIDIyMSwgMjA2LCAxMTcsIDE3MSwgMjQ2LCAyMTEsIDI0NywgMjUsIDIwNiwgMTE3LCAxNzEsIAorICAgIDIwOSwgMzAsIDIwOSwgMjksIDIwNiwgMTE3LCAxNzEsIDI0NiwgMjExLCAyNDYsIDIwNywgMjA2LCAxMTcsIDE3MSwgMTk5LCAKKyAgICAyNDYsIDE5OSwgMjUzLCAyMDYsIDExNywgMTcxLCAyNDAsIDIxMiwgMjQ3LCAzNCwgMjA2LCAxMTcsIDE3MSwgMjA1LCAxODYsIAorICAgIDIxNiwgOTIsIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgMTExLCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMjAsIAorICAgIDEzMSwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjE1LCAyMDcsIDIwNiwgMTE3LCAxNzEsIDIxOCwgMjQyLCAyMjAsIDI0LCAKKyAgICAyMDYsIDExNywgMTcxLCAyNDAsIDIxMiwgMjQxLCAxNTEsIDIwNiwgMTE3LCAxNzEsIDIwNSwgMTg2LCAyMDYsIDIzNywgCisgICAgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCAyOSwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCAxMTgsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgNTcsIDIwNiwgMTE3LCAxNzEsIDIxOCwgMjQyLCAyMTgsIDEzMywgMjA2LCAxMTcsIAorICAgIDE3MSwgMjQ4LCAxMjUsIDI0OSwgMTAyLCAyMDYsIDExNywgMTcxLCAyMTUsIDEwNywgMjE1LCAxMzUsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxNSwgMjE4LCAyMTUsIDIwOSwgMjA2LCAxMTcsIDE3MSwgMjM3LCAxNCwgMjM3LCAxOTUsIDIwNiwgMTE3LCAxNzEsIAorICAgIDIxNSwgMjE4LCAyMTUsIDIzOCwgMjA2LCAxMTcsIDE3MSwgMjM3LCAxNCwgMjM3LCAxNjgsIDIwNiwgMTE3LCAxNzEsIDIxNSwgCisgICAgMjE4LCAyMTIsIDE3LCAyMDYsIDExNywgMTcxLCAyMjEsIDEzNywgMTc4LCAyMDYsIDExNywgMTcxLCAxOTksIDI0NiwgMjAwLCAKKyAgICA4NSwgMjA2LCAxMTcsIDE3MSwgMjEzLCAyLCAyMTIsIDE3NCwgMjA2LCAxMTcsIDE3MSwgMjEyLCAxNzUsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIyNCwgMTExLCAyMjQsIDE2OSwgMjA2LCAxMTcsIDE3MSwgMjI0LCA0MiwgMjA2LCAxMTcsIDE3MSwgMjAxLCAxLCAKKyAgICAyMDEsIDEwOSwgMjA2LCAxMTcsIDE3MSwgMjA5LCAzMCwgMjEyLCAzMywgMjA2LCAxMTcsIDE3MSwgMjA5LCAzMCwgMjEyLCAKKyAgICAxNDUsIDIwNiwgMTE3LCAxNzEsIDIwOSwgMzAsIDIwOCwgMjMsIDIwNiwgMTE3LCAxNzEsIDIzMywgMjA4LCAyMzQsIDQ4LCAKKyAgICAyMDYsIDExNywgMTcxLCAyMjQsIDExMSwgMjQ2LCAxOTEsIDIwNiwgMTE3LCAxNzEsIDE2MywgMjUxLCA3NiwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjMzLCAyMDgsIDIxOCwgMjM3LCAyMDYsIDExNywgMTcxLCAyMTYsIDE4NiwgMjA2LCAxMTcsIDE3MSwgMjExLCAKKyAgICAyNTUsIDYyLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjM0LCAyMDEsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTIsIAorICAgIDEzOCwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MSwgMTAxLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgNzAsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIxMSwgMjU1LCAyMjgsIDE1MSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDIwNCwgMzEsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxMSwgMjU1LCAyMDQsIDI5LCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgNjYsIDIwNiwgMTE3LCAxNzEsIDIxMSwgCisgICAgMjU1LCAyMDMsIDE4MiwgMjA2LCAxMTcsIDE3MSwgMjE1LCAyMjAsIDIwNiwgMTE3LCAyNDIsIDE5NSwgMTYsIDI0OSwgMTAzLCAKKyAgICAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgNzIsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTEsIDIyMSwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjExLCAyNTUsIDc0LCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUxLCAxNzcsIDIyMiwgMTkzLCAyMDYsIDExNywgCisgICAgMTcxLCAyMTEsIDI1NSwgMjUxLCAxNzcsIDIyMiwgMTk0LCAyMDYsIDExNywgMTcxLCAyMjUsIDk1LCAyMDYsIDExNywgMTcxLCAKKyAgICAyMjIsIDE5MCwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTEsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMzgsIDIxNiwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIwNiwgNjEsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMDUsIDEwMSwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjIyLCAxOTksIDI0NywgMTMsIDIwNiwgMTE3LCAxNzEsIDIwNiwgMTA5LCAyMDYsIDExNywgMTcxLCAyMTksIAorICAgIDEyMiwgMjA2LCAxMTcsIDE3MSwgMjAwLCA3OSwgMjA2LCAxMTcsIDE3MSwgMjM3LCA0LCAyMDYsIDExNywgMTcsIDE5OSwgCisgICAgODEsIDIwNiwgMTE3LCAxNywgMTAyLCAyMDYsIDExNywgMTcsIDEwNSwgMjA2LCAxMTcsIDE3LCAxNDcsIDIwNiwgMTE3LCAKKyAgICAxNywgMTQ5LCAyMDYsIDExNywgMTcsIDE2NCwgMjA2LCAxMTcsIDE3LCAxODcsIDIwNiwgMTE3LCAxNywgMjEwLCAxMzUsIAorICAgIDIwNiwgMTE3LCAxNywgMTkyLCAyMDYsIDExNywgMTcsIDIxOSwgMTEzLCAyMDYsIDExNywgMTcxLCAyNTEsIDcyLCAyMDYsIAorICAgIDExNywgMTcxLCAyMjYsIDE3NiwgMjI1LCA3NSwgMSwgMjI2LCA4OCwgMjI1LCA3NSwgMSwgMjI2LCAxNzksIDIwNywgMjI1LCAKKyAgICAyMjUsIDc1LCAxLCAyMjYsIDE3OSwgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIxOSwgMTc4LCAyMjUsIDc1LCAxLCAyNDYsIAorICAgIDkxLCAyMjUsIDc1LCAxLCAyMDksIDMwLCAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjE4LCAyNiwgMjI1LCA3NSwgMSwgMjQwLCAKKyAgICAyMTEsIDIyNSwgNzUsIDEsIDEzOCwgMjI1LCA3NSwgMSwgMjA2LCA2MiwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIDIwNiwgNjIsIAorICAgIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMTgsIDI0MSwgMjI1LCA3NSwgMSwgMjQ4LCAxMjQsIDIyNSwgNzUsIDEsIDIxNSwgCisgICAgMTA2LCAyMjUsIDc1LCAxLCAyMTUsIDIxOCwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIDIzNywgMTQsIDIwNiwgMjQ2LCAyMjUsIAorICAgIDc1LCAxLCAyMTUsIDIxOCwgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIzNywgMTQsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCAKKyAgICAyMjEsIDEzNiwgMjI1LCA3NSwgMSwgMTk5LCAyNDUsIDIyNSwgNzUsIDEsIDIyNCwgMTExLCAyMjQsIDE2OSwgMjI1LCA3NSwgCisgICAgMSwgMjI0LCAxMTEsIDIyNCwgNzIsIDIyNSwgNzUsIDEsIDIwMSwgMCwgMjI1LCA3NSwgMSwgMjA5LCAzMCwgMjA3LCAyMjUsIAorICAgIDIyNSwgNzUsIDEsIDIzMywgMjA4LCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgNzQsIDIyNSwgNzUsIDEsIDIzMywgMjA4LCAKKyAgICAyMDYsIDI0NiwgMjI1LCA3NSwgMjM4LCAxOTUsIDIyNSwgNzUsIDIyLCAyLCA2MiwgMjI1LCA3NSwgMjIsIDIsIDIyMiwgCisgICAgMTk5LCAyMjcsIDY4LCAyMjUsIDc1LCAyMiwgMiwgMjUyLCAxMzgsIDIyNSwgNzUsIDIyLCAyLCAyNTEsIDEwMSwgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDcwLCAyMjUsIDc1LCAyMiwgMiwgMjI4LCAxNTEsIDIyNSwgNzUsIDIyLCAyLCAyMDAsIDEyMywgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDE5OSwgMTY3LCAyMjUsIDc1LCAyMiwgMiwgNjYsIDIyNSwgNzUsIDIyLCAyLCAyMDMsIDE4MiwgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDIyMiwgMTk5LCAyMjYsIDcxLCAyMjUsIDc1LCAyMTAsIDE2MiwgMiwgMjI0LCAxMTAsIDIyNSwgNzUsIAorICAgIDIxMCwgMTYyLCAyLCAyMTgsIDI2LCAyMjUsIDc1LCAyMiwgMiwgNzIsIDIyNSwgNzUsIDIyLCAyLCAyMzgsIDIzNCwgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDc0LCAyMjUsIDc1LCAyMiwgMiwgMjUwLCAxMTIsIDIyNSwgNzUsIDIyLCAyLCAyNTEsIDE3NiwgMjI1LCAKKyAgICA3NSwgMjI2LCA4OSwgMTk0LCAyMjUsIDc1LCAxNTAsIDIyMiwgMTk5LCAyMzgsIDIxNiwgMjI1LCA3NSwgMTUwLCAyMjIsIAorICAgIDE5OSwgMjA2LCA2MSwgMjI1LCA3NSwgMTUwLCAyMjIsIDE5OSwgMjA2LCAxNSwgMjI1LCA3NSwgMTUwLCAyMjIsIDE5OSwgCisgICAgMjQ3LCAxMTAsIDIyNSwgNzUsIDI0NywgMTU1LCA4MSwgMjI1LCA3NSwgMjE5LCAxMzEsIDIyNSwgNzUsIDE3LCAxOTksIDgxLCAKKyAgICAyMjUsIDc1LCAxNywgMTAyLCAyMjUsIDc1LCAxNywgMTA1LCAyMjUsIDc1LCAxNywgMTQ3LCAyMjUsIDc1LCAxNywgMTQ5LCAKKyAgICAyMjUsIDc1LCAxNywgMTY0LCAyMjUsIDc1LCAxNywgMTg3LCAyMjUsIDc1LCAxNywgMjEwLCAxMzUsIDIyNSwgNzUsIDE3LCAKKyAgICAxOTIsIDIyNSwgNzUsIDE3LCAyMTksIDExMywgMjI1LCA3NSwgMjMzLCAyMDgsIDIxOCwgMjQxLCAyMjUsIDc1LCAyMzMsIAorICAgIDIwOCwgMjIxLCAxMzYsIDIyNSwgNzUsIDEsIDIyNiwgMTgwLCAyMzUsIDExNiwgMjI1LCA3NSwgMSwgMjI2LCAxODAsIDIxOCwgCisgICAgMjYsIDc5LCA1LCAyMTcsIDg2LCA3OSwgMTM0LCAyMzUsIDUyLCAyMDAsIDEsIDIyMSwgMjI5LCAyMDUsIDM4LCA2MiwgNzksIAorICAgIDEzNCwgMjM1LCA1MiwgMjAwLCAxLCAyMjEsIDIyOSwgMjU1LCAxMzUsIDIxMywgNiwgMjQ5LCAxMCwgMTc4LCA3OSwgMTM0LCAKKyAgICAyMzUsIDUyLCAyMDAsIDEsIDIyMSwgMjI5LCAyNTUsIDEzNSwgMjM1LCA1MiwgMjA1LCAxOCwgMTc4LCA3OSwgMTM0LCA4MiwgCisgICAgMjAwLCAxLCAyMjEsIDIyOSwgMjIyLCA3OCwgMTc4LCA3OSwgMTM0LCAyNDYsIDEwNiwgMjAwLCAxLCAyMjEsIDIyOSwgMjEwLCAKKyAgICAxMjEsIDE3OCwgNzksIDEzNCwgMjQ3LCAxMzAsIDIwMCwgMSwgMjIxLCAyMjksIDIxNSwgMjA4LCAyMTAsIDEwNywgMTc4LCAKKyAgICA3OSwgMTM0LCAyMDAsIDEsIDIyMSwgMjI5LCAyMDUsIDE4LCAyMTAsIDEwNywgMTc4LCA3OSwgMTM0LCAyMTEsIDIzMSwgCisgICAgMjEwLCAxMDYsIDc5LCAxMzQsIDI0OCwgMzksIDIwMCwgMSwgMjIxLCAyMjgsIDc5LCAxMzQsIDI0OCwgMTQ2LCAyMTAsIDQsIAorICAgIDIwMCwgMSwgMjIxLCAyMjgsIDc5LCAxMzQsIDIyOCwgNTQsIDIwNSwgMTcsIDc5LCAxMzQsIDI0MSwgMTQzLCAyMDUsIDE4LCAKKyAgICAyNDgsIDM4LCA3OSwgMTM0LCAyMTAsIDEwNiwgNzksIDEzNCwgMjE4LCAzMSwgMjEwLCAxMDYsIDc5LCAxMzQsIDIwNSwgMTgsIAorICAgIDIxMCwgMTA2LCA3OSwgMTM0LCAyMTgsIDMxLCAyMDUsIDE4LCAyMTAsIDEwNiwgNzksIDEzNCwgMjEzLCAyOSwgMjQ2LCAKKyAgICAyNTAsIDIwOCwgMTk2LCAyMTAsIDEwNiwgNzksIDEzNCwgMjEzLCA5NywgMjM1LCA4NSwgMjEwLCAxMDYsIDc5LCAxMzQsIAorICAgIDI0NywgMTMwLCAyNTUsIDEzOSwgMjEyLCAxNzksIDIyMiwgNzcsIDE2OCwgMjQ3LCAxNTgsIDc5LCAxMzQsIDIzNSwgNTIsIAorICAgIDIwNSwgMTcsIDc5LCAyMjQsIDk2LCAyLCAyNDcsIDM1LCAyMTIsIDE3OCwgNzksIDIyNCwgOTYsIDIsIDIyNCwgMjIxLCAKKyAgICAyMTIsIDE3OCwgNzksIDI1MCwgMTYxLCAyLCAyMTAsIDExNywgMjM2LCAxOCwgMjU1LCAxNDAsIDIxMiwgMTc4LCA3OSwgCisgICAgMjUwLCAxNjEsIDIsIDI1NSwgMTM3LCAxNzIsIDc5LCAyNTAsIDE2MSwgMiwgMjExLCAyMDMsIDIwNSwgMTIsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjQwLCAyMjUsIDIzNiwgMTcsIDc5LCAyLCAyMTMsIDE5MiwgMjQwLCAyMjUsIDIzNSwgMTE4LCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMzUsIDUzLCA3OSwgMiwgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMzYsIDE3LCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMzUsIDExOCwgNzksIDIsIDIxMywgMTkyLCAyNDAsIDIyNSwgMjEzLCAxOTIsIDIyMCwgCisgICAgMTQ5LCA3OSwgMTcsIDE5OSwgODEsIDc5LCAxNywgMTAyLCA3OSwgMTcsIDEwNSwgNzksIDE3LCAxNDcsIDc5LCAxNywgMTQ5LCAKKyAgICA3OSwgMTcsIDE2NCwgNzksIDE3LCAxODcsIDc5LCAxNywgMjEwLCAxMzUsIDc5LCAxNywgMTkyLCA3OSwgMTcsIDIxOSwgCisgICAgMTEzLCA3OSwgMTcsIDE2NywgMTAyLCA3OSwgMTcsIDE2NywgMTA1LCA3OSwgMTcsIDE2NywgMTQ3LCA3OSwgMTcsIDE2NywgCisgICAgMTQ5LCA3OSwgMTcsIDE2NywgMTY0LCA3OSwgMTcsIDE2NywgMTg3LCA3OSwgMTcsIDE2NywgMjEwLCAxMzUsIDc5LCAxNywgCisgICAgMTY3LCAxOTIsIDc5LCAxNywgMTY3LCAyMTksIDExMywgNzksIDE3LCAxNjcsIDE5OSwgODEsIDc5LCAxMzQsIDI0OCwgNDEsIAorICAgIDIxMiwgMTc4LCA3OSwgMTM0LCAyMTksIDI0NCwgMjQ3LCAyMjUsIDIxOCwgNDIsIDE5OSwgMTYsIDc5LCAxMzQsIDI0NywgCisgICAgMTMwLCAyNTUsIDEzOSwgMjEyLCAxNzksIDI0NywgMjI2LCAyMjEsIDE4MiwgMjQ3LCAxNTgsIDc5LCAxMzQsIDIxOSwgMjQ0LCAKKyAgICAyNDcsIDIyNSwgMjEwLCAxMTgsIDIxMiwgMTc4LCA3OSwgMTM0LCAyNDcsIDksIDIyMSwgMjI4LCA3OSwgMTM0LCAyMDUsIAorICAgIDMzLCAyNTUsIDEzNiwgNzksIDEzNCwgMjM1LCAzNSwgMjEyLCAxNzksIDIzNCwgMjUwLCA3OSwgMTM0LCAyMzUsIDM1LCAKKyAgICAyMTIsIDE3OSwgMjM1LCAwLCA3OSwgMTM0LCAyNTEsIDc3LCAyMjYsIDE5NywgMjM0LCAyNTAsIDc5LCAxMzQsIDI1MSwgNzcsIAorICAgIDIyNiwgMTk3LCAyMzUsIDAsIDc5LCAyLCAyMDAsIDcxLCAyMDUsIDE2LCA3OSwgMiwgMjIyLCAxNTksIDIwNSwgMTYsIDc5LCAKKyAgICAxLCAxNjEsIDc5LCAxLCAyMjYsIDIwNywgNzksIDEsIDIzNiwgODksIDc5LCAxLCAyMzUsIDE5OSwgNzksIDEsIDIxOSwgCisgICAgMjUzLCA3OSwgMSwgMjQ3LCAxOTAsIDc5LCAxLCAyNDcsIDM3LCA3OSwgMSwgMjI3LCAyNDgsIDc5LCAxLCAyMTgsIDYwLCAKKyAgICA3OSwgMSwgMjA0LCAyNTMsIDc5LCAxLCAyMDQsIDI0MSwgNzksIDEsIDI0MSwgMjIwLCA3OSwgMSwgMjQxLCAyMDQsIDc5LCAKKyAgICAxLCAyMTksIDIxLCA3OSwgMSwgMjA3LCAzNiwgNzksIDEsIDIwNiwgMTIyLCA3OSwgMSwgMjQyLCA1OCwgNzksIDEsIDI0MSwgCisgICAgMTAwLCA3OSwgMSwgMTg4LCA3OSwgMSwgMTcyLCA3OSwgMSwgMjE1LCAyNDUsIDc5LCAxLCAyNDksIDEzNiwgNzksIDEsIAorICAgIDI0OCwgMjAwLCA3OSwgMSwgMTc4LCA3OSwgMSwgMjA1LCAzMiwgNzksIDEsIDIwNSwgMjIsIDc5LCAxLCAyMzksIDkzLCA3OSwgCisgICAgMSwgMjM5LCA4NywgNzksIDEsIDIwMSwgMTE0LCA3OSwgMSwgMTk5LCA3NywgNzksIDEsIDE5OSwgMTE0LCA3OSwgMSwgMjU1LCAKKyAgICAxNDIsIDc5LCAxLCAxODMsIDc5LCAxLCAyMTMsIDI1MiwgNzksIDEsIDE5NCwgNzksIDEsIDIxMCwgMTE0LCA3OSwgMSwgCisgICAgMjA4LCAxNzksIDc5LCAxLCAyMTIsIDY0LCA3OSwgMSwgMTQ0LCA3OSwgMSwgNjIsIDc5LCAxLCAyMjYsIDI5LCA3OSwgMSwgCisgICAgMjM3LCA1NywgMjEzLCAyNTIsIDc5LCAxLCAyMjYsIDEwOSwgNzksIDEsIDIxMiwgMjE1LCA3OSwgMjIsIDIsIDI1MiwgMTM4LCAKKyAgICA3OSwgMjIsIDIsIDcwLCA3OSwgMjIsIDIsIDIyOCwgMTUxLCA3OSwgMjIsIDIsIDY2LCA3OSwgMjIsIDIsIDIwMywgMTgyLCAKKyAgICA3OSwgMjIsIDIsIDEwOSwgMTQ2LCA3OSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDc5LCAyMiwgMiwgMTA5LCAxNTYsIDc5LCAKKyAgICAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgNzksIDIyLCAyLCA3MiwgNzksIDIyLCAyLCAyMzgsIDI1NSwgNzksIDIyLCAyLCA3NCwgCisgICAgNzksIDIyLCAyLCAyMTcsIDYzLCA3OSwgMiwgMjEzLCAxMiwgMjA4LCAyNSwgMjE5LCAyNTQsIDIxMywgMSwgNzksIDIsIAorICAgIDIxMywgNiwgMjQ5LCA5LCA3OSwgMjIsIDIsIDIxMywgMTA1LCA3MCwgNzksIDIyLCAyLCAyMTMsIDEwNSwgMjI4LCAxNTEsIAorICAgIDc5LCAyLCAyMTgsIDQyLCAxOTksIDE3LCAyMjAsIDE1OCwgMjQyLCA1OCwgNzksIDIsIDIwOSwgNDQsIDIyNSwgNDIsIDc5LCAKKyAgICAxMzQsIDIzNCwgMjE1LCA3OSwgMTM0LCAyMTYsIDE3MywgNzksIDIsIDIyNSwgNDUsIDIxMiwgMTc4LCA3OSwgMiwgMjAwLCAKKyAgICA3NiwgMjEyLCAxNzgsIDc5LCAyLCAyMjUsIDQ2LCAyMDUsIDMzLCAyNDcsIDE1OCwgNzksIDIsIDIyMiwgODAsIDI0NywgCisgICAgMTU4LCA3OSwgMiwgMjM1LCA1NiwgMjQ3LCAxNTksIDIxMywgOTUsIDc5LCAyLCAyMzUsIDU2LCAyMjIsIDcwLCAyMTMsIDk1LCAKKyAgICA3OSwgMiwgMjI4LCA1MCwgMjIyLCA4MCwgMjQ3LCAxNTgsIDc5LCAyMDgsIDEyLCAyLCAyMjUsIDQ2LCAyMDUsIDMzLCAyNDcsIAorICAgIDE1OCwgNzksIDIwOCwgMTIsIDIsIDIyMiwgODAsIDI0NywgMTU4LCA3OSwgMjA4LCAxMiwgMiwgMjI4LCA1MCwgMjIyLCA4MCwgCisgICAgMjQ3LCAxNTgsIDc5LCAyMDgsIDEyLCAxLCAxNjEsIDc5LCAyMDgsIDEyLCAxLCAyMjYsIDIwNywgNzksIDIwOCwgMTIsIDEsIAorICAgIDIzNiwgODksIDc5LCAyMDgsIDEyLCAxLCAyMzUsIDE5OSwgNzksIDIwOCwgMTIsIDEsIDIxOSwgMjUzLCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMjQ3LCAxOTAsIDc5LCAyMDgsIDEyLCAxLCAyNDcsIDM3LCA3OSwgMjA4LCAxMiwgMSwgMjI3LCAyNDgsIDc5LCAyMDgsIAorICAgIDEyLCAxLCAyMTgsIDYwLCA3OSwgMjA4LCAxMiwgMSwgMjA0LCAyNTMsIDc5LCAyMDgsIDEyLCAxLCAyMDQsIDI0MSwgNzksIAorICAgIDIwOCwgMTIsIDEsIDI0MSwgMjIwLCA3OSwgMjA4LCAxMiwgMSwgMjQxLCAyMDQsIDc5LCAyMDgsIDEyLCAxLCAyMTksIDIxLCAKKyAgICA3OSwgMjA4LCAxMiwgMSwgMjA3LCAzNiwgNzksIDIwOCwgMTIsIDEsIDIwNiwgMTIyLCA3OSwgMjA4LCAxMiwgMSwgMjQyLCAKKyAgICA1OCwgNzksIDIwOCwgMTIsIDEsIDI0MSwgMTAwLCA3OSwgMjA4LCAxMiwgMSwgMTg4LCA3OSwgMjA4LCAxMiwgMSwgMTcyLCAKKyAgICA3OSwgMjA4LCAxMiwgMSwgMjE1LCAyNDUsIDc5LCAyMDgsIDEyLCAxLCAyNDksIDEzNiwgNzksIDIwOCwgMTIsIDEsIDI0OCwgCisgICAgMjAwLCA3OSwgMjA4LCAxMiwgMSwgMTc4LCA3OSwgMjA4LCAxMiwgMSwgMjA1LCAzMiwgNzksIDIwOCwgMTIsIDEsIDIwNSwgCisgICAgMjIsIDc5LCAyMDgsIDEyLCAxLCAyMzksIDkzLCA3OSwgMjA4LCAxMiwgMSwgMjM5LCA4NywgNzksIDIwOCwgMTIsIDEsIAorICAgIDIwMSwgMTE0LCA3OSwgMjA4LCAxMiwgMSwgMTk5LCA3NywgNzksIDIwOCwgMTIsIDEsIDE5OSwgMTE0LCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMjU1LCAxNDIsIDc5LCAyMDgsIDEyLCAxLCAxODMsIDc5LCAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgNzksIDIwOCwgMTIsIAorICAgIDEsIDE5NCwgNzksIDIwOCwgMTIsIDEsIDIxMCwgMTE0LCA3OSwgMjA4LCAxMiwgMSwgMjA4LCAxNzksIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAyMTIsIDY0LCA3OSwgMjA4LCAxMiwgMSwgMTQ0LCA3OSwgMjA4LCAxMiwgMSwgNjIsIDc5LCAyMDgsIDEyLCAxLCAyMjYsIAorICAgIDI5LCA3OSwgMjA4LCAxMiwgMSwgMjM3LCA1NywgMjAxLCAxMTQsIDc5LCAyMDgsIDEyLCAxLCAyMzcsIDU3LCAxODMsIDc5LCAKKyAgICAyMDgsIDEyLCAxLCAyMzcsIDU3LCAyMTMsIDI1MiwgNzksIDIyNiwgMTYsIDIxMiwgMTc2LCAyMjYsIDIwNywgNzksIDIyNiwgCisgICAgMTYsIDIxMiwgMTc2LCAyMjYsIDIwOCwgMjQ3LCAyMjYsIDIyMSwgMTgyLCAyNDcsIDE1OCwgNzksIDI0NywgMTQ1LCAyLCAKKyAgICA4MCwgMjQ5LCAxLCA3OSwgMjQ3LCAxNDUsIDIsIDE2MiwgMjQ5LCAxLCA3OSwgMjQ3LCAxNDUsIDIsIDI0NywgMTQ3LCAyMDYsIAorICAgIDE5OSwgNzksIDI0NywgMTQ1LCAyLCAyMTEsIDIzMCwgMjU1LCAxNDEsIDc5LCAxNiwgMjM5LCAxNTIsIDI0OCwgMzYsIDc5LCAKKyAgICAxNiwgMjEzLCAxOTEsIDIxMywgMTMsIDc5LCAxNiwgMjE2LCAxOTcsIDIzNiwgMTYsIDc5LCAxNiwgMjEzLCAxOTEsIDIxMywgCisgICAgMTQsIDIxMywgOTcsIDIzNSwgODQsIDc5LCAxNiwgMjE1LCAyMDgsIDE3MiwgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNiwgCisgICAgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNywgMjE4LCAzMSwgMjU1LCAxMzgsIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzcsIAorICAgIDIzNSwgNTQsIDI1NSwgMTM4LCA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM3LCAyNDcsIDIyNiwgMjU1LCAxMzgsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjIwLCAxNTAsIDIxMywgMTkyLCAyNDAsIDIyNCwgNzksIDIsIDIxMywgMTkyLCAyMjAsIDE1MCwgMjM1LCAKKyAgICA1MywgNzksIDEzNCwgMjQ4LCA0MCwgMjEwLCA0LCAyMzUsIDE2MiwgMjIxLCAyMjksIDIxMywgOTYsIDc5LCAxMzQsIDIyMSwgCisgICAgMTM4LCAyMDAsIDEsIDIzNSwgMTYyLCAyMjEsIDIyOSwgMjEzLCA5NiwgNzksIDEzNCwgMjE4LCAzMSwgMjA1LCAxNywgNzksIAorICAgIDEzNCwgODIsIDI0OCwgNjMsIDIxMywgMywgMjAwLCAxLCAyMjEsIDIyOSwgMjIyLCA3OCwgMTc4LCA3OSwgMTM0LCAyNDYsIAorICAgIDEwNiwgMjQ4LCA2MywgMjEzLCAzLCAyMDAsIDEsIDIyMSwgMjI5LCAyMTAsIDEyMSwgMTc4LCAyMTMsIDQ1LCAyMDcsIDE4OCwgCisgICAgNTQsIDIyNSwgMjcsIDIwNywgMTg4LCA1NCwgMjEzLCA0NSwgMjA3LCAxODgsIDIsIDMsIDI0MCwgMTgwLCAyMjUsIDI3LCAKKyAgICAyMDcsIDE4OCwgMiwgMywgMjQwLCAxODAsIDc5LCAxMzQsIDIyNSwgMzcsIDIyMiwgODEsIDIxMiwgMTc4LCA3OSwgMTM0LCAKKyAgICAyMDUsIDEyNSwgMjIyLCA4MSwgMjEyLCAxNzgsIDcxLCAxLCAxNjEsIDcxLCAxLCAyMjYsIDIwNywgNzEsIDEsIDIzNiwgODksIAorICAgIDcxLCAxLCAyMzUsIDE5OSwgNzEsIDEsIDIxOSwgMjUzLCA3MSwgMSwgMjQ3LCAxOTAsIDcxLCAxLCAyNDcsIDM3LCA3MSwgMSwgCisgICAgMjI3LCAyNDgsIDcxLCAxLCAyMjcsIDIxNSwgNzEsIDEsIDIxOCwgNjAsIDcxLCAxLCAyMTgsIDI0MywgNzEsIDEsIDIwNCwgCisgICAgMjUzLCA3MSwgMSwgMjA0LCAyNDEsIDcxLCAxLCAyNDEsIDIyMCwgNzEsIDEsIDI0MSwgMjA0LCA3MSwgMSwgMjE5LCAyMSwgCisgICAgNzEsIDEsIDIwNywgMzYsIDcxLCAxLCAyMDYsIDEyMiwgNzEsIDEsIDI0MiwgNTgsIDcxLCAxLCAyNDEsIDEwMCwgNzEsIDEsIAorICAgIDE4OCwgNzEsIDEsIDE3MiwgNzEsIDEsIDIxNSwgMjQ1LCA3MSwgMSwgMjQ5LCAxMzYsIDcxLCAxLCAyNDgsIDIwMCwgNzEsIAorICAgIDEsIDE3OCwgNzEsIDEsIDE4MywgNzEsIDEsIDIxMywgMjUyLCA3MSwgMSwgMTk0LCA3MSwgMSwgMjAxLCAxMTQsIDcxLCAxLCAKKyAgICAyMTIsIDY0LCA3MSwgMSwgMTQ0LCA3MSwgMSwgMjI0LCAxMzgsIDcxLCAxLCA2MiwgNzEsIDEsIDIxMCwgOTAsIDYyLCA3MSwgCisgICAgMSwgNzAsIDcxLCAxLCAyMjgsIDE1MSwgNzEsIDEsIDY2LCA3MSwgMSwgMjAzLCAxODIsIDcxLCAxLCA3MiwgNzEsIDEsIAorICAgIDIyMSwgMTA3LCA3MiwgNzEsIDEsIDc0LCA3MSwgMSwgMjUwLCAxMzksIDcxLCAyMiwgMiwgMjA2LCAyNDgsIDI1MiwgMTM4LCAKKyAgICA3MSwgMjIsIDIsIDI1MiwgMTM4LCA3MSwgMjIsIDIsIDcwLCA3MSwgMjIsIDIsIDIyOCwgMTUxLCA3MSwgMjIsIDIsIDY2LCAKKyAgICA3MSwgMjIsIDIsIDIwMywgMTgyLCA3MSwgMjIsIDIsIDcyLCA3MSwgMjIsIDIsIDI1MSwgMTc2LCA3MSwgMjIsIDIsIDIyMSwgCisgICAgMTA3LCAyMjgsIDE1MSwgNzEsIDIyLCAyLCAyMjEsIDEwNywgNzQsIDcxLCAyMiwgMiwgMTk3LCA1NiwgNzEsIDIsIDI1MSwgCisgICAgMzMsIDcxLCAyLCA3MywgNTcsIDcxLCAyLCAyMDIsIDIwMywgNzEsIDIsIDIwMiwgMjA4LCA3MSwgMiwgMjUwLCAxODUsIDcxLCAKKyAgICAxMTEsIDIsIDE3OSwgMTgzLCA3MSwgMTExLCAyLCAxNzksIDIxMywgMjUyLCA3MSwgMTExLCAyLCAxNzksIDIwMSwgMTE0LCAKKyAgICA3MSwgMTExLCAyLCAxNzksIDE0NCwgNzEsIDEsIDIzNSwgNjksIDIxMiwgNjQsIDcxLCAxNywgMTk5LCA4MSwgNzEsIDE3LCAKKyAgICAxMDIsIDcxLCAxNywgMTA1LCA3MSwgMTcsIDE0NywgNzEsIDE3LCAxNDksIDcxLCAxNywgMTY0LCA3MSwgMTcsIDE4NywgNzEsIAorICAgIDE3LCAyMTAsIDEzNSwgNzEsIDE3LCAxOTIsIDcxLCAxNywgMjE5LCAxMTMsIDcxLCAyLCAyMjQsIDE0OCwgMjExLCAxOTIsIAorICAgIDcxLCAyLCAyMTEsIDE5MiwgNzEsIDE2LCAyMjQsIDEwNSwgNzEsIDE2LCAyNDYsIDY0LCA3MSwgMTYsIDI1MSwgMTk3LCA3MSwgCisgICAgMTYsIDIzNSwgMjU0LCA3MSwgMSwgMjEwLCAxMTQsIDcxLCAxLCAyMDgsIDE3OSwgNzEsIDEsIDEwOSwgMTQ2LCA3MSwgMSwgCisgICAgMTA5LCAyMTIsIDIxNiwgNzEsIDEsIDEwOSwgMTU2LCA3MSwgMSwgMTA5LCAyMjQsIDEzOSwgNzEsIDIyLCAyLCAxMDksIAorICAgIDE0NiwgNzEsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCA3MSwgMjIsIDIsIDEwOSwgMTU2LCA3MSwgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDcxLCAxLCAyMjEsIDEwNywgMjE5LCAyNTMsIDcxLCAxLCAyMjEsIDEwNywgMjI3LCAyMTUsIDcxLCAxLCAyMjEsIAorICAgIDEwNywgMjQ5LCA0NCwgNzEsIDEsIDIyMSwgMTA3LCAyNDksIDM5LCA3MSwgMTExLCAyLCAyMjEsIDEwNywgMTc5LCAxODgsIAorICAgIDcxLCAxMTEsIDIsIDIyMSwgMTA3LCAxNzksIDE3OCwgNzEsIDExMSwgMiwgMjIxLCAxMDcsIDE3OSwgMTk0LCA3MSwgMSwgCisgICAgMjEwLCAxMjAsIDIyNywgNDQsIDIxMCwgMTE0LCA3MSwgMjIsIDIsIDIxMCwgMTIwLCAyMjcsIDQ0LCAyMzgsIDY5LCA3MSwgCisgICAgMTUwLCAxMzQsIDIxMCwgMTIwLCAyMjcsIDQ0LCAyMzQsIDE1MywgNzEsIDE1MCwgMTM0LCAyMTAsIDEyMCwgMjI3LCA0NCwgCisgICAgMjI3LCA5LCAyMTUsIDIxNywgNzEsIDEsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDYsIDEyMiwgNzEsIDEsIAorICAgIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMTQsIDE4NSwgNzEsIDIyLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCAKKyAgICA0NCwgMjM4LCA2OSwgNzEsIDIyLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA0LCAzMSwgNzEsIDIsIDIwMSwgCisgICAgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIDE3MywgNzEsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIAorICAgIDE3MiwgNzEsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIDE3MSwgNzEsIDIsIDIwMSwgNDUsIDIxNCwgCisgICAgMTc5LCAyMjcsIDQ0LCAyMDUsIDE3MCwgNzEsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIDE2OSwgNzEsIAorICAgIDEsIDIzOSwgMTIsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMTksIDIxLCA3MSwgMSwgMjM5LCAxMiwgMjE0LCAxNzksIDIyNywgCisgICAgNDQsIDE5OSwgMTc0LCA3MSwgMSwgMjM5LCAxMiwgMjE0LCAxNzksIDIyNywgNDQsIDIzNSwgMTY0LCA3MSwgMjIsIDIsIAorICAgIDIzNiwgMTEsIDIyNywgNDQsIDcwLCA3MSwgMjIsIDIsIDIyNywgMTQsIDIxNywgMTIxLCA3MSwgMjIsIDIsIDIyNywgMTQsIAorICAgIDY2LCA3MSwgMjIsIDIsIDIyNywgMTQsIDIzOCwgMjU1LCA3MSwgMSwgMjEwLCA5MCwgMTYxLCA3MSwgMSwgMjEwLCA5MCwgCisgICAgMjI2LCAyMDcsIDcxLCAxLCAyMTAsIDkwLCAyMzYsIDg5LCA3MSwgMSwgMjEwLCA5MCwgMjQ3LCAxOTAsIDcxLCAxLCAyMTAsIAorICAgIDkwLCAxOTksIDExNCwgNzEsIDEsIDIxMCwgOTAsIDIxOCwgNjAsIDcxLCAxLCAyMTAsIDkwLCAyNDIsIDU4LCA3MSwgMSwgCisgICAgMjEwLCA5MCwgMTg4LCA3MSwgMSwgMjEwLCA5MCwgMjE1LCAyNDUsIDcxLCAxLCAyMTAsIDkwLCAyMzcsIDE5NSwgNzEsIDEsIAorICAgIDIxMCwgOTAsIDI0OSwgMTM2LCA3MSwgMSwgMjEwLCA5MCwgMjA2LCAxMjIsIDcxLCAxLCAyMTAsIDkwLCAxNDQsIDcxLCAKKyAgICAxMTEsIDIsIDIxMCwgOTAsIDE3OSwgMjAxLCAxMTQsIDcxLCAyMiwgMiwgMjEwLCA5MCwgMjUyLCAxMzgsIDcxLCAyMiwgMiwgCisgICAgMjEwLCA5MCwgNzIsIDcxLCAyMiwgMiwgMjEwLCA5MCwgMTk3LCA1NiwgNzEsIDIyLCAyLCAyMTAsIDkwLCA0NywgMjAwLCAKKyAgICAxMjMsIDcxLCAyLCAyMTAsIDkwLCAyMDUsIDE3MiwgNzEsIDIsIDIxMCwgOTAsIDIwNSwgMTcxLCA3MSwgMiwgMjEwLCA5MCwgCisgICAgMjA1LCAxNjksIDcxLCAyLCAyMTAsIDkwLCAyMDUsIDE2OCwgNzEsIDIsIDIxMCwgOTAsIDI0MywgNiwgMjA1LCAxNzIsIDcxLCAKKyAgICAyLCAyMTAsIDkwLCAyNDMsIDYsIDIwNSwgMTcxLCA3MSwgMiwgMjEwLCA5MCwgMjQzLCA2LCAyMzgsIDE4MiwgMjA1LCAxNzQsIAorICAgIDcxLCAxLCAyMTIsIDE2MCwgMjE2LCAxODEsIDIzNywgMTk1LCA3MSwgMiwgMjEyLCAxNjAsIDIxNiwgMTgxLCAyMDUsIDE2OSwgCisgICAgNzEsIDIxMCwgOTAsIDE3LCAxOTksIDgxLCA3MSwgMjEwLCA5MCwgMTcsIDEwMiwgNzEsIDIxMCwgOTAsIDE3LCAxMDUsIDcxLCAKKyAgICAyMTAsIDkwLCAxNywgMTQ3LCA3MSwgMjEwLCA5MCwgMTcsIDE0OSwgNzEsIDIxMCwgOTAsIDE3LCAxNjQsIDcxLCAyMTAsIAorICAgIDkwLCAxNywgMTg3LCA3MSwgMjEwLCA5MCwgMTcsIDIxMCwgMTM1LCA3MSwgMjEwLCA5MCwgMTcsIDE5MiwgNzEsIDIxMCwgCisgICAgOTAsIDE3LCAyMTksIDExMywgNzEsIDIsIDIyNiwgMjAwLCAyMDUsIDE3MywgNzEsIDIsIDIyNiwgMjAwLCAyMDUsIDE3MSwgCisgICAgNzEsIDIyLCAyLCAyNTEsIDE2MywgNjIsIDcxLCAyMiwgMiwgMjUxLCAxNjMsIDI1MSwgMTc2LCA3MSwgMTYsIDIxMCwgOTAsIAorICAgIDEwMiwgNzEsIDE2LCAyMTAsIDkwLCAyMzgsIDQyLCAxMTgsIDYsIDEsIDI1MSwgODUsIDExOCwgNiwgMSwgMjQ5LCA4OCwgCisgICAgMTE4LCA2LCAxLCAyMzYsIDU5LCAxMTgsIDYsIDEsIDI0MCwgMTkwLCAxMTgsIDYsIDEsIDIzOCwgMTc5LCAxMTgsIDYsIDEsIAorICAgIDIwMiwgMjE3LCAxMTgsIDYsIDEsIDE5OSwgODQsIDExOCwgNiwgMSwgMjA2LCAyNDQsIDExOCwgNiwgMSwgMjI4LCAxMTcsIAorICAgIDExOCwgNiwgMSwgMjI3LCA2OCwgMTE4LCA2LCAxLCAyMjUsIDY1LCAxMTgsIDYsIDEsIDIyMiwgMTgwLCAxMTgsIDYsIDEsIAorICAgIDIyMCwgMTI1LCAxMTgsIDYsIDEsIDIxNywgNzgsIDExOCwgNiwgMSwgMjE2LCAxMzAsIDExOCwgNiwgMSwgMTk5LCA3MywgCisgICAgMTE4LCA2LCAxLCAyMTMsIDIzNCwgMTE4LCA2LCAxLCAyMTIsIDEzLCAxMTgsIDYsIDEsIDIwNiwgMjMyLCAxMTgsIDYsIDEsIAorICAgIDIwNCwgNSwgMTE4LCA2LCAxLCAyMTUsIDIzNywgMTE4LCA2LCAxLCAyMjYsIDE5NSwgMTE4LCA2LCAxLCAyMzUsIDE5MCwgCisgICAgMTE4LCA2LCAxLCAyMTQsIDE0NCwgMTE4LCA2LCAxLCAyMTAsIDIxLCAxMTgsIDYsIDEsIDI0NiwgMjIzLCAxMTgsIDYsIDEsIAorICAgIDI0NywgMTU4LCAxMTgsIDYsIDEsIDIyNywgMTk4LCAxMTgsIDYsIDEsIDI0NiwgMTYyLCAxMTgsIDYsIDEsIDI0NywgMjEsIAorICAgIDExOCwgNiwgMSwgMjAwLCAxNzksIDExOCwgNiwgMSwgMjI3LCAyMTIsIDExOCwgNiwgMSwgMjM0LCAyMzAsIDExOCwgNiwgMSwgCisgICAgMjM0LCAxMzksIDExOCwgNiwgMSwgMjM0LCA2OSwgMTE4LCA2LCAxLCAyMDEsIDY0LCAxMTgsIDYsIDEsIDIzNCwgMTY2LCAKKyAgICAxMTgsIDYsIDEsIDIzMywgMjAzLCAxMTgsIDYsIDEsIDE5OSwgMjQ3LCAxMTgsIDYsIDEsIDI1MSwgMjEwLCAxMTgsIDEsIAorICAgIDI1MSwgODUsIDExOCwgMSwgMjQ5LCA4OCwgMTE4LCAxLCAyMzYsIDU5LCAxMTgsIDEsIDI0MCwgMTkwLCAxMTgsIDEsIDIzOCwgCisgICAgMTc5LCAxMTgsIDEsIDIwMiwgMjE3LCAxMTgsIDEsIDE5OSwgODQsIDExOCwgMSwgMjA2LCAyNDQsIDExOCwgMSwgMjI4LCAKKyAgICAxMTcsIDExOCwgMSwgMjI3LCA2OCwgMTE4LCAxLCAyMjUsIDY1LCAxMTgsIDEsIDIyMiwgMTgwLCAxMTgsIDEsIDIyMCwgCisgICAgMTI1LCAxMTgsIDEsIDIxNywgNzgsIDExOCwgMSwgMjE2LCAxMzAsIDExOCwgMSwgMTk5LCA3MywgMTE4LCAxLCAyMTMsIAorICAgIDIzNCwgMTE4LCAxLCAyMTIsIDEzLCAxMTgsIDEsIDIwNiwgMjMyLCAxMTgsIDEsIDIwNCwgNSwgMTE4LCAxLCAyMTUsIDIzNywgCisgICAgMTE4LCAxLCAyMjYsIDE5NSwgMTE4LCAxLCAyMzUsIDE5MCwgMTE4LCAxLCAyMTQsIDE0NCwgMTE4LCAxLCAyMTAsIDIxLCAKKyAgICAxMTgsIDEsIDI0NiwgMjIzLCAxMTgsIDEsIDI0NywgMTU4LCAxMTgsIDEsIDIyNywgMTk4LCAxMTgsIDEsIDI0NiwgMTYyLCAKKyAgICAxMTgsIDEsIDI0NywgMjEsIDExOCwgMSwgMjAwLCAxNzksIDExOCwgMSwgMjI3LCAyMTIsIDExOCwgMSwgMjM0LCAyMzAsIAorICAgIDExOCwgMSwgMjM0LCAxMzksIDExOCwgMSwgMjM0LCA2OSwgMTE4LCAxLCAyMDEsIDY0LCAxMTgsIDEsIDIzNCwgMTY2LCAKKyAgICAxMTgsIDEsIDIzMywgMjAzLCAxMTgsIDEsIDIzNywgMTEyLCAxMTgsIDEsIDE5OSwgMjQ3LCAxMTgsIDEsIDIzOCwgMTk3LCAKKyAgICAxMTgsIDEsIDIwNCwgMTg1LCAyMzYsIDU5LCAxMTgsIDEsIDI1MSwgMTcxLCAxMTgsIDIxNiwgMTI4LCAyMTAsIDE1NCwgNjcsIAorICAgIDEsIDExOCwgMjIwLCAxMjUsIDExOCwgMSwgMjUxLCAyMTAsIDExOCwgMSwgMjM0LCAxNjUsIDU0LCAxMTgsIDEsIDIyNSwgCisgICAgMTY3LCA1NCwgMjksIDEyOSwgMjI2LCAxMjEsIDI5LCAxMjksIDIwOCwgMTcxLCAyOSwgMTI5LCAyMTksIDE0MywgMjksIAorICAgIDEyOSwgMjA1LCAyNTMsIDI5LCAxMjksIDIwOCwgMTYwLCAyOSwgMTI5LCAyMTMsIDc4LCAyOSwgMTI5LCAyMjEsIDE5NywgCisgICAgMjksIDEyOSwgMjE1LCAxOTAsIDI5LCAxMjksIDIwOCwgMTY4LCAyOSwgMTI5LCAyMDksIDEyOSwgMjksIDEyOSwgMjA4LCAKKyAgICAxNjUsIDI5LCAxMjksIDIyOCwgMTc0LCAyOSwgMTI5LCAyNDYsIDE2OCwgMjksIDEyOSwgMjA4LCAxNzUsIDI5LCAxMjksIAorICAgIDI0NiwgMjMyLCAyOSwgMTI5LCAyMjYsIDE4MywgMjksIDEyOSwgMjA2LCA4MCwgMjksIDEyOSwgMjE1LCAyMjcsIDI5LCAKKyAgICAxMjksIDIzNCwgNjYsIDI5LCAxMjksIDIxOSwgMTM5LCAyOSwgMTI5LCAyMDgsIDE2OSwgMjksIDEyOSwgMjE5LCAxMzMsIAorICAgIDI5LCAxMjksIDIxOSwgMTM3LCAyOSwgMTI5LCAyMDUsIDI1MCwgMjksIDEyOSwgMjEzLCA2NiwgMjksIDEyOSwgMjA4LCAKKyAgICAxNjcsIDI5LCAxMjksIDIxMywgNzYsIDI5LCAxMjksIDIyNywgNTAsIDI5LCAxMjksIDIyMSwgMTkwLCAyOSwgMTI5LCAyMjcsIAorICAgIDUzLCAyOSwgMTI5LCAyMTUsIDE4NSwgMjksIDEyOSwgMjE1LCAxODMsIDI5LCAxMjksIDIxNSwgMTcxLCAyOSwgMTI5LCAKKyAgICAyMTUsIDE3OSwgMjksIDEyOSwgMjE1LCAxNzcsIDI5LCAxMjksIDIxNSwgMTc0LCAyOSwgMTI5LCAyMTUsIDE3NiwgMjksIAorICAgIDEyOSwgMjE1LCAxNzMsIDI5LCAxMjksIDIxNSwgMTc4LCAyOSwgMTI5LCAyMTUsIDE4OCwgMjksIDEyOSwgMjE1LCAxODksIAorICAgIDI5LCAxMjksIDIxNSwgMTcyLCAyOSwgMTI5LCAyMTUsIDE4MiwgMjksIDEyOSwgMjI3LCA1MSwgMjksIDEyOSwgMjI3LCA0OSwgCisgICAgMjksIDEyOSwgMjA5LCAxMjIsIDI5LCAxMjksIDIwOSwgMTIwLCAyOSwgMTI5LCAyMDksIDExMiwgMjksIDEyOSwgMjA5LCAKKyAgICAxMTUsIDI5LCAxMjksIDIwOSwgMTIxLCAyOSwgMTI5LCAyMDksIDExNywgMjksIDEyOSwgMjA5LCAxMTYsIDI5LCAxMjksIAorICAgIDIwOSwgMTE0LCAyOSwgMTI5LCAyMDksIDEyNSwgMjksIDEyOSwgMjA5LCAxMjcsIDI5LCAxMjksIDIwOSwgMTI4LCAyOSwgCisgICAgMTI5LCAyMDksIDEyMywgMjksIDEyOSwgMjA5LCAxMTMsIDI5LCAxMjksIDIwOSwgMTE4LCAyOSwgMTI5LCAyMDksIDEyNiwgCisgICAgMjksIDEyOSwgMjQ2LCAyMTQsIDI5LCAxMjksIDI0NiwgMjEyLCAyOSwgMTI5LCAyNDcsIDQ4LCAyOSwgMTI5LCAyNDcsIDQ2LCAKKyAgICAyOSwgMTI5LCAyMTYsIDE0NiwgMjksIDEyOSwgMjI4LCAxNjksIDI5LCAxMjksIDIyOCwgMTYwLCAyOSwgMTI5LCAyMjgsIAorICAgIDE2OCwgMjksIDEyOSwgMjI4LCAxNjUsIDI5LCAxMjksIDIyOCwgMTYzLCAyOSwgMTI5LCAyMjgsIDE2NywgMjksIDEyOSwgCisgICAgMjA4LCAxNzIsIDI5LCAxMjksIDIyOCwgMTcyLCAyOSwgMTI5LCAyMjgsIDE3MywgMjksIDEyOSwgMjI4LCAxNjEsIDI5LCAKKyAgICAxMjksIDIyOCwgMTY2LCAyOSwgMTI5LCAyMDAsIDI4LCAyOSwgMTI5LCAyNDYsIDE2NywgMjksIDEyOSwgMjQ2LCAyMTUsIAorICAgIDI5LCAxMjksIDI0NiwgMjEzLCAyOSwgMTI5LCAyNDcsIDQ5LCAyOSwgMTI5LCAyNDcsIDQ3LCAyOSwgMTI5LCAyNDYsIDIzMCwgCisgICAgMjksIDEyOSwgMjQ2LCAyMzEsIDI5LCAxMjksIDI0NiwgMjE2LCAyOSwgMTI5LCAyNDcsIDUwLCAyOSwgMTI5LCAyMTUsIAorICAgIDIyNSwgMjksIDEyOSwgMjI3LCA1MiwgMjksIDEyOSwgMjA4LCAxNzMsIDI5LCAxMjksIDIwMCwgMzQsIDI5LCAxMjksIDIyNiwgCisgICAgMTEyLCAyOSwgMTI5LCAyMTksIDEzNSwgMjksIDEyOSwgMjE5LCAxNDEsIDI5LCAxMjksIDIxOSwgMTQwLCAyOSwgMTI5LCAKKyAgICAyMDUsIDI0NywgMjksIDEyOSwgMjM3LCA5MywgMjksIDE4MSwgMjM3LCA5MywgMjksIDE4MSwgNjIsIDI5LCAxODEsIDI1MSwgCisgICAgMjIxLCAyOSwgMTgxLCAxODMsIDI5LCAxODEsIDIwMCwgOTgsIDI5LCAxODEsIDIzOCwgMTQyLCAyOSwgMTgxLCA3MiwgMjksIAorICAgIDE4MSwgMjAwLCAzOCwgMjksIDE4MSwgMjAwLCA1MSwgMjksIDE4MSwgNzQsIDI5LCAxODEsIDIwMSwgMTE0LCAyOSwgMTgxLCAKKyAgICAyMDEsIDExMCwgMjksIDE4MSwgMjE3LCAxMjEsIDI5LCAxODEsIDE5OSwgMjQ1LCAyOSwgMTgxLCA2NiwgMjksIDE4MSwgCisgICAgMjAxLCA1MCwgMjksIDE4MSwgMjAxLCA2NCwgMjksIDE4MSwgMjAxLCAzMSwgMjksIDE4MSwgMTk5LCAyMTEsIDI5LCAxODEsIAorICAgIDIzOCwgNjksIDI5LCAxODEsIDIwMCwgOSwgMjksIDE4MSwgNzAsIDI5LCAxODEsIDI1NSwgMTMzLCAyOSwgMTgxLCAyNTUsIAorICAgIDEzMiwgMjksIDE4MSwgMjAwLCAxMTIsIDI5LCAxODEsIDIwMCwgMTEwLCAyOSwgMTgxLCAyMzgsIDE0MCwgMjksIDE4MSwgCisgICAgMjM4LCAxMzksIDI5LCAxODEsIDIzOCwgMTQxLCAyOSwgMTgxLCAyMDAsIDM3LCAyOSwgMTgxLCAyMDAsIDM2LCAyOSwgMTgxLCAKKyAgICAyMTcsIDIzMCwgMjksIDE4MSwgMjE3LCAyMzEsIDI5LCAxODEsIDIxNywgMjI0LCAyOSwgMTgxLCAyMTcsIDIyOSwgMjksIAorICAgIDE4MSwgMjE3LCAyMjcsIDI5LCAxODEsIDE5OSwgMjM5LCAyOSwgMTgxLCAxOTksIDIzOCwgMjksIDE4MSwgMTk5LCAyMzcsIAorICAgIDI5LCAxODEsIDE5OSwgMjQwLCAyOSwgMTgxLCAxOTksIDI0MSwgMjksIDE4MSwgMjA0LCAxMDQsIDI5LCAxODEsIDIwNCwgCisgICAgMTAzLCAyOSwgMTgxLCAyMDQsIDEwMSwgMjksIDE4MSwgMjA0LCA5NywgMjksIDE4MSwgMjA0LCA5OCwgMjksIDE4MSwgMTk5LCAKKyAgICAyMTAsIDI5LCAxODEsIDE5OSwgMjA3LCAyOSwgMTgxLCAxOTksIDIwOCwgMjksIDE4MSwgMTk5LCAyMDIsIDI5LCAxODEsIAorICAgIDE5OSwgMjAzLCAyOSwgMTgxLCAxOTksIDIwNCwgMjksIDE4MSwgMTk5LCAyMDYsIDI5LCAxODEsIDIzOCwgNjMsIDI5LCAKKyAgICAxODEsIDIzOCwgNjUsIDI5LCAxODEsIDIwMCwgOCwgMjksIDE4MSwgMjMzLCAxOCwgMjksIDE4MSwgMjMzLCAxMCwgMjksIAorICAgIDE4MSwgMjMzLCAxMywgMjksIDE4MSwgMjMzLCAxMSwgMjksIDE4MSwgMjMzLCAxNSwgMjksIDE4MSwgMjMzLCAxNywgMjksIAorICAgIDE4MSwgMjUwLCAyNDUsIDI5LCAxODEsIDI1MCwgMjQyLCAyOSwgMTgxLCAyNTAsIDI0MCwgMjksIDE4MSwgMjUwLCAyNDEsIAorICAgIDI5LCAxODEsIDIwOCwgMTc2LCAyOSwgMTgxLCAyNTUsIDEzNCwgMjksIDE4MSwgMjAwLCAxMTEsIDI5LCAxODEsIDIwMCwgCisgICAgMzUsIDI5LCAxODEsIDIxNywgMjI2LCAyOSwgMTgxLCAyMTcsIDIyNSwgMjksIDExMCwgMjI2LCAxMjEsIDI5LCAxMTAsIAorICAgIDIwOCwgMTcxLCAyOSwgMTEwLCAyMjYsIDExNCwgMjksIDExMCwgMjE5LCAxNDMsIDI5LCAxMTAsIDIxOSwgMTQxLCAyOSwgCisgICAgMTEwLCAyMTksIDE0MCwgMjksIDExMCwgMjA1LCAyNTMsIDI5LCAxMTAsIDIxMywgNzgsIDI5LCAxMTAsIDIxMywgNzMsIDI5LCAKKyAgICAxMTAsIDIxMywgNzAsIDI5LCAxMTAsIDIxMywgNjMsIDI5LCAxMTAsIDIxMywgNTgsIDI5LCAxMTAsIDIxMywgNTMsIDI5LCAKKyAgICAxMTAsIDIxMywgNjQsIDI5LCAxMTAsIDIxMywgNzYsIDI5LCAxMTAsIDIyMSwgMTk3LCAyOSwgMTEwLCAyMTUsIDE5MCwgMjksIAorICAgIDExMCwgMjE1LCAxNzksIDI5LCAxMTAsIDIwOSwgMTI5LCAyOSwgMTEwLCAyMDgsIDE2NSwgMjksIDExMCwgMjI4LCAxNzQsIAorICAgIDI5LCAxMTAsIDI0NiwgMTY4LCAyOSwgMTEwLCAyNDYsIDIzMiwgMjksIDExMCwgMjI2LCAxODMsIDI5LCAxMTAsIDIwNiwgCisgICAgODAsIDI5LCAxMTAsIDIxNSwgMjI3LCAyOSwgMTEwLCAyMzQsIDY2LCAyOSwgMTEwLCAyMjYsIDExNSwgMjksIDExMCwgMjI2LCAKKyAgICAxMTMsIDI5LCAxMTAsIDIxOSwgMTM5LCAyOSwgMTEwLCAyMTksIDEzMywgMjksIDExMCwgMjE5LCAxMzUsIDI5LCAxMTAsIAorICAgIDIxOSwgMTM4LCAyOSwgMTEwLCAyMTksIDEzNCwgMjksIDExMCwgMjA1LCAyNTAsIDI5LCAxMTAsIDIwNSwgMjQ3LCAyOSwgCisgICAgMTEwLCAyMTMsIDcxLCAyOSwgMTEwLCAyMTMsIDY2LCAyOSwgMTEwLCAyMTMsIDUyLCAyOSwgMTEwLCAyMTMsIDUxLCAyOSwgCisgICAgMTEwLCAyMDgsIDE2NywgMjksIDExMCwgMjEzLCA2OCwgMjksIDExMCwgMjEzLCA2NywgMjksIDExMCwgMjEzLCA2MCwgMjksIAorICAgIDExMCwgMjEzLCA2MiwgMjksIDExMCwgMjEzLCA3NSwgMjksIDExMCwgMjEzLCA1NSwgMjksIDExMCwgMjEzLCA2NSwgMjksIAorICAgIDExMCwgMjEzLCA3NCwgMjksIDExMCwgMjEzLCA1MCwgMjksIDExMCwgMjIxLCAxOTMsIDI5LCAxMTAsIDIyMSwgMTg4LCAyOSwgCisgICAgMTEwLCAyMjEsIDE5MCwgMjksIDExMCwgMjIxLCAxODcsIDI5LCAxMTAsIDIyMSwgMTg1LCAyOSwgMTEwLCAyMjEsIDE5MSwgCisgICAgMjksIDExMCwgMjIxLCAxOTYsIDI5LCAxMTAsIDIyMSwgMTk0LCAyOSwgMTEwLCAyMjcsIDUzLCAyOSwgMTEwLCAyMTUsIAorICAgIDE4MSwgMjksIDExMCwgMjE1LCAxODIsIDI5LCAxMTAsIDIxNSwgMTg3LCAyOSwgMTEwLCAyMjcsIDUxLCAyOSwgMTEwLCAKKyAgICAyMDksIDEyMiwgMjksIDExMCwgMjA5LCAxMTIsIDI5LCAxMTAsIDIwOSwgMTE1LCAyOSwgMTEwLCAyMDksIDExNywgMjksIAorICAgIDExMCwgMjE2LCAxNDYsIDI5LCAxMTAsIDIyOCwgMTY5LCAyOSwgMTEwLCAyMjgsIDE2MiwgMjksIDExMCwgMjA4LCAxNzIsIAorICAgIDI5LCAxMTAsIDIyOCwgMTcwLCAyOSwgMTEwLCAyMDAsIDI4LCAyOSwgMTEwLCAyMDAsIDI0LCAyOSwgMTEwLCAyMDAsIDI1LCAKKyAgICAyOSwgMTEwLCAyMTUsIDIyNSwgMjksIDExMCwgMjI3LCA1MiwgMjksIDExMCwgMjM0LCA2NCwgMjksIDExMCwgMjM0LCA2MiwgCisgICAgMjksIDExMCwgMjM0LCA2NSwgMjksIDExMCwgMjM0LCA2MywgMjksIDExMCwgMjAwLCAzNCwgMjksIDExMCwgMjI2LCAxMTcsIAorICAgIDI5LCAxMTAsIDIyNiwgMTE2LCAyOSwgMTEwLCAyMjYsIDEyMCwgMjksIDExMCwgMjI2LCAxMTgsIDI5LCAxMTAsIDIyNiwgCisgICAgMTE5LCAyOSwgMTEwLCAyMDgsIDE2OSwgMzQsIDUsIDE0NCwgMzQsIDUsIDIzMywgOTcsIDM0LCA1LCAyMzQsIDc1LCAzNCwgCisgICAgNSwgMjM0LCAyMzMsIDM0LCA1LCAyMzQsIDEyMCwgMzQsIDUsIDIzNCwgMTM5LCAzNCwgNSwgMjMzLCAyMDcsIDM0LCA1LCAKKyAgICAyMzMsIDIwNiwgMzQsIDUsIDE5NCwgMzQsIDUsIDIyNCwgNDIsIDM0LCA1LCAyMjQsIDIxMCwgMzQsIDUsIDIyNSwgMTc1LCAKKyAgICAzNCwgNSwgMjI1LCAzMiwgMzQsIDUsIDIyNSwgNDAsIDM0LCA1LCAyMjQsIDExMCwgMzQsIDUsIDIyNCwgMTAsIDM0LCA1LCAKKyAgICAyMzQsIDg0LCAzNCwgNSwgMjM0LCA3OCwgMzQsIDUsIDIzNCwgODAsIDM0LCA1LCAyMzQsIDgzLCAzNCwgNSwgMjM0LCA4MSwgCisgICAgMzQsIDUsIDIzNCwgODIsIDM0LCA1LCAyMzQsIDc5LCAzNCwgNSwgMjM0LCA3NywgMzQsIDUsIDE3OCwgMzQsIDUsIDIyMSwgCisgICAgNDEsIDM0LCA1LCAyMjEsIDIxMSwgMzQsIDUsIDIyMiwgMjMzLCAzNCwgNSwgMjIyLCA2NCwgMzQsIDUsIDIyMiwgNzYsIDM0LCAKKyAgICA1LCAyMjEsIDEzNiwgMzQsIDUsIDIyMCwgMjMxLCAzNCwgNSwgMjA3LCA5NCwgMzQsIDUsIDIwNywgODgsIDM0LCA1LCAyMDcsIAorICAgIDkwLCAzNCwgNSwgMjA3LCA5MywgMzQsIDUsIDIwNywgOTEsIDM0LCA1LCAyMDcsIDkyLCAzNCwgNSwgMjA3LCA4OSwgMzQsIAorICAgIDUsIDIwNywgODcsIDM0LCA1LCAyMTMsIDI1MiwgMzQsIDUsIDIxMiwgMTc1LCAzNCwgNSwgMjEzLCA4OCwgMzQsIDUsIDIxMywgCisgICAgMjQ4LCAzNCwgNSwgMjEzLCAxNjcsIDM0LCA1LCAyMTMsIDE5MCwgMzQsIDUsIDIxMywgMSwgMzQsIDUsIDIxMiwgMTQwLCAKKyAgICAzNCwgNSwgMjEyLCA2NCwgMzQsIDUsIDIwOCwgMjQsIDM0LCA1LCAyMDksIDE4MiwgMzQsIDUsIDIxMiwgNjEsIDM0LCA1LCAKKyAgICAyMTEsIDE5MCwgMzQsIDUsIDIxMSwgMjAyLCAzNCwgNSwgMjA5LCAyOSwgMzQsIDUsIDIwNywgMTg2LCAzNCwgNSwgMjEwLCAKKyAgICAxMTQsIDM0LCA1LCAyMDksIDIyMCwgMzQsIDUsIDIxMCwgMzMsIDM0LCA1LCAyMTAsIDEwOSwgMzQsIDUsIDIxMCwgNjMsIAorICAgIDM0LCA1LCAyMTAsIDY1LCAzNCwgNSwgMjEwLCA4LCAzNCwgNSwgMjA5LCAyMDAsIDM0LCA1LCAyMTQsIDE1OSwgMzQsIDUsIAorICAgIDIxNCwgOTcsIDM0LCA1LCAyMTQsIDEyMSwgMzQsIDUsIDIxNCwgMTU4LCAzNCwgNSwgMjE0LCAxMzgsIDM0LCA1LCAyMTQsIAorICAgIDEzOSwgMzQsIDUsIDIxNCwgMTA5LCAzNCwgNSwgMjE0LCAxMDgsIDM0LCA1LCAyMTQsIDUxLCAzNCwgNSwgMjE0LCA0NywgCisgICAgMzQsIDUsIDIxNCwgNTAsIDM0LCA1LCAyMTQsIDQ4LCAzNCwgNSwgMjE0LCA0OSwgMzQsIDUsIDIxNCwgMTM1LCAzNCwgNSwgCisgICAgMjE0LCAxMjcsIDM0LCA1LCAyMTQsIDEzMCwgMzQsIDUsIDIxNCwgMTM0LCAzNCwgNSwgMjE0LCAxMzEsIDM0LCA1LCAyMTQsIAorICAgIDEzMiwgMzQsIDUsIDIxNCwgMTI5LCAzNCwgNSwgMjE0LCAxMjYsIDM0LCA1LCAyMTQsIDEyMiwgMzQsIDUsIDIxNCwgMTI1LCAKKyAgICAzNCwgNSwgMjE0LCAxMjMsIDM0LCA1LCAyMTQsIDEyNCwgMzQsIDUsIDI0OSwgMTM2LCAzNCwgNSwgMjQ4LCAzNiwgMzQsIDUsIAorICAgIDI0OCwgMTg4LCAzNCwgNSwgMjQ5LCAxMzQsIDM0LCA1LCAyNDgsIDI1MiwgMzQsIDUsIDI0OSwgOCwgMzQsIDUsIDI0OCwgCisgICAgMTI0LCAzNCwgNSwgMjQ3LCAyNDAsIDM0LCA1LCAyMDMsIDkwLCAzNCwgNSwgMjAxLCAxNjYsIDM0LCA1LCAyMDIsIDIzNCwgCisgICAgMzQsIDUsIDIwMywgODksIDM0LCA1LCAyMDMsIDU0LCAzNCwgNSwgMjAzLCA1OSwgMzQsIDUsIDIwMiwgMTkzLCAzNCwgNSwgCisgICAgMjAxLCAxNTcsIDM0LCA1LCAyMDcsIDM2LCAzNCwgNSwgMjA0LCAyMTUsIDM0LCA1LCAyMDYsIDE1LCAzNCwgNSwgMjA3LCAKKyAgICAzMiwgMzQsIDUsIDIwNiwgMTkwLCAzNCwgNSwgMjA2LCAyMDEsIDM0LCA1LCAxMzgsIDM0LCA1LCAyMDQsIDE3MCwgMzQsIDUsIAorICAgIDI0NywgMTkwLCAzNCwgNSwgMjQyLCAyMTQsIDM0LCA1LCAyNDYsIDE3MywgMzQsIDUsIDI0NywgMTg5LCAzNCwgNSwgMjQ3LCAKKyAgICA2OCwgMzQsIDUsIDI0NywgNzYsIDM0LCA1LCAyNDYsIDkxLCAzNCwgNSwgMjQyLCAxNzYsIDM0LCA1LCAyMDAsIDE4MSwgMzQsIAorICAgIDUsIDIwMCwgMTUxLCAzNCwgNSwgMjAwLCAxNjksIDM0LCA1LCAyMDAsIDE4MCwgMzQsIDUsIDIwMCwgMTc0LCAzNCwgNSwgCisgICAgMjAwLCAxNzUsIDM0LCA1LCAyMDAsIDE1OSwgMzQsIDUsIDIwMCwgMTU4LCAzNCwgNSwgMjAwLCAxNDUsIDM0LCA1LCAyMDAsIAorICAgIDE0MSwgMzQsIDUsIDIwMCwgMTQ0LCAzNCwgNSwgMjAwLCAxNDIsIDM0LCA1LCAyMDAsIDE0MywgMzQsIDUsIDE4OCwgMzQsIAorICAgIDUsIDIxOCwgMTMzLCAzNCwgNSwgMjE5LCAxNTAsIDM0LCA1LCAyMjAsIDE1NywgMzQsIDUsIDIyMCwgMjksIDM0LCA1LCAKKyAgICAyMjAsIDM0LCAzNCwgNSwgMjE4LCAyNDEsIDM0LCA1LCAyMTgsIDY5LCAzNCwgNSwgMjE4LCA2MCwgMzQsIDUsIDIxOCwgMTksIAorICAgIDM0LCA1LCAyMTgsIDQxLCAzNCwgNSwgMjE4LCA1OSwgMzQsIDUsIDIxOCwgNDksIDM0LCA1LCAyMTgsIDUwLCAzNCwgNSwgCisgICAgMjE4LCAyNiwgMzQsIDUsIDIxOCwgOSwgMzQsIDUsIDIzNSwgMTIzLCA2MiwgMzQsIDUsIDIzNSwgMTIzLCA2NiwgMzQsIDUsIAorICAgIDIzNSwgMTIzLCA3MCwgMzQsIDUsIDIzNSwgMTIzLCAyNTIsIDEzOCwgMzQsIDUsIDIzNSwgMTIzLCAyMzgsIDI1NSwgMzQsIAorICAgIDUsIDIzNSwgMTIzLCA3MiwgMzQsIDUsIDIzNSwgMTIzLCA3NCwgMzQsIDUsIDIzNSwgMTIzLCAyMDEsIDExNCwgMzQsIDUsIAorICAgIDE2MSwgMzQsIDUsIDIyNiwgMTUsIDM0LCA1LCAyMjYsIDE2MywgMzQsIDUsIDIyNywgMTA1LCAzNCwgNSwgMjI3LCA1LCAzNCwgCisgICAgNSwgMjI3LCA4LCAzNCwgNSwgMjI2LCA4OCwgMzQsIDUsIDIyNiwgODcsIDM0LCA1LCAyMjUsIDIyOSwgMzQsIDUsIDIyNSwgCisgICAgMjIyLCAzNCwgNSwgMjI1LCAyMjgsIDM0LCA1LCAyMjUsIDIyMywgMzQsIDUsIDIyNSwgMjI0LCAzNCwgNSwgMjI1LCAyMTUsIAorICAgIDM0LCA1LCAyMjUsIDIwOSwgMzQsIDUsIDIyNSwgMjExLCAzNCwgNSwgMjI1LCAyMTQsIDM0LCA1LCAyMjUsIDIxMiwgMzQsIAorICAgIDUsIDIyNSwgMjEzLCAzNCwgNSwgMjI1LCAyMTAsIDM0LCA1LCAyMjUsIDIwOCwgMzQsIDUsIDIyNSwgMjA0LCAzNCwgNSwgCisgICAgMjI1LCAyMDcsIDM0LCA1LCAyMjUsIDIwNSwgMzQsIDUsIDIyNSwgMjA2LCAzNCwgNSwgMjAxLCAxMTQsIDM0LCA1LCAyMDAsIAorICAgIDIxNiwgMzQsIDUsIDIwMSwgMzEsIDM0LCA1LCAyMDEsIDExMywgMzQsIDUsIDIwMSwgNTcsIDM0LCA1LCAyMDEsIDY0LCAzNCwgCisgICAgNSwgMjAxLCAwLCAzNCwgNSwgMjAwLCAyNTUsIDM0LCA1LCAyMTUsIDIzNiwgNjIsIDM0LCA1LCAyMTUsIDIzNiwgNjYsIDM0LCAKKyAgICA1LCAyMTUsIDIzNiwgNzAsIDM0LCA1LCAyMTUsIDIzNiwgMjUyLCAxMzgsIDM0LCA1LCAyMTUsIDIzNiwgMjM4LCAyNTUsIAorICAgIDM0LCA1LCAyMTUsIDIzNiwgNzIsIDM0LCA1LCAyMTUsIDIzNiwgNzQsIDM0LCA1LCAxOTksIDExNCwgMzQsIDUsIDE5OSwgMywgCisgICAgMzQsIDUsIDE5OSwgMzYsIDM0LCA1LCAxOTksIDExMiwgMzQsIDUsIDE5OSwgODcsIDM0LCA1LCAxOTksIDg5LCAzNCwgNSwgCisgICAgMTk5LCAxNCwgMzQsIDUsIDE5OCwgMjQ2LCAzNCwgNSwgMTk5LCA3NywgMzQsIDUsIDE5OSwgNTQsIDM0LCA1LCAxOTksIDYzLCAKKyAgICAzNCwgNSwgMTk5LCA3NiwgMzQsIDUsIDE5OSwgNjcsIDM0LCA1LCAxOTksIDY4LCAzNCwgNSwgMTk5LCA2MCwgMzQsIDUsIAorICAgIDE5OSwgNDUsIDM0LCA1LCAxODMsIDM0LCA1LCAxOTksIDIxMSwgMzQsIDUsIDIwMCwgOSwgMzQsIDUsIDIwMCwgMTA5LCAzNCwgCisgICAgNSwgMjAwLCA0OCwgMzQsIDUsIDIwMCwgNTEsIDM0LCA1LCAxOTksIDI0NSwgMzQsIDUsIDE5OSwgMjM2LCAzNCwgNSwgMjQyLCAKKyAgICA1OCwgMzQsIDUsIDIzOSwgMTM3LCAzNCwgNSwgMjQxLCA3NiwgMzQsIDUsIDI0MiwgNTcsIDM0LCA1LCAyNDEsIDE2MSwgMzQsIAorICAgIDUsIDI0MSwgMTc1LCAzNCwgNSwgMjQwLCAyMTEsIDM0LCA1LCAyMzksIDEwNCwgMzQsIDUsIDI0MSwgMjIwLCAzNCwgNSwgCisgICAgMjQxLCAxODUsIDM0LCA1LCAyNDEsIDE5NywgMzQsIDUsIDI0MSwgMjE5LCAzNCwgNSwgMjQxLCAyMDcsIDM0LCA1LCAyNDEsIAorICAgIDIwOCwgMzQsIDUsIDI0MSwgMTkwLCAzNCwgNSwgMjQxLCAxNzYsIDM0LCA1LCAyMjcsIDI0OCwgMzQsIDUsIDIyNywgMTQ3LCAKKyAgICAzNCwgNSwgMjI3LCAyMDcsIDM0LCA1LCAyMjcsIDI0NywgMzQsIDUsIDIyNywgMjI1LCAzNCwgNSwgMjI3LCAyMjcsIDM0LCAKKyAgICA1LCAyMjcsIDE2NiwgMzQsIDUsIDIyNywgMTI2LCAzNCwgNSwgMjM2LCA4OSwgMzQsIDUsIDIzNSwgNTAsIDM0LCA1LCAyMzUsIAorICAgIDE2MSwgMzQsIDUsIDIzNiwgODYsIDM0LCA1LCAyMzYsIDcsIDM0LCA1LCAyMzYsIDE1LCAzNCwgNSwgMjM1LCAxMTYsIDM0LCAKKyAgICA1LCAyMzUsIDExNSwgMzQsIDUsIDIzNSwgMTAsIDM0LCA1LCAyMzUsIDYsIDM0LCA1LCAyMzUsIDksIDM0LCA1LCAyMzUsIDcsIAorICAgIDM0LCA1LCAyMzUsIDgsIDM0LCA1LCAyMzUsIDIzNSwgMzQsIDUsIDIzNSwgMjE1LCAzNCwgNSwgMjM1LCAyMjUsIDM0LCA1LCAKKyAgICAyMzUsIDIzNCwgMzQsIDUsIDIzNSwgMjI5LCAzNCwgNSwgMjM1LCAyMzAsIDM0LCA1LCAyMzUsIDIxOSwgMzQsIDUsIDIzNSwgCisgICAgMjA0LCAzNCwgNSwgMjA2LCAxMjIsIDM0LCA1LCAyMDYsIDM1LCAzNCwgNSwgMjA2LCA4NCwgMzQsIDUsIDIwNiwgMTIxLCAKKyAgICAzNCwgNSwgMjA2LCAxMDQsIDM0LCA1LCAyMDYsIDEwNiwgMzQsIDUsIDIwNiwgNjEsIDM0LCA1LCAyMDYsIDI2LCAzNCwgNSwgCisgICAgMjQ3LCAzNywgMzQsIDUsIDI0NiwgMTkyLCAzNCwgNSwgMjQ2LCAyMzYsIDM0LCA1LCAyNDcsIDM2LCAzNCwgNSwgMjQ3LCA0LCAKKyAgICAzNCwgNSwgMjQ3LCA4LCAzNCwgNSwgMjQ2LCAyMTAsIDM0LCA1LCAyNDYsIDE4MSwgMzQsIDUsIDIxNSwgMjQ1LCAzNCwgNSwgCisgICAgMjE1LCAyMTAsIDM0LCA1LCAyMTUsIDIyOSwgMzQsIDUsIDIxNSwgMjQ0LCAzNCwgNSwgMjE1LCAyMzEsIDM0LCA1LCAyMTUsIAorICAgIDIzMiwgMzQsIDUsIDIxNSwgMjE3LCAzNCwgNSwgMjE1LCAyMDYsIDM0LCA1LCAyMDUsIDMyLCAzNCwgNSwgMjA1LCA1LCAzNCwgCisgICAgNSwgMjA1LCAxMSwgMzQsIDUsIDIwNSwgMzEsIDM0LCA1LCAyMDUsIDI1LCAzNCwgNSwgMjA1LCAyNiwgMzQsIDUsIDIwNSwgCisgICAgOSwgMzQsIDUsIDIwNSwgMywgMzQsIDUsIDIwNCwgMTEzLCAzNCwgNSwgMjA0LCAxMDUsIDM0LCA1LCAyMDQsIDEwOSwgMzQsIAorICAgIDUsIDIwNCwgMTEyLCAzNCwgNSwgMjA0LCAxMTAsIDM0LCA1LCAyMDQsIDExMSwgMzQsIDUsIDIwNCwgMTA3LCAzNCwgNSwgCisgICAgMjA0LCAxMDYsIDM0LCA1LCAyMzcsIDE5NSwgMzQsIDUsIDIzNiwgMTg5LCAzNCwgNSwgMjM3LCAxMTIsIDM0LCA1LCAyMzcsIAorICAgIDE5NCwgMzQsIDUsIDIzNywgMTQwLCAzNCwgNSwgMjM3LCAxNDcsIDM0LCA1LCAyMzcsIDEzLCAzNCwgNSwgMjM2LCAxNjcsIAorICAgIDM0LCA1LCAxNzIsIDM0LCA1LCAyMTQsIDIyNCwgMzQsIDUsIDIxNSwgMjA0LCAzNCwgNSwgMjE2LCAyMTAsIDM0LCA1LCAKKyAgICAyMTYsIDYxLCAzNCwgNSwgMjE2LCA3MywgMzQsIDUsIDIxNSwgMTA2LCAzNCwgNSwgMjE0LCAxODUsIDM0LCA1LCAyMTIsIAorICAgIDEzMCwgMzQsIDUsIDIyMCwgMjIwLCAzNCwgNSwgMjM2LCAxNjEsIDM0LCAzOCwgMjM2LCAzLCAyNiwgMjIsIDIyNSwgMiwgCisgICAgODEsIDM0LCAzOCwgMjIsIDIyNSwgMiwgODEsIDM0LCAzOCwgMjM2LCAzLCA4MSwgMzQsIDIxMSwgMTkzLCA4MSwgMzQsIAorICAgIDIwMCwgMjM3LCAzNCwgMjM2LCAxODMsIDIwOCwgNzYsIDM0LCAyNDYsIDcwLCAzNCwgMjEwLCAxNjcsIDM0LCAyNDYsIDc5LCAKKyAgICAzNCwgMjE1LCAyNSwgMjQ2LCA3OSwgMzQsIDIxNCwgNzksIDgxLCAzNCwgMjE2LCAxMjgsIDIxMCwgMTU0LCAzNCwgMTcsIAorICAgIDEwMiwgMzQsIDE3LCAxMDUsIDM0LCAxNywgMTQ3LCAzNCwgMTcsIDE0OSwgMzQsIDE3LCAxNjQsIDM0LCAxNywgMTg3LCAzNCwgCisgICAgMTcsIDIxMCwgMTM1LCAzNCwgMTcsIDE5MiwgMzQsIDE3LCAyMTksIDExMywgMzQsIDQxLCAyMDYsIDE2NiwgMzQsIDQxLCAKKyAgICAyMDQsIDE1OSwgMzQsIDQxLCAyMDYsIDY3LCAzNCwgNDEsIDIzNiwgMjM1LCAzNCwgNDEsIDIzNywgMTA0LCAzNCwgNDEsIAorICAgIDIwOSwgOTIsIDM0LCA0MSwgMjEwLCAxMjksIDM0LCA0MSwgMjM4LCAyMjIsIDM0LCA0MSwgMjE5LCAxMDgsIDM0LCA0MSwgCisgICAgMjMzLCA4MiwgMzQsIDQxLCAyMDYsIDE2NywgMjA2LCA1MCwgMzQsIDUsIDIxMSwgMTk4LCAyMjAsIDIzMSwgMzQsIDUsIAorICAgIDIyMCwgMjI3LCAzNCwgNSwgMjIwLCAyMjgsIDM0LCA1LCAyMjAsIDIyOSwgMzQsIDUsIDIxMSwgMTk4LCAyNDcsIDI0MCwgCisgICAgMzQsIDUsIDI0NywgMjM3LCAzNCwgNSwgMjQ3LCAyMzgsIDM0LCA1LCAyNDcsIDIzOSwgMzQsIDUsIDIxMSwgMTk4LCAyMzYsIAorICAgIDE2NywgMzQsIDUsIDIzNiwgMTYzLCAzNCwgNSwgMjM2LCAxNjQsIDM0LCA1LCAyMzYsIDE2NSwgMzQsIDUsIDIxMSwgMTk4LCAKKyAgICAyMTQsIDE4NSwgMzQsIDUsIDIxNCwgMTgxLCAzNCwgNSwgMjE0LCAxODIsIDM0LCA1LCAyMTQsIDE4MywgMzQsIDIwNSwgCisgICAgMTc1LCAxMzQsIDE5OSwgMjQ4LCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQxLCAxMjEsIDM0LCAyMDUsIDE3NSwgMTM0LCAyMTMsIAorICAgIDMyLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjA5LCAyNTAsIDIxMywgMzIsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDEsIDUwLCAzNCwgCisgICAgMjA1LCAxNzUsIDEzNCwgMjI2LCAyNDIsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDYsIDIxOCwgMzQsIDIwNSwgMTc1LCAxMzQsIAorICAgIDIzNCwgNzEsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDEsIDEyMCwgMzQsIDIwNSwgMTc1LCAxMzQsIDIyNSwgMjQzLCA5MSwgMSwgCisgICAgNjIsIDkxLCAxLCA3MiwgOTEsIDEsIDcwLCA5MSwgMSwgNzQsIDkxLCAxLCA2NiwgOTEsIDEsIDIwMywgMTY4LCA5MSwgMSwgCisgICAgMjM2LCA4OSwgOTEsIDEsIDE2MSwgOTEsIDEsIDIzNiwgMTUsIDkxLCAxLCAyMzUsIDE2MSwgOTEsIDEsIDIzNSwgMTE2LCAKKyAgICA5MSwgMSwgMjM1LCA1MCwgOTEsIDEsIDIzNSwgMTIsIDkxLCAxLCAxNDQsIDkxLCAxLCAyMzQsIDEzOSwgOTEsIDEsIDIzNCwgCisgICAgNzUsIDkxLCAxLCAyMzMsIDIwNywgOTEsIDEsIDIzMywgOTcsIDkxLCAxLCAyMzMsIDY5LCA5MSwgMSwgMTk0LCA5MSwgMSwgCisgICAgMjI1LCA0MCwgOTEsIDEsIDIyNCwgMjEwLCA5MSwgMSwgMjI0LCAxMTAsIDkxLCAxLCAyMjQsIDQyLCA5MSwgMSwgMjI0LCAKKyAgICAxMSwgOTEsIDEsIDE3OCwgOTEsIDEsIDIyMiwgNzYsIDkxLCAxLCAyMjEsIDIxMSwgOTEsIDEsIDIyMSwgMTM2LCA5MSwgMSwgCisgICAgMjIxLCA0MSwgOTEsIDEsIDE4OCwgOTEsIDEsIDIzMywgMjMxLCA5MSwgMSwgMjIwLCAxNDQsIDkxLCAxLCAyMjAsIDM0LCAKKyAgICA5MSwgMSwgMjE5LCAxNTAsIDkxLCAxLCAyMTgsIDI0MSwgOTEsIDEsIDIxOCwgMTMzLCA5MSwgMSwgMjE4LCA3MSwgOTEsIDEsIAorICAgIDIxNCwgOTYsIDkxLCAxLCAyMTQsIDgyLCA5MSwgMSwgMjE0LCA3NSwgOTEsIDEsIDIxNCwgNjYsIDkxLCAxLCAyMTQsIDU1LCAKKyAgICA5MSwgMSwgMjE0LCA1MywgOTEsIDEsIDIxMiwgNjQsIDkxLCAxLCAyMTIsIDEyMiwgOTEsIDEsIDIxMSwgMjAyLCA5MSwgMSwgCisgICAgMjA5LCAxODIsIDkxLCAxLCAyMDksIDI5LCA5MSwgMSwgMjA4LCAyNCwgOTEsIDEsIDIwNywgMTkxLCA5MSwgMSwgMjQyLCAKKyAgICA1OCwgOTEsIDEsIDIwNywgMzYsIDkxLCAxLCAyNDEsIDE3NSwgOTEsIDEsIDIwNiwgMjAxLCA5MSwgMSwgMjQxLCA3NiwgOTEsIAorICAgIDEsIDIwNiwgMTUsIDkxLCAxLCAyNDAsIDIxMSwgOTEsIDEsIDIzOSwgMTM3LCA5MSwgMSwgMjM5LCAxMDcsIDkxLCAxLCAKKyAgICAyNDAsIDIyMiwgOTEsIDEsIDIwNSwgMjAzLCA5MSwgMSwgMjA1LCAyMDIsIDkxLCAxLCAyMDUsIDE5MSwgOTEsIDEsIDIwNSwgCisgICAgMTkwLCA5MSwgMSwgMjA1LCAxODksIDkxLCAxLCAyMDUsIDE4OCwgOTEsIDEsIDIwNSwgMzIsIDkxLCAxLCAyMDUsIDI2LCAKKyAgICA5MSwgMSwgMjA1LCAxMSwgOTEsIDEsIDIwNSwgOSwgOTEsIDEsIDIwNSwgNSwgOTEsIDEsIDIwNSwgNCwgOTEsIDEsIDIwMSwgCisgICAgMTE0LCA5MSwgMSwgMjAxLCA2NCwgOTEsIDEsIDIwMSwgMzEsIDkxLCAxLCAyMDEsIDAsIDkxLCAxLCAyMDAsIDIxNiwgOTEsIAorICAgIDEsIDIwMCwgMjAzLCA5MSwgMSwgMTgzLCA5MSwgMSwgMjAwLCA1MSwgOTEsIDEsIDIwMCwgOSwgOTEsIDEsIDE5OSwgMjQ1LCAKKyAgICA5MSwgMSwgMTk5LCAyMTEsIDkxLCAxLCAxOTksIDE3NSwgOTEsIDEsIDIyMCwgMjM4LCA5MSwgNCwgMSwgMjAwLCA1MSwgOTEsIAorICAgIDQsIDEsIDIwMCwgOSwgOTEsIDQsIDEsIDE5OSwgMjQ1LCA5MSwgNCwgMSwgMTk5LCAyMTEsIDkxLCA0LCAxLCAxOTksIDE3NSwgCisgICAgOTEsIDQsIDEsIDIyMCwgMjM4LCAyMCwgMjEsIDIzMywgMzMsIDIwLCAyMSwgNzIsIDIwLCAyMSwgMjUyLCAxMDIsIDIwLCAKKyAgICAyMSwgNzAsIDIwLCAyMSwgMjI4LCAxNTEsIDIwLCAyMSwgNzQsIDIwLCAyMSwgMjE3LCA2MywgMjAsIDIxLCAyMDAsIDEyMiwgCisgICAgMjE3LCA2MywgMjAsIDIxLCA4OSwgMjM4LCAyNTUsIDIwLCAyMSwgODksIDcwLCAyMCwgMjEsIDYyLCAyMCwgMjEsIDI1MiwgCisgICAgMTM4LCAyMCwgMjEsIDIwMSwgNjQsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCA2NCwgMjAsIDIxLCAyMDEsIDMxLCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDIwMSwgMzEsIDIwLCAyMSwgMjAxLCAyMCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDIwLCAyMCwgMjEsIDIwMSwgCisgICAgMCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDAsIDIwLCAyMSwgMjAwLCAyNDQsIDIwLCAyMSwgMjAxLCA0NiwgMjAwLCAyNDQsIAorICAgIDIwLCAyMSwgMjIwLCAxMTksIDIwMCwgMjQ0LCAyMCwgMjEsIDIwMSwgMTE0LCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMTE0LCAKKyAgICAyMCwgMjEsIDIwMSwgMTEzLCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMTEzLCAyMCwgMjEsIDIyMCwgMTE5LCAyMDEsIDExMywgCisgICAgMjAsIDIxLCAyNTEsIDE3NiwgMjAsIDIxLCAyMDAsIDEyMiwgMjAxLCAxNDcsIDIwLCAyMSwgMjM1LCAxMjMsIDIwOCwgNzYsIAorICAgIDIwLCAyMSwgNDcsIDE2OSwgMjAsIDIxLCA0NywgMjM1LCA3MywgMjAsIDIxLCA0NywgMjQ4LCA5MywgMTY3LCAyMTMsIDI2LCAKKyAgICAyMCwgMjEsIDQ3LCAyMDUsIDE1OCwgMTY3LCAyMTMsIDI2LCAyMCwgMjEsIDQ3LCA1MSwgMTY3LCAyMTMsIDI2LCAyMCwgMjEsIAorICAgIDQ3LCAyMTMsIDI2LCAyMCwgMjEsIDQ3LCA1MywgMTY5LCAyMCwgMjEsIDQ3LCA1MywgMjA5LCAyNTAsIDgzLCAyMDgsIDM0LCAKKyAgICAyMCwgMjEsIDQ3LCAxMDEsIDI0MCwgMTgyLCAyMCwgMjEsIDQ3LCAyMDksIDI1MCwgMjMzLCAxNzcsIDk3LCAyMCwgMjEsIAorICAgIDQ3LCAyMTUsIDExMywgMjAsIDIxLCA0NywgMTI3LCAyMDcsIDE3LCAyMCwgMjEsIDIzOCwgMTc5LCAyMCwgMjEsIDIyOCwgCisgICAgMTE3LCAyMCwgMjEsIDIxNywgNzgsIDIwLCAyMSwgMjUxLCA4NSwgMjAsIDIxLCAyMTYsIDczLCAyMCwgMjEsIDIxNiwgMjA4LCAKKyAgICAyMCwgMjEsIDIxNSwgMjA0LCAyMCwgMjEsIDIxNSwgMTY2LCAyMCwgMjEsIDIxNSwgMTA2LCAyMCwgMjEsIDIxNSwgODEsIAorICAgIDIwLCAyMSwgMjAwLCAxMjIsIDIxNSwgODEsIDIwLCAyMSwgODksIDIzNCwgMTIwLCAyMCwgMjEsIDg5LCAyMzQsIDc1LCAyMCwgCisgICAgMjEsIDE3MiwgMjAsIDIxLCAyMTYsIDIxMCwgMjAsIDIxLCAyMTQsIDE4MywgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE4MywgCisgICAgMjAsIDIxLCAyMTQsIDE4MSwgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE4MSwgMjAsIDIxLCAyMTQsIDE4MCwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyMTQsIDE4MCwgMjAsIDIxLCAyMTQsIDE3OCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE3OCwgMjAsIDIxLCAKKyAgICAyMTQsIDE3NywgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE3NywgMjAsIDIxLCAyMTQsIDE4NSwgMjAsIDIxLCAyMDEsIDQ2LCAKKyAgICAyMTQsIDE4NSwgMjAsIDIxLCAyMTQsIDE4NCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE4NCwgMjAsIDIxLCAyMDAsIDEyMiwgCisgICAgMjE0LCAxODQsIDIwLCAyMSwgMjE2LCAyMjYsIDIwLCAyMSwgMjAxLCA0NiwgMjE2LCAyMjYsIDIwLCAyMSwgODksIDIzNCwgCisgICAgMjQ3LCAyMCwgMjEsIDIwNiwgMjAxLCAyMCwgMjEsIDIwNywgMzAsIDIwLCAyMSwgMjA2LCAxNSwgMjAsIDIxLCAyMDUsIAorICAgIDI1NSwgMjAsIDIxLCAxMzgsIDIwLCAyMSwgMjA1LCAxNjEsIDIwLCAyMSwgMjAwLCAxMjIsIDIwNSwgMTYxLCAyMCwgMjEsIAorICAgIDg5LCAyNDEsIDE2MSwgMjAsIDIxLCA4OSwgMjQxLCA3NiwgMjAsIDIxLCAyMDcsIDM2LCAyMCwgMjEsIDIwNywgMzIsIDIwLCAKKyAgICAyMSwgMjA0LCAxNjgsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxNjgsIDIwLCAyMSwgMjA0LCAxNDcsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA0LCAxNDcsIDIwLCAyMSwgMjA0LCAxNDYsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxNDYsIDIwLCAyMSwgMTA1LCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDEwNSwgMjAsIDIxLCAyMDQsIDEzNywgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDEzNywgMjAsIAorICAgIDIxLCAyMDQsIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDE3MCwgMjAsIDIxLCAyMDQsIDE2OSwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDQsIDE2OSwgMjAsIDIxLCAyMjAsIDExOSwgMjA0LCAxNjksIDIwLCAyMSwgMjA3LCA4MywgMjAsIDIxLCAyMDQsIAorICAgIDI0OCwgMjAsIDIxLCAyMDQsIDIzMiwgMjAsIDIxLCAyMDQsIDIzMCwgMjAsIDIxLCAyMDQsIDI1MywgMjAsIDIxLCAyMjcsIAorICAgIDgsIDIwLCAyMSwgMjI3LCAxMDAsIDIwLCAyMSwgMjI2LCAxNjMsIDIwLCAyMSwgMjI2LCAxNTAsIDIwLCAyMSwgMjI2LCA4OCwgCisgICAgMjAsIDIxLCAyMjYsIDY4LCAyMCwgMjEsIDIwMCwgMTIyLCAyMjYsIDY4LCAyMCwgMjEsIDE2MSwgMjAsIDIxLCAyMjcsIAorICAgIDEwNSwgMjAsIDIxLCAyMjUsIDIyNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyNCwgMjAsIDIxLCAyMjUsIDIyMiwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMjUsIDIyMiwgMjAsIDIxLCAyMjUsIDIyMSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyMSwgMjAsIAorICAgIDIxLCAyMjUsIDIxOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIxOSwgMjAsIDIxLCAyMjUsIDIxOCwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjUsIDIxOCwgMjAsIDIxLCAyMjUsIDIyOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyOSwgMjAsIDIxLCAyMjUsIAorICAgIDIyOCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyOCwgMjAsIDIxLCAyMjAsIDExOSwgMjI1LCAyMjgsIDIwLCAyMSwgMjI3LCAKKyAgICAxMTgsIDIwLCAyMSwgMjI1LCAyMzAsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNiwgMjU0LCAyMCwgMjEsIDIwOCwgMjUzLCAyMjYsIAorICAgIDE1MSwgMjAsIDIxLCAyMDgsIDI1MywgMjI2LCA4MiwgMjAsIDIxLCAyMDgsIDI1MywgMjI3LCA4NCwgMjAsIDIxLCAyNDcsIAorICAgIDc2LCAyMCwgMjEsIDI0NywgMTg4LCAyMCwgMjEsIDI0NiwgMTczLCAyMCwgMjEsIDI0NiwgMTYzLCAyMCwgMjEsIDI0NiwgCisgICAgOTEsIDIwLCAyMSwgMjQzLCAzMCwgMjAsIDIxLCAyMDAsIDEyMiwgMjQzLCAzMCwgMjAsIDIxLCAyNDcsIDE5MCwgMjAsIDIxLCAKKyAgICAyNDcsIDE4OSwgMjAsIDIxLCAyNDIsIDE3NCwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3NCwgMjAsIDIxLCAyNDIsIDE3MiwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3MiwgMjAsIDIxLCAyNDIsIDE3MSwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3MSwgCisgICAgMjAsIDIxLCAyNDIsIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3MCwgMjAsIDIxLCAyNDIsIDE2OSwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyNDIsIDE2OSwgMjAsIDIxLCAyNDIsIDE3NiwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3NiwgMjAsIDIxLCAKKyAgICAyNDIsIDE3NSwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3NSwgMjAsIDIxLCAyMjAsIDExOSwgMjQyLCAxNzUsIDIwLCAyMSwgCisgICAgMjQ3LCAyMjMsIDIwLCAyMSwgMjExLCAyMzIsIDIwNiwgMTI0LCAyMCwgMjEsIDIyMiwgNzYsIDIwLCAyMSwgMjIyLCAyMzIsIAorICAgIDIwLCAyMSwgMjIxLCAyMTEsIDIwLCAyMSwgMjIxLCAxODEsIDIwLCAyMSwgMjIxLCAxMzYsIDIwLCAyMSwgMjIxLCA4NywgCisgICAgMjAsIDIxLCAyMDAsIDEyMiwgMjIxLCA4NywgMjAsIDIxLCAxNzgsIDIwLCAyMSwgMjIyLCAyMzMsIDIwLCAyMSwgMjIwLCAKKyAgICAyMjksIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMjksIDIwLCAyMSwgMjIwLCAyMjcsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAKKyAgICAyMjcsIDIwLCAyMSwgMjIwLCAyMjYsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMjYsIDIwLCAyMSwgMjIwLCAyMjUsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjIwLCAyMjUsIDIwLCAyMSwgMjIwLCAyMjQsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMjQsIDIwLCAKKyAgICAyMSwgMjIwLCAyMzEsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMzEsIDIwLCAyMSwgMjIwLCAyMzAsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjIwLCAyMzAsIDIwLCAyMSwgMjIwLCAxMTksIDIyMCwgMjMwLCAyMCwgMjEsIDIyMywgMjQzLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyMywgMjQzLCAyMCwgMjEsIDIyMSwgMjE1LCAyMCwgMjEsIDI1MCwgMTUzLCAyMjMsIDI0MywgMjAsIDIxLCAyMTEsIAorICAgIDIzMiwgMjIzLCAyNDMsIDIwLCAyMSwgMjIwLCAzNCwgMjAsIDIxLCAyMjAsIDE1NiwgMjAsIDIxLCAyMTksIDE1MCwgMjAsIAorICAgIDIxLCAyMTksIDEyNSwgMjAsIDIxLCAyMTgsIDI0MSwgMjAsIDIxLCAyMTgsIDIyOSwgMjAsIDIxLCAyMDAsIDEyMiwgMjE4LCAKKyAgICAyMjksIDIwLCAyMSwgMTg4LCAyMCwgMjEsIDIyMCwgMTU3LCAyMCwgMjEsIDIxOCwgNjcsIDIwLCAyMSwgMjAxLCA0NiwgCisgICAgMjE4LCA2NywgMjAsIDIxLCAyMTgsIDY5LCAyMCwgMjEsIDIwMSwgNDYsIDIxOCwgNjksIDIwLCAyMSwgMjE4LCA2OCwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMTgsIDY4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMTgsIDY4LCAyMCwgMjEsIDIyMCwgMjE0LCAyMCwgCisgICAgMjEsIDg5LCAyMTksIDI1NSwgMjAsIDIxLCAyMTksIDE1NSwgMjAsIDIxLCAyMjUsIDQwLCAyMCwgMjEsIDIyNSwgMTc0LCAKKyAgICAyMCwgMjEsIDIyNCwgMjEwLCAyMCwgMjEsIDIyNCwgMTkyLCAyMCwgMjEsIDIyNCwgMTEwLCAyMCwgMjEsIDIyNCwgNzgsIAorICAgIDIwLCAyMSwgMjAwLCAxMjIsIDIyNCwgNzgsIDIwLCAyMSwgMTk0LCAyMCwgMjEsIDIyNSwgMTc1LCAyMCwgMjEsIDIyNCwgOCwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDgsIDIwLCAyMSwgMjI0LCA3LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNywgMjAsIDIxLCAKKyAgICAyMjQsIDYsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA2LCAyMCwgMjEsIDIyNCwgNSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDUsIAorICAgIDIwLCAyMSwgMjI0LCA0LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNCwgMjAsIDIxLCAyMjQsIDEwLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyNCwgMTAsIDIwLCAyMSwgMjI0LCA5LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgOSwgMjAsIDIxLCAxNTYsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMTU2LCAyMCwgMjEsIDE3OSwgMTU2LCAyMCwgMjEsIDIxMSwgMjAyLCAyMCwgMjEsIDIxMiwgNTksIAorICAgIDIwLCAyMSwgMjA5LCAxODIsIDIwLCAyMSwgMjA5LCAxNjEsIDIwLCAyMSwgMjA5LCAyOSwgMjAsIDIxLCAyMDksIDEwLCAyMCwgCisgICAgMjEsIDIwMCwgMTIyLCAyMDksIDEwLCAyMCwgMjEsIDIxMiwgNjQsIDIwLCAyMSwgMjEyLCA2MSwgMjAsIDIxLCAyMDcsIAorICAgIDE4MiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE4MiwgMjAsIDIxLCAyMDcsIDE3NiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIAorICAgIDE3NiwgMjAsIDIxLCAyMDcsIDE3NSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE3NSwgMjAsIDIxLCAyMDcsIDE3MSwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMDcsIDE3MSwgMjAsIDIxLCAyMDcsIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE3MCwgMjAsIAorICAgIDIxLCAyMDcsIDE4NiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE4NiwgMjAsIDIxLCAyMDcsIDE4NSwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDcsIDE4NSwgMjAsIDIxLCAyMjAsIDExOSwgMjA3LCAxODUsIDIwLCAyMSwgMjEyLCAxMjIsIDIwLCAyMSwgMjUwLCAKKyAgICAxNTMsIDIxMiwgMTIyLCAyMCwgMjEsIDIwNywgMTg3LCAyMCwgMjEsIDI0OCwgMTQxLCAyMTIsIDEyMiwgMjAsIDIxLCAyMjEsIAorICAgIDgwLCAyMDksIDg4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDksIDc5LCAyMCwgMjEsIDIyMCwgMTE5LCAyMTIsIDEyMCwgMjAsIAorICAgIDIxLCAyMjAsIDExOSwgMjA4LCAxOTUsIDIwLCAyMSwgMjIwLCAxMTksIDIwOCwgMjcsIDIwLCAyMSwgMjIwLCAxMTksIDIwOSwgCisgICAgNzgsIDIwLCAyMSwgMjIwLCAxMTksIDIxMSwgMjA1LCAyMCwgMjEsIDIxMCwgNjUsIDIwLCAyMSwgMjEwLCAzMywgMjAsIDIxLCAKKyAgICAyMTAsIDI4LCAyMCwgMjEsIDIxMCwgOCwgMjAsIDIxLCAyMTAsIDIsIDIwLCAyMSwgMjEwLCAxMTQsIDIwLCAyMSwgMjEwLCAKKyAgICAxMDksIDIwLCAyMSwgMjA5LCAxOTcsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTcsIDIwLCAyMSwgMjA5LCAxOTYsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjA5LCAxOTYsIDIwLCAyMSwgMjA5LCAxOTUsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTUsIDIwLCAKKyAgICAyMSwgMjA5LCAxOTQsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTQsIDIwLCAyMSwgMjA5LCAxOTMsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA5LCAxOTMsIDIwLCAyMSwgMjA5LCAyMDAsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAyMDAsIDIwLCAyMSwgMjA5LCAKKyAgICAxOTksIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTksIDIwLCAyMSwgMjEwLCAxMTYsIDIwLCAyMSwgMjAwLCA1MSwgMjAsIAorICAgIDIxLCAyMDAsIDEwNywgMjAsIDIxLCAyMDAsIDksIDIwLCAyMSwgMjAwLCAwLCAyMCwgMjEsIDE5OSwgMjQ1LCAyMCwgMjEsIAorICAgIDE5OSwgMjMwLCAyMCwgMjEsIDIwMCwgMTIyLCAxOTksIDIzMCwgMjAsIDIxLCAxODMsIDIwLCAyMSwgMjAwLCAxMDksIDIwLCAKKyAgICAyMSwgMTk5LCAxNzIsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNzIsIDIwLCAyMSwgMTk5LCAxNzEsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMTk5LCAxNzEsIDIwLCAyMSwgMTk5LCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNzAsIDIwLCAyMSwgMTk5LCAKKyAgICAxNjksIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNjksIDIwLCAyMSwgMTk5LCAxNjgsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAKKyAgICAxNjgsIDIwLCAyMSwgMTk5LCAxNzQsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNzQsIDIwLCAyMSwgMTk5LCAxNzMsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMTk5LCAxNzMsIDIwLCAyMSwgMjIwLCAxMTksIDE5OSwgMTczLCAyMCwgMjEsIDIwMCwgMTIzLCAyMCwgCisgICAgMjEsIDI0OCwgMTg2LCAyMDAsIDEyMywgMjAsIDIxLCAyMDEsIDQ2LCAyMDAsIDEyMywgMjAsIDIxLCAyMTEsIDIzMiwgMjAwLCAKKyAgICA5LCAyMCwgMjEsIDIxMywgMTkwLCAyMCwgMjEsIDIxNCwgMzIsIDIxMywgMTkwLCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgNDAsIAorICAgIDIwLCAyMSwgMjEzLCAyNDcsIDIwLCAyMSwgMjEzLCA4OCwgMjAsIDIxLCAyMTMsIDMzLCAyMCwgMjEsIDIxMywgMSwgMjAsIAorICAgIDIxLCAyMTIsIDIzOCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDExMCwgMjAsIDIxLCAyMTMsIDI1MiwgMjAsIDIxLCAyMTMsIAorICAgIDI0OCwgMjAsIDIxLCAyMDEsIDQ2LCAxOTQsIDIwLCAyMSwgMjEyLCAxMzksIDIwLCAyMSwgMjAxLCA0NiwgMjEyLCAxMzksIAorICAgIDIwLCAyMSwgMTQ2LCAyMCwgMjEsIDIwMSwgNDYsIDE0NiwgMjAsIDIxLCAxNzksIDE0NiwgMjAsIDIxLCAyMzcsIDE0NywgCisgICAgMjAsIDIxLCAyMzcsIDE5MiwgMjAsIDIxLCAyMzcsIDExMiwgMjAsIDIxLCAyMzcsIDk4LCAyMCwgMjEsIDIzNywgMTMsIDIwLCAKKyAgICAyMSwgMjM3LCAyLCAyMCwgMjEsIDIzNywgMTk1LCAyMCwgMjEsIDIzNywgMTk0LCAyMCwgMjEsIDIzNiwgMTY2LCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDIzNiwgMTY2LCAyMCwgMjEsIDIzOCwgNSwgMjAsIDIxLCAyMDYsIDEwNiwgMjAsIDIxLCAyMjAsIDIxMiwgCisgICAgMjA2LCAxMDYsIDIwLCAyMSwgMjA2LCA4NCwgMjAsIDIxLCAyMjAsIDIxMiwgMjA2LCA4NCwgMjAsIDIxLCAyMDYsIDc4LCAKKyAgICAyMCwgMjEsIDIyMCwgMjEyLCAyMDYsIDc4LCAyMCwgMjEsIDIwNiwgNjEsIDIwLCAyMSwgMjA2LCA1NiwgMjAsIDIxLCAyMDYsIAorICAgIDEyMiwgMjAsIDIxLCAyMDYsIDEyMSwgMjAsIDIxLCAyMDYsIDI1LCAyMCwgMjEsIDIwMSwgNDYsIDIwNiwgMjUsIDIwLCAyMSwgCisgICAgMjA2LCAxMjQsIDIwLCAyMSwgMjA0LCAyMzksIDIwLCAyMSwgMjA0LCAyMzcsIDIwLCAyMSwgMjA0LCAyMzYsIDIwLCAyMSwgCisgICAgMjA0LCAyNDEsIDIwLCAyMSwgMjA0LCAyNDIsIDIwLCAyMSwgMjA0LCAxMzEsIDIwLCAyMSwgMjA0LCAxMzAsIDIwLCAyMSwgCisgICAgMjA0LCAxMjksIDIwLCAyMSwgMjA0LCAxMzMsIDIwLCAyMSwgMjE4LCA4OCwgMjM0LCAxMzksIDIwLCAyMSwgMjE4LCA4OCwgCisgICAgMjM0LCA3NSwgMjAsIDIxLCAyMTgsIDg4LCAyMzQsIDU0LCAyMCwgMjEsIDIxOCwgODgsIDIzMywgMjA3LCAyMCwgMjEsIAorICAgIDIxOCwgODgsIDIzMywgMTg4LCAyMCwgMjEsIDIxOCwgODgsIDE0NCwgMjAsIDIxLCAyMTgsIDg4LCAyMzQsIDIzMywgMjAsIAorICAgIDIxLCAyMTgsIDg4LCAyMzQsIDI0NywgMjAsIDIxLCAyMTgsIDg3LCAyMzQsIDI0NywgMjAsIDIxLCAyMzQsIDQxLCAyMCwgCisgICAgMjEsIDIxNCwgMTU1LCAyMCwgMjEsIDIxNCwgMTIxLCAyMCwgMjEsIDIxNCwgMTE1LCAyMCwgMjEsIDIxNCwgMTA5LCAyMCwgCisgICAgMjEsIDIxNCwgMTA0LCAyMCwgMjEsIDIxNCwgMTU5LCAyMCwgMjEsIDIxNCwgMTU4LCAyMCwgMjEsIDIxNCwgMTY3LCAyMCwgCisgICAgMjEsIDIwNSwgMTk5LCAyMCwgMjEsIDIwNSwgMTk3LCAyMCwgMjEsIDIwNSwgMTk2LCAyMCwgMjEsIDIwNSwgMjAwLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIxMywgMTkwLCAyMCwgMjEsIDIwMSwgNDYsIDIxMywgODgsIDIwLCAyMSwgMjAxLCA0NiwgMjEzLCAxLCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDIxMywgMjUyLCAyMCwgMjEsIDIxOSwgMjUxLCAyMCwgMjEsIDIxOSwgMjAxLCAyMCwgMjEsIAorICAgIDIxOSwgMTk3LCAyMCwgMjEsIDIxOSwgMTc4LCAyMCwgMjEsIDIxOSwgMTczLCAyMCwgMjEsIDIxOSwgMjUzLCAyMCwgMjEsIAorICAgIDIxOSwgMjUyLCAyMCwgMjEsIDIxOSwgMjU1LCAyMCwgMjEsIDIxOSwgMTQsIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgNjUsIAorICAgIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgMzMsIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgOCwgMjAsIDIxLCAyMTEsIDIzMiwgCisgICAgMjEwLCAxMTQsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMTA2LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDg0LCAyMCwgMjEsIAorICAgIDIwMCwgMjQyLCAyMDYsIDYxLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDEyMiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAKKyAgICAxMjQsIDIwLCAyMSwgMjI0LCAyMTcsIDIwLCAyMSwgMjI0LCAyMTYsIDIwLCAyMSwgMjI0LCAyMTUsIDIwLCAyMSwgMjI0LCAKKyAgICAyMTQsIDIwLCAyMSwgMjI0LCAyMjMsIDIwLCAyMSwgMjI0LCAyMjIsIDIwLCAyMSwgMjI0LCAyMjQsIDIwLCAyMSwgMjA2LCAKKyAgICAxMjMsIDIwNiwgMTA2LCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDg0LCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDc4LCAyMCwgCisgICAgMjEsIDIwNiwgMTIzLCAyMDYsIDYxLCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDU2LCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIAorICAgIDEyMiwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCAxMjEsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgMTI0LCAyMCwgMjEsIDI1MSwgCisgICAgMTYyLCAyNTAsIDEwMywgMjAsIDIxLCAyNDgsIDE0MSwgNzIsIDIwLCAyMSwgMjQ4LCAxNDEsIDcwLCAyMCwgMjEsIDI0OCwgCisgICAgMTQxLCA3NCwgMjAsIDIxLCAyNDgsIDE0MSwgNjIsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgNjQsIDIwLCAyMSwgMjQ4LCAKKyAgICAxNDEsIDIwMSwgMzEsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgMCwgMjAsIDIxLCAyNDgsIDE0MSwgMjAxLCAxMTQsIDIwLCAKKyAgICAyMSwgMjQ4LCAxNDEsIDIyMCwgMzQsIDIwLCAyMSwgMjQ4LCAxNDEsIDIxOSwgMTUwLCAyMCwgMjEsIDI0OCwgMTQxLCAyMTgsIAorICAgIDI0MSwgMjAsIDIxLCAyNDgsIDE0MSwgMTg4LCAyMCwgMjEsIDI0OCwgMTQxLCAyMjcsIDgsIDIwLCAyMSwgMjQ4LCAxNDEsIAorICAgIDIyNiwgMTYzLCAyMCwgMjEsIDI0OCwgMTQxLCAyMjYsIDg4LCAyMCwgMjEsIDI0OCwgMTQxLCAxNjEsIDIwLCAyMSwgMjExLCAKKyAgICAyMzIsIDIzNCwgMTM5LCAyMCwgMjEsIDIxMSwgMjMyLCAyMzQsIDc1LCAyMCwgMjEsIDIxMSwgMjMyLCAyMzMsIDIwNywgMjAsIAorICAgIDIxLCAyMTEsIDIzMiwgMTQ0LCAyMCwgMjEsIDg5LCAyMzUsIDE2NywgMjAsIDIxLCA4OSwgMjM1LCAxNzEsIDIwLCAyMSwgCisgICAgODksIDIzNSwgMTg1LCAyMCwgMjEsIDg5LCAyMzUsIDE4NCwgMjAsIDIxLCA4OSwgMjM1LCAxNzMsIDIwLCAyMSwgODksIAorICAgIDIzNSwgMTk5LCAyMCwgMjEsIDg5LCAyMTIsIDE3NSwgMjAsIDIxLCA4OSwgMjEzLCAxLCAyMCwgMjEsIDg5LCAyMTMsIDE5MCwgCisgICAgMjAsIDIxLCA4OSwgMjEzLCAxNjcsIDIwLCAyMSwgODksIDIxMywgODgsIDIwLCAyMSwgODksIDIxMywgMjUyLCAyMCwgMjEsIAorICAgIDg5LCAyMDAsIDIxNiwgMjAsIDIxLCA4OSwgMjAxLCAwLCAyMCwgMjEsIDg5LCAyMDEsIDY0LCAyMCwgMjEsIDg5LCAyMDEsIAorICAgIDU3LCAyMCwgMjEsIDg5LCAyMDEsIDMxLCAyMCwgMjEsIDg5LCAyMDEsIDExNCwgMjAsIDIxLCA4OSwgMjMzLCA2MSwgMjAsIAorICAgIDIxLCA4OSwgMjMzLCA2MiwgMjAsIDIxLCA4OSwgMjMzLCA2NSwgMjAsIDIxLCA4OSwgMjMzLCA2NCwgMjAsIDIxLCA4OSwgCisgICAgMjMzLCA2MywgMjAsIDIxLCA4OSwgMjMzLCA2OCwgMjAsIDIxLCA4OSwgMjA2LCAzNSwgMjAsIDIxLCA4OSwgMjA2LCA2MSwgCisgICAgMjAsIDIxLCA4OSwgMjA2LCAxMDYsIDIwLCAyMSwgODksIDIwNiwgMTA0LCAyMCwgMjEsIDg5LCAyMDYsIDg0LCAyMCwgMjEsIAorICAgIDg5LCAyMDYsIDEyMiwgMjAsIDIxLCA4OSwgMjA0LCAyMjAsIDIwLCAyMSwgODksIDIwNCwgMjMwLCAyMCwgMjEsIDg5LCAKKyAgICAyMDQsIDI0OCwgMjAsIDIxLCA4OSwgMjA0LCAyNDcsIDIwLCAyMSwgODksIDIwNCwgMjMyLCAyMCwgMjEsIDg5LCAyMDQsIAorICAgIDI1MywgMjAsIDIxLCA4OSwgMjE0LCAyMjQsIDIwLCAyMSwgODksIDIxNSwgMTA2LCAyMCwgMjEsIDg5LCAyMTYsIDczLCAyMCwgCisgICAgMjEsIDg5LCAyMTYsIDYxLCAyMCwgMjEsIDg5LCAyMTUsIDIwNCwgMjAsIDIxLCA4OSwgMTcyLCAyMCwgMjEsIDg5LCAyMTYsIAorICAgIDIyNiwgMjAsIDIxLCA4OSwgMjM1LCA1MCwgMjAsIDIxLCA4OSwgMjM1LCAxMTYsIDIwLCAyMSwgODksIDIzNiwgMTUsIDIwLCAKKyAgICAyMSwgODksIDIzNiwgNywgMjAsIDIxLCA4OSwgMjM1LCAxNjEsIDIwLCAyMSwgODksIDIzNiwgODksIDIwLCAyMSwgODksIAorICAgIDIyNiwgMTcyLCAyMCwgMjEsIDg5LCAyMjYsIDE3OCwgMjAsIDIxLCA4OSwgMjI2LCAxOTIsIDIwLCAyMSwgODksIDIyNiwgCisgICAgMTkxLCAyMCwgMjEsIDg5LCAyMjYsIDE4NSwgMjAsIDIxLCA4OSwgMjI2LCAyMDcsIDIwLCAyMSwgODksIDIyNiwgMTA0LCAKKyAgICAyMCwgMjEsIDg5LCAyMjYsIDEwNSwgMjAsIDIxLCA4OSwgMjI2LCAxMDgsIDIwLCAyMSwgODksIDIyNiwgMTA3LCAyMCwgMjEsIAorICAgIDg5LCAyMjYsIDEwNiwgMjAsIDIxLCA4OSwgMjI2LCAxMDksIDIwLCAyMSwgODksIDIyNiwgMTEwLCAyMCwgMjEsIDg5LCAKKyAgICAyMTgsIDEzMywgMjAsIDIxLCA4OSwgMjE4LCAyNDEsIDIwLCAyMSwgODksIDIyMCwgMzQsIDIwLCAyMSwgODksIDIyMCwgMjksIAorICAgIDIwLCAyMSwgODksIDIxOSwgMTUwLCAyMCwgMjEsIDg5LCAxODgsIDIwLCAyMSwgODksIDIyMSwgNDEsIDIwLCAyMSwgODksIAorICAgIDIyMSwgMTM2LCAyMCwgMjEsIDg5LCAyMjIsIDc2LCAyMCwgMjEsIDg5LCAyMjIsIDY0LCAyMCwgMjEsIDg5LCAyMjEsIDIxMSwgCisgICAgMjAsIDIxLCA4OSwgMTc4LCAyMCwgMjEsIDg5LCAxOTksIDIxMSwgMjAsIDIxLCA4OSwgMTk5LCAyNDUsIDIwLCAyMSwgODksIAorICAgIDIwMCwgNTEsIDIwLCAyMSwgODksIDIwMCwgNDgsIDIwLCAyMSwgODksIDIwMCwgOSwgMjAsIDIxLCA4OSwgMTgzLCAyMCwgCisgICAgMjEsIDg5LCAyMjcsIDE0NywgMjAsIDIxLCAyMTEsIDIzMiwgMjI3LCAxNDcsIDIwLCAyMSwgODksIDIyNywgMTY2LCAyMCwgCisgICAgMjEsIDg5LCAyMjcsIDIyNywgMjAsIDIxLCA4OSwgMjI3LCAyMjUsIDIwLCAyMSwgODksIDIyNywgMjA3LCAyMCwgMjEsIAorICAgIDIxMSwgMjMyLCAyMjcsIDIwNywgMjAsIDIxLCA4OSwgMjI3LCAyNDgsIDIwLCAyMSwgODksIDIyNywgMTc5LCAyMCwgMjEsIAorICAgIDg5LCAyMjcsIDE4MywgMjAsIDIxLCA4OSwgMjI3LCAxOTMsIDIwLCAyMSwgODksIDIyNywgMTkyLCAyMCwgMjEsIDg5LCAKKyAgICAyMjcsIDE5MSwgMjAsIDIxLCA4OSwgMjI3LCAxOTQsIDIwLCAyMSwgODksIDIyNCwgNDIsIDIwLCAyMSwgODksIDIyNCwgCisgICAgMTEwLCAyMCwgMjEsIDg5LCAyMjUsIDQwLCAyMCwgMjEsIDg5LCAyMjUsIDMyLCAyMCwgMjEsIDg5LCAyMjQsIDIxMCwgMjAsIAorICAgIDIxLCA4OSwgMTk0LCAyMCwgMjEsIDg5LCAyNDAsIDIxNSwgMjAsIDIxLCA4OSwgMjQwLCAyMTYsIDIwLCAyMSwgODksIDI0MCwgCisgICAgMjIxLCAyMCwgMjEsIDg5LCAyNDAsIDIyMCwgMjAsIDIxLCA4OSwgMjQwLCAyMTcsIDIwLCAyMSwgODksIDI0MCwgMjIyLCAKKyAgICAyMCwgMjEsIDg5LCAyMjQsIDIxMywgMjAsIDIxLCA4OSwgMjI0LCAyMTUsIDIwLCAyMSwgODksIDIyNCwgMjE5LCAyMCwgMjEsIAorICAgIDg5LCAyMjQsIDIxOCwgMjAsIDIxLCA4OSwgMjI0LCAyMTcsIDIwLCAyMSwgODksIDIyNCwgMjIzLCAyMCwgMjEsIDg5LCAKKyAgICAyMDUsIDE5NCwgMjAsIDIxLCA4OSwgMjA1LCAxOTYsIDIwLCAyMSwgODksIDIwNSwgMTk5LCAyMCwgMjEsIDg5LCAyMDUsIAorICAgIDE5OCwgMjAsIDIxLCA4OSwgMjA1LCAxOTcsIDIwLCAyMSwgODksIDIwNSwgMjAwLCAyMCwgMjEsIDg5LCAyMDUsIDE4OSwgCisgICAgMjAsIDIxLCA4OSwgMjA1LCAxOTAsIDIwLCAyMSwgODksIDIwNSwgMjAyLCAyMCwgMjEsIDg5LCAyMDUsIDIwMSwgMjAsIDIxLCAKKyAgICA4OSwgMjA1LCAxOTEsIDIwLCAyMSwgODksIDIwNSwgMjAzLCAyMCwgMjEsIDg5LCAxOTksIDMsIDIwLCAyMSwgODksIDE5OSwgCisgICAgMTQsIDIwLCAyMSwgODksIDE5OSwgODksIDIwLCAyMSwgODksIDE5OSwgODcsIDIwLCAyMSwgODksIDE5OSwgMzYsIDIwLCAKKyAgICAyMSwgODksIDE5OSwgMTE0LCAyMCwgMjEsIDg5LCAxOTksIDE1NywgMjAsIDIxLCA4OSwgODIsIDE5OSwgMTU3LCAyMCwgMjEsIAorICAgIDg5LCAyMzksIDgwLCAyMCwgMjEsIDg5LCAyMzksIDgxLCAyMCwgMjEsIDg5LCAyMzksIDkwLCAyMCwgMjEsIDg5LCAyMzksIAorICAgIDg5LCAyMCwgMjEsIDg5LCAyMzksIDg0LCAyMCwgMjEsIDg5LCAyMzksIDkzLCAyMCwgMjEsIDg5LCAyMDgsIDI0LCAyMCwgCisgICAgMjEsIDg5LCAyMDksIDI5LCAyMCwgMjEsIDg5LCAyMTEsIDIwMiwgMjAsIDIxLCA4OSwgMjExLCAxOTAsIDIwLCAyMSwgODksIAorICAgIDIwOSwgMTgyLCAyMCwgMjEsIDg5LCAyMTIsIDY0LCAyMCwgMjEsIDg5LCAyMDksIDIyMCwgMjAsIDIxLCA4OSwgMjEwLCA4LCAKKyAgICAyMCwgMjEsIDg5LCAyMTAsIDY1LCAyMCwgMjEsIDg5LCAyMTAsIDYzLCAyMCwgMjEsIDg5LCAyMTAsIDMzLCAyMCwgMjEsIAorICAgIDg5LCAyMTAsIDExNCwgMjAsIDIxLCA4OSwgMjEwLCAxMTYsIDIwLCAyMSwgODksIDIwNSwgNSwgMjAsIDIxLCA4OSwgMjA1LCAKKyAgICA5LCAyMCwgMjEsIDg5LCAyMDUsIDI2LCAyMCwgMjEsIDg5LCAyMDUsIDI1LCAyMCwgMjEsIDg5LCAyMDUsIDExLCAyMCwgMjEsIAorICAgIDg5LCAyMDUsIDMyLCAyMCwgMjEsIDg5LCAyNDYsIDE5MiwgMjAsIDIxLCA4OSwgMjQ2LCAyMTAsIDIwLCAyMSwgODksIDI0NywgCisgICAgOCwgMjAsIDIxLCA4OSwgMjQ3LCA0LCAyMCwgMjEsIDg5LCAyNDYsIDIzNiwgMjAsIDIxLCA4OSwgMjQ3LCAzNywgMjAsIDIxLCAKKyAgICA4OSwgMjA0LCAyMjMsIDIwLCAyMSwgODksIDIwNCwgMjI0LCAyMCwgMjEsIDg5LCAyMDQsIDIyNywgMjAsIDIxLCA4OSwgCisgICAgMjA0LCAyMjYsIDIwLCAyMSwgODksIDIwNCwgMjI1LCAyMCwgMjEsIDg5LCAyMDQsIDIyOCwgMjAsIDIxLCAyNDYsIDIzNywgCisgICAgNTQsIDIwLCAyMSwgMjM2LCAxODMsIDIwOCwgNzYsIDIwLCAyMSwgMjE0LCAxNTEsIDIwLCAyMSwgMjE5LCAyNDksIDIwLCAKKyAgICAyMSwgMjE5LCAxMSwgMjAsIDIxLCAyMTksIDEwLCAyMCwgMjEsIDIxOSwgOSwgMjAsIDIxLCAyMTksIDgsIDIwLCAyMSwgCisgICAgMjE5LCAxMywgMjAsIDIxLCAyMTksIDEyLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDIzLCAyMCwgMjEsIDIwMCwgMjQyLCAKKyAgICAyMDYsIDIyLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDIxLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDIwLCAyMCwgMjEsIAorICAgIDIwMCwgMjQyLCAyMDYsIDE5LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDI2LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDI1LCAKKyAgICAyMCwgMjEsIDIwMCwgMjQyLCA0NywgMjA2LCAxMjQsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgMTQ3LCAyMTcsIDExMiwgCisgICAgMjA4LCAyNDUsIDgxLCAyMTcsIDExMiwgMSwgMjQ4LCAyMzQsIDIxNywgMTEyLCAxLCAyMjQsIDI4LCAyMTcsIDExMiwgMSwgCisgICAgMjM3LCAxNDQsIDIxNywgMTEyLCAxLCAyMTIsIDQ0LCAyMTcsIDExMiwgMSwgMjE5LCAxMDYsIDIxNywgMTEyLCAxLCAyMDQsIAorICAgIDQzLCAyMTcsIDExMiwgMSwgMjQyLCAzMSwgMjE3LCAxMTIsIDEsIDIwNSwgMjI3LCAyMTcsIDExMiwgMSwgMjQ2LCA4MiwgCisgICAgMjE3LCAxMTIsIDEsIDI0NywgNjMsIDIxNywgMTEyLCAxLCAyMjEsIDI4LCAyMTcsIDExMiwgMSwgMjM1LCA5NiwgMjE3LCAKKyAgICAxMTIsIDEsIDIxOSwgMjM5LCAyMTcsIDExMiwgMSwgMjA4LCA2OSwgMjE3LCAxMTIsIDEsIDIxMiwgMTY4LCAyMTcsIDExMiwgCisgICAgMSwgMjUxLCAxNzMsIDIxNywgMTEyLCAxLCAyMTcsIDY3LCAyMTcsIDExMiwgMSwgMjAzLCAyMTQsIDIxNywgMTEyLCAxLCAKKyAgICAyMzksIDI1LCAyMTcsIDExMiwgMSwgMjI4LCA0NCwgMjE3LCAxMTIsIDEsIDIzOSwgMjYsIDIxNywgMTEyLCAxLCAyMTcsIAorICAgIDMzLCAyMTcsIDExMiwgMSwgMjA0LCAyMSwgMjE3LCAxMTIsIDEsIDIyOCwgMTU3LCAyMTcsIDExMiwgMSwgMjM5LCAyMywgCisgICAgMjE3LCAxMTIsIDEsIDIxNiwgNTEsIDIxNywgMTEyLCAyMzcsIDE0MywgODEsIDIxNywgMTEyLCAyMTMsIDEwNSwgMjM3LCAKKyAgICAxNDMsIDgxLCAyMTIsIDE1NywgMSwgMjM3LCAxMzMsIDIzNywgMTI0LCAyMzcsIDE0OCwgMjM4LCA1LCAyMTIsIDE1NywgMSwgCisgICAgMjAzLCAxNjgsIDIxMiwgMTU3LCAxLCAyMDMsIDE5OSwgMjAzLCAyMTUsIDY2LCAyMTIsIDE1NywgMSwgMTk5LCAyMTQsIAorICAgIDIxMiwgMTU3LCAxLCAyMDAsIDEyMywgMjEyLCAxNTcsIDEsIDIwMSwgMTQ3LCAyMTIsIDE1NywgMSwgMjA2LCAyOCwgMjA2LCAKKyAgICAyNywgMjA2LCA1NCwgMjEyLCAxNTcsIDEsIDIzOCwgNzQsIDIxMiwgMTU3LCAxLCAyNTEsIDUyLCA2MiwgMjEyLCAxNTcsIDEsIAorICAgIDIxNywgMTYsIDc0LCAyMTIsIDE1NywgMSwgMjUxLCAyNTUsIDYyLCAyMTIsIDE1NywgMSwgMjUxLCAyMDUsIDIxMiwgMTU3LCAKKyAgICAxLCAyMjQsIDg1LCA3NCwgMjEyLCAxNTcsIDEsIDIwOSwgMjQzLCA3NCwgMjEyLCAxNTcsIDEsIDc0LCAyMTIsIDE1NywgMSwgCisgICAgMjE3LCAxMjEsIDIxMiwgMTU3LCAxLCAyMTcsIDc4LCAyMTIsIDE1NywgMSwgMjEzLCAyMjcsIDIxMywgMjQwLCAyMTMsIAorICAgIDE1MiwgMTQ2LCAyMTIsIDE1NywgMSwgMjI3LCAyMywgMjEyLCAxNTcsIDEsIDI0NywgNTksIDIxMiwgMTU3LCAxLCAyMjcsIAorICAgIDI0LCAyMjcsIDExOCwgMjEyLCAxNTcsIDEsIDIzNiwgMTU2LCAyMTIsIDE1NywgMSwgMjM4LCAxNjUsIDIxMiwgMTU3LCAxLCAKKyAgICAyMzYsIDEwLCAyMzQsIDI1MywgMjM2LCAxNTYsIDIxMiwgMTU3LCAxLCAyMzYsIDQ5LCAyMTIsIDE1NywgMSwgMjAwLCAyMDgsIAorICAgIDIwMCwgMTk5LCAyMDEsIDE0NywgMjEyLCAxNTcsIDEsIDIzNCwgMjI1LCAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIzNCwgCisgICAgMjI5LCAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIyNCwgODcsIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjA5LCAyNDYsIAorICAgIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjIwLCAxMTQsIDIxOCwgNTEsIDIyMCwgMTE1LCAyMjAsIDIxNCwgMjEyLCAxNTcsIAorICAgIDEsIDIwOSwgMjQ0LCAyMjAsIDIxNCwgMjEyLCAxNTcsIDEsIDIzOSwgMTc3LCAyMTIsIDE1NywgMSwgMjI4LCAyMywgMjI4LCAKKyAgICAyNywgMjI4LCAxNCwgNzAsIDIxMiwgMTU3LCAxLCA3MiwgMjEyLCAxNTcsIDEsIDIyNywgMjE4LCAyMjcsIDI1MSwgMjEyLCAKKyAgICAxNTcsIDEsIDIzNSwgMjQ5LCAyMTIsIDE1NywgMSwgMjI0LCA4OCwgMjUxLCAyMjEsIDIxMiwgMTU3LCAxLCAyMDksIDI0OCwgCisgICAgNjIsIDIxMiwgMTU3LCAxLCAyMjgsIDYsIDIzOCwgMTM4LCAyMTIsIDE1NywgMSwgMjE2LCA3LCAyMTYsIDMyLCAyMTYsIAorICAgIDIyNiwgMjEyLCAxNTcsIDEsIDI1MSwgMTM1LCAyMzgsIDEzNiwgMjEyLCAxNTcsIDEsIDIwOCwgMjUwLCAyMTIsIDEyMiwgCisgICAgMjEyLCAxNTcsIDEsIDIwOSwgMTY1LCAyMjQsIDg0LCAyMTIsIDEyMiwgMjEyLCAxNTcsIDEsIDIwOSwgMjQyLCAyMTIsIAorICAgIDEyMiwgMjEyLCAxNTcsIDEsIDI0NywgMjIzLCAyMTIsIDE1NywgMSwgMTk5LCAxNTcsIDIxMiwgMTU3LCAxLCAyMDUsIDIwOCwgCisgICAgMjA1LCAyMjAsIDIwNCwgMTE1LCAyMDcsIDgzLCAyMTIsIDE1NywgMSwgMjA5LCAyNDEsIDIwNywgODMsIDIxMiwgMTU3LCAxLCAKKyAgICAyNDIsIDE1MywgMjEyLCAxNTcsIDEsIDI0OCwgMjEzLCAyNDgsIDIxNiwgMjQ4LCAxNDcsIDI1MCwgMTAzLCAyMTIsIDE1NywgCisgICAgMSwgMjA5LCAyNDcsIDI1MCwgMTAzLCAyMTIsIDE1NywgMSwgMjM5LCAxNzYsIDIxMiwgMTU3LCAxLCAyMTcsIDQ3LCAyMTIsIAorICAgIDE1NywgMSwgMjM4LCAyMzUsIDIzOCwgMjQyLCA3MiwgMjEyLCAxNTcsIDEsIDIyMiwgMTcxLCAyMjIsIDE4MSwgMjIzLCAKKyAgICAyNDMsIDIxMiwgMTU3LCAxLCAyMjQsIDg2LCAyMjMsIDI0MywgMjEyLCAxNTcsIDEsIDIwOSwgMjQ1LCAyMjMsIDI0MywgCisgICAgMjEyLCAxNTcsIDEsIDIyNSwgNTUsIDIyNSwgMTU0LCAyMjQsIDk1LCAxNTYsIDIxMiwgMTU3LCAxLCAyMzksIDE3OCwgMjEyLCAKKyAgICAxNTcsIDEsIDIyOCwgOTAsIDIxMiwgMTU3LCAxLCAyMjgsIDkxLCAyMTIsIDE1NywgMSwgMjQyLCA0NSwgMjQyLCA1MSwgCisgICAgMjQyLCAxNTMsIDIxMiwgMTU3LCAxLCAyMTcsIDksIDIzOCwgNzMsIDc0LCAyMTIsIDE1NywgMSwgMjM5LCAyMSwgMjEyLCAKKyAgICAxNTcsIDEsIDIyOCwgNDMsIDIxMiwgMTU3LCAxLCAyNDIsIDE3MywgMjEyLCAxNTcsIDEsIDI0NywgMTczLCAyMTIsIDE1NywgCisgICAgMSwgMjQ3LCA3NSwgMjEyLCAxNTcsIDEsIDIwOCwgMTE0LCAyMTIsIDE1NywgMSwgMjI0LCA4MywgMjEyLCAxNTcsIDEsIAorICAgIDIwOSwgMjQwLCAyMTIsIDE1NywgMSwgMjMyLCAyMzAsIDIxMiwgMTU3LCAxLCAyMTQsIDE2NywgMjEyLCAxNTcsIDEsIDIwMCwgCisgICAgMTk1LCAyMTIsIDE1NywgMjA5LCAxMzksIDIxNCwgMjExLCAyMTIsIDE1NywgMjIxLCAyMSwgMjE0LCAyMTEsIDIxMiwgMTU3LCAKKyAgICAyNDIsIDIzNSwgMjE0LCAyMTEsIDIxMiwgMTU3LCAyNTAsIDIxNiwgOTksIDIxMiwgMTU3LCAyMDQsIDE3MiwgOTksIDIxMiwgCisgICAgMTU3LCAyNDgsIDIzMiwgOTksIDIxMiwgMTU3LCAxLCAyMjcsIDExOCwgMjEyLCAxNTcsIDEsIDIxMCwgMTE2LCAyMTIsIAorICAgIDE1NywgMSwgMjE3LCA2MywgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIDExNCwgMjE3LCAxNSwgMjEyLCAxNTcsIDEsIAorICAgIDIzNiwgMjEyLCAyNDcsIDExNCwgMjI4LCAyNiwgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIDExNCwgMjM4LCAyNDEsIAorICAgIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAxMTQsIDI1MSwgMjU0LCAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgCisgICAgMTE0LCAyNTEsIDIwNSwgMjA3LCAxMiwgMSwgNjIsIDIwNywgMTIsIDEsIDcwLCAyMDcsIDEyLCAxLCA2NiwgMjA3LCAxMiwgCisgICAgMSwgMTYxLCAyMDcsIDEyLCAxLCAyMzYsIDg5LCAyMDcsIDEyLCAxLCAyMTksIDI1MywgMjA3LCAxMiwgMSwgMjA3LCAzNiwgCisgICAgMjA3LCAxMiwgMSwgMjQyLCA1OCwgMjA3LCAxMiwgMSwgMTg4LCAyMDcsIDEyLCAxLCAxNzIsIDIwNywgMTIsIDEsIDI0OSwgCisgICAgMTM2LCAyMDcsIDEyLCAxLCAxNzgsIDIwNywgMTIsIDEsIDE4MywgMjA3LCAxMiwgMSwgMTk0LCAyMDcsIDEyLCAxLCAyMDEsIAorICAgIDExNCwgMjA3LCAxMiwgMSwgMjEyLCA2NCwgMjA3LCAxMiwgMSwgMTQ0LCAyMDcsIDEyLCAyMiwgMiwgNzAsIDIwNywgMTIsIAorICAgIDIyLCAyLCA2NiwgMjA3LCAxMiwgMiwgMjAyLCAyMDgsIDIzNCwgMTcwLCAxLCA2MiwgMjM0LCAxNzAsIDEsIDcwLCAyMzQsIAorICAgIDE3MCwgMSwgNjYsIDIzNCwgMTcwLCAxLCAxNjEsIDIzNCwgMTcwLCAxLCAyMzYsIDg5LCAyMzQsIDE3MCwgMSwgMjE5LCAKKyAgICAyNTMsIDIzNCwgMTcwLCAxLCAyMDcsIDM2LCAyMzQsIDE3MCwgMSwgMjQyLCA1OCwgMjM0LCAxNzAsIDEsIDE4OCwgMjM0LCAKKyAgICAxNzAsIDEsIDE3MiwgMjM0LCAxNzAsIDEsIDI0OSwgMTM2LCAyMzQsIDE3MCwgMSwgMTc4LCAyMzQsIDE3MCwgMSwgMTgzLCAKKyAgICAyMzQsIDE3MCwgMSwgMjEzLCAyNTIsIDIzNCwgMTcwLCAxLCAxOTQsIDIzNCwgMTcwLCAxLCAyMDEsIDExNCwgMjM0LCAxNzAsIAorICAgIDEsIDIxMiwgNjQsIDIzNCwgMTcwLCAxLCAxNDQsIDIzNCwgMTcwLCAyMiwgMiwgNzAsIDIzNCwgMTcwLCAyMiwgMiwgNjYsIAorICAgIDIzNCwgMTcwLCAyLCAyMTYsIDE2NSwgMjE1LCAyMjIsIDIwOSwgMTM5LCAyMTQsIDIxMSwgMjE1LCAyMjIsIDUzLCAyMTQsIAorICAgIDIxMSwgMjQ4LCAyOCwgMSwgNjIsIDI0OCwgMjgsIDEsIDcwLCAyNDgsIDI4LCAxLCA2NiwgMjQ4LCAyOCwgMSwgMTYxLCAKKyAgICAyNDgsIDI4LCAxLCAyMzYsIDg5LCAyNDgsIDI4LCAxLCAyMTksIDI1MywgMjQ4LCAyOCwgMSwgMjA3LCAzNiwgMjQ4LCAyOCwgCisgICAgMSwgMjQyLCA1OCwgMjQ4LCAyOCwgMSwgMTg4LCAyNDgsIDI4LCAxLCAxNzIsIDI0OCwgMjgsIDEsIDI0OSwgMTM2LCAyNDgsIAorICAgIDI4LCAxLCAxNzgsIDI0OCwgMjgsIDEsIDE4MywgMjQ4LCAyOCwgMSwgMjEzLCAyNTIsIDI0OCwgMjgsIDEsIDE5NCwgMjQ4LCAKKyAgICAyOCwgMSwgMjAxLCAxMTQsIDI0OCwgMjgsIDEsIDIxMiwgNjQsIDI0OCwgMjgsIDEsIDE0NCwgMjQ4LCAyOCwgMjIsIDIsIAorICAgIDcwLCAyNDgsIDI4LCAyMiwgMiwgNjYsIDIwNywgMTEsIDEsIDYyLCAyMDcsIDExLCAxLCA3MCwgMjA3LCAxMSwgMSwgNjYsIAorICAgIDIwNywgMTEsIDEsIDE2MSwgMjA3LCAxMSwgMSwgMjM2LCA4OSwgMjA3LCAxMSwgMSwgMjE5LCAyNTMsIDIwNywgMTEsIDEsIAorICAgIDIwNywgMzYsIDIwNywgMTEsIDEsIDI0MiwgNTgsIDIwNywgMTEsIDEsIDE4OCwgMjA3LCAxMSwgMSwgMTcyLCAyMDcsIDExLCAKKyAgICAxLCAyNDksIDEzNiwgMjA3LCAxMSwgMSwgMTc4LCAyMDcsIDExLCAxLCAxODMsIDIwNywgMTEsIDEsIDE5NCwgMjA3LCAxMSwgCisgICAgMSwgMjAxLCAxMTQsIDIwNywgMTEsIDEsIDIxMiwgNjQsIDIwNywgMTEsIDIyLCAyLCA3MCwgMjA3LCAxMSwgMjIsIDIsIDY2LCAKKyAgICA4NiwgMSwgMTYxLCA4NiwgMSwgMjI2LCAyMDcsIDg2LCAxLCAyMjYsIDg4LCA4NiwgMSwgMjI2LCAxNzgsIDg2LCAxLCAyMTksIAorICAgIDE3OCwgODYsIDEsIDI0NywgMTkwLCA4NiwgMSwgMjQ3LCAzNywgODYsIDEsIDI0NiwgOTEsIDg2LCAxLCAyNDYsIDIxMCwgCisgICAgODYsIDEsIDIxOCwgMjYsIDg2LCAxLCAyNDIsIDU4LCA4NiwgMSwgMjA0LCAyNDEsIDg2LCAxLCAyNDAsIDIxMSwgODYsIDEsIAorICAgIDIwNCwgMjM2LCA4NiwgMSwgMjE4LCAyNDcsIDg2LCAxLCAyMDcsIDM2LCA4NiwgMSwgMjA2LCAxMjIsIDg2LCAxLCAxMzgsIAorICAgIDg2LCAxLCAyMDYsIDYxLCA4NiwgMSwgMjE4LCAyNDEsIDg2LCAxLCAyNDksIDEzNiwgODYsIDEsIDIxNSwgMjQ1LCA4NiwgMSwgCisgICAgMjE1LCAxMDYsIDg2LCAxLCAyMTUsIDIxNywgODYsIDEsIDIyMSwgMTM2LCA4NiwgMSwgMTk5LCAyNDUsIDg2LCAxLCAyMTMsIAorICAgIDEsIDg2LCAxLCAyMjQsIDExMCwgODYsIDEsIDIwMiwgMTkzLCA4NiwgMSwgMjEwLCAxMTQsIDg2LCAxLCAyMDgsIDEzOSwgCisgICAgODYsIDEsIDIxMiwgNjQsIDg2LCAxLCAxNDQsIDg2LCAxLCAxOTQsIDg2LCAxLCAyMTQsIDE1OSwgODYsIDIyOCwgMTA0LCAKKyAgICAyMiwgMjE0LCAxNDUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTU4LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDEyMSwgODYsIAorICAgIDIyOCwgMTA0LCAyMiwgMjE0LCAxMTUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgOTcsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgCisgICAgNjcsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgNTUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgNTQsIDg2LCAyMjgsIDEwNCwgCisgICAgMjIsIDIxMiwgMTMxLCA4NiwgMjI4LCAxMDQsIDIyLCAyMTIsIDEyNCwgODYsIDIyOCwgMTA0LCAyMiwgMjI0LCAyLCA4NiwgCisgICAgMjI4LCAxMDQsIDIyLCAyMjMsIDI0NiwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxMzksIDg2LCAyMjgsIDEwNCwgMjIsIAorICAgIDIxNCwgMTUxLCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDEwNSwgMjA0LCAxMjgsIDEwMiwgODYsIDIyOCwgMTA0LCAyMiwgCisgICAgMjE0LCAxMDUsIDIwNCwgMTI4LCAxMDUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTQxLCA4NiwgMjIsIDIyOCwgODgsIAorICAgIDI1MSwgMSwgODYsIDIyLCAyMjgsIDg4LCAyNTIsIDEzOCwgODYsIDIyLCAyLCAyNTIsIDEzOCwgODYsIDIyLCAyLCA3MCwgCisgICAgODYsIDIyLCAyLCAyMjgsIDE1MSwgODYsIDIyLCAyLCAyMDAsIDEyMywgODYsIDIyLCAyLCAxOTksIDE2NywgODYsIDIyLCAyLCAKKyAgICA2NiwgODYsIDIyLCAyLCAyMDMsIDE4MiwgODYsIDIyLCAyLCAyMDQsIDQ2LCA4NiwgMjIsIDIsIDIxNywgMTIxLCA4NiwgMjIsIAorICAgIDIsIDE4MywgODYsIDIyLCAyLCAyMjgsIDE3OCwgODYsIDIyLCAyLCA3MiwgODYsIDIyLCAyLCAyNTEsIDIyMSwgODYsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgODYsIDIyLCAyLCAyMTcsIDYzLCA4NiwgMjIsIDIsIDI1MCwgMTM5LCA4NiwgMiwgMjE5LCAxMjMsIAorICAgIDg2LCAyLCAyMTMsIDE4OCwgODYsIDIsIDE5OSwgMTc4LCA4NiwgMiwgMjIwLCAyNDEsIDg2LCAyLCAyMDUsIDg2LCA4NiwgMiwgCisgICAgMjQ5LCA3OSwgODYsIDIsIDIxMiwgMjUyLCA4NiwgMiwgMjA1LCAxODQsIDg2LCAyLCAyMjcsIDc1LCA4NiwgMiwgMjUxLCAKKyAgICAxNzgsIDg2LCAyLCAyMTIsIDE0LCAyMTIsIDcsIDg2LCAyLCAyMDIsIDIwNSwgODYsIDIsIDI0NiwgODUsIDg2LCAyLCAyNDksIAorICAgIDUxLCA4NiwgMiwgMjI2LCAxOTksIDg2LCAyLCAyNDksIDc0LCA4NiwgMiwgMjQ3LCAxNjEsIDIxNSwgMTY3LCAyMjUsIDIzNSwgCisgICAgODYsIDIsIDIyNSwgOSwgMjA1LCAxNjEsIDg2LCAyLCAyNDgsIDIwMiwgODYsIDIsIDIxNSwgMjE5LCAyMjEsIDM4LCA4NiwgCisgICAgMiwgMjI2LCA2NiwgODYsIDI0MiwgMTk1LCAxNiwgMjEzLCA4MCwgODYsIDIsIDI1MCwgMTIxLCA4NiwgMiwgMjUwLCAxNDIsIAorICAgIDg2LCAxNywgMTk5LCA4MSwgODYsIDE3LCAxMDIsIDg2LCAxNywgMTA1LCA4NiwgMTcsIDE0NywgODYsIDE3LCAxNDksIDg2LCAKKyAgICAxNywgMTY0LCA4NiwgMTcsIDE4NywgODYsIDE3LCAyMTAsIDEzNSwgODYsIDE3LCAxOTIsIDg2LCAxNywgMjE5LCAxMTMsIAorICAgIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjA5LCAxMywgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMjEsIDUsIDg2LCAKKyAgICAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAxNjYsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjQ4LCAyMzUsIDg2LCAKKyAgICAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjQ4LCA4LCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgNDIsIDg2LCAxNiwgCisgICAgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAzNiwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDM0LCA4NiwgMTYsIAorICAgIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgNDAsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAzOCwgOTIsIDI0OCwgCisgICAgMTYwLCA5MiwgMjM4LCAxOTUsIDkyLCAyNDYsIDcwLCA5MiwgMjM2LCAxODMsIDIwOCwgNzYsIDkyLCAyNDYsIDc5LCA5MiwgCisgICAgMjM2LCAyMjksIDI0MCwgMTgwLCA5MiwgMjA1LCAxODMsIDIwOSwgMjMsIDIzMywgMzMsIDkyLCAyMDksIDE4MCwgNSwgMjQ4LCAKKyAgICA4OSwgMjIyLCAxNDUsIDkyLCAyMjIsIDE3NywgMjQ2LCA3MCwgOTIsIDIyMiwgMTc3LCAyMzYsIDE4MywgMjA4LCA3NiwgOTIsIAorICAgIDIxOSwgMTA0LCA5MiwgMjM2LCAyMTEsIDU4LCAyMTEsIDE3NiwgMTAyLCA5MiwgMjM2LCAyMTEsIDU4LCAyMTEsIDE3NiwgCisgICAgMTA1LCA5MiwgMjM2LCAyMTEsIDU4LCAyMTEsIDE3NiwgMTQ3LCA5MiwgMjIsIDIxMCwgMTU0LCA5MiwgMTcsIDE5OSwgODEsIAorICAgIDkyLCAxNywgMTAyLCA5MiwgMTcsIDEwNSwgOTIsIDE3LCAxNDcsIDkyLCAxNywgMTQ5LCA5MiwgMTcsIDE2NCwgOTIsIDE3LCAKKyAgICAxODcsIDkyLCAxNywgMjEwLCAxMzUsIDkyLCAxNywgMTkyLCA5MiwgMTcsIDIxOSwgMTEzLCA5MiwgMSwgNjIsIDkyLCAxLCAKKyAgICA3MiwgOTIsIDEsIDcwLCA5MiwgMSwgNzQsIDkyLCAxLCA2NiwgOTIsIDEsIDIxNywgMTIxLCA5MiwgMSwgMjA0LCAzMSwgOTIsIAorICAgIDEsIDIzOCwgMjU1LCA5MiwgMSwgMTg4LCA5MiwgMSwgMjUxLCA3NiwgOTIsIDEsIDI0OSwgMTM2LCA5MiwgMSwgMTcyLCA5MiwgCisgICAgMSwgMjE0LCAxNTksIDkyLCAxLCAyMzYsIDg5LCA5MiwgMSwgMTc4LCA5MiwgMSwgMTk0LCA5MiwgMSwgMjEyLCA2NCwgOTIsIAorICAgIDEsIDIxMCwgMTE0LCA5MiwgMSwgMjA3LCAzNiwgOTIsIDEsIDI0MiwgNTgsIDkyLCAxLCAyNDcsIDM3LCA5MiwgMSwgMjI3LCAKKyAgICAyNDgsIDkyLCAxLCAxODMsIDkyLCAxLCAyMTMsIDI1MiwgOTIsIDEsIDIwMSwgMTE0LCA5MiwgMSwgMjM3LCAxOTUsIDkyLCAKKyAgICAxLCAxNjEsIDkyLCAxLCAyMjYsIDIwNywgOTIsIDEsIDIwNSwgMzIsIDkyLCAxLCAxOTksIDExNCwgOTIsIDEsIDIzNCwgCisgICAgMjMzLCA5MiwgMSwgMTk5LCA3LCA5MiwgMSwgMjI0LCAyMjMsIDkyLCAxLCAxOTksIDYzLCA5MiwgMSwgMjQ2LCAyMzYsIDkyLCAKKyAgICAxLCAyMDUsIDE4MywgMTY4LCAyMiwgNTQsIDkyLCAxLCAyMDUsIDE4MywgNzIsIDkyLCAxLCAyMDUsIDE4MywgNzAsIDkyLCAKKyAgICAxLCAyMDUsIDE4MywgNzQsIDkyLCAxLCAyMDUsIDE4MywgNjYsIDkyLCAxLCAyMDUsIDE4MywgMjE3LCAxMjEsIDkyLCAxLCAKKyAgICAyMDUsIDE4MywgMjA0LCAzMSwgOTIsIDEsIDIwNSwgMTgzLCAyNTEsIDc2LCA5MiwgMSwgMjA1LCAxODMsIDI0OSwgMTM2LCAKKyAgICA5MiwgMSwgMjA1LCAxODMsIDE3MiwgOTIsIDEsIDIwNSwgMTgzLCAyMTQsIDE1OSwgOTIsIDEsIDIwNSwgMTgzLCAyMzYsIAorICAgIDg5LCA5MiwgMSwgMjA1LCAxODMsIDE3OCwgOTIsIDEsIDIwNSwgMTgzLCAyMDcsIDM2LCA5MiwgMSwgMjA1LCAxODMsIDI0MiwgCisgICAgNTgsIDkyLCAxLCAyMDUsIDE4MywgMjQ3LCAzNywgOTIsIDEsIDIwNSwgMTgzLCAyMjcsIDI0OCwgOTIsIDEsIDIwNSwgMTgzLCAKKyAgICAyMDUsIDMyLCA5MiwgMSwgMjA1LCAxODMsIDE4MywgOTIsIDEsIDIwNSwgMTgzLCAyMDEsIDExNCwgOTIsIDEsIDIwNSwgCisgICAgMTgzLCAxNjEsIDkyLCAxLCAyMDUsIDE4MywgMjM2LCA4NiwgOTIsIDEsIDIwNSwgMTgzLCAyMzQsIDIzMywgOTIsIDEsIAorICAgIDIwNSwgMTgzLCAyMjcsIDIwNiwgOTIsIDEsIDIwNSwgMTgzLCAyMTksIDE0OCwgOTIsIDEsIDIwNSwgMTgzLCAyMzksIDkzLCAKKyAgICA5MiwgMSwgMjA5LCAxODAsIDcyLCA5MiwgMSwgMjA5LCAxODAsIDcwLCA5MiwgMSwgMjA5LCAxODAsIDIyOCwgMywgOTIsIDEsIAorICAgIDIwOSwgMTgwLCAyMDQsIDMxLCA5MiwgMSwgMjA5LCAxODAsIDY2LCA5MiwgMSwgMjA5LCAxODAsIDI1MSwgNzYsIDkyLCAxLCAKKyAgICAyMDksIDE4MCwgMTYxLCA5MiwgMSwgMjA5LCAxODAsIDIzNiwgODksIDkyLCAxLCAyMDksIDE4MCwgMTQ0LCA5MiwgMSwgCisgICAgMjA5LCAxODAsIDE3MiwgOTIsIDEsIDIwOSwgMTgwLCAyMTAsIDExNCwgOTIsIDEsIDIwOSwgMTgwLCAyMDcsIDM2LCA5MiwgCisgICAgMSwgMjA5LCAxODAsIDI0MiwgNTgsIDkyLCAxLCAyMDksIDE4MCwgMjI3LCAyNDgsIDkyLCAxLCAyMDksIDE4MCwgMjM3LCAKKyAgICAxOTUsIDkyLCAxLCAyMDksIDE4MCwgMjM2LCA4NiwgOTIsIDEsIDIwOSwgMTgwLCAyMzQsIDIzMywgOTIsIDEsIDIwOSwgCisgICAgMTgwLCAyMDUsIDMyLCA5MiwgMSwgMjA5LCAxODAsIDE5OSwgMTE0LCA5MiwgMSwgMjA5LCAxODAsIDIxMywgMjQ4LCA5MiwgCisgICAgMSwgMjA5LCAxODAsIDI0NywgMzcsIDkyLCAxLCAyMDksIDE4MCwgMTk5LCA3NywgOTIsIDEsIDIyMiwgMTc3LCA3MCwgOTIsIAorICAgIDEsIDIyMiwgMTc3LCAxNjEsIDkyLCAxLCAyMjIsIDE3NywgMjEzLCAyNTIsIDkyLCAxLCAyMjIsIDE3NywgMjM3LCAxOTUsIAorICAgIDkyLCAxLCAyMjIsIDE3NywgMTk5LCA3NywgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNTEsIDM0LCAxMDIsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjAyLCAyMDQsIDEwMiwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDIsIDE5LCA5MiwgCisgICAgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgNDEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjI4LCA1MCwgMjA0LCAKKyAgICA0MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDksIDkxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDEyNiwgCisgICAgMjQ5LCA5MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCA2MiwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCA3MCwgOTIsIAorICAgIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxNjEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjE5LCAyNTMsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ3LCAxOTAsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCAyNTMsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCAyNDEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQxLCAyMjAsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjE5LCAyMSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDcsIDM2LCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDI0MiwgNTgsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTcyLCA5MiwgMSwgMjUxLCAKKyAgICAxMzQsIDIzNiwgNjksIDIxNSwgMjQ1LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwOCwgMTc5LCA5MiwgMSwgMjUxLCAKKyAgICAxMzQsIDIzNiwgNjksIDE5OSwgNzcsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTk5LCAxMTQsIDkyLCAxLCAyNTEsIAorICAgIDEzNCwgMjM2LCA2OSwgMjUxLCAxODUsIDkyLCAxLCAyMDUsIDE4MywgMjUxLCAxMzQsIDIzNiwgNjksIDIwNywgMzYsIDkyLCAKKyAgICAxLCAyMDUsIDE4MywgMjUxLCAxMzQsIDIzNiwgNjksIDE5OSwgNzcsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgCisgICAgNjksIDIzNSwgMTk5LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMTksIDI1MywgOTIsIDEsIDIyMiwgCisgICAgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ3LCAxOTAsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIAorICAgIDIyNywgMjE1LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDI1MywgOTIsIDEsIDIyMiwgMTc3LCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjQxLCAyMDQsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIwNywgMzYsIAorICAgIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0MSwgMTAwLCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAKKyAgICAyMzYsIDY5LCAyMDgsIDE3OSwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQyLCAxNjcsIDkyLCAxLCAKKyAgICAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDE5OSwgNzcsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIAorICAgIDE5OSwgMTE0LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE2NywgNjYsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgCisgICAgMTY3LCAxODMsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0OCwgMjAwLCA5MiwgMSwgMjUxLCAxMzQsIAorICAgIDIzNiwgNjksIDI0MiwgNDYsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIyNCwgMjIzLCAyMCwgMjEsIAorICAgIDIxNiwgMjMwLCAyMCwgMjEsIDI1MCwgMTEyLCAyMCwgMjEsIDI1MiwgOTMsIDIwLCAyMSwgMjAxLCA2NywgMjAsIDIxLCAKKyAgICAyMTUsIDQ4LCAyMCwgMjEsIDIxNiwgODIsIDIwLCAyMSwgMjE0LCAxNzYsIDIwLCAyMSwgMjA2LCAyMTAsIDIwLCAyMSwgCisgICAgMjI3LCAxNSwgMjAsIDIxLCAyMjUsIDIyNiwgMjAsIDIxLCAyMjIsIDExOSwgMjAsIDIxLCAyMTgsIDE5OCwgMjAsIDIxLCAKKyAgICAyMjAsIDEwOSwgMjAsIDIxLCAyMjUsIDUwLCAyMCwgMjEsIDIwOCwgMjQ4LCAyMCwgMjEsIDIxMSwgMjM0LCAyMCwgMjEsIAorICAgIDIwOSwgMjI5LCAyMCwgMjEsIDIxMCwgNjksIDIwLCAyMSwgMjA5LCAxOTIsIDIwLCAyMSwgMTk5LCAyMjAsIDIwLCAyMSwgCisgICAgMjAwLCA1NywgMjAsIDIxLCAyMTMsIDE5NywgMjAsIDIxLCAyMTgsIDY2LCAyMCwgMjEsIDIxNywgMTAwLCAyMTgsIDY2LCAKKyAgICAyMCwgMjEsIDIxOCwgNjUsIDIwLCAyMSwgMjE3LCAxMDAsIDIxOCwgNjUsIDIwLCAyMSwgMjE4LCA2NCwgMjAsIDIxLCAyMTcsIAorICAgIDEwMCwgMjE4LCA2NCwgMjAsIDIxLCAyMTgsIDYzLCAyMCwgMjEsIDIxNywgMTAwLCAyMTgsIDYzLCAyMCwgMjEsIDIxMiwgCisgICAgMTM2LCAyMCwgMjEsIDIxMiwgMTM1LCAyMCwgMjEsIDIxMiwgMTM0LCAyMCwgMjEsIDIxMiwgMTMzLCAyMCwgMjEsIDIxMiwgCisgICAgMTMyLCAyMCwgMjEsIDIxMiwgMTQwLCAyMCwgMjEsIDIxNywgMTAwLCAyMTYsIDIyNiwgMjAsIDIxLCAyMTcsIDEwMCwgMjA3LCAKKyAgICA4MywgMjAsIDIxLCAyMTcsIDEwMCwgMjI3LCAxMTgsIDIwLCAyMSwgMjE3LCAxMDAsIDI0NywgMjIzLCAyMCwgMjEsIDIxNywgCisgICAgMTAwLCAyMjMsIDI0MywgMjAsIDIxLCAyMTcsIDEwMCwgMjIwLCAyMTQsIDIwLCAyMSwgMjE3LCAxMDAsIDIxMiwgMTIyLCAKKyAgICAyMCwgMjEsIDIxNywgMTAwLCAyMTAsIDExNiwgMjAsIDIxLCAyMzksIDEyLCAyMDEsIDE0NywgMjAsIDIxLCAyMDEsIDQ1LCAKKyAgICAyMDEsIDE0NywgMjAsIDIxLCA0NywgNCwgMjEzLCAyNiwgMjAsIDIxLCA0NywgMjEzLCAyMjAsIDI0MCwgMTgyLCAyMCwgMjEsIAorICAgIDIxNCwgMzIsIDIxMiwgMTM3LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNzgsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAxNzUsIAorICAgIDIwLCAyMSwgMjA2LCAyNCwgMjAsIDIxLCAyMDYsIDI2LCAyMCwgMjEsIDIwNCwgMjMzLCAyMCwgMjEsIDIwNCwgMjM1LCAyMCwgCisgICAgMjEsIDIwNCwgMjQwLCAyMCwgMjEsIDIwNSwgMTkzLCAyMCwgMjEsIDIwNSwgMTk1LCAyMCwgMjEsIDIxMSwgMjMyLCAyMDksIAorICAgIDE5NywgMjAsIDIxLCAyMTEsIDIzMiwgMjEwLCAyLCAyMCwgMjEsIDIxMSwgMjMyLCAyMzMsIDE4OCwgMjAsIDIxLCA4OSwgCisgICAgMjM1LCA1LCAyMCwgMjEsIDg5LCAyNDEsIDEzNCwgMjM2LCA3LCAyMCwgMjEsIDg5LCAyMzYsIDg2LCAyMCwgMjEsIDg5LCAKKyAgICAyMzUsIDEwLCAyMCwgMjEsIDIxMSwgMjMyLCAyMjcsIDEyOCwgMjAsIDIxLCA4OSwgMjI3LCAxMjYsIDIwLCAyMSwgMjQ4LCAKKyAgICAyNTUsIDI0MSwgMTM0LCAxNTYsIDIwLCAyMSwgMjQ4LCAyNTUsIDI0MSwgMTM0LCAxNDYsIDIwLCAyMSwgODksIDI0MSwgCisgICAgMTI5LCAyMTIsIDEyMiwgMjI0LCAxODYsIDIwMiwgMTcyLCAyMjQsIDIzNiwgMjI0LCAxODYsIDEsIDE2MSwgMjI0LCAxODYsIAorICAgIDEsIDIyNiwgMjA3LCAyMjQsIDE4NiwgMSwgMjM2LCA4OSwgMjI0LCAxODYsIDEsIDIzNSwgMTk5LCAyMjQsIDE4NiwgMSwgCisgICAgMjE5LCAyNTMsIDIyNCwgMTg2LCAxLCAyNDcsIDE5MCwgMjI0LCAxODYsIDEsIDI0NywgMzcsIDIyNCwgMTg2LCAxLCAyMjcsIAorICAgIDI0OCwgMjI0LCAxODYsIDEsIDIyNywgMjE1LCAyMjQsIDE4NiwgMSwgMjAwLCA3NywgMjI0LCAxODYsIDEsIDIwNywgMzYsIAorICAgIDIyNCwgMTg2LCAxLCAyMDYsIDEyMiwgMjI0LCAxODYsIDEsIDI0MiwgNTgsIDIyNCwgMTg2LCAxLCAyNDEsIDEwMCwgMjI0LCAKKyAgICAxODYsIDEsIDE4OCwgMjI0LCAxODYsIDEsIDE3MiwgMjI0LCAxODYsIDEsIDIxNSwgMjQ1LCAyMjQsIDE4NiwgMSwgMjQ5LCAKKyAgICAxMzYsIDIyNCwgMTg2LCAxLCAyNDgsIDIwMCwgMjI0LCAxODYsIDEsIDE3OCwgMjI0LCAxODYsIDEsIDE4MywgMjI0LCAxODYsIAorICAgIDEsIDIxMywgMjUyLCAyMjQsIDE4NiwgMSwgMTk0LCAyMjQsIDE4NiwgMSwgMjAxLCAxMTQsIDIyNCwgMTg2LCAxLCAyMTAsIAorICAgIDExNCwgMjI0LCAxODYsIDEsIDIwOCwgMTc5LCAyMjQsIDE4NiwgMSwgMjEyLCA2NCwgMjI0LCAxODYsIDEsIDE0NCwgMjI0LCAKKyAgICAxODYsIDEsIDIzNSwgMSwgMjI0LCAxODYsIDEsIDIwNSwgMTMyLCAyMjQsIDE4NiwgMjIsIDIsIDYyLCAyMjQsIDE4NiwgMjIsIAorICAgIDIsIDcwLCAyMjQsIDE4NiwgMjIsIDIsIDY2LCAyMjQsIDE4NiwgMjIsIDIsIDIzOCwgMjU1LCAyMjQsIDE4NiwgMjIsIDIsIAorICAgIDI1MSwgMTc2LCAyMjQsIDE4NiwgMjIsIDIsIDIxNywgNjMsIDIyNCwgMTg2LCAyMiwgMiwgMjUwLCAxMzksIDIyNCwgMTg2LCAKKyAgICAyMiwgMiwgNzIsIDIyNCwgMTg2LCAyMiwgMiwgNzQsIDIyNCwgMTg2LCAyMDgsIDEyLCAxLCAxODMsIDIyNCwgMTg2LCAyMDgsIAorICAgIDEyLCAxLCAyMTMsIDI1MiwgMjI0LCAxODYsIDIwOCwgMTIsIDEsIDIwMSwgMTE0LCAyMjQsIDE4NiwgNCwgMSwgMTYxLCAKKyAgICAyMjQsIDE4NiwgNCwgMSwgMjE5LCAyNTMsIDIyNCwgMTg2LCA0LCAxLCAyNTEsIDMzLCAyMjQsIDE4NiwgNCwgMSwgMjA3LCAKKyAgICAzNiwgMjI0LCAxODYsIDQsIDEsIDE4OCwgMjI0LCAxODYsIDQsIDEsIDE3MiwgMjI0LCAxODYsIDQsIDEsIDE3OCwgMjI0LCAKKyAgICAxODYsIDQsIDEsIDIxMywgMjUyLCAyMjQsIDE4NiwgNCwgMSwgMTk0LCAyMjQsIDE4NiwgMiwgMjIxLCAyNiwgMjI0LCAxODYsIAorICAgIDIsIDIyNiwgMjQ5LCAyMjQsIDE4NiwgMiwgMjEyLCA2MiwgMjI0LCAxODYsIDIsIDIyNCwgNzgsIDIyNCwgMTg2LCAyMzgsIAorICAgIDQzLCA4MSwgMjI0LCAxODYsIDIxNCwgNzksIDgxLCAyMjQsIDE4NiwgMTcsIDE5OSwgODEsIDIyNCwgMTg2LCAxNywgMTAyLCAKKyAgICAyMjQsIDE4NiwgMTcsIDEwNSwgMjI0LCAxODYsIDE3LCAxNDcsIDIyNCwgMTg2LCAxNywgMTQ5LCAyMjQsIDE4NiwgMTcsIAorICAgIDE2NCwgMjI0LCAxODYsIDE3LCAxODcsIDIyNCwgMTg2LCAxNywgMjEwLCAxMzUsIDIyNCwgMTg2LCAxNywgMTkyLCAyMjQsIAorICAgIDE4NiwgMTcsIDIxOSwgMTEzLCA0NiwgMjI1LCA0MSwgMSwgMTYxLCA0NiwgMjI1LCA0MSwgMSwgMjAwLCAxODEsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAyMTksIDI1MywgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMzIsIDQ2LCAyMjUsIDQxLCAxLCAyMTIsIDY0LCAKKyAgICA0NiwgMjI1LCA0MSwgMSwgMTgzLCA0NiwgMjI1LCA0MSwgMSwgMjA3LCAzNiwgNDYsIDIyNSwgNDEsIDEsIDIwNiwgMTIyLCAKKyAgICA0NiwgMjI1LCA0MSwgMSwgMTk0LCA0NiwgMjI1LCA0MSwgMSwgMTcyLCA0NiwgMjI1LCA0MSwgMSwgMjE1LCAyNDUsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAxNzgsIDQ2LCAyMjUsIDQxLCAxLCAyMzcsIDE5NSwgNDYsIDIyNSwgNDEsIDEsIDIwMywgOTAsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAxNDQsIDQ2LCAyMjUsIDQxLCAxLCAyMTQsIDE1OSwgNDYsIDIyNSwgNDEsIDEsIDIyNiwgMjA3LCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMjA1LCAyMiwgNDYsIDIyNSwgNDEsIDEsIDE4OCwgNDYsIDIyNSwgNDEsIDEsIDYyLCA0NiwgMjI1LCAKKyAgICA0MSwgMSwgNzAsIDQ2LCAyMjUsIDQxLCAxLCAyMzgsIDI1NSwgNDYsIDIyNSwgNDEsIDEsIDIzOCwgMjQxLCA0NiwgMjI1LCAKKyAgICA0MSwgMSwgNjYsIDQ2LCAyMjUsIDQxLCAxLCAyMTcsIDYzLCA0NiwgMjI1LCA0MSwgMSwgNzQsIDQ2LCAyMjUsIDQxLCAxLCAKKyAgICAyMDQsIDMxLCA0NiwgMjI1LCA0MSwgMSwgNzIsIDQ2LCAyMjUsIDQxLCAxLCAyNTAsIDEzNywgNDYsIDIyNSwgNDEsIDEsIAorICAgIDI1MSwgMTc2LCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNzIsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE3MSwgNDYsIDIyNSwgCisgICAgNDEsIDEsIDIwNSwgMTcwLCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNjksIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE2OCwgMjIwLCAKKyAgICA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMTQsIDE1OSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTQsIDE1OSwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNjEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjAwLCAxODEsIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjE5LCAyNTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMTYxLCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwMCwgMTgxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIxOSwgCisgICAgMjUzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwNSwgMzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgCisgICAgMjEyLCA2NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxODMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgCisgICAgMjA1LCAzMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTIsIDY0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDE4MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDcsIDM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDIwNiwgMTIyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE4OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAyMDcsIDM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwNiwgMTIyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDE4OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjE1LCAyNDUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTc4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDE3MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTUsIDI0NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAxNzgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjM3LCAxOTUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjAzLCA5MCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxOTQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMjM3LCAxOTUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjAzLCA5MCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAxOTQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTQ0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDI0MiwgNTgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjQ5LCAxMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMTQ0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDI0MiwgNTgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMjQ5LCAxMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjI1LCAyMzEsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDEsIDEyMiwgMjAwLCAxNDgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjI1LCAyMzEsIDIyMCwgOCwgNDYsIAorICAgIDIyNCwgMzYsIDEsIDEyOCwgMjAwLCAxNDgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjA4LCAyMywgMjIwLCA4LCAKKyAgICA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDgsIDIzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjIsIDIwOSwgMjM4LCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjUyLCAxMzgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMjgsIAorICAgIDE1MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDY2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjAzLCAKKyAgICAxODIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCA3MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDI1MSwgCisgICAgMjIxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgNzQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMTcsIAorICAgIDE0NiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIwNCwgMzEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAKKyAgICAyNTAsIDExMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDI1MiwgOTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAKKyAgICAyLCAyMDMsIDE3NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIxNiwgMjMwLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAyMiwgMiwgMjE3LCAxNDMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMDQsIDI3LCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAyMiwgMiwgMjI4LCAzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjAzLCAxNjgsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDEsIDQ3LCAyMTksIDI1NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDIyMCwgMjE0LCAyMjAsIDgsIDQ2LCAKKyAgICAyMjQsIDM2LCAxLCA0NywgMjIzLCAyNDMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyMjcsIDExOCwgMjIwLCA4LCAKKyAgICA0NiwgMjI0LCAzNiwgMSwgNDcsIDI0MiwgMTUzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjUwLCAxMDMsIDIyMCwgCisgICAgOCwgNDYsIDIyNCwgMzYsIDE1MCwgMjIyLCAxNDksIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE1MCwgMjIyLCAxNDgsIDIyMCwgCisgICAgOCwgNDYsIDIyNCwgMzYsIDE3LCAxOTksIDgxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTAyLCAyMjAsIDgsIDQ2LCAKKyAgICAyMjQsIDM2LCAxNywgMTA1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTQ3LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgCisgICAgMTQ5LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTY0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTg3LCAyMjAsIDgsIAorICAgIDQ2LCAyMjQsIDM2LCAxNywgMjEwLCAxMzUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxOTIsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDE3LCAyMTksIDExMywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTA3LCAxNywgMTAyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAyLCAyMjUsIDE2MCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMiwgMjI1LCAxNTksIDg2LCAxNiwgMjE2LCA5MCwgODYsIDE2LCAKKyAgICAyMjEsIDYsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCAxNjcsIDIyNiwgODQsIDg2LCAxNiwgMjQ4LCAyMzYsIDIyNiwgODQsIAorICAgIDg2LCAxNiwgMjQ4LCA5LCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgNDMsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCAzNywgMjI2LCAKKyAgICA4NCwgODYsIDE2LCAyMTUsIDM1LCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgNDEsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCAzOSwgCisgICAgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDUsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAxLCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgCisgICAgMCwgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDMsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAyLCAyMjYsIDg0LCA4NiwgMTYsIAorICAgIDI0MSwgMjU1LCAyMjYsIDg0LCA4NiwgMTYsIDIwNCwgMTc4LCA4NiwgMTYsIDIyMSwgNiwgMjEyLCAyNTAsIDg2LCAxNiwgCisgICAgMjE1LCAxNjcsIDIxMiwgMjUwLCA4NiwgMTYsIDI0OCwgMjM2LCAyMTIsIDI1MCwgODYsIDE2LCAyNDgsIDksIDIxMiwgMjUwLCAKKyAgICA4NiwgMTYsIDIxNSwgNDMsIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgMzcsIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgMzUsIAorICAgIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgNDEsIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgMzksIDIxMiwgMjUwLCA4NiwgMTYsIAorICAgIDI0MiwgNSwgMjEyLCAyNTAsIDg2LCAxNiwgMjQyLCAxLCAyMTIsIDI1MCwgODYsIDE2LCAyNDIsIDAsIDIxMiwgMjUwLCA4NiwgCisgICAgMTYsIDI0MiwgMywgMjEyLCAyNTAsIDg2LCAxNiwgMjQyLCAyLCAyMTIsIDI1MCwgODYsIDE2LCAyNDEsIDI1NSwgMjEyLCAKKyAgICAyNTAsIDI0OCwgMjksIDEsIDE2MSwgMjQ4LCAyOSwgMSwgMjM2LCA4OSwgMjQ4LCAyOSwgMSwgMjE5LCAyNTMsIDI0OCwgMjksIAorICAgIDEsIDIxOSwgMTk2LCAyNDgsIDI5LCAxLCAxNzIsIDI0OCwgMjksIDEsIDI0OSwgMTM2LCAyNDgsIDI5LCAxLCAxNzgsIDI0OCwgCisgICAgMjksIDEsIDIyMSwgNDUsIDI0OCwgMjksIDEsIDIwNywgMzYsIDI0OCwgMjksIDEsIDI0MiwgNTgsIDI0OCwgMjksIDEsIAorICAgIDE4OCwgMjQ4LCAyOSwgMSwgMjE4LCAxOTYsIDI0OCwgMjksIDEsIDI0NywgMTkwLCAyNDgsIDI5LCAxLCAyMjcsIDI0OCwgCisgICAgMjQ4LCAyOSwgMSwgMjE4LCA2MCwgMjQ4LCAyOSwgMSwgMjE4LCA1MiwgMjQ4LCAyOSwgMSwgMTgzLCAyNDgsIDI5LCAxLCAKKyAgICAyMTMsIDI1MiwgMjQ4LCAyOSwgMSwgMTk0LCAyNDgsIDI5LCAxLCAyMDMsIDkwLCAyNDgsIDI5LCAxLCAyMTIsIDY0LCAyNDgsIAorICAgIDI5LCAxLCA2MiwgMjQ4LCAyOSwgMSwgMTQ0LCAyNDgsIDI5LCAyMiwgMiwgNzAsIDI0OCwgMjksIDIyLCAyLCA2NiwgMjQ4LCAKKyAgICAyOSwgMjIsIDIsIDcyLCAyNDgsIDI5LCAyMiwgMiwgNzQsIDI0OCwgMjksIDIyLCAyLCAyNTEsIDIyMSwgMjQ4LCAyOSwgCisgICAgMjE2LCAxNzgsIDI0OCwgMjksIDIzOCwgMTcxLCA3NiwgMjExLCAxOTIsIDQ2LCAxMDcsIDEsIDEyMiwgMTYxLCA0NiwgMTA3LCAKKyAgICAxLCAxMjIsIDIyNiwgMjA3LCA0NiwgMTA3LCAxLCAxMjIsIDIyNSwgMjE1LCA0NiwgMTA3LCAxLCAxMjgsIDE2MSwgNDYsIAorICAgIDEwNywgMSwgMTI4LCAyMjUsIDIxNSwgNDYsIDEwNywgMSwgMTI4LCAyMjYsIDIwNywgNDYsIDEwNywgMSwgMjE5LCAyNTMsIAorICAgIDQ2LCAxMDcsIDEsIDEyMiwgMjQ3LCAxOTAsIDQ2LCAxMDcsIDEsIDEyMiwgMjQ3LCAzNywgNDYsIDEwNywgMSwgMTI4LCAKKyAgICAyNDcsIDE5MCwgNDYsIDEwNywgMSwgMTI4LCAyMTIsIDY0LCA0NiwgMTA3LCAxLCAxMjgsIDI0NywgMzcsIDQ2LCAxMDcsIDEsIAorICAgIDIxOCwgNjAsIDQ2LCAxMDcsIDEsIDIxMywgMjAzLCA0NiwgMTA3LCAxLCAxMjIsIDIxMywgMjAxLCA0NiwgMTA3LCAxLCAKKyAgICAyNDIsIDU4LCA0NiwgMTA3LCAxLCAxMjgsIDIxMywgMjAxLCA0NiwgMTA3LCAxLCAyMTMsIDIxMiwgNDYsIDEwNywgMSwgCisgICAgMTIyLCAyMDcsIDM2LCA0NiwgMTA3LCAxLCAxMjIsIDIwNiwgMTIyLCA0NiwgMTA3LCAxLCAxMjgsIDIwNywgMzYsIDQ2LCAKKyAgICAxMDcsIDEsIDEyOCwgMjA2LCAxMjIsIDQ2LCAxMDcsIDEsIDE4OCwgNDYsIDEwNywgMSwgMjQ5LCAxMzYsIDQ2LCAxMDcsIDEsIAorICAgIDEyMiwgMTcyLCA0NiwgMTA3LCAxLCAxMjIsIDIxNSwgMjQ1LCA0NiwgMTA3LCAxLCAxMjIsIDIzNywgMTk1LCA0NiwgMTA3LCAKKyAgICAxLCAxMjgsIDE3MiwgNDYsIDEwNywgMSwgMTI4LCAyMzcsIDE5NSwgNDYsIDEwNywgMSwgMTI4LCAyMTUsIDI0NSwgNDYsIAorICAgIDEwNywgMSwgMTc4LCA0NiwgMTA3LCAxLCAxMjgsIDE4MywgNDYsIDEwNywgMSwgMTIyLCAxODMsIDQ2LCAxMDcsIDEsIDIxMywgCisgICAgMjUyLCA0NiwgMTA3LCAxLCAyMTIsIDE3MCwgNDYsIDEwNywgMSwgMTk0LCA0NiwgMTA3LCAxLCAyMjQsIDM1LCA0NiwgMTA3LCAKKyAgICAxLCAyMDEsIDExNCwgNDYsIDEwNywgMSwgMTIyLCAyMTAsIDExNCwgNDYsIDEwNywgMSwgMTIyLCAyMDgsIDE3OSwgNDYsIAorICAgIDEwNywgMSwgMTIyLCAyMTIsIDY0LCA0NiwgMTA3LCAxLCAxMjIsIDE0NCwgNDYsIDEwNywgMSwgMjI0LCAxMzgsIDQ2LCAKKyAgICAxMDcsIDEsIDYyLCA0NiwgMTA3LCAxLCAxMjgsIDE0NCwgNDYsIDEwNywgMSwgNzAsIDQ2LCAxMDcsIDEsIDIyOCwgMTUxLCAKKyAgICA0NiwgMTA3LCAxLCA2NiwgNDYsIDEwNywgMSwgMjAzLCAxODIsIDQ2LCAxMDcsIDEsIDIzOCwgMjU1LCA0NiwgMTA3LCAxLCAKKyAgICAyMTcsIDYzLCA0NiwgMTA3LCAxLCAyMjUsIDE2MCwgNDYsIDEwNywgMSwgMjM1LCA2OSwgMjEyLCA2NCwgNDYsIDEwNywgCisgICAgMTExLCAyLCAxNzksIDIxMywgMjUyLCA0NiwgMTA3LCAxMTEsIDIsIDE3OSwgMTk0LCA0NiwgMTA3LCAxMTEsIDIsIDIyNSwgCisgICAgMTc2LCAyMDYsIDI0MiwgMjI1LCAxNDksIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAyMjcsIDY1LCAyMjUsIDE0OSwgNDYsIAorICAgIDEwNywgMTExLCAyLCA0NywgMjE5LCAyNTMsIDQ2LCAxMDcsIDExMSwgMiwgMTI4LCAxNzIsIDQ2LCAxMDcsIDExMSwgMiwgCisgICAgMTIyLCAyMTMsIDIwMiwgMjE3LCAzNCwgMTI4LCAxNzIsIDQ2LCAxMDcsIDExMSwgMiwgMTc4LCA0NiwgMTA3LCAxMTEsIDIsIAorICAgIDI0OSwgMTM2LCA0NiwgMTA3LCAxMTEsIDIsIDIxMiwgNjQsIDQ2LCAxMDcsIDIsIDIxMiwgMzgsIDQ2LCAxMDcsIDIyLCAyLCAKKyAgICA2MiwgNDYsIDEwNywgMjIsIDIsIDIyMiwgMTk5LCAyMTEsIDI1MSwgNDYsIDEwNywgMjIsIDIsIDI1MiwgMTM4LCA0NiwgCisgICAgMTA3LCAyMiwgMiwgMjA2LCAyNDgsIDI1MiwgMTM4LCA0NiwgMTA3LCAyMiwgMiwgNzAsIDQ2LCAxMDcsIDIyLCAyLCAyMjgsIAorICAgIDE1MSwgNDYsIDEwNywgMjIsIDIsIDIwNCwgMzEsIDQ2LCAxMDcsIDIyLCAyLCAyMDMsIDE4MSwgNDYsIDEwNywgMjIsIDIsIAorICAgIDY2LCA0NiwgMTA3LCAyMiwgMiwgMjAzLCAxODIsIDQ2LCAxMDcsIDIyLCAyLCA3NCwgNDYsIDEwNywgMjIsIDIsIDIxNywgCisgICAgMTQ3LCA1NywgNDYsIDEwNywgMjIsIDIsIDIxNiwgMjMwLCA0NiwgMTA3LCAyMiwgMiwgNzIsIDQ2LCAxMDcsIDIyLCAyLCAKKyAgICAyNTEsIDIyMSwgNDYsIDEwNywgMjIsIDIsIDIxNywgNjMsIDQ2LCAxMDcsIDIyLCAyLCAyNTEsIDE3NiwgNDYsIDEwNywgMjIsIAorICAgIDIsIDEwNywgMjUxLCAxNzYsIDQ2LCAxMDcsIDIyLCAyLCAyMTcsIDE0NywgNTYsIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAKKyAgICAyMjcsIDY0LCA0NiwgMTA3LCAyLCAyMDUsIDE3MywgNDYsIDEwNywgMiwgMjA1LCAxNzIsIDQ2LCAxMDcsIDIsIDIyNiwgCisgICAgMTY4LCAyMDUsIDE3MSwgNDYsIDEwNywgMiwgMjI2LCAxNjgsIDIwNSwgMTcwLCA0NiwgMTA3LCAyLCAyMjYsIDE2OCwgMjA1LCAKKyAgICAxNjksIDQ2LCAxMDcsIDIsIDIxMywgMjUzLCAyMzQsIDIzMiwgNDYsIDEwNywgMiwgMjIyLCAxOTksIDIxMiwgMjMsIDQ2LCAKKyAgICAxMDcsIDIsIDIyNiwgMTY3LCAyMjcsIDQ2LCA0NiwgMTA3LCAzOCwgMjQyLCAyMTcsIDI0MCwgMTgyLCA0NiwgMTA3LCAyMzMsIAorICAgIDE3OSwgMTcsIDE5OSwgODEsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTAyLCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDEwNSwgCisgICAgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxNDcsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTQ5LCA0NiwgMTA3LCAyMzMsIAorICAgIDE3OSwgMTcsIDE2NCwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxODcsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMjEwLCAKKyAgICAxMzUsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTkyLCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDIxOSwgMTEzLCA0NiwgCisgICAgMTA3LCAxMDcsIDE3LCAxOTksIDgxLCA0NiwgMTA3LCAxMDcsIDE3LCAxMDIsIDQ2LCAxMDcsIDEwNywgMTcsIDEwNSwgNDYsIAorICAgIDEwNywgMTA3LCAxNywgMTQ3LCA0NiwgMTA3LCAxMDcsIDE3LCAxNDksIDQ2LCAxMDcsIDEwNywgMTcsIDE2NCwgNDYsIDEwNywgCisgICAgMTA3LCAxNywgMTg3LCA0NiwgMTA3LCAxMDcsIDE3LCAyMTAsIDEzNSwgNDYsIDEwNywgMTA3LCAxNywgMTkyLCA0NiwgMTA3LCAKKyAgICAxMDcsIDE3LCAyMTksIDExMywgNDYsIDEwNywgMiwgMjAxLCAzMCwgNDYsIDEwNywgMiwgMjAxLCAyOSwgNDYsIDEwNywgMiwgCisgICAgMjExLCAyMzgsIDQ2LCAxMDcsIDIsIDIyNiwgMjM4LCA0NiwgMTA3LCAyLCAyMzMsIDEwNywgNDYsIDEwNywgMiwgMjQwLCAKKyAgICAxOTYsIDQ2LCAxMDcsIDIsIDIxMywgMTA1LCAyMTIsIDIyOCwgMjEzLCAyMTIsIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAyMDAsIAorICAgIDc4LCA0NiwgMTA3LCAyLCAyMjcsIDk5LCA0NiwgMTA3LCAyLCAyMjcsIDk4LCA0NiwgMTA3LCAyLCAyMTEsIDI0NiwgNDYsIAorICAgIDEwNywgMiwgMjExLCAyNDUsIDQ2LCAxMDcsIDIsIDIzNCwgMTcyLCA0NiwgMTA3LCAyLCAyNDcsIDE4NywgMzgsIDIzOSwgCisgICAgMTcyLCAyNDYsIDE0NywgMjUxLCAyNTEsIDM4LCAyNDEsIDczLCAzOCwgMjI4LCA5NCwgMzgsIDE5MSwgNDgsIDM4LCAyMDUsIAorICAgIDgzLCAyNDAsIDE4MiwgMzgsIDIwMCwgMTk0LCA1NywgMzgsIDIwMSwgMjIsIDIyNCwgMTc3LCA1NywgMzgsIDE3NiwgMTM0LCAKKyAgICA1NywgMzgsIDUzLCAxNzYsIDEzNCwgNTcsIDM4LCAxNjIsIDI0NywgNTcsIDIwOCwgNDcsIDU3LCAzOCwgMjA4LCAzMywgCisgICAgMjQ3LCA1NywgMjA4LCA0NywgNTcsIDM4LCAyMTYsIDExNywgNTYsIDM4LCA1MywgMjE2LCAxMTcsIDU2LCAzOCwgMjE2LCAKKyAgICAxMTcsIDU3LCAzOCwgMjE2LCAxMTcsIDIxNiwgMjQyLCAxMzMsIDIsIDIwNCwgMTUsIDIxMywgODIsIDEzMywgMiwgMjA0LCAKKyAgICAxNSwgMjQ3LCAxNTEsIDEzMywgMiwgMjQ3LCA3MiwgMTMzLCAyLCAyMDcsIDIwNSwgMTMzLCAyLCAyNDgsIDE1NywgMTMzLCAKKyAgICAxLCAyNTEsIDE1NywgMTMzLCAxLCAyNTEsIDE1OCwgMjA2LCAxOTIsIDEzMywgMSwgMjI4LCAxNDcsIDEzMywgMSwgMjI4LCAKKyAgICAxNDgsIDIwNiwgMTkyLCAxMzMsIDEsIDIwNCwgMTgsIDEzMywgMSwgMjA0LCAxOSwgMjA2LCAxOTIsIDEzMywgMSwgMjEzLCAKKyAgICAyNTMsIDIxMywgMTM1LCAxMzMsIDEsIDIxMywgMjUzLCAyMTMsIDEzNiwgMjA2LCAxOTIsIDEzMywgMSwgMjI1LCAxNzYsIAorICAgIDIyNSwgMywgMTMzLCAxLCAyMjUsIDE3NiwgMjI1LCA0LCAyMDYsIDE5MiwgMTMzLCAxLCAyMzgsIDIxNCwgMTMzLCAxLCAKKyAgICAyNTEsIDE3NCwgMTMzLCAxLCAyMTcsIDk2LCAxMzMsIDEsIDIxNywgOTcsIDIwNiwgMTkyLCAxMzMsIDEsIDE2MSwgMTMzLCAKKyAgICAxLCAyMjcsIDEwOCwgMjIyLCAyMDIsIDEzMywgMSwgMjM2LCA4OSwgMTMzLCAxLCAyMzYsIDkwLCAyMzUsIDEwMiwgMTMzLCAKKyAgICAxLCAyMTksIDI1MywgMTMzLCAxLCAyNDcsIDE5MCwgMTMzLCAxLCAyNDcsIDE5MSwgMjI1LCAxNjMsIDEzMywgMSwgMjI3LCAKKyAgICAyNDgsIDEzMywgMSwgMjI3LCAyNDksIDIyNywgMjE5LCAxMzMsIDEsIDIxOCwgNjAsIDEzMywgMSwgMjA3LCAzNywgMjI1LCAKKyAgICA2MCwgMTMzLCAxLCAyMDcsIDM3LCAyMjEsIDEsIDIyMiwgMjAyLCAxMzMsIDEsIDI0MiwgNTksIDIyMSwgMSwgMjUxLCAxMTQsIAorICAgIDEzMywgMSwgMjQyLCA1OSwgMjIxLCAxLCAyMjIsIDIwMiwgMTMzLCAxLCAyMjAsIDE2MiwgMjEzLCAyMTUsIDEzMywgMSwgCisgICAgMjA3LCAzNiwgMTMzLCAxLCAyMDcsIDM3LCAyMDYsIDIxNCwgMTMzLCAxLCAyNDIsIDU4LCAxMzMsIDEsIDI0MiwgNTksIAorICAgIDIyMiwgMjIxLCAxMzMsIDEsIDE4OCwgMTMzLCAxLCAxNzIsIDEzMywgMSwgMjE2LCAyMTEsIDIyNywgNTgsIDEzMywgMSwgCisgICAgMjQ5LCAxMzYsIDEzMywgMSwgMjQ5LCAxMzcsIDIyNiwgMjUwLCAxMzMsIDEsIDE3OCwgMTMzLCAxLCAxODMsIDEzMywgMSwgCisgICAgMjEzLCAyNTIsIDEzMywgMSwgMTk0LCAxMzMsIDEsIDIwMSwgMTE0LCAxMzMsIDEsIDIxMiwgNjUsIDIxMiwgNDksIDEzMywgCisgICAgMSwgMjEyLCA2NSwgMjEyLCAyLCAxMzMsIDEsIDIxMiwgNjQsIDEzMywgMSwgMTQ0LCAxMzMsIDIsIDIxMywgMTI2LCAxMzMsIAorICAgIDIyLCAyLCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjA0LCAxNCwgMTMzLCAyMiwgMiwgMjA0LCAxNSwgMjExLCAyNTQsIDEzMywgCisgICAgMjIsIDIsIDIwNywgMjM4LCAxMzMsIDIyLCAyLCAyMDcsIDIzOSwgMjI4LCAxMzksIDEzMywgMjIsIDIsIDIxMywgMjUzLCAKKyAgICAyMTMsIDEzNSwgMTMzLCAyMiwgMiwgMjEzLCAyNTMsIDIxMywgMTM2LCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjI1LCAxNzYsIAorICAgIDIyNSwgMywgMTMzLCAyMiwgMiwgMjI1LCAxNzYsIDIyNSwgNCwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIwNiwgMjQ5LCAKKyAgICAxMzMsIDIyLCAyLCAyMDYsIDI1MCwgMjEzLCAxMzUsIDEzMywgMjIsIDIsIDIwNiwgMjUwLCAyMDYsIDE5MiwgMTMzLCAyMiwgCisgICAgMiwgMjA2LCAyNTAsIDIxMywgMTM2LCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjE2LCAzMCwgMTMzLCAyMiwgMiwgMjE2LCAKKyAgICAzMSwgMjA2LCAxOTIsIDEzMywgMjUxLCAyMzAsIDI1MSwgMjI5LCAxMzMsIDEsIDIyNywgODcsIDIxMSwgMjUzLCAxMzMsIDEsIAorICAgIDIyNiwgMTc0LCAyMTEsIDI1MywgMTMzLCAxLCAyMDQsIDEwOCwgMjExLCAyNTMsIDEzMywgMSwgMjM4LCAyNDksIDIxMSwgCisgICAgMjUzLCAxMzMsIDEsIDIwMywgNjAsIDIxMSwgMjUzLCAxMzMsIDEsIDE5OSwgMTA0LCAyMTEsIDI1MywgMTMzLCAxLCAyNTAsIAorICAgIDE1OCwgMjExLCAyNTMsIDEzMywgMTcsIDE5OSwgODEsIDEzMywgMTcsIDEwMiwgMTMzLCAxNywgMTA1LCAxMzMsIDE3LCAKKyAgICAxNDcsIDEzMywgMTcsIDE0OSwgMTMzLCAxNywgMTY0LCAxMzMsIDE3LCAxODcsIDEzMywgMTcsIDIxMCwgMTM1LCAxMzMsIAorICAgIDE3LCAxOTIsIDEzMywgMTcsIDIxOSwgMTEzLCAxMzMsIDIxNiwgMTQzLCAxMzMsIDIxNiwgMTcxLCAxMzMsIDIwMSwgMTQsIAorICAgIDEzMywgMjQ3LCAxMjcsIDIxNiwgMTY0LCAxMzMsIDI0NywgMTI3LCAyMDksIDE1OCwgMTMzLCAyNDcsIDEyNywgMjE2LCAKKyAgICAxMTQsIDEzMywgMjE2LCAxNzAsIDEzMywgMzIsIDE2LCAyNDAsIDE4OCwgMTMzLCAzMiwgMTYsIDI0MSwgMTMzLCAxMzMsIAorICAgIDMyLCAxNiwgMjM5LCAxMjEsIDEzMywgMzIsIDE2LCAyNDIsIDgsIDEzMywgMzIsIDE2LCAyNDIsIDksIDIwNywgMjA1LCAKKyAgICAxMzMsIDMyLCAxNiwgMjQxLCAxOCwgMTMzLCAzMiwgMTYsIDI0MiwgNTAsIDEzMywgMzIsIDE2LCAyNDEsIDEwOSwgMTMzLCAKKyAgICAzMiwgMTYsIDI0MiwgMzIsIDEzMywgMzIsIDE2LCAyNDIsIDksIDIzNiwgOSwgMTMzLCAzMiwgMTYsIDM4LCAyMDYsIDE4NSwgCisgICAgMTMzLCAzMiwgMTYsIDM4LCAyMzgsIDE2OSwgMTMzLCAzMiwgMTYsIDM4LCAyMjYsIDI0NSwgMTMzLCAzMiwgMTYsIDM4LCAKKyAgICAyMjYsIDI0NywgMTMzLCAzMiwgMTYsIDM4LCAyMjcsIDIyMywgMTMzLCAzMiwgMTYsIDM4LCAyMjYsIDI0NiwgMywgMjI3LCAKKyAgICAyMjMsIDEzMywgMzIsIDE2LCAzOCwgMjI2LCAyNDgsIDMsIDIyNywgMjIzLCAxMzMsIDMyLCAxNiwgMzgsIDI0OCwgMjIxLCAKKyAgICAxMzMsIDMyLCAxNiwgMzgsIDIzNSwgMTA2LCAxMzMsIDMyLCAxNiwgMjEzLCA0NCwgMTc2LCAyMzksIDEzMSwgMTMzLCAzMiwgCisgICAgMTYsIDIxMywgNDQsIDE3NiwgMjQyLCA0OCwgMTMzLCAzMiwgMTYsIDIxMywgNDQsIDI0NiwgMTEwLCAyMDQsIDIwNywgMTMzLCAKKyAgICAzMiwgMTYsIDIxMywgNDQsIDI0NiwgMTEwLCAyMDcsIDIsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAxNzYsIDIxNiwgMTU3LCAKKyAgICAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMTc2LCAyMTQsIDIxMCwgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDI0NiwgMTEwLCAyMTUsIAorICAgIDEzMSwgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDI0NiwgMTEwLCAyMTUsIDExNywgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDE3NiwgCisgICAgMjE1LCAxNTYsIDIwNywgMjI3LCAyLCAyMTYsIDE0MCwgMjA3LCAyMjcsIDIsIDIxNiwgMTUzLCAyMDcsIDIyNywgMiwgMjE2LCAKKyAgICAxNDksIDIwNywgMjI3LCAxLCA2MiwgMjA3LCAyMjcsIDEsIDcwLCAyMDcsIDIyNywgMSwgNjYsIDIwNywgMjI3LCAxLCAyNTEsIAorICAgIDIyMSwgMjA3LCAyMjcsIDEsIDc0LCAyMDcsIDIyNywgMSwgNzIsIDIwNywgMjI3LCAxLCAyMzgsIDY5LCAyMDcsIDIyNywgMSwgCisgICAgMTYxLCAyMDcsIDIyNywgMSwgMjE0LCAxNTksIDIwNywgMjI3LCAxLCAyMzYsIDg5LCAyMDcsIDIyNywgMSwgMjE5LCAyNTMsIAorICAgIDIwNywgMjI3LCAxLCAyNDcsIDE5MCwgMjA3LCAyMjcsIDEsIDIyNywgMjQ4LCAyMDcsIDIyNywgMSwgMTk5LCAxMTQsIDIwNywgCisgICAgMjI3LCAxLCAyMTgsIDYwLCAyMDcsIDIyNywgMSwgMjA3LCAzNiwgMjA3LCAyMjcsIDEsIDI0MiwgNTgsIDIwNywgMjI3LCAxLCAKKyAgICAxODgsIDIwNywgMjI3LCAxLCAxNzIsIDIwNywgMjI3LCAxLCAyMzcsIDE5NSwgMjA3LCAyMjcsIDEsIDIwMywgOTAsIDIwNywgCisgICAgMjI3LCAxLCAyNDksIDEzNiwgMjA3LCAyMjcsIDEsIDE3OCwgMjA3LCAyMjcsIDEsIDE4MywgMjA3LCAyMjcsIDEsIDIxMywgCisgICAgMjUyLCAyMDcsIDIyNywgMSwgMTk0LCAyMDcsIDIyNywgMSwgMjAxLCAxMTQsIDIwNywgMjI3LCAxLCAyMTIsIDY0LCAyMDcsIAorICAgIDIyNywgMSwgMjAwLCAxODEsIDIwNywgMjI3LCAxLCAxNDQsIDIwNywgMjI3LCAxMTEsIDIsIDIxNiwgMTY4LCAyMDcsIDIyNywgCisgICAgMTExLCAyLCAyMTYsIDE0MiwgMjA3LCAyMjcsIDExMSwgMiwgMjE2LCAxMzksIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNTYsIAorICAgIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxMzgsIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNjEsIDIwNywgMjI3LCAyMiwgMiwgCisgICAgMjE2LCAxNDgsIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNjksIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNTgsIDIwNywgMjI3LCAKKyAgICAyLCAyMTYsIDE3MiwgMjA3LCAyMjcsIDIsIDIwMiwgMjA4LCAyMDcsIDIyNywgMTExLCAyLCAyMTYsIDEwMywgMTc4LCAyMDcsIAorICAgIDIyNywgMTExLCAyLCAyMTYsIDEwMywgMjAxLCAxMTQsIDIwNywgMjI3LCAxLCAyMjYsIDIwNywgMjA3LCAyMjcsIDEsIDIwNywgCisgICAgMTY0LCAyMDcsIDIyNywgMTcsIDE5OSwgODEsIDIwNywgMjI3LCAxNywgMTAyLCAyMDcsIDIyNywgMTcsIDEwNSwgMjA3LCAKKyAgICAyMjcsIDE3LCAxNDcsIDIwNywgMjI3LCAxNywgMTQ5LCAyMDcsIDIyNywgMTcsIDE2NCwgMjA3LCAyMjcsIDE3LCAxODcsIAorICAgIDIwNywgMjI3LCAxNywgMjEwLCAxMzUsIDIwNywgMjI3LCAxNywgMTkyLCAyMDcsIDIyNywgMTcsIDIxOSwgMTEzLCAyMDcsIAorICAgIDIyNywgMjUwLCAxMjIsIDIwNywgMjI3LCAxLCAyMTMsIDEwOCwgMjA3LCAyMjcsIDEsIDIyNCwgMjMzLCAyMDcsIDIyNywgMSwgCisgICAgMjQ4LCAyMDAsIDIwNywgMjI3LCAxLCA0NywgMjI3LCAxMTgsIDIwNywgMjI3LCAxLCA0NywgMjIzLCAyNDMsIDI0OSwgNTQsIAorICAgIDEsIDYyLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgNjIsIDI0OSwgNTQsIDEsIDE0NCwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIAorICAgIDE0NCwgMjQ5LCA1NCwgMSwgMjIyLCAxNzUsIDE0NCwgMjQ5LCA1NCwgMSwgMjQ5LCAxMzYsIDI0OSwgNTQsIDEsIDIyNywgCisgICAgNDMsIDI0OSwgMTM2LCAyNDksIDU0LCAxLCAxNzIsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAxNzIsIDI0OSwgNTQsIDEsIAorICAgIDE4OCwgMjQ5LCA1NCwgMSwgMjIyLCAxNzUsIDE4OCwgMjQ5LCA1NCwgMSwgMjAxLCAxMTQsIDI0OSwgNTQsIDEsIDIwOSwgCisgICAgMTUwLCAyMDEsIDExNCwgMjQ5LCA1NCwgMSwgMjE2LCAxODUsIDIwMSwgMTE0LCAyNDksIDU0LCAxLCAyMzYsIDg5LCAyNDksIAorICAgIDU0LCAxLCAyMDksIDE1MCwgMjM2LCA4OSwgMjQ5LCA1NCwgMSwgMjI3LCAyNDgsIDI0OSwgNTQsIDEsIDI0MiwgNTgsIDI0OSwgCisgICAgNTQsIDEsIDIxMywgMjUyLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMjEzLCAyNTIsIDI0OSwgNTQsIDEsIDE3OCwgMjQ5LCAKKyAgICA1NCwgMSwgMjA5LCAxNTAsIDE3OCwgMjQ5LCA1NCwgMSwgMjA4LCAyNTIsIDIwNywgMzYsIDI0OSwgNTQsIDEsIDIxOCwgCisgICAgMjE5LCAyMDcsIDM2LCAyNDksIDU0LCAxLCAyMTIsIDY0LCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMjEyLCA2NCwgMjQ5LCAKKyAgICA1NCwgMSwgMjIyLCAxNzUsIDIxMiwgNjQsIDI0OSwgNTQsIDEsIDE4MywgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDE4MywgCisgICAgMjQ5LCA1NCwgMSwgMjE5LCAyNTMsIDI0OSwgNTQsIDEsIDE5NCwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDE5NCwgMjQ5LCAKKyAgICA1NCwgMSwgMjE4LCA2MCwgMjQ5LCA1NCwgMSwgMjQ3LCAxOTAsIDI0OSwgNTQsIDEsIDIyMCwgNzUsIDI0OSwgNTQsIDEsIAorICAgIDIyMiwgMTEwLCAyNDksIDU0LCAxLCA3MCwgMjQ5LCA1NCwgMSwgNjYsIDI0OSwgNTQsIDIsIDIwNSwgMTc3LCAyNDksIDU0LCAKKyAgICAyMiwgMiwgNzIsIDI0OSwgNTQsIDIyLCAyLCAyMTYsIDE4NSwgNzIsIDI0OSwgNTQsIDIyLCAyLCAyMzgsIDI1NSwgMjQ5LCAKKyAgICA1NCwgMjIsIDIsIDcwLCAyNDksIDU0LCAyMiwgMiwgMjI3LCA0MywgNzAsIDI0OSwgNTQsIDIyLCAyLCA3NCwgMjQ5LCA1NCwgCisgICAgMjIsIDIsIDIyNywgNDMsIDc0LCAyNDksIDU0LCAyMiwgMiwgNjYsIDI0OSwgNTQsIDIyLCAyLCAxMDgsIDM2LCAyMDksIAorICAgIDE1MCwgMjEyLCA2NCwgMjQ5LCA1NCwgMTExLCAyLCAyMTksIDI1NSwgMjQ5LCA1NCwgMTExLCAyLCAyMzQsIDI0NywgMjQ5LCAKKyAgICA1NCwgMjE2LCAxNTEsIDI0OSwgNTQsIDIxNiwgMTQ3LCAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIyMCwgMTYyLCAyMjIsIAorICAgIDE4LCAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIxNSwgMTU5LCAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIyNywgMTQ0LCAKKyAgICAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIxNiwgMTUxLCAyMjQsIDI0MywgMSwgMTYxLCAyMjQsIDI0MywgMSwgMjI2LCAxMDIsIAorICAgIDIyNCwgMjQzLCAxLCAyMjYsIDIwNywgMjI0LCAyNDMsIDEsIDIzNiwgODksIDIyNCwgMjQzLCAxLCAyMzUsIDEzMSwgMjI0LCAKKyAgICAyNDMsIDEsIDIxOSwgMjUzLCAyMjQsIDI0MywgMSwgMjQ3LCAxOTAsIDIyNCwgMjQzLCAxLCAyNDcsIDM3LCAyMjQsIDI0MywgCisgICAgMSwgMjI3LCAyNDgsIDIyNCwgMjQzLCAxLCAyMTgsIDYwLCAyMjQsIDI0MywgMSwgMjA3LCAzNiwgMjI0LCAyNDMsIDEsIAorICAgIDIwNiwgMTIyLCAyMjQsIDI0MywgMSwgMjQyLCA1OCwgMjI0LCAyNDMsIDEsIDE4OCwgMjI0LCAyNDMsIDEsIDE3MiwgMjI0LCAKKyAgICAyNDMsIDEsIDIxNSwgMTM1LCAyMjQsIDI0MywgMSwgMjE1LCAyNDUsIDIyNCwgMjQzLCAxLCAyMzcsIDE5NSwgMjI0LCAyNDMsIAorICAgIDEsIDIzNywgNTUsIDIyNCwgMjQzLCAxLCAyNDksIDEzNiwgMjI0LCAyNDMsIDEsIDI0OCwgMTQ1LCAyMjQsIDI0MywgMSwgCisgICAgMTc4LCAyMjQsIDI0MywgMSwgMjIxLCAxNDMsIDIyNCwgMjQzLCAxLCAyMDUsIDMyLCAyMjQsIDI0MywgMSwgMjA1LCAyMiwgCisgICAgMjI0LCAyNDMsIDEsIDIzOSwgOTMsIDIyNCwgMjQzLCAxLCAxODMsIDIyNCwgMjQzLCAxLCAyMTMsIDI1MiwgMjI0LCAyNDMsIAorICAgIDEsIDE5NCwgMjI0LCAyNDMsIDEsIDE0NCwgMjI0LCAyNDMsIDEsIDIzNCwgMzksIDIyNCwgMjQzLCAxLCAyMDMsIDkwLCAKKyAgICAyMjQsIDI0MywgMSwgMjEyLCA2NCwgMjI0LCAyNDMsIDEsIDIxMCwgMTE0LCAyMjQsIDI0MywgMSwgMjAxLCAxMTQsIDIyNCwgCisgICAgMjQzLCAxLCA2MiwgMjI0LCAyNDMsIDIwOCwgMTIsIDEsIDE4MywgMjI0LCAyNDMsIDIwOCwgMTIsIDEsIDIxMywgMjUyLCAKKyAgICAyMjQsIDI0MywgMjIsIDIsIDI1MiwgMTM4LCAyMjQsIDI0MywgMjIsIDIsIDcwLCAyMjQsIDI0MywgMjIsIDIsIDc0LCAyMjQsIAorICAgIDI0MywgMjIsIDIsIDIxNywgNjMsIDIyNCwgMjQzLCAyMiwgMiwgNjYsIDIyNCwgMjQzLCAyMiwgMiwgMjAzLCAxODIsIDIyNCwgCisgICAgMjQzLCAyMiwgMiwgNzIsIDIyNCwgMjQzLCAxMTEsIDIsIDIyNywgMTE4LCAyMjQsIDI0MywgMTExLCAyLCAyMjMsIDI0MywgCisgICAgMjI0LCAyNDMsIDExMSwgMiwgMTU2LCAyMjQsIDI0MywgMTExLCAyLCAyMjAsIDIxNCwgMjI0LCAyNDMsIDExMSwgMiwgMjE2LCAKKyAgICAyMjYsIDIyNCwgMjQzLCAxMTEsIDIsIDE0NiwgMjI0LCAyNDMsIDExMSwgMiwgMjA3LCA4MywgMjI0LCAyNDMsIDExMSwgMiwgCisgICAgMjE4LCAzNCwgMjI0LCAyNDMsIDExMSwgMiwgMjI3LCA2NCwgMjI0LCAyNDMsIDIsIDIxMywgMjEzLCAyMjQsIDI0MywgMiwgCisgICAgMjE4LCAxMDAsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjA3LCAzNCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMTgsIDQ1LCAyMDYsIAorICAgIDE4LCAyMDcsIDM0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDI0NywgNDQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjA1LCAxNCwgCisgICAgMjQ3LCA0NCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMDUsIDEzLCAyMjQsIDI0MywgMTcsIDE5OSwgODEsIDIyNCwgMjQzLCAKKyAgICAxNywgMTAyLCAyMjQsIDI0MywgMTcsIDEwNSwgMjI0LCAyNDMsIDE3LCAxNDcsIDIyNCwgMjQzLCAxNywgMTQ5LCAyMjQsIAorICAgIDI0MywgMTcsIDE2NCwgMjI0LCAyNDMsIDE3LCAxODcsIDIyNCwgMjQzLCAxNywgMjEwLCAxMzUsIDIyNCwgMjQzLCAxNywgCisgICAgMTkyLCAyMjQsIDI0MywgMTcsIDIxOSwgMTEzLCAyMjQsIDI0MywgMSwgMjA0LCAyNTMsIDIyNCwgMjQzLCAxLCAyMDQsIAorICAgIDI0MSwgMjI0LCAyNDMsIDEsIDI0MSwgMjIwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE5OSwgODEsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxNywgMTAyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDEwNSwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxNDcsIAorICAgIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTQ5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE2NCwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDE3LCAxODcsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMjEwLCAxMzUsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgCisgICAgMTkyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDIxOSwgMTEzLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMTk0LCAyMTcsIDk0LCAKKyAgICAyNDYsIDIyOSwgMSwgMjUwLCAxNTUsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTEsIDE5MywgMjE3LCA5NCwgMjQ2LCAyMjksIAorICAgIDEsIDI1MSwgNzYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTEsIDE1MSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNSwgCisgICAgMTc1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCAxMDAsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDEwMSwgMjE3LCAKKyAgICA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgOTksIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDk0LCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMSwgMjI0LCAyMTAsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjgsIDI2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgCisgICAgMjI4LCAxNTIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjgsIDQ3LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI4LCAzNSwgCisgICAgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNCwgNDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMDQsIDM4LCAyMTcsIDk0LCAKKyAgICAyNDYsIDIyOSwgMSwgMjA0LCAzNiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIwMywgMjMzLCAyMTcsIDk0LCAyNDYsIDIyOSwgCisgICAgMSwgMjAzLCAxNzQsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjUsIDQwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjM4LCAKKyAgICAxMzMsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMzksIDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMzgsIDE3OSwgMjE3LCAKKyAgICA5NCwgMjQ2LCAyMjksIDEsIDIzOCwgMTA4LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI0LCAxMTAsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxLCAyMTcsIDYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMTcsIDE0MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIAorICAgIDIxNiwgMjQ5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjE3LCAxMDgsIDIxNywgOTQsIDI0NiwgMjI5LCAyMjEsIDQyLCAKKyAgICAyMDQsIDIxOCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIzNiwgODQsIDIwNCwgMjE5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjIxLCAKKyAgICA0MCwgMjA0LCAyMTksIDIxNywgOTQsIDI0NiwgMjI5LCAyMTMsIDE1MCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIxNSwgMjQzLCAKKyAgICAyMTcsIDk0LCAyNDYsIDIyOSwgMjUxLCAxODQsIDIxNywgOTQsIDI0NiwgMjI5LCAyMTQsIDIxMiwgMjIxLCAzNiwgMjE3LCAKKyAgICA5NCwgMjQ2LCAyMjksIDIxNCwgMjEyLCA1MywgMjIxLCAzNiwgMzcsIDQsIDEsIDIxMiwgMjE5LCAyMDMsIDU5LCAzNywgNCwgCisgICAgMSwgMjI0LCA4MiwgMjQxLCAxNzUsIDM3LCA0LCAxLCAyMjAsIDEyNCwgNzQsIDM3LCA0LCAxLCAyMDEsIDI4LCAyMzgsIAorICAgIDEwNCwgMzcsIDQsIDEsIDIwNiwgMjQ4LCAyMDYsIDIwMSwgMzcsIDQsIDEsIDIwNiwgNDMsIDIwNiwgMjAxLCAzNywgNCwgMSwgCisgICAgMjA2LCAyNDgsIDIzNCwgMTY1LCA1NCwgMzcsIDQsIDEsIDIwNiwgMjQ4LCAyMDAsIDY1LCAzNywgNCwgMSwgMjA0LCAwLCAKKyAgICAyMDQsIDIwLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMDcsIDE5OCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIAorICAgIDE2NiwgMjE2LCAxNTIsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIxNCwgMjAwLCAyMDcsIDIyNywgMjE0LCAKKyAgICAyMTIsIDI0OCwgMTY2LCAyNDcsIDE3NSwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjI0LCAyMzQsIDIxMSwgCisgICAgMjUwLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMjcsIDEwOCwgMjExLCAyNTAsIDIwNywgMjI3LCAyMTQsIAorICAgIDIxMiwgMjQ4LCAxNjYsIDI0MiwgNTksIDIxMSwgMjUwLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyNDksIDEzNywgCisgICAgMjExLCAyNTAsIDIwMywgNTYsIDE1MCwgMjI3LCA0MSwgMjAzLCA1NiwgMTUwLCAyMTAsIDgxLCAyMDMsIDU2LCAxNTAsIAorICAgIDIxNSwgMjMsIDIwMywgNTYsIDIsIDIxOSwgMTI2LCAyMDMsIDU2LCAyLCAyMDAsIDg2LCAyMjEsIDIwMiwgMjA3LCAxODksIAorICAgIDIwMywgNTYsIDE1MCwgMjAwLCA4NiwgMjUxLCAxODksIDIyOCwgMTA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMDAsIAorICAgIDg2LCAyMjgsIDEwNCwgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjAwLCA4NiwgMjI3LCAyOSwgMjI4LCAxMDQsIDIwNywgCisgICAgMTg5LCAyMDMsIDU2LCAxNTAsIDI0NywgMTUyLCA1NywgMjAzLCA1NiwgMTUwLCAyMDAsIDg2LCAyMjcsIDI5LCAyMjgsIAorICAgIDEwNCwgMjA3LCAxOTAsIDIxMSwgMjIwLCAyMDMsIDU2LCAxNTAsIDUzLCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMDUsIAorICAgIDgzLCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMjcsIDI5LCAyNTEsIDM1LCAyMDMsIDU2LCAxNTAsIDczLCA1NywgMjAzLCAKKyAgICA1NiwgMTUwLCAxMjAsIDE5MCwgNTcsIDIwMywgNTYsIDE1MCwgMTI2LCAxOTAsIDU3LCAyMDMsIDU2LCAxNTAsIDIxMywgMzQsIAorICAgIDIyNywgNDAsIDIyOCwgMTA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyNTAsIDE1MiwgMjI4LCAxMDQsIDIwNywgMTg5LCAKKyAgICAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjA3LCAxODksIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyMDQsIDMzLCAyMDMsIDU2LCAKKyAgICAyLCAyMTMsIDEwNSwgMjAyLCAyMDQsIDIwNCwgMzMsIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyNTEsIDM1LCAyMDMsIDU2LCAKKyAgICAyLCAyMTMsIDEwNSwgMjAyLCAyMDQsIDI1MSwgMzUsIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyMDQsIDM0LCAzLCAyMDcsIDYsIAorICAgIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyNTEsIDM2LCAzLCAyMDcsIDYsIDIwMywgNTYsIDIsIDI1MSwgMzQsIDI1MSwgNTAsIAorICAgIDIwMywgNTYsIDIsIDI1MSwgMzQsIDI0OSwgMTA0LCAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyMDMsIDgxLCAyMDMsIDU2LCAyLCAKKyAgICAyNTEsIDM0LCAyMDMsIDgyLCAzLCAyMDcsIDYsIDIwMywgNTYsIDIsIDIwNSwgMjE0LCAyMDMsIDU2LCAyLCAyMzQsIDg3LCAKKyAgICAxNjgsIDI1MSwgMzMsIDIwMywgNTYsIDIsIDE2OCwgMjUxLCAzMywgMjAzLCA1NiwgMiwgMjEyLCAxNzcsIDE2OCwgMjUxLCAKKyAgICAzMywgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjA0LCA0MCwgMjIxLCAyNywgMjAzLCA1NiwgMiwgMjUwLCAyMzAsIDIwMywgNTYsIAorICAgIDIsIDIxMiwgMjI4LCAyNTAsIDIzMCwgMjAzLCA1NiwgMTUwLCAyNDcsIDE1MiwgNTYsIDIwMywgNTYsIDIsIDIyNywgMjAxLCAKKyAgICAyMDMsIDU2LCAyLCAyMDMsIDIyNiwgMjAzLCA1NiwgMTUwLCAyMTMsIDI3LCA1NiwgMjAzLCA1NiwgMTUwLCA1MywgMjEzLCAKKyAgICAyNywgNTYsIDgsIDEsIDQsIDYsIDYyLCA4LCAxLCA0LCA2LCAyNTEsIDIyMSwgOCwgNCwgMSwgMjA0LCAxODUsIDI1MSwgCisgICAgMjIxLCA4LCAxLCA0LCA2LCAyNDksIDcxLCAyNTAsIDEwMywgOCwgMSwgNCwgNiwgMjQ3LCAyMjMsIDgsIDEsIDQsIDYsIAorICAgIDI0MiwgMTUzLCA4LCAxLCA0LCA2LCAyMzgsIDc0LCA4LCAxLCA0LCA2LCA3MiwgOCwgNCwgMSwgMjA0LCAxODUsIDE3NiwgCisgICAgNzIsIDgsIDQsIDEsIDIwNCwgMTg1LCA3MCwgOCwgMSwgNCwgNiwgMjI3LCAyNTEsIDgsIDEsIDQsIDYsIDIyNywgMTE4LCA4LCAKKyAgICAxLCA0LCA2LCAyMjUsIDE5MywgMywgOTcsIDgsIDEsIDQsIDYsIDIyMywgMjQzLCA4LCAxLCA0LCA2LCAyMTMsIDEwNSwgCisgICAgMjIwLCAyMTQsIDgsIDEsIDQsIDYsIDc0LCA4LCAxLCA0LCA2LCAxNzYsIDc0LCA4LCA0LCAxLCAyMDksIDE3MywgNzQsIDgsIAorICAgIDQsIDEsIDIwOSwgMTczLCAxNzYsIDc0LCA4LCA0LCAxLCAyMDksIDE3MywgMTYzLCAzLCA5NywgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDIxNywgMTIxLCA4LCAxLCA0LCA2LCAyMTcsIDMsIDgsIDQsIDEsIDIwNSwgMTU4LCAxNjcsIDc0LCA4LCA0LCAxLCAKKyAgICAyNDgsIDkzLCAxNjcsIDc0LCA4LCAxLCA0LCA2LCAyMTYsIDIyNiwgOCwgMSwgNCwgNiwgMjEzLCAxMDUsIDE0NiwgOCwgMSwgCisgICAgNCwgNiwgMjA0LCAxODUsIDE0NiwgOCwgMSwgNCwgNiwgMjA3LCA4MywgOCwgMSwgNCwgNiwgNjYsIDgsIDQsIDEsIDIwOSwgCisgICAgMTczLCA2NiwgOCwgNCwgMSwgMjA5LCAxNzMsIDI0MSwgNzIsIDY2LCA4LCA0LCAxLCAyMDksIDE3MywgMjA0LCAxODUsIAorICAgIDIyMywgMjQzLCA4LCAxLCA0LCA2LCAyMDMsIDE2OCwgOCwgMSwgNCwgNiwgMjAxLCAxNDcsIDgsIDEsIDQsIDYsIDE5OSwgCisgICAgMTU3LCA4LCAxLCA0LCA2LCAyMzgsIDgsIDgsIDEsIDIwMiwgMTg5LCAyMjUsIDY2LCAyMDgsIDIxNiwgOCwgMSwgMjUxLCAKKyAgICAxNzEsIDMxLCAxLCA0LCA2LCAyMzYsIDYwLCAzMSwgMSwgNCwgNiwgMjI1LCA4NywgMzEsIDEsIDQsIDYsIDIxNSwgMjA0LCAKKyAgICAzMSwgMSwgNCwgNiwgMjEzLCA5MCwgMzEsIDEsIDQsIDYsIDIxNCwgMjM1LCAzNywgMSwgNCwgNiwgMjM4LCAyMDksIDY3LCAKKyAgICAxLCA2LCA2MiwgNjcsIDEsIDYsIDI1MSwgMjIxLCA2NywgMSwgNiwgMjUwLCAxMDMsIDY3LCAxLCA2LCAyNDksIDcxLCAyNTAsIAorICAgIDEwMywgNjcsIDEsIDYsIDI0MiwgMTUzLCA2NywgMSwgNiwgNzIsIDY3LCAxLCA2LCAyMTMsIDEwNSwgNzIsIDY3LCAxLCA2LCAKKyAgICAyMzYsIDE1NiwgNjcsIDEsIDYsIDIzNCwgMjQ3LCA2NywgMSwgNiwgNzAsIDY3LCAxLCA2LCAyMjcsIDI1MSwgNjcsIDEsIDYsIAorICAgIDIyNywgMTE4LCA2NywgMSwgNiwgMTU2LCA2NywgMSwgNiwgMjIzLCAyNDMsIDY3LCAxLCA2LCAyMjAsIDIxNCwgNjcsIDEsIAorICAgIDYsIDIxMywgMTA1LCAyMjAsIDIxNCwgNjcsIDEsIDYsIDc0LCA2NywgMSwgNiwgMjE3LCAzLCA2NywgMSwgNiwgMjE2LCAKKyAgICAyMjYsIDY3LCAxLCA2LCAxNDYsIDY3LCAxLCA2LCAyMDcsIDgzLCA2NywgMSwgNiwgNjYsIDY3LCAxLCA2LCAyMDEsIDE0NywgCisgICAgNjcsIDEsIDQsIDYyLCA2NywgMSwgNCwgMjA0LCAxODUsIDYyLCA2NywgMSwgNCwgMjUxLCAxMTIsIDY3LCAxLCA0LCAyMDQsIAorICAgIDE4NSwgMjUxLCAyMjEsIDY3LCAxLCA0LCAyNTAsIDEwMywgNjcsIDEsIDQsIDI0MiwgMTUzLCA2NywgMSwgNCwgNzIsIDY3LCAKKyAgICAxLCA0LCAyMTEsIDIxOCwgNjcsIDEsIDQsIDE3NiwgNzIsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMTc2LCA3MiwgNjcsIDEsIDQsIAorICAgIDIzNiwgMTU2LCA2NywgMSwgNCwgMjA0LCAxODUsIDcwLCA2NywgMSwgNCwgMjI3LCAxMTgsIDY3LCAxLCA0LCAyMjMsIDI0MywgCisgICAgNjcsIDEsIDQsIDIzOCwgMTY1LCA2NywgMSwgNCwgNzQsIDY3LCAxLCA0LCAxNzYsIDc0LCA2NywgMSwgNCwgMjA1LCAxNTgsIAorICAgIDE2NywgNzQsIDY3LCAxLCA0LCAyNDgsIDkzLCAxNjcsIDc0LCA2NywgMSwgNCwgMjE2LCAyMjYsIDY3LCAxLCA0LCAyMDcsIAorICAgIDgzLCA2NywgMSwgNCwgNjYsIDY3LCAxLCA0LCAyMDksIDE3MywgNjYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjIzLCAyNDMsIAorICAgIDY3LCAxLCA0LCAyMDMsIDE2OCwgNjcsIDEsIDQsIDI1MSwgMTcxLCA2NywgMSwgNCwgMjQ4LCAyMDgsIDY3LCAxLCA0LCAzMSwgCisgICAgMjM2LCA2MCwgNjcsIDEsIDQsIDI0MSwgMTM2LCA2NywgMSwgNCwgMzEsIDIxNSwgMjI5LCA2NywgMSwgNCwgMjQ2LCAyMzYsIAorICAgIDgsIDIwOCwgNCwgNCwgMSwgNzAsIDgsIDIwOCwgNCwgNCwgMSwgMTQ2LCA4LCAyMDgsIDQsIDQsIDEsIDY2LCA4LCAyMDgsIAorICAgIDQsIDQsIDEsIDIwMywgMTY4LCAzMSwgMjA4LCA0LCA0LCAxLCAyNDgsIDIwOCwgMzEsIDIwOCwgNCwgNCwgMSwgMjM2LCA2MCwgCisgICAgMzEsIDIwOCwgNCwgNCwgMSwgMjEzLCA5MCwgMzEsIDIwOCwgNCwgNCwgMSwgMjE1LCAyMjksIDMxLCAyMDgsIDQsIDQsIDEsIAorICAgIDI0NiwgMjM2LCA4LCA0LCAxLCAyMDQsIDMxLCA4LCA0LCAxLCA2OCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIzOCwgNiwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjIzLCAKKyAgICAyNDQsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTYsIAorICAgIDIyNywgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE0LCAzMywgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE0LCAKKyAgICAzMywgMywgMjM3LCA2OSwgMjYsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAxMDEsIDIwNSwgMjQwLCAKKyAgICA4LCA0LCAxLCAyMDcsIDg0LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMTAxLCAyMDUsIDI0MCwgCisgICAgOCwgNCwgMSwgMjA0LCAxODUsIDIzNiwgMTU2LCA2NywgMSwgMzcsIDIzOCwgMTc5LCA4LCA0LCAxLCAyMjgsIDcxLCAyMzYsIAorICAgIDE1NiwgOCwgNCwgMSwgMjA2LCAxMjUsIDMsIDIwOCwgNTEsIDgsIDQsIDYsIDEsIDIzMywgMTksIDMsIDk3LCA4LCA0LCAxLCAKKyAgICAyMjgsIDQyLCAzLCA5NywgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDk3LCA4LCA0LCA2LCAxLCAxMDgsIDMsIDk3LCA4LCA0LCAKKyAgICAxLCAyMDMsIDIyMSwgMywgOTcsIDgsIDQsIDEsIDY4LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM4LCA2LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM4LCA5NSwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMzUsIDMsIDIxMywgCisgICAgMTExLCAxMTcsIDgsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjMzLCAKKyAgICAxODcsIDI2LCAyMDcsIDYsIDgsIDQsIDEsIDE5NywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMTc2LCAxOTcsIDMsIAorICAgIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIxMywgMTA1LCAxNzYsIDE5NywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgCisgICAgMjExLCAyMTksIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIAorICAgIDE3NiwgMTYzLCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMzgsIDk1LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAKKyAgICAxMDgsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIzOCwgOSwgMywgMjEzLCAxMTEsIDExNywgNjcsIDEsIDQsIDIwNCwgCisgICAgMTg1LCAyNTEsIDExMiwgNjcsIDEsIDQsIDI0NywgMjIzLCA2NywgMSwgNCwgMjQ3LCAyMjQsIDMsIDI0MiwgMTk4LCA2NywgCisgICAgMSwgNCwgMjM4LCA3NCwgNjcsIDEsIDQsIDIxMywgMTA1LCAxNzYsIDcyLCA2NywgMSwgNCwgMjM4LCA1LCA2NywgMSwgNCwgCisgICAgMjQwLCAxODEsIDIyNywgMjUyLCAzLCA5NywgNjcsIDEsIDQsIDEzNSwgMjM2LCAxNTYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgCisgICAgMjM0LCAyNDcsIDY3LCAxLCA0LCAyMzMsIDE5LCAzLCA5NywgNjcsIDEsIDQsIDIyOCwgNDEsIDY3LCAxLCA0LCA2LCA3MCwgCisgICAgNjcsIDEsIDQsIDYsIDIzMywgMTksIDMsIDk3LCA2NywgMSwgNCwgMjI3LCAyNTIsIDMsIDI0MiwgMjMwLCA2NywgMSwgNCwgCisgICAgMjI1LCAxOTMsIDMsIDIxMywgMTExLCAxMTcsIDY3LCAxLCA0LCAyMjUsIDE5MywgMywgMjE2LCAxODQsIDExNywgNjcsIDEsIAorICAgIDQsIDYsIDE1NiwgNjcsIDEsIDQsIDIyMywgMjQ0LCAzLCAxMTcsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjIzLCAyNDQsIDMsIAorICAgIDE2OCwgMjI1LCAxNiwgNjcsIDEsIDQsIDIyMCwgMjE1LCAzLCA0OSwgMTE3LCA2NywgMSwgNCwgMjIwLCAyMTUsIDMsIDIxMywgCisgICAgMTExLCAxMTcsIDY3LCAxLCA0LCA2LCAyMjAsIDIxNCwgNjcsIDEsIDQsIDI0OSwgNzEsIDc0LCA2NywgMSwgNCwgMjE1LCAKKyAgICAyMjksIDY3LCAxLCA0LCAyMTIsIDEyMywgMywgMTE3LCA2NywgMSwgNCwgMjM4LCA5NCwgNjcsIDEsIDQsIDIwNywgODQsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDY3LCAxLCA0LCAxMDgsIDE0OCwgNjcsIDEsIDQsIDIwMywgMjIwLCA2NywgMSwgNCwgNiwgNjYsIAorICAgIDY3LCAxLCA0LCAyMDMsIDE2OSwgMywgMTE3LCA2NywgMSwgNCwgMjA0LCAxODUsIDIwMywgMTY4LCA2NywgMSwgNCwgMTk5LCAKKyAgICAxNTcsIDY3LCAxLCA0LCAxOTksIDE1OCwgMywgMjEzLCAxMTEsIDExNywgNjcsIDEsIDQsIDE5OSwgMTU4LCAzLCAyNDIsIAorICAgIDE5OCwgNjcsIDEsIDQsIDIzOCwgOCwgNjcsIDEsIDQsIDIwNiwgODgsIDM4LCAyMzksIDE4MCwgMjM1LCA3NCwgMjUxLCAKKyAgICAyNTEsIDM4LCAyMzksIDE4MCwgMjUxLCAyMzksIDI1MSwgMjUxLCAzOCwgMjA5LCA0MiwgNTcsIDM4LCAyMDcsIDE5NiwgODEsIAorICAgIDM4LCAyMjIsIDIyNywgMzgsIDIzNSwgNzEsIDM4LCAyMjIsIDIyNSwgMzgsIDI1MSwgMjM3LCAzOCwgMjM1LCA3MiwgMzgsIAorICAgIDI1MSwgMjM4LCAzOCwgOCwgNCwgMSwgMjE0LCAzMywgNTcsIDM4LCAyNDgsIDU2LCAzOCwgMjIyLCAyMjYsIDM4LCA1MywgCisgICAgMjQ2LCAxNDcsIDU2LCAzOCwgMjE3LCAxMTEsIDU2LCAzOCwgMTk5LCAyNywgNTcsIDM4LCAyMjgsIDI3LCA1NywgMzgsIAorICAgIDIwMywgMjE1LCA1NiwgMzgsIDIwMywgMTk4LCA1NiwgMzgsIDgsIDQsIDEsIDIzNywgNDEsIDE3NiwgMzUsIDU2LCAzOCwgOCwgCisgICAgNCwgMSwgMjUxLCAyMjEsIDM4LCA4LCA0LCAxLCAyNTEsIDMxLCAzOCwgOCwgNCwgMSwgMjUwLCAxMjMsIDM4LCA4LCA0LCAxLCAKKyAgICAyNDcsIDIyNCwgMjQ3LCA2OSwgMzgsIDgsIDQsIDEsIDIyOCwgNzEsIDI0MiwgMTUzLCAzOCwgOCwgNCwgMSwgMjM4LCA3NCwgCisgICAgMzgsIDgsIDQsIDEsIDIzNiwgMTU2LCAzOCwgOCwgMSwgNCwgNiwgMjM2LCAxNTYsIDM4LCA4LCA0LCAxLCAyMjcsIDExOCwgCisgICAgMzgsIDgsIDQsIDEsIDE1NiwgMzgsIDgsIDEsIDQsIDYsIDE1NiwgMzgsIDgsIDEsIDQsIDYsIDIyMywgMjQzLCAzOCwgOCwgCisgICAgNCwgMSwgMjIwLCAyMTQsIDM4LCA4LCAxLCA0LCA2LCAyMjAsIDIxNCwgMzgsIDgsIDEsIDQsIDYsIDE0NiwgMzgsIDgsIDQsIAorICAgIDEsIDIxNCwgMzMsIDIxMiwgMjIyLCAzOCwgOCwgNCwgMSwgMjEyLCAxMjIsIDM4LCA4LCA0LCAxLCAxNjgsIDIxMiwgMTIyLCAKKyAgICAzOCwgOCwgNCwgMSwgMTk5LCAxNTcsIDM4LCA4LCA0LCAxLCAyNTEsIDExMiwgMzgsIDgsIDQsIDEsIDI1MCwgMTAzLCAzOCwgCisgICAgOCwgNCwgMSwgMjQ4LCAyMDgsIDM4LCA4LCA0LCAxLCAyMTEsIDIxOCwgMzgsIDgsIDQsIDEsIDIzOCwgNSwgMzgsIDgsIDQsIAorICAgIDEsIDIyNSwgMTkzLCAzLCA1MywgMTAxLCAyMDUsIDI0MCwgMzgsIDgsIDQsIDEsIDE2MywgMywgMTYyLCAyNDcsIDU3LCA5NywgCisgICAgMzgsIDgsIDQsIDEsIDIxNiwgMjI2LCAzOCwgOCwgNCwgMSwgMjM4LCA5NCwgMzgsIDgsIDQsIDEsIDEwOCwgMywgMTYyLCAKKyAgICAyNDcsIDU3LCA5NywgMzgsIDgsIDQsIDEsIDIwMSwgMTQ3LCAzOCwgOCwgNCwgMSwgMzUsIDMsIDI0MSwgNzQsIDM4LCA4LCAKKyAgICA0LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDM4LCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzQsIDM4LCAxMTUsIDIwNywgMTgsIAorICAgIDU2LCAzOCwgMjQxLCAxNDUsIDgxLCAzOCwgNTMsIDIyOCwgNTAsIDI0OCwgNTgsIDU3LCAzOCwgMjUxLCAxMTcsIDE2MCwgCisgICAgMjA1LCAxODYsIDU3LCAzOCwgNDksIDI1MCwgMjAzLCA1NiwgMzgsIDUxLCAyNTAsIDIwMywgMjYsIDEyNywgMjUwLCAyMDMsIAorICAgIDU3LCA4LCA2LCAxLCAzNSwgMywgMjEzLCAyNywgNTcsIDgsIDQsIDEsIDM1LCAzLCAyMTMsIDI3LCA1NywgOCwgNiwgMSwgCisgICAgNjgsIDMsIDczLCA1NiwgOCwgNCwgMSwgNjgsIDMsIDczLCA1NiwgOCwgNiwgMSwgNjgsIDMsIDczLCA1NywgOCwgNCwgMSwgCisgICAgNjgsIDMsIDczLCA1NywgOCwgNiwgMSwgNjgsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgNjgsIDMsIDIyNCwgMTc3LCAKKyAgICA1NywgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgNzAsIDI2LCAxNjksIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAyNDcsIAorICAgIDcwLCAyNiwgMTY5LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU2LCAKKyAgICA4LCA2LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0NywgNjksIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCAKKyAgICAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDE5NywgMywgMjIyLCAKKyAgICAyMjksIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAKKyAgICAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNiwgMSwgMTk3LCAKKyAgICAzLCAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDIwNSwgCisgICAgMjQxLCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDYsIDEsIDE5NywgMywgMjQ3LCA3MCwgMjYsIAorICAgIDI0OCwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjQ3LCA3MCwgMjYsIDI0OCwgNTcsIDgsIDYsIDEsIDIzOCwgNiwgMywgNzMsIAorICAgIDU2LCA4LCA0LCAxLCAyMzgsIDYsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAyMzYsIDE1NywgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIzNCwgMjQ4LCAKKyAgICAzLCA3MywgNTYsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCA3MywgNTcsIDgsIAorICAgIDYsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjM0LCAKKyAgICAyNDgsIDMsIDI0NywgNjksIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgCisgICAgMjQ4LCA1OCwgNTcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDgsIDU4LCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjA1LCAKKyAgICAyNDEsIDU3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDI0MSwgNzUsIAorICAgIDI2LCAxNjksIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0MSwgNzUsIDI2LCAxNjksIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAKKyAgICAxNjksIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAxNjksIDgsIDYsIDEsIDIyNywgMTE5LCAzLCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDIyNywgMTE5LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIyNywgCisgICAgMTE5LCAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICA3MywgNTcsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjI0LCAxNzcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjQ2LCAxNDcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgMTY5LCA4LCA0LCAxLCAKKyAgICAyMjMsIDI0NCwgMywgMTY5LCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgNzMsIAorICAgIDU2LCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgNzMsIDU3LCA4LCA2LCAxLCAKKyAgICAyMjAsIDIxNSwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgCisgICAgNzMsIDU3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjI0LCAxNzcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjQ2LCAxNDcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMTY5LCAKKyAgICA4LCA0LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjQxLCAKKyAgICA3NCwgOCwgNCwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDI0MSwgNzQsIDgsIDYsIDEsIDE2MywgMywgMjIyLCAyMjksIAorICAgIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNiwgMSwgMjE2LCAyMjcsIAorICAgIDMsIDE2OSwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDE2OSwgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDczLCA1NiwgOCwgNCwgMSwgCisgICAgMjE2LCAyMjcsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjE0LCAzMywgMywgNzMsIDU2LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAKKyAgICA3MywgNTYsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDczLCA1NywgOCwgNCwgMSwgMjE0LCAzMywgMywgNzMsIDU3LCA4LCA2LCAKKyAgICAxLCAyMTQsIDMzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMjE0LCAzMywgMywgNzMsIDI0OCwgCisgICAgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjE0LCAzMywgCisgICAgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgNzMsIDU2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgNzMsIAorICAgIDU2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgNzMsIDU3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgNzMsIDU3LCA4LCA2LCAxLCAKKyAgICAyMTIsIDEyMywgMywgMjUxLCAyMzksIDI2LCA3MywgNTYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyNTEsIDIzOSwgMjYsIAorICAgIDczLCA1NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NywgMTI2LCAyNiwgNzMsIDU2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgCisgICAgMjQ3LCAxMjYsIDI2LCA3MywgNTYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDgsIAorICAgIDQsIDEsIDIxMiwgMTIzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDgsIDYsIDEsIDIwNywgODQsIDMsIDczLCA1NiwgCisgICAgOCwgNCwgMSwgMjA3LCA4NCwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIwNywgCisgICAgODQsIDMsIDczLCA1NywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAKKyAgICAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgCisgICAgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDU3LCAKKyAgICA4LCA2LCAxLCAxMDgsIDMsIDIwNSwgMjQxLCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDYsIDEsIAorICAgIDEwOCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMDUsIDI0MSwgMjYsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyMDUsIDI0MSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDI0MSwgNzQsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyNDEsIDc0LCA4LCA2LCAxLCAKKyAgICAyMDMsIDE2OSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMjAzLCAxNjksIAorICAgIDMsIDczLCA1NywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDczLCA1NywgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDIzNSwgNzMsIAorICAgIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMTY5LCA4LCA0LCAxLCAyMDEsIAorICAgIDE0OCwgMywgMTY5LCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDI0MSwgCisgICAgNzQsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCA3MywgNTYsIDgsIDYsIDEsIAorICAgIDIwMSwgMTQ4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwMCwgMTk2LCAzLCAKKyAgICA3MywgNTYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIwMCwgMTk2LCAzLCAyNDEsIDc0LCA4LCAKKyAgICA0LCAxLCAyMDAsIDE5NiwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjAwLCAKKyAgICAxMjQsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgCisgICAgMjQ2LCAxNDYsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTcsIDgsIAorICAgIDYsIDEsIDE5OSwgMTU4LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyMjQsIDE3NywgNTcsIDgsIAorICAgIDQsIDEsIDIzNCwgMjQ4LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIAorICAgIDIwMSwgMTQ4LCAzLCAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAzNSwgCisgICAgMywgNTEsIDE2NywgMjEzLCAyNiwgOCwgNCwgMSwgMTY4LCAyMTIsIDEyMywgMywgNzMsIDU2LCA4LCA0LCAxLCAxNjgsIAorICAgIDIxMiwgMTIzLCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMTY4LCAyMTIsIDEyMywgMywgMTIyLCA5NywgOCwgNiwgMSwgCisgICAgMjEwLCA3OSwgMjEyLCAxMjIsIDgsIDQsIDEsIDI0MSwgMTM2LCA4LCA2LCAxLCAzNSwgMywgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgNzMsIDU3LCA4LCA2LCAxLCAzNSwgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAzNSwgMywgMjMzLCAxODcsIAorICAgIDU2LCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDQsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgCisgICAgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCAKKyAgICA3MywgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAzNSwgMywgMjQ2LCAxNDcsIAorICAgIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgCisgICAgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ4LCA1OCwgMjYsIDE2OSwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjMzLCAxODcsIDU2LCAKKyAgICA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAKKyAgICAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIAorICAgIDI2LCA3MywgNTcsIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDczLCA1NywgCisgICAgOCwgNCwgMSwgMTk3LCAzLCA3MywgNTcsIDgsIDYsIDEsIDE5NywgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxOTcsIDMsIAorICAgIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAzLCAyMDUsIDI0MCwgOCwgNiwgCisgICAgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNiwgCisgICAgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCAKKyAgICA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAKKyAgICAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgCisgICAgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNCwgCisgICAgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAKKyAgICAxLCAyMzMsIDE5LCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDIzMywgMTksIDMsIDczLCA1NywgOCwgNCwgMSwgMjMzLCAKKyAgICAxOSwgMywgNzMsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDczLCA1NywgOCwgNCwgMSwgMTYzLCAzLCA3MywgNTcsIDgsIDYsIDEsIAorICAgIDE2MywgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAKKyAgICAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAKKyAgICAxODcsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAKKyAgICAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIDgsIDQsIAorICAgIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjMzLCAKKyAgICAxODcsIDU2LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgCisgICAgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgOCwgCisgICAgNiwgMSwgMTA4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDEwOCwgMywgNzMsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTg3LCAKKyAgICA1NiwgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIAorICAgIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCAKKyAgICA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIAorICAgIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTA4LCAKKyAgICAzLCAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDYsIAorICAgIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIAorICAgIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjM1LCA3MywgOCwgNiwgMSwgCisgICAgMjAwLCAxMjQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDczLCA1NywgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIAorICAgIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIAorICAgIDIwNSwgMjQwLCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDIyMSwgMjAzLCAyMjQsIDEzOSwgOCwgCisgICAgNCwgMSwgMjIxLCAyMDMsIDIyNCwgMTM5LCA4LCA2LCAxLCAyMjEsIDIwMywgMjAzLCAxNjgsIDgsIDQsIDEsIDIyMSwgMjAzLCAKKyAgICAyMDMsIDE2OCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDIyNCwgNzQsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMjQsIDc0LCAKKyAgICAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQxLCAzMSwgNCwgCisgICAgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIAorICAgIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyNTEsIAorICAgIDExMywgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNiwgCisgICAgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOCwgCisgICAgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCAKKyAgICAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIAorICAgIDIzMSwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MSwgCisgICAgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAKKyAgICAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI4LCAKKyAgICAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgCisgICAgNzQsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAKKyAgICAyNDEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAKKyAgICAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICA0LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgCisgICAgMjI4LCA0MiwgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAKKyAgICAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAKKyAgICAyMCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDEsIDMxLCAKKyAgICA0LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgCisgICAgMjE3LCA4MiwgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAKKyAgICAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgCisgICAgMjIxLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgNCwgMSwgMjAzLCAyMjEsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAKKyAgICAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQxLCAKKyAgICAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIAorICAgIDEsIDIxNywgODQsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMTcsIAorICAgIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgCisgICAgNzQsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIAorICAgIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI4LCAKKyAgICAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgCisgICAgNzQsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgCisgICAgMjMxLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjE2LCAyMzEsIDMxLCAKKyAgICA0LCAxLCAyMzgsIDgwLCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAKKyAgICAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjAzLCA3NCwgCisgICAgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAKKyAgICAyMTcsIDg0LCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDE5OSwgMjE5LCAzMSwgCisgICAgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAKKyAgICAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMDMsIAorICAgIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgCisgICAgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIAorICAgIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAKKyAgICAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgCisgICAgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAKKyAgICAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIAorICAgIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgCisgICAgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDQsIDEsIAorICAgIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIAorICAgIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCAKKyAgICA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIAorICAgIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgCisgICAgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIAorICAgIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgCisgICAgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAKKyAgICAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIAorICAgIDIxNCwgMjQyLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgCisgICAgODQsIDMsIDI0MSwgMjQyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgCisgICAgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgCisgICAgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgCisgICAgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgCisgICAgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE0LCAyNDIsIAorICAgIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAKKyAgICAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgCisgICAgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIAorICAgIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIAorICAgIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjAyLCAxNzAsIDMxLCAKKyAgICA0LCAxLCAyNTEsIDExMywgMywgMjIyLCAyMjgsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjAzLCA3NSwgMjYsIDE5OSwgCisgICAgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgMjMyLCAKKyAgICAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIAorICAgIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjAyLCAxNzAsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgCisgICAgMjIyLCAyMjgsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIAorICAgIDIzMSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDI0MiwgMzEsIDIyNiwgNTgsIDMxLCAyMTQsIDI0MiwgMzEsIDIxNCwgCisgICAgMjI4LCAzMSwgMjE2LCAyMCwgMzEsIDI0MSwgNjgsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjAzLCAKKyAgICA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgODAsIAorICAgIDMsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCAKKyAgICAxMjUsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIAorICAgIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyNDIsIDMxLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgCisgICAgMjAyLCAxNzAsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyMjIsIDIyOCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIAorICAgIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgCisgICAgMjI4LCA0MiwgMywgMjAyLCAxNzAsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMjIsIDIyOCwgMzEsIDYsIDEsIDIyOCwgNDIsIAorICAgIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTYsIDIzMSwgMzEsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgCisgICAgMzEsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMDMsIAorICAgIDIyMSwgMywgMjAyLCAxNzAsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjIyLCAyMjgsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgCisgICAgMjQxLCA2OCwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNCwgMSwgMjEzLCA5MSwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMTMsIDkxLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIAorICAgIDIwMywgMjIxLCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIwLCAzMSwgNiwgCisgICAgMSwgMjAzLCAyMjEsIDMsIDIwMiwgMTcwLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDIyMiwgMjI4LCAzMSwgNiwgMSwgMjAzLCAKKyAgICAyMjEsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTMsIDkxLCAzLCAKKyAgICAyNDEsIDI0MSwgMzEsIDI0MSwgNjgsIDI2LCAyMDMsIDc0LCAzMSwgMjQxLCA2OCwgMjYsIDIxNiwgMjMxLCAzMSwgMjAzLCAKKyAgICA3NCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIAorICAgIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgCisgICAgODQsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAKKyAgICAyMTcsIDgyLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDg0LCAKKyAgICAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIAorICAgIDI0MiwgMzEsIDIxNiwgMjMxLCAzMSwgMjQxLCAyNDEsIDIzOCwgMTgwLCAyMTQsIDk0LCAyMzgsIDE5MSwgMjE0LCA5NCwgCisgICAgMjM4LCAxODAsIDIwOCwgMjQ0LCAyMzgsIDE5MSwgMjA4LCAyNDQsIDIwNiwgNDEsIDIwOCwgMjQ0LCAyMzYsIDIyNywgMjA4LCAKKyAgICAyNDQsIDIwOSwgMTA0LCAyMDgsIDI0NCwgMjM3LCAxMDIsIDIwOCwgMjQ0LCAyMTQsIDIxMiwgMjA4LCAyNDQsIDIwNiwgNzcsIAorICAgIDIwOCwgMjQ0LCAyMzQsIDIyMiwgMjA4LCAyNDQsIDE5OSwgODIsIDIwMSwgMjUsIDIwOCwgMjQ0LCAxOTksIDgyLCAyMDEsIAorICAgIDI1LCAyMTgsIDIzMiwgMTk5LCA4MiwgMjAxLCAyNSwgMjI3LCAxNjEsIDIyNSwgMTksIDgxLCAyMTMsIDM3LCA4MSwgMjMzLCAKKyAgICAzMywgMjE4LCAyMzMsIDIzMywgMzMsIDIzNywgMTAyLCAyNDEsIDI0NCwgMjM4LCAxODAsIDI0MSwgMjQ0LCAyMzgsIDE5MSwgCisgICAgMjQxLCAyNDQsIDIzMywgMTc3LCAxNDgsIDUzLCA4MywgMjI0LCAxNzYsIDUzLCAxMjgsIDIyNCwgMTc2LCA0OSwgMjA5LCAKKyAgICAxMzksIDIxNCwgNjMsIDgxLCA1MSwgMjA5LCAxMzksIDIxNCwgNjMsIDgxLCAyMDksIDEzOSwgMjI0LCA1OCwgMjE0LCA2MywgCisgICAgODEsIDIwOSwgMTM5LCAyMzQsIDU2LCAyMTQsIDYzLCA4MSwgNDksIDUzLCAyMTQsIDYzLCA4MSwgNTEsIDUzLCAyMTQsIDYzLCAKKyAgICA4MSwgNTMsIDIyNCwgNTgsIDIxNCwgNjMsIDgxLCA1MywgMjM0LCA1NiwgMjE0LCA2MywgODEsIDI0MiwgNDAsIDUzLCAyNDIsIAorICAgIDQwLCAyNDgsIDIwLCAyMDUsIDk1LCAyNDgsIDIwLCAxMTIsIDczLCAyMjUsIDM4LCAxMjAsIDczLCAyMjUsIDM4LCAyMzMsIAorICAgIDE3NywgMjM4LCAxOTUsIDIzMywgMzEsIDIxNSwgOTksIDIyNCwgMTc3LCAyMTAsIDE1NCwgMjE2LCAxMjgsIDIxMCwgMTU0LCAKKyAgICAyMjUsIDE5LCAyMzgsIDE4OSwgMjEzLCAzNywgMjM4LCAxODksIDIxNSwgNzgsIDI0MSwgOCwgMjM2LCAyNDAsIDIyNSwgMTksIAorICAgIDIxNiwgMjM5LCAyMTMsIDM3LCAyMTYsIDIzOSwgMjIwLCAxMjQsIDIxOCwgMjQwLCAyMDgsIDI0NCwgMjE2LCAyOCwgMjIxLCAKKyAgICAxNzAsIDU0LCAyMTYsIDI4LCAyMDYsIDE2NywgMjA2LCA1MSwgNTQsIDIxNSwgMTQsIDUzLCAyMTUsIDE0LCAyMDUsIDgzLCAKKyAgICAyMTUsIDE0LCAyMTMsIDEwNSwgMjE1LCAxNCwgMjEzLCAxMDUsIDUzLCAyMTUsIDE0LCAyMTMsIDEwNSwgMjA1LCA4MywgCisgICAgMjE1LCAxNCwgMjQ3LCAxMjksIDIwOSwgMTM5LCAyMjUsIDIzLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjA5LCAxMzksIAorICAgIDIxMywgNDEsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMTMsIDE2NiwgODEsIDUzLCAyMzgsIDQzLCA4MSwgMjI4LCA1OCwgCisgICAgMjE2LCAyNDEsIDIwMywgMjQ4LCAxNzEsIDIwNiwgNywgMjQ3LCAxMzAsIDIyOCwgNzUsIDIxNSwgOTksIDI1MCwgMTYzLCAKKyAgICAyMzMsIDM0LCAyNDgsIDIwLCAyMzYsIDIxOSwgMjA5LCA3NSwgNDksIDUyLCAyNDgsIDcwLCAzLCAyMTQsIDczLCA1MSwgNTIsIAorICAgIDI0OCwgNzAsIDMsIDIxNCwgNzMsIDUzLCAyMTQsIDc5LCA4MSwgMjE0LCA3OSwgMjM4LCA0MywgODEsIDIzOCwgNDMsIDIxNCwgCisgICAgNzksIDgxLCAyMDUsIDIxNiwgMiwgMjM4LCA4MSwgMjEzLCAxMDUsIDIxNSwgMTYzLCA1NCwgNjMsIDk4LCAyNDgsIDIwLCAKKyAgICA2MywgODcsIDI0OCwgMjAsIDEyOCwgMjUwLCAxNjUsIDIxMywgMTA1LCAyMTAsIDE2NywgMjQ2LCAxMTEsIDIwMywgMjI4LCAKKyAgICAxMjAsIDI1MCwgMTY0LCAyNTEsIDEyOCwgMjAyLCAyNDcsIDI0NiwgNjgsIDIyMSwgMTU3LCA1NCwgMjA3LCAxNjcsIDI0MSwgCisgICAgMjQ0LCAyMjgsIDUwLCAyMDMsIDI0OCwgMjM3LCAyNSwgMjE0LCAyMTIsIDgxLCAxMjYsIDczLCAyMTQsIDIxMSwgMjE0LCAKKyAgICA5MCwgMjE1LCAxNCwgMjM2LCAyMjksIDczLCAyMTQsIDIxMSwgMjM3LCA2MSwgNzMsIDIxNCwgMjExLCAxMjAsIDczLCAyMTQsIAorICAgIDIxMSwgMjM2LCAyMjksIDczLCA4MSwgMjM5LCAxODAsIDI0MiwgMjM0LCAyMDUsIDk0LCA4MywgMjM2LCAyMjksIDI0MCwgCisgICAgMTgwLCAyMjIsIDY2LCAxMywgMjA4LCAyNDQsIDIwMCwgMjM4LCAyMjcsIDE2MSwgMjM2LCAxODEsIDI1MSwgOCwgMjI4LCAKKyAgICA0OCwgMjA1LCAyMzIsIDIyOCwgNDgsIDIxMCwgMTU0LCAyMjgsIDQ4LCAyMTUsIDExMywgMjI1LCAxOSwgMjI4LCAxOCwgCisgICAgMjEzLCAzNywgMjI4LCAxOCwgMjM3LCA3MywgMjA4LCAzMywgMjI4LCAxOCwgMjE1LCA3OCwgMjQxLCA4LCAyMjgsIDE4LCAKKyAgICAyMjgsIDg3LCAyMDcsIDExNSwgMjA3LCAxODQsIDI1MSwgMjQxLCAyMDcsIDExNSwgMjA3LCAxODQsIDIyOCwgODcsIDksIAorICAgIDIzNiwgMjQyLCAyMTAsIDg0LCAyNTEsIDI0MSwgOSwgMjM2LCAyNDIsIDIxMCwgODQsIDIyMCwgMTE4LCAxNywgMjEwLCA4NSwgCisgICAgMjE4LCAyMzYsIDE3LCAyMTAsIDg1LCAyMDcsIDIxMywgMTk5LCA4MSwgMjA3LCAyMTMsIDgsIDQsIDEsIDcwLCAyMDcsIAorICAgIDIxMywgMTQ5LCAyMDcsIDIxMywgMTY0LCAyMDcsIDIxMywgMTg3LCAyMDcsIDIxMywgMjEwLCAxMzUsIDIwNywgMjEzLCAKKyAgICAxOTIsIDIwNywgMjEzLCAyMTksIDExMywgMjA3LCAyMTMsIDkzLCA1NCwgMjA3LCAyMTMsIDIyMSwgMTU2LCAyMDcsIDIxMywgCisgICAgMjM4LCAxMjIsIDU0LCAyMDcsIDIxMywgNDksIDIxNiwgMTE1LCAyMDcsIDIxMywgNTEsIDIxNiwgMTE1LCAyMDcsIDIxMywgCisgICAgOCwgNCwgMSwgMjIwLCAyMTQsIDIwOCwgNCwgMTk5LCA4MSwgMjA4LCA0LCAxMDIsIDIwOCwgNCwgMTA1LCAyMDgsIDQsIAorICAgIDE0NywgMjA4LCA0LCAxNDksIDIwOCwgNCwgMTY0LCAyMDgsIDQsIDE4NywgMjA4LCA0LCAyMTAsIDEzNSwgMjA4LCA0LCAKKyAgICAxOTIsIDIwOCwgNCwgMjE5LCAxMTMsIDIwOCwgNCwgOTMsIDU0LCAyMDgsIDQsIDIyMSwgMTU2LCAyMDgsIDQsIDIzOCwgCisgICAgMTIyLCA1NCwgMjA4LCA0LCA0OSwgMjE2LCAxMTUsIDIwOCwgNCwgNTEsIDIxNiwgMTE1LCA4LCAyMDgsIDQsIDQsIDEsIDYyLCAKKyAgICA4LCAyMDgsIDQsIDQsIDEsIDcyLCA4LCAyMDgsIDQsIDQsIDEsIDc0LCA4LCAyMDgsIDQsIDQsIDEsIDIwMCwgMTk1LCA4LCAKKyAgICAyMDgsIDQsIDQsIDEsIDIxMSwgMjE4LCA4LCAyMDgsIDQsIDQsIDEsIDIzNCwgMjQ3LCA4LCAyMDgsIDQsIDQsIDEsIDIyNywgCisgICAgMTE4LCA4LCAyMDgsIDQsIDQsIDEsIDE1NiwgOCwgMjA4LCA0LCA0LCAxLCAyMjMsIDI0MywgOCwgMjA4LCA0LCA0LCAxLCAKKyAgICAyMjAsIDIxNCwgOCwgMjA4LCA0LCA0LCAxLCAyMTYsIDIyNiwgOCwgMjA4LCA0LCA0LCAxLCAyMTIsIDEyMiwgOCwgMjA4LCAKKyAgICA0LCA0LCAxLCAyMDcsIDgzLCAyMzgsIDYwLCA1NCwgMjQ2LCA4MCwgNTQsIDI0MiwgMjE5LCA1NCwgMjM2LCAyMDksIDIzNiwgCisgICAgMjEzLCA1NCwgMjI0LCAxNTYsIDU0LCAyMjEsIDE3MSwgNTQsIDIyMCwgMTQxLCA1NCwgMjE2LCA1LCA1NCwgMjEyLCAxNDksIAorICAgIDU0LCAyMDAsIDI0NiwgNTQsIDIyMCwgOCwgMjEwLCA1MSwgNTQsIDI0MCwgMTg5LCA1NCwgMjM4LCA2MSwgNTQsIDIyNiwgCisgICAgMTQyLCA1NCwgMjA0LCAyMDgsIDU0LCAyMzksIDE2MywgNTQsIDIzNSwgMjQ2LCAyMTYsIDQwLCA1NCwgMjE2LCAyLCA1NCwgCisgICAgMjM1LCA0NSwgNTQsIDI1MCwgMTI5LCA1NCwgMjMzLCAxMDMsIDU0LCAyNDcsIDcxLCA1NCwgMjI0LCAxNDYsIDIwNSwgMTM4LCAKKyAgICA1NCwgMjA4LCAyMjUsIDU0LCAyMDYsIDE2NCwgNTQsIDIyOCwgMTAyLCAyMTIsIDE0OSwgNTQsIDIwNCwgMTg4LCAyMjQsIAorICAgIDE1NiwgNTQsIDIxOCwgMjIyLCAxMzQsIDU0LCAyMjIsIDE3OCwgNTQsIDIxMiwgMTcyLCA1NCwgMjI1LCA2NywgNTQsIDM4LCAKKyAgICA0OSwgMjM0LCAxNjEsIDU2LCAzOCwgNTEsIDIzNCwgMTYxLCA1NiwgMzgsIDE2OCwgODMsIDIyNCwgMTc3LCAyMTYsIDI0MiwgCisgICAgMzgsIDIwOSwgMjUwLCA4MywgMjI0LCAxNzcsIDIxNiwgMjQyLCAzOCwgMjUxLCA0NywgNTUsIDU2LCAzOCwgMjQ2LCAxMTIsIAorICAgIDU1LCA1NiwgMzgsIDQ5LCA1NSwgNTYsIDM4LCA1MSwgNTUsIDU2LCAzOCwgMjEzLCAyNywgMjE2LCAyNDIsIDM4LCAyNDYsIAorICAgIDExMiwgMjEzLCAyNywgMjE2LCAyNDIsIDM4LCAyNTEsIDQ3LCAyMTMsIDI3LCAyMTYsIDI0MiwgMzgsIDEyNiwgMTkwLCA1NiwgCisgICAgMzgsIDIzNiwgMjI5LCAxOTAsIDU2LCAzOCwgMjM4LCAxNzUsIDI0NiwgMTU1LCAzOCwgMjM4LCAxNzUsIDIwOCwgMTkzLCAKKyAgICAzOCwgMjM4LCAxNzUsIDI0MSwgNjQsIDM4LCAyMzgsIDE3NSwgMjQ2LCAxNTYsIDI0OSwgMTI0LCAzOCwgNDksIDUxLCA1NSwgCisgICAgNTYsIDM4LCAyMzgsIDE3NSwgMjExLCAyMDksIDM4LCAyMzgsIDE3NSwgMjI2LCAyMTAsIDM4LCAyMzgsIDE3NSwgMjAzLCAKKyAgICAyMTgsIDIxNSwgOTYsIDIwNSwgOTgsIDM4LCAyMTMsIDEwNiwgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCA1MywgODMsIDIwOCwgCisgICAgNDcsIDIxNiwgMjQyLCAzOCwgMjUxLCA1NywgOTksIDM4LCAyMDUsIDgzLCAyMDMsIDI1MCwgMzgsIDIwMSwgMjgsIDI0OCwgCisgICAgNTEsIDU2LCAzOCwgOTgsIDU1LCAyMTYsIDI0MiwgMzgsIDE2OCwgNTMsIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgODcsIAorICAgIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY1LCAzOCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY1LCAzOCwgNDksIAorICAgIDU1LCA1NywgMzgsIDUxLCA1NSwgNTcsIDM4LCAyNTAsIDE2NiwgNTYsIDI1MSwgMjQ3LCAyMTcsIDExNywgMjUxLCAyMzEsIAorICAgIDIwNSwgMTg2LCAyMDYsIDEwNywgMjA4LCAxMywgMTc1LCA2LCAyNDcsIDIyMywgMjQxLCAxNTUsIDI0NywgNjEsIDI0NywgCisgICAgNTYsIDIyNCwgMTc3LCA5OSwgMjQ3LCAxMzEsIDIxNywgMTE3LCAyNDcsIDE4MiwgMjA0LCA0LCAyMzgsIDYyLCAyNDMsIDUwLCAKKyAgICAyMTEsIDIwNiwgMjQxLCAxNTUsIDIzNywgMTc3LCAxMzUsIDQsIDIzNiwgMTU2LCAxMzUsIDYsIDIzNCwgMjQ3LCAyNDgsIAorICAgIDE0MiwgNiwgMjM0LCAyNDcsIDE3NSwgNiwgMjM0LCAyNDcsIDIxNSwgMTMwLCAyNDMsIDUwLCAyMTUsIDEzMCwgMjQzLCA1MSwgCisgICAgMTE5LCAxMjAsIDIxNSwgMjA0LCAxMzUsIDYsIDcwLCAyNDgsIDE0MiwgNiwgNzAsIDEzNSwgNiwgMTU2LCAxMzUsIDQsIAorICAgIDE1NiwgMjI1LCAxOTMsIDY4LCAyNDksIDc3LCA5OSwgMTc1LCA2LCAyMjAsIDIxNCwgMjE4LCA5MSwgNTQsIDIwOSwgMSwgCisgICAgMjEzLCAxNzgsIDI0MywgMTgsIDEzNSwgNiwgMjE2LCAyMjYsIDE3NSwgNiwgMjE2LCAyMjYsIDE3NSwgNiwgMjE0LCAxNjcsIAorICAgIDEzNSwgNiwgMTQ2LCAyNDgsIDE0MiwgNiwgMTQ2LCAxNzUsIDYsIDE0NiwgMjE1LCAyMSwgMjA2LCAyNTUsIDIxMywgMTE4LCAKKyAgICAyMTAsIDE0NiwgODEsIDIwNiwgMTc2LCA1NCwgMjA1LCAxMjgsIDEzNCwgNTQsIDIwMywgNDMsIDE3NSwgNiwgMTk5LCAxNTcsIAorICAgIDIxNywgMiwgNTQsIDIxNywgMTA3LCA1NCwgMjI4LCA1MCwgMjE3LCAxMDcsIDU0LCAyNDgsIDE0MiwgNiwgMTk5LCAxNTcsIAorICAgIDIwNCwgMTg1LCAzMSwgNCwgMSwgMjI4LCA0MSwgMjI2LCAyNTEsIDU0LCAyNTEsIDY2LCA1NCwgMTM1LCA2LCAyNTAsIDEwMywgCisgICAgMjQ4LCAxNDIsIDYsIDI0NywgMjIzLCAyMzgsIDg2LCA5OSwgMTM1LCA0LCA3MiwgMTM1LCA2LCA3MiwgMTM1LCA2LCAyMzgsIAorICAgIDUsIDIwNCwgMTg1LCA2LCAyMzgsIDUsIDEzNSwgNiwgMjIzLCAyNDMsIDEzNSwgNCwgNzQsIDE0MCwgOTksIDI0OCwgMjExLCAKKyAgICA5OSwgMjM1LCAxNDgsIDk5LCAyNDIsIDI0LCA5OSwgMjI4LCA5MiwgMjA4LCAyNTUsIDIxMiwgMjI4LCA2LCAyMTQsIDE2NywgCisgICAgMjM3LCAxODAsIDU0LCAxNzUsIDQsIDIxNSwgMjA0LCAxNzUsIDQsIDIzNiwgNjAsIDE3NSwgNiwgMjM2LCA2MCwgMTc1LCA2LCAKKyAgICAyMTUsIDIwNCwgMTc1LCAyMjAsIDIxMywgMjA3LCAyMzEsIDIwNCwgMTg1LCA0MywgNiwgMjM2LCAxNTYsIDIwNCwgMTg1LCAKKyAgICA0MywgNiwgMTU2LCAyMTMsIDEwNSwgNDMsIDYsIDE1NiwgMjA0LCAxODUsIDQzLCA2LCAyMDAsIDEyMywgMTc1LCAzOSwgNiwgCisgICAgMjQyLCAxNTMsIDE3NSwgMzksIDQsIDI0MiwgMTUzLCAxNzUsIDM5LCA0LCA3MiwgMTc1LCAzOSwgNCwgNzAsIDE3NSwgMzksIAorICAgIDQsIDIyNywgMjUxLCAyMTQsIDI0NSwgMjI0LCAxNzYsIDIwNCwgMTg1LCAyNTEsIDg5LCAyMTYsIDI4LCA1NCwgMjUxLCAKKyAgICAxNTMsIDIwNCwgMTg1LCA0LCAyMzgsIDUsIDE2LCAzNiwgMjEyLCAyMiwgMjA4LCAyNTUsIDIwMSwgMTY0LCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMTAsIDEzMSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIxOSwgMTA3LCAyMDEsIDE2NCwgMjM2LCAyMTksIAorICAgIDExMiwgMjA2LCAxNTcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMDYsIDc0LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyMCwgCisgICAgMjA2LCA3MSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIzNywgMTA3LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyMCwgMjM3LCAKKyAgICAxMDYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTI2LCAyMzcsIDEwNiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMzYsIDIyOSwgCisgICAgMjM3LCAxMDYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMDksIDk2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIzNywgNjEsIAorICAgIDIwOSwgOTQsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMzgsIDIyNywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjYsIDIzOCwgCisgICAgMjI1LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIzNywgNjEsIDIzOCwgMjI1LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIxMCwgMTM2LCAKKyAgICAyMzgsIDIyNSwgMjM2LCAyMTksIDIxOCwgOTIsIDEwMiwgMjEyLCAyNDAsIDIxOCwgOTMsIDEwMiwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDEwNSwgMjEyLCAyNDAsIDIxOCwgOTMsIDE0NywgMjEyLCAyNDAsIDIxOCwgOTMsIDE0OSwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDE2NCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE4NywgMjEyLCAyNDAsIDIxOCwgOTMsIDIxMCwgMTM1LCAyMTIsIDI0MCwgCisgICAgMjE4LCA5MywgMTkyLCAyMTIsIDI0MCwgMjE4LCA5MywgMjE5LCAxMTMsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDYsIDE2NiwgCisgICAgMjEyLCAyNDAsIDIxOCwgOTMsIDIzOCwgMTk5LCAyMTIsIDI0MCwgMjE4LCA5MywgMjA0LCAxNjQsIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAyMzcsIDEwNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjMzLCA4MiwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgCisgICAgNjEsIDIzMywgODIsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIwNiwgNTAsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMDIsIAorICAgIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMDUsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNDcsIDQsIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAxNDksIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNjQsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxODcsIDQsIDIxMiwgCisgICAgMjQwLCAyMTgsIDkzLCAyMTAsIDEzNSwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE5MiwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIAorICAgIDIxOSwgMTEzLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjA2LCAxNjYsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzgsIDE5OSwgCisgICAgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNCwgMTY0LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCAxMDQsIDQsIDIxMiwgCisgICAgMjQwLCAyMTgsIDkzLCAxMTIsIDIzMywgODIsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDYxLCAyMzMsIDgyLCA0LCAKKyAgICAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMDYsIDUwLCAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMDYsIDUxLCAyNDcsIAorICAgIDIyNCwgMjQyLCAxNTMsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDYxLCAyMDYsIDUwLCAyMTIsIDI0MCwgMjE4LCA5MywgCisgICAgMjA2LCAxNjcsIDIwNiwgNTAsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMTMsIDEwNSwgMTEyLCAyMzMsIDgyLCA4LCA0LCAxLCAKKyAgICAyMTMsIDEwNSwgMjQ3LCAyMjMsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDksIDEwNiwgMjI1LCA2MiwgMTksIDIxMiwgMjQwLCAKKyAgICAyMTgsIDkzLCAyMzcsIDEwNSwgMjM5LCAyMCwgMTksIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDEwNSwgMjA2LCA1MCwgCisgICAgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjMzLCA4MywgMjA2LCA1MCwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxOTksIDgyLCAKKyAgICAyMDYsIDcxLCAyMDQsIDE4NSwgMTcsIDEwNSwgMjA0LCAxODUsIDE3LCAxNDcsIDk4LCA0OCwgMTgyLCA0OCwgODcsIDQ4LCAKKyAgICAxOTEsIDQ4LCA0OSwgNTEsIDQ4LCAxMTUsIDEyNywgNDgsIDE1NywgMjAxLCA0OCwgNDgsIDE1NywgMjM5LCAxNCwgNDgsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDQ4LCA5OCwgNTUsIDMsIDk3LCA4NywgNTUsIDMsIAorICAgIDk3LCA5OCwgMjAxLCA3OCwgNDgsIDg3LCAyMDEsIDc4LCA0OCwgOTgsIDEyMCwgMjM0LCAxMzQsIDQ4LCAxODIsIDEyMCwgCisgICAgMjM0LCAxMzQsIDQ4LCA4NywgMTIwLCAyMzQsIDEzNCwgNDgsIDE5MSwgMTIwLCAyMzQsIDEzNCwgNDgsIDk4LCA1NSwgMywgCisgICAgMjA3LCA2LCA4NywgNTUsIDMsIDIwNywgNiwgOTgsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDU1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA4NywgNTUsIDIzNiwgMjAxLCAxNDgsIDE5MSwgNTUsIDIzNiwgMjAxLCAxNDgsIDExNSwgMTI3LCA1NSwgMywgMjQ5LCA2NCwgCisgICAgOTgsIDU1LCAzLCAxMTcsIDg3LCA1NSwgMywgMTE3LCA5OCwgNTUsIDMsIDIyNCwgNzQsIDg3LCA1NSwgMywgMjI0LCA3NCwgCisgICAgNDksIDUxLCAyMDEsIDc4LCA0OCwgNDksIDUxLCA1NSwgMywgOTcsIDE5MSwgMTk5LCAyNywgNDgsIDE4MiwgNTUsIDMsIAorICAgIDIwNSwgMjI0LCAyMjUsIDE4LCAxODIsIDU1LCAzLCAyMDUsIDIyNCwgMjEzLCAzNSwgMTkxLCA1NSwgMywgMjA1LCAyMjQsIAorICAgIDIyNSwgMTgsIDE5MSwgNTUsIDMsIDIwNSwgMjI0LCAyMTMsIDM1LCA4NywgNTUsIDMsIDI0MywgMTYsIDIzOSwgMTY1LCAKKyAgICAxOTEsIDU1LCAzLCAyNDMsIDE2LCAyMjUsIDE4LCAyNTEsIDQ3LCAyMDUsIDE1OCwgMjEwLCAxNzAsIDQ4LCAyNDYsIDExMiwgCisgICAgMjA1LCAxNTgsIDIxMCwgMTcwLCA0OCwgMTU3LCAyMDEsIDQ4LCA1NSwgMjA1LCAxODYsIDE2OCwgMTQ4LCA5OCwgNTUsIAorICAgIDIwNSwgMTg2LCAyNDksIDc3LCAxMTksIDg3LCA1NSwgMjA1LCAxODYsIDE0OCwgMjUxLCA0NywgMTc2LCAyNDYsIDE1NiwgCisgICAgNDgsIDI0NiwgMTEyLCAxNzYsIDI0NiwgMTU2LCA0OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDIwMywgMjE2LCA5OCwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgMjM5LCAxNjUsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCAzNSwgMTgyLCAyMzQsIDE2MSwgMywgCisgICAgMTU0LCAyMjUsIDE4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjAzLCAyMTYsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIAorICAgIDE2NSwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDM1LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIyNSwgMTgsIDg3LCAKKyAgICA1NSwgMTE5LCA5OCwgNDgsIDE4MiwgNTUsIDk4LCA3NiwgMTkxLCA0OCwgOTgsIDU1LCAxMTksIDg3LCA0OCwgOTgsIDIxNiwgCisgICAgMTg4LCAyNTAsIDE5OSwgMTgyLCAyMTYsIDE4OCwgMjUwLCAxOTksIDg3LCAyMTYsIDE4OCwgMjUwLCAxOTksIDE5MSwgMjE2LCAKKyAgICAxODgsIDI1MCwgMTk5LCA5OCwgMjM0LCAxNjEsIDExOSwgODcsIDIzNCwgMTYwLCA4NywgMjM0LCAxNjEsIDExOSwgOTgsIAorICAgIDIzNCwgMTYwLCA5OCwgNTMsIDU1LCAzLCA5NywgNDksIDUxLCA1MywgNTUsIDMsIDk3LCA4NywgNTMsIDU1LCAzLCA5NywgCisgICAgOTgsIDUzLCA0OCwgMTgyLCA1MywgNDgsIDg3LCA1MywgNDgsIDE5MSwgNTMsIDQ4LCA0OSwgNTEsIDUzLCA0OCwgMTE1LCAKKyAgICAxMjcsIDUzLCA0OCwgMTU3LCAyMDEsIDQ4LCA1MywgNDgsIDE1NywgMjM5LCAxNCwgNTMsIDQ4LCAyMDgsIDI1NCwgMjM5LCAKKyAgICAxNCwgNTMsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNTMsIDQ4LCA5OCwgMjA1LCA4MywgNDgsIDg3LCAyMDUsIDgzLCA0OCwgCisgICAgOTgsIDIwOCwgMTg2LCA0OCwgODcsIDIwOCwgMTg2LCA0OCwgMTgyLCA1NSwgMywgNTMsIDk3LCAxOTEsIDU1LCAzLCA1MywgCisgICAgOTcsIDk4LCAyNDEsIDI0MywgNDgsIDE4MiwgMjQxLCAyNDMsIDQ4LCA4NywgMjQxLCAyNDMsIDQ4LCAxOTEsIDI0MSwgMjQzLCAKKyAgICA0OCwgOTgsIDU1LCAyMDUsIDE4NiwgMTQ4LCA4NywgNTUsIDIwNSwgMTg2LCAxNDgsIDk4LCA2NCwgNDgsIDE4MiwgNjQsIAorICAgIDQ4LCA4NywgNjQsIDQ4LCAxOTEsIDY0LCA0OCwgMTgyLCA2NCwgNTUsIDIzNiwgMjAxLCAxNDgsIDE4MiwgNjQsIDU1LCAKKyAgICAyMTcsIDc5LCAyMTYsIDY0LCAxODIsIDY0LCA1NSwgMjE3LCA3OSwgMjE2LCA2NSwgMywgMjMzLCAxNzcsIDE0OCwgMTgyLCAKKyAgICA2NCwgNTUsIDIxNywgNzksIDIxNiwgNjUsIDMsIDgzLCAxNDgsIDE4MiwgNjQsIDUzLCA0OCwgMTgyLCA2NCwgNTMsIDU1LCAKKyAgICAyMTcsIDc5LCAyMTYsIDY0LCA4NywgNjQsIDU1LCAyMzYsIDIwMSwgMjAxLCAxMDIsIDE1NywgMjAxLCA0OCwgNTUsIDIwNSwgCisgICAgMTg2LCAyNDMsIDE1LCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDIwNSwgMTg2LCAyNDMsIDE1LCAxMTUsIDEyNywgNjQsIDQ4LCAKKyAgICA1MSwgNTUsIDMsIDQsIDI0NiwgMTU1LCAxOTEsIDU1LCA5OCwgNzYsIDE4MiwgNDgsIDEyNiwgODcsIDI1MCwgMTk5LCA5OCwgCisgICAgNTUsIDMsIDgzLCA5NywgODcsIDU1LCAzLCA4MywgOTcsIDQ5LCA1MSwgNTUsIDMsIDgzLCA5NywgOTgsIDU1LCAzLCA1MywgCisgICAgODMsIDk3LCA4NywgNTUsIDMsIDUzLCA4MywgOTcsIDQ5LCA1MSwgNTUsIDMsIDUzLCA4MywgOTcsIDk4LCAyMTcsIDUxLCAKKyAgICA0OCwgODcsIDIxNywgNTEsIDQ4LCA0OSwgNTEsIDIxNywgNTEsIDQ4LCAzNiwgMjUxLCAxMjQsIDI0NiwgNjUsIDIxNiwgCisgICAgMTA4LCAyNDEsIDQ4LCAyMDYsIDk3LCAyMzgsIDM4LCAyMDYsIDk3LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIzOCwgMzksIAorICAgIDIzOCwgMTgxLCAyMTAsIDE0MSwgMjI4LCAxMDYsIDIyMCwgMTUyLCAyMzgsIDIwMiwgMjE3LCAxMTcsIDIxOCwgMjE1LCAKKyAgICAyNTEsIDg2LCAyMzgsIDIwMiwgMjE3LCAxMTcsIDQsIDIzOCwgMjAyLCAyMTcsIDExNywgMjQzLCA0NCwgMjUwLCAxODksIAorICAgIDIyMiwgNDQsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQzLCA0NiwgMjUwLCAxODksIDIyMiwgNDQsIDQsIDI0MywgNDQsIDI1MCwgCisgICAgMTg5LCAyMjIsIDQ0LCAyMzgsIDE3MSwgNzYsIDIxNCwgMjQ3LCAyMjAsIDIxMywgMjE1LCAxLCAyMjAsIDIxMywgMjQzLCAKKyAgICAyMSwgMjIwLCAyMTMsIDIwNywgMjMxLCAyMjEsIDE1NywgNTQsIDIyMSwgMTU1LCA1NCwgNzMsIDIxNSwgMTEzLCAyNDAsIAorICAgIDIzNSwgMjA5LCA3NSwgMjEwLCAxNDIsIDIyMSwgMTU2LCAyNTAsIDE2NiwgMjE3LCA0MywgMjEzLCAyNywgMjE3LCA0MywgCisgICAgMjQ4LCAyMSwgMjE3LCA0MywgNTIsIDIxMiwgMjM0LCAyNDIsIDIxMCwgMjEyLCAyMzQsIDIzNiwgMjIyLCAyMTIsIDIzNCwgCisgICAgMjE0LCAyNDMsIDEzOCwgMjI4LCA5NCwgNTEsIDI1MSwgNzAsIDI1MSwgNzAsIDIyMiwgNzMsIDI1MSwgNzAsIDIwOCwgMjI0LCAKKyAgICAyNTEsIDcwLCAyNDAsIDIzNywgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDAsIDI0MSwgMjE2LCAxMjEsIDEzOCwgMjE4LCAyMTUsIAorICAgIDIxNiwgMTIxLCAxMzgsIDIyNCwgOTgsIDI1MSwgNzksIDIyNCwgOTgsIDIxNywgMzMsIDIyOCwgNTUsIDIwMywgMjQxLCAKKyAgICAyMjgsIDY5LCA1MywgMjI4LCA2OSwgMjA1LCA4MywgMjI4LCA2OSwgMjQzLCAzOCwgMjI4LCA2OSwgMjA3LCAyMDMsIDIyOCwgCisgICAgNjksIDIwMiwgMTgxLCAyMjgsIDY5LCAyNDYsIDExMiwgMjI4LCA2OSwgMjQ2LCAxMTIsIDI0MywgMzgsIDIyOCwgNjksIAorICAgIDI1MSwgNDcsIDI0MywgMzgsIDIyOCwgNjksIDIwNiwgOTYsIDI0OCwgMjU0LCAyMTMsIDIwMCwgMjE0LCAyNDQsIDczLCAKKyAgICAyMjEsIDE1NiwgMjM4LCA0NiwgMjM1LCAyNTIsIDIxNCwgMjQ0LCAyMzMsIDE5MiwgMjA1LCAyNDEsIDIxNywgNDMsIDIxMywgCisgICAgMTA1LCAyMDUsIDI0MCwgMjI4LCA1MCwgMjI1LCA0NywgMjEyLCAxMjIsIDIwOSwgMTQxLCAyMDEsIDc3LCAyMDAsIDIyNiwgCisgICAgMjE1LCAxLCAyMTgsIDIxNSwgMjA1LCAyNDAsIDIyMSwgMTU3LCAyMDUsIDI0MCwgMjUwLCAxNTksIDE2MCwgMTM4LCAyMTgsIAorICAgIDIxNSwgMjUwLCAxNTksIDE2MCwgMTM4LCAyNTEsIDQsIDE2MCwgMTM4LCAyNTEsIDQsIDI0NywgMjQ3LCAyMTgsIDIxNSwgCisgICAgMjUxLCAyNDAsIDE2MCwgMTM4LCAyMjAsIDI2LCAyNTEsIDQsIDIxOCwgMjI0LCAyNTEsIDI0MCwgMTYwLCAxMzgsIDI1MSwgCisgICAgMTE3LCAxNjAsIDEzOCwgMjE4LCAyMTUsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjUxLCAxMTcsIDE2MCwgMjE3LCAzNCwgMTYwLCAKKyAgICAxMzgsIDIwNSwgODMsIDIwNSwgMjQwLCAyNTEsIDEyNSwgMTYwLCAxMzgsIDIzOCwgMTE3LCAxMzgsIDIzNSwgMjUxLCAyMzgsIAorICAgIDExNywgMTM4LCAyNDEsIDQ5LCAyNDgsIDIwNSwgMjUxLCA2LCAyMDYsIDEwNywgMjI0LCAxODQsIDIzNSwgMjUxLCAxNjAsIAorICAgIDEzOCwgMjUxLCA0LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMDYsIDEwNywgMjI4LCAxMzMsIDIxNywgMTE3LCAyMjgsIAorICAgIDEzMywgNzYsIDIxNywgMzQsIDI1MSwgNCwgMTYwLCAxMzgsIDI0NiwgODAsIDIzOCwgMTIxLCAyMzgsIDEyMiwgMjQ2LCA3OSwgCisgICAgMjEzLCAyNywgMjI4LCAxMTgsIDE2MCwgMTM4LCAyMTMsIDI3LCAxNjAsIDEzOCwgMjQzLCA5LCAxMzgsIDIzOCwgODUsIAorICAgIDIzOCwgMTIwLCAxMzgsIDIwOCwgMTEwLCAyMzgsIDEyMSwgMjQxLCAxMzcsIDE2MCwgMTM4LCAxNjAsIDIwNSwgMTg2LCAKKyAgICAyNDcsIDIzNSwgMjQxLCAxNTYsIDIyMiwgNzMsIDI0NywgMjM0LCAyMTQsIDc3LCAxNjAsIDEzOCwgMjE4LCAyMTUsIDE2MCwgCisgICAgMTM4LCAyMzIsIDIyMywgMTM4LCAyMTgsIDIxNSwgMjMyLCAyMjMsIDEzOCwgMjA4LCA1NCwgMjM4LCAxMTcsIDEzOCwgMjI0LCAKKyAgICAyNDEsIDIxNywgMzQsIDE2MCwgMTM4LCAyMzUsIDY3LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDExOSwgMTYwLCAKKyAgICAxMzgsIDIzNSwgNjcsIDExOSwgMTYwLCAxMzgsIDIyNCwgMjQxLCAyNDcsIDI0NywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMzUsIAorICAgIDY3LCAyNDcsIDI0NywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMjEsIDM1LCAyMjQsIDI0MCwgMjIxLCAzNSwgMjM1LCA2NiwgCisgICAgMjQ4LCAyMDUsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMTgsIDIxNSwgMjI0LCAyNDAsIDIxOCwgMjE1LCAyMzUsIDY2LCAKKyAgICAyMjAsIDI2LCAyMjQsIDI0MSwgMjE4LCAyMjQsIDE2MCwgMTM4LCAyMjAsIDI2LCAyMzUsIDY3LCAyMTgsIDIyNCwgMTYwLCAKKyAgICAxMzgsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMzgsIDExNywgMTM4LCAyMzUsIDY3LCAyMTcsIDM0LCAyMzgsIDExNywgMTM4LCAKKyAgICAyMjAsIDI2LCAyMjQsIDI0MSwgMjE4LCAyMjQsIDIzOCwgMTE3LCAxMzgsIDIyMCwgMjYsIDIzNSwgNjcsIDIxOCwgMjI0LCAKKyAgICAyMzgsIDExNywgMTM4LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjM1LCA2NiwgMjM1LCA2NywgMjE3LCAzNCwgMjI0LCAyNDAsIAorICAgIDIyMCwgMjYsIDIyNCwgMjQxLCAyMTgsIDIyNCwgMjM1LCA2NiwgMjIwLCAyNiwgMjM1LCA2NywgMjE4LCAyMjQsIDIyNCwgCisgICAgMjQwLCAyMTUsIDI4LCAyMDcsIDI1MCwgMjE1LCAyOSwgMjE3LCAzNCwgMTYwLCAxMzgsIDIwNywgMjUxLCAyMTcsIDM0LCAKKyAgICAxNjAsIDEzOCwgMjE1LCAyOSwgMjE3LCAzNCwgMjM4LCAxMTcsIDEzOCwgMjA3LCAyNTEsIDIxNywgMzQsIDIzOCwgMTE3LCAKKyAgICAxMzgsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjE1LCAzMSwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMDcsIDI1MiwgMjA4LCAzLCAKKyAgICAyMTcsIDExNywgMjA3LCAyMTIsIDIxNywgMTE3LCAyMTgsIDIxNSwgMzUsIDIwOCwgMywgMjE3LCAxMTcsIDIxOCwgMjE1LCAKKyAgICAzNSwgMjA3LCAyMTIsIDIxNywgMTE3LCAyMDgsIDMsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjA3LCAyMTIsIDc2LCAyMTcsIAorICAgIDM0LCAxNjAsIDEzOCwgMjIwLCAyNiwgMzUsIDIwOCwgMywgNzYsIDIxOCwgMjI0LCAxNjAsIDEzOCwgMjIwLCAyNiwgMzUsIAorICAgIDIwNywgMjEyLCA3NiwgMjE4LCAyMjQsIDE2MCwgMTM4LCAyMDgsIDMsIDc2LCAzLCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgCisgICAgMjEyLCA3NiwgMywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMjEsIDE2LCAyMjEsIDE3LCAyMjEsIDE4LCAyMjEsIDE3LCAyMDMsIAorICAgIDI0MSwgNTIsIDIyOCwgMTMzLCAyMTcsIDExNywgNTIsIDIxNywgMjUsIDIxNywgMTE3LCA1MiwgMjI4LCAxMzMsIDc2LCAKKyAgICAyMTcsIDM0LCAxNjAsIDEzOCwgNTIsIDIxNywgMjUsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgNTIsIDI0NywgMTQ0LCA1MiwgCisgICAgMjQyLCAyMDIsIDQ0LCAyMTUsIDExMywgNDQsIDIyMSwgMTU2LCA0NCwgMjA1LCAyMzIsIDQ0LCAyNDAsIDIzNSwgMjA5LCAKKyAgICA3NSwgNDQsIDczLCAyMTcsIDQzLCA0NCwgMjEzLCAyNywgMjE3LCA0MywgNDQsIDI1MCwgMTY2LCAyMTcsIDQzLCA0NCwgCisgICAgMjM4LCAxMjEsIDQ0LCAyNDEsIDI0NCwgOTUsIDIxNSwgMTEzLCA5NSwgMjIxLCAxNTYsIDk1LCAyMDUsIDIzMiwgOTUsIDczLCAKKyAgICAyMTcsIDQzLCA1MSwgMjA3LCAxNywgNDksIDIwNywgMTcsIDEyNywgMjA3LCAxNywgMTE1LCAyMDcsIDE3LCAyNTAsIDE2OSwgCisgICAgMjIxLCAxMzEsIDIwNSwgNjEsIDIzNiwgMjQ4LCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgNTEsIDIwNCwgMTg0LCA1MywgODMsIAorICAgIDI0OSwgNzcsIDUzLCA1MSwgMjA0LCAxODQsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjE0LCAyMzgsIDIxOCwgMjE1LCAyMDUsIAorICAgIDYxLCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIzNiwgMjQ5LCAyMjAsIDI4LCA1MywgODMsIDI0OSwgNzcsIDUzLCA1MSwgMjA0LCAKKyAgICAxODQsIDIxNSwgMjksIDIwMywgMjUzLCAyMTMsIDE0OSwgMjA3LCAyNTEsIDIwMywgMjUzLCAyMTMsIDE0OSwgMjE4LCAyMjEsIAorICAgIDIwOCwgMTYsIDIxNywgMTE3LCAyNDMsIDQ0LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTUsIDIxOCwgMjIxLCAyMDgsIAorICAgIDE2LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDI0MywgNDQsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNiwgMjE3LCAzNCwgCisgICAgMTYwLCAxMzgsIDIxNywgMjUsIDIxNywgMTE3LCAyMjgsIDEzMywgMjE3LCAxMTcsIDIyMSwgMjMsIDIzNCwgOTYsIDI0MywgCisgICAgNTUsIDIyMiwgMTI1LCAyMjgsIDY2LCAyMDAsIDE1NSwgMjIwLCAxMzIsIDIxOCwgMjIzLCA1MSwgMjUxLCA3MSwgMywgMjUwLCAKKyAgICAyMzYsIDUxLCAyMDUsIDk4LCAyMjAsIDIxMywgMjI0LCA5OCwgMjUxLCA3OSwgMjIwLCAyMTMsIDIyNCwgOTgsIDIxNywgMzMsIAorICAgIDIyMCwgMjEzLCAyMjgsIDU1LCAyMjAsIDIxMywgMjAzLCAyNDEsIDI0MSwgNjUsIDIxNywgNDMsIDczLCAyMTcsIDQzLCAKKyAgICAyMDgsIDExMCwgMjE3LCA0MywgMjQwLCAyMzUsIDIwNSwgMjMyLCAyNDgsIDc5LCA0OSwgMjE4LCAyMjEsIDIzNywgMTc5LCAKKyAgICAyMTAsIDE2NiwgMjE1LCAxLCA1MSwgMjE4LCAyMjEsIDIzNywgMTc5LCAyMTAsIDE2NiwgMjE1LCAxLCA0OSwgMjEwLCAxNjYsIAorICAgIDIxNSwgMSwgNTEsIDIxMCwgMTY2LCAyMTUsIDEsIDIxMywgMTA1LCAyMDUsIDI0MSwgMjM4LCAxMjEsIDI0MiwgMTk2LCAKKyAgICAyMjQsIDk4LCAyMTcsIDMzLCAyNDIsIDE5NiwgMjI0LCA5OCwgMjUxLCA3OSwgNTMsIDIwOCwgMiwgNTMsIDIwNywgMjExLCAKKyAgICA1MywgMjI4LCA1NSwgNTMsIDIwMywgMjQxLCAyMTUsIDE0MCwgMTYwLCAyNiwgMjE2LCAxMjEsIDEzOCwgMjI0LCAyNDEsIDMsIAorICAgIDI0MCwgMTgyLCAyMzUsIDY3LCAzLCAyNDAsIDE4MiwgMjAyLCAyNDYsIDIyMSwgMzUsIDIyNCwgMjQwLCAyMDIsIDI0NiwgCisgICAgMjIxLCAzNSwgMjM1LCA2NiwgMjI0LCAyNDEsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIDIzNSwgNjcsIAorICAgIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMTYwLCAKKyAgICAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NiwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjE1LCAyOCwgMTYwLCAyMDUsIAorICAgIDE4NiwgMjE3LCAzNCwgMjA3LCAyNTAsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjE1LCAzMiwgMjE3LCAzNCwgMjM4LCAxMjMsIAorICAgIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjA3LCAyNTMsIDIxNywgMzQsIDIzOCwgMTIzLCAyMTgsIDIxNSwgNTIsIDIyOCwgMTMzLCAKKyAgICA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDIxOCwgMjE1LCA1MiwgMjE3LCAyNSwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCA1MiwgCisgICAgMjI4LCAxMzMsIDc2LCAyMTcsIDM0LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDUyLCAyMTcsIDI1LCA3NiwgMjE3LCAzNCwgMjE4LCAKKyAgICAyMTUsIDE2MCwgMTM4LCAyMjQsIDI0MSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMzUsIDY3LCAyNDcsIAorICAgIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIxNSwgMjksIDI0NywgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgCisgICAgMjA3LCAyNTEsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjE4LCAyMTUsIDIxOCwgMjIxLCAyMDgsIDE2LCAKKyAgICAyMTcsIDExNywgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDMsIDQ2LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTUsIDIxOCwgCisgICAgMjE1LCAyMTgsIDIyMSwgMjA4LCAxNiwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MywgCisgICAgNDYsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNiwgMjE3LCAzNCwgMjM4LCAxMjMsIDgzLCAyMzgsIDE5NSwgMjIxLCAKKyAgICAyMDIsIDIzMywgMTc3LCAyMzgsIDE5NSwgMTE1LCA1MSwgMjQxLCA3MSwgMjM4LCAxOTUsIDEyNywgNTEsIDI0MSwgNzEsIAorICAgIDIzOCwgMTk1LCAyMzgsIDIwMiwgNzYsIDMsIDE2OCwgMjMzLCAxNzcsIDk3LCAyMzgsIDIwMiwgNzYsIDMsIDgzLCAyNDksIAorICAgIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDQsIDIzOCwgMjAyLCA3NiwgMywgODMsIDI0OSwgCisgICAgNzcsIDI1MCwgMTU2LCAyMzgsIDE3MSwgNzYsIDIzMywgMTc3LCA5NywgMjM4LCAyMDIsIDc2LCAzLCA3MywgNTYsIDIzOCwgCisgICAgMjAyLCA3NiwgMywgMjE2LCAyNDYsIDQsIDIzOCwgMjAyLCA3NiwgMywgMjE2LCAyNDYsIDIzOCwgMjAyLCA3NiwgMywgMjAzLCAKKyAgICAyNTEsIDIzOCwgMjAyLCA3NiwgMywgMTIwLCAyMzMsIDE3NywgMjA4LCAzNCwgMjQzLCA0NCwgMywgMTY4LCAyMzMsIDE3NywgCisgICAgOTcsIDI0MywgNDQsIDMsIDgzLCAyNDksIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDQsIAorICAgIDI0MywgNDQsIDMsIDgzLCAyNDksIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDI0MywgNDQsIAorICAgIDMsIDIxNiwgMjQ2LCA0LCAyNDMsIDQ0LCAzLCAyMTYsIDI0NiwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyNDksIDExNCwgMjIyLCAKKyAgICA0MywgMjQxLCA2NiwgNTQsIDIzOCwgMjA0LCA0OCwgMjMzLCAxMDksIDExNSwgMjUwLCAyMDIsIDEyNywgMjUwLCAyMDIsIAorICAgIDIxNCwgMjUxLCAyMTYsIDgsIDIwMSwgNzQsIDIyNCwgMTc2LCA0OSwgMjQ3LCA2NCwgNTEsIDI0NywgNjQsIDQ5LCAyMzcsIAorICAgIDMxLCA1MSwgMjM3LCAzMSwgMjQ4LCA5MywgNTEsIDI0MiwgMjM2LCAyNDgsIDkzLCA0OSwgMjQyLCAyMzYsIDIwNSwgMTU4LCAKKyAgICA1MSwgMjQyLCAyMzYsIDIwNSwgMTU4LCA0OSwgMjQyLCAyMzYsIDIxMywgMTA1LCAyMTgsIDIxNSwgNTQsIDUyLCAyMjQsIAorICAgIDQ5LCAyNTAsIDIzNiwgMjExLCAxODMsIDIxMSwgMTkxLCAyMDYsIDE3NiwgMjEzLCAxNzksIDIxNSwgNzAsIDIyOCwgOTksIAorICAgIDIwMiwgMjIyLCAyMDgsIDE5MywgMjE1LCAxMzQsIDc2LCAyMjgsIDY1LCA1NCwgMjA0LCAxODUsIDIxOCwgMjE1LCA1NCwgCisgICAgMjAxLCA4NCwgMjMzLCAxMTEsIDIwNSwgMTU4LCA0OSwgMjQzLCAxNSwgMjA1LCAxNTgsIDUxLCAyNDMsIDE1LCAyNDgsIDkzLCAKKyAgICA0OSwgMjQzLCAxNSwgMjQ4LCA5MywgNTEsIDI0MywgMTUsIDIwNSwgMTU4LCAxNjcsIDIyOCwgNjksIDI0OCwgOTMsIDE2NywgCisgICAgMjI4LCA2OSwgMjM2LCAxOTYsIDIwOSwgNDgsIDExNSwgMjUwLCAyMDMsIDI0OCwgMjA2LCAxMjAsIDIzMywgMTc3LCAyNDksIAorICAgIDY2LCAyMTcsIDM2LCAyMjYsIDIxNCwgMjM4LCAxMTMsIDIwNSwgMTg2LCAyMDYsIDEwNywgMjEzLCA0NiwgMjAwLCAxOTYsIAorICAgIDIyOCwgMTE4LCAzNSwgMjEzLCAxNzYsIDI0OCwgNzgsIDIyNiwgMjEyLCAyMjUsIDIzLCAyNTEsIDcxLCAxNTksIDIxMywgCisgICAgNDEsIDI1MSwgNzEsIDE1OSwgMjM4LCAxMTMsIDIwNSwgMTg2LCAyMDYsIDEwNywgMjI1LCAyOCwgMjQ4LCAyMTcsIDIxMywgCisgICAgMjYsIDI0MiwgMTYzLCAyNTEsIDEyNSwgMjUwLCAyMTEsIDIwNywgMTE0LCAyMDUsIDE0MywgMjEyLCAxNTQsIDI0MSwgMjgsIAorICAgIDIxNywgMjYsIDI0MywgNTksIDIwNiwgMjM0LCAyMDksIDYxLCAyNDMsIDUsIDI0MywgNCwgMjUxLCAyMiwgMjM2LCAxNzksIAorICAgIDE2LCAyMzMsIDE2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIwOCwgMTg0LCAyMTQsIDk0LCAyNTEsIDIyLCAyMzYsIDE3OSwgCisgICAgMTYsIDIxNCwgOTUsIDIzOCwgMTIzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0MCwgMjQxLCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0MSwgNjQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjI3LCAxNTMsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQ2LCAxNTUsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAKKyAgICAxNTYsIDIwOCwgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDIyNywgMTUzLCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDIwOSwgNzYsIDE0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDksIDEyNSwgMTQ4LCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIwOSwgNzUsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQ5LCAxMjQsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjI0LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgCisgICAgMjM1LCA2NiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCA5OCwgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCA4NywgCisgICAgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCA5OCwgNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjE0LCA5NSwgODcsIDQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyNDksIDEyNCwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAxMjcsIDIwNywgMTgsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgMTM3LCAyMDgsIAorICAgIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDEyNywgMjQ3LCAxMjksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjE0LCA5NSwgMjQxLCAxMzYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTI3LCAyMDcsIDE4LCAyMjcsIDE1MywgMjUxLCAKKyAgICAyMiwgMjM2LCAxNzksIDE2LCAxODIsIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMTgyLCA0OCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIDIwNywgMTgsIDIxNiwgMjQ2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDI0MSwgMTQ5LCAyMDgsIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDExNSwgMjQ3LCAxMjksIDI1MSwgCisgICAgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQxLCAxNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAyMDcsIDE4LCAKKyAgICAyMjcsIDE1MywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxOTEsIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjE0LCA5NSwgMTkxLCA0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDYyLCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyNDEsIDEzNywgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCA2NSwgMjAzLCAyNTEsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjI3LCAxNTQsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgCisgICAgMTU2LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIDIxMCwgNiwgMjI3LCAxNTMsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjE0LCA2MiwgMjE0LCA5NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjA4LCAKKyAgICAxMDksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQ2LCA3OSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIAorICAgIDIwNywgMTgsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCAxNDksIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjA4LCAxMTAsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjI3LCAxNTQsIDI0MSwgNzQsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTI3LCAKKyAgICAyMTAsIDYsIDIwOCwgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgNDksIDIxMCwgNiwgMjA4LCA4NCwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMDUsIDI0MSwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMzUsIDY3LCAyNDEsIDc0LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgNzEsIDE0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDE0OSwgCisgICAgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTk5LCAyNiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMDgsIDg1LCAKKyAgICAyMDUsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTAsIDE2OCwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAKKyAgICAxNiwgMjE0LCA5NSwgMjE4LCAyMTUsIDIzOCwgMTIzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIxNCwgNzgsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTI3LCAyNDcsIDEzMCwgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMTE1LCAyNDcsIDEzMCwgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjI4LCA0MSwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyMTMsIDkwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNywgODMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjUxLCAxMTMsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIzOCwgMTI1LCAyMDMsIDI1MSwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMjgsIDQyLCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTcsIDg0LCAyMDMsIAorICAgIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNTEsIDExMiwgMjE4LCAyMTUsIDI0NywgNywgODEsIDUxLCAyNTEsIDcxLCAKKyAgICAzLCAxOTEsIDE5OSwgMjcsIDQ4LCAyMDksIDIzMiwgMTc2LCAyNDgsIDc4LCAyNDgsIDIzMSwgOTksIDgzLCAyMjQsIDE3NywgCisgICAgMywgMTAxLCAyNDAsIDE4MiwgMjI4LCA3NSwgOTksIDI0MywgMzksIDIwMywgMjQ5LCA5OSwgMjQxLCAxLCAyMDMsIDI0OSwgCisgICAgOTksIDIzOCwgMTgzLCA5OSwgMjQzLCA3NCwgOTksIDY0LCA1MiwgMywgMjQ3LCA1NiwgODMsIDIyNCwgMTc2LCAyMzgsIAorICAgIDE1NSwgOTksIDI1MSwgMTA0LCAyMjYsIDIxNSwgOTksIDIzNCwgMTA5LCA5OSwgNDQsIDIzMywgMTc3LCAyNDksIDc3LCAzLCAKKyAgICAyMTgsIDIxMiwgNDQsIDIwNSwgOTksIDIzOSwgMTY3LCAyNDgsIDQ2LCAyNDYsIDE1NiwgMywgMjE4LCAyMTgsIDQ4LCAyMDMsIAorICAgIDI0NywgOTksIDIyMSwgOTIsIDk5LCAyMzMsIDI5LCA5OSwgMjE3LCA1MiwgMjM0LCAyNDYsIDk5LCAyMTcsIDUyLCAyMjUsIAorICAgIDE5MSwgOTksIDIxNiwgOTgsIDk5LCAyMTYsIDk3LCA5OSwgMjQxLCAxMCwgMjQyLCAxOTQsIDE2LCAyMzYsIDI0MiwgMTA1LCAKKyAgICAyMDksIDIxLCA5OSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk0LCAyNDEsIDE2OCwgMjEwLCAxNTUsIDIyNiwgCisgICAgMjE1LCA5OSwgMjE1LCAxNiwgMjE2LCAxOTUsIDIyMCwgMiwgMjE2LCAxOTUsIDIxNSwgMTEsIDIxMSwgMjEwLCA5OSwgMjQ2LCAKKyAgICAxMjcsIDIxMSwgMjEwLCA5OSwgNDksIDIxNiwgMTE2LCAyMDMsIDIyNSwgMTE3LCA0OSwgMjE2LCAxMTYsIDIzOCwgMzEsIAorICAgIDQ5LCAyMTYsIDExNiwgMjI0LCA1NCwgMTE3LCA1MSwgMjE2LCAxMTYsIDIwMywgMjI1LCAxMTcsIDUxLCAyMTYsIDExNiwgCisgICAgMjM4LCAzMSwgNTEsIDIxNiwgMTE2LCAyMjQsIDU0LCAxMTcsIDQ5LCA1MiwgMjQ4LCA3MCwgMjAzLCAyMjUsIDI0MywgMTUsIAorICAgIDQ5LCA1MiwgMjQ4LCA3MCwgMjM4LCAzMSwgNDksIDUyLCAyNDgsIDcwLCAyMjQsIDU0LCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgCisgICAgNzAsIDIwMywgMjI1LCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgNzAsIDIzOCwgMzEsIDUxLCA1MiwgMjQ4LCA3MCwgMjI0LCAKKyAgICA1NCwgMjQzLCAxNSwgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAyMDMsIDIyNSwgMTE3LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIAorICAgIDEwMSwgMjE1LCAxOTYsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjI0LCA1NCwgMTE3LCAyNDIsIDE5NiwgMjQ4LCA3MCwgCisgICAgMjM4LCAzMSwgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAyMDMsIDIyNSwgMTE3LCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIAorICAgIDEwMSwgMjE1LCAxOTYsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjI0LCA1NCwgMTE3LCAyMjgsIDcwLCAyMzgsIDMxLCAKKyAgICAyMzMsIDE3NywgMjI0LCAxNzcsIDIzOCwgMzEsIDIwMywgMjI1LCA0OSwgMjE3LCAzNCwgMjI0LCA1NCwgNTEsIDI0MiwgCisgICAgMTk2LCAyNDgsIDcwLCAyMTEsIDE5MiwgMjAzLCAyMjUsIDUxLCAyMTcsIDM0LCAyMjQsIDU0LCA0OSwgMjQyLCAxOTYsIAorICAgIDI0OCwgNzAsIDIxMSwgMTkyLCAyMDcsIDIzMiwgMjA1LCAxNTcsIDIwNywgMjMyLCAyNDgsIDkyLCAyMDUsIDE1OCwgNTIsIAorICAgIDE1OSwgMjQ4LCA5MywgNTIsIDE1OSwgMjQ4LCA5MywgNTIsIDI0OCwgNzAsIDExOSwgMjA1LCAxNTgsIDUyLCAxNTksIDQyLCAKKyAgICAxNiwgMjQ4LCA5MiwgNDksIDgzLCAxMDAsIDIyNCwgMTc2LCA1MSwgODMsIDEwMCwgMjI0LCAxNzYsIDIzMywgMTc3LCAyMTEsIAorICAgIDIyOCwgMjI0LCAxNzUsIDIzMywgMTc3LCAyMTEsIDIyOCwgMjI0LCAxNzQsIDIzMywgMTc3LCAyMTEsIDIyOCwgMjI0LCAKKyAgICAxNzMsIDIzMywgMTc3LCAyMTEsIDIyOCwgMjI0LCAxNzIsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDIwNSwgMTU4LCAKKyAgICAyMTMsIDQ2LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyNDgsIDkzLCAyMTMsIDQ2LCAyNDEsIDEyOCwgMTYsIDE2MiwgCisgICAgODMsIDMsIDI0NiwgMTU1LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzcsIDMsIDI0NiwgMTU1LCAyNDEsIAorICAgIDEyOCwgMTYsIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzcsIDMsIDI0NiwgMTU1LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDMsIAorICAgIDIwNSwgOTgsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NywgMywgMjA1LCA5OCwgMjQxLCAxMjgsIDE2LCAKKyAgICAxNjIsIDExNSwgMjYsIDIzMywgMTc3LCAzLCAyMDUsIDk4LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyMDEsIDc3LCAKKyAgICAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzcsIDMsIDIwMSwgNzcsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMTUsIAorICAgIDI2LCAyMzMsIDE3NywgMywgMjAxLCA3NywgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc2LCAyNDEsIDEyOCwgCisgICAgMTYsIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzYsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDIwNSwgMTU4LCAyMjUsIDI4LCAKKyAgICAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyNDgsIDkzLCAyMjUsIDI4LCA1MiwgMjM2LCAyNTUsIDIxMywgMTEwLCA5OSwgCisgICAgMjM4LCAyMTgsIDk5LCA4MywgMjI0LCAxNzcsIDIzOCwgMzEsIDIyMiwgMTQsIDI0OCwgNTcsIDIyMiwgMTQsIDE2OCwgMTE5LCAKKyAgICAyMDksIDI0OSwgMjIyLCAxNCwgMjA5LCAyNTAsIDExOSwgMjI0LCA4OSwgMjIyLCAxNCwgMTY4LCAxMTksIDEyMCwgMjA5LCAKKyAgICAyMzUsIDIyMiwgMTQsIDEyMCwgMjA5LCAyMzYsIDExOSwgMjI0LCA4OSwgMjIyLCAxNCwgMTIwLCAyMDksIDIzNiwgMjI3LCAKKyAgICAxNjIsIDIyMiwgMTQsIDIwNSwgNzksIDIyMiwgMTQsIDIwNiwgMTM4LCAyMjIsIDE0LCAyMTYsIDM1LCAyMzksIDE4LCAyMzUsIAorICAgIDU5LCAyMzYsIDE3MywgMjA1LCAxNTgsIDIxNiwgMTE1LCAyNDgsIDkzLCAyMTYsIDExNSwgMjA1LCAxNTgsIDI0MiwgMTk2LCAKKyAgICAxNTksIDI0OCwgOTMsIDI0MiwgMTk2LCAxNTksIDIwNSwgMTU4LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAyNDgsIDkzLCAKKyAgICAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA2NCwgMjA1LCAxMTQsIDI0OCwgMjE3LCAyMTMsIDI3LCAzLCAyNDYsIDE1NSwgCisgICAgMjA4LCA2NiwgMjM3LCA0MiwgMjUxLCAyNTUsIDI0MiwgMTkzLCAyMzgsIDIwMywgMjI4LCA1NSwgMjQxLCAxNjgsIDIzOCwgCisgICAgMzUsIDk5LCA2MywgMjEzLCA0MSwgNTMsIDIwNSwgOTgsIDYzLCAyMjUsIDIzLCA1MywgMjA1LCA5OCwgNjMsIDIwMywgMjI3LCAKKyAgICA1MywgMjA1LCA5OCwgNjMsIDIzOSwgMTY2LCA1MywgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDUzLCAyMDUsIDk5LCAzLCA4MywgCisgICAgMTQ4LCA2MywgMjI1LCAyMywgNTMsIDIwNSwgOTksIDMsIDgzLCAxNDgsIDYzLCAyMTMsIDQxLCAyMDUsIDk5LCAzLCA1MywgCisgICAgODMsIDE0OCwgMjUxLCAxNDYsIDI0NiwgMTEzLCAyMDgsIDczLCAyMDUsIDIzMywgMjQ2LCAxMTMsIDIzMywgMTEyLCAzLCAKKyAgICAyMzcsIDIyLCAyMTIsIDExLCA2MywgMjIyLCA2NiwgMjI1LCAyMywgMjA1LCA5OCwgNjMsIDIyMiwgNjYsIDIxMywgNDEsIAorICAgIDIwNSwgOTgsIDYzLCAyMjIsIDY2LCAyMDMsIDIyNywgMjA1LCA5OCwgNjMsIDIyMiwgNjYsIDIzOSwgMTY2LCAyMDUsIDk4LCAKKyAgICA1MywgODMsIDE0OCwgNjMsIDUyLCAzNiwgMjA4LCA3NiwgNjMsIDI0NiwgMTU2LCAzNiwgMjEzLCAxODAsIDIxNSwgNTIsIAorICAgIDk5LCAyMTUsIDUyLCAyMTcsIDc3LCA5OSwgMjE1LCA1MiwgMjE3LCA3OSwgOTksIDIxNSwgNTIsIDIwOSwgNzIsIDk5LCAxNiwgCisgICAgMzYsIDIxOCwgOTcsIDE2LCAzNiwgMjA4LCAxMDUsIDc2LCAyMzQsIDEzMywgMTYsIDM2LCAyMDgsIDEwNSwgNzYsIDIwNiwgCisgICAgMTI2LCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjA2LCAxMjYsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMDUsIDExOCwgMTYsIAorICAgIDM2LCAyMzgsIDE1OCwgMTYsIDM2LCAyNTEsIDI0MywgMTYsIDM2LCAyNDgsIDIzMCwgMTYsIDM2LCAyNDksIDEyMywgMTYsIAorICAgIDM2LCAyMzMsIDE3NywgMjA3LCAxOSwgMTYsIDM2LCAyMjQsIDE3NywgMjM3LCAxMzgsIDE2LCAzNiwgODMsIDIwNywgMTksIAorICAgIDE2LCAzNiwgMjM2LCAyNDIsIDIzNywgMTM4LCAxNiwgMzYsIDI0NywgMTIxLCAyMTMsIDEwOSwgMTYsIDM2LCAyMTAsIDI5LCAKKyAgICAyMTYsIDI1NCwgMTYsIDM2LCAyMTAsIDI5LCAyMjgsIDExNywgMTYsIDM2LCAyNDEsIDIzOSwgMjI0LCAxNjcsIDIzOCwgOTYsIAorICAgIDE2LCAzNiwgMjQxLCAxMDcsIDI0MywgMzQsIDEwMiwgMTYsIDM2LCAyNDEsIDEwNywgMjQzLCAzNCwgMTA1LCAxNiwgMzYsIAorICAgIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDcsIDE2LCAzNiwgMjQxLCAxMDcsIDI0MywgMzQsIDE0OSwgMTYsIDM2LCAxODksIDI1MSwgCisgICAgMjQzLCAxNiwgMzYsIDIwNywgMTA5LCAyMjgsIDE4MCwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIwNSwgMTE5LCAyNDgsIAorICAgIDEzNCwgMTYsIDM2LCAyNDcsIDE1NiwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIyMiwgNjUsIDE2LCAzNiwgMjA4LCAwLCAxNiwgCisgICAgMzYsIDIzOCwgOTYsIDE2LCAzNiwgMjM3LCA5NywgMjEwLCAxNTQsIDE2LCAzNiwgMjM1LCA1OCwgMjEwLCAxNTQsIDE2LCAKKyAgICAzNiwgMjEzLCAxODEsIDIxMCwgMTU0LCAxNiwgMzYsIDIwMywgMjQwLCAyMTAsIDE1NCwgMTYsIDM2LCAyMDgsIDI0NCwgMTYsIAorICAgIDM2LCAyNDEsIDE0NiwgMjQ4LCAxMzgsIDk5LCAxNzYsIDI0OCwgNzgsIDE2LCAzNiwgMjIwLCA1LCAxNiwgMzYsIDI0MSwgCisgICAgMTQ3LCAyMzYsIDI0MiwgMTA1LCAxNiwgMzYsIDIwOCwgMSwgMjM2LCAyNDIsIDEwNSwgMjE3LCAxMzEsIDExNywgMjE3LCAKKyAgICAxMzEsIDI0NywgMzIsIDIxNywgMTMxLCAyMzYsIDI0NSwgMjE3LCAxMzEsIDIyOCwgNTAsIDIzNiwgMjQ1LCAyMTcsIDEzMSwgCisgICAgMjQ4LCAyMjcsIDI0OCwgMzMsIDIxNywgMTMxLCAyNDgsIDg2LCAyMDYsIDcsIDIxNywgMTMxLCAyNDgsIDY3LCAyNDksIDgyLCAKKyAgICAyMzIsIDIyMiwgMjE3LCAxMzEsIDI1MSwgOTEsIDc2LCAyNDcsIDYsIDIxNywgMTMxLCAyNDEsIDI0NCwgMjE3LCAxMzEsIAorICAgIDI0MiwgMTgyLCAyNTEsIDI0NywgMjE4LCA5NSwgMjE3LCAxMzEsIDUzLCAyNDksIDEyNCwgNDQsIDE3LCAxMDIsIDQ0LCAxNywgCisgICAgMTA1LCA0NCwgMTcsIDE0NywgNDQsIDE3LCAxNDksIDQ0LCAxNywgMTY0LCA0NCwgMTcsIDE4NywgNDQsIDE3LCAyMTAsIAorICAgIDEzNSwgNDQsIDE3LCAxOTIsIDQ0LCAxNywgMjE5LCAxMTMsIDQ0LCA0MSwgMjA2LCAxNjYsIDQ0LCA0MSwgMjM4LCAxOTksIAorICAgIDQ0LCA0MSwgMjA0LCAxNjQsIDQ0LCA0MSwgMjA2LCA2OSwgNDQsIDQxLCAyMzYsIDIyMywgNDQsIDQxLCAyMzcsIDEwOCwgCisgICAgNDQsIDQxLCAyMDksIDEwMCwgNDQsIDQxLCAyMTAsIDEzMiwgNDQsIDQxLCAyMzgsIDIyOSwgNDQsIDQxLCAyMTksIDExMCwgCisgICAgNDQsIDQxLCAyMDQsIDE1OSwgMTA2LCAxNywgMTAyLCAxMDYsIDE3LCAxMDUsIDEwNiwgMTcsIDE0NywgMTA2LCAxNywgMTQ5LCAKKyAgICAxMDYsIDE3LCAxNjQsIDEwNiwgMTcsIDE4NywgMTA2LCAxNywgMjEwLCAxMzUsIDEwNiwgMTcsIDE5MiwgMTA2LCAxNywgCisgICAgMjE5LCAxMTMsIDEwNiwgNDEsIDIwNiwgMTY2LCAxMDYsIDQxLCAyMzgsIDE5OSwgMTA2LCA0MSwgMjA0LCAxNjQsIDEwNiwgCisgICAgNDEsIDIwNiwgNjksIDEwNiwgNDEsIDIzNiwgMjIzLCAxMDYsIDQxLCAyMzcsIDEwOCwgMTA2LCA0MSwgMjA5LCAxMDAsIAorICAgIDEwNiwgNDEsIDIxMCwgMTMyLCAxMDYsIDQxLCAyMzgsIDIyOSwgMTA2LCA0MSwgMjE5LCAxMTAsIDEwNiwgNDEsIDIwNCwgCisgICAgMTU5LCAxNywgMTEyLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDEyMCwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAxMjYsIAorICAgIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjM2LCAyMjksIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjM3LCA2MSwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDE3LCAyMDksIDEwNiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMTAsIDEzNiwgMjM2LCAxODMsIAorICAgIDIwOCwgNzYsIDE3LCAyMzgsIDIzMiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMTksIDExNCwgMjM2LCAxODMsIDIwOCwgCisgICAgNzYsIDQxLCAyMDYsIDE2NywgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzgsIDIwMCwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAKKyAgICAyMDQsIDE2NSwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMDYsIDcwLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzNiwgCisgICAgMjI0LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzNywgMTA5LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIwOSwgMTAxLCAKKyAgICAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIxMCwgMTMzLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzOCwgMjMwLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgNDEsIDIxOSwgMTExLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIwNCwgMTYwLCAyMzYsIDE4MywgCisgICAgMjA4LCA3NiwgMTA2LCA4LCA0LCAxLCA2MiwgMTA2LCA4LCA0LCAxLCAyNTAsIDEwMywgMTA2LCA4LCA0LCAxLCAyNDcsIAorICAgIDIyMywgMTA2LCA4LCA0LCAxLCAyNDIsIDE1MywgMTA2LCA4LCA0LCAxLCA3MiwgMTA2LCA4LCA0LCAxLCAyMzgsIDUsIDEwNiwgCisgICAgOCwgNCwgMSwgMjM2LCAxNTYsIDEwNiwgOCwgNCwgMSwgMjM0LCAyNDcsIDEwNiwgOCwgNCwgMSwgNzAsIDEwNiwgOCwgNCwgCisgICAgMSwgMjI3LCAyNTEsIDEwNiwgOCwgNCwgMSwgMjI3LCAxMTgsIDEwNiwgOCwgNCwgMSwgMTU2LCAxMDYsIDgsIDQsIDEsIAorICAgIDIyMywgMjQzLCAxMDYsIDgsIDQsIDEsIDIyMCwgMjE0LCAxMDYsIDgsIDQsIDEsIDc0LCAxMDYsIDgsIDQsIDEsIDIxNiwgCisgICAgMjI2LCAxMDYsIDgsIDQsIDEsIDIxNCwgMTY3LCAxMDYsIDgsIDQsIDEsIDE0NiwgMTA2LCA4LCA0LCAxLCAyMTIsIDEyMiwgCisgICAgMTA2LCA4LCA0LCAxLCAyMDcsIDgzLCAxMDYsIDgsIDQsIDEsIDY2LCAxMDYsIDgsIDQsIDEsIDIwMywgMTY4LCAxMDYsIDgsIAorICAgIDQsIDEsIDIwMSwgMTQ3LCAxMDYsIDgsIDQsIDEsIDIwMCwgMTk1LCAxMDYsIDgsIDQsIDEsIDIwMCwgMTIzLCAxMDYsIDgsIAorICAgIDQsIDEsIDE5OSwgMTU3LCA0NCwgOCwgNiwgMSwgNjIsIDQ0LCA4LCA2LCAxLCAyNTAsIDEwMywgNDQsIDgsIDYsIDEsIDI0NywgCisgICAgMjIzLCA0NCwgOCwgNiwgMSwgMjQyLCAxNTMsIDQ0LCA4LCA2LCAxLCA3MiwgNDQsIDgsIDYsIDEsIDIzOCwgNSwgNDQsIDgsIAorICAgIDYsIDEsIDIzNiwgMTU2LCA0NCwgOCwgNiwgMSwgMjM0LCAyNDcsIDQ0LCA4LCA2LCAxLCA3MCwgNDQsIDgsIDYsIDEsIDIyNywgCisgICAgMjUxLCA0NCwgOCwgNiwgMSwgMjI3LCAxMTgsIDQ0LCA4LCA2LCAxLCAxNTYsIDQ0LCA4LCA2LCAxLCAyMjMsIDI0MywgNDQsIAorICAgIDgsIDYsIDEsIDIyMCwgMjE0LCA0NCwgOCwgNiwgMSwgNzQsIDQ0LCA4LCA2LCAxLCAyMTYsIDIyNiwgNDQsIDgsIDYsIDEsIAorICAgIDIxNCwgMTY3LCA0NCwgOCwgNiwgMSwgMTQ2LCA0NCwgOCwgNiwgMSwgMjEyLCAxMjIsIDQ0LCA4LCA2LCAxLCAyMDcsIDgzLCAKKyAgICA0NCwgOCwgNiwgMSwgNjYsIDQ0LCA4LCA2LCAxLCAyMDMsIDE2OCwgNDQsIDgsIDYsIDEsIDIwMSwgMTQ3LCA0NCwgOCwgNiwgCisgICAgMSwgMjAwLCAxOTUsIDQ0LCA4LCA2LCAxLCAyMDAsIDEyMywgNDQsIDgsIDYsIDEsIDE5OSwgMTU3LCA0NCwgOCwgNCwgMSwgCisgICAgNjIsIDQ0LCA4LCA0LCAxLCAyNTAsIDEwMywgNDQsIDgsIDQsIDEsIDI0NywgMjIzLCA0NCwgOCwgNCwgMSwgMjQyLCAxNTMsIAorICAgIDQ0LCA4LCA0LCAxLCA3MiwgNDQsIDgsIDQsIDEsIDIzOCwgNSwgNDQsIDgsIDQsIDEsIDIzNiwgMTU2LCA0NCwgOCwgNCwgMSwgCisgICAgMjM0LCAyNDcsIDQ0LCA4LCA0LCAxLCA3MCwgNDQsIDgsIDQsIDEsIDIyNywgMjUxLCA0NCwgOCwgNCwgMSwgMjI3LCAxMTgsIAorICAgIDQ0LCA4LCA0LCAxLCAxNTYsIDQ0LCA4LCA0LCAxLCAyMjMsIDI0MywgNDQsIDgsIDQsIDEsIDIyMCwgMjE0LCA0NCwgOCwgNCwgCisgICAgMSwgNzQsIDQ0LCA4LCA0LCAxLCAyMTYsIDIyNiwgNDQsIDgsIDQsIDEsIDIxNCwgMTY3LCA0NCwgOCwgNCwgMSwgMTQ2LCAKKyAgICA0NCwgOCwgNCwgMSwgMjEyLCAxMjIsIDQ0LCA4LCA0LCAxLCAyMDcsIDgzLCA0NCwgOCwgNCwgMSwgNjYsIDQ0LCA4LCA0LCAKKyAgICAxLCAyMDMsIDE2OCwgNDQsIDgsIDQsIDEsIDIwMSwgMTQ3LCA0NCwgOCwgNCwgMSwgMjAwLCAxOTUsIDQ0LCA4LCA0LCAxLCAKKyAgICAyMDAsIDEyMywgNDQsIDgsIDQsIDEsIDE5OSwgMTU3LCA0NCwgMTcsIDE5OSwgODEsIDE4OSwgNDQsIDQxLCAyMzgsIDE5OSwgCisgICAgMTg5LCA0NCwgNDEsIDIwNCwgMTY0LCAxODksIDQ0LCA0MSwgMjA2LCA2OSwgMTg5LCA0NCwgNDEsIDIzNiwgMjIzLCAxODksIAorICAgIDQ0LCA0MSwgMjM3LCAxMDgsIDE4OSwgNDQsIDQxLCAyMDksIDEwMCwgMTg5LCA0NCwgNDEsIDIxMCwgMTMyLCAxODksIDQ0LCAKKyAgICA0MSwgMjM4LCAyMjksIDE4OSwgNDQsIDQxLCAyMTksIDExMCwgMTg5LCA0NCwgNDEsIDIwNCwgMTU5LCA1MywgNDQsIDE3LCAKKyAgICAxMDIsIDUzLCA0NCwgMTcsIDEwNSwgNTMsIDQ0LCAxNywgMTQ3LCA1MywgNDQsIDE3LCAxNDksIDUzLCA0NCwgMTcsIDE2NCwgCisgICAgNTMsIDQ0LCAxNywgMTg3LCA1MywgNDQsIDE3LCAyMTAsIDEzNSwgNTMsIDQ0LCAxNywgMTkyLCA1MywgNDQsIDE3LCAyMTksIAorICAgIDExMywgNTMsIDQ0LCA0MSwgMjA2LCAxNjYsIDE4OSwgNDQsIDE3LCAxOTksIDgxLCAxMDAsIDEyMSwgMTYyLCAyMzMsIDE3NiwgCisgICAgMTAwLCAxMjEsIDgwLCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCAyMDMsIDQyLCAKKyAgICAxMDAsIDEyMSwgMTYyLCAyMDUsIDgzLCAyNDEsIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCA4MCwgMjA1LCA4MywgMjQxLCAKKyAgICAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAyMDUsIDgzLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCAKKyAgICAyMDUsIDgzLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDE2MiwgMjE0LCA5MCwgMjQxLCAyNDUsIDIzMywgMTc2LCAKKyAgICAxMDAsIDEyMSwgODAsIDIxNCwgOTAsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMjE0LCA5MCwgMjQxLCAKKyAgICAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgMjE0LCA5MCwgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCAxNjIsIAorICAgIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDUxLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDEyNywgCisgICAgODAsIDI2LCA1MSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MCwgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMTI3LCAKKyAgICAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNDksIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIAorICAgIDQ5LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgwLCAxMjcsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCAKKyAgICAyMTMsIDQ2LCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCA1MSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNTEsIAorICAgIDIyNCwgMTk2LCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIDIyNSwgCisgICAgMjgsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDQ5LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA0OSwgMjI0LCAKKyAgICAxOTYsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgODMsIDI2LCAyMTMsIDQ2LCAxMDAsIAorICAgIDEyMSwgODMsIDE2MiwgMjYsIDUxLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA1MSwgMTI3LCAyMjQsIDE5NiwgCisgICAgMTAwLCAxMjEsIDEyNywgODAsIDI2LCA1MSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCA4MCwgMjYsIDUxLCAyMjQsIAorICAgIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNTEsIDExNSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIAorICAgIDUxLCAxMjcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgODAsIDgzLCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgODMsIDI2LCAKKyAgICAyMjUsIDI4LCAxMDAsIDEyMSwgODMsIDE2MiwgMjYsIDQ5LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA0OSwgCisgICAgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgODAsIDI2LCA0OSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCAKKyAgICA4MCwgMjYsIDQ5LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNDksIDExNSwgMjM0LCAxMjEsIDEwMCwgCisgICAgMTIxLCAxMTUsIDE2MiwgMjYsIDQ5LCAxMjcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgODAsIDgzLCAyNiwgMjI1LCAyOCwgMTAwLCAKKyAgICAxMjEsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCA0OSwgODAsIDI2LCA1MSwgMTI3LCAyMjQsIDE5NiwgCisgICAgMTAwLCAxMjEsIDUxLCA4MCwgMjYsIDQ5LCAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCAyMzMsIAorICAgIDE3NywgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIAorICAgIDE2MiwgMjYsIDQ5LCAxMjcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgNDksIDE2MiwgMjYsIDUxLCAxMjcsIDIzNCwgMTIxLCAKKyAgICAxMDAsIDEyMSwgODAsIDEyNywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NiwgMTAwLCAKKyAgICAxMjEsIDQ5LCA4MCwgMjYsIDUxLCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIDgwLCAyNiwgNDksIDExNSwgMjI0LCAKKyAgICAxOTYsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDIzMywgMTc3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCAKKyAgICAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCA1MSwgMTYyLCAyNiwgNDksIDExNSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAKKyAgICA0OSwgMTYyLCAyNiwgNTEsIDExNSwgMjM0LCAxMjEsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMjMzLCAxNzYsIDEwMCwgCisgICAgMTIxLCAxNjIsIDgzLCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCA0OSwgODAsIDI2LCA1MSwgODMsIDIyNCwgMTk2LCAxMDAsIAorICAgIDEyMSwgNTEsIDgwLCAyNiwgNDksIDgzLCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCAxNjIsIDI2LCAyMzMsIDE3NywgMjM0LCAKKyAgICAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgMTI3LCAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDgwLCAKKyAgICAyNiwgMTE1LCAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgODAsIDI2LCAyMzMsIDE3NywgMjI0LCAxOTYsIAorICAgIDEwMCwgMTIxLCA0OSwgMTE1LCA4MCwgMjYsIDUxLCAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIDExNSwgODAsIDI2LCAKKyAgICA0OSwgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDQ5LCAxMjcsIDgwLCAyNiwgNTEsIDExNSwgMjI0LCAxOTYsIDEwMCwgCisgICAgMTIxLCA1MSwgMTI3LCA4MCwgMjYsIDQ5LCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCAxMTUsIAorICAgIDIzMywgMTc3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgMTI3LCAyMzMsIDE3NywgMjM0LCAxMjEsIDEwMCwgCisgICAgMTIxLCA1MSwgMTYyLCAyNiwgNDksIDgzLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDQ5LCAxNjIsIDI2LCA1MSwgODMsIDIzNCwgCisgICAgMTIxLCAxMDAsIDEyMSwgODAsIDgzLCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDUzLCAyNDEsIDI0NSwgMjMzLCAKKyAgICAxNzYsIDEwMCwgMTIxLCA4MCwgNTMsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgNTMsIDI0MSwgMjQ1LCAKKyAgICAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIDUzLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDUzLCAyMzMsIDE3NiwgCisgICAgMTAwLCAxMjEsIDUzLCAyMDMsIDQyLCAxMDAsIDEyMSwgMTI3LCAyMDksIDEzOSwgMjYsIDUxLCAyMzksIDE3NSwgMTAwLCAKKyAgICAxMjEsIDEyNywgNTMsIDI2LCA1MSwgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIAorICAgIDEyNywgMjA5LCAxMzksIDI2LCA0OSwgMjM5LCAxNzUsIDEwMCwgMTIxLCAxMjcsIDUzLCAyNiwgNDksIDIwOSwgMTM4LCAKKyAgICAxMDAsIDEyMSwgNTMsIDEyNywgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxMTUsIDIwOSwgMTM5LCAyNiwgNTEsIDIzOSwgCisgICAgMTc1LCAxMDAsIDEyMSwgMTE1LCA1MywgMjYsIDUxLCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMTUsIDI2LCAyMTMsIDQ2LCAKKyAgICAxMDAsIDEyMSwgMTE1LCAyMDksIDEzOSwgMjYsIDQ5LCAyMzksIDE3NSwgMTAwLCAxMjEsIDExNSwgNTMsIDI2LCA0OSwgCisgICAgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTE1LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDgzLCAyMDksIDEzOSwgMjYsIDUxLCAKKyAgICAyMzksIDE3NSwgMTAwLCAxMjEsIDgzLCA1MywgMjYsIDUxLCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCA4MywgMjYsIDIxMywgCisgICAgNDYsIDEwMCwgMTIxLCA4MywgMjA5LCAxMzksIDI2LCA0OSwgMjM5LCAxNzUsIDEwMCwgMTIxLCA4MywgNTMsIDI2LCA0OSwgCisgICAgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgODMsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTI3LCAyMDksIDEzOSwgMjYsIAorICAgIDIzMywgMTc3LCAyMzksIDE3NSwgMTAwLCAxMjEsIDEyNywgNTMsIDI2LCAyMzMsIDE3NywgMjA5LCAxMzgsIDEwMCwgMTIxLCAKKyAgICA1MywgMTI3LCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxMTUsIDIwOSwgMTM5LCAyNiwgMjMzLCAxNzcsIDIzOSwgMTc1LCAKKyAgICAxMDAsIDEyMSwgMTE1LCA1MywgMjYsIDIzMywgMTc3LCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMTUsIDI2LCAyMzMsIAorICAgIDE3NiwgMTAwLCAxMjEsIDgzLCAyMDksIDEzOSwgMjYsIDIzMywgMTc3LCAyMzksIDE3NSwgMTAwLCAxMjEsIDgzLCA1MywgCisgICAgMjYsIDIzMywgMTc3LCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCA4MywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAKKyAgICAyNTAsIDIzNywgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMjUwLCAyMzcsIDEyNywgMjYsIDIyNSwgMjgsIAorICAgIDEwMCwgMTIxLCAxNjIsIDI1MCwgMjM3LCAxMTUsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCAyNTAsIDIzNywgMTE1LCAKKyAgICAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMjQxLCA3MSwgMjAzLCAyMjUsIDUxLCAyMDUsIDE4NiwgMjI0LCA1NCwgCisgICAgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgMjQxLCA3MSwgMjAzLCAyMjUsIDQ5LCAyMDUsIDE4NiwgMjI0LCA1NCwgMjEzLCAKKyAgICA0NiwgMTAwLCAxMjEsIDE2MiwgMjQxLCA3MSwgMjQyLCAyMzQsIDEwMCwgMTIxLCAxNjIsIDIyNSwgMjgsIDEwMCwgMTIxLCAKKyAgICAxNjIsIDIwMywgMjI4LCAxMDAsIDEyMSwgMTYyLCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAyMzksIDE2NywgMTAwLCAxMjEsIAorICAgIDgwLCAyMjUsIDI4LCAxMDAsIDEyMSwgODAsIDIwMywgMjI4LCAxMDAsIDEyMSwgODAsIDIxMywgNDYsIDEwMCwgMTIxLCA4MCwgCisgICAgMjM5LCAxNjcsIDEwMCwgMTIxLCAxNjIsIDQ5LCAyNiwgODAsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIDgwLCAKKyAgICAyMzksIDE2NywgMTAwLCAxMjEsIDgwLCA0OSwgMjYsIDE2MiwgMjEzLCA0NiwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAxNjIsIAorICAgIDIzOSwgMTY3LCAyMDMsIDIyNSwgMTY3LCAyNDgsIDEzNCwgMjI0LCA1NCwgMTEyLCAyMzgsIDIyOCwgMjQ4LCAxMzQsIDIyNCwgCisgICAgNTQsIDExMiwgMjE0LCA4OCwgMjQ4LCAxMzQsIDIyNCwgNTQsIDEyNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCAyMjQsIDU0LCAKKyAgICAxNjcsIDI0OCwgMTM0LCAyMjQsIDU0LCAyMzcsIDYxLCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDIyNCwgNTQsIDEyNiwgMjE0LCAKKyAgICA4NiwgMjQ4LCAxMzQsIDIyNCwgNTQsIDIxMCwgMTM2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDIzNiwgMTgzLCAyNDgsIDEzNCwgCisgICAgNDksIDIxMCwgMTM2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDQ5LCAxMjYsIDIxNCwgODYsIDI0OCwgMTM0LCA0OSwgMjM3LCAKKyAgICA2MSwgMjM4LCAyMjYsIDI0OCwgMTM0LCA0OSwgMTY3LCAyNDgsIDEzNCwgNDksIDEyNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCAKKyAgICA0OSwgMTEyLCAyMTQsIDg4LCAyNDgsIDEzNCwgNDksIDExMiwgMjM4LCAyMjgsIDI0OCwgMTM0LCA1MSwgMTY3LCAyNDgsIAorICAgIDEzNCwgMTYyLCAyMTAsIDEwMywgMjIyLCA2NiwgMjEwLCAxMDMsIDI0MSwgMjUwLCAyMTAsIDEwMywgMjAzLCAyMjUsIDExMiwgCisgICAgMjM4LCAyMjgsIDI0OCwgMTM0LCA1MSwgMTEyLCAyMzgsIDIyOCwgMjQ4LCAxMzQsIDIxNCwgOTIsIDIyNCwgNTQsIDIyNSwgCisgICAgMjgsIDIxNCwgOTIsIDIyNCwgNTQsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCAyMjUsIDI4LCAyMTQsIDkyLCAyMDMsIAorICAgIDIyNSwgNDksIDI2LCAyMjQsIDU0LCA0OSwgMjYsIDIyNCwgNTQsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCA0OSwgCisgICAgMjYsIDIyNCwgNTQsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCA0OSwgMjYsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgCisgICAgNTQsIDIyNSwgMjgsIDIxNCwgOTIsIDIwMywgMjI1LCA0OSwgMjYsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgNTQsIDIxMywgCisgICAgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIDU0LCAyMjUsIAorICAgIDI4LCAyMTQsIDkyLCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIDU0LCA0OSwgMjYsIDIyNCwgNTQsIDIxMywgNDYsIDYzLCAKKyAgICAyMDgsIDE5MywgNjQsIDIwOCwgMTkzLCA2NCwgNTIsIDMsIDIxMiwgMjE5LCAyNDMsIDE0LCA2NCwgNTIsIDI0MywgNDUsIAorICAgIDYzLCA0LCAyMDgsIDE5MywgNTIsIDMsIDIzMywgMTc3LCAyMzcsIDk1LCA1MiwgMywgODMsIDIzNywgOTUsIDUyLCAzLCAKKyAgICAyMTcsIDE3LCAyNDIsIDIyOSwgMjM3LCA5NSwgNTIsIDMsIDIwMywgMjI1LCA0OSwgMjA1LCAxODYsIDIyNCwgNTQsIDUxLCAKKyAgICAyMzcsIDk1LCA1MiwgMywgMjAzLCAyMjUsIDUxLCAyMDUsIDE4NiwgMjI0LCA1NCwgNDksIDIzNywgOTUsIDUyLCAzLCAyNDEsIAorICAgIDcxLCAyNDIsIDIyOSwgMjM3LCA5NSwgNjMsIDQsIDIwOCwgMTkzLCA2NCwgNCwgMjA4LCAxOTMsIDYzLCAyMTMsIDE3NSwgCisgICAgNjQsIDIxMywgMTc1LCA2MywgODMsIDIxMywgMTc1LCA2NCwgODMsIDIxMywgMTc1LCA2MywgMjE2LCAxMTksIDY0LCAyMTYsIAorICAgIDExOSwgNjMsIDIwMywgMjI3LCAyMDUsIDk4LCA2NCwgMjAzLCAyMjcsIDIwNSwgOTgsIDYzLCAyMDMsIDIyNywgNCwgMjA1LCAKKyAgICA5OCwgNjQsIDIwMywgMjI3LCA0LCAyMDUsIDk4LCA2MywgMjEzLCA0MSwgMjA1LCA5OCwgNjQsIDIxMywgNDEsIDIwNSwgOTgsIAorICAgIDYzLCAyMTMsIDQxLCA0LCAyMDUsIDk4LCA2NCwgMjEzLCA0MSwgNCwgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDIxNSwgOTcsIAorICAgIDY0LCAyMTMsIDQxLCAyMTUsIDk3LCA2MywgMjM5LCAxNjYsIDIwNSwgOTgsIDY0LCAyMzksIDE2NiwgMjA1LCA5OCwgNjMsIAorICAgIDIzOSwgMTY2LCA0LCAyMDUsIDk4LCA2NCwgMjM5LCAxNjYsIDQsIDIwNSwgOTgsIDYzLCAyMjUsIDIzLCAyMDUsIDk4LCA2NCwgCisgICAgMjI1LCAyMywgMjA1LCA5OCwgNjMsIDIyNSwgMjMsIDQsIDIwNSwgOTgsIDY0LCAyMjUsIDIzLCA0LCAyMDUsIDk4LCA2MywgCisgICAgMjI1LCAyMywgMjE1LCA5NywgNjQsIDIyNSwgMjMsIDIxNSwgOTcsIDYzLCAyNDEsIDY0LCA2NCwgMjQxLCA2NCwgNjQsIAorICAgIDI0MSwgNjUsIDI0MywgNDUsIDYzLCA0LCAyNDEsIDY0LCAyMzcsIDcwLCAyMjQsIDQ5LCA2NCwgMjQ2LCAxNTUsIDIzOSwgCisgICAgMTgwLCAyNDYsIDE1NSwgMjQ2LCAxNTYsIDMsIDgzLCAyMzcsIDk1LCAyNDgsIDE2LCA2MywgMjQ2LCAxNTUsIDI0NiwgMTU2LCAKKyAgICAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgMjI0LCAKKyAgICA1NCwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDIwMywgMjI1LCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgCisgICAgMjAzLCAyMjUsIDUxLCAyMTQsIDkyLCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDI1MSwgMTI1LCAyNDcsIDI0NywgMjAzLCAKKyAgICAyMjUsIDQ5LCAyMTQsIDkyLCAyNDgsIDE0NCwgNDksIDE2NywgNjMsIDI0NiwgMTU1LCA1MSwgMTY3LCA2MywgMjQ2LCAxNTUsIAorICAgIDIyOCwgNTEsIDI0OCwgMjAsIDIyOCwgNTEsIDY0LCAyNDYsIDE1NSwgMjAzLCAyMjUsIDE2NywgMjI4LCA1MSwgNjQsIDI0NiwgCisgICAgMTU1LCAyMjQsIDU0LCAxNjcsIDIyOCwgNTEsIDY0LCAyNDYsIDE1NSwgMjAzLCAyMjUsIDQ5LCAyMTQsIDkyLCAyNDYsIAorICAgIDE0OSwgMjUwLCAyMzYsIDIwMywgMjI1LCA1MSwgMjE0LCA5MiwgMjQ2LCAxNDksIDI1MCwgMjM2LCAyMjQsIDU0LCA1MSwgCisgICAgMjE0LCA5MiwgMjQ2LCAxNDksIDI1MCwgMjM2LCAyMjQsIDU0LCA0OSwgMjE0LCA5MiwgMjQ2LCAxNDksIDI1MCwgMjM2LCAKKyAgICAyMDMsIDIyNSwgMTY3LCAyNDYsIDE1NSwgMjI0LCA1NCwgMTY3LCAyNDYsIDE1NSwgNjMsIDIyNCwgNTQsIDUxLCAyMDUsIAorICAgIDk4LCA2MywgMjI0LCA1NCwgNDksIDIwNSwgOTgsIDYzLCAyMDMsIDIyNSwgNDksIDIwNSwgOTgsIDYzLCAyMDMsIDIyNSwgCisgICAgNTEsIDIwNSwgOTgsIDY0LCAyNDgsIDIwLCA1MiwgMywgNDksIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCA1MSwgMTY3LCAyNDgsIAorICAgIDE0NCwgNTIsIDMsIDIwMywgMjI1LCA0OSwgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIDIyNCwgNTQsIDUxLCAKKyAgICAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCA2NCwgNTIsIDMsIDgzLCAyNDgsIDE1NiwgMjI0LCAxNzYsIDY0LCAyMDMsIDIyNywgCisgICAgMjA1LCA5OSwgMywgMjQwLCAxODIsIDIwMywgMjI3LCAyMDUsIDk5LCAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgMjAzLCAyMjcsIAorICAgIDIwNSwgOTksIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCAyMjUsIDcxLCAyNDYsIDE1NSwgNjQsIDUyLCAzLCAyMDMsIDIyNSwgCisgICAgNDksIDIxNCwgOTEsIDY0LCA1MiwgMywgMjI0LCA1NCwgNDksIDIxNCwgOTEsIDY0LCA1MiwgMywgMjI0LCA1NCwgNTEsIAorICAgIDIxNCwgOTEsIDY0LCA1MiwgMywgMjAzLCAyMjUsIDUxLCAyMTQsIDkxLCA2NCwgMjQ2LCAxNTYsIDMsIDIwMywgMjI1LCA0OSwgCisgICAgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMjQsIDU0LCA0OSwgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMjQsIDU0LCAKKyAgICA1MSwgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMDMsIDIyNSwgNTEsIDIxNCwgOTEsIDIwMywgMjI1LCA0OSwgMjA1LCAKKyAgICA5OCwgMjAzLCAyMjUsIDUxLCAyMDUsIDk4LCAyMjQsIDU0LCA0OSwgMjA1LCA5OCwgNjQsIDIyMiwgNjYsIDIwOCwgMTkzLCAKKyAgICA2MywgMjIyLCA2NiwgMjA4LCAxOTMsIDY0LCAyMjIsIDY2LCA0LCAyMDgsIDE5MywgNjMsIDIyMiwgNjYsIDQsIDIwOCwgCisgICAgMTkzLCAyMjQsIDU0LCA1MSwgMjA1LCA5OCwgNjMsIDIwNywgMjI5LCAzLCAyMTMsIDE5NCwgMjQ2LCAxMDEsIDIwNCwgOSwgCisgICAgMjA5LCAzMSwgMjQ2LCA3MywgNjMsIDIwOCwgMTA5LCA2NCwgMjA4LCAxMDksIDIyNCwgMTkzLCAyMDYsIDMwLCAyMDcsIAorICAgIDIyOCwgMjUwLCAxODQsIDIxOCwgMjM4LCAyNDEsIDExOCwgMjE4LCAyMzgsIDI0MywgNTQsIDIxNywgMzksIDYzLCAyMDYsIAorICAgIDE3NSwgNjQsIDIwNiwgMTc1LCAyNDksIDk0LCAyNDgsIDc4LCAyNDksIDk0LCAxMDAsIDMsIDI0NywgNiwgMjQ5LCA5NCwgCisgICAgMTAwLCAzLCAyMDAsIDE5NSwgMjEyLCAyNCwgMjA0LCAxMCwgMywgMjEzLCAyMjMsIDIzOSwgMTQ0LCAyMzMsIDExOCwgMjQ4LCAKKyAgICAyMDQsIDY0LCAyMTAsIDMsIDIxNSwgMTk2LCA2MywgMjEwLCAzLCAyMTUsIDE5NiwgMjEwLCA5MSwgMjEzLCAxMDUsIDIxMiwgCisgICAgMjI4LCAyMzcsIDI4LCAyMzQsIDEyOCwgMjQ4LCAyMCwgNjMsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgNjMsIDUxLCAyMTUsIAorICAgIDk2LCAyMjgsIDEwMywgNjQsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgNjQsIDExNSwgMjE1LCA5NiwgMjI4LCAxMDMsIDY0LCAKKyAgICA1MSwgMjE1LCA5NiwgMjI4LCAxMDMsIDY0LCAxMjcsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDgxLCAyNiwgMjQyLCAyMzMsIAorICAgIDI0NywgMTA1LCA1NCwgMjEzLCAyMzUsIDU0LCAyNDgsIDE2NCwgNTQsIDI0NywgMTgxLCAyNTEsIDYxLCAyMTcsIDE4LCAKKyAgICAyNDIsIDIzNCwgMjQ2LCAyMzcsIDIxMywgOTAsIDI0MiwgMjM1LCA3NiwgMjI0LCA2OSwgMjQyLCAyMzUsIDc2LCAyMjcsIAorICAgIDIxNywgMjA4LCAxMTAsIDI2LCAyNDIsIDI0MywgMjM3LCAxNjIsIDk5LCAyNTEsIDIyOCwgMjEwLCA5NCwgMjM0LCAyMDcsIAorICAgIDI2LCAyMDksIDE3OSwgMjE2LCA3MiwgOTksIDE5OSwgMjU1LCAyMDAsIDc1LCAyMDUsIDg4LCAzNiwgMjM0LCAxMjMsIDIwNSwgCisgICAgODgsIDM2LCAyMjUsIDk2LCAyMDUsIDg4LCAzNiwgMjM3LCA3NywgMjA1LCA4OCwgMzYsIDIwNiwgMzEsIDIwNSwgODgsIDM2LCAKKyAgICAyMDEsIDE2LCAyMDUsIDg4LCAzNiwgMjAxLCA4MiwgMjA1LCA4OCwgMzYsIDIyMSwgNjMsIDIwNSwgODgsIDM2LCAyMzksIAorICAgIDE3LCAyMDEsIDM4LCA3NiwgMjQxLCA5MiwgNjQsIDIzNiwgMTk1LCAyMzcsIDE4OSwgNjQsIDIwOSwgNDcsIDIzNywgMTg5LCAKKyAgICA2MywgMjA5LCA0NywgMjM3LCAxODksIDY0LCAyMDcsIDIyOSwgMywgMjEzLCAxOTQsIDIzNywgNzMsIDIxNCwgODgsIDIyMSwgCisgICAgODEsIDIyNSwgNjQsIDIxNCwgODgsIDIyMSwgODEsIDIyMiwgMzQsIDIzNywgMTMwLCA1NCwgMjM5LCAxNywgMjIyLCAxODUsIAorICAgIDU0LCAyMjcsIDEzMywgMjExLCAyNDQsIDIwMywgMjA5LCAyMjAsIDE4LCAyMTUsIDExMCwgMjUwLCAyMjIsIDIwNiwgMjE5LCAKKyAgICAyMzYsIDIsIDI0NywgMTU0LCAyMjQsIDI0NiwgMjAyLCAyMDYsIDIyNCwgMjA3LCAyMTEsIDIxMiwgMjEyLCA0OCwgMjQ3LCAKKyAgICAxMzksIDI1MCwgMjU0LCAyMTUsIDE0NSwgNjQsIDI0NiwgMjQ0LCAyMjYsIDE0NCwgNjQsIDI0NiwgMjQ0LCAyMTQsIDgwLCAKKyAgICA2NCwgMjQ2LCAyNDQsIDIxMiwgMjM2LCA2NCwgMjQ2LCAyNDQsIDI0OCwgMTU1LCA2NCwgMjQ2LCAyNDQsIDIyNiwgOTMsIAorICAgIDY0LCAyNDYsIDI0NCwgMjE2LCA4NCwgNjMsIDI0NiwgMjQ0LCAyMjYsIDE0NCwgNjMsIDI0NiwgMjQ0LCAyMTQsIDgwLCA2MywgCisgICAgMjQ2LCAyNDQsIDIxMiwgMjM2LCA2MywgMjQ2LCAyNDQsIDI0OCwgMTU1LCA2MywgMjQ2LCAyNDQsIDIyNiwgOTMsIDYzLCAKKyAgICAyNDYsIDI0NCwgMjE2LCA4NCwgNjMsIDIwOCwgMjQyLCAyMDcsIDI0MSwgNjQsIDIzNCwgMTI4LCAyMDcsIDI0MSwgNjQsIAorICAgIDI0MSwgNjUsIDIwNywgMjQxLCA2MywgMjQ2LCA5OCwgMjA3LCAyNDEsIDY0LCAyMDgsIDI0MiwgMjA3LCAyNDEsIDYzLCAKKyAgICAyMzQsIDEyOCwgMjA3LCAyNDEsIDYzLCAyNDEsIDY1LCAyMDcsIDI0MSwgNjQsIDI0NiwgOTgsIDIwNywgMjQxLCAyMzMsIAorICAgIDExOCwgMjA4LCAxOTgsIDIxNCwgODgsIDIxOCwgMjA5LCAyMzgsIDIyOCwgMjE4LCAyMDksIDI0OSwgNCwgMjM4LCAyMjgsIAorICAgIDIxOCwgMjA0LCAyNDksIDQsIDIwOSwgOTksIDIxOCwgMjA0LCAyMjAsIDI0NiwgMjM3LCA0NSwgNTQsIDIyMCwgMjQ2LCAKKyAgICAyMjAsIDExNywgNTQsIDIyMCwgMjQ2LCAyMTAsIDc5LCA1NCwgMjAxLCA0OCwgMjA3LCAxMDMsIDI0MiwgMjM0LCAyMzksIAorICAgIDE0LCAyMDcsIDEwMywgMjQyLCAyMzQsIDIwMywgMjM3LCAyMTMsIDE3MSwgOTksIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgCisgICAgMTI3LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAxMjUsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAKKyAgICAyMDQsIDEyNCwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgMTIyLCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAKKyAgICAzNiwgMjA0LCAxMjAsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIDExOCwgMjE1LCAxMjcsIDIxMywgMTcxLCAKKyAgICAxNiwgMzYsIDIwNCwgMTE2LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjM2LCAwLCAyMjIsIDEyNiwgNjMsIDIwMywgCisgICAgMjM3LCAyMTMsIDE3MSwgOTksIDIxMywgMTcyLCAyMTYsIDEzNCwgOTksIDIxNiwgMTA3LCAyMTYsIDEzNCwgOTksIDIxNiwgCisgICAgMTksIDIxNiwgMTM0LCA1NCwgMjAxLCAzNiwgOTksIDI0MSwgNTcsIDIzNywgMTg4LCAyNDEsIDU3LCAyMzcsIDE4NywgMjQxLCAKKyAgICA1NywgMjM3LCAxODYsIDI0MSwgNTcsIDIzNywgMTg1LCAyNDEsIDU3LCAyMzcsIDE4NCwgMjQxLCA1NywgMjM3LCAxODMsIAorICAgIDY0LCAyNDYsIDE1NiwgMywgNzMsIDIxMywgNDYsIDY0LCAyNDYsIDE1NiwgMywgMTIwLCAyNDAsIDE4MCwgNjMsIDI0NiwgCisgICAgMTU2LCAzLCA2NCwgNzMsIDIxMywgNDYsIDYzLCAyNDYsIDE1NiwgMywgMTIwLCA2NCwgMjQwLCAxODAsIDIyMSwgOTcsIDM2LCAKKyAgICAyMDAsIDc1LCAyMjEsIDk3LCAzNiwgMTk5LCAyNTQsIDI0MSwgMzgsIDM2LCAyMzUsIDY4LCAyMDAsIDc1LCAyNDEsIDM4LCAKKyAgICAzNiwgMjI0LCAyMzksIDE5OSwgMjU0LCAyNDEsIDM4LCAzNiwgMjI0LCAyMzksIDIwMCwgNzUsIDI0MSwgMzgsIDM2LCAyMzUsIAorICAgIDY4LCAxOTksIDI1NCwgNjQsIDIzNywgNTMsIDYzLCAyMzcsIDUzLCAyMzQsIDIwNywgMjYsIDIxNSwgMjAwLCAyNTEsIDgxLCAKKyAgICAyNDIsIDIzMiwgMjA3LCAxNjgsIDIwOCwgMTE4LCA3NiwgMjUxLCAyMDQsIDIxMSwgMjI5LCAyNTEsIDE0MSwgMjM3LCAyNCwgCisgICAgMjM2LCAxMiwgMjA4LCAxMTgsIDc2LCAyMzQsIDk4LCAyNTAsIDE0NywgOTksIDIzNywgNDAsIDIxNiwgMjUwLCA2NCwgMjA4LCAKKyAgICAxMDksIDEyNiwgMjI0LCAxNzEsIDI0MywgMzEsIDIxMywgNDYsIDEyNiwgMjI0LCAxNzEsIDI0MywgMzEsIDIyNSwgMjgsIAorICAgIDIwMSwgOTMsIDU0LCAxMjIsIDIwMiwgMTgyLCA1NCwgMjM5LCAxNzIsIDIzNywgMTMwLCA1NCwgMjM5LCAxNzIsIDIyMiwgCisgICAgMTg1LCA1NCwgMjI4LCA2MSwgMjM3LCAxMzAsIDI2LCAyMjIsIDE4NSwgNTQsIDIyMiwgMTg1LCAyNiwgMjM3LCAxMzAsIDU0LCAKKyAgICAyMjIsIDE4NSwgMywgMjA4LCA0NywgNTQsIDIyMiwgMTg1LCAzLCAyMDgsIDQ3LCAyNiwgMjIyLCAxODUsIDI2LCAyMzcsIAorICAgIDEzMCwgNTQsIDgzLCAyMjIsIDE4NSwgMywgMjA4LCA0NywgNTQsIDIzMywgMTc3LCAyMjIsIDE4NSwgMywgMjA4LCA0NywgCisgICAgNTQsIDIyMiwgNjYsIDY0LCAyNDYsIDE1NSwgMjIyLCA2NiwgNjMsIDI0NiwgMTU1LCAyMjIsIDY2LCA0LCA2NCwgMjQ2LCAKKyAgICAxNTUsIDIyMiwgMTQzLCA5OSwgMjQwLCAyMzMsIDk5LCAyMDMsIDIzNCwgMjE2LCAxMDYsIDk5LCAyNDYsIDg0LCAyMzYsIAorICAgIDE3OCwgMjAzLCAyMDUsIDIyMCwgMTEsIDI0NywgNDEsIDIxNiwgMTc5LCAyMjcsIDEzOSwgMjAyLCAyNDQsIDI0NiwgMjE3LCAKKyAgICA2MywgMjIxLCA4MiwgMjI0LCAxOTAsIDIxMCwgMTI1LCAyMTAsIDE2NCwgMjE0LCA3MCwgMjEwLCAxNDQsIDIwOSwgMjYsIAorICAgIDI0OSwgOTcsIDI0OSwgNjMsIDk1LCAyMjYsIDIxNCwgNjQsIDIzOSwgMTU1LCAyMjIsIDE4MCwgNjQsIDIzOSwgMTU1LCAKKyAgICAyMjYsIDE0NCwgNjMsIDIzOSwgMTU1LCAyMjIsIDE4MCwgNjMsIDIzOSwgMTU1LCAyMjYsIDE0NCwgMjA5LCAzMiwgMjAxLCAKKyAgICAzLCAyMDksIDM1LCAyMDcsIDIyOSwgMjQ4LCAyMzcsIDI0NiwgMTAxLCAyMTMsIDIyMiwgNjMsIDIwOSwgMzEsIDIwNiwgMzIsIAorICAgIDI0NiwgMTAyLCAyNiwgMjEzLCAyMjIsIDIwNCwgMTg1LCA2NCwgMjEwLCAzLCAyMTUsIDE5NiwgMjA0LCAxODUsIDYzLCAKKyAgICAyMTAsIDMsIDIxNSwgMTk2LCA2NCwgMjQxLCA2NSwgMjI4LCAxMTgsIDIwOCwgMTkzLCAyNDIsIDIyOCwgMjI1LCA3OCwgCisgICAgMjQxLCA1LCAyNDcsIDEzNSwgMjE3LCA0MiwgMjE1LCAyMDAsIDI0NywgMTM2LCAyMDksIDY1LCAyMzQsIDEwOCwgMywgNjQsIAorICAgIDI0MiwgMjM0LCA0NCwgMjQyLCAyMjgsIDIyNSwgNzgsIDI0NywgMzMsIDIxOCwgMjQyLCAyMzgsIDE0OSwgMjUxLCAxMDksIAorICAgIDIxNywgNzEsIDQ5LCAyMDEsIDY4LCAyMDUsIDEyNiwgNjMsIDIwNCwgMTM4LCA0OSwgMjAxLCA2OCwgMjA1LCAxMjYsIDY0LCAKKyAgICAyMDQsIDEzOCwgNDksIDIwMSwgNjgsIDIwNSwgMTI2LCA2MywgNDksIDIyNSwgNzksIDIyMiwgMzMsIDY0LCA0OSwgMjI1LCAKKyAgICA3OSwgMjIyLCAzMywgMjM5LCAxNTAsIDIwOSwgNTcsIDU0LCA4MCwgNjQsIDIzOSwgMTY2LCAyMDUsIDk4LCA0OSwgMjQ2LCAKKyAgICAxMTAsIDIzOCwgMTQ5LCA5NSwgMjEyLCAyNCwgMjM3LCAxNzEsIDI0MSwgNzEsIDIyOCwgMTE4LCA2NCwgMjQ2LCAxNTYsIAorICAgIDIyOCwgMTE4LCA2MywgMjA4LCAxOTMsIDYzLCAyMDUsIDYyLCAyMTMsIDExNiwgNDksIDIzOCwgMTQ4LCAyMTMsIDExNiwgCisgICAgNDksIDIzOCwgMTQ3LCAyNTAsIDE2MCwgMTYsIDM2LCAyMDMsIDIwOSwgODAsIDI0NiwgMTU2LCAzLCAyMDgsIDQ3LCAyNiwgCisgICAgMTIwLCAxOTAsIDU2LCAyMTYsIDM2LCAyMTMsIDQzLCAyMjgsIDYzLCAyMTYsIDM2LCAyMjUsIDI1LCAyMjgsIDYzLCAyMTYsIAorICAgIDM2LCAyMjgsIDUwLCAyMTYsIDM2LCA2MywgMjQyLCAyMzUsIDIxNywgNzksIDIxMCwgMzAsIDIxMCwgMTgsIDIwOSwgMjI1LCAKKyAgICAyNDYsIDE4NCwgMjQ3LCAxMTMsIDIzNCwgNDYsIDIwOSwgMTA3LCAyMzYsIDEzLCAyMDEsIDMsIDIzMywgOTQsIDIzNiwgMTMsIAorICAgIDMsIDIzNCwgMTc2LCAyMjIsIDE2NSwgMTYsIDM2LCAyMjQsIDE5NSwgMjIxLCA2MywgMjA0LCAxMCwgMjE3LCA3OSwgMjM1LCAKKyAgICA1OSwgMjM2LCAyMzAsIDIzNywgNTQsIDIyOCwgMTE4LCAyMzMsIDE5NywgMjM3LCAxMjAsIDIxMiwgNDMsIDUyLCAyMzYsIAorICAgIDIyOSwgMjQzLCAxNCwgMjA5LCA4NCwgMjMyLCAyMzIsIDIwOSwgODcsIDIxNiwgMTEsIDMsIDI0OSwgOTcsIDIwNiwgMTU4LCAKKyAgICAyMjcsIDIzNiwgMjQ5LCA4MiwgOTksIDIzNCwgMTMxLCAyMzUsIDcwLCA5OSwgMjM2LCAxODYsIDIxNCwgMjEzLCAyNDIsIAorICAgIDIwMywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA2NCwgMjM3LCA1NCwgMywgMjMzLCAxNzcsIDEwMSwgNjMsIDIwOCwgNDgsIAorICAgIDYzLCAyMTIsIDUzLCAyMTEsIDIxNiwgMjAzLCAyMjUsIDI0OCwgMTM5LCAyMTEsIDIxNiwgNjMsIDIxMSwgMjE2LCAyMjQsIAorICAgIDU0LCAyNDgsIDEzOSwgMjExLCAyMTYsIDY0LCAyMTEsIDIxNiwgNjQsIDgwLCAyNDcsIDcsIDgxLCAyMDYsIDE3NiwgMjI0LCAKKyAgICAxMDgsIDU0LCAyMDYsIDIzNSwgMjM5LCAxNDksIDI1MSwgMTY0LCAyMzgsIDE0NCwgMjEzLCAyMjAsIDIzNywgNjYsIDIxMywgCisgICAgMjIwLCAyMzQsIDE5OSwgMjAyLCAyMzIsIDIzNCwgMTk5LCAyMDAsIDIxOSwgMjM0LCAxOTksIDIyNCwgNTQsIDUxLCAyMTYsIAorICAgIDQ2LCAyMTYsIDQ2LCAyMDMsIDIyNSwgNTEsIDIxNiwgNDYsIDY0LCAyMTksIDE0NywgNjMsIDIxOSwgMTQ3LCAyNDcsIDcsIAorICAgIDgxLCA4MCwgMjQ3LCA3LCA4MSwgMjIxLCAxOSwgMjAwLCAxOTUsIDgwLCAyMjEsIDE5LCAyMDAsIDE5NSwgMjQ5LCA5NCwgCisgICAgMjAwLCAxOTUsIDgwLCAyNDksIDk0LCAyMDAsIDE5NSwgMjE2LCAyNTAsIDMxLCAyNDIsIDIzNCwgODAsIDMxLCAyNDIsIAorICAgIDIzNCwgMTc2LCAyNDcsIDU2LCAyNDIsIDIzNCwgODAsIDE3NiwgMjQ3LCA1NiwgMjQyLCAyMzQsIDgsIDI0MiwgMjM0LCAKKyAgICAyMTAsIDEwMSwgNjQsIDgsIDI0MiwgMjM0LCAyMTYsIDI1MCwgOCwgMjQyLCAyMzQsIDIyMiwgMTgyLCAyNDIsIDIzNCwgCisgICAgMjA4LCAxMTAsIDc2LCAyNDEsIDIzNywgMjM2LCAyMjksIDIwNiwgMTk0LCAyNTAsIDE2NSwgMjM2LCAyMjksIDI0OSwgOTUsIAorICAgIDI1MCwgMTY1LCA4MCwgMjM2LCAyMjksIDI0OSwgOTUsIDI1MCwgMTY1LCAyMzYsIDIyOSwgMjQ2LCA5NiwgMjUwLCAxNjUsIAorICAgIDYzLCAyMzYsIDIyOSwgMjE1LCA5OCwgMjA4LCAxMDksIDY0LCAyMzYsIDIyOSwgMjE1LCA5OCwgMjA4LCAxMDksIDIwOCwgCisgICAgMjM3LCAyMDgsIDU3LCAyMTYsIDI1MCwgNjQsIDIwOCwgMTA5LCA0NCwgNjQsIDIwOCwgMTA5LCAxNzYsIDI0NywgNTYsIDYzLCAKKyAgICAyMDgsIDEwOSwgNjMsIDI0NywgNTYsIDY0LCAyMDgsIDEwOSwgMjE2LCAyNTAsIDYzLCAyMDgsIDEwOSwgODAsIDIxNiwgCisgICAgMjUwLCA2MywgMjA4LCAxMDksIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjEwLCAxMDEsIDY0LCAyMDgsIDEwOSwgODAsIDI1MCwgCisgICAgMTY1LCAxNzYsIDI0NywgNTYsIDI1MCwgMTY1LCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMzgsIDIzMiwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCAyMzgsIDIzMiwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMDksIDEwNiwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCAyMzgsIDIzMiwgMjE1LCA5OCwgMjEzLCAxNzMsIDYzLCAyMDgsIDEwOSwgODAsIDIzOCwgCisgICAgMjMyLCAyMTUsIDk4LCAyMTMsIDE3MywgNjMsIDIwOCwgMTA5LCAyMDQsIDE2NSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAKKyAgICAyMDksIDEwMSwgMjE1LCA5OCwgMjUwLCAxNjUsIDIwNiwgMTk0LCAyNTAsIDE2NSwgMTc2LCAyNDcsIDU2LCAyMDYsIDE5NCwgCisgICAgMjUwLCAxNjUsIDgwLCAyMDYsIDE5NCwgMjUwLCAxNjUsIDIwOSwgMTA2LCAyMTUsIDI1NSwgNjMsIDI2LCA2NCwgMjM3LCAKKyAgICAyNywgNjMsIDIzNywgMjcsIDY0LCAyMzcsIDI3LCAyMzgsIDIzMiwgMjE1LCAyNTUsIDIxNiwgMjUwLCA2MywgMjM3LCAyNywgCisgICAgNDQsIDE3NiwgMjQ3LCA1NiwgMjM4LCAyMzIsIDIxNSwgOTgsIDIwOCwgMTA5LCA4MCwgMjA2LCAxOTQsIDIxNSwgMTU1LCAKKyAgICAyNTAsIDE2NSwgMjA5LCAzMywgMjA2LCAxLCAyMDUsIDkxLCAyMDksIDMzLCA4MCwgMjQ2LCAyNDAsIDIwOSwgMzMsIDIwOCwgCisgICAgMjM5LCA4MCwgMjA4LCAyMzksIDI0OSwgOTUsIDI1MCwgMTY1LCAyMzgsIDIzMiwgMjA2LCAxOTQsIDIxNCwgMjQ2LCAyNTAsIAorICAgIDE2NSwgODAsIDIzOCwgMjMyLCAyMDYsIDE5NCwgMjE0LCAyNDYsIDI1MCwgMTY1LCAyNDIsIDIzNSwgODEsIDIxMCwgMTAxLCAKKyAgICA2NCwgMjQ2LCAxNTUsIDE4OSwgOTUsIDI0MiwgMjM1LCA4MSwgMjI0LCA1NCwgNTEsIDIzOSwgMTQ2LCA2NCwgMjA4LCAxOTMsIAorICAgIDIwMywgMjI1LCA1MSwgMjM5LCAxNDYsIDY0LCAyMDgsIDE5MywgMjI0LCA1NCwgNTEsIDIxMCwgMTAxLCA2NCwgMjA4LCAKKyAgICAxOTMsIDIwMywgMjI1LCA1MSwgMjEwLCAxMDEsIDY0LCAyMDgsIDE5MywgNjMsIDIxNCwgNzksIDEzNCwgMjE3LCAyMSwgNjQsIAorICAgIDIxNCwgNzksIDEzNCwgMjE3LCAyMSwgNjQsIDIzOCwgNDMsIDEzNCwgMjE3LCAyMSwgNjMsIDI0MSwgNjUsIDIyMSwgMTU3LCAKKyAgICA2NCwgMjAwLCAxOTUsIDgwLCAyMzgsIDQzLCAxMzQsIDk5LCAxNjIsIDgzLCAxNDgsIDIyMiwgNjYsIDgzLCAxNDgsIDgwLCAKKyAgICA4MywgMTQ4LCA4MCwgMjA5LCAxMzksIDIwNCwgMTg1LCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAyMDksIAorICAgIDEzOSwgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgNTMsIDIwNCwgMTg1LCAyNDYsIDcxLCAyMTQsIDYzLCAKKyAgICAxMzQsIDIxNywgMjEsIDgwLCA1MywgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMTI4LCAyMDksIDEzOSwgCisgICAgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMTI4LCA1MywgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIAorICAgIDIxLCAyNDIsIDE4OCwgMjA4LCA5MywgMjE2LCAxMjgsIDIsIDIxNywgMjEsIDgwLCAyMzgsIDQzLCAxMzQsIDIxNywgMjEsIAorICAgIDgwLCAyMzQsIDEyOCwgMjM4LCA0MywgMTM0LCAyMTcsIDIxLCA4MCwgNjMsIDIzNCwgMTI3LCAyMTIsIDIyOCwgODAsIDYzLCAKKyAgICAyMzQsIDEyOCwgMjQ4LCAyMCwgMjM3LCAyOCwgMjM0LCAxMjcsIDIxMiwgMjI4LCAyMzcsIDI4LCAyMzQsIDEyOCwgMjQ4LCAKKyAgICAyMCwgMjIyLCA2NiwgNDksIDIxNiwgMTE2LCAyMTcsIDIxLCAyMjIsIDY2LCA1MSwgMjE2LCAxMTYsIDIxNywgMjEsIDIyMiwgCisgICAgNjYsIDIzNywgNDEsIDQ5LCAyMTYsIDExNiwgMjE3LCAyMSwgMjIyLCA2NiwgMjM3LCA0MSwgNTEsIDIxNiwgMTE2LCAyMTcsIAorICAgIDIxLCAyMjIsIDY2LCAyMjUsIDIzLCAyNTEsIDcxLCAyNDgsIDcwLCAyMTcsIDIxLCAyMjIsIDY2LCAyMTMsIDQxLCAyNTEsIAorICAgIDcxLCAyNDgsIDcwLCAyMTcsIDIxLCA4MCwgMjI1LCAyMywgMjUxLCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgCisgICAgMjEzLCA0MSwgMjUxLCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMjI1LCAyMywgMjUxLCA3MSwgMjQ4LCA3MCwgCisgICAgMjE3LCAyMSwgODAsIDIxMywgNDEsIDI1MSwgNzEsIDI0OCwgNzAsIDIxNywgMjEsIDE2MiwgNDksIDIwNSwgMTQ2LCAyMTAsIAorICAgIDU1LCAyNDgsIDcwLCAyMTcsIDIxLCAxNjIsIDUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA3MCwgMjE3LCAyMSwgMjIyLCAKKyAgICA2NiwgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAyMTcsIDIxLCAyMjIsIDY2LCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIxNywgCisgICAgMjEsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxMDIsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxMDUsIDI0MSwgMTcsIDE4OSwgCisgICAgNDQsIDE3LCAxNDcsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxNDksIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxNjQsIDI0MSwgCisgICAgMTcsIDE4OSwgNDQsIDE3LCAxODcsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAyMTAsIDEzNSwgMjQxLCAxNywgMTg5LCA0NCwgCisgICAgMTcsIDE5MiwgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDIxOSwgMTEzLCAyNDEsIDE3LCAxODksIDQ0LCA0MSwgMjA2LCAxNjYsIAorICAgIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDEwMiwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTA1LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAKKyAgICAxNDcsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE0OSwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTY0LCAyNDEsIDE3LCA0NCwgNDMsIAorICAgIDE3LCAxODcsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDIxMCwgMTM1LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxOTIsIDI0MSwgCisgICAgMTcsIDQ0LCA0MywgMTcsIDIxOSwgMTEzLCAyNDEsIDE3LCA0NCwgNDMsIDQxLCAyMDYsIDE2NiwgMjQxLCAxNywgMTg5LCAKKyAgICA0NCwgNDMsIDE3LCAxMDIsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTA1LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIAorICAgIDE0NywgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAxNDksIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTY0LCAyNDEsIAorICAgIDE3LCAxODksIDQ0LCA0MywgMTcsIDE4NywgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAyMTAsIDEzNSwgMjQxLCAxNywgCisgICAgMTg5LCA0NCwgNDMsIDE3LCAxOTIsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMjE5LCAxMTMsIDI0MSwgMTcsIDE4OSwgCisgICAgNDQsIDQzLCA0MSwgMjA2LCAxNjYsIDgwLCAyMDEsIDI3LCA4NywgNDgsIDgwLCA5MywgNTQsIDgwLCAyMjEsIDE1NywgNTQsIAorICAgIDgwLCAyNDAsIDIzNSwgNTQsIDgwLCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDgwLCA4NywgNDgsIDgwLCAxNTcsIDIzOSwgCisgICAgMTQsIDQ4LCAyMzksIDE2MCwgMjE1LCAxMDAsIDg3LCA0OCwgODAsIDIxMiwgMjIwLCA4NywgNDgsIDIwNSwgOTcsIDg3LCAKKyAgICA0OCwgODAsIDIwNSwgOTcsIDg3LCA0OCwgMjQxLCAyNDMsIDIwNSwgOTcsIDg3LCA0OCwgODAsIDI0MSwgMjQzLCAyMDUsIAorICAgIDk3LCA4NywgNDgsIDYzLCA4NywgNDgsIDIwNiwgNDUsIDIwNSwgMTU2LCA4NywgMjUwLCAyMDIsIDIwNiwgNDUsIDI0OCwgCisgICAgOTEsIDg3LCAyNTAsIDIwMiwgNjMsIDg3LCAyNTAsIDIwMiwgODAsIDYzLCAyNDIsIDE4OCwgMTkxLCAyNiwgODcsIDQ4LCAKKyAgICA4MCwgNjMsIDI0MiwgMTg4LCAxODIsIDI2LCA4NywgNDgsIDIwOCwgMTkwLCA2MywgODcsIDQ4LCA4MCwgMjQzLCA2NywgNjMsIAorICAgIDg3LCA0OCwgMjEzLCA0MCwgNjQsIDg3LCA0OCwgMjI1LCAyMiwgNjQsIDg3LCA0OCwgMjQ5LCAxMjgsIDIxMCwgMTAxLCA2NCwgCisgICAgODcsIDQ4LCAyMzYsIDE5OCwgMjEwLCAxMDEsIDY0LCA4NywgNDgsIDgwLCAyMjQsIDU0LCAyMTMsIDM5LCA2NCwgODcsIDQ4LCAKKyAgICA4MCwgMjAzLCAyMjUsIDIxMywgMzksIDY0LCA4NywgNDgsIDIxOCwgMjExLCAyMjQsIDU0LCAyMTMsIDM5LCA2NCwgODcsIAorICAgIDQ4LCAyNDIsIDE5NiwgMjI0LCA3NCwgMjE4LCAyMTEsIDIwMywgMjI1LCAyMTMsIDM5LCA2NCwgODcsIDQ4LCA0NCwgODAsIAorICAgIDY0LCA4NywgNDgsIDIwMSwgMzMsIDg3LCA0OCwgMjQ4LCAxNDMsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjQ4LCAxNDMsIAorICAgIDg3LCA0OCwgMjQ4LCAxNDMsIDE1NywgMjM5LCAxNCwgNDgsIDgwLCAyNDgsIDE0MywgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAKKyAgICA4MCwgMjQ4LCAxNDMsIDg3LCA0OCwgODAsIDI0OCwgMTQzLCAxNTcsIDIzOSwgMTQsIDQ4LCAyMDYsIDE5NiwgODcsIDQ4LCAKKyAgICA4MCwgMjA2LCAxOTUsIDg3LCA0OCwgMjAxLCA1OCwgODcsIDQ4LCA4MCwgMjAxLCA1OCwgODcsIDQ4LCAyMTcsIDQ4LCA4NywgCisgICAgNDgsIDUzLCAyNDIsIDE5NiwgMjI0LCA3NCwgMTI2LCAyNDEsIDI3LCAyNTEsIDcwLCA2NCwgMjA1LCA5OSwgMjQzLCA0NSwgCisgICAgNCwgNjQsIDIwNSwgOTgsIDIxNiwgMTQsIDE3NiwgMjA4LCAyLCAxNzYsIDIwNywgMjExLCA0OSwgMjEyLCAxMjEsIDI0OSwgCisgICAgMTE0LCAyNDEsIDE0MiwgNTEsIDIxMiwgMTIxLCAyNDksIDExNCwgMjQxLCAxNDIsIDIxNywgMzQsIDMsIDczLCAyMjgsIDczLCAKKyAgICAyMTMsIDEwNiwgMjA5LCAxNywgMjE1LCAyNywgMjA4LCAyLCAyMDcsIDIxMiwgMjE1LCAyNywgMjA5LCAxNiwgODMsIDI0OSwgCisgICAgNzcsIDMsIDIzMywgMTc3LCA5NywgMTMsIDIxMywgMTksIDI0MSwgNzAsIDE2OCwgMjQwLCAyMzQsIDEzLCAyMzcsIDE3MSwgCisgICAgMjQxLCA3MCwgOTUsIDIyNCwgOTgsIDI1MSwgNzksIDk1LCAyMjQsIDk4LCAyMTcsIDMzLCA2NCwgMjQxLCA2NSwgMywgMjQ3LCAKKyAgICA1NCwgMjQwLCAxODIsIDI2LCAzLCAyNDAsIDE4MiwgMjM4LCAyMDIsIDc2LCAyMTcsIDQ2LCAyMDMsIDIxNiwgMjI0LCA1NCwgCisgICAgNTEsIDI0MywgMTYsIDMsIDI0MCwgMTgyLCAyMDMsIDIyNSwgNDksIDI0MywgMTYsIDMsIDI0MCwgMTgyLCA0OSwgMjE2LCAKKyAgICAyNTIsIDIyNywgMTY0LCA1MSwgMjE2LCAyNTIsIDIyNywgMTY0LCAyMzYsIDE4MywgMjE2LCAyNTIsIDIyNywgMTY0LCAyMjUsIAorICAgIDcxLCAxMTUsIDIwNywgMTcsIDIyNSwgNzEsIDEyNywgMjA3LCAxNywgNDksIDI2LCA1MSwgNTMsIDIwNCwgMTg0LCA0OSwgCisgICAgMjYsIDUxLCAyMDcsIDE3LCA0OSwgMjIxLCAyMywgMTY4LCA1MSwgMjA3LCAxNywgMTY4LCA0OSwgMjA3LCAxNywgMTE1LCAKKyAgICAyMDcsIDE4LCAzLCAyNDYsIDE1NiwgNTYsIDIyNCwgNTAsIDI0MCwgMjQwLCAyNDcsIDIzNSwgMjMzLCAxNzcsIDIxMiwgCisgICAgMTY1LCA2NCwgMjQzLCA2NiwgMjQxLCA2NCwgNjQsIDI0MywgNjYsIDI0MSwgNjUsIDMsIDk4LCAyMDYsIDExLCA2NCwgMjQzLCAKKyAgICA2NiwgMjQxLCA2NSwgMywgODcsIDIwNiwgMTEsIDY0LCA1MiwgMywgOTgsIDIwNiwgMTEsIDY0LCA1MiwgMywgODcsIDIwNiwgCisgICAgMTEsIDEzLCA0OSwgNjQsIDUyLCAxNTksIDEzLCA1MSwgNjQsIDUyLCAxNTksIDEzLCA0OSwgMjUxLCA3MSwgMTU5LCAxMywgCisgICAgNTEsIDI1MSwgNzEsIDE1OSwgMTMsIDQ5LCA1MywgMjUxLCA3MSwgMTU5LCAxMywgNTEsIDUzLCAyNTEsIDcxLCAxNTksIDEzLCAKKyAgICA0OSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDEzLCA1MSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDEzLCAKKyAgICA0OSwgMjM3LCA0MSwgMjE2LCAxMTUsIDEzLCA1MSwgMjM3LCA0MSwgMjE2LCAxMTUsIDE4MiwgMjE0LCA5MCwgNDgsIDE5MSwgCisgICAgMjE0LCA5MCwgNDgsIDI1MSwgNDcsIDIzNiwgNTEsIDI0NiwgMTU2LCA0OCwgMjQ2LCAxMTIsIDIzNiwgNTEsIDI0NiwgMTU2LCAKKyAgICA0OCwgNTEsIDU1LCAzLCA0NCwgMjE1LCAxMTMsIDE2OCwgOTgsIDQ4LCAxNjgsIDg3LCA0OCwgMTY4LCA0OSwgNTEsIDQ4LCAKKyAgICAxNjgsIDk4LCA1MywgNDgsIDE2OCwgODcsIDUzLCA0OCwgMTY4LCA0OSwgNTEsIDUzLCA0OCwgMTY4LCA5OCwgNTUsIDIzNiwgCisgICAgMjAxLCAxNDgsIDE2OCwgODcsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxNjgsIDk4LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDE2OCwgODcsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgMTY4LCA4NywgMjA4LCAxODYsIDQ4LCA1OSwgNjAsIDI0OCwgMTM3LCAKKyAgICA1OSwgNjAsIDI0MCwgMTc5LCA1OSwgNjAsIDI0MCwgNTEsIDU5LCA2MCwgMjQwLCAxNzgsIDU5LCA2MCwgMjM5LCAyNDMsIAorICAgIDU5LCA2MCwgMjQwLCAxMTQsIDU5LCA2MCwgMjQwLCA1MCwgNTksIDYwLCAyNDAsIDE3NywgNTksIDYwLCAyMzksIDIxMSwgCisgICAgNTksIDYwLCAyNDAsIDgyLCA1OSwgNjAsIDI0MCwgMTgsIDU5LCA2MCwgMjQwLCAxNDUsIDU5LCA2MCwgMjM5LCAyNDIsIDU5LCAKKyAgICA2MCwgMjQwLCAxMTMsIDU5LCA2MCwgMjQwLCA0OSwgNTksIDYwLCAyNDAsIDE3NiwgNTksIDYwLCAyMzksIDE5NSwgNTksIAorICAgIDYwLCAyNDAsIDY2LCA1OSwgNjAsIDI0MCwgMiwgNTksIDYwLCAyNDAsIDEyOSwgNTksIDYwLCAyMzksIDIyNiwgNTksIDYwLCAKKyAgICAyNDAsIDk3LCA1OSwgNjAsIDI0MCwgMzMsIDU5LCA2MCwgMjQwLCAxNjAsIDU5LCA2MCwgMjM5LCAyMTAsIDU5LCA2MCwgCisgICAgMjQwLCA4MSwgNTksIDYwLCAyNDAsIDE3LCA1OSwgNjAsIDI0MCwgMTQ0LCA1OSwgNjAsIDIzOSwgMjQxLCA1OSwgNjAsIAorICAgIDI0MCwgMTEyLCA1OSwgNjAsIDI0MCwgNDgsIDU5LCA2MCwgMjQwLCAxNzUsIDU5LCA2MCwgMjM5LCAxODcsIDU5LCA2MCwgCisgICAgMjQwLCA1OCwgNTksIDYwLCAyMzksIDI1MCwgNTksIDYwLCAyNDAsIDEyMSwgNTksIDYwLCAyMzksIDIxOCwgNTksIDYwLCAKKyAgICAyNDAsIDg5LCA1OSwgNjAsIDI0MCwgMjUsIDU5LCA2MCwgMjQwLCAxNTIsIDU5LCA2MCwgMjM5LCAyMDIsIDU5LCA2MCwgCisgICAgMjQwLCA3MywgNTksIDYwLCAyNDAsIDksIDU5LCA2MCwgMjQwLCAxMzYsIDU5LCA2MCwgMjM5LCAyMzMsIDU5LCA2MCwgMjQwLCAKKyAgICAxMDQsIDU5LCA2MCwgMjQwLCA0MCwgNTksIDYwLCAyNDAsIDE2NywgNTksIDYwLCAyMzksIDE5NCwgNTksIDYwLCAyNDAsIAorICAgIDY1LCA1OSwgNjAsIDI0MCwgMSwgNTksIDYwLCAyNDAsIDEyOCwgNTksIDYwLCAyMzksIDIyNSwgNTksIDYwLCAyNDAsIDk2LCAKKyAgICA1OSwgNjAsIDI0MCwgMzIsIDU5LCA2MCwgMjQwLCAxNTksIDU5LCA2MCwgMjM5LCAyMDksIDU5LCA2MCwgMjQwLCA4MCwgNTksIAorICAgIDYwLCAyNDAsIDE2LCA1OSwgNjAsIDI0MCwgMTQzLCA1OSwgNjAsIDIzOSwgMjQwLCA1OSwgNjAsIDI0MCwgMTExLCA1OSwgCisgICAgNjAsIDI0MCwgNDcsIDU5LCA2MCwgMjQwLCAxNzQsIDU5LCA2MCwgMjM5LCAxODMsIDU5LCA2MCwgMjQwLCA1NCwgNTksIDYwLCAKKyAgICAyMzksIDI0NiwgNTksIDYwLCAyNDAsIDExNywgNTksIDYwLCAyMzksIDIxNCwgNTksIDYwLCAyNDAsIDg1LCA1OSwgNjAsIAorICAgIDI0MCwgMjEsIDU5LCA2MCwgMjQwLCAxNDgsIDU5LCA2MCwgMjM5LCAxOTgsIDU5LCA2MCwgMjQwLCA2OSwgNTksIDYwLCAKKyAgICAyNDAsIDUsIDU5LCA2MCwgMjQwLCAxMzIsIDU5LCA2MCwgMjM5LCAyMjksIDU5LCA2MCwgMjQwLCAxMDAsIDU5LCA2MCwgCisgICAgMjQwLCAzNiwgNTksIDYwLCAyNDAsIDE2MywgNTksIDYwLCAyMzksIDE5MCwgNTksIDYwLCAyNDAsIDYxLCA1OSwgNjAsIAorICAgIDIzOSwgMjUzLCA1OSwgNjAsIDI0MCwgMTI0LCA1OSwgNjAsIDIzOSwgMjIxLCA1OSwgNjAsIDI0MCwgOTIsIDU5LCA2MCwgCisgICAgMjQwLCAyOCwgNTksIDYwLCAyNDAsIDE1NSwgNTksIDYwLCAyMzksIDIwNSwgNTksIDYwLCAyNDAsIDc2LCA1OSwgNjAsIAorICAgIDI0MCwgMTIsIDU5LCA2MCwgMjQwLCAxMzksIDU5LCA2MCwgMjM5LCAyMzYsIDU5LCA2MCwgMjQwLCAxMDcsIDU5LCA2MCwgCisgICAgMjQwLCA0MywgNTksIDYwLCAyNDAsIDE3MCwgNTksIDYwLCAyMzksIDE4NiwgNTksIDYwLCAyNDAsIDU3LCA1OSwgNjAsIAorICAgIDIzOSwgMjQ5LCA1OSwgNjAsIDI0MCwgMTIwLCA1OSwgNjAsIDIzOSwgMjE3LCA1OSwgNjAsIDI0MCwgODgsIDU5LCA2MCwgCisgICAgMjQwLCAyNCwgNTksIDYwLCAyNDAsIDE1MSwgNTksIDYwLCAyMzksIDIwMSwgNTksIDYwLCAyNDAsIDcyLCA1OSwgNjAsIAorICAgIDI0MCwgOCwgNTksIDYwLCAyNDAsIDEzNSwgNTksIDYwLCAyMzksIDIzMiwgNTksIDYwLCAyNDAsIDEwMywgNTksIDYwLCAKKyAgICAyNDAsIDM5LCA1OSwgNjAsIDI0MCwgMTY2LCA1OSwgNjAsIDIzOSwgMTkzLCA1OSwgNjAsIDI0MCwgNjQsIDU5LCA2MCwgCisgICAgMjQwLCAwLCA1OSwgNjAsIDI0MCwgMTI3LCA1OSwgNjAsIDIzOSwgMjI0LCA1OSwgNjAsIDI0MCwgOTUsIDU5LCA2MCwgMjQwLCAKKyAgICAzMSwgNTksIDYwLCAyNDAsIDE1OCwgNTksIDYwLCAyMzksIDIwOCwgNTksIDYwLCAyNDAsIDc5LCA1OSwgNjAsIDI0MCwgMTUsIAorICAgIDU5LCA2MCwgMjQwLCAxNDIsIDU5LCA2MCwgMjM5LCAyMzksIDU5LCA2MCwgMjQwLCAxMTAsIDU5LCA2MCwgMjQwLCA0NiwgCisgICAgNTksIDYwLCAyNDAsIDE3MywgNTksIDYwLCAyMzksIDE4MSwgNTksIDYwLCAyNDAsIDUyLCA1OSwgNjAsIDIzOSwgMjQ0LCAKKyAgICA1OSwgNjAsIDI0MCwgMTE1LCA1OSwgNjAsIDIzOSwgMjEyLCA1OSwgNjAsIDI0MCwgODMsIDU5LCA2MCwgMjQwLCAxOSwgNTksIAorICAgIDYwLCAyNDAsIDE0NiwgNTksIDYwLCAyMzksIDE5NiwgNTksIDYwLCAyNDAsIDY3LCA1OSwgNjAsIDI0MCwgMywgNTksIDYwLCAKKyAgICAyNDAsIDEzMCwgNTksIDYwLCAyMzksIDIyNywgNTksIDYwLCAyNDAsIDk4LCA1OSwgNjAsIDI0MCwgMzQsIDU5LCA2MCwgCisgICAgMjQwLCAxNjEsIDU5LCA2MCwgMjM5LCAxODgsIDU5LCA2MCwgMjQwLCA1OSwgNTksIDYwLCAyMzksIDI1MSwgNTksIDYwLCAKKyAgICAyNDAsIDEyMiwgNTksIDYwLCAyMzksIDIxOSwgNTksIDYwLCAyNDAsIDkwLCA1OSwgNjAsIDI0MCwgMjYsIDU5LCA2MCwgCisgICAgMjQwLCAxNTMsIDU5LCA2MCwgMjM5LCAyMDMsIDU5LCA2MCwgMjQwLCA3NCwgNTksIDYwLCAyNDAsIDEwLCA1OSwgNjAsIAorICAgIDI0MCwgMTM3LCA1OSwgNjAsIDIzOSwgMjM0LCA1OSwgNjAsIDI0MCwgMTA1LCA1OSwgNjAsIDI0MCwgNDEsIDU5LCA2MCwgCisgICAgMjQwLCAxNjgsIDU5LCA2MCwgMjM5LCAxODQsIDU5LCA2MCwgMjQwLCA1NSwgNTksIDYwLCAyMzksIDI0NywgNTksIDYwLCAKKyAgICAyNDAsIDExOCwgNTksIDYwLCAyMzksIDIxNSwgNTksIDYwLCAyNDAsIDg2LCA1OSwgNjAsIDI0MCwgMjIsIDU5LCA2MCwgCisgICAgMjQwLCAxNDksIDU5LCA2MCwgMjM5LCAxOTksIDU5LCA2MCwgMjQwLCA3MCwgNTksIDYwLCAyNDAsIDYsIDU5LCA2MCwgMjQwLCAKKyAgICAxMzMsIDU5LCA2MCwgMjM5LCAyMzAsIDU5LCA2MCwgMjQwLCAxMDEsIDU5LCA2MCwgMjQwLCAzNywgNTksIDYwLCAyNDAsIAorICAgIDE2NCwgNTksIDYwLCAyMzksIDE5MSwgNTksIDYwLCAyNDAsIDYyLCA1OSwgNjAsIDIzOSwgMjU0LCA1OSwgNjAsIDI0MCwgCisgICAgMTI1LCA1OSwgNjAsIDIzOSwgMjIyLCA1OSwgNjAsIDI0MCwgOTMsIDU5LCA2MCwgMjQwLCAyOSwgNTksIDYwLCAyNDAsIAorICAgIDE1NiwgNTksIDYwLCAyMzksIDIwNiwgNTksIDYwLCAyNDAsIDc3LCA1OSwgNjAsIDI0MCwgMTMsIDU5LCA2MCwgMjQwLCAKKyAgICAxNDAsIDU5LCA2MCwgMjM5LCAyMzcsIDU5LCA2MCwgMjQwLCAxMDgsIDU5LCA2MCwgMjQwLCA0NCwgNTksIDYwLCAyNDAsIAorICAgIDE3MSwgNTksIDYwLCAyMzksIDE4MiwgNTksIDYwLCAyNDAsIDUzLCA1OSwgNjAsIDIzOSwgMjQ1LCA1OSwgNjAsIDI0MCwgCisgICAgMTE2LCA1OSwgNjAsIDIzOSwgMjEzLCA1OSwgNjAsIDI0MCwgODQsIDU5LCA2MCwgMjQwLCAyMCwgNTksIDYwLCAyNDAsIAorICAgIDE0NywgNTksIDYwLCAyMzksIDE5NywgNTksIDYwLCAyNDAsIDY4LCA1OSwgNjAsIDI0MCwgNCwgNTksIDYwLCAyNDAsIDEzMSwgCisgICAgNTksIDYwLCAyMzksIDIyOCwgNTksIDYwLCAyNDAsIDk5LCA1OSwgNjAsIDI0MCwgMzUsIDU5LCA2MCwgMjQwLCAxNjIsIDU5LCAKKyAgICA2MCwgMjM5LCAxODksIDU5LCA2MCwgMjQwLCA2MCwgNTksIDYwLCAyMzksIDI1MiwgNTksIDYwLCAyNDAsIDEyMywgNTksIAorICAgIDYwLCAyMzksIDIyMCwgNTksIDYwLCAyNDAsIDkxLCA1OSwgNjAsIDI0MCwgMjcsIDU5LCA2MCwgMjQwLCAxNTQsIDU5LCA2MCwgCisgICAgMjM5LCAyMDQsIDU5LCA2MCwgMjQwLCA3NSwgNTksIDYwLCAyNDAsIDExLCA1OSwgNjAsIDI0MCwgMTM4LCA1OSwgNjAsIAorICAgIDIzOSwgMjM1LCA1OSwgNjAsIDI0MCwgMTA2LCA1OSwgNjAsIDI0MCwgNDIsIDU5LCA2MCwgMjQwLCAxNjksIDU5LCA2MCwgCisgICAgMjM5LCAxODUsIDU5LCA2MCwgMjQwLCA1NiwgNTksIDYwLCAyMzksIDI0OCwgNTksIDYwLCAyNDAsIDExOSwgNTksIDYwLCAKKyAgICAyMzksIDIxNiwgNTksIDYwLCAyNDAsIDg3LCA1OSwgNjAsIDI0MCwgMjMsIDU5LCA2MCwgMjQwLCAxNTAsIDU5LCA2MCwgCisgICAgMjM5LCAyMDAsIDU5LCA2MCwgMjQwLCA3MSwgNTksIDYwLCAyNDAsIDcsIDU5LCA2MCwgMjQwLCAxMzQsIDU5LCA2MCwgMjM5LCAKKyAgICAyMzEsIDU5LCA2MCwgMjQwLCAxMDIsIDU5LCA2MCwgMjQwLCAzOCwgNTksIDYwLCAyNDAsIDE2NSwgNTksIDYwLCAyMzksIAorICAgIDE5MiwgNTksIDYwLCAyNDAsIDYzLCA1OSwgNjAsIDIzOSwgMjU1LCA1OSwgNjAsIDI0MCwgMTI2LCA1OSwgNjAsIDIzOSwgCisgICAgMjIzLCA1OSwgNjAsIDI0MCwgOTQsIDU5LCA2MCwgMjQwLCAzMCwgNTksIDYwLCAyNDAsIDE1NywgNTksIDYwLCAyMzksIAorICAgIDIwNywgNTksIDYwLCAyNDAsIDc4LCA1OSwgNjAsIDI0MCwgMTQsIDU5LCA2MCwgMjQwLCAxNDEsIDU5LCA2MCwgMjM5LCAKKyAgICAyMzgsIDU5LCA2MCwgMjQwLCAxMDksIDU5LCA2MCwgMjQwLCA0NSwgNTksIDYwLCAyNDAsIDE3MiwgODcsIDIwNCwgMTQxLCAKKyAgICA1NSwgMywgODMsIDk3LCA4NywgMjA0LCAxNDEsIDU1LCAzLCA1MywgODMsIDk3LCA5OCwgNTMsIDU1LCAzLCA4MywgOTcsIAorICAgIDg3LCA1MywgNTUsIDMsIDgzLCA5NywgNDksIDUxLCA1MywgNTUsIDMsIDgzLCA5NywgODcsIDIwNCwgMTQxLCA1NSwgMjM2LCAKKyAgICAyMDEsIDE0OCwgOTgsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgODcsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgMTkxLCA1NSwgCisgICAgMywgMjMzLCAxNzcsIDk3LCAxODIsIDU1LCAzLCAyMzMsIDE3NywgOTcsIDE4MiwgMjA1LCA4MywgNDgsIDE5MSwgMjA1LCAKKyAgICA4MywgNDgsIDk4LCA1MywgMjQxLCAyNDUsIDQ4LCA4NywgNTMsIDI0MSwgMjQ1LCA0OCwgOTgsIDIwNSwgODMsIDI0MSwgCisgICAgMjQ1LCA0OCwgODcsIDIwNSwgODMsIDI0MSwgMjQ1LCA0OCwgODcsIDIwNCwgMTQxLCAyMDUsIDgzLCAyNDEsIDI0NSwgNDgsIAorICAgIDg3LCA1NSwgMywgMjM5LCAxODAsIDIwOCwgOTIsIDE4MiwgNTUsIDIwNSwgMTg2LCAxNDgsIDE5MSwgNTUsIDIwNSwgMTg2LCAKKyAgICAxNDgsIDg3LCA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDg3LCA1NSwgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA4NywgCisgICAgMjA0LCAxNDEsIDU1LCAzLCAyMDcsIDYsIDg3LCAyMDQsIDE0MSwgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA4NywgMjA0LCAKKyAgICAxNDEsIDU1LCAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDk4LCAyNTAsIDIwNCwgODcsIDI1MCwgMjA0LCA5OCwgNTMsIAorICAgIDI1MCwgMjA0LCA4NywgNTMsIDI1MCwgMjA0LCA5OCwgNTUsIDIwNSwgMTg2LCA2MywgMjQxLCA2NCwgODcsIDU1LCAyMDUsIAorICAgIDE4NiwgNjMsIDI0MSwgNjQsIDk4LCA1NSwgMjM2LCAyMDEsIDI0OSwgNzcsIDIwNSwgMTg2LCA2MywgMjQxLCA2NCwgODcsIAorICAgIDU1LCAyMzYsIDIwMSwgMjQ5LCA3NywgMjA1LCAxODYsIDYzLCAyNDEsIDY0LCAxNTcsIDIwMSwgNDgsIDI2LCAyMDgsIDI1NCwgCisgICAgMjM5LCAxNCwgNDgsIDE1NywgMjM5LCAxNCwgMjYsIDIwOCwgMjU0LCAyMDEsIDQ4LCA0OCwgMTU3LCAyMDEsIDQ4LCA1NSwgCisgICAgMywgMTE3LCAxNTcsIDIzOSwgMTQsIDU1LCAzLCAxMTcsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMywgMTE3LCAyMDgsIAorICAgIDI1NCwgMjAxLCA0OCwgNTUsIDMsIDExNywgMTU3LCAyMDEsIDQ4LCA1NSwgMjYsIDE1NywgMjM5LCAxNCwgNDgsIDE1NywgCisgICAgMjM5LCAxNCwgNTUsIDI2LCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMjYsIDIwOCwgCisgICAgMjU0LCAyMDEsIDQ4LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDU1LCAyNiwgMTU3LCAyMDEsIDQ4LCA0OCwgMjEzLCAxOSwgCisgICAgMjQxLCA3MSwgMjQyLCAyMjgsIDIzNywgMTcxLCAyNDEsIDcwLCAyMzcsIDE3MSwgMjQxLCA3MSwgMjQyLCAyMjgsIDIxMywgCisgICAgMTksIDI0MSwgNzAsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMjQyLCAyMjgsIDE1NywgMjM5LCAxNCwgNDgsIDE1NywgMjM5LCAKKyAgICAxNCwgNTUsIDI0MiwgMjI4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDIzNywgMTcxLCAyNDEsIDcxLCAyNDIsIDIyOCwgCisgICAgMTU3LCAyMzksIDE0LCA0OCwgMjEzLCAxOSwgMjQxLCA3MSwgMjQyLCAyMjgsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMTU3LCAKKyAgICAyMzksIDE0LCA1NSwgMjQyLCAyMjgsIDE1NywgMjAxLCA0OCwgNDgsIDE1NywgMjAxLCA0OCwgNTUsIDI0MiwgMjI4LCAxNTcsIAorICAgIDIzOSwgMTQsIDQ4LCAyMDEsIDc4LCA1NSwgMjE1LCA5NiwgMjQxLCA3LCAyMTMsIDQ2LCA1NSwgMjE1LCA5NiwgODcsIDIwNiwgCisgICAgOTgsIDI0MiwgMTg2LCAyMDMsIDIxNiwgNTUsIDIxNSwgOTYsIDg3LCAyMDYsIDk4LCAyNDIsIDE4NiwgMjM5LCAxNjUsIDU1LCAKKyAgICAyMTUsIDk2LCAxOTEsIDIwNiwgOTgsIDI0MiwgMTg2LCAyMjUsIDE4LCA1NSwgMjE1LCA5NiwgMTkxLCAyMDYsIDk4LCAyNDIsIAorICAgIDE4NiwgMjEzLCAzNSwgMjEzLCAzOCwgMjUwLCAyMzcsIDI0NiwgMTEyLCA0OCwgMjI1LCAyMSwgMjUwLCAyMzcsIDI1MSwgCisgICAgNDcsIDQ4LCAyMDUsIDE1OCwgMjUwLCAyMzcsIDI1MSwgNDcsIDQ4LCAyNDgsIDkzLCAyNTAsIDIzNywgMjUxLCA0NywgNDgsIAorICAgIDIwNSwgMTU4LCAyNTAsIDIzNywgMjQ2LCAxMTIsIDU1LCAzLCAyMjEsIDE1NiwgMjA1LCAxNTgsIDI1MCwgMjM3LCAyNTEsIAorICAgIDQ3LCA1NSwgMywgMjE1LCAxMTMsIDIyNCwgNTQsIDUxLCAyMTAsIDE2OSwgMjQ2LCAxMTIsIDQ4LCAyMjQsIDU0LCA0OSwgCisgICAgMjEwLCAxNjksIDI1MSwgNDcsIDQ4LCAyNTEsIDQ3LCAyNDYsIDExMCwgMjQ2LCAxNTYsIDQ4LCAyNDYsIDExMiwgMjQ2LCAKKyAgICAxMTAsIDI0NiwgMTU2LCA0OCwgODcsIDU1LCA4OCwgMjA5LCAyNTAsIDk4LCA0OCwgOTgsIDU1LCA4OCwgMjA5LCAyNTAsIAorICAgIDg3LCA0OCwgMjA5LCAyNTAsIDg3LCA1NSwgODgsIDk4LCA0OCwgODcsIDU1LCAzLCA5MywgNTcsIDk4LCA1NSwgMywgOTMsIAorICAgIDU3LCA4NywgNTUsIDIwNiwgMzgsIDIwMCwgMTk1LCA0OSwgNTEsIDU1LCAyMDYsIDM4LCA0LCAyNDYsIDE1NSwgMTgyLCAKKyAgICAyMDQsIDE0MSwgNTUsIDIzNiwgMjAxLCA0LCAyNDYsIDE1NSwgNDksIDE1NCwgMTE1LCA1MSwgMTU0LCAxMjcsIDIzNCwgCisgICAgMTYwLCA0OSwgMTU0LCAxMjcsIDUxLCAxNTQsIDExNSwgMjM0LCAxNjAsIDExNSwgMTU0LCA1MSwgMTI3LCAxNTQsIDQ5LCAKKyAgICAyMzQsIDE2MCwgMTE1LCAxNTQsIDQ5LCAxMjcsIDE1NCwgNTEsIDIzNCwgMTYwLCA0OSwgMTU0LCAxMTUsIDUxLCAxNTQsIAorICAgIDExNSwgMjM0LCAxNjAsIDExNSwgMTU0LCA1MSwgMTI3LCAxNTQsIDUxLCAyMzQsIDE2MCwgNDksIDE1NCwgMTI3LCA1MSwgCisgICAgMTU0LCAxMjcsIDIzNCwgMTYwLCAxMTUsIDE1NCwgNDksIDEyNywgMTU0LCA0OSwgMjM0LCAxNjAsIDk4LCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCAxMTUsIDIwNSwgMTg2LCAxNDgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDIwNSwgMTg2LCAxNDgsIAorICAgIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIwNSwgMTg2LCAxNDgsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIwNSwgCisgICAgMTg2LCAxNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDIwNSwgMTg2LCAxNDgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICAxMjcsIDIwNSwgMTg2LCAxNDgsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgNDksIDIwNSwgMTg2LCAxNDgsIDE5MSwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDIwNSwgMTg2LCAxNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDIzNiwgMjAxLCAxNDgsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIzNiwgCisgICAgMjAxLCAxNDgsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIzNiwgMjAxLCAxNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICAxMjcsIDIzNiwgMjAxLCAxNDgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDIzNiwgMjAxLCAxNDgsIDE4MiwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDIzNiwgMjAxLCAxNDgsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgNDksIDIzNiwgMjAxLCAxNDgsIAorICAgIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjcsIDE4MiwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDI0OCwgMjEyLCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDg3LCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCAxMTUsIDg4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjcsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgNDksIDI0OCwgMjEyLCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIAorICAgIDg4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjAzLCAyMjgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDg4LCA4NywgCisgICAgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjcsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCA5OCwgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgMjAzLCAyMjgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDg4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgMjM5LCAxNjcsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCAxNjgsIDI0MSwgMjQ0LCA5OCwgMjM0LCAxNjEsIDMsIAorICAgIDE1NCwgMTI3LCAyNDgsIDIyOCwgMTY4LCAyNDEsIDI0NCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgODgsIDE2OCwgCisgICAgMjQxLCAyNDQsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDI0OCwgMjI4LCAxNjgsIDI0MSwgMjQ0LCAxODIsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyNDgsIDIxMiwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCAxOTEsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDQ5LCAyNDgsIDIxMiwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCA1MSwgNTMsIDU1LCAzLCAyMTIsIAorICAgIDIxOSwgMjM0LCAxMzYsIDIzOCwgMTIyLCAyLCA4OCwgODcsIDQ4LCAyMDUsIDI0MSwgMjE3LCA0NCwgODgsIDg3LCA0OCwgCisgICAgOTgsIDU1LCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDg3LCA1NSwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCA4NywgNTUsIDg4LCAKKyAgICAyNTEsIDExNywgMTYwLCAxMzgsIDIyNCwgMjQxLCA4OCwgOTgsIDQ4LCA5OCwgNTUsIDIwNiwgMzgsIDIyNCwgMjQwLCAyMzUsIAorICAgIDY3LCA4OCwgODcsIDQ4LCAyMDgsIDMsIDg4LCA4NywgNDgsIDk4LCA1NSwgMjA2LCAzOCwgMjA4LCAyLCAyMDcsIDIxMiwgCisgICAgODgsIDk4LCA0OCwgNDksIDIzNywgNzIsIDIwNywgNiwgNTEsIDIzNywgNzIsIDIwNywgNiwgMTE1LCAyMzcsIDcyLCAyMDcsIAorICAgIDYsIDEyNywgMjM3LCA3MiwgMjA3LCA2LCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgMjQxLCAxNDIsIDE5OSwgMTU4LCAyMTgsIAorICAgIDIxMywgMjA4LCAyMDQsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjA0LCAxMjgsIDI0NiwgNzksIDQ5LCA2NCwgMjQyLCAxOTYsIAorICAgIDE1OSwgNTEsIDY0LCAyNDIsIDE5NiwgMTU5LCA0OSwgNjQsIDIxNiwgMTE1LCA1MSwgNjQsIDIxNiwgMTE1LCAxOTksIDE1OCwgCisgICAgMjE4LCAyMTMsIDQ5LCAyMjgsIDEzMywgMTU5LCAxOTksIDE1OCwgMjE4LCAyMTMsIDUxLCAyMjgsIDEzMywgMTU5LCAxOTksIAorICAgIDE1OCwgMjE4LCAyMTMsIDQ5LCAyNDgsIDE2NywgMTU5LCAxOTksIDE1OCwgMjE4LCAyMTMsIDUxLCAyNDgsIDE2NywgMTU5LCAKKyAgICA0OSwgNTIsIDI0OCwgNzAsIDMsIDIwMywgMjUxLCA1MSwgNTIsIDI0OCwgNzAsIDMsIDIwMywgMjUxLCA0OSwgNTIsIDI0OCwgCisgICAgNzAsIDMsIDIwNiwgMTIsIDIyOCwgMTE4LCAyMDUsIDE1OCwgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIDcwLCAzLCAyMDYsIDEyLCAKKyAgICAyMjgsIDExOCwgMjQ4LCA5MywgMjQzLCAxNSwgNDksIDUyLCAyNDgsIDcwLCAzLCAyMDYsIDEyLCAyMjgsIDExOCwgMjQ4LCAKKyAgICA5MywgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIDcwLCAzLCAyMDYsIDEyLCAyMjgsIDExOCwgMjA1LCAxNTgsIDI0MywgMTUsIAorICAgIDQ5LCAyNTEsIDcxLCAyNDgsIDcwLCAzLCAyNDAsIDE4MiwgNTEsIDI1MSwgNzEsIDI0OCwgNzAsIDMsIDI0MCwgMTgyLCA0OSwgCisgICAgMjUwLCAyMzcsIDIyNCwgMjQxLCAxNTksIDUxLCAyNTAsIDIzNywgMjM1LCA2NywgMTU5LCA1MywgNDksIDI1MCwgMjM3LCAKKyAgICAyMzUsIDY3LCAxNTksIDUzLCA1MSwgMjUwLCAyMzcsIDIyNCwgMjQxLCAxNTksIDQ5LCA2MywgMjA1LCAxNDYsIDIxMCwgNTUsIAorICAgIDE1OSwgNTEsIDYzLCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAyMzksIDE4MCwgMjM3LCAxMjcsIDgzLCAxOTksIDI3LCAKKyAgICAyMjQsIDE3NiwgMjIyLCA3MywgMjUxLCA3MSwgMjE3LCA0NiwgMjI1LCAyOCwgNTEsIDI1MSwgNzEsIDIwMywgNzMsIDMsIAorICAgIDIwOCwgMTkzLCAyMjIsIDczLCA1MSwgMjUxLCA3MSwgMywgMjQwLCAxODIsIDI1MSwgNzEsIDMsIDIxMiwgMTIzLCAyMjgsIAorICAgIDczLCAyNTEsIDIzOSwgMjUxLCA3MCwgMjA4LCAyMjQsIDI1MSwgNzEsIDIxNywgNDYsIDIyNSwgMjgsIDIwOCwgMjI0LCAKKyAgICAyNTEsIDcxLCAyMTcsIDQ2LCAyMDMsIDIyOCwgMjA0LCAxODUsIDI1MSwgNzAsIDIxMywgMTA1LCAyNTEsIDcwLCAyNTEsIAorICAgIDcxLCAzLCAyMDMsIDI1MSwgMjEzLCAxMDUsIDI1MSwgNzEsIDMsIDIwMywgMjUxLCAyMTcsIDEzOCwgMjUxLCA3MSwgMjE3LCAKKyAgICA0NiwgMjAzLCAyMjgsIDIxNywgMTM4LCAyNTEsIDcxLCAyMTcsIDQ2LCAyMzksIDE2NywgMjIyLCA3MywgMjUxLCA3MSwgMywgCisgICAgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgMTE1LCAyNiwgMjEzLCA0NiwgMjIyLCAKKyAgICA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgMTE1LCAyNiwgCisgICAgMjI1LCAyOCwgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCAKKyAgICA5NiwgMTI3LCAyNiwgMjEzLCA0NiwgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgCisgICAgMTE4LCA1NSwgMjE1LCA5NiwgMTI3LCAyNiwgMjI1LCAyOCwgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgCisgICAgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgNTEsIDI2LCAyMDMsIDIyOCwgMjIyLCA3MywgMjUxLCA3MSwgMywgCisgICAgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgNDksIDI2LCAyMDMsIDIyOCwgMjIyLCAKKyAgICA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgNTEsIDI2LCAKKyAgICAyMzksIDE2NywgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgCisgICAgMjE1LCA5NiwgNDksIDI2LCAyMzksIDE2NywgMjEzLCAxMDUsIDIzOCwgMTgxLCAyMTAsIDE0MSwgMjM4LCAxODEsIDIxMCwgCisgICAgMTQyLCAzLCAyMTYsIDI0NiwgMjM4LCAxODEsIDIxMCwgMTQyLCAzLCA0LCAyNDYsIDE1NiwgNTYsIDIzOCwgMTgxLCAyMTAsIAorICAgIDE0MiwgMywgNTEsIDU1LCA1NiwgMjM4LCAxODEsIDIxMCwgMTQyLCAzLCA0OSwgNTUsIDU2LCAyNDYsIDE1NiwgMywgMjMzLCAKKyAgICAxNzcsIDE0OCwgNDQsIDgzLCAxNDgsIDQ0LCAyMTYsIDEyMCwgNDQsIDIxMywgMTA2LCAyMDksIDE2LCA0NCwgMjE2LCAxNCwgCisgICAgMjQ2LCAxNTYsIDI0MCwgMjQwLCAyNDcsIDIzNSwgMjMzLCAxNzcsIDI0OSwgNzcsIDI2LCAyMDUsIDE1OCwgMTY3LCAyNDAsIAorICAgIDI0MCwgMjQ3LCAyMzUsIDgzLCAxNDgsIDI0NiwgMTU2LCAzLCAyMDcsIDIxNCwgMjAwLCAxOTUsIDQ0LCAyNTEsIDQ1LCAKKyAgICAyNDAsIDIzNSwgNTQsIDExNSwgNTUsIDIwNiwgMzgsIDI0NiwgMTU1LCA0NCwgNjQsIDI0OCwgMjAsIDQ0LCAyNDgsIDIwLCAKKyAgICA0NCwgMjI0LCAyNDAsIDQ0LCAyMzUsIDY2LCAyNDYsIDE1NiwgMywgNCwgMjQ2LCAxNTYsIDIwNSwgMTg2LCAyMDYsIDEwNywgCisgICAgMjEzLCA0NiwgMjQ2LCAxNTYsIDMsIDEyMCwgMjMzLCAxNzcsIDIwOCwgMzUsIDIwNSwgMTg2LCAyMDYsIDEwNywgMjEzLCAKKyAgICA0NiwgOTUsIDIxMywgMTksIDI0MSwgNzEsIDIwOSwgNzUsIDk1LCAyMzcsIDE3MSwgMjQxLCA3MSwgMjA5LCA3NSwgOTUsIAorICAgIDI1MCwgMTY1LCA5NSwgNCwgMjQ2LCAxNTUsIDk1LCAyMDgsIDE5MywgMTIwLCAyMjcsIDE2MywgMjA4LCAxOTEsIDIwNSwgCisgICAgOTksIDMsIDczLCA1NiwgMjA1LCA5OSwgMywgMjAzLCAyNTEsIDIxMiwgMTIzLCAyMjgsIDExOCwgMjA1LCA5OCwgMjA1LCAKKyAgICA5OSwgMywgMjEwLCAxNDgsIDI1MCwgMTU2LCAyNDgsIDkyLCA1MSwgMjA1LCA5OSwgODgsIDQ5LCAyMDUsIDk4LCA0OSwgCisgICAgMjA1LCA5OSwgMjQ4LCAyMTIsIDgzLCAxNDgsIDgzLCAyNDksIDc3LCAyNDgsIDIxMiwgNTEsIDIwNSwgOTgsIDI0OCwgODAsIAorICAgIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyNDgsIDgwLCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgNjMsIDI0OCwgNzksIDI0LCAzLCAKKyAgICA0OSwgMTY3LCAyNDgsIDE0NCwgMjQsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCA2NCwgMjMzLCAxMTEsIDYzLCAyMzMsIDExMSwgCisgICAgNDksIDIwMSwgMjIsIDIzNywgMTI3LCA1MSwgMjAxLCAyMiwgMjM3LCAxMjcsIDQ5LCA1MywgMjAxLCAyMiwgMjM3LCAxMjcsIAorICAgIDUxLCA1MywgMjAxLCAyMiwgMjM3LCAxMjcsIDIyOCwgMTEwLCAyMjgsIDk0LCAyMDYsIDgsIDExOSwgMjI4LCA5NCwgMjI4LCAKKyAgICA5NSwgMjIwLCAyOCwgMywgODMsIDE0OCwgMjM5LCAxNzQsIDIyMSwgMjMsIDUyLCAzLCAyNDMsIDM3LCAyMTYsIDI1MSwgCisgICAgMjI4LCAxMDcsIDI1MCwgMTg4LCAyMDksIDIxNCwgMjE1LCAxLCAyMzgsIDEyMiwgMiwgMjYsIDIwOSwgNzcsIDIxNiwgMTIwLCAKKyAgICAyMzgsIDEyMiwgMiwgMjYsIDIwOSwgNzcsIDIxNiwgMTIxLCAzLCAyMDUsIDI0MSwgNTYsIDIzMiwgMjIzLCAyMDUsIDE4NiwgCisgICAgMjYsIDIwOSwgNzcsIDIxNiwgMTIwLCAyMzUsIDEyNiwgMjA4LCAxMDgsIDIwNiwgOTUsIDIzOSwgMTY2LCAyMDUsIDk5LCAzLCAKKyAgICA0OSwgMTY3LCAyNDgsIDE0NCwgMjM5LCAxNjYsIDIwNSwgOTksIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCA2MywgMjQxLCA2NSwgCisgICAgMywgMTI3LCA0OCwgNjMsIDIyNCwgNDksIDY0LCAyNDYsIDE1NiwgMywgMTI3LCA0OCwgNjMsIDI0NiwgMTU2LCAzLCAxMjcsIAorICAgIDQ4LCAyMzgsIDEwNywgNjQsIDIwOCwgMTkzLCAyMzgsIDEwNywgNjMsIDIwOCwgMTkzLCAyMzgsIDEwNywgNjQsIDI0MSwgCisgICAgNjQsIDIzOCwgMTA3LCA2MywgMjQxLCA2NCwgMjM4LCAxMDcsIDY0LCAyNDYsIDE1NSwgMjM4LCAxMDcsIDYzLCAyNDYsIAorICAgIDE1NSwgMjEyLCAxNjQsIDIxMywgMTA2LCAyMDksIDE3LCAyMTcsIDQzLCAyMDksIDE3LCAzLCAyMTYsIDI0NiwgMjEzLCAKKyAgICAxMDYsIDIwOSwgMTcsIDMsIDIzMywgMTc3LCA5NywgMjQ4LCAxNzUsIDIwOSwgMTYsIDI0OCwgMTc1LCAyMTMsIDEwNiwgCisgICAgMjA5LCAxNiwgNTMsIDIxNSwgMTEzLCAyMDUsIDgzLCAyMTUsIDExMywgMjI1LCAyMywgMjQyLCAxODgsIDI1MSwgNzEsIAorICAgIDE1OSwgMjEzLCA0MSwgMjQyLCAxODgsIDI1MSwgNzEsIDE1OSwgMjA1LCAyMjUsIDIyMSwgMTU0LCAyMjAsIDIxMywgNDQsIAorICAgIDczLCAyMTcsIDQzLCAyMjAsIDIxMywgNDQsIDkzLCAyMTcsIDQzLCAyMjAsIDIxMywgNDQsIDI0LCAyMTcsIDQzLCAyMjAsIAorICAgIDIxMywgMjAzLCAyNDIsIDIxNywgNDQsIDMsIDI0MCwgMTgyLCAyMjAsIDIxMywgMjAzLCAyNDIsIDIxNywgNDQsIDMsIDIxNSwgCisgICAgMTEzLCAyMjAsIDIxMywgNTIsIDIyOCwgNTYsIDIxNywgNDMsIDIyMCwgMjEzLCA1MiwgMjAzLCAyNDIsIDIxNywgNDMsIAorICAgIDEyMCwgMjI0LCA5OCwgMjYsIDIxNywgNDMsIDEyMCwgMjI0LCA5OCwgMjE3LCAzNCwgMjE3LCA0MywgMjIwLCAyMTMsIDI0LCAKKyAgICAyMTcsIDQzLCAyMjEsIDExMCwgMTIwLCAyMDcsIDIzNCwgMjA3LCAyMzIsIDMsIDIyOCwgNjksIDIxNCwgOTAsIDIyOCwgNzAsIAorICAgIDIxNywgNDMsIDIzNywgODAsIDIxNiwgMTEwLCAyMjgsIDY5LCAyMjgsIDcwLCAzLCA1MywgOTcsIDIyOCwgNzAsIDI1MCwgCisgICAgMTIwLCAzLCAyMDksIDc1LCAyNDYsIDE0OCwgMjM2LCAxODAsIDI1MSwgNDcsIDIyOCwgNjcsIDIyNCwgMTc3LCAyMjgsIDY4LCAKKyAgICAzLCAyMTMsIDE3NCwgMjE2LCA5MSwgMjUwLCAyMTIsIDIxNSwgOTAsIDIyNCwgMTc3LCAyMjgsIDY4LCAzLCAyMTAsIDE2OSwgCisgICAgMjE2LCA5MSwgMjUwLCAyMTIsIDIxNSwgOTAsIDIyNCwgMTc3LCAyMjgsIDY4LCAyMTgsIDIxNSwgMjI4LCAxMTIsIDIwNiwgCisgICAgMTA3LCAyMTUsIDkwLCAyMjgsIDcwLCAyNTAsIDIxMiwgMzUsIDIxNSwgMTAwLCAyMTcsIDQzLCAyMTQsIDg0LCAyMjgsIDcwLCAKKyAgICAyMTcsIDQzLCAyMjgsIDcwLCAzLCA5OCwgNTUsIDMsIDExNywgMjI4LCA3MCwgMywgMjQsIDU0LCAyMjgsIDcwLCAzLCAyMjgsIAorICAgIDU1LCAyMjgsIDcwLCAzLCAyMDMsIDI0MSwgMjI4LCA3MCwgMywgMjE2LCAyNDYsIDIyOCwgNzAsIDMsIDIwMywgMjUxLCAKKyAgICAyMjcsIDE2NCwgMjI1LCA3MSwgNDksIDIwNSwgOTksIDIxNywgNDMsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjExLCAyMjQsIAorICAgIDI0MywgNzMsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjExLCAyMjQsIDIxNSwgMTUxLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMSwgCisgICAgMjI0LCAyMTQsIDI1MiwgOTMsIDIsIDMsIDQsIDI0NiwgMTU2LCA1NiwgOTMsIDIsIDMsIDI0NiwgMTQ3LCAyNTEsIDI1MiwgCisgICAgNTYsIDkzLCAyLCAzLCAyMDUsIDI0MSwgNTYsIDkzLCAyLCAzLCA3MywgNTcsIDkzLCAyLCAzLCAyMDUsIDI0MSwgNTcsIDkzLCAKKyAgICAyLCAzLCAyMDgsIDQsIDEwNSwgOTMsIDIsIDMsIDYzLCAyMDUsIDk4LCAyMjEsIDE1NywgMiwgMywgMjQ2LCA3MSwgNTYsIAorICAgIDIyMSwgMTU3LCAyLCAzLCA3MywgNTcsIDIyMSwgMTU3LCAyLCAzLCAyMzcsIDE3MSwgMjQwLCAxODAsIDIyMSwgMTU3LCAyLCAKKyAgICAzLCAyMTMsIDE5LCAyNDAsIDE4MCwgOTMsIDIsIDIyOCwgMTE4LCA0OSwgMTY3LCAyNDYsIDE1NSwgOTMsIDIsIDIyOCwgCisgICAgMTE4LCA1MSwgMTY3LCAyNDYsIDE1NSwgMjAzLCA1OCwgMjE3LCAzNCwgMjQyLCAyMzUsIDIxNSwgMSwgMjIxLCAxOSwgMiwgCisgICAgMywgNzMsIDU2LCAyMjEsIDE5LCAyLCAzLCAyMDMsIDI1MSwgMjEwLCAxNjYsIDIxNSwgMiwgMywgMjQ4LCA5MywgMjQ2LCAKKyAgICAxMDksIDIwOSwgNTEsIDIxNSwgMSwgMjIxLCAxOSwgMiwgMjI4LCAxMTgsIDQ5LCAxNjcsIDI0NiwgMTU1LCAyMjEsIDE5LCAKKyAgICAyLCAyMjgsIDExOCwgNTEsIDE2NywgMjQ2LCAxNTUsIDQ0LCAyMjEsIDE5LCAyLCAzLCAyNDYsIDE0NywgMjUxLCAyNTEsIAorICAgIDIyMSwgMTksIDIsIDIyOCwgMTE4LCA1MywgMjQ2LCAxNTUsIDQ0LCAyNDAsIDIzNSwgNTQsIDkzLCAyLCAyMjgsIDExOCwgCisgICAgMjA1LCA5OCwgMjIxLCAxNTcsIDIsIDIyOCwgMTE4LCAyMDUsIDk4LCAyMjEsIDE5LCAyLCAyMjgsIDExOCwgMjA1LCA5OCwgCisgICAgMjI4LCA2NCwgMjE1LCAxLCAyMTMsIDM2LCAyMjgsIDY0LCAyMTUsIDEsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjEzLCAxNDgsIAorICAgIDI0MywgNzMsIDI1MSwgOTksIDIxNywgMzQsIDI0MywgMjEsIDIyOCwgNTYsIDMsIDI0MCwgMTgyLCAyMDMsIDI0MiwgMywgCisgICAgMjIxLCAxNTcsIDU0LCAyMDMsIDI0MiwgMywgMjE2LCAyNDYsIDIyOCwgNTYsIDMsIDIxNiwgMjQ2LCAyMjgsIDU2LCAzLCAKKyAgICAyMjQsIDk4LCAyNTEsIDc5LCAyMDMsIDI0MiwgMywgMjI0LCA5OCwgMjE3LCAzMywgMjAzLCAyNDIsIDg4LCAyMjgsIDU1LCAKKyAgICAyMjgsIDU2LCA4OCwgMjAzLCAyNDEsIDIwMywgMjQyLCA4OCwgMjQ5LCA3NywgODgsIDIyOCwgNTUsIDIyOCwgNTYsIDg4LCAKKyAgICAyNDksIDc3LCA4OCwgMjAzLCAyNDEsIDIwMywgMjQyLCAyNDgsIDIxMiwgMjYsIDIyNywgMTYzLCAzLCAyMDMsIDI0MSwgCisgICAgMjI4LCA1NiwgMjQ4LCAyMTIsIDI2LCAyMjcsIDE2MywgMywgMjI4LCA1NSwgMjQ2LCAxMTAsIDIwMywgMjQyLCAzLCAyMTAsIAorICAgIDE0NywgMjQ2LCAxMTAsIDIyOCwgNTYsIDMsIDIxMCwgMTQ3LCA1MywgNTIsIDIyOCwgNTUsIDUzLCA1MiwgMjAzLCAyNDEsIAorICAgIDI0NiwgMTEwLCAyMDMsIDI0MiwgMywgMjEwLCAxNDgsIDI2LCAyMDksIDUxLCAyMTUsIDEsIDIyNCwgOTgsIDI2LCAzLCA3MywgCisgICAgNTYsIDIyNCwgOTgsIDIxNywgMzQsIDMsIDczLCA1NiwgNTMsIDIyNCwgOTgsIDI1MSwgNzksIDUzLCAyMjQsIDk4LCAyMTcsIAorICAgIDMzLCAxMjAsIDIyOCwgNTcsIDIyNCwgOTgsIDI1MSwgNzksIDEyMCwgMjI4LCA1NywgMjI0LCA5OCwgMjE3LCAzMywgMjA5LCAKKyAgICA2MCwgMjI1LCA3MSwgMjE3LCAzMywgMjA5LCA2MCwgMjI1LCA3MSwgMjUxLCA3OSwgMjI0LCA5OCwgMjE3LCAzNCwgMjE2LCAKKyAgICAyNDMsIDIyNCwgOTgsIDI1MSwgNzksIDIyNCwgOTgsIDI2LCAzLCAxMDEsIDIwOCwgOTIsIDIyNCwgOTgsIDIxNywgMzQsIDMsIAorICAgIDEwMSwgMjA4LCA5MiwgMjI0LCA5OCwgMjYsIDMsIDIzMywgMTc3LCAyNDEsIDI0NCwgMjI0LCA5OCwgMjE3LCAzNCwgMywgCisgICAgMjMzLCAxNzcsIDI0MSwgMjQ0LCAyMjQsIDk4LCAyNiwgMywgNTMsIDIxNiwgMjQ2LCAyMjQsIDk4LCAyNiwgMywgMjAzLCAKKyAgICAyNTEsIDIyNCwgOTgsIDI2LCAzLCA1MywgMjAzLCAyNTEsIDQsIDIwMywgNTUsIDMsIDIwMywgMjUxLCAyMjQsIDk4LCAyMTcsIAorICAgIDM0LCAzLCA1MywgMjE2LCAyNDYsIDIyNCwgOTgsIDIxNywgMzQsIDMsIDUzLCAyMDMsIDI1MSwgMTk5LCAxNTgsIDIxOCwgCisgICAgMjEzLCAyNDAsIDE5MSwgMjUxLCAzNywgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTMsIDIxMSwgMjUxLCAzNywgMjM4LCAxMjIsIAorICAgIDIsIDMsIDczLCA1NywgMjMyLCAyMjMsIDMsIDczLCA1NiwgMjA1LCA4MywgMjMzLCAxNzcsIDI0OSwgNzcsIDMsIDUzLCA4MywgCisgICAgOTcsIDIwNSwgODMsIDIzMywgMTc3LCAyNDksIDc3LCAzLCAyMDUsIDgzLCA4MywgOTcsIDIwNSwgMjQxLCAyMTcsIDQ0LCAzLCAKKyAgICA3MywgNTYsIDIwNSwgMjQxLCAyMTcsIDQ0LCAzLCAyMTMsIDE5LCAyNDAsIDE4MCwgMjA5LCAxNDgsIDIyMSwgMTU3LCAyMDksIAorICAgIDE0NywgMjQzLCA2MCwgMywgNzMsIDU2LCAyMzgsIDEyMiwgMywgMjUwLCAxNjUsIDI1MSwgMTE3LCAxNjAsIDIwNSwgMTg2LCAKKyAgICAzLCAyNDYsIDE0NywgMjUxLCAyNTEsIDI1MSwgNCwgMTYwLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjM4LCAxMjIsIDIsIDg4LCAKKyAgICA5MywgNTQsIDkzLCAyLCA4OCwgMjM4LCAxMjIsIDU0LCAyMzgsIDEyMiwgMiwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCA1MywgCisgICAgMjQ2LCA4MCwgMjM4LCAxMjMsIDEyMCwgMjQzLCA1MywgMjM4LCAxMjIsIDIwOSwgMTYyLCAxMjYsIDI0MywgNTMsIDIzOCwgCisgICAgMTIyLCAyMDksIDE2MiwgMjM4LCAxMjIsIDIsIDMsIDEyMCwgMTkwLCA4OCwgMjYsIDEyMCwgMTkwLCA1NywgMjM4LCAxMTcsIAorICAgIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCAyMjQsIDI0MSwgMywgMjQ2LCAxNTYsIDIyOCwgNzMsIDIzNSwgNjcsIDMsIDI0NiwgCisgICAgMTU2LCAyMjgsIDczLCAyMjQsIDI0MSwgMywgMjE0LCA3OSwgMTM0LCA1NiwgMjM1LCA2NywgMywgMjE0LCA3OSwgMTM0LCAKKyAgICA1NiwgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMTM4LCAyMzUsIDY3LCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIAorICAgIDEzOCwgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCAyMjgsIDczLCAyMzUsIDY3LCAKKyAgICAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgMjI4LCA3MywgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgCisgICAgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA1NiwgMjM1LCA2NywgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgCisgICAgMywgNzMsIDU2LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDg4LCAyMTMsIDQ2LCAKKyAgICAyMzUsIDY3LCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgODgsIDIyNSwgMjgsIDIyNCwgMjQxLCAKKyAgICAyMTcsIDM0LCAyNTEsIDUsIDIzNSwgNjcsIDIxNywgMzQsIDI1MSwgNSwgMjI0LCAyNDEsIDI2LCAyMDksIDEzNywgMjE4LCAKKyAgICAyMTUsIDE2MCwgMTM4LCAyMzUsIDY3LCAyNiwgMjA5LCAxMzcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDI2LCAKKyAgICAyMTgsIDIxNSwgMjUxLCA1LCAyMzUsIDY3LCAyNiwgMjE4LCAyMTUsIDI1MSwgNSwgMjI0LCAyNDEsIDg4LCAyMzksIDE3MywgCisgICAgMTYwLCA4OCwgMjM1LCA2NiwgMjM1LCA2NywgODgsIDIzOSwgMTczLCAxNjAsIDg4LCAyMjQsIDI0MCwgMjI0LCAyNDEsIDg4LCAKKyAgICAyMDksIDE0OCwgMjE3LCAzNCwgMjM4LCAxMjMsIDIzNSwgNjcsIDg4LCAyMDksIDE0OCwgMjE3LCAzNCwgMjM4LCAxMjMsIAorICAgIDIyNCwgMjQxLCA4OCwgMjA5LCAxNDgsIDg4LCAyMzUsIDY2LCAyMzUsIDY3LCA4OCwgMjA5LCAxNDgsIDg4LCAyMjQsIDI0MCwgCisgICAgMjI0LCAyNDEsIDg4LCAyMzUsIDY3LCA4OCwgMjM5LCAxNzMsIDIzOCwgMTIzLCAyMzUsIDY3LCA4OCwgMjI0LCAyNDEsIDg4LCAKKyAgICAyMzksIDE3MywgMjM4LCAxMjMsIDIyNCwgMjQxLCA4OCwgMjA5LCA3NywgMTYwLCA4OCwgMjM1LCA2NywgODgsIDIwOSwgNzcsIAorICAgIDIzOCwgMTIzLCAyMzUsIDY3LCA4OCwgMjA5LCA3NywgMTYwLCA4OCwgMjI0LCAyNDEsIDg4LCAyMDksIDc3LCAyMzgsIDEyMywgCisgICAgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgCisgICAgMzQsIDIzNSwgNjYsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQxLCAzLCA3MywgMjI4LCA3MywgCisgICAgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NywgMywgNzMsIDIyOCwgNzMsIDIzOSwgMTczLCAxNjAsIAorICAgIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjM5LCAxNzMsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIAorICAgIDIzOSwgMTczLCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjM5LCAxNzMsIDIwOSwgNzcsIAorICAgIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIDIwOSwgMTQ4LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjA5LCAxNDgsIAorICAgIDIxNywgMzQsIDIzNSwgNjYsIDIwOSwgMTQ4LCA4OCwgMjI0LCAyNDEsIDg4LCAyMzgsIDEyMiwgNTQsIDIwOSwgMTQ4LCA4OCwgCisgICAgMjM1LCA2NywgODgsIDIzOCwgMTIyLCA1NCwgNTMsIDIyMCwgMTUsIDIyNCwgMjQwLCA1MywgMjIwLCAxNSwgMjM1LCA2NiwgCisgICAgNTMsIDIyMCwgMTUsIDIyNCwgMjQxLCAzLCAyMDMsIDI1MSwgMjM1LCA2NywgMjE2LCAyNDMsIDIyNCwgMjQwLCAyMzUsIDY3LCAKKyAgICAyNDgsIDIxMiwgMjI0LCAyNDAsIDIyNCwgMjQxLCAyNDYsIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTg5LCAyMzUsIDY3LCAyNDYsIAorICAgIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTg5LCAyMjQsIDI0MSwgMjQ2LCAxMTAsIDI0NywgMjM1LCAyNDIsIDE5MCwgODgsIDIwOSwgCisgICAgNzcsIDIzOCwgMTIzLCAyMzUsIDY3LCAyNDYsIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTkwLCA4OCwgMjA5LCA3NywgMjM4LCAKKyAgICAxMjMsIDIwOSwgNTIsIDIwNiwgMTExLCAyMjUsIDY5LCAyMDYsIDExMSwgMjA5LCA1MiwgMjA2LCAxMTIsIDIxNywgMzQsIAorICAgIDE2MCwgMTM4LCAyMjUsIDY5LCAyMDYsIDExMiwgMjE3LCAzNCwgMTYwLCAxMzgsIDIzOCwgMTIyLCAyLCAzLCAyNDgsIDEzLCAKKyAgICA1NiwgMjE1LCAyOSwgODgsIDIwOSwgMTM3LCAyMzgsIDEyMiwgNTQsIDIwNywgMjUxLCA4OCwgMjA5LCAxMzcsIDIzOCwgCisgICAgMTIyLCA1NCwgMjE1LCAyOSwgODgsIDIwOSwgMTM3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjA5LCAKKyAgICAxMzcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjE1LCAyOSwgODgsIDIzOCwgMTIyLCA1NCwgMjA3LCAyNTEsIDg4LCAyMzgsIAorICAgIDEyMiwgNTQsIDIxNSwgMjksIDg4LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjE4LCAyMTUsIDE2MCwgCisgICAgMTM4LCAyMTUsIDI5LCA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgCisgICAgMjE1LCAyOSwgODgsIDIxOCwgMjE1LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjE4LCAyMTUsIDI1MSwgCisgICAgMTE3LCAxNjAsIDEzOCwgNTMsIDIxNSwgMjgsIDUzLCAyMDcsIDI1MCwgMjA4LCAzLCAzLCAyNDAsIDE4MiwgMjA3LCAyMTIsIAorICAgIDMsIDI0MCwgMTgyLCAyMDgsIDMsIDMsIDkzLCAyLCA1NywgMjA3LCAyMTIsIDMsIDkzLCAyLCA1NywgMjA4LCAzLCAzLCAKKyAgICAyMjEsIDE5LCAyLCA1NywgMjA3LCAyMTIsIDMsIDIyMSwgMTksIDIsIDU3LCAyMDgsIDMsIDc2LCAyMTcsIDM0LCAxNjAsIAorICAgIDIwNSwgMTg2LCAzLCA3MywgNTYsIDIwNywgMjEyLCA3NiwgMjE3LCAzNCwgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDU2LCAKKyAgICAyMDgsIDMsIDc2LCA4OCwgMjM4LCAxMjIsIDU0LCAyMDcsIDIxMiwgNzYsIDg4LCAyMzgsIDEyMiwgNTQsIDIwOCwgMywgNzYsIAorICAgIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgMjA3LCAyMTIsIDc2LCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDIwOCwgMywgNzYsIAorICAgIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwNywgMjEyLCA3NiwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA4LCAzLCA3NiwgCisgICAgODgsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjA3LCAyMTIsIDc2LCA4OCwgMjE4LCAyMTUsIDE2MCwgMTM4LCA1MiwgNDksIAorICAgIDE3NiwgMTAwLCAyMTcsIDQzLCA1MiwgNTEsIDE3NiwgMTAwLCAyMTcsIDQzLCAyNDYsIDExMCwgMjA4LCAyLCAyNDYsIDExMCwgCisgICAgMjA3LCAyMTEsIDI0NiwgMTEwLCAyMDgsIDMsIDIxNywgMzQsIDE2MCwgMTM4LCAyNDYsIDExMCwgMjA3LCAyMTIsIDIxNywgCisgICAgMzQsIDE2MCwgMTM4LCAyMDgsIDMsIDg4LCAyMDcsIDIxMSwgMjA3LCAyMTIsIDg4LCAyMDgsIDIsIDIwOCwgMywgODgsIAorICAgIDIwOCwgMiwgMjA3LCAyMTIsIDg4LCAyMDcsIDIxMSwgMjA3LCAyMTIsIDI0OCwgMjEyLCAyMDgsIDIsIDIwNywgMjEyLCAKKyAgICAyNDgsIDIxMiwgMjYsIDIyNywgMTYzLCAyNDcsIDIzNSwgMjQxLCAyNDUsIDMsIDIwOCwgMiwgMjM4LCAyMDIsIDc2LCAyMTcsIAorICAgIDQ2LCAyMzksIDE2NSwgMjE1LCAxNDEsIDMsIDIwNiwgMTkxLCAyMDUsIDE1NywgMjA1LCAxMTUsIDIyOCwgNTUsIDIzNiwgCisgICAgMjQzLCAyMTgsIDIzMCwgMjA5LCAyNTAsIDQ5LCAyMDcsIDE3LCAyMDksIDI1MCwgMTI3LCAyMDcsIDE3LCAyMDksIDI1MCwgCisgICAgMTE1LCAyMDcsIDE3LCAyMTYsIDE1LCAzLCAyMTIsIDEyMiwgODMsIDI0OSwgNzcsIDIwNSwgODMsIDUxLCAyMDQsIDE4NCwgCisgICAgNTMsIDgzLCAyNDksIDc3LCA0OSwgMjA0LCAxODQsIDgzLCAyNDksIDc3LCA1MywgNDksIDIwNCwgMTg0LCA1MywgODMsIAorICAgIDI0OSwgNzcsIDUzLCA0OSwgMjA0LCAxODQsIDE2OCwgMjQxLCAyNDUsIDIzNiwgMjAxLCA0OSwgMjIyLCA0NSwgNzYsIDUzLCAKKyAgICAyMDMsIDQyLCAyMDksIDI1MCwgMTI3LCAyMDcsIDE4LCAzLCAyMTYsIDI0NiwgMjA5LCAyNTAsIDExNSwgMjA3LCAxOCwgMywgCisgICAgMjAzLCAyNTEsIDIwOSwgMjUwLCAxMTUsIDIwNywgMTgsIDg4LCAyMDksIDI1MCwgMTI3LCAyMDcsIDE3LCA1MywgMTI3LCAKKyAgICAyMDcsIDE3LCA1MywgMTE1LCAyMDcsIDE3LCA1MywgMjA4LCA0NywgMjE4LCAyMTUsIDU0LCAyMTMsIDEwNSwgNTMsIDIwOCwgCisgICAgNDcsIDIxOCwgMjE1LCA1NCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDAsIDI0MiwgMywgMjEzLCAxMDUsIDIyMCwgMjcsIAorICAgIDIwOSwgNzUsIDgzLCAyMjQsIDE3NywgMywgMjQ2LCAxNTYsIDU2LCA4MywgMjI0LCAxNzcsIDMsIDI0NiwgMTU2LCA1NywgCisgICAgMTI3LCAyMDcsIDE4LCAzLCAyNDYsIDE1NiwgNTcsIDIxNiwgMTIxLCAzLCAyMzMsIDE3NywgOTcsIDIxNiwgMTIxLCAzLCAKKyAgICAyMDUsIDI0MSwgMjE3LCA0MywgMjA1LCA4MywgODMsIDI0OSwgNzcsIDI0OCwgMTY5LCAyMTMsIDE0OSwgMjA1LCA4MywgODMsIAorICAgIDI0OSwgNzcsIDMsIDIzMywgMTc3LCA5NywgMjA1LCA4MywgMjQ2LCA4MCwgMjE3LCA0MywgMjA1LCA4MywgMjIwLCAxNSwgCisgICAgMjI0LCAyNDAsIDIwNSwgODMsIDIyMCwgMTUsIDIzNSwgNjYsIDIzOSwgMTczLCAyMDksIDc3LCAyMjQsIDI0MSwgMjE3LCAKKyAgICAzNCwgMTYwLCAxMzgsIDIzOSwgMTczLCAyMDksIDc3LCAyMzUsIDY3LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjA1LCA4MywgCisgICAgMjA5LCAxNywgMjQ4LCAxNjksIDIxMywgMTQ5LCAyMjUsIDcxLCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgMjE3LCA0MywgNTMsIAorICAgIDIwOSwgMTcsIDIxNywgNDMsIDY0LCA4MywgMTQ4LCAyMjAsIDIxMywgNjQsIDgzLCAxNDgsIDE1NywgMjM5LCAxNCwgNjQsIAorICAgIDQ4LCAxNTcsIDIwMSwgNDgsIDY0LCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDY0LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIAorICAgIDY0LCA0OCwgNDksIDUxLCA2NCwgNDgsIDk4LCA2MywgNDgsIDE4MiwgNjMsIDQ4LCAxOTEsIDYzLCA0OCwgMTU3LCAyMzksIAorICAgIDE0LCA2MywgNDgsIDE1NywgMjAxLCA0OCwgNjMsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNjMsIDQ4LCAyMDgsIDI1NCwgCisgICAgMjAxLCA0OCwgNjMsIDQ4LCA0OSwgNTEsIDYzLCA0OCwgMTE1LCAxMjcsIDYzLCA0OCwgODcsIDU1LCAzLCAyMDUsIDIyNCwgCisgICAgMjM5LCAxNjUsIDg3LCA1NSwgMywgMjA1LCAyMjQsIDIwMywgMjE2LCA5OCwgNTUsIDMsIDIwNSwgMjI0LCAyMzksIDE2NSwgCisgICAgOTgsIDU1LCAzLCAyMDUsIDIyNCwgMjAzLCAyMTYsIDUyLCAzLCAyMDUsIDE1OCwgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIAorICAgIDI0OCwgOTMsIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCAyMDMsIDIyNSwgNTEsIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDUyLCAKKyAgICAzLCAyMjQsIDU0LCA0OSwgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgMjQxLCA2NSwgMywgNDksIDE2NywgMjQ4LCAxNDQsIAorICAgIDI0MSwgNjUsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCAyNDEsIDY1LCAzLCAyMDUsIDE1OCwgMTY3LCAyNDgsIDE0NCwgMjQxLCAKKyAgICA2NSwgMywgMjQ4LCA5MywgMTY3LCAyNDgsIDE0NCwgMjM5LCAxODAsIDIwOCwgMTkzLCA2MywgMjI1LCA3MSwgMjA4LCAxOTMsIAorICAgIDY0LCAyMjUsIDcxLCAyMDgsIDE5MywgNjMsIDIwMiwgMjQ2LCA0LCAyMDgsIDE5MywgNjQsIDIwMiwgMjQ2LCA0LCAyMDgsIAorICAgIDE5MywgNjMsIDIxNiwgMzcsIDY0LCAyMTYsIDM3LCA2NCwgMjM0LCA4OSwgNjMsIDIzNCwgODksIDIzMywgMTc3LCA2MywgCisgICAgMjM0LCA4OSwgNjMsIDIyNSwgNzEsIDI0NiwgMTU1LCA2MywgMjIyLCA2NiwgMjQxLCA2NCwgNjQsIDIyMiwgNjYsIDI0MSwgCisgICAgNjQsIDYzLCAyMjIsIDY2LCAyMjQsIDQ5LCA2NCwgMjIyLCA2NiwgMjI0LCA0OSwgNjMsIDQsIDI0MSwgNjQsIDYzLCA0LCAKKyAgICAyMjQsIDQ5LCA2NCwgNCwgMjI0LCA0OSwgNjMsIDIzMywgMTc3LCAyMzgsIDE5NiwgNjQsIDIzMywgMTc3LCAyMzgsIDE5NiwgCisgICAgNjMsIDgzLCAyMzgsIDE5NiwgNjQsIDgzLCAyMzgsIDE5NiwgNDksIDU1LCAzLCA0LCAyNDYsIDE1NSwgMTI2LCA5OCwgMjUwLCAKKyAgICAxOTksIDQ5LCA1NSwgMywgNDQsIDIxNSwgMTEzLCAxNjgsIDk4LCAyMDgsIDE4NiwgNDgsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIAorICAgIDgzLCA5NywgOTgsIDIwNCwgMTQxLCA1NSwgMywgNTMsIDgzLCA5NywgOTgsIDIwNCwgMTQxLCA1NSwgMjM2LCAyMDEsIDE0OCwgCisgICAgOTgsIDIwNCwgMTQxLCAyMDUsIDgzLCAyNDEsIDI0NSwgNDgsIDk4LCA1NSwgMywgMjM5LCAxODAsIDIwOCwgOTIsIDk4LCAKKyAgICA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDk4LCA1NSwgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA5OCwgMjA0LCAxNDEsIAorICAgIDU1LCAzLCAyMDcsIDYsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA5OCwgMjA0LCAxNDEsIDU1LCAKKyAgICAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDk4LCA1NSwgMjA2LCAzOCwgMjAwLCAxOTUsIDIwMSwgNzgsIDU1LCAyMTUsIAorICAgIDk2LCAyNDEsIDcsIDIyNSwgMjgsIDIzOCwgMTIyLCAyLCA4OCwgOTgsIDQ4LCAyMTMsIDEwNiwgMjA1LCAyNDEsIDIxNywgCisgICAgNDQsIDg4LCA5OCwgNDgsIDk4LCA1NSwgODgsIDIxMywgMTA2LCAyNTEsIDExNywgMTYwLCAxMzgsIDg3LCA1NSwgMjA2LCAKKyAgICAzOCwgMjM1LCA2NiwgODcsIDU1LCAyMDYsIDM4LCAyMDcsIDIxMSwgOTgsIDIxNCwgOTAsIDQ4LCA4NywgMjE0LCA5MCwgNDgsIAorICAgIDIxMywgMTA2LCAyMDUsIDI0MSwgMjE3LCA0NCwgODgsIDg3LCA0OCwgODcsIDU1LCA4OCwgMjEzLCAxMDYsIDI1MSwgMTE3LCAKKyAgICAxNjAsIDEzOCwgMjA1LCAyNDEsIDIxNywgNDQsIDg4LCA5OCwgNDgsIDk4LCA1NSwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgCisgICAgOTgsIDU1LCA4OCwgMjEzLCAxMDYsIDIwNSwgMjQxLCAyMTcsIDQzLCA4NywgNTUsIDg4LCAyMTMsIDEwNiwgMjA1LCAyNDEsIAorICAgIDIxNywgNDMsIDE5MSwgMjA1LCA5NywgMTk5LCAyNywgNDgsIDIwOSwgMjUwLCAyMDksIDc3LCAxNTcsIDQ4LCAyMDksIDI1MCwgCisgICAgMjQ5LCAxMjYsIDIwOCwgMjU0LCA0OCwgNjQsIDIyMiwgNjYsIDIwOCwgMTA5LCA2MywgNCwgMjA4LCAxMDksIDY0LCA0LCAKKyAgICAyMDgsIDEwOSwgNjMsIDIxMywgNDEsIDIxNiwgMzcsIDY0LCAyMTMsIDQxLCAyMTYsIDM3LCA4MCwgMjI1LCA3MSwgMjQ2LCAKKyAgICAxNTUsIDgwLCAyMTYsIDI0OCwgMywgMjE2LCAyNDgsIDIyOCwgNzMsIDgwLCAyNDYsIDE1NiwgMywgMjQ2LCAxNTYsIDIyOCwgCisgICAgNzMsIDgwLCAyNDYsIDE1NSwgODAsIDQ0LCAyMTIsIDI0LCAyMDksIDc3LCAxNTcsIDU1LCAzLCAyMzMsIDE4NiwgMjM0LCAKKyAgICAxMzYsIDI0OSwgMTI2LCAyMDgsIDI1NCwgNTUsIDMsIDIzMywgMTg2LCAyMDcsIDYsIDIwOSwgNzcsIDE1NywgNTUsIDMsIAorICAgIDIzMywgMTc3LCAyMDcsIDYsIDI0OSwgMTI2LCAyMDgsIDI1NCwgNTUsIDMsIDIzMywgMTc3LCAyMDcsIDYsIDI0OCwgMjIwLCAKKyAgICA1NSwgMjE1LCA5NiwgMTkxLCAyMDYsIDk4LCAxNTcsIDIzOSwgMTMsIDIwOSwgMjUwLCAyNDgsIDIyMCwgNTUsIDIxNSwgOTYsIAorICAgIDE5MSwgMjA2LCA5OCwgMTU3LCAyMzksIDEzLCA5OCwgMjA1LCA5NywgNDgsIDE4MiwgMjA1LCA5NywgNDgsIDg3LCAyMDUsIAorICAgIDk3LCA0OCwgMTkxLCAyMDUsIDk3LCA0OCwgNDksIDUxLCAyMDUsIDk3LCA0OCwgMTE1LCAxMjcsIDIwNSwgOTcsIDQ4LCAKKyAgICAxNTcsIDIwMSwgNDgsIDIwNSwgOTcsIDQ4LCAxNTcsIDIzOSwgMTQsIDIwNSwgOTcsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgCisgICAgMjA1LCA5NywgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMDUsIDk3LCA0OCwgOTgsIDIwNSwgOTcsIDI0MSwgMjQzLCA0OCwgCisgICAgMTgyLCAyMDUsIDk3LCAyNDEsIDI0MywgNDgsIDg3LCAyMDUsIDk3LCAyNDEsIDI0MywgNDgsIDE5MSwgMjA1LCA5NywgMjQxLCAKKyAgICAyNDMsIDQ4LCAyNDYsIDExMiwgMjA1LCA5NywgMTc2LCAyNDYsIDE1NiwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDE3NiwgCisgICAgMjQ2LCAxNTYsIDQ4LCA5OCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDE4MiwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAKKyAgICAxNDgsIDg3LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMTkxLCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgCisgICAgMTU3LCAyMDEsIDQ4LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMTU3LCAyMzksIDE0LCAyMDUsIDk3LCA1NSwgMjA1LCAKKyAgICAxODYsIDE0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAyMDgsIDI1NCwgMjAxLCAKKyAgICA0OCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDk4LCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCA5NywgCisgICAgMTgyLCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCA5NywgODcsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIAorICAgIDk3LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIDk3LCAyMzMsIDE3NywgMjA3LCAyNSwgMjI2LCAyMTQsIAorICAgIDgzLCAyMDcsIDI1LCAyMjYsIDIxNCwgOTgsIDIwNSwgOTcsIDU1LCAxMTksIDg3LCAyMDUsIDk3LCA0OCwgMTgyLCAyMDUsIAorICAgIDk3LCA1NSwgOTgsIDc2LCAxOTEsIDIwNSwgOTcsIDQ4LCA4NywgMjA1LCA5NywgNTUsIDExOSwgOTgsIDIwNSwgOTcsIDQ4LCAKKyAgICAxOTEsIDIwNSwgOTcsIDU1LCA5OCwgNzYsIDE4MiwgMjA1LCA5NywgNDgsIDk4LCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAKKyAgICAxOTksIDE4MiwgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgMTk5LCA4NywgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgMTk5LCAKKyAgICAxOTEsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgOTgsIDYzLCA0NCwgNjQsIDQ4LCAxODIsIDYzLCA0NCwgNjQsIAorICAgIDQ4LCA4NywgNjMsIDQ0LCA2NCwgNDgsIDE5MSwgNjMsIDQ0LCA2NCwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDUxLCAyMDQsIAorICAgIDk5LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgMjQ4LCA5MywgMjA0LCA5OSwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDQ5LCAKKyAgICAyMDQsIDk5LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgMjA1LCAxNTgsIDIwNCwgOTksIDQ4LCAyMTMsIDExMCwgMjI1LCAyOCwgCisgICAgMjEzLCAxMTAsIDIxMywgNDYsIDIyMCwgNiwgMjI1LCAyOCwgMjIwLCA2LCAyMTMsIDQ2LCAyMzYsIDIyOSwgMjQzLCAxNiwgCisgICAgMjUwLCAyMDAsIDI0NiwgMTUxLCAyNTEsIDQ2LCA4NywgNjMsIDQ4LCAyMDYsIDQ1LCAyMDUsIDE1NiwgOTgsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgMjA2LCA0NSwgMjEzLCA0MiwgMTgyLCAyMzgsIDExOCwgMjUwLCAyMDIsIDIwNiwgNDUsIDIwNSwgMTU2LCAKKyAgICA4NywgMjM4LCAxMTgsIDI1MCwgMjAyLCAyMDYsIDQ1LCAyMjUsIDI0LCAxOTEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgNjMsIAorICAgIDk4LCAyMzgsIDExOCwgMjUwLCAyMDIsIDYzLCAxODIsIDIzOCwgMTE4LCAyNTAsIDIwMiwgNjMsIDg3LCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDYzLCAxOTEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIAorICAgIDIyNCwgMjI1LCAxOCwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjEzLCAzNSwgMTgyLCAyMDUsIDk3LCAKKyAgICA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjI1LCAxOCwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjEzLCAKKyAgICAzNSwgOTgsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMDMsIDIxNiwgODcsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIAorICAgIDIwNSwgMjI0LCAyMDMsIDIxNiwgOTgsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMzksIDE2NSwgODcsIDIwNSwgCisgICAgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMzksIDE2NSwgNjMsIDI0MiwgMTg4LCAxOTEsIDI2LCA5OCwgNDgsIDYzLCAKKyAgICAyNDIsIDE4OCwgMTkxLCAyNiwgODcsIDQ4LCA2MywgMjQyLCAxODgsIDE4MiwgMjYsIDk4LCA0OCwgNjMsIDI0MiwgMTg4LCAKKyAgICAxODIsIDI2LCA4NywgNDgsIDYzLCAyNDIsIDE4OCwgOTgsIDI2LCAxODIsIDQ4LCA2MywgMjQyLCAxODgsIDg3LCAyNiwgCisgICAgMTgyLCA0OCwgNjMsIDI0MiwgMTg4LCA5OCwgMjYsIDE5MSwgNDgsIDYzLCAyNDIsIDE4OCwgODcsIDI2LCAxOTEsIDQ4LCAKKyAgICAyMTMsIDg2LCA1NSwgMTI3LCAyMjUsIDI4LCAyMTMsIDg2LCA1NSwgMTI3LCAyMTMsIDQ2LCAyMTMsIDg2LCA1NSwgMTE1LCAKKyAgICAyMjUsIDI4LCAyMTMsIDg2LCA1NSwgMTE1LCAyMTMsIDQ2LCAyMTMsIDg2LCA1NSwgNDksIDIwMywgMjI4LCAyMTMsIDg2LCAKKyAgICA1NSwgNTEsIDIwMywgMjI4LCAyMTMsIDg2LCA1NSwgNDksIDIzOSwgMTY3LCAyMTMsIDg2LCA1NSwgNTEsIDIzOSwgMTY3LCAKKyAgICAxODIsIDY0LCA1NSwgMjM2LCAyMDEsIDI0OSwgNzcsIDMsIDIzMywgMTc3LCAxNDgsIDExNSwgMjUwLCAyMDMsIDIyOCwgCisgICAgMTE4LCAzNSwgMjEzLCAxNzYsIDI0OCwgNzgsIDI0OSwgOTQsIDEwMCwgMywgMTYyLCAyMDAsIDE5NSwgNDQsIDIwMCwgMTk1LCAKKyAgICA0NCwgMjcsIDIwMCwgMTk1LCA2MywgNTIsIDI0NywgNTMsIDYzLCAyNDEsIDY1LCAyNDcsIDUzLCAyMDQsIDE4NSwgNjMsIAorICAgIDIxNiwgMzcsIDIzMywgMTc3LCA2MywgMjE3LCAxMzAsIDYzLCAyMTcsIDEzMCwgNjMsIDIyMiwgNjYsIDIwMywgMjI3LCAKKyAgICAyMDUsIDk5LCAyNDcsIDUzLCA2MywgMjIyLCA2NiwgMjM5LCAxNjYsIDIwNSwgOTksIDI0NywgNTMsIDYzLCAyMjIsIDY2LCAKKyAgICAyMjUsIDIzLCAyMDUsIDk5LCAyNDcsIDUzLCA2MywgMjIyLCA2NiwgMjEzLCA0MSwgMjA1LCA5OSwgMjQ3LCA1MywgMjA1LCAKKyAgICAxNTgsIDE2NywgNjMsIDI0NiwgMTU1LCAyNDgsIDkzLCAxNjcsIDYzLCAyNDYsIDE1NSwgMTYyLCAyMzYsIDIyOSwgMjE1LCAKKyAgICA5OCwgNjMsIDI0MiwgMTg0LCAyMTIsIDIyOCwgMTYyLCAyMzYsIDIyOSwgMjE1LCA5OCwgNjMsIDI0MiwgMTg0LCA2NCwgCisgICAgMjM2LCAyMjksIDIxNSwgOTgsIDI0MiwgMTg0LCAyMTIsIDIyOCwgNjQsIDIzNiwgMjI5LCAyMTUsIDk4LCAyNDIsIDE4NCwgCisgICAgNTIsIDIxNSwgNzAsIDIyOCwgOTksIDIwMywgMjU1LCA1NCwgOTgsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCA5OSwgMjUwLCAKKyAgICAyMDEsIDE4MiwgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIDk5LCAyNTAsIDIwMSwgODcsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCAKKyAgICA5OSwgMjUwLCAyMDEsIDE5MSwgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIDk5LCAyNTAsIDIwMSwgMTE2LCA2LCAxLCAyNTAsIAorICAgIDEwNCwgMTE2LCA2LCAxLCAyNDgsIDI0LCAxMTYsIDYsIDEsIDIwMywgNTcsIDExNiwgNiwgMSwgMjM1LCAxMzAsIDExNiwgNiwgCisgICAgMSwgMjQwLCAyMDYsIDExNiwgNiwgMSwgMjAwLCAyMywgMTE2LCA2LCAxLCAxOTksIDYxLCAxMTYsIDYsIDEsIDIzOSwgODgsIAorICAgIDExNiwgNiwgMSwgMTk5LCA4NiwgMTE2LCA2LCAxLCAyMjcsIDI1NSwgMTE2LCA2LCAxLCA4MiwgMjI3LCAyNTUsIDExNiwgNiwgCisgICAgMSwgNzAsIDExNiwgNiwgMSwgMjQwLCAyMjYsIDExNiwgNiwgMSwgMjI3LCA3NCwgMTE2LCA2LCAxLCAyMjQsIDE0MCwgMTE2LCAKKyAgICA2LCAxLCAyMjAsIDIxOCwgMTE2LCA2LCAxLCAyMjAsIDEyMCwgMTE2LCA2LCAxLCAyMTcsIDY1LCAxMTYsIDYsIDEsIDIxNSwgCisgICAgOTMsIDExNiwgNiwgMSwgMjEzLCAxOCwgMTE2LCA2LCAxLCAyMDksIDU4LCAxMTYsIDYsIDEsIDIwNCwgMTcxLCAxMTYsIDYsIAorICAgIDEsIDIwNCwgMTYsIDExNiwgNiwgMSwgMjM2LCAyMDQsIDExNiwgNiwgMSwgMjM0LCA5NSwgMTE2LCA2LCAxLCAyMTcsIDQsIAorICAgIDExNiwgNiwgMSwgMjE2LCA3MywgMTE2LCA2LCAxLCAyMDksIDIyMywgMTE2LCA2LCAxLCAyMDUsIDExLCAxMTYsIDYsIDEsIAorICAgIDI0NiwgMTk4LCAxMTYsIDYsIDEsIDIxMCwgMTE0LCAxMTYsIDYsIDEsIDIwMCwgMjksIDExNiwgNiwgMSwgMjAwLCAzMSwgCisgICAgMTE2LCA2LCAxLCAyMDAsIDYzLCAxMTYsIDYsIDEsIDIwOCwgMjIwLCAxNDQsIDExNiwgNiwgMSwgMTk5LCAyMTEsIDExNiwgCisgICAgNiwgMSwgNCwgMTk5LCAxODEsIDExNiwgNiwgMSwgNCwgMTk5LCAxODIsIDMsIDIwNywgNiwgMTE2LCA2LCAxLCAxOTksIAorICAgIDI0NSwgMTE2LCA2LCAxLCAyMjgsIDQwLCA0LCAxOTksIDE4MSwgMTE2LCA2LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDExNiwgCisgICAgNiwgMSwgMjI4LCA0MCwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAxMTYsIDYsIDEsIDIzNywgNjMsIDExNiwgNiwgMSwgMjI3LCAKKyAgICAyNTMsIDExNiwgNiwgMSwgMjA5LCAyMjIsIDExNiwgNiwgMSwgMjA1LCA3MywgNjIsIDExNiwgNiwgMSwgMjI1LCA1OSwgCisgICAgMjIwLCAyMTgsIDExNiwgNCwgMSwgMjUwLCAxMDQsIDExNiwgNCwgMSwgMjQ4LCAyNCwgMTE2LCA0LCAxLCAyMDMsIDU3LCAKKyAgICAxMTYsIDQsIDEsIDIzNSwgMTMwLCAxMTYsIDQsIDEsIDI0MCwgMjA2LCAxMTYsIDQsIDEsIDIwMCwgMjMsIDExNiwgNCwgMSwgCisgICAgMTk5LCA2MSwgMTE2LCA0LCAxLCAyMzksIDg4LCAxMTYsIDQsIDEsIDE5OSwgODYsIDExNiwgNCwgMSwgMjI3LCAyNTUsIAorICAgIDExNiwgNCwgMSwgODIsIDIyNywgMjU1LCAxMTYsIDQsIDEsIDcwLCAxMTYsIDQsIDEsIDI0MCwgMjI2LCAxMTYsIDQsIDEsIAorICAgIDIyNywgNzQsIDExNiwgNCwgMSwgMjI0LCAxNDAsIDExNiwgNCwgMSwgMjIwLCAyMTgsIDExNiwgNCwgMSwgMjIwLCAxMjAsIAorICAgIDExNiwgNCwgMSwgMjE3LCA2NSwgMTE2LCA0LCAxLCAyMTUsIDkzLCAxMTYsIDQsIDEsIDIxMywgMTgsIDExNiwgNCwgMSwgCisgICAgMjA5LCA1OCwgMTE2LCA0LCAxLCAyMDQsIDE3MSwgMTE2LCA0LCAxLCAyMDQsIDE2LCAxMTYsIDQsIDEsIDIzNiwgMjA0LCAKKyAgICAxMTYsIDQsIDEsIDIzNCwgOTUsIDExNiwgNCwgMSwgMjE3LCA0LCAxMTYsIDQsIDEsIDIxNiwgNzMsIDExNiwgNCwgMSwgCisgICAgMjA5LCAyMjMsIDExNiwgNCwgMSwgMjA1LCAxMSwgMTE2LCA0LCAxLCAyNDYsIDE5OCwgMTE2LCA0LCAxLCAyMTAsIDExNCwgCisgICAgMTE2LCA0LCAxLCAyMDAsIDI5LCAxMTYsIDQsIDEsIDIwMCwgMzEsIDExNiwgNCwgMSwgMjAwLCA2MywgMTE2LCA0LCAxLCAKKyAgICAyMDgsIDIyMCwgMTQ0LCAxMTYsIDQsIDEsIDE5OSwgMjExLCAxMTYsIDQsIDEsIDQsIDE5OSwgMTgxLCAxMTYsIDQsIDEsIDQsIAorICAgIDE5OSwgMTgyLCAzLCAyMDcsIDYsIDExNiwgNCwgMSwgMTk5LCAyNDUsIDExNiwgNCwgMSwgMjI4LCA0MCwgNCwgMTk5LCAKKyAgICAxODEsIDExNiwgNCwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAxMTYsIDQsIDEsIDIyOCwgNDAsIDI0OCwgMTc1LCAxOTksIAorICAgIDE4MSwgMTE2LCA0LCAxLCAyMzcsIDYzLCAxMTYsIDQsIDEsIDIyNywgMjUzLCAxMTYsIDQsIDEsIDIwOSwgMjIyLCAxMTYsIAorICAgIDQsIDEsIDIwNSwgNzMsIDYyLCAxMTYsIDQsIDEsIDIyNSwgNTksIDIyMCwgMjE4LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgCisgICAgNTMsIDE0OCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDUzLCAxNDgsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAxMDEsIDIwNSwgCisgICAgMjQwLCA4LCA2LCAxLCAyMTYsIDIyNywgMywgOTcsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIwNywgNiwgOCwgNCwgMSwgMzUsIAorICAgIDMsIDk3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgMTE5LCAKKyAgICA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQxLCAxMTksIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyNDEsIDExOSwgOCwgNCwgMSwgCisgICAgMjI3LCAxMTksIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMjQxLCAxMTksIDgsIDQsIDEsIDE5OSwgMTU4LCAKKyAgICAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMjUxLCAxMTIsIDgsIDYsIDEsIDIyMywgMjQ0LCAzLCAxMTcsIDgsIDYsIDEsIDIwNCwgCisgICAgMTg1LCA2MiwgOCwgNiwgMSwgMjA0LCAxODUsIDI1MSwgMTEyLCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgNTEsIDExNywgOCwgCisgICAgNiwgMSwgMjAxLCAxNDgsIDMsIDExNywgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDExNywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIAorICAgIDI0MiwgMTk4LCA4LCA2LCAxLCAxNjcsIDIzNCwgMjQ3LCA4LCA0LCAxLCAxNjcsIDIzNCwgMjQ3LCA4LCA0LCAxLCAyMDcsIAorICAgIDQsIDIxNSwgMjI5LCA4LCA0LCAxLCAxOTcsIDMsIDIxOCwgMjEyLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjE0LCAzMywgMywgCisgICAgMjA3LCA2LCA4LCA0LCAxLCAxNjMsIDMsIDEyOCwgMjEzLCAyNywgMjI4LCA3MywgOCwgMSwgNCwgNiwgMjA0LCAxODUsIDcyLCAKKyAgICA4LCAyMDgsIDQsIDQsIDEsIDIyNywgMjUxLCA2NywgMSwgNiwgMjAzLCAxNjgsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyMDcsIAorICAgIDE4MywgMjA3LCA2LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMjA3LCAxODMsIDIwNywgNiwgODUsIDYsIDEsIDI1MSwgMTM2LCAKKyAgICA4NSwgNCwgMSwgMjUxLCAxMzYsIDg1LCA2LCAxLCAyMDIsIDIzMSwgODUsIDQsIDEsIDIwMiwgMjMxLCA4NSwgNiwgMSwgCisgICAgMjM2LCA2MCwgODUsIDQsIDEsIDIzNiwgNjAsIDg1LCA2LCAxLCAyNDIsIDI1LCA4NSwgNCwgMSwgMjQyLCAyNSwgODUsIDYsIAorICAgIDEsIDIzOCwgMjMzLCA4NSwgNCwgMSwgMjM4LCAyMzMsIDg1LCA2LCAxLCAyMDksIDMsIDg1LCA0LCAxLCAyMDksIDMsIDg1LCAKKyAgICA2LCAxLCAxOTksIDk2LCA4NSwgNCwgMSwgMTk5LCA5NiwgODUsIDYsIDEsIDIzNCwgMTU0LCA4NSwgNCwgMSwgMjM0LCAxNTQsIAorICAgIDg1LCA2LCAxLCAyMDYsIDg2LCA4NSwgNCwgMSwgMjA2LCA4NiwgODUsIDYsIDEsIDIzMiwgMjM3LCA4NSwgNCwgMSwgMjMyLCAKKyAgICAyMzcsIDg1LCA2LCAxLCAyMjcsIDU5LCA4NSwgNCwgMSwgMjI3LCA1OSwgODUsIDYsIDEsIDIyNSwgNTQsIDg1LCA0LCAxLCAKKyAgICAyMjUsIDU0LCA4NSwgNiwgMSwgMjIxLCAyMTEsIDg1LCA0LCAxLCAyMjEsIDIxMSwgODUsIDYsIDEsIDIxOSwgMTUwLCA4NSwgCisgICAgNCwgMSwgMjE5LCAxNTAsIDg1LCA2LCAxLCAyMjYsIDMxLCA4NSwgNCwgMSwgMjI2LCAzMSwgODUsIDYsIDEsIDc0LCA4NSwgCisgICAgNCwgMSwgNzQsIDg1LCA2LCAxLCAyMTUsIDIwNCwgODUsIDQsIDEsIDIxNSwgMjA0LCA4NSwgNiwgMSwgMjEzLCAxLCA4NSwgCisgICAgNCwgMSwgMjEzLCAxLCA4NSwgNiwgMSwgMjA5LCAxNTEsIDg1LCA0LCAxLCAyMDksIDE1MSwgODUsIDYsIDEsIDIwNiwgMjIxLCAKKyAgICA4NSwgNCwgMSwgMjA2LCAyMjEsIDg1LCA2LCAxLCAyMDQsIDQ2LCA4NSwgNCwgMSwgMjA0LCA0NiwgODUsIDYsIDEsIDIzNywgCisgICAgMTEyLCA4NSwgNCwgMSwgMjM3LCAxMTIsIDg1LCA2LCAxLCAyMjYsIDE4NSwgODUsIDQsIDEsIDIyNiwgMTg1LCA4NSwgNiwgCisgICAgMSwgMjE0LCAyMzUsIDg1LCA0LCAxLCAyMTQsIDIzNSwgODUsIDYsIDEsIDIxNywgNTcsIDg1LCA0LCAxLCAyMTcsIDU3LCAKKyAgICA4NSwgNiwgMSwgMjQxLCA2OSwgMjUxLCAxNDIsIDg1LCA0LCAxLCAyNDEsIDY5LCAyNTEsIDE0MiwgODUsIDYsIDEsIDQwLCAKKyAgICA4NSwgMjUxLCAxNzEsIDg1LCA0LCAxLCA0MCwgODUsIDI1MSwgMTcxLCA4NSwgNiwgMSwgMjQyLCAyMTcsIDIzOCwgMjMzLCAKKyAgICA4NSwgNCwgMSwgMjQyLCAyMTcsIDIzOCwgMjMzLCA4NSwgNiwgMSwgMjQxLCA2OSwgMjI3LCA1OSwgODUsIDQsIDEsIDI0MSwgCisgICAgNjksIDIyNywgNTksIDg1LCA2LCAxLCAyNDEsIDY5LCAyMTksIDE1MCwgODUsIDQsIDEsIDI0MSwgNjksIDIxOSwgMTUwLCAKKyAgICA4NSwgNiwgMSwgMjQyLCAyMTcsIDIxOSwgMTUwLCA4NSwgNCwgMSwgMjQyLCAyMTcsIDIxOSwgMTUwLCA4NSwgNiwgMSwgNDAsIAorICAgIDg1LCAyMTcsIDU3LCA4NSwgNCwgMSwgNDAsIDg1LCAyMTcsIDU3LCA4NSwgNiwgMSwgMjEyLCAxNiwgODUsIDQsIDEsIDIxMiwgCisgICAgMTYsIDg1LCA2LCAxLCAyNDIsIDIzMiwgMjEwLCA1NywgODUsIDQsIDEsIDI0MiwgMjMyLCAyMTAsIDU3LCA4NSwgNiwgMSwgCisgICAgNDAsIDg1LCAyMTAsIDU3LCA4NSwgNCwgMSwgNDAsIDg1LCAyMTAsIDU3LCA4NSwgNiwgMSwgNDAsIDg1LCAyMzgsIDk0LCAKKyAgICA4NSwgNCwgMSwgNDAsIDg1LCAyMzgsIDk0LCA4NSwgNiwgMSwgMjUxLCAxNTUsIDIyNiwgMTkwLCA4NSwgNCwgMSwgMjUxLCAKKyAgICAxNTUsIDIyNiwgMTkwLCA4NSwgNiwgMSwgMjQxLCA2OSwgMjMzLCAxNzgsIDg1LCA0LCAxLCAyNDEsIDY5LCAyMzMsIDE3OCwgCisgICAgODUsIDYsIDEsIDQwLCA4NSwgMjMzLCAxNzgsIDg1LCA0LCAxLCA0MCwgODUsIDIzMywgMTc4LCA4NSwgNiwgMSwgNDAsIDg1LCAKKyAgICAxNDQsIDg1LCA0LCAxLCA0MCwgODUsIDE0NCwgODUsIDYsIDEsIDIyNSwgMTkyLCAxNDQsIDg1LCA0LCAxLCAyMjUsIDE5MiwgCisgICAgMTQ0LCA4NSwgNiwgMSwgNDAsIDg1LCAyMzQsIDExNCwgODUsIDQsIDEsIDQwLCA4NSwgMjM0LCAxMTQsIDg1LCA2LCAxLCAKKyAgICA0MCwgODUsIDIzNCwgMTU3LCA4NSwgNCwgMSwgNDAsIDg1LCAyMzQsIDE1NywgODUsIDYsIDEsIDQwLCA4NSwgMjM2LCA1NSwgCisgICAgODUsIDQsIDEsIDQwLCA4NSwgMjM2LCA1NSwgODUsIDYsIDEsIDQwLCA4NSwgMjQwLCAyMjksIDg1LCA0LCAxLCA0MCwgODUsIAorICAgIDI0MCwgMjI5LCA4NSwgNiwgMSwgNDAsIDg1LCAyMTAsIDIzLCA4NSwgNCwgMSwgNDAsIDg1LCAyMTAsIDIzLCA4NSwgNiwgMSwgCisgICAgNDAsIDIxOCwgMTAzLCAyMTAsIDIzLCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMTAsIDIzLCA4NSwgNiwgMSwgNDAsIAorICAgIDIxOCwgMTAzLCAyMTksIDIwMSwgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjE5LCAyMDEsIDg1LCA2LCAxLCA0MCwgMjE4LCAKKyAgICAxMDMsIDIxOCwgNDEsIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIxOCwgNDEsIDg1LCA2LCAxLCA0MCwgMjE4LCAxMDMsIAorICAgIDIwMSwgNzksIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIwMSwgNzksIDg1LCAxNiwgMjI3LCA4MiwgODUsIDE2LCAyMjEsIAorICAgIDIxMiwgMjEzLCAxLCA4NSwgMTYsIDIxNSwgMjA1LCAyMTMsIDEsIDg1LCAxNiwgMjA4LCAxMDAsIDg1LCAxNiwgMjA2LCAKKyAgICAyMjIsIDIxMywgMSwgODUsIDE2LCAyMjYsIDE4NiwgMjEzLCAxLCA4NSwgMTYsIDIxMCwgMjQsIDIwOSwgMTUxLCA4NSwgNiwgCisgICAgMSwgMjQyLCAyMTcsIDIxMCwgNTcsIDg1LCA0LCAxLCAyNDIsIDIxNywgMjEwLCA1NywgODUsIDYsIDEsIDI0MiwgMjE3LCAKKyAgICAyMzYsIDU1LCA4NSwgNCwgMSwgMjQyLCAyMTcsIDIzNiwgNTUsIDg1LCAzOCwgMjE5LCAxNTEsIDU2LCA4NSwgMzgsIDIwOCwgCisgICAgMjEzLCAyNTAsIDE3MywgODUsIDM4LCAyMDgsIDIxMywgMjI0LCAyNDgsIDg1LCA2LCAxLCAyNDgsIDExNywgMjI2LCAxOTAsIAorICAgIDg1LCA0LCAxLCAyNDgsIDExNywgMjI2LCAxOTAsIDg1LCA0MCwgMjE4LCAxMDMsIDIzNiwgMTgzLCAyMDgsIDc2LCA4NSwgCisgICAgNDAsIDIxOCwgMTAzLCAyNDEsIDEwLCAyMTQsIDc5LCA4MSwgODUsIDQwLCAyMTgsIDEwMywgMjI4LCA5NywgMjE0LCA3OSwgCisgICAgODEsIDg1LCA0MCwgMjE4LCAxMDMsIDIwMywgNDQsIDI0MCwgMjM5LCA4NSwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDg1LCAKKyAgICAyMzYsIDE4MywgMjA4LCA3NiwgODUsIDIyMSwgNzcsIDI0MCwgMjM5LCAxMTgsIDQsIDEsIDI1MSwgODUsIDExOCwgNCwgMSwgCisgICAgMjQ5LCA4OCwgMTE4LCA0LCAxLCAyMzYsIDU5LCAxMTgsIDQsIDEsIDI0MCwgMTkwLCAxMTgsIDQsIDEsIDIzOCwgMTc5LCAKKyAgICAxMTgsIDQsIDEsIDIwMiwgMjE3LCAxMTgsIDQsIDEsIDE5OSwgODQsIDExOCwgNCwgMSwgMjA2LCAyNDQsIDExOCwgNCwgMSwgCisgICAgMjI4LCAxMTcsIDExOCwgNCwgMSwgMjI3LCA2OCwgMTE4LCA0LCAxLCAyMjUsIDY1LCAxMTgsIDQsIDEsIDIyMiwgMTgwLCAKKyAgICAxMTgsIDQsIDEsIDIyMCwgMTI1LCAxMTgsIDQsIDEsIDIxNywgNzgsIDExOCwgNCwgMSwgMjE2LCAxMzAsIDExOCwgNCwgMSwgCisgICAgMTk5LCA3MywgMTE4LCA0LCAxLCAyMTMsIDIzNCwgMTE4LCA0LCAxLCAyMTIsIDEzLCAxMTgsIDQsIDEsIDIwNiwgMjMyLCAKKyAgICAxMTgsIDQsIDEsIDIwNCwgNSwgMTE4LCA0LCAxLCAyMTUsIDIzNywgMTE4LCA0LCAxLCAyMjYsIDE5NSwgMTE4LCA0LCAxLCAKKyAgICAyMzUsIDE5MCwgMTE4LCA0LCAxLCAyMTQsIDE0NCwgMTE4LCA0LCAxLCAyMTAsIDIxLCAxMTgsIDQsIDEsIDI0NiwgMjIzLCAKKyAgICAxMTgsIDQsIDEsIDI0NywgMTU4LCAxMTgsIDQsIDEsIDIyNywgMTk4LCAxMTgsIDQsIDEsIDI0NiwgMTYyLCAxMTgsIDQsIDEsIAorICAgIDI0NywgMjEsIDExOCwgNCwgMSwgMjAwLCAxNzksIDExOCwgNCwgMSwgMjI3LCAyMTIsIDExOCwgNCwgMSwgMjM0LCAyMzAsIAorICAgIDExOCwgNCwgMSwgMjM0LCAxMzksIDExOCwgNCwgMSwgMjM0LCA2OSwgMTE4LCA0LCAxLCAyMDEsIDY0LCAxMTgsIDQsIDEsIAorICAgIDIzNCwgMTY2LCAxMTgsIDQsIDEsIDIzMywgMjAzLCAxMTgsIDQsIDEsIDE5OSwgMjQ3LCAxMTgsIDQsIDEsIDI1MSwgMjEwLCAKKyAgICAyMDYsIDQsIDEsIDE4MywgMjA2LCA0LCAxLCAyMDAsIDEwNSwgMjA2LCA0LCAxLCAyMDAsIDEwNCwgMjA2LCA0LCAxLCAyMDAsIAorICAgIDk0LCAyMDYsIDQsIDEsIDIwMCwgOTIsIDIwNiwgNCwgMSwgMjQ4LCAyMTQsIDI1MSwgMjUzLCAyMDAsIDg3LCAyMDYsIDQsIAorICAgIDEsIDIwMCwgODcsIDIwNiwgNCwgMSwgMjAwLCAxMDIsIDIwNiwgNCwgMSwgMjAwLCA5OSwgMjA2LCA0LCAxLCAyMDAsIDEwMSwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDEwMCwgMjA2LCA0LCAxLCAyMDAsIDE0LCAyMDYsIDQsIDEsIDIwMCwgOTYsIDIwNiwgNCwgMSwgCisgICAgMjAwLCA4NSwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA4NSwgMjA2LCA0LCAxLCAyMDAsIDgyLCAyMDYsIDQsIDEsIAorICAgIDIwMCwgOTAsIDIwNiwgNCwgMSwgMjQ4LCAyMTQsIDI1MSwgMjUzLCAyMDAsIDkwLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAKKyAgICAyMDAsIDkwLCAyMDYsIDQsIDEsIDIwMCwgODksIDIwNiwgNCwgMSwgMjAwLCAxMDksIDIwNiwgNCwgMSwgMjAwLCA4MywgCisgICAgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA4MywgMjA2LCA0LCAxLCAyMDAsIDcyLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAKKyAgICAyMDAsIDcyLCAyMDYsIDQsIDEsIDIwMCwgOSwgMjA2LCA0LCAxLCAyMDAsIDUzLCAyMDYsIDQsIDEsIDI1MSwgMTgzLCAyMDAsIAorICAgIDUzLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDUzLCAyMDYsIDQsIDEsIDIwMCwgODEsIDIwNiwgNCwgMSwgMjAwLCA4MCwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDc3LCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDkxLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAKKyAgICAyMDAsIDc1LCAyMDYsIDQsIDEsIDIwMCwgNzMsIDIwNiwgNCwgMSwgMTk5LCAyMTEsIDIwNiwgNCwgMSwgMjAwLCA3MCwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDY5LCAyMDYsIDQsIDEsIDIwMCwgOTMsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgOTMsIAorICAgIDIwNiwgNCwgMSwgMjUwLCAxMDgsIDIwMCwgOTMsIDIwNiwgNCwgMSwgMjAwLCA2OCwgMjA2LCA0LCAxLCAyMDAsIDY2LCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNjcsIDIwNiwgNCwgMSwgMjAwLCA2NSwgMjA2LCA0LCAxLCAyMDAsIDY0LCAyMDYsIDQsIDEsIAorICAgIDIwMCwgMTAzLCAyMDYsIDQsIDEsIDIwMCwgNjIsIDIwNiwgNCwgMSwgMjAwLCA2MCwgMjA2LCA0LCAxLCAyMDAsIDU5LCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNTcsIDIwNiwgNCwgMSwgMjAwLCA1NCwgMjA2LCA0LCAxLCAyMDYsIDIxMywgMjAwLCA1NCwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDUyLCAyMDYsIDQsIDEsIDIwMCwgNTEsIDIwNiwgNCwgMSwgMTk5LCAyNDUsIDIwNiwgNCwgNjcsIAorICAgIDEsIDIyNSwgMTY2LCA4MSwgMjA2LCA0LCAyMTAsIDE1NSwgODEsIDIwNiwgNCwgMTExLCAyMjcsIDE2MSwgMzQsIDUsIDIyNCwgCisgICAgMTA5LCAzNCwgNSwgMjIxLCAxMzUsIDM0LCA1LCAyMTIsIDI1NSwgMzQsIDUsIDIwOSwgMjgsIDM0LCA1LCAyMTAsIDcsIDM0LCAKKyAgICA1LCAyNDgsIDEyMywgMzQsIDUsIDIwNSwgMTg1LCAzNCwgNSwgMjQ2LCA5MCwgMzQsIDUsIDIxOCwgMjM5LCAzNCwgNSwgCisgICAgMjE4LCAyNSwgMzQsIDUsIDIzNSwgMTIzLCAyMTcsIDE0NiwgMzQsIDUsIDE5OSwgMTMsIDM0LCA1LCAyNDAsIDIwOSwgMzQsIAorICAgIDUsIDI0MSwgMTg5LCAzNCwgNSwgMjI3LCAxNjUsIDM0LCA1LCAyMDYsIDYwLCAzNCwgNSwgMjQ2LCAyMDksIDM0LCA1LCAKKyAgICAyMTUsIDIxNiwgMzQsIDUsIDIxNSwgMTA1LCAzNCwgNSwgMjM1LCAyMDUsIDM0LCA1LCAyMzUsIDIwMSwgMzQsIDUsIDIzNSwgCisgICAgMjAyLCAzNCwgNSwgMjM1LCAyMDMsIDM0LCA1LCAyMDgsIDE3OSwgMzQsIDUsIDIwOCwgMTM0LCAzNCwgNSwgMjA4LCAxNDcsIAorICAgIDM0LCA1LCAyMDgsIDE3OCwgMzQsIDUsIDIwOCwgMTUyLCAzNCwgNSwgMjA4LCAxNTMsIDM0LCA1LCAyMDgsIDEzOSwgMzQsIAorICAgIDUsIDI0NywgOTksIDM0LCA1LCAyNDcsIDc4LCAzNCwgNSwgMjQ3LCA4MCwgMzQsIDUsIDI0NywgOTgsIDM0LCA1LCAyNDcsIAorICAgIDk2LCAzNCwgNSwgMjQ3LCA5NywgMzQsIDUsIDI0NywgNzksIDM0LCA1LCAxOTgsIDIzMiwgMzQsIDUsIDE5OCwgMjEwLCAzNCwgCisgICAgNSwgMTk4LCAyMjMsIDM0LCA1LCAxOTgsIDIzMSwgMzQsIDUsIDE5OCwgMjI2LCAzNCwgNSwgMTk4LCAyMjcsIDM0LCA1LCAKKyAgICAxOTgsIDIxNSwgMzQsIDUsIDI0NywgOTQsIDM0LCA1LCAyNDcsIDgxLCAzNCwgNSwgMjQ3LCA4MywgMzQsIDUsIDI0NywgOTMsIAorICAgIDM0LCA1LCAyNDcsIDkxLCAzNCwgNSwgMjQ3LCA5MiwgMzQsIDUsIDI0NywgODIsIDM0LCA1LCAyMTQsIDQ1LCAzNCwgNSwgCisgICAgMjE0LCAzNSwgMzQsIDUsIDIxNCwgNDEsIDM0LCA1LCAyMTQsIDQ0LCAzNCwgNSwgMjE0LCA0MiwgMzQsIDUsIDIxNCwgNDMsIAorICAgIDM0LCA1LCAyMTQsIDQwLCAzNCwgNSwgMjI1LCAyMDMsIDM0LCA1LCAyMjUsIDE5NSwgMzQsIDUsIDIyNSwgMTk4LCAzNCwgNSwgCisgICAgMjI1LCAyMDIsIDM0LCA1LCAyMjUsIDE5OSwgMzQsIDUsIDIyNSwgMjAwLCAzNCwgNSwgMjI1LCAxOTYsIDM0LCA1LCAyMDAsIAorICAgIDEzOSwgMzQsIDUsIDIwMCwgMTI2LCAzNCwgNSwgMjAwLCAxMzQsIDM0LCA1LCAyMDAsIDEzOCwgMzQsIDUsIDIwMCwgMTM2LCAKKyAgICAzNCwgNSwgMjAwLCAxMzcsIDM0LCA1LCAyMDAsIDEzMywgMzQsIDUsIDIzNSwgMywgMzQsIDUsIDIzNCwgMjQ5LCAzNCwgNSwgCisgICAgMjM0LCAyNTIsIDM0LCA1LCAyMzUsIDIsIDM0LCA1LCAyMzQsIDI1NCwgMzQsIDUsIDIzNCwgMjU1LCAzNCwgNSwgMjM0LCAKKyAgICAyNTEsIDM4LCAzNywgMSwgMjQ5LCA4LCAzOCwgMzcsIDEsIDIwMywgNTksIDM4LCAzNywgMSwgMjM1LCAxODUsIDM4LCAzNywgCisgICAgMSwgMjQxLCAxNzUsIDM4LCAzNywgMSwgMTk5LCA2OCwgMzgsIDM3LCAxLCAxOTksIDg5LCAzOCwgMzcsIDEsIDE2MSwgMzgsIAorICAgIDM3LCAxLCAyMzgsIDIwOSwgMzgsIDM3LCAxLCAyMzgsIDE5MCwgMzgsIDM3LCAxLCAyMzgsIDE3OSwgMzgsIDM3LCAxLCA3NCwgCisgICAgMzgsIDM3LCAxLCAyMTYsIDczLCAzOCwgMzcsIDEsIDIzOCwgMTE1LCAzOCwgMzcsIDEsIDIzOCwgMTA0LCAzOCwgMzcsIDEsIAorICAgIDIwNiwgMjAxLCAzOCwgMzcsIDEsIDE0NCwgMzgsIDM3LCAxLCAyMDUsIDI2LCAzOCwgMzcsIDEsIDI0NywgOCwgMzgsIDM3LCAKKyAgICAxLCAyMTAsIDExNCwgMzgsIDM3LCAxLCAyMTAsIDY4LCAzOCwgMzcsIDEsIDIzNywgNjMsIDM4LCAzNywgMSwgMjM4LCAxMDAsIAorICAgIDM4LCAzNywgMSwgNjIsIDM4LCAzNywgMSwgMjI4LCAxNzgsIDM4LCAzNywgMSwgMjQwLCAyMjcsIDM4LCAzNywgMSwgMjIxLCAKKyAgICA5NSwgMjA0LCAyMCwgMzgsIDM3LCAxLCAyMDAsIDY1LCAzOCwgMzcsIDEsIDE5OSwgMjExLCAzOCwgMzcsIDEsIDIyOCwgMzksIAorICAgIDYyLCAzOCwgMzcsIDEsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzgsIDM3LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM4LCAzNywgCisgICAgMSwgMjI4LCAzOSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCA1MSwgMjUxLCA3MSwgMjA3LCAyNTUsIDIyMiwgMTQ1LCA1MSwgMjUxLCAKKyAgICA3MSwgMjM5LCAxODAsIDIwNywgMjU1LCAyMjIsIDE0NSwgNDksIDIwNywgMjU1LCAxNTksIDUxLCAyMDcsIDI1NSwgMTU5LCAKKyAgICA0OSwgMjM5LCAxODAsIDIwNywgMjU1LCAxNTksIDUxLCAyMzksIDE4MCwgMjA3LCAyNTUsIDE1OSwgMjEzLCAyMjAsIDIyOCwgCisgICAgNjAsIDIyMiwgMTQ1LCAyMTMsIDIyMCwgMjM5LCAxODAsIDIyOCwgNjAsIDIyMiwgMTQ1LCAyMzksIDE4MCwgMjA1LCAxMTYsIAorICAgIDIyMiwgMTQ1LCA0OSwgMjA1LCAxMTYsIDE1OSwgNTEsIDIwNSwgMTE2LCAxNTksIDIxMywgMjIwLCAyMDgsIDE5MywgNDksIAorICAgIDIxMywgMjIwLCAyMTcsIDgwLCAxNTksIDUxLCAyMTMsIDIyMCwgMjE3LCA4MCwgMTU5LCAyMzksIDAsIDI0MywgMTMsIDIxNiwgCisgICAgMTI2LCAyMzYsIDI0NCwgMjE2LCAxMjYsIDIxMywgMTA1LCAyMzYsIDI0NCwgMjE2LCAxMjYsIDIzMywgMzAsIDIzOSwgMTgwLCAKKyAgICAyMTcsIDE0MSwgMTkxLCAyNTEsIDgwLCAxODIsIDI1MSwgODAsIDIzOSwgMTgwLCAyMTMsIDQxLCAyNTEsIDcwLCA1MywgCisgICAgMjE3LCAxMzgsIDIzMywgMzMsIDIyOCwgNTAsIDIyOCwgNTgsIDIxNiwgMTc3LCAyNDgsIDY2LCAyMzMsIDM0LCAzLCAyNDEsIAorICAgIDc0LCAyMDUsIDI0MSwgMywgMjEzLCAyNywgNTYsIDQ5LCAxMjgsIDIxNiwgMTE4LCAxNTksIDUxLCAxMjgsIDIxNiwgMTE4LCAKKyAgICAxNTksIDIwNSwgMjQxLCAzLCA3MywgNTYsIDIwNSwgMjQxLCAzLCA3MywgNTcsIDQ5LCA4MywgMjQ5LCA3NywgMywgMjE0LCAKKyAgICA3MywgNTEsIDgzLCAyNDksIDc3LCAzLCAyMTQsIDczLCAyMDUsIDE1OCwgNDksIDE2NywgMTU5LCAyMDUsIDE1OCwgNTEsIAorICAgIDE2NywgMTU5LCAyNDgsIDkzLCA0OSwgMTY3LCAxNTksIDI0OCwgOTMsIDUxLCAxNjcsIDE1OSwgNDksIDIwOSwgMTczLCAKKyAgICAxMDgsIDE1OSwgNTEsIDIwOSwgMTczLCAxMDgsIDE1OSwgNDksIDUzLCAyMTYsIDExNSwgNTEsIDUzLCAyMTYsIDExNSwgCisgICAgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgMjE0LCAyMTEsIDExMiwgNzMsIDExOSwgMTIwLCAxOTAsIDIxNCwgMjExLCA5NSwgCisgICAgMjM2LCAyMjksIDczLCAyMTQsIDIxMSwgMjM3LCA2MSwgNzMsIDgxLCAyMTMsIDEwNSwgMjE0LCA3OSwgODEsIDgzLCAyMDUsIAorICAgIDI0MCwgMjEzLCAyNywgMjE1LCA5OSwgMjAwLCAyMzgsIDIxMCwgMTU1LCAxMDEsIDI0MCwgMTgyLCAyMDQsIDE4NSwgMjQ2LCAKKyAgICA3MCwgMjEzLCAyMjAsIDI0MCwgMTgyLCAyMTMsIDIyMCwgMjQ2LCA3MCwgMjA0LCAxODUsIDIxMCwgMTY3LCAyNDIsIDQxLCAKKyAgICAzLCA0OSwgMjM1LCA0NCwgMjQyLCA0MSwgMywgNTEsIDIzNSwgNDQsIDIwNCwgMTg1LCAyNDIsIDQwLCAyMDUsIDE1OCwgCisgICAgMTY3LCAyMTEsIDE5MywgNTQsIDIwNCwgMTQyLCAyNDEsIDI0NCwgMjA2LCA0NCwgMjQxLCAyNDQsIDIwOCwgOTEsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCA4MywgMjA5LCAxMDYsIDI0MCwgMTgwLCAyMDEsIDIyLCA4MywgMjI0LCAxNzYsIDI0NywgMTQyLCAKKyAgICA1MywgMjMzLCAzMywgMjEzLCAxMDUsIDI0NiwgNzAsIDUzLCAyMjQsIDU1LCAyMTQsIDYzLCA4MSwgMjQxLCAyNDUsIDMsIAorICAgIDQ5LCAyMDMsIDIxOSwgNTMsIDIwNywgMTk2LCA4MSwgMTIsIDQyLCAyMTMsIDEzMiwgMTIsIDQyLCAyNDYsIDEyMCwgMTIsIAorICAgIDQyLCAyMTEsIDE5NiwgMTAyLCAxMiwgNDIsIDIxMSwgMTk2LCAxMDUsIDEyLCA0MiwgMjExLCAxOTYsIDE0NywgMTIsIDQyLCAKKyAgICAyMTYsIDEwLCAxMiwgNDIsIDI0OCwgNzgsIDEyLCA0MiwgMjA3LCAyMiwgMTIsIDQyLCAyMjYsIDk2LCAxMDIsIDEyLCA0MiwgCisgICAgMjI2LCA5NiwgMTA1LCAxMiwgNDIsIDI0MCwgMjM2LCAxMiwgNDIsIDIxMSwgMjAwLCAxMiwgNDIsIDQsIDEwMiwgMTIsIDQyLCAKKyAgICA0LCAxMDUsIDEyLCA0MiwgMjI1LCA4NiwgMTAyLCAxMiwgNDIsIDIyNSwgODYsIDEwNSwgMTIsIDQyLCAyMjUsIDg2LCAxNDcsIAorICAgIDEyLCA0MiwgMjI1LCA4NiwgMTQ5LCAxMiwgNDIsIDIwOSwgNDEsIDEyLCA0MiwgMjA2LCA0NywgMTIsIDQyLCAyMDksIDM4LCAKKyAgICAxMDIsIDEyLCA0MiwgMjA5LCAzOCwgMTA1LCAxMiwgNDIsIDIzNCwgMTI4LCAxMDIsIDEyLCA0MiwgMjM0LCAxMjgsIDEwNSwgCisgICAgMTIsIDQyLCAyMzQsIDE5OSwgMTIsIDQyLCAyMTMsIDIxMCwgMTIsIDQyLCAyNDYsIDIwNiwgMTIsIDQyLCAyMDcsIDIyOCwgCisgICAgMTIsIDQyLCAyMjEsIDgxLCAxMiwgNDIsIDI0MSwgMTczLCAxMiwgNDIsIDIyMSwgNzEsIDEyLCA0MiwgMjQ2LCAxMzgsIDEyLCAKKyAgICA0MiwgMjAxLCA4MywgMTAyLCAxMiwgNDIsIDIwMSwgODMsIDEwNSwgMTIsIDQyLCAyMzcsIDc3LCAxMiwgNDIsIDIxNiwgODUsIAorICAgIDEwMiwgMTIsIDQyLCAyMTYsIDg1LCAxMDUsIDEyLCA0MiwgMjA5LCAxNDYsIDE2NywgMjA1LCAxMDksIDIwNSwgMzcsIDEyLCAKKyAgICA0MiwgMjQyLCAyNTUsIDEyLCA0MiwgMjQwLCAyMDAsIDEyLCA0MiwgMjI3LCAyNDMsIDEyLCA0MiwgMjQ4LCAxMTYsIDc2LCAKKyAgICAyNDYsIDEwNCwgMTIsIDQyLCAyMzgsIDIyLCAxMiwgNDIsIDIwOCwgMjE1LCAxMDIsIDEyLCA0MiwgMjA4LCAyMTUsIDEwNSwgCisgICAgMTIsIDQyLCAyNDksIDkwLCAxMiwgNDIsIDIwOSwgMTUzLCAxMiwgNDIsIDI0NywgMjIwLCAyMDksIDE1MywgMTIsIDQyLCAKKyAgICAyMjAsIDE0LCAxMDIsIDEyLCA0MiwgMjIwLCAxNCwgMTA1LCAxMiwgNDIsIDIyMCwgMTQsIDE0NywgMTIsIDQyLCAyMjAsIAorICAgIDE0LCAxNDksIDEyLCA0MiwgMjIyLCAyNywgMTIsIDQyLCAyMTAsIDU5LCAxMiwgNDIsIDIxMywgMjE2LCAxMiwgNDIsIDIzOCwgCisgICAgNTAsIDEyLCA0MiwgMjE3LCA5MiwgMTIsIDQyLCAyNDgsIDQ0LCAxMDIsIDEyLCA0MiwgMjQ4LCA0NCwgMTA1LCAxMiwgNDIsIAorICAgIDIyMiwgNzEsIDEyLCA0MiwgMjIxLCA3NiwgMTIsIDQyLCAyMzUsIDc3LCAxMDIsIDEyLCA0MiwgMjM1LCA3NywgMTA1LCAxMiwgCisgICAgNDIsIDIzNSwgNzcsIDE0NywgMTIsIDQyLCAyMDYsIDIsIDEyLCA0MiwgMjQ2LCAxMDMsIDEyLCA0MiwgMjAxLCA0OCwgMTAyLCAKKyAgICAxMiwgNDIsIDIwMSwgNDgsIDEwNSwgMTIsIDQyLCAyNDcsIDIyMCwgMjExLCAxOTAsIDEyLCA0MiwgMjA5LCAxNDYsIDIzMywgCisgICAgMTI0LCAxMiwgNDIsIDIzMywgMTI0LCAxMiwgNDIsIDI0NywgMjIwLCAyMDgsIDIyNywgMTIsIDQyLCAyNDcsIDIyMCwgMjEwLCAKKyAgICA1NCwgMTIsIDQyLCAyMzYsIDI1NSwgMTIsIDQyLCAyNDcsIDIyMCwgMjQ3LCAxMTgsIDEyLCA0MiwgMjA5LCAxNDYsIDIwMSwgCisgICAgMTA0LCAxMiwgNDIsIDIwMSwgMTA1LCAxMDIsIDEyLCA0MiwgMjAxLCAxMDUsIDEwNSwgMTIsIDQyLCAyNDYsIDE0MSwgMTIsIAorICAgIDQyLCAyNDcsIDIyMCwgMjM1LCAxMDgsIDEyLCA0MiwgMTY4LCAxMDIsIDEyLCA0MiwgMTY4LCAxMDUsIDEyLCA0MiwgMjQ3LCAKKyAgICAyMjAsIDIyNCwgODksIDEyLCA0MiwgMjQ3LCAyMjAsIDIzNiwgNDEsIDEyLCA0MiwgMjIxLCA2NywgMTAyLCAxMiwgNDIsIAorICAgIDIyMSwgNjcsIDEwNSwgMTIsIDQyLCAyMTMsIDIyMiwgMTIsIDQyLCAyNDgsIDEyNiwgMTIsIDQyLCAyNDcsIDIyMCwgMjA2LCAKKyAgICAyMzgsIDIyNSwgMzQsIDEyLCA0MiwgMjQ3LCAyMjAsIDIyNSwgMzUsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwMSwgMTYsIDEyLCAKKyAgICA0MiwgMjQ3LCAyMjAsIDIzNywgMTcsIDEyLCA0MiwgMjM5LCAxMSwgMTAyLCAxMiwgNDIsIDIzOSwgMTEsIDEwNSwgMTIsIAorICAgIDQyLCAyMzksIDExLCAxNDcsIDEyLCA0MiwgMjQ3LCAyMjAsIDIzOSwgMTAsIDEyLCA0MiwgMjM0LCAxMzYsIDEyLCA0MiwgCisgICAgMjQ3LCAyMjAsIDIzMywgMTIwLCAxMiwgNDIsIDI0OCwgMTEyLCAxMiwgNDIsIDIzNSwgMTY5LCAxMiwgNDIsIDI0NywgMjIwLCAKKyAgICAyMzcsIDcxLCAxMiwgNDIsIDI0NywgMjIwLCAyNDgsIDE2MiwgMTIsIDQyLCAyNDcsIDIyMCwgMjEyLCAyNywgMTIsIDQyLCAKKyAgICAyMDksIDE0NiwgMjAxLCAzOSwgMTIsIDQyLCAyMDksIDE0NiwgMjAwLCA0MywgMTIsIDQyLCAyNDcsIDIyMCwgMjM2LCAyMDIsIAorICAgIDEyLCA0MiwgMjI3LCAyNTAsIDIzOCwgNTUsIDEyLCA0MiwgMjQ3LCAyMjAsIDIzOCwgNTUsIDEyLCA0MiwgMjI3LCAyNTAsIAorICAgIDIwNSwgMTU5LCAxMiwgNDIsIDI0NywgMjIwLCAyMDUsIDE1OSwgMTIsIDQyLCAyMjcsIDI1MCwgMjM5LCAxNTgsIDEyLCA0MiwgCisgICAgMjQ3LCAyMjAsIDIzOSwgMTU4LCAxMiwgNDIsIDIwNCwgMTgyLCAxMiwgNDIsIDIyNywgMjUwLCAyMDQsIDE4MiwgMTIsIDQyLCAKKyAgICAyNDcsIDIyMCwgMjA0LCAxODIsIDc1LCA0MiwgMTAyLCA3NSwgNDIsIDIyNCwgMTc2LCA3NSwgNDIsIDI0MCwgMTgyLCA3NSwgCisgICAgNDIsIDIwOSwgNzUsIDc1LCA0MiwgMjExLCAxOTUsIDc1LCA0MiwgMTE3LCA3NSwgNDIsIDEwNSwgNzUsIDQyLCAyMjQsIAorICAgIDIwNSwgNzUsIDQyLCAyMjIsIDE4MCwgNzUsIDQyLCAyMjUsIDEzLCA3NSwgNDIsIDIzOCwgMTU0LCA3NSwgNDIsIDE5MiwgCisgICAgNzUsIDQyLCAxMjcsIDI0OCwgNzgsIDc1LCA0MiwgMjQzLCAxLCA3NSwgNDIsIDIzMiwgMjMxLCA3NSwgNDIsIDIwNywgMjIsIAorICAgIDc1LCA0MiwgMTc2LCAyNDgsIDc4LCA3NSwgNDIsIDIyNiwgOTUsIDc1LCA0MiwgMjE1LCA1MSwgNzUsIDQyLCAyMDAsIDIyOCwgCisgICAgNzUsIDQyLCAyMDgsIDIwNiwgNzUsIDQyLCA1MSwgMTc2LCAyNDgsIDc4LCA3NSwgNDIsIDIzNCwgNzAsIDIzOCwgMTc0LCAKKyAgICA3NSwgNDIsIDIwNiwgMTY2LCA3NSwgNDIsIDI0MCwgMjM2LCA3NSwgNDIsIDIxMSwgMjAwLCA3NSwgNDIsIDI0NiwgMTIwLCAKKyAgICA3NSwgNDIsIDIxNSwgMywgNzUsIDQyLCAyNTEsIDE5MiwgNzUsIDQyLCAyMjEsIDU4LCA3NSwgNDIsIDIzOCwgMTc0LCA3NSwgCisgICAgNDIsIDIzOSwgMTcsIDc1LCA0MiwgMjExLCAyMjMsIDc1LCA0MiwgMjM1LCAxMTYsIDc1LCA0MiwgMjM1LCAxMTcsIDIwOSwgCisgICAgNTUsIDc1LCA0MiwgMjM4LCA1NCwgNzUsIDQyLCAyNDgsIDE3NCwgNzUsIDQyLCAyMDAsIDI1MCwgNzUsIDQyLCAyNDYsIAorICAgIDIyNywgNzUsIDQyLCAyMTIsIDIzNywgNzUsIDQyLCAyMjgsIDExMywgNzUsIDQyLCAyMDksIDUzLCA3NSwgNDIsIDIyNSwgCisgICAgODUsIDc1LCA0MiwgMjQzLCAxMSwgNzUsIDQyLCAyMDgsIDE5NywgNzUsIDQyLCAyMjEsIDYzLCA3NSwgNDIsIDIxMywgMTUsIAorICAgIDc1LCA0MiwgMjAwLCAyMzUsIDc1LCA0MiwgMjE3LCA3MCwgNzUsIDQyLCAyMDQsIDE5MSwgNzUsIDQyLCAyMzksIDEzOSwgCisgICAgNzUsIDQyLCAyMDksIDI1MCwgMjA2LCA0NywgNzUsIDQyLCAyMzksIDE4MCwgMjQ2LCAxMjAsIDc1LCA0MiwgMTY4LCAyMDgsIAorICAgIDUzLCA3NSwgNDIsIDEyMCwgMjM0LCAxNzQsIDc1LCA0MiwgMjEwLCAwLCA3NSwgNDIsIDI0OCwgODUsIDc1LCA0MiwgMjA5LCAKKyAgICAzNywgNzUsIDQyLCAyNDgsIDQ4LCA3NSwgNDIsIDIwOCwgOTAsIDc1LCA0MiwgMjM0LCAxMjcsIDc1LCA0MiwgMjM0LCAyMTQsIAorICAgIDc1LCA0MiwgMjQwLCAxODUsIDc1LCA0MiwgMjM0LCAxOTksIDc1LCA0MiwgMjQ4LCA2NiwgNzUsIDQyLCAyMTMsIDIxMCwgCisgICAgNzUsIDQyLCAyMTEsIDIwOCwgNzUsIDQyLCAyNDEsIDEyLCA3NSwgNDIsIDI1MCwgMTEzLCA3NSwgNDIsIDIwOCwgMTkzLCAKKyAgICA3NSwgNDIsIDIxOCwgMjE0LCA3NSwgNDIsIDIwNywgMjI4LCA3NSwgNDIsIDIxMSwgMjM0LCA3NSwgNDIsIDIyMSwgODEsIAorICAgIDc1LCA0MiwgMjA1LCAxMDgsIDc1LCA0MiwgMjI1LCAxNjIsIDc1LCA0MiwgMjA4LCA3NiwgNzUsIDQyLCAyNDEsIDE3MywgCisgICAgNzUsIDQyLCAyMDEsIDYzLCA3NSwgNDIsIDI0MCwgMjEyLCAyMTgsIDIxNCwgNzUsIDQyLCAyNDYsIDY2LCA3NSwgNDIsIAorICAgIDIzNiwgMTc2LCA3NSwgNDIsIDI0NiwgMTMyLCA3NSwgNDIsIDIwOCwgOTUsIDc1LCA0MiwgMjAxLCA4MiwgNzUsIDQyLCAKKyAgICAyMzcsIDc3LCA3NSwgNDIsIDI0NiwgMTI4LCA3NSwgNDIsIDIzNywgMTU0LCA3NSwgNDIsIDUzLCAyMDAsIDE5NSwgNzUsIAorICAgIDQyLCAxNjcsIDIwNSwgMTA5LCAyMDUsIDM3LCA3NSwgNDIsIDIwOSwgNjcsIDc1LCA0MiwgMjM3LCAxNjYsIDc1LCA0MiwgCisgICAgMjQyLCAyNTUsIDc1LCA0MiwgMjQwLCAyMDAsIDc1LCA0MiwgMjE1LCAwLCA3NSwgNDIsIDIyNywgMjQzLCA3NSwgNDIsIAorICAgIDIyMiwgNDksIDc1LCA0MiwgMjA1LCAyMzksIDc1LCA0MiwgMjA3LCAxNzgsIDc1LCA0MiwgMjI0LCAxOTksIDc1LCA0MiwgCisgICAgMjAzLCAxOTUsIDc1LCA0MiwgMjM3LCAxMTAsIDc1LCA0MiwgMjQ4LCAxMTYsIDc2LCAyNDYsIDEwNCwgNzUsIDQyLCAyMDksIAorICAgIDE3OCwgNzUsIDQyLCAyMzksIDE4MCwgMjA2LCAxNTgsIDc1LCA0MiwgMjAxLCAzNCwgNzUsIDQyLCAyMDksIDgzLCA3NSwgCisgICAgNDIsIDI0MCwgMjU1LCA3NSwgNDIsIDIzOCwgMjIsIDc1LCA0MiwgMjA4LCAyMzAsIDc1LCA0MiwgNDgsIDc1LCA0MiwgMjA4LCAKKyAgICA3OCwgNzUsIDQyLCAyMDgsIDIxNCwgNzUsIDQyLCAyMDUsIDEzMSwgNzUsIDQyLCAyMzUsIDg2LCA3NSwgNDIsIDI0NywgCisgICAgMTA0LCA3NSwgNDIsIDIwOCwgMTEzLCA3NSwgNDIsIDI0OSwgOTAsIDc1LCA0MiwgMjEzLCA4MywgNzUsIDQyLCAyMDksIAorICAgIDE1MywgNzUsIDQyLCAyMjcsIDIzNSwgNzUsIDQyLCAyMjAsIDEzLCA3NSwgNDIsIDIxMCwgNTksIDc1LCA0MiwgMjM3LCAKKyAgICAxNDIsIDc1LCA0MiwgMjE3LCA5MiwgNzUsIDQyLCAyNTEsIDc5LCA3NSwgNDIsIDIxNSwgMTIwLCA3NSwgNDIsIDIzOSwgMjEsIAorICAgIDc1LCA0MiwgMjQ4LCA0MywgNzUsIDQyLCAyMjIsIDcxLCA3NSwgNDIsIDIyMSwgMTU4LCA3NSwgNDIsIDIxMCwgMTc0LCA3NSwgCisgICAgNDIsIDI1MCwgMjA2LCA3NSwgNDIsIDIyMSwgNzYsIDc1LCA0MiwgMjA1LCAxNjMsIDc1LCA0MiwgMjE3LCA0MSwgNzUsIDQyLCAKKyAgICAyNDgsIDEyMCwgNzUsIDQyLCAyMDgsIDc0LCA3NSwgNDIsIDI0NiwgNzgsIDc1LCA0MiwgMjM1LCA3NiwgNzUsIDQyLCAyMDYsIAorICAgIDIsIDc1LCA0MiwgMjI4LCA3NiwgNzUsIDQyLCAyNDgsIDEzMiwgNzUsIDQyLCAyMDEsIDEwNSwgMjM4LCAxNzQsIDc1LCA0MiwgCisgICAgMjQ2LCAxMDMsIDc1LCA0MiwgMjAxLCA0NywgNzUsIDQyLCAyMTEsIDE5MCwgNzUsIDQyLCAyMzMsIDEyNCwgNzUsIDQyLCAKKyAgICAyMDgsIDIyNywgNzUsIDQyLCAyMDMsIDgzLCA3NSwgNDIsIDI0OSwgMywgNzUsIDQyLCAyMTUsIDE2OCwgNzUsIDQyLCAyNDksIAorICAgIDExNiwgNzUsIDQyLCAyMTAsIDU0LCA3NSwgNDIsIDIxMywgMTY5LCA3NSwgNDIsIDIxMiwgMTU4LCA3NSwgNDIsIDIzNiwgCisgICAgMjU1LCA3NSwgNDIsIDI0OCwgMTE4LCA3NSwgNDIsIDI0NywgMTE4LCA3NSwgNDIsIDI0OCwgMTQ5LCA3NSwgNDIsIDIyMSwgCisgICAgNzgsIDc1LCA0MiwgMjAxLCAxMDQsIDc1LCA0MiwgMjQ2LCAxNDEsIDc1LCA0MiwgMjAxLCAxMiwgNzUsIDQyLCAyNDAsIAorICAgIDI0NywgNzUsIDQyLCAyMDIsIDIxOCwgNzUsIDQyLCAyMzUsIDEwOCwgNzUsIDQyLCAyMjQsIDg5LCA3NSwgNDIsIDIzNiwgCisgICAgNDEsIDc1LCA0MiwgMjIxLCA2NiwgNzUsIDQyLCAyMDksIDc0LCA3NSwgNDIsIDIwOSwgMjUwLCAyMDcsIDUsIDI0OCwgMTYyLCAKKyAgICA3NSwgNDIsIDIxMywgMjIyLCA3NSwgNDIsIDI0OCwgMTI2LCA3NSwgNDIsIDIwMCwgMjE4LCA3NSwgNDIsIDIzNywgMTg5LCAKKyAgICA3NSwgNDIsIDIyNSwgMzQsIDc1LCA0MiwgMjA2LCAyMzgsIDIyNSwgMzQsIDc1LCA0MiwgMjI1LCAzMCwgNzUsIDQyLCAyMDksIAorICAgIDAsIDc1LCA0MiwgMjI1LCAzNSwgNzUsIDQyLCAyMDEsIDE2LCA3NSwgNDIsIDIzNywgMTcsIDc1LCA0MiwgMjM5LCAxMCwgCisgICAgNzUsIDQyLCAyMzQsIDEzNiwgNzUsIDQyLCAyMzYsIDIxNywgNzUsIDQyLCAyMzMsIDEyMCwgNzUsIDQyLCAyNDgsIDExMiwgCisgICAgNzUsIDQyLCAyMDYsIDI0NywgNzUsIDQyLCAyMzQsIDIyMSwgNzUsIDQyLCAyMzcsIDEwMywgNzUsIDQyLCAyMTIsIDU4LCAKKyAgICAyMDEsIDEyLCA3NSwgNDIsIDI0NywgMTA2LCA3NSwgNDIsIDIzNSwgMTY5LCA3NSwgNDIsIDIzNywgNzEsIDc1LCA0MiwgCisgICAgMjQ4LCAxNjIsIDc1LCA0MiwgMjEyLCAyNywgNzUsIDQyLCAyNDEsIDE1OCwgNzUsIDQyLCAyMDEsIDM5LCA3NSwgNDIsIAorICAgIDIzNCwgMTA2LCA3NSwgNDIsIDIwMCwgNDMsIDc1LCA0MiwgMjIxLCAxNjksIDc1LCA0MiwgMjQ4LCAxNDQsIDc1LCA0MiwgCisgICAgMjM4LCAxODYsIDc1LCA0MiwgMjM2LCAyMDIsIDc1LCA0MiwgMjA1LCA4MCwgNzUsIDQyLCAyMzksIDE0MiwgNzUsIDQyLCAKKyAgICAyMTMsIDIwNCwgNzUsIDQyLCAyMTgsIDIxNiwgNzUsIDQyLCAyMzgsIDU1LCA3NSwgNDIsIDIwNSwgMTU5LCA3NSwgNDIsIAorICAgIDIzOSwgMTU4LCA3NSwgNDIsIDIwNCwgMTgyLCA3NSwgNDIsIDIzNywgMjAsIDE0MSwgMjQxLCAxMTcsIDE3MSwgNDksIDIwNSwgCisgICAgMTg2LCAyMTMsIDQ2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDg4LCAyMDUsIDE4NiwgNTcsIDE0MSwgMjQxLCAxMTcsIDE3MSwgCisgICAgNDksIDIwNSwgMTg2LCAxMDEsIDI2LCAyMTMsIDQ2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDg4LCAyMDUsIDE4NiwgMTAxLCAKKyAgICAyNiwgNTcsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjM2LCAxODMsIDIwNywgMjAwLCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgCisgICAgMjAxLCAyMzYsIDIwMSwgNTYsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCA1NywgMTQxLCAyNDEsIAorICAgIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDIyNSwgMjgsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgCisgICAgMjAxLCAyMDMsIDIyNSwgMjI1LCAyOCwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDIwMywgMjI1LCAKKyAgICAyMTMsIDQ2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgMjI0LCA1NCwgMjI1LCAyOCwgMTQxLCAKKyAgICAyNDEsIDExNywgMTcxLCAyMTYsIDI0NSwgMTQxLCAyMDgsIDI0NCwgMTQxLCAyNDYsIDcwLCAxNDEsIDIzNiwgMTgzLCAyMDgsIAorICAgIDc2LCAyNDAsIDI0NCwgODEsIDIyNywgMjM2LCAyMjgsIDk2LCAyMDgsIDExMiwgOTksIDE0MSwgMjI4LCAxMCwgODEsIDE0MSwgCisgICAgMjQ2LCAxMDYsIDgxLCAxNDEsIDQxLCAxOTksIDgxLCA0OSwgMjUxLCA3MSwgMTU5LCA1MSwgMjUxLCA3MSwgMTU5LCA0OSwgCisgICAgNTMsIDI1MSwgNzEsIDE1OSwgNTEsIDUzLCAyNTEsIDcxLCAxNTksIDQ5LCAyNDMsIDE2LCAxNTksIDUxLCAyNDMsIDE2LCAKKyAgICAxNTksIDQ5LCA2NCwgMjQzLCAxNiwgMTU5LCA1MSwgNjQsIDI0MywgMTYsIDE1OSwgNDksIDYzLCAyMjQsIDI0NywgMTU5LCAKKyAgICA1MSwgNjMsIDIyNCwgMjQ3LCAxNTksIDIxNSwgNjUsIDgxLCAyMzUsIDIzOCwgODEsIDQ5LCAyMDUsIDE0NiwgMjEwLCA1NSwgCisgICAgMTU5LCA1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNDksIDY0LCAyMjQsIDI0NywgMTU5LCA1MSwgNjQsIDIyNCwgMjQ3LCAKKyAgICAxNTksIDQ5LCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNTEsIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA0OSwgCisgICAgNjQsIDUyLCAxNTksIDUxLCA2NCwgNTIsIDE1OSwgMjAxLCA3OCwgMjQxLCAyNDQsIDIxMywgMTA1LCA1MywgMjE1LCAxNSwgCisgICAgMjE0LCA2MywgODEsIDUzLCAyMTUsIDE1LCAyMTQsIDYzLCA4MSwgMTI4LCA1MywgMjE1LCAxNSwgMjE0LCA2MywgODEsIAorICAgIDIxNSwgNjUsIDEzNCwgMjM3LCAxODksIDIzNCwgMTcxLCAyMTgsIDkzLCAxMDIsIDIzNCwgMTcxLCAyMTgsIDkzLCAxMDUsIAorICAgIDIzNCwgMTcxLCAyMTgsIDkzLCAxNDcsIDIzNCwgMTcxLCAyMTgsIDkzLCAxNDksIDIzNCwgMTcxLCAyMTgsIDkzLCAxNjQsIAorICAgIDIzNCwgMTcxLCAyMTgsIDkzLCAxODcsIDIzNCwgMTcxLCAyMTgsIDkzLCAyMTAsIDEzNSwgMjM0LCAxNzEsIDIxOCwgOTMsIAorICAgIDE5MiwgMjM0LCAxNzEsIDIxOCwgOTMsIDIxOSwgMTEzLCAxNDEsIDIyNCwgMjI5LCAxNTAsIDgxLCAxNDEsIDIxMywgMTksIAorICAgIDE1MCwgODEsIDE0MSwgMjQxLCAxMjYsIDE1MCwgODEsIDE0MSwgMjM4LCAxNTMsIDE1MCwgODEsIDI5LCAyMDksIDEzOSwgCisgICAgNzMsIDE1MCwgODEsIDI5LCA1MywgNzMsIDE1MCwgODEsIDIwMSwgNzQsIDI0MSwgMjQ0LCA4MywgMjI3LCA2NywgMjEzLCAKKyAgICAxMzMsIDgxLCA4MywgMjI3LCA2NywgMjEzLCAxMzMsIDMsIDIwMiwgMTg5LCAyMDksIDEsIDgxLCA4MywgMjI3LCA2NywgCisgICAgMjEzLCAxMzMsIDEzNCwgMjAzLCAyMjUsIDIzNCwgMjEzLCA4MywgMjI3LCA2NywgMjEzLCAxMzMsIDMsIDIwMiwgMTg5LCAKKyAgICAyMDksIDEsIDEzNCwgMjAzLCAyMjUsIDIzNCwgMjEzLCA4MywgMjI3LCA2NywgMjEzLCAxMzMsIDEzNCwgMjI0LCA1NCwgCisgICAgMjM0LCAyMTMsIDQ0LCAyMTUsIDY1LCA4MSwgMTQxLCAyMDYsIDE3OCwgMjI0LCAxNzcsIDIzNywgMTM5LCAyMTAsIDE1NSwgCisgICAgOTksIDIzNCwgMTcxLCAyMTgsIDkzLCAyMDYsIDE2NiwgMjM0LCAxNzEsIDIxOCwgOTMsIDIwNCwgMTU5LCAyMzQsIDE3MSwgCisgICAgMjE4LCA5MywgMjA2LCA2NywgODMsIDE0MSwgMjI4LCAxMCwgODEsIDIyMiwgMTI4LCA4MSwgMjE2LCAxMTAsIDI1MSwgMTA1LCAKKyAgICA4MSwgMTQxLCA1OCwgMjI4LCA5OSwgMTQxLCAxNjcsIDIzNywgOTYsIDIwOCwgMjQ0LCAxNzcsIDEsIDQsIDYyLCAxNzcsIDEsIAorICAgIDYyLCAxNzcsIDEsIDQsIDcwLCAxNzcsIDEsIDcwLCAxNzcsIDEsIDQsIDY2LCAxNzcsIDEsIDY2LCAxNzcsIDEsIDQsIDcyLCAKKyAgICAxNzcsIDEsIDcyLCAxNzcsIDEsIDQsIDc0LCAxNzcsIDEsIDc0LCAxNzcsIDEsIDE2MSwgMTc3LCAxLCAyMzYsIDg5LCAxNzcsIAorICAgIDEsIDIyNiwgMTYzLCAxNzcsIDEsIDIzNSwgMTYxLCAxNzcsIDEsIDIyNiwgMTUsIDE3NywgMSwgMjM1LCA1MCwgMTc3LCAxLCAKKyAgICAyMjcsIDgsIDE3NywgMSwgMjM2LCAxNSwgMTc3LCAxLCAyMjYsIDg4LCAxNzcsIDEsIDIzNSwgMTE2LCAxNzcsIDEsIDIxMiwgCisgICAgNjQsIDE3NywgMSwgMTk5LCAxMTQsIDE3NywgMSwgMjA5LCAxODIsIDE3NywgMSwgMTk5LCAzNiwgMTc3LCAxLCAyMDgsIDI0LCAKKyAgICAxNzcsIDEsIDE5OSwgMywgMTc3LCAxLCAyMTEsIDIwMiwgMTc3LCAxLCAxOTksIDg5LCAxNzcsIDEsIDIwOSwgMjksIDE3NywgCisgICAgMSwgMTk5LCAxNCwgMTc3LCAxLCAyMDcsIDM2LCAxNzcsIDEsIDI0MiwgNTgsIDE3NywgMSwgMjA2LCAxNSwgMTc3LCAxLCAKKyAgICAyNDEsIDc2LCAxNzcsIDEsIDQsIDIwNCwgMjE1LCAxNzcsIDEsIDIwNCwgMjE1LCAxNzcsIDEsIDIzOSwgMTM3LCAxNzcsIDEsIAorICAgIDIwNiwgMjAxLCAxNzcsIDEsIDI0MSwgMTc1LCAxNzcsIDEsIDEzOCwgMTc3LCAxLCAyNDAsIDIxMSwgMTc3LCAxLCAxODgsIAorICAgIDE3NywgMSwgMjE5LCAxNTAsIDE3NywgMSwgMjE4LCAxMzMsIDE3NywgMSwgMjIwLCAzNCwgMTc3LCAxLCAyMTgsIDI0MSwgCisgICAgMTc3LCAxLCAxNDQsIDE3NywgMSwgMjQ5LCAxMzYsIDE3NywgMSwgMTcyLCAxNzcsIDEsIDIzNCwgNzUsIDE3NywgMSwgMjQ4LCAKKyAgICAxODgsIDE3NywgMSwgMjE1LCAyMDQsIDE3NywgMSwgMjMzLCA5NywgMTc3LCAxLCAyNDgsIDM2LCAxNzcsIDEsIDIxNCwgCisgICAgMjI0LCAxNzcsIDEsIDIzNCwgMTM5LCAxNzcsIDEsIDI0OSwgOCwgMTc3LCAxLCAyMTYsIDczLCAxNzcsIDEsIDIzMywgMjA3LCAKKyAgICAxNzcsIDEsIDI0OCwgMTI0LCAxNzcsIDEsIDIxNSwgMTA2LCAxNzcsIDEsIDE3OCwgMTc3LCAxLCAyMjEsIDIxMSwgMTc3LCAKKyAgICAxLCAyMjEsIDQxLCAxNzcsIDEsIDIyMiwgNzYsIDE3NywgMSwgMjIxLCAxMzYsIDE3NywgMSwgNCwgMTgzLCAxNzcsIDEsIAorICAgIDE4MywgMTc3LCAxLCA0LCAxOTksIDIxMSwgMTc3LCAxLCAxOTksIDIxMSwgMTc3LCAxLCA0LCAxOTksIDI0NSwgMTc3LCAxLCAKKyAgICAxOTksIDI0NSwgMTc3LCAxLCAyMTMsIDI1MiwgMTc3LCAxLCAyMTMsIDg4LCAxNzcsIDEsIDIxMiwgMTc1LCAxNzcsIDEsIAorICAgIDIxMywgMTkwLCAxNzcsIDEsIDIxMywgMSwgMTc3LCAxLCA0LCAyMDEsIDExNCwgMTc3LCAxLCAyMDEsIDExNCwgMTc3LCAxLCAKKyAgICAyMDEsIDMxLCAxNzcsIDEsIDIwMSwgNjQsIDE3NywgMSwgMjAxLCAwLCAxNzcsIDEsIDIyMCwgMjE0LCAxNzcsIDEsIDIwMSwgCisgICAgMTY2LCAxNzcsIDEsIDQsIDE2MSwgMTc3LCAxLCA0LCAyMjcsIDgsIDM4LCAyMjcsIDMyLCAyMDIsIDE4OSwgMjA5LCAxLCAKKyAgICA4MSwgMzgsIDIyNywgMzIsIDIxMCwgMTcyLCAyMDksIDEsIDgxLCAyMjcsIDMyLCAyMDIsIDE4OSwgMjA5LCAxLCA4MSwgCisgICAgMjI3LCAzMiwgMjEwLCAxNzIsIDIwOSwgMSwgODEsIDE3NywgMjI4LCAxMCwgODEsIDE3NywgMjAyLCAxODksIDIyOCwgMTAsIAorICAgIDgxLCAxNzcsIDI0MSwgMzUsIDE5OSwgMjI2LCAyMjcsIDMyLCA1MywgMjMzLCAzMywgNjksIDEsIDQsIDYyLCA2OSwgMSwgCisgICAgNjIsIDY5LCAxLCA0LCA3MCwgNjksIDEsIDcwLCA2OSwgMSwgNCwgNjYsIDY5LCAxLCA2NiwgNjksIDEsIDQsIDcyLCA2OSwgCisgICAgMSwgNzIsIDY5LCAxLCA0LCA3NCwgNjksIDEsIDc0LCA2OSwgMSwgMTYxLCA2OSwgMSwgMjM2LCA4OSwgNjksIDEsIDIyNiwgCisgICAgMTYzLCA2OSwgMSwgMjM1LCAxNjEsIDY5LCAxLCAyMjYsIDE1LCA2OSwgMSwgMjM1LCA1MCwgNjksIDEsIDIyNywgOCwgNjksIAorICAgIDEsIDIzNiwgMTUsIDY5LCAxLCAyMjYsIDg4LCA2OSwgMSwgMjM1LCAxMTYsIDY5LCAxLCAyMTIsIDY0LCA2OSwgMSwgMTk5LCAKKyAgICAxMTQsIDY5LCAxLCAyMDksIDE4MiwgNjksIDEsIDE5OSwgMzYsIDY5LCAxLCAyMDgsIDI0LCA2OSwgMSwgMTk5LCAzLCA2OSwgCisgICAgMSwgMjExLCAyMDIsIDY5LCAxLCAxOTksIDg5LCA2OSwgMSwgMjA5LCAyOSwgNjksIDEsIDE5OSwgMTQsIDY5LCAxLCAyMDcsIAorICAgIDM2LCA2OSwgMSwgMjQyLCA1OCwgNjksIDEsIDIwNiwgMTUsIDY5LCAxLCAyNDEsIDc2LCA2OSwgMSwgNCwgMjA0LCAyMTUsIAorICAgIDY5LCAxLCAyMDQsIDIxNSwgNjksIDEsIDIzOSwgMTM3LCA2OSwgMSwgMjA2LCAyMDEsIDY5LCAxLCAyNDEsIDE3NSwgNjksIAorICAgIDEsIDEzOCwgNjksIDEsIDI0MCwgMjExLCA2OSwgMSwgMTg4LCA2OSwgMSwgMjE5LCAxNTAsIDY5LCAxLCAyMTgsIDEzMywgCisgICAgNjksIDEsIDIyMCwgMzQsIDY5LCAxLCAyMTgsIDI0MSwgNjksIDEsIDE0NCwgNjksIDEsIDI0OSwgMTM2LCA2OSwgMSwgMTcyLCAKKyAgICA2OSwgMSwgMjM0LCA3NSwgNjksIDEsIDI0OCwgMTg4LCA2OSwgMSwgMjE1LCAyMDQsIDY5LCAxLCAyMzMsIDk3LCA2OSwgMSwgCisgICAgMjQ4LCAzNiwgNjksIDEsIDIxNCwgMjI0LCA2OSwgMSwgMjM0LCAxMzksIDY5LCAxLCAyNDksIDgsIDY5LCAxLCAyMTYsIDczLCAKKyAgICA2OSwgMSwgMjMzLCAyMDcsIDY5LCAxLCAyNDgsIDEyNCwgNjksIDEsIDIxNSwgMTA2LCA2OSwgMSwgMTc4LCA2OSwgMSwgCisgICAgMjIxLCAyMTEsIDY5LCAxLCAyMjEsIDQxLCA2OSwgMSwgMjIyLCA3NiwgNjksIDEsIDIyMSwgMTM2LCA2OSwgMSwgNCwgMTgzLCAKKyAgICA2OSwgMSwgMTgzLCA2OSwgMSwgNCwgMTk5LCAyMTEsIDY5LCAxLCAxOTksIDIxMSwgNjksIDEsIDQsIDE5OSwgMjQ1LCA2OSwgCisgICAgMSwgMTk5LCAyNDUsIDY5LCAxLCAyMTMsIDI1MiwgNjksIDEsIDIxMywgODgsIDY5LCAxLCAyMTIsIDE3NSwgNjksIDEsIAorICAgIDIxMywgMTkwLCA2OSwgMSwgMjEzLCAxLCA2OSwgMSwgNCwgMjAxLCAxMTQsIDY5LCAxLCAyMDEsIDExNCwgNjksIDEsIDIwMSwgCisgICAgMzEsIDY5LCAxLCAyMDEsIDY0LCA2OSwgMSwgMjAxLCAwLCA2OSwgMSwgMjIwLCAyMTQsIDY5LCAxLCAyMDEsIDE2NiwgNjksIAorICAgIDEsIDQsIDE2MSwgNjksIDEsIDQsIDIyNywgOCwgNjksIDEsIDIwMywgOTAsIDY5LCAxLCAyMDIsIDIzNCwgNjksIDEsIDIwMywgCisgICAgNTksIDY5LCAxLCAyMDIsIDE5MywgNjksIDEwMSwgMjQwLCAxODIsIDIyNywgMzIsIDIxNCwgMjQ4LCAyMDksIDEsIDgxLCAKKyAgICA2OSwgMjI4LCAxMCwgODEsIDY5LCAyMDIsIDE4OSwgMjI4LCAxMCwgODEsIDY5LCAyNDEsIDM1LCAyMjYsIDU1LCAyNDgsIAorICAgIDEwMiwgMSwgMjUwLCAxMDMsIDI0OCwgMTAyLCAxLCAyMTYsIDIyNiwgMjQ4LCAxMDIsIDEsIDIyMywgMjQzLCAyNDgsIDEwMiwgCisgICAgMSwgMjM4LCA1LCAyNDgsIDEwMiwgMSwgMjQyLCAxNTMsIDI0OCwgMTAyLCAxLCAyMDcsIDgzLCAyNDgsIDEwMiwgMSwgMjIwLCAKKyAgICAyMTQsIDI0OCwgMTAyLCAxLCAxNTYsIDI0OCwgMTAyLCAxLCAyMzYsIDE1NiwgMjQ4LCAxMDIsIDEsIDIyNywgMTE4LCAyNDgsIAorICAgIDEwMiwgMSwgMjM0LCAyNDcsIDI0OCwgMTAyLCAxLCAyMjcsIDI1MSwgMjQ4LCAxMDIsIDEsIDIxNCwgMTY3LCAyNDgsIDEwMiwgCisgICAgMSwgMjAwLCAxOTUsIDI0OCwgMTAyLCAxLCAxOTksIDc4LCAyNDgsIDEwMiwgMSwgMjQ3LCAzOCwgMjQ4LCAxMDIsIDEsIAorICAgIDIxMCwgMTE2LCAyNDgsIDEwMiwgMSwgMTQ2LCAyNDgsIDEwMiwgMSwgMTk5LCAxNTcsIDI0OCwgMTAyLCAxLCAyNDcsIDIyMywgCisgICAgMjQ4LCAxMDIsIDEsIDIxMiwgMTIyLCAyNDgsIDEwMiwgMSwgNjIsIDI0OCwgMTAyLCAxLCA3NCwgMjQ4LCAxMDIsIDEsIDcyLCAKKyAgICAyNDgsIDEwMiwgMSwgMjM4LCAyNDEsIDI0OCwgMTAyLCAxLCAyNTEsIDE3NiwgMjQ4LCAxMDIsIDEsIDIzOCwgMjM0LCAyNDgsIAorICAgIDEwMiwgMSwgMjUwLCAxMzksIDI0OCwgMTAyLCAxLCAyMTcsIDMsIDI0OCwgMTAyLCAxLCAyNTEsIDg1LCAyNDgsIDEwMiwgMSwgCisgICAgMjM4LCAxNzksIDI0OCwgMTAyLCAxLCAyNTEsIDc2LCAyNDgsIDEwMiwgMSwgMjM4LCAxNjUsIDI0OCwgMTAyLCAxLCAyMzgsIAorICAgIDExNSwgMjQ4LCAxMDIsIDEsIDcwLCAyNDgsIDEwMiwgMSwgNjYsIDI0OCwgMTAyLCAxLCAyMjgsIDgsIDI0OCwgMTAyLCAxLCAKKyAgICAyMDMsIDE2OCwgMjQ4LCAxMDIsIDEsIDIxOSwgMjU1LCAyNDgsIDEwMiwgMSwgMjM1LCAxMjAsIDI0OCwgMTAyLCAxLCAyMjgsIAorICAgIDE1MiwgMjksIDEsIDIyNiwgMTIxLCAyOSwgMSwgMjA4LCAxNzEsIDI5LCAxLCAyMjYsIDExNCwgMjksIDEsIDIxOSwgMTQzLCAKKyAgICAyOSwgMSwgMjE5LCAxNDEsIDI5LCAxLCAyMTksIDE0MCwgMjksIDEsIDIwNSwgMjUzLCAyOSwgMSwgMjA4LCAxNjAsIDI5LCAKKyAgICAxLCAyMTMsIDc4LCAyOSwgMSwgMjEzLCA3MywgMjksIDEsIDIxMywgNzAsIDI5LCAxLCAyMTMsIDYzLCAyOSwgMSwgMjEzLCAKKyAgICA1OCwgMjksIDEsIDIxMywgNTMsIDI5LCAxLCAyMTMsIDY0LCAyOSwgMSwgMjEzLCA3NiwgMjksIDEsIDIyMSwgMTk3LCAyOSwgCisgICAgMSwgMjE1LCAxOTAsIDI5LCAxLCAyMDgsIDE2OCwgMjksIDEsIDIxNSwgMTc5LCAyOSwgMSwgMjA5LCAxMjksIDI5LCAxLCAKKyAgICAyMDgsIDE2NSwgMjksIDEsIDIyOCwgMTc0LCAyOSwgMSwgMjQ2LCAxNjgsIDI5LCAxLCAyMDgsIDE3NSwgMjksIDEsIDI0NiwgCisgICAgMjMyLCAyOSwgMSwgMjI2LCAxODMsIDI5LCAxLCAyMDYsIDgwLCAyOSwgMSwgMjE1LCAyMjcsIDI5LCAxLCAyMzQsIDY2LCAKKyAgICAyOSwgMSwgNjIsIDI5LCAxLCAyNTEsIDIyMSwgMjksIDEsIDE4MywgMjksIDEsIDIwMCwgOTgsIDI5LCAxLCAyMzgsIDE0MiwgCisgICAgMjksIDEsIDcyLCAyOSwgMSwgMjAwLCAzOCwgMjksIDEsIDIwMCwgNTEsIDI5LCAxLCA3NCwgMjksIDEsIDIwMSwgMTE0LCAKKyAgICAyOSwgMSwgMjAxLCAxMTAsIDI5LCAxLCAyMTcsIDEyMSwgMjksIDEsIDE5OSwgMjQ1LCAyOSwgMSwgNjYsIDI5LCAxLCAyMDEsIAorICAgIDUwLCAyOSwgMSwgMjAxLCA2NCwgMjksIDEsIDIwMSwgMzEsIDI5LCAxLCAxOTksIDIxMSwgMjksIDEsIDIzOCwgNjksIDI5LCAKKyAgICAxLCAyMDAsIDksIDI5LCAxLCA3MCwgMjksIDIzNywgOTMsIDI5LCAxLCAyMDgsIDE2OSwgMjksIDEsIDIxOSwgMTMzLCAyOSwgCisgICAgMSwgMjE5LCAxMzUsIDI5LCAxLCAyMTksIDEzOCwgMjksIDEsIDIxMywgNzEsIDI5LCAxLCAyMTMsIDUyLCAyOSwgMSwgMjEzLCAKKyAgICA2MCwgMjksIDEsIDIxMywgNjUsIDI5LCAxLCAyMTMsIDUwLCAyOSwgMSwgMjIxLCAxOTAsIDI5LCAxLCAyMjEsIDE4NywgMjksIAorICAgIDEsIDIyMSwgMTkxLCAyOSwgMSwgMjI3LCA1MywgMjksIDEsIDIxNSwgMTg1LCAyOSwgMSwgMjE1LCAxNzEsIDI5LCAxLCAKKyAgICAyMTUsIDE3NywgMjksIDEsIDIxNSwgMTc0LCAyOSwgMSwgMjE1LCAxODgsIDI5LCAxLCAyMTUsIDE3MiwgMjksIDEsIDIyNywgCisgICAgNTEsIDI5LCAxLCAyMjcsIDQ5LCAyOSwgMSwgMjA5LCAxMjIsIDI5LCAxLCAyMDksIDEyMCwgMjksIDEsIDIwOSwgMTEyLCAKKyAgICAyOSwgMSwgMjA5LCAxMTcsIDI5LCAxLCAyMDksIDEyNywgMjksIDEsIDIxNiwgMTQ2LCAyOSwgMSwgMjA4LCAxNzIsIDI5LCAKKyAgICAxLCAyMDAsIDI4LCAyOSwgMSwgMjAwLCAyNCwgMjksIDEsIDIwMCwgMjUsIDI5LCAxLCAyMjcsIDUyLCAyOSwgMSwgMjA4LCAKKyAgICAxNzMsIDI5LCAxLCAyMDAsIDM0LCAyOSwgMSwgMTk5LCAyMzksIDI5LCAxLCAxOTksIDIzOCwgMjksIDEsIDE5OSwgMjQxLCAKKyAgICAyOSwgMSwgMTk5LCAyMDIsIDI5LCAxLCAxOTksIDIwMywgMjksIDEsIDE5OSwgMjA2LCAyOSwgMSwgMjUwLCAyNDUsIDI5LCAKKyAgICAxLCAyNTAsIDIzOSwgMTQxLCAyNTEsIDU4LCAyMjQsIDE2NSwgODEsIDE0MSwgMjUxLCA1OCwgMjEzLCAxMDYsIDgxLCAxNDEsIAorICAgIDI1MSwgNTgsIDExMiwgODEsIDE0MSwgMjUxLCA1OCwgMTIwLCA4MSwgMTQxLCAyNTEsIDU4LCAxMjYsIDgxLCAxNDEsIDI1MSwgCisgICAgNTgsIDIzNiwgMjI5LCA4MSwgMTQxLCAyNTEsIDU4LCAyMDUsIDE1OCwgODEsIDE0MSwgMjUxLCA1OCwgMTAxLCA4MSwgMTQxLCAKKyAgICAyNTEsIDU4LCAyNDgsIDkzLCA4MSwgMTQxLCAyNTEsIDU4LCAyMzcsIDczLCA4MSwgMTQxLCAyNTEsIDU4LCAyMTEsIDE5NiwgCisgICAgODEsIDE0MSwgMjUxLCA1OCwgMjA2LCA3NSwgODEsIDE0MSwgMjUxLCA1OCwgMjM2LCAyMjIsIDgxLCAxNDEsIDI1MSwgNTgsIAorICAgIDIzNCwgMTI0LCA4MSwgMTQxLCAyNTEsIDU4LCAyMzksIDE4LCA4MSwgMTQxLCAyNTEsIDU4LCAyMjIsIDE4MSwgODEsIDI0OCwgCisgICAgMTAyLCAxLCAyNDgsIDM2LCAyNDgsIDEwMiwgMSwgMTk5LCAzNiwgMjQ4LCAxMDIsIDEsIDIyNywgMjA3LCAyNDgsIDEwMiwgCisgICAgMSwgMjM1LCA1MCwgMjQ4LCAxMDIsIDEsIDIzOCwgMjU1LCAyNDgsIDEwMiwgMSwgMjM4LCAxNjIsIDI0OCwgMTAyLCAxLCAKKyAgICAyMTcsIDYzLCAyNDgsIDEwMiwgMSwgMjE3LCA2NywgMjQ4LCAxMDIsIDEsIDIyOCwgMzUsIDI0OCwgMTAyLCAxLCAyNTEsIAorICAgIDYwLCAyNDgsIDEwMiwgMSwgMjI4LCA4MywgMjQ4LCAxMDIsIDEsIDIwMywgMjMzLCAyNDgsIDEwMiwgMSwgMjI4LCAxMzQsIAorICAgIDI0OCwgMTAyLCAxLCAyMTksIDIzMywgMjQ4LCAxMDIsIDEsIDI1MSwgMTcwLCAyNDgsIDEwMiwgMSwgMjUwLCAxMzQsIDI0OCwgCisgICAgMTAyLCAxLCAyNTEsIDEwMSwgMjQ4LCAxMDIsIDEsIDIxNywgODYsIDI0OCwgMTAyLCAxLCAyMTcsIDY5LCAyNDgsIDEwMiwgCisgICAgMSwgMjI4LCA4MCwgMjQ4LCAxMDIsIDQ3LCAxLCAyMTYsIDIyNiwgMjQ4LCAxMDIsIDQ3LCAxLCAyMDcsIDgzLCAyNDgsIAorICAgIDEwMiwgNDcsIDEsIDIyNywgMTE4LCAyNDgsIDEwMiwgNDcsIDEsIDIzNCwgMjQ3LCAyNDgsIDEwMiwgMSwgMjM1LCAyMDAsIAorICAgIDI0OCwgMTAyLCAxLCAyMjQsIDIyNCwgMjQ4LCAxMDIsIDEsIDE5OCwgMjM5LCAxMiwgMjA4LCA0NywgMjA3LCA4MywgMTIsIAorICAgIDIwOCwgNDcsIDIwMSwgNDIsIDEyLCAyMDgsIDQ3LCAyMDAsIDE3MCwgMTIsIDIwOCwgNDcsIDI0NywgMjM2LCAxMiwgMjA4LCAKKyAgICA0NywgMjA3LCAxODcsIDEyLCAyMDgsIDQ3LCAyMzMsIDIzLCAxMiwgMjA4LCA0NywgMjMzLCAyNywgMTIsIDIwOCwgNDcsIAorICAgIDIzMywgMTA2LCAxMiwgMjA4LCA0NywgMjMzLCAyNCwgMTIsIDIwOCwgNDcsIDIwNywgODYsIDEyLCAyMDgsIDQ3LCAyMzMsIAorICAgIDI2LCAxMiwgMjA4LCA0NywgMjMzLCAyMiwgMTIsIDIwOCwgNDcsIDIzMywgMTA0LCAxMiwgMjA4LCA0NywgMjMzLCAyNSwgCisgICAgMTIsIDIwOCwgNDcsIDIzMywgMjEsIDEyLCAyMDgsIDQ3LCAyMjAsIDIxNCwgMTIsIDIwOCwgNDcsIDIzNCwgMjQ3LCAxMiwgCisgICAgMjA4LCA0NywgMjEyLCAxMjIsIDEyLCAyMDgsIDQ3LCAyMTYsIDIyNiwgMTIsIDIwOCwgNDcsIDIwOCwgMjQ3LCAxMiwgMjA4LCAKKyAgICA0NywgMjQyLCAxNTMsIDEyLCAyMDgsIDQ3LCAyMzMsIDI4LCAxMiwgMjA4LCA0NywgMjM0LCA4NSwgMTIsIDIwOCwgNDcsIAorICAgIDIwNywgOTUsIDEyLCAyMDgsIDQ3LCAyMDcsIDE2NiwgMTIsIDIwOCwgNDcsIDIwOCwgMTIzLCAxMiwgMjA4LCA0NywgMjEwLCAKKyAgICAxMjIsIDEyLCAyMDgsIDQ3LCAyMTYsIDc3LCAxMiwgMjA4LCA0NywgMjE0LCAxNjksIDEyLCAyMDgsIDQ3LCAyMDUsIDE4NywgCisgICAgMTIsIDIwOCwgNDcsIDIwNywgODUsIDEyLCAyMDgsIDQ3LCAyMDcsIDE3NywgMTIsIDIwOCwgNDcsIDIzMywgMzcsIDEyLCAKKyAgICAyMDgsIDQ3LCAyMzMsIDIwLCAxMiwgMjA4LCA0NywgMjE1LCAyNDcsIDEyLCAyMDgsIDQ3LCAyMTQsIDE2NywgNjksIDEsIDQsIAorICAgIDIyNiwgMTUsIDY5LCAxLCA0LCAyMDksIDE4MiwgNjksIDEsIDQsIDIwOCwgMjQsIDY5LCAxLCA0LCAxMzgsIDY5LCAxLCA0LCAKKyAgICAyMTgsIDEzMywgNjksIDEsIDQsIDE0NCwgNjksIDEsIDQsIDIzNCwgNzUsIDY5LCAxLCA0LCAyMzMsIDk3LCA2OSwgMSwgNCwgCisgICAgMjM0LCAxMzksIDY5LCAxLCA0LCAyMzMsIDIwNywgNjksIDEsIDQsIDIyMSwgNDEsIDY5LCAxLCA0LCAyMTMsIDI1MiwgNjksIAorICAgIDEsIDQsIDIxMywgODgsIDY5LCAxLCA0LCAyMTIsIDE3NSwgNjksIDEsIDQsIDIxMywgMTkwLCA2OSwgMSwgNCwgMjEzLCAxLCAKKyAgICAxMDYsIDI5LCAyMjYsIDEyMSwgMTA2LCAyOSwgMjE5LCAxNDMsIDEwNiwgMjksIDIwNSwgMjUzLCAxMDYsIDI5LCAyMTMsIAorICAgIDc4LCAxMDYsIDI5LCAyMjEsIDE5NywgMTA2LCAyOSwgMjE1LCAxOTAsIDEwNiwgMjksIDIwOSwgMTI5LCAxMDYsIDI5LCAKKyAgICAyMjgsIDE3NCwgMTA2LCAyOSwgMjQ2LCAxNjgsIDEwNiwgMjksIDI0NiwgMjMyLCAxMDYsIDI5LCAyMjYsIDE4MywgMTA2LCAKKyAgICAyOSwgMjA2LCA4MCwgMTA2LCAyOSwgMjE1LCAyMjcsIDEwNiwgMjksIDIzNCwgNjYsIDEwNiwgMjksIDIyNiwgMTIyLCA2MiwgCisgICAgMTA2LCAyOSwgMjE5LCAxNDQsIDYyLCAxMDYsIDI5LCAyMDUsIDI1NCwgNjIsIDEwNiwgMjksIDIxMywgNzksIDYyLCAxMDYsIAorICAgIDI5LCAyMjEsIDE5OCwgNjIsIDEwNiwgMjksIDIxNSwgMTkxLCA2MiwgMTA2LCAyOSwgMjA5LCAxMzAsIDYyLCAxMDYsIDI5LCAKKyAgICAyMjgsIDE3NSwgNjIsIDEwNiwgMjksIDI0NiwgMTY5LCA2MiwgMTA2LCAyOSwgMjQ2LCAyMzMsIDYyLCAxMDYsIDI5LCAyMjYsIAorICAgIDE4NCwgNjIsIDEwNiwgMjksIDIwNiwgODEsIDYyLCAxMDYsIDI5LCAyMTUsIDIyOCwgNjIsIDEwNiwgMjksIDIzNCwgNjcsIAorICAgIDYyLCAxMDYsIDI5LCAyNDYsIDE2OSwgNjYsIDEwNiwgMjI2LCA1OSwgMTcxLCAyMTcsIDEwMSwgMTA2LCAyMjYsIDU5LCAKKyAgICAxNzEsIDE2MywgMjMzLCA5NywgMTA2LCAxOTgsIDE5OCwgMTAyLCAxMDYsIDE5OCwgMTk4LCAxMDUsIDEwNiwgMTk4LCAxOTgsIAorICAgIDE0NywgMTA2LCAxOTgsIDE5OCwgMTQ5LCAxMDYsIDE5OCwgMTk4LCAxNjQsIDEwNiwgMTk4LCAxOTgsIDE4NywgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjEwLCAxMzUsIDEwNiwgMTk4LCAxOTgsIDE5MiwgMTA2LCAxOTgsIDE5OCwgMjE5LCAxMTMsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIwNiwgMTY2LCAxMDYsIDE5OCwgMTk4LCAyMjEsIDgxLCAxMDYsIDE5OCwgMTk4LCAyMzcsIDc3LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMDEsIDgyLCAxMDYsIDE5OCwgMTk4LCAyMDAsIDI0MywgMTA2LCAxOTgsIDE5OCwgMjIyLCAyMCwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjM5LCAxNywgMTA2LCAxOTgsIDE5OCwgMjA3LCAyMjgsIDEwNiwgMTk4LCAxOTgsIDIwOCwgNzksIDEwNiwgCisgICAgMTk4LCAxOTgsIDIzNCwgMTQ4LCAxMDYsIDE5OCwgMTk4LCAyMDksIDI1LCAxMDYsIDE5OCwgMTk4LCAyMjAsIDEzNSwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjA4LCAyMjksIDEwNiwgMTk4LCAxOTgsIDIzNywgODgsIDEwNiwgMTk4LCAxOTgsIDI0MywgNjEsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIyNSwgMTY1LCAxMDYsIDE5OCwgMTk4LCAyMTMsIDEyNywgMTA2LCAxOTgsIDE5OCwgMjQ3LCAxNjgsIAorICAgIDEwNiwgMTk4LCAxOTgsIDIwOCwgMjksIDEwNiwgMTk4LCAxOTgsIDIwNywgMjEwLCAxMDYsIDE5OCwgMTk4LCAyMzgsIDE1MiwgCisgICAgMTA2LCAxOTgsIDE5OCwgMjEzLCAxMTksIDEwNiwgMTk4LCAxOTgsIDI1MSwgMTIwLCAxMDYsIDE5OCwgMTk4LCAyMzcsIAorICAgIDExOSwgMTA2LCAxOTgsIDE5OCwgMjEzLCAxMTcsIDEwNiwgMTk4LCAxOTgsIDIxMCwgMTc0LCAxMDYsIDE5OCwgMTk4LCAKKyAgICAyMTMsIDE4OSwgNDQsIDE5OCwgMTk4LCAyMTQsIDc4LCA0NCwgMTk4LCAxOTgsIDIyNiwgMTQ2LCA0NCwgMTk4LCAxOTgsIAorICAgIDIxMSwgMjIxLCA0NCwgMTk4LCAxOTgsIDIyNiwgNTUsIDQ0LCA0MSwgMjA2LCAxNjcsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgCisgICAgNDQsIDQxLCAyMDQsIDE2MCwgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIwNiwgNjgsIDIxNywgNzksIDYzLCAKKyAgICAyMDgsIDE5MywgNDQsIDQxLCAyMzYsIDIzNiwgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIzNywgMTA1LCAyMTcsIAorICAgIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjA5LCA5MywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIxMCwgCisgICAgMTMwLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjM4LCAyMjMsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgMjE2LCAKKyAgICAxMDYsIDU0LCA0NCwgNDEsIDIwNCwgMTYwLCAxMDIsIDQ0LCA0MSwgMjA0LCAxNjAsIDEwNSwgNDQsIDQxLCAyMDQsIDE2MCwgCisgICAgMTQ3LCA0NCwgNDEsIDIwNCwgMTYwLCAxNDksIDQ0LCA0MSwgMjA0LCAxNjAsIDE2NCwgNDQsIDQxLCAyMDQsIDE2MCwgMTg3LCAKKyAgICA0NCwgNDEsIDIwNCwgMTYwLCAyMTAsIDEzNSwgNDQsIDQxLCAyMDQsIDE2MCwgMTkyLCA0NCwgNDEsIDIwNCwgMTYwLCAyMTksIAorICAgIDExMywgNDQsIDQxLCAyMDYsIDY3LCA0NCwgNDEsIDIwNiwgNjgsIDEwMiwgNDQsIDQxLCAyMDYsIDY4LCAxMDUsIDQ0LCA0MSwgCisgICAgMjA2LCA2OCwgMTQ3LCA0NCwgNDEsIDIwNiwgNjgsIDE0OSwgNDQsIDQxLCAyMDYsIDY4LCAxNjQsIDQ0LCAyOSwgMjI2LCAKKyAgICAxMjEsIDQ0LCAyOSwgMjE5LCAxNDMsIDQ0LCAyOSwgMjA1LCAyNTMsIDQ0LCAyOSwgMjEzLCA3OCwgNDQsIDI5LCAyMjEsIAorICAgIDE5NywgNDQsIDI5LCAyMTUsIDE5MCwgNDQsIDI5LCAyMDksIDEyOSwgNDQsIDI5LCAyMjgsIDE3NCwgNDQsIDI5LCAyNDYsIAorICAgIDE2OCwgNDQsIDI5LCAyNDYsIDIzMiwgNDQsIDI5LCAyMjYsIDE4MywgNDQsIDI5LCAyMDYsIDgwLCA0NCwgMjksIDIxNSwgCisgICAgMjI3LCA0NCwgMjksIDIzNCwgNjYsIDQ0LCAyOSwgMjI2LCAxMjIsIDYyLCA0NCwgMjksIDIxOSwgMTQ0LCA2MiwgNDQsIDI5LCAKKyAgICAyMDUsIDI1NCwgNjIsIDQ0LCAyOSwgMjEzLCA3OSwgNjIsIDQ0LCAyOSwgMjIxLCAxOTgsIDYyLCA0NCwgMjksIDIxNSwgCisgICAgMTkxLCA2MiwgNDQsIDI5LCAyMDksIDEzMCwgNjIsIDQ0LCAyOSwgMjI4LCAxNzUsIDYyLCA0NCwgMjksIDI0NiwgMTY5LCAKKyAgICA2MiwgNDQsIDI5LCAyNDYsIDIzMywgNjIsIDQ0LCAyOSwgMjI2LCAxODQsIDYyLCA0NCwgMjksIDIwNiwgODEsIDYyLCA0NCwgCisgICAgMjksIDIxNSwgMjI4LCA2MiwgNDQsIDI5LCAyMzQsIDY3LCA2MiwgNDQsIDIyNiwgNTksIDE3MSwgMjQ3LCAyNywgNDQsIAorICAgIDIyNiwgNTksIDE3MSwgMjI3LCAxNDMsIDQ0LCAyOSwgMjI4LCAxNzUsIDY2LCAyMjYsIDU5LCAyMDgsIDExMiwgOTksIDQ0LCAKKyAgICAxOTgsIDE5OCwgMTAyLCA0NCwgMTk4LCAxOTgsIDEwNSwgNDQsIDE5OCwgMTk4LCAxNDcsIDQ0LCAxOTgsIDE5OCwgMTQ5LCAKKyAgICA0NCwgMTk4LCAxOTgsIDE2NCwgNDQsIDE5OCwgMTk4LCAxODcsIDQ0LCAxOTgsIDE5OCwgMjEwLCAxMzUsIDQ0LCAxOTgsIAorICAgIDE5OCwgMTkyLCA0NCwgMTk4LCAxOTgsIDIxOSwgMTEzLCA0NCwgMTk4LCAxOTgsIDIwNiwgMTY2LCA0NCwgMTk4LCAxOTgsIAorICAgIDIyMSwgODEsIDQ0LCAxOTgsIDE5OCwgMjM3LCA3NywgNDQsIDE5OCwgMTk4LCAyMDEsIDgyLCA0NCwgMTk4LCAxOTgsIDIwMCwgCisgICAgMjQzLCA0NCwgMTk4LCAxOTgsIDIyMiwgMjAsIDQ0LCAxOTgsIDE5OCwgMjM5LCAxNywgNDQsIDE5OCwgMTk4LCAyMDcsIAorICAgIDIyOCwgNDQsIDE5OCwgMTk4LCAyMDgsIDc5LCA0NCwgMTk4LCAxOTgsIDIzNCwgMTQ4LCA0NCwgMTk4LCAxOTgsIDIwOSwgCisgICAgMjUsIDQ0LCAxOTgsIDE5OCwgMjIwLCAxMzUsIDQ0LCAxOTgsIDE5OCwgMjA4LCAyMjksIDQ0LCAxOTgsIDE5OCwgMjM3LCAKKyAgICA4OCwgNDQsIDE5OCwgMTk4LCAyNDMsIDYxLCA0NCwgMTk4LCAxOTgsIDIyNSwgMTY1LCA0NCwgMTk4LCAxOTgsIDIxMSwgCisgICAgMTk0LCA0NCwgMTk4LCAxOTgsIDIyMiwgMTg0LCA0NCwgMTk4LCAxOTgsIDIzNywgMTI5LCA0NCwgMTk4LCAxOTgsIDIwNywgCisgICAgMjQwLCA0NCwgMTk4LCAxOTgsIDIzOCwgNDcsIDQ0LCAxOTgsIDE5OCwgMjE1LCAxMCwgNDQsIDE5OCwgMTk4LCAyNTAsIAorICAgIDE0MywgNDQsIDE5OCwgMTk4LCAyMjgsIDExLCA0NCwgMTk4LCAxOTgsIDIxMywgMTE3LCA0NCwgMTk4LCAxOTgsIDI0MywgCisgICAgMjAsIDQ0LCAxOTgsIDE5OCwgMjQzLCAxMCwgNDQsIDE5OCwgMTk4LCAyMzQsIDU5LCA0NCwgMTk4LCAxOTgsIDI0NywgNTUsIAorICAgIDQ0LCAxOTgsIDE5OCwgMjI0LCA1OSwgNDQsIDE5OCwgMTk4LCAyMjUsIDI4LCA0NCwgMTk4LCAxOTgsIDIxMywgNDYsIDQ0LCAKKyAgICAxOTgsIDE5OCwgMjIyLCA2NywgNDQsIDE5OCwgMTk4LCAyMTMsIDE0NCwgNDQsIDE5OCwgMTk4LCAyMDgsIDI5LCA0NCwgCisgICAgMTk4LCAxOTgsIDIwNywgMjEwLCA0NCwgMTk4LCAxOTgsIDIzOCwgMTUyLCA0NCwgMTk4LCAxOTgsIDIxMywgMTE5LCA0NCwgCisgICAgMTk4LCAxOTgsIDI1MSwgMTIwLCA0NCwgMTk4LCAxOTgsIDIxOSwgMTI5LCA0NCwgNDEsIDIwNiwgNjgsIDE4NywgNDQsIDQxLCAKKyAgICAyMDYsIDY4LCAyMTAsIDEzNSwgNDQsIDQxLCAyMDYsIDY4LCAxOTIsIDQ0LCA0MSwgMjA2LCA2OCwgMjE5LCAxMTMsIDQ0LCAKKyAgICA0MSwgMjM2LCAyMzUsIDQ0LCA0MSwgMjM2LCAyMzYsIDEwMiwgNDQsIDQxLCAyMzYsIDIzNiwgMTA1LCA0NCwgNDEsIDIzNiwgCisgICAgMjM2LCAxNDcsIDQ0LCA0MSwgMjM2LCAyMzYsIDE0OSwgNDQsIDQxLCAyMzYsIDIzNiwgMTY0LCA0NCwgNDEsIDIzNiwgMjM2LCAKKyAgICAxODcsIDQ0LCA0MSwgMjM2LCAyMzYsIDIxMCwgMTM1LCA0NCwgNDEsIDIzNiwgMjM2LCAxOTIsIDQ0LCA0MSwgMjM2LCAyMzYsIAorICAgIDIxOSwgMTEzLCA0NCwgNDEsIDIzNywgMTA0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyNywgMjM4LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzNywgMTQxLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyMiwgMTUyLCAxNDEsIDIwNiwgMTc4LCAKKyAgICAxNiwgMzYsIDI1MSwgMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjIsIDExOSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMjcsIDE0MCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjcsIDE0MSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNTAsIAorICAgIDEzNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMTAsIDE1MywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMTcsIDEyNywgCisgICAgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMTgsIDIwMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDE3MCwgNTIsIAorICAgIDIzNCwgODUsIDUyLCAyMzgsIDExMSwgNTIsIDIzOCwgNTcsIDIyNCwgMTgyLCAyMjQsIDIwOSwgNTQsIDQ0LCA2OSwgNjIsIAorICAgIDQ0LCA2OSwgNzAsIDQ0LCA2OSwgNjYsIDQ0LCA2OSwgNzIsIDQ0LCA2OSwgNzQsIDQ0LCA2OSwgMTYxLCA0NCwgNjksIDIyNiwgCisgICAgMTYzLCA0NCwgNjksIDIyNiwgMTUsIDQ0LCA2OSwgMjI3LCA4LCA0NCwgNjksIDIyNiwgODgsIDQ0LCA2OSwgMjEyLCA2NCwgCisgICAgNDQsIDY5LCAyMDksIDE4MiwgNDQsIDY5LCAyMDgsIDI0LCA0NCwgNjksIDIxMSwgMjAyLCA0NCwgNjksIDIwOSwgMjksIDQ0LCAKKyAgICA2OSwgMjA3LCAzNiwgNDQsIDY5LCAyMDYsIDE1LCA0NCwgNjksIDIwNCwgMjE1LCA0NCwgNjksIDIwNiwgMjAxLCA0NCwgNjksIAorICAgIDEzOCwgNDQsIDY5LCAxODgsIDQ0LCA2OSwgMjE5LCAxNTAsIDQ0LCA2OSwgMjE4LCAxMzMsIDQ0LCA2OSwgMjIwLCAzNCwgCisgICAgNDQsIDY5LCAyMTgsIDI0MSwgNDQsIDY5LCAxNDQsIDQ0LCA2OSwgMjM0LCA3NSwgNDQsIDY5LCAyMzMsIDk3LCA0NCwgNjksIAorICAgIDIzNCwgMTM5LCA0NCwgNjksIDIzMywgMjA3LCA0NCwgNjksIDE3OCwgNDQsIDY5LCAyMjEsIDIxMSwgNDQsIDY5LCAyMjEsIAorICAgIDQxLCA0NCwgNjksIDIyMiwgNzYsIDQ0LCA2OSwgMjIxLCAxMzYsIDQ0LCA2OSwgMTgzLCA0NCwgNjksIDE5OSwgMjExLCA0NCwgCisgICAgNjksIDE5OSwgMjQ1LCA0NCwgNjksIDIxMywgMjUyLCA0NCwgNjksIDIxMywgODgsIDQ0LCA2OSwgMjEyLCAxNzUsIDQ0LCAKKyAgICA2OSwgMjEzLCAxOTAsIDQ0LCA2OSwgMjEzLCAxLCA0NCwgNjksIDIwMSwgMTE0LCA0NCwgNjksIDIwMSwgMzEsIDQ0LCA2OSwgCisgICAgMjAxLCA2NCwgNDQsIDY5LCAyMDEsIDAsIDUyLCAyNTEsIDI3LCA1MiwgMjUwLCAxOTAsIDUyLCAyNTEsIDU0LCA1MiwgMjUyLCAKKyAgICA5NiwgNTIsIDIyOCwgODUsIDUyLCAyMjgsIDUzLCA1MiwgMjAzLCAyMzEsIDUyLCAyMzgsIDg0LCA1MiwgMjM4LCAyNTIsIAorICAgIDUyLCAyMTcsIDY2LCA1MiwgMjE3LCA1OSwgNTIsIDIyNywgODAsIDUyLCAyMjcsIDQ1LCA1MiwgMjI3LCA0MiwgNTIsIDIzNiwgCisgICAgNDUsIDUyLCAyMzYsIDU0LCA1MiwgMjM1LCAxNTAsIDUyLCAyMzUsIDE0NiwgNTIsIDIyNSwgMTk0LCA1MiwgMjM1LCAxMzgsIAorICAgIDUyLCAyMjYsIDEzOCwgNTIsIDIyNiwgMTM3LCA1MiwgMjI2LCAxMzYsIDUyLCAyMjYsIDEzNSwgNTIsIDIzNSwgMjAsIDUyLCAKKyAgICAyMzUsIDE5LCA1MiwgMjI1LCAyNDIsIDUyLCAyMjUsIDI0NCwgNTIsIDIyNywgMSwgNTIsIDIyNiwgNTcsIDUyLCAyMjYsIAorICAgIDY1LCA1MiwgMjEyLCA0NSwgNTIsIDIxMiwgNiwgNTIsIDIwOSwgMTEwLCA1MiwgMjEwLCAxNTgsIDUyLCAyMTAsIDE1NywgCisgICAgNTIsIDI0MiwgNTQsIDUyLCAyNDEsIDExMywgNTIsIDI0MCwgMTgzLCA1MiwgMjA1LCAxNzYsIDUyLCAyMjAsIDEzMCwgNTIsIAorICAgIDIxOCwgMjAzLCA1MiwgMjM0LCAyMTgsIDUyLCAyMTYsIDIwNSwgNTIsIDIxNiwgMjA0LCA1MiwgMjQ5LCAxMzMsIDUyLCAKKyAgICAyMTUsIDIwMSwgNTIsIDIxNSwgMTY0LCA1MiwgMjE1LCAxNjUsIDUyLCAyNDgsIDE1OCwgNTIsIDIzMywgOTUsIDUyLCAyMzMsIAorICAgIDkwLCA1MiwgMjQ3LCAyNTAsIDUyLCAyMzMsIDc0LCA1MiwgMjM0LCAxMTEsIDUyLCAyMTYsIDEsIDUyLCAyMTYsIDQyLCA1MiwgCisgICAgMjM0LCA5NCwgNTIsIDIxNiwgMzgsIDUyLCAyMTYsIDU2LCA1MiwgMjQ4LCAyNDcsIDUyLCAyMTUsIDk1LCA1MiwgMjQ4LCAKKyAgICA5OCwgNTIsIDIzMywgMTkxLCA1MiwgMjE1LCA4MiwgNTIsIDIzMywgMTgyLCA1MiwgMjMzLCAxODQsIDUyLCAyMjIsIDE5NiwgCisgICAgNTIsIDIyMiwgMTkyLCA1MiwgMjIyLCAyMDEsIDUyLCAyMjIsIDEzOSwgNTIsIDIyMiwgMTY4LCA1MiwgMjIxLCAxNzYsIDUyLCAKKyAgICAyMjEsIDE1MSwgNTIsIDIyMSwgMTUwLCA1MiwgMjIyLCA1NiwgNTIsIDIyMiwgNTMsIDUyLCAyMjIsIDU3LCA1MiwgMjAwLCAKKyAgICAxMDgsIDUyLCAyMDAsIDEwNiwgNTIsIDE5OSwgMjAwLCA1MiwgMjEzLCAxNywgNTIsIDIxMywgMjEsIDUyLCAyMTIsIDE0OCwgCisgICAgNTIsIDIxMiwgMTQyLCA1MiwgMjEzLCAxNDEsIDUyLCAyMTMsIDEzOCwgNTIsIDIwMSwgODAsIDE0MSwgMjA2LCAxNzgsIDE2LCAKKyAgICAzNiwgMjMzLCAxMTQsIDE5OSwgODEsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDEwMiwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTA1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxNDcsIDE0MSwgCisgICAgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE0OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTY0LCAKKyAgICAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxODcsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIAorICAgIDIxMCwgMTM1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxOTIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIxOSwgMTEzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDYsIDE2NiwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjM4LCAxOTksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgCisgICAgMTY0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDYsIDY5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMzYsIDIyMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjM3LCAxMDgsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwOSwgMTAwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMTAsIAorICAgIDEzMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjM4LCAyMjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIxOSwgMTEwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIDE1OSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAxNTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgCisgICAgMTQ4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIDE1MCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjA0LCAxNTUsIDUyLCAyMzMsIDEwNSwgNTIsIDI0MiwgNTgsIDUyLCAyNTAsIDEzOSwgNTIsIDE0OCwgNTIsIAorICAgIDIxNiwgMjQ5LCA1MiwgMjE2LCA3OCwgNTIsIDI0MCwgMjEzLCA1MiwgMjQwLCAyMTQsIDIwOCwgMTkyLCA1MiwgMjQwLCAKKyAgICAyMTQsIDI0MiwgMjA5LCA1MiwgMjI4LCA4LCA1MiwgMjM4LCAxMTQsIDIyMCwgMTM2LCAyMzQsIDExMiwgNTIsIDIzOCwgCisgICAgMTE0LCAyMjAsIDEzNiwgMjA3LCAxMDYsIDUyLCAyMzgsIDExNCwgMjIwLCAxMzYsIDIwNywgMywgNTIsIDIzOCwgMTE0LCAKKyAgICAyMjAsIDEzNiwgMjIyLCA1MiwgNTIsIDI0MywgMTIsIDUyLCAyMTYsIDIxMSwgMjUxLCA4NywgNTIsIDE4OCwgNTIsIDIyMSwgCisgICAgNDIsIDYyLCA1MiwgMTc4LCA1MiwgMTYxLCA1MiwgMjI3LCAxMSwgNTIsIDIyMiwgMTE1LCA1MiwgMjM2LCAzMywgNTIsIAorICAgIDI0NywgMTc0LCA1MiwgMjI3LCAxMCwgNTIsIDIxNSwgMjQ4LCA1MiwgMjIwLCAxLCA1MiwgMjIxLCA0MiwgMjM4LCA1LCA1MiwgCisgICAgMjIxLCA0MiwgMjM2LCAxNTYsIDUyLCAyMjEsIDI1MiwgNTIsIDIyNiwgMjA5LCA1MiwgMjMzLCAyOCwgNTIsIDIyNiwgMTY1LCAKKyAgICA1MiwgMjIxLCAyMTMsIDUyLCAyMzUsIDE2MywgNTIsIDIwNiwgMTcsIDUyLCAyMjEsIDQyLCAxNTYsIDUyLCAyMjEsIDE0NCwgCisgICAgNTIsIDI0MCwgMjIzLCA1MiwgMjI2LCAxMDMsIDUyLCAyMzcsIDE1LCA1MiwgMjE5LCAyMywgNTIsIDIyMSwgNDIsIDIyMywgCisgICAgMjQzLCA1MiwgMjIxLCAxNDEsIDUyLCAyNDYsIDkyLCA1MiwgMjI2LCA5NywgNTIsIDIyMSwgMTQyLCAyMDgsIDE5MiwgNTIsIAorICAgIDI0NiwgOTMsIDIwOCwgMTkyLCA1MiwgMjIzLCAyNDQsIDIwOCwgMTkyLCA1MiwgMjI2LCA5OCwgMjA4LCAxOTIsIDUyLCAKKyAgICAyMjEsIDE0MiwgMjQyLCAyMDksIDUyLCAyNDYsIDkzLCAyNDIsIDIwOSwgNTIsIDIyMywgMjQ0LCAyNDIsIDIwOSwgNTIsIAorICAgIDIyNiwgOTgsIDI0MiwgMjA5LCA1MiwgMjIzLCAyNDQsIDExOSwgMjEyLCAxMjIsIDUyLCAyMjMsIDI0NCwgMTE5LCAyMTIsIAorICAgIDEyMywgMjA4LCAxOTIsIDUyLCAxNzIsIDUyLCAyMjYsIDUwLCA1MiwgMjIxLCA0NSwgNTIsIDIzNSwgOTEsIDUyLCAyMTMsIAorICAgIDIzOSwgNTIsIDIxMywgMjQwLCAxMTksIDIxMiwgMTIyLCA1MiwgMjEzLCAyNDAsIDExOSwgMjEyLCAxMjMsIDIwOCwgMTkyLCAKKyAgICA1MiwgMjE0LCAyMzcsIDUyLCAyMTgsIDE3MSwgNTIsIDIyMSwgNDIsIDIxMiwgMTIyLCA1MiwgMjIxLCA0MywgNTIsIDIxNCwgCisgICAgMTg3LCA1MiwgMjE4LCA3MSwgNTIsIDIyMSwgNDIsIDIwMywgMTY4LCA1MiwgMjIwLCAyMzgsIDUyLCAyMjUsIDIzMiwgNTIsIAorICAgIDIyMCwgMjM5LCAyMjIsIDU2LCA1MiwgMjE0LCAxODYsIDUyLCAyMTgsIDcwLCA1MiwgMjIxLCA0MiwgMjAxLCAxNDcsIDUyLCAKKyAgICAyMjAsIDIzMiwgNTIsIDIyNSwgMjMwLCA1MiwgMjIwLCAyMzMsIDIyMiwgNTYsIDUyLCAyMjcsIDExOSwgMjE3LCAxMDYsIAorICAgIDUyLCAyMjMsIDI0NCwgMjE3LCAxMDYsIDUyLCAyNTEsIDEwMSwgNTIsIDI0OCwgNzMsIDUyLCAyNDcsIDEwMCwgNTIsIDI0NywgCisgICAgNzcsIDUyLCAyNDcsIDIyNCwgMTE5LCAyMjYsIDIwOSwgNTIsIDI0NiwgOTEsIDUyLCAyNDEsIDIyOSwgNTIsIDIzNSwgNCwgCisgICAgNTIsIDE0NCwgNTIsIDIzMywgMTA2LCA1MiwgMjI4LCAxMTcsIDUyLCAyMjYsIDExMCwgNTIsIDIyNiwgOTgsIDI0NywgMTQzLCAKKyAgICA1MiwgMjI2LCAxNywgNTIsIDIyNCwgMTEzLCA1MiwgMjI0LCAxMTIsIDUyLCAyMjQsIDk5LCA1MiwgMjI0LCAzLCA1MiwgCisgICAgMjIyLCAxMTYsIDIwOSwgNTMsIDUyLCAyMjEsIDE3NSwgNTIsIDIyMSwgMTA4LCA1MiwgMjE1LCAyNDYsIDUyLCAyMTUsIAorICAgIDEwOSwgNTIsIDIxNSwgNDYsIDUyLCAyMTUsIDQ0LCA1MiwgMjA4LCAxODMsIDUyLCAyMDcsIDE5MSwgNTIsIDIwMSwgNjYsIAorICAgIDUyLCAyMDMsIDE2OSwgMTE5LCAyMjMsIDI0MywgNTIsIDM1LCAxMTksIDIyMywgMjQzLCAxNDEsIDIwNiwgMTc4LCAxNiwgCisgICAgMzYsIDI0MSwgMjMzLCAxMDIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDEwNSwgMTQxLCAyMDYsIDE3OCwgCisgICAgMTYsIDM2LCAyNDEsIDIzMywgMTQ3LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxNDksIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDE2NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTg3LCAxNDEsIAorICAgIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTAsIDEzNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgCisgICAgMTkyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTksIDExMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA2LCAxNjYsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIzOCwgMTk5LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE2NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA2LCAKKyAgICA2OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjM2LCAyMjMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIzNywgMTA4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDksIDEwMCwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjEwLCAxMzIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIzOCwgCisgICAgMjI5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTksIDExMCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA0LCAxNTksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTUzLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE0OCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAKKyAgICAxNTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTU1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDQsIDE1NiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTEsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTUyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIAorICAgIDE1OCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNiwgNjcsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNiwgNjYsIDUyLCAyMzYsIDcxLCAKKyAgICAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI0MiwgMjQ3LCAyMzQsIDEyMywgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMTMsIAorICAgIDE4MywgMjM5LCAxNywgMjM0LCA4OCwgMzYsIDI0MSwgNDYsIDI1MCwgMTU2LCAyMDYsIDEwNywgMjQ4LCAyNDIsIDIzNCwgCisgICAgODgsIDM2LCAxOTksIDIyNCwgMjM3LCA3LCAyMzQsIDg4LCAzNiwgMjAxLCAxMDYsIDIzNCwgODgsIDM2LCAyNDMsIDY0LCAKKyAgICAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI1MCwgMjEzLCAyMzQsIDg4LCAzNiwgMjMzLCAxOTgsIDIwNSwgMTgyLCAyMzQsIAorICAgIDg4LCAzNiwgNCwgMjA2LCAyNDUsIDIzNCwgODgsIDM2LCAyMDUsIDExMCwgMjM0LCA4OCwgMzYsIDIxNiwgNzEsIDIzNCwgCisgICAgODgsIDM2LCAyMDgsIDExMSwgMjM0LCA4OCwgMzYsIDIzNywgMTMxLCAyMzQsIDg4LCAzNiwgMjM1LCA2OSwgMjE1LCA2OCwgCisgICAgMjM0LCA4OCwgMzYsIDIyMSwgMTI4LCAyMzQsIDg4LCAzNiwgMjM4LCAxNTEsIDIzNCwgODgsIDM2LCAyMzcsIDgsIDIzNCwgCisgICAgODgsIDM2LCAyMDAsIDIzNiwgMjE3LCA3OSwgMjA2LCAxMDcsIDI0MSwgMTcxLCAyMzQsIDg4LCAzNiwgMjUxLCA3LCAyMzQsIAorICAgIDg4LCAzNiwgMjQzLCA0MywgMjM0LCA4OCwgMzYsIDI0OCwgMTUwLCAyMDYsIDM3LCAyMzQsIDg4LCAzNiwgMjM1LCA4OSwgCisgICAgMjM0LCA4OCwgMzYsIDIwOCwgMjA4LCAyNTEsIDI2LCAyMzQsIDg4LCAzNiwgMjEzLCAxMDksIDIzNCwgODgsIDM2LCAyMjgsIAorICAgIDc5LCAyMzQsIDg4LCAzNiwgMjM1LCA2OSwgMjA2LCAyNDUsIDIzNCwgODgsIDM2LCAyMjEsIDU5LCAyNDMsIDE0LCAyMzQsIAorICAgIDg4LCAzNiwgMjM1LCA2OSwgMjE1LCAyMiwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNTIsIDAsIDIwMSwgODIsIDIzNCwgCisgICAgODgsIDM2LCAyMDYsIDEwNywgMjQ2LCAxMTgsIDIzNywgNzcsIDIzNCwgODgsIDM2LCAyMjgsIDkzLCAyMzQsIDg4LCAzNiwgCisgICAgMjM5LCAxMTQsIDIzNCwgODgsIDM2LCAyMTMsIDExMiwgMjM0LCA4OCwgMzYsIDIzNSwgNjksIDIxNSwgNTEsIDIzNCwgODgsIAorICAgIDM2LCAyMTQsIDI1NCwgMjM0LCA4OCwgMzYsIDI0MSwgMjQ5LCA3NiwgMjA2LCAxMDcsIDIyNCwgMTk2LCAyMzQsIDg4LCAzNiwgCisgICAgMjA2LCAxMDcsIDIzNywgMTY5LCAyMzQsIDg4LCAzNiwgMjE3LCAzOSwgMjM0LCA4OCwgMzYsIDIxNywgMTM0LCAyMzQsIDg4LCAKKyAgICAzNiwgMjQxLCAxNDEsIDIzNCwgODgsIDM2LCAyNDEsIDE2MywgMjM0LCA4OCwgMzYsIDIyOCwgMTA4LCAyMzQsIDg4LCAzNiwgCisgICAgMjQ4LCA2MCwgMjM0LCA4OCwgMzYsIDI0NiwgNzIsIDIwNSwgMTg2LCAyMjIsIDU5LCAyMzQsIDg4LCAzNiwgMjM2LCA0MCwgCisgICAgMjA1LCAxODIsIDIzNCwgODgsIDM2LCAyMTQsIDE5NiwgMjAzLCAyMTcsIDIzNCwgODgsIDM2LCAyMTcsIDM4LCAyMzQsIDg4LCAKKyAgICAzNiwgMjA2LCAxMDcsIDIwMSwgNTIsIDIzNCwgODgsIDM2LCAyMTMsIDEwMCwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNDcsIAorICAgIDEwNiwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNTAsIDIwOSwgMjA2LCAzMSwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAKKyAgICAyMjcsIDIsIDIwOCwgODMsIDIyMSwgNjMsIDIzNCwgODgsIDM2LCAyNDEsIDEwOCwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAKKyAgICAyMjIsIDE0MiwgMjIyLCAxOTcsIDIzNCwgODgsIDM2LCAyNTIsIDEsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjAxLCA5OSwgCisgICAgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMzUsIDI1MywgMjAxLCAxNiwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMjcsIAorICAgIDE0OSwgMjI1LCA5NiwgMjM0LCA4OCwgMzYsIDI0MCwgMjUyLCAyMzQsIDg4LCAzNiwgMjI0LCAxODMsIDIzNCwgODgsIDM2LCAKKyAgICAyMjgsIDgyLCAyMDUsIDM2LCAyMzQsIDg4LCAzNiwgNCwgMjE1LCAyMiwgMjM0LCA4OCwgMzYsIDI1MSwgMTk0LCAyNDYsIAorICAgIDYzLCAyMzQsIDg4LCAzNiwgMjQ4LCAyNDUsIDI0NiwgNjMsIDExLCA1LCAyMjgsIDEyLCAxMSwgNSwgMjI4LCA0LCAxMSwgNSwgCisgICAgNzAsIDExLCA1LCAyMjgsIDM4LCAxMSwgNSwgMjI4LCAxNzYsIDExLCA1LCAyMjgsIDE1OSwgMTEsIDUsIDIyOCwgMTc4LCAKKyAgICAxMSwgNSwgMjI4LCAxNzcsIDExLCA1LCAyNTAsIDE1NSwgMTEsIDUsIDI1MCwgMTE0LCAxMSwgNSwgNjIsIDExLCA1LCAyNTEsIAorICAgIDI4LCAxMSwgNSwgMjAzLCAyMjksIDExLCA1LCAyMDMsIDIzMiwgMTEsIDUsIDIwMywgMjMwLCAxMSwgNSwgMjE3LCAxMSwgCisgICAgMTEsIDUsIDIxNiwgMjM1LCAxMSwgNSwgNzQsIDExLCA1LCAyMTcsIDU0LCAxMSwgNSwgMjM4LCA0OCwgMTEsIDUsIDcyLCAKKyAgICAxMSwgNSwgMjAwLCAyMTYsIDExLCA1LCAyNDgsIDE1MiwgMTEsIDUsIDI0OCwgMTQ4LCAxMSwgNSwgMjQ4LCAxODgsIDExLCAKKyAgICA1LCAyNDgsIDE2MywgMTEsIDUsIDI0OCwgMTc3LCAxMSwgNSwgMjQ4LCAxNzYsIDExLCA1LCAyNDgsIDE3OSwgMTEsIDUsIAorICAgIDI0OCwgMTc4LCAxMSwgNSwgMjQ5LCA1NSwgMTEsIDUsIDI0OSwgNDcsIDExLCA1LCAyNDksIDEzNiwgMTEsIDUsIDI0OSwgCisgICAgNzgsIDExLCA1LCAyNDgsIDYsIDExLCA1LCAyNDgsIDEwLCAxMSwgNSwgMjQ4LCA3LCAxMSwgNSwgMjQ4LCA5NywgMTEsIDUsIAorICAgIDI0OCwgNzgsIDExLCA1LCAyNDgsIDEyNCwgMTEsIDUsIDI0OCwgMTAzLCAxMSwgNSwgMjQ4LCAyMDMsIDExLCA1LCAyNDksIAorICAgIDgsIDExLCA1LCAyNDgsIDIxNSwgMTEsIDUsIDI0NywgMjQ2LCAxMSwgNSwgMjQ3LCAyNDEsIDExLCA1LCAyNDgsIDM2LCAxMSwgCisgICAgNSwgMjQ4LCA1LCAxMSwgNSwgMjQ3LCAyNTQsIDExLCA1LCAyNDgsIDMsIDExLCA1LCAyNDcsIDIyOSwgMTEsIDUsIDI0NywgCisgICAgMjI3LCAxMSwgNSwgMjQ3LCAyMzQsIDExLCA1LCAyNDcsIDIzMiwgMTEsIDUsIDI0NywgMjMwLCAxMSwgNSwgMjQ3LCAyMzEsIAorICAgIDExLCA1LCAyMTUsIDE0MiwgMTEsIDUsIDIxNSwgMTM4LCAxMSwgNSwgMjE1LCAyMDQsIDExLCA1LCAyMTUsIDE1NCwgMTEsIAorICAgIDUsIDIxNSwgMTcwLCAxMSwgNSwgMjE1LCAxOTcsIDExLCA1LCAyMTUsIDE5MywgMTEsIDUsIDIxNiwgOTQsIDExLCA1LCAKKyAgICAyMTYsIDgzLCAxMSwgNSwgMTcyLCAxMSwgNSwgMjE2LCAxMzUsIDExLCA1LCAyMTQsIDIwNiwgMTEsIDUsIDIxNCwgMjA4LCAKKyAgICAxMSwgNSwgMjE0LCAyMDcsIDExLCA1LCAyMTUsIDYxLCAxMSwgNSwgMjE1LCA0OSwgMTEsIDUsIDIxNSwgMTA2LCAxMSwgNSwgCisgICAgMjE1LCA3NywgMTEsIDUsIDIxNCwgMTkyLCAxMSwgNSwgMjE0LCAxODgsIDExLCA1LCAyMTQsIDIyNCwgMTEsIDUsIDIxNCwgCisgICAgMjA1LCAxMSwgNSwgMjE0LCAxOTcsIDExLCA1LCAyMTQsIDIwMywgMTEsIDUsIDIxNCwgMTcxLCAxMSwgNSwgMjE0LCAxNzAsIAorICAgIDExLCA1LCAyMTQsIDE3NSwgMTEsIDUsIDIxNCwgMTc0LCAxMSwgNSwgMjE0LCAxNzIsIDExLCA1LCAyMTQsIDE3MywgMTEsIAorICAgIDUsIDI0OSwgMjksIDExLCA1LCAyNDksIDI4LCAxMSwgNSwgMjQ5LCAzNSwgMTEsIDUsIDI0OSwgMzAsIDExLCA1LCAyNDksIAorICAgIDMyLCAxMSwgNSwgMjQ5LCAzMSwgMTEsIDUsIDI0OSwgMzQsIDExLCA1LCAyNDksIDMzLCAxMSwgNSwgMjQ5LCA0MSwgMTEsIAorICAgIDUsIDI0OSwgNDAsIDExLCA1LCAyNDksIDQ0LCAxMSwgNSwgMjQ5LCA0MiwgMTEsIDUsIDI0OSwgMjAsIDExLCA1LCAyNDksIAorICAgIDIyLCAxMSwgNSwgMjQ5LCAyMSwgMTEsIDUsIDI0OSwgMjUsIDExLCA1LCAyNDksIDI0LCAxMSwgNSwgMjQ5LCAyNywgMTEsIAorICAgIDUsIDI0OSwgMjYsIDExLCA1LCAyNDksIDM2LCAxMSwgNSwgMjQ5LCAzOSwgMTEsIDUsIDI0OSwgMzcsIDExLCA1LCAyNDksIAorICAgIDE2LCAxMSwgNSwgMjQ5LCAxNSwgMTEsIDUsIDI0OSwgMjMsIDExLCA1LCAyNDksIDE5LCAxMSwgNSwgMjQ5LCAxNywgMTEsIAorICAgIDUsIDI0OSwgMTgsIDExLCA1LCAyNDksIDEyLCAxMSwgNSwgMjQ5LCAxMSwgMTEsIDUsIDI0OSwgMTQsIDExLCA1LCAyNDksIAorICAgIDEzLCAxMSwgNSwgMjIwLCA5NywgMTEsIDUsIDIyMCwgOTYsIDExLCA1LCAyMjAsIDEwMiwgMTEsIDUsIDIyMCwgOTgsIDExLCAKKyAgICA1LCAyMjAsIDk5LCAxMSwgNSwgMjIwLCAxMDEsIDExLCA1LCAyMjAsIDEwMCwgMTEsIDUsIDIyMCwgMTA1LCAxMSwgNSwgCisgICAgMjIwLCAxMDQsIDExLCA1LCAyMjAsIDEwNywgMTEsIDUsIDIyMCwgMTA2LCAxMSwgNSwgMjIwLCA5MywgMTEsIDUsIDIyMCwgCisgICAgOTIsIDExLCA1LCAyMjAsIDk1LCAxMSwgNSwgMjIwLCA5NCwgMTEsIDUsIDIyMCwgODYsIDExLCA1LCAyMjAsIDg1LCAxMSwgCisgICAgNSwgMjIwLCA5MCwgMTEsIDUsIDIyMCwgODksIDExLCA1LCAyMjAsIDg3LCAxMSwgNSwgMjIwLCA4OCwgMTEsIDUsIDIyMCwgCisgICAgODAsIDExLCA1LCAyMjAsIDc5LCAxMSwgNSwgMjIwLCA4NCwgMTEsIDUsIDIyMCwgODMsIDExLCA1LCAyMjAsIDgxLCAxMSwgCisgICAgNSwgMjIwLCA4MiwgMTEsIDUsIDIzMywgMjUxLCAxMSwgNSwgMjMzLCAyNTAsIDExLCA1LCAyMzQsIDAsIDExLCA1LCAyMzMsIAorICAgIDI1MiwgMTEsIDUsIDIzMywgMjUzLCAxMSwgNSwgMjMzLCAyNTUsIDExLCA1LCAyMzMsIDI1NCwgMTEsIDUsIDIzNCwgMywgCisgICAgMTEsIDUsIDIzNCwgMiwgMTEsIDUsIDIzNCwgNSwgMTEsIDUsIDIzNCwgNCwgMTEsIDUsIDIzMywgMjQyLCAxMSwgNSwgMjMzLCAKKyAgICAyNDQsIDExLCA1LCAyMzMsIDI0MywgMTEsIDUsIDIzMywgMjQ3LCAxMSwgNSwgMjMzLCAyNDYsIDExLCA1LCAyMzMsIDI0OSwgCisgICAgMTEsIDUsIDIzMywgMjQ4LCAxMSwgNSwgMjMzLCAyMzgsIDExLCA1LCAyMzMsIDIzNywgMTEsIDUsIDIzMywgMjQ1LCAxMSwgCisgICAgNSwgMjMzLCAyNDEsIDExLCA1LCAyMzMsIDIzOSwgMTEsIDUsIDIzMywgMjQwLCAxMSwgNSwgMjMzLCAyMzIsIDExLCA1LCAKKyAgICAyMzMsIDIzNiwgMTEsIDUsIDIzMywgMjM1LCAxMSwgNSwgMjMzLCAyMzMsIDExLCA1LCAyMzMsIDIzNCwgMTEsIDUsIDIyMSwgCisgICAgMTQ3LCAxMSwgNSwgMjIxLCAxNDYsIDExLCA1LCAyMjEsIDIxMSwgMTEsIDUsIDIyMSwgMTUzLCAxMSwgNSwgMjIxLCAxODMsIAorICAgIDExLCA1LCAyMjEsIDIwMSwgMTEsIDUsIDIyMSwgMTk5LCAxMSwgNSwgMjIyLCAxMjcsIDExLCA1LCAyMjIsIDEyMiwgMTEsIAorICAgIDUsIDE3OCwgMTEsIDUsIDIyMiwgMTY0LCAxMSwgNSwgMjIxLCA4LCAxMSwgNSwgMjIxLCA3LCAxMSwgNSwgMjIxLCAxMSwgCisgICAgMTEsIDUsIDIyMSwgOSwgMTEsIDUsIDIyMSwgNzMsIDExLCA1LCAyMjEsIDQ3LCAxMSwgNSwgMjIxLCAxMzYsIDExLCA1LCAKKyAgICAyMjEsIDc5LCAxMSwgNSwgMjIyLCA3LCAxMSwgNSwgMjIyLCA3NiwgMTEsIDUsIDIyMCwgMjQ0LCAxMSwgNSwgMjIwLCAyNDAsIAorICAgIDExLCA1LCAyMjEsIDQxLCAxMSwgNSwgMjIxLCA0LCAxMSwgNSwgMjIwLCAyNTMsIDExLCA1LCAyMjEsIDIsIDExLCA1LCAKKyAgICAyMjAsIDIxNywgMTEsIDUsIDIyMCwgMjE2LCAxMSwgNSwgMjIwLCAyMjIsIDExLCA1LCAyMjAsIDIxOSwgMTEsIDUsIDIzNywgCisgICAgNjQsIDExLCA1LCAyMzcsIDU4LCAxMSwgNSwgMjM3LCAxMTIsIDExLCA1LCAyMzcsIDc5LCAxMSwgNSwgMjM3LCAxNjAsIDExLCAKKyAgICA1LCAyMzcsIDE1MSwgMTEsIDUsIDIzNywgMTk1LCAxMSwgNSwgMjM3LCAxNjUsIDExLCA1LCAyMzYsIDIyMCwgMTEsIDUsIAorICAgIDIzNywgMTMsIDExLCA1LCAyMzYsIDI1MCwgMTEsIDUsIDIzNiwgMTcyLCAxMSwgNSwgMjM2LCAxNzEsIDExLCA1LCAyMzYsIAorICAgIDE4OSwgMTEsIDUsIDIzNiwgMTc3LCAxMSwgNSwgMjM2LCAxNzUsIDExLCA1LCAyMzYsIDE3NiwgMTEsIDUsIDIzNiwgMTU5LCAKKyAgICAxMSwgNSwgMjM2LCAxNTgsIDExLCA1LCAyMzYsIDE2MiwgMTEsIDUsIDIzNiwgMTYwLCAxMSwgNSwgMjAyLCAyMDAsIDExLCAKKyAgICA1LCAyMDIsIDE5NSwgMTEsIDUsIDIwMiwgMjM0LCAxMSwgNSwgMjAyLCAyMDksIDExLCA1LCAyMDIsIDIyMywgMTEsIDUsIAorICAgIDIwMiwgMjIwLCAxMSwgNSwgMjAyLCAyMjYsIDExLCA1LCAyMDIsIDIyNSwgMTEsIDUsIDIwMywgNjcsIDExLCA1LCAyMDMsIAorICAgIDYyLCAxMSwgNSwgMjAzLCA5MCwgMTEsIDUsIDIwMywgNzksIDExLCA1LCAyMDIsIDE3NSwgMTEsIDUsIDIwMiwgMTcxLCAxMSwgCisgICAgNSwgMjAyLCAxOTMsIDExLCA1LCAyMDIsIDE3NywgMTEsIDUsIDIwMiwgMjM3LCAxMSwgNSwgMjAzLCA0OCwgMTEsIDUsIAorICAgIDIwMSwgMTYwLCAxMSwgNSwgMjAxLCAxNTgsIDExLCA1LCAyMDEsIDE2NiwgMTEsIDUsIDIwMSwgMTYzLCAxMSwgNSwgMjAxLCAKKyAgICAxNjEsIDExLCA1LCAyMDEsIDE2MiwgMTEsIDUsIDIwMSwgMTUxLCAxMSwgNSwgMjAxLCAxNTAsIDExLCA1LCAyMDEsIDE1NSwgCisgICAgMTEsIDUsIDIwMSwgMTU0LCAxMSwgNSwgMjAxLCAxNTIsIDExLCA1LCAyMDEsIDE1MywgMTEsIDUsIDI0MCwgMjQ1LCAxMSwgCisgICAgNSwgMjQwLCAyMzIsIDExLCA1LCAyNDEsIDc2LCAxMSwgNSwgMjQxLCAxNiwgMTEsIDUsIDI0MSwgNTEsIDExLCA1LCAyNDEsIAorICAgIDU2LCAxMSwgNSwgMjQxLCA1NSwgMTEsIDUsIDI0MSwgMjQwLCAxMSwgNSwgMjQxLCAyMzQsIDExLCA1LCAyNDIsIDU4LCAxMSwgCisgICAgNSwgMjQyLCA0LCAxMSwgNSwgMjM5LCAxMTksIDExLCA1LCAyMzksIDEyMCwgMTEsIDUsIDI0MCwgMTgyLCAxMSwgNSwgMjM5LCAKKyAgICAxNjQsIDExLCA1LCAyNDAsIDIxMSwgMTEsIDUsIDI0MCwgMTg0LCAxMSwgNSwgMjQxLCAxMDYsIDExLCA1LCAyNDEsIDE3NSwgCisgICAgMTEsIDUsIDI0MSwgMTI3LCAxMSwgNSwgMjM5LCAxMTAsIDExLCA1LCAyMzksIDEwOCwgMTEsIDUsIDIzOSwgMTM3LCAxMSwgCisgICAgNSwgMjM5LCAxMTgsIDExLCA1LCAyMzksIDExMywgMTEsIDUsIDIzOSwgMTE2LCAxMSwgNSwgMjA1LCAyMTMsIDExLCA1LCAKKyAgICAyMDUsIDIwNSwgMTEsIDUsIDIwNiwgMTUsIDExLCA1LCAyMDUsIDIyMywgMTEsIDUsIDIwNiwgNSwgMTEsIDUsIDIwNiwgNywgCisgICAgMTEsIDUsIDIwNiwgNiwgMTEsIDUsIDIwNiwgMjI2LCAxMSwgNSwgMjA2LCAyMTIsIDExLCA1LCAyMDcsIDM2LCAxMSwgNSwgCisgICAgMjA2LCAyMzYsIDExLCA1LCAyMDQsIDE5NiwgMTEsIDUsIDIwNCwgMTk1LCAxMSwgNSwgMjA0LCAxOTgsIDExLCA1LCAyMDQsIAorICAgIDE5NywgMTEsIDUsIDIwNSwgMTQ0LCAxMSwgNSwgMjA1LCAxMzQsIDExLCA1LCAxMzgsIDExLCA1LCAyMDUsIDE1NywgMTEsIAorICAgIDUsIDIwNiwgMTI4LCAxMSwgNSwgMjA2LCAyMDEsIDExLCA1LCAyMDYsIDE1MywgMTEsIDUsIDIwNCwgMTc5LCAxMSwgNSwgCisgICAgMjA0LCAxNzQsIDExLCA1LCAyMDQsIDIxNSwgMTEsIDUsIDIwNCwgMTk0LCAxMSwgNSwgMjA0LCAxODAsIDExLCA1LCAyMDQsIAorICAgIDE5MiwgMTEsIDUsIDI0MSwgMTkyLCAxMSwgNSwgMjQxLCAxOTEsIDExLCA1LCAyNDEsIDE5NywgMTEsIDUsIDI0MSwgMTkzLCAKKyAgICAxMSwgNSwgMjQxLCAxOTQsIDExLCA1LCAyNDEsIDE5NiwgMTEsIDUsIDI0MSwgMTk1LCAxMSwgNSwgMjQxLCAyMTMsIDExLCAKKyAgICA1LCAyNDEsIDIxMiwgMTEsIDUsIDI0MSwgMjIwLCAxMSwgNSwgMjQxLCAyMTQsIDExLCA1LCAyNDEsIDE4MiwgMTEsIDUsIAorICAgIDI0MSwgMTg0LCAxMSwgNSwgMjQxLCAxODMsIDExLCA1LCAyNDEsIDE4NywgMTEsIDUsIDI0MSwgMTg2LCAxMSwgNSwgMjQxLCAKKyAgICAxOTAsIDExLCA1LCAyNDEsIDE4OCwgMTEsIDUsIDI0MSwgMjA1LCAxMSwgNSwgMjQxLCAyMDgsIDExLCA1LCAyNDEsIDIwNiwgCisgICAgMTEsIDUsIDI0MSwgMTc4LCAxMSwgNSwgMjQxLCAxNzcsIDExLCA1LCAyNDEsIDE4NSwgMTEsIDUsIDI0MSwgMTgxLCAxMSwgCisgICAgNSwgMjQxLCAxNzksIDExLCA1LCAyNDEsIDE4MCwgMTEsIDUsIDIyMCwgNTMsIDExLCA1LCAyMjAsIDUyLCAxMSwgNSwgMjIwLCAKKyAgICA2MCwgMTEsIDUsIDIyMCwgNTUsIDExLCA1LCAyMjAsIDU2LCAxMSwgNSwgMjIwLCA1NywgMTEsIDUsIDIyMCwgNjksIDExLCAKKyAgICA1LCAyMjAsIDY4LCAxMSwgNSwgMjIwLCA3NSwgMTEsIDUsIDIyMCwgNzAsIDExLCA1LCAyMjAsIDQ1LCAxMSwgNSwgMjIwLCAKKyAgICA0NCwgMTEsIDUsIDIyMCwgNTEsIDExLCA1LCAyMjAsIDQ2LCAxMSwgNSwgMjIwLCA2MSwgMTEsIDUsIDIyMCwgNjcsIDExLCAKKyAgICA1LCAyMjAsIDY1LCAxMSwgNSwgMjIwLCAzNywgMTEsIDUsIDIyMCwgMzYsIDExLCA1LCAyMjAsIDQyLCAxMSwgNSwgMjIwLCAKKyAgICA0MCwgMTEsIDUsIDIyMCwgMzgsIDExLCA1LCAyMjAsIDM5LCAxMSwgNSwgMjMzLCAyMTcsIDExLCA1LCAyMzMsIDIxNiwgMTEsIAorICAgIDUsIDIzMywgMjIzLCAxMSwgNSwgMjMzLCAyMTgsIDExLCA1LCAyMzMsIDIyMCwgMTEsIDUsIDIzMywgMjE5LCAxMSwgNSwgCisgICAgMjMzLCAyMjIsIDExLCA1LCAyMzMsIDIyMSwgMTEsIDUsIDIzMywgMjI5LCAxMSwgNSwgMjMzLCAyMjcsIDExLCA1LCAyMzMsIAorICAgIDIzMSwgMTEsIDUsIDIzMywgMjMwLCAxMSwgNSwgMjMzLCAyMTAsIDExLCA1LCAyMzMsIDIxMSwgMTEsIDUsIDIzMywgMjE0LCAKKyAgICAxMSwgNSwgMjMzLCAyMTMsIDExLCA1LCAyMzMsIDIxNSwgMTEsIDUsIDIzMywgMjI0LCAxMSwgNSwgMjMzLCAyMjYsIDExLCAKKyAgICA1LCAyMzMsIDIyNSwgMTEsIDUsIDIzMywgMjA5LCAxMSwgNSwgMjE5LCAxMDIsIDExLCA1LCAyMTksIDEwMCwgMTEsIDUsIAorICAgIDIxOSwgMTUwLCAxMSwgNSwgMjE5LCAxMDUsIDExLCA1LCAyMTksIDEzMiwgMTEsIDUsIDIxOSwgMTQ2LCAxMSwgNSwgMjE5LCAKKyAgICAxNDUsIDExLCA1LCAyMjAsIDExMSwgMTEsIDUsIDE4OCwgMTEsIDUsIDIyMCwgMTI3LCAxMSwgNSwgMjE4LCA4MSwgMTEsIDUsIAorICAgIDIxOCwgODMsIDExLCA1LCAyMTgsIDgyLCAxMSwgNSwgMjE4LCAyMTQsIDExLCA1LCAyMTgsIDE5OSwgMTEsIDUsIDIxOCwgCisgICAgMjQxLCAxMSwgNSwgMjE4LCAyMjUsIDExLCA1LCAyMjAsIDMsIDExLCA1LCAyMjAsIDM0LCAxMSwgNSwgMjIwLCAxOSwgMTEsIAorICAgIDUsIDIxOCwgNzYsIDExLCA1LCAyMTgsIDcyLCAxMSwgNSwgMjE4LCAxMzMsIDExLCA1LCAyMTgsIDgwLCAxMSwgNSwgMjE4LCAKKyAgICA3OCwgMTEsIDUsIDIxOCwgNzksIDExLCA1LCAyMzQsIDI2LCAxMSwgNSwgMjM0LCAyNSwgMTEsIDUsIDIzNCwgMzEsIDExLCAKKyAgICA1LCAyMzQsIDI3LCAxMSwgNSwgMjM0LCAyOCwgMTEsIDUsIDIzNCwgMzAsIDExLCA1LCAyMzQsIDI5LCAxMSwgNSwgMjM0LCAKKyAgICAzNywgMTEsIDUsIDIzNCwgMzUsIDExLCA1LCAyMzQsIDM5LCAxMSwgNSwgMjM0LCAzOCwgMTEsIDUsIDIzNCwgMTgsIDExLCAKKyAgICA1LCAyMzQsIDIwLCAxMSwgNSwgMjM0LCAxOSwgMTEsIDUsIDIzNCwgMjIsIDExLCA1LCAyMzQsIDI0LCAxMSwgNSwgMjM0LCAKKyAgICAyMywgMTEsIDUsIDIzNCwgMzIsIDExLCA1LCAyMzQsIDM0LCAxMSwgNSwgMjM0LCAzMywgMTEsIDUsIDIzNCwgMTQsIDExLCAKKyAgICA1LCAyMzQsIDEzLCAxMSwgNSwgMjM0LCAyMSwgMTEsIDUsIDIzNCwgMTcsIDExLCA1LCAyMzQsIDE1LCAxMSwgNSwgMjM0LCAKKyAgICAxNiwgMTEsIDUsIDIzNCwgOCwgMTEsIDUsIDIzNCwgNywgMTEsIDUsIDIzNCwgMTIsIDExLCA1LCAyMzQsIDExLCAxMSwgNSwgCisgICAgMjM0LCA5LCAxMSwgNSwgMjM0LCAxMCwgMTEsIDUsIDIyNCwgMTUyLCAxMSwgNSwgMjI0LCAxNDQsIDExLCA1LCAyMjQsIAorICAgIDIxMCwgMTEsIDUsIDIyNCwgMTYyLCAxMSwgNSwgMjI0LCAyMDEsIDExLCA1LCAyMjQsIDIwMCwgMTEsIDUsIDIyNCwgMjA0LCAKKyAgICAxMSwgNSwgMjI0LCAyMDIsIDExLCA1LCAyMjUsIDYzLCAxMSwgNSwgMjI1LCA1MSwgMTEsIDUsIDE5NCwgMTEsIDUsIDIyNSwgCisgICAgNzQsIDExLCA1LCAyMjQsIDIwLCAxMSwgNSwgMjI0LCAxOSwgMTEsIDUsIDIyNCwgMjIsIDExLCA1LCAyMjQsIDIxLCAxMSwgCisgICAgNSwgMjI0LCA2NSwgMTEsIDUsIDIyNCwgNTEsIDExLCA1LCAyMjQsIDExMCwgMTEsIDUsIDIyNCwgNzEsIDExLCA1LCAyMjQsIAorICAgIDIyNywgMTEsIDUsIDIyNSwgNDAsIDExLCA1LCAyMjQsIDI0NCwgMTEsIDUsIDIyNCwgMTQsIDExLCA1LCAyMjQsIDEyLCAxMSwgCisgICAgNSwgMjI0LCA0MiwgMTEsIDUsIDIyNCwgMTgsIDExLCA1LCAyMjQsIDE2LCAxMSwgNSwgMjI0LCAxNywgMTEsIDUsIDIyMywgCisgICAgMjQ4LCAxMSwgNSwgMjIzLCAyNDcsIDExLCA1LCAyMjQsIDIsIDExLCA1LCAyMjMsIDI1MSwgMTEsIDUsIDIyMywgMjQ5LCAKKyAgICAxMSwgNSwgMjIzLCAyNTAsIDExLCA1LCAyMzUsIDEzNCwgMTEsIDUsIDIzNSwgMTMzLCAxMSwgNSwgMjM1LCAxNjEsIDExLCAKKyAgICA1LCAyMzUsIDE0NSwgMTEsIDUsIDIzNSwgMTUzLCAxMSwgNSwgMjM1LCAxNTIsIDExLCA1LCAyMzUsIDE1NSwgMTEsIDUsIAorICAgIDIzNSwgMTU0LCAxMSwgNSwgMjM2LCA0MiwgMTEsIDUsIDIzNiwgMzcsIDExLCA1LCAyMzYsIDg5LCAxMSwgNSwgMjM2LCA1MiwgCisgICAgMTEsIDUsIDIzNSwgMjUsIDExLCA1LCAyMzUsIDI0LCAxMSwgNSwgMjM1LCAyNywgMTEsIDUsIDIzNSwgMjYsIDExLCA1LCAKKyAgICAyMzUsIDk0LCAxMSwgNSwgMjM1LCA5MiwgMTEsIDUsIDIzNSwgMTE2LCAxMSwgNSwgMjM1LCAxMDMsIDExLCA1LCAyMzUsIAorICAgIDIzOSwgMTEsIDUsIDIzNSwgMjM3LCAxMSwgNSwgMjM2LCAxNSwgMTEsIDUsIDIzNSwgMjUwLCAxMSwgNSwgMjM1LCAxNCwgCisgICAgMTEsIDUsIDIzNSwgMTMsIDExLCA1LCAyMzUsIDUwLCAxMSwgNSwgMjM1LCAyMywgMTEsIDUsIDIzNSwgMTUsIDExLCA1LCAKKyAgICAyMzUsIDIyLCAxMSwgNSwgMjI2LCAxMjcsIDExLCA1LCAyMjYsIDEyMywgMTEsIDUsIDIyNiwgMTYzLCAxMSwgNSwgMjI2LCAKKyAgICAxNDEsIDExLCA1LCAyMjYsIDE1MiwgMTEsIDUsIDIyNiwgMTU2LCAxMSwgNSwgMjI2LCAxNTQsIDExLCA1LCAyMjcsIDMzLCAKKyAgICAxMSwgNSwgMjI3LCAxNiwgMTEsIDUsIDE2MSwgMTEsIDUsIDIyNywgNjAsIDExLCA1LCAyMjUsIDI0OSwgMTEsIDUsIDIyNSwgCisgICAgMjU0LCAxMSwgNSwgMjI1LCAyNTEsIDExLCA1LCAyMjYsIDU2LCAxMSwgNSwgMjI2LCA1MSwgMTEsIDUsIDIyNiwgODgsIDExLCAKKyAgICA1LCAyMjYsIDYzLCAxMSwgNSwgMjI2LCAyMzMsIDExLCA1LCAyMjYsIDIxNiwgMTEsIDUsIDIyNywgOCwgMTEsIDUsIDIyNiwgCisgICAgMjM3LCAxMSwgNSwgMjI1LCAyMzcsIDExLCA1LCAyMjUsIDIzMywgMTEsIDUsIDIyNiwgMTUsIDExLCA1LCAyMjUsIDI0OCwgCisgICAgMTEsIDUsIDIyNSwgMjQxLCAxMSwgNSwgMjI1LCAyNDUsIDExLCA1LCAyMzUsIDIyMSwgMTEsIDUsIDIzNSwgMjIwLCAxMSwgCisgICAgNSwgMjM1LCAyMjUsIDExLCA1LCAyMzUsIDIyMiwgMTEsIDUsIDIzNSwgMjI0LCAxMSwgNSwgMjM1LCAyMjMsIDExLCA1LCAKKyAgICAyMzUsIDIzMiwgMTEsIDUsIDIzNSwgMjMxLCAxMSwgNSwgMjM1LCAyMzUsIDExLCA1LCAyMzUsIDIzMywgMTEsIDUsIDIzNSwgCisgICAgMjEyLCAxMSwgNSwgMjM1LCAyMTEsIDExLCA1LCAyMzUsIDIxNCwgMTEsIDUsIDIzNSwgMjEzLCAxMSwgNSwgMjM1LCAyMTcsIAorICAgIDExLCA1LCAyMzUsIDIxNiwgMTEsIDUsIDIzNSwgMjE5LCAxMSwgNSwgMjM1LCAyMTgsIDExLCA1LCAyMzUsIDIyNywgMTEsIAorICAgIDUsIDIzNSwgMjI2LCAxMSwgNSwgMjM1LCAyMzAsIDExLCA1LCAyMzUsIDIyOCwgMTEsIDUsIDIzNSwgMjA3LCAxMSwgNSwgCisgICAgMjM1LCAyMDYsIDExLCA1LCAyMzUsIDIxNSwgMTEsIDUsIDIzNSwgMjEwLCAxMSwgNSwgMjM1LCAyMDgsIDExLCA1LCAyMzUsIAorICAgIDIwOSwgMTEsIDUsIDIyMSwgMjMwLCAxMSwgNSwgMjIxLCAyMzEsIDExLCA1LCAyMjEsIDI0OSwgMTEsIDUsIDIyMSwgMjQ4LCAKKyAgICAxMSwgNSwgMjIxLCAyNTEsIDExLCA1LCAyMjEsIDI1MCwgMTEsIDUsIDIyMSwgMjIxLCAxMSwgNSwgMjIxLCAyMjMsIDExLCAKKyAgICA1LCAyMjEsIDIyMiwgMTEsIDUsIDIyMSwgMjI2LCAxMSwgNSwgMjIxLCAyMjUsIDExLCA1LCAyMjEsIDIyOCwgMTEsIDUsIAorICAgIDIyMSwgMjI3LCAxMSwgNSwgMjIxLCAyMzIsIDExLCA1LCAyMjEsIDIzNCwgMTEsIDUsIDIyMSwgMjMzLCAxMSwgNSwgMjIxLCAKKyAgICAyMTcsIDExLCA1LCAyMjEsIDIxNiwgMTEsIDUsIDIyMSwgMjI0LCAxMSwgNSwgMjIxLCAyMjAsIDExLCA1LCAyMjEsIDIxOCwgCisgICAgMTEsIDUsIDIyMSwgMjE5LCAxMSwgNSwgMjMzLCA0NywgMTEsIDUsIDIzMywgNDYsIDExLCA1LCAyMzMsIDUzLCAxMSwgNSwgCisgICAgMjMzLCA0OCwgMTEsIDUsIDIzMywgNTAsIDExLCA1LCAyMzMsIDQ5LCAxMSwgNSwgMjMzLCA1MiwgMTEsIDUsIDIzMywgNTEsIAorICAgIDExLCA1LCAyMzMsIDU4LCAxMSwgNSwgMjMzLCA1NywgMTEsIDUsIDIzMywgNjAsIDExLCA1LCAyMzMsIDU5LCAxMSwgNSwgCisgICAgMjMzLCAzOSwgMTEsIDUsIDIzMywgMzgsIDExLCA1LCAyMzMsIDQxLCAxMSwgNSwgMjMzLCA0MCwgMTEsIDUsIDIzMywgNDMsIAorICAgIDExLCA1LCAyMzMsIDQyLCAxMSwgNSwgMjMzLCA0NSwgMTEsIDUsIDIzMywgNDQsIDExLCA1LCAyMzMsIDU0LCAxMSwgNSwgCisgICAgMjMzLCA1NiwgMTEsIDUsIDIzMywgNTUsIDExLCA1LCAyMTksIDE5OCwgMTEsIDUsIDIxOSwgMjAwLCAxMSwgNSwgMjE5LCAKKyAgICAxOTksIDExLCA1LCAyMTksIDI0MywgMTEsIDUsIDIxOSwgMjQxLCAxMSwgNSwgMjE5LCAyNTMsIDExLCA1LCAyMTksIDI0NiwgCisgICAgMTEsIDUsIDIxOSwgMTYwLCAxMSwgNSwgMjE5LCAxNTksIDExLCA1LCAyMTksIDE2MSwgMTEsIDUsIDIxOSwgMTcwLCAxMSwgCisgICAgNSwgMjE5LCAxNjcsIDExLCA1LCAyMTksIDE3OCwgMTEsIDUsIDIxOSwgMTcyLCAxMSwgNSwgMjE5LCAyMzQsIDExLCA1LCAKKyAgICAyMTksIDI0MCwgMTEsIDUsIDIxOSwgMjM2LCAxMSwgNSwgMjM0LCA0NSwgMTEsIDUsIDIzNCwgNjAsIDExLCA1LCAyMzQsIAorICAgIDY5LCAxMSwgNSwgMjM0LCAxNTcsIDExLCA1LCAyMzQsIDE0NiwgMTEsIDUsIDE0NCwgMTEsIDUsIDIzNCwgMTY4LCAxMSwgNSwgCisgICAgMjMzLCA3NiwgMTEsIDUsIDIzMywgNzUsIDExLCA1LCAyMzMsIDc4LCAxMSwgNSwgMjMzLCA3NywgMTEsIDUsIDIzMywgMTE3LCAKKyAgICAxMSwgNSwgMjMzLCAxMDgsIDExLCA1LCAyMzMsIDIwNywgMTEsIDUsIDIzMywgMTgwLCAxMSwgNSwgMjM0LCA5MCwgMTEsIDUsIAorICAgIDIzNCwgMTM5LCAxMSwgNSwgMjM0LCAxMDIsIDExLCA1LCAyMDEsIDg1LCAxMSwgNSwgMjAxLCA3MCwgMTEsIDUsIDIwMSwgCisgICAgMTE0LCAxMSwgNSwgMjAxLCA5NiwgMTEsIDUsIDIwMCwgMjA1LCAxMSwgNSwgMjAwLCAyMDcsIDExLCA1LCAyMDAsIDIwNiwgCisgICAgMTEsIDUsIDIwMCwgMjI5LCAxMSwgNSwgMjAxLCAwLCAxMSwgNSwgMjAwLCAyMzksIDExLCA1LCAyMDEsIDQzLCAxMSwgNSwgCisgICAgMjAxLCA2NCwgMTEsIDUsIDIwMSwgNDksIDExLCA1LCAxOTksIDIxLCAxMSwgNSwgMTk5LCAyMCwgMTEsIDUsIDE5OSwgMzYsIAorICAgIDExLCA1LCAxOTksIDI0LCAxMSwgNSwgMTk5LCAyOSwgMTEsIDUsIDE5OSwgMzEsIDExLCA1LCAxOTksIDMwLCAxMSwgNSwgCisgICAgMTk5LCA5NywgMTEsIDUsIDE5OSwgOTQsIDExLCA1LCAxOTksIDExNCwgMTEsIDUsIDE5OSwgMTAxLCAxMSwgNSwgMTk4LCAKKyAgICAyNTIsIDExLCA1LCAxOTgsIDI1NCwgMTEsIDUsIDE5OCwgMjUzLCAxMSwgNSwgMTk5LCAxMCwgMTEsIDUsIDE5OSwgOSwgMTEsIAorICAgIDUsIDE5OSwgMTQsIDExLCA1LCAxOTksIDExLCAxMSwgNSwgMTk5LCA3OSwgMTEsIDUsIDE5OSwgODksIDExLCA1LCAxOTksIAorICAgIDgzLCAxMSwgNSwgMTk4LCAyNDgsIDExLCA1LCAxOTgsIDI0NywgMTEsIDUsIDE5OSwgMywgMTEsIDUsIDE5OCwgMjUxLCAxMSwgCisgICAgNSwgMTk4LCAyNDksIDExLCA1LCAxOTgsIDI1MCwgMTEsIDUsIDE5OCwgMjM0LCAxMSwgNSwgMTk4LCAyMzMsIDExLCA1LCAKKyAgICAxOTgsIDIzOSwgMTEsIDUsIDE5OCwgMjM3LCAxMSwgNSwgMTk4LCAyMzUsIDExLCA1LCAxOTgsIDIzNiwgMTEsIDUsIDI0NiwgCisgICAgMTQ0LCAxMSwgNSwgMjQ2LCAxMzcsIDExLCA1LCAyNDYsIDE3MywgMTEsIDUsIDI0NiwgMTU3LCAxMSwgNSwgMjQ2LCAxNzAsIAorICAgIDExLCA1LCAyNDYsIDE2NCwgMTEsIDUsIDI0NiwgMTcyLCAxMSwgNSwgMjQ2LCAxNzEsIDExLCA1LCAyNDcsIDExMSwgMTEsIAorICAgIDUsIDI0NywgMTAzLCAxMSwgNSwgMjQ3LCAxOTAsIDExLCA1LCAyNDcsIDE0NCwgMTEsIDUsIDI0MiwgMjA0LCAxMSwgNSwgCisgICAgMjQyLCAyMDYsIDExLCA1LCAyNDIsIDIwNSwgMTEsIDUsIDI0MywgOCwgMTEsIDUsIDI0MiwgMjUzLCAxMSwgNSwgMjQ2LCAKKyAgICA5MSwgMTEsIDUsIDI0MywgMjUsIDExLCA1LCAyNDcsIDQwLCAxMSwgNSwgMjQ3LCA3NiwgMTEsIDUsIDI0NywgNDUsIDExLCAKKyAgICA1LCAyNDIsIDE3OSwgMTEsIDUsIDI0MiwgMTc3LCAxMSwgNSwgMjQyLCAyMTQsIDExLCA1LCAyNDIsIDIwMiwgMTEsIDUsIAorICAgIDI0MiwgMTg1LCAxMSwgNSwgMjQyLCAxOTksIDExLCA1LCAyNDIsIDE1NiwgMTEsIDUsIDI0MiwgMTU1LCAxMSwgNSwgMjQyLCAKKyAgICAxNjgsIDExLCA1LCAyNDIsIDE2MiwgMTEsIDUsIDI0MiwgMTU3LCAxMSwgNSwgMjQyLCAxNTksIDExLCA1LCAxOTgsIDIxNywgCisgICAgMTEsIDUsIDE5OCwgMjE2LCAxMSwgNSwgMTk4LCAyMjMsIDExLCA1LCAxOTgsIDIxOCwgMTEsIDUsIDE5OCwgMjIwLCAxMSwgCisgICAgNSwgMTk4LCAyMTksIDExLCA1LCAxOTgsIDIyMiwgMTEsIDUsIDE5OCwgMjIxLCAxMSwgNSwgMTk4LCAyMjksIDExLCA1LCAKKyAgICAxOTgsIDIyOCwgMTEsIDUsIDE5OCwgMjMyLCAxMSwgNSwgMTk4LCAyMzAsIDExLCA1LCAxOTgsIDIxMywgMTEsIDUsIDE5OCwgCisgICAgMjE1LCAxMSwgNSwgMTk4LCAyMTQsIDExLCA1LCAxOTgsIDIyNCwgMTEsIDUsIDE5OCwgMjI3LCAxMSwgNSwgMTk4LCAyMjUsIAorICAgIDExLCA1LCAxOTgsIDIwNiwgMTEsIDUsIDE5OCwgMjEwLCAxMSwgNSwgMTk4LCAyMDksIDExLCA1LCAxOTgsIDIwNywgMTEsIAorICAgIDUsIDE5OCwgMjA4LCAxMSwgNSwgMTk4LCAyMDAsIDExLCA1LCAxOTgsIDE5OSwgMTEsIDUsIDE5OCwgMjA1LCAxMSwgNSwgCisgICAgMTk4LCAyMDMsIDExLCA1LCAxOTgsIDIwMSwgMTEsIDUsIDE5OCwgMjAyLCAxMSwgNSwgMjE3LCAyNTAsIDExLCA1LCAyMTcsIAorICAgIDI0OSwgMTEsIDUsIDIxNywgMjU1LCAxMSwgNSwgMjE3LCAyNTEsIDExLCA1LCAyMTcsIDI1MiwgMTEsIDUsIDIxNywgMjU0LCAKKyAgICAxMSwgNSwgMjE3LCAyNTMsIDExLCA1LCAyMTgsIDQsIDExLCA1LCAyMTgsIDMsIDExLCA1LCAyMTgsIDcsIDExLCA1LCAyMTgsIAorICAgIDYsIDExLCA1LCAyMTcsIDI0MywgMTEsIDUsIDIxNywgMjQ0LCAxMSwgNSwgMjE3LCAyNDcsIDExLCA1LCAyMTcsIDI0OCwgCisgICAgMTEsIDUsIDIxOCwgMCwgMTEsIDUsIDIxOCwgMiwgMTEsIDUsIDIxNywgMjM4LCAxMSwgNSwgMjE3LCAyNDYsIDExLCA1LCAKKyAgICAyMTcsIDI0MiwgMTEsIDUsIDIxNywgMjM5LCAxMSwgNSwgMjE3LCAyNDAsIDExLCA1LCAyMTcsIDIzMywgMTEsIDUsIDIxNywgCisgICAgMjMyLCAxMSwgNSwgMjE3LCAyMzcsIDExLCA1LCAyMTcsIDIzNiwgMTEsIDUsIDIxNywgMjM0LCAxMSwgNSwgMjE3LCAyMzUsIAorICAgIDExLCA1LCAyMDksIDEwOCwgMTEsIDUsIDE4NywgMTEsIDUsIDIwOSwgMTgyLCAxMSwgNSwgMjA5LCAxMTEsIDExLCA1LCAKKyAgICAyMDksIDE2OSwgMTEsIDUsIDIwOSwgMTcyLCAxMSwgNSwgMjA5LCAxNzAsIDExLCA1LCAyMTEsIDI1MSwgMTEsIDUsIDIxMSwgCisgICAgMjM3LCAxMSwgNSwgMjEyLCA2NCwgMTEsIDUsIDIxMiwgMywgMTEsIDUsIDIwNywgMjE4LCAxMSwgNSwgMjA3LCAyMjAsIDExLCAKKyAgICA1LCAyMDcsIDIxOSwgMTEsIDUsIDIwOSwgNCwgMTEsIDUsIDIwOCwgMjQ5LCAxMSwgNSwgMjA5LCAyOSwgMTEsIDUsIDIwOSwgCisgICAgOCwgMTEsIDUsIDIxMCwgMTI3LCAxMSwgNSwgMjExLCAyMDIsIDExLCA1LCAyMTAsIDE1NiwgMTEsIDUsIDIwNywgMTk1LCAKKyAgICAxMSwgNSwgMjA3LCAxOTIsIDExLCA1LCAyMDgsIDI0LCAxMSwgNSwgMjA3LCAyMTcsIDExLCA1LCAyMDcsIDE5OSwgMTEsIDUsIAorICAgIDIwNywgMjA3LCAxMSwgNSwgMjA3LCA5NywgMTEsIDUsIDIwNywgOTYsIDExLCA1LCAyMDcsIDE2NSwgMTEsIDUsIDIwNywgCisgICAgMTA1LCAxMSwgNSwgMjA3LCA5OSwgMTEsIDUsIDIwNywgMTA0LCAxMSwgNSwgMjA4LCAxNDEsIDExLCA1LCAyMDgsIDE0MCwgCisgICAgMTEsIDUsIDIwOCwgMTQ3LCAxMSwgNSwgMjA4LCAxNDIsIDExLCA1LCAyMDgsIDE0NCwgMTEsIDUsIDIwOCwgMTQ2LCAxMSwgCisgICAgNSwgMjA4LCAxNDUsIDExLCA1LCAyMDgsIDE1NiwgMTEsIDUsIDIwOCwgMTU0LCAxMSwgNSwgMjA4LCAxNzksIDExLCA1LCAKKyAgICAyMDgsIDE1NywgMTEsIDUsIDIwOCwgMTM2LCAxMSwgNSwgMjA4LCAxMzUsIDExLCA1LCAyMDgsIDEzOSwgMTEsIDUsIDIwOCwgCisgICAgMTM3LCAxMSwgNSwgMjA4LCAxNTAsIDExLCA1LCAyMDgsIDE1MywgMTEsIDUsIDIwOCwgMTUxLCAxMSwgNSwgMjA4LCAxMzIsIAorICAgIDExLCA1LCAyMDgsIDEzMCwgMTEsIDUsIDIwOCwgMTM0LCAxMSwgNSwgMjA4LCAxMzMsIDExLCA1LCAyMDgsIDEyNSwgMTEsIAorICAgIDUsIDIwOCwgMTI0LCAxMSwgNSwgMjA4LCAxMjksIDExLCA1LCAyMDgsIDEyOCwgMTEsIDUsIDIwOCwgMTI2LCAxMSwgNSwgCisgICAgMjA4LCAxMjcsIDExLCA1LCAxOTksIDcyLCAxMSwgNSwgMTk5LCA3MSwgMTEsIDUsIDE5OSwgNzcsIDExLCA1LCAxOTksIDc0LCAKKyAgICAxMSwgNSwgMTk5LCA1MSwgMTEsIDUsIDE5OSwgNTMsIDExLCA1LCAxOTksIDUyLCAxMSwgNSwgMTk5LCA1NiwgMTEsIDUsIAorICAgIDE5OSwgNTUsIDExLCA1LCAxOTksIDYwLCAxMSwgNSwgMTk5LCA1NywgMTEsIDUsIDE5OSwgNjUsIDExLCA1LCAxOTksIDY0LCAKKyAgICAxMSwgNSwgMTk5LCA2OCwgMTEsIDUsIDE5OSwgNjYsIDExLCA1LCAxOTksIDQ3LCAxMSwgNSwgMTk5LCA0NiwgMTEsIDUsIAorICAgIDE5OSwgNTQsIDExLCA1LCAxOTksIDUwLCAxMSwgNSwgMTk5LCA0OCwgMTEsIDUsIDE5OSwgNDksIDExLCA1LCAxOTksIDM5LCAKKyAgICAxMSwgNSwgMTk5LCAzOCwgMTEsIDUsIDE5OSwgNDMsIDExLCA1LCAxOTksIDQyLCAxMSwgNSwgMTk5LCA0MCwgMTEsIDUsIAorICAgIDE5OSwgNDEsIDExLCA1LCAyNDcsIDE0LCAxMSwgNSwgMjQ3LCAxMCwgMTEsIDUsIDI0NywgMzcsIDExLCA1LCAyNDcsIDIzLCAKKyAgICAxMSwgNSwgMjQ2LCAxODgsIDExLCA1LCAyNDYsIDE4NywgMTEsIDUsIDI0NiwgMTkwLCAxMSwgNSwgMjQ2LCAxODksIDExLCAKKyAgICA1LCAyNDYsIDIwMywgMTEsIDUsIDI0NiwgMjAyLCAxMSwgNSwgMjQ2LCAyMTAsIDExLCA1LCAyNDYsIDIwNSwgMTEsIDUsIAorICAgIDI0NiwgMjQxLCAxMSwgNSwgMjQ2LCAyMzksIDExLCA1LCAyNDcsIDgsIDExLCA1LCAyNDYsIDI0OSwgMTEsIDUsIDI0NiwgCisgICAgMTgyLCAxMSwgNSwgMjQ2LCAxOTIsIDExLCA1LCAyNDYsIDE4NiwgMTEsIDUsIDI0NiwgMTgzLCAxMSwgNSwgMjQ2LCAxODUsIAorICAgIDExLCA1LCAyNDYsIDE3NSwgMTEsIDUsIDI0NiwgMTc0LCAxMSwgNSwgMjQ2LCAxNzksIDExLCA1LCAyNDYsIDE3OCwgMTEsIAorICAgIDUsIDI0NiwgMTc2LCAxMSwgNSwgMjQ2LCAxNzcsIDExLCA1LCAyMTIsIDIxMSwgMTEsIDUsIDIxMiwgMjE1LCAxMSwgNSwgCisgICAgMjEyLCAxOTMsIDExLCA1LCAyMTIsIDE5NCwgMTEsIDUsIDIxMiwgMTk4LCAxMSwgNSwgMjEyLCAxOTcsIDExLCA1LCAyMTIsIAorICAgIDIwMSwgMTEsIDUsIDIxMiwgMTk5LCAxMSwgNSwgMjEyLCAyMDUsIDExLCA1LCAyMTIsIDIwNCwgMTEsIDUsIDIxMiwgMjEwLCAKKyAgICAxMSwgNSwgMjEyLCAyMDYsIDExLCA1LCAyMTIsIDE4OSwgMTEsIDUsIDIxMiwgMTg3LCAxMSwgNSwgMjEyLCAxOTUsIDExLCAKKyAgICA1LCAyMTIsIDE5MiwgMTEsIDUsIDIxMiwgMTkwLCAxMSwgNSwgMjEyLCAxOTEsIDExLCA1LCAyMTIsIDE4MiwgMTEsIDUsIAorICAgIDIxMiwgMTgxLCAxMSwgNSwgMjEyLCAxODYsIDExLCA1LCAyMTIsIDE4NSwgMTEsIDUsIDIxMiwgMTgzLCAxMSwgNSwgMjEyLCAKKyAgICAxODQsIDExLCA1LCAyMTgsIDE5NCwgMTEsIDUsIDIxOCwgMTkzLCAxMSwgNSwgMjE4LCAxOTYsIDExLCA1LCAyMTgsIDE5NSwgCisgICAgMTEsIDUsIDIxOCwgMTg1LCAxMSwgNSwgMjE4LCAxODcsIDExLCA1LCAyMTgsIDE4NiwgMTEsIDUsIDIxOCwgMTg5LCAxMSwgCisgICAgNSwgMjE4LCAxODgsIDExLCA1LCAyMTgsIDE5MiwgMTEsIDUsIDIxOCwgMTkxLCAxMSwgNSwgMjE4LCAxNzksIDExLCA1LCAKKyAgICAyMTgsIDE3OCwgMTEsIDUsIDIxOCwgMTg0LCAxMSwgNSwgMjE4LCAxODIsIDExLCA1LCAyMTgsIDE4MCwgMTEsIDUsIDIxOCwgCisgICAgMTgxLCAxMSwgNSwgMjE4LCAxNzMsIDExLCA1LCAyMTgsIDE3MiwgMTEsIDUsIDIxOCwgMTc3LCAxMSwgNSwgMjE4LCAxNzYsIAorICAgIDExLCA1LCAyMTgsIDE3NCwgMTEsIDUsIDIxOCwgMTc1LCAxMSwgNSwgMjEwLCA3NSwgMTEsIDUsIDIxMCwgNzAsIDExLCA1LCAKKyAgICAyMTAsIDExNCwgMTEsIDUsIDIxMCwgODcsIDExLCA1LCAyMDksIDIwOSwgMTEsIDUsIDIwOSwgMjExLCAxMSwgNSwgMjA5LCAKKyAgICAyMTAsIDExLCA1LCAyMDksIDIzNCwgMTEsIDUsIDIwOSwgMjMwLCAxMSwgNSwgMjEwLCA4LCAxMSwgNSwgMjA5LCAyNTQsIAorICAgIDExLCA1LCAyMTAsIDQzLCAxMSwgNSwgMjEwLCAzNiwgMTEsIDUsIDIxMCwgNjUsIDExLCA1LCAyMTAsIDUyLCAxMSwgNSwgCisgICAgMjA5LCAyMDUsIDExLCA1LCAyMDksIDIwMiwgMTEsIDUsIDIwOSwgMjIwLCAxMSwgNSwgMjA5LCAyMDgsIDExLCA1LCAyMDksIAorICAgIDIwNiwgMTEsIDUsIDIwOSwgMjA3LCAxMSwgNSwgMjA5LCAxODUsIDExLCA1LCAyMDksIDE4NCwgMTEsIDUsIDIwOSwgMTkxLCAKKyAgICAxMSwgNSwgMjA5LCAxODgsIDExLCA1LCAyMDksIDE4NiwgMTEsIDUsIDIwOSwgMTg3LCAxMSwgNSwgMjEzLCAyMDQsIDExLCAKKyAgICA1LCAyMTMsIDE5OCwgMTEsIDUsIDIxMywgMjUyLCAxMSwgNSwgMjEzLCAyMTAsIDExLCA1LCAyMTIsIDE1MSwgMTEsIDUsIAorICAgIDIxMiwgMTUzLCAxMSwgNSwgMjEyLCAxNTIsIDExLCA1LCAyMTIsIDIyOSwgMTEsIDUsIDIxMiwgMjE3LCAxMSwgNSwgMjEzLCAKKyAgICAxLCAxMSwgNSwgMjEyLCAyMzMsIDExLCA1LCAyMTMsIDk4LCAxMSwgNSwgMjEzLCAxOTAsIDExLCA1LCAyMTMsIDEzNywgMTEsIAorICAgIDUsIDIxMiwgMTQ0LCAxMSwgNSwgMjEyLCAxNDEsIDExLCA1LCAyMTIsIDE3NSwgMTEsIDUsIDIxMiwgMTUwLCAxMSwgNSwgCisgICAgMjEyLCAxNDYsIDExLCA1LCAyMTIsIDE0NywgMTEsIDUsIDIxMiwgMTI2LCAxMSwgNSwgMjEyLCAxMjUsIDExLCA1LCAyMTIsIAorICAgIDEzMSwgMTEsIDUsIDIxMiwgMTI5LCAxMSwgNSwgMjEyLCAxMjcsIDExLCA1LCAyMTIsIDEyOCwgMTEsIDUsIDIyNywgMTk2LCAKKyAgICAxMSwgNSwgMjI3LCAxOTUsIDExLCA1LCAyMjcsIDIwNywgMTEsIDUsIDIyNywgMTk3LCAxMSwgNSwgMjI3LCAyMDMsIDExLCAKKyAgICA1LCAyMjcsIDIwMiwgMTEsIDUsIDIyNywgMjA1LCAxMSwgNSwgMjI3LCAyMDQsIDExLCA1LCAyMjcsIDEzNiwgMTEsIDUsIAorICAgIDIyNywgMTM1LCAxMSwgNSwgMjI3LCAxMzgsIDExLCA1LCAyMjcsIDEzNywgMTEsIDUsIDIyNywgMTUzLCAxMSwgNSwgMjI3LCAKKyAgICAxNTEsIDExLCA1LCAyMjcsIDE2NiwgMTEsIDUsIDIyNywgMTU1LCAxMSwgNSwgMjI3LCAxMjksIDExLCA1LCAyMjcsIDEyNywgCisgICAgMTEsIDUsIDIyNywgMTQ3LCAxMSwgNSwgMjI3LCAxMzQsIDExLCA1LCAyMjcsIDEzMSwgMTEsIDUsIDIyNywgMTMyLCAxMSwgCisgICAgNSwgMjI3LCAxMjEsIDExLCA1LCAyMjcsIDEyMCwgMTEsIDUsIDIyNywgMTI1LCAxMSwgNSwgMjI3LCAxMjQsIDExLCA1LCAKKyAgICAyMjcsIDEyMiwgMTEsIDUsIDIyNywgMTIzLCAxMSwgNSwgMjE0LCAxMTMsIDExLCA1LCAyMTQsIDExMSwgMTEsIDUsIDIxNCwgCisgICAgMTIxLCAxMSwgNSwgMjE0LCAxMTQsIDExLCA1LCAyMTQsIDExOCwgMTEsIDUsIDIxNCwgMTE3LCAxMSwgNSwgMjE0LCAxMjAsIAorICAgIDExLCA1LCAyMTQsIDExOSwgMTEsIDUsIDIxNCwgNjQsIDExLCA1LCAyMTQsIDYxLCAxMSwgNSwgMjE0LCA2NiwgMTEsIDUsIAorICAgIDIxNCwgNjUsIDExLCA1LCAyMTQsIDEwMCwgMTEsIDUsIDIxNCwgOTksIDExLCA1LCAyMTQsIDEwOSwgMTEsIDUsIDIxNCwgCisgICAgMTAzLCAxMSwgNSwgMjE0LCA1NiwgMTEsIDUsIDIxNCwgNTIsIDExLCA1LCAyMTQsIDk3LCAxMSwgNSwgMjE0LCA2MCwgMTEsIAorICAgIDUsIDIxNCwgNTgsIDExLCA1LCAyMTQsIDU5LCAxMSwgNSwgMjE0LCAzNiwgMTEsIDUsIDIxNCwgMzQsIDExLCA1LCAyMTQsIAorICAgIDQ2LCAxMSwgNSwgMjE0LCAzOSwgMTEsIDUsIDIxNCwgMzcsIDExLCA1LCAyMTQsIDM4LCAxMSwgNSwgMjI3LCAxODUsIDExLCAKKyAgICA1LCAyMjcsIDE4NCwgMTEsIDUsIDIyNywgMTkxLCAxMSwgNSwgMjI3LCAxODYsIDExLCA1LCAyMjcsIDE4OCwgMTEsIDUsIAorICAgIDIyNywgMTg3LCAxMSwgNSwgMjI3LCAxOTAsIDExLCA1LCAyMjcsIDE4OSwgMTEsIDUsIDIyNywgMTc2LCAxMSwgNSwgMjI3LCAKKyAgICAxNzgsIDExLCA1LCAyMjcsIDE3NywgMTEsIDUsIDIyNywgMTgxLCAxMSwgNSwgMjI3LCAxODAsIDExLCA1LCAyMjcsIDE4MywgCisgICAgMTEsIDUsIDIyNywgMTgyLCAxMSwgNSwgMjI3LCAxNzIsIDExLCA1LCAyMjcsIDE3MSwgMTEsIDUsIDIyNywgMTc5LCAxMSwgCisgICAgNSwgMjI3LCAxNzUsIDExLCA1LCAyMjcsIDE3MywgMTEsIDUsIDIyNywgMTc0LCAxMSwgNSwgMjI3LCAxNjgsIDExLCA1LCAKKyAgICAyMjcsIDE2NywgMTEsIDUsIDIyNywgMTcwLCAxMSwgNSwgMjI3LCAxNjksIDExLCA1LCAyMTksIDc1LCAxMSwgNSwgMjE5LCAKKyAgICA3NCwgMTEsIDUsIDIxOSwgODIsIDExLCA1LCAyMTksIDc2LCAxMSwgNSwgMjE5LCA3OCwgMTEsIDUsIDIxOSwgNzcsIDExLCAKKyAgICA1LCAyMTksIDgxLCAxMSwgNSwgMjE5LCA3OSwgMTEsIDUsIDIxOSwgNjQsIDExLCA1LCAyMTksIDY1LCAxMSwgNSwgMjE5LCAKKyAgICA3MCwgMTEsIDUsIDIxOSwgNjksIDExLCA1LCAyMTksIDczLCAxMSwgNSwgMjE5LCA3MSwgMTEsIDUsIDIxOSwgNTksIDExLCAKKyAgICA1LCAyMTksIDY4LCAxMSwgNSwgMjE5LCA2MywgMTEsIDUsIDIxOSwgNjAsIDExLCA1LCAyMTksIDYxLCAxMSwgNSwgMjE5LCAKKyAgICA1NCwgMTEsIDUsIDIxOSwgNTMsIDExLCA1LCAyMTksIDU4LCAxMSwgNSwgMjE5LCA1NywgMTEsIDUsIDIxOSwgNTUsIDExLCAKKyAgICA1LCAyMTksIDU2LCAxMSwgNSwgMjE4LCAyOSwgMTEsIDUsIDIxOCwgMjgsIDExLCA1LCAyMTgsIDQxLCAxMSwgNSwgMjE4LCAKKyAgICAzMywgMTEsIDUsIDIxOCwgMzgsIDExLCA1LCAyMTgsIDM3LCAxMSwgNSwgMjE4LCA0MCwgMTEsIDUsIDIxOCwgMzksIDExLCAKKyAgICA1LCAyMTgsIDE0LCAxMSwgNSwgMjE4LCAxNiwgMTEsIDUsIDIxOCwgMTUsIDExLCA1LCAyMTgsIDIxLCAxMSwgNSwgMjE4LCAKKyAgICAyMCwgMTEsIDUsIDIxOCwgMjYsIDExLCA1LCAyMTgsIDIyLCAxMSwgNSwgMjE4LCAxMiwgMTEsIDUsIDIxOCwgMTAsIDExLCAKKyAgICA1LCAyMTgsIDE5LCAxMSwgNSwgMjE4LCAxMywgMTEsIDUsIDIwMCwgMTYxLCAxMSwgNSwgMjAwLCAxNjAsIDExLCA1LCAyMDAsIAorICAgIDE2OSwgMTEsIDUsIDIwMCwgMTYzLCAxMSwgNSwgMjAwLCAxNjUsIDExLCA1LCAyMDAsIDE2NCwgMTEsIDUsIDIwMCwgMTY3LCAKKyAgICAxMSwgNSwgMjAwLCAxNjYsIDExLCA1LCAyMDAsIDE0OSwgMTEsIDUsIDIwMCwgMTUwLCAxMSwgNSwgMjAwLCAxNTQsIDExLCAKKyAgICA1LCAyMDAsIDE1MywgMTEsIDUsIDIwMCwgMTU5LCAxMSwgNSwgMjAwLCAxNTcsIDExLCA1LCAyMDAsIDEyNywgMTEsIDUsIAorICAgIDIwMCwgMTI1LCAxMSwgNSwgMjAwLCAxNDAsIDExLCA1LCAyMDAsIDEzMCwgMTEsIDUsIDIwMCwgMTI4LCAxMSwgNSwgMjAwLCAKKyAgICAxMjksIDExLCA1LCAxOTksIDI1MSwgMTEsIDUsIDE5OSwgMjQ5LCAxMSwgNSwgMjAwLCA5LCAxMSwgNSwgMTk5LCAyNTIsIAorICAgIDExLCA1LCAyMDAsIDMsIDExLCA1LCAyMDAsIDIsIDExLCA1LCAyMDAsIDYsIDExLCA1LCAyMDAsIDQsIDExLCA1LCAxOTksIAorICAgIDE4OSwgMTEsIDUsIDE5OSwgMTg4LCAxMSwgNSwgMTk5LCAxOTIsIDExLCA1LCAxOTksIDE5MCwgMTEsIDUsIDE5OSwgMjI1LCAKKyAgICAxMSwgNSwgMTk5LCAyMjEsIDExLCA1LCAxOTksIDI0NSwgMTEsIDUsIDE5OSwgMjI5LCAxMSwgNSwgMTk5LCAxODAsIDExLCAKKyAgICA1LCAxOTksIDE3NiwgMTEsIDUsIDE5OSwgMjExLCAxMSwgNSwgMTk5LCAxODcsIDExLCA1LCAxOTksIDE4MywgMTEsIDUsIAorICAgIDE5OSwgMTg0LCAxMSwgNSwgMTk5LCAxNjAsIDExLCA1LCAxOTksIDE1OSwgMTEsIDUsIDE5OSwgMTY3LCAxMSwgNSwgMTk5LCAKKyAgICAxNjMsIDExLCA1LCAxOTksIDE2MSwgMTEsIDUsIDE5OSwgMTYyLCAxMSwgNDIsIDIxNCwgMTAwLCAxMSwgNDIsIDIyNCwgCisgICAgMjEwLCAxMSwgNDIsIDIyNiwgMTI3LCAxMSwgNDIsIDIxOCwgMzMsIDExLCA0MiwgMjQyLCAxNjIsIDExLCA0MiwgMjA4LCAKKyAgICAxNDcsIDExLCA0MiwgMjM1LCAyMTgsIDExLCA0MiwgMjM1LCAyNTAsIDExLCA0MiwgMjIxLCAyMTEsIDExLCA0MiwgMjMzLCAKKyAgICA0NywgMTEsIDQyLCAyMjMsIDI1MCwgMTEsIDQyLCAyNDksIDE2LCAxMSwgNDIsIDIyMSwgNzksIDExLCA0MiwgMTk5LCAyNDUsIAorICAgIDExLCA0MiwgMjE0LCAxOTIsIDExLCA0MiwgMjMzLCA0MSwgMTEsIDQyLCAyMDYsIDIyNiwgMTEsIDQyLCAyMzYsIDg5LCAxMSwgCisgICAgNDIsIDE5OCwgMjUxLCAxMSwgNDIsIDI0MiwgMTU2LCAxMSwgNDIsIDI0MSwgMTgwLCAxMSwgNDIsIDI0OCwgMywgMTEsIDQyLCAKKyAgICAyMzUsIDIxNCwgMTEsIDQyLCAyMTgsIDIyLCAxMSwgNDIsIDIwNCwgMjE1LCAxMSwgNDIsIDIxNywgNTQsIDExLCA0MiwgCisgICAgMjI3LCAxNzIsIDExLCA0MiwgMTk5LCAxMCwgMTEsIDQyLCAyMTQsIDE3MSwgMTEsIDQyLCAyMzMsIDI0OSwgMTEsIDQyLCAKKyAgICAxOTksIDI1MSwgMTEsIDQyLCAyMDEsIDE2MiwgMTEsIDQyLCAyMDksIDE5MSwgMTEsIDQyLCAyMDMsIDQ4LCAxMSwgNDIsIAorICAgIDE5OSwgMTE0LCAxMSwgNDIsIDIyNywgMTY2LCAxMSwgNDIsIDIxNywgMjQyLCAxMSwgNDIsIDIyNywgMTcwLCAxMSwgNDIsIAorICAgIDIzNSwgOTQsIDExLCA0MiwgMjI3LCAxOTAsIDExLCA0MiwgMjAxLCAwLCAxMSwgNDIsIDIzOSwgMTM3LCAxMSwgNDIsIDIwOSwgCisgICAgMjA3LCAxMSwgNDIsIDIyNCwgMjA0LCAxMSwgNDIsIDI0MiwgMTY4LCAxMSwgNDIsIDI0MiwgMjA1LCAxMSwgNDIsIDI0NiwgCisgICAgMTU3LCAxMSwgNDIsIDIzMywgNDQsIDExLCA0MiwgMjEwLCA3NSwgMTEsIDQyLCAxOTgsIDI1MCwgMTEsIDQyLCAyMDksIAorICAgIDI1NCwgMTEsIDQyLCAyNDcsIDgsIDExLCA0MiwgMTk4LCAyMjAsIDExLCA0MiwgMjIwLCAxMDEsIDExLCA0MiwgMjI3LCA4LCAKKyAgICAyMjQsIDE1MywgMSwgMjQ5LCAxMzYsIDIyNCwgMTUzLCAxLCAxNzIsIDIyNCwgMTUzLCAxLCAyMTUsIDI0NSwgMjI0LCAxNTMsIAorICAgIDEsIDI0MiwgNTgsIDIyNCwgMTUzLCAxLCAyMDcsIDM2LCAyMjQsIDE1MywgMSwgMjA2LCAxMjIsIDIyNCwgMTUzLCAxLCAKKyAgICAyMzYsIDg5LCAyMjQsIDE1MywgMSwgMTYxLCAyMjQsIDE1MywgMSwgMjI2LCAyMDcsIDIyNCwgMTUzLCAxLCAyMjcsIDI0OCwgCisgICAgMjI0LCAxNTMsIDEsIDI0NywgMTkwLCAyMjQsIDE1MywgMSwgMjQ3LCAzNywgMjI0LCAxNTMsIDEsIDIzOSwgOTMsIDIyNCwgCisgICAgMTUzLCAxLCAyMDUsIDMyLCAyMjQsIDE1MywgMSwgMjA1LCAyMiwgMjI0LCAxNTMsIDEsIDE3OCwgMjI0LCAxNTMsIDEsIAorICAgIDE4OCwgMjI0LCAxNTMsIDEsIDE5NCwgMjI0LCAxNTMsIDEsIDIxMiwgNjQsIDIyNCwgMTUzLCAxLCAxOTksIDc3LCAyMjQsIAorICAgIDE1MywgMSwgMTk5LCAxMTQsIDIyNCwgMTUzLCAxLCAyMTksIDI1MywgMjI0LCAxNTMsIDEsIDE0NCwgMjI0LCAxNTMsIDEsIAorICAgIDIwMCwgMTgxLCAyMjQsIDE1MywgMSwgMjM0LCA4NCwgMjI0LCAxNTMsIDEsIDIzNywgMTk1LCAyMjQsIDE1MywgMSwgMjAxLCAKKyAgICAxMTQsIDIyNCwgMTUzLCAxLCAyMTAsIDExNCwgMjI0LCAxNTMsIDEsIDE4MywgMjI0LCAxNTMsIDEsIDIzNSwgMTk5LCAyMjQsIAorICAgIDE1MywgMSwgNjIsIDIyNCwgMTUzLCAxLCAyNTEsIDIyMSwgMjI0LCAxNTMsIDEsIDcyLCAyMjQsIDE1MywgMSwgMjM4LCA2OSwgCisgICAgMjI0LCAxNTMsIDEsIDcwLCAyMjQsIDE1MywgMSwgNzQsIDIyNCwgMTUzLCAxLCA2NiwgMjI0LCAxNTMsIDEsIDIwNCwgMzEsIAorICAgIDIyNCwgMTUzLCAxLCAyMDQsIDI1LCAyMjQsIDE1MywgMSwgMjE3LCAxMjEsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMjIxLCAKKyAgICAyMDYsIDE1LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDE2MiwgMjE1LCAxMDYsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgCisgICAgMjIxLCAyNDIsIDE2NywgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAyMjEsIDI0OCwgMTI0LCAyMjQsIDE1MywgMSwgMTUwLCAKKyAgICAyMjAsIDIyMSwgMTg4LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDIyMSwgMjI3LCAyMTYsIDIyNCwgMTUzLCAyMTQsIDIxMiwgCisgICAgMjQ2LCA3MCwgMjI0LCAxNTMsIDIxNCwgMjEyLCAyMzYsIDE4MywgMjA4LCA3NiwgNTAsIDUsIDIzOCwgMjU1LCA1MCwgNSwgCisgICAgMjM4LCAyNTEsIDUwLCA1LCAyMzQsIDEyMCwgNTAsIDUsIDIwMSwgNTcsIDUwLCA1LCAyMDEsIDU2LCA1MCwgNSwgMjE2LCAKKyAgICA2MSwgNTAsIDUsIDI0OCwgMTk1LCA1MCwgNSwgMjQ4LCAyNTIsIDUwLCA1LCAyMjIsIDEwMiwgNTAsIDUsIDIyNiwgNDUsIAorICAgIDUwLCA1LCAyMjEsIDI0MywgNTAsIDUsIDIzNiwgMjgsIDUwLCA1LCAyMzcsIDE0MCwgNTAsIDUsIDIwMywgNTQsIDUwLCA1LCAKKyAgICAyMDYsIDE5MCwgNTAsIDUsIDIwNiwgMTA0LCA1MCwgNSwgMjQxLCA5MCwgNTAsIDUsIDI0MSwgODcsIDUwLCA1LCAyMjUsIAorICAgIDMyLCA1MCwgNSwgMjEzLCAxNjcsIDUwLCA1LCAyNDEsIDE2MSwgNTAsIDUsIDIyMCwgNjYsIDUwLCA1LCAyMTEsIDE5MCwgCisgICAgNTAsIDUsIDIxMCwgNjMsIDUwLCA1LCAxOTksIDg3LCA1MCwgNSwgMTk5LCA2NywgNTAsIDUsIDI0NywgNjgsIDUwLCA1LCAKKyAgICAyMjcsIDIyNSwgNTAsIDUsIDIxOSwgODksIDUwLCA1LCAyMDAsIDQ4LCA1MCwgNSwgMjI3LCA1LCA1MCwgNSwgMjE5LCAyMjYsIAorICAgIDUwLCA1LCAyMzYsIDcsIDUwLCA1LCAyMjIsIDY0LCA1MCwgNSwgMjIwLCAyOSwgNTAsIDUsIDIxOCwgNDksIDUwLCA1LCA3MCwgCisgICAgNTAsIDUsIDIyOCwgMTE3LCA1MCwgNSwgMjM0LCA3NSwgNTAsIDUsIDIzNCwgNTMsIDUwLCA1LCAyMDEsIDMxLCA1MCwgNSwgCisgICAgMjAxLCAxOCwgNTAsIDUsIDIxNSwgMjA0LCA1MCwgNSwgMjQ4LCAxOTMsIDUwLCA1LCAyNDgsIDE4OCwgNTAsIDUsIDIyMiwgCisgICAgOTUsIDUwLCA1LCAyMjYsIDQyLCA1MCwgNSwgMjIxLCAyNDAsIDUwLCA1LCAyMzYsIDI0LCA1MCwgNSwgMjM3LCAxMTIsIDUwLCAKKyAgICA1LCAyMDIsIDIzNCwgNTAsIDUsIDIwNiwgMTUsIDUwLCA1LCAyMDYsIDg0LCA1MCwgNSwgMjQxLCA4MiwgNTAsIDUsIDI0MSwgCisgICAgODYsIDUwLCA1LCAyMjQsIDIxMCwgNTAsIDUsIDIxMywgODgsIDUwLCA1LCAyNDEsIDc2LCA1MCwgNSwgMjIwLCA2MCwgNTAsIAorICAgIDUsIDIwOSwgMTgyLCA1MCwgNSwgMjEwLCAzMywgNTAsIDUsIDE5OSwgMzYsIDUwLCA1LCAxOTksIDYzLCA1MCwgNSwgMjQ2LCAKKyAgICAxNzMsIDUwLCA1LCAyMjcsIDIwNywgNTAsIDUsIDIxOSwgODIsIDUwLCA1LCAyMDAsIDksIDUwLCA1LCAyMjYsIDE2MywgNTAsIAorICAgIDUsIDIxOSwgMjE4LCA1MCwgNSwgMjM1LCAxNjEsIDUwLCA1LCAyMjEsIDIxMSwgNTAsIDUsIDIxOSwgMTUwLCA1MCwgNSwgCisgICAgMjE4LCA0MSwgNTAsIDUsIDYyLCA1MCwgNSwgMjUxLCA4NSwgNTAsIDUsIDIxOSwgMjQ4LCA1MCwgNSwgMTQ0LCA1MCwgNSwgCisgICAgMjM0LCAyMDIsIDUwLCA1LCAyMDEsIDExNCwgNTAsIDUsIDIwMSwgMTAwLCA1MCwgNSwgMTcyLCA1MCwgNSwgMjQ4LCAyMDAsIAorICAgIDUwLCA1LCAyNDksIDEzNiwgNTAsIDUsIDIyMiwgMTEwLCA1MCwgNSwgMjI2LCA1MCwgNTAsIDUsIDIyNiwgNDgsIDUwLCA1LCAKKyAgICAyMjEsIDI0NywgNTAsIDUsIDIzNiwgMzIsIDUwLCA1LCAyMzcsIDE5NSwgNTAsIDUsIDIwMywgOTAsIDUwLCA1LCAyMDcsIAorICAgIDM2LCA1MCwgNSwgMjA2LCAxMjIsIDUwLCA1LCAyNDEsIDEwMCwgNTAsIDUsIDI0MSwgODksIDUwLCA1LCAxOTQsIDUwLCA1LCAKKyAgICAyMTMsIDI1MiwgNTAsIDUsIDI0MiwgNTgsIDUwLCA1LCAyMjAsIDc1LCA1MCwgNSwgMjEyLCA2NCwgNTAsIDUsIDIxMCwgCisgICAgMTE0LCA1MCwgNSwgMTk5LCAxMTQsIDUwLCA1LCAxOTksIDc3LCA1MCwgNSwgMjQ3LCAxOTAsIDUwLCA1LCAyMjcsIDI0OCwgCisgICAgNTAsIDUsIDIxOSwgOTgsIDUwLCA1LCAxODMsIDUwLCA1LCAxNjEsIDUwLCA1LCAyMjcsIDY4LCA1MCwgNSwgMjE5LCAyMzIsIAorICAgIDUwLCA1LCAyMzYsIDg5LCA1MCwgNSwgMTc4LCA1MCwgNSwgMTg4LCA1MCwgNSwgMjE4LCA2MCwgNTAsIDUsIDIxNywgNjMsIAorICAgIDUwLCA1LCAyMTcsIDU4LCA1MCwgNSwgMjMzLCAxODgsIDUwLCA1LCAyMDAsIDI0NCwgNTAsIDUsIDIwMCwgMjQwLCA1MCwgNSwgCisgICAgMjE1LCA4MSwgNTAsIDUsIDI0OCwgMTkxLCA1MCwgNSwgMjQ4LCAxMTEsIDUwLCA1LCAyMjIsIDkwLCA1MCwgNSwgMjI2LCAKKyAgICA0MCwgNTAsIDUsIDIyMSwgMjM2LCA1MCwgNSwgMjM2LCAyMCwgNTAsIDUsIDIzNywgMiwgNTAsIDUsIDIwMiwgMTc5LCA1MCwgCisgICAgNSwgMjA1LCAxNjEsIDUwLCA1LCAyMDYsIDU2LCA1MCwgNSwgMjQxLCA3OSwgNTAsIDUsIDI0MSwgODQsIDUwLCA1LCAyMjQsIAorICAgIDc4LCA1MCwgNSwgMjEyLCAyMzgsIDUwLCA1LCAyNDAsIDE4NywgNTAsIDUsIDIyMCwgNDcsIDUwLCA1LCAyMDksIDEwLCA1MCwgCisgICAgNSwgMjEwLCAyLCA1MCwgNSwgMTk5LCAxMiwgNTAsIDUsIDE5OSwgNTgsIDUwLCA1LCAyNDMsIDMwLCA1MCwgNSwgMjI3LCAKKyAgICAxNTYsIDUwLCA1LCAyMTksIDcyLCA1MCwgNSwgMTk5LCAyMzAsIDUwLCA1LCAyMjYsIDY4LCA1MCwgNSwgMjE5LCAyMTYsIAorICAgIDUwLCA1LCAyMzUsIDEwNSwgNTAsIDUsIDIyMSwgODcsIDUwLCA1LCAyMTgsIDIyOSwgNTAsIDUsIDIxOCwgMjMsIDUwLCA1LCAKKyAgICA2NiwgNTAsIDUsIDIwNCwgNSwgNTAsIDUsIDIzMywgOTcsIDUwLCA1LCAyMzMsIDg0LCA1MCwgNSwgMjAwLCAyMTYsIDUwLCAKKyAgICA1LCAyMDAsIDIwOSwgNTAsIDUsIDIxNCwgMjI0LCA1MCwgNSwgMjQ4LCAxOTAsIDUwLCA1LCAyNDgsIDM2LCA1MCwgNSwgCisgICAgMjIyLCA4OSwgNTAsIDUsIDIyNiwgMzgsIDUwLCA1LCAyMjEsIDIzNSwgNTAsIDUsIDIzNiwgMTksIDUwLCA1LCAyMzYsIAorICAgIDE4OSwgNTAsIDUsIDIwMSwgMTY2LCA1MCwgNSwgMjA0LCAyMTUsIDUwLCA1LCAyMDYsIDM1LCA1MCwgNSwgMjQxLCA3NywgCisgICAgNTAsIDUsIDI0MSwgODMsIDUwLCA1LCAyMjQsIDQyLCA1MCwgNSwgMjEyLCAxNzUsIDUwLCA1LCAyMzksIDEzNywgNTAsIDUsIAorICAgIDIyMCwgNDIsIDUwLCA1LCAyMDgsIDI0LCA1MCwgNSwgMjA5LCAyMjAsIDUwLCA1LCAxOTksIDMsIDUwLCA1LCAxOTksIDU0LCAKKyAgICA1MCwgNSwgMjQyLCAyMTQsIDUwLCA1LCAyMjcsIDE0NywgNTAsIDUsIDIxOSwgNjgsIDUwLCA1LCAxOTksIDIxMSwgNTAsIDUsIAorICAgIDIyNiwgMTUsIDUwLCA1LCAyMTksIDIxNSwgNTAsIDUsIDIzNSwgNTAsIDUwLCA1LCAyMjEsIDQxLCA1MCwgNSwgMjE4LCAKKyAgICAxMzMsIDUwLCA1LCAyMTgsIDE5LCA1MCwgNSwgNzQsIDUwLCA1LCAyMTcsIDc4LCA1MCwgNSwgMjE5LCAxNzQsIDUwLCA1LCAKKyAgICAyMzMsIDIwNywgNTAsIDUsIDIzMywgMTkxLCA1MCwgNSwgMjAxLCAwLCA1MCwgNSwgMjAwLCAyNDUsIDUwLCA1LCAyMTUsIAorICAgIDEwNiwgNTAsIDUsIDI0OCwgMTkyLCA1MCwgNSwgMjQ4LCAxMjQsIDUwLCA1LCAyMjIsIDkxLCA1MCwgNSwgMjI2LCA0MSwgCisgICAgNTAsIDUsIDIyMSwgMjM4LCA1MCwgNSwgMjM2LCAyMiwgNTAsIDUsIDIzNiwgMjEsIDUwLCA1LCAyMzcsIDEzLCA1MCwgNSwgCisgICAgMjAyLCAxOTMsIDUwLCA1LCAxMzgsIDUwLCA1LCAyMDYsIDYxLCA1MCwgNSwgMjQxLCA4MCwgNTAsIDUsIDI0MSwgODUsIDUwLCAKKyAgICA1LCAyMjQsIDExMCwgNTAsIDUsIDIxMywgMSwgNTAsIDUsIDI0MCwgMjExLCA1MCwgNSwgMjIwLCA1MSwgNTAsIDUsIDIwOSwgCisgICAgMjksIDUwLCA1LCAyMTAsIDgsIDUwLCA1LCAxOTksIDE0LCA1MCwgNSwgMTk5LCA2MCwgNTAsIDUsIDI0NiwgOTEsIDUwLCA1LCAKKyAgICAyMjcsIDE2NiwgNTAsIDUsIDIxOSwgNzMsIDUwLCA1LCAxOTksIDI0NSwgNTAsIDUsIDIyNiwgODgsIDUwLCA1LCAyMTksIAorICAgIDIxNywgNTAsIDUsIDIzNSwgMTE2LCA1MCwgNSwgMjIxLCAxMzYsIDUwLCA1LCAyMTgsIDI0MSwgNTAsIDUsIDIxOCwgMjYsIAorICAgIDUwLCA1LCA3MiwgNTAsIDUsIDIzOCwgMTc5LCA1MCwgNSwgMjE5LCAyMzcsIDUwLCA1LCAyMzQsIDEzOSwgNTAsIDUsIDIzNCwgCisgICAgMTA1LCA1MCwgNSwgMjAxLCA2NCwgNTAsIDUsIDIwMSwgNTEsIDUwLCA1LCAyMTYsIDczLCA1MCwgNSwgMjQ4LCAxOTYsIDUwLCAKKyAgICA1LCAyNDksIDgsIDUwLCA1LCAyMjIsIDEwMywgNTAsIDUsIDIyNiwgNDYsIDUwLCA1LCAyMjYsIDQ0LCA1MCwgNSwgMjIxLCAKKyAgICAyNDQsIDUwLCA1LCAyMzYsIDI5LCA1MCwgNSwgMjM2LCAyNywgNTAsIDUsIDIzNywgMTQ3LCA1MCwgNSwgMjAzLCA1OSwgNTAsIAorICAgIDUsIDIwNiwgMjAxLCA1MCwgNSwgMjA2LCAxMDYsIDUwLCA1LCAyNDEsIDkxLCA1MCwgNSwgMjQxLCA4OCwgNTAsIDUsIDIyNSwgCisgICAgNDAsIDUwLCA1LCAyMTMsIDE5MCwgNTAsIDUsIDI0MSwgMTc1LCA1MCwgNSwgMjIwLCA2NywgNTAsIDUsIDIxMSwgMjAyLCAKKyAgICA1MCwgNSwgMjEwLCA2NSwgNTAsIDUsIDE5OSwgODksIDUwLCA1LCAxOTksIDY4LCA1MCwgNSwgMjQ3LCA3NiwgNTAsIDUsIAorICAgIDIyNywgMjI3LCA1MCwgNSwgMjE5LCA5MSwgNTAsIDUsIDIwMCwgNTEsIDUwLCA1LCAyMjcsIDgsIDUwLCA1LCAyMTksIDIyNywgCisgICAgNTAsIDUsIDIxOSwgMjIzLCA1MCwgNSwgMjM2LCAxNSwgNTAsIDUsIDIzNiwgMSwgNTAsIDUsIDIyMiwgNzYsIDUwLCA1LCAKKyAgICAyMjAsIDM0LCA1MCwgNSwgMjE4LCA1MCwgNTAsIDUsIDIxOSwgMjU1LCA1MCwgNSwgMjI0LCAyNTAsIDUwLCAyNDYsIDcwLCAKKyAgICA1MCwgMjM2LCAxODMsIDIwOCwgNzYsIDUwLCAyMTQsIDc5LCA4MSwgNTAsIDUsIDIyMCwgNTAsIDIzNywgMTk1LCA1MCwgNSwgCisgICAgMjIwLCA1MCwgMTYxLCA1MCwgNSwgMjIwLCA1MCwgMjA5LCAxMCwgNTAsIDE2LCAyMzcsIDEzNiwgNTAsIDE2LCAyMjcsIDMsIAorICAgIDUwLCAxNiwgMjA1LCAyMjgsIDUwLCAxNiwgMjE5LCAxMjUsIDUwLCAxNiwgMjQ5LCA4MywgNTAsIDE2LCAyMzcsIDE5NCwgCisgICAgNTAsIDE2LCAyMDcsIDMyLCA1MCwgMTYsIDI0MiwgOCwgNTAsIDE2LCAyNDAsIDE4NiwgNTAsIDE2LCAyMjUsIDI1NSwgNTAsIAorICAgIDE2LCAyMDUsIDE2NSwgNTAsIDE2LCAyNDAsIDIxMCwgNTAsIDE2LCAyMjcsIDE1NywgNTAsIDE3LCAxOTksIDgxLCA1MCwgCisgICAgMTcsIDEwMiwgNTAsIDE3LCAxMDUsIDUwLCAxNywgMTQ3LCA1MCwgMTcsIDE0OSwgNTAsIDE3LCAxNjQsIDUwLCAxNywgMTg3LCAKKyAgICA1MCwgMTcsIDIxMCwgMTM1LCA1MCwgMTcsIDE5MiwgNTAsIDE3LCAyMTksIDExMywgNTAsIDUsIDIyMCwgNTAsIDE3OCwgNTAsIAorICAgIDUsIDIyMCwgNTAsIDI0MCwgMjExLCAzNywgNiwgMSwgMTk5LCA4NSwgMzcsIDQsIDEsIDE5OSwgODUsIDM3LCA2LCAxLCAKKyAgICAyMzksIDg4LCAzNywgNCwgMSwgMjM5LCA4OCwgMzcsIDYsIDEsIDIxMywgMTA1LCAyMzksIDkwLCAzNywgNCwgMSwgMjEzLCAKKyAgICAxMDUsIDIzOSwgOTAsIDM3LCA2LCAxLCAyMjgsIDQxLCAzNywgNCwgMSwgMjI4LCA0MSwgMzcsIDYsIDEsIDI0MCwgMjI3LCAKKyAgICAzNywgNCwgMSwgMjQwLCAyMjcsIDM3LCA2LCAxLCAyMjEsIDk1LCAyMDQsIDIwLCAzNywgNCwgMSwgMjIxLCA5NSwgMjA0LCAKKyAgICAyMCwgMzcsIDYsIDEsIDI0OCwgNDcsIDIxNywgODMsIDM3LCA0LCAxLCAyNDgsIDQ3LCAyMTcsIDgzLCAzNywgNiwgMSwgCisgICAgMjIwLCAxMCwgMjAwLCAzMywgMzcsIDQsIDEsIDIyMCwgMTAsIDIwMCwgMzMsIDM3LCA2LCAxLCAyMDAsIDMwLCAzLCAyNDksIAorICAgIDEzMCwgMjAwLCAzMywgMzcsIDQsIDEsIDIwMCwgMzAsIDMsIDI0OSwgMTMwLCAyMDAsIDMzLCAzNywgNiwgMSwgMjI4LCAzOSwgCisgICAgMjAwLCA2NSwgMzcsIDQsIDEsIDIyOCwgMzksIDIwMCwgNjUsIDM3LCA2LCAxLCAyMTMsIDEwNSwgMTk5LCAyMTEsIDM3LCA0LCAKKyAgICAxLCAyMTMsIDEwNSwgMTk5LCAyMTEsIDM3LCA2LCAxLCAyMjgsIDM5LCA2MiwgMzcsIDQsIDEsIDIyOCwgMzksIDYyLCAzNywgCisgICAgNiwgMSwgMjQ2LCAxMTAsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIDI0NiwgMTEwLCAyMjQsIDE0OCwgMTk5LCAKKyAgICAxODEsIDM3LCA2LCAxLCAyNDgsIDEzNiwgMTk5LCAxODEsIDM3LCA0LCAxLCAyNDgsIDEzNiwgMTk5LCAxODEsIDM3LCA2LCAKKyAgICAxLCAyMjgsIDM5LCAyNDYsIDExMCwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjI4LCAzOSwgMjQ2LCAxMTAsIAorICAgIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDYsIDEsIDE5OSwgMjQ3LCAzNywgNCwgMSwgMTk5LCAyNDcsIDM3LCA2LCAxLCAKKyAgICAyMTMsIDEwNSwgMjA1LCAyNiwgMzcsIDQsIDEsIDIxMywgMTA1LCAyMDUsIDI2LCAzNywgNiwgMSwgMjA5LCAyMywgMjQxLCAKKyAgICAxNzUsIDM3LCA0LCAxLCAyMDksIDIzLCAyNDEsIDE3NSwgMzcsIDYsIDEsIDIwOSwgMjMsIDIzOCwgMjA5LCAzNywgNCwgMSwgCisgICAgMjA5LCAyMywgMjM4LCAyMDksIDM3LCA2LCAxLCAyMDksIDIzLCAyMzgsIDE5MCwgMzcsIDQsIDEsIDIwOSwgMjMsIDIzOCwgCisgICAgMTkwLCAzNywgNiwgMSwgMjIxLCA5OSwgNzQsIDM3LCA0LCAxLCAyMjEsIDk5LCA3NCwgMzcsIDYsIDEsIDI0OCwgMTY1LCAKKyAgICA3NCwgMzcsIDQsIDEsIDI0OCwgMTY1LCA3NCwgMzcsIDYsIDEsIDUzLCAyMjEsIDk5LCA3NCwgMzcsIDQsIDEsIDUzLCAyMjEsIAorICAgIDk5LCA3NCwgMzcsIDEsIDIyMSwgMjIsIDc0LCAzOCwgMzcsIDIwMSwgMTQ5LCAzOCwgMzcsIDIwNiwgMTY3LCAyMjEsIDE2OCwgCisgICAgNTQsIDM4LCAzNywgMjMzLCA4MywgMjIxLCAxNjgsIDU0LCAzOCwgMzcsIDIwNiwgNTEsIDIyMSwgMTY4LCA1NCwgMjA5LCAKKyAgICA3MywgMjUwLCAxNjUsIDM4LCAzNywgMSwgMjA0LCAxNywgMjI4LCAxNzgsIDM4LCAzNywgMSwgNzAsIDM4LCAzNywgMSwgCisgICAgMjAwLCA5LCAzOCwgMzcsIDEsIDY2LCAzOCwgMzcsIDEsIDIzNCwgMTY1LCA1NCwgMzgsIDM3LCAxLCAyMDAsIDI5LCAzOCwgCisgICAgMzcsIDEsIDIwOSwgMjMsIDU0LCAzOCwgMzcsIDEsIDIxNywgODMsIDM4LCAzNywgMjI3LCAyMCwgMzgsIDM3LCAyMTYsIDgwLCAKKyAgICAzNywgMjI3LCAyMCwgMzcsIDIxNiwgODAsIDM3LCA2LCAxLCAyMzksIDEwMywgMzcsIDQsIDEsIDIzOSwgMTAzLCAzNywgNiwgCisgICAgMSwgMjM5LCA3OSwgMzcsIDQsIDEsIDIzOSwgNzksIDM3LCA2LCAxLCAxOTksIDQ0LCAzNywgNCwgMSwgMTk5LCA0NCwgMzcsIAorICAgIDYsIDEsIDI0NywgOTIsIDM3LCA0LCAxLCAyNDcsIDkyLCAzNywgNiwgMSwgMjM5LCA3NiwgMzcsIDQsIDEsIDIzOSwgNzYsIAorICAgIDM3LCA2LCAxLCAyMDYsIDIwMiwgMywgMTAxLCAxMTcsIDM3LCA0LCAxLCAyMDYsIDIwMiwgMywgMTAxLCAxMTcsIDM3LCA2LCAKKyAgICAxLCAyMDQsIDE2OCwgMzcsIDQsIDEsIDIwNCwgMTY4LCAzNywgNiwgMSwgMjA1LCAxLCAzNywgNCwgMSwgMjA1LCAxLCAzNywgCisgICAgNiwgMSwgMjA1LCA2LCAzNywgNCwgMSwgMjA1LCA2LCAzNywgNiwgMSwgMjA2LCAyMDcsIDM3LCA0LCAxLCAyMDYsIDIwNywgCisgICAgMzcsIDYsIDEsIDIzMywgNjUsIDM3LCA0LCAxLCAyMzMsIDY1LCAzNywgNiwgMSwgMjA5LCAxOTcsIDM3LCA0LCAxLCAyMDksIAorICAgIDE5NywgMzcsIDYsIDEsIDUzLCA3NCwgMzcsIDQsIDEsIDUzLCA3NCwgMzcsIDYsIDEsIDI0MiwgMjMyLCA3NCwgMzcsIDQsIAorICAgIDEsIDI0MiwgMjMyLCA3NCwgNjcsIDEsIDM3LCAyMzQsIDE2NSwgNTQsIDY3LCAxLCAzNywgMjA5LCAyMywgNTQsIDM4LCAzNywgCisgICAgMSwgMjM4LCAyNDgsIDM4LCAzNywgMSwgMjI4LCAzOSwgNzIsIDI1LCAxLCA2MiwgMjUsIDEsIDE2MSwgMjUsIDEsIDY2LCAKKyAgICAyNSwgMSwgMjI2LCAxNSwgMjUsIDEsIDIzOCwgMjU1LCAyNSwgMSwgMjEzLCAxNjcsIDI1LCAxLCAyMDcsIDE1LCAyNSwgMSwgCisgICAgNzQsIDI1LCAxLCAyMTgsIDQxLCAyNSwgMSwgNzAsIDI1LCAxLCAxOTQsIDI1LCAxLCAxNzIsIDI1LCAxLCAyMTMsIDMzLCAKKyAgICAyNSwgMSwgMjEzLCA4MSwgMjUsIDEsIDIyNSwgMzEsIDI1LCAxLCAyMjIsIDYzLCAyNSwgMSwgMjA3LCAzMiwgMjUsIDEsIAorICAgIDIyMCwgNzMsIDI1LCAxLCAyMTksIDk2LCAyNSwgMSwgMjIzLCAyNDMsIDI1LCAxLCAyMDcsIDE5MywgMjUsIDEsIDIyMSwgCisgICAgNDEsIDI1LCAxLCAyMTAsIDI4LCAyNSwgMSwgMjA5LCAxODIsIDI1LCAxLCAyMTAsIDM4LCAyNSwgMSwgMjEwLCAxMzcsIDI1LCAKKyAgICAxLCAyMjUsIDE5OSwgMjUsIDEsIDIyNiwgMjMzLCAyNSwgMSwgMjE4LCAxMDQsIDI1LCAxLCAyMTgsIDEzMywgMjUsIDEsIAorICAgIDIxOSwgNjcsIDI1LCAxLCAxOTksIDIyNywgMjUsIDEsIDIwOSwgMjIwLCAyNSwgMSwgMTk5LCAxODUsIDI1LCAxLCAxODMsIAorICAgIDI1LCAxLCAyMTgsIDE2NywgMjUsIDEsIDIyNiwgMjE5LCAyNSwgMSwgMjE1LCAyNDksIDI1LCAxLCAyMTksIDg5LCAyNSwgMSwgCisgICAgMjE4LCAxNDgsIDI1LCAxLCAyMTQsIDIxNiwgMjUsIDEsIDIwMCwgMjEzLCAyNSwgMSwgMjE2LCA2MSwgMjUsIDEsIDIzNywgCisgICAgMTQwLCAyNSwgMSwgMjEyLCAxNzUsIDI1LCAxLCAyMjQsIDQyLCAyNSwgMSwgMjIxLCAyMTEsIDI1LCAxLCAyMTksIDE1MCwgCisgICAgMjUsIDEsIDIxMywgMTA3LCAyNSwgMSwgMjEzLCAyMzQsIDI1LCAxLCAyMjYsIDI0MywgMjUsIDEsIDIxOSwgMTgxLCAyNSwgCisgICAgMSwgMjE5LCAyMzIsIDI1LCAxLCAyMTksIDI1MywgMjUsIDEsIDIxMCwgOCwgMjUsIDEsIDIxNCwgMjIxLCAyNSwgMSwgMjM2LCAKKyAgICAxODksIDI1LCAxLCAyMzcsIDYsIDI1LCAxLCAyMDEsIDExNCwgMjUsIDEsIDE4OCwgMjUsIDEsIDIyNCwgMjEwLCAyNSwgMSwgCisgICAgMjE1LCAyMDQsIDI1LCAxLCAyMjQsIDcwLCAyNSwgMSwgMjI2LCA4OCwgMjUsIDEsIDIyMiwgMTAwLCAyNSwgMSwgMjEzLCAKKyAgICAxMzksIDI1LCAxLCAyMjIsIDQwLCAyNSwgMSwgMTc4LCAyNSwgMSwgMjA2LCAxNSwgMjUsIDEsIDIyNiwgMTYzLCAyNSwgMSwgCisgICAgMjIxLCAxMzYsIDI1LCAxLCAyMjIsIDEwOCwgMjUsIDEsIDIwNiwgMTQ2LCAyNSwgMSwgMjI2LCA1MCwgMjUsIDEsIDIwNiwgCisgICAgMTY2LCAyNSwgMSwgMjE4LCAxMzUsIDI1LCAxLCAyMTIsIDIxLCAyNSwgMSwgMjM3LCAxOTEsIDI1LCAxLCAyMjYsIDUyLCAKKyAgICAyNSwgMSwgMjI2LCA4MywgMjUsIDM4LCAxMzQsIDIyNiwgNjEsIDI1LCAzOCwgMTM0LCAyMDQsIDIwNiwgMjUsIDIxOSwgOTUsIAorICAgIDI1LCAyMzYsIDE4MywgMjA4LCA3NiwgMjUsIDI0NiwgNzksIDI1LCAyNDYsIDcwLCAyNSwgMjEwLCAxNjcsIDI1LCAyMTQsIAorICAgIDc5LCA4MSwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTUsIDE1NiwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIAorICAgIDIwMCwgNzYsIDIxNSwgMTU2LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxMCwgODgsIDY3LCAxLCAyNDYsIAorICAgIDIyMiwgMTUwLCAyMDAsIDc2LCAyMTAsIDg4LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxNCwgOTcsIDY3LCAKKyAgICAxLCAyNDYsIDIyMiwgMTUwLCAyMDAsIDc2LCAyMTQsIDk3LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxMiwgCisgICAgMTc1LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMjAwLCA3NiwgMjEyLCAxNzUsIDY3LCAxLCAyMzgsIDI5LCAyMzksIDE4MCwgCisgICAgMTUwLCAxNDgsIDY3LCAxLCAxMjIsIDIzOSwgMTgwLCAxNTAsIDE0OCwgNjcsIDEsIDIyMSwgMjA2LCAyMzksIDE4MCwgMTUwLCAKKyAgICAxNDgsIDY3LCAxLCAxMjgsIDIzOSwgMTgwLCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgMjgsIDIzOSwgMTgwLCAxNTAsIDE0OCwgCisgICAgNjcsIDEsIDIzOCwgMjksIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyMiwgMjM5LCAxODAsIDIyNSwgCisgICAgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMjIxLCAyMDYsIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyOCwgCisgICAgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAyOCwgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCAKKyAgICA2NywgMSwgMjM4LCAyOSwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjIsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgCisgICAgMjIxLCAyMDYsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTI4LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgCisgICAgMjgsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgNzMsIDgzLCAxNDgsIDY3LCAxLCA3MywgMjA5LCA3NSwgNjcsIDEsIDczLCAKKyAgICAyMzMsIDE3NywgMTQ4LCA2NywgMSwgMjI0LCA1NCwgNTEsIDI0MywgMTYsIDI1MSwgNzAsIDY3LCAxLCAyMTMsIDIyMCwgCisgICAgMTE1LCA0OCwgNjcsIDEsIDIxMywgMjIwLCAxMjcsIDQ4LCA2NywgMSwgMjEzLCAyMjAsIDIzOCwgNDMsIDgxLCA2NywgMSwgCisgICAgMjEzLCAyMjAsIDIyOCwgNTAsIDIzOCwgNDMsIDgxLCA2NywgMSwgMTI4LCAyMjgsIDUwLCAyMzgsIDQzLCA4MSwgNjcsIDEsIAorICAgIDIwOCwgNTcsIDI2LCAxMjIsIDIwNSwgMTc0LCA2NywgMSwgMjA4LCA1NywgMjYsIDEyOCwgMjA1LCAxNzQsIDgsIDYsIDEsIAorICAgIDIzOCwgMjQzLCAyNTEsIDE0MiwgOCwgNCwgMSwgMjM4LCAyNDMsIDI1MSwgMTQyLCA4LCA2LCAxLCAyMzgsIDI0MywgMjUxLCAKKyAgICAxNzEsIDgsIDQsIDEsIDIzOCwgMjQzLCAyNTEsIDE3MSwgOCwgNiwgMSwgMjM0LCAxMDMsIDgsIDQsIDEsIDIzNCwgMTAzLCAKKyAgICA4LCA2LCAxLCAyMDQsIDExNCwgOCwgNCwgMSwgMjA0LCAxMTQsIDgsIDYsIDEsIDIwNSwgMTAyLCA4LCA0LCAxLCAyMDUsIAorICAgIDEwMiwgOCwgNiwgMSwgMjQyLCAyMTEsIDgsIDQsIDEsIDI0MiwgMjExLCA4LCA2LCAxLCAyNDIsIDIxMiwgMywgMjQ2LCA3MCwgCisgICAgOCwgNCwgMSwgMjQyLCAyMTIsIDMsIDI0NiwgNzAsIDgsIDEsIDQsIDYsIDIzOCwgNSwgOCwgMSwgNCwgNiwgMjEyLCAxMjIsIAorICAgIDgsIDYsIDEsIDI1MiwgMTM4LCA4LCA0LCAxLCAyNTIsIDEzOCwgOCwgNiwgMSwgMjUxLCAzMSwgOCwgNCwgMSwgMjUxLCAzMSwgCisgICAgOCwgNiwgMSwgMjUwLCAxMzksIDgsIDQsIDEsIDI1MCwgMTM5LCA4LCA2LCAxLCAyNTAsIDEyMywgOCwgNCwgMSwgMjUwLCAKKyAgICAxMjMsIDgsIDYsIDEsIDI1MCwgMTI0LCAzLCAyMzMsIDE3NywgMTQ4LCA4LCA0LCAxLCAyNTAsIDEyNCwgMywgMjMzLCAxNzcsIAorICAgIDE0OCwgOCwgNiwgMSwgMjUwLCAxMTIsIDgsIDQsIDEsIDI1MCwgMTEyLCA4LCA2LCAxLCAyMTMsIDEwNSwgMjQ3LCAyMjQsIAorICAgIDMsIDI0MCwgMTgyLCA4LCA0LCAxLCAyMTMsIDEwNSwgMjQ3LCAyMjQsIDMsIDI0MCwgMTgyLCA4LCA2LCAxLCAyMjcsIDExOSwgCisgICAgMywgOTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCA5NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAKKyAgICAxLCAyMjcsIDExOSwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyMDgsIDQ3LCAyNiwgMjQxLCA3MSwgCisgICAgOTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyMDgsIDQ3LCAyNiwgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDI0OCwgNDYsIAorICAgIDE1NiwgOCwgNCwgMSwgMjQ4LCA0NiwgMTU2LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMTIyLCA5NywgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDEyMiwgOTcsIDgsIDYsIDEsIDE2MywgMywgMTY4LCAyMDgsIDQ3LCAyMTYsIDI0MiwgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAxNjgsIDIwOCwgNDcsIDIxNiwgMjQyLCA4LCA2LCAxLCAxNjMsIDMsIDIyNCwgNzQsIDgsIDQsIDEsIDE2MywgMywgCisgICAgMjI0LCA3NCwgOCwgNiwgMSwgMjE3LCA2MywgOCwgNCwgMSwgMjE3LCA2MywgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDIwOCwgCisgICAgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjA4LCA0NywgMjA2LCAzOCwgMjQxLCAxMTksIAorICAgIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCAyMzcsIDI2LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjM3LCAyNiwgOCwgNiwgMSwgCisgICAgMjE2LCAyMjcsIDMsIDIwOCwgMTg1LCAyMDcsIDYsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMDgsIDE4NSwgMjA3LCA2LCA4LCAKKyAgICA2LCAxLCAyMTQsIDE2OCwgMywgMjA4LCA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDQsIDEsIDIxNCwgMTY4LCAzLCAyMDgsIAorICAgIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNiwgMSwgMjE0LCAxNjgsIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAyMTQsIAorICAgIDE2OCwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDIxNCwgMzMsIDIxMiwgMjIyLCA4LCA0LCAxLCAyMTQsIDMzLCAyMTIsIAorICAgIDIyMiwgOCwgNiwgMSwgMjEyLCAxNjIsIDIxMiwgMjIyLCA4LCA0LCAxLCAyMTIsIDE2MiwgMjEyLCAyMjIsIDgsIDYsIDEsIAorICAgIDIwMywgMTY5LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAKKyAgICAyMDEsIDE1NSwgOCwgNCwgMSwgMjAxLCAxNTUsIDgsIDYsIDEsIDIwMiwgMjAxLCAxOTksIDE1NywgOCwgNCwgMSwgMjAyLCAKKyAgICAyMDEsIDE5OSwgMTU3LCA4LCA2LCAxLCAyMDYsIDU1LCAzLCA5NywgOCwgNCwgMSwgMjA2LCA1NSwgMywgOTcsIDgsIDYsIDEsIAorICAgIDIwNiwgNTUsIDMsIDIwOCwgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMDYsIDU1LCAzLCAyMDgsIDQ3LCAKKyAgICAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNiwgMSwgMjAzLCA0OSwgOCwgNCwgMSwgMjAzLCA0OSwgOCwgNiwgMSwgMjM4LCA4MSwgCisgICAgOCwgNCwgMSwgMjM4LCA4MSwgOCwgNiwgMSwgMjI4LCAyNiwgOCwgNCwgMSwgMjI4LCAyNiwgOCwgNiwgMSwgMjQzLCA2OCwgCisgICAgOCwgNCwgMSwgMjQzLCA2OCwgNjcsIDEsIDIwMywgMTk3LCA4LCA0LCAxLCAyMzksIDEyNiwgOCwgNCwgMSwgMjI0LCAyNSwgCisgICAgOCwgNCwgMSwgMjIxLCAxNSwgOCwgNCwgMSwgMjE4LCA5NiwgOCwgNCwgMSwgMjEyLCAxNjEsIDgsIDEsIDQsIDYsIDIxMiwgCisgICAgMTYxLCA4LCA0LCAxLCAyMDQsIDIwMywgOCwgNCwgMSwgMjA0LCAxMiwgOCwgNiwgMSwgMjI4LCA3MSwgMjQyLCAxNTMsIDgsIAorICAgIDQsIDEsIDIyOCwgNzEsIDI0MiwgMTUzLCA4LCA2LCAxLCAyMjgsIDcxLCAyMzgsIDUsIDgsIDQsIDEsIDIyOCwgNzEsIDIzOCwgCisgICAgNSwgOCwgNiwgMSwgMjI4LCA3MSwgMjM2LCAxNTYsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMjgsIDcxLCAyMzYsIDE1NiwgOCwgCisgICAgNCwgMSwgMjA0LCAxODUsIDIyOCwgNzEsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMDQsIDE4NSwgMTU2LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMTU2LCA4LCA2LCAxLCAyMjgsIDcxLCAxNDYsIDgsIDQsIDEsIDIyOCwgNzEsIDE0NiwgOCwgNiwgMSwgMjI4LCA3MSwgCisgICAgMjEyLCAxMjIsIDgsIDQsIDEsIDIyOCwgNzEsIDIxMiwgMTIyLCA4LCA2LCAxLCAyMjgsIDcxLCAyMDcsIDgzLCA4LCA0LCAxLCAKKyAgICAyMjgsIDcxLCAyMDcsIDgzLCA2NywgMSwgMTI4LCAyNDYsIDE0NywgMjUxLCAyNTEsIDY3LCAxLCAyNDYsIDc5LCA2NywgMSwgCisgICAgMjA5LCAyNTAsIDIzOCwgMTIyLCA1NCwgOCwgNiwgMSwgMjEyLCAyNSwgOCwgNCwgMSwgMjEyLCAyNSwgOCwgNiwgMSwgMjA0LCAKKyAgICAxODUsIDIzNCwgMjQ3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjEzLCAxMTEsIDIzMywgMTg3LCAyNiwgMjQ4LCAyMjYsIDgsIAorICAgIDEsIDIwOSwgMTMyLCAyNDAsIDE4MiwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMjAsIDIxNSwgCisgICAgMywgMjQxLCAxMTksIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAxNDgsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAxNDgsIDgsIDQsIAorICAgIDEsIDI0NywgMjI0LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjE2LCAxODQsIDExNywgOCwgNiwgCisgICAgMSwgNjgsIDMsIDIzNywgMjYsIDgsIDQsIDEsIDY4LCAzLCAyMzcsIDI2LCA4LCA2LCAxLCAyMzgsIDYsIDMsIDk3LCA4LCA0LCAKKyAgICAxLCAyMzgsIDYsIDMsIDk3LCA4LCA2LCAxLCAyMDIsIDE4NSwgMjUxLCAyMjEsIDgsIDQsIDEsIDIwMiwgMTg1LCAyNTEsIAorICAgIDIyMSwgOCwgNiwgMSwgMjAyLCAxODUsIDIxNywgMTIxLCA4LCA0LCAxLCAyMDIsIDE4NSwgMjE3LCAxMjEsIDgsIDYsIDEsIAorICAgIDIwMiwgMTg1LCAyMDQsIDMxLCA4LCA0LCAxLCAyMDIsIDE4NSwgMjA0LCAzMSwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjE0LCAzMywgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAxMTcsIAorICAgIDgsIDYsIDEsIDIxMywgMTA1LCAxNzYsIDcyLCA4LCA2LCAxLCAxMzUsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgCisgICAgMjQ4LCAyMjYsIDgsIDYsIDEsIDQsIDYsIDcwLCA4LCA2LCAxLCAyMDQsIDE4NSwgMjI3LCAxMTgsIDgsIDYsIDEsIDIwNCwgCisgICAgMTg1LCAyMDcsIDgzLCA4LCA2LCAxLCAyMjcsIDI1MiwgMywgMjQyLCAyMzAsIDgsIDYsIDEsIDI0NiwgMjM2LCA4LCA2LCAxLCAKKyAgICAyNDgsIDIwOCwgOCwgNCwgMSwgMjQ4LCAyMDgsIDgsIDYsIDEsIDIxNywgODMsIDgsIDQsIDEsIDIxNywgODMsIDgsIDIzOCwgCisgICAgMTI3LCAxLCAyMDksIDE3MywgNzAsIDY3LCAxLCA2LCAyMzQsIDI0OCwgMywgOTcsIDY3LCAxLCA0LCAzMywgMjE3LCAxMjEsIAorICAgIDgsIDEsIDQsIDYsIDIwNCwgMTg1LCAyMjMsIDI0MywgOCwgMjM4LCAxMjcsIDEsIDIxMywgMTA1LCAyMzgsIDUsIDgsIDIzOCwgCisgICAgMTI3LCAxLCAyMTMsIDEwNSwgMjE2LCAyMjYsIDgsIDIzOCwgMTI3LCAxLCAyMjgsIDUwLCAyMjMsIDI0MywgOCwgMjM4LCAKKyAgICAxMjcsIDEsIDIzMywgMTksIDIyNCwgODAsIDgsIDIzOCwgMTI3LCAxLCAyNTAsIDIzNCwgMjIzLCAyNDMsIDIwNywgMTYzLCAKKyAgICAyMjAsIDE0NSwgMSwgNjIsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgNzAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMiwgMjM5LCAKKyAgICAxMDUsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgNjYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgNzIsIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMSwgNzQsIDIwNywgMTYzLCAyMjAsIDE0NSwgMiwgMjM0LCAxNTksIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI2LCAKKyAgICA4OCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMjYsIDE3OCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMzUsIDExNiwgCisgICAgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMzUsIDE3MSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyLCAyNTEsIDMzLCAyMDcsIAorICAgIDE2MywgMjIwLCAxNDUsIDEsIDI0NiwgOTEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQ2LCAyMTAsIDIwNywgMTYzLCAKKyAgICAyMjAsIDE0NSwgMSwgMjI3LCAxNjYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI3LCAyMDksIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMSwgMjA0LCAyMzAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjA0LCAyMzYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgCisgICAgMjQxLCAxOTAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQxLCAxOTksIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMTM4LCAKKyAgICAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIwNiwgNjEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQwLCAyMTEsIDIwNywgCisgICAgMTYzLCAyMjAsIDE0NSwgMSwgMjQxLCA4MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTgsIDI0MSwgMjA3LCAxNjMsIAorICAgIDIyMCwgMTQ1LCAxLCAyMTUsIDEwNiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTUsIDIxNywgMjA3LCAxNjMsIDIyMCwgCisgICAgMTQ1LCAxLCAyNDgsIDEyNCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyNDgsIDE5MiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAKKyAgICAyMjEsIDEzNiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTMsIDEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI0LCAxMTAsIAorICAgIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjEyLCAyMDEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjA5LCAyOSwgMjA3LCAKKyAgICAxNjMsIDIyMCwgMTQ1LCAxLCAyMzMsIDIwNywgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgNjIsIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMjIsIDIsIDcwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCA2NiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgCisgICAgNzIsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIDIxNywgNjMsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjE1LCAxMDEsIAorICAgIDIyMiwgMTQ5LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIxNSwgMTAxLCAyMjIsIDE0OCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAKKyAgICAyMTUsIDEwMSwgMjIyLCAxNDcsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjE1LCAxMDEsIDIyMiwgMTQ2LCAxNTcsIDIyOCwgCisgICAgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMTU3LCAKKyAgICAyMjgsIDEwMSwgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDExMiwgMjA5LCA5OCwgCisgICAgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDExMiwgMjM4LCAyMjcsIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMjYsIAorICAgIDIwOSwgOTcsIDE1NywgMjI4LCAxMDEsIDIxNCwgODgsIDgxLCAxNTcsIDIyOCwgMTAxLCAyMTUsIDEzMywgODEsIDE1NywgCisgICAgMjI4LCAxMDEsIDIxMiwgMTQ5LCA4MSwgMTU3LCAyMjgsIDEwMSwgMjE0LCA4OSwgODEsIDIxNSwgMjQxLCAxLCAxNjEsIAorICAgIDIxNSwgMjQxLCAxLCAyMjYsIDIwNywgMjE1LCAyNDEsIDEsIDIzNiwgODksIDIxNSwgMjQxLCAxLCAyMTksIDI1MywgMjE1LCAKKyAgICAyNDEsIDEsIDI0NywgMTkwLCAyMTUsIDI0MSwgMSwgMjQ3LCAzNywgMjE1LCAyNDEsIDEsIDIyNywgMjQ4LCAyMTUsIDI0MSwgCisgICAgMSwgMjE4LCA2MCwgMjE1LCAyNDEsIDEsIDIwNywgMzYsIDIxNSwgMjQxLCAxLCAyMDYsIDEyMiwgMjE1LCAyNDEsIDEsIAorICAgIDI0MiwgNTgsIDIxNSwgMjQxLCAxLCAxODgsIDIxNSwgMjQxLCAxLCAxNzIsIDIxNSwgMjQxLCAxLCAyMTUsIDI0NSwgMjE1LCAKKyAgICAyNDEsIDEsIDI0OSwgMTM2LCAyMTUsIDI0MSwgMSwgMTc4LCAyMTUsIDI0MSwgMSwgMjA1LCAzMiwgMjE1LCAyNDEsIDEsIAorICAgIDIwNSwgMjIsIDIxNSwgMjQxLCAxLCAyMzksIDkzLCAyMTUsIDI0MSwgMSwgMjAxLCAxMTQsIDIxNSwgMjQxLCAxLCAxOTksIAorICAgIDc3LCAyMTUsIDI0MSwgMSwgMTk5LCAxMTQsIDIxNSwgMjQxLCAxLCA0LCA2MiwgMjE1LCAyNDEsIDEsIDE4MywgMjE1LCAKKyAgICAyNDEsIDEsIDIxMywgMjUyLCAyMTUsIDI0MSwgMSwgMTk0LCAyMTUsIDI0MSwgMSwgMjEwLCAxMTQsIDIxNSwgMjQxLCAxLCAKKyAgICAyMTIsIDY0LCAyMTUsIDI0MSwgMSwgMTQ0LCAyMTUsIDI0MSwgMSwgNjIsIDIxNSwgMjQxLCAxLCA3MCwgMjE1LCAyNDEsIDEsIAorICAgIDY2LCAyMTUsIDI0MSwgMSwgNzIsIDIxNSwgMjQxLCAxLCA3NCwgMjE1LCAyNDEsIDEsIDIxNCwgMTU5LCAyMTUsIDI0MSwgMSwgCisgICAgMjAwLCAxODEsIDIxNSwgMjQxLCAxLCAyMzcsIDE5NSwgMjE1LCAyNDEsIDEsIDIzNSwgMjM1LCAyMTUsIDI0MSwgMSwgMjM4LCAKKyAgICAyNTUsIDIxNSwgMjQxLCAyMDgsIDEyLCAxLCAyMDEsIDExNCwgMjE1LCAyNDEsIDIwOCwgMTIsIDEsIDE4MywgMjE1LCAyNDEsIAorICAgIDEsIDIwNCwgMjUzLCAyMTUsIDI0MSwgMSwgMjA0LCAyNDEsIDIxNSwgMjQxLCAxLCAyNDEsIDIyMCwgMjE1LCAyNDEsIDEsIAorICAgIDIxOSwgMjEsIDIxNSwgMjQxLCAxLCAyNTEsIDEwOSwgMTgzLCAyMTUsIDI0MSwgMSwgMjAyLCAxODgsIDIxMCwgMTE0LCAKKyAgICAyMTUsIDI0MSwgMSwgMjAyLCAxODksIDE0NCwgMjE1LCAyNDEsIDEsIDI1MCwgMTcyLCAyMzcsIDE5NSwgMjE1LCAyNDEsIAorICAgIDIwOCwgMTIsIDEsIDIxMywgMjUyLCAyMTUsIDI0MSwgMjA3LCAyMTUsIDEsIDIxMywgMjUyLCAyMTUsIDI0MSwgMSwgMjQ3LCAKKyAgICAxNDksIDIxNSwgMjQxLCAyMDksIDEzOSwgMjM0LCAxMzcsIDgxLCAyMTUsIDI0MSwgNTMsIDIzNCwgMTM3LCA4MSwgMjE1LCAKKyAgICAyNDEsIDEzNCwgMjEwLCAxMDYsIDIxNSwgMjQxLCAxMzQsIDUzLCAyMTAsIDEwNiwgMjExLCAyNDEsIDIsIDI1MSwgMzMsIAorICAgIDIxMSwgMjQxLCAyLCAyMDIsIDIwMywgMjExLCAyNDEsIDEsIDYyLCAyMTEsIDI0MSwgMSwgMjUyLCAxMzgsIDIxMSwgMjQxLCAKKyAgICAxLCA3MCwgMjExLCAyNDEsIDEsIDIyOCwgMTUxLCAyMTEsIDI0MSwgMSwgNjYsIDIxMSwgMjQxLCAxLCAyMDMsIDE4MiwgCisgICAgMjExLCAyNDEsIDEsIDEwOSwgMTQ2LCAyMTEsIDI0MSwgMSwgMTA5LCAyMTIsIDIxNiwgMjExLCAyNDEsIDEsIDEwOSwgMTU2LCAKKyAgICAyMTEsIDI0MSwgMSwgMTA5LCAyMjQsIDEzOSwgMjExLCAyNDEsIDEsIDcyLCAyMTEsIDI0MSwgMSwgMjM4LCAyNTUsIDIxMSwgCisgICAgMjQxLCAxLCAyNTEsIDE3NiwgMjExLCAyNDEsIDEsIDc0LCAyMTEsIDI0MSwgMSwgMjE3LCA2MywgMjExLCAyNDEsIDEsIAorICAgIDI1MCwgMTM5LCAyMTEsIDI0MSwgMSwgMTYxLCAyMTEsIDI0MSwgMSwgMjI2LCAyMDcsIDIxMSwgMjQxLCAxLCAyMzYsIDg5LCAKKyAgICAyMTEsIDI0MSwgMSwgMjM1LCAxOTksIDIxMSwgMjQxLCAxLCAyMTksIDI1MywgMjExLCAyNDEsIDEsIDI0NywgMTkwLCAyMTEsIAorICAgIDI0MSwgMSwgMjQ3LCAzNywgMjExLCAyNDEsIDEsIDIyNywgMjQ4LCAyMTEsIDI0MSwgMSwgMjI3LCAyMTUsIDIxMSwgMjQxLCAKKyAgICAxLCAyMTgsIDYwLCAyMTEsIDI0MSwgMSwgMjA0LCAyNTMsIDIxMSwgMjQxLCAxLCAyMDQsIDI0MSwgMjExLCAyNDEsIDEsIAorICAgIDI0MSwgMjIwLCAyMTEsIDI0MSwgMSwgMjQxLCAyMDQsIDIxMSwgMjQxLCAxLCAyMTksIDIxLCAyMTEsIDI0MSwgMSwgMjA3LCAKKyAgICAzNiwgMjExLCAyNDEsIDEsIDIwNiwgMTIyLCAyMTEsIDI0MSwgMSwgMjQyLCA1OCwgMjExLCAyNDEsIDEsIDI0MSwgMTAwLCAKKyAgICAyMTEsIDI0MSwgMSwgMTg4LCAyMTEsIDI0MSwgMSwgMTcyLCAyMTEsIDI0MSwgMSwgMjE1LCAyNDUsIDIxMSwgMjQxLCAxLCAKKyAgICAyNDksIDEzNiwgMjExLCAyNDEsIDEsIDI0OCwgMjAwLCAyMTEsIDI0MSwgMSwgMTc4LCAyMTEsIDI0MSwgMSwgMTgzLCAyMTEsIAorICAgIDI0MSwgMSwgMjEzLCAyNTIsIDIxMSwgMjQxLCAxLCAxOTQsIDIxMSwgMjQxLCAxLCAyMDMsIDkwLCAyMTEsIDI0MSwgMSwgCisgICAgMjEwLCAxMTQsIDIxMSwgMjQxLCAxLCAyMDgsIDE3OSwgMjExLCAyNDEsIDEsIDIxMiwgNjQsIDIxMSwgMjQxLCAxLCAxNDQsIAorICAgIDIxMSwgMjQxLCAxLCAyMjQsIDEzOCwgMjExLCAyNDEsIDExMSwgMiwgMjM0LCAyMzEsIDIxMSwgMjQxLCAyMiwgMiwgMjUyLCAKKyAgICAxMzgsIDIxMSwgMjQxLCAyMiwgMiwgNzAsIDIxMSwgMjQxLCAyMiwgMiwgMjI4LCAxNTEsIDIxMSwgMjQxLCAyMiwgMiwgNjYsIAorICAgIDIxMSwgMjQxLCAyMiwgMiwgMjAzLCAxODIsIDIxMSwgMjQxLCAyMiwgMiwgMTA5LCAxNDYsIDIxMSwgMjQxLCAyMiwgMiwgCisgICAgMTA5LCAyMTIsIDIxNiwgMjExLCAyNDEsIDIyLCAyLCAxMDksIDE1NiwgMjExLCAyNDEsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAKKyAgICAyMTEsIDI0MSwgMjIsIDIsIDcyLCAyMTEsIDI0MSwgMjIsIDIsIDIzOCwgMjU1LCAyMTEsIDI0MSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMTEsIDI0MSwgMjIsIDIsIDc0LCAyMTEsIDI0MSwgMjIsIDIsIDIxNywgNjMsIDIxMSwgMjQxLCAyMiwgMiwgMjUwLCAKKyAgICAxMzksIDIxMSwgMjQxLCAyLCAyMDIsIDIwOCwgMjExLCAyNDEsIDIsIDI0NywgMTQ5LCAyMTEsIDI0MSwgMjQyLCAxMCwgCisgICAgMjExLCAyNDEsIDUzLCAyNDIsIDEwLCAyMTEsIDI0MSwgMTcsIDE5OSwgODEsIDIxMSwgMjQxLCAxNywgMTAyLCAyMTEsIAorICAgIDI0MSwgMTcsIDEwNSwgMjExLCAyNDEsIDE3LCAxNDcsIDIxMSwgMjQxLCAxNywgMTQ5LCAyMTEsIDI0MSwgMTcsIDE2NCwgCisgICAgMjExLCAyNDEsIDE3LCAxODcsIDIxMSwgMjQxLCAxNywgMjEwLCAxMzUsIDIxMSwgMjQxLCAxNywgMTkyLCAyMTEsIDI0MSwgCisgICAgMTcsIDIxOSwgMTEzLCAzOCwgOTQsIDE3LCAxOTksIDgxLCAzOCwgOTQsIDE3LCAxMDIsIDM4LCA5NCwgMTcsIDEwNSwgMzgsIAorICAgIDk0LCAxNywgMTQ3LCAzOCwgOTQsIDE3LCAxNDksIDM4LCA5NCwgMTcsIDE2NCwgMzgsIDk0LCAxNywgMTg3LCAzOCwgOTQsIAorICAgIDE3LCAyMTAsIDEzNSwgMzgsIDk0LCAxNywgMTkyLCAzOCwgOTQsIDE3LCAyMTksIDExMywgMzgsIDk0LCAxLCA2MiwgMzgsIAorICAgIDk0LCAxLCA2NiwgMzgsIDk0LCAxLCAxNjEsIDM4LCA5NCwgMSwgMTg4LCAzOCwgOTQsIDEsIDE3MiwgMzgsIDk0LCAxLCAKKyAgICAyMTMsIDI1MiwgMzgsIDk0LCAxLCAyMDIsIDIzNCwgMzgsIDk0LCAyLCAyNTAsIDEyMiwgOTQsIDIsIDIwOCwgMjQzLCAyNDcsIAorICAgIDE0OSwgOTQsIDIsIDI0NywgMTUwLCAyMDIsIDIwOCwgOTQsIDIsIDUzLCAyNDcsIDE1MCwgMjAyLCAyMDgsIDk0LCAyLCAKKyAgICAyNDcsIDE1MCwgMTA1LCA5NCwgMiwgMjQ3LCAxNTAsIDE0NywgOTQsIDIsIDI0NywgMTUwLCAyNTAsIDEyMiwgOTQsIDIsIAorICAgIDIxNCwgMTk1LCA5NCwgMjM2LCA1MywgMjM3LCA5MywgOTQsIDI0NywgMTI5LCA5NCwgMjM0LCAxMzAsIDk0LCAyLCAyMDksIAorICAgIDE3NywgOTQsIDIyNywgMjQwLCAyMTcsIDg2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE5OSwgODEsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxNywgMTAyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDEwNSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxNDcsIAorICAgIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTQ5LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE2NCwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDE3LCAxODcsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMjEwLCAxMzUsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgCisgICAgMTkyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDIxOSwgMTEzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTYxLCAyMjcsIDE0LCAKKyAgICAyMjQsIDIxMSwgMSwgMjI2LCAyMDcsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMzYsIDg5LCAyMjcsIDE0LCAyMjQsIDIxMSwgCisgICAgMSwgMjE5LCAyNTMsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTIsIDY0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjEwLCAKKyAgICAxMTQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxOTksIDExNCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxOCwgNjAsIDIyNywgCisgICAgMTQsIDIyNCwgMjExLCAxLCAyMDcsIDM2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjMzLCAxMDEsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxLCAxODgsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNzIsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTUsIDI0NSwgCisgICAgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE3OCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDI0MiwgNTgsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxLCAyNDksIDEzNiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxMywgMjUyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgCisgICAgMTgzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTk0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjAxLCAxMTQsIDIyNywgMTQsIAorICAgIDIyNCwgMjExLCAxLCAyMDYsIDEyMiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE0NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIAorICAgIDIwMywgOTAsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyNDcsIDE5MCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDYyLCAyMjcsIAorICAgIDE0LCAyMjQsIDIxMSwgMSwgMjE3LCAxMjEsIDIyNywgMTQsIDIyNCwgMjExLCAxLCA3MCwgMjI3LCAxNCwgMjI0LCAyMTEsIAorICAgIDEsIDIxNywgNjMsIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgMjA0LCAzMSwgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCA3MiwgCisgICAgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCA2NiwgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCAyMzgsIDI1NSwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDIyLCA3NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDE1MCwgMjE1LCAxMjEsIDIyNywgMTQsIDIyNCwgMjExLCAxNTAsIAorICAgIDI0NywgMTY1LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTUwLCAyNDcsIDE2NiwgMjE1LCAxMjEsIDIyNywgMTQsIDIyNCwgMjExLCAKKyAgICAyLCAyNDIsIDE3MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDIsIDIwOSwgMTkwLCAyMTMsIDE1MSwgMSwgMTYxLCAyMTMsIDE1MSwgCisgICAgMSwgMjM2LCA4OSwgMjEzLCAxNTEsIDEsIDIxOSwgMjUzLCAyMTMsIDE1MSwgMSwgMjA3LCAzNiwgMjEzLCAxNTEsIDEsIAorICAgIDI0MiwgNTgsIDIxMywgMTUxLCAxLCAxODgsIDIxMywgMTUxLCAxLCAxNzIsIDIxMywgMTUxLCAxLCAyNDksIDEzNiwgMjEzLCAKKyAgICAxNTEsIDEsIDE3OCwgMjEzLCAxNTEsIDEsIDI0NywgMTkwLCAyMTMsIDE1MSwgMSwgMjI3LCAyNDgsIDIxMywgMTUxLCAxLCAKKyAgICAyMTgsIDYwLCAyMTMsIDE1MSwgMSwgMjEyLCA2NCwgMjEzLCAxNTEsIDEsIDIxMywgMjUyLCAyMTMsIDE1MSwgMSwgMTk0LCAKKyAgICAyMTMsIDE1MSwgMSwgMTgzLCAyMTMsIDE1MSwgMSwgMjAxLCAxMTQsIDIxMywgMTUxLCAxLCAxNDQsIDIxMywgMTUxLCAxLCAKKyAgICAyMjIsIDExMCwgMjEzLCAxNTEsIDEsIDIxOSwgMjMyLCAyMTMsIDE1MSwgMSwgMjIwLCA3NSwgMjEzLCAxNTEsIDEsIDIxOCwgCisgICAgMjcsIDIxMywgMTUxLCAxLCA2MiwgMjEzLCAxNTEsIDIyLCAyLCA3MCwgMjEzLCAxNTEsIDIyLCAyLCA2NiwgMjEzLCAxNTEsIAorICAgIDIyLCAyLCA3MiwgMjEzLCAxNTEsIDIyLCAyLCAyNTEsIDE3NiwgMjEzLCAxNTEsIDIyLCAyLCA3NCwgMjEzLCAxNTEsIDIyLCAKKyAgICAyLCAyNTAsIDEzOSwgMjEzLCAxNTEsIDIyLCAyLCAyMzgsIDY5LCAyMTMsIDE1MSwgMjIsIDIsIDIzOSwgMjcsIDIxMywgCisgICAgMTUxLCAxMTEsIDIsIDIxOSwgMjU1LCAyMTMsIDE1MSwgMTExLCAyLCAyMjAsIDIxNCwgMjEzLCAxNTEsIDExMSwgMiwgMTQ2LCAKKyAgICAyMTMsIDE1MSwgMTExLCAyLCAyMzQsIDI0NywgMjEzLCAxNTEsIDIwMiwgMjA4LCAyMTMsIDE1MSwgMjExLCAxOTMsIDgxLCAKKyAgICAyOSwgMTI5LCAyMDUsIDI0OSwgMjksIDEyOSwgMjA1LCAyNDgsIDI5LCAxMjksIDIwNSwgMjQ2LCAyOSwgMTI5LCAyMDUsIAorICAgIDI1MSwgMjksIDEyOSwgMjEzLCA3MywgMjksIDEyOSwgMjEzLCA1NywgMjksIDEyOSwgMjEzLCA1MiwgMjksIDEyOSwgMjEzLCAKKyAgICA1NCwgMjksIDEyOSwgMjEzLCA3MCwgMjksIDEyOSwgMjEzLCA2MywgMjksIDEyOSwgMjEzLCA1NiwgMjksIDEyOSwgMjEzLCAKKyAgICA3NSwgMjksIDEyOSwgMjEzLCA1OCwgMjksIDEyOSwgMjEzLCA3NywgMjksIDEyOSwgMjEzLCA3NCwgMjksIDEyOSwgMjIxLCAKKyAgICAxOTMsIDI5LCAxMjksIDIyMSwgMTg0LCAyOSwgMTI5LCAyMjEsIDE4NywgMjksIDEyOSwgMjE1LCAxNzUsIDI5LCAxMjksIAorICAgIDIxNSwgMTg2LCAyOSwgMTI5LCAyMTUsIDE4NywgMjksIDEyOSwgMjA4LCAxNjMsIDI5LCAxMjksIDIyOCwgMTY0LCAyOSwgCisgICAgMTI5LCAyMjgsIDE3MSwgMjksIDEyOSwgMjA4LCAxNzQsIDI5LCAxMjksIDIwOCwgMTYxLCAyOSwgMTI5LCAyMTUsIDIyNiwgCisgICAgMjksIDEyOSwgMjM0LCA2MSwgMjksIDEyOSwgMjA4LCAxNTgsIDIyNywgMjMzLCAyLCAyMTYsIDE0MSwgMjI3LCAyMzMsIDIsIAorICAgIDI0NywgNzMsIDIyNywgMjMzLCAyLCAyMjUsIDQ4LCAyMjcsIDIzMywgMiwgMjAxLCAyMSwgMjI3LCAyMzMsIDEsIDYyLCAKKyAgICAyMjcsIDIzMywgMSwgMjMzLCAxOSwgMjI3LCAxOCwgMjI3LCAyMzMsIDEsIDcwLCAyMjcsIDIzMywgMSwgMjI4LCAxNTEsIAorICAgIDIyNywgMjMzLCAxLCA2NiwgMjI3LCAyMzMsIDEsIDIxNiwgMjExLCAyNDcsIDQzLCAyMjcsIDIzMywgMSwgMjE5LCAyNTQsIAorICAgIDIyNSwgNywgMjI3LCAyMzMsIDEsIDIxOSwgMjU0LCAyMjUsIDgsIDIxMywgMjA1LCAyMjcsIDIzMywgMSwgNzIsIDIyNywgCisgICAgMjMzLCAxLCAyNTEsIDE3NiwgMjI3LCAyMzMsIDEsIDc0LCAyMjcsIDIzMywgMSwgMTYxLCAyMjcsIDIzMywgMSwgMjI3LCAKKyAgICAxMDgsIDIxMSwgMjUzLCAyMjcsIDIzMywgMSwgMjI3LCAxMDgsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIzNiwgODksIDIyNywgCisgICAgMjMzLCAxLCAyMzYsIDkwLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMTksIDI1MywgMjI3LCAyMzMsIDEsIDI0NywgMTkwLCAKKyAgICAyMjcsIDIzMywgMSwgMjQ3LCAxOTEsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIyNywgMjQ4LCAyMjcsIDIzMywgMSwgMjE4LCAKKyAgICA2MSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjI3LCAyNDksIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjE4LCA2MCwgMjI3LCAKKyAgICAyMzMsIDEsIDIwNCwgMjUzLCAyMjcsIDIzMywgMSwgMjA0LCAyNTQsIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjQxLCAyMjAsIAorICAgIDIyNywgMjMzLCAxLCAyNDEsIDIyMSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyMjAsIDE2MiwgMjIxLCAwLCAyMjcsIDIzMywgCisgICAgMSwgMjA3LCAzNiwgMjI3LCAyMzMsIDEsIDIwNywgMzcsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDI0MiwgNTgsIDIyNywgMjMzLCAKKyAgICAxLCAyNDIsIDU5LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDE4OCwgMjI3LCAyMzMsIDEsIDE3MiwgMjI3LCAyMzMsIDEsIAorICAgIDIxNiwgMjExLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyNDksIDEzNiwgMjI3LCAyMzMsIDEsIDI0OSwgMTM3LCAyMjEsIDAsIAorICAgIDIyNywgMjMzLCAxLCAxNzgsIDIyNywgMjMzLCAxLCAxODMsIDIyNywgMjMzLCAxLCAyMTMsIDI1MiwgMjI3LCAyMzMsIDEsIAorICAgIDIxMywgMjUzLCAyNTEsIDE4NiwgMjI3LCAyMzMsIDEsIDE5NCwgMjI3LCAyMzMsIDEsIDIwMSwgMTE0LCAyMjcsIDIzMywgMSwgCisgICAgMjEyLCA2NSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjEyLCA2NSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyMTIsIDY0LCAKKyAgICAyMjcsIDIzMywgMSwgMTQ0LCAyMjcsIDIzMywgMiwgMjQ3LCA3NCwgMjA2LCAxNjksIDIyNywgMjMzLCAyMiwgMiwgMjA2LCAKKyAgICAyMjgsIDIyNywgMjMzLCAyMiwgMiwgMjA1LCAxNzksIDIyNywgMjMzLCAyMiwgMiwgMjAwLCAyMTAsIDIyNywgMjMzLCAyMiwgCisgICAgMiwgMjAwLCAyMTEsIDIyMiwgNTEsIDIyNywgMjMzLCAyMiwgMiwgMjA3LCAyMzgsIDIyNywgMjMzLCAyMiwgMiwgMjA3LCAKKyAgICAyMzksIDIyMiwgMzksIDIyNywgMjMzLCAyMiwgMiwgMjA2LCAyNDksIDIyNywgMjMzLCAyMiwgMiwgMjQxLCA2LCAyMjAsIAorICAgIDI1NSwgMjI3LCAyMzMsIDIyLCAyLCAyMTYsIDMwLCAyMjcsIDIzMywgMTExLCAyLCAyMjYsIDIzNiwgMjI3LCAyMzMsIDExMSwgCisgICAgMiwgMjE2LCA0NCwgMjI3LCAyMzMsIDExMSwgMiwgMjQ3LCAxNzUsIDIyNywgMjMzLCAyMTYsIDE1NCwgMjI3LCAyMzMsIDQ5LCAKKyAgICAyMTMsIDEyNSwgMjI3LCAyMzMsIDUxLCAyMTMsIDEyNSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyNTEsIDc4LCAyMjcsIDIzMywgCisgICAgMjE2LCAyMDAsIDIyMiwgMjIwLCAyMjcsIDIzMywgMjE2LCAyMDAsIDIyNCwgMjksIDIyNywgMjMzLCAyMTYsIDIwMCwgMjAxLCAKKyAgICAxNCwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMTYsIDE1NSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMjQsIDE2OCwgMjI3LCAyMzMsIAorICAgIDIxNiwgMjAwLCAyMjQsIDIzLCAyMjcsIDIzMywgMjE2LCAyMDAsIDI1MSwgMjI5LCAyMjcsIDIzMywgMjE2LCAyMDAsIDI1MSwgCisgICAgMjMwLCAyNTEsIDIyOSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMTUsIDE0NCwgMjI3LCAyMzMsIDIwNCwgMTg1LCAyMTYsIAorICAgIDIwMCwgMjE1LCAxNDQsIDIyNywgMjMzLCAyMTYsIDE1MCwgMjI3LCAyMzMsIDE3LCAxOTksIDgxLCAyMjcsIDIzMywgMTcsIAorICAgIDEwMiwgMjI3LCAyMzMsIDE3LCAxMDUsIDIyNywgMjMzLCAxNywgMTQ3LCAyMjcsIDIzMywgMTcsIDE0OSwgMjI3LCAyMzMsIAorICAgIDE3LCAxNjQsIDIyNywgMjMzLCAxNywgMTg3LCAyMjcsIDIzMywgMTcsIDIxMCwgMTM1LCAyMjcsIDIzMywgMTcsIDE5MiwgCisgICAgMjI3LCAyMzMsIDE3LCAyMTksIDExMywgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMDUsIDIxNSwgMjA0LCAyMDAsIDIyNywgMjMzLCAKKyAgICAyMTYsIDIwMCwgMjI4LCAyMiwgNzEsIDEsIDIxMCwgOTAsIDIzNSwgMTk5LCA3MSwgMSwgMjEwLCA5MCwgMjQ3LCAzNywgNzEsIAorICAgIDEsIDIxMCwgOTAsIDIyNywgMjE1LCA3MSwgMSwgMjEwLCA5MCwgMjE5LCAyMSwgNzEsIDEsIDIxMCwgOTAsIDI0OCwgMjAwLCAKKyAgICA3MSwgMiwgMjEwLCA5MCwgMjExLCAyMzksIDcxLCA2NywgMSwgMjEwLCA5MCwgMjEzLCAxNjgsIDcxLCAxLCA0NiwgMjI1LCAKKyAgICAxNDgsIDIxOCwgNjAsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIzNywgMTk1LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMzYsIAorICAgIDg5LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMzUsIDE5OSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjI3LCAyNDgsIDcxLCAxLCAKKyAgICA0NiwgMjI1LCAxNDgsIDIyNywgMjE1LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDEsIDIyMCwgNzEsIDEsIDQ2LCAyMjUsIAorICAgIDE0OCwgMjQxLCAyMDQsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIxOSwgMjEsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxOTksIAorICAgIDgxLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTAyLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTA1LCA3MSwgNDYsIDIyNSwgCisgICAgMTQ4LCAxNywgMTQ3LCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTQ5LCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTY0LCA3MSwgCisgICAgNDYsIDIyNSwgMTQ4LCAxNywgMTg3LCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMjEwLCAxMzUsIDcxLCA0NiwgMjI1LCAxNDgsIAorICAgIDE3LCAxOTIsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAyMTksIDExMywgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjI0LCAxMzgsIAorICAgIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0MiwgNTgsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0MSwgMTAwLCA3MSwgMSwgNDYsIAorICAgIDIyNSwgMTQ4LCAyNDksIDEzNiwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQ4LCAyMDAsIDI0NywgMzAsIDEsIDYyLCAyNDcsIAorICAgIDMwLCAxLCA3MCwgMjQ3LCAzMCwgMSwgNjYsIDI0NywgMzAsIDEsIDcyLCAyNDcsIDMwLCAxLCAyNTEsIDE3NiwgMjQ3LCAzMCwgCisgICAgMSwgNzQsIDI0NywgMzAsIDEsIDE2MSwgMjQ3LCAzMCwgMSwgMjI2LCAyMDcsIDI0NywgMzAsIDEsIDIzNiwgODksIDI0NywgCisgICAgMzAsIDEsIDIzNSwgMTk5LCAyNDcsIDMwLCAxLCAyMTksIDE2MiwgMjQ3LCAzMCwgMSwgMjE5LCAyNTMsIDI0NywgMzAsIDEsIAorICAgIDI0NywgMzcsIDI0NywgMzAsIDEsIDI0NiwgMjM4LCAyNDcsIDMwLCAxLCAyMjcsIDI0OCwgMjQ3LCAzMCwgMSwgMjI3LCAKKyAgICAyMTUsIDI0NywgMzAsIDEsIDIxOSwgMTUyLCAyNDcsIDMwLCAxLCAyMTksIDE1NCwgMjQ3LCAzMCwgMSwgMjE5LCAxNTMsIAorICAgIDI0NywgMzAsIDEsIDIwNywgMzYsIDI0NywgMzAsIDEsIDIwNiwgMTIyLCAyNDcsIDMwLCAxLCAyNDIsIDU4LCAyNDcsIDMwLCAKKyAgICAxLCAyNDEsIDEwMCwgMjQ3LCAzMCwgMSwgMjE4LCAxMDIsIDI0NywgMzAsIDEsIDE4OCwgMjQ3LCAzMCwgMSwgMjQxLCAyMjAsIAorICAgIDI0NywgMzAsIDEsIDE3MiwgMjQ3LCAzMCwgMSwgMjE1LCA0NywgMjQ3LCAzMCwgMSwgMjE1LCAyNDUsIDI0NywgMzAsIDEsIAorICAgIDI0OSwgMTM2LCAyNDcsIDMwLCAxLCAyNDgsIDIwMCwgMjQ3LCAzMCwgMSwgMjIxLCAzMywgMjQ3LCAzMCwgMSwgMTc4LCAKKyAgICAyNDcsIDMwLCAxLCAyNDksIDQ0LCAyNDcsIDMwLCAxLCAxODMsIDI0NywgMzAsIDEsIDIxMywgMjUyLCAyNDcsIDMwLCAxLCAKKyAgICAxOTQsIDI0NywgMzAsIDEsIDIwMywgOTAsIDI0NywgMzAsIDEsIDIwOCwgMTc5LCAyNDcsIDMwLCAxLCAyMTIsIDY0LCAyNDcsIAorICAgIDMwLCAxLCAxNDQsIDI0NywgMzAsIDIyLCAyLCAyNTIsIDEzOCwgMjQ3LCAzMCwgMjIsIDIsIDcwLCAyNDcsIDMwLCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDI0NywgMzAsIDIyLCAyLCAyMzgsIDIzNCwgMjQ3LCAzMCwgMjIsIDIsIDY2LCAyNDcsIDMwLCAyMiwgMiwgCisgICAgMjE3LCAxMjEsIDI0NywgMzAsIDIyLCAyLCA3NCwgMjQ3LCAzMCwgMjIsIDIsIDI1MSwgMTc2LCAyNDcsIDMwLCAyMiwgMiwgCisgICAgMjUwLCAxMzksIDI0NywgMzAsIDIyLCAyLCAyMDQsIDMxLCAyNDcsIDMwLCAxMTEsIDIsIDE4MywgMjQ3LCAzMCwgMTExLCAyLCAKKyAgICAyMTMsIDI1MiwgMjQ3LCAzMCwgMTExLCAyLCAxOTQsIDI0NywgMzAsIDExMSwgMiwgMjAxLCAxMTQsIDI0NywgMzAsIDEsIAorICAgIDQ3LCAyMjcsIDExOCwgMjQ3LCAzMCwgMSwgNDcsIDIzNiwgMTU2LCAyNDcsIDMwLCAxLCA0NywgMjE5LCAyNTUsIDI0NywgCisgICAgMzAsIDExMSwgMiwgNDcsIDIxOSwgMjU1LCAyNDcsIDMwLCAxLCA0NywgMjQ3LCAzOCwgMjQ3LCAzMCwgMSwgNDcsIDIwNywgCisgICAgODMsIDI0NywgMzAsIDEsIDQ3LCAyMjAsIDIxNCwgMjQ3LCAzMCwgMSwgNDcsIDIxNiwgMjI2LCAyNDcsIDMwLCAxLCA0NywgCisgICAgMjAwLCAxMjMsIDI0NywgMzAsIDEsIDQ3LCAxNDYsIDI0NywgMzAsIDEsIDQ3LCAxNTYsIDI0NywgMzAsIDEsIDQ3LCAyMDgsIAorICAgIDE4MiwgMjQ3LCAzMCwgMTExLCAyLCA0NywgMjIzLCAyNDMsIDI0NywgMzAsIDExMSwgMiwgNDcsIDIzNCwgMjQ3LCAyNDcsIAorICAgIDMwLCAxNywgMTk5LCA4MSwgMjQ3LCAzMCwgMTcsIDEwMiwgMjQ3LCAzMCwgMTcsIDEwNSwgMjQ3LCAzMCwgMTcsIDE0NywgCisgICAgMjQ3LCAzMCwgMTcsIDE0OSwgMjQ3LCAzMCwgMTcsIDE2NCwgMjQ3LCAzMCwgMTcsIDE4NywgMjQ3LCAzMCwgMTcsIDIxMCwgCisgICAgMTM1LCAyNDcsIDMwLCAxNywgMTkyLCAyNDcsIDMwLCAxNywgMjE5LCAxMTMsIDI0NywgMzAsIDIxNCwgMjEyLCAyMDgsIAorICAgIDIxNywgMjQ3LCAzMCwgMjE0LCAyMTIsIDI0MiwgMTAsIDI0NywgMzAsIDIxNCwgMjEyLCA1MywgMjQyLCAxMCwgMjQ3LCAzMCwgCisgICAgMjE0LCAyMTIsIDIwNSwgODMsIDI0MiwgMTAsIDcxLCAxLCAyMjYsIDIwMCwgMjM2LCA4OSwgNzEsIDEsIDIyNiwgMjAwLCAKKyAgICAyNDcsIDE5MCwgNzEsIDEsIDIyNiwgMjAwLCAyNDcsIDM3LCA3MSwgMSwgMjI2LCAyMDAsIDIyNywgMjQ4LCA3MSwgMSwgCisgICAgMjI2LCAyMDAsIDIyNywgMjE1LCA3MSwgMSwgMjI2LCAyMDAsIDIxOCwgNjAsIDcxLCAxLCAyMjYsIDIwMCwgMjA0LCAyNTMsIAorICAgIDcxLCAxLCAyMjYsIDIwMCwgMjA0LCAyNDEsIDcxLCAxLCAyMjYsIDIwMCwgMjQxLCAyMjAsIDcxLCAxLCAyMjYsIDIwMCwgCisgICAgMjQxLCAyMDQsIDcxLCAxLCAyMjYsIDIwMCwgMjQxLCAxMDAsIDcxLCAxLCAyMjYsIDIwMCwgMTg4LCA3MSwgMSwgMjI2LCAKKyAgICAyMDAsIDIxMiwgNjQsIDcxLCAxLCAyMjYsIDIwMCwgMTQ0LCA3MSwgMSwgMjI2LCAyMDAsIDIzNCwgODQsIDcxLCAxLCAyMjYsIAorICAgIDIwMCwgMjM3LCAxOTUsIDcxLCA2NywgMSwgMjI2LCAyMDAsIDIxMywgMTY4LCA3MSwgMSwgMjI2LCAyMDAsIDIwMCwgMTgxLCAKKyAgICA3MSwgMSwgMjI2LCAyMDAsIDE5OSwgMTE0LCA3MSwgMSwgMjI2LCAyMDAsIDIxMywgMjUyLCA3MSwgMjI0LCA5NywgMjI2LCAKKyAgICAyMDAsIDIxNywgMTQzLCA3MSwgMjI0LCA5NywgMjI2LCAyMDAsIDIxNCwgMTEwLCA3MSwgMjI0LCA5NywgMjI2LCAyMDAsIAorICAgIDIzNCwgNiwgNzEsIDE2LCAyNTEsIDE2MywgMjM4LCA0MiwgNzEsIDE2LCAyNTEsIDE2MywgMTAyLCA3MSwgMTYsIDI1MSwgCisgICAgMTYzLCAxMDUsIDcxLCAxLCAyNTEsIDE2MywgMjEzLCAyNTIsIDcxLCAyLCAyMTYsIDEzNywgMjI3LCA0NCwgMjA1LCAxNzQsIAorICAgIDcxLCAyLCA0NiwgMjI1LCAxNDgsIDIwNSwgMTcyLCA3MSwgMiwgNDYsIDIyNSwgMTQ4LCAyMDUsIDE2OSwgNzEsIDEsIDIwOSwgCisgICAgMTk4LCAyMTYsIDE4MSwgMjQ3LCAzNywgNzEsIDEsIDIwOSwgMTk4LCAyMTYsIDE4MSwgMjEwLCAxMTQsIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCAyMjYsIDg4LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjI2LCA4OCwgNDYsIDIwMiwgMjI0LCAxLCAKKyAgICAxMjgsIDIyNiwgMTc4LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjI2LCAxNzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMjYsIAorICAgIDE4NywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyNiwgMTg3LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjM1LCAxMTYsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMSwgMTIyLCAyMzUsIDExNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxOSwgMTc4LCA0NiwgMjAyLCAyMjQsIAorICAgIDEsIDEyMiwgMjE5LCAxNzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyNDYsIDkxLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgCisgICAgMjQ2LCA5MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDI0NiwgMjEwLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjQ2LCAyMTAsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMDksIDI5LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjA5LCAyOSwgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDIxOCwgMjYsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMTgsIDI2LCA0NiwgMjAyLCAyMjQsIDEsIAorICAgIDEyOCwgMjQwLCAyMTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyNDAsIDIxMSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDEzOCwgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDEzOCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIwNiwgNjEsIDQ2LCAyMDIsIDIyNCwgCisgICAgMSwgMTIyLCAyMDYsIDYxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjE4LCAyNDEsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAKKyAgICAyMTgsIDI0MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDI0OCwgMTI0LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjQ4LCAxMjQsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTUsIDEwNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIxNSwgMTA2LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgMjE1LCAyMTcsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMTUsIDIxNywgNDYsIDIwMiwgMjI0LCAxLCAKKyAgICAxMjgsIDIzNywgMTMsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMzcsIDEzLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjIxLCAKKyAgICAxMzYsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjEsIDEzNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDE5OSwgMjQ1LCA0NiwgCisgICAgMjAyLCAyMjQsIDEsIDEyMiwgMTk5LCAyNDUsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTMsIDEsIDQ2LCAyMDIsIDIyNCwgCisgICAgMSwgMTIyLCAyMTMsIDEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMjQsIDExMCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIAorICAgIDIyNCwgMTEwLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjAyLCAxOTMsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMDIsIDE5MywgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIzMywgMjA3LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjMzLCAyMDcsIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCA3NCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDc0LCA0NiwgMjAyLCAyMjQsIDIyMiwgMTk5LCAyMjcsIAorICAgIDY0LCA0NiwgMjAyLCAyMjQsIDIyLCAyNTIsIDEzOCwgNDYsIDIwMiwgMjI0LCAyMiwgNzAsIDQ2LCAyMDIsIDIyNCwgMjIsIAorICAgIDIwNCwgMzEsIDQ2LCAyMDIsIDIyNCwgMjIsIDY2LCA0NiwgMjAyLCAyMjQsIDIyLCA3MiwgNDYsIDIwMiwgMjI0LCAyMiwgCisgICAgNzQsIDQ2LCAyMDIsIDIyNCwgMjIyLCAxOTksIDIyNiwgMTgxLCA0NiwgMjAyLCAyMjQsIDIyLCAyMzIsIDI0MCwgNDYsIAorICAgIDIwMiwgMjI0LCAyMiwgMjA0LCAzMCwgNDYsIDIwMiwgMjI0LCAyMiwgMjA0LCA0NiwgNDYsIDIwMiwgMjI0LCAyMiwgMjUwLCAKKyAgICAxMzcsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MCwgMTEyLCA0NiwgMjAyLCAyMjQsIDIyLCAyNTEsIDg1LCA0NiwgMjAyLCAyMjQsIAorICAgIDIyLCAyNTEsIDEwMSwgNDYsIDIwMiwgMjI0LCAxNTAsIDIyMiwgMTk5LCAyMzgsIDIxNiwgNDYsIDIwMiwgMjI0LCAxNTAsIAorICAgIDIyMiwgMTk5LCAyMTgsIDEwMSwgNDYsIDIwMiwgMjI0LCAxNTAsIDIyMiwgMTk5LCAyMDYsIDYxLCA0NiwgMjAyLCAyMjQsIAorICAgIDE1MCwgMjIyLCAxOTksIDIwOSwgMTIsIDQ2LCAyMDIsIDIyNCwgMTYsIDIyNiwgNzEsIDQ2LCAyMDIsIDIyNCwgMTYsIDIxOCwgCisgICAgMTAxLCA0NiwgMjAyLCAyMjQsIDE2LCAyMTIsIDIzLCA0NiwgMjAyLCAyMjQsIDE2LCAyMzMsIDIwOCwgMjMzLCAyMDIsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMTYsIDIyNiwgODEsIDIyNiwgODAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCA3MiwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDEsIDc0LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQ3LCAzNywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxOCwgNjAsIAorICAgIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDQsIDI1MywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNCwgMjQxLCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMSwgMjQxLCAyMjAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDEsIDIwNCwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDIxOSwgMjEsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTAsIDExNCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwOCwgCisgICAgMTc5LCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIyOCwgMTUxLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwMywgCisgICAgMTgyLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDI1MiwgMTAyLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDI1MCwgCisgICAgMTM5LCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDI1MiwgOTUsIDIyMiwgNTgsIDIyMiwgMTE3LCAyNDYsIDI1MywgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDI1MSwgMTgyLCAyMjYsIDE3MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDI1MSwgNjIsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCA1LCAyMTMsIDEzMCwgODEsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMDAsIDIzOCwgMjEzLCAxMzAsIDgxLCAKKyAgICAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwMiwgMjAzLCAyMjIsIDU4LCAyMjIsIDExNywgMjAyLCAyMDgsIDM0LCA1LCAKKyAgICAyMDQsIDIzNCwgMzQsIDUsIDIwNCwgMjM3LCAzNCwgNSwgMjA0LCAyNDAsIDM0LCA1LCAyMDQsIDIzOCwgMzQsIDUsIDIwNCwgCisgICAgMjM5LCAzNCwgNSwgMjA0LCAyMzYsIDM0LCA1LCAyNDEsIDE5OCwgMzQsIDUsIDI0MSwgMjAwLCAzNCwgNSwgMjQxLCAyMDMsIAorICAgIDM0LCA1LCAyNDEsIDIwMSwgMzQsIDUsIDI0MSwgMjAyLCAzNCwgNSwgMjQxLCAxOTksIDM0LCA1LCAyMzksIDgwLCAzNCwgNSwgCisgICAgMjM5LCA4NCwgMzQsIDUsIDIzOSwgOTIsIDM0LCA1LCAyMzksIDg5LCAzNCwgNSwgMjM5LCA5MCwgMzQsIDUsIDIzOSwgODEsIAorICAgIDM0LCA1LCAyNDcsIDkwLCAzNCwgNSwgMjQ3LCA4NCwgMzQsIDUsIDI0NywgODYsIDM0LCA1LCAyNDcsIDg5LCAzNCwgNSwgCisgICAgMjQ3LCA4NywgMzQsIDUsIDI0NywgODgsIDM0LCA1LCAyNDcsIDg1LCAzNCwgNSwgMjQ5LCA0NCwgMzQsIDUsIDI0OSwgMjMsIAorICAgIDM0LCA1LCAyNDksIDM1LCAzNCwgNSwgMjQ5LCA0MywgMzQsIDUsIDI0OSwgMzgsIDM0LCA1LCAyNDksIDM5LCAzNCwgNSwgCisgICAgMjQ5LCAyNywgOCwgNCwgMSwgMjQ5LCA3MSwgMjUxLCAxMTIsIDgsIDQsIDEsIDM1LCAyMTMsIDEwMywgOCwgNCwgMSwgMjQ4LCAKKyAgICAxNDAsIDcyLCA4LCA0LCAxLCAyNDksIDcxLCA3MiwgOCwgNCwgMSwgMTk3LCAzLCAyMzcsIDI2LCA4LCA0LCAxLCAyMjQsIAorICAgIDI0OSwgMjM4LCA1LCA4LCA0LCAxLCAxMzUsIDIzNiwgMTU3LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDIyOCwgNTAsIDIyNSwgNDcsIDIxMiwgMTIyLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgNTMsIDEwMSwgMjA1LCAyNDAsIDgsIAorICAgIDQsIDEsIDIyNSwgMTkzLCAzLCAxMDEsIDIxMywgMjYsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgCisgICAgMjIwLCAyMTUsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyMzgsIDE2NiwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDI0OCwgMTQwLCAKKyAgICA3NCwgOCwgNCwgMSwgMjQ4LCAxNDAsIDE2MywgMywgOTcsIDgsIDQsIDEsIDE3NiwgMTYzLCAzLCA5NywgOCwgNCwgMSwgCisgICAgMjI4LCA1MCwgMjE3LCAxMjEsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMTcsIDEyMiwgMywgOTcsIDgsIDQsIDEsIDIwNCwgMTg1LCAKKyAgICAyMTcsIDEyMiwgMywgMjMzLCAxNzcsIDk3LCA4LCA0LCAxLCAyMDQsIDE4NSwgMTYzLCAyMTcsIDQ5LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMTYzLCAyMTcsIDUwLCAzLCA5NywgOCwgNCwgMSwgMjA4LCA4MSwgMTQ2LCA4LCAxLCA0LCA2LCAyMTQsIDMzLCAzLCAKKyAgICA1MSwgMjI1LCAxNiwgOCwgNCwgMSwgMjE0LCAzMywgMjAxLCAzLCAyMzQsIDE3NywgOCwgNCwgMSwgNTMsIDE0NiwgOCwgNCwgCisgICAgMSwgMjE0LCAzMywgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDUzLCAyMTQsIDMzLCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMTM1LCAKKyAgICAxNDYsIDgsIDQsIDEsIDEzNSwgMjE0LCAzMywgMywgMjEzLCAyNiwgOCwgNCwgMSwgMjQ5LCA2MiwgMjM4LCA5NCwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyMDksIDI1MCwgNTEsIDIyNSwgMTYsIDgsIDQsIDEsIDEwOCwgMjQ5LCA3NywgMywgMjA5LCAyNTAsIDUxLCAKKyAgICAyMjUsIDE2LCA4LCA0LCAxLCAyMDQsIDIzLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjA0LCAyMywgOCwgNCwgMSwgMTA4LCAzLCAKKyAgICA0OSwgMTE3LCA4LCA0LCAxLCAyNDYsIDIzNiwgOCwgNCwgMSwgMjQ2LCAyMzcsIDMsIDEyOCwgNTEsIDIxMywgMjYsIDgsIDQsIAorICAgIDEsIDI0NiwgMjM3LCAzLCAxMjgsIDQ5LCAyMTAsIDE0OSwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDEyOCwgNTEsIDIxMywgCisgICAgMjYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxNjgsIDQ5LCAyMjUsIDE2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTY4LCAKKyAgICA0OSwgMjI1LCAxNywgMjYsIDEyOCwgNTEsIDIxMywgMjYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxNjgsIDQ5LCAyMjUsIAorICAgIDE3LCAzLCAyMTAsIDE0OSwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIwOSwgMjUwLCA1MSwgMjI1LCAxNiwgNjcsIDI0OCwgCisgICAgNTgsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDY3LCAxLCA0LCAyMzQsIDEwMywgNjcsIDEsIDQsIDIyNSwgMTkzLCAzLCAyMjgsIAorICAgIDUwLCAyMjUsIDQ3LCAyMTIsIDEyMiwgNjcsIDEsIDQsIDIyNSwgMTkzLCAzLCAxMDEsIDIwNSwgMjQwLCA2NywgMSwgNCwgCisgICAgMTA4LCAzLCA0OSwgMTE3LCA4LCA0LCAxLCAyMTIsIDM5LCAyMDAsIDY1LCA4LCA0LCAxLCAyMjgsIDM5LCA3MiwgOCwgNCwgCisgICAgMSwgMTc2LCAyMTcsIDEyMSwgOCwgNCwgMSwgMjAzLCAyMzIsIDgsIDQsIDEsIDIyOCwgNTAsIDI1MSwgMTEyLCAzMSwgMSwgCisgICAgNCwgNiwgMjE3LCA4MywgOTEsIDQsIDEsIDYyLCA5MSwgNCwgMSwgNzIsIDkxLCA0LCAxLCA3MCwgOTEsIDQsIDEsIDc0LCAKKyAgICA5MSwgNCwgMSwgNjYsIDkxLCA0LCAxLCAyMDMsIDE2OCwgOTEsIDQsIDEsIDIzNiwgODksIDkxLCA0LCAxLCAxNjEsIDkxLCAKKyAgICA0LCAxLCAyMzYsIDE1LCA5MSwgNCwgMSwgMjM1LCAxNjEsIDkxLCA0LCAxLCAyMzUsIDExNiwgOTEsIDQsIDEsIDIzNSwgNTAsIAorICAgIDkxLCA0LCAxLCAyMzUsIDEyLCA5MSwgNCwgMSwgMTQ0LCA5MSwgNCwgMSwgMjM0LCAxMzksIDkxLCA0LCAxLCAyMzQsIDc1LCAKKyAgICA5MSwgNCwgMSwgMjMzLCAyMDcsIDkxLCA0LCAxLCAyMzMsIDk3LCA5MSwgNCwgMSwgMjMzLCA2OSwgOTEsIDQsIDEsIDE5NCwgCisgICAgOTEsIDQsIDEsIDIyNSwgNDAsIDkxLCA0LCAxLCAyMjQsIDIxMCwgOTEsIDQsIDEsIDIyNCwgMTEwLCA5MSwgNCwgMSwgMjI0LCAKKyAgICA0MiwgOTEsIDQsIDEsIDIyNCwgMTEsIDkxLCA0LCAxLCAxNzgsIDkxLCA0LCAxLCAyMjIsIDc2LCA5MSwgNCwgMSwgMjIxLCAKKyAgICAyMTEsIDkxLCA0LCAxLCAyMjEsIDEzNiwgOTEsIDQsIDEsIDIyMSwgNDEsIDkxLCA0LCAxLCAxODgsIDkxLCA0LCAxLCAyMzMsIAorICAgIDIzMSwgOTEsIDQsIDEsIDIyMCwgMTQ0LCA5MSwgNCwgMSwgMjIwLCAzNCwgOTEsIDQsIDEsIDIxOSwgMTUwLCA5MSwgNCwgMSwgCisgICAgMjE4LCAyNDEsIDkxLCA0LCAxLCAyMTgsIDEzMywgOTEsIDQsIDEsIDIxOCwgNzEsIDkxLCA0LCAxLCAyMTQsIDk2LCA5MSwgCisgICAgNCwgMSwgMjE0LCA4MiwgOTEsIDQsIDEsIDIxNCwgNzUsIDkxLCA0LCAxLCAyMTQsIDY2LCA5MSwgNCwgMSwgMjE0LCA1NSwgCisgICAgOTEsIDQsIDEsIDIxNCwgNTMsIDkxLCA0LCAxLCAyMTIsIDY0LCA5MSwgNCwgMSwgMjEyLCAxMjIsIDkxLCA0LCAxLCAyMTEsIAorICAgIDIwMiwgOTEsIDQsIDEsIDIwOSwgMTgyLCA5MSwgNCwgMSwgMjA5LCAyOSwgOTEsIDQsIDEsIDIwOCwgMjQsIDkxLCA0LCAxLCAKKyAgICAyMDcsIDE5MSwgOTEsIDQsIDEsIDI0MiwgNTgsIDkxLCA0LCAxLCAyMDcsIDM2LCA5MSwgNCwgMSwgMjQxLCAxNzUsIDkxLCAKKyAgICA0LCAxLCAyMDYsIDIwMSwgOTEsIDQsIDEsIDI0MSwgNzYsIDkxLCA0LCAxLCAyMDYsIDE1LCA5MSwgNCwgMSwgMjQwLCAyMTEsIAorICAgIDkxLCA0LCAxLCAyMzksIDEzNywgOTEsIDQsIDEsIDIzOSwgMTA3LCA5MSwgNCwgMSwgMjQwLCAyMjIsIDkxLCA0LCAxLCAKKyAgICAyMDUsIDIwMywgOTEsIDQsIDEsIDIwNSwgMjAyLCA5MSwgNCwgMSwgMjA1LCAxOTEsIDkxLCA0LCAxLCAyMDUsIDE5MCwgOTEsIAorICAgIDQsIDEsIDIwNSwgMTg5LCA5MSwgNCwgMSwgMjA1LCAxODgsIDkxLCA0LCAxLCAyMDUsIDMyLCA5MSwgNCwgMSwgMjA1LCAyNiwgCisgICAgOTEsIDQsIDEsIDIwNSwgMTEsIDkxLCA0LCAxLCAyMDUsIDksIDkxLCA0LCAxLCAyMDUsIDUsIDkxLCA0LCAxLCAyMDUsIDQsIAorICAgIDkxLCA0LCAxLCAyMDEsIDExNCwgOTEsIDQsIDEsIDIwMSwgNjQsIDkxLCA0LCAxLCAyMDEsIDMxLCA5MSwgNCwgMSwgMjAxLCAKKyAgICAwLCA5MSwgNCwgMSwgMjAwLCAyMTYsIDkxLCA0LCAxLCAyMDAsIDIwMywgOTEsIDQsIDEsIDE4MywgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDEsIDIyNiwgNzgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTIsIDIzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgCisgICAgMjI1LCAxNDksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjEsIDE0NywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDE3MiwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDE4OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0NiwgMjI4LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjA1LCAyNDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjYsIDE3MywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxOSwgCisgICAgMTY4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA2LCA1MywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwMSwgMTA4LCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMSwgMjAwLCA3NSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzMywgODksIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAxLCAyMDQsIDUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCA3MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxNSwgMjM5LCAKKyAgICAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjUwLCAxNTAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzUsIDEwOSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDEsIDIyNywgMjEzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjEzLCAyMjksIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyNDksIDEzNiwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyNywgMTk4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQxLCAKKyAgICAzMywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzNSwgMTY4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQxLCA3OCwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDI0OCwgMTk4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjI2LCA3OSwgMjI0LCA3OSwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDIyNSwgMTUwLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjIxLCAxNDgsIDIyNCwgCisgICAgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTYsIDIxMSwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyMCwgCisgICAgMTYyLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA1LCAyNDMsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyMTksIDE2OSwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzMywgMTksIDIyNCwgNzksIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAyMiwgMiwgMjE3LCA3NiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMjgsIDExNSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDIyLCAyLCAyNTEsIDgzLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwMCwgNDAsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAyMiwgMiwgMjA5LCAyLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwNCwgMiwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDIyLCAyLCAyNDYsIDI1MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMTgsIDg2LCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMjQ2LCAyNTIsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMjQsIDI2LCAyMjgsIDEsIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAyNTEsIDIsIDIyOCwgMSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxOTksIDgxLCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIAorICAgIDEwMiwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxMDUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTQ3LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMTcsIDE0OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxNjQsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgCisgICAgMTg3LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDIxMCwgMTM1LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE5MiwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDE3LCAyMTksIDExMywgMjksIDE4MSwgMjE3LCAyMjMsIDI5LCAxODEsIDIxNywgMjI4LCAyOSwgCisgICAgMTgxLCAxOTksIDI0NCwgMjksIDE4MSwgMTk5LCAyNDMsIDI5LCAxODEsIDE5OSwgMjQyLCAyOSwgMTgxLCAyMDQsIDk2LCAKKyAgICAyOSwgMTgxLCAyMDQsIDEwMCwgMjksIDE4MSwgMTk5LCAyMDksIDI5LCAxODEsIDE5OSwgMjA1LCAyOSwgMTgxLCAyMzgsIAorICAgIDY4LCAyOSwgMTgxLCAyMzgsIDY2LCAyOSwgMTgxLCAyMzgsIDY3LCAyOSwgMTgxLCAyMzgsIDY0LCAyOSwgMTgxLCAyMzMsIAorICAgIDksIDI5LCAxODEsIDIzMywgOCwgMjksIDE4MSwgMjMzLCA2LCAyOSwgMTgxLCAyMzMsIDcsIDI5LCAxODEsIDIzMywgMTIsIAorICAgIDI5LCAxODEsIDIzMywgNSwgMjksIDE4MSwgMjMzLCA0LCAyOSwgMTgxLCAyMzMsIDE0LCAyOSwgMTgxLCAyNTAsIDI0NCwgCisgICAgMjksIDE4MSwgMjUwLCAyNDMsIDI5LCAxMTAsIDIxOSwgMTM2LCAyOSwgMTEwLCAyMTksIDE0MiwgMjksIDExMCwgMjA4LCAKKyAgICAxNjAsIDI5LCAxMTAsIDIwOCwgMTU5LCAyOSwgMTEwLCAyMDUsIDI0OCwgMjksIDExMCwgMjA1LCAyNDYsIDI5LCAxMTAsIAorICAgIDIwNSwgMjQ1LCAyOSwgMTEwLCAyMDUsIDI1MSwgMjksIDExMCwgMjA1LCAyNTIsIDI5LCAxMTAsIDIwNSwgMjQ0LCAyOSwgCisgICAgMTEwLCAyMTMsIDU3LCAyOSwgMTEwLCAyMTMsIDcyLCAyOSwgMTEwLCAyMDgsIDE2NiwgMjksIDExMCwgMjEzLCA2OSwgMjksIAorICAgIDExMCwgMjEzLCA1OSwgMjksIDExMCwgMjEzLCA2MSwgMjksIDExMCwgMjEzLCA0OCwgMjksIDExMCwgMjEzLCA0OSwgMjksIAorICAgIDExMCwgMjI3LCA1MCwgMjksIDExMCwgMjIxLCAxOTIsIDI5LCAxMTAsIDIyMSwgMTg2LCAyOSwgMTEwLCAyMDgsIDE3MCwgCisgICAgMjksIDExMCwgMjIxLCAxODksIDI5LCAxMTAsIDIyMSwgMTk1LCAyOSwgMTEwLCAyMTUsIDE3MSwgMjksIDExMCwgMjE1LCAKKyAgICAxODAsIDI5LCAxMTAsIDIxNSwgMTg0LCAyOSwgMTEwLCAyMDgsIDE2OCwgMjksIDExMCwgMjE1LCAxNzQsIDI5LCAxMTAsIAorICAgIDIxNSwgMTg4LCAyOSwgMTEwLCAyMTUsIDE4OSwgMjksIDExMCwgMjA5LCAxMjEsIDI5LCAxMTAsIDIwOSwgMTI0LCAyOSwgCisgICAgMTEwLCAyMDgsIDE2NCwgMjksIDExMCwgMjA4LCAxNjIsIDI5LCAxMTAsIDIwOSwgMTE5LCAyOSwgMTEwLCAyMDksIDEyNywgCisgICAgMjksIDExMCwgMjA5LCAxMjgsIDI5LCAxMTAsIDIwOSwgMTEzLCAyOSwgMTEwLCAyMDksIDEyNiwgMjksIDExMCwgMjE2LCAKKyAgICAxNDQsIDI5LCAxMTAsIDIxNiwgMTQ1LCAyOSwgMTEwLCAyMDAsIDI2LCAyOSwgMTEwLCAyMDAsIDI3LCAyOSwgMTEwLCAyNDYsIAorICAgIDE2NiwgMjksIDExMCwgMjQ2LCAxNjUsIDI5LCAxMTAsIDIwOCwgMTc1LCAyOSwgMTEwLCAyMTUsIDIyNCwgMjksIDExMCwgCisgICAgMjE1LCAyMjMsIDEyLCAxNSwgMjMwLCAxNDIsIDEyLCAxNSwgMjMwLCAxNDEsIDEyLCAxNSwgMjMwLCAxNDAsIDEyLCAxNSwgCisgICAgMjMwLCAxMzksIDEyLCAxNSwgMjMwLCAxMzgsIDEyLCAxNSwgMjMwLCAxMzcsIDEyLCAxNSwgMjMwLCAxMzYsIDEyLCAxNSwgCisgICAgMjMwLCAxMzUsIDEyLCAxNSwgMjMwLCAxMzQsIDEyLCAxNSwgMjMwLCAxMzMsIDEyLCAxNSwgMjMwLCAxMzIsIDEyLCAxNSwgCisgICAgMjMwLCAxMzEsIDEyLCAxNSwgMjMwLCAxMzAsIDEyLCAxNSwgMjMwLCAxMjksIDEyLCAxNSwgMjMwLCAxMjgsIDEyLCAxNSwgCisgICAgMjMwLCAxMjcsIDEyLCAxNSwgMjMwLCAxMjYsIDEyLCAxNSwgMjMwLCAxMjUsIDEyLCAxNSwgMjMwLCAxMjQsIDEyLCAxNSwgCisgICAgMjMwLCAxMjMsIDEyLCAxNSwgMjMwLCAxMjIsIDEyLCAxNSwgMjMwLCAxMjEsIDEyLCAxNSwgMjMwLCAxMjAsIDEyLCAxNSwgCisgICAgMjMwLCAxMTksIDEyLCAxNSwgMjMwLCAxMTgsIDEyLCAxNSwgMjMwLCAxMTcsIDEyLCAxNSwgMjMwLCAxMTYsIDEyLCAxNSwgCisgICAgMjMwLCAxMTUsIDEyLCAxNSwgMjMwLCAxMTQsIDEyLCAxNSwgMjMwLCAxMTMsIDEyLCAxNSwgMjMwLCAxMTIsIDEyLCAxNSwgCisgICAgMjMwLCAxMTEsIDEyLCAxNSwgMjMwLCAxMTAsIDEyLCAxNSwgMjMwLCAxMDksIDEyLCAxNSwgMjMwLCAxMDgsIDEyLCAxNSwgCisgICAgMjMwLCAxMDcsIDEyLCAxNSwgMjMwLCAxMDYsIDEyLCAxNSwgMjMwLCAxMDUsIDEyLCAxNSwgMjMwLCAxMDQsIDEyLCAxNSwgCisgICAgMjMwLCAxMDMsIDEyLCAxNSwgMjMwLCAxMDIsIDEyLCAxNSwgMjMwLCAxMDEsIDEyLCAxNSwgMjMwLCAxMDAsIDEyLCAxNSwgCisgICAgMjMwLCA5OSwgMTIsIDE1LCAyMzAsIDk4LCAxMiwgMTUsIDIzMCwgOTcsIDEyLCAxNSwgMjMwLCA5NiwgMTIsIDE1LCAyMzAsIAorICAgIDk1LCAxMiwgMTUsIDIzMCwgOTQsIDEyLCAxNSwgMjMwLCA5MywgMTIsIDE1LCAyMzAsIDkyLCAxMiwgMTUsIDIzMCwgOTEsIAorICAgIDEyLCAxNSwgMjMwLCA5MCwgMTIsIDE1LCAyMzAsIDg5LCAxMiwgMTUsIDIzMCwgODgsIDEyLCAxNSwgMjMwLCA4NywgMTIsIAorICAgIDE1LCAyMzAsIDg2LCAxMiwgMTUsIDIzMCwgODUsIDEyLCAxNSwgMjMwLCA4NCwgMTIsIDE1LCAyMzAsIDgzLCAxMiwgMTUsIAorICAgIDIzMCwgODIsIDEyLCAxNSwgMjMwLCA4MSwgMTIsIDE1LCAyMzAsIDgwLCAxMiwgMTUsIDIzMCwgNzksIDEyLCAxNSwgMjMwLCAKKyAgICA3OCwgMTIsIDE1LCAyMzAsIDc3LCAxMiwgMTUsIDIzMCwgNzYsIDEyLCAxNSwgMjMwLCA3NSwgMTIsIDE1LCAyMzAsIDc0LCAKKyAgICAxMiwgMTUsIDIzMCwgNzMsIDEyLCAxNSwgMjMwLCA3MiwgMTIsIDE1LCAyMzAsIDcxLCAxMiwgMTUsIDIzMCwgNzAsIDEyLCAKKyAgICAxNSwgMjMwLCA2OSwgMTIsIDE1LCAyMzAsIDY4LCAxMiwgMTUsIDIzMCwgNjcsIDEyLCAxNSwgMjMwLCA2NiwgMTIsIDE1LCAKKyAgICAyMzAsIDY1LCAxMiwgMTUsIDIzMCwgNjQsIDEyLCAxNSwgMjMwLCA2MywgMTIsIDE1LCAyMzAsIDYyLCAxMiwgMTUsIDIzMCwgCisgICAgNjEsIDEyLCAxNSwgMjMwLCA2MCwgMTIsIDE1LCAyMzAsIDU5LCAxMiwgMTUsIDIzMCwgNTgsIDEyLCAxNSwgMjMwLCA1NywgCisgICAgMTIsIDE1LCAyMzAsIDU2LCAxMiwgMTUsIDIzMCwgNTUsIDEyLCAxNSwgMjMwLCA1NCwgMTIsIDE1LCAyMzAsIDUzLCAxMiwgCisgICAgMTUsIDIzMCwgNTIsIDEyLCAxNSwgMjMwLCA1MSwgMTIsIDE1LCAyMzAsIDUwLCAxMiwgMTUsIDIzMCwgNDksIDEyLCAxNSwgCisgICAgMjMwLCA0OCwgMTIsIDE1LCAyMzAsIDQ3LCAxMiwgMTUsIDIzMCwgNDYsIDEyLCAxNSwgMjMwLCA0NSwgMTIsIDE1LCAyMzAsIAorICAgIDQ0LCAxMiwgMTUsIDIzMCwgNDMsIDEyLCAxNSwgMjMwLCA0MiwgMTIsIDE1LCAyMzAsIDQxLCAxMiwgMTUsIDIzMCwgNDAsIAorICAgIDEyLCAxNSwgMjMwLCAzOSwgMTIsIDE1LCAyMzAsIDM4LCAxMiwgMTUsIDIzMCwgMzcsIDEyLCAxNSwgMjMwLCAzNiwgMTIsIAorICAgIDE1LCAyMzAsIDM1LCAxMiwgMTUsIDIzMCwgMzQsIDEyLCAxNSwgMjMwLCAzMywgMTIsIDE1LCAyMzAsIDMyLCAxMiwgMTUsIAorICAgIDIzMCwgMzEsIDEyLCAxNSwgMjMwLCAzMCwgMTIsIDE1LCAyMzAsIDI5LCAxMiwgMTUsIDIzMCwgMjgsIDEyLCAxNSwgMjMwLCAKKyAgICAyNywgMTIsIDE1LCAyMzAsIDI2LCAxMiwgMTUsIDIzMCwgMjUsIDEyLCAxNSwgMjMwLCAyNCwgMTIsIDE1LCAyMzAsIDIzLCAKKyAgICAxMiwgMTUsIDIzMCwgMjIsIDEyLCAxNSwgMjMwLCAyMSwgMTIsIDE1LCAyMzAsIDIwLCAxMiwgMTUsIDIzMCwgMTksIDEyLCAKKyAgICAxNSwgMjMwLCAxOCwgMTIsIDE1LCAyMzAsIDE3LCAxMiwgMTUsIDIzMCwgMTYsIDEyLCAxNSwgMjMwLCAxNSwgMTIsIDE1LCAKKyAgICAyMzAsIDE0LCAxMiwgMTUsIDIzMCwgMTMsIDEyLCAxNSwgMjMwLCAxMiwgMTIsIDE1LCAyMzAsIDExLCAxMiwgMTUsIDIzMCwgCisgICAgMTAsIDEyLCAxNSwgMjMwLCA5LCAxMiwgMTUsIDIzMCwgOCwgMTIsIDE1LCAyMzAsIDcsIDEyLCAxNSwgMjMwLCA2LCAxMiwgCisgICAgMTUsIDIzMCwgNSwgMTIsIDE1LCAyMzAsIDQsIDEyLCAxNSwgMjMwLCAzLCAxMiwgMTUsIDIzMCwgMiwgMTIsIDE1LCAyMzAsIAorICAgIDEsIDEyLCAxNSwgMjMwLCAwLCAxMiwgMTUsIDIyOSwgMjU1LCAxMiwgMTUsIDIyOSwgMjU0LCAxMiwgMTUsIDIyOSwgMjUzLCAKKyAgICAxMiwgMTUsIDIyOSwgMjUyLCAxMiwgMTUsIDIyOSwgMjUxLCAxMiwgMTUsIDIyOSwgMjUwLCAxMiwgMTUsIDIyOSwgMjQ5LCAKKyAgICAxMiwgMTUsIDIyOSwgMjQ4LCAxMiwgMTUsIDIyOSwgMjQ3LCAxMiwgMTUsIDIyOSwgMjQ2LCAxMiwgMTUsIDIyOSwgMjQ1LCAKKyAgICAxMiwgMTUsIDIyOSwgMjQ0LCAxMiwgMTUsIDIyOSwgMjQzLCAxMiwgMTUsIDIyOSwgMjQyLCAxMiwgMTUsIDIyOSwgMjQxLCAKKyAgICAxMiwgMTUsIDIyOSwgMjQwLCAxMiwgMTUsIDIyOSwgMjM5LCAxMiwgMTUsIDIyOSwgMjM4LCAxMiwgMTUsIDIyOSwgMjM3LCAKKyAgICAxMiwgMTUsIDIyOSwgMjM2LCAxMiwgMTUsIDIyOSwgMjM1LCAxMiwgMTUsIDIyOSwgMjM0LCAxMiwgMTUsIDIyOSwgMjMzLCAKKyAgICAxMiwgMTUsIDIyOSwgMjMyLCAxMiwgMTUsIDIyOSwgMjMxLCAxMiwgMTUsIDIyOSwgMjMwLCAxMiwgMTUsIDIyOSwgMjI5LCAKKyAgICAxMiwgMTUsIDIyOSwgMjI4LCAxMiwgMTUsIDIyOSwgMjI3LCAxMiwgMTUsIDIyOSwgMjI2LCAxMiwgMTUsIDIyOSwgMjI1LCAKKyAgICAxMiwgMTUsIDIyOSwgMjI0LCAxMiwgMTUsIDIyOSwgMjIzLCAxMiwgMTUsIDIyOSwgMjIyLCAxMiwgMTUsIDIyOSwgMjIxLCAKKyAgICAxMiwgMTUsIDIyOSwgMjIwLCAxMiwgMTUsIDIyOSwgMjE5LCAxMiwgMTUsIDIyOSwgMjE4LCAxMiwgMTUsIDIyOSwgMjE3LCAKKyAgICAxMiwgMTUsIDIyOSwgMjE2LCAxMiwgMTUsIDIyOSwgMjE1LCAxMiwgMTUsIDIyOSwgMjE0LCAxMiwgMTUsIDIyOSwgMjEzLCAKKyAgICAxMiwgMTUsIDIyOSwgMjEyLCAxMiwgMTUsIDIyOSwgMjExLCAxMiwgMTUsIDIyOSwgMjEwLCAxMiwgMTUsIDIyOSwgMjA5LCAKKyAgICAxMiwgMTUsIDIyOSwgMjA4LCAxMiwgMTUsIDIyOSwgMjA3LCAxMiwgMTUsIDIyOSwgMjA2LCAxMiwgMTUsIDIyOSwgMjA1LCAKKyAgICAxMiwgMTUsIDIyOSwgMjA0LCAxMiwgMTUsIDIyOSwgMjAzLCAxMiwgMTUsIDIyOSwgMjAyLCAxMiwgMTUsIDIyOSwgMjAxLCAKKyAgICAxMiwgMTUsIDIyOSwgMjAwLCAxMiwgMTUsIDIyOSwgMTk5LCAxMiwgMTUsIDIyOSwgMTk4LCAxMiwgMTUsIDIyOSwgMTk3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTk2LCAxMiwgMTUsIDIyOSwgMTk1LCAxMiwgMTUsIDIyOSwgMTk0LCAxMiwgMTUsIDIyOSwgMTkzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTkyLCAxMiwgMTUsIDIyOSwgMTkxLCAxMiwgMTUsIDIyOSwgMTkwLCAxMiwgMTUsIDIyOSwgMTg5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTg4LCAxMiwgMTUsIDIyOSwgMTg3LCAxMiwgMTUsIDIyOSwgMTg2LCAxMiwgMTUsIDIyOSwgMTg1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTg0LCAxMiwgMTUsIDIyOSwgMTgzLCAxMiwgMTUsIDIyOSwgMTgyLCAxMiwgMTUsIDIyOSwgMTgxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTgwLCAxMiwgMTUsIDIyOSwgMTc5LCAxMiwgMTUsIDIyOSwgMTc4LCAxMiwgMTUsIDIyOSwgMTc3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTc2LCAxMiwgMTUsIDIyOSwgMTc1LCAxMiwgMTUsIDIyOSwgMTc0LCAxMiwgMTUsIDIyOSwgMTczLCAKKyAgICAxMiwgMTUsIDIyOSwgMTcyLCAxMiwgMTUsIDIyOSwgMTcxLCAxMiwgMTUsIDIyOSwgMTcwLCAxMiwgMTUsIDIyOSwgMTY5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTY4LCAxMiwgMTUsIDIyOSwgMTY3LCAxMiwgMTUsIDIyOSwgMTY2LCAxMiwgMTUsIDIyOSwgMTY1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTY0LCAxMiwgMTUsIDIyOSwgMTYzLCAxMiwgMTUsIDIyOSwgMTYyLCAxMiwgMTUsIDIyOSwgMTYxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTYwLCAxMiwgMTUsIDIyOSwgMTU5LCAxMiwgMTUsIDIyOSwgMTU4LCAxMiwgMTUsIDIyOSwgMTU3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTU2LCAxMiwgMTUsIDIyOSwgMTU1LCAxMiwgMTUsIDIyOSwgMTU0LCAxMiwgMTUsIDIyOSwgMTUzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTUyLCAxMiwgMTUsIDIyOSwgMTUxLCAxMiwgMTUsIDIyOSwgMTUwLCAxMiwgMTUsIDIyOSwgMTQ5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTQ4LCAxMiwgMTUsIDIyOSwgMTQ3LCAxMiwgMTUsIDIyOSwgMTQ2LCAxMiwgMTUsIDIyOSwgMTQ1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTQ0LCAxMiwgMTUsIDIyOSwgMTQzLCAxMiwgMTUsIDIyOSwgMTQyLCAxMiwgMTUsIDIyOSwgMTQxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTQwLCAxMiwgMTUsIDIyOSwgMTM5LCAxMiwgMTUsIDIyOSwgMTM4LCAxMiwgMTUsIDIyOSwgMTM3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTM2LCAxMiwgMTUsIDIyOSwgMTM1LCAxMiwgMTUsIDIyOSwgMTM0LCAxMiwgMTUsIDIyOSwgMTMzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTMyLCAxMiwgMTUsIDIyOSwgMTMxLCAxMiwgMTUsIDIyOSwgMTMwLCAxMiwgMTUsIDIyOSwgMTI5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTI4LCAxMiwgMTUsIDIyOSwgMTI3LCAxMiwgMTUsIDIyOSwgMTI2LCAxMiwgMTUsIDIyOSwgMTI1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTI0LCAxMiwgMTUsIDIyOSwgMTIzLCAxMiwgMTUsIDIyOSwgMTIyLCAxMiwgMTUsIDIyOSwgMTIxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTIwLCAxMiwgMTUsIDIyOSwgMTE5LCAxMiwgMTUsIDIyOSwgMTE4LCAxMiwgMTUsIDIyOSwgMTE3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTE2LCAxMiwgMTUsIDIyOSwgMTE1LCAxMiwgMTUsIDIyOSwgMTE0LCAxMiwgMTUsIDIyOSwgMTEzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTEyLCAxMiwgMTUsIDIyOSwgMTExLCAxMiwgMTUsIDIyOSwgMTEwLCAxMiwgMTUsIDIyOSwgMTA5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTA4LCAxMiwgMTUsIDIyOSwgMTA3LCAxMiwgMTUsIDIyOSwgMTA2LCAxMiwgMTUsIDIyOSwgMTA1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTA0LCAxMiwgMTUsIDIyOSwgMTAzLCAxMiwgMTUsIDIyOSwgMTAyLCAxMiwgMTUsIDIyOSwgMTAxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTAwLCAxMiwgMTUsIDIyOSwgOTksIDEyLCAxNSwgMjI5LCA5OCwgMTIsIDE1LCAyMjksIDk3LCAxMiwgCisgICAgMTUsIDIyOSwgOTYsIDEyLCAxNSwgMjI5LCA5NSwgMTIsIDE1LCAyMjksIDk0LCAxMiwgMTUsIDIyOSwgOTMsIDEyLCAxNSwgCisgICAgMjI5LCA5MiwgMTIsIDE1LCAyMjksIDkxLCAxMiwgMTUsIDIyOSwgOTAsIDEyLCAxNSwgMjI5LCA4OSwgMTIsIDE1LCAyMjksIAorICAgIDg4LCAxMiwgMTUsIDIyOSwgODcsIDEyLCAxNSwgMjI5LCA4NiwgMTIsIDE1LCAyMjksIDg1LCAxMiwgMTUsIDIyOSwgODQsIAorICAgIDEyLCAxNSwgMjI5LCA4MywgMTIsIDE1LCAyMjksIDgyLCAxMiwgMTUsIDIyOSwgODEsIDEyLCAxNSwgMjI5LCA4MCwgMTIsIAorICAgIDE1LCAyMjksIDc5LCAxMiwgMTUsIDIyOSwgNzgsIDEyLCAxNSwgMjI5LCA3NywgMTIsIDE1LCAyMjksIDc2LCAxMiwgMTUsIAorICAgIDIyOSwgNzUsIDEyLCAxNSwgMjI5LCA3NCwgMTIsIDE1LCAyMjksIDczLCAxMiwgMTUsIDIyOSwgNzIsIDEyLCAxNSwgMjI5LCAKKyAgICA3MSwgMTIsIDE1LCAyMjksIDcwLCAxMiwgMTUsIDIyOSwgNjksIDEyLCAxNSwgMjI5LCA2OCwgMTIsIDE1LCAyMjksIDY3LCAKKyAgICAxMiwgMTUsIDIyOSwgNjYsIDEyLCAxNSwgMjI5LCA2NSwgMTIsIDE1LCAyMjksIDY0LCAxMiwgMTUsIDIyOSwgNjMsIDEyLCAKKyAgICAxNSwgMjI5LCA2MiwgMTIsIDE1LCAyMjksIDYxLCAxMiwgMTUsIDIyOSwgNjAsIDEyLCAxNSwgMjI5LCA1OSwgMTIsIDE1LCAKKyAgICAyMjksIDU4LCAxMiwgMTUsIDIyOSwgNTcsIDEyLCAxNSwgMjI5LCA1NiwgMTIsIDE1LCAyMjksIDU1LCAxMiwgMTUsIDIyOSwgCisgICAgNTQsIDEyLCAxNSwgMjI5LCA1MywgMTIsIDE1LCAyMjksIDUyLCAxMiwgMTUsIDIyOSwgNTEsIDEyLCAxNSwgMjI5LCA1MCwgCisgICAgMTIsIDE1LCAyMjksIDQ5LCAxMiwgMTUsIDIyOSwgNDgsIDEyLCAxNSwgMjI5LCA0NywgMTIsIDE1LCAyMjksIDQ2LCAxMiwgCisgICAgMTUsIDIyOSwgNDUsIDEyLCAxNSwgMjI5LCA0NCwgMTIsIDE1LCAyMjksIDQzLCAxMiwgMTUsIDIyOSwgNDIsIDEyLCAxNSwgCisgICAgMjI5LCA0MSwgMTIsIDE1LCAyMjksIDQwLCAxMiwgMTUsIDIyOSwgMzksIDEyLCAxNSwgMjI5LCAzOCwgMTIsIDE1LCAyMjksIAorICAgIDM3LCAxMiwgMTUsIDIyOSwgMzYsIDEyLCAxNSwgMjI5LCAzNSwgMTIsIDE1LCAyMjksIDM0LCAxMiwgMTUsIDIyOSwgMzMsIAorICAgIDEyLCAxNSwgMjI5LCAzMiwgMTIsIDE1LCAyMjksIDMxLCAxMiwgMTUsIDIyOSwgMzAsIDEyLCAxNSwgMjI5LCAyOSwgMTIsIAorICAgIDE1LCAyMjksIDI4LCAxMiwgMTUsIDIyOSwgMjcsIDEyLCAxNSwgMjI5LCAyNiwgMTIsIDE1LCAyMjksIDI1LCAxMiwgMTUsIAorICAgIDIyOSwgMjQsIDEyLCAxNSwgMjI5LCAyMywgMTIsIDE1LCAyMjksIDIyLCAxMiwgMTUsIDIyOSwgMjEsIDEyLCAxNSwgMjI5LCAKKyAgICAyMCwgMTIsIDE1LCAyMjksIDE5LCAxMiwgMTUsIDIyOSwgMTgsIDEyLCAxNSwgMjI5LCAxNywgMTIsIDE1LCAyMjksIDE2LCAKKyAgICAxMiwgMTUsIDIyOSwgMTUsIDEyLCAxNSwgMjI5LCAxNCwgMTIsIDE1LCAyMjksIDEzLCAxMiwgMTUsIDIyOSwgMTIsIDEyLCAKKyAgICAxNSwgMjI5LCAxMSwgMTIsIDE1LCAyMjksIDEwLCAxMiwgMTUsIDIyOSwgOSwgMTIsIDE1LCAyMjksIDgsIDEyLCAxNSwgCisgICAgMjI5LCA3LCAxMiwgMTUsIDIyOSwgNiwgMTIsIDE1LCAyMjksIDUsIDEyLCAxNSwgMjI5LCA0LCAxMiwgMTUsIDIyOSwgMywgCisgICAgMTIsIDE1LCAyMjksIDIsIDEyLCAxNSwgMjI5LCAxLCAxMiwgMTUsIDIyOSwgMCwgMTIsIDE1LCAyMjgsIDI1NSwgMTIsIDE1LCAKKyAgICAyMjgsIDI1NCwgMTIsIDE1LCAyMjgsIDI1MywgMTIsIDE1LCAyMjgsIDI1MiwgMTIsIDE1LCAyMjgsIDI1MSwgMTIsIDE1LCAKKyAgICAyMjgsIDI1MCwgMTIsIDE1LCAyMjgsIDI0OSwgMTIsIDE1LCAyMjgsIDI0OCwgMTIsIDE1LCAyMjgsIDI0NywgMTIsIDE1LCAKKyAgICAyMjgsIDI0NiwgMTIsIDE1LCAyMjgsIDI0NSwgMTIsIDE1LCAyMjgsIDI0NCwgMTIsIDE1LCAyMjgsIDI0MywgMTIsIDE1LCAKKyAgICAyMjgsIDI0MiwgMTIsIDE1LCAyMjgsIDI0MSwgMTIsIDE1LCAyMjgsIDI0MCwgMTIsIDE1LCAyMjgsIDIzOSwgMTIsIDE1LCAKKyAgICAyMjgsIDIzOCwgMTIsIDE1LCAyMjgsIDIzNywgMTIsIDE1LCAyMjgsIDIzNiwgMTIsIDE1LCAyMjgsIDIzNSwgMTIsIDE1LCAKKyAgICAyMjgsIDIzNCwgMTIsIDE1LCAyMjgsIDIzMywgMTIsIDE1LCAyMjgsIDIzMiwgMTIsIDE1LCAyMjgsIDIzMSwgMTIsIDE1LCAKKyAgICAyMjgsIDIzMCwgMTIsIDE1LCAyMjgsIDIyOSwgMTIsIDE1LCAyMjgsIDIyOCwgMTIsIDE1LCAyMjgsIDIyNywgMTIsIDE1LCAKKyAgICAyMjgsIDIyNiwgMTIsIDE1LCAyMjgsIDIyNSwgMTIsIDE1LCAyMjgsIDIyNCwgMTIsIDE1LCAyMjgsIDIyMywgMTIsIDE1LCAKKyAgICAyMjgsIDIyMiwgMTIsIDE1LCAyMjgsIDIyMSwgMTIsIDE1LCAyMjgsIDIyMCwgMTIsIDE1LCAyMjgsIDIxOSwgMTIsIDE1LCAKKyAgICAyMjgsIDIxOCwgMTIsIDE1LCAyMjgsIDIxNywgMTIsIDE1LCAyMjgsIDIxNiwgMTIsIDE1LCAyMjgsIDIxNSwgMTIsIDE1LCAKKyAgICAyMjgsIDIxNCwgMTIsIDE1LCAyMjgsIDIxMywgMTIsIDE1LCAyMjgsIDIxMiwgMTIsIDE1LCAyMjgsIDIxMSwgMTIsIDE1LCAKKyAgICAyMjgsIDIxMCwgMTIsIDE1LCAyMjgsIDIwOSwgMTIsIDE1LCAyMjgsIDIwOCwgMTIsIDE1LCAyMjgsIDIwNywgMTIsIDE1LCAKKyAgICAyMjgsIDIwNiwgMTIsIDE1LCAyMjgsIDIwNSwgMTIsIDE1LCAyMjgsIDIwNCwgMTIsIDE1LCAyMjgsIDIwMywgMTIsIDE1LCAKKyAgICAyMjgsIDIwMiwgMTIsIDE1LCAyMjgsIDIwMSwgMTIsIDE1LCAyMjgsIDIwMCwgMTIsIDE1LCAyMjgsIDE5OSwgMTIsIDE1LCAKKyAgICAyMjgsIDE5OCwgMTIsIDE1LCAyMjgsIDE5NywgMTIsIDE1LCAyMjgsIDE5NiwgMTIsIDE1LCAyMjgsIDE5NSwgMTIsIDE1LCAKKyAgICAyMjgsIDE5NCwgMTIsIDE1LCAyMjgsIDE5MywgMTIsIDE1LCAyMjgsIDE5MiwgMTIsIDE1LCAyMjgsIDE5MSwgMTIsIDE1LCAKKyAgICAyMjgsIDE5MCwgMTIsIDE1LCAyMjgsIDE4OSwgMTIsIDE1LCAyMjgsIDE4OCwgMTIsIDE1LCAyMjgsIDE4NywgMTIsIDE1LCAKKyAgICAyMjgsIDE4NiwgMTIsIDE1LCAyMjgsIDE4NSwgMTIsIDE1LCAyMjgsIDE4NCwgMTIsIDE1LCAyMjgsIDE4MywgOCwgNCwgMzMsIAorICAgIDIzNywgMTE2LCA4LCA0LCAzMywgMjM3LCAxMTIsIDgsIDQsIDMzLCAyMzcsIDU2LCA4LCA0LCAzMywgMjM3LCAxMTUsIDgsIAorICAgIDQsIDMzLCAyMzcsIDExNCwgOCwgNCwgMzMsIDE2OCwgMjEyLCAxMjMsIDIwNywgODMsIDgsIDQsIDMzLCAyMDgsIDEyMywgCisgICAgMTg0LCA0LCAzMywgMjIyLCA0MSwgMjE4LCAyMDEsIDE4NCwgNCwgMzMsIDIyMiwgNDEsIDIzOSwgNSwgMTg0LCA0LCAzMywgCisgICAgMjIyLCA0MSwgMjI4LCA4NiwgMTg0LCA0LCAzMywgMjAyLCAyMzksIDIxOCwgMjAxLCAxODQsIDQsIDMzLCAyMjIsIDQxLCAKKyAgICAyMDAsIDE3MywgMTEzLCAxLCAxOTksIDIzNSwgMywgMjM0LCA0NywgMTEzLCAyMTUsIDEwMCwgMjI3LCAxNDYsIDIwMywgNzEsIAorICAgIDExMywgMzMsIDIwMCwgNywgMTk5LCAyMzUsIDE5OSwgMjM1LCAyMTYsIDkzLCAxMTMsIDEsIDI1MSwgMTA0LCAyNTAsIDEwNywgCisgICAgMTEzLCAxLCAyMDEsIDI4LCAyNTEsIDE0MiwgMTEzLCAxLCAyMDEsIDI4LCAyNDIsIDIzLCAxMTMsIDEsIDIwMSwgMjgsIAorICAgIDIzNCwgMTM5LCAxMTMsIDEsIDIwMSwgMjgsIDIyNywgODYsIDExMywgMSwgMjAxLCAyOCwgMjI1LCA4MywgMTEzLCAxLCAKKyAgICAyMDEsIDI4LCA0NywgMjIyLCA0NywgMTEzLCAxLCAyMDEsIDI4LCAyMTMsIDEyMywgMTEzLCAxLCAyMDEsIDI4LCAyMDYsIAorICAgIDIxNywgMTEzLCAxLCAyNTEsIDEwNCwgOTMsIDU0LCAxMTMsIDEsIDIxMCwgMjIsIDMsIDIxMCwgMjIsIDI0MCwgMTgyLCAKKyAgICAxMTMsIDEsIDIxMCwgMjIsIDMsIDIwOSwgMTQzLCAyNDAsIDE4MiwgMTEzLCAxLCAyMTAsIDIyLCAzLCAyNDIsIDQzLCAyNiwgCisgICAgMjEwLCAyMiwgMjQwLCAxODIsIDExMywgMSwgMjEwLCAyMiwgMywgMjQyLCA0MywgMjYsIDIwOSwgMTQzLCAyNDAsIDE4MiwgCisgICAgMTEzLCAxLCAxNDAsIDMsIDIxNiwgOTMsIDExMywgMSwgMTQwLCAzLCAyMTQsIDE0NywgMTEzLCAxLCAxNDAsIDMsIDIyMiwgCisgICAgMTYzLCAxMTMsIDEsIDI0OCwgMjExLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIzNSwgMTQ4LCAzLCAyNDIsIDQyLCAxMTMsIDEsIAorICAgIDI0MiwgMjQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjM0LCAxNDAsIDMsIDIyMiwgMTYzLCAxMTMsIDEsIDIwMywgNjQsIDMsIAorICAgIDI0MiwgNDIsIDExMywgMSwgMTk5LCA5MywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDYsIDE0NywgMywgMjQyLCA0MiwgMTEzLCAKKyAgICAxLCAxOTksIDIzNSwgMywgMjQyLCA0MiwgMTEzLCAxLCA0NywgMjI3LCA4NywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMjcsIAorICAgIDg3LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIyNSwgODQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjIyLCA0OCwgMywgMjQyLCA0MiwgCisgICAgMTEzLCAxLCAyMTgsIDkwLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIxMiwgMjAsIDMsIDI0MiwgNDIsIDExMywgMSwgNDcsIAorICAgIDIxNiwgNzQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjE2LCA3NCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDUsIDI4LCAzLCAKKyAgICAyNDIsIDQyLCAxMTMsIDEsIDIxNCwgMTA3LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIxMywgMTI0LCAzLCAyNDIsIDQyLCAxMTMsIAorICAgIDEsIDIxMCwgMjIsIDMsIDI0MiwgNDIsIDExMywgMSwgMjA2LCAyMTgsIDMsIDI0MiwgNDIsIDExMywgMSwgMjAzLCA2NCwgMywgCisgICAgMjMzLCAxOTksIDExMywgMSwgMjQ4LCAyMTEsIDMsIDIxMywgMjMyLCAxMTMsIDEsIDIyNywgODcsIDMsIDIxMywgMjMyLCAKKyAgICAxMTMsIDEsIDIxNiwgNzQsIDMsIDIxMywgMjMyLCAxMTMsIDMzLCAxNDAsIDIyNSwgODMsIDksIDEsIDE0MCwgMjAxLCA5MCwgCisgICAgNjUsIDE5LCA5LCAxLCAxNDAsIDIwMSwgOTAsIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNTEsIDY1LCAxOSwgOSwgMSwgMjQ4LCAKKyAgICAyNTEsIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNTEsIDgyLCAxOSwgOSwgMSwgMjQ4LCAyNTEsIDE3OSwgMTksIDksIDEsIDIxNiwgCisgICAgNTUsIDY1LCAxOSwgOSwgMSwgMjE2LCA1NSwgNDcsIDE5LCA5LCAxLCAyMTYsIDU1LCA4MiwgMTksIDksIDEsIDIxNiwgNTUsIAorICAgIDE3OSwgMTksIDksIDEsIDI0OCwgMjM5LCA2NSwgMTksIDksIDEsIDI0OCwgMjM5LCA0NywgMTksIDksIDEsIDI0OCwgMjM5LCAKKyAgICA4MiwgMTksIDksIDEsIDI0OCwgMjM5LCAxNzksIDE5LCA5LCAxLCAyMDQsIDI0NCwgNjUsIDE5LCA5LCAxLCAyMDQsIDI0NCwgCisgICAgNDcsIDE5LCA5LCAxLCAyMDQsIDI0NCwgODIsIDE5LCA5LCAxLCAyMDQsIDI0NCwgMTc5LCAxOSwgOSwgMSwgMjA2LCAxODIsIAorICAgIDY1LCAxOSwgOSwgMSwgMjA2LCAxODIsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxODIsIDgyLCAxOSwgOSwgMSwgMjA2LCAxODIsIAorICAgIDE3OSwgMTksIDksIDEsIDIwNCwgMjQ2LCA2NSwgMTksIDksIDEsIDIwNCwgMjQ2LCA0NywgMTksIDksIDEsIDIwNCwgMjQ2LCAKKyAgICA4MiwgMTksIDksIDEsIDIwNCwgMjQ2LCAxNzksIDE5LCA5LCAxLCAyMDMsIDUzLCA2NSwgMTksIDksIDEsIDIwMywgNTMsIAorICAgIDQ3LCAxOSwgOSwgMSwgMjAzLCA1MywgODIsIDE5LCA5LCAxLCAyMDMsIDUzLCAxNzksIDE5LCA5LCAxLCAyMTYsIDUzLCA2NSwgCisgICAgMTksIDksIDEsIDIxNiwgNTMsIDQ3LCAxOSwgOSwgMSwgMjE2LCA1MywgODIsIDE5LCA5LCAxLCAyMTYsIDUzLCAxNzksIDE5LCAKKyAgICA5LCAxLCAyMzksIDEwMCwgNjUsIDE5LCA5LCAxLCAyMzksIDEwMCwgNDcsIDE5LCA5LCAxLCAyMzksIDEwMCwgODIsIDE5LCAKKyAgICA5LCAxLCAyMzksIDEwMCwgMTc5LCAxOSwgOSwgMSwgMjE4LCA0OCwgNjUsIDE5LCA5LCAxLCAyMTgsIDQ4LCA0NywgMTksIDksIAorICAgIDEsIDIxOCwgNDgsIDgyLCAxOSwgOSwgMSwgMjE4LCA0OCwgMTc5LCAxOSwgOSwgMSwgMjA2LCAyMDYsIDY1LCAxOSwgOSwgMSwgCisgICAgMjA2LCAyMDYsIDQ3LCAxOSwgOSwgMSwgMjA2LCAyMDYsIDgyLCAxOSwgOSwgMSwgMjA2LCAyMDYsIDE3OSwgMTksIDksIDEsIAorICAgIDIwNiwgMjA0LCA2NSwgMTksIDksIDEsIDIwNiwgMjA0LCA0NywgMTksIDksIDEsIDIwNiwgMjA0LCA4MiwgMTksIDksIDEsIAorICAgIDIwNiwgMjA0LCAxNzksIDE5LCA5LCAxLCAyNDEsIDIxOCwgNjUsIDE5LCA5LCAxLCAyNDEsIDIxOCwgNDcsIDE5LCA5LCAxLCAKKyAgICAyNDIsIDM3LCA2NSwgMTksIDksIDEsIDI0MiwgMzcsIDQ3LCAxOSwgOSwgMSwgMjM5LCAxMjgsIDY1LCAxOSwgOSwgMSwgCisgICAgMjM5LCAxMjgsIDQ3LCAxOSwgOSwgMSwgMjQxLCAyMTYsIDY1LCAxOSwgOSwgMSwgMjQxLCAyMTYsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI3LCAyMjIsIDY1LCAxOSwgOSwgMSwgMjI3LCAyMjIsIDQ3LCAxOSwgOSwgMSwgMjEyLCAyMDgsIDY1LCAxOSwgOSwgMSwgCisgICAgMjEyLCAyMDgsIDQ3LCAxOSwgOSwgMSwgMjI2LCAyNTMsIDY1LCAxOSwgOSwgMSwgMjI2LCAyNTMsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI2LCAyNTMsIDgyLCAxOSwgOSwgMSwgMjI2LCAyNTMsIDE3OSwgMTksIDksIDEsIDIzNiwgNzcsIDY1LCAxOSwgOSwgMSwgCisgICAgMjM2LCA3NywgNDcsIDE5LCA5LCAxLCAyMzYsIDc3LCA4MiwgMTksIDksIDEsIDIzNiwgNzcsIDE3OSwgMTksIDksIDEsIAorICAgIDIzNSwgMzgsIDY1LCAxOSwgOSwgMSwgMjM1LCAzOCwgNDcsIDE5LCA5LCAxLCAyMzUsIDM4LCA4MiwgMTksIDksIDEsIDIzNSwgCisgICAgMzgsIDE3OSwgMTksIDksIDEsIDIxOSwgMTc3LCA2NSwgMTksIDksIDEsIDIxOSwgMTc3LCA0NywgMTksIDksIDEsIDIxOSwgCisgICAgMTc3LCA4MiwgMTksIDksIDEsIDIxOSwgMTc3LCAxNzksIDE5LCA5LCAxLCAyMTgsIDIyOCwgMjM1LCAxNjYsIDY1LCAxOSwgCisgICAgOSwgMSwgMjE4LCAyMjgsIDIzNSwgMTY2LCA0NywgMTksIDksIDEsIDIxMywgNSwgNjUsIDE5LCA5LCAxLCAyMTMsIDUsIDQ3LCAKKyAgICAxOSwgOSwgMSwgMjEzLCA1LCA4MiwgMTksIDksIDEsIDIxMywgNSwgMTc5LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDMsIDkwLCAKKyAgICA4OCwgNjUsIDE5LCA5LCAxLCAyMzQsIDExNiwgMywgOTAsIDg4LCA0NywgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgCisgICAgNjUsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIDQ3LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCA4MiwgCisgICAgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgMTc5LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA4LCA2NSwgMTksIAorICAgIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwOCwgNDcsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDgsIDgyLCAxOSwgOSwgMSwgCisgICAgMjM0LCAxMTYsIDI0MCwgMjA4LCAxNzksIDE5LCA5LCAxLCA5MCwgMjQ5LCA3MCwgNjUsIDE5LCA5LCAxLCA5MCwgMjQ5LCAKKyAgICA3MCwgNDcsIDE5LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIDksIDEsIDkwLCAyNDksIAorICAgIDcwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMTYsIDczLCA1NiwgOSwgMTYsIDczLCA1NywgOSwgMTYsIDEyMCwgCisgICAgMTkwLCA1NiwgOSwgMTYsIDEyMCwgMTkwLCA1NywgOSwgMTYsIDEyNiwgMTkwLCA1NiwgOSwgMTYsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMTYsIDEyNiwgMTkwLCAyMTUsIDk2LCAxOTEsIDU2LCA5LCAxNiwgMTI2LCAxOTAsIDIxNSwgOTYsIDE5MSwgNTcsIDksIAorICAgIDE2LCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgMTYsIDIzNiwgMjI5LCAxOTAsIDU3LCA5LCAxNiwgNTMsIDgzLCAyNDksIDc3LCAKKyAgICA1NywgOSwgMTYsIDEyMCwgMTkwLCAyMDIsIDI0OCwgNTYsIDksIDE2LCAxMjAsIDE5MCwgMjAyLCAyNDgsIDU3LCA5LCAxNiwgCisgICAgMjEzLCAyNiwgOSwgMTYsIDQsIDIwNywgMTAsIDU2LCA5LCAxNiwgNCwgMjA3LCAxMCwgNTcsIDksIDEsIDIyMCwgMCwgNjUsIAorICAgIDE5LCA5LCAxLCAyMjAsIDAsIDQ3LCAxOSwgOSwgMSwgMjIwLCAwLCA4MiwgMTksIDksIDEsIDIyMCwgMCwgMTc5LCAxOSwgOSwgCisgICAgMSwgMTA4LCA2NSwgMTksIDksIDEsIDEwOCwgNDcsIDE5LCA5LCAxLCAyMTcsIDEyMiwgNjUsIDE5LCA5LCAxLCAyMTcsIAorICAgIDEyMiwgNDcsIDE5LCA5LCAxLCAxOTksIDIxMiwgNjUsIDE5LCA5LCAxLCAxOTksIDIxMiwgNDcsIDE5LCA5LCAxLCAxMDgsIAorICAgIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAxLCAyMDMsIDYwLCA2NSwgMTksIDksIDEsIDIwMywgNjAsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjI2LCAxMzksIDIxNywgMTIyLCA2NSwgMTksIDksIDEsIDIyNiwgMTM5LCAyMTcsIDEyMiwgNDcsIDE5LCA5LCAxLCAKKyAgICAyMjYsIDEzOSwgMTk5LCAyMTIsIDY1LCAxOSwgOSwgMSwgMjI2LCAxMzksIDE5OSwgMjEyLCA0NywgMTksIDksIDEsIDE5NywgCisgICAgNjUsIDE5LCA5LCAxLCAxOTcsIDQ3LCAxOSwgOSwgMSwgMTk3LCA4MiwgMTksIDksIDEsIDE5NywgMTc5LCAxOSwgOSwgMSwgCisgICAgMjA0LCAyMiwgMjI3LCAxMiwgMjI2LCAxMzksIDE0MCwgMjIyLCAxODgsIDgyLCAxOSwgOSwgMSwgMjA0LCAyMiwgMjI3LCAKKyAgICAxMiwgMjI2LCAxMzksIDE0MCwgMjIyLCAxODgsIDE3OSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIAorICAgIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgCisgICAgMjA0LCA4OCwgMywgMjUxLCAyMjIsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDI1MSwgMjIyLCAKKyAgICA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMDEsIDczLCA2NSwgMTksIDksIDMzLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCAyMDEsIDczLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxMDgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDEwOCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCAKKyAgICA4OCwgMywgMjE3LCAxMjIsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIxNywgMTIyLCA0NywgMTksIAorICAgIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTksIDIxMiwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCAKKyAgICA4OCwgMywgMTk5LCAyMTIsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5NywgNjUsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk3LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAKKyAgICAxOTcsIDgyLCAxOSwgOSwgMzMsIDIwNCwgMjIsIDIyNiwgMTM5LCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA2NSwgMTksIDksIDMzLCAyMDQsIDIyLCAyMjYsIDEzOSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA0LCAyMiwgMjI2LCAxMzksIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDgyLCAxOSwgOSwgMSwgMjM3LCAxNjIsIDkwLCA2NSwgMTksIDksIDEsIDIzNywgMTYyLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMzcsIDE2MiwgOTAsIDgyLCAxOSwgOSwgMSwgMjM3LCAxNjIsIDkwLCAxNzksIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgCisgICAgMjA0LCA4OCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNTUsIDY1LCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAKKyAgICAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjQ4LCAyNDEsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjQ4LCAKKyAgICAyNDEsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDI0OCwgCisgICAgMjQxLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIwNiwgMTg0LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIwNiwgCisgICAgMTg0LCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMDYsIAorICAgIDE4NCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMDYsIDEwMywgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIwNiwgCisgICAgMTAzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDE5MywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAxOTMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAxNTUsIDMsIDE5MywgNjUsIAorICAgIDE5LCA5LCAzMywgMTU1LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgCisgICAgMjI2LCAyMDQsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTEsIAorICAgIDE4NywgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgCisgICAgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTkzLCA2NSwgMTksIDksIAorICAgIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAKKyAgICAyNDIsIDUzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMDcsIDEwLCAKKyAgICAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMTk5LCAxMDksIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTkzLCAKKyAgICA2NSwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxOTMsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgCisgICAgMjM3LCAxMzUsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMzcsIDEzNSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMzcsIDEzNSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxNCwgCisgICAgMTUzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIxNCwgMTUzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAKKyAgICAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI2LCAKKyAgICAyMDQsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgOTIsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA5MCwgCisgICAgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgOTAsIDY1LCAxOSwgOSwgCisgICAgMzMsIDg0LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIAorICAgIDIwNCwgNjUsIDE5LCA5LCAzMywgODQsIDMsIDg0LCA2NSwgMTksIDksIDMzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIAorICAgIDE5LCA5LCAzMywgODQsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMTgsIDIyOCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIxOCwgMjI4LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIxOCwgMjI4LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjM0LCAKKyAgICAxMTYsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjM0LCAxMTYsIDMsIDkwLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMTU1LCAKKyAgICA2NSwgMTksIDksIDMzLCA5MCwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgCisgICAgOTAsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxMTUsIAorICAgIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDIxMywgMTU1LCAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIAorICAgIDMzLCAxNDAsIDIyMiwgMTg4LCAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjQyLCAxNiwgCisgICAgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDIyNywgMzUsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyMzcsIAorICAgIDE1OSwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDI0MiwgMTgsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAKKyAgICAyMjcsIDM3LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5OSwgCisgICAgMTA2LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgCisgICAgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDgsIAorICAgIDI0MSwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxOTksIDEwNiwgNDcsIDE5LCA5LCAzMywgCisgICAgMjQ4LCAyNDEsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDI0OCwgMjQxLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5OSwgMTA2LCA0NywgMTksIAorICAgIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA5MCwgNDcsIDE5LCAKKyAgICA5LCAzMywgMjA2LCAxMDMsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyMDYsIDEwMywgMywgMTk5LCAxMDYsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDIxOCwgMjI4LCA0NywgMTksIAorICAgIDksIDMzLCAyMDYsIDEwMywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIAorICAgIDkwLCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgOTIsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDIyMiwgMTg4LCAKKyAgICA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCA4NCwgMywgMTQwLCA0NywgMTksIDksIDMzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAKKyAgICAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5OSwgMTA2LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgCisgICAgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIAorICAgIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTQwLCAyMjIsIAorICAgIDE4OCwgMywgMjA3LCAyMTMsIDE0MCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCA5MCwgCisgICAgMywgMTk5LCAxMDYsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIxOCwgMjI4LCAKKyAgICA0NywgMTksIDksIDMzLCA5MCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDkwLCAKKyAgICAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMzQsIDExNiwgCisgICAgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE1NSwgODIsIDE5LCAKKyAgICA5LCAzMywgMjQ4LCAyNDEsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDI0OCwgMjQxLCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5MywgODIsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgCisgICAgMjA2LCAxMDMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAxOTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDE1NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIyNiwgMjA0LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjExLCAKKyAgICAxODcsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIAorICAgIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgCisgICAgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCA4MiwgCisgICAgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE1NSwgODIsIDE5LCA5LCAKKyAgICAzMywgMjQyLCA1MywgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMDcsIDEwLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDE5OSwgMTA5LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIAorICAgIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTkzLCAKKyAgICA4MiwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxOTMsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIzNywgMTM1LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjM3LCAxMzUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTQsIAorICAgIDE1MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCAKKyAgICA5MiwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgODIsIAorICAgIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgODIsIDE5LCAKKyAgICA5LCAzMywgMjI1LCA5MiwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIAorICAgIDMzLCA4NCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMjI2LCAKKyAgICAyMDQsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgODIsIDE5LCAKKyAgICA5LCAzMywgMjE4LCAyMjgsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMTgsIDIyOCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgCisgICAgMjM0LCAxMTYsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMzQsIAorICAgIDExNiwgMywgMjA3LCAyMTMsIDE0MCwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCA5MCwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDE3OSwgMTksIAorICAgIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIAorICAgIDkyLCAxNzksIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDE3OSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMTc5LCAKKyAgICAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMzQsIDExNiwgMTc5LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIAorICAgIDIxMCwgMTA1LCAzLCAyMzcsIDE1OSwgMTc5LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyNDIsIDE4LCAxNzksIDE5LCA5LCAKKyAgICAzMywgMjEwLCAxMDUsIDMsIDIyNywgMzcsIDE3OSwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgCisgICAgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE0MCwgMjIyLCAxODgsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgCisgICAgNjUsIDE5LCA5LCAzMywgMTU1LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMTkzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIAorICAgIDksIDMzLCAxOTMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjI2LCAyMDQsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMTIsIDU3LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjQyLCA1MywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjEwLCAKKyAgICA2MiwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgCisgICAgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgCisgICAgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAKKyAgICAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA3LCAKKyAgICAxMCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNTEsIAorICAgIDE3MiwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAKKyAgICAyMzUsIDE5NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAyMTEsIDE4NywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgNjIsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAKKyAgICA5MCwgNDcsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxOTMsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjI2LCAyMDQsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCA0NywgCisgICAgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIxMywgMTU1LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMjEzLCAxNTUsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCA4MiwgMTksIAorICAgIDksIDMzLCAyMTAsIDYyLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIxMSwgMTg3LCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjM0LCAxMTYsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTkzLCAxNzksIDE5LCA5LCAzMywgCisgICAgMjExLCAxODcsIDMsIDE1NSwgMTc5LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMjYsIDIwNCwgMTc5LCAxOSwgOSwgMzMsIAorICAgIDIxMCwgNjIsIDMsIDE5MywgMTc5LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgMTc5LCAxOSwgOSwgMzMsIDIxMCwgCisgICAgNjIsIDMsIDIyNiwgMjA0LCAxNzksIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDE3OSwgMTksIDksIDMzLCAxOTksIAorICAgIDEwOSwgMywgODQsIDE3OSwgMTksIDksIDMzLCAxNDAsIDMsIDIzNywgMTU3LCA0NywgMTksIDksIDMzLCAxNDAsIDMsIDIzNywgCisgICAgMTU3LCA2NSwgMTksIDIxNywgMTksIDQ5LCAyMTYsIDExNSwgMjE3LCAxOSwgNTEsIDIxNiwgMTE1LCA5LCAzMywgMjA2LCAKKyAgICAxODQsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDMsIDE5MywgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDE1NSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTU1LCAzLCA4NCwgODIsIAorICAgIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAKKyAgICAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgCisgICAgMywgODQsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAxOTMsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDE5MywgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMTU1LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE1NSwgCisgICAgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNTUsIDMsIDE5MywgODIsIDE5LCAKKyAgICA5LCAzMywgMjExLCAxODcsIDMsIDE5MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTkzLCAzLCAxNDAsIAorICAgIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjExLCAKKyAgICAxODcsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgMywgMTkzLCA4MiwgMTksIDksIAorICAgIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDg0LCA4MiwgCisgICAgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgCisgICAgMTU1LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjEwLCAKKyAgICA2MiwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDMsIDIyNiwgMjA0LCA0NywgMTksIDksIAorICAgIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCA4NCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDMsIAorICAgIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjQyLCA1MywgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgMTU1LCA0NywgCisgICAgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE5MywgMywgCisgICAgODQsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAKKyAgICA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjM1LCAxOTUsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgCisgICAgMjI2LCAyMDQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCA4NCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAKKyAgICAzLCAxOTMsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCAxOTMsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgMTU1LCA4MiwgCisgICAgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgMjA0LCAzLCAxOTMsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDIyNiwgCisgICAgMjA0LCA4MiwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgODQsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIAorICAgIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE1NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgCisgICAgMjI4LCAzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDg0LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgCisgICAgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjE4LCAyMjgsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCA5MCwgMywgODQsIDMsIDg0LCA0NywgCisgICAgMTksIDksIDMzLCA5MCwgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMjI2LCAyMDQsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5MywgCisgICAgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgCisgICAgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDE5MywgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxOTMsIDMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIAorICAgIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIyNiwgCisgICAgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCA5MCwgMywgMTkzLCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE1NSwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDMsIAorICAgIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgODQsIDMsIAorICAgIDIyNiwgMjA0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgCisgICAgMjI3LCA4NywgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDg0LCA0NywgMTksIDksIAorICAgIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCAKKyAgICA5LCAzMywgMTU1LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjM3LCAxMzUsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE1NSwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE5MywgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIyNiwgCisgICAgMjA0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgCisgICAgMzAsIDIwMywgMTkyLCAyNTAsIDE4OSwgMjI2LCA2MCwgMjA4LCA3NywgMiwgNjUsIDE5LCA5LCAzMywgMjE0LCAxNDksIAorICAgIDIwMywgMTkyLCAyNTAsIDE4OSwgMjI2LCA2MCwgMjA4LCA3NywgMiwgNjUsIDE5LCA5LCAzMywgMjUxLCAxMjMsIDY1LCAxOSwgCisgICAgOSwgMzMsIDI1MSwgMTU2LCA2NSwgMTksIDksIDMzLCAyMjEsIDEwOSwgNjUsIDE5LCA5LCAzMywgMjEyLCAzMSwgNjUsIDE5LCAKKyAgICA5LCAzMywgMjEzLCAyMDYsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTQ1LCA2NSwgMTksIDksIDMzLCAyMDEsIDkyLCA2NSwgMTksIAorICAgIDksIDMzLCAyMTIsIDMwLCA2NSwgMTksIDksIDMzLCAyMTIsIDI5LCAyNTEsIDE0NSwgMjAxLCA5MSwgOSwgMzMsIDIyNywgCisgICAgMjM5LCAyMTMsIDg3LCA1NCwgOSwgMzMsIDI0OCwgMTU0LCAyNTAsIDI1MSwgMjUwLCAyNTIsIDU4LCAyMTEsIDE3NCwgNTgsIAorICAgIDIxMSwgNjMsIDU4LCAyMTAsIDI1MSwgNTgsIDIxMCwgMjQwLCA1OCwgMjEwLCAyMjksIDU4LCAyMTAsIDIxOCwgNTgsIDIxMCwgCisgICAgMjA3LCA1OCwgMjEwLCAxOTYsIDU4LCAyMTAsIDE4NSwgNTgsIDIxMSwgMTczLCA1OCwgMjExLCAxNjIsIDU4LCAyMTEsIAorICAgIDE1MSwgNTgsIDIxMSwgMTQwLCA1OCwgMjExLCAxMjksIDU4LCAyMTEsIDExOCwgNTgsIDIxMSwgMTA3LCAyMTUsIDE5LCAKKyAgICAyMzYsIDI0MiwgMzYsIDgzLCAyNDYsIDcwLCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAxNDEsIDI0NiwgNzAsIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDE0MSwgMjM2LCAxODMsIDIwOCwgNzYsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIAorICAgIDI0NiwgNzksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIxMCwgMTY3LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAKKyAgICAyMzgsIDQzLCA4MSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjE0LCA3OSwgODEsIDIxNSwgMTksIDIzNiwgMjQyLCAKKyAgICAzNiwgODMsIDQ5LCA2NCwgMjI0LCAyNDcsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDY0LCAyMjQsIAorICAgIDI0NywgMjQ4LCA2OCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjMzLCAxNzcsIDIzOCwgMTk1LCAzOCwgMzMsIDQ5LCAKKyAgICAyMzQsIDIxMywgMzgsIDMzLCA1MSwgMjM0LCAyMTMsIDM4LCA1MywgMjA1LCAyNDEsIDQ5LCAyMzQsIDIxMywgMzgsIDUzLCAKKyAgICAyMDUsIDI0MSwgNTEsIDIzNCwgMjEzLCAzOCwgMjIyLCAyMjksIDQ5LCAyMzQsIDIxMywgMzgsIDIyMiwgMjI5LCA1MSwgCisgICAgMjM0LCAyMTMsIDM4LCAyNDMsIDU2LCAyMjIsIDIyOCwgMzgsIDMzLCA0OSwgMTY3LCA1NywgMzgsIDMzLCA1MSwgMTY3LCAKKyAgICA1NywgMzgsIDIwNSwgMjQxLCA0OSwgMTY3LCA1NywgMzgsIDIwNSwgMjQxLCA1MSwgMTY3LCA1NywgMzgsIDIyMiwgMjI5LCAKKyAgICA0OSwgMTY3LCA1NywgMzgsIDIyMiwgMjI5LCA1MSwgMTY3LCA1NywgMzgsIDI0MywgNTYsIDIyMiwgMjI5LCA1NywgMzgsIAorICAgIDM3LCAyMDUsIDIxMSwgNDksIDIzNCwgMjEzLCAzOCwgMzcsIDIwNSwgMjExLCA1MSwgMjM0LCAyMTMsIDIxNSwgMTksIDIzNiwgCisgICAgMjQyLCAzNiwgODMsIDEyMCwgNzMsIDIyNSwgMzgsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIzOCwgMTkxLCAyNDEsIAorICAgIDI0NCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjM4LCAxODAsIDI0MSwgMjQ0LCAyMTUsIDE5LCAyMzYsIDI0MiwgCisgICAgMzYsIDgzLCAxMjgsIDIyNCwgMTc2LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMDEsIDc0LCAxMjgsIDIyNCwgMTc2LCAKKyAgICAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjE2LCAxMTUsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAKKyAgICAyMTYsIDExNSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDI0MiwgMTk2LCAxNTksIDIxNSwgMTksIDIzNiwgCisgICAgMjQyLCAzNiwgODMsIDUxLCAyNDIsIDE5NiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjA1LCAxNDYsIAorICAgIDIxMCwgNTUsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA2MywgMjI0LCAyNDcsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgCisgICAgNTEsIDYzLCAyMjQsIDI0NywgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNTMsIDI1MSwgNzEsIDE1OSwgCisgICAgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDUzLCAyNTEsIDcxLCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgCisgICAgODMsIDQ5LCAyNTEsIDcxLCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAyNTEsIDcxLCAxNTksIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyNDMsIDE2LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAKKyAgICAyNDMsIDE2LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA2NCwgMjQzLCAxNiwgMTU5LCAyMTUsIDE5LCAKKyAgICAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgNjQsIDI0MywgMTYsIDE1OSwgMjEwLCAxNDUsIDI0MCwgMTgyLCA2NCwgMjEwLCAxNDUsIAorICAgIDI0MCwgMTgyLCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNTIsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCAKKyAgICA4MywgNTEsIDUyLCAxNTksIDI0MSwgMjQzLCAyMTYsIDI0MSwgMjQ3LCA1MiwgMjE2LCAyNDEsIDIwMSwgNzQsIDIxNiwgCisgICAgMjQxLCA1MywgMjAxLCA3NCwgMjE2LCAyNDEsIDI0MSwgMjQzLCAxMjgsIDIyNCwgMTc2LCAyNDcsIDUyLCAxMjgsIDIyNCwgCisgICAgMTc2LCAyMDEsIDc0LCAxMjgsIDIyNCwgMTc2LCA0LCAyNDYsIDcwLCA0LCAxNDEsIDI0NiwgNzAsIDQsIDIzNiwgMTgzLCAKKyAgICAyMDgsIDc2LCA0LCAyMTAsIDE2NywgNCwgMjQ2LCA3OSwgNCwgMjE0LCA3OSwgODEsIDQsIDIzOCwgNDMsIDgxLCA0LCAyMzgsIAorICAgIDE5MSwgMjQxLCAyNDQsIDQsIDQ5LCAyMTYsIDExNSwgNCwgNTEsIDIxNiwgMTE1LCA0LCA0OSwgMjQyLCAxOTYsIDE1OSwgNCwgCisgICAgNTEsIDI0MiwgMTk2LCAxNTksIDQsIDQ5LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA0LCA1MSwgMjA1LCAxNDYsIDIxMCwgCisgICAgNTUsIDE1OSwgNCwgNDEsIDU0LCA0LCAyNTEsIDg5LCA0LCAyNTAsIDE2NSwgNCwgOTMsIDU0LCA0LCAyMzMsIDMyLCA0LCAKKyAgICAyMjQsIDI0MSwgNTQsIDQsIDIzNSwgNjcsIDU0LCA0LCAyMzgsIDEyMiwgNTQsIDQsIDIxMywgMTA2LCAyMDksIDE2LCA0LCAKKyAgICAyNDAsIDE5NCwgNTQsIDQsIDIxNiwgMjcsIDU0LCA0LCAyNDYsIDY4LCAyNTAsIDE1NSwgOSwgMjM3LCAxNTcsIDY1LCAxOSwgCisgICAgOSwgMjA2LCAyMjQsIDMsIDIzNywgMTU3LCA1NiwgOSwgMjQyLCAxNiwgNjUsIDE5LCA5LCAyMDcsIDcsIDIzNiwgMjE4LCA5LCAKKyAgICAyMjcsIDM1LCA2NSwgMTksIDksIDIzNywgMTU5LCA2NSwgMTksIDksIDIzNywgMTU5LCAxNzksIDE5LCA5LCAyNDIsIDE4LCAKKyAgICA2NSwgMTksIDksIDI0MiwgMTgsIDE3OSwgMTksIDksIDIyNywgMzcsIDY1LCAxOSwgOSwgMjI3LCAzNywgMTc5LCAxOSwgOSwgCisgICAgMjEwLCAxMDUsIDY1LCAxOSwgOSwgMjEwLCAxMDUsIDE3OSwgMTksIDksIDIwNywgMjM3LCA2NSwgMTksIDksIDIwNywgMjM3LCAKKyAgICAxNzksIDE5LCA5LCAxLCAyMzQsIDIwNCwgNjUsIDE5LCA5LCAxLCAxNDAsIDMsIDIyMiwgMjI0LCA4OCwgNjUsIDE5LCA5LCAKKyAgICAxLCAxNDAsIDMsIDIyMiwgMjI0LCA4OCwgNDcsIDE5LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAKKyAgICAxLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxLCAyMDEsIDczLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgCisgICAgOSwgMSwgMjAxLCA3MywgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDI0OCwgMjI4LCAKKyAgICA2NSwgMTksIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDI0OCwgMjI4LCA0NywgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgCisgICAgODgsIDY1LCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAKKyAgICA4MiwgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDE3OSwgMTksIDksIDEsIDE0MCwgNjUsIDE5LCA5LCAxLCAxNDAsIAorICAgIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNDEsIDY1LCAxOSwgOSwgMSwgMjQ4LCAyNDEsIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNDEsIAorICAgIDgyLCAxOSwgOSwgMSwgMjQ4LCAyNDEsIDE3OSwgMTksIDksIDEsIDIwNiwgMTg0LCAyMjIsIDE1NywgNjUsIDE5LCA5LCAxLCAKKyAgICAyMDYsIDE4NCwgMjIyLCAxNTcsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxODQsIDY1LCAxOSwgOSwgMSwgMjA2LCAxODQsIDQ3LCAKKyAgICAxOSwgOSwgMSwgMjA2LCAxODQsIDgyLCAxOSwgOSwgMSwgMjA2LCAxODQsIDE3OSwgMTksIDksIDEsIDIwNiwgMTAzLCA2NSwgCisgICAgMTksIDksIDEsIDIwNiwgMTAzLCA0NywgMTksIDksIDEsIDIwNiwgMTAzLCA4MiwgMTksIDksIDEsIDIwNiwgMTAzLCAxNzksIAorICAgIDE5LCA5LCAxLCAxOTMsIDY1LCAxOSwgOSwgMSwgMTkzLCA0NywgMTksIDksIDEsIDE5MywgODIsIDE5LCA5LCAxLCAxOTMsIAorICAgIDE3OSwgMTksIDksIDEsIDE1NSwgNjUsIDE5LCA5LCAxLCAxNTUsIDQ3LCAxOSwgOSwgMSwgMTU1LCA4MiwgMTksIDksIDEsIAorICAgIDE1NSwgMTc5LCAxOSwgOSwgMSwgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMSwgMjI2LCAyMDQsIDQ3LCAxOSwgOSwgMSwgMjI2LCAKKyAgICAyMDQsIDgyLCAxOSwgOSwgMSwgMjI2LCAyMDQsIDE3OSwgMTksIDksIDEsIDI0MiwgMzAsIDY1LCAxOSwgOSwgMSwgMjQyLCAKKyAgICAzMCwgNDcsIDE5LCA5LCAxLCAyMDYsIDExNSwgNjUsIDE5LCA5LCAxLCAyMDYsIDExNSwgNDcsIDE5LCA5LCAxLCAyMTMsIAorICAgIDE1NSwgNjUsIDE5LCA5LCAxLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAxLCAxOTksIDEwNiwgNjUsIDE5LCA5LCAxLCAxOTksIAorICAgIDEwNiwgNDcsIDE5LCA5LCAxLCAyMTEsIDE4NywgNjUsIDE5LCA5LCAxLCAyMTEsIDE4NywgNDcsIDE5LCA5LCAxLCAyMTEsIAorICAgIDE4NywgODIsIDE5LCA5LCAxLCAyMTEsIDE4NywgMTc5LCAxOSwgOSwgMSwgMjEwLCA2MiwgNjUsIDE5LCA5LCAxLCAyMTAsIAorICAgIDYyLCA0NywgMTksIDksIDEsIDIxMCwgNjIsIDgyLCAxOSwgOSwgMSwgMjEwLCA2MiwgMTc5LCAxOSwgOSwgMSwgMjEyLCA1NywgCisgICAgNjUsIDE5LCA5LCAxLCAyMTIsIDU3LCA0NywgMTksIDksIDEsIDIxMiwgNTcsIDgyLCAxOSwgOSwgMSwgMjEyLCA1NywgMTc5LCAKKyAgICAxOSwgOSwgMSwgMjQyLCA1MywgNjUsIDE5LCA5LCAxLCAyNDIsIDUzLCA0NywgMTksIDksIDEsIDI0MiwgNTMsIDgyLCAxOSwgCisgICAgOSwgMSwgMjQyLCA1MywgMTc5LCAxOSwgOSwgMSwgMjA3LCAxMCwgNjUsIDE5LCA5LCAxLCAyMDcsIDEwLCA0NywgMTksIDksIAorICAgIDEsIDIwNywgMTAsIDgyLCAxOSwgOSwgMSwgMjA3LCAxMCwgMTc5LCAxOSwgOSwgMSwgMTk5LCAxMDksIDY1LCAxOSwgOSwgMSwgCisgICAgMTk5LCAxMDksIDQ3LCAxOSwgOSwgMSwgMTk5LCAxMDksIDgyLCAxOSwgOSwgMSwgMTk5LCAxMDksIDE3OSwgMTksIDksIDEsIAorICAgIDI1MSwgMTcyLCA2NSwgMTksIDksIDEsIDI1MSwgMTcyLCA0NywgMTksIDksIDEsIDI1MSwgMTcyLCA4MiwgMTksIDksIDEsIAorICAgIDI1MSwgMTcyLCAxNzksIDE5LCA5LCAxLCAyMzUsIDE5NSwgNjUsIDE5LCA5LCAxLCAyMzUsIDE5NSwgNDcsIDE5LCA5LCAxLCAKKyAgICAyMzUsIDE5NSwgODIsIDE5LCA5LCAxLCAyMzUsIDE5NSwgMTc5LCAxOSwgOSwgMSwgMjM3LCAxMzUsIDY1LCAxOSwgOSwgMSwgCisgICAgMjM3LCAxMzUsIDQ3LCAxOSwgOSwgMSwgMjM3LCAxMzUsIDgyLCAxOSwgOSwgMSwgMjM3LCAxMzUsIDE3OSwgMTksIDksIDEsIAorICAgIDIxNCwgMTUzLCA2NSwgMTksIDksIDEsIDIxNCwgMTUzLCA0NywgMTksIDksIDEsIDIxNCwgMTUzLCA4MiwgMTksIDksIDEsIAorICAgIDIxNCwgMTUzLCAxNzksIDE5LCA5LCAxLCAyMjcsIDg3LCA2NSwgMTksIDksIDEsIDIyNywgODcsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI3LCA4NywgODIsIDE5LCA5LCAxLCAyMjcsIDg3LCAxNzksIDE5LCA5LCAxLCAyMjUsIDkyLCA2NSwgMTksIDksIDEsIAorICAgIDIyNSwgOTIsIDQ3LCAxOSwgOSwgMSwgMjI1LCA5MiwgODIsIDE5LCA5LCAxLCAyMjUsIDkyLCAxNzksIDE5LCA5LCAxLCA4NCwgCisgICAgNjUsIDE5LCA5LCAxLCA4NCwgNDcsIDE5LCA5LCAxLCA4NCwgODIsIDE5LCA5LCAxLCA4NCwgMTc5LCAxOSwgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDY1LCAxOSwgOSwgMSwgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMSwgMjE4LCAyMjgsIDgyLCAxOSwgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDE3OSwgMTksIDksIDEsIDIzNCwgMTE2LCA2NSwgMTksIDksIDEsIDIzNCwgMTE2LCA0NywgMTksIDksIDEsIDIzNCwgCisgICAgMTE2LCA4MiwgMTksIDksIDEsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAxLCAyMDEsIDczLCA2NSwgMTksIDksIDEsIDIwMSwgCisgICAgNzMsIDQ3LCAxOSwgOSwgMSwgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAxLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDEsIDkwLCA2NSwgMTksIDksIDEsIDkwLCA0NywgMTksIDksIDEsIDkwLCA4MiwgMTksIDksIDEsIDkwLCAxNzksIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMjIsIDIyNCwgODgsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgCisgICAgMjIyLCAyMjQsIDg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgCisgICAgMjM0LCAyMDQsIDI0OCwgMjI4LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIzNCwgMjA0LCAyNDgsIAorICAgIDIyOCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDQ3LCAKKyAgICAxOSwgMTk5LCA4MiwgMjAxLCAyNSwgMjE4LCAyNDAsIDIwOCwgMjQ0LCAxNTgsIDIzOCwgNDMsIDgxLCAxNTgsIDIxNCwgNjMsIAorICAgIDgxLCAxNTgsIDQxLCA1NCwgMTU4LCAyNDAsIDE5NCwgNTQsIDE1OCwgMjE2LCAyNywgNTQsIDE1OCwgMjUxLCA4OSwgMTU4LCAKKyAgICAyNTEsIDEzLCAxNTgsIDQ5LCAyMTYsIDExNSwgMTU4LCA1MSwgMjE2LCAxMTUsIDE1OCwgMjUwLCAxNjUsIDE1OCwgOTMsIAorICAgIDU0LCAxNTgsIDI0NiwgNzAsIDE1OCwgMjMzLCAzMiwgMTU4LCAyMzYsIDE4MywgMjA4LCA3NiwgMTU4LCAyMDksIDE2LCAKKyAgICAxNTgsIDE3LCAxOTksIDgxLCAxNTgsIDE3LCAxMDIsIDE1OCwgMTcsIDEwNSwgMTU4LCAxNywgMTQ3LCAxNTgsIDE3LCAxNDksIAorICAgIDE1OCwgMTcsIDE2NCwgMTU4LCAxNywgMTg3LCAxNTgsIDE3LCAyMTAsIDEzNSwgMTU4LCAxNywgMTkyLCAxNTgsIDE3LCAKKyAgICAyMTksIDExMywgMTU4LCAyNDYsIDc5LCAxNTgsIDIxMCwgMTY3LCAxNTgsIDIyNCwgMjQxLCA1NCwgMTU4LCAyMzgsIDEyMiwgCisgICAgNTQsIDE1OCwgMjM1LCA2NywgNTQsIDE1OCwgMjE0LCA3OSwgODEsIDE1OCwgMjQ2LCA2OCwgMjUwLCAxNTUsIDE1OCwgOCwgCisgICAgNiwgMSwgNjIsIDE1OCwgOCwgNiwgMSwgMjUwLCAxMDMsIDE1OCwgOCwgNiwgMSwgMjQ3LCAyMjMsIDE1OCwgOCwgNiwgMSwgCisgICAgMjQyLCAxNTMsIDE1OCwgOCwgNiwgMSwgNzIsIDE1OCwgOCwgNiwgMSwgMjM4LCA1LCAxNTgsIDgsIDYsIDEsIDIzNiwgMTU2LCAKKyAgICAxNTgsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxNTgsIDgsIDYsIDEsIDcwLCAxNTgsIDgsIDYsIDEsIDIyNywgMjUxLCAxNTgsIDgsIAorICAgIDYsIDEsIDIyNywgMTE4LCAxNTgsIDgsIDYsIDEsIDE1NiwgMTU4LCA4LCA2LCAxLCAyMjMsIDI0MywgMTU4LCA4LCA2LCAxLCAKKyAgICAyMjAsIDIxNCwgMTU4LCA4LCA2LCAxLCA3NCwgMTU4LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTU4LCA4LCA2LCAxLCAyMTQsIAorICAgIDE2NywgMTU4LCA4LCA2LCAxLCAxNDYsIDE1OCwgOCwgNiwgMSwgMjEyLCAxMjIsIDE1OCwgOCwgNiwgMSwgMjA3LCA4MywgCisgICAgMTU4LCA4LCA2LCAxLCA2NiwgMTU4LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTU4LCA4LCA2LCAxLCAyMDEsIDE0NywgMTU4LCA4LCAKKyAgICA2LCAxLCAyMDAsIDE5NSwgMTU4LCA4LCA2LCAxLCAyMDAsIDEyMywgMTU4LCA4LCA2LCAxLCAxOTksIDE1NywgMTU4LCA0OSwgCisgICAgNTIsIDE1OSwgMTU4LCAyMTMsIDEwNiwgMjA5LCAxNiwgMTU4LCA1MSwgNTIsIDE1OSwgMTU4LCAyNDYsIDE0NywgMjUxLCAKKyAgICAyNTEsIDE1OCwgMTI4LCAyMjQsIDE3NiwgMTU4LCAyMzUsIDc0LCAyNTEsIDI1MSwgMTU4LCA4LCA0LCAxLCA2MiwgMTU4LCAKKyAgICA4LCA0LCAxLCAyNTAsIDEwMywgMTU4LCA4LCA0LCAxLCAyNDcsIDIyMywgMTU4LCA4LCA0LCAxLCAyNDIsIDE1MywgMTU4LCAKKyAgICA4LCA0LCAxLCA3MiwgMTU4LCA4LCA0LCAxLCAyMzgsIDUsIDE1OCwgOCwgNCwgMSwgMjM2LCAxNTYsIDE1OCwgOCwgNCwgMSwgCisgICAgMjM0LCAyNDcsIDE1OCwgOCwgNCwgMSwgNzAsIDE1OCwgOCwgNCwgMSwgMjI3LCAyNTEsIDE1OCwgOCwgNCwgMSwgMjI3LCAKKyAgICAxMTgsIDE1OCwgOCwgNCwgMSwgMTU2LCAxNTgsIDgsIDQsIDEsIDIyMywgMjQzLCAxNTgsIDgsIDQsIDEsIDIyMCwgMjE0LCAKKyAgICAxNTgsIDgsIDQsIDEsIDc0LCAxNTgsIDgsIDQsIDEsIDIxNiwgMjI2LCAxNTgsIDgsIDQsIDEsIDIxNCwgMTY3LCAxNTgsIDgsIAorICAgIDQsIDEsIDE0NiwgMTU4LCA4LCA0LCAxLCAyMTIsIDEyMiwgMTU4LCA4LCA0LCAxLCAyMDcsIDgzLCAxNTgsIDgsIDQsIDEsIAorICAgIDY2LCAxNTgsIDgsIDQsIDEsIDIwMywgMTY4LCAxNTgsIDgsIDQsIDEsIDIwMSwgMTQ3LCAxNTgsIDgsIDQsIDEsIDIwMCwgCisgICAgMTk1LCAxNTgsIDgsIDQsIDEsIDIwMCwgMTIzLCAxNTgsIDgsIDQsIDEsIDE5OSwgMTU3LCAxNTgsIDQ5LCAyNDIsIDE5NiwgCisgICAgMTU5LCAxNTgsIDgzLCAyMjQsIDE3NiwgMTU4LCA1MSwgMjQyLCAxOTYsIDE1OSwgMTU4LCAyMDUsIDI0MCwgMTU4LCA0OSwgCisgICAgNjQsIDIxNiwgMTE1LCAxNTgsIDUxLCA2NCwgMjE2LCAxMTUsIDEzMCwgMTQxLCAyMzYsIDE4MywgMjA4LCA3NiwgMTMwLCAKKyAgICA0OSwgMjQzLCAxNiwgMTU5LCAxMzAsIDUxLCAyNDMsIDE2LCAxNTksIDEzMCwgMTQxLCAyNDYsIDcwLCAxMzAsIDY5LCAxMDEsIAorICAgIDI0MCwgMTgyLCAxMzAsIDY5LCAxLCAyMDEsIDAsIDEzMCwgNjksIDEsIDQsIDYyLCAxMzAsIDY5LCAxLCA0LCA3MCwgMTMwLCAKKyAgICA2OSwgMSwgNCwgNjYsIDEzMCwgNjksIDEsIDQsIDcyLCAxMzAsIDY5LCAxLCA0LCA3NCwgMTMwLCA2OSwgMSwgNCwgMTgzLCAKKyAgICAxMzAsIDY5LCAxLCA0LCAxOTksIDIxMSwgMTMwLCA2OSwgMSwgNCwgMTk5LCAyNDUsIDEzMCwgNjksIDEsIDQsIDIwNCwgCisgICAgMjE1LCAxMzAsIDIyNywgMzIsIDIxNCwgMjQ4LCAyMDksIDEsIDgxLCAxMzAsIDY5LCAxLCA2MiwgMTMwLCA2OSwgMSwgNzAsIAorICAgIDEzMCwgNjksIDEsIDY2LCAxMzAsIDY5LCAxLCA3MiwgMTMwLCA2OSwgMSwgNzQsIDEzMCwgNjksIDEsIDE2MSwgMTMwLCA2OSwgCisgICAgMSwgMjI2LCAxNjMsIDEzMCwgNjksIDEsIDIyNiwgMTUsIDEzMCwgNjksIDEsIDIyNywgOCwgMTMwLCA2OSwgMSwgMjI2LCAKKyAgICA4OCwgMTMwLCA2OSwgMSwgMjEyLCA2NCwgMTMwLCA2OSwgMSwgMjA5LCAxODIsIDEzMCwgNjksIDEsIDIwOCwgMjQsIDEzMCwgCisgICAgNjksIDEsIDIxMSwgMjAyLCAxMzAsIDY5LCAxLCAyMDksIDI5LCAxMzAsIDY5LCAxLCAyMDcsIDM2LCAxMzAsIDY5LCAxLCAKKyAgICAyMDYsIDE1LCAxMzAsIDY5LCAxLCAyMDQsIDIxNSwgMTMwLCA2OSwgMSwgMjA2LCAyMDEsIDEzMCwgNjksIDEsIDEzOCwgCisgICAgMTMwLCA2OSwgMSwgMTg4LCAxMzAsIDY5LCAxLCAyMTksIDE1MCwgMTMwLCA2OSwgMSwgMjE4LCAxMzMsIDEzMCwgNjksIDEsIAorICAgIDIyMCwgMzQsIDEzMCwgNjksIDEsIDIxOCwgMjQxLCAxMzAsIDY5LCAxLCAxNDQsIDEzMCwgNjksIDEsIDIzNCwgNzUsIDEzMCwgCisgICAgNjksIDEsIDIzMywgOTcsIDEzMCwgNjksIDEsIDIzNCwgMTM5LCAxMzAsIDY5LCAxLCAyMzMsIDIwNywgMTMwLCA2OSwgMSwgCisgICAgMTc4LCAxMzAsIDY5LCAxLCAyMjEsIDIxMSwgMTMwLCA2OSwgMSwgMjIxLCA0MSwgMTMwLCA2OSwgMSwgMjIyLCA3NiwgMTMwLCAKKyAgICA2OSwgMSwgMjIxLCAxMzYsIDEzMCwgNjksIDEsIDE4MywgMTMwLCA2OSwgMSwgMTk5LCAyMTEsIDEzMCwgNjksIDEsIDE5OSwgCisgICAgMjQ1LCAxMzAsIDY5LCAxLCAyMTMsIDI1MiwgMTMwLCA2OSwgMSwgMjEzLCA4OCwgMTMwLCA2OSwgMSwgMjEyLCAxNzUsIAorICAgIDEzMCwgNjksIDEsIDIxMywgMTkwLCAxMzAsIDY5LCAxLCAyMTMsIDEsIDEzMCwgNjksIDEsIDIwMSwgMTE0LCAxMzAsIDY5LCAKKyAgICAxLCAyMjAsIDIxNCwgMTMwLCA2OSwgMjAyLCAxODksIDIwOSwgMSwgODEsIDEzMCwgNjksIDIxMCwgMTcyLCAyMDksIDEsIAorICAgIDgxLCAxMzAsIDI5LCAyMzcsIDkzLCAxMzAsIDI5LCAxLCAyMjYsIDEyMSwgMTMwLCAyOSwgMSwgMjA4LCAxNzEsIDEzMCwgCisgICAgMjksIDEsIDIyNiwgMTE0LCAxMzAsIDI5LCAxLCAyMTksIDE0MywgMTMwLCAyOSwgMSwgMjE5LCAxNDEsIDEzMCwgMjksIDEsIAorICAgIDIxOSwgMTQwLCAxMzAsIDI5LCAxLCAyMDUsIDI1MywgMTMwLCAyOSwgMSwgMjA4LCAxNjAsIDEzMCwgMjksIDEsIDIxMywgCisgICAgNzgsIDEzMCwgMjksIDEsIDIxMywgNzMsIDEzMCwgMjksIDEsIDIxMywgNzAsIDEzMCwgMjksIDEsIDIxMywgNjMsIDEzMCwgCisgICAgMjksIDEsIDIxMywgNTgsIDEzMCwgMjksIDEsIDIxMywgNTMsIDEzMCwgMjksIDEsIDIxMywgNjQsIDEzMCwgMjksIDEsIAorICAgIDIxMywgNzYsIDEzMCwgMjksIDEsIDIyMSwgMTk3LCAxMzAsIDI5LCAxLCAyMTUsIDE5MCwgMTMwLCAyOSwgMSwgMjA4LCAKKyAgICAxNjgsIDEzMCwgMjksIDEsIDIxNSwgMTc5LCAxMzAsIDI5LCAxLCAyMDksIDEyOSwgMTMwLCAyOSwgMSwgMjA4LCAxNjUsIAorICAgIDEzMCwgMjksIDEsIDIyOCwgMTc0LCAxMzAsIDI5LCAxLCAyNDYsIDE2OCwgMTMwLCAyOSwgMSwgMjA4LCAxNzUsIDEzMCwgCisgICAgMjksIDEsIDI0NiwgMjMyLCAxMzAsIDI5LCAxLCAyMjYsIDE4MywgMTMwLCAyOSwgMSwgMjA2LCA4MCwgMTMwLCAyOSwgMSwgCisgICAgMjE1LCAyMjcsIDEzMCwgMjksIDEsIDIzNCwgNjYsIDEzMCwgMjksIDEsIDYyLCAxMzAsIDI5LCAxLCAyNTEsIDIyMSwgMTMwLCAKKyAgICAyOSwgMSwgMTgzLCAxMzAsIDI5LCAxLCAyMDAsIDk4LCAxMzAsIDI5LCAxLCAyMzgsIDE0MiwgMTMwLCAyOSwgMSwgNzIsIAorICAgIDEzMCwgMjksIDEsIDIwMCwgMzgsIDEzMCwgMjksIDEsIDIwMCwgNTEsIDEzMCwgMjksIDEsIDc0LCAxMzAsIDI5LCAxLCAKKyAgICAyMDEsIDExNCwgMTMwLCAyOSwgMSwgMjAxLCAxMTAsIDEzMCwgMjksIDEsIDIxNywgMTIxLCAxMzAsIDI5LCAxLCAxOTksIAorICAgIDI0NSwgMTMwLCAyOSwgMSwgNjYsIDEzMCwgMjksIDEsIDIwMSwgNTAsIDEzMCwgMjksIDEsIDIwMSwgNjQsIDEzMCwgMjksIAorICAgIDEsIDIwMSwgMzEsIDEzMCwgMjksIDEsIDE5OSwgMjExLCAxMzAsIDI5LCAxLCAyMzgsIDY5LCAxMzAsIDI5LCAxLCAyMDAsIAorICAgIDksIDEzMCwgMjksIDEsIDcwLCAxNTgsIDI0NywgNTgsIDU0LCAxNTgsIDIxNSwgNTYsIDU0LCAxNTgsIDIxOCwgMjE1LCA1NCwgCisgICAgMTU4LCAyMjIsIDIyOCwgMTU4LCAyNDgsIDQ2LCAxNDgsIDE1OCwgMjAwLCA0MiwgNTQsIDE1OCwgMjAwLCAyNDYsIDU0LCAKKyAgICAxMzAsIDIzNiwgMjM5LCAxNjIsIDIwMywgNDIsIDEzMCwgOTgsIDQ4LCAxMzAsIDE4MiwgNDgsIDEzMCwgODcsIDQ4LCAxMzAsIAorICAgIDE5MSwgNDgsIDEzMCwgNjMsIDIwOCwgMTkzLCAxMzAsIDY0LCAyNDYsIDE1NSwgMjI4LCA2MiwgMjUxLCA1OCwgMjUxLCA4MSwgCisgICAgMjI4LCA2MiwgMjUxLCA1OCwgMjEwLCAxNTQsIDIyOCwgNjIsIDI1MSwgNTgsIDIwNiwgMTUyLCAyMTcsIDEzOSwgMjEzLCAKKyAgICAxMjgsIDI0NywgMjAsIDIxMywgMTI4LCAyNDcsIDIwLCAzMCwgNjgsIDUsIDI1MCwgODcsIDYyLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgNTYsIDcyLCAzMCwgNjgsIDUsIDI1MCwgNjUsIDcwLCAzMCwgNjgsIDUsIDI1MCwgMzMsIDc0LCAzMCwgNjgsIDUsIDI1MCwgCisgICAgODMsIDY2LCAzMCwgNjgsIDUsIDI1MCwgMTAyLCAyNDIsIDU4LCAzMCwgNjgsIDUsIDI1MCwgNDksIDI0MSwgMTc1LCAzMCwgCisgICAgNjgsIDUsIDI1MCwgODksIDI0MSwgNzYsIDMwLCA2OCwgNSwgMjUwLCA3OSwgMjQwLCAyMTEsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA0MywgMjM5LCAxMzcsIDMwLCA2OCwgNSwgMjUwLCAzNywgMjI3LCAyNDgsIDMwLCA2OCwgNSwgMjUwLCA0OCwgMjI3LCAyMjcsIAorICAgIDMwLCA2OCwgNSwgMjUwLCA1OCwgMjI3LCAxNjYsIDMwLCA2OCwgNSwgMjUwLCAyOSwgMjI3LCAxNDcsIDMwLCA2OCwgNSwgCisgICAgMjUwLCAxNywgMTYxLCAzMCwgNjgsIDUsIDI1MCwgNTAsIDIyNywgOCwgMzAsIDY4LCA1LCAyNTAsIDI3LCAyMjYsIDE2MywgCisgICAgMzAsIDY4LCA1LCAyNTAsIDI0LCAyMjYsIDg4LCAzMCwgNjgsIDUsIDI1MCwgMTMsIDIyNiwgMTUsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICAxNCwgMTc4LCAzMCwgNjgsIDUsIDI1MCwgODAsIDIyMiwgNzYsIDMwLCA2OCwgNSwgMjUwLCAyMSwgMjIxLCAyMTEsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA3OCwgMjIxLCAxMzYsIDMwLCA2OCwgNSwgMjUwLCA3MCwgMjIxLCA0MSwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDkxLCAxODgsIDMwLCA2OCwgNSwgMjUwLCA2OSwgMjIwLCAzNCwgMzAsIDY4LCA1LCAyNTAsIDYzLCAyMTksIDE1MCwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDQyLCAyMTgsIDI0MSwgMzAsIDY4LCA1LCAyNTAsIDM5LCAyMTgsIDEzMywgMzAsIDY4LCA1LCAyNTAsIAorICAgIDk4LCAxNzIsIDMwLCA2OCwgNSwgMjUwLCAyMiwgMjE2LCA3MywgMzAsIDY4LCA1LCAyNTAsIDU1LCAyMTUsIDIwNCwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDgyLCAyMTUsIDEwNiwgMzAsIDY4LCA1LCAyNTAsIDQ0LCAyMTQsIDIyNCwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDc3LCAyMTQsIDE1OSwgMzAsIDY4LCA1LCAyNTAsIDE2LCAyMTQsIDEzOSwgMzAsIDY4LCA1LCAyNTAsIDcyLCAyMTQsIDEyMSwgCisgICAgMzAsIDY4LCA1LCAyNTAsIDYxLCAyMTQsIDEwOSwgMzAsIDY4LCA1LCAyNTAsIDM0LCAyMTMsIDI1MiwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDY2LCAyMTMsIDE5MCwgMzAsIDY4LCA1LCAyNTAsIDQxLCAyMTMsIDg4LCAzMCwgNjgsIDUsIDI1MCwgMTAwLCAyMTMsIAorICAgIDEsIDMwLCA2OCwgNSwgMjUwLCA2NywgMjEyLCAxNzUsIDMwLCA2OCwgNSwgMjUwLCA2MiwgMjEyLCA2NCwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDg1LCAyMTEsIDIwMiwgMzAsIDY4LCA1LCAyNTAsIDUzLCAyMDksIDE4MiwgMzAsIDY4LCA1LCAyNTAsIDgxLCAyMDksIAorICAgIDI5LCAzMCwgNjgsIDUsIDI1MCwgMzYsIDIwOCwgMjQsIDMwLCA2OCwgNSwgMjUwLCAzNSwgMjA3LCAzNiwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDk2LCAyMDYsIDIwMSwgMzAsIDY4LCA1LCAyNTAsIDU3LCAyMDYsIDE1LCAzMCwgNjgsIDUsIDI1MCwgOTQsIDEzOCwgCisgICAgMzAsIDY4LCA1LCAyNTAsIDI1LCAyMDQsIDIxNSwgMzAsIDY4LCA1LCAyNTAsIDQwLCAyMDEsIDExNCwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDE5LCAyMDEsIDY0LCAzMCwgNjgsIDUsIDI1MCwgNTQsIDIwMSwgMzEsIDMwLCA2OCwgNSwgMjUwLCA1MiwgMjAxLCAKKyAgICAwLCAzMCwgNjgsIDUsIDI1MCwgNzYsIDE5OSwgMTE0LCAzMCwgNjgsIDUsIDI1MCwgMjAsIDE5OSwgODksIDMwLCA2OCwgNSwgCisgICAgMjUwLCA3MywgMTk5LCAxNCwgMzAsIDY4LCA1LCAyNTAsIDY4LCAyNTQsIDE0NywgMzAsIDY4LCA1LCAyNTAsIDUxLCAyNTQsIAorICAgIDM1LCAzMCwgNjgsIDUsIDI1MCwgMTAsIDI1MCwgMTM5LCAzMCwgNjgsIDUsIDI1MCwgMjMsIDIzOSwgMTAzLCAzMCwgNjgsIAorICAgIDUsIDI1MCwgNiwgMjM5LCAxMDIsIDMwLCA2OCwgNSwgMjUwLCA0NiwgMjE4LCA2OSwgMzAsIDY4LCA1LCAyNTAsIDY0LCAKKyAgICAyMTQsIDIyMiwgMzAsIDY4LCA1LCAyNTAsIDMyLCAyMTQsIDIyNiwgMzAsIDY4LCA1LCAyNTAsIDE4LCAyMTMsIDI1MCwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDYwLCAyMTMsIDI0OSwgMzAsIDY4LCA1LCAyNTAsIDI2LCAyMTMsIDAsIDMwLCA2OCwgNSwgMjUwLCAyOCwgCisgICAgMjA3LCAzMywgMzAsIDY4LCA1LCAyNTAsIDgsIDIwNCwgMTY4LCAzMCwgNjgsIDUsIDI1MCwgNSwgMTA1LCAzMCwgNjgsIDE2LCAKKyAgICAyNTAsIDc1LCAzMCwgNjgsIDE2LCAyNTAsIDc0LCAzMCwgNjgsIDE2LCAyNTAsIDcxLCAzMCwgNjgsIDE2LCAyNTAsIDU5LCAKKyAgICAzMCwgNjgsIDE2LCAyNTAsIDQ3LCAzMCwgNjgsIDE2LCAyNTAsIDQ1LCAzMCwgNjgsIDE2LCAyNTAsIDM4LCAzMCwgNjgsIAorICAgIDE2LCAyNTAsIDMxLCAzMCwgNjgsIDE2LCAyNTAsIDMwLCAzMCwgNjgsIDE2LCAyNTAsIDE1LCAzMCwgNjgsIDE2LCAyNTAsIAorICAgIDEyLCAzMCwgNjgsIDE2LCAyNTAsIDExLCAzMCwgNjgsIDE2LCAyNTAsIDksIDMwLCA2OCwgMTYsIDI1MCwgNywgMzAsIDY4LCAKKyAgICAxMzYsIDI1MCwgNCwgMjIyLCAxODAsIDMwLCA2OCwgMTM2LCAyNTAsIDMsIDIwMCwgMjUwLCAzMCwgNjgsIDEzNiwgMjUwLCAKKyAgICAyLCAyNDEsIDE1OCwgMzAsIDY4LCAxMzYsIDI1MCwgMSwgMjM4LCAxMTksIDMwLCA2OCwgMTM2LCAyNTAsIDAsIDIyMiwgCisgICAgMTUwLCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTUsIDIwOCwgMTE2LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTQsIDIzOCwgNTAsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDI1MywgMjEzLCAyMTYsIDMwLCA2OCwgMTM2LCAyNDksIDI1MiwgMjEwLCA2NCwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMjUxLCAyMzQsIDEzOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjUwLCAyMDgsIDI1MSwgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjQ5LCAyNDgsIDEyMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ4LCAyNDIsIDI1NSwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ3LCAKKyAgICAyNDgsIDIyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDYsIDIwMSwgMzksIDMwLCA2OCwgMTM2LCAyNDksIDI0NSwgMjQ5LCA3MywgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMjQ0LCAyMTcsIDg4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDMsIDIwOCwgMjIzLCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyNDIsIDI0MiwgMTYxLCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjQxLCAyMjcsIDU2LCAzMCwgNjgsIDIyMSwgCisgICAgOTcsIDI0OSwgMjQwLCAyMjcsIDY2LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzksIDIxNywgMTAzLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMzgsIDIwMSwgMTIsIDMwLCA2OCwgMTM2LCAyNDksIDIzNywgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDIzNiwgMjUwLCAyMjcsIAorICAgIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyMzUsIDIyMiwgMzIsIDMwLCA2OCwgMTM2LCAyNDksIDIzNCwgMjQ4LCA0NSwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjMzLCAyMzUsIDEwOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjMyLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMzEsIDIwMCwgMjQxLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzAsIDMwLCA2OCwgMTM2LCAyNDksIDIyOSwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMjI4LCAyMzMsIDEyNCwgMzAsIDY4LCAxMzYsIDI0OSwgMjI3LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjYsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDIyNSwgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDIyMywgMjA0LCAxODMsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDIyMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjIxLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjAsIDI0NiwgMTA0LCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAyMTksIDMwLCA2OCwgMTM2LCAyNDksIDIxOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjE3LCAyMzYsIDQ2LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyMTYsIDI1MCwgMjE0LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTUsIDMwLCA2OCwgMTM2LCAyNDksIDIxNCwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMjEzLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTIsIDMwLCA2OCwgMTM2LCAyNDksIDIxMSwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjEwLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDksIDMwLCA2OCwgMTM2LCAyNDksIDIwOCwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjA3LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDYsIDIyMSwgODksIDMwLCA2OCwgMTM2LCAyNDksIDIwNSwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjA0LCAyMDUsIDEwOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjAzLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMDIsIDMwLCA2OCwgMTM2LCAyNDksIDIwMSwgMzAsIDY4LCAxMzYsIDI0OSwgMjAwLCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTksIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDE5OCwgMzAsIDY4LCAxMzYsIDI0OSwgMTk3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTYsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDE5NSwgMzAsIDY4LCAxMzYsIDI0OSwgMTk0LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTMsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDE5MiwgMjM0LCAxMDcsIDMwLCA2OCwgMTM2LCAyNDksIDE3MSwgMjM2LCAyNTEsIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDE2OCwgMjQ5LCA1MCwgMzAsIDY4LCAxMzYsIDI0OSwgMTYzLCAyMDgsIDIzMCwgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMTYyLCA0OCwgMzAsIDY4LCAxMzYsIDI0OSwgMTYxLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNjAsIDIwNywgMTY5LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAxNTksIDMwLCA2OCwgMTM2LCAyNDksIDE1OCwgMzAsIDY4LCAxMzYsIDI0OSwgMTU3LCAyMDEsIDM1LCAKKyAgICAyNDcsIDE3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTYsIDI0NywgMTcsIDMwLCA2OCwgMTM2LCAyNDksIDE1NSwgMjQ3LCAxOCwgCisgICAgMjM2LCAyMTUsIDMwLCA2OCwgMTM2LCAyNDksIDE1NCwgMjAxLCAzNywgMzAsIDY4LCAxMzYsIDI0OSwgMTUzLCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAxNTIsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAxNTEsIDI0MSwgMTEsIDMwLCA2OCwgMTM2LCAyNDksIDE1MCwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMTQ5LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDcsIDMwLCA2OCwgMTM2LCAyNDksIDE0NiwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMTQ1LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDQsIDI0MSwgMjQ3LCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAxNDMsIDMwLCA2OCwgMTM2LCAyNDksIDE0MiwgMzAsIDY4LCAxMzYsIDI0OSwgMTQxLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDAsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDEzOSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDIyNCwgMzAsIDY4LCAxMzYsIDIwMiwgCisgICAgMjQ1LCAyNDksIDE5MSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE5MCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAKKyAgICAyNDksIDE4OSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4OCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIAorICAgIDE4NywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4NiwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4NSwgCisgICAgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4NCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4MywgMzAsIDY4LCAKKyAgICAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4MiwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4MSwgMzAsIDY4LCAxMzYsIAorICAgIDIwMiwgMjQ1LCAyNDksIDE4MCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3OSwgMzAsIDY4LCAxMzYsIDIwMiwgCisgICAgMjQ1LCAyNDksIDE3OCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3NywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAKKyAgICAyNDksIDE3NiwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3NSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIAorICAgIDE3NCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3MywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3MiwgCisgICAgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3MCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2OSwgMzAsIDY4LCAKKyAgICAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2NywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2NiwgMzAsIDY4LCAxMzYsIAorICAgIDIwMiwgMjQ1LCAyNDksIDE2NSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2NCwgMzAsIDY4LCAxMzYsIDIwMiwgCisgICAgMjQ1LCAyNDksIDE0OCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDEzOCwgMjUxLCAyMTQsIDIwMCwgMjM4LCAyMTAsIAorICAgIDE1NSwgMjI0LCAxNzYsIDI1MSwgMjE0LCAyMDAsIDIzOCwgMjEwLCAxNTUsIDI0MCwgMTgyLCAyNTEsIDIxNCwgMjQ3LCA3LCAKKyAgICA4MSwgMjUxLCAyMTQsIDQxLCAxMDIsIDI1MSwgMjE0LCA0MSwgMTA1LCAyNTEsIDIxNCwgNDEsIDE0NywgMjUxLCAyMTQsIAorICAgIDQxLCAxNDksIDI1MSwgMjE0LCA0MSwgMTY0LCAyNTEsIDIxNCwgNDEsIDE4NywgMjUxLCAyMTQsIDQxLCAyMTAsIDEzNSwgCisgICAgMjUxLCAyMTQsIDQxLCAxOTIsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMTMsIDI1MSwgMjE0LCA0MSwgMjA2LCAxNjYsIDI1MSwgCisgICAgMjE0LCA0MSwgMjA0LCAxNTksIDI1MSwgMjE0LCA0MSwgMjA2LCA2NywgMjUxLCAyMTQsIDQxLCAyMzYsIDIzNSwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMzcsIDEwNCwgMjUxLCAyMTQsIDQxLCAyMDksIDkyLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTI5LCAyNTEsIAorICAgIDIxNCwgNDEsIDIzOCwgMjIyLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTA4LCAyNTEsIDIxNCwgNDEsIDExMiwgMjMzLCA4MiwgCisgICAgMjUxLCAyMTQsIDQxLCAxMjAsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMTI2LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIAorICAgIDIzNiwgMjI5LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIzNywgNjEsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjA5LCAKKyAgICAxMDYsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjM4LCAyMzIsIAorICAgIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMTEyLCAyMDYsIDUwLCAKKyAgICAyNTEsIDIxNCwgNDEsIDEyMCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAxMjYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgCisgICAgMjM2LCAyMjksIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM3LCA2MSwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMDksIAorICAgIDEwNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTAsIDEzNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzgsIDIzMiwgCisgICAgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTksIDExNCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMDYsIDE2NywgMjA2LCAKKyAgICA1MCwgMjUxLCAyMTQsIDQxLCAyMDQsIDE2MCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMDYsIDY4LCAyMDYsIDUwLCAyNTEsIAorICAgIDIxNCwgNDEsIDIzNiwgMjM2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzNywgMTA1LCAyMDYsIDUwLCAyNTEsIDIxNCwgCisgICAgNDEsIDIwOSwgOTMsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzAsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM4LCAKKyAgICAyMjMsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMDksIDIwNiwgNTAsIDI1MSwgMjE0LCAyMDEsIDUzLCAyNDksIAorICAgIDY1LCAyMDMsIDIzOSwgMjUxLCAyMTQsIDIwMSwgNTMsIDIzNywgNzMsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjAxLCA1MywgCisgICAgMjExLCAxOTYsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjAxLCA1MywgMjA2LCA3NSwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMDEsIAorICAgIDUzLCAyMzYsIDIyMiwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMzksIDE0MCwgMjIyLCA3NSwgMjM3LCA3MywgMjA3LCAyNTQsIAorICAgIDI1MSwgMjE0LCAyMjQsIDE1NywgMjIyLCA3NSwgMjM3LCA3MywgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMjIsIDc1LCAyMTEsIAorICAgIDE5NiwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMjIsIDc1LCAyMDYsIDc1LCAyMDcsIDI1NCwgMzEsIDI1MSwgMjQyLCAyNTAsIAorICAgIDE0MSwgMTEyLCAyMTQsIDg3LCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxMTIsIDIzNCwgMjEzLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAxMTIsIDIzOSwgMTYyLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxNjQsIDMxLCAyNTEsIDI0MiwgMjUwLCAKKyAgICAxNDEsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAyMzcsIDYxLCAyMDYsIDUwLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA2LCA1MCwgCisgICAgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgCisgICAgMTY3LCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAxMTIsIDIzMywgODMsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMzMsIAorICAgIDgzLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTEyLCAyMDYsIDUxLCAyMDYsIDI1MSwgMzEsIDI1MSwgCisgICAgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjA2LCA1MSwgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgCisgICAgNjEsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIDE2NywgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTEyLCAyMzMsIDgzLCAyMDgsIAorICAgIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjMzLCA4MywgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDExMiwgMjA2LCA1MSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgMTY3LCAyMDYsIAorICAgIDUxLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwNiwgNTEsIDIwOCwgMTAzLCAzMSwgCisgICAgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIDE2NywgMjIxLCAxMzksIDMxLCAyNTEsIDI0MiwgMjM0LCAxMDEsIDExMiwgMjE1LCAKKyAgICAxMjMsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTAyLCAzMSwgMjUxLCAyNDIsIDIzNCwgOTcsIDEwMiwgMzEsIDI1MSwgCisgICAgMjQyLCAyMzgsIDEyOCwgMTA1LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDEwNSwgMzEsIDI1MSwgMjQyLCAyNDIsIDE1OCwgCisgICAgMTIwLCAyMzksIDE2MSwgMzEsIDI1MSwgMjQyLCAyMzgsIDEyOCwgMTIwLCAyMzksIDE2MSwgMzEsIDI1MSwgMjQyLCAyMDUsIAorICAgIDc0LCAxNjQsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjA2LCAKKyAgICAxNjcsIDI1MSwgMTA5LCAxOSwgMzEsIDI1MSwgMjQyLCAyMzQsIDk3LCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMjIsIAorICAgIDIyLCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAKKyAgICAyMDYsIDY3LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIzNywgCisgICAgMTA1LCAyNTEsIDEwOSwgMTksIDMxLCAyNTEsIDI0MiwgMjM0LCA5NywgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjA2LCAKKyAgICA5MCwgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTEyLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIAorICAgIDEyNiwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMzgsIDEyOCwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAKKyAgICAyMDUsIDc0LCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDIzNywgNjEsIDIzMywgODIsIDMxLCAKKyAgICAyNTEsIDI0MiwgMjQ3LCAxMTUsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjIwLCAxMTAsIDIzNywgNjEsIAorICAgIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTEyLCAyMDYsIDUwLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDIzNywgCisgICAgNjEsIDIwNiwgNTAsIDMxLCAyNTEsIDI0MiwgMjQxLCAxMzksIDIzNywgNjEsIDIyMSwgMTM5LCAzMSwgMjUxLCAyNDIsIAorICAgIDIwOCwgNjQsIDIzNywgMTA1LCAyMjEsIDEzOSwgMzEsIDExMiwgMTY3LCA1NCwgMzEsIDExMiwgMTY3LCAyLCAyNTEsIDEwOSwgCisgICAgMTksIDMxLCAxMjAsIDIwNiwgNzIsIDU0LCAzMSwgMTI2LCAyMTQsIDg2LCA1NCwgMzEsIDIwMCwgNDksIDU0LCAzMSwgMjA2LCAKKyAgICAyNTIsIDU0LCAzMSwgMjM5LCAxNjMsIDU0LCAzMSwgMjE3LCAxMzYsIDU0LCAzMSwgMTIwLCAyMTcsIDEzNSwgNTQsIDMxLCAKKyAgICAxMjYsIDIxNywgMTM1LCA1NCwgMzEsIDIzNiwgMjI5LCAyMTcsIDEzNSwgNTQsIDMxLCAyMzcsIDYxLCAyMTcsIDEzNSwgNTQsIAorICAgIDMxLCAyMjIsIDE2LCA1NCwgMzEsIDIyNSwgMjAxLCAyNDksIDY1LCA1NCwgMzEsIDIyNCwgMTUwLCA1NCwgMzEsIDIxNywgMCwgCisgICAgNTQsIDMxLCAyMDAsIDE3MiwgNTQsIDMxLCAyNTAsIDE5NSwgNTQsIDMxLCAyNTAsIDIxMCwgNTQsIDMxLCAyMzUsIDgzLCAKKyAgICA1NCwgMzEsIDIwNSwgMzUsIDI0OSwgNjUsIDU0LCAzMSwgMTk5LCA4MiwgNTQsIDMxLCAxMTIsIDIxNCwgODgsIDU0LCAzMSwgCisgICAgMjA5LCAxMzEsIDU0LCAzMSwgMjI4LCA5OCwgNTQsIDIxOCwgMjM1LCA1NCwgMjEyLCAyNDAsIDIxMCwgMTI2LCA1NCwgMjEyLCAKKyAgICAyNDAsIDIwMywgMjU0LCA1NCwgMjEyLCAyNDAsIDIxMCwgMTU5LCA1NCwgMjEyLCAyNDAsIDIxMCwgMTI0LCA1NCwgMjEyLCAKKyAgICAyNDAsIDI0MSwgMjYsIDIxMCwgMTI0LCA1NCwgMjEyLCAyNDAsIDIwOSwgMTU0LCA1NCwgMjEyLCAyNDAsIDI0MSwgMTM1LCAKKyAgICA1NCwgMjEyLCAyNDAsIDIxNCwgNzEsIDU0LCAyMTIsIDI0MCwgMjEwLCAxNDMsIDU0LCAyMTIsIDI0MCwgMjM5LCAxMTcsIAorICAgIDU0LCAyMTIsIDI0MCwgMjUwLCAxODksIDU0LCAyMTIsIDI0MCwgMjQ3LCA1MSwgNTQsIDMxLCAxNiwgMjA2LCAyMjIsIDIxMywgCisgICAgOTAsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNiwgNjMsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNSwgMTE1LCAyMzQsIAorICAgIDEzNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjA2LCAyMjUsIDIzNCwgMTM2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDcsIAorICAgIDEzOCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ2LCAyMjcsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwMCwgMjUwLCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyMzQsIDEwNywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM2LCAzOCwgMjE1LCAyNDAsIDI0MSwgMywgCisgICAgMiwgMjA2LCAxMywgMjE1LCAyNDAsIDI0MSwgMywgMiwgNDgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgODUsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDIxMCwgMzAsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NiwgOTcsIDIxNSwgMjQwLCAyNDEsIDMsIAorICAgIDIsIDIyMiwgMTc5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMjIsIDEyNCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjExLCAKKyAgICAyMzksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIyNCwgMjA1LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDEwNiwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjQ3LCAxMjIsIDIxNSwgMTI4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDAsIDE5NSwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjQ2LCA3NiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjA5LCA2MywgMjE1LCAyNDAsIDI0MSwgMywgCisgICAgMiwgMjQ2LCA3NywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCAyNDksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxMCwgMTcsIAorICAgIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzMywgMTI0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzQsIDcyLCAyMTUsIDI0MCwgCisgICAgMjQxLCAzLCAyLCAyNDgsIDE3LCAyMjUsIDE2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDcsIDExMSwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjEzLCAyMTYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzOSwgMjQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIAorICAgIDIzOSwgMTY4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDQsIDE5OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCAyNTIsIAorICAgIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNSwgMTI5LCAyMDUsIDEwOCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjAyLCAyMTUsIAorICAgIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNiwgMTMxLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTIsIDIzMSwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjI0LCAxODksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNiwgMjM2LCAyNDksIDEyOSwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjM3LCAyMCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM1LCA3NSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgCisgICAgMjA4LCA2NSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgNCwgMjUwLCAxMTMsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwMSwgNzQsIAorICAgIDI0OSwgODQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDM4LCAyMTcsIDEzOCwgOTcsIDIyNCwgMCwgMSwgNjIsIDIyNCwgMCwgMSwgCisgICAgNzIsIDIyNCwgMCwgMSwgMjUwLCAxMDMsIDIyNCwgMCwgMSwgMjQ4LCAyMDEsIDIyNCwgMCwgMSwgMjM2LCAxNTYsIDIyNCwgCisgICAgMCwgMSwgMjQyLCAxNTMsIDIyNCwgMCwgMSwgNzAsIDIyNCwgMCwgMSwgMjAxLCAxNDcsIDIyNCwgMCwgMSwgMTk5LCAxNTcsIAorICAgIDIyNCwgMCwgMSwgMjA2LCAxMjQsIDIyNCwgMCwgMSwgMjI3LCAyNTEsIDIyNCwgMCwgMSwgMjI3LCAxMTgsIDIyNCwgMCwgMSwgCisgICAgMjE0LCAxNjcsIDIyNCwgMCwgMSwgMTU2LCAyMjQsIDAsIDEsIDIyMywgMjQzLCAyMjQsIDAsIDEsIDIyMCwgMjE0LCAyMjQsIAorICAgIDAsIDEsIDIyMSwgMTQxLCAyMjQsIDAsIDEsIDIxOSwgMjIsIDIyNCwgMCwgMSwgNjYsIDIyNCwgMCwgMSwgMjE2LCAyMjYsIAorICAgIDIyNCwgMCwgMSwgMjI2LCAxMTAsIDIyNCwgMCwgMSwgMTQ2LCAyMjQsIDAsIDEsIDIxMiwgMTIyLCAyMjQsIDAsIDEsIDIwNywgCisgICAgODMsIDIyNCwgMCwgMSwgMjA1LCAwLCAyMjQsIDAsIDEsIDI1MSwgODUsIDIyNCwgMCwgMSwgMjM4LCAxNzksIDIyNCwgMCwgCisgICAgMSwgMjM0LCAyNDcsIDIyNCwgMCwgMSwgMjAwLCAxOTUsIDI0NywgMTI4LCAxLCA2MiwgMjQ3LCAxMjgsIDEsIDIxNiwgMjEyLCAKKyAgICAyNDcsIDEyOCwgMSwgMjQyLCAxNTMsIDI0NywgMTI4LCAxLCAxNTYsIDI0NywgMTI4LCAxLCAyMDMsIDE4MCwgMjQ3LCAxMjgsIAorICAgIDEsIDE0NiwgMjQ3LCAxMjgsIDEsIDIyNSwgNDQsIDI0NywgMTI4LCAxLCAyNTQsIDE0NywgMjQ3LCAxMjgsIDEsIDIxNCwgCisgICAgMTY3LCAyNDcsIDEyOCwgMSwgMjUwLCAxMDMsIDI0NywgMTI4LCAxLCAyMjMsIDI0MywgMjQ3LCAxMjgsIDEsIDc0LCAyNDcsIAorICAgIDEyOCwgMSwgMjQyLCA2MCwgMjQ3LCAxMjgsIDEsIDIwNywgODMsIDI0NywgMTI4LCAxLCAyMTAsIDExNiwgMjQ3LCAxMjgsIAorICAgIDEsIDIxMCwgMTE1LCAyNDcsIDEyOCwgMSwgMjEyLCAxMjIsIDI0NywgMTI4LCAxLCAyNDcsIDIyMiwgMjQ3LCAxMjgsIDEsIAorICAgIDY2LCAyNDcsIDEyOCwgMSwgMjE5LCAyMiwgMjQ3LCAxMjgsIDEsIDIwMCwgMTk1LCAyNDcsIDEyOCwgMSwgMjIwLCAyMTQsIAorICAgIDI0NywgMTI4LCAxLCAyMDQsIDI1NSwgMjQ3LCAxMjgsIDEsIDIxNiwgMjI2LCAyNDcsIDEyOCwgMSwgMjA4LCAxODIsIDI0NywgCisgICAgMTI4LCAxLCA3MCwgMjQ3LCAxMjgsIDEsIDcyLCAyNDcsIDEyOCwgMSwgMjAzLCAxNzcsIDI0NywgMTI4LCAxLCAyMjcsIAorICAgIDExOCwgMjQ3LCAxMjgsIDEsIDIyNywgMTA5LCAyNDcsIDEyOCwgMSwgMjIwLCA3NywgMjQ3LCAxMjgsIDEsIDIwMywgMTgyLCAKKyAgICAyNDcsIDEyOCwgMSwgMjM2LCAxNTYsIDI0NywgMTI4LCAxLCAyMzYsIDkxLCAyNDcsIDEyOCwgMSwgMjA4LCAxMjMsIDI0NywgCisgICAgMTI4LCAxLCAyMDgsIDEyMiwgMjQ3LCAxMjgsIDEsIDIxOSwgMjU1LCAyNDcsIDEyOCwgMSwgMjI4LCAxNTEsIDI0NywgMTI4LCAKKyAgICAxLCAyNDcsIDIyMSwgMjQ3LCAxMjgsIDEsIDIwNSwgMCwgMjQ3LCAxMjgsIDEsIDIwMywgMTc5LCAyNDcsIDEyOCwgMSwgCisgICAgMjEyLCAyMTYsIDI0NywgMTI4LCAxLCAyMjIsIDExNSwgMjQ3LCAxMjgsIDEsIDIyMiwgMTE0LCAyNDcsIDEyOCwgMSwgMjIyLCAKKyAgICAxMTMsIDI0NywgMTI4LCAxLCAyMjIsIDExMiwgMjQ3LCAxMjgsIDEsIDIyNSwgNDMsIDI0NywgMTI4LCAxLCAyMzksIDI4LCAKKyAgICAyNDcsIDEyOCwgMSwgMjAzLCAxNzgsIDg1LCAyMzgsIDEzMSwgMjA2LCA0OSwgODEsIDg1LCAyMzgsIDEzMSwgMTcsIDEwMiwgCisgICAgODUsIDIzOCwgMTMxLCAxNywgMTA1LCA4NSwgMjM4LCAxMzEsIDE3LCAxNDcsIDg1LCAyMzgsIDEzMSwgMTcsIDE0OSwgODUsIAorICAgIDIzOCwgMTMxLCAxNywgMTY0LCA4NSwgMjM4LCAxMzEsIDE3LCAxODcsIDg1LCAyMzgsIDEzMSwgMTcsIDIxMCwgMTM1LCA4NSwgCisgICAgMjM4LCAxMzEsIDE3LCAxOTIsIDg1LCAyMzgsIDEzMSwgMTcsIDIxOSwgMTEzLCA4NSwgMjM4LCAxMzEsIDQxLCAyMDYsIAorICAgIDE2NiwgODUsIDIzOCwgMTMxLCA0MSwgMjA0LCAxNTksIDg1LCAyMzgsIDEzMSwgNDEsIDIwNiwgNjcsIDg1LCAyMzgsIDEzMSwgCisgICAgNDEsIDIzNiwgMjM1LCA4NSwgMjM4LCAxMzEsIDQxLCAyMzcsIDEwNCwgODUsIDIzOCwgMTMxLCA0MSwgMjA5LCA5MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjEwLCAxMjksIDg1LCAyMzgsIDEzMSwgNDEsIDIzOCwgMjIyLCA4NSwgMjM4LCAxMzEsIDQxLCAKKyAgICAyMTksIDEwOCwgODUsIDIzOCwgMTMxLCA0MSwgMTEyLCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAxMjAsIDIzMywgODIsIAorICAgIDg1LCAyMzgsIDEzMSwgNDEsIDEyNiwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMjM2LCAyMjksIDIzMywgODIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIzNywgNjEsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDIwOSwgMTA2LCAyMzMsIDgyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMjM4LCAyMzIsIDIzMywgODIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCA0MCwgMzksIDEsIDYyLCA0MCwgMzksIDEsIDI0OSwgOCwgNDAsIAorICAgIDM5LCAxLCAyMjcsIDgsIDQwLCAzOSwgMSwgMjQxLCAxNzUsIDQwLCAzOSwgMSwgNzIsIDQwLCAzOSwgMSwgMjAzLCA1OSwgCisgICAgNDAsIDM5LCAxLCAxOTksIDg5LCA0MCwgMzksIDEsIDIzNCwgMTM5LCA0MCwgMzksIDEsIDIwNiwgMTA2LCA0MCwgMzksIDEsIAorICAgIDcwLCA0MCwgMzksIDEsIDE2MSwgNDAsIDM5LCAxLCAyMzgsIDIwOSwgNDAsIDM5LCAxLCAyMzgsIDE5MCwgNDAsIDM5LCAxLCAKKyAgICAyMzgsIDE3OSwgNDAsIDM5LCAxLCAyMzgsIDk0LCA0MCwgMzksIDEsIDc0LCA0MCwgMzksIDEsIDIxNiwgNzMsIDQwLCAzOSwgCisgICAgMSwgMjEwLCA2NSwgNDAsIDM5LCAxLCAyMjYsIDE1LCA0MCwgMzksIDEsIDIzOCwgMTE1LCA0MCwgMzksIDEsIDIzOCwgMTA0LCAKKyAgICA0MCwgMzksIDEsIDIwNiwgMjAxLCA0MCwgMzksIDEsIDY2LCA0MCwgMzksIDEsIDIzOCwgMjEyLCA0MCwgMzksIDEsIDIxNSwgCisgICAgMjMyLCA0MCwgMzksIDEsIDIyNiwgMTkyLCA0MCwgMzksIDEsIDIzOCwgMjQ4LCA0MCwgMzksIDEsIDIzOCwgMTA2LCA0MCwgCisgICAgMzksIDEsIDI0NywgOCwgNDAsIDM5LCAxLCAyMjgsIDE1MSwgNDAsIDM5LCAxLCAyMDMsIDE4MiwgNDAsIDM5LCAxLCAyMzgsIAorICAgIDg3LCA0MCwgMzksIDIxOCwgOTMsIDEwMiwgNDAsIDM5LCAyMTgsIDkzLCAxNjQsIDQwLCAzOSwgMjE4LCA5MywgMjA2LCAKKyAgICAxNjYsIDQwLCAzOSwgMjE4LCA5MywgMjM3LCAxMDQsIDIzNSwgOTMsIDEsIDI1MSwgMTc5LCAyMzUsIDkzLCAxLCAyNDksIAorICAgIDEwMSwgMjM1LCA5MywgMSwgMjM1LCAxNTgsIDIzNSwgOTMsIDEsIDI0MiwgMzksIDIzNSwgOTMsIDEsIDI1MSwgMTc1LCAKKyAgICAyMzUsIDkzLCAxLCAyMTQsIDE1MCwgMjM1LCA5MywgMSwgMjI4LCA3LCAyMzUsIDkzLCAxLCAyMzQsIDIyNiwgMjM1LCA5MywgCisgICAgMSwgMjA2LCA2MywgMjM1LCA5MywgMSwgMjM4LCAyMjAsIDIzNSwgOTMsIDEsIDIyNSwgMjM4LCAyMzUsIDkzLCAxLCAyMjUsIAorICAgIDE1MywgMjM1LCA5MywgMSwgMjIyLCAxNzIsIDIzNSwgOTMsIDEsIDIyMCwgMTEyLCAyMzUsIDkzLCAxLCAyMjcsIDIyMCwgCisgICAgMjM1LCA5MywgMSwgMjAzLCAyMDAsIDIzNSwgOTMsIDEsIDIxNiwgMTg3LCAyMzUsIDkzLCAxLCAyMTksIDEwOCwgMjM1LCAKKyAgICA5MywgMSwgMjEzLCAyMjgsIDIzNSwgOTMsIDEsIDIxMSwgMjQyLCAyMzUsIDkzLCAxLCAyMDYsIDE4MCwgMjM1LCA5MywgMSwgCisgICAgMjAxLCAxMCwgMjM1LCA5MywgMSwgMjM3LCAxNzUsIDIzNSwgOTMsIDEsIDIyOCwgMTU1LCAyMzUsIDkzLCAxLCAyMzMsIDY2LCAKKyAgICAyMzUsIDkzLCAxLCAyMTcsIDEwLCAyMzUsIDkzLCAxLCAyMTksIDExNCwgMjMzLCA4MiwgNDAsIDIxNiwgMTgsIDEsIDI1MSwgCisgICAgODUsIDQwLCAyMTYsIDE4LCAxLCAyNDgsIDMsIDQwLCAyMTYsIDE4LCAxLCAyMzYsIDczLCA0MCwgMjE2LCAxOCwgMSwgMjQwLCAKKyAgICAxOTksIDQwLCAyMTYsIDE4LCAxLCA3MiwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgNTksIDQwLCAyMTYsIDE4LCAxLCAyMzksIAorICAgIDg1LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCA5NiwgNDAsIDIxNiwgMTgsIDEsIDIzOSwgODMsIDQwLCAyMTYsIDE4LCAxLCA3MCwgCisgICAgNDAsIDIxNiwgMTgsIDEsIDIyNiwgNzcsIDQwLCAyMTYsIDE4LCAxLCAyMjUsIDEyLCA0MCwgMjE2LCAxOCwgMSwgMjIyLCAKKyAgICAzOCwgNDAsIDIxNiwgMTgsIDEsIDIyMCwgMjIsIDQwLCAyMTYsIDE4LCAxLCAyMDIsIDE3OCwgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIxNiwgNjAsIDQwLCAyMTYsIDE4LCAxLCAyMTMsIDE1MywgNDAsIDIxNiwgMTgsIDEsIDIwOSwgMTYxLCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjA3LCA4LCA0MCwgMjE2LCAxOCwgMSwgNjYsIDQwLCAyMTYsIDE4LCAxLCAyNDYsIDI0NSwgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIxMCwgMSwgNDAsIDIxNiwgMTgsIDEsIDIxMCwgNjcsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDIxMywgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIwMCwgMjksIDQwLCAyMTYsIDE4LCAxLCA3NCwgNDAsIDIxNiwgMTgsIDEsIDIxNywgNjMsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMzgsIDI0OCwgNDAsIDIxNiwgMTgsIDEsIDE0NCwgNDAsIDIxNiwgMTgsIDEsIDIwNSwgMTAsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMDMsIDQ3LCA0MCwgMjE2LCAxOCwgMSwgMjAwLCAzMywgNDAsIDIxNiwgMTgsIDEsIDIwMCwgMzEsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMDAsIDY1LCA0MCwgMjE2LCAxOCwgMSwgMjI4LCAxNzgsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDIxMSwgNDAsIDIxNiwgCisgICAgMTgsIDEsIDE4MywgNDAsIDIxNiwgMTgsIDEsIDIzMiwgMjQwLCAzOCwgNDAsIDIxNiwgMTgsIDEsIDI1MSwgODUsIDM4LCAKKyAgICA0MCwgMjE2LCAxOCwgMSwgMjQwLCAxOTksIDM4LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCA5NiwgMzgsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMjAsIDIyLCAzOCwgNDAsIDIxNiwgMTgsIDEsIDIwOSwgMTYxLCAyMDQsIDI2LCAxLCAyNTEsIDExNiwgMjA0LCAyNiwgCisgICAgMSwgMjQ4LCAyMDgsIDIwNCwgMjYsIDEsIDIzNiwgNjEsIDIwNCwgMjYsIDEsIDIyNiwgMjA3LCAyMDQsIDI2LCAxLCAyNDEsIAorICAgIDEzNiwgMjA0LCAyNiwgMSwgMjMzLCAyMDcsIDIwNCwgMjYsIDEsIDIwMSwgMCwgMjA0LCAyNiwgMSwgMTk5LCA4MCwgMjA0LCAKKyAgICAyNiwgMSwgMjMzLCAxMTYsIDIwNCwgMjYsIDEsIDIwNiwgMTQ2LCAyMDQsIDI2LCAxLCAxOTksIDIzNCwgMjA0LCAyNiwgMSwgCisgICAgMjI3LCA4NiwgMjA0LCAyNiwgMSwgMjEwLCAyMSwgMjA0LCAyNiwgMSwgMjI1LCA4NywgMjA0LCAyNiwgMSwgMjIyLCA0NywgCisgICAgMjA0LCAyNiwgMSwgMjQxLCA5NiwgMjA0LCAyNiwgMSwgMjE4LCA4OSwgMjA0LCAyNiwgMSwgMTk5LCAzLCAyMDQsIDI2LCAxLCAKKyAgICAyMTIsIDE4LCAyMDQsIDI2LCAxLCAyNTEsIDE3MSwgMjA0LCAyNiwgMSwgMjE0LCAyMjQsIDIwNCwgMjYsIDEsIDIxMiwgNTUsIAorICAgIDIwNCwgMjYsIDEsIDIxNCwgMTAyLCAyMDQsIDI2LCAxLCAyMTMsIDIwNywgMjA0LCAyNiwgMSwgMjA2LCAxMTAsIDIwNCwgCisgICAgMjYsIDEsIDIzNSwgMTk0LCAyMDQsIDI2LCAxLCAxMzgsIDIwNCwgMjYsIDEsIDcwLCAyMDQsIDI2LCAxLCA2NiwgMjA0LCAKKyAgICAyNiwgMSwgMjA4LCAxMzQsIDIwNCwgMjYsIDIwMCwgMjM4LCAyNDAsIDIzOSwgNDAsIDIxNiwgMTIsIDIsIDYyLCA0MCwgCisgICAgMjE2LCAxMiwgMiwgNzAsIDQwLCAyMTYsIDEyLCAyLCA2NiwgNDAsIDIxNiwgMTIsIDIsIDE2MSwgNDAsIDIxNiwgMTIsIDIsIAorICAgIDIyNiwgMTUsIDQwLCAyMTYsIDEyLCAyLCAyMzYsIDg5LCA0MCwgMjE2LCAxMiwgMiwgMjM1LCA1MCwgNDAsIDIxNiwgMTIsIAorICAgIDIsIDIwMCwgMTgxLCA0MCwgMjE2LCAxMiwgMiwgMjQ3LCAxOTAsIDQwLCAyMTYsIDEyLCAyLCAyMjcsIDI0OCwgNDAsIDIxNiwgCisgICAgMTIsIDIsIDIyNywgMjA3LCA0MCwgMjE2LCAxMiwgMiwgMjA3LCAzNiwgNDAsIDIxNiwgMTIsIDIsIDIwNCwgMjE1LCA0MCwgCisgICAgMjE2LCAxMiwgMiwgMjQyLCA1OCwgNDAsIDIxNiwgMTIsIDIsIDI0MSwgNzYsIDQwLCAyMTYsIDEyLCAyLCAyMzksIDEzNywgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIwNiwgMTIyLCA0MCwgMjE2LCAxMiwgMiwgMTcyLCA0MCwgMjE2LCAxMiwgMiwgMjQ5LCAxMzYsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMzcsIDE5NSwgNDAsIDIxNiwgMTIsIDIsIDE4OCwgNDAsIDIxNiwgMTIsIDIsIDIxOCwgMTMzLCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMTc4LCA0MCwgMjE2LCAxMiwgMiwgMjIxLCAyMTEsIDQwLCAyMTYsIDEyLCAyLCAyMjEsIDQxLCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMTgzLCA0MCwgMjE2LCAxMiwgMiwgMjAzLCA5MCwgNDAsIDIxNiwgMTIsIDIsIDIwMiwgMjM0LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjEzLCAyNTIsIDQwLCAyMTYsIDEyLCAyLCAyMTIsIDE3NSwgNDAsIDIxNiwgMTIsIDIsIDE5NCwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIxMiwgNjQsIDQwLCAyMTYsIDEyLCAyLCAxOTksIDExNCwgNDAsIDIxNiwgMTIsIDIsIDIxMCwgCisgICAgMTE0LCA0MCwgMjE2LCAxMiwgMiwgMjA4LCAxNzksIDQwLCAyMTYsIDEyLCAyLCAxNDQsIDQwLCAyMTYsIDEyLCAyLCAyNTAsIAorICAgIDEzMywgNDAsIDIxNiwgMTIsIDIsIDI1MCwgMTMyLCA0MCwgMjE2LCAxMiwgMiwgMjUwLCAxMzEsIDQwLCAyMTYsIDEyLCAyLCAKKyAgICAyMDAsIDE1MiwgNDAsIDIxNiwgMTIsIDIsIDI0MiwgMzUsIDQwLCAyMTYsIDEyLCAyLCAyNDIsIDM0LCA0MCwgMjE2LCAxMiwgCisgICAgMiwgMjQ5LCAxMTEsIDQwLCAyMTYsIDEyLCAyLCAyNDcsIDI0MiwgNDAsIDIxNiwgMTIsIDIwMCwgMjM4LCAyNDAsIDIzOSwgCisgICAgNDAsIDIxNiwgMTIsIDQxLCAxMDIsIDQwLCAyMTYsIDEyLCA0MSwgMTA1LCA0MCwgMjE2LCAxMiwgNDEsIDIwNiwgMTY2LCAKKyAgICA0MCwgMjE2LCAxMiwgNDEsIDIwNCwgMTU5LCA0MCwgMjE2LCAxMiwgNDEsIDIzMywgODIsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIAorICAgIDcwLCAyNDEsIDExNiwgNiwgMSwgMTY4LCA3MiwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgNjIsIDI0MSwgMTE2LCA2LCAxLCAKKyAgICAxNjgsIDI1MSwgMTg1LCAyNDEsIDExNiwgNiwgMSwgMTY4LCA3NCwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgMjE3LCA2MywgCisgICAgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCA3MCwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCA3MiwgMjQxLCAxMTYsIDYsIAorICAgIDEsIDIwOSwgMjUwLCA2MiwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCAyNTEsIDE4NSwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgCisgICAgMjUwLCA3NCwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCAyMTcsIDYzLCAyNDEsIDExNiwgNiwgMSwgMjUwLCAxMTIsIAorICAgIDI0MSwgMTE2LCA2LCAxLCAyMTYsIDIzOCwgMjQxLCAxMTYsIDYsIDEsIDIwMCwgMjE2LCAyNDEsIDExNiwgNiwgMSwgMjAwLCAKKyAgICA0OCwgMjQxLCAxMTYsIDYsIDEsIDIzNCwgMjQ3LCAyNDEsIDExNiwgNiwgMSwgMjE2LCA2MSwgMjQxLCAxMTYsIDYsIDEsIAorICAgIDI0OCwgMjUyLCAyNDEsIDExNiwgNiwgMSwgMjA2LCAxOTAsIDI0MSwgMTE2LCA2LCAxLCAyNDEsIDE2MSwgMjQxLCAxMTYsIAorICAgIDYsIDEsIDI0NywgNCwgMjQxLCAxMTYsIDYsIDEsIDIyNywgMjI1LCAyNDEsIDExNiwgNiwgMSwgMjI3LCAxNSwgMjQxLCAKKyAgICAxMTYsIDYsIDEsIDIzNiwgMzYsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDI0OCwgMjQxLCAxMTYsIDYsIDEsIDIwMywgNTQsIAorICAgIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDc0LCAyNDEsIDExNiwgNiwgMSwgMjA2LCAxMDQsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIAorICAgIDEwNCwgMjQxLCAxMTYsIDYsIDEsIDE5OSwgODcsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDk0LCAyNDEsIDExNiwgNiwgMSwgCisgICAgMTk5LCA2NywgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMTE1LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAyMDksIDI0MSwgMTE2LCA2LCAKKyAgICAxLCAyMzgsIDE5MCwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMTc5LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAxNjUsIDI0MSwgCisgICAgMTE2LCA2LCAxLCAyMTcsIDEwNSwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgNTEsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDcwLCAKKyAgICAyNDEsIDExNiwgNCwgMSwgMTY4LCA3MiwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNjIsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIAorICAgIDI1MSwgMTg1LCAyNDEsIDExNiwgNCwgMSwgMTY4LCA3NCwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgMjE3LCA2MywgMjQxLCAKKyAgICAxMTYsIDQsIDEsIDIwOSwgMjUwLCA3MCwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgMjUwLCA3MiwgMjQxLCAxMTYsIDQsIDEsIAorICAgIDIwOSwgMjUwLCA2MiwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgMjUwLCAyNTEsIDE4NSwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgCisgICAgMjUwLCA3NCwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgMjUwLCAyMTcsIDYzLCAyNDEsIDExNiwgNCwgMSwgMjUwLCAxMTIsIAorICAgIDI0MSwgMTE2LCA0LCAxLCAyMTYsIDIzOCwgMjQxLCAxMTYsIDQsIDEsIDIwMCwgMjE2LCAyNDEsIDExNiwgNCwgMSwgMjAwLCAKKyAgICA0OCwgMjQxLCAxMTYsIDQsIDEsIDIzNCwgMjQ3LCAyNDEsIDExNiwgNCwgMSwgMjE2LCA2MSwgMjQxLCAxMTYsIDQsIDEsIAorICAgIDI0OCwgMjUyLCAyNDEsIDExNiwgNCwgMSwgMjA2LCAxOTAsIDI0MSwgMTE2LCA0LCAxLCAyNDEsIDE2MSwgMjQxLCAxMTYsIAorICAgIDQsIDEsIDI0NywgNCwgMjQxLCAxMTYsIDQsIDEsIDIyNywgMjI1LCAyNDEsIDExNiwgNCwgMSwgMjI3LCAxNSwgMjQxLCAKKyAgICAxMTYsIDQsIDEsIDIzNiwgMzYsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDI0OCwgMjQxLCAxMTYsIDQsIDEsIDIwMywgNTQsIAorICAgIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDc0LCAyNDEsIDExNiwgNCwgMSwgMjA2LCAxMDQsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIAorICAgIDEwNCwgMjQxLCAxMTYsIDQsIDEsIDE5OSwgODcsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDk0LCAyNDEsIDExNiwgNCwgMSwgCisgICAgMTk5LCA2NywgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMTE1LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAyMDksIDI0MSwgMTE2LCA0LCAKKyAgICAxLCAyMzgsIDE5MCwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMTc5LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAxNjUsIDI0MSwgCisgICAgMTE2LCA0LCAxLCAyMTcsIDEwNSwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgNTEsIDIxMCwgNzIsIDEsIDIxNiwgNTgsIDIxMCwgCisgICAgNzIsIDEsIDIwNSwgMTQ0LCAyMTAsIDcyLCAxLCAyMjYsIDE1OSwgMjEwLCA3MiwgMSwgMjM3LCAxNDAsIDIxMCwgNzIsIDEsIAorICAgIDIwNiwgNzksIDIxMCwgNzIsIDEsIDIwOSwgMjksIDIxMCwgNzIsIDEsIDIwNywgMjA0LCAyMTAsIDcyLCAxLCAyNDYsIDE4NCwgCisgICAgMjEwLCA3MiwgMSwgMjAwLCA1MCwgMjEwLCA3MiwgMSwgMjMzLCA3OSwgMjEwLCA3MiwgMSwgMjQ4LCAxODcsIDIxMCwgNzIsIAorICAgIDEsIDI0MSwgMTc0LCAyMTAsIDcyLCAxLCAyMzYsIDc1LCAyMTAsIDcyLCAxLCAyMDIsIDE3MywgMjEwLCA3MiwgMSwgMjA2LCAKKyAgICA4NSwgMjEwLCA3MiwgMSwgMTk5LCAxMiwgMjEwLCA3MiwgMSwgMjIyLCA3NCwgMjEwLCA3MiwgMSwgMjI3LCAxNDUsIDIxMCwgCisgICAgNzIsIDEsIDIwMCwgMjU0LCAyMTAsIDcyLCAxLCAyMzQsIDIzNSwgMjEwLCA3MiwgMSwgMjI0LCA5NCwgMjEwLCA3MiwgMSwgCisgICAgMjIxLCAxNjUsIDIxMCwgNzIsIDEsIDIyOCwgMTU4LCAyMTAsIDcyLCAxLCAyMzgsIDI0NiwgMjEwLCA3MiwgMSwgMjUwLCAKKyAgICAxODEsIDIxMCwgNzIsIDEsIDI1MSwgMjI1LCAyMTAsIDcyLCAxLCAyMTcsIDc4LCAyMTAsIDcyLCAxLCAyMDAsIDI0MSwgCisgICAgMjEwLCA3MiwgMSwgMjE2LCAyNTQsIDIxMCwgNzIsIDEsIDI1MSwgMTg1LCAyMTAsIDcyLCAxLCAyMTIsIDI1NCwgMjEwLCAKKyAgICA3MiwgMSwgMjE4LCA4OSwgMjEwLCA3MiwgMSwgMjM5LCAxMCwgMjEwLCA3MiwgMSwgMjUxLCAxOTAsIDIxMCwgNzIsIDEsIAorICAgIDIzMiwgMjMxLCAyMTAsIDcyLCAxLCAyMDMsIDIyOCwgMjEwLCA3MiwgMSwgMjE3LCAxNDQsIDIxMCwgNzIsIDEsIDIxNywgCisgICAgNTUsIDIxMCwgNzIsIDEsIDIxNywgMTAzLCAyMTAsIDcyLCAxLCAyNTAsIDExNSwgMjEwLCA3MiwgMSwgMjUwLCAyMjksIAorICAgIDIxMCwgNzIsIDEsIDIxNywgMzMsIDIxMCwgNzIsIDEsIDI1MSwgMTY2LCAyMTAsIDcyLCAxLCAyMzgsIDEwOCwgMjEwLCA3MiwgCisgICAgMSwgMjUwLCAyMDcsIDIxMCwgNzIsIDEsIDIzOSwgMjEsIDIxMCwgNzIsIDEsIDIzMiwgMjM5LCAyMTAsIDcyLCAxLCAyMDAsIAorICAgIDE1LCAyMTcsIDEyLCAxLCAyNTEsIDE0MiwgMjE3LCAxMiwgMSwgMjQ5LCAxMzYsIDIxNywgMTIsIDEsIDIwNywgMzYsIDIxNywgCisgICAgMTIsIDEsIDIyNywgMjQ4LCAyMTcsIDEyLCAxLCAyMDAsIDE4MSwgMjE3LCAxMiwgMSwgMjI2LCAyMDcsIDIxNywgMTIsIDEsIAorICAgIDI0MSwgMTYwLCAyMTcsIDEyLCAxLCAyMTMsIDI1MiwgMjE3LCAxMiwgMSwgMjEyLCA2NCwgMjE3LCAxMiwgMSwgMjEwLCAyNywgCisgICAgMjE3LCAxMiwgMSwgMjQxLCAxMDAsIDIxNywgMTIsIDEsIDI0NywgMTAxLCAyMTcsIDEyLCAxLCAyMzYsIDg5LCAyMTcsIDEyLCAKKyAgICAxLCAyMzcsIDE5NSwgMjE3LCAxMiwgMSwgMjE0LCAxNTcsIDIxNywgMTIsIDEsIDIyNywgMTAyLCAyMTcsIDEyLCAxLCAyMjUsIAorICAgIDE3MSwgMjE3LCAxMiwgMSwgMjIxLCAxNzksIDIxNywgMTIsIDEsIDIxOCwgNzMsIDIxNywgMTIsIDEsIDIwMSwgNzIsIDIxNywgCisgICAgMTIsIDEsIDE0NCwgMjE3LCAxMiwgMSwgMTgzLCAyMTcsIDEyLCAxLCA2MiwgMjE3LCAxMiwgMSwgNzIsIDIxNywgMTIsIDEsIAorICAgIDcwLCAyMTcsIDEyLCAxLCA3NCwgMjE3LCAxMiwgMSwgNjYsIDIxNywgMTIsIDEsIDI1MiwgMTM4LCAyMTcsIDEyLCAxLCAKKyAgICAyMzgsIDI1NSwgMjE3LCAxMiwgMSwgMjE3LCA2MywgMjE3LCAxMiwgMTcsIDE5OSwgODEsIDIxNywgMTIsIDE3LCAxMDIsIAorICAgIDIxNywgMTIsIDE3LCAxMDUsIDIxNywgMTIsIDE3LCAxNDcsIDIxNywgMTIsIDE3LCAxNDksIDIxNywgMTIsIDE3LCAxNjQsIAorICAgIDIxNywgMTIsIDE3LCAxODcsIDIxNywgMTIsIDE3LCAyMTAsIDEzNSwgMjE3LCAxMiwgMTcsIDE5MiwgMjE3LCAxMiwgMTcsIAorICAgIDIxOSwgMTEzLCAyMTcsIDE0LCA2LCAxLCA2MiwgMjE3LCAxNCwgNiwgMSwgMjUxLCAxNzYsIDIxNywgMTQsIDYsIDEsIDI1MSwgCisgICAgMTcxLCAyMTcsIDE0LCA2LCAxLCAyNTEsIDE4NSwgMjE3LCAxNCwgNiwgMSwgMjQ4LCA3MiwgMjE3LCAxNCwgNiwgMSwgMjQ3LCAKKyAgICAzNywgMjE3LCAxNCwgNiwgMSwgMjM4LCAyNDAsIDIxNywgMTQsIDYsIDEsIDcyLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIyMSwgCisgICAgMjE3LCAxNCwgNiwgMSwgMTQ0LCAyMTcsIDE0LCA2LCAxLCAyMzMsIDM2LCAyMTcsIDE0LCA2LCAxLCA3MCwgMjE3LCAxNCwgCisgICAgNiwgMSwgMTYxLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIzOSwgMjE3LCAxNCwgNiwgMSwgMjI1LCAyMDMsIDIxNywgMTQsIDYsIAorICAgIDEsIDE5NCwgMjE3LCAxNCwgNiwgMSwgMTc4LCAyMTcsIDE0LCA2LCAxLCAxODgsIDIxNywgMTQsIDYsIDEsIDc0LCAyMTcsIAorICAgIDE0LCA2LCAxLCAyMTcsIDEwMiwgMjE3LCAxNCwgNiwgMSwgMTcyLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIzOCwgMjE3LCAxNCwgCisgICAgNiwgMSwgMjEyLCA2NCwgMjE3LCAxNCwgNiwgMSwgMjEwLCAxMTQsIDIxNywgMTQsIDYsIDEsIDIwNywgMzYsIDIxNywgMTQsIAorICAgIDYsIDEsIDIzOCwgMjM3LCAyMTcsIDE0LCA2LCAxLCAyMDUsIDMyLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIzNiwgMjE3LCAxNCwgCisgICAgNiwgMSwgMjA1LCAyMiwgMjE3LCAxNCwgNiwgMSwgMjQxLCAxMDAsIDIxNywgMTQsIDYsIDEsIDY2LCAyMTcsIDE0LCA2LCAxLCAKKyAgICAyMDEsIDExNCwgMjE3LCAxNCwgNiwgMSwgMjI2LCAyMDcsIDIxNywgMTQsIDYsIDEsIDIzNSwgMTk5LCAyMTcsIDE0LCA2LCAKKyAgICAxLCAxOTksIDExNCwgMjE3LCAxNCwgNiwgMSwgMTk5LCA3NywgMjE3LCAxNCwgNCwgMSwgNjIsIDIxNywgMTQsIDQsIDEsIAorICAgIDI1MSwgMTc2LCAyMTcsIDE0LCA0LCAxLCAyNTEsIDE3MSwgMjE3LCAxNCwgNCwgMSwgMjUxLCAxODUsIDIxNywgMTQsIDQsIAorICAgIDEsIDI0OCwgNzIsIDIxNywgMTQsIDQsIDEsIDI0NywgMzcsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjQwLCAyMTcsIDE0LCA0LCAKKyAgICAxLCA3MiwgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMjEsIDIxNywgMTQsIDQsIDEsIDE0NCwgMjE3LCAxNCwgNCwgMSwgMjMzLCAKKyAgICAzNiwgMjE3LCAxNCwgNCwgMSwgNzAsIDIxNywgMTQsIDQsIDEsIDE2MSwgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzksIDIxNywgCisgICAgMTQsIDQsIDEsIDIyNSwgMjAzLCAyMTcsIDE0LCA0LCAxLCAxOTQsIDIxNywgMTQsIDQsIDEsIDE3OCwgMjE3LCAxNCwgNCwgCisgICAgMSwgMTg4LCAyMTcsIDE0LCA0LCAxLCA3NCwgMjE3LCAxNCwgNCwgMSwgMjE3LCAxMDIsIDIxNywgMTQsIDQsIDEsIDE3MiwgCisgICAgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzgsIDIxNywgMTQsIDQsIDEsIDIxMiwgNjQsIDIxNywgMTQsIDQsIDEsIDIxMCwgMTE0LCAKKyAgICAyMTcsIDE0LCA0LCAxLCAyMDcsIDM2LCAyMTcsIDE0LCA0LCAxLCAyMzgsIDIzNywgMjE3LCAxNCwgNCwgMSwgMjA1LCAzMiwgCisgICAgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzYsIDIxNywgMTQsIDQsIDEsIDIwNSwgMjIsIDIxNywgMTQsIDQsIDEsIDI0MSwgMTAwLCAKKyAgICAyMTcsIDE0LCA0LCAxLCA2NiwgMjE3LCAxNCwgNCwgMSwgMjAxLCAxMTQsIDIxNywgMTQsIDQsIDEsIDIyNiwgMjA3LCAyMTcsIAorICAgIDE0LCA0LCAxLCAyMzUsIDE5OSwgMjE3LCAxNCwgNCwgMSwgMTk5LCAxMTQsIDIxNywgMTQsIDQsIDEsIDE5OSwgNzcsIDIzOCwgCisgICAgMjA1LCAxLCA2MiwgMjM4LCAyMDUsIDEsIDI0OSwgOCwgMjM4LCAyMDUsIDEsIDI0NywgNzYsIDIzOCwgMjA1LCAxLCAyNDcsIAorICAgIDgsIDIzOCwgMjA1LCAxLCAyNDEsIDE3NSwgMjM4LCAyMDUsIDEsIDIyMCwgNjcsIDIzOCwgMjA1LCAxLCAyNDEsIDkxLCAKKyAgICAyMzgsIDIwNSwgMSwgMjM4LCAyMzQsIDIzOCwgMjA1LCAxLCA3MiwgMjM4LCAyMDUsIDEsIDIzNywgMTQ3LCAyMzgsIDIwNSwgCisgICAgMSwgMjM2LCAxNSwgMjM4LCAyMDUsIDEsIDIzNSwgMTMyLCAyMzgsIDIwNSwgMSwgMjM0LCAxMzksIDIzOCwgMjA1LCAxLCAKKyAgICA3MCwgMjM4LCAyMDUsIDEsIDIyNywgMjI3LCAyMzgsIDIwNSwgMSwgMjI3LCA4LCAyMzgsIDIwNSwgMSwgMjI1LCA0MCwgCisgICAgMjM4LCAyMDUsIDEsIDIyNCwgMTM0LCAyMzgsIDIwNSwgMSwgMjIyLCA3NiwgMjM4LCAyMDUsIDEsIDIyMCwgMzQsIDIzOCwgCisgICAgMjA1LCAxLCAxODgsIDIzOCwgMjA1LCAxLCAyMTksIDkxLCAyMzgsIDIwNSwgMSwgNzQsIDIzOCwgMjA1LCAxLCAyMTYsIDczLCAKKyAgICAyMzgsIDIwNSwgMSwgMjE0LCAxMzksIDIzOCwgMjA1LCAxLCAyMTMsIDE5MCwgMjM4LCAyMDUsIDEsIDIxMiwgMjEwLCAyMzgsIAorICAgIDIwNSwgMSwgMjExLCAyMDIsIDIzOCwgMjA1LCAxLCAyMTAsIDY1LCAyMzgsIDIwNSwgMSwgMjA2LCAyMDEsIDIzOCwgMjA1LCAKKyAgICAxLCAyMDYsIDEwNiwgMjM4LCAyMDUsIDEsIDY2LCAyMzgsIDIwNSwgMSwgMjAzLCA1OSwgMjM4LCAyMDUsIDEsIDIwMCwgCisgICAgMTc1LCAyMzgsIDIwNSwgMSwgMjAwLCAxMjMsIDIzOCwgMjA1LCAxLCAxOTksIDg5LCAyMzgsIDIwNSwgMSwgMTk5LCA2OCwgCisgICAgMjM4LCAyMDUsIDEsIDIzNSwgMTg1LCAyMzgsIDIwNSwgMSwgMjM1LCAxOTEsIDIzOCwgMjA1LCAxLCAyMjYsIDE5MiwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyNTEsIDExMSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDgsIDIxMCwgMjQ3LCAxMDgsIAorICAgIDI1MSwgMTQzLCAxLCAyMzUsIDE0OSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDEsIDI0MCwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyMzksIDksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCA5OSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMzgsIDE0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgNjIsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjA2LCAyMjcsIAorICAgIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ3LCAzNywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDIyMiwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDc3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyOCwgMzQsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjEwLCAxMTQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI1LCA4MCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMjgsIDQ2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwMCwgMTcxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzOSwgCisgICAgMTAxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NywgMTM1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNywgMjA4LCAKKyAgICAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNywgNDcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjIzLCAyNTIsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjM0LCA4NiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTQsIDE0MCwgMjQ3LCAxMDgsIAorICAgIDI1MSwgMTQzLCAxLCAyNTEsIDMwLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NiwgMjAxLCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDI0NiwgMjM2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0MiwgMTY1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIyMiwgMTYxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxNCwgMTQ0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxOCwgCisgICAgMjAwLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzOSwgNzgsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjEwLCA5NywgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyMjcsIDIyOCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTcsIDc4LCAyNDcsIDEwOCwgCisgICAgMjUxLCAxNDMsIDEsIDIwNCwgMTMyLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzNywgMTcwLCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDIzOSwgOTEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ3LCAxNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMTYsIDQ3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzNSwgMTc1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxMywgCisgICAgMjA0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxMCwgMTIzLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwMiwgMjM2LCAKKyAgICAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwNSwgMjA2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwOSwgMjI5LCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDIyOCwgNSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDIsIDE2NiwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyNDcsIDEwMSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDAsIDU1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIxNSwgMTM5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNiwgMTI1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDI0NiwgMTQzLCAKKyAgICA4MSwgMzAsIDM1LCAyLCAyNTIsIDg4LCAzMCwgMzUsIDIsIDI1MiwgODcsIDMwLCAzNSwgMiwgMjUyLCA4NiwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDg1LCAzMCwgMzUsIDIsIDI1MiwgODQsIDMwLCAzNSwgMiwgMjUyLCA4MywgMzAsIDM1LCAyLCAyNTIsIDgyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgODEsIDMwLCAzNSwgMiwgMjUyLCA4MCwgMzAsIDM1LCAyLCAyNTIsIDc5LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgNzgsIDMwLCAzNSwgMiwgMjUyLCA3NywgMzAsIDM1LCAyLCAyNTIsIDc2LCAzMCwgMzUsIDIsIDI1MiwgNzUsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCA3NCwgMzAsIDM1LCAyLCAyNTIsIDczLCAzMCwgMzUsIDIsIDI1MiwgNzIsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICA3MSwgMzAsIDM1LCAyLCAyNTIsIDcwLCAzMCwgMzUsIDIsIDI1MiwgNjksIDMwLCAzNSwgMiwgMjUyLCA2OCwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDY3LCAzMCwgMzUsIDIsIDI1MiwgNjYsIDMwLCAzNSwgMiwgMjUyLCA2NSwgMzAsIDM1LCAyLCAyNTIsIDY0LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgNjMsIDMwLCAzNSwgMiwgMjUyLCA2MiwgMzAsIDM1LCAyLCAyNTUsIDk2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgNjEsIDMwLCAzNSwgMiwgMjUyLCA2MCwgMzAsIDM1LCAyLCAyNTIsIDU5LCAzMCwgMzUsIDIsIDI1MiwgNTgsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCA1NywgMzAsIDM1LCAyLCAyNTIsIDU2LCAzMCwgMzUsIDIsIDI1MiwgNTUsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICA1NCwgMzAsIDM1LCAyLCAyNTIsIDUzLCAzMCwgMzUsIDIsIDI1MiwgNTIsIDMwLCAzNSwgMiwgMjUyLCA1MSwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDUwLCAzMCwgMzUsIDIsIDI1MiwgNDksIDMwLCAzNSwgMiwgMjUyLCA0OCwgMzAsIDM1LCAyLCAyNTIsIDQ3LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgNDYsIDMwLCAzNSwgMiwgMjUyLCA0NSwgMzAsIDM1LCAyLCAyNTIsIDQ0LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgNDMsIDMwLCAzNSwgMiwgMjUyLCA0MiwgMzAsIDM1LCAyLCAyNTIsIDQxLCAzMCwgMzUsIDIsIDI1MiwgNDAsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAzOSwgMzAsIDM1LCAyLCAyNTIsIDM4LCAzMCwgMzUsIDIsIDI1MiwgMzcsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAzNiwgMzAsIDM1LCAyLCAyNTIsIDM1LCAzMCwgMzUsIDIsIDI1MiwgMzQsIDMwLCAzNSwgMiwgMjUyLCAzMywgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDMyLCAzMCwgMzUsIDIsIDI1MiwgMzEsIDMwLCAzNSwgMiwgMjUyLCAzMCwgMzAsIDM1LCAyLCAyNTIsIDI5LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjgsIDMwLCAzNSwgMiwgMjUyLCAyNywgMzAsIDM1LCAyLCAyNTIsIDI2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjUsIDMwLCAzNSwgMiwgMjUyLCAyNCwgMzAsIDM1LCAyLCAyNTIsIDIzLCAzMCwgMzUsIDIsIDI1MiwgMjIsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAyMSwgMzAsIDM1LCAyLCAyNTIsIDIwLCAzMCwgMzUsIDIsIDI1MiwgMTksIDMwLCAzNSwgMiwgMjU1LCAKKyAgICA5LCAzMCwgMzUsIDIsIDI1MiwgMTgsIDMwLCAzNSwgMiwgMjUyLCAxNywgMzAsIDM1LCAyLCAyNTQsIDIzMCwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDE2LCAzMCwgMzUsIDIsIDI1MiwgMTUsIDMwLCAzNSwgMiwgMjUyLCAxNCwgMzAsIDM1LCAyLCAyNTIsIDEzLCAKKyAgICAzMCwgMzUsIDIsIDI1NCwgMjE3LCAzMCwgMzUsIDIsIDI1MiwgMTIsIDMwLCAzNSwgMiwgMjUyLCAxMSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDEwLCAzMCwgMzUsIDIsIDI1MiwgOSwgMzAsIDM1LCAyLCAyNTIsIDgsIDMwLCAzNSwgMiwgMjU0LCAzMywgMzAsIAorICAgIDM1LCAyLCAyNTQsIDMyLCAzMCwgMzUsIDIsIDI1NCwgMzEsIDMwLCAzNSwgMiwgMjU0LCAzMCwgMzAsIDM1LCAyLCAyNTQsIAorICAgIDI5LCAzMCwgMzUsIDIsIDI1NCwgMjgsIDMwLCAzNSwgMiwgMjU0LCAyNywgMzAsIDM1LCAyLCAyNTQsIDI2LCAzMCwgMzUsIAorICAgIDIsIDI1NCwgMjQsIDMwLCAzNSwgMiwgMjU0LCAyMywgMzAsIDM1LCAyLCAyNTQsIDIyLCAzMCwgMzUsIDIsIDI1NCwgMjEsIAorICAgIDMwLCAzNSwgMiwgMjU0LCAyMCwgMzAsIDM1LCAyLCAyNTQsIDE5LCAzMCwgMzUsIDIsIDI1NCwgMTcsIDMwLCAzNSwgMiwgCisgICAgMjU0LCAxNiwgMzAsIDM1LCAyLCAyNTQsIDE1LCAzMCwgMzUsIDIsIDI1NCwgMTQsIDMwLCAzNSwgMiwgMjU0LCAxMywgMzAsIAorICAgIDM1LCAyLCAyNTQsIDEyLCAzMCwgMzUsIDIsIDI1NCwgMTEsIDMwLCAzNSwgMiwgMjU0LCAxMCwgMzAsIDM1LCAyLCAyNTQsIAorICAgIDksIDMwLCAzNSwgMiwgMjU0LCA4LCAzMCwgMzUsIDIsIDI1NCwgNywgMzAsIDM1LCAyLCAyNTQsIDYsIDMwLCAzNSwgMiwgCisgICAgMjU0LCA1LCAzMCwgMzUsIDIsIDI1NCwgNCwgMzAsIDM1LCAyLCAyNTQsIDMsIDMwLCAzNSwgMiwgMjU0LCAyLCAzMCwgMzUsIAorICAgIDIsIDI1NCwgMSwgMzAsIDM1LCAyLCAyNTQsIDAsIDMwLCAzNSwgMiwgMjUzLCAyNTUsIDMwLCAzNSwgMiwgMjUzLCAyNTMsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyNTIsIDMwLCAzNSwgMiwgMjUzLCAyNTEsIDMwLCAzNSwgMiwgMjUzLCAyNDcsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyNDYsIDMwLCAzNSwgMiwgMjUzLCAyNDUsIDMwLCAzNSwgMiwgMjUzLCAyNDQsIDMwLCAzNSwgMiwgMjUzLCAyNDAsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMzksIDMwLCAzNSwgMiwgMjUzLCAyMzgsIDMwLCAzNSwgMiwgMjUzLCAyMzcsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMzYsIDMwLCAzNSwgMiwgMjUzLCAyMzUsIDMwLCAzNSwgMiwgMjUzLCAyMzQsIDMwLCAzNSwgMiwgMjUzLCAyMzMsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMzIsIDMwLCAzNSwgMiwgMjUzLCAyMzEsIDMwLCAzNSwgMiwgMjUzLCAyMzAsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMjksIDMwLCAzNSwgMiwgMjUzLCAyMjgsIDMwLCAzNSwgMiwgMjUzLCAyMjcsIDMwLCAzNSwgMiwgMjUzLCAyMjYsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMjUsIDMwLCAzNSwgMiwgMjUzLCAyMjQsIDMwLCAzNSwgMiwgMjUzLCAyMjMsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMjIsIDMwLCAzNSwgMiwgMjUzLCAyMjEsIDMwLCAzNSwgMiwgMjUzLCAyMjAsIDMwLCAzNSwgMiwgMjUzLCAyMTksIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMTgsIDMwLCAzNSwgMiwgMjUzLCAyMTYsIDMwLCAzNSwgMiwgMjUzLCAyMTUsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMTQsIDMwLCAzNSwgMiwgMjUzLCAyMTMsIDMwLCAzNSwgMiwgMjUzLCAyMTIsIDMwLCAzNSwgMiwgMjUzLCAyMTAsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMDksIDMwLCAzNSwgMiwgMjUzLCAyMDgsIDMwLCAzNSwgMiwgMjUzLCAyMDcsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMDUsIDMwLCAzNSwgMiwgMjUzLCAyMDQsIDMwLCAzNSwgMiwgMjUzLCAyMDMsIDMwLCAzNSwgMiwgMjUzLCAxNjksIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxNjcsIDMwLCAzNSwgMiwgMjUzLCAxNjUsIDMwLCAzNSwgMiwgMjUzLCAxNjMsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAxNjEsIDMwLCAzNSwgMiwgMjUzLCAxNTksIDMwLCAzNSwgMiwgMjUzLCAxNTcsIDMwLCAzNSwgMiwgMjUzLCAxNTUsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxNTMsIDMwLCAzNSwgMiwgMjUzLCAxNTEsIDMwLCAzNSwgMiwgMjUzLCAxNDksIDMwLCAzNSwgMiwgCisgICAgMjUzLCAxNDYsIDMwLCAzNSwgMiwgMjUzLCAxNDQsIDMwLCAzNSwgMiwgMjUzLCAxNDIsIDMwLCAzNSwgMiwgMjUzLCAxNDAsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxMzgsIDMwLCAzNSwgMiwgMjUzLCAxMzYsIDMwLCAzNSwgMiwgMjUzLCAxMzQsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAxMzIsIDMwLCAzNSwgMiwgMjUzLCA1MCwgMzAsIDM1LCAyLCAyNTMsIDQ5LCAzMCwgMzUsIDIsIDI1MywgNDgsIDMwLCAKKyAgICAzNSwgMiwgMjUzLCA0NywgMzAsIDM1LCAyLCAyNTMsIDQ2LCAzMCwgMzUsIDIsIDI1MywgNDUsIDMwLCAzNSwgMiwgMjUzLCAKKyAgICA0MywgMzAsIDM1LCAyLCAyNTMsIDQyLCAzMCwgMzUsIDIsIDI1MywgNDEsIDMwLCAzNSwgMiwgMjUzLCA0MCwgMzAsIDM1LCAKKyAgICAyLCAyNTMsIDM5LCAzMCwgMzUsIDIsIDI1MywgMzgsIDMwLCAzNSwgMiwgMjUzLCAzNiwgMzAsIDM1LCAyLCAyNTMsIDM1LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMzEsIDMwLCAzNSwgMiwgMjUzLCAzMCwgMzAsIDM1LCAyLCAyNTMsIDI4LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjcsIDMwLCAzNSwgMiwgMjUzLCAyNiwgMzAsIDM1LCAyLCAyNTMsIDI1LCAzMCwgMzUsIDIsIDI1MywgMjQsIDMwLCAKKyAgICAzNSwgMiwgMjUzLCAyMywgMzAsIDM1LCAyLCAyNTMsIDIyLCAzMCwgMzUsIDIsIDI1MywgMjEsIDMwLCAzNSwgMiwgMjUzLCAKKyAgICAyMCwgMzAsIDM1LCAyLCAyNTMsIDE5LCAzMCwgMzUsIDIsIDI1MywgMTgsIDMwLCAzNSwgMiwgMjUzLCAxNywgMzAsIDM1LCAKKyAgICAyLCAyNTMsIDE2LCAzMCwgMzUsIDIsIDI1MywgMTUsIDMwLCAzNSwgMiwgMjUzLCAxNCwgMzAsIDM1LCAyLCAyNTMsIDEzLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTIsIDMwLCAzNSwgMiwgMjUzLCAxMSwgMzAsIDM1LCAyLCAyNTMsIDEwLCAzMCwgMzUsIDIsIAorICAgIDI1MywgOSwgMzAsIDM1LCAyLCAyNTMsIDgsIDMwLCAzNSwgMiwgMjUzLCA3LCAzMCwgMzUsIDIsIDI1MywgNiwgMzAsIDM1LCAKKyAgICAyLCAyNTMsIDUsIDMwLCAzNSwgMiwgMjUzLCA0LCAzMCwgMzUsIDIsIDI1MywgMywgMzAsIDM1LCAyLCAyNTMsIDIsIDMwLCAKKyAgICAzNSwgMiwgMjUzLCAxLCAzMCwgMzUsIDIsIDI1MywgMCwgMzAsIDM1LCAyLCAyNTIsIDI1NSwgMzAsIDM1LCAyLCAyNTIsIAorICAgIDI1NCwgMzAsIDM1LCAyLCAyNTIsIDI1MywgMzAsIDM1LCAyLCAyNTIsIDI1MiwgMzAsIDM1LCAyLCAyNTIsIDI1MSwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDI1MCwgMzAsIDM1LCAyLCAyNTIsIDI0OSwgMzAsIDM1LCAyLCAyNTIsIDI0OCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDI0NywgMzAsIDM1LCAyLCAyNTIsIDI0NiwgMzAsIDM1LCAyLCAyNTIsIDI0NSwgMzAsIDM1LCAyLCAyNTIsIDI0NCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDI0MywgMzAsIDM1LCAyLCAyNTIsIDI0MiwgMzAsIDM1LCAyLCAyNTIsIDI0MSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDI0MCwgMzAsIDM1LCAyLCAyNTIsIDIzOSwgMzAsIDM1LCAyLCAyNTIsIDIzOCwgMzAsIDM1LCAyLCAyNTIsIDIzNywgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIzNiwgMzAsIDM1LCAyLCAyNTIsIDIzNSwgMzAsIDM1LCAyLCAyNTIsIDIzNCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIzMywgMzAsIDM1LCAyLCAyNTIsIDIzMiwgMzAsIDM1LCAyLCAyNTIsIDIzMSwgMzAsIDM1LCAyLCAyNTIsIDIzMCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIyOSwgMzAsIDM1LCAyLCAyNTIsIDIyOCwgMzAsIDM1LCAyLCAyNTIsIDIyNywgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIyNiwgMzAsIDM1LCAyLCAyNTIsIDIyNSwgMzAsIDM1LCAyLCAyNTIsIDIyNCwgMzAsIDM1LCAyLCAyNTIsIDIyMywgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIyMiwgMzAsIDM1LCAyLCAyNTIsIDIyMSwgMzAsIDM1LCAyLCAyNTIsIDIyMCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIxOSwgMzAsIDM1LCAyLCAyNTIsIDIxOCwgMzAsIDM1LCAyLCAyNTIsIDIxNywgMzAsIDM1LCAyLCAyNTIsIDIxNiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIxNSwgMzAsIDM1LCAyLCAyNTIsIDIxNCwgMzAsIDM1LCAyLCAyNTIsIDIxMywgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIxMiwgMzAsIDM1LCAyLCAyNTIsIDIxMSwgMzAsIDM1LCAyLCAyNTIsIDIxMCwgMzAsIDM1LCAyLCAyNTIsIDIwOSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIwOCwgMzAsIDM1LCAyLCAyNTIsIDIwNywgMzAsIDM1LCAyLCAyNTIsIDIwNiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIwNSwgMzAsIDM1LCAyLCAyNTIsIDIwNCwgMzAsIDM1LCAyLCAyNTIsIDIwMywgMzAsIDM1LCAyLCAyNTIsIDIwMiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIwMSwgMzAsIDM1LCAyLCAyNTIsIDIwMCwgMzAsIDM1LCAyLCAyNTIsIDE5OSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE5OCwgMzAsIDM1LCAyLCAyNTIsIDE5NywgMzAsIDM1LCAyLCAyNTIsIDE5NiwgMzAsIDM1LCAyLCAyNTIsIDE5NSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE5NCwgMzAsIDM1LCAyLCAyNTIsIDE5MywgMzAsIDM1LCAyLCAyNTIsIDE5MiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE5MSwgMzAsIDM1LCAyLCAyNTIsIDE5MCwgMzAsIDM1LCAyLCAyNTIsIDE4OSwgMzAsIDM1LCAyLCAyNTIsIDE4OCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE4NywgMzAsIDM1LCAyLCAyNTIsIDE4NiwgMzAsIDM1LCAyLCAyNTIsIDE4NSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE4NCwgMzAsIDM1LCAyLCAyNTIsIDE4MywgMzAsIDM1LCAyLCAyNTIsIDE4MiwgMzAsIDM1LCAyLCAyNTIsIDE4MSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE4MCwgMzAsIDM1LCAyLCAyNTIsIDE3OSwgMzAsIDM1LCAyLCAyNTIsIDE3OCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE3NywgMzAsIDM1LCAyLCAyNTIsIDE3NiwgMzAsIDM1LCAyLCAyNTIsIDE3NSwgMzAsIDM1LCAyLCAyNTIsIDE3NCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE3MywgMzAsIDM1LCAyLCAyNTIsIDE3MiwgMzAsIDM1LCAyLCAyNTIsIDE3MSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE3MCwgMzAsIDM1LCAyLCAyNTIsIDE2OSwgMzAsIDM1LCAyLCAyNTIsIDE2OCwgNjIsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAxNjcsIDI1MCwgMTAzLCAzMCwgMzUsIDIsIDI1MiwgMTY2LCAyNDIsIDE1MywgMzAsIDM1LCAyLCAyNTIsIDE2NSwgNzIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxNjQsIDIzOCwgNSwgMzAsIDM1LCAyLCAyNTIsIDE2MywgMjM0LCAyNDcsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNjIsIDIyNywgMjUxLCAzMCwgMzUsIDIsIDI1MiwgMTYxLCAyMjcsIDExOCwgMzAsIDM1LCAyLCAyNTIsIDE2MCwgCisgICAgMTU2LCAzMCwgMzUsIDIsIDI1MiwgMTU5LCAyMjUsIDE4MCwgMzAsIDM1LCAyLCAyNTIsIDE1OCwgMjI1LCAxNzksIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAxNTcsIDIyNSwgMTc4LCAzMCwgMzUsIDIsIDI1MiwgMTU2LCAyMjUsIDE3NywgMzAsIDM1LCAyLCAyNTIsIAorICAgIDE1NSwgMjAxLCAxNDcsIDMwLCAzNSwgMiwgMjUyLCAxNTQsIDIwMCwgMTk1LCAzMCwgMzUsIDIsIDI1MiwgMTUzLCAyMDAsIAorICAgIDEyMywgMzAsIDM1LCAyLCAyNTIsIDE1MiwgMjE3LCA4MywgMzAsIDM1LCAyLCAyNTIsIDE1MSwgMjUyLCA0LCAzMCwgMzUsIAorICAgIDIsIDI1MiwgMTUwLCAyNDksIDQ1LCAzMCwgMzUsIDIsIDI1MiwgMTQ5LCAyNDEsIDIyMiwgMzAsIDM1LCAyLCAyNTIsIDE0OCwgCisgICAgMjM4LCAxMywgMzAsIDM1LCAyLCAyNTIsIDE0NywgMjI3LCAyMjcsIDMwLCAzNSwgMiwgMjUyLCAxNDYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNDUsIDMwLCAzNSwgMiwgMjUyLCAxNDQsIDMwLCAzNSwgMiwgMjUyLCAxNDMsIDMwLCAzNSwgMiwgMjUyLCAxNDIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxNDEsIDMwLCAzNSwgMiwgMjUyLCAxNDAsIDMwLCAzNSwgMiwgMjUyLCAxMzksIDI0MiwgMTYwLCAKKyAgICA1LCA2MiwgMjQyLCAxNjAsIDUsIDcyLCAyNDIsIDE2MCwgNSwgNzAsIDI0MiwgMTYwLCA1LCA3NCwgMjQyLCAxNjAsIDUsIAorICAgIDY2LCAyNDIsIDE2MCwgNSwgMjI3LCAyNDgsIDI0MiwgMTYwLCA1LCAyMjcsIDE2NiwgMjQyLCAxNjAsIDUsIDE2MSwgMjQyLCAKKyAgICAxNjAsIDUsIDIyNywgOCwgMjQyLCAxNjAsIDUsIDIyNiwgMTYzLCAyNDIsIDE2MCwgNSwgMjI2LCA4OCwgMjQyLCAxNjAsIDUsIAorICAgIDIyNiwgMTUsIDI0MiwgMTYwLCA1LCAxOTQsIDI0MiwgMTYwLCA1LCAyMjUsIDQwLCAyNDIsIDE2MCwgNSwgMjI0LCAyMTAsIAorICAgIDI0MiwgMTYwLCA1LCAyMjQsIDExMCwgMjQyLCAxNjAsIDUsIDIyNCwgNDIsIDI0MiwgMTYwLCA1LCAxNzgsIDI0MiwgMTYwLCAKKyAgICA1LCAyMjIsIDc2LCAyNDIsIDE2MCwgNSwgMjIxLCAyMTEsIDI0MiwgMTYwLCA1LCAyMjEsIDEzNiwgMjQyLCAxNjAsIDUsIAorICAgIDIyMSwgNDEsIDI0MiwgMTYwLCA1LCAxODgsIDI0MiwgMTYwLCA1LCAyMjAsIDM0LCAyNDIsIDE2MCwgNSwgMjE5LCAxNTAsIAorICAgIDI0MiwgMTYwLCA1LCAyMTgsIDI0MSwgMjQyLCAxNjAsIDUsIDIxOCwgMTMzLCAyNDIsIDE2MCwgNSwgMTcyLCAyNDIsIDE2MCwgCisgICAgNSwgMjE2LCA3MywgMjQyLCAxNjAsIDUsIDIxNSwgMjA0LCAyNDIsIDE2MCwgNSwgMjE1LCAxMDYsIDI0MiwgMTYwLCA1LCAKKyAgICAyMTQsIDIyNCwgMjQyLCAxNjAsIDUsIDIxMywgMjUyLCAyNDIsIDE2MCwgNSwgMjEzLCAxOTAsIDI0MiwgMTYwLCA1LCAyMTMsIAorICAgIDg4LCAyNDIsIDE2MCwgNSwgMjEzLCAxLCAyNDIsIDE2MCwgNSwgMjEyLCAxNzUsIDI0MiwgMTYwLCA1LCAyMTIsIDY0LCAKKyAgICAyNDIsIDE2MCwgNSwgMjExLCAyMDIsIDI0MiwgMTYwLCA1LCAyMDksIDE4MiwgMjQyLCAxNjAsIDUsIDIwOSwgMjksIDI0MiwgCisgICAgMTYwLCA1LCAyMDgsIDI0LCAyNDIsIDE2MCwgNSwgMjA3LCAzNiwgMjQyLCAxNjAsIDUsIDIwNiwgMjAxLCAyNDIsIDE2MCwgCisgICAgNSwgMjA2LCAxNSwgMjQyLCAxNjAsIDUsIDEzOCwgMjQyLCAxNjAsIDUsIDIwNCwgMjE1LCAyNDIsIDE2MCwgNSwgMjAxLCAKKyAgICAxMTQsIDI0MiwgMTYwLCA1LCAyMDEsIDY0LCAyNDIsIDE2MCwgNSwgMjAxLCAzMSwgMjQyLCAxNjAsIDUsIDIwMSwgMCwgCisgICAgMjQyLCAxNjAsIDUsIDIwMCwgMTgxLCAyNDIsIDE2MCwgNSwgMjAwLCAxNzUsIDI0MiwgMTYwLCA1LCAxOTksIDExNCwgMjQyLCAKKyAgICAxNjAsIDUsIDE5OSwgMTQsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjUxLCAxNDAsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgCisgICAgMjQ4LCAyMDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjM1LCAxNDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjQyLCAKKyAgICAyMiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMzQsIDEzOSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMDEsIDcyLCAyMjgsIAorICAgIDExOSwgMjUwLCAyMzgsIDEsIDE5OSwgOTIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjM0LCA5MSwgMjI4LCAxMTksIDI1MCwgCisgICAgMjM4LCAxLCAyMDYsIDE0MiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAxOTksIDIzMywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAKKyAgICAyMjcsIDU3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIyNSwgODIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjIyLCA0NywgCisgICAgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTgsIDg5LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxMiwgMTksIDIyOCwgMTE5LCAKKyAgICAyNTAsIDIzOCwgMSwgMjUwLCAxMDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjE2LCA3MywgMjI4LCAxMTksIDI1MCwgCisgICAgMjM4LCAxLCAyMTIsIDU0LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxNCwgMTAxLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIAorICAgIDIxMywgMTIzLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxMCwgMjEsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjA2LCAKKyAgICAyMTUsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMjExLCAxOTMsIDU0LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAxMDIsIDIyOCwgCisgICAgMTE5LCAyNTAsIDIzOCwgNDEsIDEwNSwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMTQ3LCAyMjgsIDExOSwgMjUwLCAyMzgsIAorICAgIDQxLCAyMDYsIDE2NiwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMjA0LCAxNTksIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIAorICAgIDExMiwgMjMzLCA4MiwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMTEyLCAyMDYsIDUwLCAyMjgsIDExOSwgMjUwLCAyMzgsIAorICAgIDQxLCAyMDYsIDE2NywgMjA2LCA1MCwgMjE2LCAxNzUsIDEsIDI1MSwgMTQwLCAyMTYsIDE3NSwgMSwgMjQ4LCAyMDcsIDIxNiwgCisgICAgMTc1LCAxLCAyMzUsIDE0NywgMjE2LCAxNzUsIDEsIDI0MiwgMjIsIDIxNiwgMTc1LCAxLCAyMzQsIDEzOSwgMjE2LCAxNzUsIAorICAgIDEsIDIwMSwgNzIsIDIxNiwgMTc1LCAxLCAxOTksIDkyLCAyMTYsIDE3NSwgMSwgMjM0LCA5MSwgMjE2LCAxNzUsIDEsIDIwNiwgCisgICAgMTQyLCAyMTYsIDE3NSwgMSwgMTk5LCAyMzMsIDIxNiwgMTc1LCAxLCAyMjcsIDU3LCAyMTYsIDE3NSwgMSwgMjI1LCA4MiwgCisgICAgMjE2LCAxNzUsIDEsIDIyMiwgNDcsIDIxNiwgMTc1LCAxLCA0NywgMjE4LCA4OSwgMjE2LCAxNzUsIDEsIDIxOCwgODksIAorICAgIDIxNiwgMTc1LCAxLCAyMTIsIDE5LCAyMTYsIDE3NSwgMSwgMjUwLCAxMDcsIDIxNiwgMTc1LCAxLCAyMTYsIDczLCAyMTYsIAorICAgIDE3NSwgMSwgMjEyLCA1NCwgMjE2LCAxNzUsIDEsIDIxNCwgMTAxLCAyMTYsIDE3NSwgMSwgMjEzLCAxMjMsIDIxNiwgMTc1LCAKKyAgICAxLCAyMTAsIDIxLCAyMTYsIDE3NSwgMSwgMjA2LCAyMTUsIDIxNiwgMTc1LCAyMjUsIDIzLCAyMzcsIDM5LCAyMTYsIDE3NSwgCisgICAgMjEzLCA0MSwgMjM3LCAzOSwgMjE2LCAxNzUsIDQxLCAxMDIsIDIxNiwgMTc1LCA0MSwgMTA1LCAyMTYsIDE3NSwgNDEsIAorICAgIDE0NywgMjE2LCAxNzUsIDQxLCAxNDksIDIxNiwgMTc1LCA0MSwgMTY0LCAyMTYsIDE3NSwgNDEsIDIwNiwgMTY2LCAyMTYsIAorICAgIDE3NSwgNDEsIDIwNCwgMTU5LCAyMjAsIDE1MywgMSwgNDcsIDI1MSwgMTQwLCAyMjAsIDE1MywgMSwgMjUxLCAxNDAsIDIyMCwgCisgICAgMTUzLCAxLCA0NywgMjQ4LCAyMDcsIDIyMCwgMTUzLCAxLCAyNDgsIDIwNywgMjIwLCAxNTMsIDEsIDIzNSwgMTQ3LCAyMjAsIAorICAgIDE1MywgMSwgMjQyLCAyMiwgMjIwLCAxNTMsIDEsIDQ3LCAyMzQsIDEzOSwgMjIwLCAxNTMsIDEsIDIzNCwgMTM5LCAyMjAsIAorICAgIDE1MywgMSwgMjAxLCA3MiwgMjIwLCAxNTMsIDEsIDE5OSwgOTIsIDIyMCwgMTUzLCAxLCAyMzQsIDkxLCAyMjAsIDE1MywgMSwgCisgICAgMjA2LCAxNDIsIDIyMCwgMTUzLCAxLCA0NywgMTk5LCAyMzMsIDIyMCwgMTUzLCAxLCAxOTksIDIzMywgMjIwLCAxNTMsIDEsIAorICAgIDQ3LCAyMjcsIDU3LCAyMjAsIDE1MywgMSwgMjI3LCA1NywgMjIwLCAxNTMsIDEsIDQ3LCAyMjUsIDgyLCAyMjAsIDE1MywgMSwgCisgICAgMjI1LCA4MiwgMjIwLCAxNTMsIDEsIDQ3LCAyMjIsIDQ3LCAyMjAsIDE1MywgMSwgMjIyLCA0NywgMjIwLCAxNTMsIDEsIDQ3LCAKKyAgICAyMTgsIDg5LCAyMjAsIDE1MywgMSwgMjE4LCA4OSwgMjIwLCAxNTMsIDEsIDIxMiwgMTksIDIyMCwgMTUzLCAxLCAyNTAsIAorICAgIDEwNywgMjIwLCAxNTMsIDEsIDIxNiwgNzMsIDIyMCwgMTUzLCAxLCAyMTIsIDU0LCAyMjAsIDE1MywgMSwgMjE0LCAxMDEsIAorICAgIDIyMCwgMTUzLCAxLCAyMTMsIDEyMywgMjIwLCAxNTMsIDEsIDQ3LCAyMTAsIDIxLCAyMjAsIDE1MywgMSwgMjEwLCAyMSwgCisgICAgMjIwLCAxNTMsIDEsIDIwNiwgMjE1LCAyMjAsIDE1MywgNDEsIDEwMiwgMjIwLCAxNTMsIDQxLCAxMDUsIDIyMCwgMTUzLCAKKyAgICA0MSwgMTQ3LCAyMjAsIDE1MywgNDEsIDE0OSwgMjIwLCAxNTMsIDI0MiwgMjIwLCA0MSwgMTQ5LCAyMjAsIDE1MywgNDEsIAorICAgIDE2NCwgMjIwLCAxNTMsIDQxLCAyMDYsIDE2NiwgMjIwLCAxNTMsIDQxLCAyMDQsIDE1OSwgMjIwLCAxNTMsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDIzNCwgMTUyLCAxLCAyNTEsIDE0MCwgMjM0LCAxNTIsIDEsIDI0OCwgMjA3LCAyMzQsIDE1MiwgMSwgMjM1LCAKKyAgICAxNDcsIDIzNCwgMTUyLCAxLCAyNDIsIDIxLCAyMzQsIDE1MiwgMSwgMjM0LCAxMzksIDIzNCwgMTUyLCAxLCAyMDEsIDcyLCAKKyAgICAyMzQsIDE1MiwgMSwgMTk5LCA5MSwgMjM0LCAxNTIsIDEsIDIzNCwgOTEsIDIzNCwgMTUyLCAxLCAyMDYsIDE0MiwgMjM0LCAKKyAgICAxNTIsIDEsIDE5OSwgMjMzLCAyMzQsIDE1MiwgMSwgMjI3LCA1NywgMjM0LCAxNTIsIDEsIDIyNSwgODIsIDIzNCwgMTUyLCAKKyAgICAxLCAyMjIsIDQ3LCAyMzQsIDE1MiwgMSwgMjE4LCA4OSwgMjM0LCAxNTIsIDEsIDIxMiwgMTksIDIzNCwgMTUyLCAxLCAyNTAsIAorICAgIDEwNiwgMjM0LCAxNTIsIDEsIDIxNiwgNzMsIDIzNCwgMTUyLCAxLCAyMTIsIDU0LCAyMzQsIDE1MiwgMSwgMjE0LCAxMDEsIAorICAgIDIzNCwgMTUyLCAxLCAyMTAsIDIxLCAyMzQsIDE1MiwgMSwgMjA2LCAyMTUsIDIzNCwgMTUyLCA0MSwgMTAyLCAyMzQsIDE1MiwgCisgICAgNDEsIDE2NCwgMjM0LCAxNTIsIDQxLCAyMDYsIDE2NiwgMjM0LCAxNTIsIDQxLCAyMDQsIDE1OSwgMjM0LCAxNTIsIDQxLCAKKyAgICAxMTIsIDIzMywgODIsIDIxNSwgMjE1LCAxLCAyNTEsIDEzNywgMjE1LCAyMTUsIDEsIDI0OCwgMjEwLCAyMTUsIDIxNSwgMSwgCisgICAgMjM2LCA2MiwgMjE1LCAyMTUsIDEsIDI0MSwgMTM4LCAyMTUsIDIxNSwgMSwgMjM0LCAxMzksIDIxNSwgMjE1LCAxLCAyMDEsIAorICAgIDc5LCAyMTUsIDIxNSwgMSwgMTk5LCAxMDcsIDIxNSwgMjE1LCAxLCAyMzQsIDkzLCAyMTUsIDIxNSwgMSwgMjA2LCAxNDYsIAorICAgIDIxNSwgMjE1LCAxLCAxOTksIDIzNCwgMjE1LCAyMTUsIDEsIDIyNywgODYsIDIxNSwgMjE1LCAxLCAyMjUsIDg4LCAyMTUsIAorICAgIDIxNSwgMSwgMjIyLCA0NywgMjE1LCAyMTUsIDEsIDIxOCwgODksIDIxNSwgMjE1LCAxLCAyMTAsIDE2MSwgMjE1LCAyMTUsIAorICAgIDEsIDI1MSwgMTcxLCAyMTUsIDIxNSwgMSwgMjE2LCA3MywgMjE1LCAyMTUsIDEsIDIxMiwgNTUsIDIxNSwgMjE1LCAxLCAKKyAgICAyMTQsIDEwNiwgMjE1LCAyMTUsIDEsIDIxMiwgMjMwLCAyMTUsIDIxNSwgMSwgMjEwLCAyMSwgMjE1LCAyMTUsIDEsIDIwNiwgCisgICAgMjIxLCAyMTUsIDIxNSwgNDEsIDEwMiwgMjE1LCAyMTUsIDQxLCAyMDYsIDE2NiwgMjE1LCAyMTUsIDQxLCAyMDQsIDE1OSwgCisgICAgMjE1LCAyMTUsIDQxLCAxMTIsIDIzMywgODIsIDIxNSwgMjE1LCA0MSwgMTA1LCAyMTUsIDIxNSwgNDEsIDE0NywgMjE1LCAKKyAgICAyMTUsIDIwMCwgMjM4LCAyMTAsIDE1NCwgMjIzLCAyNTUsIDEsIDYyLCAyMjMsIDI1NSwgMSwgMjUwLCAxMDMsIDIyMywgCisgICAgMjU1LCAxLCAyMzYsIDE1NiwgMjIzLCAyNTUsIDEsIDI0MiwgMTUzLCAyMjMsIDI1NSwgMSwgNzIsIDIyMywgMjU1LCAxLCAKKyAgICAyMDMsIDE2OCwgMjIzLCAyNTUsIDEsIDcwLCAyMjMsIDI1NSwgMSwgMjAwLCAxMjMsIDIyMywgMjU1LCAxLCAyMjcsIDExOCwgCisgICAgMjIzLCAyNTUsIDEsIDE1NiwgMjIzLCAyNTUsIDEsIDIyMywgMjQzLCAyMjMsIDI1NSwgMSwgMjIwLCAyMTQsIDIyMywgMjU1LCAKKyAgICAxLCA3NCwgMjIzLCAyNTUsIDEsIDE0NiwgMjIzLCAyNTUsIDEsIDIwOCwgMTgyLCAyMjMsIDI1NSwgMSwgMjA3LCA4MywgCisgICAgMjIzLCAyNTUsIDEsIDY2LCAyMjMsIDI1NSwgMSwgMjM4LCA1LCAyMjMsIDI1NSwgMSwgMjE0LCAxNjcsIDIyMywgMjU1LCAxLCAKKyAgICAyMTIsIDEyMiwgMjIzLCAyNTUsIDEsIDIwNSwgMCwgMjIzLCAyNTUsIDEsIDI1MSwgODUsIDIyMywgMjU1LCAxLCAyMzgsIAorICAgIDE3OSwgMjIzLCAyNTUsIDEsIDIyNCwgMiwgMjIzLCAyNTUsIDEsIDIxOSwgMjIsIDIyMywgMjU1LCAxLCAyNDcsIDIyMywgCisgICAgMjIzLCAyNTUsIDIwNSwgOTUsIDgxLCAxMzIsIDIzNCwgNjgsIDEsIDYyLCAxMzIsIDIzNCwgNjgsIDEsIDcyLCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDcwLCAxMzIsIDIzNCwgNjgsIDEsIDc0LCAxMzIsIDIzNCwgNjgsIDEsIDE4MywgMTMyLCAyMzQsIDY4LCAKKyAgICAxLCAyMDEsIDExNCwgMTMyLCAyMzQsIDY4LCAxLCAyNDksIDEzNiwgMTMyLCAyMzQsIDY4LCAxLCAyNDksIDEzNSwgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCAxNzIsIDEzMiwgMjM0LCA2OCwgMSwgMTc4LCAxMzIsIDIzNCwgNjgsIDEsIDE4OCwgMTMyLCAyMzQsIAorICAgIDY4LCAxLCAyMjAsIDE2MSwgMTMyLCAyMzQsIDY4LCAxLCAyMjAsIDM0LCAxMzIsIDIzNCwgNjgsIDEsIDIyMCwgMzMsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgMjEzLCAyNTIsIDEzMiwgMjM0LCA2OCwgMSwgMjEzLCAyNTEsIDEzMiwgMjM0LCA2OCwgMSwgMTk0LCAKKyAgICAxMzIsIDIzNCwgNjgsIDEsIDIyNiwgMjA3LCAxMzIsIDIzNCwgNjgsIDEsIDIzNCwgODQsIDEzMiwgMjM0LCA2OCwgMSwgCisgICAgMjEyLCA2NCwgMTMyLCAyMzQsIDY4LCAxLCAyMTIsIDYzLCAxMzIsIDIzNCwgNjgsIDEsIDIxMSwgMjAyLCAxMzIsIDIzNCwgCisgICAgNjgsIDEsIDE2MSwgMTMyLCAyMzQsIDY4LCAxLCAyMTQsIDE1OSwgMTMyLCAyMzQsIDY4LCAxLCAyMDcsIDM2LCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDIwNywgMzUsIDEzMiwgMjM0LCA2OCwgMSwgMjA2LCAyMDEsIDEzMiwgMjM0LCA2OCwgMSwgMjA2LCAKKyAgICAyMDAsIDEzMiwgMjM0LCA2OCwgMSwgMTM4LCAxMzIsIDIzNCwgNjgsIDEsIDI0MiwgNTgsIDEzMiwgMjM0LCA2OCwgMTYsIAorICAgIDIwMiwgMjI4LCAxMzIsIDIzNCwgNjgsIDE2LCAyMDIsIDIyNywgMTMyLCAyNDIsIDE5MSwgMSwgNjIsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDEsIDcyLCAxMzIsIDI0MiwgMTkxLCAxLCA3MCwgMTMyLCAyNDIsIDE5MSwgMSwgNzQsIDEzMiwgMjQyLCAxOTEsIDEsIAorICAgIDE4MywgMTMyLCAyNDIsIDE5MSwgMSwgMjAxLCAxMTQsIDEzMiwgMjQyLCAxOTEsIDEsIDI0OSwgMTM2LCAxMzIsIDI0MiwgCisgICAgMTkxLCAxLCAxNzIsIDEzMiwgMjQyLCAxOTEsIDEsIDE3OCwgMTMyLCAyNDIsIDE5MSwgMSwgMTg4LCAxMzIsIDI0MiwgMTkxLCAKKyAgICAxLCAyMjAsIDM0LCAxMzIsIDI0MiwgMTkxLCAxLCAyMTMsIDI1MiwgMTMyLCAyNDIsIDE5MSwgMSwgMTk0LCAxMzIsIDI0MiwgCisgICAgMTkxLCAxLCAyMjYsIDIwNywgMTMyLCAyNDIsIDE5MSwgMSwgMjM0LCA4NCwgMTMyLCAyNDIsIDE5MSwgMSwgMjEyLCA2NCwgCisgICAgMTMyLCAyNDIsIDE5MSwgMSwgMjUwLCAyMzQsIDIxMiwgNjQsIDEzMiwgMjQyLCAxOTEsIDEsIDIxMSwgMjAyLCAxMzIsIAorICAgIDI0MiwgMTkxLCAxLCAxNjEsIDEzMiwgMjQyLCAxOTEsIDEsIDIxNCwgMTU5LCAxMzIsIDI0MiwgMTkxLCAxLCAyMDcsIDM2LCAKKyAgICAxMzIsIDI0MiwgMTkxLCAxLCAyMDYsIDIwMSwgMTMyLCAyNDIsIDE5MSwgMSwgMTM4LCAxMzIsIDI0MiwgMTkxLCAxLCAyNDIsIAorICAgIDU4LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM4LCAyMDAsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMzQsIDIxMywgMTMyLCAyNDIsIDE5MSwgMjI0LCA5NywgMjEzLCA3LCAxMzIsIDI0MiwgMTkxLCAyMjQsIDk3LCAKKyAgICAyMjgsIDEyNCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEwMiwgMTMyLCAyNDIsIDE5MSwgNDEsIDEwNSwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDE0NywgMTMyLCAyNDIsIDE5MSwgNDEsIDE0OSwgMTMyLCAyNDIsIDE5MSwgNDEsIDE2NCwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDE4NywgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgMTM1LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTkyLCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjE5LCAxMTMsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDE2NiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNCwgCisgICAgMTU5LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCA2NywgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNiwgMjM1LCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjM3LCAxMDQsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDkyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAKKyAgICAxMjksIDEzMiwgMjQyLCAxOTEsIDQxLCAxMTIsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjAsIDIzMywgODIsIAorICAgIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjYsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzYsIDIyOSwgMjMzLCA4MiwgCisgICAgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgNjEsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDEwNiwgMjMzLCAKKyAgICA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMzIsIAorICAgIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDExMiwgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyMCwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyNiwgMjA2LCAKKyAgICA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNiwgMjI5LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCA2MSwgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgMTA2LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAKKyAgICAxMzYsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIzMiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIAorICAgIDIxOSwgMTE0LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCAxNjcsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAyMDQsIDE2MCwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgNjgsIDIwNiwgNTAsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMzYsIDIzNiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgMTA1LCAyMDYsIDUwLCAxMzIsIAorICAgIDI0MiwgMTkxLCA0MSwgMjA5LCA5MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgMTMwLCAyMDYsIDUwLCAKKyAgICAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMjMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTksIDEwOSwgMjA2LCAKKyAgICA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDExMiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyMCwgCisgICAgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyNiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCA2MSwgMjMzLCA4MywgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgMTA2LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMjEwLCAxMzYsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIzMiwgMjMzLCA4MywgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMDQsIDE2NywgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDEyMCwgMjA0LCAxNjYsIDEzMiwgCisgICAgMjQyLCAxOTEsIDIzNiwgMjE5LCAxMjYsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM2LCAyMjksIAorICAgIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM3LCA2MSwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgCisgICAgMjE5LCAyMDksIDEwNiwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMTAsIDEzNiwgMjA0LCAxNjYsIAorICAgIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMzgsIDIzMiwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAKKyAgICAyMTksIDExNCwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMDYsIDE2NywgMjA0LCAxNjYsIDIyNiwgCisgICAgMTk0LCAxLCA2MiwgMjI2LCAxOTQsIDIyLCAyLCA3MCwgMjI2LCAxOTQsIDIyLCAyLCA2NiwgMjI2LCAxOTQsIDIyLCAyLCAKKyAgICAxMDksIDE0NiwgMjI2LCAxOTQsIDIyLCAyLCA3MiwgMjI2LCAxOTQsIDIyLCAyLCA3NCwgMjI2LCAxOTQsIDIyLCAyMjUsIDIsIAorICAgIDgxLCAyMjYsIDE5NCwgMiwgNTMsIDIxMywgMjcsIDU3LCAyMjYsIDE5NCwgMiwgMjUxLCAzMywgMjI2LCAxOTQsIDIsIDIwMiwgCisgICAgMjAzLCAyMjYsIDE5NCwgMSwgMTYxLCAyMjYsIDE5NCwgMSwgMjI2LCAyMDcsIDIyNiwgMTk0LCAxLCAyMzYsIDg5LCAyMjYsIAorICAgIDE5NCwgMSwgMjM1LCAxOTksIDIyNiwgMTk0LCAxLCAyNDcsIDE5MCwgMjI2LCAxOTQsIDEsIDI0NywgMzcsIDIyNiwgMTk0LCAKKyAgICAxLCAyMjcsIDI0OCwgMjI2LCAxOTQsIDEsIDIxOCwgNjAsIDIyNiwgMTk0LCAxLCAyMDQsIDI1MywgMjI2LCAxOTQsIDEsIAorICAgIDIwNCwgMjQxLCAyMjYsIDE5NCwgMSwgMjQxLCAyMjAsIDIyNiwgMTk0LCAxLCAyNDEsIDIwNCwgMjI2LCAxOTQsIDEsIDIxOSwgCisgICAgMjEsIDIyNiwgMTk0LCAxLCAyMDcsIDM2LCAyMjYsIDE5NCwgMSwgMjA2LCAxMjIsIDIyNiwgMTk0LCAxLCAyNDIsIDU4LCAKKyAgICAyMjYsIDE5NCwgMSwgMjQxLCAxMDAsIDIyNiwgMTk0LCAxLCAxODgsIDIyNiwgMTk0LCAxLCAxNzIsIDIyNiwgMTk0LCAxLCAKKyAgICAyMTUsIDI0NSwgMjI2LCAxOTQsIDEsIDI0OSwgMTM2LCAyMjYsIDE5NCwgMSwgMjQ4LCAyMDAsIDIyNiwgMTk0LCAxLCAxNzgsIAorICAgIDIyNiwgMTk0LCAxLCAxODMsIDIyNiwgMTk0LCAxLCAyMTMsIDI1MiwgMjI2LCAxOTQsIDEsIDE5NCwgMjI2LCAxOTQsIDEsIAorICAgIDIwMywgOTAsIDIyNiwgMTk0LCAxLCAyMTAsIDExNCwgMjI2LCAxOTQsIDEsIDIwOCwgMTc5LCAyMjYsIDE5NCwgMSwgMjEyLCAKKyAgICA2NCwgMjI2LCAxOTQsIDEsIDE5OSwgMTE0LCAyMjYsIDE5NCwgMSwgMTQ0LCAyMjYsIDE5NCwgMSwgMjI2LCAxMDksIDIyNiwgCisgICAgMTk0LCAxLCAyMDQsIDIyMSwgMjI2LCAxOTQsIDIsIDI0OSwgNzcsIDU2LCAyMjYsIDE5NCwgMiwgMjQ3LCAxMDcsIDIyNiwgCisgICAgMTk0LCAyLCA3MywgNTcsIDIyNiwgMTk0LCAyMDIsIDIwOCwgMjI2LCAxOTQsIDE3LCAxMDIsIDIyNiwgMTk0LCAxNywgMTA1LCAKKyAgICAyMjYsIDE5NCwgMTcsIDE0NywgMjI2LCAxOTQsIDE3LCAxNDksIDIyNiwgMTk0LCA0MSwgMjA2LCAxNjYsIDIyNiwgMTk0LCAKKyAgICA0MSwgMjA0LCAxNTksIDIyNiwgMTk0LCA0MSwgMTEyLCAyMzMsIDgyLCAyMjYsIDE5NCwgNDEsIDExMiwgMjA2LCA1MCwgCisgICAgMjI2LCAxOTQsIDIxNCwgMjEyLCAyNDAsIDE4MiwgMjI2LCAxOTQsIDIxNCwgMjEyLCA0LCAyNDYsIDE1NSwgMjI2LCAxOTQsIAorICAgIDIxNCwgMjEyLCAyNDYsIDE1NSwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyNDIsIDI0NCwgMTQ4LCAyMjYsIDE5NCwgMjE0LCAKKyAgICAyMTIsIDIyMiwgMTc0LCAyMjYsIDE5NCwgMjE0LCAyMTIsIDIyNCwgNjQsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjQyLCAxMCwgCisgICAgMjI2LCAxOTQsIDIxNCwgMjEyLCA1MywgMjQyLCAxMCwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyMjQsIDE3MCwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM0LCAxMzksIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyNSwgODIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNCwgOTEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyMiwgNDcsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxNCwgMTAxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDEsIDcyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTAsIDIxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMTMsIDEyMywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjQ4LCAyMDcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgMjE1LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTEsIDI1MSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjI3LCA1NywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjE4LCA4OSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjI2LCAxODksIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxMiwgNTQsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIxMiwgMTksIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNywgMTQ3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNTEsIDE0MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjUwLCAxMDYsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI0MSwgOTcsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNSwgMTQ3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNDIsIDIyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzUsIDE4NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCAxNDIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDE5OSwgOTEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI0MSwgOTQsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDE5OSwgMjMzLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDEwOCwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCA4NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgNDEsIDEwMiwgNDAsIDIwOCwgMjU0LCAKKyAgICAyNTAsIDI0OSwgNDEsIDIzNywgMTA0LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxNDUsIDIyOCwgOTksIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCAxLCAyMzQsIDExNSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIyNSwgOTEsIDQwLCAxNTcsIDI1MCwgMjQ5LCAKKyAgICAxLCAyMzQsIDIyNCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIyMiwgNjEsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMTQsIAorICAgIDE1MiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIwMSwgNzIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzgsIDEwMiwgNDAsIAorICAgIDE1NywgMjUwLCAyNDksIDEsIDIxMywgMTU0LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjQ4LCAyNDAsIDQwLCAxNTcsIDI1MCwgCisgICAgMjQ5LCAxLCAyMDYsIDE4MywgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzOCwgMTAzLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgCisgICAgMjI3LCA4NiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIxOCwgMjI3LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjI2LCAyMDMsIAorICAgIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMTIsIDU2LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM4LCAxMDEsIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCAxLCAyMzcsIDEzNCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI1MSwgMTQyLCA0MCwgMTU3LCAyNTAsIDI0OSwgCisgICAgMSwgMjUxLCAxNzEsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNDIsIDUyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM2LCA2LCAKKyAgICA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjQyLCAyOSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzNSwgMTk0LCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgMSwgMjA3LCA5LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMTk5LCAxMDUsIDQwLCAxNTcsIDI1MCwgMjQ5LCAKKyAgICAxLCAyMDYsIDExNCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIwMCwgNDYsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMDYsIAorICAgIDEwMiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDE5OSwgMTA4LCA0MCwgMTU3LCAyNTAsIDI0OSwgNDEsIDEwMiwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDQxLCAyMDYsIDE2NiwgNDAsIDE1NywgMjUwLCAyNDksIDQxLCAyMDQsIDE1OSwgMjIyLCAxNzMsIDEsIAorICAgIDI1MSwgMTQwLCAyMjIsIDE3MywgMSwgMjQ4LCAyMDcsIDIyMiwgMTczLCAxLCAyNDgsIDE5NCwgMjIyLCAxNzMsIDEsIDIzNSwgCisgICAgMTQ3LCAyMjIsIDE3MywgMSwgMjM1LCAxNzIsIDIyMiwgMTczLCAxLCAyNDIsIDIyLCAyMjIsIDE3MywgMSwgMjM0LCAxMzksIAorICAgIDIyMiwgMTczLCAxLCAyMDEsIDcyLCAyMjIsIDE3MywgMiwgMjA0LCAzNiwgMjIyLCAxNzMsIDEsIDE5OSwgOTIsIDIyMiwgCisgICAgMTczLCAxLCAxOTksIDcwLCAyMjIsIDE3MywgMSwgMjI3LCAyMjksIDIyMiwgMTczLCAxLCAyMjcsIDIxMSwgMjIyLCAxNzMsIAorICAgIDEsIDIzNCwgOTEsIDIyMiwgMTczLCAxLCAyMDYsIDE0MiwgMjIyLCAxNzMsIDEsIDE5OSwgMjMzLCAyMjIsIDE3MywgMSwgCisgICAgMjI3LCA1NywgMjIyLCAxNzMsIDEsIDIwMCwgMTc4LCAyMjIsIDE3MywgMSwgMjI2LCAxOTYsIDIyMiwgMTczLCAxLCAyMjUsIAorICAgIDgyLCAyMjIsIDE3MywgMSwgMjQxLCA5MywgMjIyLCAxNzMsIDEsIDIwNiwgMTEzLCAyMjIsIDE3MywgMSwgMjIyLCA0NywgCisgICAgMjIyLCAxNzMsIDEsIDIxOCwgODksIDIyMiwgMTczLCAxLCAyMTIsIDE5LCAyMjIsIDE3MywgMSwgMjUwLCAxMDcsIDIyMiwgCisgICAgMTczLCAxLCAyNTIsIDkxLCAyMjIsIDE3MywgMSwgMjE2LCA3MywgMjIyLCAxNzMsIDEsIDIzNywgMTQ3LCAyMjIsIDE3MywgCisgICAgMSwgMjEyLCA1NCwgMjIyLCAxNzMsIDEsIDIxNCwgMTAxLCAyMjIsIDE3MywgMSwgMjAwLCAxNTYsIDIyMiwgMTczLCAxLCAKKyAgICAyMTQsIDEyOCwgMjIyLCAxNzMsIDEsIDIxMywgMTIzLCAyMjIsIDE3MywgMSwgMjEwLCAyMSwgMjIyLCAxNzMsIDEsIDIwOCwgCisgICAgMTQ4LCAyMjIsIDE3MywgMSwgMjA2LCAyMTUsIDIyMiwgMTczLCAyNTIsIDMsIDEzNCwgNTYsIDIyMiwgMTczLCAyNTIsIDMsIAorICAgIDEzNCwgNTcsIDIyMiwgMTczLCA0MSwgMTAyLCAyMjIsIDE3MywgNDEsIDE2NCwgMjIyLCAxNzMsIDQxLCAyMDYsIDE2NiwgCisgICAgMjIyLCAxNzMsIDQxLCAyMDQsIDE1OSwgMjIyLCAxNzMsIDQxLCAxMTIsIDIzMywgODIsIDIyMiwgMTczLCAyMTQsIDIxMiwgCisgICAgMjA4LCAxMDksIDIyMiwgMTczLCAyMTQsIDIxMiwgMjM3LCAzOSwgMjIyLCAxNzMsIDIxNCwgMjEyLCA1MywgNzMsIDIwMSwgCisgICAgNSwgMjQwLCAxODIsIDIyMiwgMTczLCAyMTQsIDIxMiwgNzMsIDIwMSwgNSwgMjQwLCAxODIsIDIyMiwgMTczLCAyMTQsIAorICAgIDIxMiwgMjQwLCAxODIsIDIyMiwgMTczLCAyMTQsIDIxMiwgMTIwLCAyNDAsIDE4MCwgMjIyLCAxNzMsIDIxNCwgMjEyLCAKKyAgICAyMjQsIDE3NywgMjM3LCA5MywgMjUwLCAxMTksIDEsIDYyLCAyNTAsIDExOSwgMSwgMjUyLCAxMzgsIDI1MCwgMTE5LCAxLCAKKyAgICAyNTEsIDMxLCAyNTAsIDExOSwgMSwgMjUyLCA5NywgMjUwLCAxMTksIDEsIDI1MSwgODUsIDI1MCwgMTE5LCAxLCAyNTIsIAorICAgIDk4LCAyNTAsIDExOSwgMSwgMjUxLCAyMjEsIDI1MCwgMTE5LCAxLCAyNTEsIDIxNywgMjUwLCAxMTksIDEsIDcyLCAyNTAsIAorICAgIDExOSwgMSwgMjM4LCAyNTUsIDI1MCwgMTE5LCAxLCA3NCwgMjUwLCAxMTksIDEsIDIxNywgNjMsIDI1MCwgMTE5LCAxLCA3MCwgCisgICAgMjUwLCAxMTksIDEsIDIyOCwgMTUxLCAyNTAsIDExOSwgMSwgNjYsIDI1MCwgMTE5LCAxLCAyMDMsIDE4MiwgMjUwLCAxMTksIAorICAgIDEsIDIyNywgOCwgMjUwLCAxMTksIDEsIDIwMCwgMTc1LCAyNTAsIDExOSwgMSwgMjAwLCAxMzcsIDI1MCwgMTE5LCAxLCAKKyAgICAyMDAsIDE0NywgMjUwLCAxMTksIDEsIDIzNiwgMTUsIDI1MCwgMTE5LCAxLCAyMzUsIDIzMCwgMjUwLCAxMTksIDEsIDIzNSwgCisgICAgMTg1LCAyNTAsIDExOSwgMSwgMjQ3LCA3NiwgMjUwLCAxMTksIDEsIDIyNywgMjI3LCAyNTAsIDExOSwgMSwgMjA2LCAyMDEsIAorICAgIDI1MCwgMTE5LCAxLCAyMDYsIDEwNiwgMjUwLCAxMTksIDEsIDI0MSwgMTc1LCAyNTAsIDExOSwgMSwgMjQxLCA5MSwgMjUwLCAKKyAgICAxMTksIDEsIDIwNCwgMjQ4LCAyNTAsIDExOSwgMSwgMjE2LCA3MywgMjUwLCAxMTksIDEsIDIzNywgMTQ3LCAyNTAsIDExOSwgCisgICAgMSwgMjQ5LCA4LCAyNTAsIDExOSwgMSwgMjQ4LCAxOTYsIDI1MCwgMTE5LCAxLCAyMTksIDI0MCwgMjUwLCAxMTksIDEsIAorICAgIDIxOSwgMTU2LCAyNTAsIDExOSwgMSwgMjE5LCAxNTcsIDI1MCwgMTE5LCAxLCAyMjAsIDM0LCAyNTAsIDExOSwgMSwgMjE4LCAKKyAgICA1MCwgMjUwLCAxMTksIDEsIDIxOSwgMTYsIDI1MCwgMTE5LCAxLCAyMjIsIDc2LCAyNTAsIDExOSwgMSwgMjM0LCAxLCAyNTAsIAorICAgIDExOSwgMSwgMTk5LCAxNjQsIDI1MCwgMTE5LCAxLCAyMDAsIDUxLCAyNTAsIDExOSwgMSwgMjAzLCA1OSwgMjUwLCAxMTksIAorICAgIDEsIDIxMywgMTkwLCAyNTAsIDExOSwgMSwgMjI1LCA0MCwgMjUwLCAxMTksIDEsIDIxMSwgMjAyLCAyNTAsIDExOSwgMSwgCisgICAgMTk5LCA4OSwgMjUwLCAxMTksIDEsIDIxMCwgNjUsIDI1MCwgMTE5LCAxLCAxOTksIDY4LCAyNTAsIDExOSwgMSwgMjA5LCAKKyAgICAxODksIDI1MCwgMTE5LCAxLCAyMDgsIDE0OSwgMjUwLCAxMTksIDEsIDIzNCwgMTM5LCAyNTAsIDExOSwgMjUyLCAzLCA4MSwgCisgICAgMjA1LCAyMjYsIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIDIxNCwgMjExLCA0LCAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAKKyAgICAyMTQsIDIxMSwgMjI1LCA3MSwgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgMjE0LCAyMTEsIDIyNSwgNzEsIDExMiwgNzMsIAorICAgIDExOSwgMTIwLCAxOTAsIDIxNCwgMjExLCAyMjUsIDcxLCAxMjAsIDIxMywgMjQsIDExOSwgMTEyLCAyMTMsIDI3LCAyMTQsIAorICAgIDIxMSwgMjI1LCA3MSwgMTEyLCAyMTMsIDI3LCAxMTksIDEyMCwgMjEzLCAyNCwgMjE0LCAyMTEsIDIyOCwgNzcsIDIxNiwgCisgICAgMTA5LCAxLCAyNTEsIDE0MCwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDI0OCwgMjA3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgCisgICAgMjM1LCAxNDcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyNDIsIDIyLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjM0LCAxMzksIAorICAgIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMDEsIDcyLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMTk5LCA5MiwgMjI4LCA3NywgCisgICAgMjE2LCAxMDksIDEsIDIzNCwgOTEsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMDYsIDE0MiwgMjI4LCA3NywgMjE2LCAxMDksIAorICAgIDEsIDE5OSwgMjMzLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjI3LCA1NywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIyNSwgCisgICAgODIsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMjIsIDQ3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjE4LCA4OSwgMjI4LCAKKyAgICA3NywgMjE2LCAxMDksIDEsIDIxMiwgMTksIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyNTAsIDEwNywgMjI4LCA3NywgMjE2LCAKKyAgICAxMDksIDEsIDIxNiwgNzMsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTIsIDU0LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgCisgICAgMjE0LCAxMDEsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTMsIDEyMywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxMCwgMjEsIAorICAgIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMDYsIDIxNSwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxMDIsIDIyOCwgNzcsIDIxNiwgCisgICAgMTA5LCA0MSwgMTA1LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDE0NywgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxNDksIAorICAgIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMjA2LCAxNjYsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMjA0LCAxNTksIDIyOCwgCisgICAgNzcsIDIxNiwgMTA5LCA0MSwgMTEyLCAyMzMsIDgyLCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDExMiwgMjA2LCA1MCwgMjI4LCAKKyAgICA3NywgMjE2LCAxOTEsIDEsIDI1MSwgMTQwLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjQ4LCAyMDcsIDIyOCwgNzcsIDIxNiwgCisgICAgMTkxLCAxLCAyMzUsIDE0NywgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDI0MiwgMjIsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAKKyAgICAyMzQsIDEzOSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIwMSwgNzEsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAxOTksIDkyLCAKKyAgICAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjM0LCA5MSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIwNiwgMTQyLCAyMjgsIDc3LCAKKyAgICAyMTYsIDE5MSwgMSwgMTk5LCAyMzMsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMjcsIDU3LCAyMjgsIDc3LCAyMTYsIDE5MSwgCisgICAgMSwgMjI1LCA4MiwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIyMiwgNDYsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTgsIDg5LCAKKyAgICAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjEyLCAxOSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxNiwgNzMsIDIyOCwgNzcsIAorICAgIDIxNiwgMTkxLCAxLCAyMTIsIDU0LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjEwLCAyMSwgMjI4LCA3NywgMjE2LCAxOTEsIAorICAgIDEsIDIwNiwgMjE1LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDEwMiwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMDUsIDIyOCwgCisgICAgNzcsIDIxNiwgMTkxLCA0MSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDE0OSwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAKKyAgICAyMDYsIDE2NiwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAyMDQsIDE1OSwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTEyLCAyMDYsIDUwLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDI1MSwgCisgICAgMTQwLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDI0OCwgMjA3LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIzNSwgMTQ3LCAKKyAgICAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDI0MiwgMjIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjM0LCAxMzksIDIxNCwgCisgICAgMjM2LCAyMTYsIDE5MSwgMSwgMjAxLCA3MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAxOTksIDkyLCAyMTQsIDIzNiwgMjE2LCAKKyAgICAxOTEsIDEsIDIzNCwgOTEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMTk5LCAyMzMsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgCisgICAgMjI3LCA1NywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMjUsIDgyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIyMiwgNDYsIAorICAgIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjE4LCA4OSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMTIsIDE5LCAyMTQsIDIzNiwgCisgICAgMjE2LCAxOTEsIDEsIDIxNiwgNzMsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjEyLCA1NCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAKKyAgICAxLCAyMTAsIDIxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIwNiwgMjE1LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDIxMSwgCisgICAgMTkzLCA4MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAyMDQsIDE4NSwgMjExLCAxOTMsIDgxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIAorICAgIDIzNiwgMjI5LCAxOTAsIDMsIDI0MiwgMjM0LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDIzNiwgMjI5LCAxOTAsIDMsIDI0MCwgCisgICAgMTgyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxMDIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDEwNSwgMjE0LCAyMzYsIAorICAgIDIxNiwgMTkxLCA0MSwgMTQ3LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxNDksIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIAorICAgIDIwNiwgMTY2LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAyMDQsIDE1OSwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDYyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDYyLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjIxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDcwLCA0MCwgMjA0LCAKKyAgICAxODksIDEsIDIwMCwgMzksIDcwLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDcyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgCisgICAgMjMsIDc0LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIxNywgMTIxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDIxNywgMTIxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MiwgODksIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUyLCA4OSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIyMCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIyMCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDE5MywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDE5MywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIxNSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIxNSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIzNSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIzNSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIxOSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDEyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUwLCAxMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAxMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMDIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMDIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMTMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjE3LCAxMTksIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjE3LCAxMTksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAxNTEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAxNTEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCAxOTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxOTAsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCA4NSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDIxMCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIxMCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE1NywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDE1NywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE3NiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDE3NiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE0MywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDE0MywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDc2LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgMTY1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMjA5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgMTMzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIxNywgNTQsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjMyLCAyMzMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM5LCA3LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOSwgNywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIAorICAgIDEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIyOCwgMzcsIAorICAgIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjI4LCAzNywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMTcsIDM1LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIwMCwgMzksIDIxNywgMzUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAyNTMsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAyNTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMDgsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAxODgsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMDYsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAxODEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAxODEsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCA5NCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDk0LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMTU1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMTU1LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjAzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjAzLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDIxNywgMTEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjQ5LCA2MSwgNDAsIAorICAgIDE1MiwgNiwgMSwgNjIsIDQwLCAxNTIsIDYsIDEsIDI1MiwgMTM4LCA0MCwgMTUyLCA2LCAxLCAyMzksIDksIDQwLCAxNTIsIAorICAgIDYsIDEsIDI1MSwgOTYsIDQwLCAxNTIsIDYsIDEsIDIzOSwgNywgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNzYsIDQwLCAxNTIsIAorICAgIDYsIDEsIDIzOSwgNCwgNDAsIDE1MiwgNiwgMSwgMjM5LCAzLCA0MCwgMTUyLCA2LCAxLCAyNTEsIDc5LCA0MCwgMTUyLCA2LCAKKyAgICAxLCA3MiwgNDAsIDE1MiwgNiwgMSwgMjQ2LCAxMTEsIDcyLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDI1NSwgNDAsIDE1MiwgNiwgCisgICAgMSwgMjM4LCAyNDgsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjQ3LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDI0NCwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjM4LCAyNDEsIDQwLCAxNTIsIDYsIDEsIDcwLCA0MCwgMTUyLCA2LCAxLCAyMjgsIDE1MSwgNDAsIDE1MiwgNiwgCisgICAgMSwgMjM4LCAyMTksIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjE2LCA0MCwgMTUyLCA2LCAxLCAyNTEsIDE1OSwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjAzLCAyMzYsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjA5LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE5MiwgNDAsIAorICAgIDE1MiwgNiwgMSwgMjM4LCAxOTAsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTc5LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE0MywgCisgICAgNDAsIDE1MiwgNiwgMSwgNzQsIDQwLCAxNTIsIDYsIDEsIDIxNywgNjMsIDQwLCAxNTIsIDYsIDEsIDIxOSwgMTIxLCAyMTcsIAorICAgIDEyMSwgNDAsIDE1MiwgNiwgMSwgMjEyLCAxNzEsIDIxNywgMTIxLCA0MCwgMTUyLCA2LCAxLCAyMTcsIDEyMCwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjM4LCAxMzMsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTg0LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDExNSwgNDAsIAorICAgIDE1MiwgNiwgMSwgMjA5LCAyNTAsIDIzOCwgMTE1LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDEwNCwgNDAsIDE1MiwgNiwgMSwgCisgICAgMjM4LCA4MywgNDAsIDE1MiwgNiwgMSwgMjM4LCA4MSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNTcsIDQwLCAxNTIsIDYsIDEsIAorICAgIDIzOCwgNzAsIDQwLCAxNTIsIDYsIDEsIDIzOSwgNSwgNDAsIDE1MiwgNiwgMSwgNjYsIDQwLCAxNTIsIDYsIDEsIDIwMywgCisgICAgMTgyLCA0MCwgMTUyLCA2LCAxLCAyMTksIDEyMSwgMjA0LCAzMSwgNDAsIDE1MiwgNiwgMSwgMjEyLCAxNzEsIDIwNCwgMzEsIAorICAgIDQwLCAxNTIsIDYsIDEsIDIzOCwgNTcsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTIsIDQwLCAxNTIsIDYsIDEsIDIzOCwgNywgCisgICAgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNTYsIDU0LCA0MCwgMTUyLCA2LCAxLCAyMDMsIDE5NywgNDAsIDE1MiwgNCwgMSwgNjIsIAorICAgIDQwLCAxNTIsIDQsIDEsIDI1MiwgMTM4LCA0MCwgMTUyLCA0LCAxLCAyMzksIDksIDQwLCAxNTIsIDQsIDEsIDI1MSwgOTYsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOSwgNywgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNzYsIDQwLCAxNTIsIDQsIDEsIDIzOSwgNCwgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM5LCAzLCA0MCwgMTUyLCA0LCAxLCAyNTEsIDc5LCA0MCwgMTUyLCA0LCAxLCA3MiwgNDAsIAorICAgIDE1MiwgNCwgMSwgMjQ2LCAxMTEsIDcyLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDI1NSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAKKyAgICAyNDgsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjQ3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDI0NCwgNDAsIDE1MiwgNCwgMSwgCisgICAgMjM4LCAyNDEsIDQwLCAxNTIsIDQsIDEsIDcwLCA0MCwgMTUyLCA0LCAxLCAyMjgsIDE1MSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAKKyAgICAyMTksIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjE2LCA0MCwgMTUyLCA0LCAxLCAyNTEsIDE1OSwgNDAsIDE1MiwgNCwgMSwgCisgICAgMjAzLCAyMzYsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjA5LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE5MiwgNDAsIDE1MiwgNCwgCisgICAgMSwgMjM4LCAxOTAsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTc5LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE0MywgNDAsIDE1MiwgCisgICAgNCwgMSwgNzQsIDQwLCAxNTIsIDQsIDEsIDIxNywgNjMsIDQwLCAxNTIsIDQsIDEsIDIxOSwgMTIxLCAyMTcsIDEyMSwgNDAsIAorICAgIDE1MiwgNCwgMSwgMjEyLCAxNzEsIDIxNywgMTIxLCA0MCwgMTUyLCA0LCAxLCAyMTcsIDEyMCwgNDAsIDE1MiwgNCwgMSwgCisgICAgMjM4LCAxMzMsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTg0LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDExNSwgNDAsIDE1MiwgNCwgCisgICAgMSwgMjA5LCAyNTAsIDIzOCwgMTE1LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDEwNCwgNDAsIDE1MiwgNCwgMSwgMjM4LCA4MywgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM4LCA4MSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNTcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgNzAsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOSwgNSwgNDAsIDE1MiwgNCwgMSwgNjYsIDQwLCAxNTIsIDQsIDEsIDIwMywgMTgyLCA0MCwgCisgICAgMTUyLCA0LCAxLCAyMTksIDEyMSwgMjA0LCAzMSwgNDAsIDE1MiwgNCwgMSwgMjEyLCAxNzEsIDIwNCwgMzEsIDQwLCAxNTIsIAorICAgIDQsIDEsIDIzOCwgNTcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTIsIDQwLCAxNTIsIDQsIDEsIDIzOCwgNywgNDAsIDE1MiwgNCwgCisgICAgMSwgMjM4LCAxNTYsIDU0LCA0MCwgMTUyLCA0LCAxLCAyMDMsIDE5NywgNDAsIDE1MiwgNDEsIDEwMiwgNDAsIDE1MiwgNDEsIAorICAgIDE2NCwgNDAsIDE1MiwgNDEsIDIwNiwgMTY2LCA0MCwgMTUyLCA0MSwgMjM3LCAxMDQsIDQwLCAxNTIsIDQxLCAxMTIsIDIzMywgCisgICAgODIsIDQwLCAxNTIsIDQxLCAxMTIsIDIwNiwgNTAsIDIxMiwgMTU5LCAxNywgMTAyLCAyMTIsIDE1OSwgMTcsIDEwNSwgMjEyLCAKKyAgICAxNTksIDE3LCAxNDcsIDIxMiwgMTU5LCAxNywgMTQ5LCAyMTIsIDE1OSwgMTcsIDE2NCwgMjEyLCAxNTksIDE3LCAxODcsIAorICAgIDIxMiwgMTU5LCAxNywgMjEwLCAxMzUsIDIxMiwgMTU5LCAxNywgMTkyLCAyMTIsIDE1OSwgMTcsIDIxOSwgMTEzLCAyMTIsIAorICAgIDE1OSwgNDEsIDIwNiwgMTY2LCAyMTIsIDE1OSwgNDEsIDIwNCwgMTU5LCAyMTIsIDE1OSwgNDEsIDIwNiwgNjcsIDIxMiwgCisgICAgMTU5LCA0MSwgMjM2LCAyMzUsIDIxMiwgMTU5LCA0MSwgMjM3LCAxMDQsIDIxMiwgMTU5LCA0MSwgMjA5LCA5MiwgMjEyLCAKKyAgICAxNTksIDQxLCAyMTAsIDEyOSwgMjEyLCAxNTksIDQxLCAyMzgsIDIyMiwgMjEyLCAxNTksIDQxLCAyMTksIDEwOCwgMjEyLCAKKyAgICAxNTksIDQxLCAxMTIsIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMTIwLCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDEyNiwgCisgICAgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMzYsIDIyOSwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCAKKyAgICAyMTIsIDE1OSwgNDEsIDIwOSwgMTA2LCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCAyMTIsIAorICAgIDE1OSwgNDEsIDIzOCwgMjMyLCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCAyMTIsIDE1OSwgCisgICAgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDIxMiwgMTU5LCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAyMTIsIDE1OSwgMjM2LCAKKyAgICAyMTksIDExMiwgMjA2LCA3NCwgMjEyLCAxNTksIDIzNiwgMjE5LCAxMjAsIDIwNiwgNzEsIDE1MSwgMiwgMjQ3LCAxNDksIAorICAgIDE1MSwgMiwgMjUxLCAzMywgMTUxLCAyLCAyMDIsIDIwMywgMTUxLCAyLCAyMjcsIDIwMSwgMTUxLCAyLCAyMDMsIDIyNiwgCisgICAgMTUxLCAxLCA2MiwgMTUxLCAxLCAyNTIsIDEzOCwgMTUxLCAxLCA3MCwgMTUxLCAxLCAyMjgsIDE1MSwgMTUxLCAxLCA2NiwgCisgICAgMTUxLCAxLCAyMDMsIDE4MiwgMTUxLCAxLCAxMDksIDE0NiwgMTUxLCAxLCAxMDksIDIxMiwgMjE2LCAxNTEsIDEsIDEwOSwgCisgICAgMTU2LCAxNTEsIDEsIDEwOSwgMjI0LCAxMzksIDE1MSwgMSwgNzIsIDE1MSwgMSwgMjUxLCAxNzYsIDE1MSwgMSwgNzQsIAorICAgIDE1MSwgMSwgMjUwLCAxMzksIDE1MSwgMSwgMTYxLCAxNTEsIDEsIDIyNiwgMjA3LCAxNTEsIDEsIDIzNiwgODksIDE1MSwgMSwgCisgICAgMjM1LCAxOTksIDE1MSwgMSwgMjE5LCAyNTMsIDE1MSwgMSwgMjQ3LCAxOTAsIDE1MSwgMSwgMjQ3LCAzNywgMTUxLCAxLCAKKyAgICAyMjcsIDI0OCwgMTUxLCAxLCAyMjcsIDIxNSwgMTUxLCAxLCAyMTgsIDYwLCAxNTEsIDEsIDIwNCwgMjUzLCAxNTEsIDEsIAorICAgIDIwNCwgMjQxLCAxNTEsIDEsIDI0MSwgMjIwLCAxNTEsIDEsIDI0MSwgMjA0LCAxNTEsIDEsIDIxOSwgMjEsIDE1MSwgMSwgCisgICAgMjA3LCAzNiwgMTUxLCAxLCAyMDYsIDEyMiwgMTUxLCAxLCAyNDIsIDU4LCAxNTEsIDEsIDI0MSwgMTAwLCAxNTEsIDEsIAorICAgIDE4OCwgMTUxLCAxLCAxNzIsIDE1MSwgMSwgMjE1LCAyNDUsIDE1MSwgMSwgMjQ5LCAxMzYsIDE1MSwgMSwgMjQ4LCAyMDAsIAorICAgIDE1MSwgMSwgMTc4LCAxNTEsIDEsIDE4MywgMTUxLCAxLCAyMTMsIDI1MiwgMTUxLCAxLCAxOTQsIDE1MSwgMSwgMjAzLCA5MCwgCisgICAgMTUxLCAxLCAyMTAsIDExNCwgMTUxLCAxLCAyMDgsIDE3OSwgMTUxLCAxLCAyMTIsIDY0LCAxNTEsIDEsIDE0NCwgMTUxLCAxLCAKKyAgICAyMjQsIDEzOCwgMTUxLCAxLCA0MCwgNDUsIDIyNCwgMTI5LCAxNTEsIDEsIDQwLCA0NSwgMjEyLCAyMTUsIDE1MSwgMSwgNDAsIAorICAgIDQ1LCAyMTksIDMsIDE1MSwgMjIsIDIsIDI1MiwgMTM4LCAxNTEsIDIyLCAyLCAyNDgsIDE5NywgMjUyLCAxMzgsIDE1MSwgCisgICAgMjIsIDIsIDcwLCAxNTEsIDIyLCAyLCAyMjgsIDE1MSwgMTUxLCAyMiwgMiwgNjYsIDE1MSwgMjIsIDIsIDIwMywgMTgyLCAKKyAgICAxNTEsIDIyLCAyLCAxMDksIDE0NiwgMTUxLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTUxLCAyMiwgMiwgMTA5LCAxNTYsIAorICAgIDE1MSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE1MSwgMjIsIDIsIDcyLCAxNTEsIDIyLCAyLCAyNTEsIDE3NiwgMTUxLCAyMiwgCisgICAgMiwgNzQsIDE1MSwgMjIsIDIsIDI1MCwgMTM5LCAxNTEsIDIwMiwgMjA4LCAxNTEsIDI0MiwgMTAsIDE1MSwgNTMsIDI0MiwgCisgICAgMTAsIDE1MSwgMjE0LCAyMTIsIDI0MCwgMTgyLCAxNTEsIDIxNCwgMjEyLCA1MywgMjQwLCAxODIsIDE1MSwgMjE0LCAyMTIsIAorICAgIDIyNCwgMTc2LCAxNTEsIDIxNCwgMjEyLCAyNDIsIDI0NCwgMTQ4LCAxNTEsIDIxNCwgMjEyLCAyMjQsIDY0LCAxNTEsIDQxLCAKKyAgICAxMDIsIDE1MSwgNDEsIDEwNSwgMTUxLCA0MSwgMTQ3LCAxNTEsIDQxLCAxNDksIDE1MSwgNDEsIDE2NCwgMTUxLCA0MSwgCisgICAgMTg3LCAxNTEsIDQxLCAyMTAsIDEzNSwgMTUxLCA0MSwgMTkyLCAxNTEsIDQxLCAyMTksIDExMywgMTUxLCA0MSwgMjA2LCAKKyAgICAxNjYsIDE1MSwgNDEsIDIwNCwgMTU5LCAxNTEsIDQxLCAyMDYsIDY3LCAxNTEsIDQxLCAyMzYsIDIzNSwgMTUxLCA0MSwgCisgICAgMjM3LCAxMDQsIDE1MSwgNDEsIDIwOSwgOTIsIDE1MSwgNDEsIDIxMCwgMTI5LCAxNTEsIDQxLCAyMzgsIDIyMiwgMTUxLCAKKyAgICA0MSwgMjE5LCAxMDgsIDE1MSwgNDEsIDExMiwgMjMzLCA4MiwgMTUxLCA0MSwgMTEyLCAyMDYsIDUwLCAxNTEsIDE3LCAxOTksIAorICAgIDgxLCAxNTEsIDE3LCAxMDIsIDE1MSwgMTcsIDEwNSwgMTUxLCAxNywgMTQ3LCAxNTEsIDE3LCAxNDksIDE1MSwgMTcsIDE2NCwgCisgICAgMTUxLCAxNywgMTg3LCAxNTEsIDE3LCAyMTAsIDEzNSwgMTUxLCAxNywgMTkyLCAxNTEsIDE3LCAyMTksIDExMywgMTUxLCAKKyAgICA0MSwgMjI3LCAxNjEsIDIyNywgNzksIDIsIDI0NywgMTQ5LCAyMjcsIDc5LCAyLCAyNTEsIDMzLCAyMjcsIDc5LCAyLCAyMDIsIAorICAgIDIwMywgMjI3LCA3OSwgMSwgNjIsIDIyNywgNzksIDEsIDI1MiwgMTM4LCAyMjcsIDc5LCAxLCA3MCwgMjI3LCA3OSwgMSwgCisgICAgMjI4LCAxNTEsIDIyNywgNzksIDEsIDY2LCAyMjcsIDc5LCAxLCAyMDMsIDE4MiwgMjI3LCA3OSwgMSwgNzIsIDIyNywgNzksIAorICAgIDEsIDI1MSwgMTc2LCAyMjcsIDc5LCAxLCA3NCwgMjI3LCA3OSwgMSwgMjUwLCAxMzksIDIyNywgNzksIDEsIDE2MSwgMjI3LCAKKyAgICA3OSwgMSwgMjI2LCAyMDcsIDIyNywgNzksIDEsIDIzNiwgODksIDIyNywgNzksIDEsIDIzNSwgMTk5LCAyMjcsIDc5LCAxLCAKKyAgICAyMTksIDI1MywgMjI3LCA3OSwgMSwgMjQ3LCAxOTAsIDIyNywgNzksIDEsIDI0NywgMzcsIDIyNywgNzksIDEsIDIyNywgCisgICAgMjQ4LCAyMjcsIDc5LCAxLCAyMjcsIDIxNSwgMjI3LCA3OSwgMSwgMjE4LCA2MCwgMjI3LCA3OSwgMSwgMjA0LCAyNTMsIAorICAgIDIyNywgNzksIDEsIDIwNCwgMjQxLCAyMjcsIDc5LCAxLCAyNDEsIDIyMCwgMjI3LCA3OSwgMSwgMjQxLCAyMDksIDIyNywgCisgICAgNzksIDEsIDI0MSwgMjA0LCAyMjcsIDc5LCAxLCAyMTMsIDkzLCAyMjcsIDc5LCAxLCAyMTksIDIxLCAyMjcsIDc5LCAxLCAKKyAgICAyMDcsIDM2LCAyMjcsIDc5LCAxLCAyMDYsIDEyMiwgMjI3LCA3OSwgMSwgMjQyLCA1OCwgMjI3LCA3OSwgMSwgMjQxLCAxMDAsIAorICAgIDIyNywgNzksIDEsIDE4OCwgMjI3LCA3OSwgMSwgMTcyLCAyMjcsIDc5LCAxLCAyMTUsIDI0NSwgMjI3LCA3OSwgMSwgMjQ5LCAKKyAgICAxMzYsIDIyNywgNzksIDEsIDI0OCwgMjAwLCAyMjcsIDc5LCAxLCAxNzgsIDIyNywgNzksIDEsIDE4MywgMjI3LCA3OSwgMSwgCisgICAgMjEzLCAyNTIsIDIyNywgNzksIDEsIDE5NCwgMjI3LCA3OSwgMSwgMjAzLCA5MCwgMjI3LCA3OSwgMSwgMjEwLCAxMTQsIAorICAgIDIyNywgNzksIDEsIDIwOCwgMTc5LCAyMjcsIDc5LCAxLCAyMTIsIDY0LCAyMjcsIDc5LCAxLCAxNDQsIDIyNywgNzksIDIyLCAKKyAgICAyLCAyNTIsIDEzOCwgMjI3LCA3OSwgMjIsIDIsIDcwLCAyMjcsIDc5LCAyMiwgMiwgMjI4LCAxNTEsIDIyNywgNzksIDIyLCAKKyAgICAyLCA2NiwgMjI3LCA3OSwgMjIsIDIsIDIwMywgMTgyLCAyMjcsIDc5LCAyMiwgMiwgNzIsIDIyNywgNzksIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjI3LCA3OSwgMjIsIDIsIDc0LCAyMjcsIDc5LCAyMiwgMiwgMjUwLCAxMzksIDIyNywgNzksIDIsIDIwMiwgMjA4LCAKKyAgICAyMjcsIDc5LCAyLCAyMTgsIDEwMCwgMjI3LCA3OSwgMjUyLCAzLCA1NCwgMjI3LCA3OSwgMjM4LCAxNDYsIDU0LCAyMjcsIAorICAgIDc5LCA0MSwgNTQsIDIyNywgNzksIDIxMSwgMTkzLCA4MSwgMjI3LCA3OSwgNTMsIDIxMSwgMTkzLCA4MSwgMjI3LCA3OSwgCisgICAgMjQyLCAxMCwgMjI3LCA3OSwgNTMsIDI0MiwgMTAsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjEyLCA0NywgMjA5LCA2LCAyMDksIAorICAgIDE0LCAxLCAyMDcsIDksIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjQ5LCAxMDcsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjQ3LCAKKyAgICAxNzksIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjQyLCAzOCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMzYsIDc0LCAyMDksIDYsIAorICAgIDIwOSwgMTQsIDEsIDIyMiwgMjA2LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxOSwgMjUwLCAyMDksIDYsIDIwOSwgMTQsIDEsIAorICAgIDIyNSwgMTUyLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyMCwgMTQ0LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIwMywgODYsIDIwOSwgCisgICAgNiwgMjA5LCAxNCwgMSwgMjE2LCAxOTIsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjAwLCA5MCwgMjA5LCA2LCAyMDksIDE0LCAxLCAKKyAgICAyMTMsIDIzMSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMzQsIDIyNCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjcsIDg0LCAyMDksIAorICAgIDYsIDIwOSwgMTQsIDEsIDIyNywgMjQyLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxOCwgNTcsIDIwOSwgNiwgMjA5LCAxNCwgMSwgCisgICAgMjUxLCAxODUsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjM4LCAyNTMsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjI4LCAxNTIsIAorICAgIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjA0LCAyNSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTcsIDEwOCwgMjA5LCA2LCAyMDksIAorICAgIDE0LCAxLCAyMzgsIDI0MSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjIsIDIxOSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTk5LCAKKyAgICA4MSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTAyLCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxMDUsIDIwOSwgNiwgMjA5LCAxNCwgCisgICAgMTcsIDE0NywgMjA5LCA2LCAyMDksIDE0LCAxNywgMTQ5LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxNjQsIDIwOSwgNiwgMjA5LCAKKyAgICAxNCwgMTcsIDE4NywgMjA5LCA2LCAyMDksIDE0LCAxNywgMjEwLCAxMzUsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE5MiwgCisgICAgMjA5LCA2LCAyMDksIDE0LCAxNywgMjE5LCAxMTMsIDI0NywgMzEsIDIsIDI0NywgMTQ5LCAyNDcsIDMxLCAyLCAyNTEsIDMzLCAKKyAgICAyNDcsIDMxLCAyLCAyMDIsIDIwMywgMjQ3LCAzMSwgMSwgMjUyLCAxMzgsIDI0NywgMzEsIDEsIDcwLCAyNDcsIDMxLCAxLCAKKyAgICA2NiwgMjQ3LCAzMSwgMSwgNzIsIDI0NywgMzEsIDEsIDIyNywgMTA1LCAyNDcsIDMxLCAxLCAyMjYsIDIwNiwgMjQ3LCAzMSwgCisgICAgMSwgMjM2LCA4NiwgMjQ3LCAzMSwgMSwgMjM1LCAxOTgsIDI0NywgMzEsIDEsIDIxOSwgMjUyLCAyNDcsIDMxLCAxLCAyNDcsIAorICAgIDE4OSwgMjQ3LCAzMSwgMSwgMjQ3LCAzNiwgMjQ3LCAzMSwgMSwgMjI3LCAyNDcsIDI0NywgMzEsIDEsIDIyNywgMjE0LCAKKyAgICAyNDcsIDMxLCAxLCAyMTgsIDU5LCAyNDcsIDMxLCAxLCAyMDQsIDI1MiwgMjQ3LCAzMSwgMSwgMjA0LCAyNDAsIDI0NywgMzEsIAorICAgIDEsIDI0MSwgMjE5LCAyNDcsIDMxLCAxLCAyNDEsIDIwMywgMjQ3LCAzMSwgMSwgMjE5LCAyMCwgMjQ3LCAzMSwgMSwgMjA3LCAKKyAgICAzMiwgMjQ3LCAzMSwgMSwgMjA2LCAxMjEsIDI0NywgMzEsIDEsIDI0MiwgNTcsIDI0NywgMzEsIDEsIDI0MSwgOTksIDI0NywgCisgICAgMzEsIDEsIDIyMCwgMTU3LCAyNDcsIDMxLCAxLCAyMTYsIDIxMCwgMjQ3LCAzMSwgMSwgMjE1LCAyNDQsIDI0NywgMzEsIDEsIAorICAgIDI0OSwgMTM0LCAyNDcsIDMxLCAxLCAyNDgsIDE5OSwgMjQ3LCAzMSwgMSwgMjIyLCAyMzMsIDI0NywgMzEsIDEsIDE5OSwgCisgICAgMTY1LCAyNDcsIDMxLCAxLCAyMDAsIDEwOSwgMjQ3LCAzMSwgMSwgMjEzLCAyNDgsIDI0NywgMzEsIDEsIDIyNSwgMTc1LCAKKyAgICAyNDcsIDMxLCAxLCAyMDEsIDExMywgMjQ3LCAzMSwgMSwgMjEyLCA2MSwgMjQ3LCAzMSwgMSwgMjM0LCAyMzMsIDI0NywgMzEsIAorICAgIDIyLCAyLCA2MiwgMjQ3LCAzMSwgMjIsIDIsIDcwLCAyNDcsIDMxLCAyMiwgMiwgMjI4LCAxNTEsIDI0NywgMzEsIDIyLCAyLCAKKyAgICA2NiwgMjQ3LCAzMSwgMjIsIDIsIDIwMywgMTgyLCAyNDcsIDMxLCAyMiwgMiwgNzIsIDI0NywgMzEsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjQ3LCAzMSwgMjIsIDIsIDc0LCAyNDcsIDMxLCAyMiwgMiwgMjUwLCAxMzksIDI0NywgMzEsIDIyLCAyLCAyMTcsIAorICAgIDEwNSwgMjQ3LCAzMSwgMTYzLCA4MSwgMjQ3LCAzMSwgMjUwLCAxNDAsIDgxLCAyNDcsIDMxLCAyMDIsIDIwOCwgMjQ3LCAzMSwgCisgICAgMjIyLCAyMzEsIDI0NywgMzEsIDE3LCAxOTksIDgxLCAyNDcsIDMxLCAxNywgMTAyLCAyNDcsIDMxLCAxNywgMTA1LCAyNDcsIAorICAgIDMxLCAxNywgMTQ3LCAyNDcsIDMxLCAxNywgMTQ5LCAyNDcsIDMxLCAxNywgMTY0LCAyNDcsIDMxLCAxNywgMTg3LCAyNDcsIAorICAgIDMxLCAxNywgMjEwLCAxMzUsIDI0NywgMzEsIDE3LCAxOTIsIDI0NywgMzEsIDE3LCAyMTksIDExMywgMjQ3LCAzMSwgMjExLCAKKyAgICAxOTMsIDgxLCAyNDcsIDMxLCAyNDIsIDEwLCAyNDcsIDMxLCA1MywgMjQyLCAxMCwgMjQ3LCAzMSwgMjE0LCA3OSwgODEsIAorICAgIDIyMiwgMjA0LCAxLCA2MiwgMjIyLCAyMDQsIDEsIDcwLCAyMjIsIDIwNCwgMSwgNjYsIDIyMiwgMjA0LCAxLCA3MiwgMjIyLCAKKyAgICAyMDQsIDEsIDc0LCAyMjIsIDIwNCwgMSwgMTYxLCAyMjIsIDIwNCwgMSwgMjI2LCAyMDcsIDIyMiwgMjA0LCAxLCAyMzYsIAorICAgIDg5LCAyMjIsIDIwNCwgMSwgMjM1LCAxOTksIDIyMiwgMjA0LCAxLCAyNDcsIDE5MCwgMjIyLCAyMDQsIDEsIDI0NywgMzcsIAorICAgIDIyMiwgMjA0LCAxLCAyMjcsIDI0OCwgMjIyLCAyMDQsIDEsIDIyNywgMjE1LCAyMjIsIDIwNCwgMSwgMjE4LCA2MCwgMjIyLCAKKyAgICAyMDQsIDEsIDIwNCwgMjUzLCAyMjIsIDIwNCwgMSwgMjA0LCAyNDEsIDIyMiwgMjA0LCAxLCAyNDEsIDIyMCwgMjIyLCAyMDQsIAorICAgIDEsIDI0MSwgMjA0LCAyMjIsIDIwNCwgMSwgMjE5LCAyMSwgMjIyLCAyMDQsIDEsIDIwNywgMzYsIDIyMiwgMjA0LCAxLCAKKyAgICAyMDYsIDEyMiwgMjIyLCAyMDQsIDEsIDI0MiwgNTgsIDIyMiwgMjA0LCAxLCAyNDEsIDEwMCwgMjIyLCAyMDQsIDEsIDE4OCwgCisgICAgMjIyLCAyMDQsIDEsIDE3MiwgMjIyLCAyMDQsIDEsIDIxNSwgMjQ1LCAyMjIsIDIwNCwgMSwgMjQ5LCAxMzYsIDIyMiwgMjA0LCAKKyAgICAxLCAyNDgsIDIwMCwgMjIyLCAyMDQsIDEsIDE3OCwgMjIyLCAyMDQsIDEsIDIxMywgMjUyLCAyMjIsIDIwNCwgMSwgMTk0LCAKKyAgICAyMjIsIDIwNCwgMSwgMjAzLCA5MCwgMjIyLCAyMDQsIDEsIDIxMiwgNjQsIDIyMiwgMjA0LCAxLCAxNDQsIDIyMiwgMjA0LCAKKyAgICAxLCAyMTIsIDIxNSwgMjIyLCAyMDQsIDIsIDIxOCwgMTAwLCAyMjIsIDIwNCwgMjUyLCAzLCA1NCwgMjIyLCAyMDQsIDIxMSwgCisgICAgMTkzLCA4MSwgMjIyLCAyMDQsIDMzLCAyMDksIDIyOCwgMTg2LCAyLCAyNDcsIDE0OSwgMTg2LCAyLCAyNTEsIDMzLCAxODYsIAorICAgIDIsIDIwMiwgMjAzLCAxODYsIDEsIDYyLCAxODYsIDEsIDI1MiwgMTM4LCAxODYsIDEsIDcwLCAxODYsIDEsIDIyOCwgMTUxLCAKKyAgICAxODYsIDEsIDY2LCAxODYsIDEsIDIwMywgMTgyLCAxODYsIDEsIDEwOSwgMTQ2LCAxODYsIDEsIDEwOSwgMjEyLCAyMTYsIAorICAgIDE4NiwgMSwgMTA5LCAxNTYsIDE4NiwgMSwgMTA5LCAyMjQsIDEzOSwgMTg2LCAxLCA3MiwgMTg2LCAxLCAyNTEsIDE3NiwgCisgICAgMTg2LCAxLCA3NCwgMTg2LCAxLCAyNTAsIDEzOSwgMTg2LCAxLCAxNjEsIDE4NiwgMSwgMjI2LCAyMDcsIDE4NiwgMSwgMjM2LCAKKyAgICA4OSwgMTg2LCAxLCAyMzUsIDE5OSwgMTg2LCAxLCAyMTksIDI1MywgMTg2LCAxLCAyNDcsIDE5MCwgMTg2LCAxLCAyNDcsIAorICAgIDM3LCAxODYsIDEsIDIyNywgMjQ4LCAxODYsIDEsIDIyNywgMjE1LCAxODYsIDEsIDIxOCwgNjAsIDE4NiwgMSwgMjA0LCAKKyAgICAyNTMsIDE4NiwgMSwgMjA0LCAyNDEsIDE4NiwgMSwgMjQxLCAyMjAsIDE4NiwgMSwgMjQxLCAyMDQsIDE4NiwgMSwgMjE5LCAKKyAgICAyMSwgMTg2LCAxLCAyMDcsIDM2LCAxODYsIDEsIDIwNiwgMTIyLCAxODYsIDEsIDI0MiwgNTgsIDE4NiwgMSwgMjQxLCAxMDAsIAorICAgIDE4NiwgMSwgMTg4LCAxODYsIDEsIDE3MiwgMTg2LCAxLCAyMTUsIDI0NSwgMTg2LCAxLCAyNDksIDEzNiwgMTg2LCAxLCAKKyAgICAyNDgsIDIwMCwgMTg2LCAxLCAxNzgsIDE4NiwgMSwgMTgzLCAxODYsIDEsIDIxMywgMjUyLCAxODYsIDEsIDE5NCwgMTg2LCAKKyAgICAxLCAyMjQsIDEzOCwgMTg2LCAxLCAyMDMsIDkwLCAxODYsIDEsIDIxMCwgMTE0LCAxODYsIDEsIDIwOCwgMTc5LCAxODYsIDEsIAorICAgIDIxMiwgNjQsIDE4NiwgMSwgMTQ0LCAxODYsIDIyLCAyLCAyNTIsIDEzOCwgMTg2LCAyMiwgMiwgNzAsIDE4NiwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxODYsIDIyLCAyLCA2NiwgMTg2LCAyMiwgMiwgMjAzLCAxODIsIDE4NiwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxODYsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxODYsIDIyLCAyLCAxMDksIDE1NiwgMTg2LCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgMTg2LCAyMiwgMiwgNzIsIDE4NiwgMjIsIDIsIDI1MSwgMTc2LCAxODYsIDIyLCAyLCA3NCwgMTg2LCAyMiwgMiwgCisgICAgMjUwLCAxMzksIDE4NiwgMiwgMjAyLCAyMDgsIDE4NiwgMiwgMjUwLCAxMjIsIDE4NiwgMiwgMjI3LCAyMDEsIDE4NiwgMiwgCisgICAgMjAzLCAyMjYsIDE4NiwgMjE3LCA4NiwgMTg2LCAyNDIsIDEwLCAxODYsIDUzLCAyNDIsIDEwLCAxODYsIDI1MiwgMywgNTQsIAorICAgIDE4NiwgMjEwLCAxNTQsIDE4NiwgMjEyLCA5LCA4MSwgMTg2LCAyLCAyMTgsIDEwMCwgMTg2LCAyMiwgNjcsIDgxLCAxODYsIAorICAgIDIzOCwgMzAsIDIwOSwgMjUwLCAyMiwgODEsIDE4NiwgMjA3LCAxOTQsIDgxLCAxODYsIDE3LCAxOTksIDgxLCAxODYsIDE3LCAKKyAgICAxMDIsIDE4NiwgMTcsIDEwNSwgMTg2LCAxNywgMTQ3LCAxODYsIDE3LCAxNDksIDE4NiwgMTcsIDE2NCwgMTg2LCAxNywgCisgICAgMTg3LCAxODYsIDE3LCAyMTAsIDEzNSwgMTg2LCAxNywgMTkyLCAxODYsIDE3LCAyMTksIDExMywgMTg2LCAyMzgsIDIxNSwgCisgICAgMTg2LCAyLCAyMDksIDE3NywgMTg2LCAyMzQsIDEzMCwgMTg2LCAyNDMsIDQxLCA1NCwgMTg2LCAyMTEsIDE5MywgMjIyLCAKKyAgICAxNDksIDE4NiwgMjExLCAxOTMsIDIyMiwgMTQ4LCAxNDMsIDI1MCwgMjM0LCAxNywgMTAyLCAxNDMsIDI1MCwgMjM0LCAxNywgCisgICAgMTA1LCAxNDMsIDI1MCwgMjM0LCAxNywgMTQ3LCAxNDMsIDI1MCwgMjM0LCAxNywgMTQ5LCAxNDMsIDI1MCwgMjM0LCAxNywgCisgICAgMTY0LCAxNDMsIDI1MCwgMjM0LCAxNywgMTg3LCAxNDMsIDI1MCwgMjM0LCAxNywgMjEwLCAxMzUsIDE0MywgMjUwLCAyMzQsIAorICAgIDE3LCAxOTIsIDE0MywgMjUwLCAyMzQsIDE3LCAyMTksIDExMywgMTQzLCAyNTAsIDIzNCwgNDEsIDIwNiwgMTY2LCAxNDMsIAorICAgIDI1MCwgMjM0LCA0MSwgMjA0LCAxNTksIDE0MywgMjUwLCAyMzQsIDQxLCAyMDYsIDY3LCAxNDMsIDI1MCwgMjM0LCA0MSwgCisgICAgMjM2LCAyMzUsIDE0MywgMjUwLCAyMzQsIDQxLCAyMzcsIDEwNCwgMTQzLCAyNTAsIDIzNCwgNDEsIDIwOSwgOTIsIDE0MywgCisgICAgMjUwLCAyMzQsIDQxLCAyMTAsIDEyOSwgMTQzLCAyNTAsIDIzNCwgNDEsIDIzOCwgMjIyLCAxNDMsIDI1MCwgMjM0LCA0MSwgCisgICAgMjE5LCAxMDgsIDE0MywgMjUwLCAyMzQsIDQxLCAxMTIsIDIzMywgODIsIDE0MywgMjUwLCAyMzQsIDQxLCAxMTIsIDIwNiwgCisgICAgNTAsIDIyNiwgMTc3LCAxLCA2MiwgMjI2LCAxNzcsIDEsIDI1MiwgMTM4LCAyMjYsIDE3NywgMSwgNzAsIDIyNiwgMTc3LCAxLCAKKyAgICA2NiwgMjI2LCAxNzcsIDEsIDcyLCAyMjYsIDE3NywgMSwgMjUxLCAxNzYsIDIyNiwgMTc3LCAxLCA3NCwgMjI2LCAxNzcsIDEsIAorICAgIDI1MCwgMTM5LCAyMjYsIDE3NywgMSwgMTYxLCAyMjYsIDE3NywgMSwgMjI2LCAyMDcsIDIyNiwgMTc3LCAxLCAyMzYsIDg5LCAKKyAgICAyMjYsIDE3NywgMSwgMjM1LCAyMzUsIDIyNiwgMTc3LCAxLCAyMzUsIDE5OSwgMjI2LCAxNzcsIDEsIDIxOSwgMjUzLCAyMjYsIAorICAgIDE3NywgMSwgMjQ3LCAxOTAsIDIyNiwgMTc3LCAxLCAyNDcsIDM3LCAyMjYsIDE3NywgMSwgMjI3LCAyNDgsIDIyNiwgMTc3LCAKKyAgICAxLCAyMjcsIDE5NCwgMjI2LCAxNzcsIDEsIDIxOCwgNjAsIDIyNiwgMTc3LCAxLCAyMDQsIDI1MywgMjI2LCAxNzcsIDEsIAorICAgIDIwNCwgMjQxLCAyMjYsIDE3NywgMSwgMjQxLCAyMjAsIDIyNiwgMTc3LCAxLCAyNDEsIDIwNCwgMjI2LCAxNzcsIDEsIDIxOSwgCisgICAgMjEsIDIyNiwgMTc3LCAxLCAyMDcsIDM2LCAyMjYsIDE3NywgMSwgMjA2LCAxMjIsIDIyNiwgMTc3LCAxLCAyNDIsIDU4LCAKKyAgICAyMjYsIDE3NywgMSwgMjQxLCAyMTAsIDIyNiwgMTc3LCAxLCAyNDEsIDEwMCwgMjI2LCAxNzcsIDEsIDE4OCwgMjI2LCAxNzcsIAorICAgIDEsIDE3MiwgMjI2LCAxNzcsIDEsIDIxNSwgMjQ1LCAyMjYsIDE3NywgMSwgMjQ5LCAxMzYsIDIyNiwgMTc3LCAxLCAyNDksIAorICAgIDQ0LCAyMjYsIDE3NywgMSwgMjQ4LCAyMDAsIDIyNiwgMTc3LCAxLCAxNzgsIDIyNiwgMTc3LCAxLCAxODMsIDIyNiwgMTc3LCAKKyAgICAxLCAyMTMsIDI1MiwgMjI2LCAxNzcsIDEsIDE5NCwgMjI2LCAxNzcsIDEsIDIwMywgOTAsIDIyNiwgMTc3LCAxLCAyMTIsIAorICAgIDY0LCAyMjYsIDE3NywgMSwgMTQ0LCAyMjYsIDE3NywgMSwgMjI0LCAxMzgsIDIyNiwgMTc3LCAyMiwgMiwgMjUyLCAxMzgsIAorICAgIDIyNiwgMTc3LCAyMiwgMiwgNzAsIDIyNiwgMTc3LCAyMiwgMiwgMjI4LCAxNTEsIDIyNiwgMTc3LCAyMiwgMiwgNjYsIDIyNiwgCisgICAgMTc3LCAyMiwgMiwgNzIsIDIyNiwgMTc3LCAyMiwgMiwgMjUxLCAxNzYsIDIyNiwgMTc3LCAyMiwgMiwgNzQsIDIyNiwgMTc3LCAKKyAgICAyMiwgMiwgMjUwLCAxMzksIDIyNiwgMTc3LCAyLCAyNTEsIDMzLCAyMjYsIDE3NywgMiwgMjAyLCAyMDgsIDIyNiwgMTc3LCAKKyAgICAyLCAyMTgsIDEwMCwgMjI2LCAxNzcsIDIsIDIxMCwgMTA0LCAyMjYsIDE3NywgMjQyLCAxMCwgMjI2LCAxNzcsIDUzLCAyNDIsIAorICAgIDEwLCAyMjYsIDE3NywgMjAwLCAyMzgsIDIxMCwgMTU0LCAyMjYsIDE3NywgMjExLCAxOTMsIDgxLCAyMjYsIDE3NywgNTMsIAorICAgIDIxMSwgMTkzLCA4MSwgMjI2LCAxNzcsIDI1MiwgMywgNTQsIDIyNiwgMTc3LCAyLCAyMDcsIDIzNiwgMjIxLCAyNSwgMSwgCisgICAgNjIsIDIyMSwgMjUsIDEsIDcwLCAyMjEsIDI1LCAxLCA2NiwgMjIxLCAyNSwgMSwgNzIsIDIyMSwgMjUsIDEsIDE2MSwgMjIxLCAKKyAgICAyNSwgMSwgMjI2LCAyMDcsIDIyMSwgMjUsIDEsIDIzNiwgODksIDIyMSwgMjUsIDEsIDIzNSwgMTk5LCAyMjEsIDI1LCAxLCAKKyAgICAyNDcsIDE5MCwgMjIxLCAyNSwgMSwgMjQ3LCAzNywgMjIxLCAyNSwgMSwgMjI3LCAyNDgsIDIyMSwgMjUsIDEsIDIyNywgCisgICAgMTk0LCAyMjEsIDI1LCAxLCAyMTgsIDYwLCAyMjEsIDI1LCAxLCAyMDQsIDI1MywgMjIxLCAyNSwgMSwgMjA0LCAyNDEsIAorICAgIDIyMSwgMjUsIDEsIDI0MSwgMjIwLCAyMjEsIDI1LCAxLCAyNDEsIDIxMCwgMjIxLCAyNSwgMSwgMjQxLCAyMDQsIDIyMSwgCisgICAgMjUsIDEsIDIxOSwgMjEsIDIyMSwgMjUsIDEsIDIwNywgMzYsIDIyMSwgMjUsIDEsIDIwNiwgMTIyLCAyMjEsIDI1LCAxLCAKKyAgICAyNDIsIDU4LCAyMjEsIDI1LCAxLCAyNDEsIDEwMCwgMjIxLCAyNSwgMSwgMTg4LCAyMjEsIDI1LCAxLCAxNzIsIDIyMSwgMjUsIAorICAgIDEsIDIxNSwgMjQ1LCAyMjEsIDI1LCAxLCAyNDksIDEzNiwgMjIxLCAyNSwgMSwgMjQ4LCAyMDAsIDIyMSwgMjUsIDEsIDE3OCwgCisgICAgMjIxLCAyNSwgMSwgMTgzLCAyMjEsIDI1LCAxLCAyMTMsIDI1MiwgMjIxLCAyNSwgMSwgMTk0LCAyMjEsIDI1LCAxLCAyMDMsIAorICAgIDkwLCAyMjEsIDI1LCAxLCAyMTIsIDY0LCAyMjEsIDI1LCAxLCAxNDQsIDIyMSwgMjUsIDEsIDIxMiwgMjE1LCAyMjEsIDI1LCAKKyAgICAxLCAyMTMsIDkzLCAyMjEsIDI1LCAyMTEsIDE5MywgODEsIDIyNiwgMTY5LCAxLCA2MiwgMjI2LCAxNjksIDEsIDI1MiwgCisgICAgMTM4LCAyMjYsIDE2OSwgMSwgNzAsIDIyNiwgMTY5LCAxLCAyMjgsIDE1MSwgMjI2LCAxNjksIDEsIDY2LCAyMjYsIDE2OSwgCisgICAgMSwgMjAzLCAxODIsIDIyNiwgMTY5LCAxLCA3MiwgMjI2LCAxNjksIDEsIDI1MSwgMTc2LCAyMjYsIDE2OSwgMSwgNzQsIAorICAgIDIyNiwgMTY5LCAxLCAyNTAsIDEzOSwgMjI2LCAxNjksIDEsIDE2MSwgMjI2LCAxNjksIDEsIDIyNiwgMjA3LCAyMjYsIDE2OSwgCisgICAgMSwgMjM2LCA4OSwgMjI2LCAxNjksIDEsIDIzNSwgMjM1LCAyMjYsIDE2OSwgMSwgMjM1LCAxOTksIDIyNiwgMTY5LCAxLCAKKyAgICAyMTksIDI1MywgMjI2LCAxNjksIDEsIDI0NywgMTkwLCAyMjYsIDE2OSwgMSwgMjQ3LCAzNywgMjI2LCAxNjksIDEsIDIyNywgCisgICAgMjQ4LCAyMjYsIDE2OSwgMSwgMjI3LCAxOTQsIDIyNiwgMTY5LCAxLCAyMjcsIDIxNSwgMjI2LCAxNjksIDEsIDIxOCwgNjAsIAorICAgIDIyNiwgMTY5LCAxLCAyMDQsIDI1MywgMjI2LCAxNjksIDEsIDIwNCwgMjQxLCAyMjYsIDE2OSwgMSwgMjQxLCAyMjAsIDIyNiwgCisgICAgMTY5LCAxLCAyNDEsIDIxMCwgMjI2LCAxNjksIDEsIDIxMiwgMjE1LCAyMjYsIDE2OSwgMSwgMjQxLCAyMDQsIDIyNiwgMTY5LCAKKyAgICAxLCAyMTksIDIxLCAyMjYsIDE2OSwgMSwgMjA3LCAzNiwgMjI2LCAxNjksIDEsIDIwNiwgMTIyLCAyMjYsIDE2OSwgMSwgCisgICAgMjQyLCA1OCwgMjI2LCAxNjksIDEsIDI0MSwgMTAwLCAyMjYsIDE2OSwgMSwgMTg4LCAyMjYsIDE2OSwgMSwgMTcyLCAyMjYsIAorICAgIDE2OSwgMSwgMjE1LCAyNDUsIDIyNiwgMTY5LCAxLCAyNDksIDEzNiwgMjI2LCAxNjksIDEsIDI0OSwgNDQsIDIyNiwgMTY5LCAKKyAgICAxLCAyNDgsIDIwMCwgMjI2LCAxNjksIDEsIDE3OCwgMjI2LCAxNjksIDEsIDE4MywgMjI2LCAxNjksIDEsIDIxMywgMjUyLCAKKyAgICAyMjYsIDE2OSwgMSwgMTk0LCAyMjYsIDE2OSwgMSwgMjAzLCA5MCwgMjI2LCAxNjksIDEsIDIxMCwgMTE0LCAyMjYsIDE2OSwgCisgICAgMSwgMjEyLCA2NCwgMjI2LCAxNjksIDEsIDE0NCwgMjI2LCAxNjksIDIsIDI1MSwgMzMsIDIyNiwgMTY5LCAyMiwgMiwgMjUyLCAKKyAgICAxMzgsIDIyNiwgMTY5LCAyMiwgMiwgNzAsIDIyNiwgMTY5LCAyMiwgMiwgMjI4LCAxNTEsIDIyNiwgMTY5LCAyMiwgMiwgNjYsIAorICAgIDIyNiwgMTY5LCAyMiwgMiwgMjAzLCAxODIsIDIyNiwgMTY5LCAyMiwgMiwgNzIsIDIyNiwgMTY5LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIyNiwgMTY5LCAyMiwgMiwgNzQsIDIyNiwgMTY5LCAyMiwgMiwgMjUwLCAxMzksIDIyNiwgMTY5LCAyLCAyMTgsIAorICAgIDEwMCwgMjI2LCAxNjksIDIsIDIwMiwgMjA4LCAyMjYsIDE2OSwgMTcsIDE5OSwgODEsIDIyNiwgMTY5LCAxNywgMTAyLCAKKyAgICAyMjYsIDE2OSwgMTcsIDEwNSwgMjI2LCAxNjksIDE3LCAxNDcsIDIyNiwgMTY5LCAxNywgMTQ5LCAyMjYsIDE2OSwgMTcsIAorICAgIDE2NCwgMjI2LCAxNjksIDE3LCAxODcsIDIyNiwgMTY5LCAxNywgMjEwLCAxMzUsIDIyNiwgMTY5LCAxNywgMTkyLCAyMjYsIAorICAgIDE2OSwgMTcsIDIxOSwgMTEzLCAyMzUsIDgyLCAyLCAzOCwgMjUxLCAzNCwgNTYsIDIzNSwgODIsIDIsIDI0NywgMTQ5LCAKKyAgICAyMzUsIDgyLCAyLCAyNTEsIDMzLCAyMzUsIDgyLCAyLCAyMDIsIDIwMywgMjM1LCA4MiwgMSwgNjIsIDIzNSwgODIsIDEsIAorICAgIDI1MiwgMTM4LCAyMzUsIDgyLCAxLCA3MCwgMjM1LCA4MiwgMSwgMjI4LCAxNTEsIDIzNSwgODIsIDEsIDY2LCAyMzUsIDgyLCAKKyAgICAxLCAyMDMsIDE4MiwgMjM1LCA4MiwgMSwgMTA5LCAxNDYsIDIzNSwgODIsIDEsIDEwOSwgMTU2LCAyMzUsIDgyLCAxLCAyMzgsIAorICAgIDI1NSwgMjM1LCA4MiwgMSwgMjUxLCAxNzYsIDIzNSwgODIsIDEsIDIxNywgNjMsIDIzNSwgODIsIDEsIDI1MCwgMTM5LCAKKyAgICAyMzUsIDgyLCAxLCAxNjEsIDIzNSwgODIsIDEsIDIyNiwgMjA3LCAyMzUsIDgyLCAxLCAyMzYsIDg5LCAyMzUsIDgyLCAxLCAKKyAgICAyMzUsIDE5OSwgMjM1LCA4MiwgMSwgMjE5LCAyNTMsIDIzNSwgODIsIDEsIDI0NywgMTkwLCAyMzUsIDgyLCAxLCAyNDcsIAorICAgIDM3LCAyMzUsIDgyLCAxLCAyMjcsIDI0OCwgMjM1LCA4MiwgMSwgMjI3LCAyMTUsIDIzNSwgODIsIDEsIDIxOCwgNjAsIDIzNSwgCisgICAgODIsIDEsIDIwNCwgMjUzLCAyMzUsIDgyLCAxLCAyMDQsIDI0MSwgMjM1LCA4MiwgMSwgMjQxLCAyMjAsIDIzNSwgODIsIDEsIAorICAgIDI0MSwgMjA0LCAyMzUsIDgyLCAxLCAyMTksIDIxLCAyMzUsIDgyLCAxLCAyMDcsIDM2LCAyMzUsIDgyLCAxLCAyMDYsIDEyMiwgCisgICAgMjM1LCA4MiwgMSwgMjQyLCA1OCwgMjM1LCA4MiwgMSwgMjQxLCAxMDAsIDIzNSwgODIsIDEsIDE4OCwgMjM1LCA4MiwgMSwgCisgICAgMTcyLCAyMzUsIDgyLCAxLCAyMTUsIDI0NSwgMjM1LCA4MiwgMSwgMjQ5LCAxMzYsIDIzNSwgODIsIDEsIDI0OCwgMjAwLCAKKyAgICAyMzUsIDgyLCAxLCAxNzgsIDIzNSwgODIsIDEsIDE4MywgMjM1LCA4MiwgMSwgMjEzLCAyNTIsIDIzNSwgODIsIDEsIDE5NCwgCisgICAgMjM1LCA4MiwgMSwgMjI0LCAxMzgsIDIzNSwgODIsIDEsIDIwMywgOTAsIDIzNSwgODIsIDEsIDIxMCwgMTE0LCAyMzUsIDgyLCAKKyAgICAxLCAyMDgsIDE3OSwgMjM1LCA4MiwgMSwgMjEyLCA2NCwgMjM1LCA4MiwgMSwgMTQ0LCAyMzUsIDgyLCAyLCAyMTgsIDEwMCwgCisgICAgMjM1LCA4MiwgMiwgMjUwLCAxMjIsIDIzNSwgODIsIDIyLCAyLCAyNTIsIDEzOCwgMjM1LCA4MiwgMjIsIDIsIDcwLCAyMzUsIAorICAgIDgyLCAyMiwgMiwgMjI4LCAxNTEsIDIzNSwgODIsIDIyLCAyLCA2NiwgMjM1LCA4MiwgMjIsIDIsIDIwMywgMTgyLCAyMzUsIAorICAgIDgyLCAyMiwgMiwgMTA5LCAxNDYsIDIzNSwgODIsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMzUsIDgyLCAyMiwgMiwgMjM4LCAKKyAgICAyNTUsIDIzNSwgODIsIDIyLCAyLCAyNTEsIDE3NiwgMjM1LCA4MiwgMjIsIDIsIDIxNywgNjMsIDIzNSwgODIsIDIyLCAyLCAKKyAgICAyNTAsIDEzOSwgMjM1LCA4MiwgMiwgMjAyLCAyMDgsIDIzNSwgODIsIDIxNywgODYsIDIzNSwgODIsIDI1MCwgMTQwLCAyMjUsIAorICAgIDIsIDgxLCAyMzUsIDgyLCAyLCAyMTUsIDExMSwgMjM1LCA4MiwgMSwgMjAzLCA1NiwgMjUxLCAzMywgMjM1LCA4MiwgMSwgCisgICAgMjAzLCA1NiwgNTMsIDI1MSwgMzMsIDIzNSwgODIsIDEsIDEwOSwgMjEyLCAyMTYsIDIzNSwgODIsIDEsIDEwOSwgMjI0LCAKKyAgICAxMzksIDIzNSwgODIsIDIyLCAyLCAxMDksIDE1NiwgMjM1LCA4MiwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDM4LCAyMzUsIAorICAgIDgyLCAxNywgMTk5LCA4MSwgMzgsIDIzNSwgODIsIDE3LCAxMDIsIDM4LCAyMzUsIDgyLCAxNywgMTA1LCAzOCwgMjM1LCA4MiwgCisgICAgMTcsIDE0NywgMzgsIDIzNSwgODIsIDE3LCAxNDksIDM4LCAyMzUsIDgyLCAxNywgMTY0LCAzOCwgMjM1LCA4MiwgMTcsIAorICAgIDE4NywgMzgsIDIzNSwgODIsIDEsIDYyLCAzOCwgMjM1LCA4MiwgMSwgMTYxLCAzOCwgMjM1LCA4MiwgMSwgMTg4LCAzOCwgCisgICAgMjM1LCA4MiwgMSwgMjAyLCAyMzQsIDM4LCAyMzUsIDgyLCAxLCAxNzIsIDE5NSwgMSwgNjIsIDE5NSwgMSwgMjUyLCAxMzgsIAorICAgIDE5NSwgMSwgNzAsIDE5NSwgMSwgMjI4LCAxNTEsIDE5NSwgMSwgNjYsIDE5NSwgMSwgMjAzLCAxODIsIDE5NSwgMSwgMTA5LCAKKyAgICAxNDYsIDE5NSwgMSwgMTA5LCAyMTIsIDIxNiwgMTk1LCAxLCAxMDksIDE1NiwgMTk1LCAxLCAxMDksIDIyNCwgMTM5LCAxOTUsIAorICAgIDEsIDcyLCAxOTUsIDEsIDI1MSwgMTc2LCAxOTUsIDEsIDc0LCAxOTUsIDEsIDI1MCwgMTM5LCAxOTUsIDEsIDE2MSwgMTk1LCAKKyAgICAxLCAyMjYsIDIwNywgMTk1LCAxLCAyMzYsIDg5LCAxOTUsIDEsIDIzNSwgMTk5LCAxOTUsIDEsIDIxOSwgMjUzLCAxOTUsIDEsIAorICAgIDIxOSwgMjAyLCAxOTUsIDEsIDI0NywgMTkwLCAxOTUsIDEsIDI0NywgMzcsIDE5NSwgMSwgMjI3LCAyNDgsIDE5NSwgMSwgCisgICAgMjI3LCAyMTUsIDE5NSwgMSwgMjE4LCA2MCwgMTk1LCAxLCAyMTgsIDQzLCAxOTUsIDEsIDIwNCwgMjUzLCAxOTUsIDEsIAorICAgIDIwNCwgMjQxLCAxOTUsIDEsIDI0MSwgMjIwLCAxOTUsIDEsIDI0MSwgMjA0LCAxOTUsIDEsIDIxOSwgMjEsIDE5NSwgMSwgCisgICAgMjA3LCAzNiwgMTk1LCAxLCAyMDYsIDEyMiwgMTk1LCAxLCAyNDIsIDU4LCAxOTUsIDEsIDI0MSwgMTAwLCAxOTUsIDEsIAorICAgIDE4OCwgMTk1LCAxLCAyMTksIDE1NCwgMTk1LCAxLCAxNzIsIDE5NSwgMSwgMjE1LCAyNDUsIDE5NSwgMSwgMjQ5LCAxMzYsIAorICAgIDE5NSwgMSwgMjQ4LCAyMDAsIDE5NSwgMSwgMTc4LCAxOTUsIDEsIDIyMSwgMjE0LCAxOTUsIDEsIDE4MywgMTk1LCAxLCAKKyAgICAyMTMsIDI1MiwgMTk1LCAxLCAyMTMsIDkzLCAxOTUsIDEsIDE5NCwgMTk1LCAxLCAyMjQsIDIyMywgMTk1LCAxLCAyMDEsIAorICAgIDExNCwgMTk1LCAxLCAyMTAsIDExNCwgMTk1LCAxLCAyMDgsIDE3OSwgMTk1LCAxLCAyMTIsIDY0LCAxOTUsIDEsIDE0NCwgCisgICAgMTk1LCAyMiwgMiwgMjUyLCAxMzgsIDE5NSwgMjIsIDIsIDcwLCAxOTUsIDIyLCAyLCAyMjgsIDE1MSwgMTk1LCAyMiwgMiwgCisgICAgNjYsIDE5NSwgMjIsIDIsIDIwMywgMTgyLCAxOTUsIDIyLCAyLCAxMDksIDE0NiwgMTk1LCAyMiwgMiwgMTA5LCAyMTIsIAorICAgIDIxNiwgMTk1LCAyMiwgMiwgMTA5LCAxNTYsIDE5NSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE5NSwgMjIsIDIsIDcyLCAKKyAgICAxOTUsIDIyLCAyLCAyNTEsIDE3NiwgMTk1LCAyMiwgMiwgNzQsIDE5NSwgMjIsIDIsIDI1MCwgMTM5LCAxOTUsIDIsIDIwMiwgCisgICAgMjA4LCAxOTUsIDIsIDI0NywgMTQ5LCAxOTUsIDIsIDI1MSwgMzMsIDE5NSwgMiwgMjAyLCAyMDMsIDE5NSwgMiwgMjE4LCAKKyAgICAxMDAsIDE5NSwgMiwgMjUwLCAxMjIsIDE5NSwgMiwgNDcsIDI1MSwgMzMsIDE5NSwgMjE3LCA4NiwgMTk1LCAyMDksIDE3NiwgCisgICAgMTk1LCAyNDIsIDEwLCAxOTUsIDUzLCAyNDIsIDEwLCAxOTUsIDI0NiwgNzAsIDE5NSwgMjM2LCA1MywgMjM3LCA5MywgMTk1LCAKKyAgICAyNTIsIDMsIDU0LCAxOTUsIDE3LCAxOTksIDgxLCAxOTUsIDE3LCAxMDIsIDE5NSwgMTcsIDEwNSwgMTk1LCAxNywgMTQ3LCAKKyAgICAxOTUsIDE3LCAxNDksIDE5NSwgMTcsIDE2NCwgMTk1LCAxNywgMTg3LCAxOTUsIDE3LCAyMTAsIDEzNSwgMTk1LCAxNywgCisgICAgMTkyLCAxOTUsIDE3LCAyMTksIDExMywgMTk1LCAyMTUsIDEzMywgODEsIDE5NSwgMjI4LCA3NSwgNTQsIDIwNSwgMjE3LCAKKyAgICAyNTEsIDYyLCAyMDUsIDIxNywgMSwgNjIsIDIwNSwgMjE3LCAxLCAyNTIsIDEzOCwgMjA1LCAyMTcsIDEsIDcwLCAyMDUsIAorICAgIDIxNywgMSwgMjI4LCAxNTEsIDIwNSwgMjE3LCAxLCA2NiwgMjA1LCAyMTcsIDEsIDIwMywgMTgyLCAyMDUsIDIxNywgMSwgCisgICAgMTA5LCAxNDYsIDIwNSwgMjE3LCAxLCAxMDksIDIxMiwgMjE2LCAyMDUsIDIxNywgMSwgMTA5LCAxNTYsIDIwNSwgMjE3LCAxLCAKKyAgICAxMDksIDIyNCwgMTM5LCAyMDUsIDIxNywgMSwgNzIsIDIwNSwgMjE3LCAxLCAyNTEsIDE3NiwgMjA1LCAyMTcsIDEsIDc0LCAKKyAgICAyMDUsIDIxNywgMSwgMjUwLCAxMzksIDIwNSwgMjE3LCAxLCAxNjEsIDIwNSwgMjE3LCAxLCAyMjYsIDIwNywgMjA1LCAyMTcsIAorICAgIDEsIDIzNiwgODksIDIwNSwgMjE3LCAxLCAyMzUsIDE5OSwgMjA1LCAyMTcsIDEsIDIxOSwgMjUzLCAyMDUsIDIxNywgMSwgCisgICAgMjQ3LCAxOTAsIDIwNSwgMjE3LCAxLCAyNDcsIDM3LCAyMDUsIDIxNywgMSwgMjI3LCAyNDgsIDIwNSwgMjE3LCAxLCAyMjcsIAorICAgIDIxNSwgMjA1LCAyMTcsIDEsIDIxOCwgNjAsIDIwNSwgMjE3LCAxLCAyMDQsIDI1MywgMjA1LCAyMTcsIDEsIDIwNCwgMjQxLCAKKyAgICAyMDUsIDIxNywgMSwgMjQxLCAyMjAsIDIwNSwgMjE3LCAxLCAyNDEsIDIwNCwgMjA1LCAyMTcsIDEsIDIxOSwgMjEsIDIwNSwgCisgICAgMjE3LCAxLCAyMDcsIDM2LCAyMDUsIDIxNywgMSwgMjA2LCAxMjIsIDIwNSwgMjE3LCAxLCAyNDIsIDU4LCAyMDUsIDIxNywgCisgICAgMSwgMjQxLCAxMDAsIDIwNSwgMjE3LCAxLCAxODgsIDIwNSwgMjE3LCAxLCAxNzIsIDIwNSwgMjE3LCAxLCAyMTUsIDI0NSwgCisgICAgMjA1LCAyMTcsIDEsIDI0OSwgMTM2LCAyMDUsIDIxNywgMSwgMjQ4LCAyMDAsIDIwNSwgMjE3LCAxLCAxNzgsIDIwNSwgMjE3LCAKKyAgICAxLCAxODMsIDIwNSwgMjE3LCAxLCAyMTMsIDI1MiwgMjA1LCAyMTcsIDEsIDE5NCwgMjA1LCAyMTcsIDEsIDIwMywgOTAsIAorICAgIDIwNSwgMjE3LCAxLCAyMTAsIDExNCwgMjA1LCAyMTcsIDEsIDIwOCwgMTc5LCAyMDUsIDIxNywgMSwgMjEyLCA2NCwgMjA1LCAKKyAgICAyMTcsIDEsIDE0NCwgMjA1LCAyMTcsIDIyLCAyLCAyNTIsIDEzOCwgMjA1LCAyMTcsIDIyLCAyLCA3MCwgMjA1LCAyMTcsIAorICAgIDIyLCAyLCAyMjgsIDE1MSwgMjA1LCAyMTcsIDIyLCAyLCA2NiwgMjA1LCAyMTcsIDIyLCAyLCAyMDMsIDE4MiwgMjA1LCAKKyAgICAyMTcsIDIyLCAyLCAxMDksIDE0NiwgMjA1LCAyMTcsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMDUsIDIxNywgMjIsIDIsIAorICAgIDEwOSwgMTU2LCAyMDUsIDIxNywgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDIwNSwgMjE3LCAyMiwgMiwgNzIsIDIwNSwgMjE3LCAKKyAgICAyMiwgMiwgMjA5LCAyNTAsIDcyLCAyMDUsIDIxNywgMjIsIDIsIDI1MSwgMTc2LCAyMDUsIDIxNywgMjIsIDIsIDc0LCAyMDUsIAorICAgIDIxNywgMjIsIDIsIDIwOSwgMjUwLCA3NCwgMjA1LCAyMTcsIDIyLCAyLCAyNTAsIDEzOSwgMjA1LCAyMTcsIDIsIDI0NywgCisgICAgMTQ5LCAyMDUsIDIxNywgMiwgMjUxLCAzMywgMjA1LCAyMTcsIDIsIDIwMiwgMjAzLCAyMDUsIDIxNywgMiwgMjAyLCAyMDgsIAorICAgIDIwNSwgMjE3LCAyLCAyMTgsIDEwMCwgMjA1LCAyMTcsIDIsIDI1MCwgMTIyLCAyMDUsIDIxNywgMjM1LCAxMSwgMjA1LCAKKyAgICAyMTcsIDI1MiwgMywgNTQsIDIwNSwgMjE3LCAyMTcsIDg2LCAyMDUsIDIxNywgMTcsIDE5OSwgODEsIDIwNSwgMjE3LCAxNywgCisgICAgMTAyLCAyMDUsIDIxNywgMTcsIDEwNSwgMjA1LCAyMTcsIDE3LCAxNDcsIDIwNSwgMjE3LCAxNywgMTQ5LCAyMDUsIDIxNywgCisgICAgMTcsIDE2NCwgMjA1LCAyMTcsIDE3LCAxODcsIDIwNSwgMjE3LCAxNywgMjEwLCAxMzUsIDIwNSwgMjE3LCAxNywgMTkyLCAKKyAgICAyMDUsIDIxNywgMTcsIDIxOSwgMTEzLCAxOTYsIDEsIDYyLCAxOTYsIDEsIDI1MiwgMTM4LCAxOTYsIDEsIDcwLCAxOTYsIDEsIAorICAgIDIyOCwgMTUxLCAxOTYsIDEsIDY2LCAxOTYsIDEsIDIwMywgMTgyLCAxOTYsIDEsIDEwOSwgMTQ2LCAxOTYsIDEsIDEwOSwgCisgICAgMjEyLCAyMTYsIDE5NiwgMSwgMTA5LCAxNTYsIDE5NiwgMSwgMTA5LCAyMjQsIDEzOSwgMTk2LCAxLCA3MiwgMTk2LCAxLCAKKyAgICAyNTEsIDE3NiwgMTk2LCAxLCA3NCwgMTk2LCAxLCAyNTAsIDEzOSwgMTk2LCAxLCAxNjEsIDE5NiwgMSwgMjI2LCAyMDcsIAorICAgIDE5NiwgMSwgMjM2LCA4OSwgMTk2LCAxLCAyMzUsIDE5OSwgMTk2LCAxLCAyMTksIDI1MywgMTk2LCAxLCAyNDcsIDE5MCwgCisgICAgMTk2LCAxLCAyNDcsIDM3LCAxOTYsIDEsIDIyNywgMjQ4LCAxOTYsIDEsIDIyNywgMjE1LCAxOTYsIDEsIDIxOCwgNjAsIAorICAgIDE5NiwgMSwgMjA0LCAyNTMsIDE5NiwgMSwgMjA0LCAyNDEsIDE5NiwgMSwgMjQxLCAyMjAsIDE5NiwgMSwgMjQxLCAyMDQsIAorICAgIDE5NiwgMSwgMjE5LCAyMSwgMTk2LCAxLCAyMDcsIDM2LCAxOTYsIDEsIDIwNiwgMTIyLCAxOTYsIDEsIDI0MiwgNTgsIDE5NiwgCisgICAgMSwgMjQxLCAxMDAsIDE5NiwgMSwgMTg4LCAxOTYsIDEsIDE3MiwgMTk2LCAxLCAyMTUsIDI0NSwgMTk2LCAxLCAyNDksIAorICAgIDEzNiwgMTk2LCAxLCAyNDgsIDIwMCwgMTk2LCAxLCAxNzgsIDE5NiwgMSwgMTgzLCAxOTYsIDEsIDIxMywgMjUyLCAxOTYsIAorICAgIDEsIDE5NCwgMTk2LCAxLCAyMDMsIDkwLCAxOTYsIDEsIDIxMCwgMTE0LCAxOTYsIDEsIDIwOCwgMTc5LCAxOTYsIDEsIDIxMiwgCisgICAgNjQsIDE5NiwgMSwgMTQ0LCAxOTYsIDIyLCAyLCAyNTIsIDEzOCwgMTk2LCAyMiwgMiwgNzAsIDE5NiwgMjIsIDIsIDIyOCwgCisgICAgMTUxLCAxOTYsIDIyLCAyLCA2NiwgMTk2LCAyMiwgMiwgMjAzLCAxODIsIDE5NiwgMjIsIDIsIDEwOSwgMTQ2LCAxOTYsIDIyLCAKKyAgICAyLCAxMDksIDIxMiwgMjE2LCAxOTYsIDIyLCAyLCA3MiwgMTk2LCAyMiwgMiwgMjUxLCAxNzYsIDE5NiwgMjIsIDIsIDc0LCAKKyAgICAxOTYsIDIyLCAyLCAyNTAsIDEzOSwgMTk2LCAyLCAyNDcsIDE0OSwgMTk2LCAyLCAyNTEsIDMzLCAxOTYsIDIsIDIwMiwgCisgICAgMjAzLCAxOTYsIDIsIDIwMiwgMjA4LCAxOTYsIDIsIDIxOCwgMTAwLCAxOTYsIDIsIDIwOSwgMTc3LCAxOTYsIDI0MiwgMTAsIAorICAgIDE5NiwgNTMsIDI0MiwgMTAsIDE5NiwgMjEwLCAxNTUsIDI0MCwgMTgyLCAxOTYsIDIxMCwgMTU1LCAxNDgsIDE5NiwgMjEzLCAKKyAgICAxMzAsIDIyMiwgMTQ5LCAxOTYsIDIxMywgMTMwLCAyMjIsIDE0OCwgMTk2LCAyMTMsIDEzMCwgMjIyLCAxNDcsIDE5NiwgCisgICAgMjM4LCAxNzEsIDc2LCAyMDYsIDEyNywgODEsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjA1LCA5MywgMjYsIDIwNCwgOTksIAorICAgIDIxNywgMjAsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjA1LCA5MywgMjYsIDIzOSwgMTgwLCAyNDIsIDI0MiwgMTk2LCAKKyAgICAyMTEsIDE5MywgMTM0LCAzLCAyMTMsIDE5NSwgMjYsIDIzOSwgMTgwLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAKKyAgICAzLCAyMTMsIDE5NSwgMjYsIDIzOSwgMTgwLCA1MywgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjEzLCAxOTUsIAorICAgIDI2LCAyMzksIDE4MCwgMjA1LCA4MywgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgNTMsIDIxMywgMjYsIDE5NiwgCisgICAgMjExLCAxOTMsIDEzNCwgNTMsIDIxMywgMjcsIDMsIDIxMywgMTk0LCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDUzLCAyNDIsIAorICAgIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMDUsIDgzLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAKKyAgICAyMTQsIDkwLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMTAsIDE1MiwgMjQyLCAyNDIsIDE5NiwgMjExLCAKKyAgICAxOTMsIDEzNCwgMywgMjQ2LCAxNTMsIDI2LCAyMTMsIDE5NCwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyNDYsIDE1MywgMjYsIAorICAgIDEyMCwgMjM4LCAxNzMsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjQ2LCAxNTMsIDI2LCAyMzYsIDIyOSwgMjM4LCAxNzMsIAorICAgIDE5NiwgMSwgMjA2LCA0NiwgMjUxLCAxMDksIDcwLCAxOTYsIDEsIDIwNCwgMTQzLCAyNTEsIDEwOSwgNzAsIDE5NiwgMSwgCisgICAgMjA0LCAxNDMsIDI1MSwgMTA5LCAyMjgsIDE1MSwgMTk2LCAxLCAyNTEsIDEwOSwgNjYsIDE5NiwgMjIsIDIsIDI1MSwgMTA5LCAKKyAgICA2NiwgMTk2LCAyMiwgMiwgMjUxLCAxMDksIDIwMywgMTgyLCAyMjEsIDEyNywgMSwgNjIsIDIyMSwgMTI3LCAxLCAyNTIsIAorICAgIDEzOCwgMjIxLCAxMjcsIDEsIDcwLCAyMjEsIDEyNywgMSwgMjI4LCAxNTEsIDIyMSwgMTI3LCAxLCA2NiwgMjIxLCAxMjcsIAorICAgIDEsIDIwMywgMTgyLCAyMjEsIDEyNywgMSwgMTA5LCAxNDYsIDIyMSwgMTI3LCAxLCAxMDksIDIxMiwgMjE2LCAyMjEsIDEyNywgCisgICAgMSwgMTA5LCAxNTYsIDIyMSwgMTI3LCAxLCAxMDksIDIyNCwgMTM5LCAyMjEsIDEyNywgMSwgNzIsIDIyMSwgMTI3LCAxLCAKKyAgICAyNTEsIDE3NiwgMjIxLCAxMjcsIDEsIDc0LCAyMjEsIDEyNywgMSwgMjUwLCAxMzksIDIyMSwgMTI3LCAxLCAxNjEsIDIyMSwgCisgICAgMTI3LCAxLCAyMjYsIDIwNywgMjIxLCAxMjcsIDEsIDIzNiwgODksIDIyMSwgMTI3LCAxLCAyMzUsIDE5OSwgMjIxLCAxMjcsIAorICAgIDEsIDIxOSwgMjUzLCAyMjEsIDEyNywgMSwgMjQ3LCAxOTAsIDIyMSwgMTI3LCAxLCAyNDcsIDM3LCAyMjEsIDEyNywgMSwgCisgICAgMjI3LCAyNDgsIDIyMSwgMTI3LCAxLCAyMjcsIDIxNSwgMjIxLCAxMjcsIDEsIDIxOCwgNjAsIDIyMSwgMTI3LCAxLCAyMDQsIAorICAgIDI1MywgMjIxLCAxMjcsIDEsIDIwNCwgMjQxLCAyMjEsIDEyNywgMSwgMjQxLCAyMjAsIDIyMSwgMTI3LCAxLCAyNDEsIDIwNCwgCisgICAgMjIxLCAxMjcsIDEsIDIxOSwgMjEsIDIyMSwgMTI3LCAxLCAyMDcsIDM2LCAyMjEsIDEyNywgMSwgMjA2LCAxMjIsIDIyMSwgCisgICAgMTI3LCAxLCAyNDIsIDU4LCAyMjEsIDEyNywgMSwgMjQxLCAxMDAsIDIyMSwgMTI3LCAxLCAxODgsIDIyMSwgMTI3LCAxLCAKKyAgICAxNzIsIDIyMSwgMTI3LCAxLCAyMTUsIDI0NSwgMjIxLCAxMjcsIDEsIDI0OSwgMTM2LCAyMjEsIDEyNywgMSwgMjQ4LCAyMDAsIAorICAgIDIyMSwgMTI3LCAxLCAxNzgsIDIyMSwgMTI3LCAxLCAxODMsIDIyMSwgMTI3LCAxLCAyMTMsIDI1MiwgMjIxLCAxMjcsIDEsIAorICAgIDE5NCwgMjIxLCAxMjcsIDEsIDIwMywgOTAsIDIyMSwgMTI3LCAxLCAyMTAsIDExNCwgMjIxLCAxMjcsIDEsIDIwOCwgMTc5LCAKKyAgICAyMjEsIDEyNywgMSwgMjEyLCA2NCwgMjIxLCAxMjcsIDEsIDE0NCwgMjIxLCAxMjcsIDEsIDIyNCwgMTM4LCAyMjEsIDEyNywgCisgICAgMjIsIDIsIDI1MiwgMTM4LCAyMjEsIDEyNywgMjIsIDIsIDcwLCAyMjEsIDEyNywgMjIsIDIsIDIyOCwgMTUxLCAyMjEsIAorICAgIDEyNywgMjIsIDIsIDY2LCAyMjEsIDEyNywgMjIsIDIsIDIwMywgMTgyLCAyMjEsIDEyNywgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAyMjEsIDEyNywgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIyMSwgMTI3LCAyMiwgMiwgMTA5LCAxNTYsIDIyMSwgMTI3LCAyMiwgCisgICAgMiwgMTA5LCAyMjQsIDEzOSwgMjIxLCAxMjcsIDIyLCAyLCA3MiwgMjIxLCAxMjcsIDIyLCAyLCAyNTEsIDE3NiwgMjIxLCAKKyAgICAxMjcsIDIyLCAyLCA3NCwgMjIxLCAxMjcsIDIyLCAyLCAyNTAsIDEzOSwgMjIxLCAxMjcsIDIsIDI1MSwgMzMsIDIyMSwgCisgICAgMTI3LCAyLCAyMDIsIDIwMywgMjIxLCAxMjcsIDIsIDIwMiwgMjA4LCAyMjEsIDEyNywgMiwgMjUwLCAyMzEsIDIyMSwgMTI3LCAKKyAgICAyNDIsIDEwLCAyMjEsIDEyNywgNTMsIDI0MiwgMTAsIDIyMSwgMTI3LCAyNTIsIDMsIDU0LCAyMjEsIDEyNywgMiwgMjMzLCAKKyAgICA3MCwgMjIxLCAxMjcsIDE3LCAxOTksIDgxLCAyMjEsIDEyNywgMTcsIDEwMiwgMjIxLCAxMjcsIDE3LCAxMDUsIDIyMSwgCisgICAgMTI3LCAxNywgMTQ3LCAyMjEsIDEyNywgMTcsIDE0OSwgMjIxLCAxMjcsIDE3LCAxNjQsIDIyMSwgMTI3LCAxNywgMTg3LCAKKyAgICAyMjEsIDEyNywgMTcsIDIxMCwgMTM1LCAyMjEsIDEyNywgMTcsIDE5MiwgMjIxLCAxMjcsIDE3LCAyMTksIDExMywgOTIsIAorICAgIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjEyLCAyMjgsIDI0OCwgMTYwLCA5MiwgNTMsIDI0OCwgMTYxLCAzLCAyMTcsIAorICAgIDIxLCA5MiwgMjA1LCA4MywgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIDkyLCAKKyAgICAyMTIsIDIyOCwgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyMTIsIDIyOCwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCAKKyAgICA5MiwgMjI4LCA1MCwgMjQ4LCAxNjAsIDkyLCAyMjgsIDUwLCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIDkyLCAyMDcsIAorICAgIDE3MiwgMjQ4LCAxNjAsIDkyLCAyMDcsIDE3MiwgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyMDcsIDE3MiwgMjQ4LCAKKyAgICAxNjEsIDMsIDUzLCAyMTcsIDIxLCA5MiwgMjA0LCAxODUsIDIwNywgMTcyLCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIAorICAgIDIwNiwgMjUzLCAxLCA2MiwgMjA2LCAyNTMsIDEsIDI1MiwgMTM4LCAyMDYsIDI1MywgMSwgNzAsIDIwNiwgMjUzLCAxLCAKKyAgICAyMjgsIDE1MSwgMjA2LCAyNTMsIDEsIDY2LCAyMDYsIDI1MywgMSwgMjAzLCAxODIsIDIwNiwgMjUzLCAxLCA3MiwgMjA2LCAKKyAgICAyNTMsIDEsIDI1MSwgMTc2LCAyMDYsIDI1MywgMSwgNzQsIDIwNiwgMjUzLCAxLCAyNTAsIDEzOSwgMjA2LCAyNTMsIDEsIAorICAgIDE2MSwgMjA2LCAyNTMsIDEsIDIyNiwgMjA3LCAyMDYsIDI1MywgMSwgMjM2LCA4OSwgMjA2LCAyNTMsIDEsIDIzNSwgMTk5LCAKKyAgICAyMDYsIDI1MywgMSwgMjE5LCAyNTMsIDIwNiwgMjUzLCAxLCAyNDcsIDE5MCwgMjA2LCAyNTMsIDEsIDI0NywgMzcsIDIwNiwgCisgICAgMjUzLCAxLCAyMjcsIDI0OCwgMjA2LCAyNTMsIDEsIDIyNywgMjE1LCAyMDYsIDI1MywgMSwgMjE4LCA2MCwgMjA2LCAyNTMsIAorICAgIDEsIDIwNCwgMjUzLCAyMDYsIDI1MywgMSwgMjA0LCAyNDEsIDIwNiwgMjUzLCAxLCAyNDEsIDIyMCwgMjA2LCAyNTMsIDEsIAorICAgIDI0MSwgMjA0LCAyMDYsIDI1MywgMSwgMjE5LCAyMSwgMjA2LCAyNTMsIDEsIDIwNywgMzYsIDIwNiwgMjUzLCAxLCAyMDYsIAorICAgIDEyMiwgMjA2LCAyNTMsIDEsIDI0MiwgNTgsIDIwNiwgMjUzLCAxLCAyNDEsIDEwMCwgMjA2LCAyNTMsIDEsIDE4OCwgMjA2LCAKKyAgICAyNTMsIDEsIDE3MiwgMjA2LCAyNTMsIDEsIDIxNSwgMjQ1LCAyMDYsIDI1MywgMSwgMjQ5LCAxMzYsIDIwNiwgMjUzLCAxLCAKKyAgICAyNDgsIDIwMCwgMjA2LCAyNTMsIDEsIDE3OCwgMjA2LCAyNTMsIDEsIDE4MywgMjA2LCAyNTMsIDEsIDIxMywgMjUyLCAyMDYsIAorICAgIDI1MywgMSwgMTk0LCAyMDYsIDI1MywgMSwgMjAzLCA5MCwgMjA2LCAyNTMsIDEsIDIxMCwgMTE0LCAyMDYsIDI1MywgMSwgCisgICAgMjEyLCA2NCwgMjA2LCAyNTMsIDEsIDE0NCwgMjA2LCAyNTMsIDEsIDIxMiwgMjE1LCAyMDYsIDI1MywgMiwgMjUxLCAzMywgCisgICAgMjA2LCAyNTMsIDIsIDIwMiwgMjAzLCAyMDYsIDI1MywgMjIsIDIsIDI1MiwgMTM4LCAyMDYsIDI1MywgMjIsIDIsIDcwLCAKKyAgICAyMDYsIDI1MywgMjIsIDIsIDIyOCwgMTUxLCAyMDYsIDI1MywgMjIsIDIsIDY2LCAyMDYsIDI1MywgMjIsIDIsIDIwMywgCisgICAgMTgyLCAyMDYsIDI1MywgMjIsIDIsIDcyLCAyMDYsIDI1MywgMjIsIDIsIDI1MSwgMTc2LCAyMDYsIDI1MywgMjIsIDIsIDc0LCAKKyAgICAyMDYsIDI1MywgMjIsIDIsIDI1MCwgMTM5LCAyMDYsIDI1MywgMiwgMjAyLCAyMDgsIDIwNiwgMjUzLCAyLCAyMTgsIDEwMCwgCisgICAgMjA2LCAyNTMsIDE3LCAxOTksIDgxLCAyMDYsIDI1MywgMTcsIDEwMiwgMjA2LCAyNTMsIDE3LCAxMDUsIDIwNiwgMjUzLCAKKyAgICAxNywgMTQ3LCAyMDYsIDI1MywgMTcsIDE0OSwgMjA2LCAyNTMsIDE3LCAxNjQsIDIwNiwgMjUzLCAxNywgMTg3LCAyMDYsIAorICAgIDI1MywgMTcsIDIxMCwgMTM1LCAyMDYsIDI1MywgMTcsIDE5MiwgMjA2LCAyNTMsIDE3LCAyMTksIDExMywgMjUxLCAxODAsIAorICAgIDEsIDE2MSwgMjUxLCAxODAsIDEsIDIyNiwgMjA3LCAyNTEsIDE4MCwgMSwgMjE5LCAyNTMsIDI1MSwgMTgwLCAxLCAxODgsIAorICAgIDI1MSwgMTgwLCAxLCAyMDcsIDM2LCAyNTEsIDE4MCwgMSwgMjUxLCAxMDksIDIwNywgMzYsIDI1MSwgMTgwLCAxLCAxNzIsIAorICAgIDI1MSwgMTgwLCAxLCAyMTUsIDI0NSwgMjUxLCAxODAsIDEsIDI0OSwgMTM2LCAyNTEsIDE4MCwgMSwgMTc4LCAyNTEsIDE4MCwgCisgICAgMSwgMjI3LCAyNDgsIDI1MSwgMTgwLCAxLCAyNDcsIDM3LCAyNTEsIDE4MCwgMSwgMjA2LCAxMjIsIDI1MSwgMTgwLCAxLCAKKyAgICAyMTMsIDI1MiwgMjUxLCAxODAsIDEsIDE5NCwgMjUxLCAxODAsIDEsIDIxMiwgNjQsIDI1MSwgMTgwLCAxLCAyMTgsIDYwLCAKKyAgICAyNTEsIDE4MCwgMSwgMTQ0LCAyNTEsIDE4MCwgMSwgNjIsIDI1MSwgMTgwLCAxLCAyNDIsIDU4LCAyNTEsIDE4MCwgMSwgCisgICAgMjQxLCAxMDAsIDI1MSwgMTgwLCAxLCAyMzYsIDg5LCAyNTEsIDE4MCwgMSwgMjUxLCAxMDksIDIzNiwgODksIDI1MSwgMTgwLCAKKyAgICAxLCAyMzUsIDE5OSwgMjUxLCAxODAsIDEsIDI0OCwgMjAwLCAyNTEsIDE4MCwgMSwgMjI3LCAyMTUsIDI1MSwgMTgwLCAxMTEsIAorICAgIDIsIDE3OSwgMTk0LCAyNTEsIDE4MCwgMTExLCAyLCAxNzksIDIxMywgMjUyLCAyNTEsIDE4MCwgMTExLCAyLCAxNzksIDIyNCwgCisgICAgMTk3LCAyMTMsIDI1MiwgMjUxLCAxODAsIDIyLCAyLCA2MiwgMjUxLCAxODAsIDIyLCAyLCAyNTIsIDEzOCwgMjUxLCAxODAsIAorICAgIDIyLCAyLCA3MCwgMjUxLCAxODAsIDIyLCAyLCAyMjgsIDE1MSwgMjUxLCAxODAsIDIyLCAyLCA2NiwgMjUxLCAxODAsIDIyLCAKKyAgICAyLCAyMDMsIDE4MiwgMjUxLCAxODAsIDIyLCAyLCA3MiwgMjUxLCAxODAsIDIyLCAyLCAyNTAsIDExNywgMjUxLCAxODAsIAorICAgIDIyLCAyLCA3NCwgMjUxLCAxODAsIDIyLCAyLCAyNTEsIDE3NiwgMjUxLCAxODAsIDIyLCAyLCAyNTEsIDEwMSwgMjUxLCAKKyAgICAxODAsIDIsIDIyNiwgMTQ5LCAyNTEsIDE4MCwgMTcsIDE5OSwgODEsIDI1MSwgMTgwLCAxNywgMTAyLCAyNTEsIDE4MCwgMTcsIAorICAgIDEwNSwgMjUxLCAxODAsIDE3LCAxNDcsIDI1MSwgMTgwLCAxNywgMTQ5LCAyNTEsIDE4MCwgMTcsIDE2NCwgMjUxLCAxODAsIAorICAgIDE3LCAxODcsIDI1MSwgMTgwLCAxNywgMjEwLCAxMzUsIDI1MSwgMTgwLCAxNywgMTkyLCAyNTEsIDE4MCwgMTcsIDIxOSwgCisgICAgMTEzLCAyNTEsIDE4MCwgNDEsIDIwNiwgMTY2LCAyNTEsIDE4MCwgNDEsIDIwNCwgMTU5LCAyNTEsIDE4MCwgMiwgNCwgMjExLCAKKyAgICAxOTIsIDI1MSwgMTgwLCAyLCAyMTEsIDE5MiwgMjUxLCAxODAsIDIsIDIxMiwgMTY2LCAyNTEsIDE4MCwgMTYsIDIwMiwgCisgICAgMjM0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjE5LCAyNTIsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCA2MiwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwMSwgMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAxOTksIDIxMSwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDYsIDEsIDE4MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDE5OSwgMjQ1LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgMjI4LCAxNTEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDMsIDE4MiwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDcyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgNzQsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyNTEsIAorICAgIDc2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM2LCA4OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIyNiwgODgsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzgsIDE0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDE5OSwgMTk1LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjA0LCAzOCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzOCwgMTYyLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjE3LCAxMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDQsIDI0OCwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDYsIDEsIDIxOCwgODYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyNDIsIDU4LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgMjUwLCAxNTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyNTEsIDEwMSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDI0OCwgMzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMTQsIDIyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIAorICAgIDYsIDEsIDIzNCwgNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzMsIDE5NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIAorICAgIDEsIDIzMywgMTIyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM0LCAxNjYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAKKyAgICAyMDgsIDEzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwOSwgMTYxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgCisgICAgMjAyLCAxOTQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMTksIDI1MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDYyLCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjAxLCAzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE5OSwgMjExLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTgzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTk5LCAyNDUsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCAyMjgsIDE1MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwMywgMTgyLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgNzIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCA3NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDI1MSwgCisgICAgNzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzYsIDg5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjI2LCA4OCwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzOCwgMTQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTk5LCAxOTUsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDQsIDM4LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM4LCAxNjIsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMTcsIDEyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwNCwgMjQ4LCAyMDEsIDk0LCAKKyAgICAyNDYsIDE0MiwgNCwgMSwgMjE4LCA4NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDI0MiwgNTgsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCAyNTAsIDE1NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDI1MSwgMTAxLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgMjQ4LCAzNiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIxNCwgMjI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgCisgICAgNCwgMSwgMjM0LCA0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzMywgMTk1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgCisgICAgMSwgMjMzLCAxMjIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzQsIDE2NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIAorICAgIDIwOCwgMTMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjA5LCAxNjEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAKKyAgICAyMDIsIDE5NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxOTksIDgxLCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDEwMiwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxMDUsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTQ3LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgMTcsIDE0OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxNjQsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTg3LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDIxMCwgMTM1LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE5MiwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDE3LCAyMTksIDExMywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMDYsIDE2NiwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQxLCAyMDQsIDE1OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMDYsIDY3LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIAorICAgIDIzNiwgMjM1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIzNywgMTA0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIwOSwgCisgICAgOTIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjEwLCAxMjksIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjM4LCAyMjIsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjE5LCAxMDgsIDIwMSwgOTQsIDI0NiwgMTQyLCAyMTcsIDg2LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE3MiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNjEsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTk0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE3OCwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDIsIDU4LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE5OSwgMTE0LCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwMywgOTAsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgCisgICAgMjE5LCAyNTMsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTQ0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAKKyAgICAxNTEsIDEsIDIzNiwgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjI2LCAyMDcsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMSwgMjEyLCA2NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDksIDEzNiwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDcsIDE5MCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDcsIAorICAgIDM2LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwNiwgMTIyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAKKyAgICAxNTEsIDEsIDE4OCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMTUsIDI0NSwgMjE2LCA4OCwgMjQ2LCAxNjAsIAorICAgIDIzNCwgMTUxLCAxLCAyMTMsIDI1MiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMzcsIDE5NSwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDcsIDM3LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDYyLCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDcyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDcwLCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDc0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDY2LCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwNCwgNDYsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjMyLCAKKyAgICAyNDAsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIxNiwgMjI2LCAyMTYsIDg4LCAyNDYsIDE2MCwgCisgICAgMjM0LCAxNTEsIDEsIDQ3LCAyMjcsIDExOCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjA3LCA4MywgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjIzLCAyNDMsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIAorICAgIDE1MSwgMSwgNDcsIDIyMCwgMjE0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAxNTYsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIwMSwgMTQ3LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAKKyAgICAyMTksIDI1NSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjAwLCAxMjMsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjEzLCAxOSwgMTUwLCAyMjQsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMywgCisgICAgMTksIDIwNSwgMTc0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMjM1LCAxMjMsIDIwOCwgNzYsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEzLCAxOSwgMTUwLCAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjEzLCAxOSwgMTUwLCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgCisgICAgOSwgMjM1LCAxMjMsIDIwOCwgNzcsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAxNTAsIAorICAgIDIyNCwgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAyMDUsIDE3NCwgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDE1MCwgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIAorICAgIDIxMiwgOSwgMTUwLCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyMSwgMjA1LCAyMDUsIDE3NCwgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMzUsIDEyMywgMjA4LCA3NywgMjAzLCA3MiwgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMjEsIDIwNSwgMTUwLCAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgCisgICAgMjIxLCAyMDUsIDE1MCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjQsIDU3LCAxNTAsIDIyNCwgCisgICAgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMjA1LCAxNzQsIDIxNiwgODgsIDI0NiwgMTYwLCAKKyAgICAyMzQsIDE1MSwgMjM1LCAxMjMsIDIwOCwgNzYsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMTUwLCAKKyAgICAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMTUwLCAyMzcsIDg5LCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIzNSwgMTIzLCAyMDgsIDc3LCAyMzcsIDg5LCAxNzQsIDEsIDYyLCAxNzQsIDEsIAorICAgIDI1MiwgMTM4LCAxNzQsIDEsIDcwLCAxNzQsIDEsIDIyOCwgMTUxLCAxNzQsIDEsIDY2LCAxNzQsIDEsIDIwMywgMTgyLCAKKyAgICAxNzQsIDEsIDEwOSwgMTQ2LCAxNzQsIDEsIDEwOSwgMjEyLCAyMTYsIDE3NCwgMSwgMTA5LCAxNTYsIDE3NCwgMSwgNzIsIAorICAgIDE3NCwgMSwgMjUxLCAxNzYsIDE3NCwgMSwgNzQsIDE3NCwgMSwgMjUwLCAxMzksIDE3NCwgMSwgMTYxLCAxNzQsIDEsIDIyNiwgCisgICAgMjA3LCAxNzQsIDEsIDIzNiwgODksIDE3NCwgMSwgMjM1LCAxOTksIDE3NCwgMSwgMjE5LCAyNTMsIDE3NCwgMSwgMjQ3LCAKKyAgICAxOTAsIDE3NCwgMSwgMjQ3LCAzNywgMTc0LCAxLCAyMjcsIDI0OCwgMTc0LCAxLCAyMjcsIDIxNSwgMTc0LCAxLCAyMTgsIAorICAgIDYwLCAxNzQsIDEsIDIwNCwgMjUzLCAxNzQsIDEsIDIwNCwgMjQxLCAxNzQsIDEsIDI0MSwgMjIwLCAxNzQsIDEsIDI0MSwgCisgICAgMjA0LCAxNzQsIDEsIDIxOSwgMjEsIDE3NCwgMSwgMjA3LCAzNiwgMTc0LCAxLCAyMDYsIDEyMiwgMTc0LCAxLCAyNDIsIDU4LCAKKyAgICAxNzQsIDEsIDI0MSwgMTAwLCAxNzQsIDEsIDE4OCwgMTc0LCAxLCAxNzIsIDE3NCwgMSwgMjE1LCAyNDUsIDE3NCwgMSwgCisgICAgMjQ5LCAxMzYsIDE3NCwgMSwgMjQ4LCAyMDAsIDE3NCwgMSwgMTc4LCAxNzQsIDEsIDE4MywgMTc0LCAxLCAyMTMsIDI1MiwgCisgICAgMTc0LCAxLCAxOTQsIDE3NCwgMSwgMjAzLCA5MCwgMTc0LCAxLCAyMTAsIDExNCwgMTc0LCAxLCAyMDgsIDE3OSwgMTc0LCAxLCAKKyAgICAyMTIsIDY0LCAxNzQsIDEsIDE0NCwgMTc0LCAyMiwgMiwgMjUyLCAxMzgsIDE3NCwgMjIsIDIsIDcwLCAxNzQsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTc0LCAyMiwgMiwgNjYsIDE3NCwgMjIsIDIsIDIwMywgMTgyLCAxNzQsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTc0LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTc0LCAyMiwgMiwgMTA5LCAxNTYsIDE3NCwgMjIsIDIsIDcyLCAxNzQsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgMTc0LCAyMiwgMiwgNzQsIDE3NCwgMjIsIDIsIDI1MCwgMTM5LCAxNzQsIDIsIDI0NywgMTQ5LCAxNzQsIAorICAgIDIsIDI1MSwgMzMsIDE3NCwgMiwgMjAyLCAyMDMsIDE3NCwgMiwgMjAyLCAyMDgsIDE3NCwgMiwgMjUwLCAxMjIsIDE3NCwgCisgICAgMjQyLCAxMCwgMTc0LCA1MywgMjQyLCAxMCwgMTc0LCAyMDAsIDIzOCwgMjEwLCAxNTQsIDE3NCwgMjM2LCA1MywgMjM3LCAKKyAgICA5MiwgMTc0LCAyMzYsIDUzLCAyMzcsIDkxLCAxNzQsIDE3LCAxOTksIDgxLCAxNzQsIDE3LCAxMDIsIDE3NCwgMTcsIDEwNSwgCisgICAgMTc0LCAxNywgMTQ3LCAxNzQsIDE3LCAxNDksIDE3NCwgMTcsIDE2NCwgMTc0LCAxNywgMTg3LCAxNzQsIDE3LCAyMTAsIAorICAgIDEzNSwgMTc0LCAxNywgMTkyLCAxNzQsIDE3LCAyMTksIDExMywgMTc0LCA0MSwgMTAyLCAxNzQsIDQxLCAxMDUsIDE3NCwgCisgICAgNDEsIDE0NywgMTc0LCA0MSwgMTQ5LCAxNzQsIDQxLCAxNjQsIDE3NCwgNDEsIDE4NywgMTc0LCA0MSwgMjEwLCAxMzUsIAorICAgIDE3NCwgNDEsIDE5MiwgMTc0LCA0MSwgMjE5LCAxMTMsIDE3NCwgNDEsIDIwNiwgMTY2LCAxNzQsIDQxLCAyMDQsIDE1OSwgCisgICAgMTc0LCA0MSwgMjA2LCA2NywgMTc0LCA0MSwgMjM2LCAyMzUsIDE3NCwgNDEsIDIzNywgMTA0LCAxNzQsIDQxLCAyMDksIDkyLCAKKyAgICAxNzQsIDQxLCAyMTAsIDEyOSwgMTc0LCA0MSwgMjM4LCAyMjIsIDE3NCwgNDEsIDIxOSwgMTA4LCAxNzQsIDIzMywgODEsIAorICAgIDIwMywgMjQwLCA4MSwgMjIyLCAxNTEsIDIzNCwgMTM3LCA4MSwgMjIyLCAxNTEsIDEzNCwgMjEwLCAxMDYsIDIyMiwgMTUxLCAKKyAgICAxLCAxNjEsIDIyMiwgMTUxLCAxLCAyMjYsIDIwNywgMjIyLCAxNTEsIDEsIDIzNiwgODksIDIyMiwgMTUxLCAxLCAyMTksIAorICAgIDI1MywgMjIyLCAxNTEsIDEsIDI0NywgMTkwLCAyMjIsIDE1MSwgMSwgMjQ3LCAzNywgMjIyLCAxNTEsIDEsIDIyNywgMjQ4LCAKKyAgICAyMjIsIDE1MSwgMSwgMjE4LCA2MCwgMjIyLCAxNTEsIDEsIDIwNywgMzYsIDIyMiwgMTUxLCAxLCAyMDYsIDEyMiwgMjIyLCAKKyAgICAxNTEsIDEsIDI0MiwgNTgsIDIyMiwgMTUxLCAxLCAxODgsIDIyMiwgMTUxLCAxLCAxNzIsIDIyMiwgMTUxLCAxLCAyMTUsIAorICAgIDI0NSwgMjIyLCAxNTEsIDEsIDI0OSwgMTM2LCAyMjIsIDE1MSwgMSwgMTc4LCAyMjIsIDE1MSwgMSwgMjA1LCAzMiwgMjIyLCAKKyAgICAxNTEsIDEsIDIwNSwgMjIsIDIyMiwgMTUxLCAxLCAyMzksIDkzLCAyMjIsIDE1MSwgMSwgMjAxLCAxMTQsIDIyMiwgMTUxLCAKKyAgICAxLCAxOTksIDc3LCAyMjIsIDE1MSwgMSwgMTk5LCAxMTQsIDIyMiwgMTUxLCAxLCAyNTUsIDE0MiwgMjIyLCAxNTEsIDEsIAorICAgIDE4MywgMjIyLCAxNTEsIDEsIDIxMywgMjUyLCAyMjIsIDE1MSwgMSwgMTk0LCAyMjIsIDE1MSwgMSwgMjEwLCAxMTQsIDIyMiwgCisgICAgMTUxLCAxLCAyMTIsIDY0LCAyMjIsIDE1MSwgMSwgMTQ0LCAyMjIsIDE1MSwgMSwgNjIsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAKKyAgICAxNjEsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMjYsIDIwNywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIzNiwgODksIDIyMiwgCisgICAgMTUxLCAyMDgsIDEyLCAxLCAyMTksIDI1MywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDI0NywgMTkwLCAyMjIsIDE1MSwgMjA4LCAKKyAgICAxMiwgMSwgMjQ3LCAzNywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIyNywgMjQ4LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgCisgICAgMjE4LCA2MCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIwNywgMzYsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMDYsIDEyMiwgCisgICAgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDI0MiwgNTgsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxODgsIDIyMiwgMTUxLCAyMDgsIAorICAgIDEyLCAxLCAxNzIsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTUsIDI0NSwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDI0OSwgCisgICAgMTM2LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTc4LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjA1LCAzMiwgMjIyLCAxNTEsIAorICAgIDIwOCwgMTIsIDEsIDIwNSwgMjIsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMzksIDkzLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgCisgICAgMjAxLCAxMTQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxOTksIDc3LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTk5LCAxMTQsIAorICAgIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxODMsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgMjIyLCAxNTEsIDIwOCwgCisgICAgMTIsIDEsIDE5NCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxMCwgMTE0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjEyLCAKKyAgICA2NCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE0NCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDYyLCAyMjIsIDE1MSwgMjIsIDIsIAorICAgIDI1MiwgMTM4LCAyMjIsIDE1MSwgMjIsIDIsIDcwLCAyMjIsIDE1MSwgMjIsIDIsIDY2LCAyMjIsIDE1MSwgMjIsIDIsIDcyLCAKKyAgICAyMjIsIDE1MSwgMjIsIDIsIDc0LCAyMjIsIDE1MSwgMiwgMjUxLCAzMywgMjIyLCAxNTEsIDIsIDI0NywgMTQ5LCAxMCwgMiwgCisgICAgNjIsIDEwLCAyLCAzNSwgMjQsIDYyLCAxMCwgMiwgMzUsIDI0LCAyNDksIDExOCwgMTAsIDIsIDM1LCAyNCwgMjM2LCA1OCwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAzNSwgMjQsIDE0NCwgMTAsIDIsIDM1LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAzNSwgMjQsIAorICAgIDIyNSwgMTU2LCAyMzUsIDI4LCAxMCwgMiwgMzUsIDI0LCAyMjAsIDI1MCwgMTAsIDIsIDM1LCAyNCwgMjEyLCA1MCwgMTAsIAorICAgIDIsIDI1NCwgMTQ3LCAxMCwgMiwgMjUyLCA4OSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDI1MiwgCisgICAgOTAsIDI0LCAyMzksIDEyNCwgMjM1LCAyOCwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMzYsIDcxLCAxMCwgMiwgMjUyLCA5MCwgCisgICAgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDE0NCwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMjgsIDEyNywgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMjUsIDE1NywgCisgICAgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMTAsIDQ5LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDY2LCAKKyAgICAxMCwgMiwgMjUyLCA5MCwgMjM1LCAyOCwgMTAsIDIsIDI1MiwgNiwgMTAsIDIsIDI1MiwgNywgMjQsIDI0OSwgOTgsIDEwLCAKKyAgICAyLCAyNTIsIDcsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDI1MiwgNywgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIAorICAgIDE3OSwgMTAsIDIsIDI1MiwgNywgMjQsIDIxMCwgMTEyLCAxMCwgMiwgMjUyLCA3LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjUxLCAKKyAgICAyMzUsIDEwLCAyLCAyNTEsIDE1OSwgMTAsIDIsIDI1MSwgMTYwLCAyNCwgMjM4LCAxMDksIDEwLCAyLCAyNTEsIDE2MCwgMjQsIAorICAgIDIxMCwgMTEsIDkzLCAyMzUsIDEzNSwgMTAsIDIsIDI1MSwgMTUxLCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyNTEsIDE1MSwgCisgICAgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjQxLCAyOSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyNTEsIAorICAgIDE1MiwgMjQsIDE0NCwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjI3LCA5MSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjI2LCAKKyAgICAxNjMsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIwMywgMTkwLCAxMCwgMiwgCisgICAgMjUxLCAxNDgsIDEwLCAyLCAyNTEsIDE0MCwgMTAsIDIsIDI1MSwgOTcsIDEwLCAyLCAyNTEsIDk4LCAyNCwgMjEwLCA2NSwgCisgICAgMTAsIDIsIDI1MSwgODUsIDEwLCAyLCAyNTEsIDg2LCAxMTksIDI1MSwgODUsIDEwLCAyLCAyNTEsIDg2LCAxMjYsIDIwNSwgCisgICAgMjMyLCAxMCwgMiwgMjUxLCA4NiwgOTMsIDIyMCwgMTQ4LCAyMTcsIDQwLCAyNTEsIDg2LCA5MywgMjIwLCAxNDcsIDEwLCAyLCAKKyAgICAyNTEsIDg2LCA5MywgMjIwLCAxNDgsIDIwOCwgMTkyLCAxMCwgMiwgMjUxLCA1MywgMTAsIDIsIDI1MSwgMjMsIDEwLCAyLCAKKyAgICAyNTAsIDI0NiwgMTAsIDIsIDI1MCwgMjQ3LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyNTAsIDIxOCwgMTAsIDIsIDI1MCwgCisgICAgMTg2LCAxMCwgMiwgMjUwLCAxODEsIDEwLCAyLCAyNTAsIDE4MiwgMTk5LCAzMiwgMjA2LCAxNTUsIDEwLCAyLCAyNTAsIAorICAgIDE4MiwgMjI3LCA5NSwgMjA2LCAxNTUsIDEwLCAyLCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMjA0LCAyMTAsIDExOSwgCisgICAgMjA0LCAyMTAsIDIwNCwgMjEwLCAxMTksIDIwNCwgMjEwLCAyMTYsIDEzNSwgMTAsIDIsIDI1MCwgMTgyLCAxMTksIDI1MCwgCisgICAgMTgyLCAxMTksIDI1MCwgMTgxLCAxMCwgMiwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDI0MiwgCisgICAgMjI4LCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MSwgMTAsIDIsIDI1MCwgMTc5LCAxMCwgMiwgMjUwLCAKKyAgICAxNzUsIDEwLCAyLCAyNDksIDEzNiwgMTAsIDIsIDI0OSwgMTE4LCAxMCwgMiwgMjQ5LCAxMTIsIDEwLCAyLCAyNDksIDEwNSwgCisgICAgMTAsIDIsIDI0OSwgOTksIDEwLCAyLCAyNDksIDEwMCwgMTE5LCAyNDksIDk5LCAxMCwgMiwgMjQ5LCA5OCwgMTAsIDIsIAorICAgIDE0OCwgMTAsIDIsIDI0OSwgNzYsIDEwLCAyLCAyNDgsIDE4OCwgMTAsIDIsIDI0OCwgMTg5LCAyNCwgNjIsIDEwLCAyLCAKKyAgICAyNDgsIDE4OSwgMjQsIDIzNiwgNDksIDEwLCAyLCAyNDgsIDE4OSwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjQ4LCAzNiwgMTAsIDIsIDI0OCwgMzcsIDExOSwgMjQ4LCAzNywgMjUyLCA4OSwgMTAsIDIsIDI0OCwgMzcsIDExOSwgMjQ4LCAKKyAgICAzNywgMjA0LCA1LCAxMCwgMiwgMjQ4LCAzNywgMjQyLCAyMjgsIDI0OCwgMzYsIDEwLCAyLCAyNDgsIDE0LCAxMCwgMiwgCisgICAgMjQ4LCAxNSwgMTE5LCAyNDgsIDE0LCAxMCwgMiwgMjQ4LCAzLCAxMCwgMiwgMjQ4LCAyLCAxMCwgMiwgMjQyLCA1OCwgMTAsIAorICAgIDIsIDI0MiwgNDgsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDM1LCA5MywgMjIyLCAxMzUsIDEwLCAyLCAyNDIsIAorICAgIDQ5LCAyMjYsIDEzMiwgMjQsIDI1MSwgOTcsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDI0OSwgOTgsIDEwLCAyLCAKKyAgICAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMzYsIDg5LCAKKyAgICAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMzYsIDkwLCA5MywgMjIyLCAxMzUsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIAorICAgIDEzMiwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMzUsIDE0MywgMTAsIDIsIDI0MiwgCisgICAgNDksIDIyNiwgMTMyLCAyNCwgMjM1LCAzOSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMTQ0LCAxMCwgMiwgMjQyLCAKKyAgICA0OSwgMjI2LCAxMzIsIDI0LCAyMjgsIDM1LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjgsIDM2LCA5MywgCisgICAgMjI0LCA0MiwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI3LCA3NiwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAKKyAgICAyNCwgMTk0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIAorICAgIDI0LCAyMjQsIDQzLCA5MywgMjIyLCAxMzQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyNCwgMjUsIDEwLCAyLCAKKyAgICAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyMCwgMzQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIxNiwgMTM2LCAKKyAgICA5MywgMjE2LCAxMzUsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwOSwgMTgyLCAxMCwgMiwgMjQyLCA0OSwgCisgICAgMjI2LCAxMzIsIDI0LCAyMDcsIDAsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwNCwgNDgsIDkzLCAyMzUsIAorICAgIDE0MywgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjAzLCAxOTAsIDEwLCAyLCAyNDIsIDIwLCAxMCwgMiwgMjQxLCAKKyAgICAyNTQsIDEwLCAyLCAyNDEsIDI1MywgMTAsIDIsIDI0MSwgMjUyLCAxMCwgMiwgMjQxLCA3NiwgMTAsIDIsIDI0MSwgNTgsIAorICAgIDEwLCAyLCAyNDEsIDMxLCAxMCwgMiwgMjQxLCAzMiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyNDEsIDI5LCAxMCwgMiwgMjQxLCAKKyAgICAxOSwgMTAsIDIsIDI0MSwgMjAsIDIyNywgMzksIDEwOCwgMjM1LCAyOSwgMjQwLCAyNTUsIDEwLCAyLCAyNDAsIDI1NSwgMTAsIAorICAgIDIsIDIzOSwgMTM3LCAxMCwgMiwgMjM5LCAxMzgsIDExOSwgMjM5LCAxMzcsIDEwLCAyLCAyMzksIDEzOCwgMjM1LCAyOCwgCisgICAgMTAsIDIsIDIzOSwgMTM4LCAyMTAsIDQ2LCAxMCwgMiwgMjM5LCAxMzUsIDEwLCAyLCAyMzksIDEzNiwgMjQsIDIzOCwgOTEsIAorICAgIDEwLCAyLCAyMzksIDEzNCwgMTAsIDIsIDIzOSwgMTMxLCAxMCwgMiwgMjM5LCAxMzAsIDEwLCAyLCAyMzksIDEyOSwgMTAsIAorICAgIDIsIDIzOSwgMTI1LCAxMCwgMiwgMjM5LCAxMjMsIDEwLCAyLCAyMzksIDEyNCwgMjM1LCAyOCwgMTAsIDIsIDIzOSwgMTI0LCAKKyAgICAyMzUsIDI5LCAyMzUsIDI4LCAxMCwgMiwgMjM5LCAxMjIsIDEwLCAyLCAyMzksIDExNSwgMTAsIDIsIDcyLCAxMCwgMiwgCisgICAgMTk3LCAyNCwgMjE2LCAxMzUsIDEwLCAyLCAxOTcsIDExOSwgMTk3LCAyMTgsIDkwLCAxMTksIDIxOCwgODksIDEwLCAyLCAKKyAgICAyMzksIDI4LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDM1LCA5MywgMjM0LCAyMzYsIDkzLCAyNDIsIDU4LCAxMCwgMiwgMjM5LCAKKyAgICAyOSwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMzksIDI5LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjEyLCAKKyAgICAzNSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDY2LCAxMCwgMiwgMjM5LCAxLCAKKyAgICAxMCwgMiwgMjM4LCAyNDUsIDEwLCAyLCAyMzgsIDIwOSwgMTAsIDIsIDIzOCwgMTc5LCAxMCwgMiwgMjM4LCAxODAsIDI0LCAKKyAgICAyMzYsIDU3LCAxMCwgMiwgMjM4LCAxODAsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzOCwgMTgwLCAyNCwgCisgICAgMjIyLCA3NiwgMTAsIDIsIDIzOCwgMTgwLCAyNDIsIDIyOCwgMjM4LCAxNzksIDEwLCAyLCAyMzgsIDE4MCwgMjE3LCA0MCwgCisgICAgMjM4LCAxNzksIDEwLCAyLCAyMzgsIDE4MCwgMjA4LCAxOTIsIDEwLCAyLCAyMzgsIDExMiwgMTAsIDIsIDIzOCwgMTA5LCAKKyAgICAxMCwgMiwgMjM4LCA5MSwgMTAsIDIsIDIzOCwgMTAsIDEwLCAyLCAyMzgsIDExLCAyNCwgNjIsIDEwLCAyLCAyMzgsIDExLCAKKyAgICAyNCwgMzUsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDM1LCA5MywgMjI1LCA5NCwgMjQsIDIyNSwgOTMsIAorICAgIDEwLCAyLCAyMzgsIDExLCAyNCwgMjUxLCA4NSwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzOCwgCisgICAgMTEsIDI0LCAyMzksIDEyNCwgMjM1LCAyOCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMzksIDEyNCwgMjM1LCAyOSwgMjM1LCAKKyAgICAyOCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAxNDQsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjM0LCAyMzYsIDIzNSwgMjgsIDEwLCAKKyAgICAyLCAyMzgsIDExLCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI3LCAzOCwgMTAsIDIsIAorICAgIDIzOCwgMTEsIDI0LCAyMjcsIDM5LCAyMDgsIDE5MiwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjYsIDEzLCAxMCwgMiwgMjM4LCAKKyAgICAxMSwgMjQsIDE5NCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjUsIDk0LCAyNCwgMjI1LCA5MywgMTAsIDIsIDIzOCwgMTEsIAorICAgIDI0LCAyMjQsIDIxMCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIwNCwgNDcsIAorICAgIDEwLCAyLCAyMzgsIDExLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzNiwgODksIDEwLCAyLCAyMzYsIDkwLCAyMzUsIDI4LCAxMCwgCisgICAgMiwgMjM2LCA4NywgMTAsIDIsIDIzNiwgODgsIDI0LCAzNSwgOTMsIDI0MiwgNTksIDkzLCAxNDQsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMzUsIDkzLCAxNDQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMzUsIDkzLCAyMjgsIDE1MywgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyNTIsIDcsIDIwNiwgMTU2LCA5MywgMjA3LCAyNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNTEsIDg1LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI1MCwgMTgwLCA5MywgMjM2LCA3MSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDksIDc3LCA5MywgMjEzLCAyNTIsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQ4LCAzLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0OCwgNCwgOTMsIDIxMywgMjUyLCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0MiwgNTgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQxLCA3NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyNDEsIDMyLCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzksIDEzNSwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMzgsIDIwOSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzgsIDIxMCwgOTMsIDE5NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzgsIAorICAgIDE3OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzgsIDE4MCwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjM1LCAxNjEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM1LCAxNTksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM1LCAxNjAsIDkzLCAKKyAgICA2MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzUsIDE0NCwgOTMsIDIwOCwgMjQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM0LCAKKyAgICAyMzYsIDkzLCAyMjQsIDQzLCA5MywgMjM4LCA5MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzQsIDIxNiwgMTAsIDIsIDIzNiwgCisgICAgODgsIDI0LCAyMzQsIDIxNywgOTMsIDE5NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzQsIDc2LCA5MywgMjI0LCAyMTAsIDEwLCAKKyAgICAyLCAyMzYsIDg4LCAyNCwgMjMzLCA5MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjgsIDIxLCA5MywgMjMzLCA5OCwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNywgCisgICAgNzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjYsIDE1NywgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjYsIDE1OCwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI2LCAxNCwgOTMsIDI1MSwgCisgICAgODUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMTk0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIDE3OSwgCisgICAgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjM2LCAKKyAgICA4OCwgMjQsIDIxOCwgOTAsIDExOSwgMjE4LCA4OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAxNzIsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjEyLCAzNSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTIsIDAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEwLCA2NSwgMTAsIAorICAgIDIsIDIzNiwgODgsIDI0LCAyMTAsIDY2LCA5MywgMjA0LCAxOTIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEwLCAzMSwgMTAsIAorICAgIDIsIDIzNiwgODgsIDI0LCAyMDcsIDIzNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgNjYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMDQsIDM3LCA5MywgMjM5LCAKKyAgICAxMzcsIDEwLCAyLCAyMzYsIDg4LCAxMTksIDIzNiwgODcsIDEwLCAyLCAyMzYsIDgyLCAxMCwgMiwgMjM2LCA4MywgMjQyLCAKKyAgICAyMjgsIDIzNiwgODIsIDEwLCAyLCAyMzYsIDgwLCAxMCwgMiwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAxMTksIAorICAgIDIzNiwgNDksIDEwLCAyLCAyMzYsIDcxLCAxMCwgMiwgMjM2LCA3MiwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAKKyAgICAxMTksIDIzNiwgNDksIDEwLCAyLCAyMzYsIDcwLCAxMCwgMiwgMjM2LCA2OCwgMTAsIDIsIDIzNiwgNTksIDEwLCAyLCAyMzYsIAorICAgIDU3LCAxMCwgMiwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzYsIDU4LCAxMTksIDIzNiwgNTcsIDEwLCAyLCAyMzYsIAorICAgIDU4LCAyNDIsIDIyOCwgMjM2LCA1NywgMTAsIDIsIDIzNiwgNDksIDEwLCAyLCAyMzYsIDQ4LCAxMCwgMiwgMjM2LCA0MywgCisgICAgMTAsIDIsIDIzNSwgMjQyLCAxMCwgMiwgMjM1LCAyNDMsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzNSwgMTYxLCAxMCwgMiwgCisgICAgMjM1LCAxNjIsIDI0LCA3MiwgMTAsIDIsIDIzNSwgMTYyLCAyNCwgNjYsIDEwLCAyLCAyMzUsIDE2MiwgMjQyLCAyMjgsIAorICAgIDIzNSwgMTYxLCAxMCwgMiwgMjM1LCAxNTksIDEwLCAyLCAyMzUsIDE2MCwgMTE5LCAyMzUsIDE1OSwgMTAsIDIsIDIzNSwgCisgICAgMTYwLCAyNDIsIDIyOCwgMjM1LCAxNTksIDEwLCAyLCAyMzUsIDE1NiwgMTAsIDIsIDIzNSwgMTQzLCAxMCwgMiwgMjM1LCAKKyAgICAxNDQsIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDE0MSwgMTAsIDIsIDIzNSwgMTQyLCAyNCwgMzUsIDkzLCAyMjgsIDE1MywgMTAsIAorICAgIDIsIDIzNSwgMTQyLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzUsIDE0MiwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgCisgICAgMjM1LCAxNDIsIDI0LCAyMjQsIDQzLCA5MywgMjI4LCAxNTMsIDEwLCAyLCAyMzUsIDE0MiwgMjQsIDE3MiwgMTAsIDIsIAorICAgIDIzNSwgMTM3LCAxMCwgMiwgMjM1LCAxMzUsIDEwLCAyLCAyMzUsIDEzNiwgMjQyLCAyMjgsIDIzNSwgMTM1LCAxMCwgMiwgCisgICAgMjM1LCAxMzYsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzNSwgMTM2LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjM1LCAxMzYsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMjM1LCA1MCwgMTAsIDIsIDIzNSwgNTEsIDI0MiwgMjI4LCAyMzUsIDUwLCAxMCwgMiwgMjM1LCAKKyAgICA0OCwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIyNywgNzcsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIxMiwgMzYsIAorICAgIDkzLCAyMDQsIDIwOSwgMTAsIDIsIDIzNSwgNDksIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDM5LCAxMCwgMiwgMjM1LCA0MCwgCisgICAgMjQsIDM1LCA5MywgMjI1LCAyNDUsIDEwLCAyLCAyMzUsIDQwLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzUsIDQwLCAxMTksIAorICAgIDIzNSwgNDAsIDIyNCwgMzMsIDEwLCAyLCAyMzUsIDMyLCAxMCwgMiwgMjM1LCAzMCwgMTAsIDIsIDIzNSwgMzEsIDI0LCAKKyAgICAyMTAsIDY1LCAxMCwgMiwgMjM1LCAyMiwgMTAsIDIsIDIzNSwgMjEsIDEwLCAyLCAyMzUsIDE3LCAxMCwgMiwgMjM1LCAxNiwgCisgICAgMTAsIDIsIDE0NCwgMTAsIDIsIDIzNCwgMjM2LCAyMDYsIDE1NSwgMTAsIDIsIDIzNCwgMjM2LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjM0LCAyMTYsIDEwLCAyLCAyMzQsIDc1LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM0LCA3NiwgCisgICAgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI0MCwgMjU1LCAKKyAgICAxMCwgMiwgMjM0LCA3NiwgMjQsIDIzNiwgODAsIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjI2LCAxNDcsIDEwLCAyLCAyMzQsIAorICAgIDc2LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDY2LCAxMCwgCisgICAgMiwgMjMzLCA5NywgMTAsIDIsIDIzMywgOTIsIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjUxLCA4NSwgMTAsIDIsIDIzMywgOTMsIAorICAgIDI0LCAyMzQsIDIxNiwgMTAsIDIsIDIzMywgOTMsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjMzLCA5MywgMjQsIDIyNCwgMTU0LCAKKyAgICAxMCwgMiwgMjMzLCA5MywgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzMsIDg4LCAxMCwgMiwgNzAsIDEwLCAyLCAyMzMsIDE5LCAKKyAgICA2MiwgMTAsIDIsIDIzMiwgMjM1LCAxMCwgMiwgMjI4LCAxODEsIDEwLCAyLCAyMjgsIDE4MiwgMTE5LCAyMjgsIDE4MiwgCisgICAgMjQ4LCAzLCAxMCwgMiwgMjI4LCAxODIsIDExOSwgMjI4LCAxODIsIDIwOCwgMTkyLCAxMCwgMiwgMjI4LCAxNTYsIDEwLCAyLCAKKyAgICAyMjgsIDE1MywgMTAsIDIsIDIyOCwgMTU0LCAyNDEsIDU4LCAxMCwgMiwgMjI4LCAxNTQsIDIxMywgODgsIDEwLCAyLCAyMjgsIAorICAgIDE1NCwgMTE5LCAyMjgsIDE1NCwgMjEwLCAxNSwgMTE5LCAyMTAsIDE1LCAyMDQsIDM3LCAxMTksIDIwNCwgMzYsIDEwLCAyLCAKKyAgICAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIyOCwgMTQ1LCAxMCwgMiwgMjI4LCAxNDYsIDI0LCAyMzYsIDU4LCAyMDYsIAorICAgIDE1NSwgMTAsIDIsIDIyOCwgMTQ0LCAxMCwgMiwgMjI4LCAxMzQsIDEwLCAyLCAyMjgsIDEzNSwgMjQsIDIwNywgMCwgMTAsIAorICAgIDIsIDIyOCwgMTM1LCAyNDIsIDIyOCwgMjI4LCAxMzQsIDEwLCAyLCAyMjgsIDEzNSwgMjE3LCA0MCwgMjI4LCAxMzQsIDEwLCAKKyAgICAyLCAyMjgsIDEzNSwgMjA4LCAxOTIsIDEwLCAyLCAyMjgsIDEyNywgMTAsIDIsIDIyOCwgMTE3LCAxMCwgMiwgMjI4LCAzNSwgCisgICAgMTAsIDIsIDIyOCwgMjAsIDEwLCAyLCAxNjEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDYyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyNTEsIDIzNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjUxLCAyMzYsIDkzLCAyMjYsIDEzLCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OSwgCisgICAgOTgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE0OCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIzOCwgMTA5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzgsIDkxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyMzYsIDg5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDcxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDU4LCAyMDYsIAorICAgIDE1NSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA1MCwgOTMsIDIxMCwgCisgICAgMTEzLCA5MywgNjIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIAorICAgIDE0MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAxMzYsIDkzLCAyMTIsIDAsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgCisgICAgMTM2LCAyNDIsIDIyOCwgMjM1LCAxMzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgNTAsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIzNSwgMjEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjgsIAorICAgIDEzNCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI2LCAxNjMsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDIyNiwgMTU3LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjQsIDIxMCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjI0LCA0MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIyLCA3NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIyLCA3NywgCisgICAgOTMsIDIzOSwgMTM3LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjIsIDc3LCA5MywgMjM1LCAxNjEsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIyMiwgNzcsIDkzLCAyMDYsIDIwMSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDIyMSwgMjEyLCA5MywgMjE4LCA4NCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIwLCAzNCwgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjE1LCAyMDQsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIxMiwgMTc1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTIsIDY0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTIsIDAsIAorICAgIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxMCwgMTE0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMTAsIDMxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDksIDIyMCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjA5LCAxNjgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNywgMjQzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDYsIDIzMiwgCisgICAgMTAsIDIsIDIyNywgMTA4LCAyNCwgNjYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNCwgNDcsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNCwgOCwgMjQsIDE3MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjAzLCAxOTAsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE5OSwgMzYsIDEwLCAyLCAyMjcsIDEwNiwgMTAsIDIsIDIyNywgMTA3LCAKKyAgICAyNDIsIDIyOCwgMjI3LCAxMDYsIDEwLCAyLCAyMjcsIDk2LCAxMCwgMiwgMjI3LCA5MywgMTAsIDIsIDIyNywgOTEsIDEwLCAKKyAgICAyLCAyMjcsIDkwLCAxMCwgMiwgMjI3LCA4OCwgMTAsIDIsIDIyNywgODksIDExOSwgMjI3LCA4OCwgMTAsIDIsIDIyNywgNzYsIAorICAgIDEwLCAyLCAyMjcsIDc3LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMjcsIDcyLCAxMCwgMiwgMjI3LCA3MywgCisgICAgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI3LCA3MywgMjQyLCAyMjgsIDIyNywgNzIsIDEwLCAyLCAyMjcsIDcwLCAxMCwgMiwgCisgICAgMjI3LCA2OSwgMTAsIDIsIDIyNywgMzgsIDEwLCAyLCAyMjcsIDM5LCAyMjUsIDE1OCwgMjQsIDEwOCwgMTE5LCAyMjUsIAorICAgIDE1OCwgMjQsIDY2LCAxMCwgMiwgMjI3LCAzOSwgMTE5LCAyMjcsIDM5LCAyMjUsIDE1OCwgMjQsIDEwOCwgMTE5LCAyMjUsIAorICAgIDE1OCwgMjQsIDY2LCAxMCwgMiwgMjI2LCAyMzQsIDEwLCAyLCAyMjYsIDE2MywgMTAsIDIsIDIyNiwgMTY0LCAyNCwgMjQ5LCAKKyAgICAxMTgsIDEwLCAyLCAyMjYsIDE2NCwgMjQsIDY2LCAxMCwgMiwgMjI2LCAxNjQsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI2LCAKKyAgICAxNTcsIDEwLCAyLCAyMjYsIDE0NywgMTAsIDIsIDIyNiwgMTM0LCAxMCwgMiwgMjI2LCAxMzMsIDEwLCAyLCAyMjYsIDEzMSwgCisgICAgMTAsIDIsIDIyNiwgMTMyLCAxMTksIDIyNiwgMTMxLCAxMCwgMiwgMjI2LCAxNSwgMTAsIDIsIDIyNiwgMTYsIDExOSwgMjM0LCAKKyAgICA3NiwgMjQsIDI1MCwgMTgwLCAyMjYsIDE2LCAxMTksIDIzNCwgNzYsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIyNiwgMTMsIAorICAgIDEwLCAyLCAyMjYsIDExLCAxMCwgMiwgMjI2LCAxMiwgMjAzLCA3MywgMTksIDEwLCAyLCAyMjYsIDEwLCAxMCwgMiwgMjI2LCAKKyAgICAyLCAxMCwgMiwgMjI2LCAzLCAyMzUsIDI4LCAxMCwgMiwgMjI2LCAxLCAxMCwgMiwgMjI1LCAyNDUsIDEwLCAyLCAyMjUsIAorICAgIDI0NiwgMjE3LCA0MCwgMjI1LCAyNDUsIDEwLCAyLCAyMjUsIDIzOSwgMTAsIDIsIDIyNSwgMjE3LCAxMCwgMiwgMTk0LCAxMCwgCisgICAgMiwgMjI1LCAxNTcsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDYyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAzNSwgOTMsIDI0MiwgCisgICAgNTksIDkzLCAxNDQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDM1LCA5MywgMjM2LCA0OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgCisgICAgMzUsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNTEsIDE1MSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjUxLCAKKyAgICA4NSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjUwLCAxODIsIDE5OSwgMzIsIDIwNiwgMTU1LCAxMCwgMiwgMjI1LCAxNTgsIAorICAgIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI0MSwgCisgICAgMjU0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzgsIDE3OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM2LCA4OSwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgCisgICAgMjM1LCA0MCwgOTMsIDIzNSwgMzksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDE0NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM0LCAKKyAgICAyMTYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNCwgNzYsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAxMzQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgCisgICAgMTM1LCA5MywgMTQ0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIDEzNSwgOTMsIDIyNCwgNDIsIDEwLCAyLCAyMjUsIAorICAgIDE1OCwgMjQsIDIyNiwgMTYzLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjYsIDE0NywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgCisgICAgMjI2LCAxMywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI2LCAyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjYsIDMsIDkzLCAKKyAgICAyMzQsIDc2LCA5MywgNjIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNSwgMTU3LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjQsIAorICAgIDE1NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI0LCA0MiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI0LCAyNywgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMjIyLCA3NiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjIyLCA3NywgOTMsIDIzOCwgMTc5LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAyMjAsIDI1MCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIyNSwgMTU4LCAKKyAgICAyNCwgMjEwLCA2NiwgOTMsIDIwNywgMjM0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMTAsIDExLCA5MywgMjM1LCAxMzYsIAorICAgIDkzLCAyMzgsIDEwOSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjEwLCAxMSwgOTMsIDIzNSwgMTM2LCAyMDYsIDE1NSwgMTAsIAorICAgIDIsIDIyNSwgMTU4LCAyNCwgMjA5LCAyMTgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwOSwgMjE5LCA5MywgMjA5LCAyMTgsIAorICAgIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNywgMjM0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDcsIDEzLCAxMCwgMiwgMjI1LCAKKyAgICAxNTgsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNiwgMjAyLCA5MywgMzUsIDkzLCAyMDgsIDI1LCA5MywgCisgICAgMTg4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCA2NiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMTA4LCA5MywgNjIsIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDY2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDQsIDQ4LCA5MywgCisgICAgMjUwLCAxODEsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwMywgMTkwLCAKKyAgICAxMCwgMiwgMjI1LCAxNTgsIDIwOCwgMTkyLCAxMCwgMiwgMjI1LCAxNTUsIDEwLCAyLCAyMjUsIDE1NiwgMjQsIDIxMCwgNjUsIAorICAgIDEwLCAyLCAyMjUsIDE1NiwgMjQsIDIxMCwgNjYsIDkzLCAyMDcsIDIzNCwgMTAsIDIsIDIyNSwgMTU2LCAyMzUsIDI4LCAxMCwgCisgICAgMiwgMjI1LCAxNTYsIDIzNSwgMjksIDExOSwgMjI1LCAxNTYsIDIzNSwgMjksIDIxMCwgNjUsIDEwLCAyLCAyMjUsIDE1MSwgCisgICAgMTAsIDIsIDIyNSwgOTMsIDEwLCAyLCAyMjUsIDk0LCAyNCwgMjI1LCA5MywgMTAsIDIsIDIyNSwgOTEsIDEwLCAyLCAyMjUsIAorICAgIDkyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMjUsIDkyLCAyNCwgMjI1LCAyNDYsIDkzLCAyMTIsIDE3NSwgMTAsIDIsIDIyNCwgCisgICAgMjEwLCAxMCwgMiwgMjI0LCAxOTEsIDEwLCAyLCAyMjQsIDE3OSwgMTAsIDIsIDIyNCwgMTU0LCAxMCwgMiwgMjI0LCA0MiwgCisgICAgMTAsIDIsIDIyNCwgNDMsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDAsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjUxLCAKKyAgICAxNTEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM4LCA5MSwgMTAsIDIsIAorICAgIDIyNCwgNDEsIDI0LCAyMzgsIDkyLCAyMDYsIDE1NSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgCisgICAgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzQsIDc2LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI4LCAxMzQsIAorICAgIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI3LCA5MywgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjcsIDkxLCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIyNywgOTIsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjYsIDE2MywgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMjUsIDE3NiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNSwgMTU3LCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIDE3OSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIxOCwgMTMzLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIwOSwgMTgzLCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjA5LCAxNjAsIDkzLCAyNDgsIDM2LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIwNCwgMjA5LCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAyMjQsIDQxLCAyNDIsIDIyOCwgMjI0LCA0MCwgMTAsIDIsIDIyNCwgNDEsIDIxNywgNDAsIAorICAgIDIyNCwgNDAsIDEwLCAyLCAyMjQsIDQxLCAyMDgsIDE5MiwgMTAsIDIsIDIyNCwgNDEsIDIxMCwgNDYsIDEwLCAyLCAyMjQsIAorICAgIDM5LCAxMCwgMiwgMjI0LCAzMywgMTAsIDIsIDIyNCwgMzQsIDExOSwgMjI0LCAzMywgMTAsIDIsIDIyNCwgMzQsIDIxNywgCisgICAgNDAsIDIyNCwgMzMsIDEwLCAyLCAyMjQsIDM0LCAyMTAsIDQ2LCAxMCwgMiwgMjI0LCAzMCwgMTAsIDIsIDIyNCwgMjcsIDEwLCAKKyAgICAyLCAyMjQsIDI1LCAxMCwgMiwgMjI0LCAyNiwgMTE5LCAyMjQsIDI1LCAxMCwgMiwgMjI0LCAyNiwgMTE5LCAyMjQsIDI2LCAKKyAgICAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAxNzgsIDEwLCAyLCAyMjIsIDIzNSwgMjQsIDIwNywgMCwgMTAsIDIsIAorICAgIDIyMiwgMjM1LCAyMzUsIDI4LCAxMCwgMiwgMjIyLCAyMzQsIDEwLCAyLCAyMjIsIDIwNiwgMTAsIDIsIDIyMiwgMTU4LCAxMCwgCisgICAgMiwgMjIyLCAxMzUsIDEwLCAyLCAyMjIsIDEzNCwgMTAsIDIsIDIyMiwgNzYsIDEwLCAyLCAyMjIsIDI4LCAxMCwgMiwgMjIxLCAKKyAgICAyMTEsIDEwLCAyLCAyMjEsIDE2NCwgMTAsIDIsIDIyMSwgNDEsIDEwLCAyLCAyMjEsIDQyLCAxMTksIDIyMSwgNDEsIDEwLCAKKyAgICAyLCAyMjEsIDMwLCAxMCwgMiwgMjIxLCAzMSwgMjM1LCAyOCwgMTAsIDIsIDIyMSwgMTIsIDEwLCAyLCAyMjAsIDI1NCwgMTAsIAorICAgIDIsIDIyMCwgMjUwLCAxMCwgMiwgMjIwLCAyNTEsIDI0LCA2MiwgMTAsIDIsIDIyMCwgMjUxLCAyNCwgMjI1LCAyNDUsIDEwLCAKKyAgICAyLCAyMjAsIDI1MSwgMjQsIDE5OSwgMTE0LCAxMCwgMiwgMjIwLCAyNTEsIDExOSwgMjIwLCAyNTAsIDEwLCAyLCAyMjAsIAorICAgIDI1MSwgMTE5LCAyMjAsIDI1MSwgMjQsIDM1LCA5MywgMTg4LCAxMCwgMiwgMjIwLCAyNTEsIDI0MiwgMjI4LCAyMjAsIDI1MCwgCisgICAgMTAsIDIsIDIyMCwgMjQ4LCAxMCwgMiwgMjIwLCAyNDksIDI0LCA2MiwgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgMzUsIDkzLCAKKyAgICAyNDEsIDc2LCAxMCwgMiwgMjIwLCAyNDksIDI0LCAyNDEsIDc2LCAxMCwgMiwgMjIwLCAyNDksIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAxODgsIDEwLCAyLCAyMjAsIDE2MCwgMTAsIDIsIDIyMCwgMTQ3LCAxMCwgMiwgMjIwLCAxNDgsIDIyOCwgNDksIDEwLCAyLCAKKyAgICAyMjAsIDE0OCwgMjQsIDIwOSwgMjIxLCAyMDYsIDE1NSwgMTAsIDIsIDIyMCwgMTQ4LCAyMTcsIDQwLCAyMjAsIDE0NywgMTAsIAorICAgIDIsIDIyMCwgMTQ2LCAxMCwgMiwgMjIwLCAxMzksIDIxOCwgNzUsIDEwLCAyLCAyMjAsIDEzOCwgMTAsIDIsIDIyMCwgMTM3LCAKKyAgICAxMCwgMiwgMjIwLCAzNCwgMTAsIDIsIDIyMCwgMzUsIDI0LCA2MiwgMTAsIDIsIDIyMCwgMzUsIDI0LCAyMDQsIDM2LCAxMCwgCisgICAgMiwgMjIwLCAzNSwgMjEwLCA0NiwgMTAsIDIsIDIxOSwgMTUwLCAxMCwgMiwgMjE5LCAxNTEsIDI0LCA3MiwgMTAsIDIsIAorICAgIDIxOSwgMTQ5LCAxMCwgMiwgMjE5LCAxMTksIDEwLCAyLCAyMTksIDEyMCwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgCisgICAgMjE5LCAxMjAsIDI0LCAyMzYsIDUwLCA5MywgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMTksIDExNSwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMjUxLCA4NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMTksIDExNiwgCisgICAgMjQsIDI1MCwgMTgyLCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDIyMiwgNzcsIDkzLCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjIwLCAzNCwgCisgICAgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjEwLCA2NiwgOTMsIDM1LCAyNTEsIDg1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTAsIDY2LCA5MywgMjUwLCAKKyAgICAxODEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxMCwgNjYsIDkzLCAyNTAsIDE4MiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAyMDQsIDQ4LCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIwMywgMTkwLCAxMCwgCisgICAgMiwgMjE5LCAxMDMsIDEwLCAyLCAyMTgsIDEzMywgMTAsIDIsIDIxOCwgMTA1LCAxMCwgMiwgMjE4LCA4OSwgMTAsIDIsIAorICAgIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjIyLCAxMzUsIAorICAgIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIxMiwgCisgICAgMzYsIDExOSwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAKKyAgICAyMDMsIDE5MCwgMTAsIDIsIDIxOCwgOTAsIDIwNiwgMTU1LCAxMCwgMiwgMjE4LCA5MCwgMTE5LCAyMTgsIDg5LCAxMCwgMiwgCisgICAgMjE4LCA5MCwgMjQyLCAyMjgsIDIxOCwgODksIDEwLCAyLCAyMTgsIDkwLCAyNDIsIDIyOCwgMjE4LCA5MCwgMjI1LCAxNTYsIAorICAgIDExOSwgMjI1LCAxNTUsIDEwLCAyLCAyMTgsIDg0LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjUwLCAxNzUsIDEwLCAKKyAgICAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIzOSwgMTMxLCAKKyAgICAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjI3LCA5MSwgMTAsIDIsIDIxOCwgODUsIDI1MiwgCisgICAgNywgMjQsIDE5NCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIAorICAgIDI0LCAyMDksIDE1NywgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIwNCwgNDcsIDEwLCAyLCAyMTgsIDg1LCAyMjYsIAorICAgIDEzMiwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjE4LCA4NSwgMjI2LCAxMzIsIDI0LCAyNDgsIDE4OSwgNjYsIDEwLCAyLCAKKyAgICAxNzIsIDEwLCAyLCAyMTYsIDIwMSwgMTAsIDIsIDIxNiwgMTYyLCAxMCwgMiwgMjE2LCAxMzUsIDEwLCAyLCAyMTYsIDMsIAorICAgIDEwLCAyLCAyMTUsIDIwNCwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgNjIsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDI1MiwgODksIAorICAgIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyNDgsIDM2LCAxMCwgMiwgMjE1LCAKKyAgICAyMDUsIDI0LCA3MiwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgNzAsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDIzMiwgMjM1LCAxMCwgCisgICAgMiwgMjE1LCAyMDUsIDI0LCA2NiwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjA0LCA0NywgMTAsIDIsIDIxNSwgMjA1LCAyNDIsIAorICAgIDIyOCwgMjE1LCAyMDQsIDEwLCAyLCAyMTUsIDE0NiwgMTAsIDIsIDIxNSwgMTQ3LCAyNCwgMjI3LCA3MiwgMTAsIDIsIDIxNSwgCisgICAgMTQ3LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIxNSwgMTQ3LCAyNCwgMTk5LCAxMTQsIDEwLCAyLCAyMTUsIDE0NywgMjE3LCAKKyAgICA0MCwgMjE1LCAxNDYsIDEwLCAyLCAyMTMsIDI1MiwgMTAsIDIsIDIxMywgMjQ2LCAxMCwgMiwgMjEzLCA4OCwgMTAsIDIsIAorICAgIDIxMiwgMTc1LCAxMCwgMiwgMjEyLCA2NCwgMTAsIDIsIDIxMiwgNTEsIDIxOCwgNzUsIDEwLCAyLCAyMTIsIDUwLCAxMCwgMiwgCisgICAgMjEyLCA1MSwgMjQsIDYyLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIzOSwgMTM3LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIzOSwgCisgICAgMTM1LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDE0NCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjEyLCAKKyAgICA1MSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyNCwgMjUsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjIxLCAKKyAgICAyMTEsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMTIsIDM1LCAxMCwgMiwgCisgICAgMjEyLCA1MSwgMjQsIDIxMCwgMzEsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA3LCAyNCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAKKyAgICAyMDQsIDQ3LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNCwgNDIsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA0LCAxMiwgMTAsIDIsIAorICAgIDIxMiwgNTEsIDI0LCAyMDMsIDIxNCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDMsIDE5MCwgMTAsIDIsIDIxMiwgNTEsIDExOSwgCisgICAgMjEyLCA1MCwgMTAsIDIsIDIxMiwgNTEsIDIzNSwgMjgsIDEwLCAyLCAyMTIsIDM1LCAxMCwgMiwgMjEyLCAzNiwgMjI1LCAKKyAgICAxNTgsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIxMiwgOCwgMTAsIDIsIDIxMiwgMCwgMTAsIDIsIDIxMCwgMTE0LCAxMCwgMiwgCisgICAgMjEwLCAxMTIsIDEwLCAyLCAyMTAsIDExMywgMjQsIDYyLCAxMCwgMiwgMjEwLCAxMTMsIDI0LCAyNDksIDExOCwgMTAsIDIsIAorICAgIDIxMCwgMTEzLCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMTAsIDExMywgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMTAsIDExMywgCisgICAgMjQsIDIwOSwgMjE4LCAxMCwgMiwgMjEwLCAxMTMsIDI0LCAyMDQsIDE5MiwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgNjYsIDEwLCAKKyAgICAyLCAyMTAsIDExMywgMjQsIDEwOCwgOTMsIDYyLCAxMCwgMiwgMjEwLCAxMTAsIDEwLCAyLCAyMTAsIDEwOCwgMTAsIDIsIAorICAgIDIxMCwgODIsIDEwLCAyLCAyMTAsIDY1LCAxMCwgMiwgMjEwLCA2NiwgMjMzLCA5NywgMTAsIDIsIDIxMCwgNjYsIDExOSwgCisgICAgMjEwLCA2NiwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAyMTAsIDY2LCAKKyAgICAxMTksIDIxMCwgNjYsIDIwNywgMjUsIDExOSwgMjA3LCAyNSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjEwLCAKKyAgICA1OCwgMTAsIDIsIDIxMCwgNTMsIDEwLCAyLCAyMTAsIDQ5LCAxMCwgMiwgMjEwLCA0OCwgMTAsIDIsIDIxMCwgNDUsIDEwLCAKKyAgICAyLCAyMTAsIDMxLCAxMCwgMiwgMjEwLCAzMiwgMjQsIDYyLCAxMCwgMiwgMjEwLCAzMiwgMjQsIDIyOCwgMTM0LCAxMCwgMiwgCisgICAgMjEwLCAyNSwgMTAsIDIsIDIxMCwgMjYsIDI0LCA2MiwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyNDksIDk5LCAxMCwgMiwgMjEwLCAKKyAgICAyNiwgMjQsIDI0OCwgMTQsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjQxLCAxOSwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMzYsIAorICAgIDQ5LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAKKyAgICAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyNSwgMjM5LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyNCwgMjcsIDEwLCAyLCAyMTAsIAorICAgIDI2LCAyNCwgMjIxLCAzMCwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjEwLCAxOSwgMTAsIDIsIDIxMCwgCisgICAgMTQsIDEwLCAyLCAyMTAsIDE1LCAyMDYsIDE1NSwgMTAsIDIsIDIxMCwgMTUsIDExOSwgMjEwLCAxNSwgMjQ4LCA0LCAxMTksIAorICAgIDI0OCwgMywgMTAsIDIsIDIxMCwgMTAsIDEwLCAyLCAyMDksIDIyMCwgMTAsIDIsIDIwOSwgMjIxLCAxMTksIDIyOCwgNTAsIAorICAgIDIwOSwgMjIwLCAxMCwgMiwgMjA5LCAyMTgsIDEwLCAyLCAyMDksIDIxNywgMTAsIDIsIDIwOSwgMTgyLCAxMCwgMiwgMjA5LCAKKyAgICAxODMsIDIzNSwgMjgsIDEwLCAyLCAyMDksIDE2OCwgMTAsIDIsIDIwOSwgMTY2LCAxMCwgMiwgMjA5LCAxNjcsIDExOSwgCisgICAgMjA5LCAxNjcsIDIwOSwgMjE4LCAxMCwgMiwgMjA5LCAxNTksIDEwLCAyLCAyMDksIDE1NywgMTAsIDIsIDIwOCwgMjQsIDEwLCAKKyAgICAyLCAyMDgsIDI1LCAxMTksIDIwOCwgMjQsIDEwLCAyLCAyMDcsIDI0NiwgMTAsIDIsIDIwNywgMjQ1LCAxMCwgMiwgMjA3LCAKKyAgICAyNDMsIDEwLCAyLCAyMDcsIDIzNCwgMTAsIDIsIDIwNywgMjMzLCAxMCwgMiwgMjA3LCAyMDcsIDEwLCAyLCAyMDcsIDIwNiwgCisgICAgMTAsIDIsIDIwNywgMzYsIDEwLCAyLCAyMDcsIDM3LCAyNTAsIDE2NSwgMTAsIDIsIDIwNywgMzcsIDI0LCAyMzQsIDc1LCAKKyAgICAxMCwgMiwgMjA3LCAzNywgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjA3LCAzNywgMjM1LCAyOCwgMTAsIDIsIDIwNywgMjQsIAorICAgIDEwLCAyLCAyMDcsIDI1LCAxMTksIDIwNywgMjUsIDIxOSwgMTUxLCAxMTksIDIxOSwgMTUxLCAyNDEsIDAsIDExOSwgMjQwLCAKKyAgICAyNTUsIDEwLCAyLCAyMDcsIDI1LCAyMDgsIDE5MiwgMTAsIDIsIDIwNywgMTMsIDEwLCAyLCAxNjUsIDI0LCAyNDgsIDE4OCwgCisgICAgMTAsIDIsIDE2NSwgMjQsIDIzNSwgMzksIDEwLCAyLCAxNjUsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMTY1LCAyNCwgMjA5LCAKKyAgICAyMjAsIDEwLCAyLCAxNjUsIDI0LCAyMDQsIDIwOSwgMTAsIDIsIDE2NSwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMDcsIDAsIAorICAgIDEwLCAyLCAyMDYsIDIzMiwgMTAsIDIsIDIwNiwgMjAxLCAxMCwgMiwgMjA2LCAyMDIsIDIzNSwgMjgsIDEwLCAyLCAyMDYsIAorICAgIDE1LCAxMCwgMiwgMjA2LCAxNiwgMjA2LCAxNTUsIDEwLCAyLCAyMDUsIDI0MiwgMTAsIDIsIDIwNSwgMjE5LCAxMCwgMiwgCisgICAgMjA1LCAyMjAsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMDUsIDIyMCwgMTE5LCAyMDUsIDIxOSwgMTAsIDIsIDIwNSwgMjIwLCAKKyAgICAxMTksIDIwNSwgMjIwLCAyMzYsIDgxLCAxMTksIDIzNiwgODEsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIwNCwgCisgICAgMjE1LCAxMCwgMiwgMjA0LCAyMDksIDEwLCAyLCAyMDQsIDIwNywgMTAsIDIsIDIwNCwgMjAzLCAxMCwgMiwgMjA0LCAxOTIsIAorICAgIDEwLCAyLCAyMDQsIDE5MywgMTE5LCAyMDQsIDE5MywgMTk5LCAxMTUsIDExOSwgMTk5LCAxMTQsIDEwLCAyLCA2NiwgMTAsIAorICAgIDIsIDEwOCwgMjM1LCAzOSwgMTAsIDIsIDEwOCwgMTA4LCA2NiwgMTAsIDIsIDEwOCwgMTE5LCAxMDgsIDIxNiwgMjExLCAKKyAgICAxMTksIDIxNiwgMjExLCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAxMDgsIDExOSwgMTA4LCAyMDcsIDIwOCwgCisgICAgMTE5LCAyMDcsIDIwNywgMTAsIDIsIDEwOCwgMTE5LCAxMDgsIDEwOCwgMjEzLCAxMDUsIDExOSwgMTA4LCAyMTMsIDEwNCwgCisgICAgMTAsIDIsIDIwNCwgNDcsIDEwLCAyLCAyMDQsIDQyLCAxMCwgMiwgMjA0LCAzNiwgMTAsIDIsIDIwNCwgMzcsIDIyNSwgMjM5LCAKKyAgICAxMCwgMiwgMjA0LCAzNywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjA0LCAzNywgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjA0LCAKKyAgICAzNywgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDY2LCAxMCwgMiwgMjA0LCAzNywgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDEwOCwgCisgICAgMjM1LCAyOCwgMTAsIDIsIDIwNCwgMzcsIDIzNSwgMjgsIDEwLCAyLCAyMDQsIDM3LCAyMTAsIDQ2LCAxMCwgMiwgMjA0LCAKKyAgICAzNywgMjEwLCA0NywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjA0LCAzMiwgMTAsIDIsIDIwNCwgMTIsIDEwLCAyLCAyMDQsIAorICAgIDEzLCAyNCwgMjI1LCAxNTcsIDEwLCAyLCAyMDQsIDEzLCAyNCwgMjIyLCA3NywgOTMsIDI0MiwgNTgsIDEwLCAyLCAyMDQsIAorICAgIDEzLCAyNCwgMjEwLCAxMTIsIDEwLCAyLCAyMDQsIDEzLCAyNCwgNjYsIDEwLCAyLCAyMDQsIDExLCAxMCwgMiwgMjA0LCA3LCAKKyAgICAxMCwgMiwgMjA0LCA4LCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIwNCwgOCwgMjQsIDE3MiwgMTAsIDIsIDIwNCwgNSwgMTAsIDIsIAorICAgIDIwNCwgNiwgMjM1LCAyOCwgMTAsIDIsIDIwMywgMjE0LCAxMCwgMiwgMjAzLCAyMTUsIDI0MiwgMjI4LCAyMDMsIDIxNCwgCisgICAgMTAsIDIsIDIwMywgMjE1LCAyMTAsIDQ2LCAxMCwgMiwgMjAzLCAyMTIsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDM1LCA5MywgCisgICAgMTQ0LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAzNSwgOTMsIDE4OCwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjUxLCAxNTEsIDEwLCAKKyAgICAyLCAyMDMsIDIxMywgMjQsIDE0NCwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIwMywgMjEzLCAyNCwgCisgICAgMjA0LCA0NywgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjA0LCA0OCwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAKKyAgICAyMDQsIDQ4LCA5MywgMjQ4LCAxODgsIDEwLCAyLCAyMDMsIDIxMSwgMTAsIDIsIDIwMywgMjA4LCAxMCwgMiwgMjAzLCAyMDcsIAorICAgIDEwLCAyLCAyMDMsIDIwMywgMTAsIDIsIDIwMywgMjA0LCAyNCwgNjIsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDI1MCwgMTc1LCAKKyAgICAxMCwgMiwgMjAzLCAyMDQsIDI0LCAxNDgsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzOSwgMTI1LCAxMCwgMiwgMjAzLCAyMDQsIAorICAgIDI0LCAyMzYsIDg5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzYsIDcxLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzYsIDU4LCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM1LCA1MCwgMTAsIAorICAgIDIsIDIwMywgMjA0LCAyNCwgMTQ0LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIwMywgMjA0LCAyNCwgCisgICAgMjI4LCAxMzQsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyOCwgMjAsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyNiwgMTYzLCAKKyAgICAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjQsIDI1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjEsIDE2NCwgMTAsIDIsIDIwMywgCisgICAgMjA0LCAyNCwgMTcyLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDksIAorICAgIDE2NiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjA0LCAyMTUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDEwOCwgOTMsIDIzNSwgCisgICAgMzksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwMywgMjAxLCAxMCwgMiwgCisgICAgMjAzLCAyMDEsIDEwLCAyLCAyMDMsIDIwMiwgMjQsIDY2LCAxMCwgMiwgMjAzLCAxOTAsIDEwLCAyLCAyMDMsIDE5MSwgMjQsIAorICAgIDYyLCAxMCwgMiwgMjAzLCAxOTEsIDI0LCAyMjYsIDE1LCAxMCwgMiwgMjAzLCAxOTEsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIAorICAgIDIwMywgMTkxLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjAzLCAxODYsIDEwLCAyLCAyMDMsIDE4OSwgMTAsIDIsIDIwMywgMTg3LCAKKyAgICAxMCwgMiwgMjAzLCAxODMsIDEwLCAyLCAyMDMsIDE3MSwgMTAsIDIsIDIwMywgMTcyLCAyNCwgMjI3LCAzOCwgMTAsIDIsIAorICAgIDIwMywgMTcwLCAxMCwgMiwgMTk5LCAxMTQsIDEwLCAyLCAxOTksIDExNSwgMjA2LCAxNTUsIDEwLCAyLCAxOTksIDExNSwgCisgICAgOTUsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDE5OSwgMTEwLCAxMCwgMiwgMTk5LCAxMDIsIDEwLCAyLCAxOTksIDg4LCAxMCwgCisgICAgMiwgMTk5LCAzNiwgMTAsIDIsIDE5OSwgMzcsIDExOSwgMTk5LCAzNiwgMTAsIDIsIDE5OSwgMzUsIDEwLCAyLCAxOTksIDMzLCAKKyAgICAxMCwgMiwgMTk5LCAzNCwgMjI3LCA5NSwgMjA2LCAxNTUsIDEwLCAyLCAxOTksIDI4LCAxMCwgMiwgMTk5LCAxOSwgMTAsIDIsIAorICAgIDE5OSwgMywgMTAsIDIsIDE5OSwgMSwgMTAsIDIsIDE5OSwgMiwgMjQsIDYyLCAxMCwgMiwgMTk5LCAwLCAxMCwgMiwgMTk4LCAKKyAgICAyNTUsIDEwLCAyLCAyMjcsIDYxLCAyMzgsIDIwNiwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjUyLCAKKyAgICA3LCAyNCwgNjIsIDEwLCAyLCAyNTEsIDk4LCAyNCwgMjI2LCA0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDQsIAorICAgIDQ4LCA5MywgMjIyLCAxMzUsIDEwLCAyLCAyNDIsIDQ3LCAxMCwgMiwgMjQxLCAwLCA5MywgMjA5LCAyMjAsIDEwLCAyLCAKKyAgICAyMzksIDEzNiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIzOCwgMTEsIDI0LCAKKyAgICAyMTAsIDY1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI1MSwgODYsIDkzLCAyMjcsIDc3LCA5MywgNjIsIDEwLCAyLCAyMzYsIAorICAgIDg4LCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMzYsIDE0LCAxMCwgMiwgMjM1LCAxNTEsIDEwLCAyLCAyMzMsIDczLCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyNTEsIDUzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNTAsIDE3OCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNCwgNzYsIAorICAgIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI0LCAyNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTcyLCAxMCwgCisgICAgMiwgMjI3LCAxMDgsIDI0LCAyMDksIDIxMywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA0LCAyMTUsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIwMywgMjEyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIyNCwgNDEsIDIxMCwgCisgICAgNDcsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzgsIDkyLCA5MywgMjI1LCA5MywgMTAsIDIsIDIyNCwgCisgICAgNDEsIDI0LCAyMDksIDIyMCwgMTAsIDIsIDIyMiwgMjcsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDE5OSwgMTE0LCAxMCwgMiwgCisgICAgMjIwLCAxNTksIDEwLCAyLCAyMTksIDExOCwgMTAsIDIsIDIxOSwgMTE3LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyNDksIDk5LCAKKyAgICAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIxOCwgMTA2LCAyMTIsIDIyOCwgMjE5LCAxMDksIDI0MSwgCisgICAgMTU0LCAxMCwgMiwgMjE2LCA0LCAyNTAsIDE2NSwgMTAsIDIsIDIxNSwgMTUwLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjA2LCAxNCwgMTAsIDIsIDIwNCwgMTMsIDI0LCAyMjIsIDc2LCAxMCwgMiwgMTA4LCAKKyAgICA2NiwgMTAsIDE0NSwgMiwgMTIwLCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMTI2LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIAorICAgIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyNTAsIDE4MSwgCisgICAgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAxMjYsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgCisgICAgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDI0MCwgMjU1LCAKKyAgICAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCA2NiwgMTAsIDE0NSwgMiwgCisgICAgMjM3LCA2MSwgNjYsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCA2NiwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDY2LCAxMCwgMTQ1LCAKKyAgICAyLCAyMzgsIDIzMiwgNjYsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCA2NiwgMTAsIDE0NSwgMiwgMTEyLCAyMzUsIDI0NCwgMTAsIAorICAgIDE0NSwgMiwgMTIwLCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMTI2LCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIAorICAgIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDIzNSwgMjQ0LCAKKyAgICAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyMzUsIDI0NCwgMTAsIDE0NSwgCisgICAgMiwgMjE5LCAxMTQsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAxMTIsIDIzNSwgMjQxLCAxMCwgMTQ1LCAyLCAxMjAsIDIzNSwgCisgICAgMjQxLCAxMCwgMTQ1LCAyLCAxMjYsIDIzNSwgMjQxLCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjM1LCAyNDEsIDEwLCAxNDUsIAorICAgIDIsIDIzNywgNjEsIDIzNSwgMjQxLCAxMCwgMTQ1LCAyLCAxMjAsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDEyNiwgMjEwLCA4MiwgCisgICAgMTAsIDE0NSwgMiwgMTI2LCAyMTAsIDgzLCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIxMCwgODIsIDEwLCAKKyAgICAxNDUsIDIsIDIzNywgNjEsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMTAsIAorICAgIDEzNiwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMTAsIAorICAgIDgyLCAxMCwgMTQ1LCAyLCAxMTIsIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDEyMCwgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMTI2LCAKKyAgICAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAxMjYsIDIxMCwgNzcsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgCisgICAgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMjEwLCA4MywgMjQsIDIzNiwgNzIsIAorICAgIDkzLCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjEwLCA4MywgMjQsIDIzNiwgNzIsIDkzLCAyMjEsIDE2NCwgMTAsIDE0NSwgMiwgCisgICAgMTEyLCAyNDcsIDI1NSwgMTAsIDE0NSwgMiwgMTIwLCAyNDcsIDI1NSwgMTAsIDE0NSwgMiwgMTI2LCAyNDcsIDI1NSwgMTAsIAorICAgIDE0NSwgMiwgMTI2LCAyNDgsIDAsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjQ3LCAyNTUsIDEwLCAKKyAgICAxNDUsIDIsIDIzNywgNjEsIDI0NywgMjU1LCAxMCwgMTQ1LCAyLCAxMjYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMzgsIDkzLCAKKyAgICAxMCwgMTQ1LCAyLCAxMjYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMzgsIDkwLCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjAzLCAKKyAgICA3MywgMjM2LCAyNDIsIDIyNCwgMTgwLCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjAzLCA3MywgMjM2LCAyNDIsIDIyNCwgCisgICAgMTc4LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjAzLCA3MywgMjM2LCAyNDIsIDIyNCwgMTgxLCA2MiwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDIwMywgNzMsIDIzNiwgMjQyLCAyMjQsIDE4MSwgMjUwLCAxMDMsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAKKyAgICAyMDMsIDczLCAyMzYsIDI0MiwgMjUwLCAxNzcsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyMDMsIDczLCAyMzYsIDI0MiwgCisgICAgMjI4LCAxMjYsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxMjgsIDYyLCAxMCwgMTQ1LCAKKyAgICAyLCAyMTAsIDEzNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTI4LCAyNTAsIDEwMywgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIAorICAgIDIwMywgNzMsIDIzNiwgMjQyLCAyMDMsIDE4NSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDIwMywgNzMsIDIzNiwgMjQyLCAKKyAgICAyMDMsIDE4NCwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDE0MiwgMTAsIDE0NSwgMiwgCisgICAgMjE5LCAxMTQsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDE0MSwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIwMywgNzMsIAorICAgIDIzNiwgMjQyLCAyMjgsIDE0MCwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDE0MywgCisgICAgNjIsIDEwLCAxNDUsIDIsIDEyMCwgMjUwLCAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAxMjYsIDI1MCwgMTgyLCAyMDYsIAorICAgIDE1NSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDI1MCwgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjUwLCAKKyAgICAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMjUwLCAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAxMTIsIAorICAgIDI0OSwgODYsIDEwLCAxNDUsIDIsIDEyMCwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMTI2LCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDI0OSwgODcsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAKKyAgICAyLCAyMzcsIDYxLCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNDksIDg3LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgCisgICAgMiwgMjE5LCAxMjcsIDEwLCAxNDUsIDIsIDIxOSwgMTI4LCAxMCwgMTQ1LCAyLCAxMTIsIDIzOCwgODksIDEwLCAxNDUsIDIsIAorICAgIDEyMCwgMjM4LCA4OSwgMTAsIDE0NSwgMiwgMTEyLCAyMDYsIDc1LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMTIwLCAyMDYsIAorICAgIDcyLCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjA5LCA5NSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDExMiwgCisgICAgMjA2LCA3NSwgMjAzLCA3MywgMjM2LCAyNDIsIDYyLCAxMCwgMTQ1LCAyLCAxMjAsIDIwNiwgNzIsIDIwMywgNzMsIDIzNiwgCisgICAgMjQyLCA2MiwgMTAsIDE0NSwgMiwgMTEyLCAyMzgsIDIyOCwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDExMiwgMjE0LCA4OCwgCisgICAgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDQwLCAyNTAsIDE2OCwgMTEyLCAyMDksIDk2LCAxMCwgMTQ1LCAyLCA0MCwgMjUwLCAKKyAgICAxNjgsIDExMiwgMjE0LCA4NywgMTAsIDE0NSwgMiwgMTEyLCAyMTQsIDg4LCAyMzUsIDIyLCAxMCwgMTQ1LCAyLCAxMTIsIAorICAgIDE2NywgMjM1LCAyMiwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIDExMiwgMjA2LCA3NCwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIAorICAgIDEyMCwgMjA2LCA3MSwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIDIzNiwgMjM1LCAxMCwgMTQ1LCAyLCAyMzgsIDIwNywgMjM3LCAKKyAgICAxMDQsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAxMDgsIAorICAgIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjEwLCAKKyAgICAxMzYsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAKKyAgICAyLCAyMTksIDExNCwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDIxNCwgMjEyLCAyLCA0MCwgMjUwLCAxNjgsIDIwMCwgMjM4LCAKKyAgICAyNDAsIDIzOSwgMTAsIDIxNCwgMjEyLCAyLCA4MywgMjQ2LCA3OSwgMTAsIDIxNCwgMjEyLCAyLCAyNDEsIDcxLCAyNDYsIAorICAgIDc5LCAxMCwgMjE0LCAyMTIsIDIsIDI0MSwgNzEsIDIwNSwgOTQsIDEwLCAyMTQsIDIxMiwgMiwgMjQxLCA3MSwgMjE0LCA5MywgCisgICAgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMTgsIDkwLCAyMDYsIDE1NSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMDksIDIxOCwgMTAsIAorICAgIDIsIDI1MSwgMjM2LCAyNCwgMjM4LCA5MSwgMTAsIDIsIDI0OSwgMTE5LCAyNCwgMjQxLCAwLCAyMDYsIDE1NSwgMTAsIDIsIAorICAgIDI0OSwgMTA2LCAyNCwgMjUyLCA2LCAxMCwgMiwgMjQ5LCAxMDYsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDI0OSwgMTA2LCAyNCwgCisgICAgMTk5LCAxMTQsIDEwLCAyLCAyNDgsIDM3LCAxMTksIDI0OCwgMzcsIDI0LCAyMjAsIDE2MCwgMTAsIDIsIDI0MiwgNTksIDI0LCAKKyAgICAyMDcsIDAsIDEwLCAyLCAyNDIsIDQ5LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyNDEsIDMyLCAyNCwgMjI4LCAxNTMsIDEwLCAKKyAgICAyLCAyNDEsIDMyLCAyNCwgMTA4LCAxMDgsIDY2LCAxMCwgMiwgMjQxLCAzMCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzksIAorICAgIDEzMiwgMjQsIDI1MSwgNTMsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAKKyAgICAyNTAsIDE4MiwgMjUwLCAxNTYsIDIyNSwgMjgsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDI0MSwgMTksIDEwLCAyLCAyMzksIAorICAgIDEzMiwgMjQsIDIzOSwgMTI1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzgsIDEwOSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgCisgICAgMjM2LCA4OSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzNSwgMTQ0LCAKKyAgICAyMzUsIDI4LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMTQ0LCAxMCwgMiwgCisgICAgMjM5LCAxMzIsIDI0LCAyMzQsIDc1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDIzOSwgMTMyLCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzksIDEzMiwgCisgICAgMjQsIDIyNSwgMjM5LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjUsIDI0MCwgOTMsIDIyNywgMzgsIDEwLCAyLCAyMzksIAorICAgIDEzMiwgMjQsIDIyNSwgMTQ1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjUsIDkxLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAKKyAgICAyMjUsIDkyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNCwgMzEsIDkzLCAyMzUsIDEzNSwgMTAsIDIsIAorICAgIDIzOSwgMTMyLCAyNCwgMjIyLCAxMzUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyMiwgMjgsIDEwLCAyLCAyMzksIDEzMiwgCisgICAgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjE1LCAKKyAgICAyMDQsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIwOSwgMTgzLCAyMzUsIAorICAgIDI4LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIxNiwgMTM1LCAxMCwgMiwgCisgICAgMjM4LCAxMTAsIDIwMCwgMTk1LCAxMCwgMiwgMjM4LCA5MiwgMjQyLCAyMjgsIDIzOCwgOTEsIDEwLCAyLCAyMzgsIDExLCAKKyAgICAyMTAsIDQ3LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjM0LCA3NSwgMTAsIDIsIDIzOCwgCisgICAgMTEsIDIxMCwgNDcsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAxOTQsIDEwLCAKKyAgICAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjI1LCA5MywgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMjIsIDc2LCAKKyAgICAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIyMiwgMjgsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjA4LCAKKyAgICAyNCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMDgsIDI0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0OSwgMTA1LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0MSwgMzIsIDIzNSwgMjgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM5LCAxMzIsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzksIDEzMiwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjM4LCAxMTIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA4OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDUwLCAKKyAgICA5MywgMjQxLCA3NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDUwLCA5MywgMjIwLCAzNCwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMzQsIDIzNiwgOTMsIDYyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNSwgMjQwLCA5MywgMjI3LCAzOCwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjUsIDkxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNSwgOTIsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjQsIDMwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMCwgMjUwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIyMCwgMzQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIwLCAzNSwgOTMsIDIzOSwgMjgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjIwLCAzNSwgOTMsIDIzNSwgMTYxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMCwgMjUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMTk5LCAxOSwgMTAsIDIsIDIzNiwgODMsIDIxMiwgMjI4LCAyMTksIDEwOSwgMjQxLCAxNTQsIDEwLCAyLCAyMzUsIDI0MywgCisgICAgMjQsIDY2LCAxMCwgMiwgMjM1LCAxMzYsIDI0LCAyMzUsIDEzNiwgMjQyLCAyMjgsIDIzNSwgMTM1LCAxMCwgMiwgMjM1LCAKKyAgICA0OSwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCA0MCwgOTMsIDIzNSwgMTM2LCAyNCwgMjA3LCAwLCAxMCwgCisgICAgMiwgMjM0LCAyMzYsIDIwNiwgMTU2LCAyMzUsIDI4LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI1MCwgMTgyLCAxMTksIDIzNCwgCisgICAgNzYsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ4LCAzNiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTYxLCAKKyAgICAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxMDgsIDEwOCwgNjYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwMywgMjE0LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAxOTksIDQsIDExOSwgMTk5LCAzLCAxMCwgMiwgMjI1LCAxNDYsIDEwLCAyLCAyMjUsIDE0NCwgMTAsIAorICAgIDIsIDIyNSwgMTQzLCAxMCwgMiwgMjI1LCAxNDIsIDEwLCAyLCAyMjUsIDE0MSwgMTAsIDIsIDIyNSwgMTQwLCAxMCwgMiwgCisgICAgMjI1LCAxMzksIDEwLCAyLCAyMjUsIDEzOCwgMTE5LCAyMjUsIDEzOCwgMjM1LCAyOCwgMTAsIDIsIDIyNSwgMTM3LCAxMCwgCisgICAgMiwgMjI1LCAxMzYsIDExOSwgMjI1LCAxMzUsIDEwLCAyLCAyMjUsIDEzNCwgMTAsIDIsIDIyNSwgMTMzLCAxMCwgMiwgMjI1LCAKKyAgICAxMzIsIDEwLCAyLCAyMjUsIDEzMSwgMTAsIDIsIDIyNSwgMTMwLCAxMCwgMiwgMjI1LCAxMjksIDEwLCAyLCAyMjUsIDEyOCwgCisgICAgMTAsIDIsIDIyNSwgMTI3LCAxMCwgMiwgMjI1LCAxMjYsIDEwLCAyLCAyMjUsIDEyNSwgMTAsIDIsIDIyNSwgMTI0LCAxMCwgCisgICAgMiwgMjI1LCAxMjMsIDEwLCAyLCAyMjUsIDEyMiwgMTAsIDIsIDIyNSwgMTIxLCAxMCwgMiwgMjI1LCAxMjAsIDEwLCAyLCAKKyAgICAyMjUsIDExOSwgMTAsIDIsIDIyNSwgMTE4LCAxMCwgMiwgMjI1LCAxMTcsIDEwLCAyLCAyMjUsIDExNSwgMTAsIDIsIDIyNSwgCisgICAgMTE2LCAyNCwgMjM1LCA1MCwgMTAsIDIsIDIyNSwgMTE2LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMjUsIDExNiwgMjQsIAorICAgIDIxNiwgMTM2LCA5MywgMjI0LCAzOSwgMTAsIDIsIDIyNSwgMTE2LCAyNCwgMjE2LCAxMzYsIDkzLCAyMTYsIDEzNiwgOTMsIAorICAgIDIyNCwgMzksIDEwLCAyLCAyMjUsIDExNiwgMjQsIDIwNCwgNDgsIDkzLCAyNDksIDEzNiwgMTAsIDIsIDIyNSwgMTE0LCAxMCwgCisgICAgMiwgMjI1LCAxMTMsIDEwLCAyLCAyMjUsIDExMiwgMTAsIDIsIDIyNSwgMTExLCAxMCwgMiwgMjI1LCAxMTAsIDEwLCAyLCAKKyAgICAyMjUsIDEwOSwgMTAsIDIsIDIyNSwgMTA4LCAxMCwgMiwgMjI1LCAxMDcsIDEwLCAyLCAyMjUsIDEwNiwgMTAsIDIsIDIyNSwgCisgICAgMTA1LCAxMCwgMiwgMjI1LCAxMDMsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAKKyAgICAyNDksIDExOCwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjM5LCAxMjQsIDIzNSwgMjksIDIzNSwgMjgsIDEwLCAyLCAyMjUsIAorICAgIDEwNCwgMjQsIDIyNiwgMTMsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDE5NCwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjA2LCAKKyAgICAyMzIsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwNiwgMjAxLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgCisgICAgMjI1LCAxMDQsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIDIyNSwgMTAyLCAKKyAgICAxMCwgMiwgMjI1LCAxMDAsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIzOSwgMTM1LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMzYsIAorICAgIDg5LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjI4LCAxNTQsIDIzNSwgCisgICAgMjgsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMTYsIDEzNiwgOTMsIAorICAgIDIxNiwgMTM2LCA5MywgMjI0LCAzOSwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjEwLCA1MCwgOTMsIDIyNiwgMTYzLCAxMCwgMiwgCisgICAgMjI1LCAxMDEsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIDIyNSwgOTgsIDEwLCAKKyAgICAyLCAyMjUsIDk3LCAxMCwgMiwgMjI0LCA0MSwgMjM1LCAyOSwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIAorICAgIDI0MCwgMjU1LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzNCwgMjE2LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIxNiwgMTM1LCAxMCwgCisgICAgMiwgMjI0LCA0MSwgMjQsIDIxNiwgMTM2LCA5MywgMjE2LCAxMzYsIDkzLCAyMjQsIDM5LCAxMCwgMiwgMjI0LCA0MSwgMjQsIAorICAgIDIwNywgMCwgMTAsIDIsIDIyMSwgMjEyLCA5MywgMTk5LCAxMTMsIDEwLCAyLCAyMjAsIDI1MSwgMTE5LCAyMjAsIDI1MSwgCisgICAgMjQsIDIzNiwgODksIDEwLCAyLCAyMjAsIDI1MSwgMTE5LCAyMjAsIDI1MSwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDI0MSwgMzIsIDIzNSwgMjgsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyMzUsIDMyLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzQsIDc1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjYsIAorICAgIDIzNCwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjI1LCAxNDEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyMiwgMTM1LCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAyMTYsIDEzNiwgOTMsIDIxNiwgMTM1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCA2NiwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMTA4LCA5MywgNjYsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIwMywgMjAxLCAxMCwgMiwgMjEyLCA1MSwgCisgICAgMjM1LCAyOSwgMjQsIDE0NCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMzgsIDE3OSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMTAsIAorICAgIDY2LCAyNTAsIDE1NiwgMjI1LCAyOCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMTAsIDExMSwgMjA2LCAKKyAgICAxNTUsIDEwLCAyLCAyMTAsIDY2LCAxMTksIDIxMCwgNjUsIDEwLCAyLCAyMTAsIDY2LCA5MywgMjMzLCA5MiwgMTAsIDIsIAorICAgIDIxMCwgNjYsIDkzLCAyMjAsIDEzNywgMTAsIDIsIDIxMCwgNjYsIDkzLCAyMTIsIDAsIDEwLCAyLCAyMDksIDIxOSwgOTMsIAorICAgIDIzOSwgMTMyLCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyMDksIDIxOSwgOTMsIDIzOSwgMjksIDI0LCAyNTEsIDg1LCAxMCwgMiwgCisgICAgMjA5LCAxODMsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMDcsIDEsIDkzLCAyMTIsIDUwLCAxMCwgMiwgMjA0LCAyMDQsIDI0LCAKKyAgICAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIwNCwgMjA0LCAyNCwgMTI2LCAyNDAsIDI1NSwgMTAsIDIsIDIwMywgMjEzLCAKKyAgICAyMjgsIDQ5LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyNDEsIDI1MywgMTAsIAorICAgIDIsIDIwMywgMjA0LCAyNCwgMjI1LCA5OSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI0LCAzOSwgMTAsIDIsIDE5OSwgMTEzLCAKKyAgICAxMCwgMiwgMTk5LCA0LCAxMTksIDE5OSwgNCwgOTMsIDIxMiwgMCwgMTAsIDIsIDE5OSwgMiwgMjQsIDEyNiwgMjQxLCAwLCAKKyAgICAyMDYsIDE1NSwgMTQsIDcsIDI1NSwgMTMxLCAxNCwgNywgMjU1LCAxMzAsIDE0LCA3LCAyNTUsIDEyOSwgMTQsIDcsIDI1NSwgCisgICAgMTI4LCAxNCwgNywgMjU1LCAxMjcsIDE0LCA3LCAyNTUsIDEyNiwgMTQsIDcsIDI1NSwgMTI1LCAxNCwgNywgMjU1LCAxMjQsIAorICAgIDE0LCA3LCAyNTUsIDEyMywgMTQsIDcsIDI1NSwgMTIyLCAxNCwgNywgMjU1LCAxMjEsIDE0LCA3LCAyNTUsIDEyMCwgMTQsIAorICAgIDcsIDI1NSwgMTE5LCAxNCwgNywgMjU1LCAxMTcsIDE0LCA3LCAyNTUsIDExNiwgMTQsIDcsIDI1NSwgMTE1LCAxNCwgNywgCisgICAgMjU1LCAxMTQsIDE0LCA3LCAyNTUsIDExMywgMTQsIDcsIDI1NSwgMTEyLCAxNCwgNywgMjU1LCAxMTEsIDE0LCA3LCAyNTUsIAorICAgIDExMCwgMTQsIDcsIDI1NSwgMTA5LCAxNCwgNywgMjU1LCAxMDgsIDE0LCA3LCAyNTUsIDEwNywgMTQsIDcsIDI1NSwgMTA2LCAKKyAgICAxNCwgNywgMjU1LCAxMDUsIDE0LCA3LCAyNTUsIDEwNCwgMTQsIDcsIDI1NSwgMTAzLCAxNCwgNywgMjU1LCAxMDIsIDE0LCAKKyAgICA3LCAyNTUsIDEwMSwgMTQsIDcsIDI1NSwgMTAwLCAxNCwgNywgMjU1LCA5OCwgMTQsIDcsIDI1NSwgOTcsIDE0LCA3LCAyNTUsIAorICAgIDk1LCAxNCwgNywgMjU1LCA5NCwgMTQsIDcsIDI1NSwgOTMsIDE0LCA3LCAyNTUsIDkyLCAxNCwgNywgMjU1LCA5MSwgMTQsIAorICAgIDcsIDI1NSwgOTAsIDE0LCA3LCAyNTUsIDg5LCAxNCwgNywgMjU1LCA4OCwgMTQsIDcsIDI1NSwgODcsIDE0LCA3LCAyNTUsIAorICAgIDg2LCAxNCwgNywgMjU1LCA4NSwgMTQsIDcsIDI1NSwgODQsIDE0LCA3LCAyNTUsIDgyLCAxNCwgNywgMjU1LCA4MSwgMTQsIAorICAgIDcsIDI1NSwgODAsIDE0LCA3LCAyNTUsIDc4LCAxNCwgNywgMjU1LCA3NywgMTQsIDcsIDI1NSwgNzYsIDE0LCA3LCAyNTUsIAorICAgIDc1LCAxNCwgNywgMjU1LCA3NCwgMTQsIDcsIDI1NSwgNzMsIDE0LCA3LCAyNTUsIDcyLCAxNCwgNywgMjU1LCA3MSwgMTQsIAorICAgIDcsIDI1NSwgNjgsIDE0LCA3LCAyNTUsIDY3LCAxNCwgNywgMjU1LCA2NiwgMTQsIDcsIDI1NSwgNjUsIDE0LCA3LCAyNTUsIAorICAgIDY0LCAxNCwgNywgMjU1LCA2MywgMTQsIDcsIDI1NSwgNjIsIDE0LCA3LCAyNTUsIDYxLCAxNCwgNywgMjU1LCA2MCwgMTQsIAorICAgIDcsIDI1NSwgNTksIDE0LCA3LCAyNTUsIDU4LCAxNCwgNywgMjU1LCA1NywgMTQsIDcsIDI1NSwgNTYsIDE0LCA3LCAyNTUsIAorICAgIDU1LCAxNCwgNywgMjU1LCA1NCwgMTQsIDcsIDI1NSwgNTMsIDE0LCA3LCAyNTUsIDUyLCAxNCwgNywgMjU1LCA1MSwgMTQsIAorICAgIDcsIDI1NSwgNTAsIDE0LCA3LCAyNTUsIDQ5LCAxNCwgNywgMjU1LCA0NSwgMTQsIDcsIDI1NSwgNDQsIDE0LCA3LCAyNTUsIAorICAgIDQzLCAxNCwgNywgMjU1LCA0MiwgMTQsIDcsIDI1MCwgMTAxLCAxNCwgNywgMjUwLCA5OSwgMTQsIDcsIDI1MCwgOTcsIDE0LCAKKyAgICA3LCAyNTAsIDk1LCAxNCwgNywgMjUwLCA5MywgMTQsIDcsIDI1MCwgOTIsIDE0LCA3LCAyNTAsIDkwLCAxNCwgNywgMjUwLCAKKyAgICA4OCwgMTQsIDcsIDI1MCwgODYsIDE0LCA3LCAyNTAsIDg0LCAxNCwgNywgMjQ3LCAyMTksIDE0LCA3LCAyNDcsIDIxOCwgMTQsIAorICAgIDcsIDI0NywgMjE3LCAxNCwgNywgMjQ3LCAyMTYsIDE0LCA3LCAyNDcsIDIxNSwgMTQsIDcsIDI0NywgMjE0LCAxNCwgNywgCisgICAgMjQ3LCAyMTMsIDE0LCA3LCAyNDcsIDIxMiwgMTQsIDcsIDI0NywgMjExLCAxNCwgNywgMjQ3LCAyMTAsIDE0LCA3LCAyNDcsIAorICAgIDIwOSwgMTQsIDcsIDI0NywgMjA4LCAxNCwgNywgMjQ3LCAyMDcsIDE0LCA3LCAyNDcsIDIwNiwgMTQsIDcsIDI0NywgMjA1LCAKKyAgICAxNCwgNywgMjQ3LCAyMDQsIDE0LCA3LCAyNDcsIDIwMywgMTQsIDcsIDI0NywgMjAyLCAxNCwgNywgMjQ3LCAyMDEsIDE0LCAKKyAgICA3LCAyNDcsIDIwMCwgMTQsIDcsIDI0NywgMTk5LCAxNCwgNywgMjQ3LCAxOTgsIDE0LCA3LCAyNDcsIDE5NywgMTQsIDcsIAorICAgIDI0NywgMTk2LCAxNCwgNywgMjQ3LCAxOTUsIDE0LCA3LCAyNDcsIDE5NCwgMTQsIDcsIDI0NywgMTkzLCAxNCwgNywgMjQ3LCAKKyAgICAxOTIsIDE0LCA3LCAyNDIsIDE1MiwgMTQsIDcsIDI0MiwgMTUxLCAxNCwgNywgMjQyLCAxNTAsIDE0LCA3LCAyNDIsIDE0OSwgCisgICAgMTQsIDcsIDI0MiwgMTQ4LCAxNCwgNywgMjQyLCAxNDcsIDE0LCA3LCAyNDIsIDE0NiwgMTQsIDcsIDI0MiwgMTQ1LCAxNCwgCisgICAgNywgMjQyLCAxNDQsIDE0LCA3LCAyNDIsIDE0MywgMTQsIDcsIDI0MiwgMTQyLCAxNCwgNywgMjQyLCAxNDEsIDE0LCA3LCAKKyAgICAyNDIsIDE0MCwgMTQsIDcsIDI0MiwgMTM5LCAxNCwgNywgMjQyLCAxMzgsIDE0LCA3LCAyNDIsIDEzNywgMTQsIDcsIDI0MiwgCisgICAgMTM2LCAxNCwgNywgMjQyLCAxMzUsIDE0LCA3LCAyNDIsIDEzNCwgMTQsIDcsIDI0MiwgMTMzLCAxNCwgNywgMjQyLCAxMzIsIAorICAgIDE0LCA3LCAyNDIsIDEzMSwgMTQsIDcsIDI0MiwgMTMwLCAxNCwgNywgMjQyLCAxMjksIDE0LCA3LCAyNDIsIDEyOCwgMTQsIAorICAgIDcsIDI0MiwgMTI3LCAxNCwgNywgMjQyLCAxMjYsIDE0LCA3LCAyNDIsIDEyNSwgMTQsIDcsIDI0MiwgMTI0LCAxNCwgNywgCisgICAgMjQyLCAxMjMsIDE0LCA3LCAyNDIsIDEyMiwgMTQsIDcsIDI0MiwgMTIxLCAxNCwgNywgMjQyLCAxMjAsIDE0LCA3LCAyNDIsIAorICAgIDExOSwgMTQsIDcsIDI0MiwgMTE4LCAxNCwgNywgMjQyLCAxMTcsIDE0LCA3LCAyNDIsIDExNiwgMTQsIDcsIDI0MiwgMTE1LCAKKyAgICAxNCwgNywgMjQyLCAxMTQsIDE0LCA3LCAyNDIsIDExMywgMTQsIDcsIDI0MiwgMTEyLCAxNCwgNywgMjQyLCAxMTEsIDE0LCAKKyAgICA3LCAyNDIsIDExMCwgMTQsIDcsIDI0MiwgMTA5LCAxNCwgNywgMjQyLCAxMDgsIDE0LCA3LCAyNDIsIDEwNywgMTQsIDcsIAorICAgIDI0MiwgMTA2LCAxNCwgNywgMjQyLCAxMDUsIDE0LCA3LCAyNDIsIDEwNCwgMTQsIDcsIDI0MiwgMTAzLCAxNCwgNywgMjQyLCAKKyAgICAxMDIsIDE0LCA3LCAyNDIsIDEwMSwgMTQsIDcsIDI0MiwgMTAwLCAxNCwgNywgMjQyLCA5OSwgMTQsIDcsIDI0MiwgOTgsIAorICAgIDE0LCA3LCAyNDIsIDk3LCAxNCwgNywgMjQyLCA5NiwgMTQsIDcsIDI0MiwgOTUsIDE0LCA3LCAyNDIsIDk0LCAxNCwgNywgCisgICAgMjQyLCA5MywgMTQsIDcsIDI0MiwgOTIsIDE0LCA3LCAyNDIsIDkxLCAxNCwgNywgMjQyLCA5MCwgMTQsIDcsIDI0MiwgODksIAorICAgIDE0LCA3LCAyNDIsIDg4LCAxNCwgNywgMjQyLCA4NywgMTQsIDcsIDI0MiwgODYsIDE0LCA3LCAyNDIsIDg1LCAxNCwgNywgCisgICAgMjQyLCA4NCwgMTQsIDcsIDI0MiwgODMsIDE0LCA3LCAyNDIsIDgyLCAxNCwgNywgMjQyLCA4MSwgMTQsIDcsIDI0MiwgODAsIAorICAgIDE0LCA3LCAyNDIsIDc5LCAxNCwgNywgMjQyLCA3OCwgMTQsIDcsIDI0MiwgNzcsIDE0LCA3LCAyNDIsIDc2LCAxNCwgNywgCisgICAgMjQyLCA3NSwgMTQsIDcsIDI0MiwgNzQsIDE0LCA3LCAyNDIsIDczLCAxNCwgNywgMjQyLCA3MiwgMTQsIDcsIDI0MiwgNzEsIAorICAgIDE0LCA3LCAyNDIsIDcwLCAxNCwgNywgMjQyLCA2OSwgMTQsIDcsIDI0MiwgNjgsIDE0LCA3LCAyNDIsIDY3LCAxNCwgNywgCisgICAgMjQyLCA2NiwgMTQsIDcsIDI0MiwgNjUsIDE0LCA3LCAyNDIsIDY0LCAxNCwgNywgMjQyLCA2MywgMTQsIDcsIDI0MiwgNjIsIAorICAgIDE0LCA3LCAyNDIsIDYxLCAxNCwgNywgMjM5LCA3MywgMTQsIDcsIDIzOSwgNzIsIDE0LCA3LCAyMzksIDcxLCAxNCwgNywgCisgICAgMjM5LCA3MCwgMTQsIDcsIDIzOSwgNjksIDE0LCA3LCAyMzksIDY4LCAxNCwgNywgMjM5LCA2NywgMTQsIDcsIDIzOSwgNjYsIAorICAgIDE0LCA3LCAyMzksIDY1LCAxNCwgNywgMjM5LCA2NCwgMTQsIDcsIDIzOSwgNjMsIDE0LCA3LCAyMzksIDYyLCAxNCwgNywgCisgICAgMjM5LCA2MSwgMTQsIDcsIDIzOSwgNjAsIDE0LCA3LCAyMzksIDU5LCAxNCwgNywgMjM5LCA1OCwgMTQsIDcsIDIzOSwgNTcsIAorICAgIDE0LCA3LCAyMzksIDU2LCAxNCwgNywgMjM5LCA1NSwgMTQsIDcsIDIzOSwgNTQsIDE0LCA3LCAyMzksIDUzLCAxNCwgNywgCisgICAgMjM5LCA1MiwgMTQsIDcsIDIzOSwgNTEsIDE0LCA3LCAyMzksIDUwLCAxNCwgNywgMjM5LCA0OSwgMTQsIDcsIDIzOSwgNDgsIAorICAgIDE0LCA3LCAyMzksIDQ3LCAxNCwgNywgMjM5LCA0NiwgMTQsIDcsIDIzOSwgNDUsIDE0LCA3LCAyMzksIDQ0LCAxNCwgNywgCisgICAgMjM5LCA0MywgMTQsIDcsIDIzOSwgNDIsIDE0LCA3LCAyMzksIDQxLCAxNCwgNywgMjM5LCA0MCwgMTQsIDcsIDIzOSwgMzksIAorICAgIDE0LCA3LCAyMzksIDM4LCAxNCwgNywgMjM5LCAzNywgMTQsIDcsIDIzOSwgMzYsIDE0LCA3LCAyMzksIDM1LCAxNCwgNywgCisgICAgMjM5LCAzNCwgMTQsIDcsIDIzOSwgMzMsIDE0LCA3LCAyMzksIDMyLCAxNCwgNywgMjM5LCAzMSwgMTQsIDcsIDIzOSwgMzAsIAorICAgIDE0LCA3LCAyMzgsIDQsIDE0LCA3LCAyMzgsIDMsIDE0LCA3LCAyMzgsIDIsIDE0LCA3LCAyMzgsIDEsIDE0LCA3LCAyMzgsIAorICAgIDAsIDE0LCA3LCAyMzcsIDI1NSwgMTQsIDcsIDIzNywgMjU0LCAxNCwgNywgMjM3LCAyNTMsIDE0LCA3LCAyMzcsIDI1MiwgCisgICAgMTQsIDcsIDIzNywgMjUxLCAxNCwgNywgMjM3LCAyNTAsIDE0LCA3LCAyMzcsIDI0OSwgMTQsIDcsIDIzNywgMjQ4LCAxNCwgCisgICAgNywgMjM3LCAyNDcsIDE0LCA3LCAyMzcsIDI0NiwgMTQsIDcsIDIzNywgMjQ1LCAxNCwgNywgMjM3LCAyNDQsIDE0LCA3LCAKKyAgICAyMzcsIDI0MywgMTQsIDcsIDIzNywgMjQyLCAxNCwgNywgMjM3LCAyNDEsIDE0LCA3LCAyMzcsIDI0MCwgMTQsIDcsIDIzNywgCisgICAgMjM5LCAxNCwgNywgMjM3LCAyMzgsIDE0LCA3LCAyMzcsIDIzNywgMTQsIDcsIDIzNywgMjM2LCAxNCwgNywgMjM3LCAyMzUsIAorICAgIDE0LCA3LCAyMzcsIDIzNCwgMTQsIDcsIDIzNywgMjMzLCAxNCwgNywgMjM3LCAyMzIsIDE0LCA3LCAyMzcsIDIzMSwgMTQsIAorICAgIDcsIDIzNywgMjMwLCAxNCwgNywgMjM3LCAyMjksIDE0LCA3LCAyMzcsIDIyOCwgMTQsIDcsIDIzNywgMjI3LCAxNCwgNywgCisgICAgMjM3LCAyMjYsIDE0LCA3LCAyMzcsIDIyNSwgMTQsIDcsIDIzNywgMjI0LCAxNCwgNywgMjM3LCAyMjMsIDE0LCA3LCAyMzcsIAorICAgIDIyMiwgMTQsIDcsIDIzNywgMjIxLCAxNCwgNywgMjM3LCAyMjAsIDE0LCA3LCAyMzcsIDIxOSwgMTQsIDcsIDIzNywgMjE4LCAKKyAgICAxNCwgNywgMjM3LCAyMTcsIDE0LCA3LCAyMzcsIDIxNiwgMTQsIDcsIDIzNywgMjE1LCAxNCwgNywgMjM3LCAyMTQsIDE0LCAKKyAgICA3LCAyMzcsIDIxMywgMTQsIDcsIDIzNywgMjEyLCAxNCwgNywgMjM3LCAyMTEsIDE0LCA3LCAyMzcsIDIxMCwgMTQsIDcsIAorICAgIDIzNywgMjA5LCAxNCwgNywgMjM3LCAyMDgsIDE0LCA3LCAyMzcsIDIwNywgMTQsIDcsIDIzNywgMjA2LCAxNCwgNywgMjM3LCAKKyAgICAyMDUsIDE0LCA3LCAyMzcsIDIwNCwgMTQsIDcsIDIzNywgMjAzLCAxNCwgNywgMjM3LCAyMDIsIDE0LCA3LCAyMzcsIDIwMSwgCisgICAgMTQsIDcsIDIzNywgMjAwLCAxNCwgNywgMjM3LCAxOTksIDE0LCA3LCAyMzcsIDE5OCwgMTQsIDcsIDIzNywgMTk3LCAxNCwgCisgICAgNywgMjM3LCAxOTYsIDE0LCA3LCAyMzYsIDE1NSwgMTQsIDcsIDIzNiwgMTU0LCAxNCwgNywgMjM2LCAxNTMsIDE0LCA3LCAKKyAgICAyMzYsIDE1MiwgMTQsIDcsIDIzNiwgMTUxLCAxNCwgNywgMjM2LCAxNTAsIDE0LCA3LCAyMzYsIDE0OSwgMTQsIDcsIDIzNiwgCisgICAgMTQ4LCAxNCwgNywgMjM2LCAxNDcsIDE0LCA3LCAyMzYsIDE0NiwgMTQsIDcsIDIzNiwgMTQ1LCAxNCwgNywgMjM2LCAxNDQsIAorICAgIDE0LCA3LCAyMzYsIDE0MywgMTQsIDcsIDIzNiwgMTQyLCAxNCwgNywgMjM2LCAxNDEsIDE0LCA3LCAyMzYsIDE0MCwgMTQsIAorICAgIDcsIDIzNiwgMTM5LCAxNCwgNywgMjM2LCAxMzgsIDE0LCA3LCAyMzYsIDEzNywgMTQsIDcsIDIzNiwgMTM2LCAxNCwgNywgCisgICAgMjM2LCAxMzUsIDE0LCA3LCAyMzYsIDEzNCwgMTQsIDcsIDIzNiwgMTMzLCAxNCwgNywgMjM2LCAxMzIsIDE0LCA3LCAyMzYsIAorICAgIDEzMSwgMTQsIDcsIDIzNiwgMTMwLCAxNCwgNywgMjM2LCAxMjksIDE0LCA3LCAyMzYsIDEyOCwgMTQsIDcsIDIzNiwgMTI3LCAKKyAgICAxNCwgNywgMjM2LCAxMjYsIDE0LCA3LCAyMzYsIDEyNSwgMTQsIDcsIDIzNiwgMTI0LCAxNCwgNywgMjM2LCAxMjMsIDE0LCAKKyAgICA3LCAyMzYsIDEyMiwgMTQsIDcsIDIzNiwgMTIxLCAxNCwgNywgMjM2LCAxMjAsIDE0LCA3LCAyMzYsIDExOSwgMTQsIDcsIAorICAgIDIzNiwgMTE4LCAxNCwgNywgMjM2LCAxMTcsIDE0LCA3LCAyMzYsIDExNiwgMTQsIDcsIDIzNiwgMTE1LCAxNCwgNywgMjM2LCAKKyAgICAxMTQsIDE0LCA3LCAyMzYsIDExMywgMTQsIDcsIDIzNiwgMTEyLCAxNCwgNywgMjM2LCAxMTEsIDE0LCA3LCAyMzYsIDExMCwgCisgICAgMTQsIDcsIDIzNiwgMTA5LCAxNCwgNywgMjM2LCAxMDgsIDE0LCA3LCAyMzYsIDEwNywgMTQsIDcsIDIzNiwgMTA2LCAxNCwgCisgICAgNywgMjM2LCAxMDUsIDE0LCA3LCAyMzYsIDEwNCwgMTQsIDcsIDIzNiwgMTAzLCAxNCwgNywgMjM2LCAxMDIsIDE0LCA3LCAKKyAgICAyMzYsIDEwMSwgMTQsIDcsIDIzNiwgMTAwLCAxNCwgNywgMjM2LCA5OSwgMTQsIDcsIDIzNiwgOTgsIDE0LCA3LCAyMzYsIAorICAgIDk3LCAxNCwgNywgMjM2LCA5NiwgMTQsIDcsIDIzNiwgOTUsIDE0LCA3LCAyMzYsIDk0LCAxNCwgNywgMjM2LCA5MywgMTQsIAorICAgIDcsIDIzNiwgOTIsIDE0LCA3LCAyMzQsIDI0NSwgMTQsIDcsIDIzNCwgMjQ0LCAxNCwgNywgMjM0LCAyNDMsIDE0LCA3LCAKKyAgICAyMzQsIDI0MiwgMTQsIDcsIDIzNCwgMjQxLCAxNCwgNywgMjM0LCAyNDAsIDE0LCA3LCAyMzQsIDIzOSwgMTQsIDcsIDIzNCwgCisgICAgMjM4LCAxNCwgNywgMjM0LCAyMzcsIDE0LCA3LCAyMzMsIDMsIDE0LCA3LCAyMzMsIDIsIDE0LCA3LCAyMzMsIDEsIDE0LCA3LCAKKyAgICAyMzMsIDAsIDE0LCA3LCAyMzIsIDI1NSwgMTQsIDcsIDIzMiwgMjU0LCAxNCwgNywgMjMyLCAyNTMsIDE0LCA3LCAyMzIsIAorICAgIDI1MiwgMTQsIDcsIDIzMiwgMjUxLCAxNCwgNywgMjMyLCAyNTAsIDE0LCA3LCAyMzIsIDI0OSwgMTQsIDcsIDIzMiwgMjQ4LCAKKyAgICAxNCwgNywgMjMyLCAyNDcsIDE0LCA3LCAyMzIsIDI0NiwgMTQsIDcsIDIzMiwgMjQ1LCAxNCwgNywgMjMyLCAyNDQsIDE0LCAKKyAgICA3LCAyMzIsIDI0MywgMTQsIDcsIDIzMiwgMjQyLCAxNCwgNywgMjMyLCAyNDEsIDE0LCA3LCAyMjcsIDExNywgMTQsIDcsIAorICAgIDIyNywgMTE2LCAxNCwgNywgMjI3LCAxMTUsIDE0LCA3LCAyMjcsIDExNCwgMTQsIDcsIDIyNywgMTEzLCAxNCwgNywgMjI3LCAKKyAgICAxMTIsIDE0LCA3LCAyMjcsIDExMSwgMTQsIDcsIDIyNywgMTEwLCAxNCwgNywgMjI1LCAxOTAsIDE0LCA3LCAyMjUsIDE4OSwgCisgICAgMTQsIDcsIDIyNSwgMTg4LCAxNCwgNywgMjI1LCAxODcsIDE0LCA3LCAyMjUsIDE4NiwgMTQsIDcsIDIyNSwgMTg1LCAxNCwgCisgICAgNywgMjI1LCAxODQsIDE0LCA3LCAyMjUsIDE4MywgMTQsIDcsIDIyNSwgMTgyLCAxNCwgNywgMjI1LCAxODEsIDE0LCA3LCAKKyAgICAyMjMsIDI0MSwgMTQsIDcsIDIyMywgMjQwLCAxNCwgNywgMjIzLCAyMzksIDE0LCA3LCAyMjMsIDIzNywgMTQsIDcsIDIyMywgCisgICAgMjM1LCAxNCwgNywgMjIzLCAyMzQsIDE0LCA3LCAyMjMsIDIzMiwgMTQsIDcsIDIyMywgMjMwLCAxNCwgNywgMjIzLCAyMjgsIAorICAgIDE0LCA3LCAyMjMsIDIyNiwgMTQsIDcsIDIyMywgMjI0LCAxNCwgNywgMjIzLCAyMjIsIDE0LCA3LCAyMjMsIDIyMCwgMTQsIAorICAgIDcsIDIyMywgMjE5LCAxNCwgNywgMjIzLCAyMTcsIDE0LCA3LCAyMjMsIDIxNSwgMTQsIDcsIDIyMywgMjE0LCAxNCwgNywgCisgICAgMjIzLCAyMTMsIDE0LCA3LCAyMjMsIDIxMiwgMTQsIDcsIDIyMywgMjExLCAxNCwgNywgMjIzLCAyMTAsIDE0LCA3LCAyMjMsIAorICAgIDIwOSwgMTQsIDcsIDIyMywgMjA4LCAxNCwgNywgMjIzLCAyMDcsIDE0LCA3LCAyMjMsIDIwNSwgMTQsIDcsIDIyMywgMjAzLCAKKyAgICAxNCwgNywgMjIzLCAyMDEsIDE0LCA3LCAyMjMsIDIwMCwgMTQsIDcsIDIyMywgMTk4LCAxNCwgNywgMjIzLCAxOTcsIDE0LCAKKyAgICA3LCAyMjMsIDE5NSwgMTQsIDcsIDIyMywgMTk0LCAxNCwgNywgMjIzLCAxOTIsIDE0LCA3LCAyMjMsIDE5MCwgMTQsIDcsIAorICAgIDIyMywgMTg4LCAxNCwgNywgMjIzLCAxODYsIDE0LCA3LCAyMjMsIDE4NCwgMTQsIDcsIDIyMywgMTgzLCAxNCwgNywgMjIzLCAKKyAgICAxODEsIDE0LCA3LCAyMjMsIDE3OSwgMTQsIDcsIDIyMywgMTc4LCAxNCwgNywgMjIzLCAxNzYsIDE0LCA3LCAyMjMsIDE3NCwgCisgICAgMTQsIDcsIDIyMywgMTcyLCAxNCwgNywgMjIzLCAxNzAsIDE0LCA3LCAyMjMsIDE2OSwgMTQsIDcsIDIyMywgMTY3LCAxNCwgCisgICAgNywgMjIzLCAxNjUsIDE0LCA3LCAyMjMsIDE2MywgMTQsIDcsIDIyMywgMTYyLCAxNCwgNywgMjIzLCAxNjAsIDE0LCA3LCAKKyAgICAyMjMsIDE1OCwgMTQsIDcsIDIyMywgMTU3LCAxNCwgNywgMjIzLCAxNTYsIDE0LCA3LCAyMjMsIDE1NCwgMTQsIDcsIDIyMywgCisgICAgMTUyLCAxNCwgNywgMjIzLCAxNTAsIDE0LCA3LCAyMjMsIDE0OCwgMTQsIDcsIDIyMywgMTQ2LCAxNCwgNywgMjIzLCAxNDQsIAorICAgIDE0LCA3LCAyMjMsIDE0MiwgMTQsIDcsIDIyMywgMTQxLCAxNCwgNywgMjIzLCAxMzksIDE0LCA3LCAyMjMsIDEzNywgMTQsIAorICAgIDcsIDIyMywgMTM1LCAxNCwgNywgMjIzLCAxMzMsIDE0LCA3LCAyMjAsIDIxMSwgMTQsIDcsIDIyMCwgMjEwLCAxNCwgNywgCisgICAgMjIwLCAyMDksIDE0LCA3LCAyMjAsIDIwOCwgMTQsIDcsIDIyMCwgMjA3LCAxNCwgNywgMjIwLCAyMDYsIDE0LCA3LCAyMjAsIAorICAgIDIwNSwgMTQsIDcsIDIyMCwgMjA0LCAxNCwgNywgMjIwLCAyMDMsIDE0LCA3LCAyMjAsIDIwMiwgMTQsIDcsIDIyMCwgMjAxLCAKKyAgICAxNCwgNywgMjIwLCAyMDAsIDE0LCA3LCAyMjAsIDE5OSwgMTQsIDcsIDIyMCwgMTk4LCAxNCwgNywgMjIwLCAxOTcsIDE0LCAKKyAgICA3LCAyMjAsIDE5NiwgMTQsIDcsIDIyMCwgMTk1LCAxNCwgNywgMjIwLCAxOTQsIDE0LCA3LCAyMjAsIDE5MywgMTQsIDcsIAorICAgIDIyMCwgMTkyLCAxNCwgNywgMjIwLCAxOTEsIDE0LCA3LCAyMjAsIDE5MCwgMTQsIDcsIDIyMCwgMTg5LCAxNCwgNywgMjIwLCAKKyAgICAxODgsIDE0LCA3LCAyMjAsIDE4NywgMTQsIDcsIDIyMCwgMTg2LCAxNCwgNywgMjIwLCAxODUsIDE0LCA3LCAyMjAsIDE4NCwgCisgICAgMTQsIDcsIDIyMCwgMTgzLCAxNCwgNywgMjIwLCAxODIsIDE0LCA3LCAyMjAsIDE4MSwgMTQsIDcsIDIyMCwgMTgwLCAxNCwgCisgICAgNywgMjIwLCAxNzksIDE0LCA3LCAyMjAsIDE3OCwgMTQsIDcsIDIyMCwgMTc3LCAxNCwgNywgMjIwLCAxNzYsIDE0LCA3LCAKKyAgICAyMjAsIDE3NSwgMTQsIDcsIDIyMCwgMTc0LCAxNCwgNywgMjIwLCAxNzMsIDE0LCA3LCAyMjAsIDE3MiwgMTQsIDcsIDIyMCwgCisgICAgMTcxLCAxNCwgNywgMjIwLCAxNzAsIDE0LCA3LCAyMjAsIDE2OSwgMTQsIDcsIDIyMCwgMTY4LCAxNCwgNywgMjIwLCAxNjcsIAorICAgIDE0LCA3LCAyMjAsIDE2NiwgMTQsIDcsIDIyMCwgMTY1LCAxNCwgNywgMjIwLCAxNjQsIDE0LCA3LCAyMjAsIDE2MywgMTQsIAorICAgIDcsIDIxOSwgNDYsIDE0LCA3LCAyMTksIDQ1LCAxNCwgNywgMjE5LCA0NCwgMTQsIDcsIDIxOSwgNDMsIDE0LCA3LCAyMTksIAorICAgIDQyLCAxNCwgNywgMjE5LCA0MSwgMTQsIDcsIDIxOSwgNDAsIDE0LCA3LCAyMTksIDM5LCAxNCwgNywgMjE5LCAzOCwgMTQsIAorICAgIDcsIDIxOSwgMzcsIDE0LCA3LCAyMTksIDM2LCAxNCwgNywgMjE5LCAzNSwgMTQsIDcsIDIxOSwgMzQsIDE0LCA3LCAyMTksIAorICAgIDMzLCAxNCwgNywgMjE5LCAzMiwgMTQsIDcsIDIxOSwgMzEsIDE0LCA3LCAyMTksIDMwLCAxNCwgNywgMjE5LCAyOSwgMTQsIAorICAgIDcsIDIxOSwgMjgsIDE0LCA3LCAyMTksIDI3LCAxNCwgNywgMjE5LCAyNiwgMTQsIDcsIDIxOSwgMjUsIDE0LCA3LCAyMTgsIAorICAgIDEzMiwgMTQsIDcsIDIxOCwgMTMxLCAxNCwgNywgMjE4LCAxMzAsIDE0LCA3LCAyMTgsIDEyOSwgMTQsIDcsIDIxOCwgMTI4LCAKKyAgICAxNCwgNywgMjE4LCAxMjcsIDE0LCA3LCAyMTgsIDEyNiwgMTQsIDcsIDIxOCwgMTI1LCAxNCwgNywgMjE4LCAxMjQsIDE0LCAKKyAgICA3LCAyMTgsIDEyMywgMTQsIDcsIDIxOCwgMTIyLCAxNCwgNywgMjE4LCAxMjEsIDE0LCA3LCAyMTgsIDEyMCwgMTQsIDcsIAorICAgIDIxOCwgMTE5LCAxNCwgNywgMjE4LCAxMTgsIDE0LCA3LCAyMTgsIDExNywgMTQsIDcsIDIxOCwgMTE2LCAxNCwgNywgMjE4LCAKKyAgICAxMTUsIDE0LCA3LCAyMTgsIDExNCwgMTQsIDcsIDIxOCwgMTEzLCAxNCwgNywgMjE4LCAxMTIsIDE0LCA3LCAyMTgsIDExMSwgCisgICAgMTQsIDcsIDIxOCwgMTEwLCAxNCwgNywgMjE4LCAxMDksIDE0LCA3LCAyMTgsIDEwOCwgMTQsIDcsIDIxOCwgMTA3LCAxNCwgCisgICAgNywgMjE3LCAyMjIsIDE0LCA3LCAyMTcsIDIyMSwgMTQsIDcsIDIxNywgMjIwLCAxNCwgNywgMjE3LCAyMTksIDE0LCA3LCAKKyAgICAyMTcsIDIxOCwgMTQsIDcsIDIxNywgMjE3LCAxNCwgNywgMjE3LCAyMTYsIDE0LCA3LCAyMTcsIDIxNSwgMTQsIDcsIDIxNywgCisgICAgMjE0LCAxNCwgNywgMjE3LCAyMTMsIDE0LCA3LCAyMTcsIDIxMiwgMTQsIDcsIDIxNywgMjExLCAxNCwgNywgMjE3LCAyMTAsIAorICAgIDE0LCA3LCAyMTcsIDIwOSwgMTQsIDcsIDIxNywgMjA4LCAxNCwgNywgMjE3LCAyMDcsIDE0LCA3LCAyMTcsIDIwNiwgMTQsIAorICAgIDcsIDIxNywgMjA1LCAxNCwgNywgMjE3LCAyMDQsIDE0LCA3LCAyMTcsIDIwMywgMTQsIDcsIDIxNywgMjAyLCAxNCwgNywgCisgICAgMjE3LCAyMDEsIDE0LCA3LCAyMTcsIDIwMCwgMTQsIDcsIDIxNywgMTk5LCAxNCwgNywgMjE3LCAxOTgsIDE0LCA3LCAyMTcsIAorICAgIDE5NywgMTQsIDcsIDIxNywgMTk2LCAxNCwgNywgMjE3LCAxOTUsIDE0LCA3LCAyMTcsIDE5NCwgMTQsIDcsIDIxNywgMTkzLCAKKyAgICAxNCwgNywgMjE3LCAxOTIsIDE0LCA3LCAyMTcsIDE5MSwgMTQsIDcsIDIxNywgMTkwLCAxNCwgNywgMjE3LCAxODksIDE0LCAKKyAgICA3LCAyMTcsIDE4OCwgMTQsIDcsIDIxNywgMTg3LCAxNCwgNywgMjE3LCAxODYsIDE0LCA3LCAyMTcsIDE4NSwgMTQsIDcsIAorICAgIDIxNywgMTg0LCAxNCwgNywgMjE3LCAxODMsIDE0LCA3LCAyMTcsIDE4MiwgMTQsIDcsIDIxNywgMTgxLCAxNCwgNywgMjE3LCAKKyAgICAxODAsIDE0LCA3LCAyMTcsIDE3OSwgMTQsIDcsIDIxNywgMTc4LCAxNCwgNywgMjE3LCAxNzcsIDE0LCA3LCAyMTcsIDE3NiwgCisgICAgMTQsIDcsIDIxNywgMTc1LCAxNCwgNywgMjE3LCAxNzQsIDE0LCA3LCAyMTcsIDE3MywgMTQsIDcsIDIxNywgMTcyLCAxNCwgCisgICAgNywgMjE3LCAxNzEsIDE0LCA3LCAyMTcsIDE3MCwgMTQsIDcsIDIxNywgMTY5LCAxNCwgNywgMjE3LCAxNjgsIDE0LCA3LCAKKyAgICAyMTcsIDE2NywgMTQsIDcsIDIxNywgMTY2LCAxNCwgNywgMjE3LCAxNjUsIDE0LCA3LCAyMTcsIDE2NCwgMTQsIDcsIDIxNywgCisgICAgMTYzLCAxNCwgNywgMjE3LCAxNjIsIDE0LCA3LCAyMTcsIDE2MSwgMTQsIDcsIDIxNywgMTYwLCAxNCwgNywgMjE3LCAxNTksIAorICAgIDE0LCA3LCAyMTcsIDE1OCwgMTQsIDcsIDIxNywgMTU3LCAxNCwgNywgMjE3LCAxNTYsIDE0LCA3LCAyMTcsIDE1NSwgMTQsIAorICAgIDcsIDIxNywgMTU0LCAxNCwgNywgMjE3LCAxNTMsIDE0LCA3LCAyMTcsIDE1MiwgMTQsIDcsIDIxNywgMTUxLCAxNCwgNywgCisgICAgMjE3LCAxNTAsIDE0LCA3LCAyMTcsIDE0OSwgMTQsIDcsIDIxNywgMTQ4LCAxNCwgNywgMjE2LCAyMjUsIDE0LCA3LCAyMTYsIAorICAgIDIyNCwgMTQsIDcsIDIxNiwgMjIzLCAxNCwgNywgMjE2LCAyMjIsIDE0LCA3LCAyMTYsIDIyMSwgMTQsIDcsIDIxNiwgMjIwLCAKKyAgICAxNCwgNywgMjE2LCAyMTksIDE0LCA3LCAyMTYsIDIxOCwgMTQsIDcsIDIxNiwgMjE3LCAxNCwgNywgMjE2LCAyMTYsIDE0LCAKKyAgICA3LCAyMTYsIDIxNSwgMTQsIDcsIDIxNiwgMjE0LCAxNCwgNywgMjE2LCAyMTMsIDE0LCA3LCAyMTQsIDE2NiwgMTQsIDcsIAorICAgIDIxNCwgMTY1LCAxNCwgNywgMjE0LCAxNjQsIDE0LCA3LCAyMTQsIDE2MywgMTQsIDcsIDIxNCwgMTYyLCAxNCwgNywgMjE0LCAKKyAgICAxNjEsIDE0LCA3LCAyMTQsIDE2MCwgMTQsIDcsIDIxNCwgMzEsIDE0LCA3LCAyMTQsIDMwLCAxNCwgNywgMjE0LCAyOSwgMTQsIAorICAgIDcsIDIxNCwgMjgsIDE0LCA3LCAyMTQsIDI3LCAxNCwgNywgMjE0LCAyNiwgMTQsIDcsIDIxNCwgMjUsIDE0LCA3LCAyMTQsIAorICAgIDI0LCAxNCwgNywgMjE0LCAyMywgMTQsIDcsIDIxNCwgMjIsIDE0LCA3LCAyMTQsIDIxLCAxNCwgNywgMjE0LCAyMCwgMTQsIAorICAgIDcsIDIxNCwgMTksIDE0LCA3LCAyMTQsIDE4LCAxNCwgNywgMjE0LCAxNywgMTQsIDcsIDIxNCwgMTYsIDE0LCA3LCAyMTQsIAorICAgIDE1LCAxNCwgNywgMjE0LCAxNCwgMTQsIDcsIDIxNCwgMTMsIDE0LCA3LCAyMTQsIDEyLCAxNCwgNywgMjE0LCAxMSwgMTQsIAorICAgIDcsIDIxNCwgMTAsIDE0LCA3LCAyMTQsIDksIDE0LCA3LCAyMTQsIDgsIDE0LCA3LCAyMTQsIDcsIDE0LCA3LCAyMTQsIDYsIAorICAgIDE0LCA3LCAyMTQsIDUsIDE0LCA3LCAyMTQsIDQsIDE0LCA3LCAyMTQsIDMsIDE0LCA3LCAyMTQsIDIsIDE0LCA3LCAyMTQsIAorICAgIDEsIDE0LCA3LCAyMTQsIDAsIDE0LCA3LCAyMTMsIDI1NSwgMTQsIDcsIDIxMywgMjU0LCAxNCwgNywgMjEyLCAxMTksIDE0LCAKKyAgICA3LCAyMTIsIDExOCwgMTQsIDcsIDIxMiwgMTE3LCAxNCwgNywgMjEyLCAxMTYsIDE0LCA3LCAyMTIsIDExNSwgMTQsIDcsIAorICAgIDIxMiwgMTE0LCAxNCwgNywgMjEyLCAxMTMsIDE0LCA3LCAyMTIsIDExMiwgMTQsIDcsIDIxMiwgMTExLCAxNCwgNywgMjEyLCAKKyAgICAxMTAsIDE0LCA3LCAyMTIsIDEwOSwgMTQsIDcsIDIxMiwgMTA4LCAxNCwgNywgMjEyLCAxMDcsIDE0LCA3LCAyMTIsIDEwNiwgCisgICAgMTQsIDcsIDIxMiwgMTA1LCAxNCwgNywgMjEyLCAxMDQsIDE0LCA3LCAyMTIsIDEwMywgMTQsIDcsIDIxMiwgMTAyLCAxNCwgCisgICAgNywgMjEyLCAxMDEsIDE0LCA3LCAyMTIsIDEwMCwgMTQsIDcsIDIxMiwgOTksIDE0LCA3LCAyMTIsIDk4LCAxNCwgNywgMjEyLCAKKyAgICA5NywgMTQsIDcsIDIxMiwgOTYsIDE0LCA3LCAyMTIsIDk1LCAxNCwgNywgMjEyLCA5NCwgMTQsIDcsIDIxMiwgOTMsIDE0LCAKKyAgICA3LCAyMTIsIDkyLCAxNCwgNywgMjEyLCA5MSwgMTQsIDcsIDIxMiwgOTAsIDE0LCA3LCAyMTIsIDg5LCAxNCwgNywgMjEyLCAKKyAgICA4OCwgMTQsIDcsIDIxMiwgODcsIDE0LCA3LCAyMTIsIDg2LCAxNCwgNywgMjEyLCA4NSwgMTQsIDcsIDIxMiwgODQsIDE0LCAKKyAgICA3LCAyMTIsIDgzLCAxNCwgNywgMjEyLCA4MiwgMTQsIDcsIDIxMiwgODEsIDE0LCA3LCAyMTIsIDgwLCAxNCwgNywgMjEyLCAKKyAgICA3OSwgMTQsIDcsIDIxMiwgNzgsIDE0LCA3LCAyMTIsIDc3LCAxNCwgNywgMjEyLCA3NiwgMTQsIDcsIDIxMiwgNzUsIDE0LCAKKyAgICA3LCAyMTIsIDc0LCAxNCwgNywgMjEyLCA3MywgMTQsIDcsIDIxMiwgNzIsIDE0LCA3LCAyMTIsIDcxLCAxNCwgNywgMjEyLCAKKyAgICA3MCwgMTQsIDcsIDIxMiwgNjksIDE0LCA3LCAyMTIsIDY4LCAxNCwgNywgMjEyLCA2NywgMTQsIDcsIDIxMiwgNjYsIDE0LCAKKyAgICA3LCAyMDcsIDgxLCAxNCwgNywgMjA3LCA4MCwgMTQsIDcsIDIwNywgNzksIDE0LCA3LCAyMDcsIDc4LCAxNCwgNywgMjA3LCAKKyAgICA3NywgMTQsIDcsIDIwNywgNzYsIDE0LCA3LCAyMDcsIDc1LCAxNCwgNywgMjA3LCA3NCwgMTQsIDcsIDIwNywgNzMsIDE0LCAKKyAgICA3LCAyMDcsIDcyLCAxNCwgNywgMjA3LCA3MSwgMTQsIDcsIDIwNywgNzAsIDE0LCA3LCAyMDcsIDY5LCAxNCwgNywgMjA3LCAKKyAgICA2OCwgMTQsIDcsIDIwNywgNjcsIDE0LCA3LCAyMDcsIDY2LCAxNCwgNywgMjA3LCA2NSwgMTQsIDcsIDIwNywgNjQsIDE0LCAKKyAgICA3LCAyMDcsIDYzLCAxNCwgNywgMjA3LCA2MiwgMTQsIDcsIDIwNywgNjEsIDE0LCA3LCAyMDcsIDYwLCAxNCwgNywgMjA3LCAKKyAgICA1OSwgMTQsIDcsIDIwNywgNTgsIDE0LCA3LCAyMDcsIDU3LCAxNCwgNywgMjA3LCA1NiwgMTQsIDcsIDIwNywgNTUsIDE0LCAKKyAgICA3LCAyMDcsIDU0LCAxNCwgNywgMjA3LCA1MywgMTQsIDcsIDIwNywgNTIsIDE0LCA3LCAyMDcsIDUxLCAxNCwgNywgMjA3LCAKKyAgICA1MCwgMTQsIDcsIDIwNywgNDksIDE0LCA3LCAyMDcsIDQ4LCAxNCwgNywgMjA3LCA0NywgMTQsIDcsIDIwNywgNDYsIDE0LCAKKyAgICA3LCAyMDcsIDQ1LCAxNCwgNywgMjA3LCA0NCwgMTQsIDcsIDIwNywgNDMsIDE0LCA3LCAyMDcsIDQyLCAxNCwgNywgMjA3LCAKKyAgICA0MSwgMTQsIDcsIDIwNywgNDAsIDE0LCA3LCAyMDcsIDM5LCAxNCwgNywgMjA3LCAzOCwgMTQsIDcsIDIwNCwgOTUsIDE0LCAKKyAgICA3LCAyMDQsIDk0LCAxNCwgNywgMjA0LCA5MywgMTQsIDcsIDIwNCwgOTIsIDE0LCA3LCAyMDQsIDkxLCAxNCwgNywgMjA0LCAKKyAgICA5MCwgMTQsIDcsIDIwNCwgODksIDE0LCA3LCAyMDQsIDg4LCAxNCwgNywgMjA0LCA4NywgMTQsIDcsIDIwNCwgODYsIDE0LCAKKyAgICA3LCAyMDQsIDg1LCAxNCwgNywgMjA0LCA4NCwgMTQsIDcsIDIwNCwgODMsIDE0LCA3LCAyMDQsIDgyLCAxNCwgNywgMjA0LCAKKyAgICA4MSwgMTQsIDcsIDIwNCwgODAsIDE0LCA3LCAyMDQsIDc5LCAxNCwgNywgMjA0LCA3OCwgMTQsIDcsIDIwNCwgNzcsIDE0LCAKKyAgICA3LCAyMDQsIDc2LCAxNCwgNywgMjA0LCA3NSwgMTQsIDcsIDIwNCwgNzQsIDE0LCA3LCAyMDQsIDczLCAxNCwgNywgMjA0LCAKKyAgICA3MiwgMTQsIDcsIDIwNCwgNzEsIDE0LCA3LCAyMDQsIDcwLCAxNCwgNywgMjA0LCA2OSwgMTQsIDcsIDIwNCwgNjgsIDE0LCAKKyAgICA3LCAyMDQsIDY3LCAxNCwgNywgMjA0LCA2NiwgMTQsIDcsIDIwNCwgNjUsIDE0LCA3LCAyMDQsIDY0LCAxNCwgNywgMjA0LCAKKyAgICA2MywgMTQsIDcsIDIwNCwgNjIsIDE0LCA3LCAyMDQsIDYxLCAxNCwgNywgMjA0LCA2MCwgMTQsIDcsIDIwNCwgNTksIDE0LCAKKyAgICA3LCAyMDQsIDU4LCAxNCwgNywgMjA0LCA1NywgMTQsIDcsIDIwNCwgNTYsIDE0LCA3LCAyMDQsIDU1LCAxNCwgNywgMjA0LCAKKyAgICA1NCwgMTQsIDcsIDIwNCwgNTMsIDE0LCA3LCAyMDQsIDUyLCAxNCwgNywgMjA0LCA1MSwgMTQsIDcsIDIwNCwgNTAsIDE0LCAKKyAgICA3LCAyMDQsIDQ5LCAxNCwgNywgMjAzLCAxNjcsIDE0LCA3LCAyMDMsIDE2NiwgMTQsIDcsIDIwMywgMTY1LCAxNCwgNywgCisgICAgMjAzLCAxNjQsIDE0LCA3LCAyMDMsIDE2MywgMTQsIDcsIDIwMywgMTYyLCAxNCwgNywgMjAzLCAxNjEsIDE0LCA3LCAyMDMsIAorICAgIDE2MCwgMTQsIDcsIDIwMywgMTU5LCAxNCwgNywgMjAzLCAxNTgsIDE0LCA3LCAyMDMsIDE1NywgMTQsIDcsIDIwMywgMTU2LCAKKyAgICAxNCwgNywgMjAzLCAxNTUsIDE0LCA3LCAyMDMsIDE1NCwgMTQsIDcsIDIwMywgMTUzLCAxNCwgNywgMjAzLCAxNTIsIDE0LCAKKyAgICA3LCAyMDMsIDE1MSwgMTQsIDcsIDIwMywgMTUwLCAxNCwgNywgMjAzLCAxNDksIDE0LCA3LCAyMDMsIDE0OCwgMTQsIDcsIAorICAgIDIwMywgMTQ3LCAxNCwgNywgMjAzLCAxNDYsIDE0LCA3LCAyMDMsIDE0NSwgMTQsIDcsIDIwMywgMTQ0LCAxNCwgNywgMjAzLCAKKyAgICAxNDMsIDE0LCA3LCAyMDMsIDE0MiwgMTQsIDcsIDIwMywgMTQxLCAxNCwgNywgMjAzLCAxNDAsIDE0LCA3LCAyMDMsIDEzOSwgCisgICAgMTQsIDcsIDIwMywgMTM4LCAxNCwgNywgMjAzLCAxMzcsIDE0LCA3LCAyMDMsIDEzNiwgMTQsIDcsIDIwMywgMTM1LCAxNCwgCisgICAgNywgMjAzLCAxMzQsIDE0LCA3LCAyMDMsIDEzMywgMTQsIDcsIDIwMywgMTMyLCAxNCwgNywgMjAzLCAxMzEsIDE0LCA3LCAKKyAgICAyMDMsIDEzMCwgMTQsIDcsIDIwMywgMTI5LCAxNCwgNywgMjAzLCAxMjgsIDE0LCA3LCAyMDMsIDEyNywgMTQsIDcsIDIwMywgCisgICAgMTI2LCAxNCwgNywgMjAzLCAxMjUsIDE0LCA3LCAyMDMsIDEyNCwgMTQsIDcsIDIwMywgMTIzLCAxNCwgNywgMjAzLCAxMjIsIAorICAgIDE0LCA3LCAyMDMsIDEyMSwgMTQsIDcsIDIwMywgMTIwLCAxNCwgNywgMjAzLCAxMTksIDE0LCA3LCAyMDMsIDExOCwgMTQsIAorICAgIDcsIDIwMywgMTE3LCAxNCwgNywgMjAzLCAxMTYsIDE0LCA3LCAyMDMsIDExNSwgMTQsIDcsIDIwMywgMTE0LCAxNCwgNywgCisgICAgMjAzLCAxMTMsIDE0LCA3LCAyMDMsIDExMiwgMTQsIDcsIDIwMywgMTExLCAxNCwgNywgMjAzLCAxMTAsIDE0LCA3LCAyMDMsIAorICAgIDEwOSwgMTQsIDcsIDIwMywgMTA4LCAxNCwgNywgMjAzLCAxMDcsIDE0LCA3LCAyMDMsIDEwNiwgMTQsIDcsIDIwMywgMTA1LCAKKyAgICAxNCwgNywgMjAzLCAxMDQsIDE0LCA3LCAyMDMsIDEwMywgMTQsIDcsIDIwMywgMTAyLCAxNCwgNywgMjAzLCAxMDEsIDE0LCAKKyAgICA3LCAyMDMsIDEwMCwgMTQsIDcsIDIwMywgOTksIDE0LCA3LCAyMDMsIDk4LCAxNCwgNywgMjAzLCA5NywgMTQsIDcsIDIwMywgCisgICAgOTYsIDE0LCA3LCAyMDMsIDk1LCAxNCwgNywgMjAzLCA5NCwgMTQsIDcsIDIwMywgOTMsIDE0LCA3LCAyMDMsIDkyLCAxNCwgCisgICAgNywgMjAzLCA5MSwgMTQsIDcsIDIwMSwgMTQ2LCAxNCwgNywgMjAxLCAxNDUsIDE0LCA3LCAyMDEsIDE0NCwgMTQsIDcsIAorICAgIDIwMSwgMTQzLCAxNCwgNywgMjAxLCAxNDIsIDE0LCA3LCAyMDEsIDE0MSwgMTQsIDcsIDIwMSwgMTQwLCAxNCwgNywgMjAxLCAKKyAgICAxMzksIDE0LCA3LCAyMDEsIDEzOCwgMTQsIDcsIDIwMSwgMTM3LCAxNCwgNywgMjAxLCAxMzYsIDE0LCA3LCAyMDEsIDEzNSwgCisgICAgMTQsIDcsIDIwMSwgMTM0LCAxNCwgNywgMjAxLCAxMzMsIDE0LCA3LCAyMDEsIDEzMiwgMTQsIDcsIDIwMSwgMTMxLCAxNCwgCisgICAgNywgMjAxLCAxMzAsIDE0LCA3LCAyMDEsIDEyOSwgMTQsIDcsIDIwMSwgMTI4LCAxNCwgNywgMjAxLCAxMjcsIDE0LCA3LCAKKyAgICAyMDEsIDEyNiwgMTQsIDcsIDIwMSwgMTI1LCAxNCwgNywgMjAxLCAxMjQsIDE0LCA3LCAyMDEsIDEyMywgMTQsIDcsIDIwMSwgCisgICAgMTIyLCAxNCwgNywgMjAxLCAxMjEsIDE0LCA3LCAyMDEsIDEyMCwgMTQsIDcsIDIwMSwgMTE5LCAxNCwgNywgMjAxLCAxMTgsIAorICAgIDE0LCA3LCAyMDEsIDExNywgMTQsIDcsIDIwMSwgMTE2LCAxNCwgNywgMjAxLCAxMTUsIDE0LCA3LCAyMDAsIDE5MywgMTQsIAorICAgIDcsIDIwMCwgMTkyLCAxNCwgNywgMjAwLCAxOTEsIDE0LCA3LCAyMDAsIDE5MCwgMTQsIDcsIDIwMCwgMTg5LCAxNCwgNywgCisgICAgMjAwLCAxODgsIDE0LCA3LCAyMDAsIDE4NywgMTQsIDcsIDIwMCwgMTg2LCAxNCwgNywgMjAwLCAxODUsIDE0LCA3LCAyMDAsIAorICAgIDE4NCwgMTQsIDcsIDIwMCwgMTgzLCAxNCwgNywgMjAwLCAxODIsIDE0LCA3LCAyMDAsIDEyMSwgMTQsIDcsIDIwMCwgMTIwLCAKKyAgICAxNCwgNywgMjAwLCAxMTksIDE0LCA3LCAyMDAsIDExOCwgMTQsIDcsIDIwMCwgMTE3LCAxNCwgNywgMjAwLCAxMTYsIDE0LCAKKyAgICA3LCAyMDAsIDExNSwgMTQsIDcsIDIwMCwgMTE0LCAxNCwgNywgMjAwLCAxMTMsIDE0LCA3LCAxOTksIDE1NiwgMTQsIDcsIAorICAgIDE5OSwgMTU1LCAxNCwgNywgMTk5LCAxNTQsIDE0LCA3LCAxOTksIDE1MywgMTQsIDcsIDE5OSwgMTUyLCAxNCwgNywgMTk5LCAKKyAgICAxNTEsIDE0LCA3LCAxOTksIDE1MCwgMTQsIDcsIDE5OSwgMTQ5LCAxNCwgNywgMTk5LCAxNDgsIDE0LCA3LCAxOTksIDE0NywgCisgICAgMTQsIDcsIDE5OSwgMTQ2LCAxNCwgNywgMTk5LCAxNDUsIDE0LCA3LCAxOTksIDE0NCwgMTQsIDcsIDE5OSwgMTQzLCAxNCwgCisgICAgNywgMTk5LCAxNDIsIDE0LCA3LCAxOTksIDE0MSwgMTQsIDcsIDE5OSwgMTQwLCAxNCwgNywgMTk5LCAxMzksIDE0LCA3LCAKKyAgICAxOTksIDEzOCwgMTQsIDcsIDE5OSwgMTM3LCAxNCwgNywgMTk5LCAxMzYsIDE0LCA3LCAxOTksIDEzNSwgMTQsIDcsIDE5OSwgCisgICAgMTM0LCAxNCwgNywgMTk5LCAxMzMsIDE0LCA3LCAxOTksIDEzMiwgMTQsIDcsIDE5OSwgMTMxLCAxNCwgNywgMTk5LCAxMzAsIAorICAgIDE0LCA3LCAxOTksIDEyOSwgMTQsIDcsIDE5OSwgMTI4LCAxNCwgNywgMTk5LCAxMjcsIDE0LCA3LCAxOTksIDEyNiwgMTQsIAorICAgIDcsIDE5OSwgMTI1LCAxNCwgNywgMTk5LCAxMjQsIDE0LCA3LCAxOTksIDEyMywgMTQsIDcsIDE5OSwgMTIyLCAxNCwgNywgCisgICAgMTk5LCAxMjEsIDE0LCA3LCAxOTksIDEyMCwgMTQsIDcsIDE5OSwgMTE5LCAxNCwgNywgMTk5LCAxMTgsIDE0LCA3LCAxOTksIAorICAgIDExNywgMTQsIDcsIDE5OSwgMTE2LCAxNCwgNywgMjUyLCAxMzcsIDE0LCA3LCAyNTIsIDEzNiwgMTQsIDcsIDI1MiwgMTM1LCAKKyAgICAxNCwgNywgMjUyLCAxMzQsIDE0LCA3LCAyNTIsIDEzMywgMTQsIDcsIDI1MiwgMTMyLCAxNCwgNywgMjUyLCAxMzEsIDE0LCAKKyAgICA3LCAyNTIsIDEzMCwgMTQsIDcsIDI1MiwgMTI5LCAxNCwgNywgMjUyLCAxMjgsIDE0LCA3LCAyNTIsIDEyNywgMTQsIDcsIAorICAgIDI1MiwgMTI2LCAxNCwgNywgMjUyLCAxMjUsIDE0LCA3LCAyNTIsIDEyNCwgMTQsIDcsIDI1MiwgMTIzLCAxNCwgNywgMjUyLCAKKyAgICAxMjIsIDE0LCA3LCAyNTIsIDEyMSwgMTQsIDcsIDI1MiwgMTIwLCAxNCwgNywgMjUyLCAxMTksIDE0LCA3LCAyNTIsIDExOCwgCisgICAgMTQsIDcsIDI1MiwgMTE3LCAxNCwgNywgMjUyLCAxMTYsIDE0LCA3LCAyNTIsIDExNSwgMTQsIDcsIDI1MiwgMTE0LCAxNCwgCisgICAgNywgMjUyLCAxMTMsIDE0LCA3LCAyNTIsIDExMiwgMTQsIDcsIDI1MiwgMTExLCAxNCwgNywgMjUyLCAxMTAsIDE0LCA3LCAKKyAgICAyNTIsIDEwOSwgMTQsIDcsIDI1MiwgMTA4LCAxNCwgNywgMjUyLCAxMDcsIDE0LCA3LCAyNTIsIDEwNiwgMTQsIDcsIDI1MiwgCisgICAgMTA1LCAxNCwgNywgMjUyLCAxMDQsIDI4LCA3LCAyNTUsIDEzMSwgMjgsIDcsIDI1NSwgMTMwLCAyOCwgNywgMjU1LCAxMjksIAorICAgIDI4LCA3LCAyNTUsIDEyOCwgMjgsIDcsIDI1NSwgMTI3LCAyOCwgNywgMjU1LCAxMjUsIDI4LCA3LCAyNTUsIDEyMiwgMjgsIAorICAgIDcsIDI1NSwgMTIxLCAyOCwgNywgMjU1LCAxMjAsIDI4LCA3LCAyNTUsIDExOSwgMjgsIDcsIDI1NSwgMTE4LCAyOCwgNywgCisgICAgMjU1LCAxMTcsIDI4LCA3LCAyNTUsIDExNiwgMjgsIDcsIDI1NSwgMTE1LCAyOCwgNywgMjU1LCAxMTQsIDI4LCA3LCAyNTUsIAorICAgIDExMiwgMjgsIDcsIDI1NSwgMTExLCAyOCwgNywgMjU1LCAxMTAsIDI4LCA3LCAyNTUsIDEwOCwgMjgsIDcsIDI1NSwgMTA3LCAKKyAgICAyOCwgNywgMjU1LCAxMDYsIDI4LCA3LCAyNTUsIDEwNSwgMjgsIDcsIDI1NSwgMTA0LCAyOCwgNywgMjU1LCAxMDMsIDI4LCAKKyAgICA3LCAyNTUsIDEwMiwgMjgsIDcsIDI1NSwgMTAxLCAyOCwgNywgMjU1LCAxMDAsIDI4LCA3LCAyNTUsIDk5LCAyOCwgNywgCisgICAgMjU1LCA5OCwgMjgsIDcsIDI1NSwgOTcsIDI4LCA3LCAyNTUsIDk1LCAyOCwgNywgMjU1LCA5NCwgMjgsIDcsIDI1NSwgOTMsIAorICAgIDI4LCA3LCAyNTUsIDkyLCAyOCwgNywgMjU1LCA5MCwgMjgsIDcsIDI1NSwgODksIDI4LCA3LCAyNTUsIDg4LCAyOCwgNywgCisgICAgMjU1LCA4NywgMjgsIDcsIDI1NSwgODYsIDI4LCA3LCAyNTUsIDg1LCAyOCwgNywgMjU1LCA4NCwgMjgsIDcsIDI1NSwgODMsIAorICAgIDI4LCA3LCAyNTUsIDgyLCAyOCwgNywgMjU1LCA4MCwgMjgsIDcsIDI1NSwgNzksIDI4LCA3LCAyNTUsIDc4LCAyOCwgNywgCisgICAgMjU1LCA3NiwgMjgsIDcsIDI1NSwgNzQsIDI4LCA3LCAyNTUsIDczLCAyOCwgNywgMjU1LCA3MiwgMjgsIDcsIDI1NSwgNzEsIAorICAgIDI4LCA3LCAyNTUsIDcwLCAyOCwgNywgMjU1LCA2OSwgMjgsIDcsIDI1NSwgNjgsIDI4LCA3LCAyNTUsIDY3LCAyOCwgNywgCisgICAgMjU1LCA2NiwgMjgsIDcsIDI1NSwgNjUsIDI4LCA3LCAyNTUsIDY0LCAyOCwgNywgMjU1LCA2MywgMjgsIDcsIDI1NSwgNjIsIAorICAgIDI4LCA3LCAyNTUsIDYxLCAyOCwgNywgMjU1LCA2MCwgMjgsIDcsIDI1NSwgNTksIDI4LCA3LCAyNTUsIDU4LCAyOCwgNywgCisgICAgMjU1LCA1NywgMjgsIDcsIDI1NSwgNTYsIDI4LCA3LCAyNTUsIDU1LCAyOCwgNywgMjU1LCA1NCwgMjgsIDcsIDI1NSwgNTMsIAorICAgIDI4LCA3LCAyNTUsIDUyLCAyOCwgNywgMjU1LCA1MSwgMjgsIDcsIDI1NSwgNTAsIDI4LCA3LCAyNTUsIDQ5LCAyOCwgNywgCisgICAgMjU1LCA0OCwgMjgsIDcsIDI1NSwgNDcsIDI4LCA3LCAyNTUsIDQ2LCAyOCwgNywgMjU1LCA0NSwgMjgsIDcsIDI1NSwgNDQsIAorICAgIDI4LCA3LCAyNTUsIDQzLCAyOCwgNywgMjU1LCA0MiwgMjgsIDcsIDI1NSwgNDEsIDI4LCA3LCAyNTUsIDQwLCAyOCwgNywgCisgICAgMjU1LCAzOSwgMjgsIDcsIDI1NSwgMzgsIDI4LCA3LCAyNTUsIDM3LCAyOCwgNywgMjU1LCAzNiwgMjgsIDcsIDI1NSwgMzUsIAorICAgIDI4LCA3LCAyNTUsIDM0LCAyOCwgNywgMjU1LCAzMywgMjgsIDcsIDI1NSwgMzIsIDI4LCA3LCAyNTUsIDMxLCAyOCwgNywgCisgICAgMjU1LCAzMCwgMjgsIDcsIDI1NSwgMjksIDI4LCA3LCAyNTUsIDI4LCAyOCwgNywgMjU1LCAyNywgMjgsIDcsIDI1NSwgMjYsIAorICAgIDI4LCA3LCAyNTUsIDI1LCAyOCwgNywgMjU1LCAyNCwgMjgsIDcsIDI1NSwgMjMsIDI4LCA3LCAyNTUsIDIyLCAyOCwgNywgCisgICAgMjU1LCAyMSwgMjgsIDcsIDI1NSwgMjAsIDI4LCA3LCAyNTUsIDE5LCAyOCwgNywgMjU1LCAxOCwgMjgsIDcsIDI1NSwgMTcsIAorICAgIDI4LCA3LCAyNTUsIDE2LCAyOCwgNywgMjU1LCAxNSwgMjgsIDcsIDI1NSwgMTQsIDI4LCA3LCAyNTUsIDEzLCAyOCwgNywgCisgICAgMjU1LCAxMiwgMjgsIDcsIDI1NSwgMTEsIDI4LCA3LCAyNTUsIDEwLCAyOCwgNywgMjU1LCA4LCAyOCwgNywgMjU1LCA3LCAKKyAgICAyOCwgNywgMjU1LCA2LCAyOCwgNywgMjU1LCA1LCAyOCwgNywgMjU1LCA0LCAyOCwgNywgMjU1LCAzLCAyOCwgNywgMjU1LCAKKyAgICAyLCAyOCwgNywgMjU1LCAxLCAyOCwgNywgMjU1LCAwLCAyOCwgNywgMjU0LCAyNTUsIDI4LCA3LCAyNTQsIDI1NCwgMjgsIDcsIAorICAgIDI1NCwgMjUzLCAyOCwgNywgMjU0LCAyNTIsIDI4LCA3LCAyNTQsIDI1MSwgMjgsIDcsIDI1NCwgMjUwLCAyOCwgNywgMjU0LCAKKyAgICAyNDksIDI4LCA3LCAyNTQsIDI0OCwgMjgsIDcsIDI1NCwgMjQ3LCAyOCwgNywgMjU0LCAyNDYsIDI4LCA3LCAyNTQsIDI0NSwgCisgICAgMjgsIDcsIDI1NCwgMjQ0LCAyOCwgNywgMjU0LCAyNDMsIDI4LCA3LCAyNTQsIDI0MiwgMjgsIDcsIDI1NCwgMjQxLCAyOCwgCisgICAgNywgMjU0LCAyNDAsIDI4LCA3LCAyNTQsIDIzOSwgMjgsIDcsIDI1NCwgMjM4LCAyOCwgNywgMjU0LCAyMzcsIDI4LCA3LCAKKyAgICAyNTQsIDIzNiwgMjgsIDcsIDI1NCwgMjM1LCAyOCwgNywgMjU0LCAyMzQsIDI4LCA3LCAyNTQsIDIzMywgMjgsIDcsIDI1NCwgCisgICAgMjMyLCAyOCwgNywgMjU0LCAyMzEsIDI4LCA3LCAyNTQsIDIyOSwgMjgsIDcsIDI1NCwgMjI4LCAyOCwgNywgMjU0LCAyMjcsIAorICAgIDI4LCA3LCAyNTQsIDIyNiwgMjgsIDcsIDI1NCwgMjI1LCAyOCwgNywgMjU0LCAyMjQsIDI4LCA3LCAyNTQsIDIyMywgMjgsIAorICAgIDcsIDI1NCwgMjIyLCAyOCwgNywgMjU0LCAyMjEsIDI4LCA3LCAyNTQsIDIyMCwgMjgsIDcsIDI1NCwgMjE5LCAyOCwgNywgCisgICAgMjU0LCAyMTgsIDI4LCA3LCAyNTQsIDIxNiwgMjgsIDcsIDI1NCwgMjE1LCAyOCwgNywgMjU0LCAyMTQsIDI4LCA3LCAyNTQsIAorICAgIDIxMywgMjgsIDcsIDI1NCwgMjEyLCAyOCwgNywgMjU0LCAyMTEsIDI4LCA3LCAyNTQsIDIxMCwgMjgsIDcsIDI1NCwgMjA5LCAKKyAgICAyOCwgNywgMjU0LCAyMDgsIDI4LCA3LCAyNTQsIDIwNywgMjgsIDcsIDI1NCwgMjA2LCAyOCwgNywgMjU0LCAyMDUsIDI4LCAKKyAgICA3LCAyNTQsIDIwNCwgMjgsIDcsIDI1NCwgMjAzLCAyOCwgNywgMjU0LCAyMDIsIDI4LCA3LCAyNTQsIDIwMSwgMjgsIDcsIAorICAgIDI1NCwgMjAwLCAyOCwgNywgMjU0LCAxOTksIDI4LCA3LCAyNTQsIDE5OCwgMjgsIDcsIDI1NCwgMTk3LCAyOCwgNywgMjU0LCAKKyAgICAxOTYsIDI4LCA3LCAyNTQsIDE5NSwgMjgsIDcsIDI1NCwgMTk0LCAyOCwgNywgMjU0LCAxOTMsIDI4LCA3LCAyNTQsIDE5MiwgCisgICAgMjgsIDcsIDI1NCwgMTkxLCAyOCwgNywgMjU0LCAxOTAsIDI4LCA3LCAyNTQsIDE4OSwgMjgsIDcsIDI1NCwgMTg4LCAyOCwgCisgICAgNywgMjU0LCAxODcsIDI4LCA3LCAyNTQsIDE4NiwgMjgsIDcsIDI1NCwgMTg1LCAyOCwgNywgMjU0LCAxODQsIDI4LCA3LCAKKyAgICAyNTQsIDE4MywgMjgsIDcsIDI1NCwgMTgyLCAyOCwgNywgMjU0LCAxODEsIDI4LCA3LCAyNTQsIDE4MCwgMjgsIDcsIDI1NCwgCisgICAgMTc5LCAyOCwgNywgMjU0LCAxNzgsIDI4LCA3LCAyNTQsIDE3NywgMjgsIDcsIDI1NCwgMTc2LCAyOCwgNywgMjU0LCAxNzUsIAorICAgIDI4LCA3LCAyNTQsIDE3NCwgMjgsIDcsIDI1NCwgMTczLCAyOCwgNywgMjU0LCAxNzIsIDI4LCA3LCAyNTQsIDE3MSwgMjgsIAorICAgIDcsIDI1NCwgMTcwLCAyOCwgNywgMjU0LCAxNjksIDI4LCA3LCAyNTQsIDE2OCwgMjgsIDcsIDI1NCwgMTY3LCAyOCwgNywgCisgICAgMjU0LCAxNjYsIDI4LCA3LCAyNTQsIDE2NSwgMjgsIDcsIDI1NCwgMTY0LCAyOCwgNywgMjU0LCAxNjMsIDI4LCA3LCAyNTQsIAorICAgIDE2MiwgMjgsIDcsIDI1NCwgMTYxLCAyOCwgNywgMjU0LCAxNjAsIDI4LCA3LCAyNTQsIDE1OSwgMjgsIDcsIDI1NCwgMTU4LCAKKyAgICAyOCwgNywgMjU0LCAxNTcsIDI4LCA3LCAyNTQsIDE1NiwgMjgsIDcsIDI1NCwgMTU1LCAyOCwgNywgMjU0LCAxNTQsIDI4LCAKKyAgICA3LCAyNTQsIDE1MywgMjgsIDcsIDI1NCwgMTUyLCAyOCwgNywgMjU0LCAxNTEsIDI4LCA3LCAyNTQsIDE1MCwgMjgsIDcsIAorICAgIDI1NCwgMTQ5LCAyOCwgNywgMjU0LCAxNDgsIDI4LCA3LCAyNTQsIDE0NiwgMjgsIDcsIDI1NCwgMTQ1LCAyOCwgNywgMjU0LCAKKyAgICAxNDQsIDI4LCA3LCAyNTQsIDE0MywgMjgsIDcsIDI1NCwgMTQyLCAyOCwgNywgMjU0LCAxNDEsIDI4LCA3LCAyNTQsIDE0MCwgCisgICAgMjgsIDcsIDI1NCwgMTM5LCAyOCwgNywgMjU0LCAxMzgsIDI4LCA3LCAyNTQsIDEzNywgMjgsIDcsIDI1NCwgMTM2LCAyOCwgCisgICAgNywgMjU0LCAxMzUsIDI4LCA3LCAyNTQsIDEzNCwgMjgsIDcsIDI1NCwgMTMzLCAyOCwgNywgMjU0LCAxMzIsIDI4LCA3LCAKKyAgICAyNTQsIDEzMSwgMjgsIDcsIDI1NCwgMTMwLCAyOCwgNywgMjU0LCAxMjksIDI4LCA3LCAyNTQsIDEyOCwgMjgsIDcsIDI1NCwgCisgICAgMTI3LCAyOCwgNywgMjU0LCAxMjYsIDI4LCA3LCAyNTQsIDEyNSwgMjgsIDcsIDI1NCwgMTI0LCAyOCwgNywgMjU0LCAxMjMsIAorICAgIDI4LCA3LCAyNTQsIDEyMiwgMjgsIDcsIDI1NCwgMTIxLCAyOCwgNywgMjU0LCAxMjAsIDI4LCA3LCAyNTQsIDExOSwgMjgsIAorICAgIDcsIDI1NCwgMTE4LCAyOCwgNywgMjU0LCAxMTcsIDI4LCA3LCAyNTQsIDExNiwgMjgsIDcsIDI1NCwgMTE1LCAyOCwgNywgCisgICAgMjU0LCAxMTQsIDI4LCA3LCAyNTQsIDExMywgMjgsIDcsIDI1NCwgMTEyLCAyOCwgNywgMjU0LCAxMTEsIDI4LCA3LCAyNTQsIAorICAgIDExMCwgMjgsIDcsIDI1NCwgMTA5LCAyOCwgNywgMjU0LCAxMDgsIDI4LCA3LCAyNTQsIDEwNywgMjgsIDcsIDI1NCwgMTA2LCAKKyAgICAyOCwgNywgMjU0LCAxMDUsIDI4LCA3LCAyNTQsIDEwNCwgMjgsIDcsIDI1NCwgMTAzLCAyOCwgNywgMjU0LCAxMDIsIDI4LCAKKyAgICA3LCAyNTQsIDEwMSwgMjgsIDcsIDI1NCwgMTAwLCAyOCwgNywgMjU0LCA5OSwgMjgsIDcsIDI1NCwgOTgsIDI4LCA3LCAyNTQsIAorICAgIDk3LCAyOCwgNywgMjU0LCA5NiwgMjgsIDcsIDI1NCwgOTUsIDI4LCA3LCAyNTQsIDk0LCAyOCwgNywgMjU0LCA5MywgMjgsIAorICAgIDcsIDI1NCwgOTIsIDI4LCA3LCAyNTQsIDkxLCAyOCwgNywgMjU0LCA5MCwgMjgsIDcsIDI1NCwgODksIDI4LCA3LCAyNTQsIAorICAgIDg4LCAyOCwgNywgMjU0LCA4NywgMjgsIDcsIDI1NCwgODYsIDI4LCA3LCAyNTQsIDg1LCAyOCwgNywgMjU0LCA4NCwgMjgsIAorICAgIDcsIDI1NCwgODMsIDI4LCA3LCAyNTQsIDgyLCAyOCwgNywgMjU0LCA4MSwgMjgsIDcsIDI1NCwgODAsIDI4LCA3LCAyNTQsIAorICAgIDc5LCAyOCwgNywgMjU0LCA3OCwgMjgsIDcsIDI1NCwgNzcsIDI4LCA3LCAyNTQsIDc2LCAyOCwgNywgMjU0LCA3NSwgMjgsIAorICAgIDcsIDI1NCwgNzQsIDI4LCA3LCAyNTQsIDczLCAyOCwgNywgMjU0LCA3MiwgMjgsIDcsIDI1NCwgNzEsIDI4LCA3LCAyNTQsIAorICAgIDcwLCAyOCwgNywgMjU0LCA2OSwgMjgsIDcsIDI1NCwgNjgsIDI4LCA3LCAyNTQsIDY3LCAyOCwgNywgMjU0LCA2NiwgMjgsIAorICAgIDcsIDI1NCwgNjUsIDI4LCA3LCAyNTQsIDY0LCAyOCwgNywgMjU0LCA2MywgMjgsIDcsIDI1NCwgNjIsIDI4LCA3LCAyNTQsIAorICAgIDYxLCAyOCwgNywgMjU0LCA2MCwgMjgsIDcsIDI1NCwgNTksIDI4LCA3LCAyNTQsIDU4LCAyOCwgNywgMjU0LCA1NywgMjgsIAorICAgIDcsIDI1NCwgNTYsIDI4LCA3LCAyNTQsIDU1LCAyOCwgNywgMjU0LCA1NCwgMjgsIDcsIDI1NCwgNTMsIDI4LCA3LCAyNTQsIAorICAgIDUyLCAyOCwgNywgMjU0LCA1MSwgMjgsIDcsIDI1NCwgNTAsIDI4LCA3LCAyNTQsIDQ5LCAyOCwgNywgMjU0LCA0OCwgMjgsIAorICAgIDcsIDI1NCwgNDcsIDI4LCA3LCAyNTQsIDQ2LCAyOCwgNywgMjU0LCA0NSwgMjgsIDcsIDI1NCwgNDQsIDI4LCA3LCAyNTQsIAorICAgIDQzLCAyOCwgNywgMjU0LCA0MiwgMjgsIDcsIDI1NCwgNDEsIDI4LCA3LCAyNTQsIDQwLCAyOCwgNywgMjU0LCAzOSwgMjgsIAorICAgIDcsIDI1NCwgMzgsIDI4LCA3LCAyNTQsIDM3LCAyOCwgNywgMjU0LCAzNiwgMjgsIDcsIDI1NCwgMzQsIDI4LCA3LCAyNTQsIAorICAgIDMzLCAyOCwgNywgMjU0LCAzMiwgMjgsIDcsIDI1NCwgMzEsIDI4LCA3LCAyNTQsIDMwLCAyOCwgNywgMjU0LCAyOSwgMjgsIAorICAgIDcsIDI1NCwgMjgsIDI4LCA3LCAyNTQsIDI3LCAyOCwgNywgMjU0LCAyNiwgMjgsIDcsIDI1NCwgMjUsIDI4LCA3LCAyNTQsIAorICAgIDI0LCAyOCwgNywgMjU0LCAyMSwgMjgsIDcsIDI1NCwgMjAsIDI4LCA3LCAyNTQsIDE5LCAyOCwgNywgMjU0LCAxOCwgMjgsIAorICAgIDcsIDI1NCwgMTQsIDI4LCA3LCAyNTQsIDEzLCAyOCwgNywgMjU0LCAxMiwgMjgsIDcsIDI1NCwgMTEsIDI4LCA3LCAyNTQsIAorICAgIDEwLCAyOCwgNywgMjU0LCA5LCAyOCwgNywgMjU0LCA4LCAyOCwgNywgMjU0LCA3LCAyOCwgNywgMjU0LCA2LCAyOCwgNywgCisgICAgMjU0LCA1LCAyOCwgNywgMjU0LCA0LCAyOCwgNywgMjU0LCAzLCAyOCwgNywgMjU0LCAyLCAyOCwgNywgMjU0LCAxLCAyOCwgCisgICAgNywgMjU0LCAwLCAyOCwgNywgMjUzLCAyNTUsIDI4LCA3LCAyNTMsIDI1NCwgMjgsIDcsIDI1MywgMjUzLCAyOCwgNywgMjUzLCAKKyAgICAyNTIsIDI4LCA3LCAyNTMsIDI1MCwgMjgsIDcsIDI1MywgMjQ5LCAyOCwgNywgMjUzLCAyNDgsIDI4LCA3LCAyNTMsIDI0NywgCisgICAgMjgsIDcsIDI1MywgMjQ2LCAyOCwgNywgMjUzLCAyNDUsIDI4LCA3LCAyNTMsIDI0NCwgMjgsIDcsIDI1MywgMjQzLCAyOCwgCisgICAgNywgMjUzLCAyNDIsIDI4LCA3LCAyNTMsIDI0MSwgMjgsIDcsIDI1MywgMjQwLCAyOCwgNywgMjUzLCAyMzksIDI4LCA3LCAKKyAgICAyNTMsIDIzOCwgMjgsIDcsIDI1MywgMjM3LCAyOCwgNywgMjUzLCAyMzYsIDI4LCA3LCAyNTMsIDIzNSwgMjgsIDcsIDI1MywgCisgICAgMjM0LCAyOCwgNywgMjUzLCAyMzMsIDI4LCA3LCAyNTMsIDIzMiwgMjgsIDcsIDI1MywgMjMxLCAyOCwgNywgMjUzLCAyMzAsIAorICAgIDI4LCA3LCAyNTMsIDIyOSwgMjgsIDcsIDI1MywgMjI4LCAyOCwgNywgMjUzLCAyMjcsIDI4LCA3LCAyNTMsIDIyNiwgMjgsIAorICAgIDcsIDI1MywgMjI1LCAyOCwgNywgMjUzLCAyMjQsIDI4LCA3LCAyNTMsIDIyMywgMjgsIDcsIDI1MywgMjIyLCAyOCwgNywgCisgICAgMjUzLCAyMjEsIDI4LCA3LCAyNTMsIDIyMCwgMjgsIDcsIDI1MywgMjE5LCAyOCwgNywgMjUzLCAyMTgsIDI4LCA3LCAyNTMsIAorICAgIDIxNywgMjgsIDcsIDI1MywgMjE2LCAyOCwgNywgMjUzLCAyMTUsIDI4LCA3LCAyNTMsIDIxNCwgMjgsIDcsIDI1MywgMjEzLCAKKyAgICAyOCwgNywgMjUzLCAyMTIsIDI4LCA3LCAyNTMsIDIxMSwgMjgsIDcsIDI1MywgMjEwLCAyOCwgNywgMjUzLCAyMDksIDI4LCAKKyAgICA3LCAyNTMsIDIwOCwgMjgsIDcsIDI1MywgMjA3LCAyOCwgNywgMjUzLCAyMDYsIDI4LCA3LCAyNTMsIDIwNSwgMjgsIDcsIAorICAgIDI1MywgMjA0LCAyOCwgNywgMjUzLCAyMDMsIDI4LCA3LCAyNTMsIDIwMiwgMjgsIDcsIDI1MywgMjAxLCAyOCwgNywgMjUzLCAKKyAgICAyMDAsIDI4LCA3LCAyNTMsIDE5OSwgMjgsIDcsIDI1MywgMTk4LCAyOCwgNywgMjUzLCAxOTcsIDI4LCA3LCAyNTMsIDE5NiwgCisgICAgMjgsIDcsIDI1MywgMTk1LCAyOCwgNywgMjUzLCAxOTQsIDI4LCA3LCAyNTMsIDE5MywgMjgsIDcsIDI1MywgMTkyLCAyOCwgCisgICAgNywgMjUzLCAxOTEsIDI4LCA3LCAyNTMsIDE5MCwgMjgsIDcsIDI1MywgMTg5LCAyMTMsIDI1MywgMjE3LCAzNCwgMjEzLCAKKyAgICA4OCwgMjgsIDcsIDI1MywgMTg4LCAyOCwgNywgMjUzLCAxODcsIDI4LCA3LCAyNTMsIDE4NiwgMjgsIDcsIDI1MywgMTg1LCAKKyAgICAyOCwgNywgMjUzLCAxODQsIDI4LCA3LCAyNTMsIDE4MywgMjgsIDcsIDI1MywgMTgyLCAyOCwgNywgMjUzLCAxODEsIDI4LCAKKyAgICA3LCAyNTMsIDE4MCwgMjgsIDcsIDI1MywgMTc5LCAyOCwgNywgMjUzLCAxNzgsIDI4LCA3LCAyNTMsIDE3NywgMTkyLCAyOCwgCisgICAgNywgMjUzLCAxNzYsIDI4LCA3LCAyNTMsIDE3NSwgMjgsIDcsIDI1MywgMTc0LCAyOCwgNywgMjUzLCAxNzMsIDI4LCA3LCAKKyAgICAyNTMsIDE3MiwgMjgsIDcsIDI1MywgMTcxLCAyOCwgNywgMjUzLCAxNzAsIDI4LCA3LCAyNTMsIDE2OCwgMjgsIDcsIDI1MywgCisgICAgMTY2LCAyOCwgNywgMjUzLCAxNjQsIDI4LCA3LCAyNTMsIDE2MiwgMjgsIDcsIDI1MywgMTYwLCAyOCwgNywgMjUzLCAxNTgsIAorICAgIDI4LCA3LCAyNTMsIDE1NiwgMjgsIDcsIDI1MywgMTU0LCAyOCwgNywgMjUzLCAxNTIsIDI4LCA3LCAyNTMsIDE1MCwgMjQ4LCAKKyAgICAyNDQsIDIyNCwgOTcsIDgxLCAyOCwgNywgMjUzLCAxNDgsIDIzOCwgMTcxLCAyMjQsIDk3LCA4MSwgMjgsIDcsIDI1MywgCisgICAgMTQ3LCAyOCwgNywgMjUzLCAxNDUsIDI4LCA3LCAyNTMsIDE0MywgMjgsIDcsIDI1MywgMTQxLCAyOCwgNywgMjUzLCAxMzksIAorICAgIDI4LCA3LCAyNTMsIDEzNywgMjgsIDcsIDI1MywgMTM1LCAyOCwgNywgMjUzLCAxMzMsIDI4LCA3LCAyNTMsIDEzMSwgMjgsIAorICAgIDcsIDI1MywgMTMwLCAyOCwgNywgMjUzLCAxMjksIDI4LCA3LCAyNTMsIDEyOCwgMjgsIDcsIDI1MywgMTI3LCAyOCwgNywgCisgICAgMjUzLCAxMjYsIDI4LCA3LCAyNTMsIDEyNSwgMjgsIDcsIDI1MywgMTI0LCAyOCwgNywgMjUzLCAxMjMsIDI4LCA3LCAyNTMsIAorICAgIDEyMiwgMjgsIDcsIDI1MywgMTIxLCAyOCwgNywgMjUzLCAxMjAsIDI4LCA3LCAyNTMsIDExOSwgMjgsIDcsIDI1MywgMTE4LCAKKyAgICAyOCwgNywgMjUzLCAxMTcsIDI4LCA3LCAyNTMsIDExNiwgMjgsIDcsIDI1MywgMTE1LCAyOCwgNywgMjUzLCAxMTQsIDI4LCAKKyAgICA3LCAyNTMsIDExMywgMjgsIDcsIDI1MywgMTEyLCAyOCwgNywgMjUzLCAxMTEsIDI4LCA3LCAyNTMsIDExMCwgMjgsIDcsIAorICAgIDI1MywgMTA5LCAyOCwgNywgMjUzLCAxMDgsIDI4LCA3LCAyNTMsIDEwNywgMjgsIDcsIDI1MywgMTA2LCAyOCwgNywgMjUzLCAKKyAgICAxMDUsIDI4LCA3LCAyNTMsIDEwNCwgMjgsIDcsIDI1MywgMTAzLCAyOCwgNywgMjUzLCAxMDIsIDI4LCA3LCAyNTMsIDEwMSwgCisgICAgMjgsIDcsIDI1MywgMTAwLCAyOCwgNywgMjUzLCA5OSwgMjgsIDcsIDI1MywgOTgsIDI4LCA3LCAyNTMsIDk3LCAyOCwgNywgCisgICAgMjUzLCA5NiwgMjgsIDcsIDI1MywgOTUsIDI4LCA3LCAyNTMsIDk0LCAyOCwgNywgMjUzLCA5MywgMjgsIDcsIDI1MywgOTIsIAorICAgIDI4LCA3LCAyNTMsIDkxLCAyOCwgNywgMjUzLCA5MCwgMjgsIDcsIDI1MywgODksIDI4LCA3LCAyNTMsIDg4LCAyOCwgNywgCisgICAgMjUzLCA4NywgMjgsIDcsIDI1MywgODYsIDI4LCA3LCAyNTMsIDg1LCAyOCwgNywgMjUzLCA4NCwgMjgsIDcsIDI1MywgODMsIAorICAgIDI4LCA3LCAyNTMsIDgyLCAyOCwgNywgMjUzLCA4MSwgMjgsIDcsIDI1MywgODAsIDI4LCA3LCAyNTMsIDc5LCAyOCwgNywgCisgICAgMjUzLCA3OCwgMjgsIDcsIDI1MywgNzcsIDI4LCA3LCAyNTMsIDc2LCAyOCwgNywgMjUzLCA3NSwgMjgsIDcsIDI1MywgNzQsIAorICAgIDI4LCA3LCAyNTMsIDczLCAyOCwgNywgMjUzLCA3MiwgMjgsIDcsIDI1MywgNzEsIDI4LCA3LCAyNTMsIDcwLCAyOCwgNywgCisgICAgMjUzLCA2OSwgMjgsIDcsIDI1MywgNjgsIDI4LCA3LCAyNTMsIDY3LCAyOCwgNywgMjUzLCA2NiwgMjgsIDcsIDI1MywgNjUsIAorICAgIDI4LCA3LCAyNTMsIDY0LCAyOCwgNywgMjUzLCA2MywgMjgsIDcsIDI1MywgNjIsIDI4LCA3LCAyNTMsIDYxLCAyOCwgNywgCisgICAgMjUzLCA2MCwgMjgsIDcsIDI1MywgNTksIDI4LCA3LCAyNTMsIDU4LCAyOCwgNywgMjUzLCA1NywgMjgsIDcsIDI1MywgNTYsIAorICAgIDI4LCA3LCAyNTMsIDU1LCAyOCwgNywgMjUzLCA1NCwgMjgsIDcsIDI1MywgNTMsIDI4LCA3LCAyNTMsIDUyLCAyOCwgNywgCisgICAgMjUzLCA1MSwgMjgsIDcsIDI1MywgNTAsIDI4LCA3LCAyNTMsIDQ5LCAyOCwgNywgMjUzLCA0OCwgMjgsIDcsIDI1MywgNDcsIAorICAgIDI4LCA3LCAyNTMsIDQ2LCAyOCwgNywgMjUzLCA0NSwgMjgsIDcsIDI1MywgNDQsIDI4LCA3LCAyNTMsIDQzLCAyOCwgNywgCisgICAgMjUzLCA0MiwgMjgsIDcsIDI1MywgNDEsIDI4LCA3LCAyNTMsIDQwLCAyOCwgNywgMjUzLCAzOSwgMjgsIDcsIDI1MywgMzgsIAorICAgIDI4LCA3LCAyNTMsIDM3LCAyOCwgNywgMjUzLCAzNiwgMjgsIDcsIDI1MywgMzUsIDI4LCA3LCAyNTMsIDM0LCAyOCwgNywgCisgICAgMjUzLCAzMywgMjgsIDcsIDI1MywgMzIsIDI4LCA3LCAyNTMsIDMxLCAyOCwgNywgMjUzLCAzMCwgMjgsIDcsIDI1MywgMjksIAorICAgIDI4LCA3LCAyNTMsIDI4LCAyOCwgNywgMjUzLCAyNywgMjgsIDcsIDI1MywgMjYsIDI4LCA3LCAyNTMsIDI1LCAyOCwgNywgCisgICAgMjUzLCAyNCwgMjgsIDcsIDI1MywgMjMsIDI4LCA3LCAyNTMsIDIyLCAyOCwgNywgMjUzLCAyMSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTksIDE4NiwgMjIxLCAyNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjM2LCAyMywgMjM3LCA1LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxNSwgODMsIDIyMSwgMjU0LCAyMTUsIDE1MiwgMjUsIDEsIDIxNSwgMjM1LCAyMTUsIDgzLCAyMjEsIDI1NCwgMjE1LCAKKyAgICAxNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCAxNTgsIDIyMSwgMjUzLCAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgMjE2LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwNSwgMjEyLCAyMjEsIDI1MywgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDgsIDIyMSwgMjUzLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIxMCwgMjAsIDIxNiwgMjExLCAyMTksIDgyLCAyNSwgMSwgMjE1LCAyMzUsIDIxNSwgODMsIDIxNiwgCisgICAgMjExLCAyMTksIDgzLCAyMTUsIDE1MiwgMjUsIDEsIDIxNSwgMjM1LCAyMTUsIDgzLCAyMTYsIDIxMSwgMjE5LCA4MywgMjE1LCAKKyAgICAxNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTQsIDI1LCAxLCAyMTUsIDIzNSwgMjA0LCAyMTYsIDIyMiwgMjE1LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIxOSwgMjQ3LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjExLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgCisgICAgMTY5LCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgMjM3LCAyNSwgMSwgMjE1LCAyMzUsIDIxMCwgMTM4LCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIxOCwgMTQwLCAyNSwgMSwgMjE1LCAyMzUsIDIyNiwgMjI2LCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgNTAsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA3LCAxOTMsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCAxODUsIDI1LCAxLCAyMTUsIDIzNSwgMjI1LCAKKyAgICA3MywgMjUsIDEsIDIxNSwgMjM1LCAyMjQsIDIzOCwgMjI1LCAyMzcsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNTAsIDIyMiwgCisgICAgNSwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxOCwgMjUsIDEsIDIxNSwgMjM1LCAyMTYsIDEwMSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMzUsIDE4MCwgMjUsIDEsIDIxNSwgMjM1LCAyMTYsIDE2NiwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDEwNywgMjE5LCAyMjAsIAorICAgIDI1LCAxLCAyMTUsIDIzNSwgMjE3LCAyNDUsIDIyMiwgOCwgMjUsIDEsIDIxNSwgMjM1LCAxMDgsIDE5OSwgMTg2LCAyMjAsIAorICAgIDE1MSwgMjUsIDEsIDIxNSwgMjM1LCAyMzUsIDE4MSwgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDE1MCwgMjE4LCAxNTEsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA5LCAxMDksIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCAyNDYsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAKKyAgICAxMSwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDgzLCAyNSwgMSwgMjE1LCAyMzUsIDIyNywgODUsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE2LCAyMTEsIDIyNSwgMjksIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCA3NiwgMjI1LCAyOSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTYsIDAsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTIsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCAxMjQsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjE0LCAyMDUsIDI1LCAxLCAyMTUsIDIzNSwgMjA0LCAyMTMsIDI1LCAxLCAyMTUsIDIzNSwgMjI0LCAzOCwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDksIDExLCAyNSwgMSwgMjE1LCAyMzUsIDIwNiwgMTMxLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgCisgICAgMjA5LCAyNSwgMSwgMjE1LCAyMzUsIDIyNiwgMjMzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgNzIsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjI1LCAyNTAsIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCA4NCwgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDIxMiwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMjQsIDkwLCAyNSwgMSwgMjE1LCAyMzUsIDIzNywgNzQsIDI1LCAxLCAyMTUsIDIzNSwgMjEyLCAKKyAgICAyNDEsIDI1LCAxLCAyMTUsIDIzNSwgMjI2LCAzOSwgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDcsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjIyLCAxNjUsIDIxNSwgMTk0LCAyNSwgMSwgMjE1LCAyMzUsIDIxMCwgMTMsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNDksIAorICAgIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCAyNTIsIDIxOCwgMTYwLCAxOTksIDE5NCwgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDMwLCAKKyAgICAyMjEsIDEwMywgMjUsIDEsIDIxNSwgMjM1LCAyMTYsIDIwNiwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDUyLCAyNSwgMSwgCisgICAgMjE1LCAyMzUsIDIwMywgMjM1LCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgMjIzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjA4LCAKKyAgICAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgOTQsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAxMDUsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE4LCA0NCwgMjUsIDEsIDIxNSwgMjM1LCAyMDYsIDEzNSwgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDQsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjE2LCAyMDcsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNjQsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTYsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjE4LCA0MSwgMjUsIDEsIDIxNSwgMjM1LCAyMjcsIDQ4LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgCisgICAgMTY3LCAyNSwgMSwgMjE1LCAyMzUsIDIwMywgNTQsIDI1LCAxLCAyMTUsIDIzNSwgMjI0LCA0MiwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMjAsIDI0LCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgMTI2LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMTA0LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIxOCwgMTYyLCAyNSwgMSwgMjE1LCAyMzQsIDIwNCwgMjE2LCAyMjIsIDIxMywgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMDksIDE3MSwgMjUsIDEsIDIxNSwgMjM0LCAyMTAsIDE0MiwgMjA0LCAyMTUsIDI1LCAxLCAyMTUsIDIzNCwgMjI0LCA5MiwgCisgICAgMjE4LCAxNDYsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAxMTEsIDIyMiwgMjE3LCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMTU1LCAKKyAgICAyNSwgMSwgMjE1LCAyMzQsIDIwMCwgMTcsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAxMDYsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjI3LCA3MSwgMjUsIDEsIDIxNSwgMjM0LCAyMTYsIDU3LCAyNSwgMSwgMjE1LCAyMzQsIDIwMCwgOTUsIDIyNSwgMjksIDI1LCAKKyAgICAxLCAyMTUsIDIzNCwgMjI1LCA5MiwgMjE4LCAxNjAsIDIxOCwgNTUsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCAxNDMsIDIxMCwgCisgICAgMzksIDI1LCAxLCAyMTUsIDIzNCwgMjIwLCA0MywgMjE5LCA5NywgMjUsIDEsIDIxNSwgMjM0LCAyMzUsIDE3OCwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMTUsIDE0MiwgMjUsIDEsIDIxNSwgMjM0LCAyMDQsIDIxNiwgMjE4LCAxNTgsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjEwLCA0NCwgMjE5LCA5MiwgMjUsIDEsIDIxNSwgMjM0LCAyMTAsIDQwLCAyNSwgMSwgMjE1LCAyMzQsIDIyMSwgMjU0LCAKKyAgICAyMDYsIDEzNCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDkzLCAyMjIsIDEwNywgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDQyLCAKKyAgICAyMTgsIDE0NiwgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDIyMiwgMjUsIDEsIDIxNSwgMjM0LCAyMzUsIDE3OSwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMjYsIDIxOCwgMjUsIDEsIDIxNSwgMjM0LCAyMjUsIDE3MCwgMjUsIDEsIDIxNSwgMjM0LCAyMTYsIDEwNCwgCisgICAgMjUsIDEsIDIxNSwgMjM0LCAyMDIsIDI0MSwgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDE4NywgMjIwLCAyMzUsIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjE5LCAyMjIsIDIyMiwgODksIDI1LCAxLCAyMTUsIDIzNCwgMjAwLCAyMTQsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjEyLCA0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMDcsIDI4LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMTAsIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjE5LCAyMDYsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAyMDcsIDIyNSwgNzAsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAKKyAgICAwLCAyNSwgMSwgMjE1LCAyMzQsIDIwNywgMjQ0LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgOTcsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjIxLCA4OCwgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDU4LCAyNSwgMSwgMjE1LCAyMzQsIDIxNCwgMjA5LCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIyMiwgOSwgMjE5LCAyMjQsIDI1LCAxLCAyMTUsIDIzNCwgMjM3LCAxMTcsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAKKyAgICA4NCwgMjUsIDEsIDIxNSwgMjM0LCAyMzcsIDE0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDIzMCwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMjIsIDIzNSwgMjE5LCA4NiwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDIzNSwgMjE5LCA2MiwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMjQsIDIzNywgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDIzMCwgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDE2OSwgMjUsIAorICAgIDEsIDIxNSwgMjM0LCAxNzgsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAxNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAxNzUsIAorICAgIDI1LCAxLCAxNzMsIDIxOSwgMTg2LCAyMjIsIDIxNSwgMjUsIDEsIDE3MywgMjE4LCA3LCAyNSwgMSwgMTczLCAxOTksIDE5NCwgCisgICAgMjUsIDEsIDE3MywgMjAxLCA5OCwgMjUsIDEsIDE3MywgMjE5LCAyMjMsIDI1LCAxLCAxNzMsIDIyMCwgNjQsIDI1LCAxLCAKKyAgICAxNzMsIDIxOSwgMTkzLCAyNSwgMSwgMTczLCAyMzUsIDE4OCwgMjUsIDEsIDE3MywgMjIyLCAxMDEsIDI1LCAxLCAxNzMsIAorICAgIDIzNiwgMzAsIDI1LCAxLCAxNzMsIDIxOCwgMzIsIDIyMSwgMTQ1LCAyMjIsIDEyLCAyNSwgMSwgMTczLCAyMTgsIDEzOCwgCisgICAgMjIyLCA5MiwgMjUsIDEsIDE3MywgMjIyLCA5OCwgMjUsIDEsIDE3MywgMjE1LCAxNDgsIDI1LCAxLCAxNzMsIDIyMCwgNDksIAorICAgIDI1LCAxLCAxNzMsIDIyMiwgMTA5LCAyNDcsIDE4NiwgMjUsIDEsIDE3MywgMjI2LCAyMjAsIDI1LCAxLCAxNzMsIDIzNSwgCisgICAgMTg5LCAyNSwgMSwgMTczLCAyMjYsIDIyNywgMjUsIDEsIDE3MywgMTk5LCAyMTIsIDIyMSwgMTAsIDI1LCAxLCAxNzMsIAorICAgIDIxOCwgMSwgMjUsIDEsIDE3MywgMjIyLCA4NiwgMjUsIDEsIDE3MywgMjE4LCAxNjgsIDI1LCAxLCAxNzMsIDIyMiwgOTIsIAorICAgIDI1LCAxLCAxNzMsIDIwMCwgMTgsIDI1LCAxLCAxNzMsIDIyNiwgNDcsIDI1LCAxLCAxNzMsIDIyNywgMTA1LCAyNSwgMSwgCisgICAgMTczLCAyMTAsIDEzNywgMjUsIDEsIDE3MywgMjIwLCA1OCwgMjUsIDEsIDE3MywgMjA3LCAyNiwgMjUsIDEsIDE3MywgMjE5LCAKKyAgICA2NiwgMjUsIDEsIDE3MywgMjA1LCAyMTIsIDE5OSwgMTk3LCAyNSwgMSwgMTczLCAyMDgsIDE5LCAyNSwgMSwgMTczLCAyMTksIAorICAgIDIxMywgMjE4LCA1NSwgMjUsIDEsIDE3MywgMjAyLCAyNDAsIDI1LCAxLCAxNzMsIDIyMCwgMTI5LCAyNSwgMSwgMTczLCAKKyAgICAyMjIsIDIzNSwgMjI2LCAyMjksIDI1LCAxLCAxNzMsIDIxOCwgMTUxLCAyNSwgMSwgMTczLCAyMTksIDIwOCwgMjUsIDEsIAorICAgIDE3MywgMjI1LCA3NCwgMjUsIDEsIDE3MywgMjIyLCA5NCwgMjUsIDEsIDE3MywgMjIxLCAyNDUsIDI1LCAxLCAxNzMsIDIxOCwgCisgICAgMTQ1LCAyNSwgMSwgMTczLCAyMDYsIDEzMCwgMjUsIDEsIDE3MywgMjE5LCAyMTAsIDI1LCAxLCAxNzMsIDIzNiwgMTg3LCAKKyAgICAyNSwgMSwgMTczLCAyMjAsIDYzLCAyNSwgMSwgMTczLCAyMTgsIDE3MCwgMjUsIDEsIDE3MywgMjE4LCAxNjYsIDI1LCAxLCAKKyAgICAxNzMsIDI0OCwgMTIsIDI1LCAxLCAxNzMsIDIwMiwgMjQyLCAyNSwgMSwgMTczLCAyMjIsIDk5LCAyNSwgMSwgMTczLCAyMTIsIAorICAgIDE3NSwgMjUsIDEsIDE3MywgMjE5LCA5NiwgMjUsIDEsIDE3MywgMjI1LCA5MSwgMjUsIDEsIDE3MywgMjA1LCAyMDksIDI1LCAKKyAgICAxLCAxNzMsIDIxOCwgMTUyLCAyMTksIDE3NSwgMjUsIDEsIDE3MywgMjE5LCA4OCwgMjUsIDEsIDE3MywgMjI2LCAyMzMsIAorICAgIDI1LCAxLCAxNzMsIDIxOSwgMjE1LCAyNSwgMSwgMTczLCAyMjIsIDIwOCwgMjUsIDEsIDE3MywgMjIyLCA4NywgMjUsIDEsIAorICAgIDE3MywgMjI0LCA0MiwgMjUsIDEsIDE3MywgMjI1LCAyMzcsIDI1LCAxLCAxNzMsIDIxOSwgOTQsIDI1LCAxLCAxNzMsIDIxOSwgCisgICAgMTc1LCAyNSwgMSwgMTczLCAyMDAsIDIwNCwgMjUsIDEsIDE3MywgMjE5LCAyMTEsIDI1LCAxLCAxNzMsIDIxOCwgMTU1LCAKKyAgICAyNSwgMSwgMTczLCAyMTgsIDE0NywgMjUsIDEsIDE3MywgMjI1LCAyNTIsIDIxOSwgNTIsIDI1LCAxLCAxNzMsIDIxOCwgCisgICAgMTUzLCAyNSwgMSwgMTczLCAyMjAsIDcxLCAyNSwgMSwgMTczLCAyMjIsIDIzNSwgMjE4LCAxNTgsIDI1LCAxLCAxNzMsIAorICAgIDIwMCwgMTA5LCAyNSwgMSwgMTczLCAyMjAsIDcwLCAyNSwgMSwgMTczLCAyMDksIDIxNSwgMjUsIDEsIDE3MywgMjEwLCAKKyAgICAxNDAsIDI1LCAxLCAxNzMsIDIyMiwgOTUsIDI1LCAxLCAxNzMsIDIyMiwgMjE1LCAyNSwgMSwgMTczLCAyMjIsIDEwNSwgMjUsIAorICAgIDEsIDE3MywgMjI2LCAyMjEsIDI1LCAxLCAxNzMsIDIyMiwgOTYsIDI1LCAxLCAxNzMsIDIyNiwgMjI1LCAyNSwgMSwgMTczLCAKKyAgICAyMjIsIDEwOSwgMjE1LCAxOTksIDI1LCAxLCAxNzMsIDE5OSwgMTc3LCAyNSwgMSwgMTczLCAyMTksIDg0LCAyNSwgMSwgCisgICAgMTczLCAyMjEsIDIwMCwgMjUsIDEsIDE3MywgMjIxLCAzOSwgMjUsIDEsIDE3MywgMjEwLCAxNiwgMjUsIDEsIDE3MywgMjI2LCAKKyAgICAyNDQsIDIyNSwgNTIsIDI1LCAxLCAxNzMsIDIyNiwgMjQ0LCAyMzcsIDE1MywgMjUsIDEsIDE3MywgMjE5LCAyNDUsIDI1LCAKKyAgICAxLCAxNzMsIDIyMCwgMTI2LCAyNSwgMSwgMTczLCAyMjQsIDE1OCwgMjUsIDEsIDE3MywgMjE1LCAxNjAsIDI1LCAxLCAxNzMsIAorICAgIDIxNiwgNDcsIDI1LCAxLCAxNzMsIDIwNiwgMTQ2LCAyNSwgMSwgMTM3LCAyMjIsIDg1LCAyNSwgMSwgMTM3LCAyMDEsIDk2LCAKKyAgICAyNSwgMSwgMTM3LCAyMTksIDgyLCAyNSwgMSwgMTM3LCAyMjEsIDI1MywgMjUsIDEsIDEzNywgMjE5LCA4MCwgMjUsIDEsIAorICAgIDEzNywgMjI0LCAyMDMsIDI1LCAxLCAxMzcsIDIxOSwgODUsIDI1LCAxLCAxMzcsIDIxOCwgMTY1LCAyNSwgMSwgMTM3LCAKKyAgICAyMTksIDIyOSwgMjUsIDEsIDEzNywgMjE4LCA1NSwgMjUsIDEsIDEzNywgMjAwLCAyMTUsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMTgzLCAyNSwgMSwgMTM3LCAyMTAsIDYzLCAyNSwgMSwgMTM3LCAyMTksIDE5NCwgMjUsIDEsIDEzNywgMjI2LCAyMjgsIDI1LCAKKyAgICAxLCAxMzcsIDIwNiwgMTMyLCAyNSwgMSwgMTM3LCAyMTAsIDQyLCAyNSwgMSwgMTM3LCAyMTksIDkzLCAyNSwgMSwgMTM3LCAKKyAgICAyMDcsIDI0NCwgMjUsIDEsIDEzNywgMjI2LCAyMzMsIDI1LCAxLCAxMzcsIDIwMCwgOTcsIDI1LCAxLCAxMzcsIDIyNSwgCisgICAgMjUzLCAyNSwgMSwgMTM3LCAyMTIsIDMsIDI1LCAxLCAxMzcsIDIyMiwgMiwgMjUsIDEsIDEzNywgMjIwLCA2MiwgMjUsIDEsIAorICAgIDEzNywgMjIyLCAxODMsIDI1LCAxLCAxMzcsIDIyMiwgOCwgMjUsIDEsIDEzNywgMjEwLCAxMzksIDI1LCAxLCAxMzcsIDIwMCwgCisgICAgNDEsIDI1LCAxLCAxMzcsIDIxOSwgODcsIDI1LCAxLCAxMzcsIDIyNiwgMjI0LCAyMjIsIDg4LCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDE5MCwgMjUsIDEsIDEzNywgMjA0LCAyMTUsIDI1LCAxLCAxMzcsIDIzNSwgMTk4LCAyNSwgMSwgMTM3LCAyMTksIDE4MCwgCisgICAgMjUsIDEsIDEzNywgMjM3LCAxMTgsIDI1LCAxLCAxMzcsIDIyMCwgNjYsIDI1LCAxLCAxMzcsIDIyMSwgMjM3LCAyNSwgMSwgCisgICAgMTM3LCAyMjQsIDIzMSwgMjUsIDEsIDEzNywgMjIwLCA0OCwgMjUsIDEsIDEzNywgMjIxLCAxMDIsIDI1LCAxLCAxMzcsIAorICAgIDIyMSwgMjQxLCAyNSwgMSwgMTM3LCAyMTQsIDE4OSwgMjUsIDEsIDEzNywgMjIxLCAyMzksIDI1LCAxLCAxMzcsIDIyMSwgCisgICAgMjU1LCAyNSwgMSwgMTM3LCAyMjQsIDI1LCAyNSwgMSwgMTM3LCAyMTgsIDE1NywgMjUsIDEsIDEzNywgMjIyLCAxMDgsIDI1LCAKKyAgICAxLCAxMzcsIDIyNSwgMjI3LCAyNSwgMSwgMTM3LCAyMTgsIDQ0LCAyNSwgMSwgMTM3LCAyMDYsIDEzNSwgMjUsIDEsIDEzNywgCisgICAgMjA5LCA0LCAyNSwgMSwgMTM3LCAxOTksIDE3NywgMjUsIDEsIDEzNywgMjI2LCAyMjUsIDI1LCAxLCAxMzcsIDIxMywgMjMzLCAKKyAgICAyNSwgMSwgMTM3LCAyMDYsIDE4OSwgMjUsIDEsIDEzNywgMjE5LCAxOTEsIDI1LCAxLCAxMzcsIDIyMiwgNCwgMjUsIDEsIAorICAgIDEzNywgMjE4LCAxNTYsIDI1LCAxLCAxMzcsIDIyNiwgMjIzLCAyNSwgMSwgMTM3LCAyMTUsIDE1NCwgMjUsIDEsIDEzNywgCisgICAgMjE1LCAyNTAsIDI1LCAxLCAxMzcsIDIxOCwgMTgsIDI1LCAxLCAxMzcsIDIyNCwgMjM3LCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDIzMCwgMjUsIDEsIDEzNywgMjIyLCAxLCAyNSwgMSwgMTM3LCAyMTksIDIwMywgMjUsIDEsIDEzNywgMTk5LCAxOTEsIDI1LCAKKyAgICAxLCAxMzcsIDIxNiwgMTM1LCAyNSwgMSwgMTM3LCAxOTksIDE5MCwgMjUsIDEsIDEzNywgMjIwLCA3MSwgMjUsIDEsIDEzNywgCisgICAgMjE4LCAxNDYsIDI1LCAxLCAxMzcsIDIwOCwgMjEsIDI1LCAxLCAxMzcsIDIyNiwgMSwgMjUsIDEsIDEzNywgMjE5LCAyMTksIAorICAgIDI1LCAxLCAxMzcsIDIxOSwgMTg4LCAyNSwgMSwgMTM3LCAyMDQsIDE5NiwgMjUsIDEsIDEzNywgMjIyLCAxMiwgMjUsIDEsIAorICAgIDEzNywgMjI1LCAyNDcsIDI1LCAxLCAxMzcsIDIxOCwgMTU0LCAyNSwgMSwgMTM3LCAyMDYsIDEzMywgMjUsIDEsIDEzNywgCisgICAgMjIyLCAyMTAsIDI1LCAxLCAxMzcsIDIxOSwgMjI4LCAyNSwgMSwgMTM3LCAyMjQsIDIzMCwgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAyMDksIDI1LCAxLCAxMzcsIDIxOCwgMTU5LCAyNSwgMSwgMTM3LCAyMTksIDY2LCAyNSwgMSwgMTM3LCAyMzUsIDE4MiwgMjUsIAorICAgIDEsIDEzNywgMjI2LCAxNSwgMjUsIDEsIDEzNywgMjEzLCAxNDAsIDIxNywgOTIsIDI1LCAxLCAxMzcsIDIwNywgMTUsIDI1LCAKKyAgICAxLCAxMzcsIDIwNSwgMTU0LCAyNSwgMSwgMTM3LCAyMTgsIDQxLCAyNSwgMSwgMTM3LCAyMTMsIDMzLCAyNSwgMSwgMTM3LCAKKyAgICAyMjUsIDMxLCAyNSwgMSwgMTM3LCAyMjIsIDYzLCAyNSwgMSwgMTM3LCAyMjMsIDI0MywgMjUsIDEsIDEzNywgMjA3LCAxOTMsIAorICAgIDI1LCAxLCAxMzcsIDIyMSwgNDEsIDI1LCAxLCAxMzcsIDIxMCwgMjgsIDI1LCAxLCAxMzcsIDIxMCwgMzgsIDI1LCAxLCAKKyAgICAxMzcsIDIyNSwgMTk5LCAyNSwgMSwgMTM3LCAyMTgsIDEzMywgMjUsIDEsIDEzNywgMjA5LCAyMjAsIDI1LCAxLCAxMzcsIAorICAgIDIxOCwgMTQ4LCAyNSwgMSwgMTM3LCAyMTYsIDYxLCAyNSwgMSwgMTM3LCAyMTksIDE1MCwgMjUsIDEsIDEzNywgMjA5LCAKKyAgICAyNTEsIDI1LCAxLCAxMzcsIDIxNCwgMjA0LCAyNSwgMSwgMTM3LCAyMjAsIDIzNSwgMjUsIDEsIDEzNywgMjI0LCA3MCwgMjUsIAorICAgIDEsIDEzNywgMjEzLCAxNDAsIDIyMSwgMzQsIDI1LCAxLCAxMzcsIDIwNiwgMTUsIDI1LCAxLCAxMzcsIDIxOCwgMTM1LCAyNSwgCisgICAgMSwgMTM3LCAyMjIsIDEwOSwgMjEwLCAxMzUsIDI1LCAxLCAxMzcsIDIxMiwgMSwgMjUsIDEsIDEzNywgMjM3LCAxOTQsIDI1LCAKKyAgICAxLCA5NiwgMjIwLCA3MCwgMjUsIDEsIDk2LCAyMDUsIDE2MCwgMjUsIDEsIDk2LCAyMjIsIDk4LCAyNSwgMSwgOTYsIDIyNSwgCisgICAgNzQsIDI1LCAxLCA5NiwgMjAyLCAxODAsIDI1LCAxLCA5NiwgMjI0LCA3NiwgMjUsIDEsIDk2LCAyMTYsIDIxMCwgMjUsIDEsIAorICAgIDk2LCAyMDksIDE1LCAyNSwgMSwgOTYsIDIxMywgMjA4LCAyNSwgMSwgOTYsIDIxOCwgMTYxLCAyNSwgMSwgOTYsIDIyMCwgCisgICAgNDEsIDI1LCAxLCA5NiwgMjE0LCAyMjEsIDI1LCAxLCA5NiwgMjA2LCAyNDYsIDI1LCAxLCA5NiwgMjE5LCAxOTYsIDI1LCAxLCAKKyAgICA5NiwgMjI2LCA0MywgMjUsIDEsIDk2LCAyMDAsIDIwNywgMjUsIDEsIDk2LCAyMTEsIDE5MCwgMjUsIDEsIDk2LCAyMTksIAorICAgIDIyMCwgMjUsIDEsIDk2LCAyMTYsIDIwNywgMjUsIDEsIDk2LCAyMDUsIDE2MSwgMjUsIDEsIDk2LCAyMjUsIDI1MSwgMjUsIAorICAgIDEsIDk2LCAyMjQsIDkxLCAyNSwgMSwgOTYsIDIxOCwgMTY0LCAyNSwgMSwgOTYsIDIxOSwgMTcyLCAyNSwgMSwgOTYsIDIyMiwgCisgICAgMjE2LCAyNSwgMSwgOTYsIDIxOSwgMTg5LCAyNSwgMSwgOTYsIDIxOSwgMTcxLCAyNSwgMSwgOTYsIDIxOCwgMTYzLCAyNSwgCisgICAgMSwgOTYsIDIxMywgMzAsIDI1LCAxLCA5NiwgMjE5LCA4NCwgMjUsIDEsIDk2LCAyMTYsIDU5LCAyNSwgMSwgOTYsIDIxMiwgCisgICAgNjEsIDI1LCAxLCA5NiwgMjE5LCAyMDQsIDI1LCAxLCA5NiwgMjIxLCAyNDcsIDI1LCAxLCA5NiwgMjM1LCAxNzYsIDI1LCAxLCAKKyAgICA5NiwgMjE5LCAxOTIsIDI1LCAxLCA5NiwgMjE5LCA5NSwgMjUsIDEsIDk2LCAyMjIsIDE2NCwgMjUsIDEsIDk2LCAyMjQsIAorICAgIDcyLCAyNSwgMSwgOTYsIDIxOSwgMjI1LCAyNSwgMSwgOTYsIDIyMCwgNTQsIDI1LCAxLCA5NiwgMjA3LCAxNCwgMjE4LCAKKyAgICAxNDYsIDI1LCAxLCA5NiwgMjEwLCAxNDEsIDI1LCAxLCA5NiwgMjE0LCAyMTQsIDI1LCAxLCA5NiwgMjIwLCA3NCwgMjA5LCAKKyAgICAyMiwgMjUsIDEsIDk2LCAyMTksIDIxMiwgMjE4LCA1NSwgMjUsIDEsIDk2LCAyMDAsIDUsIDI1LCAxLCA5NiwgMjM1LCAxNzcsIAorICAgIDI1LCAxLCA5NiwgMjA0LCAyMTQsIDI1LCAxLCA5NiwgMjAwLCAyMSwgMjUsIDEsIDk2LCAyMTUsIDEwNiwgMjUsIDEsIDk2LCAKKyAgICAyMDQsIDIwMiwgMjUsIDEsIDk2LCAyMjYsIDIzMSwgMjUsIDEsIDk2LCAyMDgsIDIwLCAyNSwgMSwgOTYsIDIwNiwgMTM0LCAKKyAgICAyNSwgMSwgOTYsIDIwMiwgMjQzLCAyNSwgMSwgOTYsIDIwMSwgNDQsIDI1LCAxLCA5NiwgMjI1LCAxNzMsIDI1LCAxLCA5NiwgCisgICAgMjE0LCAyMjQsIDI1LCAxLCA5NiwgMjA3LCAyNywgMjUsIDEsIDk2LCAyMzUsIDE5NywgMjUsIDEsIDk2LCAyMTksIDIzNSwgCisgICAgMjUsIDEsIDk2LCAyMTAsIDQxLCAyNSwgMSwgOTYsIDIyMSwgMjQyLCAyNSwgMSwgOTYsIDIyMiwgMTAyLCAyNSwgMSwgOTYsIAorICAgIDIxOCwgNSwgMjUsIDEsIDk2LCAyMTksIDQ4LCAyNSwgMSwgOTYsIDIzNiwgMjYsIDI1LCAxLCA5NiwgMjA0LCAyMDMsIDI1LCAKKyAgICAxLCA5NiwgMjI2LCA1LCAyNSwgMSwgOTYsIDIwMCwgNzMsIDI1LCAxLCA5NiwgMjE4LCA0MiwgMjQ2LCAxMjYsIDI1LCAxLCAKKyAgICA5NiwgMTk5LCAyNTEsIDI1LCAxLCA5NiwgMjIyLCAzLCAyNSwgMSwgOTYsIDIyMCwgNTksIDI1LCAxLCA5NiwgMjE1LCAxOTUsIAorICAgIDI1LCAxLCA5NiwgMTk5LCAxOTYsIDI1LCAxLCA5NiwgMjI0LCAyMzIsIDI1LCAxLCA5NiwgMjM2LCAxODcsIDI1LCAxLCA5NiwgCisgICAgMjM2LCAyNSwgMjUsIDEsIDk2LCAyMTksIDE4MiwgMjUsIDEsIDk2LCAyMjYsIDIzMywgMjUsIDEsIDk2LCAyMjIsIDIxOSwgCisgICAgMjUsIDEsIDk2LCAyMTksIDE5NSwgMjUsIDEsIDk2LCAyMzUsIDE4MywgMjUsIDEsIDk2LCAyMzcsIDE5NSwgMjUsIDEsIDk2LCAKKyAgICAyMTgsIDEzNiwgMjUsIDEsIDk2LCAyMTUsIDI1MSwgMjUsIDEsIDk2LCAyMDAsIDE5LCAyNSwgMSwgOTYsIDIxOSwgMjIxLCAKKyAgICAyNSwgMSwgOTYsIDIxOCwgNDIsIDI0OCwgMjA1LCAyNSwgMSwgOTYsIDIxNywgMjQxLCAyNSwgMSwgOTYsIDIxNSwgNzksIAorICAgIDI1LCAxLCA5NiwgMjIxLCAyMDAsIDI1LCAxLCA5NiwgMjM2LCAxODUsIDI1LCAxLCA5NiwgMjIwLCAxNTEsIDI1LCAxLCA5NiwgCisgICAgMjIxLCAzOSwgMjUsIDEsIDk2LCAyMzUsIDE4MiwgMjUsIDEsIDk2LCAyMzYsIDE5MCwgNzAsIDI1LCAxLCA5NiwgMjIwLCAKKyAgICAyMzYsIDI1LCAxLCA5NiwgMjE0LCAyMjAsIDI1LCAxLCA5NiwgMjE5LCAxODQsIDI1LCAxLCA5NiwgMjI1LCAyMzcsIDI1LCAKKyAgICAxLCA5NiwgMjE1LCAxOTIsIDI1LCAxLCA5NiwgMjE4LCAxNDksIDI1LCAxLCA5NiwgMjAwLCAyMCwgMjUsIDEsIDk2LCAyMTksIAorICAgIDIwNSwgMjUsIDEsIDk2LCAyMTYsIDIxMSwgMjE2LCAzMywgMjUsIDEsIDk2LCAyMzYsIDE5MCwgMjQ3LCAxNjgsIDI1LCAxLCAKKyAgICA5NiwgMjM3LCA2LCAyNSwgMSwgOTYsIDIxOSwgODksIDI1LCAxLCA5NiwgNjIsIDI1LCAxLCA5NiwgMjA1LCAxNTQsIDI1LCAKKyAgICAxLCA5NiwgNzQsIDI1LCAxLCA5NiwgNzAsIDI1LCAxLCA5NiwgMjI1LCA3MiwgMjUsIDEsIDk2LCAyMTYsIDIxMSwgMjE1LCAKKyAgICAxMTQsIDI1LCAxLCA5NiwgMjA3LCAzMiwgMjUsIDEsIDk2LCAyMDYsIDIzMywgMjUsIDEsIDk2LCAyMjAsIDc0LCAyMjAsIAorICAgIDIyMywgMjMzLCAxMDksIDI1LCAxLCA5NiwgMjEwLCAxNiwgMjUsIDEsIDk2LCAyMDAsIDE2LCAyNSwgMSwgOTYsIDIxOSwgCisgICAgMTY1LCAyNSwgMSwgOTYsIDE5OSwgMjAxLCAyNSwgMSwgOTYsIDE5OSwgMjI4LCAyMDcsIDE3MywgMjUsIDEsIDk2LCAxOTksIAorICAgIDIyOCwgMjQzLCAxLCAyNSwgMSwgOTYsIDE5OSwgMTg1LCAyNSwgMSwgOTYsIDE5OSwgMTkzLCAyNSwgMSwgOTYsIDIyNiwgCisgICAgMjE5LCAyNSwgMSwgOTYsIDIxNSwgMjQ5LCAyNSwgMSwgOTYsIDIxOSwgOTAsIDIzOCwgMTI2LCAyNSwgMSwgOTYsIDIxNCwgCisgICAgMjE2LCAyNSwgMSwgOTYsIDIwMCwgMjEzLCAyNSwgMSwgOTYsIDIzNywgMTQwLCAyNSwgMSwgOTYsIDIwMywgNTQsIDI1LCAxLCAKKyAgICA5NiwgMjI0LCA0MiwgMjUsIDEsIDk2LCAyMjEsIDIxMSwgMjUsIDEsIDk2LCAyMTMsIDEwNywgMjUsIDEsIDk2LCAyMTMsIAorICAgIDIzNCwgMjUsIDEsIDk2LCAyMTksIDE2NCwgMjUsIDEsIDk2LCAyMTksIDI1MywgMjUsIDEsIDk2LCAyMTAsIDgsIDI1LCAxLCAKKyAgICA5NiwgMjA5LCAyNTEsIDI1LCAxLCA5NiwgMjM2LCAxOTAsIDIxMywgMTQzLCAyNSwgMSwgOTYsIDE4OCwgMjUsIDEsIDk2LCAKKyAgICAyMTUsIDIwNCwgMjUsIDEsIDk2LCAyMjQsIDcwLCAyNSwgMSwgOTYsIDIyNiwgODgsIDI1LCAxLCA5NiwgMjIyLCA0MCwgMjUsIAorICAgIDEsIDk2LCAxNzgsIDI1LCAxLCA5NiwgMjIyLCAxNjEsIDI1LCAxLCA5NiwgMjA2LCAxMzYsIDI1LCAxLCA5NiwgMjI2LCAKKyAgICAxNjMsIDI1LCAxLCA5NiwgMjIxLCAxMDYsIDI1LCAxLCA5NiwgMjA2LCAxNjYsIDI1LCAxLCA5NiwgMjM3LCAxNjQsIDI1LCAKKyAgICAxLCA5NiwgMjM1LCAxNzAsIDI1LCAxLCAyMTUsIDIzMywgMTYxLCAyNSwgMSwgMjE1LCAyMzMsIDY2LCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDIyNiwgMTUsIDI1LCAxLCAyMTUsIDIzMywgMjM4LCAyNTUsIDI1LCAxLCAyMTUsIDIzMywgMjEzLCAxNjcsIDI1LCAKKyAgICAxLCAyMTUsIDIzMywgMjA3LCAxNSwgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIDQxLCAyNSwgMSwgMjE1LCAyMzMsIDE5NCwgMjUsIAorICAgIDEsIDIxNSwgMjMzLCAyMTMsIDMzLCAyNSwgMSwgMjE1LCAyMzMsIDIxMywgODEsIDI1LCAxLCAyMTUsIDIzMywgMjIyLCA2MywgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMDcsIDMyLCAyNSwgMSwgMjE1LCAyMzMsIDIyMCwgNzMsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAKKyAgICA5NiwgMjUsIDEsIDIxNSwgMjMzLCAyMjMsIDI0MywgMjUsIDEsIDIxNSwgMjMzLCAyMDcsIDE5MywgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAyMTAsIDI4LCAyNSwgMSwgMjE1LCAyMzMsIDIwOSwgMTgyLCAyNSwgMSwgMjE1LCAyMzMsIDIxMCwgMTM3LCAyNSwgCisgICAgMSwgMjE1LCAyMzMsIDIyNSwgMTk5LCAyNSwgMSwgMjE1LCAyMzMsIDIyNiwgMjMzLCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgCisgICAgMTA0LCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgMTMzLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgNjcsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMTk5LCAyMjcsIDI1LCAxLCAyMTUsIDIzMywgMjA5LCAyMjAsIDI1LCAxLCAyMTUsIDIzMywgMTgzLCAyNSwgMSwgCisgICAgMjE1LCAyMzMsIDIxOCwgMTY3LCAyNSwgMSwgMjE1LCAyMzMsIDIxNSwgMjQ5LCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgMTQ4LCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIwMCwgMjEzLCAyNSwgMSwgMjE1LCAyMzMsIDIxNiwgNjEsIDI1LCAxLCAyMTUsIDIzMywgCisgICAgMjEyLCAxNzUsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAxNTAsIDI1LCAxLCAyMTUsIDIzMywgMjEzLCAxMDcsIDI1LCAxLCAKKyAgICAyMTUsIDIzMywgMjI2LCAyNDMsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAxODEsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAyMzIsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjEwLCA4LCAyNSwgMSwgMjE1LCAyMzMsIDIxNCwgMjIxLCAyNSwgMSwgMjE1LCAyMzMsIDIzNywgCisgICAgNiwgMjUsIDEsIDIxNSwgMjMzLCAyMDEsIDExNCwgMjUsIDEsIDIxNSwgMjMzLCAyMjQsIDIxMCwgMjUsIDEsIDIxNSwgMjMzLCAKKyAgICAyMjQsIDcwLCAyNSwgMSwgMjE1LCAyMzMsIDIyNiwgODgsIDI1LCAxLCAyMTUsIDIzMywgMjIyLCAxMDAsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMjEzLCAxMzksIDI1LCAxLCAyMTUsIDIzMywgMTc4LCAyNSwgMSwgMjE1LCAyMzMsIDIyMSwgMTM2LCAyNSwgMSwgCisgICAgMjE1LCAyMzMsIDIyMiwgMTA4LCAyNSwgMSwgMjE1LCAyMzMsIDIwNiwgMTQ2LCAyNSwgMSwgMjE1LCAyMzMsIDIyNiwgNTAsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjEyLCAyMSwgMjUsIDEsIDIxNSwgMjMzLCAyMDEsIDE2NSwgMjIxLCA0NCwgMSwgMjA3LCAzNiwgCisgICAgMjIxLCA0NCwgMSwgMjE5LCAyMDEsIDIyMSwgNDQsIDEsIDE5OSwgMjQ1LCAyMjEsIDQ0LCAxLCAyMjEsIDE2NiwgMjIxLCAKKyAgICA0NCwgMSwgMjQ5LCAxMzYsIDIyMSwgNDQsIDEsIDI0MiwgNTgsIDIyMSwgNDQsIDEsIDYyLCAyMjEsIDQ0LCAxLCAyMTUsIAorICAgIDIyOSwgMjIxLCA0NCwgMSwgMjI2LCAyMDIsIDIyMSwgNDQsIDEsIDIzNCwgMTY5LCAyMjEsIDQ0LCAxLCAyNDIsIDMzLCAKKyAgICAyMjEsIDQ0LCAxLCAyNDYsIDE5MiwgMjIxLCA0NCwgMSwgMjI3LCA3LCAyMjEsIDQ0LCAxLCAyMTcsIDkzLCAyMjEsIDQ0LCAKKyAgICAxLCAyMjIsIDIxNiwgMjIxLCA0NCwgMSwgMjE5LCAxMTgsIDIyMSwgNDQsIDEsIDE3MiwgMjIxLCA0NCwgMSwgMjE3LCA2MywgCisgICAgMjIxLCA0NCwgMSwgNzQsIDIyMSwgNDQsIDEsIDIxMywgMSwgMjIxLCA0NCwgMSwgMjEwLCAzMywgMjIxLCA0NCwgMSwgMjA2LCAKKyAgICAxMDUsIDIyMSwgNDQsIDEsIDIzOSwgMjcsIDIyMSwgNDQsIDEsIDIwMSwgMTE0LCAyMjEsIDQ0LCAxLCA3MiwgMjIxLCA0NCwgCisgICAgMSwgMjI2LCA4OCwgMjIxLCA0NCwgMSwgMjI1LCA4MCwgMjIxLCA0NCwgMSwgMTk0LCAyMjEsIDQ0LCAxLCAyMzQsIDIyMywgCisgICAgMjIxLCA0NCwgMSwgMjEzLCA4OCwgMjIxLCA0NCwgMSwgMjA2LCAxNzksIDIyMSwgNDQsIDE3LCAxOTksIDgxLCAyMjEsIDQ0LCAKKyAgICAxNywgMTAyLCAyMjEsIDQ0LCAxNywgMTA1LCAyMjEsIDQ0LCAxNywgMTQ3LCAyMjEsIDQ0LCAxNywgMTQ5LCAyMjEsIDQ0LCAKKyAgICAxNywgMTY0LCAyMjEsIDQ0LCAxNywgMTg3LCAyMjEsIDQ0LCAxNywgMjEwLCAxMzUsIDIyMSwgNDQsIDE3LCAxOTIsIDIyMSwgCisgICAgNDQsIDE3LCAyMTksIDExMywgMjIxLCA0NCwgMjQyLCAxMCwgMjIxLCA0NCwgNTMsIDI0MiwgMTAsIDI0OSwgNTgsIDIwMywgCisgICAgODcsIDEsIDIzOCwgMTYxLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAxNjEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIxMSwgMjAyLCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzcsIDE5NSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjIyLCAxMDMsIDI0OSwgNTgsIAorICAgIDIwMywgODcsIDEsIDIwMCwgNiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjM2LCA3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgCisgICAgMjQxLCA4MSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjI2LCA0OSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjI3LCAxNjYsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzMywgNjcsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMSwgMTE0LCAyNDksIDU4LCAKKyAgICAyMDMsIDg3LCAxLCAxOTksIDE0LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzYsIDE5LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAKKyAgICAyNDAsIDIxMSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjQ3LCA3NiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAzLCAxNzUsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDEzOCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjQ5LCAxMzYsIDI0OSwgNTgsIDIwMywgCisgICAgODcsIDEsIDIwMSwgMTY2LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDAsIDQ1LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAxNzIsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMSwgMTExLCAyNDksIDU4LCAyMDMsIDg3LCAxLCA2MiwgMjQ5LCA1OCwgMjAzLCA4NywgCisgICAgMSwgNzQsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIxNywgNjMsIDI0OSwgNTgsIDIwMywgODcsIDEsIDY2LCAyNDksIDU4LCAKKyAgICAyMDMsIDg3LCAxLCAyMzgsIDI1NSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNzIsIDI0OSwgNTgsIDIwMywgODcsIDEsIDcwLCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMTIyLCAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDEyOCwgMjA1LCAxNzQsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDM4LCAyMjEsIDIwNiwgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDM4LCAyMjQsIDU2LCAKKyAgICAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDIzNCwgNTcsIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMTI1LCAxMjMsIDIyLCAyMjcsIDQsIDEyNSwgMTIzLCAyMiwgMjI3LCAwLCAxMjUsIDEyMywgMjIsIAorICAgIDIyNiwgMTYwLCAxMjUsIDEyMywgMjIsIDIyNiwgMTI2LCAxMjUsIDEyMywgMjIsIDIyNywgMjUsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI3LCAyMiwgMTI1LCAxMjMsIDIyLCAyMjYsIDYsIDEyNSwgMTIzLCAyMiwgMjI1LCAyMzQsIDEyNSwgMTIzLCAyMiwgMjI3LCAKKyAgICA2LCAxMjUsIDEyMywgMjIsIDIyNiwgMjE3LCAxMjUsIDEyMywgMjIsIDIyNywgODEsIDEyNSwgMTIzLCAyMiwgMjI3LCA3OCwgCisgICAgMTI1LCAxMjMsIDIyLCAyMjYsIDY3LCAxMjUsIDEyMywgMjIsIDIyNiwgNjQsIDEyNSwgMTIzLCAyMiwgMjI3LCAxOSwgMTI1LCAKKyAgICAxMjMsIDIyLCAyMjcsIDE3LCAxMjUsIDEyMywgMjIsIDIyNiwgOCwgMTI1LCAxMjMsIDIyLCAyMjYsIDcsIDEyNSwgMTIzLCAKKyAgICAyMiwgMjI2LCA4NSwgMTI1LCAxMjMsIDIyLCAyMjYsIDUzLCAxMjUsIDEyMywgMjIsIDIyNiwgMTYyLCAxMjUsIDEyMywgMjIsIAorICAgIDIyNiwgMTYxLCAxMjUsIDEyMywgMjIsIDIyNywgOTYsIDEyNSwgMTIzLCAyMiwgMjI3LCAyMSwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjUsIDIyNSwgMTI1LCAxMjMsIDIyLCAyMjUsIDIxNiwgMTI1LCAxMjMsIDIyLCAyMjcsIDEwNCwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjcsIDk3LCAxMjUsIDEyMywgMTExLCAyMDMsIDY1LCAxMjUsIDEyMywgMTExLCAyMTgsIDEzOSwgMTI1LCAxMjMsIDExMSwgCisgICAgMjI1LCA1OCwgMTI1LCAxMjMsIDExMSwgMjM0LCAxNTAsIDEyNSwgMTIzLCAxMTEsIDIxOSwgMjQsIDEyNSwgMTIzLCAxMTEsIAorICAgIDIxMywgMTk5LCAxMjUsIDEyMywgMTExLCAyMTksIDUxLCAxMjUsIDEyMywgMTExLCAyMTQsIDEzMywgMTI1LCAxMjMsIDExMSwgCisgICAgMjAwLCA2MSwgMTI1LCAxMjMsIDExMSwgMjM0LCAzNiwgMTI1LCAxMjMsIDExMSwgMjIyLCAxMjMsIDEyNSwgMTIzLCAxMTEsIAorICAgIDI0NywgMTIsIDEyNSwgMTIzLCAxMTEsIDIyMCwgNzgsIDEyNSwgMTIzLCAxMTEsIDIzMywgMjI4LCAxMjUsIDEyMywgMTExLCAKKyAgICAyMTUsIDEyMiwgMTI1LCAxMjMsIDExMSwgMjE4LCAxNDQsIDEyNSwgMTIzLCAxMTEsIDIyMCwgMTE2LCAxMjUsIDEyMywgCisgICAgMTExLCAyNTAsIDEzOSwgMTI1LCAxMjMsIDExMSwgMjAwLCAxNzcsIDEyNSwgMTIzLCAxMTEsIDI0NywgMTA5LCAxMjUsIAorICAgIDEyMywgMTM0LCAyNDYsIDE2MSwgMjA0LCAyMTEsIDEyNSwgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMDksIDI5LCAxMjUsIDEyMywgCisgICAgMTM0LCAyNDYsIDE2MSwgMjI2LCAyMzUsIDEyNSwgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMjYsIDE5MywgMTI1LCAxMjMsIAorICAgIDEzNCwgMjQ2LCAxNjEsIDIwOCwgMTgsIDEyNSwgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMzMsIDE5NCwgMTI1LCAxMjMsIDEzNCwgCisgICAgMjQ2LCAxNjEsIDIwNiwgMjIwLCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIwNiwgNTgsIDEyNSwgMTIzLCAyLCAyMDIsIAorICAgIDE3NiwgMjA1LCAyMSwgMjQ3LCA2NywgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyNDcsIDEsIDEyNSwgMTIzLCAyLCAyMDIsIAorICAgIDE3NiwgMjA2LCA4MywgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMzcsIDEzNywgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAKKyAgICAyMTgsIDEzNCwgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAyMTMsIDkwLCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIDIwNSwgCisgICAgMTM3LCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIDIzNywgMTc2LCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIxMSwgMTg0LCAKKyAgICAxMjUsIDEyMywgMiwgMjIyLCA2MiwgMjA4LCAyMiwgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMTgsIDE4MywgMTI1LCAxMjMsIAorICAgIDIsIDIzMiwgMjM2LCAyMDAsIDgwLCAxMjUsIDEyMywgMiwgMjAwLCAxNzYsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjA1LCAKKyAgICA4LCAyMTIsIDI0NiwgMTI1LCAxMjMsIDE3LCAxOTksIDgxLCAxMjUsIDEyMywgMTcsIDEwMiwgMTI1LCAxMjMsIDE3LCAxMDUsIAorICAgIDEyNSwgMTIzLCAxNywgMTQ3LCAxMjUsIDEyMywgMTcsIDE0OSwgMTI1LCAxMjMsIDE3LCAxNjQsIDEyNSwgMTIzLCAxNywgCisgICAgMTg3LCAxMjUsIDEyMywgMTcsIDIxMCwgMTM1LCAxMjUsIDEyMywgMTcsIDE5MiwgMTI1LCAxMjMsIDE3LCAyMTksIDExMywgCisgICAgMTI1LCAxMjMsIDQxLCAyMDYsIDE2MSwgMTI1LCAxMjMsIDQxLCAyMzMsIDgwLCAxMjUsIDEyMywgNDEsIDIwNiwgMTY3LCAKKyAgICAyMDYsIDQ4LCAxMjUsIDEyMywgNDEsIDIyMSwgMTY3LCAxMjUsIDEyMywgNDEsIDIzMywgODMsIDIyMSwgMTY3LCAxMjUsIAorICAgIDEyMywgNDEsIDIwNiwgMTY3LCAyNDgsIDE3MCwgMTI1LCAxMjMsIDQxLCAyMDUsIDg1LCAxMjUsIDEyMywgMiwgMjAyLCAKKyAgICAxNzYsIDIyNCwgMzcsIDEyNSwgMTIzLCAyLCAyMDAsIDEzMiwgMTI1LCAxMjMsIDIsIDIzNCwgMzEsIDEyNSwgMTIzLCAyLCAKKyAgICAyMDYsIDczLCAyMzQsIDMxLCAxMjUsIDEyMywgMiwgMTk4LCAyNDQsIDIwNiwgMTE2LCAxMjUsIDEyMywgMiwgMjMzLCAyMTIsIAorICAgIDEyNSwgMTIzLCAyLCAyMTgsIDE5NywgMTI1LCAxMjMsIDIsIDIwMCwgMTY4LCAxMjUsIDEyMywgMiwgMjE4LCAxMzcsIDEyNSwgCisgICAgMTIzLCAyLCAyNTAsIDEyMywgMTI1LCAxMjMsIDIsIDIwNCwgMTM2LCAyNDcsIDY2LCAxMjUsIDEyMywgMiwgMjIyLCA2MiwgCisgICAgMjA1LCAyNCwgMTI1LCAxMjMsIDIsIDIwNiwgMjIxLCAxMjUsIDEyMywgMiwgMjI0LCA2NywgMTI1LCAxMjMsIDIsIDIyMCwgCisgICAgMjUyLCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIzNCwgMjE5LCAyMjQsIDE1LCAyMTgsIDE0MiwgMjE4LCAxNDEsIDEyNSwgCisgICAgMTIzLCAyLCAyNDYsIDE2MSwgMjQyLCAyMTMsIDIwNSwgMTUsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjA0LCAxMzQsIAorICAgIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjA0LCAxMzUsIDI0NiwgMTgwLCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIxNCwgCisgICAgMjE5LCAyNDEsIDIzNSwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMTgsIDE5MCwgMjA1LCAxNDUsIDEyNSwgMTIzLCAyNDYsIAorICAgIDEzMywgMiwgMjA1LCAxOSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDAsIDQ3LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIAorICAgIDIyNCwgMTU1LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyNSwgNTYsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjAwLCAKKyAgICAxMzEsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjI2LCA2OCwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMzQsIDE0NywgCisgICAgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjEsIDM3LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwNiwgNTksIDEyNSwgMTIzLCAKKyAgICAyNDYsIDEzMywgMiwgMjA1LCAyOSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMTUsIDI0MiwgMTI1LCAxMjMsIDI0NiwgCisgICAgMTMzLCAyLCAyMjYsIDIwNSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMzQsIDIwOSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAKKyAgICAyMDMsIDg0LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIzNywgMTczLCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwMCwgODcsIAorICAgIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjA1LCAyLCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyNSwgMjIwLCAxMjUsIDEyMywgCisgICAgMjQ2LCAxMzMsIDIsIDIwMSwgMTU2LCAxMTQsIDEsIDE3MiwgMTE0LCAxLCAyNDksIDEzNiwgMTE0LCAxLCAxMSwgMTcyLCAKKyAgICAxMTQsIDEsIDIxNSwgMTM1LCAxMTQsIDEsIDE3OCwgMTE0LCAxLCAyMjEsIDIxNCwgMTE0LCAxLCAyNTAsIDIzNCwgMTc4LCAKKyAgICAxMTQsIDEsIDIzNywgMTk1LCAxMTQsIDEsIDIwMywgOTAsIDExNCwgMSwgMjAyLCAyMzUsIDExNCwgMSwgMjA3LCAzNiwgCisgICAgMTE0LCAxLCAyNDIsIDU4LCAxMTQsIDEsIDExLCAyMDQsIDI1MywgMTE0LCAxLCAxMSwgMjA3LCAzNiwgMTE0LCAxLCAyMDQsIAorICAgIDI1MywgMTE0LCAxLCAyNDEsIDIyMCwgMTE0LCAxLCAxODgsIDExNCwgMSwgMjE5LCAxNTQsIDExNCwgMSwgMTEsIDIxOSwgCisgICAgMjEsIDExNCwgMSwgMjUwLCAyMzQsIDE4OCwgMTE0LCAxLCAyMTksIDIxLCAxMTQsIDEsIDIxOSwgNywgMTE0LCAxLCAxOTQsIAorICAgIDExNCwgMSwgMjI0LCAxLCAxMTQsIDEsIDIyNCwgMjIzLCAxMTQsIDEsIDIyNCwgMjEyLCAxMTQsIDEsIDIwNSwgMjAwLCAKKyAgICAxMTQsIDEsIDI0MCwgMjE5LCAxMTQsIDEsIDIwNSwgMTkyLCAxMTQsIDEsIDI0MCwgMjE4LCAxMTQsIDEsIDE2MSwgMTE0LCAKKyAgICAxLCAyMzYsIDg5LCAxMTQsIDEsIDExLCAxNjEsIDExNCwgMSwgMjE0LCAxNTksIDExNCwgMSwgMjE0LCAxMzYsIDExNCwgMSwgCisgICAgMjE5LCAyNTMsIDExNCwgMSwgMjE5LCAyMDIsIDExNCwgMSwgMjUwLCAyMzQsIDIxOSwgMjUzLCAxMTQsIDEsIDE0NCwgMTE0LCAKKyAgICAxLCAyMDAsIDE4MSwgMTE0LCAxLCAyMzUsIDE5OSwgMTE0LCAxLCAyMzUsIDE3NCwgMTE0LCAxLCAyMDUsIDcsIDExNCwgMSwgCisgICAgMjM5LCA3NywgMTE0LCAxLCAyMTgsIDYwLCAxMTQsIDEsIDIxOCwgNDMsIDExNCwgMSwgMjA1LCAyMiwgMTE0LCAxLCAyMzksIAorICAgIDg3LCAxMTQsIDEsIDExLCAyMDUsIDIyLCAxMTQsIDEsIDExLCAyMzksIDg3LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDIyLCAKKyAgICAxMTQsIDEsIDIxMCwgMTE0LCAxMTQsIDEsIDIwOCwgMTc5LCAxMTQsIDEsIDE5OSwgNzcsIDExNCwgMSwgMTk5LCA1LCAxMTQsIAorICAgIDEsIDIwNSwgMzIsIDExNCwgMSwgMjM5LCA5MywgMTE0LCAxLCAxMSwgMjA1LCAzMiwgMTE0LCAxLCAyMTIsIDY0LCAxMTQsIAorICAgIDEsIDE5OSwgMTE0LCAxMTQsIDEsIDE5OSwgNiwgMTE0LCAxLCAxOTgsIDIzMiwgMTE0LCAxLCAxOTgsIDIxMiwgMTE0LCAxLCAKKyAgICAyNTAsIDIzNCwgMTk4LCAyMzIsIDExNCwgMSwgMTk4LCAyMDQsIDExNCwgMSwgMTk4LCAyMTEsIDExNCwgMSwgMjAxLCAxMTQsIAorICAgIDExNCwgMSwgMjUxLCAxODUsIDExNCwgMSwgMjM0LCA4NCwgMTE0LCAxLCAyMjAsIDEyMSwgMTE0LCAyLCAyNTAsIDE3MSwgCisgICAgMTE0LCAyLCAyMTMsIDE2NSwgMjAyLCAxODcsIDExNCwgMiwgMjEzLCAxNjUsIDI1MCwgMTcxLCAxMTQsIDIyLCAyLCA2MiwgCisgICAgMTE0LCAyMiwgMiwgMjUyLCAxMzgsIDExNCwgMjIsIDIsIDI1MSwgMTgxLCAxMTQsIDIyLCAyLCAyNTEsIDg1LCAxMTQsIDIyLCAKKyAgICAyLCAyNTEsIDc2LCAxMTQsIDIyLCAyLCA3NCwgMTE0LCAyMiwgMiwgMjE3LCA2MywgMTE0LCAyMiwgMiwgMjAxLCAwLCAxMTQsIAorICAgIDIyLCAyLCAyMDEsIDE0NywgMTE0LCAyMiwgMiwgNzIsIDExNCwgMjIsIDIsIDIzOCwgMTc5LCAxMTQsIDIyLCAyLCAyMzgsIAorICAgIDE2NSwgMTE0LCAyMiwgMiwgMjE3LCAxMTgsIDExNCwgMjIsIDIsIDcwLCAxMTQsIDIyLCAyLCAyMzIsIDI0MCwgMTE0LCAyMiwgCisgICAgMiwgMjMyLCAyMzksIDExNCwgMjIsIDIsIDIzMiwgMjM4LCAxMTQsIDIyLCAyLCAyMjgsIDQ1LCAxMTQsIDIyLCAyLCAyMjgsIAorICAgIDE3OCwgMTE0LCAyMiwgMiwgMjI4LCAxNTEsIDExNCwgMjIsIDIsIDIyOCwgOCwgMTE0LCAyMiwgMiwgMjI4LCA5MSwgMTE0LCAKKyAgICAyMiwgMiwgNjYsIDExNCwgMjIsIDIsIDIwNCwgNDYsIDExNCwgMjIsIDIsIDIwNCwgNDUsIDExNCwgMjIsIDIsIDIwNCwgNDQsIAorICAgIDExNCwgMjIsIDIsIDIwMywgMTgyLCAxMTQsIDIyLCAyLCAyMDQsIDI4LCAxMTQsIDIyLCAyLCAyMDMsIDI0NiwgMTE0LCAyMiwgCisgICAgMiwgMjAwLCAxMjMsIDExNCwgMjIsIDIsIDIwMCwgOSwgMTE0LCAyMiwgMiwgMjUxLCAyMjEsIDExNCwgMjIsIDIsIDI1MSwgCisgICAgMjE3LCAxMTQsIDIyLCAyLCAyMzgsIDEwOCwgMTE0LCAyMiwgMiwgMjEyLCAyMTksIDIzOCwgMTA4LCAxMTQsIDIyLCAyLCAKKyAgICAyMzgsIDExNSwgMTE0LCAyMiwgMiwgMjEyLCAyMTksIDIzOCwgMTE1LCAxMTQsIDIyLCAyLCAyNTEsIDE3NiwgMTE0LCAyMiwgCisgICAgMiwgMjM4LCAyMzQsIDExNCwgMjIsIDIsIDI1MCwgMTM5LCAxMTQsIDIyLCAyLCAyMTcsIDMsIDExNCwgMjIsIDIsIDIyMCwgCisgICAgMjE0LCAxMTQsIDIyLCAyLCAyMTksIDI1NSwgMTE0LCAxNTAsIDIxMywgNDYsIDExNCwgMTUwLCAyMDUsIDE1OCwgMjEzLCAKKyAgICA0NiwgMTE0LCAxNTAsIDU2LCAxMTQsIDE1MCwgNTcsIDExNCwgMSwgMjA1LCAxNzIsIDExNCwgMSwgMjA1LCAxNzEsIDExNCwgCisgICAgMSwgMjA1LCAxNzAsIDExNCwgMSwgMjA1LCAxNjksIDExNCwgMSwgMjA1LCAxNjgsIDExNCwgMSwgMjA1LCAxNjcsIDExNCwgCisgICAgMSwgMjA1LCAxNjYsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTczLCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE3MiwgMTE0LCAKKyAgICAxLCAyMTMsIDE2NSwgMjA1LCAxNzAsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTY5LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIAorICAgIDE2OCwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNjYsIDE4LCAyMjgsIDEwLCA4MSwgMTgsIDI0NiwgNjEsIDE4LCAyNDYsIAorICAgIDYwLCAxOCwgMjQ2LCA1OSwgMTgsIDI0NiwgNTgsIDE4LCAyNDYsIDU3LCAxOCwgMjQ2LCA1NiwgMTgsIDI0NiwgNTUsIDE4LCAKKyAgICAyNDYsIDU0LCAxOCwgMjQ2LCA1MywgMTgsIDI0NiwgNTIsIDE4LCAyNDYsIDUxLCAxOCwgMjQ2LCA1MCwgMTgsIDI0NiwgNDksIAorICAgIDE4LCAyNDYsIDQ4LCAxOCwgMjQ2LCA0NywgMTgsIDI0NiwgNDYsIDE4LCAyNDYsIDQ1LCAxOCwgMjQ2LCA0NCwgMTgsIDI0NiwgCisgICAgNDMsIDE4LCAyNDYsIDQyLCAxOCwgMjQ2LCA0MSwgMTgsIDI0NiwgNDAsIDE4LCAyNDYsIDM5LCAxOCwgMjQ2LCAzOCwgMTgsIAorICAgIDI0NiwgMzcsIDE4LCAyNDYsIDM2LCAxOCwgMjQ2LCAzNSwgMTgsIDI0NiwgMzQsIDE4LCAyNDYsIDMzLCAxOCwgMjQ2LCAzMiwgCisgICAgMTgsIDI0NiwgMzEsIDE4LCAyNDYsIDMwLCAxOCwgMjQ2LCAyOSwgMTgsIDI0NiwgMjgsIDE4LCAyNDYsIDI3LCAxOCwgMjQ2LCAKKyAgICAyNiwgMTgsIDI0NiwgMjUsIDE4LCAyNDYsIDI0LCAxOCwgMjQ2LCAyMywgMTgsIDI0NiwgMjIsIDE4LCAyNDYsIDIxLCAxOCwgCisgICAgMjQ2LCAyMCwgMTgsIDI0NiwgMTksIDE4LCAyNDYsIDE4LCAxOCwgMjQ2LCAxNywgMTgsIDI0NiwgMTYsIDE4LCAyNDYsIDE1LCAKKyAgICAxOCwgMjQ2LCAxNCwgMTgsIDI0NiwgMTMsIDE4LCAyNDYsIDEyLCAxOCwgMjQ2LCAxMSwgMTgsIDI0NiwgMTAsIDE4LCAyNDYsIAorICAgIDksIDE4LCAyNDYsIDgsIDE4LCAyNDYsIDcsIDE4LCAyNDYsIDYsIDE4LCAyNDYsIDUsIDE4LCAyNDYsIDQsIDE4LCAyNDYsIAorICAgIDMsIDE4LCAyNDYsIDIsIDE4LCAyNDYsIDEsIDE4LCAyNDYsIDAsIDE4LCAyNDUsIDI1NSwgMTgsIDI0NSwgMjU0LCAxOCwgCisgICAgMjQ1LCAyNTMsIDE4LCAyNDUsIDI1MiwgMTgsIDI0NSwgMjUxLCAxOCwgMjQ1LCAyNTAsIDE4LCAyNDUsIDI0OSwgMTgsIAorICAgIDI0NSwgMjQ4LCAxOCwgMjQ1LCAyNDcsIDE4LCAyNDUsIDI0NiwgMTgsIDI0NSwgMjQ1LCAxOCwgMjQ1LCAyNDQsIDE4LCAKKyAgICAyNDUsIDI0MywgMTgsIDI0NSwgMjQyLCAxOCwgMjQ1LCAyNDEsIDE4LCAyNDUsIDI0MCwgMTgsIDI0NSwgMjM5LCAxOCwgCisgICAgMjQ1LCAyMzgsIDE4LCAyNDUsIDIzNywgMTgsIDI0NSwgMjM2LCAxOCwgMjQ1LCAyMzUsIDE4LCAyNDUsIDIzNCwgMTgsIAorICAgIDI0NSwgMjMzLCAxOCwgMjQ1LCAyMzIsIDE4LCAyNDUsIDIzMSwgMTgsIDI0NSwgMjMwLCAxOCwgMjQ1LCAyMjksIDE4LCAKKyAgICAyNDUsIDIyOCwgMTgsIDI0NSwgMjI3LCAxOCwgMjQ1LCAyMjYsIDE4LCAyNDUsIDIyNSwgMTgsIDI0NSwgMjI0LCAxOCwgCisgICAgMjQ1LCAyMjMsIDE4LCAyNDUsIDIyMiwgMTgsIDI0NSwgMjIxLCAxOCwgMjQ1LCAyMjAsIDE4LCAyNDUsIDIxOSwgMTgsIAorICAgIDI0NSwgMjE4LCAxOCwgMjQ1LCAyMTcsIDE4LCAyNDUsIDIxNiwgMTgsIDI0NSwgMjE1LCAxOCwgMjQ1LCAyMTQsIDE4LCAKKyAgICAyNDUsIDIxMywgMTgsIDI0NSwgMjEyLCAxOCwgMjQ1LCAyMTEsIDE4LCAyNDUsIDIxMCwgMTgsIDI0NSwgMjA5LCAxOCwgCisgICAgMjQ1LCAyMDgsIDE4LCAyNDUsIDIwNywgMTgsIDI0NSwgMjA2LCAxOCwgMjQ1LCAyMDUsIDE4LCAyNDUsIDIwNCwgMTgsIAorICAgIDI0NSwgMjAzLCAxOCwgMjQ1LCAyMDIsIDE4LCAyNDUsIDIwMSwgMTgsIDI0NSwgMjAwLCAxOCwgMjQ1LCAxOTksIDE4LCAKKyAgICAyNDUsIDE5OCwgMTgsIDI0NSwgMTk3LCAxOCwgMjQ1LCAxOTYsIDE4LCAyNDUsIDE5NSwgMTgsIDI0NSwgMTk0LCAxOCwgCisgICAgMjQ1LCAxOTMsIDE4LCAyNDUsIDE5MiwgMTgsIDI0NSwgMTkxLCAxOCwgMjQ1LCAxOTAsIDE4LCAyNDUsIDE4OSwgMTgsIAorICAgIDI0NSwgMTg4LCAxOCwgMjQ1LCAxODcsIDE4LCAyNDUsIDE4NiwgMTgsIDI0NSwgMTg1LCAxOCwgMjQ1LCAxODQsIDE4LCAKKyAgICAyNDUsIDE4MywgMTgsIDI0NSwgMTgyLCAxOCwgMjQ1LCAxODEsIDE4LCAyNDUsIDE4MCwgMTgsIDI0NSwgMTc5LCAxOCwgCisgICAgMjQ1LCAxNzgsIDE4LCAyNDUsIDE3NywgMTgsIDI0NSwgMTc2LCAxOCwgMjQ1LCAxNzUsIDE4LCAyNDUsIDE3NCwgMTgsIAorICAgIDI0NSwgMTczLCAxOCwgMjQ1LCAxNzIsIDE4LCAyNDUsIDE3MSwgMTgsIDI0NSwgMTcwLCAxOCwgMjQ1LCAxNjksIDE4LCAKKyAgICAyNDUsIDE2OCwgMTgsIDI0NSwgMTY3LCAxOCwgMjQ1LCAxNjYsIDE4LCAyNDUsIDE2NSwgMTgsIDI0NSwgMTY0LCAxOCwgCisgICAgMjQ1LCAxNjMsIDE4LCAyNDUsIDE2MiwgMTgsIDI0NSwgMTYxLCAxOCwgMjQ1LCAxNjAsIDE4LCAyNDUsIDE1OSwgMTgsIAorICAgIDI0NSwgMTU4LCAxOCwgMjQ1LCAxNTcsIDE4LCAyNDUsIDE1NiwgMTgsIDI0NSwgMTU1LCAxOCwgMjQ1LCAxNTQsIDE4LCAKKyAgICAyNDUsIDE1MywgMTgsIDI0NSwgMTUyLCAxOCwgMjQ1LCAxNTEsIDE4LCAyNDUsIDE1MCwgMTgsIDI0NSwgMTQ5LCAxOCwgCisgICAgMjQ1LCAxNDgsIDE4LCAyNDUsIDE0NywgMTgsIDI0NSwgMTQ2LCAxOCwgMjQ1LCAxNDUsIDE4LCAyNDUsIDE0NCwgMTgsIAorICAgIDI0NSwgMTQzLCAxOCwgMjQ1LCAxNDIsIDE4LCAyNDUsIDE0MSwgMTgsIDI0NSwgMTQwLCAxOCwgMjQ1LCAxMzksIDE4LCAKKyAgICAyNDUsIDEzOCwgMTgsIDI0NSwgMTM3LCAxOCwgMjQ1LCAxMzYsIDE4LCAyNDUsIDEzNSwgMTgsIDI0NSwgMTM0LCAxOCwgCisgICAgMjQ1LCAxMzMsIDE4LCAyNDUsIDEzMiwgMTgsIDI0NSwgMTMxLCAxOCwgMjQ1LCAxMzAsIDE4LCAyNDUsIDEyOSwgMTgsIAorICAgIDI0NSwgMTI4LCAxOCwgMjQ1LCAxMjcsIDE4LCAyNDUsIDEyNiwgMTgsIDI0NSwgMTI1LCAxOCwgMjQ1LCAxMjQsIDE4LCAKKyAgICAyNDUsIDEyMywgMTgsIDI0NSwgMTIyLCAxOCwgMjQ1LCAxMjEsIDE4LCAyNDUsIDEyMCwgMTgsIDI0NSwgMTE5LCAxOCwgCisgICAgMjQ1LCAxMTgsIDE4LCAyNDUsIDExNywgMTgsIDI0NSwgMTE2LCAxOCwgMjQ1LCAxMTUsIDE4LCAyNDUsIDExNCwgMTgsIAorICAgIDI0NSwgMTEzLCAxOCwgMjQ1LCAxMTIsIDE4LCAyNDUsIDExMSwgMTgsIDI0NSwgMTEwLCAxOCwgMjQ1LCAxMDksIDE4LCAKKyAgICAyNDUsIDEwOCwgMTgsIDI0NSwgMTA3LCAxOCwgMjQ1LCAxMDYsIDE4LCAyNDUsIDEwNSwgMTgsIDI0NSwgMTA0LCAxOCwgCisgICAgMjQ1LCAxMDMsIDE4LCAyNDUsIDEwMiwgMTgsIDI0NSwgMTAxLCAxOCwgMjQ1LCAxMDAsIDE4LCAyNDUsIDk5LCAxOCwgMjQ1LCAKKyAgICA5OCwgMTgsIDI0NSwgOTcsIDE4LCAyNDUsIDk2LCAxOCwgMjQ1LCA5NSwgMTgsIDI0NSwgOTQsIDE4LCAyNDUsIDkzLCAxOCwgCisgICAgMjQ1LCA5MiwgMTgsIDI0NSwgOTEsIDE4LCAyNDUsIDkwLCAxOCwgMjQ1LCA4OSwgMTgsIDI0NSwgODgsIDE4LCAyNDUsIDg3LCAKKyAgICAxOCwgMjQ1LCA4NiwgMTgsIDI0NSwgODUsIDE4LCAyNDUsIDg0LCAxOCwgMjQ1LCA4MywgMTgsIDI0NSwgODIsIDE4LCAyNDUsIAorICAgIDgxLCAxOCwgMjQ1LCA4MCwgMTgsIDI0NSwgNzksIDE4LCAyNDUsIDc4LCAxOCwgMjQ1LCA3NywgMTgsIDI0NSwgNzYsIDE4LCAKKyAgICAyNDUsIDc1LCAxOCwgMjQ1LCA3NCwgMTgsIDI0NSwgNzMsIDE4LCAyNDUsIDcyLCAxOCwgMjQ1LCA3MSwgMTgsIDI0NSwgNzAsIAorICAgIDE4LCAyNDUsIDY5LCAxOCwgMjQ1LCA2OCwgMTgsIDI0NSwgNjcsIDE4LCAyNDUsIDY2LCAxOCwgMjQ1LCA2NSwgMTgsIDI0NSwgCisgICAgNjQsIDE4LCAyNDUsIDYzLCAxOCwgMjQ1LCA2MiwgMTgsIDI0NSwgNjEsIDE4LCAyNDUsIDYwLCAxOCwgMjQ1LCA1OSwgMTgsIAorICAgIDI0NSwgNTgsIDE4LCAyNDUsIDU3LCAxOCwgMjQ1LCA1NiwgMTgsIDI0NSwgNTUsIDE4LCAyNDUsIDU0LCAxOCwgMjQ1LCA1MywgCisgICAgMTgsIDI0NSwgNTIsIDE4LCAyNDUsIDUxLCAxOCwgMjQ1LCA1MCwgMTgsIDI0NSwgNDksIDE4LCAyNDUsIDQ4LCAxOCwgMjQ1LCAKKyAgICA0NywgMTgsIDI0NSwgNDYsIDE4LCAyNDUsIDQ1LCAxOCwgMjQ1LCA0NCwgMTgsIDI0NSwgNDMsIDE4LCAyNDUsIDQyLCAxOCwgCisgICAgMjQ1LCA0MSwgMTgsIDI0NSwgNDAsIDE4LCAyNDUsIDM5LCAxOCwgMjQ1LCAzOCwgMTgsIDI0NSwgMzcsIDE4LCAyNDUsIDM2LCAKKyAgICAxOCwgMjQ1LCAzNSwgMTgsIDI0NSwgMzQsIDE4LCAyNDUsIDMzLCAxOCwgMjQ1LCAzMiwgMTgsIDI0NSwgMzEsIDE4LCAyNDUsIAorICAgIDMwLCAxOCwgMjQ1LCAyOSwgMTgsIDI0NSwgMjgsIDE4LCAyNDUsIDI3LCAxOCwgMjQ1LCAyNiwgMTgsIDI0NSwgMjUsIDE4LCAKKyAgICAyNDUsIDI0LCAxOCwgMjQ1LCAyMywgMTgsIDI0NSwgMjIsIDE4LCAyNDUsIDIxLCAxOCwgMjQ1LCAyMCwgMTgsIDI0NSwgMTksIAorICAgIDE4LCAyNDUsIDE4LCAxOCwgMjQ1LCAxNywgMTgsIDI0NSwgMTYsIDE4LCAyNDUsIDE1LCAxOCwgMjQ1LCAxNCwgMTgsIDI0NSwgCisgICAgMTMsIDE4LCAyNDUsIDEyLCAxOCwgMjQ1LCAxMSwgMTgsIDI0NSwgMTAsIDE4LCAyNDUsIDksIDE4LCAyNDUsIDgsIDE4LCAKKyAgICAyNDUsIDcsIDE4LCAyNDUsIDYsIDE4LCAyNDUsIDUsIDE4LCAyNDUsIDQsIDE4LCAyNDUsIDMsIDE4LCAyNDUsIDIsIDE4LCAKKyAgICAyNDUsIDEsIDE4LCAyNDUsIDAsIDE4LCAyNDQsIDI1NSwgMTgsIDI0NCwgMjU0LCAxOCwgMjQ0LCAyNTMsIDE4LCAyNDQsIAorICAgIDI1MiwgMTgsIDI0NCwgMjUxLCAxOCwgMjQ0LCAyNTAsIDE4LCAyNDQsIDI0OSwgMTgsIDI0NCwgMjQ4LCAxOCwgMjQ0LCAKKyAgICAyNDcsIDE4LCAyNDQsIDI0NiwgMTgsIDI0NCwgMjQ1LCAxOCwgMjQ0LCAyNDQsIDE4LCAyNDQsIDI0MywgMTgsIDI0NCwgCisgICAgMjQyLCAxOCwgMjQ0LCAyNDEsIDE4LCAyNDQsIDI0MCwgMTgsIDI0NCwgMjM5LCAxOCwgMjQ0LCAyMzgsIDE4LCAyNDQsIAorICAgIDIzNywgMTgsIDI0NCwgMjM2LCAxOCwgMjQ0LCAyMzUsIDE4LCAyNDQsIDIzNCwgMTgsIDI0NCwgMjMzLCAxOCwgMjQ0LCAKKyAgICAyMzIsIDE4LCAyNDQsIDIzMSwgMTgsIDI0NCwgMjMwLCAxOCwgMjQ0LCAyMjksIDE4LCAyNDQsIDIyOCwgMTgsIDI0NCwgCisgICAgMjI3LCAxOCwgMjQ0LCAyMjYsIDE4LCAyNDQsIDIyNSwgMTgsIDI0NCwgMjI0LCAxOCwgMjQ0LCAyMjMsIDE4LCAyNDQsIAorICAgIDIyMiwgMTgsIDI0NCwgMjIxLCAxOCwgMjQ0LCAyMjAsIDE4LCAyNDQsIDIxOSwgMTgsIDI0NCwgMjE4LCAxOCwgMjQ0LCAKKyAgICAyMTcsIDE4LCAyNDQsIDIxNiwgMTgsIDI0NCwgMjE1LCAxOCwgMjQ0LCAyMTQsIDE4LCAyNDQsIDIxMywgMTgsIDI0NCwgCisgICAgMjEyLCAxOCwgMjQ0LCAyMTEsIDE4LCAyNDQsIDIxMCwgMTgsIDI0NCwgMjA5LCAxOCwgMjQ0LCAyMDgsIDE4LCAyNDQsIAorICAgIDIwNywgMTgsIDI0NCwgMjA2LCAxOCwgMjQ0LCAyMDUsIDE4LCAyNDQsIDIwNCwgMTgsIDI0NCwgMjAzLCAxOCwgMjQ0LCAKKyAgICAyMDIsIDE4LCAyNDQsIDIwMSwgMTgsIDI0NCwgMjAwLCAxOCwgMjQ0LCAxOTksIDE4LCAyNDQsIDE5OCwgMTgsIDI0NCwgCisgICAgMTk3LCAxOCwgMjQ0LCAxOTYsIDE4LCAyNDQsIDE5NSwgMTgsIDI0NCwgMTk0LCAxOCwgMjQ0LCAxOTMsIDE4LCAyNDQsIAorICAgIDE5MiwgMTgsIDI0NCwgMTkxLCAxOCwgMjQ0LCAxOTAsIDE4LCAyNDQsIDE4OSwgMTgsIDI0NCwgMTg4LCAxOCwgMjQ0LCAKKyAgICAxODcsIDE4LCAyNDQsIDE4NiwgMTgsIDI0NCwgMTg1LCAxOCwgMjQ0LCAxODQsIDE4LCAyNDQsIDE4MywgMTgsIDI0NCwgCisgICAgMTgyLCAxOCwgMjQ0LCAxODEsIDE4LCAyNDQsIDE4MCwgMTgsIDI0NCwgMTc5LCAxOCwgMjQ0LCAxNzgsIDE4LCAyNDQsIAorICAgIDE3NywgMTgsIDI0NCwgMTc2LCAxOCwgMjQ0LCAxNzUsIDE4LCAyNDQsIDE3NCwgMTgsIDI0NCwgMTczLCAxOCwgMjQ0LCAKKyAgICAxNzIsIDE4LCAyNDQsIDE3MSwgMTgsIDI0NCwgMTcwLCAxOCwgMjQ0LCAxNjksIDE4LCAyNDQsIDE2OCwgMTgsIDI0NCwgCisgICAgMTY3LCAxOCwgMjQ0LCAxNjYsIDE4LCAyNDQsIDE2NSwgMTgsIDI0NCwgMTY0LCAxOCwgMjQ0LCAxNjMsIDE4LCAyNDQsIAorICAgIDE2MiwgMTgsIDI0NCwgMTYxLCAxOCwgMjQ0LCAxNjAsIDE4LCAyNDQsIDE1OSwgMTgsIDI0NCwgMTU4LCAxOCwgMjQ0LCAKKyAgICAxNTcsIDE4LCAyNDQsIDE1NiwgMTgsIDI0NCwgMTU1LCAxOCwgMjQ0LCAxNTQsIDE4LCAyNDQsIDE1MywgMTgsIDI0NCwgCisgICAgMTUyLCAxOCwgMjQ0LCAxNTEsIDE4LCAyNDQsIDE1MCwgMTgsIDI0NCwgMTQ5LCAxOCwgMjQ0LCAxNDgsIDE4LCAyNDQsIAorICAgIDE0NywgMTgsIDI0NCwgMTQ2LCAxOCwgMjQ0LCAxNDUsIDE4LCAyNDQsIDE0NCwgMTgsIDI0NCwgMTQzLCAxOCwgMjQ0LCAKKyAgICAxNDIsIDE4LCAyNDQsIDE0MSwgMTgsIDI0NCwgMTQwLCAxOCwgMjQ0LCAxMzksIDE4LCAyNDQsIDEzOCwgMTgsIDI0NCwgCisgICAgMTM3LCAxOCwgMjQ0LCAxMzYsIDE4LCAyNDQsIDEzNSwgMTgsIDI0NCwgMTM0LCAxOCwgMjQ0LCAxMzMsIDE4LCAyNDQsIAorICAgIDEzMiwgMTgsIDI0NCwgMTMxLCAxOCwgMjQ0LCAxMzAsIDE4LCAyNDQsIDEyOSwgMTgsIDI0NCwgMTI4LCAxOCwgMjQ0LCAKKyAgICAxMjcsIDE4LCAyNDQsIDEyNiwgMTgsIDI0NCwgMTI1LCAxOCwgMjQ0LCAxMjQsIDE4LCAyNDQsIDEyMywgMTgsIDI0NCwgCisgICAgMTIyLCAxOCwgMjQ0LCAxMjEsIDE4LCAyNDQsIDEyMCwgMTgsIDI0NCwgMTE5LCAxOCwgMjQ0LCAxMTgsIDE4LCAyNDQsIAorICAgIDExNywgMTgsIDI0NCwgMTE2LCAxOCwgMjQ0LCAxMTUsIDE4LCAyNDQsIDExNCwgMTgsIDI0NCwgMTEzLCAxOCwgMjQ0LCAKKyAgICAxMTIsIDE4LCAyNDQsIDExMSwgMTgsIDI0NCwgMTEwLCAxOCwgMjQ0LCAxMDksIDE4LCAyNDQsIDEwOCwgMTgsIDI0NCwgCisgICAgMTA3LCAxOCwgMjQ0LCAxMDYsIDE4LCAyNDQsIDEwNSwgMTgsIDI0NCwgMTA0LCAxOCwgMjQ0LCAxMDMsIDE4LCAyNDQsIAorICAgIDEwMiwgMTgsIDI0NCwgMTAxLCAxOCwgMjQ0LCAxMDAsIDE4LCAyNDQsIDk5LCAxOCwgMjQ0LCA5OCwgMTgsIDI0NCwgOTcsIAorICAgIDE4LCAyNDQsIDk2LCAxOCwgMjQ0LCA5NSwgMTgsIDI0NCwgOTQsIDE4LCAyNDQsIDkzLCAxOCwgMjQ0LCA5MiwgMTgsIDI0NCwgCisgICAgOTEsIDE4LCAyNDQsIDkwLCAxOCwgMjQ0LCA4OSwgMTgsIDI0NCwgODgsIDE4LCAyNDQsIDg3LCAxOCwgMjQ0LCA4NiwgMTgsIAorICAgIDI0NCwgODUsIDE4LCAyNDQsIDg0LCAxOCwgMjQ0LCA4MywgMTgsIDI0NCwgODIsIDE4LCAyNDQsIDgxLCAxOCwgMjQ0LCA4MCwgCisgICAgMTgsIDI0NCwgNzksIDE4LCAyNDQsIDc4LCAxOCwgMjQ0LCA3NywgMTgsIDI0NCwgNzYsIDE4LCAyNDQsIDc1LCAxOCwgMjQ0LCAKKyAgICA3NCwgMTgsIDI0NCwgNzMsIDE4LCAyNDQsIDcyLCAxOCwgMjQ0LCA3MSwgMTgsIDI0NCwgNzAsIDE4LCAyNDQsIDY5LCAxOCwgCisgICAgMjQ0LCA2OCwgMTgsIDI0NCwgNjcsIDE4LCAyNDQsIDY2LCAxOCwgMjQ0LCA2NSwgMTgsIDI0NCwgNjQsIDE4LCAyNDQsIDYzLCAKKyAgICAxOCwgMjQ0LCA2MiwgMTgsIDI0NCwgNjEsIDE4LCAyNDQsIDYwLCAxOCwgMjQ0LCA1OSwgMTgsIDI0NCwgNTgsIDE4LCAyNDQsIAorICAgIDU3LCAxOCwgMjQ0LCA1NiwgMTgsIDI0NCwgNTUsIDE4LCAyNDQsIDU0LCAxOCwgMjQ0LCA1MywgMTgsIDI0NCwgNTIsIDE4LCAKKyAgICAyNDQsIDUxLCAxOCwgMjQ0LCA1MCwgMTgsIDI0NCwgNDksIDE4LCAyNDQsIDQ4LCAxOCwgMjQ0LCA0NywgMTgsIDI0NCwgNDYsIAorICAgIDE4LCAyNDQsIDQ1LCAxOCwgMjQ0LCA0NCwgMTgsIDI0NCwgNDMsIDE4LCAyNDQsIDQyLCAxOCwgMjQ0LCA0MSwgMTgsIDI0NCwgCisgICAgNDAsIDE4LCAyNDQsIDM5LCAxOCwgMjQ0LCAzOCwgMTgsIDI0NCwgMzcsIDE4LCAyNDQsIDM2LCAxOCwgMjQ0LCAzNSwgMTgsIAorICAgIDI0NCwgMzQsIDE4LCAyNDQsIDMzLCAxOCwgMjQ0LCAzMiwgMTgsIDI0NCwgMzEsIDE4LCAyNDQsIDMwLCAxOCwgMjQ0LCAyOSwgCisgICAgMTgsIDI0NCwgMjgsIDE4LCAyNDQsIDI3LCAxOCwgMjQ0LCAyNiwgMTgsIDI0NCwgMjUsIDE4LCAyNDQsIDI0LCAxOCwgMjQ0LCAKKyAgICAyMywgMTgsIDI0NCwgMjIsIDE4LCAyNDQsIDIxLCAxOCwgMjQ0LCAyMCwgMTgsIDI0NCwgMTksIDE4LCAyNDQsIDE4LCAxOCwgCisgICAgMjQ0LCAxNywgMTgsIDI0NCwgMTYsIDE4LCAyNDQsIDE1LCAxOCwgMjQ0LCAxNCwgMTgsIDI0NCwgMTMsIDE4LCAyNDQsIDEyLCAKKyAgICAxOCwgMjQ0LCAxMSwgMTgsIDI0NCwgMTAsIDE4LCAyNDQsIDksIDE4LCAyNDQsIDgsIDE4LCAyNDQsIDcsIDE4LCAyNDQsIDYsIAorICAgIDE4LCAyNDQsIDUsIDE4LCAyNDQsIDQsIDE4LCAyNDQsIDMsIDE4LCAyNDQsIDIsIDE4LCAyNDQsIDEsIDE4LCAyNDQsIDAsIAorICAgIDE4LCAyNDMsIDI1NSwgMTgsIDI0MywgMjU0LCAxOCwgMjQzLCAyNTMsIDE4LCAyNDMsIDI1MiwgMTgsIDI0MywgMjUxLCAxOCwgCisgICAgMjQzLCAyNTAsIDE4LCAyNDMsIDI0OSwgMTgsIDI0MywgMjQ4LCAxOCwgMjQzLCAyNDcsIDE4LCAyNDMsIDI0NiwgMTgsIAorICAgIDI0MywgMjQ1LCAxOCwgMjQzLCAyNDQsIDE4LCAyNDMsIDI0MywgMTgsIDI0MywgMjQyLCAxOCwgMjQzLCAyNDEsIDE4LCAKKyAgICAyNDMsIDI0MCwgMTgsIDI0MywgMjM5LCAxOCwgMjQzLCAyMzgsIDE4LCAyNDMsIDIzNywgMTgsIDI0MywgMjM2LCAxOCwgCisgICAgMjQzLCAyMzUsIDE4LCAyNDMsIDIzNCwgMTgsIDI0MywgMjMzLCAxOCwgMjQzLCAyMzIsIDE4LCAyNDMsIDIzMSwgMTgsIAorICAgIDI0MywgMjMwLCAxOCwgMjQzLCAyMjksIDE4LCAyNDMsIDIyOCwgMTgsIDI0MywgMjI3LCAxOCwgMjQzLCAyMjYsIDE4LCAKKyAgICAyNDMsIDIyNSwgMTgsIDI0MywgMjI0LCAxOCwgMjQzLCAyMjMsIDE4LCAyNDMsIDIyMiwgMTgsIDI0MywgMjIxLCAxOCwgCisgICAgMjQzLCAyMjAsIDE4LCAyNDMsIDIxOSwgMTgsIDI0MywgMjE4LCAxOCwgMjQzLCAyMTcsIDE4LCAyNDMsIDIxNiwgMTgsIAorICAgIDI0MywgMjE1LCAxOCwgMjQzLCAyMTQsIDE4LCAyNDMsIDIxMywgMTgsIDI0MywgMjEyLCAxOCwgMjQzLCAyMTEsIDE4LCAKKyAgICAyNDMsIDIxMCwgMTgsIDI0MywgMjA5LCAxOCwgMjQzLCAyMDgsIDE4LCAyNDMsIDIwNywgMTgsIDI0MywgMjA2LCAxOCwgCisgICAgMjQzLCAyMDUsIDE4LCAyNDMsIDIwNCwgMTgsIDI0MywgMjAzLCAxOCwgMjQzLCAyMDIsIDE4LCAyNDMsIDIwMSwgMTgsIAorICAgIDI0MywgMjAwLCAxOCwgMjQzLCAxOTksIDE4LCAyNDMsIDE5OCwgMTgsIDI0MywgMTk3LCAxOCwgMjQzLCAxOTYsIDE4LCAKKyAgICAyNDMsIDE5NSwgMTgsIDI0MywgMTk0LCAxOCwgMjQzLCAxOTMsIDE4LCAyNDMsIDE5MiwgMTgsIDI0MywgMTkxLCAxOCwgCisgICAgMjQzLCAxOTAsIDE4LCAyNDMsIDE4OSwgMTgsIDI0MywgMTg4LCAxOCwgMjQzLCAxODcsIDE4LCAyNDMsIDE4NiwgMTgsIAorICAgIDI0MywgMTg1LCAxOCwgMjQzLCAxODQsIDE4LCAyNDMsIDE4MywgMTgsIDI0MywgMTgyLCAxOCwgMjQzLCAxODEsIDE4LCAKKyAgICAyNDMsIDE4MCwgMTgsIDI0MywgMTc5LCAxOCwgMjQzLCAxNzgsIDE4LCAyNDMsIDE3NywgMTgsIDI0MywgMTc2LCAxOCwgCisgICAgMjQzLCAxNzUsIDE4LCAyNDMsIDE3NCwgMTgsIDI0MywgMTczLCAxOCwgMjQzLCAxNzIsIDE4LCAyNDMsIDE3MSwgMTgsIAorICAgIDI0MywgMTcwLCAxOCwgMjQzLCAxNjksIDE4LCAyNDMsIDE2OCwgMTgsIDI0MywgMTY3LCAxOCwgMjQzLCAxNjYsIDE4LCAKKyAgICAyNDMsIDE2NSwgMTgsIDI0MywgMTY0LCAxOCwgMjQzLCAxNjMsIDE4LCAyNDMsIDE2MiwgMTgsIDI0MywgMTYxLCAxOCwgCisgICAgMjQzLCAxNjAsIDE4LCAyNDMsIDE1OSwgMTgsIDI0MywgMTU4LCAxOCwgMjQzLCAxNTcsIDE4LCAyNDMsIDE1NiwgMTgsIAorICAgIDI0MywgMTU1LCAxOCwgMjQzLCAxNTQsIDE4LCAyNDMsIDE1MywgMTgsIDI0MywgMTUyLCAxOCwgMjQzLCAxNTEsIDE4LCAKKyAgICAyNDMsIDE1MCwgMTgsIDI0MywgMTQ5LCAxOCwgMjQzLCAxNDgsIDE4LCAyNDMsIDE0NywgMTgsIDI0MywgMTQ2LCAxOCwgCisgICAgMjQzLCAxNDUsIDE4LCAyNDMsIDE0NCwgMTgsIDI0MywgMTQzLCAxOCwgMjQzLCAxNDIsIDE4LCAyNDMsIDE0MSwgMTgsIAorICAgIDI0MywgMTQwLCAxOCwgMjQzLCAxMzksIDE4LCAyNDMsIDEzOCwgMTgsIDI0MywgMTM3LCAxOCwgMjQzLCAxMzYsIDE4LCAKKyAgICAyNDMsIDEzNSwgMTgsIDI0MywgMTM0LCAxOCwgMjQzLCAxMzMsIDE4LCAyNDMsIDEzMiwgMTgsIDI0MywgMTMxLCAxOCwgCisgICAgMjQzLCAxMzAsIDE4LCAyNDMsIDEyOSwgMTgsIDI0MywgMTI4LCAxOCwgMjQzLCAxMjcsIDE4LCAyNDMsIDEyNiwgMTgsIAorICAgIDI0MywgMTI1LCAxOCwgMjQzLCAxMjQsIDE4LCAyNDMsIDEyMywgMTgsIDI0MywgMTIyLCAxOCwgMjQzLCAxMjEsIDE4LCAKKyAgICAyNDMsIDEyMCwgMTgsIDI0MywgMTE5LCAxOCwgMjQzLCAxMTgsIDE4LCAyNDMsIDExNywgMTgsIDI0MywgMTE2LCAxOCwgCisgICAgMjQzLCAxMTUsIDE4LCAyNDMsIDExNCwgMTgsIDI0MywgMTEzLCAxOCwgMjQzLCAxMTIsIDE4LCAyNDMsIDExMSwgMTgsIAorICAgIDI0MywgMTEwLCAxOCwgMjQzLCAxMDksIDE4LCAyNDMsIDEwOCwgMTgsIDI0MywgMTA3LCAxOCwgMjQzLCAxMDYsIDE4LCAKKyAgICAyNDMsIDEwNSwgMTgsIDI0MywgMTA0LCAxOCwgMjQzLCAxMDMsIDE4LCAyNDMsIDEwMiwgMTgsIDI0MywgMTAxLCAxOCwgCisgICAgMjQzLCAxMDAsIDE4LCAyNDMsIDk5LCAxOCwgMjQzLCA5OCwgMTgsIDI0MywgOTcsIDE4LCAyNDMsIDk2LCAxOCwgMjQzLCAKKyAgICA5NSwgMTgsIDI0MywgOTQsIDE4LCAyNDMsIDkzLCAxOCwgMjQzLCA5MiwgMTgsIDI0MywgOTEsIDE4LCAyNDMsIDkwLCAxOCwgCisgICAgMjQzLCA4OSwgMTgsIDI0MywgODgsIDE4LCAyNDMsIDg3LCAxOCwgMjQzLCA4NiwgMTgsIDI0MywgODUsIDE4LCAyNDMsIDg0LCAKKyAgICAxOCwgMjQzLCA4MywgMTgsIDI0MywgODIsIDE4LCAyNDMsIDgxLCAxOCwgMjQzLCA4MCwgMTgsIDI0MywgNzksIDE4LCAyNDMsIAorICAgIDc4LCAxOCwgMjQzLCA3NywgMTgsIDI0MywgNzYsIDE4LCAyNDMsIDc1LCA2OSwgMSwgMjUwLCAyMzQsIDcyLCAxNzcsIDEsIAorICAgIDI1MCwgMjM0LCAyMDAsIDUxLCAxMDQsIDEsIDIzNCwgMjQ3LCAxMDQsIDEsIDIwMCwgMTk1LCAxMDQsIDEsIDIxNiwgMjI2LCAKKyAgICAxMDQsIDEsIDIwNywgODMsIDEwNCwgMSwgMjM4LCA1LCAxMDQsIDEsIDIyNywgMTE4LCAxMDQsIDEsIDE1NiwgMTA0LCAxLCAKKyAgICAyNTAsIDEwMywgMTA0LCAxLCAyNDIsIDE1MywgMTA0LCAxLCAyMDMsIDE2OCwgMTA0LCAxLCAyMzYsIDE1NiwgMTA0LCAxLCAKKyAgICAxNDYsIDEwNCwgMSwgMjE2LCAyMjcsIDIyMCwgMjE0LCAxMDQsIDEsIDI0MiwgMTU0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMzgsIAorICAgIDYsIDIyMCwgMjE0LCAxMDQsIDEsIDIyNywgMTE5LCAyMjMsIDI0MywgMTA0LCAxLCAyMTQsIDMzLCAyMTIsIDEyMiwgMTA0LCAKKyAgICAxLCAyMDYsIDEyNCwgMTA0LCAxLCAyMDksIDYyLCAyNDEsIDEwMSwgMTA0LCAxLCAyNDEsIDEwMSwgMTA0LCAxLCAyMjYsIAorICAgIDExMCwgMTA0LCAxLCAyMDksIDYyLCAyMjcsIDI1MSwgMTA0LCAxLCAyMzQsIDQwLCAxMDQsIDEsIDIyNCwgMjI0LCAxMDQsIAorICAgIDEsIDIxMywgOTQsIDEwNCwgMSwgMjIzLCAyNDMsIDEwNCwgMSwgMjIwLCAyMTQsIDEwNCwgMSwgMjI3LCAyNTEsIDEwNCwgMSwgCisgICAgMjEyLCAxMjIsIDEwNCwgMSwgMjIzLCAyNDQsIDIyMCwgMjE0LCAxMDQsIDEsIDIyMCwgMjE1LCAyMjMsIDI0MywgMTA0LCAxLCAKKyAgICAyMjcsIDI1MiwgMjIzLCAyNDMsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgMjUxLCAxMDQsIDEsIDIyMywgMjQ0LCAzLCAyNDAsIAorICAgIDE4MiwgMTA0LCAxLCAyMjAsIDIxNSwgMywgMjQwLCAxODIsIDEwNCwgMSwgMjI3LCAyNTIsIDMsIDI0MCwgMTgyLCAxMDQsIAorICAgIDEsIDIyNywgMjUyLCAzLCAxOTAsIDIyOCwgNzQsIDI2LCA1NiwgMTA0LCAxLCAyMTIsIDEyMywgMywgMjQwLCAxODIsIDEwNCwgCisgICAgMSwgMjEyLCAxMjMsIDMsIDczLCA1NywgMTA0LCAxLCAyMjMsIDI0NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjIwLCAyMTUsIAorICAgIDIxMiwgMTIyLCAxMDQsIDEsIDIyNywgMjUyLCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjEyLCAxMjIsIDEwNCwgMSwgCisgICAgMjIzLCAyNDQsIDIyMCwgMjE1LCAyMTIsIDEyMiwgMTA0LCAxLCAyMjAsIDIxNSwgMjIzLCAyNDQsIDIxMiwgMTIyLCAxMDQsIAorICAgIDEsIDIyNywgMjUyLCAyMjMsIDI0NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgMjUyLCAyMTIsIDEyMiwgCisgICAgMTA0LCAxLCAyMjcsIDI1MiwgMjEyLCAxMjMsIDMsIDI0MCwgMTgyLCAxMDQsIDEsIDIyNywgMjUyLCAyMjAsIDIxNCwgMTA0LCAKKyAgICAxLCAyMjcsIDI1MiwgMjIwLCAyMTUsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMDcsIDgzLCAxMDQsIDEsIDIxMiwgCisgICAgMTIzLCAyMDcsIDg0LCAxNDYsIDEwNCwgMSwgMjEyLCAxMjMsIDIxNiwgMjI2LCAxMDQsIDEsIDIxMiwgMTIzLCAyMTYsIAorICAgIDIyNywgMTQ2LCAxMDQsIDEsIDIwNywgODQsIDIxMiwgMTIyLCAxMDQsIDEsIDIwNywgODQsIDIxNCwgMzMsIDIxMiwgMTIyLCAKKyAgICAxMDQsIDEsIDIwMSwgMTQ3LCAxMDQsIDEsIDIwMSwgNDEsIDEwNCwgMSwgMjAxLCAxNDgsIDE0NiwgMTA0LCAxLCAyMTIsIAorICAgIDEyMywgMjIwLCAyMTQsIDEwNCwgMSwgMjEyLCAxMjMsIDIyMywgMjQzLCAxMDQsIDEsIDIyNywgMTE5LCAyMTQsIDMzLCAKKyAgICAyMTIsIDEyMiwgMTA0LCAxLCAyMzYsIDE1NywgMjE0LCAzMywgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgCisgICAgMTE4LCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIDExOSwgMTQ2LCAxMDQsIDEsIDYyLCAxMDQsIDEsIDIwOSwgNjIsIDIxNiwgCisgICAgMjM4LCAxMDQsIDEsIDIxNywgMTQ2LCAxMDQsIDEsIDc0LCAxMDQsIDEsIDI1MSwgMjksIDEwNCwgMSwgNzAsIDEwNCwgMSwgCisgICAgNzIsIDEwNCwgMSwgMjI4LCAxNzgsIDEwNCwgMSwgMjA5LCAyNTAsIDcwLCAxMDQsIDEsIDIwNCwgMjMsIDEwNCwgMSwgMjM4LCAKKyAgICAyNTUsIDEwNCwgMSwgMjA5LCA2MiwgMjM4LCAyNDEsIDEwNCwgMSwgMjEyLCAyMzksIDcwLCAxMDQsIDEsIDIwOSwgNjIsIAorICAgIDIzOCwgMjU1LCAxMDQsIDEsIDE2OCwgNzAsIDEwNCwgMSwgMjAwLCA1MSwgMTA0LCAxLCA2NiwgMTA0LCAxLCAyMzgsIDY5LCAKKyAgICAxMDQsIDEsIDIwMCwgMTQ2LCAxMDQsIDEsIDEwOCwgMjIwLCAyMTQsIDEwNCwgMSwgMTY4LCA2NiwgMTA0LCAxLCAyMTIsIAorICAgIDIzOSwgNjYsIDEwNCwgMSwgMjA0LCAyNSwgMTA0LCAxLCAyMDksIDYyLCA2NiwgMTA0LCAxLCAyMTcsIDYwLCAxMDQsIDEsIAorICAgIDIxNiwgMjM4LCAxMDQsIDEsIDIxNywgMywgMTA0LCAxLCAyMDEsIDExNCwgMTA0LCAxLCAyMDEsIDAsIDEwNCwgMSwgMjAxLCAKKyAgICAzMSwgMTA0LCAxLCAyMDEsIDU1LCAxMDQsIDEsIDIwMCwgMjMwLCAxMDQsIDEsIDIyMCwgMTIzLCA2NiwgMTA0LCAxLCAyMjAsIAorICAgIDEyMywgNzQsIDEwNCwgMSwgMjIwLCAxMjMsIDcwLCAxMDQsIDEsIDIyMCwgMTIzLCA2MiwgMTA0LCAxLCAyMTYsIDE2LCAKKyAgICAyNTEsIDg1LCAxMDQsIDEsIDIxNiwgMTYsIDI1MSwgMTAxLCAxMDQsIDEsIDIwOSwgNjIsIDIzOCwgMTc5LCAxMDQsIDEsIAorICAgIDIwOSwgNjIsIDI1MSwgODUsIDEwNCwgMSwgMjA5LCA2MiwgMjE3LCA3OCwgMTA0LCAxLCAxMDksIDIyMywgMjQzLCAxMDQsIAorICAgIDI1MSwgMjAwLCA0OSwgMjMzLCAxNzcsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAyMjEsIDIwNiwgMjMzLCAxNzcsIDIxMSwgCisgICAgMTk3LCAxMDQsIDI1MSwgMjAwLCA1MSwgMjMzLCAxNzcsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDgzLCAyMTEsIAorICAgIDE5NywgMTA0LCAyNTEsIDIwMCwgMjIxLCAyMDYsIDgzLCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMTIyLCA4MywgMjExLCAKKyAgICAxOTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIyNSwgMTksIAorICAgIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjA2LCAyNDAsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAKKyAgICAyMDcsIDYsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAxOTcsIDExNywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIzMywgCisgICAgMTksIDExNywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIwNiwgMjQxLCAxMTcsIDEwNCwgMjUxLCAyMDAsIDEyMiwgMTY5LCAKKyAgICAxMDQsIDI1MSwgMjAwLCAxMjIsIDIwNiwgMSwgMTY5LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDIzNSwgNzMsIDEwNCwgMjUxLCAKKyAgICAyMDAsIDEyMiwgMTY4LCAyMzUsIDczLCAxMDQsIDI1MSwgMjAwLCAxMjIsIDI0MCwgMTgyLCAxMDQsIDI1MSwgMjAwLCAxMjIsIAorICAgIDI0NiwgMTU1LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDIyNCwgMTc2LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDIwMSwgNzcsIDEwNCwgCisgICAgMjUxLCAyMDAsIDEyMiwgMjAzLCA0MiwgMTA0LCAyNTEsIDIwMCwgMTI4LCAxNjksIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjA2LCAKKyAgICAxLCAxNjksIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjM1LCA3MywgMTA0LCAyNTEsIDIwMCwgMTI4LCAxNjgsIDIzNSwgNzMsIAorICAgIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjQwLCAxODIsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjQ2LCAxNTUsIDEwNCwgMjUxLCAKKyAgICAyMDAsIDEyOCwgMjI0LCAxNzYsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjAxLCA3NywgMTA0LCAyNTEsIDIwMCwgMTI4LCAyMDMsIAorICAgIDQyLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDQ4LCAxMDQsIDIsIDE2MywgMywgMjQyLCAyMzQsIDEwNCwgMjA2LCA4MiwgMSwgCisgICAgMjExLCAxNzUsIDEwNCwgNTMsIDgxLCAxMDQsIDIxNCwgMjEyLCAyNDYsIDIyMCwgMjM2LCAxODMsIDIwOCwgNzYsIDIwOSwgCisgICAgMjM3LCAyMzYsIDI0MSwgMSwgMjE2LCAyNDQsIDIwOSwgMjM3LCAyMzYsIDI0MSwgMjQzLCA0MCwgMjE2LCAyNDQsIDIwOSwgCisgICAgMjM3LCAyMzYsIDI0MSwgMTI3LCAyMDgsIDkwLCAyMDksIDIzNywgMjM2LCAyNDEsIDExNSwgMjA4LCA5MCwgNjEsIDMyLCAKKyAgICAxNiwgMjE0LCAyMjgsIDYxLCAzMiwgMTYsIDI0MSwgMjQ2LCA2MSwgMzIsIDE2LCAyMTYsIDIwLCA2MSwgMzIsIDE2LCAyMTYsIAorICAgIDIzNCwgMjM4LCAyMTMsIDYxLCAzMiwgMTYsIDIxNiwgMjM0LCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMDMsIDc3LCAyMzgsIAorICAgIDIxMywgNjEsIDMyLCAxNiwgMjAzLCA3NywgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjI3LCAyOCwgNjEsIDMyLCAxNiwgMjA3LCAKKyAgICAxMDAsIDYxLCAzMiwgMTYsIDIxNiwgMTIyLCA2MSwgMzIsIDE2LCAxOTksIDIxNywgNjEsIDMyLCAxNiwgMTk5LCAyMTgsIAorICAgIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIyNiwgMzIsIDYxLCAzMiwgMTYsIDI1MSwgMjQsIDIzOCwgMjEzLCA2MSwgMzIsIDE2LCAKKyAgICAyMzgsIDM3LCAyMzgsIDIxMywgNjEsIDMyLCAxNiwgMjA2LCAxNzcsIDYxLCAzMiwgMTYsIDIyNiwgMjM5LCA2MSwgMzIsIAorICAgIDE2LCAyNTEsIDE0LCA2MSwgMzIsIDE2LCAyNTEsIDE1LCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMDcsIDEwNywgNjEsIDMyLCAKKyAgICAxNiwgMjA2LCA2NCwgNjEsIDMyLCAxNiwgMjE3LCA4OSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIzNSwgMTAwLCAyNTAsIAorICAgIDIzMiwgNjEsIDMyLCAxNiwgMjE0LCAyMjcsIDYxLCAzMiwgMTYsIDI0NywgMjgsIDYxLCAzMiwgMTYsIDIwMywgNjYsIDYxLCAKKyAgICAzMiwgMTYsIDIyOCwgMTcsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMjYsIDI0MSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIAorICAgIDIyNiwgMjQwLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjExLCAyMzYsIDYxLCAzMiwgMTYsIDIxNiwgMTEyLCA2MSwgMzIsIAorICAgIDE2LCAyMDgsIDk5LCAyNTEsIDE3LCA2MSwgMzIsIDE2LCAyMTYsIDIzMywgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIwMywgCisgICAgNzYsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyNTEsIDE4LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjUxLCAxMiwgNjEsIDMyLCAKKyAgICAxNiwgMjI2LCAxMDAsIDYxLCAzMiwgMTYsIDIxMywgMTAxLCA2MSwgMzIsIDE2LCAyMTUsIDIwMiwgMjUwLCAyMzIsIDYxLCAKKyAgICAzMiwgMTYsIDIwNSwgMjMwLCA2MSwgMzIsIDE2LCAyNTEsIDgyLCA2MSwgMzIsIDE2LCAyMTEsIDE3OCwgNjEsIDMyLCAxNiwgCisgICAgMjA3LCAxMTEsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMDcsIDExMSwgMjIyLCAyMSwgMjA4LCA5NywgNjEsIDMyLCAxNiwgCisgICAgMjE2LCAyMjgsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMDYsIDEwMCwgNjEsIDMyLCAxNiwgMjI1LCA2LCA2MSwgMzIsIDE2LCAKKyAgICAyMzksIDk2LCA2MSwgMzIsIDE2LCAyMDUsIDEwMCwgNjEsIDMyLCAxNiwgMjA2LCAxNDgsIDYxLCAzMiwgMTYsIDIyNiwgMzUsIAorICAgIDYxLCAzMiwgMTYsIDI1MSwgMjQsIDIzOCwgMzcsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNTAsIDIzMiwgCisgICAgNjEsIDMyLCAxNiwgMjI4LCAxMzAsIDYxLCAzMiwgMTYsIDIwNSwgNjksIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMjcsIDMxLCAKKyAgICAyMDUsIDY4LCA2MSwgMzIsIDE2LCAyMTYsIDQ5LCA2MSwgMzIsIDE2LCAyMTQsIDIzMiwgNjEsIDMyLCAxNiwgMjI2LCA2OSwgCisgICAgNjEsIDMyLCAxNiwgMjQ2LCAyMDQsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMTMsIDIwOSwgNjEsIDMyLCAxNiwgMjE2LCAKKyAgICAxMjUsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMTYsIDEyMywgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIzMiwgMjI5LCA2MSwgCisgICAgMzIsIDE2LCAyMjAsIDEzMywgNjEsIDMyLCAxNiwgMjE1LCAyNTQsIDYxLCAzMiwgMTYsIDIyNiwgNzAsIDI1MSwgMTE5LCAKKyAgICA2MSwgMzIsIDE2LCAyMDUsIDY5LCAyNTEsIDExOSwgNjEsIDMyLCAxNiwgMjA4LCA3MCwgNjEsIDMyLCAxNiwgMjM1LCA2MCwgCisgICAgNjEsIDMyLCAxNiwgMjI4LCAxNywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE3LCA4OSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjE2LCAyMzQsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNSwgMjUzLCA2MSwgMzIsIDE2LCAyMjYsIDU0LCA2MSwgMzIsIDE2LCAKKyAgICAyMTUsIDI1MiwgNjEsIDMyLCAxNiwgMjI2LCAzNCwgNjEsIDMyLCAxNiwgMjE2LCA1MCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjI2LCAyNDAsIDIyMCwgMjEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIyNiwgMjQxLCAyMjAsIDIxLCAyNTEsIDU1LCA2MSwgCisgICAgMzIsIDE2LCAxOTksIDIxNSwgNjEsIDMyLCAxNiwgMjUxLCAxNSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjUxLCAxNiwgMjA3LCAKKyAgICAxMDgsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDE5OSwgMjE2LCA2MSwgMzIsIDE2LCAyMjYsIDMzLCA2MSwgMzIsIDE2LCAyMzgsIAorICAgIDIwOCwgNjEsIDMyLCAxNiwgMjQ3LCAyOSwgNjEsIDMyLCAxNiwgMjIxLCAxNzcsIDIyOCwgMTYsIDYxLCAzMiwgMTYsIDIwMywgCisgICAgNzcsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNSwgMjAyLCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTQsIDIzMywgMjIwLCAKKyAgICAyMCwgNjEsIDMyLCAxNiwgMjE3LCA4NSwgNjEsIDMyLCAxNiwgMjUxLCA0MiwgNjEsIDMyLCAxNiwgMjIzLCAyNTQsIDYxLCAKKyAgICAzMiwgMTYsIDIxNiwgMTIzLCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTYsIDEyNSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjM4LCA3NSwgMjE2LCAxMjQsIDYxLCAzMiwgMTYsIDIyNSwgMTk3LCA2MSwgMzIsIDE2LCAyNTEsIDQzLCA2MSwgMzIsIDE2LCAKKyAgICAyMDUsIDY5LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMzgsIDIxMSwgNjEsIDMyLCAxNiwgMjA3LCAxMTEsIDIyMCwgMjAsIAorICAgIDYxLCAzMiwgMTYsIDIwNywgMTAxLCA2MSwgMzIsIDE2LCAyNDYsIDIwNCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjM4LCAKKyAgICAxMzAsIDYxLCAzMiwgMTYsIDIxMSwgMTc5LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMDAsIDE2MiwgMjI2LCAxMDAsIDYxLCAKKyAgICAzMiwgMTYsIDIwNSwgNjYsIDYxLCAzMiwgMTYsIDIxNCwgMjM0LCA2MSwgMzIsIDE2LCAyMDUsIDcwLCA2MSwgMzIsIDE2LCAKKyAgICAyMDUsIDY3LCA2MSwgMzIsIDE2LCAyMTQsIDIzMSwgNjEsIDMyLCAxNiwgMjA1LCA2NSwgNjEsIDMyLCAxNiwgMjE0LCAyMzAsIAorICAgIDYxLCAzMiwgMTYsIDIzNSwgOTksIDYxLCAzMiwgMTYsIDI1MCwgMjI0LCA2MSwgMzIsIDE2LCAyMzgsIDc1LCAyNTAsIDIyNCwgCisgICAgNjEsIDMyLCAxNiwgMjE2LCAyMjgsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIwNiwgOTksIDIzOCwgODgsIDYxLCAzMiwgMTYsIAorICAgIDIwNiwgOTksIDIzOCwgMzYsIDYxLCAzMiwgMTYsIDIwNiwgMTAxLCAyNTEsIDE5LCA2MSwgMzIsIDE2LCAyMDYsIDkzLCAKKyAgICAyMjcsIDgzLCAyNTEsIDExLCA2MSwgMzIsIDE2LCAyMjcsIDMwLCA2MSwgMzIsIDE2LCAyMzgsIDE2NywgNjEsIDMyLCAxNiwgCisgICAgMjAwLCAxMywgMjI3LCAyNywgNjEsIDMyLCAxNiwgMjAwLCAxMywgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjA4LCA5OCwgNjEsIAorICAgIDMyLCAxNiwgMjI2LCAxMDEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDI0MSwgMTUsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAKKyAgICAyMjYsIDM2LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjI2LCAzNiwgMjUxLCAxMTksIDYxLCAzMiwgMTYsIDIyNiwgMzYsIAorICAgIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDI1MSwgMTgsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDI1MSwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIwNSwgODEsIDYxLCAzMiwgMTYsIDIwNiwgMTM5LCA2MSwgMzIsIDE2LCAyMjYsIDU4LCAKKyAgICA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMzgsIDE2MCwgMjQ2LCAxOTQsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIDIzOSwgOTcsIAorICAgIDI0NiwgMTk1LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMDUsIDg0LCAyNDYsIDE5NSwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgCisgICAgMjA2LCAxNTAsIDI0NiwgMTk1LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMjgsIDEyNSwgMjQ2LCAxOTQsIDYxLCAzMiwgMTYsIAorICAgIDIzNSwgMTAwLCAyMjAsIDIxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMzUsIDEwMCwgMjE2LCAxMTMsIDI1MCwgMjIwLCA2MSwgCisgICAgMzIsIDE2LCAyMzUsIDEwMCwgMjE2LCAxMTMsIDI0MSwgMTA1LCA2MSwgMzIsIDE2LCAyNDEsIDM5LCA2MSwgMzIsIDE2LCAKKyAgICAyNDEsIDQwLCAyMTYsIDExMywgMjUwLCAyMjEsIDIyNywgMjcsIDYxLCAzMiwgMTYsIDI0MSwgNDAsIDIxNiwgMTEzLCAyNTAsIAorICAgIDIyMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjQxLCA0MCwgMjE2LCAxMTMsIDI0MSwgMTA1LCA2MSwgMzIsIDE2LCAyMDUsIAorICAgIDg5LCA2MSwgMzIsIDE2LCAyNTAsIDIyNSwgNjEsIDMyLCAxNiwgMjI4LCAxMzIsIDYxLCAzMiwgMTYsIDI0MSwgNjIsIDYxLCAKKyAgICAzMiwgMTYsIDI1MSwgMTg3LCAyMTUsIDg5LCAyNTAsIDIyNiwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDI1MCwgMjIzLCA2MSwgCisgICAgMzIsIDE2LCAyNTEsIDE4NywgMjUwLCAyMjYsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyMjIsIDE1LCA2MSwgMzIsIDE2LCAKKyAgICAyNTEsIDE4NywgMjIyLCAyNiwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDIzNSwgMTAxLCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgCisgICAgMjM1LCA5OCwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDIxNSwgODksIDIzNSwgMTAxLCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgCisgICAgMjE0LCAyNDAsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjUxLCAxMjEsIDIxNCwgMjQwLCAyMzIsIDIyNywgCisgICAgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDI0MSwgMTA0LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDI1MSwgMTIxLCAKKyAgICAyNDEsIDEwNCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMDUsIDc2LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgCisgICAgMjIyLCAxNDAsIDIwNSwgOTAsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMDYsIDE0NCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIAorICAgIDIyMiwgMTQwLCAyMDYsIDE0NCwgMjI1LCAxNSwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMjUsIDE1LCAKKyAgICAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIxNSwgMTMyLCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjI4LCAyNCwgCisgICAgMjA2LCAxNzAsIDIzMiwgMjI4LCA2MSwgMzIsIDE2LCAyNTEsIDE2LCAyMDYsIDE3MCwgMjMyLCAyMjgsIDYxLCAzMiwgMTYsIAorICAgIDIzNywgMTY3LCAyMDYsIDE0MSwgNjEsIDMyLCAxNiwgMjM3LCAxNjcsIDIyMSwgOTgsIDYxLCAzMiwgMTYsIDIzNywgMTY3LCAKKyAgICAyNDEsIDQ1LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjAzLCA3MCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAKKyAgICAyMTQsIDIzOSwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMTUsIDEzMiwgMjA2LCAxNDQsIDIzMiwgMjI3LCAKKyAgICA2MSwgMzIsIDE2LCAyMzUsIDk1LCAyMjAsIDIxNSwgMjUxLCAxOSwgNjEsIDMyLCAxNiwgMjM1LCA5NSwgMjIwLCAyMTUsIAorICAgIDI0MSwgMTMsIDYxLCAzMiwgMTYsIDIzOCwgMTc3LCAyMjcsIDgzLCAyMzYsIDE5MSwgMjAyLCAxNzQsIDYxLCAzMiwgMTYsIAorICAgIDIyOCwgMTMxLCA2MSwgMzIsIDE2LCAyMjgsIDEyOSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI1MCwgMjMzLCAyNDEsIDEwMywgCisgICAgMjMyLCAyMjYsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAxNzIsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIAorICAgIDYwLCAyMjAsIDEzMywgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMCwgMTI4LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjM2LCAKKyAgICAxOTEsIDI0MSwgNjAsIDI0MSwgNzYsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMDksIDgyLCAyNDEsIDU5LCAyNDEsIDc2LCAKKyAgICA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgMjI3LCA4LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgCisgICAgMTk5LCAxNCwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIDIxOSwgMTUxLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAKKyAgICAyMzYsIDE5MSwgMjQxLCA2MCwgMjE5LCAxNTEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjIsIDE4NiwgCisgICAgMjQ2LCAxOTYsIDI0MSwgNDUsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjIsIDE4NiwgMjQ2LCAxOTYsIDIyMSwgOTgsIDYxLCAKKyAgICAzMiwgMTYsIDIzNywgMTEzLCAyMDksIDgyLCAyNDYsIDE5NiwgMjAzLCA2OSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIwOSwgCisgICAgODIsIDI0NiwgMTk2LCAyMDcsIDExMiwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMCwgMjMsIDYxLCAzMiwgMTYsIDI0NiwgCisgICAgMTk3LCAxOTgsIDIzOCwgNjEsIDMyLCAxNiwgMjQ2LCAxOTcsIDIyNiwgOTksIDYxLCAzMiwgMTYsIDI0NiwgMTk3LCAyMDgsIAorICAgIDIzNSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIzMywgMTksIDIwMCwgMTIsIDIwNiwgMTQ1LCA2MSwgMzIsIDE2LCAyMzYsIAorICAgIDE5MSwgMjM4LCAxNzgsIDI1MSwgNDQsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDIwNSwgNzcsIDYxLCAzMiwgMTYsIDI0MSwgCisgICAgNTMsIDIwNSwgNzcsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDIwNiwgMTQ1LCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyNTEsIDIxLCAKKyAgICAyMzksIDk3LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjIxLCA5NiwgMjA2LCAxNDksIDI0MCwgMjAzLCA2MSwgCisgICAgMzIsIDE2LCAyNDEsIDUzLCAyNDEsIDM2LCAyMzgsIDQ5LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjA1LCAKKyAgICA4NywgMjE3LCA5NSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDI1MSwgMjEsIDIzOSwgOTcsIDI0MCwgMjAzLCAKKyAgICA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyMjEsIDk2LCAyMDYsIDE0OSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIAorICAgIDI0MSwgMzYsIDIzOCwgNDksIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyMDUsIDg3LCAyMTcsIDk1LCAyNDAsIAorICAgIDIwMywgNjEsIDMyLCAxNiwgMjM1LCAyNTUsIDI0MSwgNTIsIDYxLCAzMiwgMTYsIDIzNSwgMjU1LCAyMDAsIDExLCA2MSwgCisgICAgMzIsIDE2LCAyNDEsIDYxLCAyNTEsIDIxLCAyMjEsIDE3OCwgNjEsIDMyLCAxNiwgMjQxLCA2MSwgMjUxLCAyMSwgMjIyLCAKKyAgICA1NSwgNjEsIDMyLCAxNiwgMjQxLCA2MSwgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjQxLCA2MSwgMjA2LCA5MSwgNjEsIDMyLCAKKyAgICAxNiwgMjA5LCAxNDksIDIwNiwgOTEsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyMDYsIDkyLCAyNDAsIDI1NCwgNjEsIDMyLCAKKyAgICAxNiwgMjA5LCAxNDksIDIwNiwgOTIsIDIwNSwgNzgsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyMDYsIDkyLCAyMDYsIDEzNywgCisgICAgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk2LCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTcsIDI0MCwgMjU0LCAKKyAgICA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTcsIDIwNSwgNzgsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NywgCisgICAgMjA2LCAxMzcsIDYxLCAzMiwgMTYsIDI0MSwgMzcsIDIzNSwgMjM2LCA2MSwgMzIsIDE2LCAyNDEsIDQ0LCAyMTcsIDMsIDYxLCAKKyAgICAzMiwgMTYsIDIwOCwgODYsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAxNzIsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAyMDIsIAorICAgIDE3NCwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDIzNiwgODksIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAyNDEsIDc2LCA2MSwgCisgICAgMzIsIDE2LCAyNTAsIDIxNywgMjI3LCA4LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMTk5LCAxNCwgNjEsIDMyLCAxNiwgMjUwLCAKKyAgICAyMTcsIDIxOSwgMTUwLCA2MSwgMzIsIDE2LCAyMjYsIDI0MCwgMjIwLCAyMSwgMjIyLCAyNSwgNjEsIDMyLCAxNiwgMjI2LCAKKyAgICAyNDEsIDIyMCwgMjEsIDIyMiwgMjUsIDYxLCAzMiwgMTYsIDIyNiwgMjQwLCAyMjAsIDIxLCAyMjcsIDI3LCA2MSwgMzIsIAorICAgIDE2LCAyMjYsIDI0MSwgMjIwLCAyMSwgMjI3LCAyNywgNjEsIDMyLCAxNiwgMjI2LCAxMDEsIDIyNywgMjcsIDYxLCAzMiwgCisgICAgMTYsIDIzNSwgMTAwLCAyMjAsIDIxLCAyMjcsIDI3LCAzMiwgMTYsIDIwOSwgMTM5LCAyNDksIDcyLCAzMiwgMTYsIDUzLCAKKyAgICAyNDksIDcyLCAzMiwgMTYsIDQ3LCAyNDksIDcyLCAzMiwgMTYsIDIxMywgMTA2LCA0NywgMjQ5LCA3MiwgMzIsIDE2LCAyNDEsIAorICAgIDI0MywgMjQ5LCA3MiwgMzIsIDE2LCAyMDksIDI1MCwgMjQ5LCA3MiwgMzIsIDE2LCA0OSwgMjEzLCAxMzMsIDU0LCAzMiwgCisgICAgMTYsIDUxLCAyMTMsIDEzMywgNTQsIDMyLCAxNiwgMjEzLCAxMzMsIDI0MCwgMTgwLCAzMiwgMTYsIDI0MiwgMzAsIDIxMSwgCisgICAgMTgyLCAzMiwgMTYsIDI0MiwgNTksIDI0NywgMTQxLCAzMiwgMTYsIDIxMSwgMTgyLCAzMiwgMTYsIDI0NiwgODcsIDMyLCAKKyAgICAxNiwgMjEzLCAxMzEsIDIzNywgMTAxLCAzMiwgMTYsIDIxMywgMTMxLCAyMzcsIDEwMCwgMzIsIDE2LCAyMTMsIDEzMSwgCisgICAgMjM3LCA5OSwgMzIsIDE2LCAyMzcsIDEyMiwgMzIsIDE2LCAyMzcsIDEyMywgNTcsIDMyLCAxNiwgMjQ4LCA1OSwgODEsIDMyLCAKKyAgICAxNiwgMjQ3LCAxODAsIDMyLCAxNiwgMjQ4LCA3MSwgMzIsIDE2LCAxNTksIDMyLCAxNiwgMjE3LCA3MywgMjA4LCAxMTcsIAorICAgIDMyLCAxNiwgMjA0LCAxNDAsIDIwOCwgMTE3LCAzMiwgMTYsIDIwNiwgNDIsIDIwOCwgMTE3LCAzMiwgMTYsIDIzNiwgMjI4LCAKKyAgICAyMDgsIDExNywgMzIsIDE2LCAyMzcsIDYwLCAyMDgsIDExNywgMzIsIDE2LCAyMDksIDEwNSwgMjA4LCAxMTcsIDMyLCAxNiwgCisgICAgMjA5LCAxMDMsIDIzNiwgMjA4LCAzMiwgMTYsIDIzNiwgMjI2LCAyMzYsIDIwOCwgMzIsIDE2LCAyMzYsIDE1NywgMjQ2LCAKKyAgICAxMjQsIDMyLCAxNiwgMjM2LCAxNTcsIDI0NiwgMTI1LCAyMTcsIDUsIDI1MSwgMTEwLCAzMiwgMTYsIDIzNiwgMTU3LCAyNDYsIAorICAgIDEyNSwgMjE3LCA1LCAyNDksIDU3LCAzMiwgMTYsIDI0NywgMjI0LCAyNDYsIDEyNCwgMzIsIDE2LCAyMzgsIDYsIDI0NiwgCisgICAgMTI0LCAzMiwgMTYsIDIzOCwgNiwgMjQ2LCAxMjUsIDIxNywgNSwgMjUxLCAxMTAsIDMyLCAxNiwgMjM4LCA2LCAyNDYsIAorICAgIDEyNSwgMjE3LCA1LCAyNDksIDU3LCAzMiwgMTYsIDIzOSwgMTQzLCAyNDYsIDEyMywgMzIsIDE2LCAyMzksIDE0MywgMjQ2LCAKKyAgICAxMjIsIDMyLCAxNiwgMjIxLCAyMSwgMjIyLCA3NSwgMjEzLCAxMTcsIDMyLCAxNiwgNTMsIDIxMCwgNzgsIDMyLCAxNiwgNTMsIAorICAgIDIzNywgNDQsIDMyLCAxNiwgMjM3LCA0NSwgMjAzLCAyMjgsIDMyLCAxNiwgMjM3LCA0NSwgMjM5LCAxNjcsIDMyLCAxNiwgCisgICAgMjIwLCAxMTcsIDIwMywgMjI4LCAzMiwgMTYsIDIyMCwgMTE3LCAyMzksIDE2NywgMzIsIDE2LCAyMTAsIDc5LCAyMDMsIAorICAgIDIyOCwgMzIsIDE2LCAyMTAsIDc5LCAyMzksIDE2NywgMzIsIDE2LCAyMTQsIDg4LCAxNTAsIDIxMCwgNzgsIDMyLCAxNiwgCisgICAgMjE0LCA4OCwgMTUwLCAyMzcsIDQ0LCAzMiwgMTYsIDI0NiwgNjcsIDIwNSwgMjM0LCAzMiwgMTYsIDI0MiwgMTgwLCAyMDUsIAorICAgIDIzNCwgMzIsIDE2LCAyMTcsIDUsIDI1MSwgMTEwLCAzMiwgMTYsIDIxNywgNSwgMjQ5LCA1NywgMzIsIDE2LCAyMTQsIDY5LCAKKyAgICAyNTEsIDExMCwgMzIsIDE2LCAyMTQsIDY5LCAyNDksIDU3LCAzMiwgMTYsIDIyMSwgMjQsIDIxMywgMTE3LCAzMiwgMTYsIAorICAgIDIwMSwgMzIsIDIxMywgMTE3LCAzMiwgMTYsIDE2NywgMjEzLCAxMTcsIDMyLCAxNiwgMjE0LCA4OCwgMjEzLCAxMTcsIDMyLCAKKyAgICAxNiwgMjM4LCAyMjgsIDIxMywgMTE3LCAzMiwgMTYsIDIwOSwgOTksIDIxMywgMTE3LCAzMiwgMTYsIDIwNiwgNjUsIDIxMywgCisgICAgMTE3LCAzMiwgMTYsIDIwOSwgOTEsIDIxMywgMTE3LCAzMiwgMTYsIDExMiwgMjMzLCA4MywgMjA0LCAxNTcsIDIxMywgMTE3LCAKKyAgICAzMiwgMTYsIDIwMCwgMTk2LCAyMTgsIDIwNSwgMzIsIDE2LCA5MywgMjE4LCAyMDUsIDMyLCAxNiwgMjQ2LCAxNTYsIDIwMCwgCisgICAgMTk2LCAyMTgsIDIwNSwgMzIsIDE2LCA1MiwgMjE4LCAyMDYsIDIwMSwgMzQsIDMyLCAxNiwgNTIsIDIxOCwgMjA2LCAyNDgsIAorICAgIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTE1LCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAKKyAgICAxMTUsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCA0OSwgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk5LCAKKyAgICAyMTgsIDIwNiwgNDksIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCA1MSwgMjAxLCAzNCwgMzIsIDE2LCAKKyAgICAyMDUsIDk5LCAyMTgsIDIwNiwgNTEsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMjcsIDIwMSwgMzQsIAorICAgIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDEyNywgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDExNSwgCisgICAgNTEsIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDExNSwgNTEsIDI0OCwgMTQ0LCAzMiwgMTYsIDIyMSwgCisgICAgODIsIDIxOCwgMjA2LCAyMDEsIDM0LCAzMiwgMTYsIDIyMSwgODIsIDIxOCwgMjA2LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIAorICAgIDk2LCAyMTgsIDIwNiwgMTI3LCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTYsIDIxOCwgMjA2LCAxMjcsIDI0OCwgMTQ0LCAzMiwgCisgICAgMTYsIDIxNiwgMTE2LCAyMTgsIDIwNSwgMzIsIDE2LCAyMDIsIDE4NiwgMjE4LCAyMDUsIDMyLCAxNiwgMjE4LCAyMDYsIAorICAgIDI0OCwgMTQ0LCAzMiwgMTYsIDIxOCwgOTgsIDIxOCwgMjA1LCAzMiwgMTYsIDI0NiwgOTQsIDIxOCwgMjA2LCAyMDEsIDM0LCAKKyAgICAzMiwgMTYsIDI0NiwgOTQsIDIxOCwgMjA2LCAyNDgsIDE0NCwgMzIsIDE2LCAyNDgsIDU3LCAzMiwgMTYsIDIwMSwgMzIsIAorICAgIDIxOCwgMjA5LCAzMiwgMTYsIDE2NywgMjE4LCAyMDksIDMyLCAxNiwgMjE0LCA4OCwgMjE4LCAyMDksIDMyLCAxNiwgMjM4LCAKKyAgICAyMjgsIDIxOCwgMjA5LCAzMiwgMTYsIDIwOSwgOTksIDIxOCwgMjA5LCAzMiwgMTYsIDIwNiwgNjUsIDIxOCwgMjA5LCAzMiwgCisgICAgMTYsIDIwOSwgOTEsIDIxOCwgMjA5LCAzMiwgMTYsIDExMiwgMjMzLCA4MywgMjA0LCAxNTcsIDIxOCwgMjA5LCAzMiwgMTYsIAorICAgIDM4LCAyMDgsIDkyLCAzMiwgMTYsIDM4LCAyMDgsIDIwMCwgMjA4LCA5MiwgMzIsIDE2LCAzOCwgMjA1LCAxMDcsIDMyLCAxNiwgCisgICAgMzgsIDIwNSwgMTA2LCAzMiwgMTYsIDM4LCAyMDUsIDEwNSwgMzIsIDE2LCAyMzcsIDg0LCAyMDUsIDEwNywgMzIsIDE2LCAKKyAgICAyMzcsIDg0LCAyMDUsIDEwNiwgMzIsIDE2LCAyMzcsIDg0LCAyMDUsIDEwNSwgMzIsIDE2LCAzOCwgMjUwLCAxMzYsIDI0MCwgCisgICAgMTgyLCAzMiwgMTYsIDM4LCAyMzcsIDUyLCAzMiwgMTYsIDM4LCAyMzcsIDUxLCAzMiwgMTYsIDM4LCAyMzcsIDUwLCAzMiwgCisgICAgMTYsIDM4LCAyMzcsIDQ5LCAzMiwgMTYsIDM4LCAyMzcsIDQ4LCAzMiwgMTYsIDI0OCwgMjQ0LCAyNDksIDUsIDMyLCAxNiwgCisgICAgMjM4LCAxNzEsIDI0OSwgNSwgMzIsIDE2LCAyNDgsIDI0NCwgMjA2LCA3LCAzMiwgMTYsIDIzOCwgMTcxLCAyMDYsIDcsIDMyLCAKKyAgICAxNiwgMjQ4LCAyNDQsIDIwOSwgNTQsIDMyLCAxNiwgMjM4LCAxNzEsIDIwOSwgNTQsIDMyLCAxNiwgMjQ4LCAyNDQsIDIxNSwgCisgICAgMjExLCAzMiwgMTYsIDIzOCwgMTcxLCAyMTUsIDIxMSwgMzIsIDE2LCAzOCwgMjUxLCAyNTEsIDMyLCAxNiwgMzgsIDIwOCwgCisgICAgMTIwLCAzMiwgMTYsIDM4LCAyMDYsIDE1NCwgMzIsIDE2LCAzOCwgMjA4LCAxMjEsIDMyLCAxNiwgMzgsIDIyMiwgMTU0LCAKKyAgICAzMiwgMTYsIDM4LCAyMjIsIDE1MywgMzIsIDE2LCAzOCwgMjUxLCAyNTAsIDMyLCAxNiwgMzgsIDIyNCwgNjEsIDMyLCAxNiwgCisgICAgMjUwLCAyMDgsIDIwMywgMjI4LCAzMiwgMTYsIDI1MCwgMjA4LCAyMzksIDE2NywgMzIsIDE2LCAzOCwgMjQwLCAxOTcsIDMyLCAKKyAgICAxNiwgMzgsIDIxMywgMjMsIDMyLCAxNiwgMzgsIDIzNywgMzMsIDMyLCAxNiwgMzgsIDIwOSwgNTAsIDMyLCAxNiwgMzgsIAorICAgIDI0OCwgMjIyLCAzMiwgMTYsIDM4LCA1MywgMjA1LCAxNjMsIDMyLCAxNiwgMzgsIDIwNSwgODMsIDIwNSwgMTYzLCAzMiwgCisgICAgMTYsIDIxMywgMjgsIDMyLCAxNiwgMjA4LCAxNCwgMzIsIDE2LCAxOTksIDE1NywgMzIsIDE2LCAyMTUsIDIwMywgMzIsIDE2LCAKKyAgICAyMjIsIDYsIDMyLCAxNiwgMjM2LCAyMzgsIDMyLCAxNiwgMjQyLCAyNDUsIDMyLCAxNiwgMjQxLCAxNjIsIDMyLCAxNiwgCisgICAgMjM1LCA5MCwgMjE4LCAyMTAsIDIwOSwgNzUsIDMyLCAxNiwgMjM1LCA5MCwgMjE4LCAyMTAsIDIxOCwgMjQyLCAyMDksIDc1LCAKKyAgICAzMiwgMTYsIDIwNSwgMTMzLCAzMiwgMTYsIDIwNCwgMTg2LCAzMiwgMTYsIDIyOCwgNTAsIDIwNCwgMTg2LCAzMiwgMTYsIAorICAgIDIwNCwgMTg3LCAyMDksIDc1LCAzMiwgMTYsIDIwNCwgMTg3LCAyMDMsIDIyOCwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQ2LCAKKyAgICAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDMsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0MiwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIAorICAgIDQxLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDAsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAzOSwgMzIsIDE2LCAyMTcsIDIyLCAKKyAgICAyMDgsIDM4LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgMzcsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAzNiwgMzIsIDE2LCAyMTcsIAorICAgIDIyLCAyMDgsIDQ1LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDQsIDMyLCAxNiwgMjM0LCAxNDksIDMyLCAxNiwgMjIwLCAzMiwgCisgICAgMzIsIDE2LCAyMzgsIDE3MSwgNzYsIDIwOCwgODIsIDMyLCAxNiwgMjQxLCAxNTUsIDIwOSwgNzUsIDMyLCAxNiwgMzgsIAorICAgIDEyNywgMjQ4LCA4NSwgMzIsIDE2LCAzOCwgMTE1LCAyNDgsIDg1LCAzMiwgMTYsIDM4LCAyMzQsIDE2MiwgMzIsIDE2LCAzOCwgCisgICAgMjA5LCA0MCwgMjE1LCAxMzYsIDMyLCAxNiwgMjE2LCA2NiwgODEsIDMyLCAxNiwgMjE2LCA2NiwgMTE1LCA4MSwgMzIsIDE2LCAKKyAgICAxNjcsIDIxNiwgNjYsIDgxLCAzMiwgMTYsIDIzNSwgMTI1LCAyMDMsIDIyOCwgMzIsIDE2LCAyMzUsIDEyNSwgMjM5LCAxNjcsIAorICAgIDMyLCAxNiwgMywgMjM3LCA4MywgMzIsIDE2LCAyNDIsIDEzLCAzMiwgMTYsIDI0MiwgMTQsIDI1MSwgMTI0LCAzMiwgMTYsIAorICAgIDIyMiwgMTIxLCAzMiwgMTYsIDIyNCwgODAsIDMyLCAxNiwgMjQ4LCA1NCwgMzIsIDE2LCAyMTAsIDE3MSwgMjAxLCAzNCwgCisgICAgMzIsIDE2LCAyMTAsIDE3MSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjIxLCAxNjAsIDMyLCAxNiwgMjIxLCAxNjEsIDI0OCwgMTQ0LCAKKyAgICAzMiwgMTYsIDIxMCwgMTY1LCAyMDEsIDM0LCAzMiwgMTYsIDIxMCwgMTY1LCAyNDgsIDE0NCwgMzIsIDE2LCAyMzYsIDE3NCwgCisgICAgMjAxLCAzNCwgMzIsIDE2LCAyMzYsIDE3NCwgMjQ4LCAxNDQsIDMyLCAxNiwgMjI0LCA4MSwgMjE2LCAyNSwgMjEzLCAxMTcsIAorICAgIDMyLCAxNiwgMjI0LCA4MSwgMjI4LCAxMjIsIDIxMywgMTE3LCAzMiwgMTYsIDI0OCwgNTUsIDIxMywgMTE3LCAzMiwgMTYsIAorICAgIDIxMCwgMTcxLCAyMTMsIDExNywgMzIsIDE2LCAyMjEsIDE2MSwgMjEzLCAxMTcsIDMyLCAxNiwgMjEwLCAxNjUsIDIxMywgCisgICAgMTE3LCAzMiwgMTYsIDIwNiwgMTY4LCAyMTYsIDIzLCAyNDIsIDIwNywgMjE0LCAyNDksIDIxNiwgMjQsIDMyLCAxNiwgMjA2LCAKKyAgICAxNjgsIDIxNiwgMjMsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjEsIDMyLCAxNiwgMjA2LCAxNjgsIDIxNiwgMjMsIAorICAgIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjE2LCAyNSwgMjQxLCAyNCwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgCisgICAgMjA3LCAyMTQsIDI0OSwgMjE2LCAyNCwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgCisgICAgMjI4LCAxMjEsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIyLCAyNDEsIAorICAgIDI0LCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMiwgMjQxLCAyMywgCisgICAgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjIsIDI0MSwgMjIsIDMyLCAKKyAgICAxNiwgMjQyLCAyMzcsIDMyLCAxNiwgMjM1LCA2MywgMjQ3LCAyMjQsIDI0NiwgMTI0LCAzMiwgMTYsIDIzNSwgNjMsIDIzOCwgCisgICAgNiwgMjQ2LCAxMjQsIDMyLCAxNiwgNTIsIDI1MCwgMTAzLCAzMiwgMTYsIDIwMiwgMjA3LCAzMiwgMTYsIDIxNSwgMTAzLCAKKyAgICAzMiwgMTYsIDI0NiwgMTE1LCAzMiwgMTYsIDIxMSwgMjI2LCAzMiwgMTYsIDI0NiwgMTE5LCAzMiwgMTYsIDIwNSwgMTUxLCAKKyAgICAzMiwgMTYsIDIxNSwgNzIsIDMyLCAxNiwgMjE1LCA3MywgMjM3LCAzNiwgMzIsIDE2LCAyMTEsIDIyNywgMjM3LCAzNiwgMzIsIAorICAgIDE2LCAyMDUsIDE1MiwgMjEzLCAxMTQsIDMyLCAxNiwgMjE2LCA2LCAyMDgsIDUsIDMyLCAxNiwgMjI2LCAxNTMsIDI0NywgCisgICAgMjI0LCAyNDYsIDEyNCwgMzIsIDE2LCAyMjYsIDE1MywgMjM4LCAxNzEsIDc2LCAyMTUsIDE5NiwgMzIsIDE2LCAyMjYsIAorICAgIDE1MywgNDcsIDIxOCwgMjA5LCAzMiwgMTYsIDIyNiwgMTUzLCAyMTMsIDE4MiwgODEsIDMyLCAxNiwgMjI2LCAxNTMsIDIwMSwgCisgICAgMzIsIDIxOCwgMjA5LCAzMiwgMTYsIDIyNiwgMTUzLCAxNjcsIDIxOCwgMjA5LCAzMiwgMTYsIDIyNiwgMTUzLCAyMTQsIDg4LCAKKyAgICAyMTgsIDIxMCwgMjA4LCA5MywgMjM5LCAxNjcsIDMyLCAxNiwgMjI2LCAxNTMsIDIxNCwgODgsIDIxOCwgMjEwLCAyMDgsIAorICAgIDkzLCAyMDMsIDIyOCwgMzIsIDE2LCAyMjYsIDE1MywgMjM4LCAyMjgsIDIxOCwgMjEwLCAyMDgsIDkzLCAyMzksIDE2NywgCisgICAgMzIsIDE2LCAyMjYsIDE1MywgMjM4LCAyMjgsIDIxOCwgMjEwLCAyMDgsIDkzLCAyMDMsIDIyOCwgMzIsIDE2LCAyMjYsIAorICAgIDE1MywgMjM3LCA0NSwgNTQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTYyLCAzMSwgMjAyLCAxOTIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDE1MSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDEsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTM0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyNiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxMjAsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTE5LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDExOCwgCisgICAgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMTcsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTYxLCAzMSwgCisgICAgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE2MCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTksIDMxLCAyMDIsIAorICAgIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU4LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1NywgMzEsIDIwMiwgMTkyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxNTYsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU1LCAzMSwgMjAyLCAxOTIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDE1NCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTMsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTUyLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1MCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxNDksIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQ4LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0NywgCisgICAgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDYsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTI1LCAzMSwgCisgICAgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyNCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjMsIDMxLCAyMDIsIAorICAgIDE5MiwgMjE4LCAyMTMsIDIwNywgMTIyLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyMSwgMzEsIDIyOCwgNzIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDE2MiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1MSwgMzEsIDIyOCwgNzIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDEzNCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyNiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDExOSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDExOCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDE2MCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1OSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1OCwgCisgICAgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1NywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1NCwgMzEsIAorICAgIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1MywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1MiwgMzEsIDIyOCwgCisgICAgNzIsIDIxOCwgMjEzLCAyMDcsIDE0NywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE0NiwgMzEsIDIyOCwgNzIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDE0NSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE0NCwgMzEsIDIyOCwgNzIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDE0MywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE0MiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDE0MCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzOSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDEzOCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzNywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzNiwgCisgICAgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzNSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMywgMzEsIAorICAgIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMSwgMzEsIDIyOCwgCisgICAgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyOSwgMzEsIDIyOCwgNzIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDEyOCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyNywgMzEsIDIyOCwgNzIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDEyNSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyNCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDEyMywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyMiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDEyMSwgMzgsIDMxLCAzMiwgMjA1LCA3OSwgMzgsIDMxLCAzMiwgMjA2LCAxMzgsIDM4LCAzMSwgMzIsIDIxNiwgMzUsIDMxLCAKKyAgICAzMiwgMjI1LCAxMCwgMjIxLCA5NywgMzYsIDIzOSwgMTcsIDI0MSwgMzgsIDM2LCAyMzQsIDEyMiwgMjM5LCAxNywgMjQxLCAKKyAgICAzOCwgMzYsIDIzMywgODcsIDIzOSwgMTcsIDI0MSwgMzgsIDM2LCAyMzksIDE2LCAyMzQsIDEyMywgMjQxLCAzOCwgMzYsIAorICAgIDIzOSwgMTYsIDIzMywgODYsIDI0MSwgMzgsIDM2LCAyMzksIDE3LCAyMDYsIDE0MCwgMzYsIDI0NywgNTUsIDIwNiwgMTQwLCAKKyAgICAzNiwgMjM2LCAxODMsIDI0NiwgMTU1LCAyMDYsIDE0MCwgMzYsIDIyMSwgMTUyLCAyMDYsIDE0MCwgMzYsIDI0OSwgNjcsIAorICAgIDIwNiwgMTQwLCAzNiwgMjI3LCAyLCAyMDksIDUzLCAyMDYsIDE0MCwgMzYsIDI0MywgMzUsIDIwNiwgMTQwLCAzNiwgMjUwLCAKKyAgICAxODMsIDIwNiwgMTQwLCAzNiwgMjE3LCAzOSwgMjA2LCAxNDAsIDM2LCAyNDgsIDY0LCAyMTYsIDI1NCwgMjA2LCAxNDAsIAorICAgIDM2LCAyNDEsIDE1NywgMjE3LCAzNCwgMjQwLCAyNDYsIDIwNiwgMTQwLCAzNiwgMjQwLCAyNDMsIDIwNiwgMTQwLCAzNiwgCisgICAgMTk5LCAyMjMsIDIwNiwgMTQwLCAzNiwgMjI4LCAxMDgsIDIwNiwgMTQwLCAzNiwgMjE2LCA0NSwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMTMsIDE4OSwgMjA2LCAxNDAsIDM2LCAyNDMsIDQ3LCAyMDYsIDE0MCwgMzYsIDIzMywgMTk4LCAyNDksIDEyOSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMDEsIDEwNiwgMjA2LCAxNDAsIDM2LCAyMzcsIDgsIDIwNiwgMTQwLCAzNiwgMjUxLCAyMjQsIDIwNiwgCisgICAgMTQwLCAzNiwgMjEzLCAxNDYsIDIwNiwgMTQwLCAzNiwgMjEzLCAxMjEsIDIwNiwgMTQwLCAzNiwgMjM5LCAxNSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMjcsIDE1MCwgMjA2LCAxNDAsIDM2LCAyNDMsIDQyLCAyMDYsIDE0MCwgMzYsIDIzOCwgMTcwLCAyMDYsIAorICAgIDE0MCwgMzYsIDIzOSwgMTA5LCAyMDYsIDE0MCwgMzYsIDI0NywgMjQsIDIwNiwgMTQwLCAzNiwgMjQxLCAxNjcsIDIwNiwgCisgICAgMTQwLCAzNiwgMjcsIDIxMywgMTIwLCAyMDYsIDE0MCwgMzYsIDIxNiwgMjAyLCAyMDYsIDE0MCwgMzYsIDIyNSwgMTQsIAorICAgIDIwNiwgMTQwLCAzNiwgMjQ2LCAxMDgsIDIwNiwgMTQwLCAzNiwgMjI2LCAxNDMsIDIwNiwgMTQwLCAzNiwgMjM2LCAzOSwgCisgICAgMjA2LCAxNDAsIDM2LCAyMDgsIDU4LCAyMDYsIDE0MCwgMzYsIDIxNCwgMjAxLCAyMDYsIDE0MCwgMzYsIDIzNiwgMTgyLCAKKyAgICAyMDYsIDE0MCwgMzYsIDIxMywgMTIyLCAyMDYsIDE0MCwgMzYsIDIyNSwgNTMsIDIxNywgMzQsIDIyMSwgMTMyLCAyMDYsIAorICAgIDE0MCwgMzYsIDIxMywgMTE4LCAyMDYsIDE0MCwgMzYsIDIzNSwgMTEwLCAyMDUsIDE4NiwgMjIyLCA1OSwgMjA2LCAxNDAsIAorICAgIDM2LCAyMzgsIDE3MiwgMjA2LCAxNDAsIDM2LCAyMDgsIDcxLCAyMDYsIDE0MCwgMzYsIDIzNSwgNjUsIDIwNiwgMTQwLCAzNiwgCisgICAgMjM4LCAxNjMsIDIwNiwgMTQwLCAzNiwgMjE2LCA4OSwgMjA2LCAxNDAsIDM2LCAyMTMsIDE2LCAyMDYsIDE0MCwgMzYsIAorICAgIDIzNywgMzQsIDIwNiwgMTQwLCAzNiwgMjAzLCA2OCwgMjE3LCAzNCwgMjAxLCA4NiwgMjA2LCAxNDAsIDM2LCAyNDMsIDUyLCAKKyAgICAyMDYsIDE0MCwgMzYsIDIyMiwgNzQsIDIwNiwgMTQwLCAzNiwgMjM4LCA3NiwgMjA2LCAxNDAsIDM2LCAyMDMsIDIzOCwgCisgICAgMjA2LCAxNDAsIDM2LCAyNDEsIDI1LCAyMDYsIDE0MCwgMzYsIDI0NiwgMTEwLCAyMjEsIDU4LCAyMDYsIDE0MCwgMzYsIAorICAgIDIzNSwgNDIsIDIwNiwgMTQwLCAzNiwgMjM2LCA0MCwgMjI4LCAxMTcsIDIwNiwgMTQwLCAzNiwgMjIyLCAxMjksIDIwNiwgCisgICAgMTQwLCAzNiwgMjUxLCAyNDYsIDIwNiwgMTQwLCAzNiwgMjM4LCAxODgsIDIwNiwgMTQwLCAzNiwgMjM5LCAxNzEsIDIwNiwgCisgICAgMTQwLCAzNiwgMjAxLCA4NCwgMjA2LCAxNDAsIDM2LCAyMDksIDEzNCwgMjA2LCAxNDAsIDM2LCAyMjgsIDgxLCAyMDYsIAorICAgIDE0MCwgMzYsIDI0MSwgMTI0LCAyMDYsIDE0MCwgMzYsIDI0MSwgMjQ4LCAyMDYsIDE0MCwgMzYsIDI0MSwgMjEsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM4LCA0MCwgMjA2LCAxNDAsIDM2LCAyMTAsIDEyOCwgMjA2LCAxNDAsIDM2LCAyMDgsIDc1LCAyMDYsIAorICAgIDE0MCwgMzYsIDIzNCwgMTY0LCAyMDYsIDE0MCwgMzYsIDI0NiwgNjMsIDIwNiwgMTQwLCAzNiwgMjQ2LCAxMDUsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM3LCAxNzQsIDIwNiwgMTQwLCAzNiwgMjUxLCAxODgsIDIwNiwgMTQwLCAzNiwgMjQ2LCA2MiwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMTcsIDc5LCAyMDYsIDEwNywgMjAzLCA0NSwgMjA2LCAxNDAsIDM2LCAyNDEsIDQ3LCAyMDYsIDE0MCwgMzYsIAorICAgIDIyNSwgMTY0LCAyMDYsIDE0MCwgMzYsIDIzNiwgMjMyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDEwMiwgCisgICAgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxMDUsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTQ3LCAKKyAgICAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE0OSwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxNjQsIAorICAgIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTg3LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDIxMCwgCisgICAgMTM1LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE5MiwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAKKyAgICAyMTksIDExMywgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAxMDIsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgCisgICAgMTYyLCAxNywgMTA1LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDE0NywgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAKKyAgICAxNjIsIDE3LCAxNDksIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMTY0LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIAorICAgIDE2MiwgMTcsIDE4NywgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAyMTAsIDEzNSwgMjQzLCAzLCAyMTIsIDI0NywgCisgICAgMjA2LCAxNjIsIDE3LCAxOTIsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMjE5LCAxMTMsIDEzLCAyNywgNiwgCisgICAgNjIsIDEzLCAyNywgNiwgMjUwLCAxMDMsIDEzLCAyNywgNiwgMjQ3LCAyMjMsIDEzLCAyNywgNiwgMjQyLCAxNTMsIDEzLCAKKyAgICAyNywgNiwgNzIsIDEzLCAyNywgNiwgMjM4LCA1LCAxMywgMjcsIDYsIDIzNiwgMTU2LCAxMywgMjcsIDYsIDIzNCwgMjQ3LCAKKyAgICAxMywgMjcsIDYsIDcwLCAxMywgMjcsIDYsIDIyNywgMjUxLCAxMywgMjcsIDYsIDIyNywgMTE4LCAxMywgMjcsIDYsIDE1NiwgCisgICAgMTMsIDI3LCA2LCAyMjMsIDI0MywgMTMsIDI3LCA2LCAyMjAsIDIxNCwgMTMsIDI3LCA2LCA3NCwgMTMsIDI3LCA2LCAyMTYsIAorICAgIDIyNiwgMTMsIDI3LCA2LCAyMTQsIDE2NywgMTMsIDI3LCA2LCAxNDYsIDEzLCAyNywgNiwgMjEyLCAxMjIsIDEzLCAyNywgNiwgCisgICAgMjA3LCA4MywgMTMsIDI3LCA2LCA2NiwgMTMsIDI3LCA2LCAyMDMsIDE2OCwgMTMsIDI3LCA2LCAyMDEsIDE0NywgMTMsIDI3LCAKKyAgICA2LCAyMDAsIDE5NSwgMTMsIDI3LCA2LCAyMDAsIDEyMywgMTMsIDI3LCA2LCAxOTksIDE1NywgMTMsIDI3LCA0LCA2MiwgMTMsIAorICAgIDI3LCA0LCAyNTAsIDEwMywgMTMsIDI3LCA0LCAyNDcsIDIyMywgMTMsIDI3LCA0LCAyNDIsIDE1MywgMTMsIDI3LCA0LCA3MiwgCisgICAgMTMsIDI3LCA0LCAyMzgsIDUsIDEzLCAyNywgNCwgMjM2LCAxNTYsIDEzLCAyNywgNCwgMjM0LCAyNDcsIDEzLCAyNywgNCwgCisgICAgNzAsIDEzLCAyNywgNCwgMjI3LCAyNTEsIDEzLCAyNywgNCwgMjI3LCAxMTgsIDEzLCAyNywgNCwgMTU2LCAxMywgMjcsIDQsIAorICAgIDIyMywgMjQzLCAxMywgMjcsIDQsIDIyMCwgMjE0LCAxMywgMjcsIDQsIDc0LCAxMywgMjcsIDQsIDIxNiwgMjI2LCAxMywgCisgICAgMjcsIDQsIDIxNCwgMTY3LCAxMywgMjcsIDQsIDE0NiwgMTMsIDI3LCA0LCAyMTIsIDEyMiwgMTMsIDI3LCA0LCAyMDcsIDgzLCAKKyAgICAxMywgMjcsIDQsIDY2LCAxMywgMjcsIDQsIDIwMywgMTY4LCAxMywgMjcsIDQsIDIwMSwgMTQ3LCAxMywgMjcsIDQsIDIwMCwgCisgICAgMTk1LCAxMywgMjcsIDQsIDIwMCwgMTIzLCAxMywgMjcsIDQsIDE5OSwgMTU3LCAxMywgMzksIDYsIDYyLCAxMywgMzksIDYsIAorICAgIDI1MCwgMTAzLCAxMywgMzksIDYsIDI0NywgMjIzLCAxMywgMzksIDYsIDI0MiwgMTUzLCAxMywgMzksIDYsIDcyLCAxMywgCisgICAgMzksIDYsIDIzOCwgNSwgMTMsIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDM5LCA2LCA3MCwgCisgICAgMTMsIDM5LCA2LCAyMjcsIDI1MSwgMTMsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDM5LCA2LCAxNTYsIDEzLCAzOSwgNiwgMjIzLCAKKyAgICAyNDMsIDEzLCAzOSwgNiwgMjIwLCAyMTQsIDEzLCAzOSwgNiwgNzQsIDEzLCAzOSwgNiwgMjE2LCAyMjYsIDEzLCAzOSwgNiwgCisgICAgMjE0LCAxNjcsIDEzLCAzOSwgNiwgMTQ2LCAxMywgMzksIDYsIDIxMiwgMTIyLCAxMywgMzksIDYsIDIwNywgODMsIDEzLCAKKyAgICAzOSwgNiwgNjYsIDEzLCAzOSwgNiwgMjAzLCAxNjgsIDEzLCAzOSwgNiwgMjAxLCAxNDcsIDEzLCAzOSwgNiwgMjAwLCAxOTUsIAorICAgIDEzLCAzOSwgNiwgMjAwLCAxMjMsIDEzLCAzOSwgNiwgMTk5LCAxNTcsIDEzLCAzOSwgNCwgNjIsIDEzLCAzOSwgNCwgMjUwLCAKKyAgICAxMDMsIDEzLCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCAzOSwgNCwgMjQyLCAxNTMsIDEzLCAzOSwgNCwgNzIsIDEzLCAzOSwgNCwgCisgICAgMjM4LCA1LCAxMywgMzksIDQsIDIzNiwgMTU2LCAxMywgMzksIDQsIDcwLCAxMywgMzksIDQsIDIyNywgMjUxLCAxMywgMzksIAorICAgIDQsIDIyNywgMTE4LCAxMywgMzksIDQsIDE1NiwgMTMsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDM5LCA0LCAyMjAsIDIxNCwgCisgICAgMTMsIDM5LCA0LCA3NCwgMTMsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDM5LCA0LCAyMTQsIDE2NywgMTMsIDM5LCA0LCAxNDYsIAorICAgIDEzLCAzOSwgNCwgMjEyLCAxMjIsIDEzLCAzOSwgNCwgMjA3LCA4MywgMTMsIDM5LCA0LCA2NiwgMTMsIDM5LCA0LCAyMDMsIAorICAgIDE2OCwgMTMsIDM5LCA0LCAyMDEsIDE0NywgMTMsIDM5LCA0LCAyMDAsIDE5NSwgMTMsIDM5LCA0LCAyMDAsIDEyMywgMTMsIAorICAgIDM5LCA0LCAxOTksIDE1NywgMTMsIDI3LCAzOSwgNiwgNjIsIDEzLCAyNywgMzksIDYsIDI1MCwgMTAzLCAxMywgMjcsIDM5LCAKKyAgICA2LCAyNDcsIDIyMywgMTMsIDI3LCAzOSwgNiwgMjQyLCAxNTMsIDEzLCAyNywgMzksIDYsIDcyLCAxMywgMjcsIDM5LCA2LCAKKyAgICAyMzgsIDUsIDEzLCAyNywgMzksIDYsIDIzNiwgMTU2LCAxMywgMjcsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDI3LCAzOSwgNiwgCisgICAgNzAsIDEzLCAyNywgMzksIDYsIDIyNywgMjUxLCAxMywgMjcsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDI3LCAzOSwgNiwgMTU2LCAKKyAgICAxMywgMjcsIDM5LCA2LCAyMjMsIDI0MywgMTMsIDI3LCAzOSwgNiwgMjIwLCAyMTQsIDEzLCAyNywgMzksIDYsIDc0LCAxMywgCisgICAgMjcsIDM5LCA2LCAyMTYsIDIyNiwgMTMsIDI3LCAzOSwgNiwgMjE0LCAxNjcsIDEzLCAyNywgMzksIDYsIDE0NiwgMTMsIDI3LCAKKyAgICAzOSwgNiwgMjEyLCAxMjIsIDEzLCAyNywgMzksIDYsIDIwNywgODMsIDEzLCAyNywgMzksIDYsIDY2LCAxMywgMjcsIDM5LCAKKyAgICA2LCAyMDMsIDE2OCwgMTMsIDI3LCAzOSwgNiwgMjAxLCAxNDcsIDEzLCAyNywgMzksIDYsIDIwMCwgMTk1LCAxMywgMjcsIAorICAgIDM5LCA2LCAyMDAsIDEyMywgMTMsIDI3LCAzOSwgNiwgMTk5LCAxNTcsIDEzLCAyNywgMzksIDQsIDYyLCAxMywgMjcsIDM5LCAKKyAgICA0LCAyNTAsIDEwMywgMTMsIDI3LCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCAyNywgMzksIDQsIDI0MiwgMTUzLCAxMywgMjcsIAorICAgIDM5LCA0LCA3MiwgMTMsIDI3LCAzOSwgNCwgMjM4LCA1LCAxMywgMjcsIDM5LCA0LCAyMzYsIDE1NiwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjM0LCAyNDcsIDEzLCAyNywgMzksIDQsIDcwLCAxMywgMjcsIDM5LCA0LCAyMjcsIDI1MSwgMTMsIDI3LCAzOSwgNCwgMjI3LCAKKyAgICAxMTgsIDEzLCAyNywgMzksIDQsIDE1NiwgMTMsIDI3LCAzOSwgNCwgMjIzLCAyNDMsIDEzLCAyNywgMzksIDQsIDIyMCwgCisgICAgMjE0LCAxMywgMjcsIDM5LCA0LCA3NCwgMTMsIDI3LCAzOSwgNCwgMjE2LCAyMjYsIDEzLCAyNywgMzksIDQsIDIxNCwgMTY3LCAKKyAgICAxMywgMjcsIDM5LCA0LCAxNDYsIDEzLCAyNywgMzksIDQsIDIxMiwgMTIyLCAxMywgMjcsIDM5LCA0LCAyMDcsIDgzLCAxMywgCisgICAgMjcsIDM5LCA0LCA2NiwgMTMsIDI3LCAzOSwgNCwgMjAzLCAxNjgsIDEzLCAyNywgMzksIDQsIDIwMSwgMTQ3LCAxMywgMjcsIAorICAgIDM5LCA0LCAyMDAsIDE5NSwgMTMsIDI3LCAzOSwgNCwgMjAwLCAxMjMsIDEzLCAyNywgMzksIDQsIDE5OSwgMTU3LCAxMywgCisgICAgMTM1LCA2LCA2MiwgMTMsIDEzNSwgNiwgMjQ3LCAyMjMsIDEzLCAxMzUsIDYsIDI0MiwgMTUzLCAxMywgMTM1LCA2LCAyMzYsIAorICAgIDE1NiwgMTMsIDEzNSwgNiwgMjI3LCAyNTEsIDEzLCAxMzUsIDYsIDIyNywgMTE4LCAxMywgMTM1LCA2LCAyMjAsIDIxNCwgCisgICAgMTMsIDEzNSwgNiwgNzQsIDEzLCAxMzUsIDYsIDIxNiwgMjI2LCAxMywgMTM1LCA2LCAyMTQsIDE2NywgMTMsIDEzNSwgNiwgCisgICAgMjEyLCAxMjIsIDEzLCAxMzUsIDYsIDIwNywgODMsIDEzLCAxMzUsIDYsIDY2LCAxMywgMTM1LCA2LCAyMDMsIDE2OCwgMTMsIAorICAgIDEzNSwgNiwgMjAxLCAxNDcsIDEzLCAxMzUsIDYsIDIwMCwgMTk1LCAxMywgMTM1LCA2LCAyMDAsIDEyMywgMTMsIDEzNSwgNiwgCisgICAgMTk5LCAxNTcsIDEzLCAxMzUsIDQsIDYyLCAxMywgMTM1LCA0LCAyNTAsIDEwMywgMTMsIDEzNSwgNCwgMjQ3LCAyMjMsIDEzLCAKKyAgICAxMzUsIDQsIDI0MiwgMTUzLCAxMywgMTM1LCA0LCAyMzgsIDUsIDEzLCAxMzUsIDQsIDIzNCwgMjQ3LCAxMywgMTM1LCA0LCAKKyAgICA3MCwgMTMsIDEzNSwgNCwgMjI3LCAyNTEsIDEzLCAxMzUsIDQsIDIyNywgMTE4LCAxMywgMTM1LCA0LCAxNTYsIDEzLCAxMzUsIAorICAgIDQsIDIyMywgMjQzLCAxMywgMTM1LCA0LCAyMjAsIDIxNCwgMTMsIDEzNSwgNCwgMjE2LCAyMjYsIDEzLCAxMzUsIDQsIDIxNCwgCisgICAgMTY3LCAxMywgMTM1LCA0LCAxNDYsIDEzLCAxMzUsIDQsIDIxMiwgMTIyLCAxMywgMTM1LCA0LCAyMDcsIDgzLCAxMywgMTM1LCAKKyAgICA0LCA2NiwgMTMsIDEzNSwgNCwgMjAzLCAxNjgsIDEzLCAxMzUsIDQsIDIwMSwgMTQ3LCAxMywgMTM1LCA0LCAyMDAsIDE5NSwgCisgICAgMTMsIDEzNSwgNCwgMjAwLCAxMjMsIDEzLCAxMzUsIDQsIDE5OSwgMTU3LCAxMywgMjcsIDEzNSwgNiwgNjIsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyNTAsIDEwMywgMTMsIDI3LCAxMzUsIDYsIDI0NywgMjIzLCAxMywgMjcsIDEzNSwgNiwgMjQyLCAxNTMsIDEzLCAKKyAgICAyNywgMTM1LCA2LCA3MiwgMTMsIDI3LCAxMzUsIDYsIDIzOCwgNSwgMTMsIDI3LCAxMzUsIDYsIDIzNiwgMTU2LCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjM0LCAyNDcsIDEzLCAyNywgMTM1LCA2LCA3MCwgMTMsIDI3LCAxMzUsIDYsIDIyNywgMjUxLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjI3LCAxMTgsIDEzLCAyNywgMTM1LCA2LCAxNTYsIDEzLCAyNywgMTM1LCA2LCAyMjMsIDI0MywgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIyMCwgMjE0LCAxMywgMjcsIDEzNSwgNiwgNzQsIDEzLCAyNywgMTM1LCA2LCAyMTYsIDIyNiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIxNCwgMTY3LCAxMywgMjcsIDEzNSwgNiwgMTQ2LCAxMywgMjcsIDEzNSwgNiwgMjEyLCAxMjIsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMDcsIDgzLCAxMywgMjcsIDEzNSwgNiwgNjYsIDEzLCAyNywgMTM1LCA2LCAyMDMsIDE2OCwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIwMSwgMTQ3LCAxMywgMjcsIDEzNSwgNiwgMjAwLCAxOTUsIDEzLCAyNywgMTM1LCA2LCAyMDAsIDEyMywgMTMsIAorICAgIDI3LCAxMzUsIDYsIDE5OSwgMTU3LCAxMywgMjcsIDEzNSwgNCwgNjIsIDEzLCAyNywgMTM1LCA0LCAyNTAsIDEwMywgMTMsIAorICAgIDI3LCAxMzUsIDQsIDI0NywgMjIzLCAxMywgMjcsIDEzNSwgNCwgMjQyLCAxNTMsIDEzLCAyNywgMTM1LCA0LCA3MiwgMTMsIAorICAgIDI3LCAxMzUsIDQsIDIzOCwgNSwgMTMsIDI3LCAxMzUsIDQsIDIzNiwgMTU2LCAxMywgMjcsIDEzNSwgNCwgMjM0LCAyNDcsIAorICAgIDEzLCAyNywgMTM1LCA0LCA3MCwgMTMsIDI3LCAxMzUsIDQsIDIyNywgMjUxLCAxMywgMjcsIDEzNSwgNCwgMjI3LCAxMTgsIAorICAgIDEzLCAyNywgMTM1LCA0LCAxNTYsIDEzLCAyNywgMTM1LCA0LCAyMjMsIDI0MywgMTMsIDI3LCAxMzUsIDQsIDIyMCwgMjE0LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgNzQsIDEzLCAyNywgMTM1LCA0LCAyMTYsIDIyNiwgMTMsIDI3LCAxMzUsIDQsIDIxNCwgMTY3LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgMTQ2LCAxMywgMjcsIDEzNSwgNCwgMjEyLCAxMjIsIDEzLCAyNywgMTM1LCA0LCAyMDcsIDgzLCAKKyAgICAxMywgMjcsIDEzNSwgNCwgNjYsIDEzLCAyNywgMTM1LCA0LCAyMDMsIDE2OCwgMTMsIDI3LCAxMzUsIDQsIDIwMSwgMTQ3LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgMjAwLCAxOTUsIDEzLCAyNywgMTM1LCA0LCAyMDAsIDEyMywgMTMsIDI3LCAxMzUsIDQsIDE5OSwgCisgICAgMTU3LCAxMywgMTcwLCA2LCA2MiwgMTMsIDE3MCwgNiwgMjUwLCAxMDMsIDEzLCAxNzAsIDYsIDI0MiwgMTUzLCAxMywgMTcwLCAKKyAgICA2LCA3MiwgMTMsIDE3MCwgNiwgMjM4LCA1LCAxMywgMTcwLCA2LCAyMzYsIDE1NiwgMTMsIDE3MCwgNiwgMjI3LCAyNTEsIAorICAgIDEzLCAxNzAsIDYsIDIyNywgMTE4LCAxMywgMTcwLCA2LCAxNTYsIDEzLCAxNzAsIDYsIDIyMywgMjQzLCAxMywgMTcwLCA2LCAKKyAgICAyMjAsIDIxNCwgMTMsIDE3MCwgNiwgNzQsIDEzLCAxNzAsIDYsIDIxNiwgMjI2LCAxMywgMTcwLCA2LCAyMTQsIDE2NywgMTMsIAorICAgIDE3MCwgNiwgMjEyLCAxMjIsIDEzLCAxNzAsIDYsIDIwNywgODMsIDEzLCAxNzAsIDYsIDY2LCAxMywgMTcwLCA2LCAyMDMsIAorICAgIDE2OCwgMTMsIDE3MCwgNiwgMjAxLCAxNDcsIDEzLCAxNzAsIDYsIDIwMCwgMTk1LCAxMywgMTcwLCA2LCAyMDAsIDEyMywgCisgICAgMTMsIDE3MCwgNCwgNjIsIDEzLCAxNzAsIDQsIDI1MCwgMTAzLCAxMywgMTcwLCA0LCAyNDcsIDIyMywgMTMsIDE3MCwgNCwgCisgICAgMjQyLCAxNTMsIDEzLCAxNzAsIDQsIDcyLCAxMywgMTcwLCA0LCAyMzgsIDUsIDEzLCAxNzAsIDQsIDIzNiwgMTU2LCAxMywgCisgICAgMTcwLCA0LCAyMzQsIDI0NywgMTMsIDE3MCwgNCwgNzAsIDEzLCAxNzAsIDQsIDIyNywgMjUxLCAxMywgMTcwLCA0LCAyMjcsIAorICAgIDExOCwgMTMsIDE3MCwgNCwgMTU2LCAxMywgMTcwLCA0LCAyMjMsIDI0MywgMTMsIDE3MCwgNCwgMjIwLCAyMTQsIDEzLCAKKyAgICAxNzAsIDQsIDc0LCAxMywgMTcwLCA0LCAyMTYsIDIyNiwgMTMsIDE3MCwgNCwgMjE0LCAxNjcsIDEzLCAxNzAsIDQsIDE0NiwgCisgICAgMTMsIDE3MCwgNCwgMjEyLCAxMjIsIDEzLCAxNzAsIDQsIDIwNywgODMsIDEzLCAxNzAsIDQsIDY2LCAxMywgMTcwLCA0LCAKKyAgICAyMDMsIDE2OCwgMTMsIDE3MCwgNCwgMjAxLCAxNDcsIDEzLCAxNzAsIDQsIDIwMCwgMTk1LCAxMywgMTcwLCA0LCAyMDAsIAorICAgIDEyMywgMTMsIDE3MCwgNCwgMTk5LCAxNTcsIDEzLCAxNzUsIDYsIDYyLCAxMywgMTc1LCA2LCAyNTAsIDEwMywgMTMsIDE3NSwgCisgICAgNiwgMjQyLCAxNTMsIDEzLCAxNzUsIDYsIDcyLCAxMywgMTc1LCA2LCAyMzgsIDUsIDEzLCAxNzUsIDYsIDIzNiwgMTU2LCAKKyAgICAxMywgMTc1LCA2LCA3MCwgMTMsIDE3NSwgNiwgMjI3LCAyNTEsIDEzLCAxNzUsIDYsIDIyNywgMTE4LCAxMywgMTc1LCA2LCAKKyAgICAxNTYsIDEzLCAxNzUsIDYsIDIyMywgMjQzLCAxMywgMTc1LCA2LCA3NCwgMTMsIDE3NSwgNiwgMjEyLCAxMjIsIDEzLCAxNzUsIAorICAgIDYsIDIwNywgODMsIDEzLCAxNzUsIDYsIDY2LCAxMywgMTc1LCA2LCAyMDMsIDE2OCwgMTMsIDE3NSwgNiwgMjAxLCAxNDcsIAorICAgIDEzLCAxNzUsIDYsIDIwMCwgMTk1LCAxMywgMTc1LCA2LCAyMDAsIDEyMywgMTMsIDE3NSwgNCwgNjIsIDEzLCAxNzUsIDQsIAorICAgIDI1MCwgMTAzLCAxMywgMTc1LCA0LCAyNDcsIDIyMywgMTMsIDE3NSwgNCwgMjQyLCAxNTMsIDEzLCAxNzUsIDQsIDcyLCAxMywgCisgICAgMTc1LCA0LCAyMzgsIDUsIDEzLCAxNzUsIDQsIDIzNiwgMTU2LCAxMywgMTc1LCA0LCAyMzQsIDI0NywgMTMsIDE3NSwgNCwgCisgICAgNzAsIDEzLCAxNzUsIDQsIDIyNywgMjUxLCAxMywgMTc1LCA0LCAyMjcsIDExOCwgMTMsIDE3NSwgNCwgMTU2LCAxMywgMTc1LCAKKyAgICA0LCAyMjMsIDI0MywgMTMsIDE3NSwgNCwgMjIwLCAyMTQsIDEzLCAxNzUsIDQsIDc0LCAxMywgMTc1LCA0LCAyMTYsIDIyNiwgCisgICAgMTMsIDE3NSwgNCwgMjE0LCAxNjcsIDEzLCAxNzUsIDQsIDE0NiwgMTMsIDE3NSwgNCwgMjEyLCAxMjIsIDEzLCAxNzUsIDQsIAorICAgIDIwNywgODMsIDEzLCAxNzUsIDQsIDY2LCAxMywgMTc1LCA0LCAyMDMsIDE2OCwgMTMsIDE3NSwgNCwgMjAxLCAxNDcsIDEzLCAKKyAgICAxNzUsIDQsIDIwMCwgMTk1LCAxMywgMTc1LCA0LCAyMDAsIDEyMywgMTMsIDE3NSwgNCwgMTk5LCAxNTcsIDEzLCAyNywgCisgICAgMTcwLCA2LCA2MiwgMTMsIDI3LCAxNzAsIDYsIDI1MCwgMTAzLCAxMywgMjcsIDE3MCwgNiwgMjQ3LCAyMjMsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyNDIsIDE1MywgMTMsIDI3LCAxNzAsIDYsIDcyLCAxMywgMjcsIDE3MCwgNiwgMjM4LCA1LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjM2LCAxNTYsIDEzLCAyNywgMTcwLCA2LCAyMzQsIDI0NywgMTMsIDI3LCAxNzAsIDYsIDcwLCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjI3LCAyNTEsIDEzLCAyNywgMTcwLCA2LCAyMjcsIDExOCwgMTMsIDI3LCAxNzAsIDYsIDE1NiwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIyMywgMjQzLCAxMywgMjcsIDE3MCwgNiwgMjIwLCAyMTQsIDEzLCAyNywgMTcwLCA2LCA3NCwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIxNiwgMjI2LCAxMywgMjcsIDE3MCwgNiwgMjE0LCAxNjcsIDEzLCAyNywgMTcwLCA2LCAxNDYsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMTIsIDEyMiwgMTMsIDI3LCAxNzAsIDYsIDIwNywgODMsIDEzLCAyNywgMTcwLCA2LCA2NiwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIwMywgMTY4LCAxMywgMjcsIDE3MCwgNiwgMjAxLCAxNDcsIDEzLCAyNywgMTcwLCA2LCAyMDAsIDE5NSwgMTMsIAorICAgIDI3LCAxNzAsIDYsIDIwMCwgMTIzLCAxMywgMjcsIDE3MCwgNiwgMTk5LCAxNTcsIDEzLCAyNywgMTcwLCA0LCA2MiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDI1MCwgMTAzLCAxMywgMjcsIDE3MCwgNCwgMjQ3LCAyMjMsIDEzLCAyNywgMTcwLCA0LCAyNDIsIDE1MywgCisgICAgMTMsIDI3LCAxNzAsIDQsIDcyLCAxMywgMjcsIDE3MCwgNCwgMjM4LCA1LCAxMywgMjcsIDE3MCwgNCwgMjM2LCAxNTYsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMzQsIDI0NywgMTMsIDI3LCAxNzAsIDQsIDcwLCAxMywgMjcsIDE3MCwgNCwgMjI3LCAyNTEsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMjcsIDExOCwgMTMsIDI3LCAxNzAsIDQsIDE1NiwgMTMsIDI3LCAxNzAsIDQsIDIyMywgMjQzLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjIwLCAyMTQsIDEzLCAyNywgMTcwLCA0LCA3NCwgMTMsIDI3LCAxNzAsIDQsIDIxNiwgMjI2LCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjE0LCAxNjcsIDEzLCAyNywgMTcwLCA0LCAxNDYsIDEzLCAyNywgMTcwLCA0LCAyMTIsIDEyMiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIwNywgODMsIDEzLCAyNywgMTcwLCA0LCA2NiwgMTMsIDI3LCAxNzAsIDQsIDIwMywgMTY4LCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjAxLCAxNDcsIDEzLCAyNywgMTcwLCA0LCAyMDAsIDE5NSwgMTMsIDI3LCAxNzAsIDQsIDIwMCwgMTIzLCAKKyAgICAxMywgMjcsIDE3MCwgNCwgMTk5LCAxNTcsIDEzLCA0MywgNiwgNjIsIDEzLCA0MywgNiwgMjUwLCAxMDMsIDEzLCA0MywgNiwgCisgICAgMjQ3LCAyMjMsIDEzLCA0MywgNiwgMjQyLCAxNTMsIDEzLCA0MywgNiwgNzIsIDEzLCA0MywgNiwgMjM4LCA1LCAxMywgNDMsIAorICAgIDYsIDIzNiwgMTU2LCAxMywgNDMsIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDYsIDcwLCAxMywgNDMsIDYsIDIyNywgMjUxLCAxMywgCisgICAgNDMsIDYsIDIyNywgMTE4LCAxMywgNDMsIDYsIDE1NiwgMTMsIDQzLCA2LCAyMjMsIDI0MywgMTMsIDQzLCA2LCAyMjAsIAorICAgIDIxNCwgMTMsIDQzLCA2LCA3NCwgMTMsIDQzLCA2LCAyMTYsIDIyNiwgMTMsIDQzLCA2LCAyMTQsIDE2NywgMTMsIDQzLCA2LCAKKyAgICAxNDYsIDEzLCA0MywgNiwgMjEyLCAxMjIsIDEzLCA0MywgNiwgMjA3LCA4MywgMTMsIDQzLCA2LCA2NiwgMTMsIDQzLCA2LCAKKyAgICAyMDMsIDE2OCwgMTMsIDQzLCA2LCAyMDEsIDE0NywgMTMsIDQzLCA2LCAyMDAsIDE5NSwgMTMsIDQzLCA2LCAyMDAsIDEyMywgCisgICAgMTMsIDQzLCA2LCAxOTksIDE1NywgMTMsIDQzLCA0LCA2MiwgMTMsIDQzLCA0LCAyNTAsIDEwMywgMTMsIDQzLCA0LCAyNDcsIAorICAgIDIyMywgMTMsIDQzLCA0LCAyNDIsIDE1MywgMTMsIDQzLCA0LCA3MiwgMTMsIDQzLCA0LCAyMzgsIDUsIDEzLCA0MywgNCwgCisgICAgMjM2LCAxNTYsIDEzLCA0MywgNCwgMjM0LCAyNDcsIDEzLCA0MywgNCwgNzAsIDEzLCA0MywgNCwgMjI3LCAyNTEsIDEzLCAKKyAgICA0MywgNCwgMjI3LCAxMTgsIDEzLCA0MywgNCwgMTU2LCAxMywgNDMsIDQsIDIyMywgMjQzLCAxMywgNDMsIDQsIDIyMCwgCisgICAgMjE0LCAxMywgNDMsIDQsIDc0LCAxMywgNDMsIDQsIDIxNiwgMjI2LCAxMywgNDMsIDQsIDIxNCwgMTY3LCAxMywgNDMsIDQsIAorICAgIDE0NiwgMTMsIDQzLCA0LCAyMTIsIDEyMiwgMTMsIDQzLCA0LCAyMDcsIDgzLCAxMywgNDMsIDQsIDY2LCAxMywgNDMsIDQsIAorICAgIDIwMywgMTY4LCAxMywgNDMsIDQsIDIwMSwgMTQ3LCAxMywgNDMsIDQsIDIwMCwgMTk1LCAxMywgNDMsIDQsIDIwMCwgMTIzLCAKKyAgICAxMywgNDMsIDQsIDE5OSwgMTU3LCAxMywgNDMsIDI3LCA2LCA2MiwgMTMsIDQzLCAyNywgNiwgMjUwLCAxMDMsIDEzLCA0MywgCisgICAgMjcsIDYsIDI0NywgMjIzLCAxMywgNDMsIDI3LCA2LCAyNDIsIDE1MywgMTMsIDQzLCAyNywgNiwgNzIsIDEzLCA0MywgMjcsIAorICAgIDYsIDIzOCwgNSwgMTMsIDQzLCAyNywgNiwgMjM2LCAxNTYsIDEzLCA0MywgMjcsIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCAKKyAgICA2LCA3MCwgMTMsIDQzLCAyNywgNiwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIDYsIDIyNywgMTE4LCAxMywgNDMsIDI3LCA2LCAKKyAgICAxNTYsIDEzLCA0MywgMjcsIDYsIDIyMywgMjQzLCAxMywgNDMsIDI3LCA2LCAyMjAsIDIxNCwgMTMsIDQzLCAyNywgNiwgNzQsIAorICAgIDEzLCA0MywgMjcsIDYsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCA2LCAyMTQsIDE2NywgMTMsIDQzLCAyNywgNiwgMTQ2LCAxMywgCisgICAgNDMsIDI3LCA2LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgNiwgMjA3LCA4MywgMTMsIDQzLCAyNywgNiwgNjYsIDEzLCA0MywgCisgICAgMjcsIDYsIDIwMywgMTY4LCAxMywgNDMsIDI3LCA2LCAyMDEsIDE0NywgMTMsIDQzLCAyNywgNiwgMjAwLCAxOTUsIDEzLCAKKyAgICA0MywgMjcsIDYsIDIwMCwgMTIzLCAxMywgNDMsIDI3LCA2LCAxOTksIDE1NywgMTMsIDQzLCAyNywgNCwgNjIsIDEzLCA0MywgCisgICAgMjcsIDQsIDI1MCwgMTAzLCAxMywgNDMsIDI3LCA0LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgNCwgMjQyLCAxNTMsIDEzLCAKKyAgICA0MywgMjcsIDQsIDcyLCAxMywgNDMsIDI3LCA0LCAyMzgsIDUsIDEzLCA0MywgMjcsIDQsIDIzNiwgMTU2LCAxMywgNDMsIAorICAgIDI3LCA0LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgNCwgNzAsIDEzLCA0MywgMjcsIDQsIDIyNywgMjUxLCAxMywgNDMsIDI3LCAKKyAgICA0LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgNCwgMTU2LCAxMywgNDMsIDI3LCA0LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgNCwgCisgICAgMjIwLCAyMTQsIDEzLCA0MywgMjcsIDQsIDc0LCAxMywgNDMsIDI3LCA0LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgNCwgMjE0LCAKKyAgICAxNjcsIDEzLCA0MywgMjcsIDQsIDE0NiwgMTMsIDQzLCAyNywgNCwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDQsIDIwNywgODMsIAorICAgIDEzLCA0MywgMjcsIDQsIDY2LCAxMywgNDMsIDI3LCA0LCAyMDMsIDE2OCwgMTMsIDQzLCAyNywgNCwgMjAxLCAxNDcsIDEzLCAKKyAgICA0MywgMjcsIDQsIDIwMCwgMTk1LCAxMywgNDMsIDI3LCA0LCAyMDAsIDEyMywgMTMsIDQzLCAyNywgNCwgMTk5LCAxNTcsIAorICAgIDEzLCA0MywgMzksIDYsIDYyLCAxMywgNDMsIDM5LCA2LCAyNTAsIDEwMywgMTMsIDQzLCAzOSwgNiwgMjQ3LCAyMjMsIDEzLCAKKyAgICA0MywgMzksIDYsIDI0MiwgMTUzLCAxMywgNDMsIDM5LCA2LCA3MiwgMTMsIDQzLCAzOSwgNiwgMjM4LCA1LCAxMywgNDMsIAorICAgIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDQzLCAzOSwgNiwgMjM0LCAyNDcsIDEzLCA0MywgMzksIDYsIDcwLCAxMywgNDMsIDM5LCAKKyAgICA2LCAyMjcsIDI1MSwgMTMsIDQzLCAzOSwgNiwgMjI3LCAxMTgsIDEzLCA0MywgMzksIDYsIDE1NiwgMTMsIDQzLCAzOSwgNiwgCisgICAgMjIzLCAyNDMsIDEzLCA0MywgMzksIDYsIDIyMCwgMjE0LCAxMywgNDMsIDM5LCA2LCA3NCwgMTMsIDQzLCAzOSwgNiwgMjE2LCAKKyAgICAyMjYsIDEzLCA0MywgMzksIDYsIDIxNCwgMTY3LCAxMywgNDMsIDM5LCA2LCAxNDYsIDEzLCA0MywgMzksIDYsIDIxMiwgCisgICAgMTIyLCAxMywgNDMsIDM5LCA2LCAyMDcsIDgzLCAxMywgNDMsIDM5LCA2LCA2NiwgMTMsIDQzLCAzOSwgNiwgMjAzLCAxNjgsIAorICAgIDEzLCA0MywgMzksIDYsIDIwMSwgMTQ3LCAxMywgNDMsIDM5LCA2LCAyMDAsIDE5NSwgMTMsIDQzLCAzOSwgNiwgMjAwLCAKKyAgICAxMjMsIDEzLCA0MywgMzksIDYsIDE5OSwgMTU3LCAxMywgNDMsIDM5LCA0LCA2MiwgMTMsIDQzLCAzOSwgNCwgMjUwLCAxMDMsIAorICAgIDEzLCA0MywgMzksIDQsIDI0NywgMjIzLCAxMywgNDMsIDM5LCA0LCAyNDIsIDE1MywgMTMsIDQzLCAzOSwgNCwgNzIsIDEzLCAKKyAgICA0MywgMzksIDQsIDIzOCwgNSwgMTMsIDQzLCAzOSwgNCwgMjM2LCAxNTYsIDEzLCA0MywgMzksIDQsIDIzNCwgMjQ3LCAxMywgCisgICAgNDMsIDM5LCA0LCA3MCwgMTMsIDQzLCAzOSwgNCwgMjI3LCAyNTEsIDEzLCA0MywgMzksIDQsIDIyNywgMTE4LCAxMywgNDMsIAorICAgIDM5LCA0LCAxNTYsIDEzLCA0MywgMzksIDQsIDIyMywgMjQzLCAxMywgNDMsIDM5LCA0LCAyMjAsIDIxNCwgMTMsIDQzLCAzOSwgCisgICAgNCwgNzQsIDEzLCA0MywgMzksIDQsIDIxNiwgMjI2LCAxMywgNDMsIDM5LCA0LCAyMTQsIDE2NywgMTMsIDQzLCAzOSwgNCwgCisgICAgMTQ2LCAxMywgNDMsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDQzLCAzOSwgNCwgMjA3LCA4MywgMTMsIDQzLCAzOSwgNCwgNjYsIAorICAgIDEzLCA0MywgMzksIDQsIDIwMywgMTY4LCAxMywgNDMsIDM5LCA0LCAyMDEsIDE0NywgMTMsIDQzLCAzOSwgNCwgMjAwLCAKKyAgICAxOTUsIDEzLCA0MywgMzksIDQsIDIwMCwgMTIzLCAxMywgNDMsIDM5LCA0LCAxOTksIDE1NywgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDYyLCAxMywgNDMsIDI3LCAzOSwgNiwgMjUwLCAxMDMsIDEzLCA0MywgMjcsIDM5LCA2LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDI0MiwgMTUzLCAxMywgNDMsIDI3LCAzOSwgNiwgNzIsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzgsIDUsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDQzLCAyNywgMzksIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgNzAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgMzksIDYsIDIyNywgMTE4LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMTU2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIAorICAgIDQzLCAyNywgMzksIDYsIDc0LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTQsIAorICAgIDE2NywgMTMsIDQzLCAyNywgMzksIDYsIDE0NiwgMTMsIDQzLCAyNywgMzksIDYsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNiwgMjA3LCA4MywgMTMsIDQzLCAyNywgMzksIDYsIDY2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjAzLCAxNjgsIDEzLCA0MywgCisgICAgMjcsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDQzLCAyNywgMzksIDYsIDIwMCwgMTk1LCAxMywgNDMsIDI3LCAzOSwgNiwgMjAwLCAKKyAgICAxMjMsIDEzLCA0MywgMjcsIDM5LCA2LCAxOTksIDE1NywgMTMsIDQzLCAyNywgMzksIDQsIDYyLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjUwLCAxMDMsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgMzksIDQsIDI0MiwgMTUzLCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgNzIsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzgsIDUsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzYsIAorICAgIDE1NiwgMTMsIDQzLCAyNywgMzksIDQsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCAzOSwgNCwgNzAsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgMzksIDQsIDIyNywgMTE4LCAxMywgNDMsIDI3LCAzOSwgNCwgMTU2LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNCwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjAsIDIxNCwgMTMsIDQzLCAyNywgMzksIDQsIDc0LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTQsIDE2NywgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDE0NiwgMTMsIDQzLCAyNywgMzksIDQsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjA3LCA4MywgMTMsIDQzLCAKKyAgICAyNywgMzksIDQsIDY2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjAzLCAxNjgsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDEsIDE0NywgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIwMCwgMTk1LCAxMywgNDMsIDI3LCAzOSwgNCwgMjAwLCAxMjMsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAxOTksIDE1NywgMTMsIDIyMSwgOTMsIDYsIDYyLCAxMywgMjIxLCA5MywgNiwgMjUwLCAxMDMsIDEzLCAyMjEsIDkzLCAKKyAgICA2LCAyNDcsIDIyMywgMTMsIDIyMSwgOTMsIDYsIDI0MiwgMTUzLCAxMywgMjIxLCA5MywgNiwgNzIsIDEzLCAyMjEsIDkzLCAKKyAgICA2LCAyMzgsIDUsIDEzLCAyMjEsIDkzLCA2LCAyMzYsIDE1NiwgMTMsIDIyMSwgOTMsIDYsIDIzNCwgMjQ3LCAxMywgMjIxLCAKKyAgICA5MywgNiwgNzAsIDEzLCAyMjEsIDkzLCA2LCAyMjcsIDI1MSwgMTMsIDIyMSwgOTMsIDYsIDIyNywgMTE4LCAxMywgMjIxLCAKKyAgICA5MywgNiwgMTU2LCAxMywgMjIxLCA5MywgNiwgMjIzLCAyNDMsIDEzLCAyMjEsIDkzLCA2LCAyMjAsIDIxNCwgMTMsIDIyMSwgCisgICAgOTMsIDYsIDc0LCAxMywgMjIxLCA5MywgNiwgMjE2LCAyMjYsIDEzLCAyMjEsIDkzLCA2LCAyMTQsIDE2NywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDE0NiwgMTMsIDIyMSwgOTMsIDYsIDIxMiwgMTIyLCAxMywgMjIxLCA5MywgNiwgMjA3LCA4MywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDY2LCAxMywgMjIxLCA5MywgNiwgMjAzLCAxNjgsIDEzLCAyMjEsIDkzLCA2LCAyMDEsIDE0NywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDIwMCwgMTk1LCAxMywgMjIxLCA5MywgNiwgMjAwLCAxMjMsIDEzLCAyMjEsIDkzLCA2LCAxOTksIDE1NywgMTMsIAorICAgIDIyMSwgOTMsIDQsIDYyLCAxMywgMjIxLCA5MywgNCwgMjUwLCAxMDMsIDEzLCAyMjEsIDkzLCA0LCAyNDcsIDIyMywgMTMsIAorICAgIDIyMSwgOTMsIDQsIDI0MiwgMTUzLCAxMywgMjIxLCA5MywgNCwgNzIsIDEzLCAyMjEsIDkzLCA0LCAyMzgsIDUsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMzYsIDE1NiwgMTMsIDIyMSwgOTMsIDQsIDIzNCwgMjQ3LCAxMywgMjIxLCA5MywgNCwgNzAsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMjcsIDI1MSwgMTMsIDIyMSwgOTMsIDQsIDIyNywgMTE4LCAxMywgMjIxLCA5MywgNCwgMTU2LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjIzLCAyNDMsIDEzLCAyMjEsIDkzLCA0LCAyMjAsIDIxNCwgMTMsIDIyMSwgOTMsIDQsIDc0LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjE2LCAyMjYsIDEzLCAyMjEsIDkzLCA0LCAyMTQsIDE2NywgMTMsIDIyMSwgOTMsIDQsIDE0NiwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIxMiwgMTIyLCAxMywgMjIxLCA5MywgNCwgMjA3LCA4MywgMTMsIDIyMSwgOTMsIDQsIDY2LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjAzLCAxNjgsIDEzLCAyMjEsIDkzLCA0LCAyMDEsIDE0NywgMTMsIDIyMSwgOTMsIDQsIDIwMCwgMTk1LCAKKyAgICAxMywgMjIxLCA5MywgNCwgMjAwLCAxMjMsIDEzLCAyMjEsIDkzLCA0LCAxOTksIDE1NywgMTMsIDM5LCA0LCAyNDAsIDE4MSwgCisgICAgNzAsIDEzLCAzOSwgNCwgMjQwLCAxODEsIDIyNywgMjUxLCAxMywgMjcsIDYsIDI1MSwgMTEyLCAxMywgMjcsIDYsIDI0OCwgCisgICAgMjA4LCAxMywgMjcsIDYsIDIzNiwgNjAsIDEzLCAyNywgNiwgMjQxLCAxMzYsIDEzLCAyNywgNiwgMjM4LCAxMjQsIDEzLCAKKyAgICAyNywgNiwgMTk5LCA4MCwgMTMsIDI3LCA2LCAyMzgsIDc5LCAxMywgMjcsIDYsIDIwNiwgODgsIDEzLCAyNywgNiwgMjI4LCAKKyAgICA0MSwgMTMsIDI3LCA2LCAyMjcsIDU0LCAxMywgMjcsIDYsIDIyNSwgODcsIDEzLCAyNywgNiwgMjIxLCA0MSwgMTMsIDI3LCAKKyAgICA2LCAyMTgsIDEzMywgMTMsIDI3LCA2LCAyMDAsIDE2OSwgMTMsIDI3LCA2LCAyMTcsIDgxLCAxMywgMjcsIDYsIDIxNSwgCisgICAgMjA0LCAxMywgMjcsIDYsIDIxMywgOTAsIDEzLCAyNywgNiwgMjA2LCA4OSwgOTksIDEzLCAyNywgNiwgMjA5LCAxNjMsIDEzLCAKKyAgICAyNywgNiwgMjA2LCAyMjEsIDEzLCAyNywgNiwgMjAzLCAyMjAsIDEzLCAyNywgNiwgMjE1LCAyMjksIDEzLCAyNywgNiwgCisgICAgMjQ2LCAyMzYsIDEzLCAyNywgNiwgMjE0LCAyMzUsIDEzLCAyNywgNiwgMjE3LCA4MywgMTMsIDI3LCAyMjAsIDE1MiwgMTMsIAorICAgIDI3LCA0LCAyNTEsIDExMiwgMTMsIDI3LCA0LCAyNDgsIDIwOCwgMTMsIDI3LCA0LCAyMzYsIDYwLCAxMywgMjcsIDQsIDI0MSwgCisgICAgMTM2LCAxMywgMjcsIDQsIDIzOCwgMTI0LCAxMywgMjcsIDQsIDE5OSwgODAsIDEzLCAyNywgNCwgMjM4LCA3OSwgMTMsIDI3LCAKKyAgICA0LCAyMDYsIDg4LCAxMywgMjcsIDQsIDIyOCwgNDEsIDEzLCAyNywgNCwgMjI3LCA1NCwgMTMsIDI3LCA0LCAyMjUsIDg3LCAKKyAgICAxMywgMjcsIDQsIDIyMSwgNDEsIDEzLCAyNywgNCwgMjE4LCAxMzMsIDEzLCAyNywgNCwgMjAwLCAxNjksIDEzLCAyNywgNCwgCisgICAgMjE3LCA4MSwgMTMsIDI3LCA0LCAyMTUsIDIwNCwgMTMsIDI3LCA0LCAyMTMsIDkwLCAxMywgMjcsIDQsIDQ3LCAyMDksIAorICAgIDE2MywgMTMsIDI3LCA0LCAyMDksIDE2MywgMTMsIDI3LCA0LCAyMDYsIDIyMSwgMTMsIDI3LCA0LCAyMDMsIDIyMCwgMTMsIAorICAgIDI3LCA0LCAyMTUsIDIyOSwgMTMsIDI3LCA0LCAyNDYsIDIzNiwgMTMsIDI3LCA0LCAyMTQsIDIzNSwgMTMsIDI3LCA0LCAKKyAgICAyMTcsIDgzLCAxMywgMjcsIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgMjcsIDIzOCwgMTI1LCA5OSwgMTMsIDI3LCAyMDYsIAorICAgIDg5LCA5OSwgMTMsIDI3LCAyMjcsIDU1LCA5OSwgMTMsIDI3LCAyMTUsIDIzMCwgOTksIDEzLCAyNywgMjEzLCA5MSwgOTksIAorICAgIDEzLCAyNywgMjE1LCAyMDUsIDk5LCAxMywgMzksIDYsIDI1MSwgMTEyLCAxMywgMzksIDYsIDI0OCwgMjA4LCAxMywgMzksIAorICAgIDYsIDIzNiwgNjAsIDEzLCAzOSwgNiwgMjQxLCAxMzYsIDEzLCAzOSwgNiwgMjM4LCAxMjQsIDEzLCAzOSwgNiwgMTk5LCA4MCwgCisgICAgMTMsIDM5LCA2LCAyMzgsIDc5LCAxMywgMzksIDYsIDIwNiwgODgsIDEzLCAzOSwgNiwgMjI4LCA0MSwgMTMsIDM5LCA2LCAKKyAgICAyMjcsIDU0LCAxMywgMzksIDYsIDIyNSwgODcsIDEzLCAzOSwgNiwgMjIxLCA0MSwgMTMsIDM5LCA2LCAyMTgsIDEzMywgMTMsIAorICAgIDM5LCA2LCAyMDAsIDE2OSwgMTMsIDM5LCA2LCAyMTcsIDgxLCAxMywgMzksIDYsIDIxNSwgMjA0LCAxMywgMzksIDYsIDIxMywgCisgICAgOTAsIDEzLCAzOSwgNiwgMjA2LCA4OSwgOTksIDEzLCAzOSwgNiwgMjA5LCAxNjMsIDEzLCAzOSwgNiwgMjA2LCAyMjEsIDEzLCAKKyAgICAzOSwgNiwgMjAzLCAyMjAsIDEzLCAzOSwgNiwgMjE1LCAyMjksIDEzLCAzOSwgNiwgMjQ2LCAyMzYsIDEzLCAzOSwgNiwgCisgICAgMjE0LCAyMzUsIDEzLCAzOSwgNiwgMjE3LCA4MywgMTMsIDM5LCAyMjAsIDE1MiwgMTMsIDM5LCA0LCAyNTEsIDExMiwgMTMsIAorICAgIDM5LCA0LCAyNDgsIDIwOCwgMTMsIDM5LCA0LCAyMzYsIDYwLCAxMywgMzksIDQsIDI0MSwgMTM2LCAxMywgMzksIDQsIDIzOCwgCisgICAgMTI0LCAxMywgMzksIDQsIDE5OSwgODAsIDEzLCAzOSwgNCwgMjM4LCA3OSwgMTMsIDM5LCA0LCAyMDYsIDg4LCAxMywgMzksIAorICAgIDQsIDIyOCwgNDEsIDEzLCAzOSwgNCwgMjI3LCA1NCwgMTMsIDM5LCA0LCAyMjUsIDg3LCAxMywgMzksIDQsIDIyMSwgNDEsIAorICAgIDEzLCAzOSwgNCwgMjE4LCAxMzMsIDEzLCAzOSwgNCwgMjAwLCAxNjksIDEzLCAzOSwgNCwgMjE3LCA4MSwgMTMsIDM5LCA0LCAKKyAgICAyMTUsIDIwNCwgMTMsIDM5LCA0LCAyMTMsIDkwLCAxMywgMzksIDQsIDQ3LCAyMDksIDE2MywgMTMsIDM5LCA0LCAyMDksIAorICAgIDE2MywgMTMsIDM5LCA0LCAyMDYsIDIyMSwgMTMsIDM5LCA0LCAyMDMsIDIyMCwgMTMsIDM5LCA0LCAyMTUsIDIyOSwgMTMsIAorICAgIDM5LCA0LCAyNDYsIDIzNiwgMTMsIDM5LCA0LCAyMTQsIDIzNSwgMTMsIDM5LCA0LCAyMTcsIDgzLCAxMywgMzksIDIxNiwgCisgICAgMTA4LCAyNDEsIDQ4LCAxMywgMzksIDIzOCwgMTI1LCA5OSwgMTMsIDM5LCAyMDYsIDg5LCA5OSwgMTMsIDM5LCAyMjcsIDU1LCAKKyAgICA5OSwgMTMsIDM5LCAyMTUsIDIzMCwgOTksIDEzLCAzOSwgMjEzLCA5MSwgOTksIDEzLCAzOSwgMjE1LCAyMDUsIDk5LCAxMywgCisgICAgMjcsIDM5LCA2LCAyNTEsIDExMiwgMTMsIDI3LCAzOSwgNiwgMjQ4LCAyMDgsIDEzLCAyNywgMzksIDYsIDIzNiwgNjAsIDEzLCAKKyAgICAyNywgMzksIDYsIDI0MSwgMTM2LCAxMywgMjcsIDM5LCA2LCAyMzgsIDEyNCwgMTMsIDI3LCAzOSwgNiwgMTk5LCA4MCwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjM4LCA3OSwgMTMsIDI3LCAzOSwgNiwgMjA2LCA4OCwgMTMsIDI3LCAzOSwgNiwgMjI4LCA0MSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjI3LCA1NCwgMTMsIDI3LCAzOSwgNiwgMjI1LCA4NywgMTMsIDI3LCAzOSwgNiwgMjIxLCA0MSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjE4LCAxMzMsIDEzLCAyNywgMzksIDYsIDIwMCwgMTY5LCAxMywgMjcsIDM5LCA2LCAyMTcsIDgxLCAxMywgCisgICAgMjcsIDM5LCA2LCAyMTUsIDIwNCwgMTMsIDI3LCAzOSwgNiwgMjEzLCA5MCwgMTMsIDI3LCAzOSwgNiwgMjA2LCA4OSwgOTksIAorICAgIDEzLCAyNywgMzksIDYsIDIwOSwgMTYzLCAxMywgMjcsIDM5LCA2LCAyMDYsIDIyMSwgMTMsIDI3LCAzOSwgNiwgMjAzLCAKKyAgICAyMjAsIDEzLCAyNywgMzksIDYsIDIxNSwgMjI5LCAxMywgMjcsIDM5LCA2LCAyNDYsIDIzNiwgMTMsIDI3LCAzOSwgNiwgCisgICAgMjE0LCAyMzUsIDEzLCAyNywgMzksIDYsIDIxNywgODMsIDEzLCAyNywgMzksIDIyMCwgMTUyLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyNTEsIDExMiwgMTMsIDI3LCAzOSwgNCwgMjQ4LCAyMDgsIDEzLCAyNywgMzksIDQsIDIzNiwgNjAsIDEzLCAyNywgMzksIDQsIAorICAgIDI0MSwgMTM2LCAxMywgMjcsIDM5LCA0LCAyMzgsIDEyNCwgMTMsIDI3LCAzOSwgNCwgMTk5LCA4MCwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjM4LCA3OSwgMTMsIDI3LCAzOSwgNCwgMjA2LCA4OCwgMTMsIDI3LCAzOSwgNCwgMjI4LCA0MSwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjI3LCA1NCwgMTMsIDI3LCAzOSwgNCwgMjI1LCA4NywgMTMsIDI3LCAzOSwgNCwgMjIxLCA0MSwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjE4LCAxMzMsIDEzLCAyNywgMzksIDQsIDIwMCwgMTY5LCAxMywgMjcsIDM5LCA0LCAyMTcsIDgxLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMTUsIDIwNCwgMTMsIDI3LCAzOSwgNCwgMjEzLCA5MCwgMTMsIDI3LCAzOSwgNCwgNDcsIDIwOSwgMTYzLCAxMywgMjcsIAorICAgIDM5LCA0LCAyMDksIDE2MywgMTMsIDI3LCAzOSwgNCwgMjA2LCAyMjEsIDEzLCAyNywgMzksIDQsIDIwMywgMjIwLCAxMywgCisgICAgMjcsIDM5LCA0LCAyMTUsIDIyOSwgMTMsIDI3LCAzOSwgNCwgMjQ2LCAyMzYsIDEzLCAyNywgMzksIDQsIDIxNCwgMjM1LCAKKyAgICAxMywgMjcsIDM5LCA0LCAyMTcsIDgzLCAxMywgMjcsIDM5LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDI3LCAzOSwgMjM4LCAKKyAgICAxMjUsIDk5LCAxMywgMjcsIDM5LCAyMDYsIDg5LCA5OSwgMTMsIDI3LCAzOSwgMjI3LCA1NSwgOTksIDEzLCAyNywgMzksIAorICAgIDIxNSwgMjMwLCA5OSwgMTMsIDI3LCAzOSwgMjEzLCA5MSwgOTksIDEzLCAyNywgMzksIDIxNSwgMjA1LCA5OSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjUxLCAxMTIsIDEzLCA0MywgMjcsIDYsIDI0OCwgMjA4LCAxMywgNDMsIDI3LCA2LCAyMzYsIDYwLCAxMywgNDMsIAorICAgIDI3LCA2LCAyNDEsIDEzNiwgMTMsIDQzLCAyNywgNiwgMjM4LCAxMjQsIDEzLCA0MywgMjcsIDYsIDE5OSwgODAsIDEzLCA0MywgCisgICAgMjcsIDYsIDIzOCwgNzksIDEzLCA0MywgMjcsIDYsIDIwNiwgODgsIDEzLCA0MywgMjcsIDYsIDIyOCwgNDEsIDEzLCA0MywgCisgICAgMjcsIDYsIDIyNywgNTQsIDEzLCA0MywgMjcsIDYsIDIyNSwgODcsIDEzLCA0MywgMjcsIDYsIDIyMSwgNDEsIDEzLCA0MywgCisgICAgMjcsIDYsIDIxOCwgMTMzLCAxMywgNDMsIDI3LCA2LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgNiwgMjE3LCA4MSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjE1LCAyMDQsIDEzLCA0MywgMjcsIDYsIDIxMywgOTAsIDEzLCA0MywgMjcsIDYsIDIwNiwgODksIDk5LCAxMywgCisgICAgNDMsIDI3LCA2LCAyMDksIDE2MywgMTMsIDQzLCAyNywgNiwgMjA2LCAyMjEsIDEzLCA0MywgMjcsIDYsIDIwMywgMjIwLCAKKyAgICAxMywgNDMsIDI3LCA2LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgNiwgMjQ2LCAyMzYsIDEzLCA0MywgMjcsIDYsIDIxNCwgCisgICAgMjM1LCAxMywgNDMsIDI3LCA2LCAyMTcsIDgzLCAxMywgNDMsIDI3LCAyMjAsIDE1MiwgMTMsIDQzLCAyNywgNCwgMjUxLCAKKyAgICAxMTIsIDEzLCA0MywgMjcsIDQsIDI0OCwgMjA4LCAxMywgNDMsIDI3LCA0LCAyMzYsIDYwLCAxMywgNDMsIDI3LCA0LCAyNDEsIAorICAgIDEzNiwgMTMsIDQzLCAyNywgNCwgMjM4LCAxMjQsIDEzLCA0MywgMjcsIDQsIDE5OSwgODAsIDEzLCA0MywgMjcsIDQsIDIzOCwgCisgICAgNzksIDEzLCA0MywgMjcsIDQsIDIwNiwgODgsIDEzLCA0MywgMjcsIDQsIDIyOCwgNDEsIDEzLCA0MywgMjcsIDQsIDIyNywgCisgICAgNTQsIDEzLCA0MywgMjcsIDQsIDIyNSwgODcsIDEzLCA0MywgMjcsIDQsIDIyMSwgNDEsIDEzLCA0MywgMjcsIDQsIDIxOCwgCisgICAgMTMzLCAxMywgNDMsIDI3LCA0LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgNCwgMjE3LCA4MSwgMTMsIDQzLCAyNywgNCwgMjE1LCAKKyAgICAyMDQsIDEzLCA0MywgMjcsIDQsIDIxMywgOTAsIDEzLCA0MywgMjcsIDQsIDQ3LCAyMDksIDE2MywgMTMsIDQzLCAyNywgNCwgCisgICAgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDQsIDIwNiwgMjIxLCAxMywgNDMsIDI3LCA0LCAyMDMsIDIyMCwgMTMsIDQzLCAyNywgCisgICAgNCwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDQsIDI0NiwgMjM2LCAxMywgNDMsIDI3LCA0LCAyMTQsIDIzNSwgMTMsIDQzLCAKKyAgICAyNywgNCwgMjE3LCA4MywgMTMsIDQzLCAyNywgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCA0MywgMjcsIDIzOCwgMTI1LCA5OSwgCisgICAgMTMsIDQzLCAyNywgMjA2LCA4OSwgOTksIDEzLCA0MywgMjcsIDIyNywgNTUsIDk5LCAxMywgNDMsIDI3LCAyMTUsIDIzMCwgCisgICAgOTksIDEzLCA0MywgMjcsIDIxMywgOTEsIDk5LCAxMywgNDMsIDI3LCAyMTUsIDIwNSwgOTksIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICAyNTEsIDExMiwgMTMsIDQzLCAyNywgMzksIDYsIDI0OCwgMjA4LCAxMywgNDMsIDI3LCAzOSwgNiwgMjM2LCA2MCwgMTMsIAorICAgIDQzLCAyNywgMzksIDYsIDI0MSwgMTM2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjM4LCAxMjQsIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICAxOTksIDgwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjM4LCA3OSwgMTMsIDQzLCAyNywgMzksIDYsIDIwNiwgODgsIDEzLCA0MywgCisgICAgMjcsIDM5LCA2LCAyMjgsIDQxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjI3LCA1NCwgMTMsIDQzLCAyNywgMzksIDYsIDIyNSwgCisgICAgODcsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjEsIDQxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjE4LCAxMzMsIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgMzksIDYsIDIxNywgODEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTUsIDIwNCwgCisgICAgMTMsIDQzLCAyNywgMzksIDYsIDIxMywgOTAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDYsIDg5LCA5OSwgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCAzOSwgNiwgMjA2LCAyMjEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDMsIAorICAgIDIyMCwgMTMsIDQzLCAyNywgMzksIDYsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCAzOSwgNiwgMjQ2LCAyMzYsIDEzLCA0MywgCisgICAgMjcsIDM5LCA2LCAyMTQsIDIzNSwgMTMsIDQzLCAyNywgMzksIDYsIDIxNywgODMsIDEzLCA0MywgMjcsIDM5LCAyMjAsIAorICAgIDE1MiwgMTMsIDQzLCAyNywgMzksIDQsIDI1MSwgMTEyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQ4LCAyMDgsIDEzLCA0MywgCisgICAgMjcsIDM5LCA0LCAyMzYsIDYwLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQxLCAxMzYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzgsIAorICAgIDEyNCwgMTMsIDQzLCAyNywgMzksIDQsIDE5OSwgODAsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzgsIDc5LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNCwgMjA2LCA4OCwgMTMsIDQzLCAyNywgMzksIDQsIDIyOCwgNDEsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjcsIDU0LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjI1LCA4NywgMTMsIDQzLCAyNywgMzksIDQsIDIyMSwgNDEsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyMTgsIDEzMywgMTMsIDQzLCAyNywgMzksIDQsIDIwMCwgMTY5LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE3LCA4MSwgMTMsIAorICAgIDQzLCAyNywgMzksIDQsIDIxNSwgMjA0LCAxMywgNDMsIDI3LCAzOSwgNCwgMjEzLCA5MCwgMTMsIDQzLCAyNywgMzksIDQsIAorICAgIDQ3LCAyMDksIDE2MywgMTMsIDQzLCAyNywgMzksIDQsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjA2LCAyMjEsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMDMsIDIyMCwgMTMsIDQzLCAyNywgMzksIDQsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjQ2LCAyMzYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTQsIDIzNSwgMTMsIDQzLCAyNywgMzksIDQsIDIxNywgODMsIDEzLCAKKyAgICA0MywgMjcsIDM5LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDQzLCAyNywgMzksIDIzOCwgMTI1LCA5OSwgMTMsIDQzLCAyNywgCisgICAgMzksIDIwNiwgODksIDk5LCAxMywgNDMsIDI3LCAzOSwgMjI3LCA1NSwgOTksIDEzLCA0MywgMjcsIDM5LCAyMTUsIDIzMCwgCisgICAgOTksIDEzLCA0MywgMjcsIDM5LCAyMTMsIDkxLCA5OSwgMTMsIDQzLCAyNywgMzksIDIxNSwgMjA1LCA5OSwgMTMsIDI3LCA2LCAKKyAgICAyNDEsIDQyLCAxMywgMjcsIDQsIDI0MSwgNDIsIDEzLCAyNywgMTcsIDE5OSwgODEsIDEzLCAyNywgMTcsIDEwMiwgMTMsIAorICAgIDI3LCAxNywgMTA1LCAxMywgMjcsIDE3LCAxNDcsIDEzLCAyNywgMTcsIDE0OSwgMTMsIDI3LCAxNywgMTY0LCAxMywgMjcsIAorICAgIDE3LCAxODcsIDEzLCAyNywgMTcsIDIxMCwgMTM1LCAxMywgMjcsIDE3LCAxOTIsIDEzLCAyNywgMTcsIDIxOSwgMTEzLCAxMywgCisgICAgMTc1LCAxNywgMTk5LCA4MSwgMTMsIDE3NSwgMTcsIDEwMiwgMTMsIDE3NSwgMTcsIDEwNSwgMTMsIDE3NSwgMTcsIDE0NywgCisgICAgMTMsIDE3NSwgMTcsIDE0OSwgMTMsIDE3NSwgMTcsIDE2NCwgMTMsIDE3NSwgMTcsIDE4NywgMTMsIDE3NSwgMTcsIDIxMCwgCisgICAgMTM1LCAxMywgMTc1LCAxNywgMTkyLCAxMywgMTc1LCAxNywgMjE5LCAxMTMsIDEzLCA0MywgMTcsIDE5OSwgODEsIDEzLCAKKyAgICA0MywgMTcsIDEwMiwgMTMsIDQzLCAxNywgMTA1LCAxMywgNDMsIDE3LCAxNDcsIDEzLCA0MywgMTcsIDE0OSwgMTMsIDQzLCAKKyAgICAxNywgMTY0LCAxMywgNDMsIDE3LCAxODcsIDEzLCA0MywgMTcsIDIxMCwgMTM1LCAxMywgNDMsIDE3LCAxOTIsIDEzLCA0MywgCisgICAgMTcsIDIxOSwgMTEzLCAxMywgNDMsIDI3LCAxNywgMTk5LCA4MSwgMTMsIDQzLCAyNywgMTcsIDEwMiwgMTMsIDQzLCAyNywgCisgICAgMTcsIDEwNSwgMTMsIDQzLCAyNywgMTcsIDE0NywgMTMsIDQzLCAyNywgMTcsIDE0OSwgMTMsIDQzLCAyNywgMTcsIDE2NCwgCisgICAgMTMsIDQzLCAyNywgMTcsIDE4NywgMTMsIDQzLCAyNywgMTcsIDIxMCwgMTM1LCAxMywgNDMsIDI3LCAxNywgMTkyLCAxMywgCisgICAgNDMsIDI3LCAxNywgMjE5LCAxMTMsIDEzLCAyMjEsIDkzLCAxNywgMTk5LCA4MSwgMTMsIDIyMSwgOTMsIDE3LCAxMDIsIDEzLCAKKyAgICAyMjEsIDkzLCAxNywgMTA1LCAxMywgMjIxLCA5MywgMTcsIDE0NywgMTMsIDIyMSwgOTMsIDE3LCAxNDksIDEzLCAyMjEsIAorICAgIDkzLCAxNywgMTY0LCAxMywgMjIxLCA5MywgMTcsIDE4NywgMTMsIDIyMSwgOTMsIDE3LCAyMTAsIDEzNSwgMTMsIDIyMSwgCisgICAgOTMsIDE3LCAxOTIsIDEzLCAyMjEsIDkzLCAxNywgMjE5LCAxMTMsIDIzLCAxMzEsIDIyOCwgMTAzLCAyMywgMjM0LCAxOTYsIAorICAgIDIyOCwgMTAzLCAyMywgMjM0LCAxOTIsIDIyOCwgMTAzLCAyMywgMjM0LCAxODEsIDIyOCwgMTAzLCAyMywgMjM0LCAxODUsIAorICAgIDIyOCwgMTAzLCAyMywgMjM0LCAxOTgsIDIyOCwgMTAzLCAyMywgMTMxLCAxMjQsIDI0OCwgMjE5LCAyMywgMjM0LCAxOTYsIAorICAgIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMjEzLCAKKyAgICAyMjAsIDIyNiwgOTEsIDIzLCAxMzEsIDEyNCwgMjQyLCAyMDAsIDIzLCAxMzEsIDEyNCwgMjM0LCA1MCwgMjMsIDEzMSwgCisgICAgMTI0LCAyMzQsIDUxLCAyMjQsIDU5LCAyMywgMjM0LCAxOTYsIDEyNCwgMjM0LCA1MiwgMjMsIDEzMSwgMTI0LCAyMjEsIAorICAgIDIwNCwgMjMsIDIzNCwgMTk2LCAxMjQsIDIyMSwgMjA0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEyNCwgMTAxLCAyMTMsIDIyMCwgMjI2LCA5MCwgMjMsIDEzMSwgMTI0LCAxMDEsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgCisgICAgMTE1LCAxMDEsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgMjM0LCA1MSwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MywgNTcsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQzLCA1OCwgMTAxLCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDI0MiwgMjAwLCAyMywgCisgICAgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjM0LCA1MCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MiwgMjMxLCAyMywgMjM0LCAKKyAgICAxOTYsIDEyNCwgMTAxLCAyNDIsIDIzMSwgMjMsIDEzMSwgMTAxLCAyNDgsIDIyMCwgMTE5LCAyMjgsIDEwMywgMjMsIDEzMSwgCisgICAgMTI0LCAyNDgsIDIyMCwgMTE5LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTI0LCAxMDEsIDIwNiwgMzQsIDIzLCAyMzQsIDE5NiwgCisgICAgMTI0LCAxMDEsIDIwNiwgMzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMDgsIDY4LCAxNTMsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMjQsIDEwMSwgMjQ4LCAyMjAsIDE1MywgMjA4LCA2NywgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjQ4LCAyMTksIDIzLCAKKyAgICAxMzEsIDEyNCwgMTAxLCAyMzQsIDUxLCAyMDgsIDIwMiwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMTUsIDEwMSwgCisgICAgMjM0LCA1MSwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMTUsIDEwMSwgMjM0LCA1MSwgMTUzLCAyNDMsIDU3LCAKKyAgICAyMywgMTMxLCAxMjQsIDIzNCwgNTEsIDEwMSwgMTE1LCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDEwMSwgMTE1LCAKKyAgICAyMDgsIDIwMiwgMTUzLCAyMzYsIDIzMywgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjQyLCAyMDAsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAxNTMsIDI0NiwgMTU0LCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyMzMsIDE4NSwgMjMsIDEzMSwgMTI0LCAxMDEsIAorICAgIDE1MywgMjM0LCA1MCwgMjMsIDEzMSwgMTUzLCAyNDgsIDIwNiwgMTI0LCAxMDEsIDIwOCwgNjcsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDMsIDU4LCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTUzLCAyMDksIDE3NSwgCisgICAgMjQzLCA1NywgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDE1MywgMjA5LCAxNzUsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMDEsIDE1MywgMjMzLCAxODYsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMzMsIDE4NiwgMTAxLCAyMDMsIAorICAgIDIyOCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDIzNCwgNTEsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDIsIDIzMiwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDE1MywgMjM2LCAyMzMsIAorICAgIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyNDIsIDIwMSwgMTUzLCAyMzYsIDIzMywgMjMsIDEzMSwgMTAxLCAxNTMsIAorICAgIDI0MiwgMjAxLCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAyMDEsIDEwMSwgMjAzLCAyMjgsIDIzLCAKKyAgICAxMzEsIDEwMSwgMTUzLCA0NCwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTAxLCAxNTMsIDQ0LCAxMjQsIDIzNCwgNTAsIAorICAgIDIzLCAxMzEsIDEyNCwgMTUzLCAyNTEsIDY5LCAyMTYsIDI1NSwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIAorICAgIDI1MSwgNjksIDIyOCwgMTE4LCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgNDQsIDEwMSwgMjAzLCAyMjgsIAorICAgIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI0MywgNTgsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI1MSwgCisgICAgNjksIDIxNiwgMjU0LCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNTEsIDY4LCAyMywgMTMxLCAxMDEsIDE1MywgMjUxLCAKKyAgICA2OSwgMjE2LCAyNTUsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEwMSwgMTUzLCAyNTEsIDY5LCAyMTYsIDI1NSwgMTI0LCAKKyAgICAyNDIsIDIzMSwgMjMsIDEzMSwgMTAxLCAxNTMsIDI1MSwgNjksIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAKKyAgICAyMzMsIDE4NiwgMTAxLCAyMzQsIDUwLCAyMywgMjM0LCAxODcsIDIzNiwgMjI5LCAyMzcsIDgxLCAyMywgMjM0LCAxODcsIAorICAgIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCA4MiwgMjM0LCA1MCwgCisgICAgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCA4MiwgMjQzLCA1NywgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCAKKyAgICA4MiwgMjQzLCA1OCwgMjA4LCAyMDksIDIzLCAyMzQsIDE5NCwgMjM2LCAyMjksIDIzNywgODIsIDI0MywgNTcsIDIzLCAxMzEsIAorICAgIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDMsIDU4LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg1LCAyMzYsIDIyOSwgMjM3LCA4MiwgCisgICAgMjQzLCA1NywgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTg3LCAyMzQsIAorICAgIDExOCwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAKKyAgICAyMDIsIDIzNiwgMjI5LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzQsIDExOCwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAKKyAgICAyMDIsIDIzNiwgMjI5LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjQ4LCAKKyAgICAyMTksIDIzLCAyMzQsIDE4NywgMjM0LCAxMTgsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyNDgsIDIxOSwgMjMsIAorICAgIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTkyLCAyMzcsIAorICAgIDYxLCAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTkyLCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjE3LCA1MywgCisgICAgMjMsIDIzNCwgMTg1LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjE3LCA1MywgMjMsIDIzNCwgMTgxLCAyMzcsIDYxLCAKKyAgICAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjM0LCA1MCwgMjMsIAorICAgIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjM0LCA1MSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgCisgICAgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjM0LCA1MSwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIAorICAgIDE4NiwgMjMsIDIzNCwgMTg3LCAyNDgsIDIwNiwgMjE2LCAxNzcsIDIzNywgMTgxLCAyMywgMjM0LCAxODcsIDIzNCwgMTE3LCAKKyAgICAyMywgMjM0LCAxODcsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NywgMjM0LCAxMTgsIDE1MywgMjA5LCAxNzQsIDIzLCAKKyAgICAyMzQsIDE4NywgMTUzLCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAxNTMsIDIzNiwgMjMzLCAyMywgMjM0LCAxODcsIDIwOCwgCisgICAgMjEwLCAxMjQsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NywgMjA4LCAyMTAsIDI0NywgNTUsIDIzLCAyMzQsIDE4NywgCisgICAgMjA4LCAyMTAsIDI0NywgNTYsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NywgMjA4LCAyMTAsIDI0NywgNTYsIDE1MywgCisgICAgMjA5LCAxNzUsIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDIwOCwgMjEwLCAyMjQsIDE0NywgMjMsIDIzNCwgMTkzLCAyMywgCisgICAgMjM0LCAxOTQsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE5NCwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE5NCwgCisgICAgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTgzLCAyNDIsIDE5NywgMjMsIDIzNCwgMTgyLCAyMywgMjM0LCAxOTIsIDIxNywgCisgICAgNTMsIDIzLCAyMzQsIDE5MSwgMjMsIDIzNCwgMTkyLCAxNzYsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE5MiwgMTUzLCAKKyAgICAyMDksIDE3NCwgMjMsIDIzNCwgMTkyLCAxNzYsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxOTIsIDIxOCwgMjQyLCAKKyAgICAyMDYsIDM0LCAyMywgMjM0LCAxOTIsIDE3NiwgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTkyLCAxNTMsIDIzNiwgMjMzLCAKKyAgICAyMywgMjM0LCAxOTAsIDIxNywgNTMsIDIzLCAyMzQsIDE4OSwgMjMsIDIzNCwgMTk1LCAyMywgMjM0LCAxODAsIDIzLCAyMzQsIAorICAgIDE4MSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTgxLCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTgxLCAxNTMsIAorICAgIDIzNiwgMjMzLCAyMywgMjM0LCAxODUsIDIxNywgNTMsIDIzLCAyMzQsIDE4NSwgMTc2LCAxNTMsIDIzNiwgMjMzLCAyMywgCisgICAgMjM0LCAxODQsIDIzLCAyMzQsIDE4NSwgMjA5LCA1MywgMjMsIDIzNCwgMTg1LCAxNzYsIDE1MywgMjA5LCAxNzQsIDIzLCAKKyAgICAyMzQsIDE4NSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg1LCAxNzYsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAKKyAgICAxODUsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxODUsIDE1MywgMjA5LCAxNzUsIDIwNSwgMTQwLCAyMjgsIDEwMywgCisgICAgMjMsIDIzNCwgMTg1LCAxNTMsIDI0OCwgMjA2LCAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE5NywgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE5NiwgMTI0LCAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE4NSwgMTI0LCAxMDEsIAorICAgIDIxMywgMjYsIDIzLCAyMzQsIDE5OCwgMTI0LCAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE4NSwgMjI0LCAxNDcsIDIzLCAKKyAgICAxMzEsIDEyNCwgMTAxLCAyMTMsIDI3LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxMDEsIDIxMywgMjcsIDI0MywgNTcsIAorICAgIDIzLCAyMzQsIDE4NSwgMTI0LCAxMDEsIDIxMywgMjcsIDI0MywgNTcsIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMzksIDE2NywgCisgICAgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNywgMjEzLCAyMiwgMjA4LCA2NywgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNywgMjEzLCAKKyAgICAyMiwgMjQyLCAxODcsIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjcsIDIxNywgNywgMjQ2LCAxNTQsIDIzLCAxMzEsIDIyNCwgCisgICAgMTQ4LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMjI0LCAxNDgsIDIwMywgMjI4LCAyMywgMjM0LCAxOTYsIAorICAgIDIyNCwgMTQ4LCAyMDMsIDIyOCwgMjMsIDIzNCwgMTgxLCAyMjQsIDE0OCwgMjAzLCAyMjgsIDIzLCAyMzQsIDE5OCwgMjI0LCAKKyAgICAxNDgsIDIwMywgMjI4LCAyMywgMTMxLCAyMjQsIDE0OCwgMjEzLCAyMjAsIDIyNiwgOTEsIDIzLCAxMzEsIDIyNCwgMTQ4LCAKKyAgICAyNDgsIDIxOSwgMjMsIDEzMSwgMjI0LCAxNDgsIDIwNSwgMTQxLCAyMDYsIDM0LCAyMywgMTMxLCAyMjQsIDE0OCwgMjA2LCAKKyAgICAzNCwgMjMsIDIzNCwgMTg1LCAyMjQsIDE0OCwgMjA2LCAzNCwgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNCwgMjA2LCAzNCwgMjMsIAorICAgIDIzNCwgMTg1LCAyMjQsIDE0OCwgMTI0LCAyMDYsIDM0LCAyMywgMjM0LCAxOTgsIDIyNCwgMTQ4LCAxMjQsIDE1MywgMTI0LCAKKyAgICAxNTMsIDIxNiwgMjU0LCAyMywgMjM0LCAxOTgsIDIyNCwgMTQ4LCAxMjQsIDE1MywgMTI0LCAyMDYsIDM0LCAyMywgMTMxLCAKKyAgICAyMjQsIDE0OCwgMjI4LCAxMDMsIDIzLCAyMzQsIDE5NiwgMjI0LCAxNDgsIDIyOCwgMTAzLCAyMywgMjM0LCAxODUsIDIyNCwgCisgICAgMTQ4LCAyMjgsIDEwMywgMjMsIDIzNCwgMTk4LCAyMjQsIDE0OCwgMjI4LCAxMDMsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMjQsIAorICAgIDE0NywgMjMsIDIzNCwgMTk2LCAxMjQsIDEwMSwgMjI0LCAxNDcsIDIzLCAyMzQsIDE4NSwgMTI0LCAxMDEsIDIyNCwgMTQ3LCAKKyAgICAyMywgMjM0LCAxODUsIDIxMywgMjYsIDIzLCAyMzQsIDE5OCwgMTI0LCAxMDEsIDIyNCwgMTQ3LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQyLCAyMzUsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDEyNCwgMTAxLCAyNDIsIDIzNSwgMjI0LCAxNDcsIDIzLCAKKyAgICAxMzEsIDIxMywgMjcsIDIzOSwgMTY3LCAyMywgMjM0LCAxODUsIDIxMywgMjcsIDEyNywgMTI0LCAxNTMsIDIzMywgMTg3LCAKKyAgICAyMjEsIDIwNCwgMjMsIDIzNCwgMTk4LCAyMTMsIDI3LCAxMjcsIDEwMSwgMTUzLCAxMjQsIDI0MiwgMjM0LCAyMywgMTMxLCAKKyAgICAyMTMsIDI3LCAyMDMsIDIyOCwgMjMsIDEzMSwgMjEzLCAyNywgMjEzLCAyMjAsIDIyNiwgOTEsIDIzLCAxMzEsIDIxMywgMjcsIAorICAgIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODEsIDIxMywgMjcsIDIyNCwgCisgICAgMTQ3LCAyMywgMjM0LCAxOTgsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMTMxLCAyMTMsIDI3LCAyMjEsIDIwNCwgMjMsIAorICAgIDEzMSwgMjEzLCAyNywgMTAxLCAyNDMsIDU3LCAyMywgMTMxLCAyMTMsIDI3LCAxMDEsIDIxMywgMjIwLCAyMjYsIDkwLCAyMywgCisgICAgMTMxLCAyMTMsIDI3LCAyMjgsIDEwMywgMjMsIDEzMSwgMjEzLCAyNywgMjA2LCAzNCwgMjMsIDIzNCwgMTgzLCAyMTMsIDI3LCAKKyAgICAyMDYsIDM0LCAyMywgMTMxLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDEyNCwgMjEzLCAyNywgCisgICAgMjI0LCAxNDcsIDIzLCAyMzQsIDE5MCwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE3LCA3OCwgMjMsIDIzNCwgMTgzLCAKKyAgICAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTYsIDI1NCwgMjMsIDIzNCwgMTgzLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAKKyAgICAyMjgsIDExNywgMjMsIDIzNCwgMTgzLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMDMsIDI1MiwgMjMsIDIzNCwgMTkyLCAKKyAgICAxMjQsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODUsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIAorICAgIDE5OCwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE2LCAyNTQsIDIzLCAyMzQsIDE5OCwgMTI0LCAyMTMsIDI3LCAyMjQsIAorICAgIDE0NywgMjMsIDEzMSwgMTAxLCAyMzksIDE2NywgMjMsIDIzNCwgMTg1LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTAxLCAyMDMsIAorICAgIDIyOCwgMjMsIDIzNCwgMTk2LCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMDEsIDIxMywgMjIwLCAyMjYsIDkxLCAyMywgCisgICAgMTMxLCAxMDEsIDExNSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTgzLCAxMDEsIDIwNiwgMzQsIDIzLCAxMzEsIDEwMSwgCisgICAgMTUzLCAyMjQsIDE0NywgMjMsIDEzMSwgMTAxLCAyMjQsIDE0NywgMjMsIDEzMSwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0NywgCisgICAgMjMsIDIzNCwgMTk2LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTAsIDEwMSwgMjEzLCAyNywgMjI0LCAKKyAgICAxNDgsIDIxNywgNzgsIDIzLCAyMzQsIDE5MiwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTg1LCAxMDEsIAorICAgIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTgsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNiwgMjU0LCAyMywgCisgICAgMjM0LCAxOTgsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDIyOCwgMTE3LCAyMywgMjM0LCAxOTgsIDEwMSwgMjEzLCAyNywgCisgICAgMjI0LCAxNDcsIDIzLCAyMzQsIDE5NiwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQ4LCAyMTksIDIzLCAyMzQsIDE5NCwgCisgICAgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1NywgMjMsIDIzNCwgMTk0LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAKKyAgICAyNDMsIDU4LCAyMDksIDE3NCwgMjMsIDIzNCwgMTgzLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU4LCAyMTYsIAorICAgIDI1NCwgMjMsIDIzNCwgMTgzLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU4LCAyMjgsIDExNywgMjMsIDIzNCwgCisgICAgMTgzLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU3LCAyMywgMjM0LCAxODUsIDEyNCwgMjM0LCA1MCwgMjMsIAorICAgIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODUsIDEyNCwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxNTMsIDIwOSwgMTc1LCAxNTMsIDI0MSwgNzAsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgMTUzLCAyNDMsIDU3LCAKKyAgICAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIDE1MywgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgCisgICAgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAyNDgsIDk2LCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTI0LCAxNTMsIDIwOSwgMTc1LCAxMjQsIDIzNCwgNTIsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMzYsIDIzNCwgMTI0LCAyMDgsIAorICAgIDY3LCAyMywgMTMxLCAxMjQsIDE1MywgMjM2LCAyMzQsIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTUzLCAxMTcsIAorICAgIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIDE5NywgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgMTkwLCAxNTMsIDIyOCwgNzMsIAorICAgIDIzLCAyMzQsIDE5NCwgMTI0LCAxNTMsIDI0MiwgMTkwLCAxNTMsIDIyOCwgNzMsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIAorICAgIDE5MCwgMTUzLCAyMDMsIDI1MiwgMjMsIDEzMSwgMTI0LCAxNTMsIDI0NiwgMTU1LCAyMywgMjM0LCAxOTIsIDEyNCwgMjA2LCAKKyAgICAzNCwgMjMsIDIzNCwgMTkyLCAxMjQsIDE1MywgMjE3LCA1MywgMjMsIDIzNCwgMTg1LCAxMjQsIDE1MywgMjE3LCA1MywgMjMsIAorICAgIDIzNCwgMTg1LCAxMjQsIDE1MywgMjI1LCA3MCwgMjMsIDIzNCwgMTg1LCAxMjQsIDIwNiwgMzQsIDIzLCAyMzQsIDE4NSwgCisgICAgMTI0LCAxNTMsIDIwOSwgNTMsIDIzLCAyMzQsIDE5OCwgMTI0LCAxNTMsIDIxNiwgMjU0LCAyMywgMjM0LCAxOTgsIDEyNCwgCisgICAgMTUzLCAyMjgsIDExNywgMjMsIDIzNCwgMTk4LCAxMjQsIDIwNiwgMzQsIDIzLCAxMzEsIDIwNiwgMzQsIDIzLCAxMzEsIAorICAgIDE1MywgMjM0LCAxMTcsIDIzLCAxMzEsIDE1MywgMjA5LCAxNzUsIDI0MSwgNzAsIDIzLCAxMzEsIDE1MywgMjA5LCAxNzUsIAorICAgIDI0MywgNTcsIDIzLCAxMzEsIDE1MywgMjA5LCAxNzUsIDI0OCwgMjE5LCAyMywgMTMxLCAxNTMsIDIzNiwgMjMzLCAyMywgCisgICAgMTMxLCAxNTMsIDI0OCwgMjA2LCAxMjQsIDIyMSwgMjA0LCAyMywgMTMxLCAxNTMsIDI0OCwgMjA2LCAxMDEsIDIxMywgMjYsIAorICAgIDIzLCAxMzEsIDE1MywgMjQ4LCAyMDYsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAxMjAsIAorICAgIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMTE5LCAxMjAsIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDEyNiwgCisgICAgMjM3LCA4MSwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMjM2LCAyMjksIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMTE5LCAKKyAgICAyMzYsIDIyOSwgMjEzLCAyMjAsIDIyNiwgOTAsIDIzLCAyMzQsIDE4OCwgMjMsIDEzMSwgMjM0LCAxMTcsIDIzLCAyMDUsIAorICAgIDE0MiwgMjA5LCAxMzgsIDIzLCAyMDUsIDE0MiwgMjIxLCAyMCwgMjMsIDIwNSwgMTQyLCAyNDgsIDIwNSwgMjMsIDIzNSwgCisgICAgNzgsIDIwOSwgMTM4LCAyMywgMjM1LCA3OCwgMjIxLCAyMCwgMjMsIDIzNSwgNzgsIDI0OCwgMjA1LCAyMywgMjA4LCA1MiwgCisgICAgMjA5LCAxMzgsIDIzLCAyMDgsIDUyLCAyMjEsIDIwLCAyMywgMjA4LCA1MiwgMjQ4LCAyMDUsIDIzLCAyNDgsIDQ0LCAyMDksIAorICAgIDEzOCwgMjMsIDI0OCwgNDQsIDIyMSwgMjAsIDIzLCAyNDgsIDQ0LCAyNDgsIDIwNSwgMjMsIDIxMiwgMTczLCAyMDksIDEzOCwgCisgICAgMjMsIDIxMiwgMTczLCAyMjEsIDIwLCAyMywgMjEyLCAxNzMsIDI0OCwgMjA1LCAyMywgMjA3LCAyMDMsIDIwNywgMTE2LCAKKyAgICAyMywgMjA3LCAyMDMsIDI0OCwgMjA1LCAyMywgMjA4LCAxODksIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjA4LCAxODksIDQsIAorICAgIDIwOSwgMTM4LCAyMywgMjA4LCAxODksIDIyNSwgNzEsIDIyMSwgMjAsIDIzLCAyMDgsIDE4OSwgNCwgMjIxLCAyMCwgMjMsIAorICAgIDIwOCwgMTg5LCAyMTAsIDE1MCwgMjMsIDIzNywgMzUsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjM3LCAzNSwgNCwgMjA5LCAKKyAgICAxMzgsIDIzLCAyMzcsIDM1LCAyMjUsIDcxLCAyMjEsIDIwLCAyMywgMjM3LCAzNSwgNCwgMjIxLCAyMCwgMjMsIDIzNywgMzUsIAorICAgIDIxMCwgMTUwLCAyMywgMjA4LCAxODksIDIzNywgMzUsIDI1MSwgMTA2LCAyMywgMjIxLCA1MSwgMTE1LCAxMjcsIDIyNSwgCisgICAgNzAsIDIzLCAyMjEsIDUxLCAxMTUsIDEyNywgMjA5LCA1MywgMjMsIDIyMSwgNTEsIDExNSwgMjEwLCAxNTAsIDIzLCAyMjEsIAorICAgIDUxLCAxMjcsIDIxMCwgMTUwLCAyMywgMjIxLCA1MSwgMTE1LCAxMjcsIDI1MSwgMTA3LCAyMjUsIDcwLCAyMywgMjIxLCA1MSwgCisgICAgMTE1LCAxMjcsIDI1MSwgMTA3LCAyMDksIDUzLCAyMywgMjIxLCA1MSwgMjA5LCAxNzUsIDIwNSwgMTg2LCAyMDksIDE3NSwgCisgICAgMjExLCAyMTYsIDIzLCAyMjEsIDUwLCAyMzcsIDg3LCAyNDMsIDQ3LCAyMywgMjIxLCA1MiwgMjM3LCA4NywgMjQzLCA0NywgCisgICAgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwOCwgNjgsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjA4LCA2OCwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAKKyAgICAyMDgsIDY4LCAyMjUsIDY4LCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgCisgICAgNTMsIDIwOCwgNjcsIDIzLCAyMjEsIDUwLCA1MywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCA1MywgMjUxLCAKKyAgICAxMDYsIDIzLCAyMjEsIDUwLCA1MywgMjUxLCAxMDcsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgMjQyLCAyMzQsIAorICAgIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyMDgsIDY4LCAyMjEsIDU0LCAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjAwLCAyMjAsIAorICAgIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyNTEsIDEwNiwgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDI1MSwgMTA3LCAKKyAgICAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDI0OCwgMjIzLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQ4LCAyMjMsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDgsIDIyMywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MywgMTYsIDIwOSwgNTMsIAorICAgIDIzLCAyMjEsIDUwLCAyNDMsIDE2LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQzLCAxNiwgMjI1LCA3MCwgMjMsIDIyMSwgCisgICAgNTAsIDI0MywgMTYsIDIxMiwgMjI2LCAyMywgMjIxLCA1MCwgMjQ3LCA3LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQ3LCA3LCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQ3LCA3LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMTAwLCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MCwgMTAwLCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMTAwLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMTk5LCAyNywgCisgICAgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDE5OSwgMjcsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAxOTksIDI3LCAyMjUsIDcwLCAKKyAgICAyMywgMjIxLCA1MCwgMjE2LCA2OSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIxNiwgNjksIDIyMiwgNjUsIDIzLCAyMjEsIAorICAgIDUwLCAyMTYsIDY5LCAyMjUsIDcwLCAyMywgMjA1LCAxMTIsIDIxMiwgMjI0LCAyMDksIDEzOCwgMjMsIDIwNSwgMTEyLCAKKyAgICAyMTIsIDIyNCwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjQsIDI1MSwgMTA2LCAyMywgMjA1LCAxMTIsIDIxMiwgCisgICAgMjI1LCAyMDksIDEzOCwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNSwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjUsIAorICAgIDI1MSwgMTA2LCAyMywgMjA1LCAxMTIsIDIxMCwgOTUsIDIzLCAyMDUsIDExMiwgMjUwLCAyMTUsIDIwOCwgMjE4LCAyMDksIAorICAgIDEzOCwgMjMsIDIwNSwgMTEyLCAyNTAsIDIxNSwgMjA4LCAyMTgsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTIsIDI1MCwgMjE1LCAKKyAgICAyMDgsIDIxOCwgMjA1LCA4MiwgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAyMjUsIDY4LCAKKyAgICAyMywgMjIxLCA1MywgMjA1LCAxMzYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyMDUsIDEzNiwgMjIyLCA2NSwgMjMsIDIyMSwgCisgICAgNTMsIDIwNSwgMTM2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgMjA1LCAxMzYsIDIyNSwgNjgsIDIzLCAyMjEsIDUzLCAyNDgsIAorICAgIDIwNiwgMjUwLCAxMTYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjUwLCAxMTYsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUzLCAyNDgsIDIwNiwgMjUwLCAxMTYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjUwLCAxMTYsIAorICAgIDIyNSwgNjgsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjA1LCAxMzYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgCisgICAgMjA1LCAxMzYsIDIyMiwgNjUsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjA1LCAxMzYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAKKyAgICAyNDgsIDIwNiwgMjA1LCAxMzYsIDIyNSwgNjgsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjIsIDY1LCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIyNSwgCisgICAgNzAsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjI1LCA2OCwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDAsIAorICAgIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTIsIDUzLCAyMDgsIDY3LCAyMywgMjIxLCA1MiwgNTMsIDIwMCwgMjIwLCAyMzcsIAorICAgIDM4LCAyMywgMjIxLCA1MiwgNTMsIDI1MSwgMTA2LCAyMywgMjIxLCA1MiwgNTMsIDI1MSwgMTA3LCAyMDAsIDIyMCwgMjM3LCAKKyAgICAzOCwgMjMsIDIyMSwgNTIsIDI0MiwgMjM0LCAyMywgMjIxLCA1MiwgMjA1LCA4MywgMjA4LCA2OCwgMjIxLCA1NCwgMjMsIAorICAgIDIyMSwgNTIsIDIwNSwgODMsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MiwgMjA1LCA4MywgMjUxLCAxMDcsIDIyMSwgCisgICAgNTQsIDIzLCAyMjEsIDUyLCAyMDUsIDgzLCAyNTEsIDEwNywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUyLCAyNDgsIAorICAgIDIyMiwgMjMsIDIyMSwgNTIsIDI0MywgMTYsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyNDMsIDE2LCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MiwgMjQzLCAxNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDI0NywgNiwgMjMsIDIyMSwgNTIsIDEwMCwgMjA5LCAKKyAgICA1MywgMjMsIDIyMSwgNTIsIDEwMCwgMjIyLCA2NSwgMjMsIDIyMSwgNTIsIDEwMCwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIAorICAgIDE5OSwgMjcsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAxOTksIDI3LCAyMjIsIDY1LCAyMywgMjIxLCA1MiwgMTk5LCAyNywgCisgICAgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDIxNiwgNjksIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyMTYsIDY5LCAyMjIsIDY1LCAKKyAgICAyMywgMjIxLCA1MiwgMjE2LCA2OSwgMjI1LCA3MCwgMjMsIDIwNSwgMTEzLCAyMTIsIDIyNSwgMjA5LCAxMzgsIDIzLCAyMDUsIAorICAgIDExMywgMjEyLCAyMjUsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTMsIDIxMiwgMjI1LCAyNTEsIDEwNiwgMjMsIDIwNSwgMTEzLCAKKyAgICAyMTIsIDIyNCwgMjA5LCAxMzgsIDIzLCAyMDUsIDExMywgMjEyLCAyMjQsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTMsIDIxMiwgCisgICAgMjI0LCAyNTEsIDEwNiwgMjMsIDIwNSwgMTEzLCAyMTAsIDk1LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIxNCwgODgsIAorICAgIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjE0LCA4OCwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAKKyAgICAyMTQsIDg4LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIxNCwgODgsIDIyNSwgNjgsIDIzLCAyMjEsIDUwLCAKKyAgICAyNDIsIDE5MCwgMjM0LCAyMTIsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAyMTIsIDIyMiwgNjUsIAorICAgIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAyMTIsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAKKyAgICAyMTIsIDIyNSwgNjgsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjA2LCA0MCwgMjQ2LCAxNTYsIDIwOSwgNTMsIDIzLCAyMjEsIAorICAgIDUwLCAyNDIsIDE5MCwgMjA2LCA0MCwgMjQ2LCAxNTYsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMDksIDUzLCAKKyAgICAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIyNSwgNzAsIDIzLCAyMjEsIAorICAgIDUwLCAyMjQsIDc1LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjI0LCA3NSwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIyNCwgCisgICAgNzUsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyMjQsIDc1LCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIAorICAgIDI0MiwgMTkwLCA1MywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCA1MywgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCA1MywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCAKKyAgICAyMDUsIDgzLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDIwNSwgODMsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgMjA1LCA4MywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMDYsIAorICAgIDk4LCAyMDgsIDY3LCAyMywgMjIxLCA1MCwgMjQyLCAxODgsIDI0MiwgMjM1LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQyLCAKKyAgICAxODgsIDI0MiwgMjM1LCAyMjIsIDY1LCAyMywgMjEyLCAyMjQsIDIwOSwgMTM4LCAyMywgMjEyLCAyMjQsIDIzOSwgMTc1LCAKKyAgICAyMywgMjEyLCAyMjQsIDI1MSwgMTA4LCAyMywgMjIxLCA1MCwgMjEwLCA5NSwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIAorICAgIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAKKyAgICAxMDIsIDIzLCAyMjEsIDUwLCAyMjQsIDc1LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMjEsIDUwLCAyMDEsIAorICAgIDc4LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMTIsIDIyNCwgMjA5LCAxMzksIDIzNCwgNDQsIDIzNiwgCisgICAgMjAwLCAyMDEsIDEwMiwgMjMsIDIxMiwgMjI0LCA1MywgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjEyLCAKKyAgICAyMjQsIDI1MSwgMTA3LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAKKyAgICA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIyNCwgCisgICAgNzUsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMTIsIAorICAgIDIyNCwgMjA5LCAxMzksIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjEyLCAyMjQsIDUzLCAyMzQsIDQ0LCAyNDYsIDI0MywgCisgICAgMjMsIDIxMiwgMjI0LCAyNTEsIDEwNywgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDEsIDcxLCAKKyAgICAyMTYsIDkxLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQxLCA3MSwgMjE2LCA5MSwgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTAsIDIwMSwgNzgsIDI0MSwgNzEsIDIxNiwgOTEsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCAKKyAgICA0NCwgMjQ3LCA2NSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcwLCAKKyAgICAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjQ3LCA2NSwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIAorICAgIDg1LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIAorICAgIDI0NywgNjUsIDQsIDIwNSwgODIsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcxLCAKKyAgICAyMDUsIDgyLCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjQ3LCA2NSwgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIAorICAgIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIAorICAgIDIzNCwgNDQsIDI0NywgNjUsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjQ3LCA2NSwgCisgICAgMjI1LCA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MiwgMjAxLCA3OCwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MCwgMjMsIDIxMiwgMjI1LCAyMDksIDEzOSwgMjM0LCAKKyAgICA0NCwgMjQ3LCA2NCwgMjMsIDIxMiwgMjI1LCA1MywgMjM0LCA0NCwgMjQ3LCA2NCwgMjMsIDIxMiwgMjI1LCAyNTEsIDEwNywgCisgICAgMjM0LCA0NCwgMjQ3LCA2NCwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIAorICAgIDQ0LCAyMzcsIDMyLCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgCisgICAgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjA1LCA4MywgNCwgMjA1LCAKKyAgICA4MiwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDIzNywgMzIsIDIwNSwgODMsIDIyNSwgNzEsIDIwNSwgODIsIAorICAgIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyMzcsIDMyLCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDIyNCwgCisgICAgNzUsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgCisgICAgMjM3LCAzMiwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcxLCAKKyAgICAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIzNCwgNDQsIDIzNywgMzIsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAKKyAgICAyMDEsIDc4LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcwLCAyMywgMjEyLCAyMjUsIDIwOSwgMTM5LCAyMzQsIDQ0LCAyMzcsIAorICAgIDMxLCAyMywgMjEyLCAyMjUsIDUzLCAyMzQsIDQ0LCAyMzcsIDMxLCAyMywgMjEyLCAyMjUsIDI1MSwgMTA3LCAyMzQsIDQ0LCAKKyAgICAyMzcsIDMxLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjIyLCA2NSwgCisgICAgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIyNSwgNjgsIDIzLCAyMjEsIAorICAgIDUyLCAyNDIsIDE5MCwgMjQ2LCA3NCwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyMjQsIAorICAgIDc1LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjA5LCA0MSwgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIwOSwgCisgICAgNTMsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMjUsIDcwLCAyMywgMjEyLCAyMjUsIDIwOSwgMTM4LCAyMywgMjEyLCAyMjUsIAorICAgIDIzOSwgMTc1LCAyMywgMjEyLCAyMjUsIDI1MSwgMTA2LCAyMywgMjIxLCA1MiwgMjEwLCA5NiwgMjE2LCAxMjAsIDIzLCAKKyAgICAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMjIsIDY2LCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIDE1NiwgNCwgMjM5LCAxNzUsIDIzLCAKKyAgICAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIDIyMiwgNjYsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIAorICAgIDI0NiwgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjIsIDY2LCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIAorICAgIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjIsIDY2LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIDE1NiwgCisgICAgMjM0LCA0NCwgMjAxLCAxMDMsIDIyNSwgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MCwgMjAwLCAyMjAsIDI0NiwgMTU2LCAKKyAgICAyMzYsIDIwMCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIDIzNiwgMjAwLCAyMzksIDE3NSwgCisgICAgMjMsIDIyMSwgNTIsIDIwMCwgMjIwLCAyNDYsIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIwOSwgMTM4LCAyMywgMjIxLCAKKyAgICA1MiwgMjAwLCAyMjAsIDI0NiwgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjM5LCAxNzUsIDIzLCAyMjEsIDUwLCAyMzcsIAorICAgIDg3LCAyNDYsIDE1MywgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyMzcsIDg3LCAyNDYsIDE1MywgMjM5LCAxNzUsIDIzLCAKKyAgICAyMjEsIDUyLCAyMzcsIDg3LCAyNDYsIDE1MywgMjM0LCA0NCwgMjAxLCAxMDMsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgCisgICAgMjM3LCA4NywgMjQ2LCAxNTMsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMzksIDE3NSwgMjMsIDIzOSwgOTgsIDI1MCwgMjAzLCAKKyAgICAyMDksIDUzLCAyMywgMjM5LCA5OCwgMjUwLCAyMDMsIDIyNSwgNzAsIDIzLCAyMzksIDk4LCAyMzcsIDE2MSwgMjMsIDIzOSwgCisgICAgOTgsIDIwOSwgNTYsIDIzLCAyMzksIDk4LCAyMDYsIDE1OSwgMjMsIDIzOSwgOTgsIDIxMywgMTQ3LCAyMywgMjM5LCA5OCwgCisgICAgMjA5LCAxNDQsIDIzLCAyMzksIDk4LCAyMDksIDE0NSwgMjUxLCAxMDYsIDIzLCAyMzksIDk4LCAyMzgsIDUyLCAyMTcsIDgsIAorICAgIDIwNSwgMjM0LCAyMywgMjM5LCA5OCwgMjM1LCA4OCwgMjMsIDIzNCwgMTM2LCAyMywgMjM0LCAxMzcsIDIxMywgMzEsIDIzLCAKKyAgICAyMzQsIDEzNywgMjIxLCA1MCwgMjA4LCA2NywgMjMsIDIzNCwgMTM3LCAyMjEsIDUwLCAyMDUsIDIzNywgMjMsIDIzNCwgCisgICAgMTM3LCAyMjEsIDUyLCAyMDgsIDY3LCAyMywgMjM0LCAxMzcsIDIyMSwgNTAsIDI0MiwgMTg5LCAyMywgMjM0LCAxMzcsIAorICAgIDIyMSwgNTIsIDI0MiwgMTg5LCAyMywgMjM0LCAxMzcsIDIyMSwgNTUsIDI0NiwgMTU1LCAyMywgMjM3LCAxOTAsIDI0MSwgOSwgCisgICAgMjE1LCA3MCwgMjE4LCAyMTcsIDIzNiwgMjM0LCAyMDUsIDIzNSwgMjMsIDIzNywgMTkwLCAyNDEsIDksIDIxNSwgNzAsIAorICAgIDIxOCwgMjE3LCAxMTUsIDIxNywgMzQsIDIzOSwgMTY3LCAyMywgMjM3LCAxOTAsIDI0MSwgOSwgMjE1LCA3MCwgMjE4LCAKKyAgICAyMTcsIDExNSwgMjE3LCAzNCwgMTI3LCAyMDUsIDIzNSwgMjMsIDIzOCwgMjEsIDIwOCwgNjgsIDIwMywgMjI4LCAyMywgCisgICAgMjM4LCAyMSwgMjA4LCA2OCwgMjIwLCA5LCAyMywgMjM4LCAyMSwgMjA4LCA2OCwgMjM5LCAxNjcsIDIzLCAyMzksIDE1NCwgCisgICAgMjM4LCAyMSwgMjIwLCAxMCwgMjM5LCAxNjcsIDIzLCAyMzksIDE1NCwgMjM4LCAyMSwgMTI3LCAyMjAsIDksIDIzLCAyMzksIAorICAgIDE1NCwgMjM4LCAyMSwgMTE1LCAyMjAsIDksIDIzLCAyMzksIDE1NCwgMjM4LCAyMSwgMjIwLCAxMCwgMjAzLCAyMjgsIDIzLCAKKyAgICAyMzYsIDI0NywgMjIwLCA5LCAyMywgMjM2LCAyNDcsIDI0MywgNDcsIDIzLCAyMzYsIDI0NywgMjAwLCAyMjMsIDIzLCAyMzgsIAorICAgIDE2LCAyMTcsIDUzLCAyMywgMjM4LCAxNiwgMjA4LCAxODgsIDIzLCAyMzgsIDE2LCAyNDYsIDEwOSwgMjMsIDIzOCwgMjMsIAorICAgIDI0OCwgMTM1LCAyMDksIDEzOCwgMjMsIDIzOCwgMjMsIDI0OCwgMTM1LCAyMjEsIDIwLCAyMywgMjM4LCAxNiwgMTY3LCAKKyAgICAyMTcsIDUzLCAyMywgMjM4LCAxNiwgMjAxLCAyOCwgMjE3LCA1MywgMjMsIDIzOCwgMTYsIDE2NywgMjQ2LCAxMDksIDIzLCAKKyAgICAyMzgsIDE2LCAyMDEsIDI2LCAyMjEsIDU0LCAyMywgMjM4LCAyMywgMjAxLCA5LCAyMywgMjM4LCAxNywgMjAzLCAyMjgsIAorICAgIDIzLCAyMzgsIDE3LCAyMzksIDE2NywgMjMsIDIzOCwgMTcsIDIzNywgMTgsIDIzLCAyMzgsIDE5LCAyMDgsIDY3LCAyMywgCisgICAgMjM4LCAxOSwgMjA4LCA2OCwgMjM5LCAxNzUsIDIzLCAyMzgsIDE5LCAyMDgsIDY4LCAyNTEsIDEwNiwgMjMsIDIzOCwgMjAsIAorICAgIDIwOCwgNjcsIDIzLCAyMzgsIDIwLCAyMDgsIDY4LCAyMzksIDE3NSwgMjMsIDIzOCwgMjAsIDIwOCwgNjgsIDI1MSwgMTA2LCAKKyAgICAyMywgMjM4LCAxOSwgMjQyLCAxODcsIDIzLCAyMzgsIDIwLCAyNDIsIDE4NywgMjMsIDIzOCwgMTksIDI0NiwgMTUwLCAyMywgCisgICAgMjQ3LCAyLCAyMTQsIDIxNSwgMjMsIDI0NywgMiwgMjIwLCA5LCAyMywgMjQ3LCAyLCAyMDcsIDI0OCwgMjMsIDIwNiwgMTYwLCAKKyAgICAyNDcsIDIsIDIzNCwgNTksIDIzLCAyMDYsIDE2MCwgMjQ3LCAyLCAyMjEsIDIwNCwgMjMsIDIwNiwgMTYwLCAyNDcsIDIsIAorICAgIDIyNCwgNTksIDIzLCAyMzksIDE5LCAyMywgMjE4LCAyMTcsIDIyMCwgOSwgMjMsIDIxOCwgMjE3LCAyNDMsIDQ3LCAyMywgCisgICAgMjE4LCAyMTcsIDIwMCwgMjIxLCAyMywgMjE4LCAyMTcsIDIwMSwgMjMsIDIzLCAyNTEsIDE2NywgMjQ4LCAxMjgsIDIxNiwgCisgICAgMjU0LCAyMywgMjUxLCAxNjcsIDIwNywgMjQ3LCAyMjgsIDExNywgMjMsIDI1MSwgMTY3LCAyNDgsIDEzMCwgNCwgMjEyLCAKKyAgICAyMjMsIDIzLCAyNTEsIDE2NywgMjA3LCAyNDksIDQsIDIxMiwgMjIzLCAyMywgMjQ4LCA1OSwgMjI4LCA4OSwgMjMsIDI0OCwgCisgICAgNTksIDIzOCwgNDEsIDIzLCAyMjEsIDU5LCAyNDYsIDExMCwgMjIwLCA5LCAyMywgMjIxLCA1OSwgMjQ2LCAxMTAsIDIzNiwgCisgICAgMjMzLCAyMywgMjIxLCA1OSwgMjQ2LCAxMTAsIDI0MywgNDcsIDIzLCAyMjEsIDU5LCAyMDksIDQ4LCAyMywgMjIxLCA1OSwgCisgICAgMjA5LCA0OSwgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAyMDksIDQ5LCAyMTcsIDUzLCAyMywgMjIxLCA1OSwgMjM2LCAxOTYsIAorICAgIDIzLCAyMjEsIDU5LCAyMzYsIDE5NywgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAyMzYsIDE5NywgMjE3LCA1MywgMjMsIDIyMSwgCisgICAgNTksIDE3NiwgMjQ2LCAxNTUsIDIzLCAyMjEsIDU5LCAxNzYsIDIzNiwgMjMzLCAyMywgMjIxLCA1OSwgMTc2LCAyMDAsIAorICAgIDIyMywgMjMsIDIyMSwgNTksIDE3NiwgMjE2LCAyNDcsIDIzLCAyMjEsIDU5LCAxNzYsIDIxNiwgMjQ4LCAyMDAsIDIyMywgCisgICAgMjMsIDIyMSwgNTksIDE3NiwgMjE2LCAyNDgsIDIwMCwgNTgsIDIzLCAyMjEsIDU5LCAxNzYsIDIxMywgMTc1LCAyMywgMjIxLCAKKyAgICA1OSwgMTc2LCAyMTMsIDE3NiwgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAxNzYsIDIxMywgMTc2LCAyMDAsIDU4LCAyMywgCisgICAgMjIxLCA1OSwgMjI2LCAxMjksIDIzLCAyMjEsIDU5LCAyMjYsIDEzMCwgMjM2LCAyMzMsIDIzLCAyMjEsIDU5LCAyMjYsIAorICAgIDEzMCwgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAyMDYsIDE1OSwgMjMsIDIyMSwgNTksIDIwNiwgMTYwLCAyMzYsIDIzMywgCisgICAgMjMsIDIyMSwgNTksIDIwNiwgMTYwLCAyMDcsIDI0OCwgMjMsIDIyNCwgMTYxLCAyMTUsIDE3LCAyMDUsIDE4MiwgMjMsIAorICAgIDIyNCwgMTYzLCAyMjQsIDU0LCAxMTksIDIwMywgMjI0LCAyMywgMjI0LCAxNjMsIDIwMywgMjI1LCAxMTksIDIyNCwgNTMsIAorICAgIDIzLCAyMjEsIDU5LCAyNDMsIDE0LCAyMywgMjIxLCA1OSwgMjAwLCAyMjIsIDIwOSwgMTM4LCAyMywgMjIxLCA1OSwgMjAwLCAKKyAgICAyMjIsIDIzOSwgMTc1LCAyMywgMjA1LCAxNjQsIDIwOCwgODcsIDIxNiwgMjU1LCAyMzcsIDE2MywgMjMsIDIwNSwgMTY0LCAKKyAgICAyMjQsIDIwNiwgMjI0LCAxNjAsIDIzLCAyMDUsIDE2NCwgMjA1LCAyMjQsIDI0OCwgMjA2LCAyMjQsIDE2MCwgMjMsIDIwNSwgCisgICAgMTY0LCAyMDUsIDIyNCwgMjA1LCAxNDAsIDIyOCwgNzQsIDIyMSwgNTgsIDIzLCAyMDUsIDE2NCwgMjI4LCA3NCwgMjIxLCAKKyAgICA1OSwgMjEzLCAxNDcsIDIzLCAyMDUsIDE2NCwgMjIxLCA0OSwgMjUxLCAxOTEsIDI0NywgMywgMjMsIDIwNSwgMTY0LCAyNDcsIAorICAgIDU2LCAyMDgsIDg3LCAyMTYsIDI1NCwgMjMsIDIwNSwgMTY0LCAyNDcsIDU2LCAyMjgsIDc0LCAyMjEsIDU4LCAyMywgMjA2LCAKKyAgICAxODYsIDIzLCAyMDYsIDE4NywgMjIxLCA1NCwgMjMsIDIwNiwgMTg3LCAyMTcsIDc5LCAyMDUsIDE2MywgMjMsIDIwNiwgCisgICAgMTg3LCAyMTcsIDc5LCAyMDUsIDE2NCwgMjIxLCA1NCwgMjMsIDIwNiwgMTg3LCAyMTcsIDc5LCAyMjQsIDE2MCwgMjMsIAorICAgIDIwNiwgMTg3LCAyMTcsIDc5LCAyMjQsIDE2MSwgMjIxLCA1NCwgMjMsIDIwNiwgMTg3LCAyNDgsIDE1MSwgMjI0LCAxNjAsIAorICAgIDIzLCAyMjEsIDUwLCAyMjcsIDIzMSwgMjMsIDIyMSwgNTIsIDIyNywgMjMxLCAyMywgMjIwLCAzMSwgMjMsIDIzNCwgMjIxLCAKKyAgICAyMywgMjM4LCA0NCwgMjMsIDIwOSwgMjMzLCAyMzQsIDQ5LCAyMDgsIDIxOSwgMjMsIDIwOSwgMjMzLCAyMzQsIDQ5LCAyMTUsIAorICAgIDY5LCAyMywgMjAxLCAxMDEsIDIwOSwgMjMzLCAyMzQsIDQ5LCAyMjEsIDU3LCAyMywgMjM3LCAzMCwgMjA5LCAyMzMsIDIzNCwgCisgICAgNDksIDIyMSwgNTcsIDIzLCAyMDksIDIzMywgMjA1LCAyMzYsIDIzNiwgMjAxLCAyMDEsIDEwNywgMjMsIDIwNSwgMTQ3LCAKKyAgICAyMDgsIDY4LCAyMDgsIDU2LCAyMywgMjA1LCAxNDcsIDI0MiwgMTg4LCAyNDgsIDIyMiwgMjMsIDIwNSwgMTQ4LCAyMDQsIAorICAgIDE0NCwgMjMsIDIwMywgMjI1LCAyNDgsIDExOSwgMjA1LCAyMzYsIDIzNiwgMjAxLCAyMzQsIDQ5LCAyMjcsIDE2MCwgMjMsIAorICAgIDIyNCwgMTg4LCAyNDYsIDc1LCAyMywgMjI0LCAxODgsIDIyNSwgMSwgMjMsIDIyNCwgMTg4LCAyMjUsIDAsIDIzLCAyMjQsIAorICAgIDE4OCwgMjI0LCAyNTUsIDIzLCAyMjQsIDE4OCwgMjI0LCAyNTQsIDIzLCAyMjQsIDE4OCwgMjI0LCAyNTMsIDIzLCAyMjQsIAorICAgIDE4OCwgMjI0LCAyNTIsIDIzLCAyMjQsIDE4OCwgMjI0LCAyNTEsIDIzLCAyMzcsIDg2LCAyMywgMjI0LCAxMDYsIDIwOCwgCisgICAgMjQ0LCAyMywgMjI0LCAxMDcsIDIwOCwgMjQ0LCAyMywgMjI0LCAxMDgsIDIzNCwgMTEzLCAyMywgMjI0LCAxMDgsIDIwMSwgCisgICAgMjQsIDIzLCAyMjQsIDEwOCwgMjQxLCAxMjMsIDIzLCAyMjQsIDEwOCwgMjM0LCAxMzcsIDIyMCwgMzEsIDIzLCAyMjQsIAorICAgIDEwOCwgMjA1LCAxNDksIDIzLCAyMjQsIDEwOCwgMjI0LCAxODcsIDI0MSwgNDEsIDIzLCAyNDYsIDcwLCAyMywgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDIzLCAyMTAsIDE2NywgMjMsIDI0NiwgNzksIDIzLCAyMTYsIDExNSwgMjMsIDIzNywgOTYsIDIyMSwgCisgICAgMTE4LCAyMywgMjM3LCA5NiwgMjIxLCAxMTcsIDIzLCAyMzcsIDk2LCAyMjEsIDExNiwgMjMsIDIzNywgOTYsIDIyMSwgMTE1LCAKKyAgICAyMywgMjM3LCA5NiwgMjIxLCAxMTQsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTgsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTcsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMTYsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTUsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTQsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMTMsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTIsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTEsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMjUsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjQsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjMsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMjIsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjEsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjAsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMTksIDM4LCAxMTYsIDEsIDI1MCwgMTA0LCAzOCwgMTE2LCAxLCAyNDgsIDI0LCAzOCwgCisgICAgMTE2LCAxLCAyMDMsIDU3LCAzOCwgMTE2LCAxLCAyMzUsIDEzMCwgMzgsIDExNiwgMSwgMjQwLCAyMDYsIDM4LCAxMTYsIDEsIAorICAgIDIwMCwgMjMsIDM4LCAxMTYsIDEsIDE5OSwgNjEsIDM4LCAxMTYsIDEsIDE5OSwgODYsIDM4LCAxMTYsIDEsIDIyNywgMjU1LCAKKyAgICAzOCwgMTE2LCAxLCA4MiwgMjI3LCAyNTUsIDM4LCAxMTYsIDEsIDcwLCAzOCwgMTE2LCAxLCAyNDAsIDIyNiwgMzgsIDExNiwgCisgICAgMSwgMjI3LCA3NCwgMzgsIDExNiwgMSwgMjI0LCAxNDAsIDM4LCAxMTYsIDEsIDIyMCwgMjE4LCAzOCwgMTE2LCAxLCAyMjAsIAorICAgIDEyMCwgMzgsIDExNiwgMSwgMjE3LCA2NSwgMzgsIDExNiwgMSwgMjE1LCA5MywgMzgsIDExNiwgMSwgMjEzLCAxOCwgMzgsIAorICAgIDExNiwgMSwgMjA5LCA1OCwgMzgsIDExNiwgMSwgMjA0LCAxNzEsIDM4LCAxMTYsIDEsIDIwNCwgMTYsIDM4LCAxMTYsIDEsIAorICAgIDIzNiwgMjA0LCAzOCwgMTE2LCAxLCAyMzQsIDk1LCAzOCwgMTE2LCAxLCAyMDksIDIyMywgMzgsIDExNiwgMSwgMjA1LCAxMSwgCisgICAgMzgsIDExNiwgMSwgMjQ2LCAxOTgsIDM4LCAxMTYsIDEsIDIxMCwgMTE0LCAzOCwgMTE2LCAxLCAyMDAsIDI5LCAzOCwgMTE2LCAKKyAgICAxLCAyMDAsIDMxLCAzOCwgMTE2LCAxLCAyMDAsIDYzLCAzOCwgMTE2LCAxLCAxOTksIDIxMSwgMzgsIDExNiwgMSwgNCwgCisgICAgMTk5LCAxODEsIDM4LCAxMTYsIDEsIDE5OSwgMjQ1LCAzOCwgMTE2LCAxLCAyMjgsIDQwLCA0LCAxOTksIDE4MSwgMzgsIAorICAgIDExNiwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzOCwgMTE2LCAxLCAyMjgsIDQwLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM4LCAKKyAgICAxMTYsIDEsIDIzNywgNjMsIDc4LCA3NywgNSwgMjIzLCAyNDIsIDIyNiwgMTYzLCA3OCwgNzcsIDUsIDIyMywgMjM4LCAxNjEsIAorICAgIDc4LCA3NywgNSwgMjIzLCAyMzYsIDIyNiwgMTUsIDc4LCA3NywgNSwgMjIzLCAxMTIsIDIyNywgNSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDgyLCAyMjcsIDgsIDc4LCA3NywgNSwgMjIzLCAxMDEsIDIyNiwgNjgsIDc4LCA3NywgNSwgMjIzLCAxMjksIDIyNiwgCisgICAgODgsIDc4LCA3NywgNSwgMjIyLCAyNTQsIDIyNiwgOSwgNzgsIDc3LCA1LCAyMjMsIDIzMywgMjAxLCAzMSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDIzMSwgMjAxLCAxMTQsIDc4LCA3NywgNSwgMjIzLCAyMjksIDIwMCwgMjE2LCA3OCwgNzcsIDUsIDIyMywgNTEsIAorICAgIDIwMSwgNTcsIDc4LCA3NywgNSwgMjIzLCA1OSwgMjAxLCA2NCwgNzgsIDc3LCA1LCAyMjMsIDYzLCAyMDAsIDI0NCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDEzMiwgMjAxLCAwLCA3OCwgNzcsIDUsIDIyMiwgMjM5LCAyMDAsIDIxMiwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDM0LCAyMDEsIDU1LCA3OCwgNzcsIDUsIDIyMywgMTE2LCAyMDAsIDIwMCwgNzgsIDc3LCA1LCAyMjMsIDEyOCwgMjAwLCAKKyAgICAyMDIsIDc4LCA3NywgNSwgMjIzLCAzOCwgMjAwLCAyMDEsIDc4LCA3NywgNSwgMjIzLCAyMjcsIDIyMSwgMTY0LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMjI1LCAyMjIsIDE4MCwgNzgsIDc3LCA1LCAyMjMsIDIyMywgMjIxLCAxNCwgNzgsIDc3LCA1LCAyMjMsIDExOCwgCisgICAgMjIyLCA0MCwgNzgsIDc3LCA1LCAyMjMsIDgzLCAyMjEsIDEwNiwgNzgsIDc3LCA1LCAyMjMsIDIzLCAyMjEsIDM4LCA3OCwgCisgICAgNzcsIDUsIDIyMiwgMjQ0LCAyMjEsIDMyLCA3OCwgNzcsIDUsIDIyMywgMjIxLCAyNDgsIDE4OCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDIxOCwgMjQ5LCAxMzYsIDc4LCA3NywgNSwgMjIzLCAyMTYsIDI0OCwgMzYsIDc4LCA3NywgNSwgMjIzLCAyNywgMjQ4LCAKKyAgICAyNTIsIDc4LCA3NywgNSwgMjIzLCA4MCwgMjQ5LCA4LCA3OCwgNzcsIDUsIDIyMywgNzQsIDI0OCwgMTExLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMzksIDI0OCwgMTI0LCA3OCwgNzcsIDUsIDIyMywgMjA2LCA3MCwgNzgsIDc3LCA1LCAyMjMsIDIwNCwgNjIsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAyMDIsIDY2LCA3OCwgNzcsIDUsIDIyMywgMTQsIDIzOCwgMjU1LCA3OCwgNzcsIDUsIDIyMywgNzcsIAorICAgIDcyLCA3OCwgNzcsIDUsIDIyMywgMTIsIDIxNywgNjMsIDc4LCA3NywgNSwgMjIzLCAzMCwgNzQsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA0MCwgMjM4LCAyMzQsIDc4LCA3NywgNSwgMjIzLCA0NiwgMjI4LCAxMTcsIDc4LCA3NywgNSwgMjIzLCA0MiwgMjI4LCAxMTcsIAorICAgIDc4LCA3NywgNSwgMjIyLCAyMzgsIDI1MSwgODUsIDc4LCA3NywgNSwgMjIyLCAyNTUsIDIzOCwgMTc5LCA3OCwgNzcsIDUsIAorICAgIDIyMywgMTkxLCAyMDksIDE4MiwgNzgsIDc3LCA1LCAyMjMsIDE4OSwgMjEyLCA2NCwgNzgsIDc3LCA1LCAyMjMsIDE4NywgCisgICAgMjA4LCAyNCwgNzgsIDc3LCA1LCAyMjMsIDE1LCAyMTEsIDE5MCwgNzgsIDc3LCA1LCAyMjMsIDYxLCAyMTEsIDIwMiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDQxLCAyMDksIDEwLCA3OCwgNzcsIDUsIDIyMywgOTgsIDIwOSwgMjksIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyMzcsIDIwOSwgMTgxLCA3OCwgNzcsIDUsIDIyMywgMTc3LCAyMjQsIDIxMCwgNzgsIDc3LCA1LCAyMjMsIDE3NSwgMTk0LCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMTczLCAyMjQsIDQyLCA3OCwgNzcsIDUsIDIyMywgOTMsIDIyNSwgMzIsIDc4LCA3NywgNSwgCisgICAgMjIzLCAxMDQsIDIyNSwgNDAsIDc4LCA3NywgNSwgMjIzLCAxMjMsIDIyNCwgNzgsIDc4LCA3NywgNSwgMjIzLCAyNCwgMjI0LCAKKyAgICAxMTAsIDc4LCA3NywgNSwgMjIzLCA2NywgMTY4LCAyMjUsIDQwLCA3OCwgNzcsIDUsIDIyMywgMTk5LCAyNDEsIDc2LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTk2LCAyNDIsIDU4LCA3OCwgNzcsIDUsIDIyMywgMTkzLCAyMzksIDEzNywgNzgsIDc3LCA1LCAyMjMsIAorICAgIDg4LCAyNDEsIDE2MSwgNzgsIDc3LCA1LCAyMjIsIDI1MywgMjQwLCAxODcsIDc4LCA3NywgNSwgMjIyLCAyNTIsIDI0MCwgCisgICAgMjExLCA3OCwgNzcsIDUsIDIyMywgMTg1LCAyMDYsIDE1LCA3OCwgNzcsIDUsIDIyMywgMTgyLCAyMDcsIDM2LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMTgwLCAyMDQsIDIxNSwgNzgsIDc3LCA1LCAyMjMsIDg2LCAyMDYsIDE5MCwgNzgsIDc3LCA1LCAyMjMsIDEyMiwgCisgICAgMjA2LCAyMDEsIDc4LCA3NywgNSwgMjIzLCA3MywgMjA1LCAxNjEsIDc4LCA3NywgNSwgMjIzLCAxMDgsIDEzOCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDE3MSwgMjI3LCAyMDcsIDc4LCA3NywgNSwgMjIzLCAxNjgsIDIyNywgMjQ4LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTY2LCAyMjcsIDE0NywgNzgsIDc3LCA1LCAyMjMsIDIwLCAyMjcsIDIyNSwgNzgsIDc3LCA1LCAyMjMsIDY0LCAyMjcsIAorICAgIDIyNywgNzgsIDc3LCA1LCAyMjMsIDE3LCAyMjcsIDE1NiwgNzgsIDc3LCA1LCAyMjMsIDExNCwgMjI3LCAxNjYsIDc4LCA3NywgCisgICAgNSwgMjIzLCAyLCAxNjgsIDIyNywgMTY2LCA3OCwgNzcsIDUsIDIyMywgMTY0LCAyMDAsIDksIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxNjEsIDE4MywgNzgsIDc3LCA1LCAyMjMsIDE1OSwgMTk5LCAyMTEsIDc4LCA3NywgNSwgMjIzLCA2OCwgMjAwLCA0OCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDk3LCAyMDAsIDUxLCA3OCwgNzcsIDUsIDIyMywgMzYsIDE5OSwgMjMwLCA3OCwgNzcsIDUsIDIyMywgCisgICAgNTYsIDE5OSwgMjQ1LCA3OCwgNzcsIDUsIDIyMywgMTU1LCAyMzcsIDExMiwgNzgsIDc3LCA1LCAyMjMsIDE1MywgMjM3LCAKKyAgICAxOTUsIDc4LCA3NywgNSwgMjIzLCAxNTEsIDIzNiwgMTg5LCA3OCwgNzcsIDUsIDIyMywgOTksIDIzNywgMTQwLCA3OCwgNzcsIAorICAgIDUsIDIyMywgMTAyLCAyMzcsIDE0NywgNzgsIDc3LCA1LCAyMjMsIDQ0LCAyMzcsIDIsIDc4LCA3NywgNSwgMjIzLCA4OSwgCisgICAgMjM3LCAxMywgNzgsIDc3LCA1LCAyMjIsIDIzNiwgMjM2LCAxODgsIDc4LCA3NywgNSwgMjIzLCA3NiwgMjM3LCAxNjgsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxNDksIDIxOSwgMTE4LCA3OCwgNzcsIDUsIDIyMywgMTQ3LCAyMjAsIDEzNCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDE0NSwgMjE4LCA4OSwgNzgsIDc3LCA1LCAyMjMsIDYwLCAyMjAsIDI0LCA3OCwgNzcsIDUsIDIyMywgOCwgMjE4LCAyMzQsIAorICAgIDc4LCA3NywgNSwgMjIzLCAxLCAyMzQsIDc1LCA3OCwgNzcsIDUsIDIyMywgMTQwLCAxNDQsIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyNDcsIDIzMywgOTcsIDc4LCA3NywgNSwgMjIzLCAxNDMsIDIzNCwgMTIwLCA3OCwgNzcsIDUsIDIyMywgODEsIDIzNCwgCisgICAgMTM5LCA3OCwgNzcsIDUsIDIyMywgMTM4LCAyMzMsIDE4OCwgNzgsIDc3LCA1LCAyMjMsIDM3LCAyMzMsIDIwNywgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDk0LCAyMzQsIDExOSwgNzgsIDc3LCA1LCAyMjMsIDQ5LCAyMzMsIDE4MSwgNzgsIDc3LCA1LCAyMjMsIDEyNCwgCisgICAgMjM0LCA1MywgNzgsIDc3LCA1LCAyMjMsIDQ3LCAyMzQsIDIwMiwgNzgsIDc3LCA1LCAyMjMsIDkwLCAyMzMsIDg0LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTI1LCAyMzQsIDEwNSwgNzgsIDc3LCA1LCAyMjIsIDI0MCwgMjMzLCAxOTEsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxMzEsIDIzMywgOTYsIDc4LCA3NywgNSwgMjIzLCA4NywgMjE5LCAyMTgsIDc4LCA3NywgNSwgMjIzLCAxMzYsIDIxOSwgCisgICAgMjMyLCA3OCwgNzcsIDUsIDIyMywgOTUsIDIxOSwgMjE1LCA3OCwgNzcsIDUsIDIyMywgNjIsIDIxOSwgMjI2LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMzEsIDIxOSwgMjI3LCA3OCwgNzcsIDUsIDIyMywgMjEsIDIxOSwgMjE2LCA3OCwgNzcsIDUsIDIyMywgNTcsIAorICAgIDIxOSwgMjE3LCA3OCwgNzcsIDUsIDIyMywgMTgsIDIxOSwgMjMxLCA3OCwgNzcsIDUsIDIyMywgNTAsIDIxOSwgMjE0LCA3OCwgCisgICAgNzcsIDUsIDIyMywgOTEsIDE2OCwgMjE5LCAyMjcsIDc4LCA3NywgNSwgMjIzLCA3MSwgMTY4LCAyMTksIDIxNiwgNzgsIDc3LCAKKyAgICA1LCAyMjIsIDI1MCwgMTY4LCAyMTksIDIxNywgNzgsIDc3LCA1LCAyMjMsIDIyLCAyMzUsIDE2MSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDY2LCAyMzYsIDg5LCA3OCwgNzcsIDUsIDIyMywgOSwgMjM1LCA1MCwgNzgsIDc3LCA1LCAyMjIsIDI0MywgMjM2LCA3LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTEsIDIzNSwgMzYsIDc4LCA3NywgNSwgMjIzLCAxMCwgMjM1LCA0NiwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDI0OSwgMjE5LCAyMzcsIDc4LCA3NywgNSwgMjIzLCAxMjAsIDIxOSwgMTc0LCA3OCwgNzcsIDUsIDIyMywgMCwgMjE5LCAKKyAgICAxNjMsIDc4LCA3NywgNSwgMjIzLCAxMDksIDIxNSwgMjA0LCA3OCwgNzcsIDUsIDIyMywgNzgsIDE3MiwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDEyNywgMjE0LCAyMjQsIDc4LCA3NywgNSwgMjIzLCA5NiwgMjE2LCA2MSwgNzgsIDc3LCA1LCAyMjMsIDEyNiwgCisgICAgMjE2LCA3MywgNzgsIDc3LCA1LCAyMjMsIDc1LCAyMTUsIDgxLCA3OCwgNzcsIDUsIDIyMywgMTExLCAyMTUsIDEwNiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDMyLCAyMjIsIDk1LCA3OCwgNzcsIDUsIDIyMywgMTE1LCAyMjIsIDExMCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDU1LCAyMjIsIDg5LCA3OCwgNzcsIDUsIDIyMywgMTMwLCAyMjIsIDEwMiwgNzgsIDc3LCA1LCAyMjIsIDI0NSwgMjIyLCAKKyAgICAxMDIsIDc4LCA3NywgNSwgMjIzLCAxMDUsIDIyMiwgMTAzLCA3OCwgNzcsIDUsIDIyMywgNSwgMjIyLCA5MCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDMsIDIyMiwgOTEsIDc4LCA3NywgNSwgMjIyLCAyNDYsIDIyMiwgODMsIDc4LCA3NywgNSwgMjIzLCAxNiwgCisgICAgMTY4LCAyMjIsIDEwMywgNzgsIDc3LCA1LCAyMjMsIDcyLCAxNjgsIDIyMiwgOTAsIDc4LCA3NywgNSwgMjIzLCAzNSwgMTY4LCAKKyAgICAyMjIsIDkxLCA3OCwgNzcsIDUsIDIyMywgNDUsIDIyNiwgNDIsIDc4LCA3NywgNSwgMjIzLCA4NSwgMjI2LCA1MCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDEwMywgMjI2LCAzOCwgNzgsIDc3LCA1LCAyMjMsIDEzNCwgMjI2LCA0NSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDY5LCAyMjYsIDQ2LCA3OCwgNzcsIDUsIDIyMywgNjUsIDIyNiwgNDAsIDc4LCA3NywgNSwgMjIzLCAxOSwgMjI2LCA0MSwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDUzLCAyMzYsIDI0LCA3OCwgNzcsIDUsIDIyMywgMTIxLCAyMzYsIDMyLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMjksIDIzNiwgMTksIDc4LCA3NywgNSwgMjIzLCA4NCwgMjM2LCAyOCwgNzgsIDc3LCA1LCAyMjMsIDcwLCAyMzYsIAorICAgIDI5LCA3OCwgNzcsIDUsIDIyMywgMTA2LCAyMzYsIDIwLCA3OCwgNzcsIDUsIDIyMywgMTA3LCAyMzYsIDIyLCA3OCwgNzcsIAorICAgIDUsIDIyMywgNiwgMjEzLCAyNTIsIDc4LCA3NywgNSwgMjIzLCA1NCwgMjIwLCA2MCwgNzgsIDc3LCA1LCAyMjMsIDQ4LCAKKyAgICAyMjAsIDc1LCA3OCwgNzcsIDUsIDIyMywgNTIsIDIyMCwgNDIsIDc4LCA3NywgNSwgMjIyLCAyNDIsIDIyMCwgNjYsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA1OCwgMjIwLCA2NywgNzgsIDc3LCA1LCAyMjMsIDExMCwgMjIwLCA0NywgNzgsIDc3LCA1LCAyMjMsIAorICAgIDExMywgMjIwLCA1MSwgNzgsIDc3LCA1LCAyMjMsIDI1LCAyMTksIDk4LCA3OCwgNzcsIDUsIDIyMiwgMjQxLCAyMTksIDY4LCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMjgsIDIxOSwgODksIDc4LCA3NywgNSwgMjIzLCA0MywgMjE5LCA3MiwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDI1MSwgMjAyLCAyMzQsIDc4LCA3NywgNSwgMjIyLCAyNDgsIDIwMywgOTAsIDc4LCA3NywgNSwgMjIzLCAyNiwgMjAxLCAKKyAgICAxNjYsIDc4LCA3NywgNSwgMjIzLCA0LCAyMDMsIDU0LCA3OCwgNzcsIDUsIDIyMywgOTIsIDIwMywgNTksIDc4LCA3NywgNSwgCisgICAgMjIzLCAzMywgMjAyLCAxNzksIDc4LCA3NywgNSwgMjIzLCAxMDAsIDIwMiwgMTkzLCA3OCwgNzcsIDUsIDIyMywgMTMsIAorICAgIDIxOCwgMzUsIDc4LCA3NywgNSwgMjIzLCAxMTksIDIxOCwgNTQsIDc4LCA3NywgNSwgMjIzLCA3LCAyMTgsIDE3LCA3OCwgCisgICAgNzcsIDUsIDIyMywgNzksIDIxOCwgNDYsIDc4LCA3NywgNSwgMjIzLCAxMTcsIDIxOCwgMjQsIDc4LCA3NywgMTcsIDEwMiwgCisgICAgNzgsIDc3LCAxNywgMTA1LCA3OCwgNzcsIDE3LCAxNDcsIDc4LCA3NywgMTcsIDE0OSwgNzgsIDc3LCAxNywgMTY0LCA3OCwgCisgICAgNzcsIDE3LCAxODcsIDc4LCA3NywgMTcsIDIxMCwgMTM1LCA3OCwgNzcsIDE3LCAxOTIsIDc4LCA3NywgMTcsIDIxOSwgMTEzLCAKKyAgICA3OCwgNzcsIDM4LCA0MSwgMjA2LCAxODgsIDc4LCA3NywgMzgsIDQxLCAyMDYsIDE2MSwgNzgsIDc3LCAzOCwgNDEsIDIzMywgCisgICAgODAsIDc4LCA3NywgMzgsIDQxLCAyMDYsIDQ4LCA3OCwgNzcsIDM4LCA0MSwgMjA2LCAxNjcsIDIwNiwgNDgsIDc4LCA3NywgCisgICAgMzgsIDQxLCAyMzMsIDgzLCAyMDYsIDQ4LCA3OCwgNzcsIDM4LCA0MSwgMjIxLCAxNjcsIDI1MSwgMjI3LCA2LCAxLCAyNTEsIAorICAgIDEzMCwgMjUxLCAyMjcsIDYsIDEsIDI0MiwgNTUsIDI1MSwgMjI3LCA2LCAxLCAyMjUsIDE3MywgMjUxLCAyMjcsIDYsIDEsIAorICAgIDIyMSwgMTgwLCAyNTEsIDIyNywgNiwgMSwgMjQ5LCAxMzYsIDI1MSwgMjI3LCA2LCAxLCAyMDksIDEzMywgMjUxLCAyMjcsIAorICAgIDYsIDEsIDIxNiwgNzMsIDI1MSwgMjI3LCA2LCAxLCAyNDgsIDE5NiwgMjUxLCAyMjcsIDYsIDEsIDIxMywgMjUyLCAyNTEsIAorICAgIDIyNywgNiwgMSwgNzIsIDI1MSwgMjI3LCA2LCAxLCAyMzcsIDE5NSwgMjUxLCAyMjcsIDYsIDEsIDcwLCAyNTEsIDIyNywgNiwgCisgICAgMSwgNzQsIDI1MSwgMjI3LCA2LCAxLCAyNDEsIDEwMCwgMjUxLCAyMjcsIDYsIDEsIDIwMCwgMTAsIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyMDEsIDcyLCAyNTEsIDIyNywgNiwgMSwgMjE4LCA4OSwgMjUxLCAyMjcsIDYsIDEsIDIyNywgODYsIDI1MSwgMjI3LCA2LCAKKyAgICAxLCAxODMsIDI1MSwgMjI3LCA2LCAxLCA2NiwgMjUxLCAyMjcsIDYsIDEsIDIyNywgMTk5LCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjQ2LCAyMzYsIDI1MSwgMjI3LCA2LCAxLCAxNDQsIDI1MSwgMjI3LCA2LCAxLCAyMTQsIDE1NywgMjUxLCAyMjcsIDYsIDEsIAorICAgIDIzNiwgODksIDI1MSwgMjI3LCA2LCAxLCAyMTgsIDYwLCAyNTEsIDIyNywgNiwgMSwgMjA0LCAyMTUsIDI1MSwgMjI3LCA2LCAKKyAgICAxLCAyMTksIDE1NCwgMjUxLCAyMjcsIDYsIDEsIDIwMywgOTAsIDI1MSwgMjI3LCA2LCAxLCAyMjYsIDIwNywgMjUxLCAyMjcsIAorICAgIDYsIDEsIDIzNiwgMjksIDI1MSwgMjI3LCA2LCAxLCAxOTksIDEwMywgMjUxLCAyMjcsIDYsIDEsIDIyNiwgNDEsIDI1MSwgCisgICAgMjI3LCA2LCAxLCAyMTAsIDExNCwgMjUxLCAyMjcsIDQsIDEsIDI1MSwgMTMwLCAyNTEsIDIyNywgNCwgMSwgMjQyLCA1NSwgCisgICAgMjUxLCAyMjcsIDQsIDEsIDIyNSwgMTczLCAyNTEsIDIyNywgNCwgMSwgMjIxLCAxODAsIDI1MSwgMjI3LCA0LCAxLCAyNDksIAorICAgIDEzNiwgMjUxLCAyMjcsIDQsIDEsIDIwOSwgMTMzLCAyNTEsIDIyNywgNCwgMSwgMjE2LCA3MywgMjUxLCAyMjcsIDQsIDEsIAorICAgIDI0OCwgMTk2LCAyNTEsIDIyNywgNCwgMSwgMjEzLCAyNTIsIDI1MSwgMjI3LCA0LCAxLCA3MiwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDIzNywgMTk1LCAyNTEsIDIyNywgNCwgMSwgNzAsIDI1MSwgMjI3LCA0LCAxLCA3NCwgMjUxLCAyMjcsIDQsIDEsIDI0MSwgCisgICAgMTAwLCAyNTEsIDIyNywgNCwgMSwgMjAwLCAxMCwgMjUxLCAyMjcsIDQsIDEsIDIwMSwgNzIsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyMTgsIDg5LCAyNTEsIDIyNywgNCwgMSwgMjI3LCA4NiwgMjUxLCAyMjcsIDQsIDEsIDE4MywgMjUxLCAyMjcsIDQsIDEsIAorICAgIDY2LCAyNTEsIDIyNywgNCwgMSwgMjI3LCAxOTksIDI1MSwgMjI3LCA0LCAxLCAyNDYsIDIzNiwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDE0NCwgMjUxLCAyMjcsIDQsIDEsIDIxNCwgMTU3LCAyNTEsIDIyNywgNCwgMSwgMjM2LCA4OSwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDIxOCwgNjAsIDI1MSwgMjI3LCA0LCAxLCAyMDQsIDIxNSwgMjUxLCAyMjcsIDQsIDEsIDIxOSwgMTU0LCAyNTEsIDIyNywgNCwgCisgICAgMSwgMjAzLCA5MCwgMjUxLCAyMjcsIDQsIDEsIDIyNiwgMjA3LCAyNTEsIDIyNywgNCwgMSwgMjM2LCAyOSwgMjUxLCAyMjcsIAorICAgIDQsIDEsIDE5OSwgMTAzLCAyNTEsIDIyNywgNCwgMSwgMjI2LCA0MSwgMjUxLCAyMjcsIDQsIDEsIDIxMCwgMTE0LCAyNTEsIAorICAgIDIyNywgMjUxLCAxMzEsIDIyNCwgMjUwLCAyNTEsIDIyNywgMjIsIDIyNCwgMjUwLCAyNTEsIDIyNywgMjM2LCAzLCA4MSwgCisgICAgMjUxLCAyMjcsIDIzNCwgMjAzLCAyNTEsIDIyNywgMTExLCAyMjEsIDEyNiwgMjUxLCAyMjcsIDIzNiwgNCwgMTExLCAyMjEsIAorICAgIDEyNiwgMjUxLCAyMjcsIDIxOCwgMTAwLCAyNTEsIDIyNywgMTcsIDE5OSwgODEsIDI1MSwgMjI3LCAxNywgMTAyLCAyNTEsIAorICAgIDIyNywgMTcsIDEwNSwgMjUxLCAyMjcsIDE3LCAxNDcsIDI1MSwgMjI3LCAxNywgMTQ5LCAyNTEsIDIyNywgMTcsIDE2NCwgCisgICAgMjUxLCAyMjcsIDE3LCAxODcsIDI1MSwgMjI3LCAxNywgMjEwLCAxMzUsIDI1MSwgMjI3LCAxNywgMTkyLCAyNTEsIDIyNywgCisgICAgMTcsIDIxOSwgMTEzLCAyNTEsIDIyNywgODIsIDIzOCwgNDMsIDgxLCAyNTEsIDIyNywgODIsIDIxNCwgNzksIDgxLCA5LCAKKyAgICAxMywgMjUxLCAxNDIsIDksIDEzLCAyNDgsIDI0MCwgOSwgMTMsIDIyNywgMjI0LCA5LCAxMywgMjQyLCAyOSwgOSwgMTMsIAorICAgIDIwMSwgNzIsIDksIDEzLCAxOTksIDEwNSwgOSwgMTMsIDIzNCwgMjI0LCA5LCAxMywgMjA3LCA5LCA5LCAxMywgMjAwLCA0NiwgCisgICAgOSwgMTMsIDIyNywgODYsIDksIDEzLCAyMjUsIDkxLCA5LCAxMywgMjIyLCA2MSwgOSwgMTMsIDIxOCwgMjI3LCA5LCAxMywgCisgICAgMjExLCAxODYsIDksIDEzLCAyNTEsIDE3MSwgOSwgMTMsIDIzNywgMTM0LCA5LCAxMywgMjEyLCA1NiwgOSwgMTMsIDIxNCwgCisgICAgMTUyLCA5LCAxMywgMjEzLCAxNTQsIDksIDEzLCAyMTAsIDYxLCA5LCAxMywgMjA2LCAxODMsIDksIDEzLCAyMDYsIDEwMiwgCisgICAgOSwgMTMsIDIyNiwgMjAzLCA5LCAxMywgMjA2LCAxMTQsIDksIDEzLCAyNDIsIDUyLCA5LCAxMywgMTk5LCAxMDgsIDksIDEzLCAKKyAgICAyMzUsIDE5NCwgOSwgMTMsIDI0MCwgMTgxLCAyNDgsIDI0MCwgOSwgMTMsIDI0MCwgMTgxLCAyMTgsIDIyNywgOSwgMTMsIAorICAgIDI0MCwgMTgxLCAyMzcsIDEzNCwgOSwgMTMsIDI0MCwgMTgxLCAyMTQsIDE1MiwgOSwgMTMsIDgyLCAyNDgsIDI0MCwgOSwgCisgICAgMTMsIDgyLCAyMjcsIDIyNCwgOSwgMTMsIDgyLCAyMzQsIDExNSwgOSwgMTMsIDgyLCAyMzQsIDIyNCwgOSwgMTMsIDgyLCAKKyAgICAyMDAsIDQ2LCA5LCAxMywgODIsIDIyNywgODYsIDksIDEzLCA4MiwgMjI1LCA5MSwgOSwgMTMsIDgyLCAyMjIsIDYxLCA5LCAKKyAgICAxMywgODIsIDIxOCwgMjI3LCA5LCAxMywgODIsIDIxMSwgMTg2LCA5LCAxMywgODIsIDI1MSwgMTcxLCA5LCAxMywgODIsIAorICAgIDIzNywgMTM0LCA5LCAxMywgODIsIDIxMiwgNTYsIDksIDEzLCA4MiwgMjE0LCAxNTIsIDksIDEzLCA4MiwgMjEwLCA2MSwgOSwgCisgICAgMTMsIDgyLCAyMDYsIDE4MywgOSwgMTMsIDgyLCAyMDYsIDEwMiwgOSwgMTMsIDgyLCAyMjYsIDIwMywgOSwgMTMsIDgyLCAKKyAgICAyNDIsIDUyLCA5LCAxMywgODIsIDIzNSwgMTk0LCA5LCAxMywgMjA3LCA1LCAyMjcsIDIyNCwgOSwgMTMsIDIwNywgNSwgCisgICAgMjM0LCAyMjQsIDksIDEzLCAyMDcsIDUsIDIwMCwgNDYsIDksIDEzLCAyMDcsIDUsIDIyNSwgOTEsIDksIDEzLCAyMDcsIDUsIAorICAgIDIxOCwgMjI3LCA5LCAxMywgMjA3LCA1LCAyMTEsIDE4NiwgOSwgMTMsIDIwNywgNSwgMjUxLCAxNzEsIDksIDEzLCAyMDcsIAorICAgIDUsIDIxMiwgNTYsIDksIDEzLCAyMDcsIDUsIDIxNCwgMTUyLCA5LCAxMywgMjA3LCA1LCAyMTAsIDYxLCA5LCAxMywgMjA3LCAKKyAgICA1LCAyMjYsIDIwMywgOSwgMTMsIDIwNywgNSwgMjQyLCA1MiwgOSwgMTMsIDIwNywgNSwgMjM1LCAxOTQsIDksIDEzLCAyMDcsIAorICAgIDUsIDI0MCwgMTgxLCAyMTgsIDIyNywgOSwgMTMsIDIwNywgNSwgMjQwLCAxODEsIDIxNCwgMTUyLCA5LCAxMywgMjA4LCA1NSwgCisgICAgMjQ4LCAyNDAsIDksIDEzLCAyMDgsIDU1LCAyMjcsIDIyNCwgOSwgMTMsIDIwOCwgNTUsIDIzNCwgMTE1LCA5LCAxMywgMjA4LCAKKyAgICA1NSwgMjM0LCAyMjQsIDksIDEzLCAyMDgsIDU1LCAyMDcsIDksIDksIDEzLCAyMDgsIDU1LCAyMDAsIDQ2LCA5LCAxMywgCisgICAgMjA4LCA1NSwgMjI3LCA4NiwgOSwgMTMsIDIwOCwgNTUsIDIyMiwgNjEsIDksIDEzLCAyMDgsIDU1LCAyMTgsIDIyNywgOSwgCisgICAgMTMsIDIwOCwgNTUsIDIxMSwgMTg2LCA5LCAxMywgMjA4LCA1NSwgMjUxLCAxNzEsIDksIDEzLCAyMDgsIDU1LCAyMzcsIAorICAgIDEzNCwgOSwgMTMsIDIwOCwgNTUsIDIxMiwgNTYsIDksIDEzLCAyMDgsIDU1LCAyMTQsIDE1MiwgOSwgMTMsIDIwOCwgNTUsIAorICAgIDIxMCwgNjEsIDksIDEzLCAyMDgsIDU1LCAyMDYsIDE4MywgOSwgMTMsIDIwOCwgNTUsIDIwNiwgMTAyLCA5LCAxMywgMjA4LCAKKyAgICA1NSwgMjI2LCAyMDMsIDksIDEzLCAyMDgsIDU1LCAyNDIsIDUyLCA5LCAxMywgMjA4LCA1NSwgMTk5LCAxMDgsIDksIDEzLCAKKyAgICAyMDgsIDU1LCAyMzUsIDE5NCwgOSwgMTMsIDIwOCwgNTUsIDI0MCwgMTgxLCAyNDgsIDI0MCwgOSwgMTMsIDIwOCwgNTUsIAorICAgIDI0MCwgMTgxLCAyMzcsIDEzNCwgOSwgMTMsIDIyNCwgNzMsIDI1MSwgMTQyLCA5LCAxMywgMjI0LCA3MywgMjQ4LCAyNDAsIAorICAgIDksIDEzLCAyMjQsIDczLCAyMjcsIDIyNCwgOSwgMTMsIDIyNCwgNzMsIDI0MiwgMjksIDksIDEzLCAyMjQsIDczLCAyMzQsIAorICAgIDExNSwgOSwgMTMsIDIyNCwgNzMsIDIwMSwgNzIsIDksIDEzLCAyMjQsIDczLCAxOTksIDEwNSwgOSwgMTMsIDIyNCwgNzMsIAorICAgIDIzNCwgMjI0LCA5LCAxMywgMjI0LCA3MywgMjA3LCA5LCA5LCAxMywgMjI0LCA3MywgMjAwLCA0NiwgOSwgMTMsIDIyNCwgCisgICAgNzMsIDIyNSwgOTEsIDksIDEzLCAyMjQsIDczLCAyMjIsIDYxLCA5LCAxMywgMjI0LCA3MywgMjE4LCAyMjcsIDksIDEzLCAKKyAgICAyMjQsIDczLCAyMTEsIDE4NiwgOSwgMTMsIDIyNCwgNzMsIDI1MSwgMTcxLCA5LCAxMywgMjI0LCA3MywgMjM3LCAxMzQsIDksIAorICAgIDEzLCAyMjQsIDczLCAyMTIsIDU2LCA5LCAxMywgMjI0LCA3MywgMjE0LCAxNTIsIDksIDEzLCAyMjQsIDczLCAyMTMsIDE1NCwgCisgICAgOSwgMTMsIDIyNCwgNzMsIDIxMCwgNjEsIDksIDEzLCAyMjQsIDczLCAyMDYsIDE4MywgOSwgMTMsIDIyNCwgNzMsIDIwNiwgCisgICAgMTAyLCA5LCAxMywgMjI0LCA3MywgMjI2LCAyMDMsIDksIDEzLCAyMjQsIDczLCAyMDYsIDExNCwgOSwgMTMsIDIyNCwgNzMsIAorICAgIDI0MiwgNTIsIDksIDEzLCAyMjQsIDczLCAxOTksIDEwOCwgOSwgMTMsIDIyNCwgNzMsIDIzNSwgMTk0LCA5LCAxMywgMTc1LCAKKyAgICAyNDgsIDI0MCwgOSwgMTMsIDE3NSwgMjI3LCAyMjQsIDksIDEzLCAxNzUsIDI0MiwgMjksIDksIDEzLCAxNzUsIDIwMSwgNzIsIAorICAgIDksIDEzLCAxNzUsIDE5OSwgMTA1LCA5LCAxMywgMTc1LCAyMzQsIDIyNCwgOSwgMTMsIDE3NSwgMjA3LCA5LCA5LCAxMywgCisgICAgMTc1LCAyMDAsIDQ2LCA5LCAxMywgMTc1LCAyMjUsIDkxLCA5LCAxMywgMTc1LCAyMjIsIDYxLCA5LCAxMywgMTc1LCAyMTgsIAorICAgIDIyNywgOSwgMTMsIDE3NSwgMjExLCAxODYsIDksIDEzLCAxNzUsIDI1MSwgMTcxLCA5LCAxMywgMTc1LCAyMzcsIDEzNCwgOSwgCisgICAgMTMsIDE3NSwgMjEyLCA1NiwgOSwgMTMsIDE3NSwgMjE0LCAxNTIsIDksIDEzLCAxNzUsIDIxMywgMTU0LCA5LCAxMywgMTc1LCAKKyAgICAyMTAsIDYxLCA5LCAxMywgMTc1LCAyMDYsIDE4MywgOSwgMTMsIDE3NSwgMjA2LCAxMDIsIDksIDEzLCAxNzUsIDIyNiwgCisgICAgMjAzLCA5LCAxMywgMTc1LCAyMDYsIDExNCwgOSwgMTMsIDE3NSwgMjQyLCA1MiwgOSwgMTMsIDE3NSwgMTk5LCAxMDgsIDksIAorICAgIDEzLCAxNzUsIDIzNSwgMTk0LCA5LCAxMywgMjE3LCA0NCwgODQsIDMsIDE1NSwgMywgMjA2LCAyMjMsIDksIDEzLCAyMTcsIAorICAgIDQ0LCAxNTUsIDMsIDI0MiwgMjksIDIyMiwgMjAwLCAxMDMsIDIzOSwgMTQsIDIwMSwgMTYsIDIyMiwgMjAwLCAxMDMsIDIwOCwgCisgICAgMjU0LCAyMDEsIDE2LCAyMjIsIDIwMCwgMTAzLCAyMDEsIDQ4LCAyMDEsIDE2LCAyMjIsIDIwMCwgMTAzLCAxNTcsIDIwMSwgCisgICAgMTYsIDIyMiwgMjAwLCAxMDMsIDIxMywgMTcwLCAyMzksIDE1OCwgMjIyLCAyMDAsIDEwMywgMjM1LCA2NCwgMjM5LCAxNTgsIAorICAgIDIyMiwgMjAwLCAxMDMsIDY0LCAyMzksIDE1OCwgMjIyLCAyMDAsIDEwMywgMTEyLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIAorICAgIDEwMywgMTIwLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMTI2LCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgCisgICAgMjM2LCAyMjksIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAyMzcsIDYxLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIAorICAgIDEwMywgMjA5LCAxMDYsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAyMTAsIDEzNiwgNzYsIDI0NywgMTksIDIyMiwgCisgICAgMjAwLCAxMDMsIDIzOCwgMjMyLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMjE5LCAxMTQsIDc2LCAyNDcsIDE5LCAKKyAgICAyMjIsIDIwMCwgMTAzLCAxMTIsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAxMjAsIDc2LCAyNDksIDg5LCAyMjIsIAorICAgIDIwMCwgMTAzLCAxMjYsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAyMzYsIDIyOSwgNzYsIDI0OSwgODksIDIyMiwgCisgICAgMjAwLCAxMDMsIDIzNywgNjEsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAyMDksIDEwNiwgNzYsIDI0OSwgODksIAorICAgIDIyMiwgMjAwLCAxMDMsIDIxMCwgMTM2LCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMjM4LCAyMzIsIDc2LCAyNDksIAorICAgIDg5LCAyMjIsIDIwMCwgMTAzLCAyMTksIDExNCwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDExMiwgNzYsIDI0NiwgCisgICAgMTUyLCAyMjIsIDIwMCwgMTAzLCAxMjAsIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMTI2LCA3NiwgMjQ2LCAxNTIsIAorICAgIDIyMiwgMjAwLCAxMDMsIDIzNiwgMjI5LCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIzNywgNjEsIDc2LCAyNDYsIAorICAgIDE1MiwgMjIyLCAyMDAsIDEwMywgMjA5LCAxMDYsIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjEwLCAxMzYsIDc2LCAKKyAgICAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjM4LCAyMzIsIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjE5LCAxMTQsIAorICAgIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjE1LCAxMTYsIDIyMiwgMjAwLCAxMDMsIDIxNywgMzEsIDIyMiwgMjAwLCAKKyAgICAxMDMsIDI0OSwgOTAsIDIyMiwgMjAwLCAxMDMsIDI0NiwgMTkzLCAyMjIsIDIwMCwgMTAzLCAyMDgsIDE5OSwgMjIyLCAyMDAsIAorICAgIDEwMywgMjA3LCAyMzAsIDIyMiwgMjAwLCAxMDMsIDI1MCwgMTI2LCAyMjIsIDIwMCwgMTAzLCAyMDEsIDcsIDIyMiwgMjAwLCAKKyAgICAxMDMsIDIyNywgMTU5LCAyMjIsIDIwMCwgMTAzLCAyNDksIDEyOSwgMTY2LCAxMDMsIDIzMywgMTc3LCAyNDksIDEyOSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTc1LCAxNjYsIDEwMywgMjMzLCAxNzQsIDE2NiwgMTAzLCAyMzMsIDE3MywgMTY2LCAxMDMsIAorICAgIDIzMywgMTcyLCAxNjYsIDEwMywgMjMzLCAxNzEsIDE2NiwgMTAzLCAyMzMsIDE3MCwgMTY2LCAxMDMsIDIzMywgMTY5LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNjgsIDE2NiwgMTAzLCAyMzMsIDE2NywgMTY2LCAxMDMsIDIzMywgMTY2LCAxNjYsIDEwMywgCisgICAgMjMzLCAxNjUsIDE2NiwgMTAzLCAyMzMsIDE2NCwgMTY2LCAxMDMsIDIzMywgMTYzLCAxNjYsIDEwMywgMjMzLCAxNjIsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE2MSwgMTY2LCAxMDMsIDIzMywgMTYwLCAxNjYsIDEwMywgMjMzLCAxNTksIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE1OCwgMTY2LCAxMDMsIDIzMywgMTU3LCAxNjYsIDEwMywgMjMzLCAxNTYsIDE2NiwgMTAzLCAyMzMsIDE1NSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTU0LCAxNjYsIDEwMywgMjMzLCAxNTMsIDE2NiwgMTAzLCAyMzMsIDE1MiwgMTY2LCAxMDMsIAorICAgIDIzMywgMTUxLCAxNjYsIDEwMywgMjMzLCAxNTAsIDE2NiwgMTAzLCAyMzMsIDE0OSwgMTY2LCAxMDMsIDIzMywgMTQ4LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNDcsIDE2NiwgMTAzLCAyMzMsIDE0NiwgMTY2LCAxMDMsIDIzMywgMTQ1LCAxNjYsIDEwMywgCisgICAgMjMzLCAxNDQsIDE2NiwgMTAzLCAyMzMsIDE0MywgMTY2LCAxMDMsIDIzMywgMTQyLCAxNjYsIDEwMywgMjMzLCAxNDEsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE0MCwgMTY2LCAxMDMsIDIzMywgMTM5LCAxNjYsIDEwMywgMjMzLCAxMzgsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDEzNywgMTY2LCAxMDMsIDIzMywgMTM2LCAxNjYsIDEwMywgMjMzLCAxMzUsIDE2NiwgMTAzLCAyMzMsIDEzNCwgCisgICAgMTY2LCAxMDMsIDIzMywgMTMzLCAxNjYsIDEwMywgMjMzLCAxMzIsIDE2NiwgMTAzLCAyMzMsIDEzMSwgMTY2LCAxMDMsIAorICAgIDIzMywgMTMwLCAxNjYsIDEwMywgMjMzLCAxMjksIDE2NiwgMTAzLCAyMzMsIDEyOCwgMTY2LCAxMDMsIDIzMywgMTI3LCAKKyAgICAxNjYsIDEwMywgODMsIDI0OSwgMTI5LCAxNjYsIDEwMywgMjAzLCA0MSwgMTY2LCAxMDMsIDIwMywgNDAsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDM5LCAxNjYsIDEwMywgMjAzLCAzOCwgMTY2LCAxMDMsIDIwMywgMzcsIDE2NiwgMTAzLCAyMDMsIDM2LCAxNjYsIAorICAgIDEwMywgMjAzLCAzNSwgMTY2LCAxMDMsIDIwMywgMzQsIDE2NiwgMTAzLCAyMDMsIDMzLCAxNjYsIDEwMywgMjAzLCAzMiwgCisgICAgMTY2LCAxMDMsIDIwMywgMzEsIDE2NiwgMTAzLCAyMDMsIDMwLCAxNjYsIDEwMywgMjAzLCAyOSwgMTY2LCAxMDMsIDIwMywgCisgICAgMjgsIDE2NiwgMTAzLCAyMDMsIDI3LCAxNjYsIDEwMywgMjAzLCAyNiwgMTY2LCAxMDMsIDIwMywgMjUsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDI0LCAxNjYsIDEwMywgMjAzLCAyMywgMTY2LCAxMDMsIDIwMywgMjIsIDE2NiwgMTAzLCAyMDMsIDIxLCAxNjYsIAorICAgIDEwMywgMjAzLCAyMCwgMTY2LCAxMDMsIDIwMywgMTksIDE2NiwgMTAzLCAyMDMsIDE4LCAxNjYsIDEwMywgMjAzLCAxNywgCisgICAgMTY2LCAxMDMsIDIwMywgMTYsIDE2NiwgMTAzLCAyMDMsIDE1LCAxNjYsIDEwMywgMjAzLCAxNCwgMTY2LCAxMDMsIDIwMywgCisgICAgMTMsIDE2NiwgMTAzLCAyMDMsIDEyLCAxNjYsIDEwMywgMjAzLCAxMSwgMTY2LCAxMDMsIDIwMywgMTAsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDksIDE2NiwgMTAzLCAyMDMsIDgsIDE2NiwgMTAzLCAyMDMsIDcsIDE2NiwgMTAzLCAyMDMsIDYsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDUsIDE2NiwgMTAzLCAyMDMsIDQsIDE2NiwgMTAzLCAyMDMsIDMsIDE2NiwgMTAzLCAyMDMsIDIsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDEsIDE2NiwgMTAzLCAyMDMsIDAsIDE2NiwgMTAzLCAyMDIsIDI1NSwgMTY2LCAxMDMsIDIwMiwgMjU0LCAxNjYsIAorICAgIDEwMywgMjAyLCAyNTMsIDE2NiwgMTAzLCAyMDIsIDI1MiwgMTY2LCAxMDMsIDIwMiwgMjUxLCAxNjYsIDEwMywgMjAyLCAKKyAgICAyNTAsIDE2NiwgMTAzLCAyMDIsIDI0OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyNDksIDEyOSwgMjE1LCAxMjUsIDI0NywgCisgICAgMTM0LCAyNTEsIDI0NSwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgNzYsIDIwOCwgMjQxLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDEyNiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNiwgMjI5LCA3NiwgMjA4LCAKKyAgICAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwOSwgCisgICAgMTA2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMzgsIDIzMiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxOSwgMTE0LCA3NiwgMjA4LCAKKyAgICAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjcsIAorICAgIDI0NiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMTQsIDgxLCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCAxNDUsIDc2LCAyMDgsIAorICAgIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyNTEsIDI0NSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgCisgICAgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyNiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIzNiwgMjI5LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDIzNCwgMTI1LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwOSwgMTA2LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAKKyAgICAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzgsIDIzMiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIxOSwgMTE0LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyMzQsIDEyNSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMjcsIDI0NiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAKKyAgICAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTQsIDgxLCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjI2LCAxNDUsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTMsIDE3MCwgMjI3LCAxNTksIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjUxLCAyNDUsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgNzYsIDI0MSwgNjMsIAorICAgIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTI2LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzYsIDIyOSwgNzYsIAorICAgIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA5LCAxMDYsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgMjQxLCA2MywgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMzgsIDIzMiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE5LCAxMTQsIDc2LCAKKyAgICAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMjcsIDI0NiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIDI0MSwgNjMsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjE0LCA4MSwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCAxNDUsIDc2LCAKKyAgICAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDYzLCAyMjcsIDE1OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyNTEsIDI0NSwgCisgICAgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTIwLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAxMjYsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNiwgMjI5LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMzcsIDYxLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDksIDEwNiwgNzYsIDI0NiwgCisgICAgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzOCwgCisgICAgMjMyLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTksIDExNCwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNywgMjQ2LCA3NiwgMjQ2LCAKKyAgICA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTQsIAorICAgIDgxLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDE0NSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgNjQsIDIyNywgMTU5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgMCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDYwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0NiwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDQ1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDQsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA0MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQyLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDEsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA0MCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNTgsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU2LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDUzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTIsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1MSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDUwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDgsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA0NywgMTcsIDE5OSwgODIsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMTk5LCA4MiwgMjQ2LCA3MCwgMTcsIDExMiwgCisgICAgMjQ2LCA3MCwgMTcsIDEyMCwgMjQ2LCA3MCwgMTcsIDEyNiwgMjQ2LCA3MCwgMTcsIDIzNiwgMjI5LCAyNDYsIDcwLCAxNywgCisgICAgMjM3LCA2MSwgMjQ2LCA3MCwgMTcsIDIwOSwgMTA2LCAyNDYsIDcwLCAxNywgMjEwLCAxMzYsIDI0NiwgNzAsIDE3LCAyMzgsIAorICAgIDIzMiwgMjQ2LCA3MCwgMTcsIDIxOSwgMTE0LCAyNDYsIDcwLCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxOTksIDgxLCAyNDEsIAorICAgIDE3LCAxODksIDQ0LCA0MywgMTcsIDE5OSwgODEsIDEwNiwgOCwgNiwgMSwgNjIsIDEwNiwgOCwgNiwgMSwgMjUwLCAxMDMsIAorICAgIDEwNiwgOCwgNiwgMSwgMjQ3LCAyMjMsIDEwNiwgOCwgNiwgMSwgMjQyLCAxNTMsIDEwNiwgOCwgNiwgMSwgNzIsIDEwNiwgOCwgCisgICAgNiwgMSwgMjM4LCA1LCAxMDYsIDgsIDYsIDEsIDIzNiwgMTU2LCAxMDYsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxMDYsIDgsIDYsIAorICAgIDEsIDcwLCAxMDYsIDgsIDYsIDEsIDIyNywgMjUxLCAxMDYsIDgsIDYsIDEsIDIyNywgMTE4LCAxMDYsIDgsIDYsIDEsIDE1NiwgCisgICAgMTA2LCA4LCA2LCAxLCAyMjMsIDI0MywgMTA2LCA4LCA2LCAxLCAyMjAsIDIxNCwgMTA2LCA4LCA2LCAxLCA3NCwgMTA2LCA4LCAKKyAgICA2LCAxLCAyMTYsIDIyNiwgMTA2LCA4LCA2LCAxLCAyMTQsIDE2NywgMTA2LCA4LCA2LCAxLCAxNDYsIDEwNiwgOCwgNiwgMSwgCisgICAgMjEyLCAxMjIsIDEwNiwgOCwgNiwgMSwgMjA3LCA4MywgMTA2LCA4LCA2LCAxLCA2NiwgMTA2LCA4LCA2LCAxLCAyMDMsIAorICAgIDE2OCwgMTA2LCA4LCA2LCAxLCAyMDEsIDE0NywgMTA2LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTA2LCA4LCA2LCAxLCAyMDAsIAorICAgIDEyMywgMTA2LCA4LCA2LCAxLCAxOTksIDE1NywgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDgsIDYsIDEsIDIxMiwgCisgICAgMTIyLCA0NCwgMzksIDgsIDYsIDEsIDI0NywgMjIzLCA0NCwgMzksIDgsIDYsIDEsIDE0NiwgNDQsIDI0NywgNzcsIDQ0LCAKKyAgICAyMDAsIDE5NywgOTUsIDgsIDYsIDEsIDYyLCA5NSwgOCwgNiwgMSwgMjUwLCAxMDMsIDk1LCA4LCA2LCAxLCAyNDcsIDIyMywgCisgICAgOTUsIDgsIDYsIDEsIDI0MiwgMTUzLCA5NSwgOCwgNiwgMSwgNzIsIDk1LCA4LCA2LCAxLCAyMzgsIDUsIDk1LCA4LCA2LCAxLCAKKyAgICAyMzYsIDE1NiwgOTUsIDgsIDYsIDEsIDIzNCwgMjQ3LCA5NSwgOCwgNiwgMSwgNzAsIDk1LCA4LCA2LCAxLCAyMjcsIDI1MSwgCisgICAgOTUsIDgsIDYsIDEsIDIyNywgMTE4LCA5NSwgOCwgNiwgMSwgMTU2LCA5NSwgOCwgNiwgMSwgMjIzLCAyNDMsIDk1LCA4LCA2LCAKKyAgICAxLCAyMjAsIDIxNCwgOTUsIDgsIDYsIDEsIDc0LCA5NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDk1LCA4LCA2LCAxLCAyMTQsIAorICAgIDE2NywgOTUsIDgsIDYsIDEsIDE0NiwgOTUsIDgsIDYsIDEsIDIxMiwgMTIyLCA5NSwgOCwgNiwgMSwgMjA3LCA4MywgOTUsIAorICAgIDgsIDYsIDEsIDY2LCA5NSwgOCwgNiwgMSwgMjAzLCAxNjgsIDk1LCA4LCA2LCAxLCAyMDEsIDE0NywgOTUsIDgsIDYsIDEsIAorICAgIDIwMCwgMTk1LCA5NSwgOCwgNiwgMSwgMjAwLCAxMjMsIDk1LCA4LCA2LCAxLCAxOTksIDE1NywgOTUsIDIzMywgNjksIDk1LCAKKyAgICAyMjAsIDIzOCwgOTUsIDIxMSwgMjA0LCA5NSwgMjA4LCAxODIsIDk1LCAyMTUsIDQ1LCA5NSwgMjAxLCA2NSwgMTg5LCA0NCwgCisgICAgOCwgNiwgMSwgNjIsIDE4OSwgNDQsIDgsIDYsIDEsIDI1MCwgMTAzLCAxODksIDQ0LCA4LCA2LCAxLCAyNDcsIDIyMywgMTg5LCAKKyAgICA0NCwgOCwgNiwgMSwgMjQyLCAxNTMsIDE4OSwgNDQsIDgsIDYsIDEsIDcyLCAxODksIDQ0LCA4LCA2LCAxLCAyMzgsIDUsIAorICAgIDE4OSwgNDQsIDgsIDYsIDEsIDIzNiwgMTU2LCAxODksIDQ0LCA4LCA2LCAxLCAyMzQsIDI0NywgMTg5LCA0NCwgOCwgNiwgMSwgCisgICAgNzAsIDE4OSwgNDQsIDgsIDYsIDEsIDIyNywgMjUxLCAxODksIDQ0LCA4LCA2LCAxLCAyMjcsIDExOCwgMTg5LCA0NCwgOCwgCisgICAgNiwgMSwgMTU2LCAxODksIDQ0LCA4LCA2LCAxLCAyMjMsIDI0MywgMTg5LCA0NCwgOCwgNiwgMSwgMjIwLCAyMTQsIDE4OSwgCisgICAgNDQsIDgsIDYsIDEsIDc0LCAxODksIDQ0LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTg5LCA0NCwgOCwgNiwgMSwgMjE0LCAxNjcsIAorICAgIDE4OSwgNDQsIDgsIDYsIDEsIDE0NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjEyLCAxMjIsIDE4OSwgNDQsIDgsIDYsIDEsIDIwNywgCisgICAgODMsIDE4OSwgNDQsIDgsIDYsIDEsIDY2LCAxODksIDQ0LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTg5LCA0NCwgOCwgNiwgMSwgCisgICAgMjAxLCAxNDcsIDE4OSwgNDQsIDgsIDYsIDEsIDIwMCwgMTk1LCAxODksIDQ0LCA4LCA2LCAxLCAyMDAsIDEyMywgMTg5LCAKKyAgICA0NCwgOCwgNiwgMSwgMTk5LCAxNTcsIDIxMywgMjIwLCAyMjIsIDgyLCA1NCwgMjEzLCAyMjAsIDIyMiwgNzksIDU0LCAxODksIAorICAgIDk1LCA4LCA2LCAxLCA2MiwgMTg5LCA5NSwgOCwgNiwgMSwgMjUwLCAxMDMsIDE4OSwgOTUsIDgsIDYsIDEsIDI0NywgMjIzLCAKKyAgICAxODksIDk1LCA4LCA2LCAxLCAyNDIsIDE1MywgMTg5LCA5NSwgOCwgNiwgMSwgNzIsIDE4OSwgOTUsIDgsIDYsIDEsIDIzOCwgCisgICAgNSwgMTg5LCA5NSwgOCwgNiwgMSwgMjM2LCAxNTYsIDE4OSwgOTUsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxODksIDk1LCA4LCA2LCAKKyAgICAxLCA3MCwgMTg5LCA5NSwgOCwgNiwgMSwgMjI3LCAyNTEsIDE4OSwgOTUsIDgsIDYsIDEsIDIyNywgMTE4LCAxODksIDk1LCAKKyAgICA4LCA2LCAxLCAxNTYsIDE4OSwgOTUsIDgsIDYsIDEsIDIyMywgMjQzLCAxODksIDk1LCA4LCA2LCAxLCAyMjAsIDIxNCwgCisgICAgMTg5LCA5NSwgOCwgNiwgMSwgNzQsIDE4OSwgOTUsIDgsIDYsIDEsIDIxNiwgMjI2LCAxODksIDk1LCA4LCA2LCAxLCAyMTQsIAorICAgIDE2NywgMTg5LCA5NSwgOCwgNiwgMSwgMTQ2LCAxODksIDk1LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTg5LCA5NSwgOCwgNiwgMSwgCisgICAgMjA3LCA4MywgMTg5LCA5NSwgOCwgNiwgMSwgNjYsIDE4OSwgOTUsIDgsIDYsIDEsIDIwMywgMTY4LCAxODksIDk1LCA4LCA2LCAKKyAgICAxLCAyMDEsIDE0NywgMTg5LCA5NSwgOCwgNiwgMSwgMjAwLCAxOTUsIDE4OSwgOTUsIDgsIDYsIDEsIDIwMCwgMTIzLCAxODksIAorICAgIDk1LCA4LCA2LCAxLCAxOTksIDE1NywgMjQyLCAyMzIsIDE4OSwgOTUsIDgsIDYsIDEsIDIxNiwgMjI2LCAxODksIDk1LCAKKyAgICAyMzIsIDIzMywgMTg5LCA5NSwgMTcyLCAxODksIDk1LCAyMTIsIDY0LCAxODksIDk1LCAyNTIsIDg5LCAxODksIDk1LCAyMDEsIAorICAgIDY1LCA1MiwgMjQwLCAyMzAsIDk1LCAyNDYsIDEzNiwgOTUsIDI0MywgMjYsIDk1LCAyMzYsIDIxMCwgOTUsIDIzMiwgMjI0LCAKKyAgICA5NSwgMjIwLCA3LCA5NSwgMjE5LCAyNTUsIDk1LCAyMTcsIDk4LCA5NSwgMjA5LCA1LCA5NSwgMTE1LCAzLCAyMzgsIDQzLCAKKyAgICA4MSwgOTUsIDIwMiwgMTY5LCA5NSwgMTI2LCAyNDIsIDE1MywgOTUsIDIxMSwgMTk2LCAyMTEsIDIwOSwgOTUsIDEyMCwgCisgICAgMjI3LCAxMTgsIDk1LCAyMzYsIDIyOSwgMjI3LCAxMTgsIDk1LCAyMzgsIDIzMiwgMjI3LCAxMTgsIDk1LCAyMzcsIDYxLCAKKyAgICAyMTUsIDEwMCwgMTAyLCA5NSwgMjEwLCAxMzYsIDIxNSwgMTAwLCAxMDIsIDk1LCAyMDQsIDE0OSwgMjE1LCAxMDAsIDEwNSwgCisgICAgOTUsIDIwOSwgOTMsIDIxNiwgMjI2LCA5NSwgMTEyLCAyMzMsIDgzLCAyMDQsIDE2MCwgMjE2LCAyMjYsIDk1LCA4LCA0LCAxLCAKKyAgICAyNDIsIDE1MywgOTUsIDIzNCwgMTQyLCA5NSwgMjM0LCAxNDEsIDk1LCAyMzQsIDc0LCA5NSwgMjI0LCA2NiwgOTUsIDIwOSwgCisgICAgMjAxLCA5NSwgMjA0LCAyNCwgOTUsIDIwMiwgMTkwLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA2MiwgMjEzLCAxNjIsIAorICAgIDIyOCwgMTAwLCAxNiwgMSwgMjUwLCAxMDMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDI0NywgMjIzLCAyMTMsIDE2MiwgCisgICAgMjI4LCAxMDAsIDE2LCAxLCAyNDIsIDE1MywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNzIsIDIxMywgMTYyLCAyMjgsIAorICAgIDEwMCwgMTYsIDEsIDIzOCwgNSwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjM2LCAxNTYsIDIxMywgMTYyLCAyMjgsIAorICAgIDEwMCwgMTYsIDEsIDIzNCwgMjQ3LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA3MCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAKKyAgICAxNiwgMSwgMjI3LCAyNTEsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIyNywgMTE4LCAyMTMsIDE2MiwgMjI4LCAxMDAsIAorICAgIDE2LCAxLCAxNTYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIyMywgMjQzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAKKyAgICAxLCAyMjAsIDIxNCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNzQsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIAorICAgIDIxNiwgMjI2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMTQsIDE2NywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgCisgICAgMTQ2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMTIsIDEyMiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjA3LCAKKyAgICA4MywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNjYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMywgMTY4LCAKKyAgICAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDEsIDE0NywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAwLCAxOTUsIAorICAgIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMCwgMTIzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAxOTksIDE1NywgCisgICAgNTIsIDE3NywgMjMzLCAyMDEsIDk1LCA2OSwgMjI2LCA3NiwgOTUsIDY5LCAyMTIsIDY0LCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE2OSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzMsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgxLCA5NSwgNjksIAorICAgIDI0MSwgMTc1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzUsIDk1LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTQ3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3NCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAKKyAgICAxODcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTYxLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1NCwgOTUsIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNjMsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg0LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MCwgCisgICAgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTYyLCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE4NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTUzLCA5NSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE0NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgCisgICAgMTc4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjcsIDk1LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTY1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE5MSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxOTAsIAorICAgIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQ0LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MSwgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxODksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgwLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2NiwgOTUsIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNDUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIAorICAgIDE1MCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc5LCA5NSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE1NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTYwLCAKKyAgICA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1MiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODMsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTc3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0MywgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNTgsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTkwLCAKKyAgICAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4OCwgMjA1LCAxNDYsIDIxMCwgNTUsIAorICAgIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzIsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTU1LCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2OCwgMjA1LCAKKyAgICAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIAorICAgIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgyLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE2NCwgNDQsIDE5OCwgMTk4LCAyNTEsIDIyMywgNDQsIDE5OCwgMTk4LCAyNTEsIDI0OSwgMjQyLCAxNjQsIDIzNywgCisgICAgMTEsIDI0NiwgMTEwLCAyMDQsIDksIDIxOSwgMTMwLCAzLCAyMDgsIDEwNiwgMjA3LCAyMjMsIDExOSwgMjIxLCA2MiwgMjA3LCAKKyAgICAyMjIsIDI0NiwgMTQwLCAyNTAsIDE1NiwgMjM5LCAxMTEsIDIwNywgMjIxLCAxMTksIDI0OCwgMjUsIDIxMywgMjIxLCAyNDgsIAorICAgIDUxLCAyNTAsIDE1NiwgMjE5LCAxMjksIDIwMSwgODMsIDIwMSwgNzcsIDIwMiwgMTg0LCAyMjEsIDE3MiwgMjAxLCA2NywgCisgICAgMjM5LCAxOCwgMjM1LCAxMjQsIDIzOCwgNTksIDIzOSwgMTgsIDIzNSwgMTI0LCAyNTEsIDkyLCAyMzksIDE4LCAyMzUsIAorICAgIDEyNCwgMjUwLCAxNzQsIDIzNSwgMTI0LCAzLCAyMjIsIDMxLCAyMjAsIDgsIDIyMSwgODIsIDk5LCAyMDEsIDY5LCAyNDIsIAorICAgIDI0NCwgMjIxLCA4MiwgOTksIDIzNywgNzMsIDIxNCwgODgsIDIyMSwgODIsIDk5LCAyMDEsIDY5LCAyMzUsIDE1NywgMjIxLCAKKyAgICA4MiwgOTksIDIzNiwgMTgzLCAyMjEsIDgyLCA5OSwgMjAxLCA5NywgMjM1LCAxNTcsIDIyMSwgODIsIDk5LCAyMjUsIDY0LCAKKyAgICAyMTQsIDg4LCAyMjEsIDgyLCA5OSwgMjAxLCA5NywgMjQyLCAyNDQsIDIyMSwgODIsIDk5LCAyNDIsIDI0NCwgMjIxLCA4MSwgCisgICAgMjIwLCA4LCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgMjM3LCA3MywgMjE0LCA4OCwgMjIxLCA4MiwgMywgMjM3LCAxODksIAorICAgIDIyNSwgNjQsIDIxNCwgODgsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAyMzYsIDE4MywgMjIxLCA4MiwgMywgMjM3LCAxODksIAorICAgIDIwNywgMjI5LCAzLCAyMzcsIDE4OSwgMjM1LCAxMjEsIDIwOCwgMTA5LCAyMDksIDI1NSwgMjA4LCAxMDksIDIwNiwgOTQsIAorICAgIDYzLCAyMzksIDE0NSwgNjQsIDIwNywgMjI4LCA2NCwgMjA3LCAyMjksIDMsIDQsIDI0NiwgMTAxLCA2NCwgMjA3LCAyMjksIAorICAgIDI0OCwgMjM3LCAyNDYsIDEwMSwgNjQsIDIwNywgMjI5LCAyNDgsIDIzNywgMjQ2LCAxMDIsIDMsIDIxMywgMjIyLCAyNDYsIAorICAgIDEwMiwgMywgMjEzLCAyMjIsIDI0NiwgMTAyLCAzLCAyMDksIDM1LCAyNDYsIDEwMiwgMywgMjI0LCAxOTMsIDI0NiwgMTAyLCAKKyAgICAzLCAyMDUsIDE1MCwgMjM3LCAxMiwgMjAxLCAxNywgMjQ4LCAxMjgsIDIzNywgMTg5LCAyMzMsIDExOCwgMjQwLCAyMDAsIAorICAgIDIwNywgMTYsIDI0OCwgMSwgMjQ2LCAyNDIsIDIxMSwgMTg4LCAyMzgsIDUzLCAyMDUsIDEwOCwgMjQxLCAxNjksIDIwNSwgCisgICAgMTA4LCAyMTYsIDE3NywgMjA1LCAxMDgsIDI0NywgMTgzLCAyMzMsIDExOCwgMjE2LCAyOSwgMjA0LCAyMDUsIDI0NiwgMjQ2LCAKKyAgICAyNDgsIDEzMSwgMjEyLCAyMzIsIDIzNCwgNzMsIDIwNywgMjI2LCAyNDgsIDEzMSwgMjM5LCAyMiwgNzYsIDIyMiwgMTg5LCAKKyAgICAyMzksIDIyLCA3NiwgMjEzLCA4MywgMjM0LCAxMDAsIDIzNiwgMjI5LCAyMjUsIDM2LCAyNDYsIDEwMCwgMjIyLCAxNjIsIAorICAgIDIyNSwgMzUsIDIzNywgMTcyLCAyMjUsIDM1LCAyMjUsIDM2LCAyMzcsIDE5LCAyMjgsIDExOCwgMjAxLCAxNiwgMjIwLCAKKyAgICAyNDcsIDIwNSwgMTc4LCAyNTAsIDEzOCwgMjM1LCA4MSwgMjIyLCA0OSwgMjAxLCA4MSwgMjA2LCAyMzksIDIyNSwgNSwgCisgICAgMjQ5LCA4NSwgMjE1LCAxNTcsIDIxMywgMTcwLCAyNTEsIDEwLCAyMzUsIDY0LCAyNTEsIDEwLCAyMTYsIDY3LCAyMTYsIDcwLCAKKyAgICAyNDYsIDI0NywgMjA4LCA2MCwgMjM0LCAyMDgsIDIwOSwgNjgsIDc2LCAyMTUsIDEzNywgMjIyLCA3MiwgMjE3LCA3OSwgCisgICAgMjQ4LCAxMTIsIDIxNSwgNTcsIDIyNSwgMTYsIDIxMywgODQsIDI0MiwgMjUwLCAyMTMsIDg0LCAyNDksIDk3LCAyNDMsIDI5LCAKKyAgICAyMTMsIDgzLCAyNDIsIDE5MiwgMjYsIDIxMywgODMsIDIwOCwgOTQsIDI0OCwgODIsIDIwOCwgMjQwLCAyNDgsIDYyLCAyMzYsIAorICAgIDIwOSwgMjM2LCAyMDUsIDIxMiwgMjUzLCAyMDcsIDE3OSwgMjE1LCA1OSwgMjQyLCA3LCAyMTcsIDEyMywgMjA3LCAxOTcsIAorICAgIDIzNiwgMjA2LCAyMDksIDIyNiwgMjM3LCA3MiwgMjQ3LCAxNzcsIDMsIDIwNywgMTcyLCAyNDEsIDExMiwgMjA5LCAyMywgCisgICAgMjMyLCAyMzIsIDI0MiwgMjQ4LCAyMTAsIDczLCAyMzIsIDIzMSwgMjMyLCAyMzIsIDI0MiwgMjQ4LCAyMzksIDE3MCwgMjQzLCAKKyAgICAyOCwgMjQ2LCAyMDgsIDE0OCwgMjQ3LCAxNDgsIDIyNCwgOTMsIDI0MiwgMTgzLCAyMzMsIDE5MCwgMjE1LCA2MSwgMjA5LCAKKyAgICAyMzksIDI0OCwgMjE4LCAyNDgsIDc4LCAyMTUsIDYyLCA3NiwgMjM3LCAxLCAyNDMsIDI3LCAyMzYsIDI0NiwgMjYsIDIyNiwgCisgICAgOTUsIDIwNiwgMTk4LCAyMDEsIDMsIDIzNCwgMTc3LCAyMTIsIDQxLCAyNDgsIDk1LCAyNiwgMjQyLCAyMDIsIDIwMSwgMTMsIAorICAgIDIzNSwgMTI4LCAyNDYsIDg4LCAyMzUsIDEyOCwgMjA1LCA2MywgMjM5LCAxNTEsIDI0OCwgMjQ4LCAyMjEsIDMwLCAyNDYsIAorICAgIDExNywgMjQ4LCAyNDgsIDIyMSwgMjksIDI0OSwgMTMyLCAyNDgsIDk0LCAyMzYsIDI0NiwgMjYsIDIyNiwgOTYsIDMsIDIxNSwgCisgICAgMTI2LCAyNDgsIDk1LCAzLCAyMTUsIDc0LCAyNDMsIDE3LCAyMTUsIDc2LCAyMTMsIDg1LCAyMDAsIDIyNywgMjE1LCAyMCwgCisgICAgMjQ4LCAxNTksIDI0NywgMTc2LCAyMjcsIDI0NSwgMjQ2LCAyMDAsIDIwNSwgMTA4LCAyMzcsIDE1NSwgMjQ2LCAxOTksIAorICAgIDIzNywgNzUsIDIzNywgNzYsIDIwOCwgMjM4LCAyNDksIDk2LCAyMTYsIDEwNSwgMjE1LCA3NSwgMjQzLCA2NSwgMjQ5LCA5NywgCisgICAgMjA2LCAyNDMsIDIwNSwgMTA4LCAyNDIsIDIzMiwgMjM3LCA0NywgMjE1LCAxNTgsIDI0MSwgMTY2LCAyMjcsIDIzNiwgMjQwLCAKKyAgICAxOTMsIDI0NywgMTIzLCAyMDgsIDU5LCAyMDEsIDE3LCAyNDYsIDIyNCwgMjIxLCA4MiwgMjAyLCAyMjEsIDI0NywgNDIsIAorICAgIDIxMSwgMjIyLCAyMTEsIDI0OSwgMjM1LCA4NywgMjQ3LCAxNDQsIDIzNCwgMTI4LCAzLCAyMDUsIDIyNCwgMjE3LCA3OSwgCisgICAgMjA2LCAxMDcsIDIyNSwgMjgsIDI0OCwgODgsIDc2LCAyMzcsIDIzLCAyMjEsIDE3NCwgMjIyLCA2OSwgMjEzLCAxNDIsIAorICAgIDIxMywgODUsIDMyLCAyMjYsIDIxMywgMywgMjI3LCAyNDQsIDIwOCwgMzAsIDIyMSwgMjA4LCAyMjQsIDIyOSwgMjA5LCA2NiwgCisgICAgMjQzLCAzNCwgMjI2LCA5MiwgMjQ5LCA0LCAyNTAsIDE4NCwgMzIsIDIxOCwgMjA0LCAyNDksIDQsIDI0MSwgMTE4LCAzMiwgCisgICAgMjE4LCAyMDQsIDIzNywgOTAsIDIzNiwgMjE0LCAyNTEsIDIyNiwgMjA2LCA5LCAyNDcsIDEyNCwgMjMzLCAxMjAsIDIzNywgCisgICAgMTIxLCAyMDEsIDM3LCAyMTIsIDI0MywgMjQ2LCA4OSwgMjM3LCA2NywgMjE1LCA5MSwgMjYsIDIzNywgNzEsIDIyMSwgMjA4LCAKKyAgICAyMjEsIDQ4LCAyNDcsIDE2MiwgMjQ2LCAxNTksIDIzNCwgMTMyLCAyNTAsIDE5MywgMjE2LCAxODAsIDIwNSwgMTU4LCAyMzQsIAorICAgIDE1NywgMjQ2LCAxNDUsIDIwNiwgMTU4LCAyMDYsIDEwLCAyNDYsIDEzMSwgMjQ4LCAxMjEsIDIxNiwgMjIsIDI1MCwgMTkxLCAKKyAgICAyMDIsIDIzMCwgMjM2LCA2MywgMjQxLCAxMCwgMjM0LCA0NSwgMjA5LCA1OSwgMjIyLCAyMzAsIDI0OCwgMTcxLCAyMzYsIAorICAgIDY0LCAyNDEsIDU2LCAyNDgsIDgxLCAyMzcsIDI1LCAyMTUsIDEyNSwgMjQ3LCAxMzIsIDMyLCAyMTgsIDIwOSwgMjIxLCAyMSwgCisgICAgMzIsIDIxOCwgMjA0LCAyMTEsIDIzNSwgMjM1LCAzNCwgMzIsIDIyNiwgMjEyLCAyMDUsIDM5LCAyMDIsIDIxMCwgMzIsIAorICAgIDIxMSwgMjE0LCAyMTIsIDE1NSwgMjEwLCAxMiwgMywgMjExLCAyNTIsIDIwNiwgMTYzLCAyMTMsIDI0MSwgMjYsIDI0OSwgCisgICAgOTcsIDIwOSwgODUsIDI2LCAyMDksIDg1LCAyNDgsIDEwNSwgMjQ5LCA1OSwgMjYsIDIzMywgMTgzLCAyNDYsIDI0OCwgMjM3LCAKKyAgICA1MywgMjA5LCAzNCwgMjEyLCAxNTYsIDIwNywgMjAyLCAyMDgsIDIwNSwgMjIyLCA2OSwgMjA1LCA2NCwgMjMzLCAxMjEsIAorICAgIDIxMywgMjQyLCAyNTEsIDkzLCAyMzYsIDI1NCwgMjEyLCAxNjksIDIzNiwgMjU0LCAyMDcsIDE3NCwgMjAxLCA1MywgMjI0LCAKKyAgICAxOTgsIDIzNSwgMTA3LCAyMTMsIDI0MywgMjIxLCA2OSwgMjEzLCAyNDMsIDI0NywgMTM1LCAyNDIsIDI0MSwgMjQ5LCA1NiwgCisgICAgMjYsIDI0OSwgOTcsIDIwMiwgMTgzLCAyMzcsIDExMSwgMjMzLCAyMDQsIDIwOCwgODgsIDI2LCAyNDksIDk3LCAyMzIsIAorICAgIDIzMiwgMjMzLCAyMDQsIDIwOCwgODgsIDI2LCAyMTQsIDIxNywgMjA3LCAyMywgMjA2LCAxNjMsIDIxNiwgMTk4LCAyNiwgCisgICAgMjQ5LCA5NywgMjA5LCAzNiwgMjQ3LCAxNDAsIDIyMSwgNjMsIDI0NywgMTYwLCAyNDksIDcsIDMsIDIwNCwgOSwgMjQ4LCAKKyAgICAyNywgMjQzLCA0OCwgMjMzLCAxMTAsIDI0OCwgMjUsIDI0NiwgMTM5LCAyNDEsIDEyMiwgMjMzLCAxMTAsIDI0OCwgMjYsIAorICAgIDI0NiwgMTI5LCAyNDgsIDI2LCAyNDEsIDExNCwgMjQxLCAxMTUsIDIyOCwgMTksIDIyMCwgMTE4LCAyMTYsIDExMSwgMjA4LCAKKyAgICAxMTksIDIzMywgMTEwLCAyNDgsIDI2LCAyMzMsIDExMCwgMywgMjM2LCA0NywgMjE3LCAxMTUsIDI0OCwgMjYsIDIyNywgCisgICAgMjM2LCAyMTUsIDY3LCAyMTcsIDExNCwgMjM4LCA1OCwgMjE1LCA2NywgMjE3LCAxMTQsIDIzMywgMTE5LCAyNDksIDgxLCAKKyAgICAyNTAsIDEyOCwgMjA2LCAxNzEsIDIyMiwgMjMwLCAyMzMsIDExNSwgMjI0LCA2MCwgMjMzLCAxMTUsIDI0MywgMzIsIDIwOCwgCisgICAgNzIsIDIxMSwgMjIxLCAyNDEsIDEyNSwgMjA4LCA3MiwgMjM3LCAxNzgsIDIyOCwgMCwgMjI1LCA3NiwgMjI3LCAyMzYsIAorICAgIDI0NywgMTEzLCAyMzgsIDU4LCAyNDcsIDExMywgNjQsIDIxNiwgNDEsIDYzLCAyMTYsIDQxLCAyMDEsIDc1LCA2NCwgMjM3LCAKKyAgICA1MywgMjAxLCA3NSwgNjMsIDIzNywgNTMsIDIxMiwgMjMxLCA2MywgMjEyLCAyMzEsIDIyNSwgMTY4LCAyNDksIDExNSwgCisgICAgMjEzLCAyNDEsIDI2LCAyMDksIDIwNCwgMjQ4LCA4NiwgMjYsIDQ4LCAyNTEsIDg4LCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIAorICAgIDIwNCwgMTI2LCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgMTIzLCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgCisgICAgMTIxLCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgMTE5LCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgMTE3LCAKKyAgICAyMTMsIDIwNCwgMjIxLCA2MCwgMjE2LCAyMzUsIDIwMSwgODMsIDI0OCwgMzEsIDI0MiwgMjU1LCAyMDYsIDIsIDIyNCwgCisgICAgMjQ1LCAyMTMsIDI0NCwgMjQ3LCAxMTEsIDIzOSwgMTU4LCAyNDIsIDI0MCwgMjAxLCA0MCwgMjA5LCA0MywgMjA5LCA0MSwgCisgICAgMjMzLCAxMjAsIDIxMywgMjE2LCAyMzUsIDExMiwgMjEwLCA1OSwgMjIxLCAxMDAsIDIxMiwgMjM1LCAyNDYsIDIzNCwgMjQwLCAKKyAgICAyMDAsIDIxNSwgMTY4LCAyNDgsIDEyMiwgMjM4LCAyMDEsIDIxNywgMTI2LCAyMDgsIDIxOCwgMjEwLCA1NCwgMjQ4LCAzMCwgCisgICAgMjUxLCA1MSwgMjMzLCAxODksIDIyNSwgMTYxLCAyNDgsIDI0NiwgMjM3LCA3MSwgMjA1LCA2MywgMjM3LCA3MSwgMjQ4LCAKKyAgICAxMjksIDIwNCwgMTgyLCAyMzQsIDE1NSwgMjQ2LCAyMzUsIDI0OSwgMTMyLCAyNDYsIDIzNSwgMjM2LCAxOTksIDI0OSwgCisgICAgMTMyLCAyNDYsIDIzNSwgMjQ4LCAxNjIsIDIxNiwgNDMsIDIyNiwgODYsIDIxNSwgODAsIDIzOSwgMTQ4LCAyNDcsIDE2NCwgCisgICAgMjQ5LCAxMjAsIDI0NywgMTY0LCAyNDAsIDE5MiwgMjIxLCA2MSwgMjM3LCAxODksIDI0MywgMCwgMjM3LCAxODksIDIwNiwgCisgICAgMywgMjM3LCAxODksIDIxMywgMjQ1LCAyMzcsIDE4OSwgMjQ3LCAxMTIsIDIzNywgMTg5LCAyMzksIDE1OSwgMjM3LCAxODksIAorICAgIDIwOCwgMjAzLCAyMDEsIDQwLCAyMzMsIDEyMSwgMjM3LCAxODksIDIyMSwgMTAxLCAyMzcsIDE4OSwgMjQwLCAyMDEsIDIzNywgCisgICAgMTg5LCAyMTUsIDE2OSwgMjM3LCAxODksIDIzNiwgMjAzLCAyMzcsIDE4OSwgMjM0LCAyMDUsIDIzNywgMTg5LCAyMDAsIAorICAgIDI1MywgMjM3LCAxODksIDI0OSwgMiwgMjM3LCAxODksIDIxNiwgMTU5LCAyMzcsIDE4OSwgMjE1LCAxNjksIDIxOCwgMjE2LCAKKyAgICAyMTYsIDg1LCAyMTUsIDcsIDI0NiwgMjE5LCAyMzgsIDE1LCAyMzgsIDIyLCAyMzksIDIxLCAyMTgsIDIxNiwgMjIxLCA1OCwgCisgICAgMjA1LCAxNjMsIDY0LCAxMTUsIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjQsIDEyNywgMjE1LCA5NiwgMjQ5LCAKKyAgICAxMjcsIDIyOCwgMTAzLCA2NCwgNDksIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjQsIDUxLCAyMTUsIDk2LCAyNDksIAorICAgIDEyNywgMjI4LCAxMDMsIDIzNywgNjUsIDIzNCwgMjAwLCA1NCwgMjAxLCA3NSwgMjM0LCAyMDAsIDU0LCAyMTcsIDk5LCAKKyAgICAyMzQsIDIwMCwgNTQsIDIwNiwgMzMsIDExNSwgNTQsIDIwNiwgMzMsIDEyNywgNTQsIDI0NiwgMTMwLCAyMzQsIDE3NSwgNTQsIAorICAgIDE3NiwgMjM0LCAxNzUsIDU0LCAyNDIsIDIyNiwgMjAwLCAyNDksIDIzNCwgMTU3LCAyMzgsIDE4LCAyMjAsIDMwLCAyMDcsIAorICAgIDgyLCAyMjcsIDIyNiwgMjM5LCAxNTMsIDIyNiwgMTQ4LCAyNDgsIDE3MywgMjAwLCAyNDksIDI0NiwgMTAzLCAyMTQsIDE5OCwgCisgICAgMjM0LCAxNzksIDIxNSwgNTgsIDIyMiwgMTcwLCAyMTAsIDUsIDI1MCwgMTUxLCAyMTAsIDUsIDIzNCwgNTgsIDIxMCwgNSwgCisgICAgMjAwLCAyNDksIDIxMiwgMTAsIDIwMCwgMjQ5LCAyNDgsIDEwNCwgMjM2LCAyNTIsIDI0NywgMjQ5LCAyMjgsIDExOCwgMjA5LCAKKyAgICAxNTUsIDI0NywgMjQ4LCAyMjgsIDExOCwgMjA5LCAxNTUsIDI0OCwgNzYsIDIzNSwgMTQwLCAyMjIsIDE4MCwgMjAwLCAyNTAsIAorICAgIDIzNywgMTY5LCAyMjIsIDE4MSwgMjYsIDIwMCwgMjUxLCAyMzMsIDE5OCwgMjM0LCAxNzQsIDEyMCwgMjIyLCA0MSwgMjMzLCAKKyAgICAxOTgsIDIzNCwgMTc0LCAxMjAsIDIwMCwgMjQ4LCAyMzMsIDE5OCwgMjM0LCAxNzQsIDIxNSwgODgsIDIxNywgMTEzLCAyMDAsIAorICAgIDI1MSwgMywgMjQ4LCAxMSwgMjM5LCAxOSwgMjQ4LCA1MiwgMywgMjAzLCA1MCwgMjE2LCAxMSwgMywgMjQ4LCAxMzMsIDIzNCwgCisgICAgMjIxLCAyMjIsIDE4MSwgMywgMjM1LCA0NywgMjE1LCAyMDUsIDIyMiwgMTY2LCAyMjIsIDE4MSwgMywgMjA0LCAxOTEsIAorICAgIDIxNywgOTEsIDIyMiwgMTgwLCAyMTcsIDkxLCAyMDAsIDI1MCwgMjQ5LCAxMzEsIDI0MywgNDksIDIwMCwgMjM0LCAyMTUsIAorICAgIDEyLCAyMjcsIDIzNiwgMjE3LCAxMDksIDIyNywgMjM2LCAyMzUsIDExMSwgMjM1LCAxNjksIDI0OSwgMTMyLCAyNTEsIDc0LCAKKyAgICAyMzgsIDI3LCAyNTEsIDEzMiwgMjUxLCAxMzMsIDIyMSwgOTEsIDIyOCwgMTIzLCAyMDksIDgwLCAyMjgsIDkyLCAyNDEsIAorICAgIDExMSwgMjE2LCAxMCwgMjM1LCA0MSwgMjQyLCAxMiwgMjI0LCAxNTksIDIyMCwgMTQyLCAyMTUsIDg3LCAyMzcsIDE5MCwgCisgICAgMjIyLCAxMzAsIDIzNCwgMjIwLCAyNDksIDc1LCAyMTUsIDkwLCAyMDcsIDEwMiwgMjE1LCAxNjEsIDIyNiwgMTMwLCA4MSwgCisgICAgMjI0LCA2MCwgMjI0LCAyMzYsIDIxMywgMjYsIDIzNiwgNSwgMjA4LCA3OCwgMjI2LCAxMjksIDI0OCwgODcsIDI0MywgMiwgCisgICAgMywgMjM0LCAxMjcsIDIwMSwgNjAsIDI0OSwgMCwgMjM0LCAxMjcsIDI0OCwgNDYsIDIzNCwgMTI3LCAxMjAsIDIzNCwgMTI1LCAKKyAgICAyMDgsIDIzNiwgMjM0LCAxMjcsIDIzNSwgNTcsIDIzNCwgMTI3LCAyMzQsIDEyOCwgMywgNDgsIDI0OCwgMTI3LCAyMzQsIAorICAgIDEyNywgMjM1LCA2NCwgMjM0LCAxMjcsIDIwMCwgNDQsIDIzNCwgMTI3LCAyMTQsIDE5OSwgMjM0LCAxMjcsIDIzNCwgMTI4LCAKKyAgICAzLCAyMTMsIDg1LCAyMTMsIDk5LCAyMzQsIDEyNSwgMjM0LCAxMjgsIDI0MSwgMTY2LCAyNDEsIDY1LCAyMTAsIDg2LCAzLCAKKyAgICAzNSwgNzMsIDIyOCwgNzMsIDIzOCwgMjA0LCAxNjIsIDI0OCwgMjMsIDI1MSwgNzMsIDk5LCAyNDgsIDExMywgMjA5LCA3MSwgCisgICAgOTksIDI0NiwgODEsIDk5LCAyMDgsIDIxMiwgMjA3LCAxODEsIDk5LCAyMzksIDE0NSwgMjQxLCAyNDUsIDk5LCAyMTUsIAorICAgIDE2MiwgNzYsIDIxNSwgODEsIDIzNywgMzcsIDI0OCwgMTg1LCAyNDAsIDIzMSwgOTksIDIwOCwgMjI4LCAyNDksIDk2LCAKKyAgICAyMDYsIDUyLCAyNDksIDk2LCA2NCwgMjM3LCAyNCwgMjMzLCA4MywgMjE1LCA5NCwgOTksIDIyMSwgMTA1LCAyNDksIDExMywgCisgICAgMjQyLCAxOTUsIDIzOCwgNDUsIDgwLCAyNDAsIDE5NCwgNTQsIDI0MiwgMjQ2LCAyNDcsIDEzMywgMjQ5LCA4MCwgMywgMjAwLCAKKyAgICA0MiwgNTQsIDI0OSwgODAsIDMsIDI0MCwgMTk0LCA1NCwgMjQ5LCA4MCwgMywgMjM4LCA2MSwgNTQsIDI0OSwgODAsIDMsIAorICAgIDIxNSwgNTYsIDU0LCAyMjEsIDEwNSwgMywgMjAxLCAxMSwgMjQ3LCAxNiwgMywgMTgyLCAyMDUsIDEwNCwgMjYsIDIwMCwgCisgICAgNDIsIDU0LCAyMTEsIDE5OSwgMjE2LCA5LCAyNDMsIDcwLCAyNDgsIDUwLCAyMjEsIDE2MiwgMjM3LCAyOSwgMjQwLCAyNTMsIAorICAgIDIxNywgMzcsIDI0MSwgMiwgMjM5LCAxMDYsIDIzNywgOTcsIDIzNywgOSwgMTc2LCAyMzcsIDk3LCAyMzcsIDksIDIxNiwgCisgICAgMTk2LCAzLCAyNDIsIDE5OCwgMjE2LCAxOTYsIDIzNywgMTgyLCAyMDMsIDIyOCwgMjQ3LCAxNzAsIDIwNiwgMTk3LCAyNDcsIAorICAgIDE3MCwgMjQ3LCAxMzQsIDIyOCwgMTAzLCAyNDcsIDE2LCAzLCAxODIsIDIwNSwgMTAzLCAyNDcsIDE2LCAzLCAxOTEsIDIwNSwgCisgICAgMTAzLCAyNDksIDc3LCAyNDcsIDE1LCAyNDYsIDExNiwgMjE0LCAxOTQsIDIxMiwgMjIxLCAyMTQsIDE5NCwgMjE2LCAxMzMsIAorICAgIDIwOCwgNjgsIDIxMiwgMTYzLCAyMDUsIDk1LCAyMTIsIDE2MywgMjQ4LCAxMDksIDIwNywgMjEsIDIyNSwgMzMsIDIxOCwgCisgICAgMjA3LCAyMTgsIDIwOCwgMywgMjQxLCAxNjUsIDI0MywgMSwgMjQ2LCAxMTAsIDI0OCwgMTEwLCAxNzYsIDI0OCwgMTEwLCAKKyAgICAyMzUsIDY0LCAyNDgsIDExMCwgMjQ4LCAxMjcsIDI0OCwgMTEwLCAyMTcsIDMyLCAyNDgsIDExMCwgMjQ4LCAxMDcsIDIyMCwgCisgICAgMTM2LCAyNDksIDExNywgMjExLCAyMDcsIDIyMiwgNDIsIDIwNiwgMTc2LCAyMTMsIDE4NCwgMjE2LCAxOTQsIDIzNywgMTUyLCAKKyAgICAyMjIsIDIzMCwgMjExLCAyNDgsIDI1MSwgNDgsIDIxNCwgMjE4LCAyNTEsIDIzMiwgMjI0LCA2MiwgMjQ3LCAwLCAyMjIsIAorICAgIDU0LCAyMTYsIDI1MywgMjA1LCAxMTEsIDIyOCwgMTE0LCAyMDUsIDExMSwgMjE2LCAyMDMsIDIzOSwgNzQsIDk5LCAyMjgsIAorICAgIDExMSwgMjM4LCAxNDQsIDIzOCwgMTQ1LCAzLCAxOTEsIDU1LCA1NiwgMjQ2LCAxMTAsIDIyMiwgMTk1LCAzLCAyMjQsIDUyLCAKKyAgICAyMzcsIDUzLCAyNDYsIDExMCwgMjIyLCAxOTUsIDMsIDIxMywgMjIwLCAyMzcsIDUzLCAxNzYsIDIyMiwgMTk1LCAzLCAyMTMsIAorICAgIDIyMCwgMjM3LCA1MywgMTc2LCAyMjIsIDE5NSwgMywgMjI0LCA1MiwgMjM3LCA1MywgMjE1LCA2NCwgMjE1LCA2NSwgMjMzLCAKKyAgICAxMjQsIDIyMCwgNCwgMjIxLCAxMzQsIDIxNSwgMjEzLCAyMjEsIDEzNCwgMjE1LCAyMTQsIDMsIDg3LCA1NSwgMjUwLCAxNTYsIAorICAgIDIyNSwgMjgsIDIwMiwgMjMzLCAyMjEsIDEzMywgMjIxLCAxMzQsIDIxNSwgMjE0LCAyMTcsIDExNiwgMjE4LCAyNDIsIDIyMSwgCisgICAgMTM0LCAyMTUsIDIxMiwgMjUxLCA0OSwgMywgMjQ5LCA2NiwgMjQ3LCAxNjIsIDI0NywgMTYzLCAzLCAyMzcsIDQ2LCAyMDIsIAorICAgIDIzMCwgMjQ3LCAxNjIsIDIwNiwgMTczLCAyMTMsIDIzNiwgMjAyLCAyMjksIDIzNywgOTAsIDIxNCwgMjUwLCAyMTUsIDcxLCAKKyAgICAyMDgsIDg5LCAyMTUsIDMzLCAyNDksIDYsIDIwNCwgMTQ1LCA4NywgMjUwLCAxOTksIDI0NiwgMTEyLCA4NywgMjYsIDk4LCAKKyAgICAxNzYsIDI0NiwgMTU2LCAyNTAsIDE5OSwgMjQ2LCAxMTIsIDg3LCAyNiwgOTgsIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMjAwLCAKKyAgICAzLCA0NCwgMTEyLCAyMTYsIDI0MiwgMjQ2LCAxMTIsIDE5MSwgMjYsIDE4MiwgMTc2LCAyNDYsIDE1NiwgMjUwLCAxOTksIAorICAgIDI1MSwgNDcsIDE5MSwgMjYsIDE4MiwgMTc2LCAyNDYsIDE1NiwgMjUwLCAxOTksIDEyOCwgMjQ4LCA0OSwgOTksIDEyMiwgCisgICAgMjQ4LCA0OSwgOTksIDIwOCwgMjMzLCAzLCAyNDcsIDE1NSwgOTcsIDIwOCwgMjMyLCAyMDgsIDIzMywgMywgMTEyLCAyMDksIAorICAgIDEsIDIwMSwgNzcsIDIwOCwgMjMzLCAzLCAxMjYsIDIwOSwgMSwgMjAxLCA3NiwgMjQ5LCA0OSwgMjM4LCAyMDQsIDIxNSwgCisgICAgMTE4LCAyMjUsIDIzLCAyMjIsIDIwNywgMjM1LCAxMjgsIDIxMywgNDEsIDIyMiwgMjA3LCAyMzUsIDEyOCwgMjI0LCAxMDQsIAorICAgIDMsIDIyOCwgODQsIDIxNiwgNDcsIDI0NiwgMTEwLCAyMjQsIDEwNCwgMywgMjI2LCAyMTQsIDIyNiwgMjE0LCAyMjQsIDEwMywgCisgICAgMTc2LCAyMjQsIDEwMywgMjQ4LCAyMzAsIDI0OCwgMjMxLCAzLCAyNDcsIDE1NSwgOTcsIDI0OCwgMTA4LCAyMjQsIDE2NywgCisgICAgOTksIDIxMywgMjM3LCAyNDcsIDI0MywgMjQ5LCAxMzAsIDMsIDk4LCA1NSwgNTYsIDIzOCwgMTcxLCAzLCA5OCwgNTUsIDU2LCAKKyAgICAyMTcsIDc5LCAzLCAyMzgsIDQzLCAxMzQsIDMsIDQ5LCA1MSwgNTUsIDU2LCAyMDksIDksIDMsIDg3LCA1NSwgNTYsIDIwNSwgCisgICAgMTU4LCAzLCAxODIsIDU1LCA1NiwgMjE4LCAyNDIsIDExMiwgMjAzLCAyNTMsIDIzOCwgMjMwLCA5OSwgMjI2LCAyMTEsIAorICAgIDIwNiwgMTY2LCAyMjgsIDc4LCAxNiwgMzYsIDgsIDYsIDIyNCwgMjM1LCAyMjgsIDc4LCAxNiwgMzYsIDgsIDQsIDIyNCwgCisgICAgMjM1LCAyMjgsIDc4LCAxNiwgMzYsIDIxOCwgOTQsIDIyOCwgNzgsIDE2LCAzNiwgMjA3LCAxMTYsIDIyOCwgNzgsIDE2LCAKKyAgICAzNiwgOCwgMjI0LCAyMzUsIDIzNywgNzcsIDIzOCwgMjA0LCAyMDUsIDE1MywgMjAwLCAyMjUsIDIzNCwgMjA2LCAyMTgsIAorICAgIDc3LCAyNiwgMjQ4LCAxMTUsIDIzMywgMjA1LCAyMTUsIDE0MywgMjIxLCAyMDcsIDIwNiwgMTc0LCAyNDIsIDIxNiwgMjQ5LCAKKyAgICA5NywgMjA5LCAxMDYsIDIxNSwgOTgsIDIwOCwgMTEwLCAzLCAxMDEsIDI0MCwgMTgyLCAyMjcsIDIzNiwgMTYsIDM2LCAyNDgsIAorICAgIDI0MywgMjA1LCA5MywgMjM4LCAxODcsIDYzLCA1MiwgMjQ3LCAyNDMsIDY0LCA1MiwgMjQ3LCAyNDMsIDIyNSwgNzEsIDIxMywgCisgICAgMTcwLCAyNDYsIDE1NSwgMjI1LCA3MSwgMjQ4LCAxMjcsIDI0NiwgMTU1LCAyMjUsIDcxLCAyMTcsIDMyLCAyNDEsIDY0LCAKKyAgICAyMjUsIDcxLCAyNDgsIDEyNywgMjQxLCA2NCwgNCwgMjE3LCAzMiwgMjQxLCA2NCwgNCwgMjQ4LCAxMjcsIDI0MSwgNjQsIAorICAgIDIwMywgMjI3LCAyMTMsIDE3MCwgMjA1LCA5OCwgMjM5LCAxNjYsIDIxMywgMTcwLCAyMDUsIDk4LCAyMDMsIDIyNywgNCwgCisgICAgMjEzLCAxNzAsIDIwNSwgOTgsIDIzOSwgMTY2LCA0LCAyMTMsIDE3MCwgMjA1LCA5OCwgMjI0LCA1NCwgNTEsIDIxMCwgMTAxLCAKKyAgICA2NCwgMjQ2LCAxNTUsIDIwMywgMjI1LCA1MSwgMjEwLCAxMDEsIDY0LCAyNDYsIDE1NSwgNDQsIDI0MiwgMjM1LCAyMTUsIAorICAgIDg0LCAyNDIsIDIzNSwgMjE1LCA4NSwgMywgMjM0LCAyMTIsIDU3LCAyNDIsIDIzNSwgMjE1LCA4NCwgMjE4LCAyMTEsIDQ5LCAKKyAgICAyMTAsIDE3MCwgMywgMTI2LCAyNDAsIDE4MCwgMjE4LCAyMTEsIDUxLCAyMTAsIDE3MCwgMywgMTI2LCAyNDAsIDE4MCwgMTYsIAorICAgIDM2LCAyMjIsIDE0NCwgMjQ3LCAyMiwgNjQsIDgsIDI0MiwgMjM0LCA4MCwgOCwgMjQyLCAyMzQsIDI0NywgNjAsIDI0MiwgCisgICAgMjM0LCAyMTcsIDg3LCA5OSwgMjM5LCAxNjksIDc2LCAyMTYsIDcxLCAyMjcsIDEwMywgMjIxLCA3NCwgMjA3LCAxMTAsIAorICAgIDIyMiwgMzcsIDMsIDIxOSwgMTE0LCAyNDgsIDY1LCAyNDgsIDgzLCA3NiwgMjMzLCAzNSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAKKyAgICAxMTIsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDEyMCwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgCisgICAgMTI2LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzYsIDIyOSwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIAorICAgIDE5MCwgMjM3LCA2MSwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA5LCAxMDYsIDIxNywgMTMyLCAyNDYsIDExNCwgCisgICAgMjM3LCAxOTAsIDIxMCwgMTM2LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDIzMiwgMjE3LCAxMzIsIAorICAgIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjE5LCAxMTQsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwNiwgMTY3LCAKKyAgICAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDIwMCwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgCisgICAgMjA0LCAxNjUsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIxNywgNzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA0LCAKKyAgICAxMzksIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA2LCAzOSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzYsIDIyNSwgMjQ2LCAxMTQsIAorICAgIDIzNywgMTkwLCAyMzcsIDU5LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwOSwgMTAyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIxMCwgCisgICAgMTM0LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMjMxLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIxOSwgMTEyLCAyNDYsIAorICAgIDExNCwgMjM3LCAxOTAsIDIwNiwgMTY1LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMTk4LCAyNDYsIDExNCwgMjM3LCAKKyAgICAxOTAsIDIwNCwgMTYzLCA1MSwgMjA4LCAyMzIsIDUxLCAyMDgsIDIzMywgMywgMTEyLCAyMDksIDEsIDIwMSwgNzcsIDUxLCAKKyAgICAyMDgsIDIzMywgMywgMTI2LCAyMDksIDEsIDIwMSwgNzYsIDI0OCwgMTgsIDI0OCwgMTksIDMsIDIwOSwgMSwgMjAxLCA3NiwgCisgICAgMjEzLCAyNSwgMjQ4LCAyMzAsIDI0OCwgMTEwLCAyNDcsIDE1MywgMjIyLCAxNjcsIDI0NiwgMTEzLCA2MywgMjA5LCA4MSwgCisgICAgMjYsIDI0MiwgMjMzLCAyMTgsIDI0MiwgMjE1LCAxNDksIDIzMywgMTk3LCAyMjIsIDE4MSwgMjI4LCAxMTgsIDI0NywgMjUxLCAKKyAgICAyMDcsIDI0MiwgMjI0LCAyMjgsIDIwOSwgNjksIDIxNywgMzQsIDIwOCwgMTk0LCAyNDEsIDI1MCwgMjA3LCAyMjQsIDIwOCwgCisgICAgMjIxLCAyMDgsIDIyMiwgMjAxLCA2MSwgMjI3LCAxNDgsIDIyMiwgMTgxLCAyNDIsIDExLCA0OSwgMjM0LCAyMDAsIDIwNiwgCisgICAgMTc2LCAyMTMsIDE4NCwgMjA2LCAxNzYsIDIxMywgMTg1LCAzLCAyMTYsIDE5NSwgNTEsIDIzNCwgMjAwLCAyMDYsIDE3NiwgCisgICAgMjEzLCAxODQsIDY0LCAyMDUsIDEzOSwgMjA2LCAxNzUsIDYzLCAyMDUsIDEzOSwgMjA2LCAxNzUsIDIwNiwgMTc2LCAyMTcsIAorICAgIDc5LCAyMDUsIDE1OCwgNzYsIDIyMSwgMTMwLCAyNDYsIDEzNCwgMjIxLCAxMzQsIDIxNSwgMjEzLCAyNDksIDEzMCwgNzYsIAorICAgIDIzOCwgMTQ0LCAyMDgsIDExNSwgMjM4LCAxNDQsIDIzOCwgMTQ1LCAzLCAyMjQsIDE5MywgMjM3LCAxNiwgMjM4LCAxNDQsIAorICAgIDIxNiwgNDgsIDExOSwgMjA4LCAxMTUsIDIzOCwgMTQ0LCAyMjQsIDE2NiwgMjE2LCAxMzIsIDYzLCAyMTQsIDE5NCwgMjI0LCAKKyAgICA1NCwgNDksIDIxNiwgNDYsIDIyNCwgNTQsIDQ5LCAyNDksIDkyLCAyMTYsIDQ3LCAyMjQsIDU0LCA0OSwgMjM2LCAyMzEsIAorICAgIDIxNiwgNDcsIDIyNCwgNTQsIDQ5LCAyMTYsIDE4OSwgMjI0LCA1NCwgNDksIDI0MiwgMjQ5LCA0OSwgMjAwLCAyMTksIDIzNCwgCisgICAgMTk5LCAyMDQsIDE4NSwgMjE3LCA5OSwgMjM0LCAyMDAsIDU0LCAyMTMsIDIyMCwgMjM0LCAyMDAsIDMsIDIzNywgODIsIAorICAgIDIwOCwgMjExLCAyMTMsIDEwNSwgMjEzLCAyMjAsIDIzNCwgMjAwLCAzLCAyMzcsIDgyLCAyMDgsIDIxMSwgMjEzLCAxMDUsIAorICAgIDIwNiwgMzMsIDExNSwgNTQsIDIxMywgMTA1LCAyMDYsIDMzLCAxMjcsIDU0LCAyMTMsIDEwNSwgMjAyLCAyMzIsIDIzNCwgCisgICAgMTk5LCAyMTMsIDEwNSwgMjM0LCAyMDAsIDMsIDEwMSwgMjM3LCA4NywgMjM4LCAzMiwgMjEzLCAyMjAsIDIzNCwgMjAwLCAzLCAKKyAgICAyMTYsIDExMCwgMjQ4LCAyMDYsIDEwMSwgMjYsIDIxMywgMjcsIDIzNywgODEsIDY0LCAxMjcsIDIxNSwgOTYsIDQ5LCAyMzQsIAorICAgIDIwMCwgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIDUxLCAKKyAgICAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDYzLCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2MywgNTEsIAorICAgIDIxNSwgOTYsIDIyOCwgMTAzLCA2MywgNDksIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjMsIDUxLCAyMTUsIDk2LCAKKyAgICAyNDksIDEyNywgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgMTE1LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCAKKyAgICAxMjcsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjMsIDExNSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCAKKyAgICA2MywgMTI3LCAyMTUsIDk2LCAyMjgsIDEwMywgNjMsIDExNSwgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2MywgCisgICAgMTI3LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDYzLCAyMzQsIDEyNywgMjQxLCAxMTAsIDI0MywgNzAsIDIyNiwgCisgICAgMjEzLCAyNiwgMjIxLCA2MCwgMTI2LCAyMjAsIDEyLCAyNDMsIDY5LCAyMTUsIDgsIDIxNSwgMTA0LCAyNDcsIDE3MiwgNjMsIAorICAgIDIzNCwgMTY1LCAyMTAsIDU1LCAyMzcsIDI5LCAyNDAsIDI1MywgNjQsIDIzNCwgMTY1LCAyMTAsIDU1LCAyMzcsIDI5LCAKKyAgICAyNDAsIDI1MywgMjA5LCAyMywgMjEwLCA1NSwgMjM3LCAyOSwgMjQwLCAyNTMsIDIwNiwgMjM1LCAyNDcsIDExNywgMjAxLCAKKyAgICA2LCAyMjYsIDIxMiwgMTEyLCAyNDcsIDI0NCwgMjIxLCA2MCwgMTIwLCAyNDcsIDI0NCwgMjIxLCA2MCwgMTI2LCAyNDcsIAorICAgIDI0NCwgMjIxLCA2MCwgMjA1LCAxMzAsIDQwLCAyMTYsIDksIDI0MywgNzAsIDIzNCwgMTY1LCAyNDAsIDI1MywgMjExLCAKKyAgICAyMDksIDIxNSwgOSwgMjMyLCAyMjUsIDIzNywgMTUyLCAyMzIsIDIyNSwgMjE3LCAzNywgMjQxLCAzLCAyMzIsIDIyNSwgCisgICAgMjQwLCAyMDUsIDMsIDIwNiwgMTI2LCAyNDAsIDIwNSwgMywgMjA2LCAxMjcsIDI2LCAyMTUsIDE5OCwgMjQwLCAyMDUsIDMsIAorICAgIDIxNSwgMTk4LCAyMzYsIDIxNiwgMywgMjE1LCAxOTgsIDIzNiwgMjE2LCAzLCAyMDUsIDIzOCwgMjM2LCAyMTYsIDMsIDI1MSwgCisgICAgODYsIDIwMCwgMTk1LCA2MywgMjM3LCA5LCAyMzcsIDksIDE3NiwgMjM3LCA5LCAyNDcsIDEzNCwgMTI0LCAyNDAsIDIzOCwgCisgICAgMjQ3LCAxMzQsIDIzNywgOTcsIDI0OCwgNzgsIDIzNywgOTcsIDI0NywgMTg1LCAyMzgsIDE4MSwgMjE4LCAyMDksIDIzOCwgCisgICAgMTgxLCAyMTgsIDIxMCwgMjE2LCAxOTUsIDIzOCwgMTgxLCAyMTgsIDIxMCwgMjE2LCAyMDEsIDIxOCwgMjA5LCAyMTgsIAorICAgIDIxMCwgMjE2LCAxOTUsIDIxOCwgMjEwLCAyMTYsIDIwMSwgMjM4LCAxODEsIDI0MCwgMjA0LCAyMzgsIDE4MSwgMjE2LCAKKyAgICAxOTUsIDIzOCwgMTgxLCAyMTYsIDE5MywgMjQwLCAyMDQsIDIxNiwgMTk1LCAyMTYsIDE5MywgMjAxLCA4NywgMjA4LCAyMTgsIAorICAgIDIxOCwgMjEwLCAyMTYsIDIwMSwgMjA4LCAyMTgsIDI0NywgMTcxLCAyMTYsIDIwMSwgMjQxLCAxMTAsIDIwMSwgMTUsIDIyMSwgCisgICAgMTU5LCAyMjIsIDEyMCwgMjE2LCAyNDQsIDI0NiwgMTEyLCA1MSwgMjYsIDQ5LCAyMTAsIDE3MCwgMjUwLCAxOTksIDI0NywgCisgICAgMTU1LCAyMDAsIDE5NSwgMjI4LCAxMDksIDIzNywgMywgMjA5LCA5MCwgOTksIDI0MSwgMTY0LCAyMzcsIDMsIDIwOSwgOTAsIAorICAgIDk5LCAyNDMsIDcxLCA0MCwgMjI2LCAyMTQsIDIxMiwgMjQ0LCAyMjAsIDQsIDIxNiwgMTk2LCAzLCA0NCwgMjA2LCAxMjYsIAorICAgIDIwOCwgODAsIDI0NywgMTUsIDI0MiwgNDEsIDIyNiwgOTUsIDIyNCwgMTYwLCAyMDgsIDIzMSwgMjM0LCAxMzcsIDIyOCwgCisgICAgMTE4LCAyMDksIDE1NSwgMTI2LCAyMTMsIDE5NSwgNTYsIDEyNiwgMjEzLCAxOTUsIDU3LCAxMjYsIDIxMywgMTk1LCAyMjUsIAorICAgIDI4LCAxMjYsIDIxMywgMTk1LCAyMTMsIDQ2LCA0OSwgMjA4LCAyMjgsIDI0OCwgMzUsIDUxLCAyMDgsIDIyOCwgMjQ4LCAzNSwgCisgICAgMTIwLCAyMDgsIDIyOCwgMjQ4LCAzNCwgMTI2LCAyMDgsIDIyOCwgMjQ4LCAzNCwgNDksIDIwNiwgNTIsIDI0OCwgMzUsIDUxLCAKKyAgICAyMDYsIDUyLCAyNDgsIDM1LCA0OSwgMjUxLCA3MywgMjQ4LCAzNSwgNTEsIDI1MSwgNzMsIDI0OCwgMzUsIDIyMSwgODYsIAorICAgIDI0OCwgMzUsIDIyNCwgMTk0LCAyMjEsIDg2LCAyNDgsIDM1LCAyMjQsIDE5NCwgMjIxLCA4NSwgMjQ5LCA5NCwgMTAwLCAzLCAKKyAgICAyNDksIDkzLCAyNDksIDk0LCAxMzUsIDIwMCwgMTk1LCAyNDksIDk0LCAxMDAsIDMsIDEzNSwgMjAwLCAxOTUsIDI0OSwgOTQsIAorICAgIDI3LCAxMzUsIDIwMCwgMTk1LCAyNDksIDk0LCAxMDAsIDMsIDI3LCAxMzUsIDIwMCwgMTk1LCAxNjIsIDI0NywgNywgODEsIAorICAgIDI0OSwgOTQsIDEwMCwgMywgMjcsIDI0NywgNiwgMjAwLCAyMzMsIDIyMiwgMTY0LCAyMjEsIDY1LCAyMzYsIDE4NCwgMjA1LCAKKyAgICAxODAsIDIwNSwgMTM1LCAyMDgsIDEwMSwgNzYsIDIyNCwgMjA4LCAyMDksIDE1NiwgNzYsIDIyNywgMjM3LCAyMjEsIDQ2LCAKKyAgICAyMzUsIDYxLCAyMzcsIDE4OSwgMjM1LCA2MSwgMjM3LCAxOTAsIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDIzNywgMTkwLCAzLCAKKyAgICAyMDYsIDE5MywgNzYsIDIyNywgMTUwLCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyMDksIDQ3LCAyMzcsIAorICAgIDE5MCwgMywgMTc2LCAyMjEsIDU5LCAyNiwgMjA5LCA0NywgMjM4LCAxNSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDE3NiwgCisgICAgMjIxLCA1OSwgMjYsIDI0NiwgODMsIDIwNywgMTgwLCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU5LCAyNiwgCisgICAgMjA2LCAwLCAyMzgsIDE1LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMjM0LCAyMTEsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAKKyAgICAyMzMsIDEyMywgMjAxLCA4LCAyMzcsIDE4OSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDIzNywgCisgICAgMTkwLCAyMTEsIDI0MCwgMjQxLCAxNDQsIDIzNywgMSwgMjEzLCAxNDUsIDIzNywgMTg5LCAyMDksIDQ3LCAyMzcsIDE5MCwgCisgICAgMywgMjM0LCAxMjYsIDIzOCwgMTUsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAyMDcsIDIyNCwgMjA5LCA0NiwgMjM3LCAxODksIAorICAgIDIyMCwgMTAsIDIzNywgMTg5LCAyMzgsIDM0LCAyMzcsIDE4OSwgMjA0LCAzLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDI0NiwgCisgICAgODMsIDIwNywgMTgwLCAyMTYsIDM5LCAyMzcsIDE4OSwgMjQzLCA2MiwgMjM3LCAxODksIDI0MywgNjMsIDIzNywgMTg5LCAKKyAgICAyMjYsIDEyOCwgMjM3LCAxODksIDIzNywgMTkwLCAyMDYsIDM2LCAzNSwgMjI2LCAxMjksIDIyNiwgMTI4LCAyMzcsIDE5MCwgCisgICAgMywgMjA5LCA0NywgMjM4LCAxNSwgMjI2LCAxMjgsIDIzNywgMTkwLCAzLCAyNDYsIDExMCwgMjM4LCAxNSwgMjM3LCAxOTAsIAorICAgIDMsIDIwOCwgMzEsIDIwNSwgMTYzLCAyMzcsIDE5MCwgMywgMjA4LCAzMSwgMjA1LCAxNjQsIDI2LCAyMDEsIDgsIDIzOCwgCisgICAgMjIsIDIzNywgMTkwLCAzLCAyMDgsIDMxLCAyMDUsIDE2NCwgMjYsIDIwNiwgMCwgMjM4LCAxNSwgMjQxLCA0LCAyMzcsIAorICAgIDE4OSwgMjAwLCAyMzIsIDIzNywgMTg5LCAyNTEsIDY3LCAyMzcsIDE4OSwgMjE1LCA1NSwgMjM3LCAxODksIDI0MiwgMjE4LCAKKyAgICAyMzcsIDE4OSwgMjE2LCAxMywgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyMjQsIDc3LCA3NiwgMjA1LCA3NSwgMjQxLCA0LCAKKyAgICAyNDcsIDI0NywgMjEzLCAxNDUsIDIzNywgMTg5LCAyMzYsIDE5NSwgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjUxLCAKKyAgICA2NSwgMjM3LCAxODksIDIzNywgMTQ1LCAyMzcsIDE4OSwgMjAxLCA2MiwgMjM3LCAxODksIDIwOSwgNzAsIDIzNywgMTg5LCAKKyAgICAyMDUsIDIxOCwgMjM3LCAxODksIDIzNSwgNjIsIDIzNywgMTg5LCAyMjQsIDYzLCAyNDIsIDIxOCwgMjM3LCAxODksIDIzNywgCisgICAgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDIzMywgNzIsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU5LCAyNiwgCisgICAgMjQ2LCA4MywgMjA3LCAxODAsIDIzNywgMTkwLCAyMTEsIDIxMSwgMjI4LCAxMTgsIDIzNywgMTQ2LCAyNTAsIDE2MiwgMjM3LCAKKyAgICAxODksIDIzNywgMjEsIDIzNywgMTg5LCAyMDksIDcxLCAyMzcsIDE4OSwgMjQwLCAyMzEsIDIzNywgMTg5LCAyMzcsIDE5MCwgCisgICAgMjAxLCAzLCAyMjEsIDU4LCAyMzcsIDE5MCwgMywgMjIyLCA2OCwgMjIyLCAxMzIsIDIzNSwgNjEsIDI0NywgMTEyLCAyMzcsIAorICAgIDE5MCwgMywgMjA5LCA0NywgMjM4LCAxNSwgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAyMDYsIDE5MywgNzYsIDIyNywgMTUwLCAKKyAgICAyMDksIDQ3LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjA5LCA0NywgMjQ3LCAxMTIsIDIzNywgCisgICAgMTkwLCAzLCAyMzQsIDEyNiwgMjM4LCAxNSwgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAyMDAsIDIxNywgMjA5LCA0OCwgMjI2LCAKKyAgICAxMjgsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMjQ2LCAxMTAsIDIzOCwgMTUsIDIxNSwgNTUsIDI0NywgMTEyLCAyMzcsIAorICAgIDE4OSwgMjQyLCAyMTgsIDI0NywgMTEyLCAyMzcsIDE4OSwgMjAxLCA2MiwgMjQ3LCAxMTIsIDIzNywgMTg5LCAyMDksIDY0LCAKKyAgICAyMzYsIDE5NSwgMjM3LCAxODksIDIwOSwgNjQsIDIwOSwgNDcsIDIzNywgMTg5LCAyMDMsIDIyMiwgMjM3LCAxODksIDIzNywgCisgICAgMTkwLCAzLCAyMTIsIDI0MiwgMjM4LCAxNSwgMjM3LCAxOTAsIDMsIDIxOCwgMjQyLCAyMzUsIDEwNCwgMjM1LCAyNDAsIAorICAgIDIzNywgMTkwLCAzLCAyMTcsIDk5LCAyMzUsIDI0MCwgMjE2LCAxMSwgMjQ4LCA4NCwgMjQxLCAxNTksIDIxMSwgMTg5LCAKKyAgICAyMjEsIDEwMCwgMjM0LCAxMjksIDIyMSwgMTAwLCAyMDgsIDIzNCwgMjIxLCAxMDAsIDIzNCwgMTY3LCAyMTYsIDExLCAyMTMsIAorICAgIDIxOSwgMTEyLCAyMzQsIDE5OSwgMjE2LCAxMSwgMjEzLCAyMTksIDI0OCwgOTYsIDIzNCwgMTc1LCAyMjgsIDExOCwgMjQ3LCAKKyAgICA2MiwgMjE2LCAxMSwgMjM2LCAxOTQsIDIxNiwgMTEsIDMsIDIxNSwgNTUsIDIzNywgMTg5LCAyMTYsIDExLCAzLCAyMzcsIAorICAgIDEwLCAyMzQsIDE3NCwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgCisgICAgMjI1LCAzNSwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAKKyAgICAzNSwgMjA0LCAxODUsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA0LCAxODUsIDIwOCwgMjU0LCAyMDEsIAorICAgIDQ4LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDQsIDE4NSwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDQsIDE4NSwgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgMzUsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjAyLCAyMTYsIAorICAgIDIyNSwgMzUsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgMTU3LCAyMzksIDE0LCAKKyAgICAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIAorICAgIDM1LCA4MCwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgODAsIDIwOCwgMjU0LCAyMDEsIDQ4LCAKKyAgICAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgODAsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIAorICAgIDgwLCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgCisgICAgMjQ4LCAzMiwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIDI0OCwgMzIsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjQ4LCAKKyAgICAzMiwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDI0OCwgMzIsIDgwLCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDI0OCwgCisgICAgMzIsIDgwLCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgMjQ4LCAzMiwgODAsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgCisgICAgMjQ4LCAzMiwgODAsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyNDgsIDMyLCAyMzMsIDE5NiwgMjE0LCA3MiwgNTIsIAorICAgIDIxNywgMjEsIDIzMywgMTk2LCAyMTQsIDcyLCA1MiwgMjE3LCAyMiwgMjI4LCAxMTgsIDYzLCAyMDgsIDE5MywgMjA5LCAxOCwgCisgICAgMjE0LCA3MiwgNTIsIDIxNywgMjEsIDIwOSwgMTgsIDIxNCwgNzIsIDUyLCAyMTcsIDIyLCAyMjgsIDExOCwgNjMsIDIwOCwgCisgICAgMTkzLCA5OCwgMjEyLCAyNDgsIDE4MiwgMjEyLCAyNDgsIDg3LCAyMTIsIDI0OCwgMTkxLCAyMTIsIDI0OCwgMTM1LCAzMywgCisgICAgMjM4LCA4MiwgMjE3LCAyMSwgODAsIDEzNSwgMzMsIDIzOCwgODIsIDIxNywgMjEsIDMzLCAxNzYsIDIzOCwgODIsIDIxNywgCisgICAgMjEsIDgwLCAzMywgMTc2LCAyMzgsIDgyLCAyMTcsIDIxLCA4MCwgMjUxLCA5MCwgMjE3LCAyMSwgMjA3LCAxODMsIDI1MSwgCisgICAgOTAsIDIxNywgMjEsIDQzLCA4MCwgNTMsIDIwNCwgMTg1LCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDQzLCAKKyAgICA4MCwgNTMsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgNDMsIDgwLCAxMjgsIDUzLCAyNDYsIDcxLCAyMTQsIAorICAgIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAyMjgsIDU5LCAyMTcsIDIxLCA0MywgMjI4LCA1OSwgMjE3LCAyMSwgODAsIDQzLCAKKyAgICAyMjgsIDU5LCAyMTcsIDIxLCAyMDIsIDI0NiwgODAsIDIwOSwgMTYsIDIwMiwgMjQ2LCA4MCwgMjEzLCAxMDYsIDIwOSwgMTYsIAorICAgIDI0NywgNSwgMjQ4LCAxMjEsIDIxMywgMTA2LCAyNDcsIDUsIDI0OCwgMTIxLCAyMTIsIDI0OCwgMjM0LCAxMTAsIDIwOCwgCisgICAgOTYsIDIyNCwgMTAxLCAyMTMsIDIyNSwgMjQ3LCAxMzUsIDIzNCwgNTUsIDIwNSwgMTIzLCAyMzQsIDU1LCAyMDUsIDEyNCwgCisgICAgMywgMjQ4LCAyMSwgMjE4LCAyMTYsIDIwNSwgMTIzLCAyMjIsIDEzLCAxNjIsIDIxMywgMjI2LCAyMDgsIDEwMiwgMjA1LCAKKyAgICAxMjEsIDIwNSwgMTIyLCAyNDcsIDEzNSwgMjQ3LCAyNTIsIDIxNywgNzUsIDI0NywgMjUyLCAyMDUsIDcxLCAyNDcsIDI1MywgCisgICAgMjA4LCA3NiwgMjIxLCAxNjMsIDI1MSwgOTQsIDIzNywgNzgsIDIzOCwgMTY0LCAyMTUsIDg4LCAyNDcsIDEzNSwgMjE3LCAKKyAgICA3NSwgMjE1LCA4OCwgMjQ3LCAxMzUsIDIwNiwgMjExLCAyMTcsIDc1LCAyMDYsIDIxMSwgMjUwLCAxMjcsIDIxNywgNzUsIAorICAgIDI1MCwgMTI3LCAyMTMsIDE3NywgMjAzLCA1MSwgMjQxLCAxNDAsIDIwNSwgNjIsIDI1MCwgMTk0LCAyMjQsIDY4LCAyMDUsIAorICAgIDEyOSwgMjIxLCA5NCwgMjIxLCA2NCwgMjEzLCAyMjQsIDIwNywgMTk2LCAyMTMsIDIyNCwgMjIxLCA2NCwgMjQ3LCAxODQsIAorICAgIDI1MSwgMjA3LCAyMDUsIDEyMCwgMjEwLCAxNywgMjEyLCAyMTgsIDIwOCwgMjI2LCAyMzMsIDE3NywgMjA1LCAxMjcsIDIyNCwgCisgICAgMTk2LCA4MywgMjA1LCAxMjcsIDIyNCwgMTk2LCAyNDMsIDQ5LCA1NCwgMjE1LCA4OCwgMjQ3LCAxMTksIDIxMywgOTksIAorICAgIDIyNCwgMTk2LCAyMDUsIDk1LCAyMzcsIDU0LCAyMTcsIDc5LCAyMTUsIDY2LCAyNDAsIDE4NSwgMjE4LCAyNDIsIDIzOCwgCisgICAgMTUwLCA1NCwgMjA5LCA0NSwgOTksIDIxOCwgMjQyLCAyMDksIDQ1LCA5OSwgMjE0LCAxOTMsIDIyNCwgMTQ5LCAyMjgsIAorICAgIDExOCwgMjI4LCA5LCAyMTUsIDEzNCwgOTksIDI0MCwgMjEyLCAyMTgsIDIxNSwgMjI0LCAxNDksIDk5LCAyMTUsIDYwLCAKKyAgICAyMDEsIDgzLCA5OSwgMjE4LCAyMzEsIDIwMSwgODMsIDk5LCAyNDgsIDE4NCwgMjE4LCAyNDIsIDI0OCwgMTgzLCAyNDgsIAorICAgIDE4MiwgMjIxLCA2NCwgMjQ4LCAxODIsIDIxNiwgNjMsIDIxOCwgMjQyLCAyMTYsIDYyLCAyNDYsIDIyNiwgMjQyLCAyMjcsIAorICAgIDIyMiwgMzYsIDk5LCAyMDAsIDI0NywgOTksIDIxMywgMTE1LCAyNDksIDEzMiwgOTksIDIwNSwgMTgxLCAyMDEsIDgzLCAKKyAgICAyNDYsIDEwNywgMjA5LCAyMzEsIDI0OSwgNTIsIDI0OSwgNTAsIDIxNiwgOTYsIDI0MywgMzMsIDI0MiwgMTgxLCAyNDksIAorICAgIDExMCwgMjQ2LCAxMzUsIDQ5LCAyMjQsIDMyLCAyMDUsIDk5LCAzLCAyMTIsIDIxOSwgMjQzLCAxNCwgMjE0LCAyNTMsIDU0LCAKKyAgICA0NCwgMjI4LCA5MiwgMjA4LCAyNTUsIDI0OCwgNzUsIDk5LCAyMzUsIDEzOSwgOTksIDI0MywgNywgMjYsIDIyNSwgODEsIAorICAgIDIwOSwgNzEsIDI1MSwgMjQ4LCAyMDksIDI1MywgMjQ5LCAxMDksIDI0OCwgMjI5LCAyNDgsIDIzMCwgMjQ4LCAyNTMsIDIxNSwgCisgICAgMTM0LCA3NiwgMjAwLCAyMzEsIDIxNywgMTI5LCA1NCwgMjA5LCAyNTMsIDIwNSwgNzIsIDIzNCwgMjA3LCAyNiwgMjAwLCAKKyAgICAyMjUsIDIxMCwgMzAsIDIxNywgMTA0LCAyMzksIDE0MiwgMjIxLCA2OCwgMjEzLCAyMjUsIDIwNSwgMTMxLCAyMjEsIDcwLCAKKyAgICAyNDgsIDEyMCwgMjAzLCAyMjcsIDIyMSwgMTc0LCAyNTEsIDE2NCwgMjAzLCAyMjcsIDI1MSwgMTY0LCAyMDMsIDIyNywgNCwgCisgICAgMjUxLCAxNjQsIDQsIDI1MSwgMTY0LCAyMTgsIDIyMCwgMjUxLCAxNjQsIDI1MSwgMTY1LCAyNDEsIDEyNCwgMjUxLCAxNjUsIAorICAgIDI1MCwgMjA1LCAyMTEsIDI0NywgMjE3LCA3NSwgMjM3LCA3OCwgMjM4LCAxNjQsIDI0MSwgNTQsIDIyNCwgMTAxLCAyMTYsIAorICAgIDk5LCAyMTAsIDE3LCAyMTEsIDIxNSwgMjIxLCA3MCwgMjExLCAyMTUsIDI0NywgMTQ2LCAxMzksIDE2LCAzNiwgMjE0LCA2OCwgCisgICAgMTM5LCAxNiwgMzYsIDI1MSwgMTY2LCAxMzksIDE2LCAzNiwgMjM3LCA3NywgMTM5LCAxNiwgMzYsIDIzOSwgMTcsIDEzOSwgCisgICAgMTYsIDM2LCAyMDEsIDgyLCAxMzksIDE2LCAzNiwgMjUwLCAyNTUsIDEzOSwgMTYsIDM2LCAyNTEsIDAsIDIxMywgMTY0LCAKKyAgICAxMzksIDE2LCAzNiwgMjUxLCAwLCAyMTMsIDE2MywgMTM5LCAxNiwgMzYsIDI1MSwgMCwgMjAyLCAxOTksIDEzOSwgMTYsIAorICAgIDM2LCAyNTEsIDAsIDIwMiwgMTk4LCAxMzksIDE2LCAzNiwgMjAyLCAyMTMsIDEzOSwgMTYsIDM2LCAyMDIsIDIxMiwgMTM5LCAKKyAgICAxNiwgMzYsIDIwMiwgMjExLCAxMzksIDE2LCAzNiwgMjA3LCAyMzUsIDEzOSwgMTYsIDM2LCAyMTUsIDIyMSwgMjA3LCAyMzUsIAorICAgIDEzOSwgMTYsIDM2LCA2MywgMjA3LCAyMzUsIDEzOSwgMTYsIDM2LCAyMjIsIDM1LCAyMDgsIDEwLCAxMzksIDE2LCAzNiwgCisgICAgMjIyLCAzNSwgMjA4LCA5LCAxMzksIDE2LCAzNiwgMjIyLCAzNSwgMjA4LCA4LCAxMzksIDE2LCAzNiwgMjQ2LCAxNTgsIAorICAgIDEzOSwgMTYsIDM2LCAyMTIsIDI3LCAxMzksIDE2LCAzNiwgMjE5LCAxMDEsIDEzOSwgMTYsIDM2LCAyMDIsIDE5NywgMTM5LCAKKyAgICAxNiwgMzYsIDIwMiwgMTk2LCAxMzksIDE2LCAzNiwgMjEyLCAyNDksIDIxMiwgMjcsIDEzOSwgMTYsIDM2LCAyMTIsIDI0OSwgCisgICAgMjEyLCAyNiwgMTM5LCAxNiwgMzYsIDIzNSwgMTA4LCAxMzksIDE2LCAzNiwgMjA5LCAxNTIsIDEzOSwgMTYsIDM2LCAyMjgsIAorICAgIDMyLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjI4LCAzMiwgMjE3LCAyNywgMTM5LCAxNiwgMzYsIDI0MiwgMjM5LCA3NiwgCisgICAgMjI4LCAzMSwgMTM5LCAxNiwgMzYsIDIxMywgMTYwLCA3NiwgMjI4LCAzMSwgMTM5LCAxNiwgMzYsIDI0MywgMjQsIDIxNywgCisgICAgMjgsIDEzOSwgMTYsIDM2LCAyMjgsIDMwLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDI0MywgMjMsIAorICAgIDEzOSwgMTYsIDM2LCAyNDIsIDIzOSwgNzYsIDI0MywgMjMsIDEzOSwgMTYsIDM2LCAyNDIsIDIzOSwgNzYsIDI0MywgMjIsIAorICAgIDEzOSwgMTYsIDM2LCAyNDMsIDI0LCAyNTEsIDQxLCAxMzksIDE2LCAzNiwgMjEyLCAyOCwgNzYsIDI0MywgMjQsIDI1MSwgCisgICAgNDEsIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjEyLCAyOCwgNzYsIDI0MywgMjMsIDEzOSwgMTYsIDM2LCAyMDMsIDQ2LCAKKyAgICAxMzksIDE2LCAzNiwgMjA1LCAyMzEsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMjUsIDM5LCAyMTcsIDI4LCAxMzksIDE2LCAKKyAgICAzNiwgMjUxLCA0MCwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyNTEsIDM5LCAxMzksIDE2LCAzNiwgCisgICAgMjEyLCAyOCwgNzYsIDI1MSwgMzksIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjEyLCAyOCwgNzYsIDI1MSwgMzksIAorICAgIDEzOSwgMTYsIDM2LCAyMDIsIDIxNCwgNzYsIDI1MSwgMzksIDEzOSwgMTYsIDM2LCAyMTMsIDE2MCwgNzYsIDI1MSwgMzksIAorICAgIDEzOSwgMTYsIDM2LCAyMTMsIDE2MCwgNzYsIDI1MSwgMzgsIDEzOSwgMTYsIDM2LCAyMTMsIDE1OSwgMTM5LCAxNiwgMzYsIAorICAgIDIxMywgMTU4LCAxMzksIDE2LCAzNiwgMjEzLCAxNTcsIDEzOSwgMTYsIDM2LCAyMTMsIDE1NiwgMTM5LCAxNiwgMzYsIDI1MSwgCisgICAgMTI3LCAxMzksIDE2LCAzNiwgMjUxLCAxMjYsIDEzOSwgMTYsIDM2LCAyMjIsIDE1NSwgMTM5LCAxNiwgMzYsIDIxMiwgMzQsIAorICAgIDEzOSwgMTYsIDM2LCAyNTAsIDE5OCwgMTM5LCAxNiwgMzYsIDIxMywgMTg3LCAxMzksIDE2LCAzNiwgMjEzLCAxODYsIDEzOSwgCisgICAgMTYsIDM2LCAyNTAsIDEzMCwgMTM5LCAxNiwgMzYsIDI0OCwgMTUzLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjA2LCAyMzAsIAorICAgIDEzOSwgMTYsIDM2LCAyMDYsIDIyOSwgMTM5LCAxNiwgMzYsIDIxNCwgNzQsIDIyNCwgMTg1LCAxMzksIDE2LCAzNiwgMjQ4LCAKKyAgICAxMDEsIDEzOSwgMTYsIDM2LCAyNDgsIDEwMCwgMTM5LCAxNiwgMzYsIDI0OCwgOTksIDEzOSwgMTYsIDM2LCAyNTEsIDEwMywgCisgICAgMTM5LCAxNiwgMzYsIDIxNywgMTAzLCAxMzksIDE2LCAzNiwgMjA4LCAyMTQsIDEzOSwgMTYsIDM2LCAyMDUsIDIyOSwgMTM5LCAKKyAgICAxNiwgMzYsIDIzNSwgMzAsIDEzOSwgMTYsIDM2LCAyMDEsIDcwLCAxMzksIDE2LCAzNiwgMjE1LCA1NCwgMTM5LCAxNiwgMzYsIAorICAgIDI0NywgMTY3LCAxMzksIDE2LCAzNiwgMjA0LCAxNzcsIDEzOSwgMTYsIDM2LCAyNDcsIDEzNywgMjIxLCA3NSwgMTM5LCAxNiwgCisgICAgMzYsIDIxMSwgMjI1LCA3NiwgMjI3LCAxNTIsIDEzOSwgMTYsIDM2LCAyNDcsIDE4MSwgMTM5LCAxNiwgMzYsIDIwNSwgOTIsIAorICAgIDEzOSwgMTYsIDM2LCAyMDgsIDEwNywgMjA1LCA5MiwgMTM5LCAxNiwgMzYsIDIyNCwgMTAwLCAxMzksIDE2LCAzNiwgMjA5LCAKKyAgICAyNywgMTM5LCAxNiwgMzYsIDIwMywgMjA2LCAxMzksIDE2LCAzNiwgMjMzLCAxMjEsIDIzOSwgMTIxLCAxMzksIDE2LCAzNiwgCisgICAgMjUwLCAxNzYsIDEzOSwgMTYsIDM2LCAyMTUsIDYyLCAyNTAsIDE3NiwgMTM5LCAxNiwgMzYsIDI0OCwgNTMsIDEzOSwgMTYsIAorICAgIDM2LCAyMTUsIDUzLCAyNDgsIDUzLCAxMzksIDE2LCAzNiwgMjUxLCAxMDAsIDEzOSwgMTYsIDM2LCAyMDgsIDYzLCAyMDcsIAorICAgIDIxNiwgMjA4LCA2MiwgMTM5LCAxNiwgMzYsIDIwOCwgNjMsIDIwNywgMjE2LCAyMDgsIDYxLCAxMzksIDE2LCAzNiwgMjA4LCAKKyAgICA3LCAxMzksIDE2LCAzNiwgMjE1LCAyNiwgMTM5LCAxNiwgMzYsIDI0MCwgMjQ4LCAxMzksIDE2LCAzNiwgMjQwLCAyNTAsIAorICAgIDEzOSwgMTYsIDM2LCAyNDAsIDI0OSwgMTM5LCAxNiwgMzYsIDIxNCwgMjAyLCAxMzksIDE2LCAzNiwgMjE0LCAxOTEsIDEzOSwgCisgICAgMTYsIDM2LCAyNDIsIDIyNSwgMTM5LCAxNiwgMzYsIDI0MiwgMjI0LCAxMzksIDE2LCAzNiwgMjQyLCAyMjMsIDEzOSwgMTYsIAorICAgIDM2LCAyNDIsIDIyMiwgMTM5LCAxNiwgMzYsIDI0MiwgMjIxLCAxMzksIDE2LCAzNiwgMjUxLCAxNDEsIDEzOSwgMTYsIDM2LCAKKyAgICAyNDksIDUzLCA3NiwgMjIyLCAxMzcsIDEzOSwgMTYsIDM2LCAyNDksIDUzLCA3NiwgMjAzLCA3OCwgMTM5LCAxNiwgMzYsIAorICAgIDIxMywgMTEzLCAxMzksIDE2LCAzNiwgMjMzLCAxMTMsIDEzOSwgMTYsIDM2LCAyMTksIDEyOSwgMTM5LCAxNiwgMzYsIDI0MSwgCisgICAgMjMyLCAxMzksIDE2LCAzNiwgMjIxLCA4OSwgMTM5LCAxNiwgMzYsIDE2NywgMjM5LCAxNTYsIDEzOSwgMTYsIDM2LCAxNjcsIAorICAgIDIxNywgMSwgNjMsIDIyNSwgMjMsIDIyOCwgMTUsIDUxLCAyMDUsIDk4LCA2MywgMjAzLCAyMjcsIDIyOCwgMTUsIDUxLCAKKyAgICAyMDUsIDk4LCA2MywgMjEzLCA0MSwgMjI4LCAxNSwgNTEsIDIwNSwgOTgsIDYzLCAyMzksIDE2NiwgMjI4LCAxNSwgNTEsIAorICAgIDIwNSwgOTgsIDYzLCAyMDksIDY0LCA0LCAyNDYsIDE1NSwgMjIyLCA2NiwgMjcsIDY0LCAyNDYsIDE1NSwgMjcsIDY0LCAKKyAgICAyNDYsIDE1NSwgODAsIDY0LCAyNDYsIDE1NSwgMjAyLCAyNDYsIDgwLCA2NCwgMjQ2LCAxNTUsIDIzOCwgMjYsIDgwLCA2NCwgCisgICAgMjQ2LCAxNTUsIDY0LCAyNDYsIDE1NiwgMjQzLCA0NSwgNjMsIDQsIDI0NiwgMTU1LCAyMTIsIDIyMSwgMjA2LCAyMzEsIDYzLCAKKyAgICAyMDUsIDIyNiwgMjA4LCAxOTMsIDYzLCAyMDksIDY0LCA0LCAyMDgsIDE5MywgMTYyLCA2NCwgMjA4LCAxOTMsIDIyMiwgNjYsIAorICAgIDY0LCAyMDgsIDE5MywgMjcsIDY0LCAyMDgsIDE5MywgODAsIDY0LCAyMDgsIDE5MywgMjAyLCAyNDYsIDgwLCA2NCwgMjA4LCAKKyAgICAxOTMsIDIzOCwgMjYsIDgwLCA2NCwgMjA4LCAxOTMsIDY0LCA1MiwgMjQzLCA0NSwgNjMsIDIwMiwgMjQ2LCA0LCAyMDgsIAorICAgIDE5MywgNjQsIDUyLCAyNDMsIDQ1LCA2MywgMjIyLCA2NiwgMjA4LCAxOTMsIDUyLCAyMDYsIDIzMSwgNjMsIDIwNSwgMjI2LCAKKyAgICAyNDEsIDY0LCA2MywgMjAyLCAyNDYsIDQsIDI0MSwgNjQsIDYzLCAyMjIsIDY2LCA0LCAyNDEsIDY0LCA2NCwgMjQxLCA2NSwgCisgICAgMjQzLCA0NSwgNjMsIDIwMiwgMjQ2LCA0LCAyNDEsIDY0LCA2NCwgMjQxLCA2NSwgMjQzLCA0NSwgNjMsIDIyMiwgNjYsIAorICAgIDI0MSwgNjQsIDI0MSwgNjUsIDIwNiwgMjMxLCA2MywgMjA1LCAyMjYsIDIyNCwgNDksIDYzLCAyMDIsIDI0NiwgNCwgMjI0LCAKKyAgICA0OSwgNjMsIDIyMiwgNjYsIDQsIDIyNCwgNDksIDY0LCAyMjQsIDUwLCAyNDMsIDQ1LCA2MywgNCwgMjI0LCA0OSwgMjA2LCAKKyAgICA3NywgMzEsIDI0MiwgMjM0LCAxNjIsIDMxLCAyNDIsIDIzNCwgMjIyLCA2NiwgMzEsIDI0MiwgMjM0LCAyNywgMzEsIDI0MiwgCisgICAgMjM0LCAyMDIsIDI0NiwgMjcsIDMxLCAyNDIsIDIzNCwgMjAyLCAyNDYsIDgwLCAzMSwgMjQyLCAyMzQsIDIzOCwgMjYsIDgwLCAKKyAgICAzMSwgMjQyLCAyMzQsIDIwNiwgNzcsIDIxMiwgMjQsIDE2MiwgMjEyLCAyNCwgMjIyLCA2NiwgMjEyLCAyNCwgMjcsIDIxMiwgCisgICAgMjQsIDgwLCAyMTIsIDI0LCAyMDIsIDI0NiwgODAsIDIxMiwgMjQsIDIzOCwgMjYsIDgwLCAyMTIsIDI0LCAxNjIsIDIzNywgCisgICAgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjIyLCA2NiwgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyNywgMjM3LCAKKyAgICA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCA4MCwgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMDIsIDI0NiwgODAsIAorICAgIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjM4LCAyNiwgODAsIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgCisgICAgMTYyLCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMjIsIDY2LCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAKKyAgICAyNywgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgODAsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDIwMiwgCisgICAgMjQ2LCA4MCwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjM4LCAyNiwgODAsIDIwOSwgMTA2LCAyMDgsIDIwNywgCisgICAgMjUwLCAxNjUsIDE2MiwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjIyLCA2NiwgMjM4LCAyMzIsIDIwOCwgMjA3LCAKKyAgICAyNTAsIDE2NSwgMjcsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDgwLCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgCisgICAgMTY1LCAyMDIsIDI0NiwgODAsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDE2MiwgMTI2LCAyMTUsIDk4LCA2MywgCisgICAgMjA4LCAxMDksIDIyMiwgNjYsIDEyNiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAxMjYsIDIxNSwgOTgsIDYzLCAyMDgsIAorICAgIDEwOSwgMjIyLCA2NiwgMTI2LCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDE2MiwgMjM2LCAyMjksIDIxNSwgOTgsIAorICAgIDYzLCAyMDgsIDEwOSwgMjIyLCA2NiwgMjM2LCAyMjksIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjM2LCAyMjksIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgMjIyLCA2NiwgMjM2LCAyMjksIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjEzLCAKKyAgICAxMDYsIDE2MiwgMjM2LCAyMjksIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMTYyLCAyMzcsIDYxLCAyMTUsIDk4LCAKKyAgICA2MywgMjA4LCAxMDksIDgwLCAyMzcsIDYxLCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIyMiwgNjYsIDIwOSwgMTA2LCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDgwLCAyMDksIDEwNiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMDksIDEwNiwgMjE1LCA5OCwgCisgICAgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMzgsIDIzMiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCA4MCwgMjM4LCAKKyAgICAyMzIsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjAyLCAyNDYsIDgwLCAyMzgsIDIzMiwgMjE1LCA5OCwgNjMsIDIwOCwgCisgICAgMTA5LCA4MCwgMjM4LCAyMzIsIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMTYyLCAyMDQsIDE2NSwgMjE1LCA5OCwgCisgICAgNjMsIDIwOCwgMTA5LCA4MCwgMjA0LCAxNjUsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgODAsIDIwNCwgMTY1LCAyMTUsIDk4LCAKKyAgICAyMTUsIDE1NSwgMjA4LCAxMDksIDk4LCA1NSwgMywgNCwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgNTUsIDMsIDQsIDIwNSwgCisgICAgOTksIDI1MCwgMjAyLCA4NywgNTUsIDMsIDQsIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDU1LCAzLCA0LCAyMDUsIDk5LCAKKyAgICAyNTAsIDIwMiwgOTgsIDU1LCAzLCAyMjIsIDY2LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCA1NSwgMywgMjIyLCA2NiwgCisgICAgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCA1NSwgMywgMjIyLCA2NiwgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgNTUsIDMsIAorICAgIDIyMiwgNjYsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIAorICAgIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgCisgICAgMTkxLCA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCAKKyAgICAxODIsIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIDg3LCA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCAxOTEsIAorICAgIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIDk4LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCAxODIsIDU1LCAzLCAKKyAgICAyMzgsIDExOCwgMjUwLCAyMDIsIDg3LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCAxOTEsIDU1LCAzLCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDgwLCA5OCwgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDE4MiwgNTUsIDMsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgODAsIDg3LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgMTkxLCA1NSwgMywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA4MCwgOTgsIDU1LCAzLCAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCAxODIsIDU1LCAzLCAKKyAgICAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCA4NywgNTUsIDMsIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgCisgICAgODAsIDE5MSwgNTUsIDMsIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgOTgsIDIwNSwgOTcsIDU1LCAzLCAyMjAsIAorICAgIDEyNCwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjIwLCAxMjQsIDIxMCwgOTksIDg3LCAyMDUsIDk3LCA1NSwgMywgCisgICAgMjIwLCAxMjQsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDIyMCwgMTI0LCAyMTAsIDk5LCA5OCwgMjA1LCA5NywgCisgICAgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgOTgsIAorICAgIDIwNSwgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCA5OCwgMjA1LCA5NywgCisgICAgNTUsIDMsIDgwLCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCA4MCwgMjEwLCA5OSwgODcsIDIwNSwgOTcsIDU1LCAzLCAKKyAgICA4MCwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgODAsIDIxMCwgOTksIDk4LCAyMDUsIDk3LCA1NSwgMywgMjAyLCAKKyAgICAyNDYsIDgwLCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyMDIsIDI0NiwgODAsIDIxMCwgOTksIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMjAyLCAyNDYsIDgwLCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyMDIsIDI0NiwgODAsIDIxMCwgCisgICAgOTksIDk4LCAyMzcsIDg1LCA0OCwgMTgyLCAyMzcsIDg1LCA0OCwgODcsIDIzNywgODUsIDQ4LCAxOTEsIDIzNywgODUsIDQ4LCAKKyAgICA5OCwgOTUsIDQ4LCAxODIsIDk1LCA0OCwgODcsIDk1LCA0OCwgMTkxLCA5NSwgNDgsIDk4LCAyNDMsIDcyLCA0OCwgMTgyLCAKKyAgICAyNDMsIDcyLCA0OCwgODcsIDI0MywgNzIsIDQ4LCAxOTEsIDI0MywgNzIsIDQ4LCA5OCwgODAsIDI0MywgNzIsIDQ4LCAxODIsIAorICAgIDgwLCAyNDMsIDcyLCA0OCwgODcsIDgwLCAyNDMsIDcyLCA0OCwgMTkxLCA4MCwgMjQzLCA3MiwgNDgsIDk4LCA4MCwgNDgsIAorICAgIDE4MiwgODAsIDQ4LCA4NywgODAsIDQ4LCAxOTEsIDgwLCA0OCwgOTgsIDQzLCA0OCwgMTgyLCA0MywgNDgsIDg3LCA0MywgCisgICAgNDgsIDE5MSwgNDMsIDQ4LCAxNTcsIDIwMSwgNDgsIDQzLCA0OCwgMTU3LCAyMzksIDE0LCA0MywgNDgsIDIwOCwgMjU0LCAKKyAgICAyMzksIDE0LCA0MywgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA0MywgNDgsIDQ5LCA1MSwgNDMsIDQ4LCAxMTUsIDEyNywgNDMsIAorICAgIDQ4LCAyMDEsIDI3LCA5OCwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgODcsIAorICAgIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMTYyLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIzOSwgMTQsIAorICAgIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgOTgsIDE1NCwgCisgICAgNDgsIDIwMSwgMjcsIDE4MiwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMTU0LCA0OCwgCisgICAgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDE1NCwgNDgsIDIwMSwgMjcsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgMTU0LCA0OCwgMjAxLCAyNywgCisgICAgOTgsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE4MiwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDIyMiwgCisgICAgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAyMjIsIAorICAgIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAKKyAgICAyMzksIDE0LCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjIyLCA2NiwgMTU0LCA0OCwgCisgICAgMjAxLCAyNywgOTgsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgODAsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgODAsIDE1NCwgNDgsIAorICAgIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMzksIDE0LCA4MCwgMTU0LCAKKyAgICA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCA5OCwgMjAyLCAyNDYsIDgwLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDIwMiwgMjQ2LCA4MCwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMjAyLCAKKyAgICAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIAorICAgIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgOTgsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgCisgICAgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA2NCwgNTUsIDIwMSwgNSwgMjA1LCA5OSwgCisgICAgMjUwLCAyMDIsIDE4MiwgNjQsIDU1LCAyMDEsIDUsIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgNjQsIDU1LCAyMDEsIDUsIAorICAgIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDY0LCA1NSwgMjAxLCA1LCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCAKKyAgICAyMTgsIDIxMSwgMjA3LCA2LCAxODIsIDU1LCAzLCAyMTgsIDIxMSwgMjA3LCA2LCA4NywgNTUsIDMsIDIxOCwgMjExLCAyMDcsIAorICAgIDYsIDE5MSwgNTUsIDMsIDIxOCwgMjExLCAyMDcsIDYsIDgwLCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIDEwMiwgODAsIDU1LCAKKyAgICAyMTAsIDEwMCwgMjAxLCAyNSwgMTIwLCAyMDYsIDcxLCA4MCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMTIsIDIzNCwgCisgICAgMjEzLCA4MCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMTIsIDIwNiwgNzQsIDk4LCAyNDgsIDkwLCA2NCwgNDgsIDg3LCAKKyAgICAyNDgsIDkzLCAyMTAsIDEwMiwgNjQsIDQ4LCA5OCwgMjA1LCAxNTgsIDIxMCwgMTAyLCA2NCwgNDgsIDg3LCAyMDUsIDE1OCwgCisgICAgMjEwLCAxMDIsIDY0LCA0OCwgOTgsIDIyNSwgMjIsIDY0LCA0OCwgODcsIDIxMywgNDAsIDY0LCA0OCwgOTgsIDIxMywgNDAsIAorICAgIDY0LCA0OCwgODcsIDIyNSwgMjIsIDY0LCA0OCwgOTgsIDI0OSwgMTI4LCAyMTAsIDEwMSwgNjQsIDQ4LCA4NywgMjQ5LCAKKyAgICAxMjgsIDIxMCwgMTAxLCA2NCwgNDgsIDk4LCAyMzYsIDE5OCwgMjEwLCAxMDEsIDY0LCA0OCwgODcsIDIzNiwgMTk4LCAyMTAsIAorICAgIDEwMSwgNjQsIDQ4LCA2NCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMDIsIDY0LCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIAorICAgIDEyMCwgMjA2LCA3MSwgMTk5LCAyMywgMjM3LCAxODksIDIyMSwgMTA0LCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDIwNiwgCisgICAgOTQsIDIyMCwgMTYsIDIzNywgMTg5LCAyMDYsIDc2LCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDIzNCwgMTM1LCAyMTIsIAorICAgIDI1MSwgMjM3LCAxODksIDIzMywgOTEsIDIzNywgMTg5LCAyLCA3NiwgMjA2LCAxMDcsIDIzMywgMTIzLCAyNDcsIDE2OSwgCisgICAgMjIyLCA3NywgMjM0LCAxOTksIDIxMywgMjIwLCAyNDksIDEzMCwgNzYsIDIzNCwgMTk5LCAyMjUsIDI3LCAyMzcsIDY2LCAKKyAgICAyMTMsIDQ1LCAyMzcsIDY2LCAyMzQsIDE3MywgMjM0LCAyMDAsIDMsIDEyNCwgMjYsIDEwMSwgMjM3LCA4MiwgMjQyLCAyMzEsIAorICAgIDIzNywgMTkwLCAzLCAyNDIsIDI1NCwgMjM0LCAxNTcsIDI0NiwgOTksIDIzNywgMTg5LCAyMjAsIDExMywgMjM3LCAxODksIAorICAgIDIxMiwgMjQyLCAyMTcsIDc5LCAyMDYsIDEwNywgMjM3LCAzMiwgMjI1LCA1NywgMjM5LCAxNDcsIDIzNywgMTg5LCAyMjMsIAorICAgIDI1MywgMjM3LCAxODksIDIzNywgMTkwLCAyMTYsIDE3NiwgMjA5LCAzOSwgMjM3LCAxODksIDIxNSwgMjQsIDIwMCwgMjUwLCAKKyAgICAyMTAsIDE3MywgMjE1LCAxMywgMjIyLCAxODEsIDIyOCwgMTE4LCAyMDQsIDE3MywgMjIxLCA3MiwgMjQ2LCAxOTksIDIwOSwgCisgICAgMjI0LCAyMTYsIDExLCAyNDAsIDE5OCwgMjQ3LCAxMTYsIDIyNywgMTQyLCAyMzcsIDEyNiwgMjIxLCAxMjksIDIxNiwgMzQsIAorICAgIDIwMCwgMjI0LCAyMDEsIDgzLCAyMTUsIDg2LCAyMzQsIDE3OCwgMjAxLCAxOSwgMjM3LCAyNCwgMjM5LCAxNDMsIDMsIDIzOSwgCisgICAgMTQxLCAyNDYsIDExNywgMjM1LCAxMjcsIDIwNCwgMjAxLCAyMzUsIDEyOCwgMjA4LCAyMDYsIDIzNSwgMTE0LCAyMjAsIDEzLCAKKyAgICAyMTMsIDQ3LCAyMzcsIDczLCAyMTUsIDEzNCwgMjIyLCA2OSwgMjExLCAxOTYsIDIxNSwgMTM0LCAyMjIsIDY5LCAyMDYsIAorICAgIDc1LCAyMTUsIDEzNCwgMjIyLCA2OSwgMjQ4LCA3NywgMjM1LCAxMjIsIDIyMiwgMTQxLCAyNTAsIDE5MiwgMjAzLCAyNDMsIAorICAgIDI0MiwgMjM4LCAyNTAsIDExOCwgMjQyLCAyMDgsIDI0OSwgMTIxLCAyMTUsIDU5LCAyNDcsIDEyMCwgMjQ5LCAxMDgsIDI0OCwgCisgICAgNjIsIDIzNSwgNjQsIDIxMiwgMzIsIDIxMCwgOTMsIDIxNiwgMTYzLCA3NiwgMjM3LCAxLCAyMDgsIDI4LCAyMzcsIDQzLCAKKyAgICAyMzgsIDI0NiwgMjM1LCAxMjksIDc2LCAyMjEsIDE3MywgMjE2LCA2OCwgMjI2LCAxMjQsIDIxNiwgMTYwLCAyNDIsIDI1MSwgCisgICAgMjI0LCAxNjQsIDIzNywgMTg5LCAyMTEsIDIxMywgMjA0LCAxOTAsIDIwMywgMjQ1LCAyMzcsIDE4OSwgMjM5LCAyNCwgMjM5LCAKKyAgICAxMzMsIDI0OSwgNTUsIDIxMCwgODAsIDIxNiwgMjM3LCAyMzYsIDIyMSwgMjM3LCAxODksIDI0NywgMjQ1LCAyNDEsIDE1OCwgCisgICAgMjM1LCA5NywgMjI0LCAxNDMsIDIxMywgOTIsIDIwOSwgMjI2LCAyMDgsIDE4NywgMjQ2LCAyNTUsIDIwMSwgNTksIDEyLCAKKyAgICAxNSwgMjMyLCAyMjEsIDEyLCAxNSwgMjMyLCAyMjAsIDEyLCAxNSwgMjMyLCAyMTksIDEyLCAxNSwgMjMyLCAyMTgsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTcsIDEyLCAxNSwgMjMyLCAyMTYsIDEyLCAxNSwgMjMyLCAyMTUsIDEyLCAxNSwgMjMyLCAyMTQsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTMsIDEyLCAxNSwgMjMyLCAyMTIsIDEyLCAxNSwgMjMyLCAyMTEsIDEyLCAxNSwgMjMyLCAyMTAsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDksIDEyLCAxNSwgMjMyLCAyMDgsIDEyLCAxNSwgMjMyLCAyMDcsIDEyLCAxNSwgMjMyLCAyMDYsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDUsIDEyLCAxNSwgMjMyLCAyMDQsIDEyLCAxNSwgMjMyLCAyMDMsIDEyLCAxNSwgMjMyLCAyMDIsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDEsIDEyLCAxNSwgMjMyLCAyMDAsIDEyLCAxNSwgMjMyLCAxOTksIDEyLCAxNSwgMjMyLCAxOTgsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTcsIDEyLCAxNSwgMjMyLCAxOTYsIDEyLCAxNSwgMjMyLCAxOTUsIDEyLCAxNSwgMjMyLCAxOTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTMsIDEyLCAxNSwgMjMyLCAxOTIsIDEyLCAxNSwgMjMyLCAxOTEsIDEyLCAxNSwgMjMyLCAxOTAsIDEyLCAKKyAgICAxNSwgMjMyLCAxODksIDEyLCAxNSwgMjMyLCAxODgsIDEyLCAxNSwgMjMyLCAxODcsIDEyLCAxNSwgMjMyLCAxODYsIDEyLCAKKyAgICAxNSwgMjMyLCAxODUsIDEyLCAxNSwgMjMyLCAxODQsIDEyLCAxNSwgMjMyLCAxODMsIDEyLCAxNSwgMjMyLCAxODIsIDEyLCAKKyAgICAxNSwgMjMyLCAxODEsIDEyLCAxNSwgMjMyLCAxODAsIDEyLCAxNSwgMjMyLCAxNzksIDEyLCAxNSwgMjMyLCAxNzgsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzcsIDEyLCAxNSwgMjMyLCAxNzYsIDEyLCAxNSwgMjMyLCAxNzUsIDEyLCAxNSwgMjMyLCAxNzQsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzMsIDEyLCAxNSwgMjMyLCAxNzIsIDEyLCAxNSwgMjMyLCAxNzEsIDEyLCAxNSwgMjMyLCAxNzAsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjksIDEyLCAxNSwgMjMyLCAxNjgsIDEyLCAxNSwgMjMyLCAxNjcsIDEyLCAxNSwgMjMyLCAxNjYsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjUsIDEyLCAxNSwgMjMyLCAxNjQsIDEyLCAxNSwgMjMyLCAxNjMsIDEyLCAxNSwgMjMyLCAxNjIsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjEsIDEyLCAxNSwgMjMyLCAxNjAsIDEyLCAxNSwgMjMyLCAxNTksIDEyLCAxNSwgMjMyLCAxNTgsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTcsIDEyLCAxNSwgMjMyLCAxNTYsIDEyLCAxNSwgMjMyLCAxNTUsIDEyLCAxNSwgMjMyLCAxNTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTMsIDEyLCAxNSwgMjMyLCAxNTIsIDEyLCAxNSwgMjMyLCAxNTEsIDEyLCAxNSwgMjMyLCAxNTAsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDksIDEyLCAxNSwgMjMyLCAxNDgsIDEyLCAxNSwgMjMyLCAxNDcsIDEyLCAxNSwgMjMyLCAxNDYsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDUsIDEyLCAxNSwgMjMyLCAxNDQsIDEyLCAxNSwgMjMyLCAxNDMsIDEyLCAxNSwgMjMyLCAxNDIsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDEsIDEyLCAxNSwgMjMyLCAxNDAsIDEyLCAxNSwgMjMyLCAxMzksIDEyLCAxNSwgMjMyLCAxMzgsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzcsIDEyLCAxNSwgMjMyLCAxMzYsIDEyLCAxNSwgMjMyLCAxMzUsIDEyLCAxNSwgMjMyLCAxMzQsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzMsIDEyLCAxNSwgMjMyLCAxMzIsIDEyLCAxNSwgMjMyLCAxMzEsIDEyLCAxNSwgMjMyLCAxMzAsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjksIDEyLCAxNSwgMjMyLCAxMjgsIDEyLCAxNSwgMjMyLCAxMjcsIDEyLCAxNSwgMjMyLCAxMjYsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjUsIDEyLCAxNSwgMjMyLCAxMjQsIDEyLCAxNSwgMjMyLCAxMjMsIDEyLCAxNSwgMjMyLCAxMjIsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjEsIDEyLCAxNSwgMjMyLCAxMjAsIDEyLCAxNSwgMjMyLCAxMTksIDEyLCAxNSwgMjMyLCAxMTgsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTcsIDEyLCAxNSwgMjMyLCAxMTYsIDEyLCAxNSwgMjMyLCAxMTUsIDEyLCAxNSwgMjMyLCAxMTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTMsIDEyLCAxNSwgMjMyLCAxMTIsIDEyLCAxNSwgMjMyLCAxMTEsIDEyLCAxNSwgMjMyLCAxMTAsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDksIDEyLCAxNSwgMjMyLCAxMDgsIDEyLCAxNSwgMjMyLCAxMDcsIDEyLCAxNSwgMjMyLCAxMDYsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDUsIDEyLCAxNSwgMjMyLCAxMDQsIDEyLCAxNSwgMjMyLCAxMDMsIDEyLCAxNSwgMjMyLCAxMDIsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDEsIDEyLCAxNSwgMjMyLCAxMDAsIDEyLCAxNSwgMjMyLCA5OSwgMTIsIDE1LCAyMzIsIDk4LCAxMiwgMTUsIAorICAgIDIzMiwgOTcsIDEyLCAxNSwgMjMyLCA5NiwgMTIsIDE1LCAyMzIsIDk1LCAxMiwgMTUsIDIzMiwgOTQsIDEyLCAxNSwgMjMyLCAKKyAgICA5MywgMTIsIDE1LCAyMzIsIDkyLCAxMiwgMTUsIDIzMiwgOTEsIDEyLCAxNSwgMjMyLCA5MCwgMTIsIDE1LCAyMzIsIDg5LCAKKyAgICAxMiwgMTUsIDIzMiwgODgsIDEyLCAxNSwgMjMyLCA4NywgMTIsIDE1LCAyMzIsIDg2LCAxMiwgMTUsIDIzMiwgODUsIDEyLCAKKyAgICAxNSwgMjMyLCA4NCwgMTIsIDE1LCAyMzIsIDgzLCAxMiwgMTUsIDIzMiwgODIsIDEyLCAxNSwgMjMyLCA4MSwgMTIsIDE1LCAKKyAgICAyMzIsIDgwLCAxMiwgMTUsIDIzMiwgNzksIDEyLCAxNSwgMjMyLCA3OCwgMTIsIDE1LCAyMzIsIDc3LCAxMiwgMTUsIDIzMiwgCisgICAgNzYsIDEyLCAxNSwgMjMyLCA3NSwgMTIsIDE1LCAyMzIsIDc0LCAxMiwgMTUsIDIzMiwgNzMsIDEyLCAxNSwgMjMyLCA3MiwgCisgICAgMTIsIDE1LCAyMzIsIDcxLCAxMiwgMTUsIDIzMiwgNzAsIDEyLCAxNSwgMjMyLCA2OSwgMTIsIDE1LCAyMzIsIDY4LCAxMiwgCisgICAgMTUsIDIzMiwgNjcsIDEyLCAxNSwgMjMyLCA2NiwgMTIsIDE1LCAyMzIsIDY1LCAxMiwgMTUsIDIzMiwgNjQsIDEyLCAxNSwgCisgICAgMjMyLCA2MywgMTIsIDE1LCAyMzIsIDYyLCAxMiwgMTUsIDIzMiwgNjEsIDEyLCAxNSwgMjMyLCA2MCwgMTIsIDE1LCAyMzIsIAorICAgIDU5LCAxMiwgMTUsIDIzMiwgNTgsIDEyLCAxNSwgMjMyLCA1NywgMTIsIDE1LCAyMzIsIDU2LCAxMiwgMTUsIDIzMiwgNTUsIAorICAgIDEyLCAxNSwgMjMyLCA1NCwgMTIsIDE1LCAyMzIsIDUzLCAxMiwgMTUsIDIzMiwgNTIsIDEyLCAxNSwgMjMyLCA1MSwgMTIsIAorICAgIDE1LCAyMzIsIDUwLCAxMiwgMTUsIDIzMiwgNDksIDEyLCAxNSwgMjMyLCA0OCwgMTIsIDE1LCAyMzIsIDQ3LCAxMiwgMTUsIAorICAgIDIzMiwgNDYsIDEyLCAxNSwgMjMyLCA0NSwgMTIsIDE1LCAyMzIsIDQ0LCAxMiwgMTUsIDIzMiwgNDMsIDEyLCAxNSwgMjMyLCAKKyAgICA0MiwgMTIsIDE1LCAyMzIsIDQxLCAxMiwgMTUsIDIzMiwgNDAsIDEyLCAxNSwgMjMyLCAzOSwgMTIsIDE1LCAyMzIsIDM4LCAKKyAgICAxMiwgMTUsIDIzMiwgMzcsIDEyLCAxNSwgMjMyLCAzNiwgMTIsIDE1LCAyMzIsIDM1LCAxMiwgMTUsIDIzMiwgMzQsIDEyLCAKKyAgICAxNSwgMjMyLCAzMywgMTIsIDE1LCAyMzIsIDMyLCAxMiwgMTUsIDIzMiwgMzEsIDEyLCAxNSwgMjMyLCAzMCwgMTIsIDE1LCAKKyAgICAyMzIsIDI5LCAxMiwgMTUsIDIzMiwgMjgsIDEyLCAxNSwgMjMyLCAyNywgMTIsIDE1LCAyMzIsIDI2LCAxMiwgMTUsIDIzMiwgCisgICAgMjUsIDEyLCAxNSwgMjMyLCAyNCwgMTIsIDE1LCAyMzIsIDIzLCAxMiwgMTUsIDIzMiwgMjIsIDEyLCAxNSwgMjMyLCAyMSwgCisgICAgMTIsIDE1LCAyMzIsIDIwLCAxMiwgMTUsIDIzMiwgMTksIDEyLCAxNSwgMjMyLCAxOCwgMTIsIDE1LCAyMzIsIDE3LCAxMiwgCisgICAgMTUsIDIzMiwgMTYsIDEyLCAxNSwgMjMyLCAxNSwgMTIsIDE1LCAyMzIsIDE0LCAxMiwgMTUsIDIzMiwgMTMsIDEyLCAxNSwgCisgICAgMjMyLCAxMiwgMTIsIDE1LCAyMzIsIDExLCAxMiwgMTUsIDIzMiwgMTAsIDEyLCAxNSwgMjMyLCA5LCAxMiwgMTUsIDIzMiwgCisgICAgOCwgMTIsIDE1LCAyMzIsIDcsIDEyLCAxNSwgMjMyLCA2LCAxMiwgMTUsIDIzMiwgNSwgMTIsIDE1LCAyMzIsIDQsIDEyLCAKKyAgICAxNSwgMjMyLCAzLCAxMiwgMTUsIDIzMiwgMiwgMTIsIDE1LCAyMzIsIDEsIDEyLCAxNSwgMjMyLCAwLCAxMiwgMTUsIDIzMSwgCisgICAgMjU1LCAxMiwgMTUsIDIzMSwgMjU0LCAxMiwgMTUsIDIzMSwgMjUzLCAxMiwgMTUsIDIzMSwgMjUyLCAxMiwgMTUsIDIzMSwgCisgICAgMjUxLCAxMiwgMTUsIDIzMSwgMjUwLCAxMiwgMTUsIDIzMSwgMjQ5LCAxMiwgMTUsIDIzMSwgMjQ4LCAxMiwgMTUsIDIzMSwgCisgICAgMjQ3LCAxMiwgMTUsIDIzMSwgMjQ2LCAxMiwgMTUsIDIzMSwgMjQ1LCAxMiwgMTUsIDIzMSwgMjQ0LCAxMiwgMTUsIDIzMSwgCisgICAgMjQzLCAxMiwgMTUsIDIzMSwgMjQyLCAxMiwgMTUsIDIzMSwgMjQxLCAxMiwgMTUsIDIzMSwgMjQwLCAxMiwgMTUsIDIzMSwgCisgICAgMjM5LCAxMiwgMTUsIDIzMSwgMjM4LCAxMiwgMTUsIDIzMSwgMjM3LCAxMiwgMTUsIDIzMSwgMjM2LCAxMiwgMTUsIDIzMSwgCisgICAgMjM1LCAxMiwgMTUsIDIzMSwgMjM0LCAxMiwgMTUsIDIzMSwgMjMzLCAxMiwgMTUsIDIzMSwgMjMyLCAxMiwgMTUsIDIzMSwgCisgICAgMjMxLCAxMiwgMTUsIDIzMSwgMjMwLCAxMiwgMTUsIDIzMSwgMjI5LCAxMiwgMTUsIDIzMSwgMjI4LCAxMiwgMTUsIDIzMSwgCisgICAgMjI3LCAxMiwgMTUsIDIzMSwgMjI2LCAxMiwgMTUsIDIzMSwgMjI1LCAxMiwgMTUsIDIzMSwgMjI0LCAxMiwgMTUsIDIzMSwgCisgICAgMjIzLCAxMiwgMTUsIDIzMSwgMjIyLCAxMiwgMTUsIDIzMSwgMjIxLCAxMiwgMTUsIDIzMSwgMjIwLCAxMiwgMTUsIDIzMSwgCisgICAgMjE5LCAxMiwgMTUsIDIzMSwgMjE4LCAxMiwgMTUsIDIzMSwgMjE3LCAxMiwgMTUsIDIzMSwgMjE2LCAxMiwgMTUsIDIzMSwgCisgICAgMjE1LCAxMiwgMTUsIDIzMSwgMjE0LCAxMiwgMTUsIDIzMSwgMjEzLCAxMiwgMTUsIDIzMSwgMjEyLCAxMiwgMTUsIDIzMSwgCisgICAgMjExLCAxMiwgMTUsIDIzMSwgMjEwLCAxMiwgMTUsIDIzMSwgMjA5LCAxMiwgMTUsIDIzMSwgMjA4LCAxMiwgMTUsIDIzMSwgCisgICAgMjA3LCAxMiwgMTUsIDIzMSwgMjA2LCAxMiwgMTUsIDIzMSwgMjA1LCAxMiwgMTUsIDIzMSwgMjA0LCAxMiwgMTUsIDIzMSwgCisgICAgMjAzLCAxMiwgMTUsIDIzMSwgMjAyLCAxMiwgMTUsIDIzMSwgMjAxLCAxMiwgMTUsIDIzMSwgMjAwLCAxMiwgMTUsIDIzMSwgCisgICAgMTk5LCAxMiwgMTUsIDIzMSwgMTk4LCAxMiwgMTUsIDIzMSwgMTk3LCAxMiwgMTUsIDIzMSwgMTk2LCAxMiwgMTUsIDIzMSwgCisgICAgMTk1LCAxMiwgMTUsIDIzMSwgMTk0LCAxMiwgMTUsIDIzMSwgMTkzLCAxMiwgMTUsIDIzMSwgMTkyLCAxMiwgMTUsIDIzMSwgCisgICAgMTkxLCAxMiwgMTUsIDIzMSwgMTkwLCAxMiwgMTUsIDIzMSwgMTg5LCAxMiwgMTUsIDIzMSwgMTg4LCAxMiwgMTUsIDIzMSwgCisgICAgMTg3LCAxMiwgMTUsIDIzMSwgMTg2LCAxMiwgMTUsIDIzMSwgMTg1LCAxMiwgMTUsIDIzMSwgMTg0LCAxMiwgMTUsIDIzMSwgCisgICAgMTgzLCAxMiwgMTUsIDIzMSwgMTgyLCAxMiwgMTUsIDIzMSwgMTgxLCAxMiwgMTUsIDIzMSwgMTgwLCAxMiwgMTUsIDIzMSwgCisgICAgMTc5LCAxMiwgMTUsIDIzMSwgMTc4LCAxMiwgMTUsIDIzMSwgMTc3LCAxMiwgMTUsIDIzMSwgMTc2LCAxMiwgMTUsIDIzMSwgCisgICAgMTc1LCAxMiwgMTUsIDIzMSwgMTc0LCAxMiwgMTUsIDIzMSwgMTczLCAxMiwgMTUsIDIzMSwgMTcyLCAxMiwgMTUsIDIzMSwgCisgICAgMTcxLCAxMiwgMTUsIDIzMSwgMTcwLCAxMiwgMTUsIDIzMSwgMTY5LCAxMiwgMTUsIDIzMSwgMTY4LCAxMiwgMTUsIDIzMSwgCisgICAgMTY3LCAxMiwgMTUsIDIzMSwgMTY2LCAxMiwgMTUsIDIzMSwgMTY1LCAxMiwgMTUsIDIzMSwgMTY0LCAxMiwgMTUsIDIzMSwgCisgICAgMTYzLCAxMiwgMTUsIDIzMSwgMTYyLCAxMiwgMTUsIDIzMSwgMTYxLCAxMiwgMTUsIDIzMSwgMTYwLCAxMiwgMTUsIDIzMSwgCisgICAgMTU5LCAxMiwgMTUsIDIzMSwgMTU4LCAxMiwgMTUsIDIzMSwgMTU3LCAxMiwgMTUsIDIzMSwgMTU2LCAxMiwgMTUsIDIzMSwgCisgICAgMTU1LCAxMiwgMTUsIDIzMSwgMTU0LCAxMiwgMTUsIDIzMSwgMTUzLCAxMiwgMTUsIDIzMSwgMTUyLCAxMiwgMTUsIDIzMSwgCisgICAgMTUxLCAxMiwgMTUsIDIzMSwgMTUwLCAxMiwgMTUsIDIzMSwgMTQ5LCAxMiwgMTUsIDIzMSwgMTQ4LCAxMiwgMTUsIDIzMSwgCisgICAgMTQ3LCAxMiwgMTUsIDIzMSwgMTQ2LCAxMiwgMTUsIDIzMSwgMTQ1LCAxMiwgMTUsIDIzMSwgMTQ0LCAxMiwgMTUsIDIzMSwgCisgICAgMTQzLCAxMiwgMTUsIDIzMSwgMTQyLCAxMiwgMTUsIDIzMSwgMTQxLCAxMiwgMTUsIDIzMSwgMTQwLCAxMiwgMTUsIDIzMSwgCisgICAgMTM5LCAxMiwgMTUsIDIzMSwgMTM4LCAxMiwgMTUsIDIzMSwgMTM3LCAxMiwgMTUsIDIzMSwgMTM2LCAxMiwgMTUsIDIzMSwgCisgICAgMTM1LCAxMiwgMTUsIDIzMSwgMTM0LCAxMiwgMTUsIDIzMSwgMTMzLCAxMiwgMTUsIDIzMSwgMTMyLCAxMiwgMTUsIDIzMSwgCisgICAgMTMxLCAxMiwgMTUsIDIzMSwgMTMwLCAxMiwgMTUsIDIzMSwgMTI5LCAxMiwgMTUsIDIzMSwgMTI4LCAxMiwgMTUsIDIzMSwgCisgICAgMTI3LCAxMiwgMTUsIDIzMSwgMTI2LCAxMiwgMTUsIDIzMSwgMTI1LCAxMiwgMTUsIDIzMSwgMTI0LCAxMiwgMTUsIDIzMSwgCisgICAgMTIzLCAxMiwgMTUsIDIzMSwgMTIyLCAxMiwgMTUsIDIzMSwgMTIxLCAxMiwgMTUsIDIzMSwgMTIwLCAxMiwgMTUsIDIzMSwgCisgICAgMTE5LCAxMiwgMTUsIDIzMSwgMTE4LCAxMiwgMTUsIDIzMSwgMTE3LCAxMiwgMTUsIDIzMSwgMTE2LCAxMiwgMTUsIDIzMSwgCisgICAgMTE1LCAxMiwgMTUsIDIzMSwgMTE0LCAxMiwgMTUsIDIzMSwgMTEzLCAxMiwgMTUsIDIzMSwgMTEyLCAxMiwgMTUsIDIzMSwgCisgICAgMTExLCAxMiwgMTUsIDIzMSwgMTEwLCAxMiwgMTUsIDIzMSwgMTA5LCAxMiwgMTUsIDIzMSwgMTA4LCAxMiwgMTUsIDIzMSwgCisgICAgMTA3LCAxMiwgMTUsIDIzMSwgMTA2LCAxMiwgMTUsIDIzMSwgMTA1LCAxMiwgMTUsIDIzMSwgMTA0LCAxMiwgMTUsIDIzMSwgCisgICAgMTAzLCAxMiwgMTUsIDIzMSwgMTAyLCAxMiwgMTUsIDIzMSwgMTAxLCAxMiwgMTUsIDIzMSwgMTAwLCAxMiwgMTUsIDIzMSwgCisgICAgOTksIDEyLCAxNSwgMjMxLCA5OCwgMTIsIDE1LCAyMzEsIDk3LCAxMiwgMTUsIDIzMSwgOTYsIDEyLCAxNSwgMjMxLCA5NSwgCisgICAgMTIsIDE1LCAyMzEsIDk0LCAxMiwgMTUsIDIzMSwgOTMsIDEyLCAxNSwgMjMxLCA5MiwgMTIsIDE1LCAyMzEsIDkxLCAxMiwgCisgICAgMTUsIDIzMSwgOTAsIDEyLCAxNSwgMjMxLCA4OSwgMTIsIDE1LCAyMzEsIDg4LCAxMiwgMTUsIDIzMSwgODcsIDEyLCAxNSwgCisgICAgMjMxLCA4NiwgMTIsIDE1LCAyMzEsIDg1LCAxMiwgMTUsIDIzMSwgODQsIDEyLCAxNSwgMjMxLCA4MywgMTIsIDE1LCAyMzEsIAorICAgIDgyLCAxMiwgMTUsIDIzMSwgODEsIDEyLCAxNSwgMjMxLCA4MCwgMTIsIDE1LCAyMzEsIDc5LCAxMiwgMTUsIDIzMSwgNzgsIAorICAgIDEyLCAxNSwgMjMxLCA3NywgMTIsIDE1LCAyMzEsIDc2LCAxMiwgMTUsIDIzMSwgNzUsIDEyLCAxNSwgMjMxLCA3NCwgMTIsIAorICAgIDE1LCAyMzEsIDczLCAxMiwgMTUsIDIzMSwgNzIsIDEyLCAxNSwgMjMxLCA3MSwgMTIsIDE1LCAyMzEsIDcwLCAxMiwgMTUsIAorICAgIDIzMSwgNjksIDEyLCAxNSwgMjMxLCA2OCwgMTIsIDE1LCAyMzEsIDY3LCAxMiwgMTUsIDIzMSwgNjYsIDEyLCAxNSwgMjMxLCAKKyAgICA2NSwgMTIsIDE1LCAyMzEsIDY0LCAxMiwgMTUsIDIzMSwgNjMsIDEyLCAxNSwgMjMxLCA2MiwgMTIsIDE1LCAyMzEsIDYxLCAKKyAgICAxMiwgMTUsIDIzMSwgNjAsIDEyLCAxNSwgMjMxLCA1OSwgMTIsIDE1LCAyMzEsIDU4LCAxMiwgMTUsIDIzMSwgNTcsIDEyLCAKKyAgICAxNSwgMjMxLCA1NiwgMTIsIDE1LCAyMzEsIDU1LCAxMiwgMTUsIDIzMSwgNTQsIDEyLCAxNSwgMjMxLCA1MywgMTIsIDE1LCAKKyAgICAyMzEsIDUyLCAxMiwgMTUsIDIzMSwgNTEsIDEyLCAxNSwgMjMxLCA1MCwgMTIsIDE1LCAyMzEsIDQ5LCAxMiwgMTUsIDIzMSwgCisgICAgNDgsIDEyLCAxNSwgMjMxLCA0NywgMTIsIDE1LCAyMzEsIDQ2LCAxMiwgMTUsIDIzMSwgNDUsIDEyLCAxNSwgMjMxLCA0NCwgCisgICAgMTIsIDE1LCAyMzEsIDQzLCAxMiwgMTUsIDIzMSwgNDIsIDEyLCAxNSwgMjMxLCA0MSwgMTIsIDE1LCAyMzEsIDQwLCAxMiwgCisgICAgMTUsIDIzMSwgMzksIDEyLCAxNSwgMjMxLCAzOCwgMTIsIDE1LCAyMzEsIDM3LCAxMiwgMTUsIDIzMSwgMzYsIDEyLCAxNSwgCisgICAgMjMxLCAzNSwgMTIsIDE1LCAyMzEsIDM0LCAxMiwgMTUsIDIzMSwgMzMsIDEyLCAxNSwgMjMxLCAzMiwgMTIsIDE1LCAyMzEsIAorICAgIDMxLCAxMiwgMTUsIDIzMSwgMzAsIDEyLCAxNSwgMjMxLCAyOSwgMTIsIDE1LCAyMzEsIDI4LCAxMiwgMTUsIDIzMSwgMjcsIAorICAgIDEyLCAxNSwgMjMxLCAyNiwgMTIsIDE1LCAyMzEsIDI1LCAxMiwgMTUsIDIzMSwgMjQsIDEyLCAxNSwgMjMxLCAyMywgMTIsIAorICAgIDE1LCAyMzEsIDIyLCAxMiwgMTUsIDIzMSwgMjEsIDEyLCAxNSwgMjMxLCAyMCwgMTIsIDE1LCAyMzEsIDE5LCAxMiwgMTUsIAorICAgIDIzMSwgMTgsIDEyLCAxNSwgMjMxLCAxNywgMTIsIDE1LCAyMzEsIDE2LCAxMiwgMTUsIDIzMSwgMTUsIDEyLCAxNSwgMjMxLCAKKyAgICAxNCwgMTIsIDE1LCAyMzEsIDEzLCAxMiwgMTUsIDIzMSwgMTIsIDEyLCAxNSwgMjMxLCAxMSwgMTIsIDE1LCAyMzEsIDEwLCAKKyAgICAxMiwgMTUsIDIzMSwgOSwgMTIsIDE1LCAyMzEsIDgsIDEyLCAxNSwgMjMxLCA3LCAxMiwgMTUsIDIzMSwgNiwgMTIsIDE1LCAKKyAgICAyMzEsIDUsIDEyLCAxNSwgMjMxLCA0LCAxMiwgMTUsIDIzMSwgMywgMTIsIDE1LCAyMzEsIDIsIDEyLCAxNSwgMjMxLCAxLCAKKyAgICAxMiwgMTUsIDIzMSwgMCwgMTIsIDE1LCAyMzAsIDI1NSwgMTIsIDE1LCAyMzAsIDI1NCwgMTIsIDE1LCAyMzAsIDI1MywgMTIsIAorICAgIDE1LCAyMzAsIDI1MiwgMTIsIDE1LCAyMzAsIDI1MSwgMTIsIDE1LCAyMzAsIDI1MCwgMTIsIDE1LCAyMzAsIDI0OSwgMTIsIAorICAgIDE1LCAyMzAsIDI0OCwgMTIsIDE1LCAyMzAsIDI0NywgMTIsIDE1LCAyMzAsIDI0NiwgMTIsIDE1LCAyMzAsIDI0NSwgMTIsIAorICAgIDE1LCAyMzAsIDI0NCwgMTIsIDE1LCAyMzAsIDI0MywgMTIsIDE1LCAyMzAsIDI0MiwgMTIsIDE1LCAyMzAsIDI0MSwgMTIsIAorICAgIDE1LCAyMzAsIDI0MCwgMTIsIDE1LCAyMzAsIDIzOSwgMTIsIDE1LCAyMzAsIDIzOCwgMTIsIDE1LCAyMzAsIDIzNywgMTIsIAorICAgIDE1LCAyMzAsIDIzNiwgMTIsIDE1LCAyMzAsIDIzNSwgMTIsIDE1LCAyMzAsIDIzNCwgMTIsIDE1LCAyMzAsIDIzMywgMTIsIAorICAgIDE1LCAyMzAsIDIzMiwgMTIsIDE1LCAyMzAsIDIzMSwgMTIsIDE1LCAyMzAsIDIzMCwgMTIsIDE1LCAyMzAsIDIyOSwgMTIsIAorICAgIDE1LCAyMzAsIDIyOCwgMTIsIDE1LCAyMzAsIDIyNywgMTIsIDE1LCAyMzAsIDIyNiwgMTIsIDE1LCAyMzAsIDIyNSwgMTIsIAorICAgIDE1LCAyMzAsIDIyNCwgMTIsIDE1LCAyMzAsIDIyMywgMTIsIDE1LCAyMzAsIDIyMiwgMTIsIDE1LCAyMzAsIDIyMSwgMTIsIAorICAgIDE1LCAyMzAsIDIyMCwgMTIsIDE1LCAyMzAsIDIxOSwgMTIsIDE1LCAyMzAsIDIxOCwgMTIsIDE1LCAyMzAsIDIxNywgMTIsIAorICAgIDE1LCAyMzAsIDIxNiwgMTIsIDE1LCAyMzAsIDIxNSwgMTIsIDE1LCAyMzAsIDIxNCwgMTIsIDE1LCAyMzAsIDIxMywgMTIsIAorICAgIDE1LCAyMzAsIDIxMiwgMTIsIDE1LCAyMzAsIDIxMSwgMTIsIDE1LCAyMzAsIDIxMCwgMTIsIDE1LCAyMzAsIDIwOSwgMTIsIAorICAgIDE1LCAyMzAsIDIwOCwgMTIsIDE1LCAyMzAsIDIwNywgMTIsIDE1LCAyMzAsIDIwNiwgMTIsIDE1LCAyMzAsIDIwNSwgMTIsIAorICAgIDE1LCAyMzAsIDIwNCwgMTIsIDE1LCAyMzAsIDIwMywgMTIsIDE1LCAyMzAsIDIwMiwgMTIsIDE1LCAyMzAsIDIwMSwgMTIsIAorICAgIDE1LCAyMzAsIDIwMCwgMTIsIDE1LCAyMzAsIDE5OSwgMTIsIDE1LCAyMzAsIDE5OCwgMTIsIDE1LCAyMzAsIDE5NywgMTIsIAorICAgIDE1LCAyMzAsIDE5NiwgMTIsIDE1LCAyMzAsIDE5NSwgMTIsIDE1LCAyMzAsIDE5NCwgMTIsIDE1LCAyMzAsIDE5MywgMTIsIAorICAgIDE1LCAyMzAsIDE5MiwgMjI1LCA3NywgMjA3LCAxMywgMTY1LCAyMDgsIDI0NCwgMTY1LCAyMzgsIDQzLCA4MSwgMTY1LCAKKyAgICAyMTQsIDYzLCA4MSwgMTY1LCA0MSwgNTQsIDE2NSwgMjQwLCAxOTQsIDU0LCAxNjUsIDIxNiwgMjcsIDU0LCAxNjUsIDI1MSwgCisgICAgODksIDE2NSwgMjUxLCAxMywgMTY1LCA0OSwgMjE2LCAxMTUsIDE2NSwgNTEsIDIxNiwgMTE1LCAxNjUsIDI1MCwgMTY1LCAKKyAgICAxNjUsIDkzLCA1NCwgMTY1LCAyNDYsIDcwLCAxNjUsIDIzMywgMzIsIDE2NSwgMjM2LCAxODMsIDIwOCwgNzYsIDE2NSwgCisgICAgMjA5LCAxNiwgMTY1LCAxNywgMTk5LCA4MSwgMTY1LCAxNywgMTAyLCAxNjUsIDE3LCAxMDUsIDE2NSwgMTcsIDE0NywgMTY1LCAKKyAgICAxNywgMTQ5LCAxNjUsIDE3LCAxNjQsIDE2NSwgMTcsIDE4NywgMTY1LCAxNywgMjEwLCAxMzUsIDE2NSwgMTcsIDE5MiwgCisgICAgMTY1LCAxNywgMjE5LCAxMTMsIDE2NSwgMjQ2LCA3OSwgMTY1LCAyMTAsIDE2NywgMTY1LCAyMjQsIDI0MSwgNTQsIDE2NSwgCisgICAgMjM4LCAxMjIsIDU0LCAxNjUsIDIzNSwgNjcsIDU0LCAxNjUsIDIxNCwgNzksIDgxLCAxNjUsIDI0NiwgNjgsIDI1MCwgMTU1LCAKKyAgICAxNjUsIDgsIDYsIDEsIDYyLCAxNjUsIDgsIDYsIDEsIDI1MCwgMTAzLCAxNjUsIDgsIDYsIDEsIDI0NywgMjIzLCAxNjUsIDgsIAorICAgIDYsIDEsIDI0MiwgMTUzLCAxNjUsIDgsIDYsIDEsIDcyLCAxNjUsIDgsIDYsIDEsIDIzOCwgNSwgMTY1LCA4LCA2LCAxLCAKKyAgICAyMzYsIDE1NiwgMTY1LCA4LCA2LCAxLCAyMzQsIDI0NywgMTY1LCA4LCA2LCAxLCA3MCwgMTY1LCA4LCA2LCAxLCAyMjcsIAorICAgIDI1MSwgMTY1LCA4LCA2LCAxLCAyMjcsIDExOCwgMTY1LCA4LCA2LCAxLCAxNTYsIDE2NSwgOCwgNiwgMSwgMjIzLCAyNDMsIAorICAgIDE2NSwgOCwgNiwgMSwgMjIwLCAyMTQsIDE2NSwgOCwgNiwgMSwgNzQsIDE2NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDE2NSwgOCwgCisgICAgNiwgMSwgMjE0LCAxNjcsIDE2NSwgOCwgNiwgMSwgMTQ2LCAxNjUsIDgsIDYsIDEsIDIxMiwgMTIyLCAxNjUsIDgsIDYsIDEsIAorICAgIDIwNywgODMsIDE2NSwgOCwgNiwgMSwgNjYsIDE2NSwgOCwgNiwgMSwgMjAzLCAxNjgsIDE2NSwgOCwgNiwgMSwgMjAxLCAKKyAgICAxNDcsIDE2NSwgOCwgNiwgMSwgMjAwLCAxOTUsIDE2NSwgOCwgNiwgMSwgMjAwLCAxMjMsIDE2NSwgOCwgNiwgMSwgMTk5LCAKKyAgICAxNTcsIDE2NSwgNDksIDUyLCAxNTksIDE2NSwgMjEzLCAxMDYsIDIwOSwgMTYsIDE2NSwgNTEsIDUyLCAxNTksIDE2NSwgCisgICAgMjQ2LCAxNDcsIDI1MSwgMjUxLCAxNjUsIDEyOCwgMjI0LCAxNzYsIDE2NSwgMjM1LCA3NCwgMjUxLCAyNTEsIDE2NSwgOCwgCisgICAgNCwgMSwgNjIsIDE2NSwgOCwgNCwgMSwgMjUwLCAxMDMsIDE2NSwgOCwgNCwgMSwgMjQ3LCAyMjMsIDE2NSwgOCwgNCwgMSwgCisgICAgMjQyLCAxNTMsIDE2NSwgOCwgNCwgMSwgNzIsIDE2NSwgOCwgNCwgMSwgMjM4LCA1LCAxNjUsIDgsIDQsIDEsIDIzNiwgMTU2LCAKKyAgICAxNjUsIDgsIDQsIDEsIDIzNCwgMjQ3LCAxNjUsIDgsIDQsIDEsIDcwLCAxNjUsIDgsIDQsIDEsIDIyNywgMjUxLCAxNjUsIDgsIAorICAgIDQsIDEsIDIyNywgMTE4LCAxNjUsIDgsIDQsIDEsIDE1NiwgMTY1LCA4LCA0LCAxLCAyMjMsIDI0MywgMTY1LCA4LCA0LCAxLCAKKyAgICAyMjAsIDIxNCwgMTY1LCA4LCA0LCAxLCA3NCwgMTY1LCA4LCA0LCAxLCAyMTYsIDIyNiwgMTY1LCA4LCA0LCAxLCAyMTQsIAorICAgIDE2NywgMTY1LCA4LCA0LCAxLCAxNDYsIDE2NSwgOCwgNCwgMSwgMjEyLCAxMjIsIDE2NSwgOCwgNCwgMSwgMjA3LCA4MywgCisgICAgMTY1LCA4LCA0LCAxLCA2NiwgMTY1LCA4LCA0LCAxLCAyMDMsIDE2OCwgMTY1LCA4LCA0LCAxLCAyMDEsIDE0NywgMTY1LCA4LCAKKyAgICA0LCAxLCAyMDAsIDE5NSwgMTY1LCA4LCA0LCAxLCAyMDAsIDEyMywgMTY1LCA4LCA0LCAxLCAxOTksIDE1NywgMTY1LCA0OSwgCisgICAgMjQyLCAxOTYsIDE1OSwgMTY1LCA4MywgMjI0LCAxNzYsIDE2NSwgNTEsIDI0MiwgMTk2LCAxNTksIDE2NSwgMjA1LCAyNDAsIAorICAgIDI0NywgMTU3LCAyMDcsIDEzLCA1OCwgMjExLCA5NiwgNTgsIDIxMSwgODUsIDU4LCAyMTEsIDc0LCA1OCwgMjExLCA2MiwgCisgICAgNTgsIDIxMSwgNTEsIDU4LCAyMTEsIDQwLCA1OCwgMjExLCAyOSwgNTgsIDIxMSwgMTgsIDU4LCAyMTEsIDcsIDU4LCAyMTAsIAorICAgIDI1NSwgNTgsIDIxMCwgMjU0LCA1OCwgMjEwLCAyNTMsIDU4LCAyMTAsIDI1MiwgNTgsIDIxMCwgMjUwLCA1OCwgMjEwLCAKKyAgICAyNDksIDU4LCAyMTAsIDI0OCwgNTgsIDIxMCwgMjQ3LCA1OCwgMjEwLCAyNDYsIDU4LCAyMTAsIDI0NSwgNTgsIDIxMCwgCisgICAgMjQ0LCA1OCwgMjEwLCAyNDMsIDU4LCAyMTAsIDI0MiwgNTgsIDIxMCwgMjQxLCA1OCwgMjEwLCAyMzksIDU4LCAyMTAsIAorICAgIDIzOCwgNTgsIDIxMCwgMjM3LCA1OCwgMjEwLCAyMzYsIDU4LCAyMTAsIDIzNSwgNTgsIDIxMCwgMjM0LCA1OCwgMjEwLCAKKyAgICAyMzMsIDU4LCAyMTAsIDIzMiwgNTgsIDIxMCwgMjMxLCA1OCwgMjEwLCAyMzAsIDU4LCAyMTAsIDIyOCwgNTgsIDIxMCwgCisgICAgMjI3LCA1OCwgMjEwLCAyMjYsIDU4LCAyMTAsIDIyNSwgNTgsIDIxMCwgMjI0LCA1OCwgMjEwLCAyMjMsIDU4LCAyMTAsIAorICAgIDIyMiwgNTgsIDIxMCwgMjIxLCA1OCwgMjEwLCAyMjAsIDU4LCAyMTAsIDIxOSwgNTgsIDIxMCwgMjE3LCA1OCwgMjEwLCAKKyAgICAyMTYsIDU4LCAyMTAsIDIxNSwgNTgsIDIxMCwgMjE0LCA1OCwgMjEwLCAyMTMsIDU4LCAyMTAsIDIxMiwgNTgsIDIxMCwgCisgICAgMjExLCA1OCwgMjEwLCAyMTAsIDU4LCAyMTAsIDIwOSwgNTgsIDIxMCwgMjA4LCA1OCwgMjEwLCAyMDYsIDU4LCAyMTAsIAorICAgIDIwNSwgNTgsIDIxMCwgMjA0LCA1OCwgMjEwLCAyMDMsIDU4LCAyMTAsIDIwMiwgNTgsIDIxMCwgMjAxLCA1OCwgMjEwLCAKKyAgICAyMDAsIDU4LCAyMTAsIDE5OSwgNTgsIDIxMCwgMTk4LCA1OCwgMjEwLCAxOTcsIDU4LCAyMTAsIDE5NSwgNTgsIDIxMCwgCisgICAgMTk0LCA1OCwgMjEwLCAxOTMsIDU4LCAyMTAsIDE5MiwgNTgsIDIxMCwgMTkxLCA1OCwgMjEwLCAxOTAsIDU4LCAyMTAsIAorICAgIDE4OSwgNTgsIDIxMCwgMTg4LCA1OCwgMjEwLCAxODcsIDU4LCAyMTAsIDE4NiwgNTgsIDIxMCwgMTg0LCA1OCwgMjEwLCAKKyAgICAxODMsIDU4LCAyMTAsIDE4MiwgNTgsIDIxMCwgMTgxLCA1OCwgMjEwLCAxODAsIDU4LCAyMTAsIDE3OSwgNTgsIDIxMCwgCisgICAgMTc4LCA1OCwgMjEwLCAxNzcsIDU4LCAyMTAsIDE3NiwgNTgsIDIxMCwgMTc1LCA1OCwgMjExLCAxNzIsIDU4LCAyMTEsIAorICAgIDE3MSwgNTgsIDIxMSwgMTcwLCA1OCwgMjExLCAxNjksIDU4LCAyMTEsIDE2OCwgNTgsIDIxMSwgMTY3LCA1OCwgMjExLCAKKyAgICAxNjYsIDU4LCAyMTEsIDE2NSwgNTgsIDIxMSwgMTY0LCA1OCwgMjExLCAxNjMsIDU4LCAyMTEsIDE2MSwgNTgsIDIxMSwgCisgICAgMTYwLCA1OCwgMjExLCAxNTksIDU4LCAyMTEsIDE1OCwgNTgsIDIxMSwgMTU3LCA1OCwgMjExLCAxNTYsIDU4LCAyMTEsIAorICAgIDE1NSwgNTgsIDIxMSwgMTU0LCA1OCwgMjExLCAxNTMsIDU4LCAyMTEsIDE1MiwgNTgsIDIxMSwgMTUwLCA1OCwgMjExLCAKKyAgICAxNDksIDU4LCAyMTEsIDE0OCwgNTgsIDIxMSwgMTQ3LCA1OCwgMjExLCAxNDYsIDU4LCAyMTEsIDE0NSwgNTgsIDIxMSwgCisgICAgMTQ0LCA1OCwgMjExLCAxNDMsIDU4LCAyMTEsIDE0MiwgNTgsIDIxMSwgMTQxLCA1OCwgMjExLCAxMzksIDU4LCAyMTEsIAorICAgIDEzOCwgNTgsIDIxMSwgMTM3LCA1OCwgMjExLCAxMzYsIDU4LCAyMTEsIDEzNSwgNTgsIDIxMSwgMTM0LCA1OCwgMjExLCAKKyAgICAxMzMsIDU4LCAyMTEsIDEzMiwgNTgsIDIxMSwgMTMxLCA1OCwgMjExLCAxMzAsIDU4LCAyMTEsIDEyOCwgNTgsIDIxMSwgCisgICAgMTI3LCA1OCwgMjExLCAxMjYsIDU4LCAyMTEsIDEyNSwgNTgsIDIxMSwgMTI0LCA1OCwgMjExLCAxMjMsIDU4LCAyMTEsIAorICAgIDEyMiwgNTgsIDIxMSwgMTIxLCA1OCwgMjExLCAxMjAsIDU4LCAyMTEsIDExOSwgNTgsIDIxMSwgMTE3LCA1OCwgMjExLCAKKyAgICAxMTYsIDU4LCAyMTEsIDExNSwgNTgsIDIxMSwgMTE0LCA1OCwgMjExLCAxMTMsIDU4LCAyMTEsIDExMiwgNTgsIDIxMSwgCisgICAgMTExLCA1OCwgMjExLCAxMTAsIDU4LCAyMTEsIDEwOSwgNTgsIDIxMSwgMTA4LCA1OCwgMjExLCAxMDYsIDU4LCAyMTEsIAorICAgIDEwNSwgNTgsIDIxMSwgMTA0LCA1OCwgMjExLCAxMDMsIDU4LCAyMTEsIDEwMiwgNTgsIDIxMSwgMTAxLCA1OCwgMjExLCAKKyAgICAxMDAsIDU4LCAyMTEsIDk5LCA1OCwgMjExLCA5OCwgNTgsIDIxMSwgOTcsIDU4LCAyMTEsIDk1LCA1OCwgMjExLCA5NCwgNTgsIAorICAgIDIxMSwgOTMsIDU4LCAyMTEsIDkyLCA1OCwgMjExLCA5MSwgNTgsIDIxMSwgOTAsIDU4LCAyMTEsIDg5LCA1OCwgMjExLCA4OCwgCisgICAgNTgsIDIxMSwgODcsIDU4LCAyMTEsIDg2LCA1OCwgMjExLCA4NCwgNTgsIDIxMSwgODMsIDU4LCAyMTEsIDgyLCA1OCwgMjExLCAKKyAgICA4MSwgNTgsIDIxMSwgODAsIDU4LCAyMTEsIDc5LCA1OCwgMjExLCA3OCwgNTgsIDIxMSwgNzcsIDU4LCAyMTEsIDc2LCA1OCwgCisgICAgMjExLCA3NSwgNTgsIDIxMSwgNzMsIDU4LCAyMTEsIDcyLCA1OCwgMjExLCA3MSwgNTgsIDIxMSwgNzAsIDU4LCAyMTEsIDY5LCAKKyAgICA1OCwgMjExLCA2OCwgNTgsIDIxMSwgNjcsIDU4LCAyMTEsIDY2LCA1OCwgMjExLCA2NSwgNTgsIDIxMSwgNjQsIDU4LCAyMTEsIAorICAgIDYxLCA1OCwgMjExLCA2MCwgNTgsIDIxMSwgNTksIDU4LCAyMTEsIDU4LCA1OCwgMjExLCA1NywgNTgsIDIxMSwgNTYsIDU4LCAKKyAgICAyMTEsIDU1LCA1OCwgMjExLCA1NCwgNTgsIDIxMSwgNTMsIDU4LCAyMTEsIDUyLCA1OCwgMjExLCA1MCwgNTgsIDIxMSwgNDksIAorICAgIDU4LCAyMTEsIDQ4LCA1OCwgMjExLCA0NywgNTgsIDIxMSwgNDYsIDU4LCAyMTEsIDQ1LCA1OCwgMjExLCA0NCwgNTgsIDIxMSwgCisgICAgNDMsIDU4LCAyMTEsIDQyLCA1OCwgMjExLCA0MSwgNTgsIDIxMSwgMzksIDU4LCAyMTEsIDM4LCA1OCwgMjExLCAzNywgNTgsIAorICAgIDIxMSwgMzYsIDU4LCAyMTEsIDM1LCA1OCwgMjExLCAzNCwgNTgsIDIxMSwgMzMsIDU4LCAyMTEsIDMyLCA1OCwgMjExLCAzMSwgCisgICAgNTgsIDIxMSwgMzAsIDU4LCAyMTEsIDI4LCA1OCwgMjExLCAyNywgNTgsIDIxMSwgMjYsIDU4LCAyMTEsIDI1LCA1OCwgMjExLCAKKyAgICAyNCwgNTgsIDIxMSwgMjMsIDU4LCAyMTEsIDIyLCA1OCwgMjExLCAyMSwgNTgsIDIxMSwgMjAsIDU4LCAyMTEsIDE5LCA1OCwgCisgICAgMjExLCAxNywgNTgsIDIxMSwgMTYsIDU4LCAyMTEsIDE1LCA1OCwgMjExLCAxNCwgNTgsIDIxMSwgMTMsIDU4LCAyMTEsIDEyLCAKKyAgICA1OCwgMjExLCAxMSwgNTgsIDIxMSwgMTAsIDU4LCAyMTEsIDksIDU4LCAyMTEsIDgsIDU4LCAyMTEsIDYsIDU4LCAyMTEsIDUsIAorICAgIDU4LCAyMTEsIDQsIDU4LCAyMTEsIDMsIDU4LCAyMTEsIDIsIDU4LCAyMTEsIDEsIDU4LCAyMTEsIDAsIDIxOCwgOTcsIDIxOCwgCisgICAgOTksIDIwOCwgMTA1LCA3NiwgMjM0LCAxMzMsIDIwOSwgMTksIDIwOCwgMTA1LCA3NiwgMjA2LCAxMjYsIDIwOCwgMjYsIAorICAgIDIzOCwgMTcxLCA3NiwgMjA2LCAxMjYsIDIzOCwgNzEsIDIzOCwgMTcxLCA3NiwgMjA1LCAxMTgsIDIzOCwgMTM0LCAyMzgsIAorICAgIDE1OCwgMjM4LCAxNTksIDI1MSwgMjQzLCAyNTEsIDI0NCwgMjUxLCAxMzksIDI0OCwgMjMzLCAyNDksIDEyMywgMjQ4LCA0MiwgCisgICAgMTcxLCAyMDcsIDE5LCAyMzMsIDE3NywgMjA3LCAxOSwgMjMzLCAxMDIsIDIwNywgMjQsIDIyNCwgMTc3LCAyMzcsIDEzOCwgCisgICAgMjIwLCA4LCAyMjQsIDE3NiwgMjM4LCAxNzEsIDc2LCAyMjQsIDE3NiwgMjI0LCAyMjUsIDIxOSwgNDcsIDIzOCwgMTM3LCAKKyAgICAyMjQsIDE3NywgMjA3LCAxOSwgODMsIDIwNywgMTksIDIwMSwgMTY4LCAyMzYsIDI0MiwgMjM3LCAxMzgsIDIzNywgMTE2LCAKKyAgICAyNDcsIDEyMSwgMjEzLCAxMDksIDI0MiwgMjUyLCAyMTAsIDI5LCAyMTYsIDI1NCwgMjI0LCAxMDIsIDEwMiwgMjA5LCAyOSwgCisgICAgMjEwLCAyOSwgMjI4LCAxMTcsIDIyNCwgMTAyLCAxOTksIDgxLCAyMDksIDE4MiwgMjQxLCAyMzksIDIyNCwgMTY3LCAyMzgsIAorICAgIDk2LCAyNDAsIDIyMSwgMjQxLCAxMDcsIDI0MywgMzQsIDEwMiwgMjQxLCAyMjgsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDUsIAorICAgIDI0MSwgMjI3LCAyNDEsIDEwNywgMjQzLCAzNCwgMTQ3LCAyNDEsIDIyNiwgMjQxLCAxMDcsIDI0MywgMzQsIDE0OSwgMjQxLCAKKyAgICAyMjUsIDE4OSwgMjUxLCAyNDMsIDIyMCwgMTQwLCAyMDcsIDEwOSwgMjI4LCAxODAsIDIwNywgMTEzLCAyMzgsIDE3MSwgNzYsIAorICAgIDIwNSwgMTE5LCAyNDgsIDEzNCwgMjM4LCA3OCwgMjQ3LCAxNTYsIDI0NywgMTU4LCAyMzgsIDE3MSwgNzYsIDIyMiwgNjUsIAorICAgIDIzOCwgMTM1LCAyMDgsIDAsIDIwOCwgMTcsIDIzOCwgOTYsIDIzOCwgOTcsIDIyOCwgOTIsIDIxMCwgMTU1LCAxNDksIDIzNywgCisgICAgOTcsIDIxMCwgMTU0LCAyMzYsIDE5MywgMjI4LCA5MiwgMjEwLCAxNTUsIDE0NywgMjM1LCA1OCwgMjEwLCAxNTQsIDIzNSwgCisgICAgNTUsIDIyOCwgOTIsIDIxMCwgMTU1LCAxMDUsIDIxMywgMTgxLCAyMTAsIDE1NCwgMjEyLCAxODAsIDIyOCwgOTIsIDIxMCwgCisgICAgMTU1LCAxMDIsIDIwMywgMjQwLCAyMTAsIDE1NCwgMjAzLCAxOTcsIDIwOCwgMjQ3LCAyNDEsIDE0NiwgMjQxLCAxNDgsIAorICAgIDIxNiwgMTk5LCAyNDcsIDIwLCAyMTYsIDIwMSwgMTIyLCAyMTcsIDEyOCwgMjE1LCAxOCwgMjMzLCAxODAsIDI0OCwgNjEsIAorICAgIDIxNiwgMTcsIDIzNCwgOTksIDI0OCwgNzQsIDIxOCwgMjQyLCAyNDgsIDYxLCAyMzQsIDk5LCAyMjAsIDEwMywgMjI4LCAKKyAgICAxMDMsIDIyOCwgMTA1LCAyMjAsIDIsIDIyNCwgMTc2LCAyMjAsIDI1LCAyMDgsIDEwNSwgNzYsIDIxMSwgMTc3LCAyNTAsIAorICAgIDIyOCwgMjA4LCAxNzksIDIzOCwgMTcxLCA3NiwgMjExLCAxNzcsIDI1MCwgMjI4LCAyMzgsIDk5LCAxNzEsIDIwNywgMjAsIAorICAgIDIxMCwgMTQxLCAyMzMsIDE3NywgMjA3LCAyMCwgMjEwLCAxNDEsIDIzMywgOTksIDE3MSwgMjA3LCAyMCwgMywgMjI3LCAKKyAgICAxMzAsIDIzMywgMTc3LCAyMDcsIDIwLCAzLCAyMjcsIDEzMCwgMjMzLCAxMDAsIDIyNCwgMTc3LCAyMDcsIDIwLCAyMTAsIAorICAgIDE0MSwgODMsIDIwNywgMjAsIDIxMCwgMTQxLCAyMDEsIDE2NywgMjE2LCAxMDgsIDIyNCwgMTc3LCAyMzYsIDIzMywgMjE2LCAKKyAgICAxMDgsIDIyNCwgMTc3LCAyMzksIDE2NywgMjE1LCAxMjQsIDIxNiwgMTA4LCAyMjQsIDE3NywgMjQ5LCAxMjIsIDIxNiwgCisgICAgMTA4LCAyMjQsIDE3NywgMjAzLCAyMjgsIDIxNSwgMTE5LCAyMTMsIDEwNiwgMjI0LCAxNzcsIDIzNywgMTM4LCAyMTMsIAorICAgIDEwNiwgMjI4LCAxMDMsIDIxMywgODgsIDIwOSwgMTM5LCAyMTAsIDI5LCAxMDUsIDIwOSwgMTM2LCAyMDgsIDE4MSwgMjA5LCAKKyAgICAxMzksIDIxMCwgMjksIDE0NywgMjA5LCAxMzUsIDIwOCwgMTgwLCAyNDEsIDEwNywgMjQzLCAzNCwgMjA4LCA0OSwgMjQxLCAKKyAgICAyMjMsIDIxNSwgNCwgMjAzLCAxOTYsIDEwMiwgMjE1LCA0LCAyMDMsIDE5NCwgMjE0LCAyMjMsIDIxNSwgNCwgMjAzLCAxOTYsIAorICAgIDEwNSwgMjE1LCA0LCAyMDMsIDE5MywgMjE0LCAyMjIsIDIxMCwgMTQyLCAyMDUsIDExNywgMjA4LCAxMDQsIDIwOCwgMzIsIAorICAgIDI0NywgMTU3LCAyNDcsIDIwLCAyNDcsIDk1LCAyMjIsIDI0LCAyMDEsIDEwNiwgMjIwLCAyMzIsIDIwOCwgMTA1LCA3NiwgCisgICAgMjM1LCA0MywgMjUwLCAyMjgsIDIwOCwgMTA1LCA3NiwgMjE0LCAyNDEsIDI1MCwgMjI4LCAyMDgsIDI0NiwgMjM4LCAxNzEsIAorICAgIDc2LCAyMzUsIDQzLCAyNTAsIDIyOCwgMjM4LCAxNzEsIDc2LCAyMTQsIDI0MSwgMjUwLCAyMjgsIDIzOCwgMTMyLCAyMDgsIAorICAgIDEwNSwgNzYsIDIwOCwgNDksIDIwOSwgNSwgMjA5LCAxMzksIDIzNSwgNzksIDE3MSwgMjI4LCA1MiwgMjEwLCAxMTksIDIwOSwgCisgICAgMTM5LCAxNzEsIDIyOCwgNTIsIDIxMSwgMjE3LCAyNDMsIDM0LCAyMTAsIDE1MSwgMjI4LCA1MiwgMjQyLCAyMTUsIDIwOCwgCisgICAgNTAsIDIwNiwgMTUyLCAyMDgsIDEyMywgMjE3LCA0NSwgMjA3LCA5OCwgMjQ2LCA2OSwgMjE3LCAxMywgMjE1LCA1LCAyMjIsIAorICAgIDIzLCAyMTUsIDEwOSwgMjUxLCA5LCAyMTQsIDI1NSwgMjQ2LCA2OSwgMjUxLCAyNSwgMjIwLCA5MSwgMjA5LCAxOTEsIDgsIAorICAgIDYsIDEsIDIzNSwgMTk5LCA4LCA0LCAxLCAyMzUsIDE5OSwgMjQ3LCAzOSwgMjUxLCAxMTgsIDIwNywgMTAzLCAyMDgsIDYsIAorICAgIDI0NiwgODAsIDIwOSwgODYsIDIyNSwgMjgsIDIyNywgNjMsIDEsIDIyNCwgMTI5LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAKKyAgICAyMzcsIDUsIDIyNSwgNzUsIDEsIDIzNywgMTQsIDIzNywgMTUwLCAyMjUsIDc1LCAxLCAyMTMsIDEsIDIyNSwgNzUsIDEsIAorICAgIDIyNCwgMTEwLCA3OSwgMTM0LCAyNDgsIDE0NiwgMjEwLCA0LCAyMzUsIDE2MiwgMjIxLCAyMjksIDIxMywgOTYsIDIzNiwgCisgICAgMTcwLCAyMzYsIDE2OSwgMjM2LCAxNjgsIDIyMCwgMjM0LCAxOTgsIDI0MCwgMTk4LCAyNDEsIDE5OCwgMjQzLCAyMjQsIDQ2LCAKKyAgICAyMTMsIDksIDIyNCwgNDgsIDIxMywgMTEsIDIxNiwgNzYsIDIyNCwgNDUsIDIxMywgOCwgMjE5LCAxNywgMjIxLCAxNDAsIAorICAgIDIwMSwgMiwgMjI0LCA0NywgMjEzLCAxMCwgMjM2LCAxOTIsIDIxNiwgNzUsIDIwMSwgNTQsIDIzOCwgMTk0LCAyMzYsIDE4MCwgCisgICAgMjIxLCAyMTAsIDIxNywgNzksIDIwMywgMTk4LCA5OSwgMjIxLCAyMTAsIDI0MSwgMjQ1LCA5OSwgOTgsIDIwNSwgOTcsIDU1LCAKKyAgICAzLCA1MywgODMsIDk3LCA4NywgMjA1LCA5NywgNTUsIDMsIDUzLCA4MywgOTcsIDExLCA1LCAyMjgsIDEwLCA4MSwgMjE1LCAKKyAgICAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDY0LCAyMjQsIDI0NywgMTU5LCAyMDIsIDE2OCwgMjAyLCA1NywgMjAxLCAyNDUsIAorICAgIDIwMSwgMjM0LCAyMDEsIDIyMywgMjAxLCAyMTIsIDIwMSwgMjAxLCAyMDEsIDE5MCwgMjAxLCAxNzksIDIwMiwgMTY3LCAKKyAgICAyMDIsIDE1NiwgMjAyLCAxNDUsIDIwMiwgMTM0LCAyMDIsIDEyMywgMjAyLCAxMTIsIDIwMiwgMTAxLCAyNDcsIDIyOCwgCisgICAgMjE3LCAzMCwgODEsIDI0OCwgMTE0LCAxOTgsIDI0MiwgMTAsIDIsIDIxOCwgMTA2LCAyMDYsIDE1NSwgMTAsIDIsIDIxOCwgCisgICAgMTA2LCAxMTksIDIxOCwgMTA2LCAyNDgsIDQsIDExOSwgMjQ4LCAzLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjA5LCA4MiwgCisgICAgMjQ2LCAxOTYsIDIwMywgNjksIDIwMiwgOTAsIDIwMiwgNzksIDIwMiwgNjgsIDIwMiwgNTYsIDIwMiwgNDUsIDIwMiwgMzQsIAorICAgIDIwMiwgMjMsIDIwMiwgMTIsIDIwMiwgMSwgMjAxLCAyNDksIDIwMSwgMjQ4LCAyMDEsIDI0NywgMjAxLCAyNDYsIDIwMSwgCisgICAgMjQ0LCAyMDEsIDI0MywgMjAxLCAyNDIsIDIwMSwgMjQxLCAyMDEsIDI0MCwgMjAxLCAyMzksIDIwMSwgMjM4LCAyMDEsIAorICAgIDIzNywgMjAxLCAyMzYsIDIwMSwgMjM1LCAyMDEsIDIzMywgMjAxLCAyMzIsIDIwMSwgMjMxLCAyMDEsIDIzMCwgMjAxLCAKKyAgICAyMjksIDIwMSwgMjI4LCAyMDEsIDIyNywgMjAxLCAyMjYsIDIwMSwgMjI1LCAyMDEsIDIyNCwgMjAxLCAyMjIsIDIwMSwgCisgICAgMjIxLCAyMDEsIDIyMCwgMjAxLCAyMTksIDIwMSwgMjE4LCAyMDEsIDIxNywgMjAxLCAyMTYsIDIwMSwgMjE1LCAyMDEsIAorICAgIDIxNCwgMjAxLCAyMTMsIDIwMSwgMjExLCAyMDEsIDIxMCwgMjAxLCAyMDksIDIwMSwgMjA4LCAyMDEsIDIwNywgMjAxLCAKKyAgICAyMDYsIDIwMSwgMjA1LCAyMDEsIDIwNCwgMjAxLCAyMDMsIDIwMSwgMjAyLCAyMDEsIDIwMCwgMjAxLCAxOTksIDIwMSwgCisgICAgMTk4LCAyMDEsIDE5NywgMjAxLCAxOTYsIDIwMSwgMTk1LCAyMDEsIDE5NCwgMjAxLCAxOTMsIDIwMSwgMTkyLCAyMDEsIAorICAgIDE5MSwgMjAxLCAxODksIDIwMSwgMTg4LCAyMDEsIDE4NywgMjAxLCAxODYsIDIwMSwgMTg1LCAyMDEsIDE4NCwgMjAxLCAKKyAgICAxODMsIDIwMSwgMTgyLCAyMDEsIDE4MSwgMjAxLCAxODAsIDIwMSwgMTc4LCAyMDEsIDE3NywgMjAxLCAxNzYsIDIwMSwgCisgICAgMTc1LCAyMDEsIDE3NCwgMjAxLCAxNzMsIDIwMSwgMTcyLCAyMDEsIDE3MSwgMjAxLCAxNzAsIDIwMSwgMTY5LCAyMDIsIAorICAgIDE2NiwgMjAyLCAxNjUsIDIwMiwgMTY0LCAyMDIsIDE2MywgMjAyLCAxNjIsIDIwMiwgMTYxLCAyMDIsIDE2MCwgMjAyLCAKKyAgICAxNTksIDIwMiwgMTU4LCAyMDIsIDE1NywgMjAyLCAxNTUsIDIwMiwgMTU0LCAyMDIsIDE1MywgMjAyLCAxNTIsIDIwMiwgCisgICAgMTUxLCAyMDIsIDE1MCwgMjAyLCAxNDksIDIwMiwgMTQ4LCAyMDIsIDE0NywgMjAyLCAxNDYsIDIwMiwgMTQ0LCAyMDIsIAorICAgIDE0MywgMjAyLCAxNDIsIDIwMiwgMTQxLCAyMDIsIDE0MCwgMjAyLCAxMzksIDIwMiwgMTM4LCAyMDIsIDEzNywgMjAyLCAKKyAgICAxMzYsIDIwMiwgMTM1LCAyMDIsIDEzMywgMjAyLCAxMzIsIDIwMiwgMTMxLCAyMDIsIDEzMCwgMjAyLCAxMjksIDIwMiwgCisgICAgMTI4LCAyMDIsIDEyNywgMjAyLCAxMjYsIDIwMiwgMTI1LCAyMDIsIDEyNCwgMjAyLCAxMjIsIDIwMiwgMTIxLCAyMDIsIAorICAgIDEyMCwgMjAyLCAxMTksIDIwMiwgMTE4LCAyMDIsIDExNywgMjAyLCAxMTYsIDIwMiwgMTE1LCAyMDIsIDExNCwgMjAyLCAKKyAgICAxMTMsIDIwMiwgMTExLCAyMDIsIDExMCwgMjAyLCAxMDksIDIwMiwgMTA4LCAyMDIsIDEwNywgMjAyLCAxMDYsIDIwMiwgCisgICAgMTA1LCAyMDIsIDEwNCwgMjAyLCAxMDMsIDIwMiwgMTAyLCAyMDIsIDEwMCwgMjAyLCA5OSwgMjAyLCA5OCwgMjAyLCA5NywgCisgICAgMjAyLCA5NiwgMjAyLCA5NSwgMjAyLCA5NCwgMjAyLCA5MywgMjAyLCA5MiwgMjAyLCA5MSwgMjAyLCA4OSwgMjAyLCA4OCwgCisgICAgMjAyLCA4NywgMjAyLCA4NiwgMjAyLCA4NSwgMjAyLCA4NCwgMjAyLCA4MywgMjAyLCA4MiwgMjAyLCA4MSwgMjAyLCA4MCwgCisgICAgMjAyLCA3OCwgMjAyLCA3NywgMjAyLCA3NiwgMjAyLCA3NSwgMjAyLCA3NCwgMjAyLCA3MywgMjAyLCA3MiwgMjAyLCA3MSwgCisgICAgMjAyLCA3MCwgMjAyLCA2OSwgMjAyLCA2NywgMjAyLCA2NiwgMjAyLCA2NSwgMjAyLCA2NCwgMjAyLCA2MywgMjAyLCA2MiwgCisgICAgMjAyLCA2MSwgMjAyLCA2MCwgMjAyLCA1OSwgMjAyLCA1OCwgMjAyLCA1NSwgMjAyLCA1NCwgMjAyLCA1MywgMjAyLCA1MiwgCisgICAgMjAyLCA1MSwgMjAyLCA1MCwgMjAyLCA0OSwgMjAyLCA0OCwgMjAyLCA0NywgMjAyLCA0NiwgMjAyLCA0NCwgMjAyLCA0MywgCisgICAgMjAyLCA0MiwgMjAyLCA0MSwgMjAyLCA0MCwgMjAyLCAzOSwgMjAyLCAzOCwgMjAyLCAzNywgMjAyLCAzNiwgMjAyLCAzNSwgCisgICAgMjAyLCAzMywgMjAyLCAzMiwgMjAyLCAzMSwgMjAyLCAzMCwgMjAyLCAyOSwgMjAyLCAyOCwgMjAyLCAyNywgMjAyLCAyNiwgCisgICAgMjAyLCAyNSwgMjAyLCAyNCwgMjAyLCAyMiwgMjAyLCAyMSwgMjAyLCAyMCwgMjAyLCAxOSwgMjAyLCAxOCwgMjAyLCAxNywgCisgICAgMjAyLCAxNiwgMjAyLCAxNSwgMjAyLCAxNCwgMjAyLCAxMywgMjAyLCAxMSwgMjAyLCAxMCwgMjAyLCA5LCAyMDIsIDgsIAorICAgIDIwMiwgNywgMjAyLCA2LCAyMDIsIDUsIDIwMiwgNCwgMjAyLCAzLCAyMDIsIDIsIDIwMiwgMCwgMjAxLCAyNTUsIDIwMSwgCisgICAgMjU0LCAyMDEsIDI1MywgMjAxLCAyNTIsIDIwMSwgMjUxLCAyMDEsIDI1MCwgOCwgNiwgMSwgMzUsIDMsIDIyMiwgMjI5LCAKKyAgICAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMzUsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAzLCA4MywgCisgICAgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDE5NywgMywgODMsIAorICAgIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgCisgICAgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgCisgICAgMjIyLCAyMjgsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIAorICAgIDE0NywgMjYsIDI0NywgMTI1LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjQ3LCAxMjUsIDgsIDYsIDEsIDIzMywgCisgICAgMTksIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCAKKyAgICA4LCA0LCAxLCAyMzMsIDE5LCAzLCA3MywgODgsIDI2LCAxNjksIDgsIDQsIDEsIDIyMCwgMCwgMywgMjA1LCAyNDEsIDU2LCAKKyAgICA4LCA2LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgCisgICAgNiwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCA4MywgCisgICAgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAKKyAgICAyNiwgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAxNjksIDgsIDYsIDEsIDIxMiwgCisgICAgMTIzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNiwgCisgICAgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCAKKyAgICA4LCA2LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDQsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgCisgICAgNiwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgCisgICAgMjQwLCA4LCA2LCAxLCAxOTcsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDIxNywgMTExLCAyNiwgCisgICAgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgMywgMjE3LCAxMTEsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTk3LCAzLCA3MywgODgsIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgNzMsIDg4LCAKKyAgICAyNiwgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIDMsIDczLCA4OCwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCA3MywgODgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE5LCAKKyAgICAzLCA3MywgODgsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDIzMywgMTksIDMsIDIxNywgMTExLCAyNiwgNzMsIDg4LCAyNiwgMTY5LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMSwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMSwgMjYsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCA4LCAKKyAgICA2LCAxLCAyMjcsIDI1MiwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCA3MywgODgsIDI2LCAyMDUsIDI0MCwgCisgICAgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjA1LCAyNDAsIDgsIDYsIDEsIAorICAgIDIyMywgMjQ0LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDEwOCwgMywgMjE3LCAxMTEsIAorICAgIDI2LCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjE3LCAxMTEsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTA4LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgCisgICAgMjUxLCAyMjIsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDE3NiwgMTYzLCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxNzYsIDE2MywgCisgICAgMywgMTY5LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAzLCAxNjksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDMsIAorICAgIDE2OSwgMywgMTY5LCA4LCA0LCAxLCAyMTEsIDIxOSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjExLCAyMTksIDMsIDE2OSwgOCwgCisgICAgNCwgMSwgMjMzLCAxODYsIDIxMSwgMjE5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE4NiwgMjExLCAyMTksIDMsIAorICAgIDE2OSwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDI1MSwgMTQyLCA5LCAyMTAsIDE1MSwgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjAxLCA3MiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODcsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMTcsIDEyMSwgOSwgMjEwLCAxNTEsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDY2LCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk5LCAyMTEsIDksIAorICAgIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA3MiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIAorICAgIDMsIDI1MSwgMjIxLCA5LCAyMTAsIDE1MSwgMjE4LCAyMjgsIDMsIDIyNiwgMjUyLCAxODUsIDEsIDIyNiwgMTgyLCA0NSwgCisgICAgMTExLCAyMjcsIDExOCwgNDUsIDExMSwgMjE5LCAyNTUsIDQ1LCAxMTEsIDI0NywgMjIzLCA0NSwgMTExLCAyMTgsIDYyLCAKKyAgICA0NSwgMTExLCAyMDUsIDAsIDQ1LCAxMTEsIDIxOSwgMjIsIDQ1LCAxMTEsIDIwNywgODMsIDQ1LCAxMTEsIDIyMCwgMjE0LCAKKyAgICA0NSwgMTExLCAyMTYsIDIyNiwgNDUsIDExMSwgMjIzLCAyNDMsIDQ1LCAxMTEsIDIwMCwgMTIzLCA0NSwgMTExLCAxNDYsIAorICAgIDQ1LCAxMTEsIDE1NiwgNDUsIDExMSwgMjAzLCAxNjgsIDQ1LCAxMTEsIDIyNCwgMTMwLCA0NSwgMTExLCAyMjQsIDEzOSwgCisgICAgNDUsIDExMSwgMjEyLCAyMTYsIDQ1LCAxMTEsIDIxOSwgNCwgNDUsIDExMSwgMjI3LCAyNTEsIDQ1LCAxMTEsIDIxMCwgMTE2LCAKKyAgICA0NSwgMTExLCAyMDgsIDE4MiwgNDUsIDExMSwgMjEyLCAxMjIsIDQ1LCAxMTEsIDIzNCwgMjQ3LCA0NSwgMTExLCAyMjYsIAorICAgIDMwLCA0NSwgNSwgMjI3LCAxMDUsIDQ1LCA1LCAyMjYsIDE2MywgNDUsIDUsIDIyNiwgMTUwLCA0NSwgNSwgMjI2LCAxNSwgCisgICAgNDUsIDUsIDIyNSwgMjM2LCA0NSwgNSwgMjI3LCA4LCA0NSwgNSwgMjI3LCA1LCA0NSwgNSwgMjI3LCA4MiwgNDUsIDUsIAorICAgIDIyNiwgODgsIDQ1LCA1LCAyMjYsIDY4LCA0NSwgNSwgMjI3LCAyNiwgNDUsIDUsIDIxOSwgMjUyLCA0NSwgNSwgMjE5LCAKKyAgICAyMDEsIDQ1LCA1LCAyMTksIDE5NywgNDUsIDUsIDIxOSwgMTY2LCA0NSwgNSwgMjE5LCAxNTgsIDQ1LCA1LCAyMTksIDI0MCwgCisgICAgNDUsIDUsIDIxOSwgMjM4LCA0NSwgNSwgMjE5LCAyNDksIDQ1LCA1LCAyMTksIDE3OCwgNDUsIDUsIDIxOSwgMTczLCA0NSwgCisgICAgNSwgMjE5LCAyNDIsIDQ1LCA1LCAyNDcsIDE4OSwgNDUsIDUsIDI0NiwgMTczLCA0NSwgNSwgMjQ2LCAxNjMsIDQ1LCA1LCAKKyAgICAyNDIsIDIxNCwgNDUsIDUsIDI0MiwgMTc4LCA0NSwgNSwgMjQ3LCA3NiwgNDUsIDUsIDI0NywgNjgsIDQ1LCA1LCAyNDcsIAorICAgIDE3OCwgNDUsIDUsIDI0NiwgOTEsIDQ1LCA1LCAyNDMsIDMwLCA0NSwgNSwgMjQ3LCAxMDksIDQ1LCA1LCAyMTgsIDU5LCA0NSwgCisgICAgNSwgMjE4LCA0MSwgNDUsIDUsIDIxOCwgMzYsIDQ1LCA1LCAyMTgsIDE5LCA0NSwgNSwgMjE4LCAxMSwgNDUsIDUsIDIxOCwgCisgICAgNTAsIDQ1LCA1LCAyMTgsIDQ5LCA0NSwgNSwgMjE4LCA1NiwgNDUsIDUsIDIxOCwgMjYsIDQ1LCA1LCAyMTgsIDIzLCA0NSwgCisgICAgNSwgMjE4LCA1MywgNDUsIDUsIDIwNCwgMjUyLCA0NSwgNSwgMjA0LCAyMzIsIDQ1LCA1LCAyMDQsIDIzMSwgNDUsIDUsIAorICAgIDIwNCwgMjIwLCA0NSwgNSwgMjA0LCAyMTcsIDQ1LCA1LCAyMDQsIDI0OCwgNDUsIDUsIDIwNCwgMjQ3LCA0NSwgNSwgMjA0LCAKKyAgICAyNTEsIDQ1LCA1LCAyMDQsIDIzMCwgNDUsIDUsIDIwNCwgMjI5LCA0NSwgNSwgMjA0LCAyNTAsIDQ1LCA1LCAyMTksIDIwLCAKKyAgICA0NSwgNSwgMjE5LCA2LCA0NSwgNSwgMjE5LCA1LCA0NSwgNSwgMjE4LCAyNDUsIDQ1LCA1LCAyMTgsIDI0NCwgNDUsIDUsIAorICAgIDIxOSwgMTYsIDQ1LCA1LCAyMTksIDE1LCA0NSwgNSwgMjE5LCAxOSwgNDUsIDUsIDIxOCwgMjQ3LCA0NSwgNSwgMjE4LCAKKyAgICAyNDYsIDQ1LCA1LCAyMTksIDE4LCA0NSwgNSwgMjA3LCAzMiwgNDUsIDUsIDIwNiwgMTUsIDQ1LCA1LCAyMDUsIDI1NSwgNDUsIAorICAgIDUsIDIwNCwgMjE1LCA0NSwgNSwgMjA0LCAxNzYsIDQ1LCA1LCAyMDYsIDIwMSwgNDUsIDUsIDIwNiwgMTkwLCA0NSwgNSwgCisgICAgMjA3LCA4LCA0NSwgNSwgMTM4LCA0NSwgNSwgMjA1LCAxNjEsIDQ1LCA1LCAyMDYsIDIyMSwgNDUsIDUsIDIyMCwgMTU3LCAKKyAgICA0NSwgNSwgMjE5LCAxNTAsIDQ1LCA1LCAyMTksIDEyNSwgNDUsIDUsIDIxOCwgMTMzLCA0NSwgNSwgMjE4LCA3NCwgNDUsIDUsIAorICAgIDIyMCwgMzQsIDQ1LCA1LCAyMjAsIDI5LCA0NSwgNSwgMjIwLCAxNDMsIDQ1LCA1LCAyMTgsIDI0MSwgNDUsIDUsIDIxOCwgCisgICAgMjI5LCA0NSwgNSwgMjIwLCAxMTYsIDQ1LCA1LCAyMTYsIDIxMCwgNDUsIDUsIDIxNSwgMjA0LCA0NSwgNSwgMjE1LCAxNjYsIAorICAgIDQ1LCA1LCAyMTQsIDIyNCwgNDUsIDUsIDIxNCwgMTkwLCA0NSwgNSwgMjE2LCA3MywgNDUsIDUsIDIxNiwgNjEsIDQ1LCA1LCAKKyAgICAyMTYsIDE5MCwgNDUsIDUsIDIxNSwgMTA2LCA0NSwgNSwgMjE1LCA4MSwgNDUsIDUsIDIxNiwgODcsIDQ1LCA1LCAyMjIsIAorICAgIDIzMywgNDUsIDUsIDIyMSwgMjExLCA0NSwgNSwgMjIxLCAxODEsIDQ1LCA1LCAyMjEsIDQxLCA0NSwgNSwgMjIwLCAyNDMsIAorICAgIDQ1LCA1LCAyMjIsIDc2LCA0NSwgNSwgMjIyLCA2NCwgNDUsIDUsIDIyMiwgMTk4LCA0NSwgNSwgMjIxLCAxMzYsIDQ1LCA1LCAKKyAgICAyMjEsIDg3LCA0NSwgNSwgMjIyLCAxMjMsIDQ1LCA1LCAyMDAsIDEwOSwgNDUsIDUsIDIwMCwgOSwgNDUsIDUsIDIwMCwgMCwgCisgICAgNDUsIDUsIDE5OSwgMjExLCA0NSwgNSwgMTk5LCAxNzksIDQ1LCA1LCAyMDAsIDUxLCA0NSwgNSwgMjAwLCA0OCwgNDUsIDUsIAorICAgIDIwMCwgODgsIDQ1LCA1LCAxOTksIDI0NSwgNDUsIDUsIDE5OSwgMjMwLCA0NSwgNSwgMjAwLCA2MSwgNDUsIDUsIDIxMywgCisgICAgMjQ4LCA0NSwgNSwgMjEzLCA4OCwgNDUsIDUsIDIxMywgMzMsIDQ1LCA1LCAyMTIsIDE3NSwgNDUsIDUsIDIxMiwgMTQzLCAKKyAgICA0NSwgNSwgMjEzLCAxOTAsIDQ1LCA1LCAyMTMsIDE2NywgNDUsIDUsIDIxMywgMjI5LCA0NSwgNSwgMjEzLCAxLCA0NSwgNSwgCisgICAgMjEyLCAyMzgsIDQ1LCA1LCAyMTMsIDE5OSwgNDUsIDUsIDIyNSwgMTc1LCA0NSwgNSwgMjI0LCAyMTAsIDQ1LCA1LCAyMjQsIAorICAgIDE5MiwgNDUsIDUsIDIyNCwgNDIsIDQ1LCA1LCAyMjQsIDEzLCA0NSwgNSwgMjI1LCA0MCwgNDUsIDUsIDIyNSwgMzIsIDQ1LCAKKyAgICA1LCAyMjUsIDE0OSwgNDUsIDUsIDIyNCwgMTEwLCA0NSwgNSwgMjI0LCA3OCwgNDUsIDUsIDIyNSwgNTgsIDQ1LCA1LCAyMDMsIAorICAgIDg5LCA0NSwgNSwgMjAyLCAyMzQsIDQ1LCA1LCAyMDIsIDIxOSwgNDUsIDUsIDIwMSwgMTY2LCA0NSwgNSwgMjAxLCAxNTksIAorICAgIDQ1LCA1LCAyMDMsIDU5LCA0NSwgNSwgMjAzLCA1NCwgNDUsIDUsIDIwMywgODUsIDQ1LCA1LCAyMDIsIDE5MywgNDUsIDUsIAorICAgIDIwMiwgMTc5LCA0NSwgNSwgMjAzLCA2NSwgNDUsIDUsIDIyNCwgMTI4LCA0NSwgNSwgMjI0LCAxMjMsIDQ1LCA1LCAyMjQsIAorICAgIDEyMiwgNDUsIDUsIDIyNCwgMTE5LCA0NSwgNSwgMjI0LCAxMTgsIDQ1LCA1LCAyMjQsIDEyNSwgNDUsIDUsIDIyNCwgMTI0LCAKKyAgICA0NSwgNSwgMjI0LCAxMjcsIDQ1LCA1LCAyMjQsIDEyMSwgNDUsIDUsIDIyNCwgMTIwLCA0NSwgNSwgMjI0LCAxMjYsIDQ1LCAKKyAgICA1LCAyMjQsIDEzNywgNDUsIDUsIDIyNCwgMTMyLCA0NSwgNSwgMjI0LCAxMzEsIDQ1LCA1LCAyMjQsIDExNSwgNDUsIDUsIAorICAgIDIyNCwgMTE0LCA0NSwgNSwgMjI0LCAxMzQsIDQ1LCA1LCAyMjQsIDEzMywgNDUsIDUsIDIyNCwgMTM2LCA0NSwgNSwgMjI0LCAKKyAgICAxMTcsIDQ1LCA1LCAyMjQsIDExNiwgNDUsIDUsIDIyNCwgMTM1LCA0NSwgNSwgMjEyLCAyMTQsIDQ1LCA1LCAyMTIsIDIwMywgCisgICAgNDUsIDUsIDIxMiwgMjAyLCA0NSwgNSwgMjEyLCAxOTUsIDQ1LCA1LCAyMTIsIDE4OCwgNDUsIDUsIDIxMiwgMjEwLCA0NSwgCisgICAgNSwgMjEyLCAyMDksIDQ1LCA1LCAyMTIsIDIxMywgNDUsIDUsIDIxMiwgMjAxLCA0NSwgNSwgMjEyLCAyMDAsIDQ1LCA1LCAKKyAgICAyMTIsIDIxMiwgNDUsIDUsIDIxOSwgMiwgNDUsIDUsIDIxOCwgMjUzLCA0NSwgNSwgMjE4LCAyNTIsIDQ1LCA1LCAyMTgsIAorICAgIDI0OSwgNDUsIDUsIDIxOCwgMjQ4LCA0NSwgNSwgMjE4LCAyNTUsIDQ1LCA1LCAyMTgsIDI1NCwgNDUsIDUsIDIxOSwgMSwgCisgICAgNDUsIDUsIDIxOCwgMjUxLCA0NSwgNSwgMjE4LCAyNTAsIDQ1LCA1LCAyMTksIDAsIDQ1LCA1LCAyMjcsIDI0NywgNDUsIDUsIAorICAgIDIyNywgMjA3LCA0NSwgNSwgMjI3LCAyMDAsIDQ1LCA1LCAyMjcsIDE0NywgNDUsIDUsIDIyNywgMTI4LCA0NSwgNSwgMjI3LCAKKyAgICAyMjcsIDQ1LCA1LCAyMjcsIDIyNSwgNDUsIDUsIDIyNywgMjQxLCA0NSwgNSwgMjI3LCAxNjYsIDQ1LCA1LCAyMjcsIDE1NiwgCisgICAgNDUsIDUsIDIyNywgMjM0LCA0NSwgNSwgMjEwLCAxMDksIDQ1LCA1LCAyMTAsIDMzLCA0NSwgNSwgMjEwLCAyOCwgNDUsIDUsIAorICAgIDIwOSwgMjIwLCA0NSwgNSwgMjA5LCAyMDMsIDQ1LCA1LCAyMTAsIDY1LCA0NSwgNSwgMjEwLCA2MywgNDUsIDUsIDIxMCwgCisgICAgOTgsIDQ1LCA1LCAyMTAsIDgsIDQ1LCA1LCAyMTAsIDIsIDQ1LCA1LCAyMTAsIDc0LCA0NSwgNSwgMjA4LCAxNzgsIDQ1LCA1LCAKKyAgICAyMDgsIDE0NywgNDUsIDUsIDIwOCwgMTQzLCA0NSwgNSwgMjA4LCAxMzQsIDQ1LCA1LCAyMDgsIDEzMSwgNDUsIDUsIDIwOCwgCisgICAgMTUzLCA0NSwgNSwgMjA4LCAxNTIsIDQ1LCA1LCAyMDgsIDE3NywgNDUsIDUsIDIwOCwgMTM5LCA0NSwgNSwgMjA4LCAxMzgsIAorICAgIDQ1LCA1LCAyMDgsIDE1NSwgNDUsIDUsIDIxMiwgNjEsIDQ1LCA1LCAyMDksIDE4MiwgNDUsIDUsIDIwOSwgMTYxLCA0NSwgNSwgCisgICAgMjA4LCAyNCwgNDUsIDUsIDIwNywgMTkzLCA0NSwgNSwgMjExLCAyMDIsIDQ1LCA1LCAyMTEsIDE5MCwgNDUsIDUsIDIxMiwgCisgICAgNDYsIDQ1LCA1LCAyMDksIDI5LCA0NSwgNSwgMjA5LCAxMCwgNDUsIDUsIDIxMSwgMjQzLCA0NSwgNSwgMjM0LCAyMzMsIDQ1LCAKKyAgICA1LCAyMzQsIDc1LCA0NSwgNSwgMjM0LCA1NCwgNDUsIDUsIDIzMywgOTcsIDQ1LCA1LCAyMzMsIDcxLCA0NSwgNSwgMjM0LCAKKyAgICAxMzksIDQ1LCA1LCAyMzQsIDEyMCwgNDUsIDUsIDIzNCwgMjIzLCA0NSwgNSwgMjMzLCAyMDcsIDQ1LCA1LCAyMzMsIDE4OCwgCisgICAgNDUsIDUsIDIzNCwgMTUwLCA0NSwgNSwgMjI2LCAyOSwgNDUsIDUsIDIyNiwgMjgsIDQ1LCA1LCAyMjYsIDIzLCA0NSwgNSwgCisgICAgMjI2LCAyMiwgNDUsIDUsIDIyNiwgMTksIDQ1LCA1LCAyMjYsIDE4LCA0NSwgNSwgMjI2LCAyNSwgNDUsIDUsIDIyNiwgMjQsIAorICAgIDQ1LCA1LCAyMjYsIDI3LCA0NSwgNSwgMjI2LCAyMSwgNDUsIDUsIDIyNiwgMjAsIDQ1LCA1LCAyMjYsIDI2LCA0NSwgNSwgCisgICAgMjA5LCAyMjcsIDE0MywgMTExLCAyLCAyMDAsIDc0LCAxNDMsIDExMSwgMiwgMjEzLCAyMTgsIDE0MywgMTExLCAyLCAyMTMsIAorICAgIDEzNCwgMTE4LCAxLCAyMDQsIDEwMiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTYxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAyMjYsIDIwNywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjI2LCA4OCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjI2LCAxNzgsIAorICAgIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxOSwgMTc4LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDcsIDE5MCwgODYsIDExMSwgMiwgCisgICAgMjQ2LCA4NiwgMjQ3LCAzNywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ2LCA5MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ2LCAKKyAgICAyMTAsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxOCwgMjYsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0MiwgNTgsIDg2LCAxMTEsIAorICAgIDIsIDI0NiwgODYsIDIwNCwgMjQxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDAsIDIxMSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMjA0LCAyMzYsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDE4OCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjA3LCAzNiwgODYsIAorICAgIDExMSwgMiwgMjQ2LCA4NiwgMjA2LCAxMjIsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDEzOCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMjA2LCA2MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE4LCAyNDEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0OSwgMTM2LCAKKyAgICA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTUsIDI0NSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE1LCAxMDYsIDg2LCAxMTEsIDIsIAorICAgIDI0NiwgODYsIDIxNSwgMjE3LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMjEsIDEzNiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMTk5LCAyNDUsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxMywgMSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjI0LCAxMTAsIDg2LCAKKyAgICAxMTEsIDIsIDI0NiwgODYsIDIwMiwgMTkzLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTAsIDExNCwgODYsIDExMSwgMiwgCisgICAgMjQ2LCA4NiwgMjA4LCAxNzksIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxMiwgNjQsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDE0NCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTk0LCA4NiwgMjIsIDIsIDI0NiwgODYsIDIxNCwgMTU5LCA4NiwgMjI4LCAKKyAgICAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTQsIDk3LCA4NiwgMjI4LCAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTIsIDEzMSwgODYsIAorICAgIDIyOCwgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjEyLCAxMjQsIDg2LCAyMjgsIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxNCwgCisgICAgMTM5LCA4NiwgMjIsIDIsIDIxNywgODYsIDg2LCAyMiwgMiwgMjUyLCA5OSwgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAyNTMsIAorICAgIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMjAxLCAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDE2NiwgMTc3LCAxLCAyNDgsIDE4MSwgCisgICAgMjE5LCAyNDAsIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMTc4LCA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMjUzLCA2OSwgMSwgCisgICAgMjQ4LCAxODEsIDIxOSwgMjAxLCA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMTY2LCA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMjQwLCAKKyAgICA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMTc4LCA2OSwgMSwgMjUxLCAxNjksIDI0NywgNzYsIDY5LCAxLCAyNTEsIDE2OSwgCisgICAgMjA0LCAyMTUsIDY5LCAxLCAyNTEsIDE2OSwgMTM4LCA2OSwgMSwgMjUxLCAxNjksIDIxNiwgMjI2LCA2NywgMSwgMjM4LCAKKyAgICAyOSwgMjM4LCAyOCwgMjQzLCAzOCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIDI4LCAyMzgsIDI5LCAyNDMsIDM4LCAxNTAsIAorICAgIDE0OCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rX29mZnNldDFbXSA9IHsKQEAgLTE2NTMzLDIwICsxNzY0OSwyMCBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIAogICAgIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgNTIsIDg3LCA1MiwgODgsIAotICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgNTIsIDk3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDk4LCA5OSwgMTAwLCAKLSAgICAxMDEsIDEwMiwgMTAzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTA0LCAxMDUsIDEwNiwgCi0gICAgMTA3LCAxMDgsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDEwOSwgMTEwLCAxMTEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA1MiwgOTcsIDUyLCA5OCwgNTIsIDUyLCA1MiwgOTksIDEwMCwgMTAxLCAKKyAgICAxMDIsIDEwMywgMTA0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTA1LCAxMDYsIDEwNywgCisgICAgMTA4LCAxMDksIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDExMCwgMTExLCAxMTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDExMiwgMTEzLCAxMTQsIDExNSwgNTIsIDUyLCA1MiwgMTE2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDUyLCA1MiwgNTIsIDExNywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTE4LCAxMTksIAorICAgIDEyMCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDExNywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTgsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTksIDEyMCwgCi0gICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzMCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzEsIDUyLCAxMzIsIDEzMywgMTM0LCAKLSAgICAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgMTIxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEyMiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEyMywgMTI0LCAKKyAgICAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzNCwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzNSwgMTM2LCA1MiwgNTIsIDUyLCA1MiwgMTM3LCA1MiwgMTM4LCAxMzksIDE0MCwgCisgICAgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NTYwLDcgKzE3Njc2LDcgQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0MiwgMTQzLCAxNDQsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ4LCAxNDksIDE1MCwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjcxNyw3ICsxNzgzMyw3IEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NSwgMTQ2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTUxLCAxNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY3MzEsOCArMTc4NDcsOCBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ3LCAxNDgsIDE0OSwgCi0gICAgMTUwLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTUzLCAxNTQsIDE1NSwgCisgICAgMTU2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY3NjgsMTIxNCArMTc4ODQsMTIxNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDMsIDYsIDksIDExLCAxNCwgMTcsIDE5LCAyMSwgMjQsIDI3LCAyOSwgMzEsIAogICAgIDMzLCAzNSwgMzksIDQxLCA0NCwgNDYsIDQ4LCA1MCwgNTIsIDU0LCA1NiwgNTksIDYxLCA2NCwgNjYsIDY4LCA3MSwgNzQsIAogICAgIDc3LCA4MCwgODQsIDg4LCA5MywgOTgsIDEwMywgMTA3LCAxMTIsIDExNywgMTIyLCAxMjYsIDEzMSwgMTM2LCAxNDAsIDE0NSwgCi0gICAgMTUwLCAxNTQsIDE1OSwgMTY0LCAxNjgsIDE3MiwgMTc3LCAxODEsIDE4NiwgMTkxLCAxOTYsIDIwMSwgMjA2LCAyMDksIAotICAgIDIxMywgMjE2LCAyMjAsIDIyMywgMjI3LCAyMzEsIDIzNiwgMjQxLCAyNDYsIDI1MCwgMjU1LCAyNjAsIDI2NSwgMjY5LCAKLSAgICAyNzQsIDI3OSwgMjgzLCAyODgsIDI5MywgMjk3LCAzMDIsIDMwNywgMzExLCAzMTUsIDMyMCwgMzI0LCAzMjksIDMzNCwgCi0gICAgMzM5LCAzNDQsIDM0OSwgMzUzLCAzNTYsIDM2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYyLCAzNjYsIDM3MSwgCi0gICAgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODYsIDM4OSwgMzkxLCAzOTQsIDQwMCwgNDA4LCA0MTEsIDQxNSwgNDE4LCA0MjAsIAotICAgIDQyMywgNDI2LCA0MjksIDQzMiwgNDM2LCA0MzksIDQ0MiwgNDQ1LCA0NDcsIDQ1MCwgNDU2LCA0NjQsIDQ3MSwgNDc4LCAKLSAgICA0ODUsIDQ5MCwgNDk3LCA1MDMsIDUxMCwgNTE3LCA1MjQsIDUzMiwgNTM3LCA1NDUsIDU1MiwgNTU4LCA1NjUsIDU3MiwgCi0gICAgNTgwLCA1ODcsIDU5NSwgNjAzLCA2MDgsIDYxNiwgNjIzLCA2MjksIDYzNiwgNjQzLCA2NTAsIDY1MywgNjU5LCA2NjYsIAotICAgIDY3MiwgNjc5LCA2ODYsIDY5MywgNjk4LCA3MDQsIDcxMSwgNzE3LCA3MjQsIDczMSwgNzM4LCA3NDYsIDc1MSwgNzU5LCAKLSAgICA3NjYsIDc3MiwgNzc5LCA3ODYsIDc5NCwgODAxLCA4MDksIDgxNywgODIyLCA4MzAsIDgzNywgODQzLCA4NTAsIDg1NywgCi0gICAgODY0LCA4NjcsIDg3MywgODgwLCA4ODYsIDg5MywgOTAwLCA5MDcsIDkxMiwgOTIwLCA5MjcsIDkzNCwgOTQxLCA5NDgsIAotICAgIDk1NSwgOTYyLCA5NjksIDk3NiwgOTg0LCA5OTIsIDEwMDAsIDEwMDgsIDEwMTYsIDEwMjQsIDEwMzIsIDEwNDAsIDEwNDcsIAotICAgIDEwNTQsIDEwNjEsIDEwNjgsIDEwNzUsIDEwODIsIDEwODksIDEwOTYsIDExMDMsIDExMTAsIDExMTcsIDExMjQsIDExMzIsIAotICAgIDExNDAsIDExNDgsIDExNTYsIDExNjQsIDExNzIsIDExODAsIDExODgsIDExOTYsIDEyMDQsIDEyMTEsIDEyMTgsIDEyMjYsIAotICAgIDEyMzQsIDEyNDIsIDEyNTAsIDEyNTgsIDEyNjYsIDEyNzQsIDEyODIsIDEyOTAsIDEyOTYsIDEzMDEsIDEzMDYsIDEzMTQsIAotICAgIDEzMjIsIDEzMzAsIDEzMzgsIDEzNDMsIDEzNTAsIDEzNTcsIDEzNjUsIDEzNzMsIDEzODEsIDEzODksIDEzOTgsIDE0MDcsIAotICAgIDE0MTQsIDE0MjEsIDE0MjgsIDE0MzUsIDE0NDMsIDE0NTEsIDE0NTksIDE0NjcsIDE0NzgsIDE0ODMsIDE0ODgsIDE0OTUsIAotICAgIDE1MDIsIDE1MDksIDE1MTYsIDE1MjMsIDE1MzAsIDE1MzUsIDE1NDAsIDE1NDcsIDE1NTQsIDE1NjIsIDE1NzAsIDE1NzgsIAotICAgIDE1ODYsIDE1OTMsIDE2MDAsIDE2MDgsIDE2MTYsIDE2MjQsIDE2MzIsIDE2NDAsIDE2NDgsIDE2NTYsIDE2NjQsIDE2NzIsIAotICAgIDE2ODAsIDE2ODcsIDE2OTQsIDE3MDEsIDE3MDgsIDE3MTUsIDE3MjIsIDE3MjksIDE3MzYsIDE3NDQsIDE3NTIsIDE3NTksIAotICAgIDE3NjYsIDE3NzMsIDE3ODAsIDE3ODgsIDE3OTYsIDE4MDQsIDE4MTIsIDE4MjAsIDE4MjcsIDE4MzQsIDE4NDIsIDE4NTAsIAotICAgIDE4NTgsIDE4NjYsIDE4NzEsIDE4NzcsIDE4ODMsIDE4OTAsIDE4OTcsIDE5MDIsIDE5MDcsIDE5MTIsIDE5MTksIDE5MjYsIAotICAgIDE5MzMsIDE5NDAsIDE5NDgsIDE5NTYsIDE5NjMsIDE5NjksIDE5NzQsIDE5NzksIDE5ODYsIDE5OTMsIDIwMDAsIDIwMDUsIAotICAgIDIwMTAsIDIwMTUsIDIwMjIsIDIwMjksIDIwMzYsIDIwNDMsIDIwNTAsIDIwNTcsIDIwNjUsIDIwNzUsIDIwODMsIDIwOTAsIAotICAgIDIwOTcsIDIxMDIsIDIxMDcsIDIxMTQsIDIxMjEsIDIxMjUsIDIxMzAsIDIxMzUsIDIxNDAsIDIxNDgsIDIxNTcsIDIxNjQsIAotICAgIDIxNzEsIDIxODAsIDIxODcsIDIxOTQsIDIxOTksIDIyMDYsIDIyMTMsIDIyMjAsIDIyMjcsIDIyMzQsIDIyMzksIDIyNDYsIAotICAgIDIyNTMsIDIyNjEsIDIyNjYsIDIyNzEsIDIyNzYsIDIyODYsIDIyOTAsIDIyOTYsIDIzMDIsIDIzMDgsIDIzMTQsIDIzMjIsIAotICAgIDIzMzUsIDIzNDMsIDIzNDgsIDIzNTgsIDIzNjMsIDIzNjgsIDIzNzgsIDIzODMsIDIzOTAsIDIzOTcsIDI0MDUsIDI0MTMsIAotICAgIDI0MjAsIDI0MjcsIDI0MzQsIDI0NDEsIDI0NTEsIDI0NjEsIDI0NzAsIDI0NzksIDI0ODksIDI0OTksIDI1MDksIDI1MTksIAotICAgIDI1MjUsIDI1MzUsIDI1NDUsIDI1NTUsIDI1NjUsIDI1NzMsIDI1ODEsIDI1ODgsIDI1OTUsIDI2MDMsIDI2MTEsIDI2MTksIAotICAgIDI2MjcsIDI2MzQsIDI2NDEsIDI2NTEsIDI2NjEsIDI2NjksIDI2NzcsIDI2ODUsIDI2OTAsIDI3MDAsIDI3MDUsIDI3MTIsIAotICAgIDI3MTksIDI3MjQsIDI3MjksIDI3MzcsIDI3NDUsIDI3NTUsIDI3NjUsIDI3NzIsIDI3NzksIDI3ODgsIDI3OTcsIDI4MDUsIAotICAgIDI4MTMsIDI4MjIsIDI4MzEsIDI4MzksIDI4NDcsIDI4NTYsIDI4NjUsIDI4NzQsIDI4ODMsIDI4OTMsIDI5MDMsIDI5MTEsIAotICAgIDI5MTksIDI5MjgsIDI5MzcsIDI5NDYsIDI5NTUsIDI5NjUsIDI5NzUsIDI5ODMsIDI5OTEsIDMwMDAsIDMwMDksIDMwMTgsIAotICAgIDMwMjcsIDMwMzYsIDMwNDUsIDMwNTAsIDMwNTUsIDMwNjMsIDMwNzEsIDMwODEsIDMwODksIDMwOTQsIDMwOTksIDMxMDYsIAotICAgIDMxMTMsIDMxMjAsIDMxMjcsIDMxMzQsIDMxNDEsIDMxNTEsIDMxNjEsIDMxNzEsIDMxODEsIDMxODgsIDMxOTUsIDMyMDUsIAotICAgIDMyMTUsIDMyMjMsIDMyMzEsIDMyMzksIDMyNDcsIDMyNTUsIDMyNjIsIDMyNjksIDMyNzYsIDMyODIsIDMyODksIDMyOTYsIAotICAgIDMzMDMsIDMzMTIsIDMzMjIsIDMzMzIsIDMzMzksIDMzNDYsIDMzNTIsIDMzNTcsIDMzNjQsIDMzNzAsIDMzNzYsIDMzODMsIAotICAgIDMzOTAsIDM0MDEsIDM0MTEsIDM0MTgsIDM0MjUsIDM0MzIsIDM0MzksIDM0NDUsIDM0NTAsIDM0NTcsIDM0NjMsIDM0NjgsIAotICAgIDM0NzYsIDM0ODQsIDM0OTEsIDM0OTcsIDM1MDIsIDM1MDksIDM1MTQsIDM1MjEsIDM1MzAsIDM1MzksIDM1NDgsIDM1NTUsIAotICAgIDM1NjEsIDM1NjcsIDM1NzIsIDM1NzksIDM1ODYsIDM1OTMsIDM2MDAsIDM2MDcsIDM2MTIsIDM2MTcsIDM2MjYsIDM2MzQsIAotICAgIDM2NDMsIDM2NDgsIDM2NTUsIDM2NjYsIDM2NzMsIDM2ODEsIDM2OTAsIDM2OTYsIDM3MDIsIDM3MDgsIDM3MTUsIDM3MjAsIAotICAgIDM3MjYsIDM3MzcsIDM3NDYsIDM3NTUsIDM3NjMsIDM3NzEsIDM3ODEsIDM3ODYsIDM3OTMsIDM4MDAsIDM4MDUsIDM4MTcsIAotICAgIDM4MjYsIDM4MzQsIDM4NDEsIDM4NTAsIDM4NTUsIDM4NjAsIDM4NjcsIDM4NzQsIDM4ODEsIDM4ODgsIDM4OTQsIDM5MDMsIAotICAgIDM5MTEsIDM5MTYsIDM5MjQsIDM5MzAsIDM5MzgsIDM5NDYsIDM5NTIsIDM5NTgsIDM5NjQsIDM5NzEsIDM5NzksIDM5ODUsIAotICAgIDM5OTMsIDQwMDAsIDQwMDUsIDQwMTIsIDQwMjAsIDQwMzAsIDQwMzcsIDQwNDQsIDQwNTQsIDQwNjEsIDQwNjgsIDQwNzgsIAotICAgIDQwODUsIDQwOTIsIDQwOTksIDQxMDUsIDQxMTEsIDQxMjEsIDQxMzQsIDQxMzksIDQxNDYsIDQxNTEsIDQxNTUsIDQxNjEsIAotICAgIDQxNzAsIDQxNzcsIDQxODIsIDQxODcsIDQxOTEsIDQxOTYsIDQyMDIsIDQyMDYsIDQyMTIsIDQyMTgsIDQyMjQsIDQyMzAsIAotICAgIDQyMzgsIDQyNDMsIDQyNDgsIDQyNTMsIDQyNTgsIDQyNjQsIDQyNjYsIDQyNzEsIDQyNzUsIDQyODEsIDQyODcsIDQyOTMsIAotICAgIDQyOTgsIDQzMDUsIDQzMTIsIDQzMTgsIDQzMjUsIDQzMzMsIDQzNDEsIDQzNDYsIDQzNTEsIDQzNTUsIDQzNjAsIDQzNjIsIAotICAgIDQzNjQsIDQzNjcsIDQzNjksIDQzNzIsIDQzNzcsIDQzODIsIDQzODgsIDQzOTMsIDQzOTcsIDQ0MDEsIDQ0MDYsIDQ0MTUsIAotICAgIDQ0MjEsIDQ0MjYsIDQ0MzIsIDQ0MzcsIDQ0NDMsIDQ0NTEsIDQ0NTksIDQ0NjMsIDQ0NjcsIDQ0NzIsIDQ0NzgsIDQ0ODQsIAotICAgIDQ0OTAsIDQ0OTYsIDQ1MDEsIDQ1MDgsIDQ1MTYsIDQ1MjQsIDQ1MjksIDQ1MzUsIDQ1NDIsIDQ1NDksIDQ1NTYsIDQ1NjMsIAotICAgIDQ1NjcsIDQ1NzIsIDQ1NzcsIDQ1ODIsIDQ1ODcsIDQ1OTIsIDQ1OTUsIDQ1OTgsIDQ2MDEsIDQ2MDQsIDQ2MDcsIDQ2MTAsIAotICAgIDQ2MTQsIDQ2MTgsIDQ2MjQsIDQ2MjcsIDQ2MzIsIDQ2MzgsIDQ2NDQsIDQ2NDcsIDQ2NTIsIDQ2NTgsIDQ2NjIsIDQ2NjgsIAotICAgIDQ2NzQsIDQ2ODAsIDQ2ODYsIDQ2OTEsIDQ2OTYsIDQ3MDEsIDQ3MDQsIDQ3MTAsIDQ3MTUsIDQ3MjAsIDQ3MjQsIDQ3MjksIAotICAgIDQ3MzUsIDQ3NDEsIDQ3NDQsIDQ3NDgsIDQ3NTIsIDQ3NTYsIDQ3NTksIDQ3NjIsIDQ3NjcsIDQ3NzEsIDQ3NzgsIDQ3ODIsIAotICAgIDQ3ODgsIDQ3OTIsIDQ3OTgsIDQ4MDIsIDQ4MDYsIDQ4MTAsIDQ4MTUsIDQ4MjAsIDQ4MjcsIDQ4MzMsIDQ4NDAsIDQ4NDYsIAotICAgIDQ4NTIsIDQ4NTgsIDQ4NjEsIDQ4NjUsIDQ4NjksIDQ4NzMsIDQ4NzcsIDQ4ODIsIDQ4ODcsIDQ4OTEsIDQ4OTUsIDQ5MDEsIAotICAgIDQ5MDUsIDQ5MDksIDQ5MTQsIDQ5MjAsIDQ5MjUsIDQ5MzEsIDQ5MzUsIDQ5NDIsIDQ5NDcsIDQ5NTEsIDQ5NTYsIDQ5NjEsIAotICAgIDQ5NjcsIDQ5NzAsIDQ5NzQsIDQ5NzksIDQ5ODQsIDQ5OTMsIDQ5OTksIDUwMDQsIDUwMDgsIDUwMTMsIDUwMTcsIDUwMjIsIAotICAgIDUwMjYsIDUwMzAsIDUwMzUsIDUwMzksIDUwNDUsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzAsIDUwNzUsIDUwODEsIAotICAgIDUwODcsIDUwOTMsIDUwOTksIDUxMDQsIDUxMTAsIDUxMTYsIDUxMjIsIDUxMjcsIDUxMzIsIDUxMzksIDUxNDYsIDUxNTAsIAotICAgIDUxNTYsIDUxNjMsIDAsIDAsIDUxNzAsIDUxNzMsIDUxODIsIDUxOTEsIDUyMDIsIDUyMDYsIDAsIDAsIDAsIDAsIDUyMTEsIAotICAgIDUyMTQsIDUyMTksIDUyMjcsIDUyMzIsIDUyNDAsIDUyNDgsIDAsIDUyNTYsIDAsIDUyNjQsIDUyNzIsIDUyODAsIDUyOTEsIAotICAgIDUyOTYsIDUzMDEsIDUzMDYsIDUzMTEsIDUzMTYsIDUzMjEsIDUzMjYsIDUzMzEsIDUzMzYsIDUzNDEsIDUzNDYsIDUzNTEsIAotICAgIDUzNTYsIDUzNjEsIDUzNjYsIDUzNzEsIDAsIDUzNzYsIDUzODEsIDUzODYsIDUzOTEsIDUzOTYsIDU0MDEsIDU0MDYsIAotICAgIDU0MTEsIDU0MTksIDU0MjcsIDU0MzUsIDU0NDMsIDU0NTEsIDU0NTksIDU0NzAsIDU0NzUsIDU0ODAsIDU0ODUsIDU0OTAsIAotICAgIDU0OTUsIDU1MDAsIDU1MDUsIDU1MTAsIDU1MTUsIDU1MjAsIDU1MjUsIDU1MzAsIDU1MzUsIDU1NDAsIDU1NDUsIDU1NTAsIAotICAgIDU1NTUsIDU1NjEsIDU1NjYsIDU1NzEsIDU1NzYsIDU1ODEsIDU1ODYsIDU1OTEsIDU1OTYsIDU2MDQsIDU2MTIsIDU2MjAsIAotICAgIDU2MjgsIDU2MzYsIDU2NDEsIDU2NDUsIDU2NDksIDU2NTYsIDU2NjYsIDU2NzYsIDU2ODAsIDU2ODQsIDU2ODgsIDU2OTQsIAotICAgIDU3MDEsIDU3MDUsIDU3MTAsIDU3MTQsIDU3MTksIDU3MjMsIDU3MjgsIDU3MzIsIDU3MzcsIDU3NDIsIDU3NDcsIDU3NTIsIAotICAgIDU3NTcsIDU3NjIsIDU3NjcsIDU3NzIsIDU3NzcsIDU3ODIsIDU3ODcsIDU3OTIsIDU3OTcsIDU4MDIsIDU4MDcsIDU4MTEsIAotICAgIDU4MTUsIDU4MjEsIDU4MjUsIDU4MzAsIDU4MzYsIDU4NDQsIDU4NDksIDU4NTQsIDU4NjEsIDU4NjYsIDU4NzEsIDU4NzgsIAotICAgIDU4ODcsIDU4OTYsIDU5MDcsIDU5MTUsIDU5MjAsIDU5MjUsIDU5MzAsIDU5MzcsIDU5NDIsIDU5NDgsIDU5NTMsIDU5NTgsIAotICAgIDU5NjMsIDU5NjgsIDU5NzMsIDU5NzgsIDU5ODYsIDU5OTIsIDU5OTcsIDYwMDEsIDYwMDYsIDYwMTEsIDYwMTYsIDYwMjEsIAotICAgIDYwMjYsIDYwMzEsIDYwMzYsIDYwNDAsIDYwNDYsIDYwNTAsIDYwNTUsIDYwNjAsIDYwNjUsIDYwNjksIDYwNzQsIDYwNzksIAotICAgIDYwODQsIDYwODksIDYwOTMsIDYwOTgsIDYxMDIsIDYxMDcsIDYxMTIsIDYxMTcsIDYxMjIsIDYxMjgsIDYxMzMsIDYxMzksIAotICAgIDYxNDMsIDYxNDgsIDYxNTIsIDYxNTYsIDYxNjEsIDYxNjYsIDYxNzEsIDYxNzYsIDYxODEsIDYxODYsIDYxOTEsIDYxOTUsIAotICAgIDYyMDEsIDYyMDUsIDYyMTAsIDYyMTUsIDYyMjAsIDYyMjQsIDYyMjksIDYyMzQsIDYyMzksIDYyNDQsIDYyNDgsIDYyNTMsIAotICAgIDYyNTcsIDYyNjIsIDYyNjcsIDYyNzIsIDYyNzcsIDYyODMsIDYyODgsIDYyOTQsIDYyOTgsIDYzMDMsIDYzMDcsIDYzMTUsIAotICAgIDYzMjAsIDYzMjUsIDYzMzAsIDYzMzcsIDYzNDIsIDYzNDgsIDYzNTMsIDYzNTgsIDYzNjMsIDYzNjgsIDYzNzMsIDYzNzgsIAotICAgIDYzODYsIDYzOTIsIDYzOTcsIDY0MDIsIDY0MDcsIDY0MTIsIDY0MTcsIDY0MjMsIDY0MjksIDY0MzYsIDY0NDMsIDY0NTIsIAotICAgIDY0NjEsIDY0NjgsIDY0NzUsIDY0ODQsIDY0OTMsIDY0OTgsIDY1MDMsIDY1MDgsIDY1MTMsIDY1MTgsIDY1MjMsIDY1MjgsIAotICAgIDY1MzMsIDY1NDQsIDY1NTUsIDY1NjAsIDY1NjUsIDY1NzIsIDY1NzksIDY1ODcsIDY1OTUsIDY2MDAsIDY2MDUsIDY2MTAsIAotICAgIDY2MTUsIDY2MTksIDY2MjMsIDY2MjcsIDY2MzMsIDY2MzksIDY2NDMsIDY2NTAsIDY2NTUsIDY2NjUsIDY2NzUsIDY2ODEsIAotICAgIDY2ODcsIDY2OTUsIDY3MDMsIDY3MTEsIDY3MTksIDY3MjYsIDY3MzMsIDY3NDEsIDY3NDksIDY3NTcsIDY3NjUsIDY3NzMsIAotICAgIDY3ODEsIDY3ODksIDY3OTcsIDY4MDUsIDY4MTMsIDY4MjAsIDY4MjcsIDY4MzMsIDY4MzksIDY4NDcsIDY4NTUsIDY4NjIsIAotICAgIDY4NjksIDY4NzcsIDY4ODUsIDY4OTEsIDY4OTcsIDY5MDUsIDY5MTMsIDY5MjEsIDY5MjksIDY5MzUsIDY5NDEsIDY5NDksIAotICAgIDY5NTcsIDY5NjUsIDY5NzMsIDY5ODAsIDY5ODcsIDY5OTUsIDcwMDMsIDcwMTEsIDcwMTksIDcwMjQsIDcwMjksIDcwMzYsIAotICAgIDcwNDMsIDcwNTMsIDcwNjMsIDcwNjcsIDcwNzUsIDcwODMsIDcwOTAsIDcwOTcsIDcxMDUsIDcxMTMsIDcxMjAsIDcxMjcsIAotICAgIDcxMzUsIDcxNDMsIDcxNTAsIDcxNTcsIDcxNjUsIDcxNzMsIDcxNzgsIDcxODUsIDcxOTIsIDcxOTksIDcyMDYsIDcyMTIsIAotICAgIDcyMTgsIDcyMjYsIDcyMzQsIDcyMzksIDcyNDQsIDcyNTIsIDcyNjAsIDcyNjgsIDcyNzYsIDcyODQsIDcyOTIsIDcyOTksIAotICAgIDczMDYsIDczMTQsIDczMjIsIDczMzAsIDczMzgsIDczNDUsIDczNTIsIDczNTgsIDczNjQsIDczNzMsIDczODIsIDczODksIAotICAgIDczOTYsIDc0MDMsIDc0MTAsIDc0MTcsIDc0MjQsIDc0MzEsIDc0MzgsIDc0NDYsIDc0NTQsIDc0NjIsIDc0NzAsIDc0NzgsIAotICAgIDc0ODYsIDc0OTYsIDc1MDYsIDc1MTMsIDc1MjAsIDc1MjcsIDc1MzQsIDc1NDEsIDc1NDgsIDc1NTUsIDc1NjIsIDc1NjksIAotICAgIDc1NzYsIDc1ODMsIDc1OTAsIDc1OTcsIDc2MDQsIDc2MTEsIDc2MTgsIDc2MjUsIDc2MzIsIDc2MzksIDc2NDYsIDc2NTMsIAotICAgIDc2NjAsIDc2NjcsIDc2NzQsIDc2NzksIDc2ODQsIDc2ODksIDc2OTQsIDc2OTksIDc3MDQsIDc3MDksIDc3MTQsIDc3MTksIAotICAgIDc3MjQsIDc3MzAsIDc3MzYsIDc3NDQsIDc3NTIsIDc3NjAsIDc3NjgsIDc3NzYsIDc3ODQsIDc3OTIsIDc4MDAsIDc4MDgsIAotICAgIDc4MTYsIDc4MjEsIDc4MjYsIDc4MzEsIDc4MzYsIDc4NDQsIDAsIDc4NTIsIDc4NTcsIDc4NjIsIDc4NjcsIDc4NzIsIAotICAgIDc4NzcsIDc4ODIsIDc4ODcsIDc4OTIsIDc4OTYsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzEsIAotICAgIDc5MzYsIDc5NDEsIDc5NDYsIDc5NTEsIDc5NTYsIDc5NjEsIDc5NjYsIDc5NzEsIDc5NzYsIDc5ODEsIDc5ODYsIDc5OTEsIAotICAgIDc5OTYsIDgwMDEsIDgwMDYsIDgwMTEsIDgwMTYsIDgwMjEsIDgwMjYsIDgwMzEsIDgwMzYsIDAsIDAsIDgwNDEsIDgwNDgsIAotICAgIDgwNTEsIDgwNTUsIDgwNTksIDgwNjIsIDgwNjYsIDAsIDgwNzAsIDgwNzUsIDgwODAsIDgwODUsIDgwOTAsIDgwOTUsIAotICAgIDgxMDAsIDgxMDUsIDgxMTAsIDgxMTQsIDgxMTksIDgxMjQsIDgxMjksIDgxMzQsIDgxMzksIDgxNDQsIDgxNDksIDgxNTQsIAotICAgIDgxNTksIDgxNjQsIDgxNjksIDgxNzQsIDgxNzksIDgxODQsIDgxODksIDgxOTQsIDgxOTksIDgyMDQsIDgyMDksIDgyMTQsIAotICAgIDgyMTksIDgyMjQsIDgyMjksIDgyMzQsIDgyMzksIDgyNDQsIDgyNDksIDgyNTQsIDgyNTksIDAsIDgyNjYsIDgyNzEsIDAsIAotICAgIDAsIDgyNzQsIDgyODAsIDgyODYsIDAsIDgyOTAsIDgyOTUsIDgzMDAsIDgzMDUsIDgzMTIsIDgzMTksIDgzMjQsIDgzMjksIAotICAgIDgzMzQsIDgzMzksIDgzNDQsIDgzNDksIDgzNTQsIDgzNjEsIDgzNjYsIDgzNzMsIDgzODAsIDgzODUsIDgzOTIsIDgzOTcsIAotICAgIDg0MDIsIDg0MDcsIDg0MTQsIDg0MTksIDg0MjQsIDg0MzEsIDg0NDAsIDg0NDUsIDg0NTAsIDg0NTUsIDg0NjAsIDg0NjYsIAotICAgIDg0NzEsIDg0NzgsIDg0ODUsIDg0OTIsIDg0OTcsIDg1MDIsIDg1MDcsIDg1MTIsIDg1MTcsIDg1MjIsIDg1MzIsIDg1MzcsIAotICAgIDg1NDYsIDg1NTEsIDg1NTYsIDg1NjEsIDg1NjYsIDg1NzMsIDg1ODAsIDg1ODcsIDg1OTMsIDg1OTksIDg2MDYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDg2MTMsIDg2MTcsIDg2MjEsIDg2MjUsIDg2MjksIDg2MzMsIDg2MzcsIDg2NDEsIDg2NDUsIAotICAgIDg2NDksIDg2NTMsIDg2NTgsIDg2NjIsIDg2NjYsIDg2NzEsIDg2NzUsIDg2ODAsIDg2ODQsIDg2ODgsIDg2OTIsIDg2OTcsIAotICAgIDg3MDEsIDg3MDYsIDg3MTAsIDg3MTQsIDg3MTgsIDg3MjIsIDAsIDAsIDAsIDAsIDAsIDg3MjYsIDg3MzMsIDg3NDEsIAotICAgIDg3NDgsIDg3NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NTgsIDg3NjEsIDg3NjUsIDg3NzAsIAotICAgIDg3NzQsIDg3NzgsIDg3ODIsIDg3ODgsIDg3OTQsIDg3OTcsIDg4MDQsIDg4MTMsIDg4MTYsIDg4MTksIDg4MjQsIDg4MzAsIAotICAgIDg4MzQsIDg4NDIsIDg4NDgsIDg4NTQsIDg4NjIsIDg4NjYsIDg4NzEsIDg4ODIsIDg4ODcsIDg4OTEsIDg4OTUsIDg4OTksIAotICAgIDg5MDIsIDAsIDg5MDUsIDg5MTIsIDg5MTYsIDg5MjIsIDg5MjYsIDg5MzMsIDg5NDAsIDg5NDgsIDg5NTUsIDg5NjIsIAotICAgIDg5NjYsIDg5NzAsIDg5NzYsIDg5ODAsIDg5ODQsIDg5ODgsIDg5OTIsIDg5OTYsIDkwMDAsIDkwMDQsIDkwMDgsIDkwMTIsIAotICAgIDkwMTYsIDkwMjAsIDkwMjQsIDkwMjgsIDkwMzIsIDkwMzYsIDkwNDAsIDkwNDQsIDkwNTIsIDkwNjAsIDkwNzAsIDkwNzksIAotICAgIDkwODgsIDkwOTEsIDkwOTUsIDkwOTksIDkxMDMsIDkxMDcsIDkxMTEsIDkxMTUsIDkxMTksIDkxMjMsIDkxMjgsIDkxMzIsIAotICAgIDkxMzUsIDkxMzgsIDkxNDEsIDkxNDQsIDkxNDcsIDkxNTAsIDkxNTMsIDkxNTYsIDkxNjAsIDkxNjQsIDkxNjgsIDkxNzMsIAotICAgIDkxNzgsIDkxODQsIDkxODcsIDkxOTQsIDkyMDMsIDkyMDgsIDkyMTMsIDkyMjAsIDkyMjYsIDkyMzEsIDkyMzUsIDkyMzksIAotICAgIDkyNDMsIDkyNDcsIDkyNTEsIDkyNTUsIDkyNjAsIDkyNjQsIDkyNjksIDkyNzMsIDkyNzgsIDkyODMsIDkyOTAsIDkyOTYsIAotICAgIDkzMDIsIDkzMDgsIDkzMTMsIDkzMjIsIDkzMzEsIDkzMzYsIDkzNDMsIDkzNTAsIDkzNTcsIDkzNjQsIDkzNjgsIDkzNzIsIAotICAgIDkzNzYsIDkzODMsIDkzOTMsIDkzOTcsIDk0MDEsIDk0MDUsIDk0MTIsIDk0MjAsIDk0MjQsIDk0MjgsIDk0MzUsIDk0MzksIAotICAgIDk0NDMsIDk0NDcsIDk0NTQsIDk0NjEsIDk0NzMsIDk0NzcsIDk0ODEsIDk0ODUsIDk0OTUsIDk1MDQsIDk1MDgsIDk1MTYsIAotICAgIDk1MjMsIDk1MzAsIDk1MzksIDk1NTAsIDk1NTgsIDk1NjIsIDk1NzEsIDk1ODIsIDk1OTAsIDk2MDMsIDk2MTEsIDk2MTksIAotICAgIDk2MjcsIDk2MzUsIDk2NDEsIDk2NTAsIDk2NTcsIDk2NjEsIDk2NjksIDk2NzMsIDk2ODAsIDk2ODgsIDk2OTIsIDk2OTgsIAotICAgIDk3MDUsIDk3MTIsIDk3MTYsIDk3MjQsIDk3MjgsIDk3MzUsIDk3MzksIDk3NDcsIDk3NTEsIDk3NTksIDk3NjcsIDk3NzQsIAotICAgIDk3ODIsIDk3OTAsIDk3OTcsIDk4MDMsIDk4MDcsIDk4MTQsIDk4MjIsIDk4MjgsIDk4MzUsIDk4NDIsIDk4NDgsIDk4NTgsIAotICAgIDk4NjYsIDk4NzMsIDk4NzksIDk4ODMsIDk4ODYsIDk4OTAsIDk4OTYsIDk5MDQsIDk5MDgsIDk5MTQsIDk5MjAsIDk5MjcsIAotICAgIDk5MzQsIDk5MzcsIDk5NDQsIDk5NDksIDk5NTgsIDk5NjMsIDk5NjcsIDk5ODAsIDk5OTMsIDk5OTksIDEwMDA2LCAxMDAxMSwgCi0gICAgMTAwMTcsIDEwMDIyLCAxMDAyOCwgMTAwMzgsIDEwMDQ1LCAxMDA1NCwgMTAwNjQsIDEwMDcwLCAxMDA3NSwgMTAwODAsIAotICAgIDEwMDg0LCAxMDA4OCwgMTAwOTMsIDEwMDk4LCAxMDEwNCwgMTAxMTIsIDEwMTIwLCAxMDEzMSwgMTAxMzYsIDEwMTQ1LCAKLSAgICAxMDE1NCwgMTAxNjEsIDEwMTY3LCAxMDE3MywgMTAxNzksIDEwMTg1LCAxMDE5MSwgMTAxOTcsIDEwMjA0LCAxMDIxMCwgCi0gICAgMTAyMTcsIDEwMjI0LCAxMDIzMSwgMTAyMzgsIDEwMjQ0LCAxMDI1MiwgMTAyNjEsIDEwMjY4LCAxMDI3NiwgMTAyODQsIAotICAgIDEwMjkwLCAxMDI5NiwgMTAzMDIsIDEwMzEwLCAxMDMxOCwgMTAzMjgsIDEwMzM4LCAxMDM0MiwgMTAzNDgsIDEwMzU0LCAwLCAKLSAgICAxMDM2MCwgMTAzNjUsIDEwMzcwLCAxMDM3NywgMTAzODIsIDEwMzg3LCAxMDM5NCwgMTAzOTksIDEwNDA4LCAxMDQxMywgCi0gICAgMTA0MTgsIDEwNDIzLCAxMDQyOCwgMTA0MzMsIDEwNDQwLCAxMDQ0NSwgMTA0NTIsIDEwNDU3LCAxMDQ2MiwgMTA0NjcsIAotICAgIDEwNDcyLCAxMDQ3NywgMTA0ODMsIDEwNDg3LCAxMDQ5MiwgMTA0OTksIDEwNTA0LCAxMDUwOSwgMTA1MTQsIDEwNTE5LCAKLSAgICAxMDUyNCwgMTA1MzEsIDEwNTM4LCAxMDU0NSwgMTA1NTAsIDEwNTU1LCAxMDU2MSwgMTA1NjYsIDEwNTcxLCAxMDU3NywgCi0gICAgMTA1ODIsIDEwNTg3LCAxMDU5NSwgMTA2MDMsIDEwNjA4LCAxMDYxMywgMTA2MTksIDEwNjI0LCAxMDYyOSwgMTA2MzMsIAotICAgIDEwNjM5LCAxMDY0MywgMTA2NDcsIDEwNjUzLCAxMDY1OSwgMTA2NjQsIDEwNjY5LCAxMDY3NiwgMTA2ODMsIDEwNjg3LCAwLCAKLSAgICAwLCAxMDY5MSwgMTA2OTgsIDEwNzA1LCAxMDcxMiwgMTA3MjIsIDEwNzM0LCAxMDc0NSwgMTA3NjEsIDEwNzczLCAxMDc4NCwgCi0gICAgMTA3OTIsIDEwNzk5LCAxMDgwOSwgMTA4MjQsIDEwODM1LCAxMDg0MSwgMTA4NTAsIDEwODU4LCAxMDg2OSwgMTA4NzksIAotICAgIDEwODg3LCAxMDg5OCwgMTA5MDUsIDEwOTEzLCAxMDkyNCwgMTA5MzAsIDEwOTM2LCAxMDk0NCwgMTA5NTIsIDEwOTYwLCAKLSAgICAxMDk2NiwgMTA5NzYsIDEwOTg0LCAxMDk5NCwgMTEwMDQsIDExMDE3LCAxMTAzMSwgMTEwNDUsIDExMDU1LCAxMTA2NiwgCi0gICAgMTEwNzcsIDExMDkwLCAxMTEwMywgMTExMTcsIDExMTI5LCAxMTE0MSwgMTExNTQsIDExMTY3LCAxMTE3OSwgMTExOTIsIAotICAgIDExMjAxLCAxMTIwOSwgMTEyMTQsIDExMjE5LCAxMTIyNCwgMTEyMjksIDExMjM0LCAxMTIzOSwgMTEyNDQsIDExMjQ5LCAKLSAgICAxMTI1NCwgMTEyNTksIDExMjY0LCAxMTI2OSwgMTEyNzQsIDExMjc5LCAxMTI4NCwgMTEyODksIDExMjk0LCAxMTI5OSwgCi0gICAgMTEzMDQsIDExMzA5LCAxMTMxNCwgMTEzMTksIDExMzI0LCAxMTMyOSwgMTEzMzQsIDExMzM5LCAxMTM0NCwgMTEzNDksIAotICAgIDExMzU0LCAxMTM1OSwgMTEzNjQsIDExMzY5LCAxMTM3MywgMTEzNzgsIDExMzgzLCAxMTM4OCwgMTEzOTMsIDExMzk4LCAKLSAgICAxMTQwMiwgMTE0MDYsIDExNDEwLCAxMTQxNCwgMTE0MTgsIDExNDIyLCAxMTQyNiwgMTE0MzAsIDExNDM0LCAxMTQzOCwgCi0gICAgMTE0NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDQ3LCAxMTQ1MiwgMTE0NTYsIAotICAgIDExNDYwLCAxMTQ2NCwgMTE0NjgsIDExNDcyLCAxMTQ3NiwgMTE0ODEsIDExNDg1LCAxMTQ5MCwgMTE0OTQsIDExNDk5LCAKLSAgICAxMTUwMywgMTE1MDcsIDExNTExLCAxMTUxNiwgMTE1MjAsIDExNTI1LCAxMTUzMCwgMTE1MzUsIDExNTM5LCAxMTU0NCwgCi0gICAgMTE1NDksIDExNTU0LCAxMTU1OSwgMTE1NjQsIDExNTY5LCAxMTU3NCwgMTE1NzksIDExNTg0LCAxMTU4OCwgMTE1OTMsIAotICAgIDExNjAwLCAxMTYwNCwgMTE2MDksIDExNjE0LCAxMTYxOCwgMTE2MjMsIDExNjI3LCAxMTYzNCwgMTE2NDEsIDExNjQ4LCAKLSAgICAxMTY1NSwgMTE2NjMsIDExNjcxLCAxMTY4MCwgMTE2ODgsIDExNjk1LCAxMTcwMiwgMTE3MTAsIDExNzE2LCAxMTcyMiwgCi0gICAgMTE3MjgsIDExNzM0LCAxMTc0MSwgMTE3NDYsIDExNzUwLCAxMTc1NSwgMCwgMCwgMCwgMCwgMCwgMTE3NTksIDExNzY0LCAKLSAgICAxMTc2OSwgMTE3NzQsIDExNzc5LCAxMTc4NCwgMTE3ODksIDExNzk0LCAxMTc5OSwgMTE4MDQsIDExODA5LCAxMTgxNCwgCi0gICAgMTE4MTksIDExODI0LCAxMTgyOSwgMTE4MzQsIDExODM5LCAxMTg0NCwgMTE4NDksIDExODU0LCAxMTg1OSwgMTE4NjQsIAotICAgIDExODY5LCAxMTg3NCwgMTE4NzksIDExODg0LCAxMTg4OSwgMTE4OTcsIDExOTA0LCAxMTkxMCwgMTE5MTUsIDExOTIzLCAKLSAgICAxMTkzMCwgMTE5MzYsIDExOTQzLCAxMTk0OSwgMTE5NTQsIDExOTYxLCAxMTk2OCwgMTE5NzQsIDExOTc5LCAxMTk4NCwgCi0gICAgMTE5OTAsIDExOTk1LCAxMjAwMCwgMTIwMDYsIDAsIDAsIDEyMDExLCAxMjAxNywgMTIwMjMsIDEyMDI5LCAxMjAzNSwgCi0gICAgMTIwNDEsIDEyMDQ3LCAxMjA1MiwgMTIwNjAsIDEyMDY2LCAxMjA3MiwgMTIwNzgsIDEyMDg0LCAxMjA5MCwgMTIwOTgsIDAsIAotICAgIDEyMTA0LCAxMjEwOSwgMTIxMTQsIDEyMTE5LCAxMjEyNCwgMTIxMjksIDEyMTM0LCAxMjEzOSwgMTIxNDQsIDEyMTQ5LCAKLSAgICAxMjE1NCwgMTIxNTksIDEyMTY0LCAxMjE2OSwgMTIxNzQsIDEyMTc5LCAxMjE4NCwgMTIxODksIDEyMTk0LCAxMjE5OSwgCi0gICAgMTIyMDQsIDEyMjA5LCAxMjIxNCwgMTIyMTksIDEyMjI0LCAxMjIyOSwgMTIyMzQsIDEyMjM5LCAwLCAwLCAxMjI0NCwgMCwgCisgICAgMTUwLCAxNTQsIDE1OSwgMTY0LCAxNjgsIDE3MywgMTc4LCAxODIsIDE4NywgMTkyLCAxOTcsIDIwMiwgMjA3LCAyMTAsIAorICAgIDIxNCwgMjE3LCAyMjEsIDIyNCwgMjI4LCAyMzIsIDIzNywgMjQyLCAyNDcsIDI1MSwgMjU2LCAyNjEsIDI2NiwgMjcwLCAKKyAgICAyNzUsIDI4MCwgMjg0LCAyODksIDI5NCwgMjk4LCAzMDMsIDMwOCwgMzEyLCAzMTcsIDMyMiwgMzI2LCAzMzEsIDMzNiwgCisgICAgMzQxLCAzNDYsIDM1MSwgMzU1LCAzNTgsIDM2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY0LCAzNjgsIDM3MywgCisgICAgMzc2LCAzNzksIDM4MiwgMzg1LCAzODgsIDM5MSwgMzkzLCAzOTYsIDQwMiwgNDEwLCA0MTMsIDQxNywgNDIwLCA0MjIsIAorICAgIDQyNSwgNDI4LCA0MzEsIDQzNCwgNDM4LCA0NDEsIDQ0NCwgNDQ3LCA0NDksIDQ1MiwgNDU4LCA0NjYsIDQ3MywgNDgwLCAKKyAgICA0ODcsIDQ5MiwgNDk5LCA1MDUsIDUxMiwgNTE5LCA1MjYsIDUzNCwgNTM5LCA1NDcsIDU1NCwgNTYwLCA1NjcsIDU3NCwgCisgICAgNTgyLCA1ODksIDU5NywgNjA1LCA2MTAsIDYxOCwgNjI1LCA2MzEsIDYzOCwgNjQ1LCA2NTIsIDY1NSwgNjYxLCA2NjgsIAorICAgIDY3NCwgNjgxLCA2ODgsIDY5NSwgNzAwLCA3MDcsIDcxNCwgNzIwLCA3MjcsIDczNCwgNzQxLCA3NDksIDc1NCwgNzYyLCAKKyAgICA3NjksIDc3NSwgNzgyLCA3ODksIDc5NywgODA0LCA4MTIsIDgyMCwgODI1LCA4MzMsIDg0MCwgODQ2LCA4NTMsIDg2MCwgCisgICAgODY3LCA4NzAsIDg3NiwgODgzLCA4ODksIDg5NiwgOTAzLCA5MTAsIDkxNSwgOTIzLCA5MzAsIDkzNywgOTQ0LCA5NTEsIAorICAgIDk1OCwgOTY1LCA5NzIsIDk3OSwgOTg3LCA5OTUsIDEwMDMsIDEwMTEsIDEwMTksIDEwMjcsIDEwMzUsIDEwNDMsIDEwNTAsIAorICAgIDEwNTcsIDEwNjQsIDEwNzEsIDEwNzgsIDEwODUsIDEwOTIsIDEwOTksIDExMDYsIDExMTMsIDExMjAsIDExMjcsIDExMzUsIAorICAgIDExNDMsIDExNTEsIDExNTksIDExNjcsIDExNzUsIDExODMsIDExOTEsIDExOTksIDEyMDcsIDEyMTQsIDEyMjEsIDEyMjksIAorICAgIDEyMzcsIDEyNDUsIDEyNTMsIDEyNjEsIDEyNjksIDEyNzcsIDEyODUsIDEyOTMsIDEyOTksIDEzMDQsIDEzMDksIDEzMTcsIAorICAgIDEzMjUsIDEzMzMsIDEzNDEsIDEzNDYsIDEzNTMsIDEzNjAsIDEzNjgsIDEzNzYsIDEzODQsIDEzOTIsIDE0MDEsIDE0MTAsIAorICAgIDE0MTcsIDE0MjQsIDE0MzEsIDE0MzgsIDE0NDYsIDE0NTQsIDE0NjIsIDE0NzAsIDE0ODEsIDE0ODYsIDE0OTEsIDE0OTgsIAorICAgIDE1MDUsIDE1MTIsIDE1MTksIDE1MjYsIDE1MzMsIDE1MzgsIDE1NDMsIDE1NTAsIDE1NTcsIDE1NjUsIDE1NzMsIDE1ODEsIAorICAgIDE1ODksIDE1OTYsIDE2MDMsIDE2MTEsIDE2MTksIDE2MjcsIDE2MzUsIDE2NDMsIDE2NTEsIDE2NTksIDE2NjcsIDE2NzUsIAorICAgIDE2ODMsIDE2OTAsIDE2OTcsIDE3MDQsIDE3MTEsIDE3MTgsIDE3MjUsIDE3MzIsIDE3MzksIDE3NDcsIDE3NTUsIDE3NjIsIAorICAgIDE3NjksIDE3NzYsIDE3ODMsIDE3OTEsIDE3OTksIDE4MDcsIDE4MTUsIDE4MjMsIDE4MzAsIDE4MzcsIDE4NDUsIDE4NTMsIAorICAgIDE4NjEsIDE4NjksIDE4NzUsIDE4ODEsIDE4ODcsIDE4OTQsIDE5MDEsIDE5MDYsIDE5MTEsIDE5MTYsIDE5MjMsIDE5MzAsIAorICAgIDE5MzcsIDE5NDQsIDE5NTIsIDE5NjAsIDE5NjcsIDE5NzMsIDE5NzgsIDE5ODMsIDE5OTAsIDE5OTcsIDIwMDQsIDIwMDksIAorICAgIDIwMTQsIDIwMTksIDIwMjYsIDIwMzMsIDIwNDAsIDIwNDcsIDIwNTQsIDIwNjEsIDIwNjksIDIwNzksIDIwODcsIDIwOTQsIAorICAgIDIxMDEsIDIxMDYsIDIxMTEsIDIxMTgsIDIxMjUsIDIxMjksIDIxMzQsIDIxMzksIDIxNDQsIDIxNTIsIDIxNjEsIDIxNjgsIAorICAgIDIxNzUsIDIxODQsIDIxOTEsIDIxOTgsIDIyMDMsIDIyMTAsIDIyMTcsIDIyMjQsIDIyMzEsIDIyMzgsIDIyNDMsIDIyNTAsIAorICAgIDIyNTcsIDIyNjUsIDIyNzAsIDIyNzUsIDIyODAsIDIyOTAsIDIyOTQsIDIzMDAsIDIzMDYsIDIzMTIsIDIzMTgsIDIzMjYsIAorICAgIDIzMzksIDIzNDcsIDIzNTIsIDIzNjIsIDIzNjcsIDIzNzIsIDIzODIsIDIzODcsIDIzOTQsIDI0MDEsIDI0MDksIDI0MTcsIAorICAgIDI0MjQsIDI0MzEsIDI0MzgsIDI0NDUsIDI0NTUsIDI0NjUsIDI0NzQsIDI0ODMsIDI0OTMsIDI1MDMsIDI1MTMsIDI1MjMsIAorICAgIDI1MjksIDI1MzksIDI1NDksIDI1NTksIDI1NjksIDI1NzcsIDI1ODUsIDI1OTIsIDI1OTksIDI2MDcsIDI2MTUsIDI2MjMsIAorICAgIDI2MzEsIDI2MzgsIDI2NDUsIDI2NTUsIDI2NjUsIDI2NzMsIDI2ODEsIDI2ODksIDI2OTQsIDI3MDQsIDI3MDksIDI3MTYsIAorICAgIDI3MjMsIDI3MjgsIDI3MzMsIDI3NDEsIDI3NDksIDI3NTksIDI3NjksIDI3NzYsIDI3ODMsIDI3OTIsIDI4MDEsIDI4MDksIAorICAgIDI4MTcsIDI4MjYsIDI4MzUsIDI4NDMsIDI4NTEsIDI4NjAsIDI4NjksIDI4NzgsIDI4ODcsIDI4OTcsIDI5MDcsIDI5MTUsIAorICAgIDI5MjMsIDI5MzIsIDI5NDEsIDI5NTAsIDI5NTksIDI5NjksIDI5NzksIDI5ODcsIDI5OTUsIDMwMDQsIDMwMTMsIDMwMjIsIAorICAgIDMwMzEsIDMwNDAsIDMwNDksIDMwNTQsIDMwNTksIDMwNjcsIDMwNzUsIDMwODUsIDMwOTMsIDMwOTgsIDMxMDMsIDMxMTAsIAorICAgIDMxMTcsIDMxMjQsIDMxMzEsIDMxMzgsIDMxNDUsIDMxNTUsIDMxNjUsIDMxNzUsIDMxODUsIDMxOTIsIDMxOTksIDMyMDksIAorICAgIDMyMTksIDMyMjcsIDMyMzUsIDMyNDMsIDMyNTEsIDMyNTksIDMyNjYsIDMyNzMsIDMyODAsIDMyODYsIDMyOTMsIDMzMDAsIAorICAgIDMzMDcsIDMzMTYsIDMzMjYsIDMzMzYsIDMzNDMsIDMzNTAsIDMzNTYsIDMzNjEsIDMzNjgsIDMzNzQsIDMzODAsIDMzODcsIAorICAgIDMzOTQsIDM0MDUsIDM0MTUsIDM0MjIsIDM0MjksIDM0MzYsIDM0NDMsIDM0NDksIDM0NTQsIDM0NjEsIDM0NjcsIDM0NzIsIAorICAgIDM0ODAsIDM0ODgsIDM0OTUsIDM1MDEsIDM1MDYsIDM1MTMsIDM1MTgsIDM1MjUsIDM1MzQsIDM1NDMsIDM1NTIsIDM1NTksIAorICAgIDM1NjUsIDM1NzEsIDM1NzYsIDM1ODMsIDM1OTAsIDM1OTcsIDM2MDQsIDM2MTEsIDM2MTYsIDM2MjEsIDM2MzAsIDM2MzgsIAorICAgIDM2NDcsIDM2NTIsIDM2NTksIDM2NzAsIDM2NzcsIDM2ODUsIDM2OTQsIDM3MDAsIDM3MDYsIDM3MTIsIDM3MTksIDM3MjQsIAorICAgIDM3MzAsIDM3NDEsIDM3NTAsIDM3NTksIDM3NjcsIDM3NzUsIDM3ODUsIDM3OTAsIDM3OTcsIDM4MDQsIDM4MDksIDM4MjEsIAorICAgIDM4MzAsIDM4MzgsIDM4NDUsIDM4NTQsIDM4NTksIDM4NjQsIDM4NzEsIDM4NzgsIDM4ODUsIDM4OTIsIDM4OTgsIDM5MDcsIAorICAgIDM5MTUsIDM5MjAsIDM5MjgsIDM5MzQsIDM5NDIsIDM5NTAsIDM5NTYsIDM5NjIsIDM5NjgsIDM5NzUsIDM5ODMsIDM5ODksIAorICAgIDM5OTcsIDQwMDQsIDQwMDksIDQwMTYsIDQwMjQsIDQwMzQsIDQwNDEsIDQwNDgsIDQwNTgsIDQwNjUsIDQwNzIsIDQwODIsIAorICAgIDQwODksIDQwOTYsIDQxMDMsIDQxMDksIDQxMTUsIDQxMjUsIDQxMzgsIDQxNDMsIDQxNTAsIDQxNTUsIDQxNTksIDQxNjUsIAorICAgIDQxNzQsIDQxODEsIDQxODYsIDQxOTEsIDQxOTUsIDQyMDAsIDQyMDYsIDQyMTAsIDQyMTYsIDQyMjIsIDQyMjgsIDQyMzQsIAorICAgIDQyNDIsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjgsIDQyNzAsIDQyNzUsIDQyNzksIDQyODUsIDQyOTEsIDQyOTcsIAorICAgIDQzMDIsIDQzMDksIDQzMTYsIDQzMjIsIDQzMjksIDQzMzcsIDQzNDUsIDQzNTAsIDQzNTUsIDQzNTksIDQzNjQsIDQzNjYsIAorICAgIDQzNjgsIDQzNzEsIDQzNzMsIDQzNzYsIDQzODEsIDQzODYsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDYsIDQ0MTEsIDQ0MjAsIAorICAgIDQ0MjYsIDQ0MzEsIDQ0MzcsIDQ0NDIsIDQ0NDgsIDQ0NTYsIDQ0NjQsIDQ0NjgsIDQ0NzIsIDQ0NzcsIDQ0ODMsIDQ0ODksIAorICAgIDQ0OTUsIDQ1MDEsIDQ1MDYsIDQ1MTMsIDQ1MjEsIDQ1MjksIDQ1MzQsIDQ1NDAsIDQ1NDcsIDQ1NTQsIDQ1NjEsIDQ1NjgsIAorICAgIDQ1NzIsIDQ1NzcsIDQ1ODIsIDQ1ODcsIDQ1OTIsIDQ1OTcsIDQ2MDAsIDQ2MDMsIDQ2MDYsIDQ2MDksIDQ2MTIsIDQ2MTUsIAorICAgIDQ2MTksIDQ2MjMsIDQ2MjksIDQ2MzIsIDQ2MzcsIDQ2NDMsIDQ2NDksIDQ2NTIsIDQ2NTcsIDQ2NjMsIDQ2NjcsIDQ2NzMsIAorICAgIDQ2NzksIDQ2ODUsIDQ2OTEsIDQ2OTYsIDQ3MDEsIDQ3MDYsIDQ3MDksIDQ3MTUsIDQ3MjAsIDQ3MjUsIDQ3MjksIDQ3MzQsIAorICAgIDQ3NDAsIDQ3NDYsIDQ3NDksIDQ3NTMsIDQ3NTcsIDQ3NjEsIDQ3NjQsIDQ3NjcsIDQ3NzIsIDQ3NzYsIDQ3ODMsIDQ3ODcsIAorICAgIDQ3OTMsIDQ3OTcsIDQ4MDMsIDQ4MDcsIDQ4MTEsIDQ4MTUsIDQ4MjAsIDQ4MjUsIDQ4MzIsIDQ4MzgsIDQ4NDUsIDQ4NTEsIAorICAgIDQ4NTcsIDQ4NjMsIDQ4NjYsIDQ4NzAsIDQ4NzQsIDQ4NzgsIDQ4ODIsIDQ4ODcsIDQ4OTIsIDQ4OTYsIDQ5MDAsIDQ5MDYsIAorICAgIDQ5MTAsIDQ5MTQsIDQ5MTksIDQ5MjUsIDQ5MzAsIDQ5MzYsIDQ5NDAsIDQ5NDcsIDQ5NTIsIDQ5NTYsIDQ5NjEsIDQ5NjYsIAorICAgIDQ5NzIsIDQ5NzUsIDQ5NzksIDQ5ODQsIDQ5ODksIDQ5OTgsIDUwMDQsIDUwMDksIDUwMTMsIDUwMTgsIDUwMjIsIDUwMjcsIAorICAgIDUwMzEsIDUwMzUsIDUwNDAsIDUwNDQsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzAsIDUwNzUsIDUwODAsIDUwODYsIAorICAgIDUwOTIsIDUwOTgsIDUxMDQsIDUxMDksIDUxMTUsIDUxMjEsIDUxMjcsIDUxMzIsIDUxMzcsIDUxNDQsIDUxNTEsIDUxNTUsIAorICAgIDUxNjEsIDUxNjgsIDAsIDAsIDUxNzUsIDUxNzgsIDUxODcsIDUxOTYsIDUyMDcsIDUyMTEsIDAsIDAsIDAsIDAsIDUyMTYsIAorICAgIDUyMTksIDUyMjQsIDUyMzIsIDUyMzcsIDUyNDUsIDUyNTMsIDAsIDUyNjEsIDAsIDUyNjksIDUyNzcsIDUyODUsIDUyOTYsIAorICAgIDUzMDEsIDUzMDYsIDUzMTEsIDUzMTYsIDUzMjEsIDUzMjYsIDUzMzEsIDUzMzYsIDUzNDEsIDUzNDYsIDUzNTEsIDUzNTYsIAorICAgIDUzNjEsIDUzNjYsIDUzNzEsIDUzNzYsIDAsIDUzODEsIDUzODYsIDUzOTEsIDUzOTYsIDU0MDEsIDU0MDYsIDU0MTEsIAorICAgIDU0MTYsIDU0MjQsIDU0MzIsIDU0NDAsIDU0NDgsIDU0NTYsIDU0NjQsIDU0NzUsIDU0ODAsIDU0ODUsIDU0OTAsIDU0OTUsIAorICAgIDU1MDAsIDU1MDUsIDU1MTAsIDU1MTUsIDU1MjAsIDU1MjUsIDU1MzAsIDU1MzUsIDU1NDAsIDU1NDUsIDU1NTAsIDU1NTUsIAorICAgIDU1NjAsIDU1NjYsIDU1NzEsIDU1NzYsIDU1ODEsIDU1ODYsIDU1OTEsIDU1OTYsIDU2MDEsIDU2MDksIDU2MTcsIDU2MjUsIAorICAgIDU2MzMsIDU2NDEsIDU2NDYsIDU2NTAsIDU2NTQsIDU2NjEsIDU2NzEsIDU2ODEsIDU2ODUsIDU2ODksIDU2OTMsIDU2OTksIAorICAgIDU3MDYsIDU3MTAsIDU3MTUsIDU3MTksIDU3MjQsIDU3MjgsIDU3MzMsIDU3MzcsIDU3NDIsIDU3NDcsIDU3NTIsIDU3NTcsIAorICAgIDU3NjIsIDU3NjcsIDU3NzIsIDU3NzcsIDU3ODIsIDU3ODcsIDU3OTIsIDU3OTcsIDU4MDIsIDU4MDcsIDU4MTIsIDU4MTYsIAorICAgIDU4MjAsIDU4MjYsIDU4MzAsIDU4MzUsIDU4NDEsIDU4NDksIDU4NTQsIDU4NTksIDU4NjYsIDU4NzEsIDU4NzYsIDU4ODMsIAorICAgIDU4OTIsIDU5MDEsIDU5MTIsIDU5MjAsIDU5MjUsIDU5MzAsIDU5MzUsIDU5NDIsIDU5NDcsIDU5NTMsIDU5NTgsIDU5NjMsIAorICAgIDU5NjgsIDU5NzMsIDU5NzgsIDU5ODMsIDU5OTEsIDU5OTcsIDYwMDIsIDYwMDYsIDYwMTEsIDYwMTYsIDYwMjEsIDYwMjYsIAorICAgIDYwMzEsIDYwMzYsIDYwNDEsIDYwNDUsIDYwNTEsIDYwNTUsIDYwNjAsIDYwNjUsIDYwNzAsIDYwNzQsIDYwNzksIDYwODQsIAorICAgIDYwODksIDYwOTQsIDYwOTgsIDYxMDMsIDYxMDcsIDYxMTIsIDYxMTcsIDYxMjIsIDYxMjcsIDYxMzMsIDYxMzgsIDYxNDQsIAorICAgIDYxNDgsIDYxNTMsIDYxNTcsIDYxNjEsIDYxNjYsIDYxNzEsIDYxNzYsIDYxODEsIDYxODYsIDYxOTEsIDYxOTYsIDYyMDAsIAorICAgIDYyMDYsIDYyMTAsIDYyMTUsIDYyMjAsIDYyMjUsIDYyMjksIDYyMzQsIDYyMzksIDYyNDQsIDYyNDksIDYyNTMsIDYyNTgsIAorICAgIDYyNjIsIDYyNjcsIDYyNzIsIDYyNzcsIDYyODIsIDYyODgsIDYyOTMsIDYyOTksIDYzMDMsIDYzMDgsIDYzMTIsIDYzMjAsIAorICAgIDYzMjUsIDYzMzAsIDYzMzUsIDYzNDIsIDYzNDcsIDYzNTMsIDYzNTgsIDYzNjMsIDYzNjgsIDYzNzMsIDYzNzgsIDYzODMsIAorICAgIDYzOTEsIDYzOTcsIDY0MDIsIDY0MDcsIDY0MTIsIDY0MTcsIDY0MjIsIDY0MjgsIDY0MzQsIDY0NDEsIDY0NDgsIDY0NTcsIAorICAgIDY0NjYsIDY0NzMsIDY0ODAsIDY0ODksIDY0OTgsIDY1MDMsIDY1MDgsIDY1MTMsIDY1MTgsIDY1MjMsIDY1MjgsIDY1MzMsIAorICAgIDY1MzgsIDY1NDksIDY1NjAsIDY1NjUsIDY1NzAsIDY1NzcsIDY1ODQsIDY1OTIsIDY2MDAsIDY2MDUsIDY2MTAsIDY2MTUsIAorICAgIDY2MjAsIDY2MjQsIDY2MjgsIDY2MzIsIDY2MzgsIDY2NDQsIDY2NDgsIDY2NTUsIDY2NjAsIDY2NzAsIDY2ODAsIDY2ODYsIAorICAgIDY2OTIsIDY3MDAsIDY3MDgsIDY3MTYsIDY3MjQsIDY3MzEsIDY3MzgsIDY3NDYsIDY3NTQsIDY3NjIsIDY3NzAsIDY3NzgsIAorICAgIDY3ODYsIDY3OTQsIDY4MDIsIDY4MTAsIDY4MTgsIDY4MjUsIDY4MzIsIDY4MzgsIDY4NDQsIDY4NTIsIDY4NjAsIDY4NjcsIAorICAgIDY4NzQsIDY4ODIsIDY4OTAsIDY4OTYsIDY5MDIsIDY5MTAsIDY5MTgsIDY5MjYsIDY5MzQsIDY5NDAsIDY5NDYsIDY5NTQsIAorICAgIDY5NjIsIDY5NzAsIDY5NzgsIDY5ODUsIDY5OTIsIDcwMDAsIDcwMDgsIDcwMTYsIDcwMjQsIDcwMjksIDcwMzQsIDcwNDEsIAorICAgIDcwNDgsIDcwNTgsIDcwNjgsIDcwNzIsIDcwODAsIDcwODgsIDcwOTUsIDcxMDIsIDcxMTAsIDcxMTgsIDcxMjUsIDcxMzIsIAorICAgIDcxNDAsIDcxNDgsIDcxNTUsIDcxNjIsIDcxNzAsIDcxNzgsIDcxODMsIDcxOTAsIDcxOTcsIDcyMDQsIDcyMTEsIDcyMTcsIAorICAgIDcyMjMsIDcyMzEsIDcyMzksIDcyNDQsIDcyNDksIDcyNTcsIDcyNjUsIDcyNzMsIDcyODEsIDcyODksIDcyOTcsIDczMDQsIAorICAgIDczMTEsIDczMTksIDczMjcsIDczMzUsIDczNDMsIDczNTAsIDczNTcsIDczNjMsIDczNjksIDczNzgsIDczODcsIDczOTQsIAorICAgIDc0MDEsIDc0MDgsIDc0MTUsIDc0MjIsIDc0MjksIDc0MzYsIDc0NDMsIDc0NTEsIDc0NTksIDc0NjcsIDc0NzUsIDc0ODMsIAorICAgIDc0OTEsIDc1MDEsIDc1MTEsIDc1MTgsIDc1MjUsIDc1MzIsIDc1MzksIDc1NDYsIDc1NTMsIDc1NjAsIDc1NjcsIDc1NzQsIAorICAgIDc1ODEsIDc1ODgsIDc1OTUsIDc2MDIsIDc2MDksIDc2MTYsIDc2MjMsIDc2MzAsIDc2MzcsIDc2NDQsIDc2NTEsIDc2NTgsIAorICAgIDc2NjUsIDc2NzIsIDc2NzksIDc2ODQsIDc2ODksIDc2OTQsIDc2OTksIDc3MDQsIDc3MDksIDc3MTQsIDc3MTksIDc3MjQsIAorICAgIDc3MjksIDc3MzUsIDc3NDEsIDc3NDksIDc3NTcsIDc3NjUsIDc3NzMsIDc3ODEsIDc3ODksIDc3OTcsIDc4MDUsIDc4MTMsIAorICAgIDc4MjEsIDc4MjYsIDc4MzEsIDc4MzYsIDc4NDEsIDc4NDksIDAsIDc4NTcsIDc4NjIsIDc4NjcsIDc4NzIsIDc4NzcsIAorICAgIDc4ODIsIDc4ODcsIDc4OTIsIDc4OTcsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzEsIDc5MzYsIAorICAgIDc5NDEsIDc5NDYsIDc5NTEsIDc5NTYsIDc5NjEsIDc5NjYsIDc5NzEsIDc5NzYsIDc5ODEsIDc5ODYsIDc5OTEsIDc5OTYsIAorICAgIDgwMDEsIDgwMDYsIDgwMTEsIDgwMTYsIDgwMjEsIDgwMjYsIDgwMzEsIDgwMzYsIDgwNDEsIDAsIDAsIDgwNDYsIDgwNTMsIAorICAgIDgwNTYsIDgwNjAsIDgwNjQsIDgwNjcsIDgwNzEsIDAsIDgwNzUsIDgwODAsIDgwODUsIDgwOTAsIDgwOTUsIDgxMDAsIAorICAgIDgxMDUsIDgxMTAsIDgxMTUsIDgxMTksIDgxMjQsIDgxMjksIDgxMzQsIDgxMzksIDgxNDQsIDgxNDksIDgxNTQsIDgxNTksIAorICAgIDgxNjQsIDgxNjksIDgxNzQsIDgxNzksIDgxODQsIDgxODksIDgxOTQsIDgxOTksIDgyMDQsIDgyMDksIDgyMTQsIDgyMTksIAorICAgIDgyMjQsIDgyMjksIDgyMzQsIDgyMzksIDgyNDQsIDgyNDksIDgyNTQsIDgyNTksIDgyNjQsIDAsIDgyNzEsIDgyNzYsIDAsIAorICAgIDAsIDgyNzksIDgyODUsIDgyOTEsIDAsIDgyOTUsIDgzMDAsIDgzMDUsIDgzMTAsIDgzMTcsIDgzMjQsIDgzMjksIDgzMzQsIAorICAgIDgzMzksIDgzNDQsIDgzNDksIDgzNTQsIDgzNTksIDgzNjYsIDgzNzEsIDgzNzgsIDgzODUsIDgzOTAsIDgzOTcsIDg0MDIsIAorICAgIDg0MDcsIDg0MTIsIDg0MTksIDg0MjQsIDg0MjksIDg0MzYsIDg0NDUsIDg0NTAsIDg0NTUsIDg0NjAsIDg0NjUsIDg0NzEsIAorICAgIDg0NzYsIDg0ODMsIDg0OTAsIDg0OTcsIDg1MDIsIDg1MDcsIDg1MTIsIDg1MTcsIDg1MjIsIDg1MjcsIDg1MzcsIDg1NDIsIAorICAgIDg1NTEsIDg1NTYsIDg1NjEsIDg1NjYsIDg1NzEsIDg1NzgsIDg1ODUsIDg1OTIsIDg1OTgsIDg2MDQsIDg2MTEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDg2MTgsIDg2MjIsIDg2MjYsIDg2MzAsIDg2MzQsIDg2MzgsIDg2NDIsIDg2NDYsIDg2NTAsIAorICAgIDg2NTQsIDg2NTgsIDg2NjMsIDg2NjcsIDg2NzEsIDg2NzYsIDg2ODAsIDg2ODUsIDg2ODksIDg2OTMsIDg2OTcsIDg3MDIsIAorICAgIDg3MDYsIDg3MTEsIDg3MTUsIDg3MTksIDg3MjMsIDg3MjcsIDAsIDAsIDAsIDAsIDAsIDg3MzEsIDg3MzgsIDg3NDYsIAorICAgIDg3NTMsIDg3NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NjMsIDg3NjYsIDg3NzAsIDg3NzUsIAorICAgIDg3NzksIDg3ODMsIDg3ODcsIDg3OTMsIDg3OTksIDg4MDIsIDg4MDksIDg4MTgsIDg4MjEsIDg4MjQsIDg4MjksIDg4MzUsIAorICAgIDg4MzksIDg4NDcsIDg4NTMsIDg4NTksIDg4NjcsIDg4NzEsIDg4NzYsIDg4ODcsIDg4OTIsIDg4OTYsIDg5MDAsIDg5MDQsIAorICAgIDg5MDcsIDAsIDg5MTAsIDg5MTcsIDg5MjEsIDg5MjcsIDg5MzEsIDg5MzgsIDg5NDUsIDg5NTMsIDg5NjAsIDg5NjcsIAorICAgIDg5NzEsIDg5NzUsIDg5ODEsIDg5ODUsIDg5ODksIDg5OTMsIDg5OTcsIDkwMDEsIDkwMDUsIDkwMDksIDkwMTMsIDkwMTcsIAorICAgIDkwMjEsIDkwMjUsIDkwMjksIDkwMzMsIDkwMzcsIDkwNDEsIDkwNDUsIDkwNDksIDkwNTcsIDkwNjUsIDkwNzUsIDkwODQsIAorICAgIDkwOTMsIDkwOTYsIDkxMDAsIDkxMDQsIDkxMDgsIDkxMTIsIDkxMTYsIDkxMjAsIDkxMjQsIDkxMjgsIDkxMzMsIDkxMzcsIAorICAgIDkxNDAsIDkxNDMsIDkxNDYsIDkxNDksIDkxNTIsIDkxNTUsIDkxNTgsIDkxNjEsIDkxNjUsIDkxNjksIDkxNzMsIDkxNzgsIAorICAgIDkxODMsIDkxODksIDkxOTIsIDkxOTksIDkyMDgsIDkyMTMsIDkyMTgsIDkyMjUsIDkyMzEsIDkyMzYsIDkyNDAsIDkyNDQsIAorICAgIDkyNDgsIDkyNTIsIDkyNTYsIDkyNjAsIDkyNjUsIDkyNjksIDkyNzQsIDkyNzgsIDkyODMsIDkyODgsIDkyOTUsIDkzMDEsIAorICAgIDkzMDcsIDkzMTMsIDkzMTgsIDkzMjcsIDkzMzYsIDkzNDEsIDkzNDgsIDkzNTUsIDkzNjIsIDkzNjksIDkzNzMsIDkzNzcsIAorICAgIDkzODEsIDkzODgsIDkzOTgsIDk0MDIsIDk0MDYsIDk0MTAsIDk0MTcsIDk0MjUsIDk0MjksIDk0MzMsIDk0NDAsIDk0NDQsIAorICAgIDk0NDgsIDk0NTIsIDk0NTksIDk0NjYsIDk0NzgsIDk0ODIsIDk0ODYsIDk0OTAsIDk1MDAsIDk1MDksIDk1MTMsIDk1MjEsIAorICAgIDk1MjgsIDk1MzUsIDk1NDQsIDk1NTUsIDk1NjMsIDk1NjcsIDk1NzYsIDk1ODcsIDk1OTUsIDk2MDgsIDk2MTYsIDk2MjQsIAorICAgIDk2MzIsIDk2NDAsIDk2NDYsIDk2NTUsIDk2NjIsIDk2NjYsIDk2NzQsIDk2NzgsIDk2ODUsIDk2OTMsIDk2OTcsIDk3MDMsIAorICAgIDk3MTAsIDk3MTcsIDk3MjEsIDk3MjksIDk3MzMsIDk3NDAsIDk3NDQsIDk3NTIsIDk3NTYsIDk3NjQsIDk3NzIsIDk3NzksIAorICAgIDk3ODcsIDk3OTUsIDk4MDIsIDk4MDgsIDk4MTIsIDk4MTksIDk4MjcsIDk4MzMsIDk4NDAsIDk4NDcsIDk4NTMsIDk4NjMsIAorICAgIDk4NzEsIDk4NzgsIDk4ODQsIDk4ODgsIDk4OTEsIDk4OTUsIDk5MDEsIDk5MDksIDk5MTMsIDk5MTksIDk5MjUsIDk5MzIsIAorICAgIDk5MzksIDk5NDIsIDk5NDksIDk5NTQsIDk5NjMsIDk5NjgsIDk5NzIsIDk5ODUsIDk5OTgsIDEwMDA0LCAxMDAxMSwgCisgICAgMTAwMTYsIDEwMDIyLCAxMDAyNywgMTAwMzMsIDEwMDQzLCAxMDA1MCwgMTAwNTksIDEwMDY5LCAxMDA3NSwgMTAwODAsIAorICAgIDEwMDg1LCAxMDA4OSwgMTAwOTMsIDEwMDk4LCAxMDEwMywgMTAxMDksIDEwMTE3LCAxMDEyNSwgMTAxMzYsIDEwMTQxLCAKKyAgICAxMDE1MCwgMTAxNTksIDEwMTY2LCAxMDE3MiwgMTAxNzgsIDEwMTg0LCAxMDE5MCwgMTAxOTYsIDEwMjAyLCAxMDIwOSwgCisgICAgMTAyMTUsIDEwMjIyLCAxMDIyOSwgMTAyMzYsIDEwMjQzLCAxMDI0OSwgMTAyNTcsIDEwMjY2LCAxMDI3MywgMTAyODEsIAorICAgIDEwMjg5LCAxMDI5NSwgMTAzMDEsIDEwMzA3LCAxMDMxNSwgMTAzMjMsIDEwMzMzLCAxMDM0MywgMTAzNDcsIDEwMzUzLCAKKyAgICAxMDM1OSwgMCwgMTAzNjUsIDEwMzcwLCAxMDM3NSwgMTAzODIsIDEwMzg3LCAxMDM5MiwgMTAzOTksIDEwNDA0LCAxMDQxMywgCisgICAgMTA0MTgsIDEwNDIzLCAxMDQyOCwgMTA0MzMsIDEwNDM4LCAxMDQ0NSwgMTA0NTAsIDEwNDU3LCAxMDQ2MiwgMTA0NjcsIAorICAgIDEwNDcyLCAxMDQ3NywgMTA0ODIsIDEwNDg4LCAxMDQ5MiwgMTA0OTcsIDEwNTA0LCAxMDUwOSwgMTA1MTQsIDEwNTE5LCAKKyAgICAxMDUyNCwgMTA1MjksIDEwNTM2LCAxMDU0MywgMTA1NTAsIDEwNTU1LCAxMDU2MCwgMTA1NjYsIDEwNTcxLCAxMDU3NiwgCisgICAgMTA1ODIsIDEwNTg3LCAxMDU5MiwgMTA2MDAsIDEwNjA4LCAxMDYxMywgMTA2MTgsIDEwNjI0LCAxMDYyOSwgMTA2MzQsIAorICAgIDEwNjM4LCAxMDY0NCwgMTA2NDgsIDEwNjUyLCAxMDY1OCwgMTA2NjQsIDEwNjY5LCAxMDY3NCwgMTA2ODEsIDEwNjg4LCAKKyAgICAxMDY5MiwgMCwgMCwgMTA2OTYsIDEwNzAzLCAxMDcxMCwgMTA3MTcsIDEwNzI3LCAxMDczOSwgMTA3NTAsIDEwNzY2LCAKKyAgICAxMDc3OCwgMTA3ODksIDEwNzk3LCAxMDgwNCwgMTA4MTQsIDEwODI5LCAxMDg0MCwgMTA4NDYsIDEwODU1LCAxMDg2MywgCisgICAgMTA4NzQsIDEwODg0LCAxMDg5MiwgMTA5MDMsIDEwOTEwLCAxMDkxOCwgMTA5MjksIDEwOTM1LCAxMDk0MSwgMTA5NDksIAorICAgIDEwOTU3LCAxMDk2NSwgMTA5NzEsIDEwOTgxLCAxMDk4OSwgMTA5OTksIDExMDA5LCAxMTAyMiwgMTEwMzYsIDExMDUwLCAKKyAgICAxMTA2MCwgMTEwNzEsIDExMDgyLCAxMTA5NSwgMTExMDgsIDExMTIyLCAxMTEzNCwgMTExNDYsIDExMTU5LCAxMTE3MiwgCisgICAgMTExODQsIDExMTk3LCAxMTIwNiwgMTEyMTQsIDExMjE5LCAxMTIyNCwgMTEyMjksIDExMjM0LCAxMTIzOSwgMTEyNDQsIAorICAgIDExMjQ5LCAxMTI1NCwgMTEyNTksIDExMjY0LCAxMTI2OSwgMTEyNzQsIDExMjc5LCAxMTI4NCwgMTEyODksIDExMjk0LCAKKyAgICAxMTI5OSwgMTEzMDQsIDExMzA5LCAxMTMxNCwgMTEzMTksIDExMzI0LCAxMTMyOSwgMTEzMzQsIDExMzM5LCAxMTM0NCwgCisgICAgMTEzNDksIDExMzU0LCAxMTM1OSwgMTEzNjQsIDExMzY5LCAxMTM3NCwgMTEzNzgsIDExMzgzLCAxMTM4OCwgMTEzOTMsIAorICAgIDExMzk4LCAxMTQwMywgMTE0MDcsIDExNDExLCAxMTQxNSwgMTE0MTksIDExNDIzLCAxMTQyNywgMTE0MzEsIDExNDM1LCAKKyAgICAxMTQzOSwgMTE0NDMsIDExNDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ1MiwgCisgICAgMTE0NTcsIDExNDYxLCAxMTQ2NSwgMTE0NjksIDExNDczLCAxMTQ3NywgMTE0ODEsIDExNDg2LCAxMTQ5MCwgMTE0OTUsIAorICAgIDExNDk5LCAxMTUwNCwgMTE1MDgsIDExNTEyLCAxMTUxNiwgMTE1MjEsIDExNTI1LCAxMTUzMCwgMTE1MzUsIDExNTQwLCAKKyAgICAxMTU0NCwgMTE1NDksIDExNTU0LCAxMTU1OSwgMTE1NjQsIDExNTY5LCAxMTU3NCwgMTE1NzksIDExNTg0LCAxMTU4OSwgCisgICAgMTE1OTMsIDExNTk3LCAxMTYwNCwgMTE2MDgsIDExNjEzLCAxMTYxNywgMTE2MjEsIDExNjI2LCAxMTYzMCwgMTE2MzcsIAorICAgIDExNjQ0LCAxMTY1MSwgMTE2NTgsIDExNjY2LCAxMTY3NCwgMTE2ODMsIDExNjkxLCAxMTY5OCwgMTE3MDUsIDExNzEzLCAKKyAgICAxMTcxOSwgMTE3MjUsIDExNzMxLCAxMTczNywgMTE3NDQsIDExNzQ5LCAxMTc1MywgMTE3NTgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExNzYyLCAxMTc2NywgMTE3NzIsIDExNzc3LCAxMTc4MiwgMTE3ODcsIDExNzkyLCAxMTc5NywgMTE4MDIsIDExODA3LCAKKyAgICAxMTgxMiwgMTE4MTcsIDExODIyLCAxMTgyNywgMTE4MzIsIDExODM3LCAxMTg0MiwgMTE4NDcsIDExODUyLCAxMTg1NywgCisgICAgMTE4NjIsIDExODY3LCAxMTg3MiwgMTE4NzcsIDExODgyLCAxMTg4NywgMTE4OTIsIDExOTAwLCAxMTkwNywgMTE5MTMsIAorICAgIDExOTE4LCAxMTkyNiwgMTE5MzMsIDExOTM5LCAxMTk0NiwgMTE5NTIsIDExOTU3LCAxMTk2NCwgMTE5NzEsIDExOTc3LCAKKyAgICAxMTk4MiwgMTE5ODcsIDExOTkzLCAxMTk5OCwgMTIwMDMsIDEyMDA5LCAwLCAwLCAxMjAxNCwgMTIwMjAsIDEyMDI2LCAKKyAgICAxMjAzMiwgMTIwMzgsIDEyMDQ0LCAxMjA1MCwgMTIwNTUsIDEyMDYzLCAxMjA2OSwgMTIwNzUsIDEyMDgxLCAxMjA4NywgCisgICAgMTIwOTMsIDEyMTAxLCAwLCAxMjEwNywgMTIxMTIsIDEyMTE3LCAxMjEyMiwgMTIxMjcsIDEyMTMyLCAxMjEzNywgMTIxNDIsIAorICAgIDEyMTQ3LCAxMjE1MiwgMTIxNTcsIDEyMTYyLCAxMjE2NywgMTIxNzIsIDEyMTc3LCAxMjE4MiwgMTIxODcsIDEyMTkyLCAKKyAgICAxMjE5NywgMTIyMDIsIDEyMjA3LCAxMjIxMiwgMTIyMTcsIDEyMjIyLCAxMjIyNywgMTIyMzIsIDEyMjM3LCAxMjI0MiwgMCwgCisgICAgMCwgMTIyNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjUxLCAxMjI2MCwgCisgICAgMTIyNjgsIDEyMjc1LCAxMjI4MywgMTIyOTUsIDEyMzAyLCAxMjMwOSwgMTIzMTYsIDEyMzI4LCAxMjMzOSwgMTIzNDYsIAorICAgIDEyMzU0LCAxMjM2MCwgMTIzNjUsIDEyMzczLCAxMjM4MSwgMTIzODksIDEyMzk1LCAxMjQwNSwgMTI0MTMsIDAsIDEyNDIwLCAKKyAgICAxMjQyOCwgMTI0MzYsIDEyNDQ1LCAxMjQ1NCwgMTI0NjcsIDEyNDczLCAxMjQ3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0ODUsIDEyNDkyLCAxMjQ5NywgMTI1MDIsIAorICAgIDEyNTA3LCAxMjUxNSwgMTI1MjMsIDEyNTMwLCAxMjUzNywgMTI1NDQsIDEyNTUxLCAxMjU1OCwgMTI1NjUsIDEyNTcyLCAKKyAgICAxMjU3OCwgMTI1ODYsIDEyNTkyLCAxMjU5NywgMTI2MDIsIDEyNjA3LCAxMjYxMiwgMTI2MTcsIDEyNjIyLCAxMjYyNywgCisgICAgMTI2MzIsIDEyNjM3LCAxMjY0MiwgMTI2NDcsIDEyNjUyLCAxMjY1NiwgMTI2NjAsIDEyNjY0LCAxMjY2OSwgMTI2NzUsIAorICAgIDEyNjgxLCAxMjY4NywgMTI2OTIsIDEyNjk3LCAxMjcwMiwgMTI3MDcsIDEyNzEzLCAxMjcyMiwgMTI3MzAsIDEyNzM2LCAKKyAgICAxMjc0NCwgMTI3NTAsIDEyNzU0LCAxMjc1OCwgMTI3NjIsIDEyNzY3LCAxMjc3MCwgMTI3NzQsIDEyNzc3LCAxMjc4MSwgCisgICAgMTI3ODQsIDEyNzg4LCAxMjc5MiwgMTI3OTYsIDEyODAxLCAxMjgwNiwgMTI4MDksIDEyODEzLCAxMjgxOCwgMTI4MjMsIAorICAgIDEyODI2LCAxMjgzMCwgMTI4MzMsIDEyODM3LCAxMjg0MSwgMTI4NDUsIDEyODQ5LCAxMjg1MywgMTI4NTcsIDEyODYxLCAKKyAgICAxMjg2NSwgMTI4NjksIDEyODczLCAxMjg3NywgMTI4ODEsIDEyODg1LCAxMjg4OSwgMTI4OTMsIDEyODk3LCAxMjkwMSwgCisgICAgMTI5MDUsIDEyOTA4LCAxMjkxMiwgMTI5MTUsIDEyOTE5LCAxMjkyMywgMTI5MjcsIDEyOTMwLCAxMjkzMywgMTI5MzcsIAorICAgIDEyOTQxLCAxMjk0NCwgMTI5NDgsIDEyOTUyLCAxMjk1NiwgMTI5NjAsIDEyOTY0LCAxMjk2OCwgMTI5NzEsIDEyOTc2LCAKKyAgICAxMjk4MSwgMTI5ODUsIDEyOTg5LCAxMjk5NCwgMTI5OTgsIDEzMDAzLCAxMzAwNywgMTMwMTIsIDEzMDE3LCAxMzAyMywgCisgICAgMTMwMjksIDEzMDM1LCAxMzAzOSwgMTMwNDQsIDEzMDUwLCAxMzA1NiwgMTMwNjAsIDEzMDY1LCAxMzA2OSwgMTMwNzUsIAorICAgIDEzMDgwLCAxMzA4MywgMTMwODksIDEzMDk1LCAxMzEwMCwgMTMxMDUsIDEzMTEyLCAxMzExNywgMTMxMjIsIDEzMTI2LCAKKyAgICAxMzEzMCwgMTMxMzQsIDEzMTM4LCAxMzE0MiwgMTMxNDYsIDEzMTUwLCAxMzE1NCwgMTMxNTksIDEzMTY0LCAxMzE2OSwgCisgICAgMTMxNzUsIDEzMTc4LCAxMzE4MiwgMTMxODYsIDEzMTg5LCAxMzE5MiwgMTMxOTUsIDEzMTk4LCAxMzIwMSwgMTMyMDQsIAorICAgIDEzMjA4LCAxMzIxMSwgMTMyMTUsIDEzMjE5LCAxMzIyNiwgMTMyMzEsIDEzMjM1LCAxMzIzOSwgMTMyNDMsIDEzMjQ3LCAKKyAgICAxMzI1MSwgMTMyNTcsIDEzMjYxLCAxMzI2NSwgMTMyNjksIDEzMjczLCAxMzI3OSwgMTMyODMsIDEzMjg3LCAxMzI5MCwgCisgICAgMTMyOTQsIDEzMjk4LCAwLCAxMzMwMiwgMTMzMDUsIDEzMzA5LCAxMzMxMiwgMTMzMTYsIDEzMzE5LCAxMzMyMywgMTMzMjcsIAorICAgIDAsIDAsIDEzMzMxLCAxMzMzNCwgMCwgMCwgMTMzMzgsIDEzMzQxLCAxMzM0NSwgMTMzNDgsIDEzMzUyLCAxMzM1NiwgCisgICAgMTMzNjAsIDEzMzY0LCAxMzM2OCwgMTMzNzIsIDEzMzc2LCAxMzM4MCwgMTMzODQsIDEzMzg4LCAxMzM5MiwgMTMzOTYsIAorICAgIDEzNDAwLCAxMzQwNCwgMTM0MDgsIDEzNDEyLCAxMzQxNiwgMTM0MjAsIDAsIDEzNDIzLCAxMzQyNiwgMTM0MzAsIDEzNDM0LCAKKyAgICAxMzQzOCwgMTM0NDEsIDEzNDQ0LCAwLCAxMzQ0OCwgMCwgMCwgMCwgMTM0NTEsIDEzNDU1LCAxMzQ1OSwgMTM0NjMsIDAsIDAsIAorICAgIDEzNDY2LCAxMzQ3MCwgMTM0NzQsIDEzNDc5LCAxMzQ4MywgMTM0ODgsIDEzNDkyLCAxMzQ5NywgMTM1MDIsIDAsIDAsIAorICAgIDEzNTA4LCAxMzUxMiwgMCwgMCwgMTM1MTcsIDEzNTIxLCAxMzUyNiwgMTM1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNTM2LCAwLCAwLCAwLCAwLCAxMzU0MiwgMTM1NDYsIDAsIDEzNTUwLCAxMzU1NCwgMTM1NTksIDEzNTY0LCAxMzU2OSwgMCwgCisgICAgMCwgMTM1NzUsIDEzNTc5LCAxMzU4MiwgMTM1ODUsIDEzNTg4LCAxMzU5MSwgMTM1OTQsIDEzNTk3LCAxMzYwMSwgMTM2MDQsIAorICAgIDEzNjA4LCAxMzYxNiwgMTM2MjUsIDEzNjI5LCAxMzYzMywgMTM2MzksIDEzNjQ1LCAxMzY1MSwgMTM2NTcsIDEzNjcxLCAKKyAgICAxMzY3OCwgMTM2ODEsIDAsIDAsIDAsIDAsIDAsIDEzNjg1LCAxMzY5MiwgMTM2OTcsIDAsIDEzNzAyLCAxMzcwNiwgMTM3MTEsIAorICAgIDEzNzE1LCAxMzcyMCwgMTM3MjQsIDAsIDAsIDAsIDAsIDEzNzI5LCAxMzczNCwgMCwgMCwgMTM3MzksIDEzNzQ0LCAxMzc0OSwgCisgICAgMTM3NTMsIDEzNzU4LCAxMzc2MywgMTM3NjgsIDEzNzczLCAxMzc3OCwgMTM3ODMsIDEzNzg4LCAxMzc5MywgMTM3OTgsIAorICAgIDEzODAzLCAxMzgwOCwgMTM4MTMsIDEzODE4LCAxMzgyMywgMTM4MjgsIDEzODMzLCAxMzgzOCwgMTM4NDMsIDAsIDEzODQ3LCAKKyAgICAxMzg1MSwgMTM4NTYsIDEzODYxLCAxMzg2NiwgMTM4NzAsIDEzODc0LCAwLCAxMzg3OSwgMTM4ODMsIDAsIDEzODg4LCAKKyAgICAxMzg5MywgMCwgMTM4OTgsIDEzOTAzLCAwLCAwLCAxMzkwNywgMCwgMTM5MTIsIDEzOTE4LCAxMzkyMywgMTM5MjksIAorICAgIDEzOTM0LCAwLCAwLCAwLCAwLCAxMzk0MCwgMTM5NDYsIDAsIDAsIDEzOTUyLCAxMzk1OCwgMTM5NjQsIDAsIDAsIDAsIAorICAgIDEzOTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzk3NCwgMTM5NzksIDEzOTg0LCAxMzk4OSwgMCwgMTM5OTQsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzOTk5LCAxNDAwNCwgMTQwMDgsIDE0MDEyLCAxNDAxNiwgMTQwMjAsIDE0MDI0LCAxNDAyOCwgCisgICAgMTQwMzMsIDE0MDM3LCAxNDA0MiwgMTQwNDYsIDE0MDUwLCAxNDA1NCwgMTQwNTgsIDE0MDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNDA2OSwgMTQwNzQsIDE0MDc5LCAwLCAxNDA4NCwgMTQwODgsIDE0MDkzLCAxNDA5NywgMTQxMDIsIAorICAgIDE0MTA2LCAxNDExMSwgMTQxMTYsIDE0MTIxLCAwLCAxNDEyNywgMTQxMzEsIDE0MTM2LCAwLCAxNDE0MiwgMTQxNDYsIAorICAgIDE0MTUxLCAxNDE1NSwgMTQxNjAsIDE0MTY1LCAxNDE3MCwgMTQxNzUsIDE0MTgwLCAxNDE4NSwgMTQxOTAsIDE0MTk1LCAKKyAgICAxNDIwMCwgMTQyMDUsIDE0MjEwLCAxNDIxNSwgMTQyMjAsIDE0MjI1LCAxNDIzMCwgMTQyMzUsIDE0MjQwLCAxNDI0NSwgMCwgCisgICAgMTQyNDksIDE0MjUzLCAxNDI1OCwgMTQyNjMsIDE0MjY4LCAxNDI3MiwgMTQyNzYsIDAsIDE0MjgxLCAxNDI4NSwgMCwgCisgICAgMTQyOTAsIDE0Mjk1LCAxNDMwMCwgMTQzMDUsIDE0MzEwLCAwLCAwLCAxNDMxNCwgMTQzMTksIDE0MzI0LCAxNDMzMCwgCisgICAgMTQzMzUsIDE0MzQxLCAxNDM0NiwgMTQzNTIsIDE0MzU4LCAxNDM2NSwgMCwgMTQzNzIsIDE0Mzc3LCAxNDM4MywgMCwgCisgICAgMTQzOTAsIDE0Mzk1LCAxNDQwMSwgMCwgMCwgMTQ0MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE0NDEwLCAxNDQxNiwgMTQ0MjIsIDE0NDI4LCAwLCAwLCAxNDQzNSwgMTQ0NDAsIDE0NDQ0LCAxNDQ0OCwgCisgICAgMTQ0NTIsIDE0NDU2LCAxNDQ2MCwgMTQ0NjQsIDE0NDY5LCAxNDQ3MywgMTQ0NzgsIDE0NDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNDQ4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0OTMsIDE0NDk4LCAxNDUwMywgMCwgMTQ1MDgsIDE0NTEyLCAKKyAgICAxNDUxNywgMTQ1MjEsIDE0NTI2LCAxNDUzMCwgMTQ1MzUsIDE0NTQwLCAwLCAwLCAxNDU0NSwgMTQ1NDksIDAsIDAsIAorICAgIDE0NTU0LCAxNDU1OCwgMTQ1NjMsIDE0NTY3LCAxNDU3MiwgMTQ1NzcsIDE0NTgyLCAxNDU4NywgMTQ1OTIsIDE0NTk3LCAKKyAgICAxNDYwMiwgMTQ2MDcsIDE0NjEyLCAxNDYxNywgMTQ2MjIsIDE0NjI3LCAxNDYzMiwgMTQ2MzcsIDE0NjQyLCAxNDY0NywgCisgICAgMTQ2NTIsIDE0NjU3LCAwLCAxNDY2MSwgMTQ2NjUsIDE0NjcwLCAxNDY3NSwgMTQ2ODAsIDE0Njg0LCAxNDY4OCwgMCwgCisgICAgMTQ2OTMsIDE0Njk3LCAwLCAxNDcwMiwgMTQ3MDcsIDE0NzEyLCAxNDcxNywgMTQ3MjIsIDAsIDAsIDE0NzI2LCAxNDczMSwgCisgICAgMTQ3MzYsIDE0NzQyLCAxNDc0NywgMTQ3NTMsIDE0NzU4LCAxNDc2NCwgMTQ3NzAsIDAsIDAsIDE0Nzc3LCAxNDc4MiwgMCwgCisgICAgMCwgMTQ3ODgsIDE0NzkzLCAxNDc5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4MDQsIDE0ODExLCAwLCAwLCAwLCAwLCAKKyAgICAxNDgxOCwgMTQ4MjMsIDAsIDE0ODI4LCAxNDgzMywgMTQ4MzksIDE0ODQ1LCAxNDg1MSwgMCwgMCwgMTQ4NTgsIDE0ODYzLCAKKyAgICAxNDg2NywgMTQ4NzEsIDE0ODc1LCAxNDg3OSwgMTQ4ODMsIDE0ODg3LCAxNDg5MiwgMTQ4OTYsIDE0OTAxLCAxNDkwNSwgCisgICAgMTQ5MTAsIDE0OTE3LCAxNDkyNCwgMTQ5MzEsIDE0OTM4LCAxNDk0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ5NTIsIDE0OTU2LCAwLCAxNDk2MCwgMTQ5NjMsIDE0OTY3LCAxNDk3MCwgMTQ5NzQsIDE0OTc3LCAwLCAwLCAwLCAKKyAgICAxNDk4MSwgMTQ5ODQsIDE0OTg4LCAwLCAxNDk5MiwgMTQ5OTUsIDE0OTk5LCAxNTAwMywgMCwgMCwgMCwgMTUwMDYsIAorICAgIDE1MDEwLCAwLCAxNTAxNCwgMCwgMTUwMTgsIDE1MDIyLCAwLCAwLCAwLCAxNTAyNiwgMTUwMzAsIDAsIDAsIDAsIDE1MDM0LCAKKyAgICAxNTAzNywgMTUwNDEsIDAsIDAsIDAsIDE1MDQ0LCAxNTA0NywgMTUwNTAsIDE1MDU0LCAxNTA1OCwgMTUwNjEsIDE1MDY1LCAKKyAgICAxNTA2OSwgMTUwNzMsIDE1MDc3LCAxNTA4MSwgMTUwODUsIDAsIDAsIDAsIDAsIDE1MDg4LCAxNTA5MywgMTUwOTcsIAorICAgIDE1MTAyLCAxNTEwNiwgMCwgMCwgMCwgMTUxMTEsIDE1MTE1LCAxNTEyMCwgMCwgMTUxMjUsIDE1MTI5LCAxNTEzNCwgCisgICAgMTUxMzksIDAsIDAsIDE1MTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTUxNTIsIDE1MTU2LCAxNTE1OSwgMTUxNjIsIDE1MTY1LCAxNTE2OCwgMTUxNzEsIDE1MTc0LCAKKyAgICAxNTE3OCwgMTUxODEsIDE1MTg1LCAxNTE4OSwgMTUxOTQsIDE1MTk5LCAxNTIwMywgMTUyMDcsIDE1MjExLCAxNTIxNSwgCisgICAgMTUyMTksIDE1MjI0LCAxNTIyOCwgMCwgMCwgMCwgMCwgMCwgMTUyMzEsIDE1MjM3LCAxNTI0MSwgMTUyNDUsIDAsIDE1MjQ5LCAKKyAgICAxNTI1MiwgMTUyNTYsIDE1MjU5LCAxNTI2MywgMTUyNjYsIDE1MjcwLCAxNTI3NCwgMCwgMTUyNzgsIDE1MjgxLCAxNTI4NSwgCisgICAgMCwgMTUyODksIDE1MjkyLCAxNTI5NiwgMTUzMDAsIDE1MzAzLCAxNTMwNywgMTUzMTEsIDE1MzE1LCAxNTMxOSwgMTUzMjMsIAorICAgIDE1MzI3LCAxNTMzMSwgMTUzMzUsIDE1MzM5LCAxNTM0MywgMTUzNDcsIDE1MzUxLCAxNTM1NSwgMTUzNTksIDE1MzYzLCAKKyAgICAxNTM2NywgMTUzNzEsIDE1Mzc1LCAwLCAxNTM3OCwgMTUzODEsIDE1Mzg1LCAxNTM4OSwgMTUzOTMsIDE1Mzk2LCAxNTM5OSwgCisgICAgMTU0MDMsIDE1NDA3LCAxNTQxMCwgMTU0MTQsIDE1NDE4LCAxNTQyMiwgMTU0MjYsIDE1NDMwLCAxNTQzNCwgMCwgMCwgMCwgCisgICAgMTU0MzcsIDE1NDQxLCAxNTQ0NiwgMTU0NTAsIDE1NDU1LCAxNTQ1OSwgMTU0NjQsIDE1NDY5LCAwLCAxNTQ3NSwgMTU0NzksIAorICAgIDE1NDg0LCAwLCAxNTQ4OSwgMTU0OTMsIDE1NDk4LCAxNTUwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1MDcsIDE1NTExLCAKKyAgICAwLCAxNTUxNywgMTU1MjEsIDE1NTI1LCAwLCAwLCAwLCAwLCAwLCAxNTUyOSwgMTU1MzQsIDE1NTM5LCAxNTU0NCwgMCwgMCwgCisgICAgMTU1NTAsIDE1NTU0LCAxNTU1NywgMTU1NjAsIDE1NTYzLCAxNTU2NiwgMTU1NjksIDE1NTcyLCAxNTU3NiwgMTU1NzksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTgzLCAxNTU5NiwgMTU2MDgsIDE1NjIwLCAxNTYzMiwgMTU2NDQsIDE1NjU2LCAKKyAgICAxNTY2OCwgMTU2NzIsIDE1Njc5LCAxNTY4NCwgMTU2ODksIDAsIDE1Njk0LCAxNTY5OCwgMTU3MDMsIDE1NzA3LCAxNTcxMiwgCisgICAgMTU3MTYsIDE1NzIxLCAxNTcyNiwgMCwgMTU3MzEsIDE1NzM1LCAxNTc0MCwgMCwgMTU3NDUsIDE1NzQ5LCAxNTc1NCwgCisgICAgMTU3NTksIDE1NzYzLCAxNTc2OCwgMTU3NzMsIDE1Nzc4LCAxNTc4MywgMTU3ODgsIDE1NzkzLCAxNTc5OCwgMTU4MDMsIAorICAgIDE1ODA4LCAxNTgxMywgMTU4MTgsIDE1ODIzLCAxNTgyOCwgMTU4MzMsIDE1ODM4LCAxNTg0MywgMTU4NDgsIDE1ODUzLCAwLCAKKyAgICAxNTg1NywgMTU4NjEsIDE1ODY2LCAxNTg3MSwgMTU4NzYsIDE1ODgwLCAxNTg4NCwgMTU4ODksIDE1ODk0LCAxNTg5OCwgMCwgCisgICAgMTU5MDMsIDE1OTA4LCAxNTkxMywgMTU5MTgsIDE1OTIzLCAwLCAwLCAxNTkyNywgMTU5MzIsIDE1OTM3LCAxNTk0MywgCisgICAgMTU5NDgsIDE1OTU0LCAxNTk1OSwgMTU5NjUsIDE1OTcxLCAwLCAxNTk3OCwgMTU5ODMsIDE1OTg5LCAwLCAxNTk5NSwgCisgICAgMTYwMDAsIDE2MDA2LCAxNjAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwMTcsIDE2MDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNjAyOSwgMCwgMTYwMzQsIDE2MDQwLCAxNjA0NiwgMTYwNTIsIDAsIDAsIDE2MDU5LCAxNjA2NCwgMTYwNjgsIAorICAgIDE2MDcyLCAxNjA3NiwgMTYwODAsIDE2MDg0LCAxNjA4OCwgMTYwOTMsIDE2MDk3LCAwLCAxNjEwMiwgMTYxMDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MTEyLCAxNjExNiwgMTYxMjAsIDAsIDE2MTI0LCAxNjEyNywgCisgICAgMTYxMzEsIDE2MTM0LCAxNjEzOCwgMTYxNDEsIDE2MTQ1LCAxNjE0OSwgMCwgMTYxNTMsIDE2MTU2LCAxNjE2MCwgMCwgCisgICAgMTYxNjQsIDE2MTY3LCAxNjE3MSwgMTYxNzUsIDE2MTc4LCAxNjE4MiwgMTYxODYsIDE2MTkwLCAxNjE5NCwgMTYxOTgsIAorICAgIDE2MjAyLCAxNjIwNiwgMTYyMTAsIDE2MjE0LCAxNjIxOCwgMTYyMjIsIDE2MjI2LCAxNjIzMCwgMTYyMzQsIDE2MjM4LCAKKyAgICAxNjI0MiwgMTYyNDYsIDE2MjUwLCAxNjI1MywgMTYyNTcsIDE2MjYwLCAxNjI2NCwgMTYyNjgsIDE2MjcyLCAxNjI3NSwgCisgICAgMTYyNzgsIDE2MjgyLCAxNjI4NiwgMTYyODksIDE2MjkzLCAxNjI5NywgMTYzMDEsIDE2MzA1LCAxNjMwOSwgMTYzMTMsIAorICAgIDE2MzE2LCAwLCAwLCAxNjMyMCwgMTYzMjQsIDE2MzI5LCAxNjMzMywgMTYzMzgsIDE2MzQyLCAxNjM0NywgMTYzNTIsIDAsIAorICAgIDE2MzU4LCAxNjM2MiwgMTYzNjcsIDAsIDE2MzcyLCAxNjM3NiwgMTYzODEsIDE2Mzg2LCAxNjM5MCwgMTYzOTUsIDAsIDAsIAorICAgIDAsIDAsIDE2Mzk5LCAxNjQwNSwgMTY0MTEsIDE2NDE3LCAxNjQyMywgMTY0MjksIDE2NDM1LCAxNjQ0MSwgMTY0NDcsIAorICAgIDE2NDUzLCAxNjQ1OSwgMTY0NjUsIDE2NDcxLCAxNjQ3NiwgMTY0ODEsIDE2NDg2LCAwLCAwLCAxNjQ5MiwgMTY0OTYsIAorICAgIDE2NDk5LCAxNjUwMiwgMTY1MDUsIDE2NTA4LCAxNjUxMSwgMTY1MTQsIDE2NTE4LCAxNjUyMSwgMTY1MjUsIDE2NTI5LCAKKyAgICAxNjUzNCwgMTY1MzksIDE2NTQ1LCAxNjU1MSwgMTY1NTcsIDE2NTYzLCAxNjU2OSwgMTY1NzUsIDE2NTc5LCAxNjU4NSwgCisgICAgMTY1OTEsIDE2NTk3LCAxNjYwMiwgMTY2MDgsIDAsIDAsIDE2NjE0LCAxNjYxOCwgMCwgMTY2MjIsIDE2NjI2LCAxNjYzMCwgCisgICAgMTY2MzQsIDE2NjM4LCAxNjY0MiwgMTY2NDYsIDE2NjUwLCAxNjY1NCwgMTY2NTgsIDE2NjYyLCAxNjY2NiwgMTY2NzAsIAorICAgIDE2Njc0LCAxNjY3OCwgMTY2ODIsIDE2Njg2LCAxNjY5MCwgMCwgMCwgMCwgMTY2OTQsIDE2NzAwLCAxNjcwNiwgMTY3MTIsIAorICAgIDE2NzE4LCAxNjcyNCwgMTY3MzAsIDE2NzM2LCAxNjc0MiwgMTY3NDgsIDE2NzU0LCAxNjc2MCwgMTY3NjgsIDE2Nzc0LCAKKyAgICAxNjc4MCwgMTY3ODYsIDE2NzkyLCAxNjc5OCwgMTY4MDQsIDE2ODEwLCAxNjgxNiwgMTY4MjIsIDE2ODI4LCAxNjgzNCwgMCwgCisgICAgMTY4NDAsIDE2ODQ2LCAxNjg1MiwgMTY4NTgsIDE2ODY0LCAxNjg3MCwgMTY4NzQsIDE2ODgwLCAxNjg4NCwgMCwgMTY4ODgsIAorICAgIDAsIDAsIDE2ODk0LCAxNjg5OCwgMTY5MDQsIDE2OTEwLCAxNjkxNiwgMTY5MjAsIDE2OTI2LCAwLCAwLCAwLCAxNjkzMCwgMCwgCisgICAgMCwgMCwgMCwgMTY5MzQsIDE2OTM5LCAxNjk0NiwgMTY5NTMsIDE2OTYwLCAxNjk2NywgMCwgMTY5NzQsIDAsIDE2OTgxLCAKKyAgICAxNjk4NiwgMTY5OTEsIDE2OTk4LCAxNzAwNSwgMTcwMTQsIDE3MDI1LCAxNzAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwMzksIAorICAgIDE3MDQ1LCAxNzA1MCwgMTcwNTUsIDE3MDYwLCAxNzA2NSwgMTcwNzAsIDE3MDc1LCAxNzA4MSwgMTcwODYsIDAsIDAsIAorICAgIDE3MDkyLCAxNzA5OSwgMTcxMDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MTExLCAxNzExOCwgCisgICAgMTcxMjUsIDE3MTMyLCAxNzEzOSwgMTcxNDYsIDE3MTUzLCAxNzE2MCwgMTcxNjcsIDE3MTc0LCAxNzE4MSwgMTcxODgsIAorICAgIDE3MTk1LCAxNzIwMiwgMTcyMDksIDE3MjE2LCAxNzIyMywgMTcyMzAsIDE3MjM3LCAxNzI0NCwgMTcyNTEsIDE3MjU4LCAKKyAgICAxNzI2NSwgMTcyNzIsIDE3Mjc5LCAxNzI4NiwgMTcyOTMsIDE3MzAwLCAxNzMwNywgMTczMTQsIDE3MzIxLCAxNzMyOCwgCisgICAgMTczMzUsIDE3MzQxLCAxNzM0OCwgMTczNTUsIDE3MzYwLCAxNzM2NywgMTczNzIsIDE3Mzc5LCAxNzM4NiwgMTczOTMsIAorICAgIDE3NDAwLCAxNzQwNywgMTc0MTQsIDE3NDIwLCAxNzQyNywgMTc0MzIsIDE3NDM4LCAxNzQ0NSwgMTc0NTIsIDE3NDU5LCAKKyAgICAxNzQ2NSwgMTc0NzIsIDE3NDc5LCAxNzQ4NiwgMTc0OTIsIDE3NDk5LCAwLCAwLCAwLCAwLCAxNzUwNCwgMTc1MTEsIAorICAgIDE3NTE3LCAxNzUyNCwgMTc1MzAsIDE3NTM5LCAxNzU0OCwgMTc1NTMsIDE3NTU4LCAxNzU2MywgMTc1NzAsIDE3NTc3LCAKKyAgICAxNzU4NCwgMTc1OTEsIDE3NTk2LCAxNzYwMSwgMTc2MDYsIDE3NjExLCAxNzYxNiwgMTc2MjAsIDE3NjI0LCAxNzYyOCwgCisgICAgMTc2MzIsIDE3NjM2LCAxNzY0MCwgMTc2NDUsIDE3NjQ5LCAxNzY1NCwgMTc2NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3NjY0LCAxNzY2OSwgMCwgMTc2NzYsIDAsIDAsIDE3NjgzLCAxNzY4OCwgMCwgMTc2OTMsIDAsIAorICAgIDAsIDE3NzAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzcwNSwgMTc3MTAsIDE3NzE0LCAxNzcyMSwgMCwgMTc3MjgsIDE3NzMzLCAKKyAgICAxNzczOCwgMTc3NDMsIDE3NzUwLCAxNzc1NywgMTc3NjQsIDAsIDE3NzcxLCAxNzc3NiwgMTc3ODEsIDAsIDE3Nzg4LCAwLCAKKyAgICAxNzc5NSwgMCwgMCwgMTc4MDAsIDE3ODA3LCAwLCAxNzgxNCwgMTc4MTgsIDE3ODI1LCAxNzgyOSwgMTc4MzQsIDE3ODQyLCAKKyAgICAxNzg0OCwgMTc4NTQsIDE3ODU5LCAxNzg2NSwgMTc4NzEsIDE3ODc3LCAxNzg4MiwgMCwgMTc4ODgsIDE3ODk2LCAxNzkwMywgCisgICAgMCwgMCwgMTc5MTAsIDE3OTE1LCAxNzkyMSwgMTc5MjYsIDE3OTMyLCAwLCAxNzkzOCwgMCwgMTc5NDMsIDE3OTUwLCAKKyAgICAxNzk1NywgMTc5NjQsIDE3OTcxLCAxNzk3NiwgMCwgMCwgMTc5ODAsIDE3OTg1LCAxNzk4OSwgMTc5OTMsIDE3OTk3LCAKKyAgICAxODAwMSwgMTgwMDUsIDE4MDA5LCAxODAxNCwgMTgwMTgsIDAsIDAsIDE4MDIzLCAxODAyOSwgMTgwMzUsIDE4MDQyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODA0OSwgMTgwNTMsIDE4MDY0LCAxODA3OSwgMTgwOTQsIDE4MTA0LCAxODExNSwgCisgICAgMTgxMjgsIDE4MTM5LCAxODE0NSwgMTgxNTMsIDE4MTYzLCAxODE2OSwgMTgxNzcsIDE4MTgxLCAxODE4NywgMTgxOTMsIAorICAgIDE4MjAxLCAxODIxMSwgMTgyMTksIDE4MjMyLCAxODIzOCwgMTgyNDYsIDE4MjU0LCAxODI2NiwgMTgyNzMsIDE4MjgxLCAKKyAgICAxODI4OSwgMTgyOTcsIDE4MzA1LCAxODMxMywgMTgzMjEsIDE4MzMxLCAxODMzNSwgMTgzMzgsIDE4MzQxLCAxODM0NCwgCisgICAgMTgzNDcsIDE4MzUwLCAxODM1MywgMTgzNTcsIDE4MzYwLCAxODM2NCwgMTgzNjgsIDE4MzcyLCAxODM3NiwgMTgzODAsIAorICAgIDE4Mzg0LCAxODM4OCwgMTgzOTMsIDE4Mzk3LCAxODQwMiwgMTg0MDcsIDE4NDEzLCAxODQyMywgMTg0MzcsIDE4NDQ3LCAKKyAgICAxODQ1MywgMTg0NTksIDE4NDY3LCAxODQ3NSwgMTg0ODMsIDE4NDkxLCAxODQ5NywgMTg1MDMsIDE4NTA2LCAxODUxMCwgCisgICAgMTg1MTQsIDE4NTE4LCAxODUyMiwgMTg1MjYsIDE4NTMwLCAwLCAxODUzNCwgMTg1MzgsIDE4NTQyLCAxODU0NiwgMTg1NTAsIAorICAgIDE4NTU0LCAxODU1OCwgMTg1NjIsIDE4NTY2LCAxODU3MCwgMTg1NzQsIDE4NTc3LCAxODU4MCwgMTg1ODQsIDE4NTg4LCAKKyAgICAxODU5MiwgMTg1OTUsIDE4NTk5LCAxODYwMywgMTg2MDcsIDE4NjExLCAxODYxNSwgMTg2MTksIDE4NjIzLCAxODYyNywgCisgICAgMTg2MzAsIDE4NjM0LCAxODYzNywgMTg2NDEsIDE4NjQ1LCAxODY0OSwgMTg2NTIsIDE4NjU1LCAxODY1OSwgMTg2NjUsIAorICAgIDE4NjY5LCAwLCAwLCAwLCAwLCAxODY3MywgMTg2NzgsIDE4NjgyLCAxODY4NywgMTg2OTEsIDE4Njk2LCAxODcwMSwgCisgICAgMTg3MDcsIDE4NzEyLCAxODcxOCwgMTg3MjIsIDE4NzI3LCAxODczMSwgMTg3MzYsIDE4NzQ2LCAxODc1MiwgMTg3NTgsIAorICAgIDE4NzY1LCAxODc3NSwgMTg3ODEsIDE4Nzg1LCAxODc4OSwgMTg3OTUsIDE4ODAxLCAxODgwOSwgMTg4MTUsIDE4ODIzLCAKKyAgICAxODgzMSwgMTg4MzksIDE4ODQ5LCAxODg1NywgMTg4NjcsIDE4ODcyLCAxODg3OCwgMTg4ODQsIDE4ODkwLCAxODg5NiwgCisgICAgMTg5MDIsIDE4OTA4LCAwLCAxODkxNCwgMTg5MjAsIDE4OTI2LCAxODkzMiwgMTg5MzgsIDE4OTQ0LCAxODk1MCwgMTg5NTYsIAorICAgIDE4OTYyLCAxODk2OCwgMTg5NzQsIDE4OTc5LCAxODk4NCwgMTg5OTAsIDE4OTk2LCAxOTAwMiwgMTkwMDcsIDE5MDEzLCAKKyAgICAxOTAxOSwgMTkwMjUsIDE5MDMxLCAxOTAzNywgMTkwNDMsIDE5MDQ5LCAxOTA1NSwgMTkwNjAsIDE5MDY2LCAxOTA3MSwgCisgICAgMTkwNzcsIDE5MDgzLCAxOTA4OSwgMTkwOTQsIDE5MDk5LCAxOTEwNSwgMTkxMTMsIDE5MTIwLCAwLCAxOTEyOCwgMTkxMzUsIAorICAgIDE5MTQ4LCAxOTE1NSwgMTkxNjIsIDE5MTcwLCAxOTE3OCwgMTkxODQsIDE5MTkwLCAxOTE5NiwgMTkyMDYsIDE5MjExLCAKKyAgICAxOTIxNywgMTkyMjcsIDE5MjM3LCAwLCAxOTI0NywgMTkyNTcsIDE5MjY1LCAxOTI3NywgMTkyODksIDE5Mjk1LCAxOTMwOSwgCisgICAgMTkzMjQsIDE5MzI5LCAxOTMzNCwgMTkzNDIsIDE5MzUwLCAxOTM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTkzNjYsIDE5MzY5LCAxOTM3MywgMTkzNzcsIDE5MzgxLCAxOTM4NSwgMTkzODksIDE5MzkzLCAxOTM5NywgCisgICAgMTk0MDEsIDE5NDA1LCAxOTQwOSwgMTk0MTMsIDE5NDE3LCAxOTQyMSwgMTk0MjUsIDE5NDI5LCAxOTQzMywgMTk0MzcsIAorICAgIDE5NDQxLCAxOTQ0NSwgMTk0NDgsIDE5NDUxLCAxOTQ1NSwgMTk0NTksIDE5NDYzLCAxOTQ2NiwgMTk0NjksIDE5NDczLCAKKyAgICAxOTQ3NiwgMTk0ODAsIDE5NDg0LCAxOTQ4NywgMTk0OTEsIDE5NDk0LCAxOTQ5OSwgMTk1MDIsIDE5NTA2LCAxOTUwOSwgCisgICAgMTk1MTMsIDE5NTE2LCAxOTUyMSwgMTk1MjQsIDE5NTI4LCAxOTUzNSwgMTk1NDAsIDE5NTQ0LCAxOTU0OSwgMTk1NTMsIAorICAgIDE5NTU4LCAxOTU2MiwgMTk1NjcsIDE5NTc0LCAxOTU4MCwgMTk1ODUsIDE5NTg5LCAxOTU5MywgMTk1OTcsIDE5NjAxLCAKKyAgICAxOTYwNSwgMTk2MTAsIDE5NjE2LCAxOTYyMiwgMTk2MjcsIDE5NjMzLCAxOTYzNywgMTk2NDAsIDE5NjQzLCAxOTY0NiwgCisgICAgMTk2NDksIDE5NjUyLCAxOTY1NSwgMTk2NTksIDE5NjYyLCAxOTY2NiwgMTk2NzIsIDE5Njc2LCAxOTY4MCwgMTk2ODQsIAorICAgIDE5Njg4LCAxOTY5MiwgMTk2OTYsIDE5NzAwLCAxOTcwNCwgMTk3MDksIDE5NzEzLCAxOTcxOCwgMTk3MjMsIDE5NzI5LCAKKyAgICAxOTczNCwgMTk3NDAsIDE5NzQ2LCAxOTc1MiwgMTk3NTgsIDE5NzY0LCAxOTc3MSwgMTk3NzgsIDE5Nzg1LCAxOTc5MywgCisgICAgMTk4MDIsIDE5ODExLCAxOTgyMiwgMTk4MzIsIDE5ODQyLCAxOTg1MywgMTk4NjQsIDE5ODc0LCAxOTg4NCwgMTk4OTQsIAorICAgIDE5OTA0LCAxOTkxNCwgMTk5MjQsIDE5OTM0LCAxOTk0NCwgMTk5NTIsIDE5OTU5LCAxOTk2NSwgMTk5NzIsIDE5OTc3LCAKKyAgICAxOTk4MywgMTk5ODksIDE5OTk1LCAyMDAwMSwgMjAwMDcsIDIwMDEzLCAyMDAxOCwgMjAwMjQsIDIwMDMwLCAyMDAzNiwgCisgICAgMjAwNDIsIDIwMDQ3LCAyMDA1NSwgMjAwNjIsIDIwMDY4LCAyMDA3NSwgMjAwODMsIDIwMDg5LCAyMDA5NSwgMjAxMDEsIAorICAgIDIwMTA3LCAyMDExNSwgMjAxMjMsIDIwMTMzLCAyMDE0MSwgMjAxNDksIDIwMTU1LCAyMDE2MCwgMjAxNjUsIDIwMTcwLCAKKyAgICAyMDE3NSwgMjAxODAsIDIwMTg1LCAyMDE5MSwgMjAxOTYsIDIwMjAyLCAyMDIwOCwgMjAyMTQsIDIwMjIwLCAyMDIyNywgCisgICAgMjAyMzIsIDIwMjM4LCAyMDI0MywgMjAyNDgsIDIwMjUzLCAyMDI1OCwgMjAyNjMsIDIwMjY4LCAyMDI3MywgMjAyNzgsIAorICAgIDIwMjgzLCAyMDI4OCwgMjAyOTMsIDIwMjk4LCAyMDMwMywgMjAzMDgsIDIwMzEzLCAyMDMxOCwgMjAzMjMsIDIwMzI4LCAKKyAgICAyMDMzMywgMjAzMzgsIDIwMzQzLCAyMDM0OCwgMjAzNTMsIDIwMzU4LCAyMDM2MywgMjAzNjgsIDIwMzczLCAyMDM3OCwgCisgICAgMjAzODMsIDIwMzg4LCAyMDM5MywgMjAzOTgsIDIwNDAzLCAyMDQwOCwgMjA0MTMsIDIwNDE4LCAyMDQyMywgMCwgMjA0MjgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIwNDMzLCAwLCAwLCAyMDQzOCwgMjA0NDIsIDIwNDQ2LCAyMDQ1MCwgMjA0NTQsIDIwNDU4LCAKKyAgICAyMDQ2MiwgMjA0NjYsIDIwNDcwLCAyMDQ3NCwgMjA0NzgsIDIwNDgyLCAyMDQ4NiwgMjA0OTAsIDIwNDk0LCAyMDQ5OCwgCisgICAgMjA1MDIsIDIwNTA2LCAyMDUxMCwgMjA1MTQsIDIwNTE4LCAyMDUyMiwgMjA1MjYsIDIwNTMwLCAyMDUzNCwgMjA1MzgsIAorICAgIDIwNTQyLCAyMDU0NiwgMjA1NTAsIDIwNTU0LCAyMDU1OCwgMjA1NjIsIDIwNTY2LCAyMDU3MCwgMjA1NzQsIDIwNTc4LCAKKyAgICAyMDU4MiwgMjA1ODYsIDIwNTkwLCAyMDU5NCwgMjA1OTgsIDIwNjAyLCAyMDYwOCwgMjA2MTIsIDIwNjE3LCAyMDYyMiwgCisgICAgMjA2MjYsIDIwNjMxLCAyMDYzNiwgMjA2NDAsIDIwNjQ0LCAyMDY0OCwgMjA2NTIsIDIwNjU2LCAyMDY2MCwgMjA2NjQsIAorICAgIDIwNjY4LCAyMDY3MiwgMjA2NzYsIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAyMDY5NiwgMjA3MDAsIDIwNzA0LCAKKyAgICAyMDcwOCwgMjA3MTIsIDIwNzE2LCAyMDcyMCwgMjA3MjQsIDIwNzI4LCAyMDczMiwgMjA3MzYsIDIwNzQwLCAyMDc0NCwgCisgICAgMjA3NDgsIDIwNzUyLCAyMDc1NiwgMjA3NjAsIDIwNzY0LCAyMDc2OCwgMjA3NzIsIDIwNzc2LCAyMDc4MCwgMjA3ODQsIAorICAgIDIwNzg4LCAyMDc5MiwgMjA3OTYsIDIwODAwLCAyMDgwNCwgMjA4MDgsIDIwODEyLCAyMDgxNiwgMjA4MjAsIDIwODI0LCAKKyAgICAyMDgyOCwgMjA4MzIsIDIwODM2LCAyMDg0MCwgMjA4NDQsIDIwODQ4LCAyMDg1MiwgMjA4NTYsIDIwODYwLCAyMDg2NCwgCisgICAgMjA4NjgsIDIwODcyLCAyMDg3NiwgMjA4ODAsIDIwODg0LCAyMDg4OCwgMjA4OTIsIDIwODk2LCAyMDkwMCwgMjA5MDQsIAorICAgIDIwOTA4LCAyMDkxMiwgMjA5MTYsIDIwOTIwLCAyMDkyNCwgMjA5MjgsIDIwOTMyLCAyMDkzNiwgMjA5NDAsIDIwOTQ0LCAKKyAgICAyMDk0OCwgMjA5NTIsIDIwOTU2LCAyMDk2MCwgMjA5NjQsIDIwOTY4LCAyMDk3MiwgMjA5NzYsIDIwOTgwLCAyMDk4NCwgCisgICAgMjA5ODgsIDIwOTkyLCAyMDk5NiwgMjEwMDAsIDIxMDA0LCAyMTAwOCwgMjEwMTIsIDIxMDE2LCAyMTAyMCwgMjEwMjQsIAorICAgIDIxMDI3LCAyMTAzMSwgMjEwMzQsIDIxMDM4LCAyMTA0MiwgMjEwNDUsIDIxMDQ5LCAyMTA1MywgMjEwNTYsIDIxMDYwLCAKKyAgICAyMTA2NCwgMjEwNjgsIDIxMDcyLCAyMTA3NSwgMjEwNzksIDIxMDgzLCAyMTA4NywgMjEwOTEsIDIxMDk1LCAyMTA5OSwgCisgICAgMjExMDIsIDIxMTA2LCAyMTExMCwgMjExMTQsIDIxMTE4LCAyMTEyMiwgMjExMjYsIDIxMTMwLCAyMTEzNCwgMjExMzgsIAorICAgIDIxMTQyLCAyMTE0NiwgMjExNTAsIDIxMTU0LCAyMTE1OCwgMjExNjIsIDIxMTY2LCAyMTE3MCwgMjExNzQsIDIxMTc4LCAKKyAgICAyMTE4MiwgMjExODYsIDIxMTkwLCAyMTE5NCwgMjExOTgsIDIxMjAyLCAyMTIwNiwgMjEyMTAsIDIxMjE0LCAyMTIxOCwgCisgICAgMjEyMjIsIDIxMjI2LCAyMTIzMCwgMjEyMzQsIDIxMjM4LCAyMTI0MiwgMjEyNDYsIDIxMjUwLCAyMTI1NCwgMjEyNTgsIAorICAgIDIxMjYyLCAyMTI2NiwgMjEyNzAsIDIxMjc0LCAyMTI3OCwgMjEyODIsIDIxMjg2LCAyMTI5MCwgMjEyOTQsIDIxMjk4LCAKKyAgICAyMTMwMiwgMjEzMDYsIDIxMzEwLCAyMTMxNCwgMjEzMTgsIDIxMzIyLCAyMTMyNiwgMjEzMzAsIDIxMzM0LCAyMTMzOCwgCisgICAgMjEzNDIsIDIxMzQ2LCAyMTM1MCwgMjEzNTQsIDIxMzU4LCAyMTM2MiwgMjEzNjYsIDIxMzcwLCAyMTM3NCwgMjEzNzgsIAorICAgIDIxMzgyLCAyMTM4NiwgMjEzOTAsIDIxMzk0LCAyMTM5OCwgMjE0MDIsIDIxNDA2LCAyMTQxMCwgMjE0MTQsIDIxNDE4LCAKKyAgICAyMTQyMiwgMjE0MjYsIDIxNDMwLCAyMTQzNCwgMjE0MzgsIDIxNDQyLCAyMTQ0NiwgMjE0NTAsIDIxNDU0LCAyMTQ1OCwgCisgICAgMjE0NjIsIDIxNDY2LCAyMTQ3MCwgMjE0NzQsIDIxNDc4LCAyMTQ4MiwgMjE0ODYsIDIxNDkwLCAyMTQ5NCwgMjE0OTgsIAorICAgIDIxNTAyLCAyMTUwNiwgMjE1MTAsIDIxNTE0LCAyMTUxOCwgMjE1MjIsIDIxNTI2LCAyMTUzMCwgMjE1MzQsIDIxNTM4LCAKKyAgICAyMTU0MiwgMjE1NDYsIDIxNTUwLCAyMTU1NCwgMjE1NTgsIDIxNTYyLCAyMTU2NiwgMjE1NzAsIDIxNTc0LCAyMTU3OCwgCisgICAgMjE1ODIsIDIxNTg2LCAyMTU5MCwgMjE1OTQsIDIxNTk4LCAyMTYwMiwgMjE2MDYsIDIxNjEwLCAyMTYxNCwgMjE2MTgsIAorICAgIDIxNjIyLCAyMTYyNiwgMjE2MzAsIDIxNjM0LCAyMTYzOCwgMjE2NDIsIDIxNjQ2LCAyMTY1MCwgMjE2NTQsIDIxNjU3LCAKKyAgICAyMTY2MSwgMjE2NjUsIDIxNjY5LCAyMTY3MywgMjE2NzcsIDIxNjgxLCAyMTY4NSwgMjE2ODgsIDIxNjkyLCAyMTY5NiwgCisgICAgMjE3MDAsIDIxNzA0LCAyMTcwOCwgMjE3MTIsIDIxNzE2LCAyMTcyMCwgMjE3MjQsIDIxNzI4LCAyMTczMiwgMjE3MzYsIAorICAgIDIxNzQwLCAyMTc0NCwgMjE3NDgsIDIxNzUxLCAyMTc1NSwgMjE3NTksIDIxNzYzLCAyMTc2NywgMjE3NzEsIDIxNzc1LCAKKyAgICAyMTc3OSwgMjE3ODMsIDIxNzg3LCAyMTc5MSwgMjE3OTUsIDIxNzk5LCAyMTgwMywgMjE4MDcsIDIxODExLCAyMTgxNSwgCisgICAgMjE4MTksIDIxODIzLCAyMTgyNywgMjE4MzEsIDIxODM1LCAyMTgzOSwgMjE4NDMsIDIxODQ3LCAyMTg1MSwgMjE4NTUsIAorICAgIDIxODU5LCAyMTg2MywgMjE4NjcsIDIxODcxLCAyMTg3NSwgMjE4NzksIDIxODgzLCAyMTg4NywgMjE4OTEsIDIxODk1LCAKKyAgICAyMTg5OSwgMjE5MDMsIDIxOTA3LCAyMTkxMSwgMjE5MTUsIDIxOTE5LCAyMTkyMywgMjE5MjcsIDIxOTMxLCAyMTkzNSwgCisgICAgMjE5MzksIDAsIDIxOTQzLCAyMTk0NywgMjE5NTEsIDIxOTU1LCAwLCAwLCAyMTk1OSwgMjE5NjMsIDIxOTY3LCAyMTk3MSwgCisgICAgMjE5NzUsIDIxOTc5LCAyMTk4MywgMCwgMjE5ODcsIDAsIDIxOTkxLCAyMTk5NSwgMjE5OTksIDIyMDAzLCAwLCAwLCAKKyAgICAyMjAwNywgMjIwMTEsIDIyMDE1LCAyMjAxOSwgMjIwMjMsIDIyMDI3LCAyMjAzMSwgMjIwMzUsIDIyMDM5LCAyMjA0MywgCisgICAgMjIwNDcsIDIyMDUxLCAyMjA1NSwgMjIwNTksIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgMjIwODMsIAorICAgIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk4LCAyMjEwMiwgMjIxMDYsIDIyMTEwLCAyMjExNCwgMjIxMTgsIDIyMTIyLCAKKyAgICAyMjEyNiwgMjIxMzAsIDIyMTM0LCAyMjEzOCwgMjIxNDIsIDIyMTQ2LCAyMjE1MCwgMjIxNTQsIDIyMTU4LCAyMjE2MiwgCisgICAgMjIxNjYsIDAsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAwLCAwLCAyMjE4NiwgMjIxODksIDIyMTkzLCAyMjE5NywgCisgICAgMjIyMDEsIDIyMjA1LCAyMjIwOSwgMjIyMTMsIDIyMjE3LCAyMjIyMSwgMjIyMjUsIDIyMjI5LCAyMjIzMywgMjIyMzcsIAorICAgIDIyMjQxLCAyMjI0NSwgMjIyNDksIDIyMjU0LCAyMjI1OSwgMjIyNjQsIDIyMjcwLCAyMjI3NiwgMjIyODEsIDIyMjg2LCAKKyAgICAyMjI5MiwgMjIyOTUsIDIyMjk5LCAyMjMwMywgMjIzMDcsIDIyMzExLCAyMjMxNSwgMjIzMTksIDIyMzIzLCAwLCAyMjMyNywgCisgICAgMjIzMzEsIDIyMzM1LCAyMjMzOSwgMCwgMCwgMjIzNDMsIDIyMzQ3LCAyMjM1MSwgMjIzNTUsIDIyMzU5LCAyMjM2MywgCisgICAgMjIzNjcsIDAsIDIyMzcxLCAwLCAyMjM3NSwgMjIzNzksIDIyMzgzLCAyMjM4NywgMCwgMCwgMjIzOTEsIDIyMzk1LCAKKyAgICAyMjM5OSwgMjI0MDMsIDIyNDA3LCAyMjQxMSwgMjI0MTUsIDIyNDE5LCAyMjQyMywgMjI0MjgsIDIyNDMzLCAyMjQzOCwgCisgICAgMjI0NDQsIDIyNDUwLCAyMjQ1NSwgMCwgMjI0NjAsIDIyNDY0LCAyMjQ2OCwgMjI0NzIsIDIyNDc2LCAyMjQ4MCwgMjI0ODQsIAorICAgIDIyNDg4LCAyMjQ5MiwgMjI0OTYsIDIyNTAwLCAyMjUwNCwgMjI1MDgsIDIyNTEyLCAyMjUxNiwgMjI1MjAsIDIyNTI0LCAKKyAgICAyMjUyNywgMjI1MzEsIDIyNTM1LCAyMjUzOSwgMjI1NDMsIDIyNTQ3LCAyMjU1MSwgMjI1NTUsIDIyNTU5LCAyMjU2MywgCisgICAgMjI1NjcsIDIyNTcxLCAyMjU3NSwgMjI1NzksIDIyNTgzLCAyMjU4NywgMjI1OTEsIDIyNTk1LCAyMjU5OSwgMjI2MDMsIAorICAgIDIyNjA3LCAyMjYxMSwgMjI2MTUsIDIyNjE5LCAyMjYyMywgMjI2MjcsIDIyNjMxLCAyMjYzNSwgMjI2MzksIDIyNjQzLCAKKyAgICAyMjY0NywgMjI2NTEsIDIyNjU1LCAyMjY1OSwgMjI2NjMsIDIyNjY3LCAyMjY3MSwgMjI2NzUsIDIyNjc5LCAyMjY4MywgMCwgCisgICAgMjI2ODcsIDIyNjkxLCAyMjY5NSwgMjI2OTksIDAsIDAsIDIyNzAzLCAyMjcwNywgMjI3MTEsIDIyNzE1LCAyMjcxOSwgCisgICAgMjI3MjMsIDIyNzI3LCAyMjczMSwgMjI3MzUsIDIyNzM5LCAyMjc0MywgMjI3NDcsIDIyNzUxLCAyMjc1NSwgMjI3NTksIAorICAgIDIyNzYzLCAyMjc2NywgMjI3NzEsIDIyNzc1LCAyMjc3OSwgMjI3ODMsIDIyNzg3LCAyMjc5MSwgMjI3OTUsIDIyNzk5LCAKKyAgICAyMjgwMywgMjI4MDcsIDIyODExLCAyMjgxNSwgMjI4MTksIDIyODIzLCAyMjgyNywgMjI4MzEsIDIyODM1LCAyMjgzOSwgCisgICAgMjI4NDMsIDIyODQ3LCAyMjg1MSwgMjI4NTUsIDIyODU5LCAyMjg2MywgMjI4NjcsIDIyODcxLCAyMjg3NSwgMjI4NzksIAorICAgIDIyODgzLCAyMjg4NywgMjI4OTEsIDIyODk1LCAyMjg5OSwgMjI5MDMsIDIyOTA3LCAyMjkxMSwgMjI5MTUsIDIyOTE5LCAKKyAgICAyMjkyMywgMjI5MjcsIDIyOTMwLCAyMjkzNCwgMjI5MzgsIDIyOTQyLCAyMjk0NiwgMjI5NTAsIDIyOTU0LCAyMjk1OCwgCisgICAgMjI5NjIsIDIyOTY2LCAwLCAwLCAyMjk3MCwgMjI5NzksIDIyOTg1LCAyMjk5MCwgMjI5OTQsIDIyOTk3LCAyMzAwMiwgCisgICAgMjMwMDUsIDIzMDA4LCAyMzAxMSwgMjMwMTYsIDIzMDIwLCAyMzAyNSwgMjMwMjgsIDIzMDMxLCAyMzAzNCwgMjMwMzcsIAorICAgIDIzMDQwLCAyMzA0MywgMjMwNDcsIDIzMDUwLCAyMzA1NCwgMjMwNTgsIDIzMDYyLCAyMzA2NiwgMjMwNzAsIDIzMDc0LCAKKyAgICAyMzA3OCwgMjMwODIsIDIzMDg2LCAyMzA5MCwgMjMwOTQsIDAsIDAsIDAsIDIzMTAwLCAyMzEwNiwgMjMxMTAsIDIzMTE0LCAKKyAgICAyMzExOCwgMjMxMjQsIDIzMTI4LCAyMzEzMiwgMjMxMzYsIDIzMTQyLCAyMzE0NiwgMjMxNTAsIDIzMTU0LCAyMzE2MCwgCisgICAgMjMxNjQsIDIzMTY4LCAyMzE3MiwgMjMxNzgsIDIzMTg0LCAyMzE5MCwgMjMxOTgsIDIzMjA0LCAyMzIxMCwgMjMyMTYsIAorICAgIDIzMjIyLCAyMzIyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMyMzQsIDIzMjM3LCAyMzI0MCwgMjMyNDMsIDIzMjQ2LCAyMzI0OSwgCisgICAgMjMyNTMsIDIzMjU3LCAyMzI2MCwgMjMyNjQsIDIzMjY4LCAyMzI3MiwgMjMyNzYsIDIzMjgwLCAyMzI4MywgMjMyODcsIAorICAgIDIzMjkxLCAyMzI5NSwgMjMyOTksIDIzMzAzLCAyMzMwNiwgMjMzMTAsIDIzMzE0LCAyMzMxOCwgMjMzMjIsIDIzMzI2LCAKKyAgICAyMzMyOSwgMjMzMzMsIDIzMzM3LCAyMzM0MSwgMjMzNDUsIDIzMzQ4LCAyMzM1MiwgMjMzNTYsIDIzMzYwLCAyMzM2NCwgCisgICAgMjMzNjgsIDIzMzcyLCAyMzM3NiwgMjMzODAsIDIzMzg0LCAyMzM4OCwgMjMzOTIsIDIzMzk2LCAyMzQwMCwgMjM0MDQsIAorICAgIDIzNDA4LCAyMzQxMiwgMjM0MTYsIDIzNDIwLCAyMzQyNCwgMjM0MjgsIDIzNDMyLCAyMzQzNiwgMjM0NDAsIDIzNDQ0LCAKKyAgICAyMzQ0OCwgMjM0NTIsIDIzNDU2LCAyMzQ2MCwgMjM0NjQsIDIzNDY4LCAyMzQ3MiwgMjM0NzYsIDIzNDgwLCAyMzQ4NCwgCisgICAgMjM0ODgsIDIzNDkyLCAyMzQ5NiwgMjM1MDAsIDIzNTA0LCAyMzUwOCwgMjM1MTIsIDIzNTE2LCAyMzUyMCwgMjM1MjQsIAorICAgIDIzNTI4LCAyMzUzMiwgMjM1MzYsIDIzNTQwLCAyMzU0MywgMjM1NDcsIDIzNTUxLCAyMzU1NSwgMjM1NTksIDIzNTYzLCAwLCAKKyAgICAwLCAyMzU2NywgMjM1NzIsIDIzNTc3LCAyMzU4MiwgMjM1ODcsIDIzNTkyLCAwLCAwLCAyMzU5NywgMjM2MDEsIDIzNjA0LCAKKyAgICAyMzYwOCwgMjM2MTEsIDIzNjE1LCAyMzYxOCwgMjM2MjIsIDIzNjI4LCAyMzYzMywgMjM2MzcsIDIzNjQwLCAyMzY0NCwgCisgICAgMjM2NDgsIDIzNjU0LCAyMzY1OCwgMjM2NjQsIDIzNjY4LCAyMzY3NCwgMjM2NzgsIDIzNjg0LCAyMzY4OCwgMjM2OTQsIAorICAgIDIzNzAwLCAyMzcwNCwgMjM3MTAsIDIzNzE0LCAyMzcyMCwgMjM3MjYsIDIzNzMwLCAyMzczNiwgMjM3NDIsIDIzNzQ2LCAKKyAgICAyMzc1MSwgMjM3NTksIDIzNzY3LCAyMzc3NCwgMjM3NzksIDIzNzg0LCAyMzc5MywgMjM3OTksIDIzODA3LCAyMzgxMiwgCisgICAgMjM4MTgsIDIzODIyLCAyMzgyNiwgMjM4MzAsIDIzODM0LCAyMzgzOCwgMjM4NDIsIDIzODQ2LCAyMzg1MCwgMjM4NTQsIAorICAgIDIzODU4LCAyMzg2NCwgMjM4NjksIDIzODc0LCAyMzg3NywgMjM4ODEsIDIzODg1LCAyMzg5MSwgMjM4OTUsIDIzOTAxLCAKKyAgICAyMzkwNSwgMjM5MTEsIDIzOTE1LCAyMzkyMSwgMjM5MjUsIDIzOTMxLCAyMzkzNSwgMjM5NDEsIDIzOTQ1LCAyMzk1MSwgCisgICAgMjM5NTcsIDIzOTYxLCAyMzk2NywgMjM5NzIsIDIzOTc2LCAyMzk4MCwgMjM5ODQsIDIzOTg4LCAyMzk5MSwgMjM5OTUsIAorICAgIDI0MDAxLCAyNDAwNiwgMjQwMTEsIDI0MDE1LCAyNDAxOSwgMjQwMjMsIDI0MDI5LCAyNDAzMywgMjQwMzksIDI0MDQzLCAKKyAgICAyNDA0OSwgMjQwNTIsIDI0MDU3LCAyNDA2MSwgMjQwNjcsIDI0MDcxLCAyNDA3NywgMjQwODEsIDI0MDg3LCAyNDA5MywgCisgICAgMjQwOTcsIDI0MTAxLCAyNDEwNSwgMjQxMDksIDI0MTEzLCAyNDExNywgMjQxMjEsIDI0MTI1LCAyNDEyOSwgMjQxMzMsIAorICAgIDI0MTM3LCAyNDE0MywgMjQxNDYsIDI0MTUwLCAyNDE1NCwgMjQxNjAsIDI0MTY0LCAyNDE3MCwgMjQxNzQsIDI0MTgwLCAKKyAgICAyNDE4NCwgMjQxOTAsIDI0MTk0LCAyNDIwMCwgMjQyMDQsIDI0MjEwLCAyNDIxNCwgMjQyMjAsIDI0MjI2LCAyNDIzMCwgCisgICAgMjQyMzQsIDI0MjQwLCAyNDI0NiwgMjQyNTIsIDI0MjU4LCAyNDI2MiwgMjQyNjYsIDI0MjcwLCAyNDI3NCwgMjQyNzgsIAorICAgIDI0MjgyLCAyNDI4OCwgMjQyOTIsIDI0Mjk2LCAyNDMwMCwgMjQzMDYsIDI0MzEwLCAyNDMxNiwgMjQzMjAsIDI0MzI2LCAKKyAgICAyNDMzMCwgMjQzMzYsIDI0MzQwLCAyNDM0NiwgMjQzNTAsIDI0MzU2LCAyNDM2MCwgMjQzNjYsIDI0MzcyLCAyNDM3NiwgCisgICAgMjQzODIsIDI0Mzg2LCAyNDM5MCwgMjQzOTQsIDI0Mzk4LCAyNDQwMiwgMjQ0MDYsIDI0NDEyLCAyNDQxNSwgMjQ0MTksIAorICAgIDI0NDIzLCAyNDQyOSwgMjQ0MzMsIDI0NDM5LCAyNDQ0MywgMjQ0NDksIDI0NDUzLCAyNDQ1OSwgMjQ0NjMsIDI0NDY5LCAKKyAgICAyNDQ3MywgMjQ0NzksIDI0NDgzLCAyNDQ4OSwgMjQ0OTUsIDI0NDk5LCAyNDUwNSwgMjQ1MDksIDI0NTE1LCAyNDUyMSwgCisgICAgMjQ1MjUsIDI0NTI5LCAyNDUzMywgMjQ1MzcsIDI0NTQxLCAyNDU0NSwgMjQ1NTEsIDI0NTU0LCAyNDU1OCwgMjQ1NjIsIAorICAgIDI0NTY4LCAyNDU3MiwgMjQ1NzgsIDI0NTgyLCAyNDU4OCwgMjQ1OTQsIDI0NTk4LCAyNDYwMywgMjQ2MDcsIDI0NjExLCAKKyAgICAyNDYxNSwgMjQ2MTksIDI0NjIzLCAyNDYyNywgMjQ2MzEsIDI0NjM3LCAyNDY0MCwgMjQ2NDQsIDI0NjQ4LCAyNDY1NCwgCisgICAgMjQ2NTgsIDI0NjY0LCAyNDY2OCwgMjQ2NzQsIDI0Njc4LCAyNDY4NCwgMjQ2ODgsIDI0Njk0LCAyNDY5OCwgMjQ3MDQsIAorICAgIDI0NzA4LCAyNDcxNCwgMjQ3MTcsIDI0NzIyLCAyNDcyNiwgMjQ3MzAsIDI0NzM0LCAyNDczOCwgMjQ3NDIsIDI0NzQ2LCAKKyAgICAyNDc1MCwgMjQ3NTYsIDI0NzYwLCAyNDc2NCwgMjQ3NjgsIDI0Nzc0LCAyNDc3OCwgMjQ3ODQsIDI0Nzg4LCAyNDc5NCwgCisgICAgMjQ3OTgsIDI0ODA0LCAyNDgwOCwgMjQ4MTQsIDI0ODE4LCAyNDgyNCwgMjQ4MjgsIDI0ODM0LCAyNDg0MCwgMjQ4NDQsIAorICAgIDI0ODUwLCAyNDg1NCwgMjQ4NjAsIDI0ODY2LCAyNDg3MiwgMjQ4NzgsIDI0ODg0LCAyNDg5MCwgMjQ4OTYsIDI0OTAyLCAKKyAgICAyNDkwNiwgMjQ5MTAsIDI0OTE0LCAyNDkxOCwgMjQ5MjIsIDI0OTI2LCAyNDkzMCwgMjQ5MzQsIDI0OTQwLCAyNDk0NCwgCisgICAgMjQ5NTAsIDI0OTU0LCAyNDk2MCwgMjQ5NjQsIDI0OTcwLCAyNDk3NCwgMjQ5ODAsIDI0OTg0LCAyNDk5MCwgMjQ5OTQsIAorICAgIDI1MDAwLCAyNTAwNCwgMjUwMDgsIDI1MDEyLCAyNTAxNiwgMjUwMjAsIDI1MDI0LCAyNTAyOCwgMjUwMzQsIDI1MDM3LCAKKyAgICAyNTA0MSwgMjUwNDUsIDI1MDUxLCAyNTA1NSwgMjUwNjEsIDI1MDY1LCAyNTA3MSwgMjUwNzUsIDI1MDgxLCAyNTA4NSwgCisgICAgMjUwOTEsIDI1MDk1LCAyNTEwMSwgMjUxMDUsIDI1MTExLCAyNTExNywgMjUxMjEsIDI1MTI3LCAyNTEzMywgMjUxMzksIAorICAgIDI1MTQzLCAyNTE0OSwgMjUxNTUsIDI1MTU5LCAyNTE2MywgMjUxNjcsIDI1MTcxLCAyNTE3NSwgMjUxODEsIDI1MTg1LCAKKyAgICAyNTE4OSwgMjUxOTQsIDI1MTk4LCAyNTIwNCwgMjUyMDcsIDI1MjEyLCAyNTIxNiwgMjUyMjAsIDI1MjI0LCAyNTIyOCwgCisgICAgMjUyMzIsIDI1MjM2LCAyNTI0MCwgMjUyNDQsIDI1MjQ4LCAyNTI1MiwgMjUyNTgsIDI1MjYyLCAyNTI2NiwgMjUyNzIsIAorICAgIDI1Mjc2LCAyNTI4MiwgMjUyODYsIDI1MjkyLCAyNTI5NiwgMjUzMDAsIDI1MzA0LCAyNTMwOCwgMjUzMTIsIDI1MzE4LCAKKyAgICAyNTMyMiwgMjUzMjYsIDI1MzMwLCAyNTMzNCwgMjUzMzgsIDI1MzQyLCAyNTM0NiwgMjUzNTAsIDI1MzU0LCAyNTM1OCwgCisgICAgMjUzNjQsIDI1MzcwLCAyNTM3NiwgMjUzODIsIDI1Mzg4LCAyNTM5MywgMjUzOTksIDI1NDA1LCAyNTQxMSwgMjU0MTUsIAorICAgIDI1NDE5LCAyNTQyMywgMjU0MjcsIDI1NDMxLCAyNTQzNSwgMjU0MzksIDI1NDQzLCAyNTQ0NywgMjU0NTEsIDI1NDU1LCAKKyAgICAyNTQ1OSwgMjU0NjMsIDI1NDY5LCAyNTQ3NSwgMjU0ODEsIDI1NDg3LCAyNTQ5MSwgMjU0OTUsIDI1NDk5LCAyNTUwMywgCisgICAgMjU1MDcsIDI1NTExLCAyNTUxNSwgMjU1MTksIDI1NTIzLCAyNTUyOSwgMjU1MzUsIDI1NTQxLCAyNTU0NywgMjU1NTMsIAorICAgIDI1NTU5LCAyNTU2NSwgMjU1NzEsIDI1NTc3LCAyNTU4MSwgMjU1ODUsIDI1NTg5LCAyNTU5MywgMjU1OTcsIDI1NjAxLCAKKyAgICAyNTYwNSwgMjU2MTEsIDI1NjE3LCAyNTYyMywgMjU2MjksIDI1NjM1LCAyNTY0MSwgMjU2NDcsIDI1NjUzLCAyNTY1OSwgCisgICAgMjU2NjQsIDI1NjY5LCAyNTY3NCwgMjU2NzksIDI1Njg1LCAyNTY5MSwgMjU2OTcsIDI1NzAzLCAyNTcwOSwgMjU3MTUsIAorICAgIDI1NzIxLCAyNTcyNiwgMjU3MzIsIDI1NzM4LCAyNTc0NCwgMjU3NDksIDI1NzU1LCAyNTc2MSwgMjU3NjcsIDI1NzcyLCAKKyAgICAyNTc3NywgMjU3ODIsIDI1Nzg3LCAyNTc5MiwgMjU3OTcsIDI1ODAyLCAyNTgwNywgMjU4MTIsIDI1ODE3LCAyNTgyMiwgCisgICAgMjU4MjcsIDI1ODMyLCAyNTgzNywgMjU4NDIsIDI1ODQ3LCAyNTg1MiwgMjU4NTcsIDI1ODYyLCAyNTg2NywgMjU4NzIsIAorICAgIDI1ODc3LCAyNTg4MiwgMjU4ODcsIDI1ODkyLCAyNTg5NywgMjU5MDIsIDI1OTA3LCAyNTkxMiwgMjU5MTcsIDI1OTIyLCAKKyAgICAyNTkyNywgMjU5MzIsIDI1OTM3LCAyNTk0MiwgMjU5NDcsIDI1OTUyLCAyNTk1NywgMjU5NjIsIDI1OTY3LCAyNTk3MiwgCisgICAgMjU5NzcsIDI1OTgxLCAyNTk4NiwgMjU5OTEsIDI1OTk2LCAyNjAwMSwgMjYwMDYsIDI2MDExLCAyNjAxNiwgMjYwMjEsIAorICAgIDI2MDI2LCAyNjAzMSwgMjYwMzYsIDI2MDQxLCAyNjA0NiwgMjYwNTEsIDI2MDU2LCAyNjA2MSwgMjYwNjYsIDI2MDcxLCAKKyAgICAyNjA3NiwgMjYwODEsIDI2MDg2LCAyNjA5MSwgMjYwOTYsIDI2MTAxLCAyNjEwNiwgMjYxMTAsIDI2MTE1LCAyNjEyMCwgCisgICAgMjYxMjUsIDI2MTMwLCAyNjEzNSwgMjYxMzksIDI2MTQ0LCAyNjE0OSwgMjYxNTQsIDI2MTU5LCAyNjE2NCwgMjYxNjgsIAorICAgIDI2MTczLCAyNjE3OSwgMjYxODQsIDI2MTg5LCAyNjE5NCwgMjYxOTksIDI2MjA1LCAyNjIxMCwgMjYyMTUsIDI2MjIwLCAKKyAgICAyNjIyNSwgMjYyMzAsIDI2MjM1LCAyNjI0MCwgMjYyNDUsIDI2MjUwLCAyNjI1NSwgMjYyNjAsIDI2MjY1LCAyNjI2OSwgCisgICAgMjYyNzQsIDI2Mjc5LCAyNjI4NCwgMjYyODksIDI2Mjk0LCAyNjI5OSwgMjYzMDQsIDI2MzA5LCAyNjMxNCwgMjYzMTksIAorICAgIDI2MzI0LCAyNjMyOSwgMjYzMzQsIDI2MzM5LCAyNjM0NCwgMjYzNDksIDI2MzU0LCAyNjM1OSwgMjYzNjQsIDI2MzY5LCAKKyAgICAyNjM3NCwgMjYzNzksIDI2Mzg0LCAyNjM4OSwgMjYzOTQsIDI2Mzk5LCAyNjQwNCwgMjY0MDksIDI2NDE0LCAyNjQxOSwgCisgICAgMjY0MjQsIDI2NDMwLCAyNjQzNSwgMjY0NDAsIDI2NDQ1LCAyNjQ1MCwgMjY0NTUsIDI2NDYwLCAyNjQ2NSwgMjY0NzAsIAorICAgIDI2NDc1LCAyNjQ4MCwgMjY0ODUsIDI2NDkwLCAyNjQ5NSwgMjY1MDAsIDI2NTA1LCAyNjUxMCwgMjY1MTUsIDI2NTIwLCAKKyAgICAyNjUyNSwgMjY1MzAsIDI2NTM1LCAyNjU0MCwgMjY1NDUsIDI2NTUwLCAyNjU1NSwgMjY1NjAsIDI2NTY1LCAyNjU3MCwgCisgICAgMjY1NzUsIDI2NTgwLCAyNjU4NSwgMjY1OTAsIDI2NTk1LCAyNjYwMCwgMjY2MDUsIDI2NjEwLCAyNjYxNSwgMjY2MjAsIAorICAgIDI2NjI2LCAyNjYzMCwgMjY2MzQsIDI2NjM4LCAyNjY0MiwgMjY2NDYsIDI2NjUwLCAyNjY1NCwgMjY2NTgsIDI2NjY0LCAKKyAgICAyNjY3MCwgMjY2NzYsIDI2NjgyLCAyNjY4OCwgMjY2OTQsIDI2NzAwLCAyNjcwNywgMjY3MTMsIDI2NzE4LCAyNjcyMywgCisgICAgMjY3MjgsIDI2NzMzLCAyNjczOCwgMjY3NDMsIDI2NzQ4LCAyNjc1MywgMjY3NTgsIDI2NzYzLCAyNjc2OCwgMjY3NzMsIAorICAgIDI2Nzc4LCAyNjc4MywgMjY3ODgsIDI2NzkzLCAyNjc5OCwgMjY4MDMsIDI2ODA4LCAyNjgxMywgMjY4MTgsIDI2ODIzLCAKKyAgICAyNjgyOCwgMjY4MzMsIDI2ODM4LCAyNjg0MywgMjY4NDgsIDI2ODUzLCAwLCAwLCAwLCAyNjg2MCwgMjY4NzEsIDI2ODc2LCAKKyAgICAyNjg4NCwgMjY4ODksIDI2ODk0LCAyNjg5OSwgMjY5MDgsIDI2OTEzLCAyNjkxOSwgMjY5MjUsIDI2OTMxLCAyNjkzNiwgCisgICAgMjY5NDIsIDI2OTQ4LCAyNjk1MiwgMjY5NTcsIDI2OTYyLCAyNjk3MiwgMjY5NzcsIDI2OTgyLCAyNjk4OSwgMjY5OTQsIAorICAgIDI2OTk5LCAyNzAwOCwgMjcwMTMsIDI3MDIyLCAyNzAyOSwgMjcwMzYsIDI3MDQzLCAyNzA1MCwgMjcwNjEsIDI3MDY4LCAKKyAgICAyNzA3MywgMjcwODMsIDI3MDg3LCAyNzA5NCwgMjcwOTksIDI3MTA2LCAyNzExMiwgMjcxMTksIDI3MTI4LCAyNzEzNSwgCisgICAgMjcxNDIsIDI3MTUxLCAyNzE1OCwgMjcxNjMsIDI3MTY4LCAyNzE3OSwgMjcxODYsIDI3MTkxLCAyNzIwMiwgMjcyMDksIAorICAgIDI3MjE0LCAyNzIxOSwgMjcyMjcsIDI3MjM2LCAyNzI0MywgMjcyNTAsIDI3MjYwLCAyNzI2NSwgMjcyNzAsIDI3Mjc1LCAKKyAgICAyNzI4NCwgMjcyOTIsIDI3Mjk3LCAyNzMwMiwgMjczMDcsIDI3MzEyLCAyNzMxNywgMjczMjIsIDI3MzI3LCAyNzMzMiwgCisgICAgMjczMzcsIDI3MzQyLCAyNzM0NywgMjczNTMsIDI3MzU5LCAyNzM2NSwgMjczNzAsIDI3Mzc1LCAyNzM4MCwgMjczODUsIAorICAgIDI3MzkwLCAyNzM5NSwgMjc0MDQsIDI3NDEzLCAyNzQyMiwgMjc0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NDQwLCAKKyAgICAyNzQ0NCwgMjc0NDgsIDI3NDUyLCAyNzQ1NiwgMjc0NjEsIDI3NDY2LCAyNzQ3MSwgMjc0NzYsIDI3NDgwLCAyNzQ4NCwgCisgICAgMjc0ODksIDI3NDkzLCAwLCAyNzQ5NywgMjc1MDEsIDI3NTA2LCAyNzUxMSwgMjc1MTUsIDI3NTIwLCAyNzUyNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1MzAsIDI3NTM0LCAyNzUzOCwgMjc1NDIsIDI3NTQ2LCAyNzU1MSwgCisgICAgMjc1NTYsIDI3NTYxLCAyNzU2NiwgMjc1NzAsIDI3NTc0LCAyNzU3OSwgMjc1ODMsIDI3NTg3LCAyNzU5MiwgMjc1OTYsIAorICAgIDI3NjAxLCAyNzYwNiwgMjc2MTAsIDI3NjE1LCAyNzYyMCwgMjc2MjUsIDI3NjMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNzYzNiwgMjc2NDAsIDI3NjQ0LCAyNzY0OCwgMjc2NTIsIDI3NjU3LCAyNzY2MiwgMjc2NjcsIDI3NjcyLCAyNzY3NiwgCisgICAgMjc2ODAsIDI3Njg1LCAyNzY4OSwgMjc2OTMsIDI3Njk4LCAyNzcwMiwgMjc3MDcsIDI3NzEyLCAyNzcxNiwgMjc3MjEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NzI2LCAyNzczMCwgMjc3MzQsIDI3NzM4LCAyNzc0MiwgCisgICAgMjc3NDcsIDI3NzUyLCAyNzc1NywgMjc3NjIsIDI3NzY2LCAyNzc3MCwgMjc3NzUsIDI3Nzc5LCAwLCAyNzc4MywgMjc3ODcsIAorICAgIDI3NzkyLCAwLCAyNzc5NywgMjc4MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3ODA3LCAyNzgxMCwgCisgICAgMjc4MTQsIDI3ODE4LCAyNzgyMiwgMjc4MjYsIDI3ODMwLCAyNzgzNCwgMjc4MzgsIDI3ODQyLCAyNzg0NiwgMjc4NTAsIAorICAgIDI3ODU0LCAyNzg1OCwgMjc4NjIsIDI3ODY2LCAyNzg3MCwgMjc4NzQsIDI3ODc3LCAyNzg4MSwgMjc4ODUsIDI3ODg5LCAKKyAgICAyNzg5MywgMjc4OTcsIDI3OTAxLCAyNzkwNSwgMjc5MDksIDI3OTEzLCAyNzkxNywgMjc5MjEsIDI3OTI1LCAyNzkyOSwgCisgICAgMjc5MzMsIDI3OTM2LCAyNzkzOSwgMjc5NDMsIDI3OTQ5LCAyNzk1NSwgMjc5NjEsIDI3OTY3LCAyNzk3MywgMjc5NzksIAorICAgIDI3OTg1LCAyNzk5MSwgMjc5OTcsIDI4MDAzLCAyODAwOSwgMjgwMTUsIDI4MDIxLCAyODAyNywgMjgwMzYsIDI4MDQ1LCAKKyAgICAyODA1MSwgMjgwNTcsIDI4MDYzLCAyODA2OCwgMjgwNzIsIDI4MDc3LCAyODA4MiwgMjgwODcsIDI4MDkxLCAyODA5NiwgCisgICAgMjgxMDEsIDI4MTA2LCAyODExMCwgMjgxMTUsIDI4MTE5LCAyODEyNCwgMjgxMjksIDI4MTM0LCAyODEzOSwgMjgxNDMsIAorICAgIDI4MTQ3LCAyODE1MSwgMjgxNTUsIDI4MTU5LCAyODE2MywgMjgxNjcsIDI4MTcxLCAyODE3NSwgMjgxNzksIDI4MTg1LCAKKyAgICAyODE4OSwgMjgxOTMsIDI4MTk3LCAyODIwMSwgMjgyMDUsIDI4MjEzLCAyODIxOSwgMjgyMjMsIDI4MjI5LCAyODIzMywgCisgICAgMjgyMzksIDI4MjQzLCAwLCAwLCAyODI0NywgMjgyNTEsIDI4MjU0LCAyODI1NywgMjgyNjAsIDI4MjYzLCAyODI2NiwgCisgICAgMjgyNjksIDI4MjczLCAyODI3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMjgyODAsIDI4Mjg4LCAyODI5NiwgMjgzMDQsIDI4MzEyLCAKKyAgICAyODMyMCwgMjgzMjgsIDI4MzM2LCAyODM0NCwgMjgzNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MzYwLCAyODM2MywgMjgzNjYsIAorICAgIDI4MzY5LCAyODM3NCwgMjgzNzcsIDI4MzgyLCAyODM4OSwgMjgzOTcsIDI4NDAyLCAyODQwOSwgMjg0MTIsIDI4NDE5LCAKKyAgICAyODQyNiwgMjg0MzMsIDAsIDI4NDM3LCAyODQ0MSwgMjg0NDQsIDI4NDQ3LCAyODQ1MCwgMjg0NTMsIDI4NDU2LCAyODQ1OSwgCisgICAgMjg0NjMsIDI4NDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAyODQ3MCwgMjg0NzMsIDI4NDc2LCAyODQ3OSwgMjg0ODIsIDI4NDg1LCAKKyAgICAyODQ4OSwgMjg0OTMsIDI4NDk3LCAyODUwMCwgMjg1MDQsIDI4NTA4LCAyODUxMSwgMjg1MTUsIDI4NTE5LCAyODUyMiwgCisgICAgMjg1MjUsIDI4NTI5LCAyODUzMywgMjg1MzcsIDI4NTQxLCAyODU0NSwgMjg1NDksIDI4NTUyLCAyODU1NiwgMjg1NjAsIAorICAgIDI4NTY0LCAyODU2NywgMjg1NzEsIDI4NTc1LCAyODU3OSwgMjg1ODMsIDI4NTg3LCAyODU5MSwgMjg1OTUsIDI4NTk5LCAKKyAgICAyODYwNiwgMjg2MTEsIDI4NjE2LCAyODYyMSwgMjg2MjYsIDI4NjMyLCAyODYzOCwgMjg2NDQsIDI4NjUwLCAyODY1NSwgCisgICAgMjg2NjEsIDI4NjY3LCAyODY3MiwgMjg2NzgsIDI4Njg0LCAyODY5MCwgMjg2OTYsIDI4NzAyLCAyODcwNywgMjg3MTMsIAorICAgIDI4NzE4LCAyODcyNCwgMjg3MzAsIDI4NzM2LCAyODc0MiwgMjg3NDgsIDI4NzUzLCAyODc1OCwgMjg3NjQsIDI4NzcwLCAKKyAgICAyODc3NSwgMjg3ODEsIDI4Nzg2LCAyODc5MiwgMjg3OTcsIDI4ODAyLCAyODgwOCwgMjg4MTQsIDI4ODIwLCAyODgyNiwgCisgICAgMjg4MzIsIDI4ODM4LCAyODg0NCwgMjg4NTAsIDI4ODU2LCAyODg2MiwgMjg4NjgsIDI4ODc0LCAyODg3OSwgMjg4ODQsIAorICAgIDI4ODkwLCAyODg5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg5MDIsIDI4OTExLCAyODkyMCwgMjg5MjgsIDI4OTM2LCAKKyAgICAyODk0NiwgMjg5NTQsIDI4OTYzLCAyODk3MCwgMjg5NzcsIDI4OTg0LCAyODk5MiwgMjkwMDAsIDI5MDA4LCAyOTAxNiwgCisgICAgMjkwMjQsIDI5MDMyLCAyOTA0MCwgMjkwNDgsIDI5MDU1LCAyOTA2MywgMjkwNzEsIDI5MDc5LCAyOTA4NywgMjkwOTUsIAorICAgIDI5MTA1LCAyOTExNSwgMjkxMjUsIDI5MTM1LCAyOTE0NSwgMjkxNTUsIDI5MTY1LCAyOTE3NSwgMjkxODUsIDI5MTk1LCAKKyAgICAyOTIwNSwgMjkyMTUsIDI5MjI1LCAyOTIzNSwgMjkyNDMsIDI5MjUxLCAyOTI2MSwgMjkyNjksIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5Mjc5LCAyOTI4MywgMjkyODcsIDI5MjkxLCAyOTI5NSwgMjkyOTksIDI5MzAzLCAyOTMwNywgMjkzMTEsIDI5MzE1LCAKKyAgICAyOTMxOSwgMjkzMjMsIDI5MzI3LCAyOTMzMSwgMjkzMzUsIDI5MzM5LCAyOTM0MywgMjkzNDcsIDI5MzUxLCAyOTM1NSwgCisgICAgMjkzNTksIDI5MzYzLCAyOTM2NywgMjkzNzEsIDI5Mzc3LCAyOTM4MSwgMjkzODcsIDI5MzkxLCAyOTM5NywgMjk0MDEsIAorICAgIDI5NDA3LCAyOTQxMSwgMjk0MTUsIDI5NDE5LCAyOTQyMywgMjk0MjcsIDI5NDMxLCAyOTQzNywgMjk0NDMsIDI5NDQ5LCAKKyAgICAyOTQ1NSwgMjk0NjEsIDI5NDY3LCAyOTQ3MywgMjk0NzksIDI5NDg1LCAyOTQ5MSwgMjk0OTcsIDI5NTA0LCAyOTUxMCwgCisgICAgMjk1MTYsIDI5NTIyLCAyOTUyNiwgMjk1MzAsIDI5NTM0LCAyOTUzOCwgMjk1NDIsIDI5NTQ2LCAyOTU1MCwgMjk1NTYsIAorICAgIDI5NTYyLCAyOTU2OCwgMjk1NzMsIDI5NTgwLCAyOTU4NSwgMjk1OTAsIDI5NTk2LCAyOTYwMSwgMjk2MDgsIDI5NjE1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYyMiwgMjk2MjgsIDI5NjMyLCAyOTYzNywgMjk2NDIsIDI5NjQ3LCAKKyAgICAyOTY1MiwgMjk2NTcsIDI5NjYyLCAyOTY2NywgMjk2NzIsIDI5Njc3LCAyOTY4MiwgMjk2ODcsIDI5NjkyLCAyOTY5NywgCisgICAgMjk3MDEsIDI5NzA1LCAyOTcxMCwgMjk3MTUsIDI5NzIwLCAyOTcyNCwgMjk3MjgsIDI5NzMzLCAyOTczNywgMjk3NDIsIAorICAgIDI5NzQ3LCAyOTc1MiwgMjk3NTcsIDI5NzYxLCAyOTc2NiwgMCwgMjk3NzEsIDI5Nzc2LCAyOTc4MSwgMjk3ODYsIDI5NzkyLCAKKyAgICAyOTc5OCwgMjk4MDQsIDI5ODEwLCAyOTgxNSwgMjk4MjAsIDI5ODI2LCAyOTgzMywgMCwgMCwgMCwgMCwgMjk4NDAsIAorICAgIDI5ODQ1LCAyOTg1MSwgMjk4NTcsIDI5ODYzLCAyOTg2OCwgMjk4NzMsIDI5ODc4LCAyOTg4NCwgMjk4ODksIDI5ODk0LCAKKyAgICAyOTg5OSwgMCwgMCwgMCwgMCwgMjk5MDQsIDAsIDAsIDAsIDI5OTA5LCAyOTkxNCwgMjk5MTksIDI5OTI0LCAyOTkyOCwgCisgICAgMjk5MzIsIDI5OTM2LCAyOTk0MCwgMjk5NDQsIDI5OTQ4LCAyOTk1MywgMjk5NTcsIDI5OTYyLCAyOTk2NywgMjk5NzMsIAorICAgIDI5OTc5LCAyOTk4NSwgMjk5OTEsIDI5OTk2LCAzMDAwMiwgMzAwMDgsIDMwMDEzLCAzMDAxOCwgMzAwMjQsIDMwMDI5LCAKKyAgICAzMDAzNSwgMzAwNDEsIDMwMDQ2LCAzMDA1MiwgMzAwNTgsIDMwMDY0LCAzMDA2OSwgMzAwNzQsIDMwMDc5LCAzMDA4NSwgCisgICAgMzAwOTEsIDMwMDk2LCAzMDEwMiwgMzAxMDcsIDMwMTEzLCAzMDExOCwgMzAxMjQsIDAsIDAsIDMwMTMwLCAzMDEzNiwgCisgICAgMzAxNDIsIDMwMTQ4LCAzMDE1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxNjAsIDMwMTY5LCAKKyAgICAzMDE3OCwgMzAxODYsIDMwMTk1LCAzMDIwNCwgMzAyMTIsIDMwMjIxLCAzMDIzMCwgMzAyMzksIDMwMjQ4LCAzMDI1NiwgCisgICAgMzAyNjUsIDMwMjc0LCAzMDI4MiwgMzAyOTEsIDMwMzAwLCAzMDMwOCwgMzAzMTcsIDMwMzI2LCAzMDMzNCwgMzAzNDIsIAorICAgIDMwMzUxLCAzMDM1OSwgMzAzNjcsIDMwMzc2LCAzMDM4NCwgMzAzOTMsIDMwNDAyLCAzMDQxMCwgMzA0MTksIDMwNDI4LCAKKyAgICAzMDQzNiwgMzA0NDQsIDMwNDUzLCAzMDQ2MiwgMzA0NzAsIDMwNDc5LCAzMDQ4OCwgMzA0OTcsIDMwNTA2LCAzMDUxNSwgCisgICAgMzA1MjQsIDMwNTMzLCAwLCAwLCAwLCAwLCAzMDU0MiwgMzA1NTIsIDMwNTYxLCAzMDU3MCwgMzA1NzgsIDMwNTg3LCAKKyAgICAzMDU5NSwgMzA2MDQsIDMwNjEyLCAzMDYyMSwgMzA2MzAsIDMwNjM5LCAzMDY0OCwgMzA2NTcsIDMwNjY2LCAzMDY3NSwgCisgICAgMzA2ODQsIDMwNjkzLCAzMDcwMiwgMzA3MTEsIDMwNzIwLCAzMDcyOSwgMzA3MzgsIDMwNzQ3LCAzMDc1NiwgMzA3NjQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMwNzcyLCAzMDc4MCwgMzA3ODcsIDMwNzk0LCAzMDgwMSwgMzA4MDgsIDMwODE1LCAzMDgyMiwgCisgICAgMzA4MzAsIDMwODM3LCAzMDg0NSwgMCwgMCwgMCwgMzA4NTMsIDMwODYxLCAzMDg2OSwgMzA4NzMsIDMwODc5LCAzMDg4NSwgCisgICAgMzA4OTEsIDMwODk3LCAzMDkwMywgMzA5MDksIDMwOTE1LCAzMDkyMSwgMzA5MjcsIDMwOTMzLCAzMDkzOSwgMzA5NDUsIAorICAgIDMwOTUxLCAzMDk1NywgMzA5NjMsIDMwOTY3LCAzMDk3MywgMzA5NzksIDMwOTg1LCAzMDk5MSwgMzA5OTcsIDMxMDAzLCAKKyAgICAzMTAwOSwgMzEwMTUsIDMxMDIxLCAzMTAyNywgMzEwMzMsIDMxMDM5LCAzMTA0NSwgMzEwNTEsIDMxMDU3LCAzMTA2MSwgCisgICAgMzEwNjYsIDMxMDcxLCAzMTA3NiwgMzEwODAsIDMxMDg1LCAzMTA4OSwgMzEwOTQsIDMxMDk5LCAzMTEwNCwgMzExMDgsIAorICAgIDMxMTEzLCAzMTExOCwgMzExMjMsIDMxMTI4LCAzMTEzMywgMzExMzcsIDMxMTQyLCAzMTE0NiwgMzExNTEsIDMxMTU2LCAKKyAgICAzMTE2MCwgMzExNjQsIDMxMTY5LCAzMTE3NCwgMzExNzksIDMxMTg0LCAwLCAwLCAzMTE5MCwgMzExOTQsIDMxMjAxLCAKKyAgICAzMTIwNiwgMzEyMTIsIDMxMjE4LCAzMTIyMywgMzEyMjksIDMxMjM1LCAzMTI0MCwgMzEyNDYsIDMxMjUyLCAzMTI1OCwgCisgICAgMzEyNjQsIDMxMjcwLCAzMTI3NSwgMzEyODAsIDMxMjg2LCAzMTI5MSwgMzEyOTcsIDMxMzAyLCAzMTMwOCwgMzEzMTQsIAorICAgIDMxMzIwLCAzMTMyNiwgMzEzMzAsIDMxMzM1LCAzMTM0MCwgMzEzNDYsIDMxMzUyLCAzMTM1NywgMzEzNjMsIDMxMzY5LCAKKyAgICAzMTM3MywgMzEzNzgsIDMxMzgzLCAzMTM4OCwgMzEzOTMsIDMxMzk3LCAzMTQwMiwgMzE0MDcsIDMxNDEzLCAzMTQxOSwgCisgICAgMzE0MjUsIDMxNDMwLCAzMTQzNSwgMzE0MzksIDMxNDQ0LCAzMTQ0OCwgMzE0NTMsIDMxNDU3LCAzMTQ2MiwgMzE0NjcsIAorICAgIDMxNDcyLCAzMTQ3NywgMzE0ODQsIDMxNDkxLCAzMTQ5NywgMzE1MDcsIDMxNTE2LCAzMTUyMywgMzE1MjksIDMxNTQwLCAKKyAgICAzMTU0NSwgMzE1NTEsIDAsIDMxNTU3LCAzMTU2MiwgMzE1NjcsIDMxNTc1LCAzMTU4MSwgMzE1ODksIDMxNTk0LCAzMTYwMCwgCisgICAgMzE2MDYsIDMxNjEyLCAzMTYxNywgMzE2MjMsIDMxNjI4LCAzMTYzNSwgMzE2NDEsIDMxNjQ2LCAzMTY1MiwgMzE2NTgsIAorICAgIDMxNjY0LCAzMTY3MSwgMzE2NzgsIDMxNjg1LCAzMTY5MCwgMzE2OTUsIDMxNzAyLCAzMTcwOSwgMzE3MTYsIDMxNzIzLCAKKyAgICAzMTczMCwgMCwgMCwgMzE3MzcsIDMxNzQ0LCAzMTc1MSwgMzE3NTcsIDMxNzYzLCAzMTc2OSwgMzE3NzUsIDMxNzgxLCAKKyAgICAzMTc4NywgMzE3OTQsIDMxODAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgwNywgMzE4MTMsIDMxODE4LCAzMTgyMywgMzE4MjgsIAorICAgIDMxODMzLCAzMTgzOCwgMzE4NDMsIDMxODQ5LCAzMTg1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4NjAsIDMxODY1LCAzMTg3MCwgCisgICAgMzE4NzUsIDMxODgwLCAzMTg4NSwgMzE4OTAsIDMxODk5LCAzMTkwNiwgMzE5MTEsIDMxOTE2LCAzMTkyMSwgMzE5MjYsIAorICAgIDMxOTMxLCAwLCAwLCAzMTkzNiwgMzE5NDMsIDMxOTQ2LCAzMTk0OSwgMzE5NTIsIDMxOTU3LCAzMTk2MSwgMzE5NjcsIAorICAgIDMxOTcxLCAzMTk3NiwgMzE5ODMsIDMxOTkxLCAzMTk5NSwgMzIwMDAsIDMyMDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI0OCwgMTIyNTcsIDEyMjY1LCAKLSAgICAxMjI3MiwgMTIyODAsIDEyMjkyLCAxMjI5OSwgMTIzMDYsIDEyMzEzLCAxMjMyNSwgMTIzMzYsIDEyMzQzLCAxMjM1MSwgCi0gICAgMTIzNTcsIDEyMzYyLCAxMjM3MCwgMTIzNzgsIDEyMzg2LCAxMjM5MiwgMTI0MDIsIDEyNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjAwOSwgMzIwMTUsIDMyMDIxLCAzMjAyNSwgMzIwMjksIDMyMDMzLCAKKyAgICAzMjAzNywgMzIwNDMsIDMyMDQ3LCAzMjA1MywgMzIwNTcsIDMyMDYzLCAzMjA2OSwgMzIwNzcsIDMyMDgzLCAzMjA5MSwgCisgICAgMzIwOTUsIDMyMDk5LCAzMjEwMywgMzIxMDksIDMyMTEyLCAzMjExOCwgMzIxMjIsIDMyMTI4LCAzMjEzMiwgMzIxMzYsIAorICAgIDMyMTQyLCAzMjE0NiwgMzIxNTIsIDMyMTU2LCAzMjE2MiwgMzIxNzAsIDMyMTc4LCAzMjE4NiwgMzIxOTIsIDMyMTk2LCAKKyAgICAzMjIwMiwgMzIyMDYsIDMyMjEyLCAzMjIxNSwgMzIyMTgsIDMyMjI0LCAzMjIyOCwgMzIyMzQsIDMyMjM3LCAzMjI0MCwgCisgICAgMzIyNDQsIDMyMjQ3LCAzMjI1MSwgMzIyNTcsIDMyMjYzLCAzMjI2NywgMzIyNzAsIDMyMjc0LCAzMjI3OSwgMzIyODQsIAorICAgIDMyMjkxLCAzMjI5NiwgMzIzMDMsIDMyMzEwLCAzMjMxOSwgMzIzMjYsIDMyMzM1LCAzMjM0MCwgMzIzNDcsIDMyMzU0LCAKKyAgICAzMjM2MywgMzIzNjgsIDMyMzc1LCAzMjM4MCwgMzIzODYsIDMyMzkyLCAzMjM5OCwgMzI0MDQsIDMyNDEwLCAzMjQxNiwgMCwgCisgICAgMCwgMCwgMCwgMzI0MjIsIDMyNDI2LCAzMjQyOSwgMzI0MzIsIDMyNDM1LCAzMjQzOCwgMzI0NDEsIDMyNDQ0LCAzMjQ0OCwgCisgICAgMzI0NTEsIDMyNDU1LCAzMjQ1OCwgMzI0NjEsIDMyNDY0LCAzMjQ2OSwgMzI0NzQsIDMyNDc5LCAzMjQ4MiwgMzI0ODcsIAorICAgIDMyNDkyLCAzMjQ5NywgMzI1MDIsIDMyNTA5LCAzMjUxNCwgMzI1MTksIDMyNTI0LCAzMjUyOSwgMzI1MzYsIDMyNTQyLCAKKyAgICAzMjU0OCwgMzI1NTQsIDMyNTYwLCAzMjU2NiwgMzI1NzUsIDMyNTg0LCAzMjU5MCwgMzI1OTYsIDMyNjA0LCAzMjYxMiwgCisgICAgMzI2MjEsIDMyNjMwLCAzMjYzOCwgMzI2NDYsIDMyNjU1LCAzMjY2NCwgMCwgMCwgMCwgMzI2NzIsIDMyNjc3LCAzMjY4MiwgCisgICAgMzI2ODcsIDMyNjkxLCAzMjY5NSwgMzI2OTksIDMyNzA0LCAzMjcwOCwgMzI3MTIsIDMyNzE3LCAzMjcyMSwgMzI3MjYsIAorICAgIDMyNzMxLCAzMjczNiwgMzI3NDEsIDMyNzQ2LCAzMjc1MSwgMzI3NTYsIDMyNzYxLCAzMjc2NiwgMzI3NzAsIDMyNzc0LCAKKyAgICAzMjc3OSwgMzI3ODQsIDMyNzg5LCAzMjc5MywgMzI3OTcsIDMyODAyLCAzMjgwNiwgMzI4MTEsIDMyODE2LCAzMjgyMSwgCisgICAgMzI4MjUsIDMyODMxLCAzMjgzNywgMzI4NDMsIDMyODQ5LCAzMjg1NSwgMzI4NjEsIDMyODY3LCAzMjg3MywgMzI4NzksIAorICAgIDMyODg0LCAzMjg4OSwgMzI4OTYsIDMyOTA0LCAzMjkwOSwgMzI5MTQsIDMyOTE5LCAzMjkyMywgMzI5MjcsIDMyOTMxLCAKKyAgICAzMjkzNSwgMzI5MzksIDMyOTQzLCAzMjk0OCwgMzI5NTIsIDMyOTU3LCAzMjk2MSwgMzI5NjYsIDMyOTcxLCAzMjk3NiwgCisgICAgMzI5ODIsIDMyOTg4LCAzMjk5MiwgMzI5OTgsIDMzMDAyLCAzMzAwOCwgMzMwMTQsIDMzMDE5LCAzMzAyNiwgMzMwMzAsIAorICAgIDMzMDM2LCAzMzA0MCwgMzMwNDYsIDMzMDUxLCAzMzA1OCwgMzMwNjUsIDMzMDcwLCAzMzA3NywgMzMwODIsIDMzMDg3LCAKKyAgICAzMzA5MiwgMzMwOTksIDMzMTAzLCAzMzEwOSwgMzMxMTYsIDMzMTIzLCAzMzEyOCwgMzMxMzUsIDMzMTQyLCAzMzE0NiwgCisgICAgMzMxNTIsIDMzMTU3LCAzMzE2MSwgMzMxNjcsIDMzMTcyLCAzMzE3NywgMzMxODIsIDMzMTg3LCAzMzE5MSwgMzMxOTUsIAorICAgIDMzMjAwLCAzMzIwNSwgMzMyMTIsIDMzMjE4LCAzMzIyMywgMzMyMzAsIDMzMjM1LCAzMzI0MiwgMzMyNDcsIDMzMjU3LCAKKyAgICAzMzI2MywgMzMyNjksIDMzMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzI3NywgMzMyODYsIDMzMjkzLCAzMzMwMCwgCisgICAgMzMzMDcsIDMzMzExLCAzMzMxNiwgMzMzMjEsIDMzMzI2LCAzMzMzMSwgMzMzMzYsIDMzMzQxLCAzMzM0NiwgMzMzNTEsIAorICAgIDMzMzU2LCAzMzM2MSwgMzMzNjYsIDMzMzcxLCAzMzM3NSwgMzMzNzksIDMzMzg0LCAzMzM4OSwgMzMzOTQsIDMzMzk5LCAKKyAgICAzMzQwNCwgMzM0MDksIDMzNDEzLCAzMzQxOCwgMzM0MjMsIDMzNDI4LCAzMzQzMywgMzM0MzcsIDMzNDQyLCAzMzQ0NiwgCisgICAgMzM0NTAsIDMzNDU1LCAzMzQ2MCwgMzM0NjUsIDMzNDcwLCAzMzQ3NSwgMzM0NzksIDMzNDg1LCAzMzQ5MiwgMzM0OTgsIAorICAgIDMzNTAzLCAzMzUwOCwgMzM1MTQsIDMzNTE5LCAzMzUyNSwgMzM1MzAsIDMzNTM2LCAzMzU0MiwgMzM1NDcsIDMzNTUzLCAKKyAgICAzMzU1OSwgMzM1NjQsIDMzNTcwLCAzMzU3NiwgMzM1ODIsIDMzNTg3LCAwLCAwLCAwLCAzMzU5MiwgMzM1OTgsIDMzNjA4LCAKKyAgICAzMzYxNCwgMzM2MjIsIDMzNjI4LCAzMzYzMywgMzM2MzcsIDMzNjQxLCAzMzY0NSwgMzM2NDksIDMzNjUzLCAzMzY1NywgCisgICAgMzM2NjIsIDMzNjY2LCAwLCAwLCAwLCAzMzY3MSwgMzM2NzYsIDMzNjgxLCAzMzY4NiwgMzM2OTMsIDMzNjk5LCAzMzcwNSwgCisgICAgMzM3MTEsIDMzNzE3LCAzMzcyMywgMzM3MjksIDMzNzM2LCAzMzc0MiwgMzM3NDksIDMzNzU1LCAzMzc2MiwgMzM3NjksIAorICAgIDMzNzc2LCAzMzc4MywgMzM3OTAsIDMzNzk3LCAzMzgwNCwgMzM4MTEsIDMzODE4LCAzMzgyNSwgMzM4MzIsIDMzODM5LCAKKyAgICAzMzg0NiwgMzM4NTMsIDMzODYwLCAzMzg2NywgMzM4NzQsIDMzODgxLCAzMzg4OCwgMzM4OTUsIDMzOTAyLCAzMzkwOSwgCisgICAgMzM5MTYsIDMzOTIzLCAzMzkzMCwgMzM5MzcsIDMzOTQ0LCAzMzk1MSwgMzM5NTgsIDMzOTY2LCAzMzk3NCwgMzM5ODIsIAorICAgIDMzOTg4LCAzMzk5NCwgMzQwMDAsIDM0MDA4LCAzNDAxNywgMzQwMjQsIDM0MDMxLCAzNDAzNywgMzQwNDQsIDM0MDUxLCAKKyAgICAzNDA1OCwgMzQwNjYsIDM0MDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQxNywgMTI0MjMsIDEyNDI4LCAKLSAgICAxMjQzMywgMTI0MzgsIDEyNDQzLCAxMjQ0OCwgMTI0NTMsIDEyNDU4LCAxMjQ2MywgMTI0NjgsIDEyNDczLCAxMjQ3OCwgCi0gICAgMTI0ODMsIDEyNDg3LCAxMjQ5MSwgMTI0OTUsIDEyNTAwLCAxMjUwNiwgMTI1MTIsIDEyNTE4LCAxMjUyMywgMTI1MjgsIAotICAgIDEyNTMzLCAxMjUzOCwgMTI1NDQsIDEyNTUzLCAxMjU2MSwgMTI1NjcsIDEyNTc1LCAxMjU4MSwgMTI1ODUsIDEyNTg5LCAKLSAgICAxMjU5MywgMTI1OTgsIDEyNjAxLCAxMjYwNSwgMTI2MDgsIDEyNjEyLCAxMjYxNSwgMTI2MTksIDEyNjIzLCAxMjYyNywgCi0gICAgMTI2MzIsIDEyNjM3LCAxMjY0MCwgMTI2NDQsIDEyNjQ5LCAxMjY1NCwgMTI2NTcsIDEyNjYxLCAxMjY2NCwgMTI2NjgsIAotICAgIDEyNjcyLCAxMjY3NiwgMTI2ODAsIDEyNjg0LCAxMjY4OCwgMTI2OTIsIDEyNjk2LCAxMjcwMCwgMTI3MDQsIDEyNzA4LCAKLSAgICAxMjcxMiwgMTI3MTYsIDEyNzIwLCAxMjcyNCwgMTI3MjgsIDEyNzMyLCAxMjczNiwgMTI3NDAsIDEyNzQ0LCAxMjc0NywgCi0gICAgMTI3NTEsIDEyNzU1LCAxMjc1OSwgMTI3NjIsIDEyNzY1LCAxMjc2OSwgMTI3NzMsIDEyNzc3LCAxMjc4MSwgMTI3ODUsIAotICAgIDEyNzg5LCAxMjc5MywgMTI3OTcsIDEyODAxLCAxMjgwNCwgMTI4MDksIDEyODE0LCAxMjgxOCwgMTI4MjIsIDEyODI3LCAKLSAgICAxMjgzMSwgMTI4MzYsIDEyODQwLCAxMjg0NSwgMTI4NTAsIDEyODU2LCAxMjg2MiwgMTI4NjgsIDEyODcyLCAxMjg3NywgCi0gICAgMTI4ODMsIDEyODg5LCAxMjg5MywgMTI4OTgsIDEyOTAyLCAxMjkwOCwgMTI5MTMsIDEyOTE2LCAxMjkyMiwgMTI5MjgsIAotICAgIDEyOTMzLCAxMjkzOCwgMTI5NDUsIDEyOTUwLCAxMjk1NSwgMTI5NTksIDEyOTYzLCAxMjk2NywgMTI5NzEsIDEyOTc1LCAKLSAgICAxMjk3OSwgMTI5ODMsIDEyOTg3LCAxMjk5MiwgMTI5OTcsIDEzMDAyLCAxMzAwOCwgMTMwMTEsIDEzMDE1LCAxMzAxOSwgCi0gICAgMTMwMjIsIDEzMDI1LCAxMzAyOCwgMTMwMzEsIDEzMDM0LCAxMzAzNywgMTMwNDEsIDEzMDQ0LCAxMzA0OCwgMTMwNTIsIAotICAgIDEzMDU5LCAxMzA2NCwgMTMwNjgsIDEzMDcyLCAxMzA3NiwgMTMwODAsIDEzMDg0LCAxMzA5MCwgMTMwOTQsIDEzMDk4LCAKLSAgICAxMzEwMiwgMTMxMDYsIDEzMTEyLCAxMzExNiwgMTMxMjAsIDEzMTIzLCAxMzEyNywgMTMxMzEsIDAsIDEzMTM1LCAxMzEzOCwgCi0gICAgMTMxNDIsIDEzMTQ1LCAxMzE0OSwgMTMxNTIsIDEzMTU2LCAxMzE2MCwgMCwgMCwgMTMxNjQsIDEzMTY3LCAwLCAwLCAKLSAgICAxMzE3MSwgMTMxNzQsIDEzMTc4LCAxMzE4MSwgMTMxODUsIDEzMTg5LCAxMzE5MywgMTMxOTcsIDEzMjAxLCAxMzIwNSwgCi0gICAgMTMyMDksIDEzMjEzLCAxMzIxNywgMTMyMjEsIDEzMjI1LCAxMzIyOSwgMTMyMzMsIDEzMjM3LCAxMzI0MSwgMTMyNDUsIAotICAgIDEzMjQ5LCAxMzI1MywgMCwgMTMyNTcsIDEzMjYwLCAxMzI2NCwgMTMyNjgsIDEzMjcyLCAxMzI3NSwgMTMyNzgsIDAsIAotICAgIDEzMjgyLCAwLCAwLCAwLCAxMzI4NiwgMTMyOTAsIDEzMjk0LCAxMzI5OCwgMCwgMCwgMTMzMDEsIDEzMzA1LCAxMzMwOSwgCi0gICAgMTMzMTQsIDEzMzE4LCAxMzMyMywgMTMzMjcsIDEzMzMyLCAxMzMzNywgMCwgMCwgMTMzNDMsIDEzMzQ3LCAwLCAwLCAKLSAgICAxMzM1MiwgMTMzNTYsIDEzMzYxLCAxMzM2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzNzEsIDAsIDAsIDAsIDAsIAotICAgIDEzMzc3LCAxMzM4MSwgMCwgMTMzODUsIDEzMzg5LCAxMzM5NCwgMTMzOTksIDEzNDA0LCAwLCAwLCAxMzQxMCwgMTM0MTQsIAotICAgIDEzNDE3LCAxMzQyMCwgMTM0MjMsIDEzNDI2LCAxMzQyOSwgMTM0MzIsIDEzNDM2LCAxMzQzOSwgMTM0NDMsIDEzNDUxLCAKLSAgICAxMzQ2MCwgMTM0NjQsIDEzNDY4LCAxMzQ3NCwgMTM0ODAsIDEzNDg2LCAxMzQ5MiwgMTM1MDYsIDEzNTEzLCAxMzUxNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM1MjAsIDEzNTI3LCAxMzUzMiwgMCwgMTM1MzcsIDEzNTQxLCAxMzU0NiwgMTM1NTAsIDEzNTU1LCAKLSAgICAxMzU1OSwgMCwgMCwgMCwgMCwgMTM1NjQsIDEzNTY5LCAwLCAwLCAxMzU3NCwgMTM1NzksIDEzNTg0LCAxMzU4OCwgMTM1OTMsIAotICAgIDEzNTk4LCAxMzYwMywgMTM2MDgsIDEzNjEzLCAxMzYxOCwgMTM2MjMsIDEzNjI4LCAxMzYzMywgMTM2MzgsIDEzNjQzLCAKLSAgICAxMzY0OCwgMTM2NTMsIDEzNjU4LCAxMzY2MywgMTM2NjgsIDEzNjczLCAxMzY3OCwgMCwgMTM2ODMsIDEzNjg3LCAxMzY5MiwgCi0gICAgMTM2OTcsIDEzNzAyLCAxMzcwNiwgMTM3MTAsIDAsIDEzNzE1LCAxMzcyMCwgMCwgMTM3MjUsIDEzNzMwLCAwLCAxMzczNSwgCi0gICAgMTM3NDAsIDAsIDAsIDEzNzQ0LCAwLCAxMzc0OSwgMTM3NTUsIDEzNzYwLCAxMzc2NiwgMTM3NzEsIDAsIDAsIDAsIDAsIAotICAgIDEzNzc3LCAxMzc4MywgMCwgMCwgMTM3ODksIDEzNzk1LCAxMzgwMSwgMCwgMCwgMCwgMTM4MDYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzODExLCAxMzgxNiwgMTM4MjEsIDEzODI2LCAwLCAxMzgzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4MzYsIAotICAgIDEzODQxLCAxMzg0NSwgMTM4NDksIDEzODUzLCAxMzg1NywgMTM4NjEsIDEzODY1LCAxMzg3MCwgMTM4NzQsIDEzODc5LCAKLSAgICAxMzg4MywgMTM4ODcsIDEzODkxLCAxMzg5NSwgMTM5MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzOTA2LCAxMzkxMSwgMTM5MTYsIDAsIDEzOTIxLCAxMzkyNSwgMTM5MzAsIDEzOTM0LCAxMzkzOSwgMTM5NDMsIDEzOTQ4LCAKLSAgICAxMzk1MywgMTM5NTgsIDAsIDEzOTY0LCAxMzk2OCwgMTM5NzMsIDAsIDEzOTc5LCAxMzk4MywgMTM5ODgsIDEzOTkyLCAKLSAgICAxMzk5NywgMTQwMDIsIDE0MDA3LCAxNDAxMiwgMTQwMTcsIDE0MDIyLCAxNDAyNywgMTQwMzIsIDE0MDM3LCAxNDA0MiwgCi0gICAgMTQwNDcsIDE0MDUyLCAxNDA1NywgMTQwNjIsIDE0MDY3LCAxNDA3MiwgMTQwNzcsIDE0MDgyLCAwLCAxNDA4NywgMTQwOTEsIAotICAgIDE0MDk2LCAxNDEwMSwgMTQxMDYsIDE0MTEwLCAxNDExNCwgMCwgMTQxMTksIDE0MTI0LCAwLCAxNDEyOSwgMTQxMzQsIAotICAgIDE0MTM5LCAxNDE0NCwgMTQxNDksIDAsIDAsIDE0MTUzLCAxNDE1OCwgMTQxNjMsIDE0MTY5LCAxNDE3NCwgMTQxODAsIAotICAgIDE0MTg1LCAxNDE5MSwgMTQxOTcsIDE0MjA0LCAwLCAxNDIxMSwgMTQyMTYsIDE0MjIyLCAwLCAxNDIyOSwgMTQyMzQsIAotICAgIDE0MjQwLCAwLCAwLCAxNDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyNDksIAotICAgIDE0MjU1LCAxNDI2MSwgMTQyNjcsIDAsIDAsIDE0Mjc0LCAxNDI3OSwgMTQyODMsIDE0Mjg3LCAxNDI5MSwgMTQyOTUsIAotICAgIDE0Mjk5LCAxNDMwMywgMTQzMDgsIDE0MzEyLCAxNDMxNywgMTQzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MzI3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDMzMiwgMTQzMzYsIDE0MzQwLCAwLCAxNDM0NCwgMTQzNDcsIDE0MzUxLCAxNDM1NCwgCi0gICAgMTQzNTgsIDE0MzYxLCAxNDM2NSwgMTQzNjksIDAsIDAsIDE0MzczLCAxNDM3NiwgMCwgMCwgMTQzODAsIDE0MzgzLCAKLSAgICAxNDM4NywgMTQzOTAsIDE0Mzk0LCAxNDM5OCwgMTQ0MDIsIDE0NDA2LCAxNDQxMCwgMTQ0MTQsIDE0NDE4LCAxNDQyMiwgCi0gICAgMTQ0MjYsIDE0NDMwLCAxNDQzNCwgMTQ0MzgsIDE0NDQyLCAxNDQ0NiwgMTQ0NTAsIDE0NDU0LCAxNDQ1OCwgMTQ0NjIsIDAsIAotICAgIDE0NDY2LCAxNDQ2OSwgMTQ0NzMsIDE0NDc3LCAxNDQ4MSwgMTQ0ODQsIDE0NDg3LCAwLCAxNDQ5MSwgMTQ0OTUsIDAsIAotICAgIDE0NDk5LCAxNDUwMywgMTQ1MDcsIDE0NTExLCAxNDUxNSwgMCwgMCwgMTQ1MTgsIDE0NTIyLCAxNDUyNiwgMTQ1MzEsIAotICAgIDE0NTM1LCAxNDU0MCwgMTQ1NDQsIDE0NTQ5LCAxNDU1NCwgMCwgMCwgMTQ1NjAsIDE0NTY0LCAwLCAwLCAxNDU2OSwgCi0gICAgMTQ1NzMsIDE0NTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU4MiwgMTQ1ODgsIDAsIDAsIDAsIDAsIDE0NTk0LCAKLSAgICAxNDU5OCwgMCwgMTQ2MDIsIDE0NjA2LCAxNDYxMSwgMTQ2MTYsIDE0NjIxLCAwLCAwLCAxNDYyNywgMTQ2MzEsIDE0NjM0LCAKLSAgICAxNDYzNywgMTQ2NDAsIDE0NjQzLCAxNDY0NiwgMTQ2NDksIDE0NjUzLCAxNDY1NiwgMTQ2NjAsIDE0NjYzLCAxNDY2NywgCi0gICAgMTQ2NzMsIDE0Njc5LCAxNDY4NSwgMTQ2OTEsIDE0Njk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDcwMywgCi0gICAgMTQ3MDcsIDAsIDE0NzExLCAxNDcxNCwgMTQ3MTgsIDE0NzIxLCAxNDcyNSwgMTQ3MjgsIDAsIDAsIDAsIDE0NzMyLCAKLSAgICAxNDczNSwgMTQ3MzksIDAsIDE0NzQzLCAxNDc0NiwgMTQ3NTAsIDE0NzU0LCAwLCAwLCAwLCAxNDc1NywgMTQ3NjEsIDAsIAotICAgIDE0NzY1LCAwLCAxNDc2OSwgMTQ3NzMsIDAsIDAsIDAsIDE0Nzc3LCAxNDc4MSwgMCwgMCwgMCwgMTQ3ODUsIDE0Nzg5LCAKLSAgICAxNDc5MywgMCwgMCwgMCwgMTQ3OTYsIDE0Nzk5LCAxNDgwMiwgMTQ4MDYsIDE0ODEwLCAxNDgxNCwgMTQ4MTgsIDE0ODIyLCAKLSAgICAxNDgyNiwgMTQ4MzAsIDE0ODM0LCAxNDgzOCwgMCwgMCwgMCwgMCwgMTQ4NDEsIDE0ODQ2LCAxNDg1MCwgMTQ4NTUsIAotICAgIDE0ODU5LCAwLCAwLCAwLCAxNDg2NCwgMTQ4NjgsIDE0ODczLCAwLCAxNDg3OCwgMTQ4ODIsIDE0ODg3LCAxNDg5MiwgMCwgMCwgCi0gICAgMTQ4OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDkwNSwgMTQ5MDksIDE0OTEyLCAxNDkxNSwgMTQ5MTgsIDE0OTIxLCAxNDkyNCwgMTQ5MjcsIDE0OTMxLCAxNDkzNCwgCi0gICAgMTQ5MzgsIDE0OTQyLCAxNDk0NywgMTQ5NTIsIDE0OTU2LCAxNDk2MCwgMTQ5NjQsIDE0OTY4LCAxNDk3MiwgMTQ5NzcsIAotICAgIDE0OTgxLCAwLCAwLCAwLCAwLCAwLCAxNDk4NCwgMTQ5OTAsIDE0OTk0LCAxNDk5OCwgMCwgMTUwMDIsIDE1MDA1LCAxNTAwOSwgCi0gICAgMTUwMTIsIDE1MDE2LCAxNTAxOSwgMTUwMjMsIDE1MDI3LCAwLCAxNTAzMSwgMTUwMzQsIDE1MDM4LCAwLCAxNTA0MiwgCi0gICAgMTUwNDUsIDE1MDQ5LCAxNTA1MywgMTUwNTYsIDE1MDYwLCAxNTA2NCwgMTUwNjgsIDE1MDcyLCAxNTA3NiwgMTUwODAsIAotICAgIDE1MDg0LCAxNTA4OCwgMTUwOTIsIDE1MDk2LCAxNTEwMCwgMTUxMDQsIDE1MTA4LCAxNTExMiwgMTUxMTYsIDE1MTIwLCAKLSAgICAxNTEyNCwgMTUxMjgsIDAsIDE1MTMyLCAxNTEzNSwgMTUxMzksIDE1MTQzLCAxNTE0NywgMTUxNTAsIDE1MTUzLCAxNTE1NywgCi0gICAgMTUxNjEsIDE1MTY1LCAxNTE2OSwgMTUxNzMsIDE1MTc3LCAxNTE4MSwgMTUxODUsIDE1MTg5LCAwLCAwLCAwLCAxNTE5MiwgCi0gICAgMTUxOTYsIDE1MjAxLCAxNTIwNSwgMTUyMTAsIDE1MjE0LCAxNTIxOSwgMTUyMjQsIDAsIDE1MjMwLCAxNTIzNCwgMTUyMzksIAotICAgIDAsIDE1MjQ0LCAxNTI0OCwgMTUyNTMsIDE1MjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI2MiwgMTUyNjYsIDAsIAotICAgIDE1MjcyLCAxNTI3NiwgMTUyODAsIDAsIDAsIDAsIDAsIDAsIDE1Mjg0LCAxNTI4OSwgMTUyOTQsIDE1Mjk5LCAwLCAwLCAKLSAgICAxNTMwNSwgMTUzMDksIDE1MzEyLCAxNTMxNSwgMTUzMTgsIDE1MzIxLCAxNTMyNCwgMTUzMjcsIDE1MzMxLCAxNTMzNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzgsIDE1MzUxLCAxNTM2MywgMTUzNzUsIDE1Mzg3LCAxNTM5OSwgMTU0MTEsIAotICAgIDE1NDIzLCAwLCAxNTQyNywgMTU0MzEsIDE1NDM1LCAwLCAxNTQzOSwgMTU0NDIsIDE1NDQ2LCAxNTQ0OSwgMTU0NTMsIAotICAgIDE1NDU2LCAxNTQ2MCwgMTU0NjQsIDAsIDE1NDY4LCAxNTQ3MSwgMTU0NzUsIDAsIDE1NDc5LCAxNTQ4MiwgMTU0ODYsIAotICAgIDE1NDkwLCAxNTQ5MywgMTU0OTcsIDE1NTAxLCAxNTUwNSwgMTU1MDksIDE1NTEzLCAxNTUxNywgMTU1MjEsIDE1NTI1LCAKLSAgICAxNTUyOSwgMTU1MzMsIDE1NTM3LCAxNTU0MSwgMTU1NDUsIDE1NTQ5LCAxNTU1MywgMTU1NTcsIDE1NTYxLCAxNTU2NSwgMCwgCi0gICAgMTU1NjksIDE1NTcyLCAxNTU3NiwgMTU1ODAsIDE1NTg0LCAxNTU4NywgMTU1OTAsIDE1NTk0LCAxNTU5OCwgMTU2MDIsIDAsIAotICAgIDE1NjA2LCAxNTYxMCwgMTU2MTQsIDE1NjE4LCAxNTYyMiwgMCwgMCwgMTU2MjUsIDE1NjI5LCAxNTYzMywgMTU2MzgsIAotICAgIDE1NjQyLCAxNTY0NywgMTU2NTEsIDE1NjU2LCAxNTY2MSwgMCwgMTU2NjcsIDE1NjcxLCAxNTY3NiwgMCwgMTU2ODEsIAotICAgIDE1Njg1LCAxNTY5MCwgMTU2OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Njk5LCAxNTcwMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTU3MDksIDAsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAwLCAwLCAxNTczNCwgMTU3MzgsIDE1NzQxLCAKLSAgICAxNTc0NCwgMTU3NDcsIDE1NzUwLCAxNTc1MywgMTU3NTYsIDE1NzYwLCAxNTc2MywgMCwgMTU3NjcsIDE1NzcxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc3NSwgMTU3NzksIDE1NzgzLCAwLCAxNTc4NywgMTU3OTAsIAotICAgIDE1Nzk0LCAxNTc5NywgMTU4MDEsIDE1ODA0LCAxNTgwOCwgMTU4MTIsIDAsIDE1ODE2LCAxNTgxOSwgMTU4MjMsIDAsIAotICAgIDE1ODI3LCAxNTgzMCwgMTU4MzQsIDE1ODM4LCAxNTg0MSwgMTU4NDUsIDE1ODQ5LCAxNTg1MywgMTU4NTcsIDE1ODYxLCAKLSAgICAxNTg2NSwgMTU4NjksIDE1ODczLCAxNTg3NywgMTU4ODEsIDE1ODg1LCAxNTg4OSwgMTU4OTMsIDE1ODk3LCAxNTkwMSwgCi0gICAgMTU5MDUsIDE1OTA5LCAxNTkxMywgMTU5MTcsIDE1OTIxLCAxNTkyNCwgMTU5MjgsIDE1OTMyLCAxNTkzNiwgMTU5MzksIAotICAgIDE1OTQyLCAxNTk0NiwgMTU5NTAsIDE1OTU0LCAxNTk1OCwgMTU5NjIsIDE1OTY2LCAxNTk3MCwgMTU5NzQsIDE1OTc4LCAKLSAgICAxNTk4MSwgMCwgMCwgMTU5ODUsIDE1OTg5LCAxNTk5NCwgMTU5OTgsIDE2MDAzLCAxNjAwNywgMTYwMTIsIDE2MDE3LCAwLCAKLSAgICAxNjAyMywgMTYwMjcsIDE2MDMyLCAwLCAxNjAzNywgMTYwNDEsIDE2MDQ2LCAxNjA1MSwgMTYwNTUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE2MDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjA2NiwgMTYwNzIsIDE2MDc3LCAxNjA4MiwgMTYwODcsIAotICAgIDAsIDAsIDE2MDkzLCAxNjA5NywgMTYxMDAsIDE2MTAzLCAxNjEwNiwgMTYxMDksIDE2MTEyLCAxNjExNSwgMTYxMTksIAotICAgIDE2MTIyLCAxNjEyNiwgMTYxMzAsIDE2MTM1LCAxNjE0MCwgMTYxNDYsIDE2MTUyLCAwLCAwLCAwLCAxNjE1OCwgMTYxNjIsIAotICAgIDE2MTY4LCAxNjE3NCwgMTYxODAsIDE2MTg1LCAxNjE5MSwgMCwgMCwgMTYxOTcsIDE2MjAxLCAwLCAxNjIwNSwgMTYyMDksIAotICAgIDE2MjEzLCAxNjIxNywgMTYyMjEsIDE2MjI1LCAxNjIyOSwgMTYyMzMsIDE2MjM3LCAxNjI0MSwgMTYyNDUsIDE2MjQ5LCAKLSAgICAxNjI1MywgMTYyNTcsIDE2MjYxLCAxNjI2NSwgMTYyNjksIDE2MjczLCAwLCAwLCAwLCAxNjI3NywgMTYyODMsIDE2Mjg5LCAKLSAgICAxNjI5NSwgMTYzMDEsIDE2MzA3LCAxNjMxMywgMTYzMTksIDE2MzI1LCAxNjMzMSwgMTYzMzcsIDE2MzQzLCAxNjM1MSwgCi0gICAgMTYzNTcsIDE2MzYzLCAxNjM2OSwgMTYzNzUsIDE2MzgxLCAxNjM4NywgMTYzOTMsIDE2Mzk5LCAxNjQwNSwgMTY0MTEsIAotICAgIDE2NDE3LCAwLCAxNjQyMywgMTY0MjksIDE2NDM1LCAxNjQ0MSwgMTY0NDcsIDE2NDUzLCAxNjQ1NywgMTY0NjMsIDE2NDY3LCAKLSAgICAwLCAxNjQ3MSwgMCwgMCwgMTY0NzcsIDE2NDgxLCAxNjQ4NywgMTY0OTMsIDE2NDk5LCAxNjUwMywgMTY1MDksIDAsIDAsIDAsIAotICAgIDE2NTEzLCAwLCAwLCAwLCAwLCAxNjUxNywgMTY1MjIsIDE2NTI5LCAxNjUzNiwgMTY1NDMsIDE2NTUwLCAwLCAxNjU1NywgMCwgCi0gICAgMTY1NjQsIDE2NTY5LCAxNjU3NCwgMTY1ODEsIDE2NTg4LCAxNjU5NywgMTY2MDgsIDE2NjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNjYyMiwgMTY2MjgsIDE2NjMzLCAxNjYzOCwgMTY2NDMsIDE2NjQ4LCAxNjY1MywgMTY2NTgsIDE2NjY0LCAxNjY2OSwgMCwgCi0gICAgMCwgMTY2NzUsIDE2NjgyLCAxNjY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2OTQsIDE2NzAxLCAKLSAgICAxNjcwOCwgMTY3MTUsIDE2NzIyLCAxNjcyOSwgMTY3MzYsIDE2NzQzLCAxNjc1MCwgMTY3NTcsIDE2NzY0LCAxNjc3MSwgCi0gICAgMTY3NzgsIDE2Nzg1LCAxNjc5MiwgMTY3OTksIDE2ODA2LCAxNjgxMywgMTY4MjAsIDE2ODI3LCAxNjgzNCwgMTY4NDEsIAotICAgIDE2ODQ4LCAxNjg1NSwgMTY4NjIsIDE2ODY5LCAxNjg3NiwgMTY4ODMsIDE2ODkwLCAxNjg5NywgMTY5MDQsIDE2OTExLCAKLSAgICAxNjkxOCwgMTY5MjQsIDE2OTMxLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjIsIDE2OTY5LCAxNjk3NiwgCi0gICAgMTY5ODMsIDE2OTkwLCAxNjk5NywgMTcwMDMsIDE3MDEwLCAxNzAxNSwgMTcwMjEsIDE3MDI4LCAxNzAzNSwgMTcwNDIsIAotICAgIDE3MDQ4LCAxNzA1NSwgMTcwNjIsIDE3MDY5LCAxNzA3NSwgMTcwODIsIDAsIDAsIDAsIDAsIDE3MDg3LCAxNzA5NCwgCi0gICAgMTcxMDAsIDE3MTA3LCAxNzExMywgMTcxMjIsIDE3MTMxLCAxNzEzNiwgMTcxNDEsIDE3MTQ2LCAxNzE1MywgMTcxNjAsIAotICAgIDE3MTY3LCAxNzE3NCwgMTcxNzksIDE3MTg0LCAxNzE4OSwgMTcxOTQsIDE3MTk5LCAxNzIwMywgMTcyMDcsIDE3MjExLCAKLSAgICAxNzIxNSwgMTcyMTksIDE3MjIzLCAxNzIyOCwgMTcyMzIsIDE3MjM3LCAxNzI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTcyNDcsIDE3MjUyLCAwLCAxNzI1OSwgMCwgMCwgMTcyNjYsIDE3MjcxLCAwLCAxNzI3NiwgMCwgCi0gICAgMCwgMTcyODMsIDAsIDAsIDAsIDAsIDAsIDAsIDE3Mjg4LCAxNzI5MywgMTcyOTcsIDE3MzA0LCAwLCAxNzMxMSwgMTczMTYsIAotICAgIDE3MzIxLCAxNzMyNiwgMTczMzMsIDE3MzQwLCAxNzM0NywgMCwgMTczNTQsIDE3MzU5LCAxNzM2NCwgMCwgMTczNzEsIDAsIAotICAgIDE3Mzc4LCAwLCAwLCAxNzM4MywgMTczOTAsIDAsIDE3Mzk3LCAxNzQwMSwgMTc0MDgsIDE3NDEyLCAxNzQxNywgMTc0MjUsIAotICAgIDE3NDMxLCAxNzQzNywgMTc0NDIsIDE3NDQ4LCAxNzQ1NCwgMTc0NjAsIDE3NDY1LCAwLCAxNzQ3MSwgMTc0NzksIDE3NDg2LCAKLSAgICAwLCAwLCAxNzQ5MywgMTc0OTgsIDE3NTA0LCAxNzUwOSwgMTc1MTUsIDAsIDE3NTIxLCAwLCAxNzUyNywgMTc1MzQsIAotICAgIDE3NTQxLCAxNzU0OCwgMTc1NTUsIDE3NTYwLCAwLCAwLCAxNzU2NCwgMTc1NjksIDE3NTczLCAxNzU3NywgMTc1ODEsIAotICAgIDE3NTg1LCAxNzU4OSwgMTc1OTMsIDE3NTk4LCAxNzYwMiwgMCwgMCwgMTc2MDcsIDE3NjEzLCAxNzYxOSwgMTc2MjYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NjMzLCAxNzYzNywgMTc2NDgsIDE3NjYzLCAxNzY3OCwgMTc2ODgsIDE3Njk5LCAKLSAgICAxNzcxMiwgMTc3MjMsIDE3NzI5LCAxNzczNywgMTc3NDcsIDE3NzUzLCAxNzc2MSwgMTc3NjUsIDE3NzcxLCAxNzc3NywgCi0gICAgMTc3ODUsIDE3Nzk1LCAxNzgwMywgMTc4MTYsIDE3ODIyLCAxNzgzMCwgMTc4MzgsIDE3ODUwLCAxNzg1NywgMTc4NjUsIAotICAgIDE3ODczLCAxNzg4MSwgMTc4ODksIDE3ODk3LCAxNzkwNSwgMTc5MTUsIDE3OTE5LCAxNzkyMiwgMTc5MjUsIDE3OTI4LCAKLSAgICAxNzkzMSwgMTc5MzQsIDE3OTM3LCAxNzk0MSwgMTc5NDQsIDE3OTQ4LCAxNzk1MiwgMTc5NTYsIDE3OTYwLCAxNzk2NCwgCi0gICAgMTc5NjgsIDE3OTcyLCAxNzk3NywgMTc5ODEsIDE3OTg2LCAxNzk5MSwgMTc5OTcsIDE4MDA3LCAxODAyMSwgMTgwMzEsIAotICAgIDE4MDM3LCAxODA0MywgMTgwNTEsIDE4MDU5LCAxODA2NywgMTgwNzUsIDE4MDgxLCAxODA4NywgMTgwOTAsIDE4MDk0LCAKLSAgICAxODA5OCwgMTgxMDIsIDE4MTA2LCAxODExMCwgMTgxMTQsIDAsIDE4MTE4LCAxODEyMiwgMTgxMjYsIDE4MTMwLCAxODEzNCwgCi0gICAgMTgxMzgsIDE4MTQyLCAxODE0NiwgMTgxNTAsIDE4MTU0LCAxODE1OCwgMTgxNjIsIDE4MTY1LCAxODE2OSwgMTgxNzMsIAotICAgIDE4MTc3LCAxODE4MCwgMTgxODQsIDE4MTg4LCAxODE5MiwgMTgxOTYsIDE4MjAwLCAxODIwNCwgMTgyMDgsIDE4MjEyLCAKLSAgICAxODIxNSwgMTgyMTksIDE4MjIzLCAxODIyNywgMTgyMzEsIDE4MjM1LCAxODIzOCwgMTgyNDEsIDE4MjQ1LCAxODI1MSwgCi0gICAgMTgyNTUsIDAsIDAsIDAsIDAsIDE4MjU5LCAxODI2NCwgMTgyNjgsIDE4MjczLCAxODI3NywgMTgyODIsIDE4Mjg3LCAKLSAgICAxODI5MywgMTgyOTgsIDE4MzA0LCAxODMwOCwgMTgzMTMsIDE4MzE3LCAxODMyMiwgMTgzMzIsIDE4MzM4LCAxODM0NCwgCi0gICAgMTgzNTEsIDE4MzYxLCAxODM2NywgMTgzNzEsIDE4Mzc1LCAxODM4MSwgMTgzODcsIDE4Mzk1LCAxODQwMSwgMTg0MDksIAotICAgIDE4NDE3LCAxODQyNSwgMTg0MzUsIDE4NDQzLCAxODQ1MywgMTg0NTgsIDE4NDY0LCAxODQ3MCwgMTg0NzYsIDE4NDgyLCAKLSAgICAxODQ4OCwgMTg0OTQsIDAsIDE4NTAwLCAxODUwNiwgMTg1MTIsIDE4NTE4LCAxODUyNCwgMTg1MzAsIDE4NTM2LCAxODU0MiwgCi0gICAgMTg1NDgsIDE4NTU0LCAxODU2MCwgMTg1NjYsIDE4NTcxLCAxODU3NywgMTg1ODMsIDE4NTg5LCAxODU5NCwgMTg2MDAsIAotICAgIDE4NjA2LCAxODYxMiwgMTg2MTgsIDE4NjI0LCAxODYzMCwgMTg2MzYsIDE4NjQyLCAxODY0NywgMTg2NTMsIDE4NjU5LCAKLSAgICAxODY2NSwgMTg2NzEsIDE4Njc3LCAxODY4MiwgMTg2ODcsIDE4NjkzLCAxODcwMSwgMTg3MDgsIDAsIDE4NzE2LCAxODcyMywgCi0gICAgMTg3MzYsIDE4NzQzLCAxODc1MCwgMTg3NTgsIDE4NzY2LCAxODc3MiwgMTg3NzgsIDE4Nzg0LCAxODc5NCwgMTg3OTksIAotICAgIDE4ODA1LCAxODgxNSwgMTg4MjUsIDAsIDE4ODM1LCAxODg0NSwgMTg4NTMsIDE4ODY1LCAxODg3NywgMTg4ODMsIDE4ODk3LCAKLSAgICAxODkxMiwgMTg5MTcsIDE4OTIyLCAxODkzMCwgMTg5MzgsIDE4OTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxODk1NCwgMTg5NTcsIDE4OTYxLCAxODk2NSwgMTg5NjksIDE4OTczLCAxODk3NywgMTg5ODEsIDE4OTg1LCAKLSAgICAxODk4OSwgMTg5OTMsIDE4OTk3LCAxOTAwMSwgMTkwMDUsIDE5MDA5LCAxOTAxMywgMTkwMTcsIDE5MDIxLCAxOTAyNSwgCi0gICAgMTkwMjksIDE5MDMzLCAxOTAzNywgMTkwNDAsIDE5MDQ0LCAxOTA0OCwgMTkwNTIsIDE5MDU1LCAxOTA1OCwgMTkwNjIsIAotICAgIDE5MDY2LCAxOTA3MCwgMTkwNzQsIDE5MDc3LCAxOTA4MSwgMTkwODQsIDE5MDg5LCAxOTA5MiwgMTkwOTYsIDE5MDk5LCAKLSAgICAxOTEwMywgMTkxMDYsIDE5MTExLCAxOTExNCwgMTkxMTgsIDE5MTI1LCAxOTEzMCwgMTkxMzQsIDE5MTM5LCAxOTE0MywgCi0gICAgMTkxNDgsIDE5MTUyLCAxOTE1NywgMTkxNjQsIDE5MTcwLCAxOTE3NSwgMTkxNzksIDE5MTgzLCAxOTE4NywgMTkxOTEsIAotICAgIDE5MTk1LCAxOTIwMCwgMTkyMDYsIDE5MjEyLCAxOTIxNywgMTkyMjMsIDE5MjI3LCAxOTIzMCwgMTkyMzMsIDE5MjM2LCAKLSAgICAxOTIzOSwgMTkyNDIsIDE5MjQ1LCAxOTI0OSwgMTkyNTIsIDE5MjU2LCAxOTI2MiwgMTkyNjYsIDE5MjcwLCAxOTI3NCwgCi0gICAgMTkyNzgsIDE5MjgyLCAxOTI4NiwgMTkyOTAsIDE5Mjk0LCAxOTI5OSwgMTkzMDMsIDE5MzA4LCAxOTMxMywgMTkzMTksIAotICAgIDE5MzI0LCAxOTMzMCwgMTkzMzYsIDE5MzQyLCAxOTM0OCwgMTkzNTQsIDE5MzYyLCAxOTM2OSwgMTkzNzcsIDE5Mzg1LCAKLSAgICAxOTM5NCwgMTk0MDMsIDE5NDE0LCAxOTQyNCwgMTk0MzQsIDE5NDQ1LCAxOTQ1NiwgMTk0NjYsIDE5NDc2LCAxOTQ4NiwgCi0gICAgMTk0OTYsIDE5NTA2LCAxOTUxNiwgMTk1MjYsIDE5NTM2LCAxOTU0NCwgMTk1NTEsIDE5NTU3LCAxOTU2NCwgMTk1NjksIAotICAgIDE5NTc1LCAxOTU4MSwgMTk1ODcsIDE5NTkzLCAxOTU5OSwgMTk2MDUsIDE5NjExLCAxOTYxNywgMTk2MjMsIDE5NjI5LCAKLSAgICAxOTYzNSwgMTk2NDAsIDE5NjQ4LCAxOTY1NSwgMTk2NjEsIDE5NjY4LCAxOTY3NiwgMTk2ODIsIDE5Njg4LCAxOTY5NCwgCi0gICAgMTk3MDAsIDE5NzA4LCAxOTcxNiwgMTk3MjYsIDE5NzM0LCAxOTc0MiwgMTk3NDgsIDE5NzUzLCAxOTc1OCwgMTk3NjMsIAotICAgIDE5NzY4LCAxOTc3MywgMTk3NzgsIDE5Nzg0LCAxOTc4OSwgMTk3OTUsIDE5ODAxLCAxOTgwNywgMTk4MTMsIDE5ODIwLCAKLSAgICAxOTgyNSwgMTk4MzEsIDE5ODM2LCAxOTg0MSwgMTk4NDYsIDE5ODUxLCAxOTg1NiwgMTk4NjEsIDE5ODY2LCAxOTg3MSwgCi0gICAgMTk4NzYsIDE5ODgxLCAxOTg4NiwgMTk4OTEsIDE5ODk2LCAxOTkwMSwgMTk5MDYsIDE5OTExLCAxOTkxNiwgMTk5MjEsIAotICAgIDE5OTI2LCAxOTkzMSwgMTk5MzYsIDE5OTQxLCAxOTk0NiwgMTk5NTEsIDE5OTU2LCAxOTk2MSwgMTk5NjYsIDE5OTcxLCAKLSAgICAxOTk3NiwgMTk5ODEsIDE5OTg2LCAxOTk5MSwgMTk5OTYsIDIwMDAxLCAyMDAwNiwgMjAwMTEsIDIwMDE2LCAwLCAyMDAyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjAwMjYsIDAsIDAsIDIwMDMxLCAyMDAzNSwgMjAwMzksIDIwMDQzLCAyMDA0NywgMjAwNTEsIAotICAgIDIwMDU1LCAyMDA1OSwgMjAwNjMsIDIwMDY3LCAyMDA3MSwgMjAwNzUsIDIwMDc5LCAyMDA4MywgMjAwODcsIDIwMDkxLCAKLSAgICAyMDA5NSwgMjAwOTksIDIwMTAzLCAyMDEwNywgMjAxMTEsIDIwMTE1LCAyMDExOSwgMjAxMjMsIDIwMTI3LCAyMDEzMSwgCi0gICAgMjAxMzUsIDIwMTM5LCAyMDE0MywgMjAxNDcsIDIwMTUxLCAyMDE1NSwgMjAxNTksIDIwMTYzLCAyMDE2NywgMjAxNzEsIAotICAgIDIwMTc1LCAyMDE3OSwgMjAxODMsIDIwMTg3LCAyMDE5MSwgMjAxOTUsIDIwMjAxLCAyMDIwNSwgMjAyMTAsIDIwMjE1LCAKLSAgICAyMDIxOSwgMjAyMjQsIDIwMjI5LCAyMDIzMywgMjAyMzcsIDIwMjQxLCAyMDI0NSwgMjAyNDksIDIwMjUzLCAyMDI1NywgCi0gICAgMjAyNjEsIDIwMjY1LCAyMDI2OSwgMjAyNzMsIDIwMjc3LCAyMDI4MSwgMjAyODUsIDIwMjg5LCAyMDI5MywgMjAyOTcsIAotICAgIDIwMzAxLCAyMDMwNSwgMjAzMDksIDIwMzEzLCAyMDMxNywgMjAzMjEsIDIwMzI1LCAyMDMyOSwgMjAzMzMsIDIwMzM3LCAKLSAgICAyMDM0MSwgMjAzNDUsIDIwMzQ5LCAyMDM1MywgMjAzNTcsIDIwMzYxLCAyMDM2NSwgMjAzNjksIDIwMzczLCAyMDM3NywgCi0gICAgMjAzODEsIDIwMzg1LCAyMDM4OSwgMjAzOTMsIDIwMzk3LCAyMDQwMSwgMjA0MDUsIDIwNDA5LCAyMDQxMywgMjA0MTcsIAotICAgIDIwNDIxLCAyMDQyNSwgMjA0MjksIDIwNDMzLCAyMDQzNywgMjA0NDEsIDIwNDQ1LCAyMDQ0OSwgMjA0NTMsIDIwNDU3LCAKLSAgICAyMDQ2MSwgMjA0NjUsIDIwNDY5LCAyMDQ3MywgMjA0NzcsIDIwNDgxLCAyMDQ4NSwgMjA0ODksIDIwNDkzLCAyMDQ5NywgCi0gICAgMjA1MDEsIDIwNTA1LCAyMDUwOSwgMjA1MTMsIDIwNTE3LCAyMDUyMSwgMjA1MjUsIDIwNTI5LCAyMDUzMywgMjA1MzcsIAotICAgIDIwNTQxLCAyMDU0NSwgMjA1NDksIDIwNTUzLCAyMDU1NywgMjA1NjEsIDIwNTY1LCAyMDU2OSwgMjA1NzMsIDIwNTc3LCAKLSAgICAyMDU4MSwgMjA1ODUsIDIwNTg5LCAyMDU5MywgMjA1OTcsIDIwNjAxLCAyMDYwNSwgMjA2MDksIDIwNjEzLCAyMDYxNywgCi0gICAgMjA2MjAsIDIwNjI0LCAyMDYyNywgMjA2MzEsIDIwNjM1LCAyMDYzOCwgMjA2NDIsIDIwNjQ2LCAyMDY0OSwgMjA2NTMsIAotICAgIDIwNjU3LCAyMDY2MSwgMjA2NjUsIDIwNjY4LCAyMDY3MiwgMjA2NzYsIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAKLSAgICAyMDY5NSwgMjA2OTksIDIwNzAzLCAyMDcwNywgMjA3MTEsIDIwNzE1LCAyMDcxOSwgMjA3MjMsIDIwNzI3LCAyMDczMSwgCi0gICAgMjA3MzUsIDIwNzM5LCAyMDc0MywgMjA3NDcsIDIwNzUxLCAyMDc1NSwgMjA3NTksIDIwNzYzLCAyMDc2NywgMjA3NzEsIAotICAgIDIwNzc1LCAyMDc3OSwgMjA3ODMsIDIwNzg3LCAyMDc5MSwgMjA3OTUsIDIwNzk5LCAyMDgwMywgMjA4MDcsIDIwODExLCAKLSAgICAyMDgxNSwgMjA4MTksIDIwODIzLCAyMDgyNywgMjA4MzEsIDIwODM1LCAyMDgzOSwgMjA4NDMsIDIwODQ3LCAyMDg1MSwgCi0gICAgMjA4NTUsIDIwODU5LCAyMDg2MywgMjA4NjcsIDIwODcxLCAyMDg3NSwgMjA4NzksIDIwODgzLCAyMDg4NywgMjA4OTEsIAotICAgIDIwODk1LCAyMDg5OSwgMjA5MDMsIDIwOTA3LCAyMDkxMSwgMjA5MTUsIDIwOTE5LCAyMDkyMywgMjA5MjcsIDIwOTMxLCAKLSAgICAyMDkzNSwgMjA5MzksIDIwOTQzLCAyMDk0NywgMjA5NTEsIDIwOTU1LCAyMDk1OSwgMjA5NjMsIDIwOTY3LCAyMDk3MSwgCi0gICAgMjA5NzUsIDIwOTc5LCAyMDk4MywgMjA5ODcsIDIwOTkxLCAyMDk5NSwgMjA5OTksIDIxMDAzLCAyMTAwNywgMjEwMTEsIAotICAgIDIxMDE1LCAyMTAxOSwgMjEwMjMsIDIxMDI3LCAyMTAzMSwgMjEwMzUsIDIxMDM5LCAyMTA0MywgMjEwNDcsIDIxMDUxLCAKLSAgICAyMTA1NSwgMjEwNTksIDIxMDYzLCAyMTA2NywgMjEwNzEsIDIxMDc1LCAyMTA3OSwgMjEwODMsIDIxMDg3LCAyMTA5MSwgCi0gICAgMjEwOTUsIDIxMDk5LCAyMTEwMywgMjExMDcsIDIxMTExLCAyMTExNSwgMjExMTksIDIxMTIzLCAyMTEyNywgMjExMzEsIAotICAgIDIxMTM1LCAyMTEzOSwgMjExNDMsIDIxMTQ3LCAyMTE1MSwgMjExNTUsIDIxMTU5LCAyMTE2MywgMjExNjcsIDIxMTcxLCAKLSAgICAyMTE3NSwgMjExNzksIDIxMTgzLCAyMTE4NywgMjExOTEsIDIxMTk1LCAyMTE5OSwgMjEyMDMsIDIxMjA3LCAyMTIxMSwgCi0gICAgMjEyMTUsIDIxMjE5LCAyMTIyMywgMjEyMjcsIDIxMjMxLCAyMTIzNSwgMjEyMzksIDIxMjQzLCAyMTI0NywgMjEyNTAsIAotICAgIDIxMjU0LCAyMTI1OCwgMjEyNjIsIDIxMjY2LCAyMTI3MCwgMjEyNzQsIDIxMjc4LCAyMTI4MiwgMjEyODYsIDIxMjkwLCAKLSAgICAyMTI5NCwgMjEyOTgsIDIxMzAyLCAyMTMwNiwgMjEzMTAsIDIxMzE0LCAyMTMxOCwgMjEzMjIsIDIxMzI2LCAyMTMzMCwgCi0gICAgMjEzMzQsIDIxMzM4LCAyMTM0MiwgMjEzNDUsIDIxMzQ5LCAyMTM1MywgMjEzNTcsIDIxMzYxLCAyMTM2NSwgMjEzNjksIAotICAgIDIxMzczLCAyMTM3NywgMjEzODEsIDIxMzg1LCAyMTM4OSwgMjEzOTMsIDIxMzk3LCAyMTQwMSwgMjE0MDUsIDIxNDA5LCAKLSAgICAyMTQxMywgMjE0MTcsIDIxNDIxLCAyMTQyNSwgMjE0MjksIDIxNDMzLCAyMTQzNywgMjE0NDEsIDIxNDQ1LCAyMTQ0OSwgCi0gICAgMjE0NTMsIDIxNDU3LCAyMTQ2MSwgMjE0NjUsIDIxNDY5LCAyMTQ3MywgMjE0NzcsIDIxNDgxLCAyMTQ4NSwgMjE0ODksIAotICAgIDIxNDkzLCAyMTQ5NywgMjE1MDEsIDIxNTA1LCAyMTUwOSwgMjE1MTMsIDIxNTE3LCAyMTUyMSwgMjE1MjUsIDIxNTI5LCAKLSAgICAyMTUzMywgMCwgMjE1MzcsIDIxNTQxLCAyMTU0NSwgMjE1NDksIDAsIDAsIDIxNTUzLCAyMTU1NywgMjE1NjEsIDIxNTY1LCAKLSAgICAyMTU2OSwgMjE1NzMsIDIxNTc3LCAwLCAyMTU4MSwgMCwgMjE1ODUsIDIxNTg5LCAyMTU5MywgMjE1OTcsIDAsIDAsIAotICAgIDIxNjAxLCAyMTYwNSwgMjE2MDksIDIxNjEzLCAyMTYxNywgMjE2MjEsIDIxNjI1LCAyMTYyOSwgMjE2MzMsIDIxNjM3LCAKLSAgICAyMTY0MSwgMjE2NDUsIDIxNjQ5LCAyMTY1MywgMjE2NTcsIDIxNjYxLCAyMTY2NSwgMjE2NjksIDIxNjczLCAyMTY3NywgCi0gICAgMjE2ODEsIDIxNjg1LCAyMTY4OSwgMjE2OTIsIDIxNjk2LCAyMTcwMCwgMjE3MDQsIDIxNzA4LCAyMTcxMiwgMjE3MTYsIAotICAgIDIxNzIwLCAyMTcyNCwgMjE3MjgsIDIxNzMyLCAyMTczNiwgMjE3NDAsIDIxNzQ0LCAyMTc0OCwgMjE3NTIsIDIxNzU2LCAKLSAgICAyMTc2MCwgMCwgMjE3NjQsIDIxNzY4LCAyMTc3MiwgMjE3NzYsIDAsIDAsIDIxNzgwLCAyMTc4NCwgMjE3ODgsIDIxNzkyLCAKLSAgICAyMTc5NiwgMjE4MDAsIDIxODA0LCAyMTgwOCwgMjE4MTIsIDIxODE2LCAyMTgyMCwgMjE4MjQsIDIxODI4LCAyMTgzMiwgCi0gICAgMjE4MzYsIDIxODQwLCAyMTg0NCwgMjE4NDksIDIxODU0LCAyMTg1OSwgMjE4NjUsIDIxODcxLCAyMTg3NiwgMjE4ODEsIAotICAgIDIxODg3LCAyMTg5MCwgMjE4OTQsIDIxODk4LCAyMTkwMiwgMjE5MDYsIDIxOTEwLCAyMTkxNCwgMjE5MTgsIDAsIDIxOTIyLCAKLSAgICAyMTkyNiwgMjE5MzAsIDIxOTM0LCAwLCAwLCAyMTkzOCwgMjE5NDIsIDIxOTQ2LCAyMTk1MCwgMjE5NTQsIDIxOTU4LCAKLSAgICAyMTk2MiwgMCwgMjE5NjYsIDAsIDIxOTcwLCAyMTk3NCwgMjE5NzgsIDIxOTgyLCAwLCAwLCAyMTk4NiwgMjE5OTAsIAotICAgIDIxOTk0LCAyMTk5OCwgMjIwMDIsIDIyMDA2LCAyMjAxMCwgMjIwMTQsIDIyMDE4LCAyMjAyMywgMjIwMjgsIDIyMDMzLCAKLSAgICAyMjAzOSwgMjIwNDUsIDIyMDUwLCAwLCAyMjA1NSwgMjIwNTksIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgCi0gICAgMjIwODMsIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk5LCAyMjEwMywgMjIxMDcsIDIyMTExLCAyMjExNSwgMjIxMTksIAotICAgIDIyMTIyLCAyMjEyNiwgMjIxMzAsIDIyMTM0LCAyMjEzOCwgMjIxNDIsIDIyMTQ2LCAyMjE1MCwgMjIxNTQsIDIyMTU4LCAKLSAgICAyMjE2MiwgMjIxNjYsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAyMjE4NiwgMjIxOTAsIDIyMTk0LCAyMjE5OCwgCi0gICAgMjIyMDIsIDIyMjA2LCAyMjIxMCwgMjIyMTQsIDIyMjE4LCAyMjIyMiwgMjIyMjYsIDIyMjMwLCAyMjIzNCwgMjIyMzgsIAotICAgIDIyMjQyLCAyMjI0NiwgMjIyNTAsIDIyMjU0LCAyMjI1OCwgMjIyNjIsIDIyMjY2LCAyMjI3MCwgMjIyNzQsIDIyMjc4LCAwLCAKLSAgICAyMjI4MiwgMjIyODYsIDIyMjkwLCAyMjI5NCwgMCwgMCwgMjIyOTgsIDIyMzAyLCAyMjMwNiwgMjIzMTAsIDIyMzE0LCAKLSAgICAyMjMxOCwgMjIzMjIsIDIyMzI2LCAyMjMzMCwgMjIzMzQsIDIyMzM4LCAyMjM0MiwgMjIzNDYsIDIyMzUwLCAyMjM1NCwgCi0gICAgMjIzNTgsIDIyMzYyLCAyMjM2NiwgMjIzNzAsIDIyMzc0LCAyMjM3OCwgMjIzODIsIDIyMzg2LCAyMjM5MCwgMjIzOTQsIAotICAgIDIyMzk4LCAyMjQwMiwgMjI0MDYsIDIyNDEwLCAyMjQxNCwgMjI0MTgsIDIyNDIyLCAyMjQyNiwgMjI0MzAsIDIyNDM0LCAKLSAgICAyMjQzOCwgMjI0NDIsIDIyNDQ2LCAyMjQ1MCwgMjI0NTQsIDIyNDU4LCAyMjQ2MiwgMjI0NjYsIDIyNDcwLCAyMjQ3NCwgCi0gICAgMjI0NzgsIDIyNDgyLCAyMjQ4NiwgMjI0OTAsIDIyNDk0LCAyMjQ5OCwgMjI1MDIsIDIyNTA2LCAyMjUxMCwgMjI1MTQsIAotICAgIDIyNTE4LCAyMjUyMiwgMjI1MjUsIDIyNTI5LCAyMjUzMywgMjI1MzcsIDIyNTQxLCAyMjU0NSwgMjI1NDksIDIyNTUzLCAKLSAgICAyMjU1NywgMjI1NjEsIDAsIDAsIDIyNTY1LCAyMjU3NCwgMjI1ODAsIDIyNTg1LCAyMjU4OSwgMjI1OTIsIDIyNTk3LCAKLSAgICAyMjYwMCwgMjI2MDMsIDIyNjA2LCAyMjYxMSwgMjI2MTUsIDIyNjIwLCAyMjYyMywgMjI2MjYsIDIyNjI5LCAyMjYzMiwgCi0gICAgMjI2MzUsIDIyNjM4LCAyMjY0MiwgMjI2NDUsIDIyNjQ5LCAyMjY1MywgMjI2NTcsIDIyNjYxLCAyMjY2NSwgMjI2NjksIAotICAgIDIyNjczLCAyMjY3NywgMjI2ODEsIDIyNjg1LCAyMjY4OSwgMCwgMCwgMCwgMjI2OTUsIDIyNzAxLCAyMjcwNSwgMjI3MDksIAotICAgIDIyNzEzLCAyMjcxOSwgMjI3MjMsIDIyNzI3LCAyMjczMSwgMjI3MzcsIDIyNzQxLCAyMjc0NSwgMjI3NDksIDIyNzU1LCAKLSAgICAyMjc1OSwgMjI3NjMsIDIyNzY3LCAyMjc3MywgMjI3NzksIDIyNzg1LCAyMjc5MywgMjI3OTksIDIyODA1LCAyMjgxMSwgCi0gICAgMjI4MTcsIDIyODIzLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjgyOSwgMjI4MzIsIDIyODM1LCAyMjgzOCwgMjI4NDEsIDIyODQ0LCAKLSAgICAyMjg0OCwgMjI4NTIsIDIyODU1LCAyMjg1OSwgMjI4NjMsIDIyODY3LCAyMjg3MSwgMjI4NzUsIDIyODc4LCAyMjg4MiwgCi0gICAgMjI4ODYsIDIyODkwLCAyMjg5NCwgMjI4OTgsIDIyOTAyLCAyMjkwNiwgMjI5MTAsIDIyOTE0LCAyMjkxOCwgMjI5MjIsIAotICAgIDIyOTI1LCAyMjkyOSwgMjI5MzMsIDIyOTM3LCAyMjk0MSwgMjI5NDUsIDIyOTQ5LCAyMjk1MywgMjI5NTcsIDIyOTYxLCAKLSAgICAyMjk2NSwgMjI5NjksIDIyOTczLCAyMjk3NywgMjI5ODEsIDIyOTg1LCAyMjk4OSwgMjI5OTMsIDIyOTk3LCAyMzAwMSwgCi0gICAgMjMwMDQsIDIzMDA4LCAyMzAxMiwgMjMwMTYsIDIzMDIwLCAyMzAyNCwgMjMwMjgsIDIzMDMyLCAyMzAzNiwgMjMwNDAsIAotICAgIDIzMDQ0LCAyMzA0OCwgMjMwNTIsIDIzMDU2LCAyMzA2MCwgMjMwNjQsIDIzMDY4LCAyMzA3MiwgMjMwNzYsIDIzMDgwLCAKLSAgICAyMzA4NCwgMjMwODgsIDIzMDkyLCAyMzA5NiwgMjMxMDAsIDIzMTA0LCAyMzEwOCwgMjMxMTIsIDIzMTE2LCAyMzEyMCwgCi0gICAgMjMxMjQsIDIzMTI4LCAyMzEzMiwgMjMxMzYsIDIzMTM5LCAyMzE0MywgMjMxNDcsIDIzMTUxLCAyMzE1NSwgMjMxNTksIDAsIAotICAgIDAsIDIzMTYzLCAyMzE2OCwgMjMxNzMsIDIzMTc4LCAyMzE4MywgMjMxODgsIDAsIDAsIDIzMTkzLCAyMzE5NywgMjMyMDAsIAotICAgIDIzMjA0LCAyMzIwNywgMjMyMTEsIDIzMjE0LCAyMzIxOCwgMjMyMjQsIDIzMjI5LCAyMzIzMywgMjMyMzYsIDIzMjQwLCAKLSAgICAyMzI0NCwgMjMyNDksIDIzMjUzLCAyMzI1OCwgMjMyNjIsIDIzMjY3LCAyMzI3MSwgMjMyNzYsIDIzMjgwLCAyMzI4NSwgCi0gICAgMjMyOTEsIDIzMjk1LCAyMzMwMCwgMjMzMDQsIDIzMzA5LCAyMzMxNSwgMjMzMTksIDIzMzI1LCAyMzMzMSwgMjMzMzUsIAotICAgIDIzMzQwLCAyMzM0OCwgMjMzNTYsIDIzMzYzLCAyMzM2OCwgMjMzNzMsIDIzMzgyLCAyMzM4OCwgMjMzOTYsIDIzNDAxLCAKLSAgICAyMzQwNywgMjM0MTEsIDIzNDE1LCAyMzQxOSwgMjM0MjMsIDIzNDI3LCAyMzQzMSwgMjM0MzUsIDIzNDM5LCAyMzQ0MywgCi0gICAgMjM0NDcsIDIzNDUzLCAyMzQ1OCwgMjM0NjMsIDIzNDY2LCAyMzQ3MCwgMjM0NzQsIDIzNDc5LCAyMzQ4MywgMjM0ODgsIAotICAgIDIzNDkyLCAyMzQ5NywgMjM1MDEsIDIzNTA2LCAyMzUxMCwgMjM1MTUsIDIzNTE5LCAyMzUyNCwgMjM1MjgsIDIzNTMzLCAKLSAgICAyMzUzOSwgMjM1NDMsIDIzNTQ4LCAyMzU1MywgMjM1NTcsIDIzNTYxLCAyMzU2NSwgMjM1NjksIDIzNTcyLCAyMzU3NiwgCi0gICAgMjM1ODIsIDIzNTg3LCAyMzU5MiwgMjM1OTYsIDIzNjAwLCAyMzYwNCwgMjM2MDksIDIzNjEzLCAyMzYxOCwgMjM2MjIsIAotICAgIDIzNjI3LCAyMzYzMCwgMjM2MzQsIDIzNjM4LCAyMzY0MywgMjM2NDcsIDIzNjUyLCAyMzY1NiwgMjM2NjEsIDIzNjY3LCAKLSAgICAyMzY3MSwgMjM2NzUsIDIzNjc5LCAyMzY4MywgMjM2ODcsIDIzNjkxLCAyMzY5NSwgMjM2OTksIDIzNzAzLCAyMzcwNywgCi0gICAgMjM3MTEsIDIzNzE3LCAyMzcyMCwgMjM3MjQsIDIzNzI4LCAyMzczMywgMjM3MzcsIDIzNzQyLCAyMzc0NiwgMjM3NTEsIAotICAgIDIzNzU1LCAyMzc2MCwgMjM3NjQsIDIzNzY5LCAyMzc3MywgMjM3NzgsIDIzNzgyLCAyMzc4NywgMjM3OTMsIDIzNzk3LCAKLSAgICAyMzgwMSwgMjM4MDcsIDIzODEzLCAyMzgxOSwgMjM4MjUsIDIzODI5LCAyMzgzMywgMjM4MzcsIDIzODQxLCAyMzg0NSwgCi0gICAgMjM4NDksIDIzODU1LCAyMzg1OSwgMjM4NjMsIDIzODY3LCAyMzg3MiwgMjM4NzYsIDIzODgxLCAyMzg4NSwgMjM4OTAsIAotICAgIDIzODk0LCAyMzg5OSwgMjM5MDMsIDIzOTA4LCAyMzkxMiwgMjM5MTcsIDIzOTIxLCAyMzkyNiwgMjM5MzIsIDIzOTM2LCAKLSAgICAyMzk0MiwgMjM5NDYsIDIzOTUwLCAyMzk1NCwgMjM5NTgsIDIzOTYyLCAyMzk2NiwgMjM5NzIsIDIzOTc1LCAyMzk3OSwgCi0gICAgMjM5ODMsIDIzOTg4LCAyMzk5MiwgMjM5OTcsIDI0MDAxLCAyNDAwNiwgMjQwMTAsIDI0MDE1LCAyNDAxOSwgMjQwMjQsIAotICAgIDI0MDI4LCAyNDAzMywgMjQwMzcsIDI0MDQyLCAyNDA0OCwgMjQwNTIsIDI0MDU3LCAyNDA2MSwgMjQwNjcsIDI0MDczLCAKLSAgICAyNDA3NywgMjQwODEsIDI0MDg1LCAyNDA4OSwgMjQwOTMsIDI0MDk3LCAyNDEwMywgMjQxMDcsIDI0MTExLCAyNDExNSwgCi0gICAgMjQxMjAsIDI0MTI0LCAyNDEyOSwgMjQxMzMsIDI0MTM4LCAyNDE0NCwgMjQxNDgsIDI0MTUzLCAyNDE1NywgMjQxNjEsIAotICAgIDI0MTY1LCAyNDE2OSwgMjQxNzMsIDI0MTc3LCAyNDE4MSwgMjQxODcsIDI0MTkxLCAyNDE5NSwgMjQxOTksIDI0MjA0LCAKLSAgICAyNDIwOCwgMjQyMTMsIDI0MjE3LCAyNDIyMiwgMjQyMjYsIDI0MjMxLCAyNDIzNSwgMjQyNDAsIDI0MjQ0LCAyNDI0OSwgCi0gICAgMjQyNTMsIDI0MjU4LCAyNDI2MSwgMjQyNjUsIDI0MjY5LCAyNDI3MywgMjQyNzcsIDI0MjgxLCAyNDI4NSwgMjQyODksIAotICAgIDI0MjkzLCAyNDI5OSwgMjQzMDMsIDI0MzA3LCAyNDMxMSwgMjQzMTYsIDI0MzIwLCAyNDMyNSwgMjQzMjksIDI0MzM0LCAKLSAgICAyNDMzOCwgMjQzNDMsIDI0MzQ3LCAyNDM1MiwgMjQzNTYsIDI0MzYxLCAyNDM2NSwgMjQzNzAsIDI0Mzc2LCAyNDM3OSwgCi0gICAgMjQzODQsIDI0Mzg4LCAyNDM5MywgMjQzOTksIDI0NDA1LCAyNDQxMSwgMjQ0MTcsIDI0NDIzLCAyNDQyOSwgMjQ0MzUsIAotICAgIDI0NDM5LCAyNDQ0MywgMjQ0NDcsIDI0NDUxLCAyNDQ1NSwgMjQ0NTksIDI0NDYzLCAyNDQ2NywgMjQ0NzIsIDI0NDc2LCAKLSAgICAyNDQ4MSwgMjQ0ODUsIDI0NDkwLCAyNDQ5NCwgMjQ0OTksIDI0NTAzLCAyNDUwOCwgMjQ1MTIsIDI0NTE3LCAyNDUyMSwgCi0gICAgMjQ1MjYsIDI0NTMwLCAyNDUzNCwgMjQ1MzgsIDI0NTQyLCAyNDU0NiwgMjQ1NTAsIDI0NTU0LCAyNDU2MCwgMjQ1NjMsIAotICAgIDI0NTY3LCAyNDU3MSwgMjQ1NzYsIDI0NTgwLCAyNDU4NSwgMjQ1ODksIDI0NTk0LCAyNDU5OCwgMjQ2MDMsIDI0NjA3LCAKLSAgICAyNDYxMiwgMjQ2MTYsIDI0NjIxLCAyNDYyNSwgMjQ2MzAsIDI0NjM2LCAyNDY0MCwgMjQ2NDYsIDI0NjUxLCAyNDY1NywgCi0gICAgMjQ2NjEsIDI0NjY3LCAyNDY3MiwgMjQ2NzYsIDI0NjgwLCAyNDY4NCwgMjQ2ODgsIDI0NjkyLCAyNDY5NywgMjQ3MDEsIAotICAgIDI0NzA1LCAyNDcxMCwgMjQ3MTQsIDI0NzE5LCAyNDcyMiwgMjQ3MjYsIDI0NzMwLCAyNDczNCwgMjQ3MzgsIDI0NzQyLCAKLSAgICAyNDc0NiwgMjQ3NTAsIDI0NzU0LCAyNDc1OCwgMjQ3NjIsIDI0NzY2LCAyNDc3MSwgMjQ3NzUsIDI0Nzc5LCAyNDc4NSwgCi0gICAgMjQ3ODksIDI0Nzk1LCAyNDc5OSwgMjQ4MDUsIDI0ODA5LCAyNDgxMywgMjQ4MTcsIDI0ODIxLCAyNDgyNSwgMjQ4MzAsIAotICAgIDI0ODM0LCAyNDgzOCwgMjQ4NDIsIDI0ODQ2LCAyNDg1MCwgMjQ4NTQsIDI0ODU4LCAyNDg2MiwgMjQ4NjYsIDI0ODcwLCAKLSAgICAyNDg3NiwgMjQ4ODIsIDI0ODg4LCAyNDg5NCwgMjQ5MDAsIDI0OTA1LCAyNDkxMSwgMjQ5MTcsIDI0OTIzLCAyNDkyNywgCi0gICAgMjQ5MzEsIDI0OTM1LCAyNDkzOSwgMjQ5NDMsIDI0OTQ3LCAyNDk1MSwgMjQ5NTUsIDI0OTU5LCAyNDk2MywgMjQ5NjcsIAotICAgIDI0OTcxLCAyNDk3NSwgMjQ5ODAsIDI0OTg1LCAyNDk5MCwgMjQ5OTUsIDI0OTk5LCAyNTAwMywgMjUwMDcsIDI1MDExLCAKLSAgICAyNTAxNSwgMjUwMTksIDI1MDIzLCAyNTAyNywgMjUwMzEsIDI1MDM3LCAyNTA0MywgMjUwNDksIDI1MDU1LCAyNTA2MSwgCi0gICAgMjUwNjcsIDI1MDczLCAyNTA3OSwgMjUwODUsIDI1MDg5LCAyNTA5MywgMjUwOTcsIDI1MTAxLCAyNTEwNSwgMjUxMDksIAotICAgIDI1MTEzLCAyNTExOSwgMjUxMjUsIDI1MTMxLCAyNTEzNywgMjUxNDMsIDI1MTQ5LCAyNTE1NSwgMjUxNjEsIDI1MTY3LCAKLSAgICAyNTE3MiwgMjUxNzcsIDI1MTgyLCAyNTE4NywgMjUxOTMsIDI1MTk5LCAyNTIwNSwgMjUyMTEsIDI1MjE3LCAyNTIyMywgCi0gICAgMjUyMjksIDI1MjM1LCAyNTI0MSwgMjUyNDcsIDI1MjUzLCAyNTI1OCwgMjUyNjQsIDI1MjcwLCAyNTI3NiwgMjUyODEsIAotICAgIDI1Mjg2LCAyNTI5MSwgMjUyOTYsIDI1MzAxLCAyNTMwNiwgMjUzMTEsIDI1MzE2LCAyNTMyMSwgMjUzMjYsIDI1MzMxLCAKLSAgICAyNTMzNiwgMjUzNDEsIDI1MzQ2LCAyNTM1MSwgMjUzNTYsIDI1MzYxLCAyNTM2NiwgMjUzNzEsIDI1Mzc2LCAyNTM4MSwgCi0gICAgMjUzODYsIDI1MzkxLCAyNTM5NiwgMjU0MDEsIDI1NDA2LCAyNTQxMSwgMjU0MTYsIDI1NDIxLCAyNTQyNiwgMjU0MzEsIAotICAgIDI1NDM2LCAyNTQ0MSwgMjU0NDYsIDI1NDUxLCAyNTQ1NiwgMjU0NjEsIDI1NDY2LCAyNTQ3MSwgMjU0NzYsIDI1NDgxLCAKLSAgICAyNTQ4NiwgMjU0OTAsIDI1NDk1LCAyNTUwMCwgMjU1MDUsIDI1NTEwLCAyNTUxNSwgMjU1MjAsIDI1NTI1LCAyNTUzMCwgCi0gICAgMjU1MzUsIDI1NTQwLCAyNTU0NSwgMjU1NTAsIDI1NTU1LCAyNTU2MCwgMjU1NjUsIDI1NTcwLCAyNTU3NSwgMjU1ODAsIAotICAgIDI1NTg1LCAyNTU5MCwgMjU1OTUsIDI1NjAwLCAyNTYwNSwgMjU2MTAsIDI1NjE1LCAyNTYyMCwgMjU2MjUsIDI1NjMwLCAKLSAgICAyNTYzNSwgMjU2NDAsIDI1NjQ1LCAyNTY0OSwgMjU2NTQsIDI1NjU5LCAyNTY2NCwgMjU2NjksIDI1Njc0LCAyNTY3OCwgCi0gICAgMjU2ODMsIDI1Njg5LCAyNTY5NCwgMjU2OTksIDI1NzA0LCAyNTcwOSwgMjU3MTUsIDI1NzIwLCAyNTcyNSwgMjU3MzAsIAotICAgIDI1NzM1LCAyNTc0MCwgMjU3NDUsIDI1NzUwLCAyNTc1NSwgMjU3NjAsIDI1NzY1LCAyNTc3MCwgMjU3NzUsIDI1NzgwLCAKLSAgICAyNTc4NSwgMjU3OTAsIDI1Nzk1LCAyNTgwMCwgMjU4MDUsIDI1ODEwLCAyNTgxNSwgMjU4MjAsIDI1ODI1LCAyNTgzMCwgCi0gICAgMjU4MzUsIDI1ODQwLCAyNTg0NSwgMjU4NTAsIDI1ODU1LCAyNTg2MCwgMjU4NjUsIDI1ODcwLCAyNTg3NSwgMjU4ODAsIAotICAgIDI1ODg1LCAyNTg5MCwgMjU4OTUsIDI1OTAwLCAyNTkwNSwgMjU5MTAsIDI1OTE1LCAyNTkyMCwgMjU5MjUsIDI1OTMwLCAKLSAgICAyNTkzNSwgMjU5NDEsIDI1OTQ2LCAyNTk1MSwgMjU5NTYsIDI1OTYxLCAyNTk2NiwgMjU5NzEsIDI1OTc2LCAyNTk4MSwgCi0gICAgMjU5ODYsIDI1OTkxLCAyNTk5NiwgMjYwMDEsIDI2MDA2LCAyNjAxMSwgMjYwMTYsIDI2MDIxLCAyNjAyNiwgMjYwMzEsIAotICAgIDI2MDM2LCAyNjA0MSwgMjYwNDYsIDI2MDUxLCAyNjA1NiwgMjYwNjEsIDI2MDY2LCAyNjA3MSwgMjYwNzYsIDI2MDgxLCAKLSAgICAyNjA4NiwgMjYwOTEsIDI2MDk2LCAyNjEwMSwgMjYxMDYsIDI2MTExLCAyNjExNiwgMjYxMjEsIDI2MTI2LCAyNjEzMSwgCi0gICAgMjYxMzcsIDI2MTQxLCAyNjE0NSwgMjYxNDksIDI2MTUzLCAyNjE1NywgMjYxNjEsIDI2MTY1LCAyNjE2OSwgMjYxNzUsIAotICAgIDI2MTgxLCAyNjE4NywgMjYxOTMsIDI2MTk5LCAyNjIwNSwgMjYyMTEsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCAKLSAgICAyNjIzOSwgMjYyNDQsIDI2MjQ5LCAyNjI1NCwgMjYyNTksIDI2MjY0LCAyNjI2OSwgMjYyNzQsIDI2Mjc5LCAyNjI4NCwgCi0gICAgMjYyODksIDI2Mjk0LCAyNjI5OSwgMjYzMDQsIDI2MzA5LCAyNjMxNCwgMjYzMTksIDI2MzI0LCAyNjMyOSwgMjYzMzQsIAotICAgIDI2MzM5LCAyNjM0NCwgMjYzNDksIDI2MzU0LCAyNjM1OSwgMjYzNjQsIDAsIDAsIDAsIDI2MzcxLCAyNjM4MSwgMjYzODUsIAotICAgIDI2MzkyLCAyNjM5NiwgMjY0MDAsIDI2NDA0LCAyNjQxMiwgMjY0MTYsIDI2NDIxLCAyNjQyNiwgMjY0MzEsIDI2NDM1LCAKLSAgICAyNjQ0MCwgMjY0NDUsIDI2NDQ4LCAyNjQ1MiwgMjY0NTYsIDI2NDY1LCAyNjQ2OSwgMjY0NzMsIDI2NDc5LCAyNjQ4MywgCi0gICAgMjY0ODcsIDI2NDk1LCAyNjQ5OSwgMjY1MDcsIDI2NTEzLCAyNjUxOSwgMjY1MjUsIDI2NTMxLCAyNjU0MSwgMjY1NDcsIAotICAgIDI2NTUxLCAyNjU2MCwgMjY1NjMsIDI2NTY5LCAyNjU3MywgMjY1NzksIDI2NTg0LCAyNjU5MCwgMjY1OTgsIDI2NjA0LCAKLSAgICAyNjYwOSwgMjY2MTYsIDI2NjIxLCAyNjYyNSwgMjY2MjksIDI2NjM5LCAyNjY0NSwgMjY2NDksIDI2NjU5LCAyNjY2NSwgCi0gICAgMjY2NjksIDI2NjczLCAyNjY4MCwgMjY2ODgsIDI2Njk0LCAyNjcwMCwgMjY3MDksIDI2NzEzLCAyNjcxNywgMjY3MjEsIAotICAgIDI2NzI5LCAyNjczNiwgMjY3NDAsIDI2NzQ0LCAyNjc0OCwgMjY3NTIsIDI2NzU2LCAyNjc2MCwgMjY3NjQsIDI2NzY4LCAKLSAgICAyNjc3MiwgMjY3NzYsIDI2NzgwLCAyNjc4NSwgMjY3OTAsIDI2Nzk1LCAyNjc5OSwgMjY4MDMsIDI2ODA3LCAyNjgxMSwgCi0gICAgMjY4MTUsIDI2ODE5LCAyNjgyNywgMjY4MzUsIDI2ODQzLCAyNjg1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4NTksIAotICAgIDI2ODYzLCAyNjg2NywgMjY4NzEsIDI2ODc1LCAyNjg4MCwgMjY4ODUsIDI2ODkwLCAyNjg5NSwgMjY5MDAsIDI2OTA0LCAKLSAgICAyNjkwOSwgMjY5MTMsIDAsIDI2OTE3LCAyNjkyMiwgMjY5MjcsIDI2OTMyLCAyNjkzNiwgMjY5NDEsIDI2OTQ2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjk1MSwgMjY5NTUsIDI2OTU5LCAyNjk2MywgMjY5NjcsIDI2OTcyLCAKLSAgICAyNjk3NywgMjY5ODIsIDI2OTg3LCAyNjk5MiwgMjY5OTYsIDI3MDAxLCAyNzAwNSwgMjcwMDksIDI3MDE0LCAyNzAxOSwgCi0gICAgMjcwMjQsIDI3MDI5LCAyNzAzMywgMjcwMzgsIDI3MDQzLCAyNzA0OCwgMjcwNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI3MDU5LCAyNzA2MywgMjcwNjcsIDI3MDcxLCAyNzA3NSwgMjcwODAsIDI3MDg1LCAyNzA5MCwgMjcwOTUsIDI3MTAwLCAKLSAgICAyNzEwNCwgMjcxMDksIDI3MTEzLCAyNzExNywgMjcxMjIsIDI3MTI3LCAyNzEzMiwgMjcxMzcsIDI3MTQxLCAyNzE0NiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcxNTEsIDI3MTU1LCAyNzE1OSwgMjcxNjMsIDI3MTY3LCAKLSAgICAyNzE3MiwgMjcxNzcsIDI3MTgyLCAyNzE4NywgMjcxOTIsIDI3MTk2LCAyNzIwMSwgMjcyMDUsIDAsIDI3MjA5LCAyNzIxNCwgCi0gICAgMjcyMTksIDAsIDI3MjI0LCAyNzIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyMzQsIDI3MjM3LCAKLSAgICAyNzI0MSwgMjcyNDUsIDI3MjQ5LCAyNzI1MywgMjcyNTcsIDI3MjYxLCAyNzI2NSwgMjcyNjksIDI3MjczLCAyNzI3NywgCi0gICAgMjcyODEsIDI3Mjg1LCAyNzI4OSwgMjcyOTMsIDI3Mjk3LCAyNzMwMSwgMjczMDQsIDI3MzA4LCAyNzMxMiwgMjczMTYsIAotICAgIDI3MzIwLCAyNzMyNCwgMjczMjgsIDI3MzMyLCAyNzMzNiwgMjczNDAsIDI3MzQ0LCAyNzM0OCwgMjczNTIsIDI3MzU2LCAKLSAgICAyNzM2MCwgMjczNjMsIDI3MzY3LCAyNzM3MSwgMjczNzcsIDI3MzgzLCAyNzM4OSwgMjczOTUsIDI3NDAxLCAyNzQwNywgCi0gICAgMjc0MTMsIDI3NDE5LCAyNzQyNSwgMjc0MzEsIDI3NDM3LCAyNzQ0MywgMjc0NDksIDI3NDU1LCAyNzQ2NCwgMjc0NzMsIAotICAgIDI3NDc5LCAyNzQ4NSwgMjc0OTEsIDI3NDk2LCAyNzUwMCwgMjc1MDUsIDI3NTEwLCAyNzUxNSwgMjc1MTksIDI3NTI0LCAKLSAgICAyNzUyOSwgMjc1MzQsIDI3NTM4LCAyNzU0MywgMjc1NDcsIDI3NTUyLCAyNzU1NywgMjc1NjIsIDI3NTY3LCAyNzU3MSwgCi0gICAgMjc1NzUsIDI3NTc5LCAyNzU4MywgMjc1ODcsIDI3NTkxLCAyNzU5NSwgMjc1OTksIDI3NjAzLCAyNzYwNywgMjc2MTMsIAotICAgIDI3NjE3LCAyNzYyMSwgMjc2MjUsIDI3NjI5LCAyNzYzMywgMjc2NDEsIDI3NjQ3LCAyNzY1MSwgMjc2NTcsIDI3NjYxLCAKLSAgICAyNzY2NywgMjc2NzEsIDAsIDAsIDI3Njc1LCAyNzY3OSwgMjc2ODIsIDI3Njg1LCAyNzY4OCwgMjc2OTEsIDI3Njk0LCAKLSAgICAyNzY5NywgMjc3MDEsIDI3NzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcwOCwgMjc3MTYsIDI3NzI0LCAyNzczMiwgMjc3NDAsIAotICAgIDI3NzQ4LCAyNzc1NiwgMjc3NjQsIDI3NzcyLCAyNzc4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3ODgsIDI3NzkxLCAyNzc5NCwgCi0gICAgMjc3OTcsIDI3ODAyLCAyNzgwNSwgMjc4MTAsIDI3ODE3LCAyNzgyNSwgMjc4MzAsIDI3ODM3LCAyNzg0MCwgMjc4NDcsIAotICAgIDI3ODU0LCAyNzg2MSwgMCwgMjc4NjUsIDI3ODY5LCAyNzg3MiwgMjc4NzUsIDI3ODc4LCAyNzg4MSwgMjc4ODQsIDI3ODg3LCAKLSAgICAyNzg5MSwgMjc4OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDI3ODk4LCAyNzkwMSwgMjc5MDQsIDI3OTA3LCAyNzkxMCwgMjc5MTMsIAotICAgIDI3OTE3LCAyNzkyMSwgMjc5MjUsIDI3OTI5LCAyNzkzMywgMjc5MzcsIDI3OTQwLCAyNzk0NCwgMjc5NDgsIDI3OTUxLCAKLSAgICAyNzk1NSwgMjc5NTksIDI3OTYzLCAyNzk2NywgMjc5NzEsIDI3OTc1LCAyNzk3OSwgMjc5ODIsIDI3OTg2LCAyNzk5MCwgCi0gICAgMjc5OTQsIDI3OTk3LCAyODAwMSwgMjgwMDUsIDI4MDA5LCAyODAxMywgMjgwMTcsIDI4MDIxLCAyODAyNSwgMjgwMjksIAotICAgIDI4MDM2LCAyODA0MSwgMjgwNDYsIDI4MDUxLCAyODA1NiwgMjgwNjIsIDI4MDY4LCAyODA3NCwgMjgwODAsIDI4MDg1LCAKLSAgICAyODA5MSwgMjgwOTcsIDI4MTAyLCAyODEwOCwgMjgxMTQsIDI4MTIwLCAyODEyNiwgMjgxMzIsIDI4MTM3LCAyODE0MywgCi0gICAgMjgxNDgsIDI4MTU0LCAyODE2MCwgMjgxNjYsIDI4MTcyLCAyODE3OCwgMjgxODMsIDI4MTg4LCAyODE5NCwgMjgyMDAsIAotICAgIDI4MjA1LCAyODIxMSwgMjgyMTYsIDI4MjIyLCAyODIyNywgMjgyMzIsIDI4MjM4LCAyODI0NCwgMjgyNTAsIDI4MjU2LCAKLSAgICAyODI2MiwgMjgyNjgsIDI4Mjc0LCAyODI4MCwgMjgyODYsIDI4MjkyLCAyODI5OCwgMjgzMDQsIDI4MzA5LCAyODMxNCwgCi0gICAgMjgzMjAsIDI4MzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODMzMiwgMjgzNDEsIDI4MzUwLCAyODM1OCwgMjgzNjYsIAotICAgIDI4Mzc2LCAyODM4NCwgMjgzOTMsIDI4NDAwLCAyODQwNywgMjg0MTQsIDI4NDIyLCAyODQzMCwgMjg0MzgsIDI4NDQ2LCAKLSAgICAyODQ1NCwgMjg0NjIsIDI4NDcwLCAyODQ3OCwgMjg0ODUsIDI4NDkzLCAyODUwMSwgMjg1MDksIDI4NTE3LCAyODUyNSwgCi0gICAgMjg1MzUsIDI4NTQ1LCAyODU1NSwgMjg1NjUsIDI4NTc1LCAyODU4NSwgMjg1OTUsIDI4NjA1LCAyODYxNSwgMjg2MjUsIAotICAgIDI4NjM1LCAyODY0NSwgMjg2NTUsIDI4NjY1LCAyODY3MywgMjg2ODEsIDI4NjkxLCAyODY5OSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjg3MDksIDI4NzEzLCAyODcxNywgMjg3MjEsIDI4NzI1LCAyODcyOSwgMjg3MzMsIDI4NzM3LCAyODc0MSwgMjg3NDUsIAotICAgIDI4NzQ5LCAyODc1MywgMjg3NTcsIDI4NzYxLCAyODc2NSwgMjg3NjksIDI4NzczLCAyODc3NywgMjg3ODEsIDI4Nzg1LCAKLSAgICAyODc4OSwgMjg3OTMsIDI4Nzk3LCAyODgwMSwgMjg4MDcsIDI4ODExLCAyODgxNywgMjg4MjEsIDI4ODI3LCAyODgzMSwgCi0gICAgMjg4MzcsIDI4ODQxLCAyODg0NSwgMjg4NDksIDI4ODUzLCAyODg1NywgMjg4NjEsIDI4ODY3LCAyODg3MywgMjg4NzksIAotICAgIDI4ODg1LCAyODg5MSwgMjg4OTcsIDI4OTAyLCAyODkwOCwgMjg5MTQsIDI4OTIwLCAyODkyNiwgMjg5MzMsIDI4OTM5LCAKLSAgICAyODk0NCwgMjg5NDksIDI4OTUzLCAyODk1NywgMjg5NjEsIDI4OTY1LCAyODk2OSwgMjg5NzMsIDI4OTc3LCAyODk4MywgCi0gICAgMjg5ODksIDI4OTk1LCAyOTAwMCwgMjkwMDcsIDI5MDEyLCAyOTAxNywgMjkwMjMsIDI5MDI4LCAyOTAzNSwgMjkwNDIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MDQ4LCAyOTA1NCwgMjkwNTgsIDI5MDYzLCAyOTA2OCwgMjkwNzMsIAotICAgIDI5MDc4LCAyOTA4MywgMjkwODgsIDI5MDkzLCAyOTA5OCwgMjkxMDMsIDI5MTA4LCAyOTExMywgMjkxMTgsIDI5MTIzLCAKLSAgICAyOTEyOCwgMjkxMzIsIDI5MTM3LCAyOTE0MiwgMjkxNDcsIDI5MTUxLCAyOTE1NSwgMjkxNjAsIDI5MTY1LCAyOTE3MCwgCi0gICAgMjkxNzUsIDI5MTgwLCAyOTE4NSwgMjkxODksIDI5MTk0LCAwLCAyOTE5OSwgMjkyMDQsIDI5MjA5LCAyOTIxNCwgMjkyMjAsIAotICAgIDI5MjI2LCAyOTIzMiwgMjkyMzgsIDI5MjQzLCAyOTI0OCwgMjkyNTQsIDI5MjYxLCAwLCAwLCAwLCAwLCAyOTI2OCwgCi0gICAgMjkyNzMsIDI5Mjc5LCAyOTI4NSwgMjkyOTEsIDI5Mjk3LCAyOTMwMiwgMjkzMDcsIDI5MzEzLCAyOTMxOSwgMjkzMjQsIAotICAgIDI5MzI5LCAwLCAwLCAwLCAwLCAyOTMzNCwgMCwgMCwgMCwgMjkzMzksIDI5MzQ0LCAyOTM0OSwgMjkzNTQsIDI5MzU4LCAKLSAgICAyOTM2MiwgMjkzNjYsIDI5MzcwLCAyOTM3NCwgMjkzNzgsIDI5MzgzLCAyOTM4NywgMjkzOTIsIDI5Mzk3LCAyOTQwMywgCi0gICAgMjk0MDksIDI5NDE1LCAyOTQyMSwgMjk0MjYsIDI5NDMyLCAyOTQzOCwgMjk0NDQsIDI5NDQ5LCAyOTQ1NSwgMjk0NjAsIAotICAgIDI5NDY2LCAyOTQ3MiwgMjk0NzcsIDI5NDgzLCAyOTQ4OSwgMjk0OTUsIDI5NTAxLCAyOTUwNiwgMjk1MTEsIDI5NTE3LCAKLSAgICAyOTUyMywgMjk1MjgsIDI5NTM0LCAyOTUzOSwgMjk1NDUsIDI5NTUwLCAyOTU1NiwgMCwgMCwgMjk1NjIsIDI5NTY4LCAKLSAgICAyOTU3NCwgMjk1ODAsIDI5NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTU5MiwgMjk2MDEsIAotICAgIDI5NjEwLCAyOTYxOCwgMjk2MjcsIDI5NjM2LCAyOTY0NCwgMjk2NTMsIDI5NjYyLCAyOTY3MSwgMjk2ODAsIDI5Njg4LCAKLSAgICAyOTY5NywgMjk3MDYsIDI5NzE0LCAyOTcyMywgMjk3MzIsIDI5NzQxLCAyOTc1MCwgMjk3NTksIDI5NzY4LCAyOTc3NiwgCi0gICAgMjk3ODUsIDI5NzkzLCAyOTgwMSwgMjk4MTAsIDI5ODE4LCAyOTgyNywgMjk4MzYsIDI5ODQ1LCAyOTg1NCwgMjk4NjMsIAotICAgIDI5ODcyLCAyOTg4MCwgMjk4ODksIDI5ODk4LCAyOTkwNiwgMjk5MTUsIDI5OTI0LCAyOTkzMywgMjk5NDIsIDI5OTUxLCAKLSAgICAyOTk2MCwgMjk5NjksIDAsIDAsIDAsIDAsIDI5OTc4LCAyOTk4OCwgMjk5OTcsIDMwMDA2LCAzMDAxNCwgMzAwMjMsIAotICAgIDMwMDMxLCAzMDA0MCwgMzAwNDgsIDMwMDU3LCAzMDA2NiwgMzAwNzUsIDMwMDg0LCAzMDA5MywgMzAxMDIsIDMwMTExLCAKLSAgICAzMDEyMCwgMzAxMjksIDMwMTM4LCAzMDE0NywgMzAxNTYsIDMwMTY1LCAzMDE3NCwgMzAxODMsIDMwMTkyLCAzMDIwMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzAyMDgsIDMwMjE2LCAzMDIyMywgMzAyMzAsIDMwMjM3LCAzMDI0NCwgMzAyNTEsIDMwMjU4LCAKLSAgICAzMDI2NiwgMzAyNzMsIDMwMjgxLCAwLCAwLCAwLCAzMDI4OSwgMzAyOTcsIDMwMzA1LCAzMDMwOSwgMzAzMTUsIDMwMzIxLCAKLSAgICAzMDMyNywgMzAzMzMsIDMwMzM5LCAzMDM0NSwgMzAzNTEsIDMwMzU3LCAzMDM2MywgMzAzNjksIDMwMzc1LCAzMDM4MSwgCi0gICAgMzAzODcsIDMwMzkzLCAzMDM5OSwgMzA0MDMsIDMwNDA5LCAzMDQxNSwgMzA0MjEsIDMwNDI3LCAzMDQzMywgMzA0MzksIAotICAgIDMwNDQ1LCAzMDQ1MSwgMzA0NTcsIDMwNDYzLCAzMDQ2OSwgMzA0NzUsIDMwNDgxLCAzMDQ4NywgMzA0OTMsIDMwNDk3LCAKLSAgICAzMDUwMiwgMzA1MDcsIDMwNTEyLCAzMDUxNiwgMzA1MjEsIDMwNTI1LCAzMDUzMCwgMzA1MzUsIDMwNTQwLCAzMDU0NSwgCi0gICAgMzA1NTAsIDMwNTU1LCAzMDU2MCwgMzA1NjUsIDMwNTcwLCAzMDU3NCwgMzA1NzksIDMwNTg0LCAzMDU4OSwgMzA1OTQsIAotICAgIDMwNTk4LCAzMDYwMiwgMzA2MDcsIDMwNjEyLCAzMDYxNywgMzA2MjIsIDAsIDAsIDMwNjI4LCAzMDYzMiwgMzA2MzksIAotICAgIDMwNjQ0LCAzMDY1MCwgMzA2NTYsIDMwNjYxLCAzMDY2NywgMzA2NzMsIDMwNjc4LCAzMDY4NCwgMzA2OTAsIDMwNjk2LCAKLSAgICAzMDcwMiwgMzA3MDgsIDMwNzEzLCAzMDcxOCwgMzA3MjQsIDMwNzI5LCAzMDczNSwgMzA3NDAsIDMwNzQ2LCAzMDc1MiwgCi0gICAgMzA3NTgsIDMwNzY0LCAzMDc2OSwgMzA3NzQsIDMwNzc5LCAzMDc4NSwgMzA3OTEsIDMwNzk2LCAzMDgwMiwgMzA4MDgsIAotICAgIDMwODEyLCAzMDgxNywgMzA4MjIsIDMwODI3LCAzMDgzMiwgMzA4MzcsIDMwODQyLCAzMDg0NywgMzA4NTMsIDMwODU5LCAKLSAgICAzMDg2NSwgMzA4NzAsIDMwODc1LCAzMDg3OSwgMzA4ODQsIDMwODg4LCAzMDg5MywgMzA4OTcsIDMwOTAyLCAzMDkwNywgCi0gICAgMzA5MTIsIDMwOTE3LCAzMDkyNCwgMzA5MzEsIDMwOTM4LCAzMDk0OCwgMzA5NTcsIDMwOTY0LCAzMDk3MCwgMzA5ODEsIAotICAgIDMwOTg2LCAzMDk5MiwgMCwgMzA5OTgsIDMxMDAzLCAzMTAwOCwgMzEwMTYsIDMxMDIyLCAzMTAzMCwgMzEwMzUsIDMxMDQxLCAKLSAgICAzMTA0NywgMzEwNTMsIDMxMDU4LCAzMTA2NCwgMzEwNjksIDMxMDc2LCAzMTA4MiwgMzEwODcsIDMxMDkzLCAzMTA5OSwgCi0gICAgMzExMDUsIDMxMTEyLCAzMTExOSwgMzExMjYsIDMxMTMxLCAzMTEzNiwgMzExNDMsIDMxMTUwLCAzMTE1NywgMzExNjQsIAotICAgIDMxMTcxLCAwLCAwLCAzMTE3OCwgMzExODUsIDMxMTkyLCAzMTE5OCwgMzEyMDQsIDMxMjEwLCAzMTIxNiwgMzEyMjIsIAotICAgIDMxMjI4LCAzMTIzNSwgMzEyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjQ4LCAzMTI1NCwgMzEyNTksIDMxMjY0LCAzMTI2OSwgCi0gICAgMzEyNzQsIDMxMjc5LCAzMTI4NCwgMzEyOTAsIDMxMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAzMTMwMSwgMzEzMDYsIDMxMzExLCAKLSAgICAzMTMxNiwgMzEzMjEsIDMxMzI2LCAzMTMzMSwgMzEzNDAsIDMxMzQ3LCAzMTM1MiwgMzEzNTcsIDMxMzYyLCAzMTM2NywgCi0gICAgMzEzNzIsIDAsIDAsIDMxMzc3LCAzMTM4NCwgMzEzODcsIDMxMzkwLCAzMTM5MywgMzEzOTgsIDMxNDAyLCAzMTQwOCwgCi0gICAgMzE0MTIsIDMxNDE3LCAzMTQyNCwgMzE0MzIsIDMxNDM2LCAzMTQ0MSwgMzE0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MDgwLCAzNDA4OCwgMzQwOTYsIDM0MTA0LCAKKyAgICAzNDExMiwgMzQxMjIsIDM0MTMyLCAzNDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQxNTIsIDM0MTU3LCAzNDE2MiwgCisgICAgMzQxNjcsIDM0MTcyLCAzNDE4MSwgMzQxOTIsIDM0MjAxLCAzNDIxMiwgMzQyMTgsIDM0MjMxLCAzNDIzNywgMzQyNDQsIAorICAgIDM0MjUxLCAzNDI1NiwgMzQyNjIsIDM0MjY4LCAzNDI3OSwgMzQyODgsIDM0Mjk1LCAzNDMwMiwgMzQzMTEsIDM0MzE4LCAKKyAgICAzNDMyNywgMzQzMzcsIDM0MzQ3LCAzNDM1NCwgMzQzNjEsIDM0MzY4LCAzNDM3OCwgMzQzODMsIDM0MzkxLCAzNDM5NywgCisgICAgMzQ0MDUsIDM0NDE0LCAzNDQxOSwgMzQ0MjYsIDM0NDMyLCAzNDQzNywgMCwgMzQ0NDIsIDM0NDQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNDQ1NSwgMzQ0NjAsIDM0NDY2LCAzNDQ3MywgMzQ0ODEsIDM0NDg3LCAzNDQ5MywgMzQ0OTksIDM0NTA0LCAzNDUxMSwgCisgICAgMzQ1MTcsIDM0NTIzLCAzNDUyOSwgMzQ1MzcsIDM0NTQzLCAzNDU1MSwgMzQ1NTYsIDM0NTYyLCAzNDU2OCwgMzQ1NzUsIAorICAgIDM0NTgzLCAzNDU5MCwgMzQ1OTYsIDM0NjAzLCAzNDYxMCwgMzQ2MTYsIDM0NjIzLCAzNDYzMCwgMzQ2MzYsIDM0NjQxLCAKKyAgICAzNDY0NywgMzQ2NTUsIDM0NjY0LCAzNDY3MCwgMzQ2NzYsIDM0NjgyLCAzNDY4OCwgMzQ2OTYsIDM0NzAwLCAzNDcwNiwgCisgICAgMzQ3MTIsIDM0NzE4LCAzNDcyNCwgMzQ3MzAsIDM0NzM2LCAzNDc0MCwgMzQ3NDUsIDM0NzUwLCAzNDc1NywgMzQ3NjIsIAorICAgIDM0NzY2LCAzNDc3MiwgMzQ3NzcsIDM0NzgyLCAzNDc4NiwgMzQ3OTEsIDM0Nzk2LCAzNDgwMCwgMzQ4MDUsIDM0ODEwLCAKKyAgICAzNDgxNywgMzQ4MjEsIDM0ODI2LCAzNDgzMSwgMzQ4MzUsIDM0ODQwLCAzNDg0NCwgMzQ4NDksIDM0ODUzLCAzNDg1OSwgCisgICAgMzQ4NjQsIDM0ODcxLCAzNDg3NiwgMzQ4ODEsIDM0ODg1LCAzNDg5MCwgMzQ4OTUsIDM0OTAyLCAzNDkwNywgMzQ5MTMsIAorICAgIDM0OTE4LCAzNDkyMywgMzQ5MjgsIDM0OTMyLCAzNDkzNywgMzQ5NDQsIDM0OTUxLCAzNDk1NiwgMzQ5NjEsIDM0OTY1LCAKKyAgICAzNDk3MSwgMzQ5NzgsIDM0OTgzLCAzNDk4OCwgMzQ5OTMsIDM0OTk5LCAzNTAwNCwgMzUwMTAsIDM1MDE1LCAzNTAyMSwgCisgICAgMzUwMjcsIDM1MDMzLCAzNTA0MCwgMzUwNDcsIDM1MDU0LCAzNTA2MSwgMzUwNjgsIDM1MDc1LCAzNTA4MCwgMzUwODgsIAorICAgIDM1MDk3LCAzNTEwNiwgMzUxMTUsIDM1MTI0LCAzNTEzMywgMzUxNDIsIDM1MTU0LCAzNTE2MywgMzUxNzIsIDM1MTgxLCAKKyAgICAzNTE4OCwgMzUxOTMsIDM1MjAwLCAzNTIwOCwgMzUyMTYsIDM1MjIzLCAzNTIzMCwgMzUyMzcsIDM1MjQ0LCAzNTI1MiwgCisgICAgMzUyNjEsIDM1MjcwLCAzNTI3OSwgMzUyODgsIDM1Mjk3LCAzNTMwNiwgMzUzMTUsIDM1MzI0LCAzNTMzMywgMzUzNDIsIAorICAgIDM1MzUxLCAzNTM2MCwgMzUzNjksIDM1Mzc4LCAzNTM4NiwgMzUzOTUsIDM1NDA2LCAzNTQxNCwgMzU0MjMsIDM1NDM0LCAKKyAgICAzNTQ0MywgMzU0NTIsIDM1NDYxLCAzNTQ3MCwgMzU0NzgsIDM1NDg3LCAzNTQ5NCwgMzU0OTksIDM1NTA3LCAzNTUxMiwgCisgICAgMzU1MTksIDM1NTI0LCAzNTUzMywgMzU1MzksIDM1NTQ2LCAzNTU1MywgMzU1NTgsIDM1NTYzLCAzNTU3MSwgMzU1NzksIAorICAgIDM1NTg4LCAzNTU5NywgMzU2MDIsIDM1NjA5LCAzNTYyMCwgMzU2MjgsIDM1NjM3LCAzNTY0MywgMzU2NDksIDM1NjU0LCAKKyAgICAzNTY2MSwgMzU2NjYsIDM1Njc1LCAzNTY4MCwgMzU2ODUsIDM1NjkwLCAzNTY5NywgMzU3MDQsIDM1NzA5LCAzNTcxOCwgCisgICAgMzU3MjYsIDM1NzMxLCAzNTczNiwgMzU3NDMsIDM1NzUwLCAzNTc1NCwgMzU3NTgsIDM1NzYxLCAzNTc2NCwgMzU3NjcsIAorICAgIDM1NzcwLCAzNTc3MywgMzU3NzYsIDM1NzgzLCAzNTc4NiwgMzU3ODksIDM1Nzk0LCAzNTc5OCwgMzU4MDIsIDM1ODA2LCAKKyAgICAzNTgxMCwgMzU4MTQsIDM1ODIzLCAzNTgyOSwgMzU4MzUsIDM1ODQxLCAzNTg0OSwgMzU4NTcsIDM1ODYzLCAzNTg2OSwgCisgICAgMzU4NzYsIDM1ODgyLCAzNTg4NywgMzU4OTMsIDM1OTAwLCAzNTkwNiwgMzU5MTMsIDM1OTE5LCAzNTkyNywgMzU5MzMsIAorICAgIDM1OTQwLCAzNTk0NiwgMzU5NTIsIDM1OTU4LCAzNTk2NCwgMzU5NzAsIDM1OTc2LCAzNTk4NywgMzU5OTcsIDM2MDAzLCAKKyAgICAzNjAwOSwgMzYwMTksIDM2MDI1LCAzNjAzMywgMzYwNDEsIDM2MDQ5LCAwLCAwLCAwLCAwLCAwLCAzNjA1NCwgMzYwNTgsIAorICAgIDM2MDY1LCAzNjA3MiwgMzYwNzcsIDM2MDg2LCAzNjA5NCwgMzYxMDIsIDM2MTA5LCAzNjExNiwgMzYxMjMsIDM2MTMwLCAKKyAgICAzNjEzOCwgMzYxNDYsIDM2MTU2LCAzNjE2NiwgMzYxNzQsIDM2MTgyLCAzNjE5MCwgMzYxOTgsIDM2MjA3LCAzNjIxNiwgCisgICAgMzYyMjQsIDM2MjMyLCAzNjI0MSwgMzYyNTAsIDM2MjYwLCAzNjI3MCwgMzYyNzksIDM2Mjg4LCAzNjI5NiwgMzYzMDQsIAorICAgIDM2MzEyLCAzNjMyMCwgMzYzMzAsIDM2MzQwLCAzNjM0OCwgMzYzNTYsIDM2MzY0LCAzNjM3MiwgMzYzODAsIDM2Mzg4LCAKKyAgICAzNjM5NiwgMzY0MDQsIDM2NDEyLCAzNjQyMCwgMzY0MjgsIDM2NDM2LCAzNjQ0NSwgMzY0NTQsIDM2NDYzLCAzNjQ3MiwgCisgICAgMzY0ODIsIDM2NDkyLCAzNjQ5OSwgMzY1MDYsIDM2NTE0LCAzNjUyMiwgMzY1MzEsIDM2NTQwLCAzNjU0OCwgMzY1NTYsIAorICAgIDM2NTY4LCAzNjU4MCwgMzY1ODksIDM2NTk4LCAzNjYwNywgMzY2MTYsIDM2NjIzLCAzNjYzMCwgMzY2MzgsIDM2NjQ2LCAKKyAgICAzNjY1NCwgMzY2NjIsIDM2NjcwLCAzNjY3OCwgMzY2ODYsIDM2Njk0LCAzNjcwMywgMzY3MTIsIDM2NzIxLCAzNjczMCwgCisgICAgMzY3MzksIDM2NzQ4LCAzNjc1OCwgMzY3NjgsIDM2Nzc4LCAzNjc4OCwgMzY3OTcsIDM2ODA2LCAzNjgxMywgMzY4MjAsIAorICAgIDM2ODI4LCAzNjgzNiwgMzY4NDQsIDM2ODUyLCAzNjg2MCwgMzY4NjgsIDM2ODgwLCAzNjg5MiwgMzY5MDEsIDM2OTEwLCAKKyAgICAzNjkxOCwgMzY5MjYsIDM2OTM0LCAzNjk0MiwgMzY5NTMsIDM2OTY0LCAzNjk3NSwgMzY5ODYsIDM2OTk4LCAzNzAxMCwgCisgICAgMzcwMTgsIDM3MDI2LCAzNzAzNCwgMzcwNDIsIDM3MDUxLCAzNzA2MCwgMzcwNjksIDM3MDc4LCAzNzA4NiwgMzcwOTQsIAorICAgIDM3MTAyLCAzNzExMCwgMzcxMTgsIDM3MTI2LCAzNzEzNSwgMzcxNDQsIDM3MTU0LCAzNzE2NCwgMzcxNzIsIDM3MTgwLCAKKyAgICAzNzE4OCwgMzcxOTYsIDM3MjA0LCAzNzIxMiwgMzcyMTksIDM3MjI2LCAzNzIzNCwgMzcyNDIsIDM3MjUwLCAzNzI1OCwgCisgICAgMzcyNjYsIDM3Mjc0LCAzNzI4MiwgMzcyOTAsIDM3Mjk4LCAzNzMwNiwgMzczMTQsIDM3MzIyLCAzNzMzMCwgMzczMzgsIAorICAgIDM3MzQ2LCAzNzM1NCwgMzczNjMsIDM3MzcyLCAzNzM4MSwgMzczODksIDM3Mzk4LCAzNzQwNywgMzc0MTYsIDM3NDI1LCAKKyAgICAzNzQzNSwgMzc0NDQsIDM3NDUxLCAzNzQ1NiwgMzc0NjMsIDM3NDcwLCAzNzQ3OCwgMzc0ODYsIDM3NDk1LCAzNzUwNCwgCisgICAgMzc1MTQsIDM3NTI0LCAzNzUzNSwgMzc1NDYsIDM3NTU2LCAzNzU2NiwgMzc1NzYsIDM3NTg2LCAzNzU5NSwgMzc2MDQsIAorICAgIDM3NjE0LCAzNzYyNCwgMzc2MzUsIDM3NjQ2LCAzNzY1NiwgMzc2NjYsIDM3Njc2LCAzNzY4NiwgMzc2OTMsIDM3NzAwLCAKKyAgICAzNzcwOCwgMzc3MTYsIDM3NzIzLCAzNzczMCwgMzc3MzksIDM3NzQ4LCAzNzc1OCwgMzc3NjgsIDM3Nzc5LCAzNzc5MCwgCisgICAgMzc4MDAsIDM3ODEwLCAzNzgyMCwgMzc4MzAsIDM3ODM5LCAzNzg0OCwgMzc4NTYsIDM3ODY0LCAzNzg3MSwgMzc4NzgsIAorICAgIDM3ODg2LCAzNzg5NCwgMzc5MDMsIDM3OTEyLCAzNzkyMiwgMzc5MzIsIDM3OTQzLCAzNzk1NCwgMzc5NjQsIDM3OTc0LCAKKyAgICAzNzk4NCwgMzc5OTQsIDM4MDAzLCAzODAxMiwgMzgwMjIsIDM4MDMyLCAzODA0MywgMzgwNTQsIDM4MDY0LCAzODA3NCwgCisgICAgMzgwODQsIDM4MDk0LCAzODEwMSwgMzgxMDgsIDM4MTE2LCAzODEyNCwgMzgxMzMsIDM4MTQyLCAzODE1MiwgMzgxNjIsIAorICAgIDM4MTczLCAzODE4NCwgMzgxOTQsIDM4MjA0LCAzODIxNCwgMzgyMjQsIDM4MjMyLCAzODI0MCwgMzgyNDgsIDM4MjU2LCAKKyAgICAzODI2NSwgMzgyNzQsIDM4MjgyLCAzODI5MCwgMzgyOTcsIDM4MzA0LCAzODMxMSwgMzgzMTgsIDM4MzI2LCAzODMzNCwgCisgICAgMzgzNDIsIDM4MzUwLCAzODM2MSwgMzgzNzIsIDM4MzgzLCAzODM5NCwgMzg0MDUsIDM4NDE2LCAzODQyNCwgMzg0MzIsIAorICAgIDM4NDQzLCAzODQ1NCwgMzg0NjUsIDM4NDc2LCAzODQ4NywgMzg0OTgsIDM4NTA2LCAzODUxNCwgMzg1MjUsIDM4NTM2LCAKKyAgICAzODU0NywgMCwgMCwgMzg1NTgsIDM4NTY2LCAzODU3NCwgMzg1ODUsIDM4NTk2LCAzODYwNywgMCwgMCwgMzg2MTgsIAorICAgIDM4NjI2LCAzODYzNCwgMzg2NDUsIDM4NjU2LCAzODY2NywgMzg2NzgsIDM4Njg5LCAzODcwMCwgMzg3MDgsIDM4NzE2LCAKKyAgICAzODcyNywgMzg3MzgsIDM4NzQ5LCAzODc2MCwgMzg3NzEsIDM4NzgyLCAzODc5MCwgMzg3OTgsIDM4ODA5LCAzODgyMCwgCisgICAgMzg4MzEsIDM4ODQyLCAzODg1MywgMzg4NjQsIDM4ODcyLCAzODg4MCwgMzg4OTEsIDM4OTAyLCAzODkxMywgMzg5MjQsIAorICAgIDM4OTM1LCAzODk0NiwgMzg5NTQsIDM4OTYyLCAzODk3MywgMzg5ODQsIDM4OTk1LCAwLCAwLCAzOTAwNiwgMzkwMTQsIAorICAgIDM5MDIyLCAzOTAzMywgMzkwNDQsIDM5MDU1LCAwLCAwLCAzOTA2NiwgMzkwNzQsIDM5MDgyLCAzOTA5MywgMzkxMDQsIAorICAgIDM5MTE1LCAzOTEyNiwgMzkxMzcsIDAsIDM5MTQ4LCAwLCAzOTE1NiwgMCwgMzkxNjcsIDAsIDM5MTc4LCAzOTE4OSwgCisgICAgMzkxOTcsIDM5MjA1LCAzOTIxNiwgMzkyMjcsIDM5MjM4LCAzOTI0OSwgMzkyNjAsIDM5MjcxLCAzOTI3OSwgMzkyODcsIAorICAgIDM5Mjk4LCAzOTMwOSwgMzkzMjAsIDM5MzMxLCAzOTM0MiwgMzkzNTMsIDM5MzYxLCAzOTM2OSwgMzkzNzcsIDM5Mzg1LCAKKyAgICAzOTM5MywgMzk0MDEsIDM5NDA5LCAzOTQxNywgMzk0MjUsIDM5NDMzLCAzOTQ0MSwgMzk0NDksIDM5NDU3LCAwLCAwLCAKKyAgICAzOTQ2NSwgMzk0NzYsIDM5NDg3LCAzOTUwMSwgMzk1MTUsIDM5NTI5LCAzOTU0MywgMzk1NTcsIDM5NTcxLCAzOTU4MiwgCisgICAgMzk1OTMsIDM5NjA3LCAzOTYyMSwgMzk2MzUsIDM5NjQ5LCAzOTY2MywgMzk2NzcsIDM5Njg4LCAzOTY5OSwgMzk3MTMsIAorICAgIDM5NzI3LCAzOTc0MSwgMzk3NTUsIDM5NzY5LCAzOTc4MywgMzk3OTQsIDM5ODA1LCAzOTgxOSwgMzk4MzMsIDM5ODQ3LCAKKyAgICAzOTg2MSwgMzk4NzUsIDM5ODg5LCAzOTkwMCwgMzk5MTEsIDM5OTI1LCAzOTkzOSwgMzk5NTMsIDM5OTY3LCAzOTk4MSwgCisgICAgMzk5OTUsIDQwMDA2LCA0MDAxNywgNDAwMzEsIDQwMDQ1LCA0MDA1OSwgNDAwNzMsIDQwMDg3LCA0MDEwMSwgNDAxMDksIAorICAgIDQwMTE3LCA0MDEyOCwgNDAxMzYsIDAsIDQwMTQ3LCA0MDE1NSwgNDAxNjYsIDQwMTc0LCA0MDE4MiwgNDAxOTAsIDQwMTk4LCAKKyAgICA0MDIwNiwgNDAyMDksIDQwMjEyLCA0MDIxNSwgNDAyMTgsIDQwMjI0LCA0MDIzNSwgNDAyNDMsIDAsIDQwMjU0LCA0MDI2MiwgCisgICAgNDAyNzMsIDQwMjgxLCA0MDI4OSwgNDAyOTcsIDQwMzA1LCA0MDMxMywgNDAzMTksIDQwMzI1LCA0MDMzMSwgNDAzMzksIAorICAgIDQwMzQ3LCA0MDM1OCwgMCwgMCwgNDAzNjksIDQwMzc3LCA0MDM4OCwgNDAzOTYsIDQwNDA0LCA0MDQxMiwgMCwgNDA0MjAsIAorICAgIDQwNDI2LCA0MDQzMiwgNDA0MzgsIDQwNDQ2LCA0MDQ1NCwgNDA0NjUsIDQwNDc2LCA0MDQ4NCwgNDA0OTIsIDQwNTAwLCAKKyAgICA0MDUxMSwgNDA1MTksIDQwNTI3LCA0MDUzNSwgNDA1NDMsIDQwNTUxLCA0MDU1NywgNDA1NjMsIDAsIDAsIDQwNTY2LCAKKyAgICA0MDU3NywgNDA1ODUsIDAsIDQwNTk2LCA0MDYwNCwgNDA2MTUsIDQwNjIzLCA0MDYzMSwgNDA2MzksIDQwNjQ3LCA0MDY1NSwgCisgICAgNDA2NTgsIDAsIDQwNjYxLCA0MDY2NSwgNDA2NjksIDQwNjczLCA0MDY3NywgNDA2ODEsIDQwNjg1LCA0MDY4OSwgNDA2OTMsIAorICAgIDQwNjk3LCA0MDcwMSwgNDA3MDUsIDQwNzExLCA0MDcxNywgNDA3MjMsIDQwNzI2LCA0MDcyOSwgNDA3MzEsIDQwNzM1LCAKKyAgICA0MDczOSwgNDA3NDMsIDQwNzQ3LCA0MDc1MCwgNDA3NTQsIDQwNzU4LCA0MDc2NCwgNDA3NzAsIDQwNzc3LCA0MDc4NCwgCisgICAgNDA3ODksIDQwNzk0LCA0MDgwMCwgNDA4MDYsIDQwODA4LCA0MDgxMSwgNDA4MTMsIDQwODE3LCA0MDgyMSwgNDA4MjUsIAorICAgIDQwODI5LCA0MDgzMywgNDA4MzcsIDQwODQxLCA0MDg0NSwgNDA4NDksIDQwODU1LCA0MDg1OSwgNDA4NjMsIDQwODY5LCAKKyAgICA0MDg3NCwgNDA4ODEsIDQwODgzLCA0MDg4NiwgNDA4OTAsIDQwODk0LCA0MDg5OSwgNDA5MDUsIDQwOTA3LCA0MDkxNiwgCisgICAgNDA5MjUsIDQwOTI4LCA0MDkzMiwgNDA5MzQsIDQwOTM2LCA0MDkzOCwgNDA5NDEsIDQwOTQ3LCA0MDk0OSwgNDA5NTMsIAorICAgIDQwOTU3LCA0MDk2NCwgNDA5NzEsIDQwOTc1LCA0MDk4MCwgNDA5ODUsIDQwOTkwLCA0MDk5NSwgNDA5OTksIDQxMDAzLCAKKyAgICA0MTAwNiwgNDEwMTAsIDQxMDE0LCA0MTAyMSwgNDEwMjYsIDQxMDMwLCA0MTAzNCwgNDEwMzksIDQxMDQzLCA0MTA0NywgCisgICAgNDEwNTIsIDQxMDU3LCA0MTA2MSwgNDEwNjUsIDQxMDY5LCA0MTA3MSwgNDEwNzYsIDQxMDgxLCA0MTA4NSwgNDEwODksIAorICAgIDQxMDkzLCA0MTA5NywgMCwgNDExMDEsIDQxMTA1LCA0MTEwOSwgNDExMTUsIDQxMTIxLCA0MTEyNywgNDExMzMsIDQxMTQwLCAKKyAgICA0MTE0NywgNDExNTIsIDQxMTU3LCA0MTE2MSwgMCwgMCwgNDExNjcsIDQxMTcwLCA0MTE3MywgNDExNzYsIDQxMTgwLCAKKyAgICA0MTE4MywgNDExODcsIDQxMTkxLCA0MTE5NSwgNDEyMDAsIDQxMjA1LCA0MTIxMCwgNDEyMTcsIDQxMjIxLCA0MTIyNCwgCisgICAgNDEyMjcsIDQxMjMwLCA0MTIzMywgNDEyMzYsIDQxMjM5LCA0MTI0MywgNDEyNDYsIDQxMjUwLCA0MTI1NCwgNDEyNTgsIAorICAgIDQxMjYzLCA0MTI2OCwgMCwgNDEyNzMsIDQxMjc5LCA0MTI4NSwgNDEyOTEsIDQxMjk4LCA0MTMwNSwgNDEzMTIsIDQxMzE5LCAKKyAgICA0MTMyNSwgNDEzMzIsIDQxMzM5LCA0MTM0NiwgNDEzNTMsIDAsIDAsIDAsIDQxMzYwLCA0MTM2MywgNDEzNjYsIDQxMzY5LCAKKyAgICA0MTM3NCwgNDEzNzcsIDQxMzgwLCA0MTM4MywgNDEzODYsIDQxMzg5LCA0MTM5MiwgNDEzOTcsIDQxNDAwLCA0MTQwMywgCisgICAgNDE0MDYsIDQxNDA5LCA0MTQxMiwgNDE0MTcsIDQxNDIwLCA0MTQyMywgNDE0MjYsIDQxNDI5LCA0MTQzMiwgNDE0MzcsIAorICAgIDQxNDQwLCA0MTQ0MywgNDE0NDgsIDQxNDUzLCA0MTQ1NywgNDE0NjAsIDQxNDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTQ2NiwgNDE0NzEsIDQxNDc2LCA0MTQ4MywgNDE0OTEsIDQxNDk2LCAKKyAgICA0MTUwMSwgNDE1MDUsIDQxNTA5LCA0MTUxNCwgNDE1MjEsIDQxNTI4LCA0MTUzMiwgNDE1MzcsIDQxNTQyLCA0MTU0NywgCisgICAgNDE1NTIsIDQxNTU5LCA0MTU2NCwgNDE1NjksIDQxNTc0LCA0MTU4MywgNDE1OTAsIDQxNTk3LCA0MTYwMSwgNDE2MDYsIAorICAgIDQxNjEyLCA0MTYxNywgNDE2MjQsIDQxNjMyLCA0MTY0MCwgNDE2NDQsIDQxNjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTY1MiwgNDE2NTYsIDQxNjY0LCA0MTY2OCwgNDE2NzIsIDQxNjc3LCA0MTY4MSwgCisgICAgNDE2ODUsIDQxNjg5LCA0MTY5MSwgNDE2OTUsIDQxNjk5LCA0MTcwMywgNDE3MDgsIDQxNzEyLCA0MTcxNiwgNDE3MjQsIAorICAgIDQxNzI3LCA0MTczMSwgNDE3MzQsIDQxNzM3LCA0MTc0MywgNDE3NDcsIDQxNzUwLCA0MTc1NiwgNDE3NjAsIDQxNzY0LCAKKyAgICA0MTc2OCwgNDE3NzEsIDQxNzc1LCA0MTc3OCwgNDE3ODIsIDQxNzg0LCA0MTc4NywgNDE3OTAsIDQxNzk0LCA0MTc5NiwgCisgICAgNDE4MDAsIDQxODAzLCA0MTgwNiwgNDE4MTEsIDQxODE2LCA0MTgyMywgNDE4MjYsIDQxODI5LCA0MTgzMywgNDE4MzgsIAorICAgIDQxODQxLCA0MTg0NCwgNDE4NDcsIDQxODUxLCA0MTg1NiwgNDE4NjAsIDQxODYzLCA0MTg2NSwgNDE4NjgsIDQxODcxLCAKKyAgICA0MTg3NCwgNDE4NzgsIDQxODgzLCA0MTg4NiwgNDE4OTAsIDQxODk0LCA0MTg5OCwgNDE5MDIsIDQxOTA3LCA0MTkxMywgCisgICAgNDE5MTgsIDQxOTIzLCA0MTkyOSwgNDE5MzQsIDQxOTM5LCA0MTk0MywgNDE5NDcsIDQxOTUyLCA0MTk1NiwgNDE5NjAsIAorICAgIDQxOTYzLCA0MTk2NSwgNDE5NzAsIDQxOTc2LCA0MTk4MywgNDE5OTAsIDQxOTk3LCA0MjAwNCwgNDIwMTEsIDQyMDE4LCAKKyAgICA0MjAyNSwgNDIwMzIsIDQyMDQwLCA0MjA0NywgNDIwNTUsIDQyMDYyLCA0MjA2OSwgNDIwNzcsIDQyMDg1LCA0MjA5MCwgCisgICAgNDIwOTUsIDQyMTAwLCA0MjEwNSwgNDIxMTAsIDQyMTE1LCA0MjEyMCwgNDIxMjYsIDQyMTMxLCA0MjEzNywgNDIxNDMsIAorICAgIDQyMTQ5LCA0MjE1NSwgNDIxNjEsIDQyMTY4LCA0MjE3NiwgNDIxODMsIDQyMTg5LCA0MjE5NSwgNDIyMDEsIDQyMjA3LCAKKyAgICA0MjIxMywgNDIyMTksIDQyMjI2LCA0MjIzMiwgNDIyMzksIDQyMjQ2LCA0MjI1MywgNDIyNjAsIDQyMjY3LCA0MjI3NSwgCisgICAgNDIyODQsIDQyMjkyLCA0MjMwMywgNDIzMTEsIDQyMzE5LCA0MjMyOCwgNDIzMzUsIDQyMzQ0LCA0MjM1MywgNDIzNjEsIAorICAgIDQyMzcwLCA0MjM3OCwgNDIzODIsIDAsIDAsIDAsIDAsIDQyMzg2LCA0MjM4OCwgNDIzOTAsIDQyMzkyLCA0MjM5NCwgCisgICAgNDIzOTcsIDQyNDAwLCA0MjQwNCwgNDI0MDgsIDQyNDEzLCA0MjQxOCwgNDI0MjIsIDQyNDI2LCA0MjQzMCwgNDI0MzQsIAorICAgIDQyNDM5LCA0MjQ0NCwgNDI0NDksIDQyNDU0LCA0MjQ1OSwgNDI0NjQsIDQyNDY5LCA0MjQ3NCwgNDI0NzksIDQyNDg0LCAKKyAgICA0MjQ5MCwgNDI0OTQsIDQyNDk4LCA0MjUwMywgNDI1MDgsIDQyNTEzLCA0MjUxOCwgNDI1MjIsIDQyNTI5LCA0MjUzNiwgCisgICAgNDI1NDMsIDQyNTUwLCA0MjU1NywgNDI1NjQsIDQyNTcxLCA0MjU3OCwgNDI1ODYsIDQyNTk4LCA0MjYwNCwgNDI2MTAsIAorICAgIDQyNjE3LCA0MjYyNCwgNDI2MzEsIDQyNjM4LCA0MjY0NSwgNDI2NTIsIDQyNjU5LCA0MjY2NiwgNDI2NzEsIDQyNjc3LCAKKyAgICA0MjY4MiwgNDI2ODcsIDQyNjkyLCA0MjY5NywgNDI3MDIsIDQyNzA5LCA0MjcxNiwgNDI3MjEsIDQyNzI3LCA0MjczMiwgCisgICAgNDI3MzUsIDQyNzM4LCA0Mjc0MSwgNDI3NDQsIDQyNzQ4LCA0Mjc1MiwgNDI3NTcsIDQyNzYyLCA0Mjc2OCwgNDI3NzQsIAorICAgIDQyNzc4LCA0Mjc4MiwgNDI3ODYsIDQyNzkwLCA0Mjc5NSwgNDI4MDAsIDQyODA0LCA0MjgwOCwgNDI4MTIsIDQyODE2LCAKKyAgICA0MjgyMSwgNDI4MjYsIDQyODI5LCA0MjgzMiwgNDI4MzUsIDQyODM4LCA0Mjg0NCwgNDI4NTEsIDQyODYyLCA0Mjg3MiwgCisgICAgNDI4NzYsIDQyODg0LCA0Mjg5MSwgNDI4OTksIDQyOTA4LCA0MjkxMiwgNDI5MTgsIDQyOTI0LCA0MjkyOCwgNDI5MzMsIAorICAgIDQyOTM4LCA0Mjk0NCwgNDI5NTAsIDQyOTU2LCA0Mjk2MywgNDI5NjcsIDQyOTcxLCA0Mjk3NiwgNDI5NzksIDQyOTgxLCAKKyAgICA0Mjk4NSwgNDI5ODksIDQyOTk3LCA0MzAwMSwgNDMwMDMsIDQzMDA1LCA0MzAwOSwgNDMwMTcsIDQzMDIyLCA0MzAyOCwgCisgICAgNDMwMzgsIDQzMDQ1LCA0MzA1MCwgNDMwNTQsIDQzMDU4LCA0MzA2MiwgNDMwNjUsIDQzMDY4LCA0MzA3MSwgNDMwNzUsIAorICAgIDQzMDc5LCA0MzA4MywgNDMwODcsIDQzMDkxLCA0MzA5NCwgNDMwOTgsIDQzMTAyLCA0MzEwNSwgNDMxMDcsIDQzMTEwLCAKKyAgICA0MzExMiwgNDMxMTYsIDQzMTIwLCA0MzEyMiwgNDMxMjgsIDQzMTMxLCA0MzEzNiwgNDMxNDAsIDQzMTQ0LCA0MzE0NiwgCisgICAgNDMxNDgsIDQzMTUwLCA0MzE1MywgNDMxNTcsIDQzMTYxLCA0MzE2NSwgNDMxNjksIDQzMTczLCA0MzE3OSwgNDMxODUsIAorICAgIDQzMTg3LCA0MzE4OSwgNDMxOTEsIDQzMTkzLCA0MzE5NiwgNDMxOTgsIDQzMjAyLCA0MzIwNCwgNDMyMDgsIDQzMjEyLCAKKyAgICA0MzIxOCwgNDMyMjIsIDQzMjI2LCA0MzIzMCwgNDMyMzQsIDQzMjM4LCA0MzI0NCwgNDMyNDgsIDQzMjU4LCA0MzI2OCwgCisgICAgNDMyNzIsIDQzMjc4LCA0MzI4NSwgNDMyODksIDQzMjkzLCA0MzI5NiwgNDMzMDEsIDQzMzA1LCA0MzMxMSwgNDMzMTUsIAorICAgIDQzMzI4LCA0MzMzNywgNDMzNDEsIDQzMzQ1LCA0MzM1MSwgNDMzNTUsIDQzMzU4LCA0MzM2MCwgNDMzNjMsIDQzMzY3LCAKKyAgICA0MzM3MSwgNDMzNzgsIDQzMzgyLCA0MzM4NiwgNDMzOTAsIDQzMzkzLCA0MzM5OCwgNDM0MDMsIDQzNDA5LCA0MzQxNSwgCisgICAgNDM0MjAsIDQzNDI1LCA0MzQzMywgNDM0NDEsIDQzNDQ1LCA0MzQ0OSwgNDM0NTEsIDQzNDU2LCA0MzQ2MCwgNDM0NjQsIAorICAgIDQzNDcyLCA0MzQ4MCwgNDM0ODcsIDQzNDk0LCA0MzUwMywgNDM1MTIsIDQzNTE4LCA0MzUyNCwgNDM1MzIsIDQzNTQwLCAKKyAgICA0MzU0MiwgNDM1NDQsIDQzNTUwLCA0MzU1NiwgNDM1NjMsIDQzNTcwLCA0MzU3NiwgNDM1ODIsIDQzNTg2LCA0MzU5MCwgCisgICAgNDM1OTcsIDQzNjA0LCA0MzYxMSwgNDM2MTgsIDQzNjI4LCA0MzYzOCwgNDM2NDYsIDQzNjU0LCA0MzY1NiwgNDM2NjAsIAorICAgIDQzNjY0LCA0MzY2OSwgNDM2NzQsIDQzNjgyLCA0MzY5MCwgNDM2OTMsIDQzNjk2LCA0MzY5OSwgNDM3MDIsIDQzNzA1LCAKKyAgICA0MzcxMCwgNDM3MTQsIDQzNzE5LCA0MzcyNCwgNDM3MjcsIDQzNzMwLCA0MzczMywgNDM3MzYsIDQzNzM5LCA0Mzc0MywgCisgICAgNDM3NDYsIDQzNzQ5LCA0Mzc1MiwgNDM3NTUsIDQzNzU3LCA0Mzc1OSwgNDM3NjEsIDQzNzYzLCA0Mzc3MSwgNDM3NzksIAorICAgIDQzNzg1LCA0Mzc4OSwgNDM3OTUsIDQzODA1LCA0MzgxMSwgNDM4MTcsIDQzODIzLCA0MzgzMSwgNDM4NDAsIDQzODUyLCAKKyAgICA0Mzg1NiwgNDM4NjAsIDQzODYyLCA0Mzg2OCwgNDM4NzAsIDQzODcyLCA0Mzg3NCwgNDM4NzYsIDQzODgyLCA0Mzg4NSwgCisgICAgNDM4OTEsIDQzODk3LCA0MzkwMSwgNDM5MDUsIDQzOTA5LCA0MzkxMiwgNDM5MTYsIDQzOTIwLCA0MzkyMiwgNDM5MzEsIAorICAgIDQzOTQwLCA0Mzk0NSwgNDM5NTAsIDQzOTU2LCA0Mzk2MiwgNDM5NjgsIDQzOTcxLCA0Mzk3NCwgNDM5NzcsIDQzOTgwLCAKKyAgICA0Mzk4MiwgNDM5ODcsIDQzOTkyLCA0Mzk5NywgNDQwMDMsIDQ0MDA5LCA0NDAxOCwgNDQwMjcsIDQ0MDM0LCA0NDA0MSwgCisgICAgNDQwNDgsIDQ0MDU1LCA0NDA2NSwgNDQwNzUsIDQ0MDg1LCA0NDA5NSwgNDQxMDUsIDQ0MTE1LCA0NDEyNCwgNDQxMzMsIAorICAgIDQ0MTQyLCA0NDE1MSwgNDQxNTksIDQ0MTcxLCA0NDE4MiwgNDQxOTgsIDQ0MjAxLCA0NDIwNywgNDQyMTMsIDQ0MjE5LCAKKyAgICA0NDIyNywgNDQyNDIsIDQ0MjU4LCA0NDI2NCwgNDQyNzAsIDQ0Mjc3LCA0NDI4MywgNDQyOTIsIDQ0Mjk5LCA0NDMxMywgCisgICAgNDQzMjgsIDQ0MzMzLCA0NDMzOSwgNDQzNDcsIDQ0MzUwLCA0NDM1MywgNDQzNTUsIDQ0MzU4LCA0NDM2MSwgNDQzNjMsIAorICAgIDQ0MzY1LCA0NDM2OSwgNDQzNzIsIDQ0Mzc1LCA0NDM3OCwgNDQzODEsIDQ0Mzg2LCA0NDM5MSwgNDQzOTYsIDQ0NDAxLCAKKyAgICA0NDQwNiwgNDQ0MDksIDQ0NDExLCA0NDQxMywgNDQ0MTUsIDQ0NDE5LCA0NDQyMywgNDQ0MjcsIDQ0NDMzLCA0NDQzOCwgCisgICAgNDQ0NDAsIDQ0NDQyLCA0NDQ0NywgNDQ0NTIsIDQ0NDU3LCA0NDQ2MiwgNDQ0NjcsIDQ0NDcyLCA0NDQ3NCwgNDQ0NzYsIAorICAgIDQ0NDg2LCA0NDQ5MCwgNDQ0OTgsIDQ0NTA3LCA0NDUwOSwgNDQ1MTQsIDQ0NTE5LCA0NDUyNywgNDQ1MzEsIDQ0NTMzLCAKKyAgICA0NDUzNywgNDQ1MzksIDQ0NTQzLCA0NDU0NywgNDQ1NTEsIDQ0NTUzLCA0NDU1NSwgNDQ1NTcsIDQ0NTY0LCA0NDU3MywgCisgICAgNDQ1ODIsIDQ0NTkxLCA0NDYwMCwgNDQ2MDksIDQ0NjE4LCA0NDYyNywgNDQ2MzYsIDQ0NjQ0LCA0NDY1MiwgNDQ2NjEsIAorICAgIDQ0NjcwLCA0NDY3OSwgNDQ2ODgsIDQ0Njk2LCA0NDcwNCwgNDQ3MTMsIDQ0NzIyLCA0NDczMSwgNDQ3NDEsIDQ0NzUwLCAKKyAgICA0NDc2MCwgNDQ3NjksIDQ0Nzc5LCA0NDc4NywgNDQ3OTYsIDQ0ODA2LCA0NDgxNSwgNDQ4MjUsIDQ0ODM0LCA0NDg0NCwgCisgICAgNDQ4NTIsIDQ0ODYxLCA0NDg3MCwgNDQ4NzksIDQ0ODg4LCA0NDg5NywgNDQ5MDYsIDQ0OTE2LCA0NDkyNSwgNDQ5MzQsIAorICAgIDQ0OTQzLCA0NDk1MywgNDQ5NjIsIDQ0OTcxLCA0NDk4MCwgNDQ5ODksIDQ0OTk5LCA0NTAwOSwgNDUwMTgsIDQ1MDI3LCAKKyAgICA0NTAzNSwgNDUwNDQsIDQ1MDUxLCA0NTA2MCwgNDUwNjksIDQ1MDgwLCA0NTA4OSwgNDUwOTksIDQ1MTA5LCA0NTExNiwgCisgICAgNDUxMjMsIDQ1MTMwLCA0NTEzOSwgNDUxNDgsIDQ1MTU3LCA0NTE2NiwgNDUxNzMsIDQ1MTc4LCA0NTE4NiwgNDUxOTEsIAorICAgIDQ1MTk0LCA0NTIwMSwgNDUyMDQsIDQ1MjA5LCA0NTIxNCwgNDUyMTcsIDQ1MjIwLCA0NTIyOCwgNDUyMzEsIDQ1MjM2LCAKKyAgICA0NTIzOSwgNDUyNDcsIDQ1MjUyLCA0NTI2MCwgNDUyNjMsIDQ1MjY2LCA0NTI2OSwgNDUyNzQsIDQ1Mjc5LCA0NTI4MiwgCisgICAgNDUyODUsIDQ1MjkzLCA0NTI5NiwgNDUzMDMsIDQ1MzEwLCA0NTMxNCwgNDUzMTgsIDQ1MzIzLCA0NTMyOCwgNDUzMzQsIAorICAgIDQ1MzM5LCA0NTM0NSwgNDUzNTEsIDQ1MzU2LCA0NTM2MiwgNDUzNzAsIDQ1Mzc2LCA0NTM4NCwgNDUzOTIsIDQ1Mzk4LCAKKyAgICA0NTQwNiwgNDU0MTQsIDQ1NDIyLCA0NTQzMCwgNDU0MzYsIDQ1NDQ0LCA0NTQ1MiwgNDU0NjAsIDQ1NDY0LCA0NTQ3MCwgCisgICAgNDU0ODQsIDQ1NDk4LCA0NTUwMiwgNDU1MDYsIDQ1NTEwLCA0NTUxNCwgNDU1MjQsIDQ1NTI4LCA0NTUzMywgNDU1MzgsIAorICAgIDQ1NTQ0LCA0NTU1MCwgNDU1NTYsIDQ1NTYyLCA0NTU3MiwgNDU1ODIsIDQ1NTkwLCA0NTYwMSwgNDU2MTIsIDQ1NjIwLCAKKyAgICA0NTYzMSwgNDU2NDIsIDQ1NjUwLCA0NTY2MSwgNDU2NzIsIDQ1NjgwLCA0NTY4OCwgNDU2OTgsIDQ1NzA4LCA0NTcxMSwgCisgICAgNDU3MTQsIDQ1NzE3LCA0NTcyMiwgNDU3MjYsIDQ1NzMyLCA0NTczOSwgNDU3NDYsIDQ1NzU0LCA0NTc2MSwgNDU3NjUsIAorICAgIDQ1NzY5LCA0NTc3MywgNDU3NzcsIDQ1Nzc5LCA0NTc4MywgNDU3ODcsIDQ1NzkyLCA0NTc5NywgNDU4MDQsIDQ1ODExLCAKKyAgICA0NTgxNCwgNDU4MjEsIDQ1ODIzLCA0NTgyNSwgNDU4MjksIDQ1ODMzLCA0NTgzOCwgNDU4NDQsIDQ1ODUwLCA0NTg1NiwgCisgICAgNDU4NjIsIDQ1ODcxLCA0NTg4MCwgNDU4ODksIDQ1ODkzLCA0NTg5NSwgNDU4OTksIDQ1OTA2LCA0NTkxMywgNDU5MjAsIAorICAgIDQ1OTI3LCA0NTkzNCwgNDU5MzcsIDQ1OTQyLCA0NTk0OCwgNDU5NTEsIDQ1OTU2LCA0NTk2MSwgMCwgNDU5NjYsIDQ1OTcwLCAKKyAgICA0NTk3NywgNDU5ODQsIDQ1OTkxLCA0NTk5OCwgNDYwMDIsIDQ2MDA2LCA0NjAxMCwgNDYwMTQsIDQ2MDIwLCA0NjAyNiwgCisgICAgNDYwMzEsIDQ2MDM3LCA0NjA0MywgNDYwNDksIDQ2MDU1LCA0NjA2MywgNDYwNzAsIDQ2MDc3LCA0NjA4NCwgNDYwOTEsIAorICAgIDQ2MDk2LCA0NjEwMiwgNDYxMTEsIDQ2MTE1LCA0NjEyMiwgNDYxMjYsIDQ2MTMwLCA0NjEzNiwgNDYxNDIsIDQ2MTQ4LCAKKyAgICA0NjE1NCwgNDYxNTgsIDQ2MTYyLCA0NjE2NSwgNDYxNjgsIDQ2MTcyLCA0NjE3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYxODYsIDQ2MTg5LCA0NjE5MywgCisgICAgNDYxOTcsIDQ2MjAzLCA0NjIwOSwgNDYyMTUsIDQ2MjIzLCA0NjIzMCwgNDYyMzQsIDQ2MjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjI0NywgNDYyNTAsIDQ2MjUzLCA0NjI1NiwgCisgICAgNDYyNTksIDQ2MjYyLCA0NjI2NSwgNDYyNjksIDQ2MjcyLCA0NjI3NiwgNDYyODAsIDQ2Mjg0LCA0NjI4OCwgNDYyOTIsIAorICAgIDQ2Mjk2LCA0NjMwMCwgNDYzMDQsIDQ2MzA4LCA0NjMxMiwgNDYzMTYsIDQ2MzIwLCA0NjMyMywgNDYzMjYsIDQ2MzI5LCAKKyAgICA0NjMzMiwgNDYzMzUsIDQ2MzM4LCA0NjM0MiwgNDYzNDUsIDQ2MzQ5LCA0NjM1MywgNDYzNTcsIDQ2MzYxLCA0NjM2NSwgCisgICAgNDYzNjksIDQ2MzczLCA0NjM3NywgNDYzODEsIDQ2Mzg1LCA0NjM4OSwgNDYzOTMsIDQ2Mzk5LCA0NjQwNSwgNDY0MTEsIAorICAgIDQ2NDE4LCA0NjQyNSwgNDY0MzIsIDQ2NDM5LCA0NjQ0NiwgNDY0NTMsIDQ2NDYwLCA0NjQ2NywgNDY0NzQsIDQ2NDgxLCAKKyAgICA0NjQ4OCwgNDY0OTUsIDQ2NTAyLCA0NjUwOSwgNDY1MTYsIDQ2NTIzLCA0NjUzMCwgNDY1MzUsIDQ2NTQxLCA0NjU0NywgCisgICAgNDY1NTMsIDQ2NTU4LCA0NjU2NCwgNDY1NzAsIDQ2NTc2LCA0NjU4MSwgNDY1ODcsIDQ2NTkzLCA0NjU5OCwgNDY2MDQsIAorICAgIDQ2NjEwLCA0NjYxNSwgNDY2MjEsIDQ2NjI3LCA0NjYzMiwgNDY2MzgsIDQ2NjQ0LCA0NjY0OSwgNDY2NTUsIDQ2NjYxLCAKKyAgICA0NjY2NywgNDY2NzMsIDQ2Njc5LCA0NjY4NCwgNDY2OTAsIDQ2Njk2LCA0NjcwMiwgNDY3MDcsIDQ2NzEzLCA0NjcxOSwgCisgICAgNDY3MjUsIDQ2NzMwLCA0NjczNiwgNDY3NDIsIDQ2NzQ3LCA0Njc1MywgNDY3NTksIDQ2NzY0LCA0Njc3MCwgNDY3NzYsIAorICAgIDQ2NzgxLCA0Njc4NywgNDY3OTMsIDQ2Nzk4LCA0NjgwNCwgNDY4MTAsIDQ2ODE2LCA0NjgyMiwgNDY4MjgsIDQ2ODMzLCAKKyAgICA0NjgzOSwgNDY4NDUsIDQ2ODUxLCA0Njg1NiwgNDY4NjIsIDQ2ODY4LCA0Njg3NCwgNDY4NzksIDQ2ODg1LCA0Njg5MSwgCisgICAgNDY4OTYsIDQ2OTAyLCA0NjkwOCwgNDY5MTMsIDQ2OTE5LCA0NjkyNSwgNDY5MzAsIDQ2OTM2LCA0Njk0MiwgNDY5NDcsIAorICAgIDQ2OTUzLCA0Njk1OSwgNDY5NjUsIDQ2OTcxLCA0Njk3NywgNDY5ODEsIDQ2OTg2LCA0Njk5MSwgNDY5OTYsIDQ3MDAxLCAKKyAgICA0NzAwNiwgNDcwMTEsIDQ3MDE2LCA0NzAyMSwgNDcwMjYsIDQ3MDMxLCA0NzAzNSwgNDcwMzksIDQ3MDQzLCA0NzA0NywgCisgICAgNDcwNTEsIDQ3MDU1LCA0NzA2MCwgNDcwNjQsIDQ3MDY5LCA0NzA3NCwgNDcwNzksIDQ3MDg0LCA0NzA4OSwgNDcwOTQsIAorICAgIDQ3MDk5LCA0NzEwOCwgNDcxMTcsIDQ3MTI2LCA0NzEzNSwgNDcxNDQsIDQ3MTUzLCA0NzE2MiwgNDcxNzEsIDQ3MTc4LCAKKyAgICA0NzE4NiwgNDcxOTQsIDQ3MjAxLCA0NzIwOCwgNDcyMTYsIDQ3MjI0LCA0NzIzMSwgNDcyMzgsIDQ3MjQ2LCA0NzI1NCwgCisgICAgNDcyNjEsIDQ3MjY4LCA0NzI3NiwgNDcyODQsIDQ3MjkxLCA0NzI5OCwgNDczMDYsIDQ3MzE1LCA0NzMyNCwgNDczMzIsIAorICAgIDQ3MzQxLCA0NzM1MCwgNDczNTcsIDQ3MzY0LCA0NzM3MiwgNDczODEsIDQ3MzkwLCA0NzM5OCwgNDc0MDcsIDQ3NDE2LCAKKyAgICA0NzQyMywgNDc0MzAsIDQ3NDM5LCA0NzQ0OCwgNDc0NTcsIDQ3NDY2LCA0NzQ3NSwgNDc0ODQsIDQ3NDkxLCA0NzQ5OCwgCisgICAgNDc1MDcsIDQ3NTE2LCA0NzUyNSwgNDc1MzQsIDQ3NTQzLCA0NzU1MiwgNDc1NTksIDQ3NTY2LCA0NzU3NSwgNDc1ODQsIAorICAgIDQ3NTkzLCA0NzYwMywgNDc2MTMsIDQ3NjIyLCA0NzYzMiwgNDc2NDIsIDQ3NjUyLCA0NzY2MiwgNDc2NzIsIDQ3NjgyLCAKKyAgICA0NzY5MSwgNDc3MDAsIDQ3NzA3LCA0NzcxNSwgNDc3MjMsIDQ3NzMxLCA0NzczOSwgNDc3NDQsIDQ3NzQ5LCA0Nzc1OCwgCisgICAgNDc3NjYsIDQ3NzczLCA0Nzc4MiwgNDc3OTAsIDQ3Nzk3LCA0NzgwNiwgNDc4MTQsIDQ3ODIxLCA0NzgzMCwgNDc4MzgsIAorICAgIDQ3ODQ1LCA0Nzg1NCwgNDc4NjIsIDQ3ODY5LCA0Nzg3OCwgNDc4ODYsIDQ3ODkzLCA0NzkwMywgNDc5MTIsIDQ3OTE5LCAKKyAgICA0NzkyOSwgNDc5MzgsIDQ3OTQ1LCA0Nzk1NSwgNDc5NjQsIDQ3OTcxLCA0Nzk4MCwgNDc5ODksIDQ3OTk4LCA0ODAwNywgCisgICAgNDgwMjEsIDQ4MDM1LCA0ODA0MiwgNDgwNDcsIDQ4MDUyLCA0ODA1NywgNDgwNjIsIDQ4MDY3LCA0ODA3MiwgNDgwNzcsIAorICAgIDQ4MDgyLCA0ODA5MCwgNDgwOTgsIDQ4MTA2LCA0ODExNCwgNDgxMTksIDQ4MTI2LCA0ODEzMywgNDgxNDAsIDQ4MTQ1LCAKKyAgICA0ODE1MywgNDgxNjAsIDQ4MTY4LCA0ODE3MiwgNDgxNzksIDQ4MTg1LCA0ODE5MiwgNDgxOTYsIDQ4MjAyLCA0ODIwOCwgCisgICAgNDgyMTQsIDQ4MjE4LCA0ODIyMSwgNDgyMjUsIDQ4MjI5LCA0ODIzNiwgNDgyNDIsIDQ4MjQ4LCA0ODI1NCwgNDgyNjAsIAorICAgIDQ4Mjc0LCA0ODI4NCwgNDgyOTgsIDQ4MzEyLCA0ODMxOCwgNDgzMjgsIDQ4MzQyLCA0ODM0NSwgNDgzNDgsIDQ4MzU1LCAKKyAgICA0ODM2MywgNDgzNjksIDQ4Mzc0LCA0ODM4MiwgNDgzOTQsIDQ4NDA2LCA0ODQxNCwgNDg0MTgsIDQ4NDIyLCA0ODQyNSwgCisgICAgNDg0MjgsIDQ4NDMyLCA0ODQzNiwgNDg0MzksIDQ4NDQyLCA0ODQ0NywgNDg0NTIsIDQ4NDU4LCA0ODQ2NCwgNDg0NjksIAorICAgIDQ4NDc0LCA0ODQ4MCwgNDg0ODYsIDQ4NDkxLCA0ODQ5NiwgNDg1MDEsIDQ4NTA2LCA0ODUxMiwgNDg1MTgsIDQ4NTIzLCAKKyAgICA0ODUyOCwgNDg1MzQsIDQ4NTQwLCA0ODU0NSwgNDg1NTAsIDQ4NTUzLCA0ODU1NiwgNDg1NjUsIDQ4NTY3LCA0ODU2OSwgCisgICAgNDg1NzIsIDQ4NTc2LCA0ODU4MiwgNDg1ODQsIDQ4NTg3LCA0ODU5NCwgNDg2MDEsIDQ4NjA5LCA0ODYxNywgNDg2MjcsIAorICAgIDQ4NjQxLCA0ODY0NiwgNDg2NTEsIDQ4NjU1LCA0ODY2MCwgNDg2NjgsIDQ4Njc2LCA0ODY4NSwgNDg2OTQsIDQ4NzAzLCAKKyAgICA0ODcxMiwgNDg3MTcsIDQ4NzIyLCA0ODcyOCwgNDg3MzQsIDQ4NzQwLCA0ODc0NiwgNDg3NDksIDQ4NzU1LCA0ODc2MSwgCisgICAgNDg3NzEsIDQ4NzgxLCA0ODc4OSwgNDg3OTcsIDQ4ODA2LCA0ODgxNSwgNDg4MTksIDQ4ODI3LCA0ODgzNSwgNDg4NDMsIAorICAgIDQ4ODUxLCA0ODg2MCwgNDg4NjksIDQ4ODc4LCA0ODg4NywgNDg4OTIsIDQ4ODk3LCA0ODkwMiwgNDg5MDcsIDQ4OTEyLCAKKyAgICA0ODkxOCwgNDg5MjQsIDQ4OTI5LCA0ODkzNSwgNDg5MzcsIDQ4OTM5LCA0ODk0MSwgNDg5NDMsIDQ4OTQ2LCA0ODk0OSwgCisgICAgNDg5NTEsIDQ4OTUzLCA0ODk1NSwgNDg5NTksIDQ4OTYzLCA0ODk2NSwgNDg5NjcsIDQ4OTcwLCA0ODk3MywgNDg5NzcsIAorICAgIDQ4OTgzLCA0ODk4OSwgNDg5OTEsIDQ4OTk4LCA0OTAwMiwgNDkwMDcsIDQ5MDEyLCA0OTAxNCwgNDkwMjQsIDQ5MDMwLCAKKyAgICA0OTAzNiwgNDkwNDIsIDQ5MDQ4LCA0OTA1NCwgNDkwNjAsIDQ5MDY1LCA0OTA2OCwgNDkwNzEsIDQ5MDc0LCA0OTA3NiwgCisgICAgNDkwNzgsIDQ5MDgyLCA0OTA4NiwgNDkwOTEsIDQ5MDk2LCA0OTEwMSwgNDkxMDQsIDQ5MTA4LCA0OTExMywgNDkxMTYsIAorICAgIDQ5MTIwLCA0OTEyNSwgNDkxMzAsIDQ5MTM1LCA0OTE0MCwgNDkxNDUsIDQ5MTUwLCA0OTE1NSwgNDkxNjAsIDQ5MTY1LCAKKyAgICA0OTE3MCwgNDkxNzUsIDQ5MTgwLCA0OTE4NiwgNDkxOTIsIDQ5MTk4LCA0OTIwMCwgNDkyMDMsIDQ5MjA1LCA0OTIwOCwgCisgICAgNDkyMTAsIDQ5MjEyLCA0OTIxNCwgNDkyMTYsIDQ5MjE4LCA0OTIyMCwgNDkyMjIsIDQ5MjI0LCA0OTIyNiwgNDkyMjgsIAorICAgIDQ5MjMwLCA0OTIzMiwgNDkyMzQsIDQ5MjM2LCA0OTIzOCwgNDkyNDAsIDQ5MjQyLCA0OTI0NywgNDkyNTIsIDQ5MjU3LCAKKyAgICA0OTI2MiwgNDkyNjcsIDQ5MjcyLCA0OTI3NywgNDkyODIsIDQ5Mjg3LCA0OTI5MiwgNDkyOTcsIDQ5MzAyLCA0OTMwNywgCisgICAgNDkzMTIsIDQ5MzE3LCA0OTMyMiwgNDkzMjcsIDQ5MzMyLCA0OTMzNywgNDkzNDIsIDQ5MzQ2LCA0OTM1MCwgNDkzNTQsIAorICAgIDQ5MzYwLCA0OTM2NiwgNDkzNzEsIDQ5Mzc2LCA0OTM4MSwgNDkzODcsIDQ5MzkzLCA0OTM5OCwgNDk0MDYsIDQ5NDE0LCAKKyAgICA0OTQyMiwgNDk0MzAsIDQ5NDM4LCA0OTQ0NiwgNDk0NTQsIDQ5NDYyLCA0OTQ2OCwgNDk0NzMsIDQ5NDc4LCA0OTQ4MywgCisgICAgNDk0ODYsIDQ5NDkwLCA0OTQ5NCwgNDk0OTgsIDQ5NTAyLCA0OTUwNiwgNDk1MTAsIDQ5NTE3LCA0OTUyNCwgNDk1MzIsIAorICAgIDQ5NTQwLCA0OTU0NSwgNDk1NTAsIDQ5NTU3LCA0OTU2NCwgNDk1NzEsIDQ5NTc4LCA0OTU4MSwgNDk1ODQsIDQ5NTg5LCAKKyAgICA0OTU5MSwgNDk1OTUsIDQ5NjAwLCA0OTYwMiwgNDk2MDQsIDQ5NjA2LCA0OTYwOCwgNDk2MTMsIDQ5NjE2LCA0OTYxOCwgCisgICAgNDk2MjMsIDQ5NjMwLCA0OTYzNywgNDk2NDAsIDQ5NjQ0LCA0OTY0OSwgNDk2NTQsIDQ5NjYyLCA0OTY2OCwgNDk2NzQsIAorICAgIDQ5Njg2LCA0OTY5MywgNDk3MDEsIDQ5NzA2LCA0OTcxMSwgNDk3MTcsIDQ5NzIwLCA0OTcyMywgNDk3MjgsIDQ5NzMwLCAKKyAgICA0OTczNCwgNDk3MzYsIDQ5NzM4LCA0OTc0MCwgNDk3NDIsIDQ5NzQ0LCA0OTc0NiwgNDk3NTEsIDQ5NzUzLCA0OTc1NSwgCisgICAgNDk3NTcsIDQ5NzU5LCA0OTc2MywgNDk3NjUsIDQ5NzY4LCA0OTc3MywgNDk3NzgsIDQ5NzgzLCA0OTc4OCwgNDk3OTQsIAorICAgIDQ5ODAwLCA0OTgwMiwgNDk4MDUsIDQ5ODEyLCA0OTgxOSwgNDk4MjYsIDQ5ODMzLCA0OTgzNywgNDk4NDEsIDQ5ODQzLCAKKyAgICA0OTg0NSwgNDk4NDksIDQ5ODU1LCA0OTg2MCwgNDk4NjIsIDQ5ODY2LCA0OTg3NSwgNDk4ODMsIDQ5ODkxLCA0OTg5NywgCisgICAgNDk5MDMsIDQ5OTA4LCA0OTkxNCwgNDk5MTksIDQ5OTIyLCA0OTkzNiwgNDk5MzksIDQ5OTQ0LCA0OTk0OSwgNDk5NTUsIAorICAgIDQ5OTY1LCA0OTk2NywgNDk5NzMsIDQ5OTc5LCA0OTk4MywgNDk5OTAsIDQ5OTk0LCA0OTk5NiwgNDk5OTgsIDUwMDAyLCAKKyAgICA1MDAwOCwgNTAwMTMsIDUwMDE5LCA1MDAyMSwgNTAwMjcsIDUwMDI5LCA1MDAzNSwgNTAwMzcsIDUwMDM5LCA1MDA0NCwgCisgICAgNTAwNDYsIDUwMDUwLCA1MDA1NSwgNTAwNTcsIDUwMDYyLCA1MDA2NywgNTAwNzEsIDUwMDc4LCA1MDA4OCwgNTAwOTMsIAorICAgIDUwMDk5LCA1MDEwMiwgNTAxMDgsIDUwMTExLCA1MDExNiwgNTAxMjEsIDUwMTI1LCA1MDEyNywgNTAxMjksIDUwMTMzLCAKKyAgICA1MDEzNywgNTAxNDEsIDUwMTQ1LCA1MDE1MCwgNTAxNTIsIDUwMTU3LCA1MDE2MCwgNTAxNjMsIDUwMTY2LCA1MDE3MCwgCisgICAgNTAxNzQsIDUwMTc5LCA1MDE4MywgNTAxODgsIDUwMTkzLCA1MDE5NywgNTAyMDIsIDUwMjA4LCA1MDIxMSwgNTAyMTcsIAorICAgIDUwMjIyLCA1MDIyNiwgNTAyMzEsIDUwMjM3LCA1MDI0MywgNTAyNTAsIDUwMjU2LCA1MDI2MywgNTAyNzAsIDUwMjcyLCAKKyAgICA1MDI3OSwgNTAyODMsIDUwMjg5LCA1MDI5NSwgNTAzMDAsIDUwMzA2LCA1MDMxMCwgNTAzMTUsIDUwMzE4LCA1MDMyMywgCisgICAgNTAzMjksIDUwMzM2LCA1MDM0NCwgNTAzNTEsIDUwMzYwLCA1MDM3MCwgNTAzNzcsIDUwMzgzLCA1MDM4NywgNTAzOTQsIAorICAgIDUwMzk5LCA1MDQwOCwgNTA0MTEsIDUwNDE0LCA1MDQyMywgNTA0MzMsIDUwNDQwLCA1MDQ0MiwgNTA0NDgsIDUwNDUzLCAKKyAgICA1MDQ1NSwgNTA0NTgsIDUwNDYyLCA1MDQ3MCwgNTA0NzksIDUwNDgyLCA1MDQ4NywgNTA0OTIsIDUwNTAwLCA1MDUwOCwgCisgICAgNTA1MTYsIDUwNTI0LCA1MDUzMCwgNTA1MzYsIDUwNTQyLCA1MDU1MCwgNTA1NTUsIDUwNTU4LCA1MDU2MiwgNTA1NjUsIAorICAgIDUwNTc3LCA1MDU4NywgNTA1OTgsIDUwNjA3LCA1MDYxOCwgNTA2MjgsIDUwNjM3LCA1MDY0MywgNTA2NTEsIDUwNjU1LCAKKyAgICA1MDY2MywgNTA2NjcsIDUwNjc1LCA1MDY4MiwgNTA2ODksIDUwNjk4LCA1MDcwNywgNTA3MTcsIDUwNzI3LCA1MDczNywgCisgICAgNTA3NDcsIDUwNzU2LCA1MDc2NSwgNTA3NzUsIDUwNzg1LCA1MDc5NCwgNTA4MDMsIDUwODA5LCA1MDgxNSwgNTA4MjEsIAorICAgIDUwODI3LCA1MDgzMywgNTA4MzksIDUwODQ2LCA1MDg1MiwgNTA4NTksIDUwODY2LCA1MDg3MiwgNTA4NzgsIDUwODg0LCAKKyAgICA1MDg5MCwgNTA4OTYsIDUwOTAyLCA1MDkwOSwgNTA5MTUsIDUwOTIyLCA1MDkyOSwgNTA5MzYsIDUwOTQzLCA1MDk1MCwgCisgICAgNTA5NTcsIDUwOTY0LCA1MDk3MSwgNTA5NzksIDUwOTg2LCA1MDk5NCwgNTEwMDIsIDUxMDA3LCA1MTAxMCwgNTEwMTQsIAorICAgIDUxMDE4LCA1MTAyNCwgNTEwMjcsIDUxMDMyLCA1MTAzOCwgNTEwNDMsIDUxMDQ3LCA1MTA1MiwgNTEwNTgsIDUxMDY1LCAKKyAgICA1MTA2OCwgNTEwNzUsIDUxMDgyLCA1MTA4NiwgNTEwOTQsIDUxMTAyLCA1MTEwNywgNTExMTMsIDUxMTE4LCA1MTEyMywgCisgICAgNTExMzAsIDUxMTM3LCA1MTE0NSwgNTExNTMsIDUxMTYyLCA1MTE2NiwgNTExNzUsIDUxMTgwLCA1MTE4NCwgNTExOTEsIAorICAgIDUxMTk1LCA1MTIwMSwgNTEyMDksIDUxMjE0LCA1MTIyMSwgNTEyMjUsIDUxMjMwLCA1MTIzNCwgNTEyMzksIDUxMjQzLCAKKyAgICA1MTI0OCwgNTEyNTMsIDUxMjYyLCA1MTI2NCwgNTEyNjcsIDUxMjcwLCA1MTI3NywgNTEyODQsIDUxMjkwLCA1MTI5OCwgCisgICAgNTEzMDQsIDUxMzExLCA1MTMxNiwgNTEzMTksIDUxMzI0LCA1MTMyOSwgNTEzMzQsIDUxMzQyLCA1MTM0NiwgNTEzNTMsIAorICAgIDUxMzYxLCA1MTM2OSwgNTEzNzQsIDUxMzc5LCA1MTM4NSwgNTEzOTAsIDUxMzk1LCA1MTQwMSwgNTE0MDYsIDUxNDA5LCAKKyAgICA1MTQxMywgNTE0MTcsIDUxNDI0LCA1MTQzNCwgNTE0MzksIDUxNDQ4LCA1MTQ1NywgNTE0NjMsIDUxNDY5LCA1MTQ3NCwgCisgICAgNTE0NzksIDUxNDg0LCA1MTQ4OSwgNTE0OTUsIDUxNTAxLCA1MTUwOSwgNTE1MTcsIDUxNTIzLCA1MTUyOSwgNTE1MzMsIAorICAgIDUxNTM3LCA1MTU0NCwgNTE1NTEsIDUxNTU3LCA1MTU2MCwgNTE1NjMsIDUxNTY3LCA1MTU3MSwgNTE1NzUsIDUxNTgwLCAKKyAgICA1MTU4NiwgNTE1OTIsIDUxNTk5LCA1MTYwNiwgNTE2MTEsIDUxNjE1LCA1MTYxOSwgNTE2MjMsIDUxNjI3LCA1MTYzMSwgCisgICAgNTE2MzUsIDUxNjM5LCA1MTY0MywgNTE2NDcsIDUxNjUxLCA1MTY1NSwgNTE2NTksIDUxNjYzLCA1MTY2NywgNTE2NzEsIAorICAgIDUxNjc1LCA1MTY3OSwgNTE2ODMsIDUxNjg3LCA1MTY5MSwgNTE2OTUsIDUxNjk5LCA1MTcwMywgNTE3MDcsIDUxNzExLCAKKyAgICA1MTcxNSwgNTE3MTksIDUxNzIzLCA1MTcyNywgNTE3MzEsIDUxNzM1LCA1MTczOSwgNTE3NDMsIDUxNzQ3LCA1MTc1MSwgCisgICAgNTE3NTUsIDUxNzU5LCA1MTc2MywgNTE3NjcsIDUxNzcxLCA1MTc3NSwgNTE3NzksIDUxNzgzLCA1MTc4NywgNTE3OTEsIAorICAgIDUxNzk1LCA1MTc5OSwgNTE4MDMsIDUxODA3LCA1MTgxMSwgNTE4MTUsIDUxODE5LCA1MTgyMywgNTE4MjcsIDUxODMxLCAKKyAgICA1MTgzNSwgNTE4MzksIDUxODQzLCA1MTg0NywgNTE4NTEsIDUxODU1LCA1MTg1OSwgNTE4NjMsIDUxODY3LCA1MTg3MSwgCisgICAgNTE4NzUsIDUxODc5LCA1MTg4MywgNTE4ODcsIDUxODkxLCA1MTg5NSwgNTE4OTksIDUxOTAzLCA1MTkwNywgNTE5MTEsIAorICAgIDUxOTE1LCA1MTkxOSwgNTE5MjMsIDUxOTI3LCA1MTkzMSwgNTE5MzUsIDUxOTM5LCA1MTk0MywgNTE5NDcsIDUxOTUxLCAKKyAgICA1MTk1NSwgNTE5NTksIDUxOTYzLCA1MTk2NywgNTE5NzEsIDUxOTc1LCA1MTk3OSwgNTE5ODMsIDUxOTg3LCA1MTk5MSwgCisgICAgNTE5OTUsIDUxOTk5LCA1MjAwMywgNTIwMDcsIDUyMDExLCA1MjAxNSwgNTIwMTksIDUyMDIzLCA1MjAyNywgNTIwMzEsIAorICAgIDUyMDM1LCA1MjAzOSwgNTIwNDMsIDUyMDQ3LCA1MjA1MSwgNTIwNTUsIDUyMDU5LCA1MjA2MywgNTIwNjcsIDUyMDcxLCAKKyAgICA1MjA3NSwgNTIwNzksIDUyMDgzLCA1MjA4NywgNTIwOTEsIDUyMDk1LCA1MjA5OSwgNTIxMDMsIDUyMTA3LCA1MjExMSwgCisgICAgNTIxMTUsIDUyMTE5LCA1MjEyMywgNTIxMjcsIDUyMTMxLCA1MjEzNSwgNTIxMzksIDUyMTQzLCA1MjE0NywgNTIxNTEsIAorICAgIDUyMTU1LCA1MjE1OSwgNTIxNjMsIDUyMTY3LCA1MjE3MSwgNTIxNzUsIDUyMTc5LCA1MjE4MywgNTIxODcsIDUyMTkxLCAKKyAgICA1MjE5NSwgNTIxOTksIDUyMjAzLCA1MjIwNywgNTIyMTEsIDUyMjE1LCA1MjIxOSwgNTIyMjMsIDUyMjI3LCA1MjIzMSwgCisgICAgNTIyMzUsIDUyMjM5LCA1MjI0MywgNTIyNDcsIDUyMjUxLCA1MjI1NSwgNTIyNTksIDUyMjYzLCA1MjI2NywgNTIyNzEsIAorICAgIDUyMjc1LCA1MjI3OSwgNTIyODMsIDUyMjg3LCA1MjI5MSwgNTIyOTUsIDUyMjk5LCA1MjMwMywgNTIzMDcsIDUyMzExLCAKKyAgICA1MjMxNSwgNTIzMTksIDUyMzIzLCA1MjMyNywgNTIzMzEsIDUyMzM1LCA1MjMzOSwgNTIzNDMsIDUyMzQ3LCA1MjM1MSwgCisgICAgNTIzNTUsIDUyMzU5LCA1MjM2MywgNTIzNjcsIDUyMzcxLCA1MjM3NSwgNTIzNzksIDUyMzgzLCA1MjM4NywgNTIzOTEsIAorICAgIDUyMzk1LCA1MjM5OSwgNTI0MDMsIDUyNDA3LCA1MjQxMSwgNTI0MTUsIDUyNDE5LCA1MjQyMywgNTI0MjcsIDUyNDMxLCAKKyAgICA1MjQzNSwgNTI0MzksIDUyNDQzLCA1MjQ0NywgNTI0NTEsIDUyNDU1LCA1MjQ1OSwgNTI0NjMsIDUyNDY3LCA1MjQ3MSwgCisgICAgNTI0NzUsIDUyNDc5LCA1MjQ4MywgNTI0ODcsIDUyNDkxLCA1MjQ5NSwgNTI0OTksIDUyNTAzLCA1MjUwNywgNTI1MTEsIAorICAgIDUyNTE1LCA1MjUxOSwgNTI1MjMsIDUyNTI3LCA1MjUzMSwgNTI1MzUsIDUyNTM5LCA1MjU0MywgNTI1NDcsIDUyNTUxLCAKKyAgICA1MjU1NSwgNTI1NTksIDUyNTYzLCA1MjU2NywgNTI1NzEsIDUyNTc1LCA1MjU3OSwgNTI1ODMsIDUyNTg3LCA1MjU5MSwgCisgICAgNTI1OTUsIDUyNTk5LCA1MjYwMywgNTI2MDcsIDUyNjExLCA1MjYxNSwgNTI2MTksIDUyNjIzLCA1MjYyNywgNTI2MzEsIAorICAgIDUyNjM1LCA1MjY0MiwgNTI2NTAsIDUyNjU2LCA1MjY2MiwgNTI2NjksIDUyNjc2LCA1MjY4MiwgNTI2ODgsIDUyNjk0LCAKKyAgICA1MjcwMCwgNTI3MDQsIDUyNzA4LCA1MjcxMywgNTI3MTgsIDUyNzI0LCA1MjczMCwgNTI3MzgsIDUyNzQ1LCA1Mjc1MCwgCisgICAgNTI3NTUsIDUyNzYzLCA1Mjc3MiwgNTI3NzksIDUyNzg5LCA1MjgwMCwgNTI4MDMsIDUyODA2LCA1MjgxMCwgNTI4MTQsIAorICAgIDUyODIxLCA1MjgyOCwgNTI4MzksIDUyODUwLCA1Mjg1OSwgNTI4NjgsIDUyODc0LCA1Mjg4MCwgNTI4ODcsIDUyODk0LCAKKyAgICA1MjkwMywgNTI5MTMsIDUyOTI0LCA1MjkzNCwgNTI5NDQsIDUyOTU0LCA1Mjk2NSwgNTI5NzYsIDUyOTg2LCA1Mjk5NywgCisgICAgNTMwMDcsIDUzMDE3LCA1MzAyNiwgNTMwMzYsIDUzMDQ2LCA1MzA1NiwgNTMwNjYsIDUzMDczLCA1MzA4MCwgNTMwODcsIAorICAgIDUzMDk0LCA1MzEwNCwgNTMxMTQsIDUzMTIyLCA1MzEzMCwgNTMxMzcsIDUzMTQ0LCA1MzE1MSwgNTMxNTgsIDUzMTY1LCAKKyAgICA1MzE3MCwgNTMxNzUsIDUzMTgxLCA1MzE4OSwgNTMxOTgsIDUzMjA2LCA1MzIxNCwgNTMyMjIsIDUzMjMwLCA1MzIzOCwgCisgICAgNTMyNDYsIDUzMjU0LCA1MzI2MiwgNTMyNzEsIDUzMjgwLCA1MzI4OSwgNTMyOTgsIDUzMzA3LCA1MzMxNiwgNTMzMjUsIAorICAgIDUzMzM0LCA1MzM0MywgNTMzNTIsIDUzMzYxLCA1MzM3MCwgNTMzNzksIDUzMzg4LCA1MzM5NywgNTM0MDYsIDUzNDIwLCAKKyAgICA1MzQzNSwgNTM0NDksIDUzNDY0LCA1MzQ3OCwgNTM0OTIsIDUzNTA2LCA1MzUyMCwgNTM1MzAsIDUzNTQxLCA1MzU1MSwgCisgICAgNTM1NjIsIDUzNTc3LCA1MzU5MiwgNTM2MDAsIDUzNjA2LCA1MzYxMywgNTM2MjAsIDUzNjI3LCA1MzYzNCwgNTM2MzksIAorICAgIDUzNjQ1LCA1MzY1MCwgNTM2NTUsIDUzNjYxLCA1MzY2NiwgNTM2NzEsIDUzNjc2LCA1MzY4MSwgNTM2ODYsIDUzNjkzLCAKKyAgICA1MzY5OSwgNTM3MDcsIDUzNzEyLCA1MzcxNywgNTM3MjEsIDUzNzI1LCA1MzczMywgNTM3NDEsIDUzNzQ5LCA1Mzc1NywgCisgICAgNTM3NjQsIDUzNzcxLCA1Mzc4NCwgNTM3OTcsIDUzODEwLCA1MzgyMywgNTM4MzEsIDUzODM5LCA1Mzg0NSwgNTM4NTEsIAorICAgIDUzODU4LCA1Mzg2NSwgNTM4NzIsIDUzODc5LCA1Mzg4MywgNTM4ODgsIDUzODk2LCA1MzkwNCwgNTM5MTIsIDUzOTE5LCAKKyAgICA1MzkyMywgNTM5MzEsIDUzOTM5LCA1Mzk0MywgNTM5NDcsIDUzOTUyLCA1Mzk1OSwgNTM5NjcsIDUzOTc1LCA1Mzk5NCwgCisgICAgNTQwMTMsIDU0MDMyLCA1NDA1MSwgNTQwNzAsIDU0MDg5LCA1NDEwOCwgNTQxMjcsIDU0MTMzLCA1NDE0MCwgNTQxNDksIAorICAgIDU0MTU3LCA1NDE2NSwgNTQxNzEsIDU0MTc0LCA1NDE3NywgNTQxODIsIDU0MTg1LCA1NDIwNSwgNTQyMTIsIDU0MjE4LCAKKyAgICA1NDIyNCwgNTQyMjgsIDU0MjMxLCA1NDIzNCwgNTQyMzcsIDU0MjQ5LCA1NDI2MywgNTQyNzAsIDU0Mjc3LCA1NDI4MCwgCisgICAgNTQyODQsIDU0Mjg3LCA1NDI5MiwgNTQyOTcsIDU0MzAyLCA1NDMwOCwgNTQzMTcsIDU0MzI0LCA1NDMzMSwgNTQzMzksIAorICAgIDU0MzQ2LCA1NDM1MywgNTQzNTYsIDU0MzYyLCA1NDM2OCwgNTQzNzEsIDU0Mzc0LCA1NDM3OSwgNTQzODQsIDU0MzkwLCAKKyAgICA1NDM5NiwgNTQ0MDAsIDU0NDA1LCA1NDQxMiwgNTQ0MTYsIDU0NDIyLCA1NDQyNiwgNTQ0MzAsIDU0NDM4LCA1NDQ1MCwgCisgICAgNTQ0NTksIDU0NDYzLCA1NDQ2NSwgNTQ0NzQsIDU0NDgzLCA1NDQ4OSwgNTQ0OTIsIDU0NDk4LCA1NDUwNCwgNTQ1MDksIAorICAgIDU0NTE0LCA1NDUxOSwgNTQ1MjQsIDU0NTI5LCA1NDUzNCwgNTQ1MzYsIDU0NTQyLCA1NDU0NywgNTQ1NTUsIDU0NTU5LCAKKyAgICA1NDU2NSwgNTQ1NjgsIDU0NTcyLCA1NDU3OSwgNTQ1ODYsIDU0NTg4LCA1NDU5MCwgNTQ1OTYsIDU0NjAyLCA1NDYwOCwgCisgICAgNTQ2MTcsIDU0NjI2LCA1NDYzMywgNTQ2NDAsIDU0NjQ2LCA1NDY1MywgNTQ2NTgsIDU0NjYzLCA1NDY2OCwgNTQ2NzQsIAorICAgIDU0NjgwLCA1NDY4NSwgNTQ2OTIsIDU0Njk2LCA1NDcwMCwgNTQ3MTMsIDU0NzI2LCA1NDczOCwgNTQ3NDcsIDU0NzUzLCAKKyAgICA1NDc2MCwgNTQ3NjUsIDU0NzcwLCA1NDc3NSwgNTQ3ODAsIDU0Nzg1LCA1NDc4NywgNTQ3OTQsIDU0ODAyLCA1NDgxMCwgCisgICAgNTQ4MTgsIDU0ODI1LCA1NDgzMywgNTQ4MzksIDU0ODQ0LCA1NDg1MCwgNTQ4NTYsIDU0ODYyLCA1NDg2OSwgNTQ4NzUsIAorICAgIDU0ODgzLCA1NDg5MSwgNTQ4OTksIDU0OTA3LCA1NDkxNSwgNTQ5MjEsIDU0OTI3LCA1NDkzNiwgNTQ5NDAsIDU0OTQ5LCAKKyAgICA1NDk1OCwgNTQ5NjcsIDU0OTc1LCA1NDk3OSwgNTQ5ODUsIDU0OTkyLCA1NDk5OSwgNTUwMDMsIDU1MDA5LCA1NTAxNywgCisgICAgNTUwMjMsIDU1MDI4LCA1NTAzNCwgNTUwMzksIDU1MDQ0LCA1NTA1MSwgNTUwNTgsIDU1MDYzLCA1NTA2OCwgNTUwNzYsIAorICAgIDU1MDg0LCA1NTA5NCwgNTUxMDQsIDU1MTExLCA1NTExOCwgNTUxMjIsIDU1MTI2LCA1NTEzOCwgNTUxNDQsIDU1MTUxLCAKKyAgICA1NTE1NiwgNTUxNjEsIDU1MTY4LCA1NTE3NSwgNTUxODEsIDU1MTg3LCA1NTE5NywgNTUyMDQsIDU1MjEyLCA1NTIyMCwgCisgICAgNTUyMjksIDU1MjM2LCA1NTI0MiwgNTUyNDksIDU1MjU1LCA1NTI2MywgNTUyNzEsIDU1Mjc5LCA1NTI4NywgNTUyOTMsIAorICAgIDU1Mjk4LCA1NTMwOCwgNTUzMTksIDU1MzI2LCA1NTMzNSwgNTUzNDEsIDU1MzQ2LCA1NTM1MSwgNTUzNjEsIDU1MzY4LCAKKyAgICA1NTM3NCwgNTUzODAsIDU1Mzg4LCA1NTM5MywgNTU0MDAsIDU1NDA3LCA1NTQxOCwgNTU0MjUsIDU1NDMyLCA1NTQzOSwgCisgICAgNTU0NDYsIDU1NDUzLCA1NTQ2MSwgNTU0NjksIDU1NDgyLCA1NTQ5NSwgNTU1MDcsIDU1NTE5LCA1NTUzMywgNTU1NDcsIAorICAgIDU1NTUzLCA1NTU1OSwgNTU1NjgsIDU1NTc3LCA1NTU4NCwgNTU1OTEsIDU1NjAwLCA1NTYwOSwgNTU2MTgsIDU1NjI3LCAKKyAgICA1NTYzNSwgNTU2NDMsIDU1NjUzLCA1NTY2MywgNTU2NzcsIDU1NjkxLCA1NTcwMCwgNTU3MDksIDU1NzIyLCA1NTczNSwgCisgICAgNTU3NDQsIDU1NzUzLCA1NTc2NCwgNTU3NzUsIDU1NzgxLCA1NTc4NywgNTU3OTYsIDU1ODA1LCA1NTgxMCwgNTU4MTUsIAorICAgIDU1ODIzLCA1NTgyOSwgNTU4MzUsIDU1ODQzLCA1NTg1MSwgNTU4NjQsIDU1ODc3LCA1NTg4MSwgNTU4ODUsIDU1ODkzLCAKKyAgICA1NTkwMSwgNTU5MDgsIDU1OTE2LCA1NTkyNCwgNTU5MzMsIDU1OTQyLCA1NTk0OCwgNTU5NTQsIDU1OTYxLCA1NTk2OCwgCisgICAgNTU5NzUsIDU1OTgyLCA1NTk5MSwgNTYwMDAsIDU2MDAzLCA1NjAwNiwgNTYwMTEsIDU2MDE2LCA1NjAyMiwgNTYwMjgsIAorICAgIDU2MDM1LCA1NjA0MiwgNTYwNTMsIDU2MDY0LCA1NjA3MSwgNTYwNzgsIDU2MDg2LCA1NjA5NCwgNTYxMDIsIDU2MTEwLCAKKyAgICA1NjExOCwgNTYxMjYsIDU2MTMyLCA1NjEzOCwgNTYxNDIsIDU2MTQ2LCA1NjE1NCwgNTYxNjIsIDU2MTY3LCA1NjE3MiwgCisgICAgNTYxNzcsIDU2MTgyLCA1NjE4OCwgNTYyMDIsIDU2MjA5LCA1NjIxNiwgNTYyMjAsIDU2MjIyLCA1NjIyNCwgNTYyMjksIAorICAgIDU2MjM0LCA1NjIzOSwgNTYyNDQsIDU2MjUyLCA1NjI1OSwgNTYyNjYsIDU2Mjc0LCA1NjI4NiwgNTYyOTQsIDU2MzAyLCAKKyAgICA1NjMxMywgNTYzMTcsIDU2MzIxLCA1NjMyNywgNTYzMzUsIDU2MzQ4LCA1NjM1NSwgNTYzNjIsIDU2MzY5LCA1NjM3NSwgCisgICAgNTYzODIsIDU2MzkxLCA1NjQwMCwgNTY0MDYsIDU2NDEyLCA1NjQxOCwgNTY0MjgsIDU2NDM4LCA1NjQ0NiwgNTY0NTUsIAorICAgIDU2NDYwLCA1NjQ2MywgNTY0NjgsIDU2NDczLCA1NjQ3OCwgNTY0ODQsIDU2NDkwLCA1NjQ5NCwgNTY0OTcsIDU2NTAwLCAKKyAgICA1NjUwMywgNTY1MDgsIDU2NTEzLCA1NjUxOSwgNTY1MjUsIDU2NTI5LCA1NjUzMywgNTY1NDAsIDU2NTQ3LCA1NjU1NCwgCisgICAgNTY1NjEsIDU2NTY4LCA1NjU3NSwgNTY1ODUsIDU2NTk1LCA1NjYwMiwgNTY2MDksIDU2NjE3LCA1NjYyNSwgNTY2MjksIAorICAgIDU2NjM0LCA1NjYzOSwgNTY2NDUsIDU2NjUxLCA1NjY1NCwgNTY2NTcsIDU2NjYwLCA1NjY2MywgNTY2NjgsIDU2NjczLCAKKyAgICA1NjY3OCwgNTY2ODMsIDU2Njg4LCA1NjY5MywgNTY2OTcsIDU2NzAxLCA1NjcwNSwgNTY3MTAsIDU2NzE1LCA1NjcxOSwgCisgICAgNTY3MjMsIDU2NzI5LCA1NjczMywgNTY3MzksIDU2NzQ0LCA1Njc1MSwgNTY3NTksIDU2NzY2LCA1Njc3NCwgNTY3ODEsIAorICAgIDU2Nzg5LCA1Njc5OCwgNTY4MDUsIDU2ODE1LCA1NjgyNiwgNTY4MzIsIDU2ODQxLCA1Njg0NywgNTY4NTYsIDU2ODY1LCAKKyAgICA1Njg3MSwgNTY4NzcsIDU2ODgxLCA1Njg4NSwgNTY4OTQsIDU2OTAzLCA1NjkxMCwgNTY5MTcsIDU2OTI2LCA1NjkzNSwgCisgICAgNTY5NDEsIDU2OTQ3LCA1Njk1NCwgNTY5NTksIDU2OTYzLCA1Njk2NywgNTY5NzIsIDU2OTc3LCA1Njk4MiwgNTY5OTAsIAorICAgIDU2OTk4LCA1NzAwMSwgNTcwMDUsIDU3MDE0LCA1NzAyNCwgNTcwMzMsIDU3MDQzLCA1NzA1NCwgNTcwNjcsIDU3MDcxLCAKKyAgICA1NzA3NSwgNTcwNzksIDU3MDgzLCA1NzA4OCwgNTcwOTMsIDU3MDk5LCA1NzEwNSwgNTcxMTIsIDU3MTE5LCA1NzEyNSwgCisgICAgNTcxMzEsIDU3MTM3LCA1NzE0MywgNTcxNTEsIDU3MTU5LCA1NzE2NiwgNTcxNzMsIDU3MTgwLCAwLCAwLCA1NzE4NywgCisgICAgNTcxOTYsIDU3MjA1LCA1NzIxNSwgNTcyMjUsIDU3MjM0LCA1NzI0MywgNTcyNTIsIDU3MjYxLCA1NzI2NywgNTcyNzIsIAorICAgIDU3MjgxLCA1NzI5MSwgNTczMDAsIDU3MzEwLCA1NzMxNywgNTczMjQsIDU3MzMxLCA1NzMzOCwgNTczNDMsIDU3MzQ4LCAKKyAgICA1NzM1MywgNTczNTgsIDU3MzY2LCA1NzM3NSwgNTczODMsIDU3MzkyLCA1NzM5NiwgNTc0MDAsIDU3NDA0LCA1NzQwOCwgCisgICAgNTc0MTgsIDAsIDAsIDU3NDIxLCA1NzQzMCwgNTc0MzksIDU3NDQ4LCA1NzQ1NywgNTc0NjMsIDU3NDY5LCA1NzQ3NSwgCisgICAgNTc0ODEsIDU3NDkxLCA1NzUwMSwgNTc1MTEsIDU3NTIxLCA1NzUzMSwgNTc1NDEsIDU3NTUxLCA1NzU2MSwgNTc1NjgsIAorICAgIDU3NTc1LCA1NzU4MiwgNTc1ODksIDU3NTk2LCA1NzYwMywgNTc2MTAsIDU3NjE3LCA1NzYyMywgNTc2MjksIDU3NjM1LCAKKyAgICA1NzY0MSwgNTc2NDcsIDU3NjUzLCA1NzY1OSwgNTc2NjUsIDU3Njc2LCAwLCAwLCAwLCA1NzY4NiwgNTc2OTMsIDU3Njk2LCAKKyAgICA1NzcwMCwgNTc3MDQsIDU3NzA5LCA1NzcxNCwgNTc3MTksIDU3NzIyLCA1NzczMSwgNTc3NDAsIDU3NzQ5LCAwLCA1Nzc1OCwgCisgICAgNTc3NjQsIDU3NzcwLCA1Nzc3OCwgNTc3ODgsIDU3Nzk1LCA1NzgwNCwgNTc4MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3ODEyLCA1NzgyMSwgCisgICAgNTc4MzAsIDU3ODM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Nzg0OCwgCisgICAgNTc4NTMsIDU3ODU4LCA1Nzg2MywgNTc4NjgsIDU3ODczLCA1Nzg3OCwgNTc4ODMsIDU3ODg4LCA1Nzg5MywgNTc4OTgsIAorICAgIDU3OTA0LCA1NzkwOCwgNTc5MTMsIDU3OTE4LCA1NzkyMywgNTc5MjgsIDU3OTMzLCA1NzkzOCwgNTc5NDMsIDU3OTQ4LCAKKyAgICA1Nzk1MywgNTc5NTgsIDU3OTYzLCA1Nzk2OCwgNTc5NzMsIDU3OTc4LCA1Nzk4MywgNTc5ODgsIDU3OTkzLCA1Nzk5OCwgCisgICAgNTgwMDMsIDU4MDA4LCA1ODAxMywgNTgwMTgsIDU4MDI0LCA1ODAyOSwgNTgwMzUsIDU4MDQ0LCA1ODA0OSwgNTgwNTcsIAorICAgIDU4MDY0LCA1ODA3MywgNTgwNzgsIDU4MDgzLCA1ODA4OCwgNTgwOTQsIDAsIDU4MTAxLCA1ODEwNiwgNTgxMTEsIDU4MTE2LCAKKyAgICA1ODEyMSwgNTgxMjYsIDU4MTMxLCA1ODEzNiwgNTgxNDEsIDU4MTQ2LCA1ODE1MSwgNTgxNTcsIDU4MTYxLCA1ODE2NiwgCisgICAgNTgxNzEsIDU4MTc2LCA1ODE4MSwgNTgxODYsIDU4MTkxLCA1ODE5NiwgNTgyMDEsIDU4MjA2LCA1ODIxMSwgNTgyMTYsIAorICAgIDU4MjIxLCA1ODIyNiwgNTgyMzEsIDU4MjM2LCA1ODI0MSwgNTgyNDYsIDU4MjUxLCA1ODI1NiwgNTgyNjEsIDU4MjY2LCAKKyAgICA1ODI3MSwgNTgyNzcsIDU4MjgyLCA1ODI4OCwgNTgyOTcsIDU4MzAyLCA1ODMxMCwgNTgzMTcsIDU4MzI2LCA1ODMzMSwgCisgICAgNTgzMzYsIDU4MzQxLCA1ODM0NywgMCwgNTgzNTQsIDU4MzYyLCA1ODM3MCwgNTgzNzksIDU4Mzg2LCA1ODM5NCwgNTg0MDAsIAorICAgIDU4NDA5LCA1ODQxNywgNTg0MjUsIDU4NDMzLCA1ODQ0MSwgNTg0NDksIDU4NDU3LCA1ODQ2MiwgNTg0NjksIDU4NDc1LCAKKyAgICA1ODQ4MiwgNTg0OTAsIDU4NDk3LCA1ODUwNCwgNTg1MTIsIDU4NTE4LCA1ODUyNCwgNTg1MzEsIDU4NTM4LCA1ODU0OCwgCisgICAgNTg1NTgsIDU4NTY1LCA1ODU3MiwgNTg1NzcsIDU4NTg3LCA1ODU5NywgNTg2MDIsIDU4NjA3LCA1ODYxMiwgNTg2MTcsIAorICAgIDU4NjIyLCA1ODYyNywgNTg2MzIsIDU4NjM3LCA1ODY0MiwgNTg2NDcsIDU4NjUyLCA1ODY1NywgNTg2NjIsIDU4NjY3LCAKKyAgICA1ODY3MiwgNTg2NzcsIDU4NjgyLCA1ODY4NywgNTg2OTIsIDU4Njk3LCA1ODcwMiwgNTg3MDcsIDU4NzEyLCA1ODcxNywgCisgICAgNTg3MjIsIDU4NzI3LCA1ODczMiwgNTg3MzcsIDU4NzQyLCA1ODc0NywgNTg3NTEsIDU4NzU1LCA1ODc2MCwgNTg3NjUsIAorICAgIDU4NzcwLCA1ODc3NSwgNTg3ODAsIDU4Nzg1LCA1ODc5MCwgNTg3OTUsIDU4ODAwLCA1ODgwNSwgNTg4MTAsIDU4ODE1LCAKKyAgICA1ODgyMCwgNTg4MjUsIDU4ODMwLCA1ODgzNSwgNTg4NDAsIDU4ODQ1LCA1ODg1MiwgNTg4NTksIDU4ODY2LCA1ODg3MywgCisgICAgNTg4ODAsIDU4ODg3LCA1ODg5NCwgNTg5MDEsIDU4OTA4LCA1ODkxNSwgNTg5MjIsIDU4OTI5LCA1ODkzNiwgNTg5NDMsIAorICAgIDU4OTQ4LCA1ODk1MywgNTg5NjAsIDU4OTY3LCA1ODk3NCwgNTg5ODEsIDU4OTg4LCA1ODk5NSwgNTkwMDIsIDU5MDA5LCAKKyAgICA1OTAxNiwgNTkwMjMsIDU5MDMwLCA1OTAzNywgNTkwNDMsIDU5MDQ5LCA1OTA1NSwgNTkwNjEsIDU5MDY4LCA1OTA3NSwgCisgICAgNTkwODIsIDU5MDg5LCA1OTA5NiwgNTkxMDMsIDU5MTEwLCA1OTExNywgNTkxMjQsIDU5MTMxLCA1OTEzOSwgNTkxNDcsIAorICAgIDU5MTU1LCA1OTE2MywgNTkxNzEsIDU5MTc5LCA1OTE4NywgNTkxOTUsIDU5MTk5LCA1OTIwNSwgNTkyMTEsIDU5MjE1LCAKKyAgICA1OTIyMSwgNTkyMjcsIDU5MjMzLCA1OTI0MCwgNTkyNDcsIDU5MjU0LCA1OTI2MSwgNTkyNjYsIDU5MjcyLCA1OTI3OCwgCisgICAgNTkyODUsIDAsIDAsIDAsIDAsIDAsIDU5MjkyLCA1OTMwMCwgNTkzMDksIDU5MzE4LCA1OTMyNiwgNTkzMzIsIDU5MzM3LCAKKyAgICA1OTM0MiwgNTkzNDcsIDU5MzUyLCA1OTM1NywgNTkzNjIsIDU5MzY3LCA1OTM3MiwgNTkzNzcsIDU5MzgyLCA1OTM4NywgCisgICAgNTkzOTIsIDU5Mzk3LCA1OTQwMiwgNTk0MDcsIDU5NDEyLCA1OTQxNywgNTk0MjIsIDU5NDI3LCA1OTQzMiwgNTk0MzcsIAorICAgIDU5NDQyLCA1OTQ0NywgNTk0NTIsIDU5NDU3LCA1OTQ2MiwgNTk0NjcsIDU5NDcyLCA1OTQ3NywgNTk0ODIsIDU5NDg3LCAKKyAgICA1OTQ5MiwgNTk0OTcsIDU5NTAyLCA1OTUwNywgNTk1MTIsIDU5NTE3LCA1OTUyMiwgNTk1MjcsIDAsIDU5NTMyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1OTUzNywgMCwgMCwgNTk1NDIsIDU5NTQ2LCA1OTU1MSwgNTk1NTYsIDU5NTYxLCA1OTU2NiwgNTk1NzUsIAorICAgIDU5NTgwLCA1OTU4NSwgNTk1OTAsIDU5NTk1LCA1OTYwMCwgNTk2MDUsIDU5NjEwLCA1OTYxNSwgNTk2MjIsIDU5NjI3LCAKKyAgICA1OTYzMiwgNTk2NDEsIDU5NjQ4LCA1OTY1MywgNTk2NTgsIDU5NjYzLCA1OTY3MCwgNTk2NzUsIDU5NjgyLCA1OTY4NywgCisgICAgNTk2OTIsIDU5Njk5LCA1OTcwNiwgNTk3MTEsIDU5NzE2LCA1OTcyMSwgNTk3MjgsIDU5NzM1LCA1OTc0MCwgNTk3NDUsIAorICAgIDU5NzUwLCA1OTc1NSwgNTk3NjAsIDU5NzY3LCA1OTc3NCwgNTk3NzksIDU5Nzg0LCA1OTc4OSwgNTk3OTQsIDU5Nzk5LCAKKyAgICA1OTgwNCwgNTk4MDksIDU5ODE0LCA1OTgxOSwgNTk4MjQsIDU5ODI5LCA1OTgzNiwgNTk4NDEsIDU5ODQ2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1OTg1MSwgNTk4NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5ODYzLCA1OTg2OCwgNTk4NzIsIDU5ODc2LCA1OTg4MCwgNTk4ODQsIDU5ODg4LCA1OTg5MiwgNTk4OTYsIDU5OTAwLCAKKyAgICA1OTkwNCwgNTk5MDgsIDU5OTE0LCA1OTkxOCwgNTk5MjIsIDU5OTI2LCA1OTkzMCwgNTk5MzQsIDU5OTM4LCA1OTk0MiwgCisgICAgNTk5NDYsIDU5OTUwLCA1OTk1NCwgNTk5NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OTYyLCA1OTk2NiwgCisgICAgNTk5NzAsIDU5OTc0LCA1OTk3OCwgNTk5ODIsIDU5OTg2LCAwLCA1OTk5MCwgNTk5OTQsIDU5OTk4LCA2MDAwMiwgNjAwMDYsIAorICAgIDYwMDEwLCA2MDAxNCwgMCwgNjAwMTgsIDYwMDIyLCA2MDAyNiwgNjAwMzAsIDYwMDM0LCA2MDAzOCwgNjAwNDIsIDAsIAorICAgIDYwMDQ2LCA2MDA1MCwgNjAwNTQsIDYwMDU4LCA2MDA2MiwgNjAwNjYsIDYwMDcwLCAwLCA2MDA3NCwgNjAwNzgsIDYwMDgyLCAKKyAgICA2MDA4NiwgNjAwOTAsIDYwMDk0LCA2MDA5OCwgMCwgNjAxMDIsIDYwMTA2LCA2MDExMCwgNjAxMTQsIDYwMTE4LCA2MDEyMiwgCisgICAgNjAxMjYsIDAsIDYwMTMwLCA2MDEzNCwgNjAxMzgsIDYwMTQyLCA2MDE0NiwgNjAxNTAsIDYwMTU0LCAwLCA2MDE1OCwgCisgICAgNjAxNjIsIDYwMTY2LCA2MDE3MCwgNjAxNzQsIDYwMTc4LCA2MDE4MiwgMCwgNjAxODYsIDYwMTkxLCA2MDE5NiwgNjAyMDEsIAorICAgIDYwMjA2LCA2MDIxMSwgNjAyMTYsIDYwMjIwLCA2MDIyNSwgNjAyMzAsIDYwMjM1LCA2MDIzOSwgNjAyNDQsIDYwMjQ5LCAKKyAgICA2MDI1NCwgNjAyNTksIDYwMjYzLCA2MDI2OCwgNjAyNzMsIDYwMjc4LCA2MDI4MywgNjAyODgsIDYwMjkzLCA2MDI5NywgCisgICAgNjAzMDIsIDYwMzA3LCA2MDMxNCwgNjAzMTksIDYwMzI0LCA2MDMzMCwgNjAzMzcsIDYwMzQ0LCA2MDM1MywgNjAzNjAsIAorICAgIDYwMzY5LCA2MDM3MywgNjAzNzcsIDYwMzgzLCA2MDM4OSwgNjAzOTUsIDYwNDAzLCA2MDQwOSwgNjA0MTMsIDYwNDE3LCAKKyAgICA2MDQyMSwgNjA0MjcsIDYwNDMzLCA2MDQzNywgNjA0MzksIDYwNDQzLCA2MDQ0OSwgNjA0NTEsIDYwNDU1LCA2MDQ1OCwgCisgICAgNjA0NjEsIDYwNDY3LCA2MDQ3MiwgNjA0NzYsIDYwNDgwLCA2MDQ4NSwgNjA0OTEsIDYwNDk2LCA2MDUwMSwgNjA1MDYsIAorICAgIDYwNTExLCA2MDUxOCwgNjA1MjUsIDYwNTMwLCA2MDUzNSwgNjA1NDAsIDYwNTQ1LCA2MDU1MCwgNjA1NTUsIDYwNTU5LCAKKyAgICA2MDU2MywgNjA1NzAsIDYwNTc3LCA2MDU4MywgNjA1ODcsIDYwNTkyLCA2MDU5NSwgNjA1OTksIDYwNjA2LCA2MDYxMCwgCisgICAgNjA2MTQsIDYwNjE4LCA2MDYyMiwgNjA2MjgsIDYwNjM0LCA2MDYzOCwgNjA2NDQsIDYwNjQ4LCA2MDY1MiwgNjA2NTgsIAorICAgIDYwNjYzLCA2MDY2OCwgNjA2NzAsIDYwNjczLCA2MDY3NywgNjA2ODMsIDYwNjg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTQ1MCwgMzE0NTYsIDMxNDYyLCAzMTQ2NiwgMzE0NzAsIDMxNDc0LCAKLSAgICAzMTQ3OCwgMzE0ODQsIDMxNDg4LCAzMTQ5NCwgMzE0OTgsIDMxNTA0LCAzMTUxMCwgMzE1MTgsIDMxNTI0LCAzMTUzMiwgCi0gICAgMzE1MzYsIDMxNTQwLCAzMTU0NCwgMzE1NTAsIDMxNTUzLCAzMTU1OSwgMzE1NjMsIDMxNTY5LCAzMTU3MywgMzE1NzcsIAotICAgIDMxNTgzLCAzMTU4NywgMzE1OTMsIDMxNTk3LCAzMTYwMywgMzE2MTEsIDMxNjE5LCAzMTYyNywgMzE2MzMsIDMxNjM3LCAKLSAgICAzMTY0MywgMzE2NDcsIDMxNjUzLCAzMTY1NywgMzE2NjAsIDMxNjY2LCAzMTY3MCwgMzE2NzYsIDMxNjc5LCAzMTY4MiwgCi0gICAgMzE2ODYsIDMxNjkwLCAzMTY5NCwgMzE3MDAsIDMxNzA2LCAzMTcxMCwgMzE3MTMsIDMxNzE3LCAzMTcyMiwgMzE3MjcsIAotICAgIDMxNzM0LCAzMTczOSwgMzE3NDYsIDMxNzUzLCAzMTc2MiwgMzE3NjksIDMxNzc4LCAzMTc4MywgMzE3OTAsIDMxNzk3LCAKLSAgICAzMTgwNiwgMzE4MTEsIDMxODE4LCAzMTgyMywgMzE4MjksIDMxODM1LCAzMTg0MSwgMzE4NDcsIDMxODUzLCAzMTg1OSwgMCwgCi0gICAgMCwgMCwgMCwgMzE4NjUsIDMxODY5LCAzMTg3MiwgMzE4NzUsIDMxODc4LCAzMTg4MSwgMzE4ODQsIDMxODg3LCAzMTg5MSwgCi0gICAgMzE4OTQsIDMxODk4LCAzMTkwMSwgMzE5MDQsIDMxOTA3LCAzMTkxMiwgMzE5MTcsIDMxOTIyLCAzMTkyNSwgMzE5MzAsIAotICAgIDMxOTM1LCAzMTk0MCwgMzE5NDUsIDMxOTUyLCAzMTk1NywgMzE5NjIsIDMxOTY3LCAzMTk3MiwgMzE5NzksIDMxOTg1LCAKLSAgICAzMTk5MSwgMzE5OTcsIDMyMDAzLCAzMjAwOSwgMzIwMTgsIDMyMDI3LCAzMjAzMywgMzIwMzksIDMyMDQ3LCAzMjA1NSwgCi0gICAgMzIwNjQsIDMyMDczLCAzMjA4MSwgMzIwODksIDMyMDk4LCAzMjEwNywgMCwgMCwgMCwgMzIxMTUsIDMyMTIwLCAzMjEyNSwgCi0gICAgMzIxMzAsIDMyMTM0LCAzMjEzOCwgMzIxNDIsIDMyMTQ3LCAzMjE1MSwgMzIxNTUsIDMyMTYwLCAzMjE2NCwgMzIxNjksIAotICAgIDMyMTc0LCAzMjE3OSwgMzIxODQsIDMyMTg5LCAzMjE5NCwgMzIxOTksIDMyMjA0LCAzMjIwOSwgMzIyMTQsIDMyMjE4LCAKLSAgICAzMjIyMywgMzIyMjgsIDMyMjMzLCAzMjIzNywgMzIyNDEsIDMyMjQ2LCAzMjI1MSwgMzIyNTYsIDMyMjYxLCAzMjI2NiwgCi0gICAgMzIyNzAsIDMyMjc2LCAzMjI4MiwgMzIyODgsIDMyMjk0LCAzMjMwMCwgMzIzMDYsIDMyMzEyLCAzMjMxOCwgMzIzMjQsIAotICAgIDMyMzI5LCAzMjMzNCwgMzIzNDEsIDMyMzQ5LCAzMjM1NCwgMzIzNTksIDMyMzY0LCAzMjM2OCwgMzIzNzIsIDMyMzc2LCAKLSAgICAzMjM4MCwgMzIzODQsIDMyMzg4LCAzMjM5MywgMzIzOTcsIDMyNDAyLCAzMjQwNiwgMzI0MTEsIDMyNDE2LCAzMjQyMSwgCi0gICAgMzI0MjcsIDMyNDMzLCAzMjQzNywgMzI0NDMsIDMyNDQ3LCAzMjQ1MywgMzI0NTksIDMyNDY0LCAzMjQ3MSwgMzI0NzUsIAotICAgIDMyNDgxLCAzMjQ4NiwgMzI0OTMsIDMyNDk4LCAzMjUwNSwgMzI1MTIsIDMyNTE3LCAzMjUyNCwgMzI1MjksIDMyNTM0LCAKLSAgICAzMjUzOSwgMzI1NDYsIDMyNTUwLCAzMjU1NiwgMzI1NjMsIDMyNTcwLCAzMjU3NSwgMzI1ODIsIDMyNTg5LCAzMjU5MywgCi0gICAgMzI1OTksIDMyNjA0LCAzMjYwOSwgMzI2MTYsIDMyNjIxLCAzMjYyNiwgMzI2MzEsIDMyNjM2LCAzMjY0MCwgMzI2NDQsIAotICAgIDMyNjQ5LCAzMjY1NCwgMzI2NjEsIDMyNjY3LCAzMjY3MiwgMzI2NzksIDMyNjg0LCAzMjY5MSwgMzI2OTYsIDMyNzA2LCAKLSAgICAzMjcxMiwgMzI3MTgsIDMyNzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjcyNiwgMzI3MzUsIDMyNzQyLCAzMjc0OSwgCi0gICAgMzI3NTYsIDMyNzYwLCAzMjc2NSwgMzI3NzAsIDMyNzc1LCAzMjc4MCwgMzI3ODUsIDMyNzkwLCAzMjc5NSwgMzI4MDAsIAotICAgIDMyODA1LCAzMjgxMCwgMzI4MTUsIDMyODIwLCAzMjgyNSwgMzI4MjksIDMyODM0LCAzMjgzOSwgMzI4NDQsIDMyODQ5LCAKLSAgICAzMjg1NCwgMzI4NTksIDMyODYzLCAzMjg2OCwgMzI4NzMsIDMyODc4LCAzMjg4MywgMzI4ODcsIDMyODkyLCAzMjg5NywgCi0gICAgMzI5MDEsIDMyOTA2LCAzMjkxMSwgMzI5MTYsIDMyOTIxLCAzMjkyNiwgMzI5MzAsIDMyOTM2LCAzMjk0MywgMzI5NDksIAotICAgIDMyOTU0LCAzMjk1OSwgMzI5NjUsIDMyOTcwLCAzMjk3NiwgMzI5ODEsIDMyOTg3LCAzMjk5MywgMzI5OTgsIDMzMDA0LCAKLSAgICAzMzAxMCwgMzMwMTUsIDMzMDIxLCAzMzAyNywgMzMwMzMsIDMzMDM4LCAwLCAwLCAwLCAzMzA0MywgMzMwNDksIDMzMDU5LCAKLSAgICAzMzA2NSwgMzMwNzMsIDMzMDc5LCAzMzA4NCwgMzMwODgsIDMzMDkyLCAzMzA5NiwgMzMxMDAsIDMzMTA0LCAzMzEwOCwgCi0gICAgMzMxMTMsIDMzMTE3LCAwLCAwLCAwLCAzMzEyMiwgMzMxMjcsIDMzMTMyLCAzMzEzNywgMzMxNDQsIDMzMTUwLCAzMzE1NiwgCi0gICAgMzMxNjIsIDMzMTY4LCAzMzE3NCwgMzMxODAsIDMzMTg3LCAzMzE5MywgMzMyMDAsIDMzMjA3LCAzMzIxNCwgMzMyMjEsIAotICAgIDMzMjI4LCAzMzIzNSwgMzMyNDIsIDMzMjQ5LCAzMzI1NiwgMzMyNjMsIDMzMjcwLCAzMzI3NywgMzMyODQsIDMzMjkxLCAKLSAgICAzMzI5OCwgMzMzMDUsIDMzMzEyLCAzMzMxOSwgMzMzMjYsIDMzMzMzLCAzMzM0MCwgMzMzNDcsIDMzMzU0LCAzMzM2MSwgCi0gICAgMzMzNjgsIDMzMzc1LCAzMzM4MiwgMzMzODksIDMzMzk2LCAzMzQwMywgMzM0MTAsIDMzNDE4LCAzMzQyNiwgMzM0MzQsIAotICAgIDMzNDQwLCAzMzQ0NiwgMzM0NTIsIDMzNDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzMzQ2OSwgMzM0NzcsIDMzNDg1LCAzMzQ5MywgMzM1MDEsIDMzNTExLCAzMzUyMSwgMzM1MzEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDMzNTQxLCAzMzU0NiwgMzM1NTEsIDMzNTU2LCAzMzU2MSwgMzM1NzAsIDMzNTgxLCAzMzU5MCwgMzM2MDEsIAotICAgIDMzNjA3LCAzMzYyMCwgMzM2MjYsIDMzNjMzLCAzMzY0MCwgMzM2NDUsIDMzNjUxLCAzMzY1NywgMzM2NjgsIDMzNjc3LCAKLSAgICAzMzY4NCwgMzM2OTEsIDMzNzAwLCAzMzcwNywgMzM3MTYsIDMzNzI2LCAzMzczNiwgMzM3NDMsIDMzNzUwLCAzMzc1NywgCi0gICAgMzM3NjcsIDMzNzcyLCAzMzc4MCwgMzM3ODYsIDMzNzk0LCAzMzgwMywgMzM4MDgsIDMzODE1LCAzMzgyMSwgMzM4MjYsIDAsIAotICAgIDMzODMxLCAzMzgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMzM4NDQsIDMzODQ5LCAzMzg1NSwgMzM4NjIsIDMzODcwLCAzMzg3NiwgCi0gICAgMzM4ODIsIDMzODg4LCAzMzg5MywgMzM5MDAsIDMzOTA2LCAzMzkxMiwgMzM5MTgsIDMzOTI2LCAzMzkzMiwgMzM5NDAsIAotICAgIDMzOTQ1LCAzMzk1MSwgMzM5NTcsIDMzOTY0LCAzMzk3MiwgMzM5NzksIDMzOTg1LCAzMzk5MiwgMzM5OTksIDM0MDA1LCAKLSAgICAzNDAxMiwgMzQwMTksIDM0MDI1LCAzNDAzMCwgMzQwMzYsIDM0MDQ0LCAzNDA1MywgMzQwNTksIDM0MDY1LCAzNDA3MSwgCi0gICAgMzQwNzcsIDM0MDg1LCAzNDA4OSwgMzQwOTUsIDM0MTAxLCAzNDEwNywgMzQxMTMsIDM0MTE5LCAzNDEyNSwgMzQxMjksIAotICAgIDM0MTM0LCAzNDEzOSwgMzQxNDYsIDM0MTUxLCAzNDE1NSwgMzQxNjEsIDM0MTY2LCAzNDE3MSwgMzQxNzUsIDM0MTgwLCAKLSAgICAzNDE4NSwgMzQxODksIDM0MTk0LCAzNDE5OSwgMzQyMDYsIDM0MjEwLCAzNDIxNSwgMzQyMjAsIDM0MjI0LCAzNDIyOSwgCi0gICAgMzQyMzMsIDM0MjM4LCAzNDI0MiwgMzQyNDgsIDM0MjUzLCAzNDI2MCwgMzQyNjUsIDM0MjcwLCAzNDI3NCwgMzQyNzksIAotICAgIDM0Mjg0LCAzNDI5MSwgMzQyOTYsIDM0MzAyLCAzNDMwNywgMzQzMTIsIDM0MzE3LCAzNDMyMSwgMzQzMjYsIDM0MzMzLCAKLSAgICAzNDM0MCwgMzQzNDUsIDM0MzUwLCAzNDM1NCwgMzQzNjAsIDM0MzY3LCAzNDM3MiwgMzQzNzcsIDM0MzgyLCAzNDM4OCwgCi0gICAgMzQzOTMsIDM0Mzk5LCAzNDQwNCwgMzQ0MTAsIDM0NDE2LCAzNDQyMiwgMzQ0MjksIDM0NDM2LCAzNDQ0MywgMzQ0NTAsIAotICAgIDM0NDU3LCAzNDQ2NCwgMzQ0NjksIDM0NDc3LCAzNDQ4NiwgMzQ0OTUsIDM0NTA0LCAzNDUxMywgMzQ1MjIsIDM0NTMxLCAKLSAgICAzNDU0MywgMzQ1NTIsIDM0NTYxLCAzNDU3MCwgMzQ1NzcsIDM0NTgyLCAzNDU4OSwgMzQ1OTcsIDM0NjA1LCAzNDYxMiwgCi0gICAgMzQ2MTksIDM0NjI2LCAzNDYzMywgMzQ2NDEsIDM0NjUwLCAzNDY1OSwgMzQ2NjgsIDM0Njc3LCAzNDY4NiwgMzQ2OTUsIAotICAgIDM0NzA0LCAzNDcxMywgMzQ3MjIsIDM0NzMxLCAzNDc0MCwgMzQ3NDksIDM0NzU4LCAzNDc2NywgMzQ3NzUsIDM0Nzg0LCAKLSAgICAzNDc5NSwgMzQ4MDMsIDM0ODEyLCAzNDgyMywgMzQ4MzIsIDM0ODQxLCAzNDg1MCwgMzQ4NTksIDM0ODY3LCAzNDg3NiwgCi0gICAgMzQ4ODMsIDM0ODg4LCAzNDg5NiwgMzQ5MDEsIDM0OTA4LCAzNDkxMywgMzQ5MjIsIDM0OTI4LCAzNDkzNSwgMzQ5NDIsIAotICAgIDM0OTQ3LCAzNDk1MiwgMzQ5NjAsIDM0OTY4LCAzNDk3NywgMzQ5ODYsIDM0OTkxLCAzNDk5OCwgMzUwMDksIDM1MDE3LCAKLSAgICAzNTAyNiwgMzUwMzIsIDM1MDM4LCAzNTA0MywgMzUwNTAsIDM1MDU1LCAzNTA2NCwgMzUwNjksIDM1MDc0LCAzNTA3OSwgCi0gICAgMzUwODYsIDM1MDkzLCAzNTA5OCwgMzUxMDcsIDM1MTE1LCAzNTEyMCwgMzUxMjUsIDM1MTMyLCAzNTEzOSwgMzUxNDMsIAotICAgIDM1MTQ3LCAzNTE1MCwgMzUxNTMsIDM1MTU2LCAzNTE1OSwgMzUxNjIsIDM1MTY1LCAzNTE3MiwgMzUxNzUsIDM1MTc4LCAKLSAgICAzNTE4MywgMzUxODcsIDM1MTkxLCAzNTE5NSwgMzUxOTksIDM1MjAzLCAzNTIxMiwgMzUyMTgsIDM1MjI0LCAzNTIzMCwgCi0gICAgMzUyMzgsIDM1MjQ2LCAzNTI1MiwgMzUyNTgsIDM1MjY1LCAzNTI3MSwgMzUyNzYsIDM1MjgyLCAzNTI4OSwgMzUyOTUsIAotICAgIDM1MzAyLCAzNTMwOCwgMzUzMTYsIDM1MzIxLCAzNTMyNywgMzUzMzMsIDM1MzM5LCAzNTM0NSwgMzUzNTEsIDM1MzU3LCAKLSAgICAzNTM2MywgMzUzNzQsIDM1Mzg0LCAzNTM5MCwgMzUzOTYsIDM1NDA2LCAzNTQxMiwgMzU0MjAsIDM1NDI4LCAzNTQzNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzU0NDEsIDM1NDQ4LCAzNTQ1NSwgMzU0NjAsIDM1NDY5LCAzNTQ3NywgMzU0ODUsIDM1NDkyLCAKLSAgICAzNTQ5OSwgMzU1MDYsIDM1NTEzLCAzNTUyMSwgMzU1MjksIDM1NTM5LCAzNTU0OSwgMzU1NTcsIDM1NTY1LCAzNTU3MywgCi0gICAgMzU1ODEsIDM1NTkwLCAzNTU5OSwgMzU2MDcsIDM1NjE1LCAzNTYyNCwgMzU2MzMsIDM1NjQzLCAzNTY1MywgMzU2NjIsIAotICAgIDM1NjcxLCAzNTY3OSwgMzU2ODcsIDM1Njk1LCAzNTcwMywgMzU3MTMsIDM1NzIzLCAzNTczMSwgMzU3MzksIDM1NzQ3LCAKLSAgICAzNTc1NSwgMzU3NjMsIDM1NzcxLCAzNTc3OSwgMzU3ODcsIDM1Nzk1LCAzNTgwMywgMzU4MTEsIDM1ODE5LCAzNTgyOCwgCi0gICAgMzU4MzcsIDM1ODQ2LCAzNTg1NSwgMzU4NjUsIDM1ODc1LCAzNTg4MiwgMzU4ODksIDM1ODk3LCAzNTkwNSwgMzU5MTQsIAotICAgIDM1OTIzLCAzNTkzMSwgMzU5MzksIDM1OTUxLCAzNTk2MywgMzU5NzIsIDM1OTgxLCAzNTk5MCwgMzU5OTksIDM2MDA2LCAKLSAgICAzNjAxMywgMzYwMjEsIDM2MDI5LCAzNjAzNywgMzYwNDUsIDM2MDUzLCAzNjA2MSwgMzYwNjksIDM2MDc3LCAzNjA4NiwgCi0gICAgMzYwOTUsIDM2MTA0LCAzNjExMywgMzYxMjIsIDM2MTMxLCAzNjE0MSwgMzYxNTEsIDM2MTYxLCAzNjE3MSwgMzYxODAsIAotICAgIDM2MTg5LCAzNjE5NiwgMzYyMDMsIDM2MjExLCAzNjIxOSwgMzYyMjcsIDM2MjM1LCAzNjI0MywgMzYyNTEsIDM2MjYzLCAKLSAgICAzNjI3NSwgMzYyODQsIDM2MjkzLCAzNjMwMSwgMzYzMDksIDM2MzE3LCAzNjMyNSwgMzYzMzYsIDM2MzQ3LCAzNjM1OCwgCi0gICAgMzYzNjksIDM2MzgxLCAzNjM5MywgMzY0MDEsIDM2NDA5LCAzNjQxNywgMzY0MjUsIDM2NDM0LCAzNjQ0MywgMzY0NTIsIAotICAgIDM2NDYxLCAzNjQ2OSwgMzY0NzcsIDM2NDg1LCAzNjQ5MywgMzY1MDEsIDM2NTA5LCAzNjUxOCwgMzY1MjcsIDM2NTM3LCAKLSAgICAzNjU0NywgMzY1NTUsIDM2NTYzLCAzNjU3MSwgMzY1NzksIDM2NTg3LCAzNjU5NSwgMzY2MDIsIDM2NjA5LCAzNjYxNywgCi0gICAgMzY2MjUsIDM2NjMzLCAzNjY0MSwgMzY2NDksIDM2NjU3LCAzNjY2NSwgMzY2NzMsIDM2NjgxLCAzNjY4OSwgMzY2OTcsIAotICAgIDM2NzA1LCAzNjcxMywgMzY3MjEsIDM2NzI5LCAzNjczNywgMzY3NDYsIDM2NzU1LCAzNjc2NCwgMzY3NzIsIDM2NzgxLCAKLSAgICAzNjc5MCwgMzY3OTksIDM2ODA4LCAzNjgxOCwgMzY4MjcsIDM2ODMzLCAzNjgzOCwgMzY4NDUsIDM2ODUyLCAzNjg2MCwgCi0gICAgMzY4NjgsIDM2ODc3LCAzNjg4NiwgMzY4OTYsIDM2OTA2LCAzNjkxNywgMzY5MjgsIDM2OTM4LCAzNjk0OCwgMzY5NTgsIAotICAgIDM2OTY4LCAzNjk3NywgMzY5ODYsIDM2OTk2LCAzNzAwNiwgMzcwMTcsIDM3MDI4LCAzNzAzOCwgMzcwNDgsIDM3MDU4LCAKLSAgICAzNzA2OCwgMzcwNzUsIDM3MDgyLCAzNzA5MCwgMzcwOTgsIDM3MTA1LCAzNzExMiwgMzcxMjEsIDM3MTMwLCAzNzE0MCwgCi0gICAgMzcxNTAsIDM3MTYxLCAzNzE3MiwgMzcxODIsIDM3MTkyLCAzNzIwMiwgMzcyMTIsIDM3MjIxLCAzNzIzMCwgMzcyMzgsIAotICAgIDM3MjQ2LCAzNzI1MywgMzcyNjAsIDM3MjY4LCAzNzI3NiwgMzcyODUsIDM3Mjk0LCAzNzMwNCwgMzczMTQsIDM3MzI1LCAKLSAgICAzNzMzNiwgMzczNDYsIDM3MzU2LCAzNzM2NiwgMzczNzYsIDM3Mzg1LCAzNzM5NCwgMzc0MDQsIDM3NDE0LCAzNzQyNSwgCi0gICAgMzc0MzYsIDM3NDQ2LCAzNzQ1NiwgMzc0NjYsIDM3NDc2LCAzNzQ4MywgMzc0OTAsIDM3NDk4LCAzNzUwNiwgMzc1MTUsIAotICAgIDM3NTI0LCAzNzUzNCwgMzc1NDQsIDM3NTU1LCAzNzU2NiwgMzc1NzYsIDM3NTg2LCAzNzU5NiwgMzc2MDYsIDM3NjE0LCAKLSAgICAzNzYyMiwgMzc2MzAsIDM3NjM4LCAzNzY0NywgMzc2NTYsIDM3NjY0LCAzNzY3MiwgMzc2NzksIDM3Njg2LCAzNzY5MywgCi0gICAgMzc3MDAsIDM3NzA4LCAzNzcxNiwgMzc3MjQsIDM3NzMyLCAzNzc0MywgMzc3NTQsIDM3NzY1LCAzNzc3NiwgMzc3ODcsIAotICAgIDM3Nzk4LCAzNzgwNiwgMzc4MTQsIDM3ODI1LCAzNzgzNiwgMzc4NDcsIDM3ODU4LCAzNzg2OSwgMzc4ODAsIDM3ODg4LCAKLSAgICAzNzg5NiwgMzc5MDcsIDM3OTE4LCAzNzkyOSwgMCwgMCwgMzc5NDAsIDM3OTQ4LCAzNzk1NiwgMzc5NjcsIDM3OTc4LCAKLSAgICAzNzk4OSwgMCwgMCwgMzgwMDAsIDM4MDA4LCAzODAxNiwgMzgwMjcsIDM4MDM4LCAzODA0OSwgMzgwNjAsIDM4MDcxLCAKLSAgICAzODA4MiwgMzgwOTAsIDM4MDk4LCAzODEwOSwgMzgxMjAsIDM4MTMxLCAzODE0MiwgMzgxNTMsIDM4MTY0LCAzODE3MiwgCi0gICAgMzgxODAsIDM4MTkxLCAzODIwMiwgMzgyMTMsIDM4MjI0LCAzODIzNSwgMzgyNDYsIDM4MjU0LCAzODI2MiwgMzgyNzMsIAotICAgIDM4Mjg0LCAzODI5NSwgMzgzMDYsIDM4MzE3LCAzODMyOCwgMzgzMzYsIDM4MzQ0LCAzODM1NSwgMzgzNjYsIDM4Mzc3LCAwLCAKLSAgICAwLCAzODM4OCwgMzgzOTYsIDM4NDA0LCAzODQxNSwgMzg0MjYsIDM4NDM3LCAwLCAwLCAzODQ0OCwgMzg0NTYsIDM4NDY0LCAKLSAgICAzODQ3NSwgMzg0ODYsIDM4NDk3LCAzODUwOCwgMzg1MTksIDAsIDM4NTMwLCAwLCAzODUzOCwgMCwgMzg1NDksIDAsIAotICAgIDM4NTYwLCAzODU3MSwgMzg1NzksIDM4NTg3LCAzODU5OCwgMzg2MDksIDM4NjIwLCAzODYzMSwgMzg2NDIsIDM4NjUzLCAKLSAgICAzODY2MSwgMzg2NjksIDM4NjgwLCAzODY5MSwgMzg3MDIsIDM4NzEzLCAzODcyNCwgMzg3MzUsIDM4NzQzLCAzODc1MSwgCi0gICAgMzg3NTksIDM4NzY3LCAzODc3NSwgMzg3ODMsIDM4NzkxLCAzODc5OSwgMzg4MDcsIDM4ODE1LCAzODgyMywgMzg4MzEsIAotICAgIDM4ODM5LCAwLCAwLCAzODg0NywgMzg4NTgsIDM4ODY5LCAzODg4MywgMzg4OTcsIDM4OTExLCAzODkyNSwgMzg5MzksIAotICAgIDM4OTUzLCAzODk2NCwgMzg5NzUsIDM4OTg5LCAzOTAwMywgMzkwMTcsIDM5MDMxLCAzOTA0NSwgMzkwNTksIDM5MDcwLCAKLSAgICAzOTA4MSwgMzkwOTUsIDM5MTA5LCAzOTEyMywgMzkxMzcsIDM5MTUxLCAzOTE2NSwgMzkxNzYsIDM5MTg3LCAzOTIwMSwgCi0gICAgMzkyMTUsIDM5MjI5LCAzOTI0MywgMzkyNTcsIDM5MjcxLCAzOTI4MiwgMzkyOTMsIDM5MzA3LCAzOTMyMSwgMzkzMzUsIAotICAgIDM5MzQ5LCAzOTM2MywgMzkzNzcsIDM5Mzg4LCAzOTM5OSwgMzk0MTMsIDM5NDI3LCAzOTQ0MSwgMzk0NTUsIDM5NDY5LCAKLSAgICAzOTQ4MywgMzk0OTEsIDM5NDk5LCAzOTUxMCwgMzk1MTgsIDAsIDM5NTI5LCAzOTUzNywgMzk1NDgsIDM5NTU2LCAzOTU2NCwgCi0gICAgMzk1NzIsIDM5NTgwLCAzOTU4OCwgMzk1OTEsIDM5NTk0LCAzOTU5NywgMzk2MDAsIDM5NjA2LCAzOTYxNywgMzk2MjUsIDAsIAotICAgIDM5NjM2LCAzOTY0NCwgMzk2NTUsIDM5NjYzLCAzOTY3MSwgMzk2NzksIDM5Njg3LCAzOTY5NSwgMzk3MDEsIDM5NzA3LCAKLSAgICAzOTcxMywgMzk3MjEsIDM5NzI5LCAzOTc0MCwgMCwgMCwgMzk3NTEsIDM5NzU5LCAzOTc3MCwgMzk3NzgsIDM5Nzg2LCAKLSAgICAzOTc5NCwgMCwgMzk4MDIsIDM5ODA4LCAzOTgxNCwgMzk4MjAsIDM5ODI4LCAzOTgzNiwgMzk4NDcsIDM5ODU4LCAzOTg2NiwgCi0gICAgMzk4NzQsIDM5ODgyLCAzOTg5MywgMzk5MDEsIDM5OTA5LCAzOTkxNywgMzk5MjUsIDM5OTMzLCAzOTkzOSwgMzk5NDUsIDAsIAotICAgIDAsIDM5OTQ4LCAzOTk1OSwgMzk5NjcsIDAsIDM5OTc4LCAzOTk4NiwgMzk5OTcsIDQwMDA1LCA0MDAxMywgNDAwMjEsIAotICAgIDQwMDI5LCA0MDAzNywgNDAwNDAsIDAsIDQwMDQzLCA0MDA0NywgNDAwNTEsIDQwMDU1LCA0MDA1OSwgNDAwNjMsIDQwMDY3LCAKLSAgICA0MDA3MSwgNDAwNzUsIDQwMDc5LCA0MDA4MywgNDAwODcsIDQwMDkzLCA0MDA5OSwgNDAxMDUsIDQwMTA4LCA0MDExMSwgCi0gICAgNDAxMTMsIDQwMTE3LCA0MDEyMSwgNDAxMjUsIDQwMTI5LCA0MDEzMiwgNDAxMzYsIDQwMTQwLCA0MDE0NiwgNDAxNTIsIAotICAgIDQwMTU5LCA0MDE2NiwgNDAxNzEsIDQwMTc2LCA0MDE4MiwgNDAxODgsIDQwMTkwLCA0MDE5MywgNDAxOTUsIDQwMTk5LCAKLSAgICA0MDIwMywgNDAyMDcsIDQwMjExLCA0MDIxNSwgNDAyMTksIDQwMjIzLCA0MDIyNywgNDAyMzEsIDQwMjM3LCA0MDI0MSwgCi0gICAgNDAyNDUsIDQwMjUxLCA0MDI1NiwgNDAyNjMsIDQwMjY1LCA0MDI2OCwgNDAyNzIsIDQwMjc2LCA0MDI4MSwgNDAyODcsIAotICAgIDQwMjg5LCA0MDI5OCwgNDAzMDcsIDQwMzEwLCA0MDMxNCwgNDAzMTYsIDQwMzE4LCA0MDMyMCwgNDAzMjMsIDQwMzI5LCAKLSAgICA0MDMzMSwgNDAzMzUsIDQwMzM5LCA0MDM0NiwgNDAzNTMsIDQwMzU3LCA0MDM2MiwgNDAzNjcsIDQwMzcyLCA0MDM3NywgCi0gICAgNDAzODEsIDQwMzg1LCA0MDM4OCwgNDAzOTIsIDQwMzk2LCA0MDQwMywgNDA0MDgsIDQwNDEyLCA0MDQxNiwgNDA0MjEsIAotICAgIDQwNDI1LCA0MDQyOSwgNDA0MzQsIDQwNDM5LCA0MDQ0MywgNDA0NDcsIDQwNDUxLCA0MDQ1MywgNDA0NTgsIDQwNDYzLCAKLSAgICA0MDQ2NywgNDA0NzEsIDQwNDc1LCA0MDQ3OSwgMCwgNDA0ODMsIDQwNDg3LCA0MDQ5MSwgNDA0OTcsIDQwNTAzLCA0MDUwOSwgCi0gICAgNDA1MTUsIDQwNTIyLCA0MDUyOSwgNDA1MzQsIDQwNTM5LCA0MDU0MywgMCwgMCwgNDA1NDksIDQwNTUyLCA0MDU1NSwgCi0gICAgNDA1NTgsIDQwNTYyLCA0MDU2NSwgNDA1NjksIDQwNTczLCA0MDU3NywgNDA1ODIsIDQwNTg3LCA0MDU5MiwgNDA1OTksIAotICAgIDQwNjAzLCA0MDYwNiwgNDA2MDksIDQwNjEyLCA0MDYxNSwgNDA2MTgsIDQwNjIxLCA0MDYyNSwgNDA2MjgsIDQwNjMyLCAKLSAgICA0MDYzNiwgNDA2NDAsIDQwNjQ1LCA0MDY1MCwgMCwgNDA2NTUsIDQwNjYxLCA0MDY2NywgNDA2NzMsIDQwNjgwLCA0MDY4NywgCi0gICAgNDA2OTQsIDQwNzAxLCA0MDcwNywgNDA3MTQsIDQwNzIxLCA0MDcyOCwgNDA3MzQsIDAsIDAsIDAsIDQwNzQxLCA0MDc0NCwgCi0gICAgNDA3NDcsIDQwNzUwLCA0MDc1NSwgNDA3NTgsIDQwNzYxLCA0MDc2NCwgNDA3NjcsIDQwNzcwLCA0MDc3MywgNDA3NzgsIAotICAgIDQwNzgxLCA0MDc4NCwgNDA3ODcsIDQwNzkwLCA0MDc5MywgNDA3OTgsIDQwODAxLCA0MDgwNCwgNDA4MDcsIDQwODEwLCAKLSAgICA0MDgxMywgNDA4MTgsIDQwODIxLCA0MDgyNCwgNDA4MjksIDQwODM0LCA0MDgzOCwgNDA4NDEsIDQwODQ0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDg0NywgNDA4NTIsIDQwODU3LCA0MDg2NCwgCi0gICAgNDA4NzIsIDQwODc3LCA0MDg4MiwgNDA4ODYsIDQwODkwLCA0MDg5NSwgNDA5MDIsIDQwOTA5LCA0MDkxMywgNDA5MTgsIAotICAgIDQwOTIzLCA0MDkyOCwgNDA5MzMsIDQwOTQwLCA0MDk0NSwgNDA5NTAsIDQwOTU1LCA0MDk2NCwgNDA5NzEsIDQwOTc4LCAKLSAgICA0MDk4MiwgNDA5ODcsIDQwOTkzLCA0MDk5OCwgNDEwMDUsIDQxMDEzLCA0MTAyMSwgNDEwMjUsIDQxMDI5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTAzMywgNDEwMzcsIDQxMDQ1LCA0MTA0OSwgNDEwNTMsIAotICAgIDQxMDU4LCA0MTA2MiwgNDEwNjYsIDQxMDcwLCA0MTA3MiwgNDEwNzYsIDQxMDgwLCA0MTA4NCwgNDEwODksIDQxMDkzLCAKLSAgICA0MTA5NywgNDExMDUsIDQxMTA4LCA0MTExMiwgNDExMTUsIDQxMTE4LCA0MTEyNCwgNDExMjgsIDQxMTMxLCA0MTEzNywgCi0gICAgNDExNDEsIDQxMTQ1LCA0MTE0OSwgNDExNTIsIDQxMTU2LCA0MTE1OSwgNDExNjMsIDQxMTY1LCA0MTE2OCwgNDExNzEsIAotICAgIDQxMTc1LCA0MTE3NywgNDExODEsIDQxMTg0LCA0MTE4NywgNDExOTIsIDQxMTk3LCA0MTIwNCwgNDEyMDcsIDQxMjEwLCAKLSAgICA0MTIxNCwgNDEyMTksIDQxMjIyLCA0MTIyNSwgNDEyMjgsIDQxMjMyLCA0MTIzNywgNDEyNDEsIDQxMjQ0LCA0MTI0NiwgCi0gICAgNDEyNDksIDQxMjUyLCA0MTI1NSwgNDEyNTksIDQxMjY0LCA0MTI2NywgNDEyNzEsIDQxMjc1LCA0MTI3OSwgNDEyODMsIAotICAgIDQxMjg4LCA0MTI5NCwgNDEyOTksIDQxMzA0LCA0MTMxMCwgNDEzMTUsIDQxMzIwLCA0MTMyNCwgNDEzMjgsIDQxMzMzLCAKLSAgICA0MTMzNywgNDEzNDEsIDQxMzQ0LCA0MTM0NiwgNDEzNTEsIDQxMzU3LCA0MTM2NCwgNDEzNzEsIDQxMzc4LCA0MTM4NSwgCi0gICAgNDEzOTIsIDQxMzk5LCA0MTQwNiwgNDE0MTMsIDQxNDIxLCA0MTQyOCwgNDE0MzYsIDQxNDQzLCA0MTQ1MCwgNDE0NTgsIAotICAgIDQxNDY2LCA0MTQ3MSwgNDE0NzYsIDQxNDgxLCA0MTQ4NiwgNDE0OTEsIDQxNDk2LCA0MTUwMSwgNDE1MDcsIDQxNTEyLCAKLSAgICA0MTUxOCwgNDE1MjQsIDQxNTMwLCA0MTUzNiwgNDE1NDIsIDQxNTQ5LCA0MTU1NywgNDE1NjQsIDQxNTcwLCA0MTU3NiwgCi0gICAgNDE1ODIsIDQxNTg4LCA0MTU5NCwgNDE2MDAsIDQxNjA3LCA0MTYxMywgNDE2MjAsIDQxNjI3LCA0MTYzNCwgNDE2NDEsIAotICAgIDQxNjQ4LCA0MTY1NiwgNDE2NjUsIDQxNjczLCA0MTY4NCwgNDE2OTIsIDQxNzAwLCA0MTcwOSwgNDE3MTYsIDQxNzI1LCAKLSAgICA0MTczNCwgNDE3NDIsIDQxNzUxLCA0MTc1OSwgNDE3NjMsIDAsIDAsIDAsIDAsIDQxNzY3LCA0MTc2OSwgNDE3NzEsIAotICAgIDQxNzczLCA0MTc3NSwgNDE3NzgsIDQxNzgxLCA0MTc4NSwgNDE3ODksIDQxNzk0LCA0MTc5OSwgNDE4MDMsIDQxODA3LCAKLSAgICA0MTgxMSwgNDE4MTUsIDQxODIwLCA0MTgyNSwgNDE4MzAsIDQxODM1LCA0MTg0MCwgNDE4NDUsIDQxODUwLCA0MTg1NSwgCi0gICAgNDE4NjAsIDQxODY1LCA0MTg3MSwgNDE4NzUsIDQxODc5LCA0MTg4NCwgNDE4ODksIDQxODk0LCA0MTg5OSwgNDE5MDMsIAotICAgIDQxOTEwLCA0MTkxNywgNDE5MjQsIDQxOTMxLCA0MTkzOCwgNDE5NDUsIDQxOTUyLCA0MTk1OSwgNDE5NjcsIDQxOTc5LCAKLSAgICA0MTk4NSwgNDE5OTEsIDQxOTk4LCA0MjAwNSwgNDIwMTIsIDQyMDE5LCA0MjAyNiwgNDIwMzMsIDQyMDQwLCA0MjA0NywgCi0gICAgNDIwNTIsIDQyMDU4LCA0MjA2MywgNDIwNjgsIDQyMDczLCA0MjA3OCwgNDIwODMsIDQyMDkwLCA0MjA5NywgNDIxMDIsIAotICAgIDQyMTA4LCA0MjExMywgNDIxMTYsIDQyMTE5LCA0MjEyMiwgNDIxMjUsIDQyMTI5LCA0MjEzMywgNDIxMzgsIDQyMTQzLCAKLSAgICA0MjE0OSwgNDIxNTUsIDQyMTU5LCA0MjE2MywgNDIxNjcsIDQyMTcxLCA0MjE3NiwgNDIxODEsIDQyMTg1LCA0MjE4OSwgCi0gICAgNDIxOTMsIDQyMTk3LCA0MjIwMiwgNDIyMDcsIDQyMjEwLCA0MjIxMywgNDIyMTYsIDQyMjE5LCA0MjIyNSwgNDIyMzIsIAotICAgIDQyMjQzLCA0MjI1MywgNDIyNTcsIDQyMjY1LCA0MjI3MiwgNDIyODAsIDQyMjg5LCA0MjI5MywgNDIyOTksIDQyMzA1LCAKLSAgICA0MjMwOSwgNDIzMTQsIDQyMzE5LCA0MjMyNSwgNDIzMzEsIDQyMzM3LCA0MjM0NCwgNDIzNDgsIDQyMzUyLCA0MjM1NywgCi0gICAgNDIzNjAsIDQyMzYyLCA0MjM2NiwgNDIzNzAsIDQyMzc4LCA0MjM4MiwgNDIzODQsIDQyMzg2LCA0MjM5MCwgNDIzOTgsIAotICAgIDQyNDAzLCA0MjQwOSwgNDI0MTksIDQyNDI2LCA0MjQzMSwgNDI0MzUsIDQyNDM5LCA0MjQ0MywgNDI0NDYsIDQyNDQ5LCAKLSAgICA0MjQ1MiwgNDI0NTYsIDQyNDYwLCA0MjQ2NCwgNDI0NjgsIDQyNDcyLCA0MjQ3NSwgNDI0NzksIDQyNDgzLCA0MjQ4NiwgCi0gICAgNDI0ODgsIDQyNDkxLCA0MjQ5MywgNDI0OTcsIDQyNTAxLCA0MjUwMywgNDI1MDksIDQyNTEyLCA0MjUxNywgNDI1MjEsIAotICAgIDQyNTI1LCA0MjUyNywgNDI1MjksIDQyNTMxLCA0MjUzNCwgNDI1MzgsIDQyNTQyLCA0MjU0NiwgNDI1NTAsIDQyNTU0LCAKLSAgICA0MjU2MCwgNDI1NjYsIDQyNTY4LCA0MjU3MCwgNDI1NzIsIDQyNTc0LCA0MjU3NywgNDI1NzksIDQyNTgzLCA0MjU4NSwgCi0gICAgNDI1ODksIDQyNTkzLCA0MjU5OCwgNDI2MDIsIDQyNjA2LCA0MjYxMCwgNDI2MTQsIDQyNjE4LCA0MjYyNCwgNDI2MjgsIAotICAgIDQyNjM4LCA0MjY0OCwgNDI2NTIsIDQyNjU4LCA0MjY2NSwgNDI2NjksIDQyNjczLCA0MjY3NiwgNDI2ODEsIDQyNjg1LCAKLSAgICA0MjY5MSwgNDI2OTUsIDQyNzA4LCA0MjcxNywgNDI3MjEsIDQyNzI1LCA0MjczMSwgNDI3MzUsIDQyNzM4LCA0Mjc0MCwgCi0gICAgNDI3NDMsIDQyNzQ3LCA0Mjc1MSwgNDI3NTgsIDQyNzYyLCA0Mjc2NiwgNDI3NzAsIDQyNzczLCA0Mjc3OCwgNDI3ODMsIAotICAgIDQyNzg5LCA0Mjc5NSwgNDI4MDAsIDQyODA1LCA0MjgxMywgNDI4MjEsIDQyODI1LCA0MjgyOSwgNDI4MzEsIDQyODM2LCAKLSAgICA0Mjg0MCwgNDI4NDQsIDQyODUyLCA0Mjg2MCwgNDI4NjcsIDQyODc0LCA0Mjg4MywgNDI4OTIsIDQyODk4LCA0MjkwNCwgCi0gICAgNDI5MTIsIDQyOTIwLCA0MjkyMiwgNDI5MjQsIDQyOTMwLCA0MjkzNiwgNDI5NDMsIDQyOTUwLCA0Mjk1NiwgNDI5NjIsIAotICAgIDQyOTY2LCA0Mjk3MCwgNDI5NzcsIDQyOTg0LCA0Mjk5MSwgNDI5OTgsIDQzMDA4LCA0MzAxOCwgNDMwMjYsIDQzMDM0LCAKLSAgICA0MzAzNiwgNDMwNDAsIDQzMDQ0LCA0MzA0OSwgNDMwNTQsIDQzMDYyLCA0MzA3MCwgNDMwNzMsIDQzMDc2LCA0MzA3OSwgCi0gICAgNDMwODIsIDQzMDg1LCA0MzA5MCwgNDMwOTQsIDQzMDk5LCA0MzEwNCwgNDMxMDcsIDQzMTEwLCA0MzExMywgNDMxMTYsIAotICAgIDQzMTE5LCA0MzEyMywgNDMxMjYsIDQzMTI5LCA0MzEzMiwgNDMxMzUsIDQzMTM3LCA0MzEzOSwgNDMxNDEsIDQzMTQzLCAKLSAgICA0MzE1MSwgNDMxNTksIDQzMTY1LCA0MzE2OSwgNDMxNzUsIDQzMTg1LCA0MzE5MSwgNDMxOTcsIDQzMjAzLCA0MzIxMSwgCi0gICAgNDMyMjAsIDQzMjMyLCA0MzIzNiwgNDMyNDAsIDQzMjQyLCA0MzI0OCwgNDMyNTAsIDQzMjUyLCA0MzI1NCwgNDMyNTYsIAotICAgIDQzMjYyLCA0MzI2NSwgNDMyNzEsIDQzMjc3LCA0MzI4MSwgNDMyODUsIDQzMjg5LCA0MzI5MiwgNDMyOTYsIDQzMzAwLCAKLSAgICA0MzMwMiwgNDMzMTEsIDQzMzIwLCA0MzMyNSwgNDMzMzAsIDQzMzM2LCA0MzM0MiwgNDMzNDgsIDQzMzUxLCA0MzM1NCwgCi0gICAgNDMzNTcsIDQzMzYwLCA0MzM2MiwgNDMzNjcsIDQzMzcyLCA0MzM3NywgNDMzODMsIDQzMzg5LCA0MzM5OCwgNDM0MDcsIAotICAgIDQzNDE0LCA0MzQyMSwgNDM0MjgsIDQzNDM1LCA0MzQ0NSwgNDM0NTUsIDQzNDY1LCA0MzQ3NSwgNDM0ODUsIDQzNDk1LCAKLSAgICA0MzUwNCwgNDM1MTMsIDQzNTIyLCA0MzUzMSwgNDM1MzksIDQzNTUxLCA0MzU2MiwgNDM1NzgsIDQzNTgxLCA0MzU4NywgCi0gICAgNDM1OTMsIDQzNTk5LCA0MzYwNywgNDM2MjIsIDQzNjM4LCA0MzY0NCwgNDM2NTAsIDQzNjU3LCA0MzY2MywgNDM2NzIsIAotICAgIDQzNjc5LCA0MzY5MywgNDM3MDgsIDQzNzEzLCA0MzcxOSwgNDM3MjcsIDQzNzMwLCA0MzczMywgNDM3MzUsIDQzNzM4LCAKLSAgICA0Mzc0MSwgNDM3NDMsIDQzNzQ1LCA0Mzc0OSwgNDM3NTIsIDQzNzU1LCA0Mzc1OCwgNDM3NjEsIDQzNzY2LCA0Mzc3MSwgCi0gICAgNDM3NzYsIDQzNzgxLCA0Mzc4NiwgNDM3ODksIDQzNzkxLCA0Mzc5MywgNDM3OTUsIDQzNzk5LCA0MzgwMywgNDM4MDcsIAotICAgIDQzODEzLCA0MzgxOCwgNDM4MjAsIDQzODIyLCA0MzgyNywgNDM4MzIsIDQzODM3LCA0Mzg0MiwgNDM4NDcsIDQzODUyLCAKLSAgICA0Mzg1NCwgNDM4NTYsIDQzODY2LCA0Mzg3MCwgNDM4NzgsIDQzODg3LCA0Mzg4OSwgNDM4OTQsIDQzODk5LCA0MzkwNywgCi0gICAgNDM5MTEsIDQzOTEzLCA0MzkxNywgNDM5MTksIDQzOTIzLCA0MzkyNywgNDM5MzEsIDQzOTMzLCA0MzkzNSwgNDM5MzcsIAotICAgIDQzOTQ0LCA0Mzk1MywgNDM5NjIsIDQzOTcxLCA0Mzk4MCwgNDM5ODksIDQzOTk4LCA0NDAwNywgNDQwMTYsIDQ0MDI0LCAKLSAgICA0NDAzMiwgNDQwNDEsIDQ0MDUwLCA0NDA1OSwgNDQwNjgsIDQ0MDc2LCA0NDA4NCwgNDQwOTMsIDQ0MTAyLCA0NDExMSwgCi0gICAgNDQxMjEsIDQ0MTMwLCA0NDE0MCwgNDQxNDksIDQ0MTU5LCA0NDE2NywgNDQxNzYsIDQ0MTg2LCA0NDE5NSwgNDQyMDUsIAotICAgIDQ0MjE0LCA0NDIyNCwgNDQyMzIsIDQ0MjQxLCA0NDI1MCwgNDQyNTksIDQ0MjY4LCA0NDI3NywgNDQyODYsIDQ0Mjk2LCAKLSAgICA0NDMwNSwgNDQzMTQsIDQ0MzIzLCA0NDMzMywgNDQzNDIsIDQ0MzUxLCA0NDM2MCwgNDQzNjksIDQ0Mzc5LCA0NDM4OSwgCi0gICAgNDQzOTgsIDQ0NDA3LCA0NDQxNSwgNDQ0MjQsIDQ0NDMxLCA0NDQ0MCwgNDQ0NDksIDQ0NDYwLCA0NDQ2OSwgNDQ0NzksIAotICAgIDQ0NDg5LCA0NDQ5NiwgNDQ1MDMsIDQ0NTEwLCA0NDUxOSwgNDQ1MjgsIDQ0NTM3LCA0NDU0NiwgNDQ1NTMsIDQ0NTU4LCAKLSAgICA0NDU2NiwgNDQ1NzEsIDQ0NTc0LCA0NDU4MSwgNDQ1ODQsIDQ0NTg5LCA0NDU5NCwgNDQ1OTcsIDQ0NjAwLCA0NDYwOCwgCi0gICAgNDQ2MTEsIDQ0NjE2LCA0NDYxOSwgNDQ2MjcsIDQ0NjMyLCA0NDY0MCwgNDQ2NDMsIDQ0NjQ2LCA0NDY0OSwgNDQ2NTQsIAotICAgIDQ0NjU5LCA0NDY2MiwgNDQ2NjUsIDQ0NjczLCA0NDY3NiwgNDQ2ODMsIDQ0NjkwLCA0NDY5NCwgNDQ2OTgsIDQ0NzAzLCAKLSAgICA0NDcwOCwgNDQ3MTQsIDQ0NzE5LCA0NDcyNSwgNDQ3MzEsIDQ0NzM2LCA0NDc0MiwgNDQ3NTAsIDQ0NzU2LCA0NDc2NCwgCi0gICAgNDQ3NzIsIDQ0Nzc4LCA0NDc4NiwgNDQ3OTQsIDQ0ODAyLCA0NDgxMCwgNDQ4MTYsIDQ0ODI0LCA0NDgzMiwgNDQ4NDAsIAotICAgIDQ0ODQ0LCA0NDg1MCwgNDQ4NjQsIDQ0ODc4LCA0NDg4MiwgNDQ4ODYsIDQ0ODkwLCA0NDg5NCwgNDQ5MDQsIDQ0OTA4LCAKLSAgICA0NDkxMywgNDQ5MTgsIDQ0OTI0LCA0NDkzMCwgNDQ5MzYsIDQ0OTQyLCA0NDk1MiwgNDQ5NjIsIDQ0OTcwLCA0NDk4MSwgCi0gICAgNDQ5OTIsIDQ1MDAwLCA0NTAxMSwgNDUwMjIsIDQ1MDMwLCA0NTA0MSwgNDUwNTIsIDQ1MDYwLCA0NTA2OCwgNDUwNzgsIAotICAgIDQ1MDg4LCA0NTA5MSwgNDUwOTQsIDQ1MDk3LCA0NTEwMiwgNDUxMDYsIDQ1MTEyLCA0NTExOSwgNDUxMjYsIDQ1MTM0LCAKLSAgICA0NTE0MSwgNDUxNDUsIDQ1MTQ5LCA0NTE1MywgNDUxNTcsIDQ1MTU5LCA0NTE2MywgNDUxNjcsIDQ1MTcyLCA0NTE3NywgCi0gICAgNDUxODQsIDQ1MTkxLCA0NTE5NCwgNDUyMDEsIDQ1MjAzLCA0NTIwNSwgNDUyMDksIDQ1MjEzLCA0NTIxOCwgNDUyMjQsIAotICAgIDQ1MjMwLCA0NTIzNiwgNDUyNDIsIDQ1MjUxLCA0NTI2MCwgNDUyNjksIDQ1MjczLCA0NTI3NSwgNDUyNzksIDQ1Mjg2LCAKLSAgICA0NTI5MywgNDUzMDAsIDQ1MzA3LCA0NTMxNCwgNDUzMTcsIDQ1MzIyLCAwLCAwLCAwLCAwLCAwLCA0NTMyOCwgNDUzMzIsIAotICAgIDQ1MzM5LCA0NTM0NiwgNDUzNTMsIDQ1MzYwLCA0NTM2NCwgNDUzNjgsIDQ1MzcyLCA0NTM3NiwgNDUzODIsIDQ1Mzg4LCAKLSAgICA0NTM5MywgNDUzOTksIDQ1NDA1LCA0NTQxMSwgNDU0MTcsIDQ1NDI1LCA0NTQzMiwgNDU0MzksIDQ1NDQ2LCA0NTQ1MywgCi0gICAgNDU0NTgsIDQ1NDY0LCA0NTQ3MywgNDU0NzcsIDQ1NDg0LCA0NTQ4OCwgNDU0OTIsIDQ1NDk4LCA0NTUwNCwgNDU1MTAsIAotICAgIDQ1NTE2LCA0NTUyMCwgNDU1MjQsIDQ1NTI3LCA0NTUzMCwgNDU1MzQsIDQ1NTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTU0OCwgNDU1NTEsIDQ1NTU1LCAKLSAgICA0NTU1OSwgNDU1NjUsIDQ1NTcxLCA0NTU3NywgNDU1ODUsIDQ1NTkyLCA0NTU5NiwgNDU2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NjA5LCA0NTYxMiwgNDU2MTUsIDQ1NjE4LCAKLSAgICA0NTYyMSwgNDU2MjQsIDQ1NjI3LCA0NTYzMSwgNDU2MzQsIDQ1NjM4LCA0NTY0MiwgNDU2NDYsIDQ1NjUwLCA0NTY1NCwgCi0gICAgNDU2NTgsIDQ1NjYyLCA0NTY2NiwgNDU2NzAsIDQ1Njc0LCA0NTY3OCwgNDU2ODIsIDQ1Njg1LCA0NTY4OCwgNDU2OTEsIAotICAgIDQ1Njk0LCA0NTY5NywgNDU3MDAsIDQ1NzA0LCA0NTcwNywgNDU3MTEsIDQ1NzE1LCA0NTcxOSwgNDU3MjMsIDQ1NzI3LCAKLSAgICA0NTczMSwgNDU3MzUsIDQ1NzM5LCA0NTc0MywgNDU3NDcsIDQ1NzUxLCA0NTc1NSwgNDU3NjEsIDQ1NzY3LCA0NTc3MywgCi0gICAgNDU3ODAsIDQ1Nzg3LCA0NTc5NCwgNDU4MDEsIDQ1ODA4LCA0NTgxNSwgNDU4MjIsIDQ1ODI5LCA0NTgzNiwgNDU4NDMsIAotICAgIDQ1ODUwLCA0NTg1NywgNDU4NjQsIDQ1ODcxLCA0NTg3OCwgNDU4ODUsIDQ1ODkyLCA0NTg5NywgNDU5MDMsIDQ1OTA5LCAKLSAgICA0NTkxNSwgNDU5MjAsIDQ1OTI2LCA0NTkzMiwgNDU5MzgsIDQ1OTQzLCA0NTk0OSwgNDU5NTUsIDQ1OTYwLCA0NTk2NiwgCi0gICAgNDU5NzIsIDQ1OTc3LCA0NTk4MywgNDU5ODksIDQ1OTk0LCA0NTk5OSwgNDYwMDUsIDQ2MDEwLCA0NjAxNiwgNDYwMjIsIAotICAgIDQ2MDI4LCA0NjAzNCwgNDYwNDAsIDQ2MDQ1LCA0NjA1MSwgNDYwNTcsIDQ2MDYzLCA0NjA2OCwgNDYwNzQsIDQ2MDgwLCAKLSAgICA0NjA4NiwgNDYwOTEsIDQ2MDk3LCA0NjEwMywgNDYxMDgsIDQ2MTE0LCA0NjEyMCwgNDYxMjUsIDQ2MTMxLCA0NjEzNywgCi0gICAgNDYxNDIsIDQ2MTQ3LCA0NjE1MywgNDYxNTgsIDQ2MTY0LCA0NjE3MCwgNDYxNzYsIDQ2MTgyLCA0NjE4OCwgNDYxOTMsIAotICAgIDQ2MTk5LCA0NjIwNSwgNDYyMTEsIDQ2MjE2LCA0NjIyMiwgNDYyMjgsIDQ2MjM0LCA0NjIzOSwgNDYyNDUsIDQ2MjUxLCAKLSAgICA0NjI1NiwgNDYyNjIsIDQ2MjY4LCA0NjI3MywgNDYyNzksIDQ2Mjg1LCA0NjI5MCwgNDYyOTUsIDQ2MzAxLCA0NjMwNiwgCi0gICAgNDYzMTIsIDQ2MzE4LCA0NjMyNCwgNDYzMzAsIDQ2MzM2LCA0NjM0MCwgNDYzNDUsIDQ2MzUwLCA0NjM1NSwgNDYzNjAsIAotICAgIDQ2MzY1LCA0NjM3MCwgNDYzNzUsIDQ2MzgwLCA0NjM4NSwgNDYzOTAsIDQ2Mzk0LCA0NjM5OCwgNDY0MDIsIDQ2NDA2LCAKLSAgICA0NjQxMCwgNDY0MTQsIDQ2NDE5LCA0NjQyMywgNDY0MjgsIDQ2NDMzLCA0NjQzOCwgNDY0NDMsIDQ2NDQ4LCA0NjQ1MywgCi0gICAgNDY0NTgsIDQ2NDY3LCA0NjQ3NiwgNDY0ODUsIDQ2NDk0LCA0NjUwMywgNDY1MTIsIDQ2NTIxLCA0NjUzMCwgNDY1MzcsIAotICAgIDQ2NTQ1LCA0NjU1MywgNDY1NjAsIDQ2NTY3LCA0NjU3NSwgNDY1ODMsIDQ2NTkwLCA0NjU5NywgNDY2MDUsIDQ2NjEzLCAKLSAgICA0NjYyMCwgNDY2MjcsIDQ2NjM1LCA0NjY0MywgNDY2NTAsIDQ2NjU3LCA0NjY2NSwgNDY2NzQsIDQ2NjgzLCA0NjY5MSwgCi0gICAgNDY3MDAsIDQ2NzA5LCA0NjcxNiwgNDY3MjMsIDQ2NzMxLCA0Njc0MCwgNDY3NDksIDQ2NzU3LCA0Njc2NiwgNDY3NzUsIAotICAgIDQ2NzgyLCA0Njc4OSwgNDY3OTgsIDQ2ODA3LCA0NjgxNiwgNDY4MjUsIDQ2ODM0LCA0Njg0MywgNDY4NTAsIDQ2ODU3LCAKLSAgICA0Njg2NiwgNDY4NzUsIDQ2ODg0LCA0Njg5MywgNDY5MDIsIDQ2OTExLCA0NjkxOCwgNDY5MjUsIDQ2OTM0LCA0Njk0MywgCi0gICAgNDY5NTIsIDQ2OTYyLCA0Njk3MiwgNDY5ODEsIDQ2OTkxLCA0NzAwMSwgNDcwMTEsIDQ3MDIxLCA0NzAzMSwgNDcwNDEsIAotICAgIDQ3MDUwLCA0NzA1OSwgNDcwNjYsIDQ3MDc0LCA0NzA4MiwgNDcwOTAsIDQ3MDk4LCA0NzEwMywgNDcxMDgsIDQ3MTE3LCAKLSAgICA0NzEyNSwgNDcxMzIsIDQ3MTQxLCA0NzE0OSwgNDcxNTYsIDQ3MTY1LCA0NzE3MywgNDcxODAsIDQ3MTg5LCA0NzE5NywgCi0gICAgNDcyMDQsIDQ3MjEzLCA0NzIyMSwgNDcyMjgsIDQ3MjM3LCA0NzI0NSwgNDcyNTIsIDQ3MjYyLCA0NzI3MSwgNDcyNzgsIAotICAgIDQ3Mjg4LCA0NzI5NywgNDczMDQsIDQ3MzE0LCA0NzMyMywgNDczMzAsIDQ3MzM5LCA0NzM0OCwgNDczNTcsIDQ3MzY2LCAKLSAgICA0NzM4MCwgNDczOTQsIDQ3NDAxLCA0NzQwNiwgNDc0MTEsIDQ3NDE2LCA0NzQyMSwgNDc0MjYsIDQ3NDMxLCA0NzQzNiwgCi0gICAgNDc0NDEsIDQ3NDQ5LCA0NzQ1NywgNDc0NjUsIDQ3NDczLCA0NzQ3OCwgNDc0ODUsIDQ3NDkyLCA0NzQ5OSwgNDc1MDQsIAotICAgIDQ3NTEyLCA0NzUxOSwgNDc1MjcsIDQ3NTMxLCA0NzUzOCwgNDc1NDQsIDQ3NTUxLCA0NzU1NSwgNDc1NjEsIDQ3NTY3LCAKLSAgICA0NzU3MywgNDc1NzcsIDQ3NTgwLCA0NzU4NCwgNDc1ODgsIDQ3NTk1LCA0NzYwMSwgNDc2MDcsIDQ3NjEzLCA0NzYxOSwgCi0gICAgNDc2MzMsIDQ3NjQzLCA0NzY1NywgNDc2NzEsIDQ3Njc3LCA0NzY4NywgNDc3MDEsIDQ3NzA0LCA0NzcwNywgNDc3MTQsIAotICAgIDQ3NzIyLCA0NzcyOCwgNDc3MzMsIDQ3NzQxLCA0Nzc1MywgNDc3NjUsIDQ3NzczLCA0Nzc3NywgNDc3ODEsIDQ3Nzg0LCAKLSAgICA0Nzc4NywgNDc3OTEsIDQ3Nzk1LCA0Nzc5OCwgNDc4MDEsIDQ3ODA2LCA0NzgxMSwgNDc4MTcsIDQ3ODIzLCA0NzgyOCwgCi0gICAgNDc4MzMsIDQ3ODM5LCA0Nzg0NSwgNDc4NTAsIDQ3ODU1LCA0Nzg2MCwgNDc4NjUsIDQ3ODcxLCA0Nzg3NywgNDc4ODIsIAotICAgIDQ3ODg3LCA0Nzg5MywgNDc4OTksIDQ3OTA0LCA0NzkwOSwgNDc5MTIsIDQ3OTE1LCA0NzkyNCwgNDc5MjYsIDQ3OTI4LCAKLSAgICA0NzkzMSwgNDc5MzUsIDQ3OTQxLCA0Nzk0MywgNDc5NDYsIDQ3OTUzLCA0Nzk2MCwgNDc5NjgsIDQ3OTc2LCA0Nzk4NiwgCi0gICAgNDgwMDAsIDQ4MDA1LCA0ODAxMCwgNDgwMTQsIDQ4MDE5LCA0ODAyNywgNDgwMzUsIDQ4MDQ0LCA0ODA1MywgNDgwNjIsIAotICAgIDQ4MDcxLCA0ODA3NiwgNDgwODEsIDQ4MDg3LCA0ODA5MywgNDgwOTksIDQ4MTA1LCA0ODEwOCwgNDgxMTQsIDQ4MTIwLCAKLSAgICA0ODEzMCwgNDgxNDAsIDQ4MTQ4LCA0ODE1NiwgNDgxNjUsIDQ4MTc0LCA0ODE3OCwgNDgxODYsIDQ4MTk0LCA0ODIwMiwgCi0gICAgNDgyMTAsIDQ4MjE5LCA0ODIyOCwgNDgyMzcsIDQ4MjQ2LCA0ODI1MSwgNDgyNTYsIDQ4MjYxLCA0ODI2NiwgNDgyNzEsIAotICAgIDQ4Mjc3LCA0ODI4MywgNDgyODgsIDQ4Mjk0LCA0ODI5NiwgNDgyOTgsIDQ4MzAwLCA0ODMwMiwgNDgzMDUsIDQ4MzA4LCAKLSAgICA0ODMxMCwgNDgzMTIsIDQ4MzE0LCA0ODMxOCwgNDgzMjIsIDQ4MzI0LCA0ODMyNiwgNDgzMjksIDQ4MzMyLCA0ODMzNiwgCi0gICAgNDgzNDIsIDQ4MzQ4LCA0ODM1MCwgNDgzNTcsIDQ4MzYxLCA0ODM2NiwgNDgzNzEsIDQ4MzczLCA0ODM4MywgNDgzODksIAotICAgIDQ4Mzk1LCA0ODQwMSwgNDg0MDcsIDQ4NDEzLCA0ODQxOSwgNDg0MjQsIDQ4NDI3LCA0ODQzMCwgNDg0MzMsIDQ4NDM1LCAKLSAgICA0ODQzNywgNDg0NDEsIDQ4NDQ1LCA0ODQ1MCwgNDg0NTUsIDQ4NDYwLCA0ODQ2MywgNDg0NjcsIDQ4NDcyLCA0ODQ3NSwgCi0gICAgNDg0NzksIDQ4NDg0LCA0ODQ4OSwgNDg0OTQsIDQ4NDk5LCA0ODUwNCwgNDg1MDksIDQ4NTE0LCA0ODUxOSwgNDg1MjQsIAotICAgIDQ4NTI5LCA0ODUzNCwgNDg1MzksIDQ4NTQ1LCA0ODU1MSwgNDg1NTcsIDQ4NTU5LCA0ODU2MiwgNDg1NjQsIDQ4NTY3LCAKLSAgICA0ODU2OSwgNDg1NzEsIDQ4NTczLCA0ODU3NSwgNDg1NzcsIDQ4NTc5LCA0ODU4MSwgNDg1ODMsIDQ4NTg1LCA0ODU4NywgCi0gICAgNDg1ODksIDQ4NTkxLCA0ODU5MywgNDg1OTUsIDQ4NTk3LCA0ODU5OSwgNDg2MDEsIDQ4NjA2LCA0ODYxMSwgNDg2MTYsIAotICAgIDQ4NjIxLCA0ODYyNiwgNDg2MzEsIDQ4NjM2LCA0ODY0MSwgNDg2NDYsIDQ4NjUxLCA0ODY1NiwgNDg2NjEsIDQ4NjY2LCAKLSAgICA0ODY3MSwgNDg2NzYsIDQ4NjgxLCA0ODY4NiwgNDg2OTEsIDQ4Njk2LCA0ODcwMSwgNDg3MDUsIDQ4NzA5LCA0ODcxMywgCi0gICAgNDg3MTksIDQ4NzI1LCA0ODczMCwgNDg3MzUsIDQ4NzQwLCA0ODc0NiwgNDg3NTIsIDQ4NzU3LCA0ODc2NSwgNDg3NzMsIAotICAgIDQ4NzgxLCA0ODc4OSwgNDg3OTcsIDQ4ODA1LCA0ODgxMywgNDg4MjEsIDQ4ODI3LCA0ODgzMiwgNDg4MzcsIDQ4ODQyLCAKLSAgICA0ODg0NSwgNDg4NDksIDQ4ODUzLCA0ODg1NywgNDg4NjEsIDQ4ODY1LCA0ODg2OSwgNDg4NzYsIDQ4ODgzLCA0ODg5MSwgCi0gICAgNDg4OTksIDQ4OTA0LCA0ODkwOSwgNDg5MTYsIDQ4OTIzLCA0ODkzMCwgNDg5MzcsIDQ4OTQwLCA0ODk0MywgNDg5NDgsIAotICAgIDQ4OTUwLCA0ODk1NCwgNDg5NTksIDQ4OTYxLCA0ODk2MywgNDg5NjUsIDQ4OTY3LCA0ODk3MiwgNDg5NzUsIDQ4OTc3LCAKLSAgICA0ODk4MiwgNDg5ODksIDQ4OTk2LCA0ODk5OSwgNDkwMDMsIDQ5MDA4LCA0OTAxMywgNDkwMjEsIDQ5MDI3LCA0OTAzMywgCi0gICAgNDkwNDUsIDQ5MDUyLCA0OTA2MCwgNDkwNjUsIDQ5MDcwLCA0OTA3NiwgNDkwNzksIDQ5MDgyLCA0OTA4NywgNDkwODksIAotICAgIDQ5MDkzLCA0OTA5NSwgNDkwOTcsIDQ5MDk5LCA0OTEwMSwgNDkxMDMsIDQ5MTA1LCA0OTExMCwgNDkxMTIsIDQ5MTE0LCAKLSAgICA0OTExNiwgNDkxMTgsIDQ5MTIyLCA0OTEyNCwgNDkxMjcsIDQ5MTMyLCA0OTEzNywgNDkxNDIsIDQ5MTQ3LCA0OTE1MywgCi0gICAgNDkxNTksIDQ5MTYxLCA0OTE2NCwgNDkxNzEsIDQ5MTc4LCA0OTE4NSwgNDkxOTIsIDQ5MTk2LCA0OTIwMCwgNDkyMDIsIAotICAgIDQ5MjA0LCA0OTIwOCwgNDkyMTQsIDQ5MjE5LCA0OTIyMSwgNDkyMjUsIDQ5MjM0LCA0OTI0MiwgNDkyNTAsIDQ5MjU2LCAKLSAgICA0OTI2MiwgNDkyNjcsIDQ5MjczLCA0OTI3OCwgNDkyODEsIDQ5Mjk1LCA0OTI5OCwgNDkzMDMsIDQ5MzA4LCA0OTMxNCwgCi0gICAgNDkzMjQsIDQ5MzI2LCA0OTMzMiwgNDkzMzgsIDQ5MzQyLCA0OTM0OSwgNDkzNTMsIDQ5MzU1LCA0OTM1NywgNDkzNjEsIAotICAgIDQ5MzY3LCA0OTM3MiwgNDkzNzgsIDQ5MzgwLCA0OTM4NiwgNDkzODgsIDQ5Mzk0LCA0OTM5NiwgNDkzOTgsIDQ5NDAzLCAKLSAgICA0OTQwNSwgNDk0MDksIDQ5NDE0LCA0OTQxNiwgNDk0MjEsIDQ5NDI2LCA0OTQzMCwgNDk0MzcsIDQ5NDQ3LCA0OTQ1MiwgCi0gICAgNDk0NTgsIDQ5NDYxLCA0OTQ2NywgNDk0NzAsIDQ5NDc1LCA0OTQ4MCwgNDk0ODQsIDQ5NDg2LCA0OTQ4OCwgNDk0OTIsIAotICAgIDQ5NDk2LCA0OTUwMCwgNDk1MDQsIDQ5NTA5LCA0OTUxMSwgNDk1MTYsIDQ5NTE5LCA0OTUyMiwgNDk1MjUsIDQ5NTI5LCAKLSAgICA0OTUzMywgNDk1MzgsIDQ5NTQyLCA0OTU0NywgNDk1NTIsIDQ5NTU2LCA0OTU2MSwgNDk1NjcsIDQ5NTcwLCA0OTU3NiwgCi0gICAgNDk1ODEsIDQ5NTg1LCA0OTU5MCwgNDk1OTYsIDQ5NjAyLCA0OTYwOSwgNDk2MTUsIDQ5NjIyLCA0OTYyOSwgNDk2MzEsIAotICAgIDQ5NjM4LCA0OTY0MiwgNDk2NDgsIDQ5NjU0LCA0OTY1OSwgNDk2NjUsIDQ5NjY5LCA0OTY3NCwgNDk2NzcsIDQ5NjgyLCAKLSAgICA0OTY4OCwgNDk2OTUsIDQ5NzAzLCA0OTcxMCwgNDk3MTksIDQ5NzI5LCA0OTczNiwgNDk3NDIsIDQ5NzQ2LCA0OTc1MywgCi0gICAgNDk3NTgsIDQ5NzY3LCA0OTc3MCwgNDk3NzMsIDQ5NzgyLCA0OTc5MiwgNDk3OTksIDQ5ODAxLCA0OTgwNywgNDk4MTIsIAotICAgIDQ5ODE0LCA0OTgxNywgNDk4MjEsIDQ5ODI5LCA0OTgzOCwgNDk4NDEsIDQ5ODQ2LCA0OTg1MSwgNDk4NTksIDQ5ODY3LCAKLSAgICA0OTg3NSwgNDk4ODMsIDQ5ODg5LCA0OTg5NSwgNDk5MDEsIDQ5OTA5LCA0OTkxNCwgNDk5MTcsIDQ5OTIxLCA0OTkyNCwgCi0gICAgNDk5MzYsIDQ5OTQ2LCA0OTk1NywgNDk5NjYsIDQ5OTc3LCA0OTk4NywgNDk5OTYsIDUwMDAyLCA1MDAxMCwgNTAwMTQsIAotICAgIDUwMDIyLCA1MDAyNiwgNTAwMzQsIDUwMDQxLCA1MDA0OCwgNTAwNTcsIDUwMDY2LCA1MDA3NiwgNTAwODYsIDUwMDk2LCAKLSAgICA1MDEwNiwgNTAxMTUsIDUwMTI0LCA1MDEzNCwgNTAxNDQsIDUwMTUzLCA1MDE2MiwgNTAxNjgsIDUwMTc0LCA1MDE4MCwgCi0gICAgNTAxODYsIDUwMTkyLCA1MDE5OCwgNTAyMDUsIDUwMjExLCA1MDIxOCwgNTAyMjUsIDUwMjMxLCA1MDIzNywgNTAyNDMsIAotICAgIDUwMjQ5LCA1MDI1NSwgNTAyNjEsIDUwMjY4LCA1MDI3NCwgNTAyODEsIDUwMjg4LCA1MDI5NSwgNTAzMDIsIDUwMzA5LCAKLSAgICA1MDMxNiwgNTAzMjMsIDUwMzMwLCA1MDMzOCwgNTAzNDUsIDUwMzUzLCA1MDM2MSwgNTAzNjYsIDUwMzY5LCA1MDM3MywgCi0gICAgNTAzNzcsIDUwMzgzLCA1MDM4NiwgNTAzOTEsIDUwMzk3LCA1MDQwMiwgNTA0MDYsIDUwNDExLCA1MDQxNywgNTA0MjQsIAotICAgIDUwNDI3LCA1MDQzNCwgNTA0NDEsIDUwNDQ1LCA1MDQ1MywgNTA0NjEsIDUwNDY2LCA1MDQ3MiwgNTA0NzcsIDUwNDgyLCAKLSAgICA1MDQ4OSwgNTA0OTYsIDUwNTA0LCA1MDUxMiwgNTA1MjEsIDUwNTI1LCA1MDUzNCwgNTA1MzksIDUwNTQzLCA1MDU1MCwgCi0gICAgNTA1NTQsIDUwNTYwLCA1MDU2OCwgNTA1NzMsIDUwNTgwLCA1MDU4NCwgNTA1ODksIDUwNTkzLCA1MDU5OCwgNTA2MDIsIAotICAgIDUwNjA3LCA1MDYxMiwgNTA2MjEsIDUwNjIzLCA1MDYyNiwgNTA2MjksIDUwNjM2LCA1MDY0MywgNTA2NDksIDUwNjU3LCAKLSAgICA1MDY2MywgNTA2NzAsIDUwNjc1LCA1MDY3OCwgNTA2ODMsIDUwNjg4LCA1MDY5MywgNTA3MDEsIDUwNzA1LCA1MDcxMiwgCi0gICAgNTA3MjAsIDUwNzI4LCA1MDczMywgNTA3MzgsIDUwNzQ0LCA1MDc0OSwgNTA3NTQsIDUwNzYwLCA1MDc2NSwgNTA3NjgsIAotICAgIDUwNzcyLCA1MDc3NiwgNTA3ODMsIDUwNzkzLCA1MDc5OCwgNTA4MDcsIDUwODE2LCA1MDgyMiwgNTA4MjgsIDUwODMzLCAKLSAgICA1MDgzOCwgNTA4NDMsIDUwODQ4LCA1MDg1NCwgNTA4NjAsIDUwODY4LCA1MDg3NiwgNTA4ODIsIDUwODg4LCA1MDg5MiwgCi0gICAgNTA4OTYsIDUwOTAzLCA1MDkxMCwgNTA5MTYsIDUwOTE5LCA1MDkyMiwgNTA5MjYsIDUwOTMwLCA1MDkzNCwgNTA5MzksIAotICAgIDUwOTQ1LCA1MDk1MSwgNTA5NTgsIDUwOTY1LCA1MDk3MCwgNTA5NzQsIDUwOTc4LCA1MDk4MiwgNTA5ODYsIDUwOTkwLCAKLSAgICA1MDk5NCwgNTA5OTgsIDUxMDAyLCA1MTAwNiwgNTEwMTAsIDUxMDE0LCA1MTAxOCwgNTEwMjIsIDUxMDI2LCA1MTAzMCwgCi0gICAgNTEwMzQsIDUxMDM4LCA1MTA0MiwgNTEwNDYsIDUxMDUwLCA1MTA1NCwgNTEwNTgsIDUxMDYyLCA1MTA2NiwgNTEwNzAsIAotICAgIDUxMDc0LCA1MTA3OCwgNTEwODIsIDUxMDg2LCA1MTA5MCwgNTEwOTQsIDUxMDk4LCA1MTEwMiwgNTExMDYsIDUxMTEwLCAKLSAgICA1MTExNCwgNTExMTgsIDUxMTIyLCA1MTEyNiwgNTExMzAsIDUxMTM0LCA1MTEzOCwgNTExNDIsIDUxMTQ2LCA1MTE1MCwgCi0gICAgNTExNTQsIDUxMTU4LCA1MTE2MiwgNTExNjYsIDUxMTcwLCA1MTE3NCwgNTExNzgsIDUxMTgyLCA1MTE4NiwgNTExOTAsIAotICAgIDUxMTk0LCA1MTE5OCwgNTEyMDIsIDUxMjA2LCA1MTIxMCwgNTEyMTQsIDUxMjE4LCA1MTIyMiwgNTEyMjYsIDUxMjMwLCAKLSAgICA1MTIzNCwgNTEyMzgsIDUxMjQyLCA1MTI0NiwgNTEyNTAsIDUxMjU0LCA1MTI1OCwgNTEyNjIsIDUxMjY2LCA1MTI3MCwgCi0gICAgNTEyNzQsIDUxMjc4LCA1MTI4MiwgNTEyODYsIDUxMjkwLCA1MTI5NCwgNTEyOTgsIDUxMzAyLCA1MTMwNiwgNTEzMTAsIAotICAgIDUxMzE0LCA1MTMxOCwgNTEzMjIsIDUxMzI2LCA1MTMzMCwgNTEzMzQsIDUxMzM4LCA1MTM0MiwgNTEzNDYsIDUxMzUwLCAKLSAgICA1MTM1NCwgNTEzNTgsIDUxMzYyLCA1MTM2NiwgNTEzNzAsIDUxMzc0LCA1MTM3OCwgNTEzODIsIDUxMzg2LCA1MTM5MCwgCi0gICAgNTEzOTQsIDUxMzk4LCA1MTQwMiwgNTE0MDYsIDUxNDEwLCA1MTQxNCwgNTE0MTgsIDUxNDIyLCA1MTQyNiwgNTE0MzAsIAotICAgIDUxNDM0LCA1MTQzOCwgNTE0NDIsIDUxNDQ2LCA1MTQ1MCwgNTE0NTQsIDUxNDU4LCA1MTQ2MiwgNTE0NjYsIDUxNDcwLCAKLSAgICA1MTQ3NCwgNTE0NzgsIDUxNDgyLCA1MTQ4NiwgNTE0OTAsIDUxNDk0LCA1MTQ5OCwgNTE1MDIsIDUxNTA2LCA1MTUxMCwgCi0gICAgNTE1MTQsIDUxNTE4LCA1MTUyMiwgNTE1MjYsIDUxNTMwLCA1MTUzNCwgNTE1MzgsIDUxNTQyLCA1MTU0NiwgNTE1NTAsIAotICAgIDUxNTU0LCA1MTU1OCwgNTE1NjIsIDUxNTY2LCA1MTU3MCwgNTE1NzQsIDUxNTc4LCA1MTU4MiwgNTE1ODYsIDUxNTkwLCAKLSAgICA1MTU5NCwgNTE1OTgsIDUxNjAyLCA1MTYwNiwgNTE2MTAsIDUxNjE0LCA1MTYxOCwgNTE2MjIsIDUxNjI2LCA1MTYzMCwgCi0gICAgNTE2MzQsIDUxNjM4LCA1MTY0MiwgNTE2NDYsIDUxNjUwLCA1MTY1NCwgNTE2NTgsIDUxNjYyLCA1MTY2NiwgNTE2NzAsIAotICAgIDUxNjc0LCA1MTY3OCwgNTE2ODIsIDUxNjg2LCA1MTY5MCwgNTE2OTQsIDUxNjk4LCA1MTcwMiwgNTE3MDYsIDUxNzEwLCAKLSAgICA1MTcxNCwgNTE3MTgsIDUxNzIyLCA1MTcyNiwgNTE3MzAsIDUxNzM0LCA1MTczOCwgNTE3NDIsIDUxNzQ2LCA1MTc1MCwgCi0gICAgNTE3NTQsIDUxNzU4LCA1MTc2MiwgNTE3NjYsIDUxNzcwLCA1MTc3NCwgNTE3NzgsIDUxNzgyLCA1MTc4NiwgNTE3OTAsIAotICAgIDUxNzk0LCA1MTc5OCwgNTE4MDIsIDUxODA2LCA1MTgxMCwgNTE4MTQsIDUxODE4LCA1MTgyMiwgNTE4MjYsIDUxODMwLCAKLSAgICA1MTgzNCwgNTE4MzgsIDUxODQyLCA1MTg0NiwgNTE4NTAsIDUxODU0LCA1MTg1OCwgNTE4NjIsIDUxODY2LCA1MTg3MCwgCi0gICAgNTE4NzQsIDUxODc4LCA1MTg4MiwgNTE4ODYsIDUxODkwLCA1MTg5NCwgNTE4OTgsIDUxOTAyLCA1MTkwNiwgNTE5MTAsIAotICAgIDUxOTE0LCA1MTkxOCwgNTE5MjIsIDUxOTI2LCA1MTkzMCwgNTE5MzQsIDUxOTM4LCA1MTk0MiwgNTE5NDYsIDUxOTUwLCAKLSAgICA1MTk1NCwgNTE5NTgsIDUxOTYyLCA1MTk2NiwgNTE5NzAsIDUxOTc0LCA1MTk3OCwgNTE5ODIsIDUxOTg2LCA1MTk5MCwgCi0gICAgNTE5OTQsIDUyMDAxLCA1MjAwOSwgNTIwMTUsIDUyMDIxLCA1MjAyOCwgNTIwMzUsIDUyMDQxLCA1MjA0NywgNTIwNTMsIAotICAgIDUyMDU5LCA1MjA2MywgNTIwNjcsIDUyMDcyLCA1MjA3NywgNTIwODMsIDUyMDg5LCA1MjA5NywgNTIxMDQsIDUyMTA5LCAKLSAgICA1MjExNCwgNTIxMjIsIDUyMTMxLCA1MjEzOCwgNTIxNDgsIDUyMTU5LCA1MjE2MiwgNTIxNjUsIDUyMTY5LCA1MjE3MywgCi0gICAgNTIxODAsIDUyMTg3LCA1MjE5OCwgNTIyMDksIDUyMjE4LCA1MjIyNywgNTIyMzMsIDUyMjM5LCA1MjI0NiwgNTIyNTMsIAotICAgIDUyMjYyLCA1MjI3MiwgNTIyODMsIDUyMjkzLCA1MjMwMywgNTIzMTMsIDUyMzI0LCA1MjMzNSwgNTIzNDUsIDUyMzU2LCAKLSAgICA1MjM2NiwgNTIzNzYsIDUyMzg1LCA1MjM5NSwgNTI0MDUsIDUyNDE1LCA1MjQyNSwgNTI0MzIsIDUyNDM5LCA1MjQ0NiwgCi0gICAgNTI0NTMsIDUyNDYzLCA1MjQ3MywgNTI0ODEsIDUyNDg5LCA1MjQ5NiwgNTI1MDMsIDUyNTEwLCA1MjUxNywgNTI1MjQsIAotICAgIDUyNTI5LCA1MjUzNCwgNTI1NDAsIDUyNTQ4LCA1MjU1NywgNTI1NjUsIDUyNTczLCA1MjU4MSwgNTI1ODksIDUyNTk3LCAKLSAgICA1MjYwNSwgNTI2MTMsIDUyNjIxLCA1MjYzMCwgNTI2MzksIDUyNjQ4LCA1MjY1NywgNTI2NjYsIDUyNjc1LCA1MjY4NCwgCi0gICAgNTI2OTMsIDUyNzAyLCA1MjcxMSwgNTI3MjAsIDUyNzI5LCA1MjczOCwgNTI3NDcsIDUyNzU2LCA1Mjc2NSwgNTI3NzksIAotICAgIDUyNzk0LCA1MjgwOCwgNTI4MjMsIDUyODM3LCA1Mjg1MSwgNTI4NjUsIDUyODc5LCA1Mjg4OSwgNTI5MDAsIDUyOTEwLCAKLSAgICA1MjkyMSwgNTI5MzYsIDUyOTUxLCA1Mjk1OSwgNTI5NjUsIDUyOTcyLCA1Mjk3OSwgNTI5ODYsIDUyOTkzLCA1Mjk5OCwgCi0gICAgNTMwMDQsIDUzMDA5LCA1MzAxNCwgNTMwMjAsIDUzMDI1LCA1MzAzMCwgNTMwMzUsIDUzMDQwLCA1MzA0NSwgNTMwNTIsIAotICAgIDUzMDU4LCA1MzA2NiwgNTMwNzEsIDUzMDc2LCA1MzA4MCwgNTMwODQsIDUzMDkyLCA1MzEwMCwgNTMxMDgsIDUzMTE2LCAKLSAgICA1MzEyMywgNTMxMzAsIDUzMTQzLCA1MzE1NiwgNTMxNjksIDUzMTgyLCA1MzE5MCwgNTMxOTgsIDUzMjA0LCA1MzIxMCwgCi0gICAgNTMyMTcsIDUzMjI0LCA1MzIzMSwgNTMyMzgsIDUzMjQyLCA1MzI0NywgNTMyNTUsIDUzMjYzLCA1MzI3MSwgNTMyNzgsIAotICAgIDUzMjgyLCA1MzI5MCwgNTMyOTgsIDUzMzAyLCA1MzMwNiwgNTMzMTEsIDUzMzE4LCA1MzMyNiwgNTMzMzQsIDUzMzUzLCAKLSAgICA1MzM3MiwgNTMzOTEsIDUzNDEwLCA1MzQyOSwgNTM0NDgsIDUzNDY3LCA1MzQ4NiwgNTM0OTIsIDUzNDk5LCA1MzUwOCwgCi0gICAgNTM1MTYsIDUzNTI0LCA1MzUzMCwgNTM1MzMsIDUzNTM2LCA1MzU0MSwgNTM1NDQsIDUzNTY0LCA1MzU3MSwgNTM1NzcsIAotICAgIDUzNTgzLCA1MzU4NywgNTM1OTAsIDUzNTkzLCA1MzU5NiwgNTM2MDgsIDUzNjIyLCA1MzYyOSwgNTM2MzYsIDUzNjM5LCAKLSAgICA1MzY0MywgNTM2NDYsIDUzNjUxLCA1MzY1NiwgNTM2NjEsIDUzNjY3LCA1MzY3NiwgNTM2ODMsIDUzNjkwLCA1MzY5OCwgCi0gICAgNTM3MDUsIDUzNzEyLCA1MzcxNSwgNTM3MjEsIDUzNzI3LCA1MzczMCwgNTM3MzMsIDUzNzM4LCA1Mzc0MywgNTM3NDksIAotICAgIDUzNzU1LCA1Mzc1OSwgNTM3NjQsIDUzNzcxLCA1Mzc3NSwgNTM3ODEsIDUzNzg1LCA1Mzc4OSwgNTM3OTcsIDUzODA5LCAKLSAgICA1MzgxOCwgNTM4MjIsIDUzODI0LCA1MzgzMywgNTM4NDIsIDUzODQ4LCA1Mzg1MSwgNTM4NTcsIDUzODYzLCA1Mzg2OCwgCi0gICAgNTM4NzMsIDUzODc4LCA1Mzg4MywgNTM4ODgsIDUzODkzLCA1Mzg5NSwgNTM5MDEsIDUzOTA2LCA1MzkxNCwgNTM5MTgsIAotICAgIDUzOTI0LCA1MzkyNywgNTM5MzEsIDUzOTM4LCA1Mzk0NSwgNTM5NDcsIDUzOTQ5LCA1Mzk1NSwgNTM5NjEsIDUzOTY3LCAKLSAgICA1Mzk3NiwgNTM5ODUsIDUzOTkyLCA1Mzk5OSwgNTQwMDUsIDU0MDEyLCA1NDAxNywgNTQwMjIsIDU0MDI3LCA1NDAzMywgCi0gICAgNTQwMzksIDU0MDQ0LCA1NDA1MSwgNTQwNTUsIDU0MDU5LCA1NDA3MiwgNTQwODUsIDU0MDk3LCA1NDEwNiwgNTQxMTIsIAotICAgIDU0MTE5LCA1NDEyNCwgNTQxMjksIDU0MTM0LCA1NDEzOSwgNTQxNDQsIDU0MTQ2LCA1NDE1MywgNTQxNjEsIDU0MTY5LCAKLSAgICA1NDE3NywgNTQxODQsIDU0MTkyLCA1NDE5OCwgNTQyMDMsIDU0MjA5LCA1NDIxNSwgNTQyMjEsIDU0MjI4LCA1NDIzNCwgCi0gICAgNTQyNDIsIDU0MjUwLCA1NDI1OCwgNTQyNjYsIDU0Mjc0LCA1NDI4MCwgNTQyODYsIDU0Mjk1LCA1NDI5OSwgNTQzMDgsIAotICAgIDU0MzE3LCA1NDMyNiwgNTQzMzQsIDU0MzM4LCA1NDM0NCwgNTQzNTEsIDU0MzU4LCA1NDM2MiwgNTQzNjgsIDU0Mzc2LCAKLSAgICA1NDM4MiwgNTQzODcsIDU0MzkzLCA1NDM5OCwgNTQ0MDMsIDU0NDEwLCA1NDQxNywgNTQ0MjIsIDU0NDI3LCA1NDQzNSwgCi0gICAgNTQ0NDMsIDU0NDUzLCA1NDQ2MywgNTQ0NzAsIDU0NDc3LCA1NDQ4MSwgNTQ0ODUsIDU0NDk3LCA1NDUwMywgNTQ1MTAsIAotICAgIDU0NTE1LCA1NDUyMCwgNTQ1MjcsIDU0NTM0LCA1NDU0MCwgNTQ1NDYsIDU0NTU2LCA1NDU2MywgNTQ1NzEsIDU0NTc5LCAKLSAgICA1NDU4OCwgNTQ1OTUsIDU0NjAxLCA1NDYwOCwgNTQ2MTQsIDU0NjIyLCA1NDYzMCwgNTQ2MzgsIDU0NjQ2LCA1NDY1MiwgCi0gICAgNTQ2NTcsIDU0NjY3LCA1NDY3OCwgNTQ2ODUsIDU0Njk0LCA1NDcwMCwgNTQ3MDUsIDU0NzEwLCA1NDcyMCwgNTQ3MjcsIAotICAgIDU0NzMzLCA1NDczOSwgNTQ3NDcsIDU0NzUyLCA1NDc1OSwgNTQ3NjYsIDU0Nzc3LCA1NDc4NCwgNTQ3OTEsIDU0Nzk4LCAKLSAgICA1NDgwNSwgNTQ4MTIsIDU0ODIwLCA1NDgyOCwgNTQ4NDEsIDU0ODU0LCA1NDg2NiwgNTQ4NzgsIDU0ODkyLCA1NDkwNiwgCi0gICAgNTQ5MTIsIDU0OTE4LCA1NDkyNywgNTQ5MzYsIDU0OTQzLCA1NDk1MCwgNTQ5NTksIDU0OTY4LCA1NDk3NywgNTQ5ODYsIAotICAgIDU0OTk0LCA1NTAwMiwgNTUwMTIsIDU1MDIyLCA1NTAzNiwgNTUwNTAsIDU1MDU5LCA1NTA2OCwgNTUwODEsIDU1MDk0LCAKLSAgICA1NTEwMywgNTUxMTIsIDU1MTIzLCA1NTEzNCwgNTUxNDAsIDU1MTQ2LCA1NTE1NSwgNTUxNjQsIDU1MTY5LCA1NTE3NCwgCi0gICAgNTUxODIsIDU1MTg4LCA1NTE5NCwgNTUyMDIsIDU1MjEwLCA1NTIyMywgNTUyMzYsIDU1MjQwLCA1NTI0NCwgNTUyNTIsIAotICAgIDU1MjYwLCA1NTI2NywgNTUyNzUsIDU1MjgzLCA1NTI5MiwgNTUzMDEsIDU1MzA3LCA1NTMxMywgNTUzMjAsIDU1MzI3LCAKLSAgICA1NTMzNCwgNTUzNDEsIDU1MzUwLCA1NTM1OSwgNTUzNjIsIDU1MzY1LCA1NTM3MCwgNTUzNzUsIDU1MzgxLCA1NTM4NywgCi0gICAgNTUzOTQsIDU1NDAxLCA1NTQxMiwgNTU0MjMsIDU1NDMwLCA1NTQzNywgNTU0NDUsIDU1NDUzLCA1NTQ2MSwgNTU0NjksIAotICAgIDU1NDc3LCA1NTQ4NSwgNTU0OTEsIDU1NDk3LCA1NTUwMSwgNTU1MDUsIDU1NTEzLCA1NTUyMSwgNTU1MjYsIDU1NTMxLCAKLSAgICA1NTUzNiwgNTU1NDEsIDU1NTQ3LCA1NTU2MSwgNTU1NjgsIDU1NTc1LCA1NTU3OSwgNTU1ODEsIDU1NTgzLCA1NTU4OCwgCi0gICAgNTU1OTMsIDU1NTk4LCA1NTYwMiwgNTU2MTAsIDU1NjE3LCA1NTYyNCwgNTU2MzIsIDU1NjQ0LCA1NTY1MiwgNTU2NjAsIAotICAgIDU1NjcxLCA1NTY3NSwgNTU2NzksIDU1Njg1LCA1NTY5MywgNTU3MDYsIDU1NzEzLCA1NTcyMCwgNTU3MjcsIDU1NzMzLCAKLSAgICA1NTc0MCwgNTU3NDksIDU1NzU4LCA1NTc2NCwgNTU3NzAsIDU1Nzc2LCA1NTc4NiwgNTU3OTYsIDU1ODA0LCA1NTgxMywgCi0gICAgNTU4MTgsIDU1ODIxLCA1NTgyNiwgNTU4MzEsIDU1ODM2LCA1NTg0MiwgNTU4NDgsIDU1ODUyLCA1NTg1NSwgNTU4NTgsIAotICAgIDU1ODYxLCA1NTg2NiwgNTU4NzEsIDU1ODc3LCA1NTg4MywgNTU4ODcsIDU1ODkxLCA1NTg5OCwgNTU5MDUsIDU1OTEyLCAKLSAgICA1NTkxOSwgNTU5MjYsIDU1OTMzLCA1NTk0MywgNTU5NTMsIDU1OTYwLCA1NTk2NywgNTU5NzUsIDU1OTgzLCA1NTk4NywgCi0gICAgNTU5OTIsIDU1OTk3LCA1NjAwMywgNTYwMDksIDU2MDEyLCA1NjAxNSwgNTYwMTgsIDU2MDIxLCA1NjAyNiwgNTYwMzEsIAotICAgIDU2MDM2LCA1NjA0MSwgNTYwNDYsIDU2MDUxLCA1NjA1NSwgNTYwNTksIDU2MDYzLCA1NjA2OCwgNTYwNzMsIDU2MDc3LCAKLSAgICA1NjA4MSwgNTYwODcsIDU2MDkxLCA1NjA5NywgNTYxMDIsIDU2MTA5LCA1NjExNywgNTYxMjQsIDU2MTMyLCA1NjEzOSwgCi0gICAgNTYxNDcsIDU2MTU2LCA1NjE2MywgNTYxNzMsIDU2MTg0LCA1NjE5MCwgNTYxOTksIDU2MjA1LCA1NjIxNCwgNTYyMjMsIAotICAgIDU2MjI5LCA1NjIzNSwgNTYyMzksIDU2MjQzLCA1NjI1MiwgNTYyNjEsIDU2MjY4LCA1NjI3NSwgNTYyODQsIDU2MjkzLCAKLSAgICA1NjI5OSwgNTYzMDUsIDU2MzEyLCA1NjMxNywgNTYzMjEsIDU2MzI1LCA1NjMzMCwgNTYzMzUsIDU2MzQwLCA1NjM0OCwgCi0gICAgNTYzNTYsIDU2MzU5LCA1NjM2MywgNTYzNzIsIDU2MzgyLCA1NjM5MSwgNTY0MDEsIDU2NDEyLCA1NjQyNSwgNTY0MjksIAotICAgIDU2NDMzLCA1NjQzNywgNTY0NDEsIDU2NDQ2LCA1NjQ1MSwgNTY0NTcsIDU2NDYzLCA1NjQ3MCwgNTY0NzcsIDU2NDgzLCAKLSAgICA1NjQ4OSwgNTY0OTUsIDU2NTAxLCA1NjUwOSwgNTY1MTcsIDU2NTI0LCA1NjUzMSwgNTY1MzgsIDAsIDAsIDU2NTQ1LCAKLSAgICA1NjU1NCwgNTY1NjMsIDU2NTczLCA1NjU4MywgNTY1OTIsIDU2NjAxLCA1NjYxMCwgNTY2MTksIDU2NjI1LCA1NjYzMCwgCi0gICAgNTY2MzksIDU2NjQ5LCA1NjY1OCwgNTY2NjgsIDU2Njc1LCA1NjY4MiwgNTY2ODksIDU2Njk2LCA1NjcwMSwgNTY3MDYsIAotICAgIDU2NzExLCA1NjcxNiwgNTY3MjQsIDU2NzMzLCA1Njc0MSwgNTY3NTAsIDU2NzU0LCA1Njc1OCwgNTY3NjIsIDU2NzY2LCAKLSAgICA1Njc3NiwgMCwgMCwgNTY3NzksIDU2Nzg4LCA1Njc5NywgNTY4MDYsIDU2ODE1LCA1NjgyMSwgNTY4MjcsIDU2ODMzLCAKLSAgICA1NjgzOSwgNTY4NDksIDU2ODU5LCA1Njg2OSwgNTY4NzksIDU2ODg5LCA1Njg5OSwgNTY5MDksIDU2OTE5LCA1NjkyNiwgCi0gICAgNTY5MzMsIDU2OTQwLCA1Njk0NywgNTY5NTQsIDU2OTYxLCA1Njk2OCwgNTY5NzUsIDU2OTgxLCA1Njk4NywgNTY5OTMsIAotICAgIDU2OTk5LCA1NzAwNSwgNTcwMTEsIDU3MDE3LCA1NzAyMywgNTcwMzQsIDAsIDAsIDAsIDU3MDQ0LCA1NzA1MSwgNTcwNTQsIAotICAgIDU3MDU4LCA1NzA2MiwgNTcwNjcsIDU3MDcyLCA1NzA3NywgNTcwODAsIDU3MDg5LCA1NzA5OCwgNTcxMDcsIDAsIDU3MTE2LCAKLSAgICA1NzEyMiwgNTcxMjgsIDU3MTM2LCA1NzE0NiwgNTcxNTMsIDU3MTYyLCA1NzE2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxNzAsIDU3MTc5LCAKLSAgICA1NzE4OCwgNTcxOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MjA2LCAKLSAgICA1NzIxMSwgNTcyMTYsIDU3MjIxLCA1NzIyNiwgNTcyMzEsIDU3MjM2LCA1NzI0MSwgNTcyNDYsIDU3MjUxLCA1NzI1NiwgCi0gICAgNTcyNjIsIDU3MjY2LCA1NzI3MSwgNTcyNzYsIDU3MjgxLCA1NzI4NiwgNTcyOTEsIDU3Mjk2LCA1NzMwMSwgNTczMDYsIAotICAgIDU3MzExLCA1NzMxNiwgNTczMjEsIDU3MzI2LCA1NzMzMSwgNTczMzYsIDU3MzQxLCA1NzM0NiwgNTczNTEsIDU3MzU2LCAKLSAgICA1NzM2MSwgNTczNjYsIDU3MzcxLCA1NzM3NiwgNTczODIsIDU3Mzg3LCA1NzM5MywgNTc0MDIsIDU3NDA3LCA1NzQxNSwgCi0gICAgNTc0MjIsIDU3NDMxLCA1NzQzNiwgNTc0NDEsIDU3NDQ2LCA1NzQ1MiwgMCwgNTc0NTksIDU3NDY0LCA1NzQ2OSwgNTc0NzQsIAotICAgIDU3NDc5LCA1NzQ4NCwgNTc0ODksIDU3NDk0LCA1NzQ5OSwgNTc1MDQsIDU3NTA5LCA1NzUxNSwgNTc1MTksIDU3NTI0LCAKLSAgICA1NzUyOSwgNTc1MzQsIDU3NTM5LCA1NzU0NCwgNTc1NDksIDU3NTU0LCA1NzU1OSwgNTc1NjQsIDU3NTY5LCA1NzU3NCwgCi0gICAgNTc1NzksIDU3NTg0LCA1NzU4OSwgNTc1OTQsIDU3NTk5LCA1NzYwNCwgNTc2MDksIDU3NjE0LCA1NzYxOSwgNTc2MjQsIAotICAgIDU3NjI5LCA1NzYzNSwgNTc2NDAsIDU3NjQ2LCA1NzY1NSwgNTc2NjAsIDU3NjY4LCA1NzY3NSwgNTc2ODQsIDU3Njg5LCAKLSAgICA1NzY5NCwgNTc2OTksIDU3NzA1LCAwLCA1NzcxMiwgNTc3MjAsIDU3NzI4LCA1NzczNywgNTc3NDQsIDU3NzUyLCA1Nzc1OCwgCi0gICAgNTc3NjcsIDU3Nzc1LCA1Nzc4MywgNTc3OTEsIDU3Nzk5LCA1NzgwNywgNTc4MTUsIDU3ODIwLCA1NzgyNywgNTc4MzMsIAotICAgIDU3ODQwLCA1Nzg0OCwgNTc4NTUsIDU3ODYyLCA1Nzg3MCwgNTc4NzYsIDU3ODgyLCA1Nzg4OSwgNTc4OTYsIDU3OTA2LCAKLSAgICA1NzkxNiwgNTc5MjMsIDU3OTMwLCA1NzkzNSwgNTc5NDUsIDU3OTU1LCA1Nzk2MCwgNTc5NjUsIDU3OTcwLCA1Nzk3NSwgCi0gICAgNTc5ODAsIDU3OTg1LCA1Nzk5MCwgNTc5OTUsIDU4MDAwLCA1ODAwNSwgNTgwMTAsIDU4MDE1LCA1ODAyMCwgNTgwMjUsIAotICAgIDU4MDMwLCA1ODAzNSwgNTgwNDAsIDU4MDQ1LCA1ODA1MCwgNTgwNTUsIDU4MDYwLCA1ODA2NSwgNTgwNzAsIDU4MDc1LCAKLSAgICA1ODA4MCwgNTgwODUsIDU4MDkwLCA1ODA5NSwgNTgxMDAsIDU4MTA1LCA1ODEwOSwgNTgxMTMsIDU4MTE4LCA1ODEyMywgCi0gICAgNTgxMjgsIDU4MTMzLCA1ODEzOCwgNTgxNDMsIDU4MTQ4LCA1ODE1MywgNTgxNTgsIDU4MTYzLCA1ODE2OCwgNTgxNzMsIAotICAgIDU4MTc4LCA1ODE4MywgNTgxODgsIDU4MTkzLCA1ODE5OCwgNTgyMDMsIDU4MjEwLCA1ODIxNywgNTgyMjQsIDU4MjMxLCAKLSAgICA1ODIzOCwgNTgyNDUsIDU4MjUyLCA1ODI1OSwgNTgyNjYsIDU4MjczLCA1ODI4MCwgNTgyODcsIDU4Mjk0LCA1ODMwMSwgCi0gICAgNTgzMDYsIDU4MzExLCA1ODMxOCwgNTgzMjUsIDU4MzMyLCA1ODMzOSwgNTgzNDYsIDU4MzUzLCA1ODM2MCwgNTgzNjcsIAotICAgIDU4Mzc0LCA1ODM4MSwgNTgzODgsIDU4Mzk1LCA1ODQwMSwgNTg0MDcsIDU4NDEzLCA1ODQxOSwgNTg0MjYsIDU4NDMzLCAKLSAgICA1ODQ0MCwgNTg0NDcsIDU4NDU0LCA1ODQ2MSwgNTg0NjgsIDU4NDc1LCA1ODQ4MiwgNTg0ODksIDU4NDk3LCA1ODUwNSwgCi0gICAgNTg1MTMsIDU4NTIxLCA1ODUyOSwgNTg1MzcsIDU4NTQ1LCA1ODU1MywgNTg1NTcsIDU4NTYzLCA1ODU2OSwgNTg1NzMsIAotICAgIDU4NTc5LCA1ODU4NSwgNTg1OTEsIDU4NTk4LCA1ODYwNSwgNTg2MTIsIDU4NjE5LCA1ODYyNCwgNTg2MzAsIDU4NjM2LCAKLSAgICA1ODY0MywgMCwgMCwgMCwgMCwgMCwgNTg2NTAsIDU4NjU4LCA1ODY2NywgNTg2NzYsIDU4Njg0LCA1ODY5MCwgNTg2OTUsIAotICAgIDU4NzAwLCA1ODcwNSwgNTg3MTAsIDU4NzE1LCA1ODcyMCwgNTg3MjUsIDU4NzMwLCA1ODczNSwgNTg3NDAsIDU4NzQ1LCAKLSAgICA1ODc1MCwgNTg3NTUsIDU4NzYwLCA1ODc2NSwgNTg3NzAsIDU4Nzc1LCA1ODc4MCwgNTg3ODUsIDU4NzkwLCA1ODc5NSwgCi0gICAgNTg4MDAsIDU4ODA1LCA1ODgxMCwgNTg4MTUsIDU4ODIwLCA1ODgyNSwgNTg4MzAsIDU4ODM1LCA1ODg0MCwgNTg4NDUsIAotICAgIDU4ODUwLCA1ODg1NSwgNTg4NjAsIDU4ODY1LCA1ODg3MCwgNTg4NzUsIDU4ODgwLCA1ODg4NSwgMCwgNTg4OTAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU4ODk1LCAwLCAwLCA1ODkwMCwgNTg5MDQsIDU4OTA5LCA1ODkxNCwgNTg5MTksIDU4OTI0LCA1ODkzMywgCi0gICAgNTg5MzgsIDU4OTQzLCA1ODk0OCwgNTg5NTMsIDU4OTU4LCA1ODk2MywgNTg5NjgsIDU4OTczLCA1ODk4MCwgNTg5ODUsIAotICAgIDU4OTkwLCA1ODk5OSwgNTkwMDYsIDU5MDExLCA1OTAxNiwgNTkwMjEsIDU5MDI4LCA1OTAzMywgNTkwNDAsIDU5MDQ1LCAKLSAgICA1OTA1MCwgNTkwNTcsIDU5MDY0LCA1OTA2OSwgNTkwNzQsIDU5MDc5LCA1OTA4NiwgNTkwOTMsIDU5MDk4LCA1OTEwMywgCi0gICAgNTkxMDgsIDU5MTEzLCA1OTExOCwgNTkxMjUsIDU5MTMyLCA1OTEzNywgNTkxNDIsIDU5MTQ3LCA1OTE1MiwgNTkxNTcsIAotICAgIDU5MTYyLCA1OTE2NywgNTkxNzIsIDU5MTc3LCA1OTE4MiwgNTkxODcsIDU5MTk0LCA1OTE5OSwgNTkyMDQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU5MjA5LCA1OTIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTkyMjEsIDU5MjI2LCA1OTIzMCwgNTkyMzQsIDU5MjM4LCA1OTI0MiwgNTkyNDYsIDU5MjUwLCA1OTI1NCwgNTkyNTgsIAotICAgIDU5MjYyLCA1OTI2NiwgNTkyNzIsIDU5Mjc2LCA1OTI4MCwgNTkyODQsIDU5Mjg4LCA1OTI5MiwgNTkyOTYsIDU5MzAwLCAKLSAgICA1OTMwNCwgNTkzMDgsIDU5MzEyLCA1OTMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkzMjAsIDU5MzI0LCAKLSAgICA1OTMyOCwgNTkzMzIsIDU5MzM2LCA1OTM0MCwgNTkzNDQsIDAsIDU5MzQ4LCA1OTM1MiwgNTkzNTYsIDU5MzYwLCA1OTM2NCwgCi0gICAgNTkzNjgsIDU5MzcyLCAwLCA1OTM3NiwgNTkzODAsIDU5Mzg0LCA1OTM4OCwgNTkzOTIsIDU5Mzk2LCA1OTQwMCwgMCwgCi0gICAgNTk0MDQsIDU5NDA4LCA1OTQxMiwgNTk0MTYsIDU5NDIwLCA1OTQyNCwgNTk0MjgsIDAsIDU5NDMyLCA1OTQzNiwgNTk0NDAsIAotICAgIDU5NDQ0LCA1OTQ0OCwgNTk0NTIsIDU5NDU2LCAwLCA1OTQ2MCwgNTk0NjQsIDU5NDY4LCA1OTQ3MiwgNTk0NzYsIDU5NDgwLCAKLSAgICA1OTQ4NCwgMCwgNTk0ODgsIDU5NDkyLCA1OTQ5NiwgNTk1MDAsIDU5NTA0LCA1OTUwOCwgNTk1MTIsIDAsIDU5NTE2LCAKLSAgICA1OTUyMCwgNTk1MjQsIDU5NTI4LCA1OTUzMiwgNTk1MzYsIDU5NTQwLCAwLCA1OTU0NCwgNTk1NDksIDU5NTU0LCA1OTU1OSwgCi0gICAgNTk1NjQsIDU5NTY5LCA1OTU3NCwgNTk1NzgsIDU5NTgzLCA1OTU4OCwgNTk1OTMsIDU5NTk3LCA1OTYwMiwgNTk2MDcsIAotICAgIDU5NjEyLCA1OTYxNywgNTk2MjEsIDU5NjI2LCA1OTYzMSwgNTk2MzYsIDU5NjQxLCA1OTY0NiwgNTk2NTEsIDU5NjU1LCAKLSAgICA1OTY2MCwgNTk2NjUsIDU5NjcyLCA1OTY3NywgNTk2ODIsIDU5Njg4LCA1OTY5NSwgNTk3MDIsIDU5NzExLCA1OTcxOCwgCi0gICAgNTk3MjcsIDU5NzMxLCA1OTczNSwgNTk3NDEsIDU5NzQ3LCA1OTc1MywgNTk3NjEsIDU5NzY3LCA1OTc3MSwgNTk3NzUsIAotICAgIDU5Nzc5LCA1OTc4NSwgNTk3OTEsIDU5Nzk1LCA1OTc5NywgNTk4MDEsIDU5ODA3LCA1OTgwOSwgNTk4MTMsIDU5ODE2LCAKLSAgICA1OTgxOSwgNTk4MjUsIDU5ODMwLCA1OTgzNCwgNTk4MzgsIDU5ODQzLCA1OTg0OSwgNTk4NTQsIDU5ODU5LCA1OTg2NCwgCi0gICAgNTk4NjksIDU5ODc2LCA1OTg4MywgNTk4ODgsIDU5ODkzLCA1OTg5OCwgNTk5MDMsIDU5OTA4LCA1OTkxMywgNTk5MTcsIAotICAgIDU5OTIxLCA1OTkyOCwgNTk5MzUsIDU5OTQxLCA1OTk0NSwgNTk5NTAsIDU5OTUzLCA1OTk1NywgNTk5NjQsIDU5OTY4LCAKLSAgICA1OTk3MiwgNTk5NzYsIDU5OTgwLCA1OTk4NiwgNTk5OTIsIDU5OTk2LCA2MDAwMiwgNjAwMDYsIDYwMDEwLCA2MDAxNiwgCi0gICAgNjAwMjEsIDYwMDI2LCA2MDAyOCwgNjAwMzEsIDYwMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MDA0MSwgNjAwNDUsIDYwMDQ5LCA2MDA1NCwgNjAwNTksIDYwMDY0LCA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MSwgCi0gICAgNjAwODYsIDYwMDkwLCA2MDA5NCwgNjAwOTgsIDYwMTAyLCA2MDEwNywgNjAxMTIsIDYwMTE3LCA2MDEyMiwgNjAxMjYsIAotICAgIDYwMTMwLCA2MDEzNSwgNjAxNDAsIDYwMTQ1LCA2MDE1MCwgNjAxNTQsIDAsIDYwMTU4LCA2MDE2MiwgNjAxNjYsIDYwMTcwLCAKLSAgICA2MDE3NCwgNjAxNzgsIDYwMTgyLCA2MDE4NywgNjAxOTIsIDYwMTk2LCA2MDIwMSwgNjAyMDYsIDYwMjE1LCA2MDIxOSwgCi0gICAgNjAyMjMsIDYwMjI3LCA2MDIzNCwgNjAyMzgsIDYwMjQzLCA2MDI0OCwgNjAyNTIsIDYwMjU2LCA2MDI2MiwgNjAyNjcsIAotICAgIDYwMjcyLCA2MDI3NywgNjAyODIsIDYwMjg2LCA2MDI5MCwgNjAyOTQsIDYwMjk4LCA2MDMwMiwgNjAzMDcsIDYwMzEyLCAKLSAgICA2MDMxNiwgNjAzMjAsIDYwMzI1LCA2MDMzMCwgNjAzMzUsIDYwMzM5LCA2MDM0MywgNjAzNDgsIDYwMzUzLCA2MDM1OSwgCi0gICAgNjAzNjUsIDYwMzY5LCA2MDM3NSwgNjAzODEsIDYwMzg1LCA2MDM5MSwgNjAzOTcsIDYwNDAyLCA2MDQwNywgNjA0MTEsIAotICAgIDYwNDE3LCA2MDQyMSwgNjA0MjUsIDYwNDMxLCA2MDQzNywgNjA0NDIsIDYwNDQ3LCA2MDQ1MSwgNjA0NTUsIDYwNDYzLCAKLSAgICA2MDQ2OSwgNjA0NzUsIDYwNDgxLCA2MDQ4NiwgNjA0OTEsIDYwNDk2LCA2MDUwMiwgNjA1MDYsIDYwNTEyLCA2MDUxNiwgCi0gICAgNjA1MjAsIDYwNTI2LCA2MDUzMiwgNjA1MzgsIDYwNTQ0LCA2MDU1MCwgNjA1NTYsIDYwNTYyLCA2MDU2OCwgNjA1NzQsIAotICAgIDYwNTgwLCA2MDU4NiwgNjA1OTIsIDYwNTk2LCA2MDYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjA2MDgsIDYwNjExLCA2MDYxNSwgNjA2MTksIDYwNjIzLCA2MDYyNywgNjA2MzAsIDYwNjMzLCA2MDYzNywgNjA2NDEsIAotICAgIDYwNjQ1LCA2MDY0OSwgNjA2NTIsIDYwNjU3LCA2MDY2MSwgNjA2NjUsIDYwNjY5LCA2MDY3NCwgNjA2NzgsIDYwNjgyLCAKLSAgICA2MDY4NiwgNjA2OTAsIDYwNjk2LCA2MDcwMiwgNjA3MDYsIDYwNzEwLCA2MDcxNCwgNjA3MTgsIDYwNzIyLCA2MDcyNiwgCi0gICAgNjA3MzAsIDYwNzM0LCA2MDczOCwgNjA3NDIsIDYwNzQ2LCA2MDc1MiwgNjA3NTYsIDYwNzYwLCA2MDc2NCwgNjA3NjgsIAotICAgIDYwNzcyLCA2MDc3NiwgNjA3ODAsIDYwNzg0LCA2MDc4OCwgNjA3OTIsIDYwNzk2LCA2MDgwMCwgNjA4MDQsIDYwODA4LCAKLSAgICA2MDgxMiwgNjA4MTYsIDYwODIyLCA2MDgyOCwgNjA4MzMsIDYwODM4LCA2MDg0MiwgNjA4NDYsIDYwODUwLCA2MDg1NCwgCi0gICAgNjA4NTgsIDYwODYyLCA2MDg2NiwgNjA4NzAsIDYwODc0LCA2MDg3OCwgNjA4ODIsIDYwODg2LCA2MDg5MCwgNjA4OTQsIAotICAgIDYwODk4LCA2MDkwMiwgNjA5MDYsIDYwOTEwLCA2MDkxNCwgNjA5MTgsIDYwOTIyLCA2MDkyNiwgNjA5MzAsIDYwOTM0LCAKLSAgICA2MDk0MCwgNjA5NDQsIDYwOTQ4LCA2MDk1MiwgNjA5NTYsIDYwOTYwLCA2MDk2NCwgNjA5NjgsIDYwOTcyLCA2MDk3NywgCi0gICAgNjA5ODQsIDYwOTg4LCA2MDk5MiwgNjA5OTYsIDYxMDAwLCA2MTAwNCwgNjEwMDgsIDYxMDEyLCA2MTAxNiwgNjEwMjAsIAotICAgIDYxMDI0LCA2MTAyOCwgNjEwMzIsIDYxMDM5LCA2MTA0MywgNjEwNDksIDYxMDUzLCA2MTA1NywgNjEwNjEsIDYxMDY1LCAKLSAgICA2MTA2OSwgNjEwNzIsIDYxMDc2LCA2MTA4MCwgNjEwODQsIDYxMDg4LCA2MTA5MiwgNjEwOTYsIDYxMTAwLCA2MTEwNCwgCi0gICAgNjExMDgsIDYxMTEyLCA2MTExNiwgNjExMjAsIDYxMTI0LCA2MTEyOCwgNjExMzIsIDYxMTM2LCA2MTE0MCwgNjExNDQsIAotICAgIDYxMTQ4LCA2MTE1MiwgNjExNTYsIDYxMTYwLCA2MTE2NCwgNjExNjgsIDYxMTcyLCA2MTE3NiwgNjExODAsIDYxMTg0LCAKLSAgICA2MTE4OCwgNjExOTIsIDYxMTk2LCA2MTIwMCwgNjEyMDYsIDYxMjEwLCA2MTIxNCwgNjEyMTgsIDYxMjIyLCA2MTIyNiwgCi0gICAgNjEyMzAsIDYxMjM0LCA2MTIzOCwgNjEyNDIsIDYxMjQ2LCA2MTI1MCwgNjEyNTQsIDYxMjU4LCA2MTI2MiwgNjEyNjYsIAotICAgIDYxMjcwLCA2MTI3NCwgNjEyNzgsIDYxMjgyLCA2MTI4NiwgNjEyOTAsIDYxMjk0LCA2MTI5OCwgNjEzMDIsIDYxMzA2LCAKLSAgICA2MTMxMCwgNjEzMTQsIDYxMzIyLCA2MTMyNiwgNjEzMzAsIDYxMzM0LCA2MTMzOCwgNjEzNDIsIDYxMzQ4LCA2MTM1MiwgCi0gICAgNjEzNTYsIDYxMzYwLCA2MTM2NCwgNjEzNjgsIDYxMzcyLCA2MTM3NiwgNjEzODAsIDYxMzg0LCA2MTM4OCwgNjEzOTIsIAotICAgIDYxMzk2LCA2MTQwMCwgNjE0MDYsIDYxNDEwLCA2MTQxNCwgNjE0MTgsIDYxNDIyLCA2MTQyNiwgNjE0MzAsIDYxNDM0LCAKLSAgICA2MTQzOCwgNjE0NDIsIDYxNDQ2LCA2MTQ1MCwgNjE0NTQsIDYxNDU4LCA2MTQ2MiwgNjE0NjYsIDYxNDcwLCA2MTQ3NCwgCi0gICAgNjE0NzgsIDYxNDgyLCA2MTQ4NiwgNjE0OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNDk0LCA2MTUwMywgNjE1MTEsIDYxNTIyLCA2MTUzMiwgCi0gICAgNjE1NDAsIDYxNTQ5LCA2MTU1OCwgNjE1NjgsIDYxNTgwLCA2MTU5MiwgNjE2MDQsIDAsIDAsIDAsIDAsIDYxNjEwLCAKLSAgICA2MTYxMywgNjE2MTYsIDYxNjIxLCA2MTYyNCwgNjE2MzEsIDYxNjM1LCA2MTYzOSwgNjE2NDMsIDYxNjQ3LCA2MTY1MSwgCi0gICAgNjE2NTYsIDYxNjYxLCA2MTY2NSwgNjE2NjksIDYxNjc0LCA2MTY3OSwgNjE2ODQsIDYxNjg5LCA2MTY5MiwgNjE2OTUsIAotICAgIDYxNzAxLCA2MTcwNywgNjE3MTIsIDYxNzE3LCA2MTcyNCwgNjE3MzEsIDYxNzM1LCA2MTczOSwgNjE3NDMsIDYxNzUxLCAKLSAgICA2MTc1NywgNjE3NjQsIDYxNzY5LCA2MTc3NCwgNjE3NzksIDYxNzg0LCA2MTc4OSwgNjE3OTQsIDYxNzk5LCA2MTgwNSwgCi0gICAgNjE4MTAsIDYxODE2LCA2MTgyMSwgNjE4MjYsIDYxODMxLCA2MTgzNiwgNjE4NDIsIDYxODQ3LCA2MTg1MSwgNjE4NTcsIAotICAgIDYxODY4LCA2MTg3OCwgNjE4OTMsIDYxOTAzLCA2MTkwNywgNjE5MTcsIDYxOTIzLCA2MTkyOSwgNjE5MzUsIDYxOTQwLCAKLSAgICA2MTk0MywgNjE5NDgsIDYxOTUyLCAwLCA2MTk1OCwgNjE5NjIsIDYxOTY1LCA2MTk2OSwgNjE5NzIsIDYxOTc2LCA2MTk3OSwgCi0gICAgNjE5ODMsIDYxOTg2LCA2MTk5MCwgNjE5OTMsIDYxOTk2LCA2MjAwMCwgNjIwMDQsIDYyMDA4LCA2MjAxMiwgNjIwMTYsIAotICAgIDYyMDIwLCA2MjAyNCwgNjIwMjgsIDYyMDMyLCA2MjAzNiwgNjIwNDAsIDYyMDQ0LCA2MjA0OCwgNjIwNTIsIDYyMDU2LCAKLSAgICA2MjA2MCwgNjIwNjQsIDYyMDY4LCA2MjA3MiwgNjIwNzYsIDYyMDgwLCA2MjA4NCwgNjIwODgsIDYyMDkzLCA2MjA5NywgCi0gICAgNjIxMDEsIDYyMTA1LCA2MjEwOSwgNjIxMTIsIDYyMTE2LCA2MjEyMCwgNjIxMjQsIDYyMTI4LCA2MjEzMiwgNjIxMzYsIAotICAgIDYyMTM5LCA2MjE0MywgNjIxNDYsIDYyMTUwLCA2MjE1NCwgNjIxNTgsIDYyMTYyLCA2MjE2NiwgNjIxNzAsIDYyMTc0LCAKLSAgICA2MjE3OCwgNjIxODIsIDYyMTg2LCA2MjE5MCwgNjIxOTQsIDYyMTk3LCA2MjIwMSwgNjIyMDUsIDYyMjA5LCA2MjIxMywgCi0gICAgNjIyMTcsIDYyMjIwLCA2MjIyNSwgNjIyMjksIDYyMjM0LCA2MjIzOCwgNjIyNDIsIDYyMjQ2LCA2MjI1MCwgNjIyNTQsIAotICAgIDYyMjU4LCA2MjI2MywgNjIyNjcsIDYyMjcxLCA2MjI3NSwgNjIyNzksIDYyMjgzLCA2MjI4NywgNjIyOTEsIDAsIDAsIAotICAgIDYyMjk2LCA2MjMwNCwgNjIzMTIsIDYyMzE5LCA2MjMyNiwgNjIzMzAsIDYyMzM2LCA2MjM0MSwgNjIzNDYsIDYyMzUwLCAKLSAgICA2MjM1MywgNjIzNTcsIDYyMzYwLCA2MjM2NCwgNjIzNjcsIDYyMzcxLCA2MjM3NCwgNjIzNzgsIDYyMzgxLCA2MjM4NCwgCi0gICAgNjIzODgsIDYyMzkyLCA2MjM5NiwgNjI0MDAsIDYyNDA0LCA2MjQwOCwgNjI0MTIsIDYyNDE2LCA2MjQyMCwgNjI0MjQsIAotICAgIDYyNDI4LCA2MjQzMiwgNjI0MzYsIDYyNDQwLCA2MjQ0NCwgNjI0NDgsIDYyNDUyLCA2MjQ1NiwgNjI0NjAsIDYyNDY0LCAKLSAgICA2MjQ2OCwgNjI0NzIsIDYyNDc2LCA2MjQ4MSwgNjI0ODUsIDYyNDg5LCA2MjQ5MywgNjI0OTcsIDYyNTAwLCA2MjUwNCwgCi0gICAgNjI1MDgsIDYyNTEyLCA2MjUxNiwgNjI1MjAsIDYyNTI0LCA2MjUyNywgNjI1MzEsIDYyNTM0LCA2MjUzOCwgNjI1NDIsIAotICAgIDYyNTQ2LCA2MjU1MCwgNjI1NTQsIDYyNTU4LCA2MjU2MiwgNjI1NjYsIDYyNTcwLCA2MjU3NCwgNjI1NzgsIDYyNTgyLCAKLSAgICA2MjU4NSwgNjI1ODksIDYyNTkzLCA2MjU5NywgNjI2MDEsIDYyNjA1LCA2MjYwOCwgNjI2MTMsIDYyNjE3LCA2MjYyMiwgCi0gICAgNjI2MjYsIDYyNjMwLCA2MjYzNCwgNjI2MzgsIDYyNjQyLCA2MjY0NiwgNjI2NTEsIDYyNjU1LCA2MjY1OSwgNjI2NjMsIAotICAgIDYyNjY3LCA2MjY3MSwgNjI2NzUsIDYyNjc5LCA2MjY4NCwgNjI2ODgsIDYyNjkyLCA2MjY5NiwgNjI3MDAsIDYyNzA0LCAKLSAgICA2MjcxMSwgNjI3MTUsIDYyNzIxLCAwLCAwLCAwLCAwLCAwLCA2MjcyNiwgNjI3MzEsIDYyNzM2LCA2Mjc0MSwgNjI3NDYsIAotICAgIDYyNzUxLCA2Mjc1NiwgNjI3NjEsIDYyNzY1LCA2Mjc3MCwgNjI3NzUsIDYyNzgwLCA2Mjc4NSwgNjI3OTAsIDYyNzk1LCAKLSAgICA2MjgwMCwgNjI4MDUsIDYyODEwLCA2MjgxNCwgNjI4MTksIDYyODI0LCA2MjgyOCwgNjI4MzIsIDYyODM2LCA2Mjg0MCwgCi0gICAgNjI4NDUsIDYyODUwLCA2Mjg1NSwgNjI4NjAsIDYyODY1LCA2Mjg3MCwgNjI4NzUsIDYyODgwLCA2Mjg4NSwgNjI4OTAsIAotICAgIDYyODk0LCA2Mjg5OCwgNjI5MDMsIDYyOTA4LCA2MjkxMywgNjI5MTgsIDAsIDAsIDAsIDYyOTIzLCA2MjkyNywgNjI5MzEsIAotICAgIDYyOTM1LCA2MjkzOSwgNjI5NDMsIDYyOTQ3LCA2Mjk1MSwgNjI5NTUsIDYyOTU5LCA2Mjk2MywgNjI5NjcsIDYyOTcxLCAKLSAgICA2Mjk3NSwgNjI5NzksIDYyOTgzLCA2Mjk4NywgNjI5OTEsIDYyOTk1LCA2Mjk5OSwgNjMwMDMsIDYzMDA3LCA2MzAxMSwgCi0gICAgNjMwMTUsIDYzMDE5LCA2MzAyMywgNjMwMjcsIDYzMDMxLCA2MzAzNSwgNjMwMzksIDYzMDQzLCA2MzA0NiwgNjMwNTAsIAotICAgIDYzMDUzLCA2MzA1NywgNjMwNjEsIDYzMDY0LCA2MzA2OCwgNjMwNzIsIDYzMDc1LCA2MzA3OSwgNjMwODMsIDYzMDg3LCAKLSAgICA2MzA5MSwgNjMwOTQsIDYzMDk4LCA2MzEwMiwgNjMxMDYsIDYzMTEwLCA2MzExNCwgNjMxMTgsIDYzMTIxLCA2MzEyNCwgCi0gICAgNjMxMjgsIDYzMTMyLCA2MzEzNiwgNjMxNDAsIDYzMTQ0LCA2MzE0OCwgNjMxNTIsIDYzMTU2LCA2MzE2MCwgNjMxNjQsIAotICAgIDYzMTY4LCA2MzE3MiwgNjMxNzYsIDYzMTgwLCA2MzE4NCwgNjMxODgsIDYzMTkyLCA2MzE5NiwgNjMyMDAsIDYzMjA0LCAKLSAgICA2MzIwOCwgNjMyMTIsIDYzMjE2LCA2MzIyMCwgNjMyMjQsIDYzMjI4LCA2MzIzMiwgNjMyMzYsIDYzMjQwLCA2MzI0NCwgCi0gICAgNjMyNDgsIDYzMjUyLCA2MzI1NiwgNjMyNjAsIDYzMjY0LCA2MzI2OCwgNjMyNzIsIDYzMjc2LCA2MzI4MCwgNjMyODQsIAotICAgIDYzMjg4LCAwLCA2MzI5MiwgNjMyOTgsIDYzMzA0LCA2MzMwOSwgNjMzMTQsIDYzMzE5LCA2MzMyNSwgNjMzMzEsIDYzMzM2LCAKLSAgICA2MzM0MiwgNjMzNDgsIDYzMzU0LCA2MzM2MCwgNjMzNjYsIDYzMzcyLCA2MzM3OCwgNjMzODQsIDYzMzg5LCA2MzM5NCwgCi0gICAgNjMzOTksIDYzNDA0LCA2MzQwOSwgNjM0MTQsIDYzNDE5LCA2MzQyNCwgNjM0MjksIDYzNDM0LCA2MzQzOSwgNjM0NDQsIAotICAgIDYzNDQ5LCA2MzQ1NCwgNjM0NTksIDYzNDY0LCA2MzQ2OSwgNjM0NzQsIDYzNDc5LCA2MzQ4NCwgNjM0OTAsIDYzNDk2LCAKLSAgICA2MzUwMiwgNjM1MDgsIDYzNTEzLCA2MzUxOCwgMCwgMCwgMCwgMCwgMCwgNjM1MjMsIDYzNTI4LCA2MzUzMywgNjM1MzgsIAotICAgIDYzNTQzLCA2MzU0OCwgNjM1NTMsIDYzNTU4LCA2MzU2MywgNjM1NjgsIDYzNTczLCA2MzU3OCwgNjM1ODMsIDYzNTg4LCAKLSAgICA2MzU5MywgNjM1OTgsIDYzNjAzLCA2MzYwOCwgNjM2MTIsIDYzNjE3LCA2MzYyMiwgNjM2MjcsIDYzNjMyLCA2MzYzNywgCi0gICAgNjM2NDIsIDYzNjQ3LCA2MzY1MiwgNjM2NTcsIDYzNjYyLCA2MzY2NywgNjM2NzIsIDYzNjc3LCA2MzY4MiwgNjM2ODcsIAotICAgIDYzNjkyLCA2MzY5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM3MDIsIDYzNzA3LCA2MzcxMiwgCi0gICAgNjM3MTcsIDYzNzIxLCA2MzcyNiwgNjM3MzAsIDYzNzM1LCA2Mzc0MCwgNjM3NDUsIDYzNzUwLCA2Mzc1NSwgNjM3NjAsIAotICAgIDYzNzY1LCA2Mzc3MCwgNjM3NzUsIDYzNzgwLCA2Mzc4NCwgNjM3ODgsIDYzNzkyLCA2Mzc5NiwgNjM4MDAsIDYzODA0LCAKLSAgICA2MzgwOCwgNjM4MTIsIDYzODE2LCA2MzgyMCwgNjM4MjQsIDYzODI4LCA2MzgzMiwgNjM4MzYsIDYzODQxLCA2Mzg0NiwgCi0gICAgNjM4NTEsIDYzODU2LCA2Mzg2MSwgNjM4NjYsIDYzODcxLCA2Mzg3NiwgNjM4ODEsIDYzODg2LCA2Mzg5MSwgNjM4OTYsIAotICAgIDYzOTAxLCA2MzkwNiwgNjM5MTEsIDYzOTE3LCAwLCA2MzkyNCwgNjM5MjcsIDYzOTMwLCA2MzkzMywgNjM5MzYsIDYzOTM5LCAKLSAgICA2Mzk0MiwgNjM5NDYsIDYzOTQ5LCA2Mzk1MywgNjM5NTcsIDYzOTYxLCA2Mzk2NSwgNjM5NjksIDYzOTczLCA2Mzk3NywgCi0gICAgNjM5ODEsIDYzOTg1LCA2Mzk4OSwgNjM5OTMsIDYzOTk3LCA2NDAwMSwgNjQwMDUsIDY0MDA5LCA2NDAxMywgNjQwMTcsIAotICAgIDY0MDIxLCA2NDAyNSwgNjQwMjksIDY0MDMzLCA2NDAzNywgNjQwNDEsIDY0MDQ1LCA2NDA0OSwgNjQwNTMsIDY0MDU3LCAKLSAgICA2NDA2MSwgNjQwNjUsIDY0MDY5LCA2NDA3MywgNjQwNzcsIDY0MDg2LCA2NDA5NSwgNjQxMDQsIDY0MTEzLCA2NDEyMiwgCi0gICAgNjQxMzEsIDY0MTQwLCA2NDE0OSwgNjQxNTIsIDY0MTU3LCA2NDE2MiwgNjQxNjcsIDY0MTcyLCA2NDE3NywgNjQxODIsIAotICAgIDY0MTg4LCA2NDE5MywgNjQxOTksIDY0MjAzLCA2NDIwOCwgNjQyMTMsIDY0MjE4LCA2NDIyMywgNjQyMjgsIDY0MjMyLCAKLSAgICA2NDIzNiwgNjQyNDAsIDY0MjQ0LCA2NDI0OCwgNjQyNTIsIDY0MjU2LCA2NDI2MCwgNjQyNjQsIDY0MjY4LCA2NDI3MiwgCi0gICAgNjQyNzYsIDY0MjgwLCA2NDI4NCwgNjQyODksIDY0Mjk0LCA2NDI5OSwgNjQzMDQsIDY0MzA5LCA2NDMxNCwgNjQzMTksIAotICAgIDY0MzI0LCA2NDMyOSwgNjQzMzQsIDY0MzM5LCA2NDM0NCwgNjQzNDksIDY0MzU0LCA2NDM2MCwgNjQzNjYsIDY0MzcxLCAKLSAgICA2NDM3NiwgNjQzNzksIDY0MzgyLCA2NDM4NSwgNjQzODgsIDY0MzkxLCA2NDM5NCwgNjQzOTgsIDY0NDAxLCA2NDQwNSwgCi0gICAgNjQ0MDksIDY0NDEzLCA2NDQxNywgNjQ0MjEsIDY0NDI1LCA2NDQyOSwgNjQ0MzMsIDY0NDM3LCA2NDQ0MSwgNjQ0NDUsIAotICAgIDY0NDQ5LCA2NDQ1MywgNjQ0NTcsIDY0NDYxLCA2NDQ2NSwgNjQ0NjksIDY0NDczLCA2NDQ3NywgNjQ0ODEsIDY0NDg1LCAKLSAgICA2NDQ4OSwgNjQ0OTMsIDY0NDk3LCA2NDUwMSwgNjQ1MDUsIDY0NTA5LCA2NDUxMywgNjQ1MTcsIDY0NTIxLCA2NDUyNSwgCi0gICAgNjQ1MjksIDY0NTMzLCA2NDUzNywgNjQ1NDEsIDY0NTQ1LCA2NDU0OSwgNjQ1NTMsIDY0NTU3LCA2NDU2MSwgNjQ1NjUsIAotICAgIDY0NTcwLCA2NDU3NiwgNjQ1ODEsIDY0NTg3LCA2NDU5MSwgNjQ1OTYsIDY0NjAxLCA2NDYwNiwgNjQ2MTEsIDY0NjE2LCAKLSAgICA2NDYyMSwgNjQ2MjcsIDY0NjMyLCA2NDYzOCwgNjQ2NDIsIDY0NjQ5LCA2NDY1NiwgNjQ2NjMsIDY0NjcwLCA2NDY3NywgCi0gICAgNjQ2ODQsIDY0NjkxLCA2NDY5OCwgNjQ3MDUsIDY0NzEyLCA2NDcxOSwgNjQ3MjYsIDY0NzI5LCA2NDczMiwgNjQ3MzUsIAotICAgIDY0NzQwLCA2NDc0MywgNjQ3NDYsIDY0NzQ5LCA2NDc1MiwgNjQ3NTUsIDY0NzU4LCA2NDc2MiwgNjQ3NjYsIDY0NzcwLCAKLSAgICA2NDc3NCwgNjQ3NzgsIDY0NzgyLCA2NDc4NiwgNjQ3OTAsIDY0Nzk0LCA2NDc5OCwgNjQ4MDIsIDY0ODA2LCA2NDgxMCwgCi0gICAgNjQ4MTMsIDY0ODE3LCA2NDgyMSwgNjQ4MjUsIDY0ODI5LCA2NDgzMywgNjQ4MzYsIDY0ODQwLCA2NDg0NCwgNjQ4NDgsIAotICAgIDY0ODUyLCA2NDg1NSwgNjQ4NTksIDY0ODYzLCA2NDg2NywgNjQ4NzEsIDY0ODc0LCA2NDg3OCwgNjQ4ODIsIDY0ODg2LCAKLSAgICA2NDg5MCwgNjQ4OTQsIDY0ODk4LCA2NDkwMiwgNjQ5MDYsIDY0OTEwLCA2NDkxNCwgMCwgNjQ5MTgsIDY0OTIxLCA2NDkyNCwgCi0gICAgNjQ5MjcsIDY0OTMwLCA2NDkzMywgNjQ5MzYsIDY0OTM5LCA2NDk0MiwgNjQ5NDUsIDY0OTQ4LCA2NDk1MSwgNjQ5NTQsIAotICAgIDY0OTU3LCA2NDk2MCwgNjQ5NjMsIDY0OTY2LCA2NDk2OSwgNjQ5NzIsIDY0OTc1LCA2NDk3OCwgNjQ5ODEsIDY0OTg0LCAKLSAgICA2NDk4NywgNjQ5OTAsIDY0OTkzLCA2NDk5NiwgNjQ5OTksIDY1MDAyLCA2NTAwNSwgNjUwMDgsIDY1MDExLCA2NTAxNCwgCi0gICAgNjUwMTcsIDY1MDIwLCA2NTAyMywgNjUwMjYsIDY1MDI5LCA2NTAzMiwgNjUwMzUsIDY1MDM4LCA2NTA0MSwgNjUwNDQsIAotICAgIDY1MDQ3LCA2NTA1MCwgNjUwNTMsIDY1MDU2LCA2NTA1OSwgNjUwNjIsIDY1MDY1LCA2NTA2OCwgNjUwNzEsIDY1MDc0LCAKLSAgICA2NTA3NywgNjUwODAsIDY1MDgzLCA2NTA4NiwgNjUwODksIDY1MDkyLCA2NTA5NSwgNjUwOTgsIDY1MTAxLCA2NTEwNCwgCi0gICAgNjUxMDcsIDY1MTEwLCA2NTExMywgNjUxMTYsIDY1MTE5LCA2NTEyMiwgNjUxMjUsIDY1MTI4LCA2NTEzMSwgNjUxMzQsIAotICAgIDY1MTM3LCA2NTE0MCwgNjUxNDMsIDY1MTQ2LCA2NTE0OSwgNjUxNTIsIDY1MTU1LCA2NTE1OCwgNjUxNjEsIDY1MTY0LCAKLSAgICA2NTE2NywgNjUxNzAsIDY1MTczLCA2NTE3NiwgNjUxNzksIDY1MTgyLCA2NTE5MSwgNjUxOTksIDY1MjA3LCA2NTIxNSwgCi0gICAgNjUyMjMsIDY1MjMxLCA2NTIzOSwgNjUyNDgsIDY1MjU2LCA2NTI2NSwgNjUyNzQsIDY1MjgzLCA2NTI5MiwgNjUzMDEsIAotICAgIDY1MzEwLCA2NTMxOSwgNjUzMjgsIDY1MzM3LCA2NTM0NiwgNjUzNTUsIDY1MzY0LCA2NTM3MywgNjUzODIsIDY1MzkxLCAKLSAgICA2NTQwMCwgNjU0MDMsIDY1NDA2LCA2NTQwOSwgNjU0MTEsIDY1NDE0LCA2NTQxNywgNjU0MjAsIDY1NDI1LCA2NTQzMCwgCi0gICAgNjU0MzMsIDY1NDQwLCA2NTQ0NywgNjU0NTQsIDY1NDYxLCA2NTQ2NCwgNjU0NjksIDY1NDcyLCA2NTQ3NiwgNjU0NzgsIAotICAgIDY1NDgwLCA2NTQ4MywgNjU0ODYsIDY1NDg5LCA2NTQ5MiwgNjU0OTUsIDY1NDk4LCA2NTUwMSwgNjU1MDYsIDY1NTExLCAKLSAgICA2NTUxNCwgNjU1MTcsIDY1NTIwLCA2NTUyMywgNjU1MjYsIDY1NTI5LCA2NTUzMiwgNjU1MzYsIDY1NTM5LCA2NTU0MiwgCi0gICAgNjU1NDUsIDY1NTQ4LCA2NTU1MSwgNjU1NTYsIDY1NTU5LCA2NTU2MiwgNjU1NjUsIDY1NTcwLCA2NTU3NSwgNjU1ODAsIAotICAgIDY1NTg1LCA2NTU5MCwgNjU1OTUsIDY1NjAwLCA2NTYwNSwgNjU2MTAsIDY1NjE4LCA2NTYyMCwgNjU2MjMsIDY1NjI2LCAKLSAgICA2NTYyOSwgNjU2MzIsIDY1NjM3LCA2NTY0NSwgNjU2NDgsIDY1NjUxLCA2NTY1NSwgNjU2NTgsIDY1NjYxLCA2NTY2NCwgCi0gICAgNjU2NjksIDY1NjcyLCA2NTY3NSwgNjU2ODAsIDY1NjgzLCA2NTY4NiwgNjU2OTEsIDY1Njk0LCA2NTY5NywgNjU3MDIsIAotICAgIDY1NzA3LCA2NTcxMiwgNjU3MTUsIDY1NzE4LCA2NTcyMSwgNjU3MjQsIDY1NzMwLCA2NTczMywgNjU3MzYsIDY1NzM5LCAKLSAgICA2NTc0MSwgNjU3NDQsIDY1NzQ3LCA2NTc1MCwgNjU3NTUsIDY1NzU4LCA2NTc2MSwgNjU3NjQsIDY1NzY3LCA2NTc3MCwgCi0gICAgNjU3NzUsIDY1Nzc4LCA2NTc4MSwgNjU3ODQsIDY1Nzg3LCA2NTc5MCwgNjU3OTMsIDY1Nzk2LCA2NTc5OSwgNjU4MDIsIAotICAgIDY1ODA4LCA2NTgxMywgNjU4MjEsIDY1ODI5LCA2NTgzNywgNjU4NDUsIDY1ODUzLCA2NTg2MSwgNjU4NzAsIDY1ODc4LCAKLSAgICA2NTg4NywgNjU4OTYsIDY1OTA1LCA2NTkxNCwgNjU5MjMsIDY1OTMyLCA2NTk0MSwgNjU5NTAsIDY1OTU5LCA2NTk2OCwgCi0gICAgNjU5NzcsIDY1OTg2LCA2NTk5NSwgNjYwMDQsIDY2MDEzLCA2NjAyMiwgNjYwMzEsIDY2MDQwLCA2NjA0OSwgNjYwNTgsIAotICAgIDY2MDY3LCA2NjA3NiwgNjYwODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDYwNjkzLCA2MDY5NywgNjA3MDEsIDYwNzA2LCA2MDcxMSwgNjA3MTYsIDYwNzIwLCA2MDcyNCwgNjA3MjgsIAorICAgIDYwNzMzLCA2MDczOCwgNjA3NDIsIDYwNzQ2LCA2MDc1MCwgNjA3NTQsIDYwNzU5LCA2MDc2NCwgNjA3NjksIDYwNzc0LCAKKyAgICA2MDc3OCwgNjA3ODIsIDYwNzg3LCA2MDc5MiwgNjA3OTcsIDYwODAyLCA2MDgwNiwgMCwgNjA4MTAsIDYwODE0LCA2MDgxOCwgCisgICAgNjA4MjIsIDYwODI2LCA2MDgzMCwgNjA4MzQsIDYwODM5LCA2MDg0NCwgNjA4NDgsIDYwODUzLCA2MDg1OCwgNjA4NjcsIAorICAgIDYwODcxLCA2MDg3NSwgNjA4NzksIDYwODg2LCA2MDg5MCwgNjA4OTUsIDYwOTAwLCA2MDkwNCwgNjA5MDgsIDYwOTE0LCAKKyAgICA2MDkxOSwgNjA5MjQsIDYwOTI5LCA2MDkzNCwgNjA5MzgsIDYwOTQyLCA2MDk0NiwgNjA5NTAsIDYwOTU0LCA2MDk1OSwgCisgICAgNjA5NjQsIDYwOTY4LCA2MDk3MiwgNjA5NzcsIDYwOTgyLCA2MDk4NywgNjA5OTEsIDYwOTk1LCA2MTAwMCwgNjEwMDUsIAorICAgIDYxMDExLCA2MTAxNywgNjEwMjEsIDYxMDI3LCA2MTAzMywgNjEwMzcsIDYxMDQzLCA2MTA0OSwgNjEwNTQsIDYxMDU5LCAKKyAgICA2MTA2MywgNjEwNjksIDYxMDczLCA2MTA3NywgNjEwODMsIDYxMDg5LCA2MTA5NCwgNjEwOTksIDYxMTAzLCA2MTEwNywgCisgICAgNjExMTUsIDYxMTIxLCA2MTEyNywgNjExMzMsIDYxMTM4LCA2MTE0MywgNjExNDgsIDYxMTU0LCA2MTE1OCwgNjExNjQsIAorICAgIDYxMTY4LCA2MTE3MiwgNjExNzgsIDYxMTg0LCA2MTE5MCwgNjExOTYsIDYxMjAyLCA2MTIwOCwgNjEyMTQsIDYxMjIwLCAKKyAgICA2MTIyNiwgNjEyMzIsIDYxMjM4LCA2MTI0NCwgNjEyNDgsIDYxMjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA2MTI2MCwgNjEyNjMsIDYxMjY3LCA2MTI3MSwgNjEyNzUsIDYxMjc5LCA2MTI4MiwgNjEyODUsIDYxMjg5LCAKKyAgICA2MTI5MywgNjEyOTcsIDYxMzAxLCA2MTMwNCwgNjEzMDksIDYxMzEzLCA2MTMxNywgNjEzMjEsIDYxMzI2LCA2MTMzMCwgCisgICAgNjEzMzQsIDYxMzM4LCA2MTM0MiwgNjEzNDgsIDYxMzU0LCA2MTM1OCwgNjEzNjIsIDYxMzY2LCA2MTM3MCwgNjEzNzQsIAorICAgIDYxMzc4LCA2MTM4MiwgNjEzODYsIDYxMzkwLCA2MTM5NCwgNjEzOTgsIDYxNDA0LCA2MTQwOCwgNjE0MTIsIDYxNDE2LCAKKyAgICA2MTQyMCwgNjE0MjQsIDYxNDI4LCA2MTQzMiwgNjE0MzYsIDYxNDQwLCA2MTQ0NCwgNjE0NDgsIDYxNDUyLCA2MTQ1NiwgCisgICAgNjE0NjAsIDYxNDY0LCA2MTQ2OCwgNjE0NzQsIDYxNDgwLCA2MTQ4NSwgNjE0OTAsIDYxNDk0LCA2MTQ5OCwgNjE1MDIsIAorICAgIDYxNTA2LCA2MTUxMCwgNjE1MTQsIDYxNTE4LCA2MTUyMiwgNjE1MjYsIDYxNTMwLCA2MTUzNCwgNjE1MzgsIDYxNTQyLCAKKyAgICA2MTU0NiwgNjE1NTAsIDYxNTU0LCA2MTU1OCwgNjE1NjIsIDYxNTY2LCA2MTU3MCwgNjE1NzQsIDYxNTc4LCA2MTU4MiwgCisgICAgNjE1ODYsIDYxNTkyLCA2MTU5NiwgNjE2MDAsIDYxNjA0LCA2MTYwOCwgNjE2MTIsIDYxNjE2LCA2MTYyMCwgNjE2MjQsIAorICAgIDYxNjI5LCA2MTYzNiwgNjE2NDAsIDYxNjQ0LCA2MTY0OCwgNjE2NTIsIDYxNjU2LCA2MTY2MCwgNjE2NjQsIDYxNjY4LCAKKyAgICA2MTY3MiwgNjE2NzYsIDYxNjgwLCA2MTY4NCwgNjE2OTEsIDYxNjk1LCA2MTcwMSwgNjE3MDUsIDYxNzA5LCA2MTcxMywgCisgICAgNjE3MTcsIDYxNzIxLCA2MTcyNCwgNjE3MjgsIDYxNzMyLCA2MTczNiwgNjE3NDAsIDYxNzQ0LCA2MTc0OCwgNjE3NTIsIAorICAgIDYxNzU2LCA2MTc2MCwgNjE3NjQsIDYxNzY4LCA2MTc3MiwgNjE3NzYsIDYxNzgwLCA2MTc4NCwgNjE3ODgsIDYxNzkyLCAKKyAgICA2MTc5NiwgNjE4MDAsIDYxODA0LCA2MTgwOCwgNjE4MTIsIDYxODE2LCA2MTgyMCwgNjE4MjQsIDYxODI4LCA2MTgzMiwgCisgICAgNjE4MzYsIDYxODQwLCA2MTg0NCwgNjE4NDgsIDYxODUyLCA2MTg1OCwgNjE4NjIsIDYxODY2LCA2MTg3MCwgNjE4NzQsIAorICAgIDYxODc4LCA2MTg4MiwgNjE4ODYsIDYxODkwLCA2MTg5NCwgNjE4OTgsIDYxOTAyLCA2MTkwNiwgNjE5MTAsIDYxOTE0LCAKKyAgICA2MTkxOCwgNjE5MjIsIDYxOTI2LCA2MTkzMCwgNjE5MzQsIDYxOTM4LCA2MTk0MiwgNjE5NDYsIDYxOTUwLCA2MTk1NCwgCisgICAgNjE5NTgsIDYxOTYyLCA2MTk2NiwgNjE5NzQsIDYxOTc4LCA2MTk4MiwgNjE5ODYsIDYxOTkwLCA2MTk5NCwgNjIwMDAsIAorICAgIDYyMDA0LCA2MjAwOCwgNjIwMTIsIDYyMDE2LCA2MjAyMCwgNjIwMjQsIDYyMDI4LCA2MjAzMiwgNjIwMzYsIDYyMDQwLCAKKyAgICA2MjA0NCwgNjIwNDgsIDYyMDUyLCA2MjA1OCwgNjIwNjIsIDYyMDY2LCA2MjA3MCwgNjIwNzQsIDYyMDc4LCA2MjA4MiwgCisgICAgNjIwODYsIDYyMDkwLCA2MjA5NCwgNjIwOTgsIDYyMTAyLCA2MjEwNiwgNjIxMTAsIDYyMTE0LCA2MjExOCwgNjIxMjIsIAorICAgIDYyMTI2LCA2MjEzMCwgNjIxMzQsIDYyMTM4LCA2MjE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIxNDYsIDYyMTU1LCA2MjE2MywgNjIxNzQsIDYyMTg0LCAKKyAgICA2MjE5MiwgNjIyMDEsIDYyMjEwLCA2MjIyMCwgNjIyMzIsIDYyMjQ0LCA2MjI1NiwgMCwgMCwgMCwgMCwgNjIyNjIsIAorICAgIDYyMjY1LCA2MjI2OCwgNjIyNzMsIDYyMjc2LCA2MjI4MywgNjIyODcsIDYyMjkxLCA2MjI5NSwgNjIyOTksIDYyMzAzLCAKKyAgICA2MjMwOCwgNjIzMTMsIDYyMzE3LCA2MjMyMSwgNjIzMjYsIDYyMzMxLCA2MjMzNiwgNjIzNDEsIDYyMzQ0LCA2MjM0NywgCisgICAgNjIzNTMsIDYyMzU5LCA2MjM2NCwgNjIzNjksIDYyMzc2LCA2MjM4MywgNjIzODcsIDYyMzkxLCA2MjM5NSwgNjI0MDMsIAorICAgIDYyNDA5LCA2MjQxNiwgNjI0MjEsIDYyNDI2LCA2MjQzMSwgNjI0MzYsIDYyNDQxLCA2MjQ0NiwgNjI0NTEsIDYyNDU3LCAKKyAgICA2MjQ2MiwgNjI0NjgsIDYyNDczLCA2MjQ3OCwgNjI0ODMsIDYyNDg4LCA2MjQ5NCwgNjI0OTksIDYyNTAzLCA2MjUwOSwgCisgICAgNjI1MjAsIDYyNTMwLCA2MjU0NSwgNjI1NTUsIDYyNTU5LCA2MjU2OSwgNjI1NzUsIDYyNTgxLCA2MjU4NywgNjI1OTIsIAorICAgIDYyNTk1LCA2MjYwMCwgNjI2MDQsIDAsIDYyNjEwLCA2MjYxNCwgNjI2MTcsIDYyNjIxLCA2MjYyNCwgNjI2MjgsIDYyNjMxLCAKKyAgICA2MjYzNSwgNjI2MzgsIDYyNjQyLCA2MjY0NSwgNjI2NDgsIDYyNjUyLCA2MjY1NiwgNjI2NjAsIDYyNjY0LCA2MjY2OCwgCisgICAgNjI2NzIsIDYyNjc2LCA2MjY4MCwgNjI2ODQsIDYyNjg4LCA2MjY5MiwgNjI2OTYsIDYyNzAwLCA2MjcwNCwgNjI3MDgsIAorICAgIDYyNzEyLCA2MjcxNiwgNjI3MjAsIDYyNzI0LCA2MjcyOCwgNjI3MzIsIDYyNzM2LCA2Mjc0MCwgNjI3NDUsIDYyNzQ5LCAKKyAgICA2Mjc1MywgNjI3NTcsIDYyNzYxLCA2Mjc2NCwgNjI3NjgsIDYyNzcxLCA2Mjc3NSwgNjI3NzksIDYyNzgzLCA2Mjc4NywgCisgICAgNjI3OTAsIDYyNzk0LCA2Mjc5NywgNjI4MDEsIDYyODA1LCA2MjgwOSwgNjI4MTMsIDYyODE3LCA2MjgyMSwgNjI4MjUsIAorICAgIDYyODI5LCA2MjgzMywgNjI4MzcsIDYyODQxLCA2Mjg0NSwgNjI4NDgsIDYyODUyLCA2Mjg1NiwgNjI4NjAsIDYyODY0LCAKKyAgICA2Mjg2OCwgNjI4NzEsIDYyODc2LCA2Mjg4MCwgNjI4ODUsIDYyODg5LCA2Mjg5MywgNjI4OTcsIDYyOTAxLCA2MjkwNSwgCisgICAgNjI5MDksIDYyOTE0LCA2MjkxOCwgNjI5MjIsIDYyOTI2LCA2MjkzMCwgNjI5MzQsIDYyOTM4LCA2Mjk0MiwgMCwgMCwgCisgICAgNjI5NDcsIDYyOTU1LCA2Mjk2MywgNjI5NzAsIDYyOTc3LCA2Mjk4MSwgNjI5ODcsIDYyOTkyLCA2Mjk5NywgNjMwMDEsIAorICAgIDYzMDA0LCA2MzAwOCwgNjMwMTEsIDYzMDE1LCA2MzAxOCwgNjMwMjIsIDYzMDI1LCA2MzAyOSwgNjMwMzIsIDYzMDM1LCAKKyAgICA2MzAzOSwgNjMwNDMsIDYzMDQ3LCA2MzA1MSwgNjMwNTUsIDYzMDU5LCA2MzA2MywgNjMwNjcsIDYzMDcxLCA2MzA3NSwgCisgICAgNjMwNzksIDYzMDgzLCA2MzA4NywgNjMwOTEsIDYzMDk1LCA2MzA5OSwgNjMxMDMsIDYzMTA3LCA2MzExMSwgNjMxMTUsIAorICAgIDYzMTE5LCA2MzEyMywgNjMxMjcsIDYzMTMyLCA2MzEzNiwgNjMxNDAsIDYzMTQ0LCA2MzE0OCwgNjMxNTEsIDYzMTU1LCAKKyAgICA2MzE1OCwgNjMxNjIsIDYzMTY2LCA2MzE3MCwgNjMxNzQsIDYzMTc3LCA2MzE4MSwgNjMxODQsIDYzMTg4LCA2MzE5MiwgCisgICAgNjMxOTYsIDYzMjAwLCA2MzIwNCwgNjMyMDgsIDYzMjEyLCA2MzIxNiwgNjMyMjAsIDYzMjI0LCA2MzIyOCwgNjMyMzIsIAorICAgIDYzMjM1LCA2MzIzOSwgNjMyNDMsIDYzMjQ3LCA2MzI1MSwgNjMyNTUsIDYzMjU4LCA2MzI2MywgNjMyNjcsIDYzMjcyLCAKKyAgICA2MzI3NiwgNjMyODAsIDYzMjg0LCA2MzI4OCwgNjMyOTIsIDYzMjk2LCA2MzMwMSwgNjMzMDUsIDYzMzA5LCA2MzMxMywgCisgICAgNjMzMTcsIDYzMzIxLCA2MzMyNSwgNjMzMjksIDYzMzM0LCA2MzMzOCwgNjMzNDIsIDYzMzQ2LCA2MzM1MCwgNjMzNTQsIAorICAgIDYzMzYxLCA2MzM2NSwgNjMzNzEsIDAsIDAsIDAsIDAsIDAsIDYzMzc2LCA2MzM4MSwgNjMzODYsIDYzMzkxLCA2MzM5NiwgCisgICAgNjM0MDEsIDYzNDA2LCA2MzQxMSwgNjM0MTUsIDYzNDIwLCA2MzQyNSwgNjM0MzAsIDYzNDM1LCA2MzQ0MCwgNjM0NDUsIAorICAgIDYzNDUwLCA2MzQ1NSwgNjM0NjAsIDYzNDY0LCA2MzQ2OSwgNjM0NzQsIDYzNDc5LCA2MzQ4MywgNjM0ODcsIDYzNDkxLCAKKyAgICA2MzQ5NiwgNjM1MDEsIDYzNTA2LCA2MzUxMSwgNjM1MTYsIDYzNTIxLCA2MzUyNiwgNjM1MzEsIDYzNTM2LCA2MzU0MSwgCisgICAgNjM1NDUsIDYzNTQ5LCA2MzU1NCwgNjM1NTksIDYzNTY0LCA2MzU2OSwgMCwgMCwgMCwgNjM1NzQsIDYzNTc4LCA2MzU4MiwgCisgICAgNjM1ODYsIDYzNTkwLCA2MzU5NCwgNjM1OTgsIDYzNjAyLCA2MzYwNiwgNjM2MTAsIDYzNjE0LCA2MzYxOCwgNjM2MjIsIAorICAgIDYzNjI2LCA2MzYzMCwgNjM2MzQsIDYzNjM4LCA2MzY0MiwgNjM2NDYsIDYzNjUwLCA2MzY1NCwgNjM2NTgsIDYzNjYyLCAKKyAgICA2MzY2NiwgNjM2NzAsIDYzNjc0LCA2MzY3OCwgNjM2ODIsIDYzNjg2LCA2MzY5MCwgNjM2OTQsIDYzNjk3LCA2MzcwMSwgCisgICAgNjM3MDQsIDYzNzA4LCA2MzcxMiwgNjM3MTUsIDYzNzE5LCA2MzcyMywgNjM3MjYsIDYzNzMwLCA2MzczNCwgNjM3MzgsIAorICAgIDYzNzQyLCA2Mzc0NSwgNjM3NDksIDYzNzUzLCA2Mzc1NywgNjM3NjEsIDYzNzY1LCA2Mzc2OSwgNjM3NzIsIDYzNzc1LCAKKyAgICA2Mzc3OSwgNjM3ODMsIDYzNzg3LCA2Mzc5MSwgNjM3OTUsIDYzNzk5LCA2MzgwMywgNjM4MDcsIDYzODExLCA2MzgxNSwgCisgICAgNjM4MTksIDYzODIzLCA2MzgyNywgNjM4MzEsIDYzODM1LCA2MzgzOSwgNjM4NDMsIDYzODQ3LCA2Mzg1MSwgNjM4NTUsIAorICAgIDYzODU5LCA2Mzg2MywgNjM4NjcsIDYzODcxLCA2Mzg3NSwgNjM4NzksIDYzODgzLCA2Mzg4NywgNjM4OTEsIDYzODk1LCAKKyAgICA2Mzg5OSwgNjM5MDMsIDYzOTA3LCA2MzkxMSwgNjM5MTUsIDYzOTE5LCA2MzkyMywgNjM5MjcsIDYzOTMxLCA2MzkzNSwgCisgICAgNjM5MzksIDAsIDYzOTQzLCA2Mzk0OSwgNjM5NTUsIDYzOTYwLCA2Mzk2NSwgNjM5NzAsIDYzOTc2LCA2Mzk4MiwgNjM5ODcsIAorICAgIDYzOTkzLCA2Mzk5OSwgNjQwMDUsIDY0MDExLCA2NDAxNywgNjQwMjMsIDY0MDI5LCA2NDAzNSwgNjQwNDAsIDY0MDQ1LCAKKyAgICA2NDA1MCwgNjQwNTUsIDY0MDYwLCA2NDA2NSwgNjQwNzAsIDY0MDc1LCA2NDA4MCwgNjQwODUsIDY0MDkwLCA2NDA5NSwgCisgICAgNjQxMDAsIDY0MTA1LCA2NDExMCwgNjQxMTUsIDY0MTIwLCA2NDEyNSwgNjQxMzAsIDY0MTM1LCA2NDE0MSwgNjQxNDcsIAorICAgIDY0MTUzLCA2NDE1OSwgNjQxNjQsIDY0MTY5LCAwLCAwLCAwLCAwLCAwLCA2NDE3NCwgNjQxNzksIDY0MTg0LCA2NDE4OSwgCisgICAgNjQxOTQsIDY0MTk5LCA2NDIwNCwgNjQyMDksIDY0MjE0LCA2NDIxOSwgNjQyMjQsIDY0MjI5LCA2NDIzNCwgNjQyMzksIAorICAgIDY0MjQ0LCA2NDI0OSwgNjQyNTQsIDY0MjU5LCA2NDI2NCwgNjQyNjksIDY0Mjc0LCA2NDI3OSwgNjQyODQsIDY0Mjg5LCAKKyAgICA2NDI5NCwgNjQyOTksIDY0MzA0LCA2NDMwOSwgNjQzMTQsIDY0MzE5LCA2NDMyNCwgNjQzMjksIDY0MzM0LCA2NDMzOSwgCisgICAgNjQzNDQsIDY0MzQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDM1NCwgNjQzNTksIDY0MzY0LCAKKyAgICA2NDM2OSwgNjQzNzMsIDY0Mzc4LCA2NDM4MiwgNjQzODcsIDY0MzkyLCA2NDM5NywgNjQ0MDIsIDY0NDA3LCA2NDQxMiwgCisgICAgNjQ0MTcsIDY0NDIyLCA2NDQyNywgNjQ0MzIsIDY0NDM2LCA2NDQ0MCwgNjQ0NDQsIDY0NDQ4LCA2NDQ1MiwgNjQ0NTYsIAorICAgIDY0NDYwLCA2NDQ2NCwgNjQ0NjgsIDY0NDcyLCA2NDQ3NiwgNjQ0ODAsIDY0NDg0LCA2NDQ4OCwgNjQ0OTMsIDY0NDk4LCAKKyAgICA2NDUwMywgNjQ1MDgsIDY0NTEzLCA2NDUxOCwgNjQ1MjMsIDY0NTI4LCA2NDUzMywgNjQ1MzgsIDY0NTQzLCA2NDU0OCwgCisgICAgNjQ1NTMsIDY0NTU4LCA2NDU2MywgNjQ1NjksIDAsIDY0NTc2LCA2NDU4MCwgNjQ1ODQsIDY0NTg4LCA2NDU5MiwgNjQ1OTYsIAorICAgIDY0NjAwLCA2NDYwNSwgNjQ2MDksIDY0NjE0LCA2NDYxOSwgNjQ2MjQsIDY0NjI5LCA2NDYzNCwgNjQ2MzksIDY0NjQ0LCAKKyAgICA2NDY0OSwgNjQ2NTQsIDY0NjU5LCA2NDY2NCwgNjQ2NjksIDY0Njc0LCA2NDY3OSwgNjQ2ODQsIDY0Njg5LCA2NDY5NCwgCisgICAgNjQ2OTksIDY0NzA0LCA2NDcwOSwgNjQ3MTQsIDY0NzE5LCA2NDcyNCwgNjQ3MjksIDY0NzM0LCA2NDczOSwgNjQ3NDQsIAorICAgIDY0NzQ5LCA2NDc1NCwgNjQ3NTksIDY0NzY0LCA2NDc2OSwgNjQ3NzgsIDY0Nzg3LCA2NDc5NiwgNjQ4MDUsIDY0ODE0LCAKKyAgICA2NDgyMywgNjQ4MzIsIDY0ODQxLCA2NDg0NCwgNjQ4NDksIDY0ODU0LCA2NDg1OSwgNjQ4NjQsIDY0ODY5LCA2NDg3NCwgCisgICAgNjQ4ODAsIDY0ODg1LCA2NDg5MSwgNjQ4OTUsIDY0OTAwLCA2NDkwNSwgNjQ5MTAsIDY0OTE1LCA2NDkyMCwgNjQ5MjQsIAorICAgIDY0OTI4LCA2NDkzMiwgNjQ5MzYsIDY0OTQwLCA2NDk0NCwgNjQ5NDgsIDY0OTUyLCA2NDk1NiwgNjQ5NjAsIDY0OTY0LCAKKyAgICA2NDk2OCwgNjQ5NzIsIDY0OTc2LCA2NDk4MSwgNjQ5ODYsIDY0OTkxLCA2NDk5NiwgNjUwMDEsIDY1MDA2LCA2NTAxMSwgCisgICAgNjUwMTYsIDY1MDIxLCA2NTAyNiwgNjUwMzEsIDY1MDM2LCA2NTA0MSwgNjUwNDYsIDY1MDUyLCA2NTA1OCwgNjUwNjMsIAorICAgIDY1MDY4LCA2NTA3MiwgNjUwNzYsIDY1MDgwLCA2NTA4NCwgNjUwODgsIDY1MDkyLCA2NTA5NywgNjUxMDEsIDY1MTA2LCAKKyAgICA2NTExMSwgNjUxMTYsIDY1MTIxLCA2NTEyNiwgNjUxMzEsIDY1MTM2LCA2NTE0MSwgNjUxNDYsIDY1MTUxLCA2NTE1NiwgCisgICAgNjUxNjEsIDY1MTY2LCA2NTE3MSwgNjUxNzYsIDY1MTgxLCA2NTE4NiwgNjUxOTEsIDY1MTk2LCA2NTIwMSwgNjUyMDYsIAorICAgIDY1MjExLCA2NTIxNiwgNjUyMjEsIDY1MjI2LCA2NTIzMSwgNjUyMzYsIDY1MjQxLCA2NTI0NiwgNjUyNTEsIDY1MjU2LCAKKyAgICA2NTI2MSwgNjUyNjYsIDY1MjcxLCA2NTI3NiwgNjUyODEsIDY1Mjg2LCA2NTI5MSwgNjUyOTYsIDY1MzAxLCA2NTMwNiwgCisgICAgNjUzMTEsIDY1MzE3LCA2NTMyMiwgNjUzMjgsIDY1MzMyLCA2NTMzNywgNjUzNDIsIDY1MzQ3LCA2NTM1MiwgNjUzNTcsIAorICAgIDY1MzYyLCA2NTM2OCwgNjUzNzMsIDY1Mzc5LCA2NTM4MywgNjUzOTAsIDY1Mzk3LCA2NTQwNCwgNjU0MTEsIDY1NDE4LCAKKyAgICA2NTQyNSwgNjU0MzIsIDY1NDM5LCA2NTQ0NiwgNjU0NTMsIDY1NDYwLCA2NTQ2NywgNjU0NzAsIDY1NDczLCA2NTQ3NiwgCisgICAgNjU0ODEsIDY1NDg0LCA2NTQ4NywgNjU0OTAsIDY1NDkzLCA2NTQ5NiwgNjU0OTksIDY1NTAzLCA2NTUwNywgNjU1MTEsIAorICAgIDY1NTE1LCA2NTUxOSwgNjU1MjMsIDY1NTI3LCA2NTUzMSwgNjU1MzUsIDY1NTM5LCA2NTU0MywgNjU1NDcsIDY1NTUxLCAKKyAgICA2NTU1NCwgNjU1NTcsIDY1NTYxLCA2NTU2NSwgNjU1NjksIDY1NTczLCA2NTU3NiwgNjU1ODAsIDY1NTg0LCA2NTU4OCwgCisgICAgNjU1OTIsIDY1NTk1LCA2NTU5OSwgNjU2MDMsIDY1NjA3LCA2NTYxMSwgNjU2MTQsIDY1NjE4LCA2NTYyMiwgNjU2MjYsIAorICAgIDY1NjMwLCA2NTYzNCwgNjU2MzgsIDY1NjQyLCA2NTY0NiwgNjU2NTAsIDY1NjU0LCAwLCA2NTY1OCwgNjU2NjEsIDY1NjY0LCAKKyAgICA2NTY2NywgNjU2NzAsIDY1NjczLCA2NTY3NiwgNjU2NzksIDY1NjgyLCA2NTY4NSwgNjU2ODgsIDY1NjkxLCA2NTY5NCwgCisgICAgNjU2OTcsIDY1NzAwLCA2NTcwMywgNjU3MDYsIDY1NzA5LCA2NTcxMiwgNjU3MTUsIDY1NzE4LCA2NTcyMSwgNjU3MjQsIAorICAgIDY1NzI3LCA2NTczMCwgNjU3MzMsIDY1NzM2LCA2NTczOSwgNjU3NDIsIDY1NzQ1LCA2NTc0OCwgNjU3NTEsIDY1NzU0LCAKKyAgICA2NTc1NywgNjU3NjAsIDY1NzYzLCA2NTc2NiwgNjU3NjksIDY1NzcyLCA2NTc3NSwgNjU3NzgsIDY1NzgxLCA2NTc4NCwgCisgICAgNjU3ODcsIDY1NzkwLCA2NTc5MywgNjU3OTYsIDY1Nzk5LCA2NTgwMiwgNjU4MDUsIDY1ODA4LCA2NTgxMSwgNjU4MTQsIAorICAgIDY1ODE3LCA2NTgyMCwgNjU4MjMsIDY1ODI2LCA2NTgyOSwgNjU4MzIsIDY1ODM1LCA2NTgzOCwgNjU4NDEsIDY1ODQ0LCAKKyAgICA2NTg0NywgNjU4NTAsIDY1ODUzLCA2NTg1NiwgNjU4NTksIDY1ODYyLCA2NTg2NSwgNjU4NjgsIDY1ODcxLCA2NTg3NCwgCisgICAgNjU4NzcsIDY1ODgwLCA2NTg4MywgNjU4ODYsIDY1ODg5LCA2NTg5MiwgNjU4OTUsIDY1ODk4LCA2NTkwMSwgNjU5MDQsIAorICAgIDY1OTA3LCA2NTkxMCwgNjU5MTMsIDY1OTE2LCA2NTkxOSwgNjU5MjIsIDY1OTMxLCA2NTkzOSwgNjU5NDcsIDY1OTU1LCAKKyAgICA2NTk2MywgNjU5NzEsIDY1OTc5LCA2NTk4OCwgNjU5OTYsIDY2MDA1LCA2NjAxNCwgNjYwMjMsIDY2MDMyLCA2NjA0MSwgCisgICAgNjYwNTAsIDY2MDU5LCA2NjA2OCwgNjYwNzcsIDY2MDg2LCA2NjA5NSwgNjYxMDQsIDY2MTEzLCA2NjEyMiwgNjYxMzEsIAorICAgIDY2MTQwLCA2NjE0MywgNjYxNDYsIDY2MTQ5LCA2NjE1MSwgNjYxNTQsIDY2MTU3LCA2NjE2MCwgNjYxNjUsIDY2MTcwLCAKKyAgICA2NjE3MywgNjYxODAsIDY2MTg3LCA2NjE5NCwgNjYyMDEsIDY2MjA0LCA2NjIwOSwgNjYyMTEsIDY2MjE1LCA2NjIxNywgCisgICAgNjYyMTksIDY2MjIyLCA2NjIyNSwgNjYyMjgsIDY2MjMxLCA2NjIzNCwgNjYyMzcsIDY2MjQwLCA2NjI0NSwgNjYyNTAsIAorICAgIDY2MjUzLCA2NjI1NiwgNjYyNTksIDY2MjYyLCA2NjI2NSwgNjYyNjgsIDY2MjcxLCA2NjI3NSwgNjYyNzgsIDY2MjgxLCAKKyAgICA2NjI4NCwgNjYyODcsIDY2MjkwLCA2NjI5NSwgNjYyOTgsIDY2MzAxLCA2NjMwNCwgNjYzMDksIDY2MzE0LCA2NjMxOSwgCisgICAgNjYzMjQsIDY2MzI5LCA2NjMzNCwgNjYzMzksIDY2MzQ0LCA2NjM1MCwgNjYzNTgsIDY2MzYwLCA2NjM2MywgNjYzNjYsIAorICAgIDY2MzY5LCA2NjM3MiwgNjYzNzgsIDY2Mzg2LCA2NjM4OSwgNjYzOTIsIDY2Mzk3LCA2NjQwMCwgNjY0MDMsIDY2NDA2LCAKKyAgICA2NjQxMSwgNjY0MTQsIDY2NDE3LCA2NjQyMiwgNjY0MjUsIDY2NDI4LCA2NjQzMywgNjY0MzYsIDY2NDM5LCA2NjQ0NCwgCisgICAgNjY0NDksIDY2NDU0LCA2NjQ1NywgNjY0NjAsIDY2NDYzLCA2NjQ2NiwgNjY0NzIsIDY2NDc1LCA2NjQ3OCwgNjY0ODEsIAorICAgIDY2NDgzLCA2NjQ4NiwgNjY0ODksIDY2NDkyLCA2NjQ5NywgNjY1MDAsIDY2NTAzLCA2NjUwNiwgNjY1MDksIDY2NTEyLCAKKyAgICA2NjUxNywgNjY1MjAsIDY2NTIzLCA2NjUyNiwgNjY1MjksIDY2NTMyLCA2NjUzNSwgNjY1MzgsIDY2NTQxLCA2NjU0NCwgCisgICAgNjY1NTAsIDY2NTU1LCA2NjU2MywgNjY1NzEsIDY2NTc5LCA2NjU4NywgNjY1OTUsIDY2NjAzLCA2NjYxMiwgNjY2MjAsIAorICAgIDY2NjI5LCA2NjYzOCwgNjY2NDcsIDY2NjU2LCA2NjY2NSwgNjY2NzQsIDY2NjgzLCA2NjY5MiwgNjY3MDEsIDY2NzEwLCAKKyAgICA2NjcxOSwgNjY3MjgsIDY2NzM3LCA2Njc0NiwgNjY3NTUsIDY2NzY0LCA2Njc3MywgNjY3ODIsIDY2NzkxLCA2NjgwMCwgCisgICAgNjY4MDksIDY2ODE4LCA2NjgyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xNzk5NCwzMDUgKzE5MTEzLDMwNSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY2MDg4LCA2NjA5NywgNjYxMDYsIDY2MTE3LCA2NjEyNCwgNjYxMjksIDY2MTM0LCA2NjE0MSwgNjYxNDgsIDY2MTU0LCAKLSAgICA2NjE1OSwgNjYxNjQsIDY2MTY5LCA2NjE3NCwgNjYxODEsIDY2MTg2LCA2NjE5MSwgNjYxOTYsIDY2MjA3LCA2NjIxMiwgCi0gICAgNjYyMTcsIDY2MjI0LCA2NjIyOSwgNjYyMzYsIDY2MjQxLCA2NjI0NiwgNjYyNTMsIDY2MjYwLCA2NjI2NywgNjYyNzYsIAotICAgIDY2Mjg1LCA2NjI5MCwgNjYyOTUsIDY2MzAwLCA2NjMwNywgNjYzMTIsIDY2MzIyLCA2NjMyOSwgNjYzMzQsIDY2MzM5LCAKLSAgICA2NjM0NCwgNjYzNDksIDY2MzU0LCA2NjM1OSwgNjYzNjgsIDY2Mzc1LCA2NjM4MiwgNjYzODcsIDY2Mzk0LCA2NjM5OSwgCi0gICAgNjY0MDYsIDY2NDE1LCA2NjQyNiwgNjY0MzEsIDY2NDQwLCA2NjQ0NSwgNjY0NTIsIDY2NDYxLCA2NjQ3MCwgNjY0NzUsIAotICAgIDY2NDgwLCA2NjQ4NywgNjY0OTMsIDY2NTAwLCA2NjUwNywgNjY1MTEsIDY2NTE1LCA2NjUxOCwgNjY1MjIsIDY2NTI2LCAKLSAgICA2NjUzMCwgNjY1MzQsIDY2NTM4LCA2NjU0MiwgNjY1NDYsIDY2NTQ5LCA2NjU1MywgNjY1NTcsIDY2NTYxLCA2NjU2NSwgCi0gICAgNjY1NjksIDY2NTczLCA2NjU3NiwgNjY1ODAsIDY2NTg0LCA2NjU4NywgNjY1OTEsIDY2NTk1LCA2NjU5OSwgNjY2MDMsIAotICAgIDY2NjA3LCA2NjYxMSwgNjY2MTUsIDY2NjE5LCA2NjYyMywgNjY2MjcsIDY2NjMxLCA2NjYzNSwgNjY2MzksIDY2NjQzLCAKLSAgICA2NjY0NywgNjY2NTEsIDY2NjU1LCA2NjY1OSwgNjY2NjMsIDY2NjY3LCA2NjY3MSwgNjY2NzUsIDY2Njc5LCA2NjY4MywgCi0gICAgNjY2ODcsIDY2NjkxLCA2NjY5NSwgNjY2OTksIDY2NzAzLCA2NjcwNywgNjY3MTEsIDY2NzE1LCA2NjcxOSwgNjY3MjMsIAotICAgIDY2NzI3LCA2NjczMSwgNjY3MzUsIDY2NzM5LCA2Njc0MywgNjY3NDcsIDY2NzUxLCA2Njc1NSwgNjY3NTksIDY2NzYzLCAKLSAgICA2Njc2NiwgNjY3NzAsIDY2Nzc0LCA2Njc3OCwgNjY3ODIsIDY2Nzg2LCA2Njc5MCwgNjY3OTQsIDY2Nzk4LCA2NjgwMiwgCi0gICAgNjY4MDYsIDY2ODEwLCA2NjgxNCwgNjY4MTgsIDY2ODIyLCA2NjgyNiwgNjY4MzAsIDY2ODM0LCA2NjgzOCwgNjY4NDIsIAotICAgIDY2ODQ2LCA2Njg1MCwgNjY4NTQsIDY2ODU4LCA2Njg2MiwgNjY4NjYsIDY2ODcwLCA2Njg3NCwgNjY4NzgsIDY2ODgyLCAKLSAgICA2Njg4NiwgNjY4OTAsIDY2ODk0LCA2Njg5OCwgNjY5MDIsIDY2OTA2LCA2NjkxMCwgNjY5MTQsIDY2OTE4LCA2NjkyMiwgCi0gICAgNjY5MjYsIDY2OTMwLCA2NjkzNCwgNjY5MzgsIDY2OTQyLCA2Njk0NiwgNjY5NTAsIDY2OTU0LCA2Njk1OCwgNjY5NjIsIAotICAgIDY2OTY2LCA2Njk3MCwgNjY5NzQsIDY2OTc4LCA2Njk4MiwgNjY5ODYsIDY2OTkwLCA2Njk5NCwgNjY5OTgsIDY3MDAyLCAKLSAgICA2NzAwNiwgNjcwMTAsIDY3MDE0LCA2NzAxOCwgNjcwMjIsIDY3MDI2LCA2NzAzMCwgNjcwMzQsIDY3MDM4LCA2NzA0MiwgCi0gICAgNjcwNDYsIDY3MDUwLCA2NzA1NCwgNjcwNTgsIDY3MDYyLCA2NzA2NiwgNjcwNzAsIDY3MDc0LCA2NzA3OCwgNjcwODIsIAotICAgIDY3MDg2LCA2NzA5MCwgNjcwOTQsIDY3MDk4LCA2NzEwMiwgNjcxMDYsIDY3MTEwLCA2NzExNCwgNjcxMTgsIDY3MTIyLCAKLSAgICA2NzEyNiwgNjcxMzAsIDY3MTM0LCA2NzEzOCwgNjcxNDIsIDY3MTQ2LCA2NzE1MCwgNjcxNTQsIDY3MTU4LCA2NzE2MiwgCi0gICAgNjcxNjYsIDY3MTcwLCA2NzE3NCwgNjcxNzgsIDY3MTgyLCA2NzE4NiwgNjcxOTAsIDY3MTk0LCA2NzE5OCwgNjcyMDIsIAotICAgIDY3MjA2LCA2NzIxMCwgNjcyMTQsIDY3MjE4LCA2NzIyMiwgNjcyMjYsIDY3MjMwLCA2NzIzNCwgNjcyMzcsIDY3MjQxLCAKLSAgICA2NzI0NSwgNjcyNDksIDY3MjUzLCA2NzI1NywgNjcyNjEsIDY3MjY1LCA2NzI2OSwgNjcyNzMsIDY3Mjc3LCA2NzI4MSwgCi0gICAgNjcyODUsIDY3Mjg5LCA2NzI5MywgNjcyOTcsIDY3MzAxLCA2NzMwNSwgNjczMDksIDY3MzEzLCA2NzMxNywgNjczMjEsIAotICAgIDY3MzI1LCA2NzMyOSwgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCAKLSAgICA2NzM2NSwgNjczNjksIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgCi0gICAgNjc0MDUsIDY3NDA5LCA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIAotICAgIDY3NDQ1LCA2NzQ0OSwgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCAKLSAgICA2NzQ4NSwgNjc0ODksIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCA2NzUwOSwgNjc1MTMsIDY3NTE3LCA2NzUyMSwgCi0gICAgNjc1MjUsIDY3NTI5LCA2NzUzMywgNjc1MzcsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTUzLCA2NzU1NywgNjc1NjEsIAotICAgIDY3NTY1LCA2NzU2OSwgNjc1NzMsIDY3NTc3LCA2NzU4MSwgNjc1ODUsIDY3NTg5LCA2NzU5MywgNjc1OTcsIDY3NjAxLCAKLSAgICA2NzYwNSwgNjc2MDksIDY3NjEzLCA2NzYxNywgNjc2MjEsIDY3NjI1LCA2NzYyOSwgNjc2MzMsIDY3NjM3LCA2NzY0MSwgCi0gICAgNjc2NDUsIDY3NjQ5LCA2NzY1MywgNjc2NTcsIDY3NjYxLCA2NzY2NSwgNjc2NjksIDY3NjczLCA2NzY3NywgNjc2ODEsIAotICAgIDY3Njg1LCA2NzY4OSwgNjc2OTMsIDY3Njk3LCA2NzcwMCwgNjc3MDQsIDY3NzA4LCA2NzcxMiwgNjc3MTYsIDY3NzIwLCAKLSAgICA2NzcyNCwgNjc3MjgsIDY3NzMyLCA2NzczNiwgNjc3NDAsIDY3NzQ0LCA2Nzc0OCwgNjc3NTIsIDY3NzU2LCA2Nzc2MCwgCi0gICAgNjc3NjQsIDY3NzY4LCA2Nzc3MiwgNjc3NzYsIDY3NzgwLCA2Nzc4NCwgNjc3ODgsIDY3NzkyLCA2Nzc5NiwgNjc4MDAsIAotICAgIDY3ODA0LCA2NzgwOCwgNjc4MTIsIDY3ODE2LCA2NzgyMCwgNjc4MjQsIDY3ODI4LCA2NzgzMiwgNjc4MzYsIDY3ODQwLCAKLSAgICA2Nzg0NCwgNjc4NDgsIDY3ODUyLCA2Nzg1NiwgNjc4NjAsIDY3ODY0LCA2Nzg2OCwgNjc4NzIsIDY3ODc2LCA2Nzg4MCwgCi0gICAgNjc4ODQsIDY3ODg4LCA2Nzg5MiwgNjc4OTYsIDY3OTAwLCA2NzkwNCwgNjc5MDgsIDY3OTEyLCA2NzkxNiwgNjc5MjAsIAotICAgIDY3OTI0LCA2NzkyOCwgNjc5MzIsIDY3OTM2LCA2Nzk0MCwgNjc5NDQsIDY3OTQ4LCA2Nzk1MiwgNjc5NTYsIDY3OTYwLCAKLSAgICA2Nzk2NCwgNjc5NjgsIDY3OTcyLCA2Nzk3NiwgNjc5ODAsIDY3OTg0LCA2Nzk4OCwgNjc5OTIsIDY3OTk2LCA2ODAwMCwgCi0gICAgNjgwMDQsIDY4MDA4LCA2ODAxMiwgNjgwMTYsIDY4MDIwLCA2ODAyNCwgNjgwMjgsIDY4MDMyLCA2ODAzNiwgNjgwNDAsIAotICAgIDY4MDQ0LCA2ODA0OCwgNjgwNTIsIDY4MDU2LCA2ODA2MCwgNjgwNjQsIDY4MDY4LCA2ODA3MiwgNjgwNzYsIDY4MDgwLCAKLSAgICA2ODA4NCwgNjgwODgsIDY4MDkyLCA2ODA5NiwgNjgxMDAsIDY4MTA0LCA2ODEwOCwgNjgxMTIsIDY4MTE2LCA2ODEyMCwgCi0gICAgNjgxMjQsIDY4MTI4LCA2ODEzMiwgNjgxMzYsIDY4MTQwLCA2ODE0NCwgNjgxNDgsIDY4MTUyLCA2ODE1NiwgNjgxNjAsIAotICAgIDY4MTY0LCA2ODE2OCwgNjgxNzIsIDY4MTc2LCA2ODE4MCwgNjgxODQsIDY4MTg4LCA2ODE5MiwgNjgxOTYsIDY4MjAwLCAKLSAgICA2ODIwNCwgNjgyMDgsIDY4MjEyLCA2ODIxNiwgNjgyMjAsIDY4MjI0LCA2ODIyOCwgNjgyMzIsIDY4MjM2LCA2ODI0MCwgCi0gICAgNjgyNDQsIDY4MjQ4LCA2ODI1MiwgNjgyNTYsIDY4MjYwLCA2ODI2NCwgNjgyNjgsIDY4MjcyLCA2ODI3NiwgNjgyODAsIAotICAgIDY4Mjg0LCA2ODI4OCwgNjgyOTIsIDY4Mjk2LCA2ODMwMCwgNjgzMDQsIDY4MzA4LCA2ODMxMiwgNjgzMTYsIDY4MzIwLCAKLSAgICA2ODMyNCwgNjgzMjgsIDY4MzMyLCA2ODMzNiwgNjgzNDAsIDY4MzQ0LCA2ODM0OCwgNjgzNTIsIDY4MzU2LCA2ODM2MCwgCi0gICAgNjgzNjQsIDY4MzY4LCA2ODM3MiwgNjgzNzYsIDY4MzgwLCA2ODM4NCwgNjgzODgsIDY4MzkyLCA2ODM5NiwgNjg0MDAsIAotICAgIDY4NDA0LCA2ODQwOCwgNjg0MTIsIDY4NDE2LCA2ODQyMCwgNjg0MjQsIDY4NDI4LCA2ODQzMiwgNjg0MzYsIDY4NDQwLCAKLSAgICA2ODQ0NCwgNjg0NDgsIDY4NDUyLCA2ODQ1NiwgNjg0NjAsIDY4NDY0LCA2ODQ2OCwgNjg0NzIsIDY4NDc2LCA2ODQ4MCwgCi0gICAgNjg0ODQsIDY4NDg4LCA2ODQ5MiwgNjg0OTYsIDY4NTAwLCA2ODUwNCwgNjg1MDgsIDY4NTEyLCA2ODUxNiwgNjg1MjAsIAotICAgIDY4NTI0LCA2ODUyOCwgNjg1MzIsIDY4NTM2LCA2ODU0MCwgNjg1NDQsIDY4NTQ4LCA2ODU1MiwgNjg1NTUsIDY4NTU5LCAKLSAgICA2ODU2MywgNjg1NjcsIDY4NTcxLCA2ODU3NSwgNjg1NzksIDY4NTgzLCA2ODU4NywgNjg1OTEsIDY4NTk1LCA2ODU5OSwgCi0gICAgNjg2MDMsIDY4NjA3LCA2ODYxMSwgNjg2MTUsIDY4NjE5LCA2ODYyMywgNjg2MjcsIDY4NjMxLCA2ODYzNSwgNjg2MzksIAotICAgIDY4NjQzLCA2ODY0NywgNjg2NTEsIDY4NjU1LCA2ODY1OSwgNjg2NjMsIDY4NjY3LCA2ODY3MSwgNjg2NzUsIDY4Njc5LCAKLSAgICA2ODY4MywgNjg2ODcsIDY4NjkxLCA2ODY5NSwgNjg2OTksIDY4NzAzLCA2ODcwNywgNjg3MTEsIDY4NzE1LCA2ODcxOSwgCi0gICAgNjg3MjMsIDY4NzI3LCA2ODczMSwgNjg3MzUsIDY4NzM5LCA2ODc0MywgNjg3NDcsIDY4NzUxLCA2ODc1NSwgNjg3NTksIAotICAgIDY4NzYzLCA2ODc2NywgNjg3NzEsIDY4Nzc1LCA2ODc3OSwgNjg3ODMsIDY4Nzg3LCA2ODc5MSwgNjg3OTUsIDY4Nzk5LCAKLSAgICA2ODgwMywgNjg4MDcsIDY4ODExLCA2ODgxNSwgNjg4MTksIDY4ODIzLCA2ODgyNywgNjg4MzEsIDY4ODM1LCA2ODgzOSwgCi0gICAgNjg4NDMsIDY4ODQ3LCA2ODg1MSwgNjg4NTUsIDY4ODU5LCA2ODg2MywgNjg4NjcsIDY4ODcxLCA2ODg3NSwgNjg4NzksIAotICAgIDY4ODgzLCA2ODg4NywgNjg4OTEsIDY4ODk1LCA2ODg5OSwgNjg5MDMsIDY4OTA3LCA2ODkxMSwgNjg5MTUsIDY4OTE5LCAKLSAgICA2ODkyMywgNjg5MjcsIDY4OTMxLCA2ODkzNSwgNjg5MzksIDY4OTQzLCA2ODk0NywgNjg5NTEsIDY4OTU1LCA2ODk1OSwgCi0gICAgNjg5NjMsIDY4OTY3LCA2ODk3MSwgNjg5NzUsIDY4OTc5LCA2ODk4MywgNjg5ODcsIDY4OTkxLCA2ODk5NSwgNjg5OTksIAotICAgIDY5MDAzLCA2OTAwNywgNjkwMTAsIDY5MDE0LCA2OTAxOCwgNjkwMjIsIDY5MDI2LCA2OTAzMCwgNjkwMzQsIDY5MDM4LCAKLSAgICA2OTA0MiwgNjkwNDYsIDY5MDUwLCA2OTA1NCwgNjkwNTgsIDY5MDYyLCA2OTA2NiwgNjkwNzAsIDY5MDc0LCA2OTA3OCwgCi0gICAgNjkwODIsIDY5MDg2LCA2OTA5MCwgNjkwOTQsIDY5MDk4LCA2OTEwMiwgNjkxMDYsIDY5MTEwLCA2OTExNCwgNjkxMTgsIAotICAgIDY5MTIyLCA2OTEyNiwgNjkxMzAsIDY5MTM0LCA2OTEzOCwgNjkxNDIsIDY5MTQ2LCA2OTE1MCwgNjkxNTQsIDY5MTU4LCAKLSAgICA2OTE2MiwgNjkxNjYsIDY5MTcwLCA2OTE3NCwgNjkxNzgsIDY5MTgyLCA2OTE4NiwgNjkxOTAsIDY5MTk0LCA2OTE5OCwgCi0gICAgNjkyMDIsIDY5MjA2LCA2OTIxMCwgNjkyMTQsIDY5MjE4LCA2OTIyMiwgNjkyMjYsIDY5MjMwLCA2OTIzNCwgNjkyMzgsIAotICAgIDY5MjQyLCA2OTI0NiwgNjkyNTAsIDY5MjU0LCA2OTI1OCwgNjkyNjIsIDY5MjY2LCA2OTI3MCwgNjkyNzQsIDY5Mjc4LCAKLSAgICA2OTI4MiwgNjkyODYsIDY5MjkwLCA2OTI5NCwgNjkyOTgsIDY5MzAyLCA2OTMwNiwgNjkzMTAsIDY5MzE0LCA2OTMxOCwgCi0gICAgNjkzMjIsIDY5MzI2LCA2OTMzMCwgNjkzMzQsIDY5MzM4LCA2OTM0MiwgNjkzNDYsIDY5MzUwLCA2OTM1NCwgNjkzNTgsIAotICAgIDY5MzYyLCA2OTM2NiwgNjkzNzAsIDY5Mzc0LCA2OTM3OCwgNjkzODIsIDY5Mzg2LCA2OTM5MCwgNjkzOTQsIDY5Mzk4LCAKLSAgICA2OTQwMiwgNjk0MDYsIDY5NDEwLCA2OTQxNCwgNjk0MTgsIDY5NDIyLCA2OTQyNiwgNjk0MzAsIDY5NDM0LCA2OTQzOCwgCi0gICAgNjk0NDIsIDY5NDQ2LCA2OTQ1MCwgNjk0NTQsIDY5NDU4LCA2OTQ2MiwgNjk0NjYsIDY5NDcwLCA2OTQ3NCwgNjk0NzgsIAotICAgIDY5NDgyLCA2OTQ4NiwgNjk0OTAsIDY5NDk0LCA2OTQ5OCwgNjk1MDIsIDY5NTA2LCA2OTUxMCwgNjk1MTQsIDY5NTE4LCAKLSAgICA2OTUyMiwgNjk1MjYsIDY5NTMwLCA2OTUzNCwgNjk1MzgsIDY5NTQyLCA2OTU0NiwgNjk1NTAsIDY5NTU0LCA2OTU1OCwgCi0gICAgNjk1NjIsIDY5NTY2LCA2OTU3MCwgNjk1NzQsIDY5NTc4LCA2OTU4MiwgNjk1ODYsIDY5NTkwLCA2OTU5NCwgNjk1OTgsIAotICAgIDY5NjAyLCA2OTYwNiwgNjk2MTAsIDY5NjEzLCA2OTYxNywgNjk2MjEsIDY5NjI1LCA2OTYyOSwgNjk2MzMsIDY5NjM3LCAKLSAgICA2OTY0MSwgNjk2NDUsIDY5NjQ5LCA2OTY1MywgNjk2NTcsIDY5NjYxLCA2OTY2NSwgNjk2NjksIDY5NjczLCA2OTY3NywgCi0gICAgNjk2ODEsIDY5Njg1LCA2OTY4OSwgNjk2OTMsIDY5Njk3LCA2OTcwMSwgNjk3MDUsIDY5NzA5LCA2OTcxMywgNjk3MTcsIAotICAgIDY5NzIxLCA2OTcyNSwgNjk3MjksIDY5NzMzLCA2OTczNywgNjk3NDEsIDY5NzQ1LCA2OTc0OSwgNjk3NTMsIDY5NzU3LCAKLSAgICA2OTc2MSwgNjk3NjUsIDY5NzY5LCA2OTc3MywgNjk3NzcsIDY5NzgxLCA2OTc4NSwgNjk3ODksIDY5NzkzLCA2OTc5NywgCi0gICAgNjk4MDEsIDY5ODA1LCA2OTgwOSwgNjk4MTMsIDY5ODE3LCA2OTgyMSwgNjk4MjUsIDY5ODI5LCA2OTgzMywgNjk4MzcsIAotICAgIDY5ODQxLCA2OTg0NSwgNjk4NDksIDY5ODUzLCA2OTg1NywgNjk4NjEsIDY5ODY1LCA2OTg2OSwgNjk4NzMsIDY5ODc3LCAKLSAgICA2OTg4MSwgNjk4ODUsIDY5ODg5LCA2OTg5MywgNjk4OTcsIDY5OTAxLCA2OTkwNSwgNjk5MDksIDY5OTEzLCA2OTkxNywgCi0gICAgNjk5MjEsIDY5OTI1LCA2OTkyOSwgNjk5MzMsIDY5OTM3LCA2OTk0MSwgNjk5NDUsIDY5OTQ5LCA2OTk1MywgNjk5NTcsIAotICAgIDY5OTYxLCA2OTk2NSwgNjk5NjksIDY5OTczLCA2OTk3NywgNjk5ODEsIDY5OTg1LCA2OTk4OSwgNjk5OTMsIDY5OTk3LCAKLSAgICA3MDAwMSwgNzAwMDUsIDcwMDA5LCA3MDAxMywgNzAwMTcsIDcwMDIxLCA3MDAyNSwgNzAwMjksIDcwMDMzLCA3MDAzNywgCi0gICAgNzAwNDEsIDcwMDQ1LCA3MDA0OSwgNzAwNTMsIDcwMDU3LCA3MDA2MSwgNzAwNjUsIDcwMDY5LCA3MDA3MywgNzAwNzcsIAotICAgIDcwMDgxLCA3MDA4NSwgNzAwODksIDcwMDkzLCA3MDA5NywgNzAxMDEsIDcwMTA1LCA3MDEwOSwgNzAxMTMsIDcwMTE3LCAKLSAgICA3MDEyMSwgNzAxMjUsIDcwMTI5LCA3MDEzMywgNzAxMzcsIDcwMTQxLCA3MDE0NSwgNzAxNDksIDcwMTUzLCA3MDE1NywgCi0gICAgNzAxNjEsIDcwMTY1LCA3MDE2OSwgNzAxNzMsIDcwMTc3LCA3MDE4MSwgNzAxODUsIDcwMTg5LCA3MDE5MywgNzAxOTcsIAotICAgIDcwMjAxLCA3MDIwNSwgNzAyMDksIDcwMjEzLCA3MDIxNywgNzAyMjEsIDcwMjI1LCA3MDIyOSwgNzAyMzMsIDcwMjM3LCAKLSAgICA3MDI0MSwgNzAyNDUsIDcwMjQ5LCA3MDI1MywgNzAyNTcsIDcwMjYxLCA3MDI2NSwgNzAyNjksIDcwMjczLCA3MDI3NywgCi0gICAgNzAyODEsIDcwMjg1LCA3MDI4OSwgNzAyOTMsIDcwMjk3LCA3MDMwMSwgNzAzMDUsIDcwMzA5LCA3MDMxMywgNzAzMTcsIAotICAgIDcwMzIxLCA3MDMyNSwgNzAzMjksIDcwMzMzLCA3MDMzNywgNzAzNDEsIDcwMzQ1LCA3MDM0OSwgNzAzNTMsIDcwMzU3LCAKLSAgICA3MDM2MSwgNzAzNjUsIDcwMzY5LCA3MDM3MywgNzAzNzcsIDcwMzgxLCA3MDM4NSwgNzAzODksIDcwMzkzLCA3MDM5NywgCi0gICAgNzA0MDEsIDcwNDA1LCA3MDQwOSwgNzA0MTMsIDcwNDE3LCA3MDQyMSwgNzA0MjUsIDcwNDI5LCA3MDQzMywgNzA0MzcsIAotICAgIDcwNDQxLCA3MDQ0NSwgNzA0NDksIDcwNDUzLCA3MDQ1NywgNzA0NjEsIDcwNDY1LCA3MDQ2OSwgNzA0NzMsIDcwNDc3LCAKLSAgICA3MDQ4MSwgNzA0ODUsIDcwNDg5LCA3MDQ5MywgNzA0OTcsIDcwNTAxLCA3MDUwNSwgNzA1MDksIDcwNTEzLCA3MDUxNywgCi0gICAgNzA1MjEsIDcwNTI1LCA3MDUyOSwgNzA1MzMsIDcwNTM3LCA3MDU0MSwgNzA1NDUsIDcwNTQ5LCA3MDU1MywgNzA1NTcsIAotICAgIDcwNTYxLCA3MDU2NSwgNzA1NjksIDcwNTczLCA3MDU3NywgNzA1ODEsIDcwNTg1LCA3MDU4OSwgNzA1OTMsIDcwNTk3LCAKLSAgICA3MDYwMSwgNzA2MDUsIDcwNjA5LCA3MDYxMywgNzA2MTcsIDcwNjIxLCA3MDYyNSwgNzA2MjksIDcwNjMzLCA3MDYzNywgCi0gICAgNzA2NDEsIDcwNjQ1LCA3MDY0OSwgNzA2NTMsIDcwNjU3LCA3MDY2MSwgNzA2NjUsIDcwNjY5LCA3MDY3MywgNzA2NzcsIAotICAgIDcwNjgxLCA3MDY4NSwgNzA2ODksIDcwNjkzLCA3MDY5NywgNzA3MDEsIDcwNzA1LCA3MDcwOSwgNzA3MTMsIDcwNzE3LCAKLSAgICA3MDcyMSwgNzA3MjUsIDcwNzI5LCA3MDczMywgNzA3MzcsIDcwNzQxLCA3MDc0NSwgNzA3NDksIDcwNzUzLCA3MDc1NywgCi0gICAgNzA3NjEsIDcwNzY1LCA3MDc2OSwgNzA3NzMsIDcwNzc3LCA3MDc4MSwgNzA3ODUsIDcwNzg5LCA3MDc5MywgNzA3OTcsIAotICAgIDcwODAxLCA3MDgwNSwgNzA4MDksIDcwODEzLCA3MDgxNywgNzA4MjEsIDcwODI1LCA3MDgyOSwgNzA4MzMsIDcwODM3LCAKLSAgICA3MDg0MSwgNzA4NDUsIDcwODQ5LCA3MDg1MywgNzA4NTcsIDcwODYxLCA3MDg2NSwgNzA4NjksIDcwODczLCA3MDg3NywgCi0gICAgNzA4ODEsIDcwODg1LCA3MDg4OSwgNzA4OTMsIDcwODk3LCA3MDkwMSwgNzA5MDUsIDcwOTA5LCA3MDkxMywgNzA5MTcsIAotICAgIDcwOTIxLCA3MDkyNSwgNzA5MjksIDcwOTMzLCA3MDkzNywgNzA5NDEsIDcwOTQ1LCA3MDk0OSwgNzA5NTMsIDcwOTU3LCAKLSAgICA3MDk2MSwgNzA5NjUsIDcwOTY5LCA3MDk3MywgNzA5NzcsIDcwOTgxLCA3MDk4NSwgNzA5ODksIDcwOTkzLCA3MDk5NywgCi0gICAgNzEwMDEsIDcxMDA1LCA3MTAwOSwgNzEwMTMsIDcxMDE3LCA3MTAyMSwgNzEwMjUsIDcxMDI5LCA3MTAzMywgNzEwMzcsIAotICAgIDcxMDQxLCA3MTA0NSwgNzEwNDksIDcxMDUzLCA3MTA1NywgNzEwNjEsIDcxMDY1LCA3MTA2OSwgNzEwNzMsIDcxMDc3LCAKLSAgICA3MTA4MSwgNzEwODUsIDcxMDg5LCA3MTA5MywgNzEwOTcsIDcxMTAxLCA3MTEwNSwgNzExMDksIDcxMTEzLCA3MTExNywgCi0gICAgNzExMjEsIDcxMTI1LCA3MTEyOSwgNzExMzMsIDcxMTM3LCA3MTE0MSwgNzExNDUsIDcxMTQ5LCA3MTE1MywgMCwgMCwgMCwgCi0gICAgNzExNTcsIDcxMTYxLCA3MTE2NSwgNzExNjksIDcxMTczLCA3MTE3NywgNzExODEsIDcxMTg1LCA3MTE4OSwgNzExOTMsIAotICAgIDcxMTk3LCA3MTIwMSwgNzEyMDUsIDcxMjA5LCA3MTIxMywgNzEyMTcsIDcxMjIxLCA3MTIyNSwgNzEyMjksIDcxMjMzLCAKLSAgICA3MTIzNywgNzEyNDEsIDcxMjQ1LCA3MTI0OSwgNzEyNTMsIDcxMjU3LCA3MTI2MSwgNzEyNjUsIDcxMjY5LCA3MTI3MywgCi0gICAgNzEyNzcsIDcxMjgxLCA3MTI4NSwgNzEyODksIDcxMjkzLCA3MTI5NywgNzEzMDEsIDcxMzA1LCA3MTMwOSwgNzEzMTMsIAotICAgIDcxMzE3LCA3MTMyMSwgNzEzMjUsIDcxMzI5LCA3MTMzMywgNzEzMzcsIDcxMzQxLCA3MTM0NSwgNzEzNDksIDcxMzUzLCAKLSAgICA3MTM1NywgNzEzNjEsIDcxMzY1LCA3MTM2OSwgNzEzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxMzc3LCAKLSAgICA3MTM4MiwgNzEzODYsIDcxMzkxLCA3MTM5NiwgNzE0MDEsIDcxNDA2LCA3MTQxMSwgNzE0MTUsIDcxNDIwLCA3MTQyNSwgCi0gICAgNzE0MzAsIDcxNDM1LCA3MTQ0MCwgNzE0NDUsIDcxNDUwLCA3MTQ1NCwgNzE0NTksIDcxNDY0LCA3MTQ2OSwgNzE0NzQsIAotICAgIDcxNDc5LCA3MTQ4NCwgNzE0ODgsIDcxNDkzLCA3MTQ5OCwgNzE1MDMsIDcxNTA4LCA3MTUxMywgNzE1MTcsIDcxNTIyLCAKLSAgICA3MTUyNiwgNzE1MzEsIDcxNTM1LCA3MTU0MCwgNzE1NDQsIDcxNTQ4LCA3MTU1MiwgNzE1NTcsIDcxNTYyLCA3MTU2NywgCi0gICAgNzE1NzUsIDcxNTgzLCA3MTU5MSwgNzE1OTksIDcxNjA3LCA3MTYxNSwgNzE2MjEsIDcxNjI5LCA3MTYzMywgNzE2MzcsIAotICAgIDcxNjQxLCA3MTY0NSwgNzE2NDksIDcxNjUzLCA3MTY1NywgNzE2NjEsIDcxNjY1LCA3MTY2OSwgNzE2NzMsIDcxNjc3LCAKLSAgICA3MTY4MSwgNzE2ODUsIDcxNjg5LCA3MTY5MywgNzE2OTcsIDcxNzAxLCA3MTcwNSwgNzE3MDksIDcxNzEzLCA3MTcxNywgCi0gICAgNzE3MjEsIDcxNzI1LCA3MTcyOSwgNzE3MzMsIDcxNzM3LCA3MTc0MSwgNzE3NDUsIDcxNzQ5LCA3MTc1MywgNzE3NTcsIAotICAgIDcxNzYxLCA3MTc2NSwgNzE3NjksIDcxNzczLCA3MTc3NiwgNzE3ODAsIDcxNzg0LCA3MTc4OCwgNzE3OTIsIDcxNzk2LCAKLSAgICA3MTgwMCwgNzE4MDQsIDcxODA4LCA3MTgxMiwgNzE4MTYsIDcxODIwLCA3MTgyNCwgNzE4MjgsIDcxODMyLCA3MTgzNiwgCi0gICAgNzE4NDAsIDcxODQ0LCA3MTg0OCwgNzE4NTIsIDcxODU2LCA3MTg2MCwgNzE4NjQsIDcxODY4LCA3MTg3MiwgNzE4NzYsIAotICAgIDcxODgwLCA3MTg4NCwgNzE4ODgsIDcxODkyLCA3MTg5NiwgNzE5MDAsIDcxOTA0LCA3MTkwOCwgNzE5MTIsIDcxOTE2LCAKLSAgICA3MTkyMCwgNzE5MjMsIDcxOTI3LCA3MTkzMSwgNzE5MzQsIDcxOTM4LCA3MTk0MiwgNzE5NDYsIDcxOTQ5LCA3MTk1MywgCi0gICAgNzE5NTcsIDcxOTYxLCA3MTk2NSwgNzE5NjksIDcxOTczLCA3MTk3NywgNzE5ODEsIDcxOTg1LCA3MTk4OSwgNzE5OTMsIAotICAgIDcxOTk3LCA3MjAwMSwgNzIwMDUsIDcyMDA5LCA3MjAxMywgNzIwMTcsIDcyMDIxLCA3MjAyNSwgNzIwMjksIDcyMDMzLCAKLSAgICA3MjAzNywgNzIwNDEsIDcyMDQ1LCA3MjA0OCwgNzIwNTEsIDcyMDU1LCA3MjA1OSwgNzIwNjMsIDcyMDY2LCA3MjA3MCwgCi0gICAgNzIwNzQsIDcyMDc4LCA3MjA4MiwgNzIwODYsIDcyMDkwLCA3MjA5NCwgNzIwOTgsIDcyMTAyLCA3MjEwNiwgNzIxMTAsIAotICAgIDcyMTE0LCA3MjExOCwgNzIxMjIsIDcyMTI2LCA3MjEzMCwgNzIxMzQsIDcyMTM4LCA3MjE0MiwgNzIxNDYsIDcyMTUwLCAKLSAgICA3MjE1NCwgNzIxNTgsIDcyMTYyLCA3MjE2NiwgNzIxNzAsIDcyMTc0LCA3MjE3OCwgNzIxODIsIDcyMTg2LCA3MjE5MCwgCi0gICAgNzIxOTQsIDcyMTk4LCA3MjIwMiwgNzIyMDYsIDcyMjEwLCA3MjIxNCwgNzIyMTgsIDcyMjIxLCA3MjIyNSwgNzIyMjksIAotICAgIDcyMjMzLCA3MjIzNywgNzIyNDEsIDcyMjQ1LCA3MjI0OSwgNzIyNTMsIDcyMjU3LCA3MjI2MSwgNzIyNjUsIDcyMjY5LCAKLSAgICA3MjI3MywgNzIyNzcsIDcyMjgxLCA3MjI4NSwgNzIyODksIDcyMjkzLCA3MjI5NywgNzIzMDEsIDcyMzA1LCA3MjMwOSwgCi0gICAgNzIzMTMsIDcyMzE3LCA3MjMyMSwgNzIzMjUsIDcyMzI5LCA3MjMzMywgNzIzMzcsIDcyMzQxLCA3MjM0NSwgNzIzNDksIAotICAgIDcyMzUzLCA3MjM1NywgNzIzNjEsIDcyMzY1LCA3MjM2OCwgNzIzNzIsIDcyMzc2LCA3MjM4MCwgNzIzODQsIDcyMzg4LCAKLSAgICA3MjM5MiwgNzIzOTYsIDcyNDAwLCA3MjQwNCwgNzI0MDgsIDcyNDEyLCA3MjQxNiwgNzI0MjAsIDcyNDI0LCA3MjQyOCwgCi0gICAgNzI0MzIsIDcyNDM1LCA3MjQzOSwgNzI0NDMsIDcyNDQ3LCA3MjQ1MSwgNzI0NTUsIDcyNDU5LCA3MjQ2MywgNzI0NjcsIAotICAgIDcyNDcxLCA3MjQ3NSwgNzI0NzksIDcyNDgzLCA3MjQ4NywgNzI0OTEsIDcyNDk1LCA3MjQ5OSwgNzI1MDMsIDcyNTA3LCAKLSAgICA3MjUxMSwgNzI1MTUsIDcyNTE5LCA3MjUyMiwgNzI1MjYsIDcyNTMwLCA3MjUzNCwgNzI1MzgsIDcyNTQyLCA3MjU0NiwgCi0gICAgNzI1NTAsIDcyNTU0LCA3MjU1OCwgNzI1NjIsIDcyNTY2LCA3MjU3MCwgNzI1NzQsIDcyNTc4LCA3MjU4MiwgNzI1ODYsIAotICAgIDcyNTkwLCA3MjU5NCwgNzI1OTgsIDcyNjAyLCA3MjYwNiwgNzI2MTAsIDcyNjE0LCA3MjYxOCwgNzI2MjIsIDcyNjI2LCAKLSAgICA3MjYzMCwgNzI2MzQsIDcyNjM4LCA3MjY0MiwgNzI2NDYsIDcyNjUwLCA3MjY1NCwgNzI2NTgsIDcyNjYyLCA3MjY2NiwgCi0gICAgNzI2NzAsIDcyNjc0LCA3MjY3OCwgNzI2ODIsIDcyNjg2LCA3MjY5MCwgNzI2OTQsIDcyNjk3LCA3MjcwMiwgNzI3MDYsIAotICAgIDcyNzEyLCA3MjcxNywgNzI3MjMsIDcyNzI3LCA3MjczMSwgNzI3MzUsIDcyNzM5LCA3Mjc0MywgNzI3NDcsIDcyNzUxLCAKLSAgICA3Mjc1NSwgNzI3NTksIDcyNzYzLCA3Mjc2NywgNzI3NzEsIDcyNzc1LCA3Mjc3OSwgNzI3ODIsIDcyNzg1LCA3Mjc4OCwgCi0gICAgNzI3OTEsIDcyNzk0LCA3Mjc5NywgNzI4MDEsIDcyODA0LCA3MjgwOCwgNzI4MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyODE5LCA3MjgyNCwgNzI4MjksIDcyODM0LCA3MjgzOSwgCi0gICAgNzI4NDYsIDcyODUzLCA3Mjg1OCwgNzI4NjMsIDcyODY4LCA3Mjg3MywgNzI4ODAsIDcyODg3LCA3Mjg5NCwgNzI5MDEsIAotICAgIDcyOTA4LCA3MjkxNSwgNzI5MjUsIDcyOTM1LCA3Mjk0MiwgNzI5NDksIDcyOTU2LCA3Mjk2MywgNzI5NjksIDcyOTc1LCAKLSAgICA3Mjk4NCwgNzI5OTMsIDczMDAwLCA3MzAwNywgNzMwMTgsIDczMDI5LCA3MzAzNCwgNzMwMzksIDczMDQ2LCA3MzA1MywgCi0gICAgNzMwNjAsIDczMDY3LCA3MzA3NCwgNzMwODEsIDczMDg4LCA3MzA5NSwgNzMxMDEsIDczMTA3LCA3MzExMywgNzMxMTksIAotICAgIDczMTI2LCA3MzEzMywgNzMxMzgsIDczMTQyLCA3MzE0OSwgNzMxNTYsIDczMTYzLCA3MzE2NywgNzMxNzQsIDczMTc4LCAKLSAgICA3MzE4MywgNzMxODcsIDczMTkzLCA3MzE5OCwgNzMyMDQsIDczMjA5LCA3MzIxMywgNzMyMTcsIDczMjIwLCA3MzIyMywgCi0gICAgNzMyMjgsIDczMjMzLCA3MzIzOCwgNzMyNDMsIDczMjQ4LCA3MzI1MywgNzMyNTgsIDczMjYzLCA3MzI2OCwgNzMyNzMsIAotICAgIDczMjgxLCA3MzI4OSwgNzMyOTQsIDczMjk5LCA3MzMwNCwgNzMzMDksIDczMzE0LCA3MzMxOSwgNzMzMjQsIDczMzI5LCAKLSAgICA3MzMzNCwgNzMzMzksIDczMzQ0LCA3MzM0OSwgNzMzNTQsIDczMzU5LCA3MzM2NSwgNzMzNzEsIDczMzc3LCA3MzM4MywgCi0gICAgNzMzODgsIDczMzk0LCA3MzM5NywgNzM0MDAsIDczNDAzLCA3MzQwNywgNzM0MTEsIDczNDE1LCA3MzQxOSwgNzM0MjIsIAotICAgIDczNDI2LCA3MzQyOSwgNzM0MzMsIDczNDM2LCA3MzQ0MCwgNzM0NDQsIDczNDQ4LCA3MzQ1MiwgNzM0NTYsIDczNDYwLCAKLSAgICA3MzQ2NCwgNzM0NjgsIDczNDcyLCA3MzQ3NiwgNzM0ODAsIDczNDg0LCA3MzQ4OCwgNzM0OTIsIDczNDk2LCA3MzUwMCwgCi0gICAgNzM1MDQsIDczNTA4LCA3MzUxMiwgNzM1MTYsIDczNTIwLCA3MzUyNCwgNzM1MjcsIDczNTMxLCA3MzUzNSwgNzM1MzksIAotICAgIDczNTQzLCA3MzU0NywgNzM1NTEsIDczNTU1LCA3MzU1OSwgNzM1NjMsIDczNTY3LCA3MzU3MSwgNzM1NzUsIDczNTc5LCAKLSAgICA3MzU4MywgNzM1ODcsIDczNTkxLCA3MzU5NSwgNzM1OTksIDczNjAzLCA3MzYwNywgNzM2MTEsIDczNjE1LCA3MzYxOSwgCi0gICAgNzM2MjMsIDczNjI3LCA3MzYzMSwgNzM2MzUsIDczNjM5LCA3MzY0MywgNzM2NDcsIDczNjUxLCA3MzY1NSwgNzM2NTgsIAotICAgIDczNjYyLCA3MzY2NiwgNzM2NzAsIDczNjc0LCA3MzY3OCwgNzM2ODIsIDczNjg2LCA3MzY5MCwgNzM2OTQsIDczNjk4LCAKLSAgICA3MzcwMiwgNzM3MDYsIDczNzExLCA3MzcxNiwgNzM3MTksIDczNzI0LCA3MzcyNywgNzM3MzAsIDczNzMzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3MzczNywgNzM3NDYsIDczNzU1LCA3Mzc2NCwgNzM3NzMsIDczNzgyLCA3Mzc5MSwgNzM4MDAsIAotICAgIDczODA5LCA3MzgxNywgNzM4MjQsIDczODMyLCA3MzgzOSwgNzM4NDcsIDczODU3LCA3Mzg2NiwgNzM4NzYsIDczODg1LCAKLSAgICA3Mzg5NSwgNzM5MDMsIDczOTEwLCA3MzkxOCwgNzM5MjUsIDczOTMzLCA3MzkzOCwgNzM5NDMsIDczOTQ5LCA3Mzk1OCwgCi0gICAgNzM5NjQsIDczOTcwLCA3Mzk3NywgNzM5ODYsIDczOTk0LCA3NDAwMiwgNzQwMTAsIDc0MDE3LCA3NDAyNCwgNzQwMzEsIAotICAgIDc0MDM4LCA3NDA0MywgNzQwNDgsIDc0MDUzLCA3NDA1OCwgNzQwNjMsIDc0MDY4LCA3NDA3MywgNzQwNzgsIDc0MDg2LCAKLSAgICA3NDA5NCwgNzQxMDAsIDc0MTA1LCA3NDExMCwgNzQxMTUsIDc0MTIwLCA3NDEyNSwgNzQxMzAsIDc0MTM1LCA3NDE0MCwgCi0gICAgNzQxNDUsIDc0MTU0LCA3NDE2MywgNzQxNjgsIDc0MTczLCA3NDE4MywgNzQxOTMsIDc0MjAwLCA3NDIwNywgNzQyMTYsIAotICAgIDc0MjI1LCA3NDIzNywgNzQyNDksIDc0MjU1LCA3NDI2MSwgNzQyNjksIDc0Mjc3LCA3NDI4NywgNzQyOTcsIDc0MzA0LCAKLSAgICA3NDMxMSwgNzQzMTYsIDc0MzIxLCA3NDMzMywgNzQzNDUsIDc0MzUzLCA3NDM2MSwgNzQzNzEsIDc0MzgxLCA3NDM5MywgCi0gICAgNzQ0MDUsIDc0NDE0LCA3NDQyMywgNzQ0MzAsIDc0NDM3LCA3NDQ0NCwgNzQ0NTEsIDc0NDYwLCA3NDQ2OSwgNzQ0NzQsIAotICAgIDc0NDc5LCA3NDQ4NiwgNzQ0OTMsIDc0NTAwLCA3NDUwNywgNzQ1MTksIDc0NTMxLCA3NDUzNiwgNzQ1NDEsIDc0NTQ2LCAKLSAgICA3NDU1MSwgNzQ1NTYsIDc0NTYxLCA3NDU2NiwgNzQ1NzEsIDc0NTc1LCA3NDU4MCwgNzQ1ODUsIDc0NTkwLCA3NDU5NSwgCi0gICAgNzQ2MDAsIDc0NjA2LCA3NDYxMSwgNzQ2MTYsIDc0NjIzLCA3NDYzMCwgNzQ2MzcsIDc0NjQ0LCA3NDY1MSwgNzQ2NjAsIAotICAgIDc0NjY5LCA3NDY3NSwgNzQ2ODEsIDc0Njg3LCA3NDY5MywgNzQ2OTksIDc0NzA1LCA3NDcxMiwgNzQ3MTksIDc0NzI2LCAKLSAgICA3NDczMCwgNzQ3MzcsIDc0NzQyLCA3NDc0NywgNzQ3NTQsIDc0NzY3LCA3NDc3MywgNzQ3ODEsIDc0Nzg5LCA3NDc5NiwgCi0gICAgNzQ4MDMsIDc0ODEyLCA3NDgyMSwgNzQ4MjgsIDc0ODM1LCA3NDg0MiwgNzQ4NDksIDc0ODU2LCA3NDg2MywgNzQ4NzAsIAotICAgIDc0ODc3LCA3NDg4NCwgNzQ4OTEsIDc0OTAwLCA3NDkwOSwgNzQ5MTgsIDc0OTI3LCA3NDkzNiwgNzQ5NDUsIDc0OTU0LCAKLSAgICA3NDk2MywgNzQ5NzIsIDc0OTgxLCA3NDk4OCwgNzQ5OTUsIDc1MDAxLCAwLCAwLCA3NTAwOSwgNzUwMTYsIDc1MDIzLCAKLSAgICA3NTAzMSwgNzUwMzYsIDc1MDQxLCA3NTA0NiwgNzUwNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY2ODMwLCA2NjgzOSwgNjY4NDgsIDY2ODU5LCA2Njg2NiwgNjY4NzEsIDY2ODc2LCA2Njg4MywgNjY4OTAsIDY2ODk2LCAKKyAgICA2NjkwMSwgNjY5MDYsIDY2OTExLCA2NjkxNiwgNjY5MjMsIDY2OTI4LCA2NjkzMywgNjY5MzgsIDY2OTQ5LCA2Njk1NCwgCisgICAgNjY5NTksIDY2OTY2LCA2Njk3MSwgNjY5NzgsIDY2OTgzLCA2Njk4OCwgNjY5OTUsIDY3MDAyLCA2NzAwOSwgNjcwMTgsIAorICAgIDY3MDI3LCA2NzAzMiwgNjcwMzcsIDY3MDQyLCA2NzA0OSwgNjcwNTQsIDY3MDY0LCA2NzA3MSwgNjcwNzYsIDY3MDgxLCAKKyAgICA2NzA4NiwgNjcwOTEsIDY3MDk2LCA2NzEwMSwgNjcxMTAsIDY3MTE3LCA2NzEyNCwgNjcxMjksIDY3MTM2LCA2NzE0MSwgCisgICAgNjcxNDgsIDY3MTU3LCA2NzE2OCwgNjcxNzMsIDY3MTgyLCA2NzE4NywgNjcxOTQsIDY3MjAzLCA2NzIxMiwgNjcyMTcsIAorICAgIDY3MjIyLCA2NzIyOSwgNjcyMzUsIDY3MjQyLCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MCwgNjcyNjQsIDY3MjY4LCAKKyAgICA2NzI3MiwgNjcyNzYsIDY3MjgwLCA2NzI4NCwgNjcyODgsIDY3MjkxLCA2NzI5NSwgNjcyOTksIDY3MzAzLCA2NzMwNywgCisgICAgNjczMTEsIDY3MzE1LCA2NzMxOCwgNjczMjIsIDY3MzI2LCA2NzMyOSwgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIAorICAgIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCA2NzM2NSwgNjczNjksIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCAKKyAgICA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgNjc0MDUsIDY3NDA5LCA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgCisgICAgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIDY3NDQ1LCA2NzQ0OSwgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIAorICAgIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCA2NzQ4NSwgNjc0ODksIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCAKKyAgICA2NzUwOCwgNjc1MTIsIDY3NTE2LCA2NzUyMCwgNjc1MjQsIDY3NTI4LCA2NzUzMiwgNjc1MzYsIDY3NTQwLCA2NzU0NCwgCisgICAgNjc1NDgsIDY3NTUyLCA2NzU1NiwgNjc1NjAsIDY3NTY0LCA2NzU2OCwgNjc1NzIsIDY3NTc2LCA2NzU4MCwgNjc1ODQsIAorICAgIDY3NTg4LCA2NzU5MiwgNjc1OTYsIDY3NjAwLCA2NzYwNCwgNjc2MDgsIDY3NjEyLCA2NzYxNiwgNjc2MjAsIDY3NjI0LCAKKyAgICA2NzYyOCwgNjc2MzIsIDY3NjM2LCA2NzY0MCwgNjc2NDQsIDY3NjQ4LCA2NzY1MiwgNjc2NTYsIDY3NjYwLCA2NzY2NCwgCisgICAgNjc2NjgsIDY3NjcyLCA2NzY3NiwgNjc2ODAsIDY3Njg0LCA2NzY4OCwgNjc2OTIsIDY3Njk2LCA2NzcwMCwgNjc3MDQsIAorICAgIDY3NzA4LCA2NzcxMiwgNjc3MTYsIDY3NzIwLCA2NzcyNCwgNjc3MjgsIDY3NzMyLCA2NzczNiwgNjc3NDAsIDY3NzQ0LCAKKyAgICA2Nzc0OCwgNjc3NTIsIDY3NzU2LCA2Nzc2MCwgNjc3NjQsIDY3NzY4LCA2Nzc3MiwgNjc3NzYsIDY3NzgwLCA2Nzc4NCwgCisgICAgNjc3ODgsIDY3NzkyLCA2Nzc5NiwgNjc4MDAsIDY3ODA0LCA2NzgwOCwgNjc4MTIsIDY3ODE2LCA2NzgyMCwgNjc4MjQsIAorICAgIDY3ODI4LCA2NzgzMiwgNjc4MzYsIDY3ODQwLCA2Nzg0NCwgNjc4NDgsIDY3ODUyLCA2Nzg1NiwgNjc4NjAsIDY3ODY0LCAKKyAgICA2Nzg2OCwgNjc4NzIsIDY3ODc2LCA2Nzg4MCwgNjc4ODQsIDY3ODg4LCA2Nzg5MiwgNjc4OTYsIDY3OTAwLCA2NzkwNCwgCisgICAgNjc5MDgsIDY3OTEyLCA2NzkxNiwgNjc5MjAsIDY3OTI0LCA2NzkyOCwgNjc5MzIsIDY3OTM2LCA2Nzk0MCwgNjc5NDQsIAorICAgIDY3OTQ4LCA2Nzk1MiwgNjc5NTYsIDY3OTYwLCA2Nzk2NCwgNjc5NjgsIDY3OTcyLCA2Nzk3NiwgNjc5NzksIDY3OTgzLCAKKyAgICA2Nzk4NywgNjc5OTEsIDY3OTk1LCA2Nzk5OSwgNjgwMDMsIDY4MDA3LCA2ODAxMSwgNjgwMTUsIDY4MDE5LCA2ODAyMywgCisgICAgNjgwMjcsIDY4MDMxLCA2ODAzNSwgNjgwMzksIDY4MDQzLCA2ODA0NywgNjgwNTEsIDY4MDU1LCA2ODA1OSwgNjgwNjMsIAorICAgIDY4MDY3LCA2ODA3MSwgNjgwNzUsIDY4MDc5LCA2ODA4MywgNjgwODcsIDY4MDkxLCA2ODA5NSwgNjgwOTksIDY4MTAzLCAKKyAgICA2ODEwNywgNjgxMTEsIDY4MTE1LCA2ODExOSwgNjgxMjMsIDY4MTI3LCA2ODEzMSwgNjgxMzUsIDY4MTM5LCA2ODE0MywgCisgICAgNjgxNDcsIDY4MTUxLCA2ODE1NSwgNjgxNTksIDY4MTYzLCA2ODE2NywgNjgxNzEsIDY4MTc1LCA2ODE3OSwgNjgxODMsIAorICAgIDY4MTg3LCA2ODE5MSwgNjgxOTUsIDY4MTk5LCA2ODIwMywgNjgyMDcsIDY4MjExLCA2ODIxNSwgNjgyMTksIDY4MjIzLCAKKyAgICA2ODIyNywgNjgyMzEsIDY4MjM1LCA2ODIzOSwgNjgyNDMsIDY4MjQ3LCA2ODI1MSwgNjgyNTUsIDY4MjU5LCA2ODI2MywgCisgICAgNjgyNjcsIDY4MjcxLCA2ODI3NSwgNjgyNzksIDY4MjgzLCA2ODI4NywgNjgyOTEsIDY4Mjk1LCA2ODI5OSwgNjgzMDMsIAorICAgIDY4MzA3LCA2ODMxMSwgNjgzMTUsIDY4MzE5LCA2ODMyMywgNjgzMjcsIDY4MzMxLCA2ODMzNSwgNjgzMzksIDY4MzQzLCAKKyAgICA2ODM0NywgNjgzNTEsIDY4MzU1LCA2ODM1OSwgNjgzNjMsIDY4MzY3LCA2ODM3MSwgNjgzNzUsIDY4Mzc5LCA2ODM4MywgCisgICAgNjgzODcsIDY4MzkxLCA2ODM5NSwgNjgzOTksIDY4NDAzLCA2ODQwNywgNjg0MTEsIDY4NDE1LCA2ODQxOSwgNjg0MjMsIAorICAgIDY4NDI3LCA2ODQzMSwgNjg0MzUsIDY4NDM5LCA2ODQ0MiwgNjg0NDYsIDY4NDUwLCA2ODQ1NCwgNjg0NTgsIDY4NDYyLCAKKyAgICA2ODQ2NiwgNjg0NzAsIDY4NDc0LCA2ODQ3OCwgNjg0ODIsIDY4NDg2LCA2ODQ5MCwgNjg0OTQsIDY4NDk4LCA2ODUwMiwgCisgICAgNjg1MDYsIDY4NTEwLCA2ODUxNCwgNjg1MTgsIDY4NTIyLCA2ODUyNiwgNjg1MzAsIDY4NTM0LCA2ODUzOCwgNjg1NDIsIAorICAgIDY4NTQ2LCA2ODU1MCwgNjg1NTQsIDY4NTU4LCA2ODU2MiwgNjg1NjYsIDY4NTcwLCA2ODU3NCwgNjg1NzgsIDY4NTgyLCAKKyAgICA2ODU4NiwgNjg1OTAsIDY4NTk0LCA2ODU5OCwgNjg2MDIsIDY4NjA2LCA2ODYxMCwgNjg2MTQsIDY4NjE4LCA2ODYyMiwgCisgICAgNjg2MjYsIDY4NjMwLCA2ODYzNCwgNjg2MzgsIDY4NjQyLCA2ODY0NiwgNjg2NTAsIDY4NjU0LCA2ODY1OCwgNjg2NjIsIAorICAgIDY4NjY2LCA2ODY3MCwgNjg2NzQsIDY4Njc4LCA2ODY4MiwgNjg2ODYsIDY4NjkwLCA2ODY5NCwgNjg2OTgsIDY4NzAyLCAKKyAgICA2ODcwNiwgNjg3MTAsIDY4NzE0LCA2ODcxOCwgNjg3MjIsIDY4NzI2LCA2ODczMCwgNjg3MzQsIDY4NzM4LCA2ODc0MiwgCisgICAgNjg3NDYsIDY4NzUwLCA2ODc1NCwgNjg3NTgsIDY4NzYyLCA2ODc2NiwgNjg3NzAsIDY4Nzc0LCA2ODc3OCwgNjg3ODIsIAorICAgIDY4Nzg2LCA2ODc5MCwgNjg3OTQsIDY4Nzk4LCA2ODgwMSwgNjg4MDUsIDY4ODA5LCA2ODgxMywgNjg4MTcsIDY4ODIxLCAKKyAgICA2ODgyNSwgNjg4MjksIDY4ODMzLCA2ODgzNywgNjg4NDEsIDY4ODQ1LCA2ODg0OSwgNjg4NTMsIDY4ODU3LCA2ODg2MSwgCisgICAgNjg4NjUsIDY4ODY5LCA2ODg3MywgNjg4NzcsIDY4ODgxLCA2ODg4NSwgNjg4ODksIDY4ODkzLCA2ODg5NywgNjg5MDEsIAorICAgIDY4OTA1LCA2ODkwOSwgNjg5MTMsIDY4OTE3LCA2ODkyMSwgNjg5MjUsIDY4OTI5LCA2ODkzMywgNjg5MzcsIDY4OTQxLCAKKyAgICA2ODk0NSwgNjg5NDksIDY4OTUzLCA2ODk1NywgNjg5NjEsIDY4OTY1LCA2ODk2OSwgNjg5NzMsIDY4OTc3LCA2ODk4MSwgCisgICAgNjg5ODUsIDY4OTg5LCA2ODk5MywgNjg5OTcsIDY5MDAxLCA2OTAwNSwgNjkwMDksIDY5MDEzLCA2OTAxNywgNjkwMjEsIAorICAgIDY5MDI1LCA2OTAyOSwgNjkwMzMsIDY5MDM3LCA2OTA0MCwgNjkwNDQsIDY5MDQ4LCA2OTA1MiwgNjkwNTYsIDY5MDYwLCAKKyAgICA2OTA2NCwgNjkwNjgsIDY5MDcyLCA2OTA3NiwgNjkwODAsIDY5MDg0LCA2OTA4OCwgNjkwOTIsIDY5MDk2LCA2OTEwMCwgCisgICAgNjkxMDQsIDY5MTA4LCA2OTExMiwgNjkxMTYsIDY5MTIwLCA2OTEyNCwgNjkxMjgsIDY5MTMyLCA2OTEzNiwgNjkxNDAsIAorICAgIDY5MTQ0LCA2OTE0OCwgNjkxNTIsIDY5MTU2LCA2OTE2MCwgNjkxNjQsIDY5MTY4LCA2OTE3MiwgNjkxNzYsIDY5MTgwLCAKKyAgICA2OTE4NCwgNjkxODgsIDY5MTkyLCA2OTE5NiwgNjkyMDAsIDY5MjA0LCA2OTIwOCwgNjkyMTIsIDY5MjE2LCA2OTIyMCwgCisgICAgNjkyMjQsIDY5MjI4LCA2OTIzMiwgNjkyMzYsIDY5MjQwLCA2OTI0NCwgNjkyNDgsIDY5MjUyLCA2OTI1NiwgNjkyNjAsIAorICAgIDY5MjY0LCA2OTI2OCwgNjkyNzIsIDY5Mjc2LCA2OTI4MCwgNjkyODQsIDY5Mjg4LCA2OTI5MiwgNjkyOTUsIDY5Mjk5LCAKKyAgICA2OTMwMywgNjkzMDcsIDY5MzExLCA2OTMxNSwgNjkzMTksIDY5MzIzLCA2OTMyNywgNjkzMzEsIDY5MzM1LCA2OTMzOSwgCisgICAgNjkzNDMsIDY5MzQ3LCA2OTM1MSwgNjkzNTUsIDY5MzU5LCA2OTM2MywgNjkzNjcsIDY5MzcxLCA2OTM3NSwgNjkzNzksIAorICAgIDY5MzgzLCA2OTM4NywgNjkzOTEsIDY5Mzk1LCA2OTM5OSwgNjk0MDMsIDY5NDA3LCA2OTQxMSwgNjk0MTUsIDY5NDE5LCAKKyAgICA2OTQyMywgNjk0MjcsIDY5NDMxLCA2OTQzNSwgNjk0MzksIDY5NDQzLCA2OTQ0NywgNjk0NTEsIDY5NDU1LCA2OTQ1OSwgCisgICAgNjk0NjMsIDY5NDY3LCA2OTQ3MSwgNjk0NzUsIDY5NDc5LCA2OTQ4MywgNjk0ODcsIDY5NDkxLCA2OTQ5NSwgNjk0OTksIAorICAgIDY5NTAzLCA2OTUwNywgNjk1MTEsIDY5NTE1LCA2OTUxOSwgNjk1MjMsIDY5NTI3LCA2OTUzMSwgNjk1MzUsIDY5NTM5LCAKKyAgICA2OTU0MywgNjk1NDcsIDY5NTUxLCA2OTU1NSwgNjk1NTksIDY5NTYzLCA2OTU2NywgNjk1NzEsIDY5NTc1LCA2OTU3OSwgCisgICAgNjk1ODMsIDY5NTg3LCA2OTU5MSwgNjk1OTUsIDY5NTk5LCA2OTYwMywgNjk2MDcsIDY5NjExLCA2OTYxNSwgNjk2MTksIAorICAgIDY5NjIzLCA2OTYyNywgNjk2MzEsIDY5NjM1LCA2OTYzOSwgNjk2NDMsIDY5NjQ3LCA2OTY1MSwgNjk2NTUsIDY5NjU5LCAKKyAgICA2OTY2MywgNjk2NjcsIDY5NjcxLCA2OTY3NSwgNjk2NzksIDY5NjgzLCA2OTY4NywgNjk2OTEsIDY5Njk1LCA2OTY5OSwgCisgICAgNjk3MDMsIDY5NzA3LCA2OTcxMSwgNjk3MTUsIDY5NzE5LCA2OTcyMywgNjk3MjcsIDY5NzMxLCA2OTczNSwgNjk3MzksIAorICAgIDY5NzQzLCA2OTc0NywgNjk3NTAsIDY5NzU0LCA2OTc1OCwgNjk3NjIsIDY5NzY2LCA2OTc3MCwgNjk3NzQsIDY5Nzc4LCAKKyAgICA2OTc4MiwgNjk3ODYsIDY5NzkwLCA2OTc5NCwgNjk3OTgsIDY5ODAyLCA2OTgwNiwgNjk4MTAsIDY5ODE0LCA2OTgxOCwgCisgICAgNjk4MjIsIDY5ODI2LCA2OTgzMCwgNjk4MzQsIDY5ODM4LCA2OTg0MiwgNjk4NDYsIDY5ODUwLCA2OTg1NCwgNjk4NTgsIAorICAgIDY5ODYyLCA2OTg2NiwgNjk4NzAsIDY5ODc0LCA2OTg3OCwgNjk4ODIsIDY5ODg2LCA2OTg5MCwgNjk4OTQsIDY5ODk4LCAKKyAgICA2OTkwMiwgNjk5MDYsIDY5OTEwLCA2OTkxNCwgNjk5MTgsIDY5OTIyLCA2OTkyNiwgNjk5MzAsIDY5OTM0LCA2OTkzOCwgCisgICAgNjk5NDIsIDY5OTQ2LCA2OTk1MCwgNjk5NTQsIDY5OTU4LCA2OTk2MiwgNjk5NjYsIDY5OTcwLCA2OTk3NCwgNjk5NzgsIAorICAgIDY5OTgyLCA2OTk4NiwgNjk5OTAsIDY5OTk0LCA2OTk5OCwgNzAwMDIsIDcwMDA2LCA3MDAxMCwgNzAwMTQsIDcwMDE4LCAKKyAgICA3MDAyMiwgNzAwMjYsIDcwMDMwLCA3MDAzNCwgNzAwMzgsIDcwMDQyLCA3MDA0NiwgNzAwNTAsIDcwMDU0LCA3MDA1OCwgCisgICAgNzAwNjIsIDcwMDY2LCA3MDA3MCwgNzAwNzQsIDcwMDc4LCA3MDA4MiwgNzAwODYsIDcwMDkwLCA3MDA5NCwgNzAwOTgsIAorICAgIDcwMTAyLCA3MDEwNiwgNzAxMTAsIDcwMTE0LCA3MDExOCwgNzAxMjIsIDcwMTI2LCA3MDEzMCwgNzAxMzQsIDcwMTM4LCAKKyAgICA3MDE0MiwgNzAxNDYsIDcwMTUwLCA3MDE1NCwgNzAxNTgsIDcwMTYyLCA3MDE2NiwgNzAxNzAsIDcwMTc0LCA3MDE3OCwgCisgICAgNzAxODIsIDcwMTg2LCA3MDE5MCwgNzAxOTQsIDcwMTk4LCA3MDIwMiwgNzAyMDYsIDcwMjEwLCA3MDIxNCwgNzAyMTgsIAorICAgIDcwMjIyLCA3MDIyNiwgNzAyMzAsIDcwMjM0LCA3MDIzOCwgNzAyNDIsIDcwMjQ2LCA3MDI1MCwgNzAyNTQsIDcwMjU4LCAKKyAgICA3MDI2MiwgNzAyNjYsIDcwMjcwLCA3MDI3NCwgNzAyNzgsIDcwMjgyLCA3MDI4NiwgNzAyOTAsIDcwMjk0LCA3MDI5OCwgCisgICAgNzAzMDIsIDcwMzA2LCA3MDMxMCwgNzAzMTQsIDcwMzE4LCA3MDMyMiwgNzAzMjYsIDcwMzMwLCA3MDMzNCwgNzAzMzgsIAorICAgIDcwMzQyLCA3MDM0NiwgNzAzNTAsIDcwMzUzLCA3MDM1NywgNzAzNjEsIDcwMzY1LCA3MDM2OSwgNzAzNzMsIDcwMzc3LCAKKyAgICA3MDM4MSwgNzAzODUsIDcwMzg5LCA3MDM5MywgNzAzOTcsIDcwNDAxLCA3MDQwNSwgNzA0MDksIDcwNDEzLCA3MDQxNywgCisgICAgNzA0MjEsIDcwNDI1LCA3MDQyOSwgNzA0MzMsIDcwNDM3LCA3MDQ0MSwgNzA0NDUsIDcwNDQ5LCA3MDQ1MywgNzA0NTcsIAorICAgIDcwNDYxLCA3MDQ2NSwgNzA0NjksIDcwNDczLCA3MDQ3NywgNzA0ODEsIDcwNDg1LCA3MDQ4OSwgNzA0OTMsIDcwNDk3LCAKKyAgICA3MDUwMSwgNzA1MDUsIDcwNTA5LCA3MDUxMywgNzA1MTcsIDcwNTIxLCA3MDUyNSwgNzA1MjksIDcwNTMzLCA3MDUzNywgCisgICAgNzA1NDEsIDcwNTQ1LCA3MDU0OSwgNzA1NTMsIDcwNTU3LCA3MDU2MSwgNzA1NjUsIDcwNTY5LCA3MDU3MywgNzA1NzcsIAorICAgIDcwNTgxLCA3MDU4NSwgNzA1ODksIDcwNTkzLCA3MDU5NywgNzA2MDEsIDcwNjA1LCA3MDYwOSwgNzA2MTMsIDcwNjE3LCAKKyAgICA3MDYyMSwgNzA2MjUsIDcwNjI5LCA3MDYzMywgNzA2MzcsIDcwNjQxLCA3MDY0NSwgNzA2NDksIDcwNjUzLCA3MDY1NywgCisgICAgNzA2NjEsIDcwNjY1LCA3MDY2OSwgNzA2NzMsIDcwNjc3LCA3MDY4MSwgNzA2ODUsIDcwNjg5LCA3MDY5MywgNzA2OTcsIAorICAgIDcwNzAxLCA3MDcwNSwgNzA3MDksIDcwNzEzLCA3MDcxNywgNzA3MjEsIDcwNzI1LCA3MDcyOSwgNzA3MzMsIDcwNzM3LCAKKyAgICA3MDc0MSwgNzA3NDUsIDcwNzQ5LCA3MDc1MywgNzA3NTcsIDcwNzYxLCA3MDc2NSwgNzA3NjksIDcwNzczLCA3MDc3NywgCisgICAgNzA3ODEsIDcwNzg1LCA3MDc4OSwgNzA3OTMsIDcwNzk3LCA3MDgwMSwgNzA4MDUsIDcwODA5LCA3MDgxMywgNzA4MTcsIAorICAgIDcwODIxLCA3MDgyNSwgNzA4MjksIDcwODMzLCA3MDgzNywgNzA4NDEsIDcwODQ1LCA3MDg0OSwgNzA4NTMsIDcwODU3LCAKKyAgICA3MDg2MSwgNzA4NjUsIDcwODY5LCA3MDg3MywgNzA4NzcsIDcwODgxLCA3MDg4NSwgNzA4ODksIDcwODkzLCA3MDg5NywgCisgICAgNzA5MDEsIDcwOTA1LCA3MDkwOSwgNzA5MTMsIDcwOTE3LCA3MDkyMSwgNzA5MjUsIDcwOTI5LCA3MDkzMywgNzA5MzcsIAorICAgIDcwOTQxLCA3MDk0NSwgNzA5NDksIDcwOTUzLCA3MDk1NywgNzA5NjEsIDcwOTY1LCA3MDk2OSwgNzA5NzMsIDcwOTc3LCAKKyAgICA3MDk4MSwgNzA5ODUsIDcwOTg5LCA3MDk5MywgNzA5OTcsIDcxMDAxLCA3MTAwNSwgNzEwMDksIDcxMDEzLCA3MTAxNywgCisgICAgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIDcxMDM3LCA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIAorICAgIDcxMDYxLCA3MTA2NSwgNzEwNjksIDcxMDczLCA3MTA3NywgNzEwODEsIDcxMDg1LCA3MTA4OSwgNzEwOTMsIDcxMDk3LCAKKyAgICA3MTEwMSwgNzExMDUsIDcxMTA5LCA3MTExMywgNzExMTcsIDcxMTIxLCA3MTEyNSwgNzExMjksIDcxMTMzLCA3MTEzNywgCisgICAgNzExNDEsIDcxMTQ1LCA3MTE0OSwgNzExNTMsIDcxMTU3LCA3MTE2MSwgNzExNjUsIDcxMTY5LCA3MTE3MywgNzExNzcsIAorICAgIDcxMTgxLCA3MTE4NSwgNzExODksIDcxMTkzLCA3MTE5NywgNzEyMDEsIDcxMjA1LCA3MTIwOSwgNzEyMTMsIDcxMjE3LCAKKyAgICA3MTIyMSwgNzEyMjUsIDcxMjI5LCA3MTIzMywgNzEyMzcsIDcxMjQxLCA3MTI0NSwgNzEyNDksIDcxMjUzLCA3MTI1NywgCisgICAgNzEyNjEsIDcxMjY1LCA3MTI2OSwgNzEyNzMsIDcxMjc3LCA3MTI4MSwgNzEyODUsIDcxMjg5LCA3MTI5MywgNzEyOTcsIAorICAgIDcxMzAxLCA3MTMwNSwgNzEzMDksIDcxMzEzLCA3MTMxNywgNzEzMjEsIDcxMzI1LCA3MTMyOSwgNzEzMzMsIDcxMzM3LCAKKyAgICA3MTM0MSwgNzEzNDUsIDcxMzQ5LCA3MTM1MywgNzEzNTcsIDcxMzYxLCA3MTM2NSwgNzEzNjksIDcxMzczLCA3MTM3NywgCisgICAgNzEzODEsIDcxMzg1LCA3MTM4OSwgNzEzOTMsIDcxMzk3LCA3MTQwMSwgNzE0MDUsIDcxNDA5LCA3MTQxMywgNzE0MTcsIAorICAgIDcxNDIxLCA3MTQyNSwgNzE0MjksIDcxNDMzLCA3MTQzNywgNzE0NDEsIDcxNDQ1LCA3MTQ0OSwgNzE0NTMsIDcxNDU3LCAKKyAgICA3MTQ2MSwgNzE0NjUsIDcxNDY5LCA3MTQ3MywgNzE0NzcsIDcxNDgxLCA3MTQ4NSwgNzE0ODksIDcxNDkzLCA3MTQ5NywgCisgICAgNzE1MDEsIDcxNTA1LCA3MTUwOSwgNzE1MTMsIDcxNTE3LCA3MTUyMSwgNzE1MjUsIDcxNTI5LCA3MTUzMywgNzE1MzcsIAorICAgIDcxNTQxLCA3MTU0NSwgNzE1NDksIDcxNTUzLCA3MTU1NywgNzE1NjEsIDcxNTY1LCA3MTU2OSwgNzE1NzMsIDcxNTc3LCAKKyAgICA3MTU4MSwgNzE1ODUsIDcxNTg5LCA3MTU5MywgNzE1OTcsIDcxNjAxLCA3MTYwNSwgNzE2MDksIDcxNjEzLCA3MTYxNywgCisgICAgNzE2MjEsIDcxNjI1LCA3MTYyOSwgNzE2MzMsIDcxNjM3LCA3MTY0MSwgNzE2NDUsIDcxNjQ5LCA3MTY1MywgNzE2NTcsIAorICAgIDcxNjYxLCA3MTY2NSwgNzE2NjksIDcxNjczLCA3MTY3NywgNzE2ODEsIDcxNjg1LCA3MTY4OSwgNzE2OTMsIDcxNjk3LCAKKyAgICA3MTcwMSwgNzE3MDUsIDcxNzA5LCA3MTcxMywgNzE3MTcsIDcxNzIxLCA3MTcyNSwgNzE3MjksIDcxNzMzLCA3MTczNywgCisgICAgNzE3NDEsIDcxNzQ1LCA3MTc0OSwgNzE3NTMsIDcxNzU3LCA3MTc2MSwgNzE3NjUsIDcxNzY5LCA3MTc3MywgNzE3NzcsIAorICAgIDcxNzgxLCA3MTc4NSwgNzE3ODksIDcxNzkzLCA3MTc5NywgNzE4MDEsIDcxODA1LCA3MTgwOSwgNzE4MTMsIDcxODE3LCAKKyAgICA3MTgyMSwgNzE4MjUsIDcxODI5LCA3MTgzMywgNzE4MzcsIDcxODQxLCA3MTg0NSwgNzE4NDksIDcxODUzLCA3MTg1NywgCisgICAgNzE4NjEsIDcxODY1LCA3MTg2OSwgNzE4NzMsIDcxODc3LCA3MTg4MSwgNzE4ODUsIDcxODg5LCA3MTg5MywgMCwgMCwgMCwgCisgICAgNzE4OTcsIDcxOTAxLCA3MTkwNSwgNzE5MDksIDcxOTEzLCA3MTkxNywgNzE5MjEsIDcxOTI1LCA3MTkyOSwgNzE5MzMsIAorICAgIDcxOTM3LCA3MTk0MSwgNzE5NDUsIDcxOTQ5LCA3MTk1MywgNzE5NTcsIDcxOTYxLCA3MTk2NSwgNzE5NjksIDcxOTczLCAKKyAgICA3MTk3NywgNzE5ODEsIDcxOTg1LCA3MTk4OSwgNzE5OTMsIDcxOTk3LCA3MjAwMSwgNzIwMDUsIDcyMDA5LCA3MjAxMywgCisgICAgNzIwMTcsIDcyMDIxLCA3MjAyNSwgNzIwMjksIDcyMDMzLCA3MjAzNywgNzIwNDEsIDcyMDQ1LCA3MjA0OSwgNzIwNTMsIAorICAgIDcyMDU3LCA3MjA2MSwgNzIwNjUsIDcyMDY5LCA3MjA3MywgNzIwNzcsIDcyMDgxLCA3MjA4NSwgNzIwODksIDcyMDkzLCAKKyAgICA3MjA5NywgNzIxMDEsIDcyMTA1LCA3MjEwOSwgNzIxMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyMTE3LCAKKyAgICA3MjEyMiwgNzIxMjYsIDcyMTMxLCA3MjEzNiwgNzIxNDEsIDcyMTQ2LCA3MjE1MSwgNzIxNTUsIDcyMTYwLCA3MjE2NSwgCisgICAgNzIxNzAsIDcyMTc1LCA3MjE4MCwgNzIxODUsIDcyMTkwLCA3MjE5NCwgNzIxOTgsIDcyMjAyLCA3MjIwNywgNzIyMTIsIAorICAgIDcyMjE3LCA3MjIyMiwgNzIyMjYsIDcyMjMxLCA3MjIzNiwgNzIyNDEsIDcyMjQ2LCA3MjI1MSwgNzIyNTUsIDcyMjYwLCAKKyAgICA3MjI2NCwgNzIyNjksIDcyMjczLCA3MjI3OCwgNzIyODIsIDcyMjg2LCA3MjI5MCwgNzIyOTUsIDcyMzAwLCA3MjMwNSwgCisgICAgNzIzMTMsIDcyMzIxLCA3MjMyOSwgNzIzMzcsIDcyMzQ0LCA3MjM1MiwgNzIzNTgsIDcyMzY2LCA3MjM3MCwgNzIzNzQsIAorICAgIDcyMzc4LCA3MjM4MiwgNzIzODYsIDcyMzkwLCA3MjM5NCwgNzIzOTgsIDcyNDAyLCA3MjQwNiwgNzI0MTAsIDcyNDE0LCAKKyAgICA3MjQxOCwgNzI0MjIsIDcyNDI2LCA3MjQzMCwgNzI0MzQsIDcyNDM4LCA3MjQ0MiwgNzI0NDYsIDcyNDUwLCA3MjQ1NCwgCisgICAgNzI0NTgsIDcyNDYyLCA3MjQ2NiwgNzI0NzAsIDcyNDc0LCA3MjQ3OCwgNzI0ODIsIDcyNDg2LCA3MjQ5MCwgNzI0OTQsIAorICAgIDcyNDk4LCA3MjUwMiwgNzI1MDYsIDcyNTEwLCA3MjUxMywgNzI1MTcsIDcyNTIxLCA3MjUyNSwgNzI1MjksIDcyNTMzLCAKKyAgICA3MjUzNywgNzI1NDEsIDcyNTQ1LCA3MjU0OSwgNzI1NTMsIDcyNTU3LCA3MjU2MSwgNzI1NjUsIDcyNTY5LCA3MjU3MywgCisgICAgNzI1NzcsIDcyNTgxLCA3MjU4NSwgNzI1ODksIDcyNTkzLCA3MjU5NywgNzI2MDEsIDcyNjA1LCA3MjYwOSwgNzI2MTMsIAorICAgIDcyNjE3LCA3MjYyMSwgNzI2MjUsIDcyNjI5LCA3MjYzMywgNzI2MzcsIDcyNjQxLCA3MjY0NSwgNzI2NDksIDcyNjUzLCAKKyAgICA3MjY1NywgNzI2NjAsIDcyNjY0LCA3MjY2OCwgNzI2NzEsIDcyNjc1LCA3MjY3OSwgNzI2ODMsIDcyNjg2LCA3MjY5MCwgCisgICAgNzI2OTQsIDcyNjk4LCA3MjcwMiwgNzI3MDYsIDcyNzEwLCA3MjcxNCwgNzI3MTgsIDcyNzIyLCA3MjcyNiwgNzI3MzAsIAorICAgIDcyNzM0LCA3MjczOCwgNzI3NDEsIDcyNzQ1LCA3Mjc0OSwgNzI3NTMsIDcyNzU3LCA3Mjc2MSwgNzI3NjUsIDcyNzY5LCAKKyAgICA3Mjc3MywgNzI3NzcsIDcyNzgxLCA3Mjc4NCwgNzI3ODcsIDcyNzkxLCA3Mjc5NSwgNzI3OTksIDcyODAyLCA3MjgwNSwgCisgICAgNzI4MDksIDcyODEzLCA3MjgxNywgNzI4MjEsIDcyODI1LCA3MjgyOSwgNzI4MzMsIDcyODM3LCA3Mjg0MSwgNzI4NDUsIAorICAgIDcyODQ5LCA3Mjg1MywgNzI4NTcsIDcyODYxLCA3Mjg2NSwgNzI4NjksIDcyODczLCA3Mjg3NywgNzI4ODEsIDcyODg1LCAKKyAgICA3Mjg4OSwgNzI4OTMsIDcyODk3LCA3MjkwMSwgNzI5MDUsIDcyOTA5LCA3MjkxMywgNzI5MTcsIDcyOTIxLCA3MjkyNSwgCisgICAgNzI5MjksIDcyOTMzLCA3MjkzNywgNzI5NDEsIDcyOTQ1LCA3Mjk0OSwgNzI5NTMsIDcyOTU2LCA3Mjk2MCwgNzI5NjQsIAorICAgIDcyOTY4LCA3Mjk3MiwgNzI5NzYsIDcyOTgwLCA3Mjk4NCwgNzI5ODgsIDcyOTkyLCA3Mjk5NiwgNzMwMDAsIDczMDA0LCAKKyAgICA3MzAwOCwgNzMwMTIsIDczMDE2LCA3MzAyMCwgNzMwMjQsIDczMDI4LCA3MzAzMiwgNzMwMzYsIDczMDQwLCA3MzA0NCwgCisgICAgNzMwNDgsIDczMDUyLCA3MzA1NiwgNzMwNjAsIDczMDY0LCA3MzA2OCwgNzMwNzIsIDczMDc2LCA3MzA4MCwgNzMwODQsIAorICAgIDczMDg4LCA3MzA5MiwgNzMwOTYsIDczMTAwLCA3MzEwMywgNzMxMDcsIDczMTExLCA3MzExNSwgNzMxMTksIDczMTIzLCAKKyAgICA3MzEyNywgNzMxMzEsIDczMTM1LCA3MzEzOSwgNzMxNDMsIDczMTQ3LCA3MzE1MSwgNzMxNTUsIDczMTU5LCA3MzE2MywgCisgICAgNzMxNjcsIDczMTcwLCA3MzE3NCwgNzMxNzgsIDczMTgyLCA3MzE4NiwgNzMxOTAsIDczMTk0LCA3MzE5OCwgNzMyMDIsIAorICAgIDczMjA2LCA3MzIxMCwgNzMyMTQsIDczMjE4LCA3MzIyMiwgNzMyMjYsIDczMjMwLCA3MzIzNCwgNzMyMzgsIDczMjQyLCAKKyAgICA3MzI0NiwgNzMyNTAsIDczMjU0LCA3MzI1NywgNzMyNjEsIDczMjY1LCA3MzI2OSwgNzMyNzMsIDczMjc3LCA3MzI4MSwgCisgICAgNzMyODUsIDczMjg5LCA3MzI5MywgNzMyOTcsIDczMzAxLCA3MzMwNSwgNzMzMDksIDczMzEzLCA3MzMxNywgNzMzMjEsIAorICAgIDczMzI1LCA3MzMyOSwgNzMzMzMsIDczMzM3LCA3MzM0MSwgNzMzNDUsIDczMzQ5LCA3MzM1MywgNzMzNTcsIDczMzYxLCAKKyAgICA3MzM2NSwgNzMzNjksIDczMzczLCA3MzM3NywgNzMzODEsIDczMzg1LCA3MzM4OSwgNzMzOTMsIDczMzk3LCA3MzQwMSwgCisgICAgNzM0MDUsIDczNDA5LCA3MzQxMywgNzM0MTcsIDczNDIxLCA3MzQyNSwgNzM0MjksIDczNDMyLCA3MzQzNywgNzM0NDEsIAorICAgIDczNDQ3LCA3MzQ1MiwgNzM0NTgsIDczNDYyLCA3MzQ2NiwgNzM0NzAsIDczNDc0LCA3MzQ3OCwgNzM0ODIsIDczNDg2LCAKKyAgICA3MzQ5MCwgNzM0OTQsIDczNDk4LCA3MzUwMiwgNzM1MDYsIDczNTEwLCA3MzUxNCwgNzM1MTcsIDczNTIwLCA3MzUyMywgCisgICAgNzM1MjYsIDczNTI5LCA3MzUzMiwgNzM1MzYsIDczNTM5LCA3MzU0MywgNzM1NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczNTU0LCA3MzU1OSwgNzM1NjQsIDczNTY5LCA3MzU3NCwgCisgICAgNzM1ODEsIDczNTg4LCA3MzU5MywgNzM1OTgsIDczNjAzLCA3MzYwOCwgNzM2MTUsIDczNjIyLCA3MzYyOSwgNzM2MzYsIAorICAgIDczNjQzLCA3MzY1MCwgNzM2NjAsIDczNjcwLCA3MzY3NywgNzM2ODQsIDczNjkxLCA3MzY5OCwgNzM3MDQsIDczNzEwLCAKKyAgICA3MzcxOSwgNzM3MjgsIDczNzM1LCA3Mzc0MiwgNzM3NTMsIDczNzY0LCA3Mzc2OSwgNzM3NzQsIDczNzgxLCA3Mzc4OCwgCisgICAgNzM3OTUsIDczODAyLCA3MzgwOSwgNzM4MTYsIDczODIzLCA3MzgzMCwgNzM4MzYsIDczODQyLCA3Mzg0OCwgNzM4NTQsIAorICAgIDczODYxLCA3Mzg2OCwgNzM4NzMsIDczODc3LCA3Mzg4NCwgNzM4OTEsIDczODk4LCA3MzkwMiwgNzM5MDksIDczOTEzLCAKKyAgICA3MzkxOCwgNzM5MjIsIDczOTI4LCA3MzkzMywgNzM5MzksIDczOTQ0LCA3Mzk0OCwgNzM5NTIsIDczOTU1LCA3Mzk1OCwgCisgICAgNzM5NjMsIDczOTY4LCA3Mzk3MywgNzM5NzgsIDczOTgzLCA3Mzk4OCwgNzM5OTMsIDczOTk4LCA3NDAwMywgNzQwMDgsIAorICAgIDc0MDE2LCA3NDAyNCwgNzQwMjksIDc0MDM0LCA3NDAzOSwgNzQwNDQsIDc0MDQ5LCA3NDA1NCwgNzQwNTksIDc0MDY0LCAKKyAgICA3NDA2OSwgNzQwNzQsIDc0MDc5LCA3NDA4NCwgNzQwODksIDc0MDk0LCA3NDEwMCwgNzQxMDYsIDc0MTEyLCA3NDExOCwgCisgICAgNzQxMjMsIDc0MTI5LCA3NDEzMiwgNzQxMzUsIDc0MTM4LCA3NDE0MiwgNzQxNDYsIDc0MTUwLCA3NDE1NCwgNzQxNTcsIAorICAgIDc0MTYxLCA3NDE2NCwgNzQxNjcsIDc0MTcwLCA3NDE3NCwgNzQxNzgsIDc0MTgyLCA3NDE4NiwgNzQxOTAsIDc0MTk0LCAKKyAgICA3NDE5OCwgNzQyMDIsIDc0MjA2LCA3NDIxMCwgNzQyMTQsIDc0MjE4LCA3NDIyMiwgNzQyMjYsIDc0MjMwLCA3NDIzNCwgCisgICAgNzQyMzgsIDc0MjQyLCA3NDI0NiwgNzQyNTAsIDc0MjU0LCA3NDI1OCwgNzQyNjEsIDc0MjY1LCA3NDI2OSwgNzQyNzMsIAorICAgIDc0Mjc3LCA3NDI4MSwgNzQyODUsIDc0Mjg5LCA3NDI5MywgNzQyOTcsIDc0MzAxLCA3NDMwNSwgNzQzMDksIDc0MzEzLCAKKyAgICA3NDMxNywgNzQzMjEsIDc0MzI1LCA3NDMyOSwgNzQzMzMsIDc0MzM3LCA3NDM0MSwgNzQzNDUsIDc0MzQ5LCA3NDM1MywgCisgICAgNzQzNTcsIDc0MzYwLCA3NDM2NCwgNzQzNjgsIDc0MzcyLCA3NDM3NiwgNzQzODAsIDc0Mzg0LCA3NDM4OCwgNzQzOTEsIAorICAgIDc0Mzk1LCA3NDM5OSwgNzQ0MDMsIDc0NDA3LCA3NDQxMSwgNzQ0MTUsIDc0NDE5LCA3NDQyMywgNzQ0MjcsIDc0NDMxLCAKKyAgICA3NDQzNSwgNzQ0MzksIDc0NDQ0LCA3NDQ0OSwgNzQ0NTIsIDc0NDU3LCA3NDQ2MCwgNzQ0NjMsIDc0NDY2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NDQ3MCwgNzQ0NzksIDc0NDg4LCA3NDQ5NywgNzQ1MDYsIDc0NTE1LCA3NDUyNCwgNzQ1MzMsIAorICAgIDc0NTQyLCA3NDU1MCwgNzQ1NTcsIDc0NTY1LCA3NDU3MiwgNzQ1ODAsIDc0NTkwLCA3NDU5OSwgNzQ2MDksIDc0NjE4LCAKKyAgICA3NDYyOCwgNzQ2MzYsIDc0NjQzLCA3NDY1MSwgNzQ2NTgsIDc0NjY2LCA3NDY3MSwgNzQ2NzYsIDc0NjgyLCA3NDY5MSwgCisgICAgNzQ2OTcsIDc0NzAzLCA3NDcxMCwgNzQ3MTksIDc0NzI3LCA3NDczNSwgNzQ3NDMsIDc0NzUwLCA3NDc1NywgNzQ3NjQsIAorICAgIDc0NzcxLCA3NDc3NiwgNzQ3ODEsIDc0Nzg2LCA3NDc5MSwgNzQ3OTYsIDc0ODAxLCA3NDgwNiwgNzQ4MTEsIDc0ODE5LCAKKyAgICA3NDgyNywgNzQ4MzMsIDc0ODM5LCA3NDg0NCwgNzQ4NDksIDc0ODU0LCA3NDg1OSwgNzQ4NjQsIDc0ODY5LCA3NDg3NCwgCisgICAgNzQ4NzksIDc0ODg4LCA3NDg5NywgNzQ5MDIsIDc0OTA3LCA3NDkxNywgNzQ5MjcsIDc0OTM0LCA3NDk0MSwgNzQ5NTAsIAorICAgIDc0OTU5LCA3NDk3MSwgNzQ5ODMsIDc0OTg5LCA3NDk5NSwgNzUwMDMsIDc1MDExLCA3NTAyMSwgNzUwMzEsIDc1MDM4LCAKKyAgICA3NTA0NSwgNzUwNTAsIDc1MDU1LCA3NTA2NywgNzUwNzksIDc1MDg3LCA3NTA5NSwgNzUxMDUsIDc1MTE1LCA3NTEyNywgCisgICAgNzUxMzksIDc1MTQ4LCA3NTE1NywgNzUxNjQsIDc1MTcxLCA3NTE3OCwgNzUxODUsIDc1MTk0LCA3NTIwMywgNzUyMDgsIAorICAgIDc1MjEzLCA3NTIyMCwgNzUyMjcsIDc1MjM0LCA3NTI0MSwgNzUyNTMsIDc1MjY1LCA3NTI3MCwgNzUyNzUsIDc1MjgwLCAKKyAgICA3NTI4NSwgNzUyOTAsIDc1Mjk1LCA3NTMwMCwgNzUzMDUsIDc1MzA5LCA3NTMxNCwgNzUzMTksIDc1MzI0LCA3NTMyOSwgCisgICAgNzUzMzQsIDc1MzQwLCA3NTM0NSwgNzUzNTAsIDc1MzU3LCA3NTM2NCwgNzUzNzEsIDc1Mzc4LCA3NTM4NSwgNzUzOTQsIAorICAgIDc1NDAzLCA3NTQwOSwgNzU0MTUsIDc1NDIxLCA3NTQyNywgNzU0MzQsIDc1NDQxLCA3NTQ0OCwgNzU0NTUsIDc1NDYyLCAKKyAgICA3NTQ2NiwgNzU0NzMsIDc1NDc4LCA3NTQ4MywgNzU0OTAsIDc1NTAzLCA3NTUwOSwgNzU1MTcsIDc1NTI1LCA3NTUzMiwgCisgICAgNzU1MzksIDc1NTQ4LCA3NTU1NywgNzU1NjQsIDc1NTcxLCA3NTU3OCwgNzU1ODUsIDc1NTkyLCA3NTU5OSwgNzU2MDYsIAorICAgIDc1NjEzLCA3NTYyMCwgNzU2MjcsIDc1NjM2LCA3NTY0NSwgNzU2NTQsIDc1NjYzLCA3NTY3MiwgNzU2ODEsIDc1NjkwLCAKKyAgICA3NTY5OSwgNzU3MDgsIDc1NzE3LCA3NTcyNCwgNzU3MzEsIDc1NzM3LCA3NTc0NSwgMCwgNzU3NTEsIDc1NzU4LCA3NTc2NSwgCisgICAgNzU3NzMsIDc1Nzc4LCA3NTc4MywgNzU3ODgsIDc1NzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3NTA1NiwgNzUwNjMsIDc1MDcwLCA3NTA3NiwgNzUwODQsIDc1MDkyLCA3NTEwMCwgNzUxMDgsIDc1MTE2LCAKLSAgICA3NTEyNCwgNzUxMzAsIDc1MTM2LCA3NTE0MywgNzUxNDksIDc1MTU1LCA3NTE2MSwgNzUxNjgsIDc1MTc1LCA3NTE4MiwgCi0gICAgNzUxODksIDc1MTk2LCA3NTIwMywgNzUyMTAsIDc1MjE3LCA3NTIyNCwgNzUyMzEsIDc1MjM4LCA3NTI0NSwgNzUyNTIsIAotICAgIDc1MjU5LCA3NTI2NSwgNzUyNzIsIDc1Mjc5LCA3NTI4NiwgNzUyOTMsIDc1MzAwLCA3NTMwNywgNzUzMTQsIDc1MzIxLCAKLSAgICA3NTMyOCwgNzUzMzUsIDc1MzQyLCA3NTM0OSwgNzUzNTYsIDc1MzYzLCA3NTM3MCwgNzUzNzcsIDc1Mzg0LCA3NTM5MSwgCi0gICAgNzUzOTksIDc1NDA3LCA3NTQxNSwgNzU0MjMsIDAsIDAsIDAsIDAsIDc1NDMxLCA3NTQzOSwgNzU0NDcsIDc1NDU1LCAKLSAgICA3NTQ2MywgNzU0NzEsIDc1NDc5LCA3NTQ4NSwgNzU0OTEsIDc1NDk3LCAwLCAwLCAwLCAwLCAwLCAwLCA3NTUwMywgNzU1MDcsIAotICAgIDc1NTEyLCA3NTUxNywgNzU1MjIsIDc1NTI3LCA3NTUzMiwgNzU1MzcsIDc1NTQyLCA3NTU0NywgNzU1NTIsIDc1NTU3LCAKLSAgICA3NTU2MiwgNzU1NjYsIDc1NTcxLCA3NTU3NiwgNzU1ODAsIDc1NTg1LCA3NTU5MCwgNzU1OTUsIDc1NjAwLCA3NTYwNSwgCi0gICAgNzU2MTAsIDc1NjE1LCA3NTYxOSwgNzU2MjQsIDc1NjI5LCA3NTYzNCwgNzU2MzksIDc1NjQzLCA3NTY0NywgNzU2NTEsIAotICAgIDc1NjU1LCA3NTY1OSwgNzU2NjMsIDc1NjY4LCA3NTY3MywgNzU2NzgsIDc1NjgzLCA3NTY4OCwgNzU2OTUsIDc1NzAxLCAKLSAgICA3NTcwNiwgNzU3MTEsIDc1NzE2LCA3NTcyMSwgNzU3MjcsIDc1NzM0LCA3NTc0MCwgNzU3NDcsIDc1NzU0LCA3NTc2MSwgCi0gICAgNzU3NjYsIDc1NzczLCA3NTc3OSwgNzU3ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzkwLCA3NTc5NSwgNzU4MDAsIAotICAgIDc1ODA0LCA3NTgwOSwgNzU4MTMsIDc1ODE4LCA3NTgyMiwgNzU4MjcsIDc1ODMyLCA3NTgzOCwgNzU4NDMsIDc1ODQ5LCAKLSAgICA3NTg1MywgNzU4NTgsIDc1ODYzLCA3NTg2NywgNzU4NzIsIDc1ODc3LCA3NTg4MSwgNzU4ODYsIDc1ODkxLCA3NTg5NiwgCi0gICAgNzU5MDEsIDc1OTA2LCA3NTkxMSwgNzU5MTYsIDc1OTIxLCA3NTkyNiwgNzU5MzEsIDc1OTM2LCA3NTk0MSwgNzU5NDYsIAotICAgIDc1OTUxLCA3NTk1NiwgNzU5NjEsIDc1OTY2LCA3NTk3MSwgNzU5NzYsIDc1OTgwLCA3NTk4NSwgNzU5OTAsIDc1OTk1LCAKLSAgICA3NTk5OSwgNzYwMDMsIDc2MDA4LCA3NjAxMywgNzYwMTgsIDc2MDIzLCA3NjAyOCwgNzYwMzMsIDc2MDM3LCA3NjA0MiwgCi0gICAgNzYwNDgsIDc2MDU0LCA3NjA1OSwgNzYwNjUsIDc2MDcwLCA3NjA3NiwgNzYwODIsIDc2MDg5LCA3NjA5NSwgNzYxMDIsIAotICAgIDc2MTA3LCA3NjExMywgNzYxMTksIDc2MTI0LCA3NjEzMCwgNzYxMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc2MTQxLCA3NjE0NSwgNzYxNTAsIDc2MTU1LCA3NjE1OSwgNzYxNjMsIDc2MTY3LCA3NjE3MSwgNzYxNzUsIDc2MTc5LCAKLSAgICA3NjE4NCwgNzYxODgsIDAsIDAsIDAsIDAsIDAsIDAsIDc2MTkzLCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIAotICAgIDc2MjE4LCA3NjIyMiwgNzYyMjcsIDc2MjMxLCA3NjIzNiwgNzYyNDAsIDc2MjQ0LCA3NjI0OCwgNzYyNTMsIDc2MjU3LCAKLSAgICA3NjI2MiwgNzYyNjcsIDc2MjcyLCA3NjI3OCwgNzYyODQsIDc2MjkxLCA3NjI5NiwgNzYzMDEsIDc2MzA3LCA3NjMxMSwgCi0gICAgNzYzMTYsIDc2MzE5LCA3NjMyMiwgNzYzMjYsIDAsIDAsIDc2MzMxLCA3NjMzOCwgNzYzNDQsIDc2MzUwLCA3NjM1NiwgCi0gICAgNzYzNjIsIDc2MzY4LCA3NjM3NCwgNzYzODEsIDc2Mzg3LCA3NjM5NCwgNzY0MDAsIDc2NDA3LCA3NjQxNCwgNzY0MjEsIAotICAgIDc2NDI4LCA3NjQzNSwgNzY0NDIsIDc2NDQ5LCA3NjQ1NiwgNzY0NjMsIDc2NDcwLCA3NjQ3NiwgNzY0ODMsIDc2NDg5LCAKLSAgICA3NjQ5NiwgNzY1MDMsIDc2NTEwLCA3NjUxNiwgNzY1MjMsIDc2NTMwLCA3NjUzNywgNzY1NDMsIDc2NTUwLCA3NjU1NywgCi0gICAgNzY1NjMsIDc2NTcwLCA3NjU3NiwgNzY1ODMsIDc2NTkwLCA3NjU5NiwgNzY2MDIsIDc2NjA5LCA3NjYxNSwgNzY2MjIsIAotICAgIDc2NjI5LCA3NjYzOCwgNzY2NDUsIDc2NjUyLCA3NjY1NiwgNzY2NjEsIDc2NjY2LCA3NjY3MSwgNzY2NzYsIDc2NjgxLCAKLSAgICA3NjY4NSwgNzY2OTAsIDc2Njk0LCA3NjY5OSwgNzY3MDQsIDc2NzA5LCA3NjcxNCwgNzY3MTksIDc2NzI0LCA3NjcyOCwgCi0gICAgNzY3MzMsIDc2NzM3LCA3Njc0MiwgNzY3NDcsIDc2NzUyLCA3Njc1NywgNzY3NjEsIDc2NzY2LCA3Njc3MSwgNzY3NzYsIAotICAgIDc2NzgyLCA3Njc4NywgNzY3OTMsIDc2Nzk5LCA3NjgwNSwgNzY4MTEsIDc2ODE3LCA3NjgyMiwgNzY4MjgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2ODMyLCA3NjgzNywgNzY4NDEsIDc2ODQ1LCA3Njg0OSwgNzY4NTMsIDc2ODU3LCAKLSAgICA3Njg2MSwgNzY4NjUsIDc2ODY5LCA3Njg3MywgNzY4NzcsIDc2ODgxLCA3Njg4NSwgNzY4ODksIDc2ODkzLCA3Njg5NywgCi0gICAgNzY5MDEsIDc2OTA1LCA3NjkwOSwgNzY5MTMsIDc2OTE3LCA3NjkyMSwgNzY5MjUsIDc2OTI5LCA3NjkzMywgNzY5MzcsIAotICAgIDc2OTQxLCA3Njk0NSwgNzY5NDksIDAsIDAsIDAsIDc2OTUzLCA3Njk1NywgNzY5NjEsIDc2OTY1LCA3Njk2OSwgNzY5NzIsIAotICAgIDc2OTc4LCA3Njk4MSwgNzY5ODUsIDc2OTg4LCA3Njk5NCwgNzcwMDAsIDc3MDA4LCA3NzAxMSwgNzcwMTUsIDc3MDE4LCAKLSAgICA3NzAyMSwgNzcwMjcsIDc3MDMzLCA3NzAzNywgNzcwNDMsIDc3MDQ3LCA3NzA1MSwgNzcwNTcsIDc3MDYxLCA3NzA2NywgCi0gICAgNzcwNzMsIDc3MDc3LCA3NzA4MSwgNzcwODcsIDc3MDkxLCA3NzA5NywgNzcxMDMsIDc3MTA3LCA3NzExMywgNzcxMTcsIAotICAgIDc3MTIzLCA3NzEyNywgNzcxMzAsIDc3MTM2LCA3NzE0MCwgNzcxNDYsIDc3MTQ5LCA3NzE1MiwgNzcxNTYsIDc3MTYyLCAKLSAgICA3NzE2NiwgNzcxNzAsIDc3MTc2LCA3NzE4MiwgNzcxODYsIDc3MTg5LCA3NzE5NSwgNzcyMDAsIDc3MjA1LCA3NzIxMCwgCi0gICAgNzcyMTcsIDc3MjIyLCA3NzIyOSwgNzcyMzQsIDc3MjQxLCA3NzI0NiwgNzcyNTEsIDc3MjU2LCA3NzI2MSwgNzcyNjQsIAotICAgIDc3MjY4LCA3NzI3MiwgNzcyNzcsIDc3MjgyLCA3NzI4NywgNzcyOTIsIDc3Mjk3LCA3NzMwMiwgNzczMDcsIDc3MzEyLCAKLSAgICA3NzMxOSwgNzczMjQsIDAsIDc3MzMxLCA3NzMzNCwgNzczMzgsIDc3MzQxLCA3NzM0NCwgNzczNDcsIDc3MzUwLCA3NzM1MywgCi0gICAgNzczNTYsIDc3MzYwLCA3NzM2MywgMCwgMCwgMCwgMCwgNzczNjcsIDc3Mzc0LCA3NzM3OSwgNzczODUsIDc3MzkxLCAKLSAgICA3NzM5NywgNzc0MDMsIDc3NDA5LCA3NzQxNSwgNzc0MjIsIDc3NDI5LCA3NzQzNiwgNzc0NDMsIDc3NDUwLCA3NzQ1NywgCi0gICAgNzc0NjQsIDc3NDcxLCA3NzQ3OCwgNzc0ODUsIDc3NDkyLCA3NzQ5OCwgNzc1MDQsIDc3NTEwLCA3NzUxNiwgNzc1MjIsIAotICAgIDc3NTI4LCA3NzUzNSwgNzc1NDEsIDc3NTQ4LCA3NzU1NSwgNzc1NjIsIDc3NTY5LCA3NzU3NiwgMCwgNzc1ODMsIDc3NTg3LCAKLSAgICA3NzU5MSwgNzc1OTUsIDc3NTk5LCA3NzYwNCwgNzc2MDgsIDc3NjEyLCA3NzYxNywgNzc2MjIsIDc3NjI3LCA3NzYzMiwgCi0gICAgNzc2MzcsIDc3NjQyLCA3NzY0NywgNzc2NTIsIDc3NjU3LCA3NzY2MiwgNzc2NjcsIDc3NjcyLCA3NzY3NywgNzc2ODIsIAotICAgIDc3Njg3LCA3NzY5MiwgNzc2OTcsIDc3NzAyLCA3NzcwNywgNzc3MTEsIDc3NzE2LCA3NzcyMSwgNzc3MjYsIDc3NzMxLCAKLSAgICA3NzczNiwgNzc3NDAsIDc3NzQ1LCA3Nzc0OSwgNzc3NTQsIDc3NzU5LCA3Nzc2NCwgNzc3NjksIDc3Nzc0LCA3Nzc3OCwgCi0gICAgNzc3ODQsIDc3Nzg5LCA3Nzc5NSwgNzc4MDEsIDc3ODA2LCA3NzgxMiwgNzc4MTcsIDc3ODIzLCA3NzgyOSwgNzc4MzUsIAotICAgIDc3ODQwLCA3Nzg0NiwgNzc4NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3ODU4LCA3Nzg2NCwgNzc4NzAsIAotICAgIDc3ODc2LCA3Nzg4MywgNzc4ODksIDc3ODk1LCA3NzkwMSwgNzc5MDcsIDc3OTEzLCA3NzkxOCwgNzc5MjMsIDc3OTI5LCAKLSAgICA3NzkzNiwgMCwgMCwgNzc5NDMsIDc3OTQ4LCA3Nzk1MiwgNzc5NTYsIDc3OTYwLCA3Nzk2NCwgNzc5NjgsIDc3OTcyLCAKLSAgICA3Nzk3NywgNzc5ODEsIDAsIDAsIDc3OTg2LCA3Nzk5MiwgNzc5OTgsIDc4MDA1LCA3ODAxMywgNzgwMTksIDc4MDI1LCAKLSAgICA3ODAzMSwgNzgwMzcsIDc4MDQzLCA3ODA0OSwgNzgwNTUsIDc4MDYxLCA3ODA2NywgNzgwNzMsIDc4MDc5LCA3ODA4NSwgCi0gICAgNzgwOTEsIDc4MDk2LCA3ODEwMiwgNzgxMDgsIDc4MTE1LCA3ODEyMSwgNzgxMjcsIDc4MTMzLCA3ODE0MCwgNzgxNDcsIAotICAgIDc4MTU0LCA3ODE2MCwgNzgxNjUsIDc4MTcwLCA3ODE3NiwgNzgxODQsIDc4MTkxLCA3ODE5OCwgNzgyMDYsIDc4MjE0LCAKLSAgICA3ODIyMSwgNzgyMjgsIDc4MjM1LCA3ODI0MiwgNzgyNDksIDc4MjU2LCA3ODI2MywgNzgyNzAsIDc4Mjc3LCA3ODI4NCwgCi0gICAgNzgyOTEsIDc4Mjk4LCA3ODMwNSwgNzgzMTIsIDc4MzE5LCA3ODMyNiwgNzgzMzMsIDc4MzQwLCA3ODM0NywgNzgzNTQsIAotICAgIDc4MzYwLCA3ODM2NiwgNzgzNzMsIDc4MzgwLCA3ODM4NywgNzgzOTQsIDc4NDAxLCA3ODQwOCwgNzg0MTUsIDc4NDIyLCAKLSAgICA3ODQyOSwgNzg0MzYsIDc4NDQzLCA3ODQ1MCwgNzg0NTcsIDc4NDY0LCA3ODQ3MSwgNzg0NzgsIDc4NDg1LCA3ODQ5MiwgCi0gICAgNzg0OTksIDc4NTA2LCA3ODUxMywgNzg1MjAsIDc4NTI3LCA3ODUzNCwgNzg1NDAsIDc4NTQ2LCA3ODU1MywgNzg1NTksIAotICAgIDc4NTY0LCA3ODU3MCwgNzg1NzUsIDc4NTgwLCA3ODU4NSwgNzg1OTIsIDc4NTk4LCA3ODYwNCwgNzg2MTAsIDc4NjE2LCAKLSAgICA3ODYyMiwgNzg2MjgsIDc4NjM0LCA3ODY0MiwgNzg2NTAsIDc4NjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODY2NiwgNzg2NzIsIDc4Njc4LCA3ODY4NCwgCi0gICAgNzg2OTIsIDc4NzAwLCA3ODcwNiwgNzg3MTIsIDc4NzE5LCA3ODcyNiwgNzg3MzMsIDc4NzQwLCA3ODc0NywgNzg3NTQsIAotICAgIDc4NzYxLCA3ODc2OCwgNzg3NzUsIDc4NzgzLCA3ODc5MSwgNzg3OTksIDc4ODA3LCA3ODgxNSwgNzg4MjEsIDc4ODI5LCAKLSAgICA3ODgzNSwgNzg4NDMsIDc4ODUyLCA3ODg2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg4NjYsIDc4ODcwLCAKLSAgICA3ODg3NCwgNzg4NzgsIDc4ODgyLCA3ODg4NiwgMCwgMCwgNzg4OTAsIDc4ODk0LCA3ODg5OCwgNzg5MDIsIDc4OTA2LCAKLSAgICA3ODkxMCwgMCwgMCwgNzg5MTQsIDc4OTE4LCA3ODkyMiwgNzg5MjYsIDc4OTMwLCA3ODkzNCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzg5MzgsIDc4OTQyLCA3ODk0NiwgNzg5NTAsIDc4OTU0LCA3ODk1OCwgNzg5NjIsIDAsIDc4OTY2LCAKLSAgICA3ODk3MCwgNzg5NzQsIDc4OTc4LCA3ODk4MiwgNzg5ODYsIDc4OTkwLCAwLCA3ODk5NCwgNzkwMDEsIDc5MDA3LCA3OTAxMywgCi0gICAgNzkwMTksIDc5MDI2LCA3OTAzMywgNzkwNDIsIDc5MDUzLCA3OTA2MywgNzkwNzIsIDc5MDgwLCA3OTA4OCwgNzkwOTYsIAotICAgIDc5MTAyLCA3OTExMCwgNzkxMTcsIDc5MTI0LCA3OTEzMywgNzkxNDQsIDc5MTUyLCA3OTE2MiwgNzkxNjgsIDc5MTc4LCAKLSAgICA3OTE4NywgNzkxOTIsIDc5MjAwLCA3OTIwOSwgNzkyMTQsIDc5MjIzLCA3OTIzMCwgNzkyNDAsIDc5MjUyLCA3OTI1NywgCi0gICAgNzkyNjQsIDc5MjcxLCA3OTI3NiwgNzkyODYsIDc5Mjk2LCA3OTMwNiwgNzkzMTYsIDc5MzMxLCA3OTM0NCwgNzkzNTUsIAotICAgIDc5MzYzLCA3OTM2OCwgNzkzNzksIDc5Mzg4LCA3OTM5NSwgNzk0MDIsIDc5NDA4LCA3OTQxNCwgNzk0MTksIDc5NDI2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQzMiwgNzk0MzYsIDc5NDQwLCA3OTQ0NCwgNzk0NDgsIDc5NDUyLCAKLSAgICA3OTQ1NywgNzk0NjIsIDc5NDY2LCA3OTQ3MSwgNzk0NzYsIDc5NDgxLCA3OTQ4NiwgNzk0OTEsIDc5NDk1LCA3OTUwMCwgCi0gICAgNzk1MDUsIDc5NTEwLCA3OTUxNSwgNzk1MjAsIDc5NTI1LCA3OTUzMCwgNzk1MzUsIDc5NTQwLCA3OTU0NSwgNzk1NTAsIAotICAgIDc5NTU0LCA3OTU1OSwgNzk1NjQsIDc5NTY5LCA3OTU3NCwgNzk1NzksIDc5NTg0LCA3OTU4OSwgNzk1OTQsIDc5NTk5LCAKLSAgICA3OTYwNCwgNzk2MDksIDc5NjE0LCA3OTYxOSwgNzk2MjQsIDc5NjI5LCA3OTYzNCwgNzk2MzksIDc5NjQ0LCA3OTY0OSwgCi0gICAgNzk2NTMsIDc5NjU4LCA3OTY2MywgNzk2NjgsIDc5NjczLCA3OTY3OCwgNzk2ODMsIDc5Njg4LCA3OTY5MywgNzk2OTgsIAotICAgIDc5NzAzLCA3OTcwOCwgNzk3MTMsIDc5NzE4LCA3OTcyMywgNzk3MjgsIDc5NzMzLCA3OTczOCwgNzk3NDMsIDc5NzQ4LCAKLSAgICA3OTc1MywgNzk3NTgsIDc5NzYzLCA3OTc2OCwgNzk3NzMsIDc5Nzc4LCA3OTc4MywgNzk3ODgsIDc5NzkzLCA3OTc5OCwgCi0gICAgNzk4MDMsIDc5ODA4LCA3OTgxMywgNzk4MTgsIDc5ODIyLCA3OTgyOSwgNzk4MzYsIDc5ODQzLCA3OTg1MCwgNzk4NTYsIAotICAgIDc5ODYzLCA3OTg3MCwgNzk4NzcsIDc5ODg0LCA3OTg5MSwgNzk4OTgsIDc5OTA1LCA3OTkxMiwgNzk5MTksIDc5OTI2LCAKLSAgICA3OTkzMiwgNzk5MzksIDc5OTQ2LCA3OTk1MywgNzk5NjAsIDc5OTY3LCA3OTk3NCwgNzk5ODEsIDc5OTg4LCA3OTk5NSwgCi0gICAgODAwMDIsIDgwMDA5LCA4MDAxOCwgODAwMjcsIDgwMDM2LCA4MDA0NSwgODAwNTQsIDgwMDYzLCA4MDA3MiwgODAwODEsIAotICAgIDgwMDg5LCA4MDA5NywgODAxMDUsIDgwMTEzLCA4MDEyMSwgODAxMjksIDgwMTM3LCA4MDE0NSwgODAxNTEsIDgwMTU5LCAwLCAKLSAgICAwLCA4MDE2NywgODAxNzQsIDgwMTgwLCA4MDE4NiwgODAxOTIsIDgwMTk4LCA4MDIwNCwgODAyMTAsIDgwMjE3LCA4MDIyMywgCisgICAgMCwgMCwgNzU3OTgsIDc1ODA1LCA3NTgxMiwgNzU4MTgsIDc1ODI2LCA3NTgzNCwgNzU4NDIsIDc1ODUwLCA3NTg1OCwgCisgICAgNzU4NjYsIDc1ODcyLCA3NTg3OCwgNzU4ODUsIDc1ODkxLCA3NTg5NywgNzU5MDMsIDc1OTEwLCA3NTkxNywgNzU5MjQsIAorICAgIDc1OTMxLCA3NTkzOCwgNzU5NDUsIDc1OTUyLCA3NTk1OSwgNzU5NjYsIDc1OTczLCA3NTk4MCwgNzU5ODcsIDc1OTk0LCAKKyAgICA3NjAwMSwgNzYwMDcsIDc2MDE0LCA3NjAyMSwgNzYwMjgsIDc2MDM1LCA3NjA0MiwgNzYwNDksIDc2MDU2LCA3NjA2MywgCisgICAgNzYwNzAsIDc2MDc3LCA3NjA4NCwgNzYwOTEsIDc2MDk4LCA3NjEwNSwgNzYxMTIsIDc2MTE5LCA3NjEyNiwgNzYxMzMsIAorICAgIDc2MTQxLCA3NjE0OSwgNzYxNTcsIDc2MTY1LCAwLCAwLCAwLCAwLCA3NjE3MywgNzYxODEsIDc2MTg5LCA3NjE5NywgCisgICAgNzYyMDUsIDc2MjEzLCA3NjIyMSwgNzYyMjcsIDc2MjMzLCA3NjIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgNzYyNDUsIDc2MjQ5LCAKKyAgICA3NjI1NCwgNzYyNTksIDc2MjY0LCA3NjI2OSwgNzYyNzQsIDc2Mjc5LCA3NjI4NCwgNzYyODksIDc2Mjk0LCA3NjI5OSwgCisgICAgNzYzMDMsIDc2MzA3LCA3NjMxMiwgNzYzMTcsIDc2MzIxLCA3NjMyNiwgNzYzMzEsIDc2MzM2LCA3NjM0MSwgNzYzNDYsIAorICAgIDc2MzUxLCA3NjM1NiwgNzYzNjAsIDc2MzY1LCA3NjM2OSwgNzYzNzQsIDc2Mzc5LCA3NjM4MywgNzYzODcsIDc2MzkxLCAKKyAgICA3NjM5NSwgNzYzOTksIDc2NDAzLCA3NjQwOCwgNzY0MTMsIDc2NDE4LCA3NjQyMywgNzY0MjgsIDc2NDM1LCA3NjQ0MSwgCisgICAgNzY0NDYsIDc2NDUxLCA3NjQ1NiwgNzY0NjEsIDc2NDY3LCA3NjQ3NCwgNzY0ODAsIDc2NDg3LCA3NjQ5NCwgNzY1MDEsIAorICAgIDc2NTA2LCA3NjUxMywgNzY1MTksIDc2NTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjUzMCwgNzY1MzUsIDc2NTQwLCAKKyAgICA3NjU0NCwgNzY1NDksIDc2NTUzLCA3NjU1OCwgNzY1NjIsIDc2NTY3LCA3NjU3MiwgNzY1NzgsIDc2NTgzLCA3NjU4OSwgCisgICAgNzY1OTMsIDc2NTk4LCA3NjYwMywgNzY2MDcsIDc2NjEyLCA3NjYxNywgNzY2MjEsIDc2NjI2LCA3NjYzMSwgNzY2MzYsIAorICAgIDc2NjQxLCA3NjY0NiwgNzY2NTEsIDc2NjU2LCA3NjY2MSwgNzY2NjYsIDc2NjcxLCA3NjY3NiwgNzY2ODEsIDc2Njg2LCAKKyAgICA3NjY5MSwgNzY2OTYsIDc2NzAxLCA3NjcwNiwgNzY3MTEsIDc2NzE1LCA3NjcxOSwgNzY3MjQsIDc2NzI5LCA3NjczNCwgCisgICAgNzY3MzgsIDc2NzQyLCA3Njc0NywgNzY3NTEsIDc2NzU2LCA3Njc2MSwgNzY3NjYsIDc2NzcxLCA3Njc3NSwgNzY3ODAsIAorICAgIDc2Nzg2LCA3Njc5MiwgNzY3OTcsIDc2ODAzLCA3NjgwOCwgNzY4MTQsIDc2ODIwLCA3NjgyNywgNzY4MzMsIDc2ODQwLCAKKyAgICA3Njg0NSwgNzY4NTEsIDc2ODU3LCA3Njg2MiwgNzY4NjgsIDc2ODc0LCA3Njg3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzY4ODQsIDc2ODg4LCA3Njg5MywgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgNzY5MjIsIAorICAgIDc2OTI3LCA3NjkzMSwgMCwgMCwgMCwgMCwgMCwgMCwgNzY5MzYsIDc2OTQxLCA3Njk0NSwgNzY5NDksIDc2OTUzLCA3Njk1NywgCisgICAgNzY5NjEsIDc2OTY1LCA3Njk3MCwgNzY5NzQsIDc2OTc5LCA3Njk4MywgNzY5ODcsIDc2OTkxLCA3Njk5NSwgNzY5OTksIAorICAgIDc3MDA0LCA3NzAwOSwgNzcwMTQsIDc3MDIwLCA3NzAyNiwgNzcwMzMsIDc3MDM4LCA3NzA0MywgNzcwNDksIDc3MDUzLCAKKyAgICA3NzA1OCwgNzcwNjEsIDc3MDY0LCA3NzA2OCwgMCwgMCwgNzcwNzMsIDc3MDgwLCA3NzA4NiwgNzcwOTIsIDc3MDk4LCAKKyAgICA3NzEwNCwgNzcxMTAsIDc3MTE2LCA3NzEyMywgNzcxMjksIDc3MTM2LCA3NzE0MiwgNzcxNDksIDc3MTU2LCA3NzE2MywgCisgICAgNzcxNzAsIDc3MTc3LCA3NzE4NCwgNzcxOTEsIDc3MTk4LCA3NzIwNSwgNzcyMTEsIDc3MjE3LCA3NzIyNCwgNzcyMzAsIAorICAgIDc3MjM3LCA3NzI0NCwgNzcyNTEsIDc3MjU3LCA3NzI2MywgNzcyNzAsIDc3Mjc3LCA3NzI4MywgNzcyOTAsIDc3Mjk3LCAKKyAgICA3NzMwMywgNzczMTAsIDc3MzE2LCA3NzMyMywgNzczMzAsIDc3MzM2LCA3NzM0MiwgNzczNDksIDc3MzU1LCA3NzM2MiwgCisgICAgNzczNjksIDc3Mzc4LCA3NzM4NSwgNzczOTIsIDc3Mzk2LCA3NzQwMSwgNzc0MDYsIDc3NDExLCA3NzQxNiwgNzc0MjAsIAorICAgIDc3NDI0LCA3NzQyOSwgNzc0MzMsIDc3NDM4LCA3NzQ0MywgNzc0NDgsIDc3NDUzLCA3NzQ1OCwgNzc0NjIsIDc3NDY2LCAKKyAgICA3NzQ3MSwgNzc0NzUsIDc3NDgwLCA3NzQ4NSwgNzc0OTAsIDc3NDk1LCA3NzQ5OSwgNzc1MDQsIDc3NTA5LCA3NzUxNCwgCisgICAgNzc1MjAsIDc3NTI1LCA3NzUzMSwgNzc1MzcsIDc3NTQzLCA3NzU0OSwgNzc1NTUsIDc3NTYwLCA3NzU2NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc1NzAsIDc3NTc1LCA3NzU3OSwgNzc1ODMsIDc3NTg3LCA3NzU5MSwgNzc1OTUsIAorICAgIDc3NTk5LCA3NzYwMywgNzc2MDcsIDc3NjExLCA3NzYxNSwgNzc2MTksIDc3NjIzLCA3NzYyNywgNzc2MzEsIDc3NjM1LCAKKyAgICA3NzYzOSwgNzc2NDMsIDc3NjQ3LCA3NzY1MSwgNzc2NTUsIDc3NjU5LCA3NzY2MywgNzc2NjcsIDc3NjcxLCA3NzY3NSwgCisgICAgNzc2NzksIDc3NjgzLCA3NzY4NywgMCwgMCwgMCwgNzc2OTEsIDc3Njk2LCA3NzcwMSwgNzc3MDYsIDc3NzExLCA3NzcxNSwgCisgICAgNzc3MjIsIDc3NzI2LCA3NzczMSwgNzc3MzUsIDc3NzQyLCA3Nzc0OSwgNzc3NTgsIDc3NzYyLCA3Nzc2NywgNzc3NzEsIAorICAgIDc3Nzc1LCA3Nzc4MiwgNzc3ODksIDc3Nzk0LCA3NzgwMSwgNzc4MDYsIDc3ODExLCA3NzgxOCwgNzc4MjMsIDc3ODMwLCAKKyAgICA3NzgzNywgNzc4NDIsIDc3ODQ3LCA3Nzg1NCwgNzc4NTksIDc3ODY2LCA3Nzg3MywgNzc4NzgsIDc3ODg1LCA3Nzg5MCwgCisgICAgNzc4OTcsIDc3OTAxLCA3NzkwNSwgNzc5MTIsIDc3OTE3LCA3NzkyNCwgNzc5MjgsIDc3OTMyLCA3NzkzNywgNzc5NDQsIAorICAgIDc3OTQ4LCA3Nzk1MywgNzc5NjAsIDc3OTY3LCA3Nzk3MiwgNzc5NzYsIDc3OTgzLCA3Nzk4OSwgNzc5OTUsIDc4MDAxLCAKKyAgICA3ODAwOSwgNzgwMTUsIDc4MDIzLCA3ODAyOSwgNzgwMzcsIDc4MDQzLCA3ODA0OSwgNzgwNTUsIDc4MDYxLCA3ODA2NSwgCisgICAgNzgwNzAsIDc4MDc1LCA3ODA4MSwgNzgwODcsIDc4MDkzLCA3ODA5OSwgNzgxMDUsIDc4MTExLCA3ODExNywgNzgxMjMsIAorICAgIDc4MTMxLCA3ODEzNywgMCwgNzgxNDUsIDc4MTQ5LCA3ODE1NCwgNzgxNTgsIDc4MTYyLCA3ODE2NiwgNzgxNzAsIDc4MTc0LCAKKyAgICA3ODE3OCwgNzgxODMsIDc4MTg3LCAwLCAwLCAwLCAwLCA3ODE5MiwgNzgyMDAsIDc4MjA2LCA3ODIxMiwgNzgyMTgsIAorICAgIDc4MjI0LCA3ODIzMCwgNzgyMzYsIDc4MjQyLCA3ODI0OSwgNzgyNTYsIDc4MjYzLCA3ODI3MCwgNzgyNzcsIDc4Mjg0LCAKKyAgICA3ODI5MSwgNzgyOTgsIDc4MzA1LCA3ODMxMiwgNzgzMTksIDc4MzI1LCA3ODMzMSwgNzgzMzcsIDc4MzQzLCA3ODM0OSwgCisgICAgNzgzNTUsIDc4MzYyLCA3ODM2OCwgNzgzNzUsIDc4MzgyLCA3ODM4OSwgNzgzOTYsIDc4NDAzLCAwLCA3ODQxMCwgNzg0MTQsIAorICAgIDc4NDE4LCA3ODQyMiwgNzg0MjYsIDc4NDMxLCA3ODQzNSwgNzg0MzksIDc4NDQ0LCA3ODQ0OSwgNzg0NTQsIDc4NDU5LCAKKyAgICA3ODQ2NCwgNzg0NjksIDc4NDc0LCA3ODQ3OSwgNzg0ODQsIDc4NDg5LCA3ODQ5NCwgNzg0OTksIDc4NTA0LCA3ODUwOSwgCisgICAgNzg1MTQsIDc4NTE5LCA3ODUyNCwgNzg1MjgsIDc4NTMzLCA3ODUzNywgNzg1NDIsIDc4NTQ3LCA3ODU1MiwgNzg1NTcsIAorICAgIDc4NTYyLCA3ODU2NiwgNzg1NzEsIDc4NTc1LCA3ODU4MCwgNzg1ODQsIDc4NTg5LCA3ODU5NCwgNzg1OTksIDc4NjAzLCAKKyAgICA3ODYwOSwgNzg2MTQsIDc4NjIwLCA3ODYyNiwgNzg2MzEsIDc4NjM3LCA3ODY0MiwgNzg2NDgsIDc4NjU0LCA3ODY2MCwgCisgICAgNzg2NjUsIDc4NjcxLCA3ODY3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg2ODIsIDc4Njg4LCA3ODY5NCwgCisgICAgNzg3MDAsIDc4NzA3LCA3ODcxMywgNzg3MTksIDc4NzI1LCA3ODczMSwgNzg3MzcsIDc4NzQyLCA3ODc0NywgNzg3NTMsIAorICAgIDc4NzYwLCAwLCAwLCA3ODc2NywgNzg3NzIsIDc4Nzc2LCA3ODc4MCwgNzg3ODQsIDc4Nzg4LCA3ODc5MiwgNzg3OTYsIAorICAgIDc4ODAxLCA3ODgwNSwgMCwgMCwgNzg4MTAsIDc4ODE2LCA3ODgyMiwgNzg4MjksIDc4ODM3LCA3ODg0MywgNzg4NDksIAorICAgIDc4ODU1LCA3ODg2MSwgNzg4NjcsIDc4ODczLCA3ODg3OSwgNzg4ODUsIDc4ODkxLCA3ODg5NywgNzg5MDMsIDc4OTA4LCAKKyAgICA3ODkxNCwgNzg5MTksIDc4OTI1LCA3ODkzMSwgNzg5MzgsIDc4OTQ0LCA3ODk1MCwgNzg5NTYsIDc4OTYzLCA3ODk3MCwgCisgICAgNzg5NzcsIDc4OTgzLCA3ODk4OCwgNzg5OTMsIDc4OTk5LCA3OTAwNywgNzkwMTQsIDc5MDIxLCA3OTAyOSwgNzkwMzcsIAorICAgIDc5MDQ0LCA3OTA1MSwgNzkwNTgsIDc5MDY1LCA3OTA3MiwgNzkwNzksIDc5MDg2LCA3OTA5MywgNzkxMDAsIDc5MTA3LCAKKyAgICA3OTExNCwgNzkxMjEsIDc5MTI4LCA3OTEzNSwgNzkxNDIsIDc5MTQ5LCA3OTE1NiwgNzkxNjMsIDc5MTcwLCA3OTE3NywgCisgICAgNzkxODMsIDc5MTg5LCA3OTE5NiwgNzkyMDMsIDc5MjEwLCA3OTIxNywgNzkyMjQsIDc5MjMxLCA3OTIzOCwgNzkyNDUsIAorICAgIDc5MjUyLCA3OTI1OSwgNzkyNjYsIDc5MjczLCA3OTI4MCwgNzkyODcsIDc5Mjk0LCA3OTMwMSwgNzkzMDgsIDc5MzE1LCAKKyAgICA3OTMyMiwgNzkzMjksIDc5MzM2LCA3OTM0MywgNzkzNTAsIDc5MzU3LCA3OTM2MywgNzkzNjksIDc5Mzc2LCA3OTM4MiwgCisgICAgNzkzODcsIDc5MzkzLCA3OTM5OCwgNzk0MDMsIDc5NDA4LCA3OTQxNSwgNzk0MjEsIDc5NDI3LCA3OTQzMywgNzk0MzksIAorICAgIDc5NDQ1LCA3OTQ1MSwgNzk0NTcsIDc5NDY1LCA3OTQ3MywgNzk0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5NDg5LCA3OTQ5NSwgNzk1MDEsIDc5NTA3LCAKKyAgICA3OTUxNSwgNzk1MjMsIDc5NTI5LCA3OTUzNSwgNzk1NDIsIDc5NTQ5LCA3OTU1NiwgNzk1NjMsIDc5NTcwLCA3OTU3NywgCisgICAgNzk1ODQsIDc5NTkxLCA3OTU5OCwgNzk2MDYsIDc5NjE0LCA3OTYyMiwgNzk2MzAsIDc5NjM4LCA3OTY0NCwgNzk2NTIsIAorICAgIDc5NjU4LCA3OTY2NiwgNzk2NzUsIDc5NjgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTY4OSwgNzk2OTMsIAorICAgIDc5Njk3LCA3OTcwMSwgNzk3MDUsIDc5NzA5LCAwLCAwLCA3OTcxMywgNzk3MTcsIDc5NzIxLCA3OTcyNSwgNzk3MjksIAorICAgIDc5NzMzLCAwLCAwLCA3OTczNywgNzk3NDEsIDc5NzQ1LCA3OTc0OSwgNzk3NTMsIDc5NzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3OTc2MSwgNzk3NjUsIDc5NzY5LCA3OTc3MywgNzk3NzcsIDc5NzgxLCA3OTc4NSwgMCwgNzk3ODksIAorICAgIDc5NzkzLCA3OTc5NywgNzk4MDEsIDc5ODA1LCA3OTgwOSwgNzk4MTMsIDAsIDc5ODE3LCA3OTgyNCwgNzk4MzAsIDc5ODM2LCAKKyAgICA3OTg0MiwgNzk4NDksIDc5ODU2LCA3OTg2NSwgNzk4NzcsIDc5ODg3LCA3OTg5NiwgNzk5MDQsIDc5OTEyLCA3OTkyMCwgCisgICAgNzk5MjYsIDc5OTM0LCA3OTk0MSwgNzk5NDgsIDc5OTU3LCA3OTk2OCwgNzk5NzYsIDc5OTg2LCA3OTk5MiwgODAwMDIsIAorICAgIDgwMDExLCA4MDAxNiwgODAwMjQsIDgwMDMzLCA4MDAzOCwgODAwNDcsIDgwMDU0LCA4MDA2NCwgODAwNzYsIDgwMDgxLCAKKyAgICA4MDA4OCwgODAwOTUsIDgwMTAwLCA4MDExMCwgODAxMjAsIDgwMTMwLCA4MDE0MCwgODAxNTUsIDgwMTY4LCA4MDE3OSwgCisgICAgODAxODcsIDgwMTkyLCA4MDIwNCwgODAyMTMsIDgwMjIwLCA4MDIyNywgODAyMzMsIDgwMjM5LCA4MDI0NCwgODAyNTEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwMjU3LCA4MDI2MSwgODAyNjUsIDgwMjY5LCA4MDI3MywgODAyNzcsIAorICAgIDgwMjgyLCA4MDI4NywgODAyOTEsIDgwMjk2LCA4MDMwMSwgODAzMDYsIDgwMzExLCA4MDMxNiwgODAzMjAsIDgwMzI1LCAKKyAgICA4MDMzMCwgODAzMzUsIDgwMzQwLCA4MDM0NSwgODAzNDksIDgwMzU0LCA4MDM1OSwgODAzNjQsIDgwMzY5LCA4MDM3NCwgCisgICAgODAzNzgsIDgwMzgzLCA4MDM4OCwgODAzOTMsIDgwMzk4LCA4MDQwMiwgODA0MDcsIDgwNDEyLCA4MDQxNywgODA0MjIsIAorICAgIDgwNDI3LCA4MDQzMiwgODA0MzcsIDgwNDQyLCA4MDQ0NywgODA0NTIsIDgwNDU3LCA4MDQ2MiwgODA0NjcsIDgwNDcyLCAKKyAgICA4MDQ3NywgODA0ODIsIDgwNDg3LCA4MDQ5MiwgODA0OTcsIDgwNTAyLCA4MDUwNywgODA1MTIsIDgwNTE3LCA4MDUyMiwgCisgICAgODA1MjcsIDgwNTMyLCA4MDUzNywgODA1NDIsIDgwNTQ3LCA4MDU1MiwgODA1NTcsIDgwNTYyLCA4MDU2NywgODA1NzIsIAorICAgIDgwNTc3LCA4MDU4MiwgODA1ODcsIDgwNTkyLCA4MDU5NywgODA2MDIsIDgwNjA3LCA4MDYxMiwgODA2MTcsIDgwNjIyLCAKKyAgICA4MDYyNywgODA2MzIsIDgwNjM3LCA4MDY0MiwgODA2NDYsIDgwNjUzLCA4MDY2MCwgODA2NjcsIDgwNjc0LCA4MDY4MCwgCisgICAgODA2ODYsIDgwNjkzLCA4MDcwMCwgODA3MDcsIDgwNzE0LCA4MDcyMSwgODA3MjgsIDgwNzM1LCA4MDc0MiwgODA3NDksIAorICAgIDgwNzU1LCA4MDc2MiwgODA3NjksIDgwNzc2LCA4MDc4MywgODA3OTAsIDgwNzk3LCA4MDgwNCwgODA4MTEsIDgwODE4LCAKKyAgICA4MDgyNSwgODA4MzIsIDgwODQxLCA4MDg1MCwgODA4NTksIDgwODY4LCA4MDg3NywgODA4ODYsIDgwODk1LCA4MDkwNCwgCisgICAgODA5MTIsIDgwOTIwLCA4MDkyOCwgODA5MzYsIDgwOTQ0LCA4MDk1MiwgODA5NjAsIDgwOTY4LCA4MDk3NCwgODA5ODIsIDAsIAorICAgIDAsIDgwOTkwLCA4MDk5NywgODEwMDMsIDgxMDA5LCA4MTAxNSwgODEwMjEsIDgxMDI3LCA4MTAzMywgODEwNDAsIDgxMDQ2LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE4MzAwLDYxOCArMTk0MTksNjM0IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAyMzAsIDgwMjM0LCA4MDIzOCwgODAyNDIsIAotICAgIDgwMjQ2LCA4MDI1MCwgODAyNTQsIDgwMjU4LCA4MDI2MiwgODAyNjYsIDgwMjcwLCA4MDI3NCwgODAyNzgsIDgwMjgyLCAKLSAgICA4MDI4NiwgODAyOTAsIDgwMjk0LCA4MDI5OCwgODAzMDIsIDgwMzA2LCA4MDMxMCwgODAzMTQsIDgwMzE4LCAwLCAwLCAwLCAKLSAgICAwLCA4MDMyMiwgODAzMjYsIDgwMzMwLCA4MDMzNCwgODAzMzgsIDgwMzQyLCA4MDM0NiwgODAzNTAsIDgwMzU0LCA4MDM1OCwgCi0gICAgODAzNjIsIDgwMzY2LCA4MDM3MCwgODAzNzQsIDgwMzc4LCA4MDM4MiwgODAzODYsIDgwMzkwLCA4MDM5NCwgODAzOTgsIAotICAgIDgwNDAyLCA4MDQwNiwgODA0MTAsIDgwNDE0LCA4MDQxOCwgODA0MjIsIDgwNDI2LCA4MDQzMCwgODA0MzQsIDgwNDM4LCAKLSAgICA4MDQ0MiwgODA0NDYsIDgwNDUwLCA4MDQ1NCwgODA0NTgsIDgwNDYyLCA4MDQ2NiwgODA0NzAsIDgwNDc0LCA4MDQ3OCwgCi0gICAgODA0ODIsIDgwNDg2LCA4MDQ5MCwgODA0OTQsIDgwNDk4LCA4MDUwMiwgODA1MDYsIDgwNTEwLCA4MDUxNCwgMCwgMCwgMCwgCi0gICAgMCwgODA1MTgsIDgwNTIyLCA4MDUyNiwgODA1MzAsIDgwNTM0LCA4MDUzOCwgODA1NDIsIDgwNTQ2LCA4MDU1MCwgODA1NTQsIAotICAgIDgwNTU4LCA4MDU2MiwgODA1NjYsIDgwNTcwLCA4MDU3NCwgODA1NzgsIDgwNTgyLCA4MDU4NiwgODA1OTAsIDgwNTk0LCAKLSAgICA4MDU5OCwgODA2MDIsIDgwNjA2LCA4MDYxMCwgODA2MTQsIDgwNjE4LCA4MDYyMiwgODA2MjYsIDgwNjMwLCA4MDYzNCwgCi0gICAgODA2MzgsIDgwNjQyLCA4MDY0NiwgODA2NTAsIDgwNjU0LCA4MDY1OCwgODA2NjIsIDgwNjY2LCA4MDY3MCwgODA2NzQsIAotICAgIDgwNjc4LCA4MDY4MiwgODA2ODYsIDgwNjkwLCA4MDY5NCwgODA2OTgsIDgwNzAyLCA4MDcwNiwgODA3MTAsIDgwNzE0LCAKLSAgICA4MDcxOCwgODA3MjIsIDgwNzI2LCA4MDczMCwgODA3MzQsIDgwNzM4LCA4MDc0MiwgODA3NDYsIDgwNzUwLCA4MDc1NCwgCi0gICAgODA3NTgsIDgwNzYyLCA4MDc2NiwgODA3NzAsIDgwNzc0LCA4MDc3OCwgODA3ODIsIDgwNzg2LCA4MDc5MCwgODA3OTQsIAotICAgIDgwNzk4LCA4MDgwMiwgODA4MDYsIDgwODEwLCA4MDgxNCwgODA4MTgsIDgwODIyLCA4MDgyNiwgODA4MzAsIDgwODM0LCAKLSAgICA4MDgzOCwgODA4NDIsIDgwODQ2LCA4MDg1MCwgODA4NTQsIDgwODU4LCA4MDg2MiwgODA4NjYsIDgwODcwLCA4MDg3NCwgCi0gICAgODA4NzgsIDgwODgyLCA4MDg4NiwgODA4OTAsIDgwODk0LCA4MDg5OCwgODA5MDIsIDgwOTA2LCA4MDkxMCwgODA5MTQsIAotICAgIDgwOTE4LCA4MDkyMiwgODA5MjYsIDgwOTMwLCA4MDkzNCwgODA5MzgsIDgwOTQyLCA4MDk0NiwgODA5NTAsIDgwOTU0LCAKLSAgICA4MDk1OCwgODA5NjIsIDgwOTY2LCA4MDk3MCwgODA5NzQsIDgwOTc4LCA4MDk4MiwgODA5ODYsIDgwOTkwLCA4MDk5NCwgCi0gICAgODA5OTgsIDgxMDAyLCA4MTAwNiwgODEwMTAsIDgxMDE0LCA4MTAxOCwgODEwMjIsIDgxMDI2LCA4MTAzMCwgODEwMzQsIAotICAgIDgxMDM4LCA4MTA0MiwgODEwNDYsIDgxMDUwLCA4MTA1NCwgODEwNTgsIDgxMDYyLCA4MTA2NiwgODEwNzAsIDgxMDc0LCAKLSAgICA4MTA3OCwgODEwODIsIDgxMDg2LCA4MTA5MCwgODEwOTQsIDgxMDk4LCA4MTEwMiwgODExMDYsIDgxMTEwLCA4MTExNCwgCi0gICAgODExMTgsIDgxMTIyLCA4MTEyNiwgODExMzAsIDgxMTM0LCA4MTEzOCwgODExNDIsIDgxMTQ2LCA4MTE1MCwgODExNTQsIAotICAgIDgxMTU4LCA4MTE2MiwgODExNjYsIDgxMTcwLCA4MTE3NCwgODExNzgsIDgxMTgyLCA4MTE4NiwgODExOTAsIDgxMTk0LCAKLSAgICA4MTE5OCwgODEyMDIsIDgxMjA2LCA4MTIxMCwgODEyMTQsIDgxMjE4LCA4MTIyMiwgODEyMjYsIDgxMjMwLCA4MTIzNCwgCi0gICAgODEyMzgsIDgxMjQyLCA4MTI0NiwgODEyNTAsIDgxMjU0LCA4MTI1OCwgODEyNjIsIDgxMjY2LCA4MTI3MCwgODEyNzQsIAotICAgIDgxMjc4LCA4MTI4MiwgODEyODYsIDgxMjkwLCA4MTI5NCwgODEyOTgsIDgxMzAyLCA4MTMwNiwgODEzMTAsIDgxMzE0LCAKLSAgICA4MTMxOCwgODEzMjIsIDgxMzI2LCA4MTMzMCwgODEzMzQsIDgxMzM4LCA4MTM0MiwgODEzNDYsIDgxMzUwLCA4MTM1NCwgCi0gICAgODEzNTgsIDgxMzYyLCA4MTM2NiwgODEzNzAsIDgxMzc0LCA4MTM3OCwgODEzODIsIDgxMzg2LCA4MTM5MCwgODEzOTQsIAotICAgIDgxMzk4LCA4MTQwMiwgODE0MDYsIDgxNDEwLCA4MTQxNCwgODE0MTgsIDgxNDIyLCA4MTQyNiwgODE0MzAsIDgxNDM0LCAKLSAgICA4MTQzOCwgODE0NDIsIDgxNDQ2LCA4MTQ1MCwgODE0NTQsIDgxNDU4LCA4MTQ2MiwgODE0NjYsIDgxNDcwLCA4MTQ3NCwgCi0gICAgODE0NzgsIDgxNDgyLCA4MTQ4NiwgODE0OTAsIDgxNDk0LCA4MTQ5OCwgODE1MDIsIDgxNTA2LCA4MTUxMCwgODE1MTQsIAotICAgIDgxNTE4LCA4MTUyMiwgODE1MjYsIDgxNTMwLCA4MTUzNCwgODE1MzgsIDgxNTQyLCA4MTU0NiwgODE1NTAsIDgxNTU0LCAKLSAgICA4MTU1OCwgODE1NjIsIDgxNTY2LCA4MTU3MCwgODE1NzQsIDgxNTc4LCA4MTU4MiwgODE1ODYsIDgxNTkwLCA4MTU5NCwgCi0gICAgODE1OTgsIDgxNjAyLCA4MTYwNiwgODE2MTAsIDgxNjE0LCA4MTYxOCwgODE2MjIsIDgxNjI2LCA4MTYzMCwgODE2MzQsIAotICAgIDgxNjM4LCA4MTY0MiwgODE2NDYsIDgxNjUwLCA4MTY1NCwgODE2NTgsIDgxNjYyLCA4MTY2NiwgODE2NzAsIDgxNjc0LCAKLSAgICA4MTY3OCwgODE2ODIsIDgxNjg2LCA4MTY5MCwgODE2OTQsIDgxNjk4LCA4MTcwMiwgODE3MDYsIDgxNzEwLCA4MTcxNCwgCi0gICAgODE3MTgsIDgxNzIyLCA4MTcyNiwgODE3MzAsIDgxNzM0LCA4MTczOCwgODE3NDIsIDgxNzQ2LCA4MTc1MCwgODE3NTQsIAotICAgIDgxNzU4LCA4MTc2MiwgODE3NjYsIDgxNzcwLCA4MTc3NCwgODE3NzgsIDgxNzgyLCA4MTc4NiwgODE3OTAsIDgxNzk0LCAKLSAgICA4MTc5OCwgODE4MDIsIDgxODA2LCA4MTgxMCwgODE4MTQsIDgxODE4LCA4MTgyMiwgODE4MjYsIDgxODMwLCA4MTgzNCwgCi0gICAgODE4MzgsIDgxODQyLCA4MTg0NiwgODE4NTAsIDgxODU0LCA4MTg1OCwgODE4NjIsIDgxODY2LCA4MTg3MCwgODE4NzQsIAotICAgIDgxODc4LCA4MTg4MiwgODE4ODYsIDgxODkwLCA4MTg5NCwgODE4OTgsIDgxOTAyLCA4MTkwNiwgODE5MTAsIDgxOTE0LCAKLSAgICA4MTkxOCwgODE5MjIsIDgxOTI2LCA4MTkzMCwgODE5MzQsIDgxOTM4LCA4MTk0MiwgODE5NDYsIDgxOTUwLCA4MTk1NCwgCi0gICAgODE5NTgsIDgxOTYyLCA4MTk2NiwgODE5NzAsIDgxOTc0LCA4MTk3OCwgMCwgMCwgODE5ODIsIDgxOTg2LCA4MTk5MCwgCi0gICAgODE5OTQsIDgxOTk4LCA4MjAwMiwgODIwMDYsIDgyMDEwLCA4MjAxNCwgODIwMTgsIDgyMDIyLCA4MjAyNiwgODIwMzAsIAotICAgIDgyMDM0LCA4MjAzOCwgODIwNDIsIDgyMDQ2LCA4MjA1MCwgODIwNTQsIDgyMDU4LCA4MjA2MiwgODIwNjYsIDgyMDcwLCAKLSAgICA4MjA3NCwgODIwNzgsIDgyMDgyLCA4MjA4NiwgODIwOTAsIDgyMDk0LCA4MjA5OCwgODIxMDIsIDgyMTA2LCA4MjExMCwgCi0gICAgODIxMTQsIDgyMTE4LCA4MjEyMiwgODIxMjYsIDgyMTMwLCA4MjEzNCwgODIxMzgsIDgyMTQyLCA4MjE0NiwgODIxNTAsIAotICAgIDgyMTU0LCA4MjE1OCwgODIxNjIsIDgyMTY2LCA4MjE3MCwgODIxNzQsIDgyMTc4LCA4MjE4MiwgODIxODYsIDgyMTkwLCAKLSAgICA4MjE5NCwgODIxOTgsIDgyMjAyLCA4MjIwNiwgODIyMTAsIDgyMjE0LCA4MjIxOCwgODIyMjIsIDgyMjI2LCA4MjIzMCwgCi0gICAgODIyMzQsIDgyMjM4LCA4MjI0MiwgODIyNDYsIDgyMjUwLCA4MjI1NCwgODIyNTgsIDgyMjYyLCA4MjI2NiwgODIyNzAsIAotICAgIDgyMjc0LCA4MjI3OCwgODIyODIsIDgyMjg2LCA4MjI5MCwgODIyOTQsIDgyMjk4LCA4MjMwMiwgODIzMDYsIDgyMzEwLCAKLSAgICA4MjMxNCwgODIzMTgsIDgyMzIyLCA4MjMyNiwgODIzMzAsIDgyMzM0LCA4MjMzOCwgODIzNDIsIDgyMzQ2LCA4MjM1MCwgCi0gICAgODIzNTQsIDgyMzU4LCA4MjM2MiwgODIzNjYsIDgyMzcwLCA4MjM3NCwgODIzNzgsIDgyMzgyLCA4MjM4NiwgODIzOTAsIAotICAgIDgyMzk0LCA4MjM5OCwgODI0MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNDA2LCAKLSAgICA4MjQxMSwgODI0MTYsIDgyNDIxLCA4MjQyNiwgODI0MzEsIDgyNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MjQ0NCwgODI0NTEsIDgyNDU4LCA4MjQ2NSwgODI0NzIsIDAsIDAsIDAsIDAsIDAsIDgyNDc5LCA4MjQ4NiwgCi0gICAgODI0OTMsIDgyNTAzLCA4MjUwOSwgODI1MTUsIDgyNTIxLCA4MjUyNywgODI1MzMsIDgyNTM5LCA4MjU0NiwgODI1NTIsIAotICAgIDgyNTU4LCA4MjU2NCwgODI1NzMsIDgyNTgyLCA4MjU5NCwgODI2MDYsIDgyNjEyLCA4MjYxOCwgODI2MjQsIDgyNjMxLCAKLSAgICA4MjYzOCwgODI2NDUsIDgyNjUyLCA4MjY1OSwgMCwgODI2NjYsIDgyNjczLCA4MjY4MCwgODI2ODgsIDgyNjk1LCAwLCAKLSAgICA4MjcwMiwgMCwgODI3MDksIDgyNzE2LCAwLCA4MjcyMywgODI3MzEsIDAsIDgyNzM4LCA4Mjc0NSwgODI3NTIsIDgyNzU5LCAKLSAgICA4Mjc2NiwgODI3NzMsIDgyNzgwLCA4Mjc4NywgODI3OTQsIDgyODAxLCA4MjgwNiwgODI4MTMsIDgyODIwLCA4MjgyNiwgCi0gICAgODI4MzIsIDgyODM4LCA4Mjg0NCwgODI4NTAsIDgyODU2LCA4Mjg2MiwgODI4NjgsIDgyODc0LCA4Mjg4MCwgODI4ODYsIAotICAgIDgyODkyLCA4Mjg5OCwgODI5MDQsIDgyOTEwLCA4MjkxNiwgODI5MjIsIDgyOTI4LCA4MjkzNCwgODI5NDAsIDgyOTQ2LCAKLSAgICA4Mjk1MiwgODI5NTgsIDgyOTY0LCA4Mjk3MCwgODI5NzYsIDgyOTgyLCA4Mjk4OCwgODI5OTQsIDgzMDAwLCA4MzAwNiwgCi0gICAgODMwMTIsIDgzMDE4LCA4MzAyNCwgODMwMzAsIDgzMDM2LCA4MzA0MiwgODMwNDgsIDgzMDU0LCA4MzA2MCwgODMwNjYsIAotICAgIDgzMDcyLCA4MzA3OCwgODMwODQsIDgzMDkwLCA4MzA5NiwgODMxMDIsIDgzMTA4LCA4MzExNCwgODMxMjAsIDgzMTI2LCAKLSAgICA4MzEzMiwgODMxMzgsIDgzMTQ0LCA4MzE1MCwgODMxNTYsIDgzMTYyLCA4MzE2OCwgODMxNzQsIDgzMTgwLCA4MzE4NiwgCi0gICAgODMxOTIsIDgzMTk4LCA4MzIwNCwgODMyMTAsIDgzMjE2LCA4MzIyMiwgODMyMjgsIDgzMjM0LCA4MzI0MCwgODMyNDYsIAotICAgIDgzMjUyLCA4MzI1OCwgODMyNjQsIDgzMjcwLCA4MzI3NiwgODMyODQsIDgzMjkyLCA4MzI5OCwgODMzMDQsIDgzMzEwLCAKLSAgICA4MzMxNiwgODMzMjUsIDgzMzM0LCA4MzM0MiwgODMzNTAsIDgzMzU4LCA4MzM2NiwgODMzNzQsIDgzMzgyLCA4MzM5MCwgCi0gICAgODMzOTgsIDgzNDA1LCA4MzQxMiwgODM0MjMsIDgzNDM0LCA4MzQzOCwgODM0NDIsIDgzNDQ3LCA4MzQ1MiwgODM0NTcsIAotICAgIDgzNDYyLCA4MzQ3MCwgODM0NzgsIDgzNDg0LCA4MzQ5MCwgODM0OTcsIDgzNTA0LCA4MzUxMSwgODM1MTUsIDgzNTIxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzUyNywgODM1MzMsIDgzNTM5LCAKLSAgICA4MzU0NSwgODM1NTEsIDgzNTU2LCA4MzU2MSwgODM1NjcsIDgzNTczLCA4MzU3OSwgODM1ODUsIDgzNTk0LCA4MzYwMCwgCi0gICAgODM2MDYsIDgzNjE0LCA4MzYyMiwgODM2MzAsIDgzNjM4LCA4MzY0MywgODM2NDgsIDgzNjUzLCA4MzY1OCwgODM2NzEsIAotICAgIDgzNjg0LCA4MzY5NSwgODM3MDYsIDgzNzE4LCA4MzczMCwgODM3NDIsIDgzNzU0LCA4Mzc2NSwgODM3NzYsIDgzNzg4LCAKLSAgICA4MzgwMCwgODM4MTIsIDgzODI0LCA4MzgzNSwgODM4NDYsIDgzODU3LCA4Mzg3NCwgODM4OTEsIDgzOTA4LCA4MzkxNSwgCi0gICAgODM5MjIsIDgzOTI5LCA4MzkzNiwgODM5NDcsIDgzOTU4LCA4Mzk2OSwgODM5ODIsIDgzOTkzLCA4NDAwMSwgODQwMDksIAotICAgIDg0MDE4LCA4NDAyNiwgODQwMzYsIDg0MDQ0LCA4NDA1MiwgODQwNjAsIDg0MDY5LCA4NDA3NywgODQwODcsIDg0MDk1LCAKLSAgICA4NDEwMywgODQxMTEsIDg0MTIxLCA4NDEyOSwgODQxMzYsIDg0MTQzLCA4NDE1MCwgODQxNTcsIDg0MTY1LCA4NDE3MywgCi0gICAgODQxODEsIDg0MTg5LCA4NDE5NywgODQyMDYsIDg0MjE0LCA4NDIyMiwgODQyMzAsIDg0MjM4LCA4NDI0NiwgODQyNTUsIAotICAgIDg0MjYzLCA4NDI3MSwgODQyNzksIDg0Mjg3LCA4NDI5NSwgODQzMDMsIDg0MzExLCA4NDMxOSwgODQzMjcsIDg0MzM1LCAKLSAgICA4NDM0NCwgODQzNTIsIDg0MzYyLCA4NDM3MCwgODQzNzgsIDg0Mzg2LCA4NDM5NiwgODQ0MDQsIDg0NDEyLCA4NDQyMCwgCi0gICAgODQ0MjgsIDg0NDM3LCA4NDQ0NiwgODQ0NTQsIDg0NDY0LCA4NDQ3MiwgODQ0ODAsIDg0NDg4LCA4NDQ5NywgODQ1MDUsIAotICAgIDg0NTE1LCA4NDUyMywgODQ1MzAsIDg0NTM3LCA4NDU0NSwgODQ1NTIsIDg0NTYxLCA4NDU2OCwgODQ1NzYsIDg0NTg0LCAKLSAgICA4NDU5MywgODQ2MDEsIDg0NjExLCA4NDYxOSwgODQ2MjcsIDg0NjM1LCA4NDY0NSwgODQ2NTMsIDg0NjYwLCA4NDY2NywgCi0gICAgODQ2NzUsIDg0NjgyLCA4NDY5MSwgODQ2OTgsIDg0NzA4LCA4NDcxOCwgODQ3MjksIDg0NzM4LCA4NDc0NywgODQ3NTYsIAotICAgIDg0NzY1LCA4NDc3NCwgODQ3ODQsIDg0Nzk2LCA4NDgwOCwgODQ4MTksIDg0ODMxLCA4NDg0NCwgODQ4NTUsIDg0ODY0LCAKLSAgICA4NDg3MywgODQ4ODEsIDg0ODkwLCA4NDkwMCwgODQ5MDgsIDg0OTE3LCA4NDkyNiwgODQ5MzQsIDg0OTQzLCA4NDk1MywgCi0gICAgODQ5NjEsIDg0OTcwLCA4NDk3OSwgODQ5ODcsIDg0OTk2LCA4NTAwNiwgODUwMTQsIDg1MDI0LCA4NTAzMiwgODUwNDIsIAotICAgIDg1MDUwLCA4NTA1OCwgODUwNjcsIDg1MDc1LCA4NTA4NSwgODUwOTMsIDg1MTAxLCA4NTExMSwgODUxMTksIDg1MTI2LCAKLSAgICA4NTEzMywgODUxNDIsIDg1MTUxLCA4NTE1OSwgODUxNjgsIDg1MTc4LCA4NTE4NiwgODUxOTcsIDg1MjA1LCA4NTIxMywgCi0gICAgODUyMjAsIDg1MjI4LCA4NTIzNywgODUyNDQsIDg1MjU1LCA4NTI2NiwgODUyNzgsIDg1Mjg5LCA4NTMwMSwgODUzMDksIAotICAgIDg1MzE3LCA4NTMyNiwgODUzMzQsIDg1MzQzLCA4NTM1MSwgODUzNTksIDg1MzY4LCA4NTM3NiwgODUzODUsIDg1MzkzLCAKLSAgICA4NTQwMCwgODU0MDcsIDg1NDE0LCA4NTQyMSwgODU0MjksIDg1NDM3LCA4NTQ0NSwgODU0NTMsIDg1NDYyLCA4NTQ3MCwgCi0gICAgODU0NzgsIDg1NDg3LCA4NTQ5NSwgODU1MDMsIDg1NTExLCA4NTUyMCwgODU1MjgsIDg1NTM2LCA4NTU0NCwgODU1NTIsIAotICAgIDg1NTYwLCA4NTU2OCwgODU1NzYsIDg1NTg0LCA4NTU5MiwgODU2MDEsIDg1NjA5LCA4NTYxNywgODU2MjUsIDg1NjMzLCAKLSAgICA4NTY0MSwgODU2NTAsIDg1NjU5LCA4NTY2NywgODU2NzUsIDg1NjgzLCA4NTY5MiwgODU3MDAsIDg1NzA5LCA4NTcxNiwgCi0gICAgODU3MjMsIDg1NzMxLCA4NTczOCwgODU3NDYsIDg1NzU0LCA4NTc2MywgODU3NzEsIDg1NzgwLCA4NTc4OCwgODU3OTYsIAotICAgIDg1ODA2LCA4NTgxMywgODU4MjAsIDg1ODI4LCA4NTgzNSwgODU4NDMsIDg1ODU0LCA4NTg2NiwgODU4NzQsIDg1ODgzLCAKLSAgICA4NTg5MSwgODU5MDAsIDg1OTA4LCA4NTkxNywgODU5MjUsIDg1OTM0LCA4NTk0MiwgODU5NTEsIDg1OTYwLCA4NTk2OCwgCi0gICAgODU5NzYsIDg1OTg0LCA4NTk5MywgODYwMDAsIDg2MDA4LCA4NjAxNywgODYwMjYsIDg2MDM1LCA4NjA0NSwgODYwNTMsIAotICAgIDg2MDYzLCA4NjA3MSwgODYwODEsIDg2MDg5LCA4NjA5OSwgODYxMDcsIDg2MTE3LCA4NjEyNSwgODYxMzQsIDg2MTQxLCAKLSAgICA4NjE1MCwgODYxNTcsIDg2MTY3LCA4NjE3NSwgODYxODUsIDg2MTkzLCA4NjIwMywgODYyMTEsIDg2MjE5LCA4NjIyNywgCi0gICAgODYyMzYsIDg2MjQ0LCA4NjI1MywgODYyNjIsIDg2MjcxLCA4NjI4MCwgODYyOTAsIDg2Mjk4LCA4NjMwOCwgODYzMTYsIAotICAgIDg2MzI2LCA4NjMzNCwgODYzNDQsIDg2MzUyLCA4NjM2MiwgODYzNzAsIDg2Mzc5LCA4NjM4NiwgODYzOTUsIDg2NDAyLCAKLSAgICA4NjQxMiwgODY0MjAsIDg2NDMwLCA4NjQzOCwgODY0NDgsIDg2NDU2LCA4NjQ2NCwgODY0NzIsIDg2NDgxLCA4NjQ4OSwgCi0gICAgODY0OTgsIDg2NTA3LCA4NjUxNiwgODY1MjUsIDg2NTMzLCA4NjU0MSwgODY1NTAsIDg2NTU4LCA4NjU2NywgODY1NzYsIAotICAgIDg2NTg0LCA4NjU5MiwgODY2MDAsIDg2NjA5LCA4NjYxNywgODY2MjUsIDg2NjM0LCA4NjY0MiwgODY2NTAsIDg2NjU4LCAKLSAgICA4NjY2NiwgODY2NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2Njc2LCAKLSAgICA4NjY4NiwgODY2OTYsIDg2NzA2LCA4NjcxNiwgODY3MjcsIDg2NzM3LCA4Njc0NywgODY3NTgsIDg2NzY3LCA4Njc3NiwgCi0gICAgODY3ODUsIDg2Nzk2LCA4NjgwNiwgODY4MTYsIDg2ODI4LCA4NjgzOCwgODY4NDgsIDg2ODU4LCA4Njg2OCwgODY4NzgsIAotICAgIDg2ODg4LCA4Njg5OCwgODY5MDgsIDg2OTE4LCA4NjkyOCwgODY5MzgsIDg2OTQ5LCA4Njk2MCwgODY5NzAsIDg2OTgwLCAKLSAgICA4Njk5MiwgODcwMDMsIDg3MDE0LCA4NzAyNCwgODcwMzQsIDg3MDQ0LCA4NzA1NCwgODcwNjQsIDg3MDc0LCA4NzA4NCwgCi0gICAgODcwOTYsIDg3MTA2LCA4NzExNiwgODcxMjgsIDg3MTM5LCA4NzE1MCwgODcxNjAsIDg3MTcwLCA4NzE4MCwgODcxOTAsIAotICAgIDg3MjAyLCA4NzIxMiwgODcyMjIsIDg3MjMzLCA4NzI0NCwgODcyNTQsIDg3MjY0LCA4NzI3MywgODcyODIsIDg3MjkxLCAKLSAgICA4NzMwMCwgODczMDksIDg3MzE5LCAwLCAwLCA4NzMyOSwgODczMzksIDg3MzQ5LCA4NzM1OSwgODczNjksIDg3MzgxLCAKLSAgICA4NzM5MSwgODc0MDEsIDg3NDEzLCA4NzQyMywgODc0MzUsIDg3NDQ0LCA4NzQ1MywgODc0NjQsIDg3NDc0LCA4NzQ4NiwgCi0gICAgODc0OTcsIDg3NTEwLCA4NzUyMCwgODc1MzIsIDg3NTQxLCA4NzU1MiwgODc1NjMsIDg3NTc2LCA4NzU4NiwgODc1OTYsIAotICAgIDg3NjA2LCA4NzYxNiwgODc2MjYsIDg3NjM1LCA4NzY0NCwgODc2NTMsIDg3NjYyLCA4NzY3MiwgODc2ODIsIDg3NjkyLCAKLSAgICA4NzcwMiwgODc3MTIsIDg3NzIyLCA4NzczMiwgODc3NDIsIDg3NzUyLCA4Nzc2MiwgODc3NzIsIDg3NzgyLCA4Nzc5MSwgCi0gICAgODc4MDAsIDg3ODA5LCA4NzgxOSwgODc4MjksIDg3ODM5LCA4Nzg0OSwgODc4NTksIDg3ODcwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTA1MywgODEwNTcsIDgxMDYxLCA4MTA2NSwgCisgICAgODEwNjksIDgxMDczLCA4MTA3NywgODEwODEsIDgxMDg1LCA4MTA4OSwgODEwOTMsIDgxMDk3LCA4MTEwMSwgODExMDUsIAorICAgIDgxMTA5LCA4MTExMywgODExMTcsIDgxMTIxLCA4MTEyNSwgODExMjksIDgxMTMzLCA4MTEzNywgODExNDEsIDAsIDAsIDAsIAorICAgIDAsIDgxMTQ1LCA4MTE0OSwgODExNTMsIDgxMTU3LCA4MTE2MSwgODExNjUsIDgxMTY5LCA4MTE3MywgODExNzcsIDgxMTgxLCAKKyAgICA4MTE4NSwgODExODksIDgxMTkzLCA4MTE5NywgODEyMDEsIDgxMjA1LCA4MTIwOSwgODEyMTMsIDgxMjE3LCA4MTIyMSwgCisgICAgODEyMjUsIDgxMjI5LCA4MTIzMywgODEyMzcsIDgxMjQxLCA4MTI0NSwgODEyNDksIDgxMjUzLCA4MTI1NywgODEyNjEsIAorICAgIDgxMjY1LCA4MTI2OSwgODEyNzMsIDgxMjc3LCA4MTI4MSwgODEyODUsIDgxMjg5LCA4MTI5MywgODEyOTcsIDgxMzAxLCAKKyAgICA4MTMwNSwgODEzMDksIDgxMzEzLCA4MTMxNywgODEzMjEsIDgxMzI1LCA4MTMyOSwgODEzMzMsIDgxMzM3LCAwLCAwLCAwLCAKKyAgICAwLCA4MTM0MSwgODEzNDUsIDgxMzQ5LCA4MTM1MywgODEzNTcsIDgxMzYxLCA4MTM2NSwgODEzNjksIDgxMzczLCA4MTM3NywgCisgICAgODEzODEsIDgxMzg1LCA4MTM4OSwgODEzOTMsIDgxMzk3LCA4MTQwMSwgODE0MDUsIDgxNDA5LCA4MTQxMywgODE0MTcsIAorICAgIDgxNDIxLCA4MTQyNSwgODE0MjksIDgxNDMzLCA4MTQzNywgODE0NDEsIDgxNDQ1LCA4MTQ0OSwgODE0NTMsIDgxNDU3LCAKKyAgICA4MTQ2MSwgODE0NjUsIDgxNDY5LCA4MTQ3MywgODE0NzcsIDgxNDgxLCA4MTQ4NSwgODE0ODksIDgxNDkzLCA4MTQ5NywgCisgICAgODE1MDEsIDgxNTA1LCA4MTUwOSwgODE1MTMsIDgxNTE3LCA4MTUyMSwgODE1MjUsIDgxNTI5LCA4MTUzMywgODE1MzcsIAorICAgIDgxNTQxLCA4MTU0NSwgODE1NDksIDgxNTUzLCA4MTU1NywgODE1NjEsIDgxNTY1LCA4MTU2OSwgODE1NzMsIDgxNTc3LCAKKyAgICA4MTU4MSwgODE1ODUsIDgxNTg5LCA4MTU5MywgODE1OTcsIDgxNjAxLCA4MTYwNSwgODE2MDksIDgxNjEzLCA4MTYxNywgCisgICAgODE2MjEsIDgxNjI1LCA4MTYyOSwgODE2MzMsIDgxNjM3LCA4MTY0MSwgODE2NDUsIDgxNjQ5LCA4MTY1MywgODE2NTcsIAorICAgIDgxNjYxLCA4MTY2NSwgODE2NjksIDgxNjczLCA4MTY3NywgODE2ODEsIDgxNjg1LCA4MTY4OSwgODE2OTMsIDgxNjk3LCAKKyAgICA4MTcwMSwgODE3MDUsIDgxNzA5LCA4MTcxMywgODE3MTcsIDgxNzIxLCA4MTcyNSwgODE3MjksIDgxNzMzLCA4MTczNywgCisgICAgODE3NDEsIDgxNzQ1LCA4MTc0OSwgODE3NTMsIDgxNzU3LCA4MTc2MSwgODE3NjUsIDgxNzY5LCA4MTc3MywgODE3NzcsIAorICAgIDgxNzgxLCA4MTc4NSwgODE3ODksIDgxNzkzLCA4MTc5NywgODE4MDEsIDgxODA1LCA4MTgwOSwgODE4MTMsIDgxODE3LCAKKyAgICA4MTgyMSwgODE4MjUsIDgxODI5LCA4MTgzMywgODE4MzcsIDgxODQxLCA4MTg0NSwgODE4NDksIDgxODUzLCA4MTg1NywgCisgICAgODE4NjEsIDgxODY1LCA4MTg2OSwgODE4NzMsIDgxODc3LCA4MTg4MSwgODE4ODUsIDgxODg5LCA4MTg5MywgODE4OTcsIAorICAgIDgxOTAxLCA4MTkwNSwgODE5MDksIDgxOTEzLCA4MTkxNywgODE5MjEsIDgxOTI1LCA4MTkyOSwgODE5MzMsIDgxOTM3LCAKKyAgICA4MTk0MSwgODE5NDUsIDgxOTQ5LCA4MTk1MywgODE5NTcsIDgxOTYxLCA4MTk2NSwgODE5NjksIDgxOTczLCA4MTk3NywgCisgICAgODE5ODEsIDgxOTg1LCA4MTk4OSwgODE5OTMsIDgxOTk3LCA4MjAwMSwgODIwMDUsIDgyMDA5LCA4MjAxMywgODIwMTcsIAorICAgIDgyMDIxLCA4MjAyNSwgODIwMjksIDgyMDMzLCA4MjAzNywgODIwNDEsIDgyMDQ1LCA4MjA0OSwgODIwNTMsIDgyMDU3LCAKKyAgICA4MjA2MSwgODIwNjUsIDgyMDY5LCA4MjA3MywgODIwNzcsIDgyMDgxLCA4MjA4NSwgODIwODksIDgyMDkzLCA4MjA5NywgCisgICAgODIxMDEsIDgyMTA1LCA4MjEwOSwgODIxMTMsIDgyMTE3LCA4MjEyMSwgODIxMjUsIDgyMTI5LCA4MjEzMywgODIxMzcsIAorICAgIDgyMTQxLCA4MjE0NSwgODIxNDksIDgyMTUzLCA4MjE1NywgODIxNjEsIDgyMTY1LCA4MjE2OSwgODIxNzMsIDgyMTc3LCAKKyAgICA4MjE4MSwgODIxODUsIDgyMTg5LCA4MjE5MywgODIxOTcsIDgyMjAxLCA4MjIwNSwgODIyMDksIDgyMjEzLCA4MjIxNywgCisgICAgODIyMjEsIDgyMjI1LCA4MjIyOSwgODIyMzMsIDgyMjM3LCA4MjI0MSwgODIyNDUsIDgyMjQ5LCA4MjI1MywgODIyNTcsIAorICAgIDgyMjYxLCA4MjI2NSwgODIyNjksIDgyMjczLCA4MjI3NywgODIyODEsIDgyMjg1LCA4MjI4OSwgODIyOTMsIDgyMjk3LCAKKyAgICA4MjMwMSwgODIzMDUsIDgyMzA5LCA4MjMxMywgODIzMTcsIDgyMzIxLCA4MjMyNSwgODIzMjksIDgyMzMzLCA4MjMzNywgCisgICAgODIzNDEsIDgyMzQ1LCA4MjM0OSwgODIzNTMsIDgyMzU3LCA4MjM2MSwgODIzNjUsIDgyMzY5LCA4MjM3MywgODIzNzcsIAorICAgIDgyMzgxLCA4MjM4NSwgODIzODksIDgyMzkzLCA4MjM5NywgODI0MDEsIDgyNDA1LCA4MjQwOSwgODI0MTMsIDgyNDE3LCAKKyAgICA4MjQyMSwgODI0MjUsIDgyNDI5LCA4MjQzMywgODI0MzcsIDgyNDQxLCA4MjQ0NSwgODI0NDksIDgyNDUzLCA4MjQ1NywgCisgICAgODI0NjEsIDgyNDY1LCA4MjQ2OSwgODI0NzMsIDgyNDc3LCA4MjQ4MSwgODI0ODUsIDgyNDg5LCA4MjQ5MywgODI0OTcsIAorICAgIDgyNTAxLCA4MjUwNSwgODI1MDksIDgyNTEzLCA4MjUxNywgODI1MjEsIDgyNTI1LCA4MjUyOSwgODI1MzMsIDgyNTM3LCAKKyAgICA4MjU0MSwgODI1NDUsIDgyNTQ5LCA4MjU1MywgODI1NTcsIDgyNTYxLCA4MjU2NSwgODI1NjksIDgyNTczLCA4MjU3NywgCisgICAgODI1ODEsIDgyNTg1LCA4MjU4OSwgODI1OTMsIDgyNTk3LCA4MjYwMSwgODI2MDUsIDgyNjA5LCA4MjYxMywgODI2MTcsIAorICAgIDgyNjIxLCA4MjYyNSwgODI2MjksIDgyNjMzLCA4MjYzNywgODI2NDEsIDgyNjQ1LCA4MjY0OSwgODI2NTMsIDgyNjU3LCAKKyAgICA4MjY2MSwgODI2NjUsIDgyNjY5LCA4MjY3MywgODI2NzcsIDgyNjgxLCA4MjY4NSwgODI2ODksIDgyNjkzLCA4MjY5NywgCisgICAgODI3MDEsIDgyNzA1LCA4MjcwOSwgODI3MTMsIDgyNzE3LCA4MjcyMSwgODI3MjUsIDgyNzI5LCA4MjczMywgODI3MzcsIAorICAgIDgyNzQxLCA4Mjc0NSwgODI3NDksIDgyNzUzLCA4Mjc1NywgODI3NjEsIDgyNzY1LCA4Mjc2OSwgODI3NzMsIDgyNzc3LCAKKyAgICA4Mjc4MSwgODI3ODUsIDgyNzg5LCA4Mjc5MywgODI3OTcsIDgyODAxLCAwLCAwLCA4MjgwNSwgODI4MDksIDgyODEzLCAKKyAgICA4MjgxNywgODI4MjEsIDgyODI1LCA4MjgyOSwgODI4MzMsIDgyODM3LCA4Mjg0MSwgODI4NDUsIDgyODQ5LCA4Mjg1MywgCisgICAgODI4NTcsIDgyODYxLCA4Mjg2NSwgODI4NjksIDgyODczLCA4Mjg3NywgODI4ODEsIDgyODg1LCA4Mjg4OSwgODI4OTMsIAorICAgIDgyODk3LCA4MjkwMSwgODI5MDUsIDgyOTA5LCA4MjkxMywgODI5MTcsIDgyOTIxLCA4MjkyNSwgODI5MjksIDgyOTMzLCAKKyAgICA4MjkzNywgODI5NDEsIDgyOTQ1LCA4Mjk0OSwgODI5NTMsIDgyOTU3LCA4Mjk2MSwgODI5NjUsIDgyOTY5LCA4Mjk3MywgCisgICAgODI5NzcsIDgyOTgxLCA4Mjk4NSwgODI5ODksIDgyOTkzLCA4Mjk5NywgODMwMDEsIDgzMDA1LCA4MzAwOSwgODMwMTMsIAorICAgIDgzMDE3LCA4MzAyMSwgODMwMjUsIDgzMDI5LCA4MzAzMywgODMwMzcsIDgzMDQxLCA4MzA0NSwgODMwNDksIDgzMDUzLCAKKyAgICA4MzA1NywgODMwNjEsIDgzMDY1LCA4MzA2OSwgODMwNzMsIDgzMDc3LCA4MzA4MSwgODMwODUsIDgzMDg5LCA4MzA5MywgCisgICAgODMwOTcsIDgzMTAxLCA4MzEwNSwgODMxMDksIDgzMTEzLCA4MzExNywgODMxMjEsIDgzMTI1LCA4MzEyOSwgODMxMzMsIAorICAgIDgzMTM3LCA4MzE0MSwgODMxNDUsIDgzMTQ5LCA4MzE1MywgODMxNTcsIDgzMTYxLCA4MzE2NSwgODMxNjksIDgzMTczLCAKKyAgICA4MzE3NywgODMxODEsIDgzMTg1LCA4MzE4OSwgODMxOTMsIDgzMTk3LCA4MzIwMSwgODMyMDUsIDgzMjA5LCA4MzIxMywgCisgICAgODMyMTcsIDgzMjIxLCA4MzIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMyMjksIAorICAgIDgzMjM0LCA4MzIzOSwgODMyNDQsIDgzMjQ5LCA4MzI1NCwgODMyNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDgzMjY3LCA4MzI3NCwgODMyODEsIDgzMjg4LCA4MzI5NSwgMCwgMCwgMCwgMCwgMCwgODMzMDIsIDgzMzA5LCAKKyAgICA4MzMxNiwgODMzMjYsIDgzMzMyLCA4MzMzOCwgODMzNDQsIDgzMzUwLCA4MzM1NiwgODMzNjIsIDgzMzY5LCA4MzM3NSwgCisgICAgODMzODEsIDgzMzg3LCA4MzM5NiwgODM0MDUsIDgzNDE3LCA4MzQyOSwgODM0MzUsIDgzNDQxLCA4MzQ0NywgODM0NTQsIAorICAgIDgzNDYxLCA4MzQ2OCwgODM0NzUsIDgzNDgyLCAwLCA4MzQ4OSwgODM0OTYsIDgzNTAzLCA4MzUxMSwgODM1MTgsIDAsIAorICAgIDgzNTI1LCAwLCA4MzUzMiwgODM1MzksIDAsIDgzNTQ2LCA4MzU1NCwgMCwgODM1NjEsIDgzNTY4LCA4MzU3NSwgODM1ODIsIAorICAgIDgzNTg5LCA4MzU5NiwgODM2MDMsIDgzNjEwLCA4MzYxNywgODM2MjQsIDgzNjI5LCA4MzYzNiwgODM2NDMsIDgzNjQ5LCAKKyAgICA4MzY1NSwgODM2NjEsIDgzNjY3LCA4MzY3MywgODM2NzksIDgzNjg1LCA4MzY5MSwgODM2OTcsIDgzNzAzLCA4MzcwOSwgCisgICAgODM3MTUsIDgzNzIxLCA4MzcyNywgODM3MzMsIDgzNzM5LCA4Mzc0NSwgODM3NTEsIDgzNzU3LCA4Mzc2MywgODM3NjksIAorICAgIDgzNzc1LCA4Mzc4MSwgODM3ODcsIDgzNzkzLCA4Mzc5OSwgODM4MDUsIDgzODExLCA4MzgxNywgODM4MjMsIDgzODI5LCAKKyAgICA4MzgzNSwgODM4NDEsIDgzODQ3LCA4Mzg1MywgODM4NTksIDgzODY1LCA4Mzg3MSwgODM4NzcsIDgzODgzLCA4Mzg4OSwgCisgICAgODM4OTUsIDgzOTAxLCA4MzkwNywgODM5MTMsIDgzOTE5LCA4MzkyNSwgODM5MzEsIDgzOTM3LCA4Mzk0MywgODM5NDksIAorICAgIDgzOTU1LCA4Mzk2MSwgODM5NjcsIDgzOTczLCA4Mzk3OSwgODM5ODUsIDgzOTkxLCA4Mzk5NywgODQwMDMsIDg0MDA5LCAKKyAgICA4NDAxNSwgODQwMjEsIDg0MDI3LCA4NDAzMywgODQwMzksIDg0MDQ1LCA4NDA1MSwgODQwNTcsIDg0MDYzLCA4NDA2OSwgCisgICAgODQwNzUsIDg0MDgxLCA4NDA4NywgODQwOTMsIDg0MDk5LCA4NDEwNywgODQxMTUsIDg0MTIxLCA4NDEyNywgODQxMzMsIAorICAgIDg0MTM5LCA4NDE0OCwgODQxNTcsIDg0MTY1LCA4NDE3MywgODQxODEsIDg0MTg5LCA4NDE5NywgODQyMDUsIDg0MjEzLCAKKyAgICA4NDIyMSwgODQyMjgsIDg0MjM1LCA4NDI0NiwgODQyNTcsIDg0MjYxLCA4NDI2NSwgODQyNzAsIDg0Mjc1LCA4NDI4MCwgCisgICAgODQyODUsIDg0MjkzLCA4NDMwMSwgODQzMDcsIDg0MzEzLCA4NDMyMCwgODQzMjcsIDg0MzM0LCA4NDMzOCwgODQzNDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg0MzUwLCA4NDM1NiwgODQzNjIsIAorICAgIDg0MzY4LCA4NDM3NCwgODQzNzksIDg0Mzg0LCA4NDM5MCwgODQzOTYsIDg0NDAyLCA4NDQwOCwgODQ0MTcsIDg0NDIzLCAKKyAgICA4NDQyOSwgODQ0MzcsIDg0NDQ1LCA4NDQ1MywgODQ0NjEsIDg0NDY2LCA4NDQ3MSwgODQ0NzYsIDg0NDgxLCA4NDQ5NCwgCisgICAgODQ1MDcsIDg0NTE4LCA4NDUyOSwgODQ1NDEsIDg0NTUzLCA4NDU2NSwgODQ1NzcsIDg0NTg4LCA4NDU5OSwgODQ2MTEsIAorICAgIDg0NjIzLCA4NDYzNSwgODQ2NDcsIDg0NjU4LCA4NDY2OSwgODQ2ODAsIDg0Njk3LCA4NDcxNCwgODQ3MzEsIDg0NzM4LCAKKyAgICA4NDc0NSwgODQ3NTIsIDg0NzU5LCA4NDc3MCwgODQ3ODEsIDg0NzkyLCA4NDgwNSwgODQ4MTYsIDg0ODI0LCA4NDgzMiwgCisgICAgODQ4NDEsIDg0ODQ5LCA4NDg1OSwgODQ4NjcsIDg0ODc1LCA4NDg4MywgODQ4OTIsIDg0OTAwLCA4NDkxMCwgODQ5MTgsIAorICAgIDg0OTI2LCA4NDkzNCwgODQ5NDQsIDg0OTUyLCA4NDk1OSwgODQ5NjYsIDg0OTczLCA4NDk4MCwgODQ5ODgsIDg0OTk2LCAKKyAgICA4NTAwNCwgODUwMTIsIDg1MDIwLCA4NTAyOSwgODUwMzcsIDg1MDQ1LCA4NTA1MywgODUwNjEsIDg1MDY5LCA4NTA3OCwgCisgICAgODUwODYsIDg1MDk0LCA4NTEwMiwgODUxMTAsIDg1MTE4LCA4NTEyNiwgODUxMzQsIDg1MTQyLCA4NTE1MCwgODUxNTgsIAorICAgIDg1MTY3LCA4NTE3NSwgODUxODUsIDg1MTkzLCA4NTIwMSwgODUyMDksIDg1MjE5LCA4NTIyNywgODUyMzUsIDg1MjQzLCAKKyAgICA4NTI1MSwgODUyNjAsIDg1MjY5LCA4NTI3NywgODUyODcsIDg1Mjk1LCA4NTMwMywgODUzMTEsIDg1MzIwLCA4NTMyOCwgCisgICAgODUzMzgsIDg1MzQ2LCA4NTM1MywgODUzNjAsIDg1MzY4LCA4NTM3NSwgODUzODQsIDg1MzkxLCA4NTM5OSwgODU0MDcsIAorICAgIDg1NDE2LCA4NTQyNCwgODU0MzQsIDg1NDQyLCA4NTQ1MCwgODU0NTgsIDg1NDY4LCA4NTQ3NiwgODU0ODMsIDg1NDkwLCAKKyAgICA4NTQ5OCwgODU1MDUsIDg1NTE0LCA4NTUyMSwgODU1MzEsIDg1NTQxLCA4NTU1MiwgODU1NjEsIDg1NTcwLCA4NTU3OSwgCisgICAgODU1ODgsIDg1NTk3LCA4NTYwNywgODU2MTksIDg1NjMxLCA4NTY0MiwgODU2NTQsIDg1NjY3LCA4NTY3OCwgODU2ODcsIAorICAgIDg1Njk2LCA4NTcwNCwgODU3MTMsIDg1NzIzLCA4NTczMSwgODU3NDAsIDg1NzQ5LCA4NTc1NywgODU3NjYsIDg1Nzc2LCAKKyAgICA4NTc4NCwgODU3OTMsIDg1ODAyLCA4NTgxMCwgODU4MTksIDg1ODI5LCA4NTgzNywgODU4NDcsIDg1ODU1LCA4NTg2NSwgCisgICAgODU4NzMsIDg1ODgxLCA4NTg5MCwgODU4OTgsIDg1OTA4LCA4NTkxNiwgODU5MjQsIDg1OTM0LCA4NTk0MiwgODU5NDksIAorICAgIDg1OTU2LCA4NTk2NSwgODU5NzQsIDg1OTgyLCA4NTk5MSwgODYwMDEsIDg2MDA5LCA4NjAyMCwgODYwMjgsIDg2MDM2LCAKKyAgICA4NjA0MywgODYwNTEsIDg2MDYwLCA4NjA2NywgODYwNzgsIDg2MDg5LCA4NjEwMSwgODYxMTIsIDg2MTI0LCA4NjEzMiwgCisgICAgODYxNDAsIDg2MTQ5LCA4NjE1NywgODYxNjYsIDg2MTc0LCA4NjE4MiwgODYxOTEsIDg2MTk5LCA4NjIwOCwgODYyMTYsIAorICAgIDg2MjIzLCA4NjIzMCwgODYyMzcsIDg2MjQ0LCA4NjI1MiwgODYyNjAsIDg2MjY4LCA4NjI3NiwgODYyODUsIDg2MjkzLCAKKyAgICA4NjMwMSwgODYzMTAsIDg2MzE4LCA4NjMyNiwgODYzMzQsIDg2MzQzLCA4NjM1MSwgODYzNTksIDg2MzY3LCA4NjM3NSwgCisgICAgODYzODMsIDg2MzkxLCA4NjM5OSwgODY0MDcsIDg2NDE1LCA4NjQyNCwgODY0MzIsIDg2NDQwLCA4NjQ0OCwgODY0NTYsIAorICAgIDg2NDY0LCA4NjQ3MywgODY0ODIsIDg2NDkwLCA4NjQ5OCwgODY1MDYsIDg2NTE1LCA4NjUyMywgODY1MzIsIDg2NTM5LCAKKyAgICA4NjU0NiwgODY1NTQsIDg2NTYxLCA4NjU2OSwgODY1NzcsIDg2NTg2LCA4NjU5NCwgODY2MDMsIDg2NjExLCA4NjYxOSwgCisgICAgODY2MjksIDg2NjM2LCA4NjY0MywgODY2NTEsIDg2NjU4LCA4NjY2NiwgODY2NzcsIDg2Njg5LCA4NjY5NywgODY3MDYsIAorICAgIDg2NzE0LCA4NjcyMywgODY3MzEsIDg2NzQwLCA4Njc0OCwgODY3NTcsIDg2NzY1LCA4Njc3NCwgODY3ODMsIDg2NzkxLCAKKyAgICA4Njc5OSwgODY4MDcsIDg2ODE2LCA4NjgyMywgODY4MzEsIDg2ODQwLCA4Njg0OSwgODY4NTgsIDg2ODY4LCA4Njg3NiwgCisgICAgODY4ODYsIDg2ODk0LCA4NjkwNCwgODY5MTIsIDg2OTIyLCA4NjkzMCwgODY5NDAsIDg2OTQ4LCA4Njk1NywgODY5NjQsIAorICAgIDg2OTczLCA4Njk4MCwgODY5OTAsIDg2OTk4LCA4NzAwOCwgODcwMTYsIDg3MDI2LCA4NzAzNCwgODcwNDIsIDg3MDUwLCAKKyAgICA4NzA1OSwgODcwNjcsIDg3MDc2LCA4NzA4NSwgODcwOTQsIDg3MTAzLCA4NzExMywgODcxMjEsIDg3MTMxLCA4NzEzOSwgCisgICAgODcxNDksIDg3MTU3LCA4NzE2NywgODcxNzUsIDg3MTg1LCA4NzE5MywgODcyMDIsIDg3MjA5LCA4NzIxOCwgODcyMjUsIAorICAgIDg3MjM1LCA4NzI0MywgODcyNTMsIDg3MjYxLCA4NzI3MSwgODcyNzksIDg3Mjg3LCA4NzI5NSwgODczMDQsIDg3MzEyLCAKKyAgICA4NzMyMSwgODczMzAsIDg3MzM5LCA4NzM0OCwgODczNTYsIDg3MzY0LCA4NzM3MywgODczODEsIDg3MzkwLCA4NzM5OSwgCisgICAgODc0MDcsIDg3NDE1LCA4NzQyMywgODc0MzIsIDg3NDQwLCA4NzQ0OCwgODc0NTcsIDg3NDY1LCA4NzQ3MywgODc0ODEsIAorICAgIDg3NDg5LCA4NzQ5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc0OTksIAorICAgIDg3NTA5LCA4NzUxOSwgODc1MjksIDg3NTM5LCA4NzU1MCwgODc1NjAsIDg3NTcwLCA4NzU4MSwgODc1OTAsIDg3NTk5LCAKKyAgICA4NzYwOCwgODc2MTksIDg3NjI5LCA4NzYzOSwgODc2NTEsIDg3NjYxLCA4NzY3MSwgODc2ODEsIDg3NjkxLCA4NzcwMSwgCisgICAgODc3MTEsIDg3NzIxLCA4NzczMSwgODc3NDEsIDg3NzUxLCA4Nzc2MSwgODc3NzIsIDg3NzgzLCA4Nzc5MywgODc4MDMsIAorICAgIDg3ODE1LCA4NzgyNiwgODc4MzcsIDg3ODQ3LCA4Nzg1NywgODc4NjcsIDg3ODc3LCA4Nzg4NywgODc4OTcsIDg3OTA3LCAKKyAgICA4NzkxOSwgODc5MjksIDg3OTM5LCA4Nzk1MSwgODc5NjIsIDg3OTczLCA4Nzk4MywgODc5OTMsIDg4MDAzLCA4ODAxMywgCisgICAgODgwMjUsIDg4MDM1LCA4ODA0NSwgODgwNTYsIDg4MDY3LCA4ODA3NywgODgwODcsIDg4MDk2LCA4ODEwNSwgODgxMTQsIAorICAgIDg4MTIzLCA4ODEzMiwgODgxNDIsIDAsIDAsIDg4MTUyLCA4ODE2MiwgODgxNzIsIDg4MTgyLCA4ODE5MiwgODgyMDQsIAorICAgIDg4MjE0LCA4ODIyNCwgODgyMzYsIDg4MjQ2LCA4ODI1OCwgODgyNjcsIDg4Mjc2LCA4ODI4NywgODgyOTcsIDg4MzA5LCAKKyAgICA4ODMyMCwgODgzMzMsIDg4MzQzLCA4ODM1NSwgODgzNjQsIDg4Mzc1LCA4ODM4NiwgODgzOTksIDg4NDA5LCA4ODQxOSwgCisgICAgODg0MjksIDg4NDM5LCA4ODQ0OSwgODg0NTgsIDg4NDY3LCA4ODQ3NiwgODg0ODUsIDg4NDk1LCA4ODUwNSwgODg1MTUsIAorICAgIDg4NTI1LCA4ODUzNSwgODg1NDUsIDg4NTU1LCA4ODU2NSwgODg1NzUsIDg4NTg1LCA4ODU5NSwgODg2MDUsIDg4NjE0LCAKKyAgICA4ODYyMywgODg2MzIsIDg4NjQyLCA4ODY1MiwgODg2NjIsIDg4NjcyLCA4ODY4MiwgODg2OTMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3ODgwLCA4Nzg5NSwgODc5MTAsIDg3OTE2LCA4NzkyMiwgODc5MjgsIAotICAgIDg3OTM0LCA4Nzk0MCwgODc5NDYsIDg3OTUyLCA4Nzk1OCwgODc5NjYsIDg3OTcwLCA4Nzk3MywgMCwgMCwgODc5ODEsIAotICAgIDg3OTg0LCA4Nzk4NywgODc5OTAsIDg3OTkzLCA4Nzk5NiwgODc5OTksIDg4MDAyLCA4ODAwNSwgODgwMDgsIDg4MDExLCAKLSAgICA4ODAxNCwgODgwMTcsIDg4MDIwLCA4ODAyMywgODgwMjYsIDg4MDI5LCA4ODAzNywgODgwNDYsIDg4MDU3LCA4ODA2NSwgCi0gICAgODgwNzMsIDg4MDgyLCA4ODA5MSwgODgxMDIsIDg4MTE0LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODEyNCwgODgxMjksIDg4MTM0LCAKLSAgICA4ODE0MSwgODgxNDgsIDg4MTU0LCA4ODE2MCwgODgxNjUsIDg4MTcwLCA4ODE3NSwgODgxODEsIDg4MTg3LCA4ODE5MywgCi0gICAgODgxOTksIDg4MjA1LCA4ODIxMiwgODgyMTksIDg4MjI5LCA4ODIzOSwgODgyNDksIDg4MjU4LCA4ODI2OSwgODgyNzgsIAotICAgIDg4Mjg3LCA4ODI5NywgODgzMDcsIDg4MzE5LCA4ODMzMSwgODgzNDIsIDg4MzUzLCA4ODM2NCwgODgzNzUsIDg4Mzg1LCAKLSAgICA4ODM5NSwgODg0MDUsIDg4NDE1LCA4ODQyNiwgODg0MzcsIDg4NDQxLCA4ODQ0NiwgODg0NTUsIDg4NDY0LCA4ODQ2OCwgCi0gICAgODg0NzIsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg0OTksIDg4NTAzLCAwLCA4ODUwOCwgODg1MTEsIAotICAgIDg4NTE0LCA4ODUxOCwgODg1MjIsIDg4NTI3LCA4ODUzMSwgODg1MzUsIDg4NTQwLCA4ODU0NSwgODg1NTIsIDg4NTU5LCAKLSAgICA4ODU2MiwgODg1NjUsIDg4NTY4LCA4ODU3MSwgODg1NzQsIDg4NTc4LCA4ODU4MiwgMCwgODg1ODYsIDg4NTkxLCA4ODU5NSwgCi0gICAgODg1OTksIDAsIDAsIDAsIDAsIDg4NjA0LCA4ODYwOSwgODg2MTYsIDg4NjIxLCA4ODYyNiwgMCwgODg2MzEsIDg4NjM2LCAKLSAgICA4ODY0MSwgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NywgCi0gICAgODg2OTYsIDg4NzA1LCA4ODcxNCwgODg3MjMsIDg4NzMzLCA4ODc0MywgODg3NTMsIDg4NzYzLCA4ODc3MiwgODg3ODEsIAotICAgIDg4NzkwLCA4ODc5OSwgODg4MDQsIDg4ODA5LCA4ODgxNSwgODg4MjEsIDg4ODI3LCA4ODgzMywgODg4NDEsIDg4ODQ5LCAKLSAgICA4ODg1NSwgODg4NjEsIDg4ODY3LCA4ODg3MywgODg4NzksIDg4ODg1LCA4ODg5MSwgODg4OTcsIDg4OTAyLCA4ODkwNywgCi0gICAgODg5MTIsIDg4OTE3LCA4ODkyMiwgODg5MjcsIDg4OTMyLCA4ODkzNywgODg5NDMsIDg4OTQ5LCA4ODk1NSwgODg5NjEsIAotICAgIDg4OTY3LCA4ODk3MywgODg5NzksIDg4OTg1LCA4ODk5MSwgODg5OTcsIDg5MDAzLCA4OTAwOSwgODkwMTUsIDg5MDIxLCAKLSAgICA4OTAyNywgODkwMzMsIDg5MDM5LCA4OTA0NSwgODkwNTEsIDg5MDU3LCA4OTA2MywgODkwNjksIDg5MDc1LCA4OTA4MSwgCi0gICAgODkwODcsIDg5MDkzLCA4OTA5OSwgODkxMDUsIDg5MTExLCA4OTExNywgODkxMjMsIDg5MTI5LCA4OTEzNSwgODkxNDEsIAotICAgIDg5MTQ3LCA4OTE1MywgODkxNTksIDg5MTY1LCA4OTE3MSwgODkxNzcsIDg5MTgzLCA4OTE4OSwgODkxOTUsIDg5MjAxLCAKLSAgICA4OTIwNywgODkyMTMsIDg5MjE5LCA4OTIyNSwgODkyMzEsIDg5MjM3LCA4OTI0MywgODkyNDksIDg5MjU1LCA4OTI2MSwgCi0gICAgODkyNjcsIDg5MjczLCA4OTI3OSwgODkyODUsIDg5MjkxLCA4OTI5NywgODkzMDIsIDg5MzA3LCA4OTMxMiwgODkzMTcsIAotICAgIDg5MzIzLCA4OTMyOSwgODkzMzUsIDg5MzQxLCA4OTM0NywgODkzNTMsIDg5MzU5LCA4OTM2NSwgODkzNzEsIDg5Mzc3LCAKLSAgICA4OTM4NCwgODkzOTEsIDg5Mzk2LCA4OTQwMSwgODk0MDYsIDg5NDExLCA4OTQyMywgODk0MzUsIDg5NDQ3LCA4OTQ1OSwgCi0gICAgODk0NzIsIDg5NDg1LCA4OTQ5MywgMCwgMCwgODk1MDEsIDAsIDg5NTA5LCA4OTUxMywgODk1MTcsIDg5NTIwLCA4OTUyNCwgCi0gICAgODk1MjgsIDg5NTMxLCA4OTUzNCwgODk1MzgsIDg5NTQyLCA4OTU0NSwgODk1NDgsIDg5NTUxLCA4OTU1NCwgODk1NTksIAotICAgIDg5NTYyLCA4OTU2NiwgODk1NjksIDg5NTcyLCA4OTU3NSwgODk1NzgsIDg5NTgxLCA4OTU4NCwgODk1ODgsIDg5NTkxLCAKLSAgICA4OTU5NSwgODk1OTgsIDg5NjAxLCA4OTYwNSwgODk2MDksIDg5NjEzLCA4OTYxNywgODk2MjIsIDg5NjI3LCA4OTYzMywgCi0gICAgODk2MzksIDg5NjQ1LCA4OTY1MCwgODk2NTYsIDg5NjYyLCA4OTY2OCwgODk2NzMsIDg5Njc5LCA4OTY4NSwgODk2OTAsIAotICAgIDg5Njk2LCA4OTcwMiwgODk3MDcsIDg5NzEzLCA4OTcxOSwgODk3MjQsIDg5NzI5LCA4OTczNSwgODk3NDAsIDg5NzQ2LCAKLSAgICA4OTc1MiwgODk3NTgsIDg5NzY0LCA4OTc3MCwgODk3NzQsIDg5Nzc5LCA4OTc4MywgODk3ODgsIDg5NzkyLCA4OTc5NywgCi0gICAgODk4MDIsIDg5ODA4LCA4OTgxNCwgODk4MjAsIDg5ODI1LCA4OTgzMSwgODk4MzcsIDg5ODQzLCA4OTg0OCwgODk4NTQsIAotICAgIDg5ODYwLCA4OTg2NSwgODk4NzEsIDg5ODc3LCA4OTg4MiwgODk4ODgsIDg5ODk0LCA4OTg5OSwgODk5MDQsIDg5OTEwLCAKLSAgICA4OTkxNSwgODk5MjEsIDg5OTI3LCA4OTkzMywgODk5MzksIDg5OTQ1LCA4OTk1MCwgODk5NTQsIDg5OTU5LCA4OTk2MiwgCi0gICAgODk5NjcsIDg5OTcyLCA4OTk3OCwgODk5ODMsIDg5OTg4LCA4OTk5MiwgODk5OTcsIDkwMDAyLCA5MDAwNywgOTAwMTIsIAotICAgIDkwMDE3LCA5MDAyMiwgOTAwMjcsIDkwMDMyLCA5MDAzOCwgOTAwNDQsIDkwMDUwLCA5MDA1OCwgOTAwNjIsIDkwMDY2LCAKLSAgICA5MDA3MCwgOTAwNzQsIDkwMDc4LCA5MDA4MiwgOTAwODcsIDkwMDkyLCA5MDA5NywgOTAxMDIsIDkwMTA3LCA5MDExMiwgCi0gICAgOTAxMTcsIDkwMTIyLCA5MDEyNywgOTAxMzIsIDkwMTM3LCA5MDE0MiwgOTAxNDcsIDkwMTUxLCA5MDE1NiwgOTAxNjEsIAotICAgIDkwMTY2LCA5MDE3MSwgOTAxNzYsIDkwMTgwLCA5MDE4NSwgOTAxOTAsIDkwMTk1LCA5MDIwMCwgOTAyMDQsIDkwMjA5LCAKLSAgICA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIyOCwgOTAyMzMsIDkwMjM4LCA5MDI0MywgOTAyNDgsIDkwMjUzLCA5MDI1OCwgCi0gICAgOTAyNjMsIDkwMjY4LCA5MDI3MywgOTAyODAsIDkwMjg3LCA5MDI5MSwgOTAyOTYsIDkwMzAxLCA5MDMwNiwgOTAzMTEsIAotICAgIDkwMzE2LCA5MDMyMSwgOTAzMjYsIDkwMzMxLCA5MDMzNiwgOTAzNDEsIDkwMzQ2LCA5MDM1MSwgOTAzNTYsIDkwMzYxLCAKLSAgICA5MDM2NiwgOTAzNzEsIDkwMzc2LCA5MDM4MSwgOTAzODYsIDkwMzkxLCA5MDM5NiwgOTA0MDEsIDkwNDA2LCA5MDQxMSwgCi0gICAgOTA0MTYsIDkwNDIxLCA5MDQyNiwgOTA0MzEsIDkwNDM2LCAwLCAwLCAwLCA5MDQ0MSwgOTA0NDUsIDkwNDUwLCA5MDQ1NCwgCi0gICAgOTA0NTksIDkwNDY0LCAwLCAwLCA5MDQ2OCwgOTA0NzMsIDkwNDc4LCA5MDQ4MiwgOTA0ODcsIDkwNDkyLCAwLCAwLCAKLSAgICA5MDQ5NywgOTA1MDIsIDkwNTA2LCA5MDUxMSwgOTA1MTYsIDkwNTIxLCAwLCAwLCA5MDUyNiwgOTA1MzEsIDkwNTM2LCAwLCAKLSAgICAwLCAwLCA5MDU0MCwgOTA1NDQsIDkwNTQ4LCA5MDU1MiwgOTA1NTUsIDkwNTU5LCA5MDU2MywgMCwgOTA1NjcsIDkwNTczLCAKLSAgICA5MDU3NiwgOTA1NzksIDkwNTgyLCA5MDU4NSwgOTA1ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwNTkzLCAKLSAgICA5MDU5OSwgOTA2MDUsIDkwNjExLCA5MDYxNywgMCwgMCwgOTA2MjEsIDkwNjI3LCA5MDYzMywgOTA2MzksIDkwNjQ1LCAKLSAgICA5MDY1MSwgOTA2NTgsIDkwNjY1LCA5MDY3MiwgOTA2NzksIDkwNjg2LCA5MDY5MywgMCwgOTA3MDAsIDkwNzA3LCA5MDcxNCwgCi0gICAgOTA3MjAsIDkwNzI3LCA5MDczNCwgOTA3NDEsIDkwNzQ4LCA5MDc1NCwgOTA3NjEsIDkwNzY4LCA5MDc3NSwgOTA3ODIsIAotICAgIDkwNzg5LCA5MDc5NiwgOTA4MDMsIDkwODEwLCA5MDgxNywgOTA4MjMsIDkwODMwLCA5MDgzNywgOTA4NDQsIDkwODUxLCAKLSAgICA5MDg1OCwgOTA4NjUsIDkwODcyLCAwLCA5MDg3OSwgOTA4ODYsIDkwODkzLCA5MDkwMCwgOTA5MDcsIDkwOTE0LCA5MDkyMSwgCi0gICAgOTA5MjgsIDkwOTM1LCA5MDk0MiwgOTA5NDksIDkwOTU2LCA5MDk2MywgOTA5NzAsIDkwOTc2LCA5MDk4MywgOTA5OTAsIAotICAgIDkwOTk3LCA5MTAwNCwgMCwgOTEwMTEsIDkxMDE4LCAwLCA5MTAyNSwgOTEwMzIsIDkxMDM5LCA5MTA0NiwgOTEwNTMsIAotICAgIDkxMDYwLCA5MTA2NywgOTEwNzQsIDkxMDgxLCA5MTA4OCwgOTEwOTUsIDkxMTAyLCA5MTEwOSwgOTExMTYsIDkxMTIzLCAwLCAKLSAgICAwLCA5MTEyOSwgOTExMzQsIDkxMTM5LCA5MTE0NCwgOTExNDksIDkxMTU0LCA5MTE1OSwgOTExNjQsIDkxMTY5LCA5MTE3NCwgCi0gICAgOTExNzksIDkxMTg0LCA5MTE4OSwgOTExOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMTk5LCA5MTIwNiwgCi0gICAgOTEyMTMsIDkxMjIwLCA5MTIyNywgOTEyMzQsIDkxMjQxLCA5MTI0OCwgOTEyNTUsIDkxMjYyLCA5MTI2OSwgOTEyNzYsIAotICAgIDkxMjgzLCA5MTI5MCwgOTEyOTcsIDkxMzA0LCA5MTMxMSwgOTEzMTgsIDkxMzI1LCA5MTMzMiwgOTEzNDAsIDkxMzQ4LCAKLSAgICA5MTM1NSwgOTEzNjIsIDkxMzY3LCA5MTM3NSwgOTEzODMsIDkxMzkwLCA5MTM5NywgOTE0MDIsIDkxNDA5LCA5MTQxNCwgCi0gICAgOTE0MTksIDkxNDI2LCA5MTQzMSwgOTE0MzYsIDkxNDQxLCA5MTQ0OSwgOTE0NTQsIDkxNDU5LCA5MTQ2NiwgOTE0NzEsIAotICAgIDkxNDc2LCA5MTQ4MywgOTE0OTAsIDkxNDk1LCA5MTUwMCwgOTE1MDUsIDkxNTEwLCA5MTUxNSwgOTE1MjAsIDkxNTI1LCAKLSAgICA5MTUzMCwgOTE1MzUsIDkxNTQyLCA5MTU0NywgOTE1NTQsIDkxNTU5LCA5MTU2NCwgOTE1NjksIDkxNTc0LCA5MTU3OSwgCi0gICAgOTE1ODQsIDkxNTg5LCA5MTU5NCwgOTE1OTksIDkxNjA0LCA5MTYwOSwgOTE2MTYsIDkxNjIzLCA5MTYzMCwgOTE2MzcsIAotICAgIDkxNjQzLCA5MTY0OCwgOTE2NTUsIDkxNjYwLCA5MTY2NSwgOTE2NzQsIDkxNjgxLCA5MTY5MCwgOTE2OTcsIDkxNzAyLCAKLSAgICA5MTcwNywgOTE3MTUsIDkxNzIwLCA5MTcyNSwgOTE3MzAsIDkxNzM1LCA5MTc0MCwgOTE3NDcsIDkxNzUyLCA5MTc1NywgCi0gICAgOTE3NjIsIDkxNzY3LCA5MTc3MiwgOTE3NzksIDkxNzg2LCA5MTc5MywgOTE4MDAsIDkxODA3LCA5MTgxNCwgOTE4MjEsIAotICAgIDkxODI4LCA5MTgzNSwgOTE4NDIsIDkxODQ5LCA5MTg1NiwgOTE4NjMsIDkxODcwLCA5MTg3NywgOTE4ODQsIDkxODkxLCAKLSAgICA5MTg5OCwgOTE5MDUsIDkxOTEyLCA5MTkxOSwgOTE5MjYsIDkxOTMzLCA5MTk0MCwgOTE5NDcsIDkxOTU0LCA5MTk2MSwgCi0gICAgOTE5NjgsIDAsIDAsIDAsIDAsIDAsIDkxOTc1LCA5MTk4MywgOTE5OTEsIDAsIDAsIDAsIDAsIDkxOTk2LCA5MjAwMCwgCi0gICAgOTIwMDQsIDkyMDA4LCA5MjAxMiwgOTIwMTYsIDkyMDIwLCA5MjAyNSwgOTIwMjksIDkyMDM0LCA5MjAzOSwgOTIwNDQsIAotICAgIDkyMDQ5LCA5MjA1NCwgOTIwNTksIDkyMDY0LCA5MjA2OSwgOTIwNzQsIDkyMDc5LCA5MjA4NSwgOTIwOTEsIDkyMDk3LCAKLSAgICA5MjEwNCwgOTIxMTEsIDkyMTE4LCA5MjEyNSwgOTIxMzIsIDkyMTM5LCA5MjE0NSwgOTIxNTEsIDkyMTU3LCA5MjE2NCwgCi0gICAgOTIxNzEsIDkyMTc4LCA5MjE4NSwgOTIxOTIsIDkyMTk5LCA5MjIwNiwgOTIyMTMsIDkyMjIwLCA5MjIyNywgOTIyMzQsIAotICAgIDkyMjQxLCA5MjI0OCwgOTIyNTUsIDAsIDAsIDAsIDkyMjYyLCA5MjI3MCwgOTIyNzgsIDkyMjg2LCA5MjI5NCwgOTIzMDIsIAotICAgIDkyMzEyLCA5MjMyMiwgOTIzMzAsIDkyMzM4LCA5MjM0NiwgOTIzNTQsIDkyMzYyLCA5MjM2OCwgOTIzNzUsIDkyMzg0LCAKLSAgICA5MjM5MywgOTI0MDIsIDkyNDExLCA5MjQyMCwgOTI0MjksIDkyNDM5LCA5MjQ1MCwgOTI0NjAsIDkyNDcxLCA5MjQ4MCwgCi0gICAgOTI0ODksIDkyNDk4LCA5MjUwOCwgOTI1MTksIDkyNTI5LCA5MjU0MCwgOTI1NTEsIDkyNTYwLCA5MjU2OCwgOTI1NzQsIAotICAgIDkyNTgwLCA5MjU4NiwgOTI1OTIsIDkyNjAwLCA5MjYwOCwgOTI2MTQsIDkyNjIxLCA5MjYzMSwgOTI2MzgsIDkyNjQ1LCAKLSAgICA5MjY1MiwgOTI2NTksIDkyNjY2LCA5MjY3NiwgOTI2ODMsIDkyNjkwLCA5MjY5OCwgOTI3MDYsIDkyNzE1LCA5MjcyNCwgCi0gICAgOTI3MzMsIDkyNzQyLCA5Mjc1MSwgOTI3NTksIDkyNzY4LCA5Mjc3NywgOTI3ODYsIDkyNzkwLCA5Mjc5NywgOTI4MDIsIAotICAgIDkyODA3LCA5MjgxMSwgOTI4MTUsIDkyODE5LCA5MjgyMywgOTI4MjgsIDkyODMzLCA5MjgzOSwgOTI4NDUsIDkyODQ5LCAKLSAgICA5Mjg1NSwgOTI4NTksIDkyODYzLCA5Mjg2NywgOTI4NzEsIDkyODc1LCA5Mjg3OSwgOTI4ODUsIDkyODg5LCA5Mjg5NCwgMCwgCi0gICAgMCwgMCwgOTI4OTgsIDkyOTAzLCA5MjkwOCwgOTI5MTMsIDkyOTE4LCA5MjkyNSwgOTI5MzAsIDkyOTM1LCA5Mjk0MCwgCi0gICAgOTI5NDUsIDkyOTUwLCA5Mjk1NSwgMCwgMCwgMCwgMCwgOTI5NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzAzLCA4ODcxOCwgODg3MzMsIDg4NzM5LCA4ODc0NSwgODg3NTEsIAorICAgIDg4NzU3LCA4ODc2MywgODg3NjksIDg4Nzc1LCA4ODc4MSwgODg3ODksIDg4NzkzLCA4ODc5NiwgMCwgMCwgODg4MDQsIAorICAgIDg4ODA3LCA4ODgxMCwgODg4MTMsIDg4ODE2LCA4ODgxOSwgODg4MjIsIDg4ODI1LCA4ODgyOCwgODg4MzEsIDg4ODM0LCAKKyAgICA4ODgzNywgODg4NDAsIDg4ODQzLCA4ODg0NiwgODg4NDksIDg4ODUyLCA4ODg2MCwgODg4NjksIDg4ODgwLCA4ODg4OCwgCisgICAgODg4OTYsIDg4OTA1LCA4ODkxNCwgODg5MjUsIDg4OTM3LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODk0NywgODg5NTIsIDg4OTU3LCAKKyAgICA4ODk2NCwgODg5NzEsIDg4OTc3LCA4ODk4MywgODg5ODgsIDg4OTkzLCA4ODk5OCwgODkwMDQsIDg5MDEwLCA4OTAxNiwgCisgICAgODkwMjIsIDg5MDI4LCA4OTAzNSwgODkwNDIsIDg5MDUyLCA4OTA2MiwgODkwNzIsIDg5MDgxLCA4OTA5MiwgODkxMDEsIAorICAgIDg5MTEwLCA4OTEyMCwgODkxMzAsIDg5MTQyLCA4OTE1NCwgODkxNjUsIDg5MTc2LCA4OTE4NywgODkxOTgsIDg5MjA4LCAKKyAgICA4OTIxOCwgODkyMjgsIDg5MjM4LCA4OTI0OSwgODkyNjAsIDg5MjY0LCA4OTI2OSwgODkyNzgsIDg5Mjg3LCA4OTI5MSwgCisgICAgODkyOTUsIDg5Mjk5LCA4OTMwNCwgODkzMDksIDg5MzE0LCA4OTMxOSwgODkzMjIsIDg5MzI2LCAwLCA4OTMzMSwgODkzMzQsIAorICAgIDg5MzM3LCA4OTM0MSwgODkzNDUsIDg5MzUwLCA4OTM1NCwgODkzNTgsIDg5MzYzLCA4OTM2OCwgODkzNzUsIDg5MzgyLCAKKyAgICA4OTM4NSwgODkzODgsIDg5MzkxLCA4OTM5NCwgODkzOTcsIDg5NDAxLCA4OTQwNSwgMCwgODk0MDksIDg5NDE0LCA4OTQxOCwgCisgICAgODk0MjIsIDAsIDAsIDAsIDAsIDg5NDI3LCA4OTQzMiwgODk0MzksIDg5NDQ0LCA4OTQ0OSwgMCwgODk0NTQsIDg5NDU5LCAKKyAgICA4OTQ2NCwgODk0NjksIDg5NDc0LCA4OTQ3OSwgODk0ODQsIDg5NDg5LCA4OTQ5NCwgODk0OTksIDg5NTA0LCA4OTUxMCwgCisgICAgODk1MTksIDg5NTI4LCA4OTUzNywgODk1NDYsIDg5NTU2LCA4OTU2NiwgODk1NzYsIDg5NTg2LCA4OTU5NSwgODk2MDQsIAorICAgIDg5NjEzLCA4OTYyMiwgODk2MjcsIDg5NjMyLCA4OTYzOCwgODk2NDQsIDg5NjUwLCA4OTY1NiwgODk2NjQsIDg5NjcyLCAKKyAgICA4OTY3OCwgODk2ODQsIDg5NjkwLCA4OTY5NiwgODk3MDIsIDg5NzA4LCA4OTcxNCwgODk3MjAsIDg5NzI1LCA4OTczMCwgCisgICAgODk3MzUsIDg5NzQwLCA4OTc0NSwgODk3NTAsIDg5NzU1LCA4OTc2MCwgODk3NjYsIDg5NzcyLCA4OTc3OCwgODk3ODQsIAorICAgIDg5NzkwLCA4OTc5NiwgODk4MDIsIDg5ODA4LCA4OTgxNCwgODk4MjAsIDg5ODI2LCA4OTgzMiwgODk4MzgsIDg5ODQ0LCAKKyAgICA4OTg1MCwgODk4NTYsIDg5ODYyLCA4OTg2OCwgODk4NzQsIDg5ODgwLCA4OTg4NiwgODk4OTIsIDg5ODk4LCA4OTkwNCwgCisgICAgODk5MTAsIDg5OTE2LCA4OTkyMiwgODk5MjgsIDg5OTM0LCA4OTk0MCwgODk5NDYsIDg5OTUyLCA4OTk1OCwgODk5NjQsIAorICAgIDg5OTcwLCA4OTk3NiwgODk5ODIsIDg5OTg4LCA4OTk5NCwgOTAwMDAsIDkwMDA2LCA5MDAxMiwgOTAwMTgsIDkwMDI0LCAKKyAgICA5MDAzMCwgOTAwMzYsIDkwMDQyLCA5MDA0OCwgOTAwNTQsIDkwMDYwLCA5MDA2NiwgOTAwNzIsIDkwMDc4LCA5MDA4NCwgCisgICAgOTAwOTAsIDkwMDk2LCA5MDEwMiwgOTAxMDgsIDkwMTE0LCA5MDEyMCwgOTAxMjUsIDkwMTMwLCA5MDEzNSwgOTAxNDAsIAorICAgIDkwMTQ2LCA5MDE1MiwgOTAxNTgsIDkwMTY0LCA5MDE3MCwgOTAxNzYsIDkwMTgyLCA5MDE4OCwgOTAxOTQsIDkwMjAwLCAKKyAgICA5MDIwNywgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMjksIDkwMjM0LCA5MDI0NiwgOTAyNTgsIDkwMjcwLCA5MDI4MiwgCisgICAgOTAyOTUsIDkwMzA4LCA5MDMxNiwgMCwgMCwgOTAzMjQsIDAsIDkwMzMyLCA5MDMzNiwgOTAzNDAsIDkwMzQzLCA5MDM0NywgCisgICAgOTAzNTEsIDkwMzU0LCA5MDM1NywgOTAzNjEsIDkwMzY1LCA5MDM2OCwgOTAzNzEsIDkwMzc0LCA5MDM3NywgOTAzODIsIAorICAgIDkwMzg1LCA5MDM4OSwgOTAzOTIsIDkwMzk1LCA5MDM5OCwgOTA0MDEsIDkwNDA0LCA5MDQwNywgOTA0MTEsIDkwNDE0LCAKKyAgICA5MDQxOCwgOTA0MjEsIDkwNDI0LCA5MDQyOCwgOTA0MzIsIDkwNDM2LCA5MDQ0MCwgOTA0NDUsIDkwNDUwLCA5MDQ1NiwgCisgICAgOTA0NjIsIDkwNDY4LCA5MDQ3MywgOTA0NzksIDkwNDg1LCA5MDQ5MSwgOTA0OTYsIDkwNTAyLCA5MDUwOCwgOTA1MTMsIAorICAgIDkwNTE5LCA5MDUyNSwgOTA1MzAsIDkwNTM2LCA5MDU0MiwgOTA1NDcsIDkwNTUzLCA5MDU1OSwgOTA1NjQsIDkwNTcwLCAKKyAgICA5MDU3NiwgOTA1ODIsIDkwNTg4LCA5MDU5NCwgOTA1OTgsIDkwNjAzLCA5MDYwNywgOTA2MTIsIDkwNjE2LCA5MDYyMSwgCisgICAgOTA2MjYsIDkwNjMyLCA5MDYzOCwgOTA2NDQsIDkwNjQ5LCA5MDY1NSwgOTA2NjEsIDkwNjY3LCA5MDY3MiwgOTA2NzgsIAorICAgIDkwNjg0LCA5MDY4OSwgOTA2OTUsIDkwNzAxLCA5MDcwNiwgOTA3MTIsIDkwNzE4LCA5MDcyMywgOTA3MjksIDkwNzM1LCAKKyAgICA5MDc0MCwgOTA3NDYsIDkwNzUyLCA5MDc1OCwgOTA3NjQsIDkwNzcwLCA5MDc3NSwgOTA3NzksIDkwNzg0LCA5MDc4NywgCisgICAgOTA3OTIsIDkwNzk3LCA5MDgwMywgOTA4MDgsIDkwODEzLCA5MDgxNywgOTA4MjIsIDkwODI3LCA5MDgzMiwgOTA4MzcsIAorICAgIDkwODQyLCA5MDg0NywgOTA4NTIsIDkwODU3LCA5MDg2MywgOTA4NjksIDkwODc1LCA5MDg4MywgOTA4ODcsIDkwODkxLCAKKyAgICA5MDg5NSwgOTA4OTksIDkwOTAzLCA5MDkwNywgOTA5MTIsIDkwOTE3LCA5MDkyMiwgOTA5MjcsIDkwOTMyLCA5MDkzNywgCisgICAgOTA5NDIsIDkwOTQ3LCA5MDk1MiwgOTA5NTcsIDkwOTYyLCA5MDk2NywgOTA5NzIsIDkwOTc2LCA5MDk4MCwgOTA5ODUsIAorICAgIDkwOTkwLCA5MDk5NSwgOTEwMDAsIDkxMDA0LCA5MTAwOSwgOTEwMTQsIDkxMDE5LCA5MTAyNCwgOTEwMjgsIDkxMDMzLCAKKyAgICA5MTAzOCwgOTEwNDMsIDkxMDQ4LCA5MTA1MiwgOTEwNTcsIDkxMDYyLCA5MTA2NywgOTEwNzIsIDkxMDc3LCA5MTA4MiwgCisgICAgOTEwODcsIDkxMDkyLCA5MTA5NywgOTExMDQsIDkxMTExLCA5MTExNSwgOTExMjAsIDkxMTI1LCA5MTEzMCwgOTExMzUsIAorICAgIDkxMTQwLCA5MTE0NSwgOTExNTAsIDkxMTU1LCA5MTE2MCwgOTExNjUsIDkxMTcwLCA5MTE3NSwgOTExODAsIDkxMTg1LCAKKyAgICA5MTE5MCwgOTExOTUsIDkxMjAwLCA5MTIwNSwgOTEyMTAsIDkxMjE1LCA5MTIyMCwgOTEyMjUsIDkxMjMwLCA5MTIzNSwgCisgICAgOTEyNDAsIDkxMjQ1LCA5MTI1MCwgOTEyNTUsIDkxMjYwLCAwLCAwLCAwLCA5MTI2NSwgOTEyNjksIDkxMjc0LCA5MTI3OCwgCisgICAgOTEyODMsIDkxMjg4LCAwLCAwLCA5MTI5MiwgOTEyOTcsIDkxMzAyLCA5MTMwNiwgOTEzMTEsIDkxMzE2LCAwLCAwLCAKKyAgICA5MTMyMSwgOTEzMjYsIDkxMzMwLCA5MTMzNSwgOTEzNDAsIDkxMzQ1LCAwLCAwLCA5MTM1MCwgOTEzNTUsIDkxMzYwLCAwLCAKKyAgICAwLCAwLCA5MTM2NCwgOTEzNjgsIDkxMzcyLCA5MTM3NiwgOTEzNzksIDkxMzgzLCA5MTM4NywgMCwgOTEzOTEsIDkxMzk3LCAKKyAgICA5MTQwMCwgOTE0MDMsIDkxNDA2LCA5MTQwOSwgOTE0MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNDE3LCAKKyAgICA5MTQyMywgOTE0MjksIDkxNDM1LCA5MTQ0MSwgMCwgMCwgOTE0NDUsIDkxNDUxLCA5MTQ1NywgOTE0NjMsIDkxNDY5LCAKKyAgICA5MTQ3NSwgOTE0ODIsIDkxNDg5LCA5MTQ5NiwgOTE1MDMsIDkxNTEwLCA5MTUxNywgMCwgOTE1MjQsIDkxNTMxLCA5MTUzOCwgCisgICAgOTE1NDQsIDkxNTUxLCA5MTU1OCwgOTE1NjUsIDkxNTcyLCA5MTU3OCwgOTE1ODUsIDkxNTkyLCA5MTU5OSwgOTE2MDYsIAorICAgIDkxNjEyLCA5MTYxOSwgOTE2MjYsIDkxNjMzLCA5MTY0MCwgOTE2NDYsIDkxNjUzLCA5MTY2MCwgOTE2NjcsIDkxNjc0LCAKKyAgICA5MTY4MSwgOTE2ODgsIDkxNjk1LCAwLCA5MTcwMiwgOTE3MDksIDkxNzE2LCA5MTcyMywgOTE3MzAsIDkxNzM3LCA5MTc0NCwgCisgICAgOTE3NTEsIDkxNzU4LCA5MTc2NSwgOTE3NzIsIDkxNzc5LCA5MTc4NiwgOTE3OTMsIDkxNzk5LCA5MTgwNiwgOTE4MTMsIAorICAgIDkxODIwLCA5MTgyNywgMCwgOTE4MzQsIDkxODQxLCAwLCA5MTg0OCwgOTE4NTUsIDkxODYyLCA5MTg2OSwgOTE4NzYsIAorICAgIDkxODgzLCA5MTg5MCwgOTE4OTcsIDkxOTA0LCA5MTkxMSwgOTE5MTgsIDkxOTI1LCA5MTkzMiwgOTE5MzksIDkxOTQ2LCAwLCAKKyAgICAwLCA5MTk1MiwgOTE5NTcsIDkxOTYyLCA5MTk2NywgOTE5NzIsIDkxOTc3LCA5MTk4MiwgOTE5ODcsIDkxOTkyLCA5MTk5NywgCisgICAgOTIwMDIsIDkyMDA3LCA5MjAxMiwgOTIwMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyMDIyLCA5MjAyOSwgCisgICAgOTIwMzYsIDkyMDQzLCA5MjA1MCwgOTIwNTcsIDkyMDY0LCA5MjA3MSwgOTIwNzgsIDkyMDg1LCA5MjA5MiwgOTIwOTksIAorICAgIDkyMTA2LCA5MjExMywgOTIxMjAsIDkyMTI3LCA5MjEzNCwgOTIxNDEsIDkyMTQ4LCA5MjE1NSwgOTIxNjMsIDkyMTcxLCAKKyAgICA5MjE3OCwgOTIxODUsIDkyMTkwLCA5MjE5OCwgOTIyMDYsIDkyMjEzLCA5MjIyMCwgOTIyMjUsIDkyMjMyLCA5MjIzNywgCisgICAgOTIyNDIsIDkyMjQ5LCA5MjI1NCwgOTIyNTksIDkyMjY0LCA5MjI3MiwgOTIyNzcsIDkyMjgyLCA5MjI4OSwgOTIyOTQsIAorICAgIDkyMjk5LCA5MjMwNiwgOTIzMTMsIDkyMzE4LCA5MjMyMywgOTIzMjgsIDkyMzMzLCA5MjMzOCwgOTIzNDMsIDkyMzQ4LCAKKyAgICA5MjM1MywgOTIzNTgsIDkyMzY1LCA5MjM3MCwgOTIzNzcsIDkyMzgyLCA5MjM4NywgOTIzOTIsIDkyMzk3LCA5MjQwMiwgCisgICAgOTI0MDcsIDkyNDEyLCA5MjQxNywgOTI0MjIsIDkyNDI3LCA5MjQzMiwgOTI0MzksIDkyNDQ2LCA5MjQ1MywgOTI0NjAsIAorICAgIDkyNDY2LCA5MjQ3MSwgOTI0NzgsIDkyNDgzLCA5MjQ4OCwgOTI0OTcsIDkyNTA0LCA5MjUxMywgOTI1MjAsIDkyNTI1LCAKKyAgICA5MjUzMCwgOTI1MzgsIDkyNTQzLCA5MjU0OCwgOTI1NTMsIDkyNTU4LCA5MjU2MywgOTI1NzAsIDkyNTc1LCA5MjU4MCwgCisgICAgOTI1ODUsIDkyNTkwLCA5MjU5NSwgOTI2MDIsIDkyNjA5LCA5MjYxNiwgOTI2MjMsIDkyNjMwLCA5MjYzNywgOTI2NDQsIAorICAgIDkyNjUxLCA5MjY1OCwgOTI2NjUsIDkyNjcyLCA5MjY3OSwgOTI2ODYsIDkyNjkzLCA5MjcwMCwgOTI3MDcsIDkyNzE0LCAKKyAgICA5MjcyMSwgOTI3MjgsIDkyNzM1LCA5Mjc0MiwgOTI3NDksIDkyNzU2LCA5Mjc2MywgOTI3NzAsIDkyNzc3LCA5Mjc4NCwgCisgICAgOTI3OTEsIDAsIDAsIDAsIDAsIDAsIDkyNzk4LCA5MjgwNiwgOTI4MTQsIDAsIDAsIDAsIDAsIDkyODE5LCA5MjgyMywgCisgICAgOTI4MjcsIDkyODMxLCA5MjgzNSwgOTI4MzksIDkyODQzLCA5Mjg0OCwgOTI4NTIsIDkyODU3LCA5Mjg2MiwgOTI4NjcsIAorICAgIDkyODcyLCA5Mjg3NywgOTI4ODIsIDkyODg3LCA5Mjg5MiwgOTI4OTcsIDkyOTAyLCA5MjkwOCwgOTI5MTQsIDkyOTIwLCAKKyAgICA5MjkyNywgOTI5MzQsIDkyOTQxLCA5Mjk0OCwgOTI5NTUsIDkyOTYyLCA5Mjk2OCwgOTI5NzQsIDkyOTgwLCA5Mjk4NywgCisgICAgOTI5OTQsIDkzMDAxLCA5MzAwOCwgOTMwMTUsIDkzMDIyLCA5MzAyOSwgOTMwMzYsIDkzMDQzLCA5MzA1MCwgOTMwNTcsIAorICAgIDkzMDY0LCA5MzA3MSwgOTMwNzgsIDAsIDAsIDAsIDkzMDg1LCA5MzA5MywgOTMxMDEsIDkzMTA5LCA5MzExNywgOTMxMjUsIAorICAgIDkzMTM1LCA5MzE0NSwgOTMxNTMsIDkzMTYxLCA5MzE2OSwgOTMxNzcsIDkzMTg1LCA5MzE5MSwgOTMxOTgsIDkzMjA3LCAKKyAgICA5MzIxNiwgOTMyMjUsIDkzMjM0LCA5MzI0MywgOTMyNTIsIDkzMjYyLCA5MzI3MywgOTMyODMsIDkzMjk0LCA5MzMwMywgCisgICAgOTMzMTIsIDkzMzIxLCA5MzMzMSwgOTMzNDIsIDkzMzUyLCA5MzM2MywgOTMzNzQsIDkzMzgzLCA5MzM5MSwgOTMzOTcsIAorICAgIDkzNDAzLCA5MzQwOSwgOTM0MTUsIDkzNDIzLCA5MzQzMSwgOTM0MzcsIDkzNDQ0LCA5MzQ1NCwgOTM0NjEsIDkzNDY4LCAKKyAgICA5MzQ3NSwgOTM0ODIsIDkzNDg5LCA5MzQ5OSwgOTM1MDYsIDkzNTEzLCA5MzUyMSwgOTM1MjksIDkzNTM4LCA5MzU0NywgCisgICAgOTM1NTYsIDkzNTY1LCA5MzU3NCwgOTM1ODIsIDkzNTkxLCA5MzYwMCwgOTM2MDksIDkzNjEzLCA5MzYyMCwgOTM2MjUsIAorICAgIDkzNjMwLCA5MzYzNCwgOTM2MzgsIDkzNjQyLCA5MzY0NiwgOTM2NTEsIDkzNjU2LCA5MzY2MiwgOTM2NjgsIDkzNjcyLCAKKyAgICA5MzY3OCwgOTM2ODIsIDkzNjg2LCA5MzY5MCwgOTM2OTQsIDkzNjk4LCA5MzcwMiwgOTM3MDgsIDkzNzEyLCA5MzcxNywgCisgICAgOTM3MjEsIDkzNzI1LCAwLCA5MzcyOCwgOTM3MzMsIDkzNzM4LCA5Mzc0MywgOTM3NDgsIDkzNzU1LCA5Mzc2MCwgOTM3NjUsIAorICAgIDkzNzcwLCA5Mzc3NSwgOTM3ODAsIDkzNzg1LCAwLCAwLCAwLCAwLCA5Mzc5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI5NjYsIDkyOTczLCA5Mjk4MiwgOTI5OTEsIDkyOTk4LCAKLSAgICA5MzAwNSwgOTMwMTIsIDkzMDE5LCA5MzAyNiwgOTMwMzMsIDkzMDM5LCA5MzA0NiwgOTMwNTMsIDkzMDYwLCA5MzA2NywgCi0gICAgOTMwNzQsIDkzMDgxLCA5MzA4OCwgOTMwOTUsIDkzMTA0LCA5MzExMSwgOTMxMTgsIDkzMTI1LCA5MzEzMiwgOTMxMzksIAotICAgIDkzMTQ2LCA5MzE1MywgOTMxNjAsIDkzMTY5LCA5MzE3NiwgOTMxODMsIDkzMTkwLCA5MzE5NywgOTMyMDQsIDkzMjExLCAKLSAgICA5MzIyMCwgOTMyMjcsIDkzMjM0LCA5MzI0MSwgOTMyNDgsIDkzMjU3LCA5MzI2NCwgOTMyNzEsIDkzMjc4LCA5MzI4NiwgCi0gICAgOTMyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzNzk2LCA5MzgwMywgOTM4MTIsIDkzODIxLCAKKyAgICA5MzgyOCwgOTM4MzUsIDkzODQyLCA5Mzg0OSwgOTM4NTYsIDkzODYzLCA5Mzg2OSwgOTM4NzYsIDkzODgzLCA5Mzg5MCwgCisgICAgOTM4OTcsIDkzOTA0LCA5MzkxMSwgOTM5MTgsIDkzOTI1LCA5MzkzNCwgOTM5NDEsIDkzOTQ4LCA5Mzk1NSwgOTM5NjIsIAorICAgIDkzOTY5LCA5Mzk3NiwgOTM5ODMsIDkzOTkwLCA5Mzk5OSwgOTQwMDYsIDk0MDEzLCA5NDAyMCwgOTQwMjcsIDk0MDM0LCAKKyAgICA5NDA0MSwgOTQwNTAsIDk0MDU3LCA5NDA2NCwgOTQwNzEsIDk0MDc4LCA5NDA4NywgOTQwOTQsIDk0MTAxLCA5NDEwOCwgCisgICAgOTQxMTYsIDk0MTI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzMwNCwgOTMzMDgsIDkzMzEyLCA5MzMxNywgOTMzMjIsIAotICAgIDkzMzI3LCA5MzMzMiwgOTMzMzYsIDkzMzQxLCA5MzM0NiwgOTMzNTEsIDkzMzU2LCA5MzM2MSwgOTMzNjYsIDkzMzcwLCAKLSAgICA5MzM3NSwgOTMzODAsIDkzMzg1LCA5MzM5MCwgOTMzOTQsIDkzMzk5LCA5MzQwNCwgOTM0MDgsIDkzNDEyLCA5MzQxNywgCi0gICAgOTM0MjIsIDkzNDI3LCA5MzQzMiwgOTM0MzcsIDAsIDAsIDAsIDkzNDQyLCA5MzQ0NiwgOTM0NTEsIDkzNDU2LCA5MzQ2MCwgCi0gICAgOTM0NjUsIDkzNDY5LCA5MzQ3NCwgOTM0NzksIDkzNDg0LCA5MzQ4OSwgOTM0OTQsIDkzNDk4LCA5MzUwMywgOTM1MDgsIAotICAgIDkzNTEzLCA5MzUxOCwgOTM1MjIsIDkzNTI3LCA5MzUzMSwgOTM1MzYsIDkzNTQxLCA5MzU0NiwgOTM1NTEsIDkzNTU2LCAKLSAgICA5MzU2MSwgOTM1NjUsIDkzNTY5LCA5MzU3NCwgOTM1NzksIDkzNTg0LCA5MzU4OSwgOTM1OTQsIDkzNTk5LCA5MzYwNCwgCi0gICAgOTM2MDksIDkzNjE0LCA5MzYxOSwgOTM2MjQsIDkzNjI5LCA5MzYzNCwgOTM2MzksIDkzNjQ0LCA5MzY0OSwgOTM2NTQsIAotICAgIDkzNjU5LCA5MzY2NCwgOTM2NjksIDkzNjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5MzY3OSwgOTM2ODUsIDkzNjkwLCA5MzY5NSwgOTM3MDAsIDkzNzA1LCA5MzcxMCwgOTM3MTUsIDkzNzIxLCA5MzcyNiwgCi0gICAgOTM3MzIsIDkzNzM4LCA5Mzc0NCwgOTM3NTAsIDkzNzU2LCA5Mzc2MiwgOTM3NjgsIDkzNzc0LCA5Mzc4MCwgOTM3ODYsIAotICAgIDkzNzkzLCA5MzgwMCwgOTM4MDcsIDkzODE1LCA5MzgyMywgOTM4MzEsIDkzODM5LCA5Mzg0NywgMCwgMCwgMCwgMCwgCi0gICAgOTM4NTUsIDkzODU5LCA5Mzg2NCwgOTM4NjksIDkzODc0LCA5Mzg3OCwgOTM4ODMsIDkzODg4LCA5Mzg5MywgOTM4OTgsIAotICAgIDkzOTAyLCA5MzkwNiwgOTM5MTEsIDkzOTE2LCA5MzkyMSwgOTM5MjYsIDkzOTMwLCA5MzkzNSwgOTM5NDAsIDkzOTQ1LCAKLSAgICA5Mzk1MCwgOTM5NTUsIDkzOTYwLCA5Mzk2NCwgOTM5NjksIDkzOTc0LCA5Mzk3OSwgOTM5ODQsIDkzOTg5LCA5Mzk5NCwgCi0gICAgOTM5OTksIDk0MDA0LCA5NDAwOSwgOTQwMTQsIDk0MDE5LCA5NDAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOTQwMzEsIDk0MDM2LCA5NDA0MSwgOTQwNDYsIDk0MDUxLCA5NDA1NiwgOTQwNjEsIDk0MDY2LCA5NDA3MSwgCi0gICAgOTQwNzYsIDk0MDgxLCA5NDA4NiwgOTQwOTEsIDk0MDk2LCA5NDEwMSwgOTQxMDYsIDk0MTExLCA5NDExNiwgOTQxMjEsIAotICAgIDk0MTI2LCA5NDEzMSwgOTQxMzYsIDk0MTQxLCA5NDE0NiwgOTQxNTEsIDk0MTU2LCA5NDE2MSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTQxNjgsIDk0MTc0LCA5NDE4MCwgOTQxODYsIDk0MTkyLCA5NDE5NywgOTQyMDMsIDk0MjA5LCA5NDIxNSwgOTQyMjEsIAotICAgIDk0MjI2LCA5NDIzMiwgOTQyMzgsIDk0MjQ0LCA5NDI1MCwgOTQyNTYsIDk0MjYyLCA5NDI2OCwgOTQyNzQsIDk0MjgwLCAKLSAgICA5NDI4NSwgOTQyOTEsIDk0Mjk3LCA5NDMwMywgOTQzMDksIDk0MzE1LCA5NDMyMCwgOTQzMjYsIDk0MzMyLCA5NDMzNywgCi0gICAgOTQzNDMsIDk0MzQ5LCA5NDM1NSwgOTQzNjEsIDk0MzY3LCA5NDM3MywgOTQzNzksIDk0Mzg0LCA5NDM5MCwgOTQzOTcsIAotICAgIDk0NDA0LCA5NDQxMSwgOTQ0MTgsIDAsIDAsIDAsIDAsIDAsIDk0NDI1LCA5NDQzMCwgOTQ0MzUsIDk0NDQwLCA5NDQ0NSwgCi0gICAgOTQ0NTAsIDk0NDU1LCA5NDQ2MCwgOTQ0NjUsIDk0NDcwLCA5NDQ3NSwgOTQ0ODAsIDk0NDg1LCA5NDQ5MCwgOTQ0OTUsIAotICAgIDk0NTAwLCA5NDUwNSwgOTQ1MTAsIDk0NTE1LCA5NDUyMCwgOTQ1MjUsIDk0NTMwLCA5NDUzNSwgOTQ1NDAsIDk0NTQ1LCAKLSAgICA5NDU1MCwgOTQ1NTUsIDk0NTU5LCA5NDU2MywgOTQ1NjcsIDAsIDk0NTcyLCA5NDU3OCwgOTQ1ODMsIDk0NTg4LCA5NDU5MywgCi0gICAgOTQ1OTgsIDk0NjA0LCA5NDYxMCwgOTQ2MTYsIDk0NjIyLCA5NDYyOCwgOTQ2MzQsIDk0NjQwLCA5NDY0NiwgOTQ2NTIsIAotICAgIDk0NjU4LCA5NDY2NCwgOTQ2NzAsIDk0Njc2LCA5NDY4MSwgOTQ2ODcsIDk0NjkzLCA5NDY5OSwgOTQ3MDUsIDk0NzEwLCAKLSAgICA5NDcxNiwgOTQ3MjIsIDk0NzI3LCA5NDczMywgOTQ3MzksIDk0NzQ1LCA5NDc1MSwgOTQ3NTcsIDk0NzYzLCA5NDc2OSwgCi0gICAgOTQ3NzUsIDk0NzgxLCAwLCAwLCAwLCAwLCA5NDc4NiwgOTQ3OTIsIDk0Nzk4LCA5NDgwNCwgOTQ4MTAsIDk0ODE2LCAKLSAgICA5NDgyMiwgOTQ4MjgsIDk0ODM0LCA5NDg0MSwgOTQ4NDYsIDk0ODUxLCA5NDg1NywgOTQ4NjMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0MTM0LCA5NDEzOCwgOTQxNDIsIDk0MTQ3LCAKKyAgICA5NDE1MiwgOTQxNTcsIDk0MTYyLCA5NDE2NiwgOTQxNzEsIDk0MTc2LCA5NDE4MSwgOTQxODYsIDk0MTkxLCA5NDE5NiwgCisgICAgOTQyMDAsIDk0MjA1LCA5NDIxMCwgOTQyMTUsIDk0MjIwLCA5NDIyNCwgOTQyMjksIDk0MjM0LCA5NDIzOCwgOTQyNDMsIAorICAgIDk0MjQ4LCA5NDI1MywgOTQyNTgsIDk0MjYzLCA5NDI2OCwgMCwgMCwgMCwgOTQyNzMsIDk0Mjc3LCA5NDI4MiwgOTQyODcsIAorICAgIDk0MjkxLCA5NDI5NiwgOTQzMDAsIDk0MzA1LCA5NDMxMCwgOTQzMTUsIDk0MzIwLCA5NDMyNSwgOTQzMjksIDk0MzM0LCAKKyAgICA5NDMzOSwgOTQzNDQsIDk0MzQ5LCA5NDM1NCwgOTQzNTksIDk0MzYzLCA5NDM2OCwgOTQzNzMsIDk0Mzc4LCA5NDM4MywgCisgICAgOTQzODgsIDk0MzkzLCA5NDM5NywgOTQ0MDEsIDk0NDA2LCA5NDQxMSwgOTQ0MTYsIDk0NDIxLCA5NDQyNiwgOTQ0MzEsIAorICAgIDk0NDM2LCA5NDQ0MSwgOTQ0NDYsIDk0NDUxLCA5NDQ1NiwgOTQ0NjEsIDk0NDY2LCA5NDQ3MSwgOTQ0NzYsIDk0NDgxLCAKKyAgICA5NDQ4NiwgOTQ0OTEsIDk0NDk2LCA5NDUwMSwgOTQ1MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDk0NTExLCA5NDUxNywgOTQ1MjIsIDk0NTI3LCA5NDUzMiwgOTQ1MzcsIDk0NTQyLCA5NDU0NywgOTQ1NTMsIAorICAgIDk0NTU4LCA5NDU2NCwgOTQ1NzAsIDk0NTc2LCA5NDU4MiwgOTQ1ODgsIDk0NTk0LCA5NDYwMCwgOTQ2MDYsIDk0NjEyLCAKKyAgICA5NDYxOCwgOTQ2MjUsIDk0NjMyLCA5NDYzOSwgOTQ2NDcsIDk0NjU1LCA5NDY2MywgOTQ2NzEsIDk0Njc5LCAwLCAwLCAwLCAKKyAgICAwLCA5NDY4NywgOTQ2OTEsIDk0Njk2LCA5NDcwMSwgOTQ3MDYsIDk0NzEwLCA5NDcxNSwgOTQ3MjAsIDk0NzI1LCA5NDczMCwgCisgICAgOTQ3MzQsIDk0NzM4LCA5NDc0MywgOTQ3NDgsIDk0NzUzLCA5NDc1OCwgOTQ3NjIsIDk0NzY3LCA5NDc3MiwgOTQ3NzcsIAorICAgIDk0NzgyLCA5NDc4NywgOTQ3OTIsIDk0Nzk2LCA5NDgwMSwgOTQ4MDYsIDk0ODExLCA5NDgxNiwgOTQ4MjEsIDk0ODI2LCAKKyAgICA5NDgzMSwgOTQ4MzYsIDk0ODQxLCA5NDg0NiwgOTQ4NTEsIDk0ODU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5NDg2MywgOTQ4NjgsIDk0ODczLCA5NDg3OCwgOTQ4ODMsIDk0ODg4LCA5NDg5MywgOTQ4OTgsIDk0OTAzLCAKKyAgICA5NDkwOCwgOTQ5MTMsIDk0OTE4LCA5NDkyMywgOTQ5MjgsIDk0OTMzLCA5NDkzOCwgOTQ5NDMsIDk0OTQ4LCA5NDk1MywgCisgICAgOTQ5NTgsIDk0OTYzLCA5NDk2OCwgOTQ5NzMsIDk0OTc4LCA5NDk4MywgOTQ5ODgsIDk0OTkzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NTAwMCwgOTUwMDYsIDk1MDEyLCA5NTAxOCwgOTUwMjQsIDk1MDI5LCA5NTAzNSwgOTUwNDEsIDk1MDQ3LCA5NTA1MywgCisgICAgOTUwNTgsIDk1MDY0LCA5NTA3MCwgOTUwNzYsIDk1MDgyLCA5NTA4OCwgOTUwOTQsIDk1MTAwLCA5NTEwNiwgOTUxMTIsIAorICAgIDk1MTE3LCA5NTEyMywgOTUxMjksIDk1MTM1LCA5NTE0MSwgOTUxNDcsIDk1MTUyLCA5NTE1OCwgOTUxNjQsIDk1MTY5LCAKKyAgICA5NTE3NSwgOTUxODEsIDk1MTg3LCA5NTE5MywgOTUxOTksIDk1MjA1LCA5NTIxMSwgOTUyMTYsIDk1MjIyLCA5NTIyOSwgCisgICAgOTUyMzYsIDk1MjQzLCA5NTI1MCwgMCwgMCwgMCwgMCwgMCwgOTUyNTcsIDk1MjYyLCA5NTI2NywgOTUyNzIsIDk1Mjc3LCAKKyAgICA5NTI4MiwgOTUyODcsIDk1MjkyLCA5NTI5NywgOTUzMDIsIDk1MzA3LCA5NTMxMiwgOTUzMTcsIDk1MzIyLCA5NTMyNywgCisgICAgOTUzMzIsIDk1MzM3LCA5NTM0MiwgOTUzNDcsIDk1MzUyLCA5NTM1NywgOTUzNjIsIDk1MzY3LCA5NTM3MiwgOTUzNzcsIAorICAgIDk1MzgyLCA5NTM4NywgOTUzOTEsIDk1Mzk1LCA5NTM5OSwgMCwgOTU0MDQsIDk1NDEwLCA5NTQxNSwgOTU0MjAsIDk1NDI1LCAKKyAgICA5NTQzMCwgOTU0MzYsIDk1NDQyLCA5NTQ0OCwgOTU0NTQsIDk1NDYwLCA5NTQ2NiwgOTU0NzIsIDk1NDc4LCA5NTQ4NCwgCisgICAgOTU0OTAsIDk1NDk2LCA5NTUwMiwgOTU1MDgsIDk1NTEzLCA5NTUxOSwgOTU1MjUsIDk1NTMwLCA5NTUzNiwgOTU1NDEsIAorICAgIDk1NTQ3LCA5NTU1MywgOTU1NTgsIDk1NTY0LCA5NTU3MCwgOTU1NzYsIDk1NTgyLCA5NTU4NywgOTU1OTMsIDk1NTk5LCAKKyAgICA5NTYwNSwgOTU2MTEsIDAsIDAsIDAsIDAsIDk1NjE2LCA5NTYyMiwgOTU2MjgsIDk1NjM0LCA5NTY0MCwgOTU2NDYsIAorICAgIDk1NjUyLCA5NTY1OCwgOTU2NjQsIDk1NjcxLCA5NTY3NiwgOTU2ODEsIDk1Njg3LCA5NTY5MywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ4NjksIDk0ODc1LCA5NDg4MSwgOTQ4ODcsIDk0ODk0LCAKLSAgICA5NDkwMCwgOTQ5MDcsIDk0OTE0LCA5NDkyMSwgOTQ5MjgsIDk0OTM2LCA5NDk0MywgOTQ5NTEsIDk0OTU3LCA5NDk2MywgCi0gICAgOTQ5NjksIDk0OTc1LCA5NDk4MSwgOTQ5ODcsIDk0OTkzLCA5NDk5OSwgOTUwMDUsIDk1MDExLCA5NTAxNywgOTUwMjMsIAotICAgIDk1MDI5LCA5NTAzNSwgOTUwNDEsIDk1MDQ3LCA5NTA1MywgOTUwNTksIDk1MDY1LCA5NTA3MSwgOTUwNzcsIDk1MDgzLCAKLSAgICA5NTA4OSwgOTUwOTUsIDk1MTAxLCA5NTEwNywgOTUxMTMsIDk1MTE5LCA5NTEyNSwgOTUxMzEsIDk1MTM3LCA5NTE0NCwgCi0gICAgOTUxNTAsIDk1MTU3LCA5NTE2NCwgOTUxNzEsIDk1MTc4LCA5NTE4NiwgOTUxOTMsIDk1MjAxLCA5NTIwNywgOTUyMTMsIAotICAgIDk1MjE5LCA5NTIyNSwgOTUyMzEsIDk1MjM3LCA5NTI0MywgOTUyNDksIDk1MjU1LCA5NTI2MSwgOTUyNjcsIDk1MjczLCAKLSAgICA5NTI3OSwgOTUyODUsIDk1MjkxLCA5NTI5NywgOTUzMDMsIDk1MzA5LCA5NTMxNSwgOTUzMjEsIDk1MzI3LCA5NTMzMywgCi0gICAgOTUzMzksIDk1MzQ1LCA5NTM1MSwgOTUzNTcsIDk1MzYzLCA5NTM2OSwgOTUzNzQsIDk1Mzc5LCA5NTM4NCwgOTUzODksIAotICAgIDk1Mzk0LCA5NTM5OSwgOTU0MDQsIDk1NDA5LCA5NTQxNCwgOTU0MTksIDk1NDI0LCA5NTQyOSwgOTU0MzQsIDk1NDM5LCAKLSAgICA5NTQ0NCwgOTU0NDksIDk1NDU0LCA5NTQ1OSwgOTU0NjQsIDk1NDY5LCA5NTQ3NCwgOTU0NzksIDk1NDg0LCA5NTQ4OSwgCi0gICAgOTU0OTQsIDk1NDk5LCA5NTUwNCwgOTU1MDksIDk1NTE0LCA5NTUxOSwgOTU1MjQsIDk1NTI5LCA5NTUzNCwgOTU1MzksIAotICAgIDk1NTQ0LCA5NTU0OSwgOTU1NTQsIDk1NTU5LCA5NTU2NCwgOTU1NjksIDk1NTc0LCA5NTU3OSwgOTU1ODQsIDk1NTg5LCAKLSAgICA5NTU5NCwgOTU1OTksIDk1NjA0LCA5NTYwOSwgOTU2MTQsIDk1NjE5LCA5NTYyNCwgOTU2MjksIDk1NjM0LCA5NTYzOSwgCi0gICAgOTU2NDQsIDk1NjQ5LCA5NTY1NCwgOTU2NTksIDk1NjY0LCA5NTY2OSwgOTU2NzQsIDk1Njc5LCA5NTY4NCwgOTU2ODksIAotICAgIDk1Njk0LCA5NTY5OSwgOTU3MDQsIDk1NzA5LCA5NTcxMywgOTU3MTcsIDk1NzIxLCA5NTcyNSwgOTU3MjksIDk1NzMzLCAKLSAgICA5NTczNywgOTU3NDIsIDk1NzQ3LCAwLCAwLCA5NTc1MiwgOTU3NTcsIDk1NzYxLCA5NTc2NSwgOTU3NjksIDk1NzczLCAKLSAgICA5NTc3NywgOTU3ODEsIDk1Nzg2LCA5NTc5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU2OTksIDk1NzA1LCA5NTcxMSwgOTU3MTcsIDk1NzI0LCAKKyAgICA5NTczMCwgOTU3MzcsIDk1NzQ0LCA5NTc1MSwgOTU3NTgsIDk1NzY2LCA5NTc3MywgOTU3ODEsIDk1Nzg3LCA5NTc5MywgCisgICAgOTU3OTksIDk1ODA1LCA5NTgxMSwgOTU4MTcsIDk1ODIzLCA5NTgyOSwgOTU4MzUsIDk1ODQxLCA5NTg0NywgOTU4NTMsIAorICAgIDk1ODU5LCA5NTg2NSwgOTU4NzEsIDk1ODc3LCA5NTg4MywgOTU4ODksIDk1ODk1LCA5NTkwMSwgOTU5MDcsIDk1OTEzLCAKKyAgICA5NTkxOSwgOTU5MjUsIDk1OTMxLCA5NTkzNywgOTU5NDMsIDk1OTQ5LCA5NTk1NSwgOTU5NjEsIDk1OTY3LCA5NTk3NCwgCisgICAgOTU5ODAsIDk1OTg3LCA5NTk5NCwgOTYwMDEsIDk2MDA4LCA5NjAxNiwgOTYwMjMsIDk2MDMxLCA5NjAzNywgOTYwNDMsIAorICAgIDk2MDQ5LCA5NjA1NSwgOTYwNjEsIDk2MDY3LCA5NjA3MywgOTYwNzksIDk2MDg1LCA5NjA5MSwgOTYwOTcsIDk2MTAzLCAKKyAgICA5NjEwOSwgOTYxMTUsIDk2MTIxLCA5NjEyNywgOTYxMzMsIDk2MTM5LCA5NjE0NSwgOTYxNTEsIDk2MTU3LCA5NjE2MywgCisgICAgOTYxNjksIDk2MTc1LCA5NjE4MSwgOTYxODcsIDk2MTkzLCA5NjE5OSwgOTYyMDQsIDk2MjA5LCA5NjIxNCwgOTYyMTksIAorICAgIDk2MjI0LCA5NjIyOSwgOTYyMzQsIDk2MjM5LCA5NjI0NCwgOTYyNDksIDk2MjU0LCA5NjI1OSwgOTYyNjQsIDk2MjY5LCAKKyAgICA5NjI3NCwgOTYyNzksIDk2Mjg0LCA5NjI4OSwgOTYyOTQsIDk2Mjk5LCA5NjMwNCwgOTYzMDksIDk2MzE0LCA5NjMxOSwgCisgICAgOTYzMjQsIDk2MzI5LCA5NjMzNCwgOTYzMzksIDk2MzQ0LCA5NjM0OSwgOTYzNTQsIDk2MzU5LCA5NjM2NCwgOTYzNjksIAorICAgIDk2Mzc0LCA5NjM3OSwgOTYzODQsIDk2Mzg5LCA5NjM5NCwgOTYzOTksIDk2NDA0LCA5NjQwOSwgOTY0MTQsIDk2NDE5LCAKKyAgICA5NjQyNCwgOTY0MjksIDk2NDM0LCA5NjQzOSwgOTY0NDQsIDk2NDQ5LCA5NjQ1NCwgOTY0NTksIDk2NDY0LCA5NjQ2OSwgCisgICAgOTY0NzQsIDk2NDc5LCA5NjQ4NCwgOTY0ODksIDk2NDk0LCA5NjQ5OSwgOTY1MDQsIDk2NTA5LCA5NjUxNCwgOTY1MTksIAorICAgIDk2NTI0LCA5NjUyOSwgOTY1MzQsIDk2NTM5LCA5NjU0MywgOTY1NDcsIDk2NTUxLCA5NjU1NSwgOTY1NTksIDk2NTYzLCAKKyAgICA5NjU2NywgOTY1NzIsIDk2NTc3LCAwLCAwLCA5NjU4MiwgOTY1ODcsIDk2NTkxLCA5NjU5NSwgOTY1OTksIDk2NjAzLCAKKyAgICA5NjYwNywgOTY2MTEsIDk2NjE2LCA5NjYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTY2MjUsIDk2NjMwLCA5NjYzNiwgOTY2NDIsIAorICAgIDk2NjQ4LCA5NjY1NCwgOTY2NjAsIDk2NjY2LCA5NjY3MSwgOTY2NzcsIDk2NjgyLCA5NjY4OCwgOTY2OTMsIDk2Njk4LCAKKyAgICA5NjcwNCwgOTY3MTAsIDk2NzE1LCA5NjcyMCwgOTY3MjUsIDk2NzMwLCA5NjczNiwgOTY3NDEsIDk2NzQ3LCA5Njc1MywgCisgICAgOTY3NTksIDk2NzY1LCA5Njc3MSwgOTY3NzcsIDk2NzgzLCA5Njc4OSwgOTY3OTUsIDk2ODAwLCA5NjgwNiwgOTY4MTIsIAorICAgIDk2ODE4LCA5NjgyNCwgMCwgMCwgMCwgMCwgOTY4MzAsIDk2ODM1LCA5Njg0MSwgOTY4NDcsIDk2ODUzLCA5Njg1OSwgCisgICAgOTY4NjUsIDk2ODcxLCA5Njg3NiwgOTY4ODIsIDk2ODg3LCA5Njg5MywgOTY4OTgsIDk2OTAzLCA5NjkwOSwgOTY5MTUsIAorICAgIDk2OTIwLCA5NjkyNSwgOTY5MzAsIDk2OTM1LCA5Njk0MSwgOTY5NDYsIDk2OTUyLCA5Njk1OCwgOTY5NjQsIDk2OTcwLCAKKyAgICA5Njk3NiwgOTY5ODIsIDk2OTg4LCA5Njk5NCwgOTcwMDAsIDk3MDA1LCA5NzAxMSwgOTcwMTcsIDk3MDIzLCA5NzAyOSwgMCwgCisgICAgMCwgMCwgMCwgOTcwMzUsIDk3MDM5LCA5NzA0NCwgOTcwNDksIDk3MDU0LCA5NzA1OSwgOTcwNjQsIDk3MDY5LCA5NzA3NCwgCisgICAgOTcwNzgsIDk3MDgzLCA5NzA4OCwgOTcwOTMsIDk3MDk4LCA5NzEwMiwgOTcxMDcsIDk3MTEyLCA5NzExNywgOTcxMjIsIAorICAgIDk3MTI3LCA5NzEzMiwgOTcxMzYsIDk3MTQxLCA5NzE0NSwgOTcxNTAsIDk3MTU1LCA5NzE2MCwgOTcxNjUsIDk3MTcwLCAKKyAgICA5NzE3NSwgOTcxODAsIDk3MTg1LCA5NzE4OSwgOTcxOTQsIDk3MTk5LCA5NzIwNCwgOTcyMDksIDk3MjE0LCA5NzIxOSwgCisgICAgOTcyMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk3MjI5LCA5NzIzNiwgOTcyNDMsIDk3MjUwLCA5NzI1NywgOTcyNjQsIAorICAgIDk3MjcxLCA5NzI3OCwgOTcyODUsIDk3MjkyLCA5NzI5OSwgOTczMDYsIDk3MzEzLCA5NzMyMCwgOTczMjcsIDk3MzM0LCAKKyAgICA5NzM0MSwgOTczNDgsIDk3MzU1LCA5NzM2MiwgOTczNjksIDk3Mzc2LCA5NzM4MywgOTczOTAsIDk3Mzk3LCA5NzQwNCwgCisgICAgOTc0MTEsIDk3NDE4LCA5NzQyNSwgOTc0MzIsIDk3NDM5LCA5NzQ0NiwgOTc0NTMsIDk3NDYwLCA5NzQ2NywgOTc0NzQsIAorICAgIDk3NDgxLCA5NzQ4OCwgOTc0OTUsIDk3NTAyLCA5NzUwOSwgOTc1MTYsIDk3NTIzLCA5NzUzMCwgOTc1MzcsIDk3NTQ0LCAKKyAgICA5NzU1MSwgOTc1NTgsIDk3NTY1LCA5NzU3MiwgOTc1NzksIDk3NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5NzU5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTU3OTUsIDk1Nzk5LCA5NTgwNCwgOTU4MDksIDk1ODE0LCA5NTgxOSwgOTU4MjQsIDk1ODI5LCA5NTgzNCwgOTU4MzgsIAotICAgIDk1ODQzLCA5NTg0OCwgOTU4NTMsIDk1ODU4LCA5NTg2MiwgOTU4NjcsIDk1ODcyLCA5NTg3NywgOTU4ODIsIDk1ODg3LCAKLSAgICA5NTg5MiwgOTU4OTcsIDk1OTAyLCA5NTkwNiwgOTU5MTEsIDk1OTE2LCA5NTkyMSwgOTU5MjYsIDk1OTMxLCA5NTkzNiwgCi0gICAgOTU5NDEsIDk1OTQ2LCA5NTk1MCwgOTU5NTUsIDk1OTYwLCA5NTk2NSwgOTU5NzAsIDk1OTc1LCA5NTk4MCwgOTU5ODUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1OTkwLCA5NTk5NywgOTYwMDQsIDk2MDExLCA5NjAxOCwgOTYwMjUsIDk2MDMyLCAKLSAgICA5NjAzOSwgOTYwNDYsIDk2MDUzLCA5NjA2MCwgOTYwNjcsIDk2MDc0LCA5NjA4MSwgOTYwODgsIDk2MDk1LCA5NjEwMiwgCi0gICAgOTYxMDksIDk2MTE2LCA5NjEyMywgOTYxMzAsIDk2MTM3LCA5NjE0NCwgOTYxNTEsIDk2MTU4LCA5NjE2NSwgOTYxNzIsIAotICAgIDk2MTc5LCA5NjE4NiwgOTYxOTMsIDk2MjAwLCA5NjIwNywgOTYyMTQsIDk2MjIxLCA5NjIyOCwgOTYyMzUsIDk2MjQyLCAKLSAgICA5NjI0OSwgOTYyNTYsIDk2MjYzLCA5NjI3MCwgOTYyNzcsIDk2Mjg0LCA5NjI5MSwgOTYyOTgsIDk2MzA1LCA5NjMxMiwgCi0gICAgOTYzMTksIDk2MzI2LCA5NjMzMywgOTYzNDAsIDk2MzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5NjM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOTc2MDAsIDk3NjA1LCA5NzYxMCwgOTc2MTUsIDk3NjIwLCA5NzYyNSwgOTc2MzAsIDk3NjM1LCA5NzY0MCwgCisgICAgOTc2NDUsIDk3NjUwLCA5NzY1NSwgOTc2NjAsIDk3NjY1LCA5NzY3MCwgOTc2NzUsIDk3NjgwLCA5NzY4NSwgOTc2OTAsIAorICAgIDk3Njk1LCA5NzcwMCwgOTc3MDUsIDk3NzEwLCA5NzcxNSwgOTc3MjAsIDk3NzI1LCA5NzczMCwgOTc3MzUsIDk3NzQwLCAKKyAgICA5Nzc0NSwgOTc3NTAsIDk3NzU1LCA5Nzc2MCwgOTc3NjUsIDk3NzcwLCA5Nzc3NSwgOTc3ODAsIDk3Nzg1LCA5Nzc5MCwgCisgICAgOTc3OTUsIDk3ODAwLCA5NzgwNSwgOTc4MTAsIDk3ODE1LCA5NzgyMCwgOTc4MjUsIDk3ODMwLCA5NzgzNSwgOTc4NDAsIAorICAgIDk3ODQ1LCA5Nzg1MCwgOTc4NTUsIDk3ODYwLCA5Nzg2NSwgOTc4NzAsIDk3ODc1LCA5Nzg4MCwgOTc4ODUsIDk3ODkwLCAKKyAgICA5Nzg5NSwgOTc5MDAsIDk3OTA1LCA5NzkxMCwgOTc5MTUsIDk3OTIwLCA5NzkyNSwgOTc5MzAsIDk3OTM1LCA5Nzk0MCwgCisgICAgOTc5NDUsIDk3OTUwLCA5Nzk1NSwgOTc5NjAsIDk3OTY1LCA5Nzk3MCwgOTc5NzUsIDk3OTgwLCA5Nzk4NSwgOTc5OTAsIAorICAgIDk3OTk1LCA5ODAwMCwgOTgwMDUsIDk4MDEwLCA5ODAxNSwgOTgwMjAsIDk4MDI1LCA5ODAzMCwgOTgwMzUsIDk4MDQwLCAKKyAgICA5ODA0NSwgOTgwNTAsIDk4MDU1LCA5ODA2MCwgOTgwNjUsIDk4MDcwLCA5ODA3NSwgOTgwODAsIDk4MDg1LCA5ODA5MCwgCisgICAgOTgwOTUsIDk4MTAwLCA5ODEwNSwgOTgxMTAsIDk4MTE1LCA5ODEyMCwgOTgxMjUsIDk4MTMwLCA5ODEzNSwgOTgxNDAsIAorICAgIDk4MTQ1LCA5ODE1MCwgOTgxNTUsIDk4MTYwLCA5ODE2NSwgOTgxNzAsIDk4MTc1LCA5ODE4MCwgOTgxODUsIDk4MTkwLCAKKyAgICA5ODE5NSwgOTgyMDAsIDk4MjA1LCA5ODIxMCwgOTgyMTUsIDk4MjIwLCA5ODIyNSwgOTgyMzAsIDk4MjM1LCA5ODI0MCwgCisgICAgOTgyNDUsIDk4MjUwLCA5ODI1NSwgOTgyNjAsIDk4MjY1LCA5ODI3MCwgOTgyNzUsIDk4MjgwLCA5ODI4NSwgOTgyOTAsIAorICAgIDk4Mjk1LCA5ODMwMCwgOTgzMDUsIDk4MzEwLCA5ODMxNSwgOTgzMjAsIDk4MzI1LCA5ODMzMCwgOTgzMzUsIDk4MzQwLCAKKyAgICA5ODM0NSwgOTgzNTAsIDk4MzU1LCA5ODM2MCwgOTgzNjUsIDk4MzcwLCA5ODM3NSwgOTgzODAsIDk4Mzg1LCA5ODM5MCwgCisgICAgOTgzOTUsIDk4NDAwLCA5ODQwNSwgOTg0MTAsIDk4NDE1LCA5ODQyMCwgOTg0MjUsIDk4NDMwLCA5ODQzNSwgOTg0NDAsIAorICAgIDk4NDQ1LCA5ODQ1MCwgOTg0NTUsIDk4NDYwLCA5ODQ2NSwgOTg0NzAsIDk4NDc1LCA5ODQ4MCwgOTg0ODUsIDk4NDkwLCAKKyAgICA5ODQ5NSwgOTg1MDAsIDk4NTA1LCA5ODUxMCwgOTg1MTUsIDk4NTIwLCA5ODUyNSwgOTg1MzAsIDk4NTM1LCA5ODU0MCwgCisgICAgOTg1NDUsIDk4NTUwLCA5ODU1NSwgOTg1NjAsIDk4NTY1LCA5ODU3MCwgOTg1NzUsIDk4NTgwLCA5ODU4NSwgOTg1OTAsIAorICAgIDk4NTk1LCA5ODYwMCwgOTg2MDUsIDk4NjEwLCA5ODYxNSwgOTg2MjAsIDk4NjI1LCA5ODYzMCwgOTg2MzUsIDk4NjQwLCAKKyAgICA5ODY0NSwgOTg2NTAsIDk4NjU1LCA5ODY2MCwgOTg2NjUsIDk4NjcwLCA5ODY3NSwgOTg2ODAsIDk4Njg1LCA5ODY5MCwgCisgICAgOTg2OTUsIDk4NzAwLCA5ODcwNSwgOTg3MTAsIDk4NzE1LCA5ODcyMCwgOTg3MjUsIDk4NzMwLCA5ODczNSwgOTg3NDAsIAorICAgIDk4NzQ1LCA5ODc1MCwgOTg3NTUsIDk4NzYwLCA5ODc2NSwgOTg3NzAsIDk4Nzc1LCA5ODc4MCwgOTg3ODUsIDk4NzkwLCAKKyAgICA5ODc5NSwgOTg4MDAsIDk4ODA1LCA5ODgxMCwgOTg4MTUsIDk4ODIwLCA5ODgyNSwgOTg4MzAsIDk4ODM1LCA5ODg0MCwgCisgICAgOTg4NDUsIDk4ODUwLCA5ODg1NSwgOTg4NjAsIDk4ODY1LCA5ODg3MCwgOTg4NzUsIDk4ODgwLCA5ODg4NSwgOTg4OTAsIAorICAgIDk4ODk1LCA5ODkwMCwgOTg5MDUsIDk4OTEwLCA5ODkxNSwgOTg5MjAsIDk4OTI1LCA5ODkzMCwgOTg5MzUsIDk4OTQwLCAKKyAgICA5ODk0NSwgOTg5NTAsIDk4OTU1LCA5ODk2MCwgOTg5NjUsIDk4OTcwLCA5ODk3NSwgOTg5ODAsIDk4OTg1LCA5ODk5MCwgCisgICAgOTg5OTUsIDk5MDAwLCA5OTAwNSwgOTkwMTAsIDk5MDE1LCA5OTAyMCwgOTkwMjUsIDk5MDMwLCA5OTAzNSwgOTkwNDAsIAorICAgIDk5MDQ1LCA5OTA1MCwgOTkwNTUsIDk5MDYwLCA5OTA2NSwgOTkwNzAsIDk5MDc1LCA5OTA4MCwgOTkwODUsIDk5MDkwLCAKKyAgICA5OTA5NSwgOTkxMDAsIDk5MTA1LCA5OTExMCwgOTkxMTUsIDk5MTIwLCA5OTEyNSwgOTkxMzAsIDk5MTM1LCA5OTE0MCwgCisgICAgOTkxNDUsIDk5MTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OTE1NSwgOTkxNjEsIDk5MTY4LCA5OTE3NSwgCisgICAgOTkxODEsIDk5MTg4LCA5OTE5NSwgOTkyMDIsIDk5MjA5LCA5OTIxNSwgOTkyMjIsIDk5MjI5LCA5OTIzNiwgOTkyNDMsIAorICAgIDk5MjUwLCA5OTI1NywgOTkyNjQsIDk5MjcxLCA5OTI3OCwgOTkyODUsIDk5MjkyLCA5OTI5OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTkzMDYsIDk5MzExLCA5OTMxNiwgOTkzMjEsIDk5MzI2LCA5OTMzMSwgOTkzMzYsIDk5MzQxLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA5NjM2MSwgOTYzNjYsIDk2MzcxLCA5NjM3NiwgOTYzODEsIDk2Mzg2LCA5NjM5MSwgOTYzOTYsIDk2NDAxLCAKLSAgICA5NjQwNiwgOTY0MTEsIDk2NDE2LCA5NjQyMSwgOTY0MjYsIDk2NDMxLCA5NjQzNiwgOTY0NDEsIDk2NDQ2LCA5NjQ1MSwgCi0gICAgOTY0NTYsIDk2NDYxLCA5NjQ2NiwgOTY0NzEsIDk2NDc2LCA5NjQ4MSwgOTY0ODYsIDk2NDkxLCA5NjQ5NiwgOTY1MDEsIAotICAgIDk2NTA2LCA5NjUxMSwgOTY1MTYsIDk2NTIxLCA5NjUyNiwgOTY1MzEsIDk2NTM2LCA5NjU0MSwgOTY1NDYsIDk2NTUxLCAKLSAgICA5NjU1NiwgOTY1NjEsIDk2NTY2LCA5NjU3MSwgOTY1NzYsIDk2NTgxLCA5NjU4NiwgOTY1OTEsIDk2NTk2LCA5NjYwMSwgCi0gICAgOTY2MDYsIDk2NjExLCA5NjYxNiwgOTY2MjEsIDk2NjI2LCA5NjYzMSwgOTY2MzYsIDk2NjQxLCA5NjY0NiwgOTY2NTEsIAotICAgIDk2NjU2LCA5NjY2MSwgOTY2NjYsIDk2NjcxLCA5NjY3NiwgOTY2ODEsIDk2Njg2LCA5NjY5MSwgOTY2OTYsIDk2NzAxLCAKLSAgICA5NjcwNiwgOTY3MTEsIDk2NzE2LCA5NjcyMSwgOTY3MjYsIDk2NzMxLCA5NjczNiwgOTY3NDEsIDk2NzQ2LCA5Njc1MSwgCi0gICAgOTY3NTYsIDk2NzYxLCA5Njc2NiwgOTY3NzEsIDk2Nzc2LCA5Njc4MSwgOTY3ODYsIDk2NzkxLCA5Njc5NiwgOTY4MDEsIAotICAgIDk2ODA2LCA5NjgxMSwgOTY4MTYsIDk2ODIxLCA5NjgyNiwgOTY4MzEsIDk2ODM2LCA5Njg0MSwgOTY4NDYsIDk2ODUxLCAKLSAgICA5Njg1NiwgOTY4NjEsIDk2ODY2LCA5Njg3MSwgOTY4NzYsIDk2ODgxLCA5Njg4NiwgOTY4OTEsIDk2ODk2LCA5NjkwMSwgCi0gICAgOTY5MDYsIDk2OTExLCA5NjkxNiwgOTY5MjEsIDk2OTI2LCA5NjkzMSwgOTY5MzYsIDk2OTQxLCA5Njk0NiwgOTY5NTEsIAotICAgIDk2OTU2LCA5Njk2MSwgOTY5NjYsIDk2OTcxLCA5Njk3NiwgOTY5ODEsIDk2OTg2LCA5Njk5MSwgOTY5OTYsIDk3MDAxLCAKLSAgICA5NzAwNiwgOTcwMTEsIDk3MDE2LCA5NzAyMSwgOTcwMjYsIDk3MDMxLCA5NzAzNiwgOTcwNDEsIDk3MDQ2LCA5NzA1MSwgCi0gICAgOTcwNTYsIDk3MDYxLCA5NzA2NiwgOTcwNzEsIDk3MDc2LCA5NzA4MSwgOTcwODYsIDk3MDkxLCA5NzA5NiwgOTcxMDEsIAotICAgIDk3MTA2LCA5NzExMSwgOTcxMTYsIDk3MTIxLCA5NzEyNiwgOTcxMzEsIDk3MTM2LCA5NzE0MSwgOTcxNDYsIDk3MTUxLCAKLSAgICA5NzE1NiwgOTcxNjEsIDk3MTY2LCA5NzE3MSwgOTcxNzYsIDk3MTgxLCA5NzE4NiwgOTcxOTEsIDk3MTk2LCA5NzIwMSwgCi0gICAgOTcyMDYsIDk3MjExLCA5NzIxNiwgOTcyMjEsIDk3MjI2LCA5NzIzMSwgOTcyMzYsIDk3MjQxLCA5NzI0NiwgOTcyNTEsIAotICAgIDk3MjU2LCA5NzI2MSwgOTcyNjYsIDk3MjcxLCA5NzI3NiwgOTcyODEsIDk3Mjg2LCA5NzI5MSwgOTcyOTYsIDk3MzAxLCAKLSAgICA5NzMwNiwgOTczMTEsIDk3MzE2LCA5NzMyMSwgOTczMjYsIDk3MzMxLCA5NzMzNiwgOTczNDEsIDk3MzQ2LCA5NzM1MSwgCi0gICAgOTczNTYsIDk3MzYxLCA5NzM2NiwgOTczNzEsIDk3Mzc2LCA5NzM4MSwgOTczODYsIDk3MzkxLCA5NzM5NiwgOTc0MDEsIAotICAgIDk3NDA2LCA5NzQxMSwgOTc0MTYsIDk3NDIxLCA5NzQyNiwgOTc0MzEsIDk3NDM2LCA5NzQ0MSwgOTc0NDYsIDk3NDUxLCAKLSAgICA5NzQ1NiwgOTc0NjEsIDk3NDY2LCA5NzQ3MSwgOTc0NzYsIDk3NDgxLCA5NzQ4NiwgOTc0OTEsIDk3NDk2LCA5NzUwMSwgCi0gICAgOTc1MDYsIDk3NTExLCA5NzUxNiwgOTc1MjEsIDk3NTI2LCA5NzUzMSwgOTc1MzYsIDk3NTQxLCA5NzU0NiwgOTc1NTEsIAotICAgIDk3NTU2LCA5NzU2MSwgOTc1NjYsIDk3NTcxLCA5NzU3NiwgOTc1ODEsIDk3NTg2LCA5NzU5MSwgOTc1OTYsIDk3NjAxLCAKLSAgICA5NzYwNiwgOTc2MTEsIDk3NjE2LCA5NzYyMSwgOTc2MjYsIDk3NjMxLCA5NzYzNiwgOTc2NDEsIDk3NjQ2LCA5NzY1MSwgCi0gICAgOTc2NTYsIDk3NjYxLCA5NzY2NiwgOTc2NzEsIDk3Njc2LCA5NzY4MSwgOTc2ODYsIDk3NjkxLCA5NzY5NiwgOTc3MDEsIAotICAgIDk3NzA2LCA5NzcxMSwgOTc3MTYsIDk3NzIxLCA5NzcyNiwgOTc3MzEsIDk3NzM2LCA5Nzc0MSwgOTc3NDYsIDk3NzUxLCAKLSAgICA5Nzc1NiwgOTc3NjEsIDk3NzY2LCA5Nzc3MSwgOTc3NzYsIDk3NzgxLCA5Nzc4NiwgOTc3OTEsIDk3Nzk2LCA5NzgwMSwgCi0gICAgOTc4MDYsIDk3ODExLCA5NzgxNiwgOTc4MjEsIDk3ODI2LCA5NzgzMSwgOTc4MzYsIDk3ODQxLCA5Nzg0NiwgOTc4NTEsIAotICAgIDk3ODU2LCA5Nzg2MSwgOTc4NjYsIDk3ODcxLCA5Nzg3NiwgOTc4ODEsIDk3ODg2LCA5Nzg5MSwgOTc4OTYsIDk3OTAxLCAKLSAgICA5NzkwNiwgOTc5MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk3OTE2LCA5NzkyMiwgOTc5MjksIDk3OTM2LCAKLSAgICA5Nzk0MiwgOTc5NDksIDk3OTU2LCA5Nzk2MywgOTc5NzAsIDk3OTc2LCA5Nzk4MywgOTc5OTAsIDk3OTk3LCA5ODAwNCwgCi0gICAgOTgwMTEsIDk4MDE4LCA5ODAyNSwgOTgwMzIsIDk4MDM5LCA5ODA0NiwgOTgwNTMsIDk4MDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5ODA2NywgOTgwNzIsIDk4MDc3LCA5ODA4MiwgOTgwODcsIDk4MDkyLCA5ODA5NywgOTgxMDIsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk5MzQ2LCA5OTM1MCwgOTkzNTQsIDk5MzU4LCA5OTM2MiwgOTkzNjYsIDAsIDAsIDk5MzcxLCAKKyAgICAwLCA5OTM3NiwgOTkzODAsIDk5Mzg1LCA5OTM5MCwgOTkzOTUsIDk5NDAwLCA5OTQwNCwgOTk0MDksIDk5NDE0LCA5OTQxOSwgCisgICAgOTk0MjQsIDk5NDI4LCA5OTQzMywgOTk0MzgsIDk5NDQzLCA5OTQ0OCwgOTk0NTIsIDk5NDU3LCA5OTQ2MiwgOTk0NjcsIAorICAgIDk5NDcyLCA5OTQ3NiwgOTk0ODEsIDk5NDg2LCA5OTQ5MSwgOTk0OTYsIDk5NTAxLCA5OTUwNiwgOTk1MTEsIDk5NTE2LCAKKyAgICA5OTUyMSwgOTk1MjYsIDk5NTMxLCA5OTUzNiwgOTk1NDEsIDk5NTQ2LCA5OTU1MSwgOTk1NTYsIDk5NTYxLCA5OTU2NSwgCisgICAgOTk1NzAsIDk5NTc1LCA5OTU4MCwgOTk1ODUsIDAsIDk5NTkwLCA5OTU5NSwgMCwgMCwgMCwgOTk2MDAsIDAsIDAsIDk5NjA1LCAKKyAgICA5OTYxMCwgOTk2MTcsIDk5NjI0LCA5OTYzMSwgOTk2MzgsIDk5NjQ1LCA5OTY1MiwgOTk2NTksIDk5NjY2LCA5OTY3MywgCisgICAgOTk2ODAsIDk5Njg3LCA5OTY5NCwgOTk3MDEsIDk5NzA4LCA5OTcxNSwgOTk3MjIsIDk5NzI5LCA5OTczNiwgOTk3NDMsIAorICAgIDk5NzUwLCA5OTc1NywgMCwgOTk3NjQsIDk5NzcxLCA5OTc3NywgOTk3ODMsIDk5Nzg5LCA5OTc5NiwgOTk4MDMsIDk5ODExLCAKKyAgICA5OTgxOSwgOTk4MjgsIDk5ODMzLCA5OTgzOCwgOTk4NDMsIDk5ODQ4LCA5OTg1MywgOTk4NTgsIDk5ODYzLCA5OTg2OCwgCisgICAgOTk4NzMsIDk5ODc4LCA5OTg4MywgOTk4ODgsIDk5ODkzLCA5OTg5OSwgOTk5MDQsIDk5OTA5LCA5OTkxNCwgOTk5MTksIAorICAgIDk5OTI0LCA5OTkyOSwgOTk5MzQsIDk5OTM5LCA5OTk0NCwgOTk5NTAsIDk5OTU2LCA5OTk2MCwgOTk5NjQsIDk5OTY4LCAKKyAgICA5OTk3MiwgOTk5NzYsIDk5OTgxLCA5OTk4NiwgOTk5OTIsIDk5OTk3LCAxMDAwMDMsIDEwMDAwOCwgMTAwMDEzLCAxMDAwMTgsIAorICAgIDEwMDAyNCwgMTAwMDI5LCAxMDAwMzQsIDEwMDAzOSwgMTAwMDQ0LCAxMDAwNDksIDEwMDA1NSwgMTAwMDYwLCAxMDAwNjYsIAorICAgIDEwMDA3MSwgMTAwMDc3LCAxMDAwODIsIDEwMDA4OCwgMTAwMDkzLCAxMDAwOTksIDEwMDEwNCwgMTAwMTA5LCAxMDAxMTQsIAorICAgIDEwMDExOSwgMTAwMTI0LCAxMDAxMjksIDEwMDEzNCwgMTAwMTQwLCAxMDAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMDE1MCwgMTAwMTU0LCAxMDAxNTgsIDEwMDE2MiwgMTAwMTY2LCAxMDAxNzIsIDEwMDE3NiwgMTAwMTgxLCAxMDAxODYsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk4MTA3LCA5ODExMSwgOTgxMTUsIDk4MTE5LCA5ODEyMywgOTgxMjcsIDAsIDAsIDk4MTMyLCAKLSAgICAwLCA5ODEzNywgOTgxNDEsIDk4MTQ2LCA5ODE1MSwgOTgxNTYsIDk4MTYxLCA5ODE2NiwgOTgxNzEsIDk4MTc2LCA5ODE4MSwgCi0gICAgOTgxODYsIDk4MTkwLCA5ODE5NSwgOTgyMDAsIDk4MjA1LCA5ODIxMCwgOTgyMTUsIDk4MjIwLCA5ODIyNSwgOTgyMzAsIAotICAgIDk4MjM1LCA5ODIzOSwgOTgyNDQsIDk4MjQ5LCA5ODI1NCwgOTgyNTksIDk4MjY0LCA5ODI2OSwgOTgyNzQsIDk4Mjc5LCAKLSAgICA5ODI4NCwgOTgyODksIDk4Mjk0LCA5ODI5OSwgOTgzMDQsIDk4MzA5LCA5ODMxNCwgOTgzMTksIDk4MzI0LCA5ODMyOCwgCi0gICAgOTgzMzMsIDk4MzM4LCA5ODM0MywgOTgzNDgsIDAsIDk4MzUzLCA5ODM1OCwgMCwgMCwgMCwgOTgzNjMsIDAsIDAsIDk4MzY4LCAKLSAgICA5ODM3MywgOTgzODAsIDk4Mzg3LCA5ODM5NCwgOTg0MDEsIDk4NDA4LCA5ODQxNSwgOTg0MjIsIDk4NDI5LCA5ODQzNiwgCi0gICAgOTg0NDMsIDk4NDUwLCA5ODQ1NywgOTg0NjQsIDk4NDcxLCA5ODQ3OCwgOTg0ODUsIDk4NDkyLCA5ODQ5OSwgOTg1MDYsIAotICAgIDk4NTEzLCA5ODUyMCwgMCwgOTg1MjcsIDk4NTM0LCA5ODU0MCwgOTg1NDYsIDk4NTUyLCA5ODU1OSwgOTg1NjYsIDk4NTc0LCAKLSAgICA5ODU4MiwgOTg1OTEsIDk4NTk2LCA5ODYwMSwgOTg2MDYsIDk4NjExLCA5ODYxNiwgOTg2MjEsIDk4NjI2LCA5ODYzMSwgCi0gICAgOTg2MzYsIDk4NjQxLCA5ODY0NiwgOTg2NTEsIDk4NjU2LCA5ODY2MiwgOTg2NjcsIDk4NjcyLCA5ODY3NywgOTg2ODIsIAotICAgIDk4Njg3LCA5ODY5MiwgOTg2OTcsIDk4NzAyLCA5ODcwNywgOTg3MTMsIDk4NzE5LCA5ODcyMywgOTg3MjcsIDk4NzMxLCAKLSAgICA5ODczNSwgOTg3MzksIDk4NzQ0LCA5ODc0OSwgOTg3NTUsIDk4NzYwLCA5ODc2NiwgOTg3NzEsIDk4Nzc2LCA5ODc4MSwgCi0gICAgOTg3ODcsIDk4NzkyLCA5ODc5NywgOTg4MDIsIDk4ODA3LCA5ODgxMiwgOTg4MTgsIDk4ODIzLCA5ODgyOSwgOTg4MzQsIAotICAgIDk4ODQwLCA5ODg0NSwgOTg4NTEsIDk4ODU2LCA5ODg2MiwgOTg4NjcsIDk4ODcyLCA5ODg3NywgOTg4ODIsIDk4ODg3LCAKLSAgICA5ODg5MiwgOTg4OTcsIDk4OTAzLCA5ODkwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTg5MTMsIDk4OTE3LCA5ODkyMSwgCi0gICAgOTg5MjUsIDk4OTI5LCA5ODkzNSwgOTg5MzksIDk4OTQ0LCA5ODk0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTg5NTUsIDk4OTYwLCA5ODk2NSwgOTg5NzAsIAotICAgIDk4OTc1LCA5ODk4MCwgOTg5ODUsIDk4OTkwLCA5ODk5NSwgOTkwMDAsIDk5MDA1LCA5OTAxMCwgOTkwMTUsIDk5MDIwLCAKLSAgICA5OTAyNSwgOTkwMzAsIDk5MDM1LCA5OTA0MCwgOTkwNDUsIDAsIDk5MDUwLCA5OTA1NSwgMCwgMCwgMCwgMCwgMCwgOTkwNjAsIAotICAgIDk5MDY0LCA5OTA2OCwgOTkwNzMsIDk5MDc4LCA5OTA4NCwgOTkwODksIDk5MDk0LCA5OTA5OSwgOTkxMDQsIDk5MTA5LCAKLSAgICA5OTExNCwgOTkxMTksIDk5MTI0LCA5OTEyOSwgOTkxMzQsIDk5MTM5LCA5OTE0NCwgOTkxNDksIDk5MTU0LCA5OTE1OSwgCi0gICAgOTkxNjQsIDk5MTY5LCA5OTE3NCwgOTkxNzksIDk5MTg0LCA5OTE4OSwgOTkxOTQsIDk5MTk4LCA5OTIwMywgOTkyMDgsIAotICAgIDk5MjE0LCA5OTIxOCwgMCwgMCwgMCwgOTkyMjIsIDk5MjI4LCA5OTIzMiwgOTkyMzcsIDk5MjQyLCA5OTI0NywgOTkyNTEsIAotICAgIDk5MjU2LCA5OTI2MCwgOTkyNjUsIDk5MjcwLCA5OTI3NCwgOTkyNzksIDk5Mjg0LCA5OTI4OCwgOTkyOTIsIDk5Mjk3LCAKLSAgICA5OTMwMiwgOTkzMDYsIDk5MzExLCA5OTMxNiwgOTkzMjAsIDk5MzI1LCA5OTMzMCwgOTkzMzUsIDk5MzQwLCA5OTM0NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTkzNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5MzU1LCAKLSAgICA5OTM2MCwgOTkzNjUsIDk5MzcwLCA5OTM3NSwgOTkzODAsIDk5Mzg2LCA5OTM5MiwgOTkzOTgsIDk5NDAzLCA5OTQwOCwgCi0gICAgOTk0MTQsIDk5NDIwLCA5OTQyNiwgOTk0MzIsIDk5NDM4LCA5OTQ0NCwgOTk0NTAsIDk5NDU2LCA5OTQ2MiwgOTk0NjgsIAotICAgIDk5NDc0LCA5OTQ4MCwgOTk0ODUsIDk5NDkxLCA5OTQ5NywgOTk1MDMsIDk5NTA5LCA5OTUxNSwgOTk1MjAsIDk5NTI2LCAKLSAgICA5OTUzMiwgOTk1MzgsIDk5NTQyLCA5OTU0NiwgOTk1NTAsIDk5NTU0LCA5OTU1OCwgOTk1NjMsIDk5NTY4LCA5OTU3MiwgCi0gICAgOTk1NzYsIDk5NTgxLCA5OTU4NiwgOTk1OTEsIDk5NTk2LCA5OTYwMSwgOTk2MDYsIDk5NjExLCA5OTYxOCwgOTk2MjMsIAotICAgIDk5NjI3LCA5OTYzMiwgOTk2MzcsIDk5NjQyLCA5OTY0NiwgMCwgMCwgMCwgMCwgOTk2NTEsIDk5NjU5LCA5OTY2NiwgCi0gICAgOTk2NzIsIDk5Njc4LCA5OTY4MiwgOTk2ODYsIDk5NjkwLCA5OTY5NCwgOTk2OTgsIDk5NzAyLCA5OTcwNywgOTk3MTEsIAotICAgIDk5NzE2LCA5OTcyMSwgOTk3MjYsIDk5NzMxLCA5OTczNiwgOTk3NDEsIDk5NzQ2LCAwLCAwLCA5OTc1MSwgOTk3NTcsIAotICAgIDk5NzYzLCA5OTc2OSwgOTk3NzYsIDk5NzgzLCA5OTc5MCwgOTk3OTcsIDk5ODA0LCA5OTgxMSwgOTk4MTcsIDk5ODIzLCAKLSAgICA5OTgyOSwgOTk4MzYsIDk5ODQzLCA5OTg1MCwgOTk4NTcsIDk5ODY0LCA5OTg3MSwgOTk4NzgsIDk5ODg1LCA5OTg5MiwgCi0gICAgOTk4OTksIDk5OTA2LCA5OTkxMywgOTk5MjAsIDk5OTI3LCA5OTkzNCwgOTk5NDIsIDk5OTUwLCA5OTk1OCwgOTk5NjcsIAotICAgIDk5OTc2LCA5OTk4NSwgOTk5OTQsIDEwMDAwMywgMTAwMDEyLCAxMDAwMTksIDEwMDAyNiwgMTAwMDMzLCAxMDAwNDEsIAotICAgIDEwMDA0OSwgMTAwMDU3LCAxMDAwNjUsIDEwMDA3MywgMTAwMDgxLCAxMDAwODksIDEwMDA5MywgMTAwMDk4LCAxMDAxMDMsIAotICAgIDAsIDEwMDEwOSwgMTAwMTE0LCAwLCAwLCAwLCAwLCAwLCAxMDAxMTksIDEwMDEyNSwgMTAwMTMyLCAxMDAxMzcsIDEwMDE0MiwgCi0gICAgMTAwMTQ2LCAxMDAxNTEsIDEwMDE1NiwgMCwgMTAwMTYxLCAxMDAxNjYsIDEwMDE3MSwgMCwgMTAwMTc2LCAxMDAxODEsIAotICAgIDEwMDE4NiwgMTAwMTkxLCAxMDAxOTYsIDEwMDIwMSwgMTAwMjA2LCAxMDAyMTEsIDEwMDIxNiwgMTAwMjIxLCAxMDAyMjYsIAotICAgIDEwMDIzMSwgMTAwMjM1LCAxMDAyNDAsIDEwMDI0NSwgMTAwMjUwLCAxMDAyNTQsIDEwMDI1OCwgMTAwMjYzLCAxMDAyNjgsIAotICAgIDEwMDI3MywgMTAwMjc4LCAxMDAyODMsIDEwMDI4OCwgMTAwMjkzLCAxMDAyOTcsIDEwMDMwMiwgMCwgMCwgMCwgMCwgCi0gICAgMTAwMzA3LCAxMDAzMTMsIDEwMDMxOCwgMCwgMCwgMCwgMCwgMTAwMzIzLCAxMDAzMjcsIDEwMDMzMSwgMTAwMzM1LCAKLSAgICAxMDAzMzksIDEwMDM0MywgMTAwMzQ4LCAxMDAzNTMsIDEwMDM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMzY1LCAKLSAgICAxMDAzNzEsIDEwMDM3OCwgMTAwMzg0LCAxMDAzOTEsIDEwMDM5NywgMTAwNDAzLCAxMDA0MDksIDEwMDQxNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTAwNDIyLCAxMDA0MzAsIDEwMDQzOCwgMTAwNDQ2LCAxMDA0NTQsIDEwMDQ2MiwgMTAwNDcwLCAKLSAgICAxMDA0NzgsIDEwMDQ4NiwgMTAwNDk0LCAxMDA1MDIsIDEwMDUxMCwgMTAwNTE4LCAxMDA1MjYsIDEwMDUzNCwgMTAwNTQyLCAKLSAgICAxMDA1NTAsIDEwMDU1OCwgMTAwNTY2LCAxMDA1NzQsIDEwMDU4MiwgMTAwNTkwLCAxMDA1OTgsIDEwMDYwNiwgMTAwNjE0LCAKLSAgICAxMDA2MjIsIDEwMDYzMCwgMTAwNjM4LCAxMDA2NDYsIDEwMDY1NCwgMTAwNjYxLCAxMDA2NjksIDEwMDY3NywgMTAwNjg0LCAKLSAgICAxMDA2OTEsIDEwMDY5OCwgMTAwNzA1LCAxMDA3MTIsIDEwMDcxOSwgMTAwNzI2LCAxMDA3MzMsIDEwMDc0MCwgMTAwNzQ3LCAKLSAgICAxMDA3NTQsIDEwMDc2MSwgMTAwNzY4LCAxMDA3NzUsIDEwMDc4MiwgMTAwNzg5LCAxMDA3OTYsIDEwMDgwMywgMTAwODEwLCAKLSAgICAxMDA4MTcsIDEwMDgyNCwgMTAwODMxLCAxMDA4MzgsIDEwMDg0NSwgMTAwODUyLCAxMDA4NTksIDEwMDg2NiwgMTAwODczLCAKLSAgICAxMDA4ODAsIDEwMDg4NiwgMTAwODkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA5MDAsIDEwMDkwNSwgMTAwOTEwLCAKLSAgICAxMDA5MTUsIDEwMDkyMCwgMTAwOTI1LCAxMDA5MzAsIDEwMDkzNSwgMTAwOTQwLCAxMDA5NDUsIDEwMDk1MCwgMTAwOTU1LCAKLSAgICAxMDA5NjAsIDEwMDk2NSwgMTAwOTcwLCAxMDA5NzUsIDEwMDk4MCwgMTAwOTg1LCAxMDA5OTAsIDEwMDk5NSwgMTAxMDAwLCAKLSAgICAxMDEwMDUsIDEwMTAxMCwgMTAxMDE1LCAxMDEwMjAsIDEwMTAyNSwgMTAxMDMwLCAxMDEwMzUsIDEwMTA0MCwgMTAxMDQ1LCAKLSAgICAxMDEwNTAsIDEwMTA1NSwgMTAxMDYwLCAxMDEwNjUsIDEwMTA3MCwgMTAxMDc1LCAxMDEwODAsIDEwMTA4NSwgMTAxMDkxLCAKLSAgICAwLCAwLCAwLCAwLCAxMDEwOTcsIDEwMTEwMSwgMTAxMTA1LCAxMDExMTAsIDEwMTExNSwgMTAxMTIxLCAxMDExMjcsIAotICAgIDEwMTEzMywgMTAxMTQzLCAxMDExNTIsIDEwMTE1OCwgMTAxMTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDExNzMsIDEwMTE3NywgMTAxMTgyLCAxMDExODcsIDEwMTE5MiwgMTAxMTk3LCAxMDEyMDIsIDEwMTIwNywgMTAxMjEyLCAKLSAgICAxMDEyMTYsIDEwMTIyMSwgMTAxMjI1LCAxMDEyMzAsIDEwMTIzNCwgMTAxMjM5LCAxMDEyNDMsIDEwMTI0OCwgMTAxMjUzLCAKLSAgICAxMDEyNTgsIDEwMTI2MywgMTAxMjY4LCAxMDEyNzMsIDEwMTI3OCwgMTAxMjgzLCAxMDEyODgsIDEwMTI5MywgMTAxMjk4LCAKLSAgICAxMDEzMDMsIDEwMTMwOCwgMTAxMzEzLCAxMDEzMTgsIDEwMTMyMywgMTAxMzI4LCAxMDEzMzMsIDEwMTMzOCwgMTAxMzQzLCAKLSAgICAxMDEzNDgsIDEwMTM1MywgMTAxMzU4LCAxMDEzNjMsIDEwMTM2OCwgMTAxMzczLCAxMDEzNzgsIDEwMTM4MywgMTAxMzg4LCAKLSAgICAxMDEzOTMsIDEwMTM5OCwgMTAxNDAzLCAxMDE0MDgsIDEwMTQxMywgMTAxNDE4LCAxMDE0MjMsIDEwMTQyOCwgMTAxNDMzLCAKLSAgICAwLCAwLCAwLCAxMDE0MzgsIDEwMTQ0MywgMTAxNDUyLCAxMDE0NjAsIDEwMTQ2OSwgMTAxNDc4LCAxMDE0ODksIDEwMTUwMCwgCi0gICAgMTAxNTA3LCAxMDE1MTQsIDEwMTUyMSwgMTAxNTI4LCAxMDE1MzUsIDEwMTU0MiwgMTAxNTQ5LCAxMDE1NTYsIDEwMTU2MywgCi0gICAgMTAxNTcwLCAxMDE1NzcsIDEwMTU4NCwgMTAxNTkxLCAxMDE1OTgsIDEwMTYwNSwgMTAxNjEyLCAxMDE2MTksIDEwMTYyNiwgCi0gICAgMTAxNjMzLCAxMDE2NDAsIDEwMTY0NywgMCwgMCwgMTAxNjU0LCAxMDE2NjAsIDEwMTY2NiwgMTAxNjcyLCAxMDE2NzgsIAotICAgIDEwMTY4NSwgMTAxNjkyLCAxMDE3MDAsIDEwMTcwOCwgMTAxNzE1LCAxMDE3MjIsIDEwMTcyOSwgMTAxNzM2LCAxMDE3NDMsIAotICAgIDEwMTc1MCwgMTAxNzU3LCAxMDE3NjQsIDEwMTc3MSwgMTAxNzc4LCAxMDE3ODUsIDEwMTc5MiwgMTAxNzk5LCAxMDE4MDYsIAotICAgIDEwMTgxMywgMTAxODIwLCAxMDE4MjcsIDEwMTgzNCwgMCwgMCwgMCwgMCwgMCwgMTAxODQxLCAxMDE4NDcsIDEwMTg1MywgCi0gICAgMTAxODU5LCAxMDE4NjUsIDEwMTg3MiwgMTAxODc5LCAxMDE4ODcsIDEwMTg5NSwgMTAxOTAyLCAxMDE5MDksIDEwMTkxNiwgCi0gICAgMTAxOTIzLCAxMDE5MzAsIDEwMTkzNywgMTAxOTQ0LCAxMDE5NTEsIDEwMTk1OCwgMTAxOTY1LCAxMDE5NzIsIDEwMTk3OSwgCi0gICAgMTAxOTg2LCAxMDE5OTMsIDEwMjAwMCwgMTAyMDA3LCAxMDIwMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjAyMSwgCi0gICAgMTAyMDI4LCAxMDIwMzcsIDEwMjA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyMDU3LCAKLSAgICAxMDIwNjMsIDEwMjA2OSwgMTAyMDc1LCAxMDIwODEsIDEwMjA4OCwgMTAyMDk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDIxMDMsIDEwMjExMCwgMTAyMTE3LCAxMDIxMjUsIDEwMjEzMiwgMTAyMTM5LCAxMDIxNDYsIDEwMjE1MywgMTAyMTYxLCAKLSAgICAxMDIxNjksIDEwMjE3NywgMTAyMTg1LCAxMDIxOTMsIDEwMjIwMSwgMTAyMjA5LCAxMDIyMTcsIDEwMjIyNSwgMTAyMjMzLCAKLSAgICAxMDIyNDEsIDEwMjI0OSwgMTAyMjU3LCAxMDIyNjUsIDEwMjI3MywgMTAyMjgxLCAxMDIyODksIDEwMjI5NywgMTAyMzA1LCAKLSAgICAxMDIzMTMsIDEwMjMyMSwgMTAyMzI5LCAxMDIzMzcsIDEwMjM0NSwgMTAyMzUzLCAxMDIzNjEsIDEwMjM2OSwgMTAyMzc3LCAKLSAgICAxMDIzODUsIDEwMjM5MywgMTAyNDAxLCAxMDI0MDksIDEwMjQxNywgMTAyNDI1LCAxMDI0MzMsIDEwMjQ0MSwgMTAyNDQ5LCAKLSAgICAxMDI0NTcsIDEwMjQ2NSwgMTAyNDczLCAxMDI0ODEsIDEwMjQ4OSwgMTAyNDk3LCAxMDI1MDUsIDEwMjUxMywgMTAyNTIxLCAKLSAgICAxMDI1MjksIDEwMjUzNywgMTAyNTQ1LCAxMDI1NTMsIDEwMjU2MSwgMTAyNTY5LCAxMDI1NzcsIDEwMjU4NSwgMTAyNTkzLCAKLSAgICAxMDI2MDEsIDEwMjYwOSwgMTAyNjE3LCAxMDI2MjUsIDEwMjYzMywgMTAyNjQxLCAxMDI2NDksIDEwMjY1NywgMTAyNjY1LCAKLSAgICAxMDI2NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjY4MSwgMTAyNjg2LCAxMDI2OTIsIDEwMjY5OCwgMTAyNzA0LCAKLSAgICAxMDI3MTAsIDEwMjcxNiwgMTAyNzIyLCAxMDI3MjgsIDEwMjczNCwgMTAyNzM5LCAxMDI3NDYsIDEwMjc1MiwgMTAyNzU4LCAKLSAgICAxMDI3NjQsIDEwMjc3MCwgMTAyNzc2LCAxMDI3ODEsIDEwMjc4NywgMTAyNzkzLCAxMDI3OTksIDEwMjgwNSwgMTAyODExLCAKLSAgICAxMDI4MTcsIDEwMjgyMywgMTAyODI5LCAxMDI4MzUsIDEwMjg0MSwgMTAyODQ2LCAxMDI4NTIsIDEwMjg2MCwgMTAyODY4LCAKLSAgICAxMDI4NzQsIDEwMjg4MCwgMTAyODg2LCAxMDI4OTIsIDEwMjkwMCwgMTAyOTA2LCAxMDI5MTIsIDEwMjkxOCwgMTAyOTI0LCAKLSAgICAxMDI5MzAsIDEwMjkzNiwgMTAyOTQxLCAxMDI5NDcsIDEwMjk1NSwgMTAyOTYzLCAxMDI5NjksIDEwMjk3NSwgMTAyOTgxLCAKLSAgICAxMDI5ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjk5NCwgMTAyOTk5LCAxMDMwMDUsIAotICAgIDEwMzAxMSwgMTAzMDE3LCAxMDMwMjMsIDEwMzAyOSwgMTAzMDM1LCAxMDMwNDEsIDEwMzA0NywgMTAzMDUyLCAxMDMwNTksIAotICAgIDEwMzA2NSwgMTAzMDcxLCAxMDMwNzcsIDEwMzA4MywgMTAzMDg5LCAxMDMwOTQsIDEwMzEwMCwgMTAzMTA2LCAxMDMxMTIsIAotICAgIDEwMzExOCwgMTAzMTI0LCAxMDMxMzAsIDEwMzEzNiwgMTAzMTQyLCAxMDMxNDgsIDEwMzE1NCwgMTAzMTU5LCAxMDMxNjUsIAotICAgIDEwMzE3MywgMTAzMTgxLCAxMDMxODcsIDEwMzE5MywgMTAzMTk5LCAxMDMyMDUsIDEwMzIxMywgMTAzMjE5LCAxMDMyMjUsIAotICAgIDEwMzIzMSwgMTAzMjM3LCAxMDMyNDMsIDEwMzI0OSwgMTAzMjU0LCAxMDMyNjAsIDEwMzI2OCwgMTAzMjc2LCAxMDMyODIsIAotICAgIDEwMzI4OCwgMTAzMjk0LCAxMDMzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzMwNywgMTAzMzExLCAxMDMzMTUsIAotICAgIDEwMzMyMCwgMTAzMzI1LCAxMDMzMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMDE5MiwgMTAwMTk3LCAxMDAyMDIsIDEwMDIwNywgMTAwMjEyLCAxMDAyMTcsIDEwMDIyMiwgMTAwMjI3LCAxMDAyMzIsIAorICAgIDEwMDIzNywgMTAwMjQyLCAxMDAyNDcsIDEwMDI1MiwgMTAwMjU3LCAxMDAyNjIsIDEwMDI2NywgMTAwMjcyLCAxMDAyNzcsIAorICAgIDEwMDI4MiwgMCwgMTAwMjg3LCAxMDAyOTIsIDAsIDAsIDAsIDAsIDAsIDEwMDI5NywgMTAwMzAxLCAxMDAzMDUsIDEwMDMxMCwgCisgICAgMTAwMzE1LCAxMDAzMjEsIDEwMDMyNiwgMTAwMzMxLCAxMDAzMzYsIDEwMDM0MSwgMTAwMzQ2LCAxMDAzNTEsIDEwMDM1NiwgCisgICAgMTAwMzYxLCAxMDAzNjYsIDEwMDM3MSwgMTAwMzc2LCAxMDAzODEsIDEwMDM4NiwgMTAwMzkxLCAxMDAzOTYsIDEwMDQwMSwgCisgICAgMTAwNDA2LCAxMDA0MTEsIDEwMDQxNiwgMTAwNDIxLCAxMDA0MjYsIDEwMDQzMSwgMTAwNDM1LCAxMDA0NDAsIDEwMDQ0NSwgCisgICAgMTAwNDUxLCAxMDA0NTUsIDAsIDAsIDAsIDEwMDQ1OSwgMTAwNDY1LCAxMDA0NjksIDEwMDQ3NCwgMTAwNDc5LCAxMDA0ODQsIAorICAgIDEwMDQ4OCwgMTAwNDkzLCAxMDA0OTcsIDEwMDUwMiwgMTAwNTA3LCAxMDA1MTEsIDEwMDUxNiwgMTAwNTIxLCAxMDA1MjUsIAorICAgIDEwMDUyOSwgMTAwNTM0LCAxMDA1MzksIDEwMDU0MywgMTAwNTQ4LCAxMDA1NTMsIDEwMDU1OCwgMTAwNTYzLCAxMDA1NjgsIAorICAgIDEwMDU3MywgMTAwNTc4LCAxMDA1ODMsIDAsIDAsIDAsIDAsIDAsIDEwMDU4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwNTkzLCAxMDA1OTgsIDEwMDYwMywgMTAwNjA4LCAxMDA2MTMsIDEwMDYxOCwgCisgICAgMTAwNjI0LCAxMDA2MzAsIDEwMDYzNiwgMTAwNjQxLCAxMDA2NDYsIDEwMDY1MSwgMTAwNjU3LCAxMDA2NjMsIDEwMDY2OSwgCisgICAgMTAwNjc1LCAxMDA2ODEsIDEwMDY4NiwgMTAwNjkyLCAxMDA2OTgsIDEwMDcwNCwgMTAwNzEwLCAxMDA3MTYsIDEwMDcyMSwgCisgICAgMTAwNzI3LCAxMDA3MzMsIDEwMDczOSwgMTAwNzQ1LCAxMDA3NTEsIDEwMDc1NiwgMTAwNzYyLCAxMDA3NjgsIDEwMDc3NCwgCisgICAgMTAwNzc5LCAxMDA3ODQsIDEwMDc4OSwgMTAwNzk0LCAxMDA3OTksIDEwMDgwNSwgMTAwODExLCAxMDA4MTYsIDEwMDgyMSwgCisgICAgMTAwODI2LCAxMDA4MzIsIDEwMDgzOCwgMTAwODQzLCAxMDA4NDksIDEwMDg1NSwgMTAwODYxLCAxMDA4NjksIDEwMDg3NSwgCisgICAgMTAwODgwLCAxMDA4ODYsIDEwMDg5MiwgMTAwODk4LCAxMDA5MDMsIDAsIDAsIDAsIDAsIDEwMDkwOSwgMTAwOTE4LCAKKyAgICAxMDA5MjYsIDEwMDkzMywgMTAwOTQwLCAxMDA5NDUsIDEwMDk1MCwgMTAwOTU1LCAxMDA5NjAsIDEwMDk2NSwgMTAwOTcwLCAKKyAgICAxMDA5NzYsIDEwMDk4MSwgMTAwOTg3LCAxMDA5OTMsIDEwMDk5OSwgMTAxMDA1LCAxMDEwMTEsIDEwMTAxNywgMTAxMDIzLCAKKyAgICAwLCAwLCAxMDEwMjksIDEwMTAzNiwgMTAxMDQzLCAxMDEwNTAsIDEwMTA1OCwgMTAxMDY2LCAxMDEwNzQsIDEwMTA4MiwgCisgICAgMTAxMDkwLCAxMDEwOTgsIDEwMTEwNSwgMTAxMTEyLCAxMDExMTksIDEwMTEyNywgMTAxMTM1LCAxMDExNDMsIDEwMTE1MSwgCisgICAgMTAxMTU5LCAxMDExNjcsIDEwMTE3NSwgMTAxMTgzLCAxMDExOTEsIDEwMTE5OSwgMTAxMjA3LCAxMDEyMTUsIDEwMTIyMywgCisgICAgMTAxMjMxLCAxMDEyMzksIDEwMTI0OCwgMTAxMjU3LCAxMDEyNjYsIDEwMTI3NiwgMTAxMjg2LCAxMDEyOTYsIDEwMTMwNiwgCisgICAgMTAxMzE2LCAxMDEzMjYsIDEwMTMzNCwgMTAxMzQyLCAxMDEzNTAsIDEwMTM1OSwgMTAxMzY4LCAxMDEzNzcsIDEwMTM4NiwgCisgICAgMTAxMzk1LCAxMDE0MDQsIDEwMTQxMywgMTAxNDE3LCAxMDE0MjIsIDEwMTQyNywgMCwgMTAxNDMzLCAxMDE0MzgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwMTQ0MywgMTAxNDQ5LCAxMDE0NTYsIDEwMTQ2MSwgMTAxNDY2LCAxMDE0NzAsIDEwMTQ3NSwgMTAxNDgwLCAKKyAgICAwLCAxMDE0ODUsIDEwMTQ5MCwgMTAxNDk1LCAwLCAxMDE1MDAsIDEwMTUwNSwgMTAxNTEwLCAxMDE1MTUsIDEwMTUyMCwgCisgICAgMTAxNTI1LCAxMDE1MzAsIDEwMTUzNSwgMTAxNTQwLCAxMDE1NDUsIDEwMTU1MCwgMTAxNTU0LCAxMDE1NTgsIDEwMTU2MywgCisgICAgMTAxNTY4LCAxMDE1NzMsIDEwMTU3NywgMTAxNTgxLCAxMDE1ODYsIDEwMTU5MCwgMTAxNTk1LCAxMDE2MDAsIDEwMTYwNSwgCisgICAgMTAxNjEwLCAxMDE2MTUsIDEwMTYxOSwgMTAxNjI0LCAwLCAwLCAwLCAwLCAxMDE2MjksIDEwMTYzNSwgMTAxNjQwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDE2NDUsIDEwMTY0OSwgMTAxNjUzLCAxMDE2NTcsIDEwMTY2MSwgMTAxNjY1LCAxMDE2NzAsIDEwMTY3NSwgCisgICAgMTAxNjgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDE2ODcsIDEwMTY5MywgMTAxNzAwLCAxMDE3MDYsIDEwMTcxMywgCisgICAgMTAxNzE5LCAxMDE3MjUsIDEwMTczMSwgMTAxNzM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDE3NDQsIDEwMTc1MiwgCisgICAgMTAxNzYwLCAxMDE3NjgsIDEwMTc3NiwgMTAxNzg0LCAxMDE3OTIsIDEwMTgwMCwgMTAxODA4LCAxMDE4MTYsIDEwMTgyNCwgCisgICAgMTAxODMyLCAxMDE4NDAsIDEwMTg0OCwgMTAxODU2LCAxMDE4NjQsIDEwMTg3MiwgMTAxODgwLCAxMDE4ODgsIDEwMTg5NiwgCisgICAgMTAxOTA0LCAxMDE5MTIsIDEwMTkyMCwgMTAxOTI4LCAxMDE5MzYsIDEwMTk0NCwgMTAxOTUyLCAxMDE5NjAsIDEwMTk2OCwgCisgICAgMTAxOTc2LCAxMDE5ODMsIDEwMTk5MSwgMTAxOTk5LCAxMDIwMDYsIDEwMjAxMywgMTAyMDIwLCAxMDIwMjcsIDEwMjAzNCwgCisgICAgMTAyMDQxLCAxMDIwNDgsIDEwMjA1NSwgMTAyMDYyLCAxMDIwNjksIDEwMjA3NiwgMTAyMDgzLCAxMDIwOTAsIDEwMjA5NywgCisgICAgMTAyMTA0LCAxMDIxMTEsIDEwMjExOCwgMTAyMTI1LCAxMDIxMzIsIDEwMjEzOSwgMTAyMTQ2LCAxMDIxNTMsIDEwMjE2MCwgCisgICAgMTAyMTY3LCAxMDIxNzQsIDEwMjE4MSwgMTAyMTg4LCAxMDIxOTUsIDEwMjIwMiwgMTAyMjA4LCAxMDIyMTUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzMzNywgMTAzMzQxLCAxMDMzNDUsIDEwMzM0OSwgMTAzMzUzLCAxMDMzNTcsIAotICAgIDEwMzM2MSwgMTAzMzY2LCAxMDMzNzAsIDEwMzM3NSwgMTAzMzgwLCAxMDMzODUsIDEwMzM5MCwgMTAzMzk1LCAxMDM0MDAsIAotICAgIDEwMzQwNSwgMTAzNDEwLCAxMDM0MTUsIDEwMzQyMCwgMTAzNDI2LCAxMDM0MzIsIDEwMzQzOCwgMTAzNDQ1LCAxMDM0NTIsIAotICAgIDEwMzQ1OSwgMTAzNDY2LCAxMDM0NzMsIDEwMzQ4MCwgMTAzNDg3LCAxMDM0OTQsIDEwMzUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTAyMjIyLCAxMDIyMjcsIDEwMjIzMiwgMTAyMjM3LCAxMDIyNDIsIDEwMjI0NywgMTAyMjUyLCAKKyAgICAxMDIyNTcsIDEwMjI2MiwgMTAyMjY3LCAxMDIyNzIsIDEwMjI3NywgMTAyMjgyLCAxMDIyODcsIDEwMjI5MiwgMTAyMjk3LCAKKyAgICAxMDIzMDIsIDEwMjMwNywgMTAyMzEyLCAxMDIzMTcsIDEwMjMyMiwgMTAyMzI3LCAxMDIzMzIsIDEwMjMzNywgMTAyMzQyLCAKKyAgICAxMDIzNDcsIDEwMjM1MiwgMTAyMzU3LCAxMDIzNjIsIDEwMjM2NywgMTAyMzcyLCAxMDIzNzcsIDEwMjM4MiwgMTAyMzg3LCAKKyAgICAxMDIzOTIsIDEwMjM5NywgMTAyNDAyLCAxMDI0MDcsIDEwMjQxMywgMCwgMCwgMCwgMCwgMTAyNDE5LCAxMDI0MjMsIAorICAgIDEwMjQyNywgMTAyNDMyLCAxMDI0MzcsIDEwMjQ0MywgMTAyNDQ5LCAxMDI0NTUsIDEwMjQ2NSwgMTAyNDc0LCAxMDI0ODAsIAorICAgIDEwMjQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyNDk1LCAxMDI0OTksIDEwMjUwNCwgMTAyNTA5LCAKKyAgICAxMDI1MTQsIDEwMjUxOSwgMTAyNTI0LCAxMDI1MjksIDEwMjUzNCwgMTAyNTM4LCAxMDI1NDMsIDEwMjU0NywgMTAyNTUyLCAKKyAgICAxMDI1NTYsIDEwMjU2MSwgMTAyNTY1LCAxMDI1NzAsIDEwMjU3NSwgMTAyNTgwLCAxMDI1ODUsIDEwMjU5MCwgMTAyNTk1LCAKKyAgICAxMDI2MDAsIDEwMjYwNSwgMTAyNjEwLCAxMDI2MTUsIDEwMjYyMCwgMTAyNjI1LCAxMDI2MzAsIDEwMjYzNSwgMTAyNjQwLCAKKyAgICAxMDI2NDUsIDEwMjY1MCwgMTAyNjU1LCAxMDI2NjAsIDEwMjY2NSwgMTAyNjcwLCAxMDI2NzUsIDEwMjY4MCwgMTAyNjg1LCAKKyAgICAxMDI2OTAsIDEwMjY5NSwgMTAyNzAwLCAxMDI3MDUsIDEwMjcxMCwgMTAyNzE1LCAxMDI3MjAsIDEwMjcyNSwgMTAyNzMwLCAKKyAgICAxMDI3MzUsIDEwMjc0MCwgMTAyNzQ1LCAxMDI3NTAsIDEwMjc1NSwgMCwgMCwgMCwgMTAyNzYwLCAxMDI3NjUsIDEwMjc3NCwgCisgICAgMTAyNzgyLCAxMDI3OTEsIDEwMjgwMCwgMTAyODExLCAxMDI4MjIsIDEwMjgyOSwgMTAyODM2LCAxMDI4NDMsIDEwMjg1MCwgCisgICAgMTAyODU3LCAxMDI4NjQsIDEwMjg3MSwgMTAyODc4LCAxMDI4ODUsIDEwMjg5MiwgMTAyODk5LCAxMDI5MDYsIDEwMjkxMywgCisgICAgMTAyOTIwLCAxMDI5MjcsIDEwMjkzNCwgMTAyOTQxLCAxMDI5NDgsIDEwMjk1NSwgMTAyOTYyLCAxMDI5NjksIDAsIDAsIAorICAgIDEwMjk3NiwgMTAyOTgyLCAxMDI5ODgsIDEwMjk5NCwgMTAzMDAwLCAxMDMwMDcsIDEwMzAxNCwgMTAzMDIyLCAxMDMwMzAsIAorICAgIDEwMzAzNywgMTAzMDQ0LCAxMDMwNTEsIDEwMzA1OCwgMTAzMDY1LCAxMDMwNzIsIDEwMzA3OSwgMTAzMDg2LCAxMDMwOTMsIAorICAgIDEwMzEwMCwgMTAzMTA3LCAxMDMxMTQsIDEwMzEyMSwgMTAzMTI4LCAxMDMxMzUsIDEwMzE0MiwgMTAzMTQ5LCAxMDMxNTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEwMzE2MywgMTAzMTY5LCAxMDMxNzUsIDEwMzE4MSwgMTAzMTg3LCAxMDMxOTQsIDEwMzIwMSwgCisgICAgMTAzMjA5LCAxMDMyMTcsIDEwMzIyNCwgMTAzMjMxLCAxMDMyMzgsIDEwMzI0NSwgMTAzMjUyLCAxMDMyNTksIDEwMzI2NiwgCisgICAgMTAzMjczLCAxMDMyODAsIDEwMzI4NywgMTAzMjk0LCAxMDMzMDEsIDEwMzMwOCwgMTAzMzE1LCAxMDMzMjIsIDEwMzMyOSwgCisgICAgMTAzMzM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzNDMsIDEwMzM1MCwgMTAzMzU5LCAxMDMzNjksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzM3OSwgMTAzMzg1LCAxMDMzOTEsIDEwMzM5NywgMTAzNDAzLCAxMDM0MTAsIAorICAgIDEwMzQxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzNDI1LCAxMDM0MzIsIDEwMzQzOSwgMTAzNDQ3LCAxMDM0NTQsIAorICAgIDEwMzQ2MSwgMTAzNDY4LCAxMDM0NzUsIDEwMzQ4MywgMTAzNDkxLCAxMDM0OTksIDEwMzUwNywgMTAzNTE1LCAxMDM1MjMsIAorICAgIDEwMzUzMSwgMTAzNTM5LCAxMDM1NDcsIDEwMzU1NSwgMTAzNTYzLCAxMDM1NzEsIDEwMzU3OSwgMTAzNTg3LCAxMDM1OTUsIAorICAgIDEwMzYwMywgMTAzNjExLCAxMDM2MTksIDEwMzYyNywgMTAzNjM1LCAxMDM2NDMsIDEwMzY1MSwgMTAzNjU5LCAxMDM2NjcsIAorICAgIDEwMzY3NSwgMTAzNjgzLCAxMDM2OTEsIDEwMzY5OSwgMTAzNzA3LCAxMDM3MTUsIDEwMzcyMywgMTAzNzMxLCAxMDM3MzksIAorICAgIDEwMzc0NywgMTAzNzU1LCAxMDM3NjMsIDEwMzc3MSwgMTAzNzc5LCAxMDM3ODcsIDEwMzc5NSwgMTAzODAzLCAxMDM4MTEsIAorICAgIDEwMzgxOSwgMTAzODI3LCAxMDM4MzUsIDEwMzg0MywgMTAzODUxLCAxMDM4NTksIDEwMzg2NywgMTAzODc1LCAxMDM4ODMsIAorICAgIDEwMzg5MSwgMTAzODk5LCAxMDM5MDcsIDEwMzkxNSwgMTAzOTIzLCAxMDM5MzEsIDEwMzkzOSwgMTAzOTQ3LCAxMDM5NTUsIAorICAgIDEwMzk2MywgMTAzOTcxLCAxMDM5NzksIDEwMzk4NywgMTAzOTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQwMDMsIAorICAgIDEwNDAwOCwgMTA0MDE0LCAxMDQwMjAsIDEwNDAyNiwgMTA0MDMyLCAxMDQwMzgsIDEwNDA0NCwgMTA0MDUwLCAxMDQwNTYsIAorICAgIDEwNDA2MSwgMTA0MDY4LCAxMDQwNzQsIDEwNDA4MCwgMTA0MDg2LCAxMDQwOTIsIDEwNDA5OCwgMTA0MTAzLCAxMDQxMDksIAorICAgIDEwNDExNSwgMTA0MTIxLCAxMDQxMjcsIDEwNDEzMywgMTA0MTM5LCAxMDQxNDUsIDEwNDE1MSwgMTA0MTU3LCAxMDQxNjMsIAorICAgIDEwNDE2OCwgMTA0MTc0LCAxMDQxODIsIDEwNDE5MCwgMTA0MTk2LCAxMDQyMDIsIDEwNDIwOCwgMTA0MjE0LCAxMDQyMjIsIAorICAgIDEwNDIyOCwgMTA0MjM0LCAxMDQyNDAsIDEwNDI0NiwgMTA0MjUyLCAxMDQyNTgsIDEwNDI2MywgMTA0MjY5LCAxMDQyNzcsIAorICAgIDEwNDI4NSwgMTA0MjkxLCAxMDQyOTcsIDEwNDMwMywgMTA0MzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDQzMTYsIDEwNDMyMSwgMTA0MzI3LCAxMDQzMzMsIDEwNDMzOSwgMTA0MzQ1LCAxMDQzNTEsIDEwNDM1NywgCisgICAgMTA0MzYzLCAxMDQzNjksIDEwNDM3NCwgMTA0MzgxLCAxMDQzODcsIDEwNDM5MywgMTA0Mzk5LCAxMDQ0MDUsIDEwNDQxMSwgCisgICAgMTA0NDE2LCAxMDQ0MjIsIDEwNDQyOCwgMTA0NDM0LCAxMDQ0NDAsIDEwNDQ0NiwgMTA0NDUyLCAxMDQ0NTgsIDEwNDQ2NCwgCisgICAgMTA0NDcwLCAxMDQ0NzYsIDEwNDQ4MSwgMTA0NDg3LCAxMDQ0OTUsIDEwNDUwMywgMTA0NTA5LCAxMDQ1MTUsIDEwNDUyMSwgCisgICAgMTA0NTI3LCAxMDQ1MzUsIDEwNDU0MSwgMTA0NTQ3LCAxMDQ1NTMsIDEwNDU1OSwgMTA0NTY1LCAxMDQ1NzEsIDEwNDU3NiwgCisgICAgMTA0NTgyLCAxMDQ1OTAsIDEwNDU5OCwgMTA0NjA0LCAxMDQ2MTAsIDEwNDYxNiwgMTA0NjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMDQ2MjksIDEwNDYzMywgMTA0NjM3LCAxMDQ2NDIsIDEwNDY0NywgMTA0NjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMDM1MDgsIDEwMzUxMiwgMTAzNTE2LCAxMDM1MjAsIDEwMzUyNCwgMTAzNTI4LCAxMDM1MzEsIDEwMzUzNSwgCi0gICAgMTAzNTM4LCAxMDM1NDIsIDEwMzU0NSwgMTAzNTQ5LCAxMDM1NTMsIDEwMzU1OCwgMTAzNTYyLCAxMDM1NjcsIDEwMzU3MCwgCi0gICAgMTAzNTc0LCAxMDM1NzcsIDEwMzU4MSwgMTAzNTg0LCAxMDM1ODgsIDEwMzU5MiwgMTAzNTk2LCAxMDM2MDAsIDEwMzYwNCwgCi0gICAgMTAzNjA4LCAxMDM2MTIsIDEwMzYxNiwgMTAzNjIwLCAxMDM2MjQsIDEwMzYyOCwgMTAzNjMyLCAxMDM2MzYsIDEwMzY0MCwgCi0gICAgMTAzNjQ0LCAxMDM2NDgsIDEwMzY1MiwgMTAzNjU2LCAxMDM2NjAsIDEwMzY2MywgMTAzNjY3LCAxMDM2NzEsIDEwMzY3NSwgCi0gICAgMTAzNjc4LCAxMDM2ODEsIDEwMzY4NSwgMTAzNjg5LCAxMDM2OTMsIDEwMzY5NywgMTAzNzAxLCAxMDM3MDUsIDEwMzcwOCwgCi0gICAgMTAzNzEyLCAxMDM3MTgsIDEwMzcyNCwgMTAzNzMwLCAxMDM3MzUsIDEwMzc0MiwgMTAzNzQ2LCAxMDM3NTEsIDEwMzc1NSwgCi0gICAgMTAzNzYwLCAxMDM3NjUsIDEwMzc3MSwgMTAzNzc2LCAxMDM3ODIsIDEwMzc4NiwgMTAzNzkxLCAxMDM3OTUsIDEwMzgwMCwgCi0gICAgMTAzODAzLCAxMDM4MDYsIDEwMzgxMCwgMTAzODE1LCAxMDM4MjEsIDEwMzgyNiwgMTAzODMyLCAwLCAwLCAwLCAwLCAKLSAgICAxMDM4MzcsIDEwMzg0MCwgMTAzODQzLCAxMDM4NDYsIDEwMzg0OSwgMTAzODUyLCAxMDM4NTUsIDEwMzg1OSwgMTAzODYyLCAKLSAgICAxMDM4NjYsIDEwMzg3MCwgMTAzODc0LCAxMDM4NzgsIDEwMzg4MiwgMTAzODg2LCAxMDM4OTAsIDEwMzg5NCwgMTAzODk4LCAKLSAgICAxMDM5MDIsIDEwMzkwNywgMTAzOTEyLCAxMDM5MTYsIDEwMzkxOSwgMTAzOTIyLCAxMDM5MjUsIDEwMzkyOCwgMTAzOTMxLCAKLSAgICAxMDM5MzQsIDEwMzkzOCwgMTAzOTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDM5NDUsIDEwMzk0OSwgMTAzOTU0LCAxMDM5NTksIDEwMzk2NCwgMTAzOTY4LCAxMDM5NzMsIDEwMzk3NywgMTAzOTgyLCAKLSAgICAxMDM5ODYsIDEwMzk5MSwgMTAzOTk1LCAxMDQwMDAsIDEwNDAwNCwgMTA0MDA5LCAxMDQwMTMsIDEwNDAxOCwgMTA0MDIzLCAKLSAgICAxMDQwMjgsIDEwNDAzMywgMTA0MDM4LCAxMDQwNDMsIDEwNDA0OCwgMTA0MDUzLCAxMDQwNTgsIDEwNDA2MywgMTA0MDY4LCAKLSAgICAxMDQwNzMsIDEwNDA3OCwgMTA0MDgzLCAxMDQwODgsIDEwNDA5MywgMTA0MDk4LCAxMDQxMDMsIDEwNDEwOCwgMTA0MTEzLCAKLSAgICAxMDQxMTgsIDEwNDEyMiwgMTA0MTI3LCAxMDQxMzIsIDEwNDEzNywgMTA0MTQxLCAxMDQxNDUsIDEwNDE1MCwgMTA0MTU1LCAKLSAgICAxMDQxNjAsIDEwNDE2NSwgMTA0MTcwLCAxMDQxNzUsIDEwNDE3OSwgMTA0MTg1LCAxMDQxOTAsIDEwNDE5NiwgMTA0MjAxLCAKLSAgICAxMDQyMDcsIDEwNDIxMiwgMTA0MjE4LCAxMDQyMjMsIDEwNDIyOSwgMTA0MjM0LCAxMDQyMzksIDEwNDI0NCwgMTA0MjQ5LCAKLSAgICAxMDQyNTMsIDEwNDI1OCwgMTA0MjY0LCAxMDQyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDI3MywgMTA0MjgwLCAxMDQyODcsIDEwNDI5NCwgMTA0MzAxLCAxMDQzMDgsIDEwNDMxNSwgMTA0MzIyLCAxMDQzMjksIAotICAgIDEwNDMzNiwgMTA0MzQzLCAxMDQzNTAsIDEwNDM1NywgMTA0MzY0LCAxMDQzNzEsIDEwNDM3OCwgMTA0Mzg1LCAxMDQzOTIsIAotICAgIDEwNDM5OSwgMTA0NDA2LCAxMDQ0MTMsIDEwNDQyMCwgMTA0NDI3LCAxMDQ0MzQsIDEwNDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA0NDQ4LCAxMDQ0NTUsIDEwNDQ2MSwgMTA0NDY3LCAxMDQ0NzMsIDEwNDQ3OSwgMTA0NDg1LCAxMDQ0OTEsIAotICAgIDEwNDQ5OCwgMTA0NTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1MTEsIDEwNDUxNiwgMTA0NTIxLCAxMDQ1MjYsIDEwNDUzMSwgCi0gICAgMTA0NTM1LCAxMDQ1MzksIDEwNDU0MywgMTA0NTQ4LCAxMDQ1NTMsIDEwNDU1OCwgMTA0NTYzLCAxMDQ1NjgsIDEwNDU3MywgCi0gICAgMTA0NTc4LCAxMDQ1ODMsIDEwNDU4OCwgMTA0NTkzLCAxMDQ1OTgsIDEwNDYwMywgMTA0NjA4LCAxMDQ2MTMsIDEwNDYxOCwgCi0gICAgMTA0NjIzLCAxMDQ2MjgsIDEwNDYzMywgMTA0NjM4LCAxMDQ2NDMsIDEwNDY0OCwgMTA0NjUzLCAxMDQ2NTgsIDEwNDY2MywgCi0gICAgMTA0NjY4LCAxMDQ2NzMsIDEwNDY3OCwgMTA0NjgzLCAxMDQ2ODgsIDEwNDY5MywgMTA0Njk4LCAxMDQ3MDMsIDEwNDcwOCwgCi0gICAgMTA0NzEzLCAxMDQ3MTksIDEwNDcyNCwgMTA0NzMwLCAxMDQ3MzUsIDEwNDc0MSwgMTA0NzQ2LCAxMDQ3NTIsIDEwNDc1OCwgCi0gICAgMTA0NzYyLCAxMDQ3NjcsIDEwNDc3MSwgMCwgMTA0Nzc1LCAxMDQ3ODAsIDEwNDc4NCwgMTA0Nzg4LCAxMDQ3OTIsIAotICAgIDEwNDc5NiwgMTA0ODAwLCAxMDQ4MDQsIDEwNDgwOSwgMTA0ODEzLCAxMDQ4MTgsIDEwNDgyMywgMTA0ODI3LCAxMDQ4MzIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDgzNywgMTA0ODQxLCAxMDQ4NDUsIDEwNDg0OSwgCi0gICAgMTA0ODUzLCAxMDQ4NTcsIDEwNDg2MSwgMTA0ODY2LCAxMDQ4NzEsIDEwNDg3NiwgMTA0ODgxLCAxMDQ4ODYsIDEwNDg5MSwgCi0gICAgMTA0ODk2LCAxMDQ5MDEsIDEwNDkwNiwgMTA0OTExLCAxMDQ5MTYsIDEwNDkyMSwgMTA0OTI2LCAxMDQ5MzEsIDEwNDkzNiwgCi0gICAgMTA0OTQxLCAxMDQ5NDYsIDEwNDk1MSwgMTA0OTU1LCAxMDQ5NjAsIDEwNDk2NSwgMTA0OTcwLCAxMDQ5NzQsIDEwNDk3OSwgCi0gICAgMTA0OTg0LCAxMDQ5ODksIDEwNDk5NCwgMTA0OTk4LCAxMDUwMDMsIDEwNTAwOCwgMTA1MDEzLCAxMDUwMTgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTAyMywgMTA1MDI3LCAxMDUwMzEsIDEwNTAzNSwgMTA1MDM4LCAxMDUwNDIsIDEwNTA0NSwgCi0gICAgMTA1MDQ5LCAxMDUwNTIsIDEwNTA1NiwgMTA1MDYwLCAxMDUwNjUsIDEwNTA2OSwgMTA1MDc0LCAxMDUwNzcsIDEwNTA4MSwgCi0gICAgMTA1MDg0LCAxMDUwODgsIDEwNTA5MSwgMTA1MDk1LCAxMDUwOTksIDEwNTEwMywgMTA1MTA3LCAxMDUxMTEsIDEwNTExNSwgCi0gICAgMTA1MTE5LCAxMDUxMjMsIDEwNTEyNywgMTA1MTMxLCAxMDUxMzUsIDEwNTEzOSwgMTA1MTQzLCAxMDUxNDcsIDEwNTE1MSwgCi0gICAgMTA1MTU1LCAxMDUxNTksIDEwNTE2MywgMTA1MTY3LCAxMDUxNzAsIDEwNTE3NCwgMTA1MTc4LCAxMDUxODIsIDEwNTE4NSwgCi0gICAgMTA1MTg4LCAxMDUxOTIsIDEwNTE5NiwgMTA1MjAwLCAxMDUyMDQsIDEwNTIwOCwgMTA1MjEyLCAxMDUyMTYsIDEwNTIxOSwgCi0gICAgMTA1MjI0LCAxMDUyMjgsIDEwNTIzMywgMTA1MjM3LCAxMDUyNDIsIDEwNTI0NywgMTA1MjUzLCAxMDUyNTgsIDEwNTI2NCwgCi0gICAgMTA1MjY4LCAxMDUyNzMsIDEwNTI3NywgMTA1MjgyLCAxMDUyODYsIDEwNTI5MCwgMTA1Mjk0LCAxMDUyOTgsIDEwNTMwMSwgCi0gICAgMTA1MzA0LCAxMDUzMDgsIDEwNTMxMiwgMTA1MzE1LCAxMDUzMTksIDEwNTMyMywgMTA1MzI3LCAxMDUzMzQsIDAsIDAsIAotICAgIDEwNTMzOCwgMTA1MzQyLCAxMDUzNDUsIDEwNTM0OCwgMTA1MzUxLCAxMDUzNTQsIDEwNTM1NywgMTA1MzYwLCAxMDUzNjQsIAotICAgIDEwNTM2NywgMTA1MzcxLCAxMDUzNzQsIDEwNTM3OCwgMTA1MzgxLCAxMDUzODUsIDEwNTM5MCwgMCwgMTA1Mzk1LCAKLSAgICAxMDU0MDAsIDEwNTQwNSwgMTA1NDEwLCAxMDU0MTUsIDEwNTQyMCwgMTA1NDI1LCAxMDU0MzEsIDEwNTQzNiwgMTA1NDQyLCAKLSAgICAxMDU0NDgsIDEwNTQ1NCwgMTA1NDYwLCAxMDU0NjYsIDEwNTQ3MiwgMTA1NDc4LCAxMDU0ODQsIDEwNTQ5MCwgMTA1NDk2LCAKLSAgICAxMDU1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTUxMCwgMTA1NTE0LCAxMDU1MTksIDEwNTUyMywgCi0gICAgMTA1NTI3LCAxMDU1MzEsIDEwNTUzNiwgMTA1NTQwLCAxMDU1NDUsIDEwNTU0OSwgMTA1NTU0LCAxMDU1NTksIDEwNTU2NCwgCi0gICAgMTA1NTY5LCAxMDU1NzQsIDEwNTU3OSwgMTA1NTg0LCAxMDU1ODksIDAsIDEwNTU5NCwgMTA1NTk5LCAxMDU2MDQsIAotICAgIDEwNTYwOSwgMTA1NjE0LCAxMDU2MTksIDEwNTYyNCwgMTA1NjI5LCAxMDU2MzQsIDEwNTYzOSwgMTA1NjQ0LCAxMDU2NDksIAotICAgIDEwNTY1NCwgMTA1NjU4LCAxMDU2NjMsIDEwNTY2OCwgMTA1NjczLCAxMDU2NzgsIDEwNTY4MiwgMTA1Njg2LCAxMDU2OTEsIAotICAgIDEwNTY5NiwgMTA1NzAxLCAxMDU3MDYsIDEwNTcxMCwgMTA1NzE1LCAxMDU3MjEsIDEwNTcyNiwgMTA1NzMyLCAxMDU3MzcsIAotICAgIDEwNTc0MiwgMTA1NzQ4LCAxMDU3NTMsIDEwNTc1OSwgMTA1NzY0LCAxMDU3NjksIDEwNTc3NCwgMTA1Nzc5LCAxMDU3ODMsIAotICAgIDEwNTc4OCwgMTA1Nzk0LCAxMDU3OTksIDEwNTgwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NjU5LCAxMDQ2NjMsIAorICAgIDEwNDY2NywgMTA0NjcxLCAxMDQ2NzUsIDEwNDY3OSwgMTA0NjgzLCAxMDQ2ODgsIDEwNDY5MiwgMTA0Njk3LCAxMDQ3MDIsIAorICAgIDEwNDcwNywgMTA0NzEyLCAxMDQ3MTcsIDEwNDcyMiwgMTA0NzI3LCAxMDQ3MzIsIDEwNDczNywgMTA0NzQyLCAxMDQ3NDgsIAorICAgIDEwNDc1NCwgMTA0NzYwLCAxMDQ3NjcsIDEwNDc3NCwgMTA0NzgxLCAxMDQ3ODgsIDEwNDc5NSwgMTA0ODAyLCAxMDQ4MDksIAorICAgIDEwNDgxNiwgMTA0ODIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDU4MTAsIDEwNTgxNCwgMTA1ODE4LCAxMDU4MjIsIDEwNTgyNiwgMTA1ODMwLCAxMDU4MzUsIDAsIAotICAgIDEwNTg0MCwgMCwgMTA1ODQ1LCAxMDU4NTAsIDEwNTg1NSwgMTA1ODYwLCAwLCAxMDU4NjUsIDEwNTg3MCwgMTA1ODc1LCAKLSAgICAxMDU4ODAsIDEwNTg4NSwgMTA1ODkwLCAxMDU4OTUsIDEwNTkwMCwgMTA1OTA1LCAxMDU5MTAsIDEwNTkxNSwgMTA1OTIwLCAKLSAgICAxMDU5MjUsIDEwNTkyOSwgMTA1OTM0LCAwLCAxMDU5MzksIDEwNTk0NCwgMTA1OTQ4LCAxMDU5NTIsIDEwNTk1NywgCi0gICAgMTA1OTYyLCAxMDU5NjcsIDEwNTk3MiwgMTA1OTc2LCAxMDU5ODEsIDEwNTk4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1OTkxLCAKLSAgICAxMDU5OTUsIDEwNjAwMCwgMTA2MDA0LCAxMDYwMDksIDEwNjAxMywgMTA2MDE4LCAxMDYwMjIsIDEwNjAyNywgMTA2MDMxLCAKLSAgICAxMDYwMzYsIDEwNjA0MCwgMTA2MDQ1LCAxMDYwNTAsIDEwNjA1NSwgMTA2MDYwLCAxMDYwNjUsIDEwNjA3MCwgMTA2MDc1LCAKLSAgICAxMDYwODAsIDEwNjA4NSwgMTA2MDkwLCAxMDYwOTUsIDEwNjEwMCwgMTA2MTA1LCAxMDYxMTAsIDEwNjExNSwgMTA2MTIwLCAKLSAgICAxMDYxMjUsIDEwNjEzMCwgMTA2MTM1LCAxMDYxNDAsIDEwNjE0NSwgMTA2MTUwLCAxMDYxNTUsIDEwNjE1OSwgMTA2MTY0LCAKLSAgICAxMDYxNjksIDEwNjE3NCwgMTA2MTc5LCAxMDYxODMsIDEwNjE4NywgMTA2MTkyLCAxMDYxOTcsIDEwNjIwMiwgMTA2MjA3LCAKLSAgICAxMDYyMTIsIDEwNjIxNiwgMTA2MjIxLCAxMDYyMjcsIDEwNjIzMiwgMTA2MjM4LCAxMDYyNDMsIDEwNjI0OSwgMTA2MjU0LCAKLSAgICAxMDYyNjAsIDEwNjI2NSwgMTA2MjcxLCAxMDYyNzYsIDAsIDAsIDAsIDAsIDAsIDEwNjI4MSwgMTA2Mjg2LCAxMDYyOTAsIAotICAgIDEwNjI5NCwgMTA2Mjk4LCAxMDYzMDIsIDEwNjMwNiwgMTA2MzEwLCAxMDYzMTUsIDEwNjMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA2MzI0LCAxMDYzMzEsIDEwNjMzNiwgMTA2MzQxLCAwLCAxMDYzNDYsIDEwNjM1MCwgMTA2MzU1LCAxMDYzNTksIAotICAgIDEwNjM2NCwgMTA2MzY4LCAxMDYzNzMsIDEwNjM3OCwgMCwgMCwgMTA2MzgzLCAxMDYzODgsIDAsIDAsIDEwNjM5MywgCi0gICAgMTA2Mzk4LCAxMDY0MDMsIDEwNjQwNywgMTA2NDEyLCAxMDY0MTcsIDEwNjQyMiwgMTA2NDI3LCAxMDY0MzIsIDEwNjQzNywgCi0gICAgMTA2NDQyLCAxMDY0NDcsIDEwNjQ1MiwgMTA2NDU3LCAxMDY0NjIsIDEwNjQ2NywgMTA2NDcyLCAxMDY0NzcsIDEwNjQ4MiwgCi0gICAgMTA2NDg3LCAxMDY0OTIsIDEwNjQ5NywgMCwgMTA2NTAyLCAxMDY1MDYsIDEwNjUxMSwgMTA2NTE2LCAxMDY1MjEsIAotICAgIDEwNjUyNSwgMTA2NTI5LCAwLCAxMDY1MzQsIDEwNjUzOSwgMCwgMTA2NTQ0LCAxMDY1NDksIDEwNjU1NCwgMTA2NTU5LCAKLSAgICAxMDY1NjQsIDAsIDAsIDEwNjU2OCwgMTA2NTczLCAxMDY1NzgsIDEwNjU4NCwgMTA2NTg5LCAxMDY1OTUsIDEwNjYwMCwgCi0gICAgMTA2NjA2LCAxMDY2MTIsIDAsIDAsIDEwNjYxOSwgMTA2NjI1LCAwLCAwLCAxMDY2MzEsIDEwNjYzNywgMTA2NjQzLCAwLCAwLCAKLSAgICAxMDY2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNjY1MiwgMCwgMCwgMCwgMCwgMCwgMTA2NjU5LCAxMDY2NjQsIDEwNjY3MSwgCi0gICAgMTA2Njc5LCAxMDY2ODUsIDEwNjY5MSwgMTA2Njk3LCAwLCAwLCAxMDY3MDQsIDEwNjcxMCwgMTA2NzE1LCAxMDY3MjAsIAotICAgIDEwNjcyNSwgMTA2NzMwLCAxMDY3MzUsIDAsIDAsIDAsIDEwNjc0MCwgMTA2NzQ1LCAxMDY3NTAsIDEwNjc1NiwgMTA2NzYyLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ4MzAsIDEwNDgzNCwgMTA0ODM4LCAxMDQ4NDIsIAorICAgIDEwNDg0NiwgMTA0ODUwLCAxMDQ4NTMsIDEwNDg1NywgMTA0ODYwLCAxMDQ4NjQsIDEwNDg2NywgMTA0ODcxLCAxMDQ4NzUsIAorICAgIDEwNDg4MCwgMTA0ODg0LCAxMDQ4ODksIDEwNDg5MiwgMTA0ODk2LCAxMDQ4OTksIDEwNDkwMywgMTA0OTA2LCAxMDQ5MTAsIAorICAgIDEwNDkxNCwgMTA0OTE4LCAxMDQ5MjIsIDEwNDkyNiwgMTA0OTMwLCAxMDQ5MzQsIDEwNDkzOCwgMTA0OTQyLCAxMDQ5NDYsIAorICAgIDEwNDk1MCwgMTA0OTU0LCAxMDQ5NTgsIDEwNDk2MiwgMTA0OTY2LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc4LCAxMDQ5ODEsIAorICAgIDEwNDk4NCwgMTA0OTg4LCAxMDQ5OTIsIDEwNDk5NiwgMTA0OTk5LCAxMDUwMDIsIDEwNTAwNiwgMTA1MDA5LCAxMDUwMTMsIAorICAgIDEwNTAxNywgMTA1MDIxLCAxMDUwMjUsIDEwNTAyOCwgMTA1MDMyLCAxMDUwMzgsIDEwNTA0NCwgMTA1MDUwLCAxMDUwNTUsIAorICAgIDEwNTA2MiwgMTA1MDY2LCAxMDUwNzEsIDEwNTA3NSwgMTA1MDgwLCAxMDUwODUsIDEwNTA5MSwgMTA1MDk2LCAxMDUxMDIsIAorICAgIDEwNTEwNiwgMTA1MTExLCAxMDUxMTUsIDEwNTEyMCwgMTA1MTIzLCAxMDUxMjYsIDEwNTEzMCwgMTA1MTM1LCAxMDUxNDEsIAorICAgIDEwNTE0NiwgMTA1MTUyLCAwLCAwLCAwLCAwLCAxMDUxNTcsIDEwNTE2MCwgMTA1MTYzLCAxMDUxNjYsIDEwNTE2OSwgCisgICAgMTA1MTcyLCAxMDUxNzUsIDEwNTE3OSwgMTA1MTgyLCAxMDUxODYsIDEwNTE5MCwgMTA1MTk0LCAxMDUxOTgsIDEwNTIwMiwgCisgICAgMTA1MjA2LCAxMDUyMTAsIDEwNTIxNCwgMTA1MjE4LCAxMDUyMjIsIDEwNTIyNywgMTA1MjMyLCAxMDUyMzYsIDEwNTIzOSwgCisgICAgMTA1MjQyLCAxMDUyNDUsIDEwNTI0OCwgMTA1MjUxLCAxMDUyNTQsIDEwNTI1OCwgMTA1MjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUyNjUsIDEwNTI2OSwgMTA1Mjc0LCAxMDUyNzksIDEwNTI4NCwgCisgICAgMTA1Mjg4LCAxMDUyOTMsIDEwNTI5NywgMTA1MzAyLCAxMDUzMDYsIDEwNTMxMSwgMTA1MzE1LCAxMDUzMjAsIDEwNTMyNCwgCisgICAgMTA1MzI5LCAxMDUzMzMsIDEwNTMzOCwgMTA1MzQzLCAxMDUzNDgsIDEwNTM1MywgMTA1MzU4LCAxMDUzNjMsIDEwNTM2OCwgCisgICAgMTA1MzczLCAxMDUzNzgsIDEwNTM4MywgMTA1Mzg4LCAxMDUzOTMsIDEwNTM5OCwgMTA1NDAzLCAxMDU0MDgsIDEwNTQxMywgCisgICAgMTA1NDE4LCAxMDU0MjMsIDEwNTQyOCwgMTA1NDMzLCAxMDU0MzcsIDEwNTQ0MSwgMTA1NDQ2LCAxMDU0NTEsIDEwNTQ1NiwgCisgICAgMTA1NDYwLCAxMDU0NjQsIDEwNTQ2OSwgMTA1NDczLCAxMDU0NzgsIDEwNTQ4MywgMTA1NDg4LCAxMDU0OTMsIDEwNTQ5NywgCisgICAgMTA1NTAzLCAxMDU1MDgsIDEwNTUxNCwgMTA1NTE5LCAxMDU1MjUsIDEwNTUzMCwgMTA1NTM2LCAxMDU1NDEsIDEwNTU0NywgCisgICAgMTA1NTUyLCAxMDU1NTcsIDEwNTU2MiwgMTA1NTY3LCAxMDU1NzEsIDEwNTU3NiwgMTA1NTgyLCAxMDU1ODYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTU5MSwgMTA1NTk4LCAxMDU2MDUsIDEwNTYxMiwgMTA1NjE5LCAKKyAgICAxMDU2MjYsIDEwNTYzMywgMTA1NjQwLCAxMDU2NDcsIDEwNTY1NCwgMTA1NjYxLCAxMDU2NjgsIDEwNTY3NSwgMTA1NjgyLCAKKyAgICAxMDU2ODksIDEwNTY5NiwgMTA1NzAzLCAxMDU3MTAsIDEwNTcxNywgMTA1NzI0LCAxMDU3MzEsIDEwNTczOCwgMTA1NzQ1LCAKKyAgICAxMDU3NTIsIDEwNTc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1NzY2LCAxMDU3NzMsIDEwNTc3OSwgMTA1Nzg1LCAKKyAgICAxMDU3OTEsIDEwNTc5NywgMTA1ODAzLCAxMDU4MDksIDEwNTgxNiwgMTA1ODIyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU4MjksIAorICAgIDEwNTgzNCwgMTA1ODM5LCAxMDU4NDQsIDEwNTg0OSwgMTA1ODUzLCAxMDU4NTcsIDEwNTg2MSwgMTA1ODY2LCAxMDU4NzEsIAorICAgIDEwNTg3NiwgMTA1ODgxLCAxMDU4ODYsIDEwNTg5MSwgMTA1ODk2LCAxMDU5MDEsIDEwNTkwNiwgMTA1OTExLCAxMDU5MTYsIAorICAgIDEwNTkyMSwgMTA1OTI2LCAxMDU5MzEsIDEwNTkzNiwgMTA1OTQxLCAxMDU5NDYsIDEwNTk1MSwgMTA1OTU2LCAxMDU5NjEsIAorICAgIDEwNTk2NiwgMTA1OTcxLCAxMDU5NzYsIDEwNTk4MSwgMTA1OTg2LCAxMDU5OTEsIDEwNTk5NiwgMTA2MDAxLCAxMDYwMDYsIAorICAgIDEwNjAxMSwgMTA2MDE2LCAxMDYwMjEsIDEwNjAyNiwgMTA2MDMxLCAxMDYwMzcsIDEwNjA0MiwgMTA2MDQ4LCAxMDYwNTMsIAorICAgIDEwNjA1OSwgMTA2MDY0LCAxMDYwNzAsIDEwNjA3NiwgMTA2MDgwLCAxMDYwODUsIDEwNjA4OSwgMCwgMTA2MDkzLCAKKyAgICAxMDYwOTgsIDEwNjEwMiwgMTA2MTA2LCAxMDYxMTAsIDEwNjExNCwgMTA2MTE4LCAxMDYxMjIsIDEwNjEyNywgMTA2MTMxLCAKKyAgICAxMDYxMzYsIDEwNjE0MSwgMTA2MTQ1LCAxMDYxNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNjE1NSwgMTA2MTU5LCAxMDYxNjMsIDEwNjE2NywgMTA2MTcxLCAxMDYxNzUsIDEwNjE3OSwgMTA2MTg0LCAxMDYxODksIAorICAgIDEwNjE5NCwgMTA2MTk5LCAxMDYyMDQsIDEwNjIwOSwgMTA2MjE0LCAxMDYyMTksIDEwNjIyNCwgMTA2MjI5LCAxMDYyMzQsIAorICAgIDEwNjIzOSwgMTA2MjQ0LCAxMDYyNDksIDEwNjI1NCwgMTA2MjU5LCAxMDYyNjQsIDEwNjI2OCwgMTA2MjcyLCAxMDYyNzcsIAorICAgIDEwNjI4MiwgMTA2Mjg3LCAxMDYyOTEsIDEwNjI5NiwgMTA2MzAwLCAxMDYzMDUsIDEwNjMxMCwgMTA2MzE0LCAxMDYzMTksIAorICAgIDEwNjMyNCwgMTA2MzI5LCAxMDYzMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNjMzOSwgMTA2MzQzLCAKKyAgICAxMDYzNDcsIDEwNjM1MSwgMTA2MzU0LCAxMDYzNTgsIDEwNjM2MSwgMTA2MzY1LCAxMDYzNjgsIDEwNjM3MiwgMTA2Mzc2LCAKKyAgICAxMDYzODEsIDEwNjM4NSwgMTA2MzkwLCAxMDYzOTMsIDEwNjM5NywgMTA2NDAwLCAxMDY0MDQsIDEwNjQwNywgMTA2NDExLCAKKyAgICAxMDY0MTUsIDEwNjQxOSwgMTA2NDIzLCAxMDY0MjcsIDEwNjQzMSwgMTA2NDM1LCAxMDY0MzksIDEwNjQ0MywgMTA2NDQ3LCAKKyAgICAxMDY0NTEsIDEwNjQ1NSwgMTA2NDU5LCAxMDY0NjMsIDEwNjQ2NywgMTA2NDcxLCAxMDY0NzUsIDEwNjQ3OSwgMTA2NDgyLCAKKyAgICAxMDY0ODUsIDEwNjQ4OSwgMTA2NDkzLCAxMDY0OTcsIDEwNjUwMCwgMTA2NTAzLCAxMDY1MDcsIDEwNjUxMCwgMTA2NTE0LCAKKyAgICAxMDY1MTgsIDEwNjUyMiwgMTA2NTI2LCAxMDY1MzAsIDEwNjUzMywgMTA2NTM4LCAxMDY1NDIsIDEwNjU0NywgMTA2NTUxLCAKKyAgICAxMDY1NTYsIDEwNjU2MSwgMTA2NTY3LCAxMDY1NzIsIDEwNjU3OCwgMTA2NTgyLCAxMDY1ODcsIDEwNjU5MSwgMTA2NTk2LCAKKyAgICAxMDY2MDAsIDEwNjYwNCwgMTA2NjA4LCAxMDY2MTIsIDEwNjYxNSwgMTA2NjE4LCAxMDY2MjIsIDEwNjYyNiwgMTA2NjI5LCAKKyAgICAxMDY2MzMsIDEwNjYzNywgMTA2NjQxLCAxMDY2NDgsIDAsIDAsIDEwNjY1MiwgMTA2NjU2LCAxMDY2NTksIDEwNjY2MiwgCisgICAgMTA2NjY1LCAxMDY2NjgsIDEwNjY3MSwgMTA2Njc0LCAxMDY2NzgsIDEwNjY4MSwgMTA2Njg1LCAxMDY2ODgsIDEwNjY5MiwgCisgICAgMTA2Njk1LCAxMDY2OTksIDEwNjcwNCwgMCwgMTA2NzA5LCAxMDY3MTQsIDEwNjcxOSwgMTA2NzI0LCAxMDY3MjksIAorICAgIDEwNjczNCwgMTA2NzM5LCAxMDY3NDUsIDEwNjc1MCwgMTA2NzU2LCAxMDY3NjIsIDEwNjc2OCwgMTA2Nzc0LCAxMDY3ODAsIAorICAgIDEwNjc4NiwgMTA2NzkyLCAxMDY3OTgsIDEwNjgwNCwgMTA2ODEwLCAxMDY4MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwNjgyNCwgMTA2ODI4LCAxMDY4MzMsIDEwNjgzNywgMTA2ODQxLCAxMDY4NDUsIDEwNjg1MCwgMTA2ODU0LCAKKyAgICAxMDY4NTksIDEwNjg2MywgMTA2ODY4LCAxMDY4NzMsIDEwNjg3OCwgMTA2ODgzLCAxMDY4ODgsIDEwNjg5MywgMTA2ODk4LCAKKyAgICAxMDY5MDMsIDAsIDEwNjkwOCwgMTA2OTEzLCAxMDY5MTgsIDEwNjkyMywgMTA2OTI4LCAxMDY5MzMsIDEwNjkzOCwgCisgICAgMTA2OTQzLCAxMDY5NDgsIDEwNjk1MywgMTA2OTU4LCAxMDY5NjMsIDEwNjk2NywgMTA2OTcxLCAxMDY5NzYsIDEwNjk4MSwgCisgICAgMTA2OTg2LCAxMDY5OTEsIDEwNjk5NSwgMTA2OTk5LCAxMDcwMDQsIDEwNzAwOCwgMTA3MDEzLCAxMDcwMTgsIDEwNzAyMiwgCisgICAgMTA3MDI3LCAxMDcwMzMsIDEwNzAzOCwgMTA3MDQ0LCAxMDcwNDksIDEwNzA1NCwgMTA3MDYwLCAxMDcwNjUsIDEwNzA3MSwgCisgICAgMTA3MDc2LCAxMDcwODEsIDEwNzA4NiwgMTA3MDkxLCAxMDcwOTUsIDEwNzEwMCwgMTA3MTA2LCAxMDcxMTEsIDEwNzExNywgCisgICAgMTA3MTIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxMjcsIDEwNzEzMSwgCisgICAgMTA3MTM1LCAxMDcxMzksIDEwNzE0MywgMTA3MTQ3LCAxMDcxNTIsIDAsIDEwNzE1NywgMCwgMTA3MTYyLCAxMDcxNjcsIAorICAgIDEwNzE3MiwgMTA3MTc3LCAwLCAxMDcxODIsIDEwNzE4NywgMTA3MTkyLCAxMDcxOTcsIDEwNzIwMiwgMTA3MjA3LCAKKyAgICAxMDcyMTIsIDEwNzIxNywgMTA3MjIyLCAxMDcyMjcsIDEwNzIzMiwgMTA3MjM3LCAxMDcyNDEsIDEwNzI0NSwgMTA3MjUwLCAKKyAgICAwLCAxMDcyNTUsIDEwNzI2MCwgMTA3MjY0LCAxMDcyNjgsIDEwNzI3MywgMTA3Mjc3LCAxMDcyODIsIDEwNzI4NywgCisgICAgMTA3MjkxLCAxMDcyOTYsIDEwNzMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MzA2LCAxMDczMTAsIDEwNzMxNSwgMTA3MzE5LCAKKyAgICAxMDczMjQsIDEwNzMyOCwgMTA3MzMzLCAxMDczMzcsIDEwNzM0MiwgMTA3MzQ2LCAxMDczNTEsIDEwNzM1NSwgMTA3MzYwLCAKKyAgICAxMDczNjUsIDEwNzM3MCwgMTA3Mzc1LCAxMDczODAsIDEwNzM4NSwgMTA3MzkwLCAxMDczOTUsIDEwNzQwMCwgMTA3NDA1LCAKKyAgICAxMDc0MTAsIDEwNzQxNSwgMTA3NDIwLCAxMDc0MjUsIDEwNzQzMCwgMTA3NDM1LCAxMDc0NDAsIDEwNzQ0NSwgMTA3NDUwLCAKKyAgICAxMDc0NTUsIDEwNzQ2MCwgMTA3NDY1LCAxMDc0NjksIDEwNzQ3MywgMTA3NDc4LCAxMDc0ODMsIDEwNzQ4OCwgMTA3NDkzLCAKKyAgICAxMDc0OTcsIDEwNzUwMSwgMTA3NTA2LCAxMDc1MTAsIDEwNzUxNSwgMTA3NTIwLCAxMDc1MjUsIDEwNzUyOSwgMTA3NTM0LCAKKyAgICAxMDc1NDAsIDEwNzU0NSwgMTA3NTUxLCAxMDc1NTYsIDEwNzU2MiwgMTA3NTY3LCAxMDc1NzMsIDEwNzU3OCwgMTA3NTg0LCAKKyAgICAxMDc1ODksIDAsIDAsIDAsIDAsIDAsIDEwNzU5NCwgMTA3NTk5LCAxMDc2MDMsIDEwNzYwNywgMTA3NjExLCAxMDc2MTUsIAorICAgIDEwNzYxOSwgMTA3NjIzLCAxMDc2MjgsIDEwNzYzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3NjM3LCAxMDc2NDQsIDEwNzY0OSwgCisgICAgMTA3NjU0LCAwLCAxMDc2NTksIDEwNzY2MywgMTA3NjY4LCAxMDc2NzIsIDEwNzY3NywgMTA3NjgxLCAxMDc2ODYsIAorICAgIDEwNzY5MSwgMCwgMCwgMTA3Njk2LCAxMDc3MDEsIDAsIDAsIDEwNzcwNiwgMTA3NzExLCAxMDc3MTYsIDEwNzcyMCwgCisgICAgMTA3NzI1LCAxMDc3MzAsIDEwNzczNSwgMTA3NzQwLCAxMDc3NDUsIDEwNzc1MCwgMTA3NzU1LCAxMDc3NjAsIDEwNzc2NSwgCisgICAgMTA3NzcwLCAxMDc3NzUsIDEwNzc4MCwgMTA3Nzg1LCAxMDc3OTAsIDEwNzc5NSwgMTA3ODAwLCAxMDc4MDUsIDEwNzgxMCwgCisgICAgMCwgMTA3ODE0LCAxMDc4MTgsIDEwNzgyMywgMTA3ODI4LCAxMDc4MzMsIDEwNzgzNywgMTA3ODQxLCAwLCAxMDc4NDYsIAorICAgIDEwNzg1MCwgMCwgMTA3ODU1LCAxMDc4NjAsIDEwNzg2NSwgMTA3ODcwLCAxMDc4NzUsIDAsIDAsIDEwNzg3OSwgMTA3ODg0LCAKKyAgICAxMDc4ODksIDEwNzg5NSwgMTA3OTAwLCAxMDc5MDYsIDEwNzkxMSwgMTA3OTE3LCAxMDc5MjMsIDAsIDAsIDEwNzkzMCwgCisgICAgMTA3OTM2LCAwLCAwLCAxMDc5NDIsIDEwNzk0OCwgMTA3OTU0LCAwLCAwLCAxMDc5NTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNzk2MywgMCwgMCwgMCwgMCwgMCwgMTA3OTcwLCAxMDc5NzUsIDEwNzk4MiwgMTA3OTkwLCAxMDc5OTYsIDEwODAwMiwgCisgICAgMTA4MDA4LCAwLCAwLCAxMDgwMTUsIDEwODAyMSwgMTA4MDI2LCAxMDgwMzEsIDEwODAzNiwgMTA4MDQxLCAxMDgwNDYsIDAsIAorICAgIDAsIDAsIDEwODA1MSwgMTA4MDU2LCAxMDgwNjEsIDEwODA2NiwgMTA4MDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgwNzcsIDEwODA4MCwgMTA4MDg0LCAxMDgwODcsIDEwODA5MSwgCisgICAgMTA4MDk0LCAxMDgwOTgsIDEwODEwMiwgMTA4MTA3LCAxMDgxMTEsIDEwODExNiwgMTA4MTE5LCAxMDgxMjMsIDEwODEyNiwgCisgICAgMTA4MTMwLCAxMDgxMzMsIDEwODEzNywgMTA4MTQxLCAxMDgxNDUsIDEwODE0OSwgMTA4MTUzLCAxMDgxNTcsIDEwODE2MSwgCisgICAgMTA4MTY1LCAxMDgxNjksIDEwODE3MywgMTA4MTc3LCAxMDgxODEsIDEwODE4NSwgMTA4MTg5LCAxMDgxOTMsIDEwODE5NywgCisgICAgMTA4MjAxLCAxMDgyMDUsIDEwODIwOSwgMTA4MjEzLCAxMDgyMTYsIDEwODIyMCwgMTA4MjIzLCAxMDgyMjcsIDEwODIzMSwgCisgICAgMTA4MjM1LCAxMDgyMzgsIDEwODI0MiwgMTA4MjQ1LCAxMDgyNDksIDEwODI1MywgMTA4MjU2LCAxMDgyNjAsIDEwODI2NCwgCisgICAgMTA4MjY4LCAxMDgyNzIsIDEwODI3NiwgMTA4Mjc5LCAxMDgyODQsIDEwODI4OCwgMTA4MjkzLCAxMDgyOTcsIDEwODMwMiwgCisgICAgMTA4MzA3LCAxMDgzMTMsIDEwODMxOCwgMTA4MzI0LCAxMDgzMjgsIDEwODMzMywgMTA4MzM3LCAxMDgzNDIsIDEwODM0NiwgCisgICAgMTA4MzUwLCAxMDgzNTQsIDEwODM1OCwgMTA4MzYyLCAxMDgzNjYsIDEwODM3MSwgMTA4Mzc0LCAxMDgzNzcsIDEwODM4MCwgCisgICAgMTA4Mzg0LCAxMDgzODcsIDEwODM5MiwgMTA4Mzk2LCAxMDg0MDAsIDEwODQwMywgMTA4NDA2LCAxMDg0MDksIDEwODQxMiwgCisgICAgMTA4NDE1LCAxMDg0MTgsIDEwODQyMiwgMTA4NDI1LCAwLCAxMDg0MjksIDAsIDEwODQzMywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA4NDM3LCAxMDg0NDEsIDEwODQ0NSwgMTA4NDUwLCAxMDg0NTQsIDEwODQ1OSwgMTA4NDYzLCAKKyAgICAxMDg0NjgsIDEwODQ3MywgMTA4NDc5LCAxMDg0ODQsIDEwODQ5MCwgMTA4NDk0LCAxMDg0OTksIDEwODUwMywgMTA4NTA4LCAKKyAgICAxMDg1MTIsIDEwODUxNywgMTA4NTIyLCAxMDg1MjcsIDEwODUzMiwgMTA4NTM3LCAxMDg1NDIsIDEwODU0NywgMTA4NTUyLCAKKyAgICAxMDg1NTcsIDEwODU2MiwgMTA4NTY3LCAxMDg1NzIsIDEwODU3NywgMTA4NTgyLCAxMDg1ODcsIDEwODU5MiwgMTA4NTk3LCAKKyAgICAxMDg2MDIsIDEwODYwNiwgMTA4NjEwLCAxMDg2MTUsIDEwODYyMCwgMTA4NjI1LCAxMDg2MjksIDEwODYzMywgMTA4NjM4LCAKKyAgICAxMDg2NDIsIDEwODY0NywgMTA4NjUyLCAxMDg2NTcsIDEwODY2MiwgMTA4NjY2LCAxMDg2NzIsIDEwODY3NywgMTA4NjgzLCAKKyAgICAxMDg2ODgsIDEwODY5NCwgMTA4NzAwLCAxMDg3MDcsIDEwODcxMywgMTA4NzIwLCAxMDg3MjUsIDEwODczMiwgMTA4NzM4LCAKKyAgICAxMDg3NDMsIDEwODc1MCwgMTA4NzU2LCAxMDg3NjEsIDEwODc2NiwgMTA4NzcxLCAxMDg3NzYsIDEwODc4MSwgMTA4Nzg2LCAKKyAgICAxMDg3OTAsIDEwODc5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4Nzk5LCAxMDg4MDQsIDEwODgwOCwgMTA4ODEyLCAKKyAgICAxMDg4MTYsIDEwODgyMCwgMTA4ODI0LCAxMDg4MjgsIDEwODgzMywgMTA4ODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMDY3NjcsIDEwNjc3MSwgMTA2Nzc1LCAxMDY3ODAsIDEwNjc4NCwgMTA2Nzg5LCAxMDY3OTMsIDEwNjc5OCwgCi0gICAgMTA2ODAzLCAxMDY4MDksIDEwNjgxNCwgMTA2ODIwLCAxMDY4MjQsIDEwNjgyOSwgMTA2ODMzLCAxMDY4MzgsIDEwNjg0MiwgCi0gICAgMTA2ODQ3LCAxMDY4NTIsIDEwNjg1NywgMTA2ODYyLCAxMDY4NjcsIDEwNjg3MiwgMTA2ODc3LCAxMDY4ODIsIDEwNjg4NywgCi0gICAgMTA2ODkyLCAxMDY4OTcsIDEwNjkwMiwgMTA2OTA3LCAxMDY5MTIsIDEwNjkxNywgMTA2OTIyLCAxMDY5MjcsIDEwNjkzMiwgCi0gICAgMTA2OTM3LCAxMDY5NDEsIDEwNjk0NiwgMTA2OTUxLCAxMDY5NTYsIDEwNjk2MCwgMTA2OTY0LCAxMDY5NjksIDEwNjk3NCwgCi0gICAgMTA2OTc5LCAxMDY5ODQsIDEwNjk4OSwgMTA2OTk0LCAxMDY5OTgsIDEwNzAwNCwgMTA3MDA5LCAxMDcwMTUsIDEwNzAyMCwgCi0gICAgMTA3MDI2LCAxMDcwMzIsIDEwNzAzOSwgMTA3MDQ1LCAxMDcwNTIsIDEwNzA1NywgMTA3MDY0LCAxMDcwNzAsIDEwNzA3NSwgCi0gICAgMTA3MDgyLCAxMDcwODgsIDEwNzA5MywgMTA3MDk4LCAxMDcxMDMsIDEwNzEwOCwgMTA3MTEzLCAxMDcxMTgsIDEwNzEyMiwgCi0gICAgMTA3MTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxMzEsIDEwNzEzNiwgMTA3MTQwLCAxMDcxNDQsIDEwNzE0OCwgCi0gICAgMTA3MTUyLCAxMDcxNTYsIDEwNzE2MCwgMTA3MTY1LCAxMDcxNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODg0MiwgMTA4ODQ1LCAxMDg4NDksIDEwODg1MiwgCisgICAgMTA4ODU2LCAxMDg4NTksIDEwODg2MywgMTA4ODY3LCAxMDg4NzIsIDEwODg3NiwgMTA4ODgxLCAxMDg4ODQsIDEwODg4OCwgCisgICAgMTA4ODkxLCAxMDg4OTUsIDEwODg5OCwgMTA4OTAyLCAxMDg5MDYsIDEwODkxMCwgMTA4OTE0LCAxMDg5MTgsIDEwODkyMiwgCisgICAgMTA4OTI2LCAxMDg5MzAsIDEwODkzNCwgMTA4OTM4LCAxMDg5NDIsIDEwODk0NiwgMTA4OTUwLCAxMDg5NTQsIDEwODk1OCwgCisgICAgMTA4OTYyLCAxMDg5NjYsIDEwODk3MCwgMTA4OTczLCAxMDg5NzYsIDEwODk4MCwgMTA4OTg0LCAxMDg5ODgsIDEwODk5MSwgCisgICAgMTA4OTk0LCAxMDg5OTgsIDEwOTAwMSwgMTA5MDA1LCAxMDkwMDksIDEwOTAxMywgMTA5MDE3LCAxMDkwMjAsIDEwOTAyNSwgCisgICAgMTA5MDI5LCAxMDkwMzQsIDEwOTAzOCwgMTA5MDQzLCAxMDkwNDgsIDAsIDAsIDEwOTA1NCwgMTA5MDU4LCAxMDkwNjMsIAorICAgIDEwOTA2NywgMTA5MDcyLCAxMDkwNzYsIDEwOTA4MCwgMTA5MDg0LCAxMDkwODgsIDEwOTA5MiwgMTA5MDk2LCAxMDkwOTksIAorICAgIDEwOTEwMywgMTA5MTA4LCAxMDkxMTIsIDEwOTExNywgMTA5MTIyLCAxMDkxMjcsIDEwOTEzNCwgMTA5MTQ2LCAxMDkxNTgsIAorICAgIDEwOTE3MCwgMTA5MTgzLCAxMDkxOTcsIDEwOTIwNCwgMTA5MjE0LCAxMDkyMjIsIDEwOTIzMSwgMTA5MjQwLCAxMDkyNDksIAorICAgIDEwOTI1OSwgMTA5MjcwLCAxMDkyODIsIDEwOTI4OSwgMTA5Mjk2LCAxMDkzMDQsIDEwOTMwOSwgMTA5MzE1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxNzQsIDEwNzE3NywgMTA3MTgxLCAxMDcxODQsIDEwNzE4OCwgCi0gICAgMTA3MTkxLCAxMDcxOTUsIDEwNzE5OSwgMTA3MjA0LCAxMDcyMDgsIDEwNzIxMywgMTA3MjE2LCAxMDcyMjAsIDEwNzIyMywgCi0gICAgMTA3MjI3LCAxMDcyMzAsIDEwNzIzNCwgMTA3MjM4LCAxMDcyNDIsIDEwNzI0NiwgMTA3MjUwLCAxMDcyNTQsIDEwNzI1OCwgCi0gICAgMTA3MjYyLCAxMDcyNjYsIDEwNzI3MCwgMTA3Mjc0LCAxMDcyNzgsIDEwNzI4MiwgMTA3Mjg2LCAxMDcyOTAsIDEwNzI5NCwgCi0gICAgMTA3Mjk4LCAxMDczMDIsIDEwNzMwNiwgMTA3MzA5LCAxMDczMTMsIDEwNzMxNywgMTA3MzIxLCAxMDczMjQsIDEwNzMyNywgCi0gICAgMTA3MzMxLCAxMDczMzUsIDEwNzMzOSwgMTA3MzQzLCAxMDczNDcsIDEwNzM1MSwgMTA3MzU0LCAxMDczNTksIDEwNzM2MywgCi0gICAgMTA3MzY4LCAxMDczNzIsIDEwNzM3NywgMTA3MzgyLCAwLCAwLCAxMDczODgsIDEwNzM5MiwgMTA3Mzk3LCAxMDc0MDEsIAotICAgIDEwNzQwNiwgMTA3NDEwLCAxMDc0MTQsIDEwNzQxOCwgMTA3NDIyLCAxMDc0MjYsIDEwNzQzMCwgMTA3NDMzLCAxMDc0MzcsIAotICAgIDEwNzQ0MiwgMTA3NDQ2LCAxMDc0NTEsIDEwNzQ1NiwgMTA3NDYxLCAxMDc0NjgsIDEwNzQ4MCwgMTA3NDkyLCAxMDc1MDQsIAotICAgIDEwNzUxNywgMTA3NTMxLCAxMDc1MzgsIDEwNzU0OCwgMTA3NTU2LCAxMDc1NjUsIDEwNzU3NCwgMTA3NTgzLCAxMDc1OTMsIAotICAgIDEwNzYwNCwgMTA3NjE2LCAxMDc2MjMsIDEwNzYzMCwgMTA3NjM4LCAxMDc2NDMsIDEwNzY0OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5MzIyLCAxMDkzMjYsIDEwOTMzMSwgMTA5MzM1LCAxMDkzNDAsIDEwOTM0NCwgCisgICAgMTA5MzQ5LCAxMDkzNTQsIDEwOTM2MCwgMTA5MzY1LCAxMDkzNzEsIDEwOTM3NSwgMTA5MzgwLCAxMDkzODQsIDEwOTM4OSwgCisgICAgMTA5MzkzLCAxMDkzOTgsIDEwOTQwMywgMTA5NDA4LCAxMDk0MTMsIDEwOTQxOCwgMTA5NDIzLCAxMDk0MjgsIDEwOTQzMywgCisgICAgMTA5NDM4LCAxMDk0NDMsIDEwOTQ0OCwgMTA5NDUzLCAxMDk0NTgsIDEwOTQ2MywgMTA5NDY4LCAxMDk0NzMsIDEwOTQ3OCwgCisgICAgMTA5NDgzLCAxMDk0ODcsIDEwOTQ5MSwgMTA5NDk2LCAxMDk1MDEsIDEwOTUwNiwgMTA5NTEwLCAxMDk1MTQsIDEwOTUxOSwgCisgICAgMTA5NTIzLCAxMDk1MjgsIDEwOTUzMywgMTA5NTM4LCAxMDk1NDMsIDEwOTU0NywgMTA5NTUyLCAxMDk1NTgsIDEwOTU2MywgCisgICAgMTA5NTY5LCAxMDk1NzQsIDEwOTU4MCwgMTA5NTg2LCAxMDk1OTMsIDEwOTU5OSwgMTA5NjA2LCAxMDk2MTEsIDEwOTYxNywgCisgICAgMTA5NjIyLCAxMDk2MjgsIDEwOTYzMywgMTA5NjM4LCAxMDk2NDMsIDEwOTY0OCwgMTA5NjUyLCAxMDk2NTcsIDEwOTY2MiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5NjY3LCAxMDk2NzIsIDEwOTY3NiwgMTA5NjgwLCAxMDk2ODQsIAorICAgIDEwOTY4OCwgMTA5NjkyLCAxMDk2OTYsIDEwOTcwMSwgMTA5NzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDk3MTAsIDEwOTcxNiwgCisgICAgMTA5NzIxLCAxMDk3MjgsIDEwOTczNiwgMTA5NzQzLCAxMDk3NTEsIDEwOTc2MCwgMTA5NzY1LCAxMDk3NzQsIDEwOTc3OSwgCisgICAgMTA5Nzg3LCAxMDk3OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwOTgwNywgMTA5ODExLCAxMDk4MTYsIDEwOTgyMCwgMTA5ODI1LCAxMDk4MjksIDEwOTgzNCwgMTA5ODM4LCAxMDk4NDMsIAorICAgIDEwOTg0NywgMTA5ODUyLCAxMDk4NTYsIDEwOTg2MSwgMTA5ODY2LCAxMDk4NzEsIDEwOTg3NiwgMTA5ODgxLCAxMDk4ODYsIAorICAgIDEwOTg5MSwgMTA5ODk2LCAxMDk5MDEsIDEwOTkwNiwgMTA5OTExLCAxMDk5MTYsIDEwOTkyMSwgMTA5OTI2LCAxMDk5MzEsIAorICAgIDEwOTkzNiwgMTA5OTQxLCAxMDk5NDYsIDEwOTk1MCwgMTA5OTU0LCAxMDk5NTksIDEwOTk2NCwgMTA5OTY5LCAxMDk5NzMsIAorICAgIDEwOTk3NywgMTA5OTgyLCAxMDk5ODYsIDEwOTk5MSwgMTA5OTk2LCAxMTAwMDEsIDExMDAwNSwgMTEwMDEwLCAxMTAwMTUsIAorICAgIDExMDAyMCwgMTEwMDI2LCAxMTAwMzEsIDExMDAzNywgMTEwMDQyLCAxMTAwNDgsIDExMDA1MywgMTEwMDU5LCAxMTAwNjQsIAorICAgIDExMDA3MCwgMTEwMDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTAwODAsIDExMDA4NSwgMTEwMDg5LCAxMTAwOTMsIAorICAgIDExMDA5NywgMTEwMTAxLCAxMTAxMDUsIDExMDEwOSwgMTEwMTE0LCAxMTAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwNzY1NiwgMTA3NjYwLCAxMDc2NjUsIDEwNzY2OSwgMTA3Njc0LCAxMDc2NzgsIDEwNzY4MywgCi0gICAgMTA3Njg4LCAxMDc2OTQsIDEwNzY5OSwgMTA3NzA1LCAxMDc3MDksIDEwNzcxNCwgMTA3NzE4LCAxMDc3MjMsIDEwNzcyNywgCi0gICAgMTA3NzMyLCAxMDc3MzcsIDEwNzc0MiwgMTA3NzQ3LCAxMDc3NTIsIDEwNzc1NywgMTA3NzYyLCAxMDc3NjcsIDEwNzc3MiwgCi0gICAgMTA3Nzc3LCAxMDc3ODIsIDEwNzc4NywgMTA3NzkyLCAxMDc3OTcsIDEwNzgwMiwgMTA3ODA3LCAxMDc4MTIsIDEwNzgxNywgCi0gICAgMTA3ODIyLCAxMDc4MjYsIDEwNzgzMSwgMTA3ODM2LCAxMDc4NDEsIDEwNzg0NSwgMTA3ODQ5LCAxMDc4NTQsIDEwNzg1OSwgCi0gICAgMTA3ODY0LCAxMDc4NjksIDEwNzg3NCwgMTA3ODc5LCAxMDc4ODMsIDEwNzg4OCwgMTA3ODk0LCAxMDc4OTksIDEwNzkwNSwgCi0gICAgMTA3OTEwLCAxMDc5MTYsIDEwNzkyMiwgMTA3OTI5LCAxMDc5MzUsIDEwNzk0MiwgMTA3OTQ3LCAxMDc5NTMsIDEwNzk1OCwgCi0gICAgMTA3OTY0LCAxMDc5NjksIDEwNzk3NCwgMTA3OTc5LCAxMDc5ODQsIDEwNzk4OCwgMTA3OTkzLCAxMDc5OTgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODAwMywgMTA4MDA4LCAxMDgwMTIsIDEwODAxNiwgMTA4MDIwLCAxMDgwMjQsIAotICAgIDEwODAyOCwgMTA4MDMyLCAxMDgwMzcsIDEwODA0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMTIzLCAKKyAgICAxMTAxMjcsIDExMDEzMiwgMTEwMTM3LCAxMTAxNDEsIDExMDE0NiwgMTEwMTUzLCAxMTAxNTcsIDExMDE2MiwgMTEwMTY3LCAKKyAgICAxMTAxNzEsIDExMDE3NiwgMTEwMTgxLCAxMTAxODYsIDExMDE5MSwgMTEwMTk1LCAxMTAyMDAsIDExMDIwNSwgMTEwMjA5LCAKKyAgICAxMTAyMTMsIDExMDIxOCwgMTEwMjIzLCAxMTAyMjgsIDExMDIzNSwgMTEwMjQwLCAxMTAyNDUsIDAsIDAsIDAsIDExMDI1MCwgCisgICAgMTEwMjU2LCAxMTAyNjMsIDExMDI3MiwgMTEwMjc3LCAxMTAyODMsIDExMDI4OCwgMTEwMjk0LCAxMTAyOTksIDExMDMwNSwgCisgICAgMTEwMzEwLCAxMTAzMTYsIDExMDMyMSwgMTEwMzI3LCAxMTAzMzMsIDAsIDAsIDAsIDAsIDExMDMzOCwgMTEwMzQzLCAKKyAgICAxMTAzNDcsIDExMDM1MSwgMTEwMzU1LCAxMTAzNTksIDExMDM2MywgMTEwMzY3LCAxMTAzNzIsIDExMDM3NiwgMTEwMzgxLCAKKyAgICAxMTAzODYsIDExMDM5MSwgMTEwMzk3LCAxMTA0MDIsIDExMDQwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA4MDQ2LCAxMDgwNTAsIDEwODA1NSwgMTA4MDU5LCAxMDgwNjQsIDEwODA2OCwgMTA4MDczLCAxMDgwNzcsIDEwODA4MiwgCi0gICAgMTA4MDg2LCAxMDgwOTEsIDEwODA5NSwgMTA4MTAwLCAxMDgxMDUsIDEwODExMCwgMTA4MTE1LCAxMDgxMjAsIDEwODEyNSwgCi0gICAgMTA4MTMwLCAxMDgxMzUsIDEwODE0MCwgMTA4MTQ1LCAxMDgxNTAsIDEwODE1NSwgMTA4MTYwLCAxMDgxNjUsIDEwODE3MCwgCi0gICAgMTA4MTc1LCAxMDgxODAsIDEwODE4NSwgMTA4MTkwLCAxMDgxOTQsIDEwODE5OSwgMTA4MjA0LCAxMDgyMDksIDEwODIxMywgCi0gICAgMTA4MjE3LCAxMDgyMjIsIDEwODIyNywgMTA4MjMyLCAxMDgyMzcsIDEwODI0MiwgMTA4MjQ2LCAxMDgyNTEsIDEwODI1NiwgCi0gICAgMTA4MjYxLCAxMDgyNjcsIDEwODI3MiwgMTA4Mjc4LCAxMDgyODMsIDEwODI4OSwgMTA4Mjk0LCAxMDgzMDAsIDEwODMwNSwgCi0gICAgMTA4MzExLCAxMDgzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODMyMSwgMTA4MzI2LCAxMDgzMzAsIDEwODMzNCwgCi0gICAgMTA4MzM4LCAxMDgzNDIsIDEwODM0NiwgMTA4MzUwLCAxMDgzNTUsIDEwODM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MzY0LCAKLSAgICAxMDgzNjgsIDEwODM3MywgMTA4Mzc4LCAxMDgzODMsIDEwODM4OCwgMTA4Mzk1LCAxMDgzOTksIDEwODQwNCwgMTA4NDA5LCAKLSAgICAxMDg0MTMsIDEwODQxOCwgMTA4NDIzLCAxMDg0MjgsIDEwODQzMywgMTA4NDM4LCAxMDg0NDMsIDEwODQ0OCwgMTA4NDUyLCAKLSAgICAxMDg0NTYsIDEwODQ2MSwgMTA4NDY2LCAxMDg0NzEsIDEwODQ3OCwgMTA4NDgzLCAxMDg0ODgsIDAsIDAsIDAsIDEwODQ5MywgCi0gICAgMTA4NTAwLCAxMDg1MDcsIDEwODUxNiwgMTA4NTIxLCAxMDg1MjcsIDEwODUzMiwgMTA4NTM4LCAxMDg1NDMsIDEwODU0OSwgCi0gICAgMTA4NTU0LCAxMDg1NjAsIDEwODU2NSwgMTA4NTcxLCAxMDg1NzcsIDAsIDAsIDAsIDAsIDEwODU4MiwgMTA4NTg3LCAKLSAgICAxMDg1OTEsIDEwODU5NSwgMTA4NTk5LCAxMDg2MDMsIDEwODYwNywgMTA4NjExLCAxMDg2MTYsIDEwODYyMCwgMTA4NjI1LCAKLSAgICAxMDg2MzAsIDEwODYzNSwgMTA4NjQxLCAxMDg2NDYsIDEwODY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xODkyNCwxNzUgKzIwMDU5LDE5NSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDExMDQxMiwgMTEwNDIwLCAxMTA0MjcsIDExMDQzNSwgMTEwNDQzLCAxMTA0NTAsIDExMDQ1OCwgCisgICAgMTEwNDY2LCAxMTA0NzQsIDExMDQ4MSwgMTEwNDg4LCAxMTA0OTYsIDExMDUwNCwgMTEwNTEyLCAxMTA1MjAsIDExMDUyOCwgCisgICAgMTEwNTM2LCAxMTA1NDQsIDExMDU1MiwgMTEwNTYwLCAxMTA1NjgsIDExMDU3NiwgMTEwNTg0LCAxMTA1OTIsIDExMDYwMCwgCisgICAgMTEwNjA4LCAxMTA2MTYsIDExMDYyNCwgMTEwNjMyLCAxMTA2NDAsIDExMDY0OCwgMTEwNjU2LCAxMTA2NjQsIDExMDY3MiwgCisgICAgMTEwNjc5LCAxMTA2ODcsIDExMDY5NSwgMTEwNzAyLCAxMTA3MTAsIDExMDcxOCwgMTEwNzI2LCAxMTA3MzMsIDExMDc0MCwgCisgICAgMTEwNzQ4LCAxMTA3NTYsIDExMDc2NCwgMTEwNzcyLCAxMTA3ODAsIDExMDc4OCwgMTEwNzk2LCAxMTA4MDQsIDExMDgxMiwgCisgICAgMTEwODIwLCAxMTA4MjgsIDExMDgzNiwgMTEwODQ0LCAxMTA4NTIsIDExMDg2MCwgMTEwODY4LCAxMTA4NzYsIDExMDg4NCwgCisgICAgMTEwODkyLCAxMTA5MDAsIDExMDkwOCwgMTEwOTE2LCAxMTA5MjMsIDExMDkyOSwgMTEwOTM1LCAxMTA5NDEsIDExMDk0NywgCisgICAgMTEwOTUzLCAxMTA5NTksIDExMDk2NiwgMTEwOTcyLCAxMTA5NzksIDExMDk4NiwgMTEwOTkzLCAxMTEwMDAsIDExMTAwNywgCisgICAgMTExMDE0LCAxMTEwMjEsIDExMTAyOCwgMTExMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTEwNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEwODY1NiwgMTA4NjY0LCAxMDg2NzEsIDEwODY3OSwgMTA4Njg3LCAxMDg2OTQsIDEwODcwMiwgCi0gICAgMTA4NzEwLCAxMDg3MTgsIDEwODcyNSwgMTA4NzMyLCAxMDg3NDAsIDEwODc0OCwgMTA4NzU2LCAxMDg3NjQsIDEwODc3MiwgCi0gICAgMTA4NzgwLCAxMDg3ODgsIDEwODc5NiwgMTA4ODA0LCAxMDg4MTIsIDEwODgyMCwgMTA4ODI4LCAxMDg4MzYsIDEwODg0NCwgCi0gICAgMTA4ODUyLCAxMDg4NjAsIDEwODg2OCwgMTA4ODc2LCAxMDg4ODQsIDEwODg5MiwgMTA4OTAwLCAxMDg5MDgsIDEwODkxNiwgCi0gICAgMTA4OTIzLCAxMDg5MzEsIDEwODkzOSwgMTA4OTQ2LCAxMDg5NTQsIDEwODk2MiwgMTA4OTcwLCAxMDg5NzcsIDEwODk4NCwgCi0gICAgMTA4OTkyLCAxMDkwMDAsIDEwOTAwOCwgMTA5MDE2LCAxMDkwMjQsIDEwOTAzMiwgMTA5MDQwLCAxMDkwNDgsIDEwOTA1NiwgCi0gICAgMTA5MDY0LCAxMDkwNzIsIDEwOTA4MCwgMTA5MDg4LCAxMDkwOTYsIDEwOTEwNCwgMTA5MTEyLCAxMDkxMjAsIDEwOTEyOCwgCi0gICAgMTA5MTM2LCAxMDkxNDQsIDEwOTE1MiwgMTA5MTYwLCAxMDkxNjcsIDEwOTE3MywgMTA5MTc5LCAxMDkxODUsIDEwOTE5MSwgCi0gICAgMTA5MTk3LCAxMDkyMDMsIDEwOTIxMCwgMTA5MjE2LCAxMDkyMjMsIDEwOTIzMCwgMTA5MjM3LCAxMDkyNDQsIDEwOTI1MSwgCi0gICAgMTA5MjU4LCAxMDkyNjUsIDEwOTI3MiwgMTA5Mjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDkyODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDExMTA0OCwgMTExMDU2LCAxMTEwNjQsIDExMTA3MiwgMTExMDgwLCAxMTEwODksIDExMTA5OCwgMTExMTA3LCAKKyAgICAxMTExMTYsIDExMTEyNCwgMTExMTMzLCAxMTExNDIsIDExMTE1MSwgMTExMTYwLCAxMTExNjksIDExMTE3OCwgMTExMTg3LCAKKyAgICAxMTExOTUsIDExMTIwNCwgMTExMjEzLCAxMTEyMjIsIDExMTIzMSwgMTExMjM5LCAxMTEyNDcsIDExMTI1NSwgMTExMjYzLCAKKyAgICAxMTEyNzEsIDExMTI4MCwgMTExMjg5LCAxMTEyOTksIDExMTMwOSwgMTExMzE5LCAxMTEzMjksIDExMTMzOSwgMTExMzQ4LCAKKyAgICAxMTEzNTgsIDExMTM2OCwgMTExMzc4LCAxMTEzODksIDExMTM5OSwgMTExNDExLCAxMTE0MjMsIDExMTQzNCwgMTExNDQ4LCAKKyAgICAxMTE0NTksIDExMTQ2OSwgMTExNDgxLCAxMTE0OTIsIDExMTUwMiwgMTExNTE0LCAxMTE1MjYsIDExMTUzNywgMTExNTQ4LCAKKyAgICAxMTE1NTgsIDExMTU2OCwgMTExNTgwLCAxMTE1OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTYwMywgMTExNjA2LCAKKyAgICAxMTE2MTAsIDExMTYxMywgMTExNjE3LCAxMTE2MjAsIDExMTYyNCwgMTExNjI4LCAxMTE2MzMsIDAsIDExMTYzNywgCisgICAgMTExNjQwLCAxMTE2NDQsIDExMTY0NywgMTExNjUxLCAxMTE2NTQsIDExMTY1OCwgMTExNjYyLCAxMTE2NjYsIDExMTY3MCwgCisgICAgMTExNjc0LCAxMTE2NzgsIDExMTY4MiwgMTExNjg2LCAxMTE2OTAsIDExMTY5NCwgMTExNjk4LCAxMTE3MDIsIDExMTcwNiwgCisgICAgMTExNzEwLCAxMTE3MTQsIDExMTcxOCwgMTExNzIyLCAxMTE3MjYsIDExMTcyOSwgMTExNzMyLCAxMTE3MzYsIDExMTc0MCwgCisgICAgMTExNzQ0LCAxMTE3NDcsIDExMTc1MCwgMTExNzU0LCAxMTE3NTcsIDExMTc2MSwgMTExNzY1LCAxMTE3NjksIDExMTc3MywgCisgICAgMTExNzc2LCAxMTE3ODEsIDExMTc4NSwgMTExNzkwLCAxMTE3OTQsIDExMTc5OSwgMTExODA0LCAxMTE4MTAsIDAsIAorICAgIDExMTgxNSwgMTExODE5LCAxMTE4MjQsIDExMTgyOCwgMTExODMzLCAxMTE4MzcsIDExMTg0MSwgMTExODQ1LCAxMTE4NDksIAorICAgIDExMTg1MywgMTExODU2LCAxMTE4NjAsIDExMTg2NSwgMTExODcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTE4NzUsIDExMTg3OSwgMTExODgyLCAxMTE4ODUsIDExMTg4OCwgMTExODkxLCAxMTE4OTQsIDExMTg5NywgMTExOTAxLCAKKyAgICAxMTE5MDQsIDExMTkwOCwgMTExOTExLCAxMTE5MTQsIDExMTkxNywgMTExOTIwLCAxMTE5MjMsIDExMTkyNiwgMTExOTMwLCAKKyAgICAxMTE5MzMsIDExMTkzNywgMTExOTQxLCAxMTE5NDUsIDExMTk0OSwgMTExOTUzLCAxMTE5NTcsIDExMTk2MSwgMTExOTY1LCAKKyAgICAxMTE5NjksIDExMTk3MywgMCwgMCwgMCwgMTExOTc5LCAxMTE5ODQsIDExMTk4OSwgMTExOTkzLCAxMTE5OTgsIDExMjAwMywgCisgICAgMTEyMDA4LCAxMTIwMTMsIDExMjAxOCwgMTEyMDIzLCAxMTIwMjgsIDExMjAzMywgMTEyMDM4LCAxMTIwNDMsIDExMjA0NywgCisgICAgMTEyMDUxLCAxMTIwNTYsIDExMjA2MSwgMTEyMDY1LCAxMTIwNzAsIDExMjA3NSwgMTEyMDgwLCAxMTIwODUsIDExMjA5MCwgCisgICAgMTEyMDk1LCAxMTIxMDAsIDExMjEwNCwgMTEyMTA5LCAxMTIxMTMsIDExMjExOCwgMTEyMTIzLCAxMTIxMjcsIDAsIDAsIAorICAgIDExMjEzMSwgMTEyMTM3LCAxMTIxNDQsIDExMjE1MSwgMTEyMTU4LCAxMTIxNjUsIDExMjE3MiwgMTEyMTc5LCAxMTIxODYsIAorICAgIDExMjE5MywgMTEyMjAwLCAxMTIyMDcsIDExMjIxMywgMTEyMjE5LCAxMTIyMjYsIDExMjIzMywgMTEyMjM5LCAxMTIyNDYsIAorICAgIDExMjI1MywgMTEyMjYwLCAxMTIyNjcsIDExMjI3NCwgMCwgMTEyMjgxLCAxMTIyODcsIDExMjI5NCwgMTEyMzAwLCAKKyAgICAxMTIzMDcsIDExMjMxNCwgMTEyMzIwLCAxMTIzMjYsIDExMjMzMiwgMTEyMzM3LCAxMTIzNDIsIDExMjM0NywgMTEyMzUyLCAKKyAgICAxMTIzNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEwOTI5MiwgMTA5MzAwLCAxMDkzMDgsIDEwOTMxNywgMTA5MzI1LCAxMDkzMzQsIDEwOTM0MywgMTA5MzUyLCAKLSAgICAxMDkzNjEsIDEwOTM2OSwgMTA5Mzc4LCAxMDkzODcsIDEwOTM5NiwgMTA5NDA1LCAxMDk0MTQsIDEwOTQyMywgMTA5NDMyLCAKLSAgICAxMDk0NDEsIDEwOTQ1MCwgMTA5NDU5LCAxMDk0NjgsIDEwOTQ3NywgMTA5NDg1LCAxMDk0OTMsIDEwOTUwMSwgMTA5NTA5LCAKLSAgICAxMDk1MTcsIDEwOTUyNiwgMTA5NTM1LCAxMDk1NDUsIDEwOTU1NSwgMTA5NTY1LCAxMDk1NzUsIDEwOTU4NSwgMTA5NTk0LCAKLSAgICAxMDk2MDQsIDEwOTYxNCwgMTA5NjI0LCAxMDk2MzUsIDEwOTY0NSwgMTA5NjU3LCAxMDk2NjksIDEwOTY4MCwgMTA5Njk0LCAKLSAgICAxMDk3MDUsIDEwOTcxNSwgMTA5NzI3LCAxMDk3MzgsIDEwOTc0OCwgMTA5NzYwLCAxMDk3NzIsIDEwOTc4MywgMTA5Nzk0LCAKLSAgICAxMDk4MDQsIDEwOTgxNCwgMTA5ODI2LCAxMDk4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTg0OSwgMTA5ODUyLCAKLSAgICAxMDk4NTcsIDEwOTg2MywgMTA5ODcxLCAxMDk4NzYsIDEwOTg4MiwgMTA5ODkwLCAxMDk4OTYsIDEwOTkwMiwgMTA5OTA2LCAKLSAgICAxMDk5MTAsIDEwOTkxNywgMTA5OTI2LCAxMDk5MzMsIDEwOTk0MiwgMTA5OTQ4LCAxMDk5NTcsIDEwOTk2NCwgMTA5OTcxLCAKLSAgICAxMDk5NzgsIDEwOTk4OCwgMTA5OTk0LCAxMDk5OTgsIDExMDAwNSwgMTEwMDE0LCAxMTAwMjQsIDExMDAzMSwgMTEwMDM4LCAKLSAgICAxMTAwNDIsIDExMDA0NiwgMTEwMDUzLCAxMTAwNjMsIDExMDA2NywgMTEwMDc0LCAxMTAwODEsIDExMDA4OCwgMTEwMDk0LCAKLSAgICAxMTAxMDEsIDExMDEwOCwgMTEwMTE1LCAxMTAxMjIsIDExMDEyNiwgMTEwMTMwLCAxMTAxMzQsIDExMDE0MSwgMTEwMTQ1LCAKLSAgICAxMTAxNTIsIDExMDE1OSwgMTEwMTczLCAxMTAxODIsIDExMDE4NiwgMTEwMTkwLCAxMTAxOTQsIDExMDIwMSwgMTEwMjA1LCAKLSAgICAxMTAyMDksIDExMDIxMywgMTEwMjIxLCAxMTAyMjksIDExMDI0OCwgMTEwMjU4LCAxMTAyNzgsIDExMDI4MiwgMTEwMjg2LCAKLSAgICAxMTAyOTAsIDExMDI5NCwgMTEwMjk4LCAxMTAzMDIsIDExMDMwNiwgMTEwMzEzLCAxMTAzMTcsIDExMDMyMCwgMTEwMzI0LCAKLSAgICAxMTAzMjgsIDExMDMzNCwgMTEwMzQxLCAxMTAzNTAsIDExMDM1NCwgMTEwMzYzLCAxMTAzNzIsIDExMDM4MCwgMTEwMzg0LCAKLSAgICAxMTAzOTEsIDExMDM5NSwgMTEwMzk5LCAxMTA0MDMsIDExMDQwNywgMTEwNDE4LCAxMTA0MjcsIDExMDQzNiwgMTEwNDQ1LCAKLSAgICAxMTA0NTQsIDExMDQ2NiwgMTEwNDc1LCAxMTA0ODQsIDExMDQ5MywgMTEwNTAxLCAxMTA1MTAsIDExMDUyMiwgMTEwNTMxLCAKLSAgICAxMTA1NDAsIDExMDU0OSwgMTEwNTYxLCAxMTA1NzAsIDExMDU3OSwgMTEwNTkxLCAxMTA2MDAsIDExMDYwOSwgMTEwNjIxLCAKLSAgICAxMTA2MzAsIDExMDYzNCwgMTEwNjM4LCAxMTA2NDIsIDExMDY0NiwgMTEwNjUwLCAxMTA2NTQsIDExMDY1OCwgMTEwNjY1LCAKLSAgICAxMTA2NjksIDExMDY3MywgMTEwNjg0LCAxMTA2ODgsIDExMDY5MiwgMTEwNjk5LCAxMTA3MDUsIDExMDcxMSwgMTEwNzE1LCAKLSAgICAxMTA3MjIsIDExMDcyNiwgMTEwNzMwLCAxMTA3MzQsIDExMDczOCwgMTEwNzQyLCAxMTA3NDYsIDExMDc1MiwgMTEwNzYwLCAKLSAgICAxMTA3NjQsIDExMDc2OCwgMTEwNzcxLCAxMTA3NzcsIDExMDc4NywgMTEwNzkxLCAxMTA4MDMsIDExMDgxMCwgMTEwODE3LCAKLSAgICAxMTA4MjQsIDExMDgzMSwgMTEwODM3LCAxMTA4NDEsIDExMDg0NSwgMTEwODQ5LCAxMTA4NTMsIDExMDg2MCwgMTEwODY5LCAKLSAgICAxMTA4NzYsIDExMDg4NCwgMTEwODkyLCAxMTA4OTgsIDExMDkwMiwgMTEwOTA2LCAxMTA5MTAsIDExMDkxNCwgMTEwOTIwLCAKLSAgICAxMTA5MjksIDExMDk0MSwgMTEwOTQ4LCAxMTA5NTUsIDExMDk2NCwgMTEwOTc1LCAxMTA5ODEsIDExMDk5MCwgMTEwOTk5LCAKLSAgICAxMTEwMDYsIDExMTAxNSwgMTExMDIyLCAxMTEwMjksIDExMTAzOSwgMTExMDQ2LCAxMTEwNTMsIDExMTA2MCwgMTExMDY3LCAKLSAgICAxMTEwNzEsIDExMTA3NywgMTExMDgxLCAxMTEwOTIsIDExMTEwMCwgMTExMTA5LCAxMTExMjEsIDExMTEyOCwgMTExMTM1LCAKLSAgICAxMTExNDUsIDExMTE1MiwgMTExMTYyLCAxMTExNjksIDExMTE3OSwgMTExMTg2LCAxMTExOTMsIDExMTIwMywgMTExMjEwLCAKLSAgICAxMTEyMTcsIDExMTIyNywgMTExMjM0LCAxMTEyNDYsIDExMTI1NSwgMTExMjYyLCAxMTEyNjksIDExMTI3NiwgMTExMjg1LCAKLSAgICAxMTEyOTUsIDExMTMwOCwgMTExMzE1LCAxMTEzMjUsIDExMTMzNSwgMTExMzQyLCAxMTEzNTEsIDExMTM2NCwgMTExMzcxLCAKLSAgICAxMTEzNzgsIDExMTM4NSwgMTExMzk1LCAxMTE0MDUsIDExMTQxMiwgMTExNDIyLCAxMTE0MjksIDExMTQzNiwgMTExNDQ2LCAKLSAgICAxMTE0NTIsIDExMTQ1OSwgMTExNDY2LCAxMTE0NzMsIDExMTQ4MywgMTExNDkwLCAxMTE0OTcsIDExMTUwNCwgMTExNTEwLCAKLSAgICAxMTE1MTcsIDExMTUyNywgMTExNTM0LCAxMTE1MzgsIDExMTU0NiwgMTExNTUwLCAxMTE1NjIsIDExMTU2NiwgMTExNTgwLCAKLSAgICAxMTE1ODQsIDExMTU4OCwgMTExNTkyLCAxMTE1OTYsIDExMTYwMiwgMTExNjA5LCAxMTE2MTcsIDExMTYyMSwgMTExNjI1LCAKLSAgICAxMTE2MjksIDExMTYzMywgMTExNjQwLCAxMTE2NDQsIDExMTY1MCwgMTExNjU2LCAxMTE2NjQsIDExMTY2OCwgMTExNjc1LCAKLSAgICAxMTE2ODMsIDExMTY4NywgMTExNjkxLCAxMTE2OTcsIDExMTcwMSwgMTExNzEwLCAxMTE3MTksIDExMTcyNiwgMTExNzM2LCAKLSAgICAxMTE3NDIsIDExMTc0NiwgMTExNzUwLCAxMTE3NTgsIDExMTc2NSwgMTExNzcyLCAxMTE3NzgsIDExMTc4MiwgMTExNzkwLCAKLSAgICAxMTE3OTQsIDExMTgwMSwgMTExODEzLCAxMTE4MjAsIDExMTgzMCwgMTExODM2LCAxMTE4NDAsIDExMTg0OSwgMTExODU2LCAKLSAgICAxMTE4NjUsIDExMTg2OSwgMTExODczLCAxMTE4ODAsIDExMTg4NCwgMTExODg4LCAxMTE4OTIsIDExMTg5NiwgMTExODk5LCAKLSAgICAxMTE5MDUsIDExMTkxMSwgMTExOTE1LCAxMTE5MTksIDExMTkyNiwgMTExOTMzLCAxMTE5NDAsIDExMTk0NywgMTExOTU0LCAKLSAgICAxMTE5NjEsIDExMTk2OCwgMTExOTc1LCAxMTE5ODEsIDExMTk4NSwgMTExOTg5LCAxMTE5OTYsIDExMjAwMywgMTEyMDEwLCAKLSAgICAxMTIwMTcsIDExMjAyNCwgMTEyMDI4LCAxMTIwMzEsIDExMjAzNiwgMTEyMDQwLCAxMTIwNDQsIDExMjA1MywgMTEyMDYyLCAKLSAgICAxMTIwNjYsIDExMjA3MCwgMTEyMDc2LCAxMTIwODIsIDExMjA5OSwgMTEyMTA1LCAxMTIxMDksIDExMjExOCwgMTEyMTIyLCAKLSAgICAxMTIxMjYsIDExMjEzMywgMTEyMTQxLCAxMTIxNDksIDExMjE1NSwgMTEyMTU5LCAxMTIxNjMsIDExMjE2NywgMTEyMTcxLCAKLSAgICAxMTIxNzQsIDExMjE4MCwgMTEyMTg3LCAxMTIxOTcsIDExMjIwNCwgMTEyMjExLCAxMTIyMTgsIDExMjIyNCwgMTEyMjMxLCAKLSAgICAxMTIyMzgsIDExMjI0NSwgMTEyMjUyLCAxMTIyNTksIDExMjI2OCwgMTEyMjc1LCAxMTIyODcsIDExMjI5NCwgMTEyMzAxLCAKLSAgICAxMTIzMTEsIDExMjMyMiwgMTEyMzI5LCAxMTIzMzYsIDExMjM0MywgMTEyMzUwLCAxMTIzNTcsIDExMjM2NCwgMTEyMzcxLCAKLSAgICAxMTIzNzgsIDExMjM4NSwgMTEyMzkyLCAxMTI0MDIsIDExMjQxMiwgMTEyNDIyLCAxMTI0MjksIDExMjQzOSwgMTEyNDQ2LCAKLSAgICAxMTI0NTMsIDExMjQ2MCwgMTEyNDY3LCAxMTI0NzQsIDExMjQ4MSwgMTEyNDg4LCAxMTI0OTUsIDExMjUwMiwgMTEyNTA5LCAKLSAgICAxMTI1MTYsIDExMjUyMywgMTEyNTMwLCAxMTI1MzYsIDExMjU0MywgMTEyNTUwLCAxMTI1NTksIDExMjU2NiwgMTEyNTczLCAKLSAgICAxMTI1NzcsIDExMjU4NSwgMTEyNTg5LCAxMTI1OTMsIDExMjU5NywgMTEyNjAxLCAxMTI2MDUsIDExMjYxMiwgMTEyNjE2LCAKLSAgICAxMTI2MjUsIDExMjYyOSwgMTEyNjM2LCAxMTI2NDQsIDExMjY0OCwgMTEyNjUyLCAxMTI2NTYsIDExMjY2OSwgMTEyNjg1LCAKLSAgICAxMTI2ODksIDExMjY5MywgMTEyNzAwLCAxMTI3MDYsIDExMjcxMywgMTEyNzE3LCAxMTI3MjEsIDExMjcyNSwgMTEyNzI5LCAKLSAgICAxMTI3MzMsIDExMjc0MCwgMTEyNzQ0LCAxMTI3NjIsIDExMjc2NiwgMTEyNzcwLCAxMTI3NzcsIDExMjc4MSwgMTEyNzg1LCAKLSAgICAxMTI3OTEsIDExMjc5NSwgMTEyNzk5LCAxMTI4MDcsIDExMjgxMSwgMTEyODE1LCAxMTI4MTksIDExMjgyMywgMTEyODI5LCAKLSAgICAxMTI4NDAsIDExMjg0OSwgMTEyODU4LCAxMTI4NjUsIDExMjg3MiwgMTEyODgzLCAxMTI4OTAsIDExMjg5NywgMTEyOTA0LCAKLSAgICAxMTI5MTEsIDExMjkxOCwgMTEyOTI1LCAxMTI5MzIsIDExMjk0MiwgMTEyOTQ4LCAxMTI5NTUsIDExMjk2NSwgMTEyOTc0LCAKLSAgICAxMTI5ODEsIDExMjk5MCwgMTEzMDAwLCAxMTMwMDcsIDExMzAxNCwgMTEzMDIxLCAxMTMwMjgsIDExMzA0MCwgMTEzMDQ3LCAKLSAgICAxMTMwNTQsIDExMzA2MSwgMTEzMDY4LCAxMTMwNzUsIDExMzA4NSwgMTEzMDkyLCAxMTMwOTksIDExMzEwOSwgMTEzMTIyLCAKLSAgICAxMTMxMzQsIDExMzE0MSwgMTEzMTUxLCAxMTMxNTgsIDExMzE2NSwgMTEzMTcyLCAxMTMxODcsIDExMzE5MywgMTEzMjAxLCAKLSAgICAxMTMyMTEsIDExMzIyMSwgMTEzMjI4LCAxMTMyMzUsIDExMzI0MSwgMTEzMjQ1LCAxMTMyNTIsIDExMzI2MiwgMTEzMjY4LCAKLSAgICAxMTMyODEsIDExMzI4NSwgMTEzMjg5LCAxMTMyOTYsIDExMzMwMCwgMTEzMzA3LCAxMTMzMTcsIDExMzMyMSwgMTEzMzI1LCAKLSAgICAxMTMzMjksIDExMzMzMywgMTEzMzM3LCAxMTMzNDQsIDExMzM0OCwgMTEzMzU1LCAxMTMzNjIsIDExMzM2OSwgMTEzMzc4LCAKLSAgICAxMTMzODcsIDExMzM5NywgMTEzNDA0LCAxMTM0MTEsIDExMzQxOCwgMTEzNDI4LCAxMTM0MzUsIDExMzQ0NSwgMTEzNDUyLCAKLSAgICAxMTM0NjIsIDExMzQ2OSwgMTEzNDc2LCAxMTM0ODYsIDExMzQ5NiwgMTEzNTAzLCAxMTM1MDksIDExMzUxNywgMTEzNTI1LCAKLSAgICAxMTM1MzEsIDExMzUzNywgMTEzNTQxLCAxMTM1NDUsIDExMzU1MiwgMTEzNTYwLCAxMTM1NjYsIDExMzU3MCwgMTEzNTc0LCAKLSAgICAxMTM1NzgsIDExMzU4NSwgMTEzNTk3LCAxMTM2MDAsIDExMzYwNywgMTEzNjEzLCAxMTM2MTcsIDExMzYyMSwgMTEzNjI1LCAKLSAgICAxMTM2MjksIDExMzYzMywgMTEzNjM3LCAxMTM2NDEsIDExMzY0NSwgMTEzNjQ5LCAxMTM2NTMsIDExMzY2MCwgMTEzNjY0LCAKLSAgICAxMTM2NzAsIDExMzY3NCwgMTEzNjc4LCAxMTM2ODIsIDExMzY4OCwgMTEzNjk1LCAxMTM3MDIsIDExMzcwOSwgMTEzNzIxLCAKLSAgICAxMTM3MjksIDExMzczMywgMTEzNzM5LCAxMTM3NDgsIDExMzc1NSwgMTEzNzYxLCAxMTM3NjUsIDExMzc2OSwgMTEzNzczLCAKLSAgICAxMTM3NzksIDExMzc4OCwgMTEzNzk2LCAxMTM4MDAsIDExMzgwNiwgMTEzODEwLCAxMTM4MTQsIDExMzgxOCwgMTEzODI0LCAKLSAgICAxMTM4MzEsIDExMzgzNywgMTEzODQxLCAxMTM4NDcsIDExMzg1MSwgMTEzODU1LCAxMTM4NjQsIDExMzg3NiwgMTEzODgwLCAKLSAgICAxMTM4ODcsIDExMzg5NCwgMTEzOTA0LCAxMTM5MTEsIDExMzkyMywgMTEzOTMwLCAxMTM5MzcsIDExMzk0NCwgMTEzOTU1LCAKLSAgICAxMTM5NjUsIDExMzk3OCwgMTEzOTg4LCAxMTM5OTUsIDExMzk5OSwgMTE0MDAzLCAxMTQwMDcsIDExNDAxMSwgMTE0MDIwLCAKLSAgICAxMTQwMjksIDExNDAzOCwgMTE0MDU1LCAxMTQwNjQsIDExNDA3MCwgMTE0MDc3LCAxMTQwODUsIDExNDA5OCwgMTE0MTAyLCAKLSAgICAxMTQxMTEsIDExNDEyMCwgMTE0MTI5LCAxMTQxMzgsIDExNDE0OSwgMTE0MTU4LCAxMTQxNjcsIDExNDE3NiwgMTE0MTg1LCAKLSAgICAxMTQxOTQsIDExNDIwMywgMTE0MjEzLCAxMTQyMTYsIDExNDIyMCwgMTE0MjI0LCAxMTQyMjgsIDExNDIzMiwgMTE0MjM2LCAKLSAgICAxMTQyNDIsIDExNDI0OSwgMTE0MjU2LCAxMTQyNjMsIDExNDI2OSwgMTE0Mjc1LCAxMTQyODIsIDExNDI4OCwgMTE0Mjk1LCAKLSAgICAxMTQzMDMsIDExNDMwNywgMTE0MzE0LCAxMTQzMjEsIDExNDMyOCwgMTE0MzM2LCAxMTQzNDAsIDExNDM0NCwgMTE0MzQ4LCAKLSAgICAxMTQzNTIsIDExNDM1NiwgMTE0MzYyLCAxMTQzNjYsIDExNDM3MiwgMTE0Mzc5LCAxMTQzODYsIDExNDM5MiwgMTE0Mzk5LCAKLSAgICAxMTQ0MDYsIDExNDQxMywgMTE0NDIwLCAxMTQ0MjcsIDExNDQzNCwgMTE0NDQxLCAxMTQ0NDgsIDExNDQ1NSwgMTE0NDYyLCAKLSAgICAxMTQ0NjksIDExNDQ3NiwgMTE0NDgzLCAxMTQ0OTAsIDExNDQ5NiwgMTE0NTAwLCAxMTQ1MDksIDExNDUxMywgMTE0NTE3LCAKLSAgICAxMTQ1MjEsIDExNDUyNSwgMTE0NTMxLCAxMTQ1MzgsIDExNDU0NSwgMTE0NTUyLCAxMTQ1NTksIDExNDU2NiwgMTE0NTcyLCAKLSAgICAxMTQ1ODAsIDExNDU4NCwgMTE0NTg4LCAxMTQ1OTIsIDExNDU5NiwgMTE0NjAyLCAxMTQ2MTksIDExNDYzNiwgMTE0NjQwLCAKLSAgICAxMTQ2NDQsIDExNDY0OCwgMTE0NjUyLCAxMTQ2NTYsIDExNDY2MCwgMTE0NjY2LCAxMTQ2NzMsIDExNDY3NywgMTE0NjgzLCAKLSAgICAxMTQ2OTAsIDExNDY5NywgMTE0NzA0LCAxMTQ3MTEsIDExNDcxOCwgMTE0NzI3LCAxMTQ3MzQsIDExNDc0MSwgMTE0NzQ4LCAKLSAgICAxMTQ3NTUsIDExNDc1OSwgMTE0NzYzLCAxMTQ3NjksIDExNDc4MSwgMTE0Nzg1LCAxMTQ3ODksIDExNDc5OCwgMTE0ODAyLCAKLSAgICAxMTQ4MDYsIDExNDgxMCwgMTE0ODE2LCAxMTQ4MjAsIDExNDgyNCwgMTE0ODMzLCAxMTQ4MzcsIDExNDg0MSwgMTE0ODQ1LCAKLSAgICAxMTQ4NTIsIDExNDg1NiwgMTE0ODYwLCAxMTQ4NjQsIDExNDg2OCwgMTE0ODcyLCAxMTQ4NzYsIDExNDg4MCwgMTE0ODg0LCAKLSAgICAxMTQ4OTAsIDExNDg5NywgMTE0OTA0LCAxMTQ5MTAsIDExNDkxNCwgMTE0OTMxLCAxMTQ5MzcsIDExNDk0MSwgMTE0OTQ3LCAKLSAgICAxMTQ5NTMsIDExNDk1OSwgMTE0OTY1LCAxMTQ5NzEsIDExNDk3NywgMTE0OTgxLCAxMTQ5ODUsIDExNDk4OSwgMTE0OTk1LCAKLSAgICAxMTQ5OTksIDExNTAwNSwgMTE1MDA5LCAxMTUwMTMsIDExNTAyMCwgMTE1MDI3LCAxMTUwNDQsIDExNTA0OCwgMTE1MDUyLCAKLSAgICAxMTUwNTYsIDExNTA2MCwgMTE1MDY0LCAxMTUwNzYsIDExNTA3OSwgMTE1MDg0LCAxMTUwODksIDExNTEwNCwgMTE1MTE0LCAKLSAgICAxMTUxMjYsIDExNTEzMCwgMTE1MTM0LCAxMTUxMzgsIDExNTE0NCwgMTE1MTUxLCAxMTUxNTgsIDExNTE2OCwgMTE1MTgwLCAKLSAgICAxMTUxODYsIDExNTE5MiwgMTE1MjAxLCAxMTUyMDUsIDExNTIwOSwgMTE1MjE2LCAxMTUyMjYsIDExNTIzMywgMTE1MjM5LCAKLSAgICAxMTUyNDMsIDExNTI0NywgMTE1MjU0LCAxMTUyNjAsIDExNTI2NCwgMTE1MjcwLCAxMTUyNzQsIDExNTI4MiwgMTE1Mjg4LCAKLSAgICAxMTUyOTIsIDExNTMwMCwgMTE1MzA5LCAxMTUzMTYsIDExNTMyMiwgMTE1MzI5LCAxMTUzMzYsIDExNTM0NiwgMTE1MzU2LCAKLSAgICAxMTUzNjAsIDExNTM2NCwgMTE1MzY4LCAxMTUzNzIsIDExNTM3OCwgMTE1Mzg1LCAxMTUzOTEsIDExNTM5OCwgMTE1NDA1LCAKLSAgICAxMTU0MTIsIDExNTQyMSwgMTE1NDI4LCAxMTU0MzUsIDExNTQ0MSwgMTE1NDQ4LCAxMTU0NTUsIDExNTQ2MiwgMTE1NDY5LCAKLSAgICAxMTU0NzYsIDExNTQ4MywgMTE1NDg5LCAxMTU0OTYsIDExNTUwMywgMTE1NTEwLCAxMTU1MTksIDExNTUyNiwgMTE1NTMzLCAKLSAgICAxMTU1MzcsIDExNTU0MywgMTE1NTQ3LCAxMTU1NTMsIDExNTU2MCwgMTE1NTY3LCAxMTU1NzQsIDExNTU3OCwgMTE1NTgyLCAKLSAgICAxMTU1ODYsIDExNTU5MCwgMTE1NTk0LCAxMTU2MDEsIDExNTYwNSwgMTE1NjA5LCAxMTU2MTUsIDExNTYyMywgMTE1NjI3LCAKLSAgICAxMTU2MzEsIDExNTYzNSwgMTE1NjM5LCAxMTU2NDYsIDExNTY1MCwgMTE1NjU0LCAxMTU2NjIsIDExNTY2NiwgMTE1NjcwLCAKLSAgICAxMTU2NzQsIDExNTY3OCwgMTE1Njg0LCAxMTU2ODgsIDExNTY5MiwgMTE1Njk4LCAxMTU3MDUsIDExNTcxMSwgMTE1NzE4LCAKLSAgICAxMTU3MzAsIDExNTczNCwgMTE1NzQxLCAxMTU3NDgsIDExNTc1NSwgMTE1NzYyLCAxMTU3NzQsIDExNTc4MSwgMTE1Nzg1LCAKLSAgICAxMTU3ODksIDExNTc5MywgMTE1ODAwLCAxMTU4MDcsIDExNTgxNCwgMTE1ODIxLCAxMTU4MzEsIDExNTgzOCwgMTE1ODQ0LCAKLSAgICAxMTU4NTEsIDExNTg1OCwgMTE1ODY1LCAxMTU4NzIsIDExNTg4MSwgMTE1ODkxLCAxMTU4OTgsIDExNTkwMiwgMTE1OTA5LCAKLSAgICAxMTU5MTMsIDExNTkxNywgMTE1OTIxLCAxMTU5MjgsIDExNTkzNSwgMTE1OTQ1LCAxMTU5NTEsIDExNTk1NSwgMTE1OTY0LCAKLSAgICAxMTU5NjgsIDExNTk3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTEyMzYyLCAxMTIzNjUsIDExMjM3MCwgMTEyMzc2LCAxMTIzODQsIDExMjM4OSwgMTEyMzk1LCAxMTI0MDMsIAorICAgIDExMjQwOSwgMTEyNDE1LCAxMTI0MTksIDExMjQyMywgMTEyNDMwLCAxMTI0MzksIDExMjQ0NiwgMTEyNDU1LCAxMTI0NjEsIAorICAgIDExMjQ3MCwgMTEyNDc3LCAxMTI0ODQsIDExMjQ5MSwgMTEyNTAxLCAxMTI1MDcsIDExMjUxMSwgMTEyNTE4LCAxMTI1MjcsIAorICAgIDExMjUzNywgMTEyNTQ0LCAxMTI1NTEsIDExMjU1NSwgMTEyNTU5LCAxMTI1NjYsIDExMjU3NiwgMTEyNTgwLCAxMTI1ODcsIAorICAgIDExMjU5NCwgMTEyNjAxLCAxMTI2MDcsIDExMjYxNCwgMTEyNjIxLCAxMTI2MjgsIDExMjYzNSwgMTEyNjM5LCAxMTI2NDMsIAorICAgIDExMjY0NywgMTEyNjU0LCAxMTI2NTgsIDExMjY2NSwgMTEyNjcyLCAxMTI2ODYsIDExMjY5NSwgMTEyNjk5LCAxMTI3MDMsIAorICAgIDExMjcwNywgMTEyNzE0LCAxMTI3MTgsIDExMjcyMiwgMTEyNzI2LCAxMTI3MzQsIDExMjc0MiwgMTEyNzYxLCAxMTI3NzEsIAorICAgIDExMjc5MSwgMTEyNzk1LCAxMTI3OTksIDExMjgwMywgMTEyODA3LCAxMTI4MTEsIDExMjgxNSwgMTEyODE5LCAxMTI4MjYsIAorICAgIDExMjgzMCwgMTEyODMzLCAxMTI4MzcsIDExMjg0MSwgMTEyODQ3LCAxMTI4NTQsIDExMjg2MywgMTEyODY3LCAxMTI4NzYsIAorICAgIDExMjg4NSwgMTEyODkzLCAxMTI4OTcsIDExMjkwNCwgMTEyOTA4LCAxMTI5MTIsIDExMjkxNiwgMTEyOTIwLCAxMTI5MzEsIAorICAgIDExMjk0MCwgMTEyOTQ5LCAxMTI5NTgsIDExMjk2NywgMTEyOTc5LCAxMTI5ODgsIDExMjk5NywgMTEzMDA2LCAxMTMwMTQsIAorICAgIDExMzAyMywgMTEzMDM1LCAxMTMwNDQsIDExMzA1MiwgMTEzMDYxLCAxMTMwNzMsIDExMzA4MiwgMTEzMDkxLCAxMTMxMDMsIAorICAgIDExMzExMiwgMTEzMTIxLCAxMTMxMzMsIDExMzE0MiwgMTEzMTQ2LCAxMTMxNTAsIDExMzE1NCwgMTEzMTU4LCAxMTMxNjIsIAorICAgIDExMzE2NiwgMTEzMTcwLCAxMTMxNzcsIDExMzE4MSwgMTEzMTg1LCAxMTMxOTYsIDExMzIwMCwgMTEzMjA0LCAxMTMyMTEsIAorICAgIDExMzIxNywgMTEzMjIzLCAxMTMyMjcsIDExMzIzNCwgMTEzMjM4LCAxMTMyNDIsIDExMzI0NiwgMTEzMjUwLCAxMTMyNTQsIAorICAgIDExMzI1OCwgMTEzMjY0LCAxMTMyNzIsIDExMzI3NiwgMTEzMjgwLCAxMTMyODMsIDExMzI4OSwgMTEzMjk5LCAxMTMzMDMsIAorICAgIDExMzMxNSwgMTEzMzIyLCAxMTMzMjksIDExMzMzNiwgMTEzMzQzLCAxMTMzNDksIDExMzM1MywgMTEzMzU3LCAxMTMzNjEsIAorICAgIDExMzM2NSwgMTEzMzcyLCAxMTMzODEsIDExMzM4OCwgMTEzMzk2LCAxMTM0MDQsIDExMzQxMCwgMTEzNDE0LCAxMTM0MTgsIAorICAgIDExMzQyMiwgMTEzNDI2LCAxMTM0MzIsIDExMzQ0MSwgMTEzNDUzLCAxMTM0NjAsIDExMzQ2NywgMTEzNDc2LCAxMTM0ODcsIAorICAgIDExMzQ5MywgMTEzNTAyLCAxMTM1MTEsIDExMzUxOCwgMTEzNTI3LCAxMTM1MzQsIDExMzU0MCwgMTEzNTUwLCAxMTM1NTcsIAorICAgIDExMzU2NCwgMTEzNTcxLCAxMTM1NzgsIDExMzU4MiwgMTEzNTg4LCAxMTM1OTIsIDExMzYwMywgMTEzNjExLCAxMTM2MjAsIAorICAgIDExMzYzMiwgMTEzNjM5LCAxMTM2NDYsIDExMzY1NiwgMTEzNjYzLCAxMTM2NzMsIDExMzY4MCwgMTEzNjkwLCAxMTM2OTcsIAorICAgIDExMzcwNCwgMTEzNzE0LCAxMTM3MjEsIDExMzcyOCwgMTEzNzM3LCAxMTM3NDQsIDExMzc1NiwgMTEzNzY1LCAxMTM3NzIsIAorICAgIDExMzc3OSwgMTEzNzg2LCAxMTM3OTUsIDExMzgwNSwgMTEzODE4LCAxMTM4MjUsIDExMzgzNCwgMTEzODQ0LCAxMTM4NTEsIAorICAgIDExMzg2MCwgMTEzODczLCAxMTM4ODAsIDExMzg4NywgMTEzODk0LCAxMTM5MDQsIDExMzkxNCwgMTEzOTIwLCAxMTM5MzAsIAorICAgIDExMzkzNywgMTEzOTQ0LCAxMTM5NTQsIDExMzk2MCwgMTEzOTY3LCAxMTM5NzQsIDExMzk4MSwgMTEzOTkxLCAxMTM5OTgsIAorICAgIDExNDAwNSwgMTE0MDEyLCAxMTQwMTgsIDExNDAyNSwgMTE0MDM1LCAxMTQwNDIsIDExNDA0NiwgMTE0MDU0LCAxMTQwNTgsIAorICAgIDExNDA3MCwgMTE0MDc0LCAxMTQwODgsIDExNDA5MiwgMTE0MDk2LCAxMTQxMDAsIDExNDEwNCwgMTE0MTEwLCAxMTQxMTcsIAorICAgIDExNDEyNSwgMTE0MTI5LCAxMTQxMzMsIDExNDEzNywgMTE0MTQxLCAxMTQxNDgsIDExNDE1MiwgMTE0MTU4LCAxMTQxNjQsIAorICAgIDExNDE3MiwgMTE0MTc2LCAxMTQxODMsIDExNDE5MSwgMTE0MTk1LCAxMTQxOTksIDExNDIwNSwgMTE0MjA5LCAxMTQyMTgsIAorICAgIDExNDIyNywgMTE0MjM0LCAxMTQyNDQsIDExNDI1MCwgMTE0MjU0LCAxMTQyNTgsIDExNDI2NiwgMTE0MjczLCAxMTQyODAsIAorICAgIDExNDI4NiwgMTE0MjkwLCAxMTQyOTgsIDExNDMwMiwgMTE0MzA5LCAxMTQzMjEsIDExNDMyOCwgMTE0MzM4LCAxMTQzNDQsIAorICAgIDExNDM0OCwgMTE0MzU3LCAxMTQzNjQsIDExNDM3MywgMTE0Mzc3LCAxMTQzODEsIDExNDM4OCwgMTE0MzkyLCAxMTQzOTYsIAorICAgIDExNDQwMCwgMTE0NDA0LCAxMTQ0MDcsIDExNDQxMywgMTE0NDE5LCAxMTQ0MjMsIDExNDQyNywgMTE0NDM0LCAxMTQ0NDEsIAorICAgIDExNDQ0OCwgMTE0NDU1LCAxMTQ0NjIsIDExNDQ2OSwgMTE0NDc2LCAxMTQ0ODMsIDExNDQ4OSwgMTE0NDkzLCAxMTQ0OTcsIAorICAgIDExNDUwNCwgMTE0NTExLCAxMTQ1MTgsIDExNDUyNSwgMTE0NTMyLCAxMTQ1MzYsIDExNDUzOSwgMTE0NTQ0LCAxMTQ1NDgsIAorICAgIDExNDU1MiwgMTE0NTYxLCAxMTQ1NzAsIDExNDU3NCwgMTE0NTc4LCAxMTQ1ODQsIDExNDU5MCwgMTE0NjA3LCAxMTQ2MTMsIAorICAgIDExNDYxNywgMTE0NjI2LCAxMTQ2MzAsIDExNDYzNCwgMTE0NjQxLCAxMTQ2NDksIDExNDY1NywgMTE0NjYzLCAxMTQ2NjcsIAorICAgIDExNDY3MSwgMTE0Njc1LCAxMTQ2NzksIDExNDY4MiwgMTE0Njg4LCAxMTQ2OTUsIDExNDcwNSwgMTE0NzEyLCAxMTQ3MTksIAorICAgIDExNDcyNiwgMTE0NzMyLCAxMTQ3MzksIDExNDc0NiwgMTE0NzUzLCAxMTQ3NjAsIDExNDc2NywgMTE0Nzc2LCAxMTQ3ODMsIAorICAgIDExNDc5NSwgMTE0ODAyLCAxMTQ4MDksIDExNDgxOSwgMTE0ODMwLCAxMTQ4MzcsIDExNDg0NCwgMTE0ODUxLCAxMTQ4NTgsIAorICAgIDExNDg2NSwgMTE0ODcyLCAxMTQ4NzksIDExNDg4NiwgMTE0ODkzLCAxMTQ5MDAsIDExNDkxMCwgMTE0OTIwLCAxMTQ5MzAsIAorICAgIDExNDkzNywgMTE0OTQ3LCAxMTQ5NTQsIDExNDk2MSwgMTE0OTY4LCAxMTQ5NzUsIDExNDk4MiwgMTE0OTg5LCAxMTQ5OTYsIAorICAgIDExNTAwMywgMTE1MDEwLCAxMTUwMTcsIDExNTAyNCwgMTE1MDMxLCAxMTUwMzgsIDExNTA0NCwgMTE1MDUxLCAxMTUwNTgsIAorICAgIDExNTA2NywgMTE1MDc0LCAxMTUwODEsIDExNTA4NSwgMTE1MDkzLCAxMTUwOTcsIDExNTEwMSwgMTE1MTA1LCAxMTUxMDksIAorICAgIDExNTExMywgMTE1MTIwLCAxMTUxMjQsIDExNTEzMywgMTE1MTM3LCAxMTUxNDQsIDExNTE1MiwgMTE1MTU2LCAxMTUxNjAsIAorICAgIDExNTE2NCwgMTE1MTc3LCAxMTUxOTMsIDExNTE5NywgMTE1MjAxLCAxMTUyMDgsIDExNTIxNCwgMTE1MjIxLCAxMTUyMjUsIAorICAgIDExNTIyOSwgMTE1MjMzLCAxMTUyMzcsIDExNTI0MSwgMTE1MjQ4LCAxMTUyNTIsIDExNTI3MCwgMTE1Mjc0LCAxMTUyNzgsIAorICAgIDExNTI4NSwgMTE1Mjg5LCAxMTUyOTMsIDExNTI5OSwgMTE1MzAzLCAxMTUzMDcsIDExNTMxNSwgMTE1MzE5LCAxMTUzMjMsIAorICAgIDExNTMyNiwgMTE1MzMwLCAxMTUzMzYsIDExNTM0NywgMTE1MzU2LCAxMTUzNjUsIDExNTM3MiwgMTE1Mzc5LCAxMTUzOTAsIAorICAgIDExNTM5NywgMTE1NDA0LCAxMTU0MTEsIDExNTQxOCwgMTE1NDI1LCAxMTU0MzIsIDExNTQzOSwgMTE1NDQ5LCAxMTU0NTUsIAorICAgIDExNTQ2MiwgMTE1NDcyLCAxMTU0ODEsIDExNTQ4OCwgMTE1NDk3LCAxMTU1MDcsIDExNTUxNCwgMTE1NTIxLCAxMTU1MjgsIAorICAgIDExNTUzNSwgMTE1NTQ3LCAxMTU1NTQsIDExNTU2MSwgMTE1NTY4LCAxMTU1NzUsIDExNTU4MiwgMTE1NTkyLCAxMTU1OTksIAorICAgIDExNTYwNiwgMTE1NjE2LCAxMTU2MjksIDExNTY0MSwgMTE1NjQ4LCAxMTU2NTgsIDExNTY2NSwgMTE1NjcyLCAxMTU2NzksIAorICAgIDExNTY5MywgMTE1Njk5LCAxMTU3MDcsIDExNTcxNywgMTE1NzI3LCAxMTU3MzQsIDExNTc0MSwgMTE1NzQ3LCAxMTU3NTEsIAorICAgIDExNTc1OCwgMTE1NzY4LCAxMTU3NzQsIDExNTc4NywgMTE1NzkxLCAxMTU3OTUsIDExNTgwMiwgMTE1ODA2LCAxMTU4MTMsIAorICAgIDExNTgyMywgMTE1ODI3LCAxMTU4MzEsIDExNTgzNSwgMTE1ODM5LCAxMTU4NDMsIDExNTg1MCwgMTE1ODU0LCAxMTU4NjEsIAorICAgIDExNTg2OCwgMTE1ODc1LCAxMTU4ODQsIDExNTg5MywgMTE1OTAzLCAxMTU5MTAsIDExNTkxNywgMTE1OTI0LCAxMTU5MzQsIAorICAgIDExNTk0MSwgMTE1OTUxLCAxMTU5NTgsIDExNTk2OCwgMTE1OTc1LCAxMTU5ODIsIDExNTk5MiwgMTE2MDAyLCAxMTYwMDksIAorICAgIDExNjAxNSwgMTE2MDIzLCAxMTYwMzEsIDExNjAzNywgMTE2MDQzLCAxMTYwNDcsIDExNjA1MSwgMTE2MDU4LCAxMTYwNjYsIAorICAgIDExNjA3MiwgMTE2MDc2LCAxMTYwODAsIDExNjA4NCwgMTE2MDkxLCAxMTYxMDMsIDExNjEwNiwgMTE2MTEzLCAxMTYxMTksIAorICAgIDExNjEyMywgMTE2MTI3LCAxMTYxMzEsIDExNjEzNSwgMTE2MTM5LCAxMTYxNDMsIDExNjE0NywgMTE2MTUxLCAxMTYxNTUsIAorICAgIDExNjE1OSwgMTE2MTY2LCAxMTYxNzAsIDExNjE3NiwgMTE2MTgwLCAxMTYxODQsIDExNjE4OCwgMTE2MTk0LCAxMTYyMDEsIAorICAgIDExNjIwOCwgMTE2MjE1LCAxMTYyMjYsIDExNjIzNCwgMTE2MjM4LCAxMTYyNDQsIDExNjI1MywgMTE2MjYwLCAxMTYyNjYsIAorICAgIDExNjI2OSwgMTE2MjczLCAxMTYyNzcsIDExNjI4MywgMTE2MjkyLCAxMTYzMDAsIDExNjMwNCwgMTE2MzEwLCAxMTYzMTQsIAorICAgIDExNjMxOCwgMTE2MzIyLCAxMTYzMjgsIDExNjMzNSwgMTE2MzQxLCAxMTYzNDUsIDExNjM1MSwgMTE2MzU1LCAxMTYzNTksIAorICAgIDExNjM2OCwgMTE2MzgwLCAxMTYzODQsIDExNjM5MSwgMTE2Mzk4LCAxMTY0MDgsIDExNjQxNSwgMTE2NDI3LCAxMTY0MzQsIAorICAgIDExNjQ0MSwgMTE2NDQ4LCAxMTY0NTksIDExNjQ2OSwgMTE2NDgyLCAxMTY0OTIsIDExNjQ5OSwgMTE2NTAzLCAxMTY1MDcsIAorICAgIDExNjUxMSwgMTE2NTE1LCAxMTY1MjQsIDExNjUzMywgMTE2NTQyLCAxMTY1NTksIDExNjU2OCwgMTE2NTc0LCAxMTY1ODEsIAorICAgIDExNjU4OSwgMTE2NjAyLCAxMTY2MDYsIDExNjYxNSwgMTE2NjI0LCAxMTY2MzMsIDExNjY0MiwgMTE2NjUzLCAxMTY2NjIsIAorICAgIDExNjY3MCwgMTE2Njc5LCAxMTY2ODgsIDExNjY5NywgMTE2NzA2LCAxMTY3MTYsIDExNjcxOSwgMTE2NzIzLCAxMTY3MjcsIAorICAgIDExNjczMSwgMTE2NzM1LCAxMTY3MzksIDExNjc0NSwgMTE2NzUyLCAxMTY3NTksIDExNjc2NiwgMTE2NzcyLCAxMTY3NzgsIAorICAgIDExNjc4NSwgMTE2NzkxLCAxMTY3OTgsIDExNjgwNiwgMTE2ODEwLCAxMTY4MTcsIDExNjgyNCwgMTE2ODMxLCAxMTY4MzksIAorICAgIDExNjg0MywgMTE2ODQ3LCAxMTY4NTEsIDExNjg1NSwgMTE2ODU5LCAxMTY4NjUsIDExNjg2OSwgMTE2ODc1LCAxMTY4ODIsIAorICAgIDExNjg4OSwgMTE2ODk1LCAxMTY5MDIsIDExNjkwOSwgMTE2OTE2LCAxMTY5MjMsIDExNjkzMCwgMTE2OTM3LCAxMTY5NDQsIAorICAgIDExNjk1MSwgMTE2OTU4LCAxMTY5NjUsIDExNjk3MiwgMTE2OTc5LCAxMTY5ODYsIDExNjk5MywgMTE2OTk5LCAxMTcwMDMsIAorICAgIDExNzAxMiwgMTE3MDE2LCAxMTcwMjAsIDExNzAyNCwgMTE3MDI4LCAxMTcwMzQsIDExNzA0MSwgMTE3MDQ4LCAxMTcwNTUsIAorICAgIDExNzA2MiwgMTE3MDY5LCAxMTcwNzUsIDExNzA4MywgMTE3MDg3LCAxMTcwOTEsIDExNzA5NSwgMTE3MDk5LCAxMTcxMDUsIAorICAgIDExNzEyMiwgMTE3MTM5LCAxMTcxNDMsIDExNzE0NywgMTE3MTUxLCAxMTcxNTUsIDExNzE1OSwgMTE3MTYzLCAxMTcxNjksIAorICAgIDExNzE3NiwgMTE3MTgwLCAxMTcxODYsIDExNzE5MywgMTE3MjAwLCAxMTcyMDcsIDExNzIxNCwgMTE3MjIxLCAxMTcyMzAsIAorICAgIDExNzIzNywgMTE3MjQ0LCAxMTcyNTEsIDExNzI1OCwgMTE3MjYyLCAxMTcyNjYsIDExNzI3MiwgMTE3Mjg0LCAxMTcyODgsIAorICAgIDExNzI5MiwgMTE3MzAxLCAxMTczMDUsIDExNzMwOSwgMTE3MzEzLCAxMTczMTksIDExNzMyMywgMTE3MzI3LCAxMTczMzYsIAorICAgIDExNzM0MCwgMTE3MzQ0LCAxMTczNDgsIDExNzM1NSwgMTE3MzU5LCAxMTczNjMsIDExNzM2NywgMTE3MzcxLCAxMTczNzUsIAorICAgIDExNzM3OSwgMTE3MzgzLCAxMTczODcsIDExNzM5MywgMTE3NDAwLCAxMTc0MDcsIDExNzQxMywgMTE3NDE3LCAxMTc0MzQsIAorICAgIDExNzQ0MCwgMTE3NDQ0LCAxMTc0NTAsIDExNzQ1NiwgMTE3NDYyLCAxMTc0NjgsIDExNzQ3NCwgMTE3NDgwLCAxMTc0ODQsIAorICAgIDExNzQ4OCwgMTE3NDkyLCAxMTc0OTgsIDExNzUwMiwgMTE3NTA4LCAxMTc1MTIsIDExNzUxNiwgMTE3NTIzLCAxMTc1MzAsIAorICAgIDExNzU0NywgMTE3NTUxLCAxMTc1NTUsIDExNzU1OSwgMTE3NTYzLCAxMTc1NjcsIDExNzU3OSwgMTE3NTgyLCAxMTc1ODcsIAorICAgIDExNzU5MiwgMTE3NjA3LCAxMTc2MTcsIDExNzYyOSwgMTE3NjMzLCAxMTc2MzcsIDExNzY0MSwgMTE3NjQ3LCAxMTc2NTQsIAorICAgIDExNzY2MSwgMTE3NjcxLCAxMTc2ODMsIDExNzY4OSwgMTE3Njk1LCAxMTc3MDQsIDExNzcwOCwgMTE3NzEyLCAxMTc3MTksIAorICAgIDExNzcyOSwgMTE3NzM2LCAxMTc3NDIsIDExNzc0NiwgMTE3NzUwLCAxMTc3NTcsIDExNzc2MywgMTE3NzY3LCAxMTc3NzMsIAorICAgIDExNzc3NywgMTE3Nzg1LCAxMTc3OTEsIDExNzc5NSwgMTE3ODAzLCAxMTc4MTEsIDExNzgxOCwgMTE3ODI0LCAxMTc4MzEsIAorICAgIDExNzgzOCwgMTE3ODQ4LCAxMTc4NTgsIDExNzg2MiwgMTE3ODY2LCAxMTc4NzAsIDExNzg3NCwgMTE3ODgwLCAxMTc4ODcsIAorICAgIDExNzg5MywgMTE3OTAwLCAxMTc5MDcsIDExNzkxNCwgMTE3OTIzLCAxMTc5MzAsIDExNzkzNywgMTE3OTQzLCAxMTc5NTAsIAorICAgIDExNzk1NywgMTE3OTY0LCAxMTc5NzEsIDExNzk3OCwgMTE3OTg1LCAxMTc5OTEsIDExNzk5OCwgMTE4MDA1LCAxMTgwMTIsIAorICAgIDExODAyMSwgMTE4MDI4LCAxMTgwMzUsIDExODAzOSwgMTE4MDQ1LCAxMTgwNDksIDExODA1NSwgMTE4MDYyLCAxMTgwNjksIAorICAgIDExODA3NiwgMTE4MDgwLCAxMTgwODQsIDExODA4OCwgMTE4MDkyLCAxMTgwOTYsIDExODEwMywgMTE4MTA3LCAxMTgxMTEsIAorICAgIDExODExNywgMTE4MTI1LCAxMTgxMjksIDExODEzMywgMTE4MTM3LCAxMTgxNDEsIDExODE0OCwgMTE4MTUyLCAxMTgxNTYsIAorICAgIDExODE2NCwgMTE4MTY4LCAxMTgxNzIsIDExODE3NiwgMTE4MTgwLCAxMTgxODYsIDExODE5MCwgMTE4MTk0LCAxMTgyMDAsIAorICAgIDExODIwNywgMTE4MjEzLCAxMTgyMjAsIDExODIzMiwgMTE4MjM2LCAxMTgyNDMsIDExODI1MCwgMTE4MjU3LCAxMTgyNjQsIAorICAgIDExODI3NiwgMTE4MjgzLCAxMTgyODcsIDExODI5MSwgMTE4Mjk1LCAxMTgzMDIsIDExODMwOSwgMTE4MzE2LCAxMTgzMjMsIAorICAgIDExODMzMywgMTE4MzQwLCAxMTgzNDYsIDExODM1MywgMTE4MzYwLCAxMTgzNjcsIDExODM3NCwgMTE4MzgzLCAxMTgzOTMsIAorICAgIDExODQwMCwgMTE4NDA0LCAxMTg0MTEsIDExODQxNSwgMTE4NDE5LCAxMTg0MjMsIDExODQzMCwgMTE4NDM3LCAxMTg0NDcsIAorICAgIDExODQ1MywgMTE4NDU3LCAxMTg0NjYsIDExODQ3MCwgMTE4NDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTU5NzksIDExNTk4NSwgMTE1OTkxLCAxMTU5OTgsIDExNjAwNSwgCi0gICAgMTE2MDEyLCAxMTYwMTksIDExNjAyNiwgMTE2MDMzLCAxMTYwMzksIDExNjA0NiwgMTE2MDUzLCAxMTYwNjAsIDExNjA2NywgCi0gICAgMTE2MDc0LCAxMTYwODEsIDExNjA4NywgMTE2MDkzLCAxMTYwOTksIDExNjEwNSwgMTE2MTExLCAxMTYxMTcsIDExNjEyMywgCi0gICAgMTE2MTI5LCAxMTYxMzUsIDExNjE0MiwgMTE2MTQ5LCAxMTYxNTYsIDExNjE2MywgMTE2MTcwLCAxMTYxNzcsIDExNjE4MywgCi0gICAgMTE2MTg5LCAxMTYxOTUsIDExNjIwMiwgMTE2MjA5LCAxMTYyMTUsIDExNjIyMSwgMTE2MjMwLCAxMTYyMzcsIDExNjI0NCwgCi0gICAgMTE2MjUxLCAxMTYyNTgsIDExNjI2NSwgMTE2MjcyLCAxMTYyNzgsIDExNjI4NCwgMTE2MjkwLCAxMTYyOTksIDExNjMwNiwgCi0gICAgMTE2MzEzLCAxMTYzMjQsIDExNjMzNSwgMTE2MzQxLCAxMTYzNDcsIDExNjM1MywgMTE2MzYyLCAxMTYzNjksIDExNjM3NiwgCi0gICAgMTE2Mzg2LCAxMTYzOTYsIDExNjQwNywgMTE2NDE4LCAxMTY0MzAsIDExNjQ0MywgMTE2NDU0LCAxMTY0NjUsIDExNjQ3NywgCi0gICAgMTE2NDkwLCAxMTY1MDEsIDExNjUxMiwgMTE2NTIzLCAxMTY1MzQsIDExNjU0NSwgMTE2NTU3LCAxMTY1NjUsIDExNjU3MywgCi0gICAgMTE2NTgyLCAxMTY1OTEsIDExNjYwMCwgMTE2NjA2LCAxMTY2MTIsIDExNjYxOCwgMTE2NjI1LCAxMTY2MzUsIDExNjY0MiwgCi0gICAgMTE2NjUyLCAxMTY2NTcsIDExNjY2MiwgMTE2NjY4LCAxMTY2NzQsIDExNjY4MiwgMTE2NjkwLCAxMTY2OTksIDExNjcxMCwgCi0gICAgMTE2NzIxLCAxMTY3MjksIDExNjczNywgMTE2NzQ2LCAxMTY3NTUsIDExNjc2MywgMTE2NzcwLCAxMTY3NzgsIDExNjc4NiwgCi0gICAgMTE2NzkzLCAxMTY4MDAsIDExNjgwOSwgMTE2ODE4LCAxMTY4MjcsIDExNjgzNiwgMTE2ODQ1LCAwLCAxMTY4NTQsIAotICAgIDExNjg2NSwgMTE2ODcyLCAxMTY4ODAsIDExNjg4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2ODk2LCAKLSAgICAxMTY5MDUsIDExNjkxMiwgMTE2OTE5LCAxMTY5MjgsIDExNjkzNSwgMTE2OTQyLCAxMTY5NDksIDExNjk1OSwgMTE2OTY2LCAKLSAgICAxMTY5NzMsIDExNjk4MCwgMTE2OTg4LCAxMTY5OTUsIDExNzAwMiwgMTE3MDA5LCAxMTcwMjAsIDExNzAyNywgMTE3MDM0LCAKLSAgICAxMTcwNDEsIDExNzA0OCwgMTE3MDU1LCAxMTcwNjQsIDExNzA3MSwgMTE3MDc3LCAxMTcwODQsIDExNzA5MywgMTE3MTAwLCAKLSAgICAxMTcxMDcsIDExNzExNCwgMTE3MTI0LCAxMTcxMzEsIDExNzEzOCwgMTE3MTQ4LCAxMTcxNTgsIDExNzE2NSwgMTE3MTcyLCAKLSAgICAxMTcxNzksIDExNzE4NiwgMTE3MTkzLCAxMTcyMDAsIDExNzIwOSwgMTE3MjE2LCAxMTcyMjMsIDExNzIyOSwgMTE3MjM3LCAKLSAgICAxMTcyNDYsIDExNzI1NSwgMTE3MjY2LCAxMTcyNzUsIDExNzI4NCwgMTE3MjkzLCAxMTczMDIsIDExNzMxMSwgMTE3MzE4LCAKLSAgICAxMTczMjUsIDExNzMzNCwgMTE3MzQ2LCAxMTczNTYsIDExNzM2MywgMTE3MzcwLCAxMTczODAsIDExNzM5MCwgMTE3Mzk5LCAKLSAgICAxMTc0MDksIDExNzQxNiwgMTE3NDI2LCAxMTc0MzMsIDExNzQ0MCwgMTE3NDQ3LCAxMTc0NTcsIDExNzQ2NywgMTE3NDc0LCAKLSAgICAxMTc0ODEsIDExNzQ5MSwgMTE3NDk3LCAxMTc1MDgsIDExNzUxNywgMTE3NTI3LCAxMTc1MzUsIDExNzU0OCwgMTE3NTU1LCAKLSAgICAxMTc1NjEsIDExNzU2OSwgMTE3NTc2LCAxMTc1ODYsIDExNzU5MCwgMTE3NTk0LCAxMTc1OTgsIDExNzYwMiwgMTE3NjA2LCAKLSAgICAxMTc2MTAsIDExNzYxNCwgMTE3NjIzLCAxMTc2MjcsIDExNzYzNCwgMTE3NjM4LCAxMTc2NDIsIDExNzY0NiwgMTE3NjUwLCAKLSAgICAxMTc2NTQsIDExNzY1OCwgMTE3NjYyLCAxMTc2NjYsIDExNzY3MCwgMTE3Njc0LCAxMTc2NzgsIDExNzY4MiwgMTE3Njg2LCAKLSAgICAxMTc2OTAsIDExNzY5NCwgMTE3Njk4LCAxMTc3MDIsIDExNzcwNiwgMTE3NzEwLCAxMTc3MTcsIDExNzcyNCwgMTE3NzM0LCAKLSAgICAxMTc3NDcsIDExNzc1NywgMTE3NzYxLCAxMTc3NjUsIDExNzc2OSwgMTE3NzczLCAxMTc3NzcsIDExNzc4MSwgMTE3Nzg1LCAKLSAgICAxMTc3ODksIDExNzc5MywgMTE3Nzk3LCAxMTc4MDEsIDExNzgwOCwgMTE3ODE1LCAxMTc4MjYsIDExNzgzMywgMTE3ODQwLCAKLSAgICAxMTc4NDcsIDExNzg1NCwgMTE3ODYxLCAxMTc4NjgsIDExNzg3NSwgMTE3ODc5LCAxMTc4ODMsIDExNzg5MCwgMTE3ODk3LCAKLSAgICAxMTc5MDQsIDExNzkxMywgMTE3OTIwLCAxMTc5MzMsIDExNzk0MywgMTE3OTUwLCAxMTc5NTcsIDExNzk2MSwgMTE3OTY1LCAKLSAgICAxMTc5NzQsIDExNzk4MSwgMTE3OTg4LCAxMTc5OTUsIDExODAwOCwgMTE4MDE1LCAxMTgwMjIsIDExODAzMiwgMTE4MDQyLCAKLSAgICAxMTgwNTEsIDExODA1OCwgMTE4MDY1LCAxMTgwNzIsIDExODA3OSwgMTE4MDg2LCAxMTgwOTMsIDExODEwMywgMTE4MTA5LCAKLSAgICAxMTgxMTcsIDExODEyNCwgMTE4MTMyLCAxMTgxMzksIDExODE1MCwgMTE4MTU3LCAxMTgxNjMsIDExODE3MCwgMTE4MTc3LCAKLSAgICAxMTgxODQsIDExODE5MSwgMTE4MjAxLCAxMTgyMTEsIDExODIxOCwgMTE4MjI1LCAxMTgyMzQsIDExODI0MiwgMTE4MjQ4LCAKLSAgICAxMTgyNTUsIDExODI2MiwgMTE4MjY5LCAxMTgyNzYsIDExODI4MCwgMTE4MjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTg0ODEsIDExODQ4NywgCisgICAgMTE4NDkzLCAxMTg1MDAsIDExODUwNywgMTE4NTE0LCAxMTg1MjEsIDExODUyOCwgMTE4NTM1LCAxMTg1NDEsIDExODU0OCwgCisgICAgMTE4NTU1LCAxMTg1NjIsIDExODU2OSwgMTE4NTc2LCAxMTg1ODMsIDExODU4OSwgMTE4NTk1LCAxMTg2MDEsIDExODYwNywgCisgICAgMTE4NjEzLCAxMTg2MTksIDExODYyNSwgMTE4NjMxLCAxMTg2MzcsIDExODY0NCwgMTE4NjUxLCAxMTg2NTgsIDExODY2NSwgCisgICAgMTE4NjcyLCAxMTg2NzksIDExODY4NSwgMTE4NjkxLCAxMTg2OTcsIDExODcwNCwgMTE4NzExLCAxMTg3MTcsIDExODcyMywgCisgICAgMTE4NzMyLCAxMTg3MzksIDExODc0NiwgMTE4NzUzLCAxMTg3NjAsIDExODc2NywgMTE4Nzc0LCAxMTg3ODAsIDExODc4NiwgCisgICAgMTE4NzkyLCAxMTg4MDEsIDExODgwOCwgMTE4ODE1LCAxMTg4MjYsIDExODgzNywgMTE4ODQzLCAxMTg4NDksIDExODg1NSwgCisgICAgMTE4ODY0LCAxMTg4NzEsIDExODg3OCwgMTE4ODg4LCAxMTg4OTgsIDExODkwOSwgMTE4OTIwLCAxMTg5MzIsIDExODk0NSwgCisgICAgMTE4OTU2LCAxMTg5NjcsIDExODk3OSwgMTE4OTkyLCAxMTkwMDMsIDExOTAxNCwgMTE5MDI1LCAxMTkwMzYsIDExOTA0NywgCisgICAgMTE5MDU5LCAxMTkwNjcsIDExOTA3NSwgMTE5MDg0LCAxMTkwOTMsIDExOTEwMiwgMTE5MTA4LCAxMTkxMTQsIDExOTEyMCwgCisgICAgMTE5MTI3LCAxMTkxMzcsIDExOTE0NCwgMTE5MTU0LCAxMTkxNTksIDExOTE2NCwgMTE5MTcwLCAxMTkxNzYsIDExOTE4NCwgCisgICAgMTE5MTkyLCAxMTkyMDEsIDExOTIxMiwgMTE5MjIzLCAxMTkyMzEsIDExOTIzOSwgMTE5MjQ4LCAxMTkyNTcsIDExOTI2NSwgCisgICAgMTE5MjcyLCAxMTkyODAsIDExOTI4OCwgMTE5Mjk1LCAxMTkzMDIsIDExOTMxMSwgMTE5MzIwLCAxMTkzMjksIDExOTMzOCwgCisgICAgMTE5MzQ3LCAwLCAxMTkzNTYsIDExOTM2NywgMTE5Mzc0LCAxMTkzODIsIDExOTM5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTE5Mzk4LCAxMTk0MDcsIDExOTQxNCwgMTE5NDIxLCAxMTk0MzAsIDExOTQzNywgMTE5NDQ0LCAKKyAgICAxMTk0NTEsIDExOTQ2MSwgMTE5NDY4LCAxMTk0NzUsIDExOTQ4MiwgMTE5NDkwLCAxMTk0OTcsIDExOTUwNCwgMTE5NTExLCAKKyAgICAxMTk1MjIsIDExOTUyOSwgMTE5NTM2LCAxMTk1NDMsIDExOTU1MCwgMTE5NTU3LCAxMTk1NjYsIDExOTU3MywgMTE5NTc5LCAKKyAgICAxMTk1ODYsIDExOTU5NSwgMTE5NjAyLCAxMTk2MDksIDExOTYxNiwgMTE5NjI2LCAxMTk2MzMsIDExOTY0MCwgMTE5NjUwLCAKKyAgICAxMTk2NjAsIDExOTY2NywgMTE5Njc0LCAxMTk2ODEsIDExOTY4OCwgMTE5Njk1LCAxMTk3MDIsIDExOTcxMSwgMTE5NzE4LCAKKyAgICAxMTk3MjUsIDExOTczMSwgMTE5NzM5LCAxMTk3NDgsIDExOTc1NywgMTE5NzY4LCAxMTk3NzYsIDExOTc4NSwgMTE5Nzk0LCAKKyAgICAxMTk4MDMsIDExOTgxMiwgMTE5ODE5LCAxMTk4MjYsIDExOTgzNSwgMTE5ODQ3LCAxMTk4NTcsIDExOTg2NCwgMTE5ODcxLCAKKyAgICAxMTk4ODEsIDExOTg5MSwgMTE5OTAwLCAxMTk5MTAsIDExOTkxNywgMTE5OTI3LCAxMTk5MzQsIDExOTk0MSwgMTE5OTQ4LCAKKyAgICAxMTk5NTgsIDExOTk2OCwgMTE5OTc1LCAxMTk5ODIsIDExOTk5MiwgMTE5OTk4LCAxMjAwMDksIDEyMDAxOCwgMTIwMDI4LCAKKyAgICAxMjAwMzYsIDEyMDA0OSwgMTIwMDU2LCAxMjAwNjIsIDEyMDA3MCwgMTIwMDc3LCAxMjAwODcsIDEyMDA5MSwgMTIwMDk1LCAKKyAgICAxMjAwOTksIDEyMDEwMywgMTIwMTA3LCAxMjAxMTEsIDEyMDExNSwgMTIwMTI0LCAxMjAxMjgsIDEyMDEzNSwgMTIwMTM5LCAKKyAgICAxMjAxNDMsIDEyMDE0NywgMTIwMTUxLCAxMjAxNTUsIDEyMDE1OSwgMTIwMTYzLCAxMjAxNjcsIDEyMDE3MSwgMTIwMTc1LCAKKyAgICAxMjAxNzksIDEyMDE4MywgMTIwMTg3LCAxMjAxOTEsIDEyMDE5NSwgMTIwMTk5LCAxMjAyMDMsIDEyMDIwNywgMTIwMjExLCAKKyAgICAxMjAyMTgsIDEyMDIyNSwgMTIwMjM1LCAxMjAyNDgsIDEyMDI1OCwgMTIwMjYyLCAxMjAyNjYsIDEyMDI3MCwgMTIwMjc0LCAKKyAgICAxMjAyNzgsIDEyMDI4MiwgMTIwMjg2LCAxMjAyOTAsIDEyMDI5NCwgMTIwMjk4LCAxMjAzMDIsIDEyMDMwOSwgMTIwMzE2LCAKKyAgICAxMjAzMjcsIDEyMDMzNCwgMTIwMzQwLCAxMjAzNDcsIDEyMDM1NCwgMTIwMzYxLCAxMjAzNjgsIDEyMDM3NSwgMTIwMzc5LCAKKyAgICAxMjAzODMsIDEyMDM5MCwgMTIwMzk3LCAxMjA0MDQsIDEyMDQxMywgMTIwNDIwLCAxMjA0MzMsIDEyMDQ0MywgMTIwNDUwLCAKKyAgICAxMjA0NTcsIDEyMDQ2MSwgMTIwNDY1LCAxMjA0NzQsIDEyMDQ4MSwgMTIwNDg4LCAxMjA0OTUsIDEyMDUwOCwgMTIwNTE1LCAKKyAgICAxMjA1MjIsIDEyMDUzMiwgMTIwNTQyLCAxMjA1NTEsIDEyMDU1OCwgMTIwNTY1LCAxMjA1NzIsIDEyMDU3OSwgMTIwNTg2LCAKKyAgICAxMjA1OTMsIDEyMDYwMywgMTIwNjA5LCAxMjA2MTcsIDEyMDYyNCwgMTIwNjMyLCAxMjA2MzksIDEyMDY1MCwgMTIwNjU3LCAKKyAgICAxMjA2NjMsIDEyMDY3MCwgMTIwNjc3LCAxMjA2ODQsIDEyMDY5MSwgMTIwNzAxLCAxMjA3MTEsIDEyMDcxOCwgMTIwNzI1LCAKKyAgICAxMjA3MzQsIDEyMDc0MiwgMTIwNzQ4LCAxMjA3NTUsIDEyMDc2MiwgMTIwNzY5LCAxMjA3NzYsIDEyMDc4MCwgMTIwNzkwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5MTAwLDEyNiArMjAyNTUsMTI2IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4MzAwLCAxMTgzMDQsIDExODMwOCwgMTE4MzEyLCAKLSAgICAxMTgzMTYsIDExODMyMCwgMTE4MzI0LCAxMTgzMjgsIDExODMzMiwgMTE4MzM2LCAxMTgzNDAsIDExODM0NCwgMTE4MzQ4LCAKLSAgICAxMTgzNTIsIDExODM1NiwgMTE4MzYwLCAxMTgzNjQsIDExODM2OCwgMTE4MzcyLCAxMTgzNzYsIDExODM4MCwgMTE4Mzg0LCAKLSAgICAxMTgzODgsIDExODM5MiwgMTE4Mzk2LCAxMTg0MDAsIDExODQwNCwgMTE4NDA4LCAxMTg0MTIsIDExODQxNiwgMTE4NDIwLCAKLSAgICAxMTg0MjQsIDExODQyOCwgMTE4NDMyLCAxMTg0MzYsIDExODQ0MCwgMTE4NDQ0LCAxMTg0NDgsIDExODQ1MiwgMTE4NDU2LCAKLSAgICAxMTg0NjAsIDExODQ2NCwgMTE4NDY4LCAxMTg0NzIsIDExODQ3NiwgMTE4NDgwLCAxMTg0ODQsIDExODQ4OCwgMTE4NDkyLCAKLSAgICAxMTg0OTYsIDExODUwMCwgMTE4NTA0LCAxMTg1MDgsIDExODUxMiwgMTE4NTE2LCAxMTg1MjAsIDExODUyNCwgMTE4NTI4LCAKLSAgICAxMTg1MzIsIDExODUzNiwgMTE4NTQwLCAxMTg1NDQsIDExODU0OCwgMTE4NTUyLCAxMTg1NTYsIDExODU2MCwgMTE4NTY0LCAKLSAgICAxMTg1NjgsIDExODU3MiwgMTE4NTc2LCAxMTg1ODAsIDExODU4NCwgMTE4NTg4LCAxMTg1OTIsIDExODU5NiwgMTE4NjAwLCAKLSAgICAxMTg2MDQsIDExODYwOCwgMTE4NjEyLCAxMTg2MTYsIDExODYyMCwgMTE4NjI0LCAxMTg2MjgsIDExODYzMiwgMTE4NjM2LCAKLSAgICAxMTg2NDAsIDExODY0NCwgMTE4NjQ4LCAxMTg2NTIsIDExODY1NiwgMTE4NjYwLCAxMTg2NjQsIDExODY2OCwgMTE4NjcyLCAKLSAgICAxMTg2NzYsIDExODY4MCwgMTE4Njg0LCAxMTg2ODgsIDExODY5MiwgMTE4Njk2LCAxMTg3MDAsIDExODcwNCwgMTE4NzA4LCAKLSAgICAxMTg3MTIsIDExODcxNiwgMTE4NzIwLCAxMTg3MjQsIDExODcyOCwgMTE4NzMyLCAxMTg3MzYsIDExODc0MCwgMTE4NzQ0LCAKLSAgICAxMTg3NDgsIDExODc1MiwgMTE4NzU2LCAxMTg3NjAsIDExODc2NCwgMTE4NzY4LCAxMTg3NzIsIDExODc3NiwgMTE4NzgwLCAKLSAgICAxMTg3ODQsIDExODc4OCwgMTE4NzkyLCAxMTg3OTYsIDExODgwMCwgMTE4ODA0LCAxMTg4MDgsIDExODgxMiwgMTE4ODE2LCAKLSAgICAxMTg4MjAsIDExODgyNCwgMTE4ODI4LCAxMTg4MzIsIDExODgzNiwgMTE4ODQwLCAxMTg4NDQsIDExODg0OCwgMTE4ODUyLCAKLSAgICAxMTg4NTYsIDExODg2MCwgMTE4ODY0LCAxMTg4NjgsIDExODg3MiwgMTE4ODc2LCAxMTg4ODAsIDExODg4NCwgMTE4ODg4LCAKLSAgICAxMTg4OTIsIDExODg5NiwgMTE4OTAwLCAxMTg5MDQsIDExODkwOCwgMTE4OTEyLCAxMTg5MTYsIDExODkyMCwgMTE4OTI0LCAKLSAgICAxMTg5MjgsIDExODkzMiwgMTE4OTM2LCAxMTg5NDAsIDExODk0NCwgMTE4OTQ4LCAxMTg5NTIsIDExODk1NiwgMTE4OTYwLCAKLSAgICAxMTg5NjQsIDExODk2OCwgMTE4OTcyLCAxMTg5NzYsIDExODk4MCwgMTE4OTg0LCAxMTg5ODgsIDExODk5MiwgMTE4OTk2LCAKLSAgICAxMTkwMDAsIDExOTAwNCwgMTE5MDA4LCAxMTkwMTIsIDExOTAxNiwgMTE5MDIwLCAxMTkwMjQsIDExOTAyOCwgMTE5MDMyLCAKLSAgICAxMTkwMzYsIDExOTA0MCwgMTE5MDQ0LCAxMTkwNDgsIDExOTA1MiwgMTE5MDU2LCAxMTkwNjAsIDExOTA2NCwgMTE5MDY4LCAKLSAgICAxMTkwNzIsIDExOTA3NiwgMTE5MDgwLCAxMTkwODQsIDExOTA4OCwgMTE5MDkyLCAxMTkwOTYsIDExOTEwMCwgMTE5MTA0LCAKLSAgICAxMTkxMDgsIDExOTExMiwgMTE5MTE2LCAxMTkxMjAsIDExOTEyNCwgMTE5MTI4LCAxMTkxMzIsIDExOTEzNiwgMTE5MTQwLCAKLSAgICAxMTkxNDQsIDExOTE0OCwgMTE5MTUyLCAxMTkxNTYsIDExOTE2MCwgMTE5MTY0LCAxMTkxNjgsIDExOTE3MiwgMTE5MTc2LCAKLSAgICAxMTkxODAsIDExOTE4NCwgMTE5MTg4LCAxMTkxOTIsIDExOTE5NiwgMTE5MjAwLCAxMTkyMDQsIDExOTIwOCwgMTE5MjEyLCAKLSAgICAxMTkyMTYsIDExOTIyMCwgMTE5MjI0LCAxMTkyMjgsIDExOTIzMiwgMTE5MjM2LCAxMTkyNDAsIDExOTI0NCwgMTE5MjQ4LCAKLSAgICAxMTkyNTIsIDExOTI1NiwgMTE5MjYwLCAxMTkyNjQsIDExOTI2OCwgMTE5MjcyLCAxMTkyNzYsIDExOTI4MCwgMTE5Mjg0LCAKLSAgICAxMTkyODgsIDExOTI5MiwgMTE5Mjk2LCAxMTkzMDAsIDExOTMwNCwgMTE5MzA4LCAxMTkzMTIsIDExOTMxNiwgMTE5MzIwLCAKLSAgICAxMTkzMjQsIDExOTMyOCwgMTE5MzMyLCAxMTkzMzYsIDExOTM0MCwgMTE5MzQ0LCAxMTkzNDgsIDExOTM1MiwgMTE5MzU2LCAKLSAgICAxMTkzNjAsIDExOTM2NCwgMTE5MzY4LCAxMTkzNzIsIDExOTM3NiwgMTE5MzgwLCAxMTkzODQsIDExOTM4OCwgMTE5MzkyLCAKLSAgICAxMTkzOTYsIDExOTQwMCwgMTE5NDA0LCAxMTk0MDgsIDExOTQxMiwgMTE5NDE2LCAxMTk0MjAsIDExOTQyNCwgMTE5NDI4LCAKLSAgICAxMTk0MzIsIDExOTQzNiwgMTE5NDQwLCAxMTk0NDQsIDExOTQ0OCwgMTE5NDUyLCAxMTk0NTYsIDExOTQ2MCwgMTE5NDY0LCAKLSAgICAxMTk0NjgsIDExOTQ3MiwgMTE5NDc2LCAxMTk0ODAsIDExOTQ4NCwgMTE5NDg4LCAxMTk0OTIsIDExOTQ5NiwgMTE5NTAwLCAKLSAgICAxMTk1MDQsIDExOTUwOCwgMTE5NTEyLCAxMTk1MTYsIDExOTUyMCwgMTE5NTI0LCAxMTk1MjgsIDExOTUzMiwgMTE5NTM2LCAKLSAgICAxMTk1NDAsIDExOTU0NCwgMTE5NTQ4LCAxMTk1NTIsIDExOTU1NiwgMTE5NTYwLCAxMTk1NjQsIDExOTU2OCwgMTE5NTcyLCAKLSAgICAxMTk1NzYsIDExOTU4MCwgMTE5NTg0LCAxMTk1ODgsIDExOTU5MiwgMTE5NTk2LCAxMTk2MDAsIDExOTYwNCwgMTE5NjA4LCAKLSAgICAxMTk2MTIsIDExOTYxNiwgMTE5NjIwLCAxMTk2MjQsIDExOTYyOCwgMTE5NjMyLCAxMTk2MzYsIDExOTY0MCwgMTE5NjQ0LCAKLSAgICAxMTk2NDgsIDExOTY1MiwgMTE5NjU2LCAxMTk2NjAsIDExOTY2NCwgMTE5NjY4LCAxMTk2NzIsIDExOTY3NiwgMTE5NjgwLCAKLSAgICAxMTk2ODQsIDExOTY4OCwgMTE5NjkyLCAxMTk2OTYsIDExOTcwMCwgMTE5NzA0LCAxMTk3MDgsIDExOTcxMiwgMTE5NzE2LCAKLSAgICAxMTk3MjAsIDExOTcyNCwgMTE5NzI4LCAxMTk3MzIsIDExOTczNiwgMTE5NzQwLCAxMTk3NDQsIDExOTc0OCwgMTE5NzUyLCAKLSAgICAxMTk3NTYsIDExOTc2MCwgMTE5NzY0LCAxMTk3NjgsIDExOTc3MiwgMTE5Nzc2LCAxMTk3ODAsIDExOTc4NCwgMTE5Nzg4LCAKLSAgICAxMTk3OTIsIDExOTc5NiwgMTE5ODAwLCAxMTk4MDQsIDExOTgwOCwgMTE5ODEyLCAxMTk4MTYsIDExOTgyMCwgMTE5ODI0LCAKLSAgICAxMTk4MjgsIDExOTgzMiwgMTE5ODM2LCAxMTk4NDAsIDExOTg0NCwgMTE5ODQ4LCAxMTk4NTIsIDExOTg1NiwgMTE5ODYwLCAKLSAgICAxMTk4NjQsIDExOTg2OCwgMTE5ODcyLCAxMTk4NzYsIDExOTg4MCwgMTE5ODg0LCAxMTk4ODgsIDExOTg5MiwgMTE5ODk2LCAKLSAgICAxMTk5MDAsIDExOTkwNCwgMTE5OTA4LCAxMTk5MTIsIDExOTkxNiwgMTE5OTIwLCAxMTk5MjQsIDExOTkyOCwgMTE5OTMyLCAKLSAgICAxMTk5MzYsIDExOTk0MCwgMTE5OTQ0LCAxMTk5NDgsIDExOTk1MiwgMTE5OTU2LCAxMTk5NjAsIDExOTk2NCwgMTE5OTY4LCAKLSAgICAxMTk5NzIsIDExOTk3NiwgMTE5OTgwLCAxMTk5ODQsIDExOTk4OCwgMTE5OTkyLCAxMTk5OTYsIDEyMDAwMCwgMTIwMDA0LCAKLSAgICAxMjAwMDgsIDEyMDAxMiwgMTIwMDE2LCAxMjAwMjAsIDEyMDAyNCwgMTIwMDI4LCAxMjAwMzIsIDEyMDAzNiwgMTIwMDQwLCAKLSAgICAxMjAwNDQsIDEyMDA0OCwgMTIwMDUyLCAxMjAwNTYsIDEyMDA2MCwgMTIwMDY0LCAxMjAwNjgsIDEyMDA3MiwgMTIwMDc2LCAKLSAgICAxMjAwODAsIDEyMDA4NCwgMTIwMDg4LCAxMjAwOTIsIDEyMDA5NiwgMTIwMTAwLCAxMjAxMDQsIDEyMDEwOCwgMTIwMTEyLCAKLSAgICAxMjAxMTYsIDEyMDEyMCwgMTIwMTI0LCAxMjAxMjgsIDEyMDEzMiwgMTIwMTM2LCAxMjAxNDAsIDEyMDE0NCwgMTIwMTQ4LCAKLSAgICAxMjAxNTIsIDEyMDE1NiwgMTIwMTYwLCAxMjAxNjQsIDEyMDE2OCwgMTIwMTcyLCAxMjAxNzYsIDEyMDE4MCwgMTIwMTg0LCAKLSAgICAxMjAxODgsIDEyMDE5MiwgMTIwMTk2LCAxMjAyMDAsIDEyMDIwNCwgMTIwMjA4LCAxMjAyMTIsIDEyMDIxNiwgMTIwMjIwLCAKLSAgICAxMjAyMjQsIDEyMDIyOCwgMTIwMjMyLCAxMjAyMzYsIDEyMDI0MCwgMTIwMjQ0LCAxMjAyNDgsIDEyMDI1MiwgMTIwMjU2LCAKLSAgICAxMjAyNjAsIDEyMDI2NCwgMTIwMjY4LCAxMjAyNzIsIDEyMDI3NiwgMTIwMjgwLCAxMjAyODQsIDEyMDI4OCwgMTIwMjkyLCAKLSAgICAxMjAyOTYsIDEyMDMwMCwgMTIwMzA0LCAxMjAzMDgsIDEyMDMxMiwgMTIwMzE2LCAxMjAzMjAsIDEyMDMyNCwgMTIwMzI4LCAKLSAgICAxMjAzMzIsIDEyMDMzNiwgMTIwMzQwLCAxMjAzNDQsIDEyMDM0OCwgMTIwMzUyLCAxMjAzNTYsIDEyMDM2MCwgMTIwMzY0LCAKLSAgICAxMjAzNjgsIDEyMDM3MiwgMTIwMzc2LCAxMjAzODAsIDEyMDM4NCwgMTIwMzg4LCAxMjAzOTIsIDEyMDM5NiwgMTIwNDAwLCAKLSAgICAxMjA0MDQsIDEyMDQwOCwgMTIwNDEyLCAxMjA0MTYsIDEyMDQyMCwgMTIwNDI0LCAxMjA0MjgsIDEyMDQzMiwgMTIwNDM2LCAKLSAgICAxMjA0NDAsIDEyMDQ0NCwgMTIwNDQ4LCAxMjA0NTIsIDEyMDQ1NiwgMTIwNDYwLCAxMjA0NjQsIDEyMDQ2OCwgMTIwNDcyLCAKLSAgICAxMjA0NzYsIDEyMDQ4MCwgMTIwNDg0LCAxMjA0ODgsIDEyMDQ5MiwgMTIwNDk2LCAxMjA1MDAsIDEyMDUwNCwgMTIwNTA4LCAKLSAgICAxMjA1MTIsIDEyMDUxNiwgMTIwNTIwLCAxMjA1MjQsIDEyMDUyOCwgMTIwNTMyLCAxMjA1MzYsIDEyMDU0MCwgMTIwNTQ0LCAKLSAgICAxMjA1NDgsIDEyMDU1MiwgMTIwNTU2LCAxMjA1NjAsIDEyMDU2NCwgMTIwNTY4LCAxMjA1NzIsIDEyMDU3NiwgMTIwNTgwLCAKLSAgICAxMjA1ODQsIDEyMDU4OCwgMTIwNTkyLCAxMjA1OTYsIDEyMDYwMCwgMTIwNjA0LCAxMjA2MDgsIDEyMDYxMiwgMTIwNjE2LCAKLSAgICAxMjA2MjAsIDEyMDYyNCwgMTIwNjI4LCAxMjA2MzIsIDEyMDYzNiwgMTIwNjQwLCAxMjA2NDQsIDEyMDY0OCwgMTIwNjUyLCAKLSAgICAxMjA2NTYsIDEyMDY2MCwgMTIwNjY0LCAxMjA2NjgsIDEyMDY3MiwgMTIwNjc2LCAxMjA2ODAsIDEyMDY4NCwgMTIwNjg4LCAKLSAgICAxMjA2OTIsIDEyMDY5NiwgMTIwNzAwLCAxMjA3MDQsIDEyMDcwOCwgMTIwNzEyLCAxMjA3MTYsIDEyMDcyMCwgMTIwNzI0LCAKLSAgICAxMjA3MjgsIDEyMDczMiwgMTIwNzM2LCAxMjA3NDAsIDEyMDc0NCwgMTIwNzQ4LCAxMjA3NTIsIDEyMDc1NiwgMTIwNzYwLCAKLSAgICAxMjA3NjQsIDEyMDc2OCwgMTIwNzcyLCAxMjA3NzYsIDEyMDc4MCwgMTIwNzg0LCAxMjA3ODgsIDEyMDc5MiwgMTIwNzk2LCAKLSAgICAxMjA4MDAsIDEyMDgwNCwgMTIwODA4LCAxMjA4MTIsIDEyMDgxNiwgMTIwODIwLCAxMjA4MjQsIDEyMDgyOCwgMTIwODMyLCAKLSAgICAxMjA4MzYsIDEyMDg0MCwgMTIwODQ0LCAxMjA4NDgsIDEyMDg1MiwgMTIwODU2LCAxMjA4NjAsIDEyMDg2NCwgMTIwODY4LCAKLSAgICAxMjA4NzIsIDEyMDg3NiwgMTIwODgwLCAxMjA4ODQsIDEyMDg4OCwgMTIwODkyLCAxMjA4OTYsIDEyMDkwMCwgMTIwOTA0LCAKLSAgICAxMjA5MDgsIDEyMDkxMiwgMTIwOTE2LCAxMjA5MjAsIDEyMDkyNCwgMTIwOTI4LCAxMjA5MzIsIDEyMDkzNiwgMTIwOTQwLCAKLSAgICAxMjA5NDQsIDEyMDk0OCwgMTIwOTUyLCAxMjA5NTYsIDEyMDk2MCwgMTIwOTY0LCAxMjA5NjgsIDEyMDk3MiwgMTIwOTc2LCAKLSAgICAxMjA5ODAsIDEyMDk4NCwgMTIwOTg4LCAxMjA5OTIsIDEyMDk5NiwgMTIxMDAwLCAxMjEwMDQsIDEyMTAwOCwgMTIxMDEyLCAKLSAgICAxMjEwMTYsIDEyMTAyMCwgMTIxMDI0LCAxMjEwMjgsIDEyMTAzMiwgMTIxMDM2LCAxMjEwNDAsIDEyMTA0NCwgMTIxMDQ4LCAKLSAgICAxMjEwNTIsIDEyMTA1NiwgMTIxMDYwLCAxMjEwNjQsIDEyMTA2OCwgMTIxMDcyLCAxMjEwNzYsIDEyMTA4MCwgMTIxMDg0LCAKLSAgICAxMjEwODgsIDEyMTA5MiwgMTIxMDk2LCAxMjExMDAsIDEyMTEwNCwgMTIxMTA4LCAxMjExMTIsIDEyMTExNiwgMTIxMTIwLCAKLSAgICAxMjExMjQsIDEyMTEyOCwgMTIxMTMyLCAxMjExMzYsIDEyMTE0MCwgMTIxMTQ0LCAxMjExNDgsIDEyMTE1MiwgMTIxMTU2LCAKLSAgICAxMjExNjAsIDEyMTE2NCwgMTIxMTY4LCAxMjExNzIsIDEyMTE3NiwgMTIxMTgwLCAxMjExODQsIDEyMTE4OCwgMTIxMTkyLCAKLSAgICAxMjExOTYsIDEyMTIwMCwgMTIxMjA0LCAxMjEyMDgsIDEyMTIxMiwgMTIxMjE2LCAxMjEyMjAsIDEyMTIyNCwgMTIxMjI4LCAKLSAgICAxMjEyMzIsIDEyMTIzNiwgMTIxMjQwLCAxMjEyNDQsIDEyMTI0OCwgMTIxMjUyLCAxMjEyNTYsIDEyMTI2MCwgMTIxMjY0LCAKLSAgICAxMjEyNjgsIDEyMTI3MiwgMTIxMjc2LCAxMjEyODAsIDEyMTI4NCwgMTIxMjg4LCAxMjEyOTIsIDEyMTI5NiwgMTIxMzAwLCAKLSAgICAxMjEzMDQsIDEyMTMwOCwgMTIxMzEyLCAxMjEzMTYsIDEyMTMyMCwgMTIxMzI0LCAxMjEzMjgsIDEyMTMzMiwgMTIxMzM2LCAKLSAgICAxMjEzNDAsIDEyMTM0NCwgMTIxMzQ4LCAxMjEzNTIsIDEyMTM1NiwgMTIxMzYwLCAxMjEzNjQsIDEyMTM2OCwgMTIxMzcyLCAKLSAgICAxMjEzNzYsIDEyMTM4MCwgMTIxMzg0LCAxMjEzODgsIDEyMTM5MiwgMTIxMzk2LCAxMjE0MDAsIDEyMTQwNCwgMTIxNDA4LCAKLSAgICAxMjE0MTIsIDEyMTQxNiwgMTIxNDIwLCAxMjE0MjQsIDEyMTQyOCwgMTIxNDMyLCAxMjE0MzYsIDEyMTQ0MCwgMTIxNDQ0LCAKLSAgICAxMjE0NDgsIDEyMTQ1MiwgMTIxNDU2LCAxMjE0NjAsIDEyMTQ2NCwgMTIxNDY4LCAxMjE0NzIsIDEyMTQ3NiwgMTIxNDgwLCAKLSAgICAxMjE0ODQsIDEyMTQ4OCwgMTIxNDkyLCAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MDgsIDEyMTUxMiwgMTIxNTE2LCAKLSAgICAxMjE1MjAsIDEyMTUyNCwgMTIxNTI4LCAxMjE1MzIsIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAKLSAgICAxMjE1NTYsIDEyMTU2MCwgMTIxNTY0LCAxMjE1NjgsIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAKLSAgICAxMjE1OTIsIDEyMTU5NiwgMTIxNjAwLCAxMjE2MDQsIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAKLSAgICAxMjE2MjgsIDEyMTYzMiwgMTIxNjM2LCAxMjE2NDAsIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAKLSAgICAxMjE2NjQsIDEyMTY2OCwgMTIxNjcyLCAxMjE2NzYsIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDEyMTY5MiwgMTIxNjk2LCAKLSAgICAxMjE3MDAsIDEyMTcwNCwgMTIxNzA4LCAxMjE3MTIsIDEyMTcxNiwgMTIxNzIwLCAxMjE3MjQsIDEyMTcyOCwgMTIxNzMyLCAKLSAgICAxMjE3MzYsIDEyMTc0MCwgMTIxNzQ0LCAxMjE3NDgsIDEyMTc1MiwgMTIxNzU2LCAxMjE3NjAsIDEyMTc2NCwgMTIxNzY4LCAKLSAgICAxMjE3NzIsIDEyMTc3NiwgMTIxNzgwLCAxMjE3ODQsIDEyMTc4OCwgMTIxNzkyLCAxMjE3OTYsIDEyMTgwMCwgMTIxODA0LCAKLSAgICAxMjE4MDgsIDEyMTgxMiwgMTIxODE2LCAxMjE4MjAsIDEyMTgyNCwgMTIxODI4LCAxMjE4MzIsIDEyMTgzNiwgMTIxODQwLCAKLSAgICAxMjE4NDQsIDEyMTg0OCwgMTIxODUyLCAxMjE4NTYsIDEyMTg2MCwgMTIxODY0LCAxMjE4NjgsIDEyMTg3MiwgMTIxODc2LCAKLSAgICAxMjE4ODAsIDEyMTg4NCwgMTIxODg4LCAxMjE4OTIsIDEyMTg5NiwgMTIxOTAwLCAxMjE5MDQsIDEyMTkwOCwgMTIxOTEyLCAKLSAgICAxMjE5MTYsIDEyMTkyMCwgMTIxOTI0LCAxMjE5MjgsIDEyMTkzMiwgMTIxOTM2LCAxMjE5NDAsIDEyMTk0NCwgMTIxOTQ4LCAKLSAgICAxMjE5NTIsIDEyMTk1NiwgMTIxOTYwLCAxMjE5NjQsIDEyMTk2OCwgMTIxOTcyLCAxMjE5NzYsIDEyMTk4MCwgMTIxOTg0LCAKLSAgICAxMjE5ODgsIDEyMTk5MiwgMTIxOTk2LCAxMjIwMDAsIDEyMjAwNCwgMTIyMDA4LCAxMjIwMTIsIDEyMjAxNiwgMTIyMDIwLCAKLSAgICAxMjIwMjQsIDEyMjAyOCwgMTIyMDMyLCAxMjIwMzYsIDEyMjA0MCwgMTIyMDQ0LCAxMjIwNDgsIDEyMjA1MiwgMTIyMDU2LCAKLSAgICAxMjIwNjAsIDEyMjA2NCwgMTIyMDY4LCAxMjIwNzIsIDEyMjA3NiwgMTIyMDgwLCAxMjIwODQsIDEyMjA4OCwgMTIyMDkyLCAKLSAgICAxMjIwOTYsIDEyMjEwMCwgMTIyMTA0LCAxMjIxMDgsIDEyMjExMiwgMTIyMTE2LCAxMjIxMjAsIDEyMjEyNCwgMTIyMTI4LCAKLSAgICAxMjIxMzIsIDEyMjEzNiwgMTIyMTQwLCAxMjIxNDQsIDEyMjE0OCwgMTIyMTUyLCAxMjIxNTYsIDEyMjE2MCwgMTIyMTY0LCAKLSAgICAxMjIxNjgsIDEyMjE3MiwgMTIyMTc2LCAxMjIxODAsIDEyMjE4NCwgMTIyMTg4LCAxMjIxOTIsIDEyMjE5NiwgMTIyMjAwLCAKLSAgICAxMjIyMDQsIDEyMjIwOCwgMTIyMjEyLCAxMjIyMTYsIDEyMjIyMCwgMTIyMjI0LCAxMjIyMjgsIDEyMjIzMiwgMTIyMjM2LCAKLSAgICAxMjIyNDAsIDEyMjI0NCwgMTIyMjQ4LCAxMjIyNTIsIDEyMjI1NiwgMTIyMjYwLCAxMjIyNjQsIDEyMjI2OCwgMTIyMjcyLCAKLSAgICAxMjIyNzYsIDEyMjI4MCwgMTIyMjg0LCAxMjIyODgsIDEyMjI5MiwgMTIyMjk2LCAxMjIzMDAsIDEyMjMwNCwgMTIyMzA4LCAKLSAgICAxMjIzMTIsIDEyMjMxNiwgMTIyMzIwLCAxMjIzMjQsIDEyMjMyOCwgMTIyMzMyLCAxMjIzMzYsIDEyMjM0MCwgMTIyMzQ0LCAKLSAgICAxMjIzNDgsIDEyMjM1MiwgMTIyMzU2LCAxMjIzNjAsIDEyMjM2NCwgMTIyMzY4LCAxMjIzNzIsIDEyMjM3NiwgMTIyMzgwLCAKLSAgICAxMjIzODQsIDEyMjM4OCwgMTIyMzkyLCAxMjIzOTYsIDEyMjQwMCwgMTIyNDA0LCAxMjI0MDgsIDEyMjQxMiwgMTIyNDE2LCAKLSAgICAxMjI0MjAsIDEyMjQyNCwgMTIyNDI4LCAxMjI0MzIsIDEyMjQzNiwgMTIyNDQwLCAxMjI0NDQsIDEyMjQ0OCwgMTIyNDUyLCAKLSAgICAxMjI0NTYsIDEyMjQ2MCwgMTIyNDY0LCAxMjI0NjgsIDEyMjQ3MiwgMTIyNDc2LCAxMjI0ODAsIDEyMjQ4NCwgMTIyNDg4LCAKLSAgICAxMjI0OTIsIDEyMjQ5NiwgMTIyNTAwLCAxMjI1MDQsIDEyMjUwOCwgMTIyNTEyLCAxMjI1MTYsIDEyMjUyMCwgMTIyNTI0LCAKLSAgICAxMjI1MjgsIDEyMjUzMiwgMTIyNTM2LCAxMjI1NDAsIDEyMjU0NCwgMTIyNTQ4LCAxMjI1NTIsIDEyMjU1NiwgMTIyNTYwLCAKLSAgICAxMjI1NjQsIDEyMjU2OCwgMTIyNTcyLCAxMjI1NzYsIDEyMjU4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwODAwLCAKKyAgICAxMjA4MDQsIDEyMDgwOCwgMTIwODEyLCAxMjA4MTYsIDEyMDgyMCwgMTIwODI0LCAxMjA4MjgsIDEyMDgzMiwgMTIwODM2LCAKKyAgICAxMjA4NDAsIDEyMDg0NCwgMTIwODQ4LCAxMjA4NTIsIDEyMDg1NiwgMTIwODYwLCAxMjA4NjQsIDEyMDg2OCwgMTIwODcyLCAKKyAgICAxMjA4NzYsIDEyMDg4MCwgMTIwODg0LCAxMjA4ODgsIDEyMDg5MiwgMTIwODk2LCAxMjA5MDAsIDEyMDkwNCwgMTIwOTA4LCAKKyAgICAxMjA5MTIsIDEyMDkxNiwgMTIwOTIwLCAxMjA5MjQsIDEyMDkyOCwgMTIwOTMyLCAxMjA5MzYsIDEyMDk0MCwgMTIwOTQ0LCAKKyAgICAxMjA5NDgsIDEyMDk1MiwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgMTIwOTY4LCAxMjA5NzIsIDEyMDk3NiwgMTIwOTgwLCAKKyAgICAxMjA5ODQsIDEyMDk4OCwgMTIwOTkyLCAxMjA5OTYsIDEyMTAwMCwgMTIxMDA0LCAxMjEwMDgsIDEyMTAxMiwgMTIxMDE2LCAKKyAgICAxMjEwMjAsIDEyMTAyNCwgMTIxMDI4LCAxMjEwMzIsIDEyMTAzNiwgMTIxMDQwLCAxMjEwNDQsIDEyMTA0OCwgMTIxMDUyLCAKKyAgICAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MiwgMTIxMDc2LCAxMjEwODAsIDEyMTA4NCwgMTIxMDg4LCAKKyAgICAxMjEwOTIsIDEyMTA5NiwgMTIxMTAwLCAxMjExMDQsIDEyMTEwOCwgMTIxMTEyLCAxMjExMTYsIDEyMTEyMCwgMTIxMTI0LCAKKyAgICAxMjExMjgsIDEyMTEzMiwgMTIxMTM2LCAxMjExNDAsIDEyMTE0NCwgMTIxMTQ4LCAxMjExNTIsIDEyMTE1NiwgMTIxMTYwLCAKKyAgICAxMjExNjQsIDEyMTE2OCwgMTIxMTcyLCAxMjExNzYsIDEyMTE4MCwgMTIxMTg0LCAxMjExODgsIDEyMTE5MiwgMTIxMTk2LCAKKyAgICAxMjEyMDAsIDEyMTIwNCwgMTIxMjA4LCAxMjEyMTIsIDEyMTIxNiwgMTIxMjIwLCAxMjEyMjQsIDEyMTIyOCwgMTIxMjMyLCAKKyAgICAxMjEyMzYsIDEyMTI0MCwgMTIxMjQ0LCAxMjEyNDgsIDEyMTI1MiwgMTIxMjU2LCAxMjEyNjAsIDEyMTI2NCwgMTIxMjY4LCAKKyAgICAxMjEyNzIsIDEyMTI3NiwgMTIxMjgwLCAxMjEyODQsIDEyMTI4OCwgMTIxMjkyLCAxMjEyOTYsIDEyMTMwMCwgMTIxMzA0LCAKKyAgICAxMjEzMDgsIDEyMTMxMiwgMTIxMzE2LCAxMjEzMjAsIDEyMTMyNCwgMTIxMzI4LCAxMjEzMzIsIDEyMTMzNiwgMTIxMzQwLCAKKyAgICAxMjEzNDQsIDEyMTM0OCwgMTIxMzUyLCAxMjEzNTYsIDEyMTM2MCwgMTIxMzY0LCAxMjEzNjgsIDEyMTM3MiwgMTIxMzc2LCAKKyAgICAxMjEzODAsIDEyMTM4NCwgMTIxMzg4LCAxMjEzOTIsIDEyMTM5NiwgMTIxNDAwLCAxMjE0MDQsIDEyMTQwOCwgMTIxNDEyLCAKKyAgICAxMjE0MTYsIDEyMTQyMCwgMTIxNDI0LCAxMjE0MjgsIDEyMTQzMiwgMTIxNDM2LCAxMjE0NDAsIDEyMTQ0NCwgMTIxNDQ4LCAKKyAgICAxMjE0NTIsIDEyMTQ1NiwgMTIxNDYwLCAxMjE0NjQsIDEyMTQ2OCwgMTIxNDcyLCAxMjE0NzYsIDEyMTQ4MCwgMTIxNDg0LCAKKyAgICAxMjE0ODgsIDEyMTQ5MiwgMTIxNDk2LCAxMjE1MDAsIDEyMTUwNCwgMTIxNTA4LCAxMjE1MTIsIDEyMTUxNiwgMTIxNTIwLCAKKyAgICAxMjE1MjQsIDEyMTUyOCwgMTIxNTMyLCAxMjE1MzYsIDEyMTU0MCwgMTIxNTQ0LCAxMjE1NDgsIDEyMTU1MiwgMTIxNTU2LCAKKyAgICAxMjE1NjAsIDEyMTU2NCwgMTIxNTY4LCAxMjE1NzIsIDEyMTU3NiwgMTIxNTgwLCAxMjE1ODQsIDEyMTU4OCwgMTIxNTkyLCAKKyAgICAxMjE1OTYsIDEyMTYwMCwgMTIxNjA0LCAxMjE2MDgsIDEyMTYxMiwgMTIxNjE2LCAxMjE2MjAsIDEyMTYyNCwgMTIxNjI4LCAKKyAgICAxMjE2MzIsIDEyMTYzNiwgMTIxNjQwLCAxMjE2NDQsIDEyMTY0OCwgMTIxNjUyLCAxMjE2NTYsIDEyMTY2MCwgMTIxNjY0LCAKKyAgICAxMjE2NjgsIDEyMTY3MiwgMTIxNjc2LCAxMjE2ODAsIDEyMTY4NCwgMTIxNjg4LCAxMjE2OTIsIDEyMTY5NiwgMTIxNzAwLCAKKyAgICAxMjE3MDQsIDEyMTcwOCwgMTIxNzEyLCAxMjE3MTYsIDEyMTcyMCwgMTIxNzI0LCAxMjE3MjgsIDEyMTczMiwgMTIxNzM2LCAKKyAgICAxMjE3NDAsIDEyMTc0NCwgMTIxNzQ4LCAxMjE3NTIsIDEyMTc1NiwgMTIxNzYwLCAxMjE3NjQsIDEyMTc2OCwgMTIxNzcyLCAKKyAgICAxMjE3NzYsIDEyMTc4MCwgMTIxNzg0LCAxMjE3ODgsIDEyMTc5MiwgMTIxNzk2LCAxMjE4MDAsIDEyMTgwNCwgMTIxODA4LCAKKyAgICAxMjE4MTIsIDEyMTgxNiwgMTIxODIwLCAxMjE4MjQsIDEyMTgyOCwgMTIxODMyLCAxMjE4MzYsIDEyMTg0MCwgMTIxODQ0LCAKKyAgICAxMjE4NDgsIDEyMTg1MiwgMTIxODU2LCAxMjE4NjAsIDEyMTg2NCwgMTIxODY4LCAxMjE4NzIsIDEyMTg3NiwgMTIxODgwLCAKKyAgICAxMjE4ODQsIDEyMTg4OCwgMTIxODkyLCAxMjE4OTYsIDEyMTkwMCwgMTIxOTA0LCAxMjE5MDgsIDEyMTkxMiwgMTIxOTE2LCAKKyAgICAxMjE5MjAsIDEyMTkyNCwgMTIxOTI4LCAxMjE5MzIsIDEyMTkzNiwgMTIxOTQwLCAxMjE5NDQsIDEyMTk0OCwgMTIxOTUyLCAKKyAgICAxMjE5NTYsIDEyMTk2MCwgMTIxOTY0LCAxMjE5NjgsIDEyMTk3MiwgMTIxOTc2LCAxMjE5ODAsIDEyMTk4NCwgMTIxOTg4LCAKKyAgICAxMjE5OTIsIDEyMTk5NiwgMTIyMDAwLCAxMjIwMDQsIDEyMjAwOCwgMTIyMDEyLCAxMjIwMTYsIDEyMjAyMCwgMTIyMDI0LCAKKyAgICAxMjIwMjgsIDEyMjAzMiwgMTIyMDM2LCAxMjIwNDAsIDEyMjA0NCwgMTIyMDQ4LCAxMjIwNTIsIDEyMjA1NiwgMTIyMDYwLCAKKyAgICAxMjIwNjQsIDEyMjA2OCwgMTIyMDcyLCAxMjIwNzYsIDEyMjA4MCwgMTIyMDg0LCAxMjIwODgsIDEyMjA5MiwgMTIyMDk2LCAKKyAgICAxMjIxMDAsIDEyMjEwNCwgMTIyMTA4LCAxMjIxMTIsIDEyMjExNiwgMTIyMTIwLCAxMjIxMjQsIDEyMjEyOCwgMTIyMTMyLCAKKyAgICAxMjIxMzYsIDEyMjE0MCwgMTIyMTQ0LCAxMjIxNDgsIDEyMjE1MiwgMTIyMTU2LCAxMjIxNjAsIDEyMjE2NCwgMTIyMTY4LCAKKyAgICAxMjIxNzIsIDEyMjE3NiwgMTIyMTgwLCAxMjIxODQsIDEyMjE4OCwgMTIyMTkyLCAxMjIxOTYsIDEyMjIwMCwgMTIyMjA0LCAKKyAgICAxMjIyMDgsIDEyMjIxMiwgMTIyMjE2LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNiwgMTIyMjQwLCAKKyAgICAxMjIyNDQsIDEyMjI0OCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgMTIyMjY0LCAxMjIyNjgsIDEyMjI3MiwgMTIyMjc2LCAKKyAgICAxMjIyODAsIDEyMjI4NCwgMTIyMjg4LCAxMjIyOTIsIDEyMjI5NiwgMTIyMzAwLCAxMjIzMDQsIDEyMjMwOCwgMTIyMzEyLCAKKyAgICAxMjIzMTYsIDEyMjMyMCwgMTIyMzI0LCAxMjIzMjgsIDEyMjMzMiwgMTIyMzM2LCAxMjIzNDAsIDEyMjM0NCwgMTIyMzQ4LCAKKyAgICAxMjIzNTIsIDEyMjM1NiwgMTIyMzYwLCAxMjIzNjQsIDEyMjM2OCwgMTIyMzcyLCAxMjIzNzYsIDEyMjM4MCwgMTIyMzg0LCAKKyAgICAxMjIzODgsIDEyMjM5MiwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwNCwgMTIyNDA4LCAxMjI0MTIsIDEyMjQxNiwgMTIyNDIwLCAKKyAgICAxMjI0MjQsIDEyMjQyOCwgMTIyNDMyLCAxMjI0MzYsIDEyMjQ0MCwgMTIyNDQ0LCAxMjI0NDgsIDEyMjQ1MiwgMTIyNDU2LCAKKyAgICAxMjI0NjAsIDEyMjQ2NCwgMTIyNDY4LCAxMjI0NzIsIDEyMjQ3NiwgMTIyNDgwLCAxMjI0ODQsIDEyMjQ4OCwgMTIyNDkyLCAKKyAgICAxMjI0OTYsIDEyMjUwMCwgMTIyNTA0LCAxMjI1MDgsIDEyMjUxMiwgMTIyNTE2LCAxMjI1MjAsIDEyMjUyNCwgMTIyNTI4LCAKKyAgICAxMjI1MzIsIDEyMjUzNiwgMTIyNTQwLCAxMjI1NDQsIDEyMjU0OCwgMTIyNTUyLCAxMjI1NTYsIDEyMjU2MCwgMTIyNTY0LCAKKyAgICAxMjI1NjgsIDEyMjU3MiwgMTIyNTc2LCAxMjI1ODAsIDEyMjU4NCwgMTIyNTg4LCAxMjI1OTIsIDEyMjU5NiwgMTIyNjAwLCAKKyAgICAxMjI2MDQsIDEyMjYwOCwgMTIyNjEyLCAxMjI2MTYsIDEyMjYyMCwgMTIyNjI0LCAxMjI2MjgsIDEyMjYzMiwgMTIyNjM2LCAKKyAgICAxMjI2NDAsIDEyMjY0NCwgMTIyNjQ4LCAxMjI2NTIsIDEyMjY1NiwgMTIyNjYwLCAxMjI2NjQsIDEyMjY2OCwgMTIyNjcyLCAKKyAgICAxMjI2NzYsIDEyMjY4MCwgMTIyNjg0LCAxMjI2ODgsIDEyMjY5MiwgMTIyNjk2LCAxMjI3MDAsIDEyMjcwNCwgMTIyNzA4LCAKKyAgICAxMjI3MTIsIDEyMjcxNiwgMTIyNzIwLCAxMjI3MjQsIDEyMjcyOCwgMTIyNzMyLCAxMjI3MzYsIDEyMjc0MCwgMTIyNzQ0LCAKKyAgICAxMjI3NDgsIDEyMjc1MiwgMTIyNzU2LCAxMjI3NjAsIDEyMjc2NCwgMTIyNzY4LCAxMjI3NzIsIDEyMjc3NiwgMTIyNzgwLCAKKyAgICAxMjI3ODQsIDEyMjc4OCwgMTIyNzkyLCAxMjI3OTYsIDEyMjgwMCwgMTIyODA0LCAxMjI4MDgsIDEyMjgxMiwgMTIyODE2LCAKKyAgICAxMjI4MjAsIDEyMjgyNCwgMTIyODI4LCAxMjI4MzIsIDEyMjgzNiwgMTIyODQwLCAxMjI4NDQsIDEyMjg0OCwgMTIyODUyLCAKKyAgICAxMjI4NTYsIDEyMjg2MCwgMTIyODY0LCAxMjI4NjgsIDEyMjg3MiwgMTIyODc2LCAxMjI4ODAsIDEyMjg4NCwgMTIyODg4LCAKKyAgICAxMjI4OTIsIDEyMjg5NiwgMTIyOTAwLCAxMjI5MDQsIDEyMjkwOCwgMTIyOTEyLCAxMjI5MTYsIDEyMjkyMCwgMTIyOTI0LCAKKyAgICAxMjI5MjgsIDEyMjkzMiwgMTIyOTM2LCAxMjI5NDAsIDEyMjk0NCwgMTIyOTQ4LCAxMjI5NTIsIDEyMjk1NiwgMTIyOTYwLCAKKyAgICAxMjI5NjQsIDEyMjk2OCwgMTIyOTcyLCAxMjI5NzYsIDEyMjk4MCwgMTIyOTg0LCAxMjI5ODgsIDEyMjk5MiwgMTIyOTk2LCAKKyAgICAxMjMwMDAsIDEyMzAwNCwgMTIzMDA4LCAxMjMwMTIsIDEyMzAxNiwgMTIzMDIwLCAxMjMwMjQsIDEyMzAyOCwgMTIzMDMyLCAKKyAgICAxMjMwMzYsIDEyMzA0MCwgMTIzMDQ0LCAxMjMwNDgsIDEyMzA1MiwgMTIzMDU2LCAxMjMwNjAsIDEyMzA2NCwgMTIzMDY4LCAKKyAgICAxMjMwNzIsIDEyMzA3NiwgMTIzMDgwLCAxMjMwODQsIDEyMzA4OCwgMTIzMDkyLCAxMjMwOTYsIDEyMzEwMCwgMTIzMTA0LCAKKyAgICAxMjMxMDgsIDEyMzExMiwgMTIzMTE2LCAxMjMxMjAsIDEyMzEyNCwgMTIzMTI4LCAxMjMxMzIsIDEyMzEzNiwgMTIzMTQwLCAKKyAgICAxMjMxNDQsIDEyMzE0OCwgMTIzMTUyLCAxMjMxNTYsIDEyMzE2MCwgMTIzMTY0LCAxMjMxNjgsIDEyMzE3MiwgMTIzMTc2LCAKKyAgICAxMjMxODAsIDEyMzE4NCwgMTIzMTg4LCAxMjMxOTIsIDEyMzE5NiwgMTIzMjAwLCAxMjMyMDQsIDEyMzIwOCwgMTIzMjEyLCAKKyAgICAxMjMyMTYsIDEyMzIyMCwgMTIzMjI0LCAxMjMyMjgsIDEyMzIzMiwgMTIzMjM2LCAxMjMyNDAsIDEyMzI0NCwgMTIzMjQ4LCAKKyAgICAxMjMyNTIsIDEyMzI1NiwgMTIzMjYwLCAxMjMyNjQsIDEyMzI2OCwgMTIzMjcyLCAxMjMyNzYsIDEyMzI4MCwgMTIzMjg0LCAKKyAgICAxMjMyODgsIDEyMzI5MiwgMTIzMjk2LCAxMjMzMDAsIDEyMzMwNCwgMTIzMzA4LCAxMjMzMTIsIDEyMzMxNiwgMTIzMzIwLCAKKyAgICAxMjMzMjQsIDEyMzMyOCwgMTIzMzMyLCAxMjMzMzYsIDEyMzM0MCwgMTIzMzQ0LCAxMjMzNDgsIDEyMzM1MiwgMTIzMzU2LCAKKyAgICAxMjMzNjAsIDEyMzM2NCwgMTIzMzY4LCAxMjMzNzIsIDEyMzM3NiwgMTIzMzgwLCAxMjMzODQsIDEyMzM4OCwgMTIzMzkyLCAKKyAgICAxMjMzOTYsIDEyMzQwMCwgMTIzNDA0LCAxMjM0MDgsIDEyMzQxMiwgMTIzNDE2LCAxMjM0MjAsIDEyMzQyNCwgMTIzNDI4LCAKKyAgICAxMjM0MzIsIDEyMzQzNiwgMTIzNDQwLCAxMjM0NDQsIDEyMzQ0OCwgMTIzNDUyLCAxMjM0NTYsIDEyMzQ2MCwgMTIzNDY0LCAKKyAgICAxMjM0NjgsIDEyMzQ3MiwgMTIzNDc2LCAxMjM0ODAsIDEyMzQ4NCwgMTIzNDg4LCAxMjM0OTIsIDEyMzQ5NiwgMTIzNTAwLCAKKyAgICAxMjM1MDQsIDEyMzUwOCwgMTIzNTEyLCAxMjM1MTYsIDEyMzUyMCwgMTIzNTI0LCAxMjM1MjgsIDEyMzUzMiwgMTIzNTM2LCAKKyAgICAxMjM1NDAsIDEyMzU0NCwgMTIzNTQ4LCAxMjM1NTIsIDEyMzU1NiwgMTIzNTYwLCAxMjM1NjQsIDEyMzU2OCwgMTIzNTcyLCAKKyAgICAxMjM1NzYsIDEyMzU4MCwgMTIzNTg0LCAxMjM1ODgsIDEyMzU5MiwgMTIzNTk2LCAxMjM2MDAsIDEyMzYwNCwgMTIzNjA4LCAKKyAgICAxMjM2MTIsIDEyMzYxNiwgMTIzNjIwLCAxMjM2MjQsIDEyMzYyOCwgMTIzNjMyLCAxMjM2MzYsIDEyMzY0MCwgMTIzNjQ0LCAKKyAgICAxMjM2NDgsIDEyMzY1MiwgMTIzNjU2LCAxMjM2NjAsIDEyMzY2NCwgMTIzNjY4LCAxMjM2NzIsIDEyMzY3NiwgMTIzNjgwLCAKKyAgICAxMjM2ODQsIDEyMzY4OCwgMTIzNjkyLCAxMjM2OTYsIDEyMzcwMCwgMTIzNzA0LCAxMjM3MDgsIDEyMzcxMiwgMTIzNzE2LCAKKyAgICAxMjM3MjAsIDEyMzcyNCwgMTIzNzI4LCAxMjM3MzIsIDEyMzczNiwgMTIzNzQwLCAxMjM3NDQsIDEyMzc0OCwgMTIzNzUyLCAKKyAgICAxMjM3NTYsIDEyMzc2MCwgMTIzNzY0LCAxMjM3NjgsIDEyMzc3MiwgMTIzNzc2LCAxMjM3ODAsIDEyMzc4NCwgMTIzNzg4LCAKKyAgICAxMjM3OTIsIDEyMzc5NiwgMTIzODAwLCAxMjM4MDQsIDEyMzgwOCwgMTIzODEyLCAxMjM4MTYsIDEyMzgyMCwgMTIzODI0LCAKKyAgICAxMjM4MjgsIDEyMzgzMiwgMTIzODM2LCAxMjM4NDAsIDEyMzg0NCwgMTIzODQ4LCAxMjM4NTIsIDEyMzg1NiwgMTIzODYwLCAKKyAgICAxMjM4NjQsIDEyMzg2OCwgMTIzODcyLCAxMjM4NzYsIDEyMzg4MCwgMTIzODg0LCAxMjM4ODgsIDEyMzg5MiwgMTIzODk2LCAKKyAgICAxMjM5MDAsIDEyMzkwNCwgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNiwgMTIzOTIwLCAxMjM5MjQsIDEyMzkyOCwgMTIzOTMyLCAKKyAgICAxMjM5MzYsIDEyMzk0MCwgMTIzOTQ0LCAxMjM5NDgsIDEyMzk1MiwgMTIzOTU2LCAxMjM5NjAsIDEyMzk2NCwgMTIzOTY4LCAKKyAgICAxMjM5NzIsIDEyMzk3NiwgMTIzOTgwLCAxMjM5ODQsIDEyMzk4OCwgMTIzOTkyLCAxMjM5OTYsIDEyNDAwMCwgMTI0MDA0LCAKKyAgICAxMjQwMDgsIDEyNDAxMiwgMTI0MDE2LCAxMjQwMjAsIDEyNDAyNCwgMTI0MDI4LCAxMjQwMzIsIDEyNDAzNiwgMTI0MDQwLCAKKyAgICAxMjQwNDQsIDEyNDA0OCwgMTI0MDUyLCAxMjQwNTYsIDEyNDA2MCwgMTI0MDY0LCAxMjQwNjgsIDEyNDA3MiwgMTI0MDc2LCAKKyAgICAxMjQwODAsIDEyNDA4NCwgMTI0MDg4LCAxMjQwOTIsIDEyNDA5NiwgMTI0MTAwLCAxMjQxMDQsIDEyNDEwOCwgMTI0MTEyLCAKKyAgICAxMjQxMTYsIDEyNDEyMCwgMTI0MTI0LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM2LCAxMjQxNDAsIDEyNDE0NCwgMTI0MTQ4LCAKKyAgICAxMjQxNTIsIDEyNDE1NiwgMTI0MTYwLCAxMjQxNjQsIDEyNDE2OCwgMTI0MTcyLCAxMjQxNzYsIDEyNDE4MCwgMTI0MTg0LCAKKyAgICAxMjQxODgsIDEyNDE5MiwgMTI0MTk2LCAxMjQyMDAsIDEyNDIwNCwgMTI0MjA4LCAxMjQyMTIsIDEyNDIxNiwgMTI0MjIwLCAKKyAgICAxMjQyMjQsIDEyNDIyOCwgMTI0MjMyLCAxMjQyMzYsIDEyNDI0MCwgMTI0MjQ0LCAxMjQyNDgsIDEyNDI1MiwgMTI0MjU2LCAKKyAgICAxMjQyNjAsIDEyNDI2NCwgMTI0MjY4LCAxMjQyNzIsIDEyNDI3NiwgMTI0MjgwLCAxMjQyODQsIDEyNDI4OCwgMTI0MjkyLCAKKyAgICAxMjQyOTYsIDEyNDMwMCwgMTI0MzA0LCAxMjQzMDgsIDEyNDMxMiwgMTI0MzE2LCAxMjQzMjAsIDEyNDMyNCwgMTI0MzI4LCAKKyAgICAxMjQzMzIsIDEyNDMzNiwgMTI0MzQwLCAxMjQzNDQsIDEyNDM0OCwgMTI0MzUyLCAxMjQzNTYsIDEyNDM2MCwgMTI0MzY0LCAKKyAgICAxMjQzNjgsIDEyNDM3MiwgMTI0Mzc2LCAxMjQzODAsIDEyNDM4NCwgMTI0Mzg4LCAxMjQzOTIsIDEyNDM5NiwgMTI0NDAwLCAKKyAgICAxMjQ0MDQsIDEyNDQwOCwgMTI0NDEyLCAxMjQ0MTYsIDEyNDQyMCwgMTI0NDI0LCAxMjQ0MjgsIDEyNDQzMiwgMTI0NDM2LCAKKyAgICAxMjQ0NDAsIDEyNDQ0NCwgMTI0NDQ4LCAxMjQ0NTIsIDEyNDQ1NiwgMTI0NDYwLCAxMjQ0NjQsIDEyNDQ2OCwgMTI0NDcyLCAKKyAgICAxMjQ0NzYsIDEyNDQ4MCwgMTI0NDg0LCAxMjQ0ODgsIDEyNDQ5MiwgMTI0NDk2LCAxMjQ1MDAsIDEyNDUwNCwgMTI0NTA4LCAKKyAgICAxMjQ1MTIsIDEyNDUxNiwgMTI0NTIwLCAxMjQ1MjQsIDEyNDUyOCwgMTI0NTMyLCAxMjQ1MzYsIDEyNDU0MCwgMTI0NTQ0LCAKKyAgICAxMjQ1NDgsIDEyNDU1MiwgMTI0NTU2LCAxMjQ1NjAsIDEyNDU2NCwgMTI0NTY4LCAxMjQ1NzIsIDEyNDU3NiwgMTI0NTgwLCAKKyAgICAxMjQ1ODQsIDEyNDU4OCwgMTI0NTkyLCAxMjQ1OTYsIDEyNDYwMCwgMTI0NjA0LCAxMjQ2MDgsIDEyNDYxMiwgMTI0NjE2LCAKKyAgICAxMjQ2MjAsIDEyNDYyNCwgMTI0NjI4LCAxMjQ2MzIsIDEyNDYzNiwgMTI0NjQwLCAxMjQ2NDQsIDEyNDY0OCwgMTI0NjUyLCAKKyAgICAxMjQ2NTYsIDEyNDY2MCwgMTI0NjY0LCAxMjQ2NjgsIDEyNDY3MiwgMTI0Njc2LCAxMjQ2ODAsIDEyNDY4NCwgMTI0Njg4LCAKKyAgICAxMjQ2OTIsIDEyNDY5NiwgMTI0NzAwLCAxMjQ3MDQsIDEyNDcwOCwgMTI0NzEyLCAxMjQ3MTYsIDEyNDcyMCwgMTI0NzI0LCAKKyAgICAxMjQ3MjgsIDEyNDczMiwgMTI0NzM2LCAxMjQ3NDAsIDEyNDc0NCwgMTI0NzQ4LCAxMjQ3NTIsIDEyNDc1NiwgMTI0NzYwLCAKKyAgICAxMjQ3NjQsIDEyNDc2OCwgMTI0NzcyLCAxMjQ3NzYsIDEyNDc4MCwgMTI0Nzg0LCAxMjQ3ODgsIDEyNDc5MiwgMTI0Nzk2LCAKKyAgICAxMjQ4MDAsIDEyNDgwNCwgMTI0ODA4LCAxMjQ4MTIsIDEyNDgxNiwgMTI0ODIwLCAxMjQ4MjQsIDEyNDgyOCwgMTI0ODMyLCAKKyAgICAxMjQ4MzYsIDEyNDg0MCwgMTI0ODQ0LCAxMjQ4NDgsIDEyNDg1MiwgMTI0ODU2LCAxMjQ4NjAsIDEyNDg2NCwgMTI0ODY4LCAKKyAgICAxMjQ4NzIsIDEyNDg3NiwgMTI0ODgwLCAxMjQ4ODQsIDEyNDg4OCwgMTI0ODkyLCAxMjQ4OTYsIDEyNDkwMCwgMTI0OTA0LCAKKyAgICAxMjQ5MDgsIDEyNDkxMiwgMTI0OTE2LCAxMjQ5MjAsIDEyNDkyNCwgMTI0OTI4LCAxMjQ5MzIsIDEyNDkzNiwgMTI0OTQwLCAKKyAgICAxMjQ5NDQsIDEyNDk0OCwgMTI0OTUyLCAxMjQ5NTYsIDEyNDk2MCwgMTI0OTY0LCAxMjQ5NjgsIDEyNDk3MiwgMTI0OTc2LCAKKyAgICAxMjQ5ODAsIDEyNDk4NCwgMTI0OTg4LCAxMjQ5OTIsIDEyNDk5NiwgMTI1MDAwLCAxMjUwMDQsIDEyNTAwOCwgMTI1MDEyLCAKKyAgICAxMjUwMTYsIDEyNTAyMCwgMTI1MDI0LCAxMjUwMjgsIDEyNTAzMiwgMTI1MDM2LCAxMjUwNDAsIDEyNTA0NCwgMTI1MDQ4LCAKKyAgICAxMjUwNTIsIDEyNTA1NiwgMTI1MDYwLCAxMjUwNjQsIDEyNTA2OCwgMTI1MDcyLCAxMjUwNzYsIDEyNTA4MCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTIyOCw3MSArMjAzODMsNzIgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjI1ODQsIDEyMjU4OCwgMTIyNTkyLCAxMjI1OTYsIDEyMjYwMCwgMTIyNjA0LCAxMjI2MDgsIAotICAgIDEyMjYxMiwgMTIyNjE2LCAxMjI2MjAsIDEyMjYyNCwgMTIyNjI4LCAxMjI2MzIsIDEyMjYzNiwgMTIyNjQwLCAxMjI2NDQsIAotICAgIDEyMjY0OCwgMTIyNjUyLCAxMjI2NTYsIDEyMjY2MCwgMTIyNjY0LCAxMjI2NjgsIDEyMjY3MiwgMTIyNjc2LCAxMjI2ODAsIAotICAgIDEyMjY4NCwgMTIyNjg4LCAxMjI2OTIsIDEyMjY5NiwgMTIyNzAwLCAxMjI3MDQsIDEyMjcwOCwgMTIyNzEyLCAxMjI3MTYsIAotICAgIDEyMjcyMCwgMTIyNzI0LCAxMjI3MjgsIDEyMjczMiwgMTIyNzM2LCAxMjI3NDAsIDEyMjc0NCwgMTIyNzQ4LCAxMjI3NTIsIAotICAgIDEyMjc1NiwgMTIyNzYwLCAxMjI3NjQsIDEyMjc2OCwgMTIyNzcyLCAxMjI3NzYsIDEyMjc4MCwgMTIyNzg0LCAxMjI3ODgsIAotICAgIDEyMjc5MiwgMTIyNzk2LCAxMjI4MDAsIDEyMjgwNCwgMTIyODA4LCAxMjI4MTIsIDEyMjgxNiwgMTIyODIwLCAxMjI4MjQsIAotICAgIDEyMjgyOCwgMTIyODMyLCAxMjI4MzYsIDEyMjg0MCwgMTIyODQ0LCAxMjI4NDgsIDEyMjg1MiwgMTIyODU2LCAxMjI4NjAsIAotICAgIDEyMjg2NCwgMTIyODY4LCAxMjI4NzIsIDEyMjg3NiwgMTIyODgwLCAxMjI4ODQsIDEyMjg4OCwgMTIyODkyLCAxMjI4OTYsIAotICAgIDEyMjkwMCwgMTIyOTA0LCAxMjI5MDgsIDEyMjkxMiwgMTIyOTE2LCAxMjI5MjAsIDEyMjkyNCwgMTIyOTI4LCAxMjI5MzIsIAotICAgIDEyMjkzNiwgMTIyOTQwLCAxMjI5NDQsIDEyMjk0OCwgMTIyOTUyLCAxMjI5NTYsIDEyMjk2MCwgMTIyOTY0LCAxMjI5NjgsIAotICAgIDEyMjk3MiwgMTIyOTc2LCAxMjI5ODAsIDEyMjk4NCwgMTIyOTg4LCAxMjI5OTIsIDEyMjk5NiwgMTIzMDAwLCAxMjMwMDQsIAotICAgIDEyMzAwOCwgMTIzMDEyLCAxMjMwMTYsIDEyMzAyMCwgMTIzMDI0LCAxMjMwMjgsIDEyMzAzMiwgMTIzMDM2LCAxMjMwNDAsIAotICAgIDEyMzA0NCwgMTIzMDQ4LCAxMjMwNTIsIDEyMzA1NiwgMTIzMDYwLCAxMjMwNjQsIDEyMzA2OCwgMTIzMDcyLCAxMjMwNzYsIAotICAgIDEyMzA4MCwgMTIzMDg0LCAxMjMwODgsIDEyMzA5MiwgMTIzMDk2LCAxMjMxMDAsIDEyMzEwNCwgMTIzMTA4LCAxMjMxMTIsIAotICAgIDEyMzExNiwgMTIzMTIwLCAxMjMxMjQsIDEyMzEyOCwgMTIzMTMyLCAxMjMxMzYsIDEyMzE0MCwgMTIzMTQ0LCAxMjMxNDgsIAotICAgIDEyMzE1MiwgMTIzMTU2LCAxMjMxNjAsIDEyMzE2NCwgMTIzMTY4LCAxMjMxNzIsIDEyMzE3NiwgMTIzMTgwLCAxMjMxODQsIAotICAgIDEyMzE4OCwgMTIzMTkyLCAxMjMxOTYsIDEyMzIwMCwgMTIzMjA0LCAxMjMyMDgsIDEyMzIxMiwgMTIzMjE2LCAxMjMyMjAsIAotICAgIDEyMzIyNCwgMTIzMjI4LCAxMjMyMzIsIDEyMzIzNiwgMTIzMjQwLCAxMjMyNDQsIDEyMzI0OCwgMTIzMjUyLCAxMjMyNTYsIAotICAgIDEyMzI2MCwgMTIzMjY0LCAxMjMyNjgsIDEyMzI3MiwgMTIzMjc2LCAxMjMyODAsIDEyMzI4NCwgMTIzMjg4LCAxMjMyOTIsIAotICAgIDEyMzI5NiwgMTIzMzAwLCAxMjMzMDQsIDEyMzMwOCwgMTIzMzEyLCAxMjMzMTYsIDEyMzMyMCwgMTIzMzI0LCAxMjMzMjgsIAotICAgIDEyMzMzMiwgMTIzMzM2LCAxMjMzNDAsIDEyMzM0NCwgMTIzMzQ4LCAxMjMzNTIsIDEyMzM1NiwgMTIzMzYwLCAxMjMzNjQsIAotICAgIDEyMzM2OCwgMTIzMzcyLCAxMjMzNzYsIDEyMzM4MCwgMTIzMzg0LCAxMjMzODgsIDEyMzM5MiwgMTIzMzk2LCAxMjM0MDAsIAotICAgIDEyMzQwNCwgMTIzNDA4LCAxMjM0MTIsIDEyMzQxNiwgMTIzNDIwLCAxMjM0MjQsIDEyMzQyOCwgMTIzNDMyLCAxMjM0MzYsIAotICAgIDEyMzQ0MCwgMTIzNDQ0LCAxMjM0NDgsIDEyMzQ1MiwgMTIzNDU2LCAxMjM0NjAsIDEyMzQ2NCwgMTIzNDY4LCAxMjM0NzIsIAotICAgIDEyMzQ3NiwgMTIzNDgwLCAxMjM0ODQsIDEyMzQ4OCwgMTIzNDkyLCAxMjM0OTYsIDEyMzUwMCwgMTIzNTA0LCAxMjM1MDgsIAotICAgIDEyMzUxMiwgMTIzNTE2LCAxMjM1MjAsIDEyMzUyNCwgMTIzNTI4LCAxMjM1MzIsIDEyMzUzNiwgMTIzNTQwLCAxMjM1NDQsIAotICAgIDEyMzU0OCwgMTIzNTUyLCAxMjM1NTYsIDEyMzU2MCwgMTIzNTY0LCAxMjM1NjgsIDEyMzU3MiwgMTIzNTc2LCAxMjM1ODAsIAotICAgIDEyMzU4NCwgMTIzNTg4LCAxMjM1OTIsIDEyMzU5NiwgMTIzNjAwLCAxMjM2MDQsIDEyMzYwOCwgMTIzNjEyLCAxMjM2MTYsIAotICAgIDEyMzYyMCwgMTIzNjI0LCAxMjM2MjgsIDEyMzYzMiwgMTIzNjM2LCAxMjM2NDAsIDEyMzY0NCwgMTIzNjQ4LCAxMjM2NTIsIAotICAgIDEyMzY1NiwgMTIzNjYwLCAxMjM2NjQsIDEyMzY2OCwgMTIzNjcyLCAxMjM2NzYsIDEyMzY4MCwgMTIzNjg0LCAxMjM2ODgsIAotICAgIDEyMzY5MiwgMTIzNjk2LCAxMjM3MDAsIDEyMzcwNCwgMTIzNzA4LCAxMjM3MTIsIDEyMzcxNiwgMTIzNzIwLCAxMjM3MjQsIAotICAgIDEyMzcyOCwgMTIzNzMyLCAxMjM3MzYsIDEyMzc0MCwgMTIzNzQ0LCAxMjM3NDgsIDEyMzc1MiwgMTIzNzU2LCAxMjM3NjAsIAotICAgIDEyMzc2NCwgMTIzNzY4LCAxMjM3NzIsIDEyMzc3NiwgMTIzNzgwLCAxMjM3ODQsIDEyMzc4OCwgMTIzNzkyLCAxMjM3OTYsIAotICAgIDEyMzgwMCwgMTIzODA0LCAxMjM4MDgsIDEyMzgxMiwgMTIzODE2LCAxMjM4MjAsIDEyMzgyNCwgMTIzODI4LCAxMjM4MzIsIAotICAgIDEyMzgzNiwgMTIzODQwLCAxMjM4NDQsIDEyMzg0OCwgMTIzODUyLCAxMjM4NTYsIDEyMzg2MCwgMTIzODY0LCAxMjM4NjgsIAotICAgIDEyMzg3MiwgMTIzODc2LCAxMjM4ODAsIDEyMzg4NCwgMTIzODg4LCAxMjM4OTIsIDEyMzg5NiwgMTIzOTAwLCAxMjM5MDQsIAotICAgIDEyMzkwOCwgMTIzOTEyLCAxMjM5MTYsIDEyMzkyMCwgMTIzOTI0LCAxMjM5MjgsIDEyMzkzMiwgMTIzOTM2LCAxMjM5NDAsIAotICAgIDEyMzk0NCwgMTIzOTQ4LCAxMjM5NTIsIDEyMzk1NiwgMTIzOTYwLCAxMjM5NjQsIDEyMzk2OCwgMTIzOTcyLCAxMjM5NzYsIAotICAgIDEyMzk4MCwgMTIzOTg0LCAxMjM5ODgsIDEyMzk5MiwgMTIzOTk2LCAxMjQwMDAsIDEyNDAwNCwgMTI0MDA4LCAxMjQwMTIsIAotICAgIDEyNDAxNiwgMTI0MDIwLCAxMjQwMjQsIDEyNDAyOCwgMTI0MDMyLCAxMjQwMzYsIDEyNDA0MCwgMTI0MDQ0LCAxMjQwNDgsIAotICAgIDEyNDA1MiwgMTI0MDU2LCAxMjQwNjAsIDEyNDA2NCwgMTI0MDY4LCAxMjQwNzIsIDEyNDA3NiwgMTI0MDgwLCAxMjQwODQsIAotICAgIDEyNDA4OCwgMTI0MDkyLCAxMjQwOTYsIDEyNDEwMCwgMTI0MTA0LCAxMjQxMDgsIDEyNDExMiwgMTI0MTE2LCAxMjQxMjAsIAotICAgIDEyNDEyNCwgMTI0MTI4LCAxMjQxMzIsIDEyNDEzNiwgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgMTI0MTUyLCAxMjQxNTYsIAotICAgIDEyNDE2MCwgMTI0MTY0LCAxMjQxNjgsIDEyNDE3MiwgMTI0MTc2LCAxMjQxODAsIDEyNDE4NCwgMTI0MTg4LCAxMjQxOTIsIAotICAgIDEyNDE5NiwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwOCwgMTI0MjEyLCAxMjQyMTYsIDEyNDIyMCwgMTI0MjI0LCAxMjQyMjgsIAotICAgIDEyNDIzMiwgMTI0MjM2LCAxMjQyNDAsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgMTI0MjYwLCAxMjQyNjQsIAotICAgIDEyNDI2OCwgMTI0MjcyLCAxMjQyNzYsIDEyNDI4MCwgMTI0Mjg0LCAxMjQyODgsIDEyNDI5MiwgMTI0Mjk2LCAxMjQzMDAsIAotICAgIDEyNDMwNCwgMTI0MzA4LCAxMjQzMTIsIDEyNDMxNiwgMTI0MzI2LCAxMjQzMzAsIDEyNDMzNCwgMTI0MzM4LCAxMjQzNDIsIAotICAgIDEyNDM0NiwgMTI0MzUwLCAxMjQzNTQsIDEyNDM1OCwgMTI0MzYyLCAxMjQzNjYsIDEyNDM3MCwgMTI0Mzc1LCAxMjQzNzksIAotICAgIDEyNDM4MywgMTI0Mzg3LCAxMjQzOTEsIDEyNDM5NSwgMTI0Mzk5LCAxMjQ0MDMsIDEyNDQwNywgMTI0NDExLCAxMjQ0MTUsIAotICAgIDEyNDQxOSwgMTI0NDIzLCAxMjQ0MjcsIDEyNDQzMSwgMTI0NDM1LCAxMjQ0MzksIDEyNDQ0OCwgMTI0NDU3LCAxMjQ0NjEsIAotICAgIDEyNDQ2NSwgMTI0NDY5LCAxMjQ0NzMsIDEyNDQ3NywgMTI0NDgxLCAxMjQ0ODUsIDEyNDQ4OSwgMTI0NDkzLCAxMjQ0OTcsIAotICAgIDEyNDUwMSwgMTI0NTA1LCAxMjQ1MDksIDEyNDUxMywgMTI0NTE3LCAxMjQ1MjEsIDEyNDUyNSwgMTI0NTI5LCAxMjQ1MzMsIAotICAgIDEyNDUzNywgMTI0NTQxLCAxMjQ1NDUsIDEyNDU0OSwgMTI0NTUzLCAxMjQ1NTcsIDEyNDU2MSwgMTI0NTY1LCAxMjQ1NjksIAotICAgIDEyNDU3MywgMTI0NTc3LCAxMjQ1ODEsIDEyNDU4NSwgMTI0NTg5LCAxMjQ1OTMsIDEyNDU5NywgMTI0NjAxLCAxMjQ2MDUsIAotICAgIDEyNDYwOSwgMTI0NjEzLCAxMjQ2MTcsIDEyNDYyMSwgMTI0NjI1LCAxMjQ2MjksIDEyNDYzMywgMTI0NjM3LCAxMjQ2NDEsIAotICAgIDEyNDY0NSwgMTI0NjQ5LCAxMjQ2NTMsIDEyNDY1NywgMTI0NjYxLCAxMjQ2NjUsIDEyNDY2OSwgMTI0NjczLCAxMjQ2NzcsIAotICAgIDEyNDY4MSwgMTI0Njg1LCAxMjQ2ODksIDEyNDY5MywgMTI0Njk3LCAxMjQ3MDEsIDEyNDcwNSwgMTI0NzA5LCAxMjQ3MTMsIAotICAgIDEyNDcxNywgMTI0NzIxLCAxMjQ3MjUsIDEyNDcyOSwgMTI0NzMzLCAxMjQ3MzcsIDEyNDc0MSwgMTI0NzQ1LCAxMjQ3NDksIAotICAgIDEyNDc1MywgMTI0NzU3LCAxMjQ3NjEsIDEyNDc2NSwgMTI0NzY5LCAxMjQ3NzMsIDEyNDc3NywgMTI0NzgxLCAxMjQ3ODUsIAotICAgIDEyNDc4OSwgMTI0NzkzLCAxMjQ3OTcsIDEyNDgwMSwgMTI0ODA1LCAxMjQ4MDksIDEyNDgxMywgMTI0ODE3LCAxMjQ4MjEsIAotICAgIDEyNDgyNSwgMTI0ODI5LCAxMjQ4MzMsIDEyNDgzNywgMTI0ODQxLCAxMjQ4NDUsIDEyNDg0OSwgMTI0ODUzLCAxMjQ4NTcsIAotICAgIDEyNDg2MSwgMTI0ODY1LCAxMjQ4NjksIDEyNDg3MywgMTI0ODc3LCAxMjQ4ODEsIDEyNDg4NSwgMTI0ODg5LCAxMjQ4OTMsIAotICAgIDEyNDg5NywgMTI0OTAxLCAxMjQ5MDUsIDEyNDkwOSwgMTI0OTEzLCAxMjQ5MTcsIDEyNDkyMSwgMTI0OTI1LCAxMjQ5MjksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTA4NCwgMTI1MDg4LCAxMjUwOTIsIDEyNTA5NiwgCisgICAgMTI1MTAwLCAxMjUxMDQsIDEyNTEwOCwgMTI1MTEyLCAxMjUxMTYsIDEyNTEyMCwgMTI1MTI0LCAxMjUxMjgsIDEyNTEzMiwgCisgICAgMTI1MTM2LCAxMjUxNDAsIDEyNTE0NCwgMTI1MTQ4LCAxMjUxNTIsIDEyNTE1NiwgMTI1MTYwLCAxMjUxNjQsIDEyNTE2OCwgCisgICAgMTI1MTcyLCAxMjUxNzYsIDEyNTE4MCwgMTI1MTg0LCAxMjUxODgsIDEyNTE5MiwgMTI1MTk2LCAxMjUyMDAsIDEyNTIwNCwgCisgICAgMTI1MjA4LCAxMjUyMTIsIDEyNTIxNiwgMTI1MjIwLCAxMjUyMjQsIDEyNTIyOCwgMTI1MjMyLCAxMjUyMzYsIDEyNTI0MCwgCisgICAgMTI1MjQ0LCAxMjUyNDgsIDEyNTI1MiwgMTI1MjU2LCAxMjUyNjAsIDEyNTI2NCwgMTI1MjY4LCAxMjUyNzIsIDEyNTI3NiwgCisgICAgMTI1MjgwLCAxMjUyODQsIDEyNTI4OCwgMTI1MjkyLCAxMjUyOTYsIDEyNTMwMCwgMTI1MzA0LCAxMjUzMDgsIDEyNTMxMiwgCisgICAgMTI1MzE2LCAxMjUzMjAsIDEyNTMyNCwgMTI1MzI4LCAxMjUzMzIsIDEyNTMzNiwgMTI1MzQwLCAxMjUzNDQsIDEyNTM0OCwgCisgICAgMTI1MzUyLCAxMjUzNTYsIDEyNTM2MCwgMTI1MzY0LCAxMjUzNjgsIDEyNTM3MiwgMTI1Mzc2LCAxMjUzODAsIDEyNTM4NCwgCisgICAgMTI1Mzg4LCAxMjUzOTIsIDEyNTM5NiwgMTI1NDAwLCAxMjU0MDQsIDEyNTQwOCwgMTI1NDEyLCAxMjU0MTYsIDEyNTQyMCwgCisgICAgMTI1NDI0LCAxMjU0MjgsIDEyNTQzMiwgMTI1NDM2LCAxMjU0NDAsIDEyNTQ0NCwgMTI1NDQ4LCAxMjU0NTIsIDEyNTQ1NiwgCisgICAgMTI1NDYwLCAxMjU0NjQsIDEyNTQ2OCwgMTI1NDcyLCAxMjU0NzYsIDEyNTQ4MCwgMTI1NDg0LCAxMjU0ODgsIDEyNTQ5MiwgCisgICAgMTI1NDk2LCAxMjU1MDAsIDEyNTUwNCwgMTI1NTA4LCAxMjU1MTIsIDEyNTUxNiwgMTI1NTIwLCAxMjU1MjQsIDEyNTUyOCwgCisgICAgMTI1NTMyLCAxMjU1MzYsIDEyNTU0MCwgMTI1NTQ0LCAxMjU1NDgsIDEyNTU1MiwgMTI1NTU2LCAxMjU1NjAsIDEyNTU2NCwgCisgICAgMTI1NTY4LCAxMjU1NzIsIDEyNTU3NiwgMTI1NTgwLCAxMjU1ODQsIDEyNTU4OCwgMTI1NTkyLCAxMjU1OTYsIDEyNTYwMCwgCisgICAgMTI1NjA0LCAxMjU2MDgsIDEyNTYxMiwgMTI1NjE2LCAxMjU2MjAsIDEyNTYyNCwgMTI1NjI4LCAxMjU2MzIsIDEyNTYzNiwgCisgICAgMTI1NjQwLCAxMjU2NDQsIDEyNTY0OCwgMTI1NjUyLCAxMjU2NTYsIDEyNTY2MCwgMTI1NjY0LCAxMjU2NjgsIDEyNTY3MiwgCisgICAgMTI1Njc2LCAxMjU2ODAsIDEyNTY4NCwgMTI1Njg4LCAxMjU2OTIsIDEyNTY5NiwgMTI1NzAwLCAxMjU3MDQsIDEyNTcwOCwgCisgICAgMTI1NzEyLCAxMjU3MTYsIDEyNTcyMCwgMTI1NzI0LCAxMjU3MjgsIDEyNTczMiwgMTI1NzM2LCAxMjU3NDAsIDEyNTc0NCwgCisgICAgMTI1NzQ4LCAxMjU3NTIsIDEyNTc1NiwgMTI1NzYwLCAxMjU3NjQsIDEyNTc2OCwgMTI1NzcyLCAxMjU3NzYsIDEyNTc4MCwgCisgICAgMTI1Nzg0LCAxMjU3ODgsIDEyNTc5MiwgMTI1Nzk2LCAxMjU4MDAsIDEyNTgwNCwgMTI1ODA4LCAxMjU4MTIsIDEyNTgxNiwgCisgICAgMTI1ODIwLCAxMjU4MjQsIDEyNTgyOCwgMTI1ODMyLCAxMjU4MzYsIDEyNTg0MCwgMTI1ODQ0LCAxMjU4NDgsIDEyNTg1MiwgCisgICAgMTI1ODU2LCAxMjU4NjAsIDEyNTg2NCwgMTI1ODY4LCAxMjU4NzIsIDEyNTg3NiwgMTI1ODgwLCAxMjU4ODQsIDEyNTg4OCwgCisgICAgMTI1ODkyLCAxMjU4OTYsIDEyNTkwMCwgMTI1OTA0LCAxMjU5MDgsIDEyNTkxMiwgMTI1OTE2LCAxMjU5MjAsIDEyNTkyNCwgCisgICAgMTI1OTI4LCAxMjU5MzIsIDEyNTkzNiwgMTI1OTQwLCAxMjU5NDQsIDEyNTk0OCwgMTI1OTUyLCAxMjU5NTYsIDEyNTk2MCwgCisgICAgMTI1OTY0LCAxMjU5NjgsIDEyNTk3MiwgMTI1OTc2LCAxMjU5ODAsIDEyNTk4NCwgMTI1OTg4LCAxMjU5OTIsIDEyNTk5NiwgCisgICAgMTI2MDAwLCAxMjYwMDQsIDEyNjAwOCwgMTI2MDEyLCAxMjYwMTYsIDEyNjAyMCwgMTI2MDI0LCAxMjYwMjgsIDEyNjAzMiwgCisgICAgMTI2MDM2LCAxMjYwNDAsIDEyNjA0NCwgMTI2MDQ4LCAxMjYwNTIsIDEyNjA1NiwgMTI2MDYwLCAxMjYwNjQsIDEyNjA2OCwgCisgICAgMTI2MDcyLCAxMjYwNzYsIDEyNjA4MCwgMTI2MDg0LCAxMjYwODgsIDEyNjA5MiwgMTI2MDk2LCAxMjYxMDAsIDEyNjEwNCwgCisgICAgMTI2MTA4LCAxMjYxMTIsIDEyNjExNiwgMTI2MTIwLCAxMjYxMjQsIDEyNjEyOCwgMTI2MTMyLCAxMjYxMzYsIDEyNjE0MCwgCisgICAgMTI2MTQ0LCAxMjYxNDgsIDEyNjE1MiwgMTI2MTU2LCAxMjYxNjAsIDEyNjE2NCwgMTI2MTY4LCAxMjYxNzIsIDEyNjE3NiwgCisgICAgMTI2MTgwLCAxMjYxODQsIDEyNjE4OCwgMTI2MTkyLCAxMjYxOTYsIDEyNjIwMCwgMTI2MjA0LCAxMjYyMDgsIDEyNjIxMiwgCisgICAgMTI2MjE2LCAxMjYyMjAsIDEyNjIyNCwgMTI2MjI4LCAxMjYyMzIsIDEyNjIzNiwgMTI2MjQwLCAxMjYyNDQsIDEyNjI0OCwgCisgICAgMTI2MjUyLCAxMjYyNTYsIDEyNjI2MCwgMTI2MjY0LCAxMjYyNjgsIDEyNjI3MiwgMTI2Mjc2LCAxMjYyODAsIDEyNjI4NCwgCisgICAgMTI2Mjg4LCAxMjYyOTIsIDEyNjI5NiwgMTI2MzAwLCAxMjYzMDQsIDEyNjMwOCwgMTI2MzEyLCAxMjYzMTYsIDEyNjMyMCwgCisgICAgMTI2MzI0LCAxMjYzMjgsIDEyNjMzMiwgMTI2MzM2LCAxMjYzNDAsIDEyNjM0NCwgMTI2MzQ4LCAxMjYzNTIsIDEyNjM1NiwgCisgICAgMTI2MzYwLCAxMjYzNjQsIDEyNjM2OCwgMTI2MzcyLCAxMjYzNzYsIDEyNjM4MCwgMTI2Mzg0LCAxMjYzODgsIDEyNjM5MiwgCisgICAgMTI2Mzk2LCAxMjY0MDAsIDEyNjQwNCwgMTI2NDA4LCAxMjY0MTIsIDEyNjQxNiwgMTI2NDIwLCAxMjY0MjQsIDEyNjQyOCwgCisgICAgMTI2NDMyLCAxMjY0MzYsIDEyNjQ0MCwgMTI2NDQ0LCAxMjY0NDgsIDEyNjQ1MiwgMTI2NDU2LCAxMjY0NjAsIDEyNjQ2NCwgCisgICAgMTI2NDY4LCAxMjY0NzIsIDEyNjQ3NiwgMTI2NDgwLCAxMjY0ODQsIDEyNjQ4OCwgMTI2NDkyLCAxMjY0OTYsIDEyNjUwMCwgCisgICAgMTI2NTA0LCAxMjY1MDgsIDEyNjUxMiwgMTI2NTE2LCAxMjY1MjAsIDEyNjUyNCwgMTI2NTI4LCAxMjY1MzIsIDEyNjUzNiwgCisgICAgMTI2NTQwLCAxMjY1NDQsIDEyNjU0OCwgMTI2NTUyLCAxMjY1NTYsIDEyNjU2MCwgMTI2NTY0LCAxMjY1NjgsIDEyNjU3MiwgCisgICAgMTI2NTc2LCAxMjY1ODAsIDEyNjU4NCwgMTI2NTg4LCAxMjY1OTIsIDEyNjU5NiwgMTI2NjAwLCAxMjY2MDQsIDEyNjYwOCwgCisgICAgMTI2NjEyLCAxMjY2MTYsIDEyNjYyMCwgMTI2NjI0LCAxMjY2MjgsIDEyNjYzMiwgMTI2NjM2LCAxMjY2NDAsIDEyNjY0NCwgCisgICAgMTI2NjQ4LCAxMjY2NTIsIDEyNjY1NiwgMTI2NjYwLCAxMjY2NjQsIDEyNjY2OCwgMTI2NjcyLCAxMjY2NzYsIDEyNjY4MCwgCisgICAgMTI2Njg0LCAxMjY2ODgsIDEyNjY5MiwgMTI2Njk2LCAxMjY3MDAsIDEyNjcwNCwgMTI2NzA4LCAxMjY3MTIsIDEyNjcxNiwgCisgICAgMTI2NzIwLCAxMjY3MjQsIDEyNjcyOCwgMTI2NzMyLCAxMjY3MzYsIDEyNjc0MCwgMTI2NzQ0LCAxMjY3NDgsIDEyNjc1MiwgCisgICAgMTI2NzU2LCAxMjY3NjAsIDEyNjc2NCwgMTI2NzY4LCAxMjY3NzIsIDEyNjc3NiwgMTI2NzgwLCAxMjY3ODQsIDEyNjc4OCwgCisgICAgMTI2NzkyLCAxMjY3OTYsIDEyNjgwMCwgMTI2ODA0LCAxMjY4MDgsIDEyNjgxMiwgMTI2ODE2LCAxMjY4MjYsIDEyNjgzMCwgCisgICAgMTI2ODM0LCAxMjY4MzgsIDEyNjg0MiwgMTI2ODQ2LCAxMjY4NTAsIDEyNjg1NCwgMTI2ODU4LCAxMjY4NjIsIDEyNjg2NiwgCisgICAgMTI2ODcwLCAxMjY4NzUsIDEyNjg3OSwgMTI2ODgzLCAxMjY4ODcsIDEyNjg5MSwgMTI2ODk1LCAxMjY4OTksIDEyNjkwMywgCisgICAgMTI2OTA3LCAxMjY5MTEsIDEyNjkxNSwgMTI2OTE5LCAxMjY5MjMsIDEyNjkyNywgMTI2OTMxLCAxMjY5MzUsIDEyNjkzOSwgCisgICAgMTI2OTQ4LCAxMjY5NTcsIDEyNjk2MSwgMTI2OTY1LCAxMjY5NjksIDEyNjk3MywgMTI2OTc3LCAxMjY5ODEsIDEyNjk4NSwgCisgICAgMTI2OTg5LCAxMjY5OTMsIDEyNjk5NywgMTI3MDAxLCAxMjcwMDUsIDEyNzAwOSwgMTI3MDEzLCAxMjcwMTcsIDEyNzAyMSwgCisgICAgMTI3MDI1LCAxMjcwMjksIDEyNzAzMywgMTI3MDM3LCAxMjcwNDEsIDEyNzA0NSwgMTI3MDQ5LCAxMjcwNTMsIDEyNzA1NywgCisgICAgMTI3MDYxLCAxMjcwNjUsIDEyNzA2OSwgMTI3MDczLCAxMjcwNzcsIDEyNzA4MSwgMTI3MDg1LCAxMjcwODksIDEyNzA5MywgCisgICAgMTI3MDk3LCAxMjcxMDEsIDEyNzEwNSwgMTI3MTA5LCAxMjcxMTMsIDEyNzExNywgMTI3MTIxLCAxMjcxMjUsIDEyNzEyOSwgCisgICAgMTI3MTMzLCAxMjcxMzcsIDEyNzE0MSwgMTI3MTQ1LCAxMjcxNDksIDEyNzE1MywgMTI3MTU3LCAxMjcxNjEsIDEyNzE2NSwgCisgICAgMTI3MTY5LCAxMjcxNzMsIDEyNzE3NywgMTI3MTgxLCAxMjcxODUsIDEyNzE4OSwgMTI3MTkzLCAxMjcxOTcsIDEyNzIwMSwgCisgICAgMTI3MjA1LCAxMjcyMDksIDEyNzIxMywgMTI3MjE3LCAxMjcyMjEsIDEyNzIyNSwgMTI3MjI5LCAxMjcyMzMsIDEyNzIzNywgCisgICAgMTI3MjQxLCAxMjcyNDUsIDEyNzI0OSwgMTI3MjUzLCAxMjcyNTcsIDEyNzI2MSwgMTI3MjY1LCAxMjcyNjksIDEyNzI3MywgCisgICAgMTI3Mjc3LCAxMjcyODEsIDEyNzI4NSwgMTI3Mjg5LCAxMjcyOTMsIDEyNzI5NywgMTI3MzAxLCAxMjczMDUsIDEyNzMwOSwgCisgICAgMTI3MzEzLCAxMjczMTcsIDEyNzMyMSwgMTI3MzI1LCAxMjczMjksIDEyNzMzMywgMTI3MzM3LCAxMjczNDEsIDEyNzM0NSwgCisgICAgMTI3MzQ5LCAxMjczNTMsIDEyNzM1NywgMTI3MzYxLCAxMjczNjUsIDEyNzM2OSwgMTI3MzczLCAxMjczNzcsIDEyNzM4MSwgCisgICAgMTI3Mzg1LCAxMjczODksIDEyNzM5MywgMTI3Mzk3LCAxMjc0MDEsIDEyNzQwNSwgMTI3NDA5LCAxMjc0MTMsIDEyNzQxNywgCisgICAgMTI3NDIxLCAxMjc0MjUsIDEyNzQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTMwMCwxMjQgKzIwNDU2LDIxMCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDkzMywgMTI0OTQxLCAKLSAgICAxMjQ5NDksIDEyNDk1OSwgMTI0OTY5LCAxMjQ5NzcsIDEyNDk4MywgMTI0OTkxLCAxMjQ5OTksIDEyNTAwOSwgMTI1MDIxLCAKLSAgICAxMjUwMzMsIDEyNTAzOSwgMTI1MDQ3LCAxMjUwNTMsIDEyNTA1OSwgMTI1MDY1LCAxMjUwNzEsIDEyNTA3NywgMTI1MDgzLCAKLSAgICAxMjUwODksIDEyNTA5NSwgMTI1MTAxLCAxMjUxMDcsIDEyNTExMywgMTI1MTIxLCAxMjUxMjksIDEyNTEzNSwgMTI1MTQxLCAKLSAgICAxMjUxNDcsIDEyNTE1MywgMTI1MTYxLCAxMjUxNjksIDEyNTE3OCwgMTI1MTg0LCAxMjUxOTIsIDEyNTE5OCwgMTI1MjA0LCAKLSAgICAxMjUyMTAsIDEyNTIxNiwgMTI1MjIyLCAxMjUyMzAsIDEyNTIzOCwgMTI1MjQ0LCAxMjUyNTAsIDEyNTI1NiwgMTI1MjYyLCAKLSAgICAxMjUyNjgsIDEyNTI3NCwgMTI1MjgwLCAxMjUyODYsIDEyNTI5MiwgMTI1Mjk4LCAxMjUzMDQsIDEyNTMxMCwgMTI1MzE2LCAKLSAgICAxMjUzMjIsIDEyNTMyOCwgMTI1MzM0LCAxMjUzNDAsIDEyNTM0NiwgMTI1MzUyLCAxMjUzNjAsIDEyNTM2NiwgMTI1MzcyLCAKLSAgICAxMjUzODIsIDEyNTM5MCwgMTI1Mzk2LCAxMjU0MDIsIDEyNTQwOCwgMTI1NDE0LCAxMjU0MjAsIDEyNTQyNiwgMTI1NDMyLCAKLSAgICAxMjU0MzgsIDEyNTQ0NCwgMTI1NDUwLCAxMjU0NTYsIDEyNTQ2MiwgMTI1NDY4LCAxMjU0NzQsIDEyNTQ4MCwgMTI1NDg2LCAKLSAgICAxMjU0OTIsIDEyNTQ5OCwgMTI1NTA0LCAxMjU1MTAsIDEyNTUxNiwgMTI1NTIyLCAxMjU1MzAsIDEyNTUzNiwgMTI1NTQ0LCAKLSAgICAxMjU1NTIsIDEyNTU2MCwgMTI1NTY2LCAxMjU1NzIsIDEyNTU3OCwgMTI1NTg0LCAxMjU1OTAsIDEyNTU5OCwgMTI1NjA4LCAKLSAgICAxMjU2MTYsIDEyNTYyNCwgMTI1NjMwLCAxMjU2MzYsIDEyNTY0NCwgMTI1NjUyLCAxMjU2NTgsIDEyNTY2NiwgMTI1Njc0LCAKLSAgICAxMjU2ODIsIDEyNTY4OCwgMTI1Njk0LCAxMjU3MDAsIDEyNTcwNiwgMTI1NzEyLCAxMjU3MTgsIDEyNTcyNiwgMTI1NzM0LCAKLSAgICAxMjU3NDAsIDEyNTc0NiwgMTI1NzUyLCAxMjU3NTgsIDEyNTc2NCwgMTI1NzcyLCAxMjU3NzgsIDEyNTc4NCwgMTI1NzkwLCAKLSAgICAxMjU3OTYsIDEyNTgwMiwgMTI1ODA4LCAxMjU4MTYsIDEyNTgyMiwgMTI1ODI4LCAxMjU4MzQsIDEyNTg0MCwgMTI1ODQ4LCAKLSAgICAxMjU4NTYsIDEyNTg2MiwgMTI1ODY4LCAxMjU4NzQsIDEyNTg3OSwgMTI1ODg1LCAxMjU4OTEsIDEyNTg5OCwgMTI1OTAzLCAKLSAgICAxMjU5MDgsIDEyNTkxMywgMTI1OTE4LCAxMjU5MjMsIDEyNTkyOCwgMTI1OTMzLCAxMjU5MzgsIDEyNTk0MywgMTI1OTUyLCAKLSAgICAxMjU5NTksIDEyNTk2NCwgMTI1OTY5LCAxMjU5NzQsIDEyNTk4MSwgMTI1OTg2LCAxMjU5OTEsIDEyNTk5NiwgMTI2MDAzLCAKLSAgICAxMjYwMDgsIDEyNjAxMywgMTI2MDE4LCAxMjYwMjMsIDEyNjAyOCwgMTI2MDMzLCAxMjYwMzgsIDEyNjA0MywgMTI2MDQ4LCAKLSAgICAxMjYwNTMsIDEyNjA1OCwgMTI2MDY1LCAxMjYwNzAsIDEyNjA3NywgMTI2MDgyLCAxMjYwODcsIDEyNjA5NCwgMTI2MDk5LCAKLSAgICAxMjYxMDQsIDEyNjEwOSwgMTI2MTE0LCAxMjYxMTksIDEyNjEyNCwgMTI2MTI5LCAxMjYxMzQsIDEyNjEzOSwgMTI2MTQ0LCAKLSAgICAxMjYxNDksIDEyNjE1NCwgMTI2MTU5LCAxMjYxNjQsIDEyNjE2OSwgMTI2MTc0LCAxMjYxNzksIDEyNjE4NCwgMTI2MTg5LCAKLSAgICAxMjYxOTYsIDEyNjIwMSwgMTI2MjA2LCAxMjYyMTEsIDEyNjIxNiwgMTI2MjIxLCAxMjYyMjYsIDEyNjIzMSwgMTI2MjM2LCAKLSAgICAxMjYyNDEsIDEyNjI0NiwgMTI2MjUxLCAxMjYyNTYsIDEyNjI2MSwgMTI2MjY4LCAxMjYyNzMsIDEyNjI3OCwgMTI2Mjg1LCAKLSAgICAxMjYyOTAsIDEyNjI5NSwgMTI2MzAwLCAxMjYzMDUsIDEyNjMxMCwgMTI2MzE1LCAxMjYzMjAsIDEyNjMyNSwgMTI2MzMwLCAKLSAgICAxMjYzMzUsIDEyNjM0MiwgMTI2MzQ3LCAxMjYzNTIsIDEyNjM1NywgMTI2MzYyLCAxMjYzNjcsIDEyNjM3NCwgMTI2MzgxLCAKLSAgICAxMjYzODYsIDEyNjM5MSwgMTI2Mzk2LCAxMjY0MDEsIDEyNjQwNiwgMTI2NDExLCAxMjY0MTYsIDEyNjQyMSwgMTI2NDI2LCAKLSAgICAxMjY0MzEsIDEyNjQzNiwgMTI2NDQxLCAxMjY0NDYsIDEyNjQ1MSwgMTI2NDU2LCAxMjY0NjEsIDEyNjQ2NiwgMTI2NDcxLCAKLSAgICAxMjY0NzYsIDEyNjQ4MSwgMTI2NDg2LCAxMjY0OTEsIDEyNjQ5NiwgMTI2NTAxLCAxMjY1MDYsIDEyNjUxMSwgMTI2NTE2LCAKLSAgICAxMjY1MjEsIDEyNjUyNiwgMTI2NTMxLCAxMjY1MzYsIDEyNjU0MSwgMTI2NTQ2LCAxMjY1NTEsIDEyNjU1NiwgMTI2NTYxLCAKLSAgICAxMjY1NjgsIDEyNjU3MywgMTI2NTc4LCAxMjY1ODMsIDEyNjU4OCwgMTI2NTkzLCAxMjY1OTgsIDEyNjYwMywgMTI2NjA4LCAKLSAgICAxMjY2MTMsIDEyNjYxOCwgMTI2NjIzLCAxMjY2MjgsIDEyNjYzMywgMTI2NjM4LCAxMjY2NDMsIDEyNjY0OCwgMTI2NjUzLCAKLSAgICAxMjY2NTgsIDEyNjY2MywgMTI2NjY4LCAxMjY2NzMsIDEyNjY3OCwgMTI2NjgzLCAxMjY2ODgsIDEyNjY5MywgMTI2Njk4LCAKLSAgICAxMjY3MDMsIDEyNjcwOCwgMTI2NzEzLCAxMjY3MTgsIDEyNjcyMywgMTI2NzI4LCAxMjY3MzMsIDEyNjczOCwgMTI2NzQzLCAKLSAgICAxMjY3NDgsIDEyNjc1MywgMTI2NzU4LCAxMjY3NjMsIDEyNjc2OCwgMTI2NzczLCAxMjY3NzgsIDEyNjc4MywgMTI2Nzg4LCAKLSAgICAxMjY3OTMsIDEyNjc5OCwgMTI2ODAzLCAxMjY4MDgsIDEyNjgxMywgMTI2ODE4LCAxMjY4MjMsIDEyNjgyOCwgMTI2ODMzLCAKLSAgICAxMjY4MzgsIDEyNjg0MywgMTI2ODQ4LCAxMjY4NTMsIDEyNjg1OCwgMTI2ODY1LCAxMjY4NzAsIDEyNjg3NSwgMTI2ODgwLCAKLSAgICAxMjY4ODUsIDEyNjg5MCwgMTI2ODk1LCAxMjY5MDAsIDEyNjkwNSwgMTI2OTEwLCAxMjY5MTUsIDEyNjkyMCwgMTI2OTI1LCAKLSAgICAxMjY5MzAsIDEyNjkzNSwgMTI2OTQwLCAxMjY5NDUsIDEyNjk1MCwgMTI2OTU1LCAxMjY5NjAsIDEyNjk2NSwgMTI2OTcwLCAKLSAgICAxMjY5NzcsIDEyNjk4MiwgMTI2OTg3LCAxMjY5OTQsIDEyNjk5OSwgMTI3MDA0LCAxMjcwMDksIDEyNzAxNCwgMTI3MDE5LCAKLSAgICAxMjcwMjQsIDEyNzAyOSwgMTI3MDM0LCAxMjcwMzksIDEyNzA0NCwgMTI3MDQ5LCAxMjcwNTQsIDEyNzA1OSwgMTI3MDY0LCAKLSAgICAxMjcwNjksIDEyNzA3NCwgMTI3MDc5LCAxMjcwODQsIDEyNzA4OSwgMTI3MDk0LCAxMjcwOTksIDEyNzEwNCwgMTI3MTA5LCAKLSAgICAxMjcxMTQsIDEyNzExOSwgMTI3MTI0LCAxMjcxMjksIDEyNzEzNCwgMTI3MTM5LCAxMjcxNDQsIDEyNzE0OSwgMTI3MTU0LCAKLSAgICAxMjcxNTksIDEyNzE2NCwgMTI3MTY5LCAxMjcxNzQsIDEyNzE3OSwgMTI3MTg0LCAxMjcxODksIDEyNzE5NCwgMTI3MTk5LCAKLSAgICAxMjcyMDQsIDEyNzIwOSwgMTI3MjE2LCAxMjcyMjEsIDEyNzIyNiwgMTI3MjMzLCAxMjcyNDAsIDEyNzI0NSwgMTI3MjUwLCAKLSAgICAxMjcyNTUsIDEyNzI2MCwgMTI3MjY1LCAxMjcyNzAsIDEyNzI3NSwgMTI3MjgwLCAxMjcyODUsIDEyNzI5MCwgMTI3Mjk1LCAKLSAgICAxMjczMDAsIDEyNzMwNSwgMTI3MzEwLCAxMjczMTUsIDEyNzMyMCwgMTI3MzI1LCAxMjczMzAsIDEyNzMzNSwgMTI3MzQwLCAKLSAgICAxMjczNDUsIDEyNzM1MCwgMTI3MzU1LCAxMjczNjAsIDEyNzM2NSwgMTI3MzcyLCAxMjczNzcsIDEyNzM4MiwgMTI3Mzg3LCAKLSAgICAxMjczOTIsIDEyNzM5NywgMTI3NDAyLCAxMjc0MDcsIDEyNzQxMiwgMTI3NDE3LCAxMjc0MjIsIDEyNzQyNywgMTI3NDMyLCAKLSAgICAxMjc0MzcsIDEyNzQ0MiwgMTI3NDQ3LCAxMjc0NTIsIDEyNzQ1NywgMTI3NDYyLCAxMjc0NjksIDEyNzQ3NCwgMTI3NDc5LCAKLSAgICAxMjc0ODQsIDEyNzQ4OSwgMTI3NDk0LCAxMjc0OTksIDEyNzUwNCwgMTI3NTEwLCAxMjc1MTUsIDEyNzUyMCwgMTI3NTI1LCAKLSAgICAxMjc1MzAsIDEyNzUzNSwgMTI3NTQwLCAxMjc1NDUsIDEyNzU1MCwgMTI3NTU3LCAxMjc1NjQsIDEyNzU2OSwgMTI3NTc0LCAKLSAgICAxMjc1NzgsIDEyNzU4MywgMTI3NTg3LCAxMjc1OTEsIDEyNzU5NiwgMTI3NjAzLCAxMjc2MDgsIDEyNzYxMywgMTI3NjIyLCAKLSAgICAxMjc2MjcsIDEyNzYzMiwgMTI3NjM3LCAxMjc2NDIsIDEyNzY0OSwgMTI3NjU2LCAxMjc2NjEsIDEyNzY2NiwgMTI3NjcxLCAKLSAgICAxMjc2NzYsIDEyNzY4MywgMTI3Njg4LCAxMjc2OTMsIDEyNzY5OCwgMTI3NzAzLCAxMjc3MDgsIDEyNzcxMywgMTI3NzE4LCAKLSAgICAxMjc3MjMsIDEyNzcyOCwgMTI3NzMzLCAxMjc3MzgsIDEyNzc0MywgMTI3NzUwLCAxMjc3NTUsIDEyNzc2MCwgMTI3NzY1LCAKLSAgICAxMjc3NzAsIDEyNzc3NSwgMTI3Nzc5LCAxMjc3ODQsIDEyNzc4OSwgMTI3Nzk0LCAxMjc3OTksIDEyNzgwNCwgMTI3ODA5LCAKLSAgICAxMjc4MTQsIDEyNzgxOSwgMTI3ODI0LCAxMjc4MzAsIDEyNzgzNiwgMTI3ODQyLCAxMjc4NDgsIDEyNzg1NCwgMTI3ODYwLCAKLSAgICAxMjc4NjYsIDEyNzg3MiwgMTI3ODc4LCAxMjc4ODQsIDEyNzg5MCwgMTI3ODk2LCAxMjc5MDIsIDEyNzkwOCwgMTI3OTE0LCAKKyAgICAwLCAxMjc0MzMsIDEyNzQ0MSwgMTI3NDQ5LCAxMjc0NTksIDEyNzQ2OSwgMTI3NDc3LCAxMjc0ODMsIDEyNzQ5MSwgCisgICAgMTI3NDk5LCAxMjc1MDksIDEyNzUyMSwgMTI3NTMzLCAxMjc1MzksIDEyNzU0NywgMTI3NTUzLCAxMjc1NTksIDEyNzU2NSwgCisgICAgMTI3NTcxLCAxMjc1NzcsIDEyNzU4MywgMTI3NTg5LCAxMjc1OTUsIDEyNzYwMSwgMTI3NjA3LCAxMjc2MTMsIDEyNzYyMSwgCisgICAgMTI3NjI5LCAxMjc2MzUsIDEyNzY0MSwgMTI3NjQ3LCAxMjc2NTMsIDEyNzY2MSwgMTI3NjY5LCAxMjc2NzgsIDEyNzY4NCwgCisgICAgMTI3NjkyLCAxMjc2OTgsIDEyNzcwNCwgMTI3NzEwLCAxMjc3MTYsIDEyNzcyMiwgMTI3NzMwLCAxMjc3MzgsIDEyNzc0NCwgCisgICAgMTI3NzUwLCAxMjc3NTYsIDEyNzc2MiwgMTI3NzY4LCAxMjc3NzQsIDEyNzc4MCwgMTI3Nzg2LCAxMjc3OTIsIDEyNzc5OCwgCisgICAgMTI3ODA0LCAxMjc4MTAsIDEyNzgxNiwgMTI3ODIyLCAxMjc4MjgsIDEyNzgzNCwgMTI3ODQwLCAxMjc4NDYsIDEyNzg1MiwgCisgICAgMTI3ODYwLCAxMjc4NjYsIDEyNzg3MiwgMTI3ODgyLCAxMjc4OTAsIDEyNzg5NiwgMTI3OTAyLCAxMjc5MDgsIDEyNzkxNCwgCiAgICAgMTI3OTIwLCAxMjc5MjYsIDEyNzkzMiwgMTI3OTM4LCAxMjc5NDQsIDEyNzk1MCwgMTI3OTU2LCAxMjc5NjIsIDEyNzk2OCwgCi0gICAgMTI3OTczLCAxMjc5NzksIDEyNzk4NSwgMTI3OTkxLCAxMjc5OTcsIDEyODAwMywgMTI4MDA5LCAxMjgwMTUsIDEyODAyMSwgCi0gICAgMTI4MDI3LCAxMjgwMzMsIDEyODAzOSwgMTI4MDQ1LCAxMjgwNTEsIDEyODA1NywgMTI4MDYzLCAxMjgwNjksIDEyODA3NSwgCi0gICAgMTI4MDgxLCAxMjgwODcsIDEyODA5MywgMTI4MDk4LCAxMjgxMDQsIDEyODExMCwgMTI4MTE2LCAxMjgxMjIsIDEyODEyOCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MTM0LCAxMjgxMzksIDEyODE0NCwgMTI4MTQ5LCAxMjgxNTQsIDEyODE1OSwgCi0gICAgMTI4MTY0LCAxMjgxNjgsIDEyODE3MywgMTI4MTc4LCAxMjgxODMsIDEyODE4OCwgMTI4MTkzLCAxMjgxOTgsIDEyODIwMywgCi0gICAgMTI4MjA4LCAxMjgyMTMsIDEyODIxNywgMTI4MjIyLCAxMjgyMjYsIDEyODIzMSwgMTI4MjM2LCAxMjgyNDEsIDEyODI0NiwgCi0gICAgMTI4MjUxLCAxMjgyNTUsIDEyODI2MCwgMTI4MjY1LCAxMjgyNzAsIDEyODI3NSwgMTI4MjgwLCAwLCAxMjgyODUsIAotICAgIDEyODI5MCwgMTI4Mjk0LCAxMjgyOTgsIDEyODMwMiwgMTI4MzA2LCAxMjgzMTAsIDEyODMxNCwgMTI4MzE5LCAxMjgzMjMsIAotICAgIDAsIDAsIDAsIDAsIDEyODMyOCwgMTI4MzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjc5NzQsIDEyNzk4MCwgMTI3OTg2LCAxMjc5OTIsIDEyNzk5OCwgMTI4MDA0LCAxMjgwMTAsIDEyODAxNiwgMTI4MDIyLCAKKyAgICAxMjgwMzAsIDEyODAzNiwgMTI4MDQ0LCAxMjgwNTIsIDEyODA2MCwgMTI4MDY2LCAxMjgwNzIsIDEyODA3OCwgMTI4MDg0LCAKKyAgICAxMjgwOTAsIDEyODA5OCwgMTI4MTA4LCAxMjgxMTYsIDEyODEyNCwgMTI4MTMwLCAxMjgxMzYsIDEyODE0NCwgMTI4MTUyLCAKKyAgICAxMjgxNTgsIDEyODE2NiwgMTI4MTc0LCAxMjgxODIsIDEyODE4OCwgMTI4MTk0LCAxMjgyMDAsIDEyODIwNiwgMTI4MjEyLCAKKyAgICAxMjgyMTgsIDEyODIyNiwgMTI4MjM0LCAxMjgyNDAsIDEyODI0NiwgMTI4MjUyLCAxMjgyNTgsIDEyODI2NCwgMTI4MjcyLCAKKyAgICAxMjgyNzgsIDEyODI4NCwgMTI4MjkwLCAxMjgyOTYsIDEyODMwMiwgMTI4MzA4LCAxMjgzMTYsIDEyODMyMiwgMTI4MzI4LCAKKyAgICAxMjgzMzQsIDEyODM0MCwgMTI4MzQ4LCAxMjgzNTYsIDEyODM2MiwgMTI4MzY4LCAxMjgzNzQsIDEyODM3OSwgMTI4Mzg1LCAKKyAgICAxMjgzOTEsIDEyODM5OCwgMTI4NDAzLCAxMjg0MDgsIDEyODQxMywgMTI4NDE4LCAxMjg0MjMsIDEyODQyOCwgMTI4NDMzLCAKKyAgICAxMjg0MzgsIDEyODQ0MywgMTI4NDUyLCAxMjg0NTksIDEyODQ2NCwgMTI4NDY5LCAxMjg0NzQsIDEyODQ4MSwgMTI4NDg2LCAKKyAgICAxMjg0OTEsIDEyODQ5NiwgMTI4NTAzLCAxMjg1MDgsIDEyODUxMywgMTI4NTE4LCAxMjg1MjMsIDEyODUyOCwgMTI4NTMzLCAKKyAgICAxMjg1MzgsIDEyODU0MywgMTI4NTQ4LCAxMjg1NTMsIDEyODU1OCwgMTI4NTY1LCAxMjg1NzAsIDEyODU3NywgMTI4NTgyLCAKKyAgICAxMjg1ODcsIDEyODU5NCwgMTI4NTk5LCAxMjg2MDQsIDEyODYwOSwgMTI4NjE0LCAxMjg2MTksIDEyODYyNCwgMTI4NjI5LCAKKyAgICAxMjg2MzQsIDEyODYzOSwgMTI4NjQ0LCAxMjg2NDksIDEyODY1NCwgMTI4NjU5LCAxMjg2NjQsIDEyODY2OSwgMTI4Njc0LCAKKyAgICAxMjg2NzksIDEyODY4NCwgMTI4Njg5LCAxMjg2OTYsIDEyODcwMSwgMTI4NzA2LCAxMjg3MTEsIDEyODcxNiwgMTI4NzIxLCAKKyAgICAxMjg3MjYsIDEyODczMSwgMTI4NzM2LCAxMjg3NDEsIDEyODc0NiwgMTI4NzUxLCAxMjg3NTYsIDEyODc2MSwgMTI4NzY4LCAKKyAgICAxMjg3NzMsIDEyODc3OCwgMTI4Nzg1LCAxMjg3OTAsIDEyODc5NSwgMTI4ODAwLCAxMjg4MDUsIDEyODgxMCwgMTI4ODE1LCAKKyAgICAxMjg4MjAsIDEyODgyNSwgMTI4ODMwLCAxMjg4MzUsIDEyODg0MiwgMTI4ODQ3LCAxMjg4NTIsIDEyODg1NywgMTI4ODYyLCAKKyAgICAxMjg4NjcsIDEyODg3NCwgMTI4ODgxLCAxMjg4ODYsIDEyODg5MSwgMTI4ODk2LCAxMjg5MDEsIDEyODkwNiwgMTI4OTExLCAKKyAgICAxMjg5MTYsIDEyODkyMSwgMTI4OTI2LCAxMjg5MzEsIDEyODkzNiwgMTI4OTQxLCAxMjg5NDYsIDEyODk1MSwgMTI4OTU2LCAKKyAgICAxMjg5NjEsIDEyODk2NiwgMTI4OTcxLCAxMjg5NzYsIDEyODk4MSwgMTI4OTg2LCAxMjg5OTEsIDEyODk5NiwgMTI5MDAxLCAKKyAgICAxMjkwMDYsIDEyOTAxMSwgMTI5MDE2LCAxMjkwMjEsIDEyOTAyNiwgMTI5MDMxLCAxMjkwMzYsIDEyOTA0MSwgMTI5MDQ2LCAKKyAgICAxMjkwNTEsIDEyOTA1NiwgMTI5MDYxLCAxMjkwNjgsIDEyOTA3MywgMTI5MDc4LCAxMjkwODMsIDEyOTA4OCwgMTI5MDkzLCAKKyAgICAxMjkwOTgsIDEyOTEwMywgMTI5MTA4LCAxMjkxMTMsIDEyOTExOCwgMTI5MTIzLCAxMjkxMjgsIDEyOTEzMywgMTI5MTM4LCAKKyAgICAxMjkxNDMsIDEyOTE0OCwgMTI5MTUzLCAxMjkxNTgsIDEyOTE2MywgMTI5MTY4LCAxMjkxNzMsIDEyOTE3OCwgMTI5MTgzLCAKKyAgICAxMjkxODgsIDEyOTE5MywgMTI5MTk4LCAxMjkyMDMsIDEyOTIwOCwgMTI5MjEzLCAxMjkyMTgsIDEyOTIyMywgMTI5MjI4LCAKKyAgICAxMjkyMzMsIDEyOTIzOCwgMTI5MjQzLCAxMjkyNDgsIDEyOTI1MywgMTI5MjU4LCAxMjkyNjMsIDEyOTI2OCwgMTI5MjczLCAKKyAgICAxMjkyNzgsIDEyOTI4MywgMTI5Mjg4LCAxMjkyOTMsIDEyOTI5OCwgMTI5MzAzLCAxMjkzMDgsIDEyOTMxMywgMTI5MzE4LCAKKyAgICAxMjkzMjMsIDEyOTMyOCwgMTI5MzMzLCAxMjkzMzgsIDEyOTM0MywgMTI5MzQ4LCAxMjkzNTMsIDEyOTM1OCwgMTI5MzY1LCAKKyAgICAxMjkzNzAsIDEyOTM3NSwgMTI5MzgwLCAxMjkzODUsIDEyOTM5MCwgMTI5Mzk1LCAxMjk0MDAsIDEyOTQwNSwgMTI5NDEwLCAKKyAgICAxMjk0MTUsIDEyOTQyMCwgMTI5NDI1LCAxMjk0MzAsIDEyOTQzNSwgMTI5NDQwLCAxMjk0NDUsIDEyOTQ1MCwgMTI5NDU1LCAKKyAgICAxMjk0NjAsIDEyOTQ2NSwgMTI5NDcwLCAxMjk0NzcsIDEyOTQ4MiwgMTI5NDg3LCAxMjk0OTQsIDEyOTQ5OSwgMTI5NTA0LCAKKyAgICAxMjk1MDksIDEyOTUxNCwgMTI5NTE5LCAxMjk1MjQsIDEyOTUyOSwgMTI5NTM0LCAxMjk1MzksIDEyOTU0NCwgMTI5NTQ5LCAKKyAgICAxMjk1NTQsIDEyOTU1OSwgMTI5NTY0LCAxMjk1NjksIDEyOTU3NCwgMTI5NTc5LCAxMjk1ODQsIDEyOTU4OSwgMTI5NTk0LCAKKyAgICAxMjk1OTksIDEyOTYwNCwgMTI5NjA5LCAxMjk2MTQsIDEyOTYxOSwgMTI5NjI0LCAxMjk2MjksIDEyOTYzNCwgMTI5NjM5LCAKKyAgICAxMjk2NDQsIDEyOTY0OSwgMTI5NjU0LCAxMjk2NTksIDEyOTY2NCwgMTI5NjY5LCAxMjk2NzQsIDEyOTY3OSwgMTI5Njg0LCAKKyAgICAxMjk2ODksIDEyOTY5NCwgMTI5Njk5LCAxMjk3MDQsIDEyOTcwOSwgMTI5NzE2LCAxMjk3MjEsIDEyOTcyNiwgMTI5NzMzLCAKKyAgICAxMjk3NDAsIDEyOTc0NSwgMTI5NzUwLCAxMjk3NTUsIDEyOTc2MCwgMTI5NzY1LCAxMjk3NzAsIDEyOTc3NSwgMTI5NzgwLCAKKyAgICAxMjk3ODUsIDEyOTc5MCwgMTI5Nzk1LCAxMjk4MDAsIDEyOTgwNSwgMTI5ODEwLCAxMjk4MTUsIDEyOTgyMCwgMTI5ODI1LCAKKyAgICAxMjk4MzAsIDEyOTgzNSwgMTI5ODQwLCAxMjk4NDUsIDEyOTg1MCwgMTI5ODU1LCAxMjk4NjAsIDEyOTg2NSwgMTI5ODcyLCAKKyAgICAxMjk4NzcsIDEyOTg4MiwgMTI5ODg3LCAxMjk4OTIsIDEyOTg5NywgMTI5OTAyLCAxMjk5MDcsIDEyOTkxMiwgMTI5OTE3LCAKKyAgICAxMjk5MjIsIDEyOTkyNywgMTI5OTMyLCAxMjk5MzcsIDEyOTk0MiwgMTI5OTQ3LCAxMjk5NTIsIDEyOTk1NywgMTI5OTYyLCAKKyAgICAxMjk5NjksIDEyOTk3NCwgMTI5OTc5LCAxMjk5ODQsIDEyOTk4OSwgMTI5OTk0LCAxMjk5OTksIDEzMDAwNCwgMTMwMDEwLCAKKyAgICAxMzAwMTUsIDEzMDAyMCwgMTMwMDI1LCAxMzAwMzAsIDEzMDAzNSwgMTMwMDQwLCAxMzAwNDUsIDEzMDA1MCwgMTMwMDU3LCAKKyAgICAxMzAwNjQsIDEzMDA2OSwgMTMwMDc0LCAxMzAwNzgsIDEzMDA4MywgMTMwMDg3LCAxMzAwOTEsIDEzMDA5NiwgMTMwMTAzLCAKKyAgICAxMzAxMDgsIDEzMDExMywgMTMwMTIyLCAxMzAxMjcsIDEzMDEzMiwgMTMwMTM3LCAxMzAxNDIsIDEzMDE0OSwgMTMwMTU2LCAKKyAgICAxMzAxNjEsIDEzMDE2NiwgMTMwMTcxLCAxMzAxNzYsIDEzMDE4MywgMTMwMTg4LCAxMzAxOTMsIDEzMDE5OCwgMTMwMjAzLCAKKyAgICAxMzAyMDgsIDEzMDIxMywgMTMwMjE4LCAxMzAyMjMsIDEzMDIyOCwgMTMwMjMzLCAxMzAyMzgsIDEzMDI0MywgMTMwMjUwLCAKKyAgICAxMzAyNTQsIDEzMDI1OSwgMTMwMjY0LCAxMzAyNjksIDEzMDI3NCwgMTMwMjc4LCAxMzAyODMsIDEzMDI4OCwgMTMwMjkzLCAKKyAgICAxMzAyOTgsIDEzMDMwMywgMTMwMzA4LCAxMzAzMTMsIDEzMDMxOCwgMTMwMzIzLCAxMzAzMjksIDEzMDMzNSwgMTMwMzQxLCAKKyAgICAxMzAzNDcsIDEzMDM1MywgMTMwMzU4LCAxMzAzNjQsIDEzMDM3MCwgMTMwMzc2LCAxMzAzODIsIDEzMDM4OCwgMTMwMzk0LCAKKyAgICAxMzA0MDAsIDEzMDQwNiwgMTMwNDEyLCAxMzA0MTgsIDEzMDQyNCwgMTMwNDMwLCAxMzA0MzYsIDEzMDQ0MiwgMTMwNDQ4LCAKKyAgICAxMzA0NTQsIDEzMDQ2MCwgMTMwNDY2LCAxMzA0NzEsIDEzMDQ3NywgMTMwNDgzLCAxMzA0ODksIDEzMDQ5NSwgMTMwNTAxLCAKKyAgICAxMzA1MDcsIDEzMDUxMywgMTMwNTE5LCAxMzA1MjUsIDEzMDUzMSwgMTMwNTM3LCAxMzA1NDMsIDEzMDU0OSwgMTMwNTU1LCAKKyAgICAxMzA1NjEsIDEzMDU2NywgMTMwNTczLCAxMzA1NzksIDEzMDU4NSwgMTMwNTkxLCAxMzA1OTYsIDEzMDYwMiwgMTMwNjA4LCAKKyAgICAxMzA2MTQsIDEzMDYyMCwgMTMwNjI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA2MzIsIDEzMDYzNywgMTMwNjQyLCAKKyAgICAxMzA2NDcsIDEzMDY1MiwgMTMwNjU3LCAxMzA2NjIsIDEzMDY2NiwgMTMwNjcxLCAxMzA2NzYsIDEzMDY4MSwgMTMwNjg2LCAKKyAgICAxMzA2OTEsIDEzMDY5NiwgMTMwNzAxLCAxMzA3MDYsIDEzMDcxMSwgMTMwNzE1LCAxMzA3MjAsIDEzMDcyNCwgMTMwNzI5LCAKKyAgICAxMzA3MzQsIDEzMDczOSwgMTMwNzQ0LCAxMzA3NDksIDEzMDc1MywgMTMwNzU4LCAxMzA3NjMsIDEzMDc2NywgMTMwNzcyLCAKKyAgICAxMzA3NzcsIDAsIDEzMDc4MiwgMTMwNzg3LCAxMzA3OTEsIDEzMDc5NSwgMTMwNzk5LCAxMzA4MDMsIDEzMDgwNywgCisgICAgMTMwODExLCAxMzA4MTYsIDEzMDgyMCwgMCwgMCwgMCwgMCwgMTMwODI1LCAxMzA4MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODMzNywgMTI4MzQ0LCAxMjgzNTAsIDEyODM1NywgMTI4MzY0LCAKLSAgICAxMjgzNzEsIDEyODM3OCwgMTI4Mzg1LCAxMjgzOTIsIDEyODM5OSwgMTI4NDA2LCAxMjg0MTMsIDEyODQyMCwgMTI4NDI3LCAKLSAgICAxMjg0MzQsIDEyODQ0MSwgMTI4NDQ4LCAxMjg0NTUsIDEyODQ2MSwgMTI4NDY4LCAxMjg0NzUsIDEyODQ4MiwgMTI4NDg4LCAKLSAgICAxMjg0OTUsIDEyODUwMSwgMTI4NTA3LCAxMjg1MTQsIDEyODUyMCwgMTI4NTI3LCAxMjg1MzMsIDAsIDAsIDEyODUzOSwgCi0gICAgMTI4NTQ3LCAxMjg1NTUsIDEyODU2NCwgMTI4NTczLCAxMjg1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyODU5MCwgMTI4NTk1LCAxMjg2MDAsIDEyODYwNSwgMTI4NjEwLCAxMjg2MTUsIDEyODYyMCwgMTI4NjI1LCAxMjg2MzAsIAotICAgIDEyODYzNSwgMTI4NjQwLCAxMjg2NDUsIDEyODY1MCwgMTI4NjU1LCAxMjg2NjAsIDEyODY2NSwgMTI4NjcwLCAxMjg2NzUsIAotICAgIDEyODY4MCwgMTI4Njg1LCAxMjg2OTAsIDEyODY5NSwgMTI4NzAwLCAxMjg3MDUsIDEyODcxMCwgMTI4NzE1LCAxMjg3MjAsIAotICAgIDEyODcyNSwgMTI4NzMwLCAxMjg3MzUsIDEyODc0MCwgMTI4NzQ1LCAxMjg3NTAsIDEyODc1NSwgMTI4NzYwLCAxMjg3NjUsIAotICAgIDEyODc3MCwgMTI4Nzc1LCAxMjg3ODAsIDEyODc4NSwgMTI4NzkwLCAxMjg3OTUsIDEyODgwMCwgMTI4ODA1LCAxMjg4MTAsIAotICAgIDEyODgxNSwgMTI4ODIwLCAxMjg4MjUsIDEyODgzMCwgMTI4ODM3LCAxMjg4NDQsIDEyODg1MSwgMTI4ODU4LCAxMjg4NjUsIAotICAgIDEyODg3MiwgMTI4ODc5LCAxMjg4ODYsIDEyODg5NSwgMTI4OTAyLCAxMjg5MDksIDEyODkxNiwgMTI4OTIzLCAxMjg5MzAsIAotICAgIDEyODkzNywgMTI4OTQ0LCAxMjg5NTEsIDEyODk1OCwgMTI4OTY1LCAxMjg5NzIsIDEyODk3NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTI4OTg2LCAxMjg5OTEsIDEyODk5NSwgMTI4OTk5LCAxMjkwMDMsIDEyOTAwNywgMTI5MDExLCAKLSAgICAxMjkwMTUsIDEyOTAyMCwgMTI5MDI0LCAwLCAxMjkwMjksIDEyOTAzNCwgMTI5MDM5LCAxMjkwNDYsIDEyOTA1MSwgCi0gICAgMTI5MDU4LCAxMjkwNjUsIDAsIDEyOTA3MCwgMTI5MDc3LCAxMjkwODIsIDEyOTA4NywgMTI5MDk0LCAxMjkxMDEsIAotICAgIDEyOTEwNiwgMTI5MTExLCAxMjkxMTYsIDEyOTEyMSwgMTI5MTI2LCAxMjkxMzMsIDEyOTE0MCwgMTI5MTQ1LCAxMjkxNTAsIAotICAgIDEyOTE1NSwgMTI5MTY4LCAxMjkxNzcsIDEyOTE4NCwgMTI5MTkzLCAxMjkyMDIsIDAsIDAsIDAsIDAsIDAsIDEyOTIxMSwgCi0gICAgMTI5MjE4LCAxMjkyMjUsIDEyOTIzMiwgMTI5MjM5LCAxMjkyNDYsIDEyOTI1MywgMTI5MjYwLCAxMjkyNjcsIDEyOTI3NCwgCi0gICAgMTI5MjgxLCAxMjkyODgsIDEyOTI5NSwgMTI5MzAyLCAxMjkzMDksIDEyOTMxNiwgMTI5MzIzLCAxMjkzMzAsIDEyOTMzNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwODM0LCAxMzA4NDEsIAorICAgIDEzMDg0NywgMTMwODU0LCAxMzA4NjEsIDEzMDg2OCwgMTMwODc1LCAxMzA4ODIsIDEzMDg4OSwgMTMwODk2LCAxMzA5MDMsIAorICAgIDEzMDkxMCwgMTMwOTE3LCAxMzA5MjQsIDEzMDkzMSwgMTMwOTM4LCAxMzA5NDUsIDEzMDk1MiwgMTMwOTU4LCAxMzA5NjUsIAorICAgIDEzMDk3MiwgMTMwOTc5LCAxMzA5ODUsIDEzMDk5MiwgMTMwOTk4LCAxMzEwMDQsIDEzMTAxMSwgMTMxMDE3LCAxMzEwMjQsIAorICAgIDEzMTAzMCwgMCwgMCwgMTMxMDM2LCAxMzEwNDQsIDEzMTA1MiwgMTMxMDYxLCAxMzEwNzAsIDEzMTA3OSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMxMDg3LCAxMzEwOTIsIDEzMTA5NywgMTMxMTAyLCAxMzExMDcsIDEzMTExMiwgMTMxMTE3LCAKKyAgICAxMzExMjIsIDEzMTEyNywgMTMxMTMyLCAxMzExMzcsIDEzMTE0MiwgMTMxMTQ3LCAxMzExNTIsIDEzMTE1NywgMTMxMTYyLCAKKyAgICAxMzExNjcsIDEzMTE3MiwgMTMxMTc3LCAxMzExODIsIDEzMTE4NywgMTMxMTkyLCAxMzExOTcsIDEzMTIwMiwgMTMxMjA3LCAKKyAgICAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAxMzEyMjcsIDEzMTIzMiwgMTMxMjM3LCAxMzEyNDIsIDEzMTI0NywgMTMxMjUyLCAKKyAgICAxMzEyNTcsIDEzMTI2MiwgMTMxMjY3LCAxMzEyNzIsIDEzMTI3NywgMTMxMjgyLCAxMzEyODcsIDEzMTI5MiwgMTMxMjk3LCAKKyAgICAxMzEzMDIsIDEzMTMwNywgMTMxMzEyLCAxMzEzMTcsIDEzMTMyMiwgMTMxMzI3LCAxMzEzMzQsIDEzMTM0MSwgMTMxMzQ4LCAKKyAgICAxMzEzNTUsIDEzMTM2MiwgMTMxMzY5LCAxMzEzNzYsIDEzMTM4MywgMTMxMzkyLCAxMzEzOTksIDEzMTQwNiwgMTMxNDEzLCAKKyAgICAxMzE0MjAsIDEzMTQyNywgMTMxNDM0LCAxMzE0NDEsIDEzMTQ0OCwgMTMxNDU1LCAxMzE0NjIsIDEzMTQ2OSwgMTMxNDc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE0ODMsIDEzMTQ4OCwgMTMxNDkyLCAxMzE0OTYsIDEzMTUwMCwgCisgICAgMTMxNTA0LCAxMzE1MDgsIDEzMTUxMiwgMTMxNTE3LCAxMzE1MjEsIDAsIDEzMTUyNiwgMTMxNTMxLCAxMzE1MzYsIAorICAgIDEzMTU0MywgMTMxNTQ4LCAxMzE1NTUsIDEzMTU2MiwgMCwgMTMxNTY3LCAxMzE1NzQsIDEzMTU3OSwgMTMxNTg0LCAKKyAgICAxMzE1OTEsIDEzMTU5OCwgMTMxNjAzLCAxMzE2MDgsIDEzMTYxMywgMTMxNjE4LCAxMzE2MjMsIDEzMTYzMCwgMTMxNjM3LCAKKyAgICAxMzE2NDIsIDEzMTY0NywgMTMxNjUyLCAxMzE2NjUsIDEzMTY3NCwgMTMxNjgxLCAxMzE2OTAsIDEzMTY5OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTMxNzA4LCAxMzE3MTUsIDEzMTcyMiwgMTMxNzI5LCAxMzE3MzYsIDEzMTc0MywgMTMxNzUwLCAxMzE3NTcsIAorICAgIDEzMTc2NCwgMTMxNzcxLCAxMzE3NzgsIDEzMTc4NSwgMTMxNzkyLCAxMzE3OTksIDEzMTgwNiwgMTMxODEzLCAxMzE4MjAsIAorICAgIDEzMTgyNywgMTMxODM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE4NDEsIAorICAgIDEzMTg0NCwgMTMxODQ4LCAxMzE4NTIsIDEzMTg1NiwgMTMxODU5LCAxMzE4NjMsIDEzMTg2OCwgMTMxODcyLCAxMzE4NzYsIAorICAgIDEzMTg4MCwgMTMxODg0LCAxMzE4ODgsIDEzMTg5MywgMTMxODk4LCAxMzE5MDIsIDEzMTkwNiwgMTMxOTA5LCAxMzE5MTMsIAorICAgIDEzMTkxOCwgMTMxOTIzLCAxMzE5MjcsIDEzMTkzMSwgMTMxOTM0LCAxMzE5MzgsIDEzMTk0MiwgMTMxOTQ2LCAxMzE5NTAsIAorICAgIDEzMTk1NCwgMTMxOTU4LCAxMzE5NjIsIDEzMTk2NSwgMTMxOTY5LCAxMzE5NzMsIDEzMTk3NywgMTMxOTgxLCAxMzE5ODUsIAorICAgIDEzMTk4OSwgMTMxOTk1LCAxMzE5OTgsIDEzMjAwMiwgMTMyMDA2LCAxMzIwMTAsIDEzMjAxNCwgMTMyMDE4LCAxMzIwMjIsIAorICAgIDEzMjAyNiwgMTMyMDMwLCAxMzIwMzQsIDEzMjAzOSwgMTMyMDQ0LCAxMzIwNTAsIDEzMjA1NCwgMTMyMDU4LCAxMzIwNjIsIAorICAgIDEzMjA2NiwgMTMyMDcwLCAxMzIwNzQsIDEzMjA3OSwgMTMyMDgzLCAxMzIwODcsIDEzMjA5MSwgMTMyMDk1LCAxMzIwOTksIAorICAgIDEzMjEwNSwgMTMyMTA5LCAxMzIxMTMsIDEzMjExNywgMTMyMTIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzIxMjUsIDEzMjEyOSwgMTMyMTMzLCAxMzIxMzksIDEzMjE0NSwgMTMyMTQ5LCAxMzIxNTQsIDEzMjE1OSwgMTMyMTY0LCAKKyAgICAxMzIxNjksIDEzMjE3MywgMTMyMTc4LCAxMzIxODMsIDEzMjE4OCwgMTMyMTkyLCAxMzIxOTcsIDEzMjIwMiwgMTMyMjA3LCAKKyAgICAxMzIyMTEsIDEzMjIxNiwgMTMyMjIxLCAxMzIyMjYsIDEzMjIzMSwgMTMyMjM2LCAxMzIyNDEsIDEzMjI0NiwgMTMyMjUxLCAKKyAgICAxMzIyNTUsIDEzMjI2MCwgMTMyMjY1LCAxMzIyNzAsIDEzMjI3NSwgMTMyMjgwLCAxMzIyODUsIDEzMjI5MCwgMTMyMjk1LCAKKyAgICAxMzIzMDAsIDEzMjMwNSwgMTMyMzEwLCAxMzIzMTcsIDEzMjMyMiwgMTMyMzI5LCAxMzIzMzQsIDEzMjMzOSwgMTMyMzQ0LCAKKyAgICAxMzIzNDksIDEzMjM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyMzU5LCAKKyAgICAxMzIzNjMsIDEzMjM2OSwgMTMyMzcyLCAxMzIzNzUsIDEzMjM3OSwgMTMyMzgzLCAxMzIzODcsIDEzMjM5MSwgMTMyMzk1LCAKKyAgICAxMzIzOTksIDEzMjQwMywgMTMyNDA5LCAxMzI0MTUsIDEzMjQyMSwgMTMyNDI3LCAxMzI0MzMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTM0NCwgMTI5MzQ3LCAxMjkzNTEsIAotICAgIDEyOTM1NSwgMTI5MzU5LCAxMjkzNjIsIDEyOTM2NiwgMTI5MzcxLCAxMjkzNzUsIDEyOTM3OSwgMTI5MzgzLCAxMjkzODcsIAotICAgIDEyOTM5MSwgMTI5Mzk2LCAxMjk0MDEsIDEyOTQwNSwgMTI5NDA5LCAxMjk0MTMsIDEyOTQxNywgMTI5NDIyLCAxMjk0MjgsIAotICAgIDEyOTQzMiwgMTI5NDM2LCAxMjk0NDAsIDEyOTQ0NCwgMTI5NDQ4LCAxMjk0NTIsIDEyOTQ1NiwgMTI5NDYwLCAxMjk0NjQsIAotICAgIDEyOTQ2OCwgMTI5NDcxLCAxMjk0NzUsIDEyOTQ3OSwgMTI5NDgzLCAxMjk0ODcsIDEyOTQ5MSwgMTI5NDk1LCAxMjk1MDEsIAotICAgIDEyOTUwNCwgMTI5NTA4LCAxMjk1MTIsIDEyOTUxNiwgMTI5NTIwLCAxMjk1MjQsIDEyOTUyOCwgMTI5NTMyLCAxMjk1MzYsIAotICAgIDEyOTU0MCwgMTI5NTQ1LCAxMjk1NTAsIDEyOTU1NiwgMTI5NTYwLCAxMjk1NjQsIDEyOTU2OCwgMTI5NTcyLCAxMjk1NzYsIAotICAgIDEyOTU4MCwgMTI5NTg1LCAxMjk1ODksIDEyOTU5MywgMTI5NTk3LCAxMjk2MDEsIDEyOTYwNSwgMTI5NjExLCAxMjk2MTUsIAotICAgIDEyOTYxOSwgMTI5NjIzLCAxMjk2MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTYzMSwgMTI5NjM1LCAKLSAgICAxMjk2MzksIDEyOTY0NSwgMTI5NjUxLCAxMjk2NTUsIDEyOTY2MCwgMTI5NjY1LCAxMjk2NzAsIDEyOTY3NSwgMTI5Njc5LCAKLSAgICAxMjk2ODQsIDEyOTY4OSwgMTI5Njk0LCAxMjk2OTgsIDEyOTcwMywgMTI5NzA4LCAxMjk3MTMsIDEyOTcxNywgMTI5NzIyLCAKLSAgICAxMjk3MjcsIDEyOTczMiwgMTI5NzM3LCAxMjk3NDIsIDEyOTc0NywgMTI5NzUyLCAxMjk3NTcsIDEyOTc2MSwgMTI5NzY2LCAKLSAgICAxMjk3NzEsIDEyOTc3NiwgMTI5NzgxLCAxMjk3ODYsIDEyOTc5MSwgMTI5Nzk2LCAxMjk4MDEsIDEyOTgwNiwgMTI5ODExLCAKLSAgICAxMjk4MTYsIDEyOTgyMywgMTI5ODI4LCAxMjk4MzUsIDEyOTg0MCwgMTI5ODQ1LCAxMjk4NTAsIDEyOTg1NSwgMTI5ODYwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk4NjUsIDEyOTg2OSwgMTI5ODc1LCAKLSAgICAxMjk4NzgsIDEyOTg4MSwgMTI5ODg1LCAxMjk4ODksIDEyOTg5MywgMTI5ODk3LCAxMjk5MDEsIDEyOTkwNSwgMTI5OTA5LCAKLSAgICAxMjk5MTUsIDEyOTkyMSwgMTI5OTI3LCAxMjk5MzMsIDEyOTkzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzI0NDMsIDEzMjQ0NiwgCisgICAgMTMyNDQ5LCAxMzI0NTIsIDEzMjQ1NSwgMTMyNDU4LCAxMzI0NjEsIDEzMjQ2NCwgMTMyNDY3LCAxMzI0NzAsIDEzMjQ3MywgCisgICAgMTMyNDc2LCAxMzI0NzksIDEzMjQ4MiwgMTMyNDg1LCAxMzI0ODgsIDEzMjQ5MSwgMTMyNDk0LCAxMzI0OTcsIDEzMjUwMCwgCisgICAgMTMyNTAzLCAxMzI1MDYsIDEzMjUwOSwgMTMyNTEyLCAxMzI1MTUsIDEzMjUxOCwgMTMyNTIxLCAxMzI1MjQsIDEzMjUyNywgCisgICAgMTMyNTMwLCAxMzI1MzMsIDEzMjUzNiwgMTMyNTM5LCAxMzI1NDIsIDEzMjU0NSwgMTMyNTQ4LCAxMzI1NTEsIDEzMjU1NCwgCisgICAgMTMyNTU3LCAxMzI1NjAsIDEzMjU2MywgMTMyNTY2LCAxMzI1NjksIDEzMjU3MiwgMTMyNTc1LCAxMzI1NzgsIDEzMjU4MSwgCisgICAgMTMyNTg0LCAxMzI1ODcsIDEzMjU5MCwgMTMyNTkzLCAxMzI1OTYsIDEzMjU5OSwgMTMyNjAyLCAxMzI2MDUsIDEzMjYwOCwgCisgICAgMTMyNjExLCAxMzI2MTQsIDEzMjYxNywgMTMyNjIwLCAxMzI2MjMsIDEzMjYyNiwgMTMyNjI5LCAxMzI2MzIsIDEzMjYzNSwgCisgICAgMTMyNjM4LCAxMzI2NDEsIDEzMjY0NCwgMTMyNjQ3LCAxMzI2NTAsIDEzMjY1MywgMTMyNjU2LCAxMzI2NTksIDEzMjY2MiwgCisgICAgMTMyNjY1LCAxMzI2NjgsIDEzMjY3MSwgMTMyNjc0LCAxMzI2NzcsIDEzMjY4MCwgMTMyNjgzLCAxMzI2ODYsIDEzMjY4OSwgCisgICAgMTMyNjkyLCAxMzI2OTUsIDEzMjY5OCwgMTMyNzAxLCAxMzI3MDQsIDEzMjcwNywgMTMyNzEwLCAxMzI3MTMsIDEzMjcxNiwgCisgICAgMTMyNzE5LCAxMzI3MjIsIDEzMjcyNSwgMTMyNzI4LCAxMzI3MzEsIDEzMjczNCwgMTMyNzM3LCAxMzI3NDAsIDEzMjc0MywgCisgICAgMTMyNzQ2LCAxMzI3NDksIDEzMjc1MiwgMTMyNzU1LCAxMzI3NTgsIDEzMjc2MSwgMTMyNzY0LCAxMzI3NjcsIDEzMjc3MCwgCisgICAgMTMyNzczLCAxMzI3NzYsIDEzMjc3OSwgMTMyNzgyLCAxMzI3ODUsIDEzMjc4OCwgMTMyNzkxLCAxMzI3OTQsIDEzMjc5NywgCisgICAgMTMyODAwLCAxMzI4MDMsIDEzMjgwNiwgMTMyODA5LCAxMzI4MTIsIDEzMjgxNSwgMTMyODE4LCAxMzI4MjEsIDEzMjgyNCwgCisgICAgMTMyODI3LCAxMzI4MzAsIDEzMjgzMywgMTMyODM2LCAxMzI4MzksIDEzMjg0MiwgMTMyODQ1LCAxMzI4NDgsIDEzMjg1MSwgCisgICAgMTMyODU0LCAxMzI4NTcsIDEzMjg2MCwgMTMyODYzLCAxMzI4NjYsIDEzMjg2OSwgMTMyODcyLCAxMzI4NzUsIDEzMjg3OCwgCisgICAgMTMyODgxLCAxMzI4ODQsIDEzMjg4NywgMTMyODkwLCAxMzI4OTMsIDEzMjg5NiwgMTMyODk5LCAxMzI5MDIsIDEzMjkwNSwgCisgICAgMTMyOTA4LCAxMzI5MTEsIDEzMjkxNCwgMTMyOTE3LCAxMzI5MjAsIDEzMjkyMywgMTMyOTI2LCAxMzI5MjksIDEzMjkzMiwgCisgICAgMTMyOTM1LCAxMzI5MzgsIDEzMjk0MSwgMTMyOTQ0LCAxMzI5NDcsIDEzMjk1MCwgMTMyOTUzLCAxMzI5NTYsIDEzMjk1OSwgCisgICAgMTMyOTYyLCAxMzI5NjUsIDEzMjk2OCwgMTMyOTcxLCAxMzI5NzQsIDEzMjk3NywgMTMyOTgwLCAxMzI5ODMsIDEzMjk4NiwgCisgICAgMTMyOTg5LCAxMzI5OTIsIDEzMjk5NSwgMTMyOTk4LCAxMzMwMDEsIDEzMzAwNCwgMTMzMDA3LCAxMzMwMTAsIDEzMzAxMywgCisgICAgMTMzMDE2LCAxMzMwMTksIDEzMzAyMiwgMTMzMDI1LCAxMzMwMjgsIDEzMzAzMSwgMTMzMDM0LCAxMzMwMzcsIDEzMzA0MCwgCisgICAgMTMzMDQzLCAxMzMwNDYsIDEzMzA0OSwgMTMzMDUyLCAxMzMwNTUsIDEzMzA1OCwgMTMzMDYxLCAxMzMwNjQsIDEzMzA2NywgCisgICAgMTMzMDcwLCAxMzMwNzMsIDEzMzA3NiwgMTMzMDc5LCAxMzMwODIsIDEzMzA4NSwgMTMzMDg4LCAxMzMwOTEsIDEzMzA5NCwgCisgICAgMTMzMDk3LCAxMzMxMDAsIDEzMzEwMywgMTMzMTA2LCAxMzMxMDksIDEzMzExMiwgMTMzMTE1LCAxMzMxMTgsIDEzMzEyMSwgCisgICAgMTMzMTI0LCAxMzMxMjcsIDEzMzEzMCwgMTMzMTMzLCAxMzMxMzYsIDEzMzEzOSwgMTMzMTQyLCAxMzMxNDUsIDEzMzE0OCwgCisgICAgMTMzMTUxLCAxMzMxNTQsIDEzMzE1NywgMTMzMTYwLCAxMzMxNjMsIDEzMzE2NiwgMTMzMTY5LCAxMzMxNzIsIDEzMzE3NSwgCisgICAgMTMzMTc4LCAxMzMxODEsIDEzMzE4NCwgMTMzMTg3LCAxMzMxOTAsIDEzMzE5MywgMTMzMTk2LCAxMzMxOTksIDEzMzIwMiwgCisgICAgMTMzMjA1LCAxMzMyMDgsIDEzMzIxMSwgMTMzMjE0LCAxMzMyMTcsIDEzMzIyMCwgMTMzMjIzLCAxMzMyMjYsIDEzMzIyOSwgCisgICAgMTMzMjMyLCAxMzMyMzUsIDEzMzIzOCwgMTMzMjQxLCAxMzMyNDQsIDEzMzI0NywgMTMzMjUwLCAxMzMyNTMsIDEzMzI1NiwgCisgICAgMTMzMjU5LCAxMzMyNjIsIDEzMzI2NSwgMTMzMjY4LCAxMzMyNzEsIDEzMzI3NCwgMTMzMjc3LCAxMzMyODAsIDEzMzI4MywgCisgICAgMTMzMjg2LCAxMzMyODksIDEzMzI5MiwgMTMzMjk1LCAxMzMyOTgsIDEzMzMwMSwgMTMzMzA0LCAxMzMzMDcsIDEzMzMxMCwgCisgICAgMTMzMzEzLCAxMzMzMTYsIDEzMzMxOSwgMTMzMzIyLCAxMzMzMjUsIDEzMzMyOCwgMTMzMzMxLCAxMzMzMzQsIDEzMzMzNywgCisgICAgMTMzMzQwLCAxMzMzNDMsIDEzMzM0NiwgMTMzMzQ5LCAxMzMzNTIsIDEzMzM1NSwgMTMzMzU4LCAxMzMzNjEsIDEzMzM2NCwgCisgICAgMTMzMzY3LCAxMzMzNzAsIDEzMzM3MywgMTMzMzc2LCAxMzMzNzksIDEzMzM4MiwgMTMzMzg1LCAxMzMzODgsIDEzMzM5MSwgCisgICAgMTMzMzk0LCAxMzMzOTcsIDEzMzQwMCwgMTMzNDAzLCAxMzM0MDYsIDEzMzQwOSwgMTMzNDEyLCAxMzM0MTUsIDEzMzQxOCwgCisgICAgMTMzNDIxLCAxMzM0MjQsIDEzMzQyNywgMTMzNDMwLCAxMzM0MzMsIDEzMzQzNiwgMTMzNDM5LCAxMzM0NDIsIDEzMzQ0NSwgCisgICAgMTMzNDQ4LCAxMzM0NTEsIDEzMzQ1NCwgMTMzNDU3LCAxMzM0NjAsIDEzMzQ2MywgMTMzNDY2LCAxMzM0NjksIDEzMzQ3MiwgCisgICAgMTMzNDc1LCAxMzM0NzgsIDEzMzQ4MSwgMTMzNDg0LCAxMzM0ODcsIDEzMzQ5MCwgMTMzNDkzLCAxMzM0OTYsIDEzMzQ5OSwgCisgICAgMTMzNTAyLCAxMzM1MDUsIDEzMzUwOCwgMTMzNTExLCAxMzM1MTQsIDEzMzUxNywgMTMzNTIwLCAxMzM1MjMsIDEzMzUyNiwgCisgICAgMTMzNTI5LCAxMzM1MzIsIDEzMzUzNSwgMTMzNTM4LCAxMzM1NDEsIDEzMzU0NCwgMTMzNTQ3LCAxMzM1NTAsIDEzMzU1MywgCisgICAgMTMzNTU2LCAxMzM1NTksIDEzMzU2MiwgMTMzNTY1LCAxMzM1NjgsIDEzMzU3MSwgMTMzNTc0LCAxMzM1NzcsIDEzMzU4MCwgCisgICAgMTMzNTgzLCAxMzM1ODYsIDEzMzU4OSwgMTMzNTkyLCAxMzM1OTUsIDEzMzU5OCwgMTMzNjAxLCAxMzM2MDQsIDEzMzYwNywgCisgICAgMTMzNjEwLCAxMzM2MTMsIDEzMzYxNiwgMTMzNjE5LCAxMzM2MjIsIDEzMzYyNSwgMTMzNjI4LCAxMzM2MzEsIDEzMzYzNCwgCisgICAgMTMzNjM3LCAxMzM2NDAsIDEzMzY0MywgMTMzNjQ2LCAxMzM2NDksIDEzMzY1MiwgMTMzNjU1LCAxMzM2NTgsIDEzMzY2MSwgCisgICAgMTMzNjY0LCAxMzM2NjcsIDEzMzY3MCwgMTMzNjczLCAxMzM2NzYsIDEzMzY3OSwgMTMzNjgyLCAxMzM2ODUsIDEzMzY4OCwgCisgICAgMTMzNjkxLCAxMzM2OTQsIDEzMzY5NywgMTMzNzAwLCAxMzM3MDMsIDEzMzcwNiwgMTMzNzA5LCAxMzM3MTIsIDEzMzcxNSwgCisgICAgMTMzNzE4LCAxMzM3MjEsIDEzMzcyNCwgMTMzNzI3LCAxMzM3MzAsIDEzMzczMywgMTMzNzM2LCAxMzM3MzksIDEzMzc0MiwgCisgICAgMTMzNzQ1LCAxMzM3NDgsIDEzMzc1MSwgMTMzNzU0LCAxMzM3NTcsIDEzMzc2MCwgMTMzNzYzLCAxMzM3NjYsIDEzMzc2OSwgCisgICAgMTMzNzcyLCAxMzM3NzUsIDEzMzc3OCwgMTMzNzgxLCAxMzM3ODQsIDEzMzc4NywgMTMzNzkwLCAxMzM3OTMsIDEzMzc5NiwgCisgICAgMTMzNzk5LCAxMzM4MDIsIDEzMzgwNSwgMTMzODA4LCAxMzM4MTEsIDEzMzgxNCwgMTMzODE3LCAxMzM4MjAsIDEzMzgyMywgCisgICAgMTMzODI2LCAxMzM4MjksIDEzMzgzMiwgMTMzODM1LCAxMzM4MzgsIDEzMzg0MSwgMTMzODQ0LCAxMzM4NDcsIDEzMzg1MCwgCisgICAgMTMzODUzLCAxMzM4NTYsIDEzMzg1OSwgMTMzODYyLCAxMzM4NjUsIDEzMzg2OCwgMTMzODcxLCAxMzM4NzQsIDEzMzg3NywgCisgICAgMTMzODgwLCAxMzM4ODMsIDEzMzg4NiwgMTMzODg5LCAxMzM4OTIsIDEzMzg5NSwgMTMzODk4LCAxMzM5MDEsIDEzMzkwNCwgCisgICAgMTMzOTA3LCAxMzM5MTAsIDEzMzkxMywgMTMzOTE2LCAxMzM5MTksIDEzMzkyMiwgMTMzOTI1LCAxMzM5MjgsIDEzMzkzMSwgCisgICAgMTMzOTM0LCAxMzM5MzcsIDEzMzk0MCwgMTMzOTQzLCAxMzM5NDYsIDEzMzk0OSwgMTMzOTUyLCAxMzM5NTUsIDEzMzk1OCwgCisgICAgMTMzOTYxLCAxMzM5NjQsIDEzMzk2NywgMTMzOTcwLCAxMzM5NzMsIDEzMzk3NiwgMTMzOTc5LCAxMzM5ODIsIDEzMzk4NSwgCisgICAgMTMzOTg4LCAxMzM5OTEsIDEzMzk5NCwgMTMzOTk3LCAxMzQwMDAsIDEzNDAwMywgMTM0MDA2LCAxMzQwMDksIDEzNDAxMiwgCisgICAgMTM0MDE1LCAxMzQwMTgsIDEzNDAyMSwgMTM0MDI0LCAxMzQwMjcsIDEzNDAzMCwgMTM0MDMzLCAxMzQwMzYsIDEzNDAzOSwgCisgICAgMTM0MDQyLCAxMzQwNDUsIDEzNDA0OCwgMTM0MDUxLCAxMzQwNTQsIDEzNDA1NywgMTM0MDYwLCAxMzQwNjMsIDEzNDA2NiwgCisgICAgMTM0MDY5LCAxMzQwNzIsIDEzNDA3NSwgMTM0MDc4LCAxMzQwODEsIDEzNDA4NCwgMTM0MDg3LCAxMzQwOTAsIDEzNDA5MywgCisgICAgMTM0MDk2LCAxMzQwOTksIDEzNDEwMiwgMTM0MTA1LCAxMzQxMDgsIDEzNDExMSwgMTM0MTE0LCAxMzQxMTcsIDEzNDEyMCwgCisgICAgMTM0MTIzLCAxMzQxMjYsIDEzNDEyOSwgMTM0MTMyLCAxMzQxMzUsIDEzNDEzOCwgMTM0MTQxLCAxMzQxNDQsIDEzNDE0NywgCisgICAgMTM0MTUwLCAxMzQxNTMsIDEzNDE1NiwgMTM0MTU5LCAxMzQxNjIsIDEzNDE2NSwgMTM0MTY4LCAxMzQxNzEsIDEzNDE3NCwgCisgICAgMTM0MTc3LCAxMzQxODAsIDEzNDE4MywgMTM0MTg2LCAxMzQxODksIDEzNDE5MiwgMTM0MTk1LCAxMzQxOTgsIDEzNDIwMSwgCisgICAgMTM0MjA0LCAxMzQyMDcsIDEzNDIxMCwgMTM0MjEzLCAxMzQyMTYsIDEzNDIxOSwgMTM0MjIyLCAxMzQyMjUsIDEzNDIyOCwgCisgICAgMTM0MjMxLCAxMzQyMzQsIDEzNDIzNywgMTM0MjQwLCAxMzQyNDMsIDEzNDI0NiwgMTM0MjQ5LCAxMzQyNTIsIDEzNDI1NSwgCisgICAgMTM0MjU4LCAxMzQyNjEsIDEzNDI2NCwgMTM0MjY3LCAxMzQyNzAsIDEzNDI3MywgMTM0Mjc2LCAxMzQyNzksIDEzNDI4MiwgCisgICAgMTM0Mjg1LCAxMzQyODgsIDEzNDI5MSwgMTM0Mjk0LCAxMzQyOTcsIDEzNDMwMCwgMTM0MzAzLCAxMzQzMDYsIDEzNDMwOSwgCisgICAgMTM0MzEyLCAxMzQzMTUsIDEzNDMxOCwgMTM0MzIxLCAxMzQzMjQsIDEzNDMyNywgMTM0MzMwLCAxMzQzMzMsIDEzNDMzNiwgCisgICAgMTM0MzM5LCAxMzQzNDIsIDEzNDM0NSwgMTM0MzQ4LCAxMzQzNTEsIDEzNDM1NCwgMTM0MzU3LCAxMzQzNjAsIDEzNDM2MywgCisgICAgMTM0MzY2LCAxMzQzNjksIDEzNDM3MiwgMTM0Mzc1LCAxMzQzNzgsIDEzNDM4MSwgMTM0Mzg0LCAxMzQzODcsIDEzNDM5MCwgCisgICAgMTM0MzkzLCAxMzQzOTYsIDEzNDM5OSwgMTM0NDAyLCAxMzQ0MDUsIDEzNDQwOCwgMTM0NDExLCAxMzQ0MTQsIDEzNDQxNywgCisgICAgMTM0NDIwLCAxMzQ0MjMsIDEzNDQyNiwgMTM0NDI5LCAxMzQ0MzIsIDEzNDQzNSwgMTM0NDM4LCAxMzQ0NDEsIDEzNDQ0NCwgCisgICAgMTM0NDQ3LCAxMzQ0NTAsIDEzNDQ1MywgMTM0NDU2LCAxMzQ0NTksIDEzNDQ2MiwgMTM0NDY1LCAxMzQ0NjgsIDEzNDQ3MSwgCisgICAgMTM0NDc0LCAxMzQ0NzcsIDEzNDQ4MCwgMTM0NDgzLCAxMzQ0ODYsIDEzNDQ4OSwgMTM0NDkyLCAxMzQ0OTUsIDEzNDQ5OCwgCisgICAgMTM0NTAxLCAxMzQ1MDQsIDEzNDUwNywgMTM0NTEwLCAxMzQ1MTMsIDEzNDUxNiwgMTM0NTE5LCAxMzQ1MjIsIDEzNDUyNSwgCisgICAgMTM0NTI4LCAxMzQ1MzEsIDEzNDUzNCwgMTM0NTM3LCAxMzQ1NDAsIDEzNDU0MywgMTM0NTQ2LCAxMzQ1NDksIDEzNDU1MiwgCisgICAgMTM0NTU1LCAxMzQ1NTgsIDEzNDU2MSwgMTM0NTY0LCAxMzQ1NjcsIDEzNDU3MCwgMTM0NTczLCAxMzQ1NzYsIDEzNDU3OSwgCisgICAgMTM0NTgyLCAxMzQ1ODUsIDEzNDU4OCwgMTM0NTkxLCAxMzQ1OTQsIDEzNDU5NywgMTM0NjAwLCAxMzQ2MDMsIDEzNDYwNiwgCisgICAgMTM0NjA5LCAxMzQ2MTIsIDEzNDYxNSwgMTM0NjE4LCAxMzQ2MjEsIDEzNDYyNCwgMTM0NjI3LCAxMzQ2MzAsIDEzNDYzMywgCisgICAgMTM0NjM2LCAxMzQ2MzksIDEzNDY0MiwgMTM0NjQ1LCAxMzQ2NDgsIDEzNDY1MSwgMTM0NjU0LCAxMzQ2NTcsIDEzNDY2MCwgCisgICAgMTM0NjYzLCAxMzQ2NjYsIDEzNDY2OSwgMTM0NjcyLCAxMzQ2NzUsIDEzNDY3OCwgMTM0NjgxLCAxMzQ2ODQsIDEzNDY4NywgCisgICAgMTM0NjkwLCAxMzQ2OTMsIDEzNDY5NiwgMTM0Njk5LCAxMzQ3MDIsIDEzNDcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM0NzA4LCAxMzQ3MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTk0NSwgMTI5OTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5NDI2LDY1MCArMjA2NjgsNjgzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM0NzE5LCAxMzQ3MjMsIDEzNDcyNywgMTM0NzMxLCAxMzQ3MzUsIDEzNDczOSwgMTM0NzQzLCAxMzQ3NDYsIDEzNDc1MCwgCisgICAgMTM0NzU0LCAxMzQ3NTgsIDEzNDc2MiwgMTM0NzY1LCAxMzQ3NzEsIDEzNDc3NywgMTM0NzgzLCAxMzQ3ODksIDEzNDc5NSwgCisgICAgMTM0Nzk5LCAxMzQ4MDUsIDEzNDgwOSwgMTM0ODEzLCAxMzQ4MTksIDEzNDgyMywgMTM0ODI3LCAxMzQ4MzEsIDEzNDgzNSwgCisgICAgMTM0ODM5LCAxMzQ4NDMsIDEzNDg0NywgMTM0ODUzLCAxMzQ4NTksIDEzNDg2NSwgMTM0ODcxLCAxMzQ4NzgsIDEzNDg4NSwgCisgICAgMTM0ODkyLCAxMzQ5MDIsIDEzNDkwOSwgMTM0OTE2LCAxMzQ5MjIsIDEzNDkyOCwgMTM0OTM0LCAxMzQ5NDAsIDEzNDk0OCwgCisgICAgMTM0OTU2LCAxMzQ5NjQsIDEzNDk3MiwgMTM0OTgxLCAxMzQ5ODcsIDEzNDk5NSwgMTM1MDAxLCAxMzUwMDgsIDEzNTAxNCwgCisgICAgMTM1MDIxLCAxMzUwMjcsIDEzNTAzNSwgMTM1MDM5LCAxMzUwNDMsIDEzNTA0OCwgMTM1MDU0LCAxMzUwNjAsIDEzNTA2OCwgCisgICAgMTM1MDc2LCAxMzUwODIsIDEzNTA4OSwgMTM1MDkyLCAxMzUwOTgsIDEzNTEwMiwgMTM1MTA1LCAxMzUxMDksIDEzNTExMiwgCisgICAgMTM1MTE1LCAxMzUxMTksIDEzNTEyNCwgMTM1MTI4LCAxMzUxMzIsIDEzNTEzOCwgMTM1MTQzLCAxMzUxNDksIDEzNTE1MywgCisgICAgMTM1MTU3LCAxMzUxNjAsIDEzNTE2NCwgMTM1MTY4LCAxMzUxNzMsIDEzNTE3NywgMTM1MTgyLCAxMzUxODYsIDEzNTE5MSwgCisgICAgMTM1MTk1LCAxMzUxOTksIDEzNTIwMywgMTM1MjA3LCAxMzUyMTEsIDEzNTIxNSwgMTM1MjE5LCAxMzUyMjMsIDEzNTIyOCwgCisgICAgMTM1MjMzLCAxMzUyMzgsIDEzNTI0MywgMTM1MjQ5LCAxMzUyNTUsIDEzNTI2MSwgMTM1MjY3LCAxMzUyNzMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzNTI3OCwgMTM1Mjg2LCAxMzUyOTUsIDEzNTMwMywgMTM1MzEwLCAxMzUzMTgsIDEzNTMyNSwgMTM1MzMyLCAKKyAgICAxMzUzNDEsIDEzNTM0OCwgMTM1MzU1LCAxMzUzNjIsIDEzNTM3MCwgMCwgMCwgMCwgMTM1Mzc4LCAxMzUzODMsIDEzNTM5MCwgCisgICAgMTM1Mzk2LCAxMzU0MDMsIDEzNTQwOSwgMTM1NDE1LCAxMzU0MjEsIDEzNTQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1NDMzLCAxMzU0MzgsIDEzNTQ0NSwgMTM1NDUxLCAxMzU0NTgsIDEzNTQ2NCwgMTM1NDcwLCAxMzU0NzYsIDEzNTQ4MiwgCisgICAgMTM1NDg4LCAwLCAwLCAxMzU0OTMsIDEzNTQ5OSwgMTM1NTA1LCAxMzU1MDgsIDEzNTUxNywgMTM1NTI0LCAxMzU1MzIsIAorICAgIDEzNTUzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTU2LCAxMjk5NjAsIDEyOTk2NCwgMTI5OTY4LCAxMjk5NzIsIDEyOTk3NiwgCi0gICAgMTI5OTgwLCAxMjk5ODMsIDEyOTk4NywgMTI5OTkxLCAxMjk5OTUsIDEyOTk5OSwgMTMwMDAyLCAxMzAwMDgsIDEzMDAxMywgCi0gICAgMTMwMDE5LCAxMzAwMjUsIDEzMDAzMCwgMTMwMDM0LCAxMzAwNDAsIDEzMDA0NCwgMTMwMDQ4LCAxMzAwNTQsIDEzMDA1OCwgCi0gICAgMTMwMDYyLCAxMzAwNjYsIDEzMDA3MCwgMTMwMDc0LCAxMzAwNzgsIDEzMDA4MSwgMTMwMDg3LCAxMzAwOTMsIDEzMDA5OSwgCi0gICAgMTMwMTA1LCAxMzAxMTIsIDEzMDExOSwgMTMwMTI2LCAxMzAxMzYsIDEzMDE0MywgMTMwMTUwLCAxMzAxNTUsIDEzMDE2MCwgCi0gICAgMTMwMTY1LCAxMzAxNzAsIDEzMDE3NywgMTMwMTg0LCAxMzAxOTEsIDEzMDE5OCwgMTMwMjA3LCAxMzAyMTMsIDEzMDIyMCwgCi0gICAgMTMwMjI2LCAxMzAyMzMsIDEzMDIzOSwgMTMwMjQ2LCAxMzAyNTEsIDEzMDI1OCwgMTMwMjYyLCAxMzAyNjYsIDEzMDI3MSwgCi0gICAgMTMwMjc3LCAxMzAyODMsIDEzMDI5MCwgMTMwMjk3LCAxMzAzMDMsIDEzMDMxMCwgMTMwMzEzLCAxMzAzMTksIDEzMDMyMywgCi0gICAgMTMwMzI2LCAxMzAzMzAsIDEzMDMzMywgMTMwMzM2LCAxMzAzNDAsIDEzMDM0NSwgMTMwMzQ5LCAxMzAzNTMsIDEzMDM1OSwgCi0gICAgMTMwMzY0LCAxMzAzNzAsIDEzMDM3NCwgMTMwMzc4LCAxMzAzODEsIDEzMDM4NSwgMTMwMzg5LCAxMzAzOTQsIDEzMDM5OCwgCi0gICAgMTMwNDAzLCAxMzA0MDcsIDEzMDQxMiwgMTMwNDE2LCAxMzA0MjAsIDEzMDQyNCwgMTMwNDI4LCAxMzA0MzIsIDEzMDQzNiwgCi0gICAgMTMwNDQwLCAxMzA0NDQsIDEzMDQ0OSwgMTMwNDU0LCAxMzA0NTksIDEzMDQ2NCwgMTMwNDcwLCAxMzA0NzYsIDEzMDQ4MiwgCi0gICAgMTMwNDg4LCAxMzA0OTQsIDAsIDAsIDAsIDAsIDAsIDEzMDQ5OSwgMTMwNTA3LCAxMzA1MTYsIDEzMDUyNCwgMTMwNTMxLCAKLSAgICAxMzA1MzksIDEzMDU0NiwgMTMwNTUzLCAxMzA1NjIsIDEzMDU2OSwgMTMwNTc2LCAxMzA1ODMsIDEzMDU5MSwgMCwgMCwgMCwgCi0gICAgMTMwNTk5LCAxMzA2MDQsIDEzMDYxMSwgMTMwNjE3LCAxMzA2MjQsIDEzMDYzMCwgMTMwNjM2LCAxMzA2NDIsIDEzMDY0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjU0LCAxMzA2NTksIDEzMDY2NiwgMTMwNjcyLCAxMzA2NzksIDEzMDY4NSwgCi0gICAgMTMwNjkxLCAxMzA2OTcsIDEzMDcwMywgMTMwNzA5LCAwLCAwLCAxMzA3MTQsIDEzMDcyMCwgMTMwNzI2LCAxMzA3MjksIAotICAgIDEzMDczOCwgMTMwNzQ1LCAxMzA3NTMsIDEzMDc2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1NTQ2LCAKKyAgICAxMzU1NTEsIDEzNTU1NiwgMTM1NTYxLCAxMzU1NjgsIDEzNTU3NSwgMTM1NTgyLCAxMzU1ODksIDEzNTU5NCwgMTM1NTk5LCAKKyAgICAxMzU2MDQsIDEzNTYwOSwgMTM1NjE2LCAxMzU2MjEsIDEzNTYyOCwgMTM1NjM1LCAxMzU2NDAsIDEzNTY0NSwgMTM1NjUwLCAKKyAgICAxMzU2NTcsIDEzNTY2MiwgMTM1NjY3LCAxMzU2NzQsIDEzNTY4MSwgMTM1Njg2LCAxMzU2OTEsIDEzNTY5NiwgMTM1NzAzLCAKKyAgICAxMzU3MTAsIDEzNTcxNywgMTM1NzIyLCAxMzU3MjcsIDEzNTczNCwgMTM1NzQxLCAxMzU3NDgsIDEzNTc1NSwgMTM1NzYwLCAKKyAgICAxMzU3NjUsIDEzNTc3MCwgMTM1Nzc3LCAxMzU3ODIsIDEzNTc4NywgMTM1NzkyLCAxMzU3OTksIDEzNTgwOCwgMTM1ODE1LCAKKyAgICAxMzU4MjAsIDEzNTgyNSwgMTM1ODMwLCAxMzU4MzUsIDEzNTg0MCwgMTM1ODQ1LCAxMzU4NTQsIDEzNTg2MSwgMTM1ODY2LCAKKyAgICAxMzU4NzMsIDEzNTg4MCwgMTM1ODg1LCAxMzU4OTAsIDEzNTg5NSwgMTM1OTAyLCAxMzU5MDcsIDEzNTkxNCwgMTM1OTIxLCAKKyAgICAxMzU5MjYsIDEzNTkzMSwgMTM1OTM2LCAxMzU5NDMsIDEzNTk1MCwgMTM1OTU1LCAxMzU5NjAsIDEzNTk2NywgMTM1OTc0LCAKKyAgICAxMzU5ODEsIDEzNTk4NiwgMTM1OTkxLCAxMzU5OTYsIDEzNjAwMSwgMTM2MDA4LCAxMzYwMTcsIDEzNjAyNiwgMTM2MDMxLCAKKyAgICAxMzYwMzgsIDEzNjA0NywgMTM2MDUyLCAxMzYwNTcsIDEzNjA2MiwgMTM2MDY3LCAxMzYwNzQsIDEzNjA4MSwgMTM2MDg4LCAKKyAgICAxMzYwOTUsIDEzNjEwMCwgMTM2MTA1LCAxMzYxMTAsIDEzNjExNywgMTM2MTI0LCAxMzYxMzEsIDEzNjEzNiwgMTM2MTQxLCAKKyAgICAxMzYxNDgsIDEzNjE1MywgMTM2MTYwLCAxMzYxNjUsIDEzNjE3MiwgMTM2MTc3LCAxMzYxODQsIDEzNjE5MSwgMTM2MTk2LCAKKyAgICAxMzYyMDEsIDEzNjIwNiwgMTM2MjExLCAxMzYyMTYsIDEzNjIyMSwgMTM2MjI2LCAxMzYyMzEsIDEzNjIzNiwgMTM2MjQzLCAKKyAgICAxMzYyNTAsIDEzNjI1NywgMTM2MjY0LCAxMzYyNzEsIDEzNjI4MCwgMTM2Mjg1LCAxMzYyOTAsIDEzNjI5NywgMTM2MzA0LCAKKyAgICAxMzYzMDksIDEzNjMxNiwgMTM2MzIzLCAxMzYzMzAsIDEzNjMzNywgMTM2MzQ0LCAxMzYzNTEsIDEzNjM1NiwgMTM2MzYxLCAKKyAgICAxMzYzNjYsIDEzNjM3MSwgMTM2Mzc2LCAxMzYzODUsIDEzNjM5NCwgMTM2NDAzLCAxMzY0MTIsIDEzNjQyMSwgMTM2NDMwLCAKKyAgICAxMzY0MzksIDEzNjQ0OCwgMTM2NDUzLCAxMzY0NjQsIDEzNjQ3NSwgMTM2NDg0LCAxMzY0ODksIDEzNjQ5NCwgMTM2NDk5LCAKKyAgICAxMzY1MDQsIDEzNjUxMywgMTM2NTIwLCAxMzY1MjcsIDEzNjUzNCwgMTM2NTQxLCAxMzY1NDgsIDEzNjU1NSwgMTM2NTY0LCAKKyAgICAxMzY1NzMsIDEzNjU4NCwgMTM2NTkzLCAxMzY2MDQsIDEzNjYxMywgMTM2NjIwLCAxMzY2MjksIDEzNjY0MCwgMTM2NjQ5LCAKKyAgICAxMzY2NTgsIDEzNjY2NywgMTM2Njc2LCAxMzY2ODMsIDEzNjY5MCwgMTM2Njk3LCAxMzY3MDYsIDEzNjcxNSwgMTM2NzI2LCAKKyAgICAxMzY3MzUsIDEzNjc0NCwgMTM2NzU1LCAxMzY3NjAsIDEzNjc2NSwgMTM2Nzc2LCAxMzY3ODQsIDEzNjc5MywgMTM2ODAyLCAKKyAgICAxMzY4MTEsIDEzNjgyMiwgMTM2ODMxLCAxMzY4NDAsIDEzNjg1MSwgMTM2ODYyLCAxMzY4NzMsIDEzNjg4NCwgMTM2ODk1LCAKKyAgICAxMzY5MDYsIDEzNjkxMywgMTM2OTIwLCAxMzY5MjcsIDEzNjkzNCwgMTM2OTQ1LCAxMzY5NTQsIDEzNjk2MSwgMTM2OTY4LCAKKyAgICAxMzY5NzUsIDEzNjk4NiwgMTM2OTk3LCAxMzcwMDgsIDEzNzAxOSwgMTM3MDMwLCAxMzcwNDEsIDEzNzA1MiwgMTM3MDYzLCAKKyAgICAxMzcwNzAsIDEzNzA3NywgMTM3MDg2LCAxMzcwOTUsIDEzNzEwMiwgMTM3MTA5LCAxMzcxMTYsIDEzNzEyNSwgMTM3MTM0LCAKKyAgICAxMzcxNDMsIDEzNzE1MCwgMTM3MTU5LCAxMzcxNjgsIDEzNzE3NywgMTM3MTg0LCAxMzcxOTEsIDEzNzE5NiwgMTM3MjAyLCAKKyAgICAxMzcyMDksIDEzNzIxNiwgMTM3MjIzLCAxMzcyMzAsIDEzNzIzNywgMTM3MjQ0LCAxMzcyNTMsIDEzNzI2MiwgMTM3MjcxLCAKKyAgICAxMzcyODAsIDEzNzI4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM3Mjk2LCAxMzczMDIsIDEzNzMwNywgCisgICAgMTM3MzEyLCAxMzczMTksIDEzNzMyNSwgMTM3MzMxLCAxMzczMzcsIDEzNzM0MywgMTM3MzQ5LCAxMzczNTUsIDEzNzM2MSwgCisgICAgMTM3MzY1LCAxMzczNjksIDEzNzM3NSwgMTM3MzgxLCAxMzczODcsIDEzNzM5MSwgMTM3Mzk2LCAxMzc0MDEsIDEzNzQwNSwgCisgICAgMTM3NDA5LCAxMzc0MTIsIDEzNzQxOCwgMTM3NDI0LCAxMzc0MzAsIDEzNzQzNiwgMTM3NDQyLCAxMzc0NDgsIDEzNzQ1NCwgCisgICAgMTM3NDYwLCAxMzc0NjYsIDEzNzQ3NiwgMTM3NDg2LCAxMzc0OTIsIDEzNzQ5OCwgMTM3NTA4LCAxMzc1MTgsIDEzNzUyNCwgCisgICAgMCwgMCwgMTM3NTMwLCAxMzc1MzgsIDEzNzU0MywgMTM3NTQ4LCAxMzc1NTQsIDEzNzU2MCwgMTM3NTY2LCAxMzc1NzIsIAorICAgIDEzNzU3OCwgMTM3NTg0LCAxMzc1OTEsIDEzNzU5OCwgMTM3NjA0LCAxMzc2MTAsIDEzNzYxNiwgMTM3NjIyLCAxMzc2MjgsIAorICAgIDEzNzYzNCwgMTM3NjQwLCAxMzc2NDYsIDEzNzY1MSwgMTM3NjU3LCAxMzc2NjMsIDEzNzY2OSwgMTM3Njc1LCAxMzc2ODEsIAorICAgIDEzNzY5MCwgMTM3Njk2LCAxMzc3MDEsIDEzNzcwOSwgMTM3NzE2LCAxMzc3MjMsIDEzNzczMiwgMTM3NzQxLCAxMzc3NTAsIAorICAgIDEzNzc1OSwgMTM3NzY4LCAxMzc3NzcsIDEzNzc4NiwgMTM3Nzk1LCAxMzc4MDUsIDEzNzgxNSwgMTM3ODIzLCAxMzc4MzEsIAorICAgIDEzNzg0MCwgMTM3ODQ5LCAxMzc4NTUsIDEzNzg2MSwgMTM3ODY3LCAxMzc4NzMsIDEzNzg4MSwgMTM3ODg5LCAxMzc4OTMsIAorICAgIDEzNzg5OSwgMTM3OTA0LCAxMzc5MTAsIDEzNzkxNiwgMTM3OTIyLCAxMzc5MjgsIDEzNzkzNCwgMTM3OTQzLCAxMzc5NDgsIAorICAgIDEzNzk1NSwgMTM3OTYwLCAxMzc5NjUsIDEzNzk3MCwgMTM3OTc2LCAxMzc5ODIsIDEzNzk4OCwgMTM3OTk1LCAxMzgwMDAsIAorICAgIDEzODAwNSwgMTM4MDEwLCAxMzgwMTUsIDEzODAyMCwgMTM4MDI2LCAxMzgwMzIsIDEzODAzOCwgMTM4MDQ0LCAxMzgwNTAsIAorICAgIDEzODA1NiwgMTM4MDYyLCAxMzgwNjgsIDEzODA3MywgMTM4MDc4LCAxMzgwODMsIDEzODA4OCwgMTM4MDkzLCAxMzgwOTgsIAorICAgIDEzODEwMywgMTM4MTA4LCAxMzgxMTQsIDEzODEyMCwgMTM4MTI1LCAxMzgxMzAsIDEzODEzNSwgMTM4MTQwLCAxMzgxNDUsIAorICAgIDEzODE1MSwgMTM4MTU4LCAxMzgxNjIsIDEzODE2NiwgMTM4MTcwLCAxMzgxNzQsIDEzODE3OCwgMTM4MTgyLCAxMzgxODYsIAorICAgIDEzODE5MCwgMTM4MTk4LCAxMzgyMDgsIDEzODIxMiwgMTM4MjE2LCAxMzgyMjIsIDEzODIyOCwgMTM4MjM0LCAxMzgyNDAsIAorICAgIDEzODI0NiwgMTM4MjUyLCAxMzgyNTgsIDEzODI2NCwgMTM4MjcwLCAxMzgyNzYsIDEzODI4MiwgMTM4Mjg4LCAxMzgyOTQsIAorICAgIDEzODMwMCwgMTM4MzA0LCAxMzgzMDgsIDEzODMxNSwgMTM4MzIxLCAxMzgzMjcsIDEzODMzMywgMTM4MzM4LCAxMzgzNDUsIAorICAgIDEzODM1MCwgMTM4MzU2LCAxMzgzNjIsIDEzODM2OCwgMTM4Mzc0LCAxMzgzNzksIDEzODM4MywgMTM4Mzg5LCAxMzgzOTMsIAorICAgIDEzODM5NywgMTM4NDAxLCAxMzg0MDcsIDEzODQxMywgMTM4NDE3LCAxMzg0MjMsIDEzODQyOSwgMTM4NDM1LCAxMzg0NDEsIAorICAgIDEzODQ0NywgMTM4NDU1LCAxMzg0NjMsIDEzODQ2OSwgMTM4NDc1LCAxMzg0ODEsIDEzODQ4NywgMTM4NDk5LCAxMzg1MTEsIAorICAgIDEzODUyNSwgMTM4NTM3LCAxMzg1NDksIDEzODU2MywgMTM4NTc3LCAxMzg1OTEsIDEzODU5NSwgMTM4NjAzLCAxMzg2MTEsIAorICAgIDEzODYxNiwgMTM4NjIwLCAxMzg2MjQsIDEzODYyOCwgMTM4NjMyLCAxMzg2MzYsIDEzODY0MCwgMTM4NjQ0LCAxMzg2NTAsIAorICAgIDEzODY1NiwgMTM4NjYyLCAxMzg2NjgsIDEzODY3NiwgMTM4Njg1LCAxMzg2OTIsIDEzODY5OSwgMTM4NzA3LCAxMzg3MTQsIAorICAgIDEzODcyNiwgMTM4NzM4LCAxMzg3NTAsIDEzODc2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4NzY5LCAxMzg3NzYsIDEzODc4MywgMTM4NzkwLCAxMzg3OTcsIAorICAgIDEzODgwNCwgMTM4ODExLCAxMzg4MTgsIDEzODgyNSwgMTM4ODMyLCAxMzg4MzksIDEzODg0NiwgMTM4ODUzLCAxMzg4NjAsIAorICAgIDEzODg2NywgMTM4ODc0LCAxMzg4ODEsIDEzODg4OCwgMTM4ODk1LCAxMzg5MDIsIDEzODkwOSwgMTM4OTE2LCAxMzg5MjMsIAorICAgIDEzODkzMCwgMTM4OTM3LCAxMzg5NDQsIDEzODk1MSwgMTM4OTU4LCAxMzg5NjUsIDEzODk3MiwgMTM4OTc5LCAxMzg5ODYsIAorICAgIDEzODk5MywgMTM5MDAwLCAxMzkwMDcsIDEzOTAxNCwgMTM5MDIxLCAxMzkwMjgsIDEzOTAzNSwgMTM5MDQyLCAxMzkwNDksIAorICAgIDEzOTA1NiwgMTM5MDYzLCAxMzkwNzAsIDEzOTA3NywgMTM5MDg0LCAxMzkwOTEsIDEzOTA5OCwgMTM5MTA1LCAxMzkxMTIsIAorICAgIDEzOTExOSwgMTM5MTI2LCAxMzkxMzMsIDEzOTE0MCwgMTM5MTQ3LCAxMzkxNTQsIDEzOTE2MSwgMTM5MTY4LCAxMzkxNzUsIAorICAgIDEzOTE4MiwgMTM5MTg5LCAxMzkxOTYsIDEzOTIwMywgMTM5MjEwLCAxMzkyMTcsIDEzOTIyNCwgMTM5MjMxLCAxMzkyMzYsIAorICAgIDEzOTI0MSwgMTM5MjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzA3NjcsIDEzMDc3MiwgMTMwNzc3LCAxMzA3ODIsIDEzMDc4OSwgMTMwNzk2LCAxMzA4MDMsIAotICAgIDEzMDgxMCwgMTMwODE1LCAxMzA4MjAsIDEzMDgyNSwgMTMwODMwLCAxMzA4MzcsIDEzMDg0MiwgMTMwODQ5LCAxMzA4NTYsIAotICAgIDEzMDg2MSwgMTMwODY2LCAxMzA4NzEsIDEzMDg3OCwgMTMwODgzLCAxMzA4ODgsIDEzMDg5NSwgMTMwOTAyLCAxMzA5MDcsIAotICAgIDEzMDkxMiwgMTMwOTE3LCAxMzA5MjQsIDEzMDkzMSwgMTMwOTM4LCAxMzA5NDMsIDEzMDk0OCwgMTMwOTU1LCAxMzA5NjIsIAotICAgIDEzMDk2OSwgMTMwOTc2LCAxMzA5ODEsIDEzMDk4NiwgMTMwOTkxLCAxMzA5OTgsIDEzMTAwMywgMTMxMDA4LCAxMzEwMTMsIAotICAgIDEzMTAyMCwgMTMxMDI5LCAxMzEwMzYsIDEzMTA0MSwgMTMxMDQ2LCAxMzEwNTEsIDEzMTA1NiwgMTMxMDYxLCAxMzEwNjYsIAotICAgIDEzMTA3NSwgMTMxMDgyLCAxMzEwODcsIDEzMTA5NCwgMTMxMTAxLCAxMzExMDYsIDEzMTExMSwgMTMxMTE2LCAxMzExMjMsIAotICAgIDEzMTEyOCwgMTMxMTM1LCAxMzExNDIsIDEzMTE0NywgMTMxMTUyLCAxMzExNTcsIDEzMTE2NCwgMTMxMTcxLCAxMzExNzYsIAotICAgIDEzMTE4MSwgMTMxMTg4LCAxMzExOTUsIDEzMTIwMiwgMTMxMjA3LCAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAxMzEyMjksIAotICAgIDEzMTIzOCwgMTMxMjQ3LCAxMzEyNTIsIDEzMTI1OSwgMTMxMjY4LCAxMzEyNzMsIDEzMTI3OCwgMTMxMjgzLCAxMzEyODgsIAotICAgIDEzMTI5NSwgMTMxMzAyLCAxMzEzMDksIDEzMTMxNiwgMTMxMzIxLCAxMzEzMjYsIDEzMTMzMSwgMTMxMzM4LCAxMzEzNDUsIAotICAgIDEzMTM1MiwgMTMxMzU3LCAxMzEzNjIsIDEzMTM2OSwgMTMxMzc0LCAxMzEzODEsIDEzMTM4NiwgMTMxMzkzLCAxMzEzOTgsIAotICAgIDEzMTQwNSwgMTMxNDEyLCAxMzE0MTcsIDEzMTQyMiwgMTMxNDI3LCAxMzE0MzIsIDEzMTQzNywgMTMxNDQyLCAxMzE0NDcsIAotICAgIDEzMTQ1MiwgMTMxNDU3LCAxMzE0NjQsIDEzMTQ3MSwgMTMxNDc4LCAxMzE0ODUsIDEzMTQ5MiwgMTMxNTAxLCAxMzE1MDYsIAotICAgIDEzMTUxMSwgMTMxNTE4LCAxMzE1MjUsIDEzMTUzMCwgMTMxNTM3LCAxMzE1NDQsIDEzMTU1MSwgMTMxNTU4LCAxMzE1NjUsIAotICAgIDEzMTU3MiwgMTMxNTc3LCAxMzE1ODIsIDEzMTU4NywgMTMxNTkyLCAxMzE1OTcsIDEzMTYwNiwgMTMxNjE1LCAxMzE2MjQsIAotICAgIDEzMTYzMywgMTMxNjQyLCAxMzE2NTEsIDEzMTY2MCwgMTMxNjY5LCAxMzE2NzQsIDEzMTY4NSwgMTMxNjk2LCAxMzE3MDUsIAotICAgIDEzMTcxMCwgMTMxNzE1LCAxMzE3MjAsIDEzMTcyNSwgMTMxNzM0LCAxMzE3NDEsIDEzMTc0OCwgMTMxNzU1LCAxMzE3NjIsIAotICAgIDEzMTc2OSwgMTMxNzc2LCAxMzE3ODUsIDEzMTc5NCwgMTMxODA1LCAxMzE4MTQsIDEzMTgyNSwgMTMxODM0LCAxMzE4NDEsIAotICAgIDEzMTg1MCwgMTMxODYxLCAxMzE4NzAsIDEzMTg3OSwgMTMxODg4LCAxMzE4OTcsIDEzMTkwNCwgMTMxOTExLCAxMzE5MTgsIAotICAgIDEzMTkyNywgMTMxOTM2LCAxMzE5NDcsIDEzMTk1NiwgMTMxOTY1LCAxMzE5NzYsIDEzMTk4MSwgMTMxOTg2LCAxMzE5OTcsIAotICAgIDEzMjAwNSwgMTMyMDE0LCAxMzIwMjMsIDEzMjAzMiwgMTMyMDQzLCAxMzIwNTIsIDEzMjA2MSwgMTMyMDcyLCAxMzIwODMsIAotICAgIDEzMjA5NCwgMTMyMTA1LCAxMzIxMTYsIDEzMjEyNywgMTMyMTM0LCAxMzIxNDEsIDEzMjE0OCwgMTMyMTU1LCAxMzIxNjYsIAotICAgIDEzMjE3NSwgMTMyMTgyLCAxMzIxODksIDEzMjE5NiwgMTMyMjA3LCAxMzIyMTgsIDEzMjIyOSwgMTMyMjQwLCAxMzIyNTEsIAotICAgIDEzMjI2MiwgMTMyMjczLCAxMzIyODQsIDEzMjI5MSwgMTMyMjk4LCAxMzIzMDcsIDEzMjMxNiwgMTMyMzIzLCAxMzIzMzAsIAotICAgIDEzMjMzNywgMTMyMzQ2LCAxMzIzNTUsIDEzMjM2NCwgMTMyMzcxLCAxMzIzODAsIDEzMjM4OSwgMTMyMzk4LCAxMzI0MDUsIAotICAgIDEzMjQxMiwgMTMyNDE3LCAxMzI0MjMsIDEzMjQzMCwgMTMyNDM3LCAxMzI0NDQsIDEzMjQ1MSwgMTMyNDU4LCAxMzI0NjUsIAotICAgIDEzMjQ3NCwgMTMyNDgzLCAxMzI0OTIsIDEzMjUwMSwgMTMyNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzI1MTcsIDEzMjUyMywgMTMyNTI4LCAxMzI1MzMsIDEzMjU0MCwgMTMyNTQ2LCAxMzI1NTIsIDEzMjU1OCwgMTMyNTY0LCAKLSAgICAxMzI1NzAsIDEzMjU3NiwgMTMyNTgyLCAxMzI1ODYsIDEzMjU5MCwgMTMyNTk2LCAxMzI2MDIsIDEzMjYwOCwgMTMyNjEyLCAKLSAgICAxMzI2MTcsIDEzMjYyMiwgMTMyNjI2LCAxMzI2MzAsIDEzMjYzMywgMTMyNjM5LCAxMzI2NDUsIDEzMjY1MSwgMTMyNjU3LCAKLSAgICAxMzI2NjMsIDEzMjY2OSwgMTMyNjc1LCAxMzI2ODEsIDEzMjY4NywgMTMyNjk3LCAxMzI3MDcsIDEzMjcxMywgMTMyNzE5LCAKLSAgICAxMzI3MjksIDEzMjczOSwgMTMyNzQ1LCAwLCAwLCAxMzI3NTEsIDEzMjc1OSwgMTMyNzY0LCAxMzI3NjksIDEzMjc3NSwgCi0gICAgMTMyNzgxLCAxMzI3ODcsIDEzMjc5MywgMTMyNzk5LCAxMzI4MDUsIDEzMjgxMiwgMTMyODE5LCAxMzI4MjUsIDEzMjgzMSwgCi0gICAgMTMyODM3LCAxMzI4NDMsIDEzMjg0OSwgMTMyODU1LCAxMzI4NjEsIDEzMjg2NywgMTMyODcyLCAxMzI4NzgsIDEzMjg4NCwgCi0gICAgMTMyODkwLCAxMzI4OTYsIDEzMjkwMiwgMTMyOTExLCAxMzI5MTcsIDEzMjkyMiwgMTMyOTMwLCAxMzI5MzcsIDEzMjk0NCwgCi0gICAgMTMyOTUzLCAxMzI5NjIsIDEzMjk3MSwgMTMyOTgwLCAxMzI5ODksIDEzMjk5OCwgMTMzMDA3LCAxMzMwMTYsIDEzMzAyNiwgCi0gICAgMTMzMDM2LCAxMzMwNDQsIDEzMzA1MiwgMTMzMDYxLCAxMzMwNzAsIDEzMzA3NiwgMTMzMDgyLCAxMzMwODgsIDEzMzA5NCwgCi0gICAgMTMzMTAyLCAxMzMxMTAsIDEzMzExNCwgMTMzMTIwLCAxMzMxMjUsIDEzMzEzMSwgMTMzMTM3LCAxMzMxNDMsIDEzMzE0OSwgCi0gICAgMTMzMTU1LCAxMzMxNjQsIDEzMzE2OSwgMTMzMTc2LCAxMzMxODEsIDEzMzE4NiwgMTMzMTkxLCAxMzMxOTcsIDEzMzIwMywgCi0gICAgMTMzMjA5LCAxMzMyMTYsIDEzMzIyMSwgMTMzMjI2LCAxMzMyMzEsIDEzMzIzNiwgMTMzMjQxLCAxMzMyNDcsIDEzMzI1MywgCi0gICAgMTMzMjU5LCAxMzMyNjUsIDEzMzI3MSwgMTMzMjc3LCAxMzMyODMsIDEzMzI4OSwgMTMzMjk0LCAxMzMyOTksIDEzMzMwNCwgCi0gICAgMTMzMzA5LCAxMzMzMTQsIDEzMzMxOSwgMTMzMzI0LCAxMzMzMjksIDEzMzMzNSwgMTMzMzQxLCAxMzMzNDYsIDEzMzM1MSwgCi0gICAgMTMzMzU2LCAxMzMzNjEsIDEzMzM2NiwgMTMzMzcyLCAxMzMzNzksIDEzMzM4MywgMTMzMzg3LCAxMzMzOTEsIDEzMzM5NSwgCi0gICAgMTMzMzk5LCAxMzM0MDMsIDEzMzQwNywgMTMzNDExLCAxMzM0MTksIDEzMzQyOSwgMTMzNDMzLCAxMzM0MzcsIDEzMzQ0MywgCi0gICAgMTMzNDQ5LCAxMzM0NTUsIDEzMzQ2MSwgMTMzNDY3LCAxMzM0NzMsIDEzMzQ3OSwgMTMzNDg1LCAxMzM0OTEsIDEzMzQ5NywgCi0gICAgMTMzNTAzLCAxMzM1MDksIDEzMzUxNSwgMTMzNTIxLCAxMzM1MjUsIDEzMzUyOSwgMTMzNTM2LCAxMzM1NDIsIDEzMzU0OCwgCi0gICAgMTMzNTU0LCAxMzM1NTksIDEzMzU2NiwgMTMzNTcxLCAxMzM1NzcsIDEzMzU4MywgMTMzNTg5LCAxMzM1OTUsIDEzMzYwMCwgCi0gICAgMTMzNjA0LCAxMzM2MTAsIDEzMzYxNCwgMTMzNjE4LCAxMzM2MjIsIDEzMzYyOCwgMTMzNjM0LCAxMzM2MzgsIDEzMzY0NCwgCi0gICAgMTMzNjUwLCAxMzM2NTYsIDEzMzY2MiwgMTMzNjY4LCAxMzM2NzYsIDEzMzY4NCwgMTMzNjkwLCAxMzM2OTYsIDEzMzcwMiwgCi0gICAgMTMzNzA4LCAxMzM3MjAsIDEzMzczMiwgMTMzNzQ2LCAxMzM3NTgsIDEzMzc3MCwgMTMzNzg0LCAxMzM3OTgsIDEzMzgxMiwgCi0gICAgMTMzODE2LCAxMzM4MjQsIDEzMzgzMiwgMTMzODM3LCAxMzM4NDEsIDEzMzg0NSwgMTMzODQ5LCAxMzM4NTMsIDEzMzg1NywgCi0gICAgMTMzODYxLCAxMzM4NjUsIDEzMzg3MSwgMTMzODc3LCAxMzM4ODMsIDEzMzg4OSwgMTMzODk3LCAxMzM5MDYsIDEzMzkxMywgCi0gICAgMTMzOTIwLCAxMzM5MjgsIDEzMzkzNSwgMTMzOTQ3LCAxMzM5NTksIDEzMzk3MSwgMTMzOTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM5OTAsIDEzMzk5NywgCi0gICAgMTM0MDA0LCAxMzQwMTEsIDEzNDAxOCwgMTM0MDI1LCAxMzQwMzIsIDEzNDAzOSwgMTM0MDQ2LCAxMzQwNTMsIDEzNDA2MCwgCi0gICAgMTM0MDY3LCAxMzQwNzQsIDEzNDA4MSwgMTM0MDg4LCAxMzQwOTUsIDEzNDEwMiwgMTM0MTA5LCAxMzQxMTYsIDEzNDEyMywgCi0gICAgMTM0MTMwLCAxMzQxMzcsIDEzNDE0NCwgMTM0MTUxLCAxMzQxNTgsIDEzNDE2NSwgMTM0MTcyLCAxMzQxNzksIDEzNDE4NiwgCi0gICAgMTM0MTkzLCAxMzQyMDAsIDEzNDIwNywgMTM0MjE0LCAxMzQyMjEsIDEzNDIyOCwgMTM0MjM1LCAxMzQyNDIsIDEzNDI0OSwgCi0gICAgMTM0MjU2LCAxMzQyNjMsIDEzNDI3MCwgMTM0Mjc3LCAxMzQyODQsIDEzNDI5MSwgMTM0Mjk4LCAxMzQzMDUsIDEzNDMxMiwgCi0gICAgMTM0MzE5LCAxMzQzMjYsIDEzNDMzMywgMTM0MzQwLCAxMzQzNDcsIDEzNDM1NCwgMTM0MzYxLCAxMzQzNjgsIDEzNDM3NSwgCi0gICAgMTM0MzgyLCAxMzQzODksIDEzNDM5NiwgMTM0NDAzLCAxMzQ0MTAsIDEzNDQxNywgMTM0NDI0LCAxMzQ0MzEsIDEzNDQzOCwgCi0gICAgMTM0NDQ1LCAxMzQ0NTIsIDEzNDQ1NywgMTM0NDYyLCAxMzQ0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOTI1MCwgMTM5MjU1LCAxMzkyNjIsIDEzOTI2OSwgMTM5Mjc2LCAxMzkyODMsIDEzOTI4OCwgMTM5MjkzLCAxMzkzMDAsIAorICAgIDEzOTMwNSwgMTM5MzEwLCAxMzkzMTcsIDEzOTMyMiwgMTM5MzI3LCAxMzkzMzIsIDEzOTMzOSwgMTM5MzQ4LCAxMzkzNTMsIAorICAgIDEzOTM1OCwgMTM5MzYzLCAxMzkzNjgsIDEzOTM3MywgMTM5Mzc4LCAxMzkzODUsIDEzOTM5MCwgMTM5Mzk1LCAxMzk0MDAsIAorICAgIDEzOTQwNSwgMTM5NDEwLCAxMzk0MTUsIDEzOTQyMCwgMTM5NDI1LCAxMzk0MzAsIDEzOTQzNSwgMTM5NDQwLCAxMzk0NDUsIAorICAgIDEzOTQ1MSwgMTM5NDU2LCAxMzk0NjEsIDEzOTQ2NiwgMTM5NDcxLCAxMzk0NzYsIDEzOTQ4MSwgMTM5NDg2LCAxMzk0OTEsIAorICAgIDEzOTQ5NiwgMTM5NTA1LCAxMzk1MTAsIDEzOTUxOSwgMTM5NTI0LCAxMzk1MjksIDEzOTUzNCwgMTM5NTM5LCAxMzk1NDQsIAorICAgIDEzOTU0OSwgMTM5NTU0LCAxMzk1NjMsIDEzOTU2OCwgMTM5NTczLCAxMzk1NzgsIDEzOTU4MywgMTM5NTg4LCAxMzk1OTUsIAorICAgIDEzOTYwMCwgMTM5NjA3LCAxMzk2MTIsIDEzOTYxNywgMTM5NjIyLCAxMzk2MjcsIDEzOTYzMiwgMTM5NjM3LCAxMzk2NDIsIAorICAgIDEzOTY0NywgMTM5NjUyLCAxMzk2NTcsIDEzOTY2MiwgMTM5NjY3LCAxMzk2NzIsIDEzOTY3NywgMTM5NjgyLCAxMzk2ODcsIAorICAgIDEzOTY5MiwgMTM5Njk3LCAxMzk3MDIsIDEzOTcxMSwgMTM5NzE2LCAxMzk3MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzOTcyNiwgMTM5NzM0LCAxMzk3NDIsIDEzOTc1MCwgMTM5NzU4LCAxMzk3NjYsIDEzOTc3NCwgMTM5NzgzLCAKKyAgICAxMzk3OTEsIDEzOTgwMCwgMTM5ODA4LCAxMzk4MTYsIDEzOTgyNCwgMTM5ODMyLCAxMzk4NDAsIDEzOTg0OCwgMTM5ODU3LCAKKyAgICAxMzk4NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDQ3MSwgMTM0NDc2LCAxMzQ0ODMsIDEzNDQ5MCwgMTM0NDk3LCAxMzQ1MDQsIAotICAgIDEzNDUwOSwgMTM0NTE0LCAxMzQ1MjEsIDEzNDUyNiwgMTM0NTMxLCAxMzQ1MzgsIDEzNDU0MywgMTM0NTQ4LCAxMzQ1NTMsIAotICAgIDEzNDU2MCwgMTM0NTY5LCAxMzQ1NzQsIDEzNDU3OSwgMTM0NTg0LCAxMzQ1ODksIDEzNDU5NCwgMTM0NTk5LCAxMzQ2MDYsIAotICAgIDEzNDYxMSwgMTM0NjE2LCAxMzQ2MjEsIDEzNDYyNiwgMTM0NjMxLCAxMzQ2MzYsIDEzNDY0MSwgMTM0NjQ2LCAxMzQ2NTEsIAotICAgIDEzNDY1NiwgMTM0NjYxLCAxMzQ2NjYsIDEzNDY3MiwgMTM0Njc3LCAxMzQ2ODIsIDEzNDY4NywgMTM0NjkyLCAxMzQ2OTcsIAotICAgIDEzNDcwMiwgMTM0NzA3LCAxMzQ3MTIsIDEzNDcxNywgMTM0NzI2LCAxMzQ3MzEsIDEzNDc0MCwgMTM0NzQ1LCAxMzQ3NTAsIAotICAgIDEzNDc1NSwgMTM0NzYwLCAxMzQ3NjUsIDEzNDc3MCwgMTM0Nzc1LCAxMzQ3ODQsIDEzNDc4OSwgMTM0Nzk0LCAxMzQ3OTksIAotICAgIDEzNDgwNCwgMTM0ODA5LCAxMzQ4MTYsIDEzNDgyMSwgMTM0ODI4LCAxMzQ4MzMsIDEzNDgzOCwgMTM0ODQzLCAxMzQ4NDgsIAotICAgIDEzNDg1MywgMTM0ODU4LCAxMzQ4NjMsIDEzNDg2OCwgMTM0ODczLCAxMzQ4NzgsIDEzNDg4MywgMTM0ODg4LCAxMzQ4OTMsIAotICAgIDEzNDg5OCwgMTM0OTAzLCAxMzQ5MDgsIDEzNDkxMywgMTM0OTE4LCAxMzQ5MjMsIDEzNDkzMiwgMTM0OTM3LCAxMzQ5NDIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDk0NywgMTM0OTU1LCAxMzQ5NjMsIDEzNDk3MSwgMTM0OTc5LCAKLSAgICAxMzQ5ODcsIDEzNDk5NSwgMTM1MDA0LCAxMzUwMTIsIDEzNTAyMSwgMTM1MDI5LCAxMzUwMzcsIDEzNTA0NSwgMTM1MDUzLCAKLSAgICAxMzUwNjEsIDEzNTA2OSwgMTM1MDc4LCAxMzUwODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOTg3NCwgMTM5ODc4LCAxMzk4ODMsIDEzOTg4OCwgMTM5ODkzLCAxMzk4OTcsIDEzOTkwMiwgMTM5OTA3LCAxMzk5MTIsIAorICAgIDEzOTkxNiwgMTM5OTIxLCAxMzk5MjYsIDEzOTkzMCwgMTM5OTM1LCAxMzk5NDAsIDEzOTk0NCwgMTM5OTQ5LCAxMzk5NTQsIAorICAgIDEzOTk1OCwgMTM5OTYzLCAxMzk5NjgsIDEzOTk3MiwgMTM5OTc3LCAxMzk5ODIsIDEzOTk4NywgMTM5OTkyLCAxMzk5OTcsIAorICAgIDE0MDAwMSwgMTQwMDA2LCAxNDAwMTEsIDE0MDAxNiwgMTQwMDIwLCAxNDAwMjUsIDE0MDAzMCwgMTQwMDM1LCAxNDAwMzksIAorICAgIDE0MDA0NCwgMTQwMDQ5LCAxNDAwNTMsIDE0MDA1OCwgMTQwMDYzLCAxNDAwNjcsIDE0MDA3MiwgMTQwMDc3LCAxNDAwODEsIAorICAgIDE0MDA4NiwgMTQwMDkxLCAxNDAwOTUsIDE0MDEwMCwgMTQwMTA1LCAxNDAxMTAsIDE0MDExNSwgMTQwMTIwLCAxNDAxMjQsIAorICAgIDE0MDEyOSwgMTQwMTM0LCAxNDAxMzksIDE0MDE0MywgMTQwMTQ4LCAxNDAxNTMsIDE0MDE1OCwgMTQwMTYyLCAxNDAxNjcsIAorICAgIDE0MDE3MiwgMTQwMTc2LCAxNDAxODEsIDE0MDE4NiwgMTQwMTkwLCAxNDAxOTUsIDE0MDIwMCwgMTQwMjA0LCAxNDAyMDksIAorICAgIDE0MDIxNCwgMTQwMjE4LCAxNDAyMjMsIDE0MDIyOCwgMTQwMjMzLCAxNDAyMzgsIDE0MDI0MywgMTQwMjQ3LCAxNDAyNTIsIAorICAgIDE0MDI1NywgMTQwMjYyLCAxNDAyNjYsIDE0MDI3MSwgMCwgMTQwMjc2LCAxNDAyODAsIDE0MDI4NSwgMTQwMjkwLCAKKyAgICAxNDAyOTQsIDE0MDI5OSwgMTQwMzA0LCAxNDAzMDgsIDE0MDMxMywgMTQwMzE4LCAxNDAzMjIsIDE0MDMyNywgMTQwMzMyLCAKKyAgICAxNDAzMzYsIDE0MDM0MSwgMTQwMzQ2LCAxNDAzNTEsIDE0MDM1NiwgMTQwMzYxLCAxNDAzNjYsIDE0MDM3MiwgMTQwMzc4LCAKKyAgICAxNDAzODQsIDE0MDM4OSwgMTQwMzk1LCAxNDA0MDEsIDE0MDQwNywgMTQwNDEyLCAxNDA0MTgsIDE0MDQyNCwgMTQwNDI5LCAKKyAgICAxNDA0MzUsIDE0MDQ0MSwgMTQwNDQ2LCAxNDA0NTIsIDE0MDQ1OCwgMTQwNDYzLCAxNDA0NjksIDE0MDQ3NSwgMTQwNDgwLCAKKyAgICAxNDA0ODYsIDE0MDQ5MiwgMTQwNDk4LCAxNDA1MDQsIDE0MDUxMCwgMTQwNTE1LCAxNDA1MjEsIDE0MDUyNywgMTQwNTMzLCAKKyAgICAxNDA1MzgsIDE0MDU0NCwgMTQwNTUwLCAxNDA1NTYsIDE0MDU2MSwgMTQwNTY3LCAxNDA1NzMsIDE0MDU3OCwgMTQwNTg0LCAKKyAgICAxNDA1OTAsIDE0MDU5NSwgMTQwNjAxLCAxNDA2MDcsIDE0MDYxMiwgMTQwNjE4LCAxNDA2MjQsIDE0MDYyOSwgMTQwNjM1LCAKKyAgICAxNDA2NDEsIDE0MDY0NywgMTQwNjUzLCAxNDA2NTksIDAsIDE0MDY2MywgMTQwNjY4LCAwLCAwLCAxNDA2NzMsIDAsIDAsIAorICAgIDE0MDY3OCwgMTQwNjgzLCAwLCAwLCAxNDA2ODgsIDE0MDY5MywgMTQwNjk3LCAxNDA3MDIsIDAsIDE0MDcwNywgMTQwNzEyLCAKKyAgICAxNDA3MTcsIDE0MDcyMSwgMTQwNzI2LCAxNDA3MzEsIDE0MDczNiwgMTQwNzQxLCAxNDA3NDYsIDE0MDc1MCwgMTQwNzU1LCAKKyAgICAxNDA3NjAsIDAsIDE0MDc2NSwgMCwgMTQwNzcwLCAxNDA3NzUsIDE0MDc3OSwgMTQwNzg0LCAxNDA3ODksIDE0MDc5MywgCisgICAgMTQwNzk4LCAwLCAxNDA4MDMsIDE0MDgwOCwgMTQwODEzLCAxNDA4MTcsIDE0MDgyMiwgMTQwODI3LCAxNDA4MzEsIAorICAgIDE0MDgzNiwgMTQwODQxLCAxNDA4NDYsIDE0MDg1MSwgMTQwODU2LCAxNDA4NjEsIDE0MDg2NywgMTQwODczLCAxNDA4NzksIAorICAgIDE0MDg4NCwgMTQwODkwLCAxNDA4OTYsIDE0MDkwMiwgMTQwOTA3LCAxNDA5MTMsIDE0MDkxOSwgMTQwOTI0LCAxNDA5MzAsIAorICAgIDE0MDkzNiwgMTQwOTQxLCAxNDA5NDcsIDE0MDk1MywgMTQwOTU4LCAxNDA5NjQsIDE0MDk3MCwgMTQwOTc1LCAxNDA5ODEsIAorICAgIDE0MDk4NywgMTQwOTkzLCAxNDA5OTksIDE0MTAwNSwgMTQxMDEwLCAxNDEwMTYsIDE0MTAyMiwgMTQxMDI4LCAxNDEwMzMsIAorICAgIDE0MTAzOSwgMTQxMDQ1LCAxNDEwNTEsIDE0MTA1NiwgMTQxMDYyLCAxNDEwNjgsIDE0MTA3MywgMTQxMDc5LCAxNDEwODUsIAorICAgIDE0MTA5MCwgMTQxMDk2LCAxNDExMDIsIDE0MTEwNywgMTQxMTEzLCAxNDExMTksIDE0MTEyNCwgMTQxMTMwLCAxNDExMzYsIAorICAgIDE0MTE0MiwgMTQxMTQ4LCAxNDExNTQsIDE0MTE1OCwgMCwgMTQxMTYzLCAxNDExNjgsIDE0MTE3MiwgMTQxMTc3LCAwLCAwLCAKKyAgICAxNDExODIsIDE0MTE4NywgMTQxMTkyLCAxNDExOTYsIDE0MTIwMSwgMTQxMjA2LCAxNDEyMTAsIDE0MTIxNSwgMCwgCisgICAgMTQxMjIwLCAxNDEyMjUsIDE0MTIzMCwgMTQxMjM0LCAxNDEyMzksIDE0MTI0NCwgMTQxMjQ5LCAwLCAxNDEyNTQsIAorICAgIDE0MTI1OCwgMTQxMjYzLCAxNDEyNjgsIDE0MTI3MywgMTQxMjc3LCAxNDEyODIsIDE0MTI4NywgMTQxMjkyLCAxNDEyOTYsIAorICAgIDE0MTMwMSwgMTQxMzA2LCAxNDEzMTAsIDE0MTMxNSwgMTQxMzIwLCAxNDEzMjQsIDE0MTMyOSwgMTQxMzM0LCAxNDEzMzgsIAorICAgIDE0MTM0MywgMTQxMzQ4LCAxNDEzNTIsIDE0MTM1NywgMTQxMzYyLCAxNDEzNjcsIDE0MTM3MiwgMTQxMzc3LCAxNDEzODEsIAorICAgIDAsIDE0MTM4NiwgMTQxMzkxLCAxNDEzOTUsIDE0MTQwMCwgMCwgMTQxNDA1LCAxNDE0MDksIDE0MTQxNCwgMTQxNDE5LCAKKyAgICAxNDE0MjMsIDAsIDE0MTQyOCwgMCwgMCwgMCwgMTQxNDMyLCAxNDE0MzcsIDE0MTQ0MiwgMTQxNDQ2LCAxNDE0NTEsIAorICAgIDE0MTQ1NiwgMTQxNDYxLCAwLCAxNDE0NjYsIDE0MTQ3MCwgMTQxNDc1LCAxNDE0ODAsIDE0MTQ4NSwgMTQxNDg5LCAKKyAgICAxNDE0OTQsIDE0MTQ5OSwgMTQxNTA0LCAxNDE1MDgsIDE0MTUxMywgMTQxNTE4LCAxNDE1MjIsIDE0MTUyNywgMTQxNTMyLCAKKyAgICAxNDE1MzYsIDE0MTU0MSwgMTQxNTQ2LCAxNDE1NTAsIDE0MTU1NSwgMTQxNTYwLCAxNDE1NjQsIDE0MTU2OSwgMTQxNTc0LCAKKyAgICAxNDE1NzksIDE0MTU4NCwgMTQxNTg5LCAxNDE1OTQsIDE0MTYwMCwgMTQxNjA2LCAxNDE2MTIsIDE0MTYxNywgMTQxNjIzLCAKKyAgICAxNDE2MjksIDE0MTYzNSwgMTQxNjQwLCAxNDE2NDYsIDE0MTY1MiwgMTQxNjU3LCAxNDE2NjMsIDE0MTY2OSwgMTQxNjc0LCAKKyAgICAxNDE2ODAsIDE0MTY4NiwgMTQxNjkxLCAxNDE2OTcsIDE0MTcwMywgMTQxNzA4LCAxNDE3MTQsIDE0MTcyMCwgMTQxNzI2LCAKKyAgICAxNDE3MzIsIDE0MTczOCwgMTQxNzQzLCAxNDE3NDksIDE0MTc1NSwgMTQxNzYxLCAxNDE3NjYsIDE0MTc3MiwgMTQxNzc4LCAKKyAgICAxNDE3ODQsIDE0MTc4OSwgMTQxNzk1LCAxNDE4MDEsIDE0MTgwNiwgMTQxODEyLCAxNDE4MTgsIDE0MTgyMywgMTQxODI5LCAKKyAgICAxNDE4MzUsIDE0MTg0MCwgMTQxODQ2LCAxNDE4NTIsIDE0MTg1NywgMTQxODYzLCAxNDE4NjksIDE0MTg3NSwgMTQxODgxLCAKKyAgICAxNDE4ODcsIDE0MTg5MSwgMTQxODk2LCAxNDE5MDEsIDE0MTkwNiwgMTQxOTEwLCAxNDE5MTUsIDE0MTkyMCwgMTQxOTI1LCAKKyAgICAxNDE5MjksIDE0MTkzNCwgMTQxOTM5LCAxNDE5NDMsIDE0MTk0OCwgMTQxOTUzLCAxNDE5NTcsIDE0MTk2MiwgMTQxOTY3LCAKKyAgICAxNDE5NzEsIDE0MTk3NiwgMTQxOTgxLCAxNDE5ODUsIDE0MTk5MCwgMTQxOTk1LCAxNDIwMDAsIDE0MjAwNSwgMTQyMDEwLCAKKyAgICAxNDIwMTQsIDE0MjAxOSwgMTQyMDI0LCAxNDIwMjksIDE0MjAzMywgMTQyMDM4LCAxNDIwNDMsIDE0MjA0OCwgMTQyMDUyLCAKKyAgICAxNDIwNTcsIDE0MjA2MiwgMTQyMDY2LCAxNDIwNzEsIDE0MjA3NiwgMTQyMDgwLCAxNDIwODUsIDE0MjA5MCwgMTQyMDk0LCAKKyAgICAxNDIwOTksIDE0MjEwNCwgMTQyMTA4LCAxNDIxMTMsIDE0MjExOCwgMTQyMTIzLCAxNDIxMjgsIDE0MjEzMywgMTQyMTM4LCAKKyAgICAxNDIxNDQsIDE0MjE1MCwgMTQyMTU2LCAxNDIxNjEsIDE0MjE2NywgMTQyMTczLCAxNDIxNzksIDE0MjE4NCwgMTQyMTkwLCAKKyAgICAxNDIxOTYsIDE0MjIwMSwgMTQyMjA3LCAxNDIyMTMsIDE0MjIxOCwgMTQyMjI0LCAxNDIyMzAsIDE0MjIzNSwgMTQyMjQxLCAKKyAgICAxNDIyNDcsIDE0MjI1MiwgMTQyMjU4LCAxNDIyNjQsIDE0MjI3MCwgMTQyMjc2LCAxNDIyODIsIDE0MjI4NywgMTQyMjkzLCAKKyAgICAxNDIyOTksIDE0MjMwNSwgMTQyMzEwLCAxNDIzMTYsIDE0MjMyMiwgMTQyMzI4LCAxNDIzMzMsIDE0MjMzOSwgMTQyMzQ1LCAKKyAgICAxNDIzNTAsIDE0MjM1NiwgMTQyMzYyLCAxNDIzNjcsIDE0MjM3MywgMTQyMzc5LCAxNDIzODQsIDE0MjM5MCwgMTQyMzk2LCAKKyAgICAxNDI0MDEsIDE0MjQwNywgMTQyNDEzLCAxNDI0MTksIDE0MjQyNSwgMTQyNDMxLCAxNDI0MzYsIDE0MjQ0MiwgMTQyNDQ4LCAKKyAgICAxNDI0NTQsIDE0MjQ1OSwgMTQyNDY1LCAxNDI0NzEsIDE0MjQ3NywgMTQyNDgyLCAxNDI0ODgsIDE0MjQ5NCwgMTQyNDk5LCAKKyAgICAxNDI1MDUsIDE0MjUxMSwgMTQyNTE2LCAxNDI1MjIsIDE0MjUyOCwgMTQyNTMzLCAxNDI1MzksIDE0MjU0NSwgMTQyNTUwLCAKKyAgICAxNDI1NTYsIDE0MjU2MiwgMTQyNTY4LCAxNDI1NzQsIDE0MjU4MCwgMTQyNTg1LCAxNDI1OTEsIDE0MjU5NywgMTQyNjAzLCAKKyAgICAxNDI2MDgsIDE0MjYxNCwgMTQyNjIwLCAxNDI2MjYsIDE0MjYzMSwgMTQyNjM3LCAxNDI2NDMsIDE0MjY0OCwgMTQyNjU0LCAKKyAgICAxNDI2NjAsIDE0MjY2NSwgMTQyNjcxLCAxNDI2NzcsIDE0MjY4MiwgMTQyNjg4LCAxNDI2OTQsIDE0MjY5OSwgMTQyNzA1LCAKKyAgICAxNDI3MTEsIDE0MjcxNywgMTQyNzIzLCAxNDI3MjksIDE0MjczNSwgMTQyNzQyLCAxNDI3NDksIDE0Mjc1NiwgMTQyNzYyLCAKKyAgICAxNDI3NjksIDE0Mjc3NiwgMTQyNzgzLCAxNDI3ODksIDE0Mjc5NiwgMTQyODAzLCAxNDI4MDksIDE0MjgxNiwgMTQyODIzLCAKKyAgICAxNDI4MjksIDE0MjgzNiwgMTQyODQzLCAxNDI4NDksIDE0Mjg1NiwgMTQyODYzLCAxNDI4NjksIDE0Mjg3NiwgMTQyODgzLCAKKyAgICAxNDI4OTAsIDE0Mjg5NywgMTQyOTA0LCAxNDI5MTAsIDE0MjkxNywgMTQyOTI0LCAxNDI5MzEsIDE0MjkzNywgMTQyOTQ0LCAKKyAgICAxNDI5NTEsIDE0Mjk1OCwgMTQyOTY0LCAxNDI5NzEsIDE0Mjk3OCwgMTQyOTg0LCAxNDI5OTEsIDE0Mjk5OCwgMTQzMDA0LCAKKyAgICAxNDMwMTEsIDE0MzAxOCwgMTQzMDI0LCAxNDMwMzEsIDE0MzAzOCwgMTQzMDQ0LCAxNDMwNTEsIDE0MzA1OCwgMTQzMDY1LCAKKyAgICAxNDMwNzIsIDE0MzA3OSwgMTQzMDg0LCAxNDMwOTAsIDE0MzA5NiwgMTQzMTAyLCAxNDMxMDcsIDE0MzExMywgMTQzMTE5LCAKKyAgICAxNDMxMjUsIDE0MzEzMCwgMTQzMTM2LCAxNDMxNDIsIDE0MzE0NywgMTQzMTUzLCAxNDMxNTksIDE0MzE2NCwgMTQzMTcwLCAKKyAgICAxNDMxNzYsIDE0MzE4MSwgMTQzMTg3LCAxNDMxOTMsIDE0MzE5OCwgMTQzMjA0LCAxNDMyMTAsIDE0MzIxNiwgMTQzMjIyLCAKKyAgICAxNDMyMjgsIDE0MzIzMywgMTQzMjM5LCAxNDMyNDUsIDE0MzI1MSwgMTQzMjU2LCAxNDMyNjIsIDE0MzI2OCwgMTQzMjc0LCAKKyAgICAxNDMyNzksIDE0MzI4NSwgMTQzMjkxLCAxNDMyOTYsIDE0MzMwMiwgMTQzMzA4LCAxNDMzMTMsIDE0MzMxOSwgMTQzMzI1LCAKKyAgICAxNDMzMzAsIDE0MzMzNiwgMTQzMzQyLCAxNDMzNDcsIDE0MzM1MywgMTQzMzU5LCAxNDMzNjUsIDE0MzM3MSwgMTQzMzc3LCAKKyAgICAxNDMzODMsIDAsIDAsIDE0MzM5MCwgMTQzMzk1LCAxNDM0MDAsIDE0MzQwNSwgMTQzNDEwLCAxNDM0MTUsIDE0MzQyMCwgCisgICAgMTQzNDI1LCAxNDM0MzAsIDE0MzQzNSwgMTQzNDQwLCAxNDM0NDUsIDE0MzQ1MCwgMTQzNDU1LCAxNDM0NjAsIDE0MzQ2NSwgCisgICAgMTQzNDcwLCAxNDM0NzUsIDE0MzQ4MSwgMTQzNDg2LCAxNDM0OTEsIDE0MzQ5NiwgMTQzNTAxLCAxNDM1MDYsIDE0MzUxMSwgCisgICAgMTQzNTE2LCAxNDM1MjAsIDE0MzUyNSwgMTQzNTMwLCAxNDM1MzUsIDE0MzU0MCwgMTQzNTQ1LCAxNDM1NTAsIDE0MzU1NSwgCisgICAgMTQzNTYwLCAxNDM1NjUsIDE0MzU3MCwgMTQzNTc1LCAxNDM1ODAsIDE0MzU4NSwgMTQzNTkwLCAxNDM1OTUsIDE0MzYwMCwgCisgICAgMTQzNjA1LCAxNDM2MTEsIDE0MzYxNiwgMTQzNjIxLCAxNDM2MjYsIDE0MzYzMSwgMTQzNjM2LCAxNDM2NDEsIDE0MzY0NiwgCisgICAgMTQzNjUyLCAxNDM2NTcsIDE0MzY2MiwgMTQzNjY3LCAxNDM2NzIsIDE0MzY3NywgMTQzNjgyLCAxNDM2ODcsIDE0MzY5MiwgCisgICAgMTQzNjk3LCAxNDM3MDIsIDE0MzcwNywgMTQzNzEyLCAxNDM3MTcsIDE0MzcyMiwgMTQzNzI3LCAxNDM3MzIsIDE0MzczNywgCisgICAgMTQzNzQyLCAxNDM3NDcsIDE0Mzc1MiwgMTQzNzU3LCAxNDM3NjIsIDE0Mzc2NywgMTQzNzczLCAxNDM3NzgsIDE0Mzc4MywgCisgICAgMTQzNzg4LCAxNDM3OTMsIDE0Mzc5OCwgMTQzODAzLCAxNDM4MDgsIDE0MzgxMiwgMTQzODE3LCAxNDM4MjIsIDE0MzgyNywgCisgICAgMTQzODMyLCAxNDM4MzcsIDE0Mzg0MiwgMTQzODQ3LCAxNDM4NTIsIDE0Mzg1NywgMTQzODYyLCAxNDM4NjcsIDE0Mzg3MiwgCisgICAgMTQzODc3LCAxNDM4ODIsIDE0Mzg4NywgMTQzODkyLCAxNDM4OTcsIDE0MzkwMywgMTQzOTA4LCAxNDM5MTMsIDE0MzkxOCwgCisgICAgMTQzOTIzLCAxNDM5MjgsIDE0MzkzMywgMTQzOTM4LCAxNDM5NDQsIDE0Mzk0OSwgMTQzOTU0LCAxNDM5NTksIDE0Mzk2NCwgCisgICAgMTQzOTY5LCAxNDM5NzQsIDE0Mzk4MCwgMTQzOTg2LCAxNDM5OTIsIDE0Mzk5OCwgMTQ0MDA0LCAxNDQwMTAsIDE0NDAxNiwgCisgICAgMTQ0MDIyLCAxNDQwMjgsIDE0NDAzNCwgMTQ0MDQwLCAxNDQwNDYsIDE0NDA1MiwgMTQ0MDU4LCAxNDQwNjQsIDE0NDA3MCwgCisgICAgMTQ0MDc2LCAxNDQwODMsIDE0NDA4OSwgMTQ0MDk1LCAxNDQxMDEsIDE0NDEwNywgMTQ0MTEzLCAxNDQxMTksIDE0NDEyNSwgCisgICAgMTQ0MTMwLCAxNDQxMzYsIDE0NDE0MiwgMTQ0MTQ4LCAxNDQxNTQsIDE0NDE2MCwgMTQ0MTY2LCAxNDQxNzIsIDE0NDE3OCwgCisgICAgMTQ0MTg0LCAxNDQxOTAsIDE0NDE5NiwgMTQ0MjAyLCAxNDQyMDgsIDE0NDIxNCwgMTQ0MjIwLCAxNDQyMjYsIDE0NDIzMiwgCisgICAgMTQ0MjM5LCAxNDQyNDUsIDE0NDI1MSwgMTQ0MjU3LCAxNDQyNjMsIDE0NDI2OSwgMTQ0Mjc1LCAxNDQyODEsIDE0NDI4OCwgCisgICAgMTQ0Mjk0LCAxNDQzMDAsIDE0NDMwNiwgMTQ0MzEyLCAxNDQzMTgsIDE0NDMyNCwgMTQ0MzMwLCAxNDQzMzYsIDE0NDM0MiwgCisgICAgMTQ0MzQ4LCAxNDQzNTQsIDE0NDM2MCwgMTQ0MzY2LCAxNDQzNzIsIDE0NDM3OCwgMTQ0Mzg0LCAxNDQzOTAsIDE0NDM5NiwgCisgICAgMTQ0NDAyLCAxNDQ0MDgsIDE0NDQxNCwgMTQ0NDIwLCAxNDQ0MjYsIDE0NDQzMywgMTQ0NDM5LCAxNDQ0NDUsIDE0NDQ1MSwgCisgICAgMTQ0NDU3LCAxNDQ0NjMsIDE0NDQ2OSwgMTQ0NDc1LCAxNDQ0ODAsIDE0NDQ4NiwgMTQ0NDkyLCAxNDQ0OTgsIDE0NDUwNCwgCisgICAgMTQ0NTEwLCAxNDQ1MTYsIDE0NDUyMiwgMTQ0NTI4LCAxNDQ1MzQsIDE0NDU0MCwgMTQ0NTQ2LCAxNDQ1NTIsIDE0NDU1OCwgCisgICAgMTQ0NTY0LCAxNDQ1NzAsIDE0NDU3NiwgMTQ0NTgyLCAxNDQ1ODksIDE0NDU5NSwgMTQ0NjAxLCAxNDQ2MDcsIDE0NDYxMywgCisgICAgMTQ0NjE5LCAxNDQ2MjUsIDE0NDYzMSwgMTQ0NjM4LCAxNDQ2NDQsIDE0NDY1MCwgMTQ0NjU2LCAxNDQ2NjIsIDE0NDY2OCwgCisgICAgMTQ0Njc0LCAxNDQ2ODEsIDE0NDY4OCwgMTQ0Njk1LCAxNDQ3MDIsIDE0NDcwOSwgMTQ0NzE2LCAxNDQ3MjMsIDE0NDczMCwgCisgICAgMTQ0NzM3LCAxNDQ3NDQsIDE0NDc1MSwgMTQ0NzU4LCAxNDQ3NjUsIDE0NDc3MiwgMTQ0Nzc5LCAxNDQ3ODYsIDE0NDc5MywgCisgICAgMTQ0ODAxLCAxNDQ4MDgsIDE0NDgxNSwgMTQ0ODIyLCAxNDQ4MjksIDE0NDgzNiwgMTQ0ODQzLCAxNDQ4NTAsIDE0NDg1NiwgCisgICAgMTQ0ODYzLCAxNDQ4NzAsIDE0NDg3NywgMTQ0ODg0LCAxNDQ4OTEsIDE0NDg5OCwgMTQ0OTA1LCAxNDQ5MTIsIDE0NDkxOSwgCisgICAgMTQ0OTI2LCAxNDQ5MzMsIDE0NDk0MCwgMTQ0OTQ3LCAxNDQ5NTQsIDE0NDk2MSwgMTQ0OTY4LCAxNDQ5NzUsIDE0NDk4MywgCisgICAgMTQ0OTkwLCAxNDQ5OTcsIDE0NTAwNCwgMTQ1MDExLCAxNDUwMTgsIDE0NTAyNSwgMTQ1MDMyLCAxNDUwNDAsIDE0NTA0NywgCisgICAgMTQ1MDU0LCAxNDUwNjEsIDE0NTA2OCwgMTQ1MDc1LCAxNDUwODIsIDE0NTA4NywgMCwgMCwgMTQ1MDkyLCAxNDUwOTcsIAorICAgIDE0NTEwMSwgMTQ1MTA1LCAxNDUxMDksIDE0NTExMywgMTQ1MTE3LCAxNDUxMjEsIDE0NTEyNiwgMTQ1MTMwLCAxNDUxMzUsIAorICAgIDE0NTE0MCwgMTQ1MTQ0LCAxNDUxNDgsIDE0NTE1MiwgMTQ1MTU2LCAxNDUxNjAsIDE0NTE2NCwgMTQ1MTY5LCAxNDUxNzMsIAorICAgIDE0NTE3OCwgMTQ1MTgzLCAxNDUxODcsIDE0NTE5MSwgMTQ1MTk1LCAxNDUxOTksIDE0NTIwMywgMTQ1MjA3LCAxNDUyMTIsIAorICAgIDE0NTIxNiwgMTQ1MjIxLCAxNDUyMjcsIDE0NTIzMiwgMTQ1MjM3LCAxNDUyNDIsIDE0NTI0NywgMTQ1MjUyLCAxNDUyNTcsIAorICAgIDE0NTI2MywgMTQ1MjY4LCAxNDUyNzQsIDE0NTI4MCwgMTQ1Mjg1LCAxNDUyOTAsIDE0NTI5NSwgMTQ1MzAwLCAxNDUzMDUsIAorICAgIDE0NTMxMCwgMTQ1MzE2LCAxNDUzMjEsIDE0NTMyNywgMTQ1MzMxLCAxNDUzMzYsIDE0NTM0MSwgMTQ1MzQ2LCAxNDUzNTEsIAorICAgIDE0NTM1NiwgMTQ1MzYxLCAxNDUzNjcsIDE0NTM3NSwgMTQ1MzgyLCAxNDUzODcsIDE0NTM5MiwgMTQ1Mzk5LCAxNDU0MDUsIAorICAgIDE0NTQxMCwgMTQ1NDE2LCAxNDU0MjIsIDE0NTQzMCwgMTQ1NDM2LCAxNDU0NDMsIDE0NTQ1MSwgMTQ1NDU3LCAxNDU0NjYsIAorICAgIDE0NTQ3NSwgMTQ1NDgzLCAxNDU0OTEsIDE0NTQ5NywgMTQ1NTA0LCAxNDU1MTIsIDE0NTUyMCwgMTQ1NTI2LCAxNDU1MzMsIAorICAgIDE0NTU0MiwgMTQ1NTUxLCAxNDU1NTgsIDE0NTU2OSwgMTQ1NTc5LCAxNDU1ODksIDE0NTU5OSwgMTQ1NjA5LCAxNDU2MTYsIAorICAgIDE0NTYyMywgMTQ1NjMwLCAxNDU2MzcsIDE0NTY0NiwgMTQ1NjU1LCAxNDU2NjYsIDE0NTY3NywgMTQ1Njg2LCAxNDU2OTUsIAorICAgIDE0NTcwNiwgMTQ1NzE1LCAxNDU3MjQsIDE0NTczNSwgMTQ1NzQ0LCAxNDU3NTMsIDE0NTc2MSwgMTQ1NzY5LCAxNDU3ODAsIAorICAgIDE0NTc5MSwgMTQ1Nzk5LCAxNDU4MDgsIDE0NTgxNywgMTQ1ODI0LCAxNDU4MzUsIDE0NTg0NiwgMTQ1ODU1LCAxNDU4NjQsIAorICAgIDE0NTg3MSwgMTQ1ODgwLCAxNDU4ODksIDE0NTg5OCwgMTQ1OTA5LCAxNDU5MTgsIDE0NTkyOCwgMTQ1OTM3LCAxNDU5NDYsIAorICAgIDE0NTk1NywgMTQ1OTcwLCAxNDU5ODUsIDE0NTk5NiwgMTQ2MDA5LCAxNDYwMjEsIDE0NjAzMCwgMTQ2MDQxLCAxNDYwNTIsIAorICAgIDE0NjA2MSwgMTQ2MDcyLCAxNDYwODYsIDE0NjEwMSwgMTQ2MTA0LCAxNDYxMTMsIDE0NjExOCwgMTQ2MTI0LCAxNDYxMzIsIAorICAgIDE0NjEzOCwgMTQ2MTQ0LCAxNDYxNTMsIDE0NjE2MCwgMTQ2MTcwLCAxNDYxODIsIDE0NjE4OSwgMTQ2MTkyLCAxNDYxOTgsIAorICAgIDE0NjIwNSwgMTQ2MjExLCAxNDYyMTYsIDE0NjIxOSwgMTQ2MjI0LCAxNDYyMjcsIDE0NjIzNCwgMTQ2MjQwLCAxNDYyNDgsIAorICAgIDE0NjI1NSwgMTQ2MjYyLCAxNDYyNjgsIDE0NjI3MywgMTQ2Mjc2LCAxNDYyNzksIDE0NjI4MiwgMTQ2Mjg4LCAxNDYyOTUsIAorICAgIDE0NjMwMSwgMTQ2MzA2LCAxNDYzMTMsIDE0NjMxNiwgMTQ2MzIxLCAxNDYzMjgsIDE0NjMzNCwgMTQ2MzQyLCAxNDYzNDksIAorICAgIDE0NjM1OSwgMTQ2MzY4LCAxNDYzNzEsIDE0NjM3NywgMTQ2Mzg0LCAxNDYzOTEsIDE0NjM5OCwgMTQ2NDAzLCAxNDY0MTEsIAorICAgIDE0NjQxOSwgMTQ2NDI4LCAxNDY0MzQsIDE0NjQ0MywgMTQ2NDUyLCAxNDY0NjEsIDE0NjQ2NywgMTQ2NDc2LCAxNDY0ODMsIAorICAgIDE0NjQ5MCwgMTQ2NDk3LCAxNDY1MDUsIDE0NjUxMSwgMTQ2NTE5LCAxNDY1MjUsIDE0NjUzMiwgMTQ2NTM5LCAxNDY1NDcsIAorICAgIDE0NjU1OCwgMTQ2NTY4LCAxNDY1NzQsIDE0NjU4MSwgMTQ2NTg4LCAxNDY1OTUsIDE0NjYwMSwgMTQ2NjA4LCAxNDY2MTUsIAorICAgIDE0NjYyMCwgMTQ2NjI3LCAxNDY2MzUsIDE0NjY0NCwgMTQ2NjUwLCAxNDY2NjIsIDE0NjY3MywgMTQ2Njc5LCAxNDY2ODcsIAorICAgIDE0NjY5MywgMTQ2NzAwLCAxNDY3MDcsIDE0NjcxNCwgMTQ2NzIwLCAxNDY3MjcsIDE0NjczNiwgMTQ2NzQyLCAxNDY3NDgsIAorICAgIDE0Njc1NSwgMTQ2NzYyLCAxNDY3NzAsIDE0Njc4MCwgMTQ2NzkwLCAxNDY4MDAsIDE0NjgxMCwgMTQ2ODE4LCAxNDY4MjYsIAorICAgIDE0NjgzNiwgMTQ2ODQ0LCAxNDY4NDksIDE0Njg1NCwgMTQ2ODU5LCAxNDY4NjUsIDE0Njg3MiwgMTQ2ODc5LCAxNDY4ODUsIAorICAgIDE0Njg5MSwgMTQ2ODk2LCAxNDY5MDMsIDE0NjkxMSwgMTQ2OTIxLCAxNDY5MjksIDE0NjkzNywgMTQ2OTQ3LCAxNDY5NTcsIAorICAgIDE0Njk2NSwgMTQ2OTc1LCAxNDY5ODUsIDE0Njk5NywgMTQ3MDA5LCAxNDcwMjEsIDE0NzAzMSwgMTQ3MDM3LCAxNDcwNDMsIAorICAgIDE0NzA1MCwgMTQ3MDU5LCAxNDcwNjgsIDE0NzA3NywgMTQ3MDg2LCAxNDcwOTYsIDE0NzEwNSwgMTQ3MTE0LCAxNDcxMjMsIAorICAgIDE0NzEyOCwgMTQ3MTM0LCAxNDcxNDMsIDE0NzE1MywgMTQ3MTYyLCAxNDcxNjgsIDE0NzE3NCwgMTQ3MTgxLCAxNDcxODgsIAorICAgIDE0NzE5NSwgMTQ3MjAxLCAxNDcyMDgsIDE0NzIxNSwgMTQ3MjIyLCAxNDcyMjgsIDE0NzIzMiwgMTQ3MjM3LCAxNDcyNDQsIAorICAgIDE0NzI1MSwgMTQ3MjU4LCAxNDcyNjMsIDE0NzI3MSwgMTQ3Mjc5LCAxNDcyODgsIDE0NzI5NiwgMTQ3MzAzLCAxNDczMTEsIAorICAgIDE0NzMyMCwgMTQ3MzMwLCAxNDczMzMsIDE0NzMzNywgMTQ3MzQyLCAxNDczNDcsIDE0NzM1MiwgMTQ3MzU3LCAxNDczNjIsIAorICAgIDE0NzM2NywgMTQ3MzcyLCAxNDczNzcsIDE0NzM4MiwgMTQ3Mzg3LCAxNDczOTIsIDE0NzM5NywgMTQ3NDAyLCAxNDc0MDcsIAorICAgIDE0NzQxMiwgMTQ3NDE3LCAxNDc0MjIsIDE0NzQyOSwgMTQ3NDM1LCAxNDc0NDIsIDE0NzQ0OCwgMTQ3NDUzLCAxNDc0NjAsIAorICAgIDE0NzQ2NiwgMTQ3NDczLCAxNDc0NzksIDE0NzQ4NCwgMTQ3NDkxLCAxNDc0OTgsIDE0NzUwNSwgMTQ3NTExLCAxNDc1MTcsIAorICAgIDE0NzUyNiwgMTQ3NTM1LCAxNDc1NDYsIDE0NzU1MywgMTQ3NTYwLCAxNDc1NjksIDE0NzU3OCwgMTQ3NTg3LCAxNDc1OTYsIAorICAgIDE0NzYwNSwgMTQ3NjExLCAxNDc2MTksIDE0NzYyNSwgMTQ3NjM1LCAxNDc2NDAsIDE0NzY0OSwgMTQ3NjU4LCAxNDc2NjUsIAorICAgIDE0NzY3NiwgMTQ3NjgzLCAxNDc2OTAsIDE0NzY5NywgMTQ3NzA0LCAxNDc3MTEsIDE0NzcxOCwgMTQ3NzI1LCAxNDc3MzIsIAorICAgIDE0NzczOSwgMTQ3NzQ2LCAxNDc3NTIsIDE0Nzc1OCwgMTQ3NzY0LCAxNDc3NzEsIDE0Nzc3OCwgMTQ3Nzg1LCAxNDc3OTIsIAorICAgIDE0Nzc5OSwgMTQ3ODA2LCAxNDc4MTMsIDE0NzgyMCwgMTQ3ODI3LCAxNDc4MzQsIDE0Nzg0MSwgMTQ3ODQ4LCAxNDc4NTMsIAorICAgIDE0Nzg2MiwgMTQ3ODcxLCAxNDc4ODAsIDE0Nzg4NywgMTQ3ODk0LCAxNDc5MDEsIDE0NzkwOCwgMTQ3OTE1LCAxNDc5MjIsIAorICAgIDE0NzkyOSwgMTQ3OTM2LCAxNDc5NDUsIDE0Nzk1NCwgMTQ3OTYzLCAxNDc5NzIsIDE0Nzk4MSwgMTQ3OTkwLCAxNDc5OTksIAorICAgIDE0ODAwOCwgMTQ4MDE3LCAxNDgwMjYsIDE0ODAzNSwgMTQ4MDQ0LCAxNDgwNTMsIDE0ODA1OSwgMTQ4MDY3LCAxNDgwNzMsIAorICAgIDE0ODA4MywgMTQ4MDg4LCAxNDgwOTcsIDE0ODEwNiwgMTQ4MTE1LCAxNDgxMjYsIDE0ODEzMSwgMTQ4MTM4LCAxNDgxNDUsIAorICAgIDE0ODE1MiwgMTQ4MTU3LCAxNDgxNjMsIDE0ODE2OSwgMTQ4MTc1LCAxNDgxODIsIDE0ODE4OSwgMTQ4MTk2LCAxNDgyMDMsIAorICAgIDE0ODIxMCwgMTQ4MjE3LCAxNDgyMjQsIDE0ODIzMSwgMTQ4MjM4LCAxNDgyNDUsIDE0ODI1MiwgMTQ4MjU5LCAxNDgyNjQsIAorICAgIDE0ODI3MywgMTQ4MjgyLCAxNDgyOTEsIDE0ODMwMCwgMTQ4MzA5LCAxNDgzMTgsIDE0ODMyNywgMTQ4MzM2LCAxNDgzNDcsIAorICAgIDE0ODM1OCwgMTQ4MzY1LCAxNDgzNzIsIDE0ODM3OSwgMTQ4Mzg2LCAxNDgzOTMsIDE0ODQwMCwgMTQ4NDA4LCAxNDg0MTgsIAorICAgIDE0ODQyOCwgMTQ4NDM4LCAxNDg0NDksIDE0ODQ2MCwgMTQ4NDcxLCAxNDg0ODAsIDE0ODQ4OSwgMTQ4NDk4LCAxNDg1MDMsIAorICAgIDE0ODUwOCwgMTQ4NTEzLCAxNDg1MTgsIDE0ODUyOSwgMTQ4NTQwLCAxNDg1NTEsIDE0ODU2MiwgMTQ4NTczLCAxNDg1ODMsIAorICAgIDE0ODU5NCwgMTQ4NjAzLCAxNDg2MTIsIDE0ODYyMSwgMTQ4NjMwLCAxNDg2MzksIDE0ODY0NywgMTQ4NjU2LCAxNDg2NjcsIAorICAgIDE0ODY3OCwgMTQ4Njg5LCAxNDg3MDAsIDE0ODcxMSwgMTQ4NzIzLCAxNDg3MzYsIDE0ODc0OCwgMTQ4NzYxLCAxNDg3NzMsIAorICAgIDE0ODc4NiwgMTQ4Nzk4LCAxNDg4MTEsIDE0ODgyMiwgMTQ4ODMzLCAxNDg4NDIsIDE0ODg1MCwgMTQ4ODU5LCAxNDg4NzAsIAorICAgIDE0ODg4MSwgMTQ4ODkzLCAxNDg5MDYsIDE0ODkyMCwgMTQ4OTM1LCAxNDg5NDcsIDE0ODk2MCwgMTQ4OTcyLCAxNDg5ODUsIAorICAgIDE0ODk5NiwgMTQ5MDA3LCAxNDkwMTYsIDE0OTAyNCwgMTQ5MDMzLCAxNDkwNDAsIDE0OTA0NywgMTQ5MDU0LCAxNDkwNjEsIAorICAgIDE0OTA2OCwgMTQ5MDc1LCAxNDkwODIsIDE0OTA4OSwgMTQ5MDk2LCAxNDkxMDMsIDE0OTEwOCwgMTQ5MTEzLCAxNDkxMTgsIAorICAgIDE0OTEyNSwgMTQ5MTM1LCAxNDkxNDYsIDE0OTE1NiwgMTQ5MTY3LCAxNDkxODEsIDE0OTE5NiwgMTQ5MjExLCAxNDkyMjUsIAorICAgIDE0OTI0MCwgMTQ5MjU1LCAxNDkyNjYsIDE0OTI3NywgMTQ5MjkwLCAxNDkzMDMsIDE0OTMxMiwgMTQ5MzIxLCAxNDkzMzQsIAorICAgIDE0OTM0NywgMTQ5MzU0LCAxNDkzNjEsIDE0OTM2NiwgMTQ5MzcxLCAxNDkzNzYsIDE0OTM4MSwgMTQ5Mzg2LCAxNDkzOTMsIAorICAgIDE0OTQwMiwgMTQ5NDA3LCAxNDk0MTAsIDE0OTQxNSwgMTQ5NDIyLCAxNDk0MjksIDE0OTQzNiwgMTQ5NDQzLCAxNDk0NTAsIAorICAgIDE0OTQ1NywgMTQ5NDcwLCAxNDk0ODQsIDE0OTQ5OSwgMTQ5NTA2LCAxNDk1MTMsIDE0OTUyMCwgMTQ5NTI5LCAxNDk1MzcsIAorICAgIDE0OTU0NSwgMTQ5NTU0LCAxNDk1NTksIDE0OTU2NCwgMTQ5NTY5LCAxNDk1NzQsIDE0OTU3OSwgMTQ5NTg0LCAxNDk1OTEsIAorICAgIDE0OTU5OCwgMTQ5NjA0LCAxNDk2MTEsIDE0OTYxNywgMTQ5NjI0LCAxNDk2MjksIDE0OTYzNCwgMTQ5NjM5LCAxNDk2NDQsIAorICAgIDE0OTY0OSwgMTQ5NjU2LCAxNDk2NjMsIDE0OTY2OCwgMTQ5Njc1LCAxNDk2ODIsIDE0OTY4NywgMTQ5NjkyLCAxNDk2OTcsIAorICAgIDE0OTcwMiwgMTQ5NzA3LCAxNDk3MTIsIDE0OTcxOSwgMTQ5NzI2LCAxNDk3MzMsIDE0OTczNiwgMTQ5NzQxLCAxNDk3NDYsIAorICAgIDE0OTc1MSwgMTQ5NzU2LCAxNDk3NjMsIDE0OTc3MCwgMTQ5Nzc4LCAxNDk3ODYsIDE0OTc5MSwgMTQ5Nzk2LCAxNDk4MDMsIAorICAgIDE0OTgxMCwgMTQ5ODE3LCAxNDk4MjIsIDE0OTgyOSwgMTQ5ODM2LCAxNDk4NDEsIDE0OTg0OCwgMTQ5ODU1LCAxNDk4NjEsIAorICAgIDE0OTg2NywgMTQ5ODczLCAxNDk4NzksIDE0OTg4NywgMTQ5ODk1LCAxNDk5MDEsIDE0OTkwOSwgMTQ5OTE3LCAxNDk5MjIsIAorICAgIDE0OTkyOSwgMTQ5OTM2LCAxNDk5NDEsIDE0OTk0OCwgMTQ5OTU1LCAxNDk5NjIsIDE0OTk3MCwgMTQ5OTc4LCAxNDk5ODMsIAorICAgIDE0OTk5MCwgMTQ5OTk3LCAxNTAwMDYsIDE1MDAxMywgMTUwMDIyLCAxNTAwMzMsIDE1MDA0MiwgMTUwMDUxLCAxNTAwNjAsIAorICAgIDE1MDA2OSwgMTUwMDcyLCAxNTAwNzcsIDE1MDA4NCwgMTUwMDkzLCAxNTAxMDAsIDE1MDEwOSwgMTUwMTE2LCAxNTAxMjEsIAorICAgIDE1MDEyNiwgMTUwMTI5LCAxNTAxMzIsIDE1MDEzNSwgMTUwMTQyLCAxNTAxNDksIDE1MDE1OCwgMTUwMTY3LCAxNTAxNzYsIAorICAgIDE1MDE4MywgMTUwMTkwLCAxNTAxOTUsIDE1MDIwOCwgMTUwMjEzLCAxNTAyMTgsIDE1MDIyMywgMTUwMjI4LCAxNTAyMzMsIAorICAgIDE1MDIzOCwgMTUwMjQzLCAxNTAyNDgsIDE1MDI1MSwgMTUwMjU2LCAxNTAyNjEsIDE1MDI2NiwgMTUwMjcxLCAxNTAyNzYsIAorICAgIDE1MDI4MywgMTUwMjg4LCAxNTAyOTUsIDE1MDI5OCwgMTUwMzAzLCAxNTAzMDYsIDE1MDMwOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMzEyLCAxNTAzMTcsIDE1MDMyMiwgMTUwMzI3LCAxNTAzMzIsIDAsIAorICAgIDE1MDMzNywgMTUwMzQyLCAxNTAzNDcsIDE1MDM1MiwgMTUwMzU3LCAxNTAzNjIsIDE1MDM2NywgMTUwMzcyLCAxNTAzNzcsIAorICAgIDE1MDM4MiwgMTUwMzg3LCAxNTAzOTIsIDE1MDM5NywgMTUwNDAyLCAxNTA0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1MDQxMiwgMTUwNDE3LCAxNTA0MjIsIDE1MDQyNywgMTUwNDMyLCAxNTA0MzcsIDE1MDQ0MiwgMCwgMTUwNDQ3LCAKKyAgICAxNTA0NTIsIDE1MDQ1NywgMTUwNDYzLCAxNTA0NjcsIDE1MDQ3MiwgMTUwNDc3LCAxNTA0ODIsIDE1MDQ4NywgMTUwNDkyLCAKKyAgICAxNTA0OTcsIDE1MDUwMiwgMTUwNTA3LCAxNTA1MTIsIDE1MDUxNywgMTUwNTIyLCAxNTA1MjcsIDAsIDAsIDE1MDUzMiwgCisgICAgMTUwNTM3LCAxNTA1NDIsIDE1MDU0NywgMTUwNTUyLCAxNTA1NTcsIDE1MDU2MiwgMCwgMTUwNTY3LCAxNTA1NzIsIDAsIAorICAgIDE1MDU3OCwgMTUwNTgzLCAxNTA1OTEsIDE1MDU5OCwgMTUwNjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUwOTUsIDEzNTA5OSwgMTM1MTA0LCAxMzUxMDksIDEzNTExNCwgMTM1MTE4LCAKLSAgICAxMzUxMjMsIDEzNTEyOCwgMTM1MTMzLCAxMzUxMzcsIDEzNTE0MiwgMTM1MTQ3LCAxMzUxNTEsIDEzNTE1NiwgMTM1MTYxLCAKLSAgICAxMzUxNjUsIDEzNTE3MCwgMTM1MTc1LCAxMzUxNzksIDEzNTE4MywgMTM1MTg4LCAxMzUxOTIsIDEzNTE5NywgMTM1MjAyLCAKLSAgICAxMzUyMDcsIDEzNTIxMiwgMTM1MjE3LCAxMzUyMjEsIDEzNTIyNiwgMTM1MjMxLCAxMzUyMzYsIDEzNTI0MCwgMTM1MjQ1LCAKLSAgICAxMzUyNTAsIDEzNTI1NSwgMTM1MjU5LCAxMzUyNjQsIDEzNTI2OSwgMTM1MjczLCAxMzUyNzgsIDEzNTI4MywgMTM1Mjg3LCAKLSAgICAxMzUyOTIsIDEzNTI5NywgMTM1MzAxLCAxMzUzMDUsIDEzNTMxMCwgMTM1MzE0LCAxMzUzMTksIDEzNTMyNCwgMTM1MzI5LCAKLSAgICAxMzUzMzQsIDEzNTMzOSwgMTM1MzQzLCAxMzUzNDgsIDEzNTM1MywgMTM1MzU4LCAxMzUzNjIsIDEzNTM2NywgMTM1MzcyLCAKLSAgICAxMzUzNzcsIDEzNTM4MSwgMTM1Mzg2LCAxMzUzOTEsIDEzNTM5NSwgMTM1NDAwLCAxMzU0MDUsIDEzNTQwOSwgMTM1NDE0LCAKLSAgICAxMzU0MTksIDEzNTQyMywgMTM1NDI3LCAxMzU0MzIsIDEzNTQzNiwgMTM1NDQxLCAxMzU0NDYsIDEzNTQ1MSwgMTM1NDU2LCAKLSAgICAxMzU0NjEsIDEzNTQ2NSwgMTM1NDcwLCAxMzU0NzUsIDEzNTQ4MCwgMTM1NDg0LCAxMzU0ODksIDAsIDEzNTQ5NCwgCi0gICAgMTM1NDk4LCAxMzU1MDMsIDEzNTUwOCwgMTM1NTEyLCAxMzU1MTcsIDEzNTUyMiwgMTM1NTI2LCAxMzU1MzEsIDEzNTUzNiwgCi0gICAgMTM1NTQwLCAxMzU1NDQsIDEzNTU0OSwgMTM1NTUzLCAxMzU1NTgsIDEzNTU2MywgMTM1NTY4LCAxMzU1NzMsIDEzNTU3OCwgCi0gICAgMTM1NTgzLCAxMzU1ODksIDEzNTU5NSwgMTM1NjAxLCAxMzU2MDYsIDEzNTYxMiwgMTM1NjE4LCAxMzU2MjQsIDEzNTYyOSwgCi0gICAgMTM1NjM1LCAxMzU2NDEsIDEzNTY0NiwgMTM1NjUyLCAxMzU2NTgsIDEzNTY2MywgMTM1NjY5LCAxMzU2NzUsIDEzNTY4MCwgCi0gICAgMTM1Njg1LCAxMzU2OTEsIDEzNTY5NiwgMTM1NzAyLCAxMzU3MDgsIDEzNTcxNCwgMTM1NzIwLCAxMzU3MjYsIDEzNTczMSwgCi0gICAgMTM1NzM3LCAxMzU3NDMsIDEzNTc0OSwgMTM1NzU0LCAxMzU3NjAsIDEzNTc2NiwgMTM1NzcyLCAxMzU3NzcsIDEzNTc4MywgCi0gICAgMTM1Nzg5LCAxMzU3OTQsIDEzNTgwMCwgMTM1ODA2LCAxMzU4MTEsIDEzNTgxNywgMTM1ODIzLCAxMzU4MjgsIDEzNTgzMywgCi0gICAgMTM1ODM5LCAxMzU4NDQsIDEzNTg1MCwgMTM1ODU2LCAxMzU4NjIsIDEzNTg2OCwgMTM1ODc0LCAwLCAxMzU4NzgsIAotICAgIDEzNTg4MywgMCwgMCwgMTM1ODg4LCAwLCAwLCAxMzU4OTMsIDEzNTg5OCwgMCwgMCwgMTM1OTAzLCAxMzU5MDgsIDEzNTkxMiwgCi0gICAgMTM1OTE3LCAwLCAxMzU5MjIsIDEzNTkyNiwgMTM1OTMxLCAxMzU5MzUsIDEzNTk0MCwgMTM1OTQ1LCAxMzU5NTAsIAotICAgIDEzNTk1NSwgMTM1OTYwLCAxMzU5NjQsIDEzNTk2OSwgMTM1OTc0LCAwLCAxMzU5NzksIDAsIDEzNTk4NCwgMTM1OTg5LCAKLSAgICAxMzU5OTMsIDEzNTk5OCwgMTM2MDAzLCAxMzYwMDcsIDEzNjAxMiwgMCwgMTM2MDE3LCAxMzYwMjIsIDEzNjAyNywgCi0gICAgMTM2MDMxLCAxMzYwMzUsIDEzNjA0MCwgMTM2MDQ0LCAxMzYwNDksIDEzNjA1NCwgMTM2MDU5LCAxMzYwNjQsIDEzNjA2OSwgCi0gICAgMTM2MDc0LCAxMzYwODAsIDEzNjA4NiwgMTM2MDkyLCAxMzYwOTcsIDEzNjEwMywgMTM2MTA5LCAxMzYxMTUsIDEzNjEyMCwgCi0gICAgMTM2MTI2LCAxMzYxMzIsIDEzNjEzNywgMTM2MTQzLCAxMzYxNDksIDEzNjE1NCwgMTM2MTYwLCAxMzYxNjYsIDEzNjE3MSwgCi0gICAgMTM2MTc2LCAxMzYxODIsIDEzNjE4NywgMTM2MTkzLCAxMzYxOTksIDEzNjIwNSwgMTM2MjExLCAxMzYyMTcsIDEzNjIyMiwgCi0gICAgMTM2MjI4LCAxMzYyMzQsIDEzNjI0MCwgMTM2MjQ1LCAxMzYyNTEsIDEzNjI1NywgMTM2MjYzLCAxMzYyNjgsIDEzNjI3NCwgCi0gICAgMTM2MjgwLCAxMzYyODUsIDEzNjI5MSwgMTM2Mjk3LCAxMzYzMDIsIDEzNjMwOCwgMTM2MzE0LCAxMzYzMTksIDEzNjMyNCwgCi0gICAgMTM2MzMwLCAxMzYzMzUsIDEzNjM0MSwgMTM2MzQ3LCAxMzYzNTMsIDEzNjM1OSwgMTM2MzY1LCAxMzYzNjksIDAsIAotICAgIDEzNjM3NCwgMTM2Mzc5LCAxMzYzODMsIDEzNjM4OCwgMCwgMCwgMTM2MzkzLCAxMzYzOTgsIDEzNjQwMywgMTM2NDA3LCAKLSAgICAxMzY0MTIsIDEzNjQxNywgMTM2NDIxLCAxMzY0MjYsIDAsIDEzNjQzMSwgMTM2NDM1LCAxMzY0NDAsIDEzNjQ0NCwgCi0gICAgMTM2NDQ5LCAxMzY0NTQsIDEzNjQ1OSwgMCwgMTM2NDY0LCAxMzY0NjgsIDEzNjQ3MywgMTM2NDc4LCAxMzY0ODMsIAotICAgIDEzNjQ4NywgMTM2NDkyLCAxMzY0OTcsIDEzNjUwMiwgMTM2NTA2LCAxMzY1MTEsIDEzNjUxNiwgMTM2NTIwLCAxMzY1MjUsIAotICAgIDEzNjUzMCwgMTM2NTM0LCAxMzY1MzksIDEzNjU0NCwgMTM2NTQ4LCAxMzY1NTIsIDEzNjU1NywgMTM2NTYxLCAxMzY1NjYsIAotICAgIDEzNjU3MSwgMTM2NTc2LCAxMzY1ODEsIDEzNjU4NiwgMTM2NTkwLCAwLCAxMzY1OTUsIDEzNjYwMCwgMTM2NjA0LCAKLSAgICAxMzY2MDksIDAsIDEzNjYxNCwgMTM2NjE4LCAxMzY2MjMsIDEzNjYyOCwgMTM2NjMyLCAwLCAxMzY2MzcsIDAsIDAsIDAsIAotICAgIDEzNjY0MSwgMTM2NjQ1LCAxMzY2NTAsIDEzNjY1NCwgMTM2NjU5LCAxMzY2NjQsIDEzNjY2OSwgMCwgMTM2Njc0LCAKLSAgICAxMzY2NzgsIDEzNjY4MywgMTM2Njg4LCAxMzY2OTMsIDEzNjY5NywgMTM2NzAyLCAxMzY3MDcsIDEzNjcxMiwgMTM2NzE2LCAKLSAgICAxMzY3MjEsIDEzNjcyNiwgMTM2NzMwLCAxMzY3MzUsIDEzNjc0MCwgMTM2NzQ0LCAxMzY3NDksIDEzNjc1NCwgMTM2NzU4LCAKLSAgICAxMzY3NjIsIDEzNjc2NywgMTM2NzcxLCAxMzY3NzYsIDEzNjc4MSwgMTM2Nzg2LCAxMzY3OTEsIDEzNjc5NiwgMTM2ODAxLCAKLSAgICAxMzY4MDcsIDEzNjgxMywgMTM2ODE5LCAxMzY4MjQsIDEzNjgzMCwgMTM2ODM2LCAxMzY4NDIsIDEzNjg0NywgMTM2ODUzLCAKLSAgICAxMzY4NTksIDEzNjg2NCwgMTM2ODcwLCAxMzY4NzYsIDEzNjg4MSwgMTM2ODg3LCAxMzY4OTMsIDEzNjg5OCwgMTM2OTAzLCAKLSAgICAxMzY5MDksIDEzNjkxNCwgMTM2OTIwLCAxMzY5MjYsIDEzNjkzMiwgMTM2OTM4LCAxMzY5NDQsIDEzNjk0OSwgMTM2OTU1LCAKLSAgICAxMzY5NjEsIDEzNjk2NywgMTM2OTcyLCAxMzY5NzgsIDEzNjk4NCwgMTM2OTkwLCAxMzY5OTUsIDEzNzAwMSwgMTM3MDA3LCAKLSAgICAxMzcwMTIsIDEzNzAxOCwgMTM3MDI0LCAxMzcwMjksIDEzNzAzNSwgMTM3MDQxLCAxMzcwNDYsIDEzNzA1MSwgMTM3MDU3LCAKLSAgICAxMzcwNjIsIDEzNzA2OCwgMTM3MDc0LCAxMzcwODAsIDEzNzA4NiwgMTM3MDkyLCAxMzcwOTYsIDEzNzEwMSwgMTM3MTA2LCAKLSAgICAxMzcxMTEsIDEzNzExNSwgMTM3MTIwLCAxMzcxMjUsIDEzNzEzMCwgMTM3MTM0LCAxMzcxMzksIDEzNzE0NCwgMTM3MTQ4LCAKLSAgICAxMzcxNTMsIDEzNzE1OCwgMTM3MTYyLCAxMzcxNjcsIDEzNzE3MiwgMTM3MTc2LCAxMzcxODAsIDEzNzE4NSwgMTM3MTg5LCAKLSAgICAxMzcxOTQsIDEzNzE5OSwgMTM3MjA0LCAxMzcyMDksIDEzNzIxNCwgMTM3MjE4LCAxMzcyMjMsIDEzNzIyOCwgMTM3MjMzLCAKLSAgICAxMzcyMzcsIDEzNzI0MiwgMTM3MjQ3LCAxMzcyNTIsIDEzNzI1NiwgMTM3MjYxLCAxMzcyNjYsIDEzNzI3MCwgMTM3Mjc1LCAKLSAgICAxMzcyODAsIDEzNzI4NCwgMTM3Mjg5LCAxMzcyOTQsIDEzNzI5OCwgMTM3MzAyLCAxMzczMDcsIDEzNzMxMSwgMTM3MzE2LCAKLSAgICAxMzczMjEsIDEzNzMyNiwgMTM3MzMxLCAxMzczMzYsIDEzNzM0MSwgMTM3MzQ3LCAxMzczNTMsIDEzNzM1OSwgMTM3MzY0LCAKLSAgICAxMzczNzAsIDEzNzM3NiwgMTM3MzgyLCAxMzczODcsIDEzNzM5MywgMTM3Mzk5LCAxMzc0MDQsIDEzNzQxMCwgMTM3NDE2LCAKLSAgICAxMzc0MjEsIDEzNzQyNywgMTM3NDMzLCAxMzc0MzgsIDEzNzQ0MywgMTM3NDQ5LCAxMzc0NTQsIDEzNzQ2MCwgMTM3NDY2LCAKLSAgICAxMzc0NzIsIDEzNzQ3OCwgMTM3NDg0LCAxMzc0ODksIDEzNzQ5NSwgMTM3NTAxLCAxMzc1MDcsIDEzNzUxMiwgMTM3NTE4LCAKLSAgICAxMzc1MjQsIDEzNzUzMCwgMTM3NTM1LCAxMzc1NDEsIDEzNzU0NywgMTM3NTUyLCAxMzc1NTgsIDEzNzU2NCwgMTM3NTY5LCAKLSAgICAxMzc1NzUsIDEzNzU4MSwgMTM3NTg2LCAxMzc1OTEsIDEzNzU5NywgMTM3NjAyLCAxMzc2MDgsIDEzNzYxNCwgMTM3NjIwLCAKLSAgICAxMzc2MjYsIDEzNzYzMiwgMTM3NjM3LCAxMzc2NDMsIDEzNzY0OSwgMTM3NjU1LCAxMzc2NjAsIDEzNzY2NiwgMTM3NjcyLCAKLSAgICAxMzc2NzgsIDEzNzY4MywgMTM3Njg5LCAxMzc2OTUsIDEzNzcwMCwgMTM3NzA2LCAxMzc3MTIsIDEzNzcxNywgMTM3NzIzLCAKLSAgICAxMzc3MjksIDEzNzczNCwgMTM3NzM5LCAxMzc3NDUsIDEzNzc1MCwgMTM3NzU2LCAxMzc3NjIsIDEzNzc2OCwgMTM3Nzc0LCAKLSAgICAxMzc3ODAsIDEzNzc4NSwgMTM3NzkxLCAxMzc3OTcsIDEzNzgwMywgMTM3ODA4LCAxMzc4MTQsIDEzNzgyMCwgMTM3ODI2LCAKLSAgICAxMzc4MzEsIDEzNzgzNywgMTM3ODQzLCAxMzc4NDgsIDEzNzg1NCwgMTM3ODYwLCAxMzc4NjUsIDEzNzg3MSwgMTM3ODc3LCAKLSAgICAxMzc4ODIsIDEzNzg4NywgMTM3ODkzLCAxMzc4OTgsIDEzNzkwNCwgMTM3OTEwLCAxMzc5MTYsIDEzNzkyMiwgMTM3OTI4LCAKLSAgICAxMzc5MzQsIDEzNzk0MSwgMTM3OTQ4LCAxMzc5NTUsIDEzNzk2MSwgMTM3OTY4LCAxMzc5NzUsIDEzNzk4MiwgMTM3OTg4LCAKLSAgICAxMzc5OTUsIDEzODAwMiwgMTM4MDA4LCAxMzgwMTUsIDEzODAyMiwgMTM4MDI4LCAxMzgwMzUsIDEzODA0MiwgMTM4MDQ4LCAKLSAgICAxMzgwNTQsIDEzODA2MSwgMTM4MDY3LCAxMzgwNzQsIDEzODA4MSwgMTM4MDg4LCAxMzgwOTUsIDEzODEwMiwgMTM4MTA4LCAKLSAgICAxMzgxMTUsIDEzODEyMiwgMTM4MTI5LCAxMzgxMzUsIDEzODE0MiwgMTM4MTQ5LCAxMzgxNTYsIDEzODE2MiwgMTM4MTY5LCAKLSAgICAxMzgxNzYsIDEzODE4MiwgMTM4MTg5LCAxMzgxOTYsIDEzODIwMiwgMTM4MjA5LCAxMzgyMTYsIDEzODIyMiwgMTM4MjI4LCAKLSAgICAxMzgyMzUsIDEzODI0MSwgMTM4MjQ4LCAxMzgyNTUsIDEzODI2MiwgMTM4MjY5LCAxMzgyNzYsIDEzODI4MSwgMTM4Mjg3LCAKLSAgICAxMzgyOTMsIDEzODI5OSwgMTM4MzA0LCAxMzgzMTAsIDEzODMxNiwgMTM4MzIyLCAxMzgzMjcsIDEzODMzMywgMTM4MzM5LCAKLSAgICAxMzgzNDQsIDEzODM1MCwgMTM4MzU2LCAxMzgzNjEsIDEzODM2NywgMTM4MzczLCAxMzgzNzgsIDEzODM4MywgMTM4Mzg5LCAKLSAgICAxMzgzOTQsIDEzODQwMCwgMTM4NDA2LCAxMzg0MTIsIDEzODQxOCwgMTM4NDI0LCAxMzg0MjksIDEzODQzNSwgMTM4NDQxLCAKLSAgICAxMzg0NDcsIDEzODQ1MiwgMTM4NDU4LCAxMzg0NjQsIDEzODQ3MCwgMTM4NDc1LCAxMzg0ODEsIDEzODQ4NywgMTM4NDkyLCAKLSAgICAxMzg0OTgsIDEzODUwNCwgMTM4NTA5LCAxMzg1MTUsIDEzODUyMSwgMTM4NTI2LCAxMzg1MzEsIDEzODUzNywgMTM4NTQyLCAKLSAgICAxMzg1NDgsIDEzODU1NCwgMTM4NTYwLCAxMzg1NjYsIDEzODU3MiwgMTM4NTc4LCAwLCAwLCAxMzg1ODUsIDEzODU5MCwgCi0gICAgMTM4NTk1LCAxMzg2MDAsIDEzODYwNSwgMTM4NjEwLCAxMzg2MTUsIDEzODYyMCwgMTM4NjI1LCAxMzg2MzAsIDEzODYzNSwgCi0gICAgMTM4NjQwLCAxMzg2NDUsIDEzODY1MCwgMTM4NjU1LCAxMzg2NjAsIDEzODY2NSwgMTM4NjcwLCAxMzg2NzYsIDEzODY4MSwgCi0gICAgMTM4Njg2LCAxMzg2OTEsIDEzODY5NiwgMTM4NzAxLCAxMzg3MDYsIDEzODcxMSwgMTM4NzE1LCAxMzg3MjAsIDEzODcyNSwgCi0gICAgMTM4NzMwLCAxMzg3MzUsIDEzODc0MCwgMTM4NzQ1LCAxMzg3NTAsIDEzODc1NSwgMTM4NzYwLCAxMzg3NjUsIDEzODc3MCwgCi0gICAgMTM4Nzc1LCAxMzg3ODAsIDEzODc4NSwgMTM4NzkwLCAxMzg3OTUsIDEzODgwMCwgMTM4ODA2LCAxMzg4MTEsIDEzODgxNiwgCi0gICAgMTM4ODIxLCAxMzg4MjYsIDEzODgzMSwgMTM4ODM2LCAxMzg4NDEsIDEzODg0NywgMTM4ODUyLCAxMzg4NTcsIDEzODg2MiwgCi0gICAgMTM4ODY3LCAxMzg4NzIsIDEzODg3NywgMTM4ODgyLCAxMzg4ODcsIDEzODg5MiwgMTM4ODk3LCAxMzg5MDIsIDEzODkwNywgCi0gICAgMTM4OTEyLCAxMzg5MTcsIDEzODkyMiwgMTM4OTI3LCAxMzg5MzIsIDEzODkzNywgMTM4OTQyLCAxMzg5NDcsIDEzODk1MiwgCi0gICAgMTM4OTU3LCAxMzg5NjIsIDEzODk2OCwgMTM4OTczLCAxMzg5NzgsIDEzODk4MywgMTM4OTg4LCAxMzg5OTMsIDEzODk5OCwgCi0gICAgMTM5MDAzLCAxMzkwMDcsIDEzOTAxMiwgMTM5MDE3LCAxMzkwMjIsIDEzOTAyNywgMTM5MDMyLCAxMzkwMzcsIDEzOTA0MiwgCi0gICAgMTM5MDQ3LCAxMzkwNTIsIDEzOTA1NywgMTM5MDYyLCAxMzkwNjcsIDEzOTA3MiwgMTM5MDc3LCAxMzkwODIsIDEzOTA4NywgCi0gICAgMTM5MDkyLCAxMzkwOTgsIDEzOTEwMywgMTM5MTA4LCAxMzkxMTMsIDEzOTExOCwgMTM5MTIzLCAxMzkxMjgsIDEzOTEzMywgCi0gICAgMTM5MTM5LCAxMzkxNDQsIDEzOTE0OSwgMTM5MTU0LCAxMzkxNTksIDEzOTE2NCwgMTM5MTY5LCAxMzkxNzUsIDEzOTE4MSwgCi0gICAgMTM5MTg3LCAxMzkxOTMsIDEzOTE5OSwgMTM5MjA1LCAxMzkyMTEsIDEzOTIxNywgMTM5MjIzLCAxMzkyMjksIDEzOTIzNSwgCi0gICAgMTM5MjQxLCAxMzkyNDcsIDEzOTI1MywgMTM5MjU5LCAxMzkyNjUsIDEzOTI3MSwgMTM5Mjc4LCAxMzkyODQsIDEzOTI5MCwgCi0gICAgMTM5Mjk2LCAxMzkzMDIsIDEzOTMwOCwgMTM5MzE0LCAxMzkzMjAsIDEzOTMyNSwgMTM5MzMxLCAxMzkzMzcsIDEzOTM0MywgCi0gICAgMTM5MzQ5LCAxMzkzNTUsIDEzOTM2MSwgMTM5MzY3LCAxMzkzNzMsIDEzOTM3OSwgMTM5Mzg1LCAxMzkzOTEsIDEzOTM5NywgCi0gICAgMTM5NDAzLCAxMzk0MDksIDEzOTQxNSwgMTM5NDIxLCAxMzk0MjcsIDEzOTQzNCwgMTM5NDQwLCAxMzk0NDYsIDEzOTQ1MiwgCi0gICAgMTM5NDU4LCAxMzk0NjQsIDEzOTQ3MCwgMTM5NDc2LCAxMzk0ODMsIDEzOTQ4OSwgMTM5NDk1LCAxMzk1MDEsIDEzOTUwNywgCi0gICAgMTM5NTEzLCAxMzk1MTksIDEzOTUyNSwgMTM5NTMxLCAxMzk1MzcsIDEzOTU0MywgMTM5NTQ5LCAxMzk1NTUsIDEzOTU2MSwgCi0gICAgMTM5NTY3LCAxMzk1NzMsIDEzOTU3OSwgMTM5NTg1LCAxMzk1OTEsIDEzOTU5NywgMTM5NjAzLCAxMzk2MDksIDEzOTYxNSwgCi0gICAgMTM5NjIxLCAxMzk2MjgsIDEzOTYzNCwgMTM5NjQwLCAxMzk2NDYsIDEzOTY1MiwgMTM5NjU4LCAxMzk2NjQsIDEzOTY3MCwgCi0gICAgMTM5Njc1LCAxMzk2ODEsIDEzOTY4NywgMTM5NjkzLCAxMzk2OTksIDEzOTcwNSwgMTM5NzExLCAxMzk3MTcsIDEzOTcyMywgCi0gICAgMTM5NzI5LCAxMzk3MzUsIDEzOTc0MSwgMTM5NzQ3LCAxMzk3NTMsIDEzOTc1OSwgMTM5NzY1LCAxMzk3NzEsIDEzOTc3NywgCi0gICAgMTM5Nzg0LCAxMzk3OTAsIDEzOTc5NiwgMTM5ODAyLCAxMzk4MDgsIDEzOTgxNCwgMTM5ODIwLCAxMzk4MjYsIDEzOTgzMywgCi0gICAgMTM5ODM5LCAxMzk4NDUsIDEzOTg1MSwgMTM5ODU3LCAxMzk4NjMsIDEzOTg2OSwgMTM5ODc2LCAxMzk4ODMsIDEzOTg5MCwgCi0gICAgMTM5ODk3LCAxMzk5MDQsIDEzOTkxMSwgMTM5OTE4LCAxMzk5MjUsIDEzOTkzMiwgMTM5OTM5LCAxMzk5NDYsIDEzOTk1MywgCi0gICAgMTM5OTYwLCAxMzk5NjcsIDEzOTk3NCwgMTM5OTgxLCAxMzk5ODgsIDEzOTk5NiwgMTQwMDAzLCAxNDAwMTAsIDE0MDAxNywgCi0gICAgMTQwMDI0LCAxNDAwMzEsIDE0MDAzOCwgMTQwMDQ1LCAxNDAwNTEsIDE0MDA1OCwgMTQwMDY1LCAxNDAwNzIsIDE0MDA3OSwgCi0gICAgMTQwMDg2LCAxNDAwOTMsIDE0MDEwMCwgMTQwMTA3LCAxNDAxMTQsIDE0MDEyMSwgMTQwMTI4LCAxNDAxMzUsIDE0MDE0MiwgCi0gICAgMTQwMTQ5LCAxNDAxNTYsIDE0MDE2MywgMTQwMTcwLCAxNDAxNzgsIDE0MDE4NSwgMTQwMTkyLCAxNDAxOTksIDE0MDIwNiwgCi0gICAgMTQwMjEzLCAxNDAyMjAsIDE0MDIyNywgMTQwMjM1LCAxNDAyNDIsIDE0MDI0OSwgMTQwMjU2LCAxNDAyNjMsIDE0MDI3MCwgCi0gICAgMTQwMjc3LCAxNDAyODIsIDAsIDAsIDE0MDI4NywgMTQwMjkyLCAxNDAyOTYsIDE0MDMwMCwgMTQwMzA0LCAxNDAzMDgsIAotICAgIDE0MDMxMiwgMTQwMzE2LCAxNDAzMjEsIDE0MDMyNSwgMTQwMzMwLCAxNDAzMzUsIDE0MDMzOSwgMTQwMzQzLCAxNDAzNDcsIAotICAgIDE0MDM1MSwgMTQwMzU1LCAxNDAzNTksIDE0MDM2NCwgMTQwMzY4LCAxNDAzNzMsIDE0MDM3OCwgMTQwMzgyLCAxNDAzODYsIAotICAgIDE0MDM5MCwgMTQwMzk0LCAxNDAzOTgsIDE0MDQwMiwgMTQwNDA3LCAxNDA0MTEsIDE0MDQxNiwgMTQwNDIyLCAxNDA0MjcsIAotICAgIDE0MDQzMiwgMTQwNDM3LCAxNDA0NDIsIDE0MDQ0NywgMTQwNDUyLCAxNDA0NTgsIDE0MDQ2MywgMTQwNDY5LCAxNDA0NzUsIAotICAgIDE0MDQ4MCwgMTQwNDg1LCAxNDA0OTAsIDE0MDQ5NSwgMTQwNTAwLCAxNDA1MDUsIDE0MDUxMSwgMTQwNTE2LCAxNDA1MjIsIAotICAgIDE0MDUyNiwgMTQwNTMxLCAxNDA1MzYsIDE0MDU0MSwgMTQwNTQ2LCAxNDA1NTEsIDE0MDU1NiwgMTQwNTYyLCAxNDA1NzAsIAotICAgIDE0MDU3NywgMTQwNTgyLCAxNDA1ODcsIDE0MDU5NCwgMTQwNjAwLCAxNDA2MDUsIDE0MDYxMSwgMTQwNjE3LCAxNDA2MjUsIAotICAgIDE0MDYzMSwgMTQwNjM4LCAxNDA2NDYsIDE0MDY1MiwgMTQwNjYxLCAxNDA2NzAsIDE0MDY3OCwgMTQwNjg2LCAxNDA2OTIsIAotICAgIDE0MDY5OSwgMTQwNzA3LCAxNDA3MTUsIDE0MDcyMSwgMTQwNzI4LCAxNDA3MzcsIDE0MDc0NiwgMTQwNzUzLCAxNDA3NjQsIAotICAgIDE0MDc3NCwgMTQwNzg0LCAxNDA3OTQsIDE0MDgwNCwgMTQwODExLCAxNDA4MTgsIDE0MDgyNSwgMTQwODMyLCAxNDA4NDEsIAotICAgIDE0MDg1MCwgMTQwODYxLCAxNDA4NzIsIDE0MDg4MSwgMTQwODkwLCAxNDA5MDEsIDE0MDkxMCwgMTQwOTE5LCAxNDA5MzAsIAotICAgIDE0MDkzOSwgMTQwOTQ4LCAxNDA5NTYsIDE0MDk2NCwgMTQwOTc1LCAxNDA5ODYsIDE0MDk5NCwgMTQxMDAzLCAxNDEwMTIsIAotICAgIDE0MTAxOSwgMTQxMDMwLCAxNDEwNDEsIDE0MTA1MCwgMTQxMDU5LCAxNDEwNjYsIDE0MTA3NSwgMTQxMDg0LCAxNDEwOTMsIAotICAgIDE0MTEwNCwgMTQxMTEzLCAxNDExMjMsIDE0MTEzMiwgMTQxMTQxLCAxNDExNTIsIDE0MTE2NSwgMTQxMTgwLCAxNDExOTEsIAotICAgIDE0MTIwNCwgMTQxMjE2LCAxNDEyMjUsIDE0MTIzNiwgMTQxMjQ3LCAxNDEyNTYsIDE0MTI2NywgMTQxMjgxLCAxNDEyOTYsIAotICAgIDE0MTI5OSwgMTQxMzA4LCAxNDEzMTMsIDE0MTMxOSwgMTQxMzI3LCAxNDEzMzMsIDE0MTMzOSwgMTQxMzQ4LCAxNDEzNTUsIAotICAgIDE0MTM2NSwgMTQxMzc3LCAxNDEzODQsIDE0MTM4NywgMTQxMzkzLCAxNDE0MDAsIDE0MTQwNiwgMTQxNDExLCAxNDE0MTQsIAotICAgIDE0MTQxOSwgMTQxNDIyLCAxNDE0MjksIDE0MTQzNSwgMTQxNDQzLCAxNDE0NTAsIDE0MTQ1NywgMTQxNDYzLCAxNDE0NjgsIAotICAgIDE0MTQ3MSwgMTQxNDc0LCAxNDE0NzcsIDE0MTQ4MywgMTQxNDkwLCAxNDE0OTYsIDE0MTUwMSwgMTQxNTA4LCAxNDE1MTEsIAotICAgIDE0MTUxNiwgMTQxNTIzLCAxNDE1MjksIDE0MTUzNywgMTQxNTQ0LCAxNDE1NTQsIDE0MTU2MywgMTQxNTY2LCAxNDE1NzIsIAotICAgIDE0MTU3OSwgMTQxNTg2LCAxNDE1OTMsIDE0MTU5OCwgMTQxNjA2LCAxNDE2MTQsIDE0MTYyMywgMTQxNjI5LCAxNDE2MzgsIAotICAgIDE0MTY0NywgMTQxNjU2LCAxNDE2NjIsIDE0MTY3MSwgMTQxNjc4LCAxNDE2ODUsIDE0MTY5MiwgMTQxNzAwLCAxNDE3MDYsIAotICAgIDE0MTcxNCwgMTQxNzIwLCAxNDE3MjcsIDE0MTczNCwgMTQxNzQyLCAxNDE3NTMsIDE0MTc2MywgMTQxNzY5LCAxNDE3NzYsIAotICAgIDE0MTc4MywgMTQxNzkwLCAxNDE3OTYsIDE0MTgwMywgMTQxODEwLCAxNDE4MTUsIDE0MTgyMiwgMTQxODMwLCAxNDE4MzksIAotICAgIDE0MTg0NSwgMTQxODU3LCAxNDE4NjgsIDE0MTg3NCwgMTQxODgyLCAxNDE4ODgsIDE0MTg5NSwgMTQxOTAyLCAxNDE5MDksIAotICAgIDE0MTkxNSwgMTQxOTIyLCAxNDE5MzEsIDE0MTkzNywgMTQxOTQzLCAxNDE5NTAsIDE0MTk1NywgMTQxOTY1LCAxNDE5NzUsIAotICAgIDE0MTk4NSwgMTQxOTk1LCAxNDIwMDUsIDE0MjAxMywgMTQyMDIxLCAxNDIwMzEsIDE0MjAzOSwgMTQyMDQ0LCAxNDIwNDksIAotICAgIDE0MjA1NCwgMTQyMDYwLCAxNDIwNjcsIDE0MjA3NCwgMTQyMDgwLCAxNDIwODYsIDE0MjA5MSwgMTQyMDk4LCAxNDIxMDYsIAotICAgIDE0MjExNiwgMTQyMTI0LCAxNDIxMzIsIDE0MjE0MiwgMTQyMTUyLCAxNDIxNjAsIDE0MjE3MCwgMTQyMTgwLCAxNDIxOTIsIAotICAgIDE0MjIwNCwgMTQyMjE2LCAxNDIyMjYsIDE0MjIzMiwgMTQyMjM4LCAxNDIyNDUsIDE0MjI1NCwgMTQyMjYzLCAxNDIyNzIsIAotICAgIDE0MjI4MSwgMTQyMjkxLCAxNDIzMDAsIDE0MjMwOSwgMTQyMzE4LCAxNDIzMjMsIDE0MjMyOSwgMTQyMzM4LCAxNDIzNDgsIAotICAgIDE0MjM1NywgMTQyMzYzLCAxNDIzNjksIDE0MjM3NiwgMTQyMzgzLCAxNDIzOTAsIDE0MjM5NiwgMTQyNDAzLCAxNDI0MTAsIAotICAgIDE0MjQxNywgMTQyNDIzLCAxNDI0MjcsIDE0MjQzMiwgMTQyNDM5LCAxNDI0NDYsIDE0MjQ1MywgMTQyNDU4LCAxNDI0NjYsIAotICAgIDE0MjQ3NCwgMTQyNDgzLCAxNDI0OTEsIDE0MjQ5OCwgMTQyNTA2LCAxNDI1MTUsIDE0MjUyNSwgMTQyNTI4LCAxNDI1MzIsIAotICAgIDE0MjUzNywgMTQyNTQyLCAxNDI1NDcsIDE0MjU1MiwgMTQyNTU3LCAxNDI1NjIsIDE0MjU2NywgMTQyNTcyLCAxNDI1NzcsIAotICAgIDE0MjU4MiwgMTQyNTg3LCAxNDI1OTIsIDE0MjU5NywgMTQyNjAyLCAxNDI2MDcsIDE0MjYxMiwgMTQyNjE3LCAxNDI2MjQsIAotICAgIDE0MjYzMCwgMTQyNjM3LCAxNDI2NDMsIDE0MjY0OCwgMTQyNjU1LCAxNDI2NjEsIDE0MjY2OCwgMTQyNjc0LCAxNDI2NzksIAotICAgIDE0MjY4NiwgMTQyNjkzLCAxNDI3MDAsIDE0MjcwNiwgMTQyNzEyLCAxNDI3MjEsIDE0MjczMCwgMTQyNzQxLCAxNDI3NDgsIAotICAgIDE0Mjc1NSwgMTQyNzY0LCAxNDI3NzMsIDE0Mjc4MiwgMTQyNzkxLCAxNDI4MDAsIDE0MjgwNiwgMTQyODE0LCAxNDI4MjAsIAotICAgIDE0MjgzMCwgMTQyODM1LCAxNDI4NDQsIDE0Mjg1MywgMTQyODYwLCAxNDI4NzEsIDE0Mjg3OCwgMTQyODg1LCAxNDI4OTIsIAotICAgIDE0Mjg5OSwgMTQyOTA2LCAxNDI5MTMsIDE0MjkyMCwgMTQyOTI3LCAxNDI5MzQsIDE0Mjk0MSwgMTQyOTQ3LCAxNDI5NTMsIAotICAgIDE0Mjk1OSwgMTQyOTY2LCAxNDI5NzMsIDE0Mjk4MCwgMTQyOTg3LCAxNDI5OTQsIDE0MzAwMSwgMTQzMDA4LCAxNDMwMTUsIAotICAgIDE0MzAyMiwgMTQzMDI5LCAxNDMwMzYsIDE0MzA0MywgMTQzMDQ4LCAxNDMwNTcsIDE0MzA2NiwgMTQzMDc1LCAxNDMwODIsIAotICAgIDE0MzA4OSwgMTQzMDk2LCAxNDMxMDMsIDE0MzExMCwgMTQzMTE3LCAxNDMxMjQsIDE0MzEzMSwgMTQzMTQwLCAxNDMxNDksIAotICAgIDE0MzE1OCwgMTQzMTY3LCAxNDMxNzYsIDE0MzE4NSwgMTQzMTk0LCAxNDMyMDMsIDE0MzIxMiwgMTQzMjIxLCAxNDMyMzAsIAotICAgIDE0MzIzOSwgMTQzMjQ4LCAxNDMyNTQsIDE0MzI2MiwgMTQzMjY4LCAxNDMyNzgsIDE0MzI4MywgMTQzMjkyLCAxNDMzMDEsIAotICAgIDE0MzMxMCwgMTQzMzIxLCAxNDMzMjYsIDE0MzMzMywgMTQzMzQwLCAxNDMzNDcsIDE0MzM1MiwgMTQzMzU4LCAxNDMzNjQsIAotICAgIDE0MzM3MCwgMTQzMzc3LCAxNDMzODQsIDE0MzM5MSwgMTQzMzk4LCAxNDM0MDUsIDE0MzQxMiwgMTQzNDE5LCAxNDM0MjYsIAotICAgIDE0MzQzMywgMTQzNDQwLCAxNDM0NDcsIDE0MzQ1NCwgMTQzNDU5LCAxNDM0NjgsIDE0MzQ3NywgMTQzNDg2LCAxNDM0OTUsIAotICAgIDE0MzUwNCwgMTQzNTEzLCAxNDM1MjIsIDE0MzUzMSwgMTQzNTQyLCAxNDM1NTMsIDE0MzU2MCwgMTQzNTY3LCAxNDM1NzQsIAotICAgIDE0MzU4MSwgMTQzNTg4LCAxNDM1OTUsIDE0MzYwMywgMTQzNjEzLCAxNDM2MjMsIDE0MzYzMywgMTQzNjQ0LCAxNDM2NTUsIAotICAgIDE0MzY2NiwgMTQzNjc1LCAxNDM2ODQsIDE0MzY5MywgMTQzNjk4LCAxNDM3MDMsIDE0MzcwOCwgMTQzNzEzLCAxNDM3MjQsIAotICAgIDE0MzczNSwgMTQzNzQ2LCAxNDM3NTcsIDE0Mzc2OCwgMTQzNzc4LCAxNDM3ODksIDE0Mzc5OCwgMTQzODA3LCAxNDM4MTYsIAotICAgIDE0MzgyNSwgMTQzODM0LCAxNDM4NDIsIDE0Mzg1MSwgMTQzODYyLCAxNDM4NzMsIDE0Mzg4NCwgMTQzODk1LCAxNDM5MDYsIAotICAgIDE0MzkxOCwgMTQzOTMxLCAxNDM5NDMsIDE0Mzk1NiwgMTQzOTY4LCAxNDM5ODEsIDE0Mzk5MywgMTQ0MDA2LCAxNDQwMTcsIAotICAgIDE0NDAyOCwgMTQ0MDM3LCAxNDQwNDUsIDE0NDA1NCwgMTQ0MDY1LCAxNDQwNzYsIDE0NDA4OCwgMTQ0MTAxLCAxNDQxMTUsIAotICAgIDE0NDEzMCwgMTQ0MTQyLCAxNDQxNTUsIDE0NDE2NywgMTQ0MTgwLCAxNDQxOTEsIDE0NDIwMiwgMTQ0MjExLCAxNDQyMTksIAotICAgIDE0NDIyOCwgMTQ0MjM1LCAxNDQyNDIsIDE0NDI0OSwgMTQ0MjU2LCAxNDQyNjMsIDE0NDI3MCwgMTQ0Mjc3LCAxNDQyODQsIAotICAgIDE0NDI5MSwgMTQ0Mjk4LCAxNDQzMDMsIDE0NDMwOCwgMTQ0MzEzLCAxNDQzMjAsIDE0NDMzMCwgMTQ0MzQxLCAxNDQzNTEsIAotICAgIDE0NDM2MiwgMTQ0Mzc2LCAxNDQzOTEsIDE0NDQwNiwgMTQ0NDIwLCAxNDQ0MzUsIDE0NDQ1MCwgMTQ0NDYxLCAxNDQ0NzIsIAotICAgIDE0NDQ4NSwgMTQ0NDk4LCAxNDQ1MDcsIDE0NDUxNiwgMTQ0NTI5LCAxNDQ1NDIsIDE0NDU0OSwgMTQ0NTU2LCAxNDQ1NjEsIAotICAgIDE0NDU2NiwgMTQ0NTcxLCAxNDQ1NzYsIDE0NDU4MSwgMTQ0NTg4LCAxNDQ1OTcsIDE0NDYwMiwgMTQ0NjA1LCAxNDQ2MTAsIAotICAgIDE0NDYxNywgMTQ0NjI0LCAxNDQ2MzEsIDE0NDYzOCwgMTQ0NjQ1LCAxNDQ2NTIsIDE0NDY2NSwgMTQ0Njc5LCAxNDQ2OTQsIAotICAgIDE0NDcwMSwgMTQ0NzA4LCAxNDQ3MTUsIDE0NDcyNCwgMTQ0NzMyLCAxNDQ3NDAsIDE0NDc0OSwgMTQ0NzU0LCAxNDQ3NTksIAotICAgIDE0NDc2NCwgMTQ0NzY5LCAxNDQ3NzQsIDE0NDc3OSwgMTQ0Nzg2LCAxNDQ3OTMsIDE0NDc5OSwgMTQ0ODA2LCAxNDQ4MTIsIAotICAgIDE0NDgxOSwgMTQ0ODI0LCAxNDQ4MjksIDE0NDgzNCwgMTQ0ODM5LCAxNDQ4NDQsIDE0NDg1MSwgMTQ0ODU4LCAxNDQ4NjMsIAotICAgIDE0NDg3MCwgMTQ0ODc3LCAxNDQ4ODIsIDE0NDg4NywgMTQ0ODkyLCAxNDQ4OTcsIDE0NDkwMiwgMTQ0OTA3LCAxNDQ5MTQsIAotICAgIDE0NDkyMSwgMTQ0OTI4LCAxNDQ5MzEsIDE0NDkzNiwgMTQ0OTQxLCAxNDQ5NDYsIDE0NDk1MSwgMTQ0OTU4LCAxNDQ5NjUsIAotICAgIDE0NDk3MywgMTQ0OTgxLCAxNDQ5ODYsIDE0NDk5MSwgMTQ0OTk4LCAxNDUwMDUsIDE0NTAxMiwgMTQ1MDE3LCAxNDUwMjQsIAotICAgIDE0NTAzMSwgMTQ1MDM2LCAxNDUwNDMsIDE0NTA1MCwgMTQ1MDU2LCAxNDUwNjIsIDE0NTA2OCwgMTQ1MDc0LCAxNDUwODIsIAotICAgIDE0NTA5MCwgMTQ1MDk2LCAxNDUxMDQsIDE0NTExMiwgMTQ1MTE3LCAxNDUxMjQsIDE0NTEzMSwgMTQ1MTM2LCAxNDUxNDMsIAotICAgIDE0NTE1MCwgMTQ1MTU3LCAxNDUxNjUsIDE0NTE3MywgMTQ1MTc4LCAxNDUxODUsIDE0NTE5MiwgMTQ1MjAxLCAxNDUyMDgsIAotICAgIDE0NTIxNywgMTQ1MjI4LCAxNDUyMzcsIDE0NTI0NiwgMTQ1MjU1LCAxNDUyNjQsIDE0NTI2NywgMTQ1MjcyLCAxNDUyNzksIAotICAgIDE0NTI4OCwgMTQ1Mjk1LCAxNDUzMDQsIDE0NTMxMSwgMTQ1MzE2LCAxNDUzMjEsIDE0NTMyNCwgMTQ1MzI3LCAxNDUzMzAsIAotICAgIDE0NTMzNywgMTQ1MzQ0LCAxNDUzNTMsIDE0NTM2MiwgMTQ1MzcxLCAxNDUzNzgsIDE0NTM4NSwgMTQ1MzkwLCAxNDU0MDMsIAotICAgIDE0NTQwOCwgMTQ1NDEzLCAxNDU0MTgsIDE0NTQyMywgMTQ1NDI4LCAxNDU0MzMsIDE0NTQzOCwgMTQ1NDQzLCAxNDU0NDYsIAotICAgIDE0NTQ1MSwgMTQ1NDU2LCAxNDU0NjEsIDE0NTQ2NiwgMTQ1NDcxLCAxNDU0NzgsIDE0NTQ4MywgMTQ1NDkwLCAxNDU0OTMsIAotICAgIDE0NTQ5OCwgMTQ1NTAxLCAxNDU1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0NTUwNywgMTQ1NTEyLCAxNDU1MTcsIDE0NTUyMiwgMTQ1NTI3LCAwLCAxNDU1MzIsIDE0NTUzNywgMTQ1NTQyLCAKLSAgICAxNDU1NDcsIDE0NTU1MiwgMTQ1NTU3LCAxNDU1NjIsIDE0NTU2NywgMTQ1NTcyLCAxNDU1NzcsIDE0NTU4MiwgMTQ1NTg3LCAKLSAgICAxNDU1OTIsIDE0NTU5NywgMTQ1NjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU2MDcsIDE0NTYxNCwgMTQ1NjIwLCAKLSAgICAxNDU2MjcsIDE0NTYzNCwgMTQ1NjQxLCAxNDU2NDgsIDE0NTY1NSwgMTQ1NjYyLCAxNDU2NjksIDE0NTY3NiwgMTQ1NjgzLCAKLSAgICAxNDU2OTAsIDE0NTY5NywgMTQ1NzA0LCAxNDU3MTEsIDE0NTcxOCwgMTQ1NzI1LCAxNDU3MzIsIDE0NTczOSwgMTQ1NzQ2LCAKLSAgICAxNDU3NTMsIDE0NTc2MCwgMTQ1NzY3LCAxNDU3NzQsIDE0NTc4MSwgMTQ1Nzg4LCAxNDU3OTUsIDE0NTgwMiwgMTQ1ODA5LCAKLSAgICAxNDU4MTYsIDE0NTgyMywgMTQ1ODMwLCAxNDU4MzcsIDE0NTg0NCwgMTQ1ODUwLCAxNDU4NTYsIDE0NTg2MiwgMTQ1ODY5LCAKLSAgICAxNDU4NzUsIDE0NTg4MiwgMTQ1ODg4LCAxNDU4OTUsIDE0NTkwMiwgMTQ1OTA5LCAxNDU5MTYsIDE0NTkyMywgMTQ1OTMwLCAKLSAgICAxNDU5MzcsIDE0NTk0NCwgMTQ1OTUxLCAxNDU5NTgsIDE0NTk2NSwgMTQ1OTcyLCAxNDU5NzksIDE0NTk4NiwgMTQ1OTkzLCAKLSAgICAxNDYwMDAsIDE0NjAwNywgMTQ2MDE0LCAxNDYwMjEsIDE0NjAyOCwgMTQ2MDM2LCAxNDYwNDMsIDE0NjA1MCwgMTQ2MDU3LCAKLSAgICAxNDYwNjQsIDE0NjA3MSwgMTQ2MDc4LCAxNDYwODUsIDE0NjA5MiwgMTQ2MDk5LCAxNDYxMDYsIDE0NjExMywgMTQ2MTIwLCAKLSAgICAxNDYxMjYsIDE0NjEzMywgMTQ2MTQwLCAxNDYxNDcsIDE0NjE1NCwgMTQ2MTYxLCAxNDYxNjgsIDE0NjE3NSwgMTQ2MTgzLCAKLSAgICAxNDYxOTAsIDE0NjE5NiwgMTQ2MjAzLCAxNDYyMTAsIDE0NjIxNywgMTQ2MjI0LCAxNDYyMzEsIDE0NjIzOCwgMTQ2MjQ1LCAKLSAgICAxNDYyNTIsIDE0NjI1OSwgMTQ2MjY2LCAxNDYyNzMsIDE0NjI4MCwgMTQ2Mjg3LCAxNDYyOTQsIDE0NjMwMSwgMTQ2MzA4LCAKLSAgICAxNDYzMTUsIDE0NjMyMiwgMTQ2MzI5LCAxNDYzMzYsIDE0NjM0MiwgMTQ2MzQ5LCAxNDYzNTYsIDE0NjM2MywgMTQ2MzcwLCAKLSAgICAxNDYzNzcsIDE0NjM4NCwgMTQ2MzkxLCAxNDYzOTgsIDE0NjQwNSwgMTQ2NDEyLCAxNDY0MTksIDE0NjQyNiwgMTQ2NDMzLCAKLSAgICAxNDY0NDAsIDE0NjQ0NywgMTQ2NDU0LCAxNDY0NjEsIDE0NjQ2OCwgMTQ2NDc1LCAxNDY0ODIsIDE0NjQ4OSwgMTQ2NDk2LCAKLSAgICAxNDY1MDQsIDE0NjUxMiwgMTQ2NTIwLCAxNDY1MjcsIDE0NjUzNCwgMTQ2NTQxLCAxNDY1NDgsIDE0NjU1NSwgMTQ2NTYyLCAKLSAgICAxNDY1NjksIDE0NjU3NiwgMTQ2NTgzLCAxNDY1OTAsIDE0NjU5NiwgMTQ2NjAzLCAxNDY2MTAsIDE0NjYxNywgMTQ2NjI0LCAKLSAgICAxNDY2MzEsIDE0NjYzOCwgMTQ2NjQ1LCAxNDY2NTIsIDE0NjY1OSwgMTQ2NjY2LCAxNDY2NzMsIDE0NjY4MCwgMTQ2Njg3LCAKLSAgICAxNDY2OTQsIDE0NjcwMiwgMTQ2NzEwLCAxNDY3MTgsIDE0NjcyNSwgMTQ2NzMyLCAxNDY3MzksIDE0Njc0NiwgMTQ2NzUzLCAKLSAgICAxNDY3NjAsIDE0Njc2NywgMTQ2Nzc0LCAxNDY3ODEsIDE0Njc4OCwgMTQ2Nzk1LCAxNDY4MDIsIDE0NjgwOSwgMTQ2ODE2LCAKLSAgICAxNDY4MjMsIDE0NjgzMCwgMTQ2ODM3LCAxNDY4NDQsIDE0Njg1MSwgMTQ2ODU4LCAxNDY4NjUsIDE0Njg3MiwgMTQ2ODc5LCAKLSAgICAxNDY4ODYsIDE0Njg5MywgMTQ2OTAwLCAxNDY5MDcsIDE0NjkxNCwgMTQ2OTIxLCAxNDY5MjgsIDE0NjkzNSwgMTQ2OTQyLCAKLSAgICAxNDY5NDksIDE0Njk1NiwgMTQ2OTYzLCAxNDY5NzAsIDE0Njk3NywgMCwgMCwgMTQ2OTg0LCAxNDY5ODgsIDE0Njk5MiwgCi0gICAgMTQ2OTk2LCAxNDcwMDAsIDE0NzAwNCwgMTQ3MDA4LCAxNDcwMTMsIDE0NzAxNywgMTQ3MDIyLCAxNDcwMjgsIDE0NzAzNCwgCi0gICAgMTQ3MDQwLCAxNDcwNDYsIDE0NzA1NCwgMTQ3MDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDcwNjgsIDE0NzA3MiwgMTQ3MDc2LCAxNDcwODAsIDAsIDE0NzA4NCwgMTQ3MDg4LCAxNDcwOTIsIAotICAgIDE0NzA5NiwgMTQ3MTAwLCAxNDcxMDQsIDE0NzEwOCwgMTQ3MTEyLCAxNDcxMTYsIDE0NzEyMCwgMTQ3MTI0LCAxNDcxMjgsIAotICAgIDE0NzEzMiwgMTQ3MTM2LCAxNDcxNDAsIDE0NzE0NCwgMTQ3MTQ4LCAxNDcxNTIsIDE0NzE1NiwgMTQ3MTYwLCAxNDcxNjQsIAotICAgIDE0NzE2OCwgMTQ3MTcyLCAxNDcxNzYsIDE0NzE4MiwgMTQ3MTg4LCAxNDcxOTQsIDAsIDE0NzIwMCwgMTQ3MjA1LCAwLCAKLSAgICAxNDcyMTAsIDAsIDAsIDE0NzIxNSwgMCwgMTQ3MjIwLCAxNDcyMjUsIDE0NzIzMCwgMTQ3MjM1LCAxNDcyNDAsIDE0NzI0NSwgCi0gICAgMTQ3MjUwLCAxNDcyNTUsIDE0NzI2MCwgMTQ3MjY1LCAwLCAxNDcyNzAsIDE0NzI3NSwgMTQ3MjgwLCAxNDcyODUsIDAsIAotICAgIDE0NzI5MCwgMCwgMTQ3Mjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDczMDAsIDAsIDAsIDAsIDAsIDE0NzMwNiwgMCwgCi0gICAgMTQ3MzEyLCAwLCAxNDczMTgsIDAsIDE0NzMyNCwgMTQ3MzMwLCAxNDczMzYsIDAsIDE0NzM0MiwgMTQ3MzQ4LCAwLCAKLSAgICAxNDczNTQsIDAsIDAsIDE0NzM2MCwgMCwgMTQ3MzY2LCAwLCAxNDczNzIsIDAsIDE0NzM3OCwgMCwgMTQ3Mzg2LCAwLCAKLSAgICAxNDczOTQsIDE0NzQwMCwgMCwgMTQ3NDA2LCAwLCAwLCAxNDc0MTIsIDE0NzQxOCwgMTQ3NDI0LCAxNDc0MzAsIDAsIAotICAgIDE0NzQzNiwgMTQ3NDQyLCAxNDc0NDgsIDE0NzQ1NCwgMTQ3NDYwLCAxNDc0NjYsIDE0NzQ3MiwgMCwgMTQ3NDc4LCAKLSAgICAxNDc0ODQsIDE0NzQ5MCwgMTQ3NDk2LCAwLCAxNDc1MDIsIDE0NzUwOCwgMTQ3NTE0LCAxNDc1MjAsIDAsIDE0NzUyOCwgMCwgCi0gICAgMTQ3NTM2LCAxNDc1NDIsIDE0NzU0OCwgMTQ3NTU0LCAxNDc1NjAsIDE0NzU2NiwgMTQ3NTcyLCAxNDc1NzgsIDE0NzU4NCwgCi0gICAgMTQ3NTkwLCAwLCAxNDc1OTYsIDE0NzYwMiwgMTQ3NjA4LCAxNDc2MTQsIDE0NzYyMCwgMTQ3NjI2LCAxNDc2MzIsIAotICAgIDE0NzYzOCwgMTQ3NjQ0LCAxNDc2NTAsIDE0NzY1NiwgMTQ3NjYyLCAxNDc2NjgsIDE0NzY3NCwgMTQ3NjgwLCAxNDc2ODYsIAotICAgIDE0NzY5MiwgMCwgMCwgMCwgMCwgMCwgMTQ3Njk4LCAxNDc3MDMsIDE0NzcwOCwgMCwgMTQ3NzEzLCAxNDc3MTgsIDE0NzcyMywgCi0gICAgMTQ3NzI4LCAxNDc3MzMsIDAsIDE0NzczOCwgMTQ3NzQzLCAxNDc3NDgsIDE0Nzc1MywgMTQ3NzU4LCAxNDc3NjMsIAotICAgIDE0Nzc2OCwgMTQ3NzczLCAxNDc3NzgsIDE0Nzc4MywgMTQ3Nzg4LCAxNDc3OTMsIDE0Nzc5OCwgMTQ3ODAzLCAxNDc4MDgsIAotICAgIDE0NzgxMywgMTQ3ODE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MTIsIDE1MDYxOSwgMTUwNjI1LCAxNTA2MzIsIDE1MDYzOSwgCisgICAgMTUwNjQ2LCAxNTA2NTMsIDE1MDY2MCwgMTUwNjY3LCAxNTA2NzQsIDE1MDY4MSwgMTUwNjg4LCAxNTA2OTUsIDE1MDcwMiwgCisgICAgMTUwNzA5LCAxNTA3MTYsIDE1MDcyMywgMTUwNzMwLCAxNTA3MzcsIDE1MDc0NCwgMTUwNzUxLCAxNTA3NTgsIDE1MDc2NSwgCisgICAgMTUwNzcyLCAxNTA3NzksIDE1MDc4NiwgMTUwNzkzLCAxNTA4MDAsIDE1MDgwNywgMTUwODE0LCAxNTA4MjEsIDE1MDgyOCwgCisgICAgMTUwODM1LCAxNTA4NDIsIDE1MDg0OSwgMTUwODU1LCAxNTA4NjEsIDE1MDg2NywgMTUwODc0LCAxNTA4ODAsIDE1MDg4NywgCisgICAgMTUwODkzLCAxNTA5MDAsIDE1MDkwNywgMTUwOTE0LCAxNTA5MjEsIDE1MDkyOCwgMTUwOTM1LCAxNTA5NDIsIDE1MDk0OSwgCisgICAgMTUwOTU2LCAxNTA5NjMsIDE1MDk3MCwgMTUwOTc3LCAxNTA5ODQsIDE1MDk5MSwgMTUwOTk3LCAxNTEwMDQsIDE1MTAxMSwgCisgICAgMTUxMDE4LCAxNTEwMjUsIDE1MTAzMiwgMTUxMDQwLCAxNTEwNDcsIDE1MTA1NCwgMTUxMDYxLCAxNTEwNjgsIDE1MTA3NSwgCisgICAgMTUxMDgyLCAxNTEwODksIDE1MTA5NiwgMTUxMTAzLCAxNTExMTAsIDE1MTExNywgMTUxMTI0LCAxNTExMzAsIDE1MTEzNywgCisgICAgMTUxMTQ0LCAxNTExNTEsIDE1MTE1OCwgMTUxMTY1LCAxNTExNzIsIDE1MTE3OSwgMTUxMTg3LCAxNTExOTQsIDE1MTIwMCwgCisgICAgMTUxMjA3LCAxNTEyMTQsIDE1MTIyMSwgMTUxMjI4LCAxNTEyMzUsIDE1MTI0MiwgMTUxMjQ5LCAxNTEyNTYsIDE1MTI2MywgCisgICAgMTUxMjcwLCAxNTEyNzcsIDE1MTI4NCwgMTUxMjkxLCAxNTEyOTgsIDE1MTMwNSwgMTUxMzEyLCAxNTEzMTksIDE1MTMyNiwgCisgICAgMTUxMzMzLCAxNTEzNDAsIDE1MTM0NiwgMTUxMzUzLCAxNTEzNjAsIDE1MTM2NywgMTUxMzc0LCAxNTEzODEsIDE1MTM4OCwgCisgICAgMTUxMzk1LCAxNTE0MDIsIDE1MTQwOSwgMTUxNDE2LCAxNTE0MjMsIDE1MTQzMCwgMTUxNDM3LCAxNTE0NDQsIDE1MTQ1MSwgCisgICAgMTUxNDU4LCAxNTE0NjUsIDE1MTQ3MiwgMTUxNDc5LCAxNTE0ODYsIDE1MTQ5MywgMTUxNTAwLCAxNTE1MDgsIDE1MTUxNiwgCisgICAgMTUxNTI0LCAxNTE1MzEsIDE1MTUzOCwgMTUxNTQ1LCAxNTE1NTIsIDE1MTU1OSwgMTUxNTY2LCAxNTE1NzMsIDE1MTU4MCwgCisgICAgMTUxNTg3LCAxNTE1OTQsIDE1MTYwMCwgMTUxNjA3LCAxNTE2MTQsIDE1MTYyMSwgMTUxNjI4LCAxNTE2MzUsIDE1MTY0MiwgCisgICAgMTUxNjQ5LCAxNTE2NTYsIDE1MTY2MywgMTUxNjcwLCAxNTE2NzcsIDE1MTY4NCwgMTUxNjkxLCAxNTE2OTgsIDE1MTcwNiwgCisgICAgMTUxNzE0LCAxNTE3MjIsIDE1MTcyOSwgMTUxNzM2LCAxNTE3NDMsIDE1MTc1MCwgMTUxNzU3LCAxNTE3NjQsIDE1MTc3MSwgCisgICAgMTUxNzc4LCAxNTE3ODUsIDE1MTc5MiwgMTUxNzk5LCAxNTE4MDYsIDE1MTgxMywgMTUxODIwLCAxNTE4MjcsIDE1MTgzNCwgCisgICAgMTUxODQxLCAxNTE4NDgsIDE1MTg1NSwgMTUxODYyLCAxNTE4NjksIDE1MTg3NiwgMTUxODgzLCAxNTE4OTAsIDE1MTg5NywgCisgICAgMTUxOTA0LCAxNTE5MTEsIDE1MTkxOCwgMTUxOTI1LCAxNTE5MzIsIDE1MTkzOSwgMTUxOTQ2LCAxNTE5NTMsIDE1MTk2MCwgCisgICAgMTUxOTY3LCAxNTE5NzQsIDE1MTk4MSwgMCwgMCwgMTUxOTg4LCAxNTE5OTIsIDE1MTk5NiwgMTUyMDAwLCAxNTIwMDQsIAorICAgIDE1MjAwOCwgMTUyMDEyLCAxNTIwMTcsIDE1MjAyMSwgMTUyMDI2LCAxNTIwMzIsIDE1MjAzOCwgMTUyMDQ0LCAxNTIwNTAsIAorICAgIDE1MjA1OCwgMTUyMDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTIwNzIsIAorICAgIDE1MjA3OCwgMTUyMDg0LCAxNTIwOTAsIDE1MjA5NiwgMTUyMTAyLCAxNTIxMDgsIDE1MjExNCwgMTUyMTIwLCAxNTIxMjYsIAorICAgIDE1MjEzMSwgMTUyMTM3LCAxNTIxNDIsIDE1MjE0NywgMTUyMTUzLCAxNTIxNTksIDE1MjE2NSwgMTUyMTcxLCAxNTIxNzcsIAorICAgIDE1MjE4MiwgMTUyMTg3LCAxNTIxOTMsIDE1MjE5OSwgMTUyMjA0LCAxNTIyMTAsIDE1MjIxNiwgMTUyMjIyLCAxNTIyMjgsIAorICAgIDE1MjIzNCwgMTUyMjQwLCAxNTIyNDYsIDE1MjI1MiwgMTUyMjU4LCAxNTIyNjQsIDE1MjI3MCwgMTUyMjc2LCAxNTIyODIsIAorICAgIDE1MjI4OCwgMTUyMjk0LCAxNTIzMDAsIDE1MjMwNiwgMTUyMzEyLCAxNTIzMTgsIDE1MjMyNCwgMTUyMzI5LCAxNTIzMzUsIAorICAgIDE1MjM0MCwgMTUyMzQ1LCAxNTIzNTEsIDE1MjM1NywgMTUyMzYzLCAxNTIzNjksIDE1MjM3NSwgMTUyMzgwLCAxNTIzODUsIAorICAgIDE1MjM5MSwgMTUyMzk3LCAxNTI0MDIsIDE1MjQwOCwgMTUyNDE0LCAxNTI0MjAsIDE1MjQyNiwgMTUyNDMyLCAxNTI0MzgsIAorICAgIDE1MjQ0NCwgMTUyNDUwLCAxNTI0NTYsIDE1MjQ2MiwgMTUyNDY4LCAxNTI0NzQsIDE1MjQ3OSwgMTUyNDg0LCAxNTI0ODgsIAorICAgIDE1MjQ5MywgMTUyNTAwLCAwLCAwLCAwLCAwLCAwLCAxNTI1MDQsIDE1MjUwOSwgMTUyNTEzLCAxNTI1MTcsIDE1MjUyMSwgCisgICAgMTUyNTI1LCAxNTI1MjksIDE1MjUzMywgMTUyNTM4LCAxNTI1NDIsIDAsIDAsIDAsIDAsIDE1MjU0NywgMTUyNTUzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc4MjMsIDE0NzgzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQ3ODQxLCAxNDc4NDgsIDE0Nzg1NSwgMTQ3ODYyLCAxNDc4NjgsIDE0Nzg3NSwgMTQ3ODgyLCAKLSAgICAxNDc4ODgsIDE0Nzg5NSwgMTQ3OTAyLCAxNDc5MDksIDE0NzkxNywgMTQ3OTI1LCAxNDc5MzMsIDE0Nzk0MSwgMTQ3OTQ5LCAKLSAgICAxNDc5NTcsIDE0Nzk2NCwgMTQ3OTcxLCAxNDc5NzgsIDE0Nzk4NiwgMTQ3OTk0LCAxNDgwMDIsIDE0ODAxMCwgMTQ4MDE4LCAKLSAgICAxNDgwMjYsIDE0ODAzMywgMTQ4MDQwLCAxNDgwNDcsIDE0ODA1NSwgMTQ4MDYzLCAxNDgwNzEsIDE0ODA3OSwgMTQ4MDg3LCAKLSAgICAxNDgwOTUsIDE0ODEwMCwgMTQ4MTA1LCAxNDgxMTAsIDE0ODExNSwgMTQ4MTIwLCAxNDgxMjUsIDE0ODEzMCwgMTQ4MTM1LCAKLSAgICAxNDgxNDAsIDAsIDAsIDAsIDAsIDE0ODE0NSwgMTQ4MTUxLCAxNDgxNTUsIDE0ODE1OSwgMTQ4MTYzLCAxNDgxNjcsIAotICAgIDE0ODE3MSwgMTQ4MTc1LCAxNDgxNzksIDE0ODE4MywgMTQ4MTg3LCAxNDgxOTEsIDE0ODE5NSwgMTQ4MTk5LCAxNDgyMDMsIAotICAgIDE0ODIwNywgMTQ4MjExLCAxNDgyMTUsIDE0ODIxOSwgMTQ4MjIzLCAxNDgyMjcsIDE0ODIzMSwgMTQ4MjM1LCAxNDgyMzksIAotICAgIDE0ODI0MywgMTQ4MjQ3LCAxNDgyNTEsIDE0ODI1NSwgMTQ4MjU5LCAxNDgyNjMsIDE0ODI2NywgMTQ4MjcxLCAxNDgyNzUsIAotICAgIDE0ODI3OSwgMTQ4MjgzLCAxNDgyODcsIDE0ODI5MSwgMTQ4Mjk1LCAxNDgyOTksIDE0ODMwMywgMTQ4MzA3LCAxNDgzMTEsIAotICAgIDE0ODMxNSwgMTQ4MzE5LCAxNDgzMjMsIDE0ODMyNywgMTQ4MzMxLCAxNDgzMzUsIDE0ODMzOSwgMTQ4MzQzLCAxNDgzNDcsIAotICAgIDE0ODM1MiwgMTQ4MzU2LCAxNDgzNjAsIDE0ODM2NCwgMTQ4MzY4LCAxNDgzNzIsIDE0ODM3NiwgMTQ4MzgwLCAxNDgzODQsIAotICAgIDE0ODM4OCwgMTQ4MzkyLCAxNDgzOTYsIDE0ODQwMCwgMTQ4NDA0LCAxNDg0MDgsIDE0ODQxMiwgMTQ4NDE2LCAxNDg0MjAsIAotICAgIDE0ODQyNCwgMTQ4NDI4LCAxNDg0MzIsIDE0ODQzNiwgMTQ4NDQwLCAxNDg0NDQsIDE0ODQ0OCwgMTQ4NDUyLCAxNDg0NTYsIAotICAgIDE0ODQ2MCwgMTQ4NDY0LCAxNDg0NjgsIDE0ODQ3MiwgMTQ4NDc2LCAxNDg0ODAsIDE0ODQ4NCwgMTQ4NDg4LCAxNDg0OTIsIAotICAgIDE0ODQ5NiwgMTQ4NTAwLCAxNDg1MDQsIDE0ODUwOCwgMTQ4NTEyLCAxNDg1MTYsIDE0ODUyMCwgMTQ4NTI0LCAxNDg1MjgsIAotICAgIDE0ODUzMiwgMTQ4NTM2LCAxNDg1NDAsIDE0ODU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQ4NTQ4LCAxNDg1NTQsIDE0ODU2MywgMTQ4NTcxLCAxNDg1NzksIDE0ODU4OCwgMTQ4NTk3LCAxNDg2MDYsIDE0ODYxNSwgCi0gICAgMTQ4NjI0LCAxNDg2MzMsIDE0ODY0MiwgMTQ4NjUxLCAxNDg2NjAsIDE0ODY2OSwgMCwgMCwgMTQ4Njc4LCAxNDg2ODcsIAotICAgIDE0ODY5NSwgMTQ4NzAzLCAxNDg3MTIsIDE0ODcyMSwgMTQ4NzMwLCAxNDg3MzksIDE0ODc0OCwgMTQ4NzU3LCAxNDg3NjYsIAotICAgIDE0ODc3NSwgMTQ4Nzg0LCAxNDg3OTMsIDE0ODgwMiwgMCwgMTQ4ODEwLCAxNDg4MTksIDE0ODgyNywgMTQ4ODM1LCAKLSAgICAxNDg4NDQsIDE0ODg1MywgMTQ4ODYyLCAxNDg4NzEsIDE0ODg4MCwgMTQ4ODg5LCAxNDg4OTgsIDE0ODkwNywgMTQ4OTE2LCAKLSAgICAxNDg5MjUsIDE0ODkzNCwgMCwgMTQ4OTQxLCAxNDg5NTAsIDE0ODk1OCwgMTQ4OTY2LCAxNDg5NzUsIDE0ODk4NCwgCi0gICAgMTQ4OTkzLCAxNDkwMDIsIDE0OTAxMSwgMTQ5MDIwLCAxNDkwMjksIDE0OTAzOCwgMTQ5MDQ3LCAxNDkwNTYsIDE0OTA2NSwgCi0gICAgMTQ5MDcyLCAxNDkwNzgsIDE0OTA4NCwgMTQ5MDkwLCAxNDkwOTYsIDE0OTEwMiwgMTQ5MTA4LCAxNDkxMTQsIDE0OTEyMCwgCi0gICAgMTQ5MTI2LCAxNDkxMzIsIDE0OTEzOCwgMTQ5MTQ0LCAxNDkxNTAsIDE0OTE1NiwgMTQ5MTYyLCAxNDkxNjgsIDE0OTE3NCwgCi0gICAgMTQ5MTgwLCAxNDkxODYsIDE0OTE5MiwgMTQ5MTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDkyMDQsIAotICAgIDE0OTIxMSwgMTQ5MjE2LCAxNDkyMjAsIDE0OTIyNCwgMTQ5MjI4LCAxNDkyMzMsIDE0OTIzOCwgMTQ5MjQzLCAxNDkyNDgsIAotICAgIDE0OTI1MywgMTQ5MjU4LCAxNDkyNjUsIDAsIDAsIDAsIDE0OTI3MywgMTQ5Mjc4LCAxNDkyODQsIDE0OTI5MCwgMTQ5Mjk2LCAKLSAgICAxNDkzMDEsIDE0OTMwNywgMTQ5MzEzLCAxNDkzMTksIDE0OTMyNCwgMTQ5MzMwLCAxNDkzMzYsIDE0OTM0MSwgMTQ5MzQ3LCAKLSAgICAxNDkzNTMsIDE0OTM1OCwgMTQ5MzY0LCAxNDkzNzAsIDE0OTM3NSwgMTQ5MzgwLCAxNDkzODYsIDE0OTM5MSwgMTQ5Mzk3LCAKLSAgICAxNDk0MDMsIDE0OTQwOSwgMTQ5NDE1LCAxNDk0MjEsIDE0OTQzMSwgMTQ5NDM4LCAxNDk0NDQsIDE0OTQ0NywgMCwgCi0gICAgMTQ5NDUwLCAxNDk0NTUsIDE0OTQ2MSwgMTQ5NDY3LCAxNDk0NzMsIDE0OTQ3OCwgMTQ5NDg0LCAxNDk0OTAsIDE0OTQ5NiwgCi0gICAgMTQ5NTAxLCAxNDk1MDcsIDE0OTUxMywgMTQ5NTE4LCAxNDk1MjQsIDE0OTUzMCwgMTQ5NTM1LCAxNDk1NDEsIDE0OTU0NywgCi0gICAgMTQ5NTUyLCAxNDk1NTcsIDE0OTU2MywgMTQ5NTY4LCAxNDk1NzQsIDE0OTU4MCwgMTQ5NTg2LCAxNDk1OTIsIDE0OTU5OCwgCi0gICAgMTQ5NjAxLCAxNDk2MDQsIDE0OTYwNywgMTQ5NjEwLCAxNDk2MTMsIDE0OTYxNiwgMTQ5NjIyLCAxNDk2MjksIDE0OTYzNiwgCi0gICAgMTQ5NjQzLCAxNDk2NDksIDE0OTY1NiwgMTQ5NjYzLCAxNDk2NzAsIDE0OTY3NiwgMTQ5NjgzLCAxNDk2OTAsIDE0OTY5NiwgCi0gICAgMTQ5NzAzLCAxNDk3MTAsIDE0OTcxNiwgMTQ5NzIzLCAxNDk3MzAsIDE0OTczNiwgMTQ5NzQyLCAxNDk3NDksIDE0OTc1NSwgCi0gICAgMTQ5NzYyLCAxNDk3NjksIDE0OTc3NiwgMTQ5NzgzLCAxNDk3OTAsIDE0OTc5NSwgMCwgMCwgMCwgMCwgMTQ5ODAwLCAKLSAgICAxNDk4MDYsIDE0OTgxMywgMTQ5ODIwLCAxNDk4MjcsIDE0OTgzMywgMTQ5ODQwLCAxNDk4NDcsIDE0OTg1NCwgMTQ5ODYwLCAKLSAgICAxNDk4NjcsIDE0OTg3NCwgMTQ5ODgwLCAxNDk4ODcsIDE0OTg5NCwgMTQ5OTAwLCAxNDk5MDcsIDE0OTkxNCwgMTQ5OTIwLCAKLSAgICAxNDk5MjYsIDE0OTkzMywgMTQ5OTM5LCAxNDk5NDYsIDE0OTk1MywgMTQ5OTYwLCAxNDk5NjcsIDE0OTk3NCwgMTQ5OTgzLCAKLSAgICAxNDk5ODcsIDE0OTk5MCwgMTQ5OTk0LCAxNDk5OTgsIDE1MDAwMiwgMTUwMDA1LCAxNTAwMDgsIDE1MDAxMSwgMTUwMDE0LCAKLSAgICAxNTAwMTcsIDE1MDAyMCwgMTUwMDIzLCAxNTAwMjYsIDE1MDAyOSwgMTUwMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAwMzgsIDE1MDA0NSwgCi0gICAgMTUwMDUzLCAxNTAwNjEsIDE1MDA2OSwgMTUwMDc2LCAxNTAwODQsIDE1MDA5MiwgMTUwMTAwLCAxNTAxMDcsIDE1MDExNSwgCi0gICAgMTUwMTIzLCAxNTAxMzAsIDE1MDEzOCwgMTUwMTQ2LCAxNTAxNTMsIDE1MDE2MSwgMTUwMTY5LCAxNTAxNzYsIDE1MDE4MywgCi0gICAgMTUwMTkxLCAxNTAxOTgsIDE1MDIwNiwgMTUwMjE0LCAxNTAyMjIsIDE1MDIzMCwgMTUwMjM4LCAxNTAyNDIsIDE1MDI0NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMjUwLCAxNTAyNTYsIDE1MDI2MiwgMTUwMjY4LCAKLSAgICAxNTAyNzIsIDE1MDI3OCwgMTUwMjg0LCAxNTAyOTAsIDE1MDI5NiwgMTUwMzAyLCAxNTAzMDgsIDE1MDMxNCwgMTUwMzIwLCAKLSAgICAxNTAzMjYsIDE1MDMzMiwgMTUwMzM4LCAxNTAzNDQsIDE1MDM1MCwgMTUwMzU2LCAxNTAzNjIsIDE1MDM2OCwgMTUwMzc0LCAKLSAgICAxNTAzODAsIDE1MDM4NiwgMTUwMzkyLCAxNTAzOTgsIDE1MDQwNCwgMTUwNDEwLCAxNTA0MTYsIDE1MDQyMiwgMTUwNDI4LCAKLSAgICAxNTA0MzQsIDE1MDQ0MCwgMTUwNDQ2LCAxNTA0NTIsIDE1MDQ1OCwgMTUwNDY0LCAxNTA0NzAsIDE1MDQ3NiwgMTUwNDgyLCAKLSAgICAxNTA0ODgsIDE1MDQ5NCwgMTUwNTAwLCAwLCAwLCAwLCAwLCAwLCAxNTA1MDYsIDE1MDUxNywgMTUwNTI4LCAxNTA1MzksIAotICAgIDE1MDU1MCwgMTUwNTYxLCAxNTA1NzIsIDE1MDU4MywgMTUwNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MDUsIAotICAgIDE1MDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyNTU5LCAxNTI1NjMsIDE1MjU2NywgMTUyNTcxLCAKKyAgICAwLCAxNTI1NzUsIDE1MjU3OSwgMTUyNTgzLCAxNTI1ODcsIDE1MjU5MSwgMTUyNTk1LCAxNTI1OTksIDE1MjYwMywgCisgICAgMTUyNjA3LCAxNTI2MTEsIDE1MjYxNSwgMTUyNjE5LCAxNTI2MjMsIDE1MjYyNywgMTUyNjMxLCAxNTI2MzUsIDE1MjYzOSwgCisgICAgMTUyNjQzLCAxNTI2NDcsIDE1MjY1MSwgMTUyNjU1LCAxNTI2NTksIDE1MjY2MywgMTUyNjY3LCAxNTI2NzMsIDE1MjY3OSwgCisgICAgMTUyNjg1LCAwLCAxNTI2OTEsIDE1MjY5NiwgMCwgMTUyNzAxLCAwLCAwLCAxNTI3MDYsIDAsIDE1MjcxMSwgMTUyNzE2LCAKKyAgICAxNTI3MjEsIDE1MjcyNiwgMTUyNzMxLCAxNTI3MzYsIDE1Mjc0MSwgMTUyNzQ2LCAxNTI3NTEsIDE1Mjc1NiwgMCwgCisgICAgMTUyNzYxLCAxNTI3NjYsIDE1Mjc3MSwgMTUyNzc2LCAwLCAxNTI3ODEsIDAsIDE1Mjc4NiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUyNzkxLCAwLCAwLCAwLCAwLCAxNTI3OTcsIDAsIDE1MjgwMywgMCwgMTUyODA5LCAwLCAxNTI4MTUsIDE1MjgyMSwgCisgICAgMTUyODI3LCAwLCAxNTI4MzMsIDE1MjgzOSwgMCwgMTUyODQ1LCAwLCAwLCAxNTI4NTEsIDAsIDE1Mjg1NywgMCwgMTUyODYzLCAKKyAgICAwLCAxNTI4NjksIDAsIDE1Mjg3NywgMCwgMTUyODg1LCAxNTI4OTEsIDAsIDE1Mjg5NywgMCwgMCwgMTUyOTAzLCAxNTI5MDksIAorICAgIDE1MjkxNSwgMTUyOTIxLCAwLCAxNTI5MjcsIDE1MjkzMywgMTUyOTM5LCAxNTI5NDUsIDE1Mjk1MSwgMTUyOTU3LCAKKyAgICAxNTI5NjMsIDAsIDE1Mjk2OSwgMTUyOTc1LCAxNTI5ODEsIDE1Mjk4NywgMCwgMTUyOTkzLCAxNTI5OTksIDE1MzAwNSwgCisgICAgMTUzMDExLCAwLCAxNTMwMTksIDAsIDE1MzAyNywgMTUzMDMzLCAxNTMwMzksIDE1MzA0NSwgMTUzMDUxLCAxNTMwNTcsIAorICAgIDE1MzA2MywgMTUzMDY5LCAxNTMwNzUsIDE1MzA4MSwgMCwgMTUzMDg3LCAxNTMwOTMsIDE1MzA5OSwgMTUzMTA1LCAKKyAgICAxNTMxMTEsIDE1MzExNywgMTUzMTIzLCAxNTMxMjksIDE1MzEzNSwgMTUzMTQxLCAxNTMxNDcsIDE1MzE1MywgMTUzMTU5LCAKKyAgICAxNTMxNjUsIDE1MzE3MSwgMTUzMTc3LCAxNTMxODMsIDAsIDAsIDAsIDAsIDAsIDE1MzE4OSwgMTUzMTk0LCAxNTMxOTksIDAsIAorICAgIDE1MzIwNCwgMTUzMjA5LCAxNTMyMTQsIDE1MzIxOSwgMTUzMjI0LCAwLCAxNTMyMjksIDE1MzIzNCwgMTUzMjM5LCAKKyAgICAxNTMyNDQsIDE1MzI0OSwgMTUzMjU0LCAxNTMyNTksIDE1MzI2NCwgMTUzMjY5LCAxNTMyNzQsIDE1MzI3OSwgMTUzMjg0LCAKKyAgICAxNTMyODksIDE1MzI5NCwgMTUzMjk5LCAxNTMzMDQsIDE1MzMwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzE0LCAxNTMzMjQsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzMzMiwgMTUzMzM5LCAxNTMzNDYsIDE1MzM1MywgCisgICAgMTUzMzU5LCAxNTMzNjYsIDE1MzM3MywgMTUzMzc5LCAxNTMzODYsIDE1MzM5MywgMTUzNDAwLCAxNTM0MDgsIDE1MzQxNiwgCisgICAgMTUzNDI0LCAxNTM0MzIsIDE1MzQ0MCwgMTUzNDQ4LCAxNTM0NTUsIDE1MzQ2MiwgMTUzNDY5LCAxNTM0NzcsIDE1MzQ4NSwgCisgICAgMTUzNDkzLCAxNTM1MDEsIDE1MzUwOSwgMTUzNTE3LCAxNTM1MjQsIDE1MzUzMSwgMTUzNTM4LCAxNTM1NDYsIDE1MzU1NCwgCisgICAgMTUzNTYyLCAxNTM1NzAsIDE1MzU3OCwgMTUzNTg2LCAxNTM1OTEsIDE1MzU5NiwgMTUzNjAxLCAxNTM2MDYsIDE1MzYxMSwgCisgICAgMTUzNjE2LCAxNTM2MjEsIDE1MzYyNiwgMTUzNjMxLCAwLCAwLCAwLCAwLCAxNTM2MzYsIDE1MzY0MiwgMTUzNjQ2LCAKKyAgICAxNTM2NTAsIDE1MzY1NCwgMTUzNjU4LCAxNTM2NjIsIDE1MzY2NiwgMTUzNjcwLCAxNTM2NzQsIDE1MzY3OCwgMTUzNjgyLCAKKyAgICAxNTM2ODYsIDE1MzY5MCwgMTUzNjk0LCAxNTM2OTgsIDE1MzcwMiwgMTUzNzA2LCAxNTM3MTAsIDE1MzcxNCwgMTUzNzE4LCAKKyAgICAxNTM3MjIsIDE1MzcyNiwgMTUzNzMwLCAxNTM3MzQsIDE1MzczOCwgMTUzNzQyLCAxNTM3NDYsIDE1Mzc1MCwgMTUzNzU0LCAKKyAgICAxNTM3NTgsIDE1Mzc2MiwgMTUzNzY2LCAxNTM3NzAsIDE1Mzc3NCwgMTUzNzc4LCAxNTM3ODIsIDE1Mzc4NiwgMTUzNzkwLCAKKyAgICAxNTM3OTQsIDE1Mzc5OCwgMTUzODAyLCAxNTM4MDYsIDE1MzgxMCwgMTUzODE0LCAxNTM4MTgsIDE1MzgyMiwgMTUzODI2LCAKKyAgICAxNTM4MzAsIDE1MzgzNCwgMTUzODM4LCAxNTM4NDMsIDE1Mzg0NywgMTUzODUxLCAxNTM4NTUsIDE1Mzg1OSwgMTUzODYzLCAKKyAgICAxNTM4NjcsIDE1Mzg3MSwgMTUzODc1LCAxNTM4NzksIDE1Mzg4MywgMTUzODg3LCAxNTM4OTEsIDE1Mzg5NSwgMTUzODk5LCAKKyAgICAxNTM5MDMsIDE1MzkwNywgMTUzOTExLCAxNTM5MTUsIDE1MzkxOSwgMTUzOTIzLCAxNTM5MjcsIDE1MzkzMSwgMTUzOTM1LCAKKyAgICAxNTM5MzksIDE1Mzk0MywgMTUzOTQ3LCAxNTM5NTEsIDE1Mzk1NSwgMTUzOTU5LCAxNTM5NjMsIDE1Mzk2NywgMTUzOTcxLCAKKyAgICAxNTM5NzUsIDE1Mzk3OSwgMTUzOTgzLCAxNTM5ODcsIDE1Mzk5MSwgMTUzOTk1LCAxNTM5OTksIDE1NDAwMywgMTU0MDA3LCAKKyAgICAxNTQwMTEsIDE1NDAxNSwgMTU0MDE5LCAxNTQwMjMsIDE1NDAyNywgMTU0MDMxLCAxNTQwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NDAzOSwgMTU0MDQ1LCAxNTQwNTQsIDE1NDA2MiwgMTU0MDcwLCAxNTQwNzksIDE1NDA4OCwgCisgICAgMTU0MDk3LCAxNTQxMDYsIDE1NDExNSwgMTU0MTI0LCAxNTQxMzMsIDE1NDE0MiwgMTU0MTUxLCAxNTQxNjAsIDAsIDAsIAorICAgIDE1NDE2OSwgMTU0MTc4LCAxNTQxODYsIDE1NDE5NCwgMTU0MjAzLCAxNTQyMTIsIDE1NDIyMSwgMTU0MjMwLCAxNTQyMzksIAorICAgIDE1NDI0OCwgMTU0MjU3LCAxNTQyNjYsIDE1NDI3NSwgMTU0Mjg0LCAxNTQyOTMsIDAsIDE1NDMwMSwgMTU0MzEwLCAKKyAgICAxNTQzMTgsIDE1NDMyNiwgMTU0MzM1LCAxNTQzNDQsIDE1NDM1MywgMTU0MzYyLCAxNTQzNzEsIDE1NDM4MCwgMTU0Mzg5LCAKKyAgICAxNTQzOTgsIDE1NDQwNywgMTU0NDE2LCAxNTQ0MjUsIDAsIDE1NDQzMiwgMTU0NDQxLCAxNTQ0NDksIDE1NDQ1NywgCisgICAgMTU0NDY2LCAxNTQ0NzUsIDE1NDQ4NCwgMTU0NDkzLCAxNTQ1MDIsIDE1NDUxMSwgMTU0NTIwLCAxNTQ1MjksIDE1NDUzOCwgCisgICAgMTU0NTQ3LCAxNTQ1NTYsIDE1NDU2MywgMTU0NTY5LCAxNTQ1NzUsIDE1NDU4MSwgMTU0NTg3LCAxNTQ1OTMsIDE1NDU5OSwgCisgICAgMTU0NjA1LCAxNTQ2MTEsIDE1NDYxNywgMTU0NjIzLCAxNTQ2MjksIDE1NDYzNSwgMTU0NjQxLCAxNTQ2NDcsIDE1NDY1MywgCisgICAgMTU0NjU5LCAxNTQ2NjUsIDE1NDY3MSwgMTU0Njc3LCAxNTQ2ODMsIDE1NDY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTU0Njk1LCAxNTQ3MDIsIDE1NDcwNywgMTU0NzExLCAxNTQ3MTUsIDE1NDcxOSwgMTU0NzI0LCAxNTQ3MjksIAorICAgIDE1NDczNCwgMTU0NzM5LCAxNTQ3NDQsIDE1NDc0OSwgMTU0NzU2LCAwLCAwLCAwLCAxNTQ3NjQsIDE1NDc2OSwgMTU0Nzc1LCAKKyAgICAxNTQ3ODEsIDE1NDc4NywgMTU0NzkyLCAxNTQ3OTgsIDE1NDgwNCwgMTU0ODEwLCAxNTQ4MTUsIDE1NDgyMSwgMTU0ODI3LCAKKyAgICAxNTQ4MzIsIDE1NDgzOCwgMTU0ODQ0LCAxNTQ4NDksIDE1NDg1NSwgMTU0ODYxLCAxNTQ4NjYsIDE1NDg3MiwgMTU0ODc4LCAKKyAgICAxNTQ4ODMsIDE1NDg4OSwgMTU0ODk1LCAxNTQ5MDEsIDE1NDkwNywgMTU0OTEzLCAxNTQ5MjQsIDE1NDkzMSwgMTU0OTM3LCAKKyAgICAxNTQ5NDAsIDAsIDE1NDk0MywgMTU0OTQ4LCAxNTQ5NTQsIDE1NDk2MCwgMTU0OTY2LCAxNTQ5NzEsIDE1NDk3NywgCisgICAgMTU0OTgzLCAxNTQ5ODksIDE1NDk5NCwgMTU1MDAwLCAxNTUwMDYsIDE1NTAxMSwgMTU1MDE3LCAxNTUwMjMsIDE1NTAyOCwgCisgICAgMTU1MDM0LCAxNTUwNDAsIDE1NTA0NSwgMTU1MDUxLCAxNTUwNTcsIDE1NTA2MiwgMTU1MDY4LCAxNTUwNzQsIDE1NTA4MCwgCisgICAgMTU1MDg2LCAxNTUwOTIsIDE1NTA5NSwgMTU1MDk4LCAxNTUxMDEsIDE1NTEwNCwgMTU1MTA3LCAxNTUxMTAsIDE1NTExNiwgCisgICAgMTU1MTIzLCAxNTUxMzAsIDE1NTEzNywgMTU1MTQzLCAxNTUxNTAsIDE1NTE1NywgMTU1MTY0LCAxNTUxNzAsIDE1NTE3NywgCisgICAgMTU1MTg0LCAxNTUxOTAsIDE1NTE5NywgMTU1MjA0LCAxNTUyMTAsIDE1NTIxNywgMTU1MjI0LCAxNTUyMzAsIDE1NTIzNywgCisgICAgMTU1MjQ0LCAxNTUyNTAsIDE1NTI1NywgMTU1MjY0LCAxNTUyNzEsIDE1NTI3OCwgMTU1Mjg1LCAxNTUyOTAsIDAsIDAsIDAsIAorICAgIDAsIDE1NTI5NSwgMTU1MzAxLCAxNTUzMDgsIDE1NTMxNSwgMTU1MzIyLCAxNTUzMjgsIDE1NTMzNSwgMTU1MzQyLCAKKyAgICAxNTUzNDksIDE1NTM1NSwgMTU1MzYyLCAxNTUzNjksIDE1NTM3NSwgMTU1MzgyLCAxNTUzODksIDE1NTM5NSwgMTU1NDAyLCAKKyAgICAxNTU0MDksIDE1NTQxNSwgMTU1NDIyLCAxNTU0MjksIDE1NTQzNSwgMTU1NDQyLCAxNTU0NDksIDE1NTQ1NiwgMTU1NDYzLCAKKyAgICAxNTU0NzAsIDE1NTQ3OSwgMTU1NDgzLCAxNTU0ODYsIDE1NTQ5MCwgMTU1NDk0LCAxNTU0OTgsIDE1NTUwMSwgMTU1NTA0LCAKKyAgICAxNTU1MDcsIDE1NTUxMCwgMTU1NTEzLCAxNTU1MTYsIDE1NTUxOSwgMTU1NTIyLCAxNTU1MjUsIDE1NTUzMSwgMTU1NTM0LCAKKyAgICAxNTU1MzgsIDE1NTU0MywgMTU1NTQ3LCAxNTU1NTIsIDE1NTU1NywgMTU1NTYzLCAxNTU1NjksIDE1NTU3NSwgMTU1NTgwLCAKKyAgICAxNTU1ODgsIDE1NTU5NCwgMTU1NTk3LCAxNTU2MDAsIDE1NTYwMywgMTU1NjA2LCAxNTU2MDksIDE1NTYxMiwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTU1NjE1LCAxNTU2MjIsIDE1NTYzMCwgMTU1NjM4LCAxNTU2NDYsIDE1NTY1MywgMTU1NjYxLCAKKyAgICAxNTU2NjksIDE1NTY3NywgMTU1Njg0LCAxNTU2OTIsIDE1NTcwMCwgMTU1NzA3LCAxNTU3MTUsIDE1NTcyMywgMTU1NzMwLCAKKyAgICAxNTU3MzgsIDE1NTc0NiwgMTU1NzUzLCAxNTU3NjEsIDE1NTc2OSwgMTU1Nzc2LCAxNTU3ODQsIDE1NTc5MiwgMTU1ODAwLCAKKyAgICAxNTU4MDgsIDE1NTgxNiwgMTU1ODIwLCAxNTU4MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1NTgyOCwgMTU1ODM0LCAxNTU4NDAsIDE1NTg0NiwgMTU1ODUwLCAxNTU4NTYsIDE1NTg2MiwgMTU1ODY4LCAxNTU4NzQsIAorICAgIDE1NTg4MCwgMTU1ODg2LCAxNTU4OTIsIDE1NTg5OCwgMTU1OTA0LCAxNTU5MTAsIDE1NTkxNiwgMTU1OTIyLCAxNTU5MjgsIAorICAgIDE1NTkzNCwgMTU1OTQwLCAxNTU5NDYsIDE1NTk1MiwgMTU1OTU4LCAxNTU5NjQsIDE1NTk3MCwgMTU1OTc2LCAxNTU5ODIsIAorICAgIDE1NTk4OCwgMTU1OTk0LCAxNTYwMDAsIDE1NjAwNiwgMTU2MDEyLCAxNTYwMTgsIDE1NjAyNCwgMTU2MDMwLCAxNTYwMzYsIAorICAgIDE1NjA0MiwgMTU2MDQ4LCAxNTYwNTQsIDE1NjA2MCwgMTU2MDY2LCAxNTYwNzIsIDE1NjA3OCwgMTU2MDg0LCAwLCAwLCAwLCAKKyAgICAwLCAxNTYwOTAsIDE1NjEwMSwgMTU2MTEyLCAxNTYxMjMsIDE1NjEzNCwgMTU2MTQ1LCAxNTYxNTYsIDE1NjE2NywgCisgICAgMTU2MTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTYxODksIDE1NjE5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjEzLCAxNTA2MTUsIDE1MDYxNywgMTUwNjIxLCAxNTA2MjYsIDE1MDYzMSwgCi0gICAgMTUwNjMzLCAxNTA2MzksIDE1MDY0NCwgMTUwNjQ2LCAxNTA2NTIsIDE1MDY1NiwgMTUwNjU4LCAxNTA2NjIsIDE1MDY2OCwgCi0gICAgMTUwNjc0LCAxNTA2ODAsIDE1MDY4NSwgMTUwNjkwLCAxNTA2OTcsIDE1MDcwNCwgMTUwNzExLCAxNTA3MTYsIDE1MDcyMywgCi0gICAgMTUwNzMwLCAxNTA3MzcsIDE1MDc0MSwgMTUwNzQ4LCAxNTA3NTcsIDE1MDc2NiwgMTUwNzczLCAxNTA3NzgsIDE1MDc4MiwgCi0gICAgMTUwNzg2LCAxNTA3ODgsIDE1MDc5MSwgMTUwNzk0LCAxNTA4MDEsIDE1MDgwOCwgMTUwODE4LCAxNTA4MjMsIDE1MDgyOCwgCi0gICAgMTUwODMzLCAxNTA4MzgsIDE1MDg0MCwgMTUwODQ2LCAxNTA4NTAsIDE1MDg1MiwgMTUwODU0LCAxNTA4NTYsIDE1MDg1OCwgCi0gICAgMTUwODYyLCAxNTA4NjYsIDE1MDg3MCwgMTUwODcyLCAxNTA4NzYsIDE1MDg3OCwgMTUwODgyLCAxNTA4ODQsIDE1MDg4NiwgCi0gICAgMTUwODg4LCAxNTA4OTAsIDE1MDg5NSwgMTUwOTAwLCAxNTA5MDIsIDE1MDkwOCwgMTUwOTEyLCAxNTA5MTYsIDE1MDkyNCwgCi0gICAgMTUwOTI2LCAxNTA5MjgsIDE1MDkzMCwgMTUwOTMyLCAxNTA5MzQsIDE1MDkzNiwgMTUwOTM4LCAxNTA5NDAsIDE1MDk0MiwgCi0gICAgMTUwOTQ0LCAxNTA5NDgsIDE1MDk1MiwgMTUwOTU0LCAxNTA5NTYsIDE1MDk1OCwgMTUwOTYwLCAxNTA5NjIsIDE1MDk2NywgCi0gICAgMTUwOTczLCAxNTA5NzcsIDE1MDk4MSwgMTUwOTg1LCAxNTA5ODksIDE1MDk5NCwgMTUwOTk4LCAxNTEwMDAsIDE1MTAwMiwgCi0gICAgMTUxMDA2LCAxNTEwMTIsIDE1MTAxNCwgMTUxMDE2LCAxNTEwMTgsIDE1MTAyMiwgMTUxMDMxLCAxNTEwMzcsIDE1MTA0MSwgCi0gICAgMTUxMDQ1LCAxNTEwNDcsIDE1MTA0OSwgMTUxMDUyLCAxNTEwNTQsIDE1MTA1NiwgMTUxMDU4LCAxNTEwNjIsIDE1MTA2NCwgCi0gICAgMTUxMDY4LCAxNTEwNzMsIDE1MTA3NSwgMTUxMDgwLCAxNTEwODYsIDE1MTA5MywgMTUxMDk3LCAxNTExMDEsIDE1MTEwNSwgCi0gICAgMTUxMTA5LCAxNTExMTUsIDE1MTExOSwgMTUxMTI3LCAxNTExMzQsIDE1MTEzNiwgMTUxMTM4LCAxNTExNDIsIDE1MTE0NiwgCi0gICAgMTUxMTQ4LCAxNTExNTIsIDE1MTE1NiwgMTUxMTU4LCAxNTExNjIsIDE1MTE2NCwgMTUxMTY4LCAxNTExNzIsIDE1MTE3NiwgCi0gICAgMTUxMTgwLCAxNTExODQsIDE1MTE4OCwgMTUxMTkyLCAxNTExOTYsIDE1MTIwMiwgMTUxMjA2LCAxNTEyMTAsIDE1MTIyMSwgCi0gICAgMTUxMjI2LCAxNTEyMzAsIDE1MTIzNCwgMTUxMjQwLCAxNTEyNDQsIDE1MTI0OCwgMTUxMjUyLCAxNTEyNTksIDE1MTI2NiwgCi0gICAgMTUxMjcwLCAxNTEyNzQsIDE1MTI3OCwgMTUxMjgyLCAxNTEyODYsIDE1MTI5MywgMTUxMjk1LCAxNTEyOTksIDE1MTMwMSwgCi0gICAgMTUxMzAzLCAxNTEzMDcsIDE1MTMxMSwgMTUxMzE1LCAxNTEzMTcsIDE1MTMyMSwgMTUxMzI1LCAxNTEzMjksIDE1MTMzMywgCi0gICAgMTUxMzM3LCAxNTEzMzksIDE1MTM0MywgMTUxMzQ1LCAxNTEzNTEsIDE1MTM1NCwgMTUxMzU5LCAxNTEzNjEsIDE1MTM2MywgCi0gICAgMTUxMzY2LCAxNTEzNjgsIDE1MTM3MCwgMTUxMzczLCAxNTEzODAsIDE1MTM4NywgMTUxMzk0LCAxNTEzOTksIDE1MTQwMywgCi0gICAgMTUxNDA1LCAxNTE0MDcsIDE1MTQwOSwgMTUxNDEzLCAxNTE0MTUsIDE1MTQxOSwgMTUxNDIzLCAxNTE0MjcsIDE1MTQyOSwgCi0gICAgMTUxNDMzLCAxNTE0MzUsIDE1MTQzOSwgMTUxNDQzLCAxNTE0NTAsIDE1MTQ1MiwgMTUxNDYxLCAxNTE0NzAsIDE1MTQ3OSwgCi0gICAgMTUxNDg1LCAxNTE0ODcsIDE1MTQ5MiwgMTUxNDk2LCAxNTE1MDAsIDE1MTUwMiwgMTUxNTA4LCAxNTE1MTIsIDE1MTUxNCwgCi0gICAgMTUxNTE4LCAxNTE1MjIsIDE1MTUyNCwgMTUxNTI4LCAxNTE1MzMsIDE1MTUzNywgMTUxNTQzLCAxNTE1NDksIDE1MTU1MSwgCi0gICAgMTUxNTUzLCAxNTE1NTksIDE1MTU2MSwgMTUxNTY1LCAxNTE1NjksIDE1MTU3MSwgMTUxNTc1LCAxNTE1NzcsIDE1MTU4MSwgCi0gICAgMTUxNTg1LCAxNTE1ODksIDE1MTU5MiwgMTUxNTk1LCAxNTE2MDAsIDE1MTYwNSwgMTUxNjA3LCAxNTE2MTAsIDE1MTYxMiwgCi0gICAgMTUxNjE5LCAxNTE2MjMsIDE1MTYyNSwgMTUxNjMyLCAxNTE2MzksIDE1MTY0NiwgMTUxNjUzLCAxNTE2NjAsIDE1MTY2MiwgCi0gICAgMTUxNjY0LCAxNTE2NjYsIDE1MTY3MCwgMTUxNjcyLCAxNTE2NzQsIDE1MTY3NiwgMTUxNjc4LCAxNTE2ODAsIDE1MTY4MiwgCi0gICAgMTUxNjg0LCAxNTE2ODYsIDE1MTY4OCwgMTUxNjkwLCAxNTE2OTIsIDE1MTY5NCwgMTUxNjk2LCAxNTE2OTgsIDE1MTcwMCwgCi0gICAgMTUxNzAyLCAxNTE3MDQsIDE1MTcwNiwgMTUxNzA4LCAxNTE3MTAsIDE1MTcxMiwgMTUxNzE0LCAxNTE3MTgsIDE1MTcyMCwgCi0gICAgMTUxNzIyLCAxNTE3MjQsIDE1MTcyOCwgMTUxNzMwLCAxNTE3MzQsIDE1MTczNiwgMTUxNzM4LCAxNTE3NDIsIDE1MTc0NiwgCi0gICAgMTUxNzUyLCAxNTE3NTQsIDE1MTc1NiwgMTUxNzU4LCAxNTE3NjAsIDE1MTc2NCwgMTUxNzY4LCAxNTE3NzAsIDE1MTc3NCwgCi0gICAgMTUxNzc4LCAxNTE3ODIsIDE1MTc4NiwgMTUxNzkwLCAxNTE3OTQsIDE1MTc5OCwgMTUxODAyLCAxNTE4MDYsIDE1MTgxMCwgCi0gICAgMTUxODE0LCAxNTE4MTgsIDE1MTgyMiwgMTUxODI2LCAxNTE4MzAsIDE1MTgzNCwgMTUxODM4LCAxNTE4NDIsIDE1MTg0NCwgCi0gICAgMTUxODQ2LCAxNTE4NDgsIDE1MTg1MCwgMTUxODUyLCAxNTE4NTQsIDE1MTg1NiwgMTUxODY0LCAxNTE4NzIsIDE1MTg4MCwgCi0gICAgMTUxODg4LCAxNTE4OTMsIDE1MTg5OCwgMTUxOTAzLCAxNTE5MDcsIDE1MTkxMSwgMTUxOTE2LCAxNTE5MjAsIDE1MTkyMiwgCi0gICAgMTUxOTI2LCAxNTE5MjgsIDE1MTkzMCwgMTUxOTMyLCAxNTE5MzQsIDE1MTkzNiwgMTUxOTM4LCAxNTE5NDAsIDE1MTk0NCwgCi0gICAgMTUxOTQ2LCAxNTE5NDgsIDE1MTk1MCwgMTUxOTU0LCAxNTE5NTgsIDE1MTk2MiwgMTUxOTY2LCAxNTE5NzAsIDE1MTk3MiwgCi0gICAgMTUxOTc4LCAxNTE5ODQsIDE1MTk4NiwgMTUxOTg4LCAxNTE5OTAsIDE1MTk5MiwgMTUxOTk0LCAxNTIwMDMsIDE1MjAxMCwgCi0gICAgMTUyMDE3LCAxNTIwMjEsIDE1MjAyOCwgMTUyMDMzLCAxNTIwNDAsIDE1MjA0OSwgMTUyMDU0LCAxNTIwNTgsIDE1MjA2MiwgCi0gICAgMTUyMDY0LCAxNTIwNjgsIDE1MjA3MCwgMTUyMDc0LCAxNTIwNzgsIDE1MjA4MCwgMTUyMDg0LCAxNTIwODgsIDE1MjA5MiwgCi0gICAgMTUyMDk0LCAxNTIwOTYsIDE1MjEwMiwgMTUyMTA0LCAxNTIxMDYsIDE1MjEwOCwgMTUyMTEyLCAxNTIxMTYsIDE1MjExOCwgCi0gICAgMTUyMTIyLCAxNTIxMjQsIDE1MjEyNiwgMTUyMTI5LCAxNTIxMzMsIDE1MjEzNSwgMTUyMTM5LCAxNTIxNDEsIDE1MjE0MywgCi0gICAgMTUyMTQ4LCAxNTIxNTAsIDE1MjE1NCwgMTUyMTU4LCAxNTIxNjEsIDE1MjE2NSwgMTUyMTY5LCAxNTIxNzMsIDE1MjE3NywgCi0gICAgMTUyMTgxLCAxNTIxODUsIDE1MjE4OSwgMTUyMTk0LCAxNTIxOTgsIDE1MjIwMiwgMTUyMjExLCAxNTIyMTYsIDE1MjIxOSwgCi0gICAgMTUyMjIxLCAxNTIyMjQsIDE1MjIyNywgMTUyMjMyLCAxNTIyMzQsIDE1MjIzNywgMTUyMjQyLCAxNTIyNDYsIDE1MjI0OSwgCi0gICAgMTUyMjUzLCAxNTIyNTcsIDE1MjI2MCwgMTUyMjY1LCAxNTIyNjksIDE1MjI3MywgMTUyMjc3LCAxNTIyODEsIDE1MjI4NywgCi0gICAgMTUyMjkzLCAxNTIyOTksIDE1MjMwNSwgMTUyMzEwLCAxNTIzMjAsIDE1MjMyMiwgMTUyMzI2LCAxNTIzMjgsIDE1MjMzMCwgCi0gICAgMTUyMzM0LCAxNTIzMzgsIDE1MjM0MCwgMTUyMzQ0LCAxNTIzNDksIDE1MjM1NCwgMTUyMzYwLCAxNTIzNjIsIDE1MjM2NiwgCi0gICAgMTUyMzcwLCAxNTIzNzYsIDE1MjM4MiwgMTUyMzg2LCAxNTIzODgsIDE1MjM5MCwgMTUyMzk0LCAxNTIzOTYsIDE1MjQwMCwgCi0gICAgMTUyNDA0LCAxNTI0MDgsIDE1MjQxMCwgMTUyNDEyLCAxNTI0MTksIDE1MjQyMywgMTUyNDI2LCAxNTI0MzAsIDE1MjQzNCwgCi0gICAgMTUyNDM4LCAxNTI0NDAsIDE1MjQ0NCwgMTUyNDQ2LCAxNTI0NDgsIDE1MjQ1MiwgMTUyNDU0LCAxNTI0NTgsIDE1MjQ2MiwgCi0gICAgMTUyNDY4LCAxNTI0NzIsIDE1MjQ3NiwgMTUyNDgwLCAxNTI0ODIsIDE1MjQ4NSwgMTUyNDg5LCAxNTI0OTUsIDE1MjUwNCwgCi0gICAgMTUyNTEzLCAxNTI1MjEsIDE1MjUyOSwgMTUyNTMxLCAxNTI1MzUsIDE1MjUzNywgMTUyNTQxLCAxNTI1NTIsIDE1MjU1NiwgCi0gICAgMTUyNTYyLCAxNTI1NjgsIDE1MjU3MywgMTUyNTc1LCAxNTI1ODAsIDE1MjU4NCwgMTUyNTg2LCAxNTI1ODgsIDE1MjU5MCwgCi0gICAgMTUyNTk0LCAxNTI1OTgsIDE1MjYwMiwgMTUyNjA3LCAxNTI2MTcsIDE1MjYzMiwgMTUyNjQyLCAxNTI2NTIsIDE1MjY1NiwgCi0gICAgMTUyNjYwLCAxNTI2NjYsIDE1MjY2OCwgMTUyNjc2LCAxNTI2ODQsIDE1MjY4NiwgMTUyNjkwLCAxNTI2OTYsIDE1MjcwMiwgCi0gICAgMTUyNzA5LCAxNTI3MTYsIDE1MjcxOCwgMTUyNzIwLCAxNTI3MjMsIDE1MjcyNSwgMTUyNzMxLCAxNTI3MzMsIDE1MjczNiwgCi0gICAgMTUyNzQwLCAxNTI3NDYsIDE1Mjc1MiwgMTUyNzYzLCAxNTI3NjksIDE1Mjc3NSwgMTUyNzgzLCAxNTI3ODcsIDE1Mjc5NSwgCi0gICAgMTUyODAzLCAxNTI4MDksIDE1MjgxNSwgMTUyODIyLCAxNTI4MjQsIDE1MjgyOCwgMTUyODMwLCAxNTI4MzIsIDE1MjgzNywgCi0gICAgMTUyODM5LCAxNTI4NDEsIDE1Mjg0MywgMTUyODQ1LCAxNTI4NDksIDE1Mjg1OSwgMTUyODY1LCAxNTI4NjksIDE1Mjg3MywgCi0gICAgMTUyODc3LCAxNTI4ODMsIDE1Mjg4OSwgMTUyODk1LCAxNTI5MDEsIDE1MjkwNiwgMTUyOTExLCAxNTI5MTcsIDE1MjkyMywgCi0gICAgMTUyOTMwLCAxNTI5MzcsIDE1Mjk0NSwgMTUyOTUzLCAxNTI5NTgsIDE1Mjk2NiwgMTUyOTcwLCAxNTI5NzksIDE1Mjk4OCwgCi0gICAgMTUyOTk0LCAxNTI5OTgsIDE1MzAwMiwgMTUzMDA2LCAxNTMwMDksIDE1MzAxNCwgMTUzMDE2LCAxNTMwMTgsIDE1MzAyMCwgCi0gICAgMTUzMDI3LCAxNTMwMzIsIDE1MzAzOSwgMTUzMDQ2LCAxNTMwNTMsIDE1MzA2MSwgMTUzMDY5LCAxNTMwNzcsIDE1MzA4NSwgCi0gICAgMTUzMDkzLCAxNTMxMDEsIDE1MzEwOSwgMTUzMTE3LCAxNTMxMjUsIDE1MzEzMSwgMTUzMTM3LCAxNTMxNDMsIDE1MzE0OSwgCi0gICAgMTUzMTU1LCAxNTMxNjEsIDE1MzE2NywgMTUzMTczLCAxNTMxNzksIDE1MzE4NSwgMTUzMTkxLCAxNTMxOTcsIDE1MzIwMCwgCi0gICAgMTUzMjA5LCAxNTMyMTgsIDE1MzIyMCwgMTUzMjI3LCAxNTMyMzEsIDE1MzIzMywgMTUzMjM1LCAxNTMyMzksIDE1MzI0NSwgCi0gICAgMTUzMjQ5LCAxNTMyNTEsIDE1MzI2MSwgMTUzMjY3LCAxNTMyNzEsIDE1MzI3MywgMTUzMjc3LCAwLCAxNTMyNzksIAotICAgIDE1MzI4NiwgMTUzMjkzLCAxNTMzMDAsIDE1MzMwNSwgMTUzMzEwLCAxNTMzMTksIDE1MzMyNSwgMTUzMzMwLCAxNTMzMzQsIAotICAgIDE1MzMzOSwgMTUzMzQzLCAxNTMzNTAsIDE1MzM1NCwgMTUzMzU3LCAxNTMzNjIsIDE1MzM2OSwgMTUzMzc2LCAxNTMzODEsIAotICAgIDE1MzM4NiwgMTUzMzkxLCAxNTMzOTgsIDE1MzQwNywgMTUzNDE4LCAxNTM0MjQsIDE1MzQzMCwgMTUzNDM2LCAxNTM0NDYsIAotICAgIDE1MzQ2MSwgMTUzNDcwLCAxNTM0NzgsIDE1MzQ4NiwgMTUzNDk0LCAxNTM1MDIsIDE1MzUxMCwgMTUzNTE4LCAxNTM1MjYsIAotICAgIDE1MzUzNCwgMTUzNTQyLCAxNTM1NTAsIDE1MzU1OCwgMCwgMTUzNTY2LCAxNTM1NzAsIDE1MzU3NSwgMTUzNTgwLCAKLSAgICAxNTM1ODIsIDE1MzU4NiwgMTUzNTk1LCAxNTM2MDQsIDE1MzYxMiwgMTUzNjE2LCAxNTM2MjAsIDE1MzYyNSwgMTUzNjMwLCAKLSAgICAxNTM2MzUsIDE1MzYzNywgMTUzNjQyLCAxNTM2NDYsIDE1MzY0OCwgMTUzNjUyLCAxNTM2NTYsIDE1MzY2MiwgMTUzNjY3LCAKLSAgICAxNTM2NzUsIDE1MzY4MCwgMTUzNjg1LCAxNTM2OTAsIDE1MzY5NywgMTUzNzAwLCAxNTM3MDIsIDE1MzcwNSwgMTUzNzEwLCAKLSAgICAxNTM3MTYsIDE1MzcyMCwgMTUzNzI0LCAxNTM3MzAsIDE1MzczNiwgMTUzNzM4LCAxNTM3NDIsIDE1Mzc0NiwgMTUzNzUwLCAKLSAgICAxNTM3NTQsIDE1Mzc1OCwgMTUzNzYwLCAxNTM3NjIsIDE1Mzc2NCwgMTUzNzY2LCAxNTM3NzIsIDE1Mzc3OCwgMTUzNzgyLCAKLSAgICAxNTM3ODQsIDE1Mzc4NiwgMTUzNzg4LCAxNTM3OTcsIDE1MzgwMSwgMTUzODA4LCAxNTM4MTUsIDE1MzgxNywgMTUzODIwLCAKLSAgICAxNTM4MjQsIDE1MzgzMCwgMTUzODM0LCAxNTM4MzgsIDE1Mzg0MCwgMTUzODQ4LCAxNTM4NTIsIDE1Mzg1NiwgMTUzODYxLCAKLSAgICAxNTM4NjYsIDE1Mzg3MSwgMTUzODc2LCAxNTM4ODEsIDE1Mzg4NiwgMTUzODkxLCAxNTM4OTYsIDE1MzkwMSwgMTUzOTA2LCAKLSAgICAxNTM5MTAsIDE1MzkxNiwgMTUzOTIwLCAxNTM5MjYsIDE1MzkzMSwgMTUzOTM4LCAxNTM5NDQsIDE1Mzk1MiwgMTUzOTU2LCAKLSAgICAxNTM5NjMsIDE1Mzk2NywgMTUzOTcxLCAxNTM5NzUsIDE1Mzk4MCwgMTUzOTg1LCAxNTM5ODcsIDE1Mzk5MSwgMTU0MDAwLCAKLSAgICAxNTQwMDgsIDE1NDAxNiwgMTU0MDI5LCAxNTQwNDIsIDE1NDA1NSwgMTU0MDYyLCAxNTQwNjksIDE1NDA3MywgMTU0MDgyLCAKLSAgICAxNTQwOTAsIDE1NDA5NCwgMTU0MTAzLCAxNTQxMTAsIDE1NDExNCwgMTU0MTE4LCAxNTQxMjIsIDE1NDEyNiwgMTU0MTMzLCAKLSAgICAxNTQxMzcsIDE1NDE0MSwgMTU0MTQ1LCAxNTQxNDksIDE1NDE1NiwgMTU0MTY1LCAxNTQxNzQsIDE1NDE4MSwgMTU0MTkzLCAKLSAgICAxNTQyMDUsIDE1NDIwOSwgMTU0MjEzLCAxNTQyMTcsIDE1NDIyMSwgMTU0MjI1LCAxNTQyMjksIDE1NDIzNywgMTU0MjQ1LCAKLSAgICAxNTQyNTMsIDE1NDI1NywgMTU0MjYxLCAxNTQyNjUsIDE1NDI2OSwgMTU0MjczLCAxNTQyNzcsIDE1NDI4MywgMTU0Mjg5LCAKLSAgICAxNTQyOTMsIDE1NDMwNCwgMTU0MzEyLCAxNTQzMTYsIDE1NDMyMCwgMTU0MzI0LCAxNTQzMjgsIDE1NDMzNCwgMTU0MzQxLCAKLSAgICAxNTQzNTIsIDE1NDM2MiwgMTU0MzcyLCAxNTQzODMsIDE1NDM5MiwgMTU0NDAzLCAxNTQ0MDksIDE1NDQxNSwgMTU0NDIxLCAKLSAgICAxNTQ0MjcsIDE1NDQzMywgMTU0NDM3LCAxNTQ0NDQsIDE1NDQ1MywgMTU0NDYwLCAxNTQ0NjYsIDE1NDQ3MCwgMTU0NDc0LCAKLSAgICAxNTQ0NzgsIDE1NDQ4NywgMTU0NDk5LCAxNTQ1MDMsIDE1NDUxMCwgMTU0NTE3LCAxNTQ1MjQsIDE1NDUzMiwgMTU0NTM5LCAKLSAgICAxNTQ1NDcsIDE1NDU1NiwgMTU0NTY2LCAxNTQ1NzUsIDE1NDU4NSwgMTU0NTk0LCAxNTQ2MDQsIDE1NDYxMywgMTU0NjIzLCAKLSAgICAxNTQ2MzMsIDE1NDY0NCwgMTU0NjU0LCAxNTQ2NjUsIDE1NDY3MiwgMTU0NjgwLCAxNTQ2ODcsIDE1NDY5NSwgMTU0NzAzLCAKLSAgICAxNTQ3MTIsIDE1NDcyMCwgMTU0NzI5LCAxNTQ3MzYsIDE1NDc0OCwgMTU0NzU1LCAxNTQ3NjcsIDE1NDc3MCwgMTU0NzczLCAKLSAgICAxNTQ3NzYsIDE1NDc3OSwgMTU0Nzg1LCAxNTQ3OTIsIDE1NDc5OCwgMTU0ODA1LCAxNTQ4MTAsIDE1NDgxNiwgMTU0ODI4LCAKLSAgICAxNTQ4MzgsIDE1NDg0OSwgMTU0ODU0LCAxNTQ4NTksIDE1NDg2NSwgMTU0ODcwLCAxNTQ4NzcsIDE1NDg4MSwgMTU0ODg3LCAKLSAgICAxNTQ4ODksIDE1NDg5MSwgMTU0ODk1LCAxNTQ4OTksIDE1NDkwMywgMTU0OTEyLCAxNTQ5MTQsIDE1NDkxNiwgMTU0OTE5LCAKLSAgICAxNTQ5MjEsIDE1NDkyMywgMTU0OTI3LCAxNTQ5MjksIDE1NDkzMywgMTU0OTM1LCAxNTQ5MzksIDE1NDk0MSwgMTU0OTQzLCAKLSAgICAxNTQ5NDcsIDE1NDk1MSwgMTU0OTU3LCAxNTQ5NTksIDE1NDk2MywgMTU0OTY1LCAxNTQ5NjksIDE1NDk3MywgMTU0OTc3LCAKLSAgICAxNTQ5ODEsIDE1NDk4MywgMTU0OTg1LCAxNTQ5ODksIDE1NDk5MywgMTU0OTk3LCAxNTUwMDEsIDE1NTAwMywgMTU1MDA1LCAKLSAgICAxNTUwMDcsIDE1NTAxMywgMTU1MDE4LCAxNTUwMjEsIDE1NTAyOSwgMTU1MDM3LCAxNTUwMzksIDE1NTA0NCwgMTU1MDQ3LCAKLSAgICAxNTUwNTIsIDE1NTA2MywgMTU1MDcwLCAxNTUwNzUsIDE1NTA4MCwgMTU1MDgyLCAxNTUwODYsIDE1NTA4OCwgMTU1MDkyLCAKLSAgICAxNTUwOTQsIDE1NTA5OCwgMTU1MTAyLCAxNTUxMDUsIDE1NTEwOCwgMTU1MTEwLCAxNTUxMTMsIDE1NTExNSwgMTU1MTE5LCAKLSAgICAxNTUxMjEsIDE1NTEyMywgMTU1MTI1LCAxNTUxMjksIDE1NTEzMSwgMTU1MTM1LCAxNTUxMzgsIDE1NTE0NSwgMTU1MTQ4LCAKLSAgICAxNTUxNTMsIDE1NTE1NiwgMTU1MTU5LCAxNTUxNjQsIDE1NTE2OCwgMTU1MTcyLCAxNTUxNzYsIDE1NTE3OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1MTgzLCAxNTUxODgsIDE1NTE5MCwgMTU1MTk0LCAKLSAgICAxNTUxOTYsIDE1NTIwMCwgMTU1MjA0LCAxNTUyMTAsIDE1NTIxNCwgMTU1MjE5LCAxNTUyMjIsIDE1NTIyNiwgMTU1MjMwLCAKLSAgICAwLCAwLCAwLCAxNTUyMzQsIDE1NTIzNiwgMTU1MjQyLCAxNTUyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE1NTI1MCwgMTU1MjU1LCAxNTUyNjAsIDE1NTI2NSwgMTU1MjcwLCAxNTUyNzUsIDE1NTI4MCwgMTU1Mjg3LCAKLSAgICAxNTUyOTQsIDE1NTMwMSwgMTU1MzA4LCAxNTUzMTMsIDE1NTMxOCwgMTU1MzIzLCAxNTUzMjgsIDE1NTMzNSwgMTU1MzQxLCAKLSAgICAxNTUzNDgsIDE1NTM1NSwgMTU1MzYyLCAxNTUzNjcsIDE1NTM3MiwgMTU1Mzc3LCAxNTUzODIsIDE1NTM4NywgMTU1Mzk0LCAKLSAgICAxNTU0MDEsIDE1NTQwNiwgMTU1NDExLCAxNTU0MTgsIDE1NTQyNSwgMTU1NDMzLCAxNTU0NDEsIDE1NTQ0OCwgMTU1NDU1LCAKLSAgICAxNTU0NjMsIDE1NTQ3MSwgMTU1NDc5LCAxNTU0ODYsIDE1NTQ5NiwgMTU1NTA3LCAxNTU1MTIsIDE1NTUxOSwgMTU1NTI2LCAKLSAgICAxNTU1MzMsIDE1NTU0MSwgMTU1NTQ5LCAxNTU1NjAsIDE1NTU2OCwgMTU1NTc2LCAxNTU1ODQsIDE1NTU4OSwgMTU1NTk0LCAKLSAgICAxNTU1OTksIDE1NTYwNCwgMTU1NjA5LCAxNTU2MTQsIDE1NTYxOSwgMTU1NjI0LCAxNTU2MjksIDE1NTYzNCwgMTU1NjM5LCAKLSAgICAxNTU2NDQsIDE1NTY1MSwgMTU1NjU2LCAxNTU2NjEsIDE1NTY2OCwgMTU1NjczLCAxNTU2NzgsIDE1NTY4MywgMTU1Njg4LCAKLSAgICAxNTU2OTMsIDE1NTY5OCwgMTU1NzAzLCAxNTU3MDgsIDE1NTcxMywgMTU1NzE4LCAxNTU3MjMsIDE1NTcyOCwgMTU1NzM1LCAKLSAgICAxNTU3NDMsIDE1NTc0OCwgMTU1NzUzLCAxNTU3NjAsIDE1NTc2NSwgMTU1NzcwLCAxNTU3NzUsIDE1NTc4MiwgMTU1Nzg3LCAKLSAgICAxNTU3OTQsIDE1NTc5OSwgMTU1ODA2LCAxNTU4MTEsIDE1NTgyMCwgMTU1ODI5LCAxNTU4MzQsIDE1NTgzOSwgMTU1ODQ0LCAKLSAgICAxNTU4NDksIDE1NTg1NCwgMTU1ODU5LCAxNTU4NjQsIDE1NTg2OSwgMTU1ODc0LCAxNTU4NzksIDE1NTg4NCwgMTU1ODg5LCAKLSAgICAxNTU4OTQsIDE1NTkwMiwgMTU1OTEwLCAxNTU5MTUsIDE1NTkyMCwgMTU1OTI1LCAxNTU5MzAsIDE1NTkzNSwgMTU1OTQxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU5NDcsIDE1NTk1NSwgMTU1OTYzLCAxNTU5NzEsIAotICAgIDE1NTk3OSwgMTU1OTg1LCAxNTU5OTEsIDE1NTk5NSwgMTU1OTk5LCAxNTYwMDUsIDE1NjAxMSwgMTU2MDIwLCAxNTYwMjQsIAotICAgIDE1NjAyOSwgMTU2MDM1LCAxNTYwMzksIDE1NjA0NCwgMTU2MDQ4LCAxNTYwNTIsIDE1NjA1OCwgMTU2MDY0LCAxNTYwNzQsIAotICAgIDE1NjA4MywgMTU2MDg2LCAxNTYwOTEsIDE1NjA5NywgMTU2MTAzLCAxNTYxMTQsIDE1NjEyNCwgMTU2MTI4LCAxNTYxMzMsIAotICAgIDE1NjEzOSwgMTU2MTQ1LCAxNTYxNTQsIDE1NjE1OSwgMTU2MTYzLCAxNTYxNjgsIDE1NjE3MiwgMTU2MTc4LCAxNTYxODQsIAotICAgIDE1NjE5MCwgMTU2MTk0LCAxNTYxOTcsIDE1NjIwMSwgMTU2MjA0LCAxNTYyMDcsIDE1NjIxMiwgMTU2MjE3LCAxNTYyMjQsIAotICAgIDE1NjIzMiwgMTU2MjM5LCAxNTYyNDYsIDE1NjI1NSwgMTU2MjY0LCAxNTYyNzEsIDE1NjI3OSwgMTU2Mjg2LCAxNTYyOTMsIAotICAgIDE1NjMwMiwgMTU2MzExLCAxNTYzMTgsIDE1NjMyNiwgMTU2MzMzLCAxNTYzNDAsIDE1NjM0OSwgMTU2MzU2LCAxNTYzNjQsIAotICAgIDE1NjM3MCwgMTU2Mzc5LCAxNTYzODcsIDE1NjM5NiwgMTU2NDAzLCAxNTY0MTMsIDE1NjQyNCwgMTU2NDMyLCAxNTY0NDAsIAotICAgIDE1NjQ0OSwgMTU2NDU3LCAxNTY0NjUsIDE1NjQ3NCwgMTU2NDgyLCAxNTY0OTIsIDE1NjUwMSwgMTU2NTA5LCAxNTY1MTcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjUyNiwgMTU2NTM0LCAKLSAgICAxNTY1NDIsIDE1NjU1MCwgMTU2NTU4LCAxNTY1NjcsIDE1NjU3NiwgMTU2NTg1LCAxNTY1OTQsIDE1NjYwMywgMTU2NjEyLCAKLSAgICAxNTY2MjEsIDAsIDAsIDAsIDAsIDE1NjYzMCwgMTU2NjM4LCAxNTY2NDYsIDE1NjY1NCwgMTU2NjYyLCAxNTY2NjksIAotICAgIDE1NjY3NiwgMTU2NjgzLCAxNTY2OTAsIDE1NjY5OCwgMTU2NzA2LCAxNTY3MTQsIDE1NjcyMiwgMTU2NzMyLCAxNTY3NDIsIAotICAgIDE1Njc1MiwgMTU2NzYyLCAxNTY3NzEsIDE1Njc4MCwgMTU2Nzg5LCAxNTY3OTgsIDE1NjgwNywgMTU2ODE2LCAxNTY4MjUsIAotICAgIDE1NjgzNCwgMTU2ODQyLCAxNTY4NTAsIDE1Njg1OCwgMTU2ODY2LCAxNTY4NzQsIDE1Njg4MiwgMTU2ODkwLCAxNTY4OTgsIAotICAgIDE1NjkwOCwgMTU2OTE4LCAxNTY5MjgsIDE1NjkzOCwgMTU2OTQyLCAxNTY5NDYsIDE1Njk1MCwgMTU2OTU0LCAxNTY5NTcsIAotICAgIDE1Njk2MCwgMTU2OTYzLCAxNTY5NjYsIDE1Njk3MCwgMTU2OTc0LCAxNTY5NzgsIDE1Njk4MiwgMTU2OTg3LCAxNTY5OTIsIAotICAgIDE1Njk5NywgMTU3MDAyLCAxNTcwMDUsIDE1NzAwOCwgMTU3MDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTcwMTQsIAotICAgIDE1NzAxNywgMTU3MDIwLCAxNTcwMjMsIDE1NzAyNiwgMTU3MDMxLCAxNTcwMzYsIDE1NzA0MiwgMTU3MDQ4LCAxNTcwNTIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzA1NiwgMTU3MDYyLCAxNTcwNjgsIDE1NzA3NCwgMTU3MDgwLCAxNTcwODgsIDE1NzA5NiwgCi0gICAgMTU3MTA1LCAxNTcxMTQsIDE1NzExOSwgMTU3MTI0LCAxNTcxMjksIDE1NzEzNCwgMTU3MTQxLCAxNTcxNDgsIDE1NzE1NiwgCi0gICAgMTU3MTY0LCAxNTcxNzEsIDE1NzE3OCwgMTU3MTg1LCAxNTcxOTIsIDE1NzIwMSwgMTU3MjEwLCAxNTcyMjAsIDE1NzIzMCwgCi0gICAgMTU3MjM2LCAxNTcyNDIsIDE1NzI0OCwgMTU3MjU0LCAxNTcyNjIsIDE1NzI3MCwgMTU3Mjc5LCAxNTcyODgsIDE1NzI5NiwgCi0gICAgMTU3MzA0LCAxNTczMTIsIDE1NzMyMCwgMTU3MzMwLCAxNTczNDAsIDE1NzM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTU3MzYyLCAxNTczNjcsIDE1NzM3MiwgMTU3Mzc3LCAxNTczODIsIDE1NzM5MSwgMTU3NDAwLCAxNTc0MDksIDE1NzQxOCwgCi0gICAgMTU3NDI1LCAxNTc0MzIsIDE1NzQzOSwgMTU3NDQ2LCAxNTc0NTMsIDE1NzQ2MiwgMTU3NDcxLCAxNTc0ODAsIDE1NzQ4NSwgCi0gICAgMTU3NDkyLCAxNTc0OTksIDE1NzUwNiwgMTU3NTExLCAxNTc1MTYsIDE1NzUyMSwgMTU3NTI2LCAxNTc1MzMsIDE1NzU0MCwgCi0gICAgMTU3NTQ3LCAxNTc1NTQsIDE1NzU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NTcwLCAxNTc1NzQsIDE1NzU3OCwgMTU3NTgzLCAxNTc1ODcsIAotICAgIDE1NzU5MSwgMTU3NTk2LCAxNTc2MDAsIDE1NzYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2MTk5LCAKKyAgICAxNTYyMDEsIDE1NjIwMywgMTU2MjA3LCAxNTYyMTIsIDE1NjIxNywgMTU2MjE5LCAxNTYyMjUsIDE1NjIzMCwgMTU2MjMyLCAKKyAgICAxNTYyMzgsIDE1NjI0MiwgMTU2MjQ0LCAxNTYyNDgsIDE1NjI1NCwgMTU2MjYwLCAxNTYyNjYsIDE1NjI3MSwgMTU2Mjc2LCAKKyAgICAxNTYyODMsIDE1NjI5MCwgMTU2Mjk3LCAxNTYzMDIsIDE1NjMwOSwgMTU2MzE2LCAxNTYzMjMsIDE1NjMyNywgMTU2MzM0LCAKKyAgICAxNTYzNDMsIDE1NjM1MiwgMTU2MzU5LCAxNTYzNjQsIDE1NjM2OCwgMTU2MzcyLCAxNTYzNzQsIDE1NjM3NywgMTU2MzgwLCAKKyAgICAxNTYzODcsIDE1NjM5NCwgMTU2NDA0LCAxNTY0MDksIDE1NjQxNCwgMTU2NDE5LCAxNTY0MjQsIDE1NjQyNiwgMTU2NDMyLCAKKyAgICAxNTY0MzYsIDE1NjQzOCwgMTU2NDQwLCAxNTY0NDIsIDE1NjQ0NCwgMTU2NDQ4LCAxNTY0NTIsIDE1NjQ1NiwgMTU2NDU4LCAKKyAgICAxNTY0NjIsIDE1NjQ2NCwgMTU2NDY4LCAxNTY0NzAsIDE1NjQ3MiwgMTU2NDc0LCAxNTY0NzYsIDE1NjQ4MSwgMTU2NDg2LCAKKyAgICAxNTY0ODgsIDE1NjQ5NCwgMTU2NDk4LCAxNTY1MDIsIDE1NjUxMCwgMTU2NTEyLCAxNTY1MTQsIDE1NjUxNiwgMTU2NTE4LCAKKyAgICAxNTY1MjAsIDE1NjUyMiwgMTU2NTI0LCAxNTY1MjYsIDE1NjUyOCwgMTU2NTMwLCAxNTY1MzQsIDE1NjUzOCwgMTU2NTQwLCAKKyAgICAxNTY1NDIsIDE1NjU0NCwgMTU2NTQ2LCAxNTY1NDgsIDE1NjU1MywgMTU2NTU5LCAxNTY1NjMsIDE1NjU2NywgMTU2NTcxLCAKKyAgICAxNTY1NzUsIDE1NjU4MCwgMTU2NTg0LCAxNTY1ODYsIDE1NjU4OCwgMTU2NTkyLCAxNTY1OTgsIDE1NjYwMCwgMTU2NjAyLCAKKyAgICAxNTY2MDQsIDE1NjYwOCwgMTU2NjE3LCAxNTY2MjMsIDE1NjYyNywgMTU2NjMxLCAxNTY2MzMsIDE1NjYzNSwgMTU2NjM4LCAKKyAgICAxNTY2NDAsIDE1NjY0MiwgMTU2NjQ0LCAxNTY2NDgsIDE1NjY1MCwgMTU2NjU0LCAxNTY2NTksIDE1NjY2MSwgMTU2NjY2LCAKKyAgICAxNTY2NzIsIDE1NjY3OSwgMTU2NjgzLCAxNTY2ODcsIDE1NjY5MSwgMTU2Njk1LCAxNTY3MDEsIDE1NjcwNSwgMTU2NzEzLCAKKyAgICAxNTY3MjAsIDE1NjcyMiwgMTU2NzI0LCAxNTY3MjgsIDE1NjczMiwgMTU2NzM0LCAxNTY3MzgsIDE1Njc0MiwgMTU2NzQ0LCAKKyAgICAxNTY3NDgsIDE1Njc1MCwgMTU2NzU0LCAxNTY3NTgsIDE1Njc2MiwgMTU2NzY2LCAxNTY3NzAsIDE1Njc3NCwgMTU2Nzc4LCAKKyAgICAxNTY3ODIsIDE1Njc4OCwgMTU2NzkyLCAxNTY3OTYsIDE1NjgwNywgMTU2ODEyLCAxNTY4MTYsIDE1NjgyMCwgMTU2ODI2LCAKKyAgICAxNTY4MzAsIDE1NjgzNCwgMTU2ODM4LCAxNTY4NDUsIDE1Njg1MiwgMTU2ODU2LCAxNTY4NjAsIDE1Njg2NCwgMTU2ODY4LCAKKyAgICAxNTY4NzIsIDE1Njg3OSwgMTU2ODgxLCAxNTY4ODUsIDE1Njg4NywgMTU2ODg5LCAxNTY4OTMsIDE1Njg5NywgMTU2OTAxLCAKKyAgICAxNTY5MDMsIDE1NjkwNywgMTU2OTExLCAxNTY5MTUsIDE1NjkxOSwgMTU2OTIzLCAxNTY5MjUsIDE1NjkyOSwgMTU2OTMxLCAKKyAgICAxNTY5MzcsIDE1Njk0MCwgMTU2OTQ1LCAxNTY5NDcsIDE1Njk0OSwgMTU2OTUyLCAxNTY5NTQsIDE1Njk1NiwgMTU2OTU5LCAKKyAgICAxNTY5NjYsIDE1Njk3MywgMTU2OTgwLCAxNTY5ODUsIDE1Njk4OSwgMTU2OTkxLCAxNTY5OTMsIDE1Njk5NSwgMTU2OTk5LCAKKyAgICAxNTcwMDEsIDE1NzAwNSwgMTU3MDA5LCAxNTcwMTMsIDE1NzAxNSwgMTU3MDE5LCAxNTcwMjEsIDE1NzAyNSwgMTU3MDI5LCAKKyAgICAxNTcwMzYsIDE1NzAzOCwgMTU3MDQ3LCAxNTcwNTYsIDE1NzA2NSwgMTU3MDcxLCAxNTcwNzMsIDE1NzA3OCwgMTU3MDgyLCAKKyAgICAxNTcwODYsIDE1NzA4OCwgMTU3MDk0LCAxNTcwOTgsIDE1NzEwMCwgMTU3MTA0LCAxNTcxMDgsIDE1NzExMCwgMTU3MTE0LCAKKyAgICAxNTcxMTksIDE1NzEyMywgMTU3MTI5LCAxNTcxMzUsIDE1NzEzNywgMTU3MTM5LCAxNTcxNDUsIDE1NzE0NywgMTU3MTUxLCAKKyAgICAxNTcxNTUsIDE1NzE1NywgMTU3MTYxLCAxNTcxNjMsIDE1NzE2NywgMTU3MTcxLCAxNTcxNzUsIDE1NzE3OCwgMTU3MTgxLCAKKyAgICAxNTcxODYsIDE1NzE5MSwgMTU3MTkzLCAxNTcxOTYsIDE1NzE5OCwgMTU3MjA1LCAxNTcyMDksIDE1NzIxMSwgMTU3MjE4LCAKKyAgICAxNTcyMjUsIDE1NzIzMiwgMTU3MjM5LCAxNTcyNDYsIDE1NzI0OCwgMTU3MjUwLCAxNTcyNTIsIDE1NzI1NiwgMTU3MjU4LCAKKyAgICAxNTcyNjAsIDE1NzI2MiwgMTU3MjY0LCAxNTcyNjYsIDE1NzI2OCwgMTU3MjcwLCAxNTcyNzIsIDE1NzI3NCwgMTU3Mjc2LCAKKyAgICAxNTcyNzgsIDE1NzI4MCwgMTU3MjgyLCAxNTcyODQsIDE1NzI4NiwgMTU3Mjg4LCAxNTcyOTAsIDE1NzI5MiwgMTU3Mjk0LCAKKyAgICAxNTcyOTYsIDE1NzI5OCwgMTU3MzAwLCAxNTczMDQsIDE1NzMwNiwgMTU3MzA4LCAxNTczMTAsIDE1NzMxNCwgMTU3MzE2LCAKKyAgICAxNTczMjAsIDE1NzMyMiwgMTU3MzI0LCAxNTczMjgsIDE1NzMzMiwgMTU3MzM4LCAxNTczNDAsIDE1NzM0MiwgMTU3MzQ0LCAKKyAgICAxNTczNDYsIDE1NzM1MCwgMTU3MzU0LCAxNTczNTYsIDE1NzM2MCwgMTU3MzY0LCAxNTczNjgsIDE1NzM3MiwgMTU3Mzc2LCAKKyAgICAxNTczODAsIDE1NzM4NCwgMTU3Mzg4LCAxNTczOTIsIDE1NzM5NiwgMTU3NDAwLCAxNTc0MDQsIDE1NzQwOCwgMTU3NDEyLCAKKyAgICAxNTc0MTYsIDE1NzQyMCwgMTU3NDI0LCAxNTc0MjgsIDE1NzQzMCwgMTU3NDMyLCAxNTc0MzQsIDE1NzQzNiwgMTU3NDM4LCAKKyAgICAxNTc0NDAsIDE1NzQ0MiwgMTU3NDUwLCAxNTc0NTgsIDE1NzQ2NiwgMTU3NDc0LCAxNTc0NzksIDE1NzQ4NCwgMTU3NDg5LCAKKyAgICAxNTc0OTMsIDE1NzQ5NywgMTU3NTAyLCAxNTc1MDYsIDE1NzUwOCwgMTU3NTEyLCAxNTc1MTQsIDE1NzUxNiwgMTU3NTE4LCAKKyAgICAxNTc1MjAsIDE1NzUyMiwgMTU3NTI0LCAxNTc1MjYsIDE1NzUzMCwgMTU3NTMyLCAxNTc1MzQsIDE1NzUzNiwgMTU3NTQwLCAKKyAgICAxNTc1NDQsIDE1NzU0OCwgMTU3NTUyLCAxNTc1NTYsIDE1NzU1OCwgMTU3NTY0LCAxNTc1NzAsIDE1NzU3MiwgMTU3NTc0LCAKKyAgICAxNTc1NzYsIDE1NzU3OCwgMTU3NTgwLCAxNTc1ODksIDE1NzU5NiwgMTU3NjAzLCAxNTc2MDcsIDE1NzYxNCwgMTU3NjE5LCAKKyAgICAxNTc2MjYsIDE1NzYzNSwgMTU3NjQwLCAxNTc2NDQsIDE1NzY0OCwgMTU3NjUwLCAxNTc2NTQsIDE1NzY1NiwgMTU3NjYwLCAKKyAgICAxNTc2NjQsIDE1NzY2NiwgMTU3NjcwLCAxNTc2NzQsIDE1NzY3OCwgMTU3NjgwLCAxNTc2ODIsIDE1NzY4OCwgMTU3NjkwLCAKKyAgICAxNTc2OTIsIDE1NzY5NCwgMTU3Njk4LCAxNTc3MDIsIDE1NzcwNCwgMTU3NzA4LCAxNTc3MTAsIDE1NzcxMiwgMTU3NzE1LCAKKyAgICAxNTc3MTksIDE1NzcyMSwgMTU3NzI1LCAxNTc3MjcsIDE1NzcyOSwgMTU3NzM0LCAxNTc3MzYsIDE1Nzc0MCwgMTU3NzQ0LCAKKyAgICAxNTc3NDcsIDE1Nzc1MSwgMTU3NzU1LCAxNTc3NTksIDE1Nzc2MywgMTU3NzY3LCAxNTc3NzEsIDE1Nzc3NSwgMTU3NzgwLCAKKyAgICAxNTc3ODQsIDE1Nzc4OCwgMTU3Nzk3LCAxNTc4MDIsIDE1NzgwNSwgMTU3ODA3LCAxNTc4MTAsIDE1NzgxMywgMTU3ODE4LCAKKyAgICAxNTc4MjAsIDE1NzgyMywgMTU3ODI4LCAxNTc4MzIsIDE1NzgzNSwgMTU3ODM5LCAxNTc4NDMsIDE1Nzg0NiwgMTU3ODUxLCAKKyAgICAxNTc4NTUsIDE1Nzg1OSwgMTU3ODYzLCAxNTc4NjcsIDE1Nzg3MywgMTU3ODc5LCAxNTc4ODUsIDE1Nzg5MSwgMTU3ODk2LCAKKyAgICAxNTc5MDYsIDE1NzkwOCwgMTU3OTEyLCAxNTc5MTQsIDE1NzkxNiwgMTU3OTIwLCAxNTc5MjQsIDE1NzkyNiwgMTU3OTMwLCAKKyAgICAxNTc5MzUsIDE1Nzk0MCwgMTU3OTQ2LCAxNTc5NDgsIDE1Nzk1MiwgMTU3OTU2LCAxNTc5NjIsIDE1Nzk2OCwgMTU3OTcyLCAKKyAgICAxNTc5NzQsIDE1Nzk3NiwgMTU3OTgwLCAxNTc5ODIsIDE1Nzk4NiwgMTU3OTkwLCAxNTc5OTQsIDE1Nzk5NiwgMTU3OTk4LCAKKyAgICAxNTgwMDUsIDE1ODAwOSwgMTU4MDEyLCAxNTgwMTYsIDE1ODAyMCwgMTU4MDI0LCAxNTgwMjYsIDE1ODAzMCwgMTU4MDMyLCAKKyAgICAxNTgwMzQsIDE1ODAzOCwgMTU4MDQwLCAxNTgwNDQsIDE1ODA0OCwgMTU4MDU0LCAxNTgwNTgsIDE1ODA2MiwgMTU4MDY2LCAKKyAgICAxNTgwNjgsIDE1ODA3MSwgMTU4MDc1LCAxNTgwODEsIDE1ODA5MCwgMTU4MDk5LCAxNTgxMDcsIDE1ODExNSwgMTU4MTE3LCAKKyAgICAxNTgxMjEsIDE1ODEyMywgMTU4MTI3LCAxNTgxMzgsIDE1ODE0MiwgMTU4MTQ4LCAxNTgxNTQsIDE1ODE1OSwgMTU4MTYxLCAKKyAgICAxNTgxNjYsIDE1ODE3MCwgMTU4MTcyLCAxNTgxNzQsIDE1ODE3NiwgMTU4MTgwLCAxNTgxODQsIDE1ODE4OCwgMTU4MTkzLCAKKyAgICAxNTgyMDMsIDE1ODIxOCwgMTU4MjI4LCAxNTgyMzgsIDE1ODI0MiwgMTU4MjQ2LCAxNTgyNTIsIDE1ODI1NCwgMTU4MjYyLCAKKyAgICAxNTgyNzAsIDE1ODI3MiwgMTU4Mjc2LCAxNTgyODIsIDE1ODI4OCwgMTU4Mjk1LCAxNTgzMDIsIDE1ODMwNCwgMTU4MzA2LCAKKyAgICAxNTgzMDksIDE1ODMxMSwgMTU4MzE3LCAxNTgzMTksIDE1ODMyMiwgMTU4MzI2LCAxNTgzMzIsIDE1ODMzOCwgMTU4MzQ5LCAKKyAgICAxNTgzNTUsIDE1ODM2MSwgMTU4MzY5LCAxNTgzNzMsIDE1ODM4MSwgMTU4Mzg5LCAxNTgzOTUsIDE1ODQwMSwgMTU4NDA4LCAKKyAgICAxNTg0MTAsIDE1ODQxNCwgMTU4NDE2LCAxNTg0MTgsIDE1ODQyMywgMTU4NDI1LCAxNTg0MjcsIDE1ODQyOSwgMTU4NDMxLCAKKyAgICAxNTg0MzUsIDE1ODQ0NSwgMTU4NDUxLCAxNTg0NTUsIDE1ODQ1OSwgMTU4NDYzLCAxNTg0NjksIDE1ODQ3NSwgMTU4NDgxLCAKKyAgICAxNTg0ODcsIDE1ODQ5MiwgMTU4NDk3LCAxNTg1MDMsIDE1ODUwOSwgMTU4NTE2LCAxNTg1MjMsIDE1ODUzMSwgMTU4NTM5LCAKKyAgICAxNTg1NDQsIDE1ODU1MiwgMTU4NTU2LCAxNTg1NjUsIDE1ODU3NCwgMTU4NTgwLCAxNTg1ODQsIDE1ODU4OCwgMTU4NTkyLCAKKyAgICAxNTg1OTUsIDE1ODYwMCwgMTU4NjAyLCAxNTg2MDQsIDE1ODYwNiwgMTU4NjEzLCAxNTg2MTgsIDE1ODYyNSwgMTU4NjMyLCAKKyAgICAxNTg2MzksIDE1ODY0NywgMTU4NjU1LCAxNTg2NjMsIDE1ODY3MSwgMTU4Njc5LCAxNTg2ODcsIDE1ODY5NSwgMTU4NzAzLCAKKyAgICAxNTg3MTEsIDE1ODcxNywgMTU4NzIzLCAxNTg3MjksIDE1ODczNSwgMTU4NzQxLCAxNTg3NDcsIDE1ODc1MywgMTU4NzU5LCAKKyAgICAxNTg3NjUsIDE1ODc3MSwgMTU4Nzc3LCAxNTg3ODMsIDE1ODc4NiwgMTU4Nzk1LCAxNTg4MDQsIDE1ODgwNiwgMTU4ODEzLCAKKyAgICAxNTg4MTcsIDE1ODgxOSwgMTU4ODIxLCAxNTg4MjUsIDE1ODgzMSwgMTU4ODM1LCAxNTg4MzcsIDE1ODg0NywgMTU4ODUzLCAKKyAgICAxNTg4NTcsIDE1ODg1OSwgMTU4ODYzLCAxNTg4NjUsIDE1ODg2OSwgMTU4ODc2LCAxNTg4ODMsIDE1ODg5MCwgMTU4ODk1LCAKKyAgICAxNTg5MDAsIDE1ODkwOSwgMTU4OTE1LCAxNTg5MjAsIDE1ODkyNCwgMTU4OTI5LCAxNTg5MzMsIDE1ODk0MCwgMTU4OTQ0LCAKKyAgICAxNTg5NDcsIDE1ODk1MiwgMTU4OTU5LCAxNTg5NjYsIDE1ODk3MSwgMTU4OTc2LCAxNTg5ODEsIDE1ODk4OCwgMTU4OTk3LCAKKyAgICAxNTkwMDgsIDE1OTAxNCwgMTU5MDIwLCAxNTkwMjYsIDE1OTAzNiwgMTU5MDUxLCAxNTkwNjAsIDE1OTA2OCwgMTU5MDc2LCAKKyAgICAxNTkwODQsIDE1OTA5MiwgMTU5MTAwLCAxNTkxMDgsIDE1OTExNiwgMTU5MTI0LCAxNTkxMzIsIDE1OTE0MCwgMTU5MTQ4LCAKKyAgICAxNTkxNTYsIDE1OTE1OSwgMTU5MTYzLCAxNTkxNjgsIDE1OTE3MywgMTU5MTc1LCAxNTkxNzksIDE1OTE4OCwgMTU5MTk3LCAKKyAgICAxNTkyMDUsIDE1OTIwOSwgMTU5MjEzLCAxNTkyMTgsIDE1OTIyMywgMTU5MjI4LCAxNTkyMzAsIDE1OTIzNSwgMTU5MjM5LCAKKyAgICAxNTkyNDEsIDE1OTI0NSwgMTU5MjQ5LCAxNTkyNTUsIDE1OTI2MCwgMTU5MjY4LCAxNTkyNzMsIDE1OTI3OCwgMTU5MjgzLCAKKyAgICAxNTkyOTAsIDE1OTI5MywgMTU5Mjk1LCAxNTkyOTgsIDE1OTMwMywgMTU5MzA5LCAxNTkzMTMsIDE1OTMxNywgMTU5MzIzLCAKKyAgICAxNTkzMjksIDE1OTMzMSwgMTU5MzM1LCAxNTkzMzksIDE1OTM0MywgMTU5MzQ3LCAxNTkzNTEsIDE1OTM1MywgMTU5MzU1LCAKKyAgICAxNTkzNTcsIDE1OTM1OSwgMTU5MzY1LCAxNTkzNzEsIDE1OTM3NSwgMTU5Mzc3LCAxNTkzNzksIDE1OTM4MSwgMTU5MzkwLCAKKyAgICAxNTkzOTQsIDE1OTQwMSwgMTU5NDA4LCAxNTk0MTAsIDE1OTQxMywgMTU5NDE3LCAxNTk0MjMsIDE1OTQyNywgMTU5NDMxLCAKKyAgICAxNTk0MzMsIDE1OTQ0MSwgMTU5NDQ1LCAxNTk0NDksIDE1OTQ1NCwgMTU5NDU5LCAxNTk0NjQsIDE1OTQ2OSwgMTU5NDc0LCAKKyAgICAxNTk0NzksIDE1OTQ4NCwgMTU5NDg5LCAxNTk0OTQsIDE1OTQ5OSwgMTU5NTAzLCAxNTk1MDksIDE1OTUxMywgMTU5NTE5LCAKKyAgICAxNTk1MjQsIDE1OTUzMSwgMTU5NTM3LCAxNTk1NDUsIDE1OTU0OSwgMTU5NTU2LCAxNTk1NjAsIDE1OTU2NCwgMTU5NTY4LCAKKyAgICAxNTk1NzMsIDE1OTU3OCwgMTU5NTgwLCAxNTk1ODQsIDE1OTU5MywgMTU5NjAxLCAxNTk2MDksIDE1OTYyMiwgMTU5NjM1LCAKKyAgICAxNTk2NDgsIDE1OTY1NSwgMTU5NjYyLCAxNTk2NjYsIDE1OTY3NSwgMTU5NjgzLCAxNTk2ODcsIDE1OTY5NiwgMTU5NzAzLCAKKyAgICAxNTk3MDcsIDE1OTcxMSwgMTU5NzE1LCAxNTk3MTksIDE1OTcyNiwgMTU5NzMwLCAxNTk3MzQsIDE1OTczOCwgMTU5NzQyLCAKKyAgICAxNTk3NDksIDE1OTc1OCwgMTU5NzY3LCAxNTk3NzQsIDE1OTc4NiwgMTU5Nzk4LCAxNTk4MDIsIDE1OTgwNiwgMTU5ODEwLCAKKyAgICAxNTk4MTQsIDE1OTgxOCwgMTU5ODIyLCAxNTk4MzAsIDE1OTgzOCwgMTU5ODQ2LCAxNTk4NTAsIDE1OTg1NCwgMTU5ODU4LCAKKyAgICAxNTk4NjIsIDE1OTg2NiwgMTU5ODcwLCAxNTk4NzYsIDE1OTg4MiwgMTU5ODg2LCAxNTk4OTcsIDE1OTkwNSwgMTU5OTA5LCAKKyAgICAxNTk5MTMsIDE1OTkxNywgMTU5OTIxLCAxNTk5MjcsIDE1OTkzNCwgMTU5OTQ1LCAxNTk5NTUsIDE1OTk2NSwgMTU5OTc2LCAKKyAgICAxNTk5ODUsIDE1OTk5NiwgMTYwMDAyLCAxNjAwMDgsIDE2MDAxNCwgMTYwMDIwLCAxNjAwMjYsIDE2MDAzMCwgMTYwMDM3LCAKKyAgICAxNjAwNDYsIDE2MDA1MywgMTYwMDU5LCAxNjAwNjMsIDE2MDA2NywgMTYwMDcxLCAxNjAwODAsIDE2MDA5MiwgMTYwMDk2LCAKKyAgICAxNjAxMDMsIDE2MDExMCwgMTYwMTE3LCAxNjAxMjUsIDE2MDEzMiwgMTYwMTQwLCAxNjAxNDksIDE2MDE1OSwgMTYwMTY4LCAKKyAgICAxNjAxNzgsIDE2MDE4NywgMTYwMTk3LCAxNjAyMDYsIDE2MDIxNiwgMTYwMjI2LCAxNjAyMzcsIDE2MDI0NywgMTYwMjU4LCAKKyAgICAxNjAyNjUsIDE2MDI3MywgMTYwMjgwLCAxNjAyODgsIDE2MDI5NiwgMTYwMzA1LCAxNjAzMTMsIDE2MDMyMiwgMTYwMzI5LCAKKyAgICAxNjAzNDEsIDE2MDM0OCwgMTYwMzYwLCAxNjAzNjMsIDE2MDM2NiwgMTYwMzY5LCAxNjAzNzIsIDE2MDM3OCwgMTYwMzg1LCAKKyAgICAxNjAzOTEsIDE2MDM5OCwgMTYwNDAzLCAxNjA0MDksIDE2MDQyMSwgMTYwNDMxLCAxNjA0NDIsIDE2MDQ0NywgMTYwNDUyLCAKKyAgICAxNjA0NTgsIDE2MDQ2MywgMTYwNDcwLCAxNjA0NzQsIDE2MDQ4MCwgMTYwNDgyLCAxNjA0ODQsIDE2MDQ4OCwgMTYwNDkyLCAKKyAgICAxNjA0OTYsIDE2MDUwNSwgMTYwNTA3LCAxNjA1MDksIDE2MDUxMiwgMTYwNTE0LCAxNjA1MTYsIDE2MDUyMCwgMTYwNTIyLCAKKyAgICAxNjA1MjYsIDE2MDUyOCwgMTYwNTMyLCAxNjA1MzQsIDE2MDUzNiwgMTYwNTQwLCAxNjA1NDQsIDE2MDU1MCwgMTYwNTUyLCAKKyAgICAxNjA1NTYsIDE2MDU1OCwgMTYwNTYyLCAxNjA1NjYsIDE2MDU3MCwgMTYwNTc0LCAxNjA1NzYsIDE2MDU3OCwgMTYwNTgyLCAKKyAgICAxNjA1ODYsIDE2MDU5MCwgMTYwNTk0LCAxNjA1OTYsIDE2MDU5OCwgMTYwNjAwLCAxNjA2MDYsIDE2MDYxMSwgMTYwNjE0LCAKKyAgICAxNjA2MjIsIDE2MDYzMCwgMTYwNjMyLCAxNjA2MzcsIDE2MDY0MCwgMTYwNjQ1LCAxNjA2NTYsIDE2MDY2MywgMTYwNjY4LCAKKyAgICAxNjA2NzMsIDE2MDY3NSwgMTYwNjc5LCAxNjA2ODEsIDE2MDY4NSwgMTYwNjg3LCAxNjA2OTEsIDE2MDY5NSwgMTYwNjk4LCAKKyAgICAxNjA3MDEsIDE2MDcwMywgMTYwNzA2LCAxNjA3MDgsIDE2MDcxMiwgMTYwNzE0LCAxNjA3MTYsIDE2MDcxOCwgMTYwNzIyLCAKKyAgICAxNjA3MjQsIDE2MDcyOCwgMTYwNzMxLCAxNjA3MzgsIDE2MDc0MSwgMTYwNzQ2LCAxNjA3NDksIDE2MDc1MiwgMTYwNzU3LCAKKyAgICAxNjA3NjEsIDE2MDc2NSwgMTYwNzY5LCAxNjA3NzEsIDE2MDc3NiwgMTYwNzc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNjA3ODMsIDE2MDc4OCwgMTYwNzkwLCAxNjA3OTQsIDE2MDc5NiwgMTYwODAwLCAxNjA4MDQsIAorICAgIDE2MDgxMCwgMTYwODE0LCAxNjA4MTksIDE2MDgyMiwgMTYwODI2LCAxNjA4MzAsIDAsIDAsIDAsIDE2MDgzNCwgMTYwODM2LCAKKyAgICAxNjA4NDIsIDE2MDg0NiwgMTYwODUwLCAxNjA4NTIsIDE2MDg1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTYwODU4LCAxNjA4NjMsIDE2MDg2OCwgMTYwODczLCAxNjA4NzgsIDE2MDg4MywgMTYwODg4LCAxNjA4OTUsIDE2MDkwMiwgCisgICAgMTYwOTA5LCAxNjA5MTYsIDE2MDkyMSwgMTYwOTI2LCAxNjA5MzEsIDE2MDkzNiwgMTYwOTQzLCAxNjA5NDksIDE2MDk1NiwgCisgICAgMTYwOTYzLCAxNjA5NzAsIDE2MDk3NSwgMTYwOTgwLCAxNjA5ODUsIDE2MDk5MCwgMTYwOTk1LCAxNjEwMDIsIDE2MTAwOSwgCisgICAgMTYxMDE0LCAxNjEwMTksIDE2MTAyNiwgMTYxMDMzLCAxNjEwNDEsIDE2MTA0OSwgMTYxMDU2LCAxNjEwNjMsIDE2MTA3MSwgCisgICAgMTYxMDc5LCAxNjEwODcsIDE2MTA5NCwgMTYxMTA0LCAxNjExMTUsIDE2MTEyMCwgMTYxMTI3LCAxNjExMzQsIDE2MTE0MSwgCisgICAgMTYxMTQ5LCAxNjExNTcsIDE2MTE2OCwgMTYxMTc2LCAxNjExODQsIDE2MTE5MiwgMTYxMTk3LCAxNjEyMDIsIDE2MTIwNywgCisgICAgMTYxMjEyLCAxNjEyMTcsIDE2MTIyMiwgMTYxMjI3LCAxNjEyMzIsIDE2MTIzNywgMTYxMjQyLCAxNjEyNDcsIDE2MTI1MiwgCisgICAgMTYxMjU5LCAxNjEyNjQsIDE2MTI2OSwgMTYxMjc2LCAxNjEyODEsIDE2MTI4NiwgMTYxMjkxLCAxNjEyOTYsIDE2MTMwMSwgCisgICAgMTYxMzA2LCAxNjEzMTEsIDE2MTMxNiwgMTYxMzIxLCAxNjEzMjYsIDE2MTMzMSwgMTYxMzM2LCAxNjEzNDMsIDE2MTM1MSwgCisgICAgMTYxMzU2LCAxNjEzNjEsIDE2MTM2OCwgMTYxMzczLCAxNjEzNzgsIDE2MTM4MywgMTYxMzkwLCAxNjEzOTUsIDE2MTQwMiwgCisgICAgMTYxNDA3LCAxNjE0MTQsIDE2MTQxOSwgMTYxNDI4LCAxNjE0MzcsIDE2MTQ0MiwgMTYxNDQ3LCAxNjE0NTIsIDE2MTQ1NywgCisgICAgMTYxNDYyLCAxNjE0NjcsIDE2MTQ3MiwgMTYxNDc3LCAxNjE0ODIsIDE2MTQ4NywgMTYxNDkyLCAxNjE0OTcsIDE2MTUwMiwgCisgICAgMTYxNTEwLCAxNjE1MTgsIDE2MTUyMywgMTYxNTI4LCAxNjE1MzMsIDE2MTUzOCwgMTYxNTQzLCAxNjE1NDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MTU1NSwgMTYxNTYzLCAxNjE1NzEsIDE2MTU3OSwgMTYxNTg3LCAKKyAgICAxNjE1OTMsIDE2MTU5OSwgMTYxNjAzLCAxNjE2MDcsIDE2MTYxMywgMTYxNjE5LCAxNjE2MjgsIDE2MTYzMiwgMTYxNjM3LCAKKyAgICAxNjE2NDMsIDE2MTY0NywgMTYxNjUyLCAxNjE2NTYsIDE2MTY2MCwgMTYxNjY2LCAxNjE2NzIsIDE2MTY4MiwgMTYxNjkxLCAKKyAgICAxNjE2OTQsIDE2MTY5OSwgMTYxNzA1LCAxNjE3MTEsIDE2MTcyMiwgMTYxNzMyLCAxNjE3MzYsIDE2MTc0MSwgMTYxNzQ3LCAKKyAgICAxNjE3NTMsIDE2MTc2MiwgMTYxNzY3LCAxNjE3NzEsIDE2MTc3NiwgMTYxNzgwLCAxNjE3ODYsIDE2MTc5MiwgMTYxNzk4LCAKKyAgICAxNjE4MDIsIDE2MTgwNSwgMTYxODA5LCAxNjE4MTIsIDE2MTgxNSwgMTYxODIwLCAxNjE4MjUsIDE2MTgzMiwgMTYxODQwLCAKKyAgICAxNjE4NDcsIDE2MTg1NCwgMTYxODYzLCAxNjE4NzIsIDE2MTg3OSwgMTYxODg3LCAxNjE4OTQsIDE2MTkwMSwgMTYxOTEwLCAKKyAgICAxNjE5MTksIDE2MTkyNiwgMTYxOTM0LCAxNjE5NDEsIDE2MTk0OCwgMTYxOTU3LCAxNjE5NjQsIDE2MTk3MiwgMTYxOTc4LCAKKyAgICAxNjE5ODcsIDE2MTk5NSwgMTYyMDA0LCAxNjIwMTEsIDE2MjAyMSwgMTYyMDMyLCAxNjIwNDAsIDE2MjA0OCwgMTYyMDU3LCAKKyAgICAxNjIwNjUsIDE2MjA3MywgMTYyMDgyLCAxNjIwOTAsIDE2MjEwMCwgMTYyMTA5LCAxNjIxMTcsIDE2MjEyNSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyMTM0LCAxNjIxNDIsIDE2MjE1MCwgCisgICAgMTYyMTU4LCAxNjIxNjYsIDE2MjE3NSwgMTYyMTg0LCAxNjIxOTMsIDE2MjIwMiwgMTYyMjExLCAxNjIyMjAsIDE2MjIyOSwgCisgICAgMCwgMCwgMCwgMCwgMTYyMjM4LCAxNjIyNDYsIDE2MjI1NCwgMTYyMjYyLCAxNjIyNzAsIDE2MjI3NywgMTYyMjg0LCAKKyAgICAxNjIyOTEsIDE2MjI5OCwgMTYyMzA2LCAxNjIzMTQsIDE2MjMyMiwgMTYyMzMwLCAxNjIzNDAsIDE2MjM1MCwgMTYyMzYwLCAKKyAgICAxNjIzNzAsIDE2MjM3OSwgMTYyMzg4LCAxNjIzOTcsIDE2MjQwNiwgMTYyNDE1LCAxNjI0MjQsIDE2MjQzMywgMTYyNDQyLCAKKyAgICAxNjI0NTAsIDE2MjQ1OCwgMTYyNDY2LCAxNjI0NzQsIDE2MjQ4MiwgMTYyNDkwLCAxNjI0OTgsIDE2MjUwNiwgMTYyNTE2LCAKKyAgICAxNjI1MjYsIDE2MjUzNiwgMTYyNTQ2LCAxNjI1NTAsIDE2MjU1NCwgMTYyNTU4LCAxNjI1NjIsIDE2MjU2NSwgMTYyNTY4LCAKKyAgICAxNjI1NzEsIDE2MjU3NCwgMTYyNTc4LCAxNjI1ODIsIDE2MjU4NiwgMTYyNTkwLCAxNjI1OTUsIDE2MjYwMCwgMTYyNjA1LCAKKyAgICAxNjI2MTAsIDE2MjYxMywgMTYyNjE2LCAxNjI2MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MjYyMiwgMTYyNjI1LCAKKyAgICAxNjI2MjgsIDE2MjYzMSwgMTYyNjM0LCAxNjI2MzksIDE2MjY0NCwgMTYyNjUwLCAxNjI2NTYsIDE2MjY2MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTYyNjY0LCAxNjI2NzAsIDE2MjY3NiwgMTYyNjgyLCAxNjI2ODgsIDE2MjY5NiwgMTYyNzA0LCAxNjI3MTMsIAorICAgIDE2MjcyMiwgMTYyNzI3LCAxNjI3MzIsIDE2MjczNywgMTYyNzQyLCAxNjI3NDksIDE2Mjc1NiwgMTYyNzY0LCAxNjI3NzIsIAorICAgIDE2Mjc3OSwgMTYyNzg2LCAxNjI3OTMsIDE2MjgwMCwgMTYyODA5LCAxNjI4MTgsIDE2MjgyOCwgMTYyODM4LCAxNjI4NDQsIAorICAgIDE2Mjg1MCwgMTYyODU2LCAxNjI4NjIsIDE2Mjg3MCwgMTYyODc4LCAxNjI4ODcsIDE2Mjg5NiwgMTYyOTA0LCAxNjI5MTIsIAorICAgIDE2MjkyMCwgMTYyOTI4LCAxNjI5MzgsIDE2Mjk0OCwgMTYyOTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjI5NzAsIAorICAgIDE2Mjk3NSwgMTYyOTgwLCAxNjI5ODUsIDE2Mjk5MCwgMTYyOTk5LCAxNjMwMDgsIDE2MzAxNywgMTYzMDI2LCAxNjMwMzMsIAorICAgIDE2MzA0MCwgMTYzMDQ3LCAxNjMwNTQsIDE2MzA2MSwgMTYzMDcwLCAxNjMwNzksIDE2MzA4OCwgMTYzMDkzLCAxNjMxMDAsIAorICAgIDE2MzEwNywgMTYzMTE0LCAxNjMxMTksIDE2MzEyNCwgMTYzMTI5LCAxNjMxMzQsIDE2MzE0MSwgMTYzMTQ4LCAxNjMxNTUsIAorICAgIDE2MzE2MiwgMTYzMTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MTAsIDE1NzYxMiwgCi0gICAgMTU3NjE2LCAxNTc2MTgsIDE1NzYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjI0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjMxNzgsIDE2MzE4MiwgMTYzMTg2LCAxNjMxOTEsIDE2MzE5NSwgMTYzMTk5LCAKKyAgICAxNjMyMDQsIDE2MzIwOCwgMTYzMjEyLCAxNjMyMTgsIDE2MzIyNCwgMTYzMjMxLCAxNjMyMzUsIDE2MzIzOSwgMTYzMjQxLCAKKyAgICAwLCAxNjMyNTEsIDE2MzI1OCwgMTYzMjYyLCAxNjMyNjYsIDE2MzI3NiwgMTYzMjgwLCAxNjMyODQsIDE2MzI4OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTYzMjkyLCAwLCAwLCAxNjMyOTYsIDE2MzI5OCwgMTYzMzAwLCAxNjMzMDYsIDE2MzMxMCwgCisgICAgMTYzMzEyLCAxNjMzMTgsIDE2MzMyMCwgMTYzMzIyLCAxNjMzMjYsIDE2MzMyOCwgMTYzMzMyLCAwLCAxNjMzMzQsIAorICAgIDE2MzMzOCwgMTYzMzQzLCAxNjMzNDcsIDE2MzM1MSwgMTYzMzUzLCAxNjMzNTcsIDE2MzM1OSwgMTYzMzY1LCAxNjMzNzEsIAorICAgIDE2MzM3NywgMTYzMzgxLCAwLCAwLCAwLCAwLCAxNjMzODcsIDE2MzM4OSwgMTYzMzkxLCAxNjMzOTMsIDE2MzM5NSwgCisgICAgMTYzMzk3LCAxNjMzOTksIDE2MzQwMywgMTYzNDA3LCAxNjM0MTQsIDE2MzQxOCwgMTYzNDIwLCAxNjM0MjUsIDE2MzQyNywgCisgICAgMTYzNDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjM0MzEsIDE2MzQzMywgMTYzNDM3LCAxNjM0MzksIDE2MzQ0MSwgCisgICAgMTYzNDQ1LCAxNjM0NDcsIDE2MzQ0OSwgMTYzNDUxLCAxNjM0NTMsIDE2MzQ1NSwgMTYzNDU5LCAxNjM0NjEsIDE2MzQ2MywgCisgICAgMTYzNDY1LCAxNjM0NjcsIDE2MzQ2OSwgMTYzNDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjM0NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYyOCwgMTU3NjMyLCAxNTc2MzYsIDE1NzY0MCwgCi0gICAgMTU3NjQ0LCAxNTc2NDgsIDE1NzY1MiwgMTU3NjU2LCAxNTc2NjAsIDE1NzY2NCwgMTU3NjY4LCAxNTc2NzIsIDE1NzY3NiwgCi0gICAgMTU3NjgwLCAxNTc2ODQsIDE1NzY4OCwgMTU3NjkyLCAxNTc2OTYsIDE1NzcwMCwgMTU3NzA0LCAxNTc3MDgsIDE1NzcxMiwgCi0gICAgMTU3NzE2LCAxNTc3MjAsIDE1NzcyNCwgMTU3NzI4LCAxNTc3MzIsIDE1NzczNiwgMTU3NzQwLCAxNTc3NDQsIDE1Nzc0OCwgCi0gICAgMTU3NzUyLCAxNTc3NTYsIDE1Nzc2MCwgMTU3NzY0LCAxNTc3NjgsIDE1Nzc3MiwgMTU3Nzc2LCAxNTc3ODAsIDE1Nzc4NCwgCi0gICAgMTU3Nzg4LCAxNTc3OTIsIDE1Nzc5NiwgMTU3ODAwLCAxNTc4MDQsIDE1NzgwOCwgMTU3ODEyLCAxNTc4MTYsIDE1NzgyMCwgCi0gICAgMTU3ODI0LCAxNTc4MjgsIDE1NzgzMiwgMTU3ODM2LCAxNTc4NDAsIDE1Nzg0NCwgMTU3ODQ4LCAxNTc4NTIsIDE1Nzg1NiwgCi0gICAgMTU3ODYwLCAxNTc4NjQsIDE1Nzg2OCwgMTU3ODcyLCAxNTc4NzYsIDE1Nzg4MCwgMTU3ODg0LCAxNTc4ODgsIDE1Nzg5MiwgCi0gICAgMTU3ODk2LCAxNTc5MDAsIDE1NzkwNCwgMTU3OTA4LCAxNTc5MTIsIDE1NzkxNiwgMTU3OTIwLCAxNTc5MjQsIDE1NzkyOCwgCi0gICAgMTU3OTMyLCAxNTc5MzYsIDE1Nzk0MCwgMTU3OTQ0LCAxNTc5NDgsIDE1Nzk1MiwgMTU3OTU2LCAxNTc5NjAsIDE1Nzk2NCwgCi0gICAgMTU3OTY4LCAxNTc5NzIsIDE1Nzk3NiwgMTU3OTgwLCAxNTc5ODQsIDE1Nzk4OCwgMTU3OTkyLCAxNTc5OTYsIDE1ODAwMCwgCi0gICAgMTU4MDA0LCAxNTgwMDgsIDE1ODAxMiwgMTU4MDE2LCAxNTgwMjAsIDE1ODAyNCwgMTU4MDI4LCAxNTgwMzIsIDE1ODAzNiwgCi0gICAgMTU4MDQwLCAxNTgwNDQsIDE1ODA0OCwgMTU4MDUyLCAxNTgwNTYsIDE1ODA2MCwgMTU4MDY0LCAxNTgwNjgsIDE1ODA3MiwgCi0gICAgMTU4MDc2LCAxNTgwODAsIDE1ODA4NCwgMTU4MDg4LCAxNTgwOTIsIDE1ODA5NiwgMTU4MTAwLCAxNTgxMDQsIDE1ODEwOCwgCi0gICAgMTU4MTEyLCAxNTgxMTYsIDE1ODEyMCwgMTU4MTI0LCAxNTgxMjgsIDE1ODEzMiwgMTU4MTM2LCAxNTgxNDAsIDE1ODE0NCwgCi0gICAgMTU4MTQ4LCAxNTgxNTIsIDE1ODE1NiwgMTU4MTYwLCAxNTgxNjQsIDE1ODE2OCwgMTU4MTcyLCAxNTgxNzYsIDE1ODE4MCwgCi0gICAgMTU4MTg0LCAxNTgxODgsIDE1ODE5MiwgMTU4MTk2LCAxNTgyMDAsIDE1ODIwNCwgMTU4MjA4LCAxNTgyMTIsIDE1ODIxNiwgCi0gICAgMTU4MjIwLCAxNTgyMjQsIDE1ODIyOCwgMTU4MjMyLCAxNTgyMzYsIDE1ODI0MCwgMTU4MjQ0LCAxNTgyNDgsIDE1ODI1MiwgCi0gICAgMTU4MjU2LCAxNTgyNjAsIDE1ODI2NCwgMTU4MjY4LCAxNTgyNzIsIDE1ODI3NiwgMTU4MjgwLCAxNTgyODQsIDE1ODI4OCwgCi0gICAgMTU4MjkyLCAxNTgyOTYsIDE1ODMwMCwgMTU4MzA0LCAxNTgzMDgsIDE1ODMxMiwgMTU4MzE2LCAxNTgzMjAsIDE1ODMyNCwgCi0gICAgMTU4MzI4LCAxNTgzMzIsIDE1ODMzNiwgMTU4MzQwLCAxNTgzNDQsIDE1ODM0OCwgMTU4MzUyLCAxNTgzNTYsIDE1ODM2MCwgCi0gICAgMTU4MzY0LCAxNTgzNjgsIDE1ODM3MiwgMTU4Mzc2LCAxNTgzODAsIDE1ODM4NCwgMTU4Mzg4LCAxNTgzOTIsIDE1ODM5NiwgCi0gICAgMTU4NDAwLCAxNTg0MDQsIDE1ODQwOCwgMTU4NDEyLCAxNTg0MTYsIDE1ODQyMCwgMTU4NDI0LCAxNTg0MjgsIDE1ODQzMiwgCi0gICAgMTU4NDM2LCAxNTg0NDAsIDE1ODQ0NCwgMTU4NDQ4LCAxNTg0NTIsIDE1ODQ1NiwgMTU4NDYwLCAxNTg0NjQsIDE1ODQ2OCwgCi0gICAgMTU4NDcyLCAxNTg0NzYsIDE1ODQ4MCwgMTU4NDg0LCAxNTg0ODgsIDE1ODQ5MiwgMTU4NDk2LCAxNTg1MDAsIDE1ODUwNCwgCi0gICAgMTU4NTA4LCAxNTg1MTIsIDE1ODUxNiwgMTU4NTIwLCAxNTg1MjQsIDE1ODUyOCwgMTU4NTMyLCAxNTg1MzYsIDE1ODU0MCwgCi0gICAgMTU4NTQ0LCAxNTg1NDgsIDE1ODU1MiwgMTU4NTU2LCAxNTg1NjAsIDE1ODU2NCwgMTU4NTY4LCAxNTg1NzIsIDE1ODU3NiwgCi0gICAgMTU4NTgwLCAxNTg1ODQsIDE1ODU4OCwgMTU4NTkyLCAxNTg1OTYsIDE1ODYwMCwgMTU4NjA0LCAxNTg2MDgsIDE1ODYxMiwgCi0gICAgMTU4NjE2LCAxNTg2MjAsIDE1ODYyNCwgMTU4NjI4LCAxNTg2MzIsIDE1ODYzNiwgMTU4NjQwLCAxNTg2NDQsIDE1ODY0OCwgCi0gICAgMTU4NjUyLCAxNTg2NTYsIDE1ODY2MCwgMTU4NjY0LCAxNTg2NjgsIDE1ODY3MiwgMTU4Njc2LCAxNTg2ODAsIDE1ODY4NCwgCi0gICAgMTU4Njg4LCAxNTg2OTIsIDE1ODY5NiwgMTU4NzAwLCAxNTg3MDQsIDE1ODcwOCwgMTU4NzEyLCAxNTg3MTYsIDE1ODcyMCwgCi0gICAgMTU4NzI0LCAxNTg3MjgsIDE1ODczMiwgMTU4NzM2LCAxNTg3NDAsIDE1ODc0NCwgMTU4NzQ4LCAxNTg3NTIsIDE1ODc1NiwgCi0gICAgMTU4NzYwLCAxNTg3NjQsIDE1ODc2OCwgMTU4NzcyLCAxNTg3NzYsIDE1ODc4MCwgMTU4Nzg0LCAxNTg3ODgsIDE1ODc5MiwgCi0gICAgMTU4Nzk2LCAxNTg4MDAsIDE1ODgwNCwgMTU4ODA4LCAxNTg4MTIsIDE1ODgxNiwgMTU4ODIwLCAxNTg4MjQsIDE1ODgyOCwgCi0gICAgMTU4ODMyLCAxNTg4MzYsIDE1ODg0MCwgMTU4ODQ0LCAxNTg4NDgsIDE1ODg1MiwgMTU4ODU2LCAxNTg4NjAsIDE1ODg2NCwgCi0gICAgMTU4ODY4LCAxNTg4NzIsIDE1ODg3NiwgMTU4ODgwLCAxNTg4ODQsIDE1ODg4OCwgMTU4ODkyLCAxNTg4OTYsIDE1ODkwMCwgCi0gICAgMTU4OTA0LCAxNTg5MDgsIDE1ODkxMiwgMTU4OTE2LCAxNTg5MjAsIDE1ODkyNCwgMTU4OTI4LCAxNTg5MzIsIDE1ODkzNiwgCi0gICAgMTU4OTQwLCAxNTg5NDQsIDE1ODk0OCwgMTU4OTUyLCAxNTg5NTYsIDE1ODk2MCwgMTU4OTY0LCAxNTg5NjgsIDE1ODk3MiwgCi0gICAgMTU4OTc2LCAxNTg5ODAsIDE1ODk4NCwgMTU4OTg4LCAxNTg5OTIsIDE1ODk5NiwgMTU5MDAwLCAxNTkwMDQsIDE1OTAwOCwgCi0gICAgMTU5MDEyLCAxNTkwMTYsIDE1OTAyMCwgMTU5MDI0LCAxNTkwMjgsIDE1OTAzMiwgMTU5MDM2LCAxNTkwNDAsIDE1OTA0NCwgCi0gICAgMTU5MDQ4LCAxNTkwNTIsIDE1OTA1NiwgMTU5MDYwLCAxNTkwNjQsIDE1OTA2OCwgMTU5MDcyLCAxNTkwNzYsIDE1OTA4MCwgCi0gICAgMTU5MDg0LCAxNTkwODgsIDE1OTA5MiwgMTU5MDk2LCAxNTkxMDAsIDE1OTEwNCwgMTU5MTA4LCAxNTkxMTIsIDE1OTExNiwgCi0gICAgMTU5MTIwLCAxNTkxMjQsIDE1OTEyOCwgMTU5MTMyLCAxNTkxMzYsIDE1OTE0MCwgMTU5MTQ0LCAxNTkxNDgsIDE1OTE1MiwgCi0gICAgMTU5MTU2LCAxNTkxNjAsIDE1OTE2NCwgMTU5MTY4LCAxNTkxNzIsIDE1OTE3NiwgMTU5MTgwLCAxNTkxODQsIDE1OTE4OCwgCi0gICAgMTU5MTkyLCAxNTkxOTYsIDE1OTIwMCwgMTU5MjA0LCAxNTkyMDgsIDE1OTIxMiwgMTU5MjE2LCAxNTkyMjAsIDE1OTIyNCwgCi0gICAgMTU5MjI4LCAxNTkyMzIsIDE1OTIzNiwgMTU5MjQwLCAxNTkyNDQsIDE1OTI0OCwgMTU5MjUyLCAxNTkyNTYsIDE1OTI2MCwgCi0gICAgMTU5MjY0LCAxNTkyNjgsIDE1OTI3MiwgMTU5Mjc2LCAxNTkyODAsIDE1OTI4NCwgMTU5Mjg4LCAxNTkyOTIsIDE1OTI5NiwgCi0gICAgMTU5MzAwLCAxNTkzMDQsIDE1OTMwOCwgMTU5MzEyLCAxNTkzMTYsIDE1OTMyMCwgMTU5MzI0LCAxNTkzMjgsIDE1OTMzMiwgCi0gICAgMTU5MzM2LCAxNTkzNDAsIDE1OTM0NCwgMTU5MzQ4LCAxNTkzNTIsIDE1OTM1NiwgMTU5MzYwLCAxNTkzNjQsIDE1OTM2OCwgCi0gICAgMTU5MzcyLCAxNTkzNzYsIDE1OTM4MCwgMTU5Mzg0LCAxNTkzODgsIDE1OTM5MiwgMTU5Mzk2LCAxNTk0MDAsIDE1OTQwNCwgCi0gICAgMTU5NDA4LCAxNTk0MTIsIDE1OTQxNiwgMTU5NDIwLCAxNTk0MjQsIDE1OTQyOCwgMTU5NDMyLCAxNTk0MzYsIDE1OTQ0MCwgCi0gICAgMTU5NDQ0LCAxNTk0NDgsIDE1OTQ1MiwgMTU5NDU2LCAxNTk0NjAsIDE1OTQ2NCwgMTU5NDY4LCAxNTk0NzIsIDE1OTQ3NiwgCi0gICAgMTU5NDgwLCAxNTk0ODQsIDE1OTQ4OCwgMTU5NDkyLCAxNTk0OTYsIDE1OTUwMCwgMTU5NTA0LCAxNTk1MDgsIDE1OTUxMiwgCi0gICAgMTU5NTE2LCAxNTk1MjAsIDE1OTUyNCwgMTU5NTI4LCAxNTk1MzIsIDE1OTUzNiwgMTU5NTQwLCAxNTk1NDQsIDE1OTU0OCwgCi0gICAgMTU5NTUyLCAxNTk1NTYsIDE1OTU2MCwgMTU5NTY0LCAxNTk1NjgsIDE1OTU3MiwgMTU5NTc2LCAxNTk1ODAsIDE1OTU4NCwgCi0gICAgMTU5NTg4LCAxNTk1OTIsIDE1OTU5NiwgMTU5NjAwLCAxNTk2MDQsIDE1OTYwOCwgMTU5NjEyLCAxNTk2MTYsIDE1OTYyMCwgCi0gICAgMTU5NjI0LCAxNTk2MjgsIDE1OTYzMiwgMTU5NjM2LCAxNTk2NDAsIDE1OTY0NCwgMTU5NjQ4LCAxNTk2NTIsIDE1OTY1NiwgCi0gICAgMTU5NjYwLCAxNTk2NjQsIDE1OTY2OCwgMTU5NjcyLCAxNTk2NzYsIDE1OTY4MCwgMTU5Njg0LCAxNTk2ODgsIDE1OTY5MiwgCi0gICAgMTU5Njk2LCAxNTk3MDAsIDE1OTcwNCwgMTU5NzA4LCAxNTk3MTIsIDE1OTcxNiwgMTU5NzIwLCAxNTk3MjQsIDE1OTcyOCwgCi0gICAgMTU5NzMyLCAxNTk3MzYsIDE1OTc0MCwgMTU5NzQ0LCAxNTk3NDgsIDE1OTc1MiwgMTU5NzU2LCAxNTk3NjAsIDE1OTc2NCwgCi0gICAgMTU5NzY4LCAxNTk3NzIsIDE1OTc3NiwgMTU5NzgwLCAxNTk3ODQsIDE1OTc4OCwgMTU5NzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNjM0NzcsIDE2MzQ4MSwgMTYzNDg1LCAxNjM0ODksIDE2MzQ5MywgMTYzNDk3LCAxNjM1MDEsIDE2MzUwNSwgCisgICAgMTYzNTA5LCAxNjM1MTMsIDE2MzUxNywgMTYzNTIxLCAxNjM1MjUsIDE2MzUyOSwgMTYzNTMzLCAxNjM1MzcsIDE2MzU0MSwgCisgICAgMTYzNTQ1LCAxNjM1NDksIDE2MzU1MywgMTYzNTU3LCAxNjM1NjEsIDE2MzU2NSwgMTYzNTY5LCAxNjM1NzMsIDE2MzU3NywgCisgICAgMTYzNTgxLCAxNjM1ODUsIDE2MzU4OSwgMTYzNTkzLCAxNjM1OTcsIDE2MzYwMSwgMTYzNjA1LCAxNjM2MDksIDE2MzYxMywgCisgICAgMTYzNjE3LCAxNjM2MjEsIDE2MzYyNSwgMTYzNjI5LCAxNjM2MzMsIDE2MzYzNywgMTYzNjQxLCAxNjM2NDUsIDE2MzY0OSwgCisgICAgMTYzNjUzLCAxNjM2NTcsIDE2MzY2MSwgMTYzNjY1LCAxNjM2NjksIDE2MzY3MywgMTYzNjc3LCAxNjM2ODEsIDE2MzY4NSwgCisgICAgMTYzNjg5LCAxNjM2OTMsIDE2MzY5NywgMTYzNzAxLCAxNjM3MDUsIDE2MzcwOSwgMTYzNzEzLCAxNjM3MTcsIDE2MzcyMSwgCisgICAgMTYzNzI1LCAxNjM3MjksIDE2MzczMywgMTYzNzM3LCAxNjM3NDEsIDE2Mzc0NSwgMTYzNzQ5LCAxNjM3NTMsIDE2Mzc1NywgCisgICAgMTYzNzYxLCAxNjM3NjUsIDE2Mzc2OSwgMTYzNzczLCAxNjM3NzcsIDE2Mzc4MSwgMTYzNzg1LCAxNjM3ODksIDE2Mzc5MywgCisgICAgMTYzNzk3LCAxNjM4MDEsIDE2MzgwNSwgMTYzODA5LCAxNjM4MTMsIDE2MzgxNywgMTYzODIxLCAxNjM4MjUsIDE2MzgyOSwgCisgICAgMTYzODMzLCAxNjM4MzcsIDE2Mzg0MSwgMTYzODQ1LCAxNjM4NDksIDE2Mzg1MywgMTYzODU3LCAxNjM4NjEsIDE2Mzg2NSwgCisgICAgMTYzODY5LCAxNjM4NzMsIDE2Mzg3NywgMTYzODgxLCAxNjM4ODUsIDE2Mzg4OSwgMTYzODkzLCAxNjM4OTcsIDE2MzkwMSwgCisgICAgMTYzOTA1LCAxNjM5MDksIDE2MzkxMywgMTYzOTE3LCAxNjM5MjEsIDE2MzkyNSwgMTYzOTI5LCAxNjM5MzMsIDE2MzkzNywgCisgICAgMTYzOTQxLCAxNjM5NDUsIDE2Mzk0OSwgMTYzOTUzLCAxNjM5NTcsIDE2Mzk2MSwgMTYzOTY1LCAxNjM5NjksIDE2Mzk3MywgCisgICAgMTYzOTc3LCAxNjM5ODEsIDE2Mzk4NSwgMTYzOTg5LCAxNjM5OTMsIDE2Mzk5NywgMTY0MDAxLCAxNjQwMDUsIDE2NDAwOSwgCisgICAgMTY0MDEzLCAxNjQwMTcsIDE2NDAyMSwgMTY0MDI1LCAxNjQwMjksIDE2NDAzMywgMTY0MDM3LCAxNjQwNDEsIDE2NDA0NSwgCisgICAgMTY0MDQ5LCAxNjQwNTMsIDE2NDA1NywgMTY0MDYxLCAxNjQwNjUsIDE2NDA2OSwgMTY0MDczLCAxNjQwNzcsIDE2NDA4MSwgCisgICAgMTY0MDg1LCAxNjQwODksIDE2NDA5MywgMTY0MDk3LCAxNjQxMDEsIDE2NDEwNSwgMTY0MTA5LCAxNjQxMTMsIDE2NDExNywgCisgICAgMTY0MTIxLCAxNjQxMjUsIDE2NDEyOSwgMTY0MTMzLCAxNjQxMzcsIDE2NDE0MSwgMTY0MTQ1LCAxNjQxNDksIDE2NDE1MywgCisgICAgMTY0MTU3LCAxNjQxNjEsIDE2NDE2NSwgMTY0MTY5LCAxNjQxNzMsIDE2NDE3NywgMTY0MTgxLCAxNjQxODUsIDE2NDE4OSwgCisgICAgMTY0MTkzLCAxNjQxOTcsIDE2NDIwMSwgMTY0MjA1LCAxNjQyMDksIDE2NDIxMywgMTY0MjE3LCAxNjQyMjEsIDE2NDIyNSwgCisgICAgMTY0MjI5LCAxNjQyMzMsIDE2NDIzNywgMTY0MjQxLCAxNjQyNDUsIDE2NDI0OSwgMTY0MjUzLCAxNjQyNTcsIDE2NDI2MSwgCisgICAgMTY0MjY1LCAxNjQyNjksIDE2NDI3MywgMTY0Mjc3LCAxNjQyODEsIDE2NDI4NSwgMTY0Mjg5LCAxNjQyOTMsIDE2NDI5NywgCisgICAgMTY0MzAxLCAxNjQzMDUsIDE2NDMwOSwgMTY0MzEzLCAxNjQzMTcsIDE2NDMyMSwgMTY0MzI1LCAxNjQzMjksIDE2NDMzMywgCisgICAgMTY0MzM3LCAxNjQzNDEsIDE2NDM0NSwgMTY0MzQ5LCAxNjQzNTMsIDE2NDM1NywgMTY0MzYxLCAxNjQzNjUsIDE2NDM2OSwgCisgICAgMTY0MzczLCAxNjQzNzcsIDE2NDM4MSwgMTY0Mzg1LCAxNjQzODksIDE2NDM5MywgMTY0Mzk3LCAxNjQ0MDEsIDE2NDQwNSwgCisgICAgMTY0NDA5LCAxNjQ0MTMsIDE2NDQxNywgMTY0NDIxLCAxNjQ0MjUsIDE2NDQyOSwgMTY0NDMzLCAxNjQ0MzcsIDE2NDQ0MSwgCisgICAgMTY0NDQ1LCAxNjQ0NDksIDE2NDQ1MywgMTY0NDU3LCAxNjQ0NjEsIDE2NDQ2NSwgMTY0NDY5LCAxNjQ0NzMsIDE2NDQ3NywgCisgICAgMTY0NDgxLCAxNjQ0ODUsIDE2NDQ4OSwgMTY0NDkzLCAxNjQ0OTcsIDE2NDUwMSwgMTY0NTA1LCAxNjQ1MDksIDE2NDUxMywgCisgICAgMTY0NTE3LCAxNjQ1MjEsIDE2NDUyNSwgMTY0NTI5LCAxNjQ1MzMsIDE2NDUzNywgMTY0NTQxLCAxNjQ1NDUsIDE2NDU0OSwgCisgICAgMTY0NTUzLCAxNjQ1NTcsIDE2NDU2MSwgMTY0NTY1LCAxNjQ1NjksIDE2NDU3MywgMTY0NTc3LCAxNjQ1ODEsIDE2NDU4NSwgCisgICAgMTY0NTg5LCAxNjQ1OTMsIDE2NDU5NywgMTY0NjAxLCAxNjQ2MDUsIDE2NDYwOSwgMTY0NjEzLCAxNjQ2MTcsIDE2NDYyMSwgCisgICAgMTY0NjI1LCAxNjQ2MjksIDE2NDYzMywgMTY0NjM3LCAxNjQ2NDEsIDE2NDY0NSwgMTY0NjQ5LCAxNjQ2NTMsIDE2NDY1NywgCisgICAgMTY0NjYxLCAxNjQ2NjUsIDE2NDY2OSwgMTY0NjczLCAxNjQ2NzcsIDE2NDY4MSwgMTY0Njg1LCAxNjQ2ODksIDE2NDY5MywgCisgICAgMTY0Njk3LCAxNjQ3MDEsIDE2NDcwNSwgMTY0NzA5LCAxNjQ3MTMsIDE2NDcxNywgMTY0NzIxLCAxNjQ3MjUsIDE2NDcyOSwgCisgICAgMTY0NzMzLCAxNjQ3MzcsIDE2NDc0MSwgMTY0NzQ1LCAxNjQ3NDksIDE2NDc1MywgMTY0NzU3LCAxNjQ3NjEsIDE2NDc2NSwgCisgICAgMTY0NzY5LCAxNjQ3NzMsIDE2NDc3NywgMTY0NzgxLCAxNjQ3ODUsIDE2NDc4OSwgMTY0NzkzLCAxNjQ3OTcsIDE2NDgwMSwgCisgICAgMTY0ODA1LCAxNjQ4MDksIDE2NDgxMywgMTY0ODE3LCAxNjQ4MjEsIDE2NDgyNSwgMTY0ODI5LCAxNjQ4MzMsIDE2NDgzNywgCisgICAgMTY0ODQxLCAxNjQ4NDUsIDE2NDg0OSwgMTY0ODUzLCAxNjQ4NTcsIDE2NDg2MSwgMTY0ODY1LCAxNjQ4NjksIDE2NDg3MywgCisgICAgMTY0ODc3LCAxNjQ4ODEsIDE2NDg4NSwgMTY0ODg5LCAxNjQ4OTMsIDE2NDg5NywgMTY0OTAxLCAxNjQ5MDUsIDE2NDkwOSwgCisgICAgMTY0OTEzLCAxNjQ5MTcsIDE2NDkyMSwgMTY0OTI1LCAxNjQ5MjksIDE2NDkzMywgMTY0OTM3LCAxNjQ5NDEsIDE2NDk0NSwgCisgICAgMTY0OTQ5LCAxNjQ5NTMsIDE2NDk1NywgMTY0OTYxLCAxNjQ5NjUsIDE2NDk2OSwgMTY0OTczLCAxNjQ5NzcsIDE2NDk4MSwgCisgICAgMTY0OTg1LCAxNjQ5ODksIDE2NDk5MywgMTY0OTk3LCAxNjUwMDEsIDE2NTAwNSwgMTY1MDA5LCAxNjUwMTMsIDE2NTAxNywgCisgICAgMTY1MDIxLCAxNjUwMjUsIDE2NTAyOSwgMTY1MDMzLCAxNjUwMzcsIDE2NTA0MSwgMTY1MDQ1LCAxNjUwNDksIDE2NTA1MywgCisgICAgMTY1MDU3LCAxNjUwNjEsIDE2NTA2NSwgMTY1MDY5LCAxNjUwNzMsIDE2NTA3NywgMTY1MDgxLCAxNjUwODUsIDE2NTA4OSwgCisgICAgMTY1MDkzLCAxNjUwOTcsIDE2NTEwMSwgMTY1MTA1LCAxNjUxMDksIDE2NTExMywgMTY1MTE3LCAxNjUxMjEsIDE2NTEyNSwgCisgICAgMTY1MTI5LCAxNjUxMzMsIDE2NTEzNywgMTY1MTQxLCAxNjUxNDUsIDE2NTE0OSwgMTY1MTUzLCAxNjUxNTcsIDE2NTE2MSwgCisgICAgMTY1MTY1LCAxNjUxNjksIDE2NTE3MywgMTY1MTc3LCAxNjUxODEsIDE2NTE4NSwgMTY1MTg5LCAxNjUxOTMsIDE2NTE5NywgCisgICAgMTY1MjAxLCAxNjUyMDUsIDE2NTIwOSwgMTY1MjEzLCAxNjUyMTcsIDE2NTIyMSwgMTY1MjI1LCAxNjUyMjksIDE2NTIzMywgCisgICAgMTY1MjM3LCAxNjUyNDEsIDE2NTI0NSwgMTY1MjQ5LCAxNjUyNTMsIDE2NTI1NywgMTY1MjYxLCAxNjUyNjUsIDE2NTI2OSwgCisgICAgMTY1MjczLCAxNjUyNzcsIDE2NTI4MSwgMTY1Mjg1LCAxNjUyODksIDE2NTI5MywgMTY1Mjk3LCAxNjUzMDEsIDE2NTMwNSwgCisgICAgMTY1MzA5LCAxNjUzMTMsIDE2NTMxNywgMTY1MzIxLCAxNjUzMjUsIDE2NTMyOSwgMTY1MzMzLCAxNjUzMzcsIDE2NTM0MSwgCisgICAgMTY1MzQ1LCAxNjUzNDksIDE2NTM1MywgMTY1MzU3LCAxNjUzNjEsIDE2NTM2NSwgMTY1MzY5LCAxNjUzNzMsIDE2NTM3NywgCisgICAgMTY1MzgxLCAxNjUzODUsIDE2NTM4OSwgMTY1MzkzLCAxNjUzOTcsIDE2NTQwMSwgMTY1NDA1LCAxNjU0MDksIDE2NTQxMywgCisgICAgMTY1NDE3LCAxNjU0MjEsIDE2NTQyNSwgMTY1NDI5LCAxNjU0MzMsIDE2NTQzNywgMTY1NDQxLCAxNjU0NDUsIDE2NTQ0OSwgCisgICAgMTY1NDUzLCAxNjU0NTcsIDE2NTQ2MSwgMTY1NDY1LCAxNjU0NjksIDE2NTQ3MywgMTY1NDc3LCAxNjU0ODEsIDE2NTQ4NSwgCisgICAgMTY1NDg5LCAxNjU0OTMsIDE2NTQ5NywgMTY1NTAxLCAxNjU1MDUsIDE2NTUwOSwgMTY1NTEzLCAxNjU1MTcsIDE2NTUyMSwgCisgICAgMTY1NTI1LCAxNjU1MjksIDE2NTUzMywgMTY1NTM3LCAxNjU1NDEsIDE2NTU0NSwgMTY1NTQ5LCAxNjU1NTMsIDE2NTU1NywgCisgICAgMTY1NTYxLCAxNjU1NjUsIDE2NTU2OSwgMTY1NTczLCAxNjU1NzcsIDE2NTU4MSwgMTY1NTg1LCAxNjU1ODksIDE2NTU5MywgCisgICAgMTY1NTk3LCAxNjU2MDEsIDE2NTYwNSwgMTY1NjA5LCAxNjU2MTMsIDE2NTYxNywgMTY1NjIxLCAxNjU2MjUsIDE2NTYyOSwgCisgICAgMTY1NjMzLCAxNjU2MzcsIDE2NTY0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0yMDA3OCwzMTg2ICsyMTM1MywzMjc5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTU5Nzk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTk4MDAsIDE1OTgwMywgMTU5ODA3LCAxNTk4MTEsIAotICAgIDE1OTgxNCwgMTU5ODE4LCAxNTk4MjIsIDE1OTgyNSwgMTU5ODI4LCAxNTk4MzIsIDE1OTgzNiwgMTU5ODM5LCAxNTk4NDIsIAotICAgIDE1OTg0NSwgMTU5ODQ4LCAxNTk4NTMsIDE1OTg1NiwgMTU5ODYwLCAxNTk4NjMsIDE1OTg2NiwgMTU5ODY5LCAxNTk4NzIsIAotICAgIDE1OTg3NSwgMTU5ODc4LCAxNTk4ODIsIDE1OTg4NSwgMTU5ODg5LCAxNTk4OTIsIDE1OTg5NSwgMTU5ODk5LCAxNTk5MDMsIAotICAgIDE1OTkwNywgMTU5OTExLCAxNTk5MTYsIDE1OTkyMSwgMTU5OTI3LCAxNTk5MzMsIDE1OTkzOSwgMTU5OTQ0LCAxNTk5NTAsIAotICAgIDE1OTk1NiwgMTU5OTYyLCAxNTk5NjcsIDE1OTk3MywgMTU5OTc5LCAxNTk5ODQsIDE1OTk5MCwgMTU5OTk2LCAxNjAwMDEsIAotICAgIDE2MDAwNywgMTYwMDEzLCAxNjAwMTgsIDE2MDAyMywgMTYwMDI5LCAxNjAwMzQsIDE2MDA0MCwgMTYwMDQ2LCAxNjAwNTIsIAotICAgIDE2MDA1OCwgMTYwMDY0LCAxNjAwNjgsIDE2MDA3MywgMTYwMDc3LCAxNjAwODIsIDE2MDA4NiwgMTYwMDkxLCAxNjAwOTYsIAotICAgIDE2MDEwMiwgMTYwMTA4LCAxNjAxMTQsIDE2MDExOSwgMTYwMTI1LCAxNjAxMzEsIDE2MDEzNywgMTYwMTQyLCAxNjAxNDgsIAotICAgIDE2MDE1NCwgMTYwMTU5LCAxNjAxNjUsIDE2MDE3MSwgMTYwMTc2LCAxNjAxODIsIDE2MDE4OCwgMTYwMTkzLCAxNjAxOTgsIAotICAgIDE2MDIwNCwgMTYwMjA5LCAxNjAyMTUsIDE2MDIyMSwgMTYwMjI3LCAxNjAyMzMsIDE2MDIzOSwgMTYwMjQ0LCAxNjAyNDgsIAotICAgIDE2MDI1MywgMTYwMjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjU2NDUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE2NTY0OSwgMTY1NjUyLCAxNjU2NTYsIDE2NTY2MCwgMTY1NjYzLCAxNjU2NjcsIDE2NTY3MSwgMTY1Njc0LCAKKyAgICAxNjU2NzcsIDE2NTY4MSwgMTY1Njg1LCAxNjU2ODgsIDE2NTY5MSwgMTY1Njk0LCAxNjU2OTcsIDE2NTcwMiwgMTY1NzA1LCAKKyAgICAxNjU3MDksIDE2NTcxMiwgMTY1NzE1LCAxNjU3MTgsIDE2NTcyMSwgMTY1NzI0LCAxNjU3MjcsIDE2NTczMSwgMTY1NzM0LCAKKyAgICAxNjU3MzgsIDE2NTc0MSwgMTY1NzQ0LCAxNjU3NDgsIDE2NTc1MiwgMTY1NzU2LCAxNjU3NjAsIDE2NTc2NSwgMTY1NzcwLCAKKyAgICAxNjU3NzYsIDE2NTc4MiwgMTY1Nzg4LCAxNjU3OTMsIDE2NTc5OSwgMTY1ODA1LCAxNjU4MTEsIDE2NTgxNiwgMTY1ODIyLCAKKyAgICAxNjU4MjgsIDE2NTgzMywgMTY1ODM5LCAxNjU4NDUsIDE2NTg1MCwgMTY1ODU2LCAxNjU4NjIsIDE2NTg2NywgMTY1ODczLCAKKyAgICAxNjU4NzksIDE2NTg4NCwgMTY1ODkwLCAxNjU4OTYsIDE2NTkwMiwgMTY1OTA4LCAxNjU5MTQsIDE2NTkxOCwgMTY1OTIzLCAKKyAgICAxNjU5MjcsIDE2NTkzMiwgMTY1OTM2LCAxNjU5NDEsIDE2NTk0NiwgMTY1OTUyLCAxNjU5NTgsIDE2NTk2NCwgMTY1OTY5LCAKKyAgICAxNjU5NzUsIDE2NTk4MSwgMTY1OTg3LCAxNjU5OTIsIDE2NTk5OCwgMTY2MDA0LCAxNjYwMDksIDE2NjAxNSwgMTY2MDIxLCAKKyAgICAxNjYwMjYsIDE2NjAzMiwgMTY2MDM4LCAxNjYwNDMsIDE2NjA0OSwgMTY2MDU1LCAxNjYwNjAsIDE2NjA2NiwgMTY2MDcyLCAKKyAgICAxNjYwNzgsIDE2NjA4NCwgMTY2MDkwLCAxNjYwOTUsIDE2NjA5OSwgMTY2MTA0LCAxNjYxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDI2MCwgMTYwMjYzLCAxNjAyNjYsIDE2MDI2OSwgCi0gICAgMTYwMjcyLCAxNjAyNzUsIDE2MDI3OCwgMTYwMjgxLCAxNjAyODQsIDE2MDI4NywgMTYwMjkwLCAxNjAyOTMsIDE2MDI5NiwgCi0gICAgMTYwMjk5LCAxNjAzMDIsIDE2MDMwNSwgMTYwMzA4LCAxNjAzMTEsIDE2MDMxNCwgMTYwMzE3LCAxNjAzMjAsIDE2MDMyMywgCi0gICAgMTYwMzI2LCAxNjAzMjksIDE2MDMzMiwgMTYwMzM1LCAxNjAzMzgsIDE2MDM0MSwgMTYwMzQ0LCAxNjAzNDcsIDE2MDM1MCwgCi0gICAgMTYwMzUzLCAxNjAzNTYsIDE2MDM1OSwgMTYwMzYyLCAxNjAzNjUsIDE2MDM2OCwgMTYwMzcxLCAxNjAzNzQsIDE2MDM3NywgCi0gICAgMTYwMzgwLCAxNjAzODMsIDE2MDM4NiwgMTYwMzg5LCAxNjAzOTIsIDE2MDM5NSwgMTYwMzk4LCAxNjA0MDEsIDE2MDQwNCwgCi0gICAgMTYwNDA3LCAxNjA0MTAsIDE2MDQxMywgMTYwNDE2LCAxNjA0MTksIDE2MDQyMiwgMTYwNDI1LCAxNjA0MjgsIDE2MDQzMSwgCi0gICAgMTYwNDM0LCAxNjA0MzcsIDE2MDQ0MCwgMTYwNDQzLCAxNjA0NDYsIDE2MDQ0OSwgMTYwNDUyLCAxNjA0NTUsIDE2MDQ1OCwgCi0gICAgMTYwNDYxLCAxNjA0NjQsIDE2MDQ2NywgMTYwNDcwLCAxNjA0NzMsIDE2MDQ3NiwgMTYwNDc5LCAxNjA0ODIsIDE2MDQ4NSwgCi0gICAgMTYwNDg4LCAxNjA0OTEsIDE2MDQ5NCwgMTYwNDk3LCAxNjA1MDAsIDE2MDUwMywgMTYwNTA2LCAxNjA1MDksIDE2MDUxMiwgCi0gICAgMTYwNTE1LCAxNjA1MTgsIDE2MDUyMSwgMTYwNTI0LCAxNjA1MjcsIDE2MDUzMCwgMTYwNTMzLCAxNjA1MzYsIDE2MDUzOSwgCi0gICAgMTYwNTQyLCAxNjA1NDUsIDE2MDU0OCwgMTYwNTUxLCAxNjA1NTQsIDE2MDU1NywgMTYwNTYwLCAxNjA1NjMsIDE2MDU2NiwgCi0gICAgMTYwNTY5LCAxNjA1NzIsIDE2MDU3NSwgMTYwNTc4LCAxNjA1ODEsIDE2MDU4NCwgMTYwNTg3LCAxNjA1OTAsIDE2MDU5MywgCi0gICAgMTYwNTk2LCAxNjA1OTksIDE2MDYwMiwgMTYwNjA1LCAxNjA2MDgsIDE2MDYxMSwgMTYwNjE0LCAxNjA2MTcsIDE2MDYyMCwgCi0gICAgMTYwNjIzLCAxNjA2MjYsIDE2MDYyOSwgMTYwNjMyLCAxNjA2MzUsIDE2MDYzOCwgMTYwNjQxLCAxNjA2NDQsIDE2MDY0NywgCi0gICAgMTYwNjUwLCAxNjA2NTMsIDE2MDY1NiwgMTYwNjU5LCAxNjA2NjIsIDE2MDY2NSwgMTYwNjY4LCAxNjA2NzEsIDE2MDY3NCwgCi0gICAgMTYwNjc3LCAxNjA2ODAsIDE2MDY4MywgMTYwNjg2LCAxNjA2ODksIDE2MDY5MiwgMTYwNjk1LCAxNjA2OTgsIDE2MDcwMSwgCi0gICAgMTYwNzA0LCAxNjA3MDcsIDE2MDcxMCwgMTYwNzEzLCAxNjA3MTYsIDE2MDcxOSwgMTYwNzIyLCAxNjA3MjUsIDE2MDcyOCwgCi0gICAgMTYwNzMxLCAxNjA3MzQsIDE2MDczNywgMTYwNzQwLCAxNjA3NDMsIDE2MDc0NiwgMTYwNzQ5LCAxNjA3NTIsIDE2MDc1NSwgCi0gICAgMTYwNzU4LCAxNjA3NjEsIDE2MDc2NCwgMTYwNzY3LCAxNjA3NzAsIDE2MDc3MywgMTYwNzc2LCAxNjA3NzksIDE2MDc4MiwgCi0gICAgMTYwNzg1LCAxNjA3ODgsIDE2MDc5MSwgMTYwNzk0LCAxNjA3OTcsIDE2MDgwMCwgMTYwODAzLCAxNjA4MDYsIDE2MDgwOSwgCi0gICAgMTYwODEyLCAxNjA4MTUsIDE2MDgxOCwgMTYwODIxLCAxNjA4MjQsIDE2MDgyNywgMTYwODMwLCAxNjA4MzMsIDE2MDgzNiwgCi0gICAgMTYwODM5LCAxNjA4NDIsIDE2MDg0NSwgMTYwODQ4LCAxNjA4NTEsIDE2MDg1NCwgMTYwODU3LCAxNjA4NjAsIDE2MDg2MywgCi0gICAgMTYwODY2LCAxNjA4NjksIDE2MDg3MiwgMTYwODc1LCAxNjA4NzgsIDE2MDg4MSwgMTYwODg0LCAxNjA4ODcsIDE2MDg5MCwgCi0gICAgMTYwODkzLCAxNjA4OTYsIDE2MDg5OSwgMTYwOTAyLCAxNjA5MDUsIDE2MDkwOCwgMTYwOTExLCAxNjA5MTQsIDE2MDkxNywgCi0gICAgMTYwOTIwLCAxNjA5MjMsIDE2MDkyNiwgMTYwOTI5LCAxNjA5MzIsIDE2MDkzNSwgMTYwOTM4LCAxNjA5NDEsIDE2MDk0NCwgCi0gICAgMTYwOTQ3LCAxNjA5NTAsIDE2MDk1MywgMTYwOTU2LCAxNjA5NTksIDE2MDk2MiwgMTYwOTY1LCAxNjA5NjgsIDE2MDk3MSwgCi0gICAgMTYwOTc0LCAxNjA5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDk4MCwgCi0gICAgMTYwOTgyLCAxNjA5ODQsIDE2MDk4OSwgMTYwOTkxLCAxNjA5OTYsIDE2MDk5OCwgMTYxMDAzLCAxNjEwMDUsIDE2MTAxMCwgCi0gICAgMTYxMDEyLCAxNjEwMTQsIDE2MTAxNiwgMTYxMDE4LCAxNjEwMjAsIDE2MTAyMiwgMTYxMDI0LCAxNjEwMjYsIDE2MTAyOCwgCi0gICAgMTYxMDMxLCAxNjEwMzUsIDE2MTAzNywgMTYxMDM5LCAxNjEwNDMsIDE2MTA0NywgMTYxMDUyLCAxNjEwNTQsIDE2MTA1NiwgCi0gICAgMTYxMDU4LCAxNjEwNjIsIDE2MTA2NSwgMTYxMDY3LCAxNjEwNzEsIDE2MTA3MywgMTYxMDc3LCAxNjEwNzksIDE2MTA4MywgCi0gICAgMTYxMDg2LCAxNjEwODgsIDE2MTA5MiwgMTYxMDk2LCAxNjEwOTgsIDE2MTEwNCwgMTYxMTA2LCAxNjExMTEsIDE2MTExMywgCi0gICAgMTYxMTE4LCAxNjExMjAsIDE2MTEyNSwgMTYxMTI3LCAxNjExMzIsIDE2MTEzNCwgMTYxMTM3LCAxNjExMzksIDE2MTE0MywgCi0gICAgMTYxMTQ1LCAxNjExNTIsIDE2MTE1NCwgMTYxMTU2LCAxNjExNTgsIDE2MTE2MywgMTYxMTY1LCAxNjExNjcsIDE2MTE2OSwgCi0gICAgMTYxMTcxLCAxNjExNzMsIDE2MTE3OCwgMTYxMTgyLCAxNjExODQsIDE2MTE4OSwgMTYxMTkzLCAxNjExOTUsIDE2MTIwMCwgCi0gICAgMTYxMjA0LCAxNjEyMDYsIDE2MTIxMSwgMTYxMjE1LCAxNjEyMTcsIDE2MTIxOSwgMTYxMjIxLCAxNjEyMjMsIDE2MTIyNywgCi0gICAgMTYxMjI5LCAxNjEyMzQsIDE2MTIzNiwgMTYxMjQyLCAxNjEyNDQsIDE2MTI1MCwgMTYxMjUyLCAxNjEyNTQsIDE2MTI1NiwgCi0gICAgMTYxMjYwLCAxNjEyNjIsIDE2MTI2OSwgMTYxMjcxLCAxNjEyNzgsIDE2MTI4MCwgMTYxMjg1LCAxNjEyOTEsIDE2MTI5MywgCi0gICAgMTYxMjk5LCAxNjEzMDYsIDE2MTMwOCwgMTYxMzE0LCAxNjEzMTksIDE2MTMyMSwgMTYxMzI3LCAxNjEzMzMsIDE2MTMzNSwgCi0gICAgMTYxMzQxLCAxNjEzNDcsIDE2MTM0OSwgMTYxMzU1LCAxNjEzNTksIDE2MTM2MSwgMTYxMzY2LCAxNjEzNjgsIDE2MTM3MCwgCi0gICAgMTYxMzc1LCAxNjEzNzcsIDE2MTM3OSwgMTYxMzg1LCAxNjEzODcsIDE2MTM5MiwgMTYxMzk2LCAxNjEzOTgsIDE2MTQwMywgCi0gICAgMTYxNDA3LCAxNjE0MDksIDE2MTQxNSwgMTYxNDE3LCAxNjE0MjEsIDE2MTQyMywgMTYxNDI3LCAxNjE0MjksIDE2MTQzNiwgCi0gICAgMTYxNDQzLCAxNjE0NDUsIDE2MTQ1MiwgMTYxNDU5LCAxNjE0NjEsIDE2MTQ2NiwgMTYxNDY4LCAxNjE0NzUsIDE2MTQ3NywgCi0gICAgMTYxNDgyLCAxNjE0ODQsIDE2MTQ5MCwgMTYxNDkyLCAxNjE0OTYsIDE2MTQ5OCwgMTYxNTA0LCAxNjE1MDYsIDE2MTUxMCwgCi0gICAgMTYxNTEyLCAxNjE1MTgsIDE2MTUyMCwgMTYxNTIyLCAxNjE1MjQsIDE2MTUyOSwgMTYxNTM0LCAxNjE1MzYsIDE2MTUzOCwgCi0gICAgMTYxNTQ4LCAxNjE1NTIsIDE2MTU1OSwgMTYxNTY2LCAxNjE1NzEsIDE2MTU3NiwgMTYxNTg4LCAxNjE1OTAsIDE2MTU5MiwgCi0gICAgMTYxNTk0LCAxNjE1OTYsIDE2MTU5OCwgMTYxNjAwLCAxNjE2MDIsIDE2MTYwNCwgMTYxNjA2LCAxNjE2MDgsIDE2MTYxMCwgCi0gICAgMTYxNjEyLCAxNjE2MTQsIDE2MTYxNiwgMTYxNjE4LCAxNjE2MjAsIDE2MTYyMiwgMTYxNjI0LCAxNjE2MjYsIDE2MTYyOCwgCi0gICAgMTYxNjMwLCAxNjE2MzYsIDE2MTY0MywgMTYxNjQ4LCAxNjE2NTYsIDE2MTY2NCwgMTYxNjY5LCAxNjE2ODAsIDE2MTY4MiwgCi0gICAgMTYxNjg0LCAxNjE2ODYsIDE2MTY4OCwgMTYxNjkwLCAxNjE2OTIsIDE2MTY5NCwgMTYxNjk2LCAxNjE2OTgsIDE2MTcwMCwgCi0gICAgMTYxNzAyLCAxNjE3MDQsIDE2MTcwNiwgMTYxNzA4LCAxNjE3MTAsIDE2MTcxMiwgMTYxNzE3LCAxNjE3MTksIDE2MTcyMSwgCi0gICAgMTYxNzI3LCAxNjE3MzksIDE2MTc1MCwgMTYxNzUyLCAxNjE3NTQsIDE2MTc1NiwgMTYxNzU4LCAxNjE3NjAsIDE2MTc2MiwgCi0gICAgMTYxNzY0LCAxNjE3NjYsIDE2MTc2OCwgMTYxNzcwLCAxNjE3NzIsIDE2MTc3NCwgMTYxNzc2LCAxNjE3NzgsIDE2MTc4MCwgCi0gICAgMTYxNzgyLCAxNjE3ODQsIDE2MTc4NiwgMTYxNzg4LCAxNjE3OTAsIDE2MTc5MiwgMTYxNzk0LCAxNjE3OTYsIDE2MTc5OCwgCi0gICAgMTYxODAwLCAxNjE4MDIsIDE2MTgwNCwgMTYxODA2LCAxNjE4MDgsIDE2MTgxMCwgMTYxODEyLCAxNjE4MTQsIDE2MTgxNiwgCi0gICAgMTYxODE4LCAxNjE4MjAsIDE2MTgyMiwgMTYxODI0LCAxNjE4MjYsIDE2MTgyOCwgMTYxODMwLCAxNjE4MzIsIDE2MTgzNCwgCi0gICAgMTYxODM2LCAxNjE4MzgsIDE2MTg0MCwgMTYxODQyLCAxNjE4NDQsIDE2MTg0NiwgMTYxODQ4LCAxNjE4NTAsIDE2MTg1MiwgCi0gICAgMTYxODU0LCAxNjE4NTYsIDE2MTg1OCwgMTYxODYwLCAxNjE4NjIsIDE2MTg2NCwgMTYxODY2LCAxNjE4NjgsIDE2MTg3MCwgCi0gICAgMTYxODcyLCAxNjE4NzQsIDE2MTg3NiwgMTYxODc4LCAxNjE4ODAsIDE2MTg4MiwgMTYxODg0LCAxNjE4ODYsIDE2MTg4OCwgCi0gICAgMTYxODkwLCAxNjE4OTIsIDE2MTg5NCwgMTYxODk2LCAxNjE4OTgsIDE2MTkwMCwgMTYxOTAyLCAxNjE5MDQsIDE2MTkwNiwgCi0gICAgMTYxOTA4LCAxNjE5MTAsIDE2MTkxMiwgMTYxOTE0LCAxNjE5MTYsIDE2MTkxOCwgMTYxOTIwLCAxNjE5MjIsIDE2MTkyNCwgCi0gICAgMTYxOTI2LCAxNjE5MjgsIDE2MTkzMCwgMTYxOTMyLCAxNjE5MzQsIDE2MTkzNiwgMTYxOTM4LCAxNjE5NDAsIDE2MTk0MiwgCi0gICAgMTYxOTQ0LCAxNjE5NDYsIDE2MTk0OCwgMTYxOTUwLCAxNjE5NTIsIDE2MTk1NCwgMTYxOTU2LCAxNjE5NTgsIDE2MTk2MCwgCi0gICAgMTYxOTYyLCAxNjE5NjQsIDE2MTk2NiwgMTYxOTY4LCAxNjE5NzAsIDE2MTk3MiwgMTYxOTc0LCAxNjE5NzYsIDE2MTk3OCwgCi0gICAgMTYxOTgwLCAxNjE5ODIsIDE2MTk4NCwgMTYxOTg2LCAxNjE5ODgsIDE2MTk5MCwgMTYxOTkyLCAxNjE5OTQsIDE2MTk5NiwgCi0gICAgMTYxOTk4LCAxNjIwMDAsIDE2MjAwMiwgMTYyMDA0LCAxNjIwMDYsIDE2MjAwOCwgMTYyMDEwLCAxNjIwMTIsIDE2MjAxNCwgCi0gICAgMTYyMDE2LCAxNjIwMTgsIDE2MjAyMCwgMTYyMDIyLCAxNjIwMjQsIDE2MjAyNiwgMTYyMDI4LCAxNjIwMzAsIDE2MjAzMiwgCi0gICAgMTYyMDM0LCAxNjIwMzYsIDE2MjAzOCwgMTYyMDQwLCAxNjIwNDIsIDE2MjA0NCwgMTYyMDQ2LCAxNjIwNDgsIDE2MjA1MCwgCi0gICAgMTYyMDUyLCAxNjIwNTQsIDE2MjA1NiwgMTYyMDU4LCAxNjIwNjAsIDE2MjA2MiwgMTYyMDY0LCAxNjIwNjYsIDE2MjA2OCwgCi0gICAgMTYyMDcwLCAxNjIwNzIsIDE2MjA3NCwgMTYyMDc2LCAxNjIwNzgsIDE2MjA4MCwgMTYyMDgyLCAxNjIwODQsIDE2MjA4NiwgCi0gICAgMTYyMDg4LCAxNjIwOTAsIDE2MjA5MiwgMTYyMDk0LCAxNjIwOTYsIDE2MjA5OCwgMTYyMTAwLCAxNjIxMDIsIDE2MjEwNCwgCi0gICAgMTYyMTA2LCAxNjIxMDgsIDE2MjExMCwgMTYyMTEyLCAxNjIxMTQsIDE2MjExNiwgMTYyMTE4LCAxNjIxMjAsIDE2MjEyMiwgCi0gICAgMTYyMTI0LCAxNjIxMjYsIDE2MjEyOCwgMTYyMTMwLCAxNjIxMzIsIDE2MjEzNCwgMTYyMTM2LCAxNjIxMzgsIDE2MjE0MCwgCi0gICAgMTYyMTQyLCAxNjIxNDQsIDE2MjE0NiwgMTYyMTQ4LCAxNjIxNTAsIDE2MjE1MiwgMTYyMTU0LCAxNjIxNTYsIDE2MjE1OCwgCi0gICAgMTYyMTYwLCAxNjIxNjIsIDE2MjE2NCwgMTYyMTY2LCAxNjIxNjgsIDE2MjE3MCwgMTYyMTcyLCAxNjIxNzQsIDE2MjE3NiwgCi0gICAgMTYyMTc4LCAxNjIxODAsIDE2MjE4MiwgMTYyMTg0LCAxNjIxODYsIDE2MjE4OCwgMTYyMTkwLCAxNjIxOTIsIDE2MjE5NCwgCi0gICAgMTYyMTk2LCAxNjIxOTgsIDE2MjIwMCwgMTYyMjAyLCAxNjIyMDQsIDE2MjIwNiwgMTYyMjA4LCAxNjIyMTAsIDE2MjIxMiwgCi0gICAgMTYyMjE0LCAxNjIyMTYsIDE2MjIxOCwgMTYyMjIwLCAxNjIyMjIsIDE2MjIyNCwgMTYyMjI2LCAxNjIyMjgsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE2MjIzMCwgMTYyMjQwLCAxNjIyNTAsIDE2MjI1OSwgMTYyMjY4LCAxNjIyODEsIDE2MjI5NCwgMTYyMzA2LCAKLSAgICAxNjIzMTgsIDE2MjMyOCwgMTYyMzM4LCAxNjIzNDgsIDE2MjM1OCwgMTYyMzY5LCAxNjIzODAsIDE2MjM5MCwgMTYyMzk5LCAKLSAgICAxNjI0MDgsIDE2MjQxNywgMTYyNDMwLCAxNjI0NDMsIDE2MjQ1NSwgMTYyNDY3LCAxNjI0NzcsIDE2MjQ4NywgMTYyNDk3LCAKLSAgICAxNjI1MDcsIDE2MjUxNiwgMTYyNTI1LCAxNjI1MzUsIDE2MjU0NSwgMTYyNTU0LCAxNjI1NjMsIDE2MjU3MywgMTYyNTgzLCAKLSAgICAxNjI1OTIsIDE2MjYwMSwgMTYyNjExLCAxNjI2MjEsIDE2MjYzMiwgMTYyNjQzLCAxNjI2NTMsIDE2MjY2NiwgMTYyNjc3LCAKLSAgICAxNjI2OTEsIDE2MjY5OSwgMTYyNzEwLCAxNjI3MTgsIDE2MjcyNiwgMTYyNzM0LCAxNjI3NDIsIDE2Mjc1MCwgMTYyNzU4LCAKLSAgICAxNjI3NjcsIDE2Mjc3NiwgMTYyNzg2LCAxNjI3OTYsIDE2MjgwNSwgMTYyODE0LCAxNjI4MjQsIDE2MjgzNCwgMTYyODQyLCAKLSAgICAxNjI4NTAsIDE2Mjg1NywgMTYyODY3LCAxNjI4NzYsIDE2Mjg4NCwgMTYyODkxLCAxNjI5MDEsIDE2MjkxMCwgMTYyOTIxLCAKLSAgICAxNjI5MzIsIDE2Mjk0NCwgMTYyOTU1LCAxNjI5NjUsIDE2Mjk3NiwgMTYyOTg2LCAxNjI5OTcsIDE2MzAwNSwgMTYzMDA5LCAKLSAgICAxNjMwMTMsIDE2MzAxNywgMTYzMDIxLCAxNjMwMjUsIDE2MzAyOSwgMTYzMDMzLCAxNjMwMzcsIDE2MzA0MSwgMTYzMDQ1LCAKLSAgICAxNjMwNDksIDE2MzA1MywgMTYzMDU2LCAxNjMwNTksIDE2MzA2MywgMTYzMDY3LCAxNjMwNzEsIDE2MzA3NSwgMTYzMDc5LCAKLSAgICAxNjMwODMsIDE2MzA4NywgMTYzMDkxLCAxNjMwOTQsIDE2MzA5OCwgMTYzMTAyLCAxNjMxMDYsIDE2MzExMCwgMTYzMTE0LCAKLSAgICAxNjMxMTgsIDE2MzEyMiwgMTYzMTI2LCAxNjMxMzAsIDE2MzEzNCwgMTYzMTM4LCAxNjMxNDIsIDE2MzE0NiwgMTYzMTUwLCAKLSAgICAxNjMxNTQsIDE2MzE1OCwgMTYzMTYyLCAxNjMxNjYsIDE2MzE3MCwgMTYzMTc0LCAxNjMxNzgsIDE2MzE4MiwgMTYzMTg2LCAKLSAgICAxNjMxOTAsIDE2MzE5NCwgMTYzMTk4LCAxNjMyMDIsIDE2MzIwNiwgMTYzMjEwLCAxNjMyMTQsIDE2MzIxOCwgMTYzMjIyLCAKLSAgICAxNjMyMjYsIDE2MzIzMCwgMTYzMjM0LCAxNjMyMzgsIDE2MzI0MiwgMTYzMjQ2LCAxNjMyNTAsIDE2MzI1NCwgMTYzMjU4LCAKLSAgICAxNjMyNjIsIDE2MzI2NiwgMTYzMjcwLCAxNjMyNzQsIDE2MzI3OCwgMTYzMjgyLCAxNjMyODYsIDE2MzI5MCwgMTYzMjk0LCAKLSAgICAxNjMyOTgsIDE2MzMwMiwgMTYzMzA2LCAxNjMzMTAsIDE2MzMxNCwgMTYzMzE4LCAxNjMzMjIsIDE2MzMyNiwgMTYzMzMwLCAKLSAgICAxNjMzMzQsIDE2MzMzOCwgMTYzMzQyLCAxNjMzNDYsIDE2MzM1MCwgMTYzMzU0LCAxNjMzNTgsIDE2MzM2MiwgMTYzMzY2LCAKLSAgICAxNjMzNzAsIDE2MzM3NCwgMTYzMzc4LCAxNjMzODIsIDE2MzM4NiwgMTYzMzkwLCAxNjMzOTQsIDE2MzM5OCwgMTYzNDAxLCAKLSAgICAxNjM0MDUsIDE2MzQwOSwgMTYzNDEzLCAxNjM0MTcsIDE2MzQyMSwgMTYzNDI1LCAxNjM0MjksIDE2MzQzMywgMTYzNDM3LCAKLSAgICAxNjM0NDEsIDE2MzQ0NSwgMTYzNDQ5LCAxNjM0NTMsIDE2MzQ1NywgMTYzNDYxLCAxNjM0NjUsIDE2MzQ2OSwgMTYzNDczLCAKLSAgICAxNjM0NzcsIDE2MzQ4MSwgMTYzNDg1LCAxNjM0ODksIDE2MzQ5MywgMTYzNDk3LCAxNjM1MDEsIDE2MzUwNSwgMTYzNTA5LCAKLSAgICAxNjM1MTMsIDE2MzUxNywgMTYzNTIxLCAxNjM1MjUsIDE2MzUyOSwgMTYzNTMzLCAxNjM1MzcsIDE2MzU0MSwgMTYzNTQ1LCAKLSAgICAxNjM1NDksIDE2MzU1MywgMTYzNTU3LCAxNjM1NjEsIDE2MzU2NSwgMTYzNTY5LCAxNjM1NzMsIDE2MzU3NywgMTYzNTgxLCAKLSAgICAxNjM1ODUsIDE2MzU4OSwgMTYzNTkzLCAxNjM1OTcsIDE2MzYwMSwgMTYzNjA1LCAxNjM2MDksIDE2MzYxMywgMTYzNjE3LCAKLSAgICAxNjM2MjEsIDE2MzYyNSwgMTYzNjI5LCAxNjM2MzMsIDE2MzYzNywgMTYzNjQxLCAxNjM2NDUsIDE2MzY0OSwgMTYzNjUzLCAKLSAgICAxNjM2NTcsIDE2MzY2MSwgMTYzNjY1LCAxNjM2NjksIDE2MzY3MywgMTYzNjc3LCAxNjM2ODEsIDE2MzY4NSwgMTYzNjg5LCAKLSAgICAxNjM2OTMsIDE2MzY5NywgMTYzNzAxLCAxNjM3MDUsIDE2MzcwOSwgMTYzNzEzLCAxNjM3MTcsIDE2MzcyMSwgMTYzNzI1LCAKLSAgICAxNjM3MjksIDE2MzczMywgMTYzNzM3LCAxNjM3NDEsIDE2Mzc0NSwgMTYzNzQ5LCAxNjM3NTMsIDE2Mzc1NywgMTYzNzYxLCAKLSAgICAxNjM3NjUsIDE2Mzc2OSwgMTYzNzczLCAxNjM3NzcsIDE2Mzc4MSwgMTYzNzg1LCAxNjM3ODksIDE2Mzc5MywgMTYzNzk3LCAKLSAgICAxNjM4MDEsIDE2MzgwNSwgMTYzODA5LCAxNjM4MTMsIDE2MzgxNywgMTYzODIxLCAxNjM4MjUsIDE2MzgyOSwgMTYzODMzLCAKLSAgICAxNjM4MzcsIDE2Mzg0MSwgMTYzODQ1LCAxNjM4NDksIDE2Mzg1MywgMTYzODU3LCAxNjM4NjEsIDE2Mzg2NSwgMTYzODY5LCAKLSAgICAxNjM4NzMsIDE2Mzg3NywgMTYzODgxLCAxNjM4ODUsIDE2Mzg4OSwgMTYzODkzLCAxNjM4OTcsIDE2MzkwMSwgMTYzOTA1LCAKLSAgICAxNjM5MDksIDE2MzkxMywgMTYzOTE3LCAxNjM5MjEsIDE2MzkyNSwgMTYzOTI5LCAxNjM5MzMsIDE2MzkzNywgMTYzOTQxLCAKLSAgICAxNjM5NDUsIDE2Mzk0OSwgMTYzOTUzLCAxNjM5NTcsIDE2Mzk2MSwgMTYzOTY1LCAxNjM5NjksIDE2Mzk3MywgMTYzOTc3LCAKLSAgICAxNjM5ODEsIDE2Mzk4NSwgMTYzOTg5LCAxNjM5OTMsIDE2Mzk5NywgMTY0MDAxLCAxNjQwMDUsIDE2NDAwOSwgMTY0MDEzLCAKLSAgICAxNjQwMTcsIDE2NDAyMSwgMTY0MDI1LCAxNjQwMjksIDE2NDAzMywgMTY0MDM3LCAxNjQwNDEsIDE2NDA0NSwgMTY0MDQ5LCAKLSAgICAxNjQwNTMsIDE2NDA1NywgMTY0MDYxLCAxNjQwNjUsIDE2NDA2OSwgMTY0MDczLCAxNjQwNzcsIDE2NDA4MSwgMTY0MDg1LCAKLSAgICAxNjQwODksIDE2NDA5MywgMTY0MDk3LCAxNjQxMDEsIDE2NDEwNSwgMTY0MTA5LCAxNjQxMTMsIDE2NDExNywgMTY0MTIxLCAKLSAgICAxNjQxMjUsIDE2NDEyOSwgMTY0MTMzLCAxNjQxMzcsIDE2NDE0MSwgMTY0MTQ1LCAxNjQxNDksIDE2NDE1MywgMTY0MTU3LCAKLSAgICAxNjQxNjEsIDE2NDE2NSwgMTY0MTcwLCAxNjQxNzUsIDE2NDE4MCwgMTY0MTg0LCAxNjQxOTAsIDE2NDE5NywgMTY0MjA0LCAKLSAgICAxNjQyMTEsIDE2NDIxOCwgMTY0MjI1LCAxNjQyMzIsIDE2NDIzOSwgMTY0MjQ2LCAxNjQyNTMsIDE2NDI2MCwgMTY0MjY3LCAKLSAgICAxNjQyNzQsIDE2NDI4MSwgMTY0Mjg4LCAxNjQyOTUsIDE2NDMwMiwgMTY0MzA4LCAxNjQzMTUsIDE2NDMyMiwgMTY0MzI5LCAKLSAgICAxNjQzMzYsIDE2NDM0MywgMTY0MzUwLCAxNjQzNTcsIDE2NDM2NCwgMTY0MzcxLCAxNjQzNzgsIDE2NDM4NSwgMTY0MzkyLCAKLSAgICAxNjQzOTksIDE2NDQwNiwgMTY0NDEyLCAxNjQ0MTksIDE2NDQyNiwgMTY0NDM1LCAxNjQ0NDQsIDE2NDQ1MywgMTY0NDYyLCAKLSAgICAxNjQ0NjcsIDE2NDQ3MiwgMTY0NDc4LCAxNjQ0ODQsIDE2NDQ5MCwgMTY0NDk2LCAxNjQ1MDIsIDE2NDUwOCwgMTY0NTE0LCAKLSAgICAxNjQ1MjAsIDE2NDUyNiwgMTY0NTMyLCAxNjQ1MzgsIDE2NDU0NCwgMTY0NTQ5LCAxNjQ1NTUsIDE2NDU2NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTY2MTExLCAxNjYxMTQsIDE2NjExNywgMTY2MTIwLCAxNjYxMjMsIDE2NjEyNiwgMTY2MTI5LCAxNjYxMzIsIAorICAgIDE2NjEzNSwgMTY2MTM4LCAxNjYxNDEsIDE2NjE0NCwgMTY2MTQ3LCAxNjYxNTAsIDE2NjE1MywgMTY2MTU2LCAxNjYxNTksIAorICAgIDE2NjE2MiwgMTY2MTY1LCAxNjYxNjgsIDE2NjE3MSwgMTY2MTc0LCAxNjYxNzcsIDE2NjE4MCwgMTY2MTgzLCAxNjYxODYsIAorICAgIDE2NjE4OSwgMTY2MTkyLCAxNjYxOTUsIDE2NjE5OCwgMTY2MjAxLCAxNjYyMDQsIDE2NjIwNywgMTY2MjEwLCAxNjYyMTMsIAorICAgIDE2NjIxNiwgMTY2MjE5LCAxNjYyMjIsIDE2NjIyNSwgMTY2MjI4LCAxNjYyMzEsIDE2NjIzNCwgMTY2MjM3LCAxNjYyNDAsIAorICAgIDE2NjI0MywgMTY2MjQ2LCAxNjYyNDksIDE2NjI1MiwgMTY2MjU1LCAxNjYyNTgsIDE2NjI2MSwgMTY2MjY0LCAxNjYyNjcsIAorICAgIDE2NjI3MCwgMTY2MjczLCAxNjYyNzYsIDE2NjI3OSwgMTY2MjgyLCAxNjYyODUsIDE2NjI4OCwgMTY2MjkxLCAxNjYyOTQsIAorICAgIDE2NjI5NywgMTY2MzAwLCAxNjYzMDMsIDE2NjMwNiwgMTY2MzA5LCAxNjYzMTIsIDE2NjMxNSwgMTY2MzE4LCAxNjYzMjEsIAorICAgIDE2NjMyNCwgMTY2MzI3LCAxNjYzMzAsIDE2NjMzMywgMTY2MzM2LCAxNjYzMzksIDE2NjM0MiwgMTY2MzQ1LCAxNjYzNDgsIAorICAgIDE2NjM1MSwgMTY2MzU0LCAxNjYzNTcsIDE2NjM2MCwgMTY2MzYzLCAxNjYzNjYsIDE2NjM2OSwgMTY2MzcyLCAxNjYzNzUsIAorICAgIDE2NjM3OCwgMTY2MzgxLCAxNjYzODQsIDE2NjM4NywgMTY2MzkwLCAxNjYzOTMsIDE2NjM5NiwgMTY2Mzk5LCAxNjY0MDIsIAorICAgIDE2NjQwNSwgMTY2NDA4LCAxNjY0MTEsIDE2NjQxNCwgMTY2NDE3LCAxNjY0MjAsIDE2NjQyMywgMTY2NDI2LCAxNjY0MjksIAorICAgIDE2NjQzMiwgMTY2NDM1LCAxNjY0MzgsIDE2NjQ0MSwgMTY2NDQ0LCAxNjY0NDcsIDE2NjQ1MCwgMTY2NDUzLCAxNjY0NTYsIAorICAgIDE2NjQ1OSwgMTY2NDYyLCAxNjY0NjUsIDE2NjQ2OCwgMTY2NDcxLCAxNjY0NzQsIDE2NjQ3NywgMTY2NDgwLCAxNjY0ODMsIAorICAgIDE2NjQ4NiwgMTY2NDg5LCAxNjY0OTIsIDE2NjQ5NSwgMTY2NDk4LCAxNjY1MDEsIDE2NjUwNCwgMTY2NTA3LCAxNjY1MTAsIAorICAgIDE2NjUxMywgMTY2NTE2LCAxNjY1MTksIDE2NjUyMiwgMTY2NTI1LCAxNjY1MjgsIDE2NjUzMSwgMTY2NTM0LCAxNjY1MzcsIAorICAgIDE2NjU0MCwgMTY2NTQzLCAxNjY1NDYsIDE2NjU0OSwgMTY2NTUyLCAxNjY1NTUsIDE2NjU1OCwgMTY2NTYxLCAxNjY1NjQsIAorICAgIDE2NjU2NywgMTY2NTcwLCAxNjY1NzMsIDE2NjU3NiwgMTY2NTc5LCAxNjY1ODIsIDE2NjU4NSwgMTY2NTg4LCAxNjY1OTEsIAorICAgIDE2NjU5NCwgMTY2NTk3LCAxNjY2MDAsIDE2NjYwMywgMTY2NjA2LCAxNjY2MDksIDE2NjYxMiwgMTY2NjE1LCAxNjY2MTgsIAorICAgIDE2NjYyMSwgMTY2NjI0LCAxNjY2MjcsIDE2NjYzMCwgMTY2NjMzLCAxNjY2MzYsIDE2NjYzOSwgMTY2NjQyLCAxNjY2NDUsIAorICAgIDE2NjY0OCwgMTY2NjUxLCAxNjY2NTQsIDE2NjY1NywgMTY2NjYwLCAxNjY2NjMsIDE2NjY2NiwgMTY2NjY5LCAxNjY2NzIsIAorICAgIDE2NjY3NSwgMTY2Njc4LCAxNjY2ODEsIDE2NjY4NCwgMTY2Njg3LCAxNjY2OTAsIDE2NjY5MywgMTY2Njk2LCAxNjY2OTksIAorICAgIDE2NjcwMiwgMTY2NzA1LCAxNjY3MDgsIDE2NjcxMSwgMTY2NzE0LCAxNjY3MTcsIDE2NjcyMCwgMTY2NzIzLCAxNjY3MjYsIAorICAgIDE2NjcyOSwgMTY2NzMyLCAxNjY3MzUsIDE2NjczOCwgMTY2NzQxLCAxNjY3NDQsIDE2Njc0NywgMTY2NzUwLCAxNjY3NTMsIAorICAgIDE2Njc1NiwgMTY2NzU5LCAxNjY3NjIsIDE2Njc2NSwgMTY2NzY4LCAxNjY3NzEsIDE2Njc3NCwgMTY2Nzc3LCAxNjY3ODAsIAorICAgIDE2Njc4MywgMTY2Nzg2LCAxNjY3ODksIDE2Njc5MiwgMTY2Nzk1LCAxNjY3OTgsIDE2NjgwMSwgMTY2ODA0LCAxNjY4MDcsIAorICAgIDE2NjgxMCwgMTY2ODEzLCAxNjY4MTYsIDE2NjgxOSwgMTY2ODIyLCAxNjY4MjUsIDE2NjgyOCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2ODMxLCAxNjY4MzMsIDE2NjgzNSwgMTY2ODQwLCAxNjY4NDIsIAorICAgIDE2Njg0NywgMTY2ODQ5LCAxNjY4NTQsIDE2Njg1NiwgMTY2ODYxLCAxNjY4NjMsIDE2Njg2NSwgMTY2ODY3LCAxNjY4NjksIAorICAgIDE2Njg3MSwgMTY2ODczLCAxNjY4NzUsIDE2Njg3NywgMTY2ODc5LCAxNjY4ODIsIDE2Njg4NiwgMTY2ODg4LCAxNjY4OTAsIAorICAgIDE2Njg5NCwgMTY2ODk4LCAxNjY5MDMsIDE2NjkwNSwgMTY2OTA3LCAxNjY5MDksIDE2NjkxMywgMTY2OTE2LCAxNjY5MTgsIAorICAgIDE2NjkyMiwgMTY2OTI0LCAxNjY5MjgsIDE2NjkzMCwgMTY2OTM0LCAxNjY5MzcsIDE2NjkzOSwgMTY2OTQzLCAxNjY5NDcsIAorICAgIDE2Njk0OSwgMTY2OTU1LCAxNjY5NTcsIDE2Njk2MiwgMTY2OTY0LCAxNjY5NjksIDE2Njk3MSwgMTY2OTc2LCAxNjY5NzgsIAorICAgIDE2Njk4MywgMTY2OTg1LCAxNjY5ODgsIDE2Njk5MCwgMTY2OTk0LCAxNjY5OTYsIDE2NzAwMywgMTY3MDA1LCAxNjcwMDcsIAorICAgIDE2NzAwOSwgMTY3MDE0LCAxNjcwMTYsIDE2NzAxOCwgMTY3MDIwLCAxNjcwMjIsIDE2NzAyNCwgMTY3MDI5LCAxNjcwMzMsIAorICAgIDE2NzAzNSwgMTY3MDQwLCAxNjcwNDQsIDE2NzA0NiwgMTY3MDUxLCAxNjcwNTUsIDE2NzA1NywgMTY3MDYyLCAxNjcwNjYsIAorICAgIDE2NzA2OCwgMTY3MDcwLCAxNjcwNzIsIDE2NzA3NCwgMTY3MDc4LCAxNjcwODAsIDE2NzA4NSwgMTY3MDg3LCAxNjcwOTMsIAorICAgIDE2NzA5NSwgMTY3MTAxLCAxNjcxMDMsIDE2NzEwNSwgMTY3MTA3LCAxNjcxMTEsIDE2NzExMywgMTY3MTIwLCAxNjcxMjIsIAorICAgIDE2NzEyOSwgMTY3MTMxLCAxNjcxMzYsIDE2NzE0MiwgMTY3MTQ0LCAxNjcxNTAsIDE2NzE1NywgMTY3MTU5LCAxNjcxNjUsIAorICAgIDE2NzE3MCwgMTY3MTcyLCAxNjcxNzgsIDE2NzE4NCwgMTY3MTg2LCAxNjcxOTIsIDE2NzE5OCwgMTY3MjAwLCAxNjcyMDYsIAorICAgIDE2NzIxMCwgMTY3MjEyLCAxNjcyMTcsIDE2NzIxOSwgMTY3MjIxLCAxNjcyMjYsIDE2NzIyOCwgMTY3MjMwLCAxNjcyMzYsIAorICAgIDE2NzIzOCwgMTY3MjQzLCAxNjcyNDcsIDE2NzI0OSwgMTY3MjU0LCAxNjcyNTgsIDE2NzI2MCwgMTY3MjY2LCAxNjcyNjgsIAorICAgIDE2NzI3MiwgMTY3Mjc0LCAxNjcyNzgsIDE2NzI4MCwgMTY3Mjg3LCAxNjcyOTQsIDE2NzI5NiwgMTY3MzAzLCAxNjczMTAsIAorICAgIDE2NzMxMiwgMTY3MzE3LCAxNjczMTksIDE2NzMyNiwgMTY3MzI4LCAxNjczMzMsIDE2NzMzNSwgMTY3MzQxLCAxNjczNDMsIAorICAgIDE2NzM0NywgMTY3MzQ5LCAxNjczNTUsIDE2NzM1NywgMTY3MzYxLCAxNjczNjMsIDE2NzM2OSwgMTY3MzcxLCAxNjczNzMsIAorICAgIDE2NzM3NSwgMTY3MzgwLCAxNjczODUsIDE2NzM4NywgMTY3Mzg5LCAxNjczOTksIDE2NzQwNCwgMTY3NDExLCAxNjc0MTgsIAorICAgIDE2NzQyMywgMTY3NDI4LCAxNjc0NDAsIDE2NzQ0MiwgMTY3NDQ0LCAxNjc0NDYsIDE2NzQ0OCwgMTY3NDUwLCAxNjc0NTIsIAorICAgIDE2NzQ1NCwgMTY3NDU2LCAxNjc0NTgsIDE2NzQ2MCwgMTY3NDYyLCAxNjc0NjQsIDE2NzQ2NiwgMTY3NDY4LCAxNjc0NzAsIAorICAgIDE2NzQ3MiwgMTY3NDc0LCAxNjc0NzYsIDE2NzQ3OCwgMTY3NDgwLCAxNjc0ODIsIDE2NzQ4OCwgMTY3NDk1LCAxNjc1MDAsIAorICAgIDE2NzUwOCwgMTY3NTE2LCAxNjc1MjEsIDE2NzUzMiwgMTY3NTM0LCAxNjc1MzYsIDE2NzUzOCwgMTY3NTQwLCAxNjc1NDIsIAorICAgIDE2NzU0NCwgMTY3NTQ2LCAxNjc1NDgsIDE2NzU1MCwgMTY3NTUyLCAxNjc1NTQsIDE2NzU1NiwgMTY3NTU4LCAxNjc1NjAsIAorICAgIDE2NzU2MiwgMTY3NTY0LCAxNjc1NjksIDE2NzU3MSwgMTY3NTczLCAxNjc1NzksIDE2NzU5MSwgMTY3NjAyLCAxNjc2MDQsIAorICAgIDE2NzYwNiwgMTY3NjA4LCAxNjc2MTAsIDE2NzYxMiwgMTY3NjE0LCAxNjc2MTYsIDE2NzYxOCwgMTY3NjIwLCAxNjc2MjIsIAorICAgIDE2NzYyNCwgMTY3NjI2LCAxNjc2MjgsIDE2NzYzMCwgMTY3NjMyLCAxNjc2MzQsIDE2NzYzNiwgMTY3NjM4LCAxNjc2NDAsIAorICAgIDE2NzY0MiwgMTY3NjQ0LCAxNjc2NDYsIDE2NzY0OCwgMTY3NjUwLCAxNjc2NTIsIDE2NzY1NCwgMTY3NjU2LCAxNjc2NTgsIAorICAgIDE2NzY2MCwgMTY3NjYyLCAxNjc2NjQsIDE2NzY2NiwgMTY3NjY4LCAxNjc2NzAsIDE2NzY3MiwgMTY3Njc0LCAxNjc2NzYsIAorICAgIDE2NzY3OCwgMTY3NjgwLCAxNjc2ODIsIDE2NzY4NCwgMTY3Njg2LCAxNjc2ODgsIDE2NzY5MCwgMTY3NjkyLCAxNjc2OTQsIAorICAgIDE2NzY5NiwgMTY3Njk4LCAxNjc3MDAsIDE2NzcwMiwgMTY3NzA0LCAxNjc3MDYsIDE2NzcwOCwgMTY3NzEwLCAxNjc3MTIsIAorICAgIDE2NzcxNCwgMTY3NzE2LCAxNjc3MTgsIDE2NzcyMCwgMTY3NzIyLCAxNjc3MjQsIDE2NzcyNiwgMTY3NzI4LCAxNjc3MzAsIAorICAgIDE2NzczMiwgMTY3NzM0LCAxNjc3MzYsIDE2NzczOCwgMTY3NzQwLCAxNjc3NDIsIDE2Nzc0NCwgMTY3NzQ2LCAxNjc3NDgsIAorICAgIDE2Nzc1MCwgMTY3NzUyLCAxNjc3NTQsIDE2Nzc1NiwgMTY3NzU4LCAxNjc3NjAsIDE2Nzc2MiwgMTY3NzY0LCAxNjc3NjYsIAorICAgIDE2Nzc2OCwgMTY3NzcwLCAxNjc3NzIsIDE2Nzc3NCwgMTY3Nzc2LCAxNjc3NzgsIDE2Nzc4MCwgMTY3NzgyLCAxNjc3ODQsIAorICAgIDE2Nzc4NiwgMTY3Nzg4LCAxNjc3OTAsIDE2Nzc5MiwgMTY3Nzk0LCAxNjc3OTYsIDE2Nzc5OCwgMTY3ODAwLCAxNjc4MDIsIAorICAgIDE2NzgwNCwgMTY3ODA2LCAxNjc4MDgsIDE2NzgxMCwgMTY3ODEyLCAxNjc4MTQsIDE2NzgxNiwgMTY3ODE4LCAxNjc4MjAsIAorICAgIDE2NzgyMiwgMTY3ODI0LCAxNjc4MjYsIDE2NzgyOCwgMTY3ODMwLCAxNjc4MzIsIDE2NzgzNCwgMTY3ODM2LCAxNjc4MzgsIAorICAgIDE2Nzg0MCwgMTY3ODQyLCAxNjc4NDQsIDE2Nzg0NiwgMTY3ODQ4LCAxNjc4NTAsIDE2Nzg1MiwgMTY3ODU0LCAxNjc4NTYsIAorICAgIDE2Nzg1OCwgMTY3ODYwLCAxNjc4NjIsIDE2Nzg2NCwgMTY3ODY2LCAxNjc4NjgsIDE2Nzg3MCwgMTY3ODcyLCAxNjc4NzQsIAorICAgIDE2Nzg3NiwgMTY3ODc4LCAxNjc4ODAsIDE2Nzg4MiwgMTY3ODg0LCAxNjc4ODYsIDE2Nzg4OCwgMTY3ODkwLCAxNjc4OTIsIAorICAgIDE2Nzg5NCwgMTY3ODk2LCAxNjc4OTgsIDE2NzkwMCwgMTY3OTAyLCAxNjc5MDQsIDE2NzkwNiwgMTY3OTA4LCAxNjc5MTAsIAorICAgIDE2NzkxMiwgMTY3OTE0LCAxNjc5MTYsIDE2NzkxOCwgMTY3OTIwLCAxNjc5MjIsIDE2NzkyNCwgMTY3OTI2LCAxNjc5MjgsIAorICAgIDE2NzkzMCwgMTY3OTMyLCAxNjc5MzQsIDE2NzkzNiwgMTY3OTM4LCAxNjc5NDAsIDE2Nzk0MiwgMTY3OTQ0LCAxNjc5NDYsIAorICAgIDE2Nzk0OCwgMTY3OTUwLCAxNjc5NTIsIDE2Nzk1NCwgMTY3OTU2LCAxNjc5NTgsIDE2Nzk2MCwgMTY3OTYyLCAxNjc5NjQsIAorICAgIDE2Nzk2NiwgMTY3OTY4LCAxNjc5NzAsIDE2Nzk3MiwgMTY3OTc0LCAxNjc5NzYsIDE2Nzk3OCwgMTY3OTgwLCAxNjc5ODIsIAorICAgIDE2Nzk4NCwgMTY3OTg2LCAxNjc5ODgsIDE2Nzk5MCwgMTY3OTkyLCAxNjc5OTQsIDE2Nzk5NiwgMTY3OTk4LCAxNjgwMDAsIAorICAgIDE2ODAwMiwgMTY4MDA0LCAxNjgwMDYsIDE2ODAwOCwgMTY4MDEwLCAxNjgwMTIsIDE2ODAxNCwgMTY4MDE2LCAxNjgwMTgsIAorICAgIDE2ODAyMCwgMTY4MDIyLCAxNjgwMjQsIDE2ODAyNiwgMTY4MDI4LCAxNjgwMzAsIDE2ODAzMiwgMTY4MDM0LCAxNjgwMzYsIAorICAgIDE2ODAzOCwgMTY4MDQwLCAxNjgwNDIsIDE2ODA0NCwgMTY4MDQ2LCAxNjgwNDgsIDE2ODA1MCwgMTY4MDUyLCAxNjgwNTQsIAorICAgIDE2ODA1NiwgMTY4MDU4LCAxNjgwNjAsIDE2ODA2MiwgMTY4MDY0LCAxNjgwNjYsIDE2ODA2OCwgMTY4MDcwLCAxNjgwNzIsIAorICAgIDE2ODA3NCwgMTY4MDc2LCAxNjgwNzgsIDE2ODA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4MDgyLCAxNjgwOTIsIDE2ODEwMiwgCisgICAgMTY4MTExLCAxNjgxMjAsIDE2ODEzMywgMTY4MTQ2LCAxNjgxNTgsIDE2ODE3MCwgMTY4MTgwLCAxNjgxOTAsIDE2ODIwMCwgCisgICAgMTY4MjEwLCAxNjgyMjEsIDE2ODIzMiwgMTY4MjQyLCAxNjgyNTEsIDE2ODI2MCwgMTY4MjY5LCAxNjgyODIsIDE2ODI5NSwgCisgICAgMTY4MzA3LCAxNjgzMTksIDE2ODMyOSwgMTY4MzM5LCAxNjgzNDksIDE2ODM1OSwgMTY4MzY4LCAxNjgzNzcsIDE2ODM4NywgCisgICAgMTY4Mzk3LCAxNjg0MDYsIDE2ODQxNSwgMTY4NDI1LCAxNjg0MzUsIDE2ODQ0NCwgMTY4NDUzLCAxNjg0NjMsIDE2ODQ3MywgCisgICAgMTY4NDg0LCAxNjg0OTUsIDE2ODUwNSwgMTY4NTE4LCAxNjg1MjksIDE2ODU0MywgMTY4NTUxLCAxNjg1NjIsIDE2ODU3MCwgCisgICAgMTY4NTc4LCAxNjg1ODYsIDE2ODU5NCwgMTY4NjAyLCAxNjg2MTAsIDE2ODYxOSwgMTY4NjI4LCAxNjg2MzgsIDE2ODY0OCwgCisgICAgMTY4NjU3LCAxNjg2NjYsIDE2ODY3NiwgMTY4Njg2LCAxNjg2OTQsIDE2ODcwMiwgMTY4NzA5LCAxNjg3MTksIDE2ODcyOCwgCisgICAgMTY4NzM2LCAxNjg3NDMsIDE2ODc1MywgMTY4NzYyLCAxNjg3NzMsIDE2ODc4NCwgMTY4Nzk2LCAxNjg4MDcsIDE2ODgxNywgCisgICAgMTY4ODI4LCAxNjg4MzgsIDE2ODg0OSwgMTY4ODU3LCAxNjg4NjEsIDE2ODg2NSwgMTY4ODY5LCAxNjg4NzMsIDE2ODg3NywgCisgICAgMTY4ODgxLCAxNjg4ODUsIDE2ODg4OSwgMTY4ODkzLCAxNjg4OTcsIDE2ODkwMSwgMTY4OTA1LCAxNjg5MDgsIDE2ODkxMSwgCisgICAgMTY4OTE1LCAxNjg5MTksIDE2ODkyMywgMTY4OTI3LCAxNjg5MzEsIDE2ODkzNSwgMTY4OTM5LCAxNjg5NDMsIDE2ODk0NywgCisgICAgMTY4OTUxLCAxNjg5NTUsIDE2ODk1OSwgMTY4OTYzLCAxNjg5NjcsIDE2ODk3MSwgMTY4OTc1LCAxNjg5NzksIDE2ODk4MywgCisgICAgMTY4OTg3LCAxNjg5OTEsIDE2ODk5NSwgMTY4OTk5LCAxNjkwMDMsIDE2OTAwNywgMTY5MDExLCAxNjkwMTUsIDE2OTAxOSwgCisgICAgMTY5MDIzLCAxNjkwMjcsIDE2OTAzMSwgMTY5MDM1LCAxNjkwMzksIDE2OTA0MywgMTY5MDQ3LCAxNjkwNTEsIDE2OTA1NSwgCisgICAgMTY5MDU5LCAxNjkwNjMsIDE2OTA2NywgMTY5MDcxLCAxNjkwNzUsIDE2OTA3OSwgMTY5MDgzLCAxNjkwODcsIDE2OTA5MSwgCisgICAgMTY5MDk1LCAxNjkwOTksIDE2OTEwMywgMTY5MTA3LCAxNjkxMTEsIDE2OTExNSwgMTY5MTE5LCAxNjkxMjMsIDE2OTEyNywgCisgICAgMTY5MTMxLCAxNjkxMzUsIDE2OTEzOSwgMTY5MTQzLCAxNjkxNDcsIDE2OTE1MSwgMTY5MTU1LCAxNjkxNTksIDE2OTE2MywgCisgICAgMTY5MTY3LCAxNjkxNzEsIDE2OTE3NSwgMTY5MTc5LCAxNjkxODMsIDE2OTE4NywgMTY5MTkxLCAxNjkxOTUsIDE2OTE5OSwgCisgICAgMTY5MjAzLCAxNjkyMDcsIDE2OTIxMSwgMTY5MjE1LCAxNjkyMTksIDE2OTIyMywgMTY5MjI3LCAxNjkyMzEsIDE2OTIzNSwgCisgICAgMTY5MjM5LCAxNjkyNDMsIDE2OTI0NywgMTY5MjUxLCAxNjkyNTQsIDE2OTI1OCwgMTY5MjYyLCAxNjkyNjYsIDE2OTI3MCwgCisgICAgMTY5Mjc0LCAxNjkyNzgsIDE2OTI4MiwgMTY5Mjg2LCAxNjkyOTAsIDE2OTI5NCwgMTY5Mjk4LCAxNjkzMDIsIDE2OTMwNiwgCisgICAgMTY5MzEwLCAxNjkzMTQsIDE2OTMxOCwgMTY5MzIyLCAxNjkzMjYsIDE2OTMzMCwgMTY5MzM0LCAxNjkzMzgsIDE2OTM0MiwgCisgICAgMTY5MzQ2LCAxNjkzNTAsIDE2OTM1NCwgMTY5MzU4LCAxNjkzNjIsIDE2OTM2NiwgMTY5MzcwLCAxNjkzNzQsIDE2OTM3OCwgCisgICAgMTY5MzgyLCAxNjkzODYsIDE2OTM5MCwgMTY5Mzk0LCAxNjkzOTgsIDE2OTQwMiwgMTY5NDA2LCAxNjk0MTAsIDE2OTQxNCwgCisgICAgMTY5NDE4LCAxNjk0MjIsIDE2OTQyNiwgMTY5NDMwLCAxNjk0MzQsIDE2OTQzOCwgMTY5NDQyLCAxNjk0NDYsIDE2OTQ1MCwgCisgICAgMTY5NDU0LCAxNjk0NTgsIDE2OTQ2MiwgMTY5NDY2LCAxNjk0NzAsIDE2OTQ3NCwgMTY5NDc4LCAxNjk0ODIsIDE2OTQ4NiwgCisgICAgMTY5NDkwLCAxNjk0OTQsIDE2OTQ5OCwgMTY5NTAyLCAxNjk1MDYsIDE2OTUxMCwgMTY5NTE0LCAxNjk1MTgsIDE2OTUyMiwgCisgICAgMTY5NTI2LCAxNjk1MzAsIDE2OTUzNCwgMTY5NTM4LCAxNjk1NDIsIDE2OTU0NiwgMTY5NTUwLCAxNjk1NTQsIDE2OTU1OCwgCisgICAgMTY5NTYyLCAxNjk1NjYsIDE2OTU3MCwgMTY5NTc0LCAxNjk1NzgsIDE2OTU4MiwgMTY5NTg2LCAxNjk1OTAsIDE2OTU5NCwgCisgICAgMTY5NTk4LCAxNjk2MDIsIDE2OTYwNiwgMTY5NjEwLCAxNjk2MTQsIDE2OTYxOCwgMTY5NjIyLCAxNjk2MjYsIDE2OTYzMCwgCisgICAgMTY5NjM0LCAxNjk2MzgsIDE2OTY0MiwgMTY5NjQ2LCAxNjk2NTAsIDE2OTY1NCwgMTY5NjU4LCAxNjk2NjIsIDE2OTY2NiwgCisgICAgMTY5NjcwLCAxNjk2NzQsIDE2OTY3OCwgMTY5NjgyLCAxNjk2ODYsIDE2OTY5MCwgMTY5Njk0LCAxNjk2OTgsIDE2OTcwMiwgCisgICAgMTY5NzA2LCAxNjk3MTAsIDE2OTcxNCwgMTY5NzE4LCAxNjk3MjIsIDE2OTcyNiwgMTY5NzMwLCAxNjk3MzQsIDE2OTczOCwgCisgICAgMTY5NzQyLCAxNjk3NDYsIDE2OTc1MCwgMTY5NzU0LCAxNjk3NTgsIDE2OTc2MiwgMTY5NzY2LCAxNjk3NzAsIDE2OTc3NCwgCisgICAgMTY5Nzc4LCAxNjk3ODIsIDE2OTc4NiwgMTY5NzkwLCAxNjk3OTQsIDE2OTc5OCwgMTY5ODAyLCAxNjk4MDYsIDE2OTgxMCwgCisgICAgMTY5ODE0LCAxNjk4MTgsIDE2OTgyMiwgMTY5ODI2LCAxNjk4MzAsIDE2OTgzNCwgMTY5ODM4LCAxNjk4NDIsIDE2OTg0NiwgCisgICAgMTY5ODUwLCAxNjk4NTQsIDE2OTg1OCwgMTY5ODYyLCAxNjk4NjYsIDE2OTg3MCwgMTY5ODc0LCAxNjk4NzgsIDE2OTg4MiwgCisgICAgMTY5ODg2LCAxNjk4OTAsIDE2OTg5NCwgMTY5ODk4LCAxNjk5MDIsIDE2OTkwNiwgMTY5OTEwLCAxNjk5MTQsIDE2OTkxOCwgCisgICAgMTY5OTIyLCAxNjk5MjYsIDE2OTkzMCwgMTY5OTM0LCAxNjk5MzgsIDE2OTk0MiwgMTY5OTQ2LCAxNjk5NTAsIDE2OTk1NCwgCisgICAgMTY5OTU4LCAxNjk5NjIsIDE2OTk2NiwgMTY5OTcwLCAxNjk5NzQsIDE2OTk3OCwgMTY5OTgyLCAxNjk5ODYsIDE2OTk5MCwgCisgICAgMTY5OTk0LCAxNjk5OTgsIDE3MDAwMiwgMTcwMDA2LCAxNzAwMTAsIDE3MDAxNCwgMTcwMDE4LCAxNzAwMjMsIDE3MDAyOCwgCisgICAgMTcwMDMzLCAxNzAwMzcsIDE3MDA0MywgMTcwMDUwLCAxNzAwNTcsIDE3MDA2NCwgMTcwMDcxLCAxNzAwNzgsIDE3MDA4NSwgCisgICAgMTcwMDkyLCAxNzAwOTksIDE3MDEwNiwgMTcwMTEzLCAxNzAxMjAsIDE3MDEyNywgMTcwMTM0LCAxNzAxNDAsIDE3MDE0NywgCisgICAgMTcwMTU0LCAxNzAxNjAsIDE3MDE2NywgMTcwMTc0LCAxNzAxODEsIDE3MDE4OCwgMTcwMTk1LCAxNzAyMDIsIDE3MDIwOSwgCisgICAgMTcwMjE2LCAxNzAyMjMsIDE3MDIzMCwgMTcwMjM3LCAxNzAyNDQsIDE3MDI1MSwgMTcwMjU4LCAxNzAyNjQsIDE3MDI3MCwgCisgICAgMTcwMjc3LCAxNzAyODYsIDE3MDI5NSwgMTcwMzA0LCAxNzAzMTMsIDE3MDMxOCwgMTcwMzIzLCAxNzAzMjksIDE3MDMzNSwgCisgICAgMTcwMzQxLCAxNzAzNDcsIDE3MDM1MywgMTcwMzU5LCAxNzAzNjUsIDE3MDM3MSwgMTcwMzc3LCAxNzAzODMsIDE3MDM4OSwgCisgICAgMTcwMzk1LCAxNzA0MDAsIDE3MDQwNiwgMTcwNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIG5hbWUtPmNvZGUgZGljdGlvbmFyeSAqLwogc3RhdGljIHVuc2lnbmVkIGludCBjb2RlX2hhc2hbXSA9IHsKLSAgICA3NDIyNCwgNDg1MSwgMTI1MTM4LCA3ODE1NiwgNzg0OTksIDcyMzkxLCA3OTI5LCA2NjkxMCwgMTk0NjgyLCAxMjc3NjYsIAorICAgIDc0MjI0LCA0ODUxLCAxMjUxMzgsIDc4MTU2LCA3ODQ5OSwgNzIzOTEsIDc5MjksIDg5OTksIDE5NDY4MiwgMTI3NzY2LCAKICAgICA3ODUwMCwgNjY0ODAsIDY0MDM4LCA0MjgzMywgNzQ1MjksIDEyMDY0LCA3MjM4NSwgNTk2LCA5ODM4MjEsIDY5ODUwLCAKLSAgICAxMzE5MiwgODY1MSwgMTIwMjE3LCAxMjY1NDIsIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCAxMTk4NTYsIDExMzc1MiwgCisgICAgMTMxOTIsIDg2NTEsIDEyMDIxNywgNjY3ODksIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCA3MDc0MCwgMTEzNzUyLCAKICAgICA1ODE2LCAxMTkwNjcsIDY0ODEwLCA0MjMxLCA2ODI1LCA0Mjg5NywgNDIzMywgNDIzNCwgNDIzMiwgMTIwODg5LCA3NDQxNSwgCi0gICAgMTIwMjEwLCA2Mzg0LCA3MDM1MSwgNzgxMDgsIDg4NTEsIDY3Njk4LCAxMjg1NTMsIDgyOTU0LCA0MTYwMSwgODg3NCwgCi0gICAgNzIzOTIsIDc3NDgsIDEyNTA4MywgMCwgMTI3MDI2LCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCA5MTg4LCA0MTYwMCwgMCwgCi0gICAgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDEyODYzNSwgNjM4MSwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAzNDA0LCAKLSAgICA5ODMwNzksIDcwNDg3LCA3MjQxMSwgMTc1OSwgMTIwODUzLCA0MTA3NiwgNjgzODMsIDY5OTcyLCAxMTkyMDUsIDY2NTc3LCAKLSAgICA5NDAxNCwgMTI3NzY0LCA2NTg1OSwgMCwgNzQwNCwgMCwgMCwgNjk5NzAsIDEyODM4NywgNjU5MDgsIDk4MzQsIDMwNTUsIAotICAgIDk4NTIsIDEyODM2MCwgNjUyODgsIDEyMTI5MSwgMTEzOTgsIDAsIDkyNDE3LCA5MzAxNiwgMTI4MzgwLCAxMjczMzcsIDYwMywgCi0gICAgNzQzOTgsIDQzNTQ4LCAwLCA3MTg2NSwgOTE3ODI0LCAzMzUwLCAxMjA4MTcsIDY0MzE4LCAxOTQ2OTgsIDc4MTIxLCAzMzkwLCAKLSAgICA3NDQ4MywgNDMyNjUsIDkyMzk5LCA5MTc4MzAsIDc4NTczLCAxMTg4MDMsIDE5MTksIDM0MDAsIDEyMDY1MSwgODMyOTYsIAotICAgIDExNjQ3LCA4MzI5OCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAKLSAgICAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCA2NDEyOCwgNjYyODYsIDkzMDQyLCAxMjg4MzAsIDY0MTMyLCAxMDg2NywgCi0gICAgNjQxMzAsIDY0MTI5LCAxMjEyNTUsIDQzMzc0LCA5Nzc5LCAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDgzNDU4LCAKLSAgICA2NjAyMSwgNzQ1MDksIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCA2NTI4MiwgMjg0MywgNTM1NSwgNjg4NTgsIAotICAgIDk4MzM0MiwgNjk5NzEsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAxMTM3MjQsIDEyODg3MiwgMCwgMCwgNzIzOTMsIAotICAgIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCA4MzMwMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAKLSAgICAwLCAwLCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDc1MDA4LCA3NzkyOCwgNDM5MjksIAotICAgIDEwOTA2LCAxMzUzLCA2OTYwLCA4MzAzMiwgMTI4Nzc5LCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIDQyMjQ0LCAKLSAgICA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgNzA0NTUsIDcyMzg4LCA3NDYwNiwgNTg3LCA5MTc5MDcsIDgyOTcxLCAKLSAgICAwLCAwLCAwLCA3ODIxNCwgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA3ODcwNywgMTIyMTMsIDgzMjkwLCAKLSAgICAyNzYwLCA4MzI4NCwgODMyODUsIDc4NzA4LCA4MzI4NywgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgODMyODMsIDY0MTUxLCAKLSAgICA2NDE1MCwgMTI2NzksIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMTI1MDE2LCAwLCA0ODM5LCA2ODUyNywgCi0gICAgMCwgMTg3NCwgMTE5MDE2LCAxMjAwOTEsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgOTI1MzQsIAotICAgIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCA3ODg0NywgNjQxMjIsIDY2Mzg5LCA2NjYwOSwgMTIxMzQ3LCA2NDExNywgCi0gICAgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCAKLSAgICA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgOTI4OTUsIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIAotICAgIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCA5ODMxNjEsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAKLSAgICAxMjg1NDUsIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgMTIwODY0LCA3Mzg0MSwgODMzMzksIDgzMzQwLCAKLSAgICA5MDU2LCA2NDMxMywgNjE4OCwgNzQzNjAsIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgNjQwNjUsIDY0MDcyLCA2NDA3MSwgCi0gICAgNjMsIDcyMzMsIDkyMjEyLCA3MjQxNCwgNDE5MDQsIDY2MzksIDY0MDY0LCA5ODM3NzUsIDEyODM0NCwgMTIxMzg4LCAxMTc2LCAKLSAgICAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI3MDE5LCAxMjgxOTcsIDkyNzQ3LCAxMjA1MTksIDQyOTMxLCA2NjI0MiwgMTE0MTUsIAotICAgIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMTIxMjcxLCA5ODM2NDksIDc3MTQsIDY2MjIyLCA2OTkwMiwgCisgICAgMTAwNDEzLCA2Mzg0LCA3MDM1MSwgNzgxMDgsIDg4NTEsIDY3Njk4LCAxMjg1NTMsIDgyOTU0LCA0MTYwMSwgODg3NCwgCisgICAgNzIzOTIsIDc3NDgsIDEyNTA4MywgMCwgMTI3MDI2LCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCA5MTg4LCA0MTYwMCwgCisgICAgOTgzOTgxLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMTI4NjM1LCA2MzgxLCAxMDA4NzIsIDY2Nzk3LCA2NTI0MCwgCisgICAgMTE5NTEsIDAsIDM0MDQsIDk4MzA3OSwgNzA0ODcsIDcyNDExLCAxNzU5LCAxMjA4NTMsIDQxMDc2LCA2ODM4MywgNjk5NzIsIAorICAgIDExOTIwNSwgNjY1NzcsIDk0MDE0LCAxMjc3NjQsIDY1ODU5LCAxMjUyNTMsIDc0MDQsIDEyNTI0OCwgMTI4MzA4LCA2OTk3MCwgCisgICAgMTIwNjQ4LCA2NTkwOCwgOTgzNCwgMzA1NSwgMjIzNCwgMTI4MzYwLCA2NTI4OCwgMTIxMjkxLCAxMTM5OCwgMCwgOTI0MTcsIAorICAgIDkzMDE2LCAxMjgzODAsIDEyNzMzNywgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDcxODY1LCAxMjkzNjYsIDMzNTAsIDEyMDgxNywgCisgICAgNjQzMTgsIDEyMDY5OSwgNzgxMjEsIDMzOTAsIDc0NDgzLCA0MzI2NSwgOTIzOTksIDkxNzgzMCwgNzg1NzMsIDExODgwMywgCisgICAgMTkxOSwgMzQwMCwgMTIwNjUxLCA4MzI5NiwgMTE2NDcsIDgzMjk4LCA2NjQ0NiwgNjQxNDEsIDg1NjIsIDIxMjEsIDY0MTM4LCAKKyAgICA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIDExMjk3LCA5ODM2ODgsIDk4MzE1MiwgMTE5NjYsIDY0MTI4LCA2NjI4NiwgCisgICAgOTMwNDIsIDEyODgzMCwgNjQxMzIsIDEwODY3LCA2NDEzMCwgNjQxMjksIDEyMTI1NSwgNDMzNzQsIDk3NzksIDI3NjQsIAorICAgIDY2MDAyLCAxMDE2NywgOTQ3MSwgODM0NTgsIDY2MDIxLCA3NDUwOSwgOTgzMzA4LCA1NDU3LCA1NDQwLCA4ODU3LCA5Mzk4MSwgCisgICAgNjUyODIsIDI4NDMsIDUzNTUsIDY4ODU4LCAxMDA1MzAsIDY5OTcxLCA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgCisgICAgMTAwNTI5LCAxMjg4NzIsIDAsIDk4MzkwNywgNzIzOTMsIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCAKKyAgICA4MzMwMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAwLCAxMjgxNDYsIDY0OTMwLCAxMTYzMSwgNjQxNDYsIDY0MTQ1LCAKKyAgICA2NDE0NCwgNzYyLCAxMzE3MiwgNzUwMDgsIDc3OTI4LCA0MzkyOSwgMTA5MDYsIDEzNTMsIDY5NjAsIDgzMDMyLCAxMDA0MjMsIAorICAgIDU4MjgsIDg3MjQsIDEyMjkxNiwgODkzMywgMTYwMSwgNDIyNDQsIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCAKKyAgICA3MDQ1NSwgNzIzODgsIDc0NjA2LCA1ODcsIDE5NDY0OSwgODI5NzEsIDk4MzgwOCwgMTI5MzQ1LCAxOTQ3OTUsIDc4MjE0LCAKKyAgICAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDc4NzA3LCAxMjIxMywgODMyOTAsIDI3NjAsIDgzMjg0LCA4MzI4NSwgCisgICAgNzc5MzQsIDgzMjg3LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCA4MzI4MywgNjQxNTEsIDY0MTUwLCAxMjY3OSwgMTAwNTMsIAorICAgIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAxMjUwMTYsIDAsIDQ4MzksIDY4NTI3LCAxMjUwOTEsIDE4NzQsIDExOTAxNiwgCisgICAgMTIwMDkxLCA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAxMjAxODgsIDEyNzUzMSwgOTI1MzQsIDcwMDcsIDc1OTAsIAorICAgIDY1NDQzLCA5MDM2LCA3ODg0NywgNjQxMjIsIDY2Mzg5LCA2NjYwOSwgMTIxMzQ3LCA2NDExNywgNjQxMTYsIDYyODcsIAorICAgIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCA2NTYwMSwgMTIzMjIsIAorICAgIDY0MTA2LCA2OTY0MCwgOTI4OTUsIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgOTgzNDgyLCAxMDQ1MywgNjQxMDQsIAorICAgIDcxODgsIDc5OTcsIDEyODYwMCwgNzM4OSwgOTgzMTYxLCA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgMTI4NTQ1LCAKKyAgICA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIDEyMDg2NCwgNzM4NDEsIDgzMzM5LCA4MzM0MCwgOTA1NiwgNjQzMTMsIAorICAgIDYxODgsIDc0MzYwLCA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIDY0MDY1LCA2NDA3MiwgNjQwNzEsIDYzLCA3MjMzLCAKKyAgICA3NDk1MywgNzI0MTQsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzc1LCAxMjgzNDQsIDEyMTM4OCwgMTE3NiwgMTE4OTU5LCAKKyAgICAxMjc5MzAsIDgxNjIsIDEyNzAxOSwgMTI4MTk3LCA5Mjc0NywgMTIwNTE5LCA0MjkzMSwgNjYyNDIsIDExNDE1LCA0MzMzLCAKKyAgICA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDk4MzQwNSwgMTIxMjcxLCA5MTc5MDcsIDc3MTQsIDY2MjIyLCA2OTkwMiwgCiAgICAgNzc2OCwgNzI0MDMsIDQxOTksIDY0NzA4LCA2NTA2NCwgNzAxMTcsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCi0gICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDcxODc4LCAxMjY1NzAsIDEyMTI1NiwgCi0gICAgNjQ2MTUsIDQxOTE1LCAwLCAxMjA3NSwgNDIwNDEsIDE5NDgyNSwgNTE3NCwgOTgzMjE3LCAwLCAxMjc1NTcsIDMxMjMsIAotICAgIDEyNTEwMCwgMTI2ODUsIDExOTIxNiwgODQwOCwgNjQ3MDQsIDgzMzI4LCAwLCA5MjIzLCAwLCA0MTYxNiwgNjc5OTksIAotICAgIDczNzk3LCA4MzMyNywgMTExNiwgNzUwNjcsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAwLCA3NTAzMSwgCi0gICAgOTE3NjIyLCAxMjgxNjgsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIDkzMjIsIDgzMzM4LCA4MzMzMSwgNjQwOTUsIDY0MDk0LCAKLSAgICA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgNjcyNDksIDY2Mzk4LCAxMTQzNCwgNjQwODMsIAotICAgIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDgzMDMzLCA5OTI3LCA0MTMzNSwgNDExOCwgCi0gICAgMTc5NywgODMzMTIsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDgzMzA5LCAyOTgsIDgzMzAzLCA4MzMwNCwgODMzMDUsIDQyNjI3LCAKLSAgICAxMjUwMTEsIDMyLCA2MTg3LCA4MzAzNywgMTE0OTUsIDExNDU5LCAzNjY1LCA4MzAzNiwgNDI4NzEsIDAsIDE5OTIzLCAKLSAgICA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA4MzMxNCwgNzE0NDQsIDk4MzQ2OCwgCi0gICAgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCA4MzQ2MSwgNjgwNTMsIDgzNDA3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCAKLSAgICA2NTAxNCwgOTgzNDIyLCAxMjg0ODQsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAxMTg4NTEsIDgzMDM5LCAxMTg5MDQsIAotICAgIDEwMDczLCAxMjAyMDYsIDgzMDM4LCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgCi0gICAgMTI4OTE1LCAxMDIwNywgODc4OSwgOTMwNzAsIDEyMDMzOCwgOTI5NzMsIDEyODMyNSwgOTIzNCwgOTE3ODk1LCA2MTgyLCAKLSAgICA5ODM0NzUsIDY1MDU4LCAxMjAzMTksIDk4MzQ4MCwgNjgwNjQsIDkxNzgzMSwgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCAKLSAgICA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDY2ODk0LCAxNjIyLCA3NzY3LCAxOTAwLCAKLSAgICA0MTMzOSwgMTE0NTgsIDExOTA2MSwgMCwgNjU4MSwgNTU3NiwgMTI4NjE4LCA0Mzg1NSwgNDEzMzcsIDAsIDQxNjMxLCAKLSAgICA4OTQ3LCA2ODM5MCwgNjk2ODMsIDQxNjk0LCA5ODM4NDgsIDcyMzk2LCA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgOTE3ODcyLCAKLSAgICA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCA3MDAwNSwgMTIwNTA0LCAxOTQ4MjgsIDEyODk2MSwgNTA1OCwgCi0gICAgNDEwMTAsIDk5OTIsIDEyODI5OSwgNTA1NywgOTE3OTQxLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAKLSAgICAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgCi0gICAgMTI4MzIyLCAxMjg1MjksIDEyMTEzLCA0MjM2LCA0NzI3LCAxMjg0ODcsIDAsIDc2OTMsIDEwNzQ5LCAxMjAzMzIsIDc0ODgsIAotICAgIDU3NzMsIDk3OCwgMTI4MTM0LCA5ODM2OTksIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDcxODY0LCA2NjIwOSwgMTI3MjMzLCAKLSAgICA3NDEzNSwgOTc0OCwgOTgzOTU2LCAxMjc1MjQsIDAsIDk4MzMxNiwgMTk0Njc2LCAxOTQ2NzUsIDEyODA4MSwgMCwgCi0gICAgOTgzMzEzLCA5ODMzMDIsIDAsIDEyNzg2NSwgMCwgOTI3NzYsIDkzNDEsIDc4ODIxLCAyMzc5LCAxMTMyNSwgOTE3OTAyLCAKLSAgICA2NDY2OCwgNjc4NTQsIDgxMjUsIDEyMDU0NSwgNjc0MywgODMxNjQsIDkxNzk0MCwgMjM2OSwgODM0MDYsIDk4MzMyMywgCi0gICAgMTI3OTY2LCAxMTkyMzUsIDcxODY4LCA3MzkzNiwgNzAwOCwgNDM2NjAsIDEyMDM0NiwgMCwgNDM4NDEsIDIzNjcsIAotICAgIDEyNzgyNywgOTgzODU3LCAyNjQsIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgMTg0NCwgMTE5MDg0LCAxMjkwNDksIAotICAgIDYwMTksIDEyODk3NSwgMCwgNjk2MSwgMCwgNzA0MzUsIDY3MTcxLCA4ODAwLCAxMjczMzIsIDQyODYyLCA0NDYzLCA2NTU4MSwgCi0gICAgNjE5MiwgMTE5NjEwLCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgNjUwNDIsIDkzMDE0LCAxMjA4MDAsIDc0OTQyLCAxMjg5MiwgCi0gICAgMCwgNjcxNDksIDc0ODk5LCA3MzkzMSwgMCwgMTIwNDk1LCAxMjcyNjEsIDEyMjI0LCA5ODMxMjgsIDEyOTA2MSwgNTA3NCwgCi0gICAgNTA3MywgMTIxMTY0LCA4OTgzLCAxMTg5ODEsIDc0NDkzLCA3MTIzMSwgNTA3MiwgNzQ1NDcsIDYxOTgsIDExNjE0LCAwLCAKLSAgICAxOTYsIDk4MzE1NCwgMCwgOTgzOTM2LCA0OTI5LCAxMjAzNDIsIDEyOTE0NSwgMCwgMTI3OTg3LCAxMjE0NTUsIDQyODQ3LCAKLSAgICA5Mjk1MywgMCwgNjc3NTQsIDQ5MzQsIDk4Mzk4MSwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCA3MDE4MSwgNDI1ODQsIDAsIAotICAgIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgOTgzMDQyLCA2NDY2NywgMTI4MTksIDk4Mzg3MCwgNTA3MSwgCi0gICAgMTI3OTE1LCAzNjQyLCA2NzMzNCwgNTA3MCwgMTAwNDIsIDExMzgxMywgMzk4NywgNTA2OCwgOTgzNDYwLCA4OTA5LCAKLSAgICA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIAotICAgIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAxMjEzNTksIDEyODAyOCwgMCwgNjQ3MDksIDgzMjY5LCAKLSAgICAxMjg4NTQsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAxMjcyMTgsIDAsIDk1MjYsIDQ5MjAsIAotICAgIDEyODYxNywgOTQ4LCAwLCAxMjAyMDgsIDQ5MzAsIDEyNzg1NywgOTIxNzUsIDEyMDI3NSwgNDkzMywgMTEzNzc5LCAKLSAgICAxMjEwNDksIDExODk4NSwgNDkyOCwgOTgzMTQ5LCA4MzUxNCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgCi0gICAgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDgyOTk5LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCA0MzQ5MywgMTI3NDc3LCAKLSAgICAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIDkyNjk0LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgCi0gICAgMTI2NTc3LCA2ODMzNiwgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDkyNzYxLCAxMjc0NjIsIDcwMDUsIAotICAgIDQxNjA5LCA5NTgwLCA3MDQzMSwgNDAxLCA2OTk0OSwgNDM3NzksIDY5NjgsIDU3NjEsIDM0MiwgODU1MywgMTI3OTAwLCAKLSAgICA4MTQzLCAxMjcxMTUsIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgCi0gICAgMCwgNTA3NiwgMTI4NzAyLCA4Mjk5MSwgMCwgODI5NSwgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMTI5MTgyLCAKLSAgICA5MjUyMywgNzE0MzUsIDcxMzgsIDEyMDU1MiwgNDM1MDQsIDE5NDYxMSwgNjY5MTQsIDY1Nzk0LCAxMjUyMCwgODA1OCwgCi0gICAgOTczMiwgOTI0ODAsIDUwODAsIDY0Nzc1LCA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NTYsIDAsIDgwNzQsIAotICAgIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCA0NDMyLCAxMjEzMTMsIDUwMzMsIDEyMDM0MSwgMTIwODE4LCA0ODM2LCAzODg4LCAKLSAgICA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIDQzNzA0LCAxMjcyNjQsIDkyOTU3LCA2NzU4OCwgNjgwNjEsIDEyNDk4MywgCi0gICAgNzAzNjAsIDg4NTgsIDY0MDksIDc2NjMsIDEyMDI1MiwgMTI4MTAwLCAxMTkwMDcsIDAsIDY2MzIxLCA5NDA1MiwgMTI4MTQsIAotICAgIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIDYwOTQsIDc2NDEsIDQyNDQ1LCAxMjg3OTIsIDkyNDg3LCA0MjQwNiwgMTY3NiwgCi0gICAgNjczNjIsIDc0ODYyLCA2NzM2NSwgNTAzMCwgNjczNjQsIDExODgxMCwgMTk1MDA4LCA3Mzg2OSwgOTYyMiwgMTEzNzYzLCAKLSAgICA2OTk0NCwgNjc4NywgNjczNjEsIDk4MzI3MCwgMCwgNjgzMTksIDEwNTQ0LCAxMjkxOSwgNzE0ODQsIDcyMzk3LCAwLCAwLCAKLSAgICA2OTkwNiwgMTIwNzg5LCA5ODMwNDEsIDk0NywgNjc2OTUsIDY3MzY3LCAxMjg1MjgsIDEwOTY5LCA2NzIyOCwgNzYxMywgCi0gICAgOTI1NjIsIDExOTkzNiwgNDc5NSwgMTE5OTMwLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgMTIwMjY4LCAwLCAKLSAgICA0MzU2NywgNzQwNTYsIDEyMDI2NiwgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgCi0gICAgNDM5NSwgNDM1MzgsIDExOTkyNiwgMTE5ODM0LCAxMTk5MjgsIDcyMTMsIDY4NDc2LCA3MjE0LCA3MjE1LCA1ODc5LCAKLSAgICA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDY3MzU5LCA2MjUsIDgxODcsIDQyODYxLCAxMTEzLCAKLSAgICA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIDgxNzksIDcwMTYzLCA2Nzg4NiwgOTMxNiwgMTA5ODAsIDI0ODksIDY1NjI0LCAKLSAgICA4MTUwLCAxMzU5LCA2NzY1MiwgNzA0NjQsIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgCi0gICAgMTI3MzI0LCAxMjczMjEsIDc0NDEwLCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjEyODQsIDEyNzMxNSwgMTIyODMsIAotICAgIDE2MTYsIDM3OTUsIDY3NzMyLCA4Nzk1LCA2NjI0NSwgMCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAxMjgyODAsIAotICAgIDY3NzI0LCAzMjM5LCA2Njg5MywgMTI4ODE4LCAwLCA4NDMxLCAwLCA0MjE2NCwgNzEyMjksIDExNzc4LCAxMjYyMCwgNjgyNiwgCi0gICAgNzM3NzMsIDcwMTY5LCA1MDQwLCAxMjc5NjksIDAsIDY3MDk0LCA3ODQyMCwgMCwgNTAzOSwgOTgzMjQxLCA3ODQxOCwgMCwgCi0gICAgNTAzOCwgMCwgOTgzODYyLCAxMzE4NCwgNDM5NjAsIDEyMDkzMSwgNjQ2NDgsIDAsIDkzNTksIDc4NDE2LCA5MTc2MjMsIAotICAgIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDcwMTgyLCAzODYzLCA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAxMjc4MjIsIAotICAgIDQzMDksIDcxMjcsIDE5NDU2OSwgMCwgMTk0NTY4LCAxMzAxLCAwLCA0MjU4OSwgNTY5LCAxMjg4MDQsIDczODEzLCA3MTEsIAotICAgIDQzODksIDcxMzMsIDEyMDY0MywgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIAotICAgIDY3MjI0LCAxNTUwLCA4MjAxLCA3MDQ1MywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCA2NTc4NCwgNDM5NTcsIAotICAgIDY1MjY3LCAzNzU4LCAwLCA2NTc4MSwgNjQ3MzQsIDY3MjIyLCAyNDQwLCA0Mzk1NSwgNzA3ODcsIDg0NDksIDAsIDUwMDgsIAotICAgIDk4MzU3MiwgMjExOCwgMTI2NTA4LCAxMjEyMSwgODI1NSwgNTUxMiwgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIAotICAgIDIxMzMsIDExMTksIDEyMTI1MCwgMjExNCwgMjExNiwgMjQ1NSwgMTEzNzk4LCAyMTIyLCAyMTIzLCAyMTI0LCAyMTI1LCAKLSAgICAxMjc0ODYsIDg3MTQsIDk4MzgyMCwgMjExMywgMTk1MDQ5LCAyMTE1LCAxMjgxNzcsIDEyNzkwNywgNDM3MTMsIDUwNTIsIAotICAgIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAKLSAgICAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIAotICAgIDU1MTMsIDUxMDksIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCAKLSAgICA3MTI1MSwgOTIyMzcsIDc0ODA3LCA5ODMwNjIsIDUwNDgsIDUwNDcsIDE5NDgzNywgOTgzMzgwLCA3NDIwMSwgOTIzMTMsIAotICAgIDE5NDgwMiwgNzQ0OTcsIDgyOTgyLCA4MDg5LCA2OTI5LCA2MzksIDgyOTgxLCA2ODE3OSwgNjQ0NDIsIDcwMTgwLCA4Mjk4NCwgCi0gICAgNDU5OSwgNDE0MDIsIDY2NzQsIDQzMzk3LCA0MzI5NCwgMTQ3NiwgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIAotICAgIDY5NTEsIDk0MDE3LCAxMjkxOTcsIDM1MzAsIDk3NTAsIDEyODMxNywgMTIwOTkxLCA2NjU2LCA0MjYxOCwgNzAxNzUsIAotICAgIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgODk2NywgMCwgNTA0NSwgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgCi0gICAgOTAwNiwgMTMxMjgsIDUwNDMsIDEyMTMzNSwgNzg1MywgNjc4MDgsIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIAotICAgIDEyODg4MywgMTE5MDcwLCA3MDE3NCwgNDE3NTAsIDM1ODYsIDY0NTA4LCA0MzE0OCwgMCwgMTI3OTcxLCAxMTk2MDYsIAotICAgIDY3OTgzLCAxMzI5NiwgNTE3LCAwLCAxMjg0NjcsIDE5NDk0NiwgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDEyMTMyNiwgCi0gICAgNzQ0NzgsIDEwNTMxLCA3Nzg0LCA0MTUyNiwgMTA4MjksIDczOTkxLCA4MDU3LCAxMTI2LCA3Mzg5NSwgMTk0ODU3LCAKLSAgICAxOTQ1OTEsIDAsIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCA3MTExMiwgNDg5LCA3MTExMCwgNDI1MCwgOTIyNjYsIAotICAgIDEyMDQ1MiwgNDMxNTEsIDk4MzE3OCwgOTI3MzgsIDY2MjAwLCAwLCAwLCAxMjUwMjYsIDc0Mjk4LCAxMjg4NzksIDk4MzQ3NiwgCi0gICAgODcxMSwgNjE4MywgODM0NDgsIDk4Mzk1MiwgNzI0MDIsIDEyMDQ0OCwgNzYyMywgMTE4OTI1LCA2NjM3NiwgOTIzNSwgCi0gICAgMTI3NjAsIDc0MTc2LCA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgCi0gICAgMCwgMTI2NTk3LCAxMjA0MzQsIDE5NDg1MCwgNzcyNiwgMTk1MDk1LCAxOTkyMiwgMjY3LCAzMzkzLCA0MjE5OCwgMTM3MSwgCi0gICAgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgNDEwNzcsIDM0MDIsIAotICAgIDkwNTAsIDMzOTgsIDEyODQyNCwgOTgzMzUwLCAwLCAzMzkxLCA0MTA3NSwgMjQ3NiwgMCwgMTI4MDE3LCAwLCAxMDYyNSwgCi0gICAgMTI5MTA2LCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIDcwMTUyLCAxMzAxNCwgMTMwMTMsIDEyMTE5OCwgCi0gICAgNjY3MywgMCwgMCwgMTIxMzI0LCAxMjQzOCwgMCwgOTgzMzQ0LCA4MzEwNiwgNzExMjgsIDEyMDA2MiwgOTA1MywgMTMwMTUsIAotICAgIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCA3NDk0OSwgNjY2MCwgNzg3NTgsIDkxNzc2MCwgNzQ4NjEsIDQyMjEyLCAKLSAgICAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgNjczNDMsIDEyMTQzNywgMTI5MDg2LCA0Mzg3NiwgOTI5NDEsIAotICAgIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTI4NTk1LCA0Mzk0OSwgMTIwMDQ4LCA3ODA5OSwgMTI3MDg1LCAwLCAKLSAgICAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDk4MzYwNiwgNzg0NTgsIDY2NzI4LCAxODE2LCA0Mzk1MiwgNDI1MzMsIAotICAgIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA0Mzk1MCwgNzgxMDUsIDQ5MDEsIDE4MjEsIDQzOTUxLCA1NzgsIDM2NTMsIAotICAgIDEyODk0NiwgNzkxLCA5MTYyLCA2OTc3LCA3NDE5NiwgNzg4ODksIDcwMTYwLCAwLCA3MzczMSwgODM1NCwgNDM1OTAsIAotICAgIDExOTMwMywgOTgzNDUxLCA3NTU3LCAxMTkxMDgsIDY3Mzc4LCA4MjM0LCA3MjQxLCAxMjg2MDgsIDExMzczNSwgMTE5MTY3LCAKLSAgICAxOTQ5OTYsIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAKLSAgICAxMjgyNzYsIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgCi0gICAgMjQ1MiwgNzgwODMsIDY3MjE3LCA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgMTI2NTY0LCA3MTMwMiwgNDQwOCwgNDEyMiwgCi0gICAgNjc3MiwgMTEwMzksIDg3MjMsIDY1ODk2LCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgNzE5MDQsIDI0MzgsIDY0ODU1LCAKLSAgICAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMCwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgMTE1MjEsIDc3MjMsIAotICAgIDEyODYzOSwgMCwgMCwgNDE5NTIsIDkzMDIzLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCA1MjAyLCAyNDA0LCA1MjY3LCAKLSAgICA0MjgyMywgMTEyOTEsIDE5OTE1LCA1Mjc3LCAxMjk2MywgNzAzMjAsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAxMjAzNDAsIAotICAgIDExODg3MywgMTI3MSwgOTgzNjQwLCAxMjkxMTIsIDY2MDI0LCA0MTQ4MiwgMzg2NCwgOTIwNCwgMCwgMzg3OSwgMCwgCi0gICAgMTI5NzgsIDQxNjYsIDQ1NzQsIDEyODExMSwgNzU2NywgNzQ1OSwgNzgxMjgsIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIAotICAgIDcwMTU0LCA1NzU5LCAxOTQ4NjksIDEyMTQxMywgNDEzODgsIDY0NDQ2LCA0MTM5MiwgNjQyODgsIDQxMzg3LCA2NzIwMSwgCi0gICAgODcwNiwgNTU1MiwgNjg4MzcsIDcwMCwgMCwgNTU1MywgMCwgNzA4OCwgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCAKLSAgICA3NDA2NiwgNjcyNTEsIDEwMjYzLCA1NTU0LCAwLCAxMjM0NCwgMTAzMTEsIDc4MTEzLCA2NjY1LCAxMTExNSwgMTIxMDM1LCAKLSAgICA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCA2NDQ0NywgNTU1NSwgNzgwODgsIDc4MDkzLCA3ODA5MSwgMCwgCi0gICAgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCA2NzI4OCwgNjc5OTUsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIDY1MDM3LCA0NTc3LCAKLSAgICA2NDYyNCwgMCwgMCwgNzE5MTIsIDE5NDkwOCwgNDI2OSwgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDAsIAotICAgIDkyMjczLCA2NjU4MCwgNzc5OTIsIDY2NjgzLCAxMDU1NCwgMTE5MDA4LCAxMTkxMjEsIDY4MzIsIDUwOTgsIDkxNzc2OCwgCi0gICAgMTk0NjY4LCA3MDQwMywgNTA5NywgNDkzNSwgOTg0OCwgMTAzODEsIDAsIDY3Mjk2LCA5Mjg5NiwgMzY1MSwgMCwgNjcyOTQsIAotICAgIDcwODQ4LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAKLSAgICAxMjQ3LCAxMDAzNCwgMTIxMzQwLCA1MDk5LCA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMTE5OTUzLCA3ODM4LCAKLSAgICAwLCAxMjg2NTUsIDE5NTA0MCwgMTE5MTQyLCA5MDMxLCA3MDgyOSwgNzg0MjcsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIAotICAgIDE5NDkyMywgOTE1NCwgOTExOCwgMTI2NTQzLCAxMTk1ODYsIDI2NzYsIDIyNzcsIDEyODQyMiwgNjgyMzcsIDYxOTAsIAotICAgIDg1OTksIDEyNTExOCwgNjk5MTgsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDcxOTAzLCAxMjEyOSwgCi0gICAgMTI2NjUxLCA4NDgxLCA4MzA2OCwgNjIwMiwgNjc3MTEsIDEwOTIwLCAxMTM3MjYsIDUyMDMsIDE5NTAzOSwgMTk1MDM4LCAKLSAgICA1MTA4LCA1MTA3LCA2NTgxOCwgNjYwMTksIDk3NjIsIDExMjA1LCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIAotICAgIDIwNywgMTIxMjA2LCA0Mjc1LCA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDY2ODE2LCA3ODc4NiwgNTEwMywgMTI3ODYxLCAKLSAgICA2NDM0OCwgNDEzNjgsIDQzOTc0LCA0ODgsIDY5ODExLCAwLCA3MTMzOSwgMTAxNTcsIDE5NDYxMiwgNDMwMzQsIDExNDM4LCAKLSAgICA2NDY3NCwgMCwgNzAxNTgsIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgCi0gICAgNTEwNSwgNjUyNjYsIDY5NzIwLCA2NDc2LCA1MTA0LCA5ODM3NDksIDMwNCwgMzE3NiwgNzg4NzEsIDcwMTQ5LCA5MzIsIAotICAgIDExMzY4MywgNjU2NywgMjM4LCA2OTY1NiwgNzg0MzIsIDE5NDU5NSwgMTk5MDUsIDQzODUwLCAxOTUwMTUsIDc4ODcwLCAKLSAgICA0MTA0NCwgNjc2NDAsIDY3MzAyLCA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIDEyNTUyLCAKLSAgICA5MzAzOSwgODgwMywgMzA5LCA2NjIyLCA4MTUxLCAxMDg1OCwgNzg3MDYsIDY3NjM2LCA3MDE3MSwgMTI1NjgsIDEyNzkxNywgCi0gICAgMTI1NTMsIDEwODE0LCA0MzI3NSwgNjk1MCwgOTcxMiwgNjg2ODAsIDQzOTcwLCAxMjY1MzUsIDY1MTY1LCA5MjcyNSwgMCwgCi0gICAgNjY0NjYsIDEyNDk4NiwgMTI3Nzg0LCAwLCA2NjcyNSwgNjE5MSwgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAKKyAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgNzE4NzgsIDEwMDM3NywgMTIxMjU2LCAKKyAgICA2NDYxNSwgNDE5MTUsIDEwMDM3NSwgMTIwNzUsIDQyMDQxLCAxMjUwODQsIDUxNzQsIDk4MzIxNywgMTAwMzcyLCA3NDE4NiwgCisgICAgMzEyMywgMTI1MTAwLCAxMjY4NSwgMTE5MjE2LCA4NDA4LCA2NDcwNCwgODMzMjgsIDEyMjg5MSwgOTIyMywgMCwgNDE2MTYsIAorICAgIDY3OTk5LCA3Mzc5NywgODMzMjcsIDExMTYsIDc1MDY3LCA0MzA0OSwgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgCisgICAgOTgzODcxLCA3NTAzMSwgOTE3NjIyLCAxMjgxNjgsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIDkzMjIsIDgzMzM4LCA4MzMzMSwgCisgICAgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgNjcyNDksIDY2Mzk4LCAKKyAgICAxMTQzNCwgNjQwODMsIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDgzMDMzLCAKKyAgICA5OTI3LCA0MTMzNSwgNDExOCwgMTc5NywgODMzMTIsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDc4NTkxLCAyOTgsIDgzMzAzLCAKKyAgICA4MzMwNCwgODMzMDUsIDQyNjI3LCAxMjUwMTEsIDMyLCA2MTg3LCA4MzAzNywgMTE0OTUsIDExNDU5LCAzNjY1LCA4MzAzNiwgCisgICAgNDI4NzEsIDExODkwMiwgMTk5MjMsIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIAorICAgIDgzMzE0LCA3MTQ0NCwgMTE5MzIxLCA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDgzNDYxLCA2ODA1MywgODM0MDcsIAorICAgIDEyMDE5OCwgNjk4MDksIDYxODEsIDY1MDE0LCAxMDA3NTAsIDEyODQ4NCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDExODg1MSwgCisgICAgODMwMzksIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgODMwMzgsIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAxMDk4LCAKKyAgICA5MjU2NSwgMTIwMjA1LCA5MTc3NzMsIDEyODkxNSwgMTAyMDcsIDg3ODksIDkzMDcwLCAxMjAzMzgsIDkyOTczLCAxMjgzMjUsIAorICAgIDkyMzQsIDkxNzg5NSwgNjE4MiwgOTgzNDc1LCA2NTA1OCwgMTIwMzE5LCA5ODMyMTEsIDY4MDY0LCA5MTc4MzEsIDU0NzEsIAorICAgIDk0NjEsIDU1NzMsIDExODkzNiwgNTQ3MywgNDQsIDAsIDY2MjQ0LCA5NDA3MiwgMCwgNjYyMzgsIDEyODQ0LCA2Njg5NCwgCisgICAgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAxMTkwNjEsIDk4MzE4MywgNjU4MSwgNTU3NiwgMTI4NjE4LCAKKyAgICA0Mzg1NSwgNDEzMzcsIDk4Mzc3MiwgNDE2MzEsIDg5NDcsIDY4MzkwLCA2OTY4MywgNDE2OTQsIDkxNzc4NywgNzIzOTYsIAorICAgIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCAxMjc4OTAsIDY0NjE4LCAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDcwMDA1LCAKKyAgICAxMjA1MDQsIDE5NDgyOCwgNjY4MDIsIDUwNTgsIDQxMDEwLCA5OTkyLCAxMjgyOTksIDUwNTcsIDY5ODkyLCAwLCA3NDUzOCwgCisgICAgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCA3MTM2NSwgNzQ4NiwgCisgICAgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAxMjgzMjIsIDEyODUyOSwgMTIxMTMsIDQyMzYsIDQ3MjcsIDEyODQ4NywgMCwgCisgICAgNzY5MywgMTA3NDksIDEyMDMzMiwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDEyODY5MywgNDE2MTksIDEwMjM5LCAKKyAgICA2ODYxMSwgNzE4NjQsIDY2MjA5LCAxMjcyMzMsIDc0MTM1LCA5NzQ4LCAxMDAzODMsIDEyNzUyNCwgMTI1MjE4LCA5ODMzMTYsIAorICAgIDE5NDY3NiwgMTk0Njc1LCAxMjgwODEsIDcwNjgxLCAxMDAzODUsIDcyODExLCA4MzM1NCwgMTI3ODY1LCAxMjA5OTksIAorICAgIDkyNzc2LCA5MzQxLCA3ODgyMSwgMjM3OSwgMTEzMjUsIDEwMDM4NiwgNjQ2NjgsIDY3ODU0LCA4MTI1LCAxMjA1NDUsIAorICAgIDY3NDMsIDgzMTY0LCA5MTc5NDAsIDIzNjksIDgzNDA2LCA5ODMzMjMsIDEyNzk2NiwgMTAwNTQzLCA3MTg2OCwgNzM5MzYsIAorICAgIDcwMDgsIDQzNjYwLCAxMjAzNDYsIDAsIDQzODQxLCAyMzY3LCAxMjc4MjcsIDEyODI3NSwgMjY0LCAyMzc1LCA4MDYwLCAKKyAgICA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMTI5MDQ5LCA2MDE5LCAxMjg5NzUsIDk4MzU1NywgNjk2MSwgMCwgNzA0MzUsIAorICAgIDY3MTcxLCA4ODAwLCAxMjczMzIsIDQyODYyLCA0NDYzLCA2NTU4MSwgNjE5MiwgMTAwNzQ0LCA0Mjc3MSwgMTI3OTgzLCAKKyAgICA5MjMzMywgNzI1LCA2NTA0MiwgOTMwMTQsIDEyMDgwMCwgNzQ5NDIsIDEyODkyLCAxMjUyMTIsIDY3MTQ5LCA3NDg5OSwgCisgICAgNzM5MzEsIDAsIDEyMDQ5NSwgMTI3MjYxLCAxMjIyNCwgOTgzMTI4LCAxMjkwNjEsIDUwNzQsIDUwNzMsIDEyMTE2NCwgCisgICAgODk4MywgMTE4OTgxLCA3NDQ5MywgNzA3MjMsIDUwNzIsIDc0NTQ3LCA2MTk4LCAxMTYxNCwgMTI1MjUxLCAxOTYsIAorICAgIDk4MzE1NCwgMTI4ODA1LCAxMjgyNjMsIDQ5MjksIDEyMDM0MiwgMTI5MTQ1LCAxMDA3OTQsIDEwMDc0NywgMTIxNDU1LCAKKyAgICA0Mjg0NywgOTI5NTMsIDAsIDY3NzU0LCA0OTM0LCAxMjgzMzgsIDQxMzIzLCA5NzU4LCAxMjgyMTEsIDkyMjg5LCA3MDE4MSwgCisgICAgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgOTE3OTUyLCA2NDY2NywgMTI4MTksIAorICAgIDk4MzU5NywgNTA3MSwgMTI3OTE1LCAzNjQyLCA2NzMzNCwgNTA3MCwgMTAwNDIsIDExMzgxMywgMzk4NywgNTA2OCwgCisgICAgOTgzNDYwLCA4OTA5LCA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIDExODA2LCA0MzE2NywgNDUzMSwgCisgICAgMTI0NSwgOTEwNSwgNjY0NjMsIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAxMjEzNTksIDEyMTI2NywgCisgICAgMTI3OTcyLCA2NDcwOSwgODMyNjksIDEyODg1NCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIAorICAgIDEyNzIxOCwgOTgzMDU5LCA5NTI2LCA0OTIwLCAxMjg2MTcsIDk0OCwgMCwgNzA3MDYsIDQ5MzAsIDEyNzg1NywgOTIxNzUsIAorICAgIDExOTg4NiwgNDkzMywgMTEzNzc5LCAxMjEwNDksIDExODk4NSwgNDkyOCwgOTgzMTQ5LCA4MzUxNCwgNzQ3NzAsIDEyMDE5NCwgCisgICAgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDgyOTk5LCA4NzUzLCAxNTA5LCAxMjUyNjQsIAorICAgIDU0NjgsIDk1MTEsIDQzNDkzLCAxMjc0NzcsIDE2NzIsIDYyMDUsIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgCisgICAgOTI2OTQsIDc4NTU1LCAxMjc0NjgsIDczODYzLCAxMjY1NzcsIDY4MzM2LCA0MTYwNywgOTI2MjcsIDE2NzksIDEyMDExNiwgCisgICAgMTIwMTgwLCA3ODgzNywgMTI3NDYyLCA3MDA1LCA0MTYwOSwgOTU4MCwgNzA0MzEsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCAKKyAgICA1NzYxLCAzNDIsIDg1NTMsIDkyMjU2LCA4MTQzLCAxMjA5NzksIDExOTgzLCA3NDIwOCwgNjI0LCA3NDUwOCwgNDA1NywgCisgICAgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgMTIwMjUwLCA1MDc2LCAxMjg3MDIsIDgyOTkxLCAwLCA4Mjk1LCA2ODUsIAorICAgIDkwMjUsIDE1MjQsIDEyNjE4LCAwLCA1NTM5LCAxMDA5MDcsIDkyNTIzLCA3MTQzNSwgNzEzOCwgMTIwNTUyLCA0MzUwNCwgCisgICAgMTI1MTk3LCA2NjkxNCwgNjU3OTQsIDEyNTIwLCA4MDU4LCA5NzMyLCA5MjQ4MCwgNTA4MCwgNjQ3NzUsIDUwMzYsIDUwMzUsIAorICAgIDEwMDQyOSwgNDI2MDQsIDEwMDQyOCwgMCwgODA3NCwgMjc1LCAxMzI5MSwgMTkwNywgNzQzNzAsIDQ0MzIsIDEyMTMxMywgCisgICAgNTAzMywgMTIwMzQxLCAxMjA4MTgsIDQ4MzYsIDM4ODgsIDczNzkyLCAxMDcyOSwgNjQ1NDYsIDEyNzI2MiwgNDM3MDQsIAorICAgIDEyNzI2NCwgOTI5NTcsIDIyNzQsIDY4MDYxLCAxMDA0MjIsIDcwMzYwLCA4ODU4LCA2NDA5LCA3NjYzLCA3ODA2OSwgCisgICAgMTI4MTAwLCAxMTkwMDcsIDEwMDQyNCwgNjYzMjEsIDk0MDUyLCAxMjgxNCwgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgCisgICAgNjA5NCwgNzY0MSwgNDI0NDUsIDEyODc5MiwgOTI0ODcsIDQyNDA2LCAxNjc2LCA2NzM2MiwgNzQ4NjIsIDY3MzY1LCA1MDMwLCAKKyAgICA2NzM2NCwgMTE4ODEwLCAxOTUwMDgsIDczODY5LCA5NjIyLCAxMTM3NjMsIDY5OTQ0LCA2Nzg3LCA2NzM2MSwgMTk0OTMwLCAKKyAgICAwLCA2ODMxOSwgMTA1NDQsIDEyOTE5LCA3MTQ4NCwgNzIzOTcsIDk4MzY0MSwgMCwgNjk5MDYsIDEwMDg1NywgOTgzMDQxLCAKKyAgICA5NDcsIDY3Njk1LCA2NzM2NywgMTI4NTI4LCAxMDk2OSwgNjcyMjgsIDc2MTMsIDkyNTYyLCAxMTk5MzYsIDQ3OTUsIAorICAgIDEwMDQzMSwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIDEyMDI2OCwgMTIwMTg5LCA0MzU2NywgNzQwNTYsIDEyMDI2NiwgCisgICAgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgNDM5NSwgNDM1MzgsIDEwMDQzMywgCisgICAgMTAwODYwLCAxMTk5MjgsIDcyMTMsIDY4NDc2LCA3MjE0LCA3MjE1LCA1ODc5LCA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIAorICAgIDEyMDE3MywgNjU1NDAsIDY3MzU5LCA2MjUsIDgxODcsIDQyODYxLCAxMTEzLCA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIAorICAgIDgxNzksIDcwMTYzLCA2Nzg4NiwgOTMxNiwgMTA5ODAsIDI0ODksIDY1NjI0LCA4MTUwLCAxMzU5LCA2NzY1MiwgNzA0NjQsIAorICAgIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgMTI3MzI0LCAxMjczMjEsIDc0NDEwLCAxMjczMTksIAorICAgIDEyNzMyMCwgMTI3MzE3LCAxMjEyODQsIDEyNzMxNSwgMTIyODMsIDE2MTYsIDM3OTUsIDY3NzMyLCA4Nzk1LCA2NjI0NSwgCisgICAgMTIwODM4LCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDEyODI4MCwgNjc3MjQsIDMyMzksIDY2ODkzLCAxMjg4MTgsIAorICAgIDE5NDYyNCwgODQzMSwgMCwgNDIxNjQsIDcxMjI5LCAxMTc3OCwgMTI2MjAsIDY4MjYsIDczNzczLCA3MDE2OSwgNTA0MCwgCisgICAgMTI3OTY5LCAwLCA2NzA5NCwgNzg0MjAsIDEyNzAzNiwgNTAzOSwgOTgzMjQxLCA3ODQxOCwgOTgzOTM2LCA1MDM4LCAKKyAgICA5MTc5OTAsIDk4Mzg2MiwgMTMxODQsIDQzOTYwLCA3MDY5NSwgNjQ2NDgsIDEyNjY0MSwgOTM1OSwgNzg0MTYsIDkxNzYyMywgCisgICAgMTI4NzcwLCA2NTE1NywgNjY2MiwgMTAwNjA0LCA3MDE4MiwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgCisgICAgMTI3ODIyLCA0MzA5LCA3MTI3LCAxMTg4NDEsIDEyOTA3NCwgMTk0NTY4LCAxMzAxLCAwLCA0MjU4OSwgNTY5LCAxMjg4MDQsIAorICAgIDczODEzLCA3MTEsIDQzODksIDcxMzMsIDEyMDY0MywgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTI4NDM2LCA0MTMzMSwgCisgICAgMTAwNiwgNzQyNDAsIDY3MjI0LCAxNTUwLCA4MjAxLCA3MDQ1MywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCAKKyAgICA2NTc4NCwgNDM5NTcsIDY1MjY3LCAzNzU4LCA5ODM4NDQsIDY1NzgxLCA2NDczNCwgNjcyMjIsIDI0NDAsIDQzOTU1LCAKKyAgICA3MDc4NywgODQ0OSwgOTgzNjg0LCA1MDA4LCA5ODM1NzIsIDIxMTgsIDEyMjg5NiwgMTIxMjEsIDgyNTUsIDU1MTIsIAorICAgIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAyMTMzLCAxMTE5LCAxMjEyNTAsIDIxMTQsIDIxMTYsIDI0NTUsIAorICAgIDExMzc5OCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgMTI3NDg2LCA4NzE0LCA5ODM4MjAsIDIxMTMsIDE5NTA0OSwgMjExNSwgCisgICAgMTI4MTc3LCAxMjc3NDgsIDQzNzEzLCA1MDUyLCA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCAKKyAgICA2NTc3MywgMTQyOSwgNDI2NDcsIDUwNTAsIDMwMiwgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgCisgICAgMTI3MjYsIDc0NTk0LCA5MTE3LCA5ODMxODEsIDEyMDAzLCA1NTEzLCA1MTA5LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIAorICAgIDAsIDc4NDQ3LCAyNDcwLCA3ODQzNywgMCwgMTkyNSwgNzEyNTEsIDkyMjM3LCA3NDgwNywgOTgzMDYyLCA1MDQ4LCA1MDQ3LCAKKyAgICAxOTQ4MzcsIDEyMTI3NSwgNzQyMDEsIDc4NzQzLCAxOTQ4MDIsIDc0NDk3LCA2NTkzMywgODA4OSwgNjkyOSwgNjM5LCAKKyAgICA4Mjk4MSwgNjgxNzksIDY0NDQyLCA3MDE4MCwgODI5ODQsIDQ1OTksIDQxNDAyLCA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIAorICAgIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCA2OTUxLCA3NDMwNiwgMTI5MTk3LCAzNTMwLCA5NzUwLCAxMjgzMTcsIAorICAgIDEyMDk5MSwgNjY1NiwgNDI2MTgsIDcwMTc1LCA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDEwMDUxNiwgNTA0NSwgCisgICAgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgOTAwNiwgMTMxMjgsIDUwNDMsIDEyMTMzNSwgNzg1MywgNjc4MDgsIAorICAgIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIDEyODg4MywgMTE5MDcwLCA3MDE3NCwgNDE3NTAsIDM1ODYsIAorICAgIDY0NTA4LCA0MzE0OCwgMCwgMTI3OTcxLCAxMTk2MDYsIDY3OTgzLCAxMzI5NiwgNTE3LCA5ODM4NzgsIDEyNTAxNywgCisgICAgMTAwNTY1LCA0MTUyOCwgMTIzLCA2NTQ1NCwgMTI3MjE1LCAxMjEzMjYsIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIAorICAgIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDEwMDgwMywgMTk0NTkxLCA5ODMzNzksIDM5MjUsIDQyNTEsIAorICAgIDgwNjksIDEwNTE3LCA3MTExMiwgNDg5LCA3MTExMCwgNDI1MCwgOTIyNjYsIDEyMDQ1MiwgNDMxNTEsIDk4MzE3OCwgCisgICAgOTI3MzgsIDY2MjAwLCA5ODM2MjYsIDEyNzkwNSwgMTI1MDI2LCA3NDI5OCwgMTI4ODc5LCAxMjY2MjUsIDg3MTEsIDYxODMsIAorICAgIDgzNDQ4LCA5ODM5NTIsIDcyNDAyLCAxMjA0NDgsIDc2MjMsIDEwMDgwOSwgNjYzNzYsIDkyMzUsIDEyNzYwLCA3NDE3NiwgCisgICAgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIDk4Mzc5OSwgMTI2NTk3LCAKKyAgICAxMjA0MzQsIDExOTA1MiwgNzcyNiwgMTk1MDk1LCAxOTkyMiwgMjY3LCAzMzkzLCA0MjE5OCwgMTM3MSwgMTIyOTE5LCAKKyAgICA2OTIzMywgMjQ1OCwgMTAwNDM1LCA2MjAxLCAwLCA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCA0MTA3NywgMzQwMiwgCisgICAgOTA1MCwgMzM5OCwgMTI4NDI0LCAxMjcwODMsIDE5NDg5NCwgMzM5MSwgNDEwNzUsIDI0NzYsIDEyOTEyOSwgNzQ5OTAsIDAsIAorICAgIDEwNjI1LCA3MDcxNSwgMTI3NjcsIDEzMDE3LCA3ODc0MSwgNjQyNjEsIDY0OTM0LCA3MDE1MiwgMTMwMTQsIDEzMDEzLCAKKyAgICAxMjExOTgsIDY2NzMsIDAsIDAsIDEyMTMyNCwgMTI0MzgsIDAsIDk4MzM0NCwgODMxMDYsIDcxMTI4LCAxMjAwNjIsIDkwNTMsIAorICAgIDEzMDE1LCA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgNzQ5NDksIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDc0ODYxLCAKKyAgICA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDY2ODA5LCAxMjE0MzcsIDEyOTA4NiwgNDM4NzYsIAorICAgIDkyOTQxLCA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDExOTkyNiwgNDM5NDksIDEyMDA0OCwgNzgwOTksIDEyNzA4NSwgCisgICAgMTI3OTY0LCAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDk4MzYwNiwgNzg0NTgsIDY2NzI4LCAxODE2LCAKKyAgICA0Mzk1MiwgNDI1MzMsIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA0Mzk1MCwgNzgxMDUsIDQ5MDEsIDE4MjEsIDQzOTUxLCAKKyAgICA1NzgsIDM2NTMsIDEwMDQ3NiwgNzkxLCA5MTYyLCA2OTc3LCA3NDE5NiwgNzg4ODksIDcwMTYwLCAwLCA3MzczMSwgODM1NCwgCisgICAgNDM1OTAsIDExOTMwMywgOTgzNDUxLCA3NTU3LCAxMTkxMDgsIDY3Mzc4LCA4MjM0LCA3MjQxLCAxMjg2MDgsIDExMzczNSwgCisgICAgMTE5MTY3LCAxOTQ5OTYsIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA2NjgwNywgNjczLCAxOTQ4NjcsIAorICAgIDY0Mzk3LCAxMTkyMzUsIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxMTkzMjIsIDI0NDgsIDc4MDg1LCAxMDI2NywgCisgICAgODQyNCwgMjQ1MiwgNzgwODMsIDY3MjE3LCA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgMTI1MTE3LCA3MTMwMiwgNDQwOCwgCisgICAgNDEyMiwgNjc3MiwgMTEwMzksIDg3MjMsIDY1ODk2LCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgNzE5MDQsIDI0MzgsIAorICAgIDY0ODU1LCAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMTI5MTM2LCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAKKyAgICAxMTUyMSwgNzcyMywgMTI4NjM5LCAxMjUyNDIsIDAsIDQxOTUyLCA5MzAyMywgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgCisgICAgNTIwMiwgMjQwNCwgNTI2NywgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgMTI5NjMsIDcwMzIwLCA2MTg5LCA0MTI1LCAKKyAgICAxMzE0LCAxMjEzMywgMTIwMzQwLCAxMTg4NzMsIDEyNzEsIDk4MzU1NiwgMTI5MTEyLCA2NjAyNCwgNDE0ODIsIDI0MzQsIAorICAgIDkyMDQsIDkxNzU1OCwgMzg3OSwgMTk0ODY4LCAxMjk3OCwgNDE2NiwgNDU3NCwgMTI4MTExLCA3NTY3LCA3NDU5LCA3ODEyOCwgCisgICAgNDEzOTAsIDUzODQsIDQxODgyLCA2NzY0NywgNzAxNTQsIDU3NTksIDE5NDg2OSwgMTIxNDEzLCA0MTM4OCwgNjQ0NDYsIAorICAgIDQxMzkyLCA2NDI4OCwgNDEzODcsIDY3MjAxLCA4NzA2LCA1NTUyLCA2ODgzNywgNzAwLCAwLCA1NTUzLCAwLCA3MDg4LCAKKyAgICA1MzU2LCA3NDk5LCA2ODAwNywgNjY1OTYsIDc0MDY2LCA2NzI1MSwgMTAyNjMsIDU1NTQsIDAsIDEyMzQ0LCAxMDMxMSwgCisgICAgNzgxMTMsIDY2NjUsIDExMTE1LCAxMjEwMzUsIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCAKKyAgICA3ODA4OCwgNjY4MTAsIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDY3Mjg4LCA2Nzk5NSwgMTk0OTg2LCAKKyAgICA2NTYsIDEyODU3NCwgNjUwMzcsIDQ1NzcsIDY0NjI0LCAxMjkzNTQsIDEyMDI2NCwgNzE5MTIsIDE5NDkwOCwgNDI2OSwgCisgICAgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDE5NTA4NSwgOTIyNzMsIDY2NTgwLCA3Nzk5MiwgNjY2ODMsIAorICAgIDEwNTU0LCAzNDE3LCAxMDEwNTcsIDY4MzIsIDUwOTgsIDkxNzc2OCwgMTk0NjY4LCA3MDQwMywgNTA5NywgNDkzNSwgOTg0OCwgCisgICAgMTAzODEsIDAsIDY3Mjk2LCA3Mjc5OCwgMzY1MSwgMCwgNjcyOTQsIDcwODQ4LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIAorICAgIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTIxMzQwLCA1MDk5LCA3ODM3MywgCisgICAgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMTE5OTUzLCA3ODM4LCA5ODM2NjksIDEyODY1NSwgMTk1MDQwLCAxMTkxNDIsIAorICAgIDkwMzEsIDcwODI5LCA3ODQyNywgOTA3OCwgODU0NSwgNjYzNTYsIDEyODc5OSwgMTk0OTIzLCA5MTU0LCA5MTE4LCAKKyAgICAxMjY1NDMsIDExOTU4NiwgMjY3NiwgMjI3NywgMTI4NDIyLCA2ODIzNywgNjE5MCwgODU5OSwgMTI1MTE4LCA2OTkxOCwgCisgICAgMTA3OTUsIDk4NTcsIDcwMTQsIDk4NTYsIDE5NTAzMywgNzE5MDMsIDEyMTI5LCAxMjY2NTEsIDg0ODEsIDgzMDY4LCA2MjAyLCAKKyAgICA2NzcxMSwgMTA5MjAsIDExMzcyNiwgNTIwMywgMTk1MDM5LCAxMjkzMjgsIDUxMDgsIDUxMDcsIDY1ODE4LCA2NjAxOSwgCisgICAgOTc2MiwgMTEyMDUsIDU1NDEsIDc0NzcyLCAwLCAxMjYxMywgNTI4NCwgNjY1NywgMjA3LCAxMjEyMDYsIDQyNzUsIDc0ODE5LCAKKyAgICA4NTQsIDY4MTQ3LCA3NDM4MSwgNjY4MTYsIDc4Nzg2LCA1MTAzLCAxMjc4NjEsIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgCisgICAgNjk4MTEsIDEwMDkxMSwgNzEzMzksIDEwMTU3LCAxOTQ2MTIsIDQzMDM0LCAxMTQzOCwgNjQ2NzQsIDAsIDcwMTU4LCAKKyAgICA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIDUxMDUsIDY1MjY2LCA2OTcyMCwgCisgICAgNjQ3NiwgNTEwNCwgMTk0NzM0LCAzMDQsIDMxNzYsIDc4ODcxLCA3MDE0OSwgOTMyLCAxMTM2ODMsIDY1NjcsIDIzOCwgCisgICAgNjk2NTYsIDc4NDMyLCAxOTQ1OTUsIDE5OTA1LCA0Mzg1MCwgMTk1MDE1LCA3ODg3MCwgNDEwNDQsIDY3NjQwLCA2NzMwMiwgCisgICAgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgOTMwMzksIDg4MDMsIDMwOSwgCisgICAgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgNzAxNzEsIDEyNTY4LCAxMjc5MTcsIDEyNTUzLCAxMDgxNCwgCisgICAgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgMTI2NTM1LCA2NTE2NSwgOTI3MjUsIDk4MzgyMiwgNjY0NjYsIAorICAgIDEyNDk4NiwgMTI3Nzg0LCAxMjg1MzQsIDY2NzI1LCA2MTkxLCAxMTM1MSwgMTA0MzcsIDExMzE2LCA2NzYzNCwgNDM3NjMsIAogICAgIDAsIDQxNzU0LCA2NzYzNSwgOTM3MCwgMjcyMCwgMTk0NjAwLCA2ODQ2MiwgODIzMiwgMTE4ODE3LCAxMjEwNTYsIDMyMjIsIAotICAgIDEyMTQzOSwgMTIxMTM3LCAwLCA2NjY2MywgOTgzMDQ3LCA5MzA2NywgMTA4MzQsIDk4MzEyNywgMCwgNjU3MzIsIDk0MDk1LCAKLSAgICA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTIwNzM0LCA2NzMwOSwgNzc4MSwgNDEzODMsIDY0NTY4LCA2NzMxMSwgMTIwNzM4LCAKKyAgICAxMjE0MzksIDEyMTEzNywgMCwgNjY2NjMsIDEyNzkyOCwgOTMwNjcsIDEwODM0LCAxMjc1NDcsIDAsIDY1NzMyLCA5NDA5NSwgCisgICAgOTE3NTQ3LCA5MjY4MiwgNjc2NzksIDEwMTAyMSwgNjczMDksIDc3ODEsIDQxMzgzLCA2NDU2OCwgNjczMTEsIDEyMDczOCwgCiAgICAgMTIwNzcsIDc0NDMzLCA2NDU4NiwgOTE3NjIwLCA0MjM5NiwgNTUyNTUsIDM0NzUsIDY3MjYwLCAyNDc5LCA2NzMwNiwgCiAgICAgMzYzMiwgMTIwNzI4LCAxMDY5OCwgODM3NiwgMzY0OCwgNjcyNjMsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIAotICAgIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgNjg4MjYsIDM2NDAsIDEyNzE5MCwgCi0gICAgNDIzMjEsIDcyODQsIDkyODgwLCAxMTg5ODcsIDE5NDk1MCwgMTk0OTQ5LCA3NDExNSwgMTk0OTUxLCAxMjY2NDksIAotICAgIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDk4Mzc4NCwgNjYwMTAsIDQyMDgzLCA3NDk1MiwgNjgzOTgsIDE5NDk1NywgCi0gICAgNjc2MTksIDY2MzY3LCAxOTQ5NTgsIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgNDI5NSwgNjUyNjQsIDY4MDA2LCAKLSAgICAwLCA2NzgzNSwgMCwgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyMDI2NSwgOTI1LCAKLSAgICAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMTIwOTg4LCA0MTk4NCwgOTIxNywgMTI4MzcyLCA5MjUxMCwgOTIyMTgsIAotICAgIDkxODYsIDIwNjcsIDQwMTYsIDk4MzgwMywgMCwgMzgxLCAxMjkzNiwgMCwgNDIwNzcsIDkyOTg1LCA2OTg4MCwgNTE4NCwgCi0gICAgNDIwNzgsIDE5NDYwNywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIDY3NjMzLCAxMjEzMzQsIDEyNzEwNCwgCi0gICAgODEyLCAzNjE1LCA3MjQwMSwgNTE3OCwgNDQwMDAsIDkyNDM2LCA3ODgwNywgNTE4OCwgNzQyODcsIDY3NjI5LCAzNjA1LCAKLSAgICAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDEyNzc5MywgNjc2MzEsIDQyNjE2LCAxMjA2NzAsIDI0NDIsIAotICAgIDEwNzAzLCA2NzMxNywgNjc2MzIsIDY3MzE2LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgNzM5MzMsIDY3NjI2LCAKLSAgICA0MjQwMSwgMTk0ODY1LCA2OTg3MiwgMTI3MzczLCA0MjI4OCwgMTI3NTEsIDc0OTA2LCA4NTQyLCAxMzE0NSwgMTk0OTYzLCAKLSAgICAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgNzEyMjAsIDQxMTE3LCAwLCA5MjU4MCwgCi0gICAgMTI4NjI0LCA3NDkzOSwgNjc2MjQsIDEyNzk3NiwgMTI5MCwgMCwgNjU1ODUsIDI3MTUsIDgwNiwgNjUyMDgsIDQxODg0LCAKLSAgICA5MTc4ODMsIDEzMTgsIDY0NzMxLCA3ODAwNCwgMCwgMCwgNjYzMjUsIDM0NjUsIDI0MDUsIDkyNDAsIDk4Mzg1OCwgMTI3NTYsIAotICAgIDY1MjU5LCAwLCA5ODM3ODEsIDEyNzUyLCA1ODMzLCAxNDMyLCAxMTI0NiwgNDE4ODMsIDczOTEyLCA5Nzk5LCA5MTc4OTMsIAotICAgIDQxODg2LCAyNDgwLCAxMjc5MDYsIDIwNjIsIDY3MzI2LCA2NDk0LCA1NTM3LCA3ODY1NiwgMCwgMTk0NTg3LCAxMjQ5NjksIAotICAgIDEyMTEsIDAsIDEyMDk3MSwgNjcyNjksIDExODgzMiwgMTIzMTgsIDEyOTAyNCwgMTEzNzk2LCA2ODAwNSwgMTA2MjIsIAotICAgIDk4Mzc3OSwgMCwgNjg4MjEsIDY1NjYsIDcxMTk1LCAwLCA3Mzc4MCwgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDAsIAotICAgIDgyODQsIDEzMDgxLCAxMTkyMDYsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA4MzAwMywgNDI2NSwgNjY0MiwgMzk3NywgCi0gICAgNzQxODYsIDQxNzc4LCA4MzYsIDkyOTQ3LCAyNDg4LCAxMjUwOTYsIDQ1ODIsIDAsIDcxNDI2LCA0MTc3NywgMTI5MjYsIAotICAgIDk4MzM3OSwgNzUyOCwgMTA1NTAsIDExMzc2MSwgOTI3MDYsIDk4Mzk1NSwgMTA5NjEsIDkzOTc3LCAxMzc0LCA2NDg3OCwgCi0gICAgMTE5MDE0LCA2NzcyMCwgNDIzODksIDQxMzc0LCAyMjg2LCA5MTc2MDQsIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAxOTUwNDcsIAotICAgIDQwMCwgMTI1OTcsIDEyMDU4NiwgMTI4MDk3LCAxMjkwNzEsIDY2NjEsIDkxNzk2MSwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIAotICAgIDAsIDcxMzAxLCAxMjcyOTIsIDM0NzMsIDc3MTgsIDExMzc1NSwgNjg4MTQsIDAsIDU1Mjg1LCA3Mzc4NCwgNjYzOTQsIDAsIAotICAgIDExOTY5LCAxMjA0NjEsIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTI1NTEsIDgwODAsIDcwMDYsIDAsIDExODkwMiwgCi0gICAgNjc1NywgNjQzNTEsIDE1NDQsIDY3MTU2LCA2NzY2LCA2NDY3NywgMTIwNzE2LCA2NzA4OCwgNjE0NiwgNzQwMzEsIDc3MSwgCi0gICAgMTIwNjgyLCAwLCAxMjgxMiwgMTMxNjgsIDQyMjcyLCAxMjIwMCwgNjY0MjMsIDc5MDQsIDAsIDk1MywgMTI5MTcsIAotICAgIDExOTU2MCwgMTIzMDAsIDY3MDg5LCAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIAotICAgIDc0ODksIDMzNzksIDAsIDc0ODcsIDE5NDYyNCwgNDcxLCA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCAKLSAgICA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCA3NDcyLCAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIAotICAgIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIDM1NDQsIDk4Mzc4NSwgNjAxNywgNjUzMTEsIDc0OTM1LCAKLSAgICAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDE5NDg4MiwgMTIwNTQ0LCAwLCAxMjc5NTAsIAotICAgIDkyNjYwLCA5ODMzNTYsIDc3ODg5LCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIDkyMzQxLCAxMjExMzMsIDIxMzksIDQyNTYsIAotICAgIDEyMDc3NiwgNzQzODAsIDQzODM2LCA0MjY3NSwgNDI2NTgsIDEyODQ1LCA2NjY2LCA3MDUwOCwgNjUxMzgsIDExOTM1NSwgCi0gICAgNjc4NjIsIDAsIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAxMjUxMzQsIDEyMDMyMSwgMTI3MjgzLCAKLSAgICA5ODMzOTYsIDcxODYsIDAsIDEyMDU1NSwgMCwgNDQ1LCAxMjA1NjYsIDY2ODQ5LCAxMjUxNDEsIDAsIDgzMzAsIDAsIDAsIAotICAgIDQyNzk3LCAxMTM3MzYsIDEyMDIxNSwgODMwMDEsIDM5MDIsIDAsIDE3NzAsIDQzOTU5LCAxMjUwNjcsIDE1NjAsIDQzOTU4LCAKLSAgICA5MjE2NywgNDU4NCwgNzM4NDMsIDAsIDExNzEyLCAxMDg2NiwgNjcwOTIsIDExMTgsIDcxMzM0LCA3NDg4OCwgMCwgMTA4MSwgCi0gICAgNzQzNiwgMTExNDcsIDcyNTIsIDcwMDkzLCA1OTk2LCA2OTkyMSwgNDkwMywgNjgxNDIsIDQxMzg2LCA1MTYyLCAxMTkxODksIAotICAgIDEzMzAsIDEyODYxMywgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgCi0gICAgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDk4Mzc0MSwgMTI3MTUsIDY4MDAyLCAxOTQ1NzYsIDgzMjU2LCAKLSAgICAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA3ODQ5MCwgMCwgMTI2OTg0LCA2ODAwMSwgOTMzNCwgCi0gICAgOTI3MDUsIDcwODAwLCA3MDEwMSwgNzk3NSwgMCwgNzc5NTcsIDAsIDQzNDk0LCA0ODg0LCA2NjU5NywgNjk3MzIsIDAsIAotICAgIDEyMTAxMCwgNjMxMywgNjU1MTMsIDY5ODU3LCAwLCAwLCAwLCAyMzQ1LCA0MzY5NywgNDYzLCAwLCAxMjc4OTAsIDY4MTc4LCAKLSAgICAzMTE3LCA1NDYwLCAxMjE0MjMsIDEyODcxNywgOTgzMzg5LCAwLCA0MjI3OSwgMTI3MTQyLCAxMjY1MDMsIDc4NDE1LCAKLSAgICA5ODMyMjgsIDY4NTI0LCA5ODMzODYsIDEzMjQ4LCAxMjUwMjcsIDk4Mzg0MywgNDM5NTYsIDEyODQxNSwgOTgzMTUzLCAKLSAgICAxMjEwMDksIDU2NjMsIDcxMTIwLCAxMjg0NzIsIDEyODk1OCwgMCwgMjQ4MiwgMTQ3MSwgMTk0NTgzLCAxMTM3NDcsIAotICAgIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCA3MTQyNywgMTIzNzQsIDEyMTM1NywgMTI3MDY3LCAwLCAxMTg4MjgsIAotICAgIDI0NjAsIDcxODgyLCAxMTk0NCwgMTIzNzYsIDkyMzQyLCA2NDY3OSwgOTI4OTMsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIAotICAgIDU4NzAsIDExMTIyLCAyMDI0LCAxMjcxODAsIDk4MzM5MSwgNzE4NzksIDUzOSwgMCwgMTIwMzAyLCA3MDEyMCwgMzg1MywgCi0gICAgNjUxODAsIDEyNzkyMywgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCA4NjU5LCAwLCAxMjQ3NCwgNjcyNDEsIDk1MDMsIAotICAgIDE5NDk2OSwgMjQ3OCwgMTIwMjQ4LCA0MTYyLCAwLCA0MjYwLCAxMjk1MywgNjk2MzMsIDgyOTY2LCAxMjQ3MCwgOTI2NDAsIAotICAgIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIDExMzY4NywgOTgzNTc5LCAxMjgxOTAsIAotICAgIDY5NjcyLCA4MjEzLCA0MzgyNCwgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDE5NDk2NywgNzg4ODUsIDExOTI0MywgCi0gICAgNjgyMzUsIDEyMDU4MiwgNzg1NDcsIDExMzcwOSwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMTE5MDQ0LCAwLCA3Mzc5MSwgMCwgCi0gICAgODMwMzAsIDAsIDEyMTQ4MiwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIDM4OTMsIAotICAgIDc0OTAzLCAxMjA5MjcsIDEyMjEwLCA3MjIxLCA0MjE0NywgNzQ4NjgsIDc0NTUwLCA3MTIxNSwgNjQ3NDcsIDExODg0MSwgCi0gICAgMTI4MDg2LCAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCAKLSAgICA0MTk3MywgMzU5MSwgNDE5NjksIDgzMDA4LCAyNDUzLCAxMTg4OTksIDkyNjY2LCA2NDcwNSwgNzEwNjgsIDAsIDEwMzQ5LCAKLSAgICAxMDQxMywgNDM1OTEsIDQxOTYyLCAzMjAyLCA3NDM1MywgMTI5MTc1LCA4MzE2LCAxMjkxNzQsIDAsIDk0MDYwLCA2ODcsIAotICAgIDkzMDU1LCAxMjkwNzQsIDAsIDE4NDAsIDEyNzgwOSwgNjg2NzEsIDExMTIxLCA0ODgzLCAyODUsIDQ3MjMsIDExMTc1LCAKLSAgICA5MjY5MiwgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDAsIDQyMzIzLCA3NDY0MCwgCi0gICAgOTc0MywgMTIwMjMyLCAxMzEzNCwgOTMwNjUsIDEyODk1NiwgNjU5MzEsIDkyNTc5LCAxMjgzMjksIDQyNjM0LCA5ODMzNDUsIAotICAgIDQzNDM3LCAzMDgxLCAxMTQ2MywgMTIwMTU0LCAwLCAxOTUwMTMsIDEwNDQ1LCAxMjEzMjIsIDkyOTY5LCA2NjcxNywgMjYxNCwgCi0gICAgOTEyNSwgNzExMjUsIDE3MjksIDEyOTAzNCwgNzI0MjAsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAxMjQ5MjksIAotICAgIDY1MTk0LCA2NjIwMSwgMCwgNjY1NzgsIDUwMDEsIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgCi0gICAgNjM4NzksIDQ5NDMsIDUxNTAsIDczODg5LCA3Mzc2NCwgNDAzOSwgNjQzLCAzMDg2LCA5MjUzMywgNDI0NDgsIDQyMjk5LCAKLSAgICA1OCwgMTIwMDg0LCA5MTc5NTIsIDEyMDA4MywgNjM4NzMsIDg0OTEsIDAsIDAsIDk4MzYyMywgNDUzMCwgNDI0MDksIDcxMjYsIAotICAgIDE5NDU3NSwgMjcyMSwgMTIwMDczLCAxMTkwOTYsIDE5OTI5LCAxMTg5NDEsIDEyODc5NywgOTI5NzUsIDQyNDIsIDQyNjQsIAotICAgIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCA5ODMxOTksIAotICAgIDk3NTQsIDExOTEwMiwgNDQzNywgNzM5NDgsIDEyNzA3NCwgOTgzMjQwLCA1NTI4MCwgNDIxNzQsIDEyNzk1NCwgNDI0MzAsIAotICAgIDAsIDk4MzQ1MiwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCA2ODMxNCwgNjY2NjcsIDExOTM1MSwgCi0gICAgMTk0OTgyLCAxMjExNzIsIDQyMjAwLCA0MjU2NiwgNzAwMDAsIDEyODkyOCwgNTA4OCwgNjk0OCwgMCwgODUyNCwgMTI1MDQwLCAKLSAgICAwLCAxMjM4NSwgMCwgNzQ5MjYsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIDY1MDM5LCA2NTAzOCwgMTIzOTIsIAotICAgIDY1MDM2LCA4MDY0LCAxMjc1NTgsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgNzc5OTksIDExNjYzLCAxNjY2LCAKLSAgICA0MjA5MSwgMTE5NjU3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMTI3ODk3LCA2Mzg5NiwgMTIwNjEsIAotICAgIDQyMDk2LCA0MzYyMSwgMzM2MiwgMTIzNzcsIDExOTkzNCwgOTgzODM0LCA2ODQ0OSwgNzQ2MSwgNzM5MDEsIDEyNDQsIDMzMSwgCi0gICAgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMCwgODExMiwgMCwgNjU4NTIsIDc0NjI5LCAxMjM3OSwgMTI3MTA3LCA5MjkzMCwgCi0gICAgNDE5NjQsIDQyMjA4LCA2Mzg0MywgMjA4NCwgNDE5NjUsIDcwMDg5LCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIDY2NDEzLCAKLSAgICA0MTIyMCwgMTMwMzIsIDkyOTgwLCA1ODQsIDEyOTMzLCA0MzE3NywgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgCi0gICAgODY5OCwgMTI2NjUsIDAsIDE5MzAsIDAsIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMCwgNjM5MDEsIDAsIAotICAgIDM2NTcsIDExOTYxMSwgNjUyMDIsIDYwMDAsIDExMzc4NiwgMTI0MjYsIDEyMTA1OCwgMTE5OTM1LCA0MTc0MCwgMTI0MjgsIAotICAgIDQxMjgzLCA0MTkxNiwgMTE5MjEwLCAxMjgzMTgsIDAsIDEyNDI5LCA2NzI3LCA5ODM5NDgsIDc1NjIsIDEyNTEyOSwgNTE3MCwgCi0gICAgOTgzOTE1LCA0MTc1NSwgNjc2LCAwLCA2NjcwNCwgNjY2NjQsIDk5NzgsIDY2NDkxLCAzNTM2LCAwLCA5NzUyLCA5MjM5NywgCi0gICAgNjE2MiwgNzgzMjAsIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgMzA3MiwgCi0gICAgOTE3ODI4LCA0MjIwNywgNzQ1NDksIDExNzk2LCA0MDk3MCwgNDE4MzAsIDEyNTAyMSwgNzAxNTEsIDgzMDgsIDkxNzc5NywgCi0gICAgNzA4MDcsIDExOTI1OCwgNjc4NjQsIDExMzY5NiwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjcyMzEsIDM0MSwgMjcyNywgCi0gICAgNDEyOSwgMzUzOSwgMCwgNjM4NjEsIDAsIDc5MTMsIDAsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMTI5MDg1LCA2Mzg2NywgCisgICAgODgzNywgNjUyMjksIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCA2ODgyNiwgMzY0MCwgOTI0MTEsIAorICAgIDQyMzIxLCA3Mjg0LCA5Mjg4MCwgMTE4OTg3LCAxOTQ3ODMsIDEwMDg5NywgNzQxMTUsIDE5NDk1MSwgMTI1MTk5LCAKKyAgICAxOTQ5NTMsIDQyMDgwLCAyNTI5LCA5ODM5MDksIDk4MzQ3MSwgNjYwMTAsIDQyMDgzLCA3NDk1MiwgNjgzOTgsIDE5NDk1NywgCisgICAgNjc2MTksIDY2MzY3LCAxMDA4OTksIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgNDI5NSwgNjUyNjQsIDY4MDA2LCAKKyAgICAwLCA2NzgzNSwgMTAwOTAwLCA3ODUsIDgyMzYsIDEyODY0NywgOTAyNywgNjgxNjAsIDY3NjIzLCA2NDM4MywgMTIwMjY1LCAKKyAgICA5MjUsIDEyNzE1NiwgMCwgNDE5ODUsIDQxMDcxLCA5NTg2LCAxMjA5ODgsIDQxOTg0LCA5MjE3LCAxMjgzNzIsIDkyNTEwLCAKKyAgICA5MjIxOCwgOTE4NiwgMjA2NywgNDAxNiwgMTI4ODQ4LCAxMjkxODIsIDM4MSwgMTI5MzYsIDk4MzczNiwgNDIwNzcsIAorICAgIDkyOTg1LCA2OTg4MCwgNTE4NCwgNDIwNzgsIDE5NDYwNywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIAorICAgIDY3NjMzLCAxMjEzMzQsIDEyNzEwNCwgODEyLCAzNjE1LCA3MjQwMSwgNTE3OCwgNDQwMDAsIDkyNDM2LCA3ODgwNywgNTE4OCwgCisgICAgNzQyODcsIDY3NjI5LCAzNjA1LCAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDEyNzc5MywgNjc2MzEsIDQyNjE2LCAKKyAgICAxMjA2NzAsIDI0NDIsIDEwNzAzLCA2NzMxNywgNjc2MzIsIDY3MzE2LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgCisgICAgNzM5MzMsIDY3NjI2LCA0MjQwMSwgMTk0ODY1LCA2OTg3MiwgMTI3MzczLCA0MjI4OCwgMTI3NTEsIDc0OTA2LCA4NTQyLCAKKyAgICAxMzE0NSwgMTk0OTYzLCAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgNzEyMjAsIAorICAgIDQxMTE3LCAxMDA4OTMsIDkyNTgwLCAxMjg2MjQsIDc0OTM5LCA2NzYyNCwgMTI3OTc2LCAxMjkwLCAxMDA1OTEsIDY1NTg1LCAKKyAgICAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCA2NDczMSwgNzgwMDQsIDAsIDAsIDY2MzI1LCAzNDY1LCAKKyAgICAyNDA1LCA5MjQwLCA5ODM4NTgsIDEyNzU2LCA2NTI1OSwgMCwgOTgzNzgxLCAxMjc1MiwgNTgzMywgMTQzMiwgMTEyNDYsIAorICAgIDQxODgzLCA3MzkxMiwgOTc5OSwgOTE3ODkzLCA0MTg4NiwgMjQ4MCwgMTI3OTA2LCAyMDYyLCA2NzMyNiwgNjQ5NCwgNTUzNywgCisgICAgNzg2NTYsIDk4MzI3NSwgNzA2NjEsIDEyNDk2OSwgMTIxMSwgMCwgMTIwOTcxLCA2NzI2OSwgMTE4ODMyLCAxMjMxOCwgCisgICAgMTI5MDI0LCAxMTM3OTYsIDY4MDA1LCAxMDYyMiwgOTgzNzc5LCAwLCA2ODgyMSwgNjU2NiwgNzExOTUsIDAsIDczNzgwLCAKKyAgICAxMTkxOTYsIDY0ODY0LCAwLCA3ODY2MCwgMTI5MDUyLCA4Mjg0LCAxMzA4MSwgMTE5MjA2LCAzNTg5LCA0MjA1MSwgNDAzNSwgCisgICAgNjQ5MiwgODMwMDMsIDQyNjUsIDY2NDIsIDM5NzcsIDcyNzQzLCA0MTc3OCwgODM2LCA5Mjk0NywgMjQ4OCwgMTI1MDk2LCAKKyAgICA0NTgyLCAwLCA3MTQyNiwgNDE3NzcsIDEyOTI2LCA3MjcwOCwgNzUyOCwgMTA1NTAsIDExMzc2MSwgOTI3MDYsIDk4Mzk1NSwgCisgICAgMTA5NjEsIDkzOTc3LCAxMzc0LCA2NDg3OCwgMTE5MDE0LCA2NzcyMCwgNDIzODksIDIyNzMsIDIyODYsIDkxNzYwNCwgCisgICAgNzg0OTIsIDQxMzc3LCAxMjc5MDksIDE5NTA0NywgNDAwLCAxMjU5NywgMTAwNDgyLCAxMjgwOTcsIDEyOTA3MSwgNjY2MSwgCisgICAgOTE3OTYxLCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgMTE5NjE3LCA3MTMwMSwgMTI3MjkyLCAzNDczLCA3NzE4LCAxMTM3NTUsIAorICAgIDY2NzQyLCAxMjUxMzksIDU1Mjg1LCA3Mzc4NCwgNjYzOTQsIDAsIDExOTY5LCAxMjA0NjEsIDEyNzg0MSwgNjM2NSwgMTg4NywgCisgICAgNjc2MywgOTI1NTEsIDgwODAsIDcwMDYsIDAsIDkyNzYzLCA2NzU3LCA2NDM1MSwgMTU0NCwgNjcxNTYsIDY3NjYsIDY0Njc3LCAKKyAgICAxMjA3MTYsIDY3MDg4LCA2MTQ2LCA3NDAzMSwgNzcxLCAxMjA2ODIsIDE5NDY1MCwgMTI4MTIsIDEzMTY4LCA0MjI3MiwgCisgICAgMTIyMDAsIDY2NDIzLCA3OTA0LCAxMjg3MTUsIDk1MywgMTI5MTcsIDcyNzA0LCAxMjMwMCwgNjcwODksIDExNDkxLCA5NzI0LCAKKyAgICAxMDM0MSwgOTgzNzczLCA5NTI0LCA3NDkwLCAxMTM4OSwgNzQ4OSwgMzM3OSwgMTI4Nzc1LCA3NDg3LCA3MjcxNiwgNDcxLCAKKyAgICA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCA3NDcyLCAKKyAgICAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIDM1NDQsIAorICAgIDk4MzM5MCwgNjAxNywgNjUzMTEsIDc0OTM1LCAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIAorICAgIDEwMDkzNiwgMTIwNTQ0LCAwLCAxMjc5NTAsIDkyNjYwLCA5ODMzNTYsIDc3ODg5LCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIAorICAgIDkyMzQxLCAxMjExMzMsIDIxMzksIDQyNTYsIDEyMDc3NiwgNzQzODAsIDQzODM2LCA0MjY3NSwgNDI2NTgsIDEyODQ1LCAKKyAgICA2NjY2LCA3MDUwOCwgNjUxMzgsIDExOTM1NSwgNjc4NjIsIDAsIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIAorICAgIDc0ODY1LCAxMjUxMzQsIDEyMDMyMSwgMTI3MjgzLCAxMjc4NzIsIDcxODYsIDcyNzUxLCAxMjA1NTUsIDcyNzYzLCA0NDUsIAorICAgIDExOTAyOCwgNjY4NDksIDEyNTAzMSwgOTE3ODQwLCA4MzMwLCAwLCAxMjUwMTgsIDQyNzk3LCAxMTM3MzYsIDEyMDIxNSwgCisgICAgODMwMDEsIDM5MDIsIDAsIDE3NzAsIDQzOTU5LCAxMDEwMzksIDE1NjAsIDQzOTU4LCA5MjE2NywgNDU4NCwgNzM4NDMsIAorICAgIDEyMjkxMSwgMTE3MTIsIDEwODY2LCA2NzA5MiwgMTExOCwgNzEzMzQsIDc0ODg4LCA5ODM0NzYsIDEwODEsIDc0MzYsIAorICAgIDExMTQ3LCA3MjUyLCA3MDA5MywgNTk5NiwgNjk5MjEsIDQ5MDMsIDY4MTQyLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAxMzMwLCAKKyAgICAxMjY2MDAsIDcxMzksIDAsIDEyMDQ3LCA3Njc1LCA5ODM4NDcsIDEyODc5NywgMTg0OCwgNDMzNCwgNjMyNCwgNDE5NzUsIAorICAgIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAxMTM3OTUsIDcyODA3LCAxMjcxNSwgNjgwMDIsIDE5NDU3NiwgCisgICAgODMyNTYsIDIwMTgsIDY2NjcyLCA0MTk3OSwgNjY2ODUsIDExOTE1NywgNjgwMDAsIDc4NDkwLCAxMjkxNDAsIDEyNjk4NCwgCisgICAgNjgwMDEsIDkzMzQsIDkyNzA1LCA3MDgwMCwgNzAxMDEsIDc5NzUsIDEwMDkxMCwgNzc5NTcsIDkyMTQsIDQzNDk0LCA0ODg0LCAKKyAgICA2NjU5NywgNjk3MzIsIDAsIDkyOTU4LCA2MzEzLCA2NTUxMywgNjk4NTcsIDEwMDkwOCwgMTI3Nzk5LCAxMjg3NTcsIDIzNDUsIAorICAgIDQzNjk3LCA0NjMsIDAsIDEyMTI4MSwgNjgxNzgsIDMxMTcsIDU0NjAsIDEyMTQyMywgMTI3OTU1LCA5ODMzODksIDAsIAorICAgIDQyMjc5LCAxMjcxNDIsIDEyNjUwMywgNzg0MTUsIDk4MzIyOCwgODIyMSwgOTgzMzg2LCAxMzI0OCwgMTI1MDI3LCAKKyAgICA5ODM4NDMsIDQzOTU2LCAxMjg0MTUsIDEyOTA5MywgMTIxMDA5LCA1NjYzLCA3MTEyMCwgMTI4NDcyLCAxMjg5NTgsIAorICAgIDEyNzg1NCwgMjQ4MiwgMTQ3MSwgMTk0NTgzLCAxMTM3NDcsIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCA3MTQyNywgCisgICAgMTIzNzQsIDEyMTM1NywgMTI3MDY3LCAwLCAxMTg4MjgsIDI0NjAsIDcxODgyLCAxMTk0NCwgMTIzNzYsIDkyMzQyLCAKKyAgICA2NDY3OSwgOTI4OTMsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIDU4NzAsIDExMTIyLCAyMDI0LCAxMjcxODAsIDk4MzM5MSwgCisgICAgNzE4NzksIDUzOSwgMTAwOTMzLCAxMDA5MzIsIDcwMTIwLCAzODUzLCA2NTE4MCwgNzI3MzAsIDEwMDkzOSwgMTAwOTM4LCAKKyAgICA5MjMyNCwgOTgzNzQyLCA4NjU5LCAwLCAxMjQ3NCwgNjcyNDEsIDk1MDMsIDEwMDk0MSwgMjQ3OCwgMTAwOTQzLCA0MTYyLCAKKyAgICAxMDA5NDUsIDQyNjAsIDEyOTUzLCA2OTYzMywgODI5NjYsIDEyNDcwLCA5MjY0MCwgNzQxODksIDI3NDIsIDEyNDc2LCAKKyAgICAxMTc5OCwgMTA5NDYsIDEyNzMxMCwgNTAwMCwgMTEzNjg3LCA5ODM1NzksIDEyODE5MCwgNjk2NzIsIDgyMTMsIDQzODI0LCAKKyAgICA3NzcxLCA2MTYxLCA2ODAxOCwgNjcwOSwgOTIyNDksIDc4ODg1LCAxMTkyNDMsIDY4MjM1LCA4MzM4OCwgNzg1NDcsIAorICAgIDEwMDkyMSwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMTAwOTI1LCAxMDA5MjgsIDczNzkxLCAxMjAyMzgsIDgzMDMwLCAwLCAKKyAgICAxMjE0ODIsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCA3NDkwMywgCisgICAgMTIwOTI3LCAxMjIxMCwgNzIyMSwgNDIxNDcsIDc0ODY4LCA3NDU1MCwgNzEyMTUsIDY0NzQ3LCAxMDA5MTksIDEyODA4NiwgCisgICAgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgNDE5NzMsIAorICAgIDM1OTEsIDQxOTY5LCA4MzAwOCwgMjQ1MywgMTE4ODk5LCA5MjY2NiwgNjQ3MDUsIDcxMDY4LCAwLCAxMDM0OSwgMTA0MTMsIAorICAgIDQzNTkxLCA0MTk2MiwgMzIwMiwgNzQzNTMsIDEyOTE3NSwgODMxNiwgMTI5MTc0LCAwLCA5NDA2MCwgNjg3LCA5MzA1NSwgCisgICAgMTAwNzA1LCAwLCAxODQwLCAxMjEyMjQsIDY4NjcxLCAxMTEyMSwgNDg4MywgMjg1LCA0NzIzLCAxMTE3NSwgOTI2OTIsIAorICAgIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCA5MTc3NzAsIDQyMzIzLCA3NDY0MCwgOTc0MywgCisgICAgMTIwMjMyLCAxMzEzNCwgOTMwNjUsIDEyODk1NiwgNjU5MzEsIDkyNTc5LCAxMjgzMjksIDQyNjM0LCA5ODMzNDUsIDQzNDM3LCAKKyAgICAzMDgxLCAxMTQ2MywgMTIwMTU0LCAwLCAxOTQ1NjcsIDEwNDQ1LCAxMjEzMjIsIDkyOTY5LCA2NjcxNywgMjYxNCwgOTEyNSwgCisgICAgNzExMjUsIDE3MjksIDEyOTAzNCwgNzI0MjAsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAxMDA5MTUsIDY1MTk0LCAKKyAgICA2NjIwMSwgMTAwOTE2LCA2NjU3OCwgNTAwMSwgNDE4NzksIDc0NDI3LCA0MTIxLCA1MDAzLCA4ODQsIDY2NzAwLCA2Mzg3OSwgCisgICAgNDk0MywgNTE1MCwgNzM4ODksIDczNzY0LCA0MDM5LCA2NDMsIDMwODYsIDkyNTMzLCA0MjQ0OCwgNDIyOTksIDU4LCAKKyAgICAxMjAwODQsIDEwMDM1NSwgMTAxMDI2LCA2Mzg3MywgODQ5MSwgMTk0NjQzLCAxMDA4OTEsIDk4MzYyMywgNDUzMCwgNDI0MDksIAorICAgIDcxMjYsIDEwMDg5NCwgMjcyMSwgMTIwMDczLCAxMTkwOTYsIDE5OTI5LCAxMTg5NDEsIDEyNzMyNiwgOTI5NzUsIDQyNDIsIAorICAgIDQyNjQsIDEyMDA3NywgMTAwOTAyLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCAKKyAgICAxMjAyMjUsIDk3NTQsIDExOTEwMiwgNDQzNywgNzM5NDgsIDEyNzA3NCwgMTE5MTg2LCA1NTI4MCwgNDIxNzQsIDEyNzk1NCwgCisgICAgNDI0MzAsIDEyNzgzNSwgOTgzNDUyLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDY4MzE0LCAKKyAgICA2NjY2NywgMTE5MzUxLCAxMDA2NzcsIDEyMTE3MiwgNDIyMDAsIDQyNTY2LCA3MDAwMCwgMTAwODgxLCA1MDg4LCA2OTQ4LCAKKyAgICAwLCA4NTI0LCA3MjczNiwgMCwgMTIzODUsIDkxNzg1NSwgNzQ5MjYsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIAorICAgIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAxMjc1NTgsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgCisgICAgNzc5OTksIDExNjYzLCAxNjY2LCA0MjA5MSwgNzQwNjcsIDEyMzgzLCA0MzY3MSwgNDIwOTIsIDY4NDE4LCA0Mjg5LCAKKyAgICAxMDA4ODUsIDYzODk2LCAxMjA2MSwgNDIwOTYsIDQzNjIxLCAzMzYyLCAxMjM3NywgMTE5OTM0LCAxMjg1ODYsIDY4NDQ5LCAKKyAgICA3NDYxLCA3MzkwMSwgMTI0NCwgMzMxLCA3Mzc4NiwgMTI2ODMsIDEwNjYyLCAxMjg3NzgsIDgxMTIsIDAsIDY1ODUyLCAKKyAgICA3NDYyOSwgMTIzNzksIDEyNzEwNywgOTI5MzAsIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCA3MDA4OSwgCisgICAgNjU4NjYsIDQzMjcsIDYzODQ4LCA2Mzg0MCwgNjY0MTMsIDQxMjIwLCAxMzAzMiwgOTI5ODAsIDU4NCwgMTI5MzMsIDQzMTc3LCAKKyAgICAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAyOTM1LCA4Njk4LCAxMjY2NSwgMTAwODc3LCAxOTMwLCAxMDA4NzksIAorICAgIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMTAwNTcxLCA2MzkwMSwgMTAwNTg3LCAzNjU3LCAxMTk2MTEsIAorICAgIDY1MjAyLCA2MDAwLCAxMTM3ODYsIDEyNDI2LCAxMjEwNTgsIDc0MDEzLCA0MTc0MCwgMTI0MjgsIDQxMjgzLCA0MTkxNiwgCisgICAgMTE5MjEwLCAxMjgzMTgsIDAsIDEyNDI5LCA2NzI3LCAxMDA4NzMsIDc1NjIsIDEwMDg1MywgNTE3MCwgNzgyNDksIDQxNzU1LCAKKyAgICA2NzYsIDEwMDg1NiwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgODMwNDcsIDk3NTIsIDkyMzk3LCA2MTYyLCAKKyAgICA3ODMyMCwgNjkyMjgsIDEwMTEzLCA0MTgyOSwgNjU4ODYsIDUxNTksIDEyNDIyLCA0MTgzMiwgNDM5LCAzMDcyLCA5MTc4MjgsIAorICAgIDQyMjA3LCA3NDU0OSwgMTE3OTYsIDQwOTcwLCA0MTgzMCwgMTI1MDIxLCA3MDE1MSwgODMwOCwgMTAwNjk0LCA3MDgwNywgCisgICAgMTE5MjU4LCA2Nzg2NCwgMTEzNjk2LCA5MTc4MDAsIDEyMzM2LCA0MTM1LCA2NzIzMSwgMzQxLCAyNzI3LCA0MTI5LCAzNTM5LCAKKyAgICAxMDA4NjEsIDYzODYxLCA3MDY4MywgNzkxMywgMTAwNzY2LCA2Mzg1OSwgNDEzMSwgNjM4NjgsIDEwMDM2NiwgNjM4NjcsIAogICAgIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDk4Mzg5NywgNzQ1NjAsIDQxMzcsIDgwODIsIDc4NTA2LCAxMTkwNjIsIDc4NTA0LCAKICAgICA2NzA0LCA0NTkxLCAxMjgwMjksIDQzODczLCAxMjA3NTMsIDk2ODAsIDEyOTM3LCAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgCiAgICAgNjgzMjEsIDQxNTAxLCAxOTQ1ODEsIDQyMDMxLCA1NzE5LCA3MTcyLCA0MjY4NywgODM2OCwgMTI4MzA2LCA0MTQ5OSwgCi0gICAgOTMwNjgsIDcxMDQ3LCA0MjI0MiwgNDE0OTgsIDkxNzc5NCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDY3MTgyLCAKKyAgICA5MzA2OCwgNzEwNDcsIDQyMjQyLCA0MTQ5OCwgMTI4MTc4LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgNjcxODIsIAogICAgIDI5MjQsIDY3MTgzLCAxMjA1MTAsIDAsIDk4Mzk3MiwgOTI3NjYsIDczOTQxLCA2NzE4NiwgNDIzMzAsIDY3MTg3LCAzOTY5LCAKLSAgICAxMjE0MDUsIDAsIDcxNjksIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCA0MjA4NiwgMTI2NjE1LCAyMjE5LCAxMjEzNDksIDAsIAotICAgIDEyODgwMSwgNjcxODAsIDEyNzU2OSwgMzI3LCAxMjEyNzcsIDkwNDIsIDkxNzc3NywgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIAotICAgIDkxNzc4MSwgMTIwMjIyLCA4MzEyOSwgMTI0MzEsIDg2NjgsIDEyNDM0LCA2NzE5NCwgMTEzODEyLCA1OTk5LCA3NTAxMywgCi0gICAgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIDE3MjYsIDEwMTUsIDc0MDc5LCA4MjEyLCAxMjgwNjUsIDExMzc1NCwgCi0gICAgNDI0MjMsIDExOTA2NiwgMTk0NjEzLCA3MjM5OCwgNjY3MDksIDEyMTA2MSwgODgxMSwgOTI3LCA5MjUzMiwgMCwgMTI0MzYsIAotICAgIDEyMDA4NywgNDIwMjEsIDAsIDY3NjQ0LCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAwLCAxOTUwMTYsIDEyNzk3MiwgCi0gICAgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDEyODc0MCwgMjI5NiwgCi0gICAgMTI4OTMyLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgMTExNzgsIAotICAgIDkxNzU4NCwgNDE1MDMsIDEyNzQ3OCwgMTEyNjUsIDY4Mjk1LCAxMjA3NTYsIDE5NDkyMiwgNjcyODUsIDU2NjQsIDM5NzIsIAotICAgIDEyMDg5MSwgMTI4NTgzLCAxMjk0MDgsIDY3Mjg0LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIAotICAgIDExMjEwLCAxMjQxOCwgODU4NiwgMzg4MiwgODUzMiwgOTE3NzcxLCAxNTczLCA2ODA4MSwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgCi0gICAgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTI2NDkxLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIAotICAgIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDkxNzU5NCwgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDExOTkzMSwgCi0gICAgMTE3MjQsIDEyNzc4NywgMCwgNzExMjIsIDEyNjYxOSwgMCwgOTgzNjYxLCA4MDI3LCAxMDk5NywgOTE3MSwgMTI3NDEsIAotICAgIDExNDAwLCA0Mzk0MywgMTk0Nzk5LCA2NjgzMywgMTI4MjM5LCA5ODM3MDcsIDkyNTU3LCA5Mzk3NiwgMTI3NTIzLCAKLSAgICAxMjAxOTAsIDEzMjQsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCA5ODM4NzMsIDc3MTUsIDM4ODEsIDQxNDg3LCAxMjExOCwgCi0gICAgNDI1MTQsIDY4NjUxLCAxMjgyMTAsIDEyODU5NCwgMzAwOSwgNDE0NzYsIDQxNDg5LCA2OTgyNSwgMzAwNywgMTQ0OCwgCi0gICAgMzAxOCwgMTk0ODA5LCAzODg5LCA4NTIxLCA1MDgzLCA1MDgyLCAxMTk4NTksIDc4MjU1LCA4NTE5LCAxMjEyMjYsIDMwMTQsIAotICAgIDUwODEsIDY1ODUzLCAxMjA3MTUsIDE5NDk5MiwgNjgwMTQsIDY5OTUxLCA1MDc5LCA2NDgwMiwgNDIyMTAsIDQ1OTcsIAotICAgIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAxMjM3MSwgMTExMDUsIDg0MDcsIDY3MTYzLCAxMDgwNSwgODUxOCwgMTA3NzksIAotICAgIDEyMDE4OCwgNzEzMDMsIDEyMTI0MCwgMTIzNjcsIDQyMTcwLCAwLCA2NzI5MCwgNjI5LCAxOTI0LCAxMjcwOTgsIDEyMDM3LCAKLSAgICA2NzE1OCwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIAotICAgIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgNTA3NSwgMTIxMTA5LCAxMjczMDAsIDY1MDc1LCAwLCAxMTAwNywgCi0gICAgNzA4NTEsIDY2NjU5LCA5MjYwNywgOTE3OTMzLCA2NjY4NCwgMTI4MDYzLCAzNDM0LCA0OTU0LCAxOTA0LCA5MjY3OSwgCi0gICAgNTI2NiwgMTI2OTgwLCA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgCi0gICAgMTk0OTI2LCA0NjEsIDk4MDMsIDQyMjgyLCA0NTA0LCAxNTA1LCAxMjc4OTMsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIAotICAgIDAsIDU1MjM2LCA5MjY1OSwgNjY0NjEsIDUxNzcsIDQxMzI0LCAxMjA1NSwgODcyMiwgMTIwODA1LCA0MTMyNywgOTgzNzMyLCAKLSAgICA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCA0MTMyNSwgNzQ5MzAsIDcyMSwgMTAxODIsIDkxMDgsIAotICAgIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCA3NDk2MywgMTIxMDE0LCA1OTk4LCAwLCA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCAKLSAgICA5NDEwNCwgNzg1NzEsIDc0ODg5LCA3MTMyOCwgMTI4OTU1LCA0MTU3NiwgNDIyMTUsIDc4NTcwLCA3NDAzNywgMCwgODU3OCwgCi0gICAgNTk5NSwgNzU3MywgNDE1NzUsIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCA2NDc2NywgMjY3MCwgNDE2NywgMTk0Nzk2LCAKLSAgICAxMTcyMywgMCwgNzQxMjAsIDEyNjY0MiwgNjUwNzYsIDkzOCwgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgMCwgNjcxNzksIAotICAgIDY3MTY4LCAxMTc0MiwgMjQxOSwgNjcxNzcsIDExNDkzLCAxMjMzNCwgOTI0OTQsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgCi0gICAgMTI0MDcsIDExOTc4LCA0NDA0LCA5MTg5LCAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMCwgCi0gICAgNDIwMDIsIDEyNDA0LCA2ODA5MiwgNzQ5MjgsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCAKLSAgICA4NjEsIDY3Njk5LCA3NDg4MCwgNjgyOTcsIDk4MzgwNywgNDM3NTcsIDQzMzcwLCAxMjkyOTgsIDAsIDExOTU2LCAxMjQ5NjcsIAotICAgIDEyMTI2MywgNzA4MTUsIDk2MTYsIDY2MzEsIDkyMzM4LCAxMjgxNiwgNDM3NTksIDQyMjE4LCAxMjcxMCwgNjg2NzQsIAotICAgIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgOTMwMTcsIDEyODI4OSwgODUzLCAKKyAgICAxMDEwNzIsIDk4Mzk2MSwgNzE2OSwgMTk5MiwgOTY1MiwgNzM5NzcsIDcyNDYsIDQyMDg2LCAxMjY2MTUsIDIyMTksIAorICAgIDEyMTM0OSwgMCwgMTI4ODAxLCA2NzE4MCwgMTI3NTY5LCAzMjcsIDEyMTI3NywgOTA0MiwgMTIwODQzLCA5MTc3NzYsIAorICAgIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjAyMjIsIDc0MjA2LCAxMjQzMSwgODY2OCwgMTI0MzQsIDY3MTk0LCAxMTM4MTIsIAorICAgIDU5OTksIDc1MDEzLCA3NzEyLCAxMjQzMiwgMTIwODg1LCA0MzY1MywgMTcyNiwgMTAxNSwgNzQwNzksIDgyMTIsIDEyODA2NSwgCisgICAgMTEzNzU0LCA0MjQyMywgMTE5MDY2LCAxOTQ2MTMsIDcyMzk4LCA2NjcwOSwgMTIxMDYxLCA4ODExLCA5MjcsIDkyNTMyLCAKKyAgICA5ODM2MzcsIDEyNDM2LCAxMDEwNTYsIDQyMDIxLCAxOTQ2MTAsIDY3NjQ0LCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAKKyAgICAxMDEwNTgsIDE5NTAxNiwgMTAwNTY2LCA3ODE5NywgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCAxMDA4NzAsIDAsIDE5OTE0LCAKKyAgICAxMjE3OSwgMTAwNTY5LCAyMjk2LCAxMDA1OTYsIDYzODM2LCA2MzgzMiwgNzI3OTMsIDEwOTY3LCA2MzgxNiwgMjU5NCwgCisgICAgMzQ0NCwgNjM4MTcsIDExMTc4LCA5MTc1ODQsIDQxNTAzLCAxMjAwODcsIDExMjY1LCA2ODI5NSwgMTIwNzU2LCAxMDA2MDAsIAorICAgIDY3Mjg1LCA1NjY0LCAzOTcyLCAxMDA5ODUsIDEyODU4MywgMTI5NDA4LCA2NzI4NCwgMTI0MTYsIDkxNzc2NCwgMTE5NjA4LCAKKyAgICAxMDgxNiwgMTI3Mjg5LCAxMTIxMCwgMTI0MTgsIDg1ODYsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgNjgwODEsIAorICAgIDExOTg0NywgNDU5NiwgNjYzMzksIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDEyNjQ5MSwgMTI0MTQsIDgyODcsIDY4MjE5LCAKKyAgICAxOTUwMTcsIDY4MTA4LCAxMTQzLCAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCA5MTc1OTQsIDExODg4NCwgCisgICAgOTAyMSwgMTIwNzgzLCAxMTk5MzEsIDExNzI0LCAxMjc3ODcsIDEyMDE5MSwgNzExMjIsIDEyNjYxOSwgMCwgOTgzNjYxLCAKKyAgICA4MDI3LCAxMDk5NywgOTE3MSwgMTI3NDEsIDExNDAwLCA0Mzk0MywgMTAwNjc0LCA2NjgzMywgMTAwODA1LCAxMjc3NzksIAorICAgIDkyNTU3LCA5Mzk3NiwgMTE5ODQ0LCAxMjAxOTAsIDEzMjQsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAxMDEwNjIsIDc3MTUsIAorICAgIDIyNzEsIDQxNDg3LCAxMjExOCwgNDI1MTQsIDY4NjUxLCAxMjgyMTAsIDEyODU5NCwgMzAwOSwgNDE0NzYsIDQxNDg5LCAKKyAgICA2OTgyNSwgMzAwNywgMTQ0OCwgMzAxOCwgMTk0ODA3LCAzODg5LCA4NTIxLCA1MDgzLCA1MDgyLCAxMTk4NTksIDc4MjU1LCAKKyAgICA4NTE5LCA3MjcxMSwgMzAxNCwgNTA4MSwgNjU4NTMsIDEyMDcxNSwgMTk0OTkyLCA2ODAxNCwgNjk5NTEsIDUwNzksIAorICAgIDY0ODAyLCA0MjIxMCwgNDU5NywgNjU1MzIsIDExODI4LCAxMjAxODUsIDEyMzcxLCAxMTEwNSwgODQwNywgNjcxNjMsIAorICAgIDEwODA1LCA4NTE4LCAxMDc3OSwgMTAwODAxLCA3MTMwMywgMTIxMjQwLCAxMjM2NywgNDIxNzAsIDEyODIxNSwgNjcyOTAsIAorICAgIDYyOSwgMTkyNCwgMTI3MDk4LCAxMjAzNywgNjcxNTgsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCA2MzkzMywgNjk3MzUsIAorICAgIDEwMDg4OCwgMTIzNjksIDEwNjQ5LCA2Nzk4MSwgNTA3NywgMTIwMTc0LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDEyMTEwOSwgCisgICAgMTI3MzAwLCA2NTA3NSwgMCwgMTEwMDcsIDcwODUxLCA2NjY1OSwgOTI2MDcsIDEwMDYwNywgNjY2ODQsIDEyODA2MywgCisgICAgMzQzNCwgNDk1NCwgMTkwNCwgOTI2NzksIDUyNjYsIDEyNjk4MCwgNTI3MiwgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAKKyAgICAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIDEyMDU4OSwgNDYxLCA5ODAzLCA0MjI4MiwgNDUwNCwgMTUwNSwgMTI3ODkzLCAKKyAgICA2MzI1LCA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAwLCA1NTIzNiwgOTI2NTksIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIAorICAgIDg3MjIsIDEyMDgwNSwgNDEzMjcsIDEyOTMzMiwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIAorICAgIDc0OTMwLCA3MjEsIDEwMTgyLCA5MTA4LCA3MTMxMSwgMCwgMzQxOSwgNDIyMjksIDc0OTYzLCAxMDA2MjcsIDU5OTgsIDAsIAorICAgIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIDk0MTA0LCA3ODU3MSwgNzQ4ODksIDcxMzI4LCAxMDA2MjksIDQxNTc2LCA0MjIxNSwgCisgICAgNzg1NzAsIDc0MDM3LCAwLCA4NTc4LCA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIAorICAgIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIDExNzIzLCA5ODM0MzksIDc0MTIwLCAxMTkwMDAsIDY1MDc2LCA5MzgsIAorICAgIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDk4MzI2MiwgNjcxNzksIDY3MTY4LCAxMTc0MiwgMjQxOSwgNjcxNzcsIAorICAgIDExNDkzLCAxMjMzNCwgOTI0OTQsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgMTI0MDcsIDExOTc4LCA0NDA0LCA5MTg5LCAKKyAgICAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMTIyOTIyLCA0MjAwMiwgMTI0MDQsIDY4MDkyLCAKKyAgICA3NDkyOCwgNDk0MCwgMTI0MTAsIDc2ODMsIDExNjcsIDczNzI5LCA0OTgzLCAxMjA1MDcsIDg2MSwgNjc2OTksIDc0ODgwLCAKKyAgICA2ODI5NywgOTgzODA3LCA0Mzc1NywgNDMzNzAsIDEyOTI5OCwgMTI4MzA3LCAxMTk1NiwgMTI0OTY3LCAxMjEyNjMsIAorICAgIDcwODE1LCA5NjE2LCA2NjMxLCA5MjMzOCwgMTI4MTYsIDQzNzU5LCA0MjIxOCwgMTI3MTAsIDY4Njc0LCAxMjcyMSwgNDEwMSwgCisgICAgNjYxODUsIDk4MzI2OSwgNTk5MiwgNzYxNiwgMTk1MDQ0LCA5ODMzOTIsIDEyNTc3LCA5MzAxNywgMTAwODgwLCA4NTMsIAogICAgIDQyNjkzLCAxOTQ2NDcsIDExOTAyNywgOTgzMjg0LCA1MDE2LCA0MzUzNSwgNjM4OTMsIDQyODM1LCA5NDkxLCA5MTc5MTMsIAotICAgIDAsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDY2ODc1LCA5OTAwLCA3NzUwLCA5MTc5NDYsIAorICAgIDEwMDg3NSwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgNjY4NzUsIDk5MDAsIDc3NTAsIDkxNzk0NiwgCiAgICAgMTI3ODk2LCA3NDYxOSwgMTE5MjY1LCA5ODM1ODcsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIDEyODE1MSwgMTIxNzcsIAotICAgIDExOTg0MywgOTgzMjYwLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAorICAgIDExOTg0MywgMTE4ODkxLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI1MjQ1LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAogICAgIDc0NzY4LCA4OTcxLCA3ODU5MywgNDMxMTMsIDk3MDIsIDY2ODUyLCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIAotICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMTE5MDQwLCAxMzA1NCwgMTIzOTQsIDAsIDAsIDE5NDk1NCwgCi0gICAgMTMwNTMsIDExODk3NCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIAotICAgIDkyNDMxLCAxMjEwMzcsIDEyNjY0NCwgMTk0OTE1LCA3MjY3LCAxMjc0NzksIDc0ODMzLCAxMjgxODEsIDU5OTMsIDI4MTksIAotICAgIDEyODc4OCwgMTI3MDYsIDcxMDYzLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgMCwgMTM2MywgOTgzNTgwLCAKLSAgICA0MjkyMywgNjM5MTAsIDYzOTk2LCAzMDc3LCAxMjAwMTgsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIDEyODMxMywgCi0gICAgNzEwNDgsIDQzMzM5LCA3Mzc3NiwgOTgzNiwgMTIwNzI3LCA5ODM5MDksIDQxNDgxLCA0MzMzNSwgNzgzMiwgNDIzNDMsIAotICAgIDMwOTAsIDQzMzM3LCA4MTcsIDE2NjQsIDE4NTAsIDgzMTc3LCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCA3NDkzMiwgCi0gICAgNzQwNDQsIDQyMzA3LCAxMjM4NiwgNDIzMDQsIDkxNzU1NSwgODM0MjgsIDEyMzg5LCAxMjEwNzksIDkyMzY2LCA0MTk5NiwgCi0gICAgMTE1MjYsIDYzOTg1LCA1ODY0LCAxMTQ3LCA0Mzg0OSwgNDI4ODcsIDE5ODcsIDkyNzE4LCA1NDgwLCA3ODU4LCAxMTY1MywgCi0gICAgNDExNiwgMTIzOTEsIDY2MTkzLCAxMjEzODMsIDQ5MzksIDEyMzg0LCAwLCAxMjc3NzgsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAKLSAgICA3MDI4NSwgNjczOTgsIDEyODgyMCwgMTI2NDksIDEyMDAyMiwgMCwgODI0NywgNTA3LCA5MSwgMjA0MiwgMTIwNzc1LCAKLSAgICA0MzY0MywgMTIxNDQ1LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCAxMTk4MTMsIDc3NCwgMTE5ODI5LCA3Nzg0MCwgMTE5ODE1LCAKLSAgICA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCA5ODMxMDUsIDc4Mzc3LCA5ODMyMzcsIDkxNzYyOCwgCi0gICAgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCA5Njg3LCA0MTY4MSwgCi0gICAgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAwLCA3NTM0LCAKLSAgICAxMjIxOSwgMjIyNiwgNzA0OTksIDQyODEwLCAxMDQ5MiwgMTIxNTEwLCAxMjExNDgsIDEyMTUwOSwgNDMxMTksIDAsIAotICAgIDc4NTM3LCAxMjQwMywgMjUwMCwgNzAxNDUsIDgzMjQ2LCA0ODk5LCAxMjcyOSwgOTgzMzk5LCAxOTQ2MTksIDc0MTEzLCAKKyAgICA3NDE4NSwgOTI0ODEsIDkyNzEwLCAxMjM5NywgNzc4MjcsIDExOTA0MCwgMTMwNTQsIDEyMzk0LCA2NjE4MiwgMCwgCisgICAgMTk0OTM3LCAxMzA1MywgMTE4OTc0LCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIDc4NTkwLCAKKyAgICA3ODU4MywgOTI0MzEsIDEyMTAzNywgMTI2NjQ0LCAxOTQ5MTUsIDcyNjcsIDEyNzQ3OSwgNzQ4MzMsIDEyODE4MSwgNTk5MywgCisgICAgMjgxOSwgMTI4Nzg4LCAxMjcwNiwgNzEwNjMsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCA5ODM2NzMsIDEzNjMsIAorICAgIDk4MzU4MCwgNDI5MjMsIDEzMTA5LCA2Mzk5NiwgMzA3NywgMTIwMDE4LCAwLCAxNTEyLCA2OTkyOSwgMTI1ODksIDQxNDc5LCAKKyAgICAxMDEwMzEsIDcxMDQ4LCA0MzMzOSwgNzM3NzYsIDk4MzYsIDExOTYwNywgOTE3ODE3LCA0MTQ4MSwgNDMzMzUsIDc4MzIsIAorICAgIDQyMzQzLCAzMDkwLCA0MzMzNywgODE3LCAxNjY0LCAxODUwLCA4MzE3NywgMzA3OSwgMTEzNDAsIDQyNDA4LCA0MjQ0NywgCisgICAgNzQ5MzIsIDc0MDQ0LCA0MjMwNywgMTIzODYsIDQyMzA0LCA5MTc1NTUsIDgzNDI4LCAxMjM4OSwgMTIxMDc5LCA5MjM2NiwgCisgICAgNDE5OTYsIDExNTI2LCA2Mzk4NSwgNTg2NCwgMTE0NywgNDM4NDksIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgCisgICAgMTE2NTMsIDQxMTYsIDEyMzkxLCA2NjE5MywgMTIxMzgzLCA0OTM5LCAxMjM4NCwgMTIwMTg0LCAxMjc3NzgsIDQxNjg2LCAKKyAgICA2MzkwNSwgMTE5NjAxLCA3MDI4NSwgNjczOTgsIDEwMDg4NCwgMTI2NDksIDEyMDAyMiwgMCwgODI0NywgNTA3LCA5MSwgCisgICAgMjA0MiwgMTIwNzc1LCA0MzY0MywgMTIxNDQ1LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCA3MDY4MCwgNzc0LCAxMTk4MjksIAorICAgIDc3ODQwLCAxMTk4MTUsIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIDk4MzEwNSwgNzgzNzcsIAorICAgIDkxNzgyMywgOTE3NjI4LCA3NzE5LCA2MDI2LCAyNDg2LCAxMDEwMTksIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgNDEwNzMsIAorICAgIDk2ODcsIDQxNjgxLCA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxMTkwODksIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgNDIzNzksIAorICAgIDAsIDc1MzQsIDEyMjE5LCAyMjI2LCA3MDQ5OSwgNDI4MTAsIDEwNDkyLCAxMjE1MTAsIDEyMTE0OCwgMTIxNTA5LCA0MzExOSwgCisgICAgMCwgNzg1MzcsIDEyNDAzLCAyNTAwLCA3MDE0NSwgODMyNDYsIDQ4OTksIDEyNzI5LCA5ODMzOTksIDE5NDYxOSwgNzQxMTMsIAogICAgIDIzNDMsIDQxMDMsIDE5OTQ2LCA3NDExMiwgNzc4NTEsIDEzMTEyLCAxMjkwNDYsIDc0ODM0LCAxMjg1OSwgNzAwODcsIAogICAgIDEyMDE0OCwgNjYzNjksIDU4NjEsIDEyNzc1OCwgMTE5OTksIDEyNDAwLCA0MzY0MSwgMTI4MTgzLCAxMjY0NSwgNTE0NiwgCiAgICAgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMTk0Nzg2LCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgMTIwNjQ1LCAKLSAgICA1MTQ3LCAxMjUwMTksIDAsIDc0NTI0LCAxMjgzNTYsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgCi0gICAgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgNzg2NjIsIDEyOTAyOSwgMTI4Mjk4LCA2NzI3NywgCi0gICAgMTAxMzgsIDY3MjM4LCAxMjg3ODUsIDg4OTcsIDEyMDIzNCwgMTQyMiwgODM1NywgNDEyNCwgNzc4NjIsIDY1ODM2LCAKLSAgICAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDAsIDEyMDkzMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIAotICAgIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDEyOTEyNiwgNDQwMiwgOTk3MCwgMTI0MDIsIAotICAgIDkzMDYyLCA0MjM5MiwgMTMwNSwgMTI0MDgsIDkyMzg0LCA0NDAwNywgMTI4NTYzLCAxMjcyMTYsIDQxNDY0LCAxMjQxMSwgCi0gICAgMTI5NjksIDY3MjY4LCA0MTQ2NSwgMTIxMDkyLCA4NTI4LCAxNTc1LCAwLCA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgCi0gICAgMTE5MTYzLCA3MDExOSwgOTA5MywgMTI4NTM1LCA2ODMzLCA5MjU3NCwgNjM5NTgsIDAsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCAKLSAgICA4Mjk2LCA2NzUwLCA2Njg1NSwgMTI4NDEwLCA5NTk0LCAxMjAzMDgsIDEyMDkzOCwgNDM1MjcsIDEyMTE5MiwgNzI3LCAKLSAgICA3NDE5MiwgOTMwNjAsIDU4MDUsIDAsIDY3MjYsIDAsIDQyMTc2LCAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIAotICAgIDk4MzIzNCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCA3MTIwOSwgOTIzNDMsIDk4Mzg3MiwgMTIzNjYsIDEwOTYzLCA2MDY2LCAKLSAgICAxMzI5LCAwLCAzMDUyLCA5MjIwLCAxMjEwNDUsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCA0MTMyLCAxMjAzMDYsIDY4NDc0LCAKLSAgICA5MjQ3MywgOTgzMjQ3LCAxMjA3MTIsIDc0ODM3LCAxMjAxNTUsIDE0OTksIDAsIDgwNTUsIDQyNzQwLCA2Mzk2NSwgCi0gICAgMTIwMzA1LCA2Mzk2MiwgNzQwNDIsIDg5MjQsIDQzMTIzLCA1OTg4LCAzNjYwLCA2Mzk2OSwgMTE3ODEsIDQyNzE4LCA4Nzg4LCAKLSAgICAxMzU3LCA2NDg1MSwgNjU3NDMsIDkyODk0LCA4Nzc0LCA3MDMzNywgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDkyNzQ4LCAKLSAgICAxOTMzLCA2OTY1NSwgOTU2NCwgMTIwMDE2LCA5MjQzNSwgNzM4NjYsIDAsIDEyMTI0MSwgMjQ4NywgNjc2MTQsIDMxMjEsIAotICAgIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgOTI3NjksIDEyMDAyMCwgMTk0NTk0LCAKLSAgICA2ODIwMCwgNjY3NSwgMTI4MTQ0LCAwLCA2NzU5MiwgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgMCwgNjQ2MTksIAotICAgIDUxMCwgNjQ2NjMsIDAsIDEyMTUwMCwgNDU2MSwgMjEwMSwgMTM5OCwgOTE3OTcyLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCAKLSAgICA5MjY4NCwgMTE0MDYsIDgxNjcsIDEyMTI3LCAxMjA1MDUsIDg0MCwgOTgzMjgzLCA2OTk5MiwgNzEwMSwgNjk2NywgMCwgCi0gICAgMTk0ODk4LCA5Nzk2LCAxMjcwMDAsIDMzMywgNjk4OTEsIDAsIDgxNDQsIDIxMTcsIDAsIDEyMTE1NSwgMTI0MDYsIAotICAgIDkxNzk3MCwgMTk5MzEsIDY2Mzg4LCA2Njc4LCA3NzY5LCA5ODMxMjQsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCA0NzY0LCAKLSAgICA0MzEwMSwgOTk4MSwgMCwgNDA5ODYsIDQxMjcsIDY2NDg3LCA5ODM1NzYsIDQyMjAyLCAxMjc1NCwgMTk1MDIxLCA5ODMxOTEsIAotICAgIDAsIDk0MDk3LCA2NzU5NCwgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTExODQsIAotICAgIDQ1MzMsIDEyNzIxMiwgNzQwMDMsIDY0OTAsIDAsIDEyMDM4LCAwLCAwLCA2ODIyNSwgNjU0NjEsIDk3OTgsIDY5NzA0LCAKLSAgICAxMjg5MTIsIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMTI1MTA3LCA5ODMzNTQsIDcwMjk2LCA2NDQ5LCA5NDk0LCAKLSAgICAxMjAzMTMsIDAsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDk4MzM0MSwgMCwgMzQzNiwgCi0gICAgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDQyNjE1LCA2NjQwNywgNjk5OTEsIDY3NTk4LCAwLCAwLCAwLCAKLSAgICA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAxOTQ5OTMsIDEyMTQ1OCwgMTI3ODU5LCA4NTAwLCA0MjIyMiwgMTIwMTQyLCAKLSAgICA3Mzc0MywgMTIwNDAwLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAwLCAxMjc4MzMsIDY3NjA2LCAxMTkwODMsIAotICAgIDEyMTA4MywgNDIyMTcsIDEzMTAyLCAwLCA2NjAwMywgNjY3MiwgMCwgMCwgNjY4ODAsIDc3OTEyLCA2Mzg0MSwgOTYxMywgCi0gICAgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgMTAyMjgsIDY0OTU3LCAKLSAgICAxMTI4MSwgMCwgMzgwNywgMTQ2OSwgNjY2NDAsIDY1MzgxLCA0MjE5NywgNDk4OCwgNDIzNzIsIDAsIDk1OTgsIDkwNCwgCi0gICAgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgODQ1MywgNDEzNCwgODM0ODUsIDY3MjIzLCA2NjU3NiwgMTI3OTE2LCAxMjc4MzEsIAotICAgIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjcyODksIDEyODQ2LCAxMjcyOTEsIDY4MDQwLCAxMTkxOSwgNjQ5NjIsIAotICAgIDEyNzA4MSwgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIAotICAgIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgCi0gICAgNzAzMzQsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCA5ODIxLCA2NDMwNCwgMTI3MzY5LCA1MTUyLCAxMTA0OCwgCi0gICAgNzUzMywgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMCwgNDMyMywgNzAyNzYsIDkyNjY5LCA3MTMzMiwgMTIwMTU4LCA0MjU4NywgCi0gICAgNDIyMTQsIDQxMzk0LCAxMTE4OCwgNDc2MywgNDExMiwgMTE4OTM1LCAwLCA1MjYwLCA0MzE0MywgOTQwMzgsIDMyNiwgCi0gICAgMTIwMTMxLCA2ODQyMywgMTE5MjE4LCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAxMjg0NjAsIDQxMzk4LCA3MzgyLCAKLSAgICA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCA0MTM5NiwgMTIwNTI0LCAxMzE1OSwgMTIxNDAsIDk1NzIsIDk4MzEzMiwgCi0gICAgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgMTI1MDY5LCAxMjUwMjAsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgCi0gICAgOTk3NywgMCwgMTIxMjgzLCA2NTc1OSwgMTA3NjUsIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIAotICAgIDk1MjEsIDk1ODksIDY0NzU1LCAwLCA2NDAyMCwgMTI2NjA0LCAxMDQ2NCwgMCwgOTI5NjgsIDE5NDYxMCwgNjQ1MTQsIAotICAgIDExNTI4LCA2NDAyNCwgMTI4MDcyLCA2NzksIDY0MDEzLCA5ODM1NTUsIDU4NTAsIDc1OCwgNzUzNiwgMTIwNTM4LCA5MjIzNCwgCi0gICAgNDE0NDEsIDEwNjkzLCA2NDAwNiwgNzUwNDQsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDEyODE3NiwgCi0gICAgMTE5MDUwLCAwLCA5ODMwNjksIDExMzksIDQzMjk4LCA2NDAyNywgNjQwMjksIDg5NzAsIDAsIDk5MzQsIDEyODY4NSwgCi0gICAgMTA3NzQsIDY3MTA0LCA0MjIwMSwgMTI0MjEsIDEyODIxNiwgMTI3MDA2LCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIAotICAgIDY0MDM0LCA2NDAzOSwgNjgwNjUsIDAsIDk4MzY5MCwgOTI5MTMsIDkyMzIyLCA3NjQ1LCAxMjg1NCwgNzQzMzgsIDM0OTYsIAotICAgIDAsIDEyMTMyMywgMTEzNzEwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgCi0gICAgMTMzMDksIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgMTAxOCwgMTE4OTcwLCAxMjkwNzUsIDE5NDg5NywgCi0gICAgMTY4MiwgNDM4NjMsIDE5NDg5NiwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgNjc3MTcsIDc0MzU4LCA3MzgxNCwgMTE0MTIsIAotICAgIDY3NjgsIDEwNzI4LCAxMTk5ODIsIDcxMzE2LCA3MTA5OSwgNDMzMTEsIDY0OTY2LCAxMTU3NywgMTI3ODMyLCA0MzA0MCwgCi0gICAgMTgzMywgMTE1NzYsIDcwMDU0LCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxMTkzMzQsIDc1MzUsIAotICAgIDgwODUsIDQyNTI1LCAxMTk5NDQsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAxMjA0ODksIDEyMDk5NywgCi0gICAgNjQ0ODMsIDY1NjkzLCA5ODM3MTEsIDk4MzQ5NSwgMTI4NjE1LCA2OTY5NSwgNDIyNDAsIDEyODU4NywgMTIxMzUyLCAKLSAgICA0Mjg2NCwgMTI2NDk4LCA0MzE2OCwgNDE4NjgsIDExODQsIDAsIDgxNSwgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY1MSwgCi0gICAgMCwgNjYxOTcsIDk4MzQ3NCwgMTA5ODYsIDY0NjgzLCAxMjg1NDksIDEyODQ1NCwgMzQ1NSwgMTI2NTMwLCAwLCA5ODc5LCAwLCAKLSAgICAwLCA0MTU4LCA3MDMwNywgNjgxNjYsIDAsIDEyODA5MSwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCA4MzM2OCwgNTE0MiwgCi0gICAgMjQwNywgNjk2NDMsIDQyMTk5LCAwLCA5MjQwNCwgNzQzNzMsIDgzMzcyLCA1NTIxNywgNzE0NTcsIDYzODcwLCA0MzE2MywgCi0gICAgMCwgMCwgMTI5ODUsIDQyODY3LCAxODM0LCAxMjAzODcsIDkyNDYxLCA2OTgxNywgMTA5NDAsIDY1MjQ5LCA3MDM4NSwgCi0gICAgODY2MiwgMTIwMzI0LCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIDEwNzg0LCAxOTUwOTMsIDY3Njc0LCAwLCA4MzM1OSwgCi0gICAgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIDkxNzUwNSwgMTgyOCwgNzQ0NzQsIDEyMDAxOSwgNjgwNzgsIDg1MzEsIDEyNDk5LCAKLSAgICA2MjgwLCAxMjMyNCwgNzI0MzQsIDY1MjM4LCA2ODM3NCwgNDgzMiwgNjU1NzMsIDQzODUxLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIAotICAgIDEyNTAyLCA5MTYxLCAxMjg1NTUsIDE2MjAsIDExMjQ3LCAzNjAxLCAxMjEzMDEsIDgzMzUzLCA2NzI0NiwgNjA5LCAxMTU1NSwgCi0gICAgODM0NTYsIDEyNDk2LCAxMTk4MCwgNzQxODEsIDQzNDMsIDEyNTA1LCA4Mjk2MCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAKLSAgICAxMjgxMTQsIDYzNywgMCwgMTI4Njc4LCA0MjY3MSwgMCwgOTMwMzIsIDgzMDk1LCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgCi0gICAgMTI2OTYsIDEyODI1NiwgOTE3NjAwLCA5NDA2MiwgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgOTgzMjA2LCA0MjgxOCwgCi0gICAgMTI2NjMyLCA3MDMwNiwgMTIwNDkwLCA3MDMzMywgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMTE5OTEzLCA5MjQ5MSwgNjgwNzYsIAotICAgIDEyNjUxLCAxMjA5MTcsIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCAxOTQ2MzMsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAKLSAgICAxMTg4NDQsIDE5NDgyMywgMTI3MDg4LCAzNTUsIDk3MTksIDEyNzA4NywgMTMwNjYsIDY0Nzk2LCAxMjEwNzcsIDk4MzI5NywgCi0gICAgMTIwMzMsIDQyMTc4LCAxOTQ3NTQsIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDExNDMwLCAwLCA3MDI5OSwgMTIxNTA4LCAKLSAgICAxMjQ5NTEsIDY4MzI0LCAzMTc4LCAxMjY0ODgsIDEyODYzMywgOTI3MDQsIDkxNzU2NiwgOTA4MCwgMTIwOTQzLCA2NzY5NywgCi0gICAgMTk1MTAxLCA2ODIwOSwgNzI0MTgsIDExMDgyLCA3MTQ4NSwgNTY5OSwgODMzNzMsIDY2MDAwLCA5NDg4LCA2NTE2NiwgCi0gICAgMTE5MTEyLCA3MDQ3NywgMTExNzAsIDY4NjYyLCAxMjgxMjAsIDcxMzEzLCAwLCA1MjY1LCA2OTIzNSwgODMzODQsIDExNDg3LCAKLSAgICA2Nzg1OCwgMTI0NjQsIDk4MzM2NSwgNDMwNDUsIDk4MzgzMSwgNzAzNDUsIDQzMzQ1LCA5ODMyNzYsIDEwNzcwLCAxMTg5OTQsIAotICAgIDY4MDcsIDQ2NSwgOTgyOSwgNjk5OTcsIDc0MzQ4LCAwLCA0MzM0NiwgODExNiwgNzk1LCAxMjAzNTIsIDcyNDEyLCAxMjQ2MiwgCi0gICAgMTA5MzAsIDEwODMxLCAxMjEzMjAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCA5MzA1NiwgODMwNDcsIDk4MzkzMywgMTI0NjgsIAotICAgIDg2MDcsIDEwMDgsIDExODk0OCwgMTAwOTIsIDEyNTEyMiwgMTI4ODUxLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAKLSAgICAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDExMjAyLCAxMjAyNDMsIDEyODM0NSwgMTMyMjMsIDc0OTM0LCA2NDU5NSwgCisgICAgNTE0NywgMTI1MDE5LCA5MTc2MjQsIDc0NTI0LCAxMjgzNTYsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgCisgICAgNDk3NiwgNjQxNzYsIDc0OTY2LCA2NzYxMCwgODI0MSwgOTgzOTAwLCA3Nzg2OCwgNDIwNiwgMTI3MzUyLCA3ODY2MiwgCisgICAgMTI5MDI5LCAxMjgyOTgsIDY3Mjc3LCAxMDEzOCwgNjcyMzgsIDEyODc4NSwgODg5NywgMTIwMjM0LCAxNDIyLCA4MzU3LCAKKyAgICA0MTI0LCA3Nzg2MiwgNjU4MzYsIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMTAwOTEyLCAxMjA5MzAsIDExMjMsIDk2MywgCisgICAgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCA3OTQ1LCAKKyAgICAxMjkxMjYsIDQ0MDIsIDk5NzAsIDEyNDAyLCA5MzA2MiwgNDIzOTIsIDEzMDUsIDEyNDA4LCA5MjM4NCwgNDQwMDcsIAorICAgIDEyODQ2NSwgMTI3MjE2LCA0MTQ2NCwgMTI0MTEsIDEyOTY5LCA2NzI2OCwgNDE0NjUsIDEyMTA5MiwgODUyOCwgMTU3NSwgMCwgCisgICAgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIDExOTE2MywgNzAxMTksIDkwOTMsIDEwMDYyMCwgNjgzMywgOTI1NzQsIDYzOTU4LCAKKyAgICAxMjA5MzEsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCA4Mjk2LCA2NzUwLCA2Njg1NSwgMTI4NDEwLCA5NTk0LCAxMjAzMDgsIAorICAgIDEyMDkzOCwgNDM1MjcsIDEwMDYxMSwgNzI3LCA3NDE5MiwgOTMwNjAsIDU4MDUsIDAsIDY3MjYsIDEyNzM4NywgNDIxNzYsIAorICAgIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMjI4MCwgOTgzMjM0LCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDcxMjA5LCAKKyAgICA5MjM0MywgOTgzODcyLCAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDEyMTA0NSwgNjQ0NzgsIAorICAgIDE5NDcwMSwgMTA4MDMsIDQxMzIsIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAxMDA4NzYsIDExODkyMywgNzQ4MzcsIDEyMDE1NSwgCisgICAgMTQ5OSwgMTIxMjk5LCA4MDU1LCA0Mjc0MCwgNjM5NjUsIDc0MzM4LCA2Mzk2MiwgNzQwNDIsIDg5MjQsIDQzMTIzLCA1OTg4LCAKKyAgICAzNjYwLCA2Mzk2OSwgMTE3ODEsIDQyNzE4LCA4Nzg4LCAxMzU3LCA2NDg1MSwgNjU3NDMsIDkyODk0LCA4Nzc0LCA3MDMzNywgCisgICAgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDkyNzQ4LCAxOTMzLCA2OTY1NSwgOTU2NCwgMTIwMDE2LCA5MjQzNSwgNzM4NjYsIAorICAgIDk4MzkzMiwgMTIxMjQxLCAyNDg3LCA2NzYxNCwgMzEyMSwgMTgwNCwgMzMxMSwgNjc2MTUsIDcwMDgxLCA3ODMwMiwgCisgICAgMTIyMjAsIDY3NjE2LCA5Mjc2OSwgMTIwMDIwLCAxOTQ1OTQsIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDk4MzI4MiwgNjc1OTIsIAorICAgIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDk4MzcwOSwgNjQ2MTksIDUxMCwgNjQ2NjMsIDk0MDMzLCAxMjE1MDAsIAorICAgIDQ1NjEsIDIxMDEsIDEzOTgsIDE5NTA1MSwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgCisgICAgMTIwNTA1LCA4NDAsIDk4MzI4MywgNjk5OTIsIDcxMDEsIDY5NjcsIDAsIDE5NDg5OCwgOTc5NiwgMTI3MDAwLCAzMzMsIAorICAgIDY5ODkxLCAxMjcxNDUsIDgxNDQsIDIxMTcsIDAsIDcwNzEyLCAxMjQwNiwgOTE3OTcwLCAxOTkzMSwgNjYzODgsIDY2NzgsIAorICAgIDc3NjksIDk4MzEyNCwgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIDQzMTAxLCA5OTgxLCA3NDE1NywgNDA5ODYsIAorICAgIDQxMjcsIDY2NDg3LCA5ODM1NzYsIDQyMjAyLCAxMjc1NCwgMTk1MDIxLCA5ODMxOTEsIDEwMDYyOCwgOTQwOTcsIDY3NTk0LCAKKyAgICAyMDQ4LCAxMjk0NCwgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMTE4NCwgNDUzMywgMTI3MjEyLCAKKyAgICA3NDAwMywgNjQ5MCwgOTgzODU3LCAxMjAzOCwgMCwgMCwgNjgyMjUsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgMTI4OTEyLCAKKyAgICAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDEyNTEwNywgOTgzMzU0LCA3MDI5NiwgNjQ0OSwgOTQ5NCwgMTIwMzEzLCAKKyAgICA3MDczOCwgNDMwOTgsIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCA2NDE3MCwgMTI4ODcxLCA5MTc2MjEsIDM0MzYsIAorICAgIDY2NzgwLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDQyNjE1LCA2NjQwNywgNjk5OTEsIDY3NTk4LCA5ODMzMzYsIAorICAgIDAsIDAsIDY1NTkxLCA0MTU4MSwgNjU5MTYsIDE0NTMsIDEyMTE4OSwgMTIxNDU4LCAxMjc4NTksIDg1MDAsIDQyMjIyLCAKKyAgICAxMDEwNDcsIDczNzQzLCAxMjAxNDMsIDQzMTcsIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDEwMDY5NywgMTI3ODMzLCA2NzYwNiwgCisgICAgMTE5MDgzLCAxMjEwODMsIDQyMjE3LCAxMzEwMiwgMTI4NzM2LCA2NjAwMywgNjY3MiwgMCwgMCwgNjY4ODAsIDc3OTEyLCAKKyAgICA2Mzg0MSwgOTYxMywgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgCisgICAgMTAyMjgsIDY0OTU3LCAxMTI4MSwgMTI4MzEyLCAzODA3LCAxNDY5LCA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCAKKyAgICA0MjM3MiwgNzI3ODYsIDk1OTgsIDkwNCwgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgODQ1MywgNDEzNCwgODM0ODUsIAorICAgIDY3MjIzLCA2NjU3NiwgMTI3OTE2LCAxMjc1NjgsIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjUyMzUsIDEyODQ2LCAKKyAgICAxMjcyOTEsIDY4MDQwLCAxMTkxOSwgNjQ5NjIsIDEwMDY5NSwgNDM3MzksIDEwMTA0MSwgODUxMSwgOTQ2MCwgODIzLCAKKyAgICAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIAorICAgIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgNzAzMzQsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCAKKyAgICA5ODIxLCA2NDMwNCwgMTI3MzY5LCA1MTUyLCAxMTA0OCwgNzUzMywgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMTI3ODUyLCAKKyAgICA0MzIzLCA3MDI3NiwgOTI2NjksIDcxMzMyLCAxMjAxNTgsIDQyNTg3LCA0MjIxNCwgNDEzOTQsIDExMTg4LCA0NzYzLCAKKyAgICA0MTEyLCAxMTg5MzUsIDAsIDUyNjAsIDQzMTQzLCA5NDAzOCwgMzI2LCAxMjAxMzEsIDY4NDIzLCAxMTkyMTgsIDEwNzcxLCAKKyAgICAyODc2LCA3NDA3NCwgOTI1MzAsIDEyODQ2MCwgNDEzOTgsIDczODIsIDk4MDIsIDEyNzA3NywgMTI3MDc2LCA0NTMsIAorICAgIDQxMzk2LCAxMjA1MjQsIDEzMTU5LCAxMjE0MCwgOTU3MiwgMTI5MDg1LCA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAKKyAgICAxMjUwNjksIDEyNTAyMCwgNDMxNDQsIDQxMjMsIDg0OTQsIDQzMTQ2LCA5OTc3LCAwLCAxMjEyODMsIDY1NzU5LCAxMDc2NSwgCisgICAgNjQwNjEsIDQ0NjUsIDk4MDgsIDY0MDU2LCA2NTU4MiwgNDEyNiwgMCwgOTUyMSwgOTU4OSwgNjQ3NTUsIDEyNTIwMCwgCisgICAgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDE5NDk4MCwgOTI5NjgsIDcyODQ3LCA2NDUxNCwgMTE1MjgsIDY0MDI0LCAxMjgwNzIsIAorICAgIDY3OSwgNjQwMTMsIDEyOTMxNCwgNTg1MCwgNzU4LCA3NTM2LCAxMjA1MzgsIDkyMjM0LCA0MTQ0MSwgMTA2OTMsIDY0MDA2LCAKKyAgICA3NTA0NCwgNjQwMDUsIDQwNTgsIDExOTAxOSwgMTI2NDg3LCA2NDY2MCwgMTI4MTc2LCAxMTkwNTAsIDAsIDE5NTAyMywgCisgICAgMTEzOSwgNDMyOTgsIDY0MDI3LCA2NDAyOSwgODk3MCwgMCwgOTkzNCwgMTI4Njg1LCAxMDc3NCwgNjcxMDQsIDQyMjAxLCAKKyAgICAxMjQyMSwgMTE5MTA5LCAxMjUyNzAsIDE4NTIsIDMwNTcsIDY0MDQ2LCA3Mzc0NCwgNjQwMzQsIDY0MDM5LCA2ODA2NSwgCisgICAgMTI3MDc1LCA5ODM2OTAsIDcyNzczLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDcyNzcyLCAzNDk2LCAwLCAxMjEzMjMsIAorICAgIDExMzcxMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIDEzMzA5LCAxMTU3MCwgCisgICAgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDkyOTEzLCAxMDE4LCAxMTg5NzAsIDEyOTA3NSwgMTk0ODk3LCAxNjgyLCA0Mzg2MywgCisgICAgMTk0ODk2LCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCA2NzcxNywgNzQzNTgsIDczODE0LCAxMTQxMiwgNjc2OCwgMTA3MjgsIAorICAgIDExOTk4MiwgNzEzMTYsIDcxMDk5LCA0MzMxMSwgNjQ5NjYsIDExNTc3LCAxMjc4MzIsIDQzMDQwLCAxODMzLCAxMTU3NiwgCisgICAgNzAwNTQsIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIDExOTMzNCwgNzUzNSwgODA4NSwgNDI1MjUsIAorICAgIDExOTk0NCwgOTc0OSwgNDE3MDEsIDYxMzEsIDE5NDksIDQxMTcsIDc4NDcsIDEyMDQ4OSwgMTIwOTk3LCA2NDQ4MywgCisgICAgNjU2OTMsIDk4MzcxMSwgMTI3MTIwLCA3NDI4OCwgNjk2OTUsIDQyMjQwLCAxMjg1ODcsIDEyMTM1MiwgNDI4NjQsIAorICAgIDEwMTAzNywgNDMxNjgsIDQxODY4LCAxMTg0LCAxMjEyODUsIDgxNSwgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY1MSwgCisgICAgMTI5MzQwLCA2NjE5NywgOTgzNDc0LCAxMDk4NiwgNjQ2ODMsIDEyODU0OSwgMTI4NDU0LCAzNDU1LCAxMjY1MzAsIAorICAgIDExOTY2NCwgOTg3OSwgMCwgOTgzMjE1LCA0MTU4LCA3MDMwNywgNjgxNjYsIDAsIDEyODA5MSwgMTk0OTgyLCAwLCA2Njc5OSwgCisgICAgMzMyLCAxMTg4MDgsIDgzMzY4LCA1MTQyLCAyNDA3LCA2OTY0MywgNDIxOTksIDkyMzg2LCA5MjQwNCwgNzQzNzMsIDgzMzcyLCAKKyAgICA1NTIxNywgNzE0NTcsIDYzODcwLCA0MzE2MywgMCwgOTE3NzYzLCAxMjk4NSwgNDI4NjcsIDE4MzQsIDEyMDM4NywgOTI0NjEsIAorICAgIDY5ODE3LCAxMDk0MCwgNjUyNDksIDcwMzg1LCA4NjYyLCAxMjAzMjQsIDAsIDI2NTIsIDEyMDUyNywgNzE2NCwgMTA3ODQsIAorICAgIDE5NTA5MywgNjc2NzQsIDkxNzk0MiwgODMzNTksIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCA5MTc1MDUsIDE4MjgsIDc0NDc0LCAKKyAgICAxMjAwMTksIDY4MDc4LCA4NTMxLCAxMjQ5OSwgNjI4MCwgMTIzMjQsIDcyNDM0LCA2NTIzOCwgNjgzNzQsIDQ4MzIsIAorICAgIDY1NTczLCA0Mzg1MSwgNjI3OSwgMTI1MDgsIDEyOTA0LCAxMjUwMiwgOTE2MSwgMTI4NTU1LCAxNjIwLCAxMTI0NywgMzYwMSwgCisgICAgMTIxMzAxLCA4MzM1MywgNjcyNDYsIDYwOSwgMTE1NTUsIDgzNDU2LCAxMjQ5NiwgMTE5ODAsIDc0MTgxLCA0MzQzLCAKKyAgICAxMjUwNSwgODI5NjAsIDEyNzg2MywgMTI1MjU4LCAxMTM3NywgMjM5LCAxMjgxMTQsIDYzNywgMCwgMTI4Njc4LCA0MjY3MSwgCisgICAgMCwgOTMwMzIsIDgzMDk1LCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgNzI5OCwgMTI4MjU2LCA5MTc2MDAsIDk0MDYyLCAKKyAgICAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCA5ODMyMDYsIDQyODE4LCAxMjY2MzIsIDcwMzA2LCAxMjA0OTAsIDcwMzMzLCAKKyAgICAxMTkxMzcsIDE1MDYsIDQzNTYyLCAxMTk5MTMsIDkyNDkxLCA2ODA3NiwgMTI2NTEsIDEyMDkxNywgNjQ2MjgsIDc0NTE3LCAKKyAgICAxMjA1OCwgNzQwODQsIDE5NDYzMywgNzQ5NCwgMTI4NzgwLCA0OTI0LCA2NTU5MiwgMTE4ODQ0LCAxOTQ4MjMsIDEyNzA4OCwgCisgICAgMzU1LCA5NzE5LCA2Njc2MiwgMTMwNjYsIDY0Nzk2LCA3ODY2MywgOTgzMjk3LCAxMjAzMywgNDIxNzgsIDE5NDc1NCwgCisgICAgNjk3NjAsIDQyNTcxLCA5MjYzNSwgMTE0MzAsIDAsIDcwMjk5LCAxMjE1MDgsIDEyNDk1MSwgNjgzMjQsIDMxNzgsIAorICAgIDEyNjQ4OCwgMTI4NjMzLCA5MjcwNCwgOTE3NTY2LCA5MDgwLCAxMjA5NDMsIDY3Njk3LCAxOTUxMDEsIDY4MjA5LCA3MjQxOCwgCisgICAgMTEwODIsIDcxNDg1LCA1Njk5LCA4MzM3MywgNjYwMDAsIDk0ODgsIDY1MTY2LCAxMTkxMTIsIDcwNDc3LCAxMTE3MCwgCisgICAgNjg2NjIsIDEwMDUwNSwgNzEzMTMsIDAsIDUyNjUsIDY5MjM1LCA4MzM4NCwgMTE0ODcsIDY3ODU4LCAxMjQ2NCwgOTgzMzY1LCAKKyAgICA0MzA0NSwgOTgzMjAxLCA3MDM0NSwgNDMzNDUsIDEyMDY1NywgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCAKKyAgICA2OTk5NywgNzQzNDgsIDEyMTQwMywgNDMzNDYsIDgxMTYsIDc5NSwgMTIwMzUyLCA3MjQxMiwgMTI0NjIsIDEwOTMwLCAKKyAgICAxMDgzMSwgMTIxMzIwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgOTMwNTYsIDEwMTEyLCA5ODM5MzMsIDEyNDY4LCA4NjA3LCAKKyAgICAxMDA4LCAxMTg5NDgsIDEwMDkyLCAxMjA1MzksIDEyODg1MSwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgMTc2NiwgMTEyODIsIAorICAgIDExOTk2LCAxODIwLCA0NTQ3LCAxMDA3MDksIDExMjAyLCAxMjAyNDMsIDEyODM0NSwgMTMyMjMsIDc0OTM0LCA2NDU5NSwgCiAgICAgMTI3Mjk0LCA4MzM3NCwgNjg0ODksIDQzNDUsIDEyNjE2LCA5MTc3ODQsIDEyODk0NywgOTgzMTU1LCA3NDQ2NywgMCwgCi0gICAgOTgzODE5LCAxMjgyOTEsIDUzODIsIDEyNzc3OSwgMCwgNjcyMzMsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCAKLSAgICA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDgzNSwgMTEzMCwgOTE3NzY2LCAxMjA5NzcsIDQyMDE2LCAxMTgyMywgNDMwMjMsIAotICAgIDEyMTAwMiwgMTE4ODk2LCA3NzQyLCAxMjczNzQsIDEzMjgwLCA3MTMyMywgOTMyNiwgNzM4MjYsIDUzMTAsIDQzNTA5LCAKLSAgICA3ODU4NCwgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgNjQ3NTcsIDg1NjgsIDE5NDY4NCwgMTIwNDk2LCAKLSAgICA3MzgxNiwgODMwNjAsIDEyODQxOCwgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMTMyNiwgMTIwNjMxLCA4MzM5MywgNDMwNjMsIAorICAgIDczOTU1LCAxMjgyOTEsIDUzODIsIDEyMTM5MCwgMCwgNjcyMzMsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCA2OTg5NywgCisgICAgNjY1MTAsIDM1OTAsIDE5NDgzNSwgMTEzMCwgMTI4Njg5LCAxMjA5NzcsIDQyMDE2LCAxMTgyMywgNDMwMjMsIDEyMTAwMiwgCisgICAgMTE4ODk2LCA3NzQyLCAxMjczNzQsIDEzMjgwLCA3MTMyMywgOTMyNiwgNzM4MjYsIDUzMTAsIDQzNTA5LCA3ODU4NCwgCisgICAgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgNjQ3NTcsIDg1NjgsIDE5NDY4NCwgMTIwNDk2LCA3MzgxNiwgCisgICAgODMwNjAsIDEyODQxOCwgNDI2NzAsIDEyNzUzOSwgMTE2MjEsIDEyNDYwLCAxMzI2LCAxMjA2MzEsIDgzMzkzLCA0MzA2MywgCiAgICAgNDMyMzksIDY1Njc4LCAxOTQ4NDAsIDczOTE3LCA3ODQzLCA2OTc4MywgMTE2ODksIDU0MTAsIDU3ODMsIDEwNDY4LCA4NDAzLCAKICAgICA1NDAwLCAxMTU5NCwgMTIwNDA1LCA2ODMzMywgODMzOTAsIDEwNDkxLCA2OTg0MiwgNjQ0MTIsIDAsIDEyODAxMiwgNTU4NywgCiAgICAgNDI4NjUsIDY0NDA0LCA4MjY4LCA0OTIzLCA2NTA4NiwgODk4MSwgMTIzODIsIDQyMTMzLCAxMjA3NTUsIDk3MDYsIDY5NzM4LCAKLSAgICA3MDI5NCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgODMzODgsIDQyNzY2LCA4MzM4NywgMjIxMCwgOTk4MywgCi0gICAgMTI4Njg5LCA5NDAwOSwgMCwgMCwgMCwgNzM5OCwgNDE1MTUsIDAsIDExODAyLCA4MDQxLCAxNDYxLCA5MTAsIDExOTEzMywgCi0gICAgMCwgNjc0OSwgMzY1OCwgOTM5NjQsIDEyMDUyNSwgMCwgNzYxNywgMTk0ODQxLCAxMjg4OCwgMTI3OTgzLCA2NzY2OCwgCi0gICAgMTMxNDMsIDAsIDkxOTMsIDExMDk3LCA1NzAzLCAxMjgyNDcsIDQxNTE3LCA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgCi0gICAgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCA2MTMsIDc1NDMsIDEyMDI3OSwgNDc3LCA0MTA4MywgCi0gICAgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIDQzNDQ5LCAwLCAwLCA4MjI1LCAxMjExOTEsIDY1NCwgMTEzNDUsIDY1MywgCi0gICAgNjUyLCAwLCA2NDcsIDgzMjY2LCA2MzMsIDEyMDc0NCwgOTgzODA5LCAxMjY0NzIsIDEyNDgwLCA0MzI0MywgMTk0OTA5LCAKLSAgICAzOSwgMTI0ODcsIDEyMTI0NywgMTIwNTI5LCA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAxMTk2MDcsIDMxOTUsIDU1NTAsIAotICAgIDEyOTEyMSwgNzg5NywgMTI3MDg5LCAxMjAzLCA3NDM5NiwgMTgxMywgNjQ1NDQsIDQxMzExLCAxMjA5MCwgOTgzNjM0LCAKLSAgICAyODc3LCAxMjE1MTgsIDcwNDk2LCAxNjc1LCA2OTg0MCwgMCwgMCwgMTE5MDc4LCAxMDA3MCwgMTA1OTUsIDAsIDExOTA3NywgCi0gICAgMTk0Nzc3LCAxMjExNjIsIDY3MTcwLCAxMjA3OTAsIDExODc4NywgNDMyNDQsIDkyMjMzLCA5MTc4MzUsIDk4MzkxNiwgCi0gICAgMTE5NTYxLCA5ODMwNzgsIDE5NDkxNCwgMTk0OTIxLCAxMjgxNjAsIDk5MzksIDAsIDk4MzE1MSwgNzc4NjAsIDEyODk0OCwgCi0gICAgODM0NDAsIDI3MCwgMCwgMTA3MTQsIDExODk4MywgNzI0MzcsIDAsIDExOTk0MiwgMTE5MzM4LCA2NTM3MiwgNzM4MDMsIAotICAgIDc0MDM4LCA2ODI1MSwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgNzE0NDAsIDAsIDAsIDcwNywgMTk0ODM5LCAxMjg0MDksIAotICAgIDkyODIsIDExMTYzLCAyMjQsIDEyODU4OCwgNjg2NzAsIDkzMzIsIDQ5NjYsIDY4Njc3LCAxOTQ1ODYsIDY4NjQ0LCAKLSAgICA5ODMxMzEsIDM4NDEsIDY3MzU3LCA2NzM0MSwgMTA3MzIsIDY4NjQwLCA4NTAsIDQ5NzIsIDEyNzE4MSwgMTI4OTAsIDI5MDksIAotICAgIDY4NjE5LCA0NDAwOCwgNjg2MjcsIDEyMDY5OSwgMTE1NDQsIDEwMjAzLCA5NjA4LCAwLCA5MTc5NDMsIDExOTYyLCAKLSAgICAxMjEzOTcsIDEyNTA3LCAxMTk2LCA2NzY4NCwgNjcxMDAsIDc3NywgMTIwMTg3LCA0Mzc1LCA2NTI3MSwgNjc2NzgsIDAsIAotICAgIDEyMTk4LCA5MTc4ODcsIDY0ODI0LCAxMTkzNDMsIDEyNzI0MywgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCA3MDA3MywgCi0gICAgMjcwNSwgMTI4NjgwLCA0MTUyMCwgMTk1MDk4LCAxMjAzNzksIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgNzQ1MjAsIAotICAgIDI3MDEsIDAsIDEyMDI0MCwgNTc2NywgMCwgMTk1MDE4LCA5ODA5LCA4MzUzLCA2Mzc0NywgNjY3MDEsIDYzNzcyLCAKLSAgICAxMjEyMzMsIDYzNzQ1LCAxNzQ4LCA2Mzc3MCwgMTIxNDE5LCAxMjEwNzgsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIDMwNjEsIAotICAgIDc4NjA5LCA2Mzc2NCwgNjM3ODcsIDkwNjcsIDYwOTYsIDAsIDc2OTQsIDAsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgCi0gICAgMTI3NzgxLCAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDAsIDYzODYsIDYzNzgzLCAxMjA5OTAsIDEyNTA0MSwgCi0gICAgOTI1MzUsIDAsIDAsIDY4MjQ5LCA3NDU3NSwgMTI3MDEwLCA2NTcxOSwgMTMwODMsIDY0NTc0LCA2NTAxMiwgMTIxNDUyLCAKKyAgICA3MDI5NCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgNzA3MDEsIDQyNzY2LCA4MzM4NywgMjIxMCwgOTk4MywgCisgICAgMTE5OTYzLCA5NDAwOSwgMTI5Mjk5LCAwLCAxMjg4MTAsIDczOTgsIDQxNTE1LCA5ODM4ODAsIDExODAyLCA4MDQxLCAxNDYxLCAKKyAgICA5MTAsIDExOTEzMywgOTgzMzI3LCA2NzQ5LCAzNjU4LCA5Mzk2NCwgMTIwNTI1LCAxMjczNjMsIDc2MTcsIDE5NDg0MSwgCisgICAgMTI4ODgsIDEwMDUwMSwgNjc2NjgsIDEzMTQzLCAxMjc5NzUsIDkxOTMsIDExMDk3LCA1NzAzLCAxMjgyNDcsIDQxNTE3LCAKKyAgICA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgOTgzNTkzLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIAorICAgIDYxMywgNzU0MywgMTAwNzg3LCA0NzcsIDQxMDgzLCA5MjUyMSwgMTk0NTkzLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgCisgICAgMTI4NjI4LCAwLCA4MjI1LCAxMjExOTEsIDY1NCwgMTEzNDUsIDY1MywgNjUyLCAwLCA2NDcsIDgzMjY2LCA2MzMsIAorICAgIDEyMDc0NCwgNzI3ODgsIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAxOTQ5MDksIDM5LCAxMjQ4NywgMTIxMjQ3LCAxMjA1MjksIAorICAgIDc0MTk5LCAxMjQ4MiwgOTgzNzcwLCAxMjQ4OSwgMTAwOTE3LCAzMTk1LCA1NTUwLCAxMjgxNzIsIDc4OTcsIDEyNzA4OSwgCisgICAgMTIwMywgNzQzOTYsIDE4MTMsIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDk4MzYzNCwgMjg3NywgMTIxNTE4LCA3MDQ5NiwgCisgICAgMTY3NSwgNjk4NDAsIDAsIDAsIDExOTA3OCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIDE5NDc3NywgMTIxMTYyLCAKKyAgICA2NzE3MCwgMTIwNzkwLCAxMTg3ODcsIDQzMjQ0LCA5MjIzMywgOTE3ODM1LCAxMjUxOTMsIDExOTU2MSwgOTgzMDc4LCAKKyAgICAxOTQ5MTQsIDE5NDkyMSwgMTI4MTYwLCA5OTM5LCAxMjE1MTEsIDEyNTE5NSwgNzc4NjAsIDEyODk0OCwgODM0NDAsIDI3MCwgCisgICAgOTgzMzA5LCAxMDcxNCwgMTE4OTgzLCA3MjQzNywgMCwgMTE5OTQyLCAxMTkzMzgsIDY1MzcyLCA3MzgwMywgNzQwMzgsIAorICAgIDY4MjUxLCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCA3MTQ0MCwgMCwgMCwgNzA3LCAxMTk2NDksIDEwMDQwMCwgOTI4MiwgCisgICAgMTExNjMsIDIyNCwgNzI3OTksIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgNzA2NzQsIDY4NjQ0LCAxMjcyMTQsIDM4NDEsIAorICAgIDY3MzU3LCA2NzM0MSwgMTA3MzIsIDY4NjQwLCA4NTAsIDQ5NzIsIDEyNzE4MSwgMTI4OTAsIDI5MDksIDY4NjE5LCA0NDAwOCwgCisgICAgNjg2MjcsIDEwMTAyMywgMTE1NDQsIDEwMjAzLCA5NjA4LCAwLCA5MTc5NDMsIDExOTYyLCAxMjEzOTcsIDEyNTA3LCAxMTk2LCAKKyAgICA2NzY4NCwgNjcxMDAsIDc3NywgMTIwMTg3LCA0Mzc1LCA2NTI3MSwgNjc2NzgsIDEwMTAyNCwgMTIxOTgsIDkxNzg4NywgCisgICAgNjQ4MjQsIDExOTM0MywgMTI2NjA4LCA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDcwMDczLCAyNzA1LCAxMjg2ODAsIAorICAgIDQxNTIwLCAxOTUwOTgsIDEyMDM3OSwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCA3NDUyMCwgMjcwMSwgOTgzMzMzLCAKKyAgICAxMjAyNDAsIDU3NjcsIDAsIDE5NTAxOCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgMTIxMjMzLCA2Mzc0NSwgCisgICAgMTc0OCwgNjM3NzAsIDEyMTQxOSwgMTIxMDc4LCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCA3ODYwOSwgNjM3NjQsIAorICAgIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCA5ODM3NzYsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgMTI3NzgxLCAKKyAgICAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDEyNzE0MCwgNjM4NiwgNjM3ODMsIDEyMDk5MCwgMTI1MDQxLCA5MjUzNSwgCisgICAgMTIyODg0LCAwLCA2ODI0OSwgNzQ1NzUsIDEwMDk5NywgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDEyMTQ1MiwgCiAgICAgMTY0MCwgMTI0OTUsIDY2NjkxLCA3NjI0LCAzMTM4LCAxMDk5NiwgMTExNzEsIDE5MjIsIDEyNzI3NSwgMTI0OTgsIDEwOTg3LCAKLSAgICA2OTkzNiwgNjk5MzksIDM4OTQsIDY1NTQzLCAxMjkxODMsIDE5NDg0MiwgMTI4MTEyLCA0OTMsIDAsIDQzMTk3LCAxNzE3LCAKLSAgICA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgNjQzMTUsIAotICAgIDkyMTcwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDgzNTE5LCA2NDkxMSwgODM1MjEsIAotICAgIDIwOTYsIDY1MTIwLCA4MzUxNiwgNzgyMTksIDgzMjcwLCA4Mzc4LCAxMTYzMiwgNjg4MzgsIDY2MjEzLCA2Mzg2NCwgCi0gICAgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgNjYyMzYsIDY2MjExLCA2NjIxOCwgCi0gICAgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgNjYyMzQsIDExNjA1LCA2Mzc1OSwgCi0gICAgMTI3MzA4LCA2NjIwOCwgNjczMzksIDEzMDAyLCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIDEyNDk0LCA3Mzc2MSwgCi0gICAgMTI0OTIsIDEyNjY5LCA5NDA3MCwgMCwgNzQxNTMsIDEyMDMxMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIDEzMDQwLCAKLSAgICA5ODMzNjIsIDg2MTIsIDQ4ODUsIDc0MDUzLCAxMjc4MzAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAKLSAgICAxMjkwNjYsIDYzNzk3LCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIAotICAgIDc4MDQwLCA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDcwMDI4LCA3ODAzNCwgNDU3OSwgNjkyMzIsIDAsIDEyNTExLCAKLSAgICA3NDQ1MywgMTI1MTQsIDAsIDcxMTMwLCA3MjM5LCA3MDAxLCA4NjIzLCA5NDAxMSwgMTI1MTM3LCAxMjgwNDgsIDczNzgsIAotICAgIDEyNTEyLCAxMTYxNSwgNjEwNCwgMCwgMTIwOTAwLCA2NTksIDYwOTgsIDAsIDEyMjM0LCA4MzUxMSwgNjczNTgsIDgzMTEsIAotICAgIDEyNTEwLCA3NjY5LCAxMzAzOSwgODM1MDksIDEyNTEzLCAxMDIwMiwgMTI0NzEsIDAsIDg3NDcsIDEyMTM4NSwgNzAxOTMsIAotICAgIDEyODM1NCwgMjMyMywgMCwgMjMxOSwgNzc5MTcsIDEyNDc3LCA3NzkxNiwgMjMxMSwgNzY2NiwgNDQxNSwgMjM3LCA2MjgxLCAKLSAgICAxMjcyODAsIDk4MzMxMSwgODMwMjAsIDIzMDksIDEzMTIsIDgxNzMsIDgzMDEzLCAxMjQ2OSwgODMwMTUsIDc4NTA1LCAKLSAgICA2NDMzNSwgMTA2MDksIDgzMDExLCA3ODAwNiwgOTM5NywgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIAotICAgIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDEyNzk5MCwgCi0gICAgNjU0NTEsIDgxODUsIDEyODkzMSwgMTk0ODQzLCA0MzAyNCwgNDMzMzYsIDY3NjU5LCAyMzEzLCAxMjgxNjcsIDc5NDgsIAotICAgIDkyMzYsIDc3OTQyLCAwLCAwLCAxMDU3MCwgNDM0NzMsIDYyODksIDEwNDg0LCA4MzAwNiwgODMwMDcsIDExOTk4LCAxMjA4MiwgCi0gICAgMTA5MjQsIDMxNDcsIDgzMDA0LCA2NjQwNiwgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIDkzODIsIDkzNzksIAotICAgIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc3OCwgOTM3MiwgMTI0NDQsIDc0MjU2LCAwLCAKLSAgICAxMzAxNiwgODIxMCwgMTIxMDYyLCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgCi0gICAgMTIwNjMwLCA0MTU1LCAxMjEwOTAsIDEyMDcwNCwgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTEzODI2LCAKLSAgICAxMjcyMTcsIDk4MzIwMiwgOTkyMiwgNDMzMDksIDExMjExLCAxMjUyNSwgOTgzNDczLCAxMjAxNiwgNjU3NzAsIDk1NDgsIAotICAgIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMTk0Njg5LCAxMjcxOTEsIDExMDMwLCA0MzkxNiwgOTI1NjcsIDY1NjkxLCAKLSAgICA2Mzk5OCwgMTgxOSwgMTA0OTYsIDAsIDAsIDExOTkyMCwgMCwgMTI5MTQzLCAxMjEwNzIsIDEyNTA2LCA5ODM4MzgsIAotICAgIDExMTQ2LCA3MTQ3NywgMTI1MDAsIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgCi0gICAgMTEyMDgsIDEyMDIzNiwgNzgzOTUsIDc4Mzk0LCA3NDA2OSwgNzE0NDYsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMTM3MzIsIAotICAgIDExMDcsIDExMzc0NSwgOTA3NiwgODg2MiwgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgCi0gICAgNzQxNjUsIDc0NzgyLCA0MzQ5OSwgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgMTEzNjY0LCA0OTgsIAotICAgIDY0NDcxLCA3Nzk4NywgOTI5NzQsIDEyNTI5LCA4MDQyLCA0Mzg5OSwgMjM0NCwgMTI1MjgsIDgwMzEsIDI0MTQsIDc0NTA2LCAKLSAgICA2OTcxOSwgMzIzMSwgOTE3ODM2LCA2NDIyLCA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIAotICAgIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIDc4NzM4LCA0MTQzMywgNDcxOSwgNDY5LCA5MTc4MTAsIDQzNjMsIDMzMTMsIAotICAgIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgNzgyMjQsIDc4MjI1LCA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgCi0gICAgNzQyMzcsIDk5MjAsIDEyMjE1LCA4Mjk3OCwgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgOTYwNywgNzAzNjgsIDk2NjMsIAotICAgIDY2ODM4LCAxMTk2MzQsIDY1MDMsIDQxMTEwLCA5ODM0NjcsIDE0OTEsIDY2ODQ3LCAxMjkxNjksIDEyNzMwNCwgNDEwNjEsIAotICAgIDcwNDU0LCAxOTQ4MzgsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3MTE4MSwgNjY0NzYsIAotICAgIDQxMTA4LCA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMTI3MDAyLCA0MTY4NywgMCwgCi0gICAgMTIwNzE3LCAxMjc3NzYsIDk5NDAsIDEyNzI5OSwgNzY5MiwgOTgzODMzLCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCAKLSAgICA2NTA4MywgNjgzOSwgOTgxNiwgMTI2NTE3LCAxMjUzMiwgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAKLSAgICAxMjAzNTEsIDEyNzI5OCwgNjQxMzksIDc4MjMxLCA2NDExLCAxMjkxMCwgNjc3MTAsIDY2NjQ0LCAxMzAyOCwgNjczNywgCi0gICAgMTI1MzcsIDAsIDQzNTA2LCA2NDEzNiwgMTI1MzYsIDIzNTAsIDEzMDI5LCA3ODIzMywgMTIwOTE0LCA0Mzg5NywgMTMwMzAsIAotICAgIDY3MDIsIDQ1MjcsIDcxMjUwLCAxMjUzOCwgMTI4ODEwLCA5ODM2NDUsIDY1NTk5LCA2NTcxNywgOTk2NiwgOTMwNDYsIAotICAgIDQ5NDgsIDEyNDg0LCA0MDMyLCAxMjExNzcsIDEyNjIzLCAwLCA2MjA3LCA5ODMyMjUsIDYxMTcsIDY1OTMwLCA4NDEyLCAKLSAgICAxMjcxODMsIDc0MzgsIDEyOTYsIDIzMjUsIDQxNTExLCAxMjEwMjAsIDEwMTQ5LCA3NDExOCwgMCwgMTIwMjMzLCAxMjQ4MSwgCi0gICAgMTIxMjgwLCAxMjQ4OCwgNjY3MTMsIDAsIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgNzM3NjYsIAotICAgIDExOTI0NCwgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCAxMjAyMDksIDExOTI3LCA2NjU4NCwgCi0gICAgNzg1NTksIDc4NTYwLCA3ODU1NywgNzE0NTksIDgzMDM0LCA2NzYwMywgODQ4LCA5ODY4LCA2NzIyMCwgNjQyNCwgNzg1NjgsIAotICAgIDY3MjI2LCA2OTkyMiwgNzAxOTAsIDc4NTYzLCA3ODU2NCwgMjM1MiwgNjcyMTksIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCAKLSAgICA2Nzk3MywgOTgzMTkzLCAxMzAyNiwgNjc2MiwgNzg1NzksIDcwMTkyLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIAotICAgIDgwOTksIDEyNzk4NCwgMCwgMTM0MywgOTE3OTk5LCAxMjA3ODQsIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAwLCA3MjQzNiwgCi0gICAgMTEzNzEzLCAxMTc0MSwgOTE3OTg2LCA3NTA0MywgOTIxNiwgODI2MywgMTEyNzksIDgzMDIzLCA4MzAyNCwgODMwMjUsIAotICAgIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCA5OTU2LCAwLCA0Mzk1NCwgCi0gICAgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCAKLSAgICA2OTY4MSwgMCwgNDMwMDEsIDgwMjksIDAsIDAsIDk4Mzc4MCwgMzMzNSwgMTE5MzQxLCA5MjA5LCA5Nzc2LCAxMjA1MjYsIAotICAgIDE5NDc0OCwgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgCi0gICAgNzg1ODEsIDQxNTYsIDAsIDEyNzMyOSwgNjQyMSwgNzgwMzksIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCAKLSAgICA3NDU0MiwgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCAwLCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCAKLSAgICA0MzkyNSwgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgOTI3NDUsIDAsIAotICAgIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA2NTgyNywgMTMwNTAsIDk5MjQsIDE5NDc0NSwgNjUwNywgCisgICAgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMTI5MTgzLCAxOTQ4NDIsIDEyMDc5MywgNDkzLCAxMTg5MjUsIDQzMTk3LCAKKyAgICAxNzE3LCA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgCisgICAgNjQzMTUsIDkyMTcwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDgzNTE5LCA2NDkxMSwgCisgICAgODM1MjEsIDIwOTYsIDY1MTIwLCA4MzUxNiwgNzgyMTksIDgzMjcwLCA4Mzc4LCAxMTYzMiwgNjg4MzgsIDY2MjEzLCAKKyAgICA2Mzg2NCwgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgNjYyMzYsIDY2MjExLCAKKyAgICA2NjIxOCwgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgNjYyMzQsIDExNjA1LCAKKyAgICA2Mzc1OSwgMTI3MzA4LCA2NjIwOCwgNjczMzksIDEzMDAyLCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIDEyNDk0LCAKKyAgICA3Mzc2MSwgMTI0OTIsIDEyNjY5LCA5NDA3MCwgMCwgNzQxNTMsIDEyMDMxMCwgMTI2NTEzLCAxMjA0NzIsIDQ4ODIsIAorICAgIDEzMDQwLCA5ODMzNjIsIDg2MTIsIDQ4ODUsIDc0MDUzLCAxMjc4MzAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgCisgICAgMjQ4LCAxMDEwMTgsIDYzNzkzLCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDEwMTAxNywgNjM3NTYsIDQyNzg2LCA2NjY5MywgCisgICAgOTE3NTk4LCAxODcwLCA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCA3MDAyOCwgNzgwMzQsIDQ1NzksIDY5MjMyLCAKKyAgICAwLCAxMjUxMSwgNzQ0NTMsIDEyNTE0LCA5ODM5NDcsIDcwNjU2LCA3MjM5LCA3MDAxLCA4NjIzLCA5NDAxMSwgMTI1MTM3LCAKKyAgICAxMjgwNDgsIDczNzgsIDEyNTEyLCAxMTYxNSwgNjEwNCwgMTAxMDExLCAxMjA5MDAsIDY1OSwgNjA5OCwgMTAwOTQ4LCAKKyAgICAxMjIzNCwgODM1MTEsIDY3MzU4LCA4MzExLCAxMjUxMCwgNzY2OSwgMTMwMzksIDgzNTA5LCAxMjUxMywgMTAyMDIsIAorICAgIDEyNDcxLCAwLCA4NzQ3LCAxMjEzODUsIDcwMTkzLCAxMDA5NDYsIDIzMjMsIDEyODE0NywgMjMxOSwgNzc5MTcsIDEyNDc3LCAKKyAgICA3NzkxNiwgMjMxMSwgNzY2NiwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDEwMDk0MCwgODMwMjAsIDIzMDksIDEzMTIsIAorICAgIDgxNzMsIDgzMDEzLCAxMjQ2OSwgODMwMTUsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDgzMDExLCA3ODAwNiwgOTM5NywgCisgICAgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIAorICAgIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDEyNzk5MCwgNjU0NTEsIDgxODUsIDEyODkzMSwgMTk0ODQzLCA0MzAyNCwgCisgICAgNDMzMzYsIDY3NjU5LCAyMzEzLCA3NDQ0NiwgNzk0OCwgOTIzNiwgNzc5NDIsIDEyODg5OSwgMCwgMTA1NzAsIDQzNDczLCAKKyAgICA2Mjg5LCAxMDQ4NCwgODMwMDYsIDgzMDA3LCAxMTk5OCwgMTIwODIsIDEwOTI0LCAzMTQ3LCA4MzAwNCwgNjY0MDYsIAorICAgIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCAKKyAgICA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCA3NDI1NiwgMCwgMTMwMTYsIDgyMTAsIDEyMTA2MiwgCisgICAgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIDEyMDYzMCwgNDE1NSwgMTIxMDkwLCAKKyAgICAxMjA3MDQsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDExMzgyNiwgMTI3MjE3LCA5ODMyMDIsIDk5MjIsIAorICAgIDQzMzA5LCAxMTIxMSwgMTI1MjUsIDE5NTAzNSwgMTIwMTYsIDY1NzcwLCA5NTQ4LCA2NzY2NSwgNDAzLCA3ODIzMCwgCisgICAgMTEwMjEsIDE5NDY4OSwgMTI1MjUwLCAxMTAzMCwgNDM5MTYsIDkyNTY3LCA2NTY5MSwgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAKKyAgICAxOTQ2NTcsIDExOTkyMCwgMCwgMTI5MTQzLCAxMjEwNzIsIDEyNTA2LCAxOTQ2MDUsIDExMTQ2LCA3MTQ3NywgMTI1MDAsIAorICAgIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgMTEyMDgsIDEyMDIzNiwgNzgzOTUsIAorICAgIDc4Mzk0LCA3NDA2OSwgNzE0NDYsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMTM3MzIsIDExMDcsIDExMzc0NSwgOTA3NiwgODg2MiwgCisgICAgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgNzQxNjUsIDc0NzgyLCA0MzQ5OSwgCisgICAgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgMTEzNjY0LCA0OTgsIDY0NDcxLCA3Nzk4NywgOTI5NzQsIAorICAgIDEyNTI5LCA4MDQyLCA0Mzg5OSwgMjM0NCwgMTI1MjgsIDgwMzEsIDI0MTQsIDc0NTA2LCA2OTcxOSwgMzIzMSwgMTk0NTY5LCAKKyAgICA2NDIyLCA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIAorICAgIDc4NzM4LCA0MTQzMywgNDcxOSwgNDY5LCA5MTc4MTAsIDQzNjMsIDMzMTMsIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgCisgICAgNzgyMjQsIDc4MjI1LCA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgNzQyMzcsIDk5MjAsIDEyMjE1LCA4Mjk3OCwgCisgICAgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgOTYwNywgNzAzNjgsIDk2NjMsIDY2ODM4LCAxMTk2MzQsIDY1MDMsIDQxMTEwLCAKKyAgICAxMjUyMzIsIDE0OTEsIDY2ODQ3LCAxMjkxNjksIDEyNzMwNCwgNDEwNjEsIDcwNDU0LCAxOTQ4MzgsIDEyMTAxNCwgNjUwMjYsIAorICAgIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3MTE4MSwgNjY0NzYsIDQxMTA4LCA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgCisgICAgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMTI3MDAyLCA0MTY4NywgMTI3Mzk4LCAxMjA3MTcsIDEyNzc3NiwgOTk0MCwgMTAwNDE5LCAKKyAgICA3NjkyLCAxMjA2ODAsIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIDY1MDgzLCA2ODM5LCA5ODE2LCAxMjY1MTcsIDEyNTMyLCAKKyAgICA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIDEyMDM1MSwgMTI3Mjk4LCA2NDEzOSwgNzgyMzEsIDY0MTEsIAorICAgIDEyOTEwLCA2NzcxMCwgNjY2NDQsIDEzMDI4LCA2NzM3LCAxMjUzNywgMTAwNDE3LCA0MzUwNiwgNjQxMzYsIDEyNTM2LCAKKyAgICAyMzUwLCAxMzAyOSwgNzgyMzMsIDEyMDkxNCwgNDM4OTcsIDEzMDMwLCA2NzAyLCA0NTI3LCA3MTI1MCwgMTI1MzgsIAorICAgIDEwMDQxNiwgMTI5MzUyLCA2NTU5OSwgNjU3MTcsIDk5NjYsIDkzMDQ2LCA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTIxMTc3LCAKKyAgICAxMjYyMywgMTIwMjA3LCA2MjA3LCAxOTQ3MjYsIDYxMTcsIDY1OTMwLCA4NDEyLCAxMjcxODMsIDc0MzgsIDEyOTYsIDIzMjUsIAorICAgIDQxNTExLCAxMjEwMjAsIDEwMTQ5LCA3NDExOCwgMCwgMTE5NjI1LCAxMjQ4MSwgMTIxMjgwLCAxMjQ4OCwgNjY3MTMsIDAsIAorICAgIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgNzM3NjYsIDcyNzU3LCA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAKKyAgICA5ODM0NjUsIDY1MDMyLCA0MTUxMywgMTIwMjA5LCAxMTkyNywgNjY1ODQsIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDcxNDU5LCAKKyAgICA4MzAzNCwgNjc2MDMsIDg0OCwgOTg2OCwgNjcyMjAsIDY0MjQsIDc4NTY4LCA2NzIyNiwgNjk5MjIsIDcwMTkwLCA3ODU2MywgCisgICAgNzg1NjQsIDIzNTIsIDY3MjE5LCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgNjc5NzMsIDk4MzE5MywgMTMwMjYsIDY3NjIsIAorICAgIDc4NTc5LCA3MDE5MiwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCA4MDk5LCAxMjc5ODQsIDEyOTM2NywgMTM0MywgCisgICAgMTI4NDM4LCAxMjA3ODQsIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAxMjAyMTAsIDcyNDM2LCAxMTM3MTMsIDExNzQxLCAKKyAgICAxMjkxOTYsIDc1MDQzLCA5MjE2LCA4MjYzLCAxMTI3OSwgODMwMjMsIDgzMDI0LCA4MzAyNSwgMTMwMjEsIDY0NDk0LCAKKyAgICAzMTM2LCAxOTQ3NTgsIDE5NDc1NywgMTk0NzYwLCAxMzAyMiwgNDI3MzcsIDk5NTYsIDEwMDc0NiwgNDM5NTQsIDc0NTUyLCAKKyAgICAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCA3NDM0MCwgNjk2ODEsIDAsIAorICAgIDQzMDAxLCA4MDI5LCAwLCA5ODM2MzksIDk4Mzc4MCwgMzMzNSwgMTE5MzQxLCA5MjA5LCA5Nzc2LCAxMjA1MjYsIDEyODQwNCwgCisgICAgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgNzg1ODEsIAorICAgIDQxNTYsIDAsIDEyNzMyOSwgNjQyMSwgNzgwMzksIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCA3NDU0MiwgCisgICAgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCA5ODM3ODksIDY4NjA4LCA2NDgyLCA0MjE0LCA3Mzc5MCwgMTE5NDUsIDQzOTI1LCAKKyAgICAxMzA0NiwgODgzOCwgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCA5Mjc0NSwgMTI1MDQwLCAKKyAgICA2ODE5LCAxMzA0OSwgNjQ5OSwgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNjU4MjcsIDEzMDUwLCA5OTI0LCAxMjgzNzgsIDY1MDcsIAogICAgIDEyNzkxOSwgOTQwNzMsIDEyODA2OSwgMzI3NywgODkyOSwgNDk0NywgNDEwNTUsIDAsIDE5NDcyMiwgMTk0NzIxLCAKICAgICAxOTQ3MjQsIDEzMDQ1LCA2NDYyNiwgNjYwMzQsIDc3NTEsIDE5NDcyNywgODM3MSwgMTIxMDM2LCAzOTk3LCAxMjgwNiwgCiAgICAgODc2OCwgMTMwNDQsIDAsIDEyNDIwLCA0MDI0LCAxMjgwMDAsIDQxMDU0LCAxMDc4LCA5NzU3LCA2OTczNiwgNDEwNTcsIAotICAgIDY4MzA3LCA5MTc4NDIsIDAsIDAsIDk4Mzc5MSwgOTIyMTAsIDkyNDExLCAxMjkzMDMsIDQxNDk2LCAwLCA5MTY1LCAxNTcyLCAKLSAgICAxMTkxMSwgMTI0OTkwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCAwLCA5NjQ2LCAzNzczLCA0MzE4MywgNjQwMSwgCi0gICAgNTgzMSwgMCwgMTIwODY1LCAxMzA0MywgODA1NiwgNzAxMDgsIDY1NjgxLCAyMDgsIDEyNzM4MiwgNDE1MTQsIDAsIAotICAgIDEyMTA0OCwgOTgzODg0LCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIDgyOTcyLCA4Mjk3MywgMzYwMywgCi0gICAgNDExMDksIDIzOTgsIDM1NDgsIDgyOTY5LCA4Mjk3MCwgMTE5OTMzLCA4Mjk2NCwgMzExNSwgOTkxOCwgMTI3ODIzLCA4Mjk0LCAKLSAgICA0MjkxMiwgMCwgMTI3Mjg3LCAxOTQ3MjYsIDQ4NzYsIDY1ODA0LCAwLCAwLCA0MzQ2OCwgMTIxMjIxLCA0MTU1OCwgNDE0NzEsIAotICAgIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgNzg2ODksIDMxNDMsIDE5NDY3NCwgNjcwMSwgCi0gICAgNDE1NTksIDE4OTYsIDY1MjE1LCAxMzA1MiwgMTk0NjgwLCA1NjY1LCA3ODU5NCwgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgCi0gICAgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIDU2NjIsIDQyMzgyLCAxNTY0LCA3MzkyNCwgMTEyMSwgCi0gICAgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgOTgzNTc4LCA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgNzgxNDIsIAotICAgIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDkyMjk0LCAxMDUwOSwgMjc5NSwgCi0gICAgNDkxMCwgMTI5MTkzLCA2OTIzMSwgNjQ3NTMsIDYyNzUsIDkzOTU3LCAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgCi0gICAgNjQyMywgNDI3NzQsIDAsIDAsIDY4NTI2LCAxMjgyMywgMjMzMSwgMTI3Nzg4LCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAKLSAgICAxMjA3MjEsIDkxNzgwOSwgODM0NiwgMTI4NDM4LCA4MzM4LCAxMjgzMTUsIDY1MDQzLCA3Nzk4MiwgODIyLCA3MDQxMiwgCi0gICAgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgODI5NTYsIDc4NjU1LCA2Njg4MiwgODI5NTksIDc4NDg0LCA0MTI2NSwgCi0gICAgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCA0Mzk2MiwgMTEyNzgsIDc4NjMyLCA3NDExMSwgMTI4MDk1LCAKLSAgICAxMjk0NiwgMTIxMDc2LCA3MTkyMSwgMTIwMzQ5LCA2Mjk0LCAzMTQ0LCAxMTM3MDYsIDEyNzk2NywgNjUwMTksIDc0MDc4LCAKLSAgICA3Mzk5MCwgNjUxMTEsIDk4Mzk2MCwgNzQ4LCA0MTA2NywgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgNzg3OTksIDE5NDYyOSwgCi0gICAgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCA2Nzg2MywgMzU5MywgNzQwNzYsIDgyOTQ5LCAyMzQyLCA4Mjk1MSwgCi0gICAgODI5NDQsIDY1MjA2LCA0ODk0LCA4Mjk0NywgNDg5MCwgMTIxMDU5LCA2NDQzMywgNTgxLCA0ODkzLCA0MjkyOSwgNjU3MSwgCi0gICAgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3ODA0OSwgNjQ2NTEsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIAotICAgIDY5NzAyLCA5ODM5MzcsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDQyOTI4LCA0Mjg4MCwgCi0gICAgNDM1ODcsIDEyMTA5OCwgMCwgMCwgNzA0NjEsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgCi0gICAgNjU4NTQsIDQ4NzUsIDY1ODExLCA3NTAyNCwgMTIwMzg5LCA3MTg1NCwgOTM0NCwgODgyNiwgOTI5MTYsIDEyMDM5NSwgCi0gICAgMTMxMDQsIDY3ODI4LCAxMTk5NywgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgODMwOTYsIDY1Njk2LCA3MjQzMiwgMTIxNDEyLCAKLSAgICA2NjIxNywgMTIxMTkwLCA4MzM0LCA5Mjc1NSwgODMyMDcsIDM0NDksIDEyMTI2NCwgMTMxMDAsIDc4NDE0LCA3ODQxMywgCi0gICAgODMyMTYsIDY2NDA1LCA3MDQzMCwgODMwODksIDgzMjAzLCAxMjcyNTAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIAotICAgIDEyNzAxNCwgODMxOTgsIDY3ODI1LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgCi0gICAgODM1MTAsIDc4MDU0LCA0OTE3LCA3NDUxNiwgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDgzMTAwLCAyMzYxLCAKLSAgICA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgOTgzNTc1LCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgCi0gICAgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgMTI1NzMsIDcxMTMxLCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMTI3ODE2LCAKLSAgICAxMjU4MiwgNzgyODIsIDk4MzA0OCwgNjk4NTYsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgCi0gICAgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCA3MDQwMSwgNzAwMzksIDAsIDcwNDYwLCA0OTEzLCA3MTA2MCwgMTI4NTYyLCAKLSAgICA3MTMzMywgNDIzMjYsIDEyMTExOSwgMTI3MjgsIDkyNjg1LCA0MjQ3OCwgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgCi0gICAgMTIwODI5LCA4MzA4MSwgMTI1ODgsIDg4MjEsIDYxNTMsIDI4NjcsIDgzMDg1LCA2NjMxMiwgNjk4LCA4MzA3NiwgODMwODcsIAotICAgIDEwMzU2LCA3MDAxNywgMTI4NTcwLCA2NTEsIDEyNjQxLCA4MzEzOCwgMTI1MDk4LCAxMjA3MTAsIDEyOTA2NCwgNDE1NTIsIAotICAgIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3NDkwNSwgMTI3NTE2LCA3ODQ2MSwgOTI5NjAsIDY2OTI3LCA2NDk0NSwgCi0gICAgNDcxNiwgNDMyNzcsIDEyMDkzMiwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDEyMDkyOCwgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIAotICAgIDEyMDY3NiwgODcwMywgNTQ2MiwgODMxOTUsIDgzMTg1LCAxMDEwMSwgMCwgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCAKLSAgICA4MzE4OSwgMCwgNjYyNTQsIDEyMDgyMSwgNjg0OTcsIDAsIDEyODY1NCwgMTEzNzk5LCA4MzE1OSwgNzQwNTAsIDQyNjUxLCAKLSAgICAxMjczNzEsIDAsIDAsIDgzMjI1LCA4MzIxOCwgMTIyNzgsIDc1MDExLCAxMjg0MDUsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAKLSAgICAxMjg5OSwgODMxNTUsIDAsIDI2OTksIDEyOTMwNCwgNzM4NDUsIDI5ODUsIDgzMTQ5LCA2ODY0OCwgODMxNDYsIDEyMTkyLCAKLSAgICAxMTkzMTQsIDAsIDY2NDg5LCA5ODI3LCAxMTkzMTAsIDg2MDksIDExOTMwOCwgNjc0MjYsIDExOTMwNiwgMTE0ODEsIAotICAgIDQxMjEwLCAxMTkzMDUsIDAsIDM1LCA3MDgzOCwgNjc0MzEsIDY2Njk0LCA2ODQ3OSwgNzg0NzcsIDY3NDI4LCA0MzU5NiwgCi0gICAgNjA5MCwgNjQyNTcsIDc4MTIsIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDY3OTc1LCA0MjcyLCA3ODMyMSwgNDA5NjcsIAotICAgIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgCi0gICAgNjgyMTYsIDE5NDg3MSwgMTIxMzkwLCA1MjQ0LCA0MTg5LCA5MjY5NywgNjc1OTYsIDEyNzUwNCwgNDE4OCwgMTg3OSwgCi0gICAgNzA0NjMsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDIyNzksIDEyNzEwMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDAsIAotICAgIDkyNzQ5LCA5Mjc1MywgNzQ0OTAsIDEyNzA5OSwgMTE4MzgsIDc1MDAxLCAwLCAwLCA0MjY4MiwgMTI1NzgsIDEyNzIwLCAwLCAKLSAgICA0MTIyNywgMCwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDY5OTUwLCA5MTc5NTAsIDcyNTEsIDAsIDEyMDM4MiwgMTE4ODUwLCAKKyAgICA2ODMwNywgOTE3ODQyLCAxMjc4OTcsIDAsIDk4Mzc5MSwgOTIyMTAsIDcyNzM1LCAxMjkzMDMsIDQxNDk2LCAxOTQ1NzQsIAorICAgIDkxNjUsIDE1NzIsIDExOTExLCAxMjQ5OTAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDk4MzQxNiwgOTY0NiwgMzc3MywgCisgICAgNDMxODMsIDY0MDEsIDU4MzEsIDE5NDcyMywgMTIwODY1LCAxMzA0MywgODA1NiwgNzAxMDgsIDY1NjgxLCAyMDgsIAorICAgIDEyNzM4MiwgNDE1MTQsIDEyMTEyNCwgMTIxMDQ4LCA5ODM4ODQsIDEwNjk5LCA2NDA4LCA5MjIyNywgNzgyNSwgNTY2MSwgCisgICAgODI5NzIsIDgyOTczLCAzNjAzLCA0MTEwOSwgMjM5OCwgMzU0OCwgODI5NjksIDgyOTcwLCAxMTk5MzMsIDgyOTY0LCAzMTE1LCAKKyAgICA5OTE4LCA3MjcyMywgODI5NCwgNDI5MTIsIDE5NDc0NSwgMTI1MTg1LCAxMjY0ODMsIDQ4NzYsIDY1ODA0LCAwLCAxMDA1ODMsIAorICAgIDQzNDY4LCAxMjEyMjEsIDQxNTU4LCA0MTQ3MSwgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCAKKyAgICA3ODY4OSwgMzE0MywgMTk0Njc0LCA2NzAxLCA0MTU1OSwgMTg5NiwgNjUyMTUsIDEzMDUyLCAxMTk5MzAsIDU2NjUsIAorICAgIDc4NTk0LCA4MzEyOSwgNzAyNSwgNjM5NzQsIDEwMDQ2NCwgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgCisgICAgMTIzMTAsIDU2NjIsIDQyMzgyLCAxNTY0LCA3MzkyNCwgMTEyMSwgNzgzMTksIDYzOTU5LCA5ODMxODQsIDk5NDIsIDEzMjMxLCAKKyAgICA5ODMyNTAsIDY0NzUyLCA0NzMyLCAxOTQ2NjYsIDExNTk2LCA3ODE0MiwgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgCisgICAgNjQ3NzIsIDQyMDI0LCA2NDIwLCA0MjAyOCwgOTIyOTQsIDEwNTA5LCAyNzk1LCA0OTEwLCAxMjkxOTMsIDY5MjMxLCAKKyAgICA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCA2NDIzLCA0Mjc3NCwgMTAwNDU1LCAwLCAKKyAgICA2ODUyNiwgMTI4MjMsIDIzMzEsIDEyNzc4OCwgNzA4NSwgNjEzNywgMCwgNzUyNCwgMTIwNzIxLCAxMTM3MDMsIDgzNDYsIAorICAgIDc4ODAyLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCA3Nzk4MiwgODIyLCA3MDQxMiwgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgCisgICAgODI5NTYsIDc4NjU1LCA2Njg4MiwgODI5NTksIDc4NDg0LCA0MTI2NSwgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCAKKyAgICA0Mzk2MiwgMTEyNzgsIDc4NjMyLCA3NDExMSwgMTI4MDk1LCAxMjk0NiwgMTIxMDc2LCA3MTkyMSwgMTIwMzQ5LCA2Mjk0LCAKKyAgICAzMTQ0LCAxMTM3MDYsIDEyNzk2NywgNjUwMTksIDc0MDc4LCA3Mzk5MCwgNjUxMTEsIDkxNzk1NCwgNzQ4LCA0MTA2NywgCisgICAgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgNzg3OTksIDEyOTMxMywgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCAKKyAgICA2Nzg2MywgMzU5MywgNzQwNzYsIDcyNzUwLCAyMzQyLCA4Mjk1MSwgODI5NDQsIDY1MjA2LCA0ODk0LCA4Mjk0NywgNDg5MCwgCisgICAgMTIxMDU5LCA2NDQzMywgNTgxLCA0ODkzLCA0MjkyOSwgNjU3MSwgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3MDczNSwgCisgICAgNjQ2NTEsIDc4MDQ3LCA5MTc4MDYsIDEwMTE5LCA2NDE1LCA0Mjg5MywgOTgzMDY4LCA2OTcwMiwgOTgzOTM3LCAwLCAKKyAgICAxMTM3NSwgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA0MjkyOCwgNDI4ODAsIDQzNTg3LCAxMjEwOTgsIDAsIDAsIAorICAgIDcwNDYxLCA2NTE5NywgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIDY1ODU0LCA0ODc1LCA2NTgxMSwgCisgICAgNzUwMjQsIDEyMDM4OSwgNzE4NTQsIDkzNDQsIDg4MjYsIDkyOTE2LCAxMjAzOTUsIDEzMTA0LCA2NzgyOCwgMTE5OTcsIAorICAgIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIDgzMDk2LCA2NTY5NiwgNzI0MzIsIDEwMDYzMSwgNjYyMTcsIDEyMTE5MCwgODMzNCwgCisgICAgOTI3NTUsIDgzMjA3LCAzNDQ5LCA4MzIxNCwgMTMxMDAsIDc4NDE0LCA3ODQxMywgODMyMTYsIDY2NDA1LCA3MDQzMCwgCisgICAgODMwODksIDgzMjAzLCAxMjcyNTAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIDEyNzAxNCwgNzA3MDksIDY3ODI1LCAKKyAgICA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgODM1MTAsIDc4MDU0LCA0OTE3LCA3MDY4NiwgCisgICAgNzI4MTYsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDgzMTAwLCAyMzYxLCA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCAKKyAgICA3ODA3MSwgMTk0NjkzLCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgCisgICAgMTI1NzMsIDcxMTMxLCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMTI3ODE2LCAxMjU4MiwgNzgyODIsIDk4MzA0OCwgNjk4NTYsIAorICAgIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCA3MDQwMSwgCisgICAgNzAwMzksIDAsIDcwNDYwLCA0OTEzLCA3MTA2MCwgMTI4NTYyLCA3MTMzMywgNDIzMjYsIDEyMTExOSwgMTI3MjgsIDkyNjg1LCAKKyAgICA0MjQ3OCwgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgMTAwNDgzLCA4MzA4MSwgMTI1ODgsIDg4MjEsIDYxNTMsIAorICAgIDI4NjcsIDgzMDg1LCA2NjMxMiwgNjk4LCA4MzA3NiwgODMwODcsIDEwMzU2LCA3MDAxNywgMTI4NTcwLCA2NTEsIDEyNjQxLCAKKyAgICA3MjgwOSwgMTI1MDk4LCAxMDA2MzksIDEyOTA2NCwgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3NDkwNSwgCisgICAgMTI3NTE2LCA3ODQ2MSwgOTI5NjAsIDY2OTI3LCA2NDk0NSwgNDcxNiwgNDMyNzcsIDcyNzQ1LCA3ODQ3NCwgMTIzNDAsIAorICAgIDEyMDU2OCwgNzA3MjEsIDcwNzE5LCA1NTI2NCwgNDEyMTEsIDEyMDY3NiwgODcwMywgNTQ2MiwgODMxOTUsIDgzMTg1LCAKKyAgICAxMDEwMSwgMTIwNDQxLCA3MDA0OSwgODQ3OSwgNDE1MSwgNDE5MzMsIDgzMTg5LCAwLCA2NjI1NCwgMTIwODIxLCA2ODQ5NywgCisgICAgMCwgMTI4NjU0LCAxMTM3OTksIDgzMTU5LCA3NDA1MCwgNDI2NTEsIDEyNzM3MSwgMCwgMCwgODMyMjUsIDgzMjE4LCAKKyAgICAxMjI3OCwgNzA3MTYsIDEyODQwNSwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIDEyODk5LCA4MzE1NSwgMCwgMjY5OSwgCisgICAgMTI5MzA0LCA3MjcxOCwgMjk4NSwgODMxNDksIDY4NjQ4LCA4MzE0NiwgMTIxOTIsIDExOTMxNCwgMTI5MDYyLCA2NjQ4OSwgCisgICAgOTgyNywgMTE5MzEwLCA4NjA5LCAxMTkzMDgsIDY3NDI2LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAxMjUyMDcsIAorICAgIDM1LCA3MDgzOCwgNjc0MzEsIDY2Njk0LCA2ODQ3OSwgNzg0NzcsIDY3NDI4LCA0MzU5NiwgNjA5MCwgNjQyNTcsIDc4MTIsIAorICAgIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDY3OTc1LCA0MjcyLCA3ODMyMSwgNDA5NjcsIDQwOTY0LCAxMjQ5ODMsIDEyNzA0LCAKKyAgICA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgNjgyMTYsIDE5NDg3MSwgNzI3MzcsIDUyNDQsIAorICAgIDQxODksIDkyNjk3LCA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCA3MDQ2MywgOTY4LCAwLCA0Mzc0MywgOTgzNjg1LCAKKyAgICA4ODczLCAyMjc5LCAxMjcxMDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAxMjExMDMsIDkyNzQ5LCA5Mjc1MywgNzQ0OTAsIAorICAgIDEyNzA5OSwgMTE4MzgsIDY2Nzg3LCAwLCAxMjA2NjQsIDQyNjgyLCAxMjU3OCwgMTI3MjAsIDk4MzY5OCwgNDEyMjcsIAorICAgIDcyNzY1LCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgNjk5NTAsIDkxNzk1MCwgNzI1MSwgMTEzNzkyLCAxMjAzODIsIDExODg1MCwgCiAgICAgMTE5MTQxLCAxMjg0NjEsIDY2MDE1LCA2NzMzMiwgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCA5NjMyLCAKLSAgICA5MjIzMSwgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDEyODg0MiwgMCwgMTExMzIsIDMxMCwgMTIwOTI0LCA0MTI4MSwgMTA5NzYsIAotICAgIDAsIDcxMzI1LCAxMjgzNjQsIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgOTE3ODIzLCA5MDEyLCAxOTk1OCwgNzQ0MjAsIAotICAgIDY1MDg5LCAxMzIxNSwgMTI3MzAsIDY1MTYzLCA2NDI2MCwgMzc0LCA0MzE5NSwgODE2LCA5Mjc4MywgMCwgODMxOTEsIAotICAgIDQxOTM0LCA3NDY1LCA3NDYxNSwgOTI3NTIsIDEyNzg5NSwgNDcxNSwgNjEwMSwgNzEwODksIDQxOTM2LCA4Mjk2NywgNDg3OSwgCi0gICAgNDM5NjUsIDY1NDQ2LCAwLCAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgMTI3OTYyLCAxMjgwNTksIDAsIDEyOTE4OSwgCi0gICAgMTI2NjE4LCAxMjAzOTAsIDc0OTUzLCA2NTU2NywgMTIwNjE0LCAxOTI5LCAxMjA5ODQsIDEyMTQyLCAxOTQ2OTYsIDEyMjM2LCAKLSAgICA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCA3NTAwMywgNTM3OCwgNzUwMDQsIDEyMDk1NywgNDE0MjEsIDc1MDA1LCAKLSAgICA0NDYyLCAwLCAxMjY1OTksIDEyODA5MiwgODIxLCAwLCAyNDk4LCA1ODAwLCAxMjAxNTcsIDY3NzU4LCAxNzYwLCAyNDIxLCAKLSAgICA0NDY5LCAyMzI0LCA4MjgsIDM2MTEsIDc4NDAwLCA3NTcsIDExODUsIDAsIDc4NzcwLCA0MzU5NywgMTA2MjgsIDc0ODA4LCAKLSAgICA2ODg0OSwgNzk5OSwgNDM5NzEsIDExMjE3LCAxMjEyMjQsIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgMCwgNjQzNzQsIAotICAgIDQzODAsIDEyODI4NCwgODMwNjEsIDk5ODIsIDY0MzI0LCA0MTI0MCwgODYyLCA2NDQ2OCwgNzg0NjIsIDE4MTAsIDM2NzMsIAotICAgIDUxMzcsIDE5NDYxNywgMCwgNzI3NywgNjU2MjIsIDY1MDY5LCA3NTY2LCA2NDY4OCwgNjcxNDMsIDE5NDU5MiwgNzQ5NTcsIAotICAgIDQzOTEyLCAxMjgzODUsIDQ3NDgsIDkyMjI4LCAxMjkxODUsIDE5NDYwMSwgNDIyNjAsIDU4NzEsIDExOTA3NSwgMTIxMjc4LCAKLSAgICA3NDU3NiwgNDQwMTksIDE5NDcyMCwgMTI4MTg5LCAzOTY3LCA3MTA5OCwgMTMxMzcsIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgCi0gICAgOTE3Nzg1LCA4NDEwLCA0NDU0LCA3MjMsIDgzMDg0LCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgNzUwMjIsIDc4MTksIAotICAgIDIzMjAsIDE5NDU4OSwgMzM5LCA0OTY4LCAxOTQ1OTAsIDEyMDM5OSwgODA3NSwgNTUyNzYsIDgzMDU3LCA4MDQ3LCAwLCAKLSAgICA3ODgyNywgMTI2MzQsIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAxMjQ5MzQsIDc0NDUyLCAKLSAgICA5ODM3NjMsIDE1ODQsIDY2NjQ1LCA2MDQ1LCA2NzI5LCAxMjA2NDAsIDY1MjE4LCAxMTU1OSwgMTk0OTgzLCA3ODA2MiwgCi0gICAgNzUzNywgMTI0OTkxLCAxMTM3MCwgMTI1MDkzLCAxMDMzMCwgNzg3OTgsIDEwMzk0LCA5MjIzNiwgNzQxOTQsIDAsIAotICAgIDEyNzkyOSwgOTc4MCwgMCwgMTExMTcsIDc0OTkzLCA3Nzk1MCwgNjcwOTEsIDcwNzQsIDkyNjQ4LCAxOTQ1NzksIDE5NDU4MiwgCi0gICAgMTE0MTQsIDY4NzgxLCAyNTMxLCAxMzAzNCwgMTI5MTU5LCAwLCA0MjExLCAxMjU5LCA3NTE3LCA3MDg2NiwgNzAxOTgsIAotICAgIDgzMTIyLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgODMxMjUsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAKLSAgICAxMjEyNTMsIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDc0MjkzLCA3NDUzMCwgNjQwOTgsIDY1NzkzLCAKLSAgICA0NTM1LCAxMjEyNjcsIDQyNzEsIDc4NDE3LCAxMjcwNTksIDY3NjksIDQxNDEwLCAxMjcyNTcsIDY0MjYyLCA2NzY3LCAKLSAgICA0MTQwNywgNjYyNzMsIDkxNzgxNiwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMjA4ODYsIDEyNjYwOCwgNzA4MzAsIDAsIAotICAgIDgzMjMyLCAwLCA2NzY3NSwgOTgzNjk0LCA4MzIzNCwgMTIxMjU0LCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgODMyMjksIAotICAgIDAsIDEyMzM4LCA0NjUxLCA2NzM1NSwgMTEyNzAsIDAsIDc0NjMwLCAxMTkzMywgNzAxMDcsIDAsIDQxOTAzLCA0MzQ0NywgCi0gICAgMTEwMDEsIDczODI3LCA0MjI1NSwgODMyNDMsIDgzMjM4LCA2OTgyMSwgNDE5MDUsIDY3MzUwLCAwLCAxMDc3NSwgOTc5MywgCi0gICAgNTAwOSwgMTI4Nzc0LCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCA2NDUyOSwgNDE0MDgsIDQyODUzLCAKLSAgICAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA2NzM0MiwgMTAyMzYsIDY1OTE4LCA0Mzc4MiwgCi0gICAgNzg3NjksIDc4MDYwLCA2NDUwNiwgNjk2NTIsIDExODkyMSwgNDc0NywgODMyNTEsIDY5ODQ0LCA0MzIwMCwgNTgzMiwgCi0gICAgNzEyMDgsIDgzMjUwLCA1MTQxLCA0MjYwMCwgNzE4NjYsIDQzMjAzLCAxMjcyMDgsIDEyMDEyOSwgNDMyODYsIDAsIAotICAgIDEyODIxMSwgNDM3NzgsIDc2NTcsIDQxMzA1LCA3MTEzMiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMTI4NjA5LCA3MDMxLCAKLSAgICA4NTksIDEyODQ4OCwgODMyNjIsIDgzMjM3LCA2MDU5LCAxMjY5ODUsIDU1MjM1LCAxOTQ4MTcsIDg1MzUsIDEyODYzOCwgCi0gICAgNjUxOTYsIDEyNTA4NCwgNjYwMzIsIDExNDg4LCAxMjA0ODEsIDEyMDc4NiwgNDIyMzMsIDY0MTQwLCA5OTQ2LCA3NjY3LCAKLSAgICAxOTQ3OTIsIDExODIyLCAxMjg1OTEsIDExMTM1LCA5ODM2MDAsIDAsIDE3ODgsIDE1NzksIDEyMDQ4MiwgNzEyOTgsIDAsIAotICAgIDk4MzQ2MSwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgNzEwNjEsIDkyNTQ1LCAxMjg1LCA2NDg4MiwgNDEyNDIsIDcwMDg2LCAKLSAgICA4MzExMSwgMTI2NDAsIDgzMTEyLCA3NDAxLCAwLCAxMjYyNSwgNjgxOTgsIDAsIDcwMDgyLCAzOTQwLCA0MTU5NywgNDM3NTQsIAotICAgIDMzOTYsIDEyNjQyLCA4NjY1LCA5ODM2MTAsIDk4MzYwOSwgMTI2MzAsIDE2NTMsIDkxNzgxNSwgMTAxNTMsIDAsIDYxNjYsIAotICAgIDcwODI1LCAxMTg5ODksIDEyOTQwOSwgODgxNSwgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTE4MCwgCi0gICAgMTE5MzE4LCAyMTQyLCA2ODQ1NCwgNDI0ODUsIDk0MDEyLCA3ODc4LCA4MjExLCA0MjI5MywgNjQzNzcsIDEyMDQ3OCwgCi0gICAgOTI2NDMsIDEyMTExOCwgMTk0NjczLCAxMjAzMiwgMCwgOTcyNSwgOTgzNDkxLCA3ODQzMSwgNTI2MywgMTI4MTgsIDc4NDMwLCAKLSAgICA0MTkzOSwgMTAwMjIsIDY1Mzg3LCA3ODQxOSwgNDI3NzcsIDEwMTM5LCA5ODAsIDQzNjk4LCA2NTM4NiwgMjIwOCwgNjg4NDgsIAotICAgIDQzNzAxLCA0MzE5OCwgNzE4NCwgOTI1NDIsIDEyODQyMywgMTI4ODc1LCAxMDA4NSwgNzQ5NzksIDAsIDY3Mzk0LCA2NjM0LCAKLSAgICA5MjM3MywgMTI1MDg1LCA4MzQxMywgODA3MiwgMTE5MzIxLCA0MzcwMCwgMCwgODg3MiwgNzc4MywgOTE3OTkxLCAxMjM5OCwgCi0gICAgODIzNywgMCwgMCwgMTIzOTUsIDAsIDEyNjk3NywgNzQ4OTEsIDk5MTQsIDIyMTcsIDkyMzIzLCA3Mzk3NSwgNjM2NywgCi0gICAgNjM1MSwgNjY2ODgsIDkyNzQwLCA2ODc2NiwgMCwgNjQ3MzUsIDQxMjQzLCA5MjE5OSwgNzgwOCwgMTgyOSwgMTI2NTQxLCAKLSAgICA0MTkzNywgNDM1OCwgNDMyNzIsIDYzNTMsIDAsIDAsIDEyMDQyMiwgOTMwNDUsIDE3MTAsIDEyMDE0MCwgMCwgNjU2MDcsIAotICAgIDY3MjM0LCA0OSwgNjYyNywgMCwgNjI1OCwgMTA2ODMsIDc4NjcyLCA5NzQxLCA3ODMyOSwgNTY0OSwgNzg0NDEsIDQzNDQzLCAKLSAgICA2NDQxOCwgMTY0MywgNjUyMTMsIDg0MDUsIDM0NzAsIDY3MjQ0LCAxMzIxMywgNDI0NTIsIDc4MzMxLCA3ODAxMywgNzg0NDUsIAotICAgIDEyNTEyNCwgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIDQxMTMyLCA2NTY3NSwgMTA4MCwgCi0gICAgNzA4MjQsIDk4ODYsIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCA3MTA4MiwgMTI2MzIsIDEwODYsIDE4NjksIAotICAgIDc4Njg1LCA3NjgwLCAwLCA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgMTA5MSwgMTI2MzgsIDc5NzcsIAotICAgIDQ1MDEsIDQxMDk5LCAwLCA2NjMwOSwgMTIwMTQxLCA5Mjc1OCwgMTQ5NCwgMTEzNzE2LCAxMjY2MTMsIDAsIDExNjkzLCAKLSAgICA3MTI1NSwgMTA0OTQsIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAxMTM3MjcsIDAsIDAsIDc4NzcxLCA2NDU4MiwgMCwgCi0gICAgNzM3OTQsIDY3Mzk1LCA4MDIyLCAxMjA5ODksIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCA2Njg4MywgOTE3OTk0LCA5MzAzNSwgCi0gICAgNzUwMDcsIDU1NzAsIDE4ODEsIDcyMTAsIDEyMDQyNSwgMTAxMiwgNDM3NTIsIDAsIDEyMDcwOSwgNzIwOCwgNjY0NDIsIAorICAgIDkyMjMxLCA3NDc2MSwgNjQzMjMsIDEyNzMzNSwgNzQxMDIsIDIyNjYsIDExMTMyLCAzMTAsIDEyMDkyNCwgNDEyODEsIAorICAgIDEwOTc2LCAxMDEwNjksIDcxMzI1LCAxMjUyNzksIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMTAxMDg3LCA5MDEyLCAKKyAgICAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgMTI3MzAsIDY1MTYzLCA2NDI2MCwgMzc0LCA0MzE5NSwgODE2LCA5Mjc4MywgCisgICAgMCwgODMxOTEsIDQxOTM0LCA3NDY1LCA3NDYxNSwgOTI3NTIsIDcwNjY2LCA0NzE1LCA2MTAxLCA3MTA4OSwgNDE5MzYsIAorICAgIDgyOTY3LCA0ODc5LCA0Mzk2NSwgNjU0NDYsIDAsIDMwNywgMTI3MTQ3LCA5NTg1LCA1Mzc0LCAxMjc5NjIsIDEyODA1OSwgCisgICAgMTAwNDcyLCAxMjkxODksIDEwMDQ3MSwgMTIwMzkwLCA3MDcyNywgNjU1NjcsIDEwMDk2NCwgMTkyOSwgMTIwOTg0LCAKKyAgICAxMjE0MiwgMTk0Njk2LCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgNzUwMDMsIDUzNzgsIDc1MDA0LCAKKyAgICAxMjA5NTcsIDQxNDIxLCA3NTAwNSwgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMTI1MDMwLCAyNDk4LCA1ODAwLCAKKyAgICAxMDA4MzQsIDY3NzU4LCAxNzYwLCAyNDIxLCA0NDY5LCAyMzI0LCA4MjgsIDM2MTEsIDc4NDAwLCA3NTcsIDExODUsIAorICAgIDEyODI3NCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIDY4ODQ5LCA3OTk5LCA0Mzk3MSwgMTEyMTcsIDEwMDg0OSwgCisgICAgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCA2NDM3NCwgNDM4MCwgMTI4Mjg0LCA4MzA2MSwgOTk4MiwgNjQzMjQsIAorICAgIDQxMjQwLCA4NjIsIDY0NDY4LCA3ODQ2MiwgMTgxMCwgMzY3MywgNTEzNywgMTk0NjE3LCAxMjA0ODEsIDcyNzcsIDY1NjIyLCAKKyAgICA2NTA2OSwgNzU2NiwgNjQ2ODgsIDY3MTQzLCAxOTQ1OTIsIDc0OTU3LCA0MzkxMiwgMTAwODI1LCA0NzQ4LCA5MjIyOCwgCisgICAgMTAwODI2LCAxMDA4MjksIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDEyMTI3OCwgNzQ1NzYsIDQ0MDE5LCAxOTQ3MjAsIAorICAgIDEyODE4OSwgMzk2NywgNzEwOTgsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIDkxNzc4NSwgODQxMCwgNDQ1NCwgCisgICAgNzIzLCA4MzA4NCwgOTY2LCA0NDQ5LCA5MjMzMCwgOTIyMzgsIDc1MDIyLCA3ODE5LCAyMzIwLCAxMjkzMTIsIDMzOSwgCisgICAgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCA4MzA1NywgODA0NywgMTk1MDUwLCA3ODgyNywgMTI2MzQsIAorICAgIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAxMjQ5MzQsIDc0NDUyLCAxMjA0ODIsIDE1ODQsIAorICAgIDY2NjQ1LCA2MDQ1LCA2NzI5LCA3ODQxNywgNjUyMTgsIDExNTU5LCAxOTQ5ODMsIDc4MDYyLCA3NTM3LCAxMjQ5OTEsIAorICAgIDExMzcwLCAxMjUwOTMsIDEwMzMwLCA3ODc5OCwgMTAzOTQsIDkyMjM2LCA3NDE5NCwgMTAwODA4LCAxMjc5MjksIDk3ODAsIAorICAgIDAsIDExMTE3LCA3NDk5MywgNzc5NTAsIDY3MDkxLCA3MDc0LCA5MjY0OCwgMTk0NTc5LCAxMDA0OTUsIDExNDE0LCA2ODc4MSwgCisgICAgMjUzMSwgMTMwMzQsIDEwMDgxOSwgMTI4NTIzLCA0MjExLCAxMjU5LCA3NTE3LCA3MDg2NiwgNzAxOTgsIDgzMTIyLCAKKyAgICA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgODMxMjUsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAxMDA0OTYsIAorICAgIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDc0MjkzLCA3NDUzMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAKKyAgICAxMDA0OTEsIDQyNzEsIDcyODgxLCAxMDA3OTgsIDY3NjksIDQxNDEwLCAxMDA3OTksIDY0MjYyLCA2NzY3LCA0MTQwNywgCisgICAgNjYyNzMsIDkxNzgxNiwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMDEwODYsIDcyODAzLCA3MDgzMCwgMCwgODMyMzIsIDAsIAorICAgIDY3Njc1LCA5ODM2OTQsIDgzMjM0LCAxMDA1MzQsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCA4MzIyOSwgMTAwNzkxLCAKKyAgICAxMjMzOCwgNDY1MSwgNjczNTUsIDExMjcwLCAwLCA3NDYzMCwgMTE5MzMsIDcwMTA3LCAwLCA0MTkwMywgNDM0NDcsIAorICAgIDExMDAxLCA3MzgyNywgNDIyNTUsIDgzMjQzLCA4MzIzOCwgNjk4MjEsIDQxOTA1LCA2NzM1MCwgMTAwODA2LCAxMDc3NSwgCisgICAgOTc5MywgNTAwOSwgMTI4Nzc0LCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCA2NDUyOSwgNDE0MDgsIAorICAgIDQyODUzLCAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA2NzM0MiwgMTAyMzYsIDY1OTE4LCAKKyAgICA0Mzc4MiwgNzg3NjksIDc4MDYwLCA2NDUwNiwgNjk2NTIsIDEwMDc4MSwgNDc0NywgODMyNTEsIDY5ODQ0LCA0MzIwMCwgCisgICAgNTgzMiwgNzEyMDgsIDgzMjUwLCA1MTQxLCA0MjYwMCwgNzE4NjYsIDQzMjAzLCAxMjcyMDgsIDEwMDU0MSwgNDMyODYsIAorICAgIDEyNjQ5NCwgMTIwNzg5LCA0Mzc3OCwgNzY1NywgNDEzMDUsIDcxMTMyLCA0Mzc4MSwgMTEzMDMsIDY1NTQ3LCAxMjg2MDksIAorICAgIDcwMzEsIDg1OSwgOTIzMTMsIDgzMjYyLCA4MzIzNywgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMTk0ODE3LCA4NTM1LCAKKyAgICAxMjg2MzgsIDY1MTk2LCAxMjI5MTAsIDY2MDMyLCAxMTQ4OCwgNzI4MzgsIDEwMDc4OCwgNDIyMzMsIDY0MTQwLCA5OTQ2LCAKKyAgICA3NjY3LCAxMDA1NDksIDExODIyLCAxMjgzNDksIDExMTM1LCA5ODM2MDAsIDAsIDE3ODgsIDE1NzksIDEwMDUwNywgNzEyOTgsIAorICAgIDAsIDkxNzUzNywgOTgzODM5LCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA3MTA2MSwgOTI1NDUsIDEyODUsIDY0ODgyLCA0MTI0MiwgCisgICAgNzAwODYsIDgzMTExLCAxMjY0MCwgODMxMTIsIDc0MDEsIDEwMDc2NywgMTI2MjUsIDY4MTk4LCA4MzE4NCwgNzAwODIsIAorICAgIDM5NDAsIDQxNTk3LCA3Mjk2LCAzMzk2LCAxMjY0MiwgODY2NSwgOTgzNjEwLCAxMjAyMDgsIDEyNjMwLCAxNjUzLCAKKyAgICAxMDA1NjcsIDEwMTUzLCAxMDA3NzcsIDYxNjYsIDcwODI1LCAxMTg5ODksIDEyOTQwOSwgODgxNSwgNjY2NzMsIDY1MDQ2LCAKKyAgICA5Mjg1LCA5MTMsIDQyMjU5LCAxMTE4MCwgMTE5MzE4LCAyMTQyLCA2ODQ1NCwgNDI0ODUsIDk0MDEyLCA3ODc4LCA4MjExLCAKKyAgICA0MjI5MywgNjQzNzcsIDEyMDQ3OCwgOTI2NDMsIDEyMTExOCwgMTk0NjczLCAxMjAzMiwgMTAwNzcxLCA5NzI1LCAxMDA3NzMsIAorICAgIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCA0Mjc3NywgMTAxMzksIDk4MCwgCisgICAgNDM2OTgsIDY1Mzg2LCAyMjA4LCA2ODg0OCwgNDM3MDEsIDQzMTk4LCA3MTg0LCA5MjU0MiwgMTI4NDIzLCAxMDA1MjcsIAorICAgIDEwMDg1LCA3NDk3OSwgMCwgNjczOTQsIDY2MzQsIDkyMzczLCAxMjUwODUsIDgzNDEzLCA4MDcyLCAxMDA3NTIsIDQzNzAwLCAKKyAgICAxMjgyMDIsIDczMDQsIDc3ODMsIDkxNzk5MSwgMTIzOTgsIDgyMzcsIDE5NDg5MywgMCwgMTIzOTUsIDEyMDI3OSwgCisgICAgMTI2OTc3LCA3NDg5MSwgOTkxNCwgMjIxNywgOTIzMjMsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgOTI3NDAsIDY4NzY2LCAKKyAgICA5ODM4NDgsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDEyNjU0MSwgNDE5MzcsIDQzNTgsIDQzMjcyLCAKKyAgICA2MzUzLCAwLCAwLCAxMjA0MjIsIDkzMDQ1LCAxNzEwLCAxMjAxNDAsIDAsIDY1NjA3LCA2NzIzNCwgNDksIDY2MjcsIAorICAgIDk4MzEyMCwgNjI1OCwgMTA2ODMsIDc4NjcyLCA5NzQxLCA3ODMyOSwgNTY0OSwgNzg0NDEsIDQzNDQzLCA2NDQxOCwgMTY0MywgCisgICAgNjUyMTMsIDg0MDUsIDM0NzAsIDY3MjQ0LCAxMzIxMywgNDI0NTIsIDc4MzMxLCA3ODAxMywgNzg0NDUsIDEyNTEyNCwgCisgICAgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIDQxMTMyLCA2NTY3NSwgMTA4MCwgNzA4MjQsIDk4ODYsIAorICAgIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCA3MTA4MiwgMTI2MzIsIDEwODYsIDE4NjksIDc4Njg1LCA3NjgwLCAKKyAgICAxMDEwOTMsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIAorICAgIDAsIDY2MzA5LCAxMjAxNDEsIDkyNzU4LCAxNDk0LCAxMTM3MTYsIDEyNjYxMywgMCwgMTE2OTMsIDcxMjU1LCAxMDQ5NCwgCisgICAgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDExMzcyNywgMTI4Nzg5LCAwLCA3ODc3MSwgNjQ1ODIsIDEwMTA5OCwgCisgICAgNzM3OTQsIDY3Mzk1LCA4MDIyLCAxMDEwOTksIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCA2Njg4MywgOTE3OTk0LCA5MzAzNSwgCisgICAgNzUwMDcsIDU1NzAsIDE4ODEsIDcyMTAsIDEyMDQyNSwgMTAxMiwgNDM3NTIsIDAsIDEwMTA5NCwgNzIwOCwgNjY0NDIsIAogICAgIDU1NjksIDE5NTAwNywgNDIzMzksIDkyOTk3LCA2MDYzLCA2Nzg4OCwgNjk5ODEsIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIAotICAgIDkyMjAxLCA2NDcyNywgOTE2MCwgNzAzMDEsIDAsIDkyOTA1LCA5MjE4MCwgMTA1MDMsIDcwMzg3LCAzNDIzLCAzODcwLCAKLSAgICA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCA5MjIwNCwgOTgzMTE2LCAwLCAKLSAgICA3NDk2MSwgNzgzMzMsIDEyMDExNywgMTIwMTE4LCAxMjAwOTksIDkyMzg1LCA2NTA4NywgNTU3MSwgMzY3NCwgOTc0MCwgCi0gICAgOTEyMSwgNTU2OCwgNzE0NjQsIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIDExMzcwMCwgNTg5LCA3MDUwLCAKLSAgICA5ODM4MDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCAKLSAgICA5MjMzMSwgMTIxMzU4LCA4NTgzLCAxMjExMjMsIDU4NDcsIDY5MjgsIDEyODA3NCwgMCwgMCwgMCwgMCwgNjY1OTIsIAotICAgIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgNDI1NjEsIDEyMDYyNiwgMTI5MTcwLCA2Njg1NCwgODEyMCwgNzAzMTEsIAotICAgIDE5NDU4NSwgMCwgNzAzMDgsIDQxMDYzLCAxMjA0MTcsIDEwNjY0LCAwLCA4MzY5LCAwLCA0NTUxLCAxOTQ5NjQsIDMzNjksIAotICAgIDc0OTcxLCAxMjEwOTQsIDk2NzMsIDY2MzM0LCA2NTU4MCwgMTA0NzgsIDExODk2MCwgMTI1MTcsIDU1NywgOTQ1NywgCi0gICAgMTIwMzQsIDY4NDk2LCA2MzU1LCAxMjUxOSwgNDEwMDQsIDAsIDc0OTM3LCA3NDA5NCwgOTE3ODg4LCAxMjUwNjAsIDc3OTcwLCAKLSAgICA5MjE3MSwgMTI3MjE5LCAxMjgxNzUsIDEyMTExLCAzOTI3LCAwLCAxMjUxNSwgMTQ3NCwgNjc4OTMsIDU0OTIsIDY5MjMsIAotICAgIDkyMjgxLCAxMDQ0MSwgNzM4MzYsIDAsIDQzOTkwLCA1NDkzLCAwLCA3NDMxOSwgMCwgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAKLSAgICAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCAxMjY2MzYsIDU4NTMsIDEzMDYzLCAxMDM2MywgOTgzODk4LCAxMjk1NiwgCi0gICAgMTEzNjY2LCAxMjA3MjksIDExMzE0LCA5MTc1ODIsIDEyMDYwLCAxMjg2NDgsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMCwgCi0gICAgMTA1MTQsIDY1NTE3LCA3NDM5NSwgMjcwNywgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCAKLSAgICA3ODM5NiwgNjgyNDcsIDI2OTUsIDQyMTcxLCA3MDgwOSwgNjgzMzQsIDAsIDY3NjE3LCAxMTg5NzEsIDAsIDI2OTMsIAotICAgIDEyMTI1LCAxMjc2NiwgMTIwNDA5LCAxMTY0LCAxMTM3MjksIDcwMjgzLCA0MTkxOCwgNzc4NDksIDY3MTUwLCA4Njg3LCAKLSAgICA2NjAwOSwgMTIxNzgsIDcwNTMsIDkyNTQwLCA3NDY5LCAwLCA1MjQ4LCAxMjIxOCwgNjk5ODgsIDY0MjcsIDQyODg0LCAKLSAgICA0MTEyMywgMTExNzYsIDAsIDQyODczLCA0MTEyNiwgOTk5MSwgNDExMjgsIDc0MzcxLCAxMjcwMzEsIDk4MzkzMiwgOTg3MywgCi0gICAgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCA0Mjg0MywgNjU5MSwgOTM0MCwgMTI4ODQxLCAxNTg5LCAxMjg2OTEsIAotICAgIDI5NiwgNjc3MTIsIDc4ODUyLCAxMjE0MDksIDY3ODQxLCA3NDM3MCwgMTI4NTA0LCA4OTIyLCAxMjgwNjgsIDQzODI5LCAKLSAgICAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIDY1NTkwLCA1Mjk5LCAKLSAgICA3ODgzNywgMTE0NzMsIDU0NDksIDEyNTIsIDEyNzMyOCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIAotICAgIDkxNzU2OSwgNjgzMjAsIDEyMjMsIDE2NDIsIDE3NCwgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgCi0gICAgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgNzQ1OTgsIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgODA3MCwgCi0gICAgNjE1MCwgNjYzNiwgNDM3MCwgMTI4NjE5LCAxMjkxNTgsIDc0MTc4LCA3NDU4NywgNzQxMTcsIDE5NTA5NCwgMCwgMTEzNzQ4LCAKLSAgICA0OTg2LCAxMjE4OSwgMTI3NTEyLCA2NzY0OCwgMTIwNDk5LCA5NDAwMSwgNDI1NywgMTIxMDQsIDcxMTc2LCA2MjIwLCAKLSAgICA5MDA0LCA2NTU2MSwgOTgzODgxLCA3Nzk0OSwgMCwgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDgzNDUzLCA2OTY3OSwgNjk2ODQsIAotICAgIDk4OTAsIDc4NTYxLCAxMjk3MSwgNzg0NTMsIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDcwMDUxLCA3MTg5NywgODM0NTEsIDAsIAotICAgIDk2MzUsIDEyNjAwLCA4ODcxLCA2NzM2NiwgNjg0OTEsIDAsIDY0NjksIDc0MjI3LCAxMTg5MDAsIDY1MzA0LCA0Njc5LCAKLSAgICAxMDIzMCwgNjQzMDAsIDY0ODY3LCAzNDI3LCA0MjQwLCA2NzM3NiwgNjczNzUsIDY3Mzc0LCA2NzM3MywgNDI5MTYsIAotICAgIDEyOTE1NSwgMTI4Mjc5LCA2NzM3NywgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCA2NzM3MiwgNjczNzEsIDM0OTQsIAotICAgIDY3MzY5LCA2NTU1LCAxMjkxNDgsIDc3OTc2LCAwLCAwLCA3ODU2NiwgMCwgOTgzMTg5LCA2NTg5OCwgOTgzMjQ2LCA2NTMxMiwgCi0gICAgNTQ0NywgMCwgMTI4OTUsIDY1NTkzLCA0MDEwLCA4MzE1NCwgNDExMDYsIDc0MzU3LCA2NDQ0OCwgOTM5OTQsIDQxMTA1LCAKLSAgICA3NDExNCwgNjU4MjAsIDYyMzIsIDY4MjMzLCAxMjY2MjUsIDAsIDQzNjA4LCAxMTkwOTEsIDc4MTE4LCA2NTM4LCA0MzM1LCAKKyAgICA5MjIwMSwgNjQ3MjcsIDkxNjAsIDcwMzAxLCAxOTUwNzEsIDkyOTA1LCA5MjE4MCwgMTA1MDMsIDcwMzg3LCAzNDIzLCAKKyAgICAzODcwLCA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCA5MjIwNCwgCisgICAgOTgzMTE2LCAxMjEwODQsIDc0OTYxLCA3ODMzMywgMTE5MTMyLCAxMjAxMTgsIDEyMDA5OSwgOTIzODUsIDY1MDg3LCA1NTcxLCAKKyAgICAzNjc0LCA5NzQwLCA5MTIxLCA1NTY4LCA3MTQ2NCwgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgCisgICAgMTEzNzAwLCA1ODksIDcwNTAsIDk4MzgwMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgCisgICAgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIDkyMzMxLCAxMjEzNTgsIDg1ODMsIDEyMTEyMywgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAKKyAgICAwLCAwLCAwLCA2NjU5MiwgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAxMjkxNzAsIAorICAgIDY2ODU0LCA4MTIwLCA3MDMxMSwgMTI5MTU0LCAwLCA3MDMwOCwgNDEwNjMsIDEyMDQxNywgMTA2NjQsIDAsIDgzNjksIAorICAgIDEyODI3OCwgNDU1MSwgMTIyOTEyLCAzMzY5LCA3NDk3MSwgMTIxMDk0LCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAKKyAgICAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCA2ODQ5NiwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCA3NDkzNywgCisgICAgNzQwOTQsIDEyNDk0OCwgMTAwNDc4LCA3Nzk3MCwgOTIxNzEsIDEyNzIxOSwgMTI1MjU0LCAxMjExMSwgMzkyNywgMTE5ODgwLCAKKyAgICAxMjUxNSwgMTQ3NCwgNjc4OTMsIDU0OTIsIDY5MjMsIDkyMjgxLCAxMDQ0MSwgNjY3OTgsIDk4MzgzMSwgNDM5OTAsIDU0OTMsIAorICAgIDk4MzYxOCwgNzExMzAsIDkxNzc2NiwgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCAKKyAgICAxMjY2MzYsIDU4NTMsIDEzMDYzLCAxMDM2MywgOTgzODk4LCAxMjk1NiwgMTEzNjY2LCAxMjA3MjksIDExMzE0LCAxMjUyNzEsIAorICAgIDEyMDYwLCAxMjg2NDgsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMTk1MDk3LCAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCAKKyAgICA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIDc4Mzk2LCA2ODI0NywgMjY5NSwgNDIxNzEsIAorICAgIDcwODA5LCA2ODMzNCwgOTgzNDQ0LCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAxMjEyNSwgMTI3NjYsIDEyMDQwOSwgMTE2NCwgCisgICAgMTEzNzI5LCA3MDI4MywgNDE5MTgsIDc3ODQ5LCA2NzE1MCwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCA5MjU0MCwgCisgICAgNzQ2OSwgNzI3OTUsIDUyNDgsIDEyMjE4LCA2OTk4OCwgNjQyNywgNDI4ODQsIDQxMTIzLCAxMTE3NiwgMCwgNDI4NzMsIAorICAgIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzA3MDMsIDEyNzAzMSwgMTI2NTA4LCA5ODczLCAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIAorICAgIDIwNTMsIDQyODQzLCA2NTkxLCA5MzQwLCAxMjg4NDEsIDE1ODksIDEyODY5MSwgMjk2LCA2NzcxMiwgNzg4NTIsIDEyMTQwOSwgCisgICAgNjc4NDEsIDcxMzE0LCAxMjg1MDQsIDg5MjIsIDEyODA2OCwgNDM4MjksIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIAorICAgIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAxMzI2MiwgNjU1OTAsIDUyOTksIDcwNzMyLCAxMTQ3MywgNTQ0OSwgMTI1MiwgCisgICAgMTI3MzI4LCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgNTI5NSwgOTE3NTY5LCA2ODMyMCwgMTIyMywgMTY0MiwgMTc0LCAKKyAgICA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIDQxNDEzLCAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCAKKyAgICA3NDU5OCwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCA2MTUwLCA2NjM2LCA0MzcwLCAxMjg2MTksIDEyOTE1OCwgCisgICAgNzQxNzgsIDc0NTg3LCA3NDExNywgMTk1MDk0LCAwLCAxMTM3NDgsIDQ5ODYsIDEyMTg5LCAxMTk1OTksIDY3NjQ4LCAKKyAgICAxMjA0OTksIDk0MDAxLCA0MjU3LCAxMjEwNCwgNzExNzYsIDYyMjAsIDkwMDQsIDY1NTYxLCA5ODM4ODEsIDc3OTQ5LCAwLCAKKyAgICA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgODM0NTMsIDY5Njc5LCA2OTY4NCwgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgCisgICAgOTI1NTYsIDczODk4LCAxMTk3OSwgNzAwNTEsIDcxODk3LCA4MzQ1MSwgMTI3MTg3LCA5NjM1LCAxMjYwMCwgODg3MSwgCisgICAgNjczNjYsIDY4NDkxLCAwLCA2NDY5LCA3NDIyNywgMTE4OTAwLCA2NTMwNCwgNDY3OSwgMTAyMzAsIDY0MzAwLCA2NDg2NywgCisgICAgMzQyNywgNDI0MCwgNjczNzYsIDY3Mzc1LCA2NzM3NCwgNjczNzMsIDQyOTE2LCAxMjkxNTUsIDEyNzQ4OSwgNjczNzcsIAorICAgIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgNjczNzIsIDY3MzcxLCAzNDk0LCA2NzM2OSwgMzQxNiwgMTI5MTQ4LCA3Nzk3NiwgCisgICAgMTk1MDEwLCA5ODMxOTIsIDc4NTY2LCAwLCAxMjcwNDcsIDY1ODk4LCA5ODMyNDYsIDY1MzEyLCA1NDQ3LCAxMDA4OTUsIAorICAgIDEyODk1LCA2NDM4MiwgNDAxMCwgODMxNTQsIDQxMTA2LCA3NDM1NywgNjQ0NDgsIDkzOTk0LCA0MTEwNSwgNzA2NzcsIAorICAgIDY1ODIwLCA2MjMyLCA2ODIzMywgMTAxMTA0LCAxMDExMDMsIDQzNjA4LCAxMDExMDUsIDc4MTE4LCA2NTM4LCA0MzM1LCAKICAgICA3ODM2NCwgMzk0MSwgNDExMjIsIDExMDYxLCA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIDEyMTU1LCA5ODM2NzQsIAotICAgIDQyODc4LCAxMTUwMCwgNjc0MDUsIDEyODE1MiwgNzQ1NzgsIDAsIDY1ODMyLCAxMjg2NjcsIDAsIDcwNzg5LCA2NzMzMywgCi0gICAgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDY3MzM2LCA5ODM4NzksIDkyMzA3LCAwLCAwLCA1MTMzLCAKLSAgICA2NzM4MiwgMCwgOTUwMCwgMCwgNDk1NywgNjQ3NDEsIDI0MjIsIDIyMTIsIDk4MzA4MCwgNjczODEsIDY3MzgwLCAyNDk2LCAKLSAgICAxMTUxNiwgOTQ0LCA2NzgxNywgMzg5MCwgMTIxNjgsIDE0MzgsIDY3ODEzLCA2ODMzNSwgNzAwMDMsIDQxOTQ3LCAxMjIwLCAKLSAgICAxMjA4MjgsIDc0OTQ2LCA3MDg1NCwgNzQwNTgsIDE1NzEsIDQyNjMwLCA0MTk0OSwgNDI4MDUsIDgyNzAsIDk0MywgNTY0LCAKLSAgICAwLCAzMTIsIDQxOTgwLCA5ODM5NDQsIDEyODI5NSwgNzA3OTcsIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgCi0gICAgNjk1NCwgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIAotICAgIDgyOTQ4LCAwLCAxOTA2LCAxMjExNjksIDExNTMyLCA3NDA3MywgMTI3MzM4LCAwLCAxOTg1LCA2Mjk2LCA5NTgyLCA3NTA3MSwgCi0gICAgNjQyODcsIDEyODQwNiwgNzgxMTUsIDExNDI4LCAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMCwgNjgwODgsIAotICAgIDc3MDMsIDg4NDAsIDgwMzUsIDEyMDcxMSwgMCwgOTIyMzAsIDk4MzM1NywgNjEyOSwgMTI4NDM3LCA3ODU4NiwgMTI4MjY4LCAKLSAgICAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDExMjA2LCAxMzEzNiwgMCwgMCwgNzAxMDIsIDYzODg2LCA3MDQ1MCwgOTYwNSwgCi0gICAgNzEzMDgsIDEzMjIwLCA2NzM0OCwgNjczNTQsIDU1MTQsIDc0OTYwLCA5MjI4LCA2NzM0OSwgNjczNTYsIDY3MzQ2LCA1MjQwLCAKLSAgICA5ODExLCAxMDAxMiwgMzA5NiwgMCwgMCwgNzQ1MjYsIDY2Njc2LCA2NTg3MywgMCwgMTI4MTc5LCAwLCA5NTAxLCAxMjA4MzIsIAotICAgIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgNjg3NTksIAotICAgIDcwMzEyLCAxOTUwODUsIDY4ODIwLCAxMjE5MywgNzA0MDAsIDEyNzI0MCwgMTIxMzczLCAwLCA5ODMzNTUsIDE5OTM1LCAKLSAgICAxMjA3MzMsIDkyMTYyLCA2ODgwMSwgMTI3OTU1LCA4MzEzMywgOTMwNTcsIDUyNzUsIDEyMDE5NSwgMTI4NjMyLCA4NjM3LCAKLSAgICA0MzY4MiwgMCwgMzc4OSwgNjM4ODAsIDExNDcxLCA0MzU1NCwgNjU4NjIsIDExNDc0LCA2NjMzMiwgNjY2MDMsIDY4Nzg0LCAKLSAgICAyNDI2LCAxMjA0MiwgOTIxOTQsIDk4MzkxMSwgOTUzNywgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgCi0gICAgNTUyMjQsIDQ5ODEsIDc0NjQ0LCAwLCA0MTY0NiwgMTE2NjcsIDQyNjg2LCA3NDk5MSwgNDIzNjIsIDY0Njg2LCA0NDk5LCAKLSAgICA0MTY0OSwgNzU4OSwgMTI4Nzc2LCAwLCAzMjM3LCAwLCA2Njg5NSwgNjgyOTYsIDg1NDEsIDc4Mjk4LCA3MDAzNCwgNDE4NjYsIAotICAgIDAsIDk4MzgxNCwgOTQwNTYsIDExMTc0LCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgODI5OSwgCi0gICAgNDE5NDUsIDcxMzIsIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAxMjg2NzksIDQxNjk5LCAKLSAgICAxMDc2MiwgNDM3ODAsIDEyOTk5LCAxMTkyNDUsIDEyODQ5NCwgODEwNiwgNDEyOCwgMCwgNjI3NCwgNDQ5NCwgOTgzMDgyLCAKLSAgICA0MDEyLCAxMDM5NSwgOTgzNTkxLCA0MzYzMywgNjU0NDcsIDc4MjYwLCAxMjA5NzMsIDExMDA0LCA2OTUsIDczOSwgNjk2LCAKLSAgICA3NjExLCAxMjEwNzMsIDQyNzU1LCA3NDgwMiwgOTIyNywgNzUwNiwgNzUxMCwgNjk5MzcsIDY5MSwgNzM4LCA3NTExLCAKLSAgICA3NTEyLCA3NTE1LCAzODY4LCA2ODgsIDQxODQ3LCA2OTAsIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCAxMjczNTMsIAotICAgIDEyMDE2NiwgMTI4Njg4LCAzOTg1LCA2NjQyNSwgNjU4NjAsIDQxODUxLCA3MDUxLCA2OTc3NywgNDY4MiwgNzE4NzMsIAotICAgIDEyODA5LCA2NDA2LCA0Njg1LCA5MjUwNSwgMTA4NzksIDEwMzQ3LCA0NjgwLCA2MzQxLCAwLCAzODUxLCA4MTMyLCA3NDMyNSwgCi0gICAgMTE5MjYzLCAxMjA4NTUsIDEyNzk0OCwgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAxOTQ4NTUsIDAsIDQyNjU3LCA3MTA3NSwgCi0gICAgNzY0MywgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDk4MzE3NSwgMTE3MTcsIDc2NTAsIDEwNTk0LCA2NDk1MSwgCi0gICAgNzY0NywgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCA3ODA4MiwgOTY1MSwgMTI2NDc1LCAzODkxLCAxMjcyMDUsIDAsIDIzMzcsIAorICAgIDQyODc4LCAxMTUwMCwgNjc0MDUsIDEyODE1MiwgNzQ1NzgsIDAsIDY1ODMyLCAxMjY5NzgsIDAsIDcwNzg5LCA2NzMzMywgCisgICAgMTE5MjMwLCA0NTg2LCAxOTQ5MjIsIDM1MCwgMTA5NTEsIDEwMTA4MSwgNTA5LCA2NzMzNiwgMTAwOTA0LCA5MjMwNywgCisgICAgMTAwOTAzLCAwLCA1MTMzLCA2NzM4MiwgMTI4ODI3LCA5NTAwLCAxMDA5MDYsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCAKKyAgICA5ODMwODAsIDY3MzgxLCA2NzM4MCwgMjQ5NiwgMTE1MTYsIDk0NCwgNjc4MTcsIDM4OTAsIDEyMTY4LCAxNDM4LCA2NzgxMywgCisgICAgNjgzMzUsIDcwMDAzLCA0MTk0NywgMTIyMCwgMTIwODI4LCA3NDk0NiwgNzA4NTQsIDc0MDU4LCAxNTcxLCA0MjYzMCwgCisgICAgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgOTgzOTQ0LCAxMjgyOTUsIDcwNzk3LCA4ODc3LCAKKyAgICAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIDY5NTQsIDc4NjU3LCA0MTEyMCwgNjUxMjEsIDEwODYyLCA2MDYwLCAKKyAgICA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCA4Mjk0OCwgMCwgMTkwNiwgMTIxMTY5LCAxMTUzMiwgNzQwNzMsIAorICAgIDEwMTA2OCwgMTAxMDY3LCAxOTg1LCA2Mjk2LCA5NTgyLCA3NTA3MSwgNjQyODcsIDEyODQwNiwgNzA3MTcsIDExNDI4LCAKKyAgICAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMTAxMDc2LCA2ODA4OCwgNzcwMywgODg0MCwgODAzNSwgCisgICAgMTIwNzExLCAxOTQ2MDIsIDkyMjMwLCA5ODMzNTcsIDYxMjksIDEyNzA2NSwgNzg1ODYsIDEyODI2OCwgMTk0OTY1LCA3ODc0LCAKKyAgICA4NjgxLCA3MjgwMCwgMTEyMDYsIDEzMTM2LCAwLCAxMjkzMDUsIDcwMTAyLCA2Mzg4NiwgNzA0NTAsIDk2MDUsIDcxMzA4LCAKKyAgICAxMzIyMCwgNjczNDgsIDY3MzU0LCA1NTE0LCA3NDk2MCwgOTIyOCwgNjczNDksIDY3MzU2LCA2NzM0NiwgNTI0MCwgOTgxMSwgCisgICAgMTAwMTIsIDMwOTYsIDkxNzgwOSwgMCwgNzQ1MjYsIDY2Njc2LCA2NTg3MywgMTk0NjA4LCAxMjgxNzksIDEwMDkxOCwgCisgICAgOTUwMSwgMTIwMjc1LCAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAxMDA5MjAsIDE0NjcsIDEwMTU4LCAKKyAgICAxMDA0MCwgNzQwOTYsIDk1MTksIDY4NzU5LCA3MDMxMiwgMTAxMDUyLCA2ODgyMCwgMTIxOTMsIDcwNDAwLCAxMjcyNDAsIAorICAgIDEyMTM3MywgNzI4MTcsIDk4MzM1NSwgMTk5MzUsIDEyMDczMywgOTIxNjIsIDY4ODAxLCAxMDA2ODIsIDgzMTMzLCA5MzA1NywgCisgICAgNTI3NSwgMTAxMDYzLCAxMjg2MzIsIDg2MzcsIDQzNjgyLCAxMjg1NzYsIDM3ODksIDYzODgwLCAxMTQ3MSwgNDM1NTQsIAorICAgIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCA2ODc4NCwgMjQyNiwgMTIwNDIsIDkyMTk0LCAxMjExODcsIDk1MzcsIAorICAgIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIDU1MjI0LCA0OTgxLCA3NDY0NCwgMCwgNDE2NDYsIAorICAgIDExNjY3LCA0MjY4NiwgNzQ5OTEsIDQyMzYyLCA2NDY4NiwgNDQ5OSwgNDE2NDksIDc1ODksIDEyODc3NiwgMTI4MjcxLCAKKyAgICAzMjM3LCAwLCA2Njg5NSwgNjgyOTYsIDg1NDEsIDc4Mjk4LCA3MDAzNCwgNDE4NjYsIDAsIDEyNzUwOSwgOTQwNTYsIAorICAgIDExMTc0LCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgODI5OSwgNDE5NDUsIDcxMzIsIDQxOTQxLCAKKyAgICAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAxMjg2NzksIDQxNjk5LCAxMDc2MiwgNDM3ODAsIAorICAgIDEyOTk5LCAxMTkyNDUsIDcwNjg5LCA4MTA2LCA0MTI4LCA5ODM3NTEsIDYyNzQsIDQ0OTQsIDk4MzA4MiwgNDAxMiwgCisgICAgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCA3ODI2MCwgMTIwOTczLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgNzYxMSwgCisgICAgMTIxMDczLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgNzUxMiwgCisgICAgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgMTI3MzUzLCAxMjAxNjYsIAorICAgIDEyODY4OCwgMzk4NSwgNjY0MjUsIDY1ODYwLCA0MTg1MSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDcxODczLCAxMjgwOSwgNjQwNiwgCisgICAgNDY4NSwgOTI1MDUsIDEwODc5LCAxMDM0NywgNDY4MCwgNjM0MSwgMTI1MjE3LCAzODUxLCA4MTMyLCA3NDMyNSwgMTE5MjYzLCAKKyAgICAxMjA4NTUsIDEyNzk0OCwgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAxOTQ4NTUsIDAsIDQyNjU3LCA3MTA3NSwgNzY0MywgCisgICAgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDk4MzE3NSwgMTE3MTcsIDc2NTAsIDEwNTk0LCA2NDk1MSwgNzY0NywgCisgICAgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCA3ODA4MiwgOTY1MSwgMTI2NDc1LCAzODkxLCAxMjcyMDUsIDk4MzgwMywgMjMzNywgCiAgICAgMTczNSwgNzQzMjQsIDExMTM0LCAyMzYzLCAxMjEwMDgsIDkyNDQzLCA0MzU2MSwgNjc3MDYsIDEyODAzMiwgNzQxNDYsIAogICAgIDE4NjAsIDc0OTUsIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCA3ODc1MywgMTIwMzQ3LCA3NzI3LCAKLSAgICAwLCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIDc2OTAsIAotICAgIDAsIDEyNTMzLCA5ODM3OTYsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAxMjg0NDQsIDc0ODAwLCA3MTA1MSwgNjc5NzQsIAotICAgIDEwODU5LCAxMjg2NTAsIDk4MzgwMSwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCA5ODM1ODMsIDc0NTkyLCA4ODUwLCAKLSAgICA3NDI3NSwgOTIzOCwgMTA2MTcsIDY4MDYzLCA5MTc5MDksIDkyNjI1LCA5MTc4MDEsIDEyNzkxLCAwLCA5NDA2OSwgCi0gICAgMTI3ODQzLCA0NDQ3LCA3MTA2NSwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDk4MzQ0OSwgNzQ2MzksIDEyNzkwLCAKLSAgICA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAxMTkyMzksIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIAotICAgIDQxMzEwLCAxMjA3MzAsIDQxMzk5LCAwLCAwLCA1NTI1OCwgMCwgMTI2OTAsIDEyNzc2MywgMCwgNDM2NzIsIDEyNzg0MCwgCi0gICAgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCA5ODM4MDgsIDI3OCwgMTIxMjA0LCA0MTQwNSwgNDM4NzEsIDAsIDEwMDc3LCAKLSAgICA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAwLCA2MDAyLCA2NzMzNSwgNDM1NTMsIDExMTg5LCA2NzMzOCwgNjczMzcsIAotICAgIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDEyMDI2MywgMTIwOTQwLCA5NDA0MiwgODY0NiwgMTI4MjU3LCA3NzgyOSwgCi0gICAgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDExMzc1OSwgMTk0MCwgMjgwOSwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAKLSAgICAxMDY3OCwgMTAwNDQsIDY4ODQxLCAxMjgxMjEsIDk4MzgxNiwgNjgyOTAsIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIAotICAgIDY2NjE0LCAwLCAwLCAwLCAxMDI5NywgMCwgMzc0MiwgNjczMzEsIDM5NTksIDAsIDEyMDQ2NiwgMCwgMjQ2NywgNjg4MDYsIAotICAgIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCA5ODMyMjAsIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCA5MjEwLCAKLSAgICAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAxMTU0MCwgNDM1NDYsIDY2OTIsIDY4MzcsIDQxMDYwLCAxMjgwMTgsIAotICAgIDQ2NjgsIDkwODMsIDAsIDAsIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgNjczNDAsIDY3MzQ3LCA2NTI1NiwgNjczNDUsIAotICAgIDY3MzQ0LCA5ODMzNTIsIDk4MzI2NiwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIDEyODIzNiwgNjczNTIsIAotICAgIDY3MzUxLCA1NTE2LCAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNjczNTMsIDU0NCwgMTIwNDUsIDYyNzgsIDc0NjMyLCAKLSAgICA1NTE1LCAxMjkxODYsIDEyMDg4NCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDAsIDU1MTcsIDcwMTE2LCA3NDIyNSwgCi0gICAgNzQ4NDEsIDY3ODg0LCAxMjg0MTQsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDEyMDE5OSwgCi0gICAgMTE4ODgzLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDEyNjU0NiwgMTI0ODMsIDEyMzY4LCAKLSAgICA0MTc2OSwgNDI3MjYsIDQxNzY1LCA3MzYxLCA2NjY3LCA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCAKLSAgICA0MjY3NywgNjc4ODksIDkzMDQwLCAxMzExLCAxMjg5NDksIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAKLSAgICAxMjg4ODAsIDY5MTcsIDc4MTU1LCAxMjA4MzcsIDk0OSwgNzc4ODIsIDkxNzk2OCwgNjE0OCwgODYwNSwgNDIyNTMsIAotICAgIDc4MTc3LCA2NjkwNiwgMCwgNDI3MTUsIDcxNDMyLCA3MDI4MiwgOTgzMzczLCA2Mzg3MSwgMCwgNDE3OTYsIDEyNjksIAotICAgIDY1MzAsIDEyMTQxNCwgNjUwNTcsIDcwNDkzLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDY4Mjk5LCA0NDMxLCA0MzMxLCAKLSAgICA5ODM3MjksIDEyODY3NSwgNDE4MzQsIDUyNzksIDEyMTM2MiwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCA5Mjk1OSwgMCwgCi0gICAgNzgxNjUsIDY2MDM2LCA3MDE2NiwgMTIwOTM3LCA2NDI4LCA0MjI3MCwgOTgzNzI2LCA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgCi0gICAgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgMTI4NzQyLCA5NDkzLCA3NDk5MCwgNDEwMTQsIDExNzkzLCAxOTQ5MjAsIAotICAgIDEyMTE5NSwgNzQzOTQsIDQzNDYwLCAxMDY1MywgNDI3MjMsIDk4Mzg1NCwgMTE5NjMyLCA3MDQyNywgNjU2MCwgNzAxNiwgCi0gICAgNzQyNzQsIDY5OTg2LCA0MzU1NiwgMzkyOSwgNjc5NzcsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgCi0gICAgMTI3OTYsIDExOTUzLCAwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKKyAgICA5ODM2NTgsIDg0OTgsIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIDEyNTM0LCAxMjEyNCwgCisgICAgNzY5MCwgMCwgMTI1MzMsIDk4Mzc5NiwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDEyODQ0NCwgNzQ4MDAsIDcxMDUxLCAKKyAgICA2Nzk3NCwgMTA4NTksIDEyODY1MCwgOTgzODAxLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDk4MzU4MywgNzQ1OTIsIAorICAgIDg4NTAsIDc0Mjc1LCA5MjM4LCAxMDYxNywgNjgwNjMsIDkxNzkwOSwgOTI2MjUsIDkxNzgwMSwgMTI3OTEsIDEyODk3NiwgCisgICAgOTQwNjksIDEyNzg0MywgNDQ0NywgNzEwNjUsIDEyNzkzLCAxMjkwMCwgOTIzNzcsIDEwOTUwLCAxMDA4NzgsIDc0NjM5LCAKKyAgICAxMjc5MCwgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTE5MjM5LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIAorICAgIDEyMzE3LCA0MTMxMCwgMTAwODY1LCA0MTM5OSwgMTAwODIyLCAxMjY2NDksIDU1MjU4LCAwLCAxMjY5MCwgMTIwMDgzLCAwLCAKKyAgICA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDExOTY1OCwgMjc4LCAxMjEyMDQsIDQxNDA1LCAKKyAgICA0Mzg3MSwgMTAwODY3LCAxMDA3NywgNjM4NTMsIDcwNjY3LCA0MjU4NiwgOTE3ODg2LCA3NDExNCwgNjAwMiwgNjczMzUsIAorICAgIDQzNTUzLCAxMTE4OSwgNjczMzgsIDY3MzM3LCAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAxMjAyNjMsIDEyMDk0MCwgCisgICAgOTQwNDIsIDg2NDYsIDEyODI1NywgNzc4MjksIDcxMzYwLCAwLCA2NDEzLCA2NTUwLCAxMTM3NTksIDE5NDAsIDI4MDksIAorICAgIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIDEwMDQ0LCA2ODg0MSwgMTI4MTIxLCA5ODMzNTAsIDY4MjkwLCAKKyAgICA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCA2NjYxNCwgMCwgMTIyOTIxLCAxMjc5MTIsIDEwMjk3LCAxOTUwNTcsIAorICAgIDM3NDIsIDY3MzMxLCAzOTU5LCAwLCAxMjA0NjYsIDAsIDI0NjcsIDY4ODA2LCA2MDAzLCA2Mzg0NCwgNjY2MywgODA0MCwgCisgICAgOTgzMjIwLCA0Mzc1OCwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgOTIxMCwgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCAKKyAgICA5MjM2MSwgMTE1NDAsIDQzNTQ2LCA2NjkyLCA2ODM3LCA0MTA2MCwgMTAxMDk3LCA0NjY4LCA5MDgzLCA5ODMyNDQsIDAsIAorICAgIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgNjczNDAsIDY3MzQ3LCA2NTI1NiwgNjczNDUsIDY3MzQ0LCA5ODMzNTIsIAorICAgIDk4MzI2NiwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIDEyMDI1OCwgNjczNTIsIDY3MzUxLCA1NTE2LCAKKyAgICAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNjczNTMsIDU0NCwgMTIwNDUsIDYyNzgsIDc0NjMyLCA1NTE1LCAxMjkxODYsIAorICAgIDEyMDg4NCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDEyMDU0MSwgNTUxNywgNzAxMTYsIDc0MjI1LCA3NDg0MSwgCisgICAgNjc4ODQsIDEyODQxNCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMTIwMTk5LCAxMTg4ODMsIAorICAgIDY3ODc5LCAxMjE0NDgsIDE5MDIsIDY3ODg3LCA5NjM4LCAxMjk3NiwgNzQzOTQsIDEyNDgzLCAxMjM2OCwgNDE3NjksIAorICAgIDQyNzI2LCA0MTc2NSwgNzM2MSwgNjY2NywgNjc4NzQsIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgNDI2NzcsIAorICAgIDY3ODg5LCA5MzA0MCwgMTMxMSwgMTAwODgyLCA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgMTAwNjQzLCAKKyAgICA2OTE3LCA3ODE1NSwgMTIwODM3LCA5NDksIDc3ODgyLCA5MTc5NjgsIDYxNDgsIDg2MDUsIDQyMjUzLCA3ODE3NywgNjY5MDYsIAorICAgIDEwMDY0NCwgNDI3MTUsIDcxNDMyLCA3MDI4MiwgMTAwNjQ3LCA2Mzg3MSwgMTI4Mjk2LCA0MTc5NiwgMTI2OSwgNjUzMCwgCisgICAgMTAxMDQ5LCA2NTA1NywgNzA0OTMsIDUxNDQsIDEyMjIxLCA0MjcxNiwgNjgyOTksIDQ0MzEsIDQzMzEsIDEwMTA0NSwgCisgICAgMTI4Njc1LCA0MTgzNCwgNTI3OSwgMTIxMzYyLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDkyOTU5LCAwLCA3ODE2NSwgCisgICAgNjYwMzYsIDcwMTY2LCAxMDAzODcsIDY0MjgsIDQyMjcwLCA5ODM3MjYsIDk4MzE2MywgNDMwNTksIDQyNjY2LCA1MjU2LCAKKyAgICAxMDY3LCAyNTUsIDEyMTMxLCAxMjg3NDIsIDk0OTMsIDczODk0LCA0MTAxNCwgMTE3OTMsIDEyNjQ2NywgNzg3NDAsIAorICAgIDcwNzI4LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCAxMjUyMTYsIDEwMDY1OCwgNzA0MjcsIDY1NjAsIDcwMTYsIDc0Mjc0LCAKKyAgICA2OTk4NiwgNDM1NTYsIDM5MjksIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIDEyNzk2LCAKKyAgICAxMTk1MywgMTI3MzgwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKICAgICA0Mzg0NSwgNzQzMTUsIDc0MzYxLCA4MjUzLCA4ODE3LCAxMTM2LCA5MTc5MzEsIDQzNTYzLCA5MjIzMiwgMTI4OTE0LCAKLSAgICA2NjQxMCwgNzM5MiwgODIzMCwgOTM2NSwgNzExOTQsIDEyNzEwOSwgOTgzNjA3LCA2NjkxNSwgMTI4NDAyLCA0MDQxLCAwLCAKKyAgICA2NjQxMCwgNzM5MiwgODIzMCwgOTM2NSwgNzExOTQsIDEyNzEwOSwgMTk0ODc4LCA2NjkxNSwgMTI4NDAyLCA0MDQxLCAwLCAKICAgICAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgNDM4MzQsIDExOTg4NCwgNDQwMDQsIDcxNDIsIDExOTg4MSwgMTIzNTAsIAogICAgIDY1NTU0LCAxMTk4ODIsIDcxMzA1LCAxMTk4NzYsIDEyNzg1LCA2Mzg2MywgNDM3OTUsIDc3NzAsIDEwNzEyLCA2NDg1MywgCiAgICAgMTI2ODYsIDQzODMxLCA0MjM3NSwgNjU3ODAsIDEyNDk0NCwgNjYzNTIsIDEwNDcwLCA3MTExOSwgMTEwNTksIDEwNzkxLCAKLSAgICA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAxMjcyNTQsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIDQ0MDA5LCAKKyAgICA3MjcyNCwgNDUwLCAxMTkzMjgsIDEyNzI1NCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgNDQwMDksIAogICAgIDc4Mjg0LCA2NjMzOCwgNjYzOTUsIDkxNzgzMiwgMTgzOSwgMTE4Nzk5LCA5ODMyMTksIDEwOTI3LCAxNzAxLCA5ODM2NjQsIAogICAgIDIzODgsIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgMTE5ODY1LCA4OTUsIDU0NDQsIDQxNzYzLCA2NDg4OSwgNzE0MywgCi0gICAgOTI0OTMsIDc4Njc3LCA5ODMxMzcsIDkyNDI5LCA2OTk4MywgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDk4MzA0NCwgCi0gICAgMTI4MDEzLCA2NTgxMiwgMTIwNjc1LCA3MDAwMSwgNDE4MjQsIDY3OTg1LCAxMjAyMDMsIDkyNjAwLCAxMjcwNTMsIDQyNzAwLCAKLSAgICAxOTQ4MDUsIDEyNzk4MCwgMTk0ODA3LCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMTI3ODQ0LCAwLCA0NDkzLCA0MzM2LCAKLSAgICAxMjkxNzEsIDIzMTQsIDQzNjAyLCA3ODgyNiwgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCAKKyAgICA5MjQ5MywgNzg2NzcsIDk4MzEzNywgOTI0MjksIDY5OTgzLCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgMTk0ODQ5LCAKKyAgICAxMjUxODksIDY1ODEyLCAxMDA2MzMsIDcwMDAxLCA0MTgyNCwgNjc5ODUsIDEyMDIwMywgOTI2MDAsIDEyNzA1MywgNDI3MDAsIAorICAgIDE5NDgwNSwgMTI3NDAzLCAxMjgwNDAsIDc4Njc2LCA5MjM1NiwgMTk0ODA4LCAxMjc4NDQsIDAsIDQ0OTMsIDQzMzYsIAorICAgIDEyOTE3MSwgMjMxNCwgNDM2MDIsIDQxODA4LCAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIAogICAgIDQ0ODksIDY4NzUwLCAxMjUxMTYsIDE5NDc5MywgMTkxMiwgNDIzODUsIDEwMzA2LCAxMDM3MCwgMCwgMTk0NzYxLCA4ODY3LCAKICAgICAxMDI1MCwgMTAyNTgsIDI3MTIsIDE2MzUsIDcxMDY0LCAxNDEwLCA3ODc2MywgOTgzMjUyLCAxMTg4NzgsIDk4MzU2NywgCi0gICAgMTI4NzE1LCA5OTE5LCAxMjA1MjgsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTIxMjc0LCA3NDY0MSwgNDg5MiwgNzQwMTYsIAorICAgIDEwMDk4OCwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyMTI3NCwgNzQ2NDEsIDQ4OTIsIDc0MDE2LCAKICAgICAxMjE1MDIsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDEyNzE2NywgNzU5LCA2NTc0OSwgMjA3OSwgNjUyNDgsIAotICAgIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDkzMDYzLCAxMDIyMywgNDIwNjIsIDEyMTI3OSwgMCwgNzQyNDYsIDM2NjgsIDY1NzU0LCAKKyAgICAxMjc4OCwgNjQ0ODcsIDY0NTUyLCA5MzA2MywgMTAyMjMsIDQyMDYyLCAxMDA2NDAsIDAsIDc0MjQ2LCAzNjY4LCA2NTc1NCwgCiAgICAgNDM1NjAsIDEyMjI2LCA2Nzk5MSwgNjUxNDksIDIzNDAsIDQxOTU5LCA3MTQ2MywgMTk0Nzg1LCAxOTQ3ODgsIDQzNjE4LCAKLSAgICA2NTc0NywgMTA5MzcsIDI5NjIsIDAsIDIzMjEsIDM1ODcsIDY1NzQ1LCA2NzIzNiwgODkyMSwgOTk1MiwgMTI4OTQxLCAwLCAKLSAgICA0MjcxNCwgOTk1MSwgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCi0gICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyMDA2MSwgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDcxODk2LCA2ODIyMCwgMTI4MTQzLCAKKyAgICA2NTc0NywgMTA5MzcsIDI5NjIsIDEyMTE3MSwgMjMyMSwgMzU4NywgNjU3NDUsIDY3MjM2LCA4OTIxLCA5OTUyLCAxMjg5NDEsIAorICAgIDAsIDQyNzE0LCA5OTUxLCA0MzQwOSwgMTAwNjY4LCAyOTQ5LCA2NjAxMiwgMTk0NTgyLCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCAKKyAgICA0MTgyMCwgMjMwMCwgMjM5NSwgMTIwMDYxLCA5OTc2LCAxMDA5NzUsIDEyMDA1MCwgNzE4OTYsIDY4MjIwLCAxMjgxNDMsIAogICAgIDQyODA5LCA0MjgwNywgNzA3OTgsIDY2MjkwLCAxMDE5OCwgNDE1MCwgNjQzNzEsIDgzMTgsIDQxNzkwLCA2Nzk3NiwgCi0gICAgNDE4OTgsIDIzNjAsIDQxNzk0LCA5MTc5NDIsIDcwNzk2LCA5MjE2MywgOTMwMzMsIDAsIDI0MTgsIDk4MzA5OCwgMjQxMSwgCi0gICAgMTEzMzYsIDc5OSwgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIDkxNzU0MSwgNDE3NzIsIDQyODEzLCAyMzE3LCAKKyAgICA0MTg5OCwgMjM2MCwgNDE3OTQsIDEwMDY2MywgNzA3OTYsIDkyMTYzLCA5MzAzMywgOTgzNjQ4LCAyNDE4LCA5ODMwOTgsIAorICAgIDI0MTEsIDExMzM2LCA3OTksIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCAxOTQ2MDQsIDQxNzcyLCA0MjgxMywgMjMxNywgCiAgICAgMTAyNjAsIDExODk4MCwgNTUyODQsIDc4Njg2LCAxMjcxNzcsIDEwMzg0LCAxOTQ3OTQsIDEyMTE0NywgMTI5MTExLCA3NzUzLCAKLSAgICAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDcwMTk5LCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgNjgwNjcsIAorICAgIDIzNTEsIDY2NTUsIDY0NDg5LCA2OTkzMSwgNzAxOTksIDc3ODcyLCA0NDQzLCA0Mjc3OSwgMjMwLCAxMjcwMTUsIDY4MDY3LCAKICAgICA0MzU0OSwgNDg1NSwgNDIxNTAsIDY1NzM5LCA1NDQxLCA0MTg5NiwgMTAyODgsIDEwMzIwLCAwLCA4NTUsIDcwNDYsIDYxMDksIAogICAgIDY1MDQ1LCA2MzgzOSwgNzgxOTgsIDIwNDksIDEwMDk4LCA5MTc3NzksIDc0MTQ1LCAxMjc5NDMsIDEwMjY0LCAxMDI4MCwgCi0gICAgOTE4NCwgMTAzNzYsIDcwMTMsIDQ0NjcsIDc4Njg0LCA5MTc1NTQsIDkyMjYwLCA0MTg4NywgMCwgNDg2MiwgOTczNSwgCisgICAgOTE4NCwgMTAzNzYsIDcwMTMsIDQ0NjcsIDc4Njg0LCA5MTc1NTQsIDkyMjYwLCA0MTg4NywgMTAxMDI1LCA0ODYyLCA5NzM1LCAKICAgICA2NTM3LCAxMjA1OTEsIDc0Mjg2LCAzOTE0LCA5MjE3OCwgNjg4MjMsIDkwNjUsIDEyOTYxLCAwLCAxMjA0NTYsIDkyMjUzLCAKLSAgICAxMjgyMDQsIDI4OSwgMTI4NzE0LCA0Njk0LCAxMTQyMCwgNDY5MCwgMCwgMTIwNTE0LCA5MTc5NzgsIDQ2OTMsIDczODkzLCAKLSAgICA0MjcyNCwgNjk5NzcsIDQ2ODgsIDEyMDQ1NCwgMTI4NTA3LCAwLCA2Nzk5NCwgODIzOCwgMzExMCwgMTIwMTYyLCAzNTY1LCAKLSAgICAxMjAxNjMsIDY1MjgsIDc4Mzg3LCA0MzAzNSwgNjk4OTgsIDIxOCwgOTgzODUwLCAxNTIwLCAwLCA0Nzg2LCA5ODMxNjgsIAotICAgIDQzMjI1LCA0NjAyLCA5MjQwMCwgNzgxNjcsIDEwMDg4LCA2NTQ4LCAxMjExNTcsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIAotICAgIDg4ODgsIDkyNzI0LCA3NDgxMiwgNjk3MDksIDk4Mzk2NywgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgMTIxNDM2LCAwLCAKLSAgICA5OTc1LCAxMTM3MDQsIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIDc4ODEwLCAwLCAwLCAKLSAgICA2Nzk4NywgMCwgMTI4ODI4LCAwLCA2Nzk4OSwgMTE5MDI5LCAxMDA2NSwgODIwNywgNzE5MDAsIDkyNjEzLCAxMjgwMTEsIAotICAgIDEyMTAyOCwgNjYyLCAxMjg3MjAsIDkyNDQsIDE5NDg2MywgODMxODMsIDExOTI2MSwgOTgzNDMwLCAwLCAxMjA5MDEsIAotICAgIDkxNzgzOCwgNDE5MjksIDAsIDcxMDg0LCA2NjY3NCwgNDE5MjYsIDY5OTk0LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgCi0gICAgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAxOTUwMDQsIDgzNDc5LCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAKLSAgICAxMjg0ODYsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMTI4NDI1LCA5MTc5NDUsIDc0MDE1LCAxMTU4MiwgOTI3NjgsIAotICAgIDEyMjgxLCAxMjcwNDMsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIDEyNTAxNCwgMTk0ODYwLCAxMTc2NSwgNjUyNTgsIAotICAgIDEwMzY5LCAwLCAxNTg1LCA3MTkyLCAxMDI0OSwgNDIyLCAxNTAwLCAyMDM2LCA5ODYsIDE5NDg1OSwgNjQzOTQsIDU3ODEsIAotICAgIDU1OTksIDY0Mjk0LCAyNDk0LCAxMjA0NTAsIDQ4NjEsIDc0MDIxLCA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgODM0NDQsIAotICAgIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCA3MTkwNywgMTIwNDEwLCAwLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAKLSAgICAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIDc0MTMxLCAxMjQyLCA2NTUxNCwgMTIxMTcwLCA2Mzk0MCwgMTIxMzYzLCAKLSAgICA2NDUzMywgNzE4ODMsIDEyMDQ0NiwgNjc4NDIsIDExOTkwLCA5MjQwNSwgNjM5MzksIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgCi0gICAgNzg2NzEsIDY0ODI5LCA5MzAyMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCA5ODMzNjMsIDc0Mjk0LCA5ODM5MTQsIAotICAgIDY5MjM5LCAwLCA2Nzg3MSwgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA2NzcwMSwgMjc1MSwgMTI2NjIsIDI3NjMsIAotICAgIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgNjY0MjQsIDYzOTkyLCAwLCA2MzkyMCwgNzQxMjgsIAotICAgIDI4NTYsIDExOTkxMCwgNDcsIDY5OTA4LCA3MTA1MywgNjU4NTgsIDE5NDgwNiwgMCwgNjc4MjksIDc4OTksIDAsIDg0MTcsIAotICAgIDQzNzk4LCA3MDcyLCA3NDE5NSwgMCwgNDAzMywgMTIxMjg5LCA0Mzk5MiwgMTIxMDgxLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAKLSAgICAxMjMyMCwgODM0ODQsIDEyMDg5NCwgMTk0NTYzLCAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDkzMDY0LCAwLCAwLCAKLSAgICAxMTg3OTgsIDEyOTEsIDc0ODI4LCAwLCAxMjA0MzUsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIDEyODE5OCwgCi0gICAgMTIxMjE2LCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDgyNDYsIDEyODg3NCwgOTMwNjYsIDAsIDEyMDQzMywgMCwgCi0gICAgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIDk4MzA5MiwgMTk0OTQ4LCA5MTc4NjYsIAotICAgIDkxNzc4OCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgNzA3ODgsIDEzMjAsIAotICAgIDEyMTQ2MSwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIDExOTU5OCwgCi0gICAgOTgyMCwgMTE5ODkyLCAxMjE4NywgOTgzODQxLCA3MTA0MSwgNTk4NCwgMCwgNDMzMDgsIDQzOTMsIDY3NjUwLCA5ODMyMjcsIAotICAgIDAsIDc0ODIyLCAwLCA3NDgyNiwgNjQ3MzMsIDk4MzIxNCwgMTI3ODk4LCAzNDkxLCA2NzE0NiwgMTIxMTQyLCAxMjgyMTksIAotICAgIDM1MTQsIDY1NDg1LCA3MjQyOCwgNzQ5MiwgMTI4ODYwLCA3NDYwNSwgOTI0ODMsIDc1MTQsIDk4MzM2OSwgMTI2NTg1LCAKLSAgICAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCA2MzkyMSwgMTIxMTc4LCA2MzkyNSwgMTIwMTYxLCA3NjEwLCAyMTksIAotICAgIDEyODE1OCwgNzg3MjIsIDY5MiwgNDM1ODgsIDY4NDg1LCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIAotICAgIDkzOTkxLCAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCA2NjM5NiwgOTIzMDEsIAotICAgIDAsIDg4OTUsIDUyNTMsIDcwMDI1LCA1NDU4LCA5MTc2MjksIDI4NjYsIDEyOTA0NSwgMTI3ODYwLCAxMTA5OCwgNjg0MzMsIAotICAgIDY3MDAsIDEyMDQ4NCwgMCwgMTIwNTgzLCAxOTQ4MjQsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjc3LCAKLSAgICA2Mzk5NywgOTYwNCwgNzg3MDAsIDc0NDEsIDYzODI2LCA2Nzk3MCwgODM0MzUsIDY0MzkyLCA5MjYyNiwgOTgzNjg3LCAKLSAgICAyODQ0LCA3NDYxMCwgNDE5NzQsIDY3Mzk3LCAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCA5ODM4OTksIDMxMDQsIAotICAgIDE5NDczNCwgMCwgMTIxMzA0LCA5ODMyMzUsIDUzMDgsIDgzNDM0LCAyOTAsIDAsIDEyMTMzOCwgMjg2MiwgMjc5MiwgCi0gICAgMTk1MDg4LCA5Mjk2MywgNzc5ODQsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAKLSAgICAxODE0LCA3ODQ2NCwgMTAyNDAsIDY2Mjg1LCA3NDMwNSwgMTI4MzgyLCA3NDUyOCwgNjU5MDMsIDcxNDU0LCA0MjY0NiwgCi0gICAgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNDM1MTMsIDY0NDgyLCA5MjUyNCwgODE2MywgNjUyNzAsIDAsIDc3OTMyLCAwLCAKLSAgICA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCA3NTAzNywgMTI4MzQ5LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIDkwNzEsIAorICAgIDEyODIwNCwgMjg5LCAxMDEwMjksIDQ2OTQsIDExNDIwLCA0NjkwLCAxMjI4OTksIDEwMDc4OSwgOTE3OTc4LCA0NjkzLCAKKyAgICA3Mzg5MywgNDI3MjQsIDY5OTc3LCA0Njg4LCAxMjA0NTQsIDEyODUwNywgOTgzODEzLCA2Nzk5NCwgODIzOCwgMzExMCwgCisgICAgMTIwMTYyLCAzNTY1LCAxMjAxNjMsIDY1MjgsIDc4Mzg3LCA0MzAzNSwgNjk4OTgsIDIxOCwgOTgzODUwLCAxNTIwLCAwLCAKKyAgICA0Nzg2LCA5ODMxNjgsIDQzMjI1LCA0NjAyLCA5MjQwMCwgNzgxNjcsIDEwMDg4LCA2NTQ4LCAxMjExNTcsIDEyMDE1NiwgCisgICAgNDM5NzgsIDg5ODgsIDg4ODgsIDY1NzI3LCA3NDgxMiwgNjk3MDksIDk4Mzk2NywgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgCisgICAgMTIxNDM2LCAwLCA5OTc1LCAxMTM3MDQsIDExOTkwMiwgNDY4OSwgODkzMiwgMTI1MjM4LCA2NTU2MCwgMTE5MjA5LCAKKyAgICA3NDQ0MSwgNzg4MTAsIDEyMjg4MSwgMTI4NzA3LCA2Nzk4NywgMCwgMTIxMDIxLCAwLCA2Nzk4OSwgMTE5MDI5LCAxMDA2NSwgCisgICAgODIwNywgNzE5MDAsIDkyNjEzLCAxMjgwMTEsIDEwMTA5MCwgNjYyLCAxMjUyMjEsIDkyNDQsIDE5NDg2MywgODMxODMsIAorICAgIDExOTI2MSwgOTgzNDMwLCA5MTc4ODksIDEyMDkwMSwgOTE3ODM4LCA0MTkyOSwgMCwgNzEwODQsIDY2Njc0LCA0MTkyNiwgCisgICAgNjk5OTQsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAxOTQ4NjIsIDY4MDEzLCA1MiwgMTMxMTgsIDY0NzUsIDE5NTAwNCwgCisgICAgODM0NzksIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIDEyODQ4NiwgNjc5OTIsIDc0MDg1LCAwLCAzOTc4LCAxMjg0MjUsIAorICAgIDkxNzk0NSwgNzQwMTUsIDExNTgyLCA5Mjc2OCwgMTIyODEsIDEyNzA0MywgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgCisgICAgMTI1MDE0LCAxMjg4MDgsIDExNzY1LCA2NTI1OCwgMTAzNjksIDk4MzQ5OCwgMTU4NSwgNzE5MiwgMTAyNDksIDQyMiwgCisgICAgMTUwMCwgMjAzNiwgOTg2LCAxOTQ4NTksIDY0Mzk0LCA1NzgxLCA1NTk5LCA2NDI5NCwgMjQ5NCwgMTIwNDUwLCA0ODYxLCAKKyAgICA3NDAyMSwgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDcyODcxLCA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgCisgICAgNzE5MDcsIDEyMDQxMCwgMTAwNjcxLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIAorICAgIDc0MTMxLCAxMjQyLCA2NTUxNCwgMTIxMTcwLCA2Mzk0MCwgMTIxMzYzLCA2NDUzMywgNzE4ODMsIDEyMDQ0NiwgNjc4NDIsIAorICAgIDExOTkwLCA5MjQwNSwgNjM5MzksIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgNzg2NzEsIDY0ODI5LCA5MzAyMCwgNjk0MywgCisgICAgOTE3OTM0LCA1ODU5LCA5ODM5ODAsIDI4NTgsIDk4MzM2MywgNjY3ODEsIDk4MzkxNCwgNjkyMzksIDk4MzM4MCwgNjc4NzEsIAorICAgIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgNjc3MDEsIDI3NTEsIDEyNjYyLCAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIAorICAgIDEyOTIyLCA3MDUyLCA5MTc4MzksIDY2NDI0LCA2Mzk5MiwgMCwgNjM5MjAsIDc0MTI4LCAyODU2LCAxMTk5MTAsIDQ3LCAKKyAgICA2OTkwOCwgNzEwNTMsIDY1ODU4LCAxMDA4NjMsIDEyOTAzMywgNjc4MjksIDc4OTksIDk4MzU3NSwgODQxNywgNDM3OTgsIAorICAgIDcwNzIsIDc0MTk1LCAwLCA0MDMzLCAxMjEyODksIDQzOTkyLCAxMjEwODEsIDk4MzMxNSwgMjEyLCA2NDYwMCwgMTkwMywgCisgICAgMTIzMjAsIDgzNDg0LCAxMjA4OTQsIDE5NDU2MywgMTAwOTc5LCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDkzMDY0LCAwLCAKKyAgICA5ODM3NTYsIDExODc5OCwgMTI5MSwgNzQ4MjgsIDAsIDEyMDQzNSwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgCisgICAgMTIxMjUzLCAxMjEyMTYsIDY1NDg3LCA5MjE4OSwgNDE4MzcsIDEyMDYxMSwgODI0NiwgMTI4ODc0LCA5MzA2NiwgMTAwNjgwLCAKKyAgICAxMjA0MzMsIDE5NDU3MCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMTIxNDMxLCA2NDQyNiwgCisgICAgOTgzMDkyLCAxOTQ5NDgsIDIyMzAsIDkxNzc4OCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDEwMDg2OSwgMTIwODU4LCAKKyAgICA5MjcxNSwgNzA3ODgsIDEzMjAsIDEyMTQ2MSwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCAKKyAgICA1OTg1LCA5MTc5MjgsIDExOTU5OCwgOTgyMCwgMTE5ODkyLCAxMjE4NywgOTgzODQxLCA3MTA0MSwgNTk4NCwgMCwgNDMzMDgsIAorICAgIDQzOTMsIDY3NjUwLCAxMTM3ODcsIDEyNzAxMywgNzQ4MjIsIDAsIDc0ODI2LCA2NDczMywgOTgzMjE0LCAxMjc4OTgsIAorICAgIDM0OTEsIDY3MTQ2LCAxMjExNDIsIDEyODIxOSwgMzUxNCwgNjU0ODUsIDcyNDI4LCA3NDkyLCAxMjg4NjAsIDc0NjA1LCAKKyAgICA3Mjc2OCwgNzUxNCwgOTgzMzY5LCAxMjY1ODUsIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDYzOTIxLCAxMjExNzgsIAorICAgIDYzOTI1LCAxMjAxNjEsIDc2MTAsIDIxOSwgMTI4MTU4LCA3ODcyMiwgNjkyLCA0MzU4OCwgNjg0ODUsIDQxNjM1LCA0MzI0MSwgCisgICAgOTY4OCwgNzE0NywgOTUzNSwgMTk0OTg5LCA5Mzk5MSwgOTgzOTQ1LCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCA5MTc5MTgsIAorICAgIDcxNDksIDc0NTMsIDExOTU2MCwgODAxMywgNjYzOTYsIDkyMzAxLCAwLCA4ODk1LCA1MjUzLCA3MDAyNSwgNTQ1OCwgCisgICAgMTk0NjUxLCAyODY2LCAxMTg4MDUsIDEyNzg2MCwgMTEwOTgsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDEyOTMwOCwgMTIwNTgzLCAKKyAgICAxOTQ4MjQsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjc3LCA2Mzk5NywgOTYwNCwgNzg3MDAsIDc0NDEsIAorICAgIDYzODI2LCA2Nzk3MCwgODM0MzUsIDY0MzkyLCA5MjYyNiwgOTgzNjg3LCAyODQ0LCA3NDYxMCwgNDE5NzQsIDY3Mzk3LCAKKyAgICAxMjEzOSwgNjc5NzEsIDEyNzE2NiwgOTgzODM0LCAzMzU4LCA2NTI5NSwgOTgzMjkyLCAzMTA0LCAxMDA3NzksIDAsIAorICAgIDEyMTMwNCwgOTgzMjM1LCA1MzA4LCA4MzQzNCwgMjkwLCAwLCAxMjEzMzgsIDI4NjIsIDI3OTIsIDkyNDgzLCA5Mjk2MywgCisgICAgNzc5ODQsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAxMDEwMDgsIDkxNzk3MSwgMTgxNCwgCisgICAgNzg0NjQsIDEwMjQwLCA2NjI4NSwgNzQzMDUsIDEyODM4MiwgNzQ1MjgsIDY1OTAzLCA3MTQ1NCwgNDI2NDYsIDc2MDYsIAorICAgIDI1OTEsIDI4MzcsIDQzNDEsIDQzNTEzLCA2NDQ4MiwgOTI1MjQsIDgxNjMsIDY1MjcwLCAxOTQ4MjUsIDc3OTMyLCAwLCAKKyAgICA5MTEyLCA3MjcyMSwgODYzLCA5NDkwLCA3NTAzNywgMTI4MDM3LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIDkwNzEsIAogICAgIDY4MDU0LCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAxMjExMzYsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgOTI0MTUsIAogICAgIDY2NTg3LCAxMjQ5ODcsIDAsIDkyNDAxLCA0MzkyNywgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAxMjA5ODAsIDEwNjI5LCAKLSAgICAxMjc4NjksIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI3MjY3LCA5MjM5MSwgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgCi0gICAgNDM5NjksIDQzMTkzLCAxMDczNywgMzQ2MywgMTIwOTc1LCA5ODMzNTEsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgCi0gICAgNTgxMSwgMTIzNDUsIDcwNDksIDExODgxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgOTI5MzksIDAsIDAsIDEyODA0MSwgCi0gICAgNjc5MDMsIDY3NzM5LCAxMjYyLCAxMjAxNjUsIDY1NjEsIDE5OTM5LCAxMjg2NzMsIDAsIDEyNzMxOCwgMTE5OTA2LCAKLSAgICA3MDMwMCwgMCwgOTgzMDk3LCAwLCA5ODM2NjcsIDExOTkwNywgNjQ2MTIsIDExOTkxLCAxMjA2NTQsIDAsIDkyOTQzLCAKLSAgICAxNTAyLCA5MTc1NjgsIDEyNzk4OCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgODQzMCwgMCwgNzEyMjMsIAotICAgIDEyMDc1OCwgMCwgNzQwNTcsIDk2MDMsIDEyODA3OSwgNTI1NCwgMTIwNzQyLCA3NzI0LCA3NDM4OCwgNjgzNzUsIDEwNzk2LCAKLSAgICA1MTI5LCAwLCA3MDgxNiwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAxMTcyMSwgNzA4MDQsIAotICAgIDQ3OTgsIDEyMTQ2OCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgCi0gICAgNjg4MjQsIDY4NjI2LCA4OTQsIDMwMCwgMTIwODc1LCAxMjMwNiwgNjYyMzUsIDgwMDQsIDAsIDExOTU3NCwgMjU2MiwgCi0gICAgNzAxNTYsIDEyMDg1NiwgNDI1MDMsIDkyOTAwLCAxMTY1MiwgOTE3ODEzLCA5MTc3OTksIDExOTI0MSwgNjQ2OTksIAotICAgIDEyNjU2OSwgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgNzA4NzMsIDAsIAotICAgIDEzMTU2LCAxMjkwNTcsIDEwODMyLCA1MDkzLCAwLCA2OTg1MiwgNzI0MzAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgCi0gICAgMTc2LCAwLCA5MTUzLCA0MTA0LCA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIAotICAgIDcxMjk5LCA2NjgxNywgNDI4ODEsIDAsIDg5ODAsIDExODk4OCwgNjc4NjEsIDg4NDQsIDcyMDksIDAsIDAsIDQyNzgsIAotICAgIDEyODgwOSwgMCwgMTE5MTYwLCA3MDgyMSwgOTA3NCwgNDM0OCwgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAKLSAgICAxNzg2LCA2NjEsIDEyODExNiwgMCwgOTE3OTI1LCA3NDQyMywgNzEzNDUsIDU4NiwgNzQ0MTQsIDY0MzU5LCAxMjY3LCAKLSAgICAxMjgyNjksIDY1NDY4LCAxOTQ5NjYsIDY1NzMxLCAwLCA3MjQwNSwgMzYyMSwgOTI5MzIsIDY2NjY2LCA2NDIxMSwgMCwgCi0gICAgNjU2MiwgMTI5MjgsIDE5NDkwNCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAxMjc5NTMsIDcwMzQzLCAxNzE0LCA3NDQwNiwgCi0gICAgMTIwNzUxLCAwLCAxMjExMTMsIDk4Mzk3NiwgNjYyMjUsIDcwMTEwLCA3MDg2NywgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgCi0gICAgMTIwNjk0LCAxMjEwMjUsIDEwMjkxLCAxMDMyMywgMjgyNiwgMTEzODA5LCAxMjY1MTAsIDAsIDQyMDA4LCA5NzA4LCAKLSAgICA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAKLSAgICA5Njg5LCA5ODM5NjksIDY1ODMzLCA3Nzg0OCwgMCwgMTc2NSwgMCwgMTI4NjIyLCA2NTU4OCwgOTIzNTAsIDk4MzI4MSwgMCwgCi0gICAgODQwMSwgOTgzOTI0LCA0MjAxNCwgMTI3MzA3LCA3MDMwLCAxMjA5NjksIDEwNDc5LCA2NDk1OSwgMjg1MiwgMCwgMTIxMjI1LCAKLSAgICAwLCA3MDgxOSwgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDEyNjcwNCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgMTAxNDcsIAotICAgIDEyOTM1LCAxMjc1NjgsIDEyNjQ4MywgMTIxMjgxLCAwLCAwLCA3ODc1NywgMCwgMTEzODE1LCAxMjEzMDIsIDAsIDk5OTQsIAotICAgIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgNzA4NCwgMjc2NSwgNzg0NjYsIDQzMzgyLCAKLSAgICAwLCAxMjA3MTksIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMTI3Nzk3LCAKLSAgICAwLCA3Nzk4OCwgMjYzLCAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCA3ODM4NSwgOTgzNzQyLCA3MDMxMywgMTI5MTQwLCAKLSAgICA2OTMxLCA2OTcyMiwgNDMyNjEsIDcxNzcsIDcwMTA1LCA5MjY1MiwgMCwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgCi0gICAgMTI2NTc1LCA2ODA2LCA2OTkyLCA0MjAxOSwgMCwgNDEyOTAsIDk4MzcxNiwgNzUwLCAwLCA3MTMwNCwgMTAxNjMsIDYzOTEzLCAKLSAgICA3MTMwMCwgNzAzMiwgNTk1NCwgNjQ5MzEsIDQzMTQsIDEyODYwMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCAKLSAgICA3Nzk5MywgNzA4MTgsIDEzMTY1LCA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyNTAwNSwgNDEzNzgsIAotICAgIDExMDA4LCA2OTM4LCA3MDAyNiwgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDcwODIzLCAxOTQ5OTAsIDk4MzYwNCwgCi0gICAgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCA2NjA0NSwgNDE0NzAsIDY0ODA1LCAwLCA5ODMyMTMsIDEyNjUxMSwgNjQ4MDEsIAotICAgIDEyNzgxOCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCAKLSAgICA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMTIxMzk5LCAxMDY3NywgNjA0LCA0MTA5NywgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIAotICAgIDM0MjUsIDEyNzQ4OCwgMTI2NTIzLCAyODM2LCA5ODM3MzgsIDAsIDk3MDcsIDExMzcxOCwgNDMyMDIsIDAsIDAsIDY1MTk5LCAKLSAgICAxNzM4LCAxMjgzMTEsIDY3NzA3LCAyODMyLCA5MjcwMiwgOTY3MCwgMTExMDEsIDAsIDY2Mzc0LCA5MTc5NTYsIDExOTU1MiwgCi0gICAgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODMwODEsIDczNzUyLCA3MDMwNSwgNjQ4NzIsIDkyMzQwLCAxMzMxLCAwLCAwLCAKLSAgICAxMjEzNzcsIDEyNzA4LCA5MTc5NTQsIDUwOTAsIDUwODksIDEyNzk3NywgOTE3OTUzLCAxMTkxMDksIDAsIDcwODI2LCAzMTksIAotICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDc0ODg2LCA3NjQwLCA5NiwgNTA4NiwgOTgzNTk3LCA5MjM3OSwgMCwgCi0gICAgNTA4NSwgNjQyODYsIDkyNjY1LCAxMTM3MTcsIDQxNDIyLCAxMTk2MTcsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDExOTA0MiwgCi0gICAgMCwgNTAxMSwgMCwgOTgzMzI5LCAxMjY1ODcsIDAsIDEyMDY5OCwgMTE4ODc0LCA2Njc3LCA3NjAxLCAwLCA1OTEsIDY0NDE5LCAKLSAgICAxMTg5NTMsIDkyMjYyLCAxMTg4OTUsIDcwNzk5LCA3MDA4NCwgMCwgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCAKLSAgICA3MTM0MywgNDUzNCwgNDEyNzAsIDEyODg3NiwgNjcxMzgsIDY1NTc0LCAxOTQ5NDcsIDkyMjQsIDY3MTQwLCAzNjcxLCAKLSAgICA4OTc2LCA2NzEzOSwgMCwgNDEyNzUsIDYzNzIsIDgyOTk3LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCA5MjM2OCwgCi0gICAgNDEyNzMsIDEyMTQ0OCwgNzQ1MzEsIDY3MjgsIDAsIDk3MTUsIDEyOTI5NywgODI1OCwgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAKLSAgICAxMTg5MTksIDQyLCAxMTE5MSwgNDM2ODgsIDY4MjQzLCAwLCA3NDU4LCAwLCAwLCA2NTM4NSwgNjcxMzUsIDY3MTM0LCAKLSAgICAxMTk1OCwgMTExNjUsIDkxNzgyMiwgMTI1MDg3LCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAxOTUwNjQsIAotICAgIDY3MTMyLCA2NzEzMSwgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCAKLSAgICA1NTU4LCA4ODc4LCA0Mzg0NCwgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMCwgOTA4NiwgNjQ1NjYsIDk4MzE4NSwgCi0gICAgNjQ1ODQsIDc0MzcsIDc0NTQsIDEyNTk0LCA3Mzc0OSwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgCi0gICAgMTI1MDkyLCAzODA1LCAwLCA2NzEyOCwgNDQwMDEsIDQxMDA4LCAxMjgwNTIsIDYzMDcsIDE5OTQ5LCA2NzEyOSwgNzU0NCwgCi0gICAgMTI0OTg5LCA0MzQ2OSwgMTIxMDk1LCA5ODM3MzUsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDY3MTI0LCA3NjAyLCA2NDcyOSwgCi0gICAgMCwgNDM1MjEsIDAsIDQyMzAyLCA0MzcxMSwgNDM1MjMsIDQxNDQ3LCA1NTU5LCA2ODQ4MywgODcwNCwgMjM5NywgNTU1NiwgCi0gICAgMCwgMCwgMCwgOTAxMSwgOTYzMCwgMTExNjYsIDAsIDkzOTk4LCA1NTA2LCA5MjQ5OCwgMTkxMSwgNjY2NTIsIDY3Njg2LCAKKyAgICAxMDEwMDQsIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI3MjY3LCA5MjM5MSwgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgCisgICAgNDM5NjksIDQzMTkzLCAxMDczNywgMzQ2MywgNzI4NTgsIDE5NDc5MCwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCA1ODExLCAKKyAgICAxMjM0NSwgNzA0OSwgMTE4ODExLCA1MTk1LCAxOTUwODEsIDE5NDk1OCwgNjY2MzksIDkyOTM5LCA4MzE5MywgMTIxMDEwLCAKKyAgICAxMjgwNDEsIDY3OTAzLCA2NzczOSwgMTI2MiwgMTIwMTY1LCA2NTYxLCAxOTkzOSwgMTI4NjczLCAwLCAxMjczMTgsIAorICAgIDExOTkwNiwgNzAzMDAsIDAsIDk4MzA5NywgMCwgOTgzNjY3LCAxMTk5MDcsIDY0NjEyLCAxMTk5MSwgMTIwNjU0LCAKKyAgICA5MTc4NjYsIDkyOTQzLCAxNTAyLCA5MTc1NjgsIDEyNzk4OCwgOTEwNywgMTIyOTA0LCA1NzAyLCAzNjU1LCA2NzY2MSwgCisgICAgODQzMCwgMCwgNzEyMjMsIDEyMDc1OCwgMTE4OTYzLCA3NDA1NywgOTYwMywgMTI4MDc5LCA1MjU0LCAxMjA3NDIsIDc3MjQsIAorICAgIDc0Mzg4LCA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDcwODE2LCA1OTAsIDc1NzksIDU2MTQsIDU4OTMsIDkyMjgwLCAxMTcyMCwgCisgICAgOTI0OTYsIDExNzIxLCA3MDgwNCwgNDc5OCwgMTIxNDY4LCAxMTkzMTYsIDY2MDM4LCA0NzkzLCA2Nzg1MSwgMTE3MjYsIAorICAgIDEyNzU0MSwgNzQyMDQsIDY4NjEwLCA2ODgyNCwgNjg2MjYsIDg5NCwgMzAwLCAxMjA4NzUsIDEyMzA2LCA2NjIzNSwgODAwNCwgCisgICAgMTI3MTg5LCAxMTk1NzQsIDI1NjIsIDcwMTU2LCAxMjA4NTYsIDQyNTAzLCA5MjkwMCwgMTE2NTIsIDkxNzgxMywgOTE3Nzk5LCAKKyAgICAxMTkyNDEsIDY0Njk5LCAxMjY1NjksIDUwOTYsIDUwOTUsIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIAorICAgIDcwODczLCAwLCAxMzE1NiwgMTI5MDU3LCAxMDgzMiwgNTA5MywgMTk0ODM5LCA2OTg1MiwgNzI0MzAsIDUwOTIsIDEwNzA4LCAKKyAgICAxMTMyNywgMCwgNTA5MSwgMTc2LCAxMTM4MTAsIDkxNTMsIDQxMDQsIDc4NTk5LCA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIAorICAgIDEyMjcyLCA5ODMyLCAxMTc3NywgNzEyOTksIDY2ODE3LCA0Mjg4MSwgOTgzNzg1LCA4OTgwLCAxMTg5ODgsIDY3ODYxLCAKKyAgICA4ODQ0LCA3MjA5LCA5ODM3NDEsIDAsIDQyNzgsIDEyODgwOSwgMCwgMTE5MTYwLCA3MDgyMSwgOTA3NCwgNDM0OCwgCisgICAgOTE3ODcyLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMTI4MTE2LCA5MTc4NTcsIAorICAgIDkxNzkyNSwgNzQ0MjMsIDcxMzQ1LCA1ODYsIDc0NDE0LCA2NDM1OSwgMTI2NywgMTI4MjY5LCA2NTQ2OCwgMTI1MjM0LCAKKyAgICA2NTczMSwgOTgzODk5LCA3MjQwNSwgMzYyMSwgOTI5MzIsIDY2NjY2LCA2NDIxMSwgMTI5MzUxLCA2NTYyLCAxMjkyOCwgCisgICAgMTIxMzA2LCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDEyNzk1MywgNzAzNDMsIDE3MTQsIDc0NDA2LCAxMjA3NTEsIDAsIAorICAgIDEyMTExMywgMTI3Mzg5LCA2NjIyNSwgNzAxMTAsIDcwODY3LCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAxMjA2OTQsIAorICAgIDEyMTAyNSwgMTAyOTEsIDEwMzIzLCAyODI2LCAxMDA1MjYsIDEyNjUxMCwgMTI3NTU3LCA0MjAwOCwgOTcwOCwgNDI3MTAsIAorICAgIDAsIDQyMDExLCA0MTk5OSwgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgOTY4OSwgCisgICAgOTgzOTY5LCA2NTgzMywgNzc4NDgsIDAsIDE3NjUsIDk4MzMwMSwgMTI4NjIyLCA2NTU4OCwgOTIzNTAsIDk4MzI4MSwgMCwgCisgICAgODQwMSwgOTgzOTI0LCA0MjAxNCwgMTI1MjMwLCA3MDMwLCAxMjA5NjksIDEwNDc5LCA2NDk1OSwgMjg1MiwgNzI3MjgsIAorICAgIDEyMTIyNSwgMCwgNzA4MTksIDExOTg4NywgMTI1MjI3LCA2OTYzLCAxMjY3MDQsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIAorICAgIDEwMTQ3LCAxMjkzNSwgMTI3NDAxLCAxMTkxODUsIDcyODEyLCA3MTI2NSwgMTI4Nzc5LCA3ODc1NywgMCwgMTEzODE1LCAKKyAgICAxMjEzMDIsIDEyMjg5MiwgOTk5NCwgMTI0NjcsIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCAKKyAgICA3MDg0LCAyNzY1LCA3ODQ2NiwgNDMzODIsIDk4MzgxNSwgMTIwNzE5LCAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIAorICAgIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDEyNzc5NywgMCwgNzc5ODgsIDI2MywgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgCisgICAgNzgzODUsIDEwMDY5MywgNzAzMTMsIDEyNzQ3NiwgNjkzMSwgNjk3MjIsIDQzMjYxLCA3MTc3LCA3MDEwNSwgOTI2NTIsIAorICAgIDExOTg5NSwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgMTI2NTc1LCA2ODA2LCA2OTkyLCA0MjAxOSwgMTk1MDU2LCAKKyAgICA0MTI5MCwgOTgzNzE2LCA3NTAsIDEyMTA4OCwgNzEzMDQsIDEwMTYzLCA2MzkxMywgNzEzMDAsIDcwMzIsIDU5NTQsIAorICAgIDY0OTMxLCA0MzE0LCAxMDA2MzYsIDE5OCwgNjg0NTMsIDczMCwgMTAwNjM1LCA2MzkwNywgNzc5OTMsIDcwODE4LCAxMzE2NSwgCisgICAgNzEwNywgNzQxNzEsIDQyODA0LCA2NzgsIDgyNDAsIDc4MDE1LCAxMjUwMDUsIDQxMzc4LCAxMTAwOCwgNjkzOCwgNzAwMjYsIAorICAgIDkyNjM3LCAyMDk3LCA2NjI0NiwgMTIwNTYwLCA3MDgyMywgMTk0OTkwLCA5ODM2MDQsIDM4OTIsIDY4NjMyLCA2OTY0MiwgCisgICAgNjcxMiwgNjYwNDUsIDQxNDcwLCA2NDgwNSwgMCwgOTgzMjEzLCAxMjY1MTEsIDY0ODAxLCAxMjc4MTgsIDQ5NywgMTIxMDAsIAorICAgIDU5NTMsIDkyNjY3LCA3Nzk2LCA2OTY2OSwgNDMyNTQsIDczODMxLCAxMjgyNDMsIDEwMjkzLCA1OTUyLCAxMjgxLCA0Mzc0NywgCisgICAgMCwgMTIxMzk5LCAxMDY3NywgNjA0LCA0MTA5NywgOTE4MiwgMTg1OSwgMCwgNzI4NTYsIDM0MjUsIDEyNzQ4OCwgNzI3MjUsIAorICAgIDI4MzYsIDk4MzczOCwgMCwgOTcwNywgNzA3NDIsIDQzMjAyLCAwLCAwLCA2NTE5OSwgMTczOCwgMTE5ODkxLCA2NzcwNywgCisgICAgMjgzMiwgOTI3MDIsIDk2NzAsIDExMTAxLCA5ODM3OTUsIDY2Mzc0LCAxMDA3MDQsIDExOTU1MiwgMjgyMiwgNjgxMjIsIAorICAgIDQ0MzYsIDkyNTE5LCA5ODMwODEsIDczNzUyLCA3MDMwNSwgNjQ4NzIsIDkyMzQwLCAxMzMxLCA5MTc5NTUsIDk4MzcwNiwgCisgICAgMTIxMzc3LCAxMjcwOCwgMTI5MzMzLCA1MDkwLCA1MDg5LCAxMjc5NzcsIDMyMDAsIDEwMDk4NCwgMCwgNzA4MjYsIDMxOSwgCisgICAgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgMCwgMTk0ODgxLCA1MDg3LCA3NDg4NiwgNzY0MCwgOTYsIDUwODYsIDEyNzc2MywgCisgICAgOTIzNzksIDAsIDUwODUsIDY0Mjg2LCA5MjY2NSwgMTEzNzE3LCA0MTQyMiwgMTAwNzEwLCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAKKyAgICAxMTkwNDIsIDExOTkwOSwgNTAxMSwgMTk0ODgyLCAxOTQ3NDIsIDEyNjU4NywgMCwgMTIwNjk4LCAxMTg4NzQsIDY2NzcsIAorICAgIDc2MDEsIDE5NDcyNSwgNTkxLCA2NDQxOSwgMTE4OTUzLCA5MjI2MiwgMTE4ODk1LCA3MDc5OSwgNzAwODQsIDEyNTExMSwgCisgICAgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCA3MTM0MywgNDUzNCwgNDEyNzAsIDEyODg3NiwgNjcxMzgsIDY1NTc0LCAKKyAgICAxOTQ5NDcsIDkyMjQsIDY3MTQwLCAzNjcxLCA4OTc2LCA2NzEzOSwgMCwgNDEyNzUsIDYzNzIsIDgyOTk3LCA1NTI2MSwgCisgICAgNzk2MywgNjM3MSwgMCwgNTY4LCA5MjM2OCwgNDEyNzMsIDEyMDMyMiwgNzQ1MzEsIDY3MjgsIDk4MzYwOSwgOTcxNSwgCisgICAgMTIwOTc1LCA4MjU4LCAxMTc1MywgNzQ4MjAsIDk4Mzk2NSwgOTYwMiwgMTE4OTE5LCA0MiwgMTExOTEsIDQzNjg4LCAKKyAgICA2ODI0MywgMCwgNzQ1OCwgNzM5NzIsIDk4Mzk2MCwgNjUzODUsIDY3MTM1LCA2NzEzNCwgMTE5NTgsIDExMTY1LCAxOTQ2OTgsIAorICAgIDEyNTA4NywgNjI1NCwgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgMTk1MDY0LCA2NzEzMiwgMTI2OTYsIDQyODU4LCAKKyAgICAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCA3MzAwLCAwLCA5NDY3LCA1NTU4LCA4ODc4LCA0Mzg0NCwgCisgICAgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMTAwNzYyLCA5MDg2LCA2NDU2NiwgOTgzMTg1LCA2NDU4NCwgNzQzNywgCisgICAgNzQ1NCwgMTI1OTQsIDczNzQ5LCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgNzAwNDgsIDc0MjQzLCAxMjUwOTIsIDM4MDUsIDAsIAorICAgIDY3MTI4LCA0NDAwMSwgNDEwMDgsIDEyODA1MiwgNjMwNywgMTk5NDksIDY3MTI5LCA3NTQ0LCAxMjQ5ODksIDQzNDY5LCAKKyAgICAxMjEwOTUsIDk4MzczNSwgMTAxNTIsIDY0NDIyLCA2NTA5MSwgNjcxMjQsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgCisgICAgMTIwNzcyLCA0MjMwMiwgNDM3MTEsIDQzNTIzLCA0MTQ0NywgNTU1OSwgNjg0ODMsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIAorICAgIDY2ODAxLCA5MDExLCA5NjMwLCAxMTE2NiwgMCwgOTM5OTgsIDU1MDYsIDkyNDk4LCAxOTExLCA2NjY1MiwgNjc2ODYsIAogICAgIDk5NjEsIDg4NDUsIDY2Njk4LCA2ODMyNSwgMTA3OTIsIDg4ODksIDEyMTQwMiwgMjA5OCwgMCwgNjQ3NTEsIDcwMzA5LCAKLSAgICA2NjYyMiwgMTI2NjI2LCAwLCA3NDM2NCwgNjg4MTYsIDEyOTE1MiwgOTgzODA1LCA0MjkwOSwgNzU1MiwgNzAwOTIsIAotICAgIDE5NDU2NywgNjUzODQsIDcyMjMsIDQ1NTksIDkzMDE1LCAxOTU2LCA0MzEzOCwgNzAyNCwgNjU3MjgsIDQzNDkwLCAxMjEwLCAKLSAgICAxOTUwNzcsIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCAwLCA5ODMyMzMsIDEyNTA0NSwgMzgsIDg1MzMsIDY2NjY5LCAKLSAgICAxMTkxMjQsIDk4MzI5NSwgOTgzNzkyLCAwLCA0MzU3LCAwLCA3MDI4OSwgOTE3ODYzLCA3NDIzMywgOTk2NywgNzg4ODQsIAotICAgIDQyODYwLCAxMTk4MzgsIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgODMyNzksIDExMzgwOCwgMCwgMTEwMTQsIDEyMDEyNiwgCi0gICAgODk0MiwgMTIwMDAsIDY5MjI0LCA5MjI2NywgMTI4NTM2LCAxMTk3NCwgNjczNjMsIDQyNzcyLCA0MjY1MCwgMTE2NTAsIAotICAgIDUwMTMsIDkyNjYzLCA2ODgxMCwgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDExMTkzLCA5ODM3NzAsIDAsIAotICAgIDY0NzE0LCA3MTQ3OSwgNzA4MDIsIDEyMTYyLCAxMjEyMCwgNDM0NzYsIDk4Mzc2NiwgMTEwMjQsIDc0ODExLCA2NjIyOCwgCi0gICAgMTA1NjMsIDkyOTU0LCAxMjcxOTYsIDQzNTIyLCAyNDYyLCA5Mjk1NSwgMTgzNywgMTI1MDg2LCA2Mzk3MiwgNjk1NywgMCwgCi0gICAgMTEzODIwLCA0OTUyLCA2NTcxOCwgNjQ0MDUsIDU1MDQsIDY1NzIwLCA2NTcxNCwgNjU3MTUsIDY1NzE2LCAxMjgwMjYsIAotICAgIDc1MDE2LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMTI3MjEzLCA4MTA3LCA2NzE1NCwgMTEyNywgNDU1LCAwLCAKLSAgICA2Mzk2OCwgMTI3ODM1LCAzNDgzLCAxMTk1OTMsIDE5ODksIDk4MzE3NiwgNjk2NzgsIDkxMDQsIDM1MDMsIDY1Mzc1LCAKLSAgICA2ODMwMCwgNjY5NCwgNDI2MzMsIDE4NjQsIDAsIDc0MzA2LCA0MTQ0NiwgMjU0MCwgNzczNiwgMTIxNDM0LCA3NDA2NCwgCisgICAgNjY2MjIsIDEyNjYyNiwgMCwgNzA3MjQsIDY4ODE2LCAxMjkxNTIsIDEyNDk1MywgNDI5MDksIDc1NTIsIDcwMDkyLCAKKyAgICAxMjc0OTAsIDY1Mzg0LCA3MjIzLCA0NTU5LCA5MzAxNSwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA0MzQ5MCwgMTIxMCwgCisgICAgMTk1MDc3LCA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgOTE3OTAyLCAxMjg1NTgsIDEyNTA0NSwgMzgsIDg1MzMsIAorICAgIDY2NjY5LCAxMTkxMjQsIDk4MzI5NSwgOTgzNzkyLCAwLCA0MzU3LCAwLCA3MDI4OSwgOTE3ODYzLCA3NDIzMywgOTk2NywgCisgICAgNzg4ODQsIDQyODYwLCAxMTkzMjMsIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgODMyNzksIDExMzgwOCwgMCwgMTEwMTQsIAorICAgIDEyMDEyNiwgODk0MiwgMTIwMDAsIDY5MjI0LCA5MjI2NywgMTI4NTM2LCAxMTk3NCwgNjczNjMsIDQyNzcyLCA0MjY1MCwgCisgICAgMTE2NTAsIDUwMTMsIDkyNjYzLCA2ODgxMCwgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDExMTkzLCAxOTQ2NzcsIAorICAgIDcyNzU0LCA2NDcxNCwgNzE0NzksIDcwODAyLCAxMjE2MiwgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgCisgICAgNjYyMjgsIDEwNTYzLCA5Mjk1NCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgOTI5NTUsIDE4MzcsIDEyNTA4NiwgNjM5NzIsIAorICAgIDY5NTcsIDAsIDExMzgyMCwgNDk1MiwgNjU3MTgsIDY0NDA1LCA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgCisgICAgNzI4NzcsIDc1MDE2LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMTI3MjEzLCA4MTA3LCA2NzE1NCwgMTEyNywgNDU1LCAKKyAgICAwLCA2Mzk2OCwgNzI4NjAsIDM0ODMsIDExOTU5MywgMTk4OSwgOTgzMTc2LCA2OTY3OCwgOTEwNCwgMzUwMywgNjUzNzUsIAorICAgIDY4MzAwLCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzI4MTAsIDQxNDQ2LCAyNTQwLCA3NzM2LCAxMjE0MzQsIDc0MDY0LCAKICAgICAxMjg2MDEsIDEwNTIxLCA3MDc4NiwgNDIxNzMsIDk3MDUsIDc0MTI0LCA4NjA0LCA2OTU1LCAxMDkxNiwgNDM2ODQsIDYxNDksIAogICAgIDM4ODcsIDE5OTU2LCAxNDExLCAyODI0LCAwLCAxMDEwNiwgMTI3ODYyLCAxNDAzLCAxMjUwNTMsIDEzNDcsIDk2MzEsIAotICAgIDc0NDQ0LCA5ODM3NTMsIDEyNzk5NywgOTI5NTEsIDc0ODk3LCA4NjQwLCAwLCAyNTgsIDE2NTQsIDAsIDAsIDk4MzQ3OSwgCi0gICAgNDMzMTQsIDAsIDAsIDQwNDIsIDExNDc4LCAyODczLCA2Mzk3NywgMTE1MjIsIDQxNjY4LCA4NTQ5LCAxMDg2MSwgMTIxMDUzLCAKLSAgICA2Mzk3NiwgNzAzNzcsIDY4NjIzLCA2NzA4MiwgNjcwODEsIDQxMzkxLCA2NzA4NCwgODM0NjUsIDM3NiwgNjk4NywgOTIyMSwgCi0gICAgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIDQxODY5LCAxMjYxOSwgMTI4MDY3LCAxMDE1NCwgOTgzMDQzLCAKLSAgICA3NDQzOSwgMjAzOSwgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCA0NTgsIDEyMDYyMCwgODI5NTAsIDY5NzkxLCAKLSAgICAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCAxMjEwNTcsIDEyMjg4LCA3ODA1NywgNjcwODAsIDE0OTMsIAotICAgIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgNjYxMCwgNjAzMCwgODA1OSwgNzUwOCwgCi0gICAgMTMxMzEsIDY3MDc0LCA2NzA3MywgMTI4NTA2LCA4Nzk0LCA0MTI3OCwgNDE2MjksIDEyMTU0LCA3NTA3MywgNDEyNzcsIAotICAgIDY0NjU4LCA5ODM0NTYsIDY0MzgwLCA2NjI1LCA0MjkxMSwgMTk5MDQsIDAsIDEyMTMwNSwgNzExOTMsIDY1MzcxLCA3MDc4LCAKLSAgICAxMjg2OTksIDgzMywgMTI4MjI4LCA2MzY5LCAxOTQ4MTUsIDEwOTc5LCA0MTk1MywgOTgzMzcwLCA0MTQzNCwgNjA2MiwgMCwgCi0gICAgMCwgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgOTg0MiwgNjcyMCwgNjU3NDQsIDcxMjAwLCA5ODM1OTIsIDEyMTIyMywgCi0gICAgMTI2NTY3LCA3NDA1LCAxMDEwNSwgNjU4MTAsIDAsIDQxNjMyLCA3NDkzLCA1NTI5MCwgOTI4OTAsIDQxNjIyLCAwLCAwLCAKLSAgICAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMTE5NjM4LCAwLCAKLSAgICAzNjEyLCAwLCA2NDM3NiwgOTM5ODcsIDUzODksIDkyNTk3LCAwLCA2NTkzOCwgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgCi0gICAgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIDgzMjIyLCA4MzIyMywgNjk1NiwgNDQwMywgMTk5NjIsIDY1NTU5LCAzMjk5LCAKLSAgICAxMjEwMDUsIDE5NDkzOSwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIDU0NiwgNDI0NjksIAotICAgIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgNDMwNzcsIDYzOTUyLCA4NDI1LCAKLSAgICAzNjAyLCA4MzI4LCAxMTc2NCwgODMxOTksIDgzMjAwLCA2NTA2NSwgNDExODMsIDEyOTA3LCAxMDI3MSwgMTAyODcsIDY4NCwgCi0gICAgNDM1MjUsIDEyNzk5NiwgMjg1NCwgODMyMTQsIDQ1OTIsIDY1NzU1LCA4MzIxNywgNjcxMjAsIDExOTYzLCA0MzYyMCwgCi0gICAgNjcxMTcsIDc4MjQ5LCA2NzEyMywgNjcxMjIsIDY3MTIxLCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDY5Njc3LCAKLSAgICA2NzExNiwgODY0OCwgMTI4Mzc3LCA2NzQxLCA0MzA0NywgMTE5OTAwLCAxMzE4MCwgNzgwNzcsIDQxOCwgMTIwNjUzLCAKLSAgICA2NDQ5NSwgMTAyOTUsIDEwMzI3LCAxMDM5MSwgNDE3NTIsIDY2ODQ2LCA4NjQxLCA0MTQ0OSwgODMxOTQsIDc0MTAwLCAKLSAgICA4MzE4NiwgMTA5MTEsIDY5NDIsIDEyMDg3OSwgMTAyNCwgNDI4NDksIDQxNzUxLCA2OTc3NiwgODk0MSwgOTgzNTU2LCAKLSAgICA0NTU0LCA2Njg5MiwgOTAyMywgMTE2ODUsIDEyMTQ3NiwgOTkyOCwgNjcxMDksIDY2ODY1LCAxMTQzNywgNDM3NDEsIAotICAgIDY3MTEzLCA2NzExMiwgNjM5NjcsIDEyOTA1NiwgNDEyMDYsIDEyNjI0LCA5MDQ5LCA0MTE4NSwgNDMxNjYsIDEyMTI3NSwgCi0gICAgODE1OSwgOTI2MTksIDExNjg2LCA3MTQ3OCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMTI5MDkwLCA5MjE4MywgCi0gICAgNjQ1MjMsIDEwMzQzLCAxMDQwNywgOTI3NjQsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgNzQwMTMsIDEyMDUwLCAKLSAgICA2ODIwMSwgMjg2MCwgMCwgMTI3OTM0LCA3MDgyOCwgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDEyMTQwMSwgCi0gICAgNDM4NzUsIDY3MTAzLCA4ODc1LCAwLCA2NzEwMiwgNjcxMDUsIDc1MzEsIDEyODQ3LCAyNDEzLCAxMTg5MTcsIDY3NDA0LCAKLSAgICA5NjIsIDAsIDEyODU1LCA0MTE5NiwgNDI1NjQsIDEyNzk3NSwgMTU4MiwgOTgzNzE1LCA1NTA4LCAwLCAxMjA5MDQsIAotICAgIDc0NTg4LCAxMDgwMSwgNjk4NzYsIDkyMzU0LCAxMTkyMDcsIDcxNzMsIDQ5NiwgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgCi0gICAgNzg2MCwgMTI4MDQ5LCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIDc5OCwgNjQ2OTQsIDEyODAxLCAKLSAgICA4NDA2LCAxMTUzLCA4MzI2MywgNjQ3ODgsIDgzMjY1LCA4MDU0LCA5MTc0LCA2NzA4NywgNjcwODYsIDk5NjQsIDY3MDk2LCAKLSAgICA0MTYxMSwgNDY0MiwgNjY1NzQsIDExNTU2LCA0MjUxMiwgMCwgNzg4NTcsIDQyMDg5LCA3NDYxMywgOTAwOCwgMCwgCi0gICAgMTI2NTkyLCAxOTUwOTYsIDQyMDc5LCA4MzI0OCwgNzc5MjQsIDQyNTEzLCA3NzkyNywgNDI4NDIsIDczOTg1LCA2NTI4NSwgCi0gICAgNjgzMzgsIDgzMjM5LCA4MzI0MCwgODMyNDEsIDgzMjQyLCA5ODM1OTAsIDExMzM1LCA2NDA2OSwgNDIwOTMsIDM5MjAsIAotICAgIDkxNzg2OSwgMCwgMTExMTAsIDgzMjU1LCA0NTgwLCA0MTk2NywgODMyNTgsIDY0Mzg0LCA4MzI1MiwgODMyNTMsIDMwMjEsIAotICAgIDQyMDA0LCA5ODMwOTYsIDgzMjQ5LCA0MjMxNywgNDE5OTgsIDAsIDY5NDYsIDE5NDc1NSwgOTI5NjcsIDEyODQ1NSwgCisgICAgNzQ0NDQsIDE5NDk0NiwgMTI3OTk3LCA5Mjk1MSwgNzQ4OTcsIDg2NDAsIDEwMDk3NiwgMjU4LCAxNjU0LCAwLCAwLCAKKyAgICA5ODM0NzksIDQzMzE0LCAxMjc5ODcsIDcwNjk5LCA0MDQyLCAxMTQ3OCwgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgCisgICAgODU0OSwgMTA4NjEsIDEyMTA1MywgNjM5NzYsIDcwMzc3LCA2ODYyMywgNjcwODIsIDY3MDgxLCA0MTM5MSwgNjcwODQsIAorICAgIDY3NTg4LCAzNzYsIDY5ODcsIDkyMjEsIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIAorICAgIDEyODA2NywgMTAxNTQsIDkxNzkyMSwgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgNDU4LCAKKyAgICA3MjgzMSwgODI5NTAsIDY5NzkxLCAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCAxMjEwNTcsIAorICAgIDEyMjg4LCA3ODA1NywgNjcwODAsIDE0OTMsIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgCisgICAgNjYxMCwgNjAzMCwgODA1OSwgNzUwOCwgMTMxMzEsIDY3MDc0LCA2NzA3MywgMTI4NTA2LCA4Nzk0LCA0MTI3OCwgNDE2MjksIAorICAgIDEyMTU0LCA3NTA3MywgNDEyNzcsIDY0NjU4LCAxMjgxMTIsIDY0MzgwLCA2NjI1LCA0MjkxMSwgMTk5MDQsIDAsIDEyMTMwNSwgCisgICAgNzExOTMsIDY1MzcxLCA3MDc4LCAxMjg2OTksIDgzMywgMTI4MjI4LCA2MzY5LCAxOTQ4MTUsIDEwOTc5LCA0MTk1MywgCisgICAgMTk0OTM1LCA0MTQzNCwgNjA2MiwgMCwgMCwgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgOTg0MiwgNjcyMCwgNjU3NDQsIAorICAgIDcxMjAwLCAxMjg2NDUsIDEyMTIyMywgMTIxMjQ1LCA3NDA1LCAxMDEwNSwgNjU4MTAsIDAsIDQxNjMyLCA3NDkzLCA1NTI5MCwgCisgICAgOTI4OTAsIDQxNjIyLCA3MDcwNCwgMCwgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIDk4MDUsIDU5OTAsIAorICAgIDkwMCwgMTAwNzU3LCA2Mzk1NywgMTE5NjM4LCA5ODM5NzcsIDM2MTIsIDcwNjg3LCA2NDM3NiwgOTM5ODcsIDUzODksIAorICAgIDkyNTk3LCAwLCA2NTkzOCwgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIAorICAgIDgzMjIyLCA4MzIyMywgNjk1NiwgNDQwMywgMTk5NjIsIDY1NTU5LCAzMjk5LCA2NTY4NiwgMTI4NTYxLCAxMTkxMjcsIAorICAgIDkwMDIsIDk4MzQyMiwgNzQzNzIsIDc0MjM2LCA4NDc4LCA3NTk4LCA1NDYsIDQyNDY5LCA2NTU2OSwgMTkxOCwgOTU0MiwgCisgICAgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDQzMDc3LCA2Mzk1MiwgODQyNSwgMzYwMiwgODMyOCwgMTE3NjQsIAorICAgIDgzMTk5LCA4MzIwMCwgNjUwNjUsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCA2ODQsIDQzNTI1LCAxMDA1MzEsIAorICAgIDI4NTQsIDY2NzQ3LCA0NTkyLCA2NTc1NSwgODMyMTcsIDY3MTIwLCAxMTk2MywgNDM2MjAsIDY3MTE3LCA2NjczNiwgCisgICAgNjcxMjMsIDY3MTIyLCA2NzEyMSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCA2OTY3NywgNjcxMTYsIDg2NDgsIAorICAgIDEwMDk5NSwgNjc0MSwgNDMwNDcsIDEwMDQ2MCwgMTMxODAsIDc4MDc3LCA0MTgsIDY2NzU0LCA2NDQ5NSwgMTAyOTUsIAorICAgIDEwMzI3LCAxMDM5MSwgNDE3NTIsIDY2ODQ2LCA4NjQxLCA0MTQ0OSwgODMxOTQsIDc0MTAwLCA4MzE4NiwgMTA5MTEsIAorICAgIDY5NDIsIDEyMDg3OSwgMTAyNCwgNDI4NDksIDQxNzUxLCA2OTc3NiwgODk0MSwgMTAxMDMyLCA0NTU0LCA2Njg5MiwgOTAyMywgCisgICAgMTE2ODUsIDEyMTQ3NiwgOTkyOCwgNjcxMDksIDY2ODY1LCAxMTQzNywgNDM3NDEsIDY3MTEzLCA2NzExMiwgNjM5NjcsIAorICAgIDEyOTA1NiwgNDEyMDYsIDEyNjI0LCA5MDQ5LCA0MTE4NSwgNDMxNjYsIDEwMDg0MCwgODE1OSwgOTI2MTksIDExNjg2LCAKKyAgICA3MTQ3OCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMTI5MDkwLCA5MjE4MywgNjQ1MjMsIDEwMzQzLCAxMDQwNywgCisgICAgOTI3NjQsIDY2NjcxLCAxMTQ2NiwgMCwgMTAwODM3LCA0Mjg5MCwgNzI4NDQsIDIyNjEsIDY4MjAxLCAyODYwLCAwLCAKKyAgICAxMjc5MzQsIDcwODI4LCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMTIxNDAxLCA0Mzg3NSwgNjcxMDMsIAorICAgIDg4NzUsIDAsIDY3MTAyLCA2NzEwNSwgNzUzMSwgMTI4NDcsIDI0MTMsIDEwMDUyMiwgNjc0MDQsIDk2MiwgOTE3ODE0LCAKKyAgICAxMjg1NSwgNDExOTYsIDQyNTY0LCAxMDEwMDksIDE1ODIsIDEwMDg0MiwgNTUwOCwgMTAwNDkyLCAxMjA5MDQsIDc0NTg4LCAKKyAgICAxMDgwMSwgNjk4NzYsIDkyMzU0LCAxMTkyMDcsIDcxNzMsIDQ5NiwgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgNzg2MCwgCisgICAgMTI4MDQ5LCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAKKyAgICAxMTUzLCA4MzI2MywgNjQ3ODgsIDgzMjY1LCA4MDU0LCA5MTc0LCA2NzA4NywgNjcwODYsIDk5NjQsIDY3MDk2LCA0MTYxMSwgCisgICAgNDY0MiwgNjY1NzQsIDExNTU2LCA0MjUxMiwgMCwgNzg4NTcsIDQyMDg5LCA3NDYxMywgOTAwOCwgMCwgMTAxMDI4LCAKKyAgICAxMDA0NjgsIDQyMDc5LCA4MzI0OCwgNzc5MjQsIDQyNTEzLCA3NzkyNywgNDI4NDIsIDczOTg1LCA2NTI4NSwgNjgzMzgsIAorICAgIDgzMjM5LCA4MzI0MCwgODMyNDEsIDgzMjQyLCA5ODM1OTAsIDExMzM1LCA2NDA2OSwgNDIwOTMsIDM5MjAsIDEwMDUwNCwgCisgICAgMTAwODUwLCAxMTExMCwgODMyNTUsIDQ1ODAsIDQxOTY3LCA4MzI1OCwgNjQzODQsIDgzMjUyLCA4MzI1MywgMzAyMSwgCisgICAgNDIwMDQsIDk4MzA5NiwgODMyNDksIDQyMzE3LCA0MTk5OCwgMTI4NzU2LCA2OTQ2LCAxOTQ3NTUsIDkyOTY3LCAxMjg0NTUsIAogICAgIDEyODE5MywgNjUyMDQsIDAsIDY4MTEzLCA0MjY5MCwgOTg4MCwgNDIwMTAsIDc0ODI0LCA2NDU4OSwgMTAxMTEsIDY0ODc1LCAKLSAgICAxMjc4ODAsIDY4MDM1LCA0Mzk5OCwgMTEzNjAsIDgzMjMzLCA3NDE4MiwgODMyMzUsIDgzMjI4LCA0MjE0OSwgODMyMzAsIAorICAgIDEyNzg4MCwgNjgwMzUsIDQzOTk4LCAxMTM2MCwgODMyMzMsIDc0MTgyLCA3MDY5MSwgODMyMjgsIDQyMTQ5LCA4MzIzMCwgCiAgICAgNjg1MDgsIDkxNzk5MywgNjQ5NDEsIDc3OTE5LCAxMjA0MjEsIDEyODA3NywgNzQ4ODUsIDU1MjQ3LCA0MTEwLCA2NjAwNSwgCiAgICAgNjk1OSwgMTA5MjksIDQyOTA3LCAxMjgwODAsIDY2NzAzLCA3NzkyMSwgODYxNywgNDE5ODIsIDYwMjUsIDY5MjQyLCAKLSAgICAxMjEwNjgsIDE5NDg1NCwgMTI1MTM5LCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM3OCwgMTAxMTcsIDk4MzE2OSwgCi0gICAgOTIyOTcsIDQxNjM2LCAxOTQ4ODksIDczNzM4LCAxMjA2ODEsIDgzMDEsIDAsIDAsIDE4NywgMTI4MjM3LCA2NTY2OSwgCi0gICAgMTI4MzM5LCA0OTYzLCAwLCA2ODc2NSwgMCwgODk2NCwgNjU2NzYsIDc3NzUsIDk4Mzg0OSwgNDE5NDgsIDEyNTAwMywgMCwgCi0gICAgODMyMzYsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjA2MTYsIAotICAgIDQxNzY2LCA3NDk0OCwgNjU4ODIsIDc4ODQ5LCA0MTc2MCwgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgNjc4NTksIAotICAgIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCA3MzgzNSwgNzg4OCwgODM0MDUsIDM5ODAsIDcwMzczLCA0MjY1NiwgNDE1MDcsIAotICAgIDg4MDYsIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgNzg2NywgNjkyMTgsIDYyMzYsIDEyNzE2MiwgMCwgMTA1MDUsIAotICAgIDEyNjYzOCwgMTI4NTEsIDgzNDg5LCAzNDgsIDU0NzQsIDEyMTM4MiwgMzEwMywgMCwgNDE3NTMsIDcxMTA5LCAxMjg2MDQsIAotICAgIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIDQxNzU2LCA0MzM0NywgNDI1NjAsIDUzOTEsIAotICAgIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNjk5MzAsIDI2OTEsIDY4NzUyLCA2NTU1MywgNzkzMywgNTU2MiwgCi0gICAgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEyODE0NiwgNjQ0MjEsIDc0ODQ2LCA0MTI1MSwgMTI3MjQyLCAwLCAzOTc5LCAKLSAgICA3MTI0OCwgMTk0ODk5LCA2ODMzMSwgOTE3OTEyLCA2ODg0NywgOTgzNjk3LCA4MzM4MiwgNzQ2MzMsIDQxMjY2LCA2ODgzNiwgCi0gICAgNjY1NjYsIDEyODgzNiwgMTA1ODUsIDY1NzQxLCA0MTczNywgMjI3NSwgMjY2NiwgMTIxMjMyLCA0MTczOCwgODMxLCA0MTksIAotICAgIDEzMTI2LCAxMDcxNiwgODM0MDAsIDQyODIyLCAwLCA2NDM0LCA3NDg1NywgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCAKLSAgICA2OTkzMiwgOTE2LCA3NjksIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgCi0gICAgNDk5NCwgNDg3LCAxMjY1MzcsIDQ0OTcsIDM3NTQsIDgzMDcyLCA4MzEwNSwgOTAzOSwgMCwgNDE3NzYsIDAsIDg3MTYsIAotICAgIDE1OTUsIDQxNjE1LCAxMjEwMDEsIDAsIDc0MjYwLCA3NDg2MCwgNDI4NTQsIDQzMjE5LCA4MzMxMSwgMTIxMTA3LCAxMjE4NSwgCi0gICAgMTEzODEwLCA3MDA3MiwgNjgzNTUsIDY4MzU3LCA2ODQyMSwgNDI4NTYsIDg2MzQsIDAsIDExOTk4OCwgNDIwOSwgNzUwNTcsIAotICAgIDY4ODMyLCA2NTg3OSwgNDE1MzgsIDY1NjEyLCA2ODgyMiwgNjY5LCA1Njc5LCA2ODgxMywgNjg4MTUsIDY4ODExLCA2ODgxMiwgCi0gICAgNjg4MDQsIDU2NzgsIDExODIxLCA2ODgwMiwgNjcxMSwgNDYwLCAxMjE1MTMsIDAsIDk4MzQ2MywgNzAxMTQsIDEyMDc0NywgCi0gICAgMTk0NzE4LCAxMjE1MTksIDc4MDUwLCAxMTkwMjIsIDAsIDEyMTUxNSwgMTIxNTE0LCA3NzgyLCA5MDQ0LCA0OTc0LCAKLSAgICAxMTc2MCwgNzg0OTQsIDc1NzcsIDY1NzExLCA0MTkxMiwgMTIxNiwgMCwgMTI3MDE3LCA1NzkyLCAxMjY2NDMsIDEyODMxOSwgCi0gICAgNzg1MDEsIDAsIDI5MzMsIDEyMjQ0LCA5ODM3MDIsIDU2ODMsIDkxNzg5NiwgMTIwODk1LCA3ODExOSwgMTU0OSwgMCwgCi0gICAgOTgzMjIzLCAxMjAzOTgsIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA2OTkzNSwgMTAwMDEsIDY3MjM3LCAKLSAgICA2OTc2OCwgMTQ0OSwgMTAyNDEsIDc4MjkwLCAxMTk1ODcsIDE5NDg5MSwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgNzAzMzAsIAotICAgIDg1ODQsIDY4MDMwLCA1NTY3LCAyNzE3LCA4MzE3OSwgNzE0NDgsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIAotICAgIDkxNzYxMSwgMTIwODgxLCAwLCA2NTcwOCwgNjU3MDksIDU1NjYsIDY5ODAzLCA2NTcwNCwgNjU3MDUsIDExOTA0LCA0Mjg3NSwgCi0gICAgNDMzNzMsIDQyNTM5LCA1OTQyLCA4NDY4LCAxMjA1NjEsIDEwMzYxLCAxMDQyNSwgNjU2OTcsIDY1Njk4LCA2NTY5OSwgCi0gICAgNjgwNTIsIDY2NTk4LCAxMTA1OTIsIDY0NjY0LCAxMDY0NywgNzg3MDIsIDc4NzAzLCA3ODY5MCwgNDU3LCA3ODUwMiwgCi0gICAgNjU3MDEsIDE5MzQsIDQzMDA2LCA4MzI4MCwgODgwMiwgNzg3MTAsIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCAKLSAgICA3ODcxNiwgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMCwgMTE5NjEsIAotICAgIDc4NzI1LCA2Njg1MCwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMTI3ODk5LCA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCAKKyAgICAxMjEwNjgsIDEyODk3OSwgMTIxMzk4LCA5MTc5NzksIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzc4LCAxMDExNywgNzA3MzMsIAorICAgIDkyMjk3LCA0MTYzNiwgMTk0ODg5LCA3MzczOCwgOTI3MjQsIDgzMDEsIDAsIDAsIDE4NywgMTI4MjM3LCA2NTY2OSwgCisgICAgMTI4MzM5LCA0OTYzLCAxMjc5OTYsIDY4NzY1LCAxMjgxOTgsIDg5NjQsIDY1Njc2LCA3Nzc1LCAxOTQ3NjMsIDQxOTQ4LCAKKyAgICAxMjUwMDMsIDAsIDgzMjM2LCA0MTk0MiwgNjU0NDksIDMxNjAsIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgCisgICAgMTIwNjE2LCA0MTc2NiwgNzQ5NDgsIDY1ODgyLCA3ODg0OSwgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIAorICAgIDY3ODU5LCA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgNzM4MzUsIDc4ODgsIDgzNDA1LCAzOTgwLCA3MDM3MywgNDI2NTYsIAorICAgIDQxNTA3LCA4ODA2LCA3MDIzLCA3MjczNCwgNzQyNzksIDk0NDcsIDcwNzAyLCA3ODY3LCA2OTIxOCwgNjIzNiwgMTI3MTYyLCAKKyAgICA5ODM2MDgsIDEwNTA1LCAxMjY2MzgsIDEyODUxLCA4MzQ4OSwgMzQ4LCA1NDc0LCAxMjEzODIsIDMxMDMsIDAsIDQxNzUzLCAKKyAgICA3MTEwOSwgMTI4NjA0LCAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCA0MTc1NiwgNDMzNDcsIAorICAgIDQyNTYwLCA1MzkxLCA0MTc0NiwgMTAwOTY3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAyNjkxLCA2ODc1MiwgCisgICAgNjU1NTMsIDc5MzMsIDU1NjIsIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMDA4MjMsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIAorICAgIDEyNzI0MiwgMCwgMzk3OSwgNzEyNDgsIDEyOTQxNSwgNjgzMzEsIDkxNzkxMiwgNjg4NDcsIDk4MzY5NywgODMzODIsIAorICAgIDc0NjMzLCA0MTI2NiwgNjg4MzYsIDY2NTY2LCAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDIyNzUsIDI2NjYsIAorICAgIDEyMTIzMiwgNDE3MzgsIDgzMSwgNDE5LCAxMzEyNiwgMTA3MTYsIDgzNDAwLCA0MjgyMiwgMCwgNjQzNCwgNzQ4NTcsIAorICAgIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgNjk5MzIsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCAKKyAgICA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgMTI2NTM3LCA0NDk3LCAzNzU0LCA4MzA3MiwgODMxMDUsIAorICAgIDkwMzksIDcwNjc4LCA0MTc3NiwgMTI3MzkxLCA4NzE2LCAxNTk1LCA0MTYxNSwgNzQ0MzEsIDEyODkwMiwgNzQyNjAsIAorICAgIDc0ODYwLCA0Mjg1NCwgNDMyMTksIDgzMzExLCAxMjExMDcsIDEyMTg1LCAxMTM3MjQsIDcwMDcyLCA2ODM1NSwgNjgzNTcsIAorICAgIDY4NDIxLCA0Mjg1NiwgODYzNCwgMCwgMTE5OTg4LCA0MjA5LCA3NTA1NywgNjg4MzIsIDY1ODc5LCA0MTUzOCwgNjU2MTIsIAorICAgIDY4ODIyLCA2NjksIDU2NzksIDY4ODEzLCA2ODgxNSwgNjg4MTEsIDY4ODEyLCA2ODgwNCwgNTY3OCwgMTE4MjEsIDY4ODAyLCAKKyAgICA2NzExLCA0NjAsIDEyMTUxMywgMCwgOTgzNDYzLCA3MDExNCwgMTIwNzQ3LCAxOTQ3MTgsIDEyMTUxOSwgNzgwNTAsIAorICAgIDExOTAyMiwgOTgzODI5LCAxMjE1MTUsIDEyMTUxNCwgNzc4MiwgOTA0NCwgNDk3NCwgMTE3NjAsIDc4NDk0LCA3NTc3LCAKKyAgICA2NTcxMSwgNDE5MTIsIDEyMTYsIDEyNTA4OCwgMTAwNDExLCA1NzkyLCAxMjEzNjQsIDEwMDM5MywgNzg1MDEsIDAsIDI5MzMsIAorICAgIDEyMjQ0LCA5ODM3MDIsIDU2ODMsIDEwMDM5MiwgMTAwMzk3LCA3ODExOSwgMTU0OSwgNzA2NzAsIDEwMDQxNSwgMTIwMzk4LCAKKyAgICA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCA2NzIzNywgNjk3NjgsIDE0NDksIDEwMjQxLCAKKyAgICA3ODI5MCwgNzA3MDgsIDE5NDg5MSwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgNzAzMzAsIDg1ODQsIDY4MDMwLCA1NTY3LCAKKyAgICAyNzE3LCA2ODgxNCwgNzE0NDgsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIDkxNzYxMSwgMTIwODgxLCAwLCAKKyAgICA2NTcwOCwgNjU3MDksIDU1NjYsIDY5ODAzLCA2NTcwNCwgNjU3MDUsIDExOTA0LCA0Mjg3NSwgNDMzNzMsIDQyNTM5LCAKKyAgICA1OTQyLCA4NDY4LCAxMDA3MjksIDEwMzYxLCAxMDQyNSwgNjU2OTcsIDY1Njk4LCA2NTY5OSwgNjgwNTIsIDY2NTk4LCAKKyAgICAxMDA2ODYsIDY0NjY0LCAxMDY0NywgNzg3MDIsIDc4NzAzLCA3ODY5MCwgNDU3LCA3ODUwMiwgNjU3MDEsIDE5MzQsIAorICAgIDQzMDA2LCA4MzI4MCwgODgwMiwgNzg3MTAsIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCA3ODcxNiwgCisgICAgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMTI4NTUyLCAxMTk2MSwgCisgICAgNzg3MjUsIDY2ODUwLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAxMTk4OTgsIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIAogICAgIDcxMzA5LCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDEyNTA2MSwgNzI1NiwgMCwgNjgwOTQsIDE2NjcsIDQyMTYxLCAKLSAgICAxMjA5ODEsIDQyNDI4LCAwLCA2OTM0LCAwLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAzNjEwLCAKKyAgICAxMDA5NTgsIDQyNDI4LCAwLCA2OTM0LCAxMDA3MDIsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIDM2MTAsIAogICAgIDY4NDIwLCA0MTc0OCwgNDk5NSwgOTU1LCA2NTkwNywgMTE5MjA4LCA1MzUwLCA2NDMzOSwgNzgzMDYsIDY0NTQ5LCAxMDg3NSwgCi0gICAgMTI1MDUyLCA1NDc3LCA2NTY5MiwgMCwgMTI4NTMyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgNjgyOTgsIDAsIDM4NzQsIDAsIAotICAgIDAsIDk4MzYxOSwgMTIwMzMxLCAxMjg3NzMsIDExMzY2NSwgNjU2MDMsIDgzMjcyLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAKLSAgICA5MjA3LCA0MjIzOSwgODUzNiwgNzg3NDAsIDc4MzI0LCA3ODcyNiwgNzQ0MzIsIDcyNCwgODMwNTgsIDE0NTUsIDc4NzQ5LCAKLSAgICA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDc1MDIxLCA0MzUyMCwgCi0gICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDcwMTY4LCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAotICAgIDE5MCwgMTE5ODk5LCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIDEyMTMwMywgOTIyNjEsIDYzNzAsIDEyNTEyOCwgCi0gICAgNzgyNywgNjg0NDEsIDY5NjUsIDEyODU4MSwgMTI4ODY4LCAxMzIwMSwgMTI4MjA1LCA2OTg5NiwgNzg4NjgsIDc0MzgyLCAKLSAgICAxMTg0MSwgNzkxOCwgNzM5ODgsIDAsIDExMzY2OCwgOTE3ODg0LCAxNzI4LCA5ODM3MDUsIDQzNzY0LCAxNzgsIDEyOTcyLCAKLSAgICA3NDYyMCwgMTEzNjcxLCA3MTEwMywgMTExNjgsIDk4MzM4MywgMTEzNjcyLCA3ODMyNywgNzUwNDIsIDY1NjkwLCA4MzgyLCAKLSAgICA3MTEwNywgMTE5MDU0LCAxOTQ5NjgsIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIDEyMTMyNywgNzQwNzAsIAotICAgIDEzMDY1LCA5OTIzLCAxMDgwNiwgMTk0NTk2LCAxMTc2MywgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIAotICAgIDcxMDQ0LCAxMjEzMTIsIDgzMzMsIDEyMTMyOSwgMCwgMTEzOTAsIDAsIDc0NDY0LCAwLCA5MjMyMCwgNzQwODAsIDk4MzMxNywgCi0gICAgNjk5MTEsIDExOTEwLCA5MjU1OSwgODI3OCwgODk2MywgNDAzNCwgMTI4NTYwLCA5ODMxMTMsIDY1MzQ0LCAxMjA1MTcsIAotICAgIDQxNzQ3LCAwLCAxMjgxMTAsIDg2NzcsIDAsIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgCi0gICAgMTI3NDcsIDgzMDAsIDE5NDU2MiwgMTI0OTg0LCA3NDkxLCA4ODU2LCA3MTM2MSwgMCwgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCAKLSAgICA2NTM4OSwgMTIwNDAyLCAxMjA0MDMsIDEwODEzLCAyNTkyLCAxMjg1MywgNDMyNjksIDcyNjMsIDgzMzA4LCA2NTM2LCAKLSAgICAxMjAyMzgsIDcxODkxLCA2NTUxNiwgMTIzMjEsIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgCi0gICAgNjg0OTQsIDE1OTYsIDEyMDM4MywgNDE5OTQsIDY1ODAxLCAxMjg4MDgsIDY4MzgsIDM1NjEsIDExOTg2NywgMCwgMTA2MTMsIAotICAgIDY2OTcsIDEyODA1LCA0MTkyOCwgNDA5ODEsIDEwODA0LCA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIAorICAgIDEyNTA1MiwgNTQ3NywgNjU2OTIsIDk4MzI3NiwgMTE5MDkyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgNjgyOTgsIDEyMTE5NSwgCisgICAgMzg3NCwgMCwgMTI1MjA0LCAxMDA5OTQsIDEyMDMzMSwgMTAwOTkzLCAxMDA2NzMsIDY1NjAzLCA4MzI3MiwgNjU2ODcsIDAsIAorICAgIDQxMDM4LCA3NDAwOSwgOTIwNywgNDIyMzksIDg1MzYsIDcwNjcxLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDgzMDU4LCAKKyAgICAxNDU1LCA3ODc0OSwgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzgzMjMsIDQzNjE0LCA2OTgwMSwgOTM5LCAKKyAgICA3NTAyMSwgNDM1MjAsIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAxOTQ2NTgsIDcwMTY4LCA3ODc2NCwgNzg3NjAsIDEwNzg4LCAKKyAgICA2MDg4LCA3ODc1OSwgNzg3NTUsIDE5MCwgMTE5ODk5LCAxMjU5MywgMTAwNzM1LCA4MTg4LCA2NDQwOCwgMCwgNDQxNywgCisgICAgMTIxMzAzLCA5MjI2MSwgNjM3MCwgMTAwNDM2LCA3ODI3LCA2ODQ0MSwgNjk2NSwgMTI4NTgxLCAxMjg4NjgsIDEzMjAxLCAKKyAgICAxMDA0MzAsIDY5ODk2LCA3ODg2OCwgNzQzODIsIDExODQxLCA3OTE4LCA3Mjc0MiwgMTAxMDA2LCAxMTM2NjgsIDkxNzg4NCwgCisgICAgMTcyOCwgOTgzNzA1LCA0Mzc2NCwgMTc4LCAxMjk3MiwgNzQ2MjAsIDExMzY3MSwgNzExMDMsIDExMTY4LCA5ODMzODMsIAorICAgIDExMzY3MiwgNzgzMjcsIDc1MDQyLCA2NTY5MCwgODM4MiwgNzExMDcsIDExOTA1NCwgMTAwMzgxLCA5MjUyLCAxMDAzNzksIAorICAgIDQ2NTIsIDY4MzcxLCAxMDAzODIsIDEyMTMyNywgNzQwNzAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMTk0NTk2LCAxMTc2MywgCisgICAgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDEwMDM4OCwgNjk5MywgNzEwNDQsIDEyMTMxMiwgODMzMywgMTIxMzI5LCAwLCAKKyAgICAxMTM5MCwgOTgzMTM2LCA3NDQ2NCwgMTI3OTEwLCA5MjMyMCwgNzQwODAsIDEwMDQ0MiwgNjk5MTEsIDExOTEwLCA5MjU1OSwgCisgICAgODI3OCwgODk2MywgNDAzNCwgMTI4NTYwLCA5ODMxMTMsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAxMjgzNDIsIDEyODExMCwgCisgICAgODY3NywgMTIwNTY0LCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCAKKyAgICAxOTQ1NjIsIDEyNDk4NCwgNzQ5MSwgODg1NiwgNzEzNjEsIDEyNzkxMywgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCA2NTM4OSwgCisgICAgNjY3NzksIDY2Nzc3LCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCA4MzMwOCwgNjUzNiwgMTAwOTYyLCAKKyAgICA3MTg5MSwgNjU1MTYsIDEyMzIxLCAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDIyMzcsIDEyMDI0NiwgOTU4OCwgNjg0OTQsIAorICAgIDE1OTYsIDEyMDM4MywgNDE5OTQsIDY1ODAxLCAxMDA4NzQsIDY4MzgsIDM1NjEsIDcyNzUzLCAwLCAxMDYxMywgNjY5NywgCisgICAgMTI4MDUsIDQxOTI4LCA0MDk4MSwgMTA4MDQsIDc4NDA5LCA1MDA2LCA2NDMyOCwgMTAwOTY2LCA5OTMxLCAwLCA4ODI1LCAKICAgICA3NDU1NSwgNjU5NDAsIDQzMjU5LCAxMjY1ODYsIDYxMDcsIDgzNDU1LCAxMTkxNzcsIDc3OTQxLCA3ODQwMSwgMTE5MjcwLCAKICAgICAxMTc4MywgMzM1LCAxMjAyMjcsIDY0Njg5LCA0MzgsIDQ1MTAsIDU3NjUsIDg3MjEsIDExOTU3MCwgMTE5MjI3LCA2MDkyLCAKLSAgICAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgODA5NiwgMTAyODQsIDEyMDkzNSwgMCwgMCwgMTAzODAsIDg3MzMsIAotICAgIDEwMzE2LCA3MDEyMSwgNDE2MDIsIDkxNzU3NSwgOTIzMDgsIDc0ODMxLCA5Mzk4NCwgMCwgNjg0ODIsIDY1Mzk5LCAKLSAgICA5MTc4MjAsIDY0NTkxLCA0MjQwNSwgODM0NjYsIDEyMDgyMCwgODQzLCAxMTU0MSwgMTI4MzI2LCA3MDMyMSwgMjA2NSwgCi0gICAgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMCwgOTgzMzA2LCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIDk1NzksIAotICAgIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA4MzQ2NCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAxMDcwMCwgODgwNSwgCi0gICAgMTc0MiwgMTEzNzIyLCA5MzMzLCA4MjAyLCA3MjM5OSwgMCwgOTgzMTk3LCAxMjcyNTIsIDAsIDczODgyLCA0OTksIAotICAgIDk4MzA0OSwgNDM0NjcsIDAsIDQzODE4LCA4MzQ4MiwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDMsIDAsIAotICAgIDExOTY3LCAxNzc1LCAxMjUwMDYsIDc1MDA5LCAxMTExOCwgMTIxMzkxLCAxMjgwMDksIDk0NTgsIDkyOTM1LCA2NDcwLCAKLSAgICA5MTgwLCAxMjAzODAsIDQzMTc2LCAxMjgzMDcsIDAsIDQyNzgyLCAwLCAxMjQ5OTksIDk4MzEzNSwgMTI4MzA5LCA3Mzg0OSwgCi0gICAgMTIwNjY5LCA5NDE0LCA3NDY0NywgNzM3ODIsIDczOTY5LCA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAKLSAgICAxOTQ4NzAsIDgyNTQsIDAsIDEwOTc1LCA0MzUxOCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgNzQyNDcsIAotICAgIDEyNzE1MywgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgOTgzMTE4LCA0MzE0OSwgNzEwNTksIDY1MDMxLCA3OTYxLCAxNjM2LCAKLSAgICAwLCA2NTAyOSwgNjUwMjQsIDExOTA5OSwgMTI0NzMsIDY1MzQsIDEyMDYzMywgOTksIDk4LCA5NywgNjgyMjYsIDY3NTg0LCAKLSAgICA0MDQ5LCA3NDE2MywgMTI3MDY1LCA3MDkwLCA4MzI3NCwgNzg5MiwgMTI3MDY0LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgCi0gICAgNjU1NjIsIDY2NTk5LCA2NjcyMiwgMTk0OTU1LCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDEyNzA2MiwgNzExOTEsIAotICAgIDEyNTk2LCA2NjU5NSwgNDIyNTgsIDQyNTcwLCA1NTkzLCAxMTkxNDgsIDEyMDUzNCwgOTI0MjUsIDEwMTAwLCA2MDYxLCAKLSAgICA2NDg1NCwgMTE5LCAxMTgsIDExNywgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIAotICAgIDExNCwgMTEzLCAxMTIsIDEwMywgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCAKLSAgICA0MTIxMiwgNjc3MTMsIDE1MzYsIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyMTA5MywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgCi0gICAgMTI3NDQsIDQ3NSwgMTIwMzk0LCAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDc4ODQyLCA3MzkyNiwgNjYyOTEsIDEwNjQ1LCAKLSAgICAxMjEyLCA2NTQzLCA5ODMzMDksIDgxMzQsIDQyOTM1LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIAotICAgIDcxODkyLCAxMjA5OTYsIDg5MjMsIDE2NDUsIDEyMDU5LCA2NjU4NSwgNzEyOTcsIDMxOTYsIDcyNDA0LCAxOTQ4MjcsIAotICAgIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgOTc4NywgNjczMywgOTg1OSwgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgCi0gICAgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgMTE0NTQsIDczOTExLCAxMTM3ODcsIDczODE5LCA0MTE2OSwgODkzOSwgNDEyNDUsIAotICAgIDEyODc3NSwgNDExNzAsIDE0NTQsIDExMzY5LCA2NDc3LCAxMjE1NywgMTIwODYxLCAwLCAwLCA0MTE3MiwgNzg1NSwgMCwgCi0gICAgNzE0NzIsIDEwNDgwLCA0MzI1OCwgMTI2NTk2LCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMxMCwgNjQ1LCAxMjY2MTYsIAotICAgIDc2MDksIDQwOTczLCA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgCi0gICAgNzM5ODIsIDEyMDUxOCwgODM0NzMsIDE5NTA4NiwgNDMzNjksIDk4MzE3NywgMTI4MTQwLCA2ODQxNSwgNzc4NjEsIDQ1MzgsIAotICAgIDkzOTc4LCA0MzE0MSwgOTgzNzY5LCA4Mjk3NiwgNzQyMTQsIDczODg2LCA2NzcwOSwgOTE3NTk5LCA3MTkxOCwgNDMwMDUsIAotICAgIDcxMTE0LCA5NTUyLCAwLCA3MDEyOSwgMTI5MTczLCAxMjk5NywgODM0NzcsIDAsIDEyODg5NywgMTk1MDMwLCAyMzgxLCAKLSAgICAxMjg4MywgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMCwgNzQ2MTgsIDAsIDEyNDI1LCAxMDY2MSwgMTA4NTYsIDk2MTQsIDI0MjgsIAotICAgIDQxNDc4LCA4NTgyLCAxMDA2NCwgNzM5MzAsIDgyOTc3LCA3MDQzNywgMTIxMjUxLCA2NDg5NiwgMTE5MTYyLCAxOTUyLCAKLSAgICA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCAxMjg0NTAsIDExOTU2NiwgMTI4MDkzLCAxMjgwOCwgMTIxODMsIDYxNDUsIAotICAgIDc1MDIwLCA2NDkyOSwgNzQ5ODUsIDcxOTE2LCA3NDk4NCwgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCA5MTg3LCA4MzI3NywgCi0gICAgODMyNzgsIDEwMTkxLCA4MzI3MSwgMTE3NTIsIDMzNTMsIDkzNTgsIDk4MzQ2MiwgNzEzNjYsIDY2NjgwLCAxMjAwOTAsIAotICAgIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCAxMjAwNDcsIDk4MzA1NiwgODM0NzAsIDEyMDA4MSwgMTE5MDUyLCAKLSAgICA0MTAyNywgMTIwMDg2LCA3MTQ0OSwgMTIwMDg4LCA3MzY2LCA3MDE5LCA3MDM3OCwgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIAotICAgIDY0NjU3LCA4NjU3LCA4MzQ3MiwgODU5NCwgMTIwMDY4LCAwLCA5ODM3ODksIDEyMDA2OSwgMTIwMDcyLCAxMjAwNzEsIDAsIAotICAgIDExMzcxMSwgNDMxNTQsIDQxMDI5LCAxMTk5NTYsIDExMzMyLCA2NTM4MCwgNzcyOCwgOTQwNzcsIDExMjk0LCAwLCA2NjY2NSwgCi0gICAgNzg1MSwgMCwgODM3NSwgODY5OSwgMTI3OTQ5LCA0MjUyNCwgNjg0MTksIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCAKLSAgICA3Mzg0MiwgOTgzODY0LCAxOTQ5MjksIDgwODgsIDEyODkzNywgNzQwMTIsIDY2NTYyLCAwLCA0NDM5LCA2OTI2LCA3MjQyMywgCi0gICAgMTI5MjQsIDEyODIyNywgNDIzNjksIDQzNTAsIDY1NDkxLCA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgCi0gICAgMTI3NDc2LCAxMTI5NiwgOTgzMjg1LCA5ODM0MDksIDAsIDY1ODI1LCA5NTc3LCA2ODE5OSwgOTgzMzkzLCA2NDY3MCwgCi0gICAgOTgzMTIxLCA3ODA1NiwgNjc5MywgMTEyOTUsIDcwNDA5LCA3ODA1MywgNzM4NzIsIDc4MDU1LCAxMTk5OTMsIDEwOTAyLCAwLCAKLSAgICAwLCA3ODA3MCwgMTEyMDAsIDEwNDcyLCAyOTk1LCAxMjE0MzgsIDEyMDEzOCwgNjQ2ODIsIDIzNzEsIDc4MDY5LCAxMTg4OTMsIAotICAgIDI1OSwgMTAwOSwgNzA0MDUsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMTEzNzU3LCA2NTEyNSwgNDEyNDQsIDcwNDA3LCAKLSAgICAxMzI3MSwgOTEwMywgMjI3OCwgOTgzMTQ2LCAxOTQ3MjgsIDEyOTEyMCwgMCwgMTAyMTksIDc0OTY4LCAxOTQ3NDAsIDAsIAotICAgIDY3NzE4LCA0MzE3OCwgMTI3MDcwLCA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgMCwgOTQwNDksIDY3MzYsIDgzNDM5LCAKLSAgICA0MTQ5MiwgMTIwMDUsIDY5OTI3LCAxMjcwNjgsIDE4OTAsIDEyMDA1NiwgMCwgODM0NDMsIDAsIDcyOTMsIDc5OTEsIAotICAgIDc0MDUyLCAxMDU3OCwgMTIxMTQxLCA3ODA3NiwgMTI4NjIwLCA2NzM2OCwgNjk5MjgsIDcxODUwLCA3ODgwMCwgOTI2NTMsIAotICAgIDY0NDQ1LCA0MjY2OCwgNjYzNSwgMTI4MzA4LCA2MTY0LCA2NTE3MCwgNzQ5MzYsIDEyMTE4MiwgNzY3NiwgMTE2NjQsIDAsIAotICAgIDkzMDI1LCA2OTcwNywgOTMwMjIsIDExODgxMiwgMCwgNzEwOTYsIDEyODA0NSwgOTE3NSwgMTE5MjUsIDc4MDQ1LCA5MDg4LCAKLSAgICAxMTkxNDUsIDY0NTQ1LCAxMzk2LCAxMjA2NjQsIDc1NDYsIDM4NDcsIDcxMDg4LCA5MzAzNywgNDk4NSwgMTMyODgsIDY3MiwgCi0gICAgODA5OCwgNDMxOTYsIDE5NDc0NiwgMTIwNzIzLCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIDExNzcyLCAKLSAgICAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMTk0NzExLCAxMjgzNzEsIDEyNjIyLCAKLSAgICAxMjcyMzQsIDEyNDk0OCwgMCwgMTIxMjE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCA3NDk2OSwgCi0gICAgNDI3MzEsIDY3OTcyLCA3NDk3MCwgNzEwNjYsIDk4MzIwMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDkyNzQ2LCAKLSAgICAxMjA0MTEsIDMyNTAsIDQzOTkxLCA2OTY4NywgNjY2NDksIDk1MTAsIDY2MjM3LCA5ODMzMDQsIDAsIDQxMDY2LCA2NDY3MywgCi0gICAgOTE3OTYzLCA5MjM4MSwgMTI4NjM2LCAzNTA1LCA4NzA3LCA3NDkyNSwgNjcyNSwgMTIwODAyLCAxMjEyOTYsIDc1MDQxLCAKLSAgICAzNDcxLCA2NjM5MSwgNTQ3OSwgODgyLCA2Njg2LCAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCA3NDYwOCwgCi0gICAgMTI1MDI5LCA4MzQzMywgMTIxMjM3LCAxMjA4NDUsIDAsIDgzNDMxLCAzMjI1LCA5MTc5OTYsIDQ0MzMsIDQxMTU2LCAKLSAgICA0Mzk3MywgNDMxNzMsIDE0NDMsIDQzODEsIDAsIDk4MzY0MiwgMTA5MjYsIDExNzU2LCAxMTc1NywgNjQ4NzksIDEyMTEwNiwgCi0gICAgNDI2NTQsIDEyNzg0OCwgMTMyMjcsIDEyMDMyMCwgMTAwMjEsIDUxNjAsIDEzODcsIDAsIDkyNjQ0LCA0MTQxOCwgMTI4OTMzLCAKLSAgICA2NTkxNCwgNjcyMSwgMjE3LCA5MTc5NTUsIDkxNzk2MCwgMTIxMDgyLCAxMDQ0MywgMTA3ODksIDQxMTU4LCAxMTkyNTcsIAotICAgIDQyNzQsIDExMTQzLCA0MTQ4MywgMCwgNDEyNTAsIDEyODkwNCwgNDIxNzksIDEyODM3NSwgNTkzMSwgMTE3NDQsIDExMjE1LCAKLSAgICA3NDQ0NiwgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCA5ODM0NTgsIAotICAgIDEyMDgxMywgNDM5NywgMTI4MDM3LCAxMjgzMzYsIDQxMjk2LCA5NTQ1LCA0MTI5MSwgMTIwODkzLCAwLCA0MTQ4NSwgMzUxMSwgCi0gICAgNDEyODIsIDU5MjMsIDEwNDAwLCAwLCAxMjA0OTMsIDc2MCwgMCwgMTIwODgsIDU3ODYsIDY4MjUyLCA0MjI1NiwgMTE5ODY5LCAKLSAgICA2NzE0NSwgNDE3LCA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgNzQ5NjUsIDU5MzQsIDc0NTcyLCA2NjU4MywgNzQ5MDQsIAotICAgIDY0ODc3LCAyMjg0LCA2NDQ4MSwgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDY3MjQwLCAxOTQ2NTYsIDAsIDAsIAotICAgIDQyMjczLCA1ODE5LCAwLCAxMjgwNTYsIDAsIDExOTEyOSwgOTgzMTAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCAKLSAgICA2NTc4NSwgMTIzNywgMTAyNzQsIDQ1NTIsIDExOTU3NiwgMTI4Mjg3LCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCAKLSAgICAzMzI5LCAwLCA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMTE5MjQyLCAKLSAgICAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAxOTUwNTEsIDExOTg4MCwgMTA3NjksIDk2NzYsIDExOTA0MSwgMCwgOTc1MywgCi0gICAgOTI3NjIsIDg5NDQsIDk4MzE2NCwgMCwgMTA0NzMsIDk4MzgyMywgMTIwNDcyLCA2MDcyLCA0MzAyNSwgMTAyOTksIAotICAgIDEyODQzNiwgNjg4NDUsIDEyMDYwOCwgNjYzMjYsIDY3NDEyLCA5Mjk1MiwgMCwgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgCisgICAgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAxMjA5MzUsIDEwMDk3MCwgNzA3MTMsIDEwMzgwLCAKKyAgICA4NzMzLCAxMDMxNiwgNzAxMjEsIDQxNjAyLCA5MTc1NzUsIDkyMzA4LCA3NDgzMSwgOTM5ODQsIDk4MzgzMCwgNjg0ODIsIAorICAgIDY1Mzk5LCA5MTc4MjAsIDY0NTkxLCA0MjQwNSwgODM0NjYsIDEyMDgyMCwgODQzLCAxMTU0MSwgMTAwODEwLCA3MDMyMSwgCisgICAgMjA2NSwgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMTI1MDYwLCA5ODMzMDYsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgCisgICAgMTk1MywgOTU3OSwgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDgzNDY0LCA0MTI1NywgNDE5MDAsIDg2NzUsIAorICAgIDEwNzAwLCA4ODA1LCAxNzQyLCAxMTM3MjIsIDkzMzMsIDgyMDIsIDcyMzk5LCAxMjEwMjcsIDk4MzE5NywgMTEzODA5LCAKKyAgICAxMDA5ODksIDczODgyLCA0OTksIDk4MzA0OSwgNDM0NjcsIDE5NDkyNywgNDM4MTgsIDgzNDgyLCAxNzEyLCA1OTMyLCAKKyAgICA3Nzg0NSwgNDE3NjIsIDEyOTM3MiwgMCwgMTE5NjcsIDE3NzUsIDEyNTAwNiwgNzUwMDksIDExMTE4LCAxMjEzOTEsIAorICAgIDEwMDk4MiwgOTQ1OCwgOTI5MzUsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDEwMDQxNCwgMTAwOTg2LCA0Mjc4MiwgCisgICAgMTAwNDQwLCAxMDEwMzYsIDEwMTAzNSwgMTAwNTgxLCA3Mzg0OSwgMTAxMDQwLCA5NDE0LCA3NDY0NywgNzM3ODIsIDczOTY5LCAKKyAgICA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAxMDEwNDQsIDgyNTQsIDEwMTA0NiwgMTA5NzUsIDQzNTE4LCAKKyAgICAxMDA5NTQsIDc0NzYzLCAxMDIyLCA0MTA4LCAzODgwLCA3NDI0NywgMTAwOTUxLCAxMDA5OTEsIDkyMjYzLCA5MTc5ODAsIAorICAgIDc1MDcsIDEwMDYzOCwgNDMxNDksIDcxMDU5LCA2NTAzMSwgNzk2MSwgMTYzNiwgMCwgNjUwMjksIDY1MDI0LCAxMTkwOTksIAorICAgIDEyNDczLCA2NTM0LCAxMjA2MzMsIDk5LCA5OCwgOTcsIDY4MjI2LCA2NzU4NCwgNDA0OSwgNzQxNjMsIDEwMDk1NSwgNzA5MCwgCisgICAgODMyNzQsIDc4OTIsIDEwMTAzMCwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIDY1NTYyLCA2NjU5OSwgNjY3MjIsIDE5NDk1NSwgCisgICAgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAxMDA5NjAsIDcxMTkxLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCA0MjU3MCwgCisgICAgNTU5MywgMTE5MTQ4LCAxMjA1MzQsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIDExNiwgCisgICAgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIDEwMiwgCisgICAgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDY3NzEzLCAxNTM2LCAKKyAgICA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjEwOTMsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgCisgICAgMTMyNjYsIDEyNzgxMywgMTAxMDczLCA3ODg0MiwgNzA1MDMsIDY2MjkxLCAxMDY0NSwgMTIxMiwgNjU0MywgMTI1MjIwLCAKKyAgICA4MTM0LCA0MjkzNSwgMjkxMywgNzM4NzAsIDEyNzExMywgMTg2NiwgOTgzMjI5LCA3MTg5MiwgMTIwOTk2LCA4OTIzLCAKKyAgICAxNjQ1LCAxMjA1OSwgNjY1ODUsIDcxMjk3LCAzMTk2LCA3MjQwNCwgMTk0NzMzLCA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIAorICAgIDk3ODcsIDY3MzMsIDk4NTksIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIAorICAgIDExNDU0LCA3MzkxMSwgMTAxMDIwLCA3MzgxOSwgNDExNjksIDg5MzksIDQxMjQ1LCA4MzQ2NSwgNDExNzAsIDE0NTQsIAorICAgIDExMzY5LCA2NDc3LCAxMjE1NywgMTIwODYxLCAwLCAwLCA0MTE3MiwgNzg1NSwgMTAwOTYxLCA3MTQ3MiwgMTA0ODAsIAorICAgIDQzMjU4LCAxMjY1OTYsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzEwLCA2NDUsIDEwMDk5MiwgNzYwOSwgNDA5NzMsIAorICAgIDY5OTQzLCA3MzgzMywgNjk5NDgsIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAxMDA4MzYsIDc3MjksIDczOTgyLCAKKyAgICAxMDEwMDEsIDgzNDczLCAxMDEwMDMsIDQzMzY5LCAxMDEwMDUsIDEwMDk3MywgNjg0MTUsIDc3ODYxLCA0NTM4LCA5Mzk3OCwgCisgICAgNDMxNDEsIDEwMDk3MiwgODI5NzYsIDc0MjE0LCA3Mzg4NiwgNjc3MDksIDkxNzU5OSwgNzE5MTgsIDQzMDA1LCA3MTExNCwgCisgICAgOTU1MiwgMCwgNzAxMjksIDEyOTE3MywgMTI5OTcsIDgzNDc3LCAxOTQ5NDMsIDEyODg5NywgMTAwNzM3LCAyMzgxLCAKKyAgICAxMjg4MywgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMTAwOTgxLCA3NDYxOCwgMTAwOTgzLCAxMjQyNSwgMTA2NjEsIDEwODU2LCAKKyAgICA5NjE0LCAyNDI4LCA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCA4Mjk3NywgNzA0MzcsIDEyMTI1MSwgNjQ4OTYsIAorICAgIDEwMDk1NiwgMTk1MiwgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgMTAwOTU3LCAxMTk1NjYsIDEwMDgxNywgMTI4MDgsIAorICAgIDEyMTgzLCA2MTQ1LCA3NTAyMCwgNjQ5MjksIDc0OTg1LCA3MTkxNiwgNzQ5ODQsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgCisgICAgOTE4NywgODMyNzcsIDgzMjc4LCAxMDE5MSwgODMyNzEsIDExNzUyLCAzMzUzLCA5MzU4LCAxMjg5ODAsIDcxMzY2LCAKKyAgICA2NjY4MCwgMTAwODEzLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMTAwODEyLCAxMDA5NzcsIDgzNDcwLCAKKyAgICAxMjAwODEsIDEwMDk3MSwgNDEwMjcsIDEwMDgxMSwgNzE0NDksIDEyMDA4OCwgNzM2NiwgNzAxOSwgNzAzNzgsIDAsIAorICAgIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCA2NDY1NywgODY1NywgODM0NzIsIDg1OTQsIDEwMDk2OSwgMTAwOTY4LCAxMDA5NzgsIAorICAgIDEwMDgyMCwgMTAwOTE0LCAxMjAwNzEsIDAsIDExMzcxMSwgNDMxNTQsIDQxMDI5LCAxMTk5NTYsIDExMzMyLCA2NTM4MCwgCisgICAgNzcyOCwgOTQwNzcsIDExMjk0LCAxMDA5ODAsIDY2NjY1LCA3ODUxLCAwLCA4Mzc1LCA4Njk5LCAxMjEwOTcsIDQyNTI0LCAKKyAgICA2ODQxOSwgOTA4NSwgOTQwNDEsIDc1MDQsIDkzMjcsIDYxNjAsIDczODQyLCA5ODM4NjQsIDE5NDkyOSwgODA4OCwgNzA2OTgsIAorICAgIDc0MDEyLCA2NjU2MiwgMCwgNDQzOSwgNjkyNiwgNzI0MjMsIDEyOTI0LCAxMDA5NzQsIDQyMzY5LCA0MzUwLCA2NTQ5MSwgCisgICAgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIDEwMDk1OSwgMTEyOTYsIDk4MzI4NSwgOTgzNDA5LCAwLCAKKyAgICA2NTgyNSwgOTU3NywgNjgxOTksIDgyOTgyLCA2NDY3MCwgOTgzMTIxLCA3ODA1NiwgNjc5MywgMTEyOTUsIDcwNDA5LCAKKyAgICA3ODA1MywgNzM4NzIsIDc4MDU1LCAxMDA4MTUsIDEwOTAyLCAwLCAwLCA3ODA3MCwgMTEyMDAsIDEwNDcyLCAyOTk1LCAKKyAgICAxMDA5NTMsIDEyMDEzOCwgNjQ2ODIsIDIzNzEsIDcyNzIwLCAxMTg4OTMsIDI1OSwgMTAwOSwgNzA0MDUsIDI0MDIsIDIzMzMsIAorICAgIDY0NDAsIDEyNTI0NywgMTAwOTYzLCA2NTEyNSwgNDEyNDQsIDcwNDA3LCAxMzI3MSwgOTEwMywgMjI3OCwgOTgzMTQ2LCAKKyAgICAxOTQ3MjgsIDczMDEsIDk4MzY5MywgMTAyMTksIDc0OTY4LCAxOTQ3NDAsIDAsIDY3NzE4LCA0MzE3OCwgMTI3MDcwLCAKKyAgICA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgMTk0ODk1LCA5NDA0OSwgNjczNiwgODM0MzksIDQxNDkyLCAxMjAwNSwgCisgICAgNjk5MjcsIDEyNzA2OCwgMTg5MCwgMTIwMDU2LCA5ODMzMDIsIDgzNDQzLCA5ODMwNDQsIDcyOTMsIDc5OTEsIDc0MDUyLCAKKyAgICAxMDU3OCwgMTIxMTQxLCA3ODA3NiwgMTI4NjIwLCA2NzM2OCwgNjk5MjgsIDcxODUwLCA3ODgwMCwgOTI2NTMsIDY0NDQ1LCAKKyAgICA0MjY2OCwgNjYzNSwgMTAwNzkyLCA2MTY0LCA2NTE3MCwgNzQ5MzYsIDEyMTE4MiwgNzY3NiwgMTE2NjQsIDEyODY4NCwgCisgICAgOTMwMjUsIDY5NzA3LCA5MzAyMiwgMTE4ODEyLCA5ODMyMzMsIDcxMDk2LCAxMjgwNDUsIDkxNzUsIDExOTI1LCA3ODA0NSwgCisgICAgOTA4OCwgMTE5MTQ1LCA2NDU0NSwgMTM5NiwgMTIwMjIwLCA3NTQ2LCAzODQ3LCA3MTA4OCwgOTMwMzcsIDQ5ODUsIDEzMjg4LCAKKyAgICA2NzIsIDgwOTgsIDQzMTk2LCAxMDA3OTYsIDEyMDcyMywgMTI4MTI2LCA0MjY1NSwgNzQwNDMsIDY1MDcyLCAxNTc3LCAKKyAgICAxMTc3MiwgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDE5NDcxMSwgMTI4MzcxLCAKKyAgICAxMjYyMiwgMTI3MjM0LCAxMjA1NjYsIDE5NDc5OCwgMTIxMjE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAKKyAgICA5ODMzNTEsIDc0OTY5LCA0MjczMSwgNjc5NzIsIDc0OTcwLCA3MTA2NiwgOTgzMjAwLCAzMDUxLCA1ODYyLCA3ODIzLCAKKyAgICA5MjQ3OCwgOTI3NDYsIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgOTUxMCwgNjYyMzcsIDk4MzMwNCwgCisgICAgMTk0NzQ4LCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTIzODEsIDEyODYzNiwgMzUwNSwgODcwNywgNzQ5MjUsIDY3MjUsIAorICAgIDEyMDgwMiwgMTIxMjk2LCA3NTA0MSwgMzQ3MSwgNjYzOTEsIDU0NzksIDg4MiwgNjY4NiwgMTE5NTg0LCAxMTYxMywgCisgICAgMTAxMTA2LCA0Mjc1NCwgNzQ2MDgsIDEyNTAyOSwgODM0MzMsIDEyMTIzNywgMTIwODQ1LCAwLCA4MzQzMSwgMzIyNSwgCisgICAgOTE3OTk2LCA0NDMzLCA0MTE1NiwgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAxMjc5NDksIDk4MzY0MiwgMTA5MjYsIAorICAgIDExNzU2LCAxMTc1NywgNjQ4NzksIDEyMTEwNiwgNDI2NTQsIDEyNzg0OCwgMTMyMjcsIDEyMDMyMCwgMTAwMjEsIDUxNjAsIAorICAgIDEzODcsIDk4MzczMCwgOTI2NDQsIDQxNDE4LCA2Njc0OSwgNjU5MTQsIDY3MjEsIDIxNywgNzI4MjksIDkxNzk2MCwgCisgICAgMTAwOTY1LCAxMDQ0MywgMTA3ODksIDQxMTU4LCAxMTkyNTcsIDQyNzQsIDExMTQzLCA0MTQ4MywgMCwgNDEyNTAsIAorICAgIDEyODU2MywgNDIxNzksIDEyODM3NSwgNTkzMSwgMTE3NDQsIDExMjE1LCA3MDY3NiwgNDEyNTIsIDY2NjgyLCA5ODM2ODAsIAorICAgIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDc0MzE5LCAxMjA4MTMsIDQzOTcsIDEwMDQ0NSwgCisgICAgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyMDg5MywgMCwgNDE0ODUsIDM1MTEsIDQxMjgyLCA1OTIzLCAxMDQwMCwgCisgICAgMCwgMTIwNDkzLCA3NjAsIDEyNzE4OCwgMTIwODgsIDU3ODYsIDY4MjUyLCA0MjI1NiwgMTAwNDQ2LCA2NzE0NSwgNDE3LCAKKyAgICA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgNzQ5NjUsIDU5MzQsIDc0NTcyLCA2NjU4MywgNzQ5MDQsIDY0ODc3LCAyMjg0LCAKKyAgICA2NDQ4MSwgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDY3MjQwLCAxOTQ2NTYsIDAsIDEyNzE1MywgNDIyNzMsIDU4MTksIAorICAgIDAsIDEyODA1NiwgMCwgMTE5MTI5LCA5ODMxMDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIDY1Nzg1LCAxMjM3LCAKKyAgICAxMDI3NCwgNDU1MiwgMTE5NTc2LCAxMjgyODcsIDAsIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIDMzMjksIDAsIAorICAgIDQyODExLCAxMDMxMiwgNjk4NDUsIDEyMDc5NCwgNzg0MCwgMCwgNDM2MzAsIDEwMjUyLCAxMTkyNDIsIDEyODEwNCwgCisgICAgNDMxODUsIDAsIDQzOTYsIDEwMDUzMiwgMTAwNTM1LCAxMDc2OSwgOTY3NiwgMTAwNTM2LCAxMDA1MzksIDk3NTMsIDkyNzYyLCAKKyAgICA4OTQ0LCA5ODMxNjQsIDEyMTQ1MCwgMTA0NzMsIDk4MzgyMywgMTAwNTQyLCA2MDcyLCA0MzAyNSwgMTAyOTksIDEwMDU0NiwgCisgICAgNjg4NDUsIDEwMDU0OCwgNjYzMjYsIDY3NDEyLCA5Mjk1MiwgNzI4MDgsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAogICAgIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIDEyNzkwMiwgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIAogICAgIDc0OTM4LCA0MzMyNCwgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc0OTY3LCA3NDE0LCA3NzkyOSwgCi0gICAgNDM5ODIsIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCA5ODM3MzEsIDg1MiwgMCwgMTIxNjAsIAotICAgIDgzNDkxLCAxMDIxMiwgNjU0MzUsIDEyOTA5MiwgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIAorICAgIDQzOTgyLCA3MDc0MSwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgMTYwMiwgMCwgNzEyNjcsIDg1MiwgMCwgMTIxNjAsIAorICAgIDgzNDkxLCAxMDIxMiwgNjU0MzUsIDEyNjYwMywgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIAogICAgIDExMDM1LCAxMDQxMSwgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIDEwMzc1LCA0Mzg1MywgMTI4NTk5LCAKICAgICA0MzE1LCAxMjY0NCwgODM0OTAsIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDY3NDA4LCAxMjg5NDUsIDExNTAxLCA0MTE3NywgCi0gICAgMTIxMTgwLCAxMjg4NjYsIDQzNDMxLCAxMjcwOTcsIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgOTgzMzU4LCA0MzMxMywgCi0gICAgMTIwMjMwLCA0MTE3NiwgMTI4NzgwLCA5OTQsIDk4MzA0NSwgODQ1MiwgNzc5NzMsIDczOTY2LCA2Njg5MCwgNzA4MTIsIAotICAgIDU5MjEsIDAsIDI1OTcsIDkyNDIzLCA1OTIyLCAxMTg5MDMsIDY2ODczLCA0MTg2LCA5MjUzMSwgMTE5OTY3LCAxMjcxMDUsIAotICAgIDY3MTgsIDEyNzAyOSwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyMTA0MCwgNDQxMywgOTIxOTYsIDQyMjY4LCAKLSAgICAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIDQzMTY5LCAKLSAgICAxMDE3NiwgMCwgNzQyLCA3NDg4MSwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgNjc1NiwgCi0gICAgMTI1MTA0LCAxMjExMjYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEyMDQ5NCwgMTE0MSwgNDI0MDcsIAotICAgIDc0MTcsIDcxOCwgNzU3MiwgOTczLCAxMTk1OTksIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIDQyMzMzLCAKLSAgICA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAxMjA4NDksIDEyMDIsIDAsIDk4MzkxMCwgCi0gICAgNjU4NjMsIDAsIDY4NDg0LCA5NDAxMywgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIAotICAgIDc4MDQyLCA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDkyNDIyLCAwLCA1NTIzNywgMTQzMSwgMTE5MTk0LCA2NjU2NSwgCi0gICAgMTA4MjEsIDAsIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIAotICAgIDcxMjI4LCA5MTc5ODIsIDEyOTE4OCwgMTc0MCwgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgCi0gICAgMTIwNjgsIDc4MTAyLCA3MTIyNiwgMTAxNDEsIDc0OTIyLCA2Mzc2MSwgODc4NSwgNDQ3NiwgNjUwNzEsIDYzNzYzLCAKLSAgICAxMjY1NSwgODkwNywgOTE0NywgNzgxMDYsIDc4MTAzLCA3ODEwNCwgMTIwODk4LCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgCi0gICAgNDE1NzIsIDEyNzk3OSwgMTI3MTYwLCA5ODM1NTQsIDQxNTczLCA4MzE2MCwgMzkzMSwgMTIwMjk1LCA3NDE0MywgODMxNTYsIAotICAgIDgzMTU3LCA4MzE1OCwgNzg0NjAsIDExOTgyLCAwLCA4MzA2NywgMTI4MzgxLCA5MjcxMiwgNjQ0ODQsIDExOTI2NiwgCi0gICAgNDExNjcsIDAsIDQxNzM1LCA5NDAxOSwgNzE3LCAxMDc1NCwgODMxNjgsIDgzMTY5LCA3MjQxMywgODMxNjMsIDYzNzY3LCAKLSAgICA4MzE2NSwgMTc4MCwgNjkzNiwgMCwgODMxNjEsIDgxOSwgMTA2MTEsIDk2OTQsIDEyNjk3OCwgNzE0NzQsIDAsIDEyNzg3MSwgCi0gICAgMTI5MDY5LCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAKLSAgICAzMzQ2LCA4MzM5LCAxMjgxNjUsIDEyODIwOCwgNTc1LCAyNjgsIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCAKLSAgICA2NTU2NSwgODMzNiwgNTkzNiwgNzI5MCwgNzgxMTcsIDgzMzcsIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDgzMTUxLCAKLSAgICA3ODEyMywgNjU0NjYsIDExMDkwLCA2OTUzLCAwLCA4MzM3NSwgNzQ5NzMsIDc4MTMyLCA1OTI2LCA2ODI1MCwgNzgxMzAsIAotICAgIDc4MTI2LCA3ODEyNywgNzgxMjQsIDc4MTI1LCA5MDM4LCA3ODg3LCA0MzQ1NiwgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgCi0gICAgOTgzNTU5LCA2NTc0MiwgMTI4NzQsIDExOTU5NywgMTE1OTAsIDAsIDc0MDQ4LCA2NzM3OSwgODU5NSwgOTgzNSwgOTE3OTQ3LCAKLSAgICA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDc0OTc1LCAxMjM4MSwgMzQ4OCwgNTkzMywgMTAwMzMsIAotICAgIDcxMTAxLCA2NjI0MSwgNjU1NzAsIDExOTE1NCwgMTIyOTcsIDcxMjEyLCAxOTU1LCAxMjc5NzAsIDUzNDksIDQyNTM4LCAwLCAKLSAgICAxMjQ5MzIsIDc0MTEsIDk0NjIsIDEyODE1MCwgMCwgMTI4NDY1LCA0MzkyMCwgNDI3MzYsIDEyMTAxNywgNTc1NiwgCi0gICAgMTI4MzI0LCA3NjM4LCA0MTY0MiwgNDI3NjQsIDk4MzcxNywgNDMxMDksIDc2MzcsIDU3NTIsIDExMjEzLCA4MzQ4MSwgCi0gICAgNzM4MzIsIDEyODgyNywgODM0ODYsIDEyODIzMSwgNzgzMzQsIDkxNzk1NywgNzYzNiwgNjUxNzEsIDkxMjQsIDk4MzIxMCwgCi0gICAgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCA5ODMyMjEsIDIwMjcsIDY2MjMwLCAxMDA4MCwgNzgxMzYsIDEwNDAzLCA3MDg2OSwgCi0gICAgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDExMTgzLCAxMjA0MzEsIDEyMDQzMCwgMCwgMTI4MzUxLCAxMjc0ODksIAotICAgIDEyNzEzOCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIDE5NDY0OCwgNDEyNzQsIDU3NzgsIDYzMDIsIAotICAgIDEyMTQzMiwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNjcyNDIsIDkzMDQxLCA5NDUyLCAxMjgxNTMsIDc0MzkzLCAxMTU1MiwgCi0gICAgMCwgMTI3ODU1LCAxMjgyMTcsIDY1MzkxLCAxMjg2MTQsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCA3ODY1OCwgCi0gICAgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgMTIwNDEyLCAKLSAgICA0MTI2NywgNDY0NiwgNjc3NTksIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIDc4MjcwLCAxMjc5ODIsIAotICAgIDk4MzE3MiwgNDM5NDgsIDE5NTEwMCwgNjg4NDAsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAxNjcxLCAxMjc4OTIsIAotICAgIDYwNjksIDkyMTksIDEyODU1OCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIDExOTE0MywgMCwgCi0gICAgNzE0NjIsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIDY3NzA1LCAKLSAgICA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgMTI4NjExLCA4MzQ3NCwgMTAyMjksIAotICAgIDEwNjM1LCA4MjYsIDgzNDc1LCAxOTUwODIsIDEyNzAwMywgMTk1MDg0LCA3MTQ1NSwgNjQ4MywgOTIyMTEsIDE4MDgsIAotICAgIDc4NDgsIDExMzc4OCwgODEwMCwgNzgyMjcsIDcxMTk4LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgCi0gICAgNjc3MDQsIDk4MzkyMSwgMTEwMDMsIDk5MDQsIDgzNDEwLCA5ODM5MTksIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDkyOTkyLCAKLSAgICA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3MTA5MiwgMTAzMTMsIDgzNDA4LCA4MzUwMCwgNjQzMjAsIDEwMjY1LCAKLSAgICA2NzI1MiwgMTA5NjIsIDY2OTA0LCA0MzAwOCwgODk0NSwgNzg2ODMsIDEyMDk5NSwgNDEsIDE5NTA3MiwgMTc5MiwgCi0gICAgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDY4MjU0LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCA2NzI1OCwgMzg1LCA0MTUyLCAyNTg1LCAKLSAgICAxMjc4MDQsIDExOTA2OCwgMzEyNiwgOTE3ODUyLCA3Mzk4MywgMTA5NTcsIDEyNzAzNywgMTExNjAsIDExOTExNiwgCi0gICAgMTI3ODczLCAxMzE1NywgMCwgMTI4MDI0LCAzNTcwLCAxMjkxODcsIDc0NDMsIDExODgwNCwgNDQwMDYsIDY5OTcsIDY4MDA0LCAKLSAgICAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCA5MTc5NzEsIDY1MjE2LCA3MDE5NiwgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIAotICAgIDEyODU0MywgNzgzOSwgOTI2MTIsIDc4ODA2LCA3NTA2NCwgOTY5MSwgNDQxMSwgNzg4MDIsIDEyMTIxOSwgMTIwODU0LCAKLSAgICA0MzQ0MiwgNjk4NTEsIDY1MjU0LCAxMDA2NiwgOTgzODg5LCA3MjQxOSwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAKLSAgICAxOTkzMiwgNjQ4MzEsIDAsIDExMzY4NCwgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDY1MDcwLCAxMTA1NiwgCi0gICAgOTgzNTc0LCAxMTk5MjUsIDk4MzA5OSwgNDExNjUsIDExMzI4LCAxMjQ1MCwgOTgzODExLCA0MTE2NiwgMCwgMTI0NTYsIAotICAgIDExOTkxNCwgMTcxLCA1OTQxLCAxMjQ1MiwgMTk0NzA5LCAxMjQ1OCwgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIAotICAgIDc0MTYyLCAxMTkzMjAsIDEyMDQ4MywgOTk2OSwgMTIwNzY3LCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIAotICAgIDc4NDI0LCAzMjMwLCA2ODc3MywgOTgzNDk3LCA3NTAyNSwgNTIwOSwgMjk3LCA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIAotICAgIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIDc0MTU2LCA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIAotICAgIDc4ODkzLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIAotICAgIDY5Nzk0LCAyNDk1LCA3NDkxMSwgNTg0NCwgNjgwMzEsIDExODgzOCwgMTI3OTQ3LCAxMjY1NCwgNDY2MywgMTg5OSwgCi0gICAgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgOTI5NzIsIDAsIDExOTAwMCwgODg5MiwgNzg4NzIsIDkyMzM5LCAKLSAgICA3MTIzMiwgOTgzMDczLCA1NzgyLCA0MjAsIDEyNzM0OCwgOTE3ODcxLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAxMjg1MzMsIAotICAgIDY0ODE0LCA2Mzc5NiwgNDM4NjEsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAxMjg0NzksIDEyMTE0NCwgNjM3OTIsIAotICAgIDQ2NTksIDEyMDc4OCwgNzc5NzEsIDQzNjc2LCA3NDk0NCwgNjk2NzMsIDEyMTAyOSwgMTExMjksIDkyOTI5LCAzMjksIAotICAgIDc3OTY4LCA5MjcwNywgODM0OTYsIDczOTksIDAsIDQxMTg4LCAxMzI0NCwgNjc2OTIsIDQyMTY3LCA3NDM1LCA3ODE5MywgCi0gICAgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCAKLSAgICA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDY5Njc2LCAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIAotICAgIDU2MDMsIDAsIDQ0NzMsIDEyMTA4NSwgNzI0MjYsIDEyNDk0NywgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMTI4NTQ4LCAKLSAgICAxMTkyMTMsIDUzNDcsIDY5ODAyLCA5MTc5NzMsIDczODY4LCA3MDg1MiwgMTA1ODgsIDAsIDAsIDYzNzU1LCAxMjgyNzEsIAotICAgIDUzNDMsIDc4NDIyLCAxMjA2NjEsIDQ1NTUsIDUzNDEsIDgzNDU5LCA3MDA3MSwgNzQ5MTYsIDUzNTEsIDc4Njc1LCA0MzEwNCwgCi0gICAgNjUyNDQsIDEyMTM2NSwgNjQ1NDEsIDQyNTE5LCA2ODEzNCwgMTI4OTE2LCAxMjY5ODYsIDc0NzY1LCAxMjg5NzksIAotICAgIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCAKLSAgICA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgCi0gICAgNjUzNTUsIDUzNDUsIDExMTAzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAotICAgIDEyNjYzNSwgMjQyMywgNzQ1MTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDEyNjU3MywgMTI4NjcwLCA5ODM3ODcsIAotICAgIDAsIDY0NjA1LCAwLCA2ODA3NCwgOTgzOTc3LCA0OTE2LCAxMjg1NjgsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgCi0gICAgNjk3NzMsIDk3NzMsIDEzMTY3LCAxMjkxOCwgNDEwOTYsIDczOTgwLCA2OTI0NSwgNzgyNTQsIDgzNDUwLCAxMDY4NCwgMCwgCi0gICAgMTI1MDYzLCA5MjkwNiwgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgMCwgMTI4MjA3LCAwLCA5ODM2NTQsIAotICAgIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDExODg1NCwgNjgwMTEsIDg4NDcsIDkyMzcxLCA2NTg3NiwgNTUzNSwgODMyOSwgCi0gICAgNzQ1OTAsIDEyNTAzNiwgOTI2MDksIDAsIDY2ODc0LCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIDEyMTIxMSwgNTYwNywgCi0gICAgNDEwODksIDEyODYyNiwgMCwgNzAyOTIsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIDEyMDQ1OSwgCi0gICAgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCA2NzI3MSwgNjUwMTEsIDQxMDkwLCAwLCA4MzQxNywgMTE4OCwgNzI1NCwgCi0gICAgMTEwMCwgMCwgNjcyNzAsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjcyODIsIDY3MjgxLCA2NzI4MCwgMzU3MiwgMTAwMjMsIAotICAgIDQ5NTksIDEzMDc5LCAwLCA2NzI3NSwgOTcyOSwgMTI1MTEwLCAxMjEwNDIsIDY3Mjc4LCA0MzM2MSwgMTI3MzU1LCA2NzI3NiwgCi0gICAgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgODMzOTIsIDgzMzY5LCA0MTQ1MSwgODMzNzAsIDExMDk1LCA4MjczLCAKLSAgICA3NDMyMiwgMzQ1MSwgNzAyOTEsIDk3MiwgNDE0NTMsIDY4MTY0LCAxMTkzMjcsIDczODgzLCA2ODAyMiwgNzM5NDUsIAotICAgIDgzMzYzLCAyMjg4LCAxOTk1NSwgOTUzOCwgODMzNjYsIDY5ODA3LCAwLCAxMjkwOTUsIDAsIDgzMzgxLCAxMTM5NiwgCi0gICAgODMzODUsIDExMDE5LCAwLCAxMjg0MTYsIDEyMTIwNSwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgMjYxLCA1OTI3LCA3NzkxLCAKLSAgICAxMjg2ODEsIDczNjIsIDAsIDEwNjk2LCA3MDEyNCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCA5Mzk5NSwgMjgyLCAKLSAgICAxMTkxNzgsIDY0MzcsIDY4ODMwLCAxMjE0NTksIDk4MDEsIDY2Mzk5LCA3NDE3NywgMCwgOTE3OTU5LCAzNDc0LCA2NzI4NywgCi0gICAgMCwgNjcyODYsIDYwODEsIDgzNDY5LCA3ODg3NCwgNjcyODksIDY3MjgzLCA4MzQ3MSwgNzAwMDIsIDQyOTMwLCAwLCAKLSAgICA5MzAxMywgODc1MSwgMTE0OTksIDY3Mjk3LCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDY3Mjk4LCAxMjAyNzIsIAotICAgIDY4MDE3LCA5NjQyLCAxMDkxMiwgOTU4LCA2NzI5MywgMTEzODcsIDY3MjkxLCA0NjY2LCA3MDc5MiwgNDkxNSwgNjc3MTUsIAotICAgIDQ2NjksIDAsIDY4MDk5LCAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgNzUwNTMsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgCi0gICAgMCwgOTE3ODc1LCA4NjY0LCA5Njk3LCAzNjA2LCA4MzQ0NiwgOTgzOTc4LCA5MTc4NzQsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIAotICAgIDY3MzEyLCA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCAKLSAgICA0MjY2MSwgODM0MzgsIDEyMDI1NSwgMTIwMjU2LCAxMjMwMSwgNjc4MzYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgCi0gICAgNjY2MDIsIDEyMDI2NCwgMTAxNywgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgNzAzNDAsIDgzNDM3LCA4NjA4LCAKLSAgICA0Mjc4OSwgMTIwNjEzLCA4MzQzNiwgMCwgNzE5MDYsIDExMzA3LCA2NjcwNywgNjczMDEsIDY3MzAwLCAxMTc0NSwgNzkxOSwgCi0gICAgNjczMDQsIDE2NDEsIDAsIDAsIDg5NjYsIDEyODkwMCwgNzQ5MTksIDU5MDgsIDcxODcwLCA2Nzg1MywgNjc0NCwgNjczMTAsIAotICAgIDE2OTksIDY3MzA4LCA2NzMwNywgNjczMTQsIDY3MzEzLCA2MzA2LCAxMDE2OSwgNzEzMjQsIDExOTI1MSwgMTAwNjgsIAotICAgIDM3NjYsIDIzODksIDY3MzA1LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgOTgzODE1LCAKLSAgICA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAxMDU0MSwgNTYyMiwgCi0gICAgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgOTE3ODM3LCA0MTQzNSwgNDM1MiwgNjczMjQsIAotICAgIDI0MzUsIDcxMjExLCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIDEyMDQ0NywgCi0gICAgMzc2OCwgNDE3NzQsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIDQ1NjQsIAotICAgIDExOTA0OSwgNzQ2MjMsIDc0MjcxLCA3Mzc1MywgODM3NCwgMTI3MjAxLCAwLCA2ODI5LCA1MjI1LCA2NjkwMSwgMTI3Mzg1LCAKLSAgICAwLCAwLCAxMTk2MTUsIDY3MzE5LCA2NzMxOCwgMzE2MiwgNDM1MDcsIDExNzcxLCA2NzMyMiwgNjczMjEsIDY3MzIwLCAKLSAgICA0MjYxNCwgNTM1MywgNTYyNSwgNzQxNzksIDY3MzE1LCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCA2NDI3NywgCi0gICAgNjk5NDIsIDY5NTIsIDY3MzI5LCA2NzMyOCwgNjczMjcsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgCi0gICAgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgCi0gICAgMjQwMCwgNTYyNywgMTIwMDE3LCA2NzMzMCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAxMTM2OTMsIDIwMywgCi0gICAgNzQzNjUsIDAsIDAsIDY5OTg1LCA3ODM1MCwgMTEzNzAzLCA2NDM3OCwgNDIwNTQsIDEyODU3NSwgMCwgNTU0LCAxMTk2NDksIAotICAgIDExMzU4LCA3MTE3MiwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI1MTE0LCA3Mzg5MSwgODM0MjMsIDgzMDE5LCA1Njk0LCAKLSAgICA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMTIwOTYyLCA5MzAyOSwgNjk3NjQsIDAsIDAsIAotICAgIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCA5MTc1NjEsIDY3NzUzLCA0MzY1MSwgMTI5MTI5LCA2ODExOCwgNjgwOTMsIAotICAgIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA3NTA1OCwgNjUyNTUsIDkzOTkyLCAKLSAgICAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0MTM2LCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgNzc1NiwgCi0gICAgMTIzNDIsIDEyMDY5NywgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAxMTY4LCAKLSAgICA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIAotICAgIDkxNzg1MCwgNDE0OTQsIDkyMzE2LCA0NjYwLCA2NzExNCwgMTA0MDUsIDEyNzE5NSwgNzg4MDMsIDAsIDEyOTE3NiwgCi0gICAgNDIwNDAsIDczOTE4LCAxMTk2MjcsIDc5NDQsIDQxNDU0LCAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIDY0MDUxLCAKLSAgICA3ODg2NywgODIxNCwgODM0MjEsIDExMzc4NCwgMTIwMDM3LCA0MTQ1NywgOTgzOTcwLCAxMTk1ODksIDE5NjksIDIzODQsIAotICAgIDgwOTcsIDEyODAxOSwgNzQxMywgNjgwMTIsIDc4MDI5LCA4NzY2LCA0Mzg2NCwgNzgwNzksIDU4NTQsIDEyNTAwMCwgCi0gICAgMTA1ODMsIDAsIDExOTk4OSwgMTI3NTU2LCAxMDQxNiwgNjgwNzAsIDM4NzIsIDgzNDI0LCA5ODM4MzksIDg0MjksIAotICAgIDEyMTIzMCwgMTE4ODA2LCAyODM4LCA2NDI5LCAwLCA4MzQyNiwgMCwgMTI4NDc4LCAwLCAxOTQ2MjAsIDk0MDA1LCAxMTA5NiwgCi0gICAgODM0MjIsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgNjc4MTksIDczNzQyLCA2NiwgCi0gICAgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgODIsIDgxLCA4NCwgCi0gICAgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIDg1NTYsIAotICAgIDkxNzk3NSwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDEyNTAxNSwgNzgxODUsIDEyODk1OSwgCi0gICAgMCwgNzE0MzcsIDc4ODg2LCAwLCAwLCA3NDIyOSwgNjY1OTMsIDY0MzgsIDgzMzY0LCA5MTA5LCA3ODg4MiwgMTI4OSwgCi0gICAgNjQ1OTksIDExODkxNSwgNjgwMDksIDEyODMwMiwgNjU1MDcsIDI0NDcsIDExOTkxMSwgMTI4Njk0LCAxMjgwNDIsIAotICAgIDEyNjU0NSwgNjY1ODksIDAsIDYzMzQsIDEyODM2OSwgMCwgMTk5MzcsIDkxNzc5MywgMTMyMiwgOTIzNTksIDU2NzUsIDI1NCwgCi0gICAgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgNDIzMTIsIDAsIDE5NDY5MiwgNjk3MiwgNDI4MjYsIAotICAgIDc0NDA5LCA0MjQ2NCwgMTIwNTY3LCA2Njg5OSwgNjcxNTUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDEyODgwNSwgNjc2ODcsIAotICAgIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCA0Mzg2NywgNDE5NzgsIDE0MTIsIAotICAgIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIDcxNDI4LCAxMjA3NDgsIDMxNDAsIAotICAgIDEyNzI3NiwgNzk2MCwgNDMyNzEsIDEyMTA5OSwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIDEyNDcyLCA2NzI1NCwgCi0gICAgNjcyNTMsIDc2OTksIDEyMzkzLCA2NzI1NywgMCwgNjcyNTYsIDY3MjU1LCA4MjIzLCAwLCA0MjYxLCAxMjE0NjAsIAotICAgIDEyMDkxMCwgNzQzMDgsIDk4MzgyNywgMTEzNzEyLCA2NzE1MywgOTgzNTcxLCAxMjgwNDYsIDQzNDE5LCA5ODM0NzEsIAotICAgIDY0NTU0LCAxMDU3NCwgMzg3OCwgNjc2OTEsIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMTI4MTcxLCA0MjUwNiwgMTI4NTQxLCAKLSAgICAxMDE5OSwgOTE3ODY1LCAxMjUxNDIsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIDEyOTAzNSwgNDM0MDYsIAotICAgIDk4MzczNiwgMTQ2NCwgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCA2ODA4MiwgNjQ0ODgsIDEyODk3NywgMTIwOTUxLCAKLSAgICA2NDA0MSwgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDEyMTQxNiwgNzg4NjMsIDAsIDEzMDIsIDY2Mjg4LCAKLSAgICA3ODg2MSwgMTE5MTM0LCAwLCA2NzE1MiwgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMTIwOTIzLCAzOTk1LCA2ODM2MCwgCi0gICAgNjU2MDgsIDM3MTQsIDkyMTkwLCAxMjAwMjYsIDY3MjYyLCAxMDk5OSwgMTE3NTAsIDY3MjU5LCA0MzI1MSwgNjcyNjQsIAotICAgIDQzMzAxLCAwLCAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAxMTk2NCwgMTIxMjY4LCAxMjgwMTQsIDkyMTczLCAwLCAKLSAgICA2ODQ1NSwgNDI4NjMsIDczODM5LCAxMjc1MjksIDAsIDY3NzAwLCA5MTc4MTIsIDExMzcwMSwgNDM2NDUsIDQ2OCwgNjEyLCAKLSAgICAwLCA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCAxMjg2MjUsIDEyMjgwLCA3MDM2NywgNTQwLCAKLSAgICA3NDU2NCwgMTE5MDE3LCA2NjQyMiwgODQzMiwgNzg4NzMsIDExMDczLCAwLCA2NDMxNiwgMCwgMTIxMDcwLCA4MjAsIAorICAgIDEyMTE4MCwgMTI4ODY2LCA0MzQzMSwgMTI3MDk3LCA5MjQxMywgODcxNSwgOTgzMzk4LCA0MTE3OSwgOTgzMzU4LCA0MzMxMywgCisgICAgMTIwMjMwLCA0MTE3NiwgMTAxMDA3LCA5OTQsIDEwMDQ0OCwgODQ1MiwgNzc5NzMsIDczOTY2LCA2Njg5MCwgNzA4MTIsIAorICAgIDU5MjEsIDEwMDgwNCwgMjU5NywgNjY3NzYsIDU5MjIsIDExODkwMywgNjY4NzMsIDQxODYsIDkyNTMxLCA3Mzc0MSwgCisgICAgMTI3MTA1LCA2NzE4LCAxMjcwMjksIDQ0MDYsIDc0NjAxLCA4NDgwLCA5MTkyLCA5NzQ3LCAxMjEwNDAsIDQ0MTMsIDkyMTk2LCAKKyAgICA0MjI2OCwgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCAKKyAgICA0MzE2OSwgMTAxNzYsIDk4MzY0MCwgNzQyLCA3NDg4MSwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAKKyAgICAxMTY4MiwgNjc1NiwgMTI1MTA0LCAxMjExMjYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEwMDUxNywgCisgICAgMTE0MSwgNDI0MDcsIDc0MTcsIDcxOCwgNzU3MiwgOTczLCAxMDA1MDAsIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIAorICAgIDEyNTA5OSwgODAxOCwgNDIzMzMsIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIAorICAgIDEwMDg2OCwgMTIwMiwgMTAwNTU3LCAxMjgzNjQsIDY1ODYzLCAxMTkyNTAsIDY4NDg0LCA5NDAxMywgNzgxODIsIDY0NTQyLCAKKyAgICAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIDc4MDQyLCA2NzM4LCAxMjI4ODIsIDQzNjgxLCA2OTcyOCwgMjA1OSwgCisgICAgOTI0MjIsIDEwMDUwMiwgNTUyMzcsIDE0MzEsIDEwMDUwMywgNjY1NjUsIDEwODIxLCAxMDA1MDgsIDEyODA0LCAxMDA1MTAsIAorICAgIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIDcxMjI4LCAxOTQ2MjYsIDEyOTE4OCwgMTc0MCwgCisgICAgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgMTIwNjgsIDc4MTAyLCA3MTIyNiwgMTAxNDEsIDc0OTIyLCAKKyAgICA2Mzc2MSwgODc4NSwgNDQ3NiwgNjUwNzEsIDYzNzYzLCAxMjY1NSwgODkwNywgOTE0NywgNzgxMDYsIDc4MTAzLCA3ODEwNCwgCisgICAgMTIwODk4LCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgNDE1NzIsIDEyNzk3OSwgMTI3MTYwLCA5ODMxMjcsIDQxNTczLCAKKyAgICA4MzE2MCwgMzkzMSwgMTIwMjk1LCA3NDE0MywgODMxNTYsIDgzMTU3LCA4MzE1OCwgNzg0NjAsIDExOTgyLCA5ODM0ODMsIAorICAgIDgzMDY3LCAxMjgzODEsIDkyNzEyLCA2NDQ4NCwgMTE5MjY2LCA0MTE2NywgOTgzMzY2LCA0MTczNSwgOTQwMTksIDcxNywgCisgICAgMTA3NTQsIDcyNzQwLCA4MzE2OSwgNzI0MTMsIDgzMTYzLCA2Mzc2NywgODMxNjUsIDE3ODAsIDY5MzYsIDAsIDgzMTYxLCAKKyAgICA4MTksIDEwNjExLCA5Njk0LCAxMjUyMjgsIDcxNDc0LCAwLCAxMjc4NzEsIDEyOTA2OSwgODM0MywgODM0MiwgODM0NSwgCisgICAgODM0NCwgNjU3OCwgNzAwOSwgNzUyMywgNjkyMiwgODM0OCwgODM0NywgNzUyNSwgMzM0NiwgODMzOSwgMTI4MTY1LCAKKyAgICA3MjcwNSwgNTc1LCAyNjgsIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCA2NTU2NSwgODMzNiwgNTkzNiwgCisgICAgNzI5MCwgNzgxMTcsIDgzMzcsIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDgzMTUxLCA3ODEyMywgNjU0NjYsIDExMDkwLCAKKyAgICA2OTUzLCAxMjUyNDAsIDgzMzc1LCA3NDk3MywgNzgxMzIsIDU5MjYsIDY4MjUwLCA3ODEzMCwgNzgxMjYsIDc4MTI3LCAKKyAgICA3ODEyNCwgNzgxMjUsIDkwMzgsIDc4ODcsIDQzNDU2LCA3ODMwLCAxMTY1MSwgMTMwOTMsIDY0MDAyLCA5ODM1NTksIAorICAgIDY1NzQyLCAxMjg3NCwgMTAwNDczLCAxMTU5MCwgMTAwNDc1LCA3NDA0OCwgNjczNzksIDg1OTUsIDk4MzUsIDEwMDQ1NiwgCisgICAgNDM3MDMsIDEzMDk3LCAxMjcxOTcsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDc0OTc1LCAxMjM4MSwgMzQ4OCwgNTkzMywgCisgICAgMTAwMzMsIDcxMTAxLCA2NjI0MSwgNjU1NzAsIDc4MzM2LCAxMjI5NywgNzEyMTIsIDE5NTUsIDEyNzk3MCwgNTM0OSwgCisgICAgNDI1MzgsIDAsIDEyNDkzMiwgNzQxMSwgOTQ2MiwgMTI4MTUwLCAxMDA0NTMsIDEwMDQ1MiwgNDM5MjAsIDQyNzM2LCAKKyAgICA3MDc0NywgNTc1NiwgMTI4MzI0LCA3NjM4LCA0MTY0MiwgNDI3NjQsIDEyMDQ0NCwgNDMxMDksIDc2MzcsIDU3NTIsIAorICAgIDExMjEzLCA4MzQ4MSwgNzM4MzIsIDEwMDQ2MywgODM0ODYsIDEwMDQ2NSwgNzgzMzQsIDEyMTAzNCwgNzYzNiwgNjUxNzEsIAorICAgIDkxMjQsIDkxNzk1NywgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCA4MzQ4OCwgMjAyNywgNjYyMzAsIDEwMDgwLCA3ODEzNiwgCisgICAgMTA0MDMsIDcwODY5LCA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgMTExODMsIDEyMDQzMSwgMTIwNDMwLCA5ODMyMjMsIAorICAgIDEyODM1MSwgNzI4NDUsIDEyNzEzOCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIDE5NDY0OCwgCisgICAgNDEyNzQsIDU3NzgsIDYzMDIsIDEwMDM2NywgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNjcyNDIsIDkzMDQxLCA5NDUyLCAKKyAgICAxMjgxNTMsIDc0MzkzLCAxMTU1MiwgMCwgMTI3ODU1LCAxMjEzODAsIDY1MzkxLCAxMjg2MTQsIDEwMTcyLCA2NTQ1MywgCisgICAgNjM3ODksIDQxMjY0LCA3ODY1OCwgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCAKKyAgICA0MTI2OSwgMTIwNDEyLCA0MTI2NywgNDY0NiwgNjc3NTksIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIAorICAgIDc4MjcwLCAxMjc5ODIsIDk4MzE3MiwgNDM5NDgsIDE5NTEwMCwgNjg4NDAsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAKKyAgICAxNjcxLCAxMjc4OTIsIDYwNjksIDkyMTksIDEwMDQ2MSwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIAorICAgIDExOTE0MywgOTgzMzU5LCA3MTQ2MiwgOTQwNTAsIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIAorICAgIDExOTU2NywgNjc3MDUsIDkyNTYxLCA0MTQ2MiwgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgOTgzNjI5LCAKKyAgICAxMjc3NzAsIDgzNDc0LCAxMDIyOSwgMTA2MzUsIDgyNiwgODM0NzUsIDE5NTA4MiwgOTI2MDMsIDEyMTE0OSwgNzE0NTUsIAorICAgIDY0ODMsIDkyMjExLCAxODA4LCA3ODQ4LCAxMTM3ODgsIDgxMDAsIDc4MjI3LCA3MTE5OCwgNzg2NzAsIDEzMzAxLCA3ODY2NywgCisgICAgOTY2NywgNzg2NjUsIDY3NzA0LCA5ODM5MjEsIDExMDAzLCA5OTA0LCA4MzQxMCwgOTgzOTE5LCAxMjA2OTAsIDkxNDQsIAorICAgIDEwOTIxLCA5Mjk5MiwgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgNzEwOTIsIDEwMzEzLCA4MzQwOCwgODM1MDAsIAorICAgIDY0MzIwLCAxMDI2NSwgNjcyNTIsIDEwOTYyLCA2NjkwNCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAxMjA5OTUsIDQxLCAKKyAgICAxOTQ4NjYsIDE3OTIsIDEyMDUxNSwgMTk1MDczLCA4NjU1LCA2ODI1NCwgOTI1NDQsIDc3OTUxLCAxMjA2NiwgNjcyNTgsIAorICAgIDM4NSwgNDE1MiwgMjU4NSwgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDkxNzg1MiwgNzM5ODMsIDEwOTU3LCAxMjcwMzcsIAorICAgIDExMTYwLCAxMTkxMTYsIDEyNzg3MywgMTMxNTcsIDk4MzY0NSwgMTI4MDI0LCAzNTcwLCAxMjkxODcsIDc0NDMsIDExODgwNCwgCisgICAgNDQwMDYsIDY5OTcsIDY4MDA0LCAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCAxOTUwNDYsIDY1MjE2LCA3MDE5NiwgCisgICAgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIDEyODU0MywgNzgzOSwgOTI2MTIsIDc4ODA2LCA3NTA2NCwgOTY5MSwgNDQxMSwgCisgICAgNzEyNzYsIDcyODM3LCAxMjA4NTQsIDQzNDQyLCA2OTg1MSwgNjUyNTQsIDEwMDY2LCAxMjI4OTcsIDcyNDE5LCAxMjE0MTEsIAorICAgIDEyMDg4NiwgMTMwNjEsIDgwMTYsIDc4Njg3LCAxOTkzMiwgNjQ4MzEsIDE5NDk3NSwgMTEzNjg0LCAxMjM5MCwgMTE5MTcxLCAKKyAgICAxNjM0LCA2ODExNSwgNjUwNzAsIDExMDU2LCA5ODM1NzQsIDExOTkyNSwgOTgzMDk5LCA0MTE2NSwgMTEzMjgsIDEyNDUwLCAKKyAgICA5ODM4MTEsIDQxMTY2LCA5Mzk3MSwgMTI0NTYsIDExOTE5NCwgMTcxLCA1OTQxLCAxMjQ1MiwgMTk0NzA5LCAxMjQ1OCwgCisgICAgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIDc0MTYyLCAxMTkzMjAsIDEyMDQ4MywgOTk2OSwgMTIwNzY3LCAxMjQ1NCwgCisgICAgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIDc4NDI0LCAzMjMwLCA2ODc3MywgMTI4NTk1LCA3NTAyNSwgNTIwOSwgMjk3LCAKKyAgICA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIDc0MTU2LCAKKyAgICA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIDc4ODkzLCA3NDgxNSwgMTA1MTIsIDAsIDcyODY2LCA3ODg3NSwgNzgwNDksIAorICAgIDcyODQxLCAyNTAzLCA3Mzc3OCwgMTc2MiwgNjk3OTQsIDI0OTUsIDc0OTExLCA1ODQ0LCA2ODAzMSwgMTE4ODM4LCAKKyAgICAxMjc5NDcsIDEyNjU0LCA0NjYzLCAxODk5LCA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCA5Mjk3MiwgCisgICAgMTIwNDI0LCA3MTI3MiwgODg5MiwgNzg4NzIsIDkyMzM5LCA3MTIzMiwgOTgzMDczLCA1NzgyLCA0MjAsIDEyNzM0OCwgCisgICAgOTE3ODcxLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAxOTQ5NjcsIDEyNTIyMywgNjQ4MTQsIDYzNzk2LCA0Mzg2MSwgMCwgCisgICAgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDEyODQ3OSwgMTIxMTQ0LCA2Mzc5MiwgNDY1OSwgMTIwNzg4LCA3Nzk3MSwgNDM2NzYsIAorICAgIDc0OTQ0LCA2OTY3MywgMTIxMDI5LCAxMTEyOSwgOTI5MjksIDMyOSwgNzc5NjgsIDkyNzA3LCA4MzQ5NiwgNzM5OSwgMCwgCisgICAgNDExODgsIDEzMjQ0LCA2NzY5MiwgNDIxNjcsIDc0MzUsIDc4MTkzLCA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAKKyAgICAxMTM2NSwgNDMxMjYsIDc3OTcyLCAxMjA4NjIsIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgNDI3NjUsIDYzNzUyLCAwLCAKKyAgICA3OTg3LCA2OTY3NiwgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAKKyAgICAxMjEwODUsIDcyNDI2LCAxMjQ5NDcsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDEyODU0OCwgNjY3NDEsIDUzNDcsIDY5ODAyLCAKKyAgICA5MTc5NzMsIDczODY4LCA3MDg1MiwgMTA1ODgsIDAsIDEyODQyMCwgNjM3NTUsIDEyNjY0MywgNTM0MywgNzg0MjIsIAorICAgIDEyMDY2MSwgNDU1NSwgNTM0MSwgODM0NTksIDcwMDcxLCA3NDkxNiwgNTM1MSwgNzg2NzUsIDQzMTA0LCA2NTI0NCwgCisgICAgMTIxMzY1LCA2NDU0MSwgNDI1MTksIDY4MTM0LCAxMjg5MTYsIDEyNjk4NiwgNzQ3NjUsIDY2Nzg1LCAxMjc1MTAsIDY2MzgsIAorICAgIDEyOTM2MywgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCA0MjE3MiwgCisgICAgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgNjUzNTUsIAorICAgIDUzNDUsIDExMTAzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIDEyNjYzNSwgMjQyMywgCisgICAgNzQ1MTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDEyNjU3MywgMTI4NjcwLCA5ODM3ODcsIDAsIDY0NjA1LCAwLCAKKyAgICA2ODA3NCwgMTI3MzA3LCA0OTE2LCAxMjg1NjgsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgNjk3NzMsIDk3NzMsIAorICAgIDEzMTY3LCAxMjkxOCwgNDEwOTYsIDczOTgwLCA2OTI0NSwgNzgyNTQsIDY2NzM3LCAxMDY4NCwgMTIyOTEzLCAxMjUwNjMsIAorICAgIDkyOTA2LCA3OTQ2LCAxMjU0MSwgODE4MiwgNjc1ODYsIDY5NzgwLCAxMjk0MjIsIDEyODIwNywgOTgzNjQ0LCAxMjg2MTMsIAorICAgIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDk4MzQ5MSwgMTE4ODU0LCA2ODAxMSwgODg0NywgOTIzNzEsIDY1ODc2LCA1NTM1LCAKKyAgICA4MzI5LCA3NDU5MCwgMTI1MDM2LCA5MjYwOSwgMCwgNjY4NzQsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgMTIxMjExLCAKKyAgICA1NjA3LCA0MTA4OSwgMTI4NjI2LCA5ODMzOTYsIDcwMjkyLCAyNjY1LCAxMTMwNCwgNDM3NTEsIDc0MjAwLCA0OTcwLCAKKyAgICA4NzY0LCAxMjA0NTksIDg5MzQsIDkyNzI2LCA0MTU2NiwgNDQ5MiwgNjcyNzEsIDY1MDExLCA0MTA5MCwgMCwgODM0MTcsIAorICAgIDExODgsIDcyNTQsIDExMDAsIDEyOTE4MCwgNjcyNzAsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjcyODIsIDY3MjgxLCA2NzI4MCwgCisgICAgMzU3MiwgMTAwMjMsIDQ5NTksIDEzMDc5LCAxMjQ5NzgsIDY3Mjc1LCA5NzI5LCAxMjUxMTAsIDEyMTA0MiwgNjcyNzgsIAorICAgIDQzMzYxLCAxMjczNTUsIDY3Mjc2LCAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIDEzMzA0LCA4MzM5MiwgODMzNjksIAorICAgIDQxNDUxLCA4MzM3MCwgMTEwOTUsIDgyNzMsIDc0MzIyLCAzNDUxLCA3MDI5MSwgOTcyLCA0MTQ1MywgNjgxNjQsIDExOTMyNywgCisgICAgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgODMzNjMsIDIyODgsIDE5OTU1LCA5NTM4LCA4MzM2NiwgNjk4MDcsIDEyNTI0NiwgCisgICAgMTI5MDk1LCAwLCA4MzM4MSwgMTEzOTYsIDgzMzg1LCAxMTAxOSwgMTIxMjE4LCAxMjg0MTYsIDEyMTIwNSwgNjgwMjAsIAorICAgIDQxMDc4LCA2Njc1OCwgMjYxLCA1OTI3LCA3NzkxLCAxMjg2ODEsIDczNjIsIDEyNTI1NiwgMTA2OTYsIDcwMTI0LCA2MDczLCAKKyAgICA5ODM4LCAxMTg5MjAsIDkxNzg3OCwgNjA3NSwgOTM5OTUsIDI4MiwgMTE5MTc4LCA2NDM3LCA2ODgzMCwgMTIxNDU5LCAKKyAgICA5ODAxLCA2NjM5OSwgNzQxNzcsIDY2NzkxLCA5MTc5NTksIDM0NzQsIDY3Mjg3LCAwLCA2NzI4NiwgNjA4MSwgODM0NjksIAorICAgIDc4ODc0LCA2NzI4OSwgNjcyODMsIDgzNDcxLCA3MDAwMiwgNDI5MzAsIDEyOTQxMywgOTMwMTMsIDg3NTEsIDExNDk5LCAKKyAgICA2NzI5NywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA2NzI5OCwgMTIwMjcyLCA2ODAxNywgOTY0MiwgMTA5MTIsIAorICAgIDk1OCwgNjcyOTMsIDExMzg3LCA2NzI5MSwgNDY2NiwgNzA3OTIsIDQ5MTUsIDY3NzE1LCA0NjY5LCAwLCA2ODA5OSwgCisgICAgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDc1MDUzLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIDc0MTczLCA5MTc4NzUsIAorICAgIDg2NjQsIDk2OTcsIDM2MDYsIDgzNDQ2LCA5ODM5NzgsIDkxNzg3NCwgNjQ4MTUsIDEwNjMsIDExOTA4OCwgNjczMTIsIAorICAgIDk3NzIsIDcyNTUsIDg4ODYsIDEzODksIDEwMDgzMywgMTIwMjU3LCAxMTkyMDIsIDEyMDI1OSwgMTI5NDEsIDQyNjYxLCAKKyAgICA4MzQzOCwgMTIwMjU1LCAxMDExMDEsIDEyMzAxLCA2NzgzNiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCA2NjYwMiwgCisgICAgNjY3ODgsIDEwMTcsIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDcwMzQwLCA2Njc5MywgODYwOCwgNDI3ODksIAorICAgIDcwODY4LCA4MzQzNiwgOTgzNDgwLCA3MTkwNiwgMTEzMDcsIDY2NzA3LCA2NzMwMSwgNjczMDAsIDExNzQ1LCA3OTE5LCAKKyAgICA2NzMwNCwgMTY0MSwgMTI2NTIzLCAwLCA4OTY2LCAxMjg5MDAsIDc0OTE5LCA1OTA4LCA3MTg3MCwgNjc4NTMsIDY3NDQsIAorICAgIDY3MzEwLCAxNjk5LCA2NzMwOCwgNjczMDcsIDY3MzE0LCA2NzMxMywgNjMwNiwgMTAxNjksIDcxMzI0LCAxMTkyNTEsIAorICAgIDEwMDY4LCAzNzY2LCAyMzg5LCA2NzMwNSwgMTIwNDU1LCA2NjExLCAyNTcsIDQzMTcwLCAxMzE1MywgMCwgNDIzODYsIAorICAgIDkxNzk3NCwgOTQzNiwgMjU5OSwgOTgzNzQ3LCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAxMDU0MSwgCisgICAgNTYyMiwgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgOTE3ODM3LCA0MTQzNSwgNDM1MiwgCisgICAgNjczMjQsIDI0MzUsIDcxMjExLCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIAorICAgIDEyMDQ0NywgMzc2OCwgNDE3NzQsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIAorICAgIDQ1NjQsIDEwMDQ3MCwgNzQ2MjMsIDc0MjcxLCA3Mzc1MywgODM3NCwgMTI3MjAxLCAwLCA2ODI5LCA1MjI1LCA2NjkwMSwgCisgICAgMTI3Mzg1LCAwLCAwLCAxMTk2MTUsIDY3MzE5LCA2NzMxOCwgMzE2MiwgNDM1MDcsIDExNzcxLCA2NzMyMiwgNjczMjEsIAorICAgIDY3MzIwLCA0MjYxNCwgNTM1MywgNTYyNSwgNzQxNzksIDY3MzE1LCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCAKKyAgICA2NDI3NywgNjk5NDIsIDY5NTIsIDY3MzI5LCA2NzMyOCwgNjczMjcsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgCisgICAgNTYzMiwgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgCisgICAgNDc3MiwgMjQwMCwgNTYyNywgNzQzNjQsIDY3MzMwLCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDExMzY5MywgMjAzLCAKKyAgICA3NDM2NSwgMCwgMCwgNjk5ODUsIDc4MzUwLCAxMDEwNjUsIDY0Mzc4LCA0MjA1NCwgMTI4NTc1LCAxOTQ5OTMsIDU1NCwgCisgICAgODM0MjIsIDExMzU4LCA3MTE3MiwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI1MTE0LCA3Mzg5MSwgODM0MjMsIDgzMDE5LCAKKyAgICA1Njk0LCA3Njg5LCA2Njc4NCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMTIwOTYyLCA5MzAyOSwgNjk3NjQsIDAsIAorICAgIDEyMDYyNSwgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDkxNzU2MSwgNjc3NTMsIDQzNjUxLCAxMjc4MDEsIDY4MTE4LCAKKyAgICA2ODA5MywgMTEyOSwgNzI4NDYsIDEwMDcwNywgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA3NTA1OCwgNjUyNTUsIAorICAgIDkzOTkyLCAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0MTM2LCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgCisgICAgOTgzNjEyLCA3NzU2LCAxMjM0MiwgMTIwNjk3LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIAorICAgIDgxNDUsIDExNjgsIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCAKKyAgICA2ODEyMSwgOTE3ODUwLCA0MTQ5NCwgOTIzMTYsIDQ2NjAsIDY3MTE0LCAxMDQwNSwgMTI3MTk1LCA3ODgwMywgMTAwNDM5LCAKKyAgICAxMjkxNzYsIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCAKKyAgICA2NDA1MSwgNzg4NjcsIDgyMTQsIDgzNDIxLCAxMTM3ODQsIDEyMDAzNywgNDE0NTcsIDk4MzQ4MSwgMTE5NTg5LCAxOTY5LCAKKyAgICAyMzg0LCA4MDk3LCAxMjgwMTksIDc0MTMsIDY4MDEyLCA3MjgyMCwgODc2NiwgNDM4NjQsIDcyODI0LCA1ODU0LCAxMjUwMDAsIAorICAgIDEwNTgzLCAwLCAxMTk5ODksIDcyODE5LCAxMDQxNiwgNjgwNzAsIDM4NzIsIDgzNDI0LCAxMjczOTksIDg0MjksIDEyMTIzMCwgCisgICAgMTE4ODA2LCAyODM4LCA2NDI5LCAxMjEwNzcsIDgzNDI2LCA3MjgzNSwgMTAwNDIwLCAwLCAxOTQ2MjAsIDk0MDA1LCAKKyAgICAxMTA5NiwgODM0MjAsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgNjc4MTksIAorICAgIDczNzQyLCA2NiwgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgCisgICAgODIsIDgxLCA4NCwgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIAorICAgIDg1NTYsIDkxNzk3NSwgOTY1OSwgMCwgMTAwNzM2LCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMTI1MDE1LCAKKyAgICA2ODI4OCwgMTI4OTU5LCA5MTc5NzYsIDcxNDM3LCA3ODg4NiwgOTgzMjg4LCA5ODM0OTYsIDc0MjI5LCA2NjU5MywgNjQzOCwgCisgICAgODMzNjQsIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgMTE4OTE1LCA2ODAwOSwgMTI4MzAyLCA2NTUwNywgMjQ0NywgCisgICAgMTE5OTExLCAxMjg2OTQsIDEyODA0MiwgMTI2NTQ1LCA2NjU4OSwgOTgzODc1LCA2MzM0LCAxMjgzNjksIDkxNzkxOSwgCisgICAgMTk5MzcsIDkxNzc5MywgMTMyMiwgOTIzNTksIDU2NzUsIDI1NCwgMTI0OTY0LCAwLCA2OTY4NiwgNDI0MjUsIDg5MTgsIAorICAgIDY0MDAzLCA1NzE2LCA0MjMxMiwgMTIwMDkwLCAxMDA1NTIsIDY5NzIsIDQyODI2LCA3NDQwOSwgNDI0NjQsIDEyMDU2NywgCisgICAgNjY4OTksIDY3MTU1LCA3NDc5NiwgNjQ0MDAsIDY0NjkzLCAxMjg0MzcsIDY3Njg3LCA2NTQyOSwgOTUxNSwgNDQzNSwgCisgICAgOTgzMzY3LCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCA0Mzg2NywgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIAorICAgIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIDcxNDI4LCAxMjA3NDgsIDMxNDAsIDEyNzI3NiwgNzk2MCwgCisgICAgNDMyNzEsIDEyMTA5OSwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIDEyNDcyLCA2NzI1NCwgNjcyNTMsIDc2OTksIAorICAgIDEyMzkzLCA2NzI1NywgMCwgNjcyNTYsIDY3MjU1LCA4MjIzLCAwLCA0MjYxLCA3ODc4NCwgMTIwOTEwLCA3NDMwOCwgCisgICAgOTgzODI3LCAxMTM3MTIsIDY3MTUzLCAxMjUyNTIsIDcyNzQ0LCA0MzQxOSwgNzI3NDgsIDY0NTU0LCAxMDU3NCwgMzg3OCwgCisgICAgNjc2OTEsIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMTI4MTcxLCA0MjUwNiwgMTI4NTQxLCAxMDE5OSwgOTE3ODY1LCAxMjUxNDIsIAorICAgIDY4MDIxLCA2NTkxOSwgMTI3MTAyLCA2Njk1LCA3MjAsIDMyNCwgMCwgMTI5MDM1LCA0MzQwNiwgMTI1MjY5LCAxNDY0LCAKKyAgICA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDY4MDgyLCA2NDQ4OCwgMTI4OTc3LCAxMjA5NTEsIDM0MjAsIDc0Nzg3LCAwLCAKKyAgICA3ODg2NSwgOTIyNTgsIDY1NTk3LCAxMjE0MTYsIDc4ODYzLCAwLCAxMzAyLCA2NjI4OCwgNzg4NjEsIDExOTEzNCwgCisgICAgMTIwMjc0LCA2NzE1MiwgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMTIwOTIzLCAzOTk1LCA2ODM2MCwgNjU2MDgsIAorICAgIDM3MTQsIDkyMTkwLCAxMjAwMjYsIDY3MjYyLCAxMDk5OSwgMTE3NTAsIDY3MjU5LCA0MzI1MSwgNjcyNjQsIDQzMzAxLCAwLCAKKyAgICAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAxMTk2NCwgMTIxMjY4LCAxMjgwMTQsIDkyMTczLCAxMjA3MTAsIDY4NDU1LCAKKyAgICA0Mjg2MywgNzM4MzksIDExOTkyOSwgMCwgNjc3MDAsIDkxNzgxMiwgMTEzNzAxLCA0MzY0NSwgNDY4LCA2MTIsIDAsIAorICAgIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDEyODIwOCwgMTY3NCwgOTE3NTgxLCA1ODIzLCAxMjg2MjUsIDEyMjgwLCA3MDM2NywgCisgICAgNTQwLCA3NDU2NCwgMTE5MDE3LCA2NjQyMiwgODQzMiwgNzg4NzMsIDExMDczLCAwLCA2NDMxNiwgMCwgMTIxMDAxLCA4MjAsIAogICAgIDQxNzQxLCA5ODM0NzcsIDEyMDY2NywgMTI0OTgxLCA2NDY4NCwgMTI2OTkyLCAzMzU5LCA3ODAwLCA2OTkzNCwgNjUxNzcsIAogICAgIDYyMjYsIDM1MywgMTIzOTYsIDEyMTE3NiwgMTE5NjEyLCA2NDc0MiwgMTI4NjgyLCA3ODg3OSwgOTgzNDc4LCAxMjc5MzgsIAotICAgIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3MDM1MiwgMTg4NCwgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgOTgzMTQyLCAKLSAgICAxMTk1LCA2NDg5OCwgNzkyNCwgMTE5ODcwLCA0MTE1MSwgMjAxMCwgNzE0MzAsIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIDAsIAotICAgIDQzNjAsIDEyMTAyMywgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDkxNzYzMSwgNDI1MjEsIDg1MzksIDEyODYwNiwgMCwgCi0gICAgMTE4OTg2LCAxMjcxNDgsIDQ3ODgsIDEyMTM0NSwgNjgwMjMsIDY1NzM0LCA5ODM0NTcsIDQzNzkwLCAxMjAyNzQsIDEzMDc1LCAKLSAgICA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgNDExMzYsIAotICAgIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExMzczMSwgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCA2NDg1OSwgCi0gICAgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDY3Mjk1LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgMTI3MDksIDY5ODYsIAotICAgIDkyMzY0LCA2ODAxNSwgMTIwNTMzLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIDEwMjU0LCAKLSAgICAxMTM2ODEsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAxMjA4NzAsIDYwNywgMCwgNjgxODIsIDEyODg0NiwgMTI5MjMsIAotICAgIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAxMjkxNDksIDc4NjM5LCA0MDk3NSwgCi0gICAgNTg0MCwgNDI4MzgsIDc0OTg3LCA0MDk3OCwgMTIxMzg2LCA5Mjk0NSwgMTI4MDIwLCAxMTk4MDksIDAsIDY2NDQ0LCAKLSAgICAxMDUzOCwgMTIwODEwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDEyOTEzMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCA5ODM1ODIsIAotICAgIDAsIDU2MTksIDY1ODIyLCAxMTM3NTEsIDExMzczOCwgNzQ1NSwgNzE0MjQsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAKLSAgICAxMDcyNywgNTYxNSwgMTIwODczLCAxMjA1NTEsIDQyMzgwLCA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIAotICAgIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIDExMzUwLCA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCAKLSAgICA5MTQ1LCAxMjgwNjAsIDEzMzgsIDEyMDU4MSwgOTgzMTU4LCAxMjczOSwgNDYwMywgMzA4NCwgNzA0MDgsIDkyNDg0LCAKLSAgICA5ODU4LCA2MDM3LCA5ODM0NjUsIDM5NzQsIDc4MjEzLCAxMDI5MCwgOTgzNzA0LCAzMDgzLCAxMDMyMiwgMTI5MDQ4LCAKLSAgICAxMjkwMzAsIDc1MDM4LCA0MTAzNiwgNjY4OTcsIDAsIDQzMzIxLCA2NTYwNiwgMTI3MDcxLCA0MTAzMiwgNDIzODgsIDAsIAotICAgIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDExOTEwNSwgMCwgNDA5NjAsIDE5NDkwNywgNjc3MjcsIDEyNTEwNiwgCi0gICAgMjIyMywgNjQ5NTIsIDEwNDAyLCAxMjgzNTgsIDEyNTA0OSwgOTIzMDQsIDEwNjAzLCAwLCA5ODM0MDMsIDcxNDM4LCAwLCAKLSAgICA2NzE0LCAxMDA4MywgMTI3MDY5LCAxMjEwMTksIDc4MzY3LCA2OTk3NiwgMCwgNDM4NzIsIDkwNzMsIDQyNTg1LCA2NDMwMiwgCi0gICAgMTA3MDQsIDY1MDMwLCA0Nzg3LCAxMjkwMzEsIDc0ODI5LCAwLCA2NTQyMywgMTIxMzA2LCAxMjgxMTgsIDk1NzAsIDU1MjYwLCAKLSAgICA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAxOTQ4NzIsIDkxNzYyNCwgNDM3NDAsIDEyMTE2MywgNDA5NjYsIDEyMDAwOSwgCi0gICAgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3MTQzMywgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIAotICAgIDQxOTU0LCA5MTc2MTUsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgCi0gICAgNDMzMjAsIDExOTE1OSwgNzM5NTUsIDkyMzE1LCA2NDY4LCA0MTk3NiwgOTcyMCwgNzQ5NjQsIDExMTc5LCA0MTk3MCwgCi0gICAgNjYyNTUsIDU4MzYsIDEyMzU4LCAwLCA0MzU1LCA5MDQ4LCAxMjE4MCwgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIAotICAgIDQxNDg4LCAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIDEyNDM1LCAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCAKLSAgICA4NjE2LCA0MTQ2NiwgNDI5MjQsIDIyMjcsIDExNDUwLCA5ODM2OTEsIDM2MzgsIDEyMzU0LCA2NzI5OSwgMzIxNiwgODMwOTksIAotICAgIDIzNTgsIDgzMDkyLCA4NjMzLCA3MTIwMSwgOTgzNzQ1LCAxMTkxODIsIDY5MjQ0LCA4MzA5MCwgNzAzNzUsIDExNzU5LCAKLSAgICAxOTQ5MDMsIDYzNjgsIDc0ODIzLCA2NzMwMywgNDE0MjMsIDgwNzgsIDEwNTA0LCA4MzEwNCwgNDE2OTgsIDQyMjM3LCAKLSAgICA5ODM0NTQsIDcwMDIsIDgzMTAxLCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgNzE0NjcsIDQxMDUwLCA0MTQ3MywgCisgICAgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDcwMzUyLCAxODg0LCA5NDgxLCA0MjQxOCwgNzAwNTksIDQxMTU3LCAxOTUwNTgsIAorICAgIDExOTUsIDY0ODk4LCA3OTI0LCAxMTk4NzAsIDQxMTUxLCAyMDEwLCA3MTQzMCwgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgCisgICAgMTIwNzEyLCA0MzYwLCAxMjEwMjMsIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCA5MTc2MzEsIDQyNTIxLCA4NTM5LCAKKyAgICAxMjg2MDYsIDAsIDExODk4NiwgMTI3MTQ4LCA0Nzg4LCAxMjEzNDUsIDY4MDIzLCA2NTczNCwgOTgzNDU3LCA0Mzc5MCwgCisgICAgMTE5ODY5LCAxMzA3NSwgNzQ0MjksIDk0MDYzLCA2NDU2OSwgNDM1MzIsIDEwODM3LCAyNDkyLCA3Mjc2MiwgMTE4OTAxLCAKKyAgICA2ODYzNywgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExMzczMSwgNTEyOCwgNDAzOCwgNDExNDMsIAorICAgIDY1NjA0LCA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDY3Mjk1LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgCisgICAgMTI3MDksIDY5ODYsIDY2NzYxLCA2ODAxNSwgMTIwNTMzLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgCisgICAgNzM4MDYsIDEwMjU0LCAxMTM2ODEsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAxMjA4NzAsIDYwNywgOTgzNjIxLCAKKyAgICA2ODE4MiwgMTI4ODQ2LCAxMjkyMywgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIAorICAgIDEyOTE0OSwgNzg2MzksIDQwOTc1LCA1ODQwLCA0MjgzOCwgNzQ5ODcsIDQwOTc4LCA3ODE3NCwgOTI5NDUsIDEyODAyMCwgCisgICAgMTE5ODA5LCAxMjA4OTEsIDY2NDQ0LCAxMDUzOCwgMTIwODEwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDEyOTA5MSwgOTE3ODE1LCAKKyAgICAzNTI1LCA2ODI0LCAxMTg4ODYsIDk4MzU4MiwgMTE5ODM4LCA1NjE5LCA2NTgyMiwgMTEzNzUxLCAxMTM3MzgsIDc0NTUsIAorICAgIDcxNDI0LCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDEyMDg3MywgMTIwNTUxLCA0MjM4MCwgCisgICAgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAxMTM0NywgNzI3NjAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgCisgICAgMTEzNTAsIDU2MTcsIDcyOTksIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDQxMzQ0LCAxMzM4LCAxMjA1ODEsIAorICAgIDk4MzE1OCwgMTI3MzksIDQ2MDMsIDMwODQsIDcwNDA4LCA5MjQ4NCwgOTg1OCwgNjAzNywgMTAwMzc2LCAzOTc0LCA3ODIxMywgCisgICAgMTAyOTAsIDk4MzcwNCwgMzA4MywgMTAzMjIsIDEyOTA0OCwgMTI5MDMwLCA3NTAzOCwgNDEwMzYsIDY2ODk3LCAxMDAzNzQsIAorICAgIDQzMzIxLCA2NTYwNiwgMTI3MDcxLCA0MTAzMiwgNDIzODgsIDEwMDYxOSwgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgCisgICAgMTE5MTA1LCA5MTc5NjksIDQwOTYwLCAxOTQ5MDcsIDY3NzI3LCAxMjUxMDYsIDIyMjMsIDY0OTUyLCAxMDQwMiwgMTE5MjEzLCAKKyAgICAxMjUwNDksIDkyMzA0LCAxMDYwMywgMCwgOTgzNDAzLCA3MTQzOCwgMTI4NTAwLCA2NzE0LCAxMDA4MywgMTI3MDY5LCAKKyAgICAxMjEwMTksIDc4MzY3LCA2OTk3NiwgOTgzNjU1LCA0Mzg3MiwgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIAorICAgIDQ3ODcsIDEyMTI3OSwgNzQ4MjksIDAsIDY1NDIzLCA3NDk4OCwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgOTUyNSwgMjY4OSwgCisgICAgOTE3NjI2LCA2NTQyNiwgMTk0ODcyLCA2Njc0MCwgNDM3NDAsIDEyMTE2MywgNDA5NjYsIDEyMDAwOSwgMTMyODYsIDM5OTgsIAorICAgIDQyNTk4LCA0MjU5NiwgNTAzLCA3MTQzMywgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIDQxOTU0LCAKKyAgICA5MTc2MTUsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgNDMzMjAsIAorICAgIDcyNzU2LCA2Njc1NywgOTIzMTUsIDY0NjgsIDQxOTc2LCA5NzIwLCA3NDk2NCwgMTExNzksIDQxOTcwLCA2NjI1NSwgNTgzNiwgCisgICAgMTIzNTgsIDEyOTQyMSwgNDM1NSwgOTA0OCwgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCA0MTQ4OCwgCisgICAgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgODYxNiwgCisgICAgNDE0NjYsIDQyOTI0LCAyMjI3LCAxMTQ1MCwgMTIwNzM0LCAzNjM4LCAxMjM1NCwgNjcyOTksIDMyMTYsIDgzMDk5LCAyMzU4LCAKKyAgICA4MzA5MiwgODYzMywgNzEyMDEsIDk4Mzc0NSwgMTE5MTgyLCA2OTI0NCwgODMwOTAsIDcwMzc1LCAxMTc1OSwgMTk0OTAzLCAKKyAgICA2MzY4LCA3MjgzNCwgNjczMDMsIDQxNDIzLCA4MDc4LCAxMDUwNCwgODMxMDQsIDQxNjk4LCA0MjIzNywgOTgzNDU0LCAKKyAgICA3MDAyLCA4MzEwMSwgNDE0MzAsIDQyMjY3LCA0MTA1MSwgNDE0ODQsIDEyOTM2MiwgNzE0NjcsIDQxMDUwLCA4ODcyLCAKICAgICAxMDQ2NiwgMTMwOTksIDcxNDQ1LCA3MDM3MSwgMTIwODk3LCA2NDM1LCA3NDMzMSwgMTEzNjIsIDEyODk3MywgODMwODgsIAogICAgIDY1MzgyLCA5Mjc3MCwgNDE0MjAsIDgzMDgzLCAzNjI1LCA3NDkxNSwgNDE0MDksIDcxNDQxLCA2OTYzOSwgMjA0MSwgOTE3OCwgCi0gICAgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgNzQ5MjQsIDAsIDEyODU1NywgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAKLSAgICAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgCi0gICAgMTI0OTQzLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA2ODg1MCwgNzQ5MDEsIDAsIDEyNzk1MSwgOTIzODgsIDY5NjQ5LCAKLSAgICAxMDk4OSwgNzQyMzQsIDExMzc4MSwgMTA1OTgsIDc0MTAsIDI2NjksIDkwMywgMCwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgCi0gICAgNjQ1MDQsIDE5OTI4LCAwLCAxMjg0MTEsIDM5MTcsIDk4MzExOSwgMTE3MzIsIDAsIDk4MzE4MCwgNDE0NDgsIDQxNDYxLCAKLSAgICAxMjg4MjMsIDAsIDExMzcyMSwgMTEzNzU4LCA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAKLSAgICAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCA4MzI5MywgMTIxMDA3LCA5MDk0LCA5ODM5MjYsIDExNzU4LCA2ODQyNSwgNzE4ODYsIAotICAgIDEwNjQsIDQyNDY3LCAxMjgwNDQsIDEwMTE1LCAxOTkyNCwgOTI3MTEsIDExMzY4MiwgNzg2MiwgNjQ1NTEsIDEzMjI0LCAKLSAgICA4NTE2LCA0MTg2MiwgNjY2NTAsIDc1NjEsIDc4NjE4LCA2OTc5MywgMTg3OCwgMCwgNzE0MzQsIDI5MTEsIDgzMDc0LCAKLSAgICA0MTE3OCwgNTQyNywgNjQ4MjMsIDgzMDYyLCA4MzA2NiwgMzc4NywgNDExNzQsIDgzMDU1LCA0MTQ1OCwgNjcxNDcsIAotICAgIDQxNDYzLCA0MjQxMywgMTEyOTIsIDI0MDYsIDc3NSwgMCwgNjU1ODQsIDY5OTIzLCA2MDc0LCA5NjE4LCA2ODA1NiwgCi0gICAgMTIxNDgwLCA0MzQ0MCwgNzQ1MzksIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDkxNzgwNSwgMTIwNjAwLCA0MTQ1NiwgNjc2OTQsIAotICAgIDE1OTksIDExMzMzLCA4MzEzOSwgNjcwMywgODUxMywgODMxMzQsIDE2MTMsIDgzMTM2LCA2ODQ1NiwgMTI1OTgsIDgzMTMxLCAKLSAgICA4MzEzMiwgNzg3NDUsIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNjcxNDQsIDk5MDUsIAotICAgIDgzMTQ1LCA2NTczMCwgODMxNDcsIDEyMDM3NCwgODQyNywgODMxNDIsIDU1MjQ2LCAxMjAzNzYsIDQyODk1LCAxMTQ5NywgCi0gICAgNjQ2ODcsIDc0MDA4LCA0MjU5MiwgMzg3MSwgOTgzNTg0LCAxMjgzMDUsIDkxMTEsIDU3NDEsIDgzMzI1LCAxMjA5ODcsIAotICAgIDEyMDM2NiwgMTE5MTExLCAxMTE1MCwgMCwgMTIwMzY4LCAxMjg4NTUsIDExNjQ4LCA4MzEyNiwgODMxMjcsIDgzMTI4LCAKLSAgICA0MTU4NywgNzAzOTEsIDgzMTIzLCA3MTEwOCwgNDIxMTMsIDk4MzU4OCwgMTI3MTU1LCAxMjE3MiwgODMxMjEsIDcxNDQzLCAKLSAgICA2NTI5OCwgNjU3MjMsIDY4Mjg5LCA3Mzg3MSwgNjU3MjQsIDc5MjgsIDEyMDM1NCwgOTgzMDk1LCA0MTU5NSwgNzM3MzAsIAotICAgIDY0NjcxLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgOTgzMTEwLCA3ODc1LCA5ODM2NjksIDQxNTk4LCAzOTkzLCAKLSAgICAxMjEyNjksIDE1NDUsIDQwOTcxLCA1MzYsIDEyNzA3NSwgNDMwMjksIDAsIDEyMTAwMCwgNjUxNzMsIDY1Mjg2LCAwLCAKLSAgICA3MDMzMSwgMTk1MDEyLCAwLCA5NDA2NSwgMCwgNDEzNzUsIDU0MDIsIDgzMDM1LCAxMjgxOTIsIDE2ODcsIDEyMDUwMywgCi0gICAgOTE3ODE3LCAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzM3NDcsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgCi0gICAgNzg3NTYsIDEyNzEwOCwgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgOTE3ODY3LCAwLCA4MjY2LCAKLSAgICA0MTAwNiwgNjU3MjIsIDgzMDQxLCAxMDcxMCwgNzQwNDUsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDgzMzEzLCAKLSAgICAxMjg3NzgsIDcxODg5LCA2Nzg1NywgMTIwNjg3LCAwLCA5Mjk1OCwgMTE3NTUsIDY2MzA1LCA2ODMzMiwgMCwgMTA5MTcsIAotICAgIDkzOTc5LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCA4MzExOSwgCi0gICAgODMxMjAsIDExNDEzLCAxMjY1ODMsIDgzMTE1LCA1MjgzLCAxNTg2LCA0OTc4LCA2ODA1MCwgMTk4NCwgMTE4MzAsIDQzODE5LCAKLSAgICA5MjI5MywgNDA5ODQsIDQyOTA0LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMTk0ODg4LCA0MTY2MywgOTgzMDkzLCAwLCAKLSAgICA2ODMxMywgOTIzNywgOTM4NSwgNDE2NDgsIDAsIDEyODk1MywgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCAKLSAgICA0MTI4NywgOTI2MTAsIDAsIDcxOTE3LCA0MjIxOSwgNjgwODYsIDEyMDMyNywgNDE5ODcsIDQxNjc2LCA5ODMwNTksIAotICAgIDEyMDgyMywgMTI2NTUzLCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAKLSAgICAxMTQ1MSwgODI5OTUsIDc4ODU1LCA0MjYzMSwgMjM1OSwgNzE4OTAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIAotICAgIDEzMTMzLCA2NDM2OCwgMTI3MjcwLCAxMjA5MjUsIDY2MjcyLCAzOTcsIDQzNjIyLCA0MjEzOSwgOTU0NywgOTU5MCwgCi0gICAgMTI4MjM4LCAxNjE0LCA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAxMjA4NzEsIDQyOCwgOTYyMCwgMTQ2NiwgCi0gICAgNzgxMTIsIDEwOTgyLCAxMTM3ODUsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMTI3OTkzLCAwLCAwLCAKLSAgICA1ODA0LCAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDcwMTY3LCA5MDU3LCA0MjI5NCwgNDEyMTgsIDEyNTA5NywgMTIxMjkwLCAKLSAgICA3ODEzNywgMTg4MywgMTA5NTIsIDgwNDgsIDcwNDQzLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAxMjg2MTYsIDEyODUxMiwgCi0gICAgMTI4NjI5LCA0NDA3LCA3NDY0OCwgNjU4MDksIDExODM3LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAxMjAzMzQsIAotICAgIDEyNjc1LCAxMjY1OSwgNzQ2MzQsIDQyMzYzLCAxMjA2MjQsIDY4MDc3LCA1NTI3MywgMTA3NjYsIDEyMDEyLCAyMzg2LCAKLSAgICA2NDczMiwgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTAyOTYsIDExOTE1OCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgCi0gICAgNDE2NCwgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIDg3MDksIDEyODI4MywgMTI2NDc3LCAxMjA2MzcsIDQyNDE5LCAKLSAgICA2NDc5OSwgNDIwNDcsIDAsIDE5NDgyMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIDk4Mzc2MCwgNzQzMDAsIDAsIAotICAgIDY4MDg3LCA3NDg0MCwgMTI2NDc0LCAwLCAxMjg3OTEsIDkyMjI0LCA4NzM2LCAxNDE0LCA0MjY0MywgOTY4MywgNDM0ODYsIAotICAgIDc0MzQ0LCAwLCAyNTM2LCA5ODM5NDEsIDY2MzMwLCAxMjEyMzgsIDAsIDAsIDAsIDAsIDAsIDE5NDgzMCwgNjYzMTcsIAotICAgIDY5OTQ1LCA2NjMxNSwgMjEwNiwgNjc4MDksIDExMjczLCAxMjA5ODYsIDQzMDA0LCA3NTQxLCA4Mjk4OCwgMCwgOTYxLCAKLSAgICA2NDMwNywgNjYzMjQsIDY0OTA2LCAxMjUwODAsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgOTgzMTMwLCA4OTEsIAotICAgIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgMTA5MzYsIDEyMDg3OCwgMCwgMCwgCi0gICAgMTk0ODI2LCA5MjY4OCwgMzU2NiwgMjMyMiwgMTIwMzcxLCA3MDgzMSwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAKLSAgICAzNTQ3LCAwLCAwLCAxMTM3NDYsIDk4MzQwMCwgNDMyMTYsIDYwODksIDc4NjgyLCA2ODQ5MCwgMTIwNTc4LCA0MTcwLCAKLSAgICAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgNzQ0LCA5Mjg4MywgMTEzNzM5LCAwLCA2NTgyMywgCi0gICAgMTI3ODI2LCAxMTE4MiwgMzU1MSwgOTI5MzgsIDk4Mzg5MSwgNDYyMywgNTUyNjgsIDEyODczOCwgNDU5OCwgOTgzMTYyLCAKLSAgICA2NTEzNiwgMTI3MTM2LCAwLCAxMjgxNjksIDEwODUxLCAxMjA4NzYsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgCi0gICAgNzQ1NzksIDc4NjQ4LCAxMTk3MiwgNzg2NDYsIDc4NjQ3LCA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIAotICAgIDEyMDU4MCwgOTgzNjk2LCAxMjUxMzUsIDYxNzcsIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIAotICAgIDEyODAyNywgNjc2NzMsIDIyMTQsIDg3NTQsIDEyNzA1MSwgMTIwMjM3LCAyMTM3LCA0MzA4MSwgMTk0NjYzLCAxMTkxMTQsIAotICAgIDkxMzYsIDY2ODg5LCA0NDAxLCA0MTI4MCwgNzA4MDEsIDg5NzQsIDIzMDgsIDE5NDc1MCwgNzQxNDksIDEyODMyNywgMjMxOCwgCi0gICAgOTgzMTgzLCA2NjM2MSwgODE5OCwgNjU2MjYsIDY0MzYwLCAxMjYwMSwgNDI1MzYsIDQzOTMxLCAxMjA4MjcsIDQzOTMwLCAKLSAgICA5MjQ2MiwgNjk3MCwgNTQwNCwgNDMzMzIsIDM2NjcsIDc5MzYsIDEyOTI1LCAxMjY5ODksIDYzODUsIDEyODQ4MiwgCi0gICAgMTI4NDAzLCAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTIwMDAyLCAxMjkxNTEsIDQyMDUzLCAyMDc1LCA0MjA1NywgMTEwODMsIAotICAgIDQyMDUyLCAwLCA2NzI2NiwgNjc2NTEsIDEyMTEwNCwgOTY2NSwgOTIzMDAsIDk4MzY2NiwgMTMxODEsIDkxNzYxNywgMCwgMCwgCi0gICAgNzAwODgsIDc0MTQ4LCAwLCA3MDQxOSwgMTIwMjI1LCAxMjAyMjksIDEyMDIyNCwgNzQxNzIsIDQxMTQ1LCA2NjQwNCwgCi0gICAgOTQwOTYsIDc0NDIyLCA0MTE0OCwgODY4MywgNzU5NCwgMTEzNjg2LCA3NTAzMywgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIAotICAgIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDEyMTQ1NiwgMzUxMiwgMTE5NjMzLCA5Mjk2NSwgODEwMywgNzgxNDAsIDEyMDg0NywgCi0gICAgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDEyOTA1NSwgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgNzEzMTQsIDAsIDc4MTA5LCAKLSAgICAxMjkxNzcsIDE5OTQyLCA5ODMyNDQsIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAzMjcxLCA3MzgwNCwgNjQ3MTEsIDAsIAotICAgIDk0MDY0LCA5ODMwNzEsIDEyODY1MiwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgMCwgMzU5OSwgCi0gICAgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIDkyNDg2LCAKLSAgICA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDc0OTI3LCA0MjA0NiwgNzQxNTcsIDQwMzYsIDEyNjQ4MSwgMCwgCi0gICAgMTI4MjEzLCAxOTQ4NjEsIDgzMzU1LCAxMTk1NCwgNzAzNDgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgOTI3MjIsIAotICAgIDAsIDAsIDEyNTExNywgMCwgOTE3NTQyLCA3MzgxMiwgODMwNTMsIDY1MzksIDkyOTQ4LCAxMjY2MDcsIDEyMDcwMiwgCi0gICAgOTIzOTAsIDAsIDEyMDQ5MiwgNDExOTAsIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIDQyOSwgOTE3OTc5LCAKLSAgICA3ODg5MSwgMCwgMTk0ODQ4LCA2NTc5MiwgMTI4NDA4LCA4MzI4MiwgNjQxNywgMTE4OTE4LCA3ODE3OCwgMCwgMTI4OTcwLCAKLSAgICAwLCAwLCA0OTE5LCAxMDU5MCwgMTI4NTU2LCA3NzU1LCAwLCA5Mjk0MiwgNjQ1NDgsIDEyMDUwNiwgMTYyMSwgMTAyMTQsIAotICAgIDY1MTI2LCA2ODI1MywgMTI3MDA0LCA5ODM2MTYsIDEyMTg4LCA5ODM2NjgsIDE2MTcsIDgwNTAsIDAsIDUwMTUsIDAsIAotICAgIDExOTE3NCwgNDI1OTAsIDcwMzU0LCAxNzU2LCA3ODE4MSwgMCwgNjU3NjgsIDYzNTIsIDQxODkyLCAwLCA3NTU1LCAxMzEwMywgCi0gICAgNTQwOCwgMjgxNywgMTIxNCwgNjk5MTksIDkyMzM1LCAxMjEyMDgsIDAsIDY4MjI0LCAxMjA4NzIsIDQxNzY0LCA3OTU3LCAKLSAgICA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAzNTU5LCA5ODM5MTgsIDU1Mjg2LCA3MDczLCA2NTg1MCwgMTIzMjcsIAotICAgIDcwODUzLCAxMTkwMjgsIDAsIDEyODEyMiwgMTI4NDQyLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAxOTQ4ODQsIDY4MzIyLCAKLSAgICA3MDA3OSwgODQ2MSwgNjc3MjEsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgCi0gICAgNDM4NDcsIDAsIDY4MSwgOTgzMjU0LCA3MDMsIDEyNzUxOCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCi0gICAgOTIyODgsIDcwNTE0LCA5ODM5MDAsIDgzMTc1LCA3MTQzNiwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMTI4OTY4LCA5MTc5ODksIAotICAgIDY1OTI4LCAwLCAxMjEzNjcsIDY1MDIxLCA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIAotICAgIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIDk4OTUsIDE2NTUsIDcwMTMxLCA3NDU5MSwgNzg4MTUsIDc4ODE2LCAKLSAgICA2Njg4OCwgMCwgMCwgNzA1MTMsIDEwMDM5LCAxMjA0MjYsIDU2MjYsIDU2MjMsIDU3MTcsIDU3NzYsIDQzNDg4LCA4MzQ5NywgCi0gICAgNjY4ODUsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAxMjAxMTEsIDY3ODQ4LCAxMjgxMjgsIDk4MzU5NSwgCi0gICAgOTgzNDcyLCA4ODg3LCAxMjc1MjEsIDcyOTUsIDExMDMxLCA5ODMzMzYsIDQzMTU3LCAwLCA4OTQ2LCAxMDM0OCwgMTA0MTIsIAotICAgIDg3NTUsIDExOTE1MiwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCA3MDUxNSwgOTE3NjE2LCA4ODEwLCA3NDQ5OSwgCi0gICAgNjg2LCAwLCA3MTM2MiwgNDYxOSwgMTE4OTU0LCA2NjU0LCA3Mzc2OSwgNzQ0MjYsIDAsIDEyMDQwLCA2NTY4OSwgMTAxMjgsIAotICAgIDY1MTE4LCA2ODAyOSwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDEyODkwMiwgMjQwMSwgNjgxNDQsIDg3OTIsIDk4MzY0OCwgCi0gICAgNjgwNDQsIDY1NDU1LCAwLCA3NDMyOCwgMCwgNzQ1NjEsIDEyMDc2MywgMTI4ODYsIDEyMDk1MiwgNjY2MjQsIDEyNjU3OCwgCi0gICAgNDM1NTcsIDEwMzAwLCAxMDE2MSwgMTAzOTYsIDcxMjEwLCA3ODYwMiwgMTE4OTQ1LCA5OTg0LCA3Mzg1MSwgMzAxMCwgCi0gICAgNjQ0MSwgNzAzNDksIDE0NTgsIDQxNDc1LCA3MjQyOSwgOTM5NzUsIDEyNzkxMCwgMTE0NzksIDEyMTM1NSwgMTIwMzU2LCAKLSAgICA2MzUwLCAxMjg2NCwgNjk2NzQsIDcxNDczLCAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjQ5NDYsIDQwNTIsIAotICAgIDExMzY3MywgNzYyNiwgMCwgMTIwOTA3LCAxMDQ1LCAwLCA1NjMxLCA0MTExMywgMTI3NTQ0LCAwLCA0MzcwNywgNzQxMjcsIAotICAgIDAsIDk4MzcxOCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgCi0gICAgMTI3Mjc3LCA0MjYyNSwgNzAzMjUsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAxMjEzMzAsIAotICAgIDY4MDU5LCA0MTQ0NSwgNzgyMzYsIDExMjA3LCA4NTY3LCA0MTQ0MiwgMzk4OCwgNzQ4NDMsIDc4MjM3LCAxMTg5MTAsIDAsIAotICAgIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgMTIxMjcyLCAwLCA0MzQ0NiwgMCwgNjY1MTMsIDYyNTYsIAotICAgIDkxNzgwNywgNTc5LCA1NTIxOCwgMTAyMDYsIDc4MTk1LCA2Mzc1LCAyNjczLCA5ODM4ODYsIDExODE0LCAwLCA0NDg4LCAKLSAgICAxMjg3MTYsIDEyMDU1NCwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgCi0gICAgMTI3ODQ5LCA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDEyNDk5OCwgNjE0LCA3MDM2MSwgCi0gICAgMTI3MjE1LCAxMjA2MTUsIDExOTYyMiwgNzgyNjIsIDEyNzI3MSwgMTI3MzIzLCAwLCA0MzEyMSwgMTI3MjExLCAxMjgzNjYsIAotICAgIDkyNTEzLCAxMDUwLCA3NTQ5LCAxMjEyNjAsIDgyOTk0LCA5MzE0LCA3MDM2NSwgOTI4OTgsIDY4MDM5LCAxMjcwNjEsIAotICAgIDEwMDU3LCA3MDQzNCwgMTI3MzEzLCAxMjg1NzcsIDY2NTA0LCAxMjA5NjMsIDgyOTkyLCAyMzA3LCAxMjg0NTYsIDY0MzMzLCAKLSAgICAxMjczMTIsIDEyODIzMCwgNzM4NzMsIDk4MzcxMCwgOTQwMzUsIDAsIDEyNzk3MywgMTI4NzA4LCA3MDQ0NiwgMTAzNjAsIAotICAgIDY3NDYsIDEyMDQ3MywgOTIyNDUsIDQ0MCwgMCwgMTMwODUsIDkyMzMsIDc0MjE2LCAwLCAxMjc3ODUsIDk5NTcsIDEyODI4NSwgCi0gICAgNjY0NDcsIDgwNDYsIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDEyMDQyNCwgMTUyMSwgCi0gICAgOTg5NiwgOTM5NjUsIDEwNDg3LCA2OTg3OCwgMTI1MjcsIDY4NzM3LCA3OTcwLCAxMjUwNzMsIDEyODY2MCwgMCwgNjU3NjksIAotICAgIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAxMjE0MjksIDAsIDUyMzcsIDY5NzE0LCA2ODc1NiwgMTAxMDMsIDUyNDcsIAotICAgIDQ3NjksIDEyOTMwMiwgMTE4OTc3LCAxMjg3MywgMjI4MywgOTI5MzEsIDAsIDMwMDgsIDQ4OTYsIDEyODEwMiwgMTIwODcsIAotICAgIDAsIDU1MjMxLCA0MTEwMywgOTIyNTYsIDY0NTY1LCA0NzczLCAxMjA4NDYsIDc4NTQ5LCA3MDA3NCwgNDc3MCwgNjY4OTEsIAotICAgIDkxNzU2NywgODczMSwgNjUzNzgsIDY2OTExLCAxMjA2MTksIDkxMjIsIDEyODAzMywgMTI2NjAwLCA0Nzc0LCAzMDE5LCAKLSAgICA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgNzg1NTYsIDAsIDEyMTMzMiwgNzQ3NzYsIDQyODEsIAotICAgIDQ3NjgsIDEyMDU3MiwgNDE1MzUsIDQwOTksIDkwMTcsIDY5OTkzLCA5ODM2OTIsIDc4MDk1LCAyMjI1LCA3ODA5NiwgCi0gICAgMTE4OTQ2LCAxMjEwOTcsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAxMTM3NjQsIDY2ODcwLCAyMTM0LCAwLCAKLSAgICAxMDExNiwgOTg3NywgOTIzMjksIDEyODk2MCwgMCwgNzA5NSwgODM3OSwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAKLSAgICAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAxOTUwMDMsIDk5NjIsIDgyOTkwLCAxMjIyMywgMTI4NDg1LCA5MjQzMCwgCi0gICAgMTQzNCwgMTIwMjU0LCA1NjM3LCAxMTU3MywgMCwgMCwgMCwgMTk5NTEsIDgzMzg5LCA3NDQxOSwgMCwgMTk0Njg2LCAKLSAgICA1NTI4MywgMCwgNzAzNjMsIDc0NDM3LCAxMTU2LCA4NzQwLCA4MzI5NSwgMzc4MiwgNjQzMzEsIDAsIDQxMzcwLCAxMDE0LCAKLSAgICA4MjYxLCAxMjA5NTYsIDkxNzU5NiwgMTA4MzUsIDkxNzk2NiwgNjU1MzYsIDgzMjk0LCAxMjA0NjMsIDEyNTA1MSwgNzcwMiwgCi0gICAgMTE4ODI0LCAxMjg5NzYsIDQzMDEwLCA2NTc3OSwgNjU3ODMsIDExNTAsIDEwNTQ3LCA1NzAwLCAwLCAxMjA2MDMsIDY1MzgzLCAKLSAgICAyMzM5LCA0MjU5NCwgNTY5NywgMTE4Nzg4LCA3NTAxOCwgMTI4NTc2LCA3NDkyMywgNDIyNTcsIDU2OTYsIDkyNjc3LCAKLSAgICAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDcwMTgzLCA3NjM0LCA2NTE2NywgOTg0NSwgMCwgMCwgNTcwMSwgOTcyMiwgNDE0OTAsIAotICAgIDEyODcxOSwgMTQyNiwgNjgyMTcsIDk4MzYxNCwgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgNjc0MDMsIDc4MDY3LCAKLSAgICA0Mzg1OSwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIAotICAgIDY0NzEyLCAxMDc0NCwgNzg4ODcsIDk5MCwgNTY0NywgMCwgNzM4NywgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgCi0gICAgMTI4NzksIDExMDE4LCAxMjgzNjIsIDM5NDUsIDkyNTg5LCA5ODM0NjYsIDE5NDk4OSwgNzg4ODMsIDAsIDc4MjEyLCAKLSAgICAxMjc3NDYsIDEwMjAsIDczNzYzLCA5ODM4MzUsIDc4NzMxLCA1NjQ4LCA2NDc0OCwgMTIwOTIwLCA3ODczMywgMTAyMDUsIAotICAgIDM1NDUsIDk4MzU4NSwgNjk4NCwgMTI4MDA4LCA3NDA1MSwgMTI4OTAxLCA0MzI0MiwgMTIwNDU4LCAyNjY3LCAxMjgxNzMsIAotICAgIDEyNTAzNywgMCwgOTkxMSwgMCwgNjUwMjAsIDEwMDk3LCAxMTkxNjYsIDEyNzE0NSwgOTgzNjYyLCAxMTg4MzYsIDk4Mzc0OCwgCi0gICAgNzgyMDgsIDExNDAsIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMTI4NjQ0LCA2ODMyNiwgMTk0OTExLCAxODE1LCAKLSAgICAxOTkxMCwgODkwLCAxMjQ5MzUsIDMyNjcsIDkyMjkxLCAwLCAxMDEyMywgMTIxMzk4LCA0NDEwLCAxMDQxLCAxMDU3NiwgCi0gICAgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDk4Mzc0NiwgMTI4MzQ3LCAwLCAwLCAxMjgwOTgsIDE5OTM4LCA2NTkwNiwgCi0gICAgMTI3ODE5LCA5MTc4MTEsIDAsIDMyOTgsIDUzNzUsIDEwMTQyLCAwLCA4MjE1LCA5MjYzMywgNjEzNCwgNDEyNDYsIDY0NDAyLCAKLSAgICA5ODMxNDcsIDY5ODk5LCAxOTQ5MzgsIDAsIDEyMTQyNiwgNDEzODIsIDkxNzkyNywgMTI4NjUzLCA1MTczLCA2NTM0OCwgCi0gICAgNTI3LCAxMjExNzQsIDExMzc4MiwgNzg0NjksIDEyODI1MCwgNzg3OTcsIDExOTE1LCAwLCAwLCAxMDA3MiwgMCwgNDI2OTUsIAotICAgIDIzMjksIDQyMjUwLCAwLCAxMTE4NywgNjk2NjcsIDEyMjQ1LCAxNTY4LCA5NDAzMywgODM0NjAsIDAsIDExMzcwNSwgCi0gICAgOTE3OTEwLCAxMTIwMSwgOTI3MDgsIDc0NzY5LCAxMjY0NzAsIDY3NjgwLCA5MDY5LCA2MTQ0LCAwLCAxMTk4NDAsIDczODIyLCAKLSAgICAwLCAxMjgwMTAsIDY0OTE3LCA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCA5MjI1MCwgNjUwOTgsIDYzNjQsIDk1NiwgCi0gICAgMTEzNzkyLCAxMjgzMCwgMTA0NjIsIDczNzQwLCA3MzczNCwgMCwgMCwgOTgzNzM5LCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCAKLSAgICA2OTIxNywgMTMxNzEsIDEyNzc5NiwgMTIwNTY0LCAwLCA2Mzg4NSwgMTI3MjUxLCAxMDQ0LCA0MTI3NiwgMTI4MzYzLCAwLCAKLSAgICAwLCA0MjA2OCwgMTE3OTUsIDEyNDk4NSwgMCwgMTI3MjAyLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIDExODI5LCAKLSAgICA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCA3MDMyOSwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCAxMjA3NjEsIDcwOTgsIAotICAgIDEyNTA3MSwgMCwgMTA1NywgNTY2LCA0MjY5NiwgMTI3MjM5LCAzMDE2LCA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgCi0gICAgNjY1NzEsIDc4NDcyLCA3MTIwNywgMzAwNiwgNDYyMCwgMTI3MjM3LCA5ODMzMzAsIDAsIDAsIDY0NjU5LCAwLCAxMjc3NDksIAotICAgIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCA3MTMzNywgMjIxNiwgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgCi0gICAgMCwgNjQ0NzcsIDkxNzg1MywgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAwLCA5Mjk3NywgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCAKLSAgICA3NDM0OSwgNjY0NzksIDY3Njg5LCA2Njg3MSwgOTE3ODQ1LCA3MDMyNywgNDI0OTAsIDY4OSwgNjUwOCwgNDE2MywgNDIyOTgsIAotICAgIDg2MzksIDY2NjQxLCA0MjQ2LCAwLCA0MzUxNCwgMTIxMzAsIDk4MzMwOCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgNjY0ODEsIAotICAgIDEyNzg1MCwgOTgzMTQ0LCAxMjc4MjgsIDYzNTksIDAsIDQzNDcxLCA5ODM3NjgsIDAsIDgzMzQ1LCA3NTA2NSwgMCwgNjM1OCwgCi0gICAgNjM2MSwgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgNTgzMCwgMTI3NzczLCAKLSAgICA0MzY4NSwgNzQzMDcsIDAsIDQyOTEwLCA4MzMwMSwgODY5MywgNzg2MTEsIDExOTU2NSwgMTI4NjIxLCAxMjA0MTMsIAotICAgIDkyMTkyLCAxMjE0NTQsIDY1ODk0LCAxOTQ2OTQsIDAsIDY0Mjk2LCA5ODM2ODEsIDk4MzY0NCwgMTk0OTU5LCAxMTkxODcsIAotICAgIDIxMzUsIDExODM2LCAwLCAwLCA3ODg2OSwgNDIzMTMsIDU1NzksIDkyNDEyLCA3MDM4NCwgMTI5MTEzLCA0Mzg1NCwgCi0gICAgNzE5MTMsIDU1NzgsIDExODQwLCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgNzg2MjAsIDEyMTE3MSwgCi0gICAgNjg4MzMsIDkyMjU0LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIAotICAgIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCA2NTUxMiwgNjg3NzQsIDY1NzAyLCA2ODc3MCwgMTIwODAxLCA2NTI1MSwgCi0gICAgNjgyMjgsIDY1NzEwLCAxMjgzOTksIDEyODQyOSwgNjc2NzIsIDY4NzgzLCA1MzcwLCA3MDQ2NSwgMjkzMSwgMTYzOCwgCi0gICAgMTA5NjYsIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDc0NTg1LCA4MTcyLCA0MjAxNywgOTI3NTYsIAotICAgIDEwODQ0LCAxMjEwMTYsIDEyODE5NSwgOTI0MjQsIDYzNzQsIDExOTk5OCwgMTIxMDc1LCAyODYsIDc4MDIzLCAxMDYyLCAwLCAKLSAgICAxMTk5OTksIDAsIDczOTUsIDEyNzc4MywgMTA3MCwgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAxOTQ2NDAsIDMwMTUsIAorICAgIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDc0OTI0LCA5MTc3NzcsIDEyODU1NywgNDE0MjQsIDExOTU2MywgMTIwNTQ2LCAKKyAgICA5ODM4ODgsIDEyODIxMiwgMCwgNDE0MTcsIDEyNjEsIDAsIDEyODI2MSwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDEyODkzMiwgCisgICAgMTI3NTM4LCAxMTM3NjcsIDc4MjUxLCAxMjQ5NDMsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDY4ODUwLCA3NDkwMSwgCisgICAgMTIxMDA1LCAxMjc5NTEsIDkyMzg4LCA2OTY0OSwgMTA5ODksIDc0MjM0LCAxMTM3ODEsIDEwNTk4LCA3NDEwLCAyNjY5LCAKKyAgICA5MDMsIDE5NTA5MSwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgNjQ1MDQsIDE5OTI4LCAwLCAxMjg0MTEsIDM5MTcsIAorICAgIDc4MTg1LCAxMTczMiwgMTI4NTEyLCA3Mjc5NywgNDE0NDgsIDQxNDYxLCAxMjg4MjMsIDAsIDExMzcyMSwgMTEzNzU4LCAKKyAgICA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCA4MzI5MywgCisgICAgMTIxMDA3LCA5MDk0LCA5MTc3OTQsIDExNzU4LCA2ODQyNSwgNzE4ODYsIDEwNjQsIDQyNDY3LCAxMjgwNDQsIDEwMTE1LCAKKyAgICAxOTkyNCwgOTI3MTEsIDExMzY4MiwgNzg2MiwgNjQ1NTEsIDEzMjI0LCA4NTE2LCA0MTg2MiwgNjY2NTAsIDc1NjEsIAorICAgIDc4NjE4LCA2OTc5MywgMTg3OCwgMTI4NjQxLCA3MTQzNCwgMjkxMSwgNzI3NTgsIDQxMTc4LCA1NDI3LCA2NDgyMywgCisgICAgNzg2MTUsIDgzMDY2LCAzNzg3LCA0MTE3NCwgODMwNTUsIDQxNDU4LCA2NzE0NywgNDE0NjMsIDQyNDEzLCAxMTI5MiwgCisgICAgMjQwNiwgNzc1LCAwLCA2NTU4NCwgNjk5MjMsIDYwNzQsIDk2MTgsIDY4MDU2LCAxMjE0ODAsIDQzNDQwLCA3NDUzOSwgCisgICAgMTk0OTAxLCA0MTQzNiwgMzY1NiwgOTE3ODA1LCAxMjA2MDAsIDQxNDU2LCA2NzY5NCwgMTU5OSwgMTEzMzMsIDgzMTM5LCAKKyAgICA2NzAzLCA4NTEzLCA4MzEzNCwgMTYxMywgODMxMzYsIDY4NDU2LCAxMjU5OCwgODMxMzEsIDgzMTMyLCA3ODc0NSwgNzQ1MDAsIAorICAgIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCA2NzE0NCwgOTkwNSwgODMxNDUsIDY1NzMwLCA4MzE0NywgCisgICAgMTIwMzc0LCA4NDI3LCA4MzE0MiwgNTUyNDYsIDEyMDM3NiwgNDI4OTUsIDExNDk3LCA2NDY4NywgNzQwMDgsIDQyNTkyLCAKKyAgICAzODcxLCA5ODM1ODQsIDEyODMwNSwgOTExMSwgNTc0MSwgODMzMjUsIDEyMDk4NywgMTIwMzY2LCAxMTkxMTEsIDExMTUwLCAKKyAgICAxOTQ4NzYsIDEyMDM2OCwgMTI4ODU1LCAxMTY0OCwgODMxMjYsIDgzMTI3LCA4MzEyOCwgNDE1ODcsIDcwMzkxLCA4MzEyMywgCisgICAgNzExMDgsIDQyMTEzLCA5MTc5NTYsIDEyNzE1NSwgMTIxNzIsIDgzMTIxLCA3MTQ0MywgNjUyOTgsIDY1NzIzLCA2ODI4OSwgCisgICAgNzM4NzEsIDY1NzI0LCA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCA2NDY3MSwgNDIxMTgsIDczODMwLCAKKyAgICA2NjA0MiwgMTAzNTUsIDEyMTUwMSwgNzg3NSwgMTAwMzkwLCA0MTU5OCwgMzk5MywgMTIxMjY5LCAxNTQ1LCA0MDk3MSwgCisgICAgNTM2LCA3Mjg3NCwgNDMwMjksIDAsIDEyMTAwMCwgNjUxNzMsIDY1Mjg2LCAxMjEyNTQsIDcwMzMxLCAxOTUwMTIsIDAsIAorICAgIDk0MDY1LCAwLCA0MTM3NSwgNTQwMiwgODMwMzUsIDEyODE5MiwgMTY4NywgMTIwNTAzLCAxMjg1NTksIDAsIDc4MTk0LCAKKyAgICA2NDMyNiwgNDA5NjksIDEwNTI2LCA3Mzc0NywgODMyMywgNDA5NjgsIDEzMzksIDExNzMxLCA3ODc1NiwgMTI3MTA4LCAKKyAgICA2NTQ2MCwgMTIyNDIsIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCA5MTc4NjcsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgCisgICAgODMwNDEsIDEwNzEwLCA3NDA0NSwgMTE4OTQyLCA2NzY2NywgNjQ1NjcsIDExOTE1NSwgODMzMTMsIDcwNzI5LCA3MTg4OSwgCisgICAgNjc4NTcsIDEwMDU4MiwgMCwgOTI0MTgsIDExNzU1LCA2NjMwNSwgNjgzMzIsIDAsIDEwOTE3LCA5Mzk3OSwgMCwgMTEyNzIsIAorICAgIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgODMxMTksIDgzMTIwLCAxMTQxMywgCisgICAgMTI2NTgzLCA4MzExNSwgNTI4MywgMTU4NiwgNDk3OCwgNjgwNTAsIDE5ODQsIDExODMwLCA0MzgxOSwgOTIyOTMsIDQwOTg0LCAKKyAgICA0MjkwNCwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDE5NDg4OCwgNDE2NjMsIDEyNzg5NSwgOTgzMDQ1LCA2ODMxMywgOTIzNywgCisgICAgOTM4NSwgNDE2NDgsIDAsIDEyODk1MywgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCA0MTI4NywgOTI2MTAsIAorICAgIDk4MzI5OSwgNzE5MTcsIDQyMjE5LCA2ODA4NiwgMTIwMzI3LCA0MTk4NywgNDE2NzYsIDEyNTIxOSwgNzI4NDAsIDEyNjU1MywgCisgICAgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgMTE0NTEsIDgyOTk1LCAKKyAgICA3ODg1NSwgNDI2MzEsIDIzNTksIDcxODkwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgNjQzNjgsIAorICAgIDEyNzI3MCwgMTIwOTI1LCA2NjI3MiwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgCisgICAgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMTIwODcxLCA0MjgsIDk2MjAsIDE0NjYsIDc4MTEyLCAxMDk4MiwgCisgICAgMTEzNzg1LCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDEyNzk5MywgMCwgOTgzMTUxLCA1ODA0LCAKKyAgICAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDcwMTY3LCA5MDU3LCA0MjI5NCwgNDEyMTgsIDEyNTA5NywgMTIxMjkwLCA3ODEzNywgCisgICAgMTg4MywgMTA5NTIsIDgwNDgsIDcwNDQzLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAxMjg2MTYsIDEyODMxOSwgMTI4NjI5LCAKKyAgICA0NDA3LCA3NDY0OCwgNjU4MDksIDExODM3LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAxMjAzMzQsIDEyNjc1LCAKKyAgICAxMjY1OSwgNzQ2MzQsIDQyMzYzLCAxMjA2MjQsIDY4MDc3LCA1NTI3MywgMTA3NjYsIDEyMDEyLCAyMzg2LCA2NDczMiwgCisgICAgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTAyOTYsIDExOTE1OCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgNDE2NCwgCisgICAgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIDg3MDksIDEyODI4MywgMTI2NDc3LCAxMjA2MzcsIDQyNDE5LCAKKyAgICA2NDc5OSwgNDIwNDcsIDEyOTQxNCwgMTk0ODIwLCA4NDcwLCAxMTgwNywgNjU4OTcsIDU3NywgMCwgMTI2NjE2LCA3NDMwMCwgCisgICAgMCwgNjgwODcsIDc0ODQwLCAxMjY0NzQsIDkxNzUzOSwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIDk2ODMsIAorICAgIDQzNDg2LCA3NDM0NCwgMCwgMjUzNiwgOTgzOTQxLCA2NjMzMCwgMTIxMjM4LCA3Mjg2OSwgMTIwNTYyLCAxMTk1NTgsIDAsIAorICAgIDAsIDEyNzgzMSwgNjYzMTcsIDY5OTQ1LCA2NjMxNSwgMjEwNiwgNjc4MDksIDExMjczLCAxMjA5ODYsIDQzMDA0LCA3NTQxLCAKKyAgICA4Mjk4OCwgMTk0NzM4LCA5NjEsIDY0MzA3LCA2NjMyNCwgNjQ5MDYsIDEyNTA4MCwgMzEwNiwgNjU5MTcsIDQxMjg0LCAKKyAgICAxNjk2LCA5ODMxMzAsIDg5MSwgMTIxMDUsIDAsIDQyNjI0LCAxMjgwMiwgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAKKyAgICAxMDkzNiwgMTE5MjU1LCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAzNTY2LCAyMzIyLCAxMjAzNzEsIDcwODMxLCAxMTQ0OSwgCisgICAgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIDM1NDcsIDk4MzcxNywgMCwgMTEzNzQ2LCA5ODM0MDAsIDQzMjE2LCA2MDg5LCAKKyAgICA3ODY4MiwgNjg0OTAsIDEyMDU3OCwgNDE3MCwgMTAyOSwgMTI3NzYxLCAxMDAzODQsIDExOTIyNCwgNDIzNzQsIDk4MzU3MSwgCisgICAgNzQ0LCA5Mjg4MywgMTEzNzM5LCAxOTQ5MjQsIDY1ODIzLCAxMjc4MjYsIDExMTgyLCAzNTUxLCA5MjkzOCwgOTgzODkxLCAKKyAgICA0NjIzLCA1NTI2OCwgMTI4NzM4LCA0NTk4LCA5ODMxNjIsIDY1MTM2LCAxMjcxMzYsIDAsIDEyODE2OSwgMTA4NTEsIAorICAgIDEyMDg3NiwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCA3NDU3OSwgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIAorICAgIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgMTIwNTgwLCA5ODM2OTYsIDEyNTEzNSwgNjE3NywgOTAyMCwgCisgICAgNzg2NTIsIDc4NjUzLCA2MTc4LCAxMjAyNDksIDEyMDI0MiwgMTI4MDI3LCA2NzY3MywgMjIxNCwgODc1NCwgMTIyODk0LCAKKyAgICAxMDA2ODksIDIxMzcsIDQzMDgxLCAxOTQ2NjMsIDExOTExNCwgOTEzNiwgNjY4ODksIDQ0MDEsIDQxMjgwLCA3MDgwMSwgCisgICAgODk3NCwgMjMwOCwgMTk0NzUwLCA3NDE0OSwgMTAxMDUwLCAyMzE4LCAxMjA2OTMsIDY2MzYxLCA4MTk4LCA2NTYyNiwgCisgICAgNjQzNjAsIDEyNjAxLCA0MjUzNiwgNDM5MzEsIDEyMDgyNywgNDM5MzAsIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgCisgICAgMzY2NywgNzkzNiwgMTI5MjUsIDEyNjk4OSwgNjM4NSwgMTI4NDgyLCAxMjg0MDMsIDcyODYxLCAxMDg3NCwgNjU1MDUsIAorICAgIDEyMDAwMiwgNzI3ODUsIDQyMDUzLCAyMDc1LCA0MjA1NywgMTEwODMsIDQyMDUyLCAwLCA2NzI2NiwgNjc2NTEsIDEyMTEwNCwgCisgICAgOTY2NSwgOTIzMDAsIDk4MzY2NiwgMTMxODEsIDkxNzYxNywgMCwgMTI4OTM3LCA3MDA4OCwgNzQxNDgsIDAsIDcwNDE5LCAKKyAgICA3Mjg2OCwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgNjY0MDQsIDk0MDk2LCA3NDQyMiwgNDExNDgsIDg2ODMsIAorICAgIDc1OTQsIDExMzY4NiwgNzUwMzMsIDExOTA5MCwgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAxMjE0NTYsIAorICAgIDM1MTIsIDExOTYzMywgOTI5NjUsIDgxMDMsIDc4MTQwLCAxMjA4NDcsIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAKKyAgICAxMjkwNTUsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDY2ODAzLCAwLCA3ODEwOSwgMTI5MTc3LCAxOTk0MiwgMTI2NjE4LCAKKyAgICAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAxMjA4MjQsIDk0MDY0LCA5ODMwNzEsIAorICAgIDEyODY1MiwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMTIwODU5LCAxMDk1LCAwLCAzNTk5LCAxMjc3NzQsIDAsIAorICAgIDEyODg2MSwgODUxNCwgMCwgOTE3NTc5LCAwLCA3NDM0NiwgNjY2OTcsIDEyODM4NSwgMTE2ODQsIDk4MzE0OCwgOTI0ODYsIAorICAgIDkxNzYwMywgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgNzQ5MjcsIDQyMDQ2LCA3Mjg2MiwgNDAzNiwgMTI2NDgxLCAKKyAgICAxMjkzNzMsIDEyODIxMywgMTk0ODYxLCA4MzM1NSwgMTE5NTQsIDcwMzQ4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIAorICAgIDkyNzIyLCAwLCAxMjcwNjIsIDcyODY1LCAxMDA4MTgsIDkxNzU0MiwgNzM4MTIsIDcyODc1LCA2NTM5LCA3MzgzNiwgCisgICAgMTI2NjA3LCAxMjA3MDIsIDkyMzkwLCAwLCAxMjA0OTIsIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCAKKyAgICA0MjksIDEyMjkwMywgNzg4OTEsIDEyNzg3NCwgMTk0ODQ4LCA2NTc5MiwgMTI4NDA4LCA4MzI4MiwgNjQxNywgMTE4OTE4LCAKKyAgICA3ODE3OCwgMCwgMTI4OTcwLCA2Njc4NiwgMCwgNDkxOSwgMTA1OTAsIDEyODA5MywgNzc1NSwgMCwgOTI5NDIsIDY0NTQ4LCAKKyAgICAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgNjgyNTMsIDEyMDY4OSwgOTgzNjE2LCAxMjE4OCwgOTgzNjY4LCAxNjE3LCAKKyAgICA4MDUwLCAxOTUwMzEsIDUwMTUsIDAsIDExOTE3NCwgNDI1OTAsIDcwMzU0LCAxNzU2LCA3ODE4MSwgOTgzOTEwLCA2NTc2OCwgCisgICAgNjM1MiwgNDE4OTIsIDEyNTE4NiwgNzU1NSwgMTMxMDMsIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgMTIxMjA4LCAKKyAgICAwLCA0MjkyNiwgMTIwODcyLCA0MTc2NCwgNzk1NywgODY4OSwgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMzU1OSwgCisgICAgMTE5MTYyLCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCA3MDg1MywgMTEzNzIwLCAwLCAxMjgxMjIsIDcyNzYxLCAyMzQxLCAKKyAgICA4NDUwLCA4NDg0LCA4NDc0LCA3Mjg4NSwgNjgzMjIsIDcwMDc5LCA4NDYxLCA2NzcyMSwgMTIxNTMsIDEyNzk5LCAwLCAKKyAgICA0MzcwOSwgNDM3MDgsIDk0NTEsIDc1NzEsIDEzMDczLCA0Mzg0NywgMCwgNjgxLCA5ODMyNTQsIDcwMywgMTI3NTE4LCAKKyAgICAzMjcyLCA4NzgxLCAxMjg5NCwgNzAwNzcsIDExNzA5LCA5MjI4OCwgNzA1MTQsIDEyNzA1OSwgODMxNzUsIDcxNDM2LCAKKyAgICAxMTMzOCwgNzI3OTAsIDMyNzYsIDEyODk2OCwgMTIwMjMzLCA2NTkyOCwgMCwgMTIxMzY3LCA2NTAyMSwgNjQ3OTUsIAorICAgIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCA0MjcxMSwgMCwgOTgzNDkwLCA2ODQ3OCwgMTYzLCA1NzYsIAorICAgIDk4OTUsIDE2NTUsIDcwMTMxLCA3NDU5MSwgNzg4MTUsIDc4ODE2LCA2Njg4OCwgMCwgMCwgNzA1MTMsIDEwMDM5LCAKKyAgICAxMjA0MjYsIDU2MjYsIDU2MjMsIDU3MTcsIDU3NzYsIDQzNDg4LCA4MzQ5NywgNjY4ODUsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIAorICAgIDkyMzgyLCAwLCAwLCAxMjAxMTEsIDY3ODQ4LCAxMjczMDksIDk4MzU5NSwgOTgzNDcyLCA4ODg3LCAxMjc1MjEsIDcyOTUsIAorICAgIDExMDMxLCAxMjUyNTUsIDQzMTU3LCAxMDA0NTEsIDg5NDYsIDEwMzQ4LCAxMDQxMiwgODc1NSwgMTE5MTUyLCA2NzM0MywgCisgICAgNTcxOCwgMTMyMjEsIDk4MzM0MSwgOTgzMjc4LCA3ODEzNSwgNzA1MTUsIDkxNzYxNiwgODgxMCwgNzQ0OTksIDY4NiwgCisgICAgMTk0Nzc2LCA3MTM2MiwgNDYxOSwgMTE4OTU0LCA2NjU0LCA3Mzc2OSwgNzQ0MjYsIDEyNzUyMywgMTIwNDAsIDY1Njg5LCAKKyAgICAxMDEyOCwgNjUxMTgsIDY4MDI5LCAxMTkxNTEsIDc0MjA1LCA5MjY1MSwgMTI4MTM4LCAyNDAxLCA2ODE0NCwgODc5MiwgCisgICAgOTgzMTc5LCA2ODA0NCwgNjU0NTUsIDEyOTMxNSwgNzQzMjgsIDAsIDc0NTYxLCAxMjA3NjMsIDEyODg2LCAxMjA5NTIsIAorICAgIDY2NjI0LCAxMjY1NzgsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3MTIxMCwgNzg2MDIsIDc4Nzc0LCA5OTg0LCAKKyAgICA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzAzNDksIDE0NTgsIDQxNDc1LCA3MjQyOSwgOTM5NzUsIDEwMDgxNCwgMTE0NzksIAorICAgIDEyMTM1NSwgMTIwMzU2LCA2MzUwLCAxMjg2NCwgNjk2NzQsIDcxNDczLCAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIAorICAgIDU1MjMwLCAxMDA0NTQsIDQwNTIsIDExMzY3MywgNzYyNiwgOTgzODkwLCAxMjA5MDcsIDEwNDUsIDE5NTA4NiwgNTYzMSwgCisgICAgNDExMTMsIDEyMDQ5NCwgMCwgNDM3MDcsIDc0MTI3LCAwLCA5ODM3MTgsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAKKyAgICA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIDEyNzI3NywgNDI2MjUsIDcwMzI1LCA3ODA4NCwgNDE0NDMsIDEyOTEzMCwgCisgICAgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAxMjEzMzAsIDY4MDU5LCA0MTQ0NSwgNzgyMzYsIDExMjA3LCA4NTY3LCA0MTQ0MiwgCisgICAgMzk4OCwgNzQ4NDMsIDc4MjM3LCAxMTg5MTAsIDk4MzA2NywgNjUyNzQsIDg1NjQsIDc4MTk5LCA3ODIzOCwgMTI3NTE1LCAKKyAgICAxMjEyNzIsIDAsIDQzNDQ2LCA5ODMzNDYsIDY2NTEzLCA2MjU2LCA5MTc4MDcsIDU3OSwgNTUyMTgsIDEwMjA2LCA3ODE5NSwgCisgICAgNjM3NSwgMjY3MywgOTgzODg2LCAxMTgxNCwgMCwgNDQ4OCwgMTI4NzE2LCAxMjA1NTQsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAKKyAgICAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIDQ0ODcsIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIAorICAgIDc4MjU3LCA3MjAzLCAxMjQ5OTgsIDYxNCwgNzAzNjEsIDEyNjYzMywgMTIwNjE1LCAxMTk2MjIsIDc4MjYyLCAxMjcyNzEsIAorICAgIDEyNzMyMywgMCwgNDMxMjEsIDEyNzIxMSwgMTI3MDAzLCA5MjUxMywgMTA1MCwgNzU0OSwgMTIxMjYwLCA4Mjk5NCwgOTMxNCwgCisgICAgNzAzNjUsIDkyODk4LCA2ODAzOSwgMTI3MDYxLCAxMDA1NywgNzA0MzQsIDEyNzMxMywgMTI4NTc3LCA2NjUwNCwgMTIwOTYzLCAKKyAgICA4Mjk5MiwgMjMwNywgMTI4NDU2LCA2NDMzMywgMTI3MzEyLCAxMTk5MDAsIDczODczLCA5ODMxMjYsIDk0MDM1LCA5ODMwODMsIAorICAgIDEyNzk3MywgMTI4NzA4LCA3MDQ0NiwgMTAzNjAsIDY3NDYsIDEyMDQ3MywgOTIyNDUsIDQ0MCwgMTI4ODI2LCAxMzA4NSwgCisgICAgOTIzMywgNzQyMTYsIDk4MzU2NiwgMTAxMDg5LCA5OTU3LCAxMjUyMTMsIDY2NDQ3LCA4MDQ2LCA2NDk2MywgNjU3NzcsIAorICAgIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAxMDA0NjYsIDE1MjEsIDk4OTYsIDkzOTY1LCAxMDQ4NywgNjk4NzgsIAorICAgIDEyNTI3LCA2ODczNywgNzk3MCwgMTI1MDczLCAxMjg2NjAsIDczMDMsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgCisgICAgMTIxNDI5LCAwLCA1MjM3LCA2OTcxNCwgNjg3NTYsIDEwMTAzLCA1MjQ3LCA0NzY5LCAxMjkzMDIsIDExODk3NywgMTI4NzMsIAorICAgIDIyODMsIDkyOTMxLCAxMDA1MjUsIDMwMDgsIDQ4OTYsIDEyODEwMiwgMTIwODcsIDk4MzI0MCwgNTUyMzEsIDQxMTAzLCAKKyAgICA3NTAxMSwgNjQ1NjUsIDQ3NzMsIDEyMDg0NiwgNzg1NDksIDcwMDc0LCA0NzcwLCA2Njg5MSwgOTE3NTY3LCA4NzMxLCAKKyAgICA2NTM3OCwgNjY5MTEsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAxMTkwNzEsIDQ3NzQsIDMwMTksIDk5OTcsIDEyODM0LCAwLCAKKyAgICA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAxMjA0MTMsIDc4NTU2LCAxMjY5OTAsIDEyMTMzMiwgNzQ3NzYsIDQyODEsIDQ3NjgsIAorICAgIDEyMDU3MiwgNDE1MzUsIDQwOTksIDkwMTcsIDY5OTkzLCA5ODM2OTIsIDc4MDk1LCAyMjI1LCA3ODA5NiwgMTE4OTQ2LCAKKyAgICAxMjAyNTIsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAxMjg5MjYsIDExMzc2NCwgNjY4NzAsIDIxMzQsIDEyNzM4OCwgCisgICAgMTAxMTYsIDk4NzcsIDcwNjc5LCAxMjg5NjAsIDAsIDcwOTUsIDgzNzksIDc0MTE2LCA2Nzc4LCAxMjExNTUsIDc4MDkwLCAKKyAgICA4MjQzLCAyNDI3LCAxMjgxNDEsIDcwOTMsIDk4Mzg3OSwgMTE1ODUsIDE5NTAwMywgOTk2MiwgODI5OTAsIDEyMjIzLCAKKyAgICAxMjg0ODUsIDkyNDMwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgODMzODksIDc0NDE5LCAKKyAgICAxMjg1MzAsIDE5NDY4NiwgNTUyODMsIDAsIDcwMzYzLCA3NDQzNywgMTE1NiwgODc0MCwgODMyOTUsIDM3ODIsIDY0MzMxLCAKKyAgICAwLCA0MTM3MCwgMTAxNCwgODI2MSwgMTIwOTU2LCA5MTc1OTYsIDEwODM1LCAxMjUyMzksIDY1NTM2LCA4MzI5NCwgCisgICAgMTIwNDYzLCAxMjUwNTEsIDc3MDIsIDExODgyNCwgNzMwMiwgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIAorICAgIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCA1Njk3LCAxMTg3ODgsIDc1MDE4LCAxMjA0NzEsIDc0OTIzLCAKKyAgICA0MjI1NywgNTY5NiwgOTI2NzcsIDEyMDQ2NSwgMzg2MiwgOTY0MywgOTE3OTUxLCA3MDE4MywgNzYzNCwgNjUxNjcsIDk4NDUsIAorICAgIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCAxMjg3MTksIDE0MjYsIDY4MjE3LCAxMjg2NjgsIDY4NDQ3LCA0MjIwNCwgCisgICAgNTUyNzAsIDg1NzEsIDY3NDAzLCA3ODA2NywgNDM4NTksIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgCisgICAgMCwgMTAyODEsIDkxNzc5OCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAxMDc0NCwgNzg4ODcsIDk5MCwgNTY0NywgMCwgNzM4NywgCisgICAgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgMTI4NzksIDExMDE4LCAxMjgzNjIsIDM5NDUsIDkyNTg5LCA5ODM0NjYsIAorICAgIDcwNjY0LCA3ODg4MywgMTI4MTI4LCA3ODIxMiwgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgOTgzODM1LCA3ODczMSwgNTY0OCwgCisgICAgNjQ3NDgsIDEyMDkyMCwgNDIyMzYsIDEwMjA1LCAzNTQ1LCAxMjkxMjEsIDY5ODQsIDEyNzc3MSwgNzQwNTEsIDEyODkwMSwgCisgICAgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMTI4MTczLCAxMjUwMzcsIDE5NDc0NiwgOTkxMSwgMTIwNTkwLCA2NTAyMCwgMTAwOTcsIAorICAgIDExOTE2NiwgNzg2OTYsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIDc4MjA4LCAxMTQwLCA3ODQyNiwgMTI4MjA1LCAxMDE1OSwgCisgICAgMCwgMCwgODEyOCwgNzI4NTcsIDY4MzI2LCAxOTQ5MTEsIDE4MTUsIDE5OTEwLCA4OTAsIDEyNDkzNSwgMzI2NywgOTIyOTEsIAorICAgIDkxNzYyOSwgMTAxMjMsIDcyODgyLCA0NDEwLCAxMDQxLCAxMDU3NiwgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDk4Mzc0NiwgCisgICAgMTI4MzQ3LCA3Mjg4NCwgMCwgMTI4MDk4LCAxOTkzOCwgNjU5MDYsIDEyNzgxOSwgNzI4ODMsIDEyODg1OCwgMzI5OCwgCisgICAgNTM3NSwgMTAxNDIsIDEwMDQyMSwgODIxNSwgOTI2MzMsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgOTgzMTQ3LCA2OTg5OSwgCisgICAgMTk0OTM4LCA5ODM2MDIsIDEyMTQyNiwgNDEzODIsIDkxNzkyNiwgMTI4NjUzLCA1MTczLCA2NTM0OCwgNTI3LCAxMjExNzQsIAorICAgIDExMzc4MiwgNzg0NjksIDEyODI1MCwgNzg3OTcsIDExOTE1LCAxMjEzODYsIDAsIDEwMDcyLCAwLCA0MjY5NSwgMjMyOSwgCisgICAgNDIyNTAsIDAsIDExMTg3LCA2OTY2NywgMTIyNDUsIDE1NjgsIDY2ODA2LCA4MzQ2MCwgOTgzMTg5LCAxMTM3MDUsIAorICAgIDEyODUzMiwgMTEyMDEsIDkyNzA4LCA3NDc2OSwgMTI2NDcwLCA2NzY4MCwgOTA2OSwgNjE0NCwgMTIxMjQ2LCAxMTk4NDAsIAorICAgIDcwNzAwLCAxMjE0MzgsIDY2NzgzLCA2NDkxNywgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgOTIyNTAsIDY1MDk4LCAKKyAgICA2MzY0LCA5NTYsIDY2Nzk0LCAxMjgzMCwgMTA0NjIsIDczNzQwLCA3MzczNCwgMTI5MTA5LCAwLCA5ODM3MzksIDY2NDQ5LCAKKyAgICAxMzI2MywgNzQyODEsIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCA3MDcxNCwgMTAwOTQyLCA2Mzg4NSwgMTI3MjUxLCAxMDQ0LCAKKyAgICA0MTI3NiwgMTI4MzYzLCAwLCAwLCA0MjA2OCwgMTE3OTUsIDEyNDk4NSwgMCwgMTI3MjAyLCAwLCA0MjQ1MCwgMzkwNywgCisgICAgMTI0OTk1LCA2NDUyNiwgMTE4MjksIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDcwMzI5LCAzMDIwLCAxMTUzNywgMCwgCisgICAgNjY0NDEsIDEyMDc2MSwgNzA5OCwgMTI1MDcxLCAwLCAxMDU3LCA1NjYsIDQyNjk2LCAxMjcyMzksIDMwMTYsIDQyMjc0LCAKKyAgICA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIDcxMjA3LCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzMzMCwgCisgICAgMTIwMTA3LCAxMjkzNTAsIDY0NjU5LCA5MTc5MTcsIDEyNzc0OSwgNTUyNTMsIDYzNTcsIDYzNjIsIDg2MjYsIDcxMzM3LCAKKyAgICAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgOTE3ODUzLCA0MzgxMywgMTA1MywgCisgICAgMTAwNDMyLCA3ODI2OSwgMTAwNDM0LCA5Mjk3NywgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDY3Njg5LCAKKyAgICA2Njg3MSwgOTE3ODQ1LCA3MDMyNywgNDI0OTAsIDY4OSwgNjUwOCwgNDE2MywgNDIyOTgsIDg2MzksIDY2NjQxLCA0MjQ2LCAKKyAgICAxMDA0NDksIDQzNTE0LCAxMjEzMCwgMTAwNDUwLCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgMTI3ODUwLCA5ODMxNDQsIAorICAgIDEyNzgyOCwgNjM1OSwgMCwgNDM0NzEsIDk4Mzc2OCwgMCwgODMzNDUsIDc1MDY1LCA5MTc5NTMsIDYzNTgsIDYzNjEsIAorICAgIDE5MjYsIDYzNTYsIDcyODU1LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDEwMDQyNSwgNDM2ODUsIAorICAgIDc0MzA3LCAxMDA0MjYsIDQyOTEwLCA4MzMwMSwgODY5MywgNzg2MTEsIDExOTU2NSwgMTI4NjIxLCAxMTk1ODcsIDkyMTkyLCAKKyAgICAxMjE0NTQsIDY1ODk0LCAxOTQ2OTQsIDAsIDY0Mjk2LCA5ODM2ODEsIDk4MzM5NCwgMTk0OTU5LCAxMTkxODcsIDIxMzUsIAorICAgIDExODM2LCAwLCAxMjkzNjEsIDc4ODY5LCA0MjMxMywgNTU3OSwgOTI0MTIsIDcwMzg0LCAxMjkxMTMsIDQzODU0LCA3MTkxMywgCisgICAgNTU3OCwgMTE4NDAsIDEyODExNSwgNDIwMjMsIDYyMzQsIDU2NjksIDkyMjc1LCA3ODYyMCwgMTAxMDM4LCA2ODgzMywgCisgICAgOTIyNTQsIDY4MjAyLCA1NTgzLCAwLCAwLCA0MjQyNiwgNTU4MCwgNDIyNzYsIDI5MjMsIDg5MiwgMjIyMCwgNDI0NjUsIAorICAgIDQxMzMwLCAxOTQ5NDUsIDU3OTUsIDY1NTEyLCA2ODc3NCwgNjU3MDIsIDY4NzcwLCAxMjA4MDEsIDY1MjUxLCA2ODIyOCwgCisgICAgNjU3MTAsIDEyODM5OSwgOTQxNzYsIDY3NjcyLCA2ODc4MywgNTM3MCwgNzA0NjUsIDI5MzEsIDE2MzgsIDEwOTY2LCAKKyAgICAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCA3NDU4NSwgODE3MiwgNDIwMTcsIDkyNzU2LCAxMDg0NCwgCisgICAgMTIxMDE2LCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCA5MjYzNiwgMTAwNDM4LCAyODYsIDc4MDIzLCAxMDYyLCAwLCAxMTk5OTksIAorICAgIDEwMDQzNywgNzM5NSwgMTI3NzgzLCAxMDcwLCA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDEyODkyOCwgMzAxNSwgCiAgICAgNjg3NDMsIDY4NzQwLCA1MjExLCA2ODgwNSwgNjQwMCwgNjg3NDksIDY4NzQ4LCA2ODc2MCwgODE4OSwgMTEyNzYsIDY4NzU0LCAKICAgICA3MDI4NCwgMzcyLCAxMjg4MjksIDY4NzYxLCAxMTM3ODMsIDQyMTAyLCA0MTU4NSwgMTI3NzUxLCAwLCA0MjEwMSwgMjc2LCAKICAgICA3ODQwMiwgNjc0MjcsIDMzLCA2NzQyNSwgNjc0MjQsIDkwMDcsIDY3NDMwLCA0MTU4OCwgNjYwMzMsIDQyNywgMTA3NjMsIAotICAgIDExODgxOSwgNzA4NzIsIDEyNzg4NCwgOTgzOTQzLCAxMDMxLCA2MjU3LCA5MjQ4OSwgNDIxMDQsIDAsIDk4Mzk4MCwgMjMyOCwgCi0gICAgNjY4MzcsIDEwNzEsIDQyODk5LCAxMjUwODgsIDc0ODQ4LCAxMjA4NTcsIDExMzc5MywgMTk0OTgxLCAxMDQ3LCAwLCAKLSAgICAxOTQ5NDMsIDQyOTA4LCAxMjg0ODAsIDY5NzIzLCAxMDY1MSwgNzAzNTYsIDAsIDEyNTExMywgNzI0MzMsIDY2ODI5LCAKLSAgICA3MDgxNywgNTcxMSwgNDE2MzMsIDEyMDk4LCA2NTU3MSwgOTE2NiwgMCwgNTcxMCwgMTI4NTUxLCA2NzkwLCA2NTE2OCwgCi0gICAgMTMyMTYsIDk4MzE1MCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgNTcxNSwgNjk2NTQsIDcxOTE1LCAKLSAgICAwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDAsIDg2NDMsIDY4NTI1LCAwLCAxMTg5MDYsIDI3NTcsIAotICAgIDExMDY3LCA5NzE4LCA2NjQxOSwgODkxMCwgMTA2ODksIDY0NzksIDAsIDAsIDcxMTczLCA3ODYwNywgOTE5NiwgNjk2NzAsIAotICAgIDEyNTA3MCwgMCwgMTI4MzM4LCAxMjAzMzUsIDExODkxMSwgMCwgOTQwNDMsIDEyOTE5NCwgMCwgMCwgMTIwMDEwLCA3Mzc5NSwgCi0gICAgODcwMSwgNjgxMzAsIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMTk0OTk0LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIAotICAgIDEyOTI5NiwgMCwgNjQ5NDYsIDEwOTkyLCAwLCA3NDU2NiwgNzAzMzYsIDExMzY4OCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCAKLSAgICA0MjkwMiwgNzM4MDgsIDAsIDY1NDU3LCA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgCi0gICAgNzAzNjYsIDEyMDAwNSwgMTE5NTg1LCAxMjEyMTIsIDUwODQsIDEyMTE4OSwgMTIxMTM0LCA3NTA2MiwgMCwgNzMzLCAKLSAgICA3NDY0NiwgNzgwMTQsIDY4NzY3LCA3ODQzNSwgMTEyMDQsIDAsIDkyMTgsIDE3MzEsIDAsIDkyOTM3LCA3MTA3MCwgNjc5OTAsIAotICAgIDk4MzEyNSwgMCwgMCwgNzAzMjMsIDEyMTM3MSwgOTI0OTIsIDUxNTUsIDEyMDAwMCwgNTM1OCwgOTgzNzQ0LCAwLCAKLSAgICA5MTc3NjcsIDY0NDI0LCA3MTIzNiwgMzg0MCwgNjQzMTQsIDQxNDMyLCAxMjEzMTYsIDc4MzE1LCA2ODQzMCwgNjc5ODAsIAotICAgIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDEyNzk2MCwgODc3MSwgMTQ3OSwgMCwgMCwgMTEwOSwgMTE1ODAsIAotICAgIDQzNjU3LCA2NDYwMSwgMTIyMDUsIDkyNzgyLCAwLCA2NDUwNywgODg2OCwgMzk5LCA2Nzk3OCwgNzQ4NDIsIDk4MzI4NiwgCi0gICAgMTIxMzM2LCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMTE4OTE2LCAyNTQ0LCA2NTA3NCwgCi0gICAgMTE5MjExLCA5ODMyOTgsIDAsIDc4MDExLCAzNTEsIDY4NzY0LCAwLCAxMjg3MTMsIDU1MjI5LCAwLCA3NDI2OCwgNzgwMDgsIAotICAgIDEyODA5NCwgMCwgNDIzNzcsIDAsIDAsIDAsIDExMzc2NywgNzQzMjAsIDkwMTMsIDQwNTQsIDAsIDE5NDU4MCwgMTEzNzQwLCAKLSAgICAwLCA3Mzk2MCwgNTU4NSwgNjU4ODEsIDI1NDksIDc0NDY5LCA3NDQ1NywgMTExMDQsIDU1ODQsIDgzNTgsIDEyNjQ3MywgCi0gICAgNjQyMTUsIDY2ODY0LCAxMDkxOSwgNzA0ODAsIDc5ODAsIDEyNjYwMSwgMTEzNjk4LCAyMjE4LCA0MTgwMCwgNTU4OSwgCi0gICAgODI5ODMsIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDAsIDExMzU2LCAxMjExMjAsIDE5NDgzMywgNDM0NTIsIDY3MjQ1LCAKKyAgICAxMTg4MTksIDcwODcyLCAxMjc4ODQsIDEwMDk5MCwgMTAzMSwgNjI1NywgOTI0ODksIDQyMTA0LCAxMDAzOTYsIDEwMDM5NSwgCisgICAgMjMyOCwgNjY4MzcsIDEwNzEsIDQyODk5LCA3NDQxOCwgNzQ4NDgsIDEyMDg1NywgMTEzNzkzLCAxMDA0MDEsIDEwNDcsIAorICAgIDEwMDQwMywgMTAwNDAyLCA0MjkwOCwgMTAwNDA0LCA2OTcyMywgMTA2NTEsIDcwMzU2LCAxMDA0MDgsIDEyNTExMywgCisgICAgNzI0MzMsIDY2ODI5LCA3MDgxNywgNTcxMSwgNDE2MzMsIDEyMDk4LCA2NTU3MSwgOTE2NiwgMCwgNTcxMCwgMTI4NTUxLCAKKyAgICA2NzkwLCA2NTE2OCwgMTMyMTYsIDEwMDkzNSwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgNTcxNSwgCisgICAgNjk2NTQsIDcxOTE1LCA5ODM3MjAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMTAwMzg5LCA4NjQzLCAKKyAgICA2ODUyNSwgMCwgMTE4OTA2LCAyNzU3LCAxMTA2NywgOTcxOCwgNjY0MTksIDg5MTAsIDEwNjg5LCA2NDc5LCAxMjUxOTYsIAorICAgIDEyOTE3OCwgNzExNzMsIDc4NjA3LCA5MTk2LCA2OTY3MCwgMTI1MDcwLCAwLCAxMjUxODQsIDEyMDMzNSwgMTE4OTExLCAKKyAgICA0MTY0NSwgOTQwNDMsIDEyOTE5NCwgMTI3MDg3LCAxMjg0ODAsIDExMzc3MCwgNzM3OTUsIDg3MDEsIDY4MTMwLCAxMTk2MTYsIAorICAgIDEyMDUyMiwgNDM3NTQsIDQyNDc3LCAxMDA0NTksIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgMTI5Mjk2LCA3NDU1NywgCisgICAgNjQ5NDYsIDEwOTkyLCAwLCA3NDU2NiwgNzAzMzYsIDExMzY4OCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCA0MjkwMiwgNzM4MDgsIAorICAgIDk4MzMzNSwgNjU0NTcsIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCA3MDM2NiwgCisgICAgMTIwMDA1LCAxMDAzNjksIDEwMDM2OCwgNTA4NCwgMTAwMzcwLCAxMjExMzQsIDc1MDYyLCA5ODM0NjIsIDczMywgNzQ2NDYsIAorICAgIDc4MDE0LCA2ODc2NywgNzg0MzUsIDExMjA0LCAwLCA5MjE4LCAxNzMxLCAxMDAzODAsIDkyOTM3LCA3MTA3MCwgNjc5OTAsIAorICAgIDk4MzEyNSwgOTgzMzcwLCAwLCA3MDMyMywgMTIxMzcxLCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCA1MzU4LCAxMjg1MTUsIAorICAgIDEyOTMxNiwgMTk0OTgxLCA2NDQyNCwgNzEyMzYsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMTIxMzE2LCA3ODMxNSwgNjg0MzAsIAorICAgIDY3OTgwLCA0MzI1MywgNjU5NDMsIDEwMDM3MywgMzM3MSwgMTA5ODgsIDEwMDM3OCwgODc3MSwgMTQ3OSwgMTAwMzU3LCAKKyAgICAxMDAzNjAsIDExMDksIDExNTgwLCA0MzY1NywgNjQ2MDEsIDEyMjA1LCA5Mjc4MiwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgCisgICAgNjc5NzgsIDc0ODQyLCA5ODMyODYsIDEyMTMzNiwgMTIxNDksIDEzMDg4LCA1NTEsIDE5NDk3MiwgMTAxNTYsIDEyMTE5LCAKKyAgICA5MjU3MiwgMTE4OTE2LCAyNTQ0LCA2NTA3NCwgMTE5MjExLCAxMDAzNTQsIDEwMDM1MywgNzgwMTEsIDM1MSwgNjg3NjQsIAorICAgIDkxNzk4MSwgMTI4NzEzLCA1NTIyOSwgMCwgNzQyNjgsIDY2NzkwLCAxMjczMjcsIDEwMDM2MSwgNDIzNzcsIDEwMDM2MywgCisgICAgMTAwMzYyLCAxMDAzNjUsIDEwMDM2NCwgNzQzMjAsIDkwMTMsIDQwNTQsIDAsIDE5NDU4MCwgMTEzNzQwLCAzNDQ3LCAKKyAgICA3Mzk2MCwgNTU4NSwgNjU4ODEsIDI1NDksIDc0NDY5LCA3NDQ1NywgMTExMDQsIDU1ODQsIDgzNTgsIDEyNjQ3MywgNjQyMTUsIAorICAgIDY2ODY0LCAxMDkxOSwgNzA0ODAsIDc5ODAsIDEwMDcyMywgMTEzNjk4LCAyMjE4LCA0MTgwMCwgNTU4OSwgODI5ODMsIAorICAgIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDc0NTIyLCAxMTM1NiwgMTIxMTIwLCAxMjgxNzUsIDQzNDUyLCA2NzI0NSwgCiAgICAgOTI5OTMsIDQyNTczLCA2Njg3OSwgODMzMjksIDY3ODEwLCA2OTc2NywgNzg3NTIsIDc0MzkyLCA4MTM1LCA2NDUwLCAKLSAgICAxMDA1NSwgNzc5OTYsIDExOTk0OCwgOTgzMTczLCAxMTkyMjUsIDU2NTcsIDAsIDk2MjYsIDEyMTQ1MywgNzc5OTQsIAotICAgIDEwMTc5LCA1NjU0LCAxMjkzOSwgOTI1NzMsIDEyMDc5OSwgNzE4NjAsIDAsIDU2NTIsIDEwOTQ1LCAxOTQ1OTksIDY2NDg2LCAKLSAgICAwLCAzNjYxLCA3ODYzLCAwLCA2ODA2OSwgOTgzNjc1LCA3MDMzMiwgMTI3MTk0LCA1NjU5LCAxOTQ2MDYsIDc4NjkyLCAKLSAgICA2NjcyOSwgNTY1NSwgOTgzNjI2LCA0MjE2OCwgMTIxMTMxLCAxMDU1LCA3MTE3MSwgNzE4ODgsIDY2MzEwLCA3NDAzMCwgCi0gICAgNzA1MTYsIDEyMTQ2LCA3MDM2MiwgNzM5NTYsIDExNjE4LCAwLCA0MjcyMCwgOTI5NDksIDEwMjcyLCAxMDMwNCwgMTAzNjgsIAotICAgIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgNzQ5NzgsIDY0ODcwLCA3NDE5MSwgMzQ2NywgNzEwNzMsIDc4ODEsIAotICAgIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIDcwMDM2LCAKLSAgICA2OTY5NiwgNjk3NjksIDY0NjU2LCA5MTc5OTUsIDAsIDkyNDA5LCA3MDA1NiwgNTY2NiwgNjUyMjcsIDUzMTgsIDYzOTk0LCAKLSAgICAxMTk1OTYsIDkwOTEsIDEwNzk4LCA3ODY2NCwgNzg1MDgsIDEwMTg2LCA5ODMyNjUsIDc3MzIsIDk4MzcyNCwgNjQ1NTYsIDAsIAotICAgIDk4Mzk3OSwgNTY2OCwgNzQ0NDUsIDc0OTgyLCA3NDY0NSwgNTY3MCwgMTEzNzk1LCAxMjcyOTcsIDExODIwLCAyOTkyLCAKLSAgICA3ODI2LCA1NjY3LCAxOTk1MiwgMTIwODA3LCA3NDk4MSwgMTI3NDksIDc0NTUxLCA2Nzc1NywgMCwgNjY0OTYsIDQzNjEsIAotICAgIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMTI4Mjg2LCA5NDAwNCwgNzAzNTksIDAsIDM1NzEsIDEzMjQ3LCA1ODc0LCAKLSAgICA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgNDMxOTIsIDc0NjIxLCA3ODI2NSwgNTUzLCAxMTM3NjgsIAotICAgIDEyNzAxMiwgOTMwNTMsIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgMTk0OTE5LCAxMjc0NiwgMTI4NjcxLCA3MDMzOCwgCi0gICAgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDc0MjU5LCA5NDEwMiwgOTQwOTksIDY0OTA1LCA5NDEwNSwgOTUxMiwgOTQxMDMsIAotICAgIDEyNzQyLCA2NDQzLCA5ODM4MDYsIDAsIDkxMzUsIDEyODg2MywgNDE1NjQsIDEyMTUxNywgNTUyMTksIDEyODgzMiwgCi0gICAgOTgzODUxLCAxOTQ4NzcsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDAsIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAKLSAgICAxMjg5MDMsIDEyNDkzNiwgMTI4MzkwLCA4MzIxNSwgMjQyNSwgNjUxODIsIDEyODc2OSwgNDM2MzYsIDUyMjEsIDc4NDEwLCAKLSAgICAzMjgsIDEyMTAzMSwgNjg3MzYsIDY5ODE1LCA1NjM2LCAxMTk5MTcsIDUzMjksIDEyMTI5MywgNTYzOCwgODMxNjYsIDc5NDAsIAotICAgIDY0OTM4LCA0MzIyMywgNDM3NjAsIDU2MzUsIDMzNzMsIDI5ODYsIDc4MjkyLCA3NDIyMywgMzQzNywgNjg3NjMsIDYyMDMsIAotICAgIDQyNDcsIDcxMTY5LCAxMTkyMCwgODI3NCwgNjgyNDAsIDk4MzY1OCwgMTY1NywgNDE1NjEsIDY4Nzc4LCA3ODI5NSwgNTYzOSwgCi0gICAgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDk4MzY4NSwgNzExNzksIDQyMjI3LCA2ODMwMSwgODMzMjIsIDQxNjM3LCAKLSAgICA2Nzg3MiwgMTIxMTA1LCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTIwNzEzLCAxMTcwNSwgNTY0MiwgMCwgNTQ4NiwgCi0gICAgMCwgNDM1NiwgMTE3MTAsIDAsIDEyMDUxLCA2OTkzOCwgMCwgNTY0MSwgODI1OSwgMTI2OTk0LCAxMDU4LCAwLCA2NzYzMCwgCi0gICAgMCwgMTI4OTI3LCAxMTQ0LCA3ODc1MCwgMTI3MjkzLCA0MjIyOCwgOTgzNzE0LCA3Mzg5MCwgMTE4OTcyLCAxMjczNTIsIAotICAgIDI4MDAsIDgzMjA5LCA1NjQ1LCA2NDk2NCwgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAxMjEzNTYsIDU2MDgsIDY1ODkwLCAKLSAgICA0MzgwOCwgMTk0OTcyLCA2NzYyMSwgNjQ5MzIsIDkwMDAsIDcxMjA0LCA2NzIzNSwgOTI2NzMsIDE4NjUsIDEyODcwNiwgCi0gICAgNTYxMywgNjY0MDEsIDEyMTE0NSwgMCwgNTYxMCwgOTgzMjI2LCA3MTE5OSwgNjU4MjYsIDIwNjksIDAsIDEwNzg3LCAKLSAgICA0Mzk5OSwgMjk5NywgMTE5OTMyLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNTg3NSwgMjQxMiwgODMyMDYsIAotICAgIDgxODYsIDk4MDcsIDc0MjY5LCA2NjI5NCwgMTMxMzAsIDY1ODc0LCA3MTg1NSwgNTgwNywgMTEzNjc4LCAxMDAzMCwgNTMwNiwgCi0gICAgMTIzNjQsIDExODg2MywgOTI5NzAsIDExNzA0LCA4MzIwMiwgOTI1ODMsIDEwMjExLCAwLCAxMjA1NzksIDAsIDEyMTA2MywgCi0gICAgMTE3MDYsIDk3MTAsIDEyNTAyMiwgODI5ODUsIDEyMDY1NSwgNDEzLCA2NTYyMywgNzExOCwgODMxNjcsIDkxMzMsIDc0MjYyLCAKLSAgICA5MTc5NjQsIDEwNDIsIDEyNTA2OCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCA0OTg0LCAxMjEyNjYsIAorICAgIDEwMDU1LCA3Nzk5NiwgMTAxMDMzLCA5ODMxNzMsIDExOTIyNSwgNTY1NywgMTAwNDQzLCA5NjI2LCAxMjE0NTMsIDc3OTk0LCAKKyAgICAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAxMjA3OTksIDcxODYwLCA5MTc5MzksIDU2NTIsIDEwOTQ1LCAxOTQ1OTksIAorICAgIDY2NDg2LCA5ODMzNjAsIDM2NjEsIDc4NjMsIDAsIDY4MDY5LCAxMDEwODQsIDcwMzMyLCAxMjcxOTQsIDU2NTksIDE5NDYwNiwgCisgICAgNzg2OTIsIDY2NzI5LCA1NjU1LCAxMjEwMTIsIDQyMTY4LCAxMjExMzEsIDEwNTUsIDcxMTcxLCA3MTg4OCwgNjYzMTAsIAorICAgIDc0MDMwLCA3MDUxNiwgMTIxNDYsIDcwMzYyLCA3Mzk1NiwgMTE2MTgsIDcyNzA5LCA0MjcyMCwgOTI5NDksIDEwMjcyLCAKKyAgICAxMDMwNCwgMTAzNjgsIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgNzQ5NzgsIDY0ODcwLCA3NDE5MSwgMzQ2NywgCisgICAgNzEwNzMsIDc4ODEsIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIAorICAgIDE5NDk3OCwgNzAwMzYsIDY5Njk2LCA2OTc2OSwgNjQ2NTYsIDkxNzk5NSwgMCwgOTI0MDksIDcwMDU2LCA1NjY2LCA2NTIyNywgCisgICAgNTMxOCwgNjM5OTQsIDExOTU5NiwgOTA5MSwgMTA3OTgsIDc4NjY0LCA3ODUwOCwgMTAxODYsIDk4MzI2NSwgNzczMiwgCisgICAgOTgzNzI0LCA2NDU1NiwgMCwgOTgzOTc5LCA1NjY4LCA3NDQ0NSwgNzQ5ODIsIDc0NjQ1LCA1NjcwLCAxMDA4MzAsIAorICAgIDEyNzI5NywgMTE4MjAsIDI5OTIsIDc4MjYsIDU2NjcsIDE5OTUyLCAxMjA4MDcsIDc0OTgxLCAxMjc0OSwgNzQ1NTEsIAorICAgIDY3NzU3LCAyMjYzLCA2NjQ5NiwgNDM2MSwgMTE5MjYwLCAxMzA2LCA5Mjg2LCAxNDk3LCAxMjgyODYsIDk0MDA0LCA3MDM1OSwgCisgICAgMCwgMzU3MSwgMTMyNDcsIDU4NzQsIDc5NzMsIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCA0MzE5MiwgNzQ2MjEsIAorICAgIDc4MjY1LCA1NTMsIDExMzc2OCwgMTI3MDEyLCA5MzA1MywgNTgyOSwgOTgzMjQ3LCA0NTg3LCA3ODI4NSwgNjU5MTIsIAorICAgIDE5NDkxOSwgMTI3NDYsIDcyODA2LCA3MDMzOCwgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDc0MjU5LCA5NDEwMiwgOTQwOTksIAorICAgIDY0OTA1LCA5NDEwNSwgOTUxMiwgOTQxMDMsIDEyNzQyLCA2NDQzLCA5ODM4MDYsIDAsIDkxMzUsIDEyODg2MywgNDE1NjQsIAorICAgIDEyMTUxNywgNTUyMTksIDEyODgzMiwgOTgzODUxLCAxMjgwMjYsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDExOTkxNCwgCisgICAgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDEyODkwMywgMTI0OTM2LCAxMjgzOTAsIDgzMjE1LCAyNDI1LCA2NTE4MiwgMTI4NzY5LCAKKyAgICA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMTIxMDMxLCA2ODczNiwgNjk4MTUsIDU2MzYsIDExOTkxNywgNTMyOSwgCisgICAgMTIxMjkzLCA1NjM4LCA4MzE2NiwgNzk0MCwgNjQ5MzgsIDQzMjIzLCA0Mzc2MCwgNTYzNSwgMzM3MywgMjk4NiwgNzgyOTIsIAorICAgIDc0MjIzLCAzNDM3LCA2ODc2MywgNjIwMywgNDI0NywgNzExNjksIDExOTIwLCA4Mjc0LCA2ODI0MCwgMTk0NzQxLCAxNjU3LCAKKyAgICA0MTU2MSwgNjg3NzgsIDc4Mjk1LCA1NjM5LCAyOTU0LCA1NjYwLCA1NjQwLCA3ODMwMywgMTIxNDIwLCA3MTE3OSwgNDIyMjcsIAorICAgIDY4MzAxLCA4MzE2OCwgNDE2MzcsIDY3ODcyLCAxMjExMDUsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMDA3MzEsIAorICAgIDExNzA1LCA1NjQyLCAxMDA3MzIsIDU0ODYsIDEwMDczNCwgNDM1NiwgMTE3MTAsIDEwMDczOSwgMTIwNTEsIDY5OTM4LCAKKyAgICAxMDA3NDAsIDU2NDEsIDgyNTksIDEyNjk5NCwgMTA1OCwgMCwgNjc2MzAsIDEwMTAxNiwgMTI4OTI3LCAxMTQ0LCA3ODc1MCwgCisgICAgMTI3MjkzLCA0MjIyOCwgOTgzNzE0LCA3Mzg5MCwgMTE4OTcyLCAxMDA1NTAsIDI4MDAsIDgzMjA5LCA1NjQ1LCA2NDk2NCwgCisgICAgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAxMjEzNTYsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMTI4MzM1LCA2NzYyMSwgCisgICAgNjQ5MzIsIDkwMDAsIDcxMjA0LCA2NzIzNSwgOTI2NzMsIDE4NjUsIDEyODcwNiwgNTYxMywgNjY0MDEsIDEwMDcyMSwgCisgICAgMTAwNzI0LCA1NjEwLCAxMDA3MjYsIDcxMTk5LCA2NTgyNiwgMjA2OSwgMTAwNzMwLCAxMDc4NywgNDM5OTksIDI5OTcsIAorICAgIDExOTkzMiwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDU4NzUsIDI0MTIsIDgzMjA2LCA4MTg2LCA5ODA3LCAKKyAgICA3NDI2OSwgNjYyOTQsIDEzMTMwLCA2NTg3NCwgNzE4NTUsIDU4MDcsIDExMzY3OCwgMTAwMzAsIDUzMDYsIDEyMzY0LCAKKyAgICAxMTg4NjMsIDkyOTcwLCAxMTcwNCwgODMyMDIsIDkyNTgzLCAxMDIxMSwgMCwgMTIwNTc5LCAwLCAxMjEwNjMsIDExNzA2LCAKKyAgICA5NzEwLCAxMjUwMjIsIDgyOTg1LCAxMjA2NTUsIDQxMywgNjU2MjMsIDcxMTgsIDgzMTY3LCA5MTMzLCA3NDI2MiwgCisgICAgOTE3OTY0LCAxMDQyLCAxMjUwNjgsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgNDk4NCwgODMxOTgsIAogICAgIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgODMzOTksIDEzMDgsIDEyMTI1OCwgMjUzNCwgODEwLCAxMjUwODksIAotICAgIDEyMDkzMywgMTI4MDE2LCA3MTg0OSwgNzE4NjksIDE5MTcsIDMwMDAsIDEyNTE0MCwgMTIwMTg0LCAxMjA3MzksIDIzNjQsIAorICAgIDEyMDkzMywgMTI4MDE2LCA3MTg0OSwgNzE4NjksIDE5MTcsIDMwMDAsIDEyNTE0MCwgNzA2OTQsIDEyMDczOSwgMjM2NCwgCiAgICAgNjYzODcsIDc0NDcwLCA2NjYxOCwgNjU2ODAsIDY2NDExLCAxMDAyNywgNzE4NDEsIDEyODE1NCwgMTIzMzcsIDc0MjgzLCAKICAgICAxMjczNjgsIDk4MzE2NywgMjk4MCwgNzU1LCA2OTc3NCwgOTMxLCAxMzEyNCwgNjgwNjgsIDYzNjMsIDI3NDgsIDEyMTAyMiwgCi0gICAgMCwgNjUwNDEsIDkyMjc2LCA0NDAxMSwgODczMCwgMTk0OTk3LCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIDkyOTg4LCAKLSAgICA3Mjc1LCA3ODMwNCwgOTM1LCAxMjcwNTIsIDY1ODQwLCAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIAorICAgIDAsIDY1MDQxLCA5MjI3NiwgNDQwMTEsIDg3MzAsIDE5NDk5NywgMTAwNzExLCA3ODMxMiwgNzI3NCwgMTAwNzEyLCA5Mjk4OCwgCisgICAgNzI3NSwgNzgzMDQsIDkzNSwgMTAwNzE5LCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEwMDQ4OSwgNjUyNTMsIDY0MzAxLCAKICAgICAxMjg4MzUsIDc4MzA4LCA0MjM0MSwgNjUyODQsIDI0MTcsIDAsIDEyODg0LCAxOTkxMiwgNzkwNywgMTA3NjgsIDc4MzAwLCAKLSAgICAxOTQ5OTgsIDE5NDkxMiwgMTA2NzMsIDY4Nzc5LCA3MjQ4LCA2ODc4NiwgNDM1MTUsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAKLSAgICAxNjQ5LCA2Nzg3NiwgOTY0LCAxMjEwMzQsIDY2NDAzLCA3ODIyNiwgNjYzOTMsIDkyODk3LCA3MDM1NSwgNjY0MDksIDAsIAotICAgIDgzMzk4LCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgNjk5MDksIDQzNTQ3LCAKLSAgICA4MzAyOCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIDExNTY1LCA3OTQ5LCAwLCA2OTc1OSwgMTEzNDEsIDQyNDk0LCAKLSAgICAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDcwODEwLCA2NDc4LCA5ODk4LCA0MzY3MywgNjUyMzcsIDYyNDEsIAotICAgIDcxMDYsIDQ4NzcsIDEyOTEwOCwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgNDQwOSwgMCwgMCwgNjQ3OTgsIDcwODA1LCAKLSAgICA1MzQ2LCAxMjgyNDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCA2Njg1MSwgOTE3NiwgOTI4ODIsIDEyMTE1MywgNjUyMzEsIAotICAgIDY1ODg0LCAxMjY3OCwgNzg3NDgsIDExODkxMiwgMTEzNzgsIDQ0MDE4LCA0Mjc4NSwgMjQwOCwgMzI1MSwgMTEyMDMsIAotICAgIDk4MzE1OSwgNTY4NSwgMCwgMjQ2MSwgMTEwNTIsIDcwOTEsIDUzNDIsIDgzMTcsIDEyMTQ0NiwgNjgxNjMsIDUzNDAsIAotICAgIDEyMDU1OSwgMTI3ODIwLCA0MzYzNSwgNzM5MjgsIDEyNTAwMSwgNzEwNjksIDgzMzE4LCAwLCA4MzMxNywgNjU0ODIsIAotICAgIDEyMTM5NCwgOTE0MiwgMCwgNjg1MDYsIDAsIDEwOTM4LCAwLCAxMTg3OTAsIDExODIsIDI1NDIsIDQ4MjYsIDAsIDEyNjY0OCwgCi0gICAgNzI0MzgsIDUyOSwgODU4MCwgMTI3NDkwLCAwLCAxMDU4NiwgMTA3OTAsIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCAKLSAgICA2ODc0NCwgOTgzODI1LCA0MTU5NCwgMjI1LCA0MjgyOCwgMCwgNjc4MjEsIDEyMTIwMCwgMTEzNzYsIDc0Mzc5LCAxMDcyMSwgCi0gICAgNjc2NjQsIDM0MzgsIDQyMDk3LCA2ODg2MiwgMTEwODQsIDMxOTQsIDQxODcwLCAyNjYsIDc4MzA1LCAxMjAxODMsIDQxODczLCAKLSAgICAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4MzksIDQxODcxLCA0MTMzOCwgMzczNCwgNzczNCwgCi0gICAgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMjc5MzcsIDk4MzIxNiwgNTE2MSwgMTA1NzIsIAotICAgIDkxNzU1OCwgNDI5MDYsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTIwNDA2LCA5ODM2NDMsIDEyNjYwNSwgMTExNjcsIAotICAgIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDAsIDY4NjM1LCAxMDAzMSwgCi0gICAgMTEzNzY2LCA5ODcwLCA2NzcyNiwgODYyMCwgNjU4MjQsIDkxNzg1NSwgMTE5MzgsIDEyMTMwOCwgNzI4NSwgOTgzNTU3LCAKLSAgICAxMTk1NzcsIDQyNjc4LCA2Njg0MiwgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDAsIDEyOTE2OCwgMTI4MjY3LCAKLSAgICA3ODE2OSwgNjYxOTksIDAsIDM2MDksIDY4NjI0LCA3MDI4MCwgODMyLCAxMjA2OTMsIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCAKLSAgICA3ODQ3MSwgNjU3MDMsIDcxMjU2LCAxMjg1MTcsIDQyNzMyLCA1MTgwLCA5MjY5OSwgNDEzOTUsIDQxNTMwLCAxMTY5MSwgCi0gICAgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMTI3NzkwLCAxMjA1NDgsIDEyODY0NSwgNjM0OCwgMjQzLCAxMzIwMCwgMTIwMTYwLCAKLSAgICA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgNDM2ODcsIDAsIDkxNzg0NCwgNDI4NSwgCi0gICAgNjYxOTUsIDEyMTM3MCwgNDIzMCwgOTI4ODYsIDczNjcsIDQzMjU2LCA5MjM1MywgNzU2MywgNDIzNzYsIDk4MzI3MSwgCi0gICAgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAxMjg1NzgsIDAsIDc0ODU2LCA2NTg5MywgMTIyMDgsIDk5NzMsIDEyODM4NiwgCi0gICAgNjYzMTEsIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDAsIDcwMTU1LCA3ODYyMiwgNzAwNDcsIDEyNzI3MywgNjAyMiwgMTk1MDIzLCAKLSAgICAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIDE5NTAyMCwgMTI2ODIsIDEwMTYsIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIAotICAgIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDcwODU1LCAyMDc0LCAxMTM3NDIsIDc4MjgzLCAwLCAxMjQ1MywgNzA4NDcsIAotICAgIDk4MzgyNiwgNzQyNDEsIDEyNjU2OCwgNjc5MSwgMTI0NTcsIDc4MjY4LCAwLCA2NjI3OCwgMCwgNzgyNzksIDAsIDAsIAotICAgIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAxMjQ0OSwgMTI4NTUyLCA3MTIyNCwgNDM4NjgsIAotICAgIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAxMTM3NjUsIDExOTI0OSwgMTEzNzE1LCAxMTU5NSwgNjQ4OTMsIDExODkwNSwgCi0gICAgNDM0MzUsIDEyNDk2NCwgMTI1MDMwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAxMjA2NTAsIDU0OTQsIAotICAgIDQ2MzksIDEyNzU1OSwgMTk5MCwgMTExMDcsIDQ0OTgsIDc0MTY5LCA2NzczNiwgODMyNzMsIDEyNzI3MiwgNjk3MzQsIAotICAgIDI5NjAsIDczNzc5LCAwLCA4OTY5LCAxMjgxMTcsIDQzNDI0LCA3Mzk1OSwgMTI2NDY0LCAyOTUwLCAxMTk1NzksIDYyMTAsIAotICAgIDY1NzUzLCAzNzAsIDEyMTM2MCwgMCwgMCwgNDk1MywgMTk1MDA5LCAxMjEwNTQsIDExMzcwOCwgMCwgNjkyMzAsIDAsIAotICAgIDE5NTAxMCwgNjU2ODgsIDc0OTUxLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgCi0gICAgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIDcxMzE3LCA2NDkyMywgMTIwNTcxLCAKLSAgICA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDAsIDkxNzc3NCwgNzQ5MTQsIDM3NjEsIDAsIAotICAgIDAsIDcwMDY4LCAxMjA0MDgsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgOTgzMjU2LCAxMjgzODksIDAsIDAsIDkwOCwgCi0gICAgMCwgODYxMSwgMTIxMzg0LCAwLCA3NDY0MiwgNDM2OTEsIDQxMTk3LCAwLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgNDE1ODYsIAotICAgIDEwNTI3LCA3MDQyNiwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgNzQ5MTcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIDc0ODgzLCAKLSAgICAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDAsIDAsIDc4NzY3LCA5ODMyNTksIDEyNzE2MywgNjgxOTMsIDM0NywgMCwgCi0gICAgOTE3NTQ0LCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNjgwNDYsIDEyMTQzLCAKLSAgICA2OTY1NywgNzg1MTIsIDEyODQ5MywgMTExNTMsIDQxODA0LCA3ODUyMywgMCwgNzg1MjUsIDAsIDEyODg1OSwgNDE1ODQsIAotICAgIDEwNjgxLCAwLCAxMjA5NzksIDczOTM4LCA3Mzc4MSwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCAKLSAgICA2NjM4NCwgOTUxOCwgNjYwOSwgMTA0MzQsIDcwODQ1LCAxMTMxOSwgMTA5NywgMTI4OTY0LCA5MTc1NjQsIDQxNzMwLCAKLSAgICAxMjkxODEsIDEyMTUwMSwgNzM4NDcsIDc0ODQ1LCA2NTE3MiwgNDE3MjgsIDQxNzIxLCAxOTQ3ODAsIDE5NDc2OSwgCi0gICAgMTIxNDk5LCA0MTIwMywgMTI3MDU2LCAxMzExMCwgNDE3MjYsIDE5NDg1NiwgNjcwNzcsIDEwMDAsIDY5NjUxLCAxMjc1MDksIAotICAgIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMTI1MDU5LCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIDQxMTM4LCA5ODM5NjgsIAotICAgIDY4MjEzLCA3ODAwMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMTk5MDQsIDY3NjcxLCA1NTI0OCwgMTIyMzcsIAotICAgIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgNzkyNiwgMCwgCi0gICAgOTE3NjAxLCAxMjg4MzMsIDY0Mzk4LCA3MTEyNCwgMTE5OTcwLCAxMjMxMSwgMTE5MTgxLCA3ODc5NiwgNjg3NjgsIDc4Nzk0LCAKLSAgICA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMTEzNzk3LCAxMjg1NzksIDEyMjkwLCAxMjAxNjksIDEyOTA5MywgCi0gICAgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgMTEzNjk0LCA5NjI3LCA0MzY0NiwgNzg1NDIsIDc4NTM1LCAKLSAgICA5ODMyMTIsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIDExMzA4LCAKLSAgICAxMTk5OTUsIDk4MzQ5MywgMTEzNzAyLCA2NjgzNiwgNjUzMDUsIDY1MTAwLCA0MDMxLCA0Mjc5NCwgMTIwMDAzLCA3MDc1LCAKLSAgICA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAxMjAwMTQsIAotICAgIDEyMDAxNSwgNjA0MSwgMTIwNTIwLCA0MTg5OSwgOTgzMjg4LCA4MDAyLCAxMjgzNjcsIDQzNjQsIDczNzMyLCA5ODM1NzAsIAotICAgIDY0MzMyLCAxMjA5NzYsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDY4MjQ2LCA3Mjc5LCAKLSAgICAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAxMjExNTIsIDEyMTM4MSwgOTY2MCwgOTE3OTI5LCAxMzAxMiwgNDU3MSwgCi0gICAgOTE3NTg4LCAwLCAxMTg5NDAsIDEyMDc4LCAyOTcwLCAxMjkxMjIsIDEwOTMzLCAwLCA3Nzg3MCwgMTIxMjQzLCA3Nzg0MSwgCi0gICAgMCwgNDE1OTksIDcwMTU5LCAxMjEzNDIsIDEyMDg4NSwgMTI5NTAsIDkyMTYwLCAzNDg2LCA5ODM5NzMsIDc4MzExLCA0MjM5LCAKLSAgICAxMjgwNzMsIDEyNzc5OSwgNjY1MTEsIDY4MDY2LCAyNjM3LCA2NDYyOSwgODQ2MCwgNjY4MzQsIDg0NzYsIDk4Mzk3NSwgMCwgCi0gICAgNjgzMTIsIDc4NDg5LCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAwLCA0MzE2LCAwLCAxMzExOSwgCi0gICAgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDkyNzc3LCA3Mzg2NCwgOTgzMjAzLCA0MTczNCwgODIwNiwgNzQwODEsIDkxNjMsIAotICAgIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgOTI1NDYsIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCAKLSAgICA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgNjY4NTMsIDczOTYzLCA0MTg1NSwgNDE4NjcsIAotICAgIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgCi0gICAgNjM4NzYsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDE5NDcxOSwgOTI3MTQsIDAsIDEyNzc4MiwgCi0gICAgOTI1MTIsIDAsIDY2Mzc3LCA2OTc4MSwgMCwgMTI0OTcyLCA3ODUxMSwgMzE2MSwgMjk1LCA3MTI1NywgMCwgOTIyMjMsIAotICAgIDEyMTMyOCwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNTAxLCA2ODIxMCwgMzk3MSwgOTgzOTU5LCAKLSAgICA3MDA2MywgMjk1MiwgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgNjgwOTUsIDY2NywgMTIzMzIsIAotICAgIDYzODg3LCA2MDg2LCA0MTcyMiwgMCwgNTE3MiwgMCwgOTgzMjgwLCA0MTU5LCA5ODM1NjIsIDAsIDk4MTUsIDYzODg0LCAKLSAgICAxOTkzNCwgNjM4ODIsIDQxMTk4LCA4NTU1LCA2Mzg3OCwgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIAotICAgIDYzODcyLCAxMjA5NDEsIDQyNDIxLCAxOTUwMzUsIDQxNzIzLCA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCAKLSAgICA0MTkxMywgNjM4NTIsIDY2ODY5LCAxMjg5NzEsIDQyMzQ4LCA3Mzg5MiwgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTAxLCAKLSAgICA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAxMjg2MzcsIDYzODQ2LCAyOTcyLCAxMjkzMiwgNzI2MiwgNjk5NjgsIDYzODQ5LCAKLSAgICA2Mzg0OCwgNjM4NDcsIDExMzc0OSwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIDEwNzQ2LCA3MjUwLCAxMzIxNCwgCi0gICAgMTAwNDEsIDgxMDUsIDYzODkyLCAxMjc3ODAsIDY5OTY5LCAxMTA1LCA0MTgwLCAxMjc3ODYsIDEyMDk0LCA5NDk3LCAwLCAKLSAgICA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgOTI3MzksIDE2NzgsIDEzMjc0LCA1NTIsIAotICAgIDExODgzNCwgNDQwMTAsIDEwNzg1LCAwLCAxMTE5MiwgNDU1NywgNzQ0NTksIDkxNTksIDEwMTcxLCAxMzEyNSwgNjM4NjAsIAotICAgIDU1NDAsIDYzODU4LCA2Mzg2NSwgMjgxLCAxMzI0MiwgNjM4NjIsIDc0MTU0LCAwLCA1NTM2LCA2NTU2OCwgOTU3NCwgMTM4OCwgCi0gICAgNzE5MDIsIDAsIDEwNzcsIDE5NTAwMCwgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCA5MTc3ODksIDAsIDQyNzczLCAKLSAgICAxMjEzMzEsIDAsIDAsIDExOTIyMCwgMTIwOTEyLCAzNjYzLCAxMjcwMjcsIDExMTIsIDcwMzM1LCA4Njg2LCAxMjY2MTEsIAotICAgIDUzMzQsIDY1MDgxLCA0MzI0OSwgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDEyNTAxNywgNjUwOSwgMCwgNTMyNywgNzg3NzYsIAotICAgIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCAKLSAgICA2Mzg2NiwgNzg2MjYsIDE5MTUsIDQ4NDYsIDY3NzU1LCA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIAotICAgIDY5MjM4LCA2NDQzOCwgMTIwNzAsIDg3NjAsIDExMTcsIDExMzc1MCwgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCAKLSAgICA2MzgzNSwgNjM4MzQsIDk4Mzk0NywgNzgyNDAsIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg1MywgNzAxNzMsIDYzODMzLCAKLSAgICA2MDQyLCA2NjM2MCwgODA4MywgMTI4MTY2LCA5ODM3MzMsIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODM5MDQsIAotICAgIDUyMjcsIDkwNDcsIDYzODIyLCA3NDc5NywgNjA5MSwgMCwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgCi0gICAgNjM4MTEsIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgMTIwMTQzLCA3ODAsIAotICAgIDIwNiwgNzAxMjYsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIAotICAgIDYzOTMyLCA3NTA1MCwgNjM5MjksIDM1NDYsIDE2MDUsIDc3OTM0LCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAKLSAgICAyMDg2LCAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgMCwgNDYxOCwgNDIyMDksIDExMTM3LCAxMzE2OSwgNTI5MCwgCi0gICAgMjA4OSwgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIAotICAgIDcyODMsIDAsIDYzOTcwLCAxMjExNjUsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAKLSAgICAxMjg5MjAsIDc0MDgsIDExODA5LCA4MzIyMCwgMTIxMTgxLCAwLCAyOTY1LCA3MjU4LCA4ODA4LCA2NjU3MiwgMTA4OSwgCi0gICAgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMTExMDYsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCA3NDQ5NCwgCi0gICAgMTI0NjMsIDI5OTQsIDEyNTEzNiwgMTE4ODI3LCA2ODUyMiwgOTY2NCwgNzA4MzQsIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIAotICAgIDc0MzQzLCA2NzM3MCwgMCwgNjYwLCAxMDEyNywgNjY2LCA5MDIyLCA1NTMyLCA0MzY2NywgNTUzMywgMTI1ODAsIDc4NTA3LCAKLSAgICA2MTE4LCAyMjIsIDk3OSwgMzg4NCwgOTgzMzk0LCA3NDE1MSwgODMyMjcsIDY1MDIsIDk4Mzg1NSwgMTEwODUsIDEyMTI2MSwgCi0gICAgNjM5NTEsIDEyNDY1LCA5MTc4NjIsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCAKLSAgICA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIAotICAgIDk0MDc2LCAxMjEwODYsIDkyNDY0LCAxMjA0NDQsIDY5NzMwLCA4MDEsIDQzMTY1LCAxNjkwLCA2MzkxOSwgNjM5MTgsIAotICAgIDYzOTE3LCAxMzI3NywgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIDIwNTQsIDIzMzQsIDc4NTE1LCA2MzkxNiwgNTQ4MywgCi0gICAgNjM5MTQsIDY5NzM3LCA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAyNTM5LCAxMjAxMDIsIDQzOTgwLCA1NDg1LCAwLCAKLSAgICA0MjY5NywgOTA2MSwgNTUzNCwgMTA2NzIsIDQ1MDIsIDY4MDU3LCAyNTMsIDAsIDY4MjA4LCAxMjA0MzksIDkyMDMsIAotICAgIDc0MjMxLCAwLCAxMTUzMCwgNjg2MzQsIDY4NjY4LCAxMjEyNDIsIDExMTI3LCAwLCAxMDQ3NCwgNDM0MjYsIDEzMjU3LCAKLSAgICA0MjM1NCwgMTI4MDk5LCA5ODM2OTgsIDcwMDQ0LCAxOTUwNjUsIDAsIDg0MTMsIDY2ODQxLCAwLCA1NjkzLCA3MjcyLCAwLCAKLSAgICAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgMTk1MDYzLCAwLCAwLCAwLCAxMjY2MzksIDEyMDA5NywgMCwgOTQwNzgsIAotICAgIDY2ODQwLCAxMjcxNjUsIDY2NjA4LCAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDc4MzQ3LCA3MjcwLCAwLCA2NjYwNiwgCi0gICAgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIAotICAgIDYzOTA2LCAxNTk4LCA2MzkwNCwgNzExODcsIDcwMzkzLCA0MTcyOSwgNDQyMywgMTMwNywgMTEzNjkyLCAxMDUxNSwgCi0gICAgNDE1ODksIDEyODY5OCwgMTI4OTE4LCA2MjE4LCA5MjkxNywgMTQzMCwgMCwgMTI2NTEzLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCAKLSAgICA3NjE5LCAzMjU1LCAzNDkzLCA3NDAzMiwgMTE1NDksIDEwNzM1LCA0MTc0MywgNzM5MzcsIDY4MDEsIDk4MzYzMywgNDUxOCwgCi0gICAgMTA5OTAsIDY1MDczLCA1MTY3LCA0NDgxLCAzNzcxLCA2NzA5MywgMjcxMCwgOTgzNTkzLCA2NjI3NywgNDE3MjQsIDY3NzE2LCAKLSAgICA0MzA3MywgNDE2OTAsIDEyNDc5LCA5ODM2MzUsIDgzODAsIDEyMTA3MSwgNzE4NTIsIDcwMDQ2LCAxNjI4LCAxMjEyMjksIAotICAgIDEyODgxNywgMTI5MDY3LCA2NTI2MiwgNjMzMywgMTA3ODMsIDExMTcyLCAxMjE0NzMsIDYzODU1LCA3MDg0MCwgMTEzNjc5LCAKLSAgICAwLCA1MzM5LCA3NDMyMywgMTIwOTQ2LCAxMzAwNCwgNjY4NDMsIDQ0NTcsIDAsIDEyNzc1NiwgMTk0ODE4LCAxMjcxMTYsIAotICAgIDU2ODQsIDg2NzgsIDEwOTE0LCA0MzYzMiwgNTY4OSwgNjU4MDcsIDcwODE0LCA2ODQ2NCwgMTI2MzMsIDEyODcwLCA2OTcwNSwgCi0gICAgNjUxODMsIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAxMTkwNzYsIDc0MjUxLCAwLCAxMjA2NDcsIDEyODkzMCwgCi0gICAgNTAsIDEwNTU4LCA5ODcxLCA0MjYxMiwgNDM2NTUsIDc0NDAzLCA5ODM4MTgsIDc0Mjg0LCA2NjQ2OCwgNjY5MDUsIDEzMjU5LCAKLSAgICA0NDQ4LCAxMTkxNTAsIDEyMTQwNiwgODMzNDksIDcwMDQzLCAxMzIxLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDEyMTE4NiwgCi0gICAgOTE3NjA3LCAxMjQ5NTgsIDEyNzA3OSwgNzExMDYsIDEyNzg1MiwgMCwgMCwgOTgzMDc1LCAxMjUwMSwgNjQ2MDQsIAotICAgIDEyODY1NywgMTE1MjcsIDExODg3MCwgODgxMiwgOTgzNzA2LCAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCA2NjQ2NywgCi0gICAgMjEwNSwgODA4NywgNzgxNjMsIDY5NjMyLCA5ODk0LCAxMjcxMzcsIDEyNzg1NiwgNjk5OTUsIDQ2MzYsIDU1MjYyLCAKLSAgICA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCA5ODM2OTUsIDExMzc4MCwgMCwgMTE4OTY4LCAxMjI3NywgMTIxMjM5LCAKLSAgICAxMTk5NSwgOTI1NTMsIDEyMTAwNiwgMTIxNTgsIDcwMTcwLCA4NzQxLCAxMDE5NywgNjg3ODAsIDkyNDI2LCAxMjEyODUsIAotICAgIDY1MzEsIDgzMDUxLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDkyOTM2LCA5ODM2NTAsIDE4NzMsIDEwODcsIDEyNDk2NiwgMCwgCi0gICAgNzQyODAsIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDk4MzEyMywgMTk0NzE2LCA3MjM3LCAxMjUwNCwgNzExMTMsIDEyNjU1OSwgCi0gICAgMTI4NzQ4LCAxMjA4ODcsIDk0ODksIDAsIDcwODQzLCA0Mzg0LCA3NDIyMCwgNjM4NDUsIDIwNTgsIDY5NzQxLCAxMzI5NSwgCi0gICAgNDMxOTEsIDEyODAzMCwgMTI4NTcxLCAxMTU0LCAzODU3LCAxMjA1LCAwLCAwLCA2MDU1LCAxMjk1OCwgMTIwNzA2LCAKLSAgICA3NDE2OCwgMTI4Mzg4LCA3MDg0NiwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgNjY0MDAsIDQxNzEyLCA3OTgzLCA3MDgzMywgCi0gICAgOTM5OTcsIDk4MzMzMiwgNjM0NywgNzg3MTUsIDc2NTQsIDQxNzEwLCA0MTk2LCAwLCA0MzcsIDQxNzA5LCA3Mzc3MiwgCi0gICAgNzA4MzIsIDAsIDk0NjUsIDEzMjkwLCAxMTkxODAsIDQ5OTcsIDY0MzA2LCAxMjEzMDksIDAsIDQ5OTksIDE5NDY0MiwgCi0gICAgNjc0MDEsIDEyNjU4MiwgNDcxMSwgMTIwNzY5LCAxMjA2MDIsIDI3MzksIDAsIDgwNDQsIDc0MzEzLCAxOTQ2NDMsIDQxNzg5LCAKLSAgICAxMjgxNDIsIDEwODA5LCA2NjI3OSwgMCwgMCwgMTc3OSwgNjYwMCwgNjYwMSwgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIAotICAgIDEzMDU4LCAxMjA0NDksIDEyODc1LCA5ODM4MDQsIDkyMTg2LCAxMzIyOSwgNzE4NDUsIDEwNTc1LCA0MzM5OSwgMTk0NTc3LCAKLSAgICAwLCA0MTc5MSwgMTEwNCwgMCwgOTgzNzI1LCAxMDY1NSwgOTgzMzM0LCA5ODM1NjEsIDEyMDE2NCwgMCwgMTA4MiwgCi0gICAgMTIxMDI0LCA4NDI4LCA2NTY5LCAwLCAwLCA3ODUzNCwgNjk4NDksIDY3ODMsIDE5NDY3MSwgMTI5OTMsIDgwNDksIDQxNTQ4LCAKLSAgICA0NDAyMSwgNjQ1OCwgNjQ3MjgsIDEyODg4MiwgNDc2MSwgNjM4MjgsIDQ3NjYsIDY0NjIzLCAxMjczLCA0MzQwNywgCi0gICAgMTIwNjc3LCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIDEyODYyNywgNDE1NDUsIDEyNjQ2NSwgCi0gICAgOTI0NDksIDAsIDExMjE2LCAxMjEzMDcsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgODUwMywgNTEyMiwgNDE1MjcsIAotICAgIDcxOTEwLCA2NjMyMCwgNzAxNjEsIDc0OTA3LCAwLCAwLCA0MTUzNywgNjY0NTMsIDgzMDMsIDgyODIsIDExODE3LCA3Mzg1NywgCi0gICAgMTAwMDMsIDczODU5LCA2NTkwNCwgNzM2MywgMTY4NiwgMCwgNzAxMTUsIDExNDY3LCAzNjY0LCA2NTkyMSwgNjQyOTksIAotICAgIDEyNDkzOSwgMTI4NDYyLCAxMjgwMDEsIDQzMjQsIDEyNiwgNDIyNDYsIDc1MDMwLCA2OTk4NCwgNjc3MjUsIDY1OTI2LCAKLSAgICA3NzQ0LCA2ODg1OSwgNzQyNzcsIDY2MjgzLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAwLCA2NTYwMCwgCi0gICAgMTYzMywgMCwgMTI2NjE0LCA0NzYyLCAxMTAzLCA3MDgyNywgNzAxNTcsIDQ3NjUsIDk4MzQ5NCwgMTMwNzgsIDAsIDQ3NjAsIAotICAgIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIDExMDIsIDE5NDY1MiwgNDIyMzYsIDEyODg2NywgMTI3MDcyLCAxMTU0NiwgCi0gICAgNzQ3OTQsIDMzNywgMTIxMTk2LCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIDAsIDc1MDQ3LCA0NzA3LCA2ODIwNiwgCi0gICAgMTAxNDMsIDc4ODMsIDEyMTQ0NCwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgMTMwMTAsIDY5Nzk2LCA4MzA0LCA5Mjk4MiwgCi0gICAgMTk0Njg4LCAxMTk1NzUsIDIyOTMsIDcwMTk1LCA2NjY1NCwgMTI5MDc3LCA5MjY3NiwgMCwgMTMwMDgsIDEyMTE5NCwgCi0gICAgNDM4NSwgMTI4NzM2LCAxMzAxMSwgMTI1MDA0LCA5MjU2OSwgMTE5MTYxLCAxMzAwOSwgMTYwLCAyNjc3LCA3MDM4OCwgCi0gICAgOTgzMjgyLCA0MTc5MywgNjU3NjMsIDc0MjIxLCA3MDc5MCwgNDE3OTIsIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgCi0gICAgNDM4MjEsIDU3MDksIDEyODI5NiwgNzEwNzYsIDQzODE2LCA5ODMwODcsIDk4Mzg5NiwgMTA3OSwgMzg2NywgNTcwOCwgMCwgCi0gICAgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCA0MDA1LCAxMjEwOTEsIDEwMjM3LCAxMDk5MSwgMTI4ODE2LCAKLSAgICA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIDEzMTcwLCAxMjU0MCwgMTI5MTc4LCA0MjYwNSwgMTIwNzY1LCAxMjY2MTcsIAotICAgIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCA2ODA1OCwgNzQ4NjcsIDY3NzMwLCAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCAKLSAgICA5MTc1OTEsIDkxNzU0MCwgOTE3NTkzLCAzMzQwLCA3NDAxNywgOTE3NTg2LCAxMjA5OTQsIDEyOTE0MSwgMTIwNTQxLCAKLSAgICAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCA4NjQsIDk4MzE3MSwgMTE4OTI2LCAKLSAgICA4OTcyLCAxMTk5MTgsIDc4NDksIDEyMDA5MiwgODMxMzAsIDEzMjQwLCAxOTUwNjgsIDUxOTIsIDQzMzgsIDY3OTgyLCAKLSAgICAxMDk0OCwgNjY4MjUsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgMTMxODgsIDkzOTkzLCAKLSAgICA3MTg0NywgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIAotICAgIDYzNzgwLCA2Mzc3OSwgMTU4MywgMTE5OTIzLCAxMzI2MCwgNDU1MCwgMTIwNTk4LCA2NDIwNSwgMTI5MTA3LCA3MTA3MSwgCi0gICAgNDE1MjIsIDQxNTIzLCA2ODUyMywgOTgzNzcyLCAxMTg5MjMsIDExMzU0LCA5NDA3MSwgMCwgNDI3OTUsIDAsIDExOTE5NSwgCi0gICAgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIDQ0NzksIDExNzgsIDY1NTg2LCAKLSAgICA2ODMxMSwgNjY2ODEsIDExOTE5MywgNDYwMSwgMCwgMTI3ODg1LCA5ODM3NjUsIDY2ODI4LCAxMjg5NzIsIDEyNzgzOSwgCi0gICAgNzQ1ODAsIDY4MDksIDYzNzg2LCA2MDMxLCA2NzQwMiwgNjM3OTEsIDYzNzkwLCAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIAotICAgIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAwLCA2NDcxMCwgMTA3NDcsIDEyNSwgCi0gICAgMTIwODAzLCA2NDg5MCwgOTgzMDY0LCAxMjczNzYsIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgMTA3NCwgMTMyNTgsIDk1MzYsIAotICAgIDcxMDU2LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIDQzMTQ1LCAxMjIxNywgNjM3NTQsIDQxNTMyLCAxMzQ5LCA2Mzc1MCwgCi0gICAgNjM3NDksIDEyOTAyNSwgMCwgMTI3OTI4LCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgCi0gICAgNjM4MDUsIDYzODA0LCAxMTE0MCwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgNjI2MCwgMCwgMTI4MzkxLCA5NDA3NCwgCi0gICAgNjM3OTMsIDExOTg4LCAzODk4LCA5MjI0NiwgMTAyMDEsIDEyMjM4LCA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgCi0gICAgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCA5ODMzMzEsIDQyMjAzLCA3OTUwLCAzMTI0LCAKLSAgICA2Mzc3MSwgNDI3ODcsIDQzODYsIDExMTQ4LCA2OTczLCAyNzkzLCAxMjQ3NSwgMTI5MTgwLCA3NTA1NiwgNjM3NjksIDk1MzAsIAotICAgIDEyMTI0OCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMTEzNjc0LCA2NDgwMywgCi0gICAgMCwgODc0MiwgMTk1MDI5LCAxMTA1MywgMTI4Nzk2LCA2Mzc0NCwgMTI4MTA3LCAxMjg5NDIsIDc1ODgsIDYzNzQ4LCAxNjkzLCAKLSAgICA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCA0MjA2MywgMTA5MCwgNjg4MDMsIDEyMDc3OCwgMTE2NjUsIDc0MTMzLCAKLSAgICA0NTU4LCA2NTY4NSwgOTUyMywgOTgzNDUzLCA2Mzg1NywgNzEyMTYsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIAotICAgIDYzNzczLCAxMzE5MSwgMTIxNzAsIDM1MDAsIDMxMzksIDY4MDcxLCAzMTcwLCAxMjQ4NSwgNDM4OTEsIDEwODcyLCA0Mzg5MiwgCi0gICAgMTMwMDYsIDQzOTMzLCAxMjAwNzQsIDAsIDk0MSwgMCwgMTI5MDc5LCAxMjA5NjcsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgCi0gICAgMCwgNDIwNjUsIDEyODM2OCwgNDM4ODksIDk0MDM5LCAxMjkyOTksIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgNzAyOTUsIAotICAgIDExOTg2MywgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCA4MzQwOSwgMCwgMCwgMTAwMjUsIDY5OTE1LCAyOTE4LCA2NjgyMCwgCi0gICAgNjUzMDAsIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCA5ODM2MjAsIDEyNzgyOSwgNjUzOTMsIAotICAgIDEyMDU5MiwgNzQxMzgsIDgzNTA1LCA5Mjc1MSwgNzUwMTksIDc0MTM5LCA3ODc3NywgNjUzOTQsIDExNTQ4LCA1MjcwLCAKLSAgICA5ODMyMzgsIDY1Mzk2LCA3NDk5OCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDc1MDEyLCAwLCAxMDg4OCwgCi0gICAgMTIwOTM0LCA2NTI0MiwgMCwgMzMzMCwgMCwgMCwgNjgzNDAsIDAsIDAsIDcxMjAyLCAzMzA0LCA0Mjc1MywgOTI1ODgsIAotICAgIDcwMjk4LCA3NDY0MywgMTYyNywgMCwgMTI3NzY1LCAxOTQ3MzUsIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIDAsIAotICAgIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCA2ODMxNywgOTAzNSwgMTExNDEsIDkxNzk3NywgMTI4MDA1LCAwLCA5MjIwNywgCi0gICAgNjgxMjUsIDc0ODk4LCAxNjQsIDY4MzA5LCA5NDA2NywgOTQwMDAsIDY5NTgsIDAsIDQzMTE2LCA2NzcxOSwgNzAwMTksIAotICAgIDEzMjQ1LCAwLCA2ODgwOCwgNjY4MTgsIDAsIDcwMDMxLCAxMTA5OSwgMTI2NjYsIDEzMTc1LCAxMzIwNywgMTIwNDE0LCAKLSAgICA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCAwLCA2NTUwOSwgMTI5MTkyLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIAotICAgIDEyNTEwMiwgNjM4MDgsIDkwNTQsIDk3MSwgMTMwNjIsIDcxMDkwLCAwLCA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgCi0gICAgOTgzMzIxLCA3ODE0NiwgOTI2MTEsIDAsIDcwMjA0LCAwLCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAyMzAzLCAxMTA1NywgCi0gICAgOTE3OTc2LCAxMzI3NiwgMTI1MTMzLCA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAxMjY0NzksIDEyNzkwNCwgMTIxMjAzLCAKLSAgICAxMjIyOSwgMTE2ODAsIDkyOTU2LCA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAxOTUwODksIDAsIDEwNDc2LCAzODU4LCAKLSAgICA2NDE3NSwgMzkzMiwgNjQ5NTgsIDEyMDQzMiwgOTgzNjc4LCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAzNjksIDc0OTA4LCAKLSAgICA0MTc4NCwgMTE5MTc1LCA2NDE2MywgNzc5OTcsIDAsIDkyNjQ1LCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIAotICAgIDEyODYzMSwgNDE3ODEsIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDkyNjA4LCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCAKLSAgICA1Nzg4LCA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAxOTQ5MTMsIDc0NiwgCi0gICAgMTE4ODI2LCA3NDc4MywgMCwgMTIwMTgsIDY1Mjk0LCAxMjc1NDUsIDE5NDkyNSwgNjg4MzUsIDk4MzQ4OCwgNDQyMiwgCi0gICAgNDcwOCwgMzc5OSwgNzQyOTIsIDExOTM1NywgMTIxMTQ2LCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDEyMDM3NywgMTIxMTUxLCAKLSAgICAxMzY0LCAwLCA4MDM4LCAxMjA4ODMsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCA3MDQyNSwgNjczNSwgNzM5NzksIDEzMTc0LCAKKyAgICAxOTQ5OTgsIDEwMDkyOSwgMTA2NzMsIDY4Nzc5LCA3MjQ4LCA2ODc4NiwgNDM1MTUsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAKKyAgICAxNjQ5LCA2Nzg3NiwgOTY0LCAxMDA2OTYsIDY2NDAzLCA3ODIyNiwgNjYzOTMsIDkyODk3LCA3MDM1NSwgNjY0MDksIAorICAgIDk4MzQ4NCwgODMzOTgsIDQzNjg5LCAxMDA3MDEsIDEzMTQyLCA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCA2OTkwOSwgCisgICAgNDM1NDcsIDgzMDI4LCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDEyNzU0NSwgNjk3NTksIAorICAgIDExMzQxLCA0MjQ5NCwgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA3MDgxMCwgNjQ3OCwgOTg5OCwgCisgICAgNDEwMzksIDY1MjM3LCA2MjQxLCA3MTA2LCA0ODc3LCAxMDA2ODEsIDYyMzgsIDEwMDY4MywgMTA1NDgsIDEwMDY4NSwgCisgICAgNDQwOSwgMTAwNjg3LCAxMDA2OTAsIDY0Nzk4LCA3MDgwNSwgNTM0NiwgMTI4MjQwLCA5NDA0NywgNjIzNywgNDg3NCwgCisgICAgNjY4NTEsIDkxNzYsIDkyODgyLCAxMjExNTMsIDY1MjMxLCA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCAKKyAgICA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDExMjAzLCA5ODMxNTksIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCAKKyAgICA1MzQyLCA4MzE3LCAxMjE0NDYsIDY4MTYzLCA1MzQwLCAxMjA1NTksIDEyNTIwNiwgNDM2MzUsIDczOTI4LCAxMjUwMDEsIAorICAgIDcxMDY5LCA4MzMxOCwgMCwgODMzMTcsIDY1NDgyLCAxMjEzOTQsIDkxNDIsIDk4MzE3NywgNjg1MDYsIDE5NTA4NCwgCisgICAgMTA5MzgsIDAsIDExODc5MCwgMTE4MiwgMjU0MiwgNDgyNiwgMCwgMTI2NjQ4LCA3MjQzOCwgNTI5LCA4NTgwLCA2Njc2OSwgCisgICAgMTI1MDU4LCAxMDU4NiwgMTA3OTAsIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCA2ODc0NCwgMTIwNjIwLCA0MTU5NCwgCisgICAgMjI1LCA0MjgyOCwgOTgzNjMyLCA2NzgyMSwgMTIxMjAwLCAxMTM3NiwgNzI3MjksIDEwNzIxLCA2NzY2NCwgMzQzOCwgCisgICAgNDIwOTcsIDY4ODYyLCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgNzgzMDUsIDEyMDE4MywgNDE4NzMsIDcxMjcxLCAKKyAgICAxMTMyNCwgMTIwNTMxLCA5ODM5NzYsIDg0MjAsIDY0OTE4LCAxMjg4MzksIDQxODcxLCA0MTMzOCwgMzczNCwgNzczNCwgCisgICAgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMDA2NzIsIDEwMDY3NSwgNTE2MSwgMTA1NzIsIAorICAgIDEwMDY3NiwgNDI5MDYsIDEwMDY3OCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMDA2NjAsIDk4MzYxMywgMTI2NjA1LCAxMTE2NywgCisgICAgNjkyMjAsIDEyMzU5LCA0MzQyOSwgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMTk0Njk1LCA2ODYzNSwgCisgICAgMTAwMzEsIDExMzc2NiwgOTg3MCwgNjc3MjYsIDg2MjAsIDY1ODI0LCAxMDA2NTEsIDExOTM4LCAxMDA2NTMsIDcyODUsIAorICAgIDEwMDY1NSwgMTAwNjU0LCA0MjY3OCwgNjY4NDIsIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCA3MDY5MywgCisgICAgMTI4MTMxLCAxMjgyNjcsIDc4MTY5LCA2NjE5OSwgMTAwNjY0LCAzNjA5LCA2ODYyNCwgNzAyODAsIDgzMiwgMTAwNjY3LCAKKyAgICAxMjA3NzAsIDc4NDczLCA2NjAwNywgNzg0NzEsIDY1NzAzLCA3MTI1NiwgMTI4NTE3LCA0MjczMiwgNTE4MCwgOTI2OTksIAorICAgIDQxMzk1LCA0MTUzMCwgMTE2OTEsIDY0NzczLCA5MjIxNCwgNzQwMDIsIDEyNzc5MCwgMTIwNTQ4LCAxMjg0NzgsIDYzNDgsIAorICAgIDI0MywgMTMyMDAsIDEyMDE2MCwgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAKKyAgICAxMjA4ODAsIDkxNzg0NCwgNDI4NSwgNjYxOTUsIDEyMTM3MCwgNDIzMCwgOTI4ODYsIDczNjcsIDQzMjU2LCA5MjM1MywgCisgICAgNzU2MywgNDIzNzYsIDk4MzI3MSwgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAxMjg1NzgsIDAsIDc0ODU2LCA2NTg5MywgCisgICAgMTIyMDgsIDk5NzMsIDEyODM4NiwgNjYzMTEsIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDEyNTIwNSwgNzAxNTUsIDc4NjIyLCAKKyAgICA3MDA0NywgMTI3MjczLCA2MDIyLCAxMDA0ODUsIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgMTk1MDIwLCAxMjY4MiwgMTAxNiwgCisgICAgNDExMDcsIDAsIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgNzA4NTUsIDIwNzQsIDExMzc0MiwgCisgICAgNzgyODMsIDEyODczNywgMTI0NTMsIDcwODQ3LCA5ODM4MjYsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCA3ODI2OCwgCisgICAgMCwgNjYyNzgsIDk4MzYzMywgNzgyNzksIDAsIDEyNzkzMiwgOTIzNTgsIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgCisgICAgNzgyNzcsIDEyNDQ5LCAxMjI5MDgsIDcxMjI0LCA0Mzg2OCwgODc1MiwgMzE5NywgNDcyMCwgMTAxNjUsIDExMzc2NSwgCisgICAgMTE5MjQ5LCAxMTM3MTUsIDExNTk1LCA2NDg5MywgMTE4OTA1LCA0MzQzNSwgODMzMDksIDEyMTQxNCwgNDk5MywgMTI5MzYwLCAKKyAgICA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAxMjA2NTAsIDU0OTQsIDQ2MzksIDcwNjY4LCAxOTkwLCAxMTEwNywgNDQ5OCwgCisgICAgNzQxNjksIDY3NzM2LCA3MDY1OCwgMTI3MjcyLCA2OTczNCwgMjk2MCwgNzM3NzksIDE5NTA3NiwgODk2OSwgMTI4MTE3LCAKKyAgICA0MzQyNCwgNzM5NTksIDEyNjQ2NCwgMjk1MCwgMTE5NTc5LCA2MjEwLCA2NTc1MywgMzcwLCAxMjEzNjAsIDk4MzY1NCwgCisgICAgMTIwOTI4LCA0OTUzLCAxOTUwMDksIDEyMTA1NCwgMTEzNzA4LCAxMjI4ODgsIDY5MjMwLCAwLCAxMjI5MDAsIDY1Njg4LCAKKyAgICA3NDk1MSwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIAorICAgIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCA3MTMxNywgNjQ5MjMsIDY2NzQ0LCA0MzY2OSwgOTAzMiwgNzgyNjMsIAorICAgIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDk4Mzg3MywgOTE3Nzc0LCA3NDkxNCwgMzc2MSwgMCwgMCwgNzAwNjgsIAorICAgIDEyMDQwOCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgMTI4MTkxLCAxMjcyODIsIDEyODM4OSwgMCwgOTgzMzQyLCA5MDgsIDAsIAorICAgIDg2MTEsIDEwMTA3NCwgOTgzNjk5LCA3NDY0MiwgNDM2OTEsIDQxMTk3LCAxMjg4MTIsIDg5NzgsIDEyMDU0MCwgMTE5MTM1LCAKKyAgICA0MTU4NiwgMTA1MjcsIDcwNDI2LCA5MTc4NDgsIDM4NDgsIDc4NzM5LCA3NDkxNywgMTI3NTM2LCA2NTI0MSwgNTMzNiwgCisgICAgNzQ4ODMsIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMTI4Mzk1LCAwLCA3ODc2NywgMTE5NjI2LCAxMDA5MjIsIDY4MTkzLCAKKyAgICAzNDcsIDAsIDkxNzU0NCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzI3OTIsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDY4MDQ2LCAKKyAgICAxMjE0MywgNjk2NTcsIDc4NTEyLCAxMjg0OTMsIDExMTUzLCA0MTgwNCwgNzg1MjMsIDExOTE2OCwgNzg1MjUsIDAsIAorICAgIDEyODg1OSwgNDE1ODQsIDEwNjgxLCAwLCAxMjAwOTQsIDczOTM4LCA3Mzc4MSwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgCisgICAgMTI1MDM4LCA2NjMwNiwgNjQ3MTUsIDY2Mzg0LCA5NTE4LCA2NjA5LCAxMDQzNCwgNzA4NDUsIDExMzE5LCAxMDk3LCAKKyAgICAxMjg5NjQsIDkxNzU2NCwgNDE3MzAsIDEyOTE4MSwgOTI1MTIsIDczODQ3LCA3NDg0NSwgNjUxNzIsIDQxNzI4LCA0MTcyMSwgCisgICAgMTk0NzgwLCAxOTQ3NjksIDEyMTQ5OSwgNDEyMDMsIDEyNzA1NiwgMTMxMTAsIDQxNzI2LCAxMjkwNzIsIDY3MDc3LCAxMDAwLCAKKyAgICA2OTY1MSwgODM1MjAsIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMTI1MDU5LCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIAorICAgIDQxMTM4LCA5ODM5NjgsIDY4MjEzLCA3ODAwMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMTk5MDQsIDY3NjcxLCAKKyAgICA1NTI0OCwgMTIyMzcsIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgCisgICAgNzkyNiwgMCwgOTE3NjAxLCAxMjg4MzMsIDY0Mzk4LCA3MTEyNCwgNzEyNzQsIDEyMzExLCAxMTkxODEsIDc4Nzk2LCAKKyAgICA2ODc2OCwgNzg3OTQsIDc4Nzk1LCA2ODQzNCwgNzg3OTMsIDY2NjcwLCAxMTM3OTcsIDEyODU3OSwgMTIyOTAsIDEyMDE2OSwgCisgICAgMTI4MjMzLCAxMTk4NzMsIDM5MzcsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDExMzY5NCwgOTYyNywgNDM2NDYsIDc4NTQyLCAKKyAgICA3ODUzNSwgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAKKyAgICAxMTMwOCwgMTE5OTk1LCA5ODM0OTMsIDExMzcwMiwgNjY4MzYsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgCisgICAgNzA3NSwgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgCisgICAgMTIwMDE0LCAxMjAwMTUsIDYwNDEsIDEyMDUyMCwgNDE4OTksIDk4MzI4NywgODAwMiwgMTI4MzY3LCA0MzY0LCA3MzczMiwgCisgICAgOTgzNTcwLCA2NDMzMiwgMTIwOTc2LCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCAKKyAgICA2ODI0NiwgNzI3OSwgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMTAxMDgwLCAxMjEzODEsIDk2NjAsIDkxNzkyOSwgCisgICAgMTMwMTIsIDQ1NzEsIDEyODMzMSwgMCwgMTE4OTQwLCAxMjA3OCwgMjk3MCwgMTI5MTIyLCAxMDkzMywgMCwgNzc4NzAsIAorICAgIDEyMTI0MywgNzc4NDEsIDEwMDM1OCwgNDE1OTksIDcwMTU5LCAxMjEzNDIsIDEwMDcwNiwgMTI5NTAsIDkyMTYwLCAzNDg2LCAKKyAgICA5ODM5NzMsIDY2NzgyLCA0MjM5LCAxMjgwNzMsIDEyNjU5MiwgNjY1MTEsIDY4MDY2LCAyNjM3LCA2NDYyOSwgODQ2MCwgCisgICAgNjY4MzQsIDg0NzYsIDk4Mzk3NSwgOTE3OTg5LCA2ODMxMiwgNzg0ODksIDY1NjczLCAxMDE5LCA3ODQ5NSwgNDE0OCwgMCwgCisgICAgMTIyODksIDAsIDQzMTYsIDAsIDEzMTE5LCA4NDg4LCA1NDEyLCA2NjI0MywgOTkzNSwgOTI3NzcsIDczODY0LCA5ODMyMDMsIAorICAgIDQxNzM0LCA4MjA2LCA3NDA4MSwgOTE2MywgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIDQxNzM2LCAKKyAgICA5MjU0NiwgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgMTI3Mjg0LCAKKyAgICA2Njg1MywgNzM5NjMsIDQxODU1LCA0MTg2NywgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgCisgICAgNzExNSwgNjYwMzAsIDczOTMyLCA1NDk4LCA2Mzg3NiwgNDE1MzYsIDkxNzU4NywgNjY3MzgsIDkyNTg3LCAzNDU5LCA4OTk3LCAKKyAgICAxOTQ3MTksIDkyNzE0LCAxMjcyMzgsIDEzMDYwLCA3ODMwMSwgMCwgNjYzNzcsIDY5NzgxLCAxMjAxNTksIDEyNDk3MiwgCisgICAgNzg1MTEsIDMxNjEsIDI5NSwgNzEyNTcsIDAsIDkyMjIzLCAxMjEzMjgsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIAorICAgIDYzOTAyLCA0MzUwMSwgNjgyMTAsIDM5NzEsIDk4Mzk1OSwgNzAwNjMsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIAorICAgIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDY4MDk1LCA2NjcsIDEyMzMyLCA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIAorICAgIDk4MzI4MCwgNDE1OSwgOTgzNTYyLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgNjM4NzgsIAorICAgIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMTIwOTQxLCA0MjQyMSwgMTI5MzM1LCA0MTcyMywgCisgICAgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgNDE5MTMsIDYzODUyLCA2Njg2OSwgMTI4OTcxLCA0MjM0OCwgCisgICAgNzM4OTIsIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwMSwgNjM4NTEsIDYzODUwLCA0MTkxMCwgMTI4NjM3LCA2Mzg0NiwgCisgICAgMjk3MiwgMTI5MzIsIDcyNjIsIDY5OTY4LCA2Mzg0OSwgNDEzODQsIDYzODQ3LCAxMTM3NDksIDY1NzAsIDgzMDIsIDcyNTksIAorICAgIDYzODQyLCA0MTc4LCAxMDc0NiwgNzI1MCwgMTMyMTQsIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMTI3NzgwLCA2OTk2OSwgMTEwNSwgCisgICAgNDE4MCwgMTI3Nzg2LCAxMjA5NCwgOTQ5NywgMTI4Mzk2LCA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgCisgICAgOTk4NywgMCwgOTI3MzksIDE2NzgsIDEzMjc0LCA1NTIsIDExODgzNCwgNDQwMTAsIDEwNzg1LCAwLCAxMTE5MiwgNDU1NywgCisgICAgNzQ0NTksIDkxNTksIDEwMTcxLCAxMzEyNSwgNjM4NjAsIDU1NDAsIDYzODU4LCA2Mzg2NSwgMjgxLCAxMzI0MiwgNjM4NjIsIAorICAgIDc0MTU0LCAxMjgzODcsIDU1MzYsIDY1NTY4LCA5NTc0LCAxMzg4LCA3MTkwMiwgOTgzOTE1LCAxMDc3LCAxOTUwMDAsIAorICAgIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgOTE3NTQ5LCA5MTc3ODksIDAsIDQyNzczLCAxMjEzMzEsIDAsIDAsIDExOTIyMCwgCisgICAgMTIwOTEyLCAzNjYzLCAxMjcwMjcsIDExMTIsIDcwMzM1LCA4Njg2LCAxMjY2MTEsIDUzMzQsIDY1MDgxLCA0MzI0OSwgCisgICAgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDkyNTE1LCA2NTA5LCAxMjAxMTcsIDUzMjcsIDc4Nzc2LCAxOTkwNywgNjM4NjksIAorICAgIDM0NzgsIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgNjM4NjYsIDc4NjI2LCAKKyAgICAxOTE1LCA0ODQ2LCA2Nzc1NSwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCA2OTIzOCwgNjQ0MzgsIAorICAgIDEyMDcwLCA4NzYwLCAxMTE3LCAxMTM3NTAsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgNjM4MzUsIDYzODM0LCAKKyAgICA5ODM1OTIsIDc4MjQwLCAxMjIyNSwgNjM4MzgsIDYzODM3LCAxMDA0NTgsIDcwMTczLCA2MzgzMywgNjA0MiwgNjYzNjAsIAorICAgIDgwODMsIDEyODE2NiwgOTgzNzMzLCA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzMzMyLCA1MjI3LCA5MDQ3LCAKKyAgICA2MzgyMiwgNzQ3OTcsIDYwOTEsIDk4MzMyMiwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgNjM4MTEsIAorICAgIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgNzg4NzYsIDc4MCwgMjA2LCAKKyAgICA3MDEyNiwgNDkzNiwgNjUxNDcsIDgxNjgsIDYzOTMwLCAyMDc2LCAxMDkzLCA5ODgyLCA2MzkzNCwgMjA4MiwgNjM5MzIsIAorICAgIDc1MDUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgNjY4MTEsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIDIwODYsIAorICAgIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCA3Mjc5MSwgNDYxOCwgNDIyMDksIDExMTM3LCAxMzE2OSwgNTI5MCwgMjA4OSwgCisgICAgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIDcyODMsIAorICAgIDEyMDEwOSwgNjM5NzAsIDEyMTE2NSwgMTA5MiwgNDc1NCwgNzI3MywgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIAorICAgIDEyODkyMCwgNzQwOCwgMTE4MDksIDgzMjIwLCAxMjExODEsIDE5NDcxNiwgMjk2NSwgNzI1OCwgODgwOCwgNjY1NzIsIAorICAgIDEwODksIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDExMTA2LCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgOTgzODQ5LCAKKyAgICA3NDQ5NCwgMTI0NjMsIDI5OTQsIDEyNTEzNiwgMTE4ODI3LCA2ODUyMiwgOTY2NCwgNzA4MzQsIDc3OTQwLCA2Nzg5MiwgCisgICAgNzc5MzgsIDc0MzQzLCA2NzM3MCwgNzI3MTQsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIAorICAgIDEyNTgwLCA3ODUwNywgNjExOCwgMjIyLCA5NzksIDM4ODQsIDk4MzMxOSwgNzI3MDYsIDgzMjI3LCA2NTAyLCA5ODM3NjIsIAorICAgIDExMDg1LCAxMjEyNjEsIDYzOTUxLCAxMjQ2NSwgOTE3ODYyLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgCisgICAgMTI0NjEsIDYzOTUwLCA2Mzg5NywgNjM5NDgsIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgCisgICAgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCA5NDA3NiwgMTIxMDg2LCA5MjQ2NCwgNjY3OTIsIDY5NzMwLCA4MDEsIDQzMTY1LCAKKyAgICAxNjkwLCA2MzkxOSwgNjM5MTgsIDYzOTE3LCAxMzI3NywgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIDIwNTQsIDIzMzQsIAorICAgIDY2ODAwLCA2MzkxNiwgNTQ4MywgNjM5MTQsIDY5NzM3LCA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAyNTM5LCAKKyAgICAxMjAxMDIsIDQzOTgwLCA1NDg1LCAxOTQ4NzMsIDQyNjk3LCA5MDYxLCA1NTM0LCAxMDY3MiwgNDUwMiwgNjgwNTcsIDI1MywgCisgICAgMCwgNjgyMDgsIDEyMDQzOSwgOTIwMywgNzQyMzEsIDEwMDcwOCwgMTE1MzAsIDY4NjM0LCA2ODY2OCwgMTIxMjQyLCAKKyAgICAxMTEyNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgNDIzNTQsIDEyODA5OSwgMTIwMTA2LCA3MDA0NCwgMTI3MTEwLCAKKyAgICA2NjgwOCwgODQxMywgNjY4NDEsIDAsIDU2OTMsIDcyNzIsIDEyOTMwNywgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIAorICAgIDE5NTA2MywgMCwgMCwgMCwgMTEzNjY1LCAxMjAwOTcsIDEyNzk2MCwgOTQwNzgsIDY2ODQwLCAxMjcxNjUsIDY2NjA4LCAKKyAgICAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDc4MzQ3LCA3MjcwLCAwLCA2NjYwNiwgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgCisgICAgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIDYzOTA2LCAxNTk4LCA2MzkwNCwgCisgICAgNzExODcsIDcwMzkzLCA0MTcyOSwgNDQyMywgMTMwNywgMTEzNjkyLCAxMDUxNSwgNDE1ODksIDEyODY5OCwgMTI4OTE4LCAKKyAgICA2MjE4LCA5MjkxNywgMTQzMCwgMCwgMTAwNzAwLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCA3NjE5LCAzMjU1LCAzNDkzLCAKKyAgICA3NDAzMiwgMTE1NDksIDEwNzM1LCA0MTc0MywgNzM5MzcsIDY4MDEsIDEwMDc0MywgNDUxOCwgMTA5OTAsIDY1MDczLCAKKyAgICA1MTY3LCA0NDgxLCAzNzcxLCA2NzA5MywgMjcxMCwgOTE3ODQ3LCA2NjI3NywgNDE3MjQsIDY3NzE2LCA0MzA3MywgNDE2OTAsIAorICAgIDEyNDc5LCA5ODM2MzUsIDgzODAsIDEyMTA3MSwgNzE4NTIsIDcwMDQ2LCAxNjI4LCAxMjEyMjksIDEyODgxNywgMTI5MDY3LCAKKyAgICA2NTI2MiwgNjMzMywgMTA3ODMsIDExMTcyLCAxMjE0NzMsIDYzODU1LCA3MDg0MCwgMTEzNjc5LCAwLCA1MzM5LCA3NDMyMywgCisgICAgMTIwOTQ2LCAxMzAwNCwgNjY4NDMsIDQ0NTcsIDEwMDkwMSwgMTI3NzU2LCAxOTQ4MTgsIDEyNzExNiwgNTY4NCwgODY3OCwgCisgICAgMTA5MTQsIDQzNjMyLCA1Njg5LCA2NTgwNywgNzA4MTQsIDY4NDY0LCAxMjYzMywgMTI4NzAsIDY5NzA1LCA2NTE4MywgCisgICAgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDExOTA3NiwgNzQyNTEsIDEyODkwOCwgMTIwNjQ3LCAxMjg5MzAsIDUwLCAKKyAgICAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCA3NDQwMywgOTgzODE4LCA3NDI4NCwgNjY0NjgsIDY2OTA1LCAxMzI1OSwgCisgICAgNDQ0OCwgMTE5MTUwLCAxMjE0MDYsIDgzMzQ5LCA3MDA0MywgMTMyMSwgMTAwOTg3LCAxMDY0MCwgMTE1MzksIDExNTEsIAorICAgIDEyMTE4NiwgOTE3NjA3LCAxMjQ5NTgsIDEyNzA3OSwgNzExMDYsIDExODk0OSwgMCwgOTgzOTIwLCA5ODMwNzUsIDEyNTAxLCAKKyAgICA2NDYwNCwgMTI4NjU3LCAxMTUyNywgMTE4ODcwLCA4ODEyLCAxMjUxNDEsIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIAorICAgIDY2NDY3LCAyMTA1LCA4MDg3LCA3MjcxMiwgNjk2MzIsIDk4OTQsIDEyNzEzNywgMTI3ODU2LCA2OTk5NSwgNDYzNiwgCisgICAgNTUyNjIsIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDk4MzY5NSwgMTEzNzgwLCA5ODM0NTYsIDExODk2OCwgCisgICAgMTIyNzcsIDEyMTIzOSwgMTE5OTUsIDkyNTUzLCAxMjA2NzUsIDEyMTU4LCA3MDE3MCwgODc0MSwgMTAxOTcsIDY4NzgwLCAKKyAgICA5MjQyNiwgMTE5NjEwLCA2NTMxLCA4MzA1MSwgMTI3ODQ2LCA0NzMsIDQzNDE1LCA5MjkzNiwgMTI0OTQ5LCAxODczLCAKKyAgICAxMDg3LCAxMjQ5NjYsIDcxMjc1LCA3NDI4MCwgNzg1MjcsIDY2NDM5LCA0MzIxOCwgOTgzMTIzLCAxMjc3OTIsIDcyMzcsIAorICAgIDEyNTA0LCA3MTExMywgMTI2NTU5LCAxMjg3NDgsIDEyMDg4NywgOTQ4OSwgMTIwMDY5LCA3MDg0MywgNDM4NCwgNzQyMjAsIAorICAgIDYzODQ1LCAyMDU4LCA2OTc0MSwgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDEyODU3MSwgMTE1NCwgMzg1NywgMTIwNSwgCisgICAgMTI4OTU1LCAwLCA2MDU1LCAxMjk1OCwgMTIwNzA2LCA3NDE2OCwgMTI4Mzg4LCA3MDg0NiwgNDQyMSwgMTA1OTIsIDAsIAorICAgIDQ5NSwgNjY0MDAsIDQxNzEyLCA3OTgzLCA3MDgzMywgOTM5OTcsIDcwNjk2LCA2MzQ3LCA3ODcxNSwgNzY1NCwgNDE3MTAsIAorICAgIDQxOTYsIDE5NDcwNCwgNDM3LCA0MTcwOSwgNzM3NzIsIDcwODMyLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCAKKyAgICA2NDMwNiwgMTIxMzA5LCAwLCA0OTk5LCAxOTQ2NDIsIDY3NDAxLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMTAwNDY5LCAKKyAgICAyNzM5LCAwLCA4MDQ0LCA3NDMxMywgMTI4MjMwLCA0MTc4OSwgMTI4MTQyLCAxMDgwOSwgNjYyNzksIDEyODc0MCwgMCwgCisgICAgMTc3OSwgNjYwMCwgNjYwMSwgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIDEzMDU4LCAxMjA0NDksIDEyODc1LCA5ODM4MDQsIAorICAgIDkyMTg2LCAxMzIyOSwgNzE4NDUsIDEwNTc1LCA0MzM5OSwgMTAwNDY3LCAwLCA0MTc5MSwgMTEwNCwgMTI3OTIyLCAKKyAgICA5ODM3MjUsIDEwNjU1LCA5ODMzMzQsIDk4MzU2MSwgMTIwMTY0LCA2Mzk2MCwgMTA4MiwgMTIxMDI0LCA4NDI4LCA2NTY5LCAKKyAgICAxMjg0MjksIDAsIDc4NTM0LCA2OTg0OSwgNjc4MywgMTk0NjcxLCAxMjk5MywgODA0OSwgNDE1NDgsIDQ0MDIxLCA2NDU4LCAKKyAgICA2NDcyOCwgMTI4ODgyLCA0NzYxLCA2MzgyOCwgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAxMjA2NzcsIDExODg3NiwgCisgICAgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgMTI4NjI3LCA0MTU0NSwgMTI2NDY1LCA5MjQ0OSwgMTI1MjA5LCAKKyAgICAxMTIxNiwgMTIxMzA3LCAxOTQ4NTEsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgOTgzMjI1LCA4NTAzLCA1MTIyLCA0MTUyNywgCisgICAgNzE5MTAsIDY2MzIwLCA3MDE2MSwgNzQ5MDcsIDE5NDg1NiwgMCwgNDE1MzcsIDY2NDUzLCA4MzAzLCA4MjgyLCAxMTgxNywgCisgICAgNzM4NTcsIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDEyMjkyMCwgNzAxMTUsIDExNDY3LCAzNjY0LCAKKyAgICA2NTkyMSwgNjQyOTksIDEyNDkzOSwgMTI4NDYyLCAxMjgwMDEsIDQzMjQsIDEyNiwgNDIyNDYsIDc1MDMwLCA2OTk4NCwgCisgICAgNjc3MjUsIDY1OTI2LCA3NzQ0LCA2ODg1OSwgNzQyNzcsIDY2MjgzLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAKKyAgICAwLCA2NTYwMCwgMTYzMywgMTI4MzAxLCAxMjY2MTQsIDQ3NjIsIDExMDMsIDcwODI3LCA3MDE1NywgNDc2NSwgOTgzNDk0LCAKKyAgICAxMzA3OCwgOTgzMjcwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAxOTQ2NTIsIDY1NTUsIAorICAgIDEyODg2NywgMTI3MDcyLCAxMTU0NiwgNzQ3OTQsIDMzNywgMTIxMTk2LCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIAorICAgIDk4Mzg1NiwgNzUwNDcsIDQ3MDcsIDY4MjA2LCAxMDE0MywgNzg4MywgMTIxNDQ0LCA3ODgwLCA0NTIyLCA4NjQ1LCA1NzA0LCAKKyAgICAxMzAxMCwgNjk3OTYsIDgzMDQsIDkyOTgyLCAxOTQ2ODgsIDExOTU3NSwgMjI5MywgNzAxOTUsIDY2NjU0LCAxMjkwNzcsIAorICAgIDkyNjc2LCAwLCAxMzAwOCwgMTIxMTk0LCA0Mzg1LCAxMDA0NjIsIDEzMDExLCAxMjUwMDQsIDkyNTY5LCAxMTkxNjEsIAorICAgIDEzMDA5LCAxNjAsIDI2NzcsIDcwMzg4LCAxMjc3ODUsIDQxNzkzLCA2NTc2MywgNzQyMjEsIDcwNzkwLCA0MTc5MiwgCisgICAgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgNTcwOSwgMTI1MjIyLCA3MTA3NiwgNDM4MTYsIDk4MzA4NywgCisgICAgMTk1MDA1LCAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIDQwMDUsIAorICAgIDEyMTA5MSwgMTAyMzcsIDEwOTkxLCAxMjg4MTYsIDQzNDU5LCA5MTczLCAxMjExNTIsIDEyMTIxOSwgMTMxNzAsIDEyNTQwLCAKKyAgICAxMjUyMzMsIDQyNjA1LCAxMjA3NjUsIDEyNjYxNywgNjg2NDcsIDkxNzU3MiwgMTAwNTgsIDY4MDU4LCA3NDg2NywgNjc3MzAsIAorICAgIDEyNzA3OCwgMzMzOSwgMTE0NDgsIDExMDYsIDkxNzU5MSwgOTE3NTQwLCAxMjgzMTEsIDMzNDAsIDc0MDE3LCA5MTc1ODYsIAorICAgIDEyMDk5NCwgMTI5MTQxLCA5Mjk3OSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgCisgICAgODY0LCA5MTc1ODIsIDExODkyNiwgODk3MiwgMTAwNDQ0LCA3ODQ5LCAxMjAwOTIsIDgzMTMwLCAxMzI0MCwgMTk1MDY4LCAKKyAgICA1MTkyLCA0MzM4LCA2Nzk4MiwgMTA5NDgsIDY2ODI1LCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIAorICAgIDEzMTg4LCA5Mzk5MywgNzE4NDcsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgCisgICAgNjM3ODIsIDYzNzgxLCA2Mzc4MCwgNjM3NzksIDE1ODMsIDExOTkyMywgMTMyNjAsIDQ1NTAsIDEyMDU5OCwgNjQyMDUsIAorICAgIDEyOTEwNywgNzEwNzEsIDQxNTIyLCA0MTUyMywgNjg1MjMsIDEyOTEwOCwgNjY3NTksIDExMzU0LCA5NDA3MSwgMCwgCisgICAgNDI3OTUsIDEyODA2MSwgMTE5MTk1LCAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgMTMyNzIsIDEzMTk0LCAxMzM0LCA2OTkyNiwgCisgICAgNDQ3OSwgMTE3OCwgNjU1ODYsIDY4MzExLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAxMjc4ODUsIDE5NTAzOCwgNjY4MjgsIAorICAgIDEyODk3MiwgMTI3ODM5LCA3NDU4MCwgNjgwOSwgNjM3ODYsIDYwMzEsIDY3NDAyLCA2Mzc5MSwgNjM3OTAsIDExNDUsIAorICAgIDYzNzg4LCA3OTEwLCA2Mzc4NSwgNDMxNTMsIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIDEyNTEyMiwgCisgICAgNjQ3MTAsIDEwNzQ3LCAxMjUsIDEyMDgwMywgNjQ4OTAsIDY2ODA1LCAxMjczNzYsIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgCisgICAgMTA3NCwgMTMyNTgsIDk1MzYsIDcxMDU2LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIDQzMTQ1LCAxMjIxNywgNjM3NTQsIAorICAgIDQxNTMyLCAxMzQ5LCA2Mzc1MCwgNjM3NDksIDEyOTAyNSwgMTI4NzczLCAxMDEwMTQsIDYzNzUzLCA2MzgwMiwgNDEwODQsIAorICAgIDcyNzg0LCA2ODEzMywgNDE5MzAsIDYzODA1LCA2MzgwNCwgMTExNDAsIDYzODAxLCA0MTA4MiwgODE0MCwgNjM3OTgsIAorICAgIDYyNjAsIDc4ODI2LCAxMjgzOTEsIDY2NzY1LCAxMTQzOSwgMTE5ODgsIDM4OTgsIDkyMjQ2LCAxMDIwMSwgMTIyMzgsIAorICAgIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIAorICAgIDk4MzMzMSwgNDIyMDMsIDc5NTAsIDMxMjQsIDYzNzcxLCA0Mjc4NywgNDM4NiwgMTExNDgsIDY5NzMsIDI3OTMsIDEyNDc1LCAKKyAgICAxMjUyNDEsIDc1MDU2LCA2Mzc2OSwgOTUzMCwgMTIxMjQ4LCAxMjIzMiwgMTMxMzUsIDg1OTYsIDU2ODEsIDYzNzYyLCAKKyAgICA0NTk1LCA2Mzc2MCwgNzkyLCAxMTM2NzQsIDY0ODAzLCAxMDA1MTIsIDg3NDIsIDE5NTAyOSwgMTEwNTMsIDEyODc5NiwgCisgICAgNjM3NDQsIDEyODEwNywgMTI4OTQyLCA3NTg4LCA2Mzc0OCwgMTY5MywgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgCisgICAgNDIwNjMsIDEwOTAsIDY4ODAzLCAxMjA3NzgsIDExNjY1LCA3NDEzMywgNDU1OCwgNjU2ODUsIDk1MjMsIDE5NTA1MywgCisgICAgNjM4NTcsIDcxMjE2LCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAKKyAgICAzMTM5LCA2ODA3MSwgMzE3MCwgMTI0ODUsIDQzODkxLCAxMDg3MiwgNDM4OTIsIDEzMDA2LCA0MzkzMywgMTIwMDc0LCAKKyAgICAxMDA2NTAsIDk0MSwgMCwgMTI5MDc5LCAxMjA5NjcsIDY1NTQxLCAxMTA2MywgOTgzMTk4LCA4MjI4LCA3Mzk4OCwgNDIwNjUsIAorICAgIDEyMjg5MywgNDM4ODksIDk0MDM5LCAxMjcwNDEsIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgNzAyOTUsIDExOTg2MywgCisgICAgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCA4MzQwOSwgMCwgMCwgMTAwMjUsIDY5OTE1LCAyOTE4LCA2NjgyMCwgNjUzMDAsIAorICAgIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCA5ODM2MjAsIDEyNzgyOSwgNjUzOTMsIDEyMDU5MiwgCisgICAgNzQxMzgsIDgzNTA1LCA5Mjc1MSwgNzUwMTksIDc0MTM5LCA3ODc3NywgNjUzOTQsIDExNTQ4LCA1MjcwLCAxMjgxNDksIAorICAgIDY1Mzk2LCA3NDk5OCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDc1MDEyLCAxMjAxNTcsIDEwODg4LCAxMjA5MzQsIAorICAgIDY1MjQyLCAwLCAzMzMwLCAxMjk0MTcsIDAsIDY4MzQwLCAxMjQ5MzEsIDk4MzYwNSwgNzEyMDIsIDMzMDQsIDQyNzUzLCAKKyAgICA5MjU4OCwgNzAyOTgsIDc0NjQzLCAxNjI3LCAxMjkxMjAsIDEyNzc2NSwgMTk0NzM1LCA1MzcxLCAxMzExNiwgOTgzNzc3LCAKKyAgICAxODI2LCAxMTg3OTQsIDk4MzQ5NywgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDY4MzE3LCA5MDM1LCAxMTE0MSwgCisgICAgOTE3OTc3LCAxMjgwMDUsIDAsIDcyNzMzLCA2ODEyNSwgNzQ4OTgsIDE2NCwgNjgzMDksIDk0MDY3LCA5NDAwMCwgNjk1OCwgCisgICAgMTAwNjM0LCA0MzExNiwgNjc3MTksIDcwMDE5LCAxMzI0NSwgMTAwNjM3LCA2ODgwOCwgNjY4MTgsIDEyODAwOSwgNzAwMzEsIAorICAgIDExMDk5LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAxMjA0MTQsIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDk4MzQ3MywgCisgICAgNjU1MDksIDEyOTE5MiwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAxMjUxMDIsIDYzODA4LCA5MDU0LCA5NzEsIAorICAgIDEzMDYyLCA3MTA5MCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIDk4MzMyMSwgNzgxNDYsIDkyNjExLCAwLCAKKyAgICA3MDIwNCwgMTI1MTI5LCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAyMzAzLCAxMTA1NywgMTI0OTk0LCAxMzI3NiwgMTI1MTMzLCAKKyAgICA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAxMjY0NzksIDEyNzkwNCwgMTE5MDkxLCAxMjIyOSwgMTE2ODAsIDkyOTU2LCAKKyAgICA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAxOTUwODksIDk4MzQ5NSwgMTA0NzYsIDM4NTgsIDY0MTc1LCAzOTMyLCA2NDk1OCwgCisgICAgMTIwNDMyLCA5ODM2NzgsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIDM2OSwgNzQ5MDgsIDQxNzg0LCAxMTkxNzUsIDY0MTYzLCAKKyAgICA3Nzk5NywgNzI3MDcsIDkyNjQ1LCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIDEyODYzMSwgNDE3ODEsIAorICAgIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDkyNjA4LCA5ODM4NzAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIDU3ODgsIAorICAgIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIDAsIDQzODgsIDE5NDkxMywgNzQ2LCAxMTg4MjYsIAorICAgIDc0NzgzLCAwLCAxMjAxOCwgNjUyOTQsIDEyNDk0NiwgMTk0OTI1LCA2ODgzNSwgOTgzNDg4LCA0NDIyLCA0NzA4LCAzNzk5LCAKKyAgICA3NDI5MiwgMTE5MzU3LCAxMjExNDYsIDc0NDMwLCAwLCAxMTcwMCwgNDM3NCwgMTIwMzc3LCAxMjExNTEsIDEzNjQsIAorICAgIDk4MzMxNywgODAzOCwgMTIwODgzLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgNzA0MjUsIDY3MzUsIDczOTc5LCAxMzE3NCwgCiAgICAgNzM5NjgsIDEzMjI1LCAxOTQ5MDIsIDY5ODA4LCA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgNzE0NzYsIDQyODU1LCAxMTg4NTYsIAotICAgIDQyODY2LCAwLCAwLCAxMjc5ODYsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgMTE5MzU0LCAKLSAgICA5ODM5MjAsIDk4MzU2OCwgMTI4ODcxLCAxMjc4MjEsIDY3Njg1LCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAxMDQwNCwgCi0gICAgMTAzNDAsIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCA5ODMyNDUsIAotICAgIDEyMTE0OSwgNDEzNzMsIDY4NDg2LCAxMjMwMywgMTI4NDc2LCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIAotICAgIDExNjU2LCAwLCAxMjA3MDMsIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCA5MjczNywgMTA5NiwgNDM4NTIsIAotICAgIDEyMTQzMywgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCA5MjkwMiwgODAzMiwgCi0gICAgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAxMTkxMDEsIDEyMTE1NiwgNjQ4ODQsIDkyOTA5LCAxMTkzNDUsIDg1OTcsIAotICAgIDcxMTAwLCAxMjkwNjIsIDk4NjQsIDAsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIDQxNDUyLCA2NDk2MSwgNzcyMiwgCi0gICAgMCwgMTA0NTksIDExOTg3OCwgMTI0OTQ5LCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIDQxNTMzLCA2NjMzNywgMTI4NjYzLCAKLSAgICA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNjc4NTYsIDAsIDQzNjM4LCA3ODUzNiwgMTIxMTg3LCA2MjYxLCAKLSAgICAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAxMjUwNjQsIAotICAgIDkxNzc5NSwgMjkyNSwgNzM4MDksIDEzMDU2LCA5MjkxNCwgMTMyMTIsIDQzMjM4LCAxMjEzOTYsIDEzMTkwLCAxMzE4NywgCi0gICAgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDEyMTA4OSwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgMTY5NCwgODIxNiwgNzEzNjksIAotICAgIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgOTgzNzI4LCA0MzU0NCwgMTI2NDY2LCAwLCA0MTQ0NCwgNjU2MjEsIDY5OTU1LCAKLSAgICA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEyMDMyMiwgMTIzMTQsIDY1NjE2LCA1MjM4LCAKLSAgICA0MzgyNSwgNzEwODUsIDExOTMzNywgNTIzNiwgNDA5NzksIDk4MzE0MCwgNzE4NzQsIDgyODYsIDEyODUzNywgMzkzNiwgCi0gICAgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDY5NzM5LCAxMzIzNSwgODg0MiwgNDEyNDgsIDAsIDQzNzksIDEzMjM5LCAxMjY5MiwgCi0gICAgNzk2OSwgMTI3MjY2LCA3MjE5LCA3MTg3NSwgMTI4MjUxLCAxMjA1MDksIDkyOTA3LCA2NjIyNCwgNzM0LCAyOTc5LCAKLSAgICAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgNDE0NzcsIDExOTI1NiwgNzExOTIsIAotICAgIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIAotICAgIDExMTM2LCA3MTg3NiwgMTE1MDYsIDEyODM5NSwgNDI4NDEsIDEzMjY3LCAxMjg0MjEsIDAsIDQxNzc1LCAwLCA3MTMwLCAKLSAgICA0MTc3MywgMCwgMTA2NjMsIDcwMTMwLCAwLCA5ODM5NzQsIDYxNTEsIDEyMTEwLCA0MjY3MywgNjU1NzIsIDY1MjkzLCAKLSAgICA2NTI1MCwgMTMyNjUsIDEzMjY0LCA2NDUxOCwgMCwgNjEwMCwgMTI3OTY0LCA5MjY0NywgNTgwOCwgNjU5MjIsIDY3ODE0LCAKLSAgICAxMjk2NywgNjYwNDEsIDU2MTIsIDQ1ODMsIDcwMDA0LCA0MzM4NiwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCAKLSAgICAxOTQ5MzAsIDY4MzU4LCA3MTQ4MywgNjk3ODksIDQyNjUzLCA4MzE4MSwgNjgxMDIsIDk2OTgsIDc4MTQsIDcxMDQ1LCAKLSAgICAxMTk2NTEsIDEyODUxNCwgMCwgNDE5MjEsIDExODg1OCwgOTc1NiwgNjk4NSwgNjY0MTgsIDY2NjIxLCA3NDIxOSwgNjY0MTIsIAotICAgIDEyODgyMiwgMTE4OTk3LCA4MDEyLCA1Njc0LCAxMjM1MywgNjY0MjEsIDEyMzYxLCA1Njc3LCA1NTg4LCA5MjM0OCwgCi0gICAgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDgzMTEzLCA1Njc2LCA0MTkyMywgMTI2OTQsIDExODk3OCwgNTY3MiwgCi0gICAgMTI5NCwgMCwgNzgwNTksIDk4Mzk2MiwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgNDI0MzYsIDEyMTQwMCwgMTIxMTgzLCAwLCAKLSAgICA3NDIyMiwgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgNTg3MywgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAKLSAgICAxMjkwMzIsIDkyODg5LCA1ODQxLCA1ODM3LCA1NTIzNCwgMTk0ODY0LCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgCi0gICAgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgNTg2NSwgOTMwMDksIDc5NTYsIDU5OCwgMCwgNjQ2NDksIAotICAgIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAxMjAwNDEsIDk4MzI1NywgODM0NzgsIDk4MzkyOSwgODMxODQsIDAsIDg0NywgCi0gICAgMTI4MjQyLCA5NTI5LCA4MzAxOCwgNjY2NTcsIDY5ODAsIDc4NDgzLCA0MzUxMCwgNzgxMjIsIDkyMjE5LCAwLCA2NzQxMSwgCi0gICAgNzg0ODYsIDgzMDE3LCAxMjcyNjAsIDEyMDAzOSwgNDI2ODMsIDcxODQ4LCA5ODMwNTUsIDcxMTQsIDEyNjUyMSwgMCwgCi0gICAgNDMxOTAsIDY1NDYzLCAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCA3NTA1OSwgCi0gICAgMTk5NjMsIDU2OTgsIDE5NDc2OCwgOTgzMjcyLCA5MjkzMywgNzE4ODcsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIAotICAgIDY4MTQxLCA4MzcyLCAwLCA2NTExNiwgMCwgNzAzMDQsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgCi0gICAgMTA1NjgsIDAsIDk4MzYxOCwgMjg2OSwgOTE3ODQzLCA0MTAxNSwgNzQ0NzMsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCAKLSAgICA0MTgwMiwgOTgzNjUyLCA0MjYwOCwgNzg0NjgsIDk4ODQsIDQ3NTksIDczNzY4LCAxMjAyOTYsIDEwMjY2LCA0MTM1OSwgCi0gICAgMTE3MCwgNDMzNjUsIDY5ODEwLCA3MzkwOCwgMTYwOSwgOTAyLCA5Mjc3MywgNjM5MzYsIDgzMjQ3LCAxMTY2MSwgODEyMiwgCi0gICAgNTgxOCwgODMyNDUsIDAsIDM4NjEsIDk1NDAsIDExMDI4LCAyNTU0LCA1MTU4LCA1NzE0LCAyMjEzLCA5ODM5NjYsIDAsIAotICAgIDgwNywgNDMwNzksIDc4MDkyLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMTIwODYzLCA0MjE1NSwgOTgzMzE5LCA0MTM1NiwgCi0gICAgNzQxMTAsIDExODgwMSwgNzEwNDMsIDEyMDA4MCwgODY3NiwgOTgzMjkzLCA5NDAwMiwgNTU4MiwgNDUxLCA2Mzk0MSwgCisgICAgNDI4NjYsIDEwMTA3NywgMCwgMTI3OTg2LCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIAorICAgIDExOTM1NCwgMTk0OTQwLCA5ODM1NjgsIDEyNzI1MywgMTI3ODIxLCA2NzY4NSwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgCisgICAgMTA0MDQsIDEwMzQwLCA0MTQ3MywgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCAKKyAgICA5ODMyNDUsIDcwNjg0LCA0MTM3MywgNjg0ODYsIDEyMzAzLCAxMjg0NzYsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCAKKyAgICA0MTM3MSwgMTE2NTYsIDk4MzY5MSwgMTIwNzAzLCAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgOTI3MzcsIAorICAgIDEwOTYsIDQzODUyLCAxMjE0MzMsIDQyNjg4LCAxMjQ0MSwgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgCisgICAgOTI5MDIsIDgwMzIsIDEzMjQzLCAxMzIzNywgMTI3MTksIDEyNjY0NiwgMTE5MTAxLCAxMjExNTYsIDY0ODg0LCA5MjkwOSwgCisgICAgMTE5MzQ1LCA4NTk3LCA3MTEwMCwgMTI3NTU5LCA5ODY0LCA5ODM5NDMsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIAorICAgIDQxNDUyLCA2NDk2MSwgNzcyMiwgMCwgMTA0NTksIDExOTg3OCwgNzI4MzAsIDExOTg3OSwgNjY1OTAsIDEyODEyMywgCisgICAgNDE1MzMsIDY2MzM3LCAxMjg2NjMsIDkyMTg0LCA5ODM4NjAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDY3ODU2LCAwLCAKKyAgICA0MzYzOCwgNzg1MzYsIDcyNzE5LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgCisgICAgMTMyOTIsIDEzMjA2LCAxMjUwNjQsIDkxNzc5NSwgMjkyNSwgNzM4MDksIDEzMDU2LCA5MjkxNCwgMTMyMTIsIDQzMjM4LCAKKyAgICAxMjEzOTYsIDEzMTkwLCAxMzE4NywgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDEyMTA4OSwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgCisgICAgMTY5NCwgODIxNiwgNzEzNjksIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgMTk0NjI5LCA0MzU0NCwgMTAwNDQxLCAwLCAKKyAgICA0MTQ0NCwgNjU2MjEsIDY5OTU1LCA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEwMDkyNCwgCisgICAgMTIzMTQsIDY1NjE2LCA1MjM4LCA0MzgyNSwgNzEwODUsIDExOTMzNywgNTIzNiwgNDA5NzksIDk4MzE0MCwgNzE4NzQsIAorICAgIDgyODYsIDEyMTI5MiwgMzkzNiwgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDY5NzM5LCAxMzIzNSwgODg0MiwgNDEyNDgsIAorICAgIDEwMDQ5MCwgNDM3OSwgMTMyMzksIDEyNjkyLCA3OTY5LCAxMjcyNjYsIDcyMTksIDcxODc1LCAxMjgyNTEsIDEyMDUwOSwgCisgICAgOTI5MDcsIDY2MjI0LCA3MzQsIDI5NzksIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCAKKyAgICA0MTQ3NywgMTE5MjU2LCA3MTE5MiwgNzQ1MTEsIDQxNzcwLCAxNjcwLCA2NDQyLCAxMjAzMTcsIDQyNDQ2LCA1Mzc5LCAKKyAgICAxMjAzMTgsIDQxMTYzLCA3NDgzMiwgMTExMzYsIDcxODc2LCAxMTUwNiwgNjU5MzQsIDQyODQxLCAxMzI2NywgMTI4NDIxLCAKKyAgICAxMjQ5ODgsIDQxNzc1LCAwLCA3MTMwLCA0MTc3MywgOTE3ODg4LCAxMDY2MywgNzAxMzAsIDEyNTIyNSwgOTgzOTc0LCAKKyAgICA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIAorICAgIDEwMDQ5MywgOTI2NDcsIDU4MDgsIDY1OTIyLCA2NzgxNCwgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCA3MDAwNCwgCisgICAgNDMzODYsIDY4MDk3LCA2NDU3NSwgMTI2NjM3LCAxMTk2NSwgNzA3MjAsIDY4MzU4LCA3MTQ4MywgNjk3ODksIDQyNjUzLCAKKyAgICA4MzE4MSwgNjgxMDIsIDk2OTgsIDc4MTQsIDcxMDQ1LCAxMTk2NTEsIDEyODUxNCwgOTE3OTE1LCA0MTkyMSwgMTE4ODU4LCAKKyAgICA5NzU2LCA2OTg1LCA2NjQxOCwgNjY2MjEsIDc0MjE5LCA2NjQxMiwgMTI4ODIyLCA3MDcxOCwgODAxMiwgNTY3NCwgMTIzNTMsIAorICAgIDY2NDIxLCAxMjM2MSwgNTY3NywgNTU4OCwgOTIzNDgsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCA4MzExMywgNTY3NiwgCisgICAgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIDEyOTQsIDEyMDg3OCwgNzgwNTksIDk4Mzk2MiwgNDI1MTEsIDE3MjcsIAorICAgIDEyMDcyNSwgNDI0MzYsIDEwMDQ5NywgMTIxMTgzLCAwLCA3NDIyMiwgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgCisgICAgNTg3MywgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAxMjAwODYsIDkyODg5LCA1ODQxLCA1ODM3LCA1NTIzNCwgMTk0ODY0LCAKKyAgICAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgOTgzODQwLCAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIDU3OTcsIDQxMDExLCAKKyAgICA1ODY1LCA5MzAwOSwgNzk1NiwgNTk4LCA5ODMyNjAsIDY0NjQ5LCA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgCisgICAgMTIwMDQxLCA5ODMyNTcsIDgzNDc4LCA5ODM5MjksIDcxMjY2LCA5MTc2MTgsIDg0NywgMTI1MDY1LCA5NTI5LCA4MzAxOCwgCisgICAgNjY2NTcsIDY5ODAsIDc4NDgzLCA0MzUxMCwgNzgxMjIsIDkyMjE5LCAwLCA2NzQxMSwgNzg0ODYsIDgzMDE3LCAxMjcyNjAsIAorICAgIDEyMDAzOSwgNDI2ODMsIDcxODQ4LCAxMDEwOTUsIDcxMTQsIDEyNjUyMSwgMCwgNDMxOTAsIDY1NDYzLCAxNTU0LCA3MDY1NywgCisgICAgNDI2MTEsIDQyNTYzLCAxMDEwNzEsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCA3NTA1OSwgMTk5NjMsIDU2OTgsIAorICAgIDE5NDc2OCwgMTIwNzMwLCA5MjkzMywgNzE4ODcsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIDY4MTQxLCA4MzcyLCAKKyAgICAxMDA4MDAsIDY1MTE2LCAwLCA3MDMwNCwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAxMDU2OCwgCisgICAgOTE3NTY1LCAxMjc0MDAsIDI4NjksIDkxNzg0MywgNDEwMTUsIDc0NDczLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgNDE4MDIsIAorICAgIDk4MzY1MiwgNDI2MDgsIDc4NDY4LCA5ODg0LCA0NzU5LCA3Mzc2OCwgMTIwMjk2LCAxMDI2NiwgNDEzNTksIDExNzAsIAorICAgIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgOTI3NzMsIDYzOTM2LCA4MzI0NywgMTE2NjEsIDgxMjIsIDU4MTgsIAorICAgIDgzMjQ1LCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgOTgzOTY2LCAxMjEwMjgsIDgwNywgCisgICAgNDMwNzksIDc4MDkyLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMTIwODYzLCA0MjE1NSwgMTI4OTUxLCA0MTM1NiwgCisgICAgNzQxMTAsIDExODgwMSwgNzEwNDMsIDEyMDA4MCwgODY3NiwgMTAwNTE5LCA5NDAwMiwgNTU4MiwgNDUxLCA2Mzk0MSwgCiAgICAgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgMTI4NTIxLCA3ODY4MSwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgCi0gICAgMTI4ODUzLCA3NDkzMywgNzAzNDIsIDExMDA1LCAxOTQ2OTksIDY2NjU2LCA2NjA0NCwgMTk0NjM2LCAxMjAwNzksIAotICAgIDEyODc5MywgMCwgNDMzOTMsIDEwMDk0LCA3MDE2NCwgMTE1MjksIDEwODU3LCA5Mjk0NCwgNjY0MzYsIDY1NDYsIDkzLCAKLSAgICA4MTAyLCA2NzMyMywgNjg0MDUsIDAsIDE5NDcxNCwgODE3MSwgMTE4ODg4LCAxMTkwOTcsIDgyOTk2LCA5MTc1NDMsIDM4MywgCi0gICAgNzE1NCwgNDE2NTYsIDQzNDk1LCA5NDA0MCwgNjcxNjIsIDUxODcsIDcxMjk2LCA3MTA4NiwgMTEyODYsIDY4NjIwLCAKLSAgICA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDEyNzM3NywgNDEwMDUsIDk4MzgxMCwgMCwgMTI4NDcxLCA4MjkyLCAxMjUxMDgsIAotICAgIDQ5ODAsIDg4NjAsIDcxMDU0LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDc0OTEyLCAxMjc5NzQsIAotICAgIDEwNjMxLCAxMTI0NCwgNzk3MiwgNjgwNDIsIDc4Nzg1LCAwLCA3OTAwLCAxMjg1OTAsIDExMzA5LCAzODA2LCA0MTk4LCAKLSAgICA0MjcyNSwgMCwgNjc2NTYsIDk5OTUsIDAsIDkyNTUyLCAwLCAxMjkzMSwgMTIxMTEwLCA0MjY4NCwgNzQyODUsIDIwODgsIAotICAgIDY0MjEzLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCA3NDc3MSwgMTI3OTIwLCAxOTQ3MTMsIDEyODM2LCAwLCAKLSAgICAxMTM4MDAsIDc0MzQyLCA4NTkzLCAwLCAwLCA2ODQ0NSwgMTMyNTUsIDEyMTMzMywgMTI4ODQzLCA3NDY0LCAwLCA2NTg2NSwgCi0gICAgMCwgMTk0NjUwLCAxMjcxNDQsIDkyMzk1LCA5MzQyLCAxMjA0NjQsIDcwMzc2LCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCAKLSAgICA0MTAwNywgNzQzNzUsIDk4MzcwMSwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgODM1MDEsIDAsIDgzMjU3LCA2OTcyNCwgNDA5OTIsIAotICAgIDkyMjY0LCAxMTkxMzYsIDY4NjUzLCA0MzU1OCwgNTUyMiwgNzUwMjYsIDYxLCAxMjA5NTksIDc0MTA1LCAzNjMzLCAKLSAgICAxMjAwODIsIDY1MTYyLCA0MTIzNCwgMTIwODksIDc4MjgxLCA5NzcxLCA4MzI4MSwgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgCi0gICAgMjc4NCwgNDI3NDMsIDcxMDc4LCA4MTI2LCA2NjQ4MywgMCwgMCwgNDQxLCA0MjYyMSwgMCwgMCwgNDEwMDIsIDQwOTk5LCAKLSAgICAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIDEwODkwLCA3NDQ4MSwgNjU4MzQsIDgzMjQsIDExODk0NCwgNjQ0MTcsIAotICAgIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCA3NDg1MywgOTgzNjU5LCA4OTMwLCA2NjY3OCwgNjcyMTYsIDExOTMsIDEwMDU2LCAKLSAgICAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDEyMDk5MiwgMTIxMTc1LCA3NzQzLCA4MzUwMiwgMTI0OTk2LCA3NzkwNCwgCi0gICAgNzc5MTMsIDc3OTA1LCA5MDM0LCA2MDM5LCAxMjkxMzksIDEwMDc1LCAwLCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgCi0gICAgMCwgMCwgMTk0NjM3LCA0MjgxNSwgOTI5ODQsIDQxOTY2LCAwLCAxMjc0NzEsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIAotICAgIDkxMSwgNzUzOSwgMCwgNDA5NjMsIDEyMDMzOSwgNjUxNTksIDY0MzkwLCAwLCA5ODMxNjAsIDU1MjAsIDExNjYyLCAKLSAgICAxMjc0NzMsIDY1MzMwLCA0MjgxMiwgOTgzMjE1LCAwLCAxMjMyNiwgNzEwODEsIDE5NDYzOCwgNDI4MDgsIDEyODMzNywgCi0gICAgOTM0OCwgNjQ5MDEsIDk4Mzg2MSwgOTgzODkyLCAxMjEwNTAsIDY2ODM5LCAwLCAwLCAxMjEwMDQsIDQzNzAyLCA5ODMxNDgsIAotICAgIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCA4MzUwMywgODY0NCwgMTIxMjI3LCA4MzMzMiwgMTExODYsIDc0Mjk2LCAKLSAgICA0MTkwOSwgMCwgNjY5MDAsIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgNjYzOTcsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCAKLSAgICA4NzYxLCAxMjk0MiwgNTc0OCwgOTI3MTMsIDEwNzczLCA3MDg2OCwgODMxNzQsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCAKLSAgICA4NTIwLCAxMzE0NiwgMTI3MDk2LCA2MzkzMSwgODMyNzUsIDY1OTAyLCAyODgyLCA4MzMzNCwgMCwgMTI4NDMsIDQ1MjAsIAotICAgIDEyMDM0NSwgOTI0NTksIDAsIDk4MzY2MCwgMCwgNzM4NjAsIDgzMzM1LCAwLCA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAKLSAgICA3MDg3MSwgMCwgOTE3ODY0LCA0MzY3OSwgMTIxMDI2LCA2NTExNywgOTIyNzAsIDAsIDEwNDI3LCAxMjE1MDYsIDM4NDQsIAotICAgIDY4NDIsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCA5MzAzMCwgMTI4Nzg5LCA5ODM2MzgsIDkyOTI4LCA3ODMsIDE5NDkzNSwgCisgICAgMTI4ODUzLCA3NDkzMywgNzAzNDIsIDExMDA1LCAxOTQ2OTksIDY2NjU2LCA2NjA0NCwgMTk0NTg2LCAxMjAwNzksIAorICAgIDEyNzI0OSwgMTIwNzk3LCA0MzM5MywgMTAwOTQsIDcwMTY0LCAxMTUyOSwgMTA4NTcsIDkyOTQ0LCA2NjQzNiwgNjU0NiwgCisgICAgOTMsIDgxMDIsIDY3MzIzLCA2ODQwNSwgMCwgMTk0NzE0LCA4MTcxLCAxMTg4ODgsIDExOTA5NywgODI5OTYsIDkxNzU0MywgCisgICAgMzgzLCA3MTU0LCA0MTY1NiwgNDM0OTUsIDk0MDQwLCA2NzE2MiwgNTE4NywgNzEyOTYsIDcxMDg2LCAxMTI4NiwgNjg2MjAsIAorICAgIDY0MjE3LCAwLCA1MjMyLCAwLCA0MTAwOSwgMTI3Mzc3LCA0MTAwNSwgOTgzODEwLCA0MzIwNSwgMTIwODI5LCA4MjkyLCAKKyAgICAxMjUxMDgsIDQ5ODAsIDg4NjAsIDcxMDU0LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDc0OTEyLCAKKyAgICAxMjc5NzQsIDEwNjMxLCAxMTI0NCwgNzk3MiwgNjgwNDIsIDc4Nzg1LCAwLCA3OTAwLCAxMjg1OTAsIDExMzA5LCAzODA2LCAKKyAgICA0MTk4LCA0MjcyNSwgOTgzMzExLCA2NzY1NiwgOTk5NSwgMTIwMDcyLCA5MjU1MiwgMCwgMTI5MzEsIDEyMTExMCwgNDI2ODQsIAorICAgIDc0Mjg1LCAyMDg4LCA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDEyNzkyMCwgMTk0NzEzLCAKKyAgICAxMjgzNiwgMTI1MjE0LCAxMTM4MDAsIDc0MzQyLCA4NTkzLCAxMjA2NDAsIDAsIDY4NDQ1LCAxMzI1NSwgMTIxMzMzLCAKKyAgICAxMjg4NDMsIDc0NjQsIDEwMTA2NiwgNjU4NjUsIDAsIDEyODUzNSwgMTI3MTQ0LCA5MjM5NSwgOTM0MiwgMTIwNDY0LCAKKyAgICA3MDM3NiwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgNDEwMDcsIDc0Mzc1LCA5ODM3MDEsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIAorICAgIDgzNTAxLCAwLCA4MzI1NywgNjk3MjQsIDQwOTkyLCA5MjI2NCwgMTE5MTM2LCA2ODY1MywgNDM1NTgsIDU1MjIsIDc1MDI2LCAKKyAgICA2MSwgMTIwOTU5LCA3NDEwNSwgMzYzMywgMTIwMDgyLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgODMyODEsIAorICAgIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIDI3ODQsIDQyNzQzLCA3MTA3OCwgODEyNiwgNjY0ODMsIDAsIDE5NDY2MiwgNDQxLCAKKyAgICA0MjYyMSwgNzA2NjAsIDAsIDQxMDAyLCA0MDk5OSwgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIAorICAgIDY1ODM0LCA4MzI0LCAxMTg5NDQsIDY0NDE3LCA3NDgxNywgMTI3NDY1LCA2NDczNywgNzQ4NTMsIDk4MzY1OSwgODkzMCwgCisgICAgNjY2NzgsIDY3MjE2LCAxMTkzLCAxMDA1NiwgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAxMjA5OTIsIDEyMTE3NSwgCisgICAgNzc0MywgODM1MDIsIDEyNDk5NiwgNzc5MDQsIDc3OTEzLCA3NzkwNSwgOTAzNCwgNjAzOSwgMTI5MTM5LCAxMDA3NSwgCisgICAgOTgzNzY1LCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgMCwgMCwgMTk0NjM3LCA0MjgxNSwgOTI5ODQsIDQxOTY2LCAwLCAKKyAgICAxMjc0NzEsIDEyNTE4OCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgOTExLCA3NTM5LCA5ODM0ODcsIDQwOTYzLCAxMDA0NDcsIAorICAgIDY1MTU5LCA2NDM5MCwgMCwgOTgzMTYwLCA1NTIwLCAxMTY2MiwgMTI3NDczLCA2NTMzMCwgNDI4MTIsIDExOTkxMiwgCisgICAgMTI2NjQ3LCAxMjMyNiwgNzEwODEsIDE5NDYzOCwgNDI4MDgsIDEyODMzNywgOTM0OCwgNjQ5MDEsIDk4Mzg2MSwgOTgzODkyLCAKKyAgICAxMjEwNTAsIDY2ODM5LCAwLCAwLCAxMjEwMDQsIDQzNzAyLCAxMDA4MDcsIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCAKKyAgICA4MzUwMywgODY0NCwgMTIxMjI3LCA4MzMzMiwgMTExODYsIDc0Mjk2LCA0MTkwOSwgMCwgNjY5MDAsIDI3OTEsIDY5NjYzLCAKKyAgICAxODkxLCA2OTgyNCwgNjYzOTcsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCA4NzYxLCAxMjk0MiwgNTc0OCwgOTI3MTMsIAorICAgIDEwNzczLCA3MDIwNiwgODMxNzQsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCA4NTIwLCAxMzE0NiwgNzI4MDUsIDYzOTMxLCAKKyAgICA4MzI3NSwgNjU5MDIsIDI4ODIsIDgzMzM0LCAxMjgyODUsIDEyODQzLCA0NTIwLCAxMjAzNDUsIDkyNDU5LCAxMjkwOTIsIAorICAgIDk4MzY2MCwgMTIwMDY4LCA3Mzg2MCwgODMzMzUsIDEyODI4OSwgNjQzNDUsIDk4MzU1NCwgOTIwMSwgMTI4MzE0LCA3MDg3MSwgCisgICAgOTgzODA5LCA5MTc4NjQsIDQzNjc5LCAxMjEwMjYsIDY1MTE3LCA5MjI3MCwgOTgzNjM2LCAxMDQyNywgMTIxNTA2LCAzODQ0LCAKKyAgICA2ODQyLCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgOTMwMzAsIDEwMTA1MSwgOTgzNjM4LCA5MjkyOCwgNzgzLCAxMTk1NzcsIAogICAgIDkyMTg1LCAxMjcyMjEsIDczODU1LCA2ODAzMiwgNjUwNTYsIDM2MjAsIDQxMTgwLCA2ODM3OCwgNDU1NiwgNjc4MzksIAogICAgIDY4NDgwLCAxOTQ5MzMsIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCA2NzgyMywgMCwgMTI3NTI3LCAKLSAgICA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMTIwNzAwLCAxMjg5MSwgOTgzNzU1LCA5ODM2MzYsIDYzOTk5LCAyMDE2LCAKKyAgICA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMTIwNzAwLCAxMjg5MSwgOTgzNzU1LCA5ODMyMzksIDYzOTk5LCAyMDE2LCAKICAgICA0MTkxNywgOTc4OCwgNjM5MjgsIDY3Njk2LCAxODYyLCA2NTgwMCwgOTE1NSwgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgCiAgICAgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDEyMDgzNCwgCiAgICAgNjQ1OTIsIDc0Mjc2LCA2NzY4OCwgNjc4NCwgNzg3ODgsIDY4MTgxLCAwLCA3MTIxOCwgMTEzODIxLCA2NjM2NiwgMTIxNDcsIAogICAgIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgMTI0OTc2LCA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgNzE5MzUsIDY0NTA5LCAKICAgICA3ODE1MiwgMTEzNjk3LCAxMjY1MDUsIDExMDUxLCAxOTQ5MjgsIDAsIDExMzU1LCA2NTg4NSwgMTIxMzE5LCAxMjc5NDEsIAotICAgIDQxMjE0LCAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgCi0gICAgMTIwNTcwLCA2MTY3LCA3NDUxOSwgNjM5MjIsIDY1OTQsIDk4Mzc0MCwgMCwgMCwgMzYyNCwgNDMwMzYsIDEyOTQ3MiwgCi0gICAgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDEyNjk5MCwgNjM5OTMsIDEwNDQwLCA5NjExLCA2NTYwNSwgCi0gICAgNjgwMywgMTIwOTY4LCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCAKLSAgICA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgMTE1MTgsIDgzMjkyLCAKLSAgICA3ODc5MCwgOTgzMzgxLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDYzOTYwLCA5NTkxLCA0NTE2LCAKLSAgICAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgOTIzMjUsIDAsIDY4MDc5LCAKLSAgICAxMjEzNDQsIDExMzk3LCAyODgwLCA3MDgwNiwgOTE3ODI5LCAyODcyLCAwLCA4MzMyMSwgMzQ5OCwgNDM3OCwgOTE3NTM5LCAKLSAgICA0MjcwLCAwLCA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAxOTQ5OTEsIDAsIDk4MzA0MCwgMTk0OTEwLCAKLSAgICAxMjEzOTIsIDgxNjEsIDM5MywgMTIwMTMsIDAsIDk4MzE5OCwgMTE5MTAzLCA0MTUsIDYzOTY0LCA2Mzk2MywgNDIzNDUsIAotICAgIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgNzEwNTgsIDYzOTYxLCA0NDcyLCA5ODMyOTksIDAsIDc4MTU5LCAKLSAgICA2OTY5OSwgMTI3MzAxLCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgMTAzMzEsIDYzODMwLCAKLSAgICAxMTk2MjUsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgNzg2NTQsIDQyNDUzLCAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIAotICAgIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDEyOTE5NiwgODQ1NywgNDIzMDEsIDExMzcyLCA2NDg3MywgMTE5OTIsIDAsIDAsIAotICAgIDYzOTgwLCAxMTgwMSwgMzYyMiwgMTk1MDkyLCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIAotICAgIDE5NjYsIDQzNjI4LCA5ODM5MDgsIDk4MzI5NCwgODMyNjcsIDEyMTA1MiwgNjM5NzEsIDQzNDcsIDQ0MTYsIDQyMDk4LCAKLSAgICAxMTAwOSwgMTA2OTQsIDYzOTczLCA0MDIsIDkyMjEzLCAxMzE0NywgMTI4NjkyLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCAKLSAgICA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCA5ODMxNTcsIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgODMzMjMsIDE5NDY3MCwgCi0gICAgMTIwODM2LCA5MjM1MSwgNzQ4MTMsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMTE4ODgxLCA5MjMxOCwgNjQ5NDIsIDkzMDIxLCAKLSAgICAxOTQ3MzMsIDcwNDExLCA3ODcxOCwgMTIxMTQwLCA3NDMwMSwgNjg4MjUsIDExMjgwLCAxMjg0ODksIDY5Nzg0LCA3NDA2MCwgCi0gICAgMTI4MzkyLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTI0OTg4LCA3NDAyLCAKLSAgICA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIDY2ODMyLCA5Mjk2NiwgMTIwODUyLCA1NDA1LCAKLSAgICAxMjc4NzUsIDY0ODY2LCAxMjA5NjUsIDExOTU4MywgMTE5MTIyLCA3ODc4NCwgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIAotICAgIDY0NjkwLCAzMjU0LCA5ODMxNjYsIDEyODk0NCwgOTI2OTYsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCAxMjkxMjcsIDY1MDc3LCAKLSAgICAxMjkwNTksIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIDExNTIwLCA1NjExLCA4MzAyMSwgMzM3NywgMCwgMCwgCi0gICAgNzQzNTQsIDE5NDU3OCwgNzgyMjgsIDk4MzcyMiwgOTgzNzYyLCA0MjY5MSwgMTI3ODg2LCAxMjA5NDgsIDY4MDkxLCAKLSAgICAxMjg0MDQsIDc1MDIzLCAxMzc5LCAyNDYsIDc0NjQ5LCA5ODM3NjEsIDM3ODgsIDkyNTIwLCAxMTA0MSwgNjcyMDIsIAotICAgIDY2MzA0LCAwLCAxMjEyMTMsIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDEyODUwMCwgMTI3MDQ2LCAwLCAwLCAxMTM4MjIsIAotICAgIDEwNjU2LCAxMjUwNDIsIDY1MjE0LCA5Mjk4NywgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAKLSAgICAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgMTk0NTc0LCAxMTQ0MywgOTgzNjAzLCAKLSAgICA2NjMxOSwgNjg0MSwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDExOTExNywgNzQ0ODUsIAotICAgIDQyNDQyLCA2NTQ3MCwgOTgzOTA3LCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDY5OTgyLCA3MDUwNSwgOTgyOCwgCi0gICAgMCwgNDM1MDUsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIAotICAgIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCA2ODMxNSwgMCwgMCwgNzQwNDEsIDgzMTQ0LCA3MDA0NSwgNDM1MzksIDU0MTEsIAotICAgIDQyMTk2LCAwLCAwLCAwLCA5MTUwLCA2NjgzMSwgNDIzOTMsIDEzMDg2LCAxMzEwLCA2Njg0OCwgOTMzNywgMTIwNTIsIAotICAgIDEwNjQzLCA1NTI3MSwgMTI4OTUxLCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDgzMzE2LCAKLSAgICAxOTQ4MjIsIDE5NDc1NiwgNzQzMTAsIDY1NTQsIDk0MDU5LCAxMTkxNCwgNTQ1MiwgMCwgMCwgOTI3NzIsIDAsIDkxNzg4MCwgCi0gICAgMTk0NjgxLCA5MjU2MCwgMjcxMywgMTE5NTY0LCA5NjUwLCA0MzMzMCwgMTIxMDMzLCAxMjg1MDUsIDE0MDYsIDEyNTAwNywgCi0gICAgNDI5MjUsIDc0NjM4LCAxOTQ1OTMsIDY2MjU2LCA0MTQzLCAxMjgxMzYsIDE5NDc2MiwgNjU3NDgsIDQxNDEsIDk2ODIsIAotICAgIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgNDE0NSwgCi0gICAgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCA0MjkzMiwgNDM0MDMsIDAsIDAsIAotICAgIDE5NDc4MywgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDk4MzIwNSwgMTI5NTUsIDEwNTk2LCAyODg4LCA4MzE5MCwgMCwgCi0gICAgMTIxMzU0LCA5NjU3LCA5MDE5LCAxMjExNTQsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgNjczMjUsIDY4Njc5LCAKLSAgICA0MzU1MiwgNzUwMSwgNjMyOCwgMTk0OTYwLCAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIAotICAgIDY4MzgxLCAwLCAwLCA4OTg2LCA0MzgzOCwgMTA2MzIsIDExOTM0LCAxMTQ1MiwgMTMzMiwgMCwgMTk0OTcwLCAxMjY2NDcsIAotICAgIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgNjQ4MjIsIDI4OTIsIDgzMTkyLCA0MzM5NCwgNTU1LCAwLCAwLCA2NjY0NiwgCi0gICAgMTI4OTgwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzQwNTUsIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgCi0gICAgNDE5MjcsIDEwNTgyLCAxMjA0NTcsIDE3ODQsIDEzNjEsIDEyMDkyMSwgMTIxNTE2LCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAKLSAgICAxMzE1OCwgOTIxNjYsIDcyMTEsIDcxODg0LCA5MzcxLCA3Mzk3MywgMTI4NDQxLCA2ODI4LCAxNjI1LCA3NjY0LCAxMjg3NjgsIAotICAgIDEzNDIsIDY4NDQwLCA2NDE3MSwgOTI2NDIsIDEwOTAzLCA5ODM0OTYsIDAsIDkyNTI3LCAwLCA3MDQzOCwgNDQ4MiwgCi0gICAgNDE2MDYsIDEyODkzNCwgMTI1MDMzLCAxMjE0NzUsIDAsIDY0MzgxLCA5ODM5NDAsIDE5NDk3NCwgMTk1MDkwLCA0MjI0NSwgCi0gICAgMTI2NDY3LCA0MTk3MiwgMCwgNDQ0LCA5ODM0MzksIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgCi0gICAgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDcwMTc3LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgNjgzMTYsIDAsIAotICAgIDk4MzI1OCwgNDA5OTAsIDQzNzY1LCAxMjEyNjIsIDM0OTIsIDkxNzkwNiwgMTE4Nzg0LCAxMjkwMjYsIDAsIDk4MzU2NiwgCi0gICAgMTI4MzgsIDY3MjA4LCAxOTk0OCwgNDE2NzcsIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCA5ODMyNjEsIDExOTA1OSwgCi0gICAgMTIwMzYsIDQxMzA5LCAxMjgxNjEsIDAsIDgxNTIsIDAsIDQxNTUwLCAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAKLSAgICA3NTAxNSwgMTIwOTY0LCAxMjA3MDgsIDAsIDAsIDEwMzg2LCA3NTA2OCwgMTE5OTU1LCAxMjczMDMsIDkyNjgwLCA5ODMxMzQsIAotICAgIDY4MTU0LCAxMjc4NzYsIDE3NDMsIDAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCA3MDA1MiwgCi0gICAgNjQ0MzksIDEyODg2NCwgNjgwNjIsIDkyNjg2LCA5ODM4NzUsIDAsIDQzODY2LCAxMjg4ODEsIDAsIDMzOTUsIDkzNjIsIAotICAgIDEwODc4LCA0MzI2MCwgMCwgNzgzNjIsIDY0ODMwLCAwLCAxMjUwNDYsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAKLSAgICAxMjExMDAsIDcxMzQ0LCA0NzM1LCAxMTExMSwgNjExOSwgMTI4MjIsIDQyNjk5LCAwLCA5ODM4MjQsIDc0ODE4LCAxNDIzLCAKLSAgICAxMjg5MjMsIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAxMjg2MzQsIDExODg5MiwgMCwgOTQ3MiwgNjc3MzQsIAotICAgIDExOTI5LCAxMjY1NTcsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCA3MTQ3NSwgMCwgOTI1MDEsIAotICAgIDEyNTA4MSwgNzgwNDYsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNiwgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgCi0gICAgNjg0MTQsIDc0NjE0LCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDcwMTA5LCAKLSAgICA2NTYyNywgMCwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCA5ODMwOTQsIDAsIDExOTAyMywgNjUzNjUsIDczODc3LCAKLSAgICA2NTYyOCwgNzgwMTksIDExOTI3MiwgODMxMTgsIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAKLSAgICAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMTI1MDU3LCA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCAKLSAgICA0MzA3OCwgMTI3Nzg5LCAxMTg4MDksIDY3MjMyLCAxMDg5OSwgNjU0NjksIDcwMTI1LCAwLCAwLCAyNDEwLCA5OTMsIAotICAgIDgzMTE3LCAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgMTI0OTYzLCA3MTEwLCA3NDQ2MiwgCi0gICAgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDY4ODYzLCA0MjI0LCAxMzM2LCA0MTUxOCwgMTIxMzExLCAKLSAgICAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIDExOTE1MywgMTIwNDQxLCAyNzIsIAotICAgIDQyNjMsIDg3OTMsIDk4Mzg1NiwgMCwgNDE1MDIsIDEyODEzMywgOTgzLCAxMjU0OSwgMTI0OTQwLCAwLCAxMTkwLCA0MTA5LCAKLSAgICAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDEyMDkyNiwgNzAwMjcsIDIwOTksIDUxMjAsIAotICAgIDI0MDksIDc3OTksIDAsIDc0NDI0LCAwLCAxMjEwNDEsIDQ3MzEsIDkyMjc5LCA2NjYyOSwgMTI4MTI3LCA5MjUyNSwgMTI1NSwgCi0gICAgNDE0OSwgOTI0NywgNzQ5NzcsIDk5MTMsIDk4MzgyOCwgMTIxMTAxLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMTEzNzE0LCAKLSAgICAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgCi0gICAgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCA5MTc5MDAsIDgxODAsIDEyNTA1NSwgMCwgOTk3MiwgNzM4NjUsIAotICAgIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgOTI0NjUsIDAsIDkzOTYwLCA5ODMzMjQsIDEyNjU4MSwgMTA2OTUsIDAsIAotICAgIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDAsIDkxNzg5NywgMTI5MTM0LCAxMzMxMSwgNjg0MDMsIDQxODU3LCAKLSAgICA2NDMyMSwgODM1OSwgODMyODYsIDEyNjg5LCA5ODMzMTIsIDExMjQ1LCAxMjgxMDUsIDk4MzMxNCwgNzE4NTksIDY4MTgzLCAKLSAgICA5ODM0MTUsIDE5NDgyOSwgMTI4NywgNTQzNiwgMCwgNzEwOTcsIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDcwMjA1LCA2MDUxLCAKLSAgICAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCA4Mjk2MiwgMTI4OTA4LCA5MzA0MywgMTIxMDEzLCAwLCAzNjUyLCAxMDUzNywgCi0gICAgMTIwMjgyLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDEyODY2NCwgODMyNDQsIDE0ODksIDAsIDAsIDAsIAotICAgIDM4OTksIDEwMDcsIDQyMTI0LCA0MzgyOCwgNDIxMjIsIDkyMzM3LCA5MjM2NywgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAKLSAgICAxMTk4MzIsIDkxNzU2MywgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIDEyOTEzMSwgNjQzMCwgNzg2MDgsIAotICAgIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMTI4NDgxLCAKLSAgICAxMjEyNzAsIDAsIDc1MDI3LCA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3ODYxNSwgNzg2MTYsIDIyOTcsIDAsIAotICAgIDczODM3LCAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDgzMTUyLCA5OTMzLCA3NDAxMSwgCi0gICAgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgOTIxNjgsIDExOTgyNywgMTE5ODE3LCA5Mjk1MCwgNzg2MzMsIDEwODk2LCAwLCAKLSAgICAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCA5NDAxOCwgCi0gICAgMTE4ODIzLCA2NTM1MywgMCwgNDYzMSwgMTE4OTk2LCAwLCA2NDA3LCAxMTM3MzcsIDYzMzgsIDQzMjE0LCAwLCA3NTcwLCAwLCAKLSAgICAzMTkyLCAxMjAzMzAsIDg0MTQsIDk4MzM5MiwgOTM5ODMsIDE5NTA0MywgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAKLSAgICAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgCi0gICAgNzAwNjYsIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAKLSAgICAxMDk0NCwgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIDc0ODU5LCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCAKLSAgICA3ODYzNiwgNjgwNCwgNzA0NzUsIDE5NDcsIDkxNzU3OSwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgCi0gICAgNzQ3OTgsIDkxODEsIDY1MzU5LCAxMjUwNjUsIDgwMTcsIDExOTgzMSwgNjUwOTYsIDY2NzIwLCA2ODIyMywgNDM0NzUsIAotICAgIDkxNzU0OCwgNDkwOSwgMTIxMjYsIDEyNzU0MCwgMTIwNjk2LCA0OTA0LCA5Mjk2MSwgNDM1MDMsIDEzNjUsIDkyNTMsIAotICAgIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMTI3NzcyLCAwLCAwLCA4MzE3MywgNjY4NDUsIDY0NDE1LCAxMjA1MDAsIDgzMTcyLCAKLSAgICA1Mzk4LCAxMjUwMzUsIDEyNzM4NiwgOTM5NTMsIDEyNzM2MiwgOTgzNzgyLCAxMTkwMTUsIDgzMTcxLCAxMjcwMDcsIDk0NzYsIAotICAgIDk4Mzg4NywgMTIwNjk1LCAxMjc2MywgMTI2NjAzLCAzNjI5LCAxMjA4NDQsIDEzMDA1LCAxMTE4MSwgMzYyOCwgMCwgMCwgCi0gICAgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAKLSAgICAxMjAzNzIsIDY0NjY1LCA0MzA4NiwgOTExNCwgNDM4NzAsIDQyNTgzLCA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAKLSAgICAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIAotICAgIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCA3NTA0NiwgNjAxOCwgNjgyOTMsIDEyNTAxMCwgMTIyNzYsIDExOTExMCwgCi0gICAgNjgzNzIsIDEyODI1NSwgOTIyNTksIDcxODkzLCAwLCAxMTk4MjgsIDEwNDY3LCAwLCAyNDQzLCAxMDkxOCwgNzgyMTcsIAotICAgIDc3OTQ3LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAxMjQ5NDIsIDczOTg3LCAxMjc4ODIsIDcxODk1LCA5MzAxMiwgNzk5MiwgCi0gICAgNzc5NDMsIDQzOTM5LCAxMjg2NywgMTI4NjQ5LCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIAotICAgIDY1ODU3LCAxMjgzNjEsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMTIxMjUyLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAKLSAgICAxMTg0MiwgMCwgNzEwNzIsIDEyMTQ2MiwgMCwgNTEzNiwgMTk2OCwgMTI4OTA2LCAxMjY2MjcsIDEzMzcsIDY0OTY3LCAKLSAgICAxNjI5LCAwLCA3OTYsIDY2NTA2LCAwLCA3NDEyMywgMTI4NzcsIDEyMDY0OSwgNDIzMTQsIDQzMzg4LCA0MzgyNiwgNDM5NDQsIAotICAgIDYxMjAsIDQ3OCwgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgNzE4OTQsIDQyNzYsIAotICAgIDEyMDYsIDM2MTksIDQxNjM4LCA2OTY5MSwgMzg0MywgMTIwMTEsIDg4NTMsIDMzNjEsIDAsIDQ5MCwgMTA3MTUsIDc1NzgsIAotICAgIDY4Mzg0LCA5Mjc1NCwgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNjgyNDUsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgCi0gICAgNzg1MjIsIDc4NCwgNDIzOTcsIDMzNCwgMTIxMDg0LCA0MjQxNiwgNjUzNTYsIDY1MjczLCA0MzkzNywgNjk2NjYsIDQ0NDIsIAotICAgIDEwMzY0LCA0MzkzNSwgNzc4LCA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgNDM5MzIsIDExMTAyLCAKLSAgICAyOTE1LCAxMTUwMiwgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3NTAzMiwgMTIwMjczLCA2OTc1LCAwLCA1NDE1LCAKLSAgICAxMjE3NiwgOTgzNzA5LCA3NDE5MywgMzQ2MiwgNDM5NDAsIDQyNjI5LCA3ODY5MSwgNzExNzUsIDQzOTQyLCAxMjcyNTYsIAotICAgIDk3NTksIDEyNzI1NSwgNzAwNTcsIDEyMTQ0MiwgODExNCwgNzg2OTgsIDc4Njk3LCA3ODY5NiwgNzg2OTUsIDg3MTAsIAotICAgIDQyNDk1LCAxMTg5NTYsIDcwMTg5LCA0MDUxLCAxMDQ2MCwgNDMzNjQsIDcxMjA2LCAxMzU2LCAxMjE2MSwgNDI3MTMsIAotICAgIDEyODg1NywgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIDQyMTEyLCA2NDQzNiwgMTg3NSwgMTA4MDgsIAotICAgIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCA5ODMyMjQsIAotICAgIDU1NzUsIDk2NzUsIDcxMTI5LCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3OSwgOTI5NzksIDQzMjM2LCAzMzgyLCAKLSAgICA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAxMTM4MTQsIDExMjY5LCAxMDE1MSwgNzM3NTksIDQzMTAwLCAKLSAgICA2OTg4OCwgNjU1MDgsIDk4MzE0MywgMCwgMTIxNDUxLCA4OTM1LCA3ODIzNCwgMCwgOTgzNzU3LCAwLCA2MTYsIDc0NzUzLCAKLSAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgNzQ2MzEsIDEyNjU1MSwgMTI0OTkyLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIAorICAgIDQxMjE0LCAxMjkzMzEsIDEyMjk5LCAxMDEwNzUsIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIDk5NjMsIDY4NjQ5LCAKKyAgICAxMjY2MDksIDQwNDAsIDEyMDU3MCwgNjE2NywgNzQ1MTksIDYzOTIyLCA2NTk0LCA5ODM3NDAsIDExMzczNCwgMTI3ODk5LCAKKyAgICAzNjI0LCA0MzAzNiwgMTI5NDcyLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCA0MTk1NSwgMTEwNTkyLCA2Mzk5MywgCisgICAgMTA0NDAsIDk2MTEsIDY1NjA1LCA2ODAzLCAxMjA5NjgsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIDkyNjQxLCAzNDM1LCAKKyAgICA3ODE2NCwgNDM4MTQsIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIDQyNzQyLCA5NTE3LCAKKyAgICAxMTUxOCwgODMyOTIsIDc4NzkwLCA5ODMzODEsIDY3OTkzLCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgMTI1MDMsIAorICAgIDk1OTEsIDQ1MTYsIDEwMjE3LCA2ODM3MCwgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCA5MjMyNSwgCisgICAgMTI1MDY3LCA2ODA3OSwgMTIxMzQ0LCAxMTM5NywgMjg4MCwgNzA4MDYsIDkxNzgyOSwgMjg3MiwgMCwgODMzMjEsIDM0OTgsIAorICAgIDQzNzgsIDEyODc0MywgNDI3MCwgMCwgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgNTIzMCwgMTk0OTkxLCAwLCAKKyAgICA4MzMyMiwgMTI2NjEyLCAxMjEzOTIsIDgxNjEsIDM5MywgMTIwMTMsIDk4MzIyMSwgMTAwNTA5LCAxMTkxMDMsIDQxNSwgCisgICAgNjM5NjQsIDYzOTYzLCA0MjM0NSwgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCA3MTA1OCwgNjM5NjEsIAorICAgIDQ0NzIsIDEwMTA1NCwgMCwgNzgxNTksIDY5Njk5LCAxMDEwNTUsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIDEwNzMwLCAKKyAgICA3NjkxLCAxMDMzMSwgNjM4MzAsIDgzNDUwLCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDc4NjU0LCA0MjQ1MywgMTYwNCwgCisgICAgOTU2NSwgMTA1MzksIDY5NzAxLCA2NTc2NCwgNDE0MTUsIDY1NzY3LCAxMDA1MDYsIDg0NTcsIDQyMzAxLCAxMTM3MiwgCisgICAgNjQ4NzMsIDExOTkyLCAxOTQ4NzQsIDEyOTMwNiwgNjM5ODAsIDExODAxLCAzNjIyLCAxMjg5MDQsIDY0MzM2LCAxMjAxNywgCisgICAgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgMTk2NiwgNDM2MjgsIDcyNzk0LCAxMDEwNjAsIDgzMjY3LCAxMjEwNTIsIAorICAgIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgNDAyLCA5MjIxMywgMTMxNDcsIDEyODY5MiwgCisgICAgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgOTgzMTU3LCAxMTMwMiwgNjI1OSwgCisgICAgNDMzOTUsIDk4MzM3MywgODMzMjMsIDEyODM1OCwgMTIwODM2LCA5MjM1MSwgNzQ4MTMsIDc0NDI1LCAxMTI5OSwgMTU2MSwgCisgICAgMTE4ODgxLCA5MjMxOCwgNjQ5NDIsIDkzMDIxLCAxMjcwNDksIDcwNDExLCA3ODcxOCwgMTAwOTMwLCA3NDMwMSwgNjg4MjUsIAorICAgIDExMjgwLCAxMjg0ODksIDY5Nzg0LCA3NDA2MCwgMTI4MzkyLCAxOTQ5ODgsIDcyNzUyLCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIAorICAgIDY2NTE2LCA1NDA5LCAxMjczNzksIDExOTA1NywgNzQwMiwgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDEwMTA1MywgCisgICAgNjY2MTYsIDY2ODMyLCA5Mjk2NiwgMTIwODUyLCA1NDA1LCAxMjc4NzUsIDY0ODY2LCAxMjA5NjUsIDExOTU4MywgMTE5MTIyLCAKKyAgICAyMjM1LCA3NDI0OCwgMTEzMzAsIDEyOTEyMywgNjQ2OTAsIDMyNTQsIDk4MzE2NiwgMTI4OTQ0LCA5MjY5NiwgNDIzOTAsIAorICAgIDQzNjc4LCAxMDEwMDAsIDEyOTEyNywgNjUwNzcsIDEyOTA1OSwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgCisgICAgMTE1MjAsIDU2MTEsIDgzMDIxLCAzMzc3LCAwLCA5ODM4NDUsIDc0MzU0LCAxOTQ1NzgsIDc4MjI4LCA5ODM3MjIsIAorICAgIDEyODM2OCwgNDI2OTEsIDEyNzg4NiwgMTIwOTQ4LCA2ODA5MSwgMTIxMTY2LCA3NTAyMywgMTM3OSwgMjQ2LCA3NDY0OSwgCisgICAgOTgzNzYxLCAzNzg4LCA5MjUyMCwgMTEwNDEsIDY3MjAyLCA2NjMwNCwgMCwgMTIxMjEzLCA4OTE3LCA0MjQwMywgMzAxLCAKKyAgICAxMTk5MzUsIDExOTgyNiwgMTI3MDQ2LCAwLCAwLCAxMTM4MjIsIDEwNjU2LCAxMjUwNDIsIDY1MjE0LCA5Mjk4NywgNDI1NjcsIAorICAgIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAzMTgyLCA5ODM2MDcsIDk4MzkyNiwgMCwgNjUwMzQsIAorICAgIDY1ODg5LCA0MjE2OSwgNDc1NSwgNzQyNDQsIDc0NjMxLCAxMTQ0MywgOTgzNjAzLCA2NjMxOSwgNjg0MSwgNjA4LCA2MDAsIAorICAgIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDExOTExNywgNzQ0ODUsIDQyNDQyLCA2NTQ3MCwgMTAwNTM4LCAKKyAgICA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDY5OTgyLCA3MDUwNSwgOTgyOCwgNzgzMTEsIDQzNTA1LCA0MjI4MCwgCisgICAgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAxMTk2MzEsIDExMDAyLCA0MjQ3MCwgCisgICAgMTI4OTEzLCA2ODMxNSwgOTgzODM4LCAxMjExNTksIDc0MDQxLCA4MzE0NCwgNzAwNDUsIDQzNTM5LCA1NDExLCA0MjE5NiwgCisgICAgMCwgMCwgMTI4OTQ5LCA5MTUwLCA2NjgzMSwgNDIzOTMsIDEzMDg2LCAxMzEwLCA2Njg0OCwgOTMzNywgMTIwNTIsIDEwNjQzLCAKKyAgICA1NTI3MSwgNzI3MjcsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgODMzMTYsIDE5NDgyMiwgCisgICAgMTAwNzMzLCA3NDMxMCwgNjU1NCwgODMwNTMsIDExOTE0LCA1NDUyLCA5ODM2NDksIDAsIDkyNzcyLCAxMjc1NDQsIAorICAgIDkxNzg4MCwgMTk0NjgxLCA5MjU2MCwgMjcxMywgMTE5NTY0LCA5NjUwLCA0MzMzMCwgMTIxMDMzLCAxMjg1MDUsIDE0MDYsIAorICAgIDEyNTAwNywgNDI5MjUsIDc0NjM4LCAxMjUxOTAsIDY2MjU2LCA0MTQzLCAxMjgxMzYsIDE5NDc2MiwgNjU3NDgsIDQxNDEsIAorICAgIDk2ODIsIDY1Mjg3LCAxNTA4LCAxMDA1MzMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgCisgICAgNDE0NSwgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCA0MjkzMiwgNDM0MDMsIAorICAgIDEwMDYyMywgMTAwNjIyLCAxMDA2MjUsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA3MjczMSwgMTI5NTUsIDEwNTk2LCAKKyAgICAyODg4LCA4MzE5MCwgMCwgMTIxMzU0LCA5NjU3LCA5MDE5LCAxMjExNTQsIDAsIDI4NzgsIDUzOTAsIDEwMDY5OCwgCisgICAgMTk0OTYxLCA2NzMyNSwgNjg2NzksIDQzNTUyLCA3NTAxLCA2MzI4LCAxOTQ5NjAsIDEwNDI5LCAxMDM2NSwgOTgzNjMxLCAKKyAgICAxMjgyMTYsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIDY4MzgxLCAwLCAxMDA1NzUsIDg5ODYsIDQzODM4LCAxMDYzMiwgCisgICAgMTE5MzQsIDExNDUyLCAxMzMyLCAxMjA3MDksIDE5NDk3MCwgMTIwNjAyLCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIAorICAgIDY0ODIyLCAyODkyLCA4MzE5MiwgNDMzOTQsIDU1NSwgMTI5NDE4LCAxMjg0NzQsIDY2NjQ2LCAxMjgzMjcsIDExOTAwMiwgCisgICAgMTMxNTEsIDc0NTEyLCA3Mjg5LCA3MjczOSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCA0MTkyNywgMTA1ODIsIAorICAgIDEyMDQ1NywgMTc4NCwgMTM2MSwgMTIwOTIxLCAxMjE1MTYsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIDEzMTU4LCA5MjE2NiwgCisgICAgNzIxMSwgNzE4ODQsIDkzNzEsIDczOTczLCAxMjg0NDEsIDY4MjgsIDE2MjUsIDc2NjQsIDEyNzgwOSwgMTM0MiwgNjg0NDAsIAorICAgIDY0MTcxLCA5MjY0MiwgMTA5MDMsIDk4MzQ0OSwgOTE3ODE4LCA5MjUyNywgMTI5Mzc0LCA3MDQzOCwgNDQ4MiwgNDE2MDYsIAorICAgIDEyODkzNCwgMTI1MDMzLCAxMjE0NzUsIDk4Mzg1NCwgNjQzODEsIDEwMDU0MCwgMTk0OTc0LCAxMDA2MTIsIDQyMjQ1LCAKKyAgICAxMDA2MTQsIDQxOTcyLCAxMDA2MTYsIDQ0NCwgMTAwNjE4LCA5MTI3LCA2NjY4NywgNjY2MTksIDEyNjQ4OSwgNzgwMjUsIAorICAgIDEyNjYwNiwgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDEyOTEzMiwgNzAxNzcsIDEyMDgzMCwgOTgzNDUwLCAxMTk3LCAKKyAgICAxMjgyODIsIDExNDksIDY4MzE2LCAxMjgwMTAsIDk4MzI1OCwgNDA5OTAsIDQzNzY1LCAxMjEyNjIsIDM0OTIsIDkxNzkwNiwgCisgICAgMTE4Nzg0LCAxMjkwMjYsIDEyOTM0NiwgMTAwNTkyLCAxMjgzOCwgNjcyMDgsIDE5OTQ4LCA0MTY3NywgMzA5OSwgMTAwNTk4LCAKKyAgICAxMDA1OTcsIDQxMDg3LCAxMDA1OTksIDAsIDk4MzI2MSwgMTE5MDU5LCAxMjAzNiwgNDEzMDksIDEyNTIxMCwgMTAwNjAzLCAKKyAgICA4MTUyLCAxMDA2MDUsIDQxNTUwLCAxMjIyNywgMTAwNTQ1LCAxMDA2MDksIDEyODI4LCAxMjc1MTEsIDc1MDE1LCAxMjA5NjQsIAorICAgIDEyMDcwOCwgMCwgMTk0NjExLCAxMDM4NiwgNzUwNjgsIDExOTk1NSwgMTI3MzAzLCA5MjY4MCwgOTgzMTM0LCA2ODE1NCwgCisgICAgMTI3ODc2LCAxNzQzLCAxOTQ4NjAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCA3MDA1MiwgNjQ0MzksIAorICAgIDEyODg2NCwgNjgwNjIsIDkyNjg2LCAxMDA1ODUsIDEwMDU4NCwgNDM4NjYsIDEwMDU4NiwgMTAwNTg5LCAzMzk1LCA5MzYyLCAKKyAgICAxMDg3OCwgNDMyNjAsIDAsIDc4MzYyLCA2NDgzMCwgMTAwODY2LCAxMjUwNDYsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAKKyAgICAxMjExMDAsIDcxMzQ0LCA0NzM1LCAxMTExMSwgNjExOSwgMTI4MjIsIDQyNjk5LCAxMjA3NDUsIDk4MzgyNCwgNzQ4MTgsIAorICAgIDE0MjMsIDEyODkyMywgNDI2MzcsIDQxMDgwLCA5ODMyMTAsIDEyMDM5LCAxMDU1OSwgMTI4NjM0LCAxMTg4OTIsIDE5NDkxMCwgCisgICAgOTQ3MiwgNjc3MzQsIDExOTI5LCAxMjY1NTcsIDcxNzAsIDk1OTYsIDYxMzAsIDEyNTI2OCwgNDM2MjksIDExNTc5LCAKKyAgICA3MTQ3NSwgMCwgOTI1MDEsIDEyNTA4MSwgNzgwNDYsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNiwgNDMyMzQsIAorICAgIDY2MDA4LCAxMjYyNywgMCwgNjg0MTQsIDc0NjE0LCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgCisgICAgMTE3NzYsIDc1NTgsIDcwMTA5LCA2NTYyNywgNzI4NzYsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgNzQ5NDcsIAorICAgIDk4MzA5NCwgMCwgMTE5MDIzLCA2NTM2NSwgNzM4NzcsIDY1NjI4LCA3ODAxOSwgMTE5MjcyLCA4MzExOCwgNDE3MDgsIAorICAgIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIDU0MDMsIDEwMzUyLCA3MDA4NSwgMTAwNjEsIDQzMjM3LCAxMjUwNTcsIAorICAgIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIDQzMDc4LCAxMjc3ODksIDExODgwOSwgNjcyMzIsIDEwODk5LCAKKyAgICA2NTQ2OSwgNzAxMjUsIDEwMDU3NCwgMTAwNTczLCAyNDEwLCA5OTMsIDgzMTE3LCAxMDA1NzcsIDEwMDU4MCwgNzg2OTMsIAorICAgIDEwMDU2MCwgMTAwNTU5LCA3MjMyLCAwLCAxMTkyNTMsIDEyNDk2MywgNzExMCwgNzQ0NjIsIDIwNjYsIDEwNDg5LCA0MjE2NiwgCisgICAgNDM0NjMsIDEwNjU5LCAzNjAwLCA2ODg2MywgNDIyNCwgMTMzNiwgNDE1MTgsIDEyMTMxMSwgMCwgOTE3NTg5LCA5ODM3OTQsIAorICAgIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMTAwNTUzLCAxMDA1NTYsIDEwMDU1NSwgMTAwNTU4LCAyNzIsIAorICAgIDQyNjMsIDg3OTMsIDk4MzM4NSwgMCwgNDE1MDIsIDEyODEzMywgOTgzLCAxMjU0OSwgMTAwNTYzLCAxMDA1NjIsIDExOTAsIAorICAgIDQxMDksIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMTIwOTI2LCA3MDAyNywgMjA5OSwgCisgICAgNTEyMCwgMjQwOSwgNzc5OSwgOTgzOTU0LCA3NDQyNCwgOTgzODk2LCAxMjEwNDEsIDQ3MzEsIDkyMjc5LCA2NjYyOSwgCisgICAgMTI4MTI3LCA5MjUyNSwgMTI1NSwgNDE0OSwgOTI0NywgNzQ5NzcsIDk5MTMsIDk4MzgyOCwgMTAxMDI3LCA2NDkxNCwgCisgICAgMTI1MDAyLCA2NTEwMSwgMTEzNzE0LCAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcwOTYsIDY2NjI1LCAxMDg0MiwgCisgICAgNDEzNTQsIDQyMTIzLCA0MzA5NywgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCA5MTc5MDAsIDgxODAsIAorICAgIDEyNTA1NSwgOTgzOTEyLCA5OTcyLCA3Mzg2NSwgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCA5MjQ2NSwgMCwgOTM5NjAsIAorICAgIDk4MzMyNCwgNzQwNTUsIDEwNjk1LCAxMjkwNTgsIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDkxNzk0OSwgCisgICAgOTE3ODk3LCAxMjgzMjYsIDEzMzExLCA2ODQwMywgNDE4NTcsIDY0MzIxLCA4MzU5LCA4MzI4NiwgMTI2ODksIDk4MzMxMiwgCisgICAgMTEyNDUsIDEyODEwNSwgOTgzMzE0LCA3MTg1OSwgNjgxODMsIDk4MzQxNSwgMTk0ODI5LCAxMjg3LCA1NDM2LCA5ODMwNjUsIAorICAgIDcxMDk3LCA3NDE0MiwgOTIzMjgsIDc0MTUyLCA3MDIwNSwgNjA1MSwgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgCisgICAgODI5NjIsIDEyNzM5NywgOTMwNDMsIDEyMTAxMywgMCwgMzY1MiwgMTA1MzcsIDEyMDI4MiwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAKKyAgICAyNzksIDczNzQ1LCAxMjc4MjMsIDEyODY2NCwgODMyNDQsIDE0ODksIDEyMDYyMiwgMCwgMCwgMzg5OSwgMTAwNywgNDIxMjQsIAorICAgIDQzODI4LCA0MjEyMiwgOTIzMzcsIDkyMzY3LCAxMjUxODcsIDExOTg1LCAxMzQ1LCA3ODYwMCwgMTE5ODMyLCA5MTc1NjMsIAorICAgIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIDc4NjEwLCAxMjkxMzEsIDY0MzAsIDc4NjA4LCA3ODYwNCwgNzg2MDUsIAorICAgIDYyODUsIDc4NjAzLCA3ODYxMiwgNzg2MTMsIDY1OTQyLCA0OTIsIDg2ODUsIDEyODQ4MSwgMTIxMjcwLCAwLCA3NTAyNywgCisgICAgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzI4NjMsIDc4NjE2LCAyMjk3LCAxMjkzNDEsIDczODM3LCAKKyAgICAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDgzMTUyLCA5OTMzLCA3NDAxMSwgNjY1MTUsIAorICAgIDc2NywgNTUyNCwgNzAyOCwgMTk1MDY1LCA5MjE2OCwgMTE5ODI3LCAxMTk4MTcsIDkyOTUwLCA3ODYzMywgMTA4OTYsIAorICAgIDYzOTEwLCAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCA3MDczMSwgMCwgNjUzNDAsIDExODk3OSwgNDE1NTEsIDIyNjIsIAorICAgIDk0MDE4LCAxMTg4MjMsIDY1MzUzLCAxMDA0NzksIDQ2MzEsIDExODk5NiwgMTk1MDI3LCA2NDA3LCAxMTM3MzcsIDYzMzgsIAorICAgIDQzMjE0LCAxMjcxNjMsIDc1NzAsIDEyMTAxNywgMzE5MiwgMTIwMzMwLCA4NDE0LCA5ODMzODgsIDkzOTgzLCAxOTUwNDMsIAorICAgIDAsIDAsIDkxNjQsIDY2NjEyLCA5Mzk1OSwgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIAorICAgIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIDcwMDY2LCA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCA3ODYyNywgCisgICAgNzg2MjgsIDc4NjI1LCAyMzk5LCA2OTY5MywgODk5NCwgMTA5NDQsIDQxMjA4LCA5ODM3MTMsIDQxMTY4LCA4MTc4LCAKKyAgICA3NDg1OSwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgNzg2MzYsIDY4MDQsIDcwNDc1LCAxOTQ3LCA3Mjc3MCwgMCwgCisgICAgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIDY1MzU5LCA3MjcyMiwgODAxNywgCisgICAgMTE5ODMxLCA2NTA5NiwgNjY3MjAsIDY4MjIzLCA0MzQ3NSwgOTE3NTQ4LCA0OTA5LCAxMjEyNiwgMTI3NTQwLCAxMDEwMTUsIAorICAgIDQ5MDQsIDkyOTYxLCA0MzUwMywgMTM2NSwgOTI1MywgNDI3NTcsIDQzNDM2LCA3NDYyLCAxMjc3NzIsIDAsIDAsIDgzMTczLCAKKyAgICA2Njg0NSwgNjQ0MTUsIDEyMDUwMCwgODMxNzIsIDUzOTgsIDEyNTAzNSwgMTI3Mzg2LCA5Mzk1MywgMTI3MzYyLCA5ODM3ODIsIAorICAgIDExOTAxNSwgODMxNzEsIDEyNzAwNywgOTQ3NiwgOTgzMDY2LCAxMjA2OTUsIDEyNzYzLCAxMDA1MjMsIDM2MjksIDEyMDg0NCwgCisgICAgMTMwMDUsIDExMTgxLCAzNjI4LCAxMTk4MzQsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIAorICAgIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMTIwMzcyLCA2NDY2NSwgNDMwODYsIDkxMTQsIDQzODcwLCA0MjU4MywgCisgICAgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIAorICAgIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgNzUwNDYsIDYwMTgsIAorICAgIDY4MjkzLCAxMjUwMTAsIDEyMjc2LCAxMTkxMTAsIDY4MzcyLCAxMjgyNTUsIDkyMjU5LCA3MTg5MywgMTE5ODEzLCAKKyAgICAxMTk4MjgsIDEwNDY3LCA5ODM4MTQsIDI0NDMsIDEwOTE4LCA3ODIxNywgNzc5NDcsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIAorICAgIDEyNDk0MiwgNzM5ODcsIDEyNzg4MiwgNzE4OTUsIDkzMDEyLCA3OTkyLCA3Nzk0MywgNDM5MzksIDEyODY3LCAxMjg2NDksIAorICAgIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIDUxOCwgNjU4NTcsIDEyODM2MSwgMTI4Njc0LCAxMzIwNCwgCisgICAgNDM4NywgODU3LCAxMjEyNTIsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIDExODQyLCAwLCA3MTA3MiwgMTIxNDYyLCAwLCAKKyAgICA1MTM2LCAxOTY4LCAxMjg5MDYsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIDc5NiwgNjY1MDYsIDEyODQ0MiwgCisgICAgNzQxMjMsIDEyODc3LCAxMjA2NDksIDQyMzE0LCA0MzM4OCwgNDM4MjYsIDQzOTQ0LCA2MTIwLCA0NzgsIDY1MTUxLCAKKyAgICA2ODEyOCwgMTE5MDQ0LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDcxODk0LCA0Mjc2LCAxMjA2LCAzNjE5LCA0MTYzOCwgCisgICAgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCA4MzE3OSwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDkyNzU0LCAKKyAgICA2NTM1MCwgMTA1MzAsIDEyMzQ4LCA4NjUzLCA2ODI0NSwgNDI0MzUsIDYxNTQsIDk1NTEsIDY1MzU0LCA3ODUyMiwgNzg0LCAKKyAgICA0MjM5NywgMzM0LCA3MjczMiwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNDM5MzcsIDY5NjY2LCA0NDQyLCAxMDM2NCwgNDM5MzUsIAorICAgIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDQzOTMyLCAxMTEwMiwgMjkxNSwgMTE1MDIsIAorICAgIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzUwMzIsIDEyMDI3MywgNjk3NSwgMTI4NzkzLCA1NDE1LCAxMjE3NiwgCisgICAgMTIwNjUzLCA3NDE5MywgMzQ2MiwgNDM5NDAsIDQyNjI5LCA3ODY5MSwgNzExNzUsIDQzOTQyLCAxMjcyNTYsIDk3NTksIAorICAgIDEyNzI1NSwgNzAwNTcsIDEyMTQ0MiwgODExNCwgNzg2OTgsIDc4Njk3LCA3NDgyMywgNzg2OTUsIDg3MTAsIDQyNDk1LCAKKyAgICAxMTg5NTYsIDcwMTg5LCA0MDUxLCAxMDQ2MCwgNDMzNjQsIDcxMjA2LCAxMzU2LCAxMjE2MSwgNDI3MTMsIDEyODg1NywgCisgICAgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIDQyMTEyLCA2NDQzNiwgMTg3NSwgMTA4MDgsIDQyMTA5LCAKKyAgICAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCA5ODMyMjQsIDU1NzUsIAorICAgIDk2NzUsIDcxMTI5LCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3OSwgNjU1OTMsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgCisgICAgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAxMDA0MDksIDExMjY5LCAxMDE1MSwgNzM3NTksIDQzMTAwLCA2OTg4OCwgCisgICAgNjU1MDgsIDEyOTQxMSwgMCwgMTIxNDUxLCA4OTM1LCA3ODIzNCwgMTI5MzM3LCAxMjA0NTEsIDAsIDYxNiwgNzQ3NTMsIAorICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCAyMjM2LCAxMjY1NTEsIDEyNDk5MiwgNjA0OCwgNzQ0NjAsIDQyMTEwLCAKICAgICA3Mzk2NSwgMTA4NzAsIDg1NTcsIDExMDU0LCA2ODY2NCwgNzUwNTEsIDk2ODEsIDQ0NzUsIDY3NDI5LCA0MTE0MiwgMjEwMCwgCi0gICAgMTI1MDI0LCAxMjA3MzEsIDYwMzUsIDczNzk2LCA3NjUxLCA2ODQ2LCA2NDQ0MywgOTgzOTU3LCA5ODMyOTYsIDkxNzk4NywgCisgICAgMTI1MDI0LCAxMjA3MzEsIDYwMzUsIDczNzk2LCA3NjUxLCA2ODQ2LCA2NDQ0MywgOTgzOTU3LCAxOTQ5NDEsIDkxNzk4NywgCiAgICAgMCwgMTE4OTY2LCA3NDE0NCwgNDA5OTcsIDY4NDg4LCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDcxMTgyLCAKLSAgICA5ODAwLCA4OTc5LCAwLCAxMzMwNywgNDEwMDAsIDAsIDUxMTQsIDY0ODcsIDMzODYsIDEyOTA5NCwgMTAzNDQsIDAsIDUxMTUsIAotICAgIDUzOTQsIDQzMjQ2LCA3ODI0MywgNTExMywgNjY1MDUsIDQxMjAwLCAxMjg1ODIsIDQ0MjUsIDE5NDY2OSwgMCwgMCwgCi0gICAgNDMwNzQsIDczNzk5LCAxMjkwNzYsIDc4MTQ3LCA1MTEyLCAxMjE3MywgNzg1NDUsIDEyODc3MSwgNjY4MjQsIDY1MzM4LCAKLSAgICA5ODM2NzYsIDAsIDExOTU4MiwgNDQ3NCwgMTI4OTM2LCA0MzA5MywgNDM5NjQsIDE1ODcsIDAsIDEyNzM3MiwgNjQ0NzUsIAotICAgIDExOTIxNywgMTM2OSwgOTgzNjcyLCA5OTU5LCA3OTI3LCA0Mzk2MywgNDU2MCwgMTIwNzkzLCA2NzgxMSwgOTIyNzcsIAotICAgIDk4MzYyMSwgNjQ5NDgsIDQ0MzAsIDQzOTYxLCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCA4MTk0LCA2NTQ2MiwgCi0gICAgMTA2MjYsIDEwOTY1LCAxMjA5MDUsIDg4OTMsIDk4MzMwMywgMTI1NDIsIDAsIDY1MzQxLCA2NzcwMywgNjU4MjksIDc5MjUsIAotICAgIDExOTgyMiwgMTA0NzUsIDExMzgyNSwgMTI3MDExLCAxMzUyLCAxMTA2OSwgNzcwNywgMTI3NTYwLCAxMjY0ODYsIDY1Mjc5LCAKLSAgICAxMjcxMDIsIDY4MjA3LCA3NDk1NiwgNzA5OSwgNjA0MCwgNjc2ODEsIDEwMDcxLCA3ODU1NCwgOTMzNiwgNDM3NTAsIAotICAgIDEyMTA3NCwgODg5OSwgNzc5OCwgNjQ0NzQsIDY0MjU5LCA2OTg3MywgNjUxODgsIDc4MjAsIDQzMDE4LCAxMjcwODIsIAotICAgIDEyODg5OCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3NTA3NSwgNjY4NjYsIDUxMjcsIDExMjg1LCA0MjUwMSwgNTQ5NSwgCi0gICAgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgNTczMCwgMjk5OSwgNjM0MiwgNjg2MzYsIDc0MzA0LCAzNzEsIDY0MzczLCAKLSAgICA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCA3NTAyOCwgMTI4NjAzLCA2MzIzLCAxMjkwNjUsIDgyMjQsIDEyODQxNywgODkzOCwgCi0gICAgNjA0MywgMTI3MzgsIDEyMDY3MSwgOTgzMDc2LCA1MzIxLCA2ODY0NSwgMTk0Nzk4LCAxMjAyNTEsIDI1ODksIDc0MzMyLCAKLSAgICAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDkyOTQwLCAxMTkwNSwgOTgzNjE1LCAwLCAxMjg1MTYsIDEyODE2MywgCi0gICAgNzQ1MTMsIDYwNDksIDAsIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCA5ODM4MjIsIDE1MDMsIDc4MzM2LCAxMjcxNzMsIAotICAgIDcxMzEyLCA1NzMxLCAxMzgxLCAyMzg3LCAxMjY2MTAsIDcwODA4LCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAKLSAgICAwLCA5NjAxLCAyODc5LCA5NjY4LCA5NzY2LCAwLCA1NzI5LCAxMjkxMTAsIDcxMjMwLCA2MDM2LCA2NDg4MSwgNDAyNiwgCi0gICAgOTM2MSwgMTI3MDkxLCAyODg3LCA3MDM4OSwgMzUyNiwgNjI5OCwgMTE5ODUxLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgCi0gICAgMTE4OTY0LCA4NTcyLCA2MDIxLCA3Nzg5NiwgMTI4Mjg4LCA3MTE3NCwgNDMxNTUsIDAsIDcxMTk3LCAzMTQ2LCAxMDk1OSwgCi0gICAgOTQ4MywgODMyMTksIDc3ODkzLCAxMDk4MSwgMTY2LCA5MTc4NDEsIDg2MzUsIDkxNzg0MCwgMTA2MjMsIDQwOCwgMTE5MDU4LCAKLSAgICAxMjc1MDcsIDEzMjk4LCAxMjcyNTMsIDc0MjYsIDQxNjQxLCAxMjcxNywgOTgzNzk1LCA3NjA3LCAxMDYzOSwgNDMzOTYsIAotICAgIDEyOTMwMCwgMTE5MDg5LCA0MTY0MywgNzQxMzQsIDk4MzA1NCwgODcxMywgNDE2NDAsIDEwMjIxLCA0MTY0NSwgNjYyOTMsIAotICAgIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgNjgyNTUsIDc3OTAxLCAzNDcyLCA4Njk3LCAwLCAxMjA5MzYsIAotICAgIDEyMTA2OSwgMCwgMTE4ODU5LCAwLCA1ODA5LCAxOTUwLCAxMTkzNTYsIDkyNDMyLCA2ODMzOSwgMTI4OTQzLCA0MjEzNiwgCi0gICAgMTIxNDQwLCAwLCAwLCAwLCAzMjQ3LCA5MjQwMiwgNjUwMTcsIDEyODc5NCwgNjg0MjgsIDY2NjY4LCAwLCAxMjExMTIsIAotICAgIDEwOTgzLCAwLCAxMjg3ODcsIDAsIDQxNTY3LCAxMTk4NTIsIDAsIDAsIDc4NDQ2LCAxMTk4NTMsIDEyNzkyMiwgMCwgODI4NSwgCi0gICAgMTI2NTE2LCA0NTA5LCAxMjEwNDMsIDY2NDcxLCAxMjIxNiwgMTI4ODA2LCA0MDk4OCwgODMyMjEsIDc0ODA5LCA0MTcyNywgCi0gICAgMCwgNDI4NDgsIDIzOTYsIDEyODA4MywgMTk0ODkyLCA3NDAxOCwgOTE3NTM4LCA2NDk0MCwgNzAyNywgMzg4NiwgMCwgCisgICAgOTgwMCwgODk3OSwgMTE5MTU2LCAxMzMwNywgNDEwMDAsIDAsIDUxMTQsIDY0ODcsIDMzODYsIDcwNzMwLCAxMDM0NCwgCisgICAgMTI1MDMyLCA1MTE1LCA1Mzk0LCA0MzI0NiwgNzgyNDMsIDUxMTMsIDY2NTA1LCA0MTIwMCwgMTI4NTgyLCA0NDI1LCAKKyAgICAxOTQ2NjksIDEwMDQwNSwgMCwgNDMwNzQsIDczNzk5LCAxMjkwNzYsIDc4MTQ3LCA1MTEyLCAxMjE3MywgMzQ0NiwgCisgICAgMTI4NzcxLCA2NjgyNCwgNjUzMzgsIDEyODk2OSwgMCwgMTE5NTgyLCA0NDc0LCAxMjg5MzYsIDQzMDkzLCA2MjgyLCAxNTg3LCAKKyAgICAwLCAxMDA1NTQsIDY0NDc1LCAxMTkyMTcsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgNDM5NjMsIDQ1NjAsIDY2OTEwLCAKKyAgICA2NzgxMSwgOTIyNzcsIDEyMDYxNCwgNjQ5NDgsIDQ0MzAsIDQzOTYxLCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCAKKyAgICA4MTk0LCA2NTQ2MiwgMTA2MjYsIDEwOTY1LCAxMjA5MDUsIDg4OTMsIDk4MzMwMywgMTI1NDIsIDE5NDg1NywgNjUzNDEsIAorICAgIDY3NzAzLCA2NTgyOSwgNzkyNSwgMTE5ODIyLCAxMDQ3NSwgMTEzODI1LCAxMjcwMTEsIDEzNTIsIDExMDY5LCA3NzA3LCAKKyAgICAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIDEwMDQwNywgNjgyMDcsIDc0OTU2LCA3MDk5LCA2MDQwLCA2NzY4MSwgMTAwNzEsIAorICAgIDc4NTU0LCA5MzM2LCA0Mzc1MCwgMTIxMDc0LCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCA2NTE4OCwgNzgyMCwgCisgICAgNDMwMTgsIDEwMDQxMCwgMTI4ODk4LCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc1MDc1LCA2Njg2NiwgNTEyNywgCisgICAgMTEyODUsIDQyNTAxLCA1NDk1LCA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgCisgICAgNzQzMDQsIDM3MSwgNjQzNzMsIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDc1MDI4LCAxMjg2MDMsIDYzMjMsIDEyOTA2NSwgCisgICAgODIyNCwgMTI4NDE3LCA4OTM4LCA2MDQzLCAxMjczOCwgMTIwNjcxLCA5ODMwNzYsIDUzMjEsIDY4NjQ1LCA2NTUzLCAKKyAgICAxMjAyNTEsIDI1ODksIDc0MzMyLCAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDkyOTQwLCAxMTkwNSwgCisgICAgOTgzNjE1LCAwLCAxMjg1MTYsIDEyNzAxNywgNzQ1MTMsIDYwNDksIDEyODIzOSwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIAorICAgIDEyODEyMCwgMTUwMywgNzI3NjksIDEyNzE3MywgNzEzMTIsIDU3MzEsIDEzODEsIDIzODcsIDEyNjYxMCwgNzA4MDgsIAorICAgIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIDAsIDk2MDEsIDI4NzksIDk2NjgsIDk3NjYsIDAsIDU3MjksIAorICAgIDEyOTExMCwgNzEyMzAsIDYwMzYsIDY0ODgxLCA0MDI2LCA5MzYxLCAxMjcwOTEsIDI4ODcsIDcwMzg5LCAzNTI2LCA2Mjk4LCAKKyAgICAxMTk4NTEsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAxMTg5NjQsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDcxMTc0LCAKKyAgICA0MzE1NSwgOTgzODE2LCA3MTE5NywgMzE0NiwgMTA5NTksIDk0ODMsIDgzMjE5LCA3Nzg5MywgMTA5ODEsIDE2NiwgCisgICAgOTE3ODQxLCA4NjM1LCAxMjg3MTQsIDEwNjIzLCA0MDgsIDEwMDQ4MCwgMTI3NTA3LCAxMzI5OCwgMTI2NTE4LCA3NDI2LCAKKyAgICA0MTY0MSwgMTI3MTcsIDEyMDY1OCwgNzYwNywgMTA2MzksIDQzMzk2LCAxMjkzMDAsIDExOTA1MywgNDE2NDMsIDc0MTM0LCAKKyAgICA5ODMwNTQsIDg3MTMsIDQxNjQwLCAxMDIyMSwgOTg1MiwgNjYyOTMsIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgCisgICAgNjgyNTUsIDc3OTAxLCAzNDcyLCA4Njk3LCAwLCAxMjA5MzYsIDEyMTA2OSwgMTI5MTY4LCAxMTg4NTksIDEyNTIwMywgCisgICAgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNjgzMzksIDEyODk0MywgNDIxMzYsIDEyMTQ0MCwgMCwgMCwgMCwgMzI0NywgCisgICAgOTI0MDIsIDY1MDE3LCAxMjg3OTQsIDY4NDI4LCA2NjY2OCwgMTk0ODg0LCAxMjExMTIsIDEwOTgzLCA5MTc3NjcsIAorICAgIDEyODcwMCwgMCwgNDE1NjcsIDExOTg1MiwgMCwgMCwgNzg0NDYsIDExOTg1MywgMTI3OTA3LCAwLCA4Mjg1LCAxMjY1MTYsIAorICAgIDQ1MDksIDEyMTA0MywgNjY0NzEsIDEyMjE2LCAxMjg4MDYsIDQwOTg4LCA4MzIyMSwgNzQ4MDksIDQxNzI3LCA5MTc4MjUsIAorICAgIDQyODQ4LCAyMzk2LCAxMjgwODMsIDE5NDg5MiwgNzQwMTgsIDkxNzUzOCwgNjQ5NDAsIDcwMjcsIDM4ODYsIDk4MzI1OSwgCiAgICAgNDI0NTcsIDkyODg4LCA4MzI5OSwgOTk2LCA2ODEyMywgOTQwNTgsIDQyNDksIDkyNDEwLCA2OTY1MCwgMTE3MDcsIDgyMjIsIAotICAgIDczODI1LCA3OTM5LCA3MTIxMywgOTI0NjAsIDEyNzgwMSwgMTIxNDA4LCAxMjgzNTksIDg1MzQsIDY5ODUzLCA0MDk4MywgMCwgCi0gICAgMTIxNDIxLCAwLCA3MjAxLCAxMjU2MSwgMTIwODY2LCA0MjM3MSwgMTI1NTgsIDE1NDAsIDkxNzU0OSwgMTAwNTIsIDQwOTgyLCAKLSAgICAxMTk4NDEsIDAsIDE0ODgsIDcxMTc3LCAwLCAxOTQ4MzEsIDkxNzU1OSwgMTI4NDAxLCAwLCAxNTYzLCAxMjgwMzQsIDk2MTksIAotICAgIDEyMDg0MCwgOTE3OTA1LCAxMjA5NTQsIDEyNzg3MiwgNzEzNjMsIDM1NjAsIDc3OTcsIDYwNzAsIDEwMDA2LCAxMjg5MjIsIAotICAgIDI5MjIsIDYwODIsIDcwMTQ3LCA2NTAwOSwgOTgzOTQyLCAxMjU2NywgNjY3MTIsIDAsIDQxNDEyLCAxMjgxMzEsIDExOTU5MSwgCi0gICAgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgODM0NjIsIAotICAgIDExOTEzMSwgMCwgMCwgNjc4MjYsIDQzMDg1LCA2MDU3LCA1MDgsIDkzOTY4LCA5Mjk4OSwgNjc5NjgsIDAsIDkyMTk4LCAwLCAKLSAgICAxMjg4MzEsIDYzOCwgNjA4MywgMTE5MDcyLCAxMjQ5NTAsIDAsIDIzMDUsIDc4MzQ4LCA2ODA5NiwgOTE3NzcyLCA2MDU2LCAKLSAgICA2NjU5LCA2Nzk2OSwgOTgzMjkwLCA2MDg1LCAwLCAwLCAzOTE1LCA0MTYzNCwgMCwgNDE2MzksIDYzOTEyLCAxMTk0MSwgCi0gICAgOTgzNzgzLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDQzNzUzLCAzMjQ5LCAxNzY4LCA5Mzk4MiwgMTIzMjgsIDUwMSwgCi0gICAgOTM5ODUsIDEwNjAxLCAwLCA1ODMsIDAsIDQxOTc3LCAwLCA2NjAwNCwgNjY0MTYsIDY1MDUsIDc0MDEwLCA5ODMyNTAsIAotICAgIDEzMDY0LCA1NTI2NywgMTE5MTEzLCA2NTAwLCA1NTI2LCA2NTA0OSwgMCwgMTI5OTAsIDAsIDkyMzc2LCAxMjc0NSwgOTY3OCwgCi0gICAgMTIxMTA4LCAxMjA1ODcsIDk4NjksIDgzMTUwLCAxNzcxLCAxMjg5NjUsIDg5MzYsIDkyOTY0LCAwLCA0MjA4LCA3ODM0MSwgCi0gICAgNzg1NjcsIDc4MzQyLCA2Nzc0MiwgOTgzMjA4LCA3NDEwMSwgMTI4NjA1LCAxMTc2MiwgMCwgNzAwOTYsIDY4MzUsIDY4MDEwLCAKLSAgICA2NjQ3NSwgMTIwMjYwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAxMTk4MzAsIDUwNjksIDczNzM2LCA1MDI4LCA5ODk3LCAKLSAgICA5Mjc3NCwgNzM3MzksIDUwMjYsIDk4MzI1NSwgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCAKLSAgICA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCAKLSAgICA2ODQyNCwgNDEwNzAsIDc3OTAzLCA3NjU4LCAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgCi0gICAgMTcxNiwgOTgzNjc5LCAxMDYwMCwgNzg1NTgsIDYyMCwgNDEwMDEsIDYwMjgsIDcwNDQ1LCA0Mjg5MiwgMCwgNzExMTYsIAotICAgIDUwMjQsIDc0OTQ1LCA0MTAwMywgNjgxMzcsIDUwMjUsIDY5ODkyLCA5ODMyMDksIDc1MDM5LCAxMTg4ODUsIDEyNzk1NiwgCisgICAgNzM4MjUsIDc5MzksIDcxMjEzLCA5MjQ2MCwgNzI3NDcsIDY3MTMxLCAxMjgzNTksIDg1MzQsIDY5ODUzLCA0MDk4MywgMCwgCisgICAgMTIxNDIxLCAwLCA3MjAxLCAxMjU2MSwgMTIwODY2LCA0MjM3MSwgMTE4NDQsIDE1NDAsIDE5NDgyNywgMTAwNTIsIDQwOTgyLCAKKyAgICAxMTk4NDEsIDAsIDE0ODgsIDcxMTc3LCAwLCAxOTQ4MzEsIDkxNzU1OSwgMTI4NDAxLCAxOTQ5MjAsIDE1NjMsIDEyODAzNCwgCisgICAgOTYxOSwgMTIwODQwLCAxMjk0MTYsIDEyMDk1NCwgMTIxNDYwLCA3MTM2MywgMzU2MCwgNzc5NywgNjA3MCwgMTAwMDYsIAorICAgIDEyODkyMiwgMjkyMiwgNjA4MiwgNzAxNDcsIDY1MDA5LCA5ODM5NDIsIDEyNTY3LCA2NjcxMiwgMCwgNDE0MTIsIDc4NjUxLCAKKyAgICAxMTk1OTEsIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgNjY3NjQsIDIwMzIsIDc4MzU0LCAKKyAgICA4MzQ2MiwgMTE5MTMxLCAwLCAwLCA2NzgyNiwgNDMwODUsIDYwNTcsIDUwOCwgOTM5NjgsIDkyOTg5LCA2Nzk2OCwgCisgICAgOTE3OTQxLCA5MjE5OCwgMCwgMTI4ODMxLCA2MzgsIDYwODMsIDExOTA3MiwgMTI0OTUwLCA3MDE0NCwgMjMwNSwgNzgzNDgsIAorICAgIDY4MDk2LCA5MTc3NzIsIDYwNTYsIDY2NTksIDY3OTY5LCA5ODMyOTAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAKKyAgICAxMjgyMjcsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIDk4Mzc4MywgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgCisgICAgMzI0OSwgMTc2OCwgOTM5ODIsIDEyMzI4LCA1MDEsIDkzOTg1LCAxMDYwMSwgOTgzMjk0LCA1ODMsIDExOTM1MiwgNDE5NzcsIAorICAgIDAsIDY2MDA0LCA2NjQxNiwgNjUwNSwgNzQwMTAsIDkxNzgzMywgMTMwNjQsIDU1MjY3LCAxMTkxMTMsIDY1MDAsIDU1MjYsIAorICAgIDY1MDQ5LCAxMjgwMjgsIDEyOTkwLCA5ODM5MDEsIDkyMzc2LCAxMjc0NSwgOTY3OCwgMTIxMTA4LCAxMjA1ODcsIDk4NjksIAorICAgIDgzMTUwLCAxNzcxLCAxMjg5NjUsIDg5MzYsIDkyOTY0LCAxMjUyNzMsIDQyMDgsIDc4MzQxLCA3ODU2NywgNzgzNDIsIAorICAgIDY3NzQyLCA5ODMyMDgsIDc0MTAxLCAxMjg2MDUsIDExNzYyLCAxMjkzMTcsIDcwMDk2LCA2ODM1LCA2ODAxMCwgNjY0NzUsIAorICAgIDEyMDI2MCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMTE5ODMwLCA1MDY5LCA3MzczNiwgNTAyOCwgOTg5NywgOTI3NzQsIAorICAgIDczNzM5LCA1MDI2LCA5ODMyNTUsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgNDE5MDEsIAorICAgIDc0NzkwLCA3ODEzOCwgMTE5MzYxLCA5ODM1NjQsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgNjg0MjQsIAorICAgIDQxMDcwLCA3NzkwMywgNzY1OCwgMzQ0MCwgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIDE3MTYsIAorICAgIDk4MzY3OSwgMTA2MDAsIDc4NTU4LCA2MjAsIDQxMDAxLCA2MDI4LCA3MDQ0NSwgNDI4OTIsIDk4MzMxMywgNzExMTYsIAorICAgIDUwMjQsIDc0OTQ1LCA0MTAwMywgNjgxMzcsIDUwMjUsIDcyOTcsIDkxNzgyNCwgNzUwMzksIDExODg4NSwgMTI3OTU2LCAKICAgICA2NTU1NywgMCwgNzQ1NDEsIDEyODkyNCwgMTE1OTksIDEyODIwOSwgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgMTE1OTcsIAogICAgIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzAyNzMsIDExNTY5LCA2NTI3NSwgODkwNiwgNDM5NDUsIDU3NTUsIDI2MzYsIAogICAgIDcxMjAzLCAxMDgxNSwgMTE2MTksIDIzMDEsIDQxNTQwLCA3ODE1LCAxMTYxNiwgNjk3OSwgMTIwODAsIDc3MjEsIDExNjA0LCAKLSAgICA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCA5MTc3NjMsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCA2Njg4NiwgCi0gICAgNjQxMzEsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCAKLSAgICA0MzYwNiwgNzExODUsIDY4Mzk3LCA2NjM3MCwgNzQyODIsIDQyMzM1LCA2OTc4NiwgNzI0MjEsIDgyOTk4LCA3NTM4LCAKLSAgICA1MzE1LCA4MzM2NywgNDI0OTEsIDkyOTAxLCA0MjA2MSwgMTI4MDAyLCA0NTc2LCAwLCA2ODQxNywgNDM4MDksIDQyNzcsIDAsIAotICAgIDM1NjMsIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCA3ODIwOSwgMTIwMjQ0LCA2Mzk4OSwgCi0gICAgMzk1OCwgMTIxMzIsIDE4NDksIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgCi0gICAgNDExNjAsIDEyMTQ4MSwgMzYxOCwgNzgzMzgsIDE5NDkyNCwgNDMzMDAsIDUxNTYsIDkyNjI5LCA3MDM1MCwgOTI5LCA2ODI3LCAKLSAgICA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAyMjE1LCA0MTY2MiwgOTQwMTAsIDExOTI2MiwgMCwgCi0gICAgMTI4ODI0LCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIDQyNTc4LCA3MTA0OSwgNDE2NjEsIDc4MzUxLCAKLSAgICA0MzI2NywgOTM1NiwgMCwgMTk0ODgwLCA5ODM0MDEsIDEyODYsIDEwMTY2LCA5ODMxMTcsIDAsIDY0NzA3LCAxMjg5MjUsIAotICAgIDQyNDc2LCA3NzMwLCAxMTE1NiwgMTI4NTIyLCA0MjQ4MywgMTI5MDgzLCA3NDk0MCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgCi0gICAgNDMzNTksIDAsIDY2NDEsIDUyNSwgNDE2MjcsIDkxNzkyMywgODc2MywgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgCi0gICAgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIDEyODMyMSwgODU4NywgCi0gICAgMTIxMzE4LCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCAKLSAgICA4MzE1MywgMTEzNzQsIDc4MDQzLCAxMDg4OSwgNDM0NjEsIDc3NTcsIDQyNDYyLCAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgCi0gICAgMjcxOCwgNDE2OCwgNDM5MDQsIDEzMzA4LCAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIDQzOTAyLCA3Nzk0OCwgMzYzLCAKLSAgICAxMTAxNSwgNDM5MDMsIDc3OTQ0LCA0Mzg1NywgODMwNDksIDY2NjkyLCAxMjA4MjYsIDAsIDY2NDkyLCA2NTkzLCA2NDYyNSwgCi0gICAgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDAsIDEwMDEzLCA2NDQzNCwgNzUwMTAsIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDY0MzgyLCAKLSAgICAxMjgzMywgNzc4MzAsIDAsIDEyOTcsIDQxNjMwLCA2MzAsIDEyMDk2MCwgOTgzOTIzLCAxMjA3NzQsIDcwMTY1LCAxMDQzLCAKLSAgICA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjQ5NDUsIDMxMywgMTIxNDgzLCA0MTg4MSwgMTk0NjU4LCA0MjMxMSwgNzQ0NSwgCi0gICAgNDM5MDYsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCAKLSAgICA5NDIyLCA0Mzg5NCwgNjY0OTUsIDY5OTkwLCA5ODM4ODUsIDkyOTkwLCA0MTcxOCwgMTA3MDcsIDE2MDMsIDk4MzcwMywgCi0gICAgMTE5MDAzLCAwLCA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCA3MTA2NywgMTA1NDYsIDc0MjEwLCA3ODEwMSwgCi0gICAgMTE2MDAsIDc3OTYxLCAyNzk3LCA0MzkyNCwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgCi0gICAgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgMTI3NTI4LCAxMTE5OCwgNjY4MjEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIAotICAgIDQyNDMzLCA3Nzk2NCwgNzYwMywgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAKLSAgICAzNjIsIDkyNDM5LCA0Mzg5MCwgODAzNywgNDM3NzcsIDExNTM1LCAxMjY1MzksIDQzODkzLCA1MTg1LCA3MTY1LCA1NTIxLCAKLSAgICAxMDMzNCwgMjA5MywgNzEzMjksIDEwMzAyLCAxMjUxMzEsIDEwMTA0LCAxMDI3LCA1MTgxLCAxMjg0MzUsIDUxMTcsIAotICAgIDEwNTIzLCAxNDQ2LCA0MjMyMCwgNjg0NSwgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgCi0gICAgNDI4OTgsIDM0MDUsIDAsIDE5NDY0NCwgNTUyMywgNDM5MTUsIDQyNjIwLCA5MjQ0NywgNzQ5NDMsIDk1NDksIDAsIDEwNTQ5LCAKLSAgICA0MzkyMywgOTY2MSwgNDI5MzMsIDc0ODg0LCA3NzkxMCwgNzgwNjgsIDQzOTIxLCAwLCA3MTE4NCwgOTgzMDcwLCA0MTk5MSwgCi0gICAgOTgzODkzLCAwLCA3NjMwLCA5ODQ2LCA3Njg0LCAxMDM1MCwgMTI4NDUzLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCAKLSAgICA3Nzk4MCwgNjY0ODUsIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA0MzkwOSwgNzQ0MzgsIDEyMzMwLCAxMjgyNzIsIDAsIAotICAgIDQyNDE3LCA0MjM4MywgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNDM5MDgsIDc0NDQzLCAxMjc4OTQsIDEwMjA5LCAKLSAgICA4MzEzLCA0MTk1LCA3NDQzNSwgMTMxNiwgNjY2OTAsIDc1MDcyLCA2MzMyLCA2NDg5NCwgOTgzMTU2LCA2NTg3MSwgNjcyNTAsIAotICAgIDE3MzYsIDk4MzY4NCwgMzkwMSwgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODI0MSwgNjkzLCA5MTMwLCAKLSAgICAzMTQsIDY0MTQ5LCA0MjQyMCwgMTE5NDksIDEyNzIwMCwgMTIwMTUyLCAxMTAyNiwgMTIwNTE2LCA1MzMyLCA2OTQwLCAKLSAgICA2NDE1NCwgMTI2MzUsIDEyNDk4MCwgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDgzMzA3LCA3ODg0MCwgNzEzNjgsIAotICAgIDEyODI0LCA0MzkxMSwgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgCi0gICAgNjQ1NjAsIDM3NTcsIDAsIDAsIDc0MzAyLCA2NTg2OSwgNzM3NjAsIDI1NjksIDc0OTc2LCAyMzI2LCA2NTc0MCwgMjU2NSwgCi0gICAgNDI0NTksIDc1OTYsIDc5MjEsIDk4Mzg2OCwgNzM4NjIsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCA5MjYyMiwgCi0gICAgNDA0NCwgOTI2NDYsIDQzOTUzLCAxMjIzMywgOTgzODcxLCAxMDIzLCA0NzQsIDE5NDk0MCwgMTE5ODE4LCAwLCAwLCAKKyAgICA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCAxMjY0NjYsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCA2Njg4NiwgCisgICAgNjQxMzEsIDY2MTYsIDEyMDc5NiwgMTE4ODc1LCAxMDk1MywgMzkxLCA5ODMxMDMsIDY5Nzg1LCA0ODIsIDQyMjk2LCAKKyAgICAxMTU4OCwgMTI4NTkxLCA0MzYwNiwgNzExODUsIDY4Mzk3LCA2NjM3MCwgNzQyODIsIDQyMzM1LCA2OTc4NiwgMTIwNTAsIAorICAgIDgyOTk4LCA3NTM4LCA1MzE1LCA4MzM2NywgNDI0OTEsIDkyOTAxLCA0MjA2MSwgMTI4MDAyLCA0NTc2LCAwLCA2ODQxNywgCisgICAgNDM4MDksIDQyNzcsIDAsIDM1NjMsIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCAKKyAgICA3ODIwOSwgMTIwMjQ0LCA2Mzk4OSwgMzk1OCwgMTIxMzIsIDE4NDksIDEyNzMzOCwgOTkyMSwgNDI0NTEsIDQyNTMsIAorICAgIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMTIxNDgxLCAzNjE4LCA3ODMzOCwgOTM5NTYsIDQzMzAwLCAKKyAgICA1MTU2LCA5MjYyOSwgNzAzNTAsIDkyOSwgNjgyNywgNDIwMzUsIDQyNDM3LCAxNTU1LCA2Nzg0NywgODY5MSwgNjY0MzUsIAorICAgIDIyMTUsIDQxNjYyLCA5NDAxMCwgMTE5MjYyLCAwLCAxMjg4MjQsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzczNCwgCisgICAgNDI1NzgsIDcxMDQ5LCA0MTY2MSwgNzgzNTEsIDQzMjY3LCA5MzU2LCAwLCAxOTQ4ODAsIDk4MzQwMSwgMTI4NiwgMTAxNjYsIAorICAgIDk4MzExNywgMCwgNjQ3MDcsIDEyODkyNSwgNDI0NzYsIDc3MzAsIDExMTU2LCAxMjg1MjIsIDQyNDgzLCAxMjkwODMsIAorICAgIDc0OTQwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCA0MzM1OSwgNzI4MjcsIDY2NDEsIDUyNSwgNDE2MjcsIDkxNzkyMywgODc2MywgCisgICAgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIAorICAgIDQzNzcsIDg1NTksIDEyODMyMSwgODU4NywgMTIxMzE4LCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgMTU3NiwgCisgICAgNzczNSwgOTIzOTgsIDAsIDczODQwLCA4MzE1MywgMTEzNzQsIDc4MDQzLCAxMDg4OSwgNDM0NjEsIDc3NTcsIDQyNDYyLCAKKyAgICAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgMjcxOCwgNDE2OCwgNDM5MDQsIDEzMzA4LCAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIAorICAgIDQzOTAyLCA3Nzk0OCwgMzYzLCAxMTAxNSwgNDM5MDMsIDc3OTQ0LCA0Mzg1NywgODMwNDksIDY2NjkyLCAxMjA4MjYsIDAsIAorICAgIDY2NDkyLCA2NTkzLCA2NDYyNSwgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDExMzc5NCwgMTAwMTMsIDY0NDM0LCA3NTAxMCwgCisgICAgMTI3MDk1LCA5NDkyLCAxMTc4MiwgOTIxMiwgMTI4MzMsIDc3ODMwLCA3MDY5MiwgMTI5NywgNDE2MzAsIDYzMCwgMTIwOTYwLCAKKyAgICA5ODM5MjMsIDEyMDc3NCwgNzAxNjUsIDEwNDMsIDQzNjUyLCA2NjIyMywgMTAwOTAsIDEyNTI0OSwgMTI0OTQ1LCAzMTMsIAorICAgIDEyMTQ4MywgNDE4ODEsIDE5NDU3NSwgNDIzMTEsIDc0NDUsIDQzOTA2LCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIAorICAgIDk0MDUsIDExMjY4LCA0MjkxOSwgOTM5OCwgODUyNiwgOTM5OSwgOTQyMiwgNDM4OTQsIDY2NDk1LCA2OTk5MCwgOTgzODg1LCAKKyAgICA5Mjk5MCwgNDE3MTgsIDEwNzA3LCAxNjAzLCA5ODM3MDMsIDExOTAwMywgMTAxMDYxLCA2MzEsIDc3OTUyLCA2OTcwMywgCisgICAgMTMxNjEsIDY1MjcyLCA3MTA2NywgMTA1NDYsIDc0MjEwLCA3ODEwMSwgMTE2MDAsIDc3OTYxLCAyNzk3LCA0MzkyNCwgCisgICAgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgCisgICAgMTI3NTI4LCAxMTE5OCwgNjY4MjEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIDQyNDMzLCA3Nzk2NCwgNzYwMywgCisgICAgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAzNjIsIDkyNDM5LCA0Mzg5MCwgCisgICAgODAzNywgNDM3NzcsIDExNTM1LCAxMjY1MzksIDQzODkzLCA1MTg1LCA3MTY1LCA1NTIxLCAxMDMzNCwgMjA5MywgNzEzMjksIAorICAgIDEwMzAyLCAxMjUxMzEsIDEwMTA0LCAxMDI3LCA1MTgxLCAxMjg0MzUsIDUxMTcsIDEwNTIzLCAxNDQ2LCA0MjMyMCwgNjg0NSwgCisgICAgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNDI4OTgsIDM0MDUsIDAsIDE5NDY0NCwgCisgICAgNTUyMywgNDM5MTUsIDQyNjIwLCA5MjQ0NywgNzQ5NDMsIDk1NDksIDAsIDEwNTQ5LCA0MzkyMywgOTY2MSwgNDI5MzMsIAorICAgIDc0ODg0LCA3NzkxMCwgNzgwNjgsIDQzOTIxLCAwLCA3MTE4NCwgOTgzMDcwLCA0MTk5MSwgMTI5MzY5LCAwLCA3NjMwLCAKKyAgICA5ODQ2LCA3Njg0LCAxMDM1MCwgMTI4NDUzLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCA3Nzk4MCwgNjY0ODUsIAorICAgIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA0MzkwOSwgNzQ0MzgsIDEyMzMwLCAxMjgyNzIsIDAsIDQyNDE3LCA0MjM4MywgCisgICAgNjY2MzAsIDM0MDcsIDYyOTMsIDAsIDY2MjUyLCA0MzkwOCwgNzQ0NDMsIDEyNzg5NCwgMTAyMDksIDgzMTMsIDQxOTUsIAorICAgIDc0NDM1LCAxMzE2LCA2NjY5MCwgNzUwNzIsIDYzMzIsIDY0ODk0LCA5ODMxNTYsIDY1ODcxLCA2NzI1MCwgMTczNiwgCisgICAgMTIxMDA2LCAzOTAxLCAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4MjQxLCA2OTMsIDkxMzAsIDMxNCwgCisgICAgNjQxNDksIDQyNDIwLCAxMTk0OSwgMTI3MjAwLCAxMjAxNTIsIDExMDI2LCAxMjA1MTYsIDUzMzIsIDY5NDAsIDY0MTU0LCAKKyAgICAxMjYzNSwgMTI0OTgwLCA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgODMzMDcsIDc4ODQwLCA3MTM2OCwgMTI4MjQsIAorICAgIDQzOTExLCA0NTI4LCA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCA2NDU2MCwgCisgICAgMzc1NywgMCwgOTQwNTksIDc0MzAyLCA2NTg2OSwgNzM3NjAsIDI1NjksIDc0OTc2LCAyMzI2LCA2NTc0MCwgMjU2NSwgCisgICAgNDI0NTksIDc1OTYsIDc5MjEsIDEyNjU2NywgNzM4NjIsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCA5MjYyMiwgCisgICAgNDA0NCwgOTI2NDYsIDQzOTUzLCAxMjIzMywgMTEzODE0LCAxMDIzLCA0NzQsIDEyNTI3MiwgMTE5ODE4LCA5ODM3NDQsIDAsIAogICAgIDQyNDg3LCA2NTU1NiwgMTIxMTY4LCAxMjc4NjYsIDQyMjk1LCAxMjgyMDMsIDEyMTQ3NCwgNzEzMjIsIDkyNTE4LCAyMjIyLCAKLSAgICA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDk4MzQ1NSwgMCwgNTUyNTEsIDEwMTE4LCAKLSAgICAzMTMzLCAxMjc3NzEsIDcxODU3LCAxMjEyMDEsIDk2MTAsIDgwNjgsIDgxOTcsIDkxNzU0NSwgNjk5LCAwLCA0MTY2NSwgCi0gICAgNTg2OCwgMTI4NzEwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgCi0gICAgNjU1ODMsIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCA3ODEyOSwgNjg3NTEsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIAotICAgIDE5MzcsIDk4Mzc1MSwgNjg0ODEsIDQxODM1LCA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDc3OTY1LCAxMTk4MzcsIDExMDE3LCAKLSAgICAxMjA2MDEsIDAsIDI5MywgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCA0MzQyMiwgMTA1NzksIDg1NjAsIAotICAgIDcxMzUwLCA2NTQxMywgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAxMjg5NjcsIDE3MTMsIDc3OTY5LCAKLSAgICAxMjEyOTIsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIDY0MTA1LCAxMjA1NjUsIDQyNDgxLCAKLSAgICAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAxMjUwOTUsIDY0MTAzLCA5NjksIDAsIDkzNTIsIDcxNDgxLCA2MTY1LCAKLSAgICA2NDEwMCwgOTE3ODE5LCA2NjMyLCA3Mzg2MSwgNDI0MDIsIDc0MzI3LCA3ODA2LCAxMTM3NjIsIDg5MTQsIDY2OTA4LCAKLSAgICAxMjQ5NTQsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgNjc4NDksIDU3NDYsIDY2NDA4LCAKLSAgICAwLCA2NDQxNiwgNDI0MjIsIDgzNTA2LCA5ODMwNDYsIDcwODIsIDczNzc1LCAzMzgsIDUwNTksIDEyMTM2OSwgODM1MjQsIAotICAgIDQyMzI4LCAxMDc2NywgMTI4ODYyLCA4MTE1LCA4MzQ1NCwgNzQ3NTgsIDAsIDgyMjcsIDIwNzMsIDEyMTgsIDkxNzc5MCwgCi0gICAgOTgzMjMwLCA2NTg0OCwgOTI4ODQsIDgzNTE3LCA2OTg2MywgMTI4MzI4LCAxMjY5ODcsIDQ0ODYsIDEyODA4MiwgOTE3Nzk2LCAKLSAgICAwLCAxMDkyNSwgMCwgODM1MTUsIDgzNTA3LCAxMjQ5NTIsIDQyMzA5LCAxMDI1NywgNjUxOTEsIDEwMjczLCA3NjY4LCAKLSAgICAxMDMwNSwgNDI0NjEsIDc0ODgyLCA0MjM0OSwgODgzMiwgNzgwNTEsIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCAKLSAgICA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDExOTIxNCwgNDI0MjksIDYzNzcsIDQyMzE2LCAxMTkwMjYsIAotICAgIDM2NjksIDM5NjgsIDQyNDY4LCA3MTMxOSwgNjk2NTgsIDAsIDY1NDAyLCAxMTk1ODEsIDE5NDk3MywgMTI4NzQ3LCA2NDkzMywgCi0gICAgMTk0NjI3LCA0MTk2MCwgNjY5OSwgNDI5MDMsIDEyODc1NSwgMTI1MDEzLCA2ODIzLCA0MjM5MSwgMTU4OCwgNDM1MDIsIAotICAgIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIDEyODMzNSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgCi0gICAgNDI0ODAsIDkxNzk0OSwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgNDM5NzUsIDcyNDI3LCAwLCAxMTM4MTYsIDY0NCwgNjU1MDAsIAotICAgIDQxNjU3LCAxMDc3OCwgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNjYyOTYsIAotICAgIDAsIDAsIDQxNTU0LCAwLCA4MjIwLCAxMjg0MzIsIDQxNTU3LCAwLCAxMjg5MzgsIDExMDcwLCAxMTkyMjEsIDUxNTcsIAotICAgIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCA3Mzg4OCwgCi0gICAgNzQzNzcsIDExMDI5LCA2NjY1MSwgOTgzMDY4LCAxMjg0OTIsIDExODkzMCwgNjQ1MjcsIDEyMTM5NSwgNzg3NywgMTI3MjMsIAotICAgIDk4Mzc5OCwgNjg3NzYsIDEyMDA5NiwgNzQ2MDIsIDk5NTUsIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgCi0gICAgMTIxOTAsIDEyMzE5LCA3ODYzMCwgMCwgNzg2MzEsIDk1MDIsIDY1NDI3LCAxMjUwNDgsIDY1NDI0LCAxMjYwNywgMTIwOTY2LCAKLSAgICA5NzM0LCA2NTQyNSwgMCwgMTIxNDMxLCAxMjczNTcsIDc0ODkwLCA3ODgzNiwgMTAxMTIsIDEwODI3LCAxOTQ2MzUsIDk4NjYsIAotICAgIDc0NTI3LCA2NjY3NSwgMTE4ODY3LCA4NjI1LCA2NDM0NiwgMTEyOTAsIDEwNDc3LCA2NzczOCwgODYzNiwgOTgzOTI3LCAKLSAgICA4MzE1LCA2NTQ0NCwgOTgzNzkzLCAxOTUwMTEsIDc0NTk1LCA2MTUyLCA3ODgyMCwgNzM5NDcsIDY2MjksIDEyNTA1NiwgCi0gICAgMTIwMTcxLCAwLCA3NDU4OSwgNDM5OTMsIDEyODM0NiwgNjk3OTAsIDY0NDM1LCA2NDk1NSwgNDM2OTAsIDExMDQ2LCAKLSAgICAxMTQ5MCwgNDI3MzAsIDQ0ODUsIDcxMTI2LCAxMjgxOTQsIDY0OTI2LCAwLCA5ODMxMzMsIDQzODMwLCA1ODY5LCAxMjQzNywgCi0gICAgNDI3MjgsIDAsIDcwNDAsIDM1ODgsIDAsIDEyODI1LCAxMjExNTgsIDAsIDEyNzI1LCA3NDA5MiwgMTI3MTA2LCA3ODYzNCwgCisgICAgNjY0OTksIDEyOTMzNiwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDk4MzIyNiwgMTg1OCwgOTgzNDU1LCAwLCAKKyAgICA1NTI1MSwgMTAxMTgsIDMxMzMsIDEyNjQ5OCwgNzE4NTcsIDEyMTIwMSwgOTYxMCwgODA2OCwgODE5NywgOTE3NTQ1LCA2OTksIAorICAgIDAsIDQxNjY1LCA1ODY4LCAxMjg3MTAsIDkyNjk1LCA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAKKyAgICAwLCAxOTIzLCA2NTU4MywgNjU4MDIsIDkzOTcwLCA2NDU5NywgNDM0NDQsIDc4MTI5LCA2ODc1MSwgOTE3ODM2LCA2NDY0LCAKKyAgICA3MDM2LCAyOTk2LCAxOTM3LCAxMjcwNTAsIDY4NDgxLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCA3Nzk2NSwgCisgICAgMTE5ODM3LCAxMTAxNywgMTIwNjAxLCA5ODMxNjksIDI5MywgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCAKKyAgICA0MzQyMiwgMTA1NzksIDg1NjAsIDcxMzUwLCA2NTQxMywgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAKKyAgICAxMjg5NjcsIDE3MTMsIDc3OTY5LCA5NDAxNywgNzM5NTcsIDExNDA3LCA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgCisgICAgNjQxMDUsIDEyMDU2NSwgNDI0ODEsIDExNzE2LCA2NjQ3MywgNzE3OSwgNDIyODksIDEyNTA5NSwgNjQxMDMsIDk2OSwgMCwgCisgICAgOTM1MiwgNzE0ODEsIDYxNjUsIDY0MTAwLCA5MTc4MTksIDY2MzIsIDcyODI4LCA0MjQwMiwgNzQzMjcsIDc4MDYsIAorICAgIDExMzc2MiwgODkxNCwgNjY5MDgsIDEyNDk1NCwgMzE4MywgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCAKKyAgICA2Nzg0OSwgNTc0NiwgNjY0MDgsIDEyNzQwMiwgNjQ0MTYsIDQyNDIyLCA4MzUwNiwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgCisgICAgMzM4LCA1MDU5LCAxMjEzNjksIDgzNTI0LCA0MjMyOCwgMTA3NjcsIDEyODg2MiwgODExNSwgODM0NTQsIDc0NzU4LCAwLCAKKyAgICA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIDk4MzIzMCwgNjU4NDgsIDkyODg0LCA4MzUxNywgNjk4NjMsIDEyODMyOCwgCisgICAgMTI2OTg3LCA0NDg2LCAxMTk5NzMsIDkxNzc5NiwgMCwgMTA5MjUsIDAsIDgzNTE1LCA4MzUwNywgMTI0OTUyLCA0MjMwOSwgCisgICAgMTAyNTcsIDY1MTkxLCAxMDI3MywgNzY2OCwgMTAzMDUsIDQyNDYxLCA3NDg4MiwgNDIzNDksIDg4MzIsIDc4MDUxLCAKKyAgICA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAxMTkyMTQsIAorICAgIDQyNDI5LCA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAxMjgxNzAsIAorICAgIDY1NDAyLCAxMTk1ODEsIDE5NDk3MywgMTI4NzQ3LCA2NDkzMywgMTk0NjI3LCA0MTk2MCwgNjY5OSwgNDI5MDMsIDEyODc1NSwgCisgICAgMTI1MDEzLCA2ODIzLCA0MjM5MSwgMTU4OCwgNDM1MDIsIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIAorICAgIDEyMTE0NSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgNDI0ODAsIDEyOTAzMSwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgCisgICAgNDM5NzUsIDcyNDI3LCAwLCAxMTM4MTYsIDY0NCwgNjU1MDAsIDQxNjU3LCAxMDc3OCwgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAKKyAgICAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNjYyOTYsIDAsIDAsIDQxNTU0LCAwLCA4MjIwLCAxMjg0MzIsIDQxNTU3LCAKKyAgICA5ODM4ODIsIDEyODkzOCwgMTEwNzAsIDExOTIyMSwgNTE1NywgNDAyMCwgNzM4NTgsIDQxNTU1LCA5NTE0LCA2NDgxOCwgCisgICAgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDczODg4LCA3NDM3NywgMTEwMjksIDY2NjUxLCAxMjczNDYsIAorICAgIDEyODQ5MiwgMTE4OTMwLCA2NDUyNywgMTIxMzk1LCA3ODc3LCAxMjcyMywgOTgzNzk4LCA2ODc3NiwgMTIwMDk2LCA3Mzk1NCwgCisgICAgOTk1NSwgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAxMjE5MCwgMTIzMTksIDc4NjMwLCA3MTI3MCwgCisgICAgNzg2MzEsIDk1MDIsIDY1NDI3LCAxMjUwNDgsIDY1NDI0LCAxMjYwNywgMTIwOTY2LCA5NzM0LCA2NTQyNSwgOTIyMDcsIAorICAgIDc4ODM0LCAxMjczNTcsIDc0ODkwLCA3MjgyMiwgMzQ0OCwgMTA4MjcsIDE5NDYzNSwgOTg2NiwgNzQ1MjcsIDY2Njc1LCAKKyAgICAxMTg4NjcsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgMTA0NzcsIDY3NzM4LCA4NjM2LCA5ODM5MjcsIDgzMTUsIDY1NDQ0LCAKKyAgICA5ODM3OTMsIDE5NTAxMSwgNzQ1OTUsIDYxNTIsIDc4ODIwLCA3Mzk0NywgNjYyOSwgMTI1MDU2LCAxMjAxNzEsIDAsIAorICAgIDc0NTg5LCA0Mzk5MywgMTI4MzQ2LCA2OTc5MCwgNjQ0MzUsIDY0OTU1LCA0MzY5MCwgMTEwNDYsIDExNDkwLCA0MjczMCwgCisgICAgNDQ4NSwgNzExMjYsIDEyNjU4OCwgNjQ5MjYsIDEyMDE2OCwgOTgzMTMzLCA0MzgzMCwgNTg2OSwgMTI0MzcsIDQyNzI4LCAwLCAKKyAgICA3MDQwLCAzNTg4LCA2Mzc5NywgMTI4MjUsIDEyMTE1OCwgNzI4NjQsIDEyNzI1LCA3NDA5MiwgMTI3MTA2LCA3ODYzNCwgCiAgICAgMjIzLCA3ODYzNSwgNjk2NzUsIDEyMDExOSwgNDI0NDQsIDEyODQ0OSwgNjQ0OTksIDY1MjQ1LCAxMjkxMDQsIDExNzEsIAogICAgIDEyODgwMiwgNjk3MTcsIDEyMDExMywgMTgwNSwgODc3MiwgNDM4MjAsIDAsIDk5MzAsIDY1MjQ3LCA3ODYxOSwgNzQ5NTQsIAogICAgIDIzMzgsIDEyMDAzMiwgMTE4ODUzLCAwLCA0MjY3NiwgMCwgNjQ4MDAsIDEzMDkyLCAxMTE4NSwgNjgxMjYsIDEyMTMsIAogICAgIDEyODQxOSwgNjQwNzUsIDc5NywgNjQwNzQsIDg3MzQsIDQyMTIsIDgzMDA1LCA2NDM4NywgNDExNSwgNzEzMzEsIDUwMDUsIAogICAgIDY0MDcwLCA2NDA3MywgMTA2NzksIDgzMDAwLCA3Nzk1NCwgOTQwMiwgNjQyNzYsIDQyNiwgODMzNTgsIDgzMDEwLCA4MjUxLCAKLSAgICAxMDEzNiwgNjU0MzYsIDAsIDIxMjAsIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgNzA3OTUsIDEwNzAxLCAxNzY0LCAzMTAxLCAKLSAgICAxMjc4MTUsIDEyODU4LCAxMjAxNTksIDEyMDEwMSwgMTEzNzMsIDYzNzgsIDcxMDkzLCAxMjAxMDMsIDg2NjMsIDkzMTIsIAotICAgIDQxNjQ0LCA0NTM5LCAyMTI5LCA3MDc4NSwgOTIyMiwgMTIxNDc5LCAxMTg5MDcsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgCi0gICAgMTI4NTE1LCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgMCwgMCwgMTI5MywgNzk0NywgMjEzMiwgOTgzNzY3LCAKLSAgICA3MTg1OCwgNzI0NDAsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIDcxMTE3LCAwLCA2NTg4OCwgODgxNiwgMTA5NzgsIAotICAgIDEwODQwLCAwLCAxMDY2OCwgMTEzNzIzLCA0MzA4NywgMTI1OTUsIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAwLCAxMTU3LCAKLSAgICA2NDkwMywgODYzOCwgMTI3MjY1LCA5MTc4ODYsIDEyNzkwNSwgMCwgNjk4NDgsIDgyMzUsIDEyMDMxNiwgNDQwNSwgMTAwODYsIAotICAgIDEyMDI0NywgMTExMjgsIDY5MjE2LCAxMjEwNjUsIDY1NDMwLCA3MTMyMSwgNjA3OSwgNjgxNywgMTA3NjQsIDEyMDMxNCwgCi0gICAgNjQyOTEsIDEyMDMxNSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMTk0NTcyLCAxOTkxLCA3ODgyLCAKLSAgICA0MjI1NCwgMTI4OTU0LCA0MTcwMCwgNTMwLCAwLCAxMDQyOCwgMTE5MzM1LCAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgCi0gICAgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCA1MDA0LCA3NDAzMywgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAxMjAzMjUsIAotICAgIDY2MzczLCA5ODMyNDksIDEyODc0NiwgNjQ5MDgsIDkyNjkxLCA2MzExLCA5MzAxOSwgMTIwMDQsIDExOTE5MiwgMTIwNDksIAotICAgIDQzMTA4LCAxMjAzMjYsIDcxMDgzLCA0MTcwNSwgOTIxODgsIDY1OTgsIDEyMTI5OCwgNjU5OSwgNjY4MjIsIDkzMDMxLCAKLSAgICA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMTIxMDU1LCA2NTk3LCA5NDEyLCA4MzQwLCAxMTgyNCwgNjQ3NDUsIDIyODEsIAotICAgIDY5OTA0LCAxMjg0OTUsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgOTMwNTksIDgzMTE0LCAyMzM2LCAKLSAgICA5ODM5MDMsIDAsIDY3MTY5LCAxMjA0NDIsIDEyNzA5MiwgMTkyMSwgMTA5NDcsIDE5OTI3LCA3MDM5MCwgNjU0MDYsIAotICAgIDk4MzQ2NCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIDEwOTU2LCA0MjI4NSwgNDE2NzQsIAotICAgIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDEyNDk1NywgNTc3NCwgODMyNSwgNjk4NjQsIDY1NDAzLCA5ODMwODksIAotICAgIDE4NTQsIDEwNzk0LCA5MzA1NCwgNjc2NjAsIDY5ODQ2LCAxOTQ3NjUsIDc4MzU5LCA1MjgwLCAwLCA0MzQ0LCAxMjkwNSwgCi0gICAgNjU0MzMsIDYwNzYsIDY0NzkzLCA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIDEyOTM0LCAKLSAgICA0MTY4MiwgNjU0MzIsIDQxNjkzLCAwLCA2MDcxLCA2NTQzNCwgMTI3NDY3LCA0ODA0LCA0MDUzLCAwLCAxMjc0NjksIAotICAgIDE5NDY1MywgNDE2OTYsIDQ2NywgNjk4MjMsIDEyNzQ2MywgNjk3OTcsIDEyMTQwMywgMTIxMjk0LCA4NDIxLCAxMjc0NzIsIAotICAgIDY5NjgyLCA0MzcwNSwgNTAyLCA3NTAyOSwgNjU0MzEsIDExOTA1NiwgNjk5NTQsIDEyMDQzLCAxMzAzLCAzMTYsIDczNjQsIAotICAgIDIwMjksIDIxMzYsIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIDcwMzcyLCAxMjc4NzcsIAotICAgIDQyNDg4LCA3MDMzOSwgOTU4MywgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgOTgzODQwLCAxMjQ5NjAsIDEyMDgzOSwgCi0gICAgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCA3NTAzNCwgNjM3NTEsIDEyMTM3LCA1NTQ4LCA3Nzk4NSwgMCwgCi0gICAgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCA2NTQ1MiwgMCwgMTEzMDEsIDExMjE0LCA2NTk1MiwgNzgwMTAsIAotICAgIDk4NzQsIDc4MDA3LCA5ODMxMTUsIDEzMTksIDMwNTAsIDY1NDEwLCA2NzM5OSwgOTI2MDYsIDc4MDE2LCA3ODAxNywgCi0gICAgNDI4MzAsIDQzOTk2LCA2NjcxNiwgODMwNTAsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIDgzNTEyLCAxMjgyMjIsIDAsIAotICAgIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAKLSAgICAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDcxMDQyLCA3OTIzLCAzNzE2LCA5MjM2MywgOTk5NiwgODUwOCwgMTI3Nzk0LCAKLSAgICA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIDAsIDM3MjIsIDk4MzM3NCwgNDE3MDcsIDg0OTMsIDU0NSwgOTU3NSwgNDEzNzksIAotICAgIDEwMDUwLCAxMjcxOCwgNjk4NTQsIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAxMjg5NzgsIDU1MjgyLCAKLSAgICA5MTE5LCAyNzg3LCA3OTIwLCA3MDA5MSwgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCA5MTc3OTIsIDAsIDc4MDIxLCAKLSAgICA3ODAyMiwgNDEwLCA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCA3NDg5NSwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCAKLSAgICA2NDM5NiwgMTAxMjYsIDEyMTE2LCA0MTY3MywgMTIwMzcwLCAxMTQyMiwgNzE4NDYsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCAKLSAgICA2ODQxMiwgNDEzNDUsIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIAotICAgIDIxMDQsIDY0ODU4LCAzNjEsIDEyMDM1NywgODQ1LCA5MjE3NCwgNDE1NjAsIDExOTcwLCA0NTYyLCAxMjg0NzMsIDI5MjYsIAotICAgIDY4NDk1LCA0NTY5LCA3NDEzMCwgMTI4NjU5LCA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTE4ODkxLCAKLSAgICA2NTYyOSwgMCwgMTk0ODU4LCA3NDg1NCwgMCwgNzA0NjYsIDY3MzkyLCA2NjM4NSwgNzE0MzksIDYyOTEsIDAsIDY4NDg3LCAKLSAgICA0MTY2OSwgNzA5NCwgMTIxMDUxLCAwLCAxMjA5OTksIDc0MDU0LCAxMjc3NTQsIDEyODkxNywgMCwgODM5LCAxMjEzMTUsIAotICAgIDc2OTUsIDg3NjksIDY1MjQ2LCA0ODI5LCA2Nzc1NiwgNDg1OSwgNjQ0NjcsIDAsIDgzNTI1LCAxMTg5OTgsIDcyMDYsIAotICAgIDExOTYzNiwgNjY0NywgNDM5ODYsIDgzNTE4LCA2OTc2NiwgMTk0NjY0LCA2NDc2NCwgNDIxMCwgMTI4MzAwLCAxMjc5MzYsIAotICAgIDgwNCwgODM1MjAsIDAsIDEyMjk4LCA3MDM0NCwgNjY2NTMsIDEyNjk4MywgNjQ5MjQsIDEwMDkxLCA2NzIwMCwgOTQ2OCwgCisgICAgMTAxMzYsIDY1NDM2LCAxMDA4NjIsIDIxMjAsIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgNzA3OTUsIDEwNzAxLCAxNzY0LCAKKyAgICAzMTAxLCAxMjUxOTIsIDEyODU4LCA3NDc2NywgMTIwMTAxLCAxMTM3MywgNjM3OCwgNzEwOTMsIDEyMDEwMywgODY2MywgCisgICAgOTMxMiwgNDE2NDQsIDQ1MzksIDIxMjksIDcwNzg1LCA5MjIyLCAxMjE0NzksIDExODkwNywgNDI1OSwgOTA5MiwgNzQ1NjcsIAorICAgIDQxOTYxLCAxMjEzNjEsIDEyNzI0LCA2NjM1NywgNDIzMzEsIDY0OTM1LCA3Mjg2NywgMTIwNTgyLCAxMjkzLCA3OTQ3LCAKKyAgICAyMTMyLCA5ODM3NjcsIDcxODU4LCA3MjQ0MCwgMjQ1NCwgNDI3MTcsIDM2MTMsIDEyODgzNywgNzExMTcsIDAsIDY1ODg4LCAKKyAgICA4ODE2LCAxMDk3OCwgMTA4NDAsIDAsIDEwNjY4LCA3MjgyNiwgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDk4MzExNCwgODgyMiwgCisgICAgMCwgMTE1NywgNjQ5MDMsIDg2MzgsIDEyNzI2NSwgMTI5MTA2LCAxMjA2NjksIDEwMDM5OSwgNjk4NDgsIDgyMzUsIAorICAgIDEyMDMxNiwgNDQwNSwgMTAwODYsIDEyMDI0NywgMTExMjgsIDY5MjE2LCAxMjEwNjUsIDY1NDMwLCA3MTMyMSwgNjA3OSwgCisgICAgNjgxNywgMTA3NjQsIDEyMDMxNCwgNjQyOTEsIDEyMDMxNSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgCisgICAgMTU1OCwgMTk0NTcyLCAxOTkxLCA3ODgyLCA0MjI1NCwgMTI4OTU0LCA0MTcwMCwgNTMwLCAwLCAxMDQyOCwgMTE5MzM1LCAKKyAgICAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCA1MDA0LCA3NDAzMywgNzg5NiwgCisgICAgNzUxLCA2NTk1LCA2NTk2LCAxMjAzMjUsIDY2MzczLCAxMjkwNjYsIDEyODc0NiwgNjQ5MDgsIDkyNjkxLCA2MzExLCAKKyAgICA5MzAxOSwgMTIwMDQsIDExOTE5MiwgMTIwNDksIDQzMTA4LCAxMjAzMjYsIDcxMDgzLCA0MTcwNSwgOTIxODgsIDY1OTgsIAorICAgIDEyMTI5OCwgNjU5OSwgNjY4MjIsIDkzMDMxLCA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMTIxMDU1LCA2NTk3LCA5NDEyLCAKKyAgICA4MzQwLCAxMTgyNCwgNjQ3NDUsIDIyODEsIDY5OTA0LCAxMjg0OTUsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgCisgICAgOTMwNTksIDgzMTE0LCAyMzM2LCA5ODM5MDMsIDAsIDY3MTY5LCAxMjA0NDIsIDEyNzA5MiwgMTkyMSwgMTA5NDcsIDE5OTI3LCAKKyAgICA3MDM5MCwgNjU0MDYsIDk4MzQ2NCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIDEwOTU2LCAKKyAgICA0MjI4NSwgNDE2NzQsIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDEyNDk1NywgNTc3NCwgODMyNSwgNjk4NjQsIAorICAgIDY1NDAzLCA5ODMwODksIDE4NTQsIDEwNzk0LCA5MzA1NCwgNjc2NjAsIDY5ODQ2LCAxOTQ3NjUsIDc4MzU5LCA1MjgwLCAwLCAKKyAgICA0MzQ0LCAxMjkwNSwgNjU0MzMsIDYwNzYsIDY0NzkzLCA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIAorICAgIDEyOTM0LCA0MTY4MiwgNjU0MzIsIDQxNjkzLCA5ODM0MzQsIDYwNzEsIDY1NDM0LCAxMTkwMDgsIDQ4MDQsIDQwNTMsIAorICAgIDEyMDIzNywgMTI3NDY5LCAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAxMjAwNDMsIDEyMTI5NCwgCisgICAgODQyMSwgMTI3NDcyLCA2OTY4MiwgNDM3MDUsIDUwMiwgNzUwMjksIDY1NDMxLCAxMTkwNTYsIDY5OTU0LCAxMjA0MywgCisgICAgMTMwMywgMzE2LCA3MzY0LCAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgNDM0ODAsIDkyNjM5LCA0ODYwLCAKKyAgICA3MDM3MiwgMTI3ODc3LCA0MjQ4OCwgNzAzMzksIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgNzM4NTYsIDEyODE5NCwgCisgICAgMTI0OTYwLCAxMjA4MzksIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzUwMzQsIDYzNzUxLCAxMjEzNywgCisgICAgNTU0OCwgNzc5ODUsIDk4MzU1NSwgMTAwMDcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCA2NTQ1MiwgMTAwMzkxLCAKKyAgICAxMTMwMSwgMTEyMTQsIDY1OTUyLCA3ODAxMCwgOTg3NCwgNzgwMDcsIDE5NDczMiwgMTMxOSwgMzA1MCwgNjU0MTAsIAorICAgIDY3Mzk5LCA5MjYwNiwgNzgwMTYsIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCA4MzA1MCwgNDY5MSwgOTIyNDIsIAorICAgIDkzNDUsIDYyMSwgODM1MTIsIDEyODIyMiwgMTIyODg5LCA2NTQxMSwgOTE3NTQxLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCAKKyAgICA3Mzg5OSwgNzgwMjQsIDk0NzQsIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIAorICAgIDcxMDQyLCA3OTIzLCAzNzE2LCA5MjM2MywgOTk5NiwgODUwOCwgMTI3Nzk0LCA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIAorICAgIDExOTg2NywgMzcyMiwgOTgzMzc0LCA0MTcwNywgODQ5MywgNTQ1LCA5NTc1LCA0MTM3OSwgMTAwNTAsIDEyNzE4LCA2OTg1NCwgCisgICAgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDEyODk3OCwgNTUyODIsIDkxMTksIDI3ODcsIDc5MjAsIDcwMDkxLCAKKyAgICA0MDIxLCAyMDEyLCA3OTg1LCA3ODA5MywgMTE5NjYzLCA5MTc3OTIsIDk4Mzk1MSwgNzgwMjEsIDc4MDIyLCA0MTAsIAorICAgIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDc0ODk1LCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIDY0Mzk2LCAxMDEyNiwgCisgICAgMTIxMTYsIDQxNjczLCA2ODUyNCwgMTE0MjIsIDcxODQ2LCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgNjg0MTIsIDQxMzQ1LCAKKyAgICAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAyMTA0LCA2NDg1OCwgCisgICAgMzYxLCAxMjAzNTcsIDg0NSwgOTIxNzQsIDQxNTYwLCAxMTk3MCwgNDU2MiwgMTI4NDczLCAyOTI2LCA2ODQ5NSwgNDU2OSwgCisgICAgNzQxMzAsIDEyODY1OSwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDEwMDkwOSwgNjU2MjksIDAsIAorICAgIDE5NDg1OCwgNzQ4NTQsIDY2NzUwLCA3MDQ2NiwgNjczOTIsIDY2Mzg1LCA3MTQzOSwgNjI5MSwgMCwgNjg0ODcsIDQxNjY5LCAKKyAgICA3MDk0LCAxMjEwNTEsIDEyMTQwOCwgMTE5MDQxLCA3NDA1NCwgMTI3NzU0LCAxMjg5MTcsIDAsIDgzOSwgMTIxMzE1LCAKKyAgICA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgNjc3NTYsIDQ4NTksIDY0NDY3LCA5ODM0NjEsIDgzNTI1LCAxMTg5OTgsIDcyMDYsIAorICAgIDExOTYzNiwgNjY0NywgNDM5ODYsIDcyNzM4LCA2OTc2NiwgMTk0NjY0LCA2NDc2NCwgNDIxMCwgMTI4MzAwLCAxMjc5MzYsIAorICAgIDgwNCwgNjY3NDYsIDAsIDEyMjk4LCA3MDM0NCwgNjY2NTMsIDEyNjk4MywgNjQ5MjQsIDEwMDkxLCA2NzIwMCwgOTQ2OCwgCiAgICAgNjcyMDYsIDY3MjA1LCA2NzIwNCwgNjcyMDMsIDkyNTAzLCAxMjgzOSwgNjQ2NjksIDkyMjAyLCA3MTg1MSwgMTI3OSwgCi0gICAgMTQyNSwgNjIyNCwgMTE5MjI5LCAxMTA0OSwgMTI3MTIzLCA3MTQ4MCwgNDI2NDksIDg0ODIsIDkyNDQwLCAwLCA1MDMyLCAKLSAgICA2NzIwOSwgMTE5NDAsIDY3MjA3LCA2NjQsIDEyMDQzNywgNTAzNCwgOTI0OTUsIDcwMjAwLCAxMjc1MjUsIDQyNzAyLCAKLSAgICA3MDE5NCwgOTMwNjEsIDEzMjk0LCA2Nzg3MywgNjQ4NjksIDYwMzIsIDY3MjE4LCA5MTE1LCA3NDMwLCA3NzgzNywgNzAxOTEsIAotICAgIDEyMDgxOSwgNjgzODcsIDEyMDE2OCwgNzM5MTMsIDEyMDE3MCwgNDExNjEsIDU1MTgsIDQxNzQsIDEwOTkzLCA0MTE2MiwgCi0gICAgNzc4MzYsIDY0NTI4LCAxMTY5LCA0MzQsIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIDY3NzQxLCAKLSAgICAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIDc4OCwgNzQwMjcsIDE5NDY2NywgNzE4ODEsIDAsIDE2NjMsIDEwNDE5LCA0MjkwMSwgCi0gICAgNDI2MzYsIDY3MjExLCA2NzIxMCwgMTI5MTQ3LCAxMjA2NTYsIDY3MjE1LCA2NzIxNCwgNjcyMTMsIDY3MjEyLCAwLCAKLSAgICA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAwLCAxMTkxMDcsIDQzNjEyLCA2NDM0NCwgMTk0NzMyLCAwLCAxMDg1NSwgCi0gICAgNTQ0NSwgOTM1NSwgNjcyMjEsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIDY1Njg2LCA5ODM4NzQsIDExOTIzOCwgODAxMCwgCi0gICAgNzE5MSwgNDk2MiwgNjk3NzIsIDg4NTUsIDc0NjEyLCA3MDgyMCwgNjQ0NjksIDkyNTkyLCAxMDU1NSwgNjcyMjcsIDQzMzMzLCAKLSAgICA2NzIyNSwgMTI4NDgzLCAxMjA0MjcsIDEwNDUxLCA2NzIyOSwgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgCi0gICAgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgNzc4NDIsIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgODMzNDMsIAotICAgIDk4MzU4MSwgMTEwMTAsIDExMTY0LCA3NDA1OSwgNzQwNjIsIDYyMTcsIDU4OTYsIDQzODQ2LCA3NjgyLCA3NDA0OSwgMTQ2MiwgCi0gICAgMTAyMzUsIDAsIDAsIDk4MzMyNSwgNDM0NDEsIDEyNzkyNCwgMTI3Nzc3LCA0MjU5NSwgMTI2NjQxLCA3NDQwMiwgMTE4ODYwLCAKLSAgICA3ODY2MSwgMTIwNDE5LCA5MjQ5NywgNjYyODcsIDEyMDQyMCwgOTIzNzgsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgCi0gICAgMTIwNDE4LCAwLCA2NDc2NSwgNzM5MjMsIDgzMjEwLCAxMjA2NjIsIDY5OTIwLCAxOTQ3MDIsIDYyMTYsIDY3MjMwLCAKLSAgICAxMDc1NSwgOTQ1NSwgMTExNTUsIDgxMjQsIDEyNzA0MiwgOTQ3MCwgNjk0NCwgMTIxMTI1LCAwLCA2OTY4MCwgMjgyOCwgMCwgCi0gICAgNTMxLCA0MjYzOCwgMTk0ODA0LCA5MTc4NTYsIDEyMDk2MSwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIAotICAgIDEyMDM2NSwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAxOTkzNiwgNzgzMywgMTIwNjkxLCAxMjA4NTAsIDQyNTk5LCAKLSAgICA0MjU5NywgNDI3MDksIDY4ODI5LCAxMjUwMTIsIDAsIDg1MzcsIDEyNzMwNiwgMCwgOTM1NCwgMTIxMjQ0LCAxMjEzNDgsIAotICAgIDQxMTk5LCAxMDEyMSwgMjAyOCwgNzQ5NTAsIDEyMDI1MywgNjk3MTUsIDEyODUyNSwgMzA2MiwgMCwgNzQ0NDcsIDEyNjA4LCAKLSAgICA5ODM2NTcsIDY2NDQwLCA3NTQ1LCA5NzAwLCAxMTk0OCwgOTIyMDUsIDEyMDc3NywgMTIwNTAyLCA0MTE1NSwgNjgzMDYsIAotICAgIDc0MDcxLCAwLCA5ODM0NTksIDEyNzEzLCAxMjc1MTksIDcwNDAyLCAwLCA3ODc3MiwgMTEzNzcwLCAxNzM0LCAwLCA3ODE0MSwgCi0gICAgMTI3MDQwLCA2NDU5NCwgMjQ1NiwgMjMxLCA2ODIyNywgNzQxNjcsIDU0MiwgOTE3OTgxLCAxMTg3ODYsIDk4Mzg1OSwgCi0gICAgMTk0Nzk3LCAxMjMwLCAxMjUwMTgsIDEyMTM0MywgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgCi0gICAgNjc3MzcsIDgzNTIsIDc4NDM2LCA1Njg3LCAxMjcwMTgsIDY0NTE1LCAxMjEzNzgsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCAKLSAgICA3ODQzNCwgOTcwNCwgMCwgMTk0NTczLCA3MDA4MCwgNzEzMzgsIDAsIDg2NjAsIDEyNjQ3OCwgMCwgMTI4NTY5LCA3ODc3MywgCi0gICAgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAxOTQ4NTEsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgCi0gICAgOTgzMTAxLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCA0NDgwLCAxMTI2NiwgMTIxMTE0LCAxMjI2LCA2OTMwLCAKLSAgICA2Nzk3OSwgMTk1MDE5LCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgNjgzMDIsIDc0Nzg1LCA2OTg3NSwgMCwgMTIxNDc4LCAKKyAgICAxNDI1LCA2MjI0LCAxMTkyMjksIDExMDQ5LCAxMjcxMjMsIDcxNDgwLCA0MjY0OSwgODQ4MiwgOTI0NDAsIDk4MzcxMCwgCisgICAgNTAzMiwgNjcyMDksIDExOTQwLCA2NzIwNywgNjY0LCAxMjA0MzcsIDUwMzQsIDkyNDk1LCA3MDIwMCwgMTIyOTAxLCAKKyAgICA0MjcwMiwgNzAxOTQsIDkzMDYxLCAxMzI5NCwgNjc4NzMsIDY0ODY5LCA2MDMyLCA2NzIxOCwgOTExNSwgNzQzMCwgNzc4MzcsIAorICAgIDcwMTkxLCAxMjA4MTksIDY4Mzg3LCAxMDA2NDUsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCA1NTE4LCA0MTc0LCAxMDk5MywgCisgICAgNDExNjIsIDc3ODM2LCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCAKKyAgICA2Nzc0MSwgMTI4ODAwLCA1MjQsIDEyODY2NywgNzQwMjksIDc4OCwgNzQwMjcsIDE5NDY2NywgNzE4ODEsIDEyMDM3MCwgCisgICAgMTY2MywgMTA0MTksIDQyOTAxLCA0MjYzNiwgNjcyMTEsIDY3MjEwLCAxMjkxNDcsIDEyMDY1NiwgNjcyMTUsIDY3MjE0LCAKKyAgICA2NzIxMywgNjcyMTIsIDEyODgyOCwgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMTk0OTA0LCAxMTkxMDcsIDQzNjEyLCAKKyAgICA2NDM0NCwgMTI5MzcwLCAwLCAxMDg1NSwgNTQ0NSwgOTM1NSwgNjcyMjEsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIAorICAgIDQzNjczLCA5ODM4NzQsIDExOTIzOCwgODAxMCwgNzE5MSwgNDk2MiwgNjk3NzIsIDg4NTUsIDc0NjEyLCA3MDgyMCwgCisgICAgNjQ0NjksIDkyNTkyLCAxMDU1NSwgNjcyMjcsIDQzMzMzLCA2NzIyNSwgMTI4NDgzLCAxMjA0MjcsIDEwNDUxLCA2NzIyOSwgCisgICAgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgNzc4NDIsIAorICAgIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgODMzNDMsIDk4MzU4MSwgMTEwMTAsIDExMTY0LCA3NDA1OSwgNzQwNjIsIAorICAgIDYyMTcsIDU4OTYsIDQzODQ2LCA3NjgyLCA3NDA0OSwgMTQ2MiwgMTAyMzUsIDk4MzkxOCwgMCwgOTgzMzI1LCA0MzQ0MSwgCisgICAgMTI3OTI0LCAxMjc3NzcsIDQyNTk1LCA3MjgwNCwgNzQ0MDIsIDExODg2MCwgNzg2NjEsIDEyMDQxOSwgOTI0OTcsIDY2Mjg3LCAKKyAgICAxMjA0MjAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCA4MzIxMCwgCisgICAgMTIwNjYyLCA2OTkyMCwgMTI1Mjc4LCA2MjE2LCA2NzIzMCwgMTA3NTUsIDk0NTUsIDExMTU1LCA4MTI0LCAxMjcwNDIsIAorICAgIDk0NzAsIDY5NDQsIDEyMTEyNSwgOTE3OTgyLCA2OTY4MCwgMjgyOCwgMCwgNTMxLCA0MjYzOCwgMTk0ODA0LCA5MTc4NTYsIAorICAgIDEyMDk2MSwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIDEyMDM2NSwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIAorICAgIDc4NTYyLCAxOTkzNiwgNzgzMywgMTIwNjkxLCAxMjA4NTAsIDQyNTk5LCA0MjU5NywgNDI3MDksIDY4ODI5LCAxMjUwMTIsIAorICAgIDAsIDg1MzcsIDEyNzMwNiwgOTgzNzI5LCA5MzU0LCAxMjEyNDQsIDEyMTM0OCwgNDExOTksIDEwMTIxLCAyMDI4LCA3NDk1MCwgCisgICAgMTIwMjUzLCA2OTcxNSwgMTI4NTI1LCAzMDYyLCA5ODM2NjMsIDc0NDQ3LCAxMjYwOCwgOTgzNjU3LCA2NjQ0MCwgNzU0NSwgCisgICAgOTcwMCwgMTE5NDgsIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDY4MzA2LCA3NDA3MSwgMTI4NzIyLCA5MjM3MiwgCisgICAgMTI3MTMsIDEyNzUxOSwgNzA0MDIsIDAsIDc4NzcyLCAxMTM3MDksIDE3MzQsIDAsIDc4MTQxLCAxMjcwNDAsIDY0NTk0LCAKKyAgICAyNDU2LCAyMzEsIDY4MjI3LCA3NDE2NywgNTQyLCAxMjA1ODYsIDEwMDg1MSwgOTgzODU5LCAxOTQ3OTcsIDEyMzAsIAorICAgIDczODQ1LCAxMjEzNDMsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIDY3NzM3LCA4MzUyLCA3ODQzNiwgCisgICAgNTY4NywgMTI3MDE4LCA2NDUxNSwgMTIxMzc4LCAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgNzg0MzQsIDk3MDQsIDk4MzU4NSwgCisgICAgMTk0NTczLCA3MDA4MCwgNzEzMzgsIDEyMDU3NSwgODY2MCwgMTI2NDc4LCAxMjcwMTAsIDEyODQ2NywgNzg3NzMsIDc0NDgyLCAKKyAgICA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgNjA4MCwgMTI4MTY3LCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIDk4MzEwMSwgCisgICAgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMTE4Nzg2LCA0NDgwLCAxMTI2NiwgMTIxMTE0LCAxMjI2LCA2OTMwLCA2Nzk3OSwgCisgICAgMTk1MDE5LCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgNjgzMDIsIDc0Nzg1LCA2OTg3NSwgMTIwODQ5LCAxMjE0NzgsIAogICAgIDQxNTAwLCAwLCAzMTEsIDExNDUzLCA2MjIxLCAxMDYwOCwgNjQ5NDMsIDY3NjgyLCAxMDg3NywgMTE4ODY4LCA2NDg4NSwgCi0gICAgNzQyNzIsIDAsIDE5NDY3MiwgMTI4NTU5LCAxMjA3MzYsIDc0MzEyLCAzNDUsIDEyNDkzMywgNzQ0NTYsIDY0NjA2LCA5OTE3LCAKLSAgICAwLCA3NDg1NSwgNTAzNywgMTE5OTEyLCAxNzc2LCA4NDIyLCAxMjg5MzUsIDExODgxNCwgNDE1MDgsIDQxMjAxLCAzMjMsIAotICAgIDQzMzI4LCAwLCA0MjY5OCwgMTI5NSwgMTk0ODUzLCA0NjI1LCA3Nzg1NSwgNDYzMCwgMTMxMTcsIDgzMDAyLCAxMjg3NzIsIAotICAgIDY1MTIzLCAxMTI5MywgMjY2OCwgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIDY1NDIwLCA5MjQ3OSwgMCwgCi0gICAgNDI1MiwgNTA0OSwgNDI2NTksIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgOTgzOTQ5LCA2NTQxOSwgMCwgCi0gICAgMTI4NDk2LCA2NDksIDY1NDIxLCAwLCA2NjcwMiwgOTgzNzIxLCAxMjY3MCwgMTAxMywgMCwgNjQ5MTksIDcwNSwgMCwgCi0gICAgNjU0MjIsIDEyNzgwMywgMTE4MywgMTI2NTE5LCA3MDE3LCA0Mjg1MiwgOTE3ODI2LCA4MTU3LCA5NzM2LCA2NDUwMywgCi0gICAgNjU0MTgsIDEyOTA1MCwgOTgzODc4LCA3NDAzNSwgMTk0OTE4LCAxMTkxMywgNzM4NzQsIDY2OTYsIDEyMDkxNiwgODkyMCwgCi0gICAgMTE5Mjk4LCAxMjg0MjYsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCA2NjIyNywgMCwgNDE4NCwgMTE5ODI1LCAxMjg1OTgsIAotICAgIDEwMTc3LCA3Mzc3NywgMTg1NywgMTk0NjU3LCA0NjI2LCA4NDY0LCA4NDcyLCA2ODg0NCwgNDYyOSwgODQ5OSwgNzQ2MjcsIAotICAgIDc4MzIyLCA0NjI0LCA3ODE4LCAxMTg4NjEsIDEyODEwOCwgMCwgNzgwNSwgMTI4NzU0LCA5NDAwNywgNjkzNSwgOTIyOTIsIAotICAgIDc4MzI1LCA3ODMyNiwgNzgzMjMsIDQzMzI3LCA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCAKLSAgICA4NDk2LCA4MzQ5OSwgNzQ1ODIsIDc1MDUyLCA3ODMzOSwgOTU0MywgNjc4NjAsIDc4MzMyLCA3NzgzMiwgNjU4NDksIAotICAgIDc3ODMxLCA5ODM5NjEsIDE5NDY0OSwgMTI0NTEsIDc0Mzc2LCA4Njg0LCAxMjgzMDEsIDYxMDIsIDAsIDUyOTgsIDkxNzg0NywgCi0gICAgNTI5NCwgMCwgODMwMTYsIDY4MDQzLCAxOTUwNjIsIDk5NDksIDgzMDE0LCA0MzYxNywgMTE5MjE1LCAwLCAxMjA3MywgMCwgCi0gICAgMTI4NjQ2LCA3Nzg2MywgMTMxMDgsIDEyMDYxNywgMTE0MzksIDQxNDY4LCA4MzAxMiwgMCwgNTI5MiwgNTUyNzIsIAotICAgIDk4Mzg4MywgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc3LCAxMjQ1NSwgMTc5MywgMTI0OTgyLCAwLCA3NTAzNiwgNjY0MywgCi0gICAgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgNzg4MzUsIDEzMjE5LCA5NTY5LCAxMjkwNDEsIAotICAgIDc0MzgzLCAwLCA3NDE5NywgMTI5MDg5LCA1NTAwLCA4ODEzLCAwLCAxMjg2MTIsIDY4ODYwLCA1MzIyLCAxMjA5NDQsIAotICAgIDc4MzQwLCA0MzYzMSwgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCAxMzI4MiwgCi0gICAgMzM2MCwgNzgzNDQsIDExNTIzLCAwLCA5MjQ4OCwgOTkyNiwgNzE5NywgMTI4MjQ4LCA2ODQyOSwgNDI4OTQsIDQxODIxLCAKLSAgICAxMjQ5LCA3ODM2MCwgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCAKLSAgICA0MzE2MiwgNDE4MTUsIDQxMTUwLCAxMjg5MTEsIDEwNTcxLCAxMDA5NiwgNjcxNjEsIDY3MTYwLCA2NzE1OSwgNjk0NywgCi0gICAgNDExNTIsIDg4NywgOTI0OSwgNjU2NSwgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDY3MTU3LCA5Mzk2NiwgNjY3MCwgCi0gICAgNjcxNzUsIDY3MTc0LCAwLCA0MzA5MiwgNDMzMjUsIDY3MTc4LCAxMDE2OCwgNjcxNzYsIDk3ODEsIDY4MjQ4LCA5MTkwLCAKLSAgICAxMjg0OTcsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgCi0gICAgMTI5MTMyLCA3MjQwOSwgNzgyNTYsIDcyNDA4LCA3ODM1MiwgMCwgNzUwNjMsIDAsIDAsIDEzNzgsIDk1MDksIDE5NDYzNCwgCi0gICAgOTI5OTYsIDcyNDA3LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDcyNDA2LCA5MjM1NSwgOTE3ODkwLCA3ODM2NSwgODc4NywgCi0gICAgNjcxODksIDE5NDYxNiwgNDE2MTgsIDE5NDYxNSwgNzgyNjEsIDEyNzM4NCwgMCwgNjQ2NTIsIDEyMTIyMiwgMTIxMDEyLCAwLCAKLSAgICA3ODM2NiwgNDIwODgsIDcxMDQwLCAxOTUwNjEsIDcxNzYsIDQzNzU2LCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCAKLSAgICA3MTA1MCwgODExOSwgNjQ4NzQsIDcxMDUyLCA3ODE3NCwgMTI4NjkwLCAxMjg2MzAsIDc0NTI1LCAwLCAwLCAxMjkzMCwgCisgICAgNzQyNzIsIDEyODA3NiwgMTk0NjcyLCAxMjEyMDIsIDEwMDY1MiwgNzQzMTIsIDM0NSwgMTI0OTMzLCA3NDQ1NiwgNjQ2MDYsIAorICAgIDk5MTcsIDEyNTI0NCwgNzQ4NTUsIDUwMzcsIDEwMDk5OCwgMTc3NiwgODQyMiwgMTI4OTM1LCAxMTg4MTQsIDQxNTA4LCAKKyAgICA0MTIwMSwgMzIzLCA0MzMyOCwgOTE3ODQ5LCA0MjY5OCwgMTI5NSwgMTk0ODUzLCA0NjI1LCA3Nzg1NSwgNDYzMCwgMTMxMTcsIAorICAgIDgzMDAyLCAxMjg3NzIsIDY1MTIzLCAxMTI5MywgMjY2OCwgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIAorICAgIDY1NDIwLCA5MjQ3OSwgMTI3MTkxLCA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIDc3NTQsIDEwODU0LCA4NzM4LCAKKyAgICAxMjkzMTgsIDY1NDE5LCAwLCAxMjg0OTYsIDY0OSwgNjU0MjEsIDEyMjg4MCwgNjY3MDIsIDk4MzcyMSwgMTI2NzAsIDEwMTMsIAorICAgIDcwNzA3LCA2NDkxOSwgNzA1LCA3MjgyNSwgNjU0MjIsIDEyNzgwMywgMTE4MywgMTI2NTE5LCA3MDE3LCA0Mjg1MiwgCisgICAgOTE3ODI2LCA4MTU3LCA5NzM2LCA2NDUwMywgNjU0MTgsIDEyOTA1MCwgMTI4MDkwLCA3NDAzNSwgNzg4MzYsIDExOTEzLCAKKyAgICA3Mzg3NCwgNjY5NiwgMTIwOTE2LCA4OTIwLCAxMTkyOTgsIDEyODQyNiwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIAorICAgIDY2MjI3LCA5ODMyNzIsIDQxODQsIDExOTgyNSwgMTI4NTk4LCAxMDE3NywgNzM3NzcsIDE4NTcsIDEyNzc3MywgNDYyNiwgCisgICAgODQ2NCwgODQ3MiwgNjg4NDQsIDQ2MjksIDg0OTksIDc0NjI3LCA3ODMyMiwgNDYyNCwgNzgxOCwgMTE4ODYxLCAxMjgxMDgsIAorICAgIDAsIDc4MDUsIDEyODc1NCwgOTQwMDcsIDY5MzUsIDkyMjkyLCA3ODMyNSwgNzgzMjYsIDc4MDc5LCA0MzMyNywgNDM5ODksIAorICAgIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgODQ5NiwgODM0OTksIDc0NTgyLCA3MDY5MCwgNzgzMzksIAorICAgIDk1NDMsIDY3ODYwLCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCA3NzgzMSwgMTI4NjE1LCAxMDA0MTIsIDEyNDUxLCA3NDM3NiwgCisgICAgODY4NCwgMTAwNTE1LCA2MTAyLCAxMjgwNDYsIDUyOTgsIDEyODcyMSwgNTI5NCwgODMyMzUsIDgzMDE2LCA2ODA0MywgCisgICAgMTk0ODk5LCA5OTQ5LCA4MzAxNCwgNDM2MTcsIDExOTIxNSwgMTI3MDMwLCAxMjA3MywgMTIwNzM2LCAxMjgwMTcsIDc3ODYzLCAKKyAgICAxMzEwOCwgNzEyMzEsIDIyNjAsIDQxNDY4LCA4MzAxMiwgMCwgNTI5MiwgNTUyNzIsIDk4Mzg4MywgMTkzOSwgNTMwMiwgCisgICAgMzk3MCwgMTI5MzQ4LCAxMjQ1NSwgMTc5MywgMTI0OTgyLCAwLCA3NTAzNiwgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCAKKyAgICA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgNzg4MzUsIDEzMjE5LCA5NTY5LCAxMjkwNDEsIDc0MzgzLCAwLCA3NDE5NywgCisgICAgMTI5MDg5LCA1NTAwLCA4ODEzLCA5ODM0MTQsIDEyODYxMiwgNjg4NjAsIDUzMjIsIDEyMDk0NCwgNzgzNDAsIDQzNjMxLCAKKyAgICA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDEzMjgyLCAzMzYwLCA3ODM0NCwgCisgICAgMjIzMSwgNzI3MjYsIDkyNDg4LCA5OTI2LCA3MTk3LCAxMjgyNDgsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIDEyNDksIDc4MzYwLCAKKyAgICA3ODM2MSwgNzgzNTYsIDc4MzU4LCA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIDQzMTYyLCA0MTgxNSwgCisgICAgNDExNTAsIDEyODkxMSwgMTA1NzEsIDEwMDk2LCA2NzE2MSwgNjcxNjAsIDY3MTU5LCA2OTQ3LCA0MTE1MiwgODg3LCA5MjQ5LCAKKyAgICA2NTY1LCA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNjcxNTcsIDkzOTY2LCA2NjcwLCA2NzE3NSwgNjcxNzQsIDAsIAorICAgIDQzMDkyLCA0MzMyNSwgNjcxNzgsIDEwMTY4LCA2NzE3NiwgOTc4MSwgNjgyNDgsIDkxOTAsIDEyMDk4MSwgOTY2NiwgODI2OSwgCisgICAgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCAxMjg1NTYsIDcyNDA5LCA3ODI1NiwgCisgICAgNzI0MDgsIDc4MzUyLCA5MjIxMiwgNzUwNjMsIDcyODM5LCAwLCAxMzc4LCA5NTA5LCAxOTQ2MzQsIDkyOTk2LCA3MjQwNywgCisgICAgMzA2NiwgOTIyMjAsIDIyNzAsIDcyNDA2LCA5MjM1NSwgOTE3ODkwLCA3ODM2NSwgODc4NywgNjcxODksIDcyODE4LCAKKyAgICA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTI3Mzg0LCAwLCA2NDY1MiwgMTIxMjIyLCA3MjgzMywgMTI1MjI2LCA3ODM2NiwgCisgICAgNDIwODgsIDcxMDQwLCAxOTUwNjEsIDcxNzYsIDQzNzU2LCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCA3MTA1MCwgCisgICAgODExOSwgNjQ4NzQsIDcxMDUyLCA0Mzk2NCwgMTI4NjkwLCAxMjg2MzAsIDc0NTI1LCA3Mjg0MywgMTAwNzgzLCAxMjkzMCwgCiAgICAgMTM5NCwgNzQ1MTQsIDEyODQxMywgNzQ1MTUsIDk4MzcyNywgNjcxODQsIDI5OTgsIDk1MjcsIDY3MTgxLCA2NTE5MCwgCiAgICAgMTI5NzcsIDQyMDkwLCA2NzE4NSwgOTgzNjQ3LCAxMTkxMDAsIDQxMjM2LCA5MjIzNSwgNDIwMDUsIDQyMDAzLCA0MTIzNywgCiAgICAgNTg0OCwgNjcxOTMsIDY3MTkyLCAzNjcwLCA2NzE5MCwgNjcxOTcsIDY3MTk2LCA2NzE5NSwgNzg5MCwgMTI4MDcwLCAKLSAgICAxMTI5OCwgNDMzMTUsIDk4MzMxNSwgNjIyOSwgMTU5MywgMCwgMTI1MTIwLCA2MTksIDQ2MzUsIDY1MDgwLCAxMjcxNTgsIAorICAgIDExMjk4LCA0MzMxNSwgNzc4NzEsIDYyMjksIDE1OTMsIDAsIDEyNTEyMCwgNjE5LCA0NjM1LCA2NTA4MCwgMTI3MTU4LCAKICAgICAxMjE5NCwgNDEyMCwgNjUzMzcsIDY1MzM2LCAxMjg0MDcsIDExODA4LCA2NzE5OSwgNjcxOTgsIDkzNjYsIDQyNzkwLCAKICAgICA0MjAwNiwgMTE5MTE1LCA2NTMyNywgNjUzMjYsIDY1MzI1LCAxMDc1NywgMTUwNywgNDIyMTYsIDY1MzIxLCA2NTMyMCwgCiAgICAgNDM5NDcsIDY1MzM0LCA0Mzk0NiwgNjUzMzIsIDY1MzMxLCA0MjA1OSwgNjUzMjksIDQyNjg5LCA5MjQyNywgOTEyOCwgCi0gICAgOTQwNDUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzODMwLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIAotICAgIDY1MzE0LCA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDEyMDg2MiwgNjU2MDksIDQxMjQxLCA3OTAzLCA0MTIzOSwgCi0gICAgNDM1MzMsIDc4NDU5LCA3MTg5LCAwLCAwLCA0Mzk0MSwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgNjYyOTIsIAotICAgIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMTIxMzUxLCA1NjIsIDEyMTY5LCAKLSAgICA2NTkwLCA2OTc2MiwgNjY0NTUsIDY0NzM4LCAzMjE5LCA2ODY1NCwgMTIxMDk2LCAxMjgyODEsIDEwMzcsIDEyODY3NywgCi0gICAgMjAyNSwgMTI4MjYzLCAxMzA5OCwgNzg0NDIsIDEwNjM3LCA0NTY4LCA1NDksIDE1NzAsIDQzODM5LCAyODM1LCA4MzA1MiwgCi0gICAgMTA2MjQsIDQzNjIzLCAxMTA3MiwgODMwNDUsIDEyODUyMywgODMwNDYsIDEyNjA2LCA3ODQzMywgMjgyNSwgODMwNDgsIAotICAgIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDgzMDQzLCAxMjA1OTMsIDEzMDcxLCAxMjEyODgsIDQ1MiwgCi0gICAgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIDkxNzkxNywgNjQ3MDMsIAotICAgIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgNDEwNDcsIDE2NjgsIDExOTg0OSwgMTIxMTUwLCAKLSAgICAxMjgyNzUsIDExODcsIDk4MzM4NywgNDI2MjgsIDc4NTc1LCA4Mjk1MywgNzE4NjMsIDgyOTU1LCAzMjQwLCAxMjg1MTgsIAotICAgIDEyMTUxLCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIDgxNjYsIDAsIDExODkzMiwgMCwgNjY4MjcsIDE2MjMsIDY1Mjk3LCAKLSAgICAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3Mjk1LCAxNTQxLCA2NTA0OCwgMTkwOSwgODg2NCwgMCwgNjY0MDIsIAotICAgIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDcwNDc2LCA5MjI5NiwgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCA2ODA4MywgCi0gICAgMzU2NywgNzAxLCA2NTkzNiwgMzQ4OSwgMTIwODk5LCA3MDQ2MiwgNzAxNzIsIDExNDAzLCAwLCAwLCA4Mjk4NiwgMzc5NiwgCi0gICAgNjgwMCwgNzA0NzIsIDM5OTQsIDExNDIxLCA3NDYxMSwgMTk1MDc2LCAxOTUwNzgsIDY4MDM2LCAwLCAwLCA2NDg1NywgCi0gICAgODM1MDgsIDI4NTUsIDc0NDE4LCA2NjMwOCwgNDE2MjEsIDY4MjE0LCA4MzUxMywgMTI3ODE3LCAxMDY1NCwgODI5NDUsIAotICAgIDExOTIyNiwgMTIxNjQsIDMyNDYsIDc5MDYsIDQzOTcyLCA2NTg0NywgNzE4MiwgMCwgMTMwMjQsIDY2Mjc2LCA3NDI3MCwgCi0gICAgODMwNjksIDEyNTA5MCwgMTIxMTE1LCAwLCAxNDk2LCA3NDcsIDAsIDk0MiwgMjM3OCwgNDMxMzYsIDgzMDMxLCA4NDY2LCAKLSAgICA4MzA3NSwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDc0NjM3LCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIAotICAgIDEyNjUwMCwgNjQ2MzQsIDkyMzYyLCA3MDIwMiwgMTE2MTIsIDkzMDA4LCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIAotICAgIDExNjA5LCA2NjMxMywgOTI1NjgsIDAsIDUyODYsIDExOTI5NywgODMwNTksIDk4MzI1MywgNjQ5MjUsIDEyMDI4MywgCi0gICAgMTI3MjA0LCAxMTg5ODIsIDcxOTA1LCA3NzA1LCAxMTk0MiwgMTEzMDUsIDEyNzIwMywgMzMwOSwgODI5NzksIDkyMDYsIAotICAgIDgyOTgwLCAxMTM4MjQsIDY4MDIsIDcwMzUzLCA0MTY1MywgMTI4MCwgMTI0MSwgNzE2OCwgMTIwOTYsIDAsIDY2NjE1LCAKLSAgICA0MjU2NSwgNDE2NTEsIDAsIDkxNzYyNywgODMwNDIsIDQxNjUwLCA2NjUwNywgNjY0NzAsIDc0NDcyLCAxMjkxNCwgNDE0OTEsIAotICAgIDQzOTAxLCA5NDEwNiwgNjA3OCwgOTk1NCwgNzg4MjIsIDE0NzUsIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgCi0gICAgNDEwNjIsIDAsIDExMzY4MCwgMzI1NiwgMTAxODksIDQyMDc2LCA0MzI1MiwgNzg4MjMsIDY4MDg5LCA4NzI3LCAxMjA5MjIsIAotICAgIDY1ODc1LCAwLCAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDEyMDkwNiwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIAotICAgIDkwMTUsIDcxMzUxLCAwLCAzNjM1LCA2NDMzNywgOTI3NTksIDEyNTA1NCwgMCwgNzE5NSwgODMzNDYsIDIwMDcsIDY0NDMxLCAKLSAgICAxOTUwNzUsIDAsIDkyMTk3LCAxMjcwOTAsIDYzNSwgMCwgMTI5MDgyLCA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgCi0gICAgMTI4NTEwLCAxMjE0NTcsIDQzOTA1LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTI3NzcwLCA0MTc2LCA3MDA1MCwgMjAzNCwgCi0gICAgNzg0MjMsIDExMTU0LCA2NTg5MSwgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODU0NCwgNzg1OTYsIDE5NDYwMiwgMzY0OSwgCi0gICAgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgMzYzNCwgMTIwMjkxLCA3MTg4NSwgNjc2NzcsIDEyMDEyNCwgNzg2NiwgNzUwNDUsIAotICAgIDExNDAyLCA0MjE0NiwgOTQwMzIsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgCi0gICAgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCA3MTE4MywgNjk3MjksIDAsIDEyMDc5NywgNzE3OCwgMTIwODUxLCAKLSAgICA5ODM4MzYsIDQxNjgwLCAxMjg0NjksIDgzMDk4LCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAKLSAgICAxMjg0OTAsIDY3ODc3LCAxOTQ1NjEsIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgCi0gICAgMTA4MTgsIDgzMDkxLCA5OTUzLCAxOTQ4OTUsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIAotICAgIDYxNjksIDEyODcxLCAxNTUxLCAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgOTE3OTI0LCA2Nzg3NSwgCi0gICAgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTI1MDc5LCA4MzM1NCwgNjgzNjQsIDEyMDc3OSwgNDg5MSwgMCwgMTA2NDEsIDAsIAotICAgIDczNzQ2LCAxMjA5NDUsIDY4MzUyLCAwLCA3Mzc4NywgMTI4ODU4LCAxMjcwOTQsIDcxOTksIDExMTMxLCAwLCAwLCAwLCAKLSAgICA5ODM4NTIsIDEyNjk3OSwgNDI2ODUsIDQyNjc5LCAxOTMsIDc4Nzg5LCAwLCAwLCA0MjY2NywgMCwgNTI3MSwgNjgzMjMsIAotICAgIDkyNTE3LCA4MzM1NiwgMTM2MiwgMTMyOTcsIDAsIDcxODgwLCAwLCA5ODMzMzMsIDczNzg5LCAwLCA2NjU4LCA0NDI2LCAwLCAKLSAgICA2NjgzMCwgOTgzODQyLCA4MzEwMywgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDc4NjIxLCA2NzgyMiwgMjQxNiwgMzMxMCwgCi0gICAgNDI3MDMsIDgzMTA3LCAzNzksIDAsIDQzNzU1LCA3MDUwNCwgNDM2NDcsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIAotICAgIDQ1NDksIDE5NDczOCwgMCwgNzEyNTMsIDcwNzg0LCAxMDgwNywgOTU1OCwgOTMwMjcsIDAsIDg1MTUsIDg2ODgsIDEyODY2LCAKLSAgICA2NTMwOCwgMzI5NCwgODMxNDMsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCA4MzE0OCwgOTI0NTgsIAotICAgIDczNzU3LCA2NjQ1NiwgNDIzNTksIDEyODQzOSwgMjAzMSwgOTgzODkwLCA3MjAyLCAxMjgyMzIsIDEyNjc2LCA0MjcyOSwgCi0gICAgNzQ3NzcsIDMyMTUsIDEyMDk4MiwgNzcxMCwgMTYxMCwgNzM4MDEsIDEyODgwNywgMCwgNjU2ODIsIDAsIDQzOTE3LCAKLSAgICA2NTkyNCwgOTk3NCwgMjI4LCA0MzkyMiwgMTUwMSwgMTI3OTk0LCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMTE4OTI3LCAKLSAgICA0Mjk5OSwgMTcyNSwgNjU1MzMsIDgxOTYsIDc0NzYsIDc0Mzk5LCAwLCA2Njg2OCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgCi0gICAgNzQ4MywgNDM4OTgsIDAsIDgxMDQsIDcwMTI4LCA3NDc0LCA0MzkxNCwgODMwODAsIDEyNjUwNywgMTA0MTQsIDEzMDAxLCAKLSAgICA4MTQxLCA5ODMyMzksIDQyNTM3LCAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAyNTQ1LCA0MjkzNCwgCi0gICAgMTI3MTY2LCAwLCA3NDE5MCwgMTI4NDc3LCA3MDQxMCwgOTgzNzg2LCA0Mjc2MiwgMTk0NzA4LCA0MjkxNCwgMTY1MCwgMjYyLCAKLSAgICAxNjM3LCAxMjg1MDIsIDc5MDEsIDMyMzgsIDgzMDI2LCA0MTg2MSwgMCwgMTIwMjExLCA2NTE1OCwgMTA4NjAsIDc0OTU5LCAKLSAgICA0MzY1OCwgNzUyNywgODMwODYsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDkzOTg5LCAxMjc3NTMsIDExOTgxMCwgCi0gICAgNzE5NCwgNTI5MSwgMCwgNDM2NjYsIDEzMTI5LCAxMjg2ODQsIDkwODQsIDEyMTAzOSwgODczNywgOTgzMTY1LCAxMjg4MSwgCi0gICAgNzUwNjYsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCA5ODM4ODIsIDM1NjQsIDAsIDY5OTc4LCAxNzksIDQzNjQ0LCAKLSAgICA3NTA0OSwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDEyOTA0MiwgNzAzNDcsIDExOTAwOSwgMjg1MCwgODA4NCwgCi0gICAgOTgzMDg1LCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIDc0NzU0LCA4MzUyMiwgNDIwNzIsIDkyNzM2LCAKLSAgICAxMTk4NDIsIDEwMzk4LCA4MzM4NiwgODM1MjMsIDgzNzcsIDExOTMxMiwgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAKLSAgICAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDkyNDcwLCAyOTIsIDExMTE5LCAxMTk4NDUsIDExOTg0NCwgMzIyMSwgMTc2MywgCi0gICAgOTI0NjMsIDQ2MTIsIDY3NzI5LCAxMTk4NTAsIDcyNTMsIDcwNDU2LCA2ODM5MSwgNzUwMDIsIDEwNzgyLCAzNjM3LCAKLSAgICAxMjk5NiwgNDM1NDIsIDExMzY3NiwgNjQ1NzgsIDgzNDQ5LCAzMjI4LCA2OTYzNiwgODc4MywgOTgzNjMyLCAxMTk2MTQsIAorICAgIDk0MDQ1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzEzNSwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKKyAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAxMDAzNTksIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIAorICAgIDQzNTMzLCA3ODQ1OSwgNzE4OSwgMTAwNDE4LCA5ODMyMjcsIDQzOTQxLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCAKKyAgICA5MTMxLCA2NjI5MiwgNDYxNSwgMTI2OTUsIDEyNzc1MiwgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCA5ODM4ODcsIAorICAgIDEyMTM1MSwgNTYyLCAxMjE2OSwgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDEyMTA5NiwgCisgICAgMTI4MjgxLCAxMDM3LCAxMjg2NzcsIDIwMjUsIDExOTE1OSwgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCAKKyAgICA0MzgzOSwgMjgzNSwgODMwNTIsIDEwNjI0LCA0MzYyMywgMTEwNzIsIDgzMDQ1LCAxMjA1NjEsIDgzMDQ2LCAxMjYwNiwgCisgICAgNzg0MzMsIDI4MjUsIDgzMDQ4LCAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA4MzA0MywgMTIwNTkzLCAKKyAgICAxMzA3MSwgMTIxMjg4LCA0NTIsIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCAKKyAgICAxMTg5NDUsIDY0NzAzLCAxMTkxOTEsIDQyMzA4LCA3MTgxLCAxMjgyNzYsIDQxMzMyLCAwLCAxMjMzMywgNDEwNDcsIDE2NjgsIAorICAgIDExOTg0OSwgMTIxMTUwLCAxMjcyOTUsIDExODcsIDEyODg3NSwgNDI2MjgsIDc4NTc1LCA4Mjk1MywgNzE4NjMsIDgyOTU1LCAKKyAgICAzMjQwLCAxMjg1MTgsIDkyMTMsIDAsIDExNTkxLCA0MTA2NSwgNTMyMywgODE2NiwgNzA3MzksIDExODkzMiwgMTI3MTExLCAKKyAgICA2NjgyNywgMTYyMywgNjUyOTcsIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAxMjcwODEsIDE1NDEsIDY1MDQ4LCAKKyAgICAxOTA5LCA4ODY0LCAwLCA2NjQwMiwgMTA3MzYsIDkyNTA4LCAxMTU3MSwgNzYxNSwgNzA0NzYsIDkyMjk2LCA0MjM3LCAKKyAgICA5MjU3NiwgMTAzNSwgNjU4MTUsIDY4MDgzLCAzNTY3LCA3MDEsIDY1OTM2LCAzNDg5LCAxMjA4OTksIDcwNDYyLCA3MDE3MiwgCisgICAgMTE0MDMsIDAsIDAsIDgyOTg2LCAzNzk2LCA2ODAwLCA3MDQ3MiwgMzk5NCwgMTE0MjEsIDc0NjExLCAxMjc5MTEsIAorICAgIDE5NTA3OCwgNjgwMzYsIDcwNjU5LCAwLCA2NDg1NywgODM1MDgsIDI4NTUsIDcwNjk3LCA2NjMwOCwgNDE2MjEsIDY4MjE0LCAKKyAgICA4MzUxMywgMTI3ODE3LCAxMDY1NCwgODI5NDUsIDExOTIyNiwgMTIxNjQsIDMyNDYsIDc5MDYsIDQzOTcyLCA2NTg0NywgCisgICAgNzE4MiwgMCwgMTMwMjQsIDY2Mjc2LCA3NDI3MCwgODMwNjksIDEyNTA5MCwgMTIxMTE1LCAwLCAxNDk2LCA3NDcsIAorICAgIDkxNzk5OSwgOTQyLCAyMzc4LCA0MzEzNiwgODMwMzEsIDg0NjYsIDgzMDc0LCA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAKKyAgICAxMTYxNywgNzQ2MzcsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgMTI2NTAwLCA2NDYzNCwgOTIzNjIsIDcwMjAyLCAxMTYxMiwgCisgICAgOTMwMDgsIDY3NjAwLCAyMzc0LCA5NDA2NiwgODQ3NSwgMTE2MDksIDY2MzEzLCA5MjU2OCwgMCwgNTI4NiwgMTE5Mjk3LCAKKyAgICA4MzA1OSwgOTgzMjUzLCA2NDkyNSwgMTIwMjgzLCAxMjcyMDQsIDExODk4MiwgNzE5MDUsIDc3MDUsIDExOTQyLCAxMTMwNSwgCisgICAgMTI3MjAzLCAzMzA5LCA4Mjk3OSwgOTIwNiwgODI5ODAsIDExMzgyNCwgNjgwMiwgNzAzNTMsIDQxNjUzLCAxMjgwLCAxMjQxLCAKKyAgICA3MTY4LCAxMjA5NiwgMCwgNjY2MTUsIDQyNTY1LCA0MTY1MSwgOTgzODY5LCA5MTc2MjcsIDgzMDQyLCA0MTY1MCwgNjY1MDcsIAorICAgIDY2NDcwLCA3NDQ3MiwgMTI5MTQsIDQxNDkxLCA0MzkwMSwgOTQxMDYsIDYwNzgsIDk5NTQsIDc4ODIyLCAxNDc1LCAKKyAgICAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIDQxMDYyLCAwLCAxMTM2ODAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgCisgICAgNDMyNTIsIDc4ODIzLCA2ODA4OSwgODcyNywgMTIwOTIyLCA2NTg3NSwgOTE3OTE2LCAxMjkzNDksIDEyNzc2MiwgMTA1NjIsIAorICAgIDc0MjE1LCA0MzA2NSwgMTIwOTA2LCAwLCAzMjQ4LCA3NDI5NywgMzI2MSwgOTAxNSwgNzEzNTEsIDExMzcxOCwgMzYzNSwgCisgICAgNjQzMzcsIDkyNzU5LCAxMjUwNTQsIDAsIDcxOTUsIDgzMzQ2LCAyMDA3LCA2NDQzMSwgMTk1MDc1LCAxOTQ2NzAsIDkyMTk3LCAKKyAgICAxMjcwOTAsIDYzNSwgOTgzMTE4LCAxMjkwODIsIDY1NjEzLCA3NzkwOSwgOTI0MjAsIDczOTk3LCAxMjc5ODAsIDEyMTQ1NywgCisgICAgNDM5MDUsIDc5ODQsIDg2MDAsIDc0NDM0LCAxMjEwNDcsIDQxNzYsIDcwMDUwLCAyMDM0LCA3ODQyMywgMTExNTQsIDY1ODkxLCAKKyAgICAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4NTQ0LCA3ODU5NiwgMTI5MDk0LCAzNjQ5LCAxMzE0OSwgNDIxNDUsIDQyNzk4LCAKKyAgICAzNjM0LCAxMjAyOTEsIDcxODg1LCA2NzY3NywgMTIwMTI0LCA3ODY2LCA3NTA0NSwgMTE0MDIsIDQyMTQ2LCA5NDAzMiwgCisgICAgNzQyMzgsIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAxNzYxLCAxMTgxMiwgNjUzNzksIDY4Mzg2LCAKKyAgICAxMjgxODUsIDExNTksIDcxMTgzLCA2OTcyOSwgMCwgNjY3NjgsIDcxNzgsIDEyMDg1MSwgOTgzODM2LCA0MTY4MCwgCisgICAgMTI4NDY5LCA4MzA5OCwgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgMTI4NDkwLCA2Nzg3NywgCisgICAgMTk0NTYxLCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIDEwODE4LCA4MzA5MSwgCisgICAgOTk1MywgMTI4MDA4LCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCA2MTY5LCAxMjg3MSwgCisgICAgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIDkxNzkyNCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgCisgICAgNjY2NDgsIDEyNTA3OSwgNzg3MDgsIDY4MzY0LCAxMjA3NzksIDQ4OTEsIDkxNzkzMywgMTA2NDEsIDEyNTI2NSwgNzM3NDYsIAorICAgIDEyMDk0NSwgNjgzNTIsIDAsIDczNzg3LCAxMjAxOTUsIDEyNzA5NCwgNzE5OSwgMTExMzEsIDEyMDYxNywgMTk0NzAwLCAwLCAKKyAgICA5ODM4NTIsIDEyNjk3OSwgNDI2ODUsIDQyNjc5LCAxOTMsIDc4Nzg5LCAwLCAwLCA0MjY2NywgOTgzODY4LCA1MjcxLCAKKyAgICA2ODMyMywgOTI1MTcsIDgzMzU2LCAxMzYyLCAxMzI5NywgMTE4ODYyLCA3MTg4MCwgMTk1MDkwLCAxOTQ5NjksIDczNzg5LCAKKyAgICAxMjA5ODksIDY2NTgsIDQ0MjYsIDEyNzA5MywgNjY4MzAsIDk4Mzg0MiwgODMxMDMsIDcyNzYsIDQyMTYzLCA1MjIwLCAKKyAgICAxMDA2NzAsIDc4NjIxLCA2NzgyMiwgMjQxNiwgMzMxMCwgNDI3MDMsIDgzMTA3LCAzNzksIDEyOTE1OSwgNDM3NTUsIAorICAgIDcwNTA0LCA0MzY0NywgMzIyMywgNjU0OTIsIDEyODQsIDE5NDc3MSwgNDU0OSwgMTE1MjMsIDAsIDcxMjUzLCA3MDc4NCwgCisgICAgMTA4MDcsIDk1NTgsIDkzMDI3LCAxMjgwMDMsIDg1MTUsIDg2ODgsIDEyODY2LCA2NTMwOCwgMzI5NCwgODMxNDMsIDg1MjksIAorICAgIDEyODEwMSwgNDMzODUsIDc1NjQsIDkxNzk4NiwgNDMzMjksIDgzMTQ4LCA5MjQ1OCwgNzM3NTcsIDY2NDU2LCA0MjM1OSwgCisgICAgMTI4NDM5LCAyMDMxLCAxMjczOTQsIDcyMDIsIDEyODIzMiwgMTI2NzYsIDQyNzI5LCA3NDc3NywgMzIxNSwgMTIwOTgyLCAKKyAgICA3NzEwLCAxNjEwLCA3MzgwMSwgMTI4ODA3LCAwLCA2NTY4MiwgMCwgNDM5MTcsIDY1OTI0LCA5OTc0LCAyMjgsIDQzOTIyLCAKKyAgICAxNTAxLCAxMjc1MTIsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAxMTg5MjcsIDQyOTk5LCAxNzI1LCA2NTUzMywgODE5NiwgCisgICAgNzQ3NiwgNzQzOTksIDAsIDY2ODY4LCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCA3NDgzLCA0Mzg5OCwgMCwgODEwNCwgCisgICAgNzAxMjgsIDc0NzQsIDQzOTE0LCA4MzA4MCwgMTI2NTA3LCAxMDQxNCwgMTMwMDEsIDgxNDEsIDE5NDk0OSwgNDI1MzcsIAorICAgIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIDY4MDUsIDg2MzEsIDI1NDUsIDQyOTM0LCA5MjIwMywgMTI1MjExLCA3NDE5MCwgCisgICAgMTI4NDc3LCA3MDQxMCwgOTgzNzg2LCA0Mjc2MiwgMTk0NzA4LCA0MjkxNCwgMTY1MCwgMjYyLCAxNjM3LCAxMjg1MDIsIAorICAgIDc5MDEsIDMyMzgsIDgzMDI2LCA0MTg2MSwgOTgzNzYzLCAxMjAyMTEsIDY1MTU4LCAxMDg2MCwgNzQ5NTksIDQzNjU4LCAKKyAgICA3NTI3LCA4MzA4NiwgNDMzMTksIDY0MTksIDAsIDQ1LCAxMjgwNjAsIDY0NTg4LCA5Mzk4OSwgMTI3NzUzLCAxMTk4MTAsIAorICAgIDcxOTQsIDUyOTEsIDEwMDM5OCwgNDM2NjYsIDEzMTI5LCAxMjY2MzksIDkwODQsIDcyNzE3LCA4NzM3LCA5ODMxNjUsIAorICAgIDEyODgxLCA3NTA2NiwgMTI5MDYsIDk2MzksIDc5MTIsIDI2MjAsIDE5NDgzMCwgMzU2NCwgMTI3MzkzLCA2OTk3OCwgMTc5LCAKKyAgICA0MzY0NCwgNzUwNDksIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAxMjkwNDIsIDcwMzQ3LCAxMTkwMDksIDI4NTAsIAorICAgIDgwODQsIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgODM1MjIsIDQyMDcyLCAKKyAgICA5MjczNiwgMTE5ODQyLCAxMDM5OCwgODMzODYsIDgzNTIzLCA4Mzc3LCAxMTkzMTIsIDgyNDUsIDY4NDAxLCAzMTU4LCAKKyAgICA5MjM5NiwgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCA5MjQ3MCwgMjkyLCAxMTExOSwgMTE5ODQ1LCA3MjcxNSwgMzIyMSwgCisgICAgMTc2MywgOTI0NjMsIDQ2MTIsIDY3NzI5LCAxMTk4NTAsIDcyNTMsIDcwNDU2LCA2ODM5MSwgNzUwMDIsIDEwNzgyLCAzNjM3LCAKKyAgICAxMjk5NiwgNDM1NDIsIDExMzY3NiwgNjQ1NzgsIDgzNDQ5LCAzMjI4LCA2OTYzNiwgODc4MywgOTgzMDkzLCAxMTk2MTQsIAogICAgIDI3MzEsIDAsIDEyMDgzMywgNzg1ODUsIDQxMDIsIDc2OTYsIDczODc4LCAxMjE0MTcsIDEyODEzMiwgNzA4MTMsIDQzMzE2LCAKICAgICA0MTc3LCAxMTI4MywgOTA4OSwgMTIwOTE4LCA3Mzk5NiwgMTIxMTExLCA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAKLSAgICAwLCAwLCA2Mzc5LCA5MTc4MDQsIDExMTQyLCAxMjcxNzYsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMTI3MzgwLCA5ODM5MzEsIAotICAgIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDEyNDk2MiwgOTgzNjgzLCAyMDMzLCA3ODU3NywgNzg1NzYsIDgyOTY1LCA1NTI1NCwgCi0gICAgNzc0MCwgODI5NzQsIDcwNDQ4LCAxMjY1NTUsIDczOTY0LCA2ODUwNSwgOTM5ODgsIDY3NjEyLCA2NTY3NCwgMTI4MjQ0LCAKLSAgICA5NDExMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIDc0MDE5LCAxMjg1MjAsIDEyODA2NiwgCi0gICAgMTI4MDMxLCA4NTYxLCA0NTczLCAxMjEzNzUsIDUzMjYsIDkyNTcxLCAxMjA2MDUsIDcyMzAsIDgyNTcsIDEyMTQxNSwgCi0gICAgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCA0MzUxMSwgNzYyOCwgNjUwOTIsIDczOTAzLCAKLSAgICA2NDM1NSwgMTEzNDIsIDEyODU2MSwgMCwgOTgzNDM0LCAxMjgyMjYsIDEyNzAwMSwgMCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgCi0gICAgOTY3LCA5ODMzMzUsIDEyMDk4NSwgMTE5NDYsIDk4MzYwMiwgMzI1NywgMTI3MjA5LCAxMjMwNywgMTg0NSwgMTI5MDcyLCAKLSAgICA0MzUyNiwgMCwgMTE5NTczLCAxODg2LCA0MjM0MiwgMTAwODksIDg3MCwgNzY0OCwgMzQ5OSwgNzY2MiwgNzY1MiwgODc2LCAKLSAgICA4NzEsIDg3NywgNzY2NSwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgNDU2MywgMCwgOTE3ODkyLCA3NTkxLCA2NTg4NywgCi0gICAgODY3LCA5NTIwLCA4NzIsIDc2NTYsIDg2OCwgODczLCA3NjQyLCA3NjU5LCA4NjksIDg3NCwgNzY0NCwgMTIwNjc0LCA4NzUsIAotICAgIDc5MCwgMTI4MzAzLCAxMTg5MzgsIDE5NTA1MywgOTMwMzgsIDY2MTgyLCAxOTQ2MjMsIDU0MjksIDE5NTA1NSwgNjYxODAsIAotICAgIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCA5ODMyOTEsIDEyNzIxNCwgNDIwNjcsIDAsIDU0MzMsIDEwNjU3LCA3OTExLCAKLSAgICAxMjUxMTksIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAKLSAgICAxMjUwOTQsIDY3NjM3LCAxMjcyODYsIDk2NzksIDc0MTIyLCA5Mjk3OCwgOTE3NTg1LCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIAotICAgIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMTI3MjYzLCAxODUxLCAxMjQ5OTUsIDgzMzIwLCAxMTkwOCwgMCwgOTM2MCwgCi0gICAgMTE4ODk3LCAxMjA4NzQsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDExMTEyLCAwLCA5MjMyMSwgNDMzMTgsIAotICAgIDkyMzAyLCA4ODA5LCA2OTg4MSwgMCwgMTI2NTE4LCAxMjA2MDQsIDk4MzA1MiwgOTgzMjc3LCA5ODM0MzMsIDEyODQxMiwgMCwgCi0gICAgMTIwNTc3LCA3NDI3LCA5OTU4LCA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDEyNzE4NSwgMjQzMywgMTI4NjAyLCA2OTk3MywgCi0gICAgMzM1MiwgNzQzNjMsIDEyODY2OCwgMTIxMzQxLCA3OTMsIDc0NDA0LCAxMTE5NywgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIAotICAgIDY5OTc5LCA4MjA4LCA2ODMwOCwgNDE2OTUsIDE2NDcsIDExODg3NywgNzA4NDEsIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCAKLSAgICAxOTQ2MjgsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgNjg3NDIsIDEyMDU5NCwgNzQwODYsIDY4Nzc3LCA3MDE3OSwgCi0gICAgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCA5MTc2MDUsIDE5NDY1NCwgCi0gICAgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAxMjY2MTIsIDY3NzIzLCAyODQwLCA5ODM5MDUsIDc4ODI5LCA5ODM5MzksIAotICAgIDY2ODg3LCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDEyMTE2MSwgMTI4MDUxLCAxMjk5MSwgMTI0OTcxLCAyNjUxLCAKLSAgICA2ODAxNiwgOTgzMjY3LCAxMjczMjYsIDEyNTAzOCwgNzA4MzUsIDAsIDcwODQ0LCA0MzY0OCwgMTIwODEyLCA5MTc4MzMsIAotICAgIDQzMzIyLCA5MjY2MiwgMCwgMCwgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgCi0gICAgNzQ4OTQsIDExMTUyLCA5MjkwMywgNjU2MTAsIDIzOTEsIDkyOTA4LCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCAKLSAgICA2MTAsIDQyODAwLCA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIAotICAgIDEyODM0MCwgMTI4MjY2LCA2NDc0OSwgNjc4NTAsIDIxMDcsIDEyODI5MCwgNzQyNDksIDQ2MDUsIDEyODE3NCwgOTgzMTkyLCAKLSAgICA0MzM3MiwgNjU5NDUsIDEyNzI0OSwgMTExMTMsIDExOTU5MCwgMCwgMCwgNzA0OTUsIDk4NywgNjkyNywgMTE1NzIsIAotICAgIDQyMjYxLCAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgOTgzOTUxLCAxMjgyOTcsIDAsIDc4NzYyLCAxMjc4NjcsIDEyMTM2OCwgCi0gICAgMTEzMzQsIDQzMzI2LCAxMjYwOSwgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCA0NjI3LCAxMTkyNjksIDUyMDgsIDAsIAotICAgIDcwMDkwLCAxMDMzMiwgMjQyNCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIDczODk0LCAxMjg4NTIsIAotICAgIDU0MzIsIDY0OTY1LCA1NTI3LCA0MjMxNSwgMTA1MTYsIDc3OTAsIDU1MjgsIDEyODgzOCwgNDIxNDAsIDEyMDI4MSwgMCwgCi0gICAgOTgzNzc3LCA0MzU0NSwgOTg4NywgMTIxNDc3LCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIDMyMDYsIDEyMDI3OCwgCi0gICAgNzg4NCwgMCwgMTI4NTY2LCA3NDkxMCwgMTI4NjY2LCAyMTEsIDI1MDksIDkyOTA0LCA3MDgyMiwgNjg2NzIsIDMyMjAsIAotICAgIDQyMjM1LCA3ODQ4MCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAxMjcyNTgsIAotICAgIDU4NTIsIDAsIDc4NDgyLCAxMjcyNTksIDE3MDgsIDAsIDc4NDgxLCAyNjIzLCAxMTk0MywgMTI4NzAwLCA2OTIyNiwgCi0gICAgNjk5NzQsIDQ2OTgsIDY2NTA5LCAxMDY2LCAxMTk5MjEsIDQ3MDEsIDk4Mzg3NiwgMTIwMjg1LCA3MDQ0NywgOTQxMTEsIAotICAgIDgyNjcsIDAsIDE0MjEsIDY2NDI2LCA3NTE2LCAxMjc1NTIsIDI2MjUsIDk4MzY0MSwgODAzNCwgNzQzMDksIDAsIDM2MzEsIAotICAgIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDAsIDk4MzA2NSwgMCwgNDMzODQsIDEyNjYwLCAxMjg2OTMsIDEyODI3MCwgMCwgCi0gICAgNzQ4NTAsIDQxMDY5LCA3MDE4NSwgMTI4MTU2LCAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgNzk5MCwgOTgzNDg5LCAKLSAgICAzOTkwLCAxMjUwNTAsIDk4MzI2NCwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCA3MDQ1NywgMTAzMCwgMTE4ODAwLCAKLSAgICA5MjU2MywgOTUxMywgNDEwNTksIDkzNTcsIDc0OTg4LCAxNzczLCA3NzkzOSwgMTIwMzUwLCAxMjQ5NjEsIDYzMzksIDc3NDUsIAotICAgIDk4NDQsIDEyNzIyMCwgNjQ2NTAsIDk0LCAxODgwLCA3NDc2NiwgMTEzNzE5LCA4OTA4LCA5ODMyMjIsIDEyODcwNywgCi0gICAgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDY4NzY5LCAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzYsIDAsIDE3NTcsIAotICAgIDY5NjQsIDQ2OTYsIDAsIDEyMDMzMywgNjQ3ODUsIDczOTQsIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAKLSAgICAxOTQ3MDcsIDEyMDM0NCwgNDM5ODgsIDcwNDIzLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgCi0gICAgNjk4OTQsIDQzMTcxLCAxNDU5LCAxMjgyMjQsIDY1MjQzLCA3ODYzOCwgMTk5NTMsIDEyOTA3OCwgMTUwNCwgNzAwNjQsIDAsIAotICAgIDEyOTEzLCA3NDIwNiwgNzUyOSwgMTI4NzQ1LCAxMjc4NjgsIDcwMjAzLCAxMjA3ODIsIDQxMTMsIDEyMDkyOSwgMjM3MiwgCi0gICAgMzM2LCAwLCA3NTA5LCAxMjE1MiwgMTk0ODg1LCA2ODIsIDc2NTUsIDQxNTA1LCAwLCA2NDc0MywgMTA1OTMsIDE3MDMsIAotICAgIDkyNDY3LCA3NzkxMSwgODAzMywgNjk5NTMsIDAsIDk4MTAsIDEyNzI2OSwgMTIwMDEzLCAxMjk3MCwgMCwgNDIzNTEsIAotICAgIDEwMTA5LCA3NDUzNSwgNzQwNjgsIDc0OTIxLCAwLCA5MjY5MCwgMCwgNjUwNjgsIDc0MjkxLCAxOTY1LCA3MDY5LCA0MzMxMiwgCi0gICAgMCwgNzM4ODcsIDExMTMwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDExMTQ1LCAxMjExMTcsIDc0MjM5LCAKLSAgICA0MTMxNywgOTI2MTQsIDIwOTEsIDc0NTQ1LCAyMDkwLCA2OTkxMiwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDExMTYxLCAKLSAgICAxMDQ5OCwgMjA4MywgNzc4ODgsIDcxMTk2LCAwLCAxMTkyMzYsIDYzNCwgMTI0OTcwLCA5MjI5MCwgMTk0ODg2LCA2OTc3OSwgCi0gICAgNDE2NSwgODc0NiwgMTk1MDQ4LCA5NjU0LCAxMjg1NiwgNjkyNCwgNzY2MCwgNzA2NiwgMTk0NjkzLCA3MDQxNSwgMTI4MTM1LCAKLSAgICA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCA0MTAzOSwgMTI3NDgzLCAxMjQ5NjUsIDY4MCwgMjMwMiwgMTI4MjAwLCAKLSAgICAxMTgxLCA3MDU2LCAzMTc0LCA2NzI0OCwgMCwgOTI2NjgsIDY1NjY1LCAxMjczNzUsIDExMzc3NiwgNjkyMCwgMCwgOTIyOTUsIAotICAgIDEyNjYwNiwgMTE4OTY1LCA2ODMxOCwgNjQ2NDQsIDEyNjk4MSwgNzQxMTksIDY4MjM4LCA0MTAyOCwgNzQwMjUsIDYyMzEsIAorICAgIDEwMDU3MiwgMTI3ODEyLCA2Mzc5LCA5MTc4MDQsIDExMTQyLCAxMjcxNzYsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMTE5MTIxLCAKKyAgICA5ODM5MzEsIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDEyNDk2MiwgOTgzMzI5LCAyMDMzLCA3ODU3NywgNzg1NzYsIAorICAgIDgyOTY1LCA1NTI1NCwgNzc0MCwgODI5NzQsIDcwNDQ4LCAxMjY1NTUsIDczOTY0LCA2ODUwNSwgOTM5ODgsIDY3NjEyLCAKKyAgICA2NTY3NCwgMTI3NTUyLCA5NDExMCwgNDE2ODksIDk4MzQxMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgNzQwMTksIAorICAgIDEyODUyMCwgMTI4MDY2LCAxMjgwMzEsIDg1NjEsIDQ1NzMsIDEyMTM3NSwgNTMyNiwgOTI1NzEsIDEyMDYwNSwgNzIzMCwgCisgICAgODI1NywgMTIxNDE1LCA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDQzNTExLCA3NjI4LCAKKyAgICA2NTA5MiwgNzM5MDMsIDY0MzU1LCAxMTM0MiwgMTAwNTc5LCA5ODM3MzIsIDE5NDkzOSwgMTI4MjI2LCAxMjcwMDEsIAorICAgIDEyNzk0NCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgOTY3LCAxMDA0ODEsIDEyMDk4NSwgMTE5NDYsIDEyOTAzMiwgMzI1NywgCisgICAgMTI3MjA5LCAxMjMwNywgMTg0NSwgMTAwNTc4LCA0MzUyNiwgOTgzMDg0LCAxMTk1NzMsIDE4ODYsIDQyMzQyLCAxMDA4OSwgCisgICAgODcwLCA3NjQ4LCAzNDk5LCA3NjYyLCA3NjUyLCA4NzYsIDg3MSwgODc3LCA3NjY1LCA4NzgsIDQyMDE1LCA4NzksIDQzNjkyLCAKKyAgICA0NTYzLCA5ODMyNDksIDkxNzg5MiwgNzU5MSwgNjU4ODcsIDg2NywgOTUyMCwgODcyLCA3NjU2LCA4NjgsIDg3MywgNzY0MiwgCisgICAgNzY1OSwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCA3OTAsIDEyMTA4MiwgMTE4OTM4LCAxMDA0MjcsIDkzMDM4LCAKKyAgICA2NjE3NywgMTk0NjIzLCA1NDI5LCAxOTUwNTUsIDY2MTgwLCAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgMTk0OTY2LCAxMTkyNDQsIAorICAgIDQyMDY3LCAxMTk5OTMsIDU0MzMsIDEwNjU3LCA3OTExLCAxMjUxMTksIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCAKKyAgICA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAxMjUwOTQsIDY3NjM3LCAxMjcyODYsIDk2NzksIDc0MTIyLCAKKyAgICA5Mjk3OCwgOTE3NTg1LCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMTI3MjYzLCAKKyAgICAxODUxLCAxMjA4MjMsIDgzMzIwLCAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCAxMjA4NzQsIDQyNzc2LCA2NjE4NywgMTI4MzcsIAorICAgIDg4MjksIDc3MTEsIDExMTEyLCAxMjg3ODcsIDkyMzIxLCA0MzMxOCwgOTIzMDIsIDg4MDksIDY5ODgxLCAxMjg1NjQsIAorICAgIDEyNTIyOSwgMTIwNjA0LCA5ODMwNTIsIDk4MzIzOCwgOTgzNDMzLCAxMjg0MTIsIDAsIDEyMDU3NywgNzQyNywgOTk1OCwgCisgICAgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxMjcxODUsIDI0MzMsIDEyODYwMiwgNjk5NzMsIDMzNTIsIDc0MzYzLCAxMjY2MDEsIAorICAgIDEyMTM0MSwgNzkzLCA3NDQwNCwgMTExOTcsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCA2OTk3OSwgODIwOCwgNjgzMDgsIAorICAgIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDcwODQxLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgMTI4Mzc3LCAxMjc5ODksIAorICAgIDQxMzc2LCAxMTk5NzgsIDY4NzQyLCAxMjA1OTQsIDc0MDg2LCA2ODc3NywgNzAxNzksIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAKKyAgICAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgMTk1MDA2LCAxOTQ2NTQsIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCAKKyAgICA3ODIyMSwgNzI3NDYsIDY3NzIzLCAyODQwLCAxMjg4NDIsIDc4ODI5LCA5ODM5MzksIDY2ODg3LCAzMjQ1LCA5MDY4LCAKKyAgICA2ODE5NCwgNjQ3MjUsIDEyMTE2MSwgMTI4MDUxLCAxMjk5MSwgMTI0OTcxLCAyNjUxLCA2ODAxNiwgOTgzMjY3LCA3Mjg3MywgCisgICAgMTAwNjAxLCA3MDgzNSwgMCwgNzA4NDQsIDQzNjQ4LCAxMjA4MTIsIDE5NDg1NCwgNDMzMjIsIDkyNjYyLCAwLCAwLCAKKyAgICA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCA3NDUyLCAzMjg1LCA3NDg5NCwgMTExNTIsIAorICAgIDkyOTAzLCA2NTYxMCwgMjM5MSwgOTI5MDgsIDkyMjQ4LCA2NzEsIDI1MCwgNzQzNCwgNjE4LCA2NjgsIDYxMCwgNDI4MDAsIAorICAgIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgNjI4LCAzOTA1LCA3MzgxMCwgMTI4MzQwLCAKKyAgICAxMDA3NDEsIDY0NzQ5LCA2Nzg1MCwgMjEwNywgMTI4MjkwLCA3NDI0OSwgNDYwNSwgMTI4MTc0LCAxMDA3NDUsIDQzMzcyLCAKKyAgICA2NTk0NSwgNzI3MTAsIDExMTEzLCAxMTk1OTAsIDAsIDEwMDc0OSwgNzA0OTUsIDk4NywgNjkyNywgMTE1NzIsIDQyMjYxLCAKKyAgICAxMTQ2NCwgMzM2NSwgOTk3MSwgNzA2NzMsIDEyNzk0MiwgMTI4Mjk3LCAwLCA3ODc2MiwgMTI3ODY3LCAxMjEzNjgsIAorICAgIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgMTE5MjY5LCA1MjA4LCAKKyAgICAxMTM2OTAsIDcwMDkwLCAxMDMzMiwgMjQyNCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIDQyMTQyLCAKKyAgICAxMjg4NTIsIDU0MzIsIDY0OTY1LCA1NTI3LCA0MjMxNSwgMTA1MTYsIDc3OTAsIDU1MjgsIDEyODgzOCwgNDIxNDAsIAorICAgIDEyMDI4MSwgMCwgMTk1MDg4LCA0MzU0NSwgOTg4NywgMTIxNDc3LCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIAorICAgIDMyMDYsIDEyMDI3OCwgNzg4NCwgMCwgMTI4NTY2LCA3NDkxMCwgMTI4NjY2LCAyMTEsIDI1MDksIDkyOTA0LCA3MDgyMiwgCisgICAgNjg2NzIsIDMyMjAsIDQyMjM1LCA3ODQ4MCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCA5ODM4MzMsIDcwNDgsIAorICAgIDQ1OTAsIDEyNzI1OCwgNTg1MiwgOTgzODE5LCA3ODQ4MiwgMTI3MjU5LCAxNzA4LCAwLCA3ODQ4MSwgMjYyMywgMTE5NDMsIAorICAgIDEyMTE0MCwgNjkyMjYsIDY5OTc0LCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCAxMDA1NjQsIDEyMDI4NSwgCisgICAgNzA0NDcsIDk0MTExLCA4MjY3LCAwLCAxNDIxLCA2NjQyNiwgNzUxNiwgMTIwNDA2LCAyNjI1LCAxMjgyNDIsIDgwMzQsIAorICAgIDc0MzA5LCAxOTQ3MTUsIDM2MzEsIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDEyNzAzMiwgMTIwNjEzLCA5ODM1NzgsIAorICAgIDQzMzg0LCAxMjY2MCwgMTIyODgzLCAxMjgyNzAsIDAsIDc0ODUwLCA0MTA2OSwgNzAxODUsIDEyODE1NiwgMTIwOTksIAorICAgIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDk4MzQ4OSwgMzk5MCwgMTI1MDUwLCA5ODMyNjQsIDY2MzY4LCA1MDE3LCAKKyAgICA2NDk1NiwgNzA3MSwgMCwgNzA0NTcsIDEwMzAsIDExODgwMCwgOTI1NjMsIDk1MTMsIDQxMDU5LCA5MzU3LCA3MDY3NSwgCisgICAgMTc3MywgNzc5MzksIDEyMDM1MCwgMTI0OTYxLCA2MzM5LCA3NzQ1LCA5ODQ0LCAxMjcyMjAsIDY0NjUwLCA5NCwgMTg4MCwgCisgICAgNzQ3NjYsIDExMzcxOSwgODkwOCwgOTgzMjIyLCAxMjgyMzYsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCA2ODc2OSwgCisgICAgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM2LCAxMDA2NjksIDE3NTcsIDY5NjQsIDQ2OTYsIDAsIDEyMDMzMywgNjQ3ODUsIAorICAgIDczOTQsIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAxOTQ3MDcsIDEyMDM0NCwgNDM5ODgsIDcwNDIzLCA4NjEwLCAKKyAgICA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgNjk4OTQsIDQzMTcxLCAxNDU5LCAxMjgyMjQsIDY1MjQzLCAKKyAgICA3ODYzOCwgMTk5NTMsIDEyOTA3OCwgMTUwNCwgNzAwNjQsIDcyNDIxLCAxMjkxMywgNzA3MjIsIDc1MjksIDEyMDYwOCwgCisgICAgMTI3ODY4LCA3MDIwMywgMTIwNzgyLCA0MTEzLCAxMjA5MjksIDIzNzIsIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDE5NDg4NSwgCisgICAgNjgyLCA3NjU1LCA0MTUwNSwgOTgzNzUzLCA2NDc0MywgMTA1OTMsIDE3MDMsIDkyNDY3LCA3NzkxMSwgODAzMywgNjk5NTMsIAorICAgIDAsIDk4MTAsIDEyNzI2OSwgMTIwMDEzLCAxMjk3MCwgOTgzMjA1LCA0MjM1MSwgMTAxMDksIDc0NTM1LCA3NDA2OCwgCisgICAgNzQ5MjEsIDAsIDkyNjkwLCAxMjI4ODYsIDY1MDY4LCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIDAsIDczODg3LCAKKyAgICAxMTEzMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAxMTE0NSwgMTIxMTE3LCA3NDIzOSwgNDEzMTcsIAorICAgIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgNjk5MTIsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAxMTE2MSwgMTA0OTgsIAorICAgIDIwODMsIDc3ODg4LCA3MTE5NiwgMCwgMTE5MjM2LCA2MzQsIDEyNDk3MCwgOTIyOTAsIDE5NDg4NiwgNjk3NzksIDQxNjUsIAorICAgIDg3NDYsIDE5NTA0OCwgOTY1NCwgMTI4NTYsIDY5MjQsIDc2NjAsIDcwNjYsIDEyNzA1MSwgNzA0MTUsIDEyODEzNSwgCisgICAgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgMjIzMywgMTI3NDgzLCAxMjQ5NjUsIDY4MCwgMjMwMiwgMTI4MjAwLCAxMTgxLCAKKyAgICA3MDU2LCAzMTc0LCA2NzI0OCwgOTgzMTcxLCA5MjY2OCwgNjU2NjUsIDEwMDU5NCwgMTEzNzc2LCA2OTIwLCAwLCA5MjI5NSwgCisgICAgNzA2NzIsIDExODk2NSwgNjgzMTgsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCA2ODIzOCwgNDEwMjgsIDc0MDI1LCA2MjMxLCAKICAgICAyNjEzLCA2NTMwMiwgNDA5ODksIDY4MjM5LCA2ODIzMCwgNjgyMzQsIDQyNzYwLCAwLCA0Mzg5NiwgMCwgNDA5ODcsIDQ2NjcsIAotICAgIDAsIDcxODQzLCA4ODI4LCA3Nzk5NSwgNzA1MDYsIDEyNDYsIDQ3NDYsIDEyODUwMSwgMTI4NTA4LCAxMTAyMSwgNDc0OSwgCi0gICAgOTI2NzUsIDkxNzg4MiwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAwLCAxNTY2LCA4MjE3LCAxMjcyMTAsIDY0NjUzLCAKLSAgICA3ODM4NiwgNzQ2MTcsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIDk1MSwgNzQ1NjgsIDkyOTgzLCA5ODM4NjcsIDc2MDQsIAotICAgIDk4MzI5MiwgNDAwOSwgNzAyNzcsIDcxODQ0LCAxMjA1NjIsIDAsIDk4MzcyMCwgNjQ4NjAsIDExOTEzOCwgMTE5MDY5LCAwLCAKLSAgICAxMjczNzAsIDQwNDgsIDk4MzU5OCwgODMwMDksIDcwMDI0LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIAotICAgIDEyOTA0NywgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIAotICAgIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MzUsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIDExODg0MCwgMCwgOTE3NTYyLCA3ODI5OSwgCi0gICAgMzM5OSwgOTg1MSwgOTE3NjA5LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMTI3NzY3LCAwLCA3MTg0MiwgCi0gICAgNzAxNzgsIDkyMzE0LCAwLCAxNzc3LCA5MTUxLCAxMTM3LCA2Njg2NywgNzQ5LCA0MjM2NiwgNzA0NDQsIDUzODUsIDcwNzkxLCAKLSAgICA3MjQzNSwgNzAxMjcsIDgzMzc3LCA1OTg5LCAxMjg5MDUsIDc0NjM2LCAxMjA4NDgsIDAsIDQxNjg1LCA2OTIyMywgMCwgCi0gICAgOTc2OSwgNDE2ODQsIDE5NDczNywgNTE5LCAxMTkyMzEsIDExNzQwLCA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCA3MDQxNiwgCi0gICAgNDEyOTcsIDAsIDM2NjYsIDcwNDIwLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCAKLSAgICA2NTU4LCAxMjcxNDksIDEyODA2NCwgNjk3NjUsIDkyNzc1LCAyNTIsIDAsIDQxMzAyLCAxMTkzNTAsIDgzNTA0LCAxMTg4MzksIAotICAgIDY5NzYzLCA2ODc2MiwgMTE3MjksIDg3MTksIDkwNjAsIDEyOTA5MSwgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMTI5NDEwLCAKLSAgICAxMTg3OTIsIDExNzM0LCA5MzAxMSwgMTE3MzAsIDExMzc0MSwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAKLSAgICAxMTcyOCwgNDM1NzIsIDk4MzEzOSwgMCwgNzc2NCwgNjg3NDEsIDExMDk0LCAxMjA4MjUsIDAsIDQzNDg5LCA0MjgyLCAKLSAgICA4Mjk4LCAwLCAwLCA3MDMyOCwgMTk0OTg2LCA3MDMyNCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDY1NTg3LCAKLSAgICA3MDQ0MiwgNjU2NzAsIDk4Mzk2MywgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCA5ODM4NjksIDcwMzI2LCAwLCAKLSAgICA3MTQ2MCwgMTIwNzY0LCA3MDMyMiwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCA3MDA1MywgOTgzNzEyLCAzNjQ3LCAKLSAgICAxMjAyMDcsIDI2MDIsIDEyODM0MSwgMTIxMTAzLCAxMjUwNDMsIDQxMTM1LCA4MzQ5OCwgMCwgMTIxMzI1LCA2NDYzMSwgCi0gICAgMTcyLCA0OTcxLCA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgNzc5MjYsIDc1OTcsIDEwNTI4LCAKLSAgICA3NTA1NCwgMCwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgOTgzOTcxLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgCisgICAgMTIxMjEyLCA3MTg0MywgODgyOCwgNzc5OTUsIDcwNTA2LCAxMjQ2LCA0NzQ2LCAxMjg1MDEsIDEyODUwOCwgMjI2OSwgCisgICAgNDc0OSwgOTI2NzUsIDkxNzg4MiwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAxMDA1OTUsIDE1NjYsIDgyMTcsIAorICAgIDEyNzIxMCwgNjQ2NTMsIDc4Mzg2LCA3NDYxNywgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgOTUxLCA3NDU2OCwgCisgICAgOTI5ODMsIDk4Mzg2NywgNzYwNCwgMTI4MjY2LCA0MDA5LCA3MDI3NywgNzE4NDQsIDEyMDExNSwgMTI2NjQyLCA5NDA3NCwgCisgICAgNjQ4NjAsIDEwMDU1MSwgMTE5MDY5LCAwLCAxMjczNzAsIDQwNDgsIDk4MzU5OCwgODMwMDksIDcwMDI0LCAxNjQ2LCAKKyAgICA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIDEyOTA0NywgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCAKKyAgICA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MzUsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIAorICAgIDExODg0MCwgOTgzNzI4LCA5MTc1NjIsIDc4Mjk5LCAzMzk5LCA5ODUxLCA5MTc2MDksIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAKKyAgICAxMjcwNTIsIDY3ODksIDEyNzc2NywgMCwgNzE4NDIsIDcwMTc4LCA5MjMxNCwgMCwgMTc3NywgOTE1MSwgMTEzNywgNjY4NjcsIAorICAgIDc0OSwgNDIzNjYsIDcwNDQ0LCA1Mzg1LCA3MDc5MSwgNzI0MzUsIDcwMTI3LCA4MzM3NywgNTk4OSwgMTI4OTA1LCA3NDYzNiwgCisgICAgMTIwODQ4LCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCAxOTQ3MzcsIDUxOSwgMTE5MjMxLCAxMTc0MCwgCisgICAgNTc2NiwgMCwgMCwgMjYwMCwgODg0OCwgNzA0MTYsIDQxMjk3LCAwLCAzNjY2LCA3MDQyMCwgNDEzMDAsIDc0NDY4LCAKKyAgICA2NTE2MCwgMCwgNjk2ODgsIDY5NzcxLCA3NDQ3OSwgMCwgNjU1OCwgMTI3MTQ5LCAxMjgwNjQsIDY5NzY1LCA5Mjc3NSwgCisgICAgMjUyLCA5ODMxNDIsIDQxMzAyLCAxMDAzNzEsIDgzNTA0LCAxMTg4MzksIDY5NzYzLCA2ODc2MiwgMTE3MjksIDg3MTksIAorICAgIDkwNjAsIDEyNTA3NywgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMTI5NDEwLCAxMTg3OTIsIDExNzM0LCA5MzAxMSwgMTE3MzAsIAorICAgIDExMzc0MSwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAxMTcyOCwgNDM1NzIsIDk4MzEzOSwgMTI5NDEyLCAKKyAgICA3NzY0LCA2ODc0MSwgMTEwOTQsIDEyMDgyNSwgOTgzNzU4LCA0MzQ4OSwgNDI4MiwgODI5OCwgMCwgMCwgNzAzMjgsIAorICAgIDExMzY5MSwgNzAzMjQsIDY0NDQ5LCAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCA2NTU4NywgNzA0NDIsIDY1NjcwLCAKKyAgICA5ODMxODAsIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgMTAxMTAyLCA3MDMyNiwgMCwgNzE0NjAsIDEyMDc2NCwgCisgICAgNzAzMjIsIDEwMDE5LCA3NDc2MiwgMCwgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcxMiwgMzY0NywgODM0MzcsIDI2MDIsIAorICAgIDEyODM0MSwgMTAwNzE3LCAxMjUwNDMsIDQxMTM1LCA4MzQ5OCwgMTIwODE1LCAxMjEzMjUsIDY0NjMxLCAxNzIsIDQ5NzEsIAorICAgIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgMTI2NDc2LCA3NzkyNiwgNzU5NywgMTA1MjgsIDc1MDU0LCAKKyAgICAxMjE0MDUsIDM3MzIsIDczOTEwLCAxOTQ1ODgsIDUzNDQsIDk4Mzk3MSwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIAogICAgIDEyMTQ0MSwgOTI1MjgsIDAsIDY0NDc5LCA5MjMyLCA5MjU5NiwgODMzMzAsIDExMzcwNywgMTk0NzEyLCAxMDkwMCwgCiAgICAgNDE1MzEsIDEyNjMsIDM3MjAsIDEyMDQ4LCA3NDA3NSwgNjQyOTIsIDQxNTI0LCA3MjI3LCAxMTk2MzUsIDYwOTksIDQxNTM0LCAKLSAgICAwLCAxMjczNTQsIDEyNzM0NSwgMjk5LCA4MzAyMiwgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgCi0gICAgOTI1NjQsIDMwNzUsIDY3ODY3LCA5NDA1MywgMCwgNjYzNjIsIDAsIDY0MzUzLCA3MDQ0MCwgMCwgNTg0NSwgMTIxMzEwLCAwLCAKLSAgICAxMjExODUsIDI1ODEsIDgyMDAsIDY1MTE0LCA2ODQ2MCwgOTgzNjkzLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCA5ODMyMDEsIAotICAgIDYzNDAsIDExODg1NSwgMTIxMDI3LCA3ODEzNCwgODY4MCwgNzIwNCwgNzAwNjUsIDI1ODgsIDI5MTQsIDcwMTEsIDU1MjgxLCAKLSAgICAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDExOTU2MywgNzM3NzQsIDEwOTEzLCA4MzExNiwgOTgzMDg2LCA4NjY2LCAKLSAgICA2NzUsIDQyNDkzLCAxMjEyOTcsIDQzNTcxLCAwLCA2MjE5LCAxMjg1ODQsIDk5ODAsIDQxMjMyLCAxMDkyOCwgMCwgNDExNTMsIAotICAgIDQxMjI5LCAxMTg5NjcsIDAsIDM3MzgsIDk0MDE2LCA5ODMyNDMsIDEyNzExLCAzMTgxLCA2NjIxMiwgNzQyODksIDY4NDcyLCAKLSAgICA0Mjg1NywgODI2MiwgOTMwMzYsIDAsIDc0NDc2LCAwLCA0MjM0NywgMTIwOTIsIDk2MTUsIDcyMzQsIDc0MDQ3LCA5ODMwODgsIAotICAgIDEyODEzNywgNDM3NDQsIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgCi0gICAgOTgzMTI2LCA3NDQ2MSwgMzIxOCwgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCA4NTY5LCAxMTQwNCwgCi0gICAgMTE5MzIsIDczNzI4LCAzMjE0LCAxMTIxMiwgMTIwNDY4LCAxMjEyOCwgMzIwNywgNjU0ODYsIDc4NzI5LCAxOTAxLCAKLSAgICA3ODcyNywgNjU2NjcsIDEyMDQ2MCwgNzQyNSwgMzIwNSwgNjgwMDMsIDc4NzM3LCA3ODczNiwgNzg3MzUsIDQzMzgzLCAKLSAgICA2OTk0MCwgNjU0NTksIDI2MDYsIDc4NzMwLCA3Mzg5NywgMTI5MDQzLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgCi0gICAgMCwgMCwgODMxNzgsIDEyMDczNywgMTIwOTUzLCAxOTQ3NzMsIDk4MzMyMiwgMzc4LCAyNjEwLCA5ODMzMjgsIDY1MDc5LCAKLSAgICA5ODMzMjcsIDY1Njk1LCAxMjEyMjAsIDM3LCA3MDY4LCAwLCAxMjA0ODAsIDY4MjM2LCAzMjA5LCAxMjA0NzcsIDEyMDgzNSwgCi0gICAgMTA2MzgsIDk3NjgsIDY5OTUyLCAxMTk5MDksIDcxNDg2LCA5MjIyNSwgOTgzOTUzLCA5ODMzNDAsIDAsIDQzODQwLCAwLCAwLCAKLSAgICA1MjMzLCA5ODMzMzcsIDY0NzkyLCA3MTIzMywgMTI4MjIzLCAxMjY2MzMsIDEyODkxOSwgNzA2MCwgOTg0NywgMTIwMTQ0LCAKLSAgICAxNjg1LCA1OTUsIDgzMTk3LCA3MDQyOCwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIDAsIAotICAgIDY1NDEsIDQzODM3LCA3MTQ2NSwgMTIxMDMwLCAzMjQzLCA5MDE0LCA1NjA2LCAxMjUwMzIsIDUzOCwgNjQ2MjAsIDU2MDIsIAotICAgIDg0NjcsIDc0MzkxLCA2NTQ3LCA3MTQ2NiwgODIwMywgNjY0MjAsIDY4MjQxLCA4NDU4LCA2NTIxMSwgODQ5NSwgOTIzMTEsIAotICAgIDEyNzQ4MSwgOTE3NTUyLCA3NzksIDc4MzE0LCA2NDM2NywgMjQ2NSwgNjk5MDEsIDgxOTMsIDU1Mjc5LCA5NzMwLCA5MjgwLCAKLSAgICAxMjA5MTMsIDcwNjUsIDc0MTU1LCA0MzQ2LCAxMTM2OTAsIDczNzk4LCA1MDQsIDEyNTExNSwgOTI0MTQsIDg5ODIsIDAsIAotICAgIDEyMTQ3MSwgMTE5MTcwLCA3ODIsIDEyOTAyOCwgMTA4ODMsIDEyODQ0NiwgMTk0ODUyLCA3MzIsIDM3MzcsIDEyMTE4OCwgCi0gICAgMTU0OCwgNjg2NTAsIDkyNTA3LCAxODMyLCA1NjA0LCA1NzM1LCA0MTE0MSwgMTE5MDIwLCA0Mzc2LCA5ODMzNzIsIDExNzg3LCAKLSAgICAzNzQ1LCA5MTc4NjgsIDExOTg4NSwgNDI4ODgsIDY1NzEyLCAxMjc5MTMsIDM4NjksIDExOTM3LCA1NzI1LCAxMjc1MzksIAotICAgIDE3ODMsIDc0MTYsIDU3MjgsIDAsIDEyODQ1NywgMTE5NTU0LCAxMTkxOCwgNjY1NjcsIDU3MjQsIDEyNzk2NSwgNTcyNywgCi0gICAgNzg1MjEsIDEyMTEyMSwgMCwgNzY0LCAwLCAxMjEwMTEsIDQzNTMxLCAxMTM2NzAsIDkwMzMsIDEyNzE4MiwgNDI1MzIsIAotICAgIDYyMjMsIDExMDQyLCAxMjA3NDksIDExNDIzLCA3NDg1MiwgMTE5ODYxLCA2ODMwMywgNDM0NjUsIDAsIDc0NzY3LCA2NTU5LCAKLSAgICA2NDU1NywgNzEzNDgsIDkyNjQ5LCAxMjA2NDgsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAxMjg3MTEsIDQzMzc3LCAKLSAgICA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCA2NDc0MCwgMTEzNjg5LCA3NzM5LCA3NDU0MywgCi0gICAgOTE3NzY1LCA2NzM5MywgMCwgNjEzMiwgMCwgNjM3NjUsIDEyODM5NiwgNzAwNTgsIDQxMTQ0LCA3MTg5OSwgOTI0MzgsIAotICAgIDQzNTM3LCA2NzYxLCAxMDA5MywgNDM2OSwgOTE3NzkxLCAxMjgzOTQsIDE5NDc3NiwgODgyMCwgMzk0NywgMCwgNjUyOTksIAotICAgIDExNTE1LCA1MjYsIDEyODEwMywgNDEyOTUsIDE5NDYwMywgMTI1MDAyLCAxOTQ5MzIsIDExMzY5MSwgNzY4OCwgOTE3Nzg2LCAKLSAgICA3Njg2LCA4Mjg4LCAxMTgxNSwgOTgzMTg4LCAxMjE0MTEsIDk4MzM4NCwgMTU0MywgMzcxMywgNDEyMjEsIDEyNDIzLCAKLSAgICA0MjI4MSwgNzg1NDQsIDc0MDI0LCAxMjI5MywgOTgzNjgwLCA2NDM1NywgMTE3OTQsIDQyMDgyLCAxMjgxMjUsIDE3MzcsIAotICAgIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCA4MzI2NCwgOTMzNSwgMTI4NTAsIDExOTE3MywgNjU1MywgNzA1NSwgNjgwNDEsIAotICAgIDgyNzcsIDAsIDY3NzUxLCA1NDc1LCA3NDc5NSwgNjc4MCwgNjUwNjcsIDAsIDEzMjcsIDExNjAsIDQyMDg0LCA5Mzk2MywgCi0gICAgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMTI5MDcwLCA5ODM4NjUsIDY4MTc2LCA1ODYzLCAzMTM3LCAwLCA0MTQ3LCAKLSAgICA5ODMxNzAsIDQxMjE2LCA3ODQ0LCAyNjE2LCA3MDE5NywgNjg0NjEsIDY1MjM0LCA2ODM0MSwgMTMwNzYsIDMxMzUsIAotICAgIDk4MzI4OSwgNzgxNDMsIDExOTEzOSwgMzE0MiwgOTI0NTEsIDk0MDY4LCAxMDgxOSwgMTE5NTgwLCAxMDE4MywgNzQ2MzUsIAotICAgIDI2MDgsIDE0NzAsIDczOTY3LCA5NDAwOCwgNjIyNywgMTIxMjU3LCA4MzI2OCwgNjUyMzYsIDkxNzg3OCwgNjE2MywgCi0gICAgOTgzNTU4LCAxMTM3MjgsIDEyNzMxNCwgMTI4MTM4LCA5ODMyMzYsIDg2MDMsIDEyNzk1OSwgMTE5ODY2LCAzMzA2LCAKLSAgICAxMDg3NiwgNDMzOTIsIDgzMTg3LCAxMjc5MzEsIDU3NTEsIDEyNzUxNywgNjIyMiwgMCwgMTI3NDY2LCAxMjA4NiwgNzQwMywgCi0gICAgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAxMTk5MDMsIDAsIDI1NzAsIAotICAgIDcwMjEsIDc0OTAyLCAxOTQ3NDIsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCA2OTc0LCA5Mjc1MCwgMCwgOTgzMjExLCA1MDAyLCAKLSAgICA5ODM1NjMsIDQxMjg2LCA2OTk0NiwgNzQ0NjUsIDcxMDc0LCA0MzU4NSwgMTEzNzIwLCA2NTUxLCA5ODMzNzUsIDEyODIyOSwgCi0gICAgOTgzMjc0LCA0MTI4OSwgMTI1MTMwLCA3MTA4MCwgMTI3OTU4LCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4MzUwLCAKLSAgICAxMjg2NjEsIDE5NDg5MCwgOTgzMzc3LCA0MTI3OSwgMCwgMCwgOTQxMDgsIDExMDgxLCA0MzYxNSwgMCwgMCwgMTI3ODg4LCAKLSAgICA5ODM2MTIsIDEyNzI3LCA0Mzg5NSwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIAotICAgIDc4MzEsIDk4MzgyOSwgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgCi0gICAgMjU5NiwgNDM1ODQsIDEyMDk4MywgMTMxMTMsIDAsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNzQwNjcsIDY4NjczLCAKLSAgICA0MTU3NCwgNzgzMzcsIDcwNDk4LCA0MjkwMCwgNjM3NiwgMCwgMCwgMCwgMCwgOTg1NCwgMTI3NzQ4LCA2NDY5NiwgNzM4NzksIAotICAgIDEyODIyMCwgMTIwNzUyLCA2OTk0LCAwLCAxNzIwLCAwLCAwLCAwLCA2NTI5LCA3MDYzLCA5ODMxNzksIDM3NTEsIDkxMjAsIAotICAgIDk4MzQ4NywgNjgwMzgsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIDY1NTcsIDEyNDMwLCA4MTM3LCA5NDA5OCwgCi0gICAgNjc3NTIsIDcwODUwLCAxMTkwNTcsIDI0NSwgMTIxMDY2LCAxMTQ1NiwgNDEyMzMsIDcwNzAsIDAsIDk0MDQ2LCA2MTM2LCAKLSAgICA2ODMwNCwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIDk4MDQsIDExODk2MywgNDMyLCAzNTk1LCAxMjcwMTUsIAotICAgIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDk4MzEzNiwgMCwgMTI4Mjc0LCAwLCAxMTk2NTgsIDEyODE4NCwgMCwgMCwgCi0gICAgNzc4OTQsIDg3OTcsIDAsIDkwNTIsIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgNzQ3ODQsIDEwNTgwLCAwLCA0MjI4NiwgCi0gICAgNzExMjMsIDY0NjQwLCA2OTk5OSwgOTQxMDksIDEyMDg3NywgNzQxMzcsIDcwMDM1LCAxMDA2MywgMTI2NTIsIDEyMTk5LCAKLSAgICA3NDYyMiwgNDM0OTIsIDI1NjYsIDExOTcxLCA5ODM3MzcsIDEyMDg4MiwgMTA2NSwgMCwgMTI3MDA1LCA0MzQwMCwgMjU3NiwgCi0gICAgNjY2OTYsIDY2ODE5LCA4MzMzMywgNDM2MDQsIDEyNzg5MSwgMCwgMzIwMSwgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIAotICAgIDQzMjE1LCA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDcwMzEwLCA0MzM5OCwgMjU4MCwgMTk1MDI1LCAKLSAgICA0MTM0MSwgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCA3MDAyMCwgMTI3ODcwLCAzNzMzLCAxMTM0NiwgMCwgCi0gICAgMTIwNTQsIDAsIDc0MDk4LCA0MjgyNywgMTk1MDc0LCAxMzA5MSwgMCwgMTI4NTgwLCAwLCA5MTc5MTUsIDEyNzk2MSwgCi0gICAgMTI3MDI1LCAxMjgzMzQsIDc0ODIxLCA3MTEwNCwgNjYyOTUsIDY4MDM3LCAwLCAxMjExMTYsIDEzMDkwLCA2NjY0MywgMCwgCi0gICAgMTI3MCwgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgNjY4OTgsIDY0NzYxLCAwLCAKLSAgICA0MTAyMSwgODUxMCwgNDI0MzIsIDExOTg5OCwgMTE5MzE3LCAxOTQ3ODIsIDE5NDY0MSwgNjQ0OTYsIDc0MTA5LCA3MDAzMCwgCi0gICAgOTkxNSwgOTgzMDgzLCA5ODMyMTgsIDcwNjEsIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgCi0gICAgNDIzMTksIDEzMDgyLCA3ODExNCwgNzA2NywgNjgyMjEsIDEyNzg4MSwgMTI3MzgzLCAxMjcxNzEsIDAsIDEyMDc0NSwgCi0gICAgNzQyMDksIDkwMjksIDQzNTQzLCA3MDgzNiwgMjM1MywgNjMwOCwgMTI5MTU0LCA3NDc5MiwgMjYxMSwgMTE5MTg2LCAKLSAgICA2Njg4MSwgMTI3MjQxLCA2NTA2MywgNDM2NjQsIDkyMzE5LCA2NjYyNywgOTI5MTIsIDQ0ODQsIDg1MDksIDExODk3NiwgCi0gICAgMTEwNjYsIDY1MjMzLCAxMjcxNDYsIDQxMjI0LCA0MTAxNywgMTI4MTQ5LCAzNzQ3LCAxMDUyMiwgMCwgMTk0ODc2LCAxNjkxLCAKLSAgICA0MTIyNiwgNzQ5NjIsIDEyMTA3LCA3MTAwLCAxMDkwNSwgNjUwMTAsIDEyMTI5OSwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgCi0gICAgOTgzMzQzLCA5MzA1OCwgNzQ3ODEsIDEzMTIxLCAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMTIwOTQ5LCAKLSAgICAxMjEwMzIsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAxMTg5NTAsIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAKLSAgICAzNTYyLCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCA3ODExMCwgNzEyMywgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIAotICAgIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgMTI4MjU4LCAxOTUwMjcsIDAsIDAsIAotICAgIDEzMTIyLCAwLCAxOTEsIDcwMDYwLCA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgNjQ4NTAsIDQxMDcyLCAKLSAgICA0MTU3OCwgOTgzMTA0LCA0MTU3NywgMCwgMTAwMDIsIDEyMTM2NCwgNjUzMywgNzM4MDIsIDQxNTcwLCA5MTc5MTksIDY4MywgCi0gICAgMzk2LCA0MTU4MCwgNjgxNDYsIDk4MzA2NywgMTI5MDEsIDQzMDU4LCAwLCAzNDMsIDcxMjksIDQyNjgwLCA0MTM2MCwgCi0gICAgNzgxNTQsIDk4MzM5NywgNDc0MywgNjk5ODcsIDAsIDc0MDQwLCA3NDEwOCwgODc0MywgMTcyNCwgMTQzMywgMTE5MzIyLCAKLSAgICAxMjg2NjUsIDM3MzksIDYyNjMsIDcxMzQ5LCAxMjg4MTEsIDM5NjQsIDY1OTIsIDEyMTQyNCwgNjgyODgsIDY2MDQwLCAKKyAgICAwLCAxMjczNTQsIDEyNzM0NSwgMjk5LCA4MzAyMiwgODUyNSwgMTI3MzQ3LCAzNTI0LCAxMjg3MTcsIDg4MzEsIDEyNzM0OSwgCisgICAgOTI1NjQsIDMwNzUsIDY3ODY3LCA5NDA1MywgMCwgNjYzNjIsIDAsIDY0MzUzLCA3MDQ0MCwgOTgzOTcwLCA1ODQ1LCAKKyAgICAxMjEzMTAsIDEyNzkzNywgMTIxMTg1LCAyNTgxLCA4MjAwLCA2NTExNCwgNjg0NjAsIDc0ODU4LCA0MzI4MywgNTU1MSwgMCwgCisgICAgMTIwNzM1LCAxMjk0MjMsIDYzNDAsIDExODg1NSwgMTAwNjAyLCA3ODEzNCwgODY4MCwgNzIwNCwgNzAwNjUsIDI1ODgsIAorICAgIDI5MTQsIDcwMTEsIDU1MjgxLCAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDEwMDg1MiwgNzM3NzQsIDEwOTEzLCAKKyAgICA4MzExNiwgOTgzMDg2LCA4NjY2LCA2NzUsIDQyNDkzLCAxMjEyOTcsIDQzNTcxLCAwLCA2MjE5LCAxMjg1ODQsIDk5ODAsIAorICAgIDQxMjMyLCAxMDkyOCwgMCwgNDExNTMsIDQxMjI5LCAxMTg5NjcsIDAsIDM3MzgsIDk0MDE2LCA5ODMyNDMsIDEyNzExLCAKKyAgICAzMTgxLCA2NjIxMiwgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgOTMwMzYsIDk4MzY3NiwgNzQ0NzYsIDAsIDQyMzQ3LCAKKyAgICAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDEyODc2OCwgMTI4MTM3LCA0Mzc0NCwgMTAwNjEwLCAwLCA3Mzg0NiwgMjkzNCwgCisgICAgMTI3MjIsIDEyMDc2MiwgOTIyLCA0Mzk4MywgNzQ1MDcsIDk4MzExMCwgNzQ0NjEsIDMyMTgsIDEwMTAwMiwgNzQyOTAsIAorICAgIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIDExOTMyLCA3MzcyOCwgMzIxNCwgMTEyMTIsIDEyMDQ2OCwgCisgICAgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgNzg3MjcsIDY1NjY3LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCAKKyAgICA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDEyOTA0MywgCisgICAgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIDk4Mzg1MywgOTgzODkzLCA4MzE3OCwgMTAwNzI4LCAxMjA5NTMsIAorICAgIDE5NDc3MywgMTk0NjAxLCAzNzgsIDI2MTAsIDk4MzMyOCwgNjUwNzksIDE5NDg3OSwgNjU2OTUsIDEyMTIyMCwgMzcsIAorICAgIDcwNjgsIDAsIDEyMDQ4MCwgNjgyMzYsIDMyMDksIDEyMDQ3NywgMTIwODM1LCAxMDYzOCwgOTc2OCwgNjk5NTIsIDEwMDYyMSwgCisgICAgNzE0ODYsIDkyMjI1LCAxMjg0OTQsIDk4MzM0MCwgMTAwOTA1LCA0Mzg0MCwgMCwgMTAxMDk2LCA1MjMzLCAxMDA2MjQsIAorICAgIDY0NzkyLCA3MTIzMywgMTI4MjIzLCAxMDA2MjYsIDEyODkxOSwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIAorICAgIDgzMTk3LCA3MDQyOCwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDkyOTQ4LCAxMDAwNCwgMTI2OTk3LCAwLCA2NTQxLCAKKyAgICA0MzgzNywgNzE0NjUsIDEyMTAzMCwgMzI0MywgOTAxNCwgNTYwNiwgMTE5NTg1LCA1MzgsIDY0NjIwLCA1NjAyLCA4NDY3LCAKKyAgICA3NDM5MSwgNjU0NywgNzE0NjYsIDgyMDMsIDY2NDIwLCA2ODI0MSwgODQ1OCwgNjUyMTEsIDg0OTUsIDkyMzExLCAxMjc0ODEsIAorICAgIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgMTIwOTEzLCAKKyAgICA3MDY1LCA3NDE1NSwgNDM0NiwgMTAwNTcwLCA3Mzc5OCwgNTA0LCAxMjUxMTUsIDkyNDE0LCA4OTgyLCAwLCAxMjE0NzEsIAorICAgIDExOTE3MCwgNzgyLCAxMjkwMjgsIDEwODgzLCAxMjg0NDYsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjExODgsIDE1NDgsIAorICAgIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgOTgzMzcyLCAxMTc4NywgMzc0NSwgCisgICAgOTE3ODY4LCAxMTk4ODUsIDQyODg4LCA2NTcxMiwgMTAwNjA2LCAzODY5LCAxMTkzNywgNTcyNSwgMTAwNjA4LCAxNzgzLCAKKyAgICA3NDE2LCA1NzI4LCAxMjg1NjksIDEyODQ1NywgMTE5NTU0LCAxMTkxOCwgNjY1NjcsIDU3MjQsIDEyNzk2NSwgNTcyNywgCisgICAgNzg1MjEsIDEyMTEyMSwgMTI4NDg4LCA3NjQsIDAsIDEyMTAxMSwgNDM1MzEsIDExMzY3MCwgOTAzMywgMTI3MTgyLCAKKyAgICA0MjUzMiwgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDc0ODUyLCAxMTk4NjEsIDY4MzAzLCA0MzQ2NSwgMTk0ODE5LCAKKyAgICA3Mjg1NCwgNjU1OSwgNjQ1NTcsIDcxMzQ4LCA5MjY0OSwgNjY3NjMsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAKKyAgICAxMjg3MTEsIDQzMzc3LCA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCA2NDc0MCwgMTEzNjg5LCAKKyAgICA3NzM5LCA3NDU0MywgOTE3NzY1LCA2NzM5MywgMTAwNTg4LCA2MTMyLCAwLCA2Mzc2NSwgMTAwNTkwLCA3MDA1OCwgNDExNDQsIAorICAgIDcxODk5LCA5MjQzOCwgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDcwNjgyLCAxMDA1NjEsIDg4MjAsIAorICAgIDM5NDcsIDEyMjg5OCwgNjUyOTksIDExNTE1LCA1MjYsIDEyODEwMywgNDEyOTUsIDE5NDYwMywgMTAwOTMxLCAxOTQ5MzIsIAorICAgIDc4MzkzLCA3Njg4LCA5MTc3ODYsIDc2ODYsIDgyODgsIDExODE1LCA5ODMxODgsIDEwMDkzNCwgOTgzMzg0LCAxNTQzLCAKKyAgICAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA3ODU0NCwgNzQwMjQsIDEyMjkzLCAxOTQ1ODksIDY0MzU3LCAxMTc5NCwgCisgICAgNDIwODIsIDcwNzQ0LCAxNzM3LCA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgODMyNjQsIDkzMzUsIDEyODUwLCAxMTkxNzMsIAorICAgIDIyNzIsIDcwNTUsIDY4MDQxLCA4Mjc3LCAwLCA2Nzc1MSwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDY1MDY3LCAwLCAxMzI3LCAKKyAgICAxMTYwLCA0MjA4NCwgOTM5NjMsIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDEyOTA3MCwgMTAwNjE3LCA2ODE3NiwgCisgICAgNTg2MywgMzEzNywgMCwgNDE0NywgOTgzMTcwLCA0MTIxNiwgNzg0NCwgMjYxNiwgNzAxOTcsIDY4NDYxLCA2NTIzNCwgCisgICAgNjgzNDEsIDEzMDc2LCAzMTM1LCA5ODMyODksIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIAorICAgIDExOTU4MCwgMTAxODMsIDc0NjM1LCAyNjA4LCAxNDcwLCA3Mzk2NywgOTQwMDgsIDYyMjcsIDEyMTI1NywgODMyNjgsIAorICAgIDY1MjM2LCAxMjAyNTYsIDYxNjMsIDEyOTI5NywgMTEzNzI4LCAxMjczMTQsIDczODIyLCA5ODMyMzYsIDg2MDMsIDEyNzk1OSwgCisgICAgMTE5ODY2LCAzMzA2LCAxMDg3NiwgNDMzOTIsIDgzMTg3LCAxMjc5MzEsIDU3NTEsIDEyNzUxNywgNjIyMiwgMTAwNzE2LCAKKyAgICAxMjc0NjYsIDEyMDg2LCA3NDAzLCAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDk4MzMwNywgCisgICAgODg4MiwgMTE5OTAzLCA3ODUxOCwgMjU3MCwgNzAyMSwgNzQ5MDIsIDEyODg4MCwgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIAorICAgIDY5NzQsIDkyNzUwLCAxMjczOTYsIDEwMDkyMywgNTAwMiwgOTgzNTYzLCA0MTI4NiwgNjk5NDYsIDc0NDY1LCA3MTA3NCwgCisgICAgNDM1ODUsIDEwMDkyNywgNjU1MSwgOTgzMzc1LCAxMjgyMjksIDk4MzA0NywgNDEyODksIDEyNTEzMCwgNzEwODAsIAorICAgIDEwMDUyMSwgODk3NywgNjAyLCAxMjA4MTQsIDEwMDYzMCwgMTI4MzUwLCAxMjg2NjEsIDE5NDg5MCwgOTgzMzc3LCA0MTI3OSwgCisgICAgMCwgMCwgOTQxMDgsIDExMDgxLCA0MzYxNSwgMCwgMTAxMDIyLCAxMjc4ODgsIDE5NDk5NCwgMTI3MjcsIDQzODk1LCAwLCAKKyAgICA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIDEyNzU1NiwgOTYzMywgMTA4ODYsIDQzNTkyLCA3ODMxLCA2Njc1MSwgCisgICAgMTk0NTcxLCAxMjI4ODUsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCA5ODM4OTUsIAorICAgIDI1OTYsIDQzNTg0LCAxMjA5ODMsIDEzMTEzLCA5ODM3MzEsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNDEzNiwgCisgICAgNjg2NzMsIDQxNTc0LCA3ODMzNywgNzA0OTgsIDQyOTAwLCA2Mzc2LCAwLCAxOTQ5MTIsIDEyNzgyMCwgMCwgOTg1NCwgCisgICAgMTAxMDg4LCA2NDY5NiwgNzM4NzksIDEyODIyMCwgMTIwNzUyLCA2OTk0LCAwLCAxNzIwLCA5MTc3OTcsIDAsIDAsIDY1MjksIAorICAgIDcwNjMsIDExODkxNywgMzc1MSwgOTEyMCwgMTk0NjI4LCA2ODAzOCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgCisgICAgNjU1NywgMTI0MzAsIDgxMzcsIDk0MDk4LCA2Nzc1MiwgNzA4NTAsIDEwMDgzMiwgMjQ1LCAxMDA4MzEsIDExNDU2LCAKKyAgICA0MTIzMywgNzA3MCwgNzEyNjQsIDk0MDQ2LCA2MTM2LCA2ODMwNCwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIAorICAgIDk4MDQsIDEwMDY0MiwgNDMyLCAzNTk1LCAxMDA3ODQsIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDEwMDY0NiwgMTAwNjQxLCAKKyAgICAxMDA2NDksIDk4Mzk0OSwgMTAwNjQ4LCAxMjgxODQsIDEwMDc4NiwgMTk0NTg3LCA3Nzg5NCwgODc5NywgOTgzOTU2LCAKKyAgICA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMTAwODQ1LCA0MjI4NiwgNzExMjMsIDY0NjQwLCAKKyAgICA2OTk5OSwgOTQxMDksIDEyMDg3NywgNzQxMzcsIDcwMDM1LCAxMDA2MywgMTI2NTIsIDEyMTk5LCA3NDYyMiwgNDM0OTIsIAorICAgIDI1NjYsIDExOTcxLCA5ODM3MzcsIDEyMDg4MiwgMTA2NSwgMTIwNzY4LCAxMjcwMDUsIDQzNDAwLCAyNTc2LCA2NjY5NiwgCisgICAgNjY4MTksIDgzMzMzLCA0MzYwNCwgMTI3ODkxLCAwLCAzMjAxLCA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgNDMyMTUsIAorICAgIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzAzMTAsIDQzMzk4LCAyNTgwLCAxMjg0OTcsIDQxMzQxLCAKKyAgICA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDE5NTA5MiwgNTI5MywgNzAwMjAsIDEyNzg3MCwgMzczMywgMTEzNDYsIDAsIAorICAgIDEyMDU0LCAxMDA4MjQsIDc0MDk4LCA0MjgyNywgMTk1MDc0LCAxMzA5MSwgMCwgMTI4NTgwLCAxMDA4MjEsIDEwMDgyOCwgCisgICAgMTI3OTYxLCAxMjcwMjUsIDEyODMzNCwgNzQ4MjEsIDcxMTA0LCA2NjI5NSwgNjgwMzcsIDk4MzkwNSwgMTIxMTE2LCAKKyAgICAxMzA5MCwgNjY2NDMsIDEyODgyMCwgMTI3MCwgMTEzMiwgNDIzNjAsIDE5NDk2OCwgNjY3NTIsIDY2NjU1LCA0MjU2OSwgCisgICAgMTIwNTcxLCA2Njg5OCwgNjQ3NjEsIDEwMDc3NiwgNDEwMjEsIDg1MTAsIDQyNDMyLCAxMDA3NzgsIDExOTMxNywgMTk0NzgyLCAKKyAgICAxOTQ2NDEsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIDk5MTUsIDY5Nzk4LCA5ODMyMTgsIDcwNjEsIDQxMzM2LCAzODU0LCAKKyAgICA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgNDIzMTksIDEzMDgyLCA3ODExNCwgNzA2NywgNjgyMjEsIDEyNzg4MSwgCisgICAgMTI3MzgzLCAxMjcxNzEsIDEyMTIwNywgMTAwNzY1LCA3NDIwOSwgOTAyOSwgNDM1NDMsIDcwODM2LCAyMzUzLCA2MzA4LCAKKyAgICA3MDY2MiwgNzQ3OTIsIDI2MTEsIDEwMDc2OCwgNjY4ODEsIDEyNzI0MSwgNjUwNjMsIDQzNjY0LCA5MjMxOSwgNjY2MjcsIAorICAgIDkyOTEyLCA0NDg0LCA4NTA5LCAxMTg5NzYsIDExMDY2LCA2NTIzMywgMTI3MTQ2LCA0MTIyNCwgNDEwMTcsIDEyMDUxNCwgCisgICAgMzc0NywgMTA1MjIsIDkxNzgxMSwgMTE5OTcwLCAxNjkxLCA0MTIyNiwgNzQ5NjIsIDEyMTA3LCA3MTAwLCAxMDkwNSwgCisgICAgNjUwMTAsIDc0NjAyLCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCA5ODMzNDMsIDkzMDU4LCA3NDc4MSwgMTMxMjEsIAorICAgIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgMTI4MjIxLCAxMjA5NDksIDEyMTAzMiwgOTgzMTMyLCAxMjcxOTMsIDY1ODE2LCAKKyAgICA2ODExMSwgMTE4OTUwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgMzU2MiwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgCisgICAgNzgxMTAsIDcxMjMsIDcwMDM4LCA1Nzg1LCA5MTk4LCA5NzY0LCA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgCisgICAgMCwgOTgzMTUwLCA2ODM2NSwgMTI4MjU4LCAxOTUwMjYsIDk4MzQwMiwgMCwgMTMxMjIsIDEyNzU0NiwgMTkxLCA3MDA2MCwgCisgICAgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIDY0ODUwLCA0MTA3MiwgNDE1NzgsIDk4MzEwNCwgNDE1NzcsIAorICAgIDk4MzM3MSwgMTAwMDIsIDEwMDc1NCwgNjUzMywgNzM4MDIsIDQxNTcwLCAxMDA3NTYsIDY4MywgMzk2LCA0MTU4MCwgCisgICAgNjgxNDYsIDEyNzgxNSwgMTI5MDEsIDQzMDU4LCAxMDA3NjAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCA3ODE1NCwgCisgICAgMTI3MDgyLCA0NzQzLCA2OTk4NywgMTAwNzYxLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDEwMDc1MSwgCisgICAgMTI4NjY1LCAzNzM5LCA2MjYzLCA3MTM0OSwgMTI4ODExLCAzOTY0LCA2NTkyLCAxMjA3MDEsIDY1MTA4LCA2NjA0MCwgCiAgICAgODI5NDYsIDQyNTY4LCA2OTgwNiwgMTI4MTEzLCAxNzc4LCAzOTU2LCAxMjg0NDMsIDQyMDcwLCA2NTYzLCA0MzA3NSwgCi0gICAgOTAxOCwgOTQwMDYsIDk4MzM5OCwgMTIwNjcsIDQxMzEyLCA5Mjc2MywgNTU0NywgODkxNiwgMTIwODY5LCAxMjg5NTAsIAorICAgIDkwMTgsIDk0MDA2LCAxMjE0MjQsIDEyMDY3LCA0MTMxMiwgOTI3NjEsIDU1NDcsIDg5MTYsIDEyMDg2OSwgMTI4OTUwLCAKICAgICA4MTc1LCA5NDAzNCwgMjg0LCA4MTA4LCA5MzQsIDEyODAzOSwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAKLSAgICAxMTg4MjIsIDE3NTAsIDEyODY4NiwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg4OCwgOTIyOTgsIDAsIDU4ODksIDEyODc5NSwgCi0gICAgNzE4MCwgMCwgNjcxMjcsIDAsIDY3MTI2LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgCi0gICAgMjU4MywgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCAwLCA5MTc2MzAsIDM4NTUsIDE5NDgxMCwgMTE3NjcsIAotICAgIDEyNzk5OCwgMCwgNzQyOTUsIDE5NDY1MSwgMCwgOTI0MTYsIDM5NzUsIDY3MTI1LCA3NDA4NywgNzQ5ODksIDEyNjcyLCAKLSAgICAzNzk4LCAyNzAzLCAxOTQ2MDgsIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDk4Mzc1MCwgNDEwOTUsIDM5NjIsIDY4MjQyLCAKLSAgICAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgNzQ1MzYsIDEyNzE4OSwgNzM5OTQsIDczOTkyLCAxNDY4LCAxMjAwMzMsIAotICAgIDk4MzA1NywgNDE4MDMsIDEyNzk5OSwgNDE4NDYsIDEyNzI0NCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgCi0gICAgMzIyNCwgMTEzNzM0LCA5Mjc0MSwgNjYyODEsIDQyNTMxLCA3NDU5MywgMTUxMCwgMTI4Mzg0LCA4MjU2LCAwLCAxMTM5MywgCi0gICAgMCwgODg3OSwgMTI4MDc1LCA5MjQ3NCwgODc3MCwgNzI0MTYsIDEyMDgxMSwgNzI0MTUsIDE5MTAsIDg2NzEsIDc4Mzc0LCAKLSAgICA0MjgzLCA2ODg0MiwgMTIwODI0LCA2ODM2MSwgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNiwgMTI4MjQxLCAwLCA3MjM5NCwgCi0gICAgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAKLSAgICA3NDQ3NSwgOTgzNDQ0LCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCAKLSAgICA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMTE5MTQ0LCAxMjg0NDcsIDkyMzQ3LCAxOTUwNjYsIAotICAgIDQxMzUwLCA5MTI5LCA5ODM0NDgsIDAsIDIyOTQsIDY0NTAxLCA2ODAzNCwgODMzMjYsIDEwNDgxLCAwLCA3MDAyMiwgNzE3MSwgCi0gICAgMCwgMzQwLCA3MTEwNSwgOTM5NzIsIDY3MzYwLCAwLCA5MjIwMCwgMTI4MjQ5LCAxMjQ5NzksIDY3NjQsIDEyNzQ4NywgCi0gICAgMTI4MzkzLCAwLCA5MjUwOSwgMTI4OTYyLCA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAxMTkwNzMsIDMyMTAsIDAsIAotICAgIDAsIDExODc5NSwgODI5NTgsIDk0MTAxLCAxMjc0ODQsIDkxNzYxOSwgMTE5MTQ5LCAwLCAxMDA0MywgMTIxMjE1LCAxMTg2LCAKKyAgICAxMTg4MjIsIDE3NTAsIDEyODY4NiwgNDM5NCwgNjgzNjgsIDE4MDcsIDc4NTQ1LCA5MjI5OCwgMTAxMDgyLCA1ODg5LCAKKyAgICAxMjg3OTUsIDcxODAsIDEwMTA4MywgNjcxMjcsIDEwMTA5MSwgNjcxMjYsIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgCisgICAgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAxMjgxMDksIDk4MzQ2NywgOTE3NjMwLCAKKyAgICAzODU1LCAxOTQ4MTAsIDExNzY3LCAxMjc5OTgsIDk4MzU4OSwgNzQyOTUsIDE5NDU3NywgMTAwNzk3LCA5MjQxNiwgMzk3NSwgCisgICAgNjcxMjUsIDc0MDg3LCA3NDk4OSwgMTI2NzIsIDM3OTgsIDI3MDMsIDEwMDc5MywgMCwgMjEwOSwgOTc3NCwgMTI3NSwgCisgICAgMTk0OTY0LCA5ODM3NTAsIDQxMDk1LCAzOTYyLCA2ODI0MiwgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDc0NTM2LCAKKyAgICAxMDA5NDcsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMTIwMDMzLCA5ODMwNTcsIDQxODAzLCAxMjc5OTksIDQxODQ2LCAxMjcyNDQsIAorICAgIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDEwMDc1NSwgOTI3NDEsIDY2MjgxLCA0MjUzMSwgCisgICAgNzQ1OTMsIDE1MTAsIDEyODM4NCwgODI1NiwgOTgzMDQzLCAxMTM5MywgMCwgODg3OSwgMTI4MDc1LCA5MjQ3NCwgODc3MCwgCisgICAgNzI0MTYsIDEyMDgxMSwgNzI0MTUsIDE5MTAsIDg2NzEsIDc4Mzc0LCA0MjgzLCA2ODg0MiwgNzI3ODcsIDY4MzYxLCAKKyAgICA3ODMxOCwgMjY1NCwgNzg5MywgMTI5MTUxLCAxMjgyNDEsIDEwMDgwMiwgNzIzOTQsIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIAorICAgIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgNzQ0NzUsIDk4MzE0MywgMCwgMTczMywgCisgICAgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMTI4NjQ0LCA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgCisgICAgMTAwNzkwLCA3MTg1LCA3OTY1LCAxMTkxNDQsIDEyODQ0NywgOTIzNDcsIDE5NTA2NiwgNDEzNTAsIDkxMjksIDk4MzQ0OCwgCisgICAgOTgzNjE5LCAyMjk0LCA2NDUwMSwgNjgwMzQsIDgzMzI2LCAxMDQ4MSwgMCwgNzAwMjIsIDcxNzEsIDAsIDM0MCwgNzExMDUsIAorICAgIDkzOTcyLCA2NzM2MCwgMTk0OTQyLCA5MjIwMCwgMTI4MjQ5LCAxMjQ5NzksIDY3NjQsIDEyMDgwNCwgMTI4MzkzLCAwLCAKKyAgICA5MjUwOSwgMTI4OTYyLCA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAxMTkwNzMsIDMyMTAsIDAsIDEwMDYzMiwgCisgICAgMTE4Nzk1LCA4Mjk1OCwgOTQxMDEsIDEyNzQ4NCwgOTE3NjE5LCAxMTkxNDksIDczOTI2LCAxMDA0MywgMTIxMjE1LCAxMTg2LCAKICAgICA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjUxMjMsIDM2NzUsIDUyMDcsIDY1MDYyLCA1MjEzLCA3NDYxNiwgMjYxNywgCi0gICAgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgMTIxMjA5LCAwLCA1NTk2LCA1NTQ1LCA3Mjg4LCAKLSAgICAyNTg2LCA2NDg4NywgMTE5ODI2LCA1MjE3LCA3MTMzNiwgMTI4Njg3LCA5MTc2MTQsIDEyMTAzOCwgNjQyOTMsIDY4MDk4LCAKLSAgICAyNjM1LCA5Mjc2MCwgODMxMzcsIDk4Mzg0NiwgMCwgOTI3NDIsIDc4MzUsIDcwMDQwLCAxMjA3MDcsIDE5NDk4OCwgOTIyODUsIAotICAgIDY0NTU4LCAxMjcxMjIsIDEyMTQyNSwgNjcwODMsIDY3MDg1LCA3MDA5OSwgNzExMTgsIDU3ODQsIDk4MzEwMiwgMTk1MDUwLCAKLSAgICA5ODM4MTIsIDcwMDMzLCA0MDExLCAxOTQ1NjUsIDY4MTAxLCAxMjQ5NzgsIDc4NjQsIDQyNTQsIDY1MDk1LCA5ODM0OTgsIAotICAgIDU2MDAsIDM5MDMsIDEyNzA4MywgMTA0NDcsIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIDQyNTgyLCA0MzYwMCwgCi0gICAgMTI5MDU0LCAxMjcxMDMsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCA5MzIxLCA5ODM0ODYsIDc1MDQwLCA5ODM0ODQsIAotICAgIDY3NDAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDY4Nzc1LCA2NjI3NCwgOTgzNDkwLCA3NjMxLCAKLSAgICA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIDU0OTEsIDExODc5NywgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCAKLSAgICA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAxMjcxMjEsIDcxMjIsIDk4MzA5MCwgNDM5MCwgNDU0LCAKLSAgICA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgCi0gICAgMTE5MTg0LCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDkyNzU3LCAwLCA0MzQyMywgMTI4NjgzLCAxMTk4OSwgMTE4ODg5LCAKLSAgICAxMjc3OTEsIDEyNzk5NSwgNzgyOTYsIDAsIDgyNDksIDEyODE3MiwgMTExMDksIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgCi0gICAgNTEzLCAxMjcxMTgsIDY1ODYsIDg2NTYsIDEyOTMwMSwgNjk3OTIsIDY1MDA4LCAxOTQ1OTcsIDcxMTExLCA3ODM4MywgCi0gICAgMTk0Nzk1LCAxMjc0NzQsIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDE5NDU4NCwgNjM3OTksIDc4NjM3LCAxMjY0NywgOTE3NjA2LCAKLSAgICAxMjgwNDMsIDY5ODkzLCAxMDM2LCA2ODA5MCwgOTI0MTksIDE3MjMsIDY4MjE1LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIAotICAgIDEyMDcyMiwgMTA3MDUsIDczODc2LCAxOTUwNTQsIDc0NDg2LCA5ODM0NjksIDc0MCwgMTE5MjIyLCAxOTQ5NzgsIDE5NDk4NCwgCi0gICAgMCwgNDIzOCwgMTEwNzEsIDk0NTksIDQzOTM2LCA0MzkzOCwgNzgxMzksIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCAKLSAgICA0MjU3NCwgMTMyODUsIDQzOTY3LCAxMTkwNywgNDM5MjgsIDU2OTAsIDkyMjU1LCA1MTE2LCAwLCA0MzE4MSwgMTMwOTUsIAotICAgIDc3OTI1LCA0MzkyNiwgNjQ0OTgsIDAsIDk1MDYsIDY5NzgsIDcwMTc2LCA3NDkzMSwgMCwgMTEzNzQzLCA3ODM3OSwgCi0gICAgNDM5MzQsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCA3MTA1NSwgMTIwNjIxLCAwLCAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCAKLSAgICA3ODM3OCwgMTE5NjAwLCA1MjIzLCAxMzA0LCAwLCA4MzUyNiwgNTIyNiwgMTI2MDIsIDk0MDQ0LCA1ODgwLCA5MzI5LCAKLSAgICA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIDY5MjI5LCA5Njc0LCA1Njk1LCAKLSAgICA0MTcxMSwgNjQ2MjcsIDE5OTA5LCA3MTA3NywgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIDY4MTM4LCA5ODM0NDMsIAotICAgIDQyODE2LCA5NDAzNiwgNjUxNDAsIDY4MDI4LCA4MzA5MywgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgCi0gICAgODMwOTQsIDk4MzQ0NywgNjg4MjcsIDUyOTYsIDk4MzQ0NiwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgNzQ4NTgsIAotICAgIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDk4MzY4NiwgNzA4NzAsIDEyMTIyLCAKLSAgICAxMTk2MDIsIDQzOTc2LCAxOTQ5MzcsIDE3ODUsIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDY4ODA5LCA1MTM4LCA5ODM2MzcsIAotICAgIDcxOTIyLCAxMTg4NjksIDAsIDQ1NDAsIDQxMTgxLCA5MTc5MjAsIDYyMDAsIDAsIDUxMzQsIDY5OTgwLCAzMjIsIDQ2NDMsIAotICAgIDUxMzIsIDEyMTE4NCwgNjM4OSwgMTIwOTk4LCA1MTQzLCA4MzIwNSwgODc5MCwgMTIwOTExLCAxMjAxMjEsIDEyODY5NSwgCi0gICAgNzExNjgsIDg4NjksIDY5OTE2LCA5MzA2OSwgNDIwNjAsIDcxMzI2LCA5NjQ4LCA4MzEwOSwgNzExNzAsIDEwMjcwLCAKLSAgICAxMDI4NiwgMTAzMTgsIDEwMzgyLCA0MzUyOSwgNjY0NzcsIDE5NDgwMCwgMTI4NTM0LCA3NDE3MCwgMCwgMzIzNCwgNDM4MzUsIAotICAgIDkxNzgxOCwgNzAxMTEsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCA2ODIzMSwgNzQ0ODksIDk2OTUsIAotICAgIDcyNDM5LCA1MjAxLCA3NTA2MSwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAwLCAxOTQ5OTksIDY1MjY4LCA3NjYxLCAwLCAKKyAgICA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAxMjEyMDksIDE5NDc3MCwgNTU5NiwgNTU0NSwgCisgICAgNzI4OCwgMjU4NiwgNjQ4ODcsIDEwMDg5NiwgNTIxNywgNzEzMzYsIDEyODY4NywgMTAwODk4LCAxMjEwMzgsIDY0MjkzLCAKKyAgICA2ODA5OCwgMjYzNSwgOTI3NjAsIDgzMTM3LCA5ODM4NDYsIDAsIDkyNzQyLCA3ODM1LCA3MDA0MCwgMTIwNzA3LCAxOTQ5NTAsIAorICAgIDkyMjg1LCA2NDU1OCwgMTI3MTIyLCAxMjE0MjUsIDY3MDgzLCA2NzA4NSwgNzAwOTksIDcxMTE4LCA1Nzg0LCA5ODMxMDIsIAorICAgIDEwMDg1NCwgOTgzODEyLCA3MDAzMywgNDAxMSwgMTk0NTY1LCA2ODEwMSwgMTAwODU5LCA3ODY0LCA0MjU0LCA2NTA5NSwgCisgICAgMTIwMDE3LCA1NjAwLCAzOTAzLCAxMDA4OTIsIDEwNDQ3LCA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCAKKyAgICA0MjU4MiwgNDM2MDAsIDEyOTA1NCwgMTAwOTEzLCAxMTI0LCA1NTk3LCAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDg2LCAKKyAgICA3NTA0MCwgOTE3OTcyLCA2NzQwMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCA5NjcxLCAxMTI1LCA0Mzk5LCA2ODc3NSwgNjYyNzQsIAorICAgIDkyMTY1LCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDEyMDMzOSwgNTQ5MSwgMTE4Nzk3LCA4OTM3LCA0MzA0NCwgMjYwNCwgCisgICAgNzQxODcsIDU0OTAsIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIDYzMDAsIDEyNzEyMSwgNzEyMiwgOTgzMDkwLCAKKyAgICA0MzkwLCA0NTQsIDQxMzk3LCA5ODMwNTUsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgNzIwNywgCisgICAgMTI1MDYyLCA2NTkwMSwgMjM5NCwgMjU3NSwgMTE5MTg0LCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDkyNzU3LCAwLCA0MzQyMywgCisgICAgMTI4NjgzLCAxMTk4OSwgMTE4ODg5LCAxMjc3OTEsIDEyNzk5NSwgNzgyOTYsIDY4MjI0LCA4MjQ5LCAyMjMyLCAxMTEwOSwgCisgICAgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCA1MTMsIDEwMDcxNCwgNjU4NiwgODY1NiwgMTI5MzAxLCA2OTc5MiwgNjUwMDgsIAorICAgIDE5NDU5NywgNzExMTEsIDc4MzgzLCAxMjcyNTIsIDEyNzQ3NCwgNjY3NTUsIDY4NDc1LCA5Mzk3MywgNzI4NTksIDYzNzk5LCAKKyAgICA3ODYzNywgMTI2NDcsIDkxNzYwNiwgMTI4MDQzLCA2OTg5MywgMTAzNiwgNjgwOTAsIDkyNDE5LCAxNzIzLCA2ODIxNSwgCisgICAgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAxMjA3MjIsIDEwNzA1LCA3Mzg3NiwgMTk1MDU0LCA3NDQ4NiwgOTgzNDY5LCA3NDAsIAorICAgIDExOTIyMiwgMTIwMzA1LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA0MzkzNiwgNDM5MzgsIDc4MTM5LCAKKyAgICAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgNDI1NzQsIDEzMjg1LCA0Mzk2NywgMTE5MDcsIDQzOTI4LCA1NjkwLCAKKyAgICA5MjI1NSwgNTExNiwgMTI4MDEzLCA0MzE4MSwgMTMwOTUsIDc3OTI1LCA0MzkyNiwgNjQ0OTgsIDAsIDk1MDYsIDY5NzgsIAorICAgIDcwMTc2LCA3NDkzMSwgMCwgMTEzNzQzLCA3ODM3OSwgNDM5MzQsIDEyNzg0NSwgMTEyMiwgMzE3LCAxOTQ4NzAsIDcxMDU1LCAKKyAgICAxMjA2MjEsIDAsIDE5MjAsIDEyOTMzOSwgMTAxNzMsIDgyNywgMTI1MjM2LCAwLCA3ODM3OCwgMTE5NjAwLCA1MjIzLCAKKyAgICAxMzA0LCAwLCA4MzUyNiwgNTIyNiwgMTI2MDIsIDk0MDQ0LCA1ODgwLCA5MzI5LCA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgCisgICAgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIDY5MjI5LCA5Njc0LCA1Njk1LCA0MTcxMSwgNjQ2MjcsIDE5OTA5LCA3MTA3NywgCisgICAgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIDY4MTM4LCA5ODM0NDMsIDQyODE2LCA5NDAzNiwgNjUxNDAsIDY4MDI4LCAKKyAgICA4MzA5MywgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgODMwOTQsIDk4MzQ0NywgNjg4MjcsIDUyOTYsIAorICAgIDk4MzQ0NiwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgNzI4NDIsIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIAorICAgIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDk4MzY4NiwgNzA4NzAsIDEyMTIyLCAxMTk2MDIsIDQzOTc2LCAxMjUxOTQsIDE3ODUsIAorICAgIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDY4ODA5LCA1MTM4LCAxMjk0MjAsIDcxOTIyLCAxMTg4NjksIDEwMDg4MywgNDU0MCwgCisgICAgNDExODEsIDkxNzkyMCwgNjIwMCwgODI5NDksIDUxMzQsIDY5OTgwLCAzMjIsIDQ2NDMsIDUxMzIsIDEyMTE4NCwgNjM4OSwgCisgICAgMTIwOTk4LCA1MTQzLCA4MzIwNSwgODc5MCwgMTIwOTExLCAxMjAxMjEsIDEyODY5NSwgNzExNjgsIDg4NjksIDY5OTE2LCAKKyAgICA5MzA2OSwgNDIwNjAsIDcxMzI2LCA5NjQ4LCA4MzEwOSwgNzExNzAsIDEwMjcwLCAxMDI4NiwgMTAzMTgsIDEwMzgyLCAKKyAgICA0MzUyOSwgNjY0NzcsIDE5NDgwMCwgMTI1MjMxLCA3NDE3MCwgMCwgMzIzNCwgNDM4MzUsIDEwMDg4NiwgNzAxMTEsIAorICAgIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCA2ODIzMSwgNzQ0ODksIDk2OTUsIDcyNDM5LCA1MjAxLCAKKyAgICA3NTA2MSwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAxMjc4NjksIDE5NDk5OSwgNjUyNjgsIDc2NjEsIDEyMTMwOCwgCiAgICAgMTIwOTA5LCAxMTAyNywgMTI4NTk2LCAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIDE3NDksIDc4ODkwLCAKLSAgICA2NzExNSwgOTgzNjcwLCAzMjAsIDAsIDg2NDcsIDgzMDU0LCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIAotICAgIDEyNzM1NiwgMTE4ODk0LCA2NjQ3OCwgNDk2MCwgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIDU0MTgsIAorICAgIDY2NzY2LCA5ODM2NzAsIDMyMCwgMCwgODY0NywgODMwNTQsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgCisgICAgMTI3MzU2LCAxMTg4OTQsIDY2NDc4LCA0OTYwLCA1NTQ5LCAxMjczNTksIDEwMDk5NiwgODQ4NSwgNDY3MSwgNTQxOCwgCiAgICAgMTI3MzUwLCAzMzUxLCAxMjA4OTIsIDEyNzM1MSwgMTA2MTAsIDU0MTQsIDMwNjQsIDYyMTIsIDQyODYsIDU0MjEsIAogICAgIDEyNzM0NCwgOTU1NCwgNjgwNTEsIDk0MDQ4LCA2Njg5NiwgNjY1MywgODMwNDQsIDgzMTAyLCA2NDUxMCwgNjIxMywgCi0gICAgMTI4ODUsIDAsIDExOTA0NSwgNjQ3MjAsIDkxNzg3MywgMTIwNzU5LCA3Mzc0MSwgMTI2MDMsIDcxMzEsIDExMTA4LCA0NTY2LCAKLSAgICA3NTE4LCA5MzE3LCAzODAxLCAxMDM0MiwgMTA0MDYsIDEyNDkzOCwgMTE5MjU5LCA0MjU3NiwgMCwgNTIwMCwgOTI5NDYsIAotICAgIDEyMTQzNSwgOTgzODk1LCA5MTgzLCAxMjczNjEsIDc0NDU4LCA2NjI4MiwgMzk1LCA1NDgyLCA1MTk4LCA0MzQ5LCAxMDM5MCwgCi0gICAgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMTI4MzgzLCA0MzMwNywgNzAyOTcsIDExODk3MywgCi0gICAgNzA0NjcsIDEyMTM0LCAxMjExNjcsIDAsIDExODg0MywgOTEyNiwgNDM1LCA5ODM2MjQsIDEyMDE0LCAxMDM3NywgODA5MywgCi0gICAgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMTI1MDc1LCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjczMDksIAotICAgIDU3MzgsIDEyMDA4OSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCA4MzM3OCwgNjgxMTIsIDc4NzIsIDg1ODEsIAotICAgIDAsIDEyNjAsIDMxNDksIDUzNTksIDEyMDEzNCwgNzQ5NTUsIDc5MTQsIDUzNTcsIDcxMTkwLCA3NDMzOSwgMjYyNCwgNTM2NCwgCi0gICAgOTgzNjA4LCAxMTQzMSwgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDY3MTA3LCA3ODI5MywgNDIyNzEsIDc4Mjg5LCAKLSAgICA0MjkxNywgNjcxMTEsIDEyOTE3OSwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgyOTEsIDc4Mzg0LCAxMTgzMiwgCi0gICAgNzgzODIsIDc4MzgxLCA3ODM4MCwgNjk4NjEsIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIDMyMzIsIDczODI0LCAKLSAgICA3NDU4MSwgNzgwODcsIDAsIDcxMjA1LCA0MTg4OSwgOTI0NTMsIDEyOTE0NCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCAKLSAgICA4NjIyLCAxMjUwMjUsIDAsIDY4NzcyLCAxMjA1ODgsIDUwMTIsIDcxNDUzLCA0MTM2MiwgNjk4NjIsIDY4NTA3LCAxMTkyMSwgCi0gICAgMCwgMTE3NjksIDY4NzgyLCA2ODYwOSwgNDEzNjQsIDEyMDk0NywgNzQyMjgsIDQxMzUyLCA0MTM2MSwgOTE3OTAzLCAKLSAgICA0MTM2NiwgMCwgMzM1NiwgMTE2MTEsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgODE5OSwgNzgzODksIDExOTYxOCwgCi0gICAgNjc3LCAxMTk5MTYsIDkxNzg3NiwgNzE0ODIsIDEyNzE2OSwgNjg3NDcsIDAsIDY4NzM4LCAzMzQ5LCA3NDEyNSwgNzAyMiwgCi0gICAgODkyNywgNDczOSwgOTI1OTksIDU4MDIsIDE5NDg3NCwgODYxNSwgMCwgMTI4MDU4LCA0OTEsIDc0NDAxLCAxMDE5MCwgCi0gICAgNjg3NTUsIDY1ODM3LCA2ODgwMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCA3NTg2LCA0MjMwNSwgCi0gICAgMTA4NTIsIDAsIDQyNjQ4LCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAKLSAgICAxMjg2MTAsIDY4NzUzLCA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgNDE4NzgsIAotICAgIDc0ODQ5LCA3NDk0NywgNzI0MjQsIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgCi0gICAgODkwNSwgNDEzNiwgNDg3MSwgNzgyODcsIDEyMDY2MywgOTgzMywgMCwgMTEzNzMwLCAxMTI4LCA2NTkyMCwgOTE3ODc5LCAKLSAgICA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCAKLSAgICA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCA0MTM4NSwgOTgzOTM4LCA0MTM4OSwgCi0gICAgMTI3OTYzLCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCA5NDA0LCAzNTA3LCA5NDA2LCA3NjI5LCAKLSAgICA5ODM2MTcsIDE5OTI1LCA0MjY2OSwgNjg0NjMsIDE4MywgNDM5ODUsIDI2MzEsIDcwODExLCAxMDYyNywgNDExMzAsIAotICAgIDcxMDc5LCAzOTk2LCAwLCA3MTQ0MiwgMTI4OTEzLCAxMTkzMTMsIDExOTMwNywgNzg3NjgsIDY1ODAsIDQzMzIsIDY0ODI1LCAKLSAgICA2NjMyOSwgMTA3MjYsIDY2Njg2LCA0MTEyNSwgNTg5OSwgNDEzNjUsIDEyNzIwNiwgMTIwODUsIDY2OTAyLCA1NzQsIAotICAgIDEyNjcwNSwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjU5MzIsIDQxMzIyLCA0MjIxMSwgNTQ0MiwgNDE5MCwgCi0gICAgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDY4ODE3LCA3NzgzOCwgNzcwOCwgNzQ3NTksIDIyMjgsIAotICAgIDY1ODY3LCAxMDM0NSwgMTA0MDksIDQxOTEsIDEyMDM3OCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKLSAgICAyMDYwLCAxMjExOTMsIDcxMTEsIDExNzg4LCA2NTM3NiwgNjgxMjksIDEwNDE1LCA3NDEwMiwgOTgzNjI1LCAyMDUsIAotICAgIDgzMDQwLCAxMDM1MSwgNjcxNTEsIDAsIDk4NjIsIDY1ODgsIDQzMjU3LCA2NDY5NywgNzM5OTgsIDQxMzU1LCA1NTA1LCAKLSAgICA3NDk2NiwgNTUwMywgODAyMSwgMTI4MDM1LCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCAKLSAgICA5MjYzNiwgMCwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIAotICAgIDY5Nzc4LCAxMTEzMywgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCAxMjkwNTIsIDI2NzUsIDU1OTUsIDc4NDExLCAKLSAgICA0Mzc2MiwgNDM2NywgMTI3OTEyLCA5MTc3ODIsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIDc0MTUwLCA3MjkxLCA1NTkwLCAKLSAgICA0Mzc2MSwgMTMwNjcsIDExODkwOSwgNzUwNjksIDk4MzEwOCwgOTczMSwgNjk3MzEsIDY0NjMzLCA3Nzg1NywgNzc4NTQsIAotICAgIDcxMjE3LCA3Nzg1MiwgNzEyMjcsIDc3ODUwLCAxMDc1MCwgNDM3MTQsIDc3ODU4LCA3MTM3LCAwLCA2NjkwOSwgMTI4ODcsIAotICAgIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgCi0gICAgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMTI5MDgwLCA1ODk0LCA3MDA2OSwgCi0gICAgMTI4NjcyLCA0MTE3MSwgOTI1MTEsIDcwMzU4LCAxMzIzLCAxMzE2MiwgMTIwNTk5LCAzMzM0LCAxMjg3MDQsIDkyNzA5LCAKLSAgICA3Nzg4MSwgNjYwMjIsIDAsIDY5NzcwLCAxNjUxLCAxMjAzNjQsIDg4NjEsIDAsIDAsIDExNDIsIDk4MzExMiwgODI3MSwgMCwgCi0gICAgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCA3ODQwNiwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMTI4OTEwLCAKLSAgICAxOTQ3ODcsIDEyOTIwLCAxOTQ1NjAsIDcwNDk3LCAxOTQ2ODcsIDY2NjQyLCAxMjc3LCA2Njg3NiwgNzg3MSwgNjcxMDYsIAotICAgIDcxNDg3LCA3ODg1MywgMTI5MDY4LCA3ODg1NCwgMTIwMzYwLCA5ODM0OTIsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgCi0gICAgNDM4NTYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCA5ODM2MjcsIDc4ODU2LCA3ODQ0OCwgNzc4NzksIDQ5NzMsIDg3ODQsIAotICAgIDc3ODc3LCA3NDgwNCwgNzc4NzQsIDc3ODY5LCA3Nzg3MSwgNDI0NDAsIDcxMjI1LCA0MzExOCwgMTE5ODc1LCA0MjM2NCwgCi0gICAgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAKLSAgICAzMzcyLCAwLCA2MjQ3LCA0MzExNywgNzAzNjQsIDcxMjEsIDc0MTY2LCAxMjQ5NzMsIDEyMDM1NSwgOTI1MzcsIDE5NDg0NiwgCi0gICAgMTE5ODc3LCAxOTUwMzQsIDcwMzU3LCAxMTk5MjIsIDAsIDY3MTE5LCAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIAotICAgIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCA0MzM4MCwgMCwgOTgzMDkxLCA5ODM5NjUsIAotICAgIDk4Mzc1OCwgMTE2MDMsIDk4Mzk1NCwgNzUwNzQsIDY1ODksIDEyODU2NCwgODI5NzUsIDEyMDk5MywgNjc4MTIsIDk4MzcwMCwgCi0gICAgMCwgMTI5MDg3LCA0MjU3MiwgMTI4MjY0LCAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExNjIyLCAxMTg4ODIsIDExNjU0LCAKLSAgICAxMjEyODcsIDc1NTAsIDEwNjg2LCA1OTAzLCA2NzA5OCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAKLSAgICAzMzY2LCAxMDM5OSwgOTE3OTM4LCA1NTQyLCAxMTAxMywgMTI3OTI3LCA3MTA2MiwgMTk0Njc3LCA3MTQ2MSwgNjcwOTAsIAotICAgIDY5MjUsIDAsIDAsIDkyODkyLCA3MTg1NiwgMTE1NjgsIDk4MzY3MywgNDMzNjcsIDY0NTc5LCA5MTc5MzAsIDc4NTIsIAotICAgIDExMTM4LCAwLCA2NzU0LCA2MzEyLCA3Nzk1NiwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgMTIyOTYsIAotICAgIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAxMjkxNDYsIDk4MzYwNSwgCi0gICAgOTUzMiwgNjYzNTUsIDExOTI2NCwgNjgwNzMsIDExMzY5NSwgNjQzNDMsIDE5NTAzMiwgOTI3NDQsIDE5NTAzMSwgMCwgCi0gICAgMTk0ODQ3LCAxOTUwNTcsIDExNDQ1LCA2ODI5NCwgMjExMiwgMTI4NzQxLCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIAotICAgIDk1MDcsIDEwMjEwLCA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIAotICAgIDAsIDEyMDI3NiwgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgCi0gICAgNzg5NCwgNDM5MSwgNjgxMzksIDEyMTA2NCwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIAotICAgIDkyNDMzLCAzNTU4LCAxMjkxOTAsIDM5MTMsIDcwNDI5LCAxMjEzNzYsIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCAKLSAgICA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDk4MzEyMiwgOTE3NTg3LCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIAotICAgIDY3MDc1LCA3MTIxOSwgMTY3LCA5ODM5MDYsIDc4MzAxLCA5ODM2NTMsIDc0MjExLCA0MTg5NywgNjcwNzIsIDAsIDkxNzU4MywgCi0gICAgMTI3MTQwLCA2NzA3NiwgMjQ5MywgMCwgMTEzNzc4LCAxMjEyNDUsIDc4MTA3LCA2NDM1NCwgMCwgODc3NywgMTI3OTQwLCAKLSAgICA0MDYsIDg4ODQsIDIzODUsIDc4MjEwLCA5MjQ1MCwgOTE3NTkwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgMTIxMTQsIDAsIAotICAgIDEyODU5NywgNjQ5MzYsIDE5NDY5NSwgMTE5MjY3LCAxMjA2MjksIDEwNTYxLCAxMjg5NDAsIDgzNjUsIDEyMDUzOSwgCi0gICAgOTgzNzc0LCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDEyODg5NiwgODMxNzYsIDc4MzQsIDc0MTU5LCAwLCAKLSAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1NzcsIDE2MzksIDEyMDg0MiwgMCwgNzA4MDMsIDYzMjcsIDY3MjQsIAotICAgIDEyNDk1MywgNjYzNTQsIDkyNTY2LCA2OTkxMCwgNDgxNywgMTEwODcsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIAotICAgIDExMDIyLCAwLCAwLCAwLCA5ODM1OTksIDAsIDczOTU0LCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgCi0gICAgMTI4NzgxLCAxMjM0MywgNjU3LCA2NzExMCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCAKLSAgICA5Mjg5MSwgMTk0OTQ1LCA4MzA1NiwgNDQ1NiwgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDkzMDQ0LCAKLSAgICAxMjk0MTEsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgODMxODIsIDQ4MTgsIAotICAgIDEyOTA1OCwgNDE0MDMsIDExOTk3NywgNzI0MjIsIDEyODQ1OCwgNDE0MDYsIDQzMjczLCA3NDE2MCwgNjk4MDUsIDczOTM5LCAKLSAgICA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAxMTk5ODAsIDQ0NTEsIDEzMDg3LCAwLCAxMTI4NCwgCi0gICAgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCA3MDA3MCwgMzM3NSwgMTI4NDQ4LCA1OTAwLCAKLSAgICA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDk4MzQ4MSwgMCwgNjcwNzgsIDEyODQ1MSwgMjI4MiwgMTIxNDIyLCAxMjc4MTAsIAotICAgIDExNDAxLCA2NzA3OSwgMCwgNjg0NTksIDEyNTAyOCwgOTgzMTQxLCAwLCA3MDE1MCwgNjU0MzgsIDAsIDcyODAsIDEyNzg4NywgCi0gICAgNjgwNTUsIDcwMTQ2LCA0ODY4LCA4Mjk3LCAxMTk5NjYsIDcwMTQ4LCAxMjUwMDgsIDEyODc0NCwgNDMxNjEsIDcwMTQ0LCAKLSAgICA5MjM2MCwgMCwgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCA3MDE4NiwgMTIxMzUsIDU3MzIsIDQ0NjQsIDE5NTA4MywgCi0gICAgNzEzMzAsIDk3NywgNDQ1OCwgNDM4MjcsIDkyOTcxLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTIxMjI4LCAxMzk1LCAKLSAgICA2NDI3OSwgMCwgOTIyNDAsIDEyMTE3OSwgNzg2LCAxMjY5OTUsIDQzMTc0LCA2NDM0MCwgODMwNzcsIDE5NDc2NywgNzM5NzEsIAotICAgIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIDY1MDI1LCAwLCAwLCAwLCA5Mzk1NiwgOTgzOTE3LCA2ODQ0NCwgMCwgCi0gICAgOTI0MzcsIDEyNDkyOCwgOTI1NDksIDEwMjA0LCA5MjY1NiwgODMwNzgsIDExOTI3MSwgMTI4NDMxLCAxMzk5LCAxMjE0NjMsIAotICAgIDY1MjE3LCAxMjE0NjUsIDg4NTIsIDEyMDgwOCwgMjQxLCAxMjE0NjksIDQ5MDcsIDEyODQyNywgOTgzNjM5LCA3OTMyLCAKLSAgICA5NzI3LCAxMjg0NjMsIDc0MjU1LCA4NzQ4LCAwLCAxMjg0MjgsIDk4MzYzMSwgMCwgNDI3ODAsIDU1MjYzLCAxMTM2NzcsIAotICAgIDk4MzU2MCwgNDIxNywgOTMwMzQsIDg2NTAsIDEyNzk5MSwgMTIwNjczLCAxMjgyMTUsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAKLSAgICAzOTY1LCAxMTkxMTksIDY3MTksIDEyODAwNywgMTMzMDAsIDc4NDM5LCA5Mzk3MSwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIAotICAgIDY2Mjg5LCAxMjA5MDIsIDczODE1LCA0NDIwLCA5ODMxMjAsIDY0MTAsIDc3NjAsIDAsIDcwNDY4LCAxMjg3NTIsIDEyMDY4NCwgCi0gICAgMTIxMjQ2LCA3Mjk0LCAxMjgyMTgsIDQzODY5LCAxMjA4NTksIDkwNjYsIDEyMTMyMSwgMTE5OTMsIDQzMTg4LCAyNjI2LCAKLSAgICA3NzYyLCA5ODM4NjYsIDExODgzMSwgOTI4OTksIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDcwMjkwLCA3ODUxNiwgCi0gICAgNjkxOSwgODYxOSwgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjA1MzcsIDE1NDIsIDkyMzAzLCAKLSAgICAxMjg4MTksIDAsIDEyNzMyNywgMTIxMTk5LCA3NDMxMSwgNzg0OTcsIDAsIDEwMTgxLCAxMjQ5MzcsIDQzNjI0LCAxMjkwNjAsIAotICAgIDc3NzksIDkxNzU1MSwgMTAxOTUsIDk0NzksIDYwMjksIDEyODM3NCwgOTIyNjgsIDIyMjQsIDAsIDY1NTc3LCA4OTkzLCAKLSAgICA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDcwMTA2LCAKLSAgICA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgNzAzODYsIDEyNzkwMywgOTgzMzM5LCA5ODMzMzgsIDI3MzUsIAotICAgIDQyODMxLCA3NzkzNSwgNzA0MzksIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDcwNDMzLCA3Mzk0NiwgMCwgMTk0NzAzLCAwLCAKKyAgICAxMjg4NSwgMTI3Mzc1LCAxMTkwNDUsIDY0NzIwLCA5MTc4NzMsIDEyMDc1OSwgNzA3MzcsIDEyNjAzLCA3MTMxLCAxMTEwOCwgCisgICAgNDU2NiwgNzUxOCwgOTMxNywgMzgwMSwgMTAzNDIsIDEwNDA2LCAxMjQ5MzgsIDExOTI1OSwgNDI1NzYsIDEyNTIzNywgCisgICAgNTIwMCwgOTI5NDYsIDEyMTQzNSwgOTgzNjgzLCA5MTgzLCAxMjczNjEsIDc0NDU4LCA2NjI4MiwgMzk1LCA1NDgyLCA1MTk4LCAKKyAgICA0MzQ5LCAxMDM5MCwgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMTI4MzgzLCA0MzMwNywgNzAyOTcsIAorICAgIDExODk3MywgNzA0NjcsIDEyMTM0LCAxMjExNjcsIDAsIDExODg0MywgOTEyNiwgNDM1LCA5ODM2MjQsIDEyMDE0LCAxMDM3NywgCisgICAgODA5MywgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMTI1MDc1LCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAKKyAgICAxMjA5MzIsIDU3MzgsIDEyMDA4OSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCA4MzM3OCwgNjgxMTIsIDc4NzIsIAorICAgIDg1ODEsIDk4Mzc3MSwgMTI2MCwgMzE0OSwgNTM1OSwgMTIwMTM0LCA3NDk1NSwgNzkxNCwgNTM1NywgNzExOTAsIDc0MzM5LCAKKyAgICAyNjI0LCA1MzY0LCAxMjg4ODEsIDExNDMxLCAxMDA2NTksIDkxMDEsIDExMDU4LCA3ODI4OCwgNjcxMDcsIDc4MjkzLCAKKyAgICA0MjI3MSwgNzgyODksIDQyOTE3LCA2NzExMSwgMTI5MTc5LCA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODI5MSwgCisgICAgNzgzODQsIDExODMyLCA3ODM4MiwgNzgzODEsIDc4MzgwLCA2OTg2MSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgCisgICAgMzIzMiwgNzM4MjQsIDc0NTgxLCA3ODA4NywgOTgzODE3LCA3MTIwNSwgNDE4ODksIDkyNDUzLCAxMjkxNDQsIDExNjEsIAorICAgIDQxODk1LCA3NDEwMywgOTcwMSwgODYyMiwgMTI1MDI1LCAwLCA2ODc3MiwgMTIwNTg4LCA1MDEyLCA3MTQ1MywgNDEzNjIsIAorICAgIDY5ODYyLCA2ODUwNywgMTE5MjEsIDAsIDExNzY5LCA2ODc4MiwgNjg2MDksIDQxMzY0LCAxMjA5NDcsIDc0MjI4LCA0MTM1MiwgCisgICAgNDEzNjEsIDkxNzkwMywgNDEzNjYsIDE5NDgwOSwgMzM1NiwgMTE2MTEsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgCisgICAgODE5OSwgNzgzODksIDExOTYxOCwgNjc3LCAxMTk5MTYsIDkxNzg3NiwgNzE0ODIsIDEyNzE2OSwgNjg3NDcsIDAsIDY4NzM4LCAKKyAgICAzMzQ5LCA3NDEyNSwgNzAyMiwgODkyNywgNDczOSwgOTI1OTksIDU4MDIsIDEyMDA0NywgODYxNSwgMCwgMTI4MDU4LCA0OTEsIAorICAgIDc0NDAxLCAxMDE5MCwgNjg3NTUsIDY1ODM3LCA2ODgwMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCAKKyAgICA3NTg2LCA0MjMwNSwgMTA4NTIsIDkxNzU4MCwgNDI2NDgsIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIAorICAgIDEwNDYsIDcxMjQsIDEyODYxMCwgNjg3NTMsIDU4MTUsIDUxNzEsIDY1NTM5LCA2ODYxMiwgNjkzMiwgNzQyNjcsIDQyMzk0LCAKKyAgICA0MTg3OCwgNzQ4NDksIDcyNzg5LCA3MjQyNCwgNTE2OSwgMTE5MzUsIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgCisgICAgMTE5MDQ5LCA1MTc2LCA4OTA1LCAyMjY3LCA0ODcxLCA3ODI4NywgMTIwNjYzLCA5ODMzLCAxOTQ4NTAsIDExMzczMCwgCisgICAgMTEyOCwgNjU5MjAsIDkxNzg3OSwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgMzY2MiwgOTQxMywgCisgICAgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgNTE2NSwgNTEyNiwgCisgICAgNDEzODUsIDE5NDg0NCwgNDEzODksIDEyNzk2MywgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgOTQwNCwgCisgICAgMzUwNywgOTQwNiwgNzYyOSwgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCA3MDgxMSwgCisgICAgMTA2MjcsIDQxMTMwLCA3MTA3OSwgMzk5NiwgMCwgNzE0NDIsIDEwMDg2NCwgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCAKKyAgICA0MzMyLCA2NDgyNSwgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCAxMjcyMDYsIDEyMDg1LCAKKyAgICA2NjkwMiwgNTc0LCAxMjY3MDUsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY1OTMyLCA0MTMyMiwgNDIyMTEsIAorICAgIDU0NDIsIDQxOTAsIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA2ODgxNywgNzc4MzgsIDc3MDgsIAorICAgIDc0NzU5LCAyMjI4LCA2NTg2NywgMTAzNDUsIDEwNDA5LCA0MTkxLCAxMjAzNzgsIDc3ODQ0LCA3MzgwMCwgNDIxODEsIAorICAgIDc3ODQzLCA3NzgzOSwgMjA2MCwgMTIxMTkzLCA3MTExLCAxMTc4OCwgNjUzNzYsIDY4MTI5LCAxMDQxNSwgNzI3NDEsIAorICAgIDE5NTAyNSwgMjA1LCA4MzA0MCwgMTAzNTEsIDY3MTUxLCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCAKKyAgICA0MTM1NSwgNTUwNSwgNzA3MzYsIDU1MDMsIDgwMjEsIDEyODAzNSwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCAKKyAgICA1NTA3LCAxMjA0NCwgOTIzNjQsIDEwMDc0MiwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgCisgICAgNTQ3NiwgODk5MSwgNjYzMjIsIDY5Nzc4LCAxMTEzMywgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCA3NDUxNiwgCisgICAgMjY3NSwgNTU5NSwgNzg0MTEsIDQzNzYyLCA0MzY3LCA4MzUxOCwgOTE3NzgyLCA1NDc4LCA1OTA0LCA1NTk0LCAwLCAKKyAgICA3NDE1MCwgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDc1MDY5LCA5ODMxMDgsIDk3MzEsIDY5NzMxLCAKKyAgICA2NDYzMywgNzc4NTcsIDc3ODU0LCA3MTIxNywgNzc4NTIsIDcxMjI3LCA3Nzg1MCwgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgCisgICAgNzEzNywgMCwgNjY5MDksIDEyODg3LCAxMDU1MSwgMTk0NTY0LCA3Nzg2NiwgNzc4NjcsIDc3ODY0LCA3Nzg2NSwgOTkyOSwgCisgICAgNTE5OSwgOTkzNiwgMTEyMCwgNDIzODcsIDAsIDE0NDQsIDk0ODYsIDc1NTQsIDY1ODM5LCA1NTI1MiwgNzI4MzIsIDE0NDIsIAorICAgIDEyOTA4MCwgNTg5NCwgNzAwNjksIDEyODY3MiwgNDExNzEsIDkyNTExLCA3MDM1OCwgMTMyMywgMTMxNjIsIDEyMDU5OSwgCisgICAgMzMzNCwgMTI4NzA0LCA5MjcwOSwgNzc4ODEsIDY2MDIyLCA3MDcwNSwgNjk3NzAsIDE2NTEsIDEyMDM2NCwgODg2MSwgMCwgCisgICAgOTE3NTg4LCAxMTQyLCA5ODMxMTIsIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgNzg0MDYsIDQwMDIsIDQzNjI2LCAKKyAgICAxMDQ0MiwgMTA2NzYsIDMzNDQsIDEyODkxMCwgMTk0Nzg3LCAxMjkyMCwgMTk0NTYwLCA3MDQ5NywgMTk0Njg3LCA2NjY0MiwgCisgICAgMTI3NywgNjY4NzYsIDc4NzEsIDY3MTA2LCA3MTQ4NywgNzg4NTMsIDEyOTA2OCwgNzg4NTQsIDEyMDM2MCwgOTgzNDkyLCAKKyAgICAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIDQzODU2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgOTgzNjI3LCA3ODg1NiwgNzg0NDgsIAorICAgIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNjY3NDMsIDQyNDQwLCA3MTIyNSwgCisgICAgNDMxMTgsIDExOTg3NSwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCAKKyAgICA5MjQzLCAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMTIyODkwLCA2MjQ3LCA0MzExNywgNzAzNjQsIDcxMjEsIDc0MTY2LCAKKyAgICAxMjQ5NzMsIDEyMDM1NSwgOTI1MzcsIDE5NDg0NiwgMTE5ODc3LCAxOTUwMzQsIDcwMzU3LCAxMTk5MjIsIDAsIDY3MTE5LCAKKyAgICAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCAKKyAgICA0MzM4MCwgOTgzNjI1LCA5ODMwOTEsIDEyOTM0MiwgMTI4NDUwLCAxMTYwMywgMTI5MzQ3LCA3NTA3NCwgNjU4OSwgCisgICAgMTI3MzYwLCA4Mjk3NSwgMTIwOTkzLCA2NzgxMiwgMTI3MTkwLCAxOTQ2ODAsIDEyOTA4NywgNDI1NzIsIDEyODI2NCwgCisgICAgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTE4ODgyLCAxMTY1NCwgMTIxMjg3LCA3NTUwLCAxMDY4NiwgNTkwMywgCisgICAgNjcwOTgsIDc4MDA5LCA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgMzM2NiwgMTAzOTksIDkxNzkzOCwgNTU0MiwgCisgICAgMTEwMTMsIDEyNzkyNywgNzEwNjIsIDEyNTIyNCwgNzE0NjEsIDY3MDkwLCA2OTI1LCA5ODMyNzQsIDAsIDkyODkyLCAKKyAgICA3MTg1NiwgMTE1NjgsIDk4MzEzMSwgNDMzNjcsIDY0NTc5LCA5MTc5MzAsIDc4NTIsIDExMTM4LCAwLCA2NzU0LCA2MzEyLCAKKyAgICA3Nzk1NiwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIAorICAgIDExMDUwLCAxMDk4NCwgOTIyMDgsIDk4MzIxNiwgOTE3ODIyLCA5MjE4MiwgMTI5MTQ2LCAxOTQ2MzYsIDk1MzIsIDY2MzU1LCAKKyAgICAxMTkyNjQsIDY4MDczLCAxMTM2OTUsIDY0MzQzLCAxOTUwMzIsIDkyNzQ0LCAxMjcyNDMsIDAsIDE5NDg0NywgNzg4MzgsIAorICAgIDExNDQ1LCA2ODI5NCwgMjExMiwgMTI4NzQxLCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCAKKyAgICA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3Mjg1MCwgOTYyNCwgMTE1NDUsIDAsIDEyMDI3NiwgCisgICAgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgCisgICAgNDM5MSwgNjgxMzksIDEyMTA2NCwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIDkyNDMzLCAKKyAgICAzNTU4LCAxMjkxOTAsIDM5MTMsIDcwNDI5LCAxMjEzNzYsIDc4MjM1LCA3MDQ0LCAxMjY1LCAxOTQ2NjAsIDYzMDksIDcwNDUsIAorICAgIDcxNzUsIDcwNDcsIDc4MjM5LCAxMTc5MSwgOTgzMTIyLCAxOTQ1ODQsIDM4ODEsIDc4MzA3LCA0MTg2NCwgMTI3Mzk1LCAKKyAgICAxMjUyMDgsIDY3MDc1LCA3MTIxOSwgMTY3LCAxMjExMDEsIDcyNzU1LCA5ODM2NTMsIDc0MjExLCA0MTg5NywgNjcwNzIsIDAsIAorICAgIDkxNzU4MywgNjY3NDUsIDY3MDc2LCAyNDkzLCAwLCAxMTM3NzgsIDEyMDUzMCwgNzgxMDcsIDY0MzU0LCA5MTc1OTMsIAorICAgIDg3NzcsIDEyNzk0MCwgNDA2LCA4ODg0LCAyMzg1LCA3ODIxMCwgOTI0NTAsIDkxNzU5MCwgOTE3NTczLCA0MzAzMCwgCisgICAgNDIwMjcsIDEyMTE0LCAwLCAxMjg1OTcsIDY0OTM2LCAxMDA3NjMsIDExOTI2NywgMzQyMSwgMTA1NjEsIDEyODk0MCwgCisgICAgODM2NSwgNzQyOTQsIDk4Mzc3NCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAxMjg4OTYsIDgzMTc2LCA3ODM0LCAKKyAgICA3NDE1OSwgMCwgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTc3LCAxNjM5LCAxMjA4NDIsIDk4MzU4NiwgNzA4MDMsIAorICAgIDYzMjcsIDY3MjQsIDcxMjY5LCA2NjM1NCwgOTI1NjYsIDY5OTEwLCA0ODE3LCAxMTA4NywgMTk0NzU5LCA5MjUzNiwgNzA0MywgCisgICAgOTYwMCwgMTEwMjIsIDEyODQyNywgMTI5MzQ0LCAxMjgzNTQsIDk4MzU5OSwgOTgzMjA5LCA2Njc3MSwgNzU0OCwgNjQ3OTQsIAorICAgIDQyMDUwLCAxMjI5MSwgNTUyODksIDEyODc4MSwgMTIzNDMsIDY1NywgNjcxMTAsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCAKKyAgICA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgOTI4OTEsIDEyNzM3MiwgODMwNTYsIDQ0NTYsIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgCisgICAgMTI3NTIwLCAwLCA5MzA0NCwgMTI4NDMwLCA2NTU1MCwgMjYwLCA0ODE2LCA2NzY1OCwgMTA2ODcsIDEyOTMxOSwgNDgyMSwgCisgICAgNDQ2NiwgMCwgODMxODIsIDQ4MTgsIDEyNTI1NywgNDE0MDMsIDExOTk3NywgNzI0MjIsIDEyODQ1OCwgNDE0MDYsIDQzMjczLCAKKyAgICA3NDE2MCwgNjk4MDUsIDczOTM5LCA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAxMTk5ODAsIDQ0NTEsIAorICAgIDEzMDg3LCAwLCAxMTI4NCwgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCA3MDA3MCwgMzM3NSwgCisgICAgMTI4NDQ4LCA1OTAwLCA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDEyODMxMywgMCwgNjcwNzgsIDEyODQ1MSwgMjI4MiwgCisgICAgMTIxNDIyLCAxMjc4MTAsIDExNDAxLCA2NzA3OSwgMCwgNjg0NTksIDEyNTAyOCwgOTgzMTQxLCAwLCA3MDE1MCwgNjU0MzgsIAorICAgIDk4Mzc2MCwgNzI4MCwgMTI3ODg3LCA2ODA1NSwgNzAxNDYsIDQ4NjgsIDgyOTcsIDExOTk2NiwgNzAxNDgsIDEyNTAwOCwgCisgICAgMTI4NzQ0LCA0MzE2MSwgNjY3MzksIDkyMzYwLCAxOTUwNzAsIDUxODIsIDE5NDY5MiwgMTIwNTQyLCA3Mjc2NCwgMTI4NTg4LCAKKyAgICA0MjI2LCA3MDE4NiwgMTIxMzUsIDU3MzIsIDQ0NjQsIDE5NTA4MywgNzEzMzAsIDk3NywgNDQ1OCwgNDM4MjcsIDkyOTcxLCAKKyAgICA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMTIxNDY2LCAxMjEyMjgsIDEzOTUsIDY0Mjc5LCAwLCA5MjI0MCwgMTIxMTc5LCA3ODYsIAorICAgIDEyNjk5NSwgNDMxNzQsIDY0MzQwLCA4MzA3NywgMTk0NzY3LCA3Mzk3MSwgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgCisgICAgNjUwMjUsIDAsIDk4MzQ2OCwgMTI4MzAzLCA3NDE1MSwgOTgzOTE3LCA2ODQ0NCwgMCwgOTI0MzcsIDEyNDkyOCwgOTI1NDksIAorICAgIDEwMjA0LCA5MjY1NiwgODMwNzgsIDExOTI3MSwgMTI4NDMxLCAxMzk5LCAxMjE0NjMsIDY1MjE3LCAxMjE0NjUsIDg4NTIsIAorICAgIDEyMDgwOCwgMjQxLCAxMjE0NjksIDQ5MDcsIDEyODE2MSwgOTE3OTI3LCA3OTMyLCA5NzI3LCAxMjg0NjMsIDc0MjU1LCAKKyAgICA4NzQ4LCAwLCAxMjg0MjgsIDEyODY0NiwgMCwgNDI3ODAsIDU1MjYzLCAxMTM2NzcsIDExOTg1NiwgNDIxNywgOTMwMzQsIAorICAgIDg2NTAsIDEyNzk5MSwgMTIwNjczLCA3Mjg3OCwgNjk5MDAsIDExODg3MiwgNDMwOTksIDM5NjUsIDExOTExOSwgNjcxOSwgCisgICAgMTI4MDA3LCAxMzMwMCwgNzg0MzksIDcyODM2LCA0MzA1NywgNjY1ODgsIDExODk5MSwgNjYyODksIDEyMDkwMiwgNzM4MTUsIAorICAgIDQ0MjAsIDEyODUzMywgNjQxMCwgNzc2MCwgMTAwOTk5LCA3MDQ2OCwgMTI4NzUyLCAxMjA2ODQsIDEwMDUyOCwgNzI5NCwgCisgICAgMTI4MjE4LCA0Mzg2OSwgNjgyMDQsIDkwNjYsIDEyMTMyMSwgMTE5OTMsIDQzMTg4LCAyNjI2LCA3NzYyLCA5ODM4NjYsIAorICAgIDExODgzMSwgOTI4OTksIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDcwMjkwLCA3ODUxNiwgNjkxOSwgODYxOSwgCisgICAgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjA1MzcsIDE1NDIsIDkyMzAzLCAxMjg4MTksIDAsIAorICAgIDEyNDk0MCwgMTIxMTk5LCA3NDMxMSwgNzg0OTcsIDEyMTQxMiwgMTAxODEsIDEyNDkzNywgNDM2MjQsIDEyOTA2MCwgNzc3OSwgCisgICAgOTE3NTUxLCAxMDE5NSwgOTQ3OSwgNjAyOSwgMTI4Mzc0LCA5MjI2OCwgMjIyNCwgMTAxMDc5LCA2NTU3NywgODk5MywgCisgICAgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDY2ODA0LCA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDcwMTA2LCA2MDI3LCAKKyAgICA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMTIwNjI5LCA3MDM4NiwgMTI3OTAzLCA5ODMzMzksIDk4MzMzOCwgMjczNSwgNDI4MzEsIAorICAgIDc3OTM1LCA3MDQzOSwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMTI5MzY0LCA3MDQzMywgNzM5NDYsIDAsIDE5NDcwMywgMCwgCiAgICAgNjgxNDAsIDk4MzkyOCwgOTU3NiwgNzAyODgsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgCiAgICAgMTI3MDYzLCA3NzA5LCA0MTExMiwgMTE5ODY4LCA2NjU2MCwgODM4MSwgNDU3MiwgMTI4NzYsIDY2NTYxLCAxMjg5MjEsIAotICAgIDY3NTgsIDY2MDMxLCAxNjE1LCA1ODU1LCA4MDksIDEyNzExNywgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCAKLSAgICAxMjg5MjksIDcwMTAwLCAxMjg2MDcsIDcyNjAsIDk4MzMyNiwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCAKLSAgICA2NTI1NywgNzQ5MDksIDY4NjE2LCAxMjA2MDcsIDkzNDcsIDgzMzYwLCA2NTMyLCAwLCA5MTc5MTgsIDEyMDg2MCwgCi0gICAgMTI3MDYwLCA2NTgyOCwgMTIwMDA2LCAyODMsIDY4NjY1LCA3ODgxMywgNTMyLCA3ODY2MywgNzg4MTcsIDEyODAyMSwgCi0gICAgMTIwNjA5LCAwLCAzMzcwLCA5MTc4ODEsIDExMzYxLCA1NDQzLCA3MTQzMSwgODE1MywgNzM3NjcsIDAsIDEwNzQxLCAKLSAgICAxMjE1MDMsIDIyOTgsIDAsIDEyNTAzOSwgNjU0OTUsIDY0NzA2LCA5ODMzMjAsIDQzMzQ0LCA5ODMzMTgsIDcxNDQsIDk0NjYsIAotICAgIDc4ODY2LCA5ODI0LCA2NzE0MiwgMTI4OTYzLCA2NzEzMywgNjcxMzAsIDkxNSwgNDM0MjUsIDY3MjkyLCA0Mzg2NSwgCi0gICAgNjgyMzIsIDk4MzExMSwgMTIwODg4LCA0MzI2NCwgNjcxMzYsIDY3MTM3LCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCAKLSAgICA2ODE2MSwgNjQ1NTAsIDUxODYsIDczNjAsIDEyNzgzNywgNzA0NTEsIDEyMTA4LCAxMjA2NDQsIDY1MTI0LCA0MzEyNywgCi0gICAgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMTI4MTc4LCAxMjA5MTksIDExNDg1LCAKLSAgICA2MTAzLCA5MjQ2OCwgOTgzMzA3LCAxMTcxOCwgOTgzMzA1LCAxMjg4OSwgOTI2NTcsIDEyNTAzNCwgMTIwNjM1LCAxMjcxNTcsIAotICAgIDEyMTEyOCwgNTUyNDUsIDEyODcwOSwgMTYzMCwgODMwMjcsIDY1NDgzLCAxMjA2MzQsIDEyNTY1LCAwLCA2NTQ3NiwgCi0gICAgNzAzNjksIDk4MzA3MiwgODMwMjksIDkyODMsIDc3MDAsIDkxNzUzNywgOTY5MCwgNjU0OTksIDAsIDY0NTkzLCA1MTIsIAotICAgIDMzNzYsIDY4MDgwLCAwLCAxMjgyNTMsIDc3ODkyLCA2MzIsIDEyOTQwLCA3Nzg5MSwgNDI1MjksIDc4NTg3LCAxOTQ2MDQsIAotICAgIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMzAxLCA5ODMzMDAsIDEyODI3MywgMTA3NDUsIDEwMTc0LCA3Mzc5LCA2NDU4MSwgCi0gICAgNTM4NiwgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAxMjA3NzMsIDk0MDU1LCA5ODEyLCAwLCAKLSAgICA0NDYwLCA3ODc5MSwgMTI0OTU2LCA3MTMwNywgMTI4MDM4LCAwLCAxMjExMzUsIDEyNzE3NCwgNjQyNzgsIDkyMzcwLCAKLSAgICA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDcwMTIyLCAxODAxLCAxMjgzNSwgNzQ4NDcsIDEyMDg2NywgNzM4MjMsIAotICAgIDgzMTEwLCA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDY2Mjk5LCAKLSAgICA5ODMyODcsIDcxNDQ3LCAxMjEwNiwgMTIwOTcyLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgCi0gICAgMjk1MSwgOTUyMiwgNjc4MTYsIDc4MjY2LCA2NjYwNCwgOTgzODYwLCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIAotICAgIDc3ODk5LCA3NzkwMCwgODQ1MSwgODMzMjQsIDAsIDAsIDY2NDU4LCAxMjg5NTcsIDEyODg3MCwgNzQ4OTYsIDAsIDI5MDgsIAotICAgIDAsIDExMTc3LCA2NDkwMiwgNDI0MywgOTI0NTQsIDEyMjM5LCAxMjEwMDMsIDEyNDk1OSwgNDQ0MSwgMCwgODI5NjgsIAotICAgIDczOTQwLCA2NDM1MiwgMTI3NTEzLCAxMjUwMzEsIDQxMSwgOTgzMjc1LCA5MTk5LCA5ODMyNzMsIDQwNTYsIDExODk5MiwgCi0gICAgNDE4OTAsIDEyODU5MiwgMjczMCwgNDE2MDQsIDEyODM1NSwgNTQyOCwgMTk0NzQzLCAzMzY0LCA0MjI2NSwgNjQ0MzcsIAotICAgIDEyNzkzNSwgMTE4ODE2LCA3MTQ1OCwgOTY4NCwgMjE2LCA3MTM2NywgMTQwMSwgMTI4MDUzLCA0NDAxMiwgOTI2MjgsIAotICAgIDcxNDU2LCA5MjU4NSwgOTE1OCwgNjY4NzgsIDExMTI2LCA1NzY4LCAwLCA5ODM3NTksIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCAKLSAgICA2NTg5NSwgMTI1MDc2LCAxMjEzODAsIDMzMzgsIDczOTM1LCA1NzIsIDcwNDEsIDI3MzYsIDY3NjA1LCAxMjc1NDMsIAotICAgIDkzOTYyLCAyNzk0LCA4ODA3LCA2NDQ5MSwgNzc4NDcsIDU0MzgsIDUyMjIsIDUzODEsIDQzMTE0LCAwLCA1MTkzLCA1MTI1LCAKLSAgICA1NDU2LCA1NTA5LCA3Nzg0NiwgMTk0NzQ3LCA5NTM0LCAxMjkxMDksIDEyOTA0MCwgMCwgMzQzMCwgMCwgNDI5MDUsIAotICAgIDc4NzE3LCA3NDkyOSwgOTgxLCAxMjkxODQsIDQzMzAsIDczOTI5LCAxMjA1MzYsIDE4MjQsIDEwOTA4LCAxMjY1MDYsIAotICAgIDcwMzQsIDQxNjgzLCA2NDYxNywgMCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgMTI4MjU5LCA2NzQsIDYzOTkxLCAKLSAgICA5ODMyNTEsIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCA4MzY0LCA1MTIzLCAxMTk2MjgsIAotICAgIDUyODEsIDU0NjksIDUxMjEsIDc3OTg5LCAxMTg5OTMsIDAsIDUxMzAsIDgzMTgwLCAxMjgzNTcsIDc3OTkwLCAwLCAKLSAgICAxMjA3MjYsIDEyMjEsIDI3MzMsIDExNzQ2LCA3Nzk5MSwgNTIxNiwgMTE5MjY4LCAwLCAxMjg0NzUsIDkyMTg3LCAzNDY4LCAKLSAgICA3MDMzLCA5MjMwLCA1OTM5LCAxMjgzOTcsIDAsIDU4MDMsIDcxODY3LCA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCAKLSAgICA2NDYxMywgMTAzODUsIDQxNzA2LCAwLCAwLCA5MTc5MzksIDAsIDExNzM5LCA3Nzk4NiwgNDE5ODEsIDkyNzQzLCA1OTM4LCAKLSAgICAwLCA0Mzc2NiwgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgNzM4NTIsIDEyNDk5NCwgMTMwNTcsIDAsIDEyNjk3NiwgCi0gICAgMTI5MDgxLCAxMDAwOSwgMCwgNDE3MDMsIDEyMDk1MCwgMTIxNjUsIDEyOTE5MSwgMCwgOTg4NSwgMCwgODA3NywgOTI2MjAsIAotICAgIDEyNzkwOCwgMTIxMDQ0LCAxOTQ5OTUsIDAsIDkyNDU3LCAxMjkxMzgsIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIAotICAgIDQ5ODcsIDY0NTE5LCAxMjEyNjUsIDEyNTA3OCwgMCwgMTk0ODEzLCAxMjg1NzQsIDEwOTcwLCAxMTczMywgMCwgMTIwNzkyLCAKLSAgICAxMjY0OTAsIDE5OTQ0LCA3NDM1NiwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgMjcyNCwgCi0gICAgMTI4ODk5LCAwLCAxMjMxMywgMTExNTEsIDUxNSwgMTE5OTQ3LCA0Mjc5MSwgNjM5ODcsIDc4Mjg2LCAxMTk5NDMsIAotICAgIDExOTk0MCwgMTE5OTQxLCAxMTk5MzgsIDk3NzUsIDQwNDYsIDQ1ODksIDQ1MjEsIDY4NjI5LCA5MTQxLCA5MTc5MDQsIAotICAgIDc4ODUwLCAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMTIwODQxLCAwLCAxMjUwNjIsIDk4MzQ0MSwgMTIwODQzLCAKLSAgICA2MTg0LCA4NjA2LCAzMzAzLCA0MTM3MiwgMTE3ODYsIDk0NzMsIDY2MjAzLCA2NjE3NywgOTI0NDYsIDExNTkzLCA0MzAwNywgCi0gICAgNDQ3OCwgNjYxNzgsIDAsIDAsIDI3NDQsIDAsIDQ0NzcsIDc4MjY3LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAKLSAgICAxMTk5NjEsIDY2MTk4LCA0MTg4MCwgNjYxODgsIDExNjIzLCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIAotICAgIDY2MTg5LCA3Mzc4OCwgNzc4OCwgNDg0NywgOTgzNDI4LCAxMjc3NTksIDAsIDEyODQzMywgMjIyMSwgMTU4MSwgNjUzNSwgCisgICAgNjc1OCwgNjYwMzEsIDE2MTUsIDU4NTUsIDgwOSwgMTI3MTE3LCA5MjI4MywgNzI4NTMsIDEyODAwNCwgNTc5OSwgMTI4OTI5LCAKKyAgICA3MDEwMCwgMTI4NjA3LCA3MjYwLCA5ODMzMjYsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIDc4ODE5LCA2NDM4NiwgNjUyNTcsIAorICAgIDc0OTA5LCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCA4MzM2MCwgNjUzMiwgMCwgMTk1MDYyLCAxMjA4NjAsIDEyNzA2MCwgCisgICAgNjU4MjgsIDEyMDAwNiwgMjgzLCA2ODY2NSwgNzg4MTMsIDUzMiwgNzg2NDIsIDc4ODE3LCAxMjgwMjEsIDEyMDYwOSwgMCwgCisgICAgMzM3MCwgOTE3ODgxLCAxMTM2MSwgNTQ0MywgNzE0MzEsIDgxNTMsIDczNzY3LCAwLCAxMDc0MSwgMTIxNTAzLCAyMjk4LCAwLCAKKyAgICAxMjUwMzksIDY1NDk1LCA2NDcwNiwgOTgzMzIwLCA0MzM0NCwgOTgzMzE4LCA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgCisgICAgNjcxNDIsIDEyODk2MywgNjcxMzMsIDY3MTMwLCA5MTUsIDQzNDI1LCA2NzI5MiwgNDM4NjUsIDY4MjMyLCA5ODMxMTEsIAorICAgIDEyMDg4OCwgNDMyNjQsIDY3MTM2LCA2NzEzNywgMCwgNDMwMzgsIDc4ODY0LCA2NzMwLCA3ODg2MiwgNjgxNjEsIDY0NTUwLCAKKyAgICA1MTg2LCA3MzYwLCAxMjc4MzcsIDcwNDUxLCAxMjEwOCwgMTIwNjQ0LCA2NTEyNCwgNDMxMjcsIDY2MDQzLCAwLCA2MzI2LCAKKyAgICA0MzEwNywgNzc4MjYsIDAsIDQyNTYyLCAwLCAxMjg4MjEsIDEyMDMyOCwgMTIwOTE5LCAxMTQ4NSwgNjEwMywgOTI0NjgsIAorICAgIDEyMTA3NSwgMTE3MTgsIDk4MzMwNSwgMTI4ODksIDkyNjU3LCAxMjUwMzQsIDEyMDYzNSwgMTAxMDcwLCAxMjExMjgsIAorICAgIDU1MjQ1LCAxMjg3MDksIDE2MzAsIDgzMDI3LCA2NTQ4MywgMTIwNjM0LCAxMjU2NSwgMCwgNjU0NzYsIDcwMzY5LCAKKyAgICA5ODMwNzIsIDgzMDI5LCA5MjgzLCA3NzAwLCAxMjExOTIsIDk2OTAsIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAzMzc2LCAKKyAgICA2ODA4MCwgMCwgMTI4MjUzLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMTAxMDc4LCA1OTU3LCAKKyAgICAxMTA1OTMsIDg5MjYsIDE5NTA3MiwgOTgzMzAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIDUzODYsIAorICAgIDEyMDY4NiwgMTE3MTMsIDEwNjMzLCA2OTcwOCwgNTA1NiwgMTAwNjc5LCAxMjc4MjQsIDEyMTUxLCAxMjA3NzMsIDk0MDU1LCAKKyAgICA5ODEyLCAwLCA0NDYwLCA3ODc5MSwgMTI0OTU2LCA3MTMwNywgMTI4MDM4LCAwLCAxMjExMzUsIDEyNzE3NCwgNjQyNzgsIAorICAgIDkyMzcwLCA0MzQ2NiwgMCwgNjY3NjAsIDY0Mzg5LCAyOTUzLCA3MDEyMiwgMTgwMSwgMTI4MzUsIDc0ODQ3LCAxMjA4NjcsIAorICAgIDczODIzLCA4MzExMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA2NjI5OSwgCisgICAgMTk0Nzc1LCA3MTQ0NywgMTIxMDYsIDEyMDk3MiwgNzQyMDcsIDE3NTUsIDEwNDgyLCAxMjg2MywgNzc4OTgsIDExNjMsIAorICAgIDI5NTEsIDk1MjIsIDY3ODE2LCA3ODI2NiwgNjY2MDQsIDEwMTA1OSwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCAKKyAgICA3Nzg5OSwgNzc5MDAsIDg0NTEsIDgzMzI0LCAwLCAwLCA2NjQ1OCwgMTI4OTU3LCAxMjczMDEsIDc0ODk2LCAwLCAyOTA4LCAKKyAgICA5ODM1NTgsIDExMTc3LCA2NDkwMiwgNDI0MywgOTI0NTQsIDEyMjM5LCAxMjEwMDMsIDEyNDk1OSwgNDQ0MSwgMTI0OTI5LCAKKyAgICA4Mjk2OCwgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDEyMTA2NiwgNDExLCAxMjc1MjUsIDkxOTksIDk4MzI3MywgNDA1NiwgCisgICAgMTE4OTkyLCA0MTg5MCwgMTI4NTkyLCAyNzMwLCA0MTYwNCwgMTI4MzU1LCA1NDI4LCAxOTQ3NDMsIDMzNjQsIDQyMjY1LCAKKyAgICA2NDQzNywgMTI3OTM1LCAxMTg4MTYsIDcxNDU4LCA5Njg0LCAyMTYsIDcxMzY3LCAxNDAxLCAxMjgwNTMsIDQ0MDEyLCAKKyAgICA5MjYyOCwgNzE0NTYsIDkyNTg1LCA5MTU4LCA2Njg3OCwgMTExMjYsIDU3NjgsIDEwMTA2NCwgOTgzNzU5LCAwLCA0ODQsIAorICAgIDE5NDczOSwgMCwgMCwgNjU4OTUsIDEyNTA3NiwgMTAwNTI0LCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgCisgICAgMTI3NTQzLCA5Mzk2MiwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMTI4NzA1LCAKKyAgICA1MTkzLCA1MTI1LCA1NDU2LCA1NTA5LCA3Nzg0NiwgMTk0NzQ3LCA5NTM0LCA2Njc2NywgMTI5MDQwLCAxMTk5NjcsIDM0MzAsIAorICAgIDk4MzM5NywgNDI5MDUsIDc4NzE3LCA3NDkyOSwgOTgxLCAxMjkxODQsIDQzMzAsIDczOTI5LCAxMjA1MzYsIDE4MjQsIAorICAgIDEwOTA4LCAxMjY1MDYsIDcwMzQsIDQxNjgzLCA2NDYxNywgMTE5MTM4LCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAKKyAgICAxMjgyNTksIDY3NCwgNjM5OTEsIDk4MzI1MSwgMjk0NiwgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIAorICAgIDgzNjQsIDUxMjMsIDExOTYyOCwgNTI4MSwgNTQ2OSwgNTEyMSwgNzc5ODksIDExODk5MywgMCwgNTEzMCwgODMxODAsIAorICAgIDEyODM1NywgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAxMTkyNjgsIDAsIAorICAgIDEyODQ3NSwgOTIxODcsIDM0NjgsIDcwMzMsIDkyMzAsIDU5MzksIDEyODM5NywgMTIwMDEwLCA1ODAzLCA3MTg2NywgCisgICAgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIDEwMzg1LCA0MTcwNiwgMCwgMCwgNjcxMTUsIDY2NzUzLCAKKyAgICAxMTczOSwgNzc5ODYsIDQxOTgxLCA5Mjc0MywgNTkzOCwgMCwgNDM3NjYsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIAorICAgIDczODUyLCAxMDA2ODQsIDEzMDU3LCA5ODMyNzcsIDEyNjk3NiwgMTI5MDgxLCAxMDAwOSwgOTE3OTA1LCA0MTcwMywgCisgICAgMTIwOTUwLCAxMjE2NSwgMTI5MTkxLCA5ODM3NTcsIDk4ODUsIDE5NDgxNCwgODA3NywgOTI2MjAsIDEyNzkwOCwgMTIxMDQ0LCAKKyAgICAxOTQ5OTUsIDAsIDkyNDU3LCAxMjkxMzgsIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAKKyAgICAxMjEyNjUsIDEyNTA3OCwgMTI5MTg1LCAxOTQ4MTMsIDEyNDk5OSwgMTA5NzAsIDExNzMzLCAwLCAxMjA3OTIsIDEyNjQ5MCwgCisgICAgMTk5NDQsIDc0MzU2LCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAyNzI0LCAxMDA4ODksIAorICAgIDEyNzM5MCwgMTIzMTMsIDExMTUxLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAxMTk5NDAsIAorICAgIDExOTk0MSwgMTAwODkwLCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgOTE3OTA0LCA3ODg1MCwgMjc0MSwgCisgICAgNjQzOTksIDYxOTcsIDEzNzAsIDk4Mzk0OCwgMTIwODQxLCAwLCAxMDA4ODcsIDk4MzQ0MSwgNzEyNzMsIDYxODQsIDg2MDYsIAorICAgIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDM0MjIsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAKKyAgICAwLCAwLCAyNzQ0LCAwLCA0NDc3LCA3ODI2NywgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgMTE5OTYxLCAKKyAgICA2NjE5OCwgNDE4ODAsIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCA2NjE4OSwgCisgICAgNzM3ODgsIDc3ODgsIDQ4NDcsIDEyODM2NiwgMTI3NzU5LCA3MDcyNSwgMTI4NDMzLCAyMjIxLCAxNTgxLCA2NTM1LCAKICAgICA3ODE2MSwgMTI5NTQsIDQzMCwgNzgxNjAsIDU1MjU5LCA3Mzk0NCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgCiAgICAgOTgzNDQwLCA2ODYyNSwgOTgzNDM4LCA3MjY5LCAxMjg0OTksIDU5NjQsIDEyOTA4LCAxMjQ5OTcsIDAsIDc0NzY0LCAKLSAgICA0MzUxMiwgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQzMSwgNDQzLCA5ODM0MjksIDQ5NDQsIDU0NjcsIDExOTYwMywgCi0gICAgNzA4NjUsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgNDEzMDMsIDkxNzU1NiwgMTk0OTMxLCAxMTk5NjIsIAotICAgIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgMTI4Njc2LCAxMjA5MSwgCi0gICAgNjcxMTgsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgNjUwNTksIDQzODYwLCAKLSAgICA2NzM5LCA2Njg0NCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgNjc3MDIsIDQ2NzcsIDEyNjg4LCAKLSAgICAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIDc4MTY2LCA0Njc0LCAKLSAgICA0NTQ4LCA0NDAwNSwgNzEwODcsIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIDE4NTUsIDEyNzQ3NSwgCi0gICAgNjg2NjksIDExODk5MCwgOTI0NDUsIDEyNzU1NCwgMTI2NjMwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgMTE3OTcsIAotICAgIDk4MzQxOSwgMTI4MTU5LCA5MjAyLCA0NjU0LCA2ODQwLCA5ODM0MTYsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIDQ2NDksIAotICAgIDY1MjA5LCAxMjE1MTIsIDEyMTUxMSwgNDY0OCwgNDMwODAsIDc1MDcwLCAxMjE1MDcsIDk4MzQwNiwgNjI0NiwgNjQ5NTAsIAotICAgIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDcwMjg3LCA3NDYyNCwgNDMxODcsIDg2NjksIAotICAgIDEyMDY1OSwgNjgyMSwgNjUwOTMsIDk4MzU2NSwgNzg4ODEsIDI3MTYsIDk4MzQxMiwgOTgzMDYwLCA3MDUwMywgMTk0OTUyLCAKLSAgICA2ODM2OSwgMTIwMDU0LCAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNjgzNiwgOTgzNDIzLCAwLCAKLSAgICA0NjYyLCA3ODAzMywgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIAotICAgIDEwMTMwLCA2ODQ1MCwgNzgxMSwgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgCi0gICAgNDY2MSwgNDI0MzQsIDk4MzQxMywgMTI4NzM3LCAxMTE5MCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgCi0gICAgNDg2NywgMTExMDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCAKLSAgICA0Mzg4OCwgNzAzMDMsIDk4MzM5NSwgNjk5MDUsIDY3MTg4LCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIDY4ODMxLCAKLSAgICAxMjg4MCwgNjUzMDcsIDQ2MTcsIDY4NzU3LCA5ODMzODgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCAKLSAgICA5ODMzODIsIDU5NTgsIDAsIDk4MzQzNSwgNDIxNSwgOTc4OSwgMTE5NjE5LCA0MzIxLCA0NjIxLCAxOTUwMjgsIDQxMzEzLCAKLSAgICA1MjIsIDUzNjgsIDExMTM5LCA2NTgwMywgMTI4NTQ2LCA1MzY2LCAxMjIwMSwgNTM3MiwgMTIxMDYwLCAxMTk5NDksIAotICAgIDE5NDk3NSwgNzcyMCwgNzM5MCwgMjY5NiwgOTgzNDAyLCAwLCA0NjM4LCA5ODM0MDcsIDE3OTAsIDc4MjQyLCA1OTY1LCAKLSAgICA2NDM2MywgNjY1NjksIDY4NjQ2LCA2ODQ3NywgNTM3NiwgMTgzNSwgNTMzNSwgMTIxNTA1LCAxMjgwODksIDQ2MzMsIDAsIAotICAgIDY4MTE5LCAxMTgwLCA0NjMyLCA2NzE5MSwgNTM4NywgNTMzMywgMCwgMTI1MTMyLCA0MjA5NCwgNTMzMSwgNDYzNCwgCi0gICAgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgNDM1MDAsIDEyNjgsIDY1MDk3LCAKLSAgICA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDEyODQ0MCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAKLSAgICA5ODMzNzYsIDE2MDgsIDI3MzgsIDEyNTA2NiwgMTA0NTUsIDQ3NTMsIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgCi0gICAgNzQzODQsIDY2NjExLCA2ODM3NywgNjI0OCwgOTgzMzY0LCA2NzgxNSwgNzg4NzgsIDQyMzE4LCA5MjU4MiwgNTIyOSwgCi0gICAgNDc1NywgMCwgMTI2NTc2LCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMTI4OTI2LCAKLSAgICAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgODMxMjQsIDY3MTAxLCAxMjY0OTUsIDg5NTQsIDc0NzYwLCA2NTE4OSwgCi0gICAgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgNTU3NywgMTI4OTY2LCAwLCAKLSAgICAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIAotICAgIDAsIDU1MjUsIDUzMzAsIDUzMTksIDY4MjkyLCAxMjczMTEsIDY1MDY2LCA0NDAwMywgNjg0MzcsIDk4MzQ4MiwgNDM4NDMsIAotICAgIDEyMDQ5OCwgMTI3ODUxLCA0MzkxOCwgNzQ4NTEsIDc0MDIyLCA5ODM0MjQsIDY0NjA5LCA2ODY0MywgNjc0MTAsIDEyODU5MywgCi0gICAgNTcyMSwgNzQ4OTIsIDU1MTksIDg2MzIsIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA3ODc3OCwgMTY5MiwgCi0gICAgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMjQyLCA1Mjg3LCA1MzA5LCAKLSAgICA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCAxMjA0NzksIAotICAgIDk4MzM0OCwgOTIwOCwgNDYwOCwgNDM5NjYsIDQxMTI0LCA1MTkwLCA2NzYyOCwgNjY4MjYsIDY4MTQ1LCA3MDg2LCAwLCAKLSAgICA2Nzk5OCwgNjc2MjAsIDkzMDQ3LCAyNzM0LCAxMTA3NCwgMCwgNjc2MjcsIDQzNTkzLCAwLCA2NzYyNSwgNTk2MCwgNjc3MjIsIAotICAgIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCAKLSAgICA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCA0MzkwMCwgNDEyNTYsIDc0MTMyLCA2Nzc0MCwgCi0gICAgMCwgNzExNzgsIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCAwLCA0ODY1LCAKLSAgICAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2NzA5NywgMTI4ODQ0LCA1NzM5LCA0MTAyNCwgCi0gICAgNDg2NiwgOTgzODgwLCA3MzkwNCwgMTIxNDIwLCA0ODY5LCAxMjA1NjMsIDEyOTE3MiwgNDIyMywgMTI4MjAxLCA2NjUwLCAKLSAgICAxMjY1MDksIDAsIDEyMDIxMiwgMTE5ODcyLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIAotICAgIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDgzMTkzLCA2MjQ1LCA2ODY1MiwgCi0gICAgMjczMiwgNDI3MzQsIDc0NSwgNjgwNDUsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDEyOTEzNiwgNjg2MzEsIDQyNzc1LCAKKyAgICA0MzUxMiwgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQzMSwgNDQzLCAxMjI5MDIsIDQ5NDQsIDU0NjcsIDExOTYwMywgCisgICAgNzA4NjUsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgOTgzMTE5LCA0MjEzLCAwLCA0MTMwMywgOTE3NTU2LCAxOTQ5MzEsIAorICAgIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgODI0LCAKKyAgICAxMjg2NzYsIDEyMDkxLCA2NzExOCwgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgMTE5ODE5LCAKKyAgICA2NTA1OSwgNDM4NjAsIDY3MzksIDY2ODQ0LCA1NDgxLCAzNDkwLCAxMTk5LCAxMTk4MTEsIDgzNTYsIDY5OTQ3LCA2NzcwMiwgCisgICAgNDY3NywgMTI2ODgsIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgCisgICAgNzgxNjYsIDQ2NzQsIDQ1NDgsIDQ0MDA1LCA3MTA4NywgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIDEyNzAyNCwgCisgICAgMTg1NSwgMTI3NDc1LCA2ODY2OSwgMTE4OTkwLCA5MjQ0NSwgMTI3NTU0LCAxMjY2MzAsIDEyNzMzOSwgMTE5NjUyLCAyNzQ1LCAKKyAgICAxMTc5NywgOTgzNDE5LCAxMjgxNTksIDkyMDIsIDQ2NTQsIDY4NDAsIDEyMjkwOSwgNjg2MzgsIDczOTkzLCAxMDUyNSwgCisgICAgNDY0OSwgNjUyMDksIDEyMTUxMiwgMTIwMjQ1LCA0NjQ4LCA0MzA4MCwgNzUwNzAsIDEyMTUwNywgOTgzNDA2LCA2MjQ2LCAKKyAgICA2NDk1MCwgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzAyODcsIDc0NjI0LCA0MzE4NywgCisgICAgODY2OSwgMTIwNjU5LCA2ODIxLCA2NTA5MywgOTgzNTY1LCA3ODg4MSwgMjcxNiwgOTgzNDEyLCA5ODMwNjAsIDY2NzU2LCAKKyAgICAxOTQ5NTIsIDY4MzY5LCAxMjAwNTQsIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA2ODM2LCAKKyAgICA5ODM0MjMsIDk4MzQyMSwgNDY2MiwgNzgwMzMsIDc4MDMyLCA5MTQ5LCA5MTQ2LCA1OTksIDIwODEsIDc4MDMxLCA3ODAzMCwgCisgICAgMTk0OTYyLCA0NjU2LCAxMDEzMCwgNjg0NTAsIDc4MTEsIDQwOTk0LCAxOTQ3MDIsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIAorICAgIDU3MTMsIDU4MTQsIDQ2NjEsIDQyNDM0LCA5ODM0MTMsIDExODk5NywgMTExOTAsIDY0OTA0LCA5MDI2LCAxMDgzMywgCisgICAgNzQ4NjQsIDc1NDcsIDQ4NjcsIDExMTAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIAorICAgIDQ2MjIsIDExOTY1NiwgNDM4ODgsIDcwMzAzLCA5ODMzOTUsIDY5OTA1LCA2NzE4OCwgOTA0NSwgNzg4ODgsIDQyMjUsIAorICAgIDE5OTI2LCA2ODgzMSwgMTI4ODAsIDY1MzA3LCA0NjE3LCA2ODc1NywgNzgwMDgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgCisgICAgMTA0MjMsIDEwMzU5LCA5ODMzODIsIDU5NTgsIDAsIDk4MzQzNSwgNDIxNSwgOTc4OSwgMTE5NjE5LCA0MzIxLCA0NjIxLCAKKyAgICAxOTUwMjgsIDQxMzEzLCA1MjIsIDUzNjgsIDExMTM5LCA2NTgwMywgMTI4NTQ2LCA1MzY2LCAxMjIwMSwgNTM3MiwgCisgICAgMTIxMDYwLCAxMTk5NDgsIDEyNzA2NCwgNzcyMCwgNzM5MCwgMjY5NiwgMTE5NjU3LCA5ODMxMTUsIDQ2MzgsIDk4MzQwNywgCisgICAgMTc5MCwgNzgyNDIsIDU5NjUsIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDY4NDc3LCA1Mzc2LCAxODM1LCA1MzM1LCAxMjE1MDUsIAorICAgIDEyODA4OSwgNDYzMywgOTgzNDE4LCA2ODExOSwgMTE4MCwgNDYzMiwgNjcxOTEsIDUzODcsIDUzMzMsIDAsIDEyNTEzMiwgCisgICAgNDIwOTQsIDUzMzEsIDQ2MzQsIDExOTI4LCAxMDA5NTIsIDUzMzgsIDQ2MzcsIDEyMTA3MCwgNTk3MSwgNDI0MTQsIDQzNTAwLCAKKyAgICAxMjY4LCA2NTA5NywgNDIzNjEsIDEyODUxMCwgOTE3NjA1LCA3Mzg1MywgMTQyNywgMTI4NDQwLCAwLCA1OTcwLCAzNDMxLCAKKyAgICA5ODM0MTcsIDEwMzU4LCAxMDQyMiwgNDc1OCwgOTgzMzc2LCAxNjA4LCAyNzM4LCAxMjUwNjYsIDEwNDU1LCA0NzUzLCAKKyAgICA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIDc0Mzg0LCA2NjYxMSwgNjgzNzcsIDYyNDgsIDk4MzM2NCwgNjc4MTUsIAorICAgIDc4ODc4LCA0MjMxOCwgOTI1ODIsIDUyMjksIDQ3NTcsIDEyNTIxNSwgMTI2NTc2LCAyNzI4LCA0NzUyLCA2NDU2MywgCisgICAgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMTI3NDg3LCAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgODMxMjQsIDY3MTAxLCAKKyAgICAxMjY0OTUsIDg5NTQsIDc0NzYwLCA2NTE4OSwgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCAKKyAgICA2NTEzOSwgNTU3NywgMTI4OTY2LCA5ODMwODgsIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCA1MzE2LCAKKyAgICA5MTc4NzcsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAxMjcwMDYsIDU1MjUsIDUzMzAsIDUzMTksIDY4MjkyLCAKKyAgICAxMjczMTEsIDY1MDY2LCA0NDAwMywgNjg0MzcsIDEyNzI5OSwgNDM4NDMsIDEyMDQ5OCwgMTI3ODUxLCA0MzkxOCwgNzQ4NTEsIAorICAgIDc0MDIyLCA5ODM0MjQsIDY0NjA5LCA2ODY0MywgNjc0MTAsIDEyODU5MywgNTcyMSwgNzQ4OTIsIDU1MTksIDg2MzIsIAorICAgIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA3ODc3OCwgMTY5MiwgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgCisgICAgNzUwNTIsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzI0MiwgNTI4NywgNTMwOSwgNTI4NSwgNjgzODksIDU5NjEsIAorICAgIDQ2NDcsIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgMTIwNDc5LCA5ODMzNDgsIDkyMDgsIDQ2MDgsIAorICAgIDQzOTY2LCA0MTEyNCwgNTE5MCwgNjc2MjgsIDY2ODI2LCA2ODE0NSwgNzA4NiwgMjI2NSwgNjc5OTgsIDY3NjIwLCA5MzA0NywgCisgICAgMjczNCwgMTEwNzQsIDAsIDY3NjI3LCA0MzU5MywgMTI4NzU4LCA2NzYyNSwgNTk2MCwgNjc3MjIsIDg5OTIsIDQyNTkzLCAKKyAgICAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCA0MjUwOCwgNzQ0MiwgCisgICAgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCA0MzkwMCwgNDEyNTYsIDc0MTMyLCA2Nzc0MCwgMTI5MzA5LCAKKyAgICA3MTE3OCwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIDEyODA0NywgNDMyOTEsIDM3NjcsIDU3MzcsIDkxNzg5NiwgCisgICAgNDg2NSwgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgNzE5MywgNjcwOTcsIDEyODg0NCwgNTczOSwgCisgICAgNDEwMjQsIDQ4NjYsIDk4Mzg1NSwgNzM5MDQsIDcwNzI2LCA0ODY5LCAxMjA1NjMsIDEyOTE3MiwgNDIyMywgMTI4MjAxLCAKKyAgICA2NjUwLCAxMjY1MDksIDAsIDEyMDIxMiwgMTE5ODcyLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIAorICAgIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDcyODIxLCA2MjQ1LCA2ODY1MiwgCisgICAgMjczMiwgNDI3MzQsIDc0NSwgNjgwNDUsIDEyODkzMywgOTIxOTUsIDQ3NzcsIDc4MjEsIDEyODg3MCwgNjg2MzEsIDQyNzc1LCAKICAgICAxOTQ2NjEsIDEyODQ0NSwgMTIwNjc5LCAzMDk3LCAxMjA5MDgsIDU5NjYsIDEyMTE5NywgNDc3OCwgMTI2NDY5LCAxMDg2MywgCiAgICAgMTI3NTA2LCA0NzgxLCA5Mjk4NiwgNjQ0MDcsIDEyODUwMywgMTI4MzIzLCA4NTc3LCA3MTIyMSwgNjgxOTYsIDQzMjg1LCAKLSAgICAxMDIxNiwgNDc4MiwgOTgzNDg1LCA5ODM0MTEsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgCi0gICAgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAxMjkxMjgsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDY3MjQ3LCA3MTA5MSwgCisgICAgMTAyMTYsIDQ3ODIsIDk4MzQ4NSwgOTgzNDExLCAxMjA3NTcsIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDEyNzExOCwgCisgICAgMCwgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAxMjkxMjgsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDY3MjQ3LCA3MTA5MSwgCiAgICAgMTAzNjIsIDE5NDcwNiwgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIDQzMjc4LCA0MjYzNSwgMCwgMTI3MjA3LCAKLSAgICA1OTYzLCA5MTc5MjYsIDk4MzQ4MywgMCwgNDg1MCwgNzM5MDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCA0ODU0LCAKKyAgICA1OTYzLCAxMjA3ODYsIDEyNTIwMSwgMCwgNDg1MCwgNzM5MDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCA0ODU0LCAKICAgICAxMjc5MTgsIDUxNjQsIDczODA3LCAxMzUwLCA1MTI0LCA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgOTI0NzEsIAotICAgIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDEyMTI3MywgNDEyNjgsIDQ4NDgsIDI1MzAsIDc0OTQxLCAyMDY4LCAxOTY0LCAwLCAKLSAgICA3Mzc2MiwgMTA0NTgsIDk4MzQxNywgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDEyMTEwMiwgNjgyMTEsIDgzMjIsIAotICAgIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDI2LCAzMDMsIDc0NjI1LCAKLSAgICA2ODIyOSwgOTgzNDI3LCAyNDM3LCA3ODY1OSwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCA3NDA5NSwgCi0gICAgNDMyOTIsIDAsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMTk0NjIyLCA3MDQzNiwgMTE4OTI5LCAyNDUxLCAyNzE0LCAxMTkzMjYsIAotICAgIDAsIDQzMzc5LCA0OTM3LCA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIDExNzIyLCA5MjQ4LCA5MjU1NSwgCi0gICAgNDI4NzksIDExNzI1LCA5MTc5NjksIDAsIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCA2NDkzNywgMTE5MjMzLCA5MTQwLCAKLSAgICAxNDA4LCA1MjYxLCA0NjA3LCAxOTQ3MTUsIDE4MSwgOTgzNDMyLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgCi0gICAgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDk4MzYwMSwgNjg0NCwgNDk2NCwgNTI2NCwgNjQxNzgsIDY0MTc3LCAxMjk3OSwgCi0gICAgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCA0MTIzMSwgMTgyMiwgNDI1MjYsIAotICAgIDEyNzk4OSwgMTI3NTgsIDM4NjUsIDE5NDY2MCwgMTIxMTI5LCAxMDUwMCwgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIAotICAgIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIDU0NjMsIDEyODExOSwgMzEyNSwgOTU2NywgMCwgCi0gICAgNDg3OCwgNTQ1OSwgNDYwNCwgMTE5NjUwLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgMTE0OTQsIDEyNjQ5MiwgOTU2MywgCi0gICAgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDY4NTIxLCA3ODcxNCwgNjQxOTEsIDY0MTkwLCA4ODk4LCA2NDE4OCwgCi0gICAgMTI5MTUzLCA0MTAzMCwgNzQyMjYsIDc4NzEzLCA3NDYwMCwgNzQ5OTQsIDkxNzgzNCwgMCwgNzg4MDUsIDQxMDMxLCAKLSAgICA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzI2OSwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIDcwNzksIDU4NTYsIAotICAgIDY3ODM4LCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDExOTAxMCwgMTA1NjQsIDc3NjMsIAotICAgIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIDY0MjA3LCAxMDI3NSwgODkyNSwgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgCi0gICAgNzc5NzksIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgCi0gICAgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgCi0gICAgMTIyMzEsIDQyNjUyLCA2NDE3NCwgNjQxNzMsIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCA3NDQ5NSwgODM0OTIsIDgzNDkzLCAKLSAgICA4MzQ5NCwgMjU0MywgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgCi0gICAgNjQxNjksIDY0MTY4LCA2NDk0OSwgMTA5NzIsIDEwMjUxLCAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIDk0NTMsIAotICAgIDUzNDgsIDEwOTQzLCA2NjM5MCwgMCwgMTEzNTIsIDU1MCwgOTkxMCwgMTI1MTI3LCAwLCA2NjU3OSwgMTE1NTEsIDEyODQ2NCwgCi0gICAgMTk1MDgwLCA5NTA0LCA3MTg3LCA4Mjk1NywgMTAzNzMsIDk4MzQxOCwgMTIwMzc1LCAxMDI2MSwgMTAyNTMsIDY0MDQsIAotICAgIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIDY1MjIyLCA2OTk4LCA3ODE4MCwgNzE0MjksIDMxMjgsIDQ3ODksIDUwNjcsIAotICAgIDUwNjYsIDExODg0OSwgNDc4NCwgMCwgODgyNywgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIAotICAgIDQzNDEyLCA1MDY0LCAyNDMxLCAwLCA5NDUwLCAxODA5LCAwLCA3ODIwMCwgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAKLSAgICAxMzI1NCwgMTE2OTcsIDEyNjU5OCwgOTc4NSwgNjQ3MTYsIDAsIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAwLCAxMjUwMjMsIAotICAgIDQyNjA5LCAxMTk4NTUsIDc0MTc1LCA2NjkxMiwgMTI3MDE2LCAwLCAxMjEzMDAsIDQyMTMwLCAxMjEwNDYsIDUxNTEsIAotICAgIDEyMTM0NiwgODM0ODgsIDAsIDkzOTgwLCA5MTc4MDIsIDc2MjAsIDM4MDAsIDY1MTIyLCA4MzQ4NywgODM0ODAsIDgzNTUsIAorICAgIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDEyMTI3MywgNDEyNjgsIDQ4NDgsIDI1MzAsIDc0OTQxLCAyMDY4LCAxOTY0LCAKKyAgICAxMjgyMTcsIDczNzYyLCAxMDQ1OCwgMTI4MTI1LCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMTIxMTAyLCA2ODIxMSwgCisgICAgODMyMiwgNDc5NywgNTc1MywgMCwgMjY5NCwgNDc5MiwgMTI4MTYzLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQyNiwgMzAzLCAKKyAgICA3NDYyNSwgNjgyMjksIDk4MzQyMCwgMjQzNywgNzg2NTksIDQyMjEsIDQ4NDQsIDkyMjE2LCA5ODM4MDUsIDAsIDAsIAorICAgIDcwMDQyLCA3NDA5NSwgNDMyOTIsIDk4MzY1NiwgMjQ0MSwgMTA3MzksIDY1MDkwLCAxOTQ2MjIsIDcwNDM2LCAxMTg5MjksIAorICAgIDI0NTEsIDI3MTQsIDExOTMyNiwgMCwgNDMzNzksIDQ5MzcsIDQzMzc2LCA3NTMsIDU4NDksIDEwNTk3LCA0MzA4OSwgCisgICAgMTE3MjIsIDkyNDgsIDkyNTU1LCA0Mjg3OSwgMTE3MjUsIDEyMDY4NywgMCwgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIAorICAgIDY0OTM3LCAxMTkyMzMsIDkxNDAsIDE0MDgsIDUyNjEsIDQ2MDcsIDEyOTM1MywgMTgxLCA5ODM0MzIsIDQ5NDIsIDk1MzksIAorICAgIDQ5MzgsIDAsIDY1MjAxLCA1MjU5LCA5MzY5LCA2NDE4NSwgNDE0MiwgNTI1NywgOTgzNjAxLCA2ODQ0LCA0OTY0LCA1MjY0LCAKKyAgICA2NDE3OCwgNjQxNzcsIDEyOTc5LCA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgNjQxNzksIDk0ODIsIDQ4NzMsIAorICAgIDQxMjMxLCAxODIyLCA0MjUyNiwgOTIzNDQsIDEyNzU4LCAzODY1LCAxMjI5MTgsIDEyMTEyOSwgMTA1MDAsIDAsIDExOTAyNCwgCisgICAgNzgwMjgsIDc4MDAzLCA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAxMjgxMTksIAorICAgIDMxMjUsIDk1NjcsIDk4MzI5MSwgNDg3OCwgNTQ1OSwgNDYwNCwgMTE5NjUwLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgCisgICAgMTE0OTQsIDEyNjQ5MiwgOTU2MywgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDY4NTIxLCA3ODcxNCwgNjQxOTEsIAorICAgIDY0MTkwLCA4ODk4LCA2NDE4OCwgMTI5MTUzLCA0MTAzMCwgNzQyMjYsIDc4NzEzLCA3NDYwMCwgNzQ5OTQsIDkxNzgzNCwgMCwgCisgICAgNzg4MDUsIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDEyNjU4MSwgNzg1MzksIDczOTE5LCAxMDU3MywgCisgICAgNDE3NDQsIDcwNzksIDU4NTYsIDY3ODM4LCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIAorICAgIDExOTAxMCwgMTA1NjQsIDc3NjMsIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIDY0MjA3LCAxMDI3NSwgODkyNSwgCisgICAgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgNzc5NzksIDcyODAyLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCAKKyAgICA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgCisgICAgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIDEyMjMxLCA0MjY1MiwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCAKKyAgICA3ODE4NiwgOTk2NSwgNzQ0OTUsIDgzNDkyLCA4MzQ5MywgODM0OTQsIDI1NDMsIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgCisgICAgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIDY0MTY5LCA2NDE2OCwgNjQ5NDksIDEwOTcyLCAxMDI1MSwgCisgICAgMTAyNDcsIDQyNzY4LCA3MTUsIDIyOTUsIDQzMjk5LCA5NDUzLCA1MzQ4LCAxMDk0MywgNjYzOTAsIDAsIDExMzUyLCA1NTAsIAorICAgIDk5MTAsIDEyNTEyNywgMCwgNjY1NzksIDExNTUxLCAxMjg0NjQsIDE5NTA4MCwgOTUwNCwgNzE4NywgODI5NTcsIDEwMzczLCAKKyAgICA5ODMxNTMsIDEyMDM3NSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCA2NTIyMiwgCisgICAgNjk5OCwgNzgxODAsIDcxNDI5LCAzMTI4LCA0Nzg5LCA1MDY3LCA1MDY2LCAxMTg4NDksIDQ3ODQsIDEyODM5NCwgODgyNywgCisgICAgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIDQzNDEyLCA1MDY0LCAyNDMxLCAxOTQ5MjYsIDk0NTAsIAorICAgIDE4MDksIDk4MzU4OCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgMTMyNTQsIDExNjk3LCAxMjY1OTgsIAorICAgIDk3ODUsIDY0NzE2LCAxMjgyNzksIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAxMjg3MzksIDEwMTEwMCwgNDI2MDksIAorICAgIDExOTg1NSwgNzQxNzUsIDY2OTEyLCAxMjcwMTYsIDAsIDEyMTMwMCwgNDIxMzAsIDEyMTA0NiwgNTE1MSwgMTIxMzQ2LCAKKyAgICA3MDc0MywgOTgzNzE1LCA5Mzk4MCwgOTE3ODAyLCA3NjIwLCAzODAwLCA2NTEyMiwgODM0ODcsIDgzNDgwLCA4MzU1LCAKICAgICA3ODU0LCA4MzQ4MywgOTU0LCA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgMTA3MTEsIAotICAgIDQ1OTMsIDgyOTkzLCAxMjA1ODQsIDk4MzQxMCwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgOTgzNDE0LCAwLCA3ODY0MiwgCi0gICAgNjQ3NTksIDEzMjUsIDUxNjYsIDk4ODgsIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgNDM3ODcsIAotICAgIDc4MjA0LCA0MzkxMywgMzExOSwgOTE3ODE0LCAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgNzQ5OTYsIDc3ODc2LCA2MzYsIAotICAgIDExNjk4LCA4MzQ3NiwgODI5NjEsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCAKLSAgICA3MDIwMSwgMTE5OTYwLCAxNDc3LCA0MzI4OSwgNjg0OTIsIDY3MTY0LCA4NjE4LCA5ODM0MDQsIDk5MDgsIDc0OTcyLCAwLCAKLSAgICAwLCAzOTM3LCAxMjMxMiwgMCwgOTgzNDA1LCAwLCA2NDc4MSwgOTEyLCA2MzQ5LCA0NTM2LCA5Mzk1NCwgNzQ1MzIsIAotICAgIDEyNjU5NCwgNjI0NCwgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDEyODk2OSwgMCwgMTE5NTAsIDUzOTIsIDQyMjQ4LCAKLSAgICA2NTEyOSwgNjg2NTYsIDUzOTcsIDEyODMxMCwgMTIwNDYsIDEyNTk5LCA2NzQwNywgMTI4MjYxLCA1Mzk1LCAwLCA1MzkzLCAKLSAgICAzNTQsIDY4NjE1LCA3Nzg1MywgNzQzNjYsIDEyMTQwNCwgMCwgNDIwMzksIDExMzgxNywgMCwgNjQxNDIsIDYyNiwgMCwgCi0gICAgNTg5NSwgMCwgNDM5MTAsIDU3ODAsIDAsIDEwMjIwLCAxMjEzMzcsIDQzOTA3LCA3MTEyMSwgNDMyOTcsIDcwMTg4LCA0MzExLCAKLSAgICA0NjQ0LCA4ODE4LCA3ODE1OCwgMTI4MTg2LCAxMjg4NjksIDcxNDUsIDM5MTgsIDY2NDUyLCAzNzk3LCAxNjQ0LCA5MjM0NiwgCi0gICAgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgNjgxMzEsIDQxNDYsIDExOTk1NywgCi0gICAgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDk0MDIwLCA2MjQ5LCA0MjExNywgNjg4MjgsIDkyMjA2LCAxMjgwMjMsIDExOTI1NSwgCi0gICAgNzQwNDYsIDQzNzQ1LCA0OTExLCA5ODgsIDcxMTgwLCAwLCA5ODM0NzAsIDQzMDYxLCA3MDU0LCA2NDE0NywgOTgzODQ3LCAKLSAgICA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDcwODQ5LCAxMTk4MSwgMTIyMDIsIDE5NTA4NywgMTEwMzIsIAotICAgIDY3NjU0LCA2MDkzLCAxMTYwOCwgOTc1LCA2NjQxNSwgNjU4NDMsIDE3MCwgMCwgNjcyMzksIDQxNjksIDAsIDQxODU5LCAKLSAgICA2MDU4LCAxMjA0MDEsIDEzMjAzLCAxMjA2NTcsIDcwNTA3LCAxMjUwOTEsIDY4NjU3LCA5ODE4LCAxMDE3OCwgMTAzMjQsIAotICAgIDQyMTA2LCA1ODk4LCA3NDU0MCwgNDczOCwgNDE4NTYsIDcwNjIsIDEyNzEyMCwgNDczNywgMTE3NzksIDQ3NDIsIDgzNDI1LCAKLSAgICA2ODc1OCwgNjgzNDIsIDgzNDIwLCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDgzNDE4LCA4MzQxOSwgNjc3MzEsIAotICAgIDUzMDAsIDQ3NDEsIDQyMTA4LCAxMjcwNTcsIDY0MTU5LCA0NzM2LCA2NDE0OCwgOTI2MzQsIDg0OSwgOTIxOTEsIDc4NDkxLCAKLSAgICA0MzI4OCwgMCwgNjY2MjAsIDEyNzUzMywgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY4LCAKLSAgICA3ODc2LCA2ODEzMiwgNjYyODAsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAxMjA4OTAsIDQ4NDIsIAotICAgIDEyMDUzLCAxMjgxMjksIDY4NzQ2LCA0ODQxLCAwLCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgODM0MTEsIAotICAgIDgzNDEyLCAxMjY1MTIsIDQwOTcyLCA1MjQ1LCA3MDc5NCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgCi0gICAgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCA0ODI1LCA2OTI0MCwgMTIxNDQzLCAKLSAgICA2ODY1NSwgMCwgOTgzMzkwLCAwLCAwLCA2ODYyOCwgOTgzMzQ5LCA5ODUwLCAxMTg5MzcsIDM2NywgMTQ3MiwgOTE3ODU5LCAKLSAgICA2Njg3LCAxMjc0LCAxOTUwMjIsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAxMTAyMywgCi0gICAgMTE5NTU5LCA0ODMwLCA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCA4MzI5NywgNzg2NjksIDY0MTAxLCAwLCAxMjg0MzQsIAotICAgIDQ4MjQsIDEwNjE0LCAxMTk2NTksIDEyNjk5MywgMTg4OCwgMTk2MCwgNzg2MSwgODM0MTYsIDc4NTI0LCA0MTgzNiwgCi0gICAgNDMwMTIsIDYwNTIsIDYwNjQsIDU0LCA0MzAwOSwgMTIyMTQsIDgzMjYwLCA2MjExLCAxMjAzODYsIDM1OCwgNDE5OTcsIAotICAgIDQxODMzLCAxMTQ0MiwgMTA3NTgsIDY1Nzc0LCAxMTM4MjMsIDEyMDM4NCwgNjQxMTUsIDkyMjIxLCA3MDAxOCwgOTgzNjExLCAKLSAgICA5ODM3MDgsIDExOTA1MywgMCwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAxMjY1ODAsIDQwMTcsIDEyODI3LCAKLSAgICA1MjQxLCAxMjAzOTIsIDAsIDQxMTE4LCAzOTI0LCA5ODM4OTQsIDExMzY2LCAxMjkwODQsIDAsIDAsIDgzNDAxLCA0MTExNiwgCisgICAgNDU5MywgODI5OTMsIDEyMDU4NCwgMTI4NjY5LCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAxMjc1MDUsIDk4MzU5NCwgCisgICAgNjY3OTUsIDY0NzU5LCAxMzI1LCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIAorICAgIDQzNzg3LCA3ODIwNCwgNDM5MTMsIDMxMTksIDEyNzI1NywgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDc0OTk2LCA3Nzg3NiwgCisgICAgNjM2LCAxMTY5OCwgODM0NzYsIDgyOTYxLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgCisgICAgODg2MywgNzAyMDEsIDExOTk2MCwgMTQ3NywgNDMyODksIDY4NDkyLCA2NzE2NCwgODYxOCwgOTgzNDA0LCA5OTA4LCAKKyAgICA3NDk3MiwgMCwgMTE5MTQ3LCAzNDE0LCAxMjMxMiwgMTIwODMyLCAxMjA3MjcsIDEyMTI2NCwgNjQ3ODEsIDkxMiwgNjM0OSwgCisgICAgNDUzNiwgOTM5NTQsIDc0NTMyLCAxMjY1OTQsIDYyNDQsIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCAxMjgzMTYsIDAsIAorICAgIDExOTUwLCA1MzkyLCA0MjI0OCwgNjUxMjksIDY4NjU2LCA1Mzk3LCAxMjgzMTAsIDEyMDQ2LCAxMjU5OSwgNjc0MDcsIAorICAgIDEyNjU0MiwgNTM5NSwgNzI4NzAsIDUzOTMsIDM1NCwgNjg2MTUsIDc3ODUzLCA3NDM2NiwgMTIxNDA0LCAxMjEyNjYsIAorICAgIDQyMDM5LCAxMTM4MTcsIDEyODY3MSwgNjQxNDIsIDYyNiwgMTI4MjQ0LCA1ODk1LCA5ODM1NzMsIDQzOTEwLCA1NzgwLCAwLCAKKyAgICAxMDIyMCwgMTIxMzM3LCA0MzkwNywgNzExMjEsIDQzMjk3LCA3MDE4OCwgNDMxMSwgNDY0NCwgODgxOCwgNzgxNTgsIAorICAgIDEyODE4NiwgMTI4ODY5LCA3MTQ1LCAzOTE4LCA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCAKKyAgICA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDcwNjY5LCAKKyAgICA2NzY2OSwgOTQwMjAsIDYyNDksIDQyMTE3LCA2ODgyOCwgOTIyMDYsIDEyODAyMywgMTAxMDQ4LCA3NDA0NiwgNDM3NDUsIAorICAgIDQ5MTEsIDk4OCwgNzExODAsIDk4MzMzNywgOTgzNDcwLCA0MzA2MSwgNzA1NCwgNjQxNDcsIDEwMTA0MiwgNjQ5MjAsIAorICAgIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCA3MDg0OSwgMTE5ODEsIDEyMjAyLCAxOTUwODcsIDExMDMyLCA2NzY1NCwgCisgICAgNjA5MywgMTE2MDgsIDk3NSwgNjY0MTUsIDY1ODQzLCAxNzAsIDAsIDY3MjM5LCA0MTY5LCAxMTk5MzgsIDQxODU5LCA2MDU4LCAKKyAgICAxMjA0MDEsIDEzMjAzLCAxMjA0MDIsIDcwNTA3LCAxMjA0MDMsIDY4NjU3LCA5ODE4LCAxMDE3OCwgMTAzMjQsIDQyMTA2LCAKKyAgICA1ODk4LCA3NDU0MCwgNDczOCwgNDE4NTYsIDcwNjIsIDEyMDE0MiwgNDczNywgMTE3NzksIDQ3NDIsIDgzNDI1LCA2ODc1OCwgCisgICAgNjgzNDIsIDQxMzc0LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDgzNDE4LCA4MzQxOSwgNjc3MzEsIDUzMDAsIAorICAgIDQ3NDEsIDQyMTA4LCAxMjcwNTcsIDY0MTU5LCA0NzM2LCA2NDE0OCwgOTI2MzQsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgCisgICAgMCwgNjY2MjAsIDEyNzUzMywgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY4LCA3ODc2LCAKKyAgICA2ODEzMiwgNjYyODAsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAxMjA4OTAsIDQ4NDIsIDEyMDUzLCAKKyAgICAxMjgxMjksIDY4NzQ2LCA0ODQxLCAxMjkzMzQsIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAxNDkwLCA4MzQxMSwgODM0MTIsIAorICAgIDEyNjUxMiwgNDA5NzIsIDUyNDUsIDcwNzk0LCAxMDExNCwgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCA0MDk3NCwgCisgICAgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA3Mjg1MSwgNDgyNSwgNjkyNDAsIDEyMTQ0MywgNjg2NTUsIDAsIAorICAgIDEyODUzNywgMCwgMCwgNjg2MjgsIDk4MzM0OSwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgNjY4NywgMTI3NCwgCisgICAgMTk1MDIyLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgMTEwMjMsIDExOTU1OSwgNDgzMCwgCisgICAgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgODMyOTcsIDc4NjY5LCA2NDEwMSwgMCwgMTI4NDM0LCA0ODI0LCAxMDYxNCwgCisgICAgMTE5NjU5LCAxMjY5OTMsIDE4ODgsIDE5NjAsIDc4NjEsIDgzNDE2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCA2MDUyLCA2MDY0LCAKKyAgICA1NCwgNDMwMDksIDEyMjE0LCA4MzI2MCwgNjIxMSwgMTIwMzg2LCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIDEwNzU4LCAKKyAgICA2NTc3NCwgMTEzODIzLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDk4MzYxMSwgOTgzNzA4LCA5MjQwOCwgCisgICAgMTI4MDgyLCAxMjc2NSwgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDExOTYzMiwgMTI2NTgwLCA0MDE3LCAxMjgyNywgNTI0MSwgCisgICAgMTIwMzkyLCAxMjc5MDAsIDQxMTE4LCAzOTI0LCA5ODM4OTQsIDExMzY2LCAxMjkwODQsIDAsIDAsIDgzNDAxLCA0MTExNiwgCiAgICAgODM0MDMsIDgzNDA0LCA4MzM5NywgMTEzNjMsIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDgzMzk2LCAKLSAgICA2NjIwMiwgODk1NywgNDEzOSwgNzA1MTIsIDAsIDk4MzA3NCwgMCwgMCwgMTI3NDAsIDEyMTQ3MCwgNDcyMiwgNjgxNiwgCi0gICAgMTI0OTc0LCAxMjc1OSwgNDcyNSwgNjcwOTksIDQ3MjYsIDgzNDY3LCA4MzQ2OCwgOTgzNjIyLCA3MDAyOSwgODM0NjMsIAotICAgIDc0OTEzLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDY3NjkwLCA4MDUyLCA0NzYsIDAsIDc0ODkzLCAxMjgyOTQsIDY0MjEyLCAKLSAgICA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAxMjc1NTMsIDEyNTEyMSwgCi0gICAgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCA5ODM0MjEsIDY0MDY3LCA5MjI4NywgODU1MiwgNjQxMTMsIDQxODQ1LCAKLSAgICAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIDExOTA4NSwgODMzMDIsIAotICAgIDkxNzYxMCwgNzkzNSwgMjQyMCwgMCwgMTExNCwgNzgxMjAsIDY3NTg1LCA3MDEwNCwgNzA0MzIsIDgzNDQ3LCA3NDkyMCwgCi0gICAgMzkzOCwgMTIwMDU3LCA2NTQxNywgNjQ3MTcsIDEyMDA2MCwgNzE5MjAsIDY1NDE1LCA2Njg4NCwgNjI5MiwgNjUzMDMsIAotICAgIDc5NTUsIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgMTk0NzY2LCAxMjkwNzMsIDY1MTUyLCA3MTksIAotICAgIDEyMDA0NCwgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgCi0gICAgNjY0NTAsIDQ3MTIsIDc1MDU1LCA5MTc4OTksIDY1NDAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgCi0gICAgMCwgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAxOTQ3ODksIDAsIDExMzc1NiwgMCwgNjU0MTQsIDY0NTQsIDEyMjksIAotICAgIDgzNDU3LCA2NjQzNywgNjYwMjUsIDc4Njk5LCA4MzQ1MiwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgMTI5MTM3LCAKLSAgICA3ODY5NCwgMTIxMTczLCAxMjg3NzcsIDkxNzg1OCwgNjU0MDUsIDY4MTU5LCAxMjg5MywgNzg2MTcsIDUzNjUsIDQ1NDUsIAotICAgIDg5MDEsIDkyNDIxLCAxMTk1NTUsIDQ4MTMsIDEyODI2MiwgMTk0NzI5LCA1OTI1LCA0ODA4LCA2NDMzMCwgMTI4NDAwLCAKLSAgICA2NTQ3NSwgODM0MzIsIDY4MjQ0LCA0ODE0LCA4MzQyNywgNDgxMCwgODM0MjksIDgzNDMwLCA2NDkyOCwgMTA1NDMsIAotICAgIDcxMjQ5LCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgODM0NDIsIDY0NTYsIDczODIwLCA4MzQ0NSwgNjY5MSwgCi0gICAgNDIxOTMsIDY2Mjg0LCA4MzQ0MSwgMCwgNjgzMzcsIDAsIDQzODU4LCA0MzgzMiwgMTE4ODIwLCA5NzUxLCA2NTQwNywgCi0gICAgMTI4MDg1LCAxMTc3MCwgMzkxOSwgMTIwNzI0LCAwLCA2NTA2MSwgOTgzOTQ1LCA5MTc4OTQsIDEyOTE0MiwgMTIyMzUsIAotICAgIDEyODU3MiwgOTI3MDEsIDEyMTA4NywgNjQwOTIsIDY4NzM5LCA2NDA4MCwgMTI5MDYzLCA2NDA5MCwgOTgzNTg2LCA2OTkxMywgCi0gICAgMTAxNjIsIDEwMzEwLCAxMjEyMTAsIDg0NTQsIDEyMTM4NywgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCAKLSAgICA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCA3ODExNiwgMCwgMTIxMjk1LCAxOTUwMjQsIDkyMTkzLCA4ODk2LCAwLCAKLSAgICAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDc0OTk3LCAxMjczMjUsIDk4MzQzNiwgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCAKLSAgICA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAxMjg0NTIsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIAotICAgIDExOTE5OSwgNjk2OTIsIDEyOTEyNCwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMTI4OTc0LCA3ODc2MSwgMjI5MSwgMTI5MDIsIAotICAgIDAsIDQyODkxLCA2NjMyNywgNzA1MDIsIDkxNzg1NywgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgMTI4NjI4LCA0MTkzLCAKLSAgICA2NjgyMywgNDI0MSwgMTI5MTk1LCA3OTk4LCA4MzI3NiwgMCwgMTI3MDA5LCAxMjY2NDAsIDIzMTYsIDExODgyMSwgMCwgCi0gICAgOTgzOTM0LCAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMTI4MTQ4LCA1MzczLCAxMjg3OTgsIDcwMzcwLCAzNzYyLCAKLSAgICAxMDAxNSwgMTIwNjcyLCAxMTkyMzIsIDEyNTEwOSwgNDE1OTAsIDAsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCA5MTc4OTgsIAotICAgIDQyMDM3LCAwLCAzOTA2LCAxMjM0OSwgNzQ3OTMsIDgzMjYsIDEyNzMzMywgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIAotICAgIDM3NzksIDk4MzE5NCwgNDM2MTMsIDcwMTMyLCAwLCA4MzI4OCwgNzgzMzUsIDgzMjg5LCAwLCAyODAsIDc0NTU4LCAKLSAgICAxMjEzNTMsIDY3Mzk2LCAxMzA3MiwgMTg5NCwgODMyOTEsIDY3NzM1LCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIDExNzczLCAKLSAgICAwLCAxMTkxNjUsIDExMTQ0LCA5MTc3NzgsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgCi0gICAgNzE4NzcsIDEyODY2OSwgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCA5ODMwNjYsIAotICAgIDUzNjcsIDg3NTYsIDEyNzE0MywgMTE5MTgzLCA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgNTIxOCwgCi0gICAgNjk2ODUsIDk4Mzc1NiwgMCwgMTEzNzk0LCA0NDAyMCwgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIAotICAgIDIyOTAsIDcxMDU3LCAxMTk2MjQsIDE0NjUsIDEwODUwLCAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMTE5MzMzLCAKLSAgICA2NzE0OCwgNTM1MiwgMTEzNzUzLCAwLCA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgNDEyMDQsIDEyNzMyMiwgNDEyMDksIAotICAgIDY5NjM3LCA5MjI0MSwgNDM2MDcsIDcxMjU0LCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMTIwMzgxLCA3NDQxNywgNDAxOCwgCi0gICAgNzE1MCwgNjgxMjcsIDcxNDI1LCAwLCAxMjE0MjcsIDEyNzg2NCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCisgICAgNjYyMDIsIDg5NTcsIDQxMzksIDcwNTEyLCAxMjcxMTUsIDk4MzA3NCwgMCwgMTIyOTA3LCAxMjc0MCwgMTIxNDcwLCA0NzIyLCAKKyAgICA2ODE2LCAxMjQ5NzQsIDEyNzU5LCA0NzI1LCA2NzA5OSwgNDcyNiwgODM0NjcsIDgzNDY4LCA5ODM2MjIsIDcwMDI5LCAKKyAgICA4MzQ2MywgNzQ5MTMsIDEyNzU1LCAxMjc2MiwgNDAxNSwgNjc2OTAsIDgwNTIsIDQ3NiwgMCwgNzQ4OTMsIDEyODI5NCwgCisgICAgNjQyMTIsIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIDEyNzU1MywgCisgICAgMTI1MTIxLCA0MTg0MywgODcyMCwgMzkwOCwgMTQ1MiwgMTMxMTEsIDE5NTA5NiwgNjQwNjcsIDkyMjg3LCA4NTUyLCAKKyAgICA2NDExMywgNDE4NDUsIDM4NDksIDc4NzMyLCA2NjIzMiwgOTc3OCwgMTIwMDY2LCA1ODkxLCA3MDY0LCA1NSwgOTk0OCwgCisgICAgMTE5MDg1LCA4MzMwMiwgOTE3NjEwLCA3OTM1LCAyNDIwLCA3Mzg2MSwgMTExNCwgNzgxMjAsIDY3NTg1LCA3MDEwNCwgCisgICAgNzA0MzIsIDgzNDQ3LCA3NDkyMCwgMzkzOCwgMTIwMDU3LCA2NTQxNywgNjQ3MTcsIDEyMDA2MCwgNzE5MjAsIDY1NDE1LCAKKyAgICA2Njg4NCwgNjI5MiwgNjUzMDMsIDc5NTUsIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgMTk0NzY2LCAKKyAgICAxMjkwNzMsIDY1MTUyLCA3MTksIDEyMDA0NCwgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAKKyAgICAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgNjY0NTAsIDQ3MTIsIDc1MDU1LCA5MTc4OTksIDY1NDAwLCA2NTQxNiwgODE1NSwgCisgICAgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgOTgzMjkzLCA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDE5NDc4OSwgCisgICAgMTIxMjI2LCAxMTM3NTYsIDk4MzQ1OCwgNjU0MTQsIDY0NTQsIDEyMjksIDgzNDU3LCA2NjQzNywgNjYwMjUsIDc4Njk5LCAKKyAgICA4MzQ1MiwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgMTI5MTM3LCA3ODY5NCwgMTIxMTczLCAxMjg3NzcsIDkxNzg1OCwgCisgICAgNjU0MDUsIDY4MTU5LCAxMjg5MywgNzg2MTcsIDUzNjUsIDQ1NDUsIDg5MDEsIDkyNDIxLCAxMTk1NTUsIDQ4MTMsIAorICAgIDEyODI2MiwgMTk0NzI5LCA1OTI1LCA0ODA4LCA2NDMzMCwgMTI4NDAwLCA2NTQ3NSwgODM0MzIsIDY4MjQ0LCA0ODE0LCAKKyAgICA4MzQyNywgNDgxMCwgODM0MjksIDgzNDMwLCA2NDkyOCwgMTA1NDMsIDcxMjQ5LCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgCisgICAgOTIzMjksIDgzNDQyLCA2NDU2LCA3MzgyMCwgODM0NDUsIDY2OTEsIDQyMTkzLCA2NjI4NCwgODM0NDEsIDAsIDY4MzM3LCAwLCAKKyAgICA0Mzg1OCwgNDM4MzIsIDExODgyMCwgOTc1MSwgNjU0MDcsIDEyODA4NSwgMTE3NzAsIDM5MTksIDEyMDcyNCwgOTgzNTk2LCAKKyAgICA2NTA2MSwgNzgxMTUsIDkxNzg5NCwgMTI5MTQyLCAxMjIzNSwgMTI4NTcyLCA5MjcwMSwgMTIxMDg3LCA2NDA5MiwgNjg3MzksIAorICAgIDY0MDgwLCAxMjkwNjMsIDY0MDkwLCAxMjUyNjcsIDY5OTEzLCAxMDE2MiwgMTAzMTAsIDEyMTIxMCwgODQ1NCwgMTIxMzg3LCAKKyAgICA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIDc4MTE2LCAKKyAgICAwLCAxMjEyOTUsIDE5NTAyNCwgOTIxOTMsIDg4OTYsIDAsIDM3NSwgNjk3NiwgNjY1ODIsIDExOTAwNSwgNzQ5OTcsIAorICAgIDEyNzMyNSwgOTgzNDM2LCAxMTM3NTcsIDExOTIwMywgMTI1MjYsIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIAorICAgIDEyODQ1MiwgNDUyOSwgMTE5MjAwLCAxMTkyMDEsIDExOTE5OCwgMTE5MTk5LCA2OTY5MiwgMTI5MTI0LCA2OTY5OCwgCisgICAgMTMxNTAsIDY0NDkyLCAxMjg5NzQsIDc4NzYxLCAyMjkxLCAxMjkwMiwgMTI4MTQwLCA0Mjg5MSwgNjYzMjcsIDcwNTAyLCAKKyAgICAxMjk0MjUsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDEwMDU3NiwgNDE5MywgNjY4MjMsIDQyNDEsIDEyOTE5NSwgCisgICAgNzk5OCwgODMyNzYsIDAsIDEyNzAwOSwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIDk4MzkzNCwgMTI3NDc4LCA2NDI5NywgCisgICAgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMTI4MTQ4LCA1MzczLCAxMjg3OTgsIDcwMzcwLCAzNzYyLCAxMDAxNSwgMTIwNjcyLCAKKyAgICAxMTkyMzIsIDEyNTEwOSwgNDE1OTAsIDk4Mzg2NSwgNzAwOTgsIDM3ODAsIDc0ODUsIDU3NzksIDkxNzg5OCwgNDIwMzcsIDAsIAorICAgIDM5MDYsIDEyMzQ5LCA3NDc5MywgODMyNiwgMTI3MzMzLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgMzc3OSwgCisgICAgOTgzMTk0LCA0MzYxMywgNzAxMzIsIDAsIDgzMjg4LCA3ODMzNSwgODMyODksIDEyOTQxOSwgMjgwLCA3NDU1OCwgMTIxMzUzLCAKKyAgICA2NzM5NiwgMTMwNzIsIDE4OTQsIDgzMjkxLCA2NzczNSwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgMTIxMzE0LCAKKyAgICAxMTkxNjUsIDExMTQ0LCA5MTc3NzgsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgNzE4NzcsIAorICAgIDcyODg2LCA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDExOTk0OSwgNTM2NywgODc1NiwgCisgICAgMTI3MTQzLCAxMTkxODMsIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCA1MjE4LCA2OTY4NSwgMTk0OTE4LCAwLCAKKyAgICAxMDA3ODAsIDQ0MDIwLCA2ODA4LCA0MTMxOSwgMTMwMCwgMTA2NTAsIDQxNjkyLCA2NDUwNSwgMjI5MCwgNzEwNTcsIAorICAgIDExOTYyNCwgMTQ2NSwgMTA4NTAsIDM5NDMsIDEyNzUzNywgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDExOTMzMywgNjcxNDgsIAorICAgIDUzNTIsIDExMzc1MywgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIDQxMjA0LCAxMjczMjIsIDQxMjA5LCA2OTYzNywgCisgICAgOTIyNDEsIDQzNjA3LCA3MTI1NCwgODM0NDQsIDU0MjAsIDM4OTcsIDEwMTM0LCAxMjAzODEsIDc0NDE3LCA0MDE4LCA3MTUwLCAKKyAgICA2ODEyNywgNzE0MjUsIDcwNjg4LCAxMjE0MjcsIDEyNzg2NCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCiAgICAgMTIwNzYsIDc5NTEsIDY4MTUyLCAxMTg4NTcsIDUzMDMsIDYyNzYsIDE3MDYsIDEyMDc1MCwgNzg3NTEsIDcxNDYsIAotICAgIDk4MzY4MiwgNjUxNTAsIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDAsIDEwNTA2LCAKLSAgICA5ODM0MzcsIDY5NjQxLCAxMDc1MywgMTA4MzAsIDExOTMzOSwgNjE1LCA2NDQ5MCwgNzU3NCwgNzQwODIsIDc3OTIyLCAwLCAKLSAgICAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIDAsIDEyMTIzMSwgNjc5OTYsIDIwMjAsIDEyODc5MCwgNDAyMiwgCi0gICAgMTI4NzgzLCAxMjA3MDEsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCA3NTA2MCwgNzQzMjksIDAsIDY0NjIyLCA5MDcwLCAwLCAKLSAgICA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgOTgzODEzLCA3MDAwLCAzOTA0LCA5ODM2MjgsIAotICAgIDczNzM3LCAxMjUxMDUsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgMTE4ODA3LCAKLSAgICA5MTc4OTEsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDExMzcyNSwgOTYzNiwgMCwgMTA3MzgsIAotICAgIDY5NjM0LCA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCA5ODM3MjMsIDY0NDA5LCAzNTk2LCAKLSAgICAxMjkwNDQsIDEyODA5MCwgOTc2MywgMTIwMjgwLCA3NDYwOSwgMTIzNDcsIDEyNCwgMTI5ODEsIDQxMTI3LCAyMDkyLCAKLSAgICA5MjY4NywgMCwgMTI3NTU1LCAxOTQ2MzIsIDEwODIwLCA0Mzk4NywgMCwgMTI4OTA3LCAxNzY5LCA0MTcxNSwgMjQ2MywgCi0gICAgNzEyMTQsIDgzMDcwLCAxMjc3MCwgNzEyMjIsIDE1MzgsIDkyNjE3LCA0MzEyNCwgMTk0NjE0LCAxOTUwNTgsIDc3OTUsIAotICAgIDEyMDMwMCwgMTI5MDUzLCA0ODI4LCAxMjU4LCAxMjc4MDIsIDIwMDYsIDAsIDEyMTEzMCwgOTQ5OCwgMTI3MDMyLCAKLSAgICAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIDEyMDI4NywgMTIwMjg2LCAyNjUwLCAKLSAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAKLSAgICA5ODMyNjIsIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgNjYzMzEsIDM0NTQsIDE5OTMwLCAwLCAKLSAgICA0MTAxOSwgMTI3OTQ0LCAwLCA2NTI5MiwgNjgyMiwgMTI4NjIsIDAsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCAKLSAgICA3MDg2NCwgMTE4ODc5LCA1NTIyMywgMCwgMTI4MDcxLCA0MTgyNiwgODg2NSwgNjQwMiwgMTEzODI3LCAxMzI3OSwgNzkxNywgCi0gICAgNzQ3NTUsIDkxNzk0OCwgNzczMywgOTgzNDA4LCA0OTk4LCA2ODQ5MywgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAxOTQ3OTAsIAotICAgIDE5NTA1NiwgNzAwNjEsIDQwMTMsIDEyODcxOCwgMTA4ODEsIDAsIDk4MzE2MywgMCwgNzQ3ODgsIDIwMTQsIDI0MzIsIAotICAgIDcxOTAxLCA5NzY1LCAxOTUwNTIsIDAsIDkxNzg1NCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIAotICAgIDAsIDExOTMxNSwgMjAxNSwgMTIxMDg4LCA5Mjc2NSwgNzE4NDAsIDY2MzE4LCA0MzIzMywgOTE3OTkyLCA0MjUxNywgCi0gICAgNjgwNjAsIDAsIDAsIDEyNjk4LCA4MDk0LCAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgNDM0OTcsIDEyNjU2LCA2NjMzNSwgCi0gICAgMTE5MzUzLCA2NzI3OSwgMTY2NSwgNzE4NTMsIDQ4MzMsIDkxNzk4NSwgNzExODgsIDEyNzM2NywgMTIxNDY0LCAxODksIAotICAgIDEyNjExLCAwLCA5ODM0MjAsIDI4NTksIDQ4MzgsIDk4MzkzMCwgNDgzNCwgNjUwNzgsIDAsIDkyOTkxLCA0ODM3LCA2NzQxMywgCi0gICAgNzcwLCA5MjY3MSwgODExLCA3MDA2MiwgNDEwNDIsIDgzMDczLCA0MTMxOCwgNjQ0MjcsIDczOTk5LCA2NzY5MywgNzg4NDgsIAotICAgIDM4OTUsIDkyNjE1LCA3NDM0MSwgMzk3NiwgMTI4NDY2LCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDc4NDg4LCAwLCAKLSAgICA0MzQ5NiwgMCwgMTIxMDE1LCA0MzY4NiwgNzg4NDYsIDQxODc3LCA5ODM3NDMsIDI4NzEsIDY0NjE0LCA2ODg0MywgOTk5LCAKLSAgICA5ODM4NDQsIDYzNDUsIDQxODc2LCAyNjYzLCAyMDE3LCAxMjEyMzQsIDY3ODI0LCAxMTA0MCwgMTAxNTAsIDEyMDY3OCwgCi0gICAgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgCi0gICAgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCA4MzM0NCwgMTA4MTIsIDc4ODUxLCAwLCAKLSAgICA4MzM0MiwgMzA3OCwgMTQwMiwgMCwgODMzNDgsIDAsIDEyNTA3MiwgMTE5MjQ4LCAzOTQsIDMwODgsIDgzMzQ3LCA5MjE3MiwgCisgICAgOTgzNjgyLCA2NTE1MCwgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMTI3Mjg3LCAxMDUwNiwgCisgICAgOTgzNDM3LCA2OTY0MSwgMTA3NTMsIDEwODMwLCAxMTkzMzksIDYxNSwgNjQ0OTAsIDc1NzQsIDc0MDgyLCA3NzkyMiwgCisgICAgOTgzMjk4LCAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIDEyODMwOSwgMTIxMjMxLCA2Nzk5NiwgMjAyMCwgMTI4NzkwLCAKKyAgICA0MDIyLCAxMjg3ODMsIDEwMDc0OCwgNzc5MjMsIDEyNjU5MywgNDE2OTEsIDAsIDc1MDYwLCA3NDMyOSwgMCwgNjQ2MjIsIAorICAgIDkwNzAsIDk4Mzg3NiwgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDEyNTE5MSwgNzAwMCwgMzkwNCwgCisgICAgOTgzNjI4LCA3MzczNywgMTI1MTA1LCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjA1MTgsIDczOTcsIAorICAgIDExODgwNywgOTE3ODkxLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDEyODUwOSwgMzc3NywgNjg0NTgsIDExMzcyNSwgCisgICAgOTYzNiwgMCwgMTA3MzgsIDY5NjM0LCA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCAKKyAgICA5ODM3MjMsIDY0NDA5LCAzNTk2LCAxMjkwNDQsIDEyMDg5NSwgOTc2MywgMTIwMjgwLCA3NDYwOSwgMTIzNDcsIDEyNCwgCisgICAgMTI5ODEsIDQxMTI3LCAyMDkyLCA5MjY4NywgMCwgMTI3NTU1LCAxOTQ2MzIsIDEwODIwLCA0Mzk4NywgMCwgMTI4OTA3LCAKKyAgICAxNzY5LCA0MTcxNSwgMjQ2MywgNzEyMTQsIDgzMDcwLCAxMjc3MCwgNzEyMjIsIDE1MzgsIDkyNjE3LCA0MzEyNCwgCisgICAgMTk0NjE0LCAxOTQ1ODUsIDc3OTUsIDEyMDMwMCwgMTI5MDUzLCA0ODI4LCAxMjU4LCAxMjc4MDIsIDIwMDYsIDEwMTAzNCwgCisgICAgMTIxMTMwLCA5NDk4LCAxMDA0OTQsIDEyNzAzMywgMTIwMjg5LCAxMjAyODgsIDM5MzksIDEyMDI5MCwgODg0NiwgODk0MywgCisgICAgMTIwMjg3LCAxMjAyODYsIDI2NTAsIDQ0OTEsIDE5NjEsIDQyNjAyLCAxMTUyNSwgMTIwMjkyLCAxOTU5LCAxMjAyOTQsIAorICAgIDU1MjI4LCAxMTc3NCwgNDEwMTYsIDkxNzk0NCwgNjg2NzUsIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCAKKyAgICA2NjMzMSwgMzQ1NCwgMTk5MzAsIDc4MTYzLCA0MTAxOSwgMTI2NTQ2LCA5ODM2NzEsIDY1MjkyLCA2ODIyLCAxMjg2MiwgCisgICAgOTgzNzA3LCAwLCA0MjE0MywgNDE4MjgsIDc4MjA3LCA2NTUzMSwgNzA4NjQsIDExODg3OSwgNTUyMjMsIDAsIDEyODA3MSwgCisgICAgNDE4MjYsIDg4NjUsIDY0MDIsIDExMzgyNywgMTMyNzksIDc5MTcsIDc0NzU1LCA5MTc5NDgsIDc3MzMsIDk4MzQwOCwgCisgICAgNDk5OCwgNjg0OTMsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMTI3OTIzLCA4MzA3NSwgNzAwNjEsIDQwMTMsIDEyODcxOCwgCisgICAgMTA4ODEsIDAsIDEyOTA0NSwgMTI1MjY2LCA3NDc4OCwgMjAxNCwgMjQzMiwgNzE5MDEsIDk3NjUsIDE5NTA1MiwgMCwgCisgICAgOTE3ODU0LCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgMCwgMCwgMTE5MzE1LCAyMDE1LCAxMDA4NzEsIAorICAgIDkyNzY1LCA3MTg0MCwgNjYzMTgsIDQzMjMzLCA5MTc5OTIsIDQyNTE3LCA2ODA2MCwgOTgzNjE0LCA5ODM5MDQsIDEyNjk4LCAKKyAgICA4MDk0LCAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgNDM0OTcsIDEyNjU2LCA2NjMzNSwgMTE5MzUzLCA2NzI3OSwgMTY2NSwgCisgICAgNzE4NTMsIDQ4MzMsIDkxNzk4NSwgNzExODgsIDEyNzM2NywgMTIxNDY0LCAxODksIDEyNjExLCAwLCAxMjgwOTQsIDI4NTksIAorICAgIDQ4MzgsIDk4MzkzMCwgNDgzNCwgNjUwNzgsIDAsIDkyOTkxLCA0ODM3LCA2NzQxMywgNzcwLCA5MjY3MSwgODExLCA3MDA2MiwgCisgICAgNDEwNDIsIDgzMDczLCA0MTMxOCwgNjQ0MjcsIDczOTk5LCA2NzY5MywgNzg4NDgsIDM4OTUsIDkyNjE1LCA3NDM0MSwgCisgICAgMzk3NiwgMTI4NDY2LCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDc4NDg4LCAwLCA0MzQ5NiwgOTgzMDY5LCAxMjEwMTUsIAorICAgIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDk4Mzc0MywgMjg3MSwgNjQ2MTQsIDY4ODQzLCA5OTksIDEyNTE5OCwgNjM0NSwgCisgICAgNDE4NzYsIDI2NjMsIDIwMTcsIDEyMTIzNCwgNjc4MjQsIDExMDQwLCAxMDE1MCwgMTIwNjc4LCA2NDMwOCwgMTUyMiwgNTk3LCAKKyAgICA0Nzc1LCAxMjU1NSwgMTI1NzEsIDEyNTUwLCAxMjU4MywgMTI1NjAsIDIwMTksIDEyNTU2LCAxMjU4NCwgMzA5MiwgCisgICAgOTgzODMyLCAxMjU2MiwgNDc4MywgMTI1NjYsIDEyNTY5LCAxMjU1NCwgODMzNDQsIDEwODEyLCA3ODg1MSwgMTI2NTc0LCAKKyAgICA4MzM0MiwgMzA3OCwgMTQwMiwgMCwgODMzNDgsIDAsIDEyNTA3MiwgNzQzNzEsIDM5NCwgMzA4OCwgODMzNDcsIDkyMTcyLCAKICAgICA5MTc5NjUsIDM5OTEsIDY0MzkxLCA4MzM0MSwgMTI4NTI0LCA0MjQsIDY2MzI4LCAxOTk5LCA2OTY1OSwgNzM5MTQsIDAsIAotICAgIDEyNzUzNCwgNjY5MDMsIDEyODQ2OCwgNDIyMzEsIDIyMDksIDEyNTEwMywgMCwgMCwgNDE4NDAsIDY2OTEzLCAyMzc3LCAKKyAgICAxMjUxMjgsIDY2OTAzLCAxMjg0NjgsIDQyMjMxLCAyMjA5LCAxMjUxMDMsIDAsIDAsIDQxODQwLCA2NjkxMywgMjM3NywgCiAgICAgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIDEyNTU5LCAxMjU3MCwgNzQ3OSwgMTAwMywgMjM3MywgOTQ0NiwgCi0gICAgNzQ4MSwgOTQ0OCwgNDgsIDk4MzA4NCwgOTQ4MCwgNDgxLCAwLCA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCA5NDQzLCAKLSAgICA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAxMjkxMzUsIAorICAgIDc0ODEsIDk0NDgsIDQ4LCA3ODAyOSwgOTQ4MCwgNDgxLCAxMDA2MTUsIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIAorICAgIDk0NDMsIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDEyOTEzNSwgCiAgICAgOTI5MzQsIDk0MjQsIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAyMzYyLCA5NjU1LCAxMjgwNTAsIAogICAgIDIwMDQsIDkwOTYsIDk3ODIsIDcwODQyLCA5MTcyLCA4MzA3MSwgMTk5NjUsIDAsIDU5NTUsIDY3NjY2LCAxMTA4LCAwLCAKLSAgICA3NDc3MywgNzgyNzEsIDEyODkwOSwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIDEzOTIsIAotICAgIDk4MzgxNywgMTIwODM4LCAxMjczNjQsIDEwNjA2LCA4MDY1LCAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMTI3MjM4LCAKLSAgICAxMjg3MzksIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgMTI1MDgyLCA0MzI4MCwgODIxOSwgNjg0MDIsIDE4MTIsIDExOTk2MywgCi0gICAgMTIxMDY3LCAxMjg0MzAsIDEyMDkzOSwgNDI0MTAsIDc0NDQ4LCAxMTkxMzIsIDYwNTQsIDEwNjk3LCAzMTY5LCA0MjI5NywgCi0gICAgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAxMjg4NDgsIDEyODEzOSwgOTgzMjYzLCA2ODY3OCwgNzQ5ODYsIDk4Mzc5MCwgCi0gICAgMTA0OSwgNDM1MTcsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgNjQ3NjAsIAotICAgIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAzNiwgMCwgCi0gICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgMTIxMzg5LCAyMDA5LCAwLCAxMjc5ODUsIDc0MjQ1LCAKLSAgICA5NjQwLCAxMTk5NTEsIDAsIDY5ODk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCA5ODMwNTAsIDY0MzYxLCAxMjkwODgsIAotICAgIDE4MiwgNjY0MTQsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAxMTc1NCwgCi0gICAgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCAKLSAgICA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMTI0OTc3LCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgCi0gICAgMTEzODExLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAxMjUwNTgsIDY1NTA2LCA5ODM5MTIsIDY1ODYxLCA3NDA4MywgNjY4NzIsIAotICAgIDk5MzIsIDQzNTE2LCA4MzA2MywgODMwNjUsIDgzMDY0LCA5ODE3LCAwLCA3MTIzNCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAKLSAgICAxMDU0MCwgNjYyNTAsIDkwNjMsIDEyNzA0NSwgMTI4NTQ3LCAxMTk5NTQsIDExMzY4NSwgMTI4OTcsIDM3OTIsIDIwMTEsIAotICAgIDEyMTQxOCwgNjA2NSwgNDMxNjAsIDEyODM3OSwgMTIwNTk1LCA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgCi0gICAgNDExODcsIDExNjU5LCA3OTIyLCAxMjYxNCwgMjAwNSwgODUyMywgNzgwMDIsIDEyMDAzNSwgNzUxMywgMTg2MywgNDcxMCwgCi0gICAgMCwgNTk1NiwgNzYyMSwgNzgwMDUsIDkyNjI0LCA0NzA1LCA3MTYsIDc0OTE4LCAwLCA0NzA0LCAxMjAwNDAsIDkzMDI0LCAKLSAgICA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCA3NDA3NywgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgCi0gICAgMTE5MDY1LCA0MzI5MywgNjg3NzEsIDk4MzE5MCwgMTE5MTY0LCAxMjAzMjgsIDgzMzE5LCAxMDE4NywgMTcwMCwgMTE5MjIzLCAKLSAgICA4MzMxNSwgMCwgNzQ5ODAsIDQwMDQsIDkxNzU5NSwgMTA5NjgsIDQzMjk2LCAxMjgzMzEsIDg1MDYsIDExMzc0NCwgCi0gICAgMTk0ODEyLCAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIDI4NzAsIDEyMTM1MCwgNzgyMTgsIDk4MzEwOSwgCi0gICAgNzQ2MywgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCA3NDg4NywgNzA0OTQsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIAotICAgIDEyODYyMywgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCA5MjU0OCwgMCwgNDI1MjcsIDEyOTExLCAKLSAgICA0MzQyNywgMTM4MywgODU2NSwgMjQ2OSwgMTIwMDI0LCA2NjkwLCA2MTU2LCA2ODExNywgNDM0MzksIDc5OTMsIDQyODgsIAotICAgIDEyMDQxNiwgMjY3NCwgMTMyMzgsIDExOTIyLCAwLCA5MjUyOSwgMzUxMCwgMTMyMzQsIDk4MzgzMiwgMTIwNDA3LCA1NjA1LCAKKyAgICA3NDc3MywgNzgyNzEsIDEyODkwOSwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMTI5MzY1LCA4MzA2MiwgCisgICAgMTM5MiwgMTI3NzgyLCAxMjA2OTYsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIDcwNzEwLCAxMDM1MywgMTA0MTcsIDEwMDYxMywgCisgICAgMTI1MDIzLCA2NDUyNCwgNzA3MTEsIDQwMTksIDEwMDk1MCwgMTI1MDgyLCA0MzI4MCwgODIxOSwgNjg0MDIsIDE4MTIsIAorICAgIDEwMDk0OSwgMTIxMDY3LCAxMDA5NDQsIDEyMDkzOSwgNDI0MTAsIDc0NDQ4LCAxMDEwODUsIDYwNTQsIDEwNjk3LCAzMTY5LCAKKyAgICA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAxMjgyMzEsIDEyODEzOSwgOTgzMjYzLCA2ODY3OCwgNzQ5ODYsIAorICAgIDk4Mzc5MCwgMTA0OSwgNDM1MTcsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgCisgICAgNjQ3NjAsIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAKKyAgICAzNiwgMCwgNTE1MywgNDE4MDUsIDExOTE1MywgNzM3MzUsIDc2MywgOTIxMSwgNjQ5MTAsIDEyMTM4OSwgMjAwOSwgMCwgCisgICAgMTI3OTg1LCA3NDI0NSwgOTY0MCwgMTE5OTUxLCAxMjczMTYsIDY5ODk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCAKKyAgICA5ODMwNTAsIDY0MzYxLCAxMjkwODgsIDE4MiwgNjY0MTQsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgCisgICAgMzY2LCAwLCA5ODkyLCA1OTY5LCAxMTc1NCwgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAKKyAgICAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMTI0OTc3LCA0MjI1MSwgCisgICAgOTgzOTYzLCA0MjUzNCwgNjUxNzksIDExMjg3LCA2MTI4LCAxMTM4MTEsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDEwMTA5MiwgCisgICAgNjU1MDYsIDExOTI0OCwgNjU4NjEsIDc0MDgzLCA2Njg3MiwgOTkzMiwgNDM1MTYsIDgzMDYzLCA4MzA2NSwgODMwNjQsIAorICAgIDk4MTcsIDEwMDkzNywgNzEyMzQsIDcwNzQ5LCAxMjExNywgNjY1ODYsIDQxODMsIDEwNTQwLCA2NjI1MCwgOTA2MywgCisgICAgMTI3MDQ1LCAxMjg1NDcsIDExOTk1NCwgMTEzNjg1LCAxMjg5NywgMzc5MiwgMjAxMSwgMTIxNDE4LCA2MDY1LCA0MzE2MCwgCisgICAgMTI4Mzc5LCAxMjA1OTUsIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIAorICAgIDEyNjE0LCAyMDA1LCA4NTIzLCA3Mjg1MiwgMTIwMDM1LCA3NTEzLCAxODYzLCA0NzEwLCAxMjAwMzAsIDU5NTYsIDc2MjEsIAorICAgIDc4MDA1LCA5MjYyNCwgNDcwNSwgNzE2LCA3NDkxOCwgOTgzNDUzLCA0NzA0LCAxMjAwNDAsIDkzMDI0LCA0MjI0MSwgMTYxLCAKKyAgICA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCA3NDA3NywgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgMTE5MDY1LCAKKyAgICA0MzI5MywgNjg3NzEsIDE5NTAzMCwgMTE5MTY0LCAxMDA3NzAsIDgzMzE5LCAxMDE4NywgMTcwMCwgMTE5MjIzLCA4MzMxNSwgCisgICAgMCwgNzQ5ODAsIDQwMDQsIDkxNzU5NSwgMTA5NjgsIDQzMjk2LCA3MjgyMywgODUwNiwgMTEzNzQ0LCAxOTQ4MTIsIAorICAgIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMTIxMzUwLCA3ODIxOCwgOTgzMTA5LCA3NDYzLCA0NzI5LCAKKyAgICA5ODMzOTMsIDIzNSwgMTM4NCwgNDcyOCwgNzQ4ODcsIDcwNDk0LCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCAxMjg2MjMsIAorICAgIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgOTI1NDgsIDAsIDQyNTI3LCAxMjkxMSwgNDM0MjcsIAorICAgIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAxMjA0MTYsIAorICAgIDI2NzQsIDEzMjM4LCAxMTkyMiwgMTI4NDA5LCA5MjUyOSwgMzUxMCwgMTMyMzQsIDEyOTM2OCwgMTIwNDA3LCA1NjA1LCAKICAgICA0MjA5NSwgMTEzNjQsIDkyMjg2LCAxMzgwLCA2NTYxNywgMTExNjIsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAxMjAzMDksIAogICAgIDY3NzA4LCA5NDk1LCAxMTkzNDYsIDEyNzE1NCwgNTk1OSwgNjc5ODQsIDczOTc2LCA2NjI3NSwgNDMzNzEsIDY5NDEsIAogICAgIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCA4Mjk1MiwgNDc3OSwgCiAgICAgOTgzOTIyLCAzNzE5LCA0MDA2LCA5ODM1NjksIDE5OTU3LCA3MTE4NiwgMjAyMSwgMTE5MzMyLCA0Mzg3NywgODMxNDAsIAogICAgIDQzMDI4LCA2NTQ5MywgNDE4MzgsIDM4NzUsIDU5NjIsIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIAotICAgIDc3ODcsIDcxMTg5LCA2NTQ5NCwgNjgxNTMsIDEyNjk5MSwgMTk0Njk3LCAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDE5NDYyNiwgCi0gICAgMTI4NzUzLCA5ODM5NTgsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDk4Mzc5NCwgOTc0MiwgNTIxLCAwLCAxMDgwMCwgCi0gICAgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCAwLCAwLCAxMTkwMTgsIDEwNTk5LCAKLSAgICAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIDY3MjYxLCAxMDA3NCwgNzg1NDgsIAotICAgIDkzOTk5LCAzNzY5LCAwLCAwLCAxMjg3MDMsIDk4MzEwNywgOTU3MywgOTE3OTk4LCA2NTI5MCwgODg0OSwgMTE5MjU0LCAKLSAgICA2NTg1NSwgNjUxMTIsIDE3OTYsIDcxMDQ2LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDgzMTM1LCA3Mzg4LCAKLSAgICAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDkyMjAzLCA5MjkxNSwgMTI2NjEsIDc2MDgsIAotICAgIDEwMzU0LCAxMDQxOCwgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAKLSAgICAxMzkwLCA3MDE4NCwgMTk0NzA0LCA0MjEsIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIAotICAgIDc2MDAsIDc0NDAwLCA2NjAzNSwgMTk1MDkxLCAwLCA2NTg1MSwgNDI2MDcsIDEyNDk1NSwgOTI0MDMsIDMxNjgsIDY3NzMzLCAKLSAgICA0MjEzNCwgMTE4MzEsIDIzNzAsIDI4NDYsIDkyNjA1LCAxMjgwODQsIDAsIDEyMDEzMiwgMTI3NzQ1LCAxODM2LCAwLCAKLSAgICAxMjEyMDcsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgNjUzNzQsIDEyMDQ1MSwgMjM5MCwgMzk0NCwgNjY2MjgsIAotICAgIDExOTAwNiwgMCwgNjEzNSwgMzExOCwgNzQyNjUsIDExOTA5MywgODMzMTAsIDc3OTc1LCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgCi0gICAgNzk0MywgMTI0OTY4LCAxMTkyMzQsIDEwNjE4LCAyNTg0LCAwLCAwLCAxMjgyMjUsIDk5OTgsIDEyMDU3MywgODMzMDYsIDAsIAotICAgIDEyNzc1MCwgNDM1MDgsIDYyMDQsIDEyNzA0NCwgMTIxMzc0LCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIAotICAgIDEyMDEzMCwgNDI2NywgMTYzMSwgNDIyMDYsIDc3OTgzLCAxMjgwMTUsIDE5NTA0NiwgNjU3MDAsIDY2Mzg2LCAwLCA2NDY0NSwgCi0gICAgMCwgOTI4ODcsIDEyNjU4OCwgMTI1ODYsIDAsIDkyNDIsIDEyMDEwMCwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIAotICAgIDk4Mzc5NywgNzc5MywgNzgyNzUsIDkzMjgsIDExOTEwNCwgNzgzOTMsIDEyNjA0LCA5Mjg4NSwgNjYxNSwgMjI4NSwgCi0gICAgOTIzNDQsIDM5ODYsIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgOTIyNDcsIDk4MzM2MCwgOTU0MSwgNzgyNzYsIAotICAgIDExMzY2OSwgMTEyNzUsIDg1NDAsIDExNDk4LCAxMjA4NjgsIDk4MzM1OSwgNDEwNDAsIDI0NTksIDEyNzMwMiwgMTMwNjAsIAotICAgIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCA3NzkzMSwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgCi0gICAgMzc2NSwgOTI4ODEsIDkxNzYxMiwgMTYwNiwgMTIwMzQ4LCA5MjI5OSwgMzA5MywgNjg0MzYsIDEyODA0MCwgOTgzMDYxLCAKLSAgICAxMTk2MTMsIDAsIDAsIDQzMTIsIDc0MDkxLCAxMjAzMzcsIDc0OTgzLCAxMTkyMywgNDAyMywgNjgzOTksIDU3NjMsIAotICAgIDk0MDE1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIDY0NDA2LCAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgCi0gICAgNjY2NjAsIDI0OTksIDY3MTY3LCA2NzE2NiwgMTE4ODM3LCAxMTk3MywgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIAotICAgIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAxMTkzMTksIDEyNzk5MiwgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAKLSAgICAzMTIwLCA5Nzk3LCAwLCAwLCAxMTA4NiwgMTAzODksIDEyNjQ4NSwgMTI4Nzg0LCA0ODk1LCA2NTM1OCwgMTI0OTQxLCAKLSAgICA0MzU5LCA1ODUsIDIzODMsIDM1MDksIDcwMDM3LCA0ODYsIDQyOTAsIDU3NTgsIDEyNzU0NiwgMTIxMTYwLCA5ODMxMDYsIAotICAgIDcwMDQsIDExMzY2NywgNjU4ODAsIDEyNjUxNCwgMTE5MDQ4LCAyMzgwLCAxMTM4MCwgOTgzODYzLCA5Mzk5NiwgMjM3NiwgCi0gICAgNzg4NDEsIDgzNDAyLCAwLCA1MTk3LCA3MDgzOSwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTE5NjA0LCAKLSAgICA3MDgzNywgMTIwMDQ1LCAwLCAxMjg1NTQsIDAsIDkxNzg0NiwgMCwgMCwgMCwgNzQxODgsIDcxMzQyLCA3ODQ1NSwgNzUwNDgsIAotICAgIDExMzY3NSwgNzQ5MDAsIDEyMDA0NiwgMTI3NTQyLCAxMjAwNDksIDk4MzM2NiwgMTg0NywgMTIwOTc4LCAxMDMzOSwgCi0gICAgOTgzMzY3LCA0MjM4NCwgMTIxMzc5LCA0MjI3LCA3NDE1OCwgMCwgNzQ0OTgsIDQzMDMyLCAxMjExMjQsIDQyMzY1LCAwLCAKLSAgICAxMjY3MSwgMTEzODQsIDEyMDA1OSwgNzQyNjQsIDEyMDA1OCwgNjQ3OTcsIDk4MzM0NywgNTgyMCwgOTgzMzQ2LCAxMjAwNTIsIAorICAgIDc3ODcsIDcxMTg5LCA2NTQ5NCwgNjgxNTMsIDEyNjk5MSwgMTk0Njk3LCAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDcyODc5LCAKKyAgICAxMjg3NTMsIDk4Mzk1OCwgNjYzMTYsIDY1NDY3LCA1NzcxLCA0MTI5OCwgODMxMzgsIDk3NDIsIDUyMSwgOTgzOTExLCAKKyAgICAxMDgwMCwgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCA5ODM5MDgsIDY0MDQxLCAKKyAgICAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIAorICAgIDY3MjYxLCAxMDA3NCwgNzg1NDgsIDkzOTk5LCAzNzY5LCAxMjc5NTgsIDAsIDEyODcwMywgOTgzMTA3LCA5NTczLCAKKyAgICA5MTc5OTgsIDY1MjkwLCA4ODQ5LCAxMTkyNTQsIDY1ODU1LCA2NTExMiwgMTc5NiwgNzEwNDYsIDk4MzQyOCwgNjk2NjUsIAorICAgIDgxNjQsIDQxMzAxLCAzNTAyLCA4MzEzNSwgNzM4OCwgMTA2MjEsIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCAKKyAgICA3Mjc0OSwgOTI5MTUsIDEyNjYxLCA3NjA4LCAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCA5ODM0MjksIDE0MDksIAorICAgIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAxMzkwLCA3MDE4NCwgNzg1MTUsIDQyMSwgNDM1MzYsIDU4NDYsIAorICAgIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgNzQ0MDAsIDY2MDM1LCAxOTQ3OTksIDAsIDY1ODUxLCAKKyAgICA0MjYwNywgMTI0OTU1LCA5MjQwMywgMzE2OCwgNjc3MzMsIDQyMTM0LCAxMTgzMSwgMjM3MCwgMjg0NiwgOTI2MDUsIAorICAgIDEyODA4NCwgMCwgMTIwMTMyLCAxMjc3NDUsIDE4MzYsIDAsIDEwMDc4MiwgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCAKKyAgICA2NTM3NCwgMTAwNzg1LCAyMzkwLCAzOTQ0LCA2NjYyOCwgMTE5MDA2LCA5ODM5MTYsIDYxMzUsIDMxMTgsIDc0MjY1LCAKKyAgICAxMTkwOTMsIDgzMzEwLCA3Nzk3NSwgOTgzODg5LCA4MTI3LCA4OTc1LCA2NDczOSwgNzk0MywgMTI0OTY4LCAxMTkyMzQsIAorICAgIDEwNjE4LCAyNTg0LCAwLCAwLCAxMjgyMjUsIDk5OTgsIDEyMDU3MywgODMzMDYsIDAsIDEyNzc1MCwgNDM1MDgsIDYyMDQsIAorICAgIDEyNzA0NCwgMTIxMzc0LCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIDEyMDEzMCwgNDI2NywgMTYzMSwgCisgICAgNDIyMDYsIDc3OTgzLCAxMjgwMTUsIDE5NDc1MywgNjU3MDAsIDY2Mzg2LCAwLCA2NDY0NSwgMCwgOTI4ODcsIDExOTE1NCwgCisgICAgMTI1ODYsIDAsIDkyNDIsIDEyMDEwMCwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIDk4Mzc5NywgNzc5MywgNzgyNzUsIAorICAgIDkzMjgsIDExOTEwNCwgNzA2ODUsIDEyNjA0LCA5Mjg4NSwgNjYxNSwgMjI4NSwgNjY3OTYsIDM5ODYsIDQ0MDI1LCAwLCAKKyAgICA4OTEyLCA2NDU1NSwgNzQwOSwgOTIyNDcsIDk4MzE5MCwgOTU0MSwgNzgyNzYsIDExMzY2OSwgMTEyNzUsIDg1NDAsIAorICAgIDExNDk4LCAxMjA4NjgsIDEyODU0MCwgNDEwNDAsIDI0NTksIDEyNzMwMiwgMTI1NTgsIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAKKyAgICAwLCA3NzkzMSwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgOTI4ODEsIDkxNzYxMiwgCisgICAgMTYwNiwgMTIwMzQ4LCA5MjI5OSwgMzA5MywgNjg0MzYsIDEwMDcxOCwgOTgzMDYxLCAxMTk2MTMsIDk4MzkzOCwgMTk0NzU2LCAKKyAgICA0MzEyLCA3NDA5MSwgMTIwMzM3LCA3NDk4MywgMTE5MjMsIDQwMjMsIDY4Mzk5LCA1NzYzLCA5NDAxNSwgNDgyNywgMTA4OTQsIAorICAgIDEyODEwLCA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIDY2NjYwLCAyNDk5LCA2NzE2NywgCisgICAgNjcxNjYsIDExODgzNywgMTE5NzMsIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCA0Mjc1OCwgMTIxOTYsIDQyODM3LCAKKyAgICA0MjIyNiwgMTE5MzE5LCAxMjc5OTIsIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgCisgICAgMTEwODYsIDEwMzg5LCAxMjY0ODUsIDEyODc4NCwgNDg5NSwgNjUzNTgsIDEyNDk0MSwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCAKKyAgICA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMDA3NzUsIDEyMTE2MCwgOTgzMTA2LCA3MDA0LCAxMTM2NjcsIDY1ODgwLCAKKyAgICAxMjY1MTQsIDExOTA0OCwgMjM4MCwgMTEzODAsIDk4Mzg2MywgOTM5OTYsIDIzNzYsIDc4ODQxLCA4MzQwMiwgOTgzMjU2LCAKKyAgICA1MTk3LCA3MDgzOSwgMTIwMjQ4LCAxMjcwNDgsIDIzNjYsIDEwMDcxMywgMTE5NjA0LCA3MDgzNywgMTIwMDQ1LCAwLCAKKyAgICAxMjg1NTQsIDAsIDkxNzg0NiwgMTAwNzE1LCAwLCAwLCA3NDE4OCwgNzEzNDIsIDc4NDU1LCA3NTA0OCwgMTEzNjc1LCAKKyAgICA3NDkwMCwgMTIwMDQ2LCAxMjc1NDIsIDEyMDA0OSwgMTAwNzc0LCAxODQ3LCAxMjA5NzgsIDEwMzM5LCAxMDA3NzIsIAorICAgIDQyMzg0LCAxMjEzNzksIDQyMjcsIDc0MTU4LCAwLCA3NDQ5OCwgNDMwMzIsIDEwMDkyNiwgNDIzNjUsIDE5NDgzMywgCisgICAgMTI2NzEsIDExMzg0LCAxMjAwNTksIDc0MjY0LCAxMjAwNTgsIDY0Nzk3LCA5ODMzNDcsIDU4MjAsIDEyODAxOCwgMTIwMDUyLCAKICAgICAxMjAwNjUsIDEyODgyNSwgMTIwMDY0LCAxMjAwNTMsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgMTIwMDYzLCAxMjEyODYsIAogICAgIDczNzcsIDEyMDA1MSwgNDE3OTksIDY1NTMwLCAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIDEyMTEzMiwgCi0gICAgNjg2NjAsIDAsIDEwODUzLCA5MjYsIDk4MzM3MSwgNzQxODQsIDEyMDkxNSwgMTIwMDU1LCAxMTkzMDEsIDQzMTc1LCAwLCAKLSAgICA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAxMTk2MDUsIDUyMCwgNDIwMCwgCi0gICAgMTI2OTksIDgzMzEsIDcwMTE4LCAzMDkxLCA0MTAzNCwgNjYyOTgsIDcwMjkzLCA4MzYwLCA5ODM0NDUsIDc4MDQ0LCAzMjEsIAotICAgIDQyMjksIDY0NTQzLCAxMjg0NzAsIDY1NTYzLCAxOTQ4NzMsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAxMjE0MjgsIAotICAgIDkxOTUsIDkyMzg2LCAxODYxLCAwLCA3MzczMywgOTE3NzgwLCA2ODgzOSwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIAotICAgIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgNzA3OTMsIDczODY3LCAxMjk3MywgNzUwMTQsIDc0NzU3LCAxMjc1MTQsIAotICAgIDQxNjU4LCAxMjgzNzYsIDEyMTIzNSwgNTc2MCwgMTEzNjk5LCA3NDMsIDQ0MTQsIDEyMDc2NiwgMCwgNDI2MzIsIDEyNzIzNiwgCi0gICAgNjUxNjEsIDczODk2LCAxMjg1ODksIDAsIDE0MDUsIDExOTA2MywgNDMyMjAsIDQzMzQxLCAwLCAxOTkxOSwgNzAyNzgsIAotICAgIDY0NTMyLCA2NTM2NywgNDM3MTAsIDExMTk5LCAxMjUwNzcsIDM1MTMsIDcxMTE1LCA3MDM0MSwgNDMzNDIsIDExOTA2NCwgCi0gICAgNjU1MjksIDY1MzY0LCA4MzIwOCwgODMxNzAsIDY0ODUsIDEzOTcsIDE5NDc4MSwgNDE5ODYsIDkyNjc4LCA4MzIwNCwgCi0gICAgODMyMTIsIDc0MDk3LCA4MzIxMywgNzQ3MSwgMTIwNzksIDY3OTk3LCA2ODQzLCA0MzI4NywgOTIzMTcsIDAsIDY3NDA2LCAKLSAgICAxMjAyMzksIDE5NDY3OCwgNzE5MTQsIDEwOTksIDEwNDkwLCA4MzIwMSwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMTI4OTUyLCAKLSAgICA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAxOTQ2MDksIDY1Njc5LCA2NDU3MywgNjQ4OTcsIDQyMywgCi0gICAgMTgxOCwgNjUxNDQsIDgyOTYzLCA4MjcyLCAxMjc4MTIsIDE5OTExLCA0MjE4LCAzMDg3LCA2NDk2MCwgMTIxNDQ3LCAKLSAgICA0MzU2NCwgMCwgOTgzMTgyLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAKLSAgICA3MTIzNSwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAxOTQ3MzAsIDEyODMzMywgMjY1LCA0MTc5NSwgNjQ2NjYsIDc0NjI4LCAKLSAgICA0MzUzMCwgMjc1MiwgMTI3MzY1LCAxMjg0NTksIDEyNjQ4MiwgNTksIDk4MzY3MSwgMTIxNDEwLCAxMTE0OSwgNzgwNzQsIAotICAgIDc3ODczLCA0MTgxMCwgODMxNjIsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgMTE5MzY0LCA1ODc3LCA0MjI1MiwgNDIyMTMsIAotICAgIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA0Mzg0OCwgMTMxMjcsIDEyMDA2NywgOTgzOTQ2LCA3NDM5NywgCi0gICAgMTIwMjM1LCAxMjg2NDEsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDc1MDE3LCAyMTAzLCAxMDM4NywgNDQ1MywgCi0gICAgNDMyNzYsIDkxNzc4MywgMTExNjksIDEyODkzOSwgNjQ4MSwgNDEyMTMsIDAsIDAsIDEyOTEzMywgMTE5OTI5LCA0MTk4MywgCi0gICAgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgOTI5OTUsIDQ2MiwgNjgxMTAsIDEwNDkzLCAxMjE0NDksIDgxMjksIDkyOTk0LCAKLSAgICAxMjgzNjUsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgCi0gICAgMTE5MDEzLCA0MzM0MCwgMTExMjMsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMTI5MDUxLCAxMTQyNiwgNzc4ODcsIDE2ODEsIAotICAgIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAwLCA0MTg0MSwgNDMzMzgsIDAsIAotICAgIDExOTMyMywgNTcyNiwgNjQ5MTUsIDQyMTc1LCA5ODM5MTMsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAyODUxLCA0MzAxNywgCi0gICAgOTgzNTg5LCAxMjA4OTYsIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAKLSAgICA5MTc1ODksIDkyMzY1LCAxMjgyMDIsIDY0OTIyLCAwLCA4MTkwLCAxMjA4MywgMCwgODMxNDEsIDY1MDYsIDY0MzEyLCAKLSAgICA3NDM3NCwgMjM2OCwgOTgzMTg3LCA0NDE5LCAxMjEyNTksIDExOTEyNSwgMzQzOSwgMTgyNSwgMTE5MiwgMTIwMTA2LCAKLSAgICA4ODkxLCAzMDgwLCAxMjAyMjgsIDIzNDcsIDU0MzAsIDEyMDEwNywgODk5MCwgMjg0OCwgOTI5ODEsIDEyMTM3MiwgNzM5NDIsIAotICAgIDI0OSwgMCwgMCwgMCwgMTIwNjU4LCAxMTkzMjQsIDEyODcxMiwgODg4MywgMTE5ODYwLCA3MjgsIDExMTczLCA5OTUsIDAsIAotICAgIDEyMTA0NywgNjQ4MjYsIDEyNDkzMSwgOTE3Nzk4LCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAKLSAgICAxOTQ4MTQsIDY3NzE0LCAxMjExMiwgNjcyNzIsIDY3MjY1LCA2NzI3MywgNjcyNzQsIDEyMzM1LCAxMjAxMDQsIDY4MDE5LCAKLSAgICAzNDQzLCAzMTI5LCA2NzI2NywgMjEwMiwgNjU0NDUsIDc4MjU4LCA2NDg5MSwgMCwgNzcyNSwgNjUxMDgsIDExMTIwLCAKLSAgICA5MjA1LCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAxMjg1MTksIDQxODk0LCAwLCA2Mjc3LCA0MTY3MiwgNDE4OTMsIAotICAgIDEwMDEwLCAxMjczODEsIDM1NDAsIDEyMTQ1MCwgODM1LCA3MTM0MCwgNjk4MTYsIDExOTg1NCwgNzQ0MDgsIDAsIDY3MTA4LCAKLSAgICA1NDI2LCA0MjU4LCA4MzE4OCwgMTIwODU4LCA1NDI0LCA5MjMwNiwgODI4MywgMTI3OTc4LCA1NDM0LCA4MzE5NiwgCi0gICAgMTI5MDI3LCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAxMjgzMzAsIDE0MDQsIDMwOTUsIDExNDMyLCAxMjExMjIsIDM0NjQsIAotICAgIDY0ODYsIDQ4MTksIDEyODIzMywgMTI5MTIzLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIAotICAgIDEyODUzOSwgNDMxLCA2NzgyMCwgMCwgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCA5ODM2NjMsIDEzMDk2LCAxMjg2NDMsIAotICAgIDEyMTAxOCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCAKLSAgICA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCA1ODc4LCA5ODM3OTksIAotICAgIDAsIDAsIDAsIDY0ODQsIDI1NDEsIDY2MDM5LCAxMTM3NzcsIDc4MTU3LCA5MjcyMywgMzU0OSwgMTk1MDY3LCA5MTEwLCAKLSAgICAxMTk2NjUsIDI3NDMsIDAsIDQzMjkwLCAxMjg1ODUsIDkwOTcsIDE5NTAyNiwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgCi0gICAgNDI3MDcsIDg1NzMsIDEyMDkwMywgMTI2NDk0LCAwLCA3MTEwMiwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIAotICAgIDEyNTExMSwgNTg3MiwgNjQ5NSwgMTI5MTI1LCAwLCAwLCA5MjU0MywgNjcxNzMsIDY3MTcyLCAxMjg0OSwgMzk1MywgMTg5NywgCi0gICAgOTMwNzEsIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMTE5MDg3LCA2ODQ3MywgCi0gICAgNzQxMDQsIDUyMjgsIDExOTgzNSwgNzg2OCwgNDMxODQsIDAsIDEyMDk1NSwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgCi0gICAgOTE3NTUzLCAxMTYyLCA3NDk5NSwgMjY3MSwgMTI4NTY3LCAxMjcxOTgsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCAKLSAgICA3MzgxMSwgOTgzNTczLCAxOTUwMDUsIDExODkyOCwgNjgwODUsIDE5OTIxLCA3MzgyMSwgMTE0MjQsIDE5NTAwMiwgNDU2NywgCi0gICAgNDE4OTEsIDAsIDk4Mzc4OCwgNTUyNDksIDQ4MjAsIDY1MjM5LCAxOTQ2NjIsIDAsIDE5NDY2NSwgNDMwNDIsIDExOTIxMiwgCi0gICAgMTM3NywgMTI4NjksIDQ4OTcsIDQyODIxLCA5MjUwLCA3MDI3MiwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAKLSAgICAxOTQ5NDEsIDQzMjgyLCA4ODMzLCA2OTk5OCwgMCwgNjUwNCwgNzg0MDgsIDEyMTE2NiwgMTA3MTksIDcwMjc1LCAxODk4LCAKLSAgICAxNDEzLCA0MjQ0MywgMCwgODAyLCAxMjE0MSwgMTIxMTM4LCA4MzA5NywgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCAKLSAgICA5MTY5LCA4MzgsIDY4ODE5LCA2ODgwNywgODQ0LCA1MDE0LCA2NjI5NywgMjU2LCA2ODgxOCwgOTk5MCwgMTI4Mzk4LCAKLSAgICA0MjczOSwgOTE3ODUxLCA3NTQyLCA2NTQ2NCwgOTcyNiwgODMyMjQsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIAotICAgIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIDExNzYxLCAxMjEzMTQsIDgzMjI2LCA0MTA5NCwgMCwgNzc5NTgsIDE5NDg5MywgCi0gICAgNzg0MDMsIDkyNjg5LCA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTIwOTQyLCA2NzA5NSwgMTIwNDkxLCAxMTgxNiwgNjg4NDYsIAotICAgIDU3MzMsIDI5MzAsIDcwMjc0LCAxMjcxNzksIDQxMDk4LCA5Mjc3MSwgNDEwOTMsIDY4ODM0LCA2NjYyNiwgNTg4LCA5NzYwLCAKLSAgICAxMjUwOTksIDE5NDcxNywgMTIzOCwgMjAwLCA5ODMyMDcsIDE2NjAsIDczOTE2LCAwLCA2NzE0MSwgNzQzNjIsIDAsIAotICAgIDkyNDg1LCAxMjQ5MzAsIDAsIDc0OTk5LCAzMzk0LCAxOTQ4OTQsIDEyMDY2OCwgMCwgNjk5OTYsIDEyNzM1OCwgNjYyMTksIAorICAgIDY4NjYwLCAwLCAxMDg1MywgOTI2LCA5ODMyOTYsIDc0MTg0LCAxMjA5MTUsIDEyMDA1NSwgMTE5MzAxLCA0MzE3NSwgCisgICAgMTI3MTAzLCA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTAwNDk4LCAxMTk2MDUsIDUyMCwgCisgICAgNDIwMCwgMTI2OTksIDgzMzEsIDcwMTE4LCAzMDkxLCA0MTAzNCwgNjYyOTgsIDcwMjkzLCA4MzYwLCA5ODM0NDUsIDc4MDQ0LCAKKyAgICAzMjEsIDQyMjksIDY0NTQzLCAxMjg0NzAsIDY1NTYzLCAxMDA3NjQsIDEyOTMxMCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAKKyAgICAxMjE0MjgsIDkxOTUsIDcyNzY3LCAxODYxLCA5ODMwNTYsIDczNzMzLCA5MTc3ODAsIDY4ODM5LCA0MzA0MSwgMCwgNDM3OTQsIAorICAgIDEwMDc2OSwgMzg1OSwgMTIxODEsIDQxNjYwLCA4MjA5LCA3MDc5MywgNzM4NjcsIDEyOTczLCA3NTAxNCwgNzQ3NTcsIAorICAgIDEyNzUxNCwgNDE2NTgsIDEyODM3NiwgMTIxMjM1LCA1NzYwLCAxMTM2OTksIDc0MywgNDQxNCwgMTIwNzY2LCAwLCA0MjYzMiwgCisgICAgMTI3MjM2LCA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMTAwNTkzLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCA0MzM0MSwgMTk0NzkyLCAKKyAgICAxOTkxOSwgNzAyNzgsIDY0NTMyLCA2NTM2NywgNDM3MTAsIDExMTk5LCAxMjE0MDAsIDM1MTMsIDcxMTE1LCA3MDM0MSwgCisgICAgNDMzNDIsIDExOTA2NCwgNjU1MjksIDY1MzY0LCA4MzIwOCwgODMxNzAsIDY0ODUsIDEzOTcsIDE5NDc4MSwgNDE5ODYsIAorICAgIDkyNjc4LCA4MzIwNCwgODMyMTIsIDc0MDk3LCA4MzIxMywgNzQ3MSwgMTIwNzksIDY3OTk3LCA2ODQzLCA0MzI4NywgCisgICAgOTIzMTcsIDAsIDY3NDA2LCAxMjAyMzksIDE5NDY3OCwgNzE5MTQsIDEwOTksIDEwNDkwLCA4MzIwMSwgMTA1MDEsIDY1MTgxLCAKKyAgICA3NDQ2MywgMTI4OTUyLCA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAxOTQ2MDksIDY1Njc5LCAKKyAgICA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDgyOTYzLCA4MjcyLCAxMjEyMDMsIDE5OTExLCA0MjE4LCAzMDg3LCAKKyAgICA2NDk2MCwgMTIxNDQ3LCA0MzU2NCwgOTgzNzQ5LCA5ODMxODIsIDk1ODQsIDEwNDY1LCA5ODM5MDIsIDc0MzU5LCAxMjYyNiwgCisgICAgOTEwNiwgOTgzMDY0LCA0MjY0MiwgNzEyMzUsIDY0NzUwLCA5MzkwLCAxMjA3MzcsIDQxNzk3LCAxOTQ3MzAsIDEyODMzMywgCisgICAgMjY1LCA0MTc5NSwgNjQ2NjYsIDc0NjI4LCA0MzUzMCwgMjc1MiwgMTI3MzY1LCAxMjg0NTksIDEyNjQ4MiwgNTksIAorICAgIDk4MzQyNywgMTIxNDEwLCAxMTE0OSwgNzgwNzQsIDc3ODczLCA0MTgxMCwgODMxNjIsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgCisgICAgMTE5MzY0LCA1ODc3LCA0MjI1MiwgNDIyMTMsIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA0Mzg0OCwgMTMxMjcsIAorICAgIDEyMDA2NywgOTgzOTQ2LCA3NDM5NywgMTIwMjM1LCAxMDA4MzUsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDc1MDE3LCAKKyAgICAyMTAzLCAxMDM4NywgNDQ1MywgNDMyNzYsIDkxNzc4MywgMTExNjksIDEyODkzOSwgNjQ4MSwgNDEyMTMsIDAsIDEwMDgzOSwgCisgICAgMTI5MTMzLCAxMDA4MzgsIDQxOTgzLCA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCA5Mjk5NSwgNDYyLCA2ODExMCwgCisgICAgMTA0OTMsIDEyMTQ0OSwgODEyOSwgOTI5OTQsIDEyODM2NSwgNzQ0NzEsIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIAorICAgIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAxMDA0NTcsIDExOTAxMywgNDMzNDAsIDExMTIzLCA0MTAzMywgNjQ5MywgCisgICAgNDI2MjYsIDAsIDEyOTA1MSwgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAKKyAgICAxMDE3MCwgMzk2NiwgODkxMSwgMTAxMDEzLCA0MTg0MSwgNDMzMzgsIDE5NDk1NCwgMTAwODQ4LCA1NzI2LCA2NDkxNSwgCisgICAgNDIxNzUsIDk4MzkxMywgMCwgNDE0OTcsIDY1MDQ0LCAxMDA4NDQsIDI4NTEsIDQzMDE3LCAxMDA0ODQsIDEyMDg5NiwgCisgICAgNDM3MywgNzgwNTgsIDAsIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgMCwgNjUzNjAsIDEwMTAxMiwgOTIzNjUsIAorICAgIDEyMDkzNywgNjQ5MjIsIDEwMDQ4NiwgODE5MCwgMTIwODMsIDAsIDgzMTQxLCA2NTA2LCA2NDMxMiwgNzQzNzQsIDIzNjgsIAorICAgIDk4MzE4NywgNDQxOSwgMTIxMjU5LCAxMTkxMjUsIDM0MzksIDE4MjUsIDExOTIsIDEwMDQ4OCwgODg5MSwgMzA4MCwgCisgICAgMTIwMjI4LCAyMzQ3LCA1NDMwLCAxMDA0ODcsIDg5OTAsIDI4NDgsIDkyOTgxLCAxMjEzNzIsIDczOTQyLCAyNDksIAorICAgIDk4MzA0MCwgOTE3ODY5LCA5ODM4MjUsIDc0ODE0LCAxMTkzMjQsIDEyODcxMiwgODg4MywgMTE5ODYwLCA3MjgsIDExMTczLCAKKyAgICA5OTUsIDAsIDEwMDY1NywgNjQ4MjYsIDEwMDY1NiwgMTI5MzcxLCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIAorICAgIDEyOTEzNCwgMTIyNzMsIDEyOTE1NiwgNjc3MTQsIDEyMTEyLCA2NzI3MiwgNjcyNjUsIDY3MjczLCA2NzI3NCwgMTIzMzUsIAorICAgIDEyMDEwNCwgNjgwMTksIDM0NDMsIDMxMjksIDY3MjY3LCAyMTAyLCA2NTQ0NSwgNzgyNTgsIDY0ODkxLCAxOTUwNjksIAorICAgIDc3MjUsIDExODQzLCAxMTEyMCwgOTIwNSwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMTI4NTE5LCA0MTg5NCwgMCwgCisgICAgNjI3NywgNDE2NzIsIDQxODkzLCAxMDAxMCwgMTI3MzgxLCAzNTQwLCAxMDA4MjcsIDgzNSwgNzEzNDAsIDY5ODE2LCAKKyAgICAxMTk4NTQsIDc0NDA4LCAwLCA2NzEwOCwgNTQyNiwgNDI1OCwgODMxODgsIDEwMDc1OCwgNTQyNCwgOTIzMDYsIDgyODMsIAorICAgIDEyNzk3OCwgNTQzNCwgODMxOTYsIDEyOTAyNywgMTk5MTcsIDExNDA4LCAxMjczOTIsIDExOTQ3LCAxMjgzMzAsIDE0MDQsIAorICAgIDMwOTUsIDExNDMyLCAxMjExMjIsIDM0NjQsIDY0ODYsIDQ4MTksIDEwMDc1OSwgMTI3NDA0LCA1NzAsIDgwOTUsIDM2NzIsIAorICAgIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDEyODUzOSwgNDMxLCA2NzgyMCwgNzgwODAsIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgCisgICAgOTgzNDU5LCAxMzA5NiwgMTI4NjQzLCAxMjEwMTgsIDQzNDA4LCA5NTE2LCAxMjg1MzgsIDUyNjgsIDQyMjMwLCA0MjIyMCwgCisgICAgMCwgNDQ1MCwgMTIwNTExLCAxMTU0NywgNDM0MTcsIDEyODU0MiwgMzU2LCAzNDc3LCAyMjcsIDEwNDg4LCA2ODIwMywgMzgyLCAKKyAgICAxMTQxOCwgMTIwNjgxLCA1ODc4LCA5MTc4NjAsIDAsIDAsIDE5NDg3NywgNjQ4NCwgMjU0MSwgNjYwMzksIDExMzc3NywgCisgICAgNzgxNTcsIDkyNzIzLCAzNTQ5LCAxOTUwNjcsIDkxMTAsIDExOTY2NSwgMjc0MywgMTIxNDMyLCA0MzI5MCwgMTI4NTg1LCAKKyAgICA5MDk3LCA3NDM3OSwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDEyMDkwMywgMTAwNjY2LCAwLCAKKyAgICA3MTEwMiwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIDEwMDY2MiwgNTg3MiwgNjQ5NSwgMTI5MTI1LCAKKyAgICAxMjc0NjcsIDAsIDkyNTQzLCA2NzE3MywgNjcxNzIsIDEyODQ5LCAzOTUzLCAxODk3LCA5MzA3MSwgNjUwOTQsIDExOTk0LCAKKyAgICA0MzM5LCA3NDU1NiwgOTI2NTQsIDY3ODQzLCAxMjg5NDYsIDAsIDExOTA4NywgNjg0NzMsIDY2Nzc4LCA1MjI4LCAxMTk4MzUsIAorICAgIDc4NjgsIDQzMTg0LCAwLCAxMjA5NTUsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIDkxNzU1MywgMTE2MiwgNzQ5OTUsIAorICAgIDI2NzEsIDEyODU2NywgMTI3MTk4LCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDkxNzk0NywgMTEzNzIzLCAKKyAgICAxMTg5MjgsIDY4MDg1LCAxOTkyMSwgNzM4MjEsIDExNDI0LCAxOTUwMDIsIDQ1NjcsIDQxODkxLCAxMjcwMDQsIDk4Mzc4OCwgCisgICAgNTUyNDksIDQ4MjAsIDY1MjM5LCAxMjkzMzgsIDAsIDEwMTA0MywgNDMwNDIsIDExOTIxMiwgMTM3NywgMTI4NjksIDQ4OTcsIAorICAgIDQyODIxLCA5MjUwLCA3MDI3MiwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAxMjg2MTEsIDQzMjgyLCAKKyAgICA4ODMzLCA2OTk5OCwgMCwgNjUwNCwgNzg0MDgsIDEwMDY4OCwgMTA3MTksIDcwMjc1LCAxODk4LCAxNDEzLCA0MjQ0MywgCisgICAgOTgzMzg3LCA4MDIsIDEyMTQxLCAxMjExMzgsIDgzMDk3LCA2NjQ4LCAxMDY3MSwgMjUyOCwgNzI4ODAsIDY0Nzg5LCA5MTY5LCAKKyAgICA4MzgsIDY4ODE5LCA2ODgwNywgODQ0LCA1MDE0LCA2NjI5NywgMjU2LCA2ODgxOCwgOTk5MCwgMTI4Mzk4LCA0MjczOSwgCisgICAgOTE3ODUxLCA3NTQyLCA2NTQ2NCwgOTcyNiwgODMyMjQsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIDY2NTczLCAwLCAKKyAgICA3ODcyNCwgNzg3MTIsIDExNzYxLCA3MDY2NSwgODMyMjYsIDQxMDk0LCAwLCA3Nzk1OCwgMTE5OTE4LCA3ODQwMywgOTI2ODksIAorICAgIDYxOTYsIDY5NDUsIDkzOTY5LCAxMjA5NDIsIDY3MDk1LCAxMjA0OTEsIDExODE2LCA2ODg0NiwgNTczMywgMjkzMCwgCisgICAgNzAyNzQsIDEyNzE3OSwgNDEwOTgsIDkyNzcxLCA0MTA5MywgNjg4MzQsIDY2NjI2LCA1ODgsIDk3NjAsIDEwMDU2OCwgCisgICAgMTk0NzE3LCAxMjM4LCAyMDAsIDk4MzIwNywgMTY2MCwgNzM5MTYsIDAsIDY3MTQxLCA3NDM2MiwgOTgzNzg0LCA5MjQ4NSwgCisgICAgMTI0OTMwLCAwLCA3NDk5OSwgMzM5NCwgNzA3MzQsIDEyMDY2OCwgMTAwNDc3LCA2OTk5NiwgMTI3MzU4LCA2NjIxOSwgCiAgICAgNzI0MjUsIDQzMjg0LCA2ODA3MiwgNzgxNywgMTg0MSwgMTEwNTUsIDY2ODM1LCAxOTQ5NzksIDc0NjA3LCAxNjY5LCAKLSAgICAxMDc3NiwgNzQ1MzQsIDc3MDEsIDE5NDk4MCwgOTgzNDUwLCA3NDk5MiwgMTczMiwgNDAzMCwgOTgzNDQyLCAzOTYzLCAKLSAgICA2NTMzNSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgNjUzMzMsIDY1MzI0LCA5MTQsIDY1MzIzLCA4MDcxLCAzNTM4LCA5ODM4NDUsIAotICAgIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCA3MTkwOCwgMTIwMDksIDEyMzk5LCAxMjEyMTcsIAotICAgIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgODk2MCwgMCwgNzAxMjMsIAotICAgIDY1MzE3LCA3Nzg4MCwgMCwgNTg3NiwgNzAzNzQsIDEyMzA0LCAwLCAwLCA2NTMxNSwgOTI2NzAsIDEyODUxMSwgNzE4NjIsIAotICAgIDAsIDEyNzk1NywgMTE5NjIxLCAxMTExNCwgNzE5MDksIDEyNDQ3LCA2NDQ4NiwgMTIxMjM2LCAxMjY1NjIsIDk4MzEyOSwgMCwgCi0gICAgMTIxMzkzLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgOTgzMTc0LCAxMjAwNywgNDM2OTUsIDY4MDMzLCAxMTk3NSwgMTk0ODc4LCAKLSAgICAwLCA5MjYwNCwgMjU1NSwgODYyOSwgMTI4NjQwLCA0MTEzMywgNDE4NzIsIDQzNzA2LCA0NDk2LCAxOTQ4NzksIDgzMTA4LCAKLSAgICAxMjAyNDEsIDEyODE2NCwgMCwgMCwgOTgzNTUzLCA2NDczMCwgNzAwNDEsIDY2NzE0LCA2ODIyMiwgMCwgNzAwNzYsIAotICAgIDY1NTk2LCA2NzgzNywgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAxMjc4NCwgNzc5MiwgMTM5MywgNzgxOTEsIDExMTU3LCAKLSAgICA3NDM4NiwgMTI3Mjc0LCA4MjMzLCAxMjgyMCwgOTgzNzMwLCA2NjgzLCAxMjUxMTIsIDM0NDIsIDEyMTQ0LCAyODQxLCAKLSAgICAxMjU0MywgMCwgMTQ3MywgNDI4MjAsIDY0MzI5LCAxMjA4ODAsIDY3MjQzLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCAKLSAgICA0MTEwMCwgNzI0MTcsIDQxMTA0LCA5NDAwMywgMzQwNiwgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCA5ODMzODUsIDQ0MzQsIAotICAgIDEwNjksIDE5NDc4NCwgMTE4ODYyLCA2NTczNywgMTIxMjAyLCAxMjg3MDUsIDAsIDgzMjExLCA5NjkzLCA0MTk0MywgCi0gICAgNjgzMDUsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIDk4MzM1MywgMTA1OSwgOTc5MCwgODk5NSwgMTE5OTc0LCAKLSAgICA5MTc3NzAsIDY1OTM3LCA3ODU3MiwgNDE3NTgsIDEwNjQ2LCAxMjExNTksIDExODgzMywgOTIzNzIsIDcwNDI0LCA3NDgzMCwgCi0gICAgNzg1NjksIDEyNzQzLCA5ODM2ODksIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDc3ODk1LCAKLSAgICA2MzM1LCA0MzkxOSwgMTEzMTIsIDY0ODA3LCA5Mjk2MiwgNjk5ODksIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgNDMwMjAsIAotICAgIDc0OTc0LCAzOTU1LCA3NDI1NCwgMTIwNjMyLCA5ODM3NTQsIDkxNzg2MSwgNzAxODcsIDY5OTc1LCA5NzcwLCA5MjQ2LCAKLSAgICAxMjIzMCwgMTI1MDQ3LCAxMjkxMDUsIDc4NTgwLCAxMDQ0OCwgNDE3ODMsIDQxNzg2LCAxMjcwOTMsIDEyNzk3LCAyNzU1LCAKLSAgICA2NDU3MSwgNzg1NzgsIDE5NDkyNywgNDg1NywgOTgzNTc3LCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIAotICAgIDExMTE2LCA0Mzg0MiwgNTc0NywgNzg4MjUsIDcwNDcxLCA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgCi0gICAgNDIxNDQsIDY1MDE1LCAwLCA1NjMsIDAsIDEyOTQxMiwgMTI3OTgsIDExMjcxLCA1NywgOTI3MTcsIDgzNDk1LCA5MTc4NjAsIAotICAgIDExOTA0MywgOTE3NjE4LCA5NDA1MSwgNDMxMzcsIDY5NCwgOTgzNzE5LCA5ODc2LCAwLCAxMTkxNjgsIDAsIDcwMzkyLCAKLSAgICA2NDUzNywgMTI3OTE0LCAyNzcsIDc0Mzg1LCA3MjI5LCAxMjc2MSwgOTgzMTQ1LCA3NDQ2NiwgMTMwMjUsIDY0ODExLCAKLSAgICA4NzU3LCA3ODgyNCwgNzgxODgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIAotICAgIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAxMjkxNTYsIDY5NzI1LCA5MDU1LCAKLSAgICA0MTg1MywgNDg1OCwgNzUwMDAsIDkxNzk5MCwgNDM2LCA0NzcxLCA5MTc5MzYsIDI3ODYsIDkzMDI4LCA0ODU2LCA4MDUxLCAKLSAgICA5MjUwMCwgMTE5NjA5LCA3MTMyNywgOTY0NCwgNzExMzMsIDEyNTAwOSwgMTI4ODczLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIAotICAgIDY4MDg0LCA5ODMzNjEsIDczOTA2LCA2NzQwOSwgMTI3MTE0LCA5MTc5MTYsIDEwMjM0LCA1ODQzLCAxMTkzOSwgNzAzNDYsIAotICAgIDQyMTU3LCAwLCAzMTU3LCAxOTQ2NTksIDY4MzkzLCA3NTAzNSwgMzUwNCwgNzA0MjIsIDAsIDEwODIyLCA1MTQ5LCA2NjAyOSwgCi0gICAgMTAyMjYsIDY1MTQyLCAxMjgwMjUsIDM1OTQsIDQyNDI0LCAxMjQ5OTMsIDQwLCAxMjY1NywgOTgzNjY1LCAwLCAzODYsIAotICAgIDEyMTQ2NywgODgzNCwgMTIwOTc0LCAxMjgxNSwgNDM1NzQsIDEyMTQzMCwgNzM5MDcsIDEyNzc5MiwgNzAxMTMsIDcyMjAsIAotICAgIDExODM5LCAxMjExNDMsIDc0MzE2LCAxOTQ3NTIsIDY1MzIyLCA0MzA0LCA3NDUwMywgODE2MCwgNzQzMTQsIDE5NDc1MywgCi0gICAgMTIxMjc2LCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTIxMTM5LCAxMzMwMywgNzA0MDYsIDkyMzkyLCAKLSAgICAxMjg0NzQsIDc1OTksIDEyNzgsIDQzNjE2LCAxMzI2OSwgMTI3ODA1LCAxMjcxMTAsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIAotICAgIDc0NDkyLCA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCA2ODc0NSwgMjY3MiwgCi0gICAgMzczNSwgMTI3NDcwLCAxMzEzOCwgNDIyNjYsIDk0ODQsIDEwNzI0LCA0MTIwMiwgNzEzNjQsIDEyODM3MCwgNDM3NDIsIAotICAgIDEyODM3MywgOTQ4NywgMTE5OTU5LCA2ODc4NSwgMzg0MiwgNzE5MTEsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCi0gICAgMTE5MzQ0LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDY2NzIxLCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAotICAgIDcwMDA2LCAxOTQ2OTAsIDEyNzUzNywgMzYwNCwgMTIwNjgzLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCA0MjUwNywgCi0gICAgMTk2MiwgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDEyMTAyMSwgMjA3MiwgOTIzMTIsIDY5OTUsIDc0MTczLCA1NDM3LCAKLSAgICA3NDE3NCwgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCA5ODM3NzYsIDE5OSwgNjgwNzUsIDQxMDUsIDE5NDg0NSwgCi0gICAgMTI3OTQyLCA3NTAwNiwgMTk0NzEwLCA2NzgxOCwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ3OCwgMTk1MDcwLCAKLSAgICA2NDcyLCA2NTgxNCwgNzE5MTksIDEyMTIxOCwgNDcyNCwgMTI4NDkxLCAxOTUwNDEsIDkxOTEsIDE5NDY0NSwgNjQ0MzIsIAotICAgIDEyMDI3MCwgODI5ODcsIDExOTE5MCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIDAsIDY2ODAsIDE5NTA0MiwgOTgzNDI1LCAKLSAgICA3MTg3MiwgNjY3OSwgNzQ0MTIsIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgMTI4MjU0LCA0Mzg2MiwgNzg1OTEsIAotICAgIDExMzczMywgMTk0Njc5LCAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAKLSAgICAxMjgyNTIsIDQzODc0LCA2NTQ0MiwgNjgwNDcsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgMCwgMTEzMjEsIAotICAgIDEyODg0NSwgMTIwODA5LCAxOTQ4MTksIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCA5MzAxMCwgNzM5MjcsIAotICAgIDkyNDQ0LCAxMjczMzYsIDY1NzQ2LCAxMTg3OTYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTIxMzM5LCAKLSAgICAxNjc3LCA5MTc1OTIsIDgyOTg5LCAxMjY1OTAsIDgzNDE1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgCi0gICAgMTAxNjAsIDAsIDEyOTE1MCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDgzNDE0LCA0MzAwMCwgNzUwNSwgNTQzLCAKLSAgICA2NDkxNiwgNjQ3MzYsIDExODgzNSwgMCwgNjQ2NTUsIDk4MzA1MywgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgCi0gICAgOTgzMjMxLCA2NTI2NSwgMTk0NjM5LCAxMjEwODAsIDEyNzE3MCwgMTI3MDQxLCAxMjgwMDYsIDkyNTUwLCA5ODMxODYsIAotICAgIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDc0Mzc4LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDgzMjMxLCA3MjM4OSwgCi0gICAgODMwNzksIDUwNiwgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCAxMjE0MDcsIAotICAgIDg4NDEsIDk4Mzc0NywgNTE2LCA5Mzk3NCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCAKLSAgICA3NDMzMywgMTIwMTgyLCAxMTgyNywgNjcxNjUsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCA2Nzk4NiwgCi0gICAgNjU4NCwgNzc0OSwgMTEwMzcsIDEyODc0MywgMTc1OCwgMTE5MDc0LCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIAotICAgIDE5MzUsIDExNTE3LCAxMjAxOTMsIDEyMDE5NiwgODMwODIsIDE5MzEsIDEyMDE4OSwgNzQ4MzksIDEyMDE5MSwgMTIxNywgCi0gICAgNjQ3MDIsIDEyNjQzLCA4MjUsIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDc4ODM0LCA5MTM4LCA3ODgzMSwgCi0gICAgNzg4MzMsIDEyNjMxLCA3MTg3MSwgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMTI3MTk5LCAxMTMxMywgCi0gICAgMTk0ODAzLCAzNDAzLCA5ODM2NTUsIDEyMDI3MSwgNjQzNjQsIDkyMjY5LCAxMjEyODIsIDcyNDMxLCA4OTk4LCAxMjk4OCwgCi0gICAgMTE5OTgzLCA5MTUyLCA5MjE2MSwgMCwgMTI2NDg0LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAzNDMzLCA5MjM5MywgMTI2MTUsIAotICAgIDE1OTQsIDQyMTkyLCA2OTE0LCA2NjM5MiwgMCwgMTE5NTY5LCA3NDU2NSwgNDEzNTMsIDY3NjAyLCA2NzYxMSwgNDMzNywgMCwgCi0gICAgMTI3Mjk2LCA5MTgsIDY1MDM1LCA0MTM1MSwgNzY4MSwgMTk0OTAwLCA0MjU3NywgNDEzOTMsIDEyNjY4LCA3MjM5NSwgCi0gICAgMjQ3NywgMTI3Mjg1LCAxMjEyNDksIDExODg4MCwgMCwgNjc2MDQsIDY3NjgzLCAxMjcyMzUsIDU3MywgMTI3MjgyLCAKLSAgICAxMjA1NDMsIDExNDE3LCA5MjY2MSwgMTE5ODE0LCAxMTkzMDksIDY3NTk5LCAwLCA3MjQxMCwgNjc2MDcsIDExNDgyLCAwLCAKLSAgICAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg1MDMsIDc4ODM5LCA2NzcyOCwgNzc5MDcsIDExNTg5LCAKKyAgICAxMDc3NiwgNzQ1MzQsIDc3MDEsIDE5NDk3NiwgMTAwNDc0LCA3NDk5MiwgMTczMiwgNDAzMCwgOTgzNDQyLCAzOTYzLCAKKyAgICA2NTMzNSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgNjUzMzMsIDY1MzI0LCA5MTQsIDY1MzIzLCA4MDcxLCAzNTM4LCAxOTUwMTMsIAorICAgIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDk4Mzk1MywgMTE4MTksIDcxOTA4LCAxMjAwOSwgMTIzOTksIAorICAgIDEyMTIxNywgNjc4NTIsIDY1NTM3LCA3ODAwMiwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgODk2MCwgMCwgCisgICAgNzAxMjMsIDY1MzE3LCA3Nzg4MCwgOTgzMTk5LCA1ODc2LCA3MDM3NCwgMTIzMDQsIDEyOTM1NSwgMCwgNjUzMTUsIDkyNjcwLCAKKyAgICAxMjg1MTEsIDcxODYyLCAwLCAxMjc5NTcsIDExOTYyMSwgMTExMTQsIDcxOTA5LCAxMjQ0NywgNjQ0ODYsIDEyMTIzNiwgCisgICAgMTI2NTYyLCA5ODMxMjksIDAsIDEyMTM5MywgOTgzODAyLCA0Mjc2NywgMTA5MTUsIDk4MzE3NCwgMTIwMDcsIDQzNjk1LCAKKyAgICA2ODAzMywgMTE5NzUsIDEwMTAxMCwgMTI4NzQ1LCA5MjYwNCwgMjU1NSwgODYyOSwgMTI4NjQwLCA0MTEzMywgNDE4NzIsIAorICAgIDQzNzA2LCA0NDk2LCAxMDA2OTIsIDgzMTA4LCAxMjAyNDEsIDEyODE2NCwgMTAwNjkxLCAwLCA5ODM1NTMsIDY0NzMwLCAKKyAgICA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgNjU1OTYsIDY3ODM3LCAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIAorICAgIDEyNzg0LCA3NzkyLCAxMzkzLCA3ODE5MSwgMTExNTcsIDc0Mzg2LCAxMjcyNzQsIDgyMzMsIDEyODIwLCAxMDA4NDcsIAorICAgIDY2ODMsIDEyNTExMiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAxMDA2OTksIDE0NzMsIDQyODIwLCA2NDMyOSwgCisgICAgMTAwODE2LCA2NzI0MywgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDcyNDE3LCA0MTEwNCwgOTQwMDMsIDM0MDYsIAorICAgIDEwNTQsIDcxMzIwLCAxMDQwLCA2NTQ1MCwgMTEzNzY5LCA0NDM0LCAxMDY5LCAxOTQ3ODQsIDEwMDcwMywgNjU3MzcsIAorICAgIDEyMDEyOSwgMTIwMzAyLCAwLCA4MzIxMSwgOTY5MywgNDE5NDMsIDY4MzA1LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAKKyAgICA5ODMzNTMsIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgOTE3NzY5LCA2NTkzNywgNzg1NzIsIDQxNzU4LCAxMDY0NiwgCisgICAgMTAwNjY1LCAxMTg4MzMsIDIyNjgsIDcwNDI0LCA3NDgzMCwgNzg1NjksIDEyNzQzLCA5ODM2ODksIDY0ODAsIDkxNzc2MSwgCisgICAgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDc3ODk1LCA2MzM1LCA0MzkxOSwgMTEzMTIsIDY0ODA3LCA5Mjk2MiwgCisgICAgNjk5ODksIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgNDMwMjAsIDc0OTc0LCAzOTU1LCA3NDI1NCwgMTIwNjMyLCA5ODM3NTQsIAorICAgIDkxNzg2MSwgNzAxODcsIDY5OTc1LCA5NzcwLCA5MjQ2LCAxMjIzMCwgMTI1MDQ3LCAxMjkxMDUsIDc4NTgwLCAxMDQ0OCwgCisgICAgNDE3ODMsIDQxNzg2LCA3MDY2MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgMTI3OTk0LCA0ODU3LCA5ODM1NzcsIAorICAgIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgMTAwNzIyLCA3ODU3NCwgMCwgMTExMTYsIDQzODQyLCA1NzQ3LCA3ODgyNSwgNzA0NzEsIAorICAgIDc5NzgsIDQxMDkyLCA3NDU3MSwgMCwgMTE5MjQsIDQzODEyLCA0MjE0NCwgNjUwMTUsIDEwMDcyNSwgNTYzLCAwLCAKKyAgICAxMDA3OTUsIDEyNzk4LCAxMTI3MSwgNTcsIDkyNzE3LCA4MzQ5NSwgMTAwNzI3LCAxMTkwNDMsIDcxMjY4LCA5NDA1MSwgCisgICAgNDMxMzcsIDY5NCwgOTgzNzE5LCA5ODc2LCAxMjg3MjAsIDgzMjczLCAwLCA3MDM5MiwgNjQ1MzcsIDEyNzkxNCwgMjc3LCAKKyAgICA3NDM4NSwgNzIyOSwgMTI3NjEsIDk4MzE0NSwgNzQ0NjYsIDEzMDI1LCA2NDgxMSwgODc1NywgNzg4MjQsIDc4MTg4LCAKKyAgICAxNTc0LCA3MzgxLCAxOTQ2MTYsIDI1MjUsIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgCisgICAgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAxMDA2NjEsIDY5NzI1LCA5MDU1LCA0MTg1MywgNDg1OCwgCisgICAgNzUwMDAsIDkyODk2LCA0MzYsIDQ3NzEsIDkxNzkzNiwgMjc4NiwgOTMwMjgsIDQ4NTYsIDgwNTEsIDkyNTAwLCAxMTk2MDksIAorICAgIDcxMzI3LCA5NjQ0LCA3MTEzMywgMTI1MDA5LCAxMjg4NzMsIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgNjgwODQsIDk4MzM2MSwgCisgICAgNzM5MDYsIDY3NDA5LCAxMjcxMTQsIDkxNzYxNCwgMTAyMzQsIDU4NDMsIDExOTM5LCA3MDM0NiwgNDIxNTcsIDAsIDMxNTcsIAorICAgIDE5NDY1OSwgNjgzOTMsIDc1MDM1LCAzNTA0LCA3MDQyMiwgOTgzMDQyLCAxMDgyMiwgNTE0OSwgNjYwMjksIDEwMjI2LCAKKyAgICA2NTE0MiwgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTI0OTkzLCA0MCwgMTI2NTcsIDk4MzY2NSwgMCwgMzg2LCAxMjE0NjcsIAorICAgIDg4MzQsIDEyMDk3NCwgMTI4MTUsIDQzNTc0LCAxMjE0MzAsIDczOTA3LCAxMDA1MTMsIDcwMTEzLCA3MjIwLCAxMTgzOSwgCisgICAgMTIxMTQzLCA3NDMxNiwgMTk0NzUyLCA2NTMyMiwgNDMwNCwgNzQ1MDMsIDgxNjAsIDc0MzE0LCAxMDA1MTEsIDEyMTI3NiwgCisgICAgOTgzOTQwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTIxMTM5LCAxMzMwMywgNzA0MDYsIDkyMzkyLCAxMjEzODQsIAorICAgIDc1OTksIDEyNzgsIDQzNjE2LCAxMzI2OSwgMTI3ODA1LCA5MjQyMywgNzQzODcsIDc4MTc5LCA3ODU5OCwgNzQ0OTIsIAorICAgIDYwOTcsIDc1NjgsIDg3ODAsIDQ5ODIsIDEyNzQ2NCwgNzQ1MDEsIDEwMDcyMCwgNzg1OTIsIDY4NzQ1LCAyNjcyLCAzNzM1LCAKKyAgICAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMTI4MzcwLCA0Mzc0MiwgMTI4MzczLCAKKyAgICA5NDg3LCAxMTk5NTksIDY4Nzg1LCAzODQyLCA3MTkxMSwgNzg2NjgsIDEyNDQyLCA2MTkzLCA5NzkxLCAxMTkzNDQsIAorICAgIDEwMDUyMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA2NjcyMSwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAKKyAgICA3MDAwNiwgMTk0NjkwLCAxMDA1MTgsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIAorICAgIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAxMTk1OTcsIDIwNzIsIDkyMzEyLCA2OTk1LCA3MjgwMSwgNTQzNywgCisgICAgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgMTAwNTE0LCAxOTksIDY4MDc1LCA0MTA1LCAxOTQ4NDUsIDM4NjQsIAorICAgIDc1MDA2LCAxOTQ3MTAsIDY3ODE4LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDc4LCAxMjg0NzEsIDY0NzIsIAorICAgIDY1ODE0LCA3MTkxOSwgMTAwODU1LCA0NzI0LCAxMjg0OTEsIDE5NTA0MSwgOTE5MSwgMTk0NjQ1LCA2NDQzMiwgMTIwMjcwLCAKKyAgICA4Mjk4NywgMTE5MTkwLCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMTk0NjQwLCA2NjgwLCAxOTUwNDIsIDk4MzQyNSwgNzE4NzIsIAorICAgIDY2NzksIDc0NDEyLCA5MjI1MSwgMTE5MzUwLCA3NDQyMSwgMTEzODIsIDEyODI1NCwgNDM4NjIsIDc1MDAxLCAxMTM3MzMsIAorICAgIDE5NDY3OSwgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCA3ODE5NiwgMTI4MjUyLCA0Mzg3NCwgCisgICAgNjU0NDIsIDY4MDQ3LCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDEyNzUzNCwgMTEzMjEsIDEyODg0NSwgCisgICAgMTIwODA5LCAxMjI4OTUsIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCA5MzAxMCwgNzM5MjcsIDkyNDQ0LCAKKyAgICAxMjczMzYsIDY1NzQ2LCAxMTg3OTYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTIxMzM5LCAxNjc3LCAKKyAgICA5MTc1OTIsIDgyOTg5LCAxMjY1OTAsIDgzNDE1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgMTAxNjAsIDAsIAorICAgIDEyOTE1MCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDgzNDE0LCA0MzAwMCwgNzUwNSwgNTQzLCA2NDkxNiwgNjQ3MzYsIAorICAgIDExODgzNSwgMTk0NjY1LCA2NDY1NSwgOTgzMDUzLCAxMTg5MjIsIDIwNjQsIDkxNzk2NiwgNDMxNTgsIDc5MDIsIDk4MzIzMSwgCisgICAgNjUyNjUsIDE5NDYzOSwgMTIxMDgwLCAxMjcxNzAsIDEyMjkxNSwgMTI4MDA2LCA5MjU1MCwgOTgzMTg2LCAxMjk5NCwgCisgICAgOTI3MjgsIDEwODI4LCA3NDM3OCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCA4MzIzMSwgNzIzODksIDgzMDc5LCA1MDYsIAorICAgIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMTIxNDA3LCA4ODQxLCA2Njc3MCwgCisgICAgNTE2LCA5Mzk3NCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCA3NDMzMywgMTIwMTgyLCAKKyAgICAxMTgyNywgNjcxNjUsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCA2Nzk4NiwgNjU4NCwgNzc0OSwgCisgICAgMTEwMzcsIDEyNzE1NywgMTc1OCwgMTE5MDc0LCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAKKyAgICAxMjAxOTMsIDEyMDE5NiwgODMwODIsIDE5MzEsIDEwMDQ5OSwgNzQ4MzksIDc0MTA0LCAxMjE3LCA2NDcwMiwgMTI2NDMsIAorICAgIDgyNSwgMTI3ODM4LCAxOTQ5MDUsIDEyMjk0LCA5MjQyOCwgNjY3NDgsIDkxMzgsIDc4ODMxLCA3ODgzMywgMTI2MzEsIAorICAgIDcxODcxLCAxMTA4MCwgNzQ1NTQsIDY0MDAwLCA1NTkxLCAxMjM5LCAxMjcxOTksIDExMzEzLCAxOTQ4MDMsIDM0MDMsIAorICAgIDEyNjU2NCwgMTIwMjcxLCA2NDM2NCwgOTIyNjksIDEyMTI4MiwgNzI0MzEsIDg5OTgsIDEyOTg4LCAxMTk5ODMsIDkxNTIsIAorICAgIDkyMTYxLCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIDM0MzMsIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIAorICAgIDY5MTQsIDY2MzkyLCAxMjUyMDIsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIDEyNzI5NiwgCisgICAgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAxMjY2OCwgNzIzOTUsIDI0NzcsIAorICAgIDEyNzI4NSwgMTIxMjQ5LCAxMTg4ODAsIDAsIDY3NjA0LCA2NzY4MywgMTI3MjM1LCA1NzMsIDEyNzI4MSwgMTIwNTQzLCAKKyAgICAxMTQxNywgOTI2NjEsIDExOTgxNCwgMTE5MzA5LCA2NzU5OSwgMCwgNzI0MTAsIDY3NjA3LCAxMTQ4MiwgMTI4OTYxLCAKKyAgICAzOTgxLCAzMzU3LCAxMjcxNjQsIDQyMjIzLCA0MjA3LCAxMjg4LCA3ODUwMywgNzg4MzksIDY3NzI4LCA3NzkwNywgMTE1ODksIAogICAgIDQyMTk1LCA3NDQ3NywgMTE5OTk3LCAxMjcxNzgsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDEyMTM2NiwgNDI3ODgsIDY4NDE2LCAKLSAgICA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY2OTA3LCA5NzE3LCAxMTkzMTEsIDAsIDk5NywgMCwgMCwgOTI1NzcsIAotICAgIDAsIDExNDQwLCAxMTM3OSwgNDIwMDAsIDEzMTM5LCA0MjIyMSwgNjUwMTMsIDEyNjk5OSwgMTI3NzYwLCA3MjM5MCwgMCwgCi0gICAgMTE5MjI4LCAxMjAzNSwgMCwgMjgxOCwgMCwgNzQ0MTEsIDczNzkzLCA5ODMyNzgsIDQxNzIsIDcxMjUyLCAxMTk5OTIsIAotICAgIDgzNzMsIDEwODczLCAxMjE5NywgMTI1MDc0LCAxOTUwMTQsIDkyMjY1LCA2OTcwNiwgMTI4NTQwLCA2ODM0LCA3NDM0NywgCi0gICAgNzQ5NTgsIDEyOTAzMywgMTI2OTgyLCA3NDU2MywgNjQ4MjgsIDExNDE5LCAxOTQ4NjgsIDc2NiwgMTI1NywgMTk0NTk4LCAKLSAgICAxMTg4NDUsIDExMzgxLCAzMjY1LCA2NjYxNywgMzI3NCwgMTI2NjI5LCA4MzI1NCwgNzE4NjEsIDk4Mzk1MCwgNzQ1MjIsIAotICAgIDQxOTg5LCAxMjEzMTcsIDAsIDExMzc2OSwgMzI2MywgOTE3OTIyLCA2NTY3MiwgNjkyNDMsIDMyNzAsIDY0NTM5LCAxMTQ4OSwgCi0gICAgOTE3OTExLCAwLCAwLCA3MTEyNywgOTUwNSwgNjU1MTgsIDEyODQ5OCwgNzU2LCAxOTQ2MDUsIDAsIDAsIDE5NDYyMSwgCi0gICAgNzI2MSwgOTI1NDcsIDE4NiwgMCwgMTE5MTU2LCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAxMjk0OSwgNjQ4NTYsIAotICAgIDEyODAwLCA5ODM5MDEsIDc0MjAzLCA2NDcxOCwgMTE1MDcsIDc4NjczLCA5MjQzNCwgNzQ2MjYsIDExMzc2MCwgMTE1NzgsIAotICAgIDk4MzgzNywgMTE5Mjk2LCAxMjA5NzAsIDEyMTEyNywgMTI1MTAxLCAwLCA3MDA4MywgOTI1NCwgNjY4NzcsIDE3OTQsIAotICAgIDY4MzEwLCA2NDUyMSwgNTYyNCwgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIAotICAgIDk0MDYxLCA2ODY1OSwgMTIwMjEzLCAxMjAyMTQsIDE4NzIsIDY2NTA4LCAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgCi0gICAgMTE5MzMwLCA0NDUyLCAxMjgwODgsIDk4Mzc3MSwgOTI1MjYsIDQ1MTEsIDEyMDk1OCwgOTgzODc3LCA2NDY3OCwgMTE0MjUsIAotICAgIDAsIDQzMjQ1LCAxMjMxLCA2ODg2MSwgNjk5MDMsIDAsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCA4Njk0LCAKLSAgICA5NTQ2LCAwLCAxMjgzMzIsIDcwNDIxLCAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgCi0gICAgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIDQyMTMxLCAxMjg2NjIsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIAotICAgIDgzNywgMTA1NjcsIDcyMzg0LCA0MzEwMywgMCwgMTIwNzU0LCAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgCi0gICAgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgNjQwNDUsIDY0MDQ0LCA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAKLSAgICAxMDM0LCAzMzkyLCA4MzMzNiwgNDMwOTEsIDY0MDMzLCA2NDAzMiwgNDI3MzUsIDQzNDk4LCA2NDAzNywgNjQwMzYsIAotICAgIDY0MDM1LCA0MjkxLCAxMjkxNTcsIDY0MDE1LCA2NDAxNCwgNjQ2ODEsIDgzMzk0LCA4MzM5NSwgNzgxNDUsIDcxODk4LCAKLSAgICA0MzA5MCwgODMzOTEsIDM0NzYsIDg5NzMsIDY0MDEyLCA0MjQ3MywgNjQwMTAsIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgCi0gICAgNjQ1MTcsIDc4MTUzLCAyNTM4LCA2NDAwOSwgMjA0LCAwLCA0ODAyLCA0MTExLCA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgCi0gICAgNjQwNTcsIDc4ODUsIDcyNDcsIDY0MDU0LCA5ODMyNjgsIDAsIDQ3NjcsIDkzNDMsIDY0MDQ5LCA2NDA0OCwgMTIwMDM0LCAKLSAgICAxMTMzLCA2NDA1MywgNjQwNTIsIDQzNDUzLCA2NDA1MCwgNDEzNDAsIDExODk3NSwgODMyNjEsIDEwMDA1LCAxMjMyOSwgCi0gICAgNDEzMzMsIDgzMjU5LCA4NDg5LCAxOTQyLCA5MTc5MjEsIDE5NDgzNCwgNDI1MjAsIDY1NTEwLCAxMjUwNDQsIDY4MjkxLCAKLSAgICAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDEyNzc5OCwgNjQwMjUsIDkxNjcsIDQyMTUxLCAKLSAgICA3ODI0NCwgOTgzMjMyLCAyMDI2LCA2NDAxOSwgNjQwMTgsIDY0MDE3LCA2NDAxNiwgMTI3NjgsIDEyMTM2MSwgNzU4MiwgCi0gICAgNzgyNTIsIDc4MjQ4LCA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAxMjA3OTEsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIAotICAgIDc3OTIwLCA3NTMyLCA0MTQxNCwgNzg1MjAsIDMxNzksIDc4NTE4LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgCi0gICAgNzQ0NTQsIDEwNzUxLCA5MDUxLCAxMjA3MjAsIDY3MDgsIDEwNTM1LCAxMTg5NTUsIDY4MjE4LCA1NTI3NCwgMjAwOCwgCi0gICAgNjQwMzEsIDY0MDMwLCAyOTQsIDQxODc0LCA4MzM4MywgNjQ3OTAsIDY1OTI5LCA4MzM3NiwgODMzMzcsIDgzMzc5LCAKLSAgICA4MzM4MCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTk0ODQ0LCAwLCA0MzUxLCA2MzQzLCA0MzI0NywgMTE5ODg4LCAKLSAgICA3MDE1MywgMTE5ODg2LCAxMTk4OTEsIDcyMzg3LCAxMTk4ODksIDExNDMzLCAxMTk4OTUsIDExOTg5NiwgMTk0NjU1LCAKLSAgICA3ODAxLCA2NTU3OCwgODMzNjEsIDEyOTE1LCA0Mzk2OCwgMzI5NywgOTY5OSwgODMzNTcsIDExMzUsIDgzMzUwLCA4MzM1MSwgCi0gICAgODMzNTIsIDE5OTUsIDY3MjIsIDk4MzkyNSwgMTI4ODE1LCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCA0MTU0OSwgCi0gICAgNzg0OTYsIDcyMzg2LCA4MzM3MSwgNjY4MiwgODMzNjUsIDc4Njc5LCA0MzgzMywgNDE1NDcsIDk4MzYzMCwgMjAxMywgCi0gICAgODMzNjIsIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIAotICAgIDExOTkwOCwgOTEzNywgNzE1NSwgODk5OSwgOTE3OTAxLCA3ODUzMywgMzQ2NiwgMCwgMTIxNDY2LCAxOTk2LCAwLCAzNDUzLCAKLSAgICA2MjgyLCAwLCAyMDAyLCAyMDAwLCAxMjAxNzUsIDUzNywgOTI5NzYsIDQxNzksIDY1MTE5LCAxOTk4LCAxMjA3NDYsIDE4NDIsIAotICAgIDAsIDkyNjc0LCA5NjI4LCA2ODQ0NiwgMTIwODEsIDk4MjYsIDY0NTAyLCAxNzY3LCAwLCA5ODMyNDgsIDEyMDAwMSwgCi0gICAgMTIwMjAxLCA5ODM2NDYsIDEyNDk3NSwgMTI3OTUyLCAzMDU5LCA0NDAyNCwgMTIwMjA0LCA0MzQ5MSwgOTI2OTMsIDAsIAotICAgIDEyMTQ3MiwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgNDMxODksIDAsIDM1OTIsIDEwMDc4LCAwLCA3ODE2MiwgCi0gICAgMTE5NTU4LCA4NTkyLCA2NTg3MCwgNjY0MTcsIDc0NTA0LCAxMDc0MiwgNzI0MDAsIDQyOTE4LCAxOTk0LCA5MjgxLCAzMjk2LCAKLSAgICAxMjg2NSwgMTk5NywgMTg5NSwgCisgICAgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2NjkwNywgOTcxNywgMTE5MzExLCAxMDA3MzgsIDk5NywgMTE5OTk4LCAKKyAgICA5MTc5MTAsIDkyNTc3LCAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIAorICAgIDEyNzc2MCwgNzIzOTAsIDEyMDcxMywgMTE5MjI4LCAxMjAzNSwgOTgzOTA2LCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIAorICAgIDEyOTQyNCwgNDE3MiwgNzEyNTIsIDExOTk5MiwgODM3MywgMTA4NzMsIDEyMTk3LCAxMjUwNzQsIDE5NTAxNCwgOTIyNjUsIAorICAgIDY5NzA2LCAxMDA4NTgsIDY4MzQsIDc0MzQ3LCA3NDk1OCwgNjk2NDUsIDEyNjk4MiwgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgCisgICAgMTI2NTcwLCA3NjYsIDEyNTcsIDE5NDU5OCwgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIDMyNzQsIDEyNjYyOSwgCisgICAgODMyNTQsIDcxODYxLCA5ODM5NTAsIDcyNzk2LCA0MTk4OSwgMTIxMzE3LCAxOTQ4MDYsIDM0MTgsIDMyNjMsIDkxNzkyMiwgCisgICAgNjU2NzIsIDY5MjQzLCAzMjcwLCA2NDUzOSwgMTE0ODksIDkxNzkxMSwgMCwgMCwgNzExMjcsIDk1MDUsIDY1NTE4LCAKKyAgICAxMjg0OTgsIDc1NiwgMTIwNDAwLCAxMjUyNDMsIDk4MzcwMCwgMTk0NjIxLCA3MjYxLCA5MjU0NywgMTg2LCA5ODM3NjksIAorICAgIDcyNzcxLCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAxMjk0OSwgNjQ4NTYsIDEyODAwLCAxMjc1MjksIDc0MjAzLCAKKyAgICA2NDcxOCwgMTE1MDcsIDc4NjczLCA5MjQzNCwgNzQ2MjYsIDExMzc2MCwgMTE1NzgsIDk4MzgzNywgMTE5Mjk2LCAxMjA5NzAsIAorICAgIDEyMTEyNywgMTI1MTAxLCAwLCA3MDA4MywgOTI1NCwgNjY4NzcsIDE3OTQsIDY4MzEwLCA2NDUyMSwgNTYyNCwgNzI3NjYsIAorICAgIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgOTQwNjEsIDY4NjU5LCAxMjAyMTMsIDEyMDIxNCwgCisgICAgMTg3MiwgNjY1MDgsIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAxMTkzMzAsIDQ0NTIsIDEyODA4OCwgOTgzNTYwLCAKKyAgICA5MjUyNiwgNDUxMSwgMTIwOTU4LCA5ODM4NzcsIDY0Njc4LCAxMTQyNSwgMCwgNDMyNDUsIDEyMzEsIDY4ODYxLCA2OTkwMywgCisgICAgOTgzNjQzLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgOTU0NiwgOTgzMjM3LCAxMjgzMzIsIAorICAgIDcwNDIxLCAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5MDU4LCA3ODIwMiwgNjQwNTgsIAorICAgIDg3OTksIDQyMTMxLCAxMjg2NjIsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgMTA1NjcsIDcyMzg0LCA0MzEwMywgCisgICAgMTAwMzUyLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAxMDc1NiwgNjQwNDcsIDQyNjA2LCAKKyAgICA2NDA0NSwgNjQwNDQsIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxMDAzNTYsIDEwMzQsIDMzOTIsIDgzMzM2LCAKKyAgICA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNDM0OTgsIDY0MDM3LCA2NDAzNiwgNjQwMzUsIDQyOTEsIDEyOTE1NywgCisgICAgNjQwMTUsIDY0MDE0LCA2NDY4MSwgODMzOTQsIDgzMzk1LCA3ODE0NSwgNzE4OTgsIDQzMDkwLCA4MzM5MSwgMzQ3NiwgCisgICAgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIAorICAgIDY0MDA5LCAyMDQsIDEwMDg0MSwgNDgwMiwgNDExMSwgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIDY0MDU3LCA3ODg1LCAKKyAgICA3MjQ3LCA2NDA1NCwgOTgzMjY4LCAxMTg5MjEsIDQ3NjcsIDkzNDMsIDY0MDQ5LCA2NDA0OCwgMTIwMDM0LCAxMTMzLCAKKyAgICA2NDA1MywgNjQwNTIsIDQzNDUzLCA2NDA1MCwgNDEzNDAsIDExODk3NSwgODMyNjEsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIAorICAgIDgzMjU5LCA4NDg5LCAxOTQyLCAxMDA4NDMsIDE5NDgzNCwgNDI1MjAsIDY1NTEwLCAxMjUwNDQsIDY4MjkxLCAxMDc2MCwgCisgICAgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDEyNzc5OCwgNjQwMjUsIDkxNjcsIDQyMTUxLCA3ODI0NCwgCisgICAgOTgzMjMyLCAyMDI2LCA2NDAxOSwgNjQwMTgsIDY0MDE3LCA2NDAxNiwgMTI3NjgsIDEwMDUzNywgNzU4MiwgNzgyNTIsIAorICAgIDc4MjQ4LCA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAxMjA3OTEsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIDc3OTIwLCAKKyAgICA3NTMyLCA0MTQxNCwgNzg1MjAsIDMxNzksIDcwNzQ1LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgNzQ0NTQsIAorICAgIDEwNzUxLCA5MDUxLCAxMjA3MjAsIDY3MDgsIDEwNTM1LCAxMTg5NTUsIDY4MjE4LCA1NTI3NCwgMjAwOCwgNjQwMzEsIAorICAgIDY0MDMwLCAyOTQsIDQxODc0LCA4MzM4MywgNjQ3OTAsIDY1OTI5LCA4MzM3NiwgODMzMzcsIDgzMzc5LCA4MzM4MCwgCisgICAgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTAwNDA2LCA5ODM2NTAsIDQzNTEsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIAorICAgIDcwMTUzLCAxMDA3NTMsIDc4NzMzLCA3MjM4NywgMTE5ODg5LCAxMTQzMywgMTAwNTQ0LCAxMTk4OTYsIDE5NDY1NSwgNzgwMSwgCisgICAgNjU1NzgsIDgzMzYxLCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDgzMzU3LCAxMTM1LCA4MzM1MCwgODMzNTEsIDgzMzUyLCAKKyAgICAxOTk1LCA2NzIyLCA5ODM5MjUsIDEyODgxNSwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIDc4NDk2LCAKKyAgICA3MjM4NiwgODMzNzEsIDY2ODIsIDgzMzY1LCA3ODY3OSwgNDM4MzMsIDQxNTQ3LCA5ODM2MzAsIDIwMTMsIDgzMzYyLCAKKyAgICA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAxMTk5MDgsIDkxMzcsIAorICAgIDcxNTUsIDIyNjQsIDkxNzkwMSwgNzg1MzMsIDM0NjYsIDE5NDk4NywgMTIxMDM5LCAxOTk2LCA5ODM2NzUsIDM0NTMsIAorICAgIDM0MTIsIDAsIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCA5Mjk3NiwgNDE3OSwgNjUxMTksIDE5OTgsIDEyMDc0NiwgMTg0MiwgCisgICAgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDM0MTMsIDk4MzI0OCwgMTIwMDAxLCAKKyAgICAxMjAyMDEsIDk4MzY0NiwgMTI0OTc1LCAxMjc5NTIsIDMwNTksIDQ0MDI0LCAxMjAyMDQsIDQzNDkxLCA5MjY5MywgCisgICAgMTAwNTQ3LCAxMjE0NzIsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDQzMTg5LCAwLCAzNTkyLCAxMDA3OCwgCisgICAgMTAwMzk0LCA3ODE2MiwgMTAwODQ2LCA4NTkyLCA2NTg3MCwgNjY0MTcsIDc0NTA0LCAxMDc0MiwgNzI0MDAsIDQyOTE4LCAKKyAgICAxOTk0LCA5MjgxLCAzMjk2LCAxMjg2NSwgMTk5NywgMTg5NSwgCiB9OwogCiAjZGVmaW5lIGNvZGVfbWFnaWMgNDcKZGlmZiAtLWdpdCBhL01vZHVsZXMvd2lucmVwYXJzZS5oIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKaW5kZXggNjZmNzc3NS4uMjgwNDljOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy93aW5yZXBhcnNlLmgKKysrIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKQEAgLTIsNyArMiw3IEBACiAjZGVmaW5lIFB5X1dJTlJFUEFSU0VfSAogCiAjaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0xMCw5ICsxMCwxMCBAQAogCiAvKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSB3YXMgY29waWVkIGZyb20KICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9mZjU1MjAxMi5hc3B4IGFzIHRoZSByZXF1aXJlZAotICAgaW5jbHVkZSBkb2Vzbid0IHNlZW0gdG8gYmUgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCi0gICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuICovCi10eXBlZGVmIHN0cnVjdCBfUkVQQVJTRV9EQVRBX0JVRkZFUiB7CisgICBpbmNsdWRlIGttXG50aWZzLmggaXNuJ3QgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCisgICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuIFVzZSB1bmlxdWUgbmFtZXMgdG8gYXZvaWQgY29uZmxpY3Rpbmcgd2l0aAorICAgdGhlIHN0cnVjdHVyZSBhcyBkZWZpbmVkIGJ5IE1pbiBHVy4gKi8KK3R5cGVkZWYgc3RydWN0IHsKICAgICBVTE9ORyBSZXBhcnNlVGFnOwogICAgIFVTSE9SVCBSZXBhcnNlRGF0YUxlbmd0aDsKICAgICBVU0hPUlQgUmVzZXJ2ZWQ7CkBAIC0zOCwxMSArMzksMTEgQEAKICAgICAgICAgICAgIFVDSEFSICBEYXRhQnVmZmVyWzFdOwogICAgICAgICB9IEdlbmVyaWNSZXBhcnNlQnVmZmVyOwogICAgIH07Ci19IFJFUEFSU0VfREFUQV9CVUZGRVIsICpQUkVQQVJTRV9EQVRBX0JVRkZFUjsKK30gX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIsICpfUHlfUFJFUEFSU0VfREFUQV9CVUZGRVI7CiAKLSNkZWZpbmUgUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSAgRklFTERfT0ZGU0VUKFJFUEFSU0VfREFUQV9CVUZGRVIsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1JlcGFyc2VCdWZmZXIpCi0jZGVmaW5lIE1BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFICAoIDE2ICogMTAyNCApCisjZGVmaW5lIF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFIFwKKyAgICBGSUVMRF9PRkZTRVQoX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIsIEdlbmVyaWNSZXBhcnNlQnVmZmVyKQorI2RlZmluZSBfUHlfTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bGltaXRlZC5jIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwppbmRleCA0MGMxNzYwLi5jMWE5YmU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3h4bGltaXRlZC5jCisrKyBiL01vZHVsZXMveHhsaW1pdGVkLmMKQEAgLTg5LDcgKzg5LDcgQEAKIH0KIAogc3RhdGljIGludAotWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKK1h4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCiB7CiAgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPnhfYXR0ciA9IFB5RGljdF9OZXcoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMveHhtb2R1bGUuYyBiL01vZHVsZXMveHhtb2R1bGUuYwppbmRleCA4NTIzMGQ5Li4wNzY0NDA3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3h4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy94eG1vZHVsZS5jCkBAIC03Niw3ICs3Niw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLVh4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCitYeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWJtb2R1bGUuYyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCmluZGV4IGZjY2I2MTYuLmNmZTdmODggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYm1vZHVsZS5jCisrKyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCkBAIC01Nyw3ICs1Nyw3IEBACiB9IGNvbXBvYmplY3Q7CiAKIHN0YXRpYyB2b2lkCi16bGliX2Vycm9yKHpfc3RyZWFtIHpzdCwgaW50IGVyciwgY2hhciAqbXNnKQoremxpYl9lcnJvcih6X3N0cmVhbSB6c3QsIGludCBlcnIsIGNvbnN0IGNoYXIgKm1zZykKIHsKICAgICBjb25zdCBjaGFyICp6bXNnID0gWl9OVUxMOwogICAgIC8qIEluIGNhc2Ugb2YgYSB2ZXJzaW9uIG1pc21hdGNoLCB6c3QubXNnIHdvbid0IGJlIGluaXRpYWxpemVkLgpAQCAtMTk5LDE4ICsxOTksMTggQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHpsaWIuY29tcHJlc3MKIAotICAgIGJ5dGVzOiBQeV9idWZmZXIKKyAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgQmluYXJ5IGRhdGEgdG8gYmUgY29tcHJlc3NlZC4KLSAgICBsZXZlbDogaW50KGNfZGVmYXVsdD0iWl9ERUZBVUxUX0NPTVBSRVNTSU9OIikgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT04KLSAgICAgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOS4KICAgICAvCisgICAgbGV2ZWw6IGludChjX2RlZmF1bHQ9IlpfREVGQVVMVF9DT01QUkVTU0lPTiIpID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OCisgICAgICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkgb3IgLTEuCiAKIFJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpieXRlcywgaW50IGxldmVsKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFlNjRjMmMzMDc2MzIxYTAgaW5wdXQ9YmUzYWJlOTkzNGJkYTRiM10qLworemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IGxldmVsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4MDkwNmQ3M2Y2Mjk0YzggaW5wdXQ9NjM4ZDU0YjYzMTVkYmVkM10qLwogewogICAgIFB5T2JqZWN0ICpSZXRWYWwgPSBOVUxMOwogICAgIEJ5dGUgKmlidWY7CkBAIC0yMTgsOCArMjE4LDggQEAKICAgICBpbnQgZXJyLCBmbHVzaDsKICAgICB6X3N0cmVhbSB6c3Q7CiAKLSAgICBpYnVmID0gYnl0ZXMtPmJ1ZjsKLSAgICBpYnVmbGVuID0gYnl0ZXMtPmxlbjsKKyAgICBpYnVmID0gZGF0YS0+YnVmOworICAgIGlidWZsZW4gPSBkYXRhLT5sZW47CiAKICAgICB6c3Qub3BhcXVlID0gTlVMTDsKICAgICB6c3QuemFsbG9jID0gUHlabGliX01hbGxvYzsKQEAgLTMxOCwxMSArMzE4LDExIEBACiAKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgQ29tcHJlc3NlZCBkYXRhLgorICAgIC8KICAgICB3Yml0czogaW50KGNfZGVmYXVsdD0iTUFYX1dCSVRTIikgPSBNQVhfV0JJVFMKICAgICAgICAgVGhlIHdpbmRvdyBidWZmZXIgc2l6ZSBhbmQgY29udGFpbmVyIGZvcm1hdC4KICAgICBidWZzaXplOiBzc2l6ZV90KGNfZGVmYXVsdD0iREVGX0JVRl9TSVpFIikgPSBERUZfQlVGX1NJWkUKICAgICAgICAgVGhlIGluaXRpYWwgb3V0cHV0IGJ1ZmZlciBzaXplLgotICAgIC8KIAogUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTMzMCw3ICszMzAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZzaXplKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3YzdlMzUxMTFkYzhjNDIgaW5wdXQ9YzEzZGQyYzU2OTZjZDE3Zl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3YzdlMzUxMTFkYzhjNDIgaW5wdXQ9MjE5NjA5MzYyMDhlOWE1Yl0qLwogewogICAgIFB5T2JqZWN0ICpSZXRWYWwgPSBOVUxMOwogICAgIEJ5dGUgKmlidWY7CkBAIC03MjEsOSArNzIxLDkgQEAKICAgICAgICAgICAgIG5ld19kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuZXdfc2l6ZSk7CiAgICAgICAgICAgICBpZiAobmV3X2RhdGEgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpLAorICAgICAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSwKICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT51bnVzZWRfZGF0YSksIG9sZF9zaXplKTsKLSAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSkgKyBvbGRfc2l6ZSwKKyAgICAgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSkgKyBvbGRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT56c3QubmV4dF9pbiwgbGVmdF9zaXplKTsKICAgICAgICAgICAgIFB5X1NFVFJFRihzZWxmLT51bnVzZWRfZGF0YSwgbmV3X2RhdGEpOwogICAgICAgICAgICAgc2VsZi0+enN0LmF2YWlsX2luID0gMDsKQEAgLTc1MCwxMSArNzUwLDExIEBACiAKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgVGhlIGJpbmFyeSBkYXRhIHRvIGRlY29tcHJlc3MuCisgICAgLwogICAgIG1heF9sZW5ndGg6IHNzaXplX3QgPSAwCiAgICAgICAgIFRoZSBtYXhpbXVtIGFsbG93YWJsZSBsZW5ndGggb2YgdGhlIGRlY29tcHJlc3NlZCBkYXRhLgogICAgICAgICBVbmNvbnN1bWVkIGlucHV0IGRhdGEgd2lsbCBiZSBzdG9yZWQgaW4KICAgICAgICAgdGhlIHVuY29uc3VtZWRfdGFpbCBhdHRyaWJ1dGUuCi0gICAgLwogCiBSZXR1cm4gYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIHZlcnNpb24gb2YgdGhlIGRhdGEuCiAKQEAgLTc2Niw3ICs3NjYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1MTczYzc0ZTcxMDM1MiBpbnB1dD1kNmRlOWI1M2M0NTY2YjhhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1MTczYzc0ZTcxMDM1MiBpbnB1dD1iODVhMjEyYTAxMmI3NzBhXSovCiB7CiAgICAgaW50IGVyciA9IFpfT0s7CiAgICAgUHlfc3NpemVfdCBpYnVmbGVuLCBvYnVmbGVuID0gREVGX0JVRl9TSVpFLCBoYXJkX2xpbWl0OwpAQCAtMTMzMyw3ICsxMzMzLDcgQEAKICJ6bGliIGxpYnJhcnksIHdoaWNoIGlzIGJhc2VkIG9uIEdOVSB6aXAuXG4iCiAiXG4iCiAiYWRsZXIzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYW4gQWRsZXItMzIgY2hlY2tzdW0uXG4iCi0iY29tcHJlc3Moc3RyaW5nWywgbGV2ZWxdKSAtLSBDb21wcmVzcyBzdHJpbmcsIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgaW4gMC05LlxuIgorImNvbXByZXNzKGRhdGFbLCBsZXZlbF0pIC0tIENvbXByZXNzIGRhdGEsIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgMC05IG9yIC0xLlxuIgogImNvbXByZXNzb2JqKFtsZXZlbFssIC4uLl1dKSAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKICJjcmMzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYSBDUkMtMzIgY2hlY2tzdW0uXG4iCiAiZGVjb21wcmVzcyhzdHJpbmcsW3diaXRzXSxbYnVmc2l6ZV0pIC0tIERlY29tcHJlc3NlcyBhIGNvbXByZXNzZWQgc3RyaW5nLlxuIgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9hYnN0cmFjdC5jIGIvT2JqZWN0cy9hYnN0cmFjdC5jCmluZGV4IDg4MjA1YmQuLjM2ZjIyNDIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYWJzdHJhY3QuYworKysgYi9PYmplY3RzL2Fic3RyYWN0LmMKQEAgLTMyLDggKzMyLDEwIEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICB2ID0gKFB5T2JqZWN0ICopby0+b2JfdHlwZTsKICAgICBQeV9JTkNSRUYodik7CiAgICAgcmV0dXJuIHY7CkBAIC0xMzcsMTIgKzEzOSwxNiBAQAogewogICAgIFB5TWFwcGluZ01ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IGtleSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwga2V5ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZzsKLSAgICBpZiAobSAmJiBtLT5tcF9zdWJzY3JpcHQpCi0gICAgICAgIHJldHVybiBtLT5tcF9zdWJzY3JpcHQobywga2V5KTsKKyAgICBpZiAobSAmJiBtLT5tcF9zdWJzY3JpcHQpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBtLT5tcF9zdWJzY3JpcHQobywga2V5KTsKKyAgICAgICAgYXNzZXJ0KChpdGVtICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOworICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CiAKICAgICBpZiAoby0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2UpIHsKICAgICAgICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgewpAQCAtNjY5LDEzICs2NzUsMzEgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBfUHlfSURFTlRJRklFUihfX2Zvcm1hdF9fKTsKIAorICAgIGlmIChmb3JtYXRfc3BlYyAhPSBOVUxMICYmICFQeVVuaWNvZGVfQ2hlY2soZm9ybWF0X3NwZWMpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGb3JtYXQgc3BlY2lmaWVyIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShmb3JtYXRfc3BlYyktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBGYXN0IHBhdGggZm9yIGNvbW1vbiB0eXBlcy4gKi8KKyAgICBpZiAoZm9ybWF0X3NwZWMgPT0gTlVMTCB8fCBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAgICB9CisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKG9iaik7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBJZiBubyBmb3JtYXRfc3BlYyBpcyBwcm92aWRlZCwgdXNlIGFuIGVtcHR5IHN0cmluZyAqLwogICAgIGlmIChmb3JtYXRfc3BlYyA9PSBOVUxMKSB7CiAgICAgICAgIGVtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgZm9ybWF0X3NwZWMgPSBlbXB0eTsKICAgICB9CiAKLSAgICAvKiBGaW5kIHRoZSAodW5ib3VuZCEpIF9fZm9ybWF0X18gbWV0aG9kIChhIGJvcnJvd2VkIHJlZmVyZW5jZSkgKi8KKyAgICAvKiBGaW5kIHRoZSAodW5ib3VuZCEpIF9fZm9ybWF0X18gbWV0aG9kICovCiAgICAgbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgJlB5SWRfX19mb3JtYXRfXyk7CiAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCkBAIC0xMTIyLDggKzExNDYsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX25lZ2F0aXZlKQogICAgICAgICByZXR1cm4gKCptLT5uYl9uZWdhdGl2ZSkobyk7CkBAIC0xMTM2LDggKzExNjIsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX3Bvc2l0aXZlKQogICAgICAgICByZXR1cm4gKCptLT5uYl9wb3NpdGl2ZSkobyk7CkBAIC0xMTUwLDggKzExNzgsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2ludmVydCkKICAgICAgICAgcmV0dXJuICgqbS0+bmJfaW52ZXJ0KShvKTsKQEAgLTExNjQsOCArMTE5NCwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfYWJzb2x1dGUpCiAgICAgICAgIHJldHVybiBtLT5uYl9hYnNvbHV0ZShvKTsKQEAgLTExODEsOCArMTIxMywxMCBAQAogUHlOdW1iZXJfSW5kZXgoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaWYgKGl0ZW0gPT0gTlVMTCkKKyAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgaWYgKFB5TG9uZ19DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgICAgIHJldHVybiBpdGVtOwpAQCAtMTI2NSw0MiArMTI5OSw1NSBAQAogUHlPYmplY3QgKgogUHlOdW1iZXJfTG9uZyhQeU9iamVjdCAqbykKIHsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKICAgICBQeU9iamVjdCAqdHJ1bmNfZnVuYzsKICAgICBQeV9idWZmZXIgdmlldzsKICAgICBfUHlfSURFTlRJRklFUihfX3RydW5jX18pOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG8pKSB7CiAgICAgICAgIFB5X0lOQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIG87CiAgICAgfQogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfaW50KSB7IC8qIFRoaXMgc2hvdWxkIGluY2x1ZGUgc3ViY2xhc3NlcyBvZiBpbnQgKi8KLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KG8pOworICAgICAgICByZXN1bHQgPSAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChvKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmICFQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIHRydW5jX2Z1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX3RydW5jX18pOwogICAgIGlmICh0cnVuY19mdW5jKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0cnVuY2F0ZWQgPSBQeUV2YWxfQ2FsbE9iamVjdCh0cnVuY19mdW5jLCBOVUxMKTsKLSAgICAgICAgUHlPYmplY3QgKmludF9pbnN0YW5jZTsKKyAgICAgICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QodHJ1bmNfZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRih0cnVuY19mdW5jKTsKLSAgICAgICAgaWYgKHRydW5jYXRlZCA9PSBOVUxMIHx8IFB5TG9uZ19DaGVjayh0cnVuY2F0ZWQpKQotICAgICAgICAgICAgcmV0dXJuIHRydW5jYXRlZDsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IFB5TG9uZ19DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogICAgICAgICAvKiBfX3RydW5jX18gaXMgc3BlY2lmaWVkIHRvIHJldHVybiBhbiBJbnRlZ3JhbCB0eXBlLAogICAgICAgICAgICBidXQgaW50KCkgbmVlZHMgdG8gcmV0dXJuIGFuIGludC4gKi8KLSAgICAgICAgbSA9IHRydW5jYXRlZC0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOworICAgICAgICBtID0gcmVzdWx0LT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgICAgIGlmIChtID09IE5VTEwgfHwgbS0+bmJfaW50ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgIl9fdHJ1bmNfXyByZXR1cm5lZCBub24tSW50ZWdyYWwgKHR5cGUgJS4yMDBzKSIsCi0gICAgICAgICAgICAgICAgdHJ1bmNhdGVkLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0cnVuY2F0ZWQpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGludF9pbnN0YW5jZSA9IChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KHRydW5jYXRlZCk7Ci0gICAgICAgIFB5X0RFQ1JFRih0cnVuY2F0ZWQpOwotICAgICAgICByZXR1cm4gaW50X2luc3RhbmNlOworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChyZXN1bHQpKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmICFQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMjIsNyArMTM2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShvKSwgMTApOwogCiAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvLCAmdmlldywgUHlCVUZfU0lNUExFKSA9PSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQsICpieXRlczsKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzOwogCiAgICAgICAgIC8qIENvcHkgdG8gTlVMLXRlcm1pbmF0ZWQgYnVmZmVyLiAqLwogICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKil2aWV3LmJ1Ziwgdmlldy5sZW4pOwpAQCAtMTM0NiwyMyArMTM5Myw0MyBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKworICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QobykpIHsKKyAgICAgICAgUHlfSU5DUkVGKG8pOworICAgICAgICByZXR1cm4gbzsKKyAgICB9CiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9mbG9hdCkgeyAvKiBUaGlzIHNob3VsZCBpbmNsdWRlIHN1YmNsYXNzZXMgb2YgZmxvYXQgKi8KICAgICAgICAgUHlPYmplY3QgKnJlcyA9IG0tPm5iX2Zsb2F0KG8pOwotICAgICAgICBpZiAocmVzICYmICFQeUZsb2F0X0NoZWNrKHJlcykpIHsKKyAgICAgICAgZG91YmxlIHZhbDsKKyAgICAgICAgaWYgKCFyZXMgfHwgUHlGbG9hdF9DaGVja0V4YWN0KHJlcykpIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUZsb2F0X0NoZWNrKHJlcykpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICJfX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuMjAwcykiLAotICAgICAgICAgICAgICByZXMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgby0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgLyogSXNzdWUgIzI2OTgzOiB3YXJuIGlmICdyZXMnIG5vdCBvZiBleGFjdCB0eXBlIGZsb2F0LiAqLworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpLiAgIgorICAgICAgICAgICAgICAgICJUaGUgYWJpbGl0eSB0byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQgIgorICAgICAgICAgICAgICAgICJpcyBkZXByZWNhdGVkLCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uIiwKKyAgICAgICAgICAgICAgICBvLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHZhbCA9IFB5RmxvYXRfQVNfRE9VQkxFKHJlcyk7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHZhbCk7CiAgICAgfQogICAgIGlmIChQeUZsb2F0X0NoZWNrKG8pKSB7IC8qIEEgZmxvYXQgc3ViY2xhc3Mgd2l0aCBuYl9mbG9hdCA9PSBOVUxMICovCi0gICAgICAgIFB5RmxvYXRPYmplY3QgKnBvID0gKFB5RmxvYXRPYmplY3QgKilvOwotICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHBvLT5vYl9mdmFsKTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShQeUZsb2F0X0FTX0RPVUJMRShvKSk7CiAgICAgfQogICAgIHJldHVybiBQeUZsb2F0X0Zyb21TdHJpbmcobyk7CiB9CkBAIC0xNDMwLDggKzE0OTcsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfY29uY2F0KQpAQCAtMTQ1NCw4ICsxNTIyLDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9yZXBlYXQpCkBAIC0xNDgzLDggKzE1NTIsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfaW5wbGFjZV9jb25jYXQpCkBAIC0xNTA3LDggKzE1NzcsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2lucGxhY2VfcmVwZWF0KQpAQCAtMTUzNiwxNiArMTYwNywxOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCkKKyAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IHMtPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2l0ZW0pIHsKICAgICAgICAgaWYgKGkgPCAwKSB7CiAgICAgICAgICAgICBpZiAobS0+c3FfbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsID0gKCptLT5zcV9sZW5ndGgpKHMpOwotICAgICAgICAgICAgICAgIGlmIChsIDwgMCkKKyAgICAgICAgICAgICAgICBpZiAobCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaSArPSBsOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTYwLDcgKzE2MzQsOSBAQAogewogICAgIFB5TWFwcGluZ01ldGhvZHMgKm1wOwogCi0gICAgaWYgKCFzKSByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIGlmICghcykgeworICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG1wID0gcy0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZzsKICAgICBpZiAobXAgJiYgbXAtPm1wX3N1YnNjcmlwdCkgewpAQCAtMTY4Nyw4ICsxNzYzLDkgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGo7CiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsLWNhc2UgdGhlIGNvbW1vbiB0dXBsZSBhbmQgbGlzdCBjYXNlcywgZm9yIGVmZmljaWVuY3kuICovCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh2KSkgewpAQCAtMTc2OCw4ICsxODQ1LDkgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OyAgLyogcmVzdWx0IGxpc3QgKi8KICAgICBQeU9iamVjdCAqcnY7ICAgICAgICAgIC8qIHJldHVybiB2YWx1ZSBmcm9tIFB5TGlzdF9FeHRlbmQgKi8KIAotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTc4OSw4ICsxODY3LDkgQEAKIHsKICAgICBQeU9iamVjdCAqaXQ7CiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QodikgfHwgUHlUdXBsZV9DaGVja0V4YWN0KHYpKSB7CiAgICAgICAgIFB5X0lOQ1JFRih2KTsKQEAgLTE5NzMsOCArMjA1Miw5IEBACiB7CiAgICAgUHlPYmplY3QgKm9rZXksICpyOwogCi0gICAgaWYgKGtleSA9PSBOVUxMKQorICAgIGlmIChrZXkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG9rZXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhrZXkpOwogICAgIGlmIChva2V5ID09IE5VTEwpCkBAIC0yMTQzLDcgKzIyMjMsNyBAQAogfQogCiBQeU9iamVjdCAqCi1QeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICB0ZXJuYXJ5ZnVuYyBjYWxsOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CkBAIC0yMTUyLDYgKzIyMzIsOCBAQAogICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCiAgICAgICAgY2FsbGVyIGxvc2VzIGl0cyBleGNlcHRpb24gKi8KICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOwogCiAgICAgY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGw7CiAgICAgaWYgKGNhbGwgPT0gTlVMTCkgewpAQCAtMjE2MywxMDggKzIyNDUsMzQzIEBACiAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGNhbGxpbmcgYSBQeXRob24gb2JqZWN0IikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmcsIGt3KTsKKyAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIGFyZ3MsIGt3YXJncyk7CiAKICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKIAogICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCByZXN1bHQsIE5VTEwpOwogfQogCitQeU9iamVjdCoKK19QeVN0YWNrX0FzVHVwbGUoUHlPYmplY3QgKipzdGFjaywgUHlfc3NpemVfdCBuYXJncykKK3sKKyAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhcmdzID0gUHlUdXBsZV9OZXcobmFyZ3MpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuYXJnczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gc3RhY2tbaV07CisgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBpLCBpdGVtKTsKKyAgICB9CisKKyAgICByZXR1cm4gYXJnczsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHRlcm5hcnlmdW5jIGNhbGw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICAvKiBfUHlPYmplY3RfRmFzdENhbGxEaWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQobmFyZ3MgPT0gMCB8fCBhcmdzICE9IE5VTEwpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CisKKyAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgY2FsbGluZyBhIFB5dGhvbiBvYmplY3QiKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXN1bHQgPSBfUHlGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgYXJncywgbmFyZ3MsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJlc3VsdCA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgYXJncywgbmFyZ3MsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdHVwbGU7CisKKyAgICAgICAgLyogU2xvdy1wYXRoOiBidWlsZCBhIHRlbXBvcmFyeSB0dXBsZSAqLworICAgICAgICBjYWxsID0gZnVuYy0+b2JfdHlwZS0+dHBfY2FsbDsKKyAgICAgICAgaWYgKGNhbGwgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgY2FsbGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgdHVwbGUgPSBfUHlTdGFja19Bc1R1cGxlKGFyZ3MsIG5hcmdzKTsKKyAgICAgICAgaWYgKHR1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgdHVwbGUsIGt3YXJncyk7CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzdWx0LCBOVUxMKTsKKyAgICB9CisKK2V4aXQ6CisgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBQb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgb2JqIGZvbGxvd2VkIGFyZ3MuICovCitQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbOF07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IGFyZ2NvdW50OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CisKKyAgICBhcmdjb3VudCA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgaWYgKGFyZ2NvdW50ICsgMSA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spKSB7CisgICAgICAgIHN0YWNrID0gc21hbGxfc3RhY2s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IFB5TWVtX01hbGxvYygoYXJnY291bnQgKyAxKSAqIHNpemVvZihQeU9iamVjdCAqKSk7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiB1c2UgYm9ycm93ZWQgcmVmZXJlbmNlcyAqLworICAgIHN0YWNrWzBdID0gb2JqOworICAgIG1lbWNweSgmc3RhY2tbMV0sCisgICAgICAgICAgICAgICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApLAorICAgICAgICAgICAgICBhcmdjb3VudCAqIHNpemVvZihQeU9iamVjdCAqKSk7CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjaywgYXJnY291bnQgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK19QeVN0YWNrX0FzRGljdChQeU9iamVjdCAqKnZhbHVlcywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBQeU9iamVjdCAqa3dkaWN0OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG5rd2FyZ3M7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gKnZhbHVlcysrOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSk7CisgICAgICAgIGFzc2VydChQeURpY3RfR2V0SXRlbShrd2RpY3QsIGtleSkgPT0gTlVMTCk7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShrd2RpY3QsIGtleSwgdmFsdWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBrd2RpY3Q7Cit9CisKK1B5T2JqZWN0ICoqCitfUHlTdGFja19VbnBhY2tEaWN0KFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3YXJncywKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX2t3bmFtZXMsIFB5T2JqZWN0ICpmdW5jKQoreworICAgIFB5T2JqZWN0ICoqc3RhY2ssICoqa3dzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3M7CisgICAgUHlfc3NpemVfdCBwb3MsIGk7CisgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOworICAgIFB5T2JqZWN0ICprd25hbWVzOworCisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2tFeGFjdChrd2FyZ3MpKTsKKworICAgIG5rd2FyZ3MgPSAoa3dhcmdzICE9IE5VTEwpID8gUHlEaWN0X1NpemUoa3dhcmdzKSA6IDA7CisgICAgaWYgKCFua3dhcmdzKSB7CisgICAgICAgICpwX2t3bmFtZXMgPSBOVUxMOworICAgICAgICByZXR1cm4gYXJnczsKKyAgICB9CisKKyAgICBpZiAoKHNpemVfdCluYXJncyA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHN0YWNrWzBdKSAtIChzaXplX3Qpbmt3YXJncykgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzdGFjayA9IFB5TWVtX01hbGxvYygobmFyZ3MgKyBua3dhcmdzKSAqIHNpemVvZihzdGFja1swXSkpOworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGt3bmFtZXMgPSBQeVR1cGxlX05ldyhua3dhcmdzKTsKKyAgICBpZiAoa3duYW1lcyA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDb3B5IHBvc2l0aW9uIGFyZ3VtZW50cyAoYm9ycm93ZWQgcmVmZXJlbmNlcykgKi8KKyAgICBtZW1jcHkoc3RhY2ssIGFyZ3MsIG5hcmdzICogc2l6ZW9mKHN0YWNrWzBdKSk7CisKKyAgICBrd3N0YWNrID0gc3RhY2sgKyBuYXJnczsKKyAgICBwb3MgPSBpID0gMDsKKyAgICAvKiBUaGlzIGxvb3AgZG9lc24ndCBzdXBwb3J0IGxvb2t1cCBmdW5jdGlvbiBtdXRhdGluZyB0aGUgZGljdGlvbmFyeQorICAgICAgIHRvIGNoYW5nZSBpdHMgc2l6ZS4gSXQncyBhIGRlbGliZXJhdGUgY2hvaWNlIGZvciBzcGVlZCwgdGhpcyBmdW5jdGlvbiBpcworICAgICAgIGNhbGxlZCBpbiB0aGUgcGVyZm9ybWFuY2UgY3JpdGljYWwgaG90IGNvZGUuICovCisgICAgd2hpbGUgKFB5RGljdF9OZXh0KGt3YXJncywgJnBvcywgJmtleSwgJnZhbHVlKSkgeworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrd25hbWVzLCBpLCBrZXkpOworICAgICAgICAvKiBUaGUgc3RhY2sgY29udGFpbnMgYm9ycm93ZWQgcmVmZXJlbmNlcyAqLworICAgICAgICBrd3N0YWNrW2ldID0gdmFsdWU7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAqcF9rd25hbWVzID0ga3duYW1lczsKKyAgICByZXR1cm4gc3RhY2s7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKmt3ZGljdCwgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworCisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlOiB0aGVzZSBhcmUgaW1wbGVtZW50ZWQgaW4gUHl0aG9uL2NldmFsLmMgYW5kCisgICAgICAgX1B5QXJnX1BhcnNlU3RhY2soKS4gKi8KKworICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgfQorCisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJldHVybiBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgIH0KKworICAgIGlmIChua3dhcmdzID4gMCkgeworICAgICAgICBrd2RpY3QgPSBfUHlTdGFja19Bc0RpY3Qoc3RhY2sgKyBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZGljdCk7CisgICAgUHlfWERFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCoKIGNhbGxfZnVuY3Rpb25fdGFpbChQeU9iamVjdCAqY2FsbGFibGUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXR2YWw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChhcmdzICE9IE5VTEwpOwogCiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphOwotCi0gICAgICAgIGEgPSBQeVR1cGxlX05ldygxKTsKLSAgICAgICAgaWYgKGEgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhLCAwLCBhcmdzKTsKLSAgICAgICAgYXJncyA9IGE7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMShjYWxsYWJsZSwgYXJncyk7CiAgICAgfQotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOworICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKKyAgICB9CiAKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeU9iamVjdCAqY2FsbGFibGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwotICAgICAgICB2YV9lbmQodmEpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGNhbGxhYmxlKTsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOworICAgIHZhX2VuZCh2YSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUKFB5T2JqZWN0ICpjYWxsYWJsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqYXJncywgKnJlc3VsdDsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKLSAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7Ci0gICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOwotICAgICAgICB2YV9lbmQodmEpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKIAotICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGNhbGxhYmxlKTsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKKyAgICB2YV9lbmQodmEpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgogY2FsbG1ldGhvZChQeU9iamVjdCogZnVuYywgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhLCBpbnQgaXNfc2l6ZV90KQogewotICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OworCisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CiAKICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZnVuYykpIHsKICAgICAgICAgdHlwZV9lcnJvcigiYXR0cmlidXRlIG9mIHR5cGUgJyUuMjAwcycgaXMgbm90IGNhbGxhYmxlIiwgZnVuYyk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIGlmIChpc19zaXplX3QpCi0gICAgICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKKyAgICBpZiAoIWZvcm1hdCB8fCAhKmZvcm1hdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAKLSAgICByZXR2YWwgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7CisgICAgaWYgKGlzX3NpemVfdCkgeworICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7CisgICAgfQorICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gIGV4aXQ6Ci0gICAgLyogYXJncyBnZXRzIGNvbnN1bWVkIGluIGNhbGxfZnVuY3Rpb25fdGFpbCAqLwotICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJlc3VsdCA9IGNhbGxfZnVuY3Rpb25fdGFpbChmdW5jLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgpAQCAtMjI3NCw4ICsyNTkxLDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMjg0LDYgKzI2MDIsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMCk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjI5NSw4ICsyNjE0LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMzA1LDYgKzI2MjUsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMCk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjMxNiw4ICsyNjM3LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKQEAgLTIzMjUsNiArMjY0Nyw3IEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yMzM2LDggKzI2NTksOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CkBAIC0yMzQ2LDM5ICsyNjcwLDYxIEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotb2JqYXJnc19ta3R1cGxlKHZhX2xpc3QgdmEpCitzdGF0aWMgUHlPYmplY3QgKioKK29iamFyZ3NfbWtzdGFjayhQeU9iamVjdCAqKnNtYWxsX3N0YWNrLCBQeV9zc2l6ZV90IHNtYWxsX3N0YWNrX3NpemUsCisgICAgICAgICAgICAgICAgdmFfbGlzdCB2YSwgUHlfc3NpemVfdCAqcF9uYXJncykKIHsKLSAgICBpbnQgaSwgbiA9IDA7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIHZhX2xpc3QgY291bnR2YTsKLSAgICBQeU9iamVjdCAqcmVzdWx0LCAqdG1wOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CiAKLSAgICAgICAgUHlfVkFfQ09QWShjb3VudHZhLCB2YSk7CisgICAgLyogQ291bnQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgKi8KKyAgICBQeV9WQV9DT1BZKGNvdW50dmEsIHZhKTsKIAotICAgIHdoaWxlICgoKFB5T2JqZWN0ICopdmFfYXJnKGNvdW50dmEsIFB5T2JqZWN0ICopKSAhPSBOVUxMKQotICAgICAgICArK247Ci0gICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobik7Ci0gICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIG4gPiAwKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgICAgIHRtcCA9IChQeU9iamVjdCAqKXZhX2FyZyh2YSwgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgdG1wKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgIG4gPSAwOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFB5T2JqZWN0ICphcmcgPSAoUHlPYmplY3QgKil2YV9hcmcoY291bnR2YSwgUHlPYmplY3QgKik7CisgICAgICAgIGlmIChhcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbisrOworICAgIH0KKyAgICAqcF9uYXJncyA9IG47CisKKyAgICAvKiBDb3B5IGFyZ3VtZW50cyAqLworICAgIGlmIChuIDw9IHNtYWxsX3N0YWNrX3NpemUpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKG4gKiBzaXplb2Yoc3RhY2tbMF0pKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBzdGFja1tpXSA9IHZhX2FyZyh2YSwgUHlPYmplY3QgKik7CisgICAgfQorICAgIHJldHVybiBzdGFjazsKIH0KIAogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLCBQeU9iamVjdCAqbmFtZSwgLi4uKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICB2YV9saXN0IHZhcmdzOwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGNhbGxhYmxlID0gUHlPYmplY3RfR2V0QXR0cihjYWxsYWJsZSwgbmFtZSk7CiAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCkBAIC0yMzg2LDI4ICsyNzMyLDM2IEBACiAKICAgICAvKiBjb3VudCB0aGUgYXJncyAqLwogICAgIHZhX3N0YXJ0KHZhcmdzLCBuYW1lKTsKLSAgICBhcmdzID0gb2JqYXJnc19ta3R1cGxlKHZhcmdzKTsKKyAgICBzdGFjayA9IG9iamFyZ3NfbWtzdGFjayhzbWFsbF9zdGFjaywgUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJncywgJm5hcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAKLSAgICByZXR1cm4gdG1wOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYWJsZSwgc3RhY2ssIG5hcmdzKTsKKyAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSwgLi4uKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICB2YV9saXN0IHZhcmdzOwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGNhbGxhYmxlID0gX1B5T2JqZWN0X0dldEF0dHJJZChjYWxsYWJsZSwgbmFtZSk7CiAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCkBAIC0yNDE1LDM4ICsyNzY5LDUxIEBACiAKICAgICAvKiBjb3VudCB0aGUgYXJncyAqLwogICAgIHZhX3N0YXJ0KHZhcmdzLCBuYW1lKTsKLSAgICBhcmdzID0gb2JqYXJnc19ta3R1cGxlKHZhcmdzKTsKKyAgICBzdGFjayA9IG9iamFyZ3NfbWtzdGFjayhzbWFsbF9zdGFjaywgUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJncywgJm5hcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAKLSAgICByZXR1cm4gdG1wOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYWJsZSwgc3RhY2ssIG5hcmdzKTsKKyAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgLi4uKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICB2YV9saXN0IHZhcmdzOwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICAvKiBjb3VudCB0aGUgYXJncyAqLwogICAgIHZhX3N0YXJ0KHZhcmdzLCBjYWxsYWJsZSk7Ci0gICAgYXJncyA9IG9iamFyZ3NfbWt0dXBsZSh2YXJncyk7CisgICAgc3RhY2sgPSBvYmphcmdzX21rc3RhY2soc21hbGxfc3RhY2ssIFB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZ3MsICZuYXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CiAKLSAgICByZXR1cm4gdG1wOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYWJsZSwgc3RhY2ssIG5hcmdzKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwppbmRleCA2ZDRjNmExLi5jNmQwNzA3IDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKQEAgLTI3OCwzMSArMjc4LDYgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zvcm1hdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKmJ5dGVzX2luLCAqYnl0ZXNfb3V0LCAqcmVzOwotICAgIGNoYXIgKmJ5dGVzdHJpbmc7Ci0KLSAgICBpZiAoc2VsZiA9PSBOVUxMIHx8ICFQeUJ5dGVBcnJheV9DaGVjayhzZWxmKSB8fCBhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBieXRlc3RyaW5nID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIGJ5dGVzX2luID0gUHlCeXRlc19Gcm9tU3RyaW5nKGJ5dGVzdHJpbmcpOwotICAgIGlmIChieXRlc19pbiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBieXRlc19vdXQgPSBfUHlCeXRlc19Gb3JtYXQoYnl0ZXNfaW4sIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihieXRlc19pbik7Ci0gICAgaWYgKGJ5dGVzX291dCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0KGJ5dGVzX291dCk7Ci0gICAgUHlfREVDUkVGKGJ5dGVzX291dCk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gcmVzOwotfQotCiAvKiBGdW5jdGlvbnMgc3R1ZmZlZCBpbnRvIHRoZSB0eXBlIG9iamVjdCAqLwogCiBzdGF0aWMgUHlfc3NpemVfdApAQCAtODIwLDE3ICs3OTUsMTUgQEAKICAgICB9CiAKICAgICAvKiBJcyBpdCBhbiBpbnQ/ICovCi0gICAgY291bnQgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKLSAgICBpZiAoY291bnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICBpZiAoUHlJbmRleF9DaGVjayhhcmcpKSB7CisgICAgICAgIGNvdW50ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgICAgIGlmIChjb3VudCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGNvdW50IDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50IDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgICAgIGlmIChjb3VudCA+IDApIHsKICAgICAgICAgICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgY291bnQpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTExMTksMTYxICsxMDkyLDI3IEBACiAjaW5jbHVkZSAic3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIgogCiAKLS8qIFRoZSBmb2xsb3dpbmcgUHlfTE9DQUxfSU5MSU5FIGFuZCBQeV9MT0NBTCBmdW5jdGlvbnMKLXdlcmUgY29waWVkIGZyb20gdGhlIG9sZCBjaGFyKiBzdHlsZSBzdHJpbmcgb2JqZWN0LiAqLwotCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1ieXRlYXJyYXlfZmluZF9pbnRlcm5hbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCi17Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfYnVmZmVyIHN1YmJ1ZjsKLSAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBsZW4sIHN1Yl9sZW47Ci0gICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiAtMjsKLQotICAgIGlmIChzdWJvYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZzdWJidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMjsKLQotICAgICAgICBzdWIgPSBzdWJidWYuYnVmOwotICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0gICAgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOwotICAgIGlmIChlbmQgLSBzdGFydCA8IHN1Yl9sZW4pCi0gICAgICAgIHJlcyA9IC0xOwotICAgIGVsc2UgaWYgKHN1Yl9sZW4gPT0gMQotI2lmbmRlZiBIQVZFX01FTVJDSFIKLSAgICAgICAgICAgICYmIGRpciA+IDAKLSNlbmRpZgotICAgICkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9ICpzdWI7Ci0gICAgICAgIGludCBtb2RlID0gKGRpciA+IDApID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7Ci0gICAgICAgIHJlcyA9IHN0cmluZ2xpYl9mYXN0c2VhcmNoX21lbWNocl8xY2hhcigKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKLSAgICAgICAgICAgIG5lZWRsZSwgbmVlZGxlLCBtb2RlKTsKLSAgICAgICAgaWYgKHJlcyA+PSAwKQotICAgICAgICAgICAgcmVzICs9IHN0YXJ0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGRpciA+IDApCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCi0gICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICB9Ci0KLSAgICBpZiAoc3Vib2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotUHlEb2NfU1RSVkFSKGZpbmRfX2RvY19fLAotIkIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9maW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19maW5kKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi1QeURvY19TVFJWQVIoY291bnRfX2RvY19fLAotIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uIHN1YiBpblxuXAotYnl0ZXMgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCi1hcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9jb3VudChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnN1Yl9vYmo7Ci0gICAgY29uc3QgY2hhciAqc3RyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwotICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotCi0gICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmNvdW50X29iajsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHN1Yl9vYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJfb2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgc3ViID0gdnN1Yi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSB2c3ViLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7Ci0KLSAgICBjb3VudF9vYmogPSBQeUxvbmdfRnJvbVNzaXplX3QoCi0gICAgICAgIHN0cmluZ2xpYl9jb3VudChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgUFlfU1NJWkVfVF9NQVgpCi0gICAgICAgICk7Ci0KLSAgICBpZiAoc3ViX29iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7Ci0KLSAgICByZXR1cm4gY291bnRfb2JqOworICAgIHJldHVybiBfUHlfYnl0ZXNfY291bnQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5jbGVhcgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBieXRlYXJyYXkuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfY2xlYXJfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWMyZmU2YWVkZTA5NTZjIGlucHV0PWU1MjRmZDMzMGFiY2RjMThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWMyZmU2YWVkZTA5NTZjIGlucHV0PWVkNmVkYWU5ZGU0NDdhYzRdKi8KIHsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIDApIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjgzLDI1MyArMTEyMiw3MiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmNvcHkKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldHVybiBhIGNvcHkgb2YgQi4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9jb3B5X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjhjZmJjZmVkNDg0YzEzMiBpbnB1dD02ZDVkMjk3NWFhMGYzM2YzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjhjZmJjZmVkNDg0YzEzMiBpbnB1dD02NTk3YjBjMDFiY2NhYTllXSovCiB7CiAgICAgcmV0dXJuIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORygoUHlPYmplY3QgKilzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwogfQogCi1QeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAotIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfaW5kZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2luZGV4KFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihyZmluZF9fZG9jX18sCi0iQi5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmZpbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JmaW5kKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihyaW5kZXhfX2RvY19fLAotIkIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1MaWtlIEIucmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yaW5kZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JpbmRleChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCiBzdGF0aWMgaW50CiBieXRlYXJyYXlfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9idWZmZXIgdmFyZzsKLSAgICAgICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5X1NJWkUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmcuYnVmLCB2YXJnLmxlbiwgMCk7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOwotICAgICAgICByZXR1cm4gcG9zID49IDA7Ci0gICAgfQotICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID49IDI1NikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWVtY2hyKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKGludCkgaXZhbCwgUHlfU0laRShzZWxmKSkgIT0gTlVMTDsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvbnRhaW5zKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZyk7CiB9CiAKLQotLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHNlbGYKLSAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKLSAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KLSAqLwotUHlfTE9DQUwoaW50KQotX2J5dGVhcnJheV90YWlsbWF0Y2goUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgY29uc3QgY2hhciogc3RyOwotICAgIFB5X2J1ZmZlciB2c3Vic3RyOwotICAgIGludCBydiA9IDA7Ci0KLSAgICBzdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1YnN0ciwgJnZzdWJzdHIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLQotICAgIGlmIChkaXJlY3Rpb24gPCAwKSB7Ci0gICAgICAgIC8qIHN0YXJ0c3dpdGggKi8KLSAgICAgICAgaWYgKHN0YXJ0K3ZzdWJzdHIubGVuID4gbGVuKSB7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvKiBlbmRzd2l0aCAqLwotICAgICAgICBpZiAoZW5kLXN0YXJ0IDwgdnN1YnN0ci5sZW4gfHwgc3RhcnQgPiBsZW4pIHsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChlbmQtdnN1YnN0ci5sZW4gPiBzdGFydCkKLSAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gdnN1YnN0ci5sZW47Ci0gICAgfQotICAgIGlmIChlbmQtc3RhcnQgPj0gdnN1YnN0ci5sZW4pCi0gICAgICAgIHJ2ID0gISBtZW1jbXAoc3RyK3N0YXJ0LCB2c3Vic3RyLmJ1ZiwgdnN1YnN0ci5sZW4pOwotCi1kb25lOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWJzdHIpOwotICAgIHJldHVybiBydjsKLX0KLQotCi1QeURvY19TVFJWQVIoc3RhcnRzd2l0aF9fZG9jX18sCi0iQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zdGFydHN3aXRoKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoInN0YXJ0c3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib3IgYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotUHlEb2NfU1RSVkFSKGVuZHN3aXRoX19kb2NfXywKLSJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1zdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZW5kc3dpdGgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBpbnQgcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZW5kc3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsICsxKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2VuZHN3aXRoKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS50cmFuc2xhdGUKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgdGFibGU6IG9iamVjdAogICAgICAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LgotICAgIFsKLSAgICBkZWxldGVjaGFyczogb2JqZWN0Ci0gICAgXQogICAgIC8KKyAgICBkZWxldGUgYXMgZGVsZXRlY2hhcnM6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJwogCiBSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIAotQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK0FsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLgogVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXBfcmlnaHRfMSwgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiZWJjODZhOWExZmYwODMgaW5wdXQ9Yjc0OWFkODVmNDg2MDgyNF0qLworICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNmE4ZjAxYzJhNzRlNDQ2IGlucHV0PWNmZmY5NTZkNGQxMjdhOWJdKi8KIHsKICAgICBjaGFyICppbnB1dCwgKm91dHB1dDsKICAgICBjb25zdCBjaGFyICp0YWJsZV9jaGFyczsKQEAgLTE1NzIsNyArMTIzMCw3IEBACiAgICAgcmVzdWx0ID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBpbmxlbik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlQXJyYXlfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKICAgICBpbnB1dCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhpbnB1dF9vYmopOwogCiAgICAgaWYgKHZkZWwubGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewpAQCAtMTU5OCw4ICsxMjU2LDcgQEAKICAgICBmb3IgKGkgPSBpbmxlbjsgLS1pID49IDA7ICkgewogICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmlucHV0KyspOwogICAgICAgICBpZiAodHJhbnNfdGFibGVbY10gIT0gLTEpCi0gICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKm91dHB1dCsrID0gKGNoYXIpdHJhbnNfdGFibGVbY10pID09IGMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgKm91dHB1dCsrID0gKGNoYXIpdHJhbnNfdGFibGVbY107CiAgICAgfQogICAgIC8qIEZpeCB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZyAqLwogICAgIGlmIChpbmxlbiA+IDApCkBAIC0xNjQyLDQ5MyArMTI5OSw2IEBACiB9CiAKIAotLyogZmluZCBhbmQgY291bnQgY2hhcmFjdGVycyBhbmQgc3Vic3RyaW5ncyAqLwotCi0jZGVmaW5lIGZpbmRjaGFyKHRhcmdldCwgdGFyZ2V0X2xlbiwgYykgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKGNoYXIgKiltZW1jaHIoKGNvbnN0IHZvaWQgKikodGFyZ2V0KSwgYywgdGFyZ2V0X2xlbikpCi0KLQotLyogQnl0ZXMgb3BzIG11c3QgcmV0dXJuIGEgc3RyaW5nLCBjcmVhdGUgYSBjb3B5ICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmV0dXJuX3NlbGYoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi17Ci0gICAgLyogYWx3YXlzIHJldHVybiBhIG5ldyBieXRlYXJyYXkgKi8KLSAgICByZXR1cm4gKFB5Qnl0ZUFycmF5T2JqZWN0ICopUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7Ci19Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotY291bnRjaGFyKGNvbnN0IGNoYXIgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRfbGVuLCBjaGFyIGMsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgUHlfc3NpemVfdCBjb3VudD0wOwotICAgIGNvbnN0IGNoYXIgKnN0YXJ0PXRhcmdldDsKLSAgICBjb25zdCBjaGFyICplbmQ9dGFyZ2V0K3RhcmdldF9sZW47Ci0KLSAgICB3aGlsZSAoIChzdGFydD1maW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBjKSkgIT0gTlVMTCApIHsKLSAgICAgICAgY291bnQrKzsKLSAgICAgICAgaWYgKGNvdW50ID49IG1heGNvdW50KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN0YXJ0ICs9IDE7Ci0gICAgfQotICAgIHJldHVybiBjb3VudDsKLX0KLQotCi0vKiBBbGdvcml0aG1zIGZvciBkaWZmZXJlbnQgY2FzZXMgb2Ygc3RyaW5nIHJlcGxhY2VtZW50ICovCi0KLS8qIGxlbihzZWxmKT49MSwgZnJvbT0iIiwgbGVuKHRvKT49MSwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX2ludGVybGVhdmUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIGk7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICAvKiAxIGF0IHRoZSBlbmQgcGx1cyAxIGFmdGVyIGV2ZXJ5IGNoYXJhY3RlcjsKLSAgICAgICBjb3VudCA9IG1pbihtYXhjb3VudCwgc2VsZl9sZW4gKyAxKSAqLwotICAgIGlmIChtYXhjb3VudCA8PSBzZWxmX2xlbikKLSAgICAgICAgY291bnQgPSBtYXhjb3VudDsKLSAgICBlbHNlCi0gICAgICAgIC8qIENhbid0IG92ZXJmbG93OiBzZWxmX2xlbiArIDEgPD0gbWF4Y291bnQgPD0gUFlfU1NJWkVfVF9NQVguICovCi0gICAgICAgIGNvdW50ID0gc2VsZl9sZW4gKyAxOwotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOwotCi0gICAgaWYgKCEgKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIC8qIFRPRE86IHNwZWNpYWwgY2FzZSBzaW5nbGUgY2hhcmFjdGVyLCB3aGljaCBkb2Vzbid0IG5lZWQgbWVtY3B5ICovCi0KLSAgICAvKiBMYXkgdGhlIGZpcnN0IG9uZSBkb3duIChndWFyYW50ZWVkIHRoaXMgd2lsbCBvY2N1cikgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgIGNvdW50IC09IDE7Ci0KLSAgICBmb3IgKGk9MDsgaTxjb3VudDsgaSsrKSB7Ci0gICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICB9Ci0KLSAgICAvKiBDb3B5IHRoZSByZXN0IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4taSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBTcGVjaWFsIGNhc2UgZm9yIGRlbGV0aW5nIGEgc2luZ2xlIGNoYXJhY3RlciAqLwotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIGNvdW50OyAgLyogZnJvbV9sZW4gPT0gMSAqLwotICAgIGFzc2VydChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLQotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIChjb3VudCAqIGZyb21fbGVuKTsKLSAgICBhc3NlcnQgKHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMICkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7Ci0KLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0KLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBjaGFyIHRvX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kLCAqbmV4dDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuOwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIG5leHQgPSBmaW5kY2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MpOwotCi0gICAgaWYgKG5leHQgPT0gTlVMTCkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0LXNlbGZfcyk7Ci0gICAgKnN0YXJ0ID0gdG9fYzsKLSAgICBzdGFydCsrOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKm5leHQgPSB0b19jOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kOwotICAgIGNoYXIgKnNlbGZfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCBvZmZzZXQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgYnl0ZXMgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICBpZiAob2Zmc2V0ID09IC0xKSB7Ci0gICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBieXRlcyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmX2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgb2Zmc2V0OwotICAgIFB5X01FTUNQWShzdGFydCwgdG9fcywgZnJvbV9sZW4pOwotICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0PT0tMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkoc3RhcnQrb2Zmc2V0LCB0b19zLCBmcm9tX2xlbik7Ci0gICAgICAgIHN0YXJ0ICs9IG9mZnNldCtmcm9tX2xlbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIHVzZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgYW5kIG5ldywgaGVuY2UgdGhlICItMSIgKi8KLSAgICAvKiAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi0xKSAgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gMSA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gMSk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLWZyb21fbGVuKSAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSBmcm9tX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gZnJvbV9sZW4pOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0K29mZnNldDsKLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgaWYgKG1heGNvdW50IDwgMCkgewotICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIH0gZWxzZSBpZiAobWF4Y291bnQgPT0gMCB8fCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmIChtYXhjb3VudCA9PSAwIHx8Ci0gICAgICAgIChmcm9tX2xlbiA9PSAwICYmIHRvX2xlbiA9PSAwKSkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgemVyby1sZW5ndGggc3BlY2lhbCBjYXNlcyAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IDApIHsKLSAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIGJ5dGVzIGV2ZXJ5d2hlcmUuICAgKi8KLSAgICAgICAgLyogICAgPj4+ICJQeXRob24iLnJlcGxhY2UoIiIsICIuIikgICAgICovCi0gICAgICAgIC8qICAgICcuUC55LnQuaC5vLm4uJyAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9pbnRlcmxlYXZlKHNlbGYsIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0KLQotICAgIC8qIEV4Y2VwdCBmb3IgIiIucmVwbGFjZSgiIiwgIkEiKSA9PSAiQSIgdGhlcmUgaXMgbm8gd2F5IGJleW9uZCB0aGlzICovCi0gICAgLyogcG9pbnQgZm9yIGFuIGVtcHR5IHNlbGYgYnl0ZXMgdG8gZ2VuZXJhdGUgYSBub24tZW1wdHkgYnl0ZXMgKi8KLSAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IGJ5dGVzICovCi0gICAgaWYgKFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmICh0b19sZW4gPT0gMCkgewotICAgICAgICAvKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mICdmcm9tJyBieXRlcyAqLwotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggYnl0ZXMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKi8KLQotICAgIGlmIChmcm9tX2xlbiA9PSB0b19sZW4pIHsKLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgdG9fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogT3RoZXJ3aXNlIHVzZSB0aGUgbW9yZSBnZW5lcmljIGFsZ29yaXRobXMgKi8KLSAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKHNlbGYsIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBsZW4oJ2Zyb20nKT49MiwgbGVuKCd0bycpPj0xICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci19Ci0KLQogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJlcGxhY2UKIApAQCAtMjE1MCw5ICsxMzIwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpuZXcsIFB5X3NzaXplX3QgY291bnQpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDM5ODg0YzRkYzU5NDEyYSBpbnB1dD1hYTM3OWQ5ODg2MzdjN2ZiXSovCiB7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZUFycmF5T2JqZWN0ICopIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLT5idWYsIG9sZC0+bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOworICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZSgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtMjIwMCw3ICsxMzcwLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5wYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgc2VwOiBvYmplY3QKICAgICAvCiAKQEAgLTIyMTYsNyArMTM4NSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1ZDI1MjVkZGQzNWY5NTcgaW5wdXQ9N2Q3ZmUzN2IxNjk2ZDUwNl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1ZDI1MjVkZGQzNWY5NTcgaW5wdXQ9ODZmODkyMjM4OTJiNzBiNV0qLwogewogICAgIFB5T2JqZWN0ICpieXRlc2VwLCAqcmVzdWx0OwogCkBAIC0yMjM4LDcgKzE0MDcsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJwYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgc2VwOiBvYmplY3QKICAgICAvCiAKQEAgLTIyNTQsNyArMTQyMiw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnBhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDBkZTNjOTQyNjExNWU4IGlucHV0PTliOGNkNTQwYzFiNzU4NTNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDBkZTNjOTQyNjExNWU4IGlucHV0PTVmNDA5NGYyZGU4N2M4ZjNdKi8KIHsKICAgICBQeU9iamVjdCAqYnl0ZXNlcCwgKnJlc3VsdDsKIApAQCAtMjMxMiwxNCArMTQ4MCwxMiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJldmVyc2UKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB2YWx1ZXMgaW4gQiBpbiBwbGFjZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZXZlcnNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWY3NjE2ZjI5YWIzMDlkMyBpbnB1dD03OTMzYTQ5OWI4NTk3YmQxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWY3NjE2ZjI5YWIzMDlkMyBpbnB1dD01NDMzNTYzMTlmYzc4NTU3XSovCiB7CiAgICAgY2hhciBzd2FwLCAqaGVhZCwgKnRhaWw7CiAgICAgUHlfc3NpemVfdCBpLCBqLCBuID0gUHlfU0laRShzZWxmKTsKQEAgLTIzNDgsNyArMTUxNCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuaW5zZXJ0CiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGluZGV4OiBQeV9zc2l6ZV90CiAgICAgICAgIFRoZSBpbmRleCB3aGVyZSB0aGUgdmFsdWUgaXMgdG8gYmUgaW5zZXJ0ZWQuCiAgICAgaXRlbTogYnl0ZXN2YWx1ZQpAQCAtMjM2MCw3ICsxNTI1LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9pbnNlcnRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwgaW50IGl0ZW0pCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZjNzc1YTcwZTdiMDdiNyBpbnB1dD04MzM3NjY4MzZiYTMwZTFlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZjNzc1YTcwZTdiMDdiNyBpbnB1dD1iMmI1ZDA3ZTlkZTZjMDcwXSovCiB7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWY7CkBAIC0yMzkwLDcgKzE1NTUsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmFwcGVuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpdGVtOiBieXRlc3ZhbHVlCiAgICAgICAgIFRoZSBpdGVtIHRvIGJlIGFwcGVuZGVkLgogICAgIC8KQEAgLTI0MDAsNyArMTU2NCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfYXBwZW5kX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBpdGVtKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWExNTRlMTllZDE4ODZjYjYgaW5wdXQ9YWU1NmVhODczODA0MDdjY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWExNTRlMTllZDE4ODZjYjYgaW5wdXQ9MjBkNmJlYzNkMTM0MDU5M10qLwogewogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CiAKQEAgLTI0MjAsNyArMTU4NCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuZXh0ZW5kCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGl0ZXJhYmxlX29mX2ludHM6IG9iamVjdAogICAgICAgICBUaGUgaXRlcmFibGUgb2YgaXRlbXMgdG8gYXBwZW5kLgogICAgIC8KQEAgLTI0MzAsNyArMTU5Myw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZXh0ZW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfaW50cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODE1NWRiZTI0OTE3MGIxIGlucHV0PWNlODNhNWQ3NWI3MGQ4NTBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODE1NWRiZTI0OTE3MGIxIGlucHV0PWM2MTdiM2E5MzI0OWJhMjhdKi8KIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtLCAqYnl0ZWFycmF5X29iajsKICAgICBQeV9zc2l6ZV90IGJ1Zl9zaXplID0gMCwgbGVuID0gMDsKQEAgLTI1MTUsNyArMTY3OCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucG9wCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGluZGV4OiBQeV9zc2l6ZV90ID0gLTEKICAgICAgICAgVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gcmVtb3ZlIHRoZSBpdGVtLgogICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlbW92ZSB0aGUgbGFzdCBpdGVtLgpAQCAtMjUyOCw3ICsxNjkwLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9wb3BfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGNjZDQwMWY4MDIxZGE4IGlucHV0PTA3OTdlNmMwY2E5ZDVhODVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGNjZDQwMWY4MDIxZGE4IGlucHV0PTM1OTFkZjJkMDZjMGQyMzddKi8KIHsKICAgICBpbnQgdmFsdWU7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKQEAgLTI1NjAsNyArMTcyMiw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucmVtb3ZlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHZhbHVlOiBieXRlc3ZhbHVlCiAgICAgICAgIFRoZSB2YWx1ZSB0byByZW1vdmUuCiAgICAgLwpAQCAtMjU3MCwyMCArMTczMSwyMCBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JlbW92ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY1OWUzNzg2NjcwOWMxMyBpbnB1dD00NzU2MGIxMWZkODU2YzI0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY1OWUzNzg2NjcwOWMxMyBpbnB1dD0xMjE4MzEyNDBjZDUxZGRmXSovCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKKyAgICBQeV9zc2l6ZV90IHdoZXJlLCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgY2hhciAqd2hlcmUgPSBtZW1jaHIoYnVmLCB2YWx1ZSwgbik7CiAKLSAgICBpZiAoIXdoZXJlKSB7CisgICAgd2hlcmUgPSBzdHJpbmdsaWJfZmluZF9jaGFyKGJ1ZiwgbiwgdmFsdWUpOworICAgIGlmICh3aGVyZSA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ2YWx1ZSBub3QgZm91bmQgaW4gYnl0ZWFycmF5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIV9jYW5yZXNpemUoc2VsZikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWVtbW92ZSh3aGVyZSwgd2hlcmUgKyAxLCBidWYgKyBuIC0gd2hlcmUpOworICAgIG1lbW1vdmUoYnVmICsgd2hlcmUsIGJ1ZiArIHdoZXJlICsgMSwgbiAtIHdoZXJlKTsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIG4gLSAxKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yNTkzLDggKzE3NTQsOCBAQAogLyogWFhYIFRoZXNlIHR3byBoZWxwZXJzIGNvdWxkIGJlIG9wdGltaXplZCBpZiBhcmdzaXplID09IDEgKi8KIAogc3RhdGljIFB5X3NzaXplX3QKLWxzdHJpcF9oZWxwZXIoY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAotICAgICAgICAgICAgICB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKK2xzdHJpcF9oZWxwZXIoY29uc3QgY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAorICAgICAgICAgICAgICBjb25zdCB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKIHsKICAgICBQeV9zc2l6ZV90IGkgPSAwOwogICAgIHdoaWxlIChpIDwgbXlzaXplICYmIG1lbWNocihhcmdwdHIsICh1bnNpZ25lZCBjaGFyKSBteXB0cltpXSwgYXJnc2l6ZSkpCkBAIC0yNjAzLDggKzE3NjQsOCBAQAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAotcnN0cmlwX2hlbHBlcihjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCi0gICAgICAgICAgICAgIHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQorcnN0cmlwX2hlbHBlcihjb25zdCBjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCisgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQogewogICAgIFB5X3NzaXplX3QgaSA9IG15c2l6ZSAtIDE7CiAgICAgd2hpbGUgKGkgPj0gMCAmJiBtZW1jaHIoYXJncHRyLCAodW5zaWduZWQgY2hhcikgbXlwdHJbaV0sIGFyZ3NpemUpKQpAQCAtMjgwNSwyNyArMTk2NiwxMCBAQAogICAgICAgICApOwogfQogCi1zdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKLXsKLSAgICBpZiAoYyA+PSAxMjgpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgcmV0dXJuIGMgLSAnMCc7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKGMpKQotICAgICAgICAgICAgYyA9IFB5X1RPTE9XRVIoYyk7Ci0gICAgICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgIHJldHVybiBjIC0gJ2EnICsgMTA7Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBieXRlYXJyYXkuZnJvbWhleAogCi0gICAgY2xzOiBzZWxmKHR5cGU9IlB5T2JqZWN0KiIpCiAgICAgc3RyaW5nOiB1bmljb2RlCiAgICAgLwogCkBAIC0yODM2LDUxICsxOTgwLDE1IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5T2JqZWN0KmNscywgUHlPYmplY3QgKnN0cmluZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZjNkYTYwMTI5YjM3MDBjIGlucHV0PTkwN2JiZDJkMzRkOTM2N2FdKi8KK2J5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmMGYwYjZkMzBmYjNiYTAgaW5wdXQ9ZjAzM2ExNmQxZmIyMWY0OF0qLwogewotICAgIFB5T2JqZWN0ICpuZXdieXRlczsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwotICAgIGludCB0b3AsIGJvdDsKLSAgICB2b2lkICpkYXRhOwotICAgIHVuc2lnbmVkIGludCBraW5kOwotCi0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzdHJpbmcpKTsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7Ci0KLSAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwotICAgIG5ld2J5dGVzID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwotICAgIGlmICghbmV3Ynl0ZXMpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhuZXdieXRlcyk7Ci0gICAgZm9yIChpID0gaiA9IDA7IGkgPCBoZXhsZW47IGkgKz0gMikgewotICAgICAgICAvKiBza2lwIG92ZXIgc3BhY2VzIGluIHRoZSBpbnB1dCAqLwotICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQotICAgICAgICAgICAgaSsrOwotICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7Ci0gICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaSk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZltqKytdID0gKHRvcCA8PCA0KSArIGJvdDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUhleChzdHJpbmcsIHR5cGUgPT0gJlB5Qnl0ZUFycmF5X1R5cGUpOworICAgIGlmICh0eXBlICE9ICZQeUJ5dGVBcnJheV9UeXBlICYmIHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0ICopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsIE5VTEwpKTsKICAgICB9Ci0gICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZShuZXdieXRlcywgaikgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIHJldHVybiBuZXdieXRlczsKLQotICBlcnJvcjoKLSAgICBQeV9ERUNSRUYobmV3Ynl0ZXMpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5RG9jX1NUUlZBUihoZXhfX2RvY19fLApAQCAtMjkzNSwxNCArMjA0MywxMiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Ll9fcmVkdWNlX18gYXMgYnl0ZWFycmF5X3JlZHVjZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZWR1Y2VfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmJmMzA0MDg2NDY0Y2FiIGlucHV0PWZiYjA3ZGU0ZDEwMmEwM2FdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmJmMzA0MDg2NDY0Y2FiIGlucHV0PTQ0YjU3MzdhZGE2MmRkM2ZdKi8KIHsKICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgMik7CiB9CkBAIC0yOTUwLDcgKzIwNTYsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Ll9fcmVkdWNlX2V4X18gYXMgYnl0ZWFycmF5X3JlZHVjZV9leAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBwcm90bzogaW50ID0gMAogICAgIC8KIApAQCAtMjk1OSw3ICsyMDY0LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyZWFjMzMzNzcxOTc1MjAgaW5wdXQ9MGUwOTFhNDJjYTZkYmQ5MV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyZWFjMzMzNzcxOTc1MjAgaW5wdXQ9ZjEyOWJjMWExYWExNTFlZV0qLwogewogICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCBwcm90byk7CiB9CkBAIC0yOTY3LDE0ICsyMDcyLDEyIEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuX19zaXplb2ZfXyBhcyBieXRlYXJyYXlfc2l6ZW9mCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBieXRlYXJyYXkgb2JqZWN0IGluIG1lbW9yeSwgaW4gYnl0ZXMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc2l6ZW9mX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM4YWJkZDE3OTUxYzQyNyBpbnB1dD02YjIzZDMwNTM2MmI0NjJiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM4YWJkZDE3OTUxYzQyNyBpbnB1dD1lMjczMjBmZDk4YTRiYzVhXSovCiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKQEAgLTMwMTUsMTkgKzIxMTgsMjIgQEAKICAgICBCWVRFQVJSQVlfQVBQRU5EX01FVEhPRERFRgogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCi0gICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKKyAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIF9QeV9jZW50ZXJfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfQ0xFQVJfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX0NPUFlfTUVUSE9EREVGCi0gICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY291bnQsIE1FVEhfVkFSQVJHUywgY291bnRfX2RvY19ffSwKKyAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3VudCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfY291bnRfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfREVDT0RFX01FVEhPRERFRgotICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2VuZHN3aXRoLCBNRVRIX1ZBUkFSR1MsIGVuZHN3aXRoX19kb2NfX30sCisgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2VuZHN3aXRoX19kb2NfX30sCiAgICAgeyJleHBhbmR0YWJzIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9leHBhbmR0YWJzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICBleHBhbmR0YWJzX19kb2NfX30sCisgICAgIF9QeV9leHBhbmR0YWJzX19kb2NfX30sCiAgICAgQllURUFSUkFZX0VYVEVORF9NRVRIT0RERUYKLSAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2ZpbmQsIE1FVEhfVkFSQVJHUywgZmluZF9fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZmluZCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfZmluZF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9GUk9NSEVYX01FVEhPRERFRgogICAgIHsiaGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKLSAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9pbmRleCwgTUVUSF9WQVJBUkdTLCBpbmRleF9fZG9jX199LAorICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9pbmRleF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9JTlNFUlRfTUVUSE9EREVGCiAgICAgeyJpc2FsbnVtIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FsbnVtLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzYWxudW1fX2RvY19ffSwKQEAgLTMwNDQsNyArMjE1MCw3IEBACiAgICAgeyJpc3VwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc3VwcGVyLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzdXBwZXJfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfSk9JTl9NRVRIT0RERUYKLSAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBsanVzdF9fZG9jX199LAorICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIF9QeV9sanVzdF9fZG9jX199LAogICAgIHsibG93ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xvd2VyLCBNRVRIX05PQVJHUywgX1B5X2xvd2VyX19kb2NfX30sCiAgICAgQllURUFSUkFZX0xTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfTUFLRVRSQU5TX01FVEhPRERFRgpAQCAtMzA1MywyMyArMjE1OSwyMyBAQAogICAgIEJZVEVBUlJBWV9SRU1PVkVfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JFUExBQ0VfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JFVkVSU0VfTUVUSE9EREVGCi0gICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmZpbmQsIE1FVEhfVkFSQVJHUywgcmZpbmRfX2RvY19ffSwKLSAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIHJpbmRleF9fZG9jX199LAotICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCisgICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmZpbmQsIE1FVEhfVkFSQVJHUywgX1B5X3JmaW5kX19kb2NfX30sCisgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JpbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfcmluZGV4X19kb2NfX30sCisgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X3JqdXN0X19kb2NfX30sCiAgICAgQllURUFSUkFZX1JQQVJUSVRJT05fTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JTUExJVF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfUlNUUklQX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9TUExJVF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfU1BMSVRMSU5FU19NRVRIT0RERUYKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3N0YXJ0c3dpdGgsIE1FVEhfVkFSQVJHUyAsCi0gICAgIHN0YXJ0c3dpdGhfX2RvY19ffSwKKyAgICAgX1B5X3N0YXJ0c3dpdGhfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfU1RSSVBfTUVUSE9EREVGCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl90aXRsZSwgTUVUSF9OT0FSR1MsIF9QeV90aXRsZV9fZG9jX199LAogICAgIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGCiAgICAgeyJ1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdXBwZXIsIE1FVEhfTk9BUkdTLCBfUHlfdXBwZXJfX2RvY19ffSwKLSAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCB6ZmlsbF9fZG9jX199LAorICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIF9QeV96ZmlsbF9fZG9jX199LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzA3OCw3ICsyMTg0LDcgQEAKIHsKICAgICBpZiAoIVB5Qnl0ZUFycmF5X0NoZWNrKHYpKQogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Ci0gICAgcmV0dXJuIGJ5dGVhcnJheV9mb3JtYXQoKFB5Qnl0ZUFycmF5T2JqZWN0ICopdiwgdyk7CisgICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdEV4KFB5Qnl0ZUFycmF5X0FTX1NUUklORyh2KSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUodiksIHcsIDEpOwogfQogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVhcnJheV9hc19udW1iZXIgPSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCmluZGV4IGEyOTk5MTUuLmQ1YzRmZTYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCisrKyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCkBAIC0xLDMgKzEsNCBAQAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgogCkBAIC0yNzcsNyArMjc4LDcgQEAKIGNoYXJhY3RlcnMsIGFsbCByZW1haW5pbmcgY2FzZWQgY2hhcmFjdGVycyBoYXZlIGxvd2VyY2FzZS4iKTsKIAogdm9pZAotX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCitfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHByZXZpb3VzX2lzX2Nhc2VkID0gMDsKQEAgLTMwNiw3ICszMDcsNyBAQAogYW5kIHRoZSByZXN0IGxvd2VyLWNhc2VkLiIpOwogCiB2b2lkCi1fUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQorX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKQEAgLTMzNiw3ICszMzcsNyBAQAogdG8gbG93ZXJjYXNlIEFTQ0lJIGFuZCB2aWNlIHZlcnNhLiIpOwogCiB2b2lkCi1fUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKK19QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQogewogICAgIFB5X3NzaXplX3QgaTsKIApAQCAtMzg3LDMgKzM4OCw0MjcgQEAKIAogICAgIHJldHVybiByZXM7CiB9CisKKyNkZWZpbmUgRkFTVFNFQVJDSCBmYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSBzdHJpbmdsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9DSEFSIGNoYXIKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSIDEKKworI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKworLyoKK1dyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2hldGhlciB0aGUKK2ZpcnN0IGFyZ3VtZW50IGlzIGFuIGludGVnZXIgaW4gcmFuZ2UoMCwgMjU2KS4KKworSWYgdGhpcyBpcyB0aGUgY2FzZSwgd3JpdGVzIHRoZSBpbnRlZ2VyIHZhbHVlIHRvIHRoZSBieXRlIHBhcmFtZXRlcgorYW5kIHNldHMgc3Vib2JqIHRvIE5VTEwuIE90aGVyd2lzZSwgc2V0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc3Vib2JqCithbmQgZG9lc24ndCB0b3VjaCBieXRlLiBUaGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgc2ltaWxhciB0byB0aG9zZSBvZgorc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKS4KKyovCisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitwYXJzZV9hcmdzX2ZpbmRzX2J5dGUoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJvYmosIGNoYXIgKmJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKK3sKKyAgICBQeU9iamVjdCAqdG1wX3N1Ym9iajsKKyAgICBQeV9zc2l6ZV90IGl2YWw7CisgICAgUHlPYmplY3QgKmVycjsKKworICAgIGlmKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1Ym9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFQeU51bWJlcl9DaGVjayh0bXBfc3Vib2JqKSkgeworICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdCh0bXBfc3Vib2JqLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICBpZiAoaXZhbCA9PSAtMSkgeworICAgICAgICBlcnIgPSBQeUVycl9PY2N1cnJlZCgpOworICAgICAgICBpZiAoZXJyICYmICFQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoZXJyLCBQeUV4Y19PdmVyZmxvd0Vycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpzdWJvYmogPSBOVUxMOworICAgICpieXRlID0gKGNoYXIpaXZhbDsKKyAgICByZXR1cm4gMTsKK30KKworLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KKyNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKKyAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitmaW5kX2ludGVybmFsKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLCBpbnQgZGlyKQoreworICAgIFB5T2JqZWN0ICpzdWJvYmo7CisgICAgY2hhciBieXRlOworICAgIFB5X2J1ZmZlciBzdWJidWY7CisgICAgY29uc3QgY2hhciAqc3ViOworICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlfc3NpemVfdCByZXM7CisKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfYnl0ZShmdW5jdGlvbl9uYW1lLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJvYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQorICAgICAgICByZXR1cm4gLTI7CisKKyAgICBpZiAoc3Vib2JqKSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmc3ViYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTI7CisKKyAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQorCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQorICAgICAgICByZXMgPSAtMTsKKyAgICBlbHNlIGlmIChzdWJfbGVuID09IDEpIHsKKyAgICAgICAgaWYgKGRpciA+IDApCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9jaGFyKAorICAgICAgICAgICAgICAgIHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAqc3ViKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX2NoYXIoCisgICAgICAgICAgICAgICAgc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICpzdWIpOworICAgICAgICBpZiAocmVzID49IDApCisgICAgICAgICAgICByZXMgKz0gc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZGlyID4gMCkKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIHN0ciwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgIH0KKworICAgIGlmIChzdWJvYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CisKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9maW5kX19kb2NfXywKKyJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK1JldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCitzdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKK2FyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKK1xuXAorUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19maW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgImZpbmQiLCBhcmdzLCArMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9pbmRleF9fZG9jX18sCisiQi5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorTGlrZSBCLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2luZGV4KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgImluZGV4IiwgYXJncywgKzEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfcmZpbmRfX2RvY19fLAorIkIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK1JldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAorc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCithcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCitcblwKK1JldHVybiAtMSBvbiBmYWlsdXJlLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfcmZpbmQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAicmZpbmQiLCBhcmdzLCAtMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9yaW5kZXhfX2RvY19fLAorIkIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitMaWtlIEIucmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX3JpbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJyaW5kZXgiLCBhcmdzLCAtMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzZWN0aW9uIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9jb3VudF9fZG9jX18sCisiQi5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb24gc3ViIGluXG5cCitieXRlcyBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWRcblwKK2FzIGluIHNsaWNlIG5vdGF0aW9uLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfY291bnQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnN1Yl9vYmo7CisgICAgY29uc3QgY2hhciAqc3ViOworICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBjaGFyIGJ5dGU7CisgICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOworCisgICAgUHlfYnVmZmVyIHZzdWI7CisgICAgUHlPYmplY3QgKmNvdW50X29iajsKKworICAgIGlmICghcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1Yl9vYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzdWJfb2JqKSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3ViX29iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHN1YiA9IHZzdWIuYnVmOworICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQorCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKworICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKKyAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKKyAgICAgICAgKTsKKworICAgIGlmIChzdWJfb2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKKworICAgIHJldHVybiBjb3VudF9vYmo7Cit9CisKK2ludAorX1B5X2J5dGVzX2NvbnRhaW5zKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgTlVMTCk7CisgICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9idWZmZXIgdmFyZzsKKyAgICAgICAgUHlfc3NpemVfdCBwb3M7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZy5idWYsIHZhcmcubGVuLCAwKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7CisgICAgICAgIHJldHVybiBwb3MgPj0gMDsKKyAgICB9CisgICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPj0gMjU2KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBtZW1jaHIoc3RyLCAoaW50KSBpdmFsLCBsZW4pICE9IE5VTEw7Cit9CisKKworLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHRoZSBidWZmZXIKKyAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKKyAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KKyAqLworc3RhdGljIGludAordGFpbG1hdGNoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICpzdWJzdHIsCisgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCit7CisgICAgUHlfYnVmZmVyIHN1Yl92aWV3ID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHNsZW47CisKKyAgICBpZiAoUHlCeXRlc19DaGVjayhzdWJzdHIpKSB7CisgICAgICAgIHN1YiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHN1YnN0cik7CisgICAgICAgIHNsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHN1YnN0cik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1YnN0ciwgJnN1Yl92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHN1YiA9IHN1Yl92aWV3LmJ1ZjsKKyAgICAgICAgc2xlbiA9IHN1Yl92aWV3LmxlbjsKKyAgICB9CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOworCisgICAgaWYgKGRpcmVjdGlvbiA8IDApIHsKKyAgICAgICAgLyogc3RhcnRzd2l0aCAqLworICAgICAgICBpZiAoc3RhcnQgKyBzbGVuID4gbGVuKQorICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBlbmRzd2l0aCAqLworICAgICAgICBpZiAoZW5kIC0gc3RhcnQgPCBzbGVuIHx8IHN0YXJ0ID4gbGVuKQorICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKKworICAgICAgICBpZiAoZW5kIC0gc2xlbiA+IHN0YXJ0KQorICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSBzbGVuOworICAgIH0KKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzbGVuKQorICAgICAgICBnb3RvIG5vdGZvdW5kOworICAgIGlmIChtZW1jbXAoc3RyICsgc3RhcnQsIHN1Yiwgc2xlbikgIT0gMCkKKyAgICAgICAgZ290byBub3Rmb3VuZDsKKworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKKyAgICByZXR1cm4gMTsKKworbm90Zm91bmQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViX3ZpZXcpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorX1B5X2J5dGVzX3RhaWxtYXRjaChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK3sKKyAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpzdWJvYmo7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgbGVuLCBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzdHIsIGxlbiwgc3Vib2JqLCBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzIG9yIGEgdHVwbGUgb2YgYnl0ZXMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3N0YXJ0c3dpdGhfX2RvY19fLAorIkIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCitcblwKK1JldHVybiBUcnVlIGlmIEIgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKK1dpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKK1dpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCitwcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19zdGFydHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBfUHlfYnl0ZXNfdGFpbG1hdGNoKHN0ciwgbGVuLCAic3RhcnRzd2l0aCIsIGFyZ3MsIC0xKTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfZW5kc3dpdGhfX2RvY19fLAorIkIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAorXG5cCitSZXR1cm4gVHJ1ZSBpZiBCIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAorV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKK3N1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2VuZHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBfUHlfYnl0ZXNfdGFpbG1hdGNoKHN0ciwgbGVuLCAiZW5kc3dpdGgiLCBhcmdzLCArMSk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2V4cGFuZHRhYnNfX2RvY19fLAorIkIuZXhwYW5kdGFicyh0YWJzaXplPTgpIC0+IGNvcHkgb2YgQlxuXAorXG5cCitSZXR1cm4gYSBjb3B5IG9mIEIgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSBleHBhbmRlZCB1c2luZyBzcGFjZXMuXG5cCitJZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4iKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfbGp1c3RfX2RvY19fLAorIkIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlJldHVybiBCIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgorImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfcmp1c3RfX2RvY19fLAorIkIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlJldHVybiBCIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKKyJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkiKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfY2VudGVyX19kb2NfXywKKyJCLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCisiXG4iCisiUmV0dXJuIEIgY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiAgUGFkZGluZyBpc1xuIgorImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfemZpbGxfX2RvY19fLAorIkIuemZpbGwod2lkdGgpIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlBhZCBhIG51bWVyaWMgc3RyaW5nIEIgd2l0aCB6ZXJvcyBvbiB0aGUgbGVmdCwgdG8gZmlsbCBhIGZpZWxkXG4iCisib2YgdGhlIHNwZWNpZmllZCB3aWR0aC4gIEIgaXMgbmV2ZXIgdHJ1bmNhdGVkLiIpOworCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKaW5kZXggMzkzNDMyOC4uNTk4ZjZhMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc29iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwpAQCAtOSw5ICs5LDkgQEAKICNpbmNsdWRlIDxzdGRkZWYuaD4KIAogLypbY2xpbmljIGlucHV0XQotY2xhc3MgYnl0ZXMgIlB5Qnl0ZXNPYmplY3QqIiAiJlB5Qnl0ZXNfVHlwZSIKK2NsYXNzIGJ5dGVzICJQeUJ5dGVzT2JqZWN0ICoiICImUHlCeXRlc19UeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MWExZDkxMDJhZmMxYjAwY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2EyMzhmOTY1ZDY0ODkyYl0qLwogCiAjaW5jbHVkZSAiY2xpbmljL2J5dGVzb2JqZWN0LmMuaCIKIApAQCAtMzAsNiArMzAsMTAgQEAKICovCiAjZGVmaW5lIFB5Qnl0ZXNPYmplY3RfU0laRSAob2Zmc2V0b2YoUHlCeXRlc09iamVjdCwgb2Jfc3ZhbCkgKyAxKQogCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqc3RyKTsKKwogLyoKICAgIEZvciBQeUJ5dGVzX0Zyb21TdHJpbmcoKSwgdGhlIHBhcmFtZXRlciBgc3RyJyBwb2ludHMgdG8gYSBudWxsLXRlcm1pbmF0ZWQKICAgIHN0cmluZyBjb250YWluaW5nIGV4YWN0bHkgYHNpemUnIGJ5dGVzLgpAQCAtMTE2LDcgKzEyMCw3IEBACiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwogCi0gICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBzdHIsIHNpemUpOworICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKICAgICAvKiBzaGFyZSBzaG9ydCBzdHJpbmdzICovCiAgICAgaWYgKHNpemUgPT0gMSkgewogICAgICAgICBjaGFyYWN0ZXJzWypzdHIgJiBVQ0hBUl9NQVhdID0gb3A7CkBAIC0xNTksNyArMTYzLDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgKHZvaWQpUHlPYmplY3RfSU5JVF9WQVIob3AsICZQeUJ5dGVzX1R5cGUsIHNpemUpOwogICAgIG9wLT5vYl9zaGFzaCA9IC0xOwotICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKzEpOworICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKzEpOwogICAgIC8qIHNoYXJlIHNob3J0IHN0cmluZ3MgKi8KICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIG51bGxzdHJpbmcgPSBvcDsKQEAgLTE3NCwxOTAgKzE3OCwxODQgQEAKIFB5T2JqZWN0ICoKIFB5Qnl0ZXNfRnJvbUZvcm1hdFYoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQogewotICAgIHZhX2xpc3QgY291bnQ7Ci0gICAgUHlfc3NpemVfdCBuID0gMDsKLSAgICBjb25zdCBjaGFyKiBmOwogICAgIGNoYXIgKnM7Ci0gICAgUHlPYmplY3QqIHN0cmluZzsKKyAgICBjb25zdCBjaGFyICpmOworICAgIGNvbnN0IGNoYXIgKnA7CisgICAgUHlfc3NpemVfdCBwcmVjOworICAgIGludCBsb25nZmxhZzsKKyAgICBpbnQgc2l6ZV90ZmxhZzsKKyAgICAvKiBMb25nZXN0IDY0LWJpdCBmb3JtYXR0ZWQgbnVtYmVyczoKKyAgICAgICAtICIxODQ0Njc0NDA3MzcwOTU1MTYxNVwwIiAoMjEgYnl0ZXMpCisgICAgICAgLSAiLTkyMjMzNzIwMzY4NTQ3NzU4MDhcMCIgKDIxIGJ5dGVzKQorICAgICAgIERlY2ltYWwgdGFrZXMgdGhlIG1vc3Qgc3BhY2UgKGl0IGlzbid0IGVub3VnaCBmb3Igb2N0YWwuKQogCi0gICAgUHlfVkFfQ09QWShjb3VudCwgdmFyZ3MpOwotICAgIC8qIHN0ZXAgMTogZmlndXJlIG91dCBob3cgbGFyZ2UgYSBidWZmZXIgd2UgbmVlZCAqLwotICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZjsKLSAgICAgICAgICAgIHdoaWxlICgqKytmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgqZikpCi0gICAgICAgICAgICAgICAgOworICAgICAgIExvbmdlc3QgNjQtYml0IHBvaW50ZXIgcmVwcmVzZW50YXRpb246CisgICAgICAgIjB4ZmZmZmZmZmZmZmZmZmZmZlwwIiAoMTkgYnl0ZXMpLiAqLworICAgIGNoYXIgYnVmZmVyWzIxXTsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKLSAgICAgICAgICAgIC8qIHNraXAgdGhlICdsJyBvciAneicgaW4geyVsZCwgJXpkLCAlbHUsICV6dX0gc2luY2UKLSAgICAgICAgICAgICAqIHRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBhbW91bnQgb2Ygc3BhY2Ugd2UgcmVzZXJ2ZS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCgqZiA9PSAnbCcgfHwgKmYgPT0gJ3onKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpCi0gICAgICAgICAgICAgICAgKytmOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKLSAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKLSAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBjID0gdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIGlmIChjIDwgMCB8fCBjID4gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5Qnl0ZXNfRnJvbUZvcm1hdFYoKTogJWMgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RzIGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDI1NV0iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2QnOiBjYXNlICd1JzogY2FzZSAnaSc6IGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogMjAgYnl0ZXMgaXMgZW5vdWdoIHRvIGhvbGQgYSA2NC1iaXQKLSAgICAgICAgICAgICAgICAgICBpbnRlZ2VyLiAgRGVjaW1hbCB0YWtlcyB0aGUgbW9zdCBzcGFjZS4KLSAgICAgICAgICAgICAgICAgICBUaGlzIGlzbid0IGVub3VnaCBmb3Igb2N0YWwuICovCi0gICAgICAgICAgICAgICAgbiArPSAyMDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHMgPSB2YV9hcmcoY291bnQsIGNoYXIqKTsKLSAgICAgICAgICAgICAgICBuICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogbWF4aW11bSA2NC1iaXQgcG9pbnRlciByZXByZXNlbnRhdGlvbjoKLSAgICAgICAgICAgICAgICAgKiAweGZmZmZmZmZmZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgKiBzbyAxOSBjaGFyYWN0ZXJzIGlzIGVub3VnaC4KLSAgICAgICAgICAgICAgICAgKiBYWFggSSBjb3VudCAxOCAtLSB3aGF0J3MgdGhlIGV4dHJhIGZvcj8KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBuICs9IDE5OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvKiBpZiB3ZSBzdHVtYmxlIHVwb24gYW4gdW5rbm93bgotICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcgY29kZSwgY29weSB0aGUgcmVzdCBvZgotICAgICAgICAgICAgICAgICAgIHRoZSBmb3JtYXQgc3RyaW5nIHRvIHRoZSBvdXRwdXQKLSAgICAgICAgICAgICAgICAgICBzdHJpbmcuICh3ZSBjYW5ub3QganVzdCBza2lwIHRoZQotICAgICAgICAgICAgICAgICAgIGNvZGUsIHNpbmNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cKLSAgICAgICAgICAgICAgICAgICB3aGF0J3MgaW4gdGhlIGFyZ3VtZW50IGxpc3QpICovCi0gICAgICAgICAgICAgICAgbiArPSBzdHJsZW4ocCk7Ci0gICAgICAgICAgICAgICAgZ290byBleHBhbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbisrOwotICAgIH0KLSBleHBhbmQ6Ci0gICAgLyogc3RlcCAyOiBmaWxsIHRoZSBidWZmZXIgKi8KLSAgICAvKiBTaW5jZSB3ZSd2ZSBhbmFseXplZCBob3cgbXVjaCBzcGFjZSB3ZSBuZWVkIGZvciB0aGUgd29yc3QgY2FzZSwKLSAgICAgICB1c2Ugc3ByaW50ZiBkaXJlY3RseSBpbnN0ZWFkIG9mIHRoZSBzbG93ZXIgUHlPU19zbnByaW50Zi4gKi8KLSAgICBzdHJpbmcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG4pOwotICAgIGlmICghc3RyaW5nKQorICAgIHMgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzdHJsZW4oZm9ybWF0KSk7CisgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CiAKLSAgICBzID0gUHlCeXRlc19Bc1N0cmluZyhzdHJpbmcpOworI2RlZmluZSBXUklURV9CWVRFUyhzdHIpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgcyA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcywgKHN0ciksIHN0cmxlbihzdHIpKTsgXAorICAgICAgICBpZiAocyA9PSBOVUxMKSBcCisgICAgICAgICAgICBnb3RvIGVycm9yOyBcCisgICAgfSB3aGlsZSAoMCkKIAogICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZisrOworICAgICAgICBpZiAoKmYgIT0gJyUnKSB7CisgICAgICAgICAgICAqcysrID0gKmY7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHAgPSBmKys7CisKKyAgICAgICAgLyogaWdub3JlIHRoZSB3aWR0aCAoZXg6IDEwIGluICIlMTBzIikgKi8KKyAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKmYpKQorICAgICAgICAgICAgZisrOworCisgICAgICAgIC8qIHBhcnNlIHRoZSBwcmVjaXNpb24gKGV4OiAxMCBpbiAiJS4xMHMiKSAqLworICAgICAgICBwcmVjID0gMDsKKyAgICAgICAgaWYgKCpmID09ICcuJykgeworICAgICAgICAgICAgZisrOworICAgICAgICAgICAgZm9yICg7IFB5X0lTRElHSVQoKmYpOyBmKyspIHsKKyAgICAgICAgICAgICAgICBwcmVjID0gKHByZWMgKiAxMCkgKyAoKmYgLSAnMCcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKCpmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgqZikpCisgICAgICAgICAgICBmKys7CisKKyAgICAgICAgLyogaGFuZGxlIHRoZSBsb25nIGZsYWcgKCdsJyksIGJ1dCBvbmx5IGZvciAlbGQgYW5kICVsdS4KKyAgICAgICAgICAgb3RoZXJzIGNhbiBiZSBhZGRlZCB3aGVuIG5lY2Vzc2FyeS4gKi8KKyAgICAgICAgbG9uZ2ZsYWcgPSAwOworICAgICAgICBpZiAoKmYgPT0gJ2wnICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKKyAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKKyAgICAgICAgICAgICsrZjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcgKCd6JykuICovCisgICAgICAgIHNpemVfdGZsYWcgPSAwOworICAgICAgICBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKKyAgICAgICAgICAgIHNpemVfdGZsYWcgPSAxOworICAgICAgICAgICAgKytmOworICAgICAgICB9CisKKyAgICAgICAgLyogc3VidHJhY3QgYnl0ZXMgcHJlYWxsb2NhdGVkIGZvciB0aGUgZm9ybWF0IHN0cmluZworICAgICAgICAgICAoZXg6IDIgZm9yICIlcyIpICovCisgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAoZiAtIHAgKyAxKTsKKworICAgICAgICBzd2l0Y2ggKCpmKSB7CisgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICB7CisgICAgICAgICAgICBpbnQgYyA9IHZhX2FyZyh2YXJncywgaW50KTsKKyAgICAgICAgICAgIGlmIChjIDwgMCB8fCBjID4gMjU1KSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUJ5dGVzX0Zyb21Gb3JtYXRWKCk6ICVjIGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RzIGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDI1NV0iKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplKys7CisgICAgICAgICAgICAqcysrID0gKHVuc2lnbmVkIGNoYXIpYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlbGQiLCB2YV9hcmcodmFyZ3MsIGxvbmcpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBQeV9zc2l6ZV90KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlZCIsIHZhX2FyZyh2YXJncywgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlbHUiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBzaXplX3QpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiV1IiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWkiLCB2YV9hcmcodmFyZ3MsIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIleCIsIHZhX2FyZyh2YXJncywgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAncyc6CisgICAgICAgIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgIGludCBsb25nZmxhZyA9IDA7Ci0gICAgICAgICAgICBpbnQgc2l6ZV90ZmxhZyA9IDA7Ci0gICAgICAgICAgICAvKiBwYXJzZSB0aGUgd2lkdGgucHJlY2lzaW9uIHBhcnQgKHdlJ3JlIG9ubHkKLSAgICAgICAgICAgICAgIGludGVyZXN0ZWQgaW4gdGhlIHByZWNpc2lvbiB2YWx1ZSwgaWYgYW55KSAqLwotICAgICAgICAgICAgbiA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgqZikpCi0gICAgICAgICAgICAgICAgbiA9IChuKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICBpZiAoKmYgPT0gJy4nKSB7Ci0gICAgICAgICAgICAgICAgZisrOwotICAgICAgICAgICAgICAgIG4gPSAwOwotICAgICAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCpmKSkKLSAgICAgICAgICAgICAgICAgICAgbiA9IChuKjEwKSArICpmKysgLSAnMCc7CisKKyAgICAgICAgICAgIHAgPSB2YV9hcmcodmFyZ3MsIGNvbnN0IGNoYXIqKTsKKyAgICAgICAgICAgIGkgPSBzdHJsZW4ocCk7CisgICAgICAgICAgICBpZiAocHJlYyA+IDAgJiYgaSA+IHByZWMpCisgICAgICAgICAgICAgICAgaSA9IHByZWM7CisgICAgICAgICAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzLCBwLCBpKTsKKyAgICAgICAgICAgIGlmIChzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVwIiwgdmFfYXJnKHZhcmdzLCB2b2lkKikpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KKyAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ1gnKQorICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGJ1ZmZlclsxXSAhPSAneCcpIHsKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlcisyLCBidWZmZXIsIHN0cmxlbihidWZmZXIpKzEpOworICAgICAgICAgICAgICAgIGJ1ZmZlclswXSA9ICcwJzsKKyAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSAoKmYgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCpmKSkKLSAgICAgICAgICAgICAgICBmKys7Ci0gICAgICAgICAgICAvKiBoYW5kbGUgdGhlIGxvbmcgZmxhZywgYnV0IG9ubHkgZm9yICVsZCBhbmQgJWx1LgotICAgICAgICAgICAgICAgb3RoZXJzIGNhbiBiZSBhZGRlZCB3aGVuIG5lY2Vzc2FyeS4gKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAnbCcgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKLSAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLwotICAgICAgICAgICAgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgKytmOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplKys7CisgICAgICAgICAgICAqcysrID0gJyUnOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICgqZiA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogZml4IG1pbl9zaXplIGlmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZm9ybWF0IHN0cmluZyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzd2l0Y2ggKCpmKSB7Ci0gICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgYyA9IHZhX2FyZyh2YXJncywgaW50KTsKLSAgICAgICAgICAgICAgICAvKiBjIGhhcyBiZWVuIGNoZWNrZWQgZm9yIG92ZXJmbG93IGluIHRoZSBmaXJzdCBzdGVwICovCi0gICAgICAgICAgICAgICAgKnMrKyA9ICh1bnNpZ25lZCBjaGFyKWM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVsZCIsIHZhX2FyZyh2YXJncywgbG9uZykpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBQeV9zc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlZCIsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVsdSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIldSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWkiLCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJXgiLCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAgICAgcCA9IHZhX2FyZyh2YXJncywgY2hhciopOwotICAgICAgICAgICAgICAgIGkgPSBzdHJsZW4ocCk7Ci0gICAgICAgICAgICAgICAgaWYgKG4gPiAwICYmIGkgPiBuKQotICAgICAgICAgICAgICAgICAgICBpID0gbjsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocywgcCwgaSk7Ci0gICAgICAgICAgICAgICAgcyArPSBpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJXAiLCB2YV9hcmcodmFyZ3MsIHZvaWQqKSk7Ci0gICAgICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KLSAgICAgICAgICAgICAgICBpZiAoc1sxXSA9PSAnWCcpCi0gICAgICAgICAgICAgICAgICAgIHNbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1sxXSAhPSAneCcpIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtbW92ZShzKzIsIHMsIHN0cmxlbihzKSsxKTsKLSAgICAgICAgICAgICAgICAgICAgc1swXSA9ICcwJzsKLSAgICAgICAgICAgICAgICAgICAgc1sxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICAqcysrID0gJyUnOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBzdHJjcHkocywgcCk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgKnMrKyA9ICpmOworICAgICAgICAgICAgLyogaW52YWxpZCBmb3JtYXQgc3RyaW5nOiBjb3B5IHVuZm9ybWF0dGVkIHN0cmluZyBhbmQgZXhpdCAqLworICAgICAgICAgICAgV1JJVEVfQllURVMocCk7CisgICAgICAgICAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHMpOworICAgICAgICB9CiAgICAgfQogCi0gZW5kOgotICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmc3RyaW5nLCBzIC0gUHlCeXRlc19BU19TVFJJTkcoc3RyaW5nKSk7Ci0gICAgcmV0dXJuIHN0cmluZzsKKyN1bmRlZiBXUklURV9CWVRFUworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzKTsKKworIGVycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTQwOSwxMiArNDA3LDE0IEBACiAKIC8qIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgUHlCeXRlcyBvYmplY3QsIG9yIE5VTEwgb24gZmFpbHVyZS4gKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3N0YXRpYyBjaGFyKgorZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlLAorICAgICAgICAgICAgUHlPYmplY3QgKipwX3Jlc3VsdCwgX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyKQogewogICAgIGNoYXIgKnA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBkb3VibGUgeDsKKyAgICBzaXplX3QgbGVuOwogCiAgICAgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CiAgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CkBAIC00MzEsOSArNDMxLDIyIEBACiAKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHAsIHN0cmxlbihwKSk7CisKKyAgICBsZW4gPSBzdHJsZW4ocCk7CisgICAgaWYgKHdyaXRlciAhPSBOVUxMKSB7CisgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIGxlbik7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtZW1jcHkoc3RyLCBwLCBsZW4pOworICAgICAgICBQeU1lbV9GcmVlKHApOworICAgICAgICBzdHIgKz0gbGVuOworICAgICAgICByZXR1cm4gc3RyOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocCwgbGVuKTsKICAgICBQeU1lbV9GcmVlKHApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgKnBfcmVzdWx0ID0gcmVzdWx0OworICAgIHJldHVybiBzdHI7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NzMsMTEgKzQ4NiwxMSBAQAogc3RhdGljIGludAogYnl0ZV9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgY2hhciAqcCkKIHsKLSAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfU2l6ZShhcmcpID09IDEpIHsKKyAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKSA9PSAxKSB7CiAgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKVswXTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKGFyZykgJiYgUHlCeXRlQXJyYXlfU2l6ZShhcmcpID09IDEpIHsKKyAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKGFyZykgPT0gMSkgewogICAgICAgICAqcCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhhcmcpWzBdOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC01NTcsMzYgKzU3MCwzNiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0vKiBmbXQlKHYxLHYyLC4uLikgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHNwcmludGYoZm10LCB2MSwgdjIsIC4uLikKLQotICAgRk9STUFUQlVGTEVOIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiB3aGljaCB0aGUgaW50cyAmCi0gICBjaGFycyBhcmUgZm9ybWF0dGVkLiBYWFggVGhpcyBpcyBhIG1hZ2ljIG51bWJlci4gRWFjaCBmb3JtYXR0aW5nCi0gICByb3V0aW5lIGRvZXMgYm91bmRzIGNoZWNraW5nIHRvIGVuc3VyZSBubyBvdmVyZmxvdywgYnV0IGEgYmV0dGVyCi0gICBzb2x1dGlvbiBtYXkgYmUgdG8gbWFsbG9jIGEgYnVmZmVyIG9mIGFwcHJvcHJpYXRlIHNpemUgZm9yIGVhY2gKLSAgIGZvcm1hdC4gRm9yIG5vdywgdGhlIGN1cnJlbnQgc29sdXRpb24gaXMgc3VmZmljaWVudC4KLSovCi0jZGVmaW5lIEZPUk1BVEJVRkxFTiAoc2l6ZV90KTEyMAorLyogZm10JSh2MSx2MiwuLi4pIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBzcHJpbnRmKGZtdCwgdjEsIHYyLCAuLi4pICovCiAKIFB5T2JqZWN0ICoKLV9QeUJ5dGVzX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LCBQeU9iamVjdCAqYXJncykKK19QeUJ5dGVzX0Zvcm1hdEV4KGNvbnN0IGNoYXIgKmZvcm1hdCwgUHlfc3NpemVfdCBmb3JtYXRfbGVuLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIGludCB1c2VfYnl0ZWFycmF5KQogewotICAgIGNoYXIgKmZtdCwgKnJlczsKKyAgICBjb25zdCBjaGFyICpmbXQ7CisgICAgY2hhciAqcmVzOwogICAgIFB5X3NzaXplX3QgYXJnbGVuLCBhcmdpZHg7Ci0gICAgUHlfc3NpemVfdCByZXNsZW4sIHJlc2NudCwgZm10Y250OworICAgIFB5X3NzaXplX3QgZm10Y250OwogICAgIGludCBhcmdzX293bmVkID0gMDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKLSAgICBpZiAoZm9ybWF0ID09IE5VTEwgfHwgIVB5Qnl0ZXNfQ2hlY2soZm9ybWF0KSB8fCBhcmdzID09IE5VTEwpIHsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZm10ID0gUHlCeXRlc19BU19TVFJJTkcoZm9ybWF0KTsKLSAgICBmbXRjbnQgPSBQeUJ5dGVzX0dFVF9TSVpFKGZvcm1hdCk7Ci0gICAgcmVzbGVuID0gcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCByZXNsZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICBmbXQgPSBmb3JtYXQ7CisgICAgZm10Y250ID0gZm9ybWF0X2xlbjsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLnVzZV9ieXRlYXJyYXkgPSB1c2VfYnl0ZWFycmF5OworCisgICAgcmVzID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgZm10Y250KTsKKyAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBpZiAoIXVzZV9ieXRlYXJyYXkpCisgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOworCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgYXJnbGVuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKICAgICAgICAgYXJnaWR4ID0gMDsKQEAgLTYwMCwxOCArNjEzLDIzIEBACiAgICAgICAgICFQeUJ5dGVBcnJheV9DaGVjayhhcmdzKSkgewogICAgICAgICAgICAgZGljdCA9IGFyZ3M7CiAgICAgfQorCiAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKICAgICAgICAgaWYgKCpmbXQgIT0gJyUnKSB7Ci0gICAgICAgICAgICBpZiAoLS1yZXNjbnQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OwotICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnJlcysrID0gKmZtdCsrOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBjaGFyICpwb3M7CisKKyAgICAgICAgICAgIHBvcyA9IHN0cmNocihmbXQgKyAxLCAnJScpOworICAgICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGxlbiA9IHBvcyAtIGZtdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsZW4gPSBmb3JtYXRfbGVuIC0gKGZtdCAtIGZvcm1hdCk7CisgICAgICAgICAgICBhc3NlcnQobGVuICE9IDApOworCisgICAgICAgICAgICBtZW1jcHkocmVzLCBmbXQsIGxlbik7CisgICAgICAgICAgICByZXMgKz0gbGVuOworICAgICAgICAgICAgZm10ICs9IGxlbjsKKyAgICAgICAgICAgIGZtdGNudCAtPSAobGVuIC0gMSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBHb3QgYSBmb3JtYXQgc3BlY2lmaWVyICovCkBAIC02MjYsMTAgKzY0NCwxNCBAQAogICAgICAgICAgICAgaW50IHNpZ247CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CiAgICAgICAgICAgICBjaGFyIG9uZWNoYXI7IC8qIEZvciBieXRlX2NvbnZlcnRlcigpICovCisgICAgICAgICAgICBQeV9zc2l6ZV90IGFsbG9jOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgICAgICBjaGFyICpiZWZvcmU7CisjZW5kaWYKIAogICAgICAgICAgICAgZm10Kys7CiAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKCcpIHsKLSAgICAgICAgICAgICAgICBjaGFyICprZXlzdGFydDsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXlzdGFydDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleWxlbjsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgICAgIGludCBwY291bnQgPSAxOwpAQCAtNjczLDYgKzY5NSw4IEBACiAgICAgICAgICAgICAgICAgYXJnbGVuID0gLTE7CiAgICAgICAgICAgICAgICAgYXJnaWR4ID0gLTI7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhcnNlIGZsYWdzLiBFeGFtcGxlOiAiJStpIiA9PiBmbGFncz1GX1NJR04uICovCiAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAoYyA9ICpmbXQrKykgewogICAgICAgICAgICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBGX0xKVVNUOyBjb250aW51ZTsKQEAgLTY4Myw2ICs3MDcsOCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFyc2Ugd2lkdGguIEV4YW1wbGU6ICIlMTBzIiA9PiB3aWR0aD0xMCAqLwogICAgICAgICAgICAgaWYgKGMgPT0gJyonKSB7CiAgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQpAQCAtNzE3LDYgKzc0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gd2lkdGgqMTAgKyAoYyAtICcwJyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSBwcmVjaXNpb24uIEV4YW1wbGU6ICIlLjNmIiA9PiBwcmVjPTMgKi8KICAgICAgICAgICAgIGlmIChjID09ICcuJykgewogICAgICAgICAgICAgICAgIHByZWMgPSAwOwogICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQpAQCAtNzcxLDEzICs3OTksMTkgQEAKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZm10Y250IDwgMCkgeworICAgICAgICAgICAgICAgIC8qIGxhc3Qgd3JpdGVyOiBkaXNhYmxlIHdyaXRlciBvdmVyYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAwOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBzaWduID0gMDsKICAgICAgICAgICAgIGZpbGwgPSAnICc7CiAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIHBidWYgPSAiJSI7Ci0gICAgICAgICAgICAgICAgbGVuID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAqcmVzKysgPSAnJSc7CisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgICAgIC8vICVyIGlzIG9ubHkgZm9yIDIvMyBjb2RlOyAzIG9ubHkgY29kZSBzaG91bGQgdXNlICVhCiAgICAgICAgICAgICBjYXNlICdhJzoKQEAgLTc5MCw2ICs4MjQsNyBAQAogICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKICAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgLy8gJXMgaXMgb25seSBmb3IgMi8zIGNvZGU7IDMgb25seSBjb2RlIHNob3VsZCB1c2UgJWIKICAgICAgICAgICAgIGNhc2UgJ2InOgpAQCAtNzk5LDEyICs4MzQsNDkgQEAKICAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCiAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgICAgY2FzZSAnZCc6CiAgICAgICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikKKyAgICAgICAgICAgICAgICAgICAgJiYgd2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKQorICAgICAgICAgICAgICAgICAgICAmJiBjICE9ICdYJykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBpbnQgYWx0ZXJuYXRlID0gZmxhZ3MgJiBGX0FMVDsKKyAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U7CisKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGMpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIid0eXBlJyBub3QgaW4gW2RpdW94WF0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAyOyAvKiBzaXplIHByZWFsbG9jYXRlZCBmb3IgIiVkIiAqLworICAgICAgICAgICAgICAgICAgICByZXMgPSBfUHlMb25nX0Zvcm1hdEJ5dGVzV3JpdGVyKCZ3cml0ZXIsIHJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LCBiYXNlLCBhbHRlcm5hdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0bG9uZyh2LCBmbGFncywgcHJlYywgYyk7CiAgICAgICAgICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtODE1LDE0ICs4ODcsMjUgQEAKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX1pFUk8pCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSAnMCc7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgY2FzZSAnRSc6CiAgICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgIGNhc2UgJ0YnOgogICAgICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMpOwotICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IDI7IC8qIHNpemUgcHJlYWxsb2NhdGVkIGZvciAiJWYiICovCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCBOVUxMLCAmd3JpdGVyLCByZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCAmdGVtcCwgTlVMTCwgcmVzKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICBwYnVmID0gUHlCeXRlc19BU19TVFJJTkcodGVtcCk7CiAgICAgICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRSh0ZW1wKTsKQEAgLTgzMCwyMSArOTEzLDI4IEBACiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQogICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgICAgICBwYnVmID0gJm9uZWNoYXI7CiAgICAgICAgICAgICAgICAgbGVuID0gYnl0ZV9jb252ZXJ0ZXIodiwgJm9uZWNoYXIpOwogICAgICAgICAgICAgICAgIGlmICghbGVuKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gb25lY2hhcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIgJyVjJyAoMHgleCkgIgogICAgICAgICAgICAgICAgICAgImF0IGluZGV4ICV6ZCIsCiAgICAgICAgICAgICAgICAgICBjLCBjLAotICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGZtdCAtIDEgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcoZm9ybWF0KSkpOworICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGZtdCAtIDEgLSBmb3JtYXQpKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoc2lnbikgewogICAgICAgICAgICAgICAgIGlmICgqcGJ1ZiA9PSAnLScgfHwgKnBidWYgPT0gJysnKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAqcGJ1ZisrOwpAQCAtODU5LDI5ICs5NDksMzEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh3aWR0aCA8IGxlbikKICAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKLSAgICAgICAgICAgIGlmIChyZXNjbnQgLSAoc2lnbiAhPSAwKSA8IHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgcmVzbGVuIC09IHJlc2NudDsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSB3aWR0aCArIGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChyZXNsZW4gPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OworCisgICAgICAgICAgICBhbGxvYyA9IHdpZHRoOworICAgICAgICAgICAgaWYgKHNpZ24gIT0gMCAmJiBsZW4gPT0gd2lkdGgpCisgICAgICAgICAgICAgICAgYWxsb2MrKzsKKyAgICAgICAgICAgIC8qIDI6IHNpemUgcHJlYWxsb2NhdGVkIGZvciAlcyAqLworICAgICAgICAgICAgaWYgKGFsbG9jID4gMikgeworICAgICAgICAgICAgICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgcmVzLCBhbGxvYyAtIDIpOworICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgYmVmb3JlID0gcmVzOworI2VuZGlmCisKKyAgICAgICAgICAgIC8qIFdyaXRlIHRoZSBzaWduIGlmIG5lZWRlZCAqLwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKICAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpCiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247Ci0gICAgICAgICAgICAgICAgcmVzY250LS07CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQogICAgICAgICAgICAgICAgICAgICB3aWR0aC0tOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBXcml0ZSB0aGUgbnVtZXJpYyBwcmVmaXggZm9yICJ4IiwgIlgiIGFuZCAibyIgZm9ybWF0cworICAgICAgICAgICAgICAgaWYgdGhlIGFsdGVybmF0ZSBmb3JtIGlzIHVzZWQuCisgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgd3JpdGUgIjB4IiBmb3IgdGhlICIlI3giIGZvcm1hdC4gKi8KICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBGX0FMVCkgJiYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSkgewogICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMV0gPT0gYyk7CkBAIC04ODksMTggKzk4MSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXNjbnQgLT0gMjsKICAgICAgICAgICAgICAgICB3aWR0aCAtPSAyOwogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IDApCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKICAgICAgICAgICAgICAgICBsZW4gLT0gMjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFkIGxlZnQgd2l0aCB0aGUgZmlsbCBjaGFyYWN0ZXIgaWYgbmVlZGVkICovCiAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4gJiYgIShmbGFncyAmIEZfTEpVU1QpKSB7Ci0gICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gZmlsbDsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgtLXdpZHRoID4gbGVuKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQocmVzLCBmaWxsLCB3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgcmVzICs9ICh3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIHBhZGRpbmcgd2l0aCBzcGFjZXM6IHdyaXRlIHNpZ24gaWYgbmVlZGVkIGFuZC9vciBudW1lcmljCisgICAgICAgICAgICAgICBwcmVmaXggaWYgdGhlIGFsdGVybmF0ZSBmb3JtIGlzIHVzZWQgKi8KICAgICAgICAgICAgIGlmIChmaWxsID09ICcgJykgewogICAgICAgICAgICAgICAgIGlmIChzaWduKQogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOwpAQCAtOTEyLDEzICsxMDA3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlcywgcGJ1ZiwgbGVuKTsKKworICAgICAgICAgICAgLyogQ29weSBieXRlcyAqLworICAgICAgICAgICAgbWVtY3B5KHJlcywgcGJ1ZiwgbGVuKTsKICAgICAgICAgICAgIHJlcyArPSBsZW47Ci0gICAgICAgICAgICByZXNjbnQgLT0gbGVuOwotICAgICAgICAgICAgd2hpbGUgKC0td2lkdGggPj0gbGVuKSB7Ci0gICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgKnJlcysrID0gJyAnOworCisgICAgICAgICAgICAvKiBQYWQgcmlnaHQgd2l0aCB0aGUgZmlsbCBjaGFyYWN0ZXIgaWYgbmVlZGVkICovCisgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pIHsKKyAgICAgICAgICAgICAgICBtZW1zZXQocmVzLCAnICcsIHdpZHRoIC0gbGVuKTsKKyAgICAgICAgICAgICAgICByZXMgKz0gKHdpZHRoIC0gbGVuKTsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGRpY3QgJiYgKGFyZ2lkeCA8IGFyZ2xlbikgJiYgYyAhPSAnJScpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpOwpAQCAtOTI2LDIyICsxMDI1LDMxIEBACiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgLyogY2hlY2sgdGhhdCB3ZSBjb21wdXRlZCB0aGUgZXhhY3Qgc2l6ZSBmb3IgdGhpcyB3cml0ZSAqLworICAgICAgICAgICAgYXNzZXJ0KChyZXMgLSBiZWZvcmUpID09IGFsbG9jKTsKKyNlbmRpZgogICAgICAgICB9IC8qICclJyAqLworCisgICAgICAgIC8qIElmIG92ZXJhbGxvY2F0aW9uIHdhcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQgaXQgd2FzIHRoZSBsYXN0CisgICAgICAgICAgIHdyaXRlLiBPdGhlcndpc2UsIHdlIG1pc3NlZCBhbiBvcHRpbWl6YXRpb24gKi8KKyAgICAgICAgYXNzZXJ0KHdyaXRlci5vdmVyYWxsb2NhdGUgfHwgZm10Y250IDwgMCB8fCB1c2VfYnl0ZWFycmF5KTsKICAgICB9IC8qIHVudGlsIGVuZCAqLworCiAgICAgaWYgKGFyZ2lkeCA8IGFyZ2xlbiAmJiAhZGljdCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4gLSByZXNjbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcmVzKTsKIAogIGVycm9yOgotICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIH0KQEAgLTk2MSw2ICsxMDY5LDQyIEBACiAgICB0aGUgc3RyaW5nIGlzIFVURi04IGVuY29kZWQgYW5kIHNob3VsZCBiZSByZS1lbmNvZGVkIGluIHRoZQogICAgc3BlY2lmaWVkIGVuY29kaW5nLiAgKi8KIAorc3RhdGljIGNoYXIgKgorX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlUmVjb2RlKGNvbnN0IGNoYXIgKipzLCBjb25zdCBjaGFyICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBjb25zdCBjaGFyICpyZWNvZGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqcCkKK3sKKyAgICBQeU9iamVjdCAqdSwgKnc7CisgICAgY29uc3QgY2hhciogdDsKKworICAgIHQgPSAqczsKKyAgICAvKiBEZWNvZGUgbm9uLUFTQ0lJIGJ5dGVzIGFzIFVURi04LiAqLworICAgIHdoaWxlICh0IDwgZW5kICYmICgqdCAmIDB4ODApKQorICAgICAgICB0Kys7CisgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KCpzLCB0IC0gKnMsIGVycm9ycyk7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBSZWNvZGUgdGhlbSBpbiB0YXJnZXQgZW5jb2RpbmcuICovCisgICAgdyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodSwgcmVjb2RlX2VuY29kaW5nLCBlcnJvcnMpOworICAgIFB5X0RFQ1JFRih1KTsKKyAgICBpZiAgKHcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sodykpOworCisgICAgLyogQXBwZW5kIGJ5dGVzIHRvIG91dHB1dCBidWZmZXIuICovCisgICAgd3JpdGVyLT5taW5fc2l6ZS0tOyAgIC8qIHN1YnRyYWN0IDEgcHJlYWxsb2NhdGVkIGJ5dGUgKi8KKyAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcyh3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcodyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRSh3KSk7CisgICAgUHlfREVDUkVGKHcpOworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgKnMgPSB0OworICAgIHJldHVybiBwOworfQorCiBQeU9iamVjdCAqUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKQEAgLTk2OCw1NCArMTExMiw0MiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWNvZGVfZW5jb2RpbmcpCiB7CiAgICAgaW50IGM7Ci0gICAgY2hhciAqcCwgKmJ1ZjsKKyAgICBjaGFyICpwOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBQeV9zc2l6ZV90IG5ld2xlbiA9IHJlY29kZV9lbmNvZGluZyA/IDQqbGVuOmxlbjsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIG5ld2xlbik7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbik7CisgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodik7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisKICAgICBlbmQgPSBzICsgbGVuOwogICAgIHdoaWxlIChzIDwgZW5kKSB7CiAgICAgICAgIGlmICgqcyAhPSAnXFwnKSB7CiAgICAgICAgICAgbm9uX2VzYzoKLSAgICAgICAgICAgIGlmIChyZWNvZGVfZW5jb2RpbmcgJiYgKCpzICYgMHg4MCkpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdSwgKnc7Ci0gICAgICAgICAgICAgICAgY2hhciAqcjsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0OwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgcm47Ci0gICAgICAgICAgICAgICAgdCA9IHM7Ci0gICAgICAgICAgICAgICAgLyogRGVjb2RlIG5vbi1BU0NJSSBieXRlcyBhcyBVVEYtOC4gKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAodCA8IGVuZCAmJiAoKnQgJiAweDgwKSkgdCsrOwotICAgICAgICAgICAgICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCB0IC0gcywgZXJyb3JzKTsKLSAgICAgICAgICAgICAgICBpZighdSkgZ290byBmYWlsZWQ7Ci0KLSAgICAgICAgICAgICAgICAvKiBSZWNvZGUgdGhlbSBpbiB0YXJnZXQgZW5jb2RpbmcuICovCi0gICAgICAgICAgICAgICAgdyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgIHUsIHJlY29kZV9lbmNvZGluZywgZXJyb3JzKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF3KSAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0KLSAgICAgICAgICAgICAgICAvKiBBcHBlbmQgYnl0ZXMgdG8gb3V0cHV0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayh3KSk7Ci0gICAgICAgICAgICAgICAgciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHcpOwotICAgICAgICAgICAgICAgIHJuID0gUHlCeXRlc19HRVRfU0laRSh3KTsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocCwgciwgcm4pOwotICAgICAgICAgICAgICAgIHAgKz0gcm47Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgICAgIHMgPSB0OwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghKHJlY29kZV9lbmNvZGluZyAmJiAoKnMgJiAweDgwKSkpIHsKICAgICAgICAgICAgICAgICAqcCsrID0gKnMrKzsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIG5vbi1BU0NJSSBjaGFyYWN0ZXIgYW5kIG5lZWQgdG8gcmVjb2RlICovCisgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCByZWNvZGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVyLCBwKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisKICAgICAgICAgcysrOwotICAgICAgICBpZiAocz09ZW5kKSB7CisgICAgICAgIGlmIChzID09IGVuZCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRyYWlsaW5nIFxcIGluIHN0cmluZyIpOwogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKCpzKyspIHsKICAgICAgICAgLyogWFhYIFRoaXMgYXNzdW1lcyBBU0NJSSEgKi8KICAgICAgICAgY2FzZSAnXG4nOiBicmVhazsKQEAgLTEwNDAsMjggKzExNzIsMTggQEAKICAgICAgICAgICAgICpwKysgPSBjOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgaWYgKHMrMSA8IGVuZCAmJiBQeV9JU1hESUdJVChzWzBdKSAmJiBQeV9JU1hESUdJVChzWzFdKSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB4ID0gMDsKLSAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKnMpOwotICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgeCA9IGMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoUHlfSVNMT1dFUihjKSkKLSAgICAgICAgICAgICAgICAgICAgeCA9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHggPSAxMCArIGMgLSAnQSc7Ci0gICAgICAgICAgICAgICAgeCA9IHggPDwgNDsKLSAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKnMpOwotICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgeCArPSBjIC0gJzAnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5X0lTTE9XRVIoYykpCi0gICAgICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnQSc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IHg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAocysxIDwgZW5kKSB7CisgICAgICAgICAgICAgICAgaW50IGRpZ2l0MSwgZGlnaXQyOworICAgICAgICAgICAgICAgIGRpZ2l0MSA9IF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSyhzWzBdKV07CisgICAgICAgICAgICAgICAgZGlnaXQyID0gX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKHNbMV0pXTsKKyAgICAgICAgICAgICAgICBpZiAoZGlnaXQxIDwgMTYgJiYgZGlnaXQyIDwgMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSgoZGlnaXQxIDw8IDQpICsgZGlnaXQyKTsKKyAgICAgICAgICAgICAgICAgICAgcyArPSAyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBpbnZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0cyAqLworCiAgICAgICAgICAgICBpZiAoIWVycm9ycyB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBcXHggZXNjYXBlIGF0IHBvc2l0aW9uICVkIiwKQEAgLTEwODMsMTggKzEyMDUsMjAgQEAKICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmIFB5X0lTWERJR0lUKHNbMF0pKQogICAgICAgICAgICAgICAgIHMrKzsgLyogYW5kIGEgaGV4ZGlnaXQgKi8KICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAnXFwlYyciLCAqKC0tcykpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgcy0tOwogICAgICAgICAgICAgZ290byBub25fZXNjOyAvKiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHVuZXNjYXBlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYtOCBieXRlcyBtYXkgZm9sbG93LiAqLwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwLWJ1ZiA8IG5ld2xlbikKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZ2LCBwIC0gYnVmKTsKLSAgICByZXR1cm4gdjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcCk7CisKICAgZmFpbGVkOgotICAgIFB5X0RFQ1JFRih2KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xMzQ5LDEyICsxNDczLDEyIEBACiAgICAgfQogICAgIGkgPSAwOwogICAgIGlmIChpIDwgc2l6ZSkgewotICAgICAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwsIGEtPm9iX3N2YWwsIFB5X1NJWkUoYSkpOworICAgICAgICBtZW1jcHkob3AtPm9iX3N2YWwsIGEtPm9iX3N2YWwsIFB5X1NJWkUoYSkpOwogICAgICAgICBpID0gUHlfU0laRShhKTsKICAgICB9CiAgICAgd2hpbGUgKGkgPCBzaXplKSB7CiAgICAgICAgIGogPSAoaSA8PSBzaXplLWkpICA/ICBpICA6ICBzaXplLWk7Ci0gICAgICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCtpLCBvcC0+b2Jfc3ZhbCwgaik7CisgICAgICAgIG1lbWNweShvcC0+b2Jfc3ZhbCtpLCBvcC0+b2Jfc3ZhbCwgaik7CiAgICAgICAgIGkgKz0gajsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKQEAgLTEzNjMsMjQgKzE0ODcsNyBAQAogc3RhdGljIGludAogYnl0ZXNfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9idWZmZXIgdmFyZzsKLSAgICAgICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlfU0laRShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZy5idWYsIHZhcmcubGVuLCAwKTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7Ci0gICAgICAgIHJldHVybiBwb3MgPj0gMDsKLSAgICB9Ci0gICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPj0gMjU2KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHJldHVybiBtZW1jaHIoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIChpbnQpIGl2YWwsIFB5X1NJWkUoc2VsZikpICE9IE5VTEw7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb250YWlucyhQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJnKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzOTMsNyArMTUwMCw3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygodW5zaWduZWQgY2hhcilhLT5vYl9zdmFsW2ldKTsKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogYnl0ZXNfY29tcGFyZV9lcShQeUJ5dGVzT2JqZWN0ICphLCBQeUJ5dGVzT2JqZWN0ICpiKQogewogICAgIGludCBjbXA7CkBAIC0xNjI3LDggKzE3MzQsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJkZTQ0ZGFjYjM2ZWYyZSBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTIxMjZiNTg0NGMxZDhlZiBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKQEAgLTE2NTIsNyArMTc1OSw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5wYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBzZXA6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtMTY2OCw3ICsxNzc0LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3BhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1MzJiMzkyYTE3ZmY2OTUgaW5wdXQ9YmM4NTVkYzYzY2E5NDlkZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1MzJiMzkyYTE3ZmY2OTUgaW5wdXQ9NjFjY2E5NTUxOTQwNjA5OV0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfcGFydGl0aW9uKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLApAQCAtMTY4MCw3ICsxNzg2LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJwYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBzZXA6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtMTY5Niw3ICsxODAxLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JwYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY1ODhmZmYyNjJhOTE3MGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY3ZjY4OWU2M2E2MmQ0NzhdKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX3JwYXJ0aXRpb24oCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsCkBAIC0xNzE0LDggKzE4MTksOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiNjU3MGI5Nzc5MTFkODggaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLworYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYTY5OGQ5ZWEwMWUxYzhmIGlucHV0PTBmODZjOWYyOGY3ZDdiN2JdKi8KIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwpAQCAtMTc1Myw4ICsxODU4LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2pvaW4oUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM0YWZmMTQ3NjRmZjk5NyBpbnB1dD03ZmUzNzdiOTViZDU0OWQyXSovCitieXRlc19qb2luKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDQ2ZjM3OWY2MjZmNmY4IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oKFB5T2JqZWN0KilzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcyk7CiB9CkBAIC0xNzY3LDE1OCArMTg3MiwzMCBAQAogICAgIHJldHVybiBieXRlc19qb2luKChQeUJ5dGVzT2JqZWN0KilzZXAsIHgpOwogfQogCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWJ5dGVzX2ZpbmRfaW50ZXJuYWwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCi17Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfYnVmZmVyIHN1YmJ1ZjsKLSAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBsZW4sIHN1Yl9sZW47Ci0gICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiAtMjsKLQotICAgIGlmIChzdWJvYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZzdWJidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMjsKLQotICAgICAgICBzdWIgPSBzdWJidWYuYnVmOwotICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0gICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKLSAgICAgICAgcmVzID0gLTE7Ci0gICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxCi0jaWZuZGVmIEhBVkVfTUVNUkNIUgotICAgICAgICAgICAgJiYgZGlyID4gMAotI2VuZGlmCi0gICAgKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gKnN1YjsKLSAgICAgICAgaW50IG1vZGUgPSAoZGlyID4gMCkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2Zhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKAotICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIGlmIChyZXMgPj0gMCkKLSAgICAgICAgICAgIHJlcyArPSBzdGFydDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChkaXIgPiAwKQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgIH0KLQotICAgIGlmIChzdWJvYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLVB5RG9jX1NUUlZBUihmaW5kX19kb2NfXywKLSJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic3RyaW5nIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2ZpbmQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19maW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAotIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2luZGV4KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZXNfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzdHJpbmcgbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19pbmRleChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJmaW5kX19kb2NfXywKLSJCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzdHJpbmcgc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcmZpbmQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJpbmRleF9fZG9jX18sCi0iQi5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yaW5kZXgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0cmluZyBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JpbmRleChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIApAQCAtMjAwNSw3ICsxOTgyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwMTYsNyArMTk5Miw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19zdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PTM3ZGFhNWZhZDEzOTVkOTVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PThhMzU0NjQwZTRlMGIzZWZdKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgQk9USFNUUklQLCBieXRlcyk7CiB9CkBAIC0yMDI0LDcgKzIwMDAsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMubHN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwMzUsNyArMjAxMCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19sc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD04ODgxMWIwOWRmYmMyOTg4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD05YmFmZjQzOThjM2Y2ODU3XSovCiB7CiAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIExFRlRTVFJJUCwgYnl0ZXMpOwogfQpAQCAtMjA0Myw3ICsyMDE4LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJzdHJpcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCiAgICAgLwogCkBAIC0yMDU0LDgxICsyMDI4LDM3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ3ZTM4MTVjOTU0NDdkYSBpbnB1dD04ZjkzYzljZDM2MWYwMTQwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ3ZTM4MTVjOTU0NDdkYSBpbnB1dD1iNzhhZjQ0NWM3MjdlMzJiXSovCiB7CiAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIFJJR0hUU1RSSVAsIGJ5dGVzKTsKIH0KIAogCi1QeURvY19TVFJWQVIoY291bnRfX2RvY19fLAotIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgc3ViIGluXG5cCi1zdHJpbmcgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCi1hcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2NvdW50KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpzdWJfb2JqOwotICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwotICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotCi0gICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmNvdW50X29iajsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHN1Yl9vYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJfb2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgc3ViID0gdnN1Yi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSB2c3ViLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpKTsKLQotICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKLSAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgKTsKLQotICAgIGlmIChzdWJfb2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKLQotICAgIHJldHVybiBjb3VudF9vYmo7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb3VudChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMudHJhbnNsYXRlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgdGFibGU6IG9iamVjdAogICAgICAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LgotICAgIFsKLSAgICBkZWxldGVjaGFyczogb2JqZWN0Ci0gICAgXQogICAgIC8KKyAgICBkZWxldGUgYXMgZGVsZXRlY2hhcnM6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJwogCiBSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIAotQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK0FsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLgogVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzM2RmODUwZWI1MGJmOGQgaW5wdXQ9ZDhmYTU1MTlkN2NjNGJlN10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzYmUzNDM3ZjE5NTYyMTEgaW5wdXQ9MGVjZGYxNTlmNjU0MjMzY10qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwogICAgIFB5X2J1ZmZlciB0YWJsZV92aWV3ID0ge05VTEwsIE5VTEx9OwpAQCAtMjE4OSw3ICsyMTE5LDcgQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CisgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKICAgICBpbnB1dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGlucHV0X29iaik7CiAKICAgICBpZiAoZGVsbGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewpAQCAtMjI2NSw0OTggKzIxOTUsNiBAQAogICAgIHJldHVybiBfUHlfYnl0ZXNfbWFrZXRyYW5zKGZybSwgdG8pOwogfQogCi0vKiBmaW5kIGFuZCBjb3VudCBjaGFyYWN0ZXJzIGFuZCBzdWJzdHJpbmdzICovCi0KLSNkZWZpbmUgZmluZGNoYXIodGFyZ2V0LCB0YXJnZXRfbGVuLCBjKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoY2hhciAqKW1lbWNocigoY29uc3Qgdm9pZCAqKSh0YXJnZXQpLCBjLCB0YXJnZXRfbGVuKSkKLQotLyogU3RyaW5nIG9wcyBtdXN0IHJldHVybiBhIHN0cmluZy4gICovCi0vKiBJZiB0aGUgb2JqZWN0IGlzIHN1YmNsYXNzIG9mIHN0cmluZywgY3JlYXRlIGEgY29weSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmV0dXJuX3NlbGYoUHlCeXRlc09iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgfQotICAgIHJldHVybiAoUHlCeXRlc09iamVjdCAqKVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLAotICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpKTsKLX0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1jb3VudGNoYXIoY29uc3QgY2hhciAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldF9sZW4sIGNoYXIgYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBQeV9zc2l6ZV90IGNvdW50PTA7Ci0gICAgY29uc3QgY2hhciAqc3RhcnQ9dGFyZ2V0OwotICAgIGNvbnN0IGNoYXIgKmVuZD10YXJnZXQrdGFyZ2V0X2xlbjsKLQotICAgIHdoaWxlICggKHN0YXJ0PWZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGMpKSAhPSBOVUxMICkgewotICAgICAgICBjb3VudCsrOwotICAgICAgICBpZiAoY291bnQgPj0gbWF4Y291bnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RhcnQgKz0gMTsKLSAgICB9Ci0gICAgcmV0dXJuIGNvdW50OwotfQotCi0KLS8qIEFsZ29yaXRobXMgZm9yIGRpZmZlcmVudCBjYXNlcyBvZiBzdHJpbmcgcmVwbGFjZW1lbnQgKi8KLQotLyogbGVuKHNlbGYpPj0xLCBmcm9tPSIiLCBsZW4odG8pPj0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9pbnRlcmxlYXZlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIGk7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7Ci0gICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KLSAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pCi0gICAgICAgIGNvdW50ID0gbWF4Y291bnQ7Ci0gICAgZWxzZQotICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLwotICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50IGJ5dGVzIGFyZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47Ci0KLSAgICBpZiAoISAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAvKiBUT0RPOiBzcGVjaWFsIGNhc2Ugc2luZ2xlIGNoYXJhY3Rlciwgd2hpY2ggZG9lc24ndCBuZWVkIG1lbWNweSAqLwotCi0gICAgLyogTGF5IHRoZSBmaXJzdCBvbmUgZG93biAoZ3VhcmFudGVlZCB0aGlzIHdpbGwgb2NjdXIpICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICBjb3VudCAtPSAxOwotCi0gICAgZm9yIChpPTA7IGk8Y291bnQ7IGkrKykgewotICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgfQotCi0gICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuLWkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogU3BlY2lhbCBjYXNlIGZvciBkZWxldGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIgKi8KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gY291bnQ7ICAvKiBmcm9tX2xlbiA9PSAxICovCi0gICAgYXNzZXJ0KHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkgewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gKGNvdW50ICogZnJvbV9sZW4pOwotICAgIGFzc2VydCAocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7Ci0KLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0KLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgY2hhciB0b19jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3MsICpzdGFydCwgKmVuZCwgKm5leHQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKLQotICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0LXNlbGZfcyk7Ci0gICAgKnN0YXJ0ID0gdG9fYzsKLSAgICBzdGFydCsrOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKm5leHQgPSB0b19jOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKmVuZDsKLSAgICBjaGFyICpzZWxmX3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgIGlmIChvZmZzZXQgPT0gLTEpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIG9mZnNldDsKLSAgICBQeV9NRU1DUFkoc3RhcnQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldD09LTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHN0YXJ0K29mZnNldCwgdG9fcywgZnJvbV9sZW4pOwotICAgICAgICBzdGFydCArPSBvZmZzZXQrZnJvbV9sZW47Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSAxID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZyhQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KSB7Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIGZyb21fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0K29mZnNldDsKLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBpZiAobWF4Y291bnQgPCAwKSB7Ci0gICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgfSBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKG1heGNvdW50ID09IDAgfHwKLSAgICAgICAgKGZyb21fbGVuID09IDAgJiYgdG9fbGVuID09IDApKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgemVyby1sZW5ndGggc3BlY2lhbCBjYXNlcyAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IDApIHsKLSAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIHN0cmluZyBldmVyeXdoZXJlLiAgICovCi0gICAgICAgIC8qICAgID4+PiAiUHl0aG9uIi5yZXBsYWNlKCIiLCAiLiIpICAgICAqLwotICAgICAgICAvKiAgICAnLlAueS50Lmguby5uLicgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2VfaW50ZXJsZWF2ZShzZWxmLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci0KLSAgICAvKiBFeGNlcHQgZm9yICIiLnJlcGxhY2UoIiIsICJBIikgPT0gIkEiIHRoZXJlIGlzIG5vIHdheSBiZXlvbmQgdGhpcyAqLwotICAgIC8qIHBvaW50IGZvciBhbiBlbXB0eSBzZWxmIHN0cmluZyB0byBnZW5lcmF0ZSBhIG5vbi1lbXB0eSBzdHJpbmcgKi8KLSAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IHN0cmluZyAqLwotICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmICh0b19sZW4gPT0gMCkgewotICAgICAgICAvKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mICdmcm9tJyBzdHJpbmcgKi8KLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fbGVuLCBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IHRvX2xlbikgewotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICB0b19zWzBdLAotICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sCi0gICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogT3RoZXJ3aXNlIHVzZSB0aGUgbW9yZSBnZW5lcmljIGFsZ29yaXRobXMgKi8KLSAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKHNlbGYsIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBsZW4oJ2Zyb20nKT49MiwgbGVuKCd0bycpPj0xICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgfQotfQotCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJlcGxhY2UKQEAgLTI3NzUsMTU2ICsyMjEzLDI4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCitieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAogICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDAzZGM5ZDdhODNjNWExZCBpbnB1dD1iMmZiYmYwYmYwNGRlOGU1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk0ZmE1ODhiNmI5YzEwNCBpbnB1dD1iMmZiYmYwYmYwNGRlOGU1XSovCiB7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZXNPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOworICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZSgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKIH0KIAogLyoqIEVuZCBEQUxLRSAqKi8KIAotLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHNlbGYKLSAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKLSAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KLSAqLwotUHlfTE9DQUwoaW50KQotX2J5dGVzX3RhaWxtYXRjaChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotICAgIFB5X3NzaXplX3Qgc2xlbjsKLSAgICBQeV9idWZmZXIgc3ViX3ZpZXcgPSB7TlVMTCwgTlVMTH07Ci0gICAgY29uc3QgY2hhciogc3ViOwotICAgIGNvbnN0IGNoYXIqIHN0cjsKLQotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHN1YnN0cikpIHsKLSAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3Vic3RyKTsKLSAgICAgICAgc2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3Vic3RyKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vic3RyLCAmc3ViX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgc3ViID0gc3ViX3ZpZXcuYnVmOwotICAgICAgICBzbGVuID0gc3ViX3ZpZXcubGVuOwotICAgIH0KLSAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0KLSAgICBpZiAoZGlyZWN0aW9uIDwgMCkgewotICAgICAgICAvKiBzdGFydHN3aXRoICovCi0gICAgICAgIGlmIChzdGFydCtzbGVuID4gbGVuKQotICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBlbmRzd2l0aCAqLwotICAgICAgICBpZiAoZW5kLXN0YXJ0IDwgc2xlbiB8fCBzdGFydCA+IGxlbikKLSAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0KLSAgICAgICAgaWYgKGVuZC1zbGVuID4gc3RhcnQpCi0gICAgICAgICAgICBzdGFydCA9IGVuZCAtIHNsZW47Ci0gICAgfQotICAgIGlmIChlbmQtc3RhcnQgPCBzbGVuKQotICAgICAgICBnb3RvIG5vdGZvdW5kOwotICAgIGlmIChtZW1jbXAoc3RyK3N0YXJ0LCBzdWIsIHNsZW4pICE9IDApCi0gICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7Ci0gICAgcmV0dXJuIDE7Ci0KLW5vdGZvdW5kOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKLSAgICByZXR1cm4gMDsKLX0KLQotCi1QeURvY19TVFJWQVIoc3RhcnRzd2l0aF9fZG9jX18sCi0iQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3N0YXJ0c3dpdGgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJzdGFydHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib3IgYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKGVuZHN3aXRoX19kb2NfXywKLSJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1zdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19lbmRzd2l0aChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImVuZHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCArMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2VuZHN3aXRoKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCkBAIC0yOTQ0LDkgKzIyNTQsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKK2J5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkMjAxNmZmOGUwYmIxNzYgaW5wdXQ9OTU4MTc0NzY5ZDJhNDBjYV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2NDlhNTNkZGUyN2IzMTQgaW5wdXQ9OTU4MTc0NzY5ZDJhNDBjYV0qLwogewogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoKFB5T2JqZWN0KilzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KQEAgLTI5NjQsOCArMjI3NCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk1YzM1OThmNzgzM2NhZCBpbnB1dD03ZjRhYWM2NzE0NGY5OTQ0XSovCitieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0ODQxNDlhNWQ4ODBmZmIgaW5wdXQ9N2Y0YWFjNjcxNDRmOTk0NF0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCkBAIC0yOTczLDIyICsyMjgzLDYgQEAKICAgICAgICAgKTsKIH0KIAotc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VQ1M0IGMpCi17Ci0gICAgaWYgKGMgPj0gMTI4KQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgIHJldHVybiBjIC0gJzAnOwotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlfSVNVUFBFUihjKSkKLSAgICAgICAgICAgIGMgPSBQeV9UT0xPV0VSKGMpOwotICAgICAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICByZXR1cm4gYyAtICdhJyArIDEwOwotICAgIH0KLSAgICByZXR1cm4gLTE7Ci19Ci0KIC8qW2NsaW5pYyBpbnB1dF0KIEBjbGFzc21ldGhvZAogYnl0ZXMuZnJvbWhleApAQCAtMzAwNiw0NyArMjMwMCw4OCBAQAogYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOTczYWNjNjM2NjFiYjJlIGlucHV0PWJmNGQxYzM2MTY3MGFjZDNdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3c3RyaW5nOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlCeXRlc19Gcm9tSGV4KHN0cmluZywgMCk7CisgICAgaWYgKHR5cGUgIT0gJlB5Qnl0ZXNfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCAqKXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBOVUxMKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbUhleChQeU9iamVjdCAqc3RyaW5nLCBpbnQgdXNlX2J5dGVhcnJheSkKK3sKICAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwotICAgIGludCB0b3AsIGJvdDsKLSAgICB2b2lkICpkYXRhOwotICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIFB5X3NzaXplX3QgaGV4bGVuLCBpbnZhbGlkX2NoYXI7CisgICAgdW5zaWduZWQgaW50IHRvcCwgYm90OworICAgIFB5X1VDUzEgKnN0ciwgKmVuZDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci51c2VfYnl0ZWFycmF5ID0gdXNlX2J5dGVhcnJheTsKIAogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7CiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKICAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOwogCi0gICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KLSAgICBuZXdzdHJpbmcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKLSAgICBpZiAoIW5ld3N0cmluZykKKyAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShzdHJpbmcpKSB7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgICAgICB1bnNpZ25lZCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAvKiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBub24tQVNDSUkgY2hhcmFjdGVyICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBoZXhsZW47IGkrKykgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID49IDEyOCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX2NoYXIgPSBpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChzdHJpbmcpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICBzdHIgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOworCisgICAgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KKyAgICBidWYgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBoZXhsZW4gLyAyKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld3N0cmluZyk7Ci0gICAgZm9yIChpID0gaiA9IDA7IGkgPCBoZXhsZW47IGkgKz0gMikgeworCisgICAgZW5kID0gc3RyICsgaGV4bGVuOworICAgIHdoaWxlIChzdHIgPCBlbmQpIHsKICAgICAgICAgLyogc2tpcCBvdmVyIHNwYWNlcyBpbiB0aGUgaW5wdXQgKi8KLSAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09ICcgJykKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGkgPj0gaGV4bGVuKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRvcCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkpOwotICAgICAgICBpZiAodG9wID09IC0xIHx8IGJvdCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGkpOworICAgICAgICBpZiAoKnN0ciA9PSAnICcpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBzdHIrKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKCpzdHIgPT0gJyAnKTsKKyAgICAgICAgICAgIGlmIChzdHIgPj0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdG9wID0gX1B5TG9uZ19EaWdpdFZhbHVlWypzdHJdOworICAgICAgICBpZiAodG9wID49IDE2KSB7CisgICAgICAgICAgICBpbnZhbGlkX2NoYXIgPSBzdHIgLSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBidWZbaisrXSA9ICh0b3AgPDwgNCkgKyBib3Q7CisgICAgICAgIHN0cisrOworCisgICAgICAgIGJvdCA9IF9QeUxvbmdfRGlnaXRWYWx1ZVsqc3RyXTsKKyAgICAgICAgaWYgKGJvdCA+PSAxNikgeworICAgICAgICAgICAgaW52YWxpZF9jaGFyID0gc3RyIC0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgc3RyKys7CisKKyAgICAgICAgKmJ1ZisrID0gKHVuc2lnbmVkIGNoYXIpKCh0b3AgPDwgNCkgKyBib3QpOwogICAgIH0KLSAgICBpZiAoaiAhPSBieXRlc2xlbiAmJiBfUHlCeXRlc19SZXNpemUoJm5ld3N0cmluZywgaikgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIHJldHVybiBuZXdzdHJpbmc7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGJ1Zik7CiAKICAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihuZXdzdHJpbmcpOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCisgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGludmFsaWRfY2hhcik7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMzA3NiwxNyArMjQxMSwyMCBAQAogICAgIHsiX19nZXRuZXdhcmdzX18iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNfZ2V0bmV3YXJncywgIE1FVEhfTk9BUkdTfSwKICAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAotICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCi0gICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlc19jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAorICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NlbnRlcl9fZG9jX199LAorICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfY291bnQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NvdW50X19kb2NfX30sCiAgICAgQllURVNfREVDT0RFX01FVEhPRERFRgogICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgZW5kc3dpdGhfX2RvY19ffSwKKyAgICAgX1B5X2VuZHN3aXRoX19kb2NfX30sCiAgICAgeyJleHBhbmR0YWJzIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9leHBhbmR0YWJzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICBleHBhbmR0YWJzX19kb2NfX30sCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2ZpbmQsIE1FVEhfVkFSQVJHUywgZmluZF9fZG9jX199LAorICAgICBfUHlfZXhwYW5kdGFic19fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19maW5kLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9maW5kX19kb2NfX30sCiAgICAgQllURVNfRlJPTUhFWF9NRVRIT0RERUYKICAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlc19oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKLSAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCisgICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19pbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfaW5kZXhfX2RvY19ffSwKICAgICB7ImlzYWxudW0iLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxudW0sIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXNhbG51bV9fZG9jX199LAogICAgIHsiaXNhbHBoYSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbHBoYSwgTUVUSF9OT0FSR1MsCkBAIC0zMTAyLDM4ICsyNDQwLDQwIEBACiAgICAgeyJpc3VwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc3VwcGVyLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzdXBwZXJfX2RvY19ffSwKICAgICBCWVRFU19KT0lOX01FVEhPRERFRgotICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIGxqdXN0X19kb2NfX30sCisgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X2xqdXN0X19kb2NfX30sCiAgICAgeyJsb3dlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbG93ZXIsIE1FVEhfTk9BUkdTLCBfUHlfbG93ZXJfX2RvY19ffSwKICAgICBCWVRFU19MU1RSSVBfTUVUSE9EREVGCiAgICAgQllURVNfTUFLRVRSQU5TX01FVEhPRERFRgogICAgIEJZVEVTX1BBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFU19SRVBMQUNFX01FVEhPRERFRgotICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmZpbmQsIE1FVEhfVkFSQVJHUywgcmZpbmRfX2RvY19ffSwKLSAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19yaW5kZXgsIE1FVEhfVkFSQVJHUywgcmluZGV4X19kb2NfX30sCi0gICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKKyAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JmaW5kLCBNRVRIX1ZBUkFSR1MsIF9QeV9yZmluZF9fZG9jX199LAorICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JpbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfcmluZGV4X19kb2NfX30sCisgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X3JqdXN0X19kb2NfX30sCiAgICAgQllURVNfUlBBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFU19SU1BMSVRfTUVUSE9EREVGCiAgICAgQllURVNfUlNUUklQX01FVEhPRERFRgogICAgIEJZVEVTX1NQTElUX01FVEhPRERFRgogICAgIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3N0YXJ0c3dpdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgc3RhcnRzd2l0aF9fZG9jX199LAorICAgICBfUHlfc3RhcnRzd2l0aF9fZG9jX199LAogICAgIEJZVEVTX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKICAgICBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGCiAgICAgeyJ1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdXBwZXIsIE1FVEhfTk9BUkdTLCBfUHlfdXBwZXJfX2RvY19ffSwKLSAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCB6ZmlsbF9fZG9jX199LAorICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIF9QeV96ZmlsbF9fZG9jX199LAogICAgIHtOVUxMLCAgICAgTlVMTH0gICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19tb2QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQorYnl0ZXNfbW9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIGlmICghUHlCeXRlc19DaGVjayh2KSkKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soc2VsZikpIHsKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwotICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXQodiwgdyk7CisgICAgfQorICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXRFeChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCAwKTsKIH0KIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlc19hc19udW1iZXIgPSB7CkBAIC0zMjIyLDE3ICsyNTYyLDE1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAvKiBJcyBpdCBhbiBpbnRlZ2VyPyAqLwotICAgIHNpemUgPSBQeU51bWJlcl9Bc1NzaXplX3QoeCwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICBpZiAoUHlJbmRleF9DaGVjayh4KSkgeworICAgICAgICBzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KHgsIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBuZXcgPSBfUHlCeXRlc19Gcm9tU2l6ZShzaXplLCAxKTsKICAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjQyLDEwOCArMjU4MCw5MyBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21PYmplY3QoeCk7CiB9CiAKLVB5T2JqZWN0ICoKLVB5Qnl0ZXNfRnJvbU9iamVjdChQeU9iamVjdCAqeCkKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21CdWZmZXIoUHlPYmplY3QgKngpCiB7Ci0gICAgUHlPYmplY3QgKm5ldywgKml0OworICAgIFB5T2JqZWN0ICpuZXc7CisgICAgUHlfYnVmZmVyIHZpZXc7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHgsICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2aWV3Lmxlbik7CisgICAgaWYgKCFuZXcpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlCdWZmZXJfVG9Db250aWd1b3VzKCgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWwsCisgICAgICAgICAgICAgICAgJnZpZXcsIHZpZXcubGVuLCAnQycpIDwgMCkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBuZXc7CisKK2ZhaWw6CisgICAgUHlfWERFQ1JFRihuZXcpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBOVUxMOworfQorCisjZGVmaW5lIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIEdFVF9JVEVNKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2hhciAqc3RyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5T2JqZWN0ICppdGVtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFB5X1NJWkUoeCkpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RyID0gKChQeUJ5dGVzT2JqZWN0ICopYnl0ZXMpLT5vYl9zdmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRSh4KTsgaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGl0ZW0gPSBHRVRfSVRFTSgoeCksIGkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBOVUxMKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAqc3RyKysgPSAoY2hhcikgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21MaXN0KFB5T2JqZWN0ICp4KQoreworICAgIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIFB5TGlzdF9HRVRfSVRFTSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21UdXBsZShQeU9iamVjdCAqeCkKK3sKKyAgICBfUHlCeXRlc19GUk9NX0xJU1RfQk9EWSh4LCBQeVR1cGxlX0dFVF9JVEVNKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19QeUJ5dGVzX0Zyb21JdGVyYXRvcihQeU9iamVjdCAqaXQsIFB5T2JqZWN0ICp4KQoreworICAgIGNoYXIgKnN0cjsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7Ci0KLSAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHgpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0gICAgLyogVXNlIHRoZSBtb2Rlcm4gYnVmZmVyIGludGVyZmFjZSAqLwotICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih4KSkgewotICAgICAgICBQeV9idWZmZXIgdmlldzsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih4LCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgdmlldy5sZW4pOwotICAgICAgICBpZiAoIW5ldykKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cygoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2aWV3LCB2aWV3LmxlbiwgJ0MnKSA8IDApCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwotICAgICAgICByZXR1cm4gbmV3OwotICAgICAgZmFpbDoKLSAgICAgICAgUHlfWERFQ1JFRihuZXcpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soeCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCB1bmljb2RlIG9iamVjdCB0byBieXRlcyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKHgsIGkpLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsW2ldID0gKGNoYXIpIHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXc7Ci0gICAgfQotICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTSh4LCBpKSwgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3OwotICAgIH0KKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICAvKiBGb3IgaXRlcmF0b3IgdmVyc2lvbiwgY3JlYXRlIGEgc3RyaW5nIG9iamVjdCBhbmQgcmVzaXplIGFzIG5lZWRlZCAqLwogICAgIHNpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KHgsIDY0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAvKiBBbGxvY2F0ZSBhbiBleHRyYSBieXRlIHRvIHByZXZlbnQgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgpIGZyb20KLSAgICAgICByZXR1cm5pbmcgYSBzaGFyZWQgZW1wdHkgYnl0ZXMgc3RyaW5nLiBUaGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2UKLSAgICAgICB3YW50IHRvIGNhbGwgX1B5Qnl0ZXNfUmVzaXplKCkgdGhlIHJldHVybmVkIG9iamVjdCwgd2hpY2ggd2UgY2FuCi0gICAgICAgb25seSBkbyBvbiBieXRlcyBvYmplY3RzIHdpdGggcmVmY291bnQgPT0gMS4gKi8KLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICBzaXplID0gMTsKLSAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChuZXcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5X1JFRkNOVChuZXcpID09IDEpOwogCi0gICAgLyogR2V0IHRoZSBpdGVyYXRvciAqLwotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih4KTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAKICAgICAvKiBSdW4gdGhlIGl0ZXJhdG9yIHRvIGV4aGF1c3Rpb24gKi8KICAgICBmb3IgKGkgPSAwOyA7IGkrKykgewpAQCAtMzM1OSw3ICsyNjgyLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIEludGVycHJldCBpdCBhcyBhbiBpbnQgKF9faW5kZXhfXykgKi8KLSAgICAgICAgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfVmFsdWVFcnJvcik7CisgICAgICAgIHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTMzNzMsMjEgKzI2OTYsNTggQEAKIAogICAgICAgICAvKiBBcHBlbmQgdGhlIGJ5dGUgKi8KICAgICAgICAgaWYgKGkgPj0gc2l6ZSkgewotICAgICAgICAgICAgc2l6ZSA9IDIgKiBzaXplICsgMTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJm5ldywgc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9SZXNpemUoJndyaXRlciwgc3RyLCBzaXplKzEpOworICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKKyAgICAgICAgKnN0cisrID0gKGNoYXIpIHZhbHVlOwogICAgIH0KLSAgICBfUHlCeXRlc19SZXNpemUoJm5ldywgaSk7CiAKLSAgICAvKiBDbGVhbiB1cCBhbmQgcmV0dXJuIHN1Y2Nlc3MgKi8KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBuZXc7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzdHIpOwogCiAgIGVycm9yOgotICAgIFB5X1hERUNSRUYoaXQpOwotICAgIFB5X1hERUNSRUYobmV3KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitQeUJ5dGVzX0Zyb21PYmplY3QoUHlPYmplY3QgKngpCit7CisgICAgUHlPYmplY3QgKml0LCAqcmVzdWx0OworCisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdCh4KSkgeworICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIC8qIFVzZSB0aGUgbW9kZXJuIGJ1ZmZlciBpbnRlcmZhY2UgKi8KKyAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tQnVmZmVyKHgpOworCisgICAgaWYgKFB5TGlzdF9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbUxpc3QoeCk7CisKKyAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbVR1cGxlKHgpOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soeCkpIHsKKyAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHgpOworICAgICAgICBpZiAoaXQgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUl0ZXJhdG9yKGl0LCB4KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0ICclLjIwMHMnIG9iamVjdCB0byBieXRlcyIsCisgICAgICAgICAgICAgICAgIHgtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zNDA1LDcgKzI3NjUsNyBAQAogICAgIG4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRtcCk7CiAgICAgcG5ldyA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIG4pOwogICAgIGlmIChwbmV3ICE9IE5VTEwpIHsKLSAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHBuZXcpLAorICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocG5ldyksCiAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh0bXApLCBuKzEpOwogICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKilwbmV3KS0+b2Jfc2hhc2ggPQogICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopdG1wKS0+b2Jfc2hhc2g7CkBAIC0zNzQ3LDMgKzMxMDcsMjgyIEBACiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGl0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CisKKworLyogX1B5Qnl0ZXNXcml0ZXIgQVBJICovCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgorI2Vsc2UKKyAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAorI2VuZGlmCisKK3ZvaWQKK19QeUJ5dGVzV3JpdGVyX0luaXQoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcikKK3sKKyAgICAvKiBTZXQgYWxsIGF0dHJpYnV0ZXMgYmVmb3JlIHNtYWxsX2J1ZmZlciB0byAwICovCisgICAgbWVtc2V0KHdyaXRlciwgMCwgb2Zmc2V0b2YoX1B5Qnl0ZXNXcml0ZXIsIHNtYWxsX2J1ZmZlcikpOworI2lmZGVmIFB5X0RFQlVHCisgICAgbWVtc2V0KHdyaXRlci0+c21hbGxfYnVmZmVyLCAweENCLCBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpKTsKKyNlbmRpZgorfQorCit2b2lkCitfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpCit7CisgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworfQorCitQeV9MT0NBTF9JTkxJTkUoY2hhciopCitfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyKQoreworICAgIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworICAgICAgICByZXR1cm4gd3JpdGVyLT5zbWFsbF9idWZmZXI7CisgICAgfQorICAgIGVsc2UgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIHJldHVybiBQeUJ5dGVBcnJheV9BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyICE9IE5VTEwpOworICAgICAgICByZXR1cm4gUHlCeXRlc19BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgIH0KK30KKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitfUHlCeXRlc1dyaXRlcl9HZXRTaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKK3sKKyAgICBjaGFyICpzdGFydCA9IF9QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKHdyaXRlcik7CisgICAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3RyID49IHN0YXJ0KTsKKyAgICBhc3NlcnQoc3RyIC0gc3RhcnQgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIHJldHVybiBzdHIgLSBzdGFydDsKK30KKworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKK3sKKyNpZmRlZiBQeV9ERUJVRworICAgIGNoYXIgKnN0YXJ0LCAqZW5kOworCisgICAgaWYgKHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlQXJyYXlfQ2hlY2tFeGFjdCh3cml0ZXItPmJ1ZmZlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVja0V4YWN0KHdyaXRlci0+YnVmZmVyKSk7CisgICAgICAgIGFzc2VydChQeV9SRUZDTlQod3JpdGVyLT5idWZmZXIpID09IDEpOworICAgIH0KKworICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgLyogYnl0ZWFycmF5IGhhcyBpdHMgb3duIG92ZXJhbGxvY2F0aW9uIGFsZ29yaXRobSwKKyAgICAgICAgICAgd3JpdGVyIG92ZXJhbGxvY2F0aW9uIG11c3QgYmUgZGlzYWJsZWQgKi8KKyAgICAgICAgYXNzZXJ0KCF3cml0ZXItPm92ZXJhbGxvY2F0ZSk7CisgICAgfQorCisgICAgYXNzZXJ0KDAgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIGFzc2VydCgwIDw9IHdyaXRlci0+bWluX3NpemUgJiYgd3JpdGVyLT5taW5fc2l6ZSA8PSB3cml0ZXItPmFsbG9jYXRlZCk7CisgICAgLyogdGhlIGxhc3QgYnl0ZSBtdXN0IGFsd2F5cyBiZSBudWxsICovCisgICAgc3RhcnQgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpOworICAgIGFzc2VydChzdGFydFt3cml0ZXItPmFsbG9jYXRlZF0gPT0gMCk7CisKKyAgICBlbmQgPSBzdGFydCArIHdyaXRlci0+YWxsb2NhdGVkOworICAgIGFzc2VydChzdHIgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0YXJ0IDw9IHN0ciAmJiBzdHIgPD0gZW5kKTsKKyNlbmRpZgorfQorCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnN0ciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkLCBwb3M7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICBhc3NlcnQod3JpdGVyLT5hbGxvY2F0ZWQgPCBzaXplKTsKKworICAgIGFsbG9jYXRlZCA9IHNpemU7CisgICAgaWYgKHdyaXRlci0+b3ZlcmFsbG9jYXRlCisgICAgICAgICYmIGFsbG9jYXRlZCA8PSAoUFlfU1NJWkVfVF9NQVggLSBhbGxvY2F0ZWQgLyBPVkVSQUxMT0NBVEVfRkFDVE9SKSkgeworICAgICAgICAvKiBvdmVyYWxsb2NhdGUgdG8gbGltaXQgdGhlIG51bWJlciBvZiByZWFsbG9jKCkgKi8KKyAgICAgICAgYWxsb2NhdGVkICs9IGFsbG9jYXRlZCAvIE9WRVJBTExPQ0FURV9GQUNUT1I7CisgICAgfQorCisgICAgcG9zID0gX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZSh3cml0ZXIsIHN0cik7CisgICAgaWYgKCF3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSh3cml0ZXItPmJ1ZmZlciwgYWxsb2NhdGVkKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgLyogd3JpdGVyLT5hbGxvY2F0ZWQgY2FuIGJlIHNtYWxsZXIgdGhhbiB3cml0ZXItPmJ1ZmZlci0+b2JfYWxsb2MsCisgICAgICAgICAgICAgICBidXQgd2UgY2Fubm90IHVzZSBvYl9hbGxvYyBiZWNhdXNlIGJ5dGVzIG1heSBuZWVkIHRvIGJlIG1vdmVkCisgICAgICAgICAgICAgICB0byB1c2UgdGhlIHdob2xlIGJ1ZmZlci4gYnl0ZWFycmF5IHVzZXMgYW4gaW50ZXJuYWwgb3B0aW1pemF0aW9uCisgICAgICAgICAgICAgICB0byBhdm9pZCBtb3Zpbmcgb3IgY29weWluZyBieXRlcyB3aGVuIGJ5dGVzIGFyZSByZW1vdmVkIGF0IHRoZQorICAgICAgICAgICAgICAgYmVnaW5uaW5nIChleDogZGVsIGJ5dGVhcnJheVs6MV0pLiAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmd3JpdGVyLT5idWZmZXIsIGFsbG9jYXRlZCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogY29udmVydCBmcm9tIHN0YWNrIGJ1ZmZlciB0byBieXRlcyBvYmplY3QgYnVmZmVyICovCisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KQorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhbGxvY2F0ZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYWxsb2NhdGVkKTsKKyAgICAgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChwb3MgIT0gMCkgeworICAgICAgICAgICAgY2hhciAqZGVzdDsKKyAgICAgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICAgICAgZGVzdCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGVzdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIG1lbWNweShkZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+c21hbGxfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgIHBvcyk7CisgICAgICAgIH0KKworICAgICAgICB3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIgPSAwOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgIG1lbXNldCh3cml0ZXItPnNtYWxsX2J1ZmZlciwgMHhEQiwgc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKSk7CisjZW5kaWYKKyAgICB9CisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBhbGxvY2F0ZWQ7CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpICsgcG9zOworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworICAgIHJldHVybiBzdHI7CisKK2Vycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2Mod3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqc3RyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlfc3NpemVfdCBuZXdfbWluX3NpemU7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgLyogbm90aGluZyB0byBkbyAqLworICAgICAgICByZXR1cm4gc3RyOworICAgIH0KKworICAgIGlmICh3cml0ZXItPm1pbl9zaXplID4gUFlfU1NJWkVfVF9NQVggLSBzaXplKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2Mod3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5ld19taW5fc2l6ZSA9IHdyaXRlci0+bWluX3NpemUgKyBzaXplOworCisgICAgaWYgKG5ld19taW5fc2l6ZSA+IHdyaXRlci0+YWxsb2NhdGVkKQorICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9SZXNpemUod3JpdGVyLCBzdHIsIG5ld19taW5fc2l6ZSk7CisKKyAgICB3cml0ZXItPm1pbl9zaXplID0gbmV3X21pbl9zaXplOworICAgIHJldHVybiBzdHI7Cit9CisKKy8qIEFsbG9jYXRlIHRoZSBidWZmZXIgdG8gd3JpdGUgc2l6ZSBieXRlcy4KKyAgIFJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIGJ1ZmZlciBkYXRhLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9BbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgLyogZW5zdXJlIHRoYXQgX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoKSBpcyBvbmx5IGNhbGxlZCBvbmNlICovCisgICAgYXNzZXJ0KHdyaXRlci0+bWluX3NpemUgPT0gMCAmJiB3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlciA9IDE7CisjaWZkZWYgUHlfREVCVUcKKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcikgLSAxOworICAgIC8qIEluIGRlYnVnIG1vZGUsIGRvbid0IHVzZSB0aGUgZnVsbCBzbWFsbCBidWZmZXIgYmVjYXVzZSBpdCBpcyBsZXNzCisgICAgICAgZWZmaWNpZW50IHRoYW4gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHRvIGRldGVjdCBidWZmZXIgdW5kZXJmbG93CisgICAgICAgYW5kIGJ1ZmZlciBvdmVyZmxvdy4gVXNlIDEwIGJ5dGVzIG9mIHRoZSBzbWFsbCBidWZmZXIgdG8gdGVzdCBhbHNvCisgICAgICAgY29kZSB1c2luZyB0aGUgc21hbGxlciBidWZmZXIgaW4gZGVidWcgbW9kZS4KKworICAgICAgIERvbid0IG1vZGlmeSB0aGUgX1B5Qnl0ZXNXcml0ZXIgc3RydWN0dXJlICh1c2UgYSBzaG9ydGVyIHNtYWxsIGJ1ZmZlcikKKyAgICAgICBpbiBkZWJ1ZyBtb2RlIHRvIGFsc28gYmUgYWJsZSB0byBkZXRlY3Qgc3RhY2sgb3ZlcmZsb3cgd2hlbiBydW5uaW5nCisgICAgICAgdGVzdHMgaW4gZGVidWcgbW9kZS4gVGhlIF9QeUJ5dGVzV3JpdGVyIGlzIGxhcmdlIChtb3JlIHRoYW4gNTEyIGJ5dGVzKSwKKyAgICAgICBpZiBQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoKSBpcyBub3QgdXNlZCBpbiBkZWVwIEMgY2FsbGJhY2ssIHdlIG1heSBoaXQgYQorICAgICAgIHN0YWNrIG92ZXJmbG93LiAqLworICAgIHdyaXRlci0+YWxsb2NhdGVkID0gUHlfTUlOKHdyaXRlci0+YWxsb2NhdGVkLCAxMCk7CisgICAgLyogX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSgpIHJlcXVpcmVzIHRoZSBsYXN0IGJ5dGUgdG8gYmUgMCwKKyAgICAgICB0byBkZXRlY3QgYnVmZmVyIG92ZXJmbG93ICovCisgICAgd3JpdGVyLT5zbWFsbF9idWZmZXJbd3JpdGVyLT5hbGxvY2F0ZWRdID0gMDsKKyNlbHNlCisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpOworI2VuZGlmCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCB3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUJ5dGVzV3JpdGVyX0ZpbmlzaChfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpzdHIpCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKworICAgIHNpemUgPSBfUHlCeXRlc1dyaXRlcl9HZXRTaXplKHdyaXRlciwgc3RyKTsKKyAgICBpZiAoc2l6ZSA9PSAwICYmICF3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworICAgICAgICAvKiBHZXQgdGhlIGVtcHR5IGJ5dGUgc3RyaW5nIHNpbmdsZXRvbiAqLworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KKyAgICBlbHNlIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUod3JpdGVyLT5zbWFsbF9idWZmZXIsIHNpemUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSh3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IHdyaXRlci0+YnVmZmVyOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgaWYgKHNpemUgIT0gd3JpdGVyLT5hbGxvY2F0ZWQpIHsKKyAgICAgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKHJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9PSBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnl0ZXMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjaGFyICpzdHIgPSAoY2hhciAqKXB0cjsKKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtZW1jcHkoc3RyLCBieXRlcywgc2l6ZSk7CisgICAgc3RyICs9IHNpemU7CisKKyAgICByZXR1cm4gc3RyOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGFzc29iamVjdC5jIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCmluZGV4IDVlOGFjNTkuLmIwZWQwMjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xhc3NvYmplY3QuYworKysgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKQEAgLTMwMiwzNCArMzAyLDE5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tZXRob2RfY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorbWV0aG9kX2NhbGwoUHlPYmplY3QgKm1ldGhvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYzsKIAotICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYyk7CisgICAgc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKG1ldGhvZCk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlUdXBsZV9TaXplKGFyZyk7Ci0gICAgICAgIFB5T2JqZWN0ICpuZXdhcmcgPSBQeVR1cGxlX05ldyhhcmdjb3VudCArIDEpOwotICAgICAgICBpbnQgaTsKLSAgICAgICAgaWYgKG5ld2FyZyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIDAsIHNlbGYpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnY291bnQ7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgaSk7Ci0gICAgICAgICAgICBQeV9YSU5DUkVGKHYpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIGkrMSwgdik7Ci0gICAgICAgIH0KLSAgICAgICAgYXJnID0gbmV3YXJnOwotICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKChQeU9iamVjdCAqKWZ1bmMsIGFyZywga3cpOwotICAgIFB5X0RFQ1JFRihhcmcpOwotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKG1ldGhvZCk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChmdW5jLCBzZWxmLCBhcmdzLCBrd2FyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKaW5kZXggZTg3YTIyMS4uYzc1YWNiNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oCkBAIC0zOSw0NSArMzksMzggQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfVFJBTlNMQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9WQVJBUkdTLCBieXRlYXJyYXlfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwX3JpZ2h0XzEsIFB5T2JqZWN0ICpkZWxldGVjaGFycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV90cmFuc2xhdGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAiZGVsZXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOnRyYW5zbGF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRhYmxlOwotICAgIGludCBncm91cF9yaWdodF8xID0gMDsKICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOwogCi0gICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheS50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGRlbGV0ZWNoYXJzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtMTA4LDE3ICsxMDEsMjAgQEAKICAgICBQeV9idWZmZXIgdG8gPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6bWFrZXRyYW5zIiwKLSAgICAgICAgJmZybSwgJnRvKSkKKyAgICAgICAgJmZybSwgJnRvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1MiwxNyArMTQ4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVwbGFjZV9pbXBsKHNlbGYsICZvbGQsICZuZXcsIGNvdW50KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBvbGQgKi8KLSAgICBpZiAob2xkLm9iaikKKyAgICBpZiAob2xkLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIG5ldyAqLwotICAgIGlmIChuZXcub2JqKQorICAgIGlmIChuZXcub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTgyLDIzICsxODEsMjUgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246c3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKIAogZXhpdDoKQEAgLTI1NCwyMyArMjU1LDI1IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5IGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfUlNQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9yc3BsaXRfX2RvY19ffSwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnNwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246cnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMzIwLDggKzMyMyw5IEBACiAgICAgaW50IGl0ZW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5PJjppbnNlcnQiLAotICAgICAgICAmaW5kZXgsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICAgICAgJmluZGV4LCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIGl0ZW0pOwogCiBleGl0OgpAQCAtMzQ5LDggKzM1Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGl0ZW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9hcHBlbmRfaW1wbChzZWxmLCBpdGVtKTsKIAogZXhpdDoKQEAgLTM5NCw4ICszOTksOSBAQAogICAgIFB5X3NzaXplX3QgaW5kZXggPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwKLSAgICAgICAgJmluZGV4KSkKKyAgICAgICAgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9wb3BfaW1wbChzZWxmLCBpbmRleCk7CiAKIGV4aXQ6CkBAIC00MjMsOCArNDI5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpyZW1vdmUiLCBfZ2V0Ynl0ZXZhbHVlLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlbW92ZV9pbXBsKHNlbGYsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQ1Myw4ICs0NjAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3N0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtNDgzLDggKzQ5MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTUxMyw4ICs1MjIsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC01MzcsMjMgKzU0NywyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2RlY29kZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2RlY29kZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfZGVjb2RlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNTgzLDIxICs1OTUsMjMgQEAKICJ0cnVlLiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0bGluZXNfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKHNlbGYsIGtlZXBlbmRzKTsKIAogZXhpdDoKQEAgLTYxNywxNyArNjMxLDE4IEBACiAgICAgeyJmcm9taGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9mcm9taGV4LCBNRVRIX098TUVUSF9DTEFTUywgYnl0ZWFycmF5X2Zyb21oZXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlPYmplY3QqY2xzLCBQeU9iamVjdCAqc3RyaW5nKTsKK2J5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4KFB5VHlwZU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJnKQorYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwoKFB5T2JqZWN0KiljbHMsIHN0cmluZyk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwodHlwZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtNjcwLDggKzY4NSw5IEBACiAgICAgaW50IHByb3RvID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsCi0gICAgICAgICZwcm90bykpCisgICAgICAgICZwcm90bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoc2VsZiwgcHJvdG8pOwogCiBleGl0OgpAQCAtNjk1LDQgKzcxMSw0IEBACiB7CiAgICAgcmV0dXJuIGJ5dGVhcnJheV9zaXplb2ZfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NjZjMTVmZjIyYzVlMjQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMjUzNDJhNjgwMzkxYjljIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaAppbmRleCA1YTFhNWU5Li5hMTFlYmQyIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCkBAIC0xNywyMiArMTcsMjQgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFU19TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3NwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3NwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC02NCwxNCArNjYsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnBhcnRpdGlvbiIsICZzZXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCi0gICAgaWYgKHNlcC5vYmopCisgICAgaWYgKHNlcC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMDEsMTQgKzEwNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBzZXAgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JwYXJ0aXRpb25faW1wbChzZWxmLCAmc2VwKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBzZXAgKi8KLSAgICBpZiAoc2VwLm9iaikKKyAgICBpZiAoc2VwLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEzMCwyMiArMTM2LDI0IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZXMgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOwogCiAjZGVmaW5lIEJZVEVTX1JTUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3JzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOworYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMTg5LDggKzE5Nyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTIxOSw4ICsyMjgsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibHN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI0OSw4ICsyNTksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI1OCw0NSArMjY5LDM4IEBACiB9CiAKIFB5RG9jX1NUUlZBUihieXRlc190cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZXNfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfdHJhbnNsYXRlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc190cmFuc2xhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwgaW50IGdyb3VwX3JpZ2h0XzEsCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgImRlbGV0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98Tzp0cmFuc2xhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0YWJsZTsKLSAgICBpbnQgZ3JvdXBfcmlnaHRfMSA9IDA7CiAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzID0gTlVMTDsKIAotICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dHJhbnNsYXRlIiwgJnRhYmxlKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzp0cmFuc2xhdGUiLCAmdGFibGUsICZkZWxldGVjaGFycykpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJieXRlcy50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlc190cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZ3JvdXBfcmlnaHRfMSwgZGVsZXRlY2hhcnMpOworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3RyYW5zbGF0ZV9pbXBsKHNlbGYsIHRhYmxlLCBkZWxldGVjaGFycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKQEAgLTMyNywxNyArMzMxLDIwIEBACiAgICAgUHlfYnVmZmVyIHRvID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsCi0gICAgICAgICZmcm0sICZ0bykpCisgICAgICAgICZmcm0sICZ0bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM1OSwxMSArMzY2LDExIEBACiAgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcmVwbGFjZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAorYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIG9sZCA9IHtOVUxMLCBOVUxMfTsKQEAgLTM3MSwxNyArMzc4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLwotICAgIGlmIChvbGQub2JqKQorICAgIGlmIChvbGQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCi0gICAgaWYgKG5ldy5vYmopCisgICAgaWYgKG5ldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MDIsMjMgKzQxMiwyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURVNfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCitieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGUoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX2RlY29kZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZGVjb2RlX2ltcGwoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC00MzUsMjEgKzQ0NywyMyBAQAogInRydWUuIik7CiAKICNkZWZpbmUgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpOworYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGludCBrZWVwZW5kcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOwogCiBleGl0OgpAQCAtNDc3LDExICs0OTEsMTIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZnJvbWhleF9pbXBsKHR5cGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDBjZThmMjVkN2UxOGY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZGMzYzkzY2ZkMmRjNDQwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKaW5kZXggNTI4OGI5YS4uZDBjZGZjMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKQEAgLTIzLDggKzIzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQorICAgICAgICAmaXRlcmFibGUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkaWN0X2Zyb21rZXlzX2ltcGwodHlwZSwgaXRlcmFibGUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTM5LDQgKzQwLDQgQEAKIAogI2RlZmluZSBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYgICAgXAogICAgIHsiX19jb250YWluc19fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfX19jb250YWluc19fLCBNRVRIX098TUVUSF9DT0VYSVNULCBkaWN0X19fY29udGFpbnNfX19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNzRkNjc2MzMyZmRiYTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyNjMyNjEwOWUzZDk4MzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAppbmRleCBkNDJhNzAwLi44OTFlOTBjIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaApAQCAtMzEsMTEgKzMxLDEyIEBACiAgICAgUHlPYmplY3QgKnogPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFVVOm1ha2V0cmFucyIsCi0gICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICAmeCwgJnksICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoeCwgeSwgeik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NGFmZmRmZjViMmRhZmY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YTg2ZGQxMDhkOTJkMTA0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY29kZW9iamVjdC5jIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKaW5kZXggNmMwZTViZi4uZDUxNGVjMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKQEAgLTEsMyArMSw1IEBACisjaW5jbHVkZSA8c3RkYm9vbC5oPgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgpAQCAtNSw2ICs3LDEyIEBACiAjZGVmaW5lIE5BTUVfQ0hBUlMgXAogICAgICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCiAKKy8qIEhvbGRlciBmb3IgY29fZXh0cmEgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeV9zc2l6ZV90IGNlX3NpemU7CisgICAgdm9pZCAqKmNlX2V4dHJhczsKK30gX1B5Q29kZU9iamVjdEV4dHJhOworCiAvKiBhbGxfbmFtZV9jaGFycyhzKTogdHJ1ZSBpZmYgYWxsIGNoYXJzIGluIHMgYXJlIHZhbGlkIE5BTUVfQ0hBUlMgKi8KIAogc3RhdGljIGludApAQCAtOTYsNyArMTA0LDcgQEAKICAgICAgICAgUHlfc3NpemVfdCB0b3RhbF9hcmdzID0gYXJnY291bnQgKyBrd29ubHlhcmdjb3VudCArCiAgICAgICAgICAgICAoKGZsYWdzICYgQ09fVkFSQVJHUykgIT0gMCkgKyAoKGZsYWdzICYgQ09fVkFSS0VZV09SRFMpICE9IDApOwogICAgICAgICBQeV9zc2l6ZV90IGFsbG9jX3NpemUgPSBzaXplb2YodW5zaWduZWQgY2hhcikgKiBuX2NlbGx2YXJzOwotICAgICAgICBpbnQgdXNlZF9jZWxsMmFyZyA9IDA7CisgICAgICAgIGJvb2wgdXNlZF9jZWxsMmFyZyA9IGZhbHNlOwogICAgICAgICBjZWxsMmFyZyA9IFB5TWVtX01BTExPQyhhbGxvY19zaXplKTsKICAgICAgICAgaWYgKGNlbGwyYXJnID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwOSw3ICsxMTcsNyBAQAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQeVR1cGxlX0dFVF9JVEVNKHZhcm5hbWVzLCBqKTsKICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGNlbGwsIGFyZykpIHsKICAgICAgICAgICAgICAgICAgICAgY2VsbDJhcmdbaV0gPSBqOwotICAgICAgICAgICAgICAgICAgICB1c2VkX2NlbGwyYXJnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgdXNlZF9jZWxsMmFyZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE1Miw2ICsxNjAsNyBAQAogICAgIGNvLT5jb19sbm90YWIgPSBsbm90YWI7CiAgICAgY28tPmNvX3pvbWJpZWZyYW1lID0gTlVMTDsKICAgICBjby0+Y29fd2Vha3JlZmxpc3QgPSBOVUxMOworICAgIGNvLT5jb19leHRyYSA9IE5VTEw7CiAgICAgcmV0dXJuIGNvOwogfQogCkBAIC0zNjEsNiArMzcwLDIxIEBACiBzdGF0aWMgdm9pZAogY29kZV9kZWFsbG9jKFB5Q29kZU9iamVjdCAqY28pCiB7CisgICAgaWYgKGNvLT5jb19leHRyYSAhPSBOVUxMKSB7CisgICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgICAgIF9QeUNvZGVPYmplY3RFeHRyYSAqY29fZXh0cmEgPSBjby0+Y29fZXh0cmE7CisKKyAgICAgICAgZm9yIChQeV9zc2l6ZV90IGkgPSAwOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgZnJlZWZ1bmMgZnJlZV9leHRyYSA9IHRzdGF0ZS0+Y29fZXh0cmFfZnJlZWZ1bmNzW2ldOworCisgICAgICAgICAgICBpZiAoZnJlZV9leHRyYSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZnJlZV9leHRyYShjb19leHRyYS0+Y2VfZXh0cmFzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFB5TWVtX0ZSRUUoY28tPmNvX2V4dHJhKTsKKyAgICB9CisKICAgICBQeV9YREVDUkVGKGNvLT5jb19jb2RlKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19jb25zdHMpOwogICAgIFB5X1hERUNSRUYoY28tPmNvX25hbWVzKTsKQEAgLTY5NCw3ICs3MTgsOCBAQAogICAgICAgICBhZGRyICs9ICpwKys7CiAgICAgICAgIGlmIChhZGRyID4gYWRkcnEpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgbGluZSArPSAqcCsrOworICAgICAgICBsaW5lICs9IChzaWduZWQgY2hhcikqcDsKKyAgICAgICAgcCsrOwogICAgIH0KICAgICByZXR1cm4gbGluZTsKIH0KQEAgLTcyOSwxNyArNzU0LDE5IEBACiAgICAgICAgIGlmIChhZGRyICsgKnAgPiBsYXN0aSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBhZGRyICs9ICpwKys7Ci0gICAgICAgIGlmICgqcCkKKyAgICAgICAgaWYgKChzaWduZWQgY2hhcikqcCkKICAgICAgICAgICAgIGJvdW5kcy0+YXBfbG93ZXIgPSBhZGRyOwotICAgICAgICBsaW5lICs9ICpwKys7CisgICAgICAgIGxpbmUgKz0gKHNpZ25lZCBjaGFyKSpwOworICAgICAgICBwKys7CiAgICAgICAgIC0tc2l6ZTsKICAgICB9CiAKICAgICBpZiAoc2l6ZSA+IDApIHsKICAgICAgICAgd2hpbGUgKC0tc2l6ZSA+PSAwKSB7CiAgICAgICAgICAgICBhZGRyICs9ICpwKys7Ci0gICAgICAgICAgICBpZiAoKnArKykKKyAgICAgICAgICAgIGlmICgoc2lnbmVkIGNoYXIpKnApCiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBwKys7CiAgICAgICAgIH0KICAgICAgICAgYm91bmRzLT5hcF91cHBlciA9IGFkZHI7CiAgICAgfQpAQCAtNzQ5LDMgKzc3Niw4MCBAQAogCiAgICAgcmV0dXJuIGxpbmU7CiB9CisKKworaW50CitfUHlDb2RlX0dldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LCB2b2lkICoqZXh0cmEpCit7CisgICAgYXNzZXJ0KCpleHRyYSA9PSBOVUxMKTsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlDb2RlT2JqZWN0ICpvID0gKFB5Q29kZU9iamVjdCopIGNvZGU7CisgICAgX1B5Q29kZU9iamVjdEV4dHJhICpjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEqKSBvLT5jb19leHRyYTsKKworCisgICAgaWYgKGNvX2V4dHJhID09IE5VTEwgfHwgY29fZXh0cmEtPmNlX3NpemUgPD0gaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKmV4dHJhID0gY29fZXh0cmEtPmNlX2V4dHJhc1tpbmRleF07CisgICAgcmV0dXJuIDA7Cit9CisKKworaW50CitfUHlDb2RlX1NldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LCB2b2lkICpleHRyYSkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworCisgICAgaWYgKCFQeUNvZGVfQ2hlY2soY29kZSkgfHwgaW5kZXggPCAwIHx8CisgICAgICAgICAgICBpbmRleCA+PSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeUNvZGVPYmplY3QgKm8gPSAoUHlDb2RlT2JqZWN0KikgY29kZTsKKyAgICBfUHlDb2RlT2JqZWN0RXh0cmEgKmNvX2V4dHJhID0gKF9QeUNvZGVPYmplY3RFeHRyYSAqKSBvLT5jb19leHRyYTsKKworICAgIGlmIChjb19leHRyYSA9PSBOVUxMKSB7CisgICAgICAgIG8tPmNvX2V4dHJhID0gKF9QeUNvZGVPYmplY3RFeHRyYSopIFB5TWVtX01hbGxvYygKKyAgICAgICAgICAgIHNpemVvZihfUHlDb2RlT2JqZWN0RXh0cmEpKTsKKyAgICAgICAgaWYgKG8tPmNvX2V4dHJhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEgKikgby0+Y29fZXh0cmE7CisKKyAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhcyA9IFB5TWVtX01hbGxvYygKKyAgICAgICAgICAgIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCAqIHNpemVvZih2b2lkKikpOworICAgICAgICBpZiAoY29fZXh0cmEtPmNlX2V4dHJhcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBjb19leHRyYS0+Y2Vfc2l6ZSA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudDsKKworICAgICAgICBmb3IgKFB5X3NzaXplX3QgaSA9IDA7IGkgPCBjb19leHRyYS0+Y2Vfc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2ldID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChjb19leHRyYS0+Y2Vfc2l6ZSA8PSBpbmRleCkgeworICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzID0gUHlNZW1fUmVhbGxvYygKKyAgICAgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXMsIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCAqIHNpemVvZih2b2lkKikpOworCisgICAgICAgIGlmIChjb19leHRyYS0+Y2VfZXh0cmFzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGNvX2V4dHJhLT5jZV9zaXplID0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50OworCisgICAgICAgIGZvciAoUHlfc3NpemVfdCBpID0gY29fZXh0cmEtPmNlX3NpemU7IGkgPCBjb19leHRyYS0+Y2Vfc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2ldID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvX2V4dHJhLT5jZV9leHRyYXNbaW5kZXhdID0gZXh0cmE7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCmluZGV4IGE1YmZiNjYuLmE5ZDVlYzMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29tcGxleG9iamVjdC5jCisrKyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCkBAIC03NTksMjkgKzc1OSwxMiBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWNvbXBsZXhfc3VidHlwZV9mcm9tX3N0cmluZyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2KQorY29tcGxleF9mcm9tX3N0cmluZ19pbm5lcihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbiwgdm9pZCAqdHlwZSkKIHsKLSAgICBjb25zdCBjaGFyICpzLCAqc3RhcnQ7Ci0gICAgY2hhciAqZW5kOwogICAgIGRvdWJsZSB4PTAuMCwgeT0wLjAsIHo7CiAgICAgaW50IGdvdF9icmFja2V0PTA7Ci0gICAgUHlPYmplY3QgKnNfYnVmZmVyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgc19idWZmZXIgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodik7Ci0gICAgICAgIGlmIChzX2J1ZmZlciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7Ci0gICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJjb21wbGV4KCkgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBvciBhIG51bWJlciwgbm90ICclLjIwMHMnIiwKLSAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgY29uc3QgY2hhciAqc3RhcnQ7CisgICAgY2hhciAqZW5kOwogCiAgICAgLyogcG9zaXRpb24gb24gZmlyc3Qgbm9uYmxhbmsgKi8KICAgICBzdGFydCA9IHM7CkBAIC04MjIsNyArODA1LDcgQEAKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVmFsdWVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChlbmQgIT0gcykgewogICAgICAgICAvKiBhbGwgNCBmb3JtcyBzdGFydGluZyB3aXRoIDxmbG9hdD4gbGFuZCBoZXJlICovCkBAIC04MzUsNyArODE4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19WYWx1ZUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVuZCAhPSBzKQogICAgICAgICAgICAgICAgIC8qIDxmbG9hdD48c2lnbmVkLWZsb2F0PmogKi8KQEAgLTg5MCwxOCArODczLDQ2IEBACiAgICAgaWYgKHMtc3RhcnQgIT0gbGVuKQogICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwogCi0gICAgUHlfWERFQ1JFRihzX2J1ZmZlcik7Ci0gICAgcmV0dXJuIGNvbXBsZXhfc3VidHlwZV9mcm9tX2RvdWJsZXModHlwZSwgeCwgeSk7CisgICAgcmV0dXJuIGNvbXBsZXhfc3VidHlwZV9mcm9tX2RvdWJsZXMoKFB5VHlwZU9iamVjdCAqKXR5cGUsIHgsIHkpOwogCiAgIHBhcnNlX2Vycm9yOgogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiY29tcGxleCgpIGFyZyBpcyBhIG1hbGZvcm1lZCBzdHJpbmciKTsKLSAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihzX2J1ZmZlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitjb21wbGV4X3N1YnR5cGVfZnJvbV9zdHJpbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdikKK3sKKyAgICBjb25zdCBjaGFyICpzOworICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgeworICAgICAgICBzX2J1ZmZlciA9IF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSh2KTsKKyAgICAgICAgaWYgKHNfYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CisgICAgICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjb21wbGV4KCkgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBvciBhIG51bWJlciwgbm90ICclLjIwMHMnIiwKKyAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKHMsIGxlbiwgImNvbXBsZXgiLCB2LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxleF9mcm9tX3N0cmluZ19pbm5lcik7CisgIGV4aXQ6CisgICAgUHlfREVDUkVGKHNfYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogY29tcGxleF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKnIsICppLCAqdG1wOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCmluZGV4IGRhNjhlM2IuLjA3NmU3NDEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGVzY3JvYmplY3QuYworKysgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKQEAgLTIyLDcgKzIyLDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlc2NyX3JlcHIoUHlEZXNjck9iamVjdCAqZGVzY3IsIGNoYXIgKmZvcm1hdCkKK2Rlc2NyX3JlcHIoUHlEZXNjck9iamVjdCAqZGVzY3IsIGNvbnN0IGNoYXIgKmZvcm1hdCkKIHsKICAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CiAgICAgaWYgKGRlc2NyLT5kX25hbWUgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2soZGVzY3ItPmRfbmFtZSkpCkBAIC0yMTMsNyArMjEzLDcgQEAKIG1ldGhvZGRlc2NyX2NhbGwoUHlNZXRob2REZXNjck9iamVjdCAqZGVzY3IsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTI0MiwxMyArMjQyLDggQEAKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3RXgoZGVzY3ItPmRfbWV0aG9kLCBzZWxmLCBOVUxMKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIGFyZ2MgLSAxLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1OCw3ICsyNTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5X3NzaXplX3QgYXJnYzsKLSAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0LCAqKnN0YWNrOwogCiAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFjY2VwdGFibGUgYXMgJ3NlbGYnICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwpAQCAtMjk1LDE0ICsyOTAsOSBAQAogICAgIGZ1bmMgPSBQeUNGdW5jdGlvbl9OZXdFeChkZXNjci0+ZF9tZXRob2QsIHNlbGYsIE5VTEwpOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIGFyZ2MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoZnVuYywgYXJncywga3dkcyk7CisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBhcmdjIC0gMSwga3dkcyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMTAsNyArMzAwLDcgQEAKIHdyYXBwZXJkZXNjcl9jYWxsKFB5V3JhcHBlckRlc2NyT2JqZWN0ICpkZXNjciwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5X3NzaXplX3QgYXJnYzsKLSAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0LCAqKnN0YWNrOwogCiAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFjY2VwdGFibGUgYXMgJ3NlbGYnICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwpAQCAtMzM5LDEzICszMjksOSBAQAogICAgIGZ1bmMgPSBQeVdyYXBwZXJfTmV3KChQeU9iamVjdCAqKWRlc2NyLCBzZWxmKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgYXJnYyAtIDEsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTAzMyw3ICsxMDE5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3cmFwcGVyX3JpY2hjb21wYXJlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG9wKQogewotICAgIFB5X2ludHB0cl90IHJlc3VsdDsKKyAgICBpbnRwdHJfdCByZXN1bHQ7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlXcmFwcGVyRGVzY3JPYmplY3QgKmFfZGVzY3IsICpiX2Rlc2NyOwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3QtY29tbW9uLmggYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKaW5kZXggMjkxMmViOS4uY2U5ZWRhYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCisrKyBiL09iamVjdHMvZGljdC1jb21tb24uaApAQCAtOCwxNSArOCw2OSBAQAogICAgIFB5T2JqZWN0ICptZV92YWx1ZTsgLyogVGhpcyBmaWVsZCBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIGNvbWJpbmVkIHRhYmxlcyAqLwogfSBQeURpY3RLZXlFbnRyeTsKIAotdHlwZWRlZiBQeURpY3RLZXlFbnRyeSAqKCpkaWN0X2xvb2t1cF9mdW5jKQotKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKKy8qIGRpY3RfbG9va3VwX2Z1bmMoKSByZXR1cm5zIGluZGV4IG9mIGVudHJ5IHdoaWNoIGNhbiBiZSB1c2VkIGxpa2UgREtfRU5UUklFUyhkaylbaW5kZXhdLgorICogLTEgd2hlbiBubyBlbnRyeSBmb3VuZCwgLTMgd2hlbiBjb21wYXJlIHJhaXNlcyBlcnJvci4KKyAqLwordHlwZWRlZiBQeV9zc2l6ZV90ICgqZGljdF9sb29rdXBfZnVuYykKKyhQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyBQeV9zc2l6ZV90ICpoYXNocG9zKTsKIAorI2RlZmluZSBES0lYX0VNUFRZICgtMSkKKyNkZWZpbmUgREtJWF9EVU1NWSAoLTIpICAvKiBVc2VkIGludGVybmFsbHkgKi8KKyNkZWZpbmUgREtJWF9FUlJPUiAoLTMpCisKKy8qIFNlZSBkaWN0b2JqZWN0LmMgZm9yIGFjdHVhbCBsYXlvdXQgb2YgRGljdEtleXNPYmplY3QgKi8KIHN0cnVjdCBfZGljdGtleXNvYmplY3QgewogICAgIFB5X3NzaXplX3QgZGtfcmVmY250OworCisgICAgLyogU2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSAoZGtfaW5kaWNlcykuIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLiAqLwogICAgIFB5X3NzaXplX3QgZGtfc2l6ZTsKKworICAgIC8qIEZ1bmN0aW9uIHRvIGxvb2t1cCBpbiB0aGUgaGFzaCB0YWJsZSAoZGtfaW5kaWNlcyk6CisKKyAgICAgICAtIGxvb2tkaWN0KCk6IGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gREtJWF9FUlJPUiBpZiAoYW5kCisgICAgICAgICBvbmx5IGlmKSBhIGNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworICAgICAgIC0gbG9va2RpY3RfdW5pY29kZSgpOiBzcGVjaWFsaXplZCB0byBVbmljb2RlIHN0cmluZyBrZXlzLCBjb21wYXJpc29uIG9mCisgICAgICAgICB3aGljaCBjYW4gbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4KKyAgICAgICAgIERLSVhfRVJST1IuCisKKyAgICAgICAtIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSgpOiBzaW1pbGFyIHRvIGxvb2tkaWN0X3VuaWNvZGUoKSBidXQgZnVydGhlcgorICAgICAgICAgc3BlY2lhbGl6ZWQgZm9yIFVuaWNvZGUgc3RyaW5nIGtleXMgdGhhdCBjYW5ub3QgYmUgdGhlIDxkdW1teT4gdmFsdWUuCisKKyAgICAgICAtIGxvb2tkaWN0X3NwbGl0KCk6IFZlcnNpb24gb2YgbG9va2RpY3QoKSBmb3Igc3BsaXQgdGFibGVzLiAqLwogICAgIGRpY3RfbG9va3VwX2Z1bmMgZGtfbG9va3VwOworCisgICAgLyogTnVtYmVyIG9mIHVzYWJsZSBlbnRyaWVzIGluIGRrX2VudHJpZXMuICovCiAgICAgUHlfc3NpemVfdCBka191c2FibGU7Ci0gICAgUHlEaWN0S2V5RW50cnkgZGtfZW50cmllc1sxXTsKKworICAgIC8qIE51bWJlciBvZiB1c2VkIGVudHJpZXMgaW4gZGtfZW50cmllcy4gKi8KKyAgICBQeV9zc2l6ZV90IGRrX25lbnRyaWVzOworCisgICAgLyogQWN0dWFsIGhhc2ggdGFibGUgb2YgZGtfc2l6ZSBlbnRyaWVzLiBJdCBob2xkcyBpbmRpY2VzIGluIGRrX2VudHJpZXMsCisgICAgICAgb3IgREtJWF9FTVBUWSgtMSkgb3IgREtJWF9EVU1NWSgtMikuCisKKyAgICAgICBJbmRpY2VzIG11c3QgYmU6IDAgPD0gaW5kaWNlIDwgVVNBQkxFX0ZSQUNUSU9OKGRrX3NpemUpLgorCisgICAgICAgVGhlIHNpemUgaW4gYnl0ZXMgb2YgYW4gaW5kaWNlIGRlcGVuZHMgb24gZGtfc2l6ZToKKworICAgICAgIC0gMSBieXRlIGlmIGRrX3NpemUgPD0gMHhmZiAoY2hhciopCisgICAgICAgLSAyIGJ5dGVzIGlmIGRrX3NpemUgPD0gMHhmZmZmIChpbnQxNl90KikKKyAgICAgICAtIDQgYnl0ZXMgaWYgZGtfc2l6ZSA8PSAweGZmZmZmZmZmIChpbnQzMl90KikKKyAgICAgICAtIDggYnl0ZXMgb3RoZXJ3aXNlIChpbnQ2NF90KikKKworICAgICAgIER5bmFtaWNhbGx5IHNpemVkLCA4IGlzIG1pbmltdW0uICovCisgICAgdW5pb24geworICAgICAgICBpbnQ4X3QgYXNfMVs4XTsKKyAgICAgICAgaW50MTZfdCBhc18yWzRdOworICAgICAgICBpbnQzMl90IGFzXzRbMl07CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICAgICAgaW50NjRfdCBhc184WzFdOworI2VuZGlmCisgICAgfSBka19pbmRpY2VzOworCisgICAgLyogIlB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbZGtfdXNhYmxlXTsiIGFycmF5IGZvbGxvd3M6CisgICAgICAgc2VlIHRoZSBES19FTlRSSUVTKCkgbWFjcm8gKi8KIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMgYi9PYmplY3RzL2RpY3RvYmplY3QuYwppbmRleCBlMDRhYjJiLi4wNDc2NDQyIDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3RvYmplY3QuYworKysgYi9PYmplY3RzL2RpY3RvYmplY3QuYwpAQCAtMSw0ICsxLDMgQEAKLQogLyogRGljdGlvbmFyeSBvYmplY3QgaW1wbGVtZW50YXRpb24gdXNpbmcgYSBoYXNoIHRhYmxlICovCiAKIC8qIFRoZSBkaXN0cmlidXRpb24gaW5jbHVkZXMgYSBzZXBhcmF0ZSBmaWxlLCBPYmplY3RzL2RpY3Rub3Rlcy50eHQsCkBAIC03LDY4ICs2LDExMiBAQAogICAgdHVuaW5nIGRpY3Rpb25hcmllcywgYW5kIHNldmVyYWwgaWRlYXMgZm9yIHBvc3NpYmxlIG9wdGltaXphdGlvbnMuCiAqLwogCisvKiBQeURpY3RLZXlzT2JqZWN0CisKK1RoaXMgaW1wbGVtZW50cyB0aGUgZGljdGlvbmFyeSdzIGhhc2h0YWJsZS4KKworQXMgb2YgUHl0aG9uIDMuNiwgdGhpcyBpcyBjb21wYWN0IGFuZCBvcmRlcmVkLiBCYXNpYyBpZGVhIGlzIGRlc2NyaWJlZCBoZXJlLgoraHR0cHM6Ly9tb3JlcHlweS5ibG9nc3BvdC5jb20vMjAxNS8wMS9mYXN0ZXItbW9yZS1tZW1vcnktZWZmaWNpZW50LWFuZC1tb3JlLmh0bWwKKworbGF5b3V0OgorCisrLS0tLS0tLS0tLS0tLS0tKworfCBka19yZWZjbnQgICAgIHwKK3wgZGtfc2l6ZSAgICAgICB8Cit8IGRrX2xvb2t1cCAgICAgfAorfCBka191c2FibGUgICAgIHwKK3wgZGtfbmVudHJpZXMgICB8CisrLS0tLS0tLS0tLS0tLS0tKworfCBka19pbmRpY2VzICAgIHwKK3wgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tKworfCBka19lbnRyaWVzICAgIHwKK3wgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tKworCitka19pbmRpY2VzIGlzIGFjdHVhbCBoYXNodGFibGUuICBJdCBob2xkcyBpbmRleCBpbiBlbnRyaWVzLCBvciBES0lYX0VNUFRZKC0xKQorb3IgREtJWF9EVU1NWSgtMikuCitTaXplIG9mIGluZGljZXMgaXMgZGtfc2l6ZS4gIFR5cGUgb2YgZWFjaCBpbmRleCBpbiBpbmRpY2VzIGlzIHZhcnkgb24gZGtfc2l6ZToKKworKiBpbnQ4ICBmb3IgICAgICAgICAgZGtfc2l6ZSA8PSAxMjgKKyogaW50MTYgZm9yIDI1NiAgIDw9IGRrX3NpemUgPD0gMioqMTUKKyogaW50MzIgZm9yIDIqKjE2IDw9IGRrX3NpemUgPD0gMioqMzEKKyogaW50NjQgZm9yIDIqKjMyIDw9IGRrX3NpemUKKworZGtfZW50cmllcyBpcyBhcnJheSBvZiBQeURpY3RLZXlFbnRyeS4gIEl0J3Mgc2l6ZSBpcyBVU0FCTEVfRlJBQ1RJT04oZGtfc2l6ZSkuCitES19FTlRSSUVTKGRrKSBjYW4gYmUgdXNlZCB0byBnZXQgcG9pbnRlciB0byBlbnRyaWVzLgorCitOT1RFOiBTaW5jZSBuZWdhdGl2ZSB2YWx1ZSBpcyB1c2VkIGZvciBES0lYX0VNUFRZIGFuZCBES0lYX0RVTU1ZLCB0eXBlIG9mCitka19pbmRpY2VzIGVudHJ5IGlzIHNpZ25lZCBpbnRlZ2VyIGFuZCBpbnQxNiBpcyB1c2VkIGZvciB0YWJsZSB3aGljaAorZGtfc2l6ZSA9PSAyNTYuCisqLworCiAKIC8qCi1UaGVyZSBhcmUgZm91ciBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGU6Ci0KLTEuIFVudXNlZC4gIG1lX2tleSA9PSBtZV92YWx1ZSA9PSBOVUxMCi0gICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KLSAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaAotICAgbWVfa2V5IGlzIE5VTEwsIGFuZCBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgotCi0yLiBBY3RpdmUuICBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfa2V5ICE9IGR1bW15IGFuZCBtZV92YWx1ZSAhPSBOVUxMCi0gICBIb2xkcyBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIuICBBY3RpdmUgY2FuIHRyYW5zaXRpb24gdG8gRHVtbXkgb3IKLSAgIFBlbmRpbmcgdXBvbiBrZXkgZGVsZXRpb24gKGZvciBjb21iaW5lZCBhbmQgc3BsaXQgdGFibGVzIHJlc3BlY3RpdmVseSkuCi0gICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggbWVfdmFsdWUgIT0gTlVMTC4KLQotMy4gRHVtbXkuICBtZV9rZXkgPT0gZHVtbXkgYW5kIG1lX3ZhbHVlID09IE5VTEwKLSAgIFByZXZpb3VzbHkgaGVsZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIsIGJ1dCB0aGF0IHdhcyBkZWxldGVkIGFuZCBhbgotICAgYWN0aXZlIHBhaXIgaGFzIG5vdCB5ZXQgb3ZlcndyaXR0ZW4gdGhlIHNsb3QuICBEdW1teSBjYW4gdHJhbnNpdGlvbiB0bwotICAgQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIER1bW15IHNsb3RzIGNhbm5vdCBiZSBtYWRlIFVudXNlZCBhZ2FpbgotICAgKGNhbm5vdCBoYXZlIG1lX2tleSBzZXQgdG8gTlVMTCksIGVsc2UgdGhlIHByb2JlIHNlcXVlbmNlIGluIGNhc2Ugb2YKLSAgIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93IHRoZXkgd2VyZSBvbmNlIGFjdGl2ZS4KLQotNC4gUGVuZGluZy4gTm90IHlldCBpbnNlcnRlZCBvciBkZWxldGVkIGZyb20gYSBzcGxpdC10YWJsZS4KLSAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwKLQogVGhlIERpY3RPYmplY3QgY2FuIGJlIGluIG9uZSBvZiB0d28gZm9ybXMuCisKIEVpdGhlcjoKICAgQSBjb21iaW5lZCB0YWJsZToKICAgICBtYV92YWx1ZXMgPT0gTlVMTCwgZGtfcmVmY250ID09IDEuCiAgICAgVmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIG1lX3ZhbHVlIGZpZWxkIG9mIHRoZSBQeURpY3RLZXlzT2JqZWN0LgotICAgIFNsb3Qga2luZCA0IGlzIG5vdCBhbGxvd2VkIGkuZS4KLSAgICAgICAga2V5ICE9IE5VTEwsIGtleSAhPSBkdW1teSBhbmQgdmFsdWUgPT0gTlVMTCBpcyBpbGxlZ2FsLgogT3I6CiAgIEEgc3BsaXQgdGFibGU6CiAgICAgbWFfdmFsdWVzICE9IE5VTEwsIGRrX3JlZmNudCA+PSAxCiAgICAgVmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIG1hX3ZhbHVlcyBhcnJheS4KLSAgICBPbmx5IHN0cmluZyAodW5pY29kZSkga2V5cyBhcmUgYWxsb3dlZCwgbm8gPGR1bW15PiBrZXlzIGFyZSBwcmVzZW50LgorICAgIE9ubHkgc3RyaW5nICh1bmljb2RlKSBrZXlzIGFyZSBhbGxvd2VkLgorICAgIEFsbCBkaWN0cyBzaGFyaW5nIHNhbWUga2V5IG11c3QgaGF2ZSBzYW1lIGluc2VydGlvbiBvcmRlci4KIAotTm90ZTogLnBvcGl0ZW0oKSBhYnVzZXMgdGhlIG1lX2hhc2ggZmllbGQgb2YgYW4gVW51c2VkIG9yIER1bW15IHNsb3QgdG8KLWhvbGQgYSBzZWFyY2ggZmluZ2VyLiAgVGhlIG1lX2hhc2ggZmllbGQgb2YgVW51c2VkIG9yIER1bW15IHNsb3RzIGhhcyBubwotbWVhbmluZyBvdGhlcndpc2UuIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhpcyBwb3BpdGVtIGFsd2F5cyBjb252ZXJ0cyB0aGUgZGljdAotdG8gdGhlIGNvbWJpbmVkLXRhYmxlIGZvcm0uCitUaGVyZSBhcmUgZm91ciBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGUgKHNsb3QgaXMgaW5kZXgsIGFuZAorREtfRU5UUklFUyhrZXlzKVtpbmRleF0gaWYgaW5kZXggPj0gMCk6CisKKzEuIFVudXNlZC4gIGluZGV4ID09IERLSVhfRU1QVFkKKyAgIERvZXMgbm90IGhvbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyIG5vdyBhbmQgbmV2ZXIgZGlkLiAgVW51c2VkIGNhbgorICAgdHJhbnNpdGlvbiB0byBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgVGhpcyBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgorCisyLiBBY3RpdmUuICBpbmRleCA+PSAwLCBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfdmFsdWUgIT0gTlVMTAorICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IG9yCisgICBQZW5kaW5nIHVwb24ga2V5IGRlbGV0aW9uIChmb3IgY29tYmluZWQgYW5kIHNwbGl0IHRhYmxlcyByZXNwZWN0aXZlbHkpLgorICAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCisKKzMuIER1bW15LiAgaW5kZXggPT0gREtJWF9EVU1NWSAgKGNvbWJpbmVkIG9ubHkpCisgICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KKyAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KKyAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KKyAgIGVsc2UgdGhlIHByb2JlIHNlcXVlbmNlIGluIGNhc2Ugb2YgY29sbGlzaW9uIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGtub3cKKyAgIHRoZXkgd2VyZSBvbmNlIGFjdGl2ZS4KKworNC4gUGVuZGluZy4gaW5kZXggPj0gMCwga2V5ICE9IE5VTEwsIGFuZCB2YWx1ZSA9PSBOVUxMICAoc3BsaXQgb25seSkKKyAgIE5vdCB5ZXQgaW5zZXJ0ZWQgaW4gc3BsaXQtdGFibGUuCiAqLwogCi0vKiBQeURpY3RfTUlOU0laRV9TUExJVCBpcyB0aGUgbWluaW11bSBzaXplIG9mIGEgc3BsaXQgZGljdGlvbmFyeS4KLSAqIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLCBhbmQgYXQgbGVhc3QgNC4KLSAqIFJlc2l6aW5nIG9mIHNwbGl0IGRpY3Rpb25hcmllcyBpcyB2ZXJ5IHJhcmUsIHNvIHRoZSBzYXZpbmcgbWVtb3J5IGlzIG1vcmUKLSAqIGltcG9ydGFudCB0aGFuIHRoZSBjb3N0IG9mIHJlc2l6aW5nLgotICovCi0jZGVmaW5lIFB5RGljdF9NSU5TSVpFX1NQTElUIDQKKy8qCitQcmVzZXJ2aW5nIGluc2VydGlvbiBvcmRlcgogCi0vKiBQeURpY3RfTUlOU0laRV9DT01CSU5FRCBpcyB0aGUgc3RhcnRpbmcgc2l6ZSBmb3IgYW55IG5ldywgbm9uLXNwbGl0IGRpY3QuCitJdCdzIHNpbXBsZSBmb3IgY29tYmluZWQgdGFibGUuICBTaW5jZSBka19lbnRyaWVzIGlzIG1vc3RseSBhcHBlbmQgb25seSwgd2UgY2FuCitnZXQgaW5zZXJ0aW9uIG9yZGVyIGJ5IGp1c3QgaXRlcmF0aW5nIGRrX2VudHJpZXMuCisKK09uZSBleGNlcHRpb24gaXMgLnBvcGl0ZW0oKS4gIEl0IHJlbW92ZXMgbGFzdCBpdGVtIGluIGRrX2VudHJpZXMgYW5kIGRlY3JlbWVudAorZGtfbmVudHJpZXMgdG8gYWNoaWV2ZSBhbW9ydGl6ZWQgTygxKS4gIFNpbmNlIHRoZXJlIGFyZSBES0lYX0RVTU1ZIHJlbWFpbnMgaW4KK2RrX2luZGljZXMsIHdlIGNhbid0IGluY3JlbWVudCBka191c2FibGUgZXZlbiB0aG91Z2ggZGtfbmVudHJpZXMgaXMKK2RlY3JlbWVudGVkLgorCitJbiBzcGxpdCB0YWJsZSwgaW5zZXJ0aW5nIGludG8gcGVuZGluZyBlbnRyeSBpcyBhbGxvd2VkIG9ubHkgZm9yIGRrX2VudHJpZXNbaXhdCit3aGVyZSBpeCA9PSBtcC0+bWFfdXNlZC4gSW5zZXJ0aW5nIGludG8gb3RoZXIgaW5kZXggYW5kIGRlbGV0aW5nIGl0ZW0gY2F1c2UKK2NvbnZlcnRpbmcgdGhlIGRpY3QgdG8gdGhlIGNvbWJpbmVkIHRhYmxlLgorKi8KKworLyogUHlEaWN0X01JTlNJWkUgaXMgdGhlIHN0YXJ0aW5nIHNpemUgZm9yIGFueSBuZXcgZGljdC4KICAqIDggYWxsb3dzIGRpY3RzIHdpdGggbm8gbW9yZSB0aGFuIDUgYWN0aXZlIGVudHJpZXM7IGV4cGVyaW1lbnRzIHN1Z2dlc3RlZAogICogdGhpcyBzdWZmaWNlcyBmb3IgdGhlIG1ham9yaXR5IG9mIGRpY3RzIChjb25zaXN0aW5nIG1vc3RseSBvZiB1c3VhbGx5LXNtYWxsCiAgKiBkaWN0cyBjcmVhdGVkIHRvIHBhc3Mga2V5d29yZCBhcmd1bWVudHMpLgogICogTWFraW5nIHRoaXMgOCwgcmF0aGVyIHRoYW4gNCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcmVzaXplcyBmb3IgbW9zdAogICogZGljdGlvbmFyaWVzLCB3aXRob3V0IGFueSBzaWduaWZpY2FudCBleHRyYSBtZW1vcnkgdXNlLgogICovCi0jZGVmaW5lIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEIDgKKyNkZWZpbmUgUHlEaWN0X01JTlNJWkUgOAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiZGljdC1jb21tb24uaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIgICAgLyogdG8gZ2V0IHVuaWNvZGVfZXEoKSAqLwogCiAvKltjbGluaWMgaW5wdXRdCiBjbGFzcyBkaWN0ICJQeURpY3RPYmplY3QgKiIgIiZQeURpY3RfVHlwZSIKQEAgLTE3Nyw0MSArMjIwLDM4IEBACiAKICovCiAKLS8qIE9iamVjdCB1c2VkIGFzIGR1bW15IGtleSB0byBmaWxsIGRlbGV0ZWQgZW50cmllcwotICogVGhpcyBjb3VsZCBiZSBhbnkgdW5pcXVlIG9iamVjdCwKLSAqIHVzZSBhIGN1c3RvbSB0eXBlIGluIG9yZGVyIHRvIG1pbmltaXNlIGNvdXBsaW5nLgotKi8KLXN0YXRpYyBQeU9iamVjdCBfZHVtbXlfc3RydWN0OwotCi0jZGVmaW5lIGR1bW15ICgmX2R1bW15X3N0cnVjdCkKLQotI2lmZGVmIFB5X1JFRl9ERUJVRwotUHlPYmplY3QgKgotX1B5RGljdF9EdW1teSh2b2lkKQotewotICAgIHJldHVybiBkdW1teTsKLX0KLSNlbmRpZgotCiAvKiBmb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7Ci1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7Ci1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QgbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CitzdGF0aWMgUHlfc3NpemVfdCBsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKTsKK3N0YXRpYyBQeV9zc2l6ZV90CiBsb29rZGljdF91bmljb2RlX25vZHVtbXkoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7Ci1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKTsKK3N0YXRpYyBQeV9zc2l6ZV90IGxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOwogCiBzdGF0aWMgaW50IGRpY3RyZXNpemUoUHlEaWN0T2JqZWN0ICptcCwgUHlfc3NpemVfdCBtaW51c2VkKTsKIAotLyogRGljdGlvbmFyeSByZXVzZSBzY2hlbWUgdG8gc2F2ZSBjYWxscyB0byBtYWxsb2MsIGZyZWUsIGFuZCBtZW1zZXQgKi8KKy8qR2xvYmFsIGNvdW50ZXIgdXNlZCB0byBzZXQgbWFfdmVyc2lvbl90YWcgZmllbGQgb2YgZGljdGlvbmFyeS4KKyAqIEl0IGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSB0aGF0IGEgZGljdGlvbmFyeSBpcyBjcmVhdGVkIGFuZCBlYWNoCisgKiB0aW1lIHRoYXQgYSBkaWN0aW9uYXJ5IGlzIG1vZGlmaWVkLiAqLworc3RhdGljIHVpbnQ2NF90IHB5ZGljdF9nbG9iYWxfdmVyc2lvbiA9IDA7CisKKyNkZWZpbmUgRElDVF9ORVhUX1ZFUlNJT04oKSAoKytweWRpY3RfZ2xvYmFsX3ZlcnNpb24pCisKKy8qIERpY3Rpb25hcnkgcmV1c2Ugc2NoZW1lIHRvIHNhdmUgY2FsbHMgdG8gbWFsbG9jIGFuZCBmcmVlICovCiAjaWZuZGVmIFB5RGljdF9NQVhGUkVFTElTVAogI2RlZmluZSBQeURpY3RfTUFYRlJFRUxJU1QgODAKICNlbmRpZgogc3RhdGljIFB5RGljdE9iamVjdCAqZnJlZV9saXN0W1B5RGljdF9NQVhGUkVFTElTVF07CiBzdGF0aWMgaW50IG51bWZyZWUgPSAwOworc3RhdGljIFB5RGljdEtleXNPYmplY3QgKmtleXNfZnJlZV9saXN0W1B5RGljdF9NQVhGUkVFTElTVF07CitzdGF0aWMgaW50IG51bWZyZWVrZXlzID0gMDsKIAogI2luY2x1ZGUgImNsaW5pYy9kaWN0b2JqZWN0LmMuaCIKIApAQCAtMjE5LDEyICsyNTksMTUgQEAKIFB5RGljdF9DbGVhckZyZWVMaXN0KHZvaWQpCiB7CiAgICAgUHlEaWN0T2JqZWN0ICpvcDsKLSAgICBpbnQgcmV0ID0gbnVtZnJlZTsKKyAgICBpbnQgcmV0ID0gbnVtZnJlZSArIG51bWZyZWVrZXlzOwogICAgIHdoaWxlIChudW1mcmVlKSB7CiAgICAgICAgIG9wID0gZnJlZV9saXN0Wy0tbnVtZnJlZV07CiAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChvcCkpOwogICAgICAgICBQeU9iamVjdF9HQ19EZWwob3ApOwogICAgIH0KKyAgICB3aGlsZSAobnVtZnJlZWtleXMpIHsKKyAgICAgICAgUHlPYmplY3RfRlJFRShrZXlzX2ZyZWVfbGlzdFstLW51bWZyZWVrZXlzXSk7CisgICAgfQogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTI0Myw0MCArMjg2LDExNiBAQAogICAgIFB5RGljdF9DbGVhckZyZWVMaXN0KCk7CiB9CiAKKyNkZWZpbmUgREtfU0laRShkaykgKChkayktPmRrX3NpemUpCisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyNkZWZpbmUgREtfSVhTSVpFKGRrKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChES19TSVpFKGRrKSA8PSAweGZmID8gICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIDEgOiBES19TSVpFKGRrKSA8PSAweGZmZmYgPyAgICAgICAgICAgIFwKKyAgICAgICAgICAgIDIgOiBES19TSVpFKGRrKSA8PSAweGZmZmZmZmZmID8gICAgXAorICAgICAgICAgICAgICAgIDQgOiBzaXplb2YoaW50NjRfdCkpCisjZWxzZQorI2RlZmluZSBES19JWFNJWkUoZGspICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKERLX1NJWkUoZGspIDw9IDB4ZmYgPyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgMSA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZiA/ICAgICAgICAgICAgXAorICAgICAgICAgICAgMiA6IHNpemVvZihpbnQzMl90KSkKKyNlbmRpZgorI2RlZmluZSBES19FTlRSSUVTKGRrKSBcCisgICAgKChQeURpY3RLZXlFbnRyeSopKCYoZGspLT5ka19pbmRpY2VzLmFzXzFbREtfU0laRShkaykgKiBES19JWFNJWkUoZGspXSkpCisKICNkZWZpbmUgREtfREVCVUdfSU5DUkVGIF9QeV9JTkNfUkVGVE9UQUwgX1B5X1JFRl9ERUJVR19DT01NQQogI2RlZmluZSBES19ERUJVR19ERUNSRUYgX1B5X0RFQ19SRUZUT1RBTCBfUHlfUkVGX0RFQlVHX0NPTU1BCiAKICNkZWZpbmUgREtfSU5DUkVGKGRrKSAoREtfREVCVUdfSU5DUkVGICsrKGRrKS0+ZGtfcmVmY250KQogI2RlZmluZSBES19ERUNSRUYoZGspIGlmIChES19ERUJVR19ERUNSRUYgKC0tKGRrKS0+ZGtfcmVmY250KSA9PSAwKSBmcmVlX2tleXNfb2JqZWN0KGRrKQotI2RlZmluZSBES19TSVpFKGRrKSAoKGRrKS0+ZGtfc2l6ZSkKICNkZWZpbmUgREtfTUFTSyhkaykgKCgoZGspLT5ka19zaXplKS0xKQogI2RlZmluZSBJU19QT1dFUl9PRl8yKHgpICgoKHgpICYgKHgtMSkpID09IDApCiAKKy8qIGxvb2t1cCBpbmRpY2VzLiAgcmV0dXJucyBES0lYX0VNUFRZLCBES0lYX0RVTU1ZLCBvciBpeCA+PTAgKi8KK3N0YXRpYyBpbmxpbmUgUHlfc3NpemVfdAorZGtfZ2V0X2luZGV4KFB5RGljdEtleXNPYmplY3QgKmtleXMsIFB5X3NzaXplX3QgaSkKK3sKKyAgICBQeV9zc2l6ZV90IHMgPSBES19TSVpFKGtleXMpOworICAgIFB5X3NzaXplX3QgaXg7CisKKyAgICBpZiAocyA8PSAweGZmKSB7CisgICAgICAgIGludDhfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfMTsKKyAgICAgICAgaXggPSBpbmRpY2VzW2ldOworICAgIH0KKyAgICBlbHNlIGlmIChzIDw9IDB4ZmZmZikgeworICAgICAgICBpbnQxNl90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18yOworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgZWxzZSBpZiAocyA+IDB4ZmZmZmZmZmYpIHsKKyAgICAgICAgaW50NjRfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfODsKKyAgICAgICAgaXggPSBpbmRpY2VzW2ldOworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBpbnQzMl90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc180OworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorICAgIGFzc2VydChpeCA+PSBES0lYX0RVTU1ZKTsKKyAgICByZXR1cm4gaXg7Cit9CisKKy8qIHdyaXRlIHRvIGluZGljZXMuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2RrX3NldF9pbmRleChQeURpY3RLZXlzT2JqZWN0ICprZXlzLCBQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgaXgpCit7CisgICAgUHlfc3NpemVfdCBzID0gREtfU0laRShrZXlzKTsKKworICAgIGFzc2VydChpeCA+PSBES0lYX0RVTU1ZKTsKKworICAgIGlmIChzIDw9IDB4ZmYpIHsKKyAgICAgICAgaW50OF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18xOworICAgICAgICBhc3NlcnQoaXggPD0gMHg3Zik7CisgICAgICAgIGluZGljZXNbaV0gPSAoY2hhcilpeDsKKyAgICB9CisgICAgZWxzZSBpZiAocyA8PSAweGZmZmYpIHsKKyAgICAgICAgaW50MTZfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfMjsKKyAgICAgICAgYXNzZXJ0KGl4IDw9IDB4N2ZmZik7CisgICAgICAgIGluZGljZXNbaV0gPSAoaW50MTZfdClpeDsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzID4gMHhmZmZmZmZmZikgeworICAgICAgICBpbnQ2NF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc184OworICAgICAgICBpbmRpY2VzW2ldID0gaXg7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIGludDMyX3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzQ7CisgICAgICAgIGFzc2VydChpeCA8PSAweDdmZmZmZmZmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChpbnQzMl90KWl4OworICAgIH0KK30KKworCiAvKiBVU0FCTEVfRlJBQ1RJT04gaXMgdGhlIG1heGltdW0gZGljdGlvbmFyeSBsb2FkLgotICogQ3VycmVudGx5IHNldCB0byAoMm4rMSkvMy4gSW5jcmVhc2luZyB0aGlzIHJhdGlvIG1ha2VzIGRpY3Rpb25hcmllcyBtb3JlCi0gKiBkZW5zZSByZXN1bHRpbmcgaW4gbW9yZSBjb2xsaXNpb25zLiAgRGVjcmVhc2luZyBpdCBpbXByb3ZlcyBzcGFyc2VuZXNzCi0gKiBhdCB0aGUgZXhwZW5zZSBvZiBzcHJlYWRpbmcgZW50cmllcyBvdmVyIG1vcmUgY2FjaGUgbGluZXMgYW5kIGF0IHRoZQotICogY29zdCBvZiB0b3RhbCBtZW1vcnkgY29uc3VtZWQuCisgKiBJbmNyZWFzaW5nIHRoaXMgcmF0aW8gbWFrZXMgZGljdGlvbmFyaWVzIG1vcmUgZGVuc2UgcmVzdWx0aW5nIGluIG1vcmUKKyAqIGNvbGxpc2lvbnMuICBEZWNyZWFzaW5nIGl0IGltcHJvdmVzIHNwYXJzZW5lc3MgYXQgdGhlIGV4cGVuc2Ugb2Ygc3ByZWFkaW5nCisgKiBpbmRpY2VzIG92ZXIgbW9yZSBjYWNoZSBsaW5lcyBhbmQgYXQgdGhlIGNvc3Qgb2YgdG90YWwgbWVtb3J5IGNvbnN1bWVkLgogICoKICAqIFVTQUJMRV9GUkFDVElPTiBtdXN0IG9iZXkgdGhlIGZvbGxvd2luZzoKICAqICAgICAoMCA8IFVTQUJMRV9GUkFDVElPTihuKSA8IG4pIGZvciBhbGwgbiA+PSAyCiAgKgotICogVVNBQkxFX0ZSQUNUSU9OIHNob3VsZCBiZSB2ZXJ5IHF1aWNrIHRvIGNhbGN1bGF0ZS4KLSAqIEZyYWN0aW9ucyBhcm91bmQgNS84IHRvIDIvMyBzZWVtIHRvIHdvcmsgd2VsbCBpbiBwcmFjdGljZS4KKyAqIFVTQUJMRV9GUkFDVElPTiBzaG91bGQgYmUgcXVpY2sgdG8gY2FsY3VsYXRlLgorICogRnJhY3Rpb25zIGFyb3VuZCAxLzIgdG8gMi8zIHNlZW0gdG8gd29yayB3ZWxsIGluIHByYWN0aWNlLgogICovCisjZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKChuKSA8PCAxKS8zKQogCi0vKiBVc2UgKDJuKzEpLzMgcmF0aGVyIHRoYW4gMm4rMyBiZWNhdXNlOiBpdCBtYWtlcyBubyBkaWZmZXJlbmNlIGZvcgotICogY29tYmluZWQgdGFibGVzICh0aGUgdHdvIGZyYWN0aW9ucyByb3VuZCB0byB0aGUgc2FtZSBudW1iZXIgbiA8ICksCi0gKiBidXQgMio0LzMgaXMgMiB3aGVyZWFzICgyKjQrMSkvMyBpcyAzIHdoaWNoIHBvdGVudGlhbGx5IHNhdmVzIHF1aXRlCi0gKiBhIGxvdCBvZiBzcGFjZSBmb3Igc21hbGwsIHNwbGl0IHRhYmxlcyAqLwotI2RlZmluZSBVU0FCTEVfRlJBQ1RJT04obikgKCgoKG4pIDw8IDEpKzEpLzMpCisvKiBFU1RJTUFURV9TSVpFIGlzIHJldmVyc2UgZnVuY3Rpb24gb2YgVVNBQkxFX0ZSQUNUSU9OLgorICogVGhpcyBjYW4gYmUgdXNlZCB0byByZXNlcnZlIGVub3VnaCBzaXplIHRvIGluc2VydCBuIGVudHJpZXMgd2l0aG91dAorICogcmVzaXppbmcuCisgKi8KKyNkZWZpbmUgRVNUSU1BVEVfU0laRShuKSAgKCgobikqMykgPj4gMSkKIAotLyogQWx0ZXJuYXRpdmUgZnJhY3Rpb24gdGhhdCBpcyBvdGhlcndpc2UgY2xvc2UgZW5vdWdoIHRvICgybisxKS8zIHRvIG1ha2UKKy8qIEFsdGVybmF0aXZlIGZyYWN0aW9uIHRoYXQgaXMgb3RoZXJ3aXNlIGNsb3NlIGVub3VnaCB0byAybi8zIHRvIG1ha2UKICAqIGxpdHRsZSBkaWZmZXJlbmNlLiA4ICogMi8zID09IDggKiA1LzggPT0gNS4gMTYgKiAyLzMgPT0gMTYgKiA1LzggPT0gMTAuCiAgKiAzMiAqIDIvMyA9IDIxLCAzMiAqIDUvOCA9IDIwLgogICogSXRzIGFkdmFudGFnZSBpcyB0aGF0IGl0IGlzIGZhc3RlciB0byBjb21wdXRlIG9uIG1hY2hpbmVzIHdpdGggc2xvdyBkaXZpc2lvbi4KICAqICNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKG4pID4+IDEpICsgKChuKSA+PiAyKSAtICgobikgPj4gMykpCi0qLworICovCiAKIC8qIEdST1dUSF9SQVRFLiBHcm93dGggcmF0ZSB1cG9uIGhpdHRpbmcgbWF4aW11bSBsb2FkLgogICogQ3VycmVudGx5IHNldCB0byB1c2VkKjIgKyBjYXBhY2l0eS8yLgpAQCAtMzA0LDU3ICs0MjMsMTUxIEBACiAgICAgICAgIDEsIC8qIGRrX3NpemUgKi8KICAgICAgICAgbG9va2RpY3Rfc3BsaXQsIC8qIGRrX2xvb2t1cCAqLwogICAgICAgICAwLCAvKiBka191c2FibGUgKGltbXV0YWJsZSkgKi8KLSAgICAgICAgewotICAgICAgICAgICAgeyAwLCAwLCAwIH0gLyogZGtfZW50cmllcyAoZW1wdHkpICovCi0gICAgICAgIH0KKyAgICAgICAgMCwgLyogZGtfbmVudHJpZXMgKi8KKyAgICAgICAgLmRrX2luZGljZXMgPSB7IC5hc18xID0ge0RLSVhfRU1QVFksIERLSVhfRU1QVFksIERLSVhfRU1QVFksIERLSVhfRU1QVFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZfX0sCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X3ZhbHVlc1sxXSA9IHsgTlVMTCB9OwogCiAjZGVmaW5lIFB5X0VNUFRZX0tFWVMgJmVtcHR5X2tleXNfc3RydWN0CiAKKy8qIFVuY29tbWVudCB0byBjaGVjayB0aGUgZGljdCBjb250ZW50IGluIF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeSgpICovCisvKiAjZGVmaW5lIERFQlVHX1BZRElDVCAqLworCisKKyNpZmRlZiBQeV9ERUJVRworc3RhdGljIGludAorX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KFB5RGljdE9iamVjdCAqbXApCit7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG1wLT5tYV9rZXlzOworICAgIGludCBzcGxpdHRlZCA9IF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCk7CisgICAgUHlfc3NpemVfdCB1c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oa2V5cy0+ZGtfc2l6ZSk7CisjaWZkZWYgREVCVUdfUFlESUNUCisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSBES19FTlRSSUVTKGtleXMpOworICAgIFB5X3NzaXplX3QgaTsKKyNlbmRpZgorCisgICAgYXNzZXJ0KDAgPD0gbXAtPm1hX3VzZWQgJiYgbXAtPm1hX3VzZWQgPD0gdXNhYmxlKTsKKyAgICBhc3NlcnQoSVNfUE9XRVJfT0ZfMihrZXlzLT5ka19zaXplKSk7CisgICAgYXNzZXJ0KDAgPD0ga2V5cy0+ZGtfdXNhYmxlCisgICAgICAgICAgICYmIGtleXMtPmRrX3VzYWJsZSA8PSB1c2FibGUpOworICAgIGFzc2VydCgwIDw9IGtleXMtPmRrX25lbnRyaWVzCisgICAgICAgICAgICYmIGtleXMtPmRrX25lbnRyaWVzIDw9IHVzYWJsZSk7CisgICAgYXNzZXJ0KGtleXMtPmRrX3VzYWJsZSArIGtleXMtPmRrX25lbnRyaWVzIDw9IHVzYWJsZSk7CisKKyAgICBpZiAoIXNwbGl0dGVkKSB7CisgICAgICAgIC8qIGNvbWJpbmVkIHRhYmxlICovCisgICAgICAgIGFzc2VydChrZXlzLT5ka19yZWZjbnQgPT0gMSk7CisgICAgfQorCisjaWZkZWYgREVCVUdfUFlESUNUCisgICAgZm9yIChpPTA7IGkgPCBrZXlzLT5ka19zaXplOyBpKyspIHsKKyAgICAgICAgUHlfc3NpemVfdCBpeCA9IGRrX2dldF9pbmRleChrZXlzLCBpKTsKKyAgICAgICAgYXNzZXJ0KERLSVhfRFVNTVkgPD0gaXggJiYgaXggPD0gdXNhYmxlKTsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IHVzYWJsZTsgaSsrKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplbnRyeSA9ICZlbnRyaWVzW2ldOworICAgICAgICBQeU9iamVjdCAqa2V5ID0gZW50cnktPm1lX2tleTsKKworICAgICAgICBpZiAoa2V5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CisgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKilrZXkpLT5oYXNoOworICAgICAgICAgICAgICAgIGFzc2VydChoYXNoICE9IC0xKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX2hhc2ggPT0gaGFzaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiB0ZXN0X2RpY3QgZmFpbHMgaWYgUHlPYmplY3RfSGFzaCgpIGlzIGNhbGxlZCBhZ2FpbiAqLworICAgICAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfaGFzaCAhPSAtMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXNwbGl0dGVkKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5tZV92YWx1ZSAhPSBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzcGxpdHRlZCkgeworICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5tZV92YWx1ZSA9PSBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzcGxpdHRlZCkgeworICAgICAgICAvKiBzcGxpdHRlZCB0YWJsZSAqLworICAgICAgICBmb3IgKGk9MDsgaSA8IG1wLT5tYV91c2VkOyBpKyspIHsKKyAgICAgICAgICAgIGFzc2VydChtcC0+bWFfdmFsdWVzW2ldICE9IE5VTEwpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gMTsKK30KKyNlbmRpZgorCisKIHN0YXRpYyBQeURpY3RLZXlzT2JqZWN0ICpuZXdfa2V5c19vYmplY3QoUHlfc3NpemVfdCBzaXplKQogewogICAgIFB5RGljdEtleXNPYmplY3QgKmRrOwotICAgIFB5X3NzaXplX3QgaTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwOworICAgIFB5X3NzaXplX3QgZXMsIHVzYWJsZTsKIAotICAgIGFzc2VydChzaXplID49IFB5RGljdF9NSU5TSVpFX1NQTElUKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSBQeURpY3RfTUlOU0laRSk7CiAgICAgYXNzZXJ0KElTX1BPV0VSX09GXzIoc2l6ZSkpOwotICAgIGRrID0gUHlNZW1fTUFMTE9DKHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIChzaXplLTEpKTsKLSAgICBpZiAoZGsgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHVzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihzaXplKTsKKyAgICBpZiAoc2l6ZSA8PSAweGZmKSB7CisgICAgICAgIGVzID0gMTsKKyAgICB9CisgICAgZWxzZSBpZiAoc2l6ZSA8PSAweGZmZmYpIHsKKyAgICAgICAgZXMgPSAyOworICAgIH0KKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorICAgIGVsc2UgaWYgKHNpemUgPD0gMHhmZmZmZmZmZikgeworICAgICAgICBlcyA9IDQ7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIGVzID0gc2l6ZW9mKFB5X3NzaXplX3QpOworICAgIH0KKworICAgIGlmIChzaXplID09IFB5RGljdF9NSU5TSVpFICYmIG51bWZyZWVrZXlzID4gMCkgeworICAgICAgICBkayA9IGtleXNfZnJlZV9saXN0Wy0tbnVtZnJlZWtleXNdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZGsgPSBQeU9iamVjdF9NQUxMT0Moc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gUHlfTUVNQkVSX1NJWkUoUHlEaWN0S2V5c09iamVjdCwgZGtfaW5kaWNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBlcyAqIHNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzaXplb2YoUHlEaWN0S2V5RW50cnkpICogdXNhYmxlKTsKKyAgICAgICAgaWYgKGRrID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KICAgICBES19ERUJVR19JTkNSRUYgZGstPmRrX3JlZmNudCA9IDE7CiAgICAgZGstPmRrX3NpemUgPSBzaXplOwotICAgIGRrLT5ka191c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7Ci0gICAgZXAwID0gJmRrLT5ka19lbnRyaWVzWzBdOwotICAgIC8qIEhhc2ggdmFsdWUgb2Ygc2xvdCAwIGlzIHVzZWQgYnkgcG9waXRlbSwgc28gaXQgbXVzdCBiZSBpbml0aWFsaXplZCAqLwotICAgIGVwMC0+bWVfaGFzaCA9IDA7Ci0gICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBlcDBbaV0ubWVfa2V5ID0gTlVMTDsKLSAgICAgICAgZXAwW2ldLm1lX3ZhbHVlID0gTlVMTDsKLSAgICB9CisgICAgZGstPmRrX3VzYWJsZSA9IHVzYWJsZTsKICAgICBkay0+ZGtfbG9va3VwID0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15OworICAgIGRrLT5ka19uZW50cmllcyA9IDA7CisgICAgbWVtc2V0KCZkay0+ZGtfaW5kaWNlcy5hc18xWzBdLCAweGZmLCBlcyAqIHNpemUpOworICAgIG1lbXNldChES19FTlRSSUVTKGRrKSwgMCwgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIHVzYWJsZSk7CiAgICAgcmV0dXJuIGRrOwogfQogCiBzdGF0aWMgdm9pZAogZnJlZV9rZXlzX29iamVjdChQeURpY3RLZXlzT2JqZWN0ICprZXlzKQogewotICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gJmtleXMtPmRrX2VudHJpZXNbMF07CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSBES19FTlRSSUVTKGtleXMpOwogICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShrZXlzKTsgaSA8IG47IGkrKykgeworICAgIGZvciAoaSA9IDAsIG4gPSBrZXlzLT5ka19uZW50cmllczsgaSA8IG47IGkrKykgewogICAgICAgICBQeV9YREVDUkVGKGVudHJpZXNbaV0ubWVfa2V5KTsKICAgICAgICAgUHlfWERFQ1JFRihlbnRyaWVzW2ldLm1lX3ZhbHVlKTsKICAgICB9Ci0gICAgUHlNZW1fRlJFRShrZXlzKTsKKyAgICBpZiAoa2V5cy0+ZGtfc2l6ZSA9PSBQeURpY3RfTUlOU0laRSAmJiBudW1mcmVla2V5cyA8IFB5RGljdF9NQVhGUkVFTElTVCkgeworICAgICAgICBrZXlzX2ZyZWVfbGlzdFtudW1mcmVla2V5cysrXSA9IGtleXM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUHlPYmplY3RfRlJFRShrZXlzKTsKIH0KIAogI2RlZmluZSBuZXdfdmFsdWVzKHNpemUpIFB5TWVtX05FVyhQeU9iamVjdCAqLCBzaXplKQotCiAjZGVmaW5lIGZyZWVfdmFsdWVzKHZhbHVlcykgUHlNZW1fRlJFRSh2YWx1ZXMpCiAKIC8qIENvbnN1bWVzIGEgcmVmZXJlbmNlIHRvIHRoZSBrZXlzIG9iamVjdCAqLwpAQCAtMzgwLDYgKzU5Myw4IEBACiAgICAgbXAtPm1hX2tleXMgPSBrZXlzOwogICAgIG1wLT5tYV92YWx1ZXMgPSB2YWx1ZXM7CiAgICAgbXAtPm1hX3VzZWQgPSAwOworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiAoUHlPYmplY3QgKiltcDsKIH0KIApAQCAtMzkwLDcgKzYwNSw3IEBACiAgICAgUHlPYmplY3QgKip2YWx1ZXM7CiAgICAgUHlfc3NpemVfdCBpLCBzaXplOwogCi0gICAgc2l6ZSA9IERLX1NJWkUoa2V5cyk7CisgICAgc2l6ZSA9IFVTQUJMRV9GUkFDVElPTihES19TSVpFKGtleXMpKTsKICAgICB2YWx1ZXMgPSBuZXdfdmFsdWVzKHNpemUpOwogICAgIGlmICh2YWx1ZXMgPT0gTlVMTCkgewogICAgICAgICBES19ERUNSRUYoa2V5cyk7CkBAIC00MDUsMTIgKzYyMCw0MyBAQAogUHlPYmplY3QgKgogUHlEaWN0X05ldyh2b2lkKQogewotICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkVfQ09NQklORUQpOworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkUpOwogICAgIGlmIChrZXlzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBuZXdfZGljdChrZXlzLCBOVUxMKTsKIH0KIAorLyogU2VhcmNoIGluZGV4IG9mIGhhc2ggdGFibGUgZnJvbSBvZmZzZXQgb2YgZW50cnkgdGFibGUgKi8KK3N0YXRpYyBQeV9zc2l6ZV90Citsb29rZGljdF9pbmRleChQeURpY3RLZXlzT2JqZWN0ICprLCBQeV9oYXNoX3QgaGFzaCwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBzaXplX3QgaSwgcGVydHVyYjsKKyAgICBzaXplX3QgbWFzayA9IERLX01BU0soayk7CisgICAgUHlfc3NpemVfdCBpeDsKKworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KGssIGkpOworICAgIGlmIChpeCA9PSBpbmRleCkgeworICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgfQorCisgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgoaywgaSk7CisgICAgICAgIGlmIChpeCA9PSBpbmRleCkgeworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIHJldHVybiBES0lYX0VNUFRZOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KKyAgICByZXR1cm4gREtJWF9FUlJPUjsKK30KKwogLyoKIFRoZSBiYXNpYyBsb29rdXAgZnVuY3Rpb24gdXNlZCBieSBhbGwgb3BlcmF0aW9ucy4KIFRoaXMgaXMgYmFzZWQgb24gQWxnb3JpdGhtIEQgZnJvbSBLbnV0aCBWb2wuIDMsIFNlYy4gNi40LgpAQCAtNDI2LDUyICs2NzIsNjMgQEAKIGNvbnRyaWJ1dGlvbnMgYnkgUmVpbWVyIEJlaHJlbmRzLCBKeXJraSBBbGFrdWlqYWxhLCBWbGFkaW1pciBNYXJhbmdvem92IGFuZAogQ2hyaXN0aWFuIFRpc21lci4KIAotbG9va2RpY3QoKSBpcyBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIE5VTEwgaWYgKGFuZCBvbmx5IGlmKSBhCi1jb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24gKHRoaXMgd2FzIG5ldyBpbiBQeXRob24gMi41KS4KK2xvb2tkaWN0KCkgaXMgZ2VuZXJhbC1wdXJwb3NlLCBhbmQgbWF5IHJldHVybiBES0lYX0VSUk9SIGlmIChhbmQgb25seSBpZikgYQorY29tcGFyaXNvbiByYWlzZXMgYW4gZXhjZXB0aW9uLgogbG9va2RpY3RfdW5pY29kZSgpIGJlbG93IGlzIHNwZWNpYWxpemVkIHRvIHN0cmluZyBrZXlzLCBjb21wYXJpc29uIG9mIHdoaWNoIGNhbgotbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gTlVMTC4KK25ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuIERLSVhfRVJST1IuCiBsb29rZGljdF91bmljb2RlX25vZHVtbXkgaXMgZnVydGhlciBzcGVjaWFsaXplZCBmb3Igc3RyaW5nIGtleXMgdGhhdCBjYW5ub3QgYmUKIHRoZSA8ZHVtbXk+IHZhbHVlLgotRm9yIGJvdGgsIHdoZW4gdGhlIGtleSBpc24ndCBmb3VuZCBhIFB5RGljdEVudHJ5KiBpcyByZXR1cm5lZAotd2hlcmUgdGhlIGtleSB3b3VsZCBoYXZlIGJlZW4gZm91bmQsICp2YWx1ZV9hZGRyIHBvaW50cyB0byB0aGUgbWF0Y2hpbmcgdmFsdWUKLXNsb3QuCitGb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgREtJWF9FTVBUWSBpcyByZXR1cm5lZC4gaGFzaHBvcyByZXR1cm5zCit3aGVyZSB0aGUga2V5IGluZGV4IHNob3VsZCBiZSBpbnNlcnRlZC4KICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewotICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwotICAgIFB5RGljdEtleUVudHJ5ICpmcmVlc2xvdDsKLSAgICBzaXplX3QgbWFzazsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBzaXplX3QgaSwgcGVydHVyYiwgbWFzazsKKyAgICBQeV9zc2l6ZV90IGl4LCBmcmVlc2xvdDsKICAgICBpbnQgY21wOworICAgIFB5RGljdEtleXNPYmplY3QgKmRrOworICAgIFB5RGljdEtleUVudHJ5ICplcDAsICplcDsKICAgICBQeU9iamVjdCAqc3RhcnRrZXk7CiAKIHRvcDoKLSAgICBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIGRrID0gbXAtPm1hX2tleXM7CisgICAgbWFzayA9IERLX01BU0soZGspOworICAgIGVwMCA9IERLX0VOVFJJRVMoZGspOwogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworCisgICAgaXggPSBka19nZXRfaW5kZXgoZGssIGkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQotICAgICAgICBmcmVlc2xvdCA9IGVwOworICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoKSB7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICByZXR1cm4gaXg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfaGFzaCA9PSBoYXNoKSB7CiAgICAgICAgICAgICBzdGFydGtleSA9IGVwLT5tZV9rZXk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIHJldHVybiBES0lYX0VSUk9SOworICAgICAgICAgICAgaWYgKGRrID09IG1wLT5tYV9rZXlzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewpAQCAtNDc5LDQwICs3MzYsNDggQEAKICAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmcmVlc2xvdCA9IE5VTEw7CisgICAgICAgIGZyZWVzbG90ID0gLTE7CiAgICAgfQogCi0gICAgLyogSW4gdGhlIGxvb3AsIG1lX2tleSA9PSBkdW1teSBpcyBieSBmYXIgKGZhY3RvciBvZiAxMDBzKSB0aGUKLSAgICAgICBsZWFzdCBsaWtlbHkgb3V0Y29tZSwgc28gdGVzdCBmb3IgdGhhdCBsYXN0LiAqLwogICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChmcmVlc2xvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgIHJldHVybiBlcDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZnJlZXNsb3QtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdDsKKyAgICAgICAgaSA9ICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSkgJiBtYXNrOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChkaywgaSk7CisgICAgICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSAoZnJlZXNsb3QgPT0gLTEpID8gKFB5X3NzaXplX3QpaSA6IGZyZWVzbG90OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9CisgICAgICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gLTEpCisgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5KSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpIHsKKyAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgZXAtPm1lX2tleSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBzdGFydGtleSA9IGVwLT5tZV9rZXk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBpZiAoY21wIDwgMCkgewogICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICByZXR1cm4gREtJWF9FUlJPUjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgaWYgKGRrID09IG1wLT5tYV9rZXlzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTUyMCw3MiArNzg1LDgwIEBACiAgICAgICAgICAgICAgICAgZ290byB0b3A7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgZnJlZXNsb3QgPSBlcDsKICAgICB9CiAgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLwogICAgIHJldHVybiAwOwogfQogCiAvKiBTcGVjaWFsaXplZCB2ZXJzaW9uIGZvciBzdHJpbmctb25seSBrZXlzICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewotICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwotICAgIFB5RGljdEtleUVudHJ5ICpmcmVlc2xvdDsKKyAgICBzaXplX3QgaSwgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXgsIGZyZWVzbG90OworICAgIFB5RGljdEtleUVudHJ5ICplcCwgKmVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOwogCisgICAgYXNzZXJ0KG1wLT5tYV92YWx1ZXMgPT0gTlVMTCk7CiAgICAgLyogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGhhbmRsZSBub24tdW5pY29kZSBrZXlzLAogICAgICAgIGluY2x1ZGluZyBzdWJjbGFzc2VzIG9mIHN0cjsgZS5nLiwgb25lIHJlYXNvbiB0byBzdWJjbGFzcwogICAgICAgIHVuaWNvZGVzIGlzIHRvIG92ZXJyaWRlIF9fZXFfXywgYW5kIGZvciBzcGVlZCB3ZSBkb24ndCBjYXRlciB0bwogICAgICAgIHRoYXQgaGVyZS4gKi8KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OwotICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkcik7CisgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyLCBoYXNocG9zKTsKICAgICB9CiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICByZXR1cm4gZXA7CisgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQotICAgICAgICBmcmVlc2xvdCA9IGVwOworICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkgeworICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICAvKiBvbmx5IHNwbGl0IHRhYmxlIGNhbiBiZSBpeCAhPSBES0lYX0RVTU1ZICYmIG1lX2tleSA9PSBOVUxMICovCisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgZnJlZXNsb3QgPSBOVUxMOworICAgICAgICBmcmVlc2xvdCA9IC0xOwogICAgIH0KIAotICAgIC8qIEluIHRoZSBsb29wLCBtZV9rZXkgPT0gZHVtbXkgaXMgYnkgZmFyIChmYWN0b3Igb2YgMTAwcykgdGhlCi0gICAgICAgbGVhc3QgbGlrZWx5IG91dGNvbWUsIHNvIHRlc3QgZm9yIHRoYXQgbGFzdC4gKi8KICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpoYXNocG9zID0gKGZyZWVzbG90ID09IC0xKSA/IChQeV9zc2l6ZV90KWkgOiBmcmVlc2xvdDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBES0lYX0VNUFRZOwogICAgICAgICB9CisgICAgICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gLTEpCisgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5CiAgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaAotICAgICAgICAgICAgJiYgZXAtPm1lX2tleSAhPSBkdW1teQotICAgICAgICAgICAgJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgICAgICYmIGVwLT5tZV9rZXkgIT0gTlVMTAorICAgICAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGZyZWVzbG90ID0gZXA7CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KICAgICByZXR1cm4gMDsKQEAgLTU5Myw0MCArODY2LDYyIEBACiAKIC8qIEZhc3RlciB2ZXJzaW9uIG9mIGxvb2tkaWN0X3VuaWNvZGUgd2hlbiBpdCBpcyBrbm93biB0aGF0IG5vIDxkdW1teT4ga2V5cwogICogd2lsbCBiZSBwcmVzZW50LiAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90CiBsb29rZGljdF91bmljb2RlX25vZHVtbXkoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKQogewotICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOworICAgIHNpemVfdCBpLCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIGFzc2VydChtcC0+bWFfdmFsdWVzID09IE5VTEwpOwogICAgIC8qIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgbm9uLXVuaWNvZGUga2V5cywKICAgICAgICBpbmNsdWRpbmcgc3ViY2xhc3NlcyBvZiBzdHI7IGUuZy4sIG9uZSByZWFzb24gdG8gc3ViY2xhc3MKICAgICAgICB1bmljb2RlcyBpcyB0byBvdmVycmlkZSBfX2VxX18sIGFuZCBmb3Igc3BlZWQgd2UgZG9uJ3QgY2F0ZXIgdG8KICAgICAgICB0aGF0IGhlcmUuICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKLSAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkciwgaGFzaHBvcyk7CiAgICAgfQogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgIGFzc2VydCAoaXggIT0gREtJWF9EVU1NWSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICB9CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAogICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CiAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgICAgICByZXR1cm4gaXg7CiAgICAgfQogICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5IHx8CiAgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC02MzgsMzkgKzkzMyw2MSBAQAogICogU3BsaXQgdGFibGVzIG9ubHkgY29udGFpbiB1bmljb2RlIGtleXMgYW5kIG5vIGR1bW15IGtleXMsCiAgKiBzbyBhbGdvcml0aG0gaXMgdGhlIHNhbWUgYXMgbG9va2RpY3RfdW5pY29kZV9ub2R1bW15LgogICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewotICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOworICAgIHNpemVfdCBpLCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIC8qIG1wIG11c3Qgc3BsaXQgdGFibGUgKi8KKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgZXAgPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKLSAgICAgICAgLyogbG9va2RpY3QgZXhwZWN0cyBhIGNvbWJpbmVkLXRhYmxlLCBzbyBmaXggdmFsdWVfYWRkciAqLwotICAgICAgICBpID0gZXAgLSBlcDA7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgaXggPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyLCBoYXNocG9zKTsKKyAgICAgICAgaWYgKGl4ID49IDApIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpeDsKICAgICB9CisKICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07CisgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgfQorICAgIGFzc2VydChpeCA+PSAwKTsKKyAgICBlcCA9ICZlcDBbaXhdOwogICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKICAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgewotICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2ldOwotICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICByZXR1cm4gaXg7CiAgICAgfQogICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgICAgIGVwID0gJmVwMFtpeF07CiAgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAogICAgICAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgewotICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpICYgbWFza107Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KQEAgLTcwNywyNyArMTAyNCwyNyBAQAogewogICAgIFB5RGljdE9iamVjdCAqbXA7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIG51bWVudHJpZXM7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3Qob3ApIHx8ICFfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChvcCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKSBvcDsKLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgbnVtZW50cmllcyA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1lbnRyaWVzOyBpKyspIHsKICAgICAgICAgICAgIGlmICgodmFsdWUgPSBtcC0+bWFfdmFsdWVzW2ldKSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQoIV9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCgKLSAgICAgICAgICAgICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCFfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoZXAwW2ldLm1lX2tleSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZW50cmllczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKHZhbHVlID0gZXAwW2ldLm1lX3ZhbHVlKSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkgfHwKQEAgLTczOSwzMyArMTA1NiwzNCBAQAogfQogCiAvKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBmaW5kIHNsb3QgZm9yIGFuIGl0ZW0gZnJvbSBpdHMgaGFzaAotICogd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3QuCi0gKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCi1maW5kX2VtcHR5X3Nsb3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKLXsKLSAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKLSAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3QuCiAKKyAgIFRoZSBkaWN0IG11c3QgYmUgY29tYmluZWQuICovCitzdGF0aWMgdm9pZAorZmluZF9lbXB0eV9zbG90KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsIFB5X3NzaXplX3QgKmhhc2hwb3MpCit7CisgICAgc2l6ZV90IGksIHBlcnR1cmI7CisgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICBQeV9zc2l6ZV90IGl4OworICAgIFB5RGljdEtleUVudHJ5ICplcCwgKmVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworCisgICAgYXNzZXJ0KCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKTsKKyAgICBhc3NlcnQoaGFzaHBvcyAhPSBOVUxMKTsKICAgICBhc3NlcnQoa2V5ICE9IE5VTEwpOworCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKQogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7CiAgICAgaSA9IGhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyBlcC0+bWVfa2V5ICE9IE5VTEw7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKKyAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgaXggIT0gREtJWF9FTVBUWTsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewogICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpICYgbWFzayk7CiAgICAgfQorICAgIGVwID0gJmVwMFttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdOworICAgICpoYXNocG9zID0gaSAmIG1hc2s7CiAgICAgYXNzZXJ0KGVwLT5tZV92YWx1ZSA9PSBOVUxMKTsKLSAgICBpZiAobXAtPm1hX3ZhbHVlcykKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpICYgbWFza107Ci0gICAgZWxzZQotICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgcmV0dXJuIGVwOworICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKIH0KIAogc3RhdGljIGludApAQCAtNzg0LDU4ICsxMTAyLDg4IEBACiB7CiAgICAgUHlPYmplY3QgKm9sZF92YWx1ZTsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwotICAgIGFzc2VydChrZXkgIT0gZHVtbXkpOworICAgIFB5RGljdEtleUVudHJ5ICplcCwgKmVwMDsKKyAgICBQeV9zc2l6ZV90IGhhc2hwb3MsIGl4OwogCiAgICAgaWYgKG1wLT5tYV92YWx1ZXMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewogICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGVwID0gbXAtPm1hX2tleXMtPmRrX2xvb2t1cChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpIHsKKyAgICBpeCA9IG1wLT5tYV9rZXlzLT5ka19sb29rdXAobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorCiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7Ci0gICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKG9sZF92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgZXAtPm1lX2tleSAhPSBkdW1teSk7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOyAvKiB3aGljaCAqKkNBTioqIHJlLWVudGVyIChzZWUgaXNzdWUgIzIyNjUzKSAqLworCisgICAgLyogV2hlbiBpbnNlcnRpb24gb3JkZXIgaXMgZGlmZmVyZW50IGZyb20gc2hhcmVkIGtleSwgd2UgY2FuJ3Qgc2hhcmUKKyAgICAgKiB0aGUga2V5IGFueW1vcmUuICBDb252ZXJ0IHRoaXMgaW5zdGFuY2UgdG8gY29tYmluZSB0YWJsZS4KKyAgICAgKi8KKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSAmJgorICAgICAgICAoKGl4ID49IDAgJiYgKnZhbHVlX2FkZHIgPT0gTlVMTCAmJiBtcC0+bWFfdXNlZCAhPSBpeCkgfHwKKyAgICAgICAgIChpeCA9PSBES0lYX0VNUFRZICYmIG1wLT5tYV91c2VkICE9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllcykpKSB7CisgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIGl4ID0gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgPD0gMCkgewotICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLwotICAgICAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZXAgPSBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworCisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgLyogSW5zZXJ0IGludG8gbmV3IHNsb3QuICovCisgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKKyAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLworICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOwotICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka191c2FibGUgPj0gMCk7Ci0gICAgICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OwotICAgICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICAgICAgZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgICAgIGVwID0gJmVwMFttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdOworICAgICAgICBka19zZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MsIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyk7CisgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OworICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CisgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgICAgICBhc3NlcnQgKG1wLT5tYV92YWx1ZXNbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXSA9PSBOVUxMKTsKKyAgICAgICAgICAgIG1wLT5tYV92YWx1ZXNbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXSA9IHZhbHVlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OwotICAgICAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICBtcC0+bWFfdXNlZCsrOwotICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOwotICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcysrOworICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICBhc3NlcnQodmFsdWVfYWRkciAhPSBOVUxMKTsKKworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGlmIChvbGRfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CisKKyAgICAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7IC8qIHdoaWNoICoqQ0FOKiogcmUtZW50ZXIgKHNlZSBpc3N1ZSAjMjI2NTMpICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIHBlbmRpbmcgc3RhdGUgKi8KKyAgICBhc3NlcnQoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSk7CisgICAgYXNzZXJ0KGl4ID09IG1wLT5tYV91c2VkKTsKKyAgICAqdmFsdWVfYWRkciA9IHZhbHVlOworICAgIG1wLT5tYV91c2VkKys7CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTg1MywyNSArMTIwMSwyNSBAQAogaW5zZXJ0ZGljdF9jbGVhbihQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQogewotICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOworICAgIHNpemVfdCBpLCBwZXJ0dXJiOwogICAgIFB5RGljdEtleXNPYmplY3QgKmsgPSBtcC0+bWFfa2V5czsKICAgICBzaXplX3QgbWFzayA9IChzaXplX3QpREtfU0laRShrKS0xOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmay0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogCiAgICAgYXNzZXJ0KGstPmRrX2xvb2t1cCAhPSBOVUxMKTsKICAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBrLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIGkgPSBoYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyBka19nZXRfaW5kZXgoaywgaSkgIT0gREtJWF9FTVBUWTsKKyAgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKKyAgICAgICAgaSA9IG1hc2sgJiAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpOwogICAgIH0KKyAgICBlcCA9ICZlcDBbay0+ZGtfbmVudHJpZXNdOwogICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7CisgICAgZGtfc2V0X2luZGV4KGssIGksIGstPmRrX25lbnRyaWVzKTsKKyAgICBrLT5ka19uZW50cmllcysrOwogICAgIGVwLT5tZV9rZXkgPSBrZXk7CiAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwogICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwpAQCAtODkwLDEzICsxMjM4LDEzIEBACiBzdGF0aWMgaW50CiBkaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCkKIHsKLSAgICBQeV9zc2l6ZV90IG5ld3NpemU7CisgICAgUHlfc3NpemVfdCBpLCBuZXdzaXplOwogICAgIFB5RGljdEtleXNPYmplY3QgKm9sZGtleXM7CiAgICAgUHlPYmplY3QgKipvbGR2YWx1ZXM7Ci0gICAgUHlfc3NpemVfdCBpLCBvbGRzaXplOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CiAKLS8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLwotICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEOworICAgIC8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLworICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFOwogICAgICAgICAgbmV3c2l6ZSA8PSBtaW51c2VkICYmIG5ld3NpemUgPiAwOwogICAgICAgICAgbmV3c2l6ZSA8PD0gMSkKICAgICAgICAgOwpAQCAtOTE0LDU0ICsxMjYyLDQxIEBACiAgICAgfQogICAgIGlmIChvbGRrZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpCiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKLSAgICBvbGRzaXplID0gREtfU0laRShvbGRrZXlzKTsKICAgICBtcC0+bWFfdmFsdWVzID0gTlVMTDsKLSAgICAvKiBJZiBlbXB0eSB0aGVuIG5vdGhpbmcgdG8gY29weSBzbyBqdXN0IHJldHVybiAqLwotICAgIGlmIChvbGRzaXplID09IDEpIHsKLSAgICAgICAgYXNzZXJ0KG9sZGtleXMgPT0gUHlfRU1QVFlfS0VZUyk7Ci0gICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGVwMCA9IERLX0VOVFJJRVMob2xka2V5cyk7CiAgICAgLyogTWFpbiBsb29wIGJlbG93IGFzc3VtZXMgd2UgY2FuIHRyYW5zZmVyIHJlZmNvdW50IHRvIG5ldyBrZXlzCiAgICAgICogYW5kIHRoYXQgdmFsdWUgaXMgc3RvcmVkIGluIG1lX3ZhbHVlLgogICAgICAqIEluY3JlbWVudCByZWYtY291bnRzIGFuZCBjb3B5IHZhbHVlcyBoZXJlIHRvIGNvbXBlbnNhdGUKICAgICAgKiBUaGlzIChyZXNpemluZyBhIHNwbGl0IHRhYmxlKSBzaG91bGQgYmUgcmVsYXRpdmVseSByYXJlICovCiAgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZGtleXMtPmRrX25lbnRyaWVzOyBpKyspIHsKICAgICAgICAgICAgIGlmIChvbGR2YWx1ZXNbaV0gIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7Ci0gICAgICAgICAgICAgICAgb2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSA9IG9sZHZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZXAwW2ldLm1lX2tleSk7CisgICAgICAgICAgICAgICAgZXAwW2ldLm1lX3ZhbHVlID0gb2xkdmFsdWVzW2ldOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIC8qIE1haW4gbG9vcCAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKLSAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJm9sZGtleXMtPmRrX2VudHJpZXNbaV07CisgICAgZm9yIChpID0gMDsgaSA8IG9sZGtleXMtPmRrX25lbnRyaWVzOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJmVwMFtpXTsKICAgICAgICAgaWYgKGVwLT5tZV92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBkdW1teSk7CiAgICAgICAgICAgICBpbnNlcnRkaWN0X2NsZWFuKG1wLCBlcC0+bWVfa2V5LCBlcC0+bWVfaGFzaCwgZXAtPm1lX3ZhbHVlKTsKICAgICAgICAgfQogICAgIH0KICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIC09IG1wLT5tYV91c2VkOwogICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgewogICAgICAgICAvKiBOVUxMIG91dCBtZV92YWx1ZSBzbG90IGluIG9sZGtleXMsIGluIGNhc2UgaXQgd2FzIHNoYXJlZCAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKQotICAgICAgICAgICAgb2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSA9IE5VTEw7Ci0gICAgICAgIGFzc2VydChvbGR2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKTsKLSAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZGtleXMtPmRrX25lbnRyaWVzOyBpKyspCisgICAgICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBOVUxMOwogICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CisgICAgICAgIGlmIChvbGR2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKSB7CisgICAgICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3NwbGl0KTsKLSAgICAgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpIHsKLSAgICAgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoZXAwW2ldLm1lX2tleSA9PSBkdW1teSkKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOwotICAgICAgICBES19ERUJVR19ERUNSRUYgUHlNZW1fRlJFRShvbGRrZXlzKTsKKyAgICAgICAgREtfREVCVUdfREVDUkVGIFB5T2JqZWN0X0ZSRUUob2xka2V5cyk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtOTkxLDggKzEzMjYsOCBAQAogICAgICAgICB9CiAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSk7CiAgICAgICAgIC8qIENvcHkgdmFsdWVzIGludG8gYSBuZXcgYXJyYXkgKi8KLSAgICAgICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgICAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgICAgICBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUobXAtPm1hX2tleXMpKTsKICAgICAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCkBAIC0xMDE1LDcgKzEzNTAsNyBAQAogewogICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKICAgICBQeURpY3RLZXlzT2JqZWN0ICpuZXdfa2V5czsKLSAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRV9DT01CSU5FRDsKKyAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRTsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCiAgICAgICAgIDsKQEAgLTEwMzksOCArMTM3NCw4IEBACiBQeURpY3RfR2V0SXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCkBAIC0xMDY2LDE1ICsxNDAxLDE1IEBACiAgICAgICAgIC8qIHByZXNlcnZlIHRoZSBleGlzdGluZyBleGNlcHRpb24gKi8KICAgICAgICAgUHlPYmplY3QgKmVycl90eXBlLCAqZXJyX3ZhbHVlLCAqZXJyX3RiOwogICAgICAgICBQeUVycl9GZXRjaCgmZXJyX3R5cGUsICZlcnJfdmFsdWUsICZlcnJfdGIpOwotICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKICAgICAgICAgLyogaWdub3JlIGVycm9ycyAqLwogICAgICAgICBQeUVycl9SZXN0b3JlKGVycl90eXBlLCBlcnJfdmFsdWUsIGVycl90Yik7Ci0gICAgICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICBpZiAoaXggPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICAgICAgaWYgKGl4IDwgMCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xMDg1LDggKzE0MjAsOCBAQAogUHlPYmplY3QgKgogX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogeworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIApAQCAtMTEwMywxNSArMTQzOCwxNSBAQAogICAgICAgICAvKiBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhjZXB0aW9uICovCiAgICAgICAgIFB5T2JqZWN0ICplcnJfdHlwZSwgKmVycl92YWx1ZSwgKmVycl90YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmVycl90eXBlLCAmZXJyX3ZhbHVlLCAmZXJyX3RiKTsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CiAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xMTI2LDkgKzE0NjEsOSBAQAogUHlPYmplY3QgKgogUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogeworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgUHlEaWN0T2JqZWN0Km1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKQEAgLTExNDQsOCArMTQ3OSw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KQEAgLTExNjAsMzkgKzE0OTUsNDAgQEAKICAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoZHAsIGt2KTsKIH0KIAotLyogRmFzdCB2ZXJzaW9uIG9mIGdsb2JhbCB2YWx1ZSBsb29rdXAuCisvKiBGYXN0IHZlcnNpb24gb2YgZ2xvYmFsIHZhbHVlIGxvb2t1cCAoTE9BRF9HTE9CQUwpLgogICogTG9va3VwIGluIGdsb2JhbHMsIHRoZW4gYnVpbHRpbnMuCisgKgorICogUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBpZiBhbiBlcnJvciBvY2N1cnJlZCAoZXg6IGNvbXB1dGluZyB0aGUKKyAqIGtleSBoYXNoIGZhaWxlZCwga2V5IGNvbXBhcmlzb24gZmFpbGVkLCAuLi4pLiBSZXR1cm4gTlVMTCBpZiB0aGUga2V5IGRvZXNuJ3QKKyAqIGV4aXN0LiBSZXR1cm4gdGhlIHZhbHVlIGlmIHRoZSBrZXkgZXhpc3RzLgogICovCiBQeU9iamVjdCAqCiBfUHlEaWN0X0xvYWRHbG9iYWwoUHlEaWN0T2JqZWN0ICpnbG9iYWxzLCBQeURpY3RPYmplY3QgKmJ1aWx0aW5zLCBQeU9iamVjdCAqa2V5KQogewotICAgIFB5T2JqZWN0ICp4OwotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKLSAgICAgICAgUHlfaGFzaF90IGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKilrZXkpLT5oYXNoOwotICAgICAgICBpZiAoaGFzaCAhPSAtMSkgewotICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmU7Ci0gICAgICAgICAgICBlID0gZ2xvYmFscy0+bWFfa2V5cy0+ZGtfbG9va3VwKGdsb2JhbHMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9ICp2YWx1ZV9hZGRyOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIGUgPSBidWlsdGlucy0+bWFfa2V5cy0+ZGtfbG9va3VwKGJ1aWx0aW5zLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHggPSAqdmFsdWVfYWRkcjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgeworICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB4ID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKFB5T2JqZWN0ICopZ2xvYmFscywga2V5KTsKLSAgICBpZiAoeCAhPSBOVUxMKQotICAgICAgICByZXR1cm4geDsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKworICAgIC8qIG5hbWVzcGFjZSAxOiBnbG9iYWxzICovCisgICAgaXggPSBnbG9iYWxzLT5tYV9rZXlzLT5ka19sb29rdXAoZ2xvYmFscywga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilidWlsdGlucywga2V5KTsKKyAgICBpZiAoaXggIT0gREtJWF9FTVBUWSAmJiAqdmFsdWVfYWRkciAhPSBOVUxMKQorICAgICAgICByZXR1cm4gKnZhbHVlX2FkZHI7CisKKyAgICAvKiBuYW1lc3BhY2UgMjogYnVpbHRpbnMgKi8KKyAgICBpeCA9IGJ1aWx0aW5zLT5tYV9rZXlzLT5ka19sb29rdXAoYnVpbHRpbnMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAogLyogQ0FVVElPTjogUHlEaWN0X1NldEl0ZW0oKSBtdXN0IGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IHJlc2l6ZSB0aGUKQEAgLTEyNDcsMTYgKzE1ODMsOCBAQAogaW50CiBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7Ci0gICAgUHlPYmplY3QgKm9sZF9rZXksICpvbGRfdmFsdWU7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGFzc2VydChrZXkpOwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAogICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewpAQCAtMTI2NCwzMSArMTU5MiwxNCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKCp2YWx1ZV9hZGRyID09IE5VTEwpIHsKLSAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7Ci0gICAgKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KLSAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsKLSAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKG9wLCBrZXksIGhhc2gpOwogfQogCiBpbnQKIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKKyAgICBQeV9zc2l6ZV90IGhhc2hwb3MsIGl4OwogICAgIFB5RGljdE9iamVjdCAqbXA7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICpvbGRfa2V5LCAqb2xkX3ZhbHVlOwpAQCAtMTMwMSwyNCArMTYxMiwzOCBAQAogICAgIGFzc2VydChrZXkpOwogICAgIGFzc2VydChoYXNoICE9IC0xKTsKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBhc3NlcnQoZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zKSA9PSBpeCk7CisKKyAgICAvLyBTcGxpdCB0YWJsZSBkb2Vzbid0IGFsbG93IGRlbGV0aW9uLiAgQ29tYmluZSBpdC4KKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgYXNzZXJ0KGl4ID49IDApOworICAgIH0KKwogICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGFzc2VydChvbGRfdmFsdWUgIT0gTlVMTCk7CiAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGVwID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2l4XTsKKyAgICBka19zZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MsIERLSVhfRFVNTVkpOworICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKKyAgICBQeV9ERUNSRUYob2xkX2tleSk7CiAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7CisKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEzNDIsOSArMTY2NywxMCBAQAogICAgIG1wLT5tYV9rZXlzID0gUHlfRU1QVFlfS0VZUzsKICAgICBtcC0+bWFfdmFsdWVzID0gZW1wdHlfdmFsdWVzOwogICAgIG1wLT5tYV91c2VkID0gMDsKKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOwogICAgIC8qIC4uLnRoZW4gY2xlYXIgdGhlIGtleXMgYW5kIHZhbHVlcyAqLwogICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgewotICAgICAgICBuID0gREtfU0laRShvbGRrZXlzKTsKKyAgICAgICAgbiA9IG9sZGtleXMtPmRrX25lbnRyaWVzOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgUHlfQ0xFQVIob2xkdmFsdWVzW2ldKTsKICAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKQEAgLTEzNTQsMzggKzE2ODAsNDIgQEAKICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOwogICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogfQogCiAvKiBSZXR1cm5zIC0xIGlmIG5vIG1vcmUgaXRlbXMgKG9yIG9wIGlzIG5vdCBhIGRpY3QpLAogICogaW5kZXggb2YgaXRlbSBvdGhlcndpc2UuIFN0b3JlcyB2YWx1ZSBpbiBwdmFsdWUKICAqLwotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKIGRpY3RfbmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKipwdmFsdWUpCiB7Ci0gICAgUHlfc3NpemVfdCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBuOwogICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7Ci0KKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0ciA9IE5VTEw7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKKworICAgIG4gPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgZm9yICg7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfdmFsdWVzW2ldOworICAgICAgICAgICAgaWYgKCp2YWx1ZV9wdHIgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgICAgIGZvciAoOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIgPSAmZXAwW2ldLm1lX3ZhbHVlOworICAgICAgICAgICAgaWYgKCp2YWx1ZV9wdHIgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KLSAgICBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKLSAgICAgICAgaSsrOwotICAgIH0KLSAgICBpZiAoaSA+IG1hc2spCisgICAgaWYgKGkgPj0gbikKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChwdmFsdWUpCiAgICAgICAgICpwdmFsdWUgPSAqdmFsdWVfcHRyOwpAQCAtMTQxMCwxNCArMTc0MCwxNCBAQAogaW50CiBQeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwgUHlPYmplY3QgKipwdmFsdWUpCiB7Ci0gICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCopb3A7CiAgICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiAwOwogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwogICAgICpwcG9zID0gaSsxOwogICAgIGlmIChwa2V5KQotICAgICAgICAqcGtleSA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKKyAgICAgICAgKnBrZXkgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpXS5tZV9rZXk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE0MjksMTQgKzE3NTksMTYgQEAKICAgICAgICAgICAgICBQeU9iamVjdCAqKnB2YWx1ZSwgUHlfaGFzaF90ICpwaGFzaCkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CiAgICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiAwOwogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOworICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOwogICAgICpwcG9zID0gaSsxOwotICAgICpwaGFzaCA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2hhc2g7CisgICAgKnBoYXNoID0gZXAwW2ldLm1lX2hhc2g7CiAgICAgaWYgKHBrZXkpCi0gICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OworICAgICAgICAqcGtleSA9IGVwMFtpXS5tZV9rZXk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE0NDUsNiArMTc3Nyw3IEBACiBfUHlEaWN0X1BvcChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmbHQpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBpeCwgaGFzaHBvczsKICAgICBQeU9iamVjdCAqb2xkX3ZhbHVlLCAqb2xkX2tleTsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwpAQCAtMTQ2MywxMSArMTc5NiwxMCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKG9sZF92YWx1ZSA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBpZiAoZGVmbHQpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CiAgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CkBAIC0xNDc1LDE1ICsxODA3LDI5IEBACiAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKKyAgICAvLyBTcGxpdCB0YWJsZSBkb2Vzbid0IGFsbG93IGRlbGV0aW9uLiAgQ29tYmluZSBpdC4KKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgfQorCisgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgYXNzZXJ0KG9sZF92YWx1ZSAhPSBOVUxMKTsKICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgfQorICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBES0lYX0RVTU1ZKTsKKyAgICBlcCA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpeF07CisgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OworICAgIGVwLT5tZV9rZXkgPSBOVUxMOworICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gb2xkX3ZhbHVlOwogfQogCkBAIC0xNTA4LDcgKzE4NTQsNyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwogCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlfU0laRShpdGVyYWJsZSkpKSB7CisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgRVNUSU1BVEVfU0laRShQeV9TSVpFKGl0ZXJhYmxlKSkpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTUyNyw3ICsxODczLDcgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKIAotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpIHsKKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBFU1RJTUFURV9TSVpFKFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTU4Nyw3ICsxOTMzLDcgQEAKICAgICBQeV9UUkFTSENBTl9TQUZFX0JFR0lOKG1wKQogICAgIGlmICh2YWx1ZXMgIT0gTlVMTCkgewogICAgICAgICBpZiAodmFsdWVzICE9IGVtcHR5X3ZhbHVlcykgewotICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZXNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJlZV92YWx1ZXModmFsdWVzKTsKQEAgLTE2OTksOCArMjA0NSw4IEBACiBkaWN0X3N1YnNjcmlwdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5T2JqZWN0ICp2OworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMTcwOSwxMSArMjA1NSwxMCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHYgPT0gTlVMTCkgeworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChtcCkpIHsKICAgICAgICAgICAgIC8qIExvb2sgdXAgX19taXNzaW5nX18gbWV0aG9kIGlmIHdlJ3JlIGEgc3ViY2xhc3MuICovCiAgICAgICAgICAgICBQeU9iamVjdCAqbWlzc2luZywgKnJlczsKQEAgLTE3MzEsOCArMjA3Niw4IEBACiAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYodik7CisgICAgdiA9ICp2YWx1ZV9hZGRyOworICAgIFB5X0lOQ1JFRih2KTsKICAgICByZXR1cm4gdjsKIH0KIApAQCAtMTc3Miw4ICsyMTE3LDggQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBlcCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBzaXplID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKQEAgLTE4MDAsNiArMjE0NSw3IEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlfc3NpemVfdCBpLCBqOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeV9zc2l6ZV90IHNpemUsIG4sIG9mZnNldDsKICAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIApAQCAtMTgxNSwxMyArMjE2MSwxNCBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQotICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBlcCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIHNpemUgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX3ZhbHVlOworICAgICAgICB2YWx1ZV9wdHIgPSAmZXBbMF0ubWVfdmFsdWU7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CiAgICAgfQogICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CkBAIC0xODcyLDggKzIyMTksOCBAQAogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KICAgICAvKiBOb3RoaW5nIHdlIGRvIGJlbG93IG1ha2VzIGFueSBmdW5jdGlvbiBjYWxscy4gKi8KLSAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzOwotICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBlcCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIHNpemUgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwpAQCAtMTkxNyw3ICsyMjY0LDggQEAKIH0KIAogc3RhdGljIGludAotZGljdF91cGRhdGVfY29tbW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsIGNoYXIgKm1ldGhuYW1lKQorZGljdF91cGRhdGVfY29tbW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG5hbWUpCiB7CiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CiAgICAgaW50IHJlc3VsdCA9IDA7CkBAIC0yMDE5LDYgKzIzNjcsNyBAQAogICAgIH0KIAogICAgIGkgPSAwOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koKFB5RGljdE9iamVjdCAqKWQpKTsKICAgICBnb3RvIFJldHVybjsKIEZhaWw6CiAgICAgUHlfWERFQ1JFRihpdGVtKTsKQEAgLTIwNDAsNyArMjM4OSw3IEBACiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcCwgKm90aGVyOwogICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZW50cnk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5LCAqZXAwOwogCiAgICAgLyogV2UgYWNjZXB0IGZvciB0aGUgYXJndW1lbnQgZWl0aGVyIGEgY29uY3JldGUgZGljdGlvbmFyeSBvYmplY3QsCiAgICAgICogb3IgYW4gYWJzdHJhY3QgIm1hcHBpbmciIG9iamVjdC4gIEZvciB0aGUgZm9ybWVyLCB3ZSBjYW4gZG8KQEAgLTIwNzAsMTAgKzI0MTksMTEgQEAKICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgKiAzIDwgb3RoZXItPm1hX3VzZWQgKiAyKQogICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIChtcC0+bWFfdXNlZCArIG90aGVyLT5tYV91c2VkKSoyKSAhPSAwKQogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShvdGhlci0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZXAwID0gREtfRU5UUklFUyhvdGhlci0+bWFfa2V5cyk7CisgICAgICAgIGZvciAoaSA9IDAsIG4gPSBvdGhlci0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwotICAgICAgICAgICAgZW50cnkgPSAmb3RoZXItPm1hX2tleXMtPmRrX2VudHJpZXNbaV07CisgICAgICAgICAgICBlbnRyeSA9ICZlcDBbaV07CiAgICAgICAgICAgICBrZXkgPSBlbnRyeS0+bWVfa2V5OwogICAgICAgICAgICAgaGFzaCA9IGVudHJ5LT5tZV9oYXNoOwogICAgICAgICAgICAgaWYgKG90aGVyLT5tYV92YWx1ZXMpCkBAIC0yMDkyLDcgKzI0NDIsNyBAQAogICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgICAgICAgICAgICAgaWYgKG4gIT0gREtfU0laRShvdGhlci0+bWFfa2V5cykpIHsKKyAgICAgICAgICAgICAgICBpZiAobiAhPSBvdGhlci0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWN0IG11dGF0ZWQgZHVyaW5nIHVwZGF0ZSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0yMTQ0LDYgKzI0OTQsNyBAQAogICAgICAgICAgICAgLyogSXRlcmF0b3IgY29tcGxldGVkLCB2aWEgZXJyb3IgKi8KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeSgoUHlEaWN0T2JqZWN0ICopYSkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yMTY3LDcgKzI1MTgsOSBAQAogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW87CiAgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKICAgICAgICAgUHlEaWN0T2JqZWN0ICpzcGxpdF9jb3B5OwotICAgICAgICBQeU9iamVjdCAqKm5ld3ZhbHVlcyA9IG5ld192YWx1ZXMoREtfU0laRShtcC0+bWFfa2V5cykpOworICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShtcC0+bWFfa2V5cykpOworICAgICAgICBQeU9iamVjdCAqKm5ld3ZhbHVlczsKKyAgICAgICAgbmV3dmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICAgICAgaWYgKG5ld3ZhbHVlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHNwbGl0X2NvcHkgPSBQeU9iamVjdF9HQ19OZXcoUHlEaWN0T2JqZWN0LCAmUHlEaWN0X1R5cGUpOwpAQCAtMjE3OSw3ICsyNTMyLDcgQEAKICAgICAgICAgc3BsaXRfY29weS0+bWFfa2V5cyA9IG1wLT5tYV9rZXlzOwogICAgICAgICBzcGxpdF9jb3B5LT5tYV91c2VkID0gbXAtPm1hX3VzZWQ7CiAgICAgICAgIERLX0lOQ1JFRihtcC0+bWFfa2V5cyk7Ci0gICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwLCBuID0gc2l6ZTsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXTsKICAgICAgICAgICAgIFB5X1hJTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgc3BsaXRfY29weS0+bWFfdmFsdWVzW2ldID0gdmFsdWU7CkBAIC0yMjUwLDggKzI2MDMsOCBAQAogICAgICAgICAvKiBjYW4ndCBiZSBlcXVhbCBpZiAjIG9mIGVudHJpZXMgZGlmZmVyICovCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIFNhbWUgIyBvZiBlbnRyaWVzIC0tIGNoZWNrIGFsbCBvZiAnZW0uICBFeGl0IGVhcmx5IG9uIGFueSBkaWZmLiAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBES19TSVpFKGEtPm1hX2tleXMpOyBpKyspIHsKLSAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJmEtPm1hX2tleXMtPmRrX2VudHJpZXNbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGEtPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJkRLX0VOVFJJRVMoYS0+bWFfa2V5cylbaV07CiAgICAgICAgIFB5T2JqZWN0ICphdmFsOwogICAgICAgICBpZiAoYS0+bWFfdmFsdWVzKQogICAgICAgICAgICAgYXZhbCA9IGEtPm1hX3ZhbHVlc1tpXTsKQEAgLTIyNjgsNyArMjYyMSw3IEBACiAgICAgICAgICAgICAvKiBkaXR0byBmb3Iga2V5ICovCiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgIC8qIHJldXNlIHRoZSBrbm93biBoYXNoIHZhbHVlICovCi0gICAgICAgICAgICBpZiAoKGItPm1hX2tleXMtPmRrX2xvb2t1cCkoYiwga2V5LCBlcC0+bWVfaGFzaCwgJnZhZGRyKSA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKChiLT5tYV9rZXlzLT5ka19sb29rdXApKGIsIGtleSwgZXAtPm1lX2hhc2gsICZ2YWRkciwgTlVMTCkgPCAwKQogICAgICAgICAgICAgICAgIGJ2YWwgPSBOVUxMOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJ2YWwgPSAqdmFkZHI7CkBAIC0yMzI2LDcgKzI2NzksNyBAQAogewogICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAgPSBzZWxmOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMjMzNSwxMCArMjY4OCwxMiBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKCp2YWx1ZV9hZGRyICE9IE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICBQeV9SRVRVUk5fVFJVRTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIzNDgsNyArMjcwMyw3IEBACiAgICAgUHlPYmplY3QgKmZhaWxvYmogPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImdldCIsIDEsIDIsICZrZXksICZmYWlsb2JqKSkKQEAgLTIzNjAsMTIgKzI3MTUsMTMgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHZhbCA9PSBOVUxMKQorICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpCiAgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgZWxzZQorICAgICAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICBQeV9JTkNSRUYodmFsKTsKICAgICByZXR1cm4gdmFsOwogfQpAQCAtMjM3Niw2ICsyNzMyLDcgQEAKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCkBAIC0yMzg5LDI2ICsyNzQ2LDQwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWwgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAodmFsID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgICAgIHZhbCA9IGRlZmF1bHRvYmo7CiAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKICAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLwotICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOwogICAgICAgICB9CisgICAgICAgIGl4ID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdG9iaik7CiAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCBkZWZhdWx0b2JqKTsKKyAgICAgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBpeCk7CisgICAgICAgIGVwID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2l4XTsKICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwotICAgICAgICAqdmFsdWVfYWRkciA9IGRlZmF1bHRvYmo7Ci0gICAgICAgIHZhbCA9IGRlZmF1bHRvYmo7CisgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgICAgICBtcC0+bWFfdmFsdWVzW2l4XSA9IHZhbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVwLT5tZV92YWx1ZSA9IHZhbDsKKyAgICAgICAgfQogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcysrOwogICAgICAgICBtcC0+bWFfdXNlZCsrOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICB9CiAgICAgcmV0dXJuIHZhbDsKIH0KQEAgLTI0NDgsMTEgKzI4MTksMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3BvcGl0ZW0oUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICBQeV9oYXNoX3QgaSA9IDA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwLCAqZXA7CiAgICAgUHlPYmplY3QgKnJlczsKIAotCiAgICAgLyogQWxsb2NhdGUgdGhlIHJlc3VsdCB0dXBsZSBiZWZvcmUgY2hlY2tpbmcgdGhlIHNpemUuICBCZWxpZXZlIGl0CiAgICAgICogb3Igbm90LCB0aGlzIGFsbG9jYXRpb24gY291bGQgdHJpZ2dlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiB3aGljaAogICAgICAqIGNvdWxkIGVtcHR5IHRoZSBkaWN0LCBzbyBpZiB3ZSBjaGVja2VkIHRoZSBzaXplIGZpcnN0IGFuZCB0aGF0CkBAIC0yNDc5LDYxICsyODQ5LDU4IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgIC8qIFNldCBlcCB0byAidGhlIGZpcnN0IiBkaWN0IGVudHJ5IHdpdGggYSB2YWx1ZS4gIFdlIGFidXNlIHRoZSBoYXNoCi0gICAgICogZmllbGQgb2Ygc2xvdCAwIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyOgotICAgICAqIElmIHNsb3QgMCBoYXMgYSB2YWx1ZSwgdXNlIHNsb3QgMC4KLSAgICAgKiBFbHNlIHNsb3QgMCBpcyBiZWluZyB1c2VkIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyLAotICAgICAqIGFuZCB3ZSB1c2UgaXRzIGhhc2ggdmFsdWUgYXMgdGhlIGZpcnN0IGluZGV4IHRvIGxvb2suCi0gICAgICovCi0gICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgICAgICBpID0gZXAtPm1lX2hhc2g7Ci0gICAgICAgIC8qIFRoZSBoYXNoIGZpZWxkIG1heSBiZSBhIHJlYWwgaGFzaCB2YWx1ZSwgb3IgaXQgbWF5IGJlIGEKLSAgICAgICAgICogbGVnaXQgc2VhcmNoIGZpbmdlciwgb3IgaXQgbWF5IGJlIGEgb25jZS1sZWdpdCBzZWFyY2gKLSAgICAgICAgICogZmluZ2VyIHRoYXQncyBvdXQgb2YgYm91bmRzIG5vdyBiZWNhdXNlIGl0IHdyYXBwZWQgYXJvdW5kCi0gICAgICAgICAqIG9yIHRoZSB0YWJsZSBzaHJ1bmsgLS0gc2ltcGx5IG1ha2Ugc3VyZSBpdCdzIGluIGJvdW5kcyBub3cuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoaSA+IG1hc2sgfHwgaSA8IDEpCi0gICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0pLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgICAgICAgICAgaSA9IDE7Ci0gICAgICAgIH0KKworICAgIC8qIFBvcCBsYXN0IGl0ZW0gKi8KKyAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBpID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzIC0gMTsKKyAgICB3aGlsZSAoaSA+PSAwICYmIGVwMFtpXS5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIGktLTsKICAgICB9CisgICAgYXNzZXJ0KGkgPj0gMCk7CisKKyAgICBlcCA9ICZlcDBbaV07CisgICAgaiA9IGxvb2tkaWN0X2luZGV4KG1wLT5tYV9rZXlzLCBlcC0+bWVfaGFzaCwgaSk7CisgICAgYXNzZXJ0KGogPj0gMCk7CisgICAgYXNzZXJ0KGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaikgPT0gaSk7CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBqLCBES0lYX0RVTU1ZKTsKKwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzLCAwLCBlcC0+bWVfa2V5KTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgZXAtPm1lX3ZhbHVlKTsKLSAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKICAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgIC8qIFdlIGNhbid0IGRrX3VzYWJsZSsrIHNpbmNlIHRoZXJlIGlzIERLSVhfRFVNTVkgaW4gaW5kaWNlcyAqLworICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyA9IGk7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfaGFzaCA9IGkgKyAxOyAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbnQKIGRpY3RfdHJhdmVyc2UoUHlPYmplY3QgKm9wLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBpZiAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShtcC0+bWFfa2V5cyk7IGkrKykgewotICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbXAtPm1hX2tleXM7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBrZXlzLT5ka19uZW50cmllczsKKworICAgIGlmIChrZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0ubWVfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfa2V5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfdmFsdWVzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChlbnRyaWVzW2ldLm1lX3ZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI1NTIsMjMgKzI5MTksMzEgQEAKIFB5X3NzaXplX3QKIF9QeURpY3RfU2l6ZU9mKFB5RGljdE9iamVjdCAqbXApCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplLCByZXM7CisgICAgUHlfc3NpemVfdCBzaXplLCB1c2FibGUsIHJlczsKIAogICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICB1c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisKICAgICByZXMgPSBfUHlPYmplY3RfU0laRShQeV9UWVBFKG1wKSk7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpCi0gICAgICAgIHJlcyArPSBzaXplICogc2l6ZW9mKFB5T2JqZWN0Kik7CisgICAgICAgIHJlcyArPSB1c2FibGUgKiBzaXplb2YoUHlPYmplY3QqKTsKICAgICAvKiBJZiB0aGUgZGljdGlvbmFyeSBpcyBzcGxpdCwgdGhlIGtleXMgcG9ydGlvbiBpcyBhY2NvdW50ZWQtZm9yCiAgICAgICAgaW4gdGhlIHR5cGUgb2JqZWN0LiAqLwogICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfcmVmY250ID09IDEpCi0gICAgICAgIHJlcyArPSBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoc2l6ZS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgICAgIHJlcyArPSAoc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpCisgICAgICAgICAgICAgICAgLSBQeV9NRU1CRVJfU0laRShQeURpY3RLZXlzT2JqZWN0LCBka19pbmRpY2VzKQorICAgICAgICAgICAgICAgICsgREtfSVhTSVpFKG1wLT5tYV9rZXlzKSAqIHNpemUKKyAgICAgICAgICAgICAgICArIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOwogICAgIHJldHVybiByZXM7CiB9CiAKIFB5X3NzaXplX3QKIF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKIHsKLSAgICByZXR1cm4gc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsgKERLX1NJWkUoa2V5cyktMSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIHJldHVybiAoc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpCisgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICArIERLX0lYU0laRShrZXlzKSAqIERLX1NJWkUoa2V5cykKKyAgICAgICAgICAgICsgVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUoa2V5cykpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNjU1LDggKzMwMzAsOCBAQAogUHlEaWN0X0NvbnRhaW5zKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMjY2NSw4ICszMDQwLDEwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgcmV0dXJuIChlcCA9PSBOVUxMKSA/IC0xIDogKCp2YWx1ZV9hZGRyICE9IE5VTEwpOworICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiAoaXggIT0gREtJWF9FTVBUWSAmJiAqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfQ29udGFpbnMgdXNlZCB3aGVuIHRoZSBoYXNoIHZhbHVlIGlzIGFscmVhZHkga25vd24gKi8KQEAgLTI2NzQsMTEgKzMwNTEsMTMgQEAKIF9QeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgUHlfc3NpemVfdCBpeDsKIAotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBIYWNrIHRvIGltcGxlbWVudCAia2V5IGluIGRpY3QiICovCkBAIC0yNzEyLDExICszMDkxLDEzIEBACiAgICAgICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKGQpOwogCiAgICAgZC0+bWFfdXNlZCA9IDA7Ci0gICAgZC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCk7CisgICAgZC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGQtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkUpOwogICAgIGlmIChkLT5tYV9rZXlzID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShkKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTI5NDAsNyArMzMyMSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbiwgb2Zmc2V0OwogICAgIFB5RGljdEtleXNPYmplY3QgKms7CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CkBAIC0yOTY1LDE5ICszMzQ2LDE5IEBACiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZrLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOworICAgICAgICB2YWx1ZV9wdHIgPSAmREtfRU5UUklFUyhrKVtpXS5tZV92YWx1ZTsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKICAgICB9Ci0gICAgbWFzayA9IERLX1NJWkUoayktMTsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgIG4gPSBrLT5ka19uZW50cmllcyAtIDE7CisgICAgd2hpbGUgKGkgPD0gbiAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKICAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKICAgICAgICAgaSsrOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKKyAgICBpZiAoaSA+IG4pCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBkaS0+bGVuLS07Ci0gICAga2V5ID0gay0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CisgICAga2V5ID0gREtfRU5UUklFUyhrKVtpXS5tZV9rZXk7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgcmV0dXJuIGtleTsKIApAQCAtMzAyMyw3ICszNDA0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbiwgb2Zmc2V0OwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCkBAIC0zMDM5LDIxICszNDIwLDIxIEBACiAgICAgfQogCiAgICAgaSA9IGRpLT5kaV9wb3M7Ci0gICAgbWFzayA9IERLX1NJWkUoZC0+bWFfa2V5cyktMTsKLSAgICBpZiAoaSA8IDAgfHwgaSA+IG1hc2spCisgICAgbiA9IGQtPm1hX2tleXMtPmRrX25lbnRyaWVzIC0gMTsKKyAgICBpZiAoaSA8IDAgfHwgaSA+IG4pCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOworICAgICAgICB2YWx1ZV9wdHIgPSAmREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXS5tZV92YWx1ZTsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKICAgICB9Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICB3aGlsZSAoaSA8PSBuICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewogICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwogICAgICAgICBpKys7Ci0gICAgICAgIGlmIChpID4gbWFzaykKKyAgICAgICAgaWYgKGkgPiBuKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwpAQCAtMzEwNCw3ICszNDg1LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHRpdGVtKGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpyZXN1bHQgPSBkaS0+ZGlfcmVzdWx0OwotICAgIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbiwgb2Zmc2V0OwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCkBAIC0zMTIyLDIxICszNTAzLDIxIEBACiAgICAgaSA9IGRpLT5kaV9wb3M7CiAgICAgaWYgKGkgPCAwKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgbWFzayA9IERLX1NJWkUoZC0+bWFfa2V5cyktMTsKKyAgICBuID0gZC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMgLSAxOwogICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIHZhbHVlX3B0ciA9ICZES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldLm1lX3ZhbHVlOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwogICAgIH0KLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgIHdoaWxlIChpIDw9IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CiAgICAgICAgIGkrKzsKICAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCisgICAgaWYgKGkgPiBuKQogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICBpZiAocmVzdWx0LT5vYl9yZWZjbnQgPT0gMSkgewpAQCAtMzE0OSw3ICszNTMwLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBkaS0+bGVuLS07Ci0gICAga2V5ID0gZC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CisgICAga2V5ID0gREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXS5tZV9rZXk7CiAgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIFB5X0lOQ1JFRihrZXkpOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7CkBAIC0zNzg5LDcgKzQxNzAsNyBAQAogUHlEaWN0S2V5c09iamVjdCAqCiBfUHlEaWN0X05ld0tleXNGb3JDbGFzcyh2b2lkKQogewotICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkVfU1BMSVQpOworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkUpOwogICAgIGlmIChrZXlzID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMzgyNSw3ICs0MjA2LDcgQEAKIAogaW50CiBfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlUeXBlT2JqZWN0ICp0cCwgUHlPYmplY3QgKipkaWN0cHRyLAotICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKIHsKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBpbnQgcmVzOwpAQCAtMzg1NCw3ICs0MjM1LDggQEAKICAgICAgICAgICAgICAgICAvKiBFaXRoZXIgdXBkYXRlIHRwLT5odF9jYWNoZWRfa2V5cyBvciBkZWxldGUgaXQgKi8KICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkLT5ka19yZWZjbnQgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBDQUNIRURfS0VZUyh0cCkgPSBtYWtlX2tleXNfc2hhcmVkKGRpY3QpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBDQUNIRURfS0VZUyh0cCkgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBES19ERUNSRUYoY2FjaGVkKTsKQEAgLTM4ODQsNTAgKzQyNjYsMyBAQAogewogICAgIERLX0RFQ1JFRihrZXlzKTsKIH0KLQotCi0vKiBBUkdTVVNFRCAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWR1bW15X3JlcHIoUHlPYmplY3QgKm9wKQotewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiPGR1bW15IGtleT4iKTsKLX0KLQotLyogQVJHVVNFRCAqLwotc3RhdGljIHZvaWQKLWR1bW15X2RlYWxsb2MoUHlPYmplY3QqIGlnbm9yZSkKLXsKLSAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBnZXQgY2FsbGVkLCBidXQgd2UgYWxzbyBkb24ndCB3YW50IHRvIFNFR1YgaWYKLSAgICAgKiB3ZSBhY2NpZGVudGFsbHkgZGVjcmVmIGR1bW15LWtleSBvdXQgb2YgZXhpc3RlbmNlLgotICAgICAqLwotICAgIFB5X0ZhdGFsRXJyb3IoImRlYWxsb2NhdGluZyA8ZHVtbXkga2V5PiIpOwotfQotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGljdER1bW15X1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKLSAgICAiPGR1bW15IGtleT4gdHlwZSIsCi0gICAgMCwKLSAgICAwLAotICAgIGR1bW15X2RlYWxsb2MsICAgICAgLyp0cF9kZWFsbG9jKi8gLypuZXZlciBjYWxsZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIGR1bW15X3JlcHIsICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3N0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qdHBfZmxhZ3MgKi8KLX07Ci0KLXN0YXRpYyBQeU9iamVjdCBfZHVtbXlfc3RydWN0ID0gewotICBfUHlPYmplY3RfRVhUUkFfSU5JVAotICAyLCAmUHlEaWN0RHVtbXlfVHlwZQotfTsKLQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9lbnVtb2JqZWN0LmMgYi9PYmplY3RzL2VudW1vYmplY3QuYwppbmRleCBjNDU4Y2ZlLi5kYWUxNjZkIDEwMDY0NAotLS0gYS9PYmplY3RzL2VudW1vYmplY3QuYworKysgYi9PYmplY3RzL2VudW1vYmplY3QuYwpAQCAtMjUwLDYgKzI1MCwxMyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldmVyc2VkX21ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChzZXEsICZQeUlkX19fcmV2ZXJzZWRfXyk7CisgICAgaWYgKHJldmVyc2VkX21ldGggPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYocmV2ZXJzZWRfbWV0aCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCByZXZlcnNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VxKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAocmV2ZXJzZWRfbWV0aCAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHJldmVyc2VkX21ldGgsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYocmV2ZXJzZWRfbWV0aCk7CkBAIC0yNTksOCArMjY2LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHRvIHJldmVyc2VkKCkgbXVzdCBiZSBhIHNlcXVlbmNlIik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCByZXZlcnNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VxKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9leGNlcHRpb25zLmMgYi9PYmplY3RzL2V4Y2VwdGlvbnMuYwppbmRleCAwNzQ5ZTkwLi42ZmI1ZWI3IDEwMDY0NAotLS0gYS9PYmplY3RzL2V4Y2VwdGlvbnMuYworKysgYi9PYmplY3RzL2V4Y2VwdGlvbnMuYwpAQCAtNTksMTUgKzU5LDExIEBACiBzdGF0aWMgaW50CiBCYXNlRXhjZXB0aW9uX2luaXQoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwga3dkcykpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHRtcCA9IHNlbGYtPmFyZ3M7Ci0gICAgc2VsZi0+YXJncyA9IGFyZ3M7Ci0gICAgUHlfSU5DUkVGKHNlbGYtPmFyZ3MpOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgUHlfWFNFVFJFRihzZWxmLT5hcmdzLCBhcmdzKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMjM0LDcgKzIzMCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBQeV9YSU5DUkVGKHRiKTsKKyAgICBQeV9JTkNSRUYodGIpOwogICAgIFB5X1hTRVRSRUYoc2VsZi0+dHJhY2ViYWNrLCB0Yik7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zMjgsMTEgKzMyNCwxMCBAQAogCiAvKiBTdGVhbHMgYSByZWZlcmVuY2UgdG8gY2F1c2UgKi8KIHZvaWQKLVB5RXhjZXB0aW9uX1NldENhdXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY2F1c2UpIHsKLSAgICBQeU9iamVjdCAqb2xkX2NhdXNlID0gKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y2F1c2U7Ci0gICAgKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y2F1c2UgPSBjYXVzZTsKK1B5RXhjZXB0aW9uX1NldENhdXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY2F1c2UpCit7CiAgICAgKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+c3VwcHJlc3NfY29udGV4dCA9IDE7Ci0gICAgUHlfWERFQ1JFRihvbGRfY2F1c2UpOworICAgIFB5X1hTRVRSRUYoKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y2F1c2UsIGNhdXNlKTsKIH0KIAogUHlPYmplY3QgKgpAQCAtMzQ0LDEwICszMzksOSBAQAogCiAvKiBTdGVhbHMgYSByZWZlcmVuY2UgdG8gY29udGV4dCAqLwogdm9pZAotUHlFeGNlcHRpb25fU2V0Q29udGV4dChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNvbnRleHQpIHsKLSAgICBQeU9iamVjdCAqb2xkX2NvbnRleHQgPSAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jb250ZXh0OwotICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNvbnRleHQgPSBjb250ZXh0OwotICAgIFB5X1hERUNSRUYob2xkX2NvbnRleHQpOworUHlFeGNlcHRpb25fU2V0Q29udGV4dChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlfWFNFVFJFRigoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jb250ZXh0LCBjb250ZXh0KTsKIH0KIAogCkBAIC03MTIsNiArNzA2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlLiIpOwogCiAvKgorICogICAgTW9kdWxlTm90Rm91bmRFcnJvciBleHRlbmRzIEltcG9ydEVycm9yCisgKi8KKworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0ltcG9ydEVycm9yLCBNb2R1bGVOb3RGb3VuZEVycm9yLCBJbXBvcnRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIG5vdCBmb3VuZC4iKTsKKworLyoKICAqICAgIE9TRXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KICAqLwogCkBAIC05OTEsNyArOTkyLDcgQEAKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC0xMDcxLDggKzEwNzIsNyBAQAogICAgIH0KICAgICBpZiAoc2VsZi0+bXllcnJubyAmJiBzZWxmLT5zdHJlcnJvcikKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbRXJybm8gJVNdICVTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm15ZXJybm8gPyBzZWxmLT5teWVycm5vOiBQeV9Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5teWVycm5vLCBzZWxmLT5zdHJlcnJvcik7CiAgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fc3RyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKIH0KIApAQCAtMjQ3Niw2ICsyNDc2LDcgQEAKICAgICBQUkVfSU5JVChTeXN0ZW1FeGl0KQogICAgIFBSRV9JTklUKEtleWJvYXJkSW50ZXJydXB0KQogICAgIFBSRV9JTklUKEltcG9ydEVycm9yKQorICAgIFBSRV9JTklUKE1vZHVsZU5vdEZvdW5kRXJyb3IpCiAgICAgUFJFX0lOSVQoT1NFcnJvcikKICAgICBQUkVfSU5JVChFT0ZFcnJvcikKICAgICBQUkVfSU5JVChSdW50aW1lRXJyb3IpCkBAIC0yNTQ4LDYgKzI1NDksNyBAQAogICAgIFBPU1RfSU5JVChTeXN0ZW1FeGl0KQogICAgIFBPU1RfSU5JVChLZXlib2FyZEludGVycnVwdCkKICAgICBQT1NUX0lOSVQoSW1wb3J0RXJyb3IpCisgICAgUE9TVF9JTklUKE1vZHVsZU5vdEZvdW5kRXJyb3IpCiAgICAgUE9TVF9JTklUKE9TRXJyb3IpCiAgICAgSU5JVF9BTElBUyhFbnZpcm9ubWVudEVycm9yLCBPU0Vycm9yKQogICAgIElOSVRfQUxJQVMoSU9FcnJvciwgT1NFcnJvcikKQEAgLTI2MTAsNyArMjYxMiw5IEBACiAgICAgQUREX0VSUk5PKEJsb2NraW5nSU9FcnJvciwgRVdPVUxEQkxPQ0spOwogICAgIFBPU1RfSU5JVChCcm9rZW5QaXBlRXJyb3IpOwogICAgIEFERF9FUlJOTyhCcm9rZW5QaXBlRXJyb3IsIEVQSVBFKTsKKyNpZmRlZiBFU0hVVERPV04KICAgICBBRERfRVJSTk8oQnJva2VuUGlwZUVycm9yLCBFU0hVVERPV04pOworI2VuZGlmCiAgICAgUE9TVF9JTklUKENoaWxkUHJvY2Vzc0Vycm9yKTsKICAgICBBRERfRVJSTk8oQ2hpbGRQcm9jZXNzRXJyb3IsIEVDSElMRCk7CiAgICAgUE9TVF9JTklUKENvbm5lY3Rpb25BYm9ydGVkRXJyb3IpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9maWxlb2JqZWN0LmMgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwppbmRleCAyMzRkMDdlLi5mNDQyNDE4IDEwMDY0NAotLS0gYS9PYmplY3RzL2ZpbGVvYmplY3QuYworKysgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwpAQCAtMTI3LDcgKzEyNyw3IEBACiBpbnQKIFB5RmlsZV9Xcml0ZU9iamVjdChQeU9iamVjdCAqdiwgUHlPYmplY3QgKmYsIGludCBmbGFncykKIHsKLSAgICBQeU9iamVjdCAqd3JpdGVyLCAqdmFsdWUsICphcmdzLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp3cml0ZXIsICp2YWx1ZSwgKnJlc3VsdDsKICAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAKICAgICBpZiAoZiA9PSBOVUxMKSB7CkBAIC0xNDYsMTQgKzE0Niw3IEBACiAgICAgICAgIFB5X0RFQ1JFRih3cml0ZXIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfREVDUkVGKHdyaXRlcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3Qod3JpdGVyLCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKHdyaXRlciwgdmFsdWUpOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgUHlfREVDUkVGKHdyaXRlcik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCmluZGV4IGQ5MmJlYzMuLjBmMzc2MTggMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmxvYXRvYmplY3QuYworKysgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKQEAgLTEyNCwxMSArMTI0LDQzIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2Zsb2F0X2Zyb21fc3RyaW5nX2lubmVyKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuLCB2b2lkICpvYmopCit7CisgICAgZG91YmxlIHg7CisgICAgY29uc3QgY2hhciAqZW5kOworICAgIGNvbnN0IGNoYXIgKmxhc3QgPSBzICsgbGVuOworICAgIC8qIHN0cmlwIHNwYWNlICovCisgICAgd2hpbGUgKHMgPCBsYXN0ICYmIFB5X0lTU1BBQ0UoKnMpKSB7CisgICAgICAgIHMrKzsKKyAgICB9CisKKyAgICB3aGlsZSAocyA8IGxhc3QgLSAxICYmIFB5X0lTU1BBQ0UobGFzdFstMV0pKSB7CisgICAgICAgIGxhc3QtLTsKKyAgICB9CisKKyAgICAvKiBXZSBkb24ndCBjYXJlIGFib3V0IG92ZXJmbG93IG9yIHVuZGVyZmxvdy4gIElmIHRoZSBwbGF0Zm9ybQorICAgICAqIHN1cHBvcnRzIHRoZW0sIGluZmluaXRpZXMgYW5kIHNpZ25lZCB6ZXJvZXMgKG9uIHVuZGVyZmxvdykgYXJlCisgICAgICogZmluZS4gKi8KKyAgICB4ID0gUHlPU19zdHJpbmdfdG9fZG91YmxlKHMsIChjaGFyICoqKSZlbmQsIE5VTEwpOworICAgIGlmIChlbmQgIT0gbGFzdCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gZmxvYXQ6ICIKKyAgICAgICAgICAgICAgICAgICAgICIlUiIsIG9iaik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoeCk7CisgICAgfQorfQorCiBQeU9iamVjdCAqCiBQeUZsb2F0X0Zyb21TdHJpbmcoUHlPYmplY3QgKnYpCiB7Ci0gICAgY29uc3QgY2hhciAqcywgKmxhc3QsICplbmQ7Ci0gICAgZG91YmxlIHg7CisgICAgY29uc3QgY2hhciAqczsKICAgICBQeU9iamVjdCAqc19idWZmZXIgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5X2J1ZmZlciB2aWV3ID0ge05VTEwsIE5VTEx9OwpAQCAtMTY5LDI3ICsyMDEsOCBAQAogICAgICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBsYXN0ID0gcyArIGxlbjsKLSAgICAvKiBzdHJpcCBzcGFjZSAqLwotICAgIHdoaWxlIChzIDwgbGFzdCAmJiBQeV9JU1NQQUNFKCpzKSkKLSAgICAgICAgcysrOwotICAgIHdoaWxlIChzIDwgbGFzdCAtIDEgJiYgUHlfSVNTUEFDRShsYXN0Wy0xXSkpCi0gICAgICAgIGxhc3QtLTsKLSAgICAvKiBXZSBkb24ndCBjYXJlIGFib3V0IG92ZXJmbG93IG9yIHVuZGVyZmxvdy4gIElmIHRoZSBwbGF0Zm9ybQotICAgICAqIHN1cHBvcnRzIHRoZW0sIGluZmluaXRpZXMgYW5kIHNpZ25lZCB6ZXJvZXMgKG9uIHVuZGVyZmxvdykgYXJlCi0gICAgICogZmluZS4gKi8KLSAgICB4ID0gUHlPU19zdHJpbmdfdG9fZG91YmxlKHMsIChjaGFyICoqKSZlbmQsIE5VTEwpOwotICAgIGlmIChlbmQgIT0gbGFzdCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gZmxvYXQ6ICIKLSAgICAgICAgICAgICAgICAgICAgICIlUiIsIHYpOwotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIH0KLSAgICBlbHNlIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZSh4KTsKLQorICAgIHJlc3VsdCA9IF9QeV9zdHJpbmdfdG9fbnVtYmVyX3dpdGhfdW5kZXJzY29yZXMocywgbGVuLCAiZmxvYXQiLCB2LCB2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRfZnJvbV9zdHJpbmdfaW5uZXIpOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMTUsMzUgKzIyOCw0OSBAQAogUHlGbG9hdF9Bc0RvdWJsZShQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICpuYjsKLSAgICBQeUZsb2F0T2JqZWN0ICpmbzsKKyAgICBQeU9iamVjdCAqcmVzOwogICAgIGRvdWJsZSB2YWw7CiAKLSAgICBpZiAob3AgJiYgUHlGbG9hdF9DaGVjayhvcCkpCi0gICAgICAgIHJldHVybiBQeUZsb2F0X0FTX0RPVUJMRSgoUHlGbG9hdE9iamVjdCopIG9wKTsKLQogICAgIGlmIChvcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAoKG5iID0gUHlfVFlQRShvcCktPnRwX2FzX251bWJlcikgPT0gTlVMTCB8fCBuYi0+bmJfZmxvYXQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYSBmbG9hdCBpcyByZXF1aXJlZCIpOworICAgIGlmIChQeUZsb2F0X0NoZWNrKG9wKSkgeworICAgICAgICByZXR1cm4gUHlGbG9hdF9BU19ET1VCTEUob3ApOworICAgIH0KKworICAgIG5iID0gUHlfVFlQRShvcCktPnRwX2FzX251bWJlcjsKKyAgICBpZiAobmIgPT0gTlVMTCB8fCBuYi0+bmJfZmxvYXQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAibXVzdCBiZSByZWFsIG51bWJlciwgbm90ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgIG9wLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGZvID0gKFB5RmxvYXRPYmplY3QqKSAoKm5iLT5uYl9mbG9hdCkgKG9wKTsKLSAgICBpZiAoZm8gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICghUHlGbG9hdF9DaGVjayhmbykpIHsKLSAgICAgICAgUHlfREVDUkVGKGZvKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJuYl9mbG9hdCBzaG91bGQgcmV0dXJuIGZsb2F0IG9iamVjdCIpOworICAgIHJlcyA9ICgqbmItPm5iX2Zsb2F0KSAob3ApOworICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmICghUHlGbG9hdF9DaGVja0V4YWN0KHJlcykpIHsKKyAgICAgICAgaWYgKCFQeUZsb2F0X0NoZWNrKHJlcykpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAiJS41MHMuX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjUwcykuICAiCisgICAgICAgICAgICAgICAgIlRoZSBhYmlsaXR5IHRvIHJldHVybiBhbiBpbnN0YW5jZSBvZiBhIHN0cmljdCBzdWJjbGFzcyBvZiBmbG9hdCAiCisgICAgICAgICAgICAgICAgImlzIGRlcHJlY2F0ZWQsIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbi4iLAorICAgICAgICAgICAgICAgIG9wLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KIAotICAgIHZhbCA9IFB5RmxvYXRfQVNfRE9VQkxFKGZvKTsKLSAgICBQeV9ERUNSRUYoZm8pOwotCisgICAgdmFsID0gUHlGbG9hdF9BU19ET1VCTEUocmVzKTsKKyAgICBQeV9ERUNSRUYocmVzKTsKICAgICByZXR1cm4gdmFsOwogfQogCkBAIC0xMTk1LDcgKzEyMjIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZsb2F0X2Zyb21oZXgoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0X2FzX2Zsb2F0LCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgZG91YmxlIHg7CiAgICAgbG9uZyBleHAsIHRvcF9leHAsIGxzYiwga2V5X2RpZ2l0OwogICAgIGNoYXIgKnMsICpjb2VmZl9zdGFydCwgKnNfc3RvcmUsICpjb2VmZl9lbmQsICpleHBfc3RhcnQsICpzX2VuZDsKQEAgLTE0MTAsMTEgKzE0MzcsMTAgQEAKICAgICAgICAgcysrOwogICAgIGlmIChzICE9IHNfZW5kKQogICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgIHJlc3VsdF9hc19mbG9hdCA9IFB5X0J1aWxkVmFsdWUoIihkKSIsIG5lZ2F0ZSA/IC14IDogeCk7Ci0gICAgaWYgKHJlc3VsdF9hc19mbG9hdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGNscywgcmVzdWx0X2FzX2Zsb2F0KTsKLSAgICBQeV9ERUNSRUYocmVzdWx0X2FzX2Zsb2F0KTsKKyAgICByZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUobmVnYXRlID8gLXggOiB4KTsKKyAgICBpZiAoY2xzICE9IChQeU9iamVjdCAqKSZQeUZsb2F0X1R5cGUgJiYgcmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhjbHMsIHJlc3VsdCwgTlVMTCkpOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogCiAgIG92ZXJmbG93X2Vycm9yOgpAQCAtMTQ1MSwyOSArMTQ3NywyMyBAQAogICAgIGludCBleHBvbmVudDsKICAgICBpbnQgaTsKIAotICAgIFB5T2JqZWN0ICpwcmV2OwogICAgIFB5T2JqZWN0ICpweV9leHBvbmVudCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm51bWVyYXRvciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRlbm9taW5hdG9yID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0X3BhaXIgPSBOVUxMOwogICAgIFB5TnVtYmVyTWV0aG9kcyAqbG9uZ19tZXRob2RzID0gUHlMb25nX1R5cGUudHBfYXNfbnVtYmVyOwogCi0jZGVmaW5lIElOUExBQ0VfVVBEQVRFKG9iaiwgY2FsbCkgXAotICAgIHByZXYgPSBvYmo7IFwKLSAgICBvYmogPSBjYWxsOyBcCi0gICAgUHlfREVDUkVGKHByZXYpOyBcCi0KICAgICBDT05WRVJUX1RPX0RPVUJMRSh2LCBzZWxmKTsKIAogICAgIGlmIChQeV9JU19JTkZJTklUWShzZWxmKSkgewotICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBwYXNzIGluZmluaXR5IHRvIGZsb2F0LmFzX2ludGVnZXJfcmF0aW8uIik7Ci0gICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5X0lTX05BTihzZWxmKSkgewotICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBwYXNzIE5hTiB0byBmbG9hdC5hc19pbnRlZ2VyX3JhdGlvLiIpOwotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImFzX2ludGVnZXJfcmF0aW8iLCBnb3RvIGVycm9yKTsKQEAgLTE0ODksMjkgKzE1MDksMzEgQEAKICAgICAgICB0byBiZSB0cnVuY2F0ZWQgYnkgUHlMb25nX0Zyb21Eb3VibGUoKS4gKi8KIAogICAgIG51bWVyYXRvciA9IFB5TG9uZ19Gcm9tRG91YmxlKGZsb2F0X3BhcnQpOwotICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkgZ290byBlcnJvcjsKKyAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgZGVub21pbmF0b3IgPSBQeUxvbmdfRnJvbUxvbmcoMSk7CisgICAgaWYgKGRlbm9taW5hdG9yID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcHlfZXhwb25lbnQgPSBQeUxvbmdfRnJvbUxvbmcoUHlfQUJTKGV4cG9uZW50KSk7CisgICAgaWYgKHB5X2V4cG9uZW50ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBmb2xkIGluIDIqKmV4cG9uZW50ICovCi0gICAgZGVub21pbmF0b3IgPSBQeUxvbmdfRnJvbUxvbmcoMSk7Ci0gICAgcHlfZXhwb25lbnQgPSBQeUxvbmdfRnJvbUxvbmcobGFicygobG9uZylleHBvbmVudCkpOwotICAgIGlmIChweV9leHBvbmVudCA9PSBOVUxMKSBnb3RvIGVycm9yOwotICAgIElOUExBQ0VfVVBEQVRFKHB5X2V4cG9uZW50LAotICAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbHNoaWZ0KGRlbm9taW5hdG9yLCBweV9leHBvbmVudCkpOwotICAgIGlmIChweV9leHBvbmVudCA9PSBOVUxMKSBnb3RvIGVycm9yOwogICAgIGlmIChleHBvbmVudCA+IDApIHsKLSAgICAgICAgSU5QTEFDRV9VUERBVEUobnVtZXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICBsb25nX21ldGhvZHMtPm5iX211bHRpcGx5KG51bWVyYXRvciwgcHlfZXhwb25lbnQpKTsKLSAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSBnb3RvIGVycm9yOworICAgICAgICBQeV9TRVRSRUYobnVtZXJhdG9yLAorICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9sc2hpZnQobnVtZXJhdG9yLCBweV9leHBvbmVudCkpOworICAgICAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlfREVDUkVGKGRlbm9taW5hdG9yKTsKLSAgICAgICAgZGVub21pbmF0b3IgPSBweV9leHBvbmVudDsKLSAgICAgICAgcHlfZXhwb25lbnQgPSBOVUxMOworICAgICAgICBQeV9TRVRSRUYoZGVub21pbmF0b3IsCisgICAgICAgICAgICAgICAgICBsb25nX21ldGhvZHMtPm5iX2xzaGlmdChkZW5vbWluYXRvciwgcHlfZXhwb25lbnQpKTsKKyAgICAgICAgaWYgKGRlbm9taW5hdG9yID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIHJlc3VsdF9wYWlyID0gUHlUdXBsZV9QYWNrKDIsIG51bWVyYXRvciwgZGVub21pbmF0b3IpOwogCi0jdW5kZWYgSU5QTEFDRV9VUERBVEUKIGVycm9yOgogICAgIFB5X1hERUNSRUYocHlfZXhwb25lbnQpOwogICAgIFB5X1hERUNSRUYoZGVub21pbmF0b3IpOwpAQCAtMTk2Niw4ICsxOTg4LDEyMCBAQAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogX1B5RmxvYXRfe1BhY2ssVW5wYWNrfXs0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCisgKiBfUHlGbG9hdF97UGFjayxVbnBhY2t9ezIsNCw4fS4gIFNlZSBmbG9hdG9iamVjdC5oLgorICogVG8gbWF0Y2ggdGhlIE5QWV9IQUxGX1JPVU5EX1RJRVNfVE9fRVZFTiBiZWhhdmlvciBpbjoKKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9ibG9iL21hc3Rlci9udW1weS9jb3JlL3NyYy9ucHltYXRoL2hhbGZmbG9hdC5jCisgKiBXZSB1c2U6CisgKiAgICAgICBiaXRzID0gKHVuc2lnbmVkIHNob3J0KWY7ICAgIE5vdGUgdGhlIHRydW5jYXRpb24KKyAqICAgICAgIGlmICgoZiAtIGJpdHMgPiAwLjUpIHx8IChmIC0gYml0cyA9PSAwLjUgJiYgYml0cyAlIDIpKSB7CisgKiAgICAgICAgICAgYml0cysrOworICogICAgICAgfQogICovCisKK2ludAorX1B5RmxvYXRfUGFjazIoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHNpZ247CisgICAgaW50IGU7CisgICAgZG91YmxlIGY7CisgICAgdW5zaWduZWQgc2hvcnQgYml0czsKKyAgICBpbnQgaW5jciA9IDE7CisKKyAgICBpZiAoeCA9PSAwLjApIHsKKyAgICAgICAgc2lnbiA9IChjb3B5c2lnbigxLjAsIHgpID09IC0xLjApOworICAgICAgICBlID0gMDsKKyAgICAgICAgYml0cyA9IDA7CisgICAgfQorICAgIGVsc2UgaWYgKFB5X0lTX0lORklOSVRZKHgpKSB7CisgICAgICAgIHNpZ24gPSAoeCA8IDAuMCk7CisgICAgICAgIGUgPSAweDFmOworICAgICAgICBiaXRzID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfSVNfTkFOKHgpKSB7CisgICAgICAgIC8qIFRoZXJlIGFyZSAyMDQ2IGRpc3RpbmN0IGhhbGYtcHJlY2lzaW9uIE5hTnMgKDEwMjIgc2lnbmFsaW5nIGFuZAorICAgICAgICAgICAxMDI0IHF1aWV0KSwgYnV0IHRoZXJlIGFyZSBvbmx5IHR3byBxdWlldCBOYU5zIHRoYXQgZG9uJ3QgYXJpc2UgYnkKKyAgICAgICAgICAgcXVpZXRpbmcgYSBzaWduYWxpbmcgTmFOOyB3ZSBnZXQgdGhvc2UgYnkgc2V0dGluZyB0aGUgdG9wbW9zdCBiaXQKKyAgICAgICAgICAgb2YgdGhlIGZyYWN0aW9uIGZpZWxkIGFuZCBjbGVhcmluZyBhbGwgb3RoZXIgZnJhY3Rpb24gYml0cy4gV2UKKyAgICAgICAgICAgY2hvb3NlIHRoZSBvbmUgd2l0aCB0aGUgYXBwcm9wcmlhdGUgc2lnbi4gKi8KKyAgICAgICAgc2lnbiA9IChjb3B5c2lnbigxLjAsIHgpID09IC0xLjApOworICAgICAgICBlID0gMHgxZjsKKyAgICAgICAgYml0cyA9IDUxMjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNpZ24gPSAoeCA8IDAuMCk7CisgICAgICAgIGlmIChzaWduKSB7CisgICAgICAgICAgICB4ID0gLXg7CisgICAgICAgIH0KKworICAgICAgICBmID0gZnJleHAoeCwgJmUpOworICAgICAgICBpZiAoZiA8IDAuNSB8fCBmID49IDEuMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmV4cCgpIHJlc3VsdCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIE5vcm1hbGl6ZSBmIHRvIGJlIGluIHRoZSByYW5nZSBbMS4wLCAyLjApICovCisgICAgICAgIGYgKj0gMi4wOworICAgICAgICBlLS07CisKKyAgICAgICAgaWYgKGUgPj0gMTYpIHsKKyAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZSA8IC0yNSkgeworICAgICAgICAgICAgLyogfHh8IDwgMioqLTI1LiBVbmRlcmZsb3cgdG8gemVyby4gKi8KKyAgICAgICAgICAgIGYgPSAwLjA7CisgICAgICAgICAgICBlID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlIDwgLTE0KSB7CisgICAgICAgICAgICAvKiB8eHwgPCAyKiotMTQuIEdyYWR1YWwgdW5kZXJmbG93ICovCisgICAgICAgICAgICBmID0gbGRleHAoZiwgMTQgKyBlKTsKKyAgICAgICAgICAgIGUgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogaWYgKCEoZSA9PSAwICYmIGYgPT0gMC4wKSkgKi8geworICAgICAgICAgICAgZSArPSAxNTsKKyAgICAgICAgICAgIGYgLT0gMS4wOyAvKiBHZXQgcmlkIG9mIGxlYWRpbmcgMSAqLworICAgICAgICB9CisKKyAgICAgICAgZiAqPSAxMDI0LjA7IC8qIDIqKjEwICovCisgICAgICAgIC8qIFJvdW5kIHRvIGV2ZW4gKi8KKyAgICAgICAgYml0cyA9ICh1bnNpZ25lZCBzaG9ydClmOyAvKiBOb3RlIHRoZSB0cnVuY2F0aW9uICovCisgICAgICAgIGFzc2VydChiaXRzIDwgMTAyNCk7CisgICAgICAgIGFzc2VydChlIDwgMzEpOworICAgICAgICBpZiAoKGYgLSBiaXRzID4gMC41KSB8fCAoKGYgLSBiaXRzID09IDAuNSkgJiYgKGJpdHMgJSAyID09IDEpKSkgeworICAgICAgICAgICAgKytiaXRzOworICAgICAgICAgICAgaWYgKGJpdHMgPT0gMTAyNCkgeworICAgICAgICAgICAgICAgIC8qIFRoZSBjYXJyeSBwcm9wYWdhdGVkIG91dCBvZiBhIHN0cmluZyBvZiAxMCAxIGJpdHMuICovCisgICAgICAgICAgICAgICAgYml0cyA9IDA7CisgICAgICAgICAgICAgICAgKytlOworICAgICAgICAgICAgICAgIGlmIChlID09IDMxKQorICAgICAgICAgICAgICAgICAgICBnb3RvIE92ZXJmbG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYml0cyB8PSAoZSA8PCAxMCkgfCAoc2lnbiA8PCAxNSk7CisKKyAgICAvKiBXcml0ZSBvdXQgcmVzdWx0LiAqLworICAgIGlmIChsZSkgeworICAgICAgICBwICs9IDE7CisgICAgICAgIGluY3IgPSAtMTsKKyAgICB9CisKKyAgICAvKiBGaXJzdCBieXRlICovCisgICAgKnAgPSAodW5zaWduZWQgY2hhcikoKGJpdHMgPj4gOCkgJiAweEZGKTsKKyAgICBwICs9IGluY3I7CisKKyAgICAvKiBTZWNvbmQgYnl0ZSAqLworICAgICpwID0gKHVuc2lnbmVkIGNoYXIpKGJpdHMgJiAweEZGKTsKKworICAgIHJldHVybiAwOworCisgIE92ZXJmbG93OgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAiZmxvYXQgdG9vIGxhcmdlIHRvIHBhY2sgd2l0aCBlIGZvcm1hdCIpOworICAgIHJldHVybiAtMTsKK30KKwogaW50CiBfUHlGbG9hdF9QYWNrNChkb3VibGUgeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQogewpAQCAtMjIwMyw2ICsyMzM3LDc2IEBACiB9CiAKIGRvdWJsZQorX1B5RmxvYXRfVW5wYWNrMihjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCit7CisgICAgdW5zaWduZWQgY2hhciBzaWduOworICAgIGludCBlOworICAgIHVuc2lnbmVkIGludCBmOworICAgIGRvdWJsZSB4OworICAgIGludCBpbmNyID0gMTsKKworICAgIGlmIChsZSkgeworICAgICAgICBwICs9IDE7CisgICAgICAgIGluY3IgPSAtMTsKKyAgICB9CisKKyAgICAvKiBGaXJzdCBieXRlICovCisgICAgc2lnbiA9ICgqcCA+PiA3KSAmIDE7CisgICAgZSA9ICgqcCAmIDB4N0MpID4+IDI7CisgICAgZiA9ICgqcCAmIDB4MDMpIDw8IDg7CisgICAgcCArPSBpbmNyOworCisgICAgLyogU2Vjb25kIGJ5dGUgKi8KKyAgICBmIHw9ICpwOworCisgICAgaWYgKGUgPT0gMHgxZikgeworI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICAgICAgaWYgKGYgPT0gMCkgeworICAgICAgICAgICAgLyogSW5maW5pdHkgKi8KKyAgICAgICAgICAgIHJldHVybiBzaWduID8gLVB5X0hVR0VfVkFMIDogUHlfSFVHRV9WQUw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBOYU4gKi8KKyNpZmRlZiBQeV9OQU4KKyAgICAgICAgICAgIHJldHVybiBzaWduID8gLVB5X05BTiA6IFB5X05BTjsKKyNlbHNlCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2FuJ3QgdW5wYWNrIElFRUUgNzU0IE5hTiAiCisgICAgICAgICAgICAgICAgIm9uIHBsYXRmb3JtIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBOYU5zIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisjZW5kaWYgIC8qICNpZmRlZiBQeV9OQU4gKi8KKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgaWYgKGYgPT0gMCkgeworICAgICAgICAgICAgLyogSW5maW5pdHkgKi8KKyAgICAgICAgICAgIHJldHVybiBfUHlfZGdfaW5maW5pdHkoc2lnbik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBOYU4gKi8KKyAgICAgICAgICAgIHJldHVybiBfUHlfZGdfc3RkbmFuKHNpZ24pOworICAgICAgICB9CisjZW5kaWYgIC8qICNpZmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSICovCisgICAgfQorCisgICAgeCA9IChkb3VibGUpZiAvIDEwMjQuMDsKKworICAgIGlmIChlID09IDApIHsKKyAgICAgICAgZSA9IC0xNDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHggKz0gMS4wOworICAgICAgICBlIC09IDE1OworICAgIH0KKyAgICB4ID0gbGRleHAoeCwgZSk7CisKKyAgICBpZiAoc2lnbikKKyAgICAgICAgeCA9IC14OworCisgICAgcmV0dXJuIHg7Cit9CisKK2RvdWJsZQogX1B5RmxvYXRfVW5wYWNrNChjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCiB7CiAgICAgaWYgKGZsb2F0X2Zvcm1hdCA9PSB1bmtub3duX2Zvcm1hdCkgewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCmluZGV4IDlhYWRkNjEuLjYyZjlmMzQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnJhbWVvYmplY3QuYworKysgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKQEAgLTEzNyw3ICsxMzcsNyBAQAogICAgICAgICBuZXdfbGFzdGkgPSAtMTsKICAgICAgICAgZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgPCBsbm90YWJfbGVuOyBvZmZzZXQgKz0gMikgewogICAgICAgICAgICAgYWRkciArPSBsbm90YWJbb2Zmc2V0XTsKLSAgICAgICAgICAgIGxpbmUgKz0gbG5vdGFiW29mZnNldCsxXTsKKyAgICAgICAgICAgIGxpbmUgKz0gKHNpZ25lZCBjaGFyKWxub3RhYltvZmZzZXQrMV07CiAgICAgICAgICAgICBpZiAobGluZSA+PSBuZXdfbGluZW5vKSB7CiAgICAgICAgICAgICAgICAgbmV3X2xhc3RpID0gYWRkcjsKICAgICAgICAgICAgICAgICBuZXdfbGluZW5vID0gbGluZTsKQEAgLTE4OSw3ICsxODksNyBAQAogICAgIG1lbXNldChibG9ja3N0YWNrLCAnXDAnLCBzaXplb2YoYmxvY2tzdGFjaykpOwogICAgIG1lbXNldChpbl9maW5hbGx5LCAnXDAnLCBzaXplb2YoaW5fZmluYWxseSkpOwogICAgIGJsb2Nrc3RhY2tfdG9wID0gMDsKLSAgICBmb3IgKGFkZHIgPSAwOyBhZGRyIDwgY29kZV9sZW47IGFkZHIrKykgeworICAgIGZvciAoYWRkciA9IDA7IGFkZHIgPCBjb2RlX2xlbjsgYWRkciArPSBzaXplb2YoX1B5X0NPREVVTklUKSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIG9wID0gY29kZVthZGRyXTsKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFNFVFVQX0xPT1A6CkBAIC0yNTEsMTAgKzI1MSw2IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG9wID49IEhBVkVfQVJHVU1FTlQpIHsKLSAgICAgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIC8qIFZlcmlmeSB0aGF0IHRoZSBibG9ja3N0YWNrIHRyYWNraW5nIGNvZGUgZGlkbid0IGdldCBsb3N0LiAqLwpAQCAtMjc3LDcgKzI3Myw3IEBACiAgICAgICogY2FuIHRlbGwgd2hldGhlciB0aGUganVtcCBnb2VzIGludG8gYW55IGJsb2NrcyB3aXRob3V0IGNvbWluZyBvdXQKICAgICAgKiBhZ2FpbiAtIGluIHRoYXQgY2FzZSB3ZSByYWlzZSBhbiBleGNlcHRpb24gYmVsb3cuICovCiAgICAgZGVsdGFfaWJsb2NrID0gMDsKLSAgICBmb3IgKGFkZHIgPSBtaW5fYWRkcjsgYWRkciA8IG1heF9hZGRyOyBhZGRyKyspIHsKKyAgICBmb3IgKGFkZHIgPSBtaW5fYWRkcjsgYWRkciA8IG1heF9hZGRyOyBhZGRyICs9IHNpemVvZihfUHlfQ09ERVVOSVQpKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgb3AgPSBjb2RlW2FkZHJdOwogICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgU0VUVVBfTE9PUDoKQEAgLTI5NCwxMCArMjkwLDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIG1pbl9kZWx0YV9pYmxvY2sgPSBQeV9NSU4obWluX2RlbHRhX2libG9jaywgZGVsdGFfaWJsb2NrKTsKLQotICAgICAgICBpZiAob3AgPj0gSEFWRV9BUkdVTUVOVCkgewotICAgICAgICAgICAgYWRkciArPSAyOwotICAgICAgICB9CiAgICAgfQogCiAgICAgLyogRGVyaXZlIHRoZSBhYnNvbHV0ZSBpYmxvY2sgdmFsdWVzIGZyb20gdGhlIGRlbHRhcy4gKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvZnVuY29iamVjdC5jIGIvT2JqZWN0cy9mdW5jb2JqZWN0LmMKaW5kZXggNGNkNjU5MC4uNjljZDk3MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mdW5jb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mdW5jb2JqZWN0LmMKQEAgLTI0OSw3ICsyNDksNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfY29kZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7CiAgICAgUHlfc3NpemVfdCBuZnJlZSwgbmNsb3N1cmU7CiAKICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuZnVuY19jb2RlIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwpAQCAtMjcwLDEwICsyNjksOCBAQAogICAgICAgICAgICAgICAgICAgICAgbmNsb3N1cmUsIG5mcmVlKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19jb2RlOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfY29kZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfY29kZSwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yODcsOCArMjg0LDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X25hbWUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLmZ1bmNfbmFtZSBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKICAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewpAQCAtMjk2LDEwICsyOTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX25hbWU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19uYW1lID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19uYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTMxMyw4ICszMDYsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfcXVhbG5hbWUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLl9fcXVhbG5hbWVfXyBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKICAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewpAQCAtMzIyLDEwICszMTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19xdWFsbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19xdWFsbmFtZSwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNDMsOCArMzMyLDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2RlZmF1bHRzKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIC8qIExlZ2FsIHRvIGRlbCBmLmZ1bmNfZGVmYXVsdHMuCiAgICAgICogQ2FuIG9ubHkgc2V0IGZ1bmNfZGVmYXVsdHMgdG8gTlVMTCBvciBhIHR1cGxlLiAqLwogICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQpAQCAtMzU0LDEwICszNDEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fZGVmYXVsdHNfXyBtdXN0IGJlIHNldCB0byBhIHR1cGxlIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2RlZmF1bHRzOwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX2RlZmF1bHRzID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfZGVmYXVsdHMsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzc1LDggKzM2MCw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9rd2RlZmF1bHRzKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQogICAgICAgICB2YWx1ZSA9IE5VTEw7CiAgICAgLyogTGVnYWwgdG8gZGVsIGYuZnVuY19rd2RlZmF1bHRzLgpAQCAtMzg2LDEwICszNjksOCBAQAogICAgICAgICAgICAgIl9fa3dkZWZhdWx0c19fIG11c3QgYmUgc2V0IHRvIGEgZGljdCBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19rd2RlZmF1bHRzOwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX2t3ZGVmYXVsdHMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19rd2RlZmF1bHRzLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTQwOCw4ICszODksNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfYW5ub3RhdGlvbnMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCiAgICAgICAgIHZhbHVlID0gTlVMTDsKICAgICAvKiBMZWdhbCB0byBkZWwgZi5mdW5jX2Fubm90YXRpb25zLgpAQCAtNDIwLDEwICszOTksOCBAQAogICAgICAgICAgICAgIl9fYW5ub3RhdGlvbnNfXyBtdXN0IGJlIHNldCB0byBhIGRpY3Qgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfYW5ub3RhdGlvbnM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfYW5ub3RhdGlvbnMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19hbm5vdGF0aW9ucywgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2dlbm9iamVjdC5jIGIvT2JqZWN0cy9nZW5vYmplY3QuYwppbmRleCA5MTcyZTZhLi43YTFlOWZkIDEwMDY0NAotLS0gYS9PYmplY3RzL2dlbm9iamVjdC5jCisrKyBiL09iamVjdHMvZ2Vub2JqZWN0LmMKQEAgLTUsNyArNSwxNSBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgogCi1zdGF0aWMgUHlPYmplY3QgKmdlbl9jbG9zZShQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncyk7CitzdGF0aWMgUHlPYmplY3QgKmdlbl9jbG9zZShQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNfZ2VuX2FzZW5kX25ldyhQeUFzeW5jR2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICphc3luY19nZW5fYXRocm93X25ldyhQeUFzeW5jR2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOworCitzdGF0aWMgY2hhciAqTk9OX0lOSVRfQ09ST19NU0cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgY29yb3V0aW5lIjsKKworc3RhdGljIGNoYXIgKkFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3luYyBnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0IjsKIAogc3RhdGljIGludAogZ2VuX3RyYXZlcnNlKFB5R2VuT2JqZWN0ICpnZW4sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQpAQCAtMjgsNiArMzYsMjYgQEAKICAgICAgICAgLyogR2VuZXJhdG9yIGlzbid0IHBhdXNlZCwgc28gbm8gbmVlZCB0byBjbG9zZSAqLwogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KHNlbGYpKSB7CisgICAgICAgIFB5QXN5bmNHZW5PYmplY3QgKmFnZW4gPSAoUHlBc3luY0dlbk9iamVjdCopc2VsZjsKKyAgICAgICAgUHlPYmplY3QgKmZpbmFsaXplciA9IGFnZW4tPmFnX2ZpbmFsaXplcjsKKyAgICAgICAgaWYgKGZpbmFsaXplciAmJiAhYWdlbi0+YWdfY2xvc2VkKSB7CisgICAgICAgICAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZmluYWxpemVyLCBzZWxmLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHNlbGYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLwogICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOwogCkBAIC03NCw2ICsxMDIsMTIgQEAKICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgIC8qIHJlc3VycmVjdGVkLiAgOiggKi8KIAogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAvKiBXZSBoYXZlIHRvIGhhbmRsZSB0aGlzIGNhc2UgZm9yIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzCisgICAgICAgICAgIHJpZ2h0IGhlcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGhhcyB0byBiZSBiZXR3ZWVuIFVOVFJBQ0sKKyAgICAgICAgICAgYW5kIEdDX0RlbC4gKi8KKyAgICAgICAgUHlfQ0xFQVIoKChQeUFzeW5jR2VuT2JqZWN0KilnZW4pLT5hZ19maW5hbGl6ZXIpOworICAgIH0KICAgICBpZiAoZ2VuLT5naV9mcmFtZSAhPSBOVUxMKSB7CiAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfZ2VuID0gTlVMTDsKICAgICAgICAgUHlfQ0xFQVIoZ2VuLT5naV9mcmFtZSk7CkBAIC04NCw2ICsxMTgsMzMgQEAKICAgICBQeU9iamVjdF9HQ19EZWwoZ2VuKTsKIH0KIAorc3RhdGljIHZvaWQKK2dlbl9jaGFpbl9ydW50aW1lX2Vycm9yKGNvbnN0IGNoYXIgKm1zZykKK3sKKyAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOworCisgICAgLyogVE9ETzogVGhpcyBhYm91dCByZXdyaXRpbmcgdXNpbmcgX1B5RXJyX0NoYWluRXhjZXB0aW9ucy4gKi8KKworICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwsICZ0Yik7CisgICAgaWYgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOworICAgIH0KKworICAgIFB5X0RFQ1JFRihleGMpOworICAgIFB5X1hERUNSRUYodGIpOworCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbXNnKTsKKyAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKKyAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7CisKKyAgICBQeV9JTkNSRUYodmFsKTsKKyAgICBQeUV4Y2VwdGlvbl9TZXRDYXVzZSh2YWwyLCB2YWwpOworICAgIFB5RXhjZXB0aW9uX1NldENvbnRleHQodmFsMiwgdmFsKTsKKworICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5fc2VuZF9leChQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJnLCBpbnQgZXhjLCBpbnQgY2xvc2luZykKIHsKQEAgLTkzLDggKzE1NCwxMiBAQAogCiAgICAgaWYgKGdlbi0+Z2lfcnVubmluZykgewogICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIjsKLSAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIGFscmVhZHkgZXhlY3V0aW5nIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgbXNnID0gImFzeW5jIGdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyI7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIG1zZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNiwxMCArMTcxLDE2IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICJjYW5ub3QgcmV1c2UgYWxyZWFkeSBhd2FpdGVkIGNvcm91dGluZSIpOwotICAgICAgICB9IGVsc2UgaWYgKGFyZyAmJiAhZXhjKSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYXJnICYmICFleGMpIHsKICAgICAgICAgICAgIC8qIGBnZW5gIGlzIGFuIGV4aGF1c3RlZCBnZW5lcmF0b3I6CiAgICAgICAgICAgICAgICBvbmx5IHNldCBleGNlcHRpb24gaWYgY2FsbGVkIGZyb20gc2VuZCgpLiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTE4LDkgKzE4OSwxMyBAQAogICAgICAgICBpZiAoYXJnICYmIGFyZyAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICBjaGFyICptc2cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKICAgICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgZ2VuZXJhdG9yIjsKLSAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgICAgICBtc2cgPSBOT05fSU5JVF9DT1JPX01TRzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICAgICAgbXNnID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUiOworICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgYXN5bmMgZ2VuZXJhdG9yIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTUyLDEwICsyMjcsMjAgQEAKICAgICBpZiAocmVzdWx0ICYmIGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICBpZiAocmVzdWx0ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIERlbGF5IGV4Y2VwdGlvbiBpbnN0YW50aWF0aW9uIGlmIHdlIGNhbiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3RvcEl0ZXJhdGlvbiwgcmVzdWx0LCBOVUxMKTsKKworICAgICAgICAgICAgLyogQXN5bmMgZ2VuZXJhdG9ycyBjYW5ub3QgcmV0dXJuIGFueXRoaW5nIGJ1dCBOb25lICovCisgICAgICAgICAgICBhc3NlcnQoIVB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKTsKKwogICAgICAgICAgICAgaWYgKGUgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TdG9wSXRlcmF0aW9uLCBlKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZSk7CkBAIC0xNjcsMzQgKzI1Miw0NCBAQAogICAgICAgICAvKiBDaGVjayBmb3IgX19mdXR1cmVfXyBnZW5lcmF0b3Jfc3RvcCBhbmQgY29uZGl0aW9uYWxseSB0dXJuCiAgICAgICAgICAqIGEgbGVha2luZyBTdG9wSXRlcmF0aW9uIGludG8gUnVudGltZUVycm9yICh3aXRoIGl0cyBjYXVzZQogICAgICAgICAgKiBzZXQgYXBwcm9wcmlhdGVseSkuICovCi0gICAgICAgIGlmICgoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX2ZsYWdzICYKLSAgICAgICAgICAgICAgKENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCB8IENPX0NPUk9VVElORSB8IENPX0lURVJBQkxFX0NPUk9VVElORSkpCisKKyAgICAgICAgY29uc3QgaW50IGNoZWNrX3N0b3BfaXRlcl9lcnJvcl9mbGFncyA9IENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19DT1JPVVRJTkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fSVRFUkFCTEVfQ09ST1VUSU5FIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0FTWU5DX0dFTkVSQVRPUjsKKworICAgICAgICBpZiAoZ2VuLT5naV9jb2RlICE9IE5VTEwgJiYKKyAgICAgICAgICAgICgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fZmxhZ3MgJgorICAgICAgICAgICAgICAgIGNoZWNrX3N0b3BfaXRlcl9lcnJvcl9mbGFncykKICAgICAgICAgewotICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnZhbDIsICp0YjsKLSAgICAgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24iOwotICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgICAgICAvKiBgZ2VuYCBpcyBlaXRoZXI6CisgICAgICAgICAgICAgICAgICAqIGEgZ2VuZXJhdG9yIHdpdGggQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIGZsYWc7CisgICAgICAgICAgICAgICAgICAqIGEgY29yb3V0aW5lOworICAgICAgICAgICAgICAgICAgKiBhIGdlbmVyYXRvciB3aXRoIENPX0lURVJBQkxFX0NPUk9VVElORSBmbGFnCisgICAgICAgICAgICAgICAgICAgIChkZWNvcmF0ZWQgd2l0aCB0eXBlcy5jb3JvdXRpbmUgZGVjb3JhdG9yKTsKKyAgICAgICAgICAgICAgICAgICogYW4gYXN5bmMgZ2VuZXJhdG9yLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24iOworICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKICAgICAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKLSAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgICAgIGlmICh0YiAhPSBOVUxMKQotICAgICAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2YWwsIHRiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihleGMpOwotICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtc2cpOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbDIsICZ0Yik7Ci0gICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodmFsKTsKLSAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENhdXNlKHZhbDIsIHZhbCk7Ci0gICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbDIsIHZhbCk7Ci0gICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsMiwgdGIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiBQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSB7CisgICAgICAgICAgICAgICAgbXNnID0gImFzeW5jIGdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBSYWlzZSBhIFJ1bnRpbWVFcnJvciAqLworICAgICAgICAgICAgZ2VuX2NoYWluX3J1bnRpbWVfZXJyb3IobXNnKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGBnZW5gIGlzIGFuIG9yZGluYXJ5IGdlbmVyYXRvciB3aXRob3V0CisgICAgICAgICAgICAgICBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgZmxhZy4KKyAgICAgICAgICAgICovCisKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKIAogICAgICAgICAgICAgLyogUG9wIHRoZSBleGNlcHRpb24gYmVmb3JlIGlzc3VpbmcgYSB3YXJuaW5nLiAqLwogICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKIAotICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgJyUuNTBTJyByYWlzZWQgU3RvcEl0ZXJhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4tPmdpX3F1YWxuYW1lKSkgewogICAgICAgICAgICAgICAgIC8qIFdhcm5pbmcgd2FzIGNvbnZlcnRlZCB0byBhbiBlcnJvci4gKi8KQEAgLTIwNyw2ICszMDIsMTUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSAmJiAhcmVzdWx0ICYmCisgICAgICAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pKQorICAgIHsKKyAgICAgICAgLyogY29kZSBpbiBgZ2VuYCByYWlzZWQgYSBTdG9wQXN5bmNJdGVyYXRpb24gZXJyb3I6CisgICAgICAgICAgIHJhaXNlIGEgUnVudGltZUVycm9yLgorICAgICAgICAqLworICAgICAgICBjb25zdCBjaGFyICptc2cgPSAiYXN5bmMgZ2VuZXJhdG9yIHJhaXNlZCBTdG9wQXN5bmNJdGVyYXRpb24iOworICAgICAgICBnZW5fY2hhaW5fcnVudGltZV9lcnJvcihtc2cpOworICAgIH0KIAogICAgIGlmICghcmVzdWx0IHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICAvKiBnZW5lcmF0b3IgY2FuJ3QgYmUgcmVydW4sIHNvIHJlbGVhc2UgdGhlIGZyYW1lICovCkBAIC0yNTMsMTggKzM1NywyMCBAQAogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKIAotICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSkgeworICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdCh5ZikpIHsKICAgICAgICAgcmV0dmFsID0gZ2VuX2Nsb3NlKChQeUdlbk9iamVjdCAqKXlmLCBOVUxMKTsKICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX2Nsb3NlKTsKICAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoeWYpOwogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihtZXRoLCAiIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKG1ldGgpOwogICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOwogICAgICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTI4NCw3ICszOTAsNyBAQAogICAgICAgICBQeU9iamVjdCAqYnl0ZWNvZGUgPSBmLT5mX2NvZGUtPmNvX2NvZGU7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvZGUgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVjb2RlKTsKIAotICAgICAgICBpZiAoY29kZVtmLT5mX2xhc3RpICsgMV0gIT0gWUlFTERfRlJPTSkKKyAgICAgICAgaWYgKGNvZGVbZi0+Zl9sYXN0aSArIHNpemVvZihfUHlfQ09ERVVOSVQpXSAhPSBZSUVMRF9GUk9NKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHlmID0gZi0+Zl9zdGFja3RvcFstMV07CiAgICAgICAgIFB5X0lOQ1JFRih5Zik7CkBAIC0zMTEsOCArNDE3LDExIEBACiAgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxLCAxKTsKICAgICBpZiAocmV0dmFsKSB7CiAgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0IjsKLSAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7CisgICAgICAgIH0gZWxzZSBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgIG1zZyA9IEFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHOworICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMiwyMSArNDQxLDIyIEBACiByZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZW5fdGhyb3coUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpCitfZ2VuX3Rocm93KFB5R2VuT2JqZWN0ICpnZW4sIGludCBjbG9zZV9vbl9nZW5leGl0LAorICAgICAgICAgICBQeU9iamVjdCAqdHlwLCBQeU9iamVjdCAqdmFsLCBQeU9iamVjdCAqdGIpCiB7Ci0gICAgUHlPYmplY3QgKnR5cDsKLSAgICBQeU9iamVjdCAqdGIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp5ZiA9IF9QeUdlbl95ZihnZW4pOwogICAgIF9QeV9JREVOVElGSUVSKHRocm93KTsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRocm93IiwgMSwgMywgJnR5cCwgJnZhbCwgJnRiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoeWYpIHsKICAgICAgICAgUHlPYmplY3QgKnJldDsKICAgICAgICAgaW50IGVycjsKLSAgICAgICAgaWYgKFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyh0eXAsIFB5RXhjX0dlbmVyYXRvckV4aXQpKSB7CisgICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSAmJgorICAgICAgICAgICAgY2xvc2Vfb25fZ2VuZXhpdAorICAgICAgICApIHsKKyAgICAgICAgICAgIC8qIEFzeW5jaHJvbm91cyBnZW5lcmF0b3JzICpzaG91bGQgbm90KiBiZSBjbG9zZWQgcmlnaHQgYXdheS4KKyAgICAgICAgICAgICAgIFdlIGhhdmUgdG8gYWxsb3cgc29tZSBhd2FpdHMgdG8gd29yayBpdCB0aHJvdWdoLCBoZW5jZSB0aGUKKyAgICAgICAgICAgICAgIGBjbG9zZV9vbl9nZW5leGl0YCBwYXJhbWV0ZXIgaGVyZS4KKyAgICAgICAgICAgICovCiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOwogICAgICAgICAgICAgZXJyID0gZ2VuX2Nsb3NlX2l0ZXIoeWYpOwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKQEAgLTM1NSwxMSArNDY1LDE2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSwgMCk7CiAgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICAgICAgICAgIC8qIGB5ZmAgaXMgYSBnZW5lcmF0b3Igb3IgYSBjb3JvdXRpbmUuICovCiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOwotICAgICAgICAgICAgcmV0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKXlmLCBhcmdzKTsKKyAgICAgICAgICAgIC8qIENsb3NlIHRoZSBnZW5lcmF0b3IgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGl0ZXJhdGluZyB3aXRoCisgICAgICAgICAgICAgICAneWllbGQgZnJvbScgb3IgYXdhaXRpbmcgb24gd2l0aCAnYXdhaXQnLiAqLworICAgICAgICAgICAgcmV0ID0gX2dlbl90aHJvdygoUHlHZW5PYmplY3QgKil5ZiwgY2xvc2Vfb25fZ2VuZXhpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwLCB2YWwsIHRiKTsKICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBgeWZgIGlzIGFuIGl0ZXJhdG9yIG9yIGEgY29yb3V0aW5lLWxpa2Ugb2JqZWN0LiAqLwogICAgICAgICAgICAgUHlPYmplY3QgKm1ldGggPSBfUHlPYmplY3RfR2V0QXR0cklkKHlmLCAmUHlJZF90aHJvdyk7CiAgICAgICAgICAgICBpZiAobWV0aCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewpAQCAtMzcxLDcgKzQ4Niw3IEBACiAgICAgICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKLSAgICAgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobWV0aCwgYXJncyk7CisgICAgICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKG1ldGgsIHR5cCwgdmFsLCB0YiwgTlVMTCk7CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwogICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOwogICAgICAgICB9CkBAIC0zODMsNyArNDk4LDcgQEAKICAgICAgICAgICAgIGFzc2VydChyZXQgPT0geWYpOwogICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7CiAgICAgICAgICAgICAvKiBUZXJtaW5hdGlvbiByZXBldGl0aW9uIG9mIFlJRUxEX0ZST00gKi8KLSAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkrKzsKKyAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICBpZiAoX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKCZ2YWwpID09IDApIHsKICAgICAgICAgICAgICAgICByZXQgPSBnZW5fc2VuZF9leChnZW4sIHZhbCwgMCwgMCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbCk7CkBAIC00NTQsNiArNTY5LDIxIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKK2dlbl90aHJvdyhQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdHlwOworICAgIFB5T2JqZWN0ICp0YiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIF9nZW5fdGhyb3coZ2VuLCAxLCB0eXAsIHZhbCwgdGIpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBOVUxMLCAwLCAwKTsKQEAgLTUyNiw4ICs2NTYsNiBAQAogc3RhdGljIGludAogZ2VuX3NldF9uYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5naV9uYW1lIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC01MzUsMTAgKzY2Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmdpX25hbWU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+Z2lfbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmdpX25hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNTUyLDggKzY3OCw2IEBACiBzdGF0aWMgaW50CiBnZW5fc2V0X3F1YWxuYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5fX3F1YWxuYW1lX18gb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCiAgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCiAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTU2MSwxMCArNjg1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmdpX3F1YWxuYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmdpX3F1YWxuYW1lID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+Z2lfcXVhbG5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTAwNSwyMSArMTEyNywyMSBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICphd19haXRlcjsKKyAgICBQeU9iamVjdCAqYWdzX2FpdGVyOwogfSBQeUFJdGVyV3JhcHBlcjsKIAogCiBzdGF0aWMgUHlPYmplY3QgKgogYWl0ZXJfd3JhcHBlcl9pdGVybmV4dChQeUFJdGVyV3JhcHBlciAqYXcpCiB7Ci0gICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N0b3BJdGVyYXRpb24sIGF3LT5hd19haXRlcik7CisgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N0b3BJdGVyYXRpb24sIGF3LT5hZ3NfYWl0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgaW50CiBhaXRlcl93cmFwcGVyX3RyYXZlcnNlKFB5QUl0ZXJXcmFwcGVyICphdywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfVklTSVQoKFB5T2JqZWN0ICopYXctPmF3X2FpdGVyKTsKKyAgICBQeV9WSVNJVCgoUHlPYmplY3QgKilhdy0+YWdzX2FpdGVyKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTAyNyw3ICsxMTQ5LDcgQEAKIGFpdGVyX3dyYXBwZXJfZGVhbGxvYyhQeUFJdGVyV3JhcHBlciAqYXcpCiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopYXcpOwotICAgIFB5X0NMRUFSKGF3LT5hd19haXRlcik7CisgICAgUHlfQ0xFQVIoYXctPmFnc19haXRlcik7CiAgICAgUHlPYmplY3RfR0NfRGVsKGF3KTsKIH0KIApAQCAtMTA4OSw3ICsxMjExLDgxNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKGFpdGVyKTsKLSAgICBhdy0+YXdfYWl0ZXIgPSBhaXRlcjsKKyAgICBhdy0+YWdzX2FpdGVyID0gYWl0ZXI7CiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGF3KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopYXc7CiB9CisKKworLyogPT09PT09PT09IEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzID09PT09PT09PSAqLworCisKK3R5cGVkZWYgZW51bSB7CisgICAgQVdBSVRBQkxFX1NUQVRFX0lOSVQsICAgLyogbmV3IGF3YWl0YWJsZSwgaGFzIG5vdCB5ZXQgYmVlbiBpdGVyYXRlZCAqLworICAgIEFXQUlUQUJMRV9TVEFURV9JVEVSLCAgIC8qIGJlaW5nIGl0ZXJhdGVkICovCisgICAgQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCwgLyogY2xvc2VkICovCit9IEF3YWl0YWJsZVN0YXRlOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlBc3luY0dlbk9iamVjdCAqYWdzX2dlbjsKKworICAgIC8qIENhbiBiZSBOVUxMLCB3aGVuIGluIHRoZSBfX2FuZXh0X18oKSBtb2RlCisgICAgICAgKGVxdWl2YWxlbnQgb2YgImFzZW5kKE5vbmUpIikgKi8KKyAgICBQeU9iamVjdCAqYWdzX3NlbmR2YWw7CisKKyAgICBBd2FpdGFibGVTdGF0ZSBhZ3Nfc3RhdGU7Cit9IFB5QXN5bmNHZW5BU2VuZDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5QXN5bmNHZW5PYmplY3QgKmFndF9nZW47CisKKyAgICAvKiBDYW4gYmUgTlVMTCwgd2hlbiBpbiB0aGUgImFjbG9zZSgpIiBtb2RlCisgICAgICAgKGVxdWl2YWxlbnQgb2YgImF0aHJvdyhHZW5lcmF0b3JFeGl0KSIpICovCisgICAgUHlPYmplY3QgKmFndF9hcmdzOworCisgICAgQXdhaXRhYmxlU3RhdGUgYWd0X3N0YXRlOworfSBQeUFzeW5jR2VuQVRocm93OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmFnd192YWw7Cit9IF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlOworCisKKyNpZm5kZWYgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QKKyNkZWZpbmUgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QgODAKKyNlbmRpZgorCisvKiBGcmVlbGlzdHMgYm9vc3QgcGVyZm9ybWFuY2UgNi0xMCU7IHRoZXkgYWxzbyByZWR1Y2UgbWVtb3J5CisgICBmcmFnbWVudGF0aW9uLCBhcyBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSBhbmQgUHlBc3luY0dlbkFTZW5kCisgICBhcmUgc2hvcnQtbGl2aW5nIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFudGlhdGVkIGZvciBldmVyeQorICAgX19hbmV4dF9fIGNhbGwuCisqLworCitzdGF0aWMgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKmFnX3ZhbHVlX2ZyZWVsaXN0W19QeUFzeW5jR2VuX01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSA9IDA7CisKK3N0YXRpYyBQeUFzeW5jR2VuQVNlbmQgKmFnX2FzZW5kX2ZyZWVsaXN0W19QeUFzeW5jR2VuX01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSA9IDA7CisKKyNkZWZpbmUgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSBcCisgICAgICAgICAgICAgICAgICAgIChQeV9UWVBFKG8pID09ICZfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlKQorCisjZGVmaW5lIFB5QXN5bmNHZW5BU2VuZF9DaGVja0V4YWN0KG8pIFwKKyAgICAgICAgICAgICAgICAgICAgKFB5X1RZUEUobykgPT0gJl9QeUFzeW5jR2VuQVNlbmRfVHlwZSkKKworCitzdGF0aWMgaW50Cithc3luY19nZW5fdHJhdmVyc2UoUHlBc3luY0dlbk9iamVjdCAqZ2VuLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChnZW4tPmFnX2ZpbmFsaXplcik7CisgICAgcmV0dXJuIGdlbl90cmF2ZXJzZSgoUHlHZW5PYmplY3QqKWdlbiwgdmlzaXQsIGFyZyk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9yZXByKFB5QXN5bmNHZW5PYmplY3QgKm8pCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8YXN5bmNfZ2VuZXJhdG9yIG9iamVjdCAlUyBhdCAlcD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLT5hZ19xdWFsbmFtZSwgbyk7Cit9CisKKworc3RhdGljIGludAorYXN5bmNfZ2VuX2luaXRfaG9va3MoUHlBc3luY0dlbk9iamVjdCAqbykKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgUHlPYmplY3QgKmZpbmFsaXplcjsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyOworCisgICAgaWYgKG8tPmFnX2hvb2tzX2luaXRlZCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBvLT5hZ19ob29rc19pbml0ZWQgPSAxOworCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgIGZpbmFsaXplciA9IHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplcjsKKyAgICBpZiAoZmluYWxpemVyKSB7CisgICAgICAgIFB5X0lOQ1JFRihmaW5hbGl6ZXIpOworICAgICAgICBvLT5hZ19maW5hbGl6ZXIgPSBmaW5hbGl6ZXI7CisgICAgfQorCisgICAgZmlyc3RpdGVyID0gdHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyOworICAgIGlmIChmaXJzdGl0ZXIpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKworICAgICAgICBQeV9JTkNSRUYoZmlyc3RpdGVyKTsKKyAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGZpcnN0aXRlciwgIk8iLCBvKTsKKyAgICAgICAgUHlfREVDUkVGKGZpcnN0aXRlcik7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hbmV4dChQeUFzeW5jR2VuT2JqZWN0ICpvKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hc2VuZF9uZXcobywgTlVMTCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZChQeUFzeW5jR2VuT2JqZWN0ICpvLCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hc2VuZF9uZXcobywgYXJnKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FjbG9zZShQeUFzeW5jR2VuT2JqZWN0ICpvLCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hdGhyb3dfbmV3KG8sIE5VTEwpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvdyhQeUFzeW5jR2VuT2JqZWN0ICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpZiAoYXN5bmNfZ2VuX2luaXRfaG9va3MobykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBhc3luY19nZW5fYXRocm93X25ldyhvLCBhcmdzKTsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgYXN5bmNfZ2VuX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9fbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X25hbWUsIChzZXR0ZXIpZ2VuX3NldF9uYW1lLAorICAgICBQeURvY19TVFIoIm5hbWUgb2YgdGhlIGFzeW5jIGdlbmVyYXRvciIpfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9xdWFsbmFtZSwgKHNldHRlcilnZW5fc2V0X3F1YWxuYW1lLAorICAgICBQeURvY19TVFIoInF1YWxpZmllZCBuYW1lIG9mIHRoZSBhc3luYyBnZW5lcmF0b3IiKX0sCisgICAgeyJhZ19hd2FpdCIsIChnZXR0ZXIpY29yb19nZXRfY3JfYXdhaXQsIE5VTEwsCisgICAgIFB5RG9jX1NUUigib2JqZWN0IGJlaW5nIGF3YWl0ZWQgb24sIG9yIE5vbmUiKX0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgYXN5bmNfZ2VuX21lbWJlcmxpc3RbXSA9IHsKKyAgICB7ImFnX2ZyYW1lIiwgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfZnJhbWUpLCAgIFJFQURPTkxZfSwKKyAgICB7ImFnX3J1bm5pbmciLCBUX0JPT0wsICAgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfcnVubmluZyksIFJFQURPTkxZfSwKKyAgICB7ImFnX2NvZGUiLCAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfY29kZSksICAgIFJFQURPTkxZfSwKKyAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLworfTsKKworUHlEb2NfU1RSVkFSKGFzeW5jX2FjbG9zZV9kb2MsCisiYWNsb3NlKCkgLT4gcmFpc2UgR2VuZXJhdG9yRXhpdCBpbnNpZGUgZ2VuZXJhdG9yLiIpOworCitQeURvY19TVFJWQVIoYXN5bmNfYXNlbmRfZG9jLAorImFzZW5kKHYpIC0+IHNlbmQgJ3YnIGluIGdlbmVyYXRvci4iKTsKKworUHlEb2NfU1RSVkFSKGFzeW5jX2F0aHJvd19kb2MsCisiYXRocm93KHR5cFssdmFsWyx0Yl1dKSAtPiByYWlzZSBleGNlcHRpb24gaW4gZ2VuZXJhdG9yLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX21ldGhvZHNbXSA9IHsKKyAgICB7ImFzZW5kIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hc2VuZCwgTUVUSF9PLCBhc3luY19hc2VuZF9kb2N9LAorICAgIHsiYXRocm93IiwoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2F0aHJvdywgTUVUSF9WQVJBUkdTLCBhc3luY19hdGhyb3dfZG9jfSwKKyAgICB7ImFjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYWNsb3NlLCBNRVRIX05PQVJHUywgYXN5bmNfYWNsb3NlX2RvY30sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworCitzdGF0aWMgUHlBc3luY01ldGhvZHMgYXN5bmNfZ2VuX2FzX2FzeW5jID0geworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgKHVuYXJ5ZnVuYylhc3luY19nZW5fYW5leHQgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworCitQeVR5cGVPYmplY3QgUHlBc3luY0dlbl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5QXN5bmNHZW5PYmplY3QpLCAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWdlbl9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmYXN5bmNfZ2VuX2FzX2FzeW5jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgKHJlcHJmdW5jKWFzeW5jX2dlbl9yZXByLCAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKKyAgICAgICAgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWFzeW5jX2dlbl90cmF2ZXJzZSwgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ193ZWFrcmVmbGlzdCksIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGFzeW5jX2dlbl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGFzeW5jX2dlbl9tZW1iZXJsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGFzeW5jX2dlbl9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIF9QeUdlbl9GaW5hbGl6ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKKworUHlPYmplY3QgKgorUHlBc3luY0dlbl9OZXcoUHlGcmFtZU9iamVjdCAqZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSkKK3sKKyAgICBQeUFzeW5jR2VuT2JqZWN0ICpvOworICAgIG8gPSAoUHlBc3luY0dlbk9iamVjdCAqKWdlbl9uZXdfd2l0aF9xdWFsbmFtZSgKKyAgICAgICAgJlB5QXN5bmNHZW5fVHlwZSwgZiwgbmFtZSwgcXVhbG5hbWUpOworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG8tPmFnX2ZpbmFsaXplciA9IE5VTEw7CisgICAgby0+YWdfY2xvc2VkID0gMDsKKyAgICBvLT5hZ19ob29rc19pbml0ZWQgPSAwOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CisKKworaW50CitQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKHZvaWQpCit7CisgICAgaW50IHJldCA9IGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUgKyBhZ19hc2VuZF9mcmVlbGlzdF9mcmVlOworCisgICAgd2hpbGUgKGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUpIHsKKyAgICAgICAgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKm87CisgICAgICAgIG8gPSBhZ192YWx1ZV9mcmVlbGlzdFstLWFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBhc3NlcnQoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIFB5T2JqZWN0X0RlbChvKTsKKyAgICB9CisKKyAgICB3aGlsZSAoYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSkgeworICAgICAgICBQeUFzeW5jR2VuQVNlbmQgKm87CisgICAgICAgIG8gPSBhZ19hc2VuZF9mcmVlbGlzdFstLWFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBhc3NlcnQoUHlfVFlQRShvKSA9PSAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKTsKKyAgICAgICAgUHlPYmplY3RfRGVsKG8pOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK1B5QXN5bmNHZW5fRmluaSh2b2lkKQoreworICAgIFB5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHMoKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICpyZXN1bHQpCit7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKQorICAgICAgICAgICAgfHwgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19HZW5lcmF0b3JFeGl0KQorICAgICAgICApIHsKKyAgICAgICAgICAgIGdlbi0+YWdfY2xvc2VkID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgLyogYXN5bmMgeWllbGQgKi8KKyAgICAgICAgUHlPYmplY3QgKmUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAorICAgICAgICAgICAgUHlFeGNfU3RvcEl0ZXJhdGlvbiwKKyAgICAgICAgICAgICgoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUqKXJlc3VsdCktPmFnd192YWwsCisgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIGlmIChlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TdG9wSXRlcmF0aW9uLCBlKTsKKyAgICAgICAgUHlfREVDUkVGKGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qIC0tLS0tLS0tLS0gQXN5bmMgR2VuZXJhdG9yIEFTZW5kIEF3YWl0YWJsZSAtLS0tLS0tLS0tLS0gKi8KKworCitzdGF0aWMgdm9pZAorYXN5bmNfZ2VuX2FzZW5kX2RlYWxsb2MoUHlBc3luY0dlbkFTZW5kICpvKQoreworICAgIFB5X0NMRUFSKG8tPmFnc19nZW4pOworICAgIFB5X0NMRUFSKG8tPmFnc19zZW5kdmFsKTsKKyAgICBpZiAoYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSA8IF9QeUFzeW5jR2VuX01BWEZSRUVMSVNUKSB7CisgICAgICAgIGFzc2VydChQeUFzeW5jR2VuQVNlbmRfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIGFnX2FzZW5kX2ZyZWVsaXN0W2FnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUrK10gPSBvOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0X0RlbChvKTsKKyAgICB9Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF9zZW5kKFB5QXN5bmNHZW5BU2VuZCAqbywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKG8tPmFnc19zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Nfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBhcmcgPSBvLT5hZ3Nfc2VuZHZhbDsKKyAgICAgICAgfQorICAgICAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSVRFUjsKKyAgICB9CisKKyAgICByZXN1bHQgPSBnZW5fc2VuZF9leCgoUHlHZW5PYmplY3QqKW8tPmFnc19nZW4sIGFyZywgMCwgMCk7CisgICAgcmVzdWx0ID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3NfZ2VuLCByZXN1bHQpOworCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX2l0ZXJuZXh0KFB5QXN5bmNHZW5BU2VuZCAqbykKK3sKKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX3NlbmQobywgTlVMTCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF90aHJvdyhQeUFzeW5jR2VuQVNlbmQgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoby0+YWdzX3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCopby0+YWdzX2dlbiwgYXJncyk7CisgICAgcmVzdWx0ID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3NfZ2VuLCByZXN1bHQpOworCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX2Nsb3NlKFB5QXN5bmNHZW5BU2VuZCAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX2FzZW5kX21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX3NlbmQsIE1FVEhfTywgc2VuZF9kb2N9LAorICAgIHsidGhyb3ciLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX3Rocm93LCBNRVRIX1ZBUkFSR1MsIHRocm93X2RvY30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXNlbmRfY2xvc2UsIE1FVEhfTk9BUkdTLCBjbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGFzeW5jX2dlbl9hc2VuZF9hc19hc3luYyA9IHsKKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2F3YWl0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKKworUHlUeXBlT2JqZWN0IF9QeUFzeW5jR2VuQVNlbmRfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3JfYXNlbmQiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeUFzeW5jR2VuQVNlbmQpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3luY19nZW5fYXNlbmRfZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmFzeW5jX2dlbl9hc2VuZF9hc19hc3luYywgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWFzeW5jX2dlbl9hc2VuZF9pdGVybmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX2FzZW5kX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfbmV3KFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKnNlbmR2YWwpCit7CisgICAgUHlBc3luY0dlbkFTZW5kICpvOworICAgIGlmIChhZ19hc2VuZF9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUtLTsKKyAgICAgICAgbyA9IGFnX2FzZW5kX2ZyZWVsaXN0W2FnX2FzZW5kX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKChQeU9iamVjdCAqKW8pOworICAgIH0gZWxzZSB7CisgICAgICAgIG8gPSBQeU9iamVjdF9OZXcoUHlBc3luY0dlbkFTZW5kLCAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKTsKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZ2VuKTsKKyAgICBvLT5hZ3NfZ2VuID0gZ2VuOworCisgICAgUHlfWElOQ1JFRihzZW5kdmFsKTsKKyAgICBvLT5hZ3Nfc2VuZHZhbCA9IHNlbmR2YWw7CisKKyAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSU5JVDsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvOworfQorCisKKy8qIC0tLS0tLS0tLS0gQXN5bmMgR2VuZXJhdG9yIFZhbHVlIFdyYXBwZXIgLS0tLS0tLS0tLS0tICovCisKKworc3RhdGljIHZvaWQKK2FzeW5jX2dlbl93cmFwcGVkX3ZhbF9kZWFsbG9jKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICpvKQoreworICAgIFB5X0NMRUFSKG8tPmFnd192YWwpOworICAgIGlmIChhZ192YWx1ZV9mcmVlbGlzdF9mcmVlIDwgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QpIHsKKyAgICAgICAgYXNzZXJ0KF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QobykpOworICAgICAgICBhZ192YWx1ZV9mcmVlbGlzdFthZ192YWx1ZV9mcmVlbGlzdF9mcmVlKytdID0gbzsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdF9EZWwobyk7CisgICAgfQorfQorCisKK1B5VHlwZU9iamVjdCBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvcl93cmFwcGVkX3ZhbHVlIiwgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlKSwgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWFzeW5jX2dlbl93cmFwcGVkX3ZhbF9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworUHlPYmplY3QgKgorX1B5QXN5bmNHZW5WYWx1ZVdyYXBwZXJOZXcoUHlPYmplY3QgKnZhbCkKK3sKKyAgICBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqbzsKKyAgICBhc3NlcnQodmFsKTsKKworICAgIGlmIChhZ192YWx1ZV9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUtLTsKKyAgICAgICAgbyA9IGFnX3ZhbHVlX2ZyZWVsaXN0W2FnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBhc3NlcnQoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0KilvKTsKKyAgICB9IGVsc2UgeworICAgICAgICBvID0gUHlPYmplY3RfTmV3KF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlLCAmX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZSk7CisgICAgICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIG8tPmFnd192YWwgPSB2YWw7CisgICAgUHlfSU5DUkVGKHZhbCk7CisgICAgcmV0dXJuIChQeU9iamVjdCopbzsKK30KKworCisvKiAtLS0tLS0tLS0tIEFzeW5jIEdlbmVyYXRvciBBVGhyb3cgYXdhaXRhYmxlIC0tLS0tLS0tLS0tLSAqLworCisKK3N0YXRpYyB2b2lkCithc3luY19nZW5fYXRocm93X2RlYWxsb2MoUHlBc3luY0dlbkFUaHJvdyAqbykKK3sKKyAgICBQeV9DTEVBUihvLT5hZ3RfZ2VuKTsKKyAgICBQeV9DTEVBUihvLT5hZ3RfYXJncyk7CisgICAgUHlPYmplY3RfRGVsKG8pOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X3NlbmQoUHlBc3luY0dlbkFUaHJvdyAqbywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeUdlbk9iamVjdCAqZ2VuID0gKFB5R2VuT2JqZWN0KilvLT5hZ3RfZ2VuOworICAgIFB5RnJhbWVPYmplY3QgKmYgPSBnZW4tPmdpX2ZyYW1lOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CisKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCB8fAorICAgICAgICAgICAgby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfSU5JVCkgeworICAgICAgICBpZiAoby0+YWd0X2dlbi0+YWdfY2xvc2VkKSB7CisgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXJnICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIE5PTl9JTklUX0NPUk9fTVNHKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0lURVI7CisKKyAgICAgICAgaWYgKG8tPmFndF9hcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIGFjbG9zZSgpIG1vZGUgKi8KKyAgICAgICAgICAgIG8tPmFndF9nZW4tPmFnX2Nsb3NlZCA9IDE7CisKKyAgICAgICAgICAgIHJldHZhbCA9IF9nZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopZ2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgLyogRG8gbm90IGNsb3NlIGdlbmVyYXRvciB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19HZW5lcmF0b3JFeGl0IGlzIHBhc3NlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19HZW5lcmF0b3JFeGl0LCBOVUxMLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKHJldHZhbCAmJiBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KHJldHZhbCkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgICAgICBnb3RvIHlpZWxkX2Nsb3NlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKnR5cDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0YiA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKworICAgICAgICAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShvLT5hZ3RfYXJncywgImF0aHJvdyIsIDEsIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXAsICZ2YWwsICZ0YikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dmFsID0gX2dlbl90aHJvdygoUHlHZW5PYmplY3QgKilnZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAvKiBEbyBub3QgY2xvc2UgZ2VuZXJhdG9yIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0dlbmVyYXRvckV4aXQgaXMgcGFzc2VkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cCwgdmFsLCB0Yik7CisgICAgICAgICAgICByZXR2YWwgPSBhc3luY19nZW5fdW53cmFwX3ZhbHVlKG8tPmFndF9nZW4sIHJldHZhbCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGNoZWNrX2Vycm9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgfQorCisgICAgYXNzZXJ0KG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfSVRFUik7CisKKyAgICByZXR2YWwgPSBnZW5fc2VuZF9leCgoUHlHZW5PYmplY3QgKilnZW4sIGFyZywgMCwgMCk7CisgICAgaWYgKG8tPmFndF9hcmdzKSB7CisgICAgICAgIHJldHVybiBhc3luY19nZW5fdW53cmFwX3ZhbHVlKG8tPmFndF9nZW4sIHJldHZhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogYWNsb3NlKCkgbW9kZSAqLworICAgICAgICBpZiAocmV0dmFsKSB7CisgICAgICAgICAgICBpZiAoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChyZXR2YWwpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICAgICAgZ290byB5aWVsZF9jbG9zZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBnb3RvIGNoZWNrX2Vycm9yOworICAgICAgICB9CisgICAgfQorCit5aWVsZF9jbG9zZToKKyAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwgQVNZTkNfR0VOX0lHTk9SRURfRVhJVF9NU0cpOworICAgIHJldHVybiBOVUxMOworCitjaGVja19lcnJvcjoKKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pCisgICAgICAgIHx8IFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfR2VuZXJhdG9yRXhpdCkKKyAgICApIHsKKyAgICAgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsgICAgICAgICAgLyogaWdub3JlIHRoZXNlIGVycm9ycyAqLworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd190aHJvdyhQeUFzeW5jR2VuQVRocm93ICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsOworCisgICAgaWYgKG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfSU5JVCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBOT05fSU5JVF9DT1JPX01TRyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR2YWwgPSBnZW5fdGhyb3coKFB5R2VuT2JqZWN0KilvLT5hZ3RfZ2VuLCBhcmdzKTsKKyAgICBpZiAoby0+YWd0X2FyZ3MpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWd0X2dlbiwgcmV0dmFsKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBhY2xvc2UoKSBtb2RlICovCisgICAgICAgIGlmIChyZXR2YWwgJiYgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChyZXR2YWwpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIEFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgfQorfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X2l0ZXJuZXh0KFB5QXN5bmNHZW5BVGhyb3cgKm8pCit7CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hdGhyb3dfc2VuZChvLCBQeV9Ob25lKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19jbG9zZShQeUFzeW5jR2VuQVRocm93ICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBhc3luY19nZW5fYXRocm93X21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2F0aHJvd19zZW5kLCBNRVRIX08sIHNlbmRfZG9jfSwKKyAgICB7InRocm93IiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3dfdGhyb3csIE1FVEhfVkFSQVJHUywgdGhyb3dfZG9jfSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3dfY2xvc2UsIE1FVEhfTk9BUkdTLCBjbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGFzeW5jX2dlbl9hdGhyb3dfYXNfYXN5bmMgPSB7CisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCisKK1B5VHlwZU9iamVjdCBfUHlBc3luY0dlbkFUaHJvd19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvcl9hdGhyb3ciLCAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5QXN5bmNHZW5BVGhyb3cpLCAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWFzeW5jX2dlbl9hdGhyb3dfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmYXN5bmNfZ2VuX2F0aHJvd19hc19hc3luYywgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpYXN5bmNfZ2VuX2F0aHJvd19pdGVybmV4dCwgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBhc3luY19nZW5fYXRocm93X21ldGhvZHMsICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfbmV3KFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlBc3luY0dlbkFUaHJvdyAqbzsKKyAgICBvID0gUHlPYmplY3RfTmV3KFB5QXN5bmNHZW5BVGhyb3csICZfUHlBc3luY0dlbkFUaHJvd19UeXBlKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBvLT5hZ3RfZ2VuID0gZ2VuOworICAgIG8tPmFndF9hcmdzID0gYXJnczsKKyAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSU5JVDsKKyAgICBQeV9JTkNSRUYoZ2VuKTsKKyAgICBQeV9YSU5DUkVGKGFyZ3MpOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2l0ZXJvYmplY3QuYyBiL09iamVjdHMvaXRlcm9iamVjdC5jCmluZGV4IGFiMjlmZjguLjc1YjJmY2IgMTAwNjQ0Ci0tLSBhL09iamVjdHMvaXRlcm9iamVjdC5jCisrKyBiL09iamVjdHMvaXRlcm9iamVjdC5jCkBAIC0yMDgsMzAgKzIwOCwzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGNhbGxpdGVyX2l0ZXJuZXh0KGNhbGxpdGVyb2JqZWN0ICppdCkKIHsKLSAgICBpZiAoaXQtPml0X2NhbGxhYmxlICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGl0LT5pdF9jYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpbnQgb2s7Ci0gICAgICAgICAgICBvayA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdC0+aXRfc2VudGluZWwsIHJlc3VsdCwgUHlfRVEpOwotICAgICAgICAgICAgaWYgKG9rID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsgLyogQ29tbW9uIGNhc2UsIGZhc3QgcGF0aCAqLwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBpZiAob2sgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X2NhbGxhYmxlKTsKLSAgICAgICAgICAgICAgICBQeV9DTEVBUihpdC0+aXRfc2VudGluZWwpOwotICAgICAgICAgICAgfQorICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoaXQtPml0X2NhbGxhYmxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhpdC0+aXRfY2FsbGFibGUpOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBpbnQgb2s7CisKKyAgICAgICAgb2sgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPml0X3NlbnRpbmVsLCByZXN1bHQsIFB5X0VRKTsKKyAgICAgICAgaWYgKG9rID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8qIENvbW1vbiBjYXNlLCBmYXN0IHBhdGggKi8KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICBpZiAob2sgPiAwKSB7CiAgICAgICAgICAgICBQeV9DTEVBUihpdC0+aXRfY2FsbGFibGUpOwogICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X3NlbnRpbmVsKTsKICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9jYWxsYWJsZSk7CisgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9zZW50aW5lbCk7CisgICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3RvYmplY3QuYyBiL09iamVjdHMvbGlzdG9iamVjdC5jCmluZGV4IDgxNWExYjkuLmRjZDdiNWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdG9iamVjdC5jCisrKyBiL09iamVjdHMvbGlzdG9iamVjdC5jCkBAIC00OSw3ICs0OSw3IEBACiAgICAgbmV3X2FsbG9jYXRlZCA9IChuZXdzaXplID4+IDMpICsgKG5ld3NpemUgPCA5ID8gMyA6IDYpOwogCiAgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICBpZiAobmV3X2FsbG9jYXRlZCA+IFBZX1NJWkVfTUFYIC0gbmV3c2l6ZSkgeworICAgIGlmIChuZXdfYWxsb2NhdGVkID4gU0laRV9NQVggLSBuZXdzaXplKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9IGVsc2UgewpAQCAtNTksNyArNTksNyBAQAogICAgIGlmIChuZXdzaXplID09IDApCiAgICAgICAgIG5ld19hbGxvY2F0ZWQgPSAwOwogICAgIGl0ZW1zID0gc2VsZi0+b2JfaXRlbTsKLSAgICBpZiAobmV3X2FsbG9jYXRlZCA8PSAoUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpKQorICAgIGlmIChuZXdfYWxsb2NhdGVkIDw9IChTSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSkpCiAgICAgICAgIFB5TWVtX1JFU0laRShpdGVtcywgUHlPYmplY3QgKiwgbmV3X2FsbG9jYXRlZCk7CiAgICAgZWxzZQogICAgICAgICBpdGVtcyA9IE5VTEw7CkBAIC04Miw2ICs4MiwxNiBAQAogc3RhdGljIHZvaWQKIHNob3dfYWxsb2Modm9pZCkKIHsKKyAgICBQeU9iamVjdCAqeG9wdGlvbnMsICp2YWx1ZTsKKyAgICBfUHlfSURFTlRJRklFUihzaG93YWxsb2Njb3VudCk7CisKKyAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7CisgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93YWxsb2Njb3VudCk7CisgICAgaWYgKHZhbHVlICE9IFB5X1RydWUpCisgICAgICAgIHJldHVybjsKKwogICAgIGZwcmludGYoc3RkZXJyLCAiTGlzdCBhbGxvY2F0aW9uczogJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwKICAgICAgICAgY291bnRfYWxsb2MpOwogICAgIGZwcmludGYoc3RkZXJyLCAiTGlzdCByZXVzZSB0aHJvdWdoIGZyZWVsaXN0OiAlIiBQWV9GT1JNQVRfU0laRV9UCkBAIC0xMzAsNyArMTQwLDYgQEAKIFB5TGlzdF9OZXcoUHlfc3NpemVfdCBzaXplKQogewogICAgIFB5TGlzdE9iamVjdCAqb3A7Ci0gICAgc2l6ZV90IG5ieXRlczsKICNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCiAgICAgc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewpAQCAtMTQzLDExICsxNTIsNiBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyB3aXRob3V0IGFuIGFjdHVhbCBvdmVyZmxvdywKLSAgICAgKiAgd2hpY2ggY2FuIGNhdXNlIGNvbXBpbGVyIHRvIG9wdGltaXNlIG91dCAqLwotICAgIGlmICgoc2l6ZV90KXNpemUgPiBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgbmJ5dGVzID0gc2l6ZSAqIHNpemVvZihQeU9iamVjdCAqKTsKICAgICBpZiAobnVtZnJlZSkgewogICAgICAgICBudW1mcmVlLS07CiAgICAgICAgIG9wID0gZnJlZV9saXN0W251bWZyZWVdOwpAQCAtMTY2LDEyICsxNzAsMTEgQEAKICAgICBpZiAoc2l6ZSA8PSAwKQogICAgICAgICBvcC0+b2JfaXRlbSA9IE5VTEw7CiAgICAgZWxzZSB7Ci0gICAgICAgIG9wLT5vYl9pdGVtID0gKFB5T2JqZWN0ICoqKSBQeU1lbV9NQUxMT0MobmJ5dGVzKTsKKyAgICAgICAgb3AtPm9iX2l0ZW0gPSAoUHlPYmplY3QgKiopIFB5TWVtX0NhbGxvYyhzaXplLCBzaXplb2YoUHlPYmplY3QgKikpOwogICAgICAgICBpZiAob3AtPm9iX2l0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG9wKTsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICB9Ci0gICAgICAgIG1lbXNldChvcC0+b2JfaXRlbSwgMCwgbmJ5dGVzKTsKICAgICB9CiAgICAgUHlfU0laRShvcCkgPSBzaXplOwogICAgIG9wLT5hbGxvY2F0ZWQgPSBzaXplOwpAQCAtMjE2LDcgKzIxOSw2IEBACiBQeUxpc3RfU2V0SXRlbShQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwKICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdpdGVtKQogewotICAgIFB5T2JqZWN0ICpvbGRpdGVtOwogICAgIFB5T2JqZWN0ICoqcDsKICAgICBpZiAoIVB5TGlzdF9DaGVjayhvcCkpIHsKICAgICAgICAgUHlfWERFQ1JFRihuZXdpdGVtKTsKQEAgLTIzMCw5ICsyMzIsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHAgPSAoKFB5TGlzdE9iamVjdCAqKW9wKSAtPiBvYl9pdGVtICsgaTsKLSAgICBvbGRpdGVtID0gKnA7Ci0gICAgKnAgPSBuZXdpdGVtOwotICAgIFB5X1hERUNSRUYob2xkaXRlbSk7CisgICAgUHlfWFNFVFJFRigqcCwgbmV3aXRlbSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG4rMSkgPT0gLTEpCisgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG4rMSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAod2hlcmUgPCAwKSB7CkBAIC0yOTEsNyArMjkxLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpID09IC0xKQorICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgUHlfSU5DUkVGKHYpOwpAQCAtNDgxLDkgKzQ4MSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNkZWZpbmUgYiAoKFB5TGlzdE9iamVjdCAqKWJiKQotICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKLSAgICBpZiAoc2l6ZSA8IDApCisgICAgaWYgKFB5X1NJWkUoYSkgPiBQWV9TU0laRV9UX01BWCAtIFB5X1NJWkUoYikpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKICAgICBucCA9IChQeUxpc3RPYmplY3QgKikgUHlMaXN0X05ldyhzaXplKTsKICAgICBpZiAobnAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTcxNCw3ICs3MTQsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CiAKLSAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgc2l6ZSpuKSA9PSAtMSkKKyAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgc2l6ZSpuKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcCA9IHNpemU7CkBAIC03MzMsNyArNzMzLDYgQEAKIHN0YXRpYyBpbnQKIGxpc3RfYXNzX2l0ZW0oUHlMaXN0T2JqZWN0ICphLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQogewotICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CiAgICAgaWYgKGkgPCAwIHx8IGkgPj0gUHlfU0laRShhKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGFzc2lnbm1lbnQgaW5kZXggb3V0IG9mIHJhbmdlIik7CkBAIC03NDIsOSArNzQxLDcgQEAKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gbGlzdF9hc3Nfc2xpY2UoYSwgaSwgaSsxLCB2KTsKICAgICBQeV9JTkNSRUYodik7Ci0gICAgb2xkX3ZhbHVlID0gYS0+b2JfaXRlbVtpXTsKLSAgICBhLT5vYl9pdGVtW2ldID0gdjsKLSAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsKKyAgICBQeV9TRVRSRUYoYS0+b2JfaXRlbVtpXSwgdik7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTgwNyw3ICs4MDQsNyBAQAogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgICAgIH0KICAgICAgICAgbSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtICsgbikgPT0gLTEpIHsKKyAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG0gKyBuKSA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC04MzUsMjMgKzgzMiwyNSBAQAogCiAgICAgLyogR3Vlc3MgYSByZXN1bHQgbGlzdCBzaXplLiAqLwogICAgIG4gPSBQeU9iamVjdF9MZW5ndGhIaW50KGIsIDgpOwotICAgIGlmIChuID09IC0xKSB7CisgICAgaWYgKG4gPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBtID0gUHlfU0laRShzZWxmKTsKLSAgICBtbiA9IG0gKyBuOwotICAgIGlmIChtbiA+PSBtKSB7CisgICAgaWYgKG0gPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKKyAgICAgICAgLyogbSArIG4gb3ZlcmZsb3dlZDsgb24gdGhlIGNoYW5jZSB0aGF0IG4gbGllZCwgYW5kIHRoZXJlIHJlYWxseQorICAgICAgICAgKiBpcyBlbm91Z2ggcm9vbSwgaWdub3JlIGl0LiAgSWYgbiB3YXMgdGVsbGluZyB0aGUgdHJ1dGgsIHdlJ2xsCisgICAgICAgICAqIGV2ZW50dWFsbHkgcnVuIG91dCBvZiBtZW1vcnkgZHVyaW5nIHRoZSBsb29wLgorICAgICAgICAgKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1uID0gbSArIG47CiAgICAgICAgIC8qIE1ha2Ugcm9vbS4gKi8KLSAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG1uKSA9PSAtMSkKKyAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG1uKSA8IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAvKiBNYWtlIHRoZSBsaXN0IHNhbmUgYWdhaW4uICovCiAgICAgICAgIFB5X1NJWkUoc2VsZikgPSBtOwogICAgIH0KLSAgICAvKiBFbHNlIG0gKyBuIG92ZXJmbG93ZWQ7IG9uIHRoZSBjaGFuY2UgdGhhdCBuIGxpZWQsIGFuZCB0aGVyZSByZWFsbHkKLSAgICAgKiBpcyBlbm91Z2ggcm9vbSwgaWdub3JlIGl0LiAgSWYgbiB3YXMgdGVsbGluZyB0aGUgdHJ1dGgsIHdlJ2xsCi0gICAgICogZXZlbnR1YWxseSBydW4gb3V0IG9mIG1lbW9yeSBkdXJpbmcgdGhlIGxvb3AuCi0gICAgICovCiAKICAgICAvKiBSdW4gaXRlcmF0b3IgdG8gZXhoYXVzdGlvbi4gKi8KICAgICBmb3IgKDs7KSB7CkBAIC0yNTAwLDkgKzI0OTksNiBAQAogICAgICAgICAgICAgICAgIHN0ZXAgPSAtc3RlcDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW5ndGggPD0KLSAgICAgICAgICAgICAgICAgICBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCopKTsKLQogICAgICAgICAgICAgZ2FyYmFnZSA9IChQeU9iamVjdCoqKQogICAgICAgICAgICAgICAgIFB5TWVtX01BTExPQyhzbGljZWxlbmd0aCpzaXplb2YoUHlPYmplY3QqKSk7CiAgICAgICAgICAgICBpZiAoIWdhcmJhZ2UpIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvbGlzdHNvcnQudHh0IGIvT2JqZWN0cy9saXN0c29ydC50eHQKaW5kZXggMTUyYTI3MC4uMTdkMjc5NyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9saXN0c29ydC50eHQKKysrIGIvT2JqZWN0cy9saXN0c29ydC50eHQKQEAgLTQ4Niw3ICs0ODYsNyBAQAogSSBmaXJzdCBsZWFybmVkIGFib3V0IHRoZSBnYWxsb3Bpbmcgc3RyYXRlZ3kgaW4gYSByZWxhdGVkIGNvbnRleHQ7IHNlZToKIAogICAgICJBZGFwdGl2ZSBTZXQgSW50ZXJzZWN0aW9ucywgVW5pb25zLCBhbmQgRGlmZmVyZW5jZXMiICgyMDAwKQotICAgIEVyaWsgRC4gRGVtYWluZSwgQWxlamFuZHJvIEzzcGV6LU9ydGl6LCBKLiBJYW4gTXVucm8KKyAgICBFcmlrIEQuIERlbWFpbmUsIEFsZWphbmRybyBMw7NwZXotT3J0aXosIEouIElhbiBNdW5ybwogCiBhbmQgaXRzIGZvbGxvd3VwKHMpLiAgQW4gZWFybGllciBwYXBlciBjYWxsZWQgdGhlIHNhbWUgc3RyYXRlZ3kKICJleHBvbmVudGlhbCBzZWFyY2giOgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0IGIvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0CmluZGV4IGQyNDdlZGQuLjUxNTM3NTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dAorKysgYi9PYmplY3RzL2xub3RhYl9ub3Rlcy50eHQKQEAgLTEyLDQyICsxMiw0NyBAQAogICAgICAgICAwCQkgICAgMQogICAgICAgICA2CQkgICAgMgogICAgICAgIDUwCQkgICAgNwotICAgICAgMzUwICAgICAgICAgICAgICAgICAzMDcKLSAgICAgIDM2MSAgICAgICAgICAgICAgICAgMzA4CisgICAgICAzNTAgICAgICAgICAgICAgICAgIDIwNworICAgICAgMzYxICAgICAgICAgICAgICAgICAyMDgKIAogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZXNlIG51bWJlcnMgbGl0ZXJhbGx5LCB3ZSBjb21wcmVzcyB0aGUgbGlzdCBieSBzdG9yaW5nIG9ubHkKLXRoZSBpbmNyZW1lbnRzIGZyb20gb25lIHJvdyB0byB0aGUgbmV4dC4gIENvbmNlcHR1YWxseSwgdGhlIHN0b3JlZCBsaXN0IG1pZ2h0Cit0aGUgZGlmZmVyZW5jZSBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQuICBDb25jZXB0dWFsbHksIHRoZSBzdG9yZWQgbGlzdCBtaWdodAogbG9vayBsaWtlOgogCi0gICAgMCwgMSwgIDYsIDEsICA0NCwgNSwgIDMwMCwgMzAwLCAgMTEsIDEKKyAgICAwLCAxLCAgNiwgMSwgIDQ0LCA1LCAgMzAwLCAyMDAsICAxMSwgMQogCi1UaGUgYWJvdmUgZG9lc24ndCByZWFsbHkgd29yaywgYnV0IGl0J3MgYSBzdGFydC4gTm90ZSB0aGF0IGFuIHVuc2lnbmVkIGJ5dGUKLWNhbid0IGhvbGQgbmVnYXRpdmUgdmFsdWVzLCBvciB2YWx1ZXMgbGFyZ2VyIHRoYW4gMjU1LCBhbmQgdGhlIGFib3ZlIGV4YW1wbGUKLWNvbnRhaW5zIHR3byBzdWNoIHZhbHVlcy4gU28gd2UgbWFrZSB0d28gdHdlYWtzOgorVGhlIGFib3ZlIGRvZXNuJ3QgcmVhbGx5IHdvcmssIGJ1dCBpdCdzIGEgc3RhcnQuIEFuIHVuc2lnbmVkIGJ5dGUgKGJ5dGUgY29kZQorb2Zmc2V0KSBjYW4ndCBob2xkIG5lZ2F0aXZlIHZhbHVlcywgb3IgdmFsdWVzIGxhcmdlciB0aGFuIDI1NSwgYSBzaWduZWQgYnl0ZQorKGxpbmUgbnVtYmVyKSBjYW4ndCBob2xkIHZhbHVlcyBsYXJnZXIgdGhhbiAxMjcgb3IgbGVzcyB0aGFuIC0xMjgsIGFuZCB0aGUKK2Fib3ZlIGV4YW1wbGUgY29udGFpbnMgdHdvIHN1Y2ggdmFsdWVzLiBTbyB3ZSBtYWtlIHR3byB0d2Vha3M6CiAKLSAoYSkgdGhlcmUncyBhIGRlZXAgYXNzdW1wdGlvbiB0aGF0IGJ5dGUgY29kZSBvZmZzZXRzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nCi0gbGluZSAjcyBib3RoIGluY3JlYXNlIG1vbm90b25pY2FsbHksIGFuZAotIChiKSBpZiBhdCBsZWFzdCBvbmUgY29sdW1uIGp1bXBzIGJ5IG1vcmUgdGhhbiAyNTUgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LAotIG1vcmUgdGhhbiBvbmUgcGFpciBpcyB3cml0dGVuIHRvIHRoZSB0YWJsZS4gSW4gY2FzZSAjYiwgdGhlcmUncyBubyB3YXkgdG8ga25vdwotIGZyb20gbG9va2luZyBhdCB0aGUgdGFibGUgbGF0ZXIgaG93IG1hbnkgd2VyZSB3cml0dGVuLiAgVGhhdCdzIHRoZSBkZWxpY2F0ZQotIHBhcnQuICBBIHVzZXIgb2YgY29fbG5vdGFiIGRlc2lyaW5nIHRvIGZpbmQgdGhlIHNvdXJjZSBsaW5lIG51bWJlcgotIGNvcnJlc3BvbmRpbmcgdG8gYSBieXRlY29kZSBhZGRyZXNzIEEgc2hvdWxkIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMKKyAoYSkgdGhlcmUncyBhIGRlZXAgYXNzdW1wdGlvbiB0aGF0IGJ5dGUgY29kZSBvZmZzZXRzIGluY3JlYXNlIG1vbm90b25pY2FsbHksCisgYW5kCisgKGIpIGlmIGJ5dGUgY29kZSBvZmZzZXQganVtcHMgYnkgbW9yZSB0aGFuIDI1NSBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQsIG9yIGlmCisgc291cmNlIGNvZGUgbGluZSBudW1iZXIganVtcHMgYnkgbW9yZSB0aGFuIDEyNyBvciBsZXNzIHRoYW4gLTEyOCBmcm9tIG9uZSByb3cKKyB0byB0aGUgbmV4dCwgbW9yZSB0aGFuIG9uZSBwYWlyIGlzIHdyaXR0ZW4gdG8gdGhlIHRhYmxlLiBJbiBjYXNlICNiLAorIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgZnJvbSBsb29raW5nIGF0IHRoZSB0YWJsZSBsYXRlciBob3cgbWFueSB3ZXJlIHdyaXR0ZW4uCisgVGhhdCdzIHRoZSBkZWxpY2F0ZSBwYXJ0LiAgQSB1c2VyIG9mIGNvX2xub3RhYiBkZXNpcmluZyB0byBmaW5kIHRoZSBzb3VyY2UKKyBsaW5lIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIGEgYnl0ZWNvZGUgYWRkcmVzcyBBIHNob3VsZCBkbyBzb21ldGhpbmcgbGlrZQorIHRoaXM6CiAKICAgICBsaW5lbm8gPSBhZGRyID0gMAogICAgIGZvciBhZGRyX2luY3IsIGxpbmVfaW5jciBpbiBjb19sbm90YWI6CiAgICAgICAgIGFkZHIgKz0gYWRkcl9pbmNyCiAgICAgICAgIGlmIGFkZHIgPiBBOgogICAgICAgICAgICAgcmV0dXJuIGxpbmVubworICAgICAgICBpZiBsaW5lX2luY3IgPj0gMHg4MDoKKyAgICAgICAgICAgIGxpbmVfaW5jciAtPSAweDEwMAogICAgICAgICBsaW5lbm8gKz0gbGluZV9pbmNyCiAKIChJbiBDLCB0aGlzIGlzIGltcGxlbWVudGVkIGJ5IFB5Q29kZV9BZGRyMkxpbmUoKS4pICBJbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLAogd2hlbiB0aGUgYWRkciBmaWVsZCBpbmNyZW1lbnRzIGJ5IG1vcmUgdGhhbiAyNTUsIHRoZSBsaW5lICMgaW5jcmVtZW50IGluIGVhY2gKIHBhaXIgZ2VuZXJhdGVkIG11c3QgYmUgMCB1bnRpbCB0aGUgcmVtYWluaW5nIGFkZHIgaW5jcmVtZW50IGlzIDwgMjU2LiAgU28sIGluCiB0aGUgZXhhbXBsZSBhYm92ZSwgYXNzZW1ibGVfbG5vdGFiIGluIGNvbXBpbGUuYyBzaG91bGQgbm90IChhcyB3YXMgYWN0dWFsbHkgZG9uZQotdW50aWwgMi4yKSBleHBhbmQgMzAwLCAzMDAgdG8KK3VudGlsIDIuMikgZXhwYW5kIDMwMCwgMjAwIHRvCiAgICAgMjU1LCAyNTUsIDQ1LCA0NSwKIGJ1dCB0bwotICAgIDI1NSwgMCwgNDUsIDI1NSwgMCwgNDUuCisgICAgMjU1LCAwLCA0NSwgMTI4LCAwLCA3Mi4KIAogVGhlIGFib3ZlIGlzIHN1ZmZpY2llbnQgdG8gcmVjb25zdHJ1Y3QgbGluZSBudW1iZXJzIGZvciB0cmFjZWJhY2tzLCBidXQgbm90IGZvcgogbGluZSB0cmFjaW5nLiAgVHJhY2luZyBpcyBoYW5kbGVkIGJ5IFB5Q29kZV9DaGVja0xpbmVOdW1iZXIoKSBpbiBjb2Rlb2JqZWN0LmMKQEAgLTkwLDE2ICs5NSwxNiBAQAogICAgICAgICAgICAgICA2IFBPUF9KVU1QX0lGX0ZBTFNFICAgICAgIDE3CiAKICAgMyAgICAgICAgICAgOSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxMiBQUklOVF9JVEVNICAgICAgICAgIAorICAgICAgICAgICAgIDEyIFBSSU5UX0lURU0KIAotICA0ICAgICAgICAgIDEzIEJSRUFLX0xPT1AgICAgICAgICAgCisgIDQgICAgICAgICAgMTMgQlJFQUtfTE9PUAogICAgICAgICAgICAgIDE0IEpVTVBfQUJTT0xVVEUgICAgICAgICAgICAzCi0gICAgICAgID4+ICAgMTcgUE9QX0JMT0NLICAgICAgICAgICAKKyAgICAgICAgPj4gICAxNyBQT1BfQkxPQ0sKIAogICA2ICAgICAgICAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgyKQotICAgICAgICAgICAgIDIxIFBSSU5UX0lURU0gICAgICAgICAgCisgICAgICAgICAgICAgMjEgUFJJTlRfSVRFTQogICAgICAgICA+PiAgIDIyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDI1IFJFVFVSTl9WQUxVRSAgICAgICAgCisgICAgICAgICAgICAgMjUgUkVUVVJOX1ZBTFVFCiAKIElmICdhJyBpcyBmYWxzZSwgZXhlY3V0aW9uIHdpbGwganVtcCB0byB0aGUgUE9QX0JMT0NLIGluc3RydWN0aW9uIGF0IG9mZnNldCAxNwogYW5kIHRoZSBjb19sbm90YWIgd2lsbCBjbGFpbSB0aGF0IGV4ZWN1dGlvbiBoYXMgbW92ZWQgdG8gbGluZSA0LCB3aGljaCBpcyB3cm9uZy4KZGlmZiAtLWdpdCBhL09iamVjdHMvbG9uZ29iamVjdC5jIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKaW5kZXggMGNjODUwZS4uYTQ1MzI0MSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9sb25nb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKQEAgLTcyMiw3ICs3MjIsNyBAQAogICAgIGFzc2VydChuZGlnaXRzID09IDAgfHwgdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdICE9IDApOwogICAgIGlmIChuZGlnaXRzID4gMCkgewogICAgICAgICBkaWdpdCBtc2QgPSB2LT5vYl9kaWdpdFtuZGlnaXRzIC0gMV07Ci0gICAgICAgIGlmICgoc2l6ZV90KShuZGlnaXRzIC0gMSkgPiBQWV9TSVpFX01BWCAvIChzaXplX3QpUHlMb25nX1NISUZUKQorICAgICAgICBpZiAoKHNpemVfdCkobmRpZ2l0cyAtIDEpID4gU0laRV9NQVggLyAoc2l6ZV90KVB5TG9uZ19TSElGVCkKICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CiAgICAgICAgIHJlc3VsdCA9IChzaXplX3QpKG5kaWdpdHMgLSAxKSAqIChzaXplX3QpUHlMb25nX1NISUZUOwogICAgICAgICBkbyB7CkBAIC05OTAsMTYgKzk5MCwxMyBAQAogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCiB7CiAjaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZykoUHlfdWludHB0cl90KXApOworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZykodWludHB0cl90KXApOwogI2Vsc2UKIAotI2lmbmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGVycm9yICJQeUxvbmdfRnJvbVZvaWRQdHI6IHNpemVvZih2b2lkKikgPiBzaXplb2YobG9uZyksIGJ1dCBubyBsb25nIGxvbmciCi0jZW5kaWYKICNpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAotIyAgIGVycm9yICJQeUxvbmdfRnJvbVZvaWRQdHI6IHNpemVvZihQWV9MT05HX0xPTkcpIDwgc2l6ZW9mKHZvaWQqKSIKKyMgICBlcnJvciAiUHlMb25nX0Zyb21Wb2lkUHRyOiBzaXplb2YobG9uZyBsb25nKSA8IHNpemVvZih2b2lkKikiCiAjZW5kaWYKLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKFB5X3VpbnRwdHJfdClwKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCh1bnNpZ25lZCBsb25nIGxvbmcpKHVpbnRwdHJfdClwKTsKICNlbmRpZiAvKiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HICovCiAKIH0KQEAgLTEwMTgsMTMgKzEwMTUsMTAgQEAKICAgICAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyh2dik7CiAjZWxzZQogCi0jaWZuZGVmIEhBVkVfTE9OR19MT05HCi0jICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZih2b2lkKikgPiBzaXplb2YobG9uZyksIGJ1dCBubyBsb25nIGxvbmciCi0jZW5kaWYKICNpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YoUFlfTE9OR19MT05HKSA8IHNpemVvZih2b2lkKikiCisjICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZihsb25nIGxvbmcpIDwgc2l6ZW9mKHZvaWQqKSIKICNlbmRpZgotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogCiAgICAgaWYgKFB5TG9uZ19DaGVjayh2dikgJiYgX1B5TG9uZ19TaWduKHZ2KSA8IDApCiAgICAgICAgIHggPSBQeUxvbmdfQXNMb25nTG9uZyh2dik7CkBAIC0xMDM4LDIyICsxMDMyLDIwIEBACiAgICAgcmV0dXJuICh2b2lkICopeDsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KLS8qIEluaXRpYWwgUFlfTE9OR19MT05HIHN1cHBvcnQgYnkgQ2hyaXMgSGVyYm9ydGggKGNocmlzaEBxbnguY29tKSwgbGF0ZXIKKy8qIEluaXRpYWwgbG9uZyBsb25nIHN1cHBvcnQgYnkgQ2hyaXMgSGVyYm9ydGggKGNocmlzaEBxbnguY29tKSwgbGF0ZXIKICAqIHJld3JpdHRlbiB0byB1c2UgdGhlIG5ld2VyIFB5TG9uZ197QXMsRnJvbX1CeXRlQXJyYXkgQVBJLgogICovCiAKLSNkZWZpbmUgUFlfQUJTX0xMT05HX01JTiAoMC0odW5zaWduZWQgUFlfTE9OR19MT05HKVBZX0xMT05HX01JTikKKyNkZWZpbmUgUFlfQUJTX0xMT05HX01JTiAoMC0odW5zaWduZWQgbG9uZyBsb25nKVBZX0xMT05HX01JTikKIAotLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgUFlfTE9OR19MT05HIGludC4gKi8KKy8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIGxvbmcgbG9uZyBpbnQuICovCiAKIFB5T2JqZWN0ICoKLVB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HIGl2YWwpCitQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyBpdmFsKQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYWJzX2l2YWw7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHQ7ICAvKiB1bnNpZ25lZCBzbyA+PiBkb2Vzbid0IHByb3BhZ2F0ZSBzaWduIGJpdCAqLworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhYnNfaXZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdDsgIC8qIHVuc2lnbmVkIHNvID4+IGRvZXNuJ3QgcHJvcGFnYXRlIHNpZ24gYml0ICovCiAgICAgaW50IG5kaWdpdHMgPSAwOwogICAgIGludCBuZWdhdGl2ZSA9IDA7CiAKQEAgLTEwNjEsMTEgKzEwNTMsMTEgQEAKICAgICBpZiAoaXZhbCA8IDApIHsKICAgICAgICAgLyogYXZvaWQgc2lnbmVkIG92ZXJmbG93IG9uIG5lZ2F0aW9uOyAgc2VlIGNvbW1lbnRzCiAgICAgICAgICAgIGluIFB5TG9uZ19Gcm9tTG9uZyBhYm92ZS4gKi8KLSAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgUFlfTE9OR19MT05HKSgtMS1pdmFsKSArIDE7CisgICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoLTEtaXZhbCkgKyAxOwogICAgICAgICBuZWdhdGl2ZSA9IDE7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBhYnNfaXZhbCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpaXZhbDsKKyAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgbG9uZyBsb25nKWl2YWw7CiAgICAgfQogCiAgICAgLyogQ291bnQgdGhlIG51bWJlciBvZiBQeXRob24gZGlnaXRzLgpAQCAtMTA5MCwxOSArMTA4MiwxOSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKil2OwogfQogCi0vKiBDcmVhdGUgYSBuZXcgaW50IG9iamVjdCBmcm9tIGEgQyB1bnNpZ25lZCBQWV9MT05HX0xPTkcgaW50LiAqLworLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgdW5zaWduZWQgbG9uZyBsb25nIGludC4gKi8KIAogUHlPYmplY3QgKgotUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpdmFsKQorUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIGxvbmcgbG9uZyBpdmFsKQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdDsKICAgICBpbnQgbmRpZ2l0cyA9IDA7CiAKICAgICBpZiAoaXZhbCA8IFB5TG9uZ19CQVNFKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWl2YWwpOwogICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgUHl0aG9uIGRpZ2l0cy4gKi8KLSAgICB0ID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylpdmFsOworICAgIHQgPSAodW5zaWduZWQgbG9uZyBsb25nKWl2YWw7CiAgICAgd2hpbGUgKHQpIHsKICAgICAgICAgKytuZGlnaXRzOwogICAgICAgICB0ID4+PSBQeUxvbmdfU0hJRlQ7CkBAIC0xMTkxLDExICsxMTgzLDExIEBACiAvKiBHZXQgYSBDIGxvbmcgbG9uZyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4KICAgIF9faW50X18gbWV0aG9kLiAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLwogCi1QWV9MT05HX0xPTkcKK2xvbmcgbG9uZwogUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICBQWV9MT05HX0xPTkcgYnl0ZXM7CisgICAgbG9uZyBsb25nIGJ5dGVzOwogICAgIGludCByZXM7CiAgICAgaW50IGRvX2RlY3JlZiA9IDA7IC8qIGlmIG5iX2ludCB3YXMgY2FsbGVkICovCiAKQEAgLTEyMzMsMzAgKzEyMjUsMzAgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgIH0KIAotICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgUFlfTE9OR19MT05HIGluID8gOiBleHByZXNzaW9ucyAqLworICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgbG9uZyBsb25nIGluID8gOiBleHByZXNzaW9ucyAqLwogICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gKFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuIChsb25nIGxvbmcpLTE7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLS8qIEdldCBhIEMgdW5zaWduZWQgUFlfTE9OR19MT05HIGludCBmcm9tIGFuIGludCBvYmplY3QuCisvKiBHZXQgYSBDIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0LgogICAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLwogCi11bnNpZ25lZCBQWV9MT05HX0xPTkcKK3Vuc2lnbmVkIGxvbmcgbG9uZwogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqdnYpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBieXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXM7CiAgICAgaW50IHJlczsKIAogICAgIGlmICh2diA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpLTE7CiAgICAgfQogICAgIGlmICghUHlMb25nX0NoZWNrKHZ2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYW4gaW50ZWdlciBpcyByZXF1aXJlZCIpOwotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpLTE7CiAgICAgfQogCiAgICAgdiA9IChQeUxvbmdPYmplY3QqKXZ2OwpAQCAtMTI2OCw5ICsxMjYwLDkgQEAKICAgICByZXMgPSBfUHlMb25nX0FzQnl0ZUFycmF5KChQeUxvbmdPYmplY3QgKil2diwgKHVuc2lnbmVkIGNoYXIgKikmYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFT0ZfTE9OR19MT05HLCBQWV9MSVRUTEVfRU5ESUFOLCAwKTsKIAotICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgUFlfTE9OR19MT05HIGluID8gOiBleHByZXNzaW9ucyAqLworICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgbG9uZyBsb25nIGluID8gOiBleHByZXNzaW9ucyAqLwogICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylyZXM7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKXJlczsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBieXRlczsKIH0KQEAgLTEyNzgsMTEgKzEyNzAsMTEgQEAKIC8qIEdldCBhIEMgdW5zaWduZWQgbG9uZyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0LCBpZ25vcmluZyB0aGUgaGlnaCBiaXRzLgogICAgUmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvciBjb25kaXRpb24gaWYgYW4gZXJyb3Igb2NjdXJzLiAqLwogCi1zdGF0aWMgdW5zaWduZWQgUFlfTE9OR19MT05HCitzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nCiBfUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKnZ2KQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHNpZ247CiAKQEAgLTEzMDgsMTEgKzEzMDAsMTEgQEAKICAgICByZXR1cm4geCAqIHNpZ247CiB9CiAKLXVuc2lnbmVkIFBZX0xPTkdfTE9ORwordW5zaWduZWQgbG9uZyBsb25nCiBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlMb25nT2JqZWN0ICpsbzsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CiAKICAgICBpZiAob3AgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKQEAgLTEzMjUsNyArMTMxNyw3IEBACiAKICAgICBsbyA9IF9QeUxvbmdfRnJvbU5iSW50KG9wKTsKICAgICBpZiAobG8gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogCiAgICAgdmFsID0gX1B5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKChQeU9iamVjdCAqKWxvKTsKICAgICBQeV9ERUNSRUYobG8pOwpAQCAtMTM0MiwxMyArMTMzNCwxMyBAQAogICAgSW4gdGhpcyBjYXNlICpvdmVyZmxvdyB3aWxsIGJlIDAuCiAqLwogCi1QWV9MT05HX0xPTkcKK2xvbmcgbG9uZwogUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqdnYsIGludCAqb3ZlcmZsb3cpCiB7CiAgICAgLyogVGhpcyB2ZXJzaW9uIGJ5IFRpbSBQZXRlcnMgKi8KICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHgsIHByZXY7Ci0gICAgUFlfTE9OR19MT05HIHJlczsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeCwgcHJldjsKKyAgICBsb25nIGxvbmcgcmVzOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBpbnQgc2lnbjsKICAgICBpbnQgZG9fZGVjcmVmID0gMDsgLyogaWYgbmJfaW50IHdhcyBjYWxsZWQgKi8KQEAgLTE0MDAsOCArMTM5Miw4IEBACiAgICAgICAgIC8qIEhhdmVuJ3QgbG9zdCBhbnkgYml0cywgYnV0IGNhc3RpbmcgdG8gbG9uZyByZXF1aXJlcyBleHRyYQogICAgICAgICAgKiBjYXJlIChzZWUgY29tbWVudCBhYm92ZSkuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoeCA8PSAodW5zaWduZWQgUFlfTE9OR19MT05HKVBZX0xMT05HX01BWCkgewotICAgICAgICAgICAgcmVzID0gKFBZX0xPTkdfTE9ORyl4ICogc2lnbjsKKyAgICAgICAgaWYgKHggPD0gKHVuc2lnbmVkIGxvbmcgbG9uZylQWV9MTE9OR19NQVgpIHsKKyAgICAgICAgICAgIHJlcyA9IChsb25nIGxvbmcpeCAqIHNpZ247CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoc2lnbiA8IDAgJiYgeCA9PSBQWV9BQlNfTExPTkdfTUlOKSB7CiAgICAgICAgICAgICByZXMgPSBQWV9MTE9OR19NSU47CkBAIC0xNDE4LDggKzE0MTAsNiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwotCiAjZGVmaW5lIENIRUNLX0JJTk9QKHYsdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSB8fCAhUHlMb25nX0NoZWNrKHcpKSAgICAgICBcCkBAIC0xNTgzLDEzICsxNTczLDE2IEBACiBzdGF0aWMgaW50CiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKFB5T2JqZWN0ICphYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUJ5dGVzV3JpdGVyICpieXRlc193cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipieXRlc19zdHIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICpzY3JhdGNoLCAqYTsKLSAgICBQeU9iamVjdCAqc3RyOworICAgIFB5T2JqZWN0ICpzdHIgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgc3RybGVuLCBzaXplX2EsIGksIGo7CiAgICAgZGlnaXQgKnBvdXQsICpwaW4sIHJlbSwgdGVucG93OwogICAgIGludCBuZWdhdGl2ZTsKKyAgICBpbnQgZDsKICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CiAKICAgICBhID0gKFB5TG9uZ09iamVjdCAqKWFhOwpAQCAtMTYwNywxNSArMTYwMCwxNyBAQAogCiAgICAgICAgQnV0IGxvZzIoYSkgPCBzaXplX2EgKiBQeUxvbmdfU0hJRlQsIGFuZAogICAgICAgIGxvZzIoX1B5TG9uZ19ERUNJTUFMX0JBU0UpID0gbG9nMigxMCkgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IDMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVAorCisgICAgICAgICBzaXplX2EgKiBQeUxvbmdfU0hJRlQgLyAoMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKSA9CisgICAgICAgICAgICAgc2l6ZV9hICsgc2l6ZV9hIC8gZCA8IHNpemVfYSArIHNpemVfYSAvIGZsb29yKGQpLAorICAgICAgIHdoZXJlIGQgPSAoMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKSAvCisgICAgICAgICAgICAgICAgIChQeUxvbmdfU0hJRlQgLSAzLjMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpCiAgICAgKi8KLSAgICBpZiAoc2l6ZV9hID4gUFlfU1NJWkVfVF9NQVggLyBQeUxvbmdfU0hJRlQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW50IHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiB0aGUgZXhwcmVzc2lvbiBzaXplX2EgKiBQeUxvbmdfU0hJRlQgaXMgbm93IHNhZmUgZnJvbSBvdmVyZmxvdyAqLwotICAgIHNpemUgPSAxICsgc2l6ZV9hICogUHlMb25nX1NISUZUIC8gKDMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpOworICAgIGQgPSAoMzMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpIC8KKyAgICAgICAgKDEwICogUHlMb25nX1NISUZUIC0gMzMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpOworICAgIGFzc2VydChzaXplX2EgPCBQWV9TU0laRV9UX01BWC8yKTsKKyAgICBzaXplID0gMSArIHNpemVfYSArIHNpemVfYSAvIGQ7CiAgICAgc2NyYXRjaCA9IF9QeUxvbmdfTmV3KHNpemUpOwogICAgIGlmIChzY3JhdGNoID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTE2NjMsNyArMTY1OCwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGtpbmQgPSB3cml0ZXItPmtpbmQ7Ci0gICAgICAgIHN0ciA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAqYnl0ZXNfc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShieXRlc193cml0ZXIsICpieXRlc19zdHIsIHN0cmxlbik7CisgICAgICAgIGlmICgqYnl0ZXNfc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgc3RyID0gUHlVbmljb2RlX05ldyhzdHJsZW4sICc5Jyk7CkBAIC0xNjc0LDEzICsxNjc1LDggQEAKICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CiAgICAgfQogCi0jZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBXUklURV9ESUdJVFMocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseSAgICAgICAgICAgIFwKICAgICAgICAgICAgX1B5TG9uZ19ERUNJTUFMX1NISUZUIGRpZ2l0cyBlYWNoICovICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTcwMCw2ICsxNjk2LDE2IEBACiAgICAgICAgIC8qIGFuZCBzaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBXUklURV9VTklDT0RFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBXUklURV9ESUdJVFMocCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIC8qIGNoZWNrIHdlJ3ZlIGNvdW50ZWQgY29ycmVjdGx5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3MDksMjUgKzE3MTUsMzQgQEAKICAgICB9IHdoaWxlICgwKQogCiAgICAgLyogZmlsbCB0aGUgc3RyaW5nIHJpZ2h0LXRvLWxlZnQgKi8KLSAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgY2hhciAqcCA9ICpieXRlc19zdHIgKyBzdHJsZW47CisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsKKyAgICAgICAgYXNzZXJ0KHAgPT0gKmJ5dGVzX3N0cik7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMSAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzEpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9CiAgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgewogICAgICAgICBQeV9VQ1MyICpwOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzIpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfVUNTNCAqcDsKICAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1M0KTsKICAgICB9CiAjdW5kZWYgV1JJVEVfRElHSVRTCisjdW5kZWYgV1JJVEVfVU5JQ09ERV9ESUdJVFMKIAogICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKICAgICBpZiAod3JpdGVyKSB7CiAgICAgICAgIHdyaXRlci0+cG9zICs9IHN0cmxlbjsKICAgICB9CisgICAgZWxzZSBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgICgqYnl0ZXNfc3RyKSArPSBzdHJsZW47CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOwogICAgICAgICAqcF9vdXRwdXQgPSAoUHlPYmplY3QgKilzdHI7CkBAIC0xNzM5LDcgKzE3NTQsNyBAQAogbG9uZ190b19kZWNpbWFsX3N0cmluZyhQeU9iamVjdCAqYWEpCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoYWEsICZ2LCBOVUxMKSA9PSAtMSkKKyAgICBpZiAobG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChhYSwgJnYsIE5VTEwsIE5VTEwsIE5VTEwpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gdjsKIH0KQEAgLTE3NTEsMTAgKzE3NjYsMTEgQEAKIAogc3RhdGljIGludAogbG9uZ19mb3JtYXRfYmluYXJ5KFB5T2JqZWN0ICphYSwgaW50IGJhc2UsIGludCBhbHRlcm5hdGUsCi0gICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICBfUHlCeXRlc1dyaXRlciAqYnl0ZXNfd3JpdGVyLCBjaGFyICoqYnl0ZXNfc3RyKQogewogICAgIFB5TG9uZ09iamVjdCAqYSA9IChQeUxvbmdPYmplY3QgKilhYTsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBQeU9iamVjdCAqdiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzejsKICAgICBQeV9zc2l6ZV90IHNpemVfYTsKICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CkBAIC0xODExLDcgKzE4MjcsMTEgQEAKICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN6LCAneCcpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOwotICAgICAgICB2ID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgICpieXRlc19zdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKGJ5dGVzX3dyaXRlciwgKmJ5dGVzX3N0ciwgc3opOworICAgICAgICBpZiAoKmJ5dGVzX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcoc3osICd4Jyk7CkBAIC0xODIwLDEzICsxODQwLDggQEAKICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHYpOwogICAgIH0KIAotI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBXUklURV9ESUdJVFMocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN6OyBcCi0gICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpICsgc3o7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzaXplX2EgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAqLS1wID0gJzAnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xODYxLDMwICsxODc2LDUwIEBACiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChuZWdhdGl2ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAqLS1wID0gJy0nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBXUklURV9VTklDT0RFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN6OyBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpICsgc3o7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBhc3NlcnQocCA9PSAoKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zKSk7IFwKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGFzc2VydChwID09IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSk7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi0gICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgIGNoYXIgKnAgPSAqYnl0ZXNfc3RyICsgc3o7CisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsKKyAgICAgICAgYXNzZXJ0KHAgPT0gKmJ5dGVzX3N0cik7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMSAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzEpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9CiAgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgewogICAgICAgICBQeV9VQ1MyICpwOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzIpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfVUNTNCAqcDsKICAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1M0KTsKICAgICB9CiAjdW5kZWYgV1JJVEVfRElHSVRTCisjdW5kZWYgV1JJVEVfVU5JQ09ERV9ESUdJVFMKIAogICAgIGlmICh3cml0ZXIpIHsKICAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3o7CiAgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAoKmJ5dGVzX3N0cikgKz0gc3o7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKICAgICAgICAgKnBfb3V0cHV0ID0gdjsKQEAgLTE4OTgsOSArMTkzMyw5IEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBpbnQgZXJyOwogICAgIGlmIChiYXNlID09IDEwKQotICAgICAgICBlcnIgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgJnN0ciwgTlVMTCk7CisgICAgICAgIGVyciA9IGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCAmc3RyLCBOVUxMLCBOVUxMLCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIGVyciA9IGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIDEsICZzdHIsIE5VTEwpOworICAgICAgICBlcnIgPSBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCAxLCAmc3RyLCBOVUxMLCBOVUxMLCBOVUxMKTsKICAgICBpZiAoZXJyID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gc3RyOwpAQCAtMTkxMiw5ICsxOTQ3LDMxIEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSkKIHsKICAgICBpZiAoYmFzZSA9PSAxMCkKLSAgICAgICAgcmV0dXJuIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCB3cml0ZXIpOworICAgICAgICByZXR1cm4gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosIE5VTEwsIHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgYWx0ZXJuYXRlLCBOVUxMLCB3cml0ZXIpOworICAgICAgICByZXR1cm4gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgYWx0ZXJuYXRlLCBOVUxMLCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Cit9CisKK2NoYXIqCitfUHlMb25nX0Zvcm1hdEJ5dGVzV3JpdGVyKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCit7CisgICAgY2hhciAqc3RyMjsKKyAgICBpbnQgcmVzOworICAgIHN0cjIgPSBzdHI7CisgICAgaWYgKGJhc2UgPT0gMTApCisgICAgICAgIHJlcyA9IGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlciwgJnN0cjIpOworICAgIGVsc2UKKyAgICAgICAgcmVzID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgYWx0ZXJuYXRlLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLCAmc3RyMik7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChzdHIyICE9IE5VTEwpOworICAgIHJldHVybiBzdHIyOwogfQogCiAvKiBUYWJsZSBvZiBkaWdpdCB2YWx1ZXMgZm9yIDgtYml0IHN0cmluZyAtPiBpbnRlZ2VyIGNvbnZlcnNpb24uCkBAIC0xOTQ4LDEyICsyMDA1LDE4IEBACiAgKiBub24tZGlnaXQgKHdoaWNoIG1heSBiZSAqc3RyISkuICBBIG5vcm1hbGl6ZWQgaW50IGlzIHJldHVybmVkLgogICogVGhlIHBvaW50IHRvIHRoaXMgcm91dGluZSBpcyB0aGF0IGl0IHRha2VzIHRpbWUgbGluZWFyIGluIHRoZSBudW1iZXIgb2YKICAqIHN0cmluZyBjaGFyYWN0ZXJzLgorICoKKyAqIFJldHVybiB2YWx1ZXM6CisgKiAgIC0xIG9uIHN5bnRheCBlcnJvciAoZXhjZXB0aW9uIG5lZWRzIHRvIGJlIHNldCwgKnJlcyBpcyB1bnRvdWNoZWQpCisgKiAgIDAgZWxzZSAoZXhjZXB0aW9uIG1heSBiZSBzZXQsIGluIHRoYXQgY2FzZSAqcmVzIGlzIHNldCB0byBOVUxMKQogICovCi1zdGF0aWMgUHlMb25nT2JqZWN0ICoKLWxvbmdfZnJvbV9iaW5hcnlfYmFzZShjb25zdCBjaGFyICoqc3RyLCBpbnQgYmFzZSkKK3N0YXRpYyBpbnQKK2xvbmdfZnJvbV9iaW5hcnlfYmFzZShjb25zdCBjaGFyICoqc3RyLCBpbnQgYmFzZSwgUHlMb25nT2JqZWN0ICoqcmVzKQogewogICAgIGNvbnN0IGNoYXIgKnAgPSAqc3RyOwogICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gcDsKKyAgICBjaGFyIHByZXYgPSAwOworICAgIGludCBkaWdpdHMgPSAwOwogICAgIGludCBiaXRzX3Blcl9jaGFyOwogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeUxvbmdPYmplY3QgKno7CkBAIC0xOTYzLDIzICsyMDI2LDQzIEBACiAKICAgICBhc3NlcnQoYmFzZSA+PSAyICYmIGJhc2UgPD0gMzIgJiYgKGJhc2UgJiAoYmFzZSAtIDEpKSA9PSAwKTsKICAgICBuID0gYmFzZTsKLSAgICBmb3IgKGJpdHNfcGVyX2NoYXIgPSAtMTsgbjsgKytiaXRzX3Blcl9jaGFyKQorICAgIGZvciAoYml0c19wZXJfY2hhciA9IC0xOyBuOyArK2JpdHNfcGVyX2NoYXIpIHsKICAgICAgICAgbiA+Pj0gMTsKLSAgICAvKiBuIDwtIHRvdGFsICMgb2YgYml0cyBuZWVkZWQsIHdoaWxlIHNldHRpbmcgcCB0byBlbmQtb2Ytc3RyaW5nICovCi0gICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldIDwgYmFzZSkKKyAgICB9CisgICAgLyogY291bnQgZGlnaXRzIGFuZCBzZXQgcCB0byBlbmQtb2Ytc3RyaW5nICovCisgICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldIDwgYmFzZSB8fCAqcCA9PSAnXycpIHsKKyAgICAgICAgaWYgKCpwID09ICdfJykgeworICAgICAgICAgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgKnN0ciA9IHAgLSAxOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICsrZGlnaXRzOworICAgICAgICB9CisgICAgICAgIHByZXYgPSAqcDsKICAgICAgICAgKytwOworICAgIH0KKyAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgLyogVHJhaWxpbmcgdW5kZXJzY29yZSBub3QgYWxsb3dlZC4gKi8KKyAgICAgICAgKnN0ciA9IHAgLSAxOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgKnN0ciA9IHA7CiAgICAgLyogbiA8LSAjIG9mIFB5dGhvbiBkaWdpdHMgbmVlZGVkLCA9IGNlaWxpbmcobi9QeUxvbmdfU0hJRlQpLiAqLwotICAgIG4gPSAocCAtIHN0YXJ0KSAqIGJpdHNfcGVyX2NoYXIgKyBQeUxvbmdfU0hJRlQgLSAxOworICAgIG4gPSBkaWdpdHMgKiBiaXRzX3Blcl9jaGFyICsgUHlMb25nX1NISUZUIC0gMTsKICAgICBpZiAobiAvIGJpdHNfcGVyX2NoYXIgPCBwIC0gc3RhcnQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IHN0cmluZyB0b28gbGFyZ2UgdG8gY29udmVydCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgKnJlcyA9IE5VTEw7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBuID0gbiAvIFB5TG9uZ19TSElGVDsKICAgICB6ID0gX1B5TG9uZ19OZXcobik7Ci0gICAgaWYgKHogPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHogPT0gTlVMTCkgeworICAgICAgICAqcmVzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIC8qIFJlYWQgc3RyaW5nIGZyb20gcmlnaHQsIGFuZCBmaWxsIGluIGludCBmcm9tIGxlZnQ7IGkuZS4sCiAgICAgICogZnJvbSBsZWFzdCB0byBtb3N0IHNpZ25pZmljYW50IGluIGJvdGguCiAgICAgICovCkBAIC0xOTg3LDcgKzIwNzAsMTEgQEAKICAgICBiaXRzX2luX2FjY3VtID0gMDsKICAgICBwZGlnaXQgPSB6LT5vYl9kaWdpdDsKICAgICB3aGlsZSAoLS1wID49IHN0YXJ0KSB7Ci0gICAgICAgIGludCBrID0gKGludClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXTsKKyAgICAgICAgaW50IGs7CisgICAgICAgIGlmICgqcCA9PSAnXycpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGsgPSAoaW50KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldOwogICAgICAgICBhc3NlcnQoayA+PSAwICYmIGsgPCBiYXNlKTsKICAgICAgICAgYWNjdW0gfD0gKHR3b2RpZ2l0cylrIDw8IGJpdHNfaW5fYWNjdW07CiAgICAgICAgIGJpdHNfaW5fYWNjdW0gKz0gYml0c19wZXJfY2hhcjsKQEAgLTIwMDYsNyArMjA5Myw4IEBACiAgICAgfQogICAgIHdoaWxlIChwZGlnaXQgLSB6LT5vYl9kaWdpdCA8IG4pCiAgICAgICAgICpwZGlnaXQrKyA9IDA7Ci0gICAgcmV0dXJuIGxvbmdfbm9ybWFsaXplKHopOworICAgICpyZXMgPSBsb25nX25vcm1hbGl6ZSh6KTsKKyAgICByZXR1cm4gMDsKIH0KIAogLyogUGFyc2VzIGFuIGludCBmcm9tIGEgYnl0ZXN0cmluZy4gTGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSB3aWxsIGJlCkBAIC0yMDMxLDIzICsyMTE5LDI5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50KCkgYXJnIDIgbXVzdCBiZSA+PSAyIGFuZCA8PSAzNiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgd2hpbGUgKCpzdHIgIT0gJ1wwJyAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkKKyAgICB3aGlsZSAoKnN0ciAhPSAnXDAnICYmIFB5X0lTU1BBQ0UoUHlfQ0hBUk1BU0soKnN0cikpKSB7CiAgICAgICAgIHN0cisrOwotICAgIGlmICgqc3RyID09ICcrJykKKyAgICB9CisgICAgaWYgKCpzdHIgPT0gJysnKSB7CiAgICAgICAgICsrc3RyOworICAgIH0KICAgICBlbHNlIGlmICgqc3RyID09ICctJykgewogICAgICAgICArK3N0cjsKICAgICAgICAgc2lnbiA9IC0xOwogICAgIH0KICAgICBpZiAoYmFzZSA9PSAwKSB7Ci0gICAgICAgIGlmIChzdHJbMF0gIT0gJzAnKQorICAgICAgICBpZiAoc3RyWzBdICE9ICcwJykgewogICAgICAgICAgICAgYmFzZSA9IDEwOwotICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ3gnIHx8IHN0clsxXSA9PSAnWCcpCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKSB7CiAgICAgICAgICAgICBiYXNlID0gMTY7Ci0gICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAnbycgfHwgc3RyWzFdID09ICdPJykKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ28nIHx8IHN0clsxXSA9PSAnTycpIHsKICAgICAgICAgICAgIGJhc2UgPSA4OwotICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ2InIHx8IHN0clsxXSA9PSAnQicpCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKSB7CiAgICAgICAgICAgICBiYXNlID0gMjsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qICJvbGQiIChDLXN0eWxlKSBvY3RhbCBsaXRlcmFsLCBub3cgaW52YWxpZC4KICAgICAgICAgICAgICAgIGl0IG1pZ2h0IHN0aWxsIGJlIHplcm8gdGhvdWdoICovCkBAIC0yMDU4LDEyICsyMTUyLDI2IEBACiAgICAgaWYgKHN0clswXSA9PSAnMCcgJiYKICAgICAgICAgKChiYXNlID09IDE2ICYmIChzdHJbMV0gPT0gJ3gnIHx8IHN0clsxXSA9PSAnWCcpKSB8fAogICAgICAgICAgKGJhc2UgPT0gOCAgJiYgKHN0clsxXSA9PSAnbycgfHwgc3RyWzFdID09ICdPJykpIHx8Ci0gICAgICAgICAoYmFzZSA9PSAyICAmJiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKSkpKQorICAgICAgICAgKGJhc2UgPT0gMiAgJiYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykpKSkgewogICAgICAgICBzdHIgKz0gMjsKKyAgICAgICAgLyogT25lIHVuZGVyc2NvcmUgYWxsb3dlZCBoZXJlLiAqLworICAgICAgICBpZiAoKnN0ciA9PSAnXycpIHsKKyAgICAgICAgICAgICsrc3RyOworICAgICAgICB9CisgICAgfQorICAgIGlmIChzdHJbMF0gPT0gJ18nKSB7CisJICAgIC8qIE1heSBub3Qgc3RhcnQgd2l0aCB1bmRlcnNjb3Jlcy4gKi8KKwkgICAgZ290byBvbkVycm9yOworICAgIH0KIAogICAgIHN0YXJ0ID0gc3RyOwotICAgIGlmICgoYmFzZSAmIChiYXNlIC0gMSkpID09IDApCi0gICAgICAgIHogPSBsb25nX2Zyb21fYmluYXJ5X2Jhc2UoJnN0ciwgYmFzZSk7CisgICAgaWYgKChiYXNlICYgKGJhc2UgLSAxKSkgPT0gMCkgeworICAgICAgICBpbnQgcmVzID0gbG9uZ19mcm9tX2JpbmFyeV9iYXNlKCZzdHIsIGJhc2UsICZ6KTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIC8qIFN5bnRheCBlcnJvci4gKi8KKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgIH0KICAgICBlbHNlIHsKIC8qKioKIEJpbmFyeSBiYXNlcyBjYW4gYmUgY29udmVydGVkIGluIHRpbWUgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgZGlnaXRzLCBiZWNhdXNlCkBAIC0yMTUyLDExICsyMjYwLDEzIEBACiAqKiovCiAgICAgICAgIHR3b2RpZ2l0cyBjOyAgICAgICAgICAgLyogY3VycmVudCBpbnB1dCBjaGFyYWN0ZXIgKi8KICAgICAgICAgUHlfc3NpemVfdCBzaXplX3o7CisgICAgICAgIGludCBkaWdpdHMgPSAwOwogICAgICAgICBpbnQgaTsKICAgICAgICAgaW50IGNvbnZ3aWR0aDsKICAgICAgICAgdHdvZGlnaXRzIGNvbnZtdWx0bWF4LCBjb252bXVsdDsKICAgICAgICAgZGlnaXQgKnB6LCAqcHpzdG9wOwotICAgICAgICBjb25zdCBjaGFyKiBzY2FuOworICAgICAgICBjb25zdCBjaGFyICpzY2FuLCAqbGFzdGRpZ2l0OworICAgICAgICBjaGFyIHByZXYgPSAwOwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgbG9nX2Jhc2VfQkFTRVszN10gPSB7MC4wZTAsfTsKICAgICAgICAgc3RhdGljIGludCBjb252d2lkdGhfYmFzZVszN10gPSB7MCx9OwpAQCAtMjE3MCw4ICsyMjgwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKChkb3VibGUpUHlMb25nX0JBU0UpKTsKICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICB0d29kaWdpdHMgbmV4dCA9IGNvbnZtYXggKiBiYXNlOwotICAgICAgICAgICAgICAgIGlmIChuZXh0ID4gUHlMb25nX0JBU0UpCisgICAgICAgICAgICAgICAgaWYgKG5leHQgPiBQeUxvbmdfQkFTRSkgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udm1heCA9IG5leHQ7CiAgICAgICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgfQpAQCAtMjE4MiwyMSArMjI5Myw0MyBAQAogCiAgICAgICAgIC8qIEZpbmQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgb2YgbnVtZXJpYyBjaGFyYWN0ZXJzLiAqLwogICAgICAgICBzY2FuID0gc3RyOwotICAgICAgICB3aGlsZSAoX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpzY2FuKV0gPCBiYXNlKQorICAgICAgICBsYXN0ZGlnaXQgPSBzdHI7CisKKyAgICAgICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc2NhbildIDwgYmFzZSB8fCAqc2NhbiA9PSAnXycpIHsKKyAgICAgICAgICAgIGlmICgqc2NhbiA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogT25seSBvbmUgdW5kZXJzY29yZSBhbGxvd2VkLiAqLworICAgICAgICAgICAgICAgICAgICBzdHIgPSBsYXN0ZGlnaXQgKyAxOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgKytkaWdpdHM7CisgICAgICAgICAgICAgICAgbGFzdGRpZ2l0ID0gc2NhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXYgPSAqc2NhbjsKICAgICAgICAgICAgICsrc2NhbjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgICAgIC8qIFRyYWlsaW5nIHVuZGVyc2NvcmUgbm90IGFsbG93ZWQuICovCisgICAgICAgICAgICAvKiBTZXQgZXJyb3IgcG9pbnRlciB0byBmaXJzdCB1bmRlcnNjb3JlLiAqLworICAgICAgICAgICAgc3RyID0gbGFzdGRpZ2l0ICsgMTsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIENyZWF0ZSBhbiBpbnQgb2JqZWN0IHRoYXQgY2FuIGNvbnRhaW4gdGhlIGxhcmdlc3QgcG9zc2libGUKICAgICAgICAgICogaW50ZWdlciB3aXRoIHRoaXMgYmFzZSBhbmQgbGVuZ3RoLiAgTm90ZSB0aGF0IHRoZXJlJ3Mgbm8KICAgICAgICAgICogbmVlZCB0byBpbml0aWFsaXplIHotPm9iX2RpZ2l0IC0tIG5vIHNsb3QgaXMgcmVhZCB1cCBiZWZvcmUKICAgICAgICAgICogYmVpbmcgc3RvcmVkIGludG8uCiAgICAgICAgICAqLwotICAgICAgICBzaXplX3ogPSAoUHlfc3NpemVfdCkoKHNjYW4gLSBzdHIpICogbG9nX2Jhc2VfQkFTRVtiYXNlXSkgKyAxOworICAgICAgICBzaXplX3ogPSAoUHlfc3NpemVfdCkoZGlnaXRzICogbG9nX2Jhc2VfQkFTRVtiYXNlXSkgKyAxOwogICAgICAgICAvKiBVbmNvbW1lbnQgbmV4dCBsaW5lIHRvIHRlc3QgZXhjZWVkaW5nbHkgcmFyZSBjb3B5IGNvZGUgKi8KICAgICAgICAgLyogc2l6ZV96ID0gMTsgKi8KICAgICAgICAgYXNzZXJ0KHNpemVfeiA+IDApOwogICAgICAgICB6ID0gX1B5TG9uZ19OZXcoc2l6ZV96KTsKLSAgICAgICAgaWYgKHogPT0gTlVMTCkKKyAgICAgICAgaWYgKHogPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgUHlfU0laRSh6KSA9IDA7CiAKICAgICAgICAgLyogYGNvbnZ3aWR0aGAgY29uc2VjdXRpdmUgaW5wdXQgZGlnaXRzIGFyZSB0cmVhdGVkIGFzIGEgc2luZ2xlCkBAIC0yMjA3LDkgKzIzNDAsMTcgQEAKIAogICAgICAgICAvKiBXb3JrIDstKSAqLwogICAgICAgICB3aGlsZSAoc3RyIDwgc2NhbikgeworICAgICAgICAgICAgaWYgKCpzdHIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgc3RyKys7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBncmFiIHVwIHRvIGNvbnZ3aWR0aCBkaWdpdHMgZnJvbSB0aGUgaW5wdXQgc3RyaW5nICovCiAgICAgICAgICAgICBjID0gKGRpZ2l0KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc3RyKyspXTsKLSAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBjb252d2lkdGggJiYgc3RyICE9IHNjYW47ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBjb252d2lkdGggJiYgc3RyICE9IHNjYW47ICsrc3RyKSB7CisgICAgICAgICAgICAgICAgaWYgKCpzdHIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgYyA9ICh0d29kaWdpdHMpKGMgKiAgYmFzZSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpzdHIpXSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGMgPCBQeUxvbmdfQkFTRSk7CkBAIC0yMjIxLDggKzIzNjIsOSBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoaSAhPSBjb252d2lkdGgpIHsKICAgICAgICAgICAgICAgICBjb252bXVsdCA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgZm9yICggOyBpID4gMTsgLS1pKQorICAgICAgICAgICAgICAgIGZvciAoIDsgaSA+IDE7IC0taSkgewogICAgICAgICAgICAgICAgICAgICBjb252bXVsdCAqPSBiYXNlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogTXVsdGlwbHkgeiBieSBjb252bXVsdCwgYW5kIGFkZCBjLiAqLwpAQCAtMjI2MCw0MSArMjQwMiw1MSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGlmICh6ID09IE5VTEwpCisgICAgaWYgKHogPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKGVycm9yX2lmX25vbnplcm8pIHsKICAgICAgICAgLyogcmVzZXQgdGhlIGJhc2UgdG8gMCwgZWxzZSB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UKICAgICAgICAgICAgZG9lc24ndCBtYWtlIHRvbyBtdWNoIHNlbnNlICovCiAgICAgICAgIGJhc2UgPSAwOwotICAgICAgICBpZiAoUHlfU0laRSh6KSAhPSAwKQorICAgICAgICBpZiAoUHlfU0laRSh6KSAhPSAwKSB7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KICAgICAgICAgLyogdGhlcmUgbWlnaHQgc3RpbGwgYmUgb3RoZXIgcHJvYmxlbXMsIHRoZXJlZm9yZSBiYXNlCiAgICAgICAgICAgIHJlbWFpbnMgemVybyBoZXJlIGZvciB0aGUgc2FtZSByZWFzb24gKi8KICAgICB9Ci0gICAgaWYgKHN0ciA9PSBzdGFydCkKKyAgICBpZiAoc3RyID09IHN0YXJ0KSB7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoc2lnbiA8IDApCisgICAgfQorICAgIGlmIChzaWduIDwgMCkgewogICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKLSAgICB3aGlsZSAoKnN0ciAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkKKyAgICB9CisgICAgd2hpbGUgKCpzdHIgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpIHsKICAgICAgICAgc3RyKys7Ci0gICAgaWYgKCpzdHIgIT0gJ1wwJykKKyAgICB9CisgICAgaWYgKCpzdHIgIT0gJ1wwJykgewogICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogICAgIGxvbmdfbm9ybWFsaXplKHopOwogICAgIHogPSBtYXliZV9zbWFsbF9sb25nKHopOwotICAgIGlmICh6ID09IE5VTEwpCisgICAgaWYgKHogPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocGVuZCAhPSBOVUxMKQorICAgIH0KKyAgICBpZiAocGVuZCAhPSBOVUxMKSB7CiAgICAgICAgICpwZW5kID0gKGNoYXIgKilzdHI7CisgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKikgejsKIAogICBvbkVycm9yOgotICAgIGlmIChwZW5kICE9IE5VTEwpCisgICAgaWYgKHBlbmQgIT0gTlVMTCkgewogICAgICAgICAqcGVuZCA9IChjaGFyICopc3RyOworICAgIH0KICAgICBQeV9YREVDUkVGKHopOwogICAgIHNsZW4gPSBzdHJsZW4ob3JpZ19zdHIpIDwgMjAwID8gc3RybGVuKG9yaWdfc3RyKSA6IDIwMDsKICAgICBzdHJvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUob3JpZ19zdHIsIHNsZW4pOwotICAgIGlmIChzdHJvYmogPT0gTlVMTCkKKyAgICBpZiAoc3Ryb2JqID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAiaW52YWxpZCBsaXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgJWQ6ICUuMjAwUiIsCiAgICAgICAgICAgICAgICAgIGJhc2UsIHN0cm9iaik7CkBAIC0yMzk1LDggKzI1NDcsMTEgQEAKICAgICAgICAgKnBkaXYgPSAoUHlMb25nT2JqZWN0KilQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgICAgIGlmICgqcGRpdiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeV9JTkNSRUYoYSk7Ci0gICAgICAgICpwcmVtID0gKFB5TG9uZ09iamVjdCAqKSBhOworICAgICAgICAqcHJlbSA9IChQeUxvbmdPYmplY3QgKilsb25nX2xvbmcoKFB5T2JqZWN0ICopYSk7CisgICAgICAgIGlmICgqcHJlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9DTEVBUigqcGRpdik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChzaXplX2IgPT0gMSkgewpAQCAtMjcwNiw2ICsyODYxLDEzIEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CiAgICAgICAgIHJldHVybiAtMS4wOwogICAgIH0KKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUodikpIDw9IDEpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoOyBzaW5nbGUgZGlnaXQgbG9uZyAoMzEgYml0cykgd2lsbCBjYXN0IHNhZmVseQorICAgICAgICAgICB0byBkb3VibGUuICBUaGlzIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIEZQL2xvbmcgb3BlcmF0aW9ucworICAgICAgICAgICBieSAyMCUuCisgICAgICAgICovCisgICAgICAgIHJldHVybiAoZG91YmxlKU1FRElVTV9WQUxVRSgoUHlMb25nT2JqZWN0ICopdik7CisgICAgfQogICAgIHggPSBfUHlMb25nX0ZyZXhwKChQeUxvbmdPYmplY3QgKil2LCAmZXhwb25lbnQpOwogICAgIGlmICgoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHx8IGV4cG9uZW50ID4gREJMX01BWF9FWFApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCkBAIC0yOTMwLDkgKzMwOTIsNyBAQAogICAgIH0KICAgICBhc3NlcnQoYm9ycm93ID09IDApOwogICAgIGlmIChzaWduIDwgMCkgewotICAgICAgICBfUHlMb25nX05lZ2F0ZSgmeik7Ci0gICAgICAgIGlmICh6ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfU0laRSh6KSA9IC1QeV9TSVpFKHopOwogICAgIH0KICAgICByZXR1cm4gbG9uZ19ub3JtYWxpemUoeik7CiB9CkBAIC0yOTUyLDggKzMxMTIsMTQgQEAKICAgICBpZiAoUHlfU0laRShhKSA8IDApIHsKICAgICAgICAgaWYgKFB5X1NJWkUoYikgPCAwKSB7CiAgICAgICAgICAgICB6ID0geF9hZGQoYSwgYik7Ci0gICAgICAgICAgICBpZiAoeiAhPSBOVUxMICYmIFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgICAgIGlmICh6ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiB4X2FkZCByZWNlaXZlZCBhdCBsZWFzdCBvbmUgbXVsdGlwbGUtZGlnaXQgaW50LAorICAgICAgICAgICAgICAgICAgIGFuZCB0aHVzIHogbXVzdCBiZSBhIG11bHRpcGxlLWRpZ2l0IGludC4KKyAgICAgICAgICAgICAgICAgICBUaGF0IGFsc28gbWVhbnMgeiBpcyBub3QgYW4gZWxlbWVudCBvZgorICAgICAgICAgICAgICAgICAgIHNtYWxsX2ludHMsIHNvIG5lZ2F0aW5nIGl0IGluLXBsYWNlIGlzIHNhZmUuICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5X1JFRkNOVCh6KSA9PSAxKTsKICAgICAgICAgICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICB6ID0geF9zdWIoYiwgYSk7CkBAIC0yOTg0LDggKzMxNTAsMTAgQEAKICAgICAgICAgICAgIHogPSB4X3N1YihhLCBiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgeiA9IHhfYWRkKGEsIGIpOwotICAgICAgICBpZiAoeiAhPSBOVUxMICYmIFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgaWYgKHogIT0gTlVMTCkgeworICAgICAgICAgICAgYXNzZXJ0KFB5X1NJWkUoeikgPT0gMCB8fCBQeV9SRUZDTlQoeikgPT0gMSk7CiAgICAgICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5X1NJWkUoYikgPCAwKQpAQCAtMzQwOSwxNyArMzU3Nyw3IEBACiAgICAgLyogZmFzdCBwYXRoIGZvciBzaW5nbGUtZGlnaXQgbXVsdGlwbGljYXRpb24gKi8KICAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKICAgICAgICAgc3R3b2RpZ2l0cyB2ID0gKHN0d29kaWdpdHMpKE1FRElVTV9WQUxVRShhKSkgKiBNRURJVU1fVkFMVUUoYik7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl2KTsKLSNlbHNlCi0gICAgICAgIC8qIGlmIHdlIGRvbid0IGhhdmUgbG9uZyBsb25nIHRoZW4gd2UncmUgYWxtb3N0IGNlcnRhaW5seQotICAgICAgICAgICB1c2luZyAxNS1iaXQgZGlnaXRzLCBzbyB2IHdpbGwgZml0IGluIGEgbG9uZy4gIEluIHRoZQotICAgICAgICAgICB1bmxpa2VseSBldmVudCB0aGF0IHdlJ3JlIHVzaW5nIDMwLWJpdCBkaWdpdHMgb24gYSBwbGF0Zm9ybQotICAgICAgICAgICB3aXRob3V0IGxvbmcgbG9uZywgYSBsYXJnZSB2IHdpbGwganVzdCBjYXVzZSB1cyB0byBmYWxsCi0gICAgICAgICAgIHRocm91Z2ggdG8gdGhlIGdlbmVyYWwgbXVsdGlwbGljYXRpb24gY29kZSBiZWxvdy4gKi8KLSAgICAgICAgaWYgKHYgPj0gTE9OR19NSU4gJiYgdiA8PSBMT05HX01BWCkKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpdik7Ci0jZW5kaWYKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl2KTsKICAgICB9CiAKICAgICB6ID0ga19tdWwoYSwgYik7CkBAIC0zNDMyLDYgKzM1OTAsNTIgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopejsKIH0KIAorLyogRmFzdCBtb2R1bG8gZGl2aXNpb24gZm9yIHNpbmdsZS1kaWdpdCBsb25ncy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitmYXN0X21vZChQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKK3sKKyAgICBzZGlnaXQgbGVmdCA9IGEtPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCByaWdodCA9IGItPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCBtb2Q7CisKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEpOworICAgIGFzc2VydChQeV9BQlMoUHlfU0laRShiKSkgPT0gMSk7CisKKyAgICBpZiAoUHlfU0laRShhKSA9PSBQeV9TSVpFKGIpKSB7CisgICAgICAgIC8qICdhJyBhbmQgJ2InIGhhdmUgdGhlIHNhbWUgc2lnbi4gKi8KKyAgICAgICAgbW9kID0gbGVmdCAlIHJpZ2h0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRWl0aGVyICdhJyBvciAnYicgaXMgbmVnYXRpdmUuICovCisgICAgICAgIG1vZCA9IHJpZ2h0IC0gMSAtIChsZWZ0IC0gMSkgJSByaWdodDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1vZCAqIChzZGlnaXQpUHlfU0laRShiKSk7Cit9CisKKy8qIEZhc3QgZmxvb3IgZGl2aXNpb24gZm9yIHNpbmdsZS1kaWdpdCBsb25ncy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitmYXN0X2Zsb29yX2RpdihQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKK3sKKyAgICBzZGlnaXQgbGVmdCA9IGEtPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCByaWdodCA9IGItPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCBkaXY7CisKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEpOworICAgIGFzc2VydChQeV9BQlMoUHlfU0laRShiKSkgPT0gMSk7CisKKyAgICBpZiAoUHlfU0laRShhKSA9PSBQeV9TSVpFKGIpKSB7CisgICAgICAgIC8qICdhJyBhbmQgJ2InIGhhdmUgdGhlIHNhbWUgc2lnbi4gKi8KKyAgICAgICAgZGl2ID0gbGVmdCAvIHJpZ2h0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRWl0aGVyICdhJyBvciAnYicgaXMgbmVnYXRpdmUuICovCisgICAgICAgIGRpdiA9IC0xIC0gKGxlZnQgLSAxKSAvIHJpZ2h0OworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoZGl2KTsKK30KKwogLyogVGhlIC8gYW5kICUgb3BlcmF0b3JzIGFyZSBub3cgZGVmaW5lZCBpbiB0ZXJtcyBvZiBkaXZtb2QoKS4KICAgIFRoZSBleHByZXNzaW9uIGEgbW9kIGIgaGFzIHRoZSB2YWx1ZSBhIC0gYipmbG9vcihhL2IpLgogICAgVGhlIGxvbmdfZGl2cmVtIGZ1bmN0aW9uIGdpdmVzIHRoZSByZW1haW5kZXIgYWZ0ZXIgZGl2aXNpb24gb2YKQEAgLTM0NTksNiArMzY2MywzMCBAQAogewogICAgIFB5TG9uZ09iamVjdCAqZGl2LCAqbW9kOwogCisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKHYpKSA9PSAxICYmIFB5X0FCUyhQeV9TSVpFKHcpKSA9PSAxKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aCBmb3Igc2luZ2xlLWRpZ2l0IGxvbmdzICovCisgICAgICAgIGRpdiA9IE5VTEw7CisgICAgICAgIGlmIChwZGl2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGRpdiA9IChQeUxvbmdPYmplY3QgKilmYXN0X2Zsb29yX2Rpdih2LCB3KTsKKyAgICAgICAgICAgIGlmIChkaXYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocG1vZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBtb2QgPSAoUHlMb25nT2JqZWN0ICopZmFzdF9tb2Qodiwgdyk7CisgICAgICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGRpdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnBtb2QgPSBtb2Q7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBkaXYgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogV2Ugb25seSB3YW50IHRvIHNldCBgKnBkaXZgIHdoZW4gYCpwbW9kYCBpcworICAgICAgICAgICAgICAgc2V0IHN1Y2Nlc3NmdWxseS4gKi8KKyAgICAgICAgICAgICpwZGl2ID0gZGl2OworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAobG9uZ19kaXZyZW0odiwgdywgJmRpdiwgJm1vZCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKChQeV9TSVpFKG1vZCkgPCAwICYmIFB5X1NJWkUodykgPiAwKSB8fApAQCAtMzUwMyw2ICszNzMxLDExIEBACiAgICAgUHlMb25nT2JqZWN0ICpkaXY7CiAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKKworICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPT0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPT0gMSkgeworICAgICAgICByZXR1cm4gZmFzdF9mbG9vcl9kaXYoKFB5TG9uZ09iamVjdCopYSwgKFB5TG9uZ09iamVjdCopYik7CisgICAgfQorCiAgICAgaWYgKGxfZGl2bW9kKChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIsICZkaXYsIE5VTEwpIDwgMCkKICAgICAgICAgZGl2ID0gTlVMTDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGl2OwpAQCAtMzc0Miw5ICszOTc1LDkgQEAKICAgICAvKiBSb3VuZCBieSBkaXJlY3RseSBtb2RpZnlpbmcgdGhlIGxvdyBkaWdpdCBvZiB4LiAqLwogICAgIG1hc2sgPSAoZGlnaXQpMSA8PCAoZXh0cmFfYml0cyAtIDEpOwogICAgIGxvdyA9IHgtPm9iX2RpZ2l0WzBdIHwgaW5leGFjdDsKLSAgICBpZiAobG93ICYgbWFzayAmJiBsb3cgJiAoMyptYXNrLTEpKQorICAgIGlmICgobG93ICYgbWFzaykgJiYgKGxvdyAmICgzVSptYXNrLTFVKSkpCiAgICAgICAgIGxvdyArPSBtYXNrOwotICAgIHgtPm9iX2RpZ2l0WzBdID0gbG93ICYgfihtYXNrLTFVKTsKKyAgICB4LT5vYl9kaWdpdFswXSA9IGxvdyAmIH4oMlUqbWFzay0xVSk7CiAKICAgICAvKiBDb252ZXJ0IHggdG8gYSBkb3VibGUgZHg7IHRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAqLwogICAgIGR4ID0geC0+b2JfZGlnaXRbLS14X3NpemVdOwpAQCAtMzc3OCw2ICs0MDExLDEwIEBACiAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKIAorICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPT0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPT0gMSkgeworICAgICAgICByZXR1cm4gZmFzdF9tb2QoKFB5TG9uZ09iamVjdCopYSwgKFB5TG9uZ09iamVjdCopYik7CisgICAgfQorCiAgICAgaWYgKGxfZGl2bW9kKChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIsIE5VTEwsICZtb2QpIDwgMCkKICAgICAgICAgbW9kID0gTlVMTDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbW9kOwpAQCAtNDAxMiw4ICs0MjQ5LDEwIEBACiAgICAgUHlfREVDUkVGKHcpOwogICAgIGlmICh4ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X1NJWkUoeCkgPSAtKFB5X1NJWkUoeCkpOwotICAgIHJldHVybiAoUHlPYmplY3QgKiltYXliZV9zbWFsbF9sb25nKHgpOworICAgIF9QeUxvbmdfTmVnYXRlKCZ4KTsKKyAgICAvKiBObyBuZWVkIGZvciBtYXliZV9zbWFsbF9sb25nIGhlcmUsIHNpbmNlIGFueSBzbWFsbAorICAgICAgIGxvbmdzIHdpbGwgaGF2ZSBiZWVuIGNhdWdodCBpbiB0aGUgUHlfU0laRSA8PSAxIGZhc3QgcGF0aC4gKi8KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopeDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQxMTgsNiArNDM1NywxMSBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIHNoaWZ0IGNvdW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKworICAgIGlmIChQeV9TSVpFKGEpID09IDApIHsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICB9CisKICAgICAvKiB3b3Jkc2hpZnQsIHJlbXNoaWZ0ID0gZGl2bW9kKHNoaWZ0YnksIFB5TG9uZ19TSElGVCkgKi8KICAgICB3b3Jkc2hpZnQgPSBzaGlmdGJ5IC8gUHlMb25nX1NISUZUOwogICAgIHJlbXNoaWZ0ICA9IHNoaWZ0YnkgLSB3b3Jkc2hpZnQgKiBQeUxvbmdfU0hJRlQ7CkBAIC00NTAyLDcgKzQ3NDYsNyBAQAogICAgIC8qIGEgZml0cyBpbnRvIGEgbG9uZywgc28gYiBtdXN0IHRvbyAqLwogICAgIHggPSBQeUxvbmdfQXNMb25nKChQeU9iamVjdCAqKWEpOwogICAgIHkgPSBQeUxvbmdfQXNMb25nKChQeU9iamVjdCAqKWIpOwotI2VsaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpICYmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCisjZWxpZiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAogICAgIHggPSBQeUxvbmdfQXNMb25nTG9uZygoUHlPYmplY3QgKilhKTsKICAgICB5ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYik7CiAjZWxzZQpAQCAtNDUyMSw3ICs0NzY1LDcgQEAKICAgICB9CiAjaWYgTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeCk7Ci0jZWxpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgJiYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKKyNlbGlmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7CiAjZWxzZQogIyBlcnJvciAiX1B5TG9uZ19HQ0QiCmRpZmYgLS1naXQgYS9PYmplY3RzL21lbW9yeW9iamVjdC5jIGIvT2JqZWN0cy9tZW1vcnlvYmplY3QuYwppbmRleCAxMDE2MmNiLi40MjhkODNjIDEwMDY0NAotLS0gYS9PYmplY3RzL21lbW9yeW9iamVjdC5jCisrKyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKQEAgLTU3LDcgKzU3LDcgQEAKICAgICB9CiAKIAotUHlfTE9DQUxfSU5MSU5FKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqCiBtYnVmX2FsbG9jKHZvaWQpCiB7CiAgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKQEAgLTI0Myw3ICsyNDMsNyBAQAogI2RlZmluZSBIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0odmlldykgXAogICAgICh2aWV3LT5zdWJvZmZzZXRzICYmIHZpZXctPnN1Ym9mZnNldHNbZGVzdC0+bmRpbS0xXSA+PSAwKQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGxhc3RfZGltX2lzX2NvbnRpZ3VvdXMoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBhc3NlcnQoZGVzdC0+bmRpbSA+IDAgJiYgc3JjLT5uZGltID4gMCk7CkBAIC0yNTksNyArMjU5LDcgQEAKICAgIGFzc2lnbm1lbnRzLCB3aGVyZSB0aGUgbHZhbHVlIGlzIGFscmVhZHkga25vd24gdG8gaGF2ZSBhIHNpbmdsZSBjaGFyYWN0ZXIKICAgIGZvcm1hdC4gVGhpcyBpcyBhIHBlcmZvcm1hbmNlIGhhY2sgdGhhdCBjb3VsZCBiZSByZXdyaXR0ZW4gKGlmIHByb3Blcmx5CiAgICBiZW5jaG1hcmtlZCkuICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGVxdWl2X2Zvcm1hdChjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIGNvbnN0IGNoYXIgKmRmbXQsICpzZm10OwpAQCAtMjc5LDcgKzI3OSw3IEBACiAvKiBUd28gc2hhcGVzIGFyZSBlcXVpdmFsZW50IGlmIHRoZXkgYXJlIGVpdGhlciBlcXVhbCBvciBpZGVudGljYWwgdXAKICAgIHRvIGEgemVybyBlbGVtZW50IGF0IHRoZSBzYW1lIHBvc2l0aW9uLiBGb3IgZXhhbXBsZSwgaW4gTnVtUHkgYXJyYXlzCiAgICB0aGUgc2hhcGVzIFsxLCAwLCA1XSBhbmQgWzEsIDAsIDddIGFyZSBlcXVpdmFsZW50LiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBlcXVpdl9zaGFwZShjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIGludCBpOwpAQCAtNDM4LDcgKzQzOCw3IEBACiB9CiAKIC8qIEluaXRpYWxpemUgc3RyaWRlcyBmb3IgYSBDLWNvbnRpZ3VvdXMgYXJyYXkuICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUoUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTQ1MSw3ICs0NTEsNyBAQAogfQogCiAvKiBJbml0aWFsaXplIHN0cmlkZXMgZm9yIGEgRm9ydHJhbi1jb250aWd1b3VzIGFycmF5LiAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfZm9ydHJhbl9zdHJpZGVzX2Zyb21fc2hhcGUoUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTUxMyw3ICs1MTMsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIEluaXRpYWxpemUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCB3aXRoIHRoZSBtYW5hZ2VkIGJ1ZmZlci4gKi8KLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X3NoYXJlZF92YWx1ZXMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBkZXN0LT5vYmogPSBzcmMtPm9iajsKQEAgLTU1Myw3ICs1NTMsNyBAQAogICAgIH0KIH0KIAotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfc3Vib2Zmc2V0cyhQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTU2Nyw3ICs1NjcsNyBAQAogfQogCiAvKiBsZW4gPSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9sZW4oUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3QgaSwgbGVuOwpAQCAtNjE0LDcgKzYxNCw3IEBACiAKIC8qIEFsbG9jYXRlIGEgbmV3IG1lbW9yeXZpZXcgYW5kIHBlcmZvcm0gYmFzaWMgaW5pdGlhbGl6YXRpb24uIE5ldyBtZW1vcnl2aWV3cwogICAgYXJlIGV4Y2x1c2l2ZWx5IGNyZWF0ZWQgdGhyb3VnaCB0aGUgbWJ1Zl9hZGQgZnVuY3Rpb25zLiAqLwotUHlfTE9DQUxfSU5MSU5FKFB5TWVtb3J5Vmlld09iamVjdCAqKQorc3RhdGljIGlubGluZSBQeU1lbW9yeVZpZXdPYmplY3QgKgogbWVtb3J5X2FsbG9jKGludCBuZGltKQogewogICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXY7CkBAIC0xMDk5LDcgKzEwOTksNyBAQAogCiAjZGVmaW5lIElTX0JZVEVfRk9STUFUKGYpIChmID09ICdiJyB8fCBmID09ICdCJyB8fCBmID09ICdjJykKIAotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKIGdldF9uYXRpdmVfZm10Y2hhcihjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKmZtdCkKIHsKICAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKQEAgLTExMTEsMTcgKzExMTEsMTEgQEAKICAgICBjYXNlICdoJzogY2FzZSAnSCc6IHNpemUgPSBzaXplb2Yoc2hvcnQpOyBicmVhazsKICAgICBjYXNlICdpJzogY2FzZSAnSSc6IHNpemUgPSBzaXplb2YoaW50KTsgYnJlYWs7CiAgICAgY2FzZSAnbCc6IGNhc2UgJ0wnOiBzaXplID0gc2l6ZW9mKGxvbmcpOyBicmVhazsKLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdxJzogY2FzZSAnUSc6IHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsgYnJlYWs7Ci0gICAgI2VuZGlmCisgICAgY2FzZSAncSc6IGNhc2UgJ1EnOiBzaXplID0gc2l6ZW9mKGxvbmcgbG9uZyk7IGJyZWFrOwogICAgIGNhc2UgJ24nOiBjYXNlICdOJzogc2l6ZSA9IHNpemVvZihQeV9zc2l6ZV90KTsgYnJlYWs7CiAgICAgY2FzZSAnZic6IHNpemUgPSBzaXplb2YoZmxvYXQpOyBicmVhazsKICAgICBjYXNlICdkJzogc2l6ZSA9IHNpemVvZihkb3VibGUpOyBicmVhazsKLSAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAogICAgIGNhc2UgJz8nOiBzaXplID0gc2l6ZW9mKF9Cb29sKTsgYnJlYWs7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/Jzogc2l6ZSA9IHNpemVvZihjaGFyKTsgYnJlYWs7Ci0gICAgI2VuZGlmCiAgICAgY2FzZSAnUCc6IHNpemUgPSBzaXplb2Yodm9pZCAqKTsgYnJlYWs7CiAgICAgfQogCkBAIC0xMTMzLDcgKzExMjcsNyBAQAogICAgIHJldHVybiAtMTsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGNoYXIgKikKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCiBnZXRfbmF0aXZlX2ZtdHN0cihjb25zdCBjaGFyICpmbXQpCiB7CiAgICAgaW50IGF0ID0gMDsKQEAgLTExNTgsMTkgKzExNTIsMTMgQEAKICAgICBjYXNlICdJJzogUkVUVVJOKCJJIik7CiAgICAgY2FzZSAnbCc6IFJFVFVSTigibCIpOwogICAgIGNhc2UgJ0wnOiBSRVRVUk4oIkwiKTsKLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzogUkVUVVJOKCJxIik7CiAgICAgY2FzZSAnUSc6IFJFVFVSTigiUSIpOwotICAgICNlbmRpZgogICAgIGNhc2UgJ24nOiBSRVRVUk4oIm4iKTsKICAgICBjYXNlICdOJzogUkVUVVJOKCJOIik7CiAgICAgY2FzZSAnZic6IFJFVFVSTigiZiIpOwogICAgIGNhc2UgJ2QnOiBSRVRVUk4oImQiKTsKLSAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAogICAgIGNhc2UgJz8nOiBSRVRVUk4oIj8iKTsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBSRVRVUk4oIj8iKTsKLSAgICAjZW5kaWYKICAgICBjYXNlICdQJzogUkVUVVJOKCJQIik7CiAgICAgfQogCkBAIC0xMjIxLDcgKzEyMDksNyBAQAogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKLSAgICB2aWV3LT5mb3JtYXQgPSBnZXRfbmF0aXZlX2ZtdHN0cihQeUJ5dGVzX0FTX1NUUklORyhhc2NpaWZtdCkpOworICAgIHZpZXctPmZvcm1hdCA9IChjaGFyICopZ2V0X25hdGl2ZV9mbXRzdHIoUHlCeXRlc19BU19TVFJJTkcoYXNjaWlmbXQpKTsKICAgICBpZiAodmlldy0+Zm9ybWF0ID09IE5VTEwpIHsKICAgICAgICAgLyogTk9UX1JFQUNIRUQ6IGdldF9uYXRpdmVfZm10Y2hhcigpIGFscmVhZHkgdmFsaWRhdGVzIHRoZSBmb3JtYXQuICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC0xNTgxLDEyICsxNTY5LDExIEBACiAgICAgcmV0dXJuIGx1OwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIHB5bG9uZ19hc19sbGQoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnRtcDsKLSAgICBQWV9MT05HX0xPTkcgbGxkOworICAgIGxvbmcgbG9uZyBsbGQ7CiAKICAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKICAgICBpZiAodG1wID09IE5VTEwpCkBAIC0xNTk3LDIxICsxNTg0LDIwIEBACiAgICAgcmV0dXJuIGxsZDsKIH0KIAotc3RhdGljIHVuc2lnbmVkIFBZX0xPTkdfTE9ORworc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZwogcHlsb25nX2FzX2xsdShQeU9iamVjdCAqaXRlbSkKIHsKICAgICBQeU9iamVjdCAqdG1wOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxsdTsKIAogICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOwogICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogCiAgICAgbGx1ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh0bXApOwogICAgIFB5X0RFQ1JFRih0bXApOwogICAgIHJldHVybiBsbHU7CiB9Ci0jZW5kaWYKIAogc3RhdGljIFB5X3NzaXplX3QKIHB5bG9uZ19hc196ZChQeU9iamVjdCAqaXRlbSkKQEAgLTE2NTYsMTMgKzE2NDIsMTMgQEAKIC8qIFVucGFjayBhIHNpbmdsZSBpdGVtLiAnZm10JyBjYW4gYmUgYW55IG5hdGl2ZSBmb3JtYXQgY2hhcmFjdGVyIGluIHN0cnVjdAogICAgbW9kdWxlIHN5bnRheC4gVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHNlbnNpdGl2ZSB0byBzbWFsbCBjaGFuZ2VzLiBXaXRoIHRoaXMKICAgIGxheW91dCBnY2MgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgYSBmYXN0IGp1bXAgdGFibGUuICovCi1QeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgogdW5wYWNrX3NpbmdsZShjb25zdCBjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmZtdCkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsbHU7CiAgICAgdW5zaWduZWQgbG9uZyBsdTsKICAgICBzaXplX3QgenU7Ci0gICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxvbmcgbGxkOwogICAgIGxvbmcgbGQ7CiAgICAgUHlfc3NpemVfdCB6ZDsKICAgICBkb3VibGUgZDsKQEAgLTE2NzksMTEgKzE2NjUsNyBAQAogICAgIGNhc2UgJ2wnOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGQ7CiAKICAgICAvKiBib29sZWFuICovCi0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/JzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBfQm9vbCk7IGdvdG8gY29udmVydF9ib29sOwotICAgICNlbHNlCi0gICAgY2FzZSAnPyc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgY2hhcik7IGdvdG8gY29udmVydF9ib29sOwotICAgICNlbmRpZgogCiAgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KICAgICBjYXNlICdIJzogVU5QQUNLX1NJTkdMRShsdSwgcHRyLCB1bnNpZ25lZCBzaG9ydCk7IGdvdG8gY29udmVydF9sdTsKQEAgLTE2OTEsMTAgKzE2NzMsOCBAQAogICAgIGNhc2UgJ0wnOiBVTlBBQ0tfU0lOR0xFKGx1LCBwdHIsIHVuc2lnbmVkIGxvbmcpOyBnb3RvIGNvbnZlcnRfbHU7CiAKICAgICAvKiBuYXRpdmUgNjQtYml0ICovCi0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAncSc6IFVOUEFDS19TSU5HTEUobGxkLCBwdHIsIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbGQ7Ci0gICAgY2FzZSAnUSc6IFVOUEFDS19TSU5HTEUobGx1LCBwdHIsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbHU7Ci0gICAgI2VuZGlmCisgICAgY2FzZSAncSc6IFVOUEFDS19TSU5HTEUobGxkLCBwdHIsIGxvbmcgbG9uZyk7IGdvdG8gY29udmVydF9sbGQ7CisgICAgY2FzZSAnUSc6IFVOUEFDS19TSU5HTEUobGx1LCBwdHIsIHVuc2lnbmVkIGxvbmcgbG9uZyk7IGdvdG8gY29udmVydF9sbHU7CiAKICAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KICAgICBjYXNlICduJzogVU5QQUNLX1NJTkdMRSh6ZCwgcHRyLCBQeV9zc2l6ZV90KTsgZ290byBjb252ZXJ0X3pkOwpAQCAtMTc1NSwxMCArMTczNSwxMCBAQAogc3RhdGljIGludAogcGFja19zaW5nbGUoY2hhciAqcHRyLCBQeU9iamVjdCAqaXRlbSwgY29uc3QgY2hhciAqZm10KQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxsdTsKICAgICB1bnNpZ25lZCBsb25nIGx1OwogICAgIHNpemVfdCB6dTsKLSAgICBQWV9MT05HX0xPTkcgbGxkOworICAgIGxvbmcgbG9uZyBsbGQ7CiAgICAgbG9uZyBsZDsKICAgICBQeV9zc2l6ZV90IHpkOwogICAgIGRvdWJsZSBkOwpAQCAtMTgwNiwyMCArMTc4NiwxOCBAQAogICAgICAgICBicmVhazsKIAogICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzoKICAgICAgICAgbGxkID0gcHlsb25nX2FzX2xsZChpdGVtKTsKICAgICAgICAgaWYgKGxsZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7Ci0gICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGxkLCBQWV9MT05HX0xPTkcpOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsZCwgbG9uZyBsb25nKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnUSc6CiAgICAgICAgIGxsdSA9IHB5bG9uZ19hc19sbHUoaXRlbSk7Ci0gICAgICAgIGlmIChsbHUgPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAobGx1ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOwotICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsdSwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbHUsIHVuc2lnbmVkIGxvbmcgbG9uZyk7CiAgICAgICAgIGJyZWFrOwotICAgICNlbmRpZgogCiAgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCiAgICAgY2FzZSAnbic6CkBAIC0xODUzLDExICsxODMxLDcgQEAKICAgICAgICAgbGQgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIGlmIChsZCA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIHByZXNlcnZlIG9yaWdpbmFsIGVycm9yICovCi0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgX0Jvb2wpOwotICAgICNlbHNlCi0gICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIGNoYXIpOwotICAgICNlbmRpZgogICAgICAgICAgYnJlYWs7CiAKICAgICAvKiBieXRlcyBvYmplY3QgKi8KQEAgLTIwMjQsNyArMTk5OCw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogYWxsb3cgZXhwbGljaXQgZm9ybSBvZiBuYXRpdmUgZm9ybWF0ICovCi1QeV9MT0NBTF9JTkxJTkUoY29uc3QgY2hhciAqKQorc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKIGFkanVzdF9mbXQoY29uc3QgUHlfYnVmZmVyICp2aWV3KQogewogICAgIGNvbnN0IGNoYXIgKmZtdDsKQEAgLTIzMDYsNyArMjI4MCw3IEBACiAgICAgcmV0dXJuIHVucGFja19zaW5nbGUocHRyLCBmbXQpOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGluaXRfc2xpY2UoUHlfYnVmZmVyICpiYXNlLCBQeU9iamVjdCAqa2V5LCBpbnQgZGltKQogewogICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoOwpAQCAtMjYyOCw3ICsyNjAyLDcgQEAKICAgICAgICAgZXF1YWwgPSAoeCA9PSB5KTsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogdW5wYWNrX2NtcChjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpxLCBjaGFyIGZtdCwKICAgICAgICAgICAgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcSkKIHsKQEAgLTI2NDQsMTEgKzI2MTgsNyBAQAogICAgIGNhc2UgJ2wnOiBDTVBfU0lOR0xFKHAsIHEsIGxvbmcpOyByZXR1cm4gZXF1YWw7CiAKICAgICAvKiBib29sZWFuICovCi0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/JzogQ01QX1NJTkdMRShwLCBxLCBfQm9vbCk7IHJldHVybiBlcXVhbDsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBDTVBfU0lOR0xFKHAsIHEsIGNoYXIpOyByZXR1cm4gZXF1YWw7Ci0gICAgI2VuZGlmCiAKICAgICAvKiB1bnNpZ25lZCBpbnRlZ2VycyAqLwogICAgIGNhc2UgJ0gnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIHNob3J0KTsgcmV0dXJuIGVxdWFsOwpAQCAtMjY1NiwxMCArMjYyNiw4IEBACiAgICAgY2FzZSAnTCc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgbG9uZyk7IHJldHVybiBlcXVhbDsKIAogICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdxJzogQ01QX1NJTkdMRShwLCBxLCBQWV9MT05HX0xPTkcpOyByZXR1cm4gZXF1YWw7Ci0gICAgY2FzZSAnUSc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsgcmV0dXJuIGVxdWFsOwotICAgICNlbmRpZgorICAgIGNhc2UgJ3EnOiBDTVBfU0lOR0xFKHAsIHEsIGxvbmcgbG9uZyk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdRJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBsb25nIGxvbmcpOyByZXR1cm4gZXF1YWw7CiAKICAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KICAgICBjYXNlICduJzogQ01QX1NJTkdMRShwLCBxLCBQeV9zc2l6ZV90KTsgcmV0dXJuIGVxdWFsOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKaW5kZXggOTQ2MzU3Zi4uYzIwMDFmMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYworKysgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCkBAIC05Nyw2ICs5NywxMSBAQAogICAgIGlmIChmbGFncyA9PSAoTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUykpIHsKICAgICAgICAgcmVzID0gKCooUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpbWV0aCkoc2VsZiwgYXJncywga3dkcyk7CiAgICAgfQorICAgIGVsc2UgaWYgKGZsYWdzID09IE1FVEhfRkFTVENBTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKipzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICBQeV9zc2l6ZV90IG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICAgICAgcmVzID0gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZHMpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2RzKSAhPSAwKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLApAQCAtMTQ1LDYgKzE1MCwxNTMgQEAKICAgICByZXR1cm4gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzLCBOVUxMKTsKIH0KIAorUHlPYmplY3QgKgorX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuY19vYmosIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeUNGdW5jdGlvbk9iamVjdCAqZnVuYyA9IChQeUNGdW5jdGlvbk9iamVjdCopZnVuY19vYmo7CisgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKKyAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaW50IGZsYWdzOworCisgICAgYXNzZXJ0KFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKTsKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KG5hcmdzID09IDAgfHwgYXJncyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOworCisgICAgLyogX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsCisgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKKyAgICAgICBjYWxsZXIgbG9zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICBmbGFncyA9IFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhmdW5jKSAmIH4oTUVUSF9DTEFTUyB8IE1FVEhfU1RBVElDIHwgTUVUSF9DT0VYSVNUKTsKKworICAgIHN3aXRjaCAoZmxhZ3MpCisgICAgeworICAgIGNhc2UgTUVUSF9OT0FSR1M6CisgICAgICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuYXJncyAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUsIG5hcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCptZXRoKSAoc2VsZiwgTlVMTCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNRVRIX086CisgICAgICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuYXJncyAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJXpkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSwgbmFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSAoKm1ldGgpIChzZWxmLCBhcmdzWzBdKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1FVEhfVkFSQVJHUzoKKyAgICBjYXNlIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFM6CisgICAgeworICAgICAgICAvKiBTbG93LXBhdGg6IGNyZWF0ZSBhIHRlbXBvcmFyeSB0dXBsZSAqLworICAgICAgICBQeU9iamVjdCAqdHVwbGU7CisKKyAgICAgICAgaWYgKCEoZmxhZ3MgJiBNRVRIX0tFWVdPUkRTKSAmJiBrd2FyZ3MgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgdHVwbGUgPSBfUHlTdGFja19Bc1R1cGxlKGFyZ3MsIG5hcmdzKTsKKyAgICAgICAgaWYgKHR1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZsYWdzICYgTUVUSF9LRVlXT1JEUykgeworICAgICAgICAgICAgcmVzdWx0ID0gKCooUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpbWV0aCkgKHNlbGYsIHR1cGxlLCBrd2FyZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gKCptZXRoKSAoc2VsZiwgdHVwbGUpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgTUVUSF9GQVNUQ0FMTDoKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgICAgIFB5T2JqZWN0ICprd25hbWVzOworICAgICAgICBfUHlDRnVuY3Rpb25GYXN0IGZhc3RtZXRoID0gKF9QeUNGdW5jdGlvbkZhc3QpbWV0aDsKKworICAgICAgICBzdGFjayA9IF9QeVN0YWNrX1VucGFja0RpY3QoYXJncywgbmFyZ3MsIGt3YXJncywgJmt3bmFtZXMsIGZ1bmNfb2JqKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCpmYXN0bWV0aCkgKHNlbGYsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChzdGFjayAhPSBhcmdzKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKGt3bmFtZXMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQmFkIGNhbGwgZmxhZ3MgaW4gUHlDRnVuY3Rpb25fQ2FsbC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIk1FVEhfT0xEQVJHUyBpcyBubyBsb25nZXIgc3VwcG9ydGVkISIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jX29iaiwgcmVzdWx0LCBOVUxMKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK19QeUNGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKmt3ZGljdCwgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworCisgICAgYXNzZXJ0KFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoa3duYW1lcykpOworICAgIGFzc2VydCgobmFyZ3MgPT0gMCAmJiBua3dhcmdzID09IDApIHx8IHN0YWNrICE9IE5VTEwpOworICAgIC8qIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUgKi8KKworICAgIGlmIChua3dhcmdzID4gMCkgeworICAgICAgICBrd2RpY3QgPSBfUHlTdGFja19Bc0RpY3Qoc3RhY2sgKyBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZGljdCk7CisgICAgUHlfWERFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC8qIE1ldGhvZHMgKHRoZSBzdGFuZGFyZCBidWlsdC1pbiBtZXRob2RzLCB0aGF0IGlzKSAqLwogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKaW5kZXggYWMwNzY0Mi4uZDg4YjA2YSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYworKysgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCkBAIC00NTAsOCArNDUwLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGQgPSAoKFB5TW9kdWxlT2JqZWN0ICopbSkgLT4gbWRfZGljdDsKLSAgICBpZiAoZCA9PSBOVUxMKQotICAgICAgICAoKFB5TW9kdWxlT2JqZWN0ICopbSkgLT4gbWRfZGljdCA9IGQgPSBQeURpY3RfTmV3KCk7CisgICAgYXNzZXJ0KGQgIT0gTlVMTCk7CiAgICAgcmV0dXJuIGQ7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMgYi9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCmluZGV4IDNkMjdhOTUuLjBiYjMwNjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYwpAQCAtMSw0ICsxLDQgQEAKLS8qIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KKy8vIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgpAQCAtMTYsNyArMTYsNyBAQAogfTsKIAogCi0vKiBNZXRob2RzICovCisvLyBNZXRob2RzCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBuYW1lc3BhY2VfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQpAQCAtNDAsNyArNDAsNyBAQAogc3RhdGljIGludAogbmFtZXNwYWNlX2luaXQoX1B5TmFtZXNwYWNlT2JqZWN0ICpucywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIC8qIGlnbm9yZSBhcmdzIGlmIGl0J3MgTlVMTCBvciBlbXB0eSAqLworICAgIC8vIGlnbm9yZSBhcmdzIGlmIGl0J3MgTlVMTCBvciBlbXB0eQogICAgIGlmIChhcmdzICE9IE5VTEwpIHsKICAgICAgICAgUHlfc3NpemVfdCBhcmdjb3VudCA9IFB5T2JqZWN0X1NpemUoYXJncyk7CiAgICAgICAgIGlmIChhcmdjb3VudCA8IDApCkBAIC0xOTEsNyArMTkxLDcgQEAKIHN0YXRpYyBQeU1ldGhvZERlZiBuYW1lc3BhY2VfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbiluYW1lc3BhY2VfcmVkdWNlLCBNRVRIX05PQVJHUywKICAgICAgbmFtZXNwYWNlX3JlZHVjZV9fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgIE5VTEx9ICAvKiBzZW50aW5lbCAqLworICAgIHtOVUxMLCAgICAgICAgIE5VTEx9ICAvLyBzZW50aW5lbAogfTsKIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL29iamVjdC5jIGIvT2JqZWN0cy9vYmplY3QuYwppbmRleCA4MDI0ODg5Li5lMDhmOWE5IDEwMDY0NAotLS0gYS9PYmplY3RzL29iamVjdC5jCisrKyBiL09iamVjdHMvb2JqZWN0LmMKQEAgLTIyLDEyICsyMiw2IEBACiB7CiAgICAgUHlPYmplY3QgKm87CiAgICAgUHlfc3NpemVfdCB0b3RhbCA9IF9QeV9SZWZUb3RhbDsKLSAgICAvKiBpZ25vcmUgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIGR1bW15IG9iamVjdCBvZiB0aGUgZGljdHMgYW5kIHNldHMKLSAgICAgICBiZWNhdXNlIHRoZXkgYXJlIG5vdCByZWxpYWJsZSBhbmQgbm90IHVzZWZ1bCAobm93IHRoYXQgdGhlCi0gICAgICAgaGFzaCB0YWJsZSBjb2RlIGlzIHdlbGwtdGVzdGVkKSAqLwotICAgIG8gPSBfUHlEaWN0X0R1bW15KCk7Ci0gICAgaWYgKG8gIT0gTlVMTCkKLSAgICAgICAgdG90YWwgLT0gby0+b2JfcmVmY250OwogICAgIG8gPSBfUHlTZXRfRHVtbXk7CiAgICAgaWYgKG8gIT0gTlVMTCkKICAgICAgICAgdG90YWwgLT0gby0+b2JfcmVmY250OwpAQCAtMTA5LDYgKzEwMywxNSBAQAogZHVtcF9jb3VudHMoRklMRSogZikKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwOworICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKnZhbHVlOworICAgIF9QeV9JREVOVElGSUVSKHNob3dhbGxvY2NvdW50KTsKKworICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dhbGxvY2NvdW50KTsKKyAgICBpZiAodmFsdWUgIT0gUHlfVHJ1ZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yICh0cCA9IHR5cGVfbGlzdDsgdHA7IHRwID0gdHAtPnRwX25leHQpCiAgICAgICAgIGZwcmludGYoZiwgIiVzIGFsbG9jJ2Q6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQsICIKQEAgLTY0NCw3ICs2NDcsNyBAQAogLyogTWFwIHJpY2ggY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gdGhlaXIgc3dhcHBlZCB2ZXJzaW9uLCBlLmcuIExUIDwtLT4gR1QgKi8KIGludCBfUHlfU3dhcHBlZE9wW10gPSB7UHlfR1QsIFB5X0dFLCBQeV9FUSwgUHlfTkUsIFB5X0xULCBQeV9MRX07CiAKLXN0YXRpYyBjaGFyICpvcHN0cmluZ3NbXSA9IHsiPCIsICI8PSIsICI9PSIsICIhPSIsICI+IiwgIj49In07CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG9wc3RyaW5nc1tdID0geyI8IiwgIjw9IiwgIj09IiwgIiE9IiwgIj4iLCAiPj0ifTsKIAogLyogUGVyZm9ybSBhIHJpY2ggY29tcGFyaXNvbiwgcmFpc2luZyBUeXBlRXJyb3Igd2hlbiB0aGUgcmVxdWVzdGVkIGNvbXBhcmlzb24KICAgIG9wZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQuICovCkBAIC02ODYsMTEgKzY4OSwxMCBAQAogICAgICAgICByZXMgPSAodiAhPSB3KSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgLyogWFhYIFNwZWNpYWwtY2FzZSBOb25lIHNvIGl0IGRvZXNuJ3Qgc2hvdyBhcyBOb25lVHlwZSgpICovCiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAidW5vcmRlcmFibGUgdHlwZXM6ICUuMTAwcygpICVzICUuMTAwcygpIiwKLSAgICAgICAgICAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiJyVzJyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICclLjEwMHMnIGFuZCAnJS4xMDBzJyIsCiAgICAgICAgICAgICAgICAgICAgICBvcHN0cmluZ3Nbb3BdLAorICAgICAgICAgICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIHctPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMDQxLDggKzEwNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgbmFtZS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICBQeV9JTkNSRUYobmFtZSk7CiAKICAgICBpZiAodHAtPnRwX2RpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KHRwKSA8IDApCkBAIC0xMDUwLDEwICsxMDUxLDEwIEBACiAgICAgfQogCiAgICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cCh0cCwgbmFtZSk7Ci0gICAgUHlfWElOQ1JFRihkZXNjcik7CiAKICAgICBmID0gTlVMTDsKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZGVzY3IpOwogICAgICAgICBmID0gZGVzY3ItPm9iX3R5cGUtPnRwX2Rlc2NyX2dldDsKICAgICAgICAgaWYgKGYgIT0gTlVMTCAmJiBQeURlc2NyX0lzRGF0YShkZXNjcikpIHsKICAgICAgICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgKFB5T2JqZWN0ICopb2JqLT5vYl90eXBlKTsKQEAgLTEwNzMsOCArMTA3NCw5IEBACiAgICAgICAgICAgICAgICAgaWYgKHRzaXplIDwgMCkKICAgICAgICAgICAgICAgICAgICAgdHNpemUgPSAtdHNpemU7CiAgICAgICAgICAgICAgICAgc2l6ZSA9IF9QeU9iamVjdF9WQVJfU0laRSh0cCwgdHNpemUpOworICAgICAgICAgICAgICAgIGFzc2VydChzaXplIDw9IFBZX1NTSVpFX1RfTUFYKTsKIAotICAgICAgICAgICAgICAgIGRpY3RvZmZzZXQgKz0gKGxvbmcpc2l6ZTsKKyAgICAgICAgICAgICAgICBkaWN0b2Zmc2V0ICs9IChQeV9zc2l6ZV90KXNpemU7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGRpY3RvZmZzZXQgPiAwKTsKICAgICAgICAgICAgICAgICBhc3NlcnQoZGljdG9mZnNldCAlIFNJWkVPRl9WT0lEX1AgPT0gMCk7CiAgICAgICAgICAgICB9CkBAIC0xMTQyLDEyICsxMTQ0LDExIEBACiAgICAgUHlfSU5DUkVGKG5hbWUpOwogCiAgICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cCh0cCwgbmFtZSk7Ci0gICAgUHlfWElOQ1JFRihkZXNjcik7CiAKLSAgICBmID0gTlVMTDsKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZGVzY3IpOwogICAgICAgICBmID0gZGVzY3ItPm9iX3R5cGUtPnRwX2Rlc2NyX3NldDsKLSAgICAgICAgaWYgKGYgIT0gTlVMTCAmJiBQeURlc2NyX0lzRGF0YShkZXNjcikpIHsKKyAgICAgICAgaWYgKGYgIT0gTlVMTCkgewogICAgICAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCB2YWx1ZSk7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KQEAgLTExNTUsNDAgKzExNTYsMzIgQEAKIAogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7Ci0gICAgICAgIGlmIChkaWN0cHRyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdERpY3RfU2V0SXRlbShQeV9UWVBFKG9iaiksIGRpY3RwdHIsIG5hbWUsIHZhbHVlKTsKLSAgICAgICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CisgICAgICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChkZXNjciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMTAwcycgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVVJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjUwcycgb2JqZWN0IGF0dHJpYnV0ZSAnJVUnIGlzIHJlYWQtb25seSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQorICAgICAgICByZXMgPSBfUHlPYmplY3REaWN0X1NldEl0ZW0odHAsIGRpY3RwdHIsIG5hbWUsIHZhbHVlKTsKICAgICB9Ci0gICAgaWYgKGRpY3QgIT0gTlVMTCkgeworICAgIGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoZGljdCk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQogICAgICAgICAgICAgcmVzID0gUHlEaWN0X0RlbEl0ZW0oZGljdCwgbmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKGRpY3QsIG5hbWUsIHZhbHVlKTsKICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwotICAgICAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKICAgICB9CisgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CiAKLSAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgdmFsdWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclVSciLAotICAgICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgYXR0cmlidXRlICclVScgaXMgcmVhZC1vbmx5IiwKLSAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwogICBkb25lOgogICAgIFB5X1hERUNSRUYoZGVzY3IpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKQEAgLTEyMDQsNyArMTE5Nyw3IEBACiBpbnQKIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICBQeU9iamVjdCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwogICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGhhcyBubyBfX2RpY3RfXyIpOwpAQCAtMTIyMCwxMCArMTIxMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAibm90IGEgJyUuMjAwcyciLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZGljdCA9ICpkaWN0cHRyOwotICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgICpkaWN0cHRyID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X1hTRVRSRUYoKmRpY3RwdHIsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDdjYzg4OWYuLjU0ZDY4YjcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTEsMTcgKzEsMzggQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAorCisvKiBEZWZpbmVkIGluIHRyYWNlbWFsbG9jLmMgKi8KK2V4dGVybiB2b2lkIF9QeU1lbV9EdW1wVHJhY2ViYWNrKGludCBmZCwgY29uc3Qgdm9pZCAqcHRyKTsKKworCiAvKiBQeXRob24ncyBtYWxsb2Mgd3JhcHBlcnMgKHNlZSBweW1lbS5oKSAqLwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcgICAvKiBXSVRIX1BZTUFMTE9DICYmIFBZTUFMTE9DX0RFQlVHICovCisvKgorICogQmFzaWMgdHlwZXMKKyAqIEkgZG9uJ3QgY2FyZSBpZiB0aGVzZSBhcmUgZGVmaW5lZCBpbiA8c3lzL3R5cGVzLmg+IG9yIGVsc2V3aGVyZS4gQXhpb20uCisgKi8KKyN1bmRlZiAgdWNoYXIKKyNkZWZpbmUgdWNoYXIgICB1bnNpZ25lZCBjaGFyICAgLyogYXNzdW1pbmcgPT0gOCBiaXRzICAqLworCisjdW5kZWYgIHVpbnQKKyNkZWZpbmUgdWludCAgICB1bnNpZ25lZCBpbnQgICAgLyogYXNzdW1pbmcgPj0gMTYgYml0cyAqLworCisjdW5kZWYgdXB0cgorI2RlZmluZSB1cHRyICAgIHVpbnRwdHJfdAorCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmF3TWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z1Jhd0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmF3UmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnUmF3RnJlZSh2b2lkICpjdHgsIHZvaWQgKnApOworCiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOwogc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7Ci1zdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApOwogCiBzdGF0aWMgdm9pZCBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcyhjb25zdCB2b2lkICpwKTsKIHN0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhjaGFyIGFwaV9pZCwgY29uc3Qgdm9pZCAqcCk7Ci0jZW5kaWYKIAogI2lmIGRlZmluZWQoX19oYXNfZmVhdHVyZSkgIC8qIENsYW5nICovCiAgI2lmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpICAvKiBpcyBBU0FOIGVuYWJsZWQ/ICovCkBAIC0xNDUsOSArMTY2LDggQEAKICNlbHNlCiAjICBkZWZpbmUgUFlPQkpfRlVOQ1MgUFlSQVdfRlVOQ1MKICNlbmRpZgotI2RlZmluZSBQWU1FTV9GVU5DUyBQWVJBV19GVU5DUworI2RlZmluZSBQWU1FTV9GVU5DUyBQWU9CSl9GVU5DUwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKIHR5cGVkZWYgc3RydWN0IHsKICAgICAvKiBXZSB0YWcgZWFjaCBibG9jayB3aXRoIGFuIEFQSSBJRCBpbiBvcmRlciB0byB0YWcgQVBJIHZpb2xhdGlvbnMgKi8KICAgICBjaGFyIGFwaV9pZDsKQEAgLTE2MywxOSArMTgzLDIxIEBACiAgICAgeydvJywge05VTEwsIFBZT0JKX0ZVTkNTfX0KICAgICB9OwogCi0jZGVmaW5lIFBZREJHX0ZVTkNTIF9QeU1lbV9EZWJ1Z01hbGxvYywgX1B5TWVtX0RlYnVnQ2FsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCi0jZW5kaWYKKyNkZWZpbmUgUFlSQVdEQkdfRlVOQ1MgXAorICAgIF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYywgX1B5TWVtX0RlYnVnUmF3Q2FsbG9jLCBfUHlNZW1fRGVidWdSYXdSZWFsbG9jLCBfUHlNZW1fRGVidWdSYXdGcmVlCisjZGVmaW5lIFBZREJHX0ZVTkNTIFwKKyAgICBfUHlNZW1fRGVidWdNYWxsb2MsIF9QeU1lbV9EZWJ1Z0NhbGxvYywgX1B5TWVtX0RlYnVnUmVhbGxvYywgX1B5TWVtX0RlYnVnRnJlZQogCiBzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlNZW1fUmF3ID0gewotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgJl9QeU1lbV9EZWJ1Zy5yYXcsIFBZREJHX0ZVTkNTCisjaWZkZWYgUHlfREVCVUcKKyAgICAmX1B5TWVtX0RlYnVnLnJhdywgUFlSQVdEQkdfRlVOQ1MKICNlbHNlCiAgICAgTlVMTCwgUFlSQVdfRlVOQ1MKICNlbmRpZgogICAgIH07CiAKIHN0YXRpYyBQeU1lbUFsbG9jYXRvckV4IF9QeU1lbSA9IHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRworI2lmZGVmIFB5X0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5tZW0sIFBZREJHX0ZVTkNTCiAjZWxzZQogICAgIE5VTEwsIFBZTUVNX0ZVTkNTCkBAIC0xODMsMTYgKzIwNSw3NiBAQAogICAgIH07CiAKIHN0YXRpYyBQeU1lbUFsbG9jYXRvckV4IF9QeU9iamVjdCA9IHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRworI2lmZGVmIFB5X0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5vYmosIFBZREJHX0ZVTkNTCiAjZWxzZQogICAgIE5VTEwsIFBZT0JKX0ZVTkNTCiAjZW5kaWYKICAgICB9OwogCitpbnQKK19QeU1lbV9TZXR1cEFsbG9jYXRvcnMoY29uc3QgY2hhciAqb3B0KQoreworICAgIGlmIChvcHQgPT0gTlVMTCB8fCAqb3B0ID09ICdcMCcpIHsKKyAgICAgICAgLyogUFlUSE9OTUFMTE9DIGlzIGVtcHR5IG9yIGlzIG5vdCBzZXQgb3IgaWdub3JlZCAoLUUvLUkgY29tbWFuZCBsaW5lCisgICAgICAgICAgIG9wdGlvbnMpOiB1c2UgZGVmYXVsdCBhbGxvY2F0b3JzICovCisjaWZkZWYgUHlfREVCVUcKKyMgIGlmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICAgICAgb3B0ID0gInB5bWFsbG9jX2RlYnVnIjsKKyMgIGVsc2UKKyAgICAgICAgb3B0ID0gIm1hbGxvY19kZWJ1ZyI7CisjICBlbmRpZgorI2Vsc2UKKyAgIC8qICFQeV9ERUJVRyAqLworIyAgaWZkZWYgV0lUSF9QWU1BTExPQworICAgICAgICBvcHQgPSAicHltYWxsb2MiOworIyAgZWxzZQorICAgICAgICBvcHQgPSAibWFsbG9jIjsKKyMgIGVuZGlmCisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoc3RyY21wKG9wdCwgImRlYnVnIikgPT0gMCkgeworICAgICAgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyY21wKG9wdCwgIm1hbGxvYyIpID09IDAgfHwgc3RyY21wKG9wdCwgIm1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgeworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jID0ge05VTEwsIFBZUkFXX0ZVTkNTfTsKKworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJmFsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZhbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmYWxsb2MpOworCisgICAgICAgIGlmIChzdHJjbXAob3B0LCAibWFsbG9jX2RlYnVnIikgPT0gMCkKKyAgICAgICAgICAgIFB5TWVtX1NldHVwRGVidWdIb29rcygpOworICAgIH0KKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgZWxzZSBpZiAoc3RyY21wKG9wdCwgInB5bWFsbG9jIikgPT0gMAorICAgICAgICAgICAgIHx8IHN0cmNtcChvcHQsICJweW1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgeworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IHJhd19hbGxvYyA9IHtOVUxMLCBQWVJBV19GVU5DU307CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggbWVtX2FsbG9jID0ge05VTEwsIFBZTUVNX0ZVTkNTfTsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCBvYmpfYWxsb2MgPSB7TlVMTCwgUFlPQkpfRlVOQ1N9OworCisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmcmF3X2FsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZtZW1fYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJm9ial9hbGxvYyk7CisKKyAgICAgICAgaWYgKHN0cmNtcChvcHQsICJweW1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgICAgICAgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgLyogdW5rbm93biBhbGxvY2F0b3IgKi8KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogI3VuZGVmIFBZUkFXX0ZVTkNTCiAjdW5kZWYgUFlNRU1fRlVOQ1MKICN1bmRlZiBQWU9CSl9GVU5DUworI3VuZGVmIFBZUkFXREJHX0ZVTkNTCiAjdW5kZWYgUFlEQkdfRlVOQ1MKIAogc3RhdGljIFB5T2JqZWN0QXJlbmFBbGxvY2F0b3IgX1B5T2JqZWN0X0FyZW5hID0ge05VTEwsCkBAIC0yMDUsMjMgKzI4Nyw0NiBAQAogI2VuZGlmCiAgICAgfTsKIAorI2lmZGVmIFdJVEhfUFlNQUxMT0MKK3N0YXRpYyBpbnQKK19QeU1lbV9EZWJ1Z0VuYWJsZWQodm9pZCkKK3sKKyAgICByZXR1cm4gKF9QeU9iamVjdC5tYWxsb2MgPT0gX1B5TWVtX0RlYnVnTWFsbG9jKTsKK30KKworaW50CitfUHlNZW1fUHltYWxsb2NFbmFibGVkKHZvaWQpCit7CisgICAgaWYgKF9QeU1lbV9EZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICByZXR1cm4gKF9QeU1lbV9EZWJ1Zy5vYmouYWxsb2MubWFsbG9jID09IF9QeU9iamVjdF9NYWxsb2MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIChfUHlPYmplY3QubWFsbG9jID09IF9QeU9iamVjdF9NYWxsb2MpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkCiBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKIHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwogICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2M7CiAKKyAgICBhbGxvYy5tYWxsb2MgPSBfUHlNZW1fRGVidWdSYXdNYWxsb2M7CisgICAgYWxsb2MuY2FsbG9jID0gX1B5TWVtX0RlYnVnUmF3Q2FsbG9jOworICAgIGFsbG9jLnJlYWxsb2MgPSBfUHlNZW1fRGVidWdSYXdSZWFsbG9jOworICAgIGFsbG9jLmZyZWUgPSBfUHlNZW1fRGVidWdSYXdGcmVlOworCisgICAgaWYgKF9QeU1lbV9SYXcubWFsbG9jICE9IF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYykgeworICAgICAgICBhbGxvYy5jdHggPSAmX1B5TWVtX0RlYnVnLnJhdzsKKyAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZfUHlNZW1fRGVidWcucmF3LmFsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZhbGxvYyk7CisgICAgfQorCiAgICAgYWxsb2MubWFsbG9jID0gX1B5TWVtX0RlYnVnTWFsbG9jOwogICAgIGFsbG9jLmNhbGxvYyA9IF9QeU1lbV9EZWJ1Z0NhbGxvYzsKICAgICBhbGxvYy5yZWFsbG9jID0gX1B5TWVtX0RlYnVnUmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gX1B5TWVtX0RlYnVnRnJlZTsKIAotICAgIGlmIChfUHlNZW1fUmF3Lm1hbGxvYyAhPSBfUHlNZW1fRGVidWdNYWxsb2MpIHsKLSAgICAgICAgYWxsb2MuY3R4ID0gJl9QeU1lbV9EZWJ1Zy5yYXc7Ci0gICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmX1B5TWVtX0RlYnVnLnJhdy5hbGxvYyk7Ci0gICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmYWxsb2MpOwotICAgIH0KLQogICAgIGlmIChfUHlNZW0ubWFsbG9jICE9IF9QeU1lbV9EZWJ1Z01hbGxvYykgewogICAgICAgICBhbGxvYy5jdHggPSAmX1B5TWVtX0RlYnVnLm1lbTsKICAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZfUHlNZW1fRGVidWcubWVtLmFsbG9jKTsKQEAgLTIzMyw3ICszMzgsNiBAQAogICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJl9QeU1lbV9EZWJ1Zy5vYmouYWxsb2MpOwogICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJmFsbG9jKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZApAQCAtMjY0LDcgKzM2OCw2IEBACiAgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiBfUHlPYmplY3QgPSAqYWxsb2NhdG9yOyBicmVhazsKICAgICAvKiBpZ25vcmUgdW5rbm93biBkb21haW4gKi8KICAgICB9Ci0KIH0KIAogdm9pZApAQCAtNjQyLDIyICs3NDUsNiBAQAogI2RlZmluZSBTSU1QTEVMT0NLX0xPQ0sobG9jaykgICAvKiBhY3F1aXJlIHJlbGVhc2VkIGxvY2sgKi8KICNkZWZpbmUgU0lNUExFTE9DS19VTkxPQ0sobG9jaykgLyogcmVsZWFzZSBhY3F1aXJlZCBsb2NrICovCiAKLS8qCi0gKiBCYXNpYyB0eXBlcwotICogSSBkb24ndCBjYXJlIGlmIHRoZXNlIGFyZSBkZWZpbmVkIGluIDxzeXMvdHlwZXMuaD4gb3IgZWxzZXdoZXJlLiBBeGlvbS4KLSAqLwotI3VuZGVmICB1Y2hhcgotI2RlZmluZSB1Y2hhciAgIHVuc2lnbmVkIGNoYXIgICAvKiBhc3N1bWluZyA9PSA4IGJpdHMgICovCi0KLSN1bmRlZiAgdWludAotI2RlZmluZSB1aW50ICAgIHVuc2lnbmVkIGludCAgICAvKiBhc3N1bWluZyA+PSAxNiBiaXRzICovCi0KLSN1bmRlZiAgdWxvbmcKLSNkZWZpbmUgdWxvbmcgICB1bnNpZ25lZCBsb25nICAgLyogYXNzdW1pbmcgPj0gMzIgYml0cyAqLwotCi0jdW5kZWYgdXB0cgotI2RlZmluZSB1cHRyICAgIFB5X3VpbnRwdHJfdAotCiAvKiBXaGVuIHlvdSBzYXkgbWVtb3J5LCBteSBtaW5kIHJlYXNvbnMgaW4gdGVybXMgb2YgKHBvaW50ZXJzIHRvKSBibG9ja3MgKi8KIHR5cGVkZWYgdWNoYXIgYmxvY2s7CiAKQEAgLTk0OSwxMSArMTAzNiwxNSBAQAogICAgIHN0cnVjdCBhcmVuYV9vYmplY3QqIGFyZW5hb2JqOwogICAgIHVpbnQgZXhjZXNzOyAgICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIGFib3ZlIHBvb2wgYWxpZ25tZW50ICovCiAgICAgdm9pZCAqYWRkcmVzczsKKyAgICBzdGF0aWMgaW50IGRlYnVnX3N0YXRzID0gLTE7CiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIikpCisgICAgaWYgKGRlYnVnX3N0YXRzID09IC0xKSB7CisgICAgICAgIGNoYXIgKm9wdCA9IFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKTsKKyAgICAgICAgZGVidWdfc3RhdHMgPSAob3B0ICE9IE5VTEwgJiYgKm9wdCAhPSAnXDAnKTsKKyAgICB9CisgICAgaWYgKGRlYnVnX3N0YXRzKQogICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwotI2VuZGlmCisKICAgICBpZiAodW51c2VkX2FyZW5hX29iamVjdHMgPT0gTlVMTCkgewogICAgICAgICB1aW50IGk7CiAgICAgICAgIHVpbnQgbnVtYXJlbmFzOwpAQCAtOTY2LDcgKzEwNTcsNyBAQAogICAgICAgICBpZiAobnVtYXJlbmFzIDw9IG1heGFyZW5hcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBvdmVyZmxvdyAqLwogI2lmIFNJWkVPRl9TSVpFX1QgPD0gU0laRU9GX0lOVAotICAgICAgICBpZiAobnVtYXJlbmFzID4gUFlfU0laRV9NQVggLyBzaXplb2YoKmFyZW5hcykpCisgICAgICAgIGlmIChudW1hcmVuYXMgPiBTSVpFX01BWCAvIHNpemVvZigqYXJlbmFzKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBvdmVyZmxvdyAqLwogI2VuZGlmCiAgICAgICAgIG5ieXRlcyA9IG51bWFyZW5hcyAqIHNpemVvZigqYXJlbmFzKTsKQEAgLTE3MDksNyArMTgwMCw3IEBACiAKICNlbmRpZiAvKiBXSVRIX1BZTUFMTE9DICovCiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRworCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIC8qIEEgeC1wbGF0Zm9ybSBkZWJ1Z2dpbmcgYWxsb2NhdG9yLiAgVGhpcyBkb2Vzbid0IG1hbmFnZSBtZW1vcnkgZGlyZWN0bHksCiAgKiBpdCB3cmFwcyBhIHJlYWwgYWxsb2NhdG9yLCBhZGRpbmcgZXh0cmEgZGVidWdnaW5nIGluZm8gdG8gdGhlIG1lbW9yeSBibG9ja3MuCkBAIC0xNzY3LDMxICsxODU4LDYgQEAKICAgICB9CiB9CiAKLSNpZmRlZiBQeV9ERUJVRwotLyogSXMgdGFyZ2V0IGluIHRoZSBsaXN0PyAgVGhlIGxpc3QgaXMgdHJhdmVyc2VkIHZpYSB0aGUgbmV4dHBvb2wgcG9pbnRlcnMuCi0gKiBUaGUgbGlzdCBtYXkgYmUgTlVMTC10ZXJtaW5hdGVkLCBvciBjaXJjdWxhci4gIFJldHVybiAxIGlmIHRhcmdldCBpcyBpbgotICogbGlzdCwgZWxzZSAwLgotICovCi1zdGF0aWMgaW50Ci1wb29sX2lzX2luX2xpc3QoY29uc3QgcG9vbHAgdGFyZ2V0LCBwb29scCBsaXN0KQotewotICAgIHBvb2xwIG9yaWdsaXN0ID0gbGlzdDsKLSAgICBhc3NlcnQodGFyZ2V0ICE9IE5VTEwpOwotICAgIGlmIChsaXN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotICAgIGRvIHsKLSAgICAgICAgaWYgKHRhcmdldCA9PSBsaXN0KQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGxpc3QgPSBsaXN0LT5uZXh0cG9vbDsKLSAgICB9IHdoaWxlIChsaXN0ICE9IE5VTEwgJiYgbGlzdCAhPSBvcmlnbGlzdCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbHNlCi0jZGVmaW5lIHBvb2xfaXNfaW5fbGlzdChYLCBZKSAxCi0KLSNlbmRpZiAgLyogUHlfREVCVUcgKi8KLQogLyogTGV0IFMgPSBzaXplb2Yoc2l6ZV90KS4gIFRoZSBkZWJ1ZyBtYWxsb2MgYXNrcyBmb3IgNCpTIGV4dHJhIGJ5dGVzIGFuZAogICAgZmlsbHMgdGhlbSB3aXRoIHVzZWZ1bCBzdHVmZiwgaGVyZSBjYWxsaW5nIHRoZSB1bmRlcmx5aW5nIG1hbGxvYydzIHJlc3VsdCBwOgogCkBAIC0xODE5LDcgKzE4ODUsNyBAQAogKi8KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnQWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z1Jhd0FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKICAgICB1Y2hhciAqcDsgICAgICAgICAgIC8qIGJhc2UgYWRkcmVzcyBvZiBtYWxsb2MnZWQgYmxvY2sgKi8KQEAgLTE4NTYsMTggKzE5MjIsMTggQEAKIH0KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z1Jhd01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3QWxsb2MoMCwgY3R4LCBuYnl0ZXMpOwogfQogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCitfUHlNZW1fRGVidWdSYXdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgc2l6ZV90IG5ieXRlczsKICAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpOwogICAgIG5ieXRlcyA9IG5lbGVtICogZWxzaXplOwotICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygxLCBjdHgsIG5ieXRlcyk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0FsbG9jKDEsIGN0eCwgbmJ5dGVzKTsKIH0KIAogLyogVGhlIGRlYnVnIGZyZWUgZmlyc3QgY2hlY2tzIHRoZSAyKlNTVCBieXRlcyBvbiBlYWNoIGVuZCBmb3Igc2FuaXR5IChpbgpAQCAtMTg3Niw3ICsxOTQyLDcgQEAKICAgIFRoZW4gY2FsbHMgdGhlIHVuZGVybHlpbmcgZnJlZS4KICovCiBzdGF0aWMgdm9pZAotX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApCitfUHlNZW1fRGVidWdSYXdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCkKIHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCAqYXBpID0gKGRlYnVnX2FsbG9jX2FwaV90ICopY3R4OwogICAgIHVjaGFyICpxID0gKHVjaGFyICopcCAtIDIqU1NUOyAgLyogYWRkcmVzcyByZXR1cm5lZCBmcm9tIG1hbGxvYyAqLwpAQCAtMTg5Myw3ICsxOTU5LDcgQEAKIH0KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpCitfUHlNZW1fRGVidWdSYXdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcCwgc2l6ZV90IG5ieXRlcykKIHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCAqYXBpID0gKGRlYnVnX2FsbG9jX2FwaV90ICopY3R4OwogICAgIHVjaGFyICpxID0gKHVjaGFyICopcCwgKm9sZHE7CkBAIC0xOTAzLDcgKzE5NjksNyBAQAogICAgIGludCBpOwogCiAgICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKIAogICAgIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhhcGktPmFwaV9pZCwgcCk7CiAgICAgYnVtcHNlcmlhbG5vKCk7CkBAIC0xOTQ2LDYgKzIwMTIsNDQgQEAKICAgICByZXR1cm4gcTsKIH0KIAorc3RhdGljIHZvaWQKK19QeU1lbV9EZWJ1Z0NoZWNrR0lMKHZvaWQpCit7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoIVB5R0lMU3RhdGVfQ2hlY2soKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgY2FsbGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCBob2xkaW5nIHRoZSBHSUwiKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQoreworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrR0lMKCk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYyhjdHgsIG5ieXRlcyk7Cit9CisKK3N0YXRpYyB2b2lkICoKK19QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdDYWxsb2MoY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKworc3RhdGljIHZvaWQKK19QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpCit7CisgICAgX1B5TWVtX0RlYnVnQ2hlY2tHSUwoKTsKKyAgICBfUHlNZW1fRGVidWdSYXdGcmVlKGN0eCwgcHRyKTsKK30KKworc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdSZWFsbG9jKGN0eCwgcHRyLCBuYnl0ZXMpOworfQorCiAvKiBDaGVjayB0aGUgZm9yYmlkZGVuIGJ5dGVzIG9uIGJvdGggZW5kcyBvZiB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgcC4KICAqIElmIGFueXRoaW5nIGlzIHdyb25nLCBwcmludCBpbmZvIHRvIHN0ZGVyciB2aWEgX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MsCiAgKiBhbmQgY2FsbCBQeV9GYXRhbEVycm9yIHRvIGtpbGwgdGhlIHByb2dyYW0uCkBAIC0yMTA0LDkgKzIyMDgsMTIgQEAKICAgICAgICAgfQogICAgICAgICBmcHV0YygnXG4nLCBzdGRlcnIpOwogICAgIH0KKyAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworCisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgX1B5TWVtX0R1bXBUcmFjZWJhY2soZmlsZW5vKHN0ZGVyciksIHApOwogfQogCi0jZW5kaWYgIC8qIFBZTUFMTE9DX0RFQlVHICovCiAKIHN0YXRpYyBzaXplX3QKIHByaW50b25lKEZJTEUgKm91dCwgY29uc3QgY2hhciogbXNnLCBzaXplX3QgdmFsdWUpCkBAIC0yMTU4LDggKzIyNjUsMzAgQEAKICAgICAodm9pZClwcmludG9uZShvdXQsIGJ1ZjIsIG51bV9ibG9ja3MgKiBzaXplb2ZfYmxvY2spOwogfQogCisKICNpZmRlZiBXSVRIX1BZTUFMTE9DCiAKKyNpZmRlZiBQeV9ERUJVRworLyogSXMgdGFyZ2V0IGluIHRoZSBsaXN0PyAgVGhlIGxpc3QgaXMgdHJhdmVyc2VkIHZpYSB0aGUgbmV4dHBvb2wgcG9pbnRlcnMuCisgKiBUaGUgbGlzdCBtYXkgYmUgTlVMTC10ZXJtaW5hdGVkLCBvciBjaXJjdWxhci4gIFJldHVybiAxIGlmIHRhcmdldCBpcyBpbgorICogbGlzdCwgZWxzZSAwLgorICovCitzdGF0aWMgaW50Citwb29sX2lzX2luX2xpc3QoY29uc3QgcG9vbHAgdGFyZ2V0LCBwb29scCBsaXN0KQoreworICAgIHBvb2xwIG9yaWdsaXN0ID0gbGlzdDsKKyAgICBhc3NlcnQodGFyZ2V0ICE9IE5VTEwpOworICAgIGlmIChsaXN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIGRvIHsKKyAgICAgICAgaWYgKHRhcmdldCA9PSBsaXN0KQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGxpc3QgPSBsaXN0LT5uZXh0cG9vbDsKKyAgICB9IHdoaWxlIChsaXN0ICE9IE5VTEwgJiYgbGlzdCAhPSBvcmlnbGlzdCk7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogLyogUHJpbnQgc3VtbWFyeSBpbmZvIHRvICJvdXQiIGFib3V0IHRoZSBzdGF0ZSBvZiBweW1hbGxvYydzIHN0cnVjdHVyZXMuCiAgKiBJbiBQeV9ERUJVRyBtb2RlLCBhbHNvIHBlcmZvcm0gc29tZSBleHBlbnNpdmUgaW50ZXJuYWwgY29uc2lzdGVuY3kKICAqIGNoZWNrcy4KQEAgLTIyMzMsNyArMjM2Miw5IEBACiAKICAgICAgICAgICAgIGlmIChwLT5yZWYuY291bnQgPT0gMCkgewogICAgICAgICAgICAgICAgIC8qIGN1cnJlbnRseSB1bnVzZWQgKi8KKyNpZmRlZiBQeV9ERUJVRwogICAgICAgICAgICAgICAgIGFzc2VydChwb29sX2lzX2luX2xpc3QocCwgYXJlbmFzW2ldLmZyZWVwb29scykpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICArK251bXBvb2xzW3N6XTsKQEAgLTIyNzMsOSArMjQwNCw4IEBACiAgICAgICAgIHF1YW50aXphdGlvbiArPSBwICogKChQT09MX1NJWkUgLSBQT09MX09WRVJIRUFEKSAlIHNpemUpOwogICAgIH0KICAgICBmcHV0YygnXG4nLCBvdXQpOwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyB0aW1lcyBvYmplY3QgbWFsbG9jIGNhbGxlZCIsIHNlcmlhbG5vKTsKLSNlbmRpZgorICAgIGlmIChfUHlNZW1fRGVidWdFbmFibGVkKCkpCisgICAgICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgdGltZXMgb2JqZWN0IG1hbGxvYyBjYWxsZWQiLCBzZXJpYWxubyk7CiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgYWxsb2NhdGVkIHRvdGFsIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCk7CiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgcmVjbGFpbWVkIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCAtIG5hcmVuYXMpOwogICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGhpZ2h3YXRlciBtYXJrIiwgbmFyZW5hc19oaWdod2F0ZXIpOwpAQCAtMjMwMyw2ICsyNDMzLDcgQEAKIAogI2VuZGlmIC8qICNpZmRlZiBXSVRIX1BZTUFMTE9DICovCiAKKwogI2lmZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgogLyogTWFrZSB0aGlzIGZ1bmN0aW9uIGxhc3Qgc28gZ2NjIHdvbid0IGlubGluZSBpdCBzaW5jZSB0aGUgZGVmaW5pdGlvbiBpcwogICogYWZ0ZXIgdGhlIHJlZmVyZW5jZS4KZGlmZiAtLWdpdCBhL09iamVjdHMvb2RpY3RvYmplY3QuYyBiL09iamVjdHMvb2RpY3RvYmplY3QuYwppbmRleCBhNjk2M2Q3Li4yMmIxZjFkIDEwMDY0NAotLS0gYS9PYmplY3RzL29kaWN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9vZGljdG9iamVjdC5jCkBAIC0zOSw3ICszOSw3IEBACiAgICBfX2dldGl0ZW1fXygpLCBnZXQoKSwgZXRjLiBhY2NvcmRpbmdseS4KIAogVGhlIGFwcHJvYWNoIHdpdGggdGhlIGxlYXN0IHBlcmZvcm1hbmNlIGltcGFjdCAodGltZSBhbmQgc3BhY2UpIGlzICMyLAotbWlycm9yaW5nIHRoZSBrZXkgb3JkZXIgb2YgZGljdCdzIGRrX2VudGllcyB3aXRoIGFuIGFycmF5IG9mIG5vZGUgcG9pbnRlcnMuCittaXJyb3JpbmcgdGhlIGtleSBvcmRlciBvZiBkaWN0J3MgZGtfZW50cmllcyB3aXRoIGFuIGFycmF5IG9mIG5vZGUgcG9pbnRlcnMuCiBXaGlsZSBsb29rZGljdCgpIGFuZCBmcmllbmRzIChka19sb29rdXApIGRvbid0IGdpdmUgdXMgdGhlIGluZGV4IGludG8gdGhlCiBhcnJheSwgd2UgbWFrZSB1c2Ugb2YgcG9pbnRlciBhcml0aG1ldGljIHRvIGdldCB0aGF0IGluZGV4LiAgQW4gYWx0ZXJuYXRpdmUKIHdvdWxkIGJlIHRvIHJlZmFjdG9yIGxvb2tkaWN0KCkgdG8gcHJvdmlkZSB0aGUgaW5kZXgsIGV4cGxpY2l0bHkgZXhwb3NpbmcKQEAgLTUzNiwxNCArNTM2LDE3IEBACiBfb2RpY3RfZ2V0X2luZGV4X3JhdyhQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyID0gTlVMTDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzOworICAgIFB5X3NzaXplX3QgaXg7CiAKLSAgICBlcCA9IChrZXlzLT5ka19sb29rdXApKChQeURpY3RPYmplY3QgKilvZCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAoa2V5cy0+ZGtfbG9va3VwKSgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIHJldHVybiBrZXlzLT5ka19uZW50cmllczsgIC8qIGluZGV4IG9mIG5ldyBlbnRyeSAqLworICAgIH0KKyAgICBpZiAoaXggPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgLyogV2UgdXNlIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBnZXQgdGhlIGVudHJ5J3MgaW5kZXggaW50byB0aGUgdGFibGUuICovCi0gICAgcmV0dXJuIGVwIC0ga2V5cy0+ZGtfZW50cmllczsKKyAgICByZXR1cm4gaXg7CiB9CiAKIC8qIFJlcGxhY2Ugb2QtPm9kX2Zhc3Rfbm9kZXMgd2l0aCBhIG5ldyB0YWJsZSBtYXRjaGluZyB0aGUgc2l6ZSBvZiBkaWN0J3MuICovCkBAIC01NjUsNyArNTY4LDcgQEAKICAgICAvKiBDb3B5IHRoZSBjdXJyZW50IG5vZGVzIGludG8gdGhlIHRhYmxlLiAqLwogICAgIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSB7CiAgICAgICAgIGkgPSBfb2RpY3RfZ2V0X2luZGV4X3JhdyhvZCwgX29kaWN0bm9kZV9LRVkobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29kaWN0bm9kZV9IQVNIKG5vZGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSk7CiAgICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgUHlNZW1fRlJFRShmYXN0X25vZGVzKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE0MjQsMTQgKzE0MjcsMTMgQEAKICAqIE9yZGVyZWREaWN0IG1lbWJlcnMKICAqLwogCi0vKiB0cF9tZW1iZXJzICovCisvKiB0cF9nZXRzZXQgKi8KIAotc3RhdGljIFB5TWVtYmVyRGVmIG9kaWN0X21lbWJlcnNbXSA9IHsKLSAgICB7Il9fZGljdF9fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5T0RpY3RPYmplY3QsIG9kX2luc3RfZGljdCksIFJFQURPTkxZfSwKLSAgICB7MH0KK3N0YXRpYyBQeUdldFNldERlZiBvZGljdF9nZXRzZXRbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KIH07CiAKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogT3JkZXJlZERpY3QgdHlwZSBzbG90IG1ldGhvZHMKICAqLwpAQCAtMTQ2Myw3ICsxNDY1LDcgQEAKICAgICArK3RzdGF0ZS0+dHJhc2hfZGVsZXRlX25lc3Rpbmc7CiAKICAgICBQeV9UUkFTSENBTl9TQUZFX0VORChzZWxmKQotfTsKK30KIAogLyogdHBfcmVwciAqLwogCkBAIC0xNTQwLDcgKzE1NDIsNyBAQAogICAgIFB5X1hERUNSRUYocGllY2VzKTsKICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgcmV0dXJuIHJlc3VsdDsKLX07Cit9CiAKIC8qIHRwX2RvYyAqLwogCkBAIC0xNjEyLDcgKzE2MTQsNyBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9Ci19OworfQogCiAvKiB0cF9pdGVyICovCiAKQEAgLTE2MjAsNyArMTYyMiw3IEBACiBvZGljdF9pdGVyKFB5T0RpY3RPYmplY3QgKm9kKQogewogICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KG9kLCBfb2RpY3RfSVRFUl9LRVlTKTsKLX07Cit9CiAKIC8qIHRwX2luaXQgKi8KIApAQCAtMTY0NiwyNyArMTY0OCwxOSBAQAogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotfTsKK30KIAogLyogdHBfbmV3ICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvZGljdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlPRGljdE9iamVjdCAqb2Q7CiAKLSAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgb2QgPSAoUHlPRGljdE9iamVjdCAqKVB5RGljdF9UeXBlLnRwX25ldyh0eXBlLCBhcmdzLCBrd2RzKTsKLSAgICBpZiAob2QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgaWYgKG9kID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIG9kLT5vZF9pbnN0X2RpY3QgPSBkaWN0OwogICAgIC8qIHR5cGUgY29uc3RydWN0b3IgZmlsbHMgdGhlIG1lbW9yeSB3aXRoIHplcm9zIChzZWUKICAgICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jKCkpLCB0aGVyZSBpcyBubyBuZWVkIHRvIHNldCB0aGVtIHRvIHplcm8gYWdhaW4gKi8KICAgICBpZiAoX29kaWN0X3Jlc2l6ZShvZCkgPCAwKSB7CkBAIC0xNzA4LDggKzE3MDIsOCBAQAogICAgIChnZXRpdGVyZnVuYylvZGljdF9pdGVyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBvZGljdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICBvZGljdF9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIG9kaWN0X2dldHNldCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgJlB5RGljdF9UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KQEAgLTE3MjksNyArMTcyMyw3IEBACiBQeU9iamVjdCAqCiBQeU9EaWN0X05ldyh2b2lkKSB7CiAgICAgcmV0dXJuIG9kaWN0X25ldygmUHlPRGljdF9UeXBlLCBOVUxMLCBOVUxMKTsKLX07Cit9CiAKIHN0YXRpYyBpbnQKIF9QeU9EaWN0X1NldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlLApAQCAtMTc0Nyw3ICsxNzQxLDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzOwotfTsKK30KIAogaW50CiBQeU9EaWN0X1NldEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCkBAIC0xNzU2LDcgKzE3NTAsNyBAQAogICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIF9QeU9EaWN0X1NldEl0ZW1fS25vd25IYXNoKG9kLCBrZXksIHZhbHVlLCBoYXNoKTsKLX07Cit9CiAKIGludAogUHlPRGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSkKQEAgLTE3NjksNyArMTc2Myw3IEBACiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gX1B5RGljdF9EZWxJdGVtX0tub3duSGFzaChvZCwga2V5LCBoYXNoKTsKLX07Cit9CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjM2Miw4ICsyMzU2LDcgQEAKICAgICAgICAgUHlPYmplY3QgKm90aGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsgIC8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLwogICAgICAgICBhc3NlcnQob3RoZXIgIT0gTlVMTCk7CiAgICAgICAgIFB5X0lOQ1JFRihvdGhlcik7Ci0gICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikgfHwKLSAgICAgICAgICAgIF9QeU9iamVjdF9IYXNBdHRySWQob3RoZXIsICZQeUlkX2l0ZW1zKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgaWYgUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtczsKICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpCiAgICAgICAgICAgICAgICAgaXRlbXMgPSBQeURpY3RfSXRlbXMob3RoZXIpOwpAQCAtMjQwNiw2ICsyMzk5LDIwIEBACiAgICAgICAgICAgICBpZiAocmVzICE9IDAgfHwgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG90aGVyLCAmUHlJZF9pdGVtcykpIHsgIC8qIG5ldmVyIGZhaWxzICovCisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXM7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gUHlEaWN0X0l0ZW1zKG90aGVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3RoZXIsICZQeUlkX2l0ZW1zLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcik7CisgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBpdGVtcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBvdGhlcik7CiAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCmluZGV4IDI4OGJlNGYuLmU3YzM3MDkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvcmFuZ2VvYmplY3QuYworKysgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKQEAgLTYsNyArNiw3IEBACiAvKiBTdXBwb3J0IG9iamVjdHMgd2hvc2UgbGVuZ3RoIGlzID4gUFlfU1NJWkVfVF9NQVguCiAKICAgIFRoaXMgY291bGQgYmUgc3BlZCB1cCBmb3Igc21hbGwgUHlMb25ncyBpZiB0aGV5IGZpdCBpbiBhIFB5X3NzaXplX3QuCi0gICBUaGlzIG9ubHkgbWF0dGVycyBvbiBXaW42NC4gIFRob3VnaCB3ZSBjb3VsZCB1c2UgUFlfTE9OR19MT05HIHdoaWNoCisgICBUaGlzIG9ubHkgbWF0dGVycyBvbiBXaW42NC4gIFRob3VnaCB3ZSBjb3VsZCB1c2UgbG9uZyBsb25nIHdoaWNoCiAgICB3b3VsZCBwcmVzdW1hYmx5IGhlbHAgcGVyZi4KICovCiAKQEAgLTI5LDE3ICsyOSwxMCBAQAogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDEpOwogCiAgICAgc3RlcCA9IFB5TnVtYmVyX0luZGV4KHN0ZXApOwotICAgIGlmIChzdGVwKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaXN0ZXAgPSBQeU51bWJlcl9Bc1NzaXplX3Qoc3RlcCwgTlVMTCk7Ci0gICAgICAgIGlmIChpc3RlcCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAvKiBJZ25vcmUgT3ZlcmZsb3dFcnJvciwgd2Uga25vdyB0aGUgdmFsdWUgaXNuJ3QgMC4gKi8KLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXN0ZXAgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInJhbmdlKCkgYXJnIDMgbXVzdCBub3QgYmUgemVybyIpOwotICAgICAgICAgICAgUHlfQ0xFQVIoc3RlcCk7Ci0gICAgICAgIH0KKyAgICBpZiAoc3RlcCAmJiBfUHlMb25nX1NpZ24oc3RlcCkgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyYW5nZSgpIGFyZyAzIG11c3Qgbm90IGJlIHplcm8iKTsKKyAgICAgICAgUHlfQ0xFQVIoc3RlcCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0ZXA7CkBAIC0xMjksOSArMTIyLDkgQEAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvYmo7CiAKICAgICAvKiBGYWlsZWQgdG8gY3JlYXRlIG9iamVjdCwgcmVsZWFzZSBhdHRyaWJ1dGVzICovCi0gICAgUHlfWERFQ1JFRihzdGFydCk7Ci0gICAgUHlfWERFQ1JFRihzdG9wKTsKLSAgICBQeV9YREVDUkVGKHN0ZXApOworICAgIFB5X0RFQ1JFRihzdGFydCk7CisgICAgUHlfREVDUkVGKHN0b3ApOworICAgIFB5X0RFQ1JFRihzdGVwKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMTk2LDcgKzE4OSw3IEBACiAgICAgLyogaWYgKGxvID49IGhpKSwgcmV0dXJuIGxlbmd0aCBvZiAwLiAqLwogICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wobG8sIGhpLCBQeV9HRSk7CiAgICAgaWYgKGNtcF9yZXN1bHQgIT0gMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0ZXApOworICAgICAgICBQeV9ERUNSRUYoc3RlcCk7CiAgICAgICAgIGlmIChjbXBfcmVzdWx0IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwpAQCAtMjI1LDkgKzIxOCw5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIAogICBGYWlsOgorICAgIFB5X0RFQ1JFRihzdGVwKTsKICAgICBQeV9YREVDUkVGKHRtcDIpOwogICAgIFB5X1hERUNSRUYoZGlmZik7Ci0gICAgUHlfWERFQ1JFRihzdGVwKTsKICAgICBQeV9YREVDUkVGKHRtcDEpOwogICAgIFB5X1hERUNSRUYob25lKTsKICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL09iamVjdHMvc2V0b2JqZWN0LmMgYi9PYmplY3RzL3NldG9iamVjdC5jCmluZGV4IDRlZjY5MmQuLjU4NDYwNDUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc2V0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9zZXRvYmplY3QuYwpAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCiAKIC8qIE9iamVjdCB1c2VkIGFzIGR1bW15IGtleSB0byBmaWxsIGRlbGV0ZWQgZW50cmllcyAqLwogc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7CkBAIC00OCwxOSArNDcsMjAgQEAKIHN0YXRpYyBzZXRlbnRyeSAqCiBzZXRfbG9va2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewotICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKLSAgICBzZXRlbnRyeSAqZnJlZXNsb3QgPSBOVUxMOworICAgIHNldGVudHJ5ICp0YWJsZTsKICAgICBzZXRlbnRyeSAqZW50cnk7Ci0gICAgc2l6ZV90IHBlcnR1cmIgPSBoYXNoOworICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gc28tPm1hc2s7CiAgICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOyAvKiBVbnNpZ25lZCBmb3IgZGVmaW5lZCBvdmVyZmxvdyBiZWhhdmlvciAqLwogICAgIHNpemVfdCBqOwogICAgIGludCBjbXA7CiAKLSAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKKyAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CiAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIGVudHJ5OwogCisgICAgcGVydHVyYiA9IGhhc2g7CisKICAgICB3aGlsZSAoMSkgewogICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKQEAgLTcwLDggKzcwLDkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCiAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQotICAgICAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoc3RhcnRrZXksIGtleSkpCisgICAgICAgICAgICAgICAgJiYgX1B5VW5pY29kZV9FUShzdGFydGtleSwga2V5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICB0YWJsZSA9IHNvLT50YWJsZTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKQEAgLTgzLDE0ICs4NCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsgICAgICAgICAgICAgICAgIC8qIGhlbHAgYXZvaWQgYSByZWdpc3RlciBzcGlsbCAqLwogICAgICAgICB9Ci0gICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAtMSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKIAogICAgICAgICBpZiAoaSArIExJTkVBUl9QUk9CRVMgPD0gbWFzaykgewogICAgICAgICAgICAgZm9yIChqID0gMCA7IGogPCBMSU5FQVJfUFJPQkVTIDsgaisrKSB7CiAgICAgICAgICAgICAgICAgZW50cnkrKzsKLSAgICAgICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IDAgJiYgZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKQEAgLTk4LDggKzk3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIF9QeVVuaWNvZGVfRVEoc3RhcnRrZXksIGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwpAQCAtMTExLDcgKzExMSwxMDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSAoaSAqIDUgKyAxICsgcGVydHVyYikgJiBtYXNrOworCisgICAgICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgc2V0X3RhYmxlX3Jlc2l6ZShQeVNldE9iamVjdCAqLCBQeV9zc2l6ZV90KTsKKworc3RhdGljIGludAorc2V0X2FkZF9lbnRyeShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQoreworICAgIHNldGVudHJ5ICp0YWJsZTsKKyAgICBzZXRlbnRyeSAqZnJlZXNsb3Q7CisgICAgc2V0ZW50cnkgKmVudHJ5OworICAgIHNpemVfdCBwZXJ0dXJiOworICAgIHNpemVfdCBtYXNrOworICAgIHNpemVfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IgKi8KKyAgICBzaXplX3QgajsKKyAgICBpbnQgY21wOworCisgICAgLyogUHJlLWluY3JlbWVudCBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCBhcmJpdHJhcnkgY29kZSBpbiB0aGUgcmljaAorICAgICAgIGNvbXBhcmlzb24gZnJvbSBkZWFsbG9jYXRpbmcgdGhlIGtleSBqdXN0IGJlZm9yZSB0aGUgaW5zZXJ0aW9uLiAqLworICAgIFB5X0lOQ1JFRihrZXkpOworCisgIHJlc3RhcnQ6CisKKyAgICBtYXNrID0gc28tPm1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CisKKyAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CisgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgZ290byBmb3VuZF91bnVzZWQ7CisKKyAgICBmcmVlc2xvdCA9IE5VTEw7CisgICAgcGVydHVyYiA9IGhhc2g7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIC8qIHN0YXJ0a2V5IGNhbm5vdCBiZSBhIGR1bW15IGJlY2F1c2UgdGhlIGR1bW15IGhhc2ggZmllbGQgaXMgLTEgKi8KKyAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CisgICAgICAgICAgICBpZiAoc3RhcnRrZXkgPT0ga2V5KQorICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkKKyAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgdGFibGUgPSBzby0+dGFibGU7CisgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaWtlbHkgKi8KKyAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gY29tcGFyaXNvbl9lcnJvcjsKKyAgICAgICAgICAgIC8qIENvbnRpbnVpbmcgdGhlIHNlYXJjaCBmcm9tIHRoZSBjdXJyZW50IGVudHJ5IG9ubHkgbWFrZXMKKyAgICAgICAgICAgICAgIHNlbnNlIGlmIHRoZSB0YWJsZSBhbmQgZW50cnkgYXJlIHVuY2hhbmdlZDsgb3RoZXJ3aXNlLAorICAgICAgICAgICAgICAgd2UgaGF2ZSB0byByZXN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZyAqLworICAgICAgICAgICAgaWYgKHRhYmxlICE9IHNvLT50YWJsZSB8fCBlbnRyeS0+a2V5ICE9IHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKKyAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsgICAgICAgICAgICAgICAgIC8qIGhlbHAgYXZvaWQgYSByZWdpc3RlciBzcGlsbCAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCisgICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OworCisgICAgICAgIGlmIChpICsgTElORUFSX1BST0JFUyA8PSBtYXNrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwIDsgaiA8IExJTkVBUl9QUk9CRVMgOyBqKyspIHsKKyAgICAgICAgICAgICAgICBlbnRyeSsrOworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAwICYmIGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF91bnVzZWRfb3JfZHVtbXk7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0a2V5ID09IGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gY29tcGFyaXNvbl9lcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlICE9IHNvLT50YWJsZSB8fCBlbnRyeS0+a2V5ICE9IHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtYXNrID0gc28tPm1hc2s7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOSwyOSArMjE2LDUxIEBACiAgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CiAgICAgICAgIGkgPSAoaSAqIDUgKyAxICsgcGVydHVyYikgJiBtYXNrOwogCi0gICAgICAgIGVudHJ5ID0gJnRhYmxlW2ldOworICAgICAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CiAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICBnb3RvIGZvdW5kX3VudXNlZF9vcl9kdW1teTsKICAgICB9Ci0gIGZvdW5kX251bGw6Ci0gICAgcmV0dXJuIGZyZWVzbG90ID09IE5VTEwgPyBlbnRyeSA6IGZyZWVzbG90OworCisgIGZvdW5kX3VudXNlZF9vcl9kdW1teToKKyAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgZ290byBmb3VuZF91bnVzZWQ7CisgICAgc28tPnVzZWQrKzsKKyAgICBmcmVlc2xvdC0+a2V5ID0ga2V5OworICAgIGZyZWVzbG90LT5oYXNoID0gaGFzaDsKKyAgICByZXR1cm4gMDsKKworICBmb3VuZF91bnVzZWQ6CisgICAgc28tPmZpbGwrKzsKKyAgICBzby0+dXNlZCsrOworICAgIGVudHJ5LT5rZXkgPSBrZXk7CisgICAgZW50cnktPmhhc2ggPSBoYXNoOworICAgIGlmICgoc2l6ZV90KXNvLT5maWxsKjMgPCBtYXNrKjIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCk7CisKKyAgZm91bmRfYWN0aXZlOgorICAgIFB5X0RFQ1JFRihrZXkpOworICAgIHJldHVybiAwOworCisgIGNvbXBhcmlzb25fZXJyb3I6CisgICAgUHlfREVDUkVGKGtleSk7CisgICAgcmV0dXJuIC0xOwogfQogCiAvKgogSW50ZXJuYWwgcm91dGluZSB1c2VkIGJ5IHNldF90YWJsZV9yZXNpemUoKSB0byBpbnNlcnQgYW4gaXRlbSB3aGljaCBpcwoga25vd24gdG8gYmUgYWJzZW50IGZyb20gdGhlIHNldC4gIFRoaXMgcm91dGluZSBhbHNvIGFzc3VtZXMgdGhhdAogdGhlIHNldCBjb250YWlucyBubyBkZWxldGVkIGVudHJpZXMuICBCZXNpZGVzIHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0LAotdXNpbmcgc2V0X2luc2VydF9jbGVhbigpIGluIHNldF90YWJsZV9yZXNpemUoKSBpcyBkYW5nZXJvdXMgKFNGIGJ1ZyAjMTQ1NjIwOSkuCi1Ob3RlIHRoYXQgbm8gcmVmY291bnRzIGFyZSBjaGFuZ2VkIGJ5IHRoaXMgcm91dGluZTsgaWYgbmVlZGVkLCB0aGUgY2FsbGVyCi1pcyByZXNwb25zaWJsZSBmb3IgaW5jcmVmJ2luZyBga2V5YC4KK3RoZXJlIGlzIGFsc28gc2FmZXR5IGJlbmVmaXQgc2luY2UgdXNpbmcgc2V0X2FkZF9lbnRyeSgpIHJpc2tzIG1ha2luZworYSBjYWxsYmFjayBpbiB0aGUgbWlkZGxlIG9mIGEgc2V0X3RhYmxlX3Jlc2l6ZSgpLCBzZWUgaXNzdWUgMTQ1NjIwOS4KK1RoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRoZSBrZXkncyByZWZlcmVuY2UgY291bnQgYW5kCit0aGUgc2V0b2JqZWN0J3MgZmlsbCBhbmQgdXNlZCBmaWVsZHMuCiAqLwogc3RhdGljIHZvaWQKLXNldF9pbnNlcnRfY2xlYW4oUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKK3NldF9pbnNlcnRfY2xlYW4oc2V0ZW50cnkgKnRhYmxlLCBzaXplX3QgbWFzaywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7Ci0gICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBzaXplX3QgcGVydHVyYiA9IGhhc2g7Ci0gICAgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KXNvLT5tYXNrOwogICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBzaXplX3QgajsKIApAQCAtMTYyLDQ1ICsyODEsMTEgQEAKICAgZm91bmRfbnVsbDoKICAgICBlbnRyeS0+a2V5ID0ga2V5OwogICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKLSAgICBzby0+ZmlsbCsrOwotICAgIHNvLT51c2VkKys7CiB9CiAKIC8qID09PT09PT09IEVuZCBsb2dpYyBmb3IgcHJvYmluZyB0aGUgaGFzaCB0YWJsZSA9PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKLQotLyoKLUludGVybmFsIHJvdXRpbmUgdG8gaW5zZXJ0IGEgbmV3IGtleSBpbnRvIHRoZSB0YWJsZS4KLVVzZWQgYnkgdGhlIHB1YmxpYyBpbnNlcnQgcm91dGluZS4KLUVhdHMgYSByZWZlcmVuY2UgdG8ga2V5LgotKi8KLXN0YXRpYyBpbnQKLXNldF9pbnNlcnRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCi17Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwotCi0gICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICBpZiAoZW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpIHsKLSAgICAgICAgLyogVU5VU0VEICovCi0gICAgICAgIGVudHJ5LT5rZXkgPSBrZXk7Ci0gICAgICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKLSAgICAgICAgc28tPmZpbGwrKzsKLSAgICAgICAgc28tPnVzZWQrKzsKLSAgICB9IGVsc2UgaWYgKGVudHJ5LT5rZXkgPT0gZHVtbXkpIHsKLSAgICAgICAgLyogRFVNTVkgKi8KLSAgICAgICAgZW50cnktPmtleSA9IGtleTsKLSAgICAgICAgZW50cnktPmhhc2ggPSBoYXNoOwotICAgICAgICBzby0+dXNlZCsrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIEFDVElWRSAqLwotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIC8qCiBSZXN0cnVjdHVyZSB0aGUgdGFibGUgYnkgYWxsb2NhdGluZyBhIG5ldyB0YWJsZSBhbmQgcmVpbnNlcnRpbmcgYWxsCiBrZXlzIGFnYWluLiAgV2hlbiBlbnRyaWVzIGhhdmUgYmVlbiBkZWxldGVkLCB0aGUgbmV3IHRhYmxlIG1heQpAQCAtMjEzLDEwICsyOTgsMTMgQEAKICAgICBzZXRlbnRyeSAqb2xkdGFibGUsICpuZXd0YWJsZSwgKmVudHJ5OwogICAgIFB5X3NzaXplX3Qgb2xkZmlsbCA9IHNvLT5maWxsOwogICAgIFB5X3NzaXplX3Qgb2xkdXNlZCA9IHNvLT51c2VkOworICAgIFB5X3NzaXplX3Qgb2xkbWFzayA9IHNvLT5tYXNrOworICAgIHNpemVfdCBuZXdtYXNrOwogICAgIGludCBpc19vbGR0YWJsZV9tYWxsb2NlZDsKICAgICBzZXRlbnRyeSBzbWFsbF9jb3B5W1B5U2V0X01JTlNJWkVdOwogCiAgICAgYXNzZXJ0KG1pbnVzZWQgPj0gMCk7CisgICAgbWludXNlZCA9IChtaW51c2VkID4gNTAwMDApID8gbWludXNlZCAqIDIgOiBtaW51c2VkICogNDsKIAogICAgIC8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLwogICAgIC8qIFhYWCBzcGVlZC11cCB3aXRoIGludHJpbnNpY3MgKi8KQEAgLTI2NCwyNSArMzUyLDI0IEBACiAgICAgLyogTWFrZSB0aGUgc2V0IGVtcHR5LCB1c2luZyB0aGUgbmV3IHRhYmxlLiAqLwogICAgIGFzc2VydChuZXd0YWJsZSAhPSBvbGR0YWJsZSk7CiAgICAgbWVtc2V0KG5ld3RhYmxlLCAwLCBzaXplb2Yoc2V0ZW50cnkpICogbmV3c2l6ZSk7Ci0gICAgc28tPmZpbGwgPSAwOwotICAgIHNvLT51c2VkID0gMDsKKyAgICBzby0+ZmlsbCA9IG9sZHVzZWQ7CisgICAgc28tPnVzZWQgPSBvbGR1c2VkOwogICAgIHNvLT5tYXNrID0gbmV3c2l6ZSAtIDE7CiAgICAgc28tPnRhYmxlID0gbmV3dGFibGU7CiAKICAgICAvKiBDb3B5IHRoZSBkYXRhIG92ZXI7IHRoaXMgaXMgcmVmY291bnQtbmV1dHJhbCBmb3IgYWN0aXZlIGVudHJpZXM7CiAgICAgICAgZHVtbXkgZW50cmllcyBhcmVuJ3QgY29waWVkIG92ZXIsIG9mIGNvdXJzZSAqLworICAgIG5ld21hc2sgPSAoc2l6ZV90KXNvLT5tYXNrOwogICAgIGlmIChvbGRmaWxsID09IG9sZHVzZWQpIHsKLSAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBvbGR1c2VkID4gMDsgZW50cnkrKykgeworICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IGVudHJ5IDw9IG9sZHRhYmxlICsgb2xkbWFzazsgZW50cnkrKykgewogICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG9sZHVzZWQtLTsKLSAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihuZXd0YWJsZSwgbmV3bWFzaywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBvbGR1c2VkID4gMDsgZW50cnkrKykgeworICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IGVudHJ5IDw9IG9sZHRhYmxlICsgb2xkbWFzazsgZW50cnkrKykgewogICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gTlVMTCAmJiBlbnRyeS0+a2V5ICE9IGR1bW15KSB7Ci0gICAgICAgICAgICAgICAgb2xkdXNlZC0tOwotICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKG5ld3RhYmxlLCBuZXdtYXNrLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTIsNTcgKzM3OSwzMCBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBDQVVUSU9OOiBzZXRfYWRkX2tleS9lbnRyeSgpIG11c3QgZ3VhcmFudGVlIGl0IHdvbid0IHJlc2l6ZSB0aGUgdGFibGUgKi8KLQogc3RhdGljIGludAotc2V0X2FkZF9lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKK3NldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewotICAgIFB5X3NzaXplX3Qgbl91c2VkOwotICAgIFB5T2JqZWN0ICprZXkgPSBlbnRyeS0+a2V5OwotICAgIFB5X2hhc2hfdCBoYXNoID0gZW50cnktPmhhc2g7CisgICAgc2V0ZW50cnkgKmVudHJ5OwogCi0gICAgYXNzZXJ0KHNvLT5maWxsIDw9IHNvLT5tYXNrKTsgIC8qIGF0IGxlYXN0IG9uZSBlbXB0eSBzbG90ICovCi0gICAgbl91c2VkID0gc28tPnVzZWQ7Ci0gICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIGhhc2gpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICghKHNvLT51c2VkID4gbl91c2VkICYmIHNvLT5maWxsKjMgPj0gKHNvLT5tYXNrKzEpKjIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQ+NTAwMDAgPyBzby0+dXNlZCoyIDogc28tPnVzZWQqNCk7Ci19Ci0KLXN0YXRpYyBpbnQKLXNldF9hZGRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKLXsKLSAgICBzZXRlbnRyeSBlbnRyeTsKLSAgICBQeV9oYXNoX3QgaGFzaDsKLQotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewotICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotICAgICAgICBpZiAoaGFzaCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZW50cnkua2V5ID0ga2V5OwotICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgIHJldHVybiBzZXRfYWRkX2VudHJ5KHNvLCAmZW50cnkpOworICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIGtleSwgaGFzaCk7CisgICAgaWYgKGVudHJ5ICE9IE5VTEwpCisgICAgICAgIHJldHVybiBlbnRyeS0+a2V5ICE9IE5VTEw7CisgICAgcmV0dXJuIC0xOwogfQogCiAjZGVmaW5lIERJU0NBUkRfTk9URk9VTkQgMAogI2RlZmluZSBESVNDQVJEX0ZPVU5EIDEKIAogc3RhdGljIGludAotc2V0X2Rpc2NhcmRfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBzZXRlbnRyeSAqb2xkZW50cnkpCitzZXRfZGlzY2FyZF9lbnRyeShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeU9iamVjdCAqb2xkX2tleTsKIAotICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIG9sZGVudHJ5LT5rZXksIG9sZGVudHJ5LT5oYXNoKTsKKyAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOwogICAgIGlmIChlbnRyeSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCAgfHwgIGVudHJ5LT5rZXkgPT0gZHVtbXkpCisgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIERJU0NBUkRfTk9URk9VTkQ7CiAgICAgb2xkX2tleSA9IGVudHJ5LT5rZXk7CiAgICAgZW50cnktPmtleSA9IGR1bW15OwpAQCAtMzUzLDIyICs0MTMsNDUgQEAKIH0KIAogc3RhdGljIGludAotc2V0X2Rpc2NhcmRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKK3NldF9hZGRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKIHsKLSAgICBzZXRlbnRyeSBlbnRyeTsKICAgICBQeV9oYXNoX3QgaGFzaDsKIAotICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKLQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAogICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZW50cnkua2V5ID0ga2V5OwotICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgIHJldHVybiBzZXRfZGlzY2FyZF9lbnRyeShzbywgJmVudHJ5KTsKKyAgICByZXR1cm4gc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKTsKK30KKworc3RhdGljIGludAorc2V0X2NvbnRhaW5zX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfaGFzaF90IGhhc2g7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7Cit9CisKK3N0YXRpYyBpbnQKK3NldF9kaXNjYXJkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfaGFzaF90IGhhc2g7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBzZXRfZGlzY2FyZF9lbnRyeShzbywga2V5LCBoYXNoKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQ0OSwyMCArNTMyLDIyIEBACiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3QgbWFzazsKLSAgICBzZXRlbnRyeSAqdGFibGU7CisgICAgc2V0ZW50cnkgKmVudHJ5OwogCiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwogICAgIGkgPSAqcG9zX3B0cjsKICAgICBhc3NlcnQoaSA+PSAwKTsKLSAgICB0YWJsZSA9IHNvLT50YWJsZTsKICAgICBtYXNrID0gc28tPm1hc2s7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAodGFibGVbaV0ua2V5ID09IE5VTEwgfHwgdGFibGVbaV0ua2V5ID09IGR1bW15KSkKKyAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CisgICAgd2hpbGUgKGkgPD0gbWFzayAmJiAoZW50cnktPmtleSA9PSBOVUxMIHx8IGVudHJ5LT5rZXkgPT0gZHVtbXkpKSB7CiAgICAgICAgIGkrKzsKKyAgICAgICAgZW50cnkrKzsKKyAgICB9CiAgICAgKnBvc19wdHIgPSBpKzE7CiAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICByZXR1cm4gMDsKLSAgICBhc3NlcnQodGFibGVbaV0ua2V5ICE9IE5VTEwpOwotICAgICplbnRyeV9wdHIgPSAmdGFibGVbaV07CisgICAgYXNzZXJ0KGVudHJ5ICE9IE5VTEwpOworICAgICplbnRyeV9wdHIgPSBlbnRyeTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtNTYwLDggKzY0NSw4IEBACiAgICAgICogaW5jcmVtZW50YWxseSByZXNpemluZyBhcyB3ZSBpbnNlcnQgbmV3IGtleXMuICBFeHBlY3QKICAgICAgKiB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gKG9yIGZldykgb3ZlcmxhcHBpbmcga2V5cy4KICAgICAgKi8KLSAgICBpZiAoKHNvLT5maWxsICsgb3RoZXItPnVzZWQpKjMgPj0gKHNvLT5tYXNrKzEpKjIpIHsKLSAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgKHNvLT51c2VkICsgb3RoZXItPnVzZWQpKjIpICE9IDApCisgICAgaWYgKChzby0+ZmlsbCArIG90aGVyLT51c2VkKSozID49IHNvLT5tYXNrKjIpIHsKKyAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQgKyBvdGhlci0+dXNlZCkgIT0gMCkKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzb19lbnRyeSA9IHNvLT50YWJsZTsKQEAgLTU4NiwxMSArNjcxLDE1IEBACiAKICAgICAvKiBJZiBvdXIgdGFibGUgaXMgZW1wdHksIHdlIGNhbiB1c2Ugc2V0X2luc2VydF9jbGVhbigpICovCiAgICAgaWYgKHNvLT5maWxsID09IDApIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFzazsgaSsrLCBvdGhlcl9lbnRyeSsrKSB7CisgICAgICAgIHNldGVudHJ5ICpuZXd0YWJsZSA9IHNvLT50YWJsZTsKKyAgICAgICAgc2l6ZV90IG5ld21hc2sgPSAoc2l6ZV90KXNvLT5tYXNrOworICAgICAgICBzby0+ZmlsbCA9IG90aGVyLT51c2VkOworICAgICAgICBzby0+dXNlZCA9IG90aGVyLT51c2VkOworICAgICAgICBmb3IgKGkgPSBvdGhlci0+bWFzayArIDE7IGkgPiAwIDsgaS0tLCBvdGhlcl9lbnRyeSsrKSB7CiAgICAgICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OwogICAgICAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teSkgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGtleSwgb3RoZXJfZW50cnktPmhhc2gpOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4obmV3dGFibGUsIG5ld21hc2ssIGtleSwgb3RoZXJfZW50cnktPmhhc2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtNjAxLDQ2ICs2OTAsMTMgQEAKICAgICAgICAgb3RoZXJfZW50cnkgPSAmb3RoZXItPnRhYmxlW2ldOwogICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OwogICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLXNldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKLXsKLSAgICBQeU9iamVjdCAqa2V5OwotICAgIHNldGVudHJ5ICpsdV9lbnRyeTsKLQotICAgIGx1X2VudHJ5ID0gc2V0X2xvb2trZXkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKLSAgICBpZiAobHVfZW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGtleSA9IGx1X2VudHJ5LT5rZXk7Ci0gICAgcmV0dXJuIGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teTsKLX0KLQotc3RhdGljIGludAotc2V0X2NvbnRhaW5zX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCi17Ci0gICAgc2V0ZW50cnkgZW50cnk7Ci0gICAgUHlfaGFzaF90IGhhc2g7Ci0KLSAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKLSAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICByZXR1cm4gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCAmZW50cnkpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3BvcChQeVNldE9iamVjdCAqc28pCiB7CkBAIC02ODIsNDMgKzczOCw2NCBAQAogICAgIHJldHVybiAwOwogfQogCisvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaCB2YWx1ZXMuCisgICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdXNlIGNhc2VzIGhhdmUgbWFueSBjb21iaW5hdGlvbnMgb2YgYQorICAgc21hbGwgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggbmVhcmJ5IGhhc2hlcyBzbyB0aGF0IG1hbnkgZGlzdGluY3QKKyAgIGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5IGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KKworc3RhdGljIFB5X3VoYXNoX3QKK19zaHVmZmxlX2JpdHMoUHlfdWhhc2hfdCBoKQoreworICAgIHJldHVybiAoKGggXiA4OTg2OTc0N1VMKSBeIChoIDw8IDE2KSkgKiAzNjQ0Nzk4MTY3VUw7Cit9CisKKy8qIE1vc3Qgb2YgdGhlIGNvbnN0YW50cyBpbiB0aGlzIGhhc2ggYWxnb3JpdGhtIGFyZSByYW5kb21seSBjaG9zZW4KKyAgIGxhcmdlIHByaW1lcyB3aXRoICJpbnRlcmVzdGluZyBiaXQgcGF0dGVybnMiIGFuZCB0aGF0IHBhc3NlZCB0ZXN0cworICAgZm9yIGdvb2QgY29sbGlzaW9uIHN0YXRpc3RpY3Mgb24gYSB2YXJpZXR5IG9mIHByb2JsZW1hdGljIGRhdGFzZXRzCisgICBpbmNsdWRpbmcgcG93ZXJzZXRzIGFuZCBncmFwaCBzdHJ1Y3R1cmVzIChzdWNoIGFzIERhdmlkIEVwcHN0ZWluJ3MKKyAgIGdyYXBoIHJlY2lwZXMgaW4gTGliL3Rlc3QvdGVzdF9zZXQucHkpICovCisKIHN0YXRpYyBQeV9oYXNoX3QKIGZyb3plbnNldF9oYXNoKFB5T2JqZWN0ICpzZWxmKQogewotICAgIC8qIE1vc3Qgb2YgdGhlIGNvbnN0YW50cyBpbiB0aGlzIGhhc2ggYWxnb3JpdGhtIGFyZSByYW5kb21seSBjaG9vc2VuCi0gICAgICAgbGFyZ2UgcHJpbWVzIHdpdGggImludGVyZXN0aW5nIGJpdCBwYXR0ZXJucyIgYW5kIHRoYXQgcGFzc2VkCi0gICAgICAgdGVzdHMgZm9yIGdvb2QgY29sbGlzaW9uIHN0YXRpc3RpY3Mgb24gYSB2YXJpZXR5IG9mIHByb2JsZW1hdGljCi0gICAgICAgZGF0YXNldHMgc3VjaCBhczoKLQotICAgICAgICAgIHBzID0gW10KLSAgICAgICAgICBmb3IgciBpbiByYW5nZSgyMSk6Ci0gICAgICAgICAgICAgIHBzICs9IGl0ZXJ0b29scy5jb21iaW5hdGlvbnMocmFuZ2UoMjApLCByKQotICAgICAgICAgIG51bV9kaXN0aW5jdF9oYXNoZXMgPSBsZW4oe2hhc2goZnJvemVuc2V0KHMpKSBmb3IgcyBpbiBwc30pCi0KLSAgICAqLwogICAgIFB5U2V0T2JqZWN0ICpzbyA9IChQeVNldE9iamVjdCAqKXNlbGY7Ci0gICAgUHlfdWhhc2hfdCBoLCBoYXNoID0gMTkyNzg2ODIzN1VMOworICAgIFB5X3VoYXNoX3QgaGFzaCA9IDA7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIFB5X3NzaXplX3QgcG9zID0gMDsKIAogICAgIGlmIChzby0+aGFzaCAhPSAtMSkKICAgICAgICAgcmV0dXJuIHNvLT5oYXNoOwogCi0gICAgaGFzaCAqPSAoUHlfdWhhc2hfdClQeVNldF9HRVRfU0laRShzZWxmKSArIDE7Ci0gICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIC8qIFdvcmsgdG8gaW5jcmVhc2UgdGhlIGJpdCBkaXNwZXJzaW9uIGZvciBjbG9zZWx5IHNwYWNlZCBoYXNoCi0gICAgICAgICAgIHZhbHVlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55Ci0gICAgICAgICAgIGNvbWJpbmF0aW9ucyBvZiBhIHNtYWxsIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIG5lYXJieQotICAgICAgICAgICBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5Ci0gICAgICAgICAgIGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KLSAgICAgICAgaCA9IGVudHJ5LT5oYXNoOwotICAgICAgICBoYXNoIF49ICgoaCBeIDg5ODY5NzQ3VUwpIF4gKGggPDwgMTYpKSAqIDM2NDQ3OTgxNjdVTDsKLSAgICB9Ci0gICAgLyogTWFrZSB0aGUgZmluYWwgcmVzdWx0IHNwcmVhZC1vdXQgaW4gYSBkaWZmZXJlbnQgcGF0dGVybgotICAgICAgIHRoYW4gdGhlIGFsZ29yaXRobSBmb3IgdHVwbGVzIG9yIG90aGVyIHB5dGhvbiBvYmplY3RzLiAqLworICAgIC8qIFhvci1pbiBzaHVmZmxlZCBiaXRzIGZyb20gZXZlcnkgZW50cnkncyBoYXNoIGZpZWxkIGJlY2F1c2UgeG9yIGlzCisgICAgICAgY29tbXV0YXRpdmUgYW5kIGEgZnJvemVuc2V0IGhhc2ggc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIG9yZGVyLgorCisgICAgICAgRm9yIHNwZWVkLCBpbmNsdWRlIG51bGwgZW50cmllcyBhbmQgZHVtbXkgZW50cmllcyBhbmQgdGhlbgorICAgICAgIHN1YnRyYWN0IG91dCB0aGVpciBlZmZlY3QgYWZ0ZXJ3YXJkcyBzbyB0aGF0IHRoZSBmaW5hbCBoYXNoCisgICAgICAgZGVwZW5kcyBvbmx5IG9uIGFjdGl2ZSBlbnRyaWVzLiAgVGhpcyBhbGxvd3MgdGhlIGNvZGUgdG8gYmUKKyAgICAgICB2ZWN0b3JpemVkIGJ5IHRoZSBjb21waWxlciBhbmQgaXQgc2F2ZXMgdGhlIHVucHJlZGljdGFibGUKKyAgICAgICBicmFuY2hlcyB0aGF0IHdvdWxkIGFyaXNlIHdoZW4gdHJ5aW5nIHRvIGV4Y2x1ZGUgbnVsbCBhbmQgZHVtbXkKKyAgICAgICBlbnRyaWVzIG9uIGV2ZXJ5IGl0ZXJhdGlvbi4gKi8KKworICAgIGZvciAoZW50cnkgPSBzby0+dGFibGU7IGVudHJ5IDw9ICZzby0+dGFibGVbc28tPm1hc2tdOyBlbnRyeSsrKQorICAgICAgICBoYXNoIF49IF9zaHVmZmxlX2JpdHMoZW50cnktPmhhc2gpOworCisgICAgLyogUmVtb3ZlIHRoZSBlZmZlY3Qgb2YgYW4gb2RkIG51bWJlciBvZiBOVUxMIGVudHJpZXMgKi8KKyAgICBpZiAoKHNvLT5tYXNrICsgMSAtIHNvLT5maWxsKSAmIDEpCisgICAgICAgIGhhc2ggXj0gX3NodWZmbGVfYml0cygwKTsKKworICAgIC8qIFJlbW92ZSB0aGUgZWZmZWN0IG9mIGFuIG9kZCBudW1iZXIgb2YgZHVtbXkgZW50cmllcyAqLworICAgIGlmICgoc28tPmZpbGwgLSBzby0+dXNlZCkgJiAxKQorICAgICAgICBoYXNoIF49IF9zaHVmZmxlX2JpdHMoLTEpOworCisgICAgLyogRmFjdG9yIGluIHRoZSBudW1iZXIgb2YgYWN0aXZlIGVudHJpZXMgKi8KKyAgICBoYXNoIF49ICgoUHlfdWhhc2hfdClQeVNldF9HRVRfU0laRShzZWxmKSArIDEpICogMTkyNzg2ODIzN1VMOworCisgICAgLyogRGlzcGVyc2UgcGF0dGVybnMgYXJpc2luZyBpbiBuZXN0ZWQgZnJvemVuc2V0cyAqLwogICAgIGhhc2ggPSBoYXNoICogNjkwNjlVICsgOTA3MTMzOTIzVUw7CisKKyAgICAvKiAtMSBpcyByZXNlcnZlZCBhcyBhbiBlcnJvciBjb2RlICovCiAgICAgaWYgKGhhc2ggPT0gKFB5X3VoYXNoX3QpLTEpCiAgICAgICAgIGhhc2ggPSA1OTA5MjM3MTNVTDsKKwogICAgIHNvLT5oYXNoID0gaGFzaDsKICAgICByZXR1cm4gaGFzaDsKIH0KQEAgLTg2NSw3ICs5NDIsNyBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKXNldGl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtOTEwLDE4ICs5ODcsMTQgQEAKICAgICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcga2V5cy4gIEV4cGVjdAogICAgICAgICAqIHRoYXQgdGhlcmUgd2lsbCBiZSBubyAob3IgZmV3KSBvdmVybGFwcGluZyBrZXlzLgogICAgICAgICAqLwotICAgICAgICBpZiAoZGljdHNpemUgPT0gLTEpCisgICAgICAgIGlmIChkaWN0c2l6ZSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmICgoc28tPmZpbGwgKyBkaWN0c2l6ZSkqMyA+PSAoc28tPm1hc2srMSkqMikgewotICAgICAgICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIChzby0+dXNlZCArIGRpY3RzaXplKSoyKSAhPSAwKQorICAgICAgICBpZiAoKHNvLT5maWxsICsgZGljdHNpemUpKjMgPj0gc28tPm1hc2sqMikgeworICAgICAgICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkICsgZGljdHNpemUpICE9IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChfUHlEaWN0X05leHQob3RoZXIsICZwb3MsICZrZXksICZ2YWx1ZSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICBzZXRlbnRyeSBhbl9lbnRyeTsKLQotICAgICAgICAgICAgYW5fZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgICAgICBhbl9lbnRyeS5rZXkgPSBrZXk7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSkKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTk3MCw5ICsxMDQzLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYWtlX25ld19zZXQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7Ci0gICAgUHlTZXRPYmplY3QgKnNvID0gTlVMTDsKKyAgICBQeVNldE9iamVjdCAqc287CiAKLSAgICAvKiBjcmVhdGUgUHlTZXRPYmplY3Qgc3RydWN0dXJlICovCiAgICAgc28gPSAoUHlTZXRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc28gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMDE1LDcgKzEwODcsOCBAQAogewogICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IE5VTEwsICpyZXN1bHQ7CiAKLSAgICBpZiAodHlwZSA9PSAmUHlGcm96ZW5TZXRfVHlwZSAmJiAhX1B5QXJnX05vS2V5d29yZHMoImZyb3plbnNldCgpIiwga3dkcykpCisgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiB0eXBlID09ICZQeUZyb3plblNldF9UeXBlCisgICAgICAgICYmICFfUHlBcmdfTm9LZXl3b3JkcygiZnJvemVuc2V0KCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsIHR5cGUtPnRwX25hbWUsIDAsIDEsICZpdGVyYWJsZSkpCkBAIC0xMDQyLDI0ICsxMTE1LDkgQEAKICAgICByZXR1cm4gZW1wdHlmcm96ZW5zZXQ7CiB9CiAKLWludAotUHlTZXRfQ2xlYXJGcmVlTGlzdCh2b2lkKQotewotICAgIHJldHVybiAwOwotfQotCi12b2lkCi1QeVNldF9GaW5pKHZvaWQpCi17Ci0gICAgUHlfQ0xFQVIoZW1wdHlmcm96ZW5zZXQpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBpZiAodHlwZSA9PSAmUHlTZXRfVHlwZSAmJiAhX1B5QXJnX05vS2V5d29yZHMoInNldCgpIiwga3dkcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIG1ha2VfbmV3X3NldCh0eXBlLCBOVUxMKTsKIH0KIApAQCAtMTIwMSw2ICsxMjU5LDggQEAKIHsKICAgICBQeVNldE9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICprZXksICppdCwgKnRtcDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpCiAgICAgICAgIHJldHVybiBzZXRfY29weShzbyk7CkBAIC0xMjIwLDEzICsxMjgwLDE1IEBACiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoc2V0X25leHQoKFB5U2V0T2JqZWN0ICopb3RoZXIsICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgZW50cnkpOwotICAgICAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7CisgICAgICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocnYpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGVudHJ5KSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTI0MiwzMiArMTMwNCwxNSBAQAogICAgIH0KIAogICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGludCBydjsKLSAgICAgICAgc2V0ZW50cnkgZW50cnk7Ci0gICAgICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotCi0gICAgICAgIGlmIChoYXNoID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgICAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCAmZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlmIChydikgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCAmZW50cnkpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwga2V5LCBoYXNoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgIH0KQEAgLTEyNzcsNiArMTMyMiwxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKGl0KTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzNjMsNiArMTQxMyw3IEBACiBzZXRfaXNkaXNqb2ludChQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKICAgICBQeU9iamVjdCAqa2V5LCAqaXQsICp0bXA7CisgICAgaW50IHJ2OwogCiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKSB7CiAgICAgICAgIGlmIChQeVNldF9HRVRfU0laRShzbykgPT0gMCkKQEAgLTEzODEsOCArMTQzMiw4IEBACiAgICAgICAgICAgICBvdGhlciA9IHRtcDsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoc2V0X25leHQoKFB5U2V0T2JqZWN0ICopb3RoZXIsICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgZW50cnkpOwotICAgICAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBpZiAocnYpCiAgICAgICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMTM5NSw4ICsxNDQ2LDYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICBpbnQgcnY7Ci0gICAgICAgIHNldGVudHJ5IGVudHJ5OwogICAgICAgICBQeV9oYXNoX3QgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKIAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkgewpAQCAtMTQwNCwxMSArMTQ1Myw5IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7CisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBrZXksIGhhc2gpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTQyOSw2ICsxNDc2LDEwIEBACiBzdGF0aWMgaW50CiBzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7CisgICAgaWYgKFB5U2V0X0dFVF9TSVpFKHNvKSA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgcmV0dXJuIHNldF9jbGVhcl9pbnRlcm5hbChzbyk7CiAKQEAgLTE0MzcsNyArMTQ4OCw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKIAogICAgICAgICB3aGlsZSAoc2V0X25leHQoKFB5U2V0T2JqZWN0ICopb3RoZXIsICZwb3MsICZlbnRyeSkpCi0gICAgICAgICAgICBpZiAoc2V0X2Rpc2NhcmRfZW50cnkoc28sIGVudHJ5KSA9PSAtMSkKKyAgICAgICAgICAgIGlmIChzZXRfZGlzY2FyZF9lbnRyeShzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKmtleSwgKml0OwpAQCAtMTQ0Niw3ICsxNDk3LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2tleShzbywga2V5KSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2tleShzbywga2V5KSA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE0NTcsMTAgKzE1MDgsMTAgQEAKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIC8qIElmIG1vcmUgdGhhbiAxLzUgYXJlIGR1bW1pZXMsIHRoZW4gcmVzaXplIHRoZW0gYXdheS4gKi8KLSAgICBpZiAoKHNvLT5maWxsIC0gc28tPnVzZWQpICogNSA8IHNvLT5tYXNrKQorICAgIC8qIElmIG1vcmUgdGhhbiAxLzR0aCBhcmUgZHVtbWllcywgdGhlbiByZXNpemUgdGhlbSBhd2F5LiAqLworICAgIGlmICgoc2l6ZV90KShzby0+ZmlsbCAtIHNvLT51c2VkKSA8PSAoc2l6ZV90KXNvLT5tYXNrIC8gNCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkPjUwMDAwID8gc28tPnVzZWQqMiA6IHNvLT51c2VkKjQpOworICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNDg3LDcgKzE1MzgsNyBAQAogICAgIHJlc3VsdCA9IHNldF9jb3B5KHNvKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoKFB5U2V0T2JqZWN0ICopIHJlc3VsdCwgb3RoZXIpICE9IC0xKQorICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoKFB5U2V0T2JqZWN0ICopIHJlc3VsdCwgb3RoZXIpID09IDApCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDk3LDggKzE1NDgsMTUgQEAKIHNldF9kaWZmZXJlbmNlKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIGludCBydjsKKworICAgIGlmIChQeVNldF9HRVRfU0laRShzbykgPT0gMCkgeworICAgICAgICByZXR1cm4gc2V0X2NvcHkoc28pOworICAgIH0KIAogICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpICAmJiAhUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKSB7CiAgICAgICAgIHJldHVybiBzZXRfY29weV9hbmRfZGlmZmVyZW5jZShzbywgb3RoZXIpOwpAQCAtMTUxNiwxNyArMTU3NCwxNSBAQAogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkgewogICAgICAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgICAgIHNldGVudHJ5IGVudHJ5Y29weTsKLSAgICAgICAgICAgIGludCBydjsKLSAgICAgICAgICAgIGVudHJ5Y29weS5oYXNoID0gZW50cnktPmhhc2g7Ci0gICAgICAgICAgICBlbnRyeWNvcHkua2V5ID0gZW50cnktPmtleTsKLSAgICAgICAgICAgIHJ2ID0gX1B5RGljdF9Db250YWlucyhvdGhlciwgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICAgICAgICAgIHJ2ID0gX1B5RGljdF9Db250YWlucyhvdGhlciwga2V5LCBoYXNoKTsKICAgICAgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsICZlbnRyeWNvcHkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNTM3LDEzICsxNTkzLDE1IEBACiAKICAgICAvKiBJdGVyYXRlIG92ZXIgc28sIGNoZWNraW5nIGZvciBjb21tb24gZWxlbWVudHMgaW4gb3RoZXIuICovCiAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwgZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwga2V5LCBoYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJ2KSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGVudHJ5KSkgeworICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0xNjA1LDI5ICsxNjYzLDI0IEBACiAgICAgUHlTZXRPYmplY3QgKm90aGVyc2V0OwogICAgIFB5T2JqZWN0ICprZXk7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIHNldGVudHJ5ICplbnRyeTsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpCiAgICAgICAgIHJldHVybiBzZXRfY2xlYXIoc28pOwogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkgewogICAgICAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgICAgIGludCBydjsKLSAgICAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgICAgIHdoaWxlIChfUHlEaWN0X05leHQob3RoZXIsICZwb3MsICZrZXksICZ2YWx1ZSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICBzZXRlbnRyeSBhbl9lbnRyeTsKLQogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBhbl9lbnRyeS5oYXNoID0gaGFzaDsKLSAgICAgICAgICAgIGFuX2VudHJ5LmtleSA9IGtleTsKLQotICAgICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywgJmFuX2VudHJ5KTsKLSAgICAgICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChydiA9PSBESVNDQVJEX05PVEZPVU5EKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTY0NywxMyArMTcwMCwxNSBAQAogICAgIH0KIAogICAgIHdoaWxlIChzZXRfbmV4dChvdGhlcnNldCwgJnBvcywgJmVudHJ5KSkgewotICAgICAgICBpbnQgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywgZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICBydiA9IHNldF9kaXNjYXJkX2VudHJ5KHNvLCBrZXksIGhhc2gpOworICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXJzZXQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBlbnRyeSkpIHsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyc2V0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE3MTUsNiArMTc3MCw3IEBACiB7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewogICAgICAgICBQeU9iamVjdCAqdG1wLCAqcmVzdWx0OwpAQCAtMTcyOSw4ICsxNzg1LDggQEAKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogCiAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwgZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpCisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KChQeVNldE9iamVjdCAqKW90aGVyLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCFydikKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTE4MjEsNyArMTg3Nyw3IEBACiAgICAgaW50IHJ2OwogCiAgICAgcnYgPSBzZXRfY29udGFpbnNfa2V5KHNvLCBrZXkpOwotICAgIGlmIChydiA9PSAtMSkgeworICAgIGlmIChydiA8IDApIHsKICAgICAgICAgaWYgKCFQeVNldF9DaGVjayhrZXkpIHx8ICFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xODQwLDcgKzE4OTYsNyBAQAogICAgIGxvbmcgcmVzdWx0OwogCiAgICAgcmVzdWx0ID0gc2V0X2NvbnRhaW5zKHNvLCBrZXkpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgaWYgKHJlc3VsdCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKIH0KQEAgLTE4NTQsNyArMTkxMCw3IEBACiAgICAgaW50IHJ2OwogCiAgICAgcnYgPSBzZXRfZGlzY2FyZF9rZXkoc28sIGtleSk7Ci0gICAgaWYgKHJ2ID09IC0xKSB7CisgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICBpZiAoIVB5U2V0X0NoZWNrKGtleSkgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTg2Myw3ICsxOTE5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywgdG1wa2V5KTsKICAgICAgICAgUHlfREVDUkVGKHRtcGtleSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgaWYgKHJ2IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTg4Niw3ICsxOTQyLDcgQEAKICAgICBpbnQgcnY7CiAKICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywga2V5KTsKLSAgICBpZiAocnYgPT0gLTEpIHsKKyAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgIGlmICghUHlTZXRfQ2hlY2soa2V5KSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xODk1LDcgKzE5NTEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfa2V5KHNvLCB0bXBrZXkpOwogICAgICAgICBQeV9ERUNSRUYodG1wa2V5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICBpZiAocnYgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTk0OSwxMyArMjAwNSwxMiBAQAogewogICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNlbGYpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5U2V0X0NoZWNrKHNlbGYpICYmICFfUHlBcmdfTm9LZXl3b3Jkcygic2V0KCkiLCBrd2RzKSkKKyAgICBpZiAoa3dkcyAhPSBOVUxMICYmICFfUHlBcmdfTm9LZXl3b3Jkcygic2V0KCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgMCwgMSwgJml0ZXJhYmxlKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHNldF9jbGVhcl9pbnRlcm5hbChzZWxmKTsKKyAgICBpZiAoc2VsZi0+ZmlsbCkKKyAgICAgICAgc2V0X2NsZWFyX2ludGVybmFsKHNlbGYpOwogICAgIHNlbGYtPmhhc2ggPSAtMTsKICAgICBpZiAoaXRlcmFibGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTIyLDcgKzIxNzcsNyBAQAogICAgICBjb3B5X2RvY30sCiAgICAgeyJkaWZmZXJlbmNlIiwgICAgICAoUHlDRnVuY3Rpb24pc2V0X2RpZmZlcmVuY2VfbXVsdGksICAgICAgTUVUSF9WQVJBUkdTLAogICAgICBkaWZmZXJlbmNlX2RvY30sCi0gICAgeyJpbnRlcnNlY3Rpb24iLChQeUNGdW5jdGlvbilzZXRfaW50ZXJzZWN0aW9uX211bHRpLCAgICAgICAgTUVUSF9WQVJBUkdTLAorICAgIHsiaW50ZXJzZWN0aW9uIiwgICAgKFB5Q0Z1bmN0aW9uKXNldF9pbnRlcnNlY3Rpb25fbXVsdGksICAgIE1FVEhfVkFSQVJHUywKICAgICAgaW50ZXJzZWN0aW9uX2RvY30sCiAgICAgeyJpc2Rpc2pvaW50IiwgICAgICAoUHlDRnVuY3Rpb24pc2V0X2lzZGlzam9pbnQsICAgIE1FVEhfTywKICAgICAgaXNkaXNqb2ludF9kb2N9LApAQCAtMjE5Myw3ICsyMjQ4LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKXNldF90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KXNldF9jbGVhcl9pbnRlcm5hbCwgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgKHJpY2hjbXBmdW5jKXNldF9yaWNoY29tcGFyZSwgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihQeVNldE9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoUHlTZXRPYmplY3QsIHdlYWtyZWZsaXN0KSwgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAoZ2V0aXRlcmZ1bmMpc2V0X2l0ZXIsICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBmcm96ZW5zZXRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCkBAIC0yMjc3LDYgKzIzMzIsMTggQEAKIH0KIAogaW50CitQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQKK1B5U2V0X0Zpbmkodm9pZCkKK3sKKyAgICBQeV9DTEVBUihlbXB0eWZyb3plbnNldCk7Cit9CisKK2ludAogX1B5U2V0X05leHRFbnRyeShQeU9iamVjdCAqc2V0LCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeV9oYXNoX3QgKmhhc2gpCiB7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmggYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAppbmRleCAwZmM2YjU4Li5hOWQwYTM0IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaApAQCAtMSw2ICsxLDggQEAKIC8qIHN0cmluZ2xpYjogY29kZWMgaW1wbGVtZW50YXRpb25zICovCiAKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorI2lmICFTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyBlcnJvciAiY29kZWNzLmggaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKKyNlbmRpZgogCiAvKiBNYXNrIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKICAgIG5vbi1BU0NJSSwgVVRGOC1lbmNvZGVkIGNoYXIuICovCkBAIC0yNjMsNDkgKzI2NSwzMyBAQAogI2RlZmluZSBNQVhfU0hPUlRfVU5JQ0hBUlMgMzAwICAvKiBsYXJnZXN0IHNpemUgd2UnbGwgZG8gb24gdGhlIHN0YWNrICovCiAKICAgICBQeV9zc2l6ZV90IGk7ICAgICAgICAgICAgICAgIC8qIGluZGV4IGludG8gcyBvZiBuZXh0IGlucHV0IGJ5dGUgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgIC8qIHJlc3VsdCBzdHJpbmcgb2JqZWN0ICovCiAgICAgY2hhciAqcDsgICAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGZyZWUgYnl0ZSBpbiBvdXRwdXQgYnVmZmVyICovCi0gICAgUHlfc3NpemVfdCBuYWxsb2NhdGVkOyAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgYWxsb2NhdGVkICovCi0gICAgUHlfc3NpemVfdCBubmVlZGVkOyAgICAgICAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgbmVlZGVkICovCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogI2VuZGlmCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKICAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSAyOwotICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogMl07CiAjZWxpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDM7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiAzXTsKICNlbHNlIC8qICBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gNCAqLwogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDQ7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiA0XTsKICNlbmRpZgorICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzc2VydChzaXplID49IDApOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKLSAgICBpZiAoc2l6ZSA8PSBNQVhfU0hPUlRfVU5JQ0hBUlMpIHsKLSAgICAgICAgLyogV3JpdGUgaW50byB0aGUgc3RhY2sgYnVmZmVyOyBuYWxsb2NhdGVkIGNhbid0IG92ZXJmbG93LgotICAgICAgICAgKiBBdCB0aGUgZW5kLCB3ZSdsbCBhbGxvY2F0ZSBleGFjdGx5IGFzIG11Y2ggaGVhcCBzcGFjZSBhcyBpdAotICAgICAgICAgKiB0dXJucyBvdXQgd2UgbmVlZC4KLSAgICAgICAgICovCi0gICAgICAgIG5hbGxvY2F0ZWQgPSBQeV9TQUZFX0RPV05DQVNUKHNpemVvZihzdGFja2J1ZiksIHNpemVfdCwgaW50KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsgICAvKiB3aWxsIGFsbG9jYXRlIGFmdGVyIHdlJ3JlIGRvbmUgKi8KLSAgICAgICAgcCA9IHN0YWNrYnVmOworICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gbWF4X2NoYXJfc2l6ZSkgewotICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIG9uIHRoZSBoZWFwLCBhbmQgZ2l2ZSB0aGUgZXhjZXNzIGJhY2sgYXQgdGhlIGVuZC4gKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IHNpemUgKiBtYXhfY2hhcl9zaXplOwotICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5hbGxvY2F0ZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgfQorCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUgKiBtYXhfY2hhcl9zaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOykgewogICAgICAgICBQeV9VQ1M0IGNoID0gZGF0YVtpKytdOwpAQCAtMzI2LDcyICszMTIsMTE5IEBACiAgICAgICAgIH0KICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCiAgICAgICAgIGVsc2UgaWYgKFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgewotICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIGssIHN0YXJ0cG9zOwotICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7Ci0gICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKLSAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAotICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4Yywgc3RhcnRwb3MsIHN0YXJ0cG9zKzEsICZuZXdwb3MpOwotICAgICAgICAgICAgaWYgKCFyZXApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkKLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOwotCi0gICAgICAgICAgICBpZiAocmVwc2l6ZSA+IG1heF9jaGFyX3NpemUpIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldDsKLQotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIHN0YWNrYnVmOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobmFsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSArIG1heF9jaGFyX3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuYWxsb2NhdGVkICs9IHJlcHNpemUgLSBtYXhfY2hhcl9zaXplOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5hbGxvY2F0ZWQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIHN0YWNrYnVmLCBvZmZzZXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIG9mZnNldDsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIGVuZHBvcywgbmV3cG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBrOworICAgICAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pIHsKKyAgICAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgICAgIGNoYXIgKnByZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXApOwotICAgICAgICAgICAgICAgIGZvcihrID0gcmVwc2l6ZTsgayA+IDA7IGstLSkKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpwcmVwKys7Ci0gICAgICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewotICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQgcmVwa2luZDsKLSAgICAgICAgICAgICAgICB2b2lkICpyZXBkYXRhOworICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7CisgICAgICAgICAgICBlbmRwb3MgPSBzdGFydHBvcysxOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKKyAgICAgICAgICAgIHdoaWxlICgoZW5kcG9zIDwgc2l6ZSkgJiYgUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoZGF0YVtlbmRwb3NdKSkKKyAgICAgICAgICAgICAgICBlbmRwb3MrKzsKKworICAgICAgICAgICAgLyogT25seSBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciBpZiBpdCdzIG5vdCB0aGUgbGFzdCB3cml0ZSAqLworICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IChlbmRwb3MgPCBzaXplKTsKKworICAgICAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgICAgICAgICBtZW1zZXQocCwgJz8nLCBlbmRwb3MgLSBzdGFydHBvcyk7CisgICAgICAgICAgICAgICAgcCArPSAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCB0aGUgaWdub3JlIGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTOgorICAgICAgICAgICAgICAgIGZvciAoaz1zdGFydHBvczsgazxlbmRwb3M7IGsrKykgeworICAgICAgICAgICAgICAgICAgICBjaCA9IGRhdGFba107CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhlMCB8IChjaCA+PiAxMikpOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IG1heF9jaGFyX3NpemUgKiAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIHAgPSBiYWNrc2xhc2hyZXBsYWNlKCZ3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcyk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICByZXBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwKTsKLSAgICAgICAgICAgICAgICByZXBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVwKTsKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgZm9yKGs9MDsgazxyZXBzaXplOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQocmVwa2luZCwgcmVwZGF0YSwgayk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgweDgwIDw9IGMpIHsKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSBtYXhfY2hhcl9zaXplICogKGVuZHBvcyAtIHN0YXJ0cG9zKTsKKyAgICAgICAgICAgICAgICBwID0geG1sY2hhcnJlZnJlcGxhY2UoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcyk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgICAgICAgICAgZm9yIChrPXN0YXJ0cG9zOyBrPGVuZHBvczsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gZGF0YVtrXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoMHhEQzgwIDw9IGNoICYmIGNoIDw9IDB4RENGRikpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKShjaCAmIDB4ZmYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoayA+PSBlbmRwb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgaSArPSAoZW5kcG9zIC0gc3RhcnRwb3MgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXJ0cG9zID0gazsKKyAgICAgICAgICAgICAgICBhc3NlcnQoc3RhcnRwb3MgPCBlbmRwb3MpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCB0aGUgZGVmYXVsdCBoYW5kbGVyICovCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLCAidXRmLTgiLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4Yywgc3RhcnRwb3MsIGVuZHBvcywgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gbWF4X2NoYXJfc2l6ZTsKKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXApKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHJlcCBpcyB1bmljb2RlICovCisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHJlcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS0xLCBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpYzsKKworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgICAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCkpOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVwKTsKKworICAgICAgICAgICAgICAgIGkgPSBuZXdwb3M7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9DTEVBUihyZXApOworCisgICAgICAgICAgICAvKiBJZiBvdmVyYWxsb2NhdGlvbiB3YXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0IGl0IHdhcyB0aGUgbGFzdAorICAgICAgICAgICAgICAgd3JpdGUuIE90aGVyd2lzZSwgd2UgbWlzc2VkIGFuIG9wdGltaXphdGlvbiAqLworICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5vdmVyYWxsb2NhdGUgfHwgaSA9PSBzaXplKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMgpAQCAtNDE2LDMxICs0NDksMTggQEAKICNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxICovCiAgICAgfQogCi0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFRoaXMgd2FzIHN0YWNrIGFsbG9jYXRlZC4gKi8KLSAgICAgICAgbm5lZWRlZCA9IHAgLSBzdGFja2J1ZjsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3RhY2tidWYsIG5uZWVkZWQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBubmVlZGVkKTsKLSAgICB9Ci0KICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKIAogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKICBlcnJvcjoKICAgICBQeV9YREVDUkVGKHJlcCk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgogCkBAIC04MDYsNSArODI2LDMgQEAKICN1bmRlZiBTV0FCNAogCiAjZW5kaWYKLQotI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY3R5cGUuaAppbmRleCA3MzljZjNkLi5mMDU0NjI1IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmgKQEAgLTEsNSArMSw2IEBACi0vKiBOT1RFOiB0aGlzIEFQSSBpcyAtT05MWS0gZm9yIHVzZSB3aXRoIHNpbmdsZSBieXRlIGNoYXJhY3RlciBzdHJpbmdzLiAqLwotLyogRG8gbm90IHVzZSBpdCB3aXRoIFVuaWNvZGUuICovCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgImN0eXBlLmggb25seSBjb21wYXRpYmxlIHdpdGggYnl0ZS13aXNlIHN0cmluZ3MiCisjZW5kaWYKIAogI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCmluZGV4IGNkYTY4ZTcuLjk4MTY1YWQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKQEAgLTMyLDUyICszMiw5OCBAQAogI2RlZmluZSBTVFJJTkdMSUJfQkxPT00obWFzaywgY2gpICAgICBcCiAgICAgKChtYXNrICYgICgxVUwgPDwgKChjaCkgJiAoU1RSSU5HTElCX0JMT09NX1dJRFRIIC0xKSkpKSkKIAorUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitTVFJJTkdMSUIoZmluZF9jaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLCBTVFJJTkdMSUJfQ0hBUiBjaCkKK3sKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcCwgKmU7CisKKyAgICBwID0gczsKKyAgICBlID0gcyArIG47CisgICAgaWYgKG4gPiAxMCkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgICAgIHAgPSBtZW1jaHIocywgY2gsIG4pOworICAgICAgICBpZiAocCAhPSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgICAgIHJldHVybiAtMTsKKyNlbHNlCisgICAgICAgIC8qIHVzZSBtZW1jaHIgaWYgd2UgY2FuIGNob29zZSBhIG5lZWRsZSB3aXRob3V0IHR3byBtYW55IGxpa2VseQorICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSBjaCAmIDB4ZmY7CisgICAgICAgIC8qIElmIGxvb2tpbmcgZm9yIGEgbXVsdGlwbGUgb2YgMjU2LCB3ZSdkIGhhdmUgdG9vCisgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgorICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCisgICAgICAgIGlmIChuZWVkbGUgIT0gMCkgeworICAgICAgICAgICAgd2hpbGUgKHAgPCBlKSB7CisgICAgICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtY2hyKHAsIG5lZWRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUgLSBwKSAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIHAgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLworICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIHdoaWxlIChwIDwgZSkgeworICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgcCsrOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiBjaCwgdW5zaWduZWQgY2hhciBuZWVkbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2RlKQorU1RSSU5HTElCKHJmaW5kX2NoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sIFNUUklOR0xJQl9DSEFSIGNoKQogewotICAgIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKSB7Ci0gICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwdHIgPSBzOwotICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZSA9IHMgKyBuOwotICAgICAgICB3aGlsZSAocHRyIDwgZSkgewotICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtY2hyKChjb25zdCB2b2lkICopIHB0ciwgbmVlZGxlLCAoZSAtIHB0cikgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBwdHIgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKnB0ciA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gKHB0ciAtIHMpOwotICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KLSAgICAgICAgICAgIHB0cisrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnA7CiAjaWZkZWYgSEFWRV9NRU1SQ0hSCiAgICAgLyogbWVtcmNocigpIGlzIGEgR05VIGV4dGVuc2lvbiwgYXZhaWxhYmxlIHNpbmNlIGdsaWJjIDIuMS45MS4KICAgICAgICBpdCBkb2Vzbid0IHNlZW0gYXMgb3B0aW1pemVkIGFzIG1lbWNocigpLCBidXQgaXMgc3RpbGwgcXVpdGUKLSAgICAgICBmYXN0ZXIgdGhhbiBvdXIgaGFuZC13cml0dGVuIGxvb3AgaW4gRkFTVFNFQVJDSCBiZWxvdyAqLwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRkFTVF9SU0VBUkNIKSB7Ci0gICAgICAgIHdoaWxlIChuID4gMCkgewotICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmZvdW5kOwotICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtcmNocigoY29uc3Qgdm9pZCAqKSBzLCBuZWVkbGUsIG4gKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBmb3VuZCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKSBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICAgICAgbiA9IGZvdW5kIC0gczsKLSAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKmZvdW5kID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotI2VuZGlmCi0gICAgZWxzZSB7Ci0gICAgICAgIGFzc2VydCgwKTsgLyogU2hvdWxkIG5ldmVyIGdldCBoZXJlICovCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICAgICBmYXN0ZXIgdGhhbiBvdXIgaGFuZC13cml0dGVuIGxvb3AgYmVsb3cgKi8KIAotI3VuZGVmIERPX01FTUNIUgorICAgIGlmIChuID4gMTApIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorICAgICAgICBwID0gbWVtcmNocihzLCBjaCwgbik7CisgICAgICAgIGlmIChwICE9IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgcmV0dXJuIC0xOworI2Vsc2UKKyAgICAgICAgLyogdXNlIG1lbXJjaHIgaWYgd2UgY2FuIGNob29zZSBhIG5lZWRsZSB3aXRob3V0IHR3byBtYW55IGxpa2VseQorICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSBjaCAmIDB4ZmY7CisgICAgICAgIC8qIElmIGxvb2tpbmcgZm9yIGEgbXVsdGlwbGUgb2YgMjU2LCB3ZSdkIGhhdmUgdG9vCisgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgorICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCisgICAgICAgIGlmIChuZWVkbGUgIT0gMCkgeworICAgICAgICAgICAgd2hpbGUgKG4gPiAwKSB7CisgICAgICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtcmNocihzLCBuZWVkbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgcCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgICAgICBuID0gcCAtIHM7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisjZW5kaWYgIC8qIEhBVkVfTUVNUkNIUiAqLworICAgIHAgPSBzICsgbjsKKyAgICB3aGlsZSAocCA+IHMpIHsKKyAgICAgICAgcC0tOworICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICB9CisgICAgcmV0dXJuIC0xOwogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKQEAgLTk5LDI1ICsxNDUsMTEgQEAKICAgICAgICAgaWYgKG0gPD0gMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgLyogdXNlIHNwZWNpYWwgY2FzZSBmb3IgMS1jaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgICAgICBpZiAobiA+IDEwICYmIChtb2RlID09IEZBU1RfU0VBUkNICi0jaWZkZWYgSEFWRV9NRU1SQ0hSCi0gICAgICAgICAgICAgICAgICAgIHx8IG1vZGUgPT0gRkFTVF9SU0VBUkNICi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgKSkgewotICAgICAgICAgICAgLyogdXNlIG1lbWNociBpZiB3ZSBjYW4gY2hvb3NlIGEgbmVlZGxlIHdpdGhvdXQgdHdvIG1hbnkgbGlrZWx5Ci0gICAgICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlOwotICAgICAgICAgICAgbmVlZGxlID0gcFswXSAmIDB4ZmY7Ci0jaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQotICAgICAgICAgICAgLyogSWYgbG9va2luZyBmb3IgYSBtdWx0aXBsZSBvZiAyNTYsIHdlJ2QgaGF2ZSB0b28KLSAgICAgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgotICAgICAgICAgICAgICAgYW5kIFVDUzQgcmVwcmVzZW50YXRpb25zLiAqLwotICAgICAgICAgICAgaWYgKG5lZWRsZSAhPSAwKQotI2VuZGlmCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikKLSAgICAgICAgICAgICAgICAgICAgICAgKHMsIG4sIHBbMF0sIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1vZGUgPT0gRkFTVF9DT1VOVCkgeworICAgICAgICBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkKKyAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUIoZmluZF9jaGFyKShzLCBuLCBwWzBdKTsKKyAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBGQVNUX1JTRUFSQ0gpCisgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKHJmaW5kX2NoYXIpKHMsIG4sIHBbMF0pOworICAgICAgICBlbHNlIHsgIC8qIEZBU1RfQ09VTlQgKi8KICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gcFswXSkgewogICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwpAQCAtMTI1LDE0ICsxNTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heGNvdW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICAgICAgICAgIGlmIChzW2ldID09IHBbMF0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICB9IGVsc2UgeyAgICAvKiBGQVNUX1JTRUFSQ0ggKi8KLSAgICAgICAgICAgIGZvciAoaSA9IG4gLSAxOyBpID4gLTE7IGktLSkKLSAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSBwWzBdKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCmluZGV4IDE0ODE1ZjYuLjUwOWI5MjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKQEAgLTExNyw4NSArMTE3LDMgQEAKIH0KIAogI3VuZGVmIEZPUk1BVF9CVUZGRVJfU0laRQotCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLQotLyoKLVdyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBlbnN1cmVzIHRoYXQgdGhlCi1maXJzdCBhcmd1bWVudCBpcyBhIHVuaWNvZGUgb2JqZWN0LgotCi1Ob3RlIHRoYXQgd2UgcmVjZWl2ZSBhIHBvaW50ZXIgdG8gdGhlIHBvaW50ZXIgb2YgdGhlIHN1YnN0cmluZyBvYmplY3QsCi1zbyB3aGVuIHdlIGNyZWF0ZSB0aGF0IG9iamVjdCBpbiB0aGlzIGZ1bmN0aW9uIHdlIGRvbid0IERFQ1JFRiBpdCwKLWJlY2F1c2UgaXQgY29udGludWVzIGxpdmluZyBpbiB0aGUgY2FsbGVyIGZ1bmN0aW9ucyAodGhvc2UgZnVuY3Rpb25zLAotYWZ0ZXIgZmluaXNoaW5nIHVzaW5nIHRoZSBzdWJzdHJpbmcsIG11c3QgREVDUkVGIGl0KS4KLSovCi0KLVB5X0xPQ0FMX0lOTElORShpbnQpCi1TVFJJTkdMSUIocGFyc2VfYXJnc19maW5kc191bmljb2RlKShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQotewotICAgIFB5T2JqZWN0ICp0bXBfc3Vic3RyaW5nOwotCi0gICAgaWYoU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKSB7Ci0gICAgICAgIHRtcF9zdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdCh0bXBfc3Vic3RyaW5nKTsKLSAgICAgICAgaWYgKCF0bXBfc3Vic3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICpzdWJzdHJpbmcgPSB0bXBfc3Vic3RyaW5nOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbHNlIC8qICFTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwotCi0vKgotV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGNoZWNrcyB3aGV0aGVyIHRoZQotZmlyc3QgYXJndW1lbnQgaXMgYW4gaW50ZWdlciBpbiByYW5nZSgwLCAyNTYpLgotCi1JZiB0aGlzIGlzIHRoZSBjYXNlLCB3cml0ZXMgdGhlIGludGVnZXIgdmFsdWUgdG8gdGhlIGJ5dGUgcGFyYW1ldGVyCi1hbmQgc2V0cyBzdWJvYmogdG8gTlVMTC4gT3RoZXJ3aXNlLCBzZXRzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzdWJvYmoKLWFuZCBkb2Vzbid0IHRvdWNoIGJ5dGUuIFRoZSBvdGhlciBwYXJhbWV0ZXJzIGFyZSBzaW1pbGFyIHRvIHRob3NlIG9mCi1zdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpLgotKi8KLQotUHlfTE9DQUxfSU5MSU5FKGludCkKLVNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzX2J5dGUpKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJvYmosIGNoYXIgKmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQotewotICAgIFB5T2JqZWN0ICp0bXBfc3Vib2JqOwotICAgIFB5X3NzaXplX3QgaXZhbDsKLSAgICBQeU9iamVjdCAqZXJyOwotCi0gICAgaWYoIVNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzKShmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1Ym9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghUHlOdW1iZXJfQ2hlY2sodG1wX3N1Ym9iaikpIHsKLSAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QodG1wX3N1Ym9iaiwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEpIHsKLSAgICAgICAgZXJyID0gUHlFcnJfT2NjdXJyZWQoKTsKLSAgICAgICAgaWYgKGVyciAmJiAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKGVyciwgUHlFeGNfT3ZlcmZsb3dFcnJvcikpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPiAyNTUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAqc3Vib2JqID0gTlVMTDsKLSAgICAqYnl0ZSA9IChjaGFyKWl2YWw7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLSNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCmluZGV4IGViM2ZlODguLjhjY2JjMzAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKQEAgLTEsNiArMSw4IEBACiAvKiBGaW5kaW5nIHRoZSBvcHRpbWFsIHdpZHRoIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpbiBhIGJ1ZmZlciAqLwogCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyNpZiAhU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgImZpbmRfbWF4X2NoYXIuaCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2VuZGlmCiAKIC8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQogICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KQEAgLTEyOSw1ICsxMzEsNCBAQAogI3VuZGVmIE1BWF9DSEFSX1VDUzQKIAogI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxICovCi0jZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oCmluZGV4IGNiZjgxYmUuLjZmMzE0ZTEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmgKQEAgLTEsNiArMSw2IEBACiAvKiBzdHJpbmdsaWI6IGJ5dGVzIGpvaW5pbmcgaW1wbGVtZW50YXRpb24gKi8KIAotI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAhPSAxCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKICNlcnJvciBqb2luLmggb25seSBjb21wYXRpYmxlIHdpdGggYnl0ZS13aXNlIHN0cmluZ3MKICNlbmRpZgogCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5idWZzOyBpKyspIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbiA9IGJ1ZmZlcnNbaV0ubGVuOwogICAgICAgICAgICAgY2hhciAqcSA9IGJ1ZmZlcnNbaV0uYnVmOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHEsIG4pOworICAgICAgICAgICAgbWVtY3B5KHAsIHEsIG4pOwogICAgICAgICAgICAgcCArPSBuOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTExNiwxMiArMTE2LDEyIEBACiAgICAgICAgIFB5X3NzaXplX3QgbjsKICAgICAgICAgY2hhciAqcTsKICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLCBzZXBzdHIsIHNlcGxlbik7CisgICAgICAgICAgICBtZW1jcHkocCwgc2Vwc3RyLCBzZXBsZW4pOwogICAgICAgICAgICAgcCArPSBzZXBsZW47CiAgICAgICAgIH0KICAgICAgICAgbiA9IGJ1ZmZlcnNbaV0ubGVuOwogICAgICAgICBxID0gYnVmZmVyc1tpXS5idWY7Ci0gICAgICAgIFB5X01FTUNQWShwLCBxLCBuKTsKKyAgICAgICAgbWVtY3B5KHAsIHEsIG4pOwogICAgICAgICBwICs9IG47CiAgICAgfQogICAgIGdvdG8gZG9uZTsKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCBiL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAppbmRleCA2ZTJmMDczLi5kZjUwMWVkIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCkBAIC0yLDggKzIsOCBAQAogCiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAKLSNpZm5kZWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSMgICBlcnJvciAibG9jYWxldXRpbCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2lmICFTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyAgIGVycm9yICJsb2NhbGV1dGlsLmggaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaCBiL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCmluZGV4IGI1NTliNTMuLmEzMTQ1NzIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCkBAIC0xLDE0ICsxLDIxIEBACi0vKiBOT1RFOiB0aGlzIEFQSSBpcyAtT05MWS0gZm9yIHVzZSB3aXRoIHNpbmdsZSBieXRlIGNoYXJhY3RlciBzdHJpbmdzLiAqLwotLyogRG8gbm90IHVzZSBpdCB3aXRoIFVuaWNvZGUuICovCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgInRyYW5zbW9ncmlmeS5oIG9ubHkgY29tcGF0aWJsZSB3aXRoIGJ5dGUtd2lzZSBzdHJpbmdzIgorI2VuZGlmCiAKIC8qIHRoZSBtb3JlIGNvbXBsaWNhdGVkIG1ldGhvZHMuICBwYXJ0cyBvZiB0aGVzZSBzaG91bGQgYmUgcHVsbGVkIG91dCBpbnRvIHRoZQogICAgc2hhcmVkIGNvZGUgaW4gYnl0ZXNfbWV0aG9kcy5jIHRvIGN1dCBkb3duIG9uIGR1cGxpY2F0ZSBjb2RlIGJsb2F0LiAgKi8KIAotUHlEb2NfU1RSVkFSKGV4cGFuZHRhYnNfX2RvY19fLAotIkIuZXhwYW5kdGFicyh0YWJzaXplPTgpIC0+IGNvcHkgb2YgQlxuXAotXG5cCi1SZXR1cm4gYSBjb3B5IG9mIEIgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSBleHBhbmRlZCB1c2luZyBzcGFjZXMuXG5cCi1JZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4iKTsKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgorcmV0dXJuX3NlbGYoUHlPYmplY3QgKnNlbGYpCit7CisjaWYgIVNUUklOR0xJQl9NVVRBQkxFCisgICAgaWYgKFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgeworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBzZWxmOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOworfQogCiBzdGF0aWMgUHlPYmplY3QqCiBzdHJpbmdsaWJfZXhwYW5kdGFicyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQpAQCAtODMsNyArOTAsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgogcGFkKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGxlZnQsIFB5X3NzaXplX3QgcmlnaHQsIGNoYXIgZmlsbCkKIHsKICAgICBQeU9iamVjdCAqdTsKQEAgLTkzLDM5ICsxMDAsMjUgQEAKICAgICBpZiAocmlnaHQgPCAwKQogICAgICAgICByaWdodCA9IDA7CiAKLSAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDAgJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Ci0jZW5kaWYgLyogU1RSSU5HTElCX01VVEFCTEUgKi8KKyAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDApIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAotICAgIHUgPSBTVFJJTkdMSUJfTkVXKE5VTEwsCi0JCQkJICAgbGVmdCArIFNUUklOR0xJQl9MRU4oc2VsZikgKyByaWdodCk7CisgICAgdSA9IFNUUklOR0xJQl9ORVcoTlVMTCwgbGVmdCArIFNUUklOR0xJQl9MRU4oc2VsZikgKyByaWdodCk7CiAgICAgaWYgKHUpIHsKICAgICAgICAgaWYgKGxlZnQpCiAgICAgICAgICAgICBtZW1zZXQoU1RSSU5HTElCX1NUUih1KSwgZmlsbCwgbGVmdCk7Ci0gICAgICAgIFB5X01FTUNQWShTVFJJTkdMSUJfU1RSKHUpICsgbGVmdCwKLQkgICAgICAgU1RSSU5HTElCX1NUUihzZWxmKSwKLQkgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKSk7CisgICAgICAgIG1lbWNweShTVFJJTkdMSUJfU1RSKHUpICsgbGVmdCwKKyAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIoc2VsZiksCisgICAgICAgICAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKICAgICAgICAgaWYgKHJpZ2h0KQogICAgICAgICAgICAgbWVtc2V0KFNUUklOR0xJQl9TVFIodSkgKyBsZWZ0ICsgU1RSSU5HTElCX0xFTihzZWxmKSwKLQkJICAgZmlsbCwgcmlnaHQpOworICAgICAgICAgICAgICAgICAgIGZpbGwsIHJpZ2h0KTsKICAgICB9CiAKICAgICByZXR1cm4gdTsKIH0KIAotUHlEb2NfU1RSVkFSKGxqdXN0X19kb2NfXywKLSJCLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJSZXR1cm4gQiBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKLSJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdsaWJfbGp1c3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTM1LDI3ICsxMjgsMTQgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58YzpsanVzdCIsICZ3aWR0aCwgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgorICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICByZXR1cm4gcGFkKHNlbGYsIDAsIHdpZHRoIC0gU1RSSU5HTElCX0xFTihzZWxmKSwgZmlsbGNoYXIpOwogfQogCiAKLVB5RG9jX1NUUlZBUihyanVzdF9fZG9jX18sCi0iQi5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUmV0dXJuIEIgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgotImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKSIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5nbGliX3JqdXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE2NSwyNyArMTQ1LDE0IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGM6cmp1c3QiLCAmd2lkdGgsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGggJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKKyAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhZChzZWxmLCB3aWR0aCAtIFNUUklOR0xJQl9MRU4oc2VsZiksIDAsIGZpbGxjaGFyKTsKIH0KIAogCi1QeURvY19TVFJWQVIoY2VudGVyX19kb2NfXywKLSJCLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUmV0dXJuIEIgY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiAgUGFkZGluZyBpc1xuIgotImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl9jZW50ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTk2LDE1ICsxNjMsOCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxjOmNlbnRlciIsICZ3aWR0aCwgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgorICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICBtYXJnID0gd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpOwpAQCAtMjEzLDEyICsxNzMsNiBAQAogICAgIHJldHVybiBwYWQoc2VsZiwgbGVmdCwgbWFyZyAtIGxlZnQsIGZpbGxjaGFyKTsKIH0KIAotUHlEb2NfU1RSVkFSKHpmaWxsX19kb2NfXywKLSJCLnpmaWxsKHdpZHRoKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJQYWQgYSBudW1lcmljIHN0cmluZyBCIHdpdGggemVyb3Mgb24gdGhlIGxlZnQsIHRvIGZpbGwgYSBmaWVsZFxuIgotIm9mIHRoZSBzcGVjaWZpZWQgd2lkdGguICBCIGlzIG5ldmVyIHRydW5jYXRlZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl96ZmlsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yMzEsMjEgKzE4NSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGgpIHsKLSAgICAgICAgaWYgKFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVygKLSAgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAotICAgICAgICAgICAgICAgIFNUUklOR0xJQl9MRU4oc2VsZikKLSAgICAgICAgICAgICk7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICBmaWxsID0gd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpOwpAQCAtMjYyLDUgKzIwMiw1MDAgQEAKICAgICAgICAgcFtmaWxsXSA9ICcwJzsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgczsKKyAgICByZXR1cm4gczsKIH0KKworCisvKiBmaW5kIGFuZCBjb3VudCBjaGFyYWN0ZXJzIGFuZCBzdWJzdHJpbmdzICovCisKKyNkZWZpbmUgZmluZGNoYXIodGFyZ2V0LCB0YXJnZXRfbGVuLCBjKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgoY2hhciAqKW1lbWNocigoY29uc3Qgdm9pZCAqKSh0YXJnZXQpLCBjLCB0YXJnZXRfbGVuKSkKKworCitzdGF0aWMgUHlfc3NpemVfdAorY291bnRjaGFyKGNvbnN0IGNoYXIgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRfbGVuLCBjaGFyIGMsCisgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKKyAgICBjb25zdCBjaGFyICpzdGFydCA9IHRhcmdldDsKKyAgICBjb25zdCBjaGFyICplbmQgPSB0YXJnZXQgKyB0YXJnZXRfbGVuOworCisgICAgd2hpbGUgKChzdGFydCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgYykpICE9IE5VTEwpIHsKKyAgICAgICAgY291bnQrKzsKKyAgICAgICAgaWYgKGNvdW50ID49IG1heGNvdW50KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0YXJ0ICs9IDE7CisgICAgfQorICAgIHJldHVybiBjb3VudDsKK30KKworCisvKiBBbGdvcml0aG1zIGZvciBkaWZmZXJlbnQgY2FzZXMgb2Ygc3RyaW5nIHJlcGxhY2VtZW50ICovCisKKy8qIGxlbihzZWxmKT49MSwgZnJvbT0iIiwgbGVuKHRvKT49MSwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9pbnRlcmxlYXZlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3M7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50LCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICAvKiAxIGF0IHRoZSBlbmQgcGx1cyAxIGFmdGVyIGV2ZXJ5IGNoYXJhY3RlcjsKKyAgICAgICBjb3VudCA9IG1pbihtYXhjb3VudCwgc2VsZl9sZW4gKyAxKSAqLworICAgIGlmIChtYXhjb3VudCA8PSBzZWxmX2xlbikgeworICAgICAgICBjb3VudCA9IG1heGNvdW50OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogQ2FuJ3Qgb3ZlcmZsb3c6IHNlbGZfbGVuICsgMSA8PSBtYXhjb3VudCA8PSBQWV9TU0laRV9UX01BWC4gKi8KKyAgICAgICAgY291bnQgPSBzZWxmX2xlbiArIDE7CisgICAgfQorCisgICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCisgICAgLyogICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsgKi8KKyAgICBhc3NlcnQoY291bnQgPiAwKTsKKyAgICBpZiAodG9fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBieXRlcyBhcmUgdG9vIGxvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBpZiAodG9fbGVuID4gMSkgeworICAgICAgICAvKiBMYXkgdGhlIGZpcnN0IG9uZSBkb3duIChndWFyYW50ZWVkIHRoaXMgd2lsbCBvY2N1cikgKi8KKyAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgIGNvdW50IC09IDE7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHRfc1swXSA9IHRvX3NbMF07CisgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgY291bnQgLT0gMTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOworICAgICAgICAgICAgcmVzdWx0X3NbMF0gPSB0b19zWzBdOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCisgICAgbWVtY3B5KHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuIC0gaSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBTcGVjaWFsIGNhc2UgZm9yIGRlbGV0aW5nIGEgc2luZ2xlIGNoYXJhY3RlciAqLworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIHRvPSIiLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisKKyAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gY291bnQ7ICAvKiBmcm9tX2xlbiA9PSAxICovCisgICAgYXNzZXJ0KHJlc3VsdF9sZW4+PTApOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kIC0gc3RhcnQsIGZyb21fYyk7CisgICAgICAgIGlmIChuZXh0ID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgbmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgIHN0YXJ0ID0gbmV4dCArIDE7CisgICAgfQorICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworCisgICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIC8qIG5vIG1hdGNoZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIChjb3VudCAqIGZyb21fbGVuKTsKKyAgICBhc3NlcnQgKHJlc3VsdF9sZW4+PTApOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbmV4dCA9IHN0YXJ0ICsgb2Zmc2V0OworCisgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisKKyAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgIHN0YXJ0ID0gbmV4dCArIGZyb21fbGVuOworICAgIH0KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIGNoYXIgdG9fYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKm5leHQ7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKKworICAgIGlmIChuZXh0ID09IE5VTEwpIHsKKyAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCBzZWxmX2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKyAgICBtZW1jcHkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOworCisgICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KKyAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0IC0gc2VsZl9zKTsKKyAgICAqc3RhcnQgPSB0b19jOworICAgIHN0YXJ0Kys7CisgICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKKworICAgIHdoaWxlICgtLW1heGNvdW50ID4gMCkgeworICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZCAtIHN0YXJ0LCBmcm9tX2MpOworICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICpuZXh0ID0gdG9fYzsKKyAgICAgICAgc3RhcnQgPSBuZXh0ICsgMTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zLCAqc3RhcnQ7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICAvKiBUaGUgcmVzdWx0IGJ5dGVzIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLworCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzZWxmX3MsIHNlbGZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgaWYgKG9mZnNldCA9PSAtMSkgeworICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHNlbGZfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworICAgIG1lbWNweShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7CisKKyAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLworICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgb2Zmc2V0OworICAgIG1lbWNweShzdGFydCwgdG9fcywgZnJvbV9sZW4pOworICAgIHN0YXJ0ICs9IGZyb21fbGVuOworICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47CisKKyAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7CisgICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtY3B5KHN0YXJ0ICsgb2Zmc2V0LCB0b19zLCBmcm9tX2xlbik7CisgICAgICAgIHN0YXJ0ICs9IG9mZnNldCArIGZyb21fbGVuOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIHVzZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgYW5kIG5ldywgaGVuY2UgdGhlICItMSIgKi8KKyAgICAvKiAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi0xKSAgKi8KKyAgICBhc3NlcnQoY291bnQgPiAwKTsKKyAgICBpZiAodG9fbGVuIC0gMSA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gMSk7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgZnJvbV9jKTsKKyAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7CisgICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ICs9IDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCArIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgKi8KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmcoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KKyAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiAtIGZyb21fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSBmcm9tX2xlbik7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7CisgICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7CisgICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ICs9IGZyb21fbGVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0IC0gc3RhcnQpOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgICAgICBzdGFydCA9IG5leHQgKyBmcm9tX2xlbjsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLworICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGlmIChtYXhjb3VudCA8IDApIHsKKyAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKKyAgICB9IGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgU1RSSU5HTElCX0xFTihzZWxmKSA9PSAwKSB7CisgICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIEhhbmRsZSB6ZXJvLWxlbmd0aCBzcGVjaWFsIGNhc2VzICovCisgICAgaWYgKGZyb21fbGVuID09IDApIHsKKyAgICAgICAgaWYgKHRvX2xlbiA9PSAwKSB7CisgICAgICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgICAgIH0KKyAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIGJ5dGVzIGV2ZXJ5d2hlcmUuICAgICovCisgICAgICAgIC8qICAgID4+PiBiIlB5dGhvbiIucmVwbGFjZShiIiIsIGIiLiIpICAqLworICAgICAgICAvKiAgICBiJy5QLnkudC5oLm8ubi4nICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX2ludGVybGVhdmUoc2VsZiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7CisgICAgfQorCisgICAgLyogRXhjZXB0IGZvciBiIiIucmVwbGFjZShiIiIsIGIiQSIpID09IGIiQSIgdGhlcmUgaXMgbm8gd2F5IGJleW9uZCB0aGlzICovCisgICAgLyogcG9pbnQgZm9yIGFuIGVtcHR5IHNlbGYgYnl0ZXMgdG8gZ2VuZXJhdGUgYSBub24tZW1wdHkgYnl0ZXMgKi8KKyAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IGJ5dGVzICovCisgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPT0gMCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgaWYgKHRvX2xlbiA9PSAwKSB7CisgICAgICAgIC8qIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ2Zyb20nIGJ5dGVzICovCisgICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoCisgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCBtYXhjb3VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3N1YnN0cmluZygKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCBtYXhjb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggYnl0ZXMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKi8KKworICAgIGlmIChmcm9tX2xlbiA9PSB0b19sZW4pIHsKKyAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgdG9fc1swXSwgbWF4Y291bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIE90aGVyd2lzZSB1c2UgdGhlIG1vcmUgZ2VuZXJpYyBhbGdvcml0aG1zICovCisgICAgaWYgKGZyb21fbGVuID09IDEpIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoCisgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGxlbignZnJvbScpPj0yLCBsZW4oJ3RvJyk+PTEgKi8KKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZygKKyAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgIH0KK30KKworI3VuZGVmIGZpbmRjaGFyCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaAppbmRleCBiZTA5YjVmLi4xNGZhMjhlIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKQEAgLTY3LDcgKzY3LDcgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzdHItPnN0ciwgc3RyLT5zdGFydCwgc3RyLT5lbmQpOwogfQogCi0vKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KKy8qIHJldHVybiBhIG5ldyBzdHJpbmcuICBpZiBzdHItPnN0ciBpcyBOVUxMLCByZXR1cm4gYSBuZXcgZW1wdHkgc3RyaW5nICovCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKIFN1YlN0cmluZ19uZXdfb2JqZWN0X29yX2VtcHR5KFN1YlN0cmluZyAqc3RyKQogewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJ1Y3RzZXEuYyBiL09iamVjdHMvc3RydWN0c2VxLmMKaW5kZXggNjY0MzQ0Yi4uZTMxNWNiYSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJ1Y3RzZXEuYworKysgYi9PYmplY3RzL3N0cnVjdHNlcS5jCkBAIC00LDkgKzQsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCi1zdGF0aWMgY2hhciB2aXNpYmxlX2xlbmd0aF9rZXlbXSA9ICJuX3NlcXVlbmNlX2ZpZWxkcyI7Ci1zdGF0aWMgY2hhciByZWFsX2xlbmd0aF9rZXlbXSA9ICJuX2ZpZWxkcyI7Ci1zdGF0aWMgY2hhciB1bm5hbWVkX2ZpZWxkc19rZXlbXSA9ICJuX3VubmFtZWRfZmllbGRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHZpc2libGVfbGVuZ3RoX2tleVtdID0gIm5fc2VxdWVuY2VfZmllbGRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHJlYWxfbGVuZ3RoX2tleVtdID0gIm5fZmllbGRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVubmFtZWRfZmllbGRzX2tleVtdID0gIm5fdW5uYW1lZF9maWVsZHMiOwogCiAvKiBGaWVsZHMgd2l0aCB0aGlzIG5hbWUgaGF2ZSBvbmx5IGEgZmllbGQgaW5kZXgsIG5vdCBhIGZpZWxkIG5hbWUuCiAgICBUaGV5IGFyZSBvbmx5IGFsbG93ZWQgZm9yIGluZGljZXMgPCBuX3Zpc2libGVfZmllbGRzLiAqLwpAQCAtMTYsMTQgKzE2LDE0IEBACiBfUHlfSURFTlRJRklFUihuX3VubmFtZWRfZmllbGRzKTsKIAogI2RlZmluZSBWSVNJQkxFX1NJWkUob3ApIFB5X1NJWkUob3ApCi0jZGVmaW5lIFZJU0lCTEVfU0laRV9UUCh0cCkgUHlMb25nX0FzTG9uZyggXAorI2RlZmluZSBWSVNJQkxFX1NJWkVfVFAodHApIFB5TG9uZ19Bc1NzaXplX3QoIFwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEaWN0X0dldEl0ZW1JZCgodHApLT50cF9kaWN0LCAmUHlJZF9uX3NlcXVlbmNlX2ZpZWxkcykpCiAKLSNkZWZpbmUgUkVBTF9TSVpFX1RQKHRwKSBQeUxvbmdfQXNMb25nKCBcCisjZGVmaW5lIFJFQUxfU0laRV9UUCh0cCkgUHlMb25nX0FzU3NpemVfdCggXAogICAgICAgICAgICAgICAgICAgICAgIF9QeURpY3RfR2V0SXRlbUlkKCh0cCktPnRwX2RpY3QsICZQeUlkX25fZmllbGRzKSkKICNkZWZpbmUgUkVBTF9TSVpFKG9wKSBSRUFMX1NJWkVfVFAoUHlfVFlQRShvcCkpCiAKLSNkZWZpbmUgVU5OQU1FRF9GSUVMRFNfVFAodHApIFB5TG9uZ19Bc0xvbmcoIFwKKyNkZWZpbmUgVU5OQU1FRF9GSUVMRFNfVFAodHApIFB5TG9uZ19Bc1NzaXplX3QoIFwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEaWN0X0dldEl0ZW1JZCgodHApLT50cF9kaWN0LCAmUHlJZF9uX3VubmFtZWRfZmllbGRzKSkKICNkZWZpbmUgVU5OQU1FRF9GSUVMRFMob3ApIFVOTkFNRURfRklFTERTX1RQKFB5X1RZUEUob3ApKQogCkBAIC0xNjQsNyArMTY0LDggQEAKICNkZWZpbmUgVFlQRV9NQVhTSVpFIDEwMAogCiAgICAgUHlUeXBlT2JqZWN0ICp0eXAgPSBQeV9UWVBFKG9iaik7Ci0gICAgaW50IGksIHJlbW92ZWxhc3QgPSAwOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgcmVtb3ZlbGFzdCA9IDA7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgY2hhciBidWZbUkVQUl9CVUZGRVJfU0laRV07CiAgICAgY2hhciAqZW5kb2ZidWYsICpwYnVmID0gYnVmOwpAQCAtMjM2LDggKzIzNyw3IEBACiAgICAgUHlPYmplY3QqIHR1cCA9IE5VTEw7CiAgICAgUHlPYmplY3QqIGRpY3QgPSBOVUxMOwogICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgUHlfc3NpemVfdCBuX2ZpZWxkcywgbl92aXNpYmxlX2ZpZWxkcywgbl91bm5hbWVkX2ZpZWxkczsKLSAgICBpbnQgaTsKKyAgICBQeV9zc2l6ZV90IG5fZmllbGRzLCBuX3Zpc2libGVfZmllbGRzLCBuX3VubmFtZWRfZmllbGRzLCBpOwogCiAgICAgbl9maWVsZHMgPSBSRUFMX1NJWkUoc2VsZik7CiAgICAgbl92aXNpYmxlX2ZpZWxkcyA9IFZJU0lCTEVfU0laRShzZWxmKTsKQEAgLTMyNSw3ICszMjUsNyBAQAogewogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5TWVtYmVyRGVmKiBtZW1iZXJzOwotICAgIGludCBuX21lbWJlcnMsIG5fdW5uYW1lZF9tZW1iZXJzLCBpLCBrOworICAgIFB5X3NzaXplX3Qgbl9tZW1iZXJzLCBuX3VubmFtZWRfbWVtYmVycywgaSwgazsKICAgICBQeU9iamVjdCAqdjsKIAogI2lmZGVmIFB5X1RSQUNFX1JFRlMKQEAgLTM3Myw5ICszNzMsOSBAQAogICAgIFB5X0lOQ1JFRih0eXBlKTsKIAogICAgIGRpY3QgPSB0eXBlLT50cF9kaWN0OwotI2RlZmluZSBTRVRfRElDVF9GUk9NX0lOVChrZXksIHZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgU0VUX0RJQ1RfRlJPTV9TSVpFKGtleSwgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSB2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tU3NpemVfdCh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICh2ID09IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsIGtleSwgdikgPCAwKSB7ICAgICAgICAgICBcCkBAIC0zODUsOSArMzg1LDkgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAotICAgIFNFVF9ESUNUX0ZST01fSU5UKHZpc2libGVfbGVuZ3RoX2tleSwgZGVzYy0+bl9pbl9zZXF1ZW5jZSk7Ci0gICAgU0VUX0RJQ1RfRlJPTV9JTlQocmVhbF9sZW5ndGhfa2V5LCBuX21lbWJlcnMpOwotICAgIFNFVF9ESUNUX0ZST01fSU5UKHVubmFtZWRfZmllbGRzX2tleSwgbl91bm5hbWVkX21lbWJlcnMpOworICAgIFNFVF9ESUNUX0ZST01fU0laRSh2aXNpYmxlX2xlbmd0aF9rZXksIGRlc2MtPm5faW5fc2VxdWVuY2UpOworICAgIFNFVF9ESUNUX0ZST01fU0laRShyZWFsX2xlbmd0aF9rZXksIG5fbWVtYmVycyk7CisgICAgU0VUX0RJQ1RfRlJPTV9TSVpFKHVubmFtZWRfZmllbGRzX2tleSwgbl91bm5hbWVkX21lbWJlcnMpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKaW5kZXggNzkyMGZlYy4uYzBmZjQ5OSAxMDA2NDQKLS0tIGEvT2JqZWN0cy90dXBsZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwpAQCAtMzYsNiArMzYsMTYgQEAKIHN0YXRpYyB2b2lkCiBzaG93X3RyYWNrKHZvaWQpCiB7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd2FsbG9jY291bnQpOworCisgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgIGlmICh4b3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBfUHlEaWN0X0dldEl0ZW1JZCh4b3B0aW9ucywgJlB5SWRfc2hvd2FsbG9jY291bnQpOworICAgIGlmICh2YWx1ZSAhPSBQeV9UcnVlKQorICAgICAgICByZXR1cm47CisKICAgICBmcHJpbnRmKHN0ZGVyciwgIlR1cGxlcyBjcmVhdGVkOiAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLAogICAgICAgICBjb3VudF90cmFja2VkICsgY291bnRfdW50cmFja2VkKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlR1cGxlcyB0cmFja2VkIGJ5IHRoZSBHQzogJSIgUFlfRk9STUFUX1NJWkVfVApAQCAtMTQ5LDcgKzE1OSw2IEBACiBpbnQKIFB5VHVwbGVfU2V0SXRlbShQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKm5ld2l0ZW0pCiB7Ci0gICAgUHlPYmplY3QgKm9sZGl0ZW07CiAgICAgUHlPYmplY3QgKipwOwogICAgIGlmICghUHlUdXBsZV9DaGVjayhvcCkgfHwgb3AtPm9iX3JlZmNudCAhPSAxKSB7CiAgICAgICAgIFB5X1hERUNSRUYobmV3aXRlbSk7CkBAIC0xNjMsOSArMTcyLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBwID0gKChQeVR1cGxlT2JqZWN0ICopb3ApIC0+IG9iX2l0ZW0gKyBpOwotICAgIG9sZGl0ZW0gPSAqcDsKLSAgICAqcCA9IG5ld2l0ZW07Ci0gICAgUHlfWERFQ1JFRihvbGRpdGVtKTsKKyAgICBQeV9YU0VUUkVGKCpwLCBuZXdpdGVtKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDQ2LDkgKzQ1Myw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNkZWZpbmUgYiAoKFB5VHVwbGVPYmplY3QgKiliYikKLSAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7Ci0gICAgaWYgKHNpemUgPCAwKQorICAgIGlmIChQeV9TSVpFKGEpID4gUFlfU1NJWkVfVF9NQVggLSBQeV9TSVpFKGIpKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7CiAgICAgbnAgPSAoUHlUdXBsZU9iamVjdCAqKSBQeVR1cGxlX05ldyhzaXplKTsKICAgICBpZiAobnAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZW9iamVjdC5jIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKaW5kZXggY2NkZTNkZS4uNTAyODMwNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKQEAgLTUzLDEwICs1MywxMiBAQAogX1B5X0lERU5USUZJRVIoX19nZXRhdHRyaWJ1dGVfXyk7CiBfUHlfSURFTlRJRklFUihfX2dldGl0ZW1fXyk7CiBfUHlfSURFTlRJRklFUihfX2hhc2hfXyk7CitfUHlfSURFTlRJRklFUihfX2luaXRfc3ViY2xhc3NfXyk7CiBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogX1B5X0lERU5USUZJRVIoX19uYW1lX18pOwogX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CitfUHlfSURFTlRJRklFUihfX3NldF9uYW1lX18pOwogX1B5X0lERU5USUZJRVIoX19zZXRpdGVtX18pOwogX1B5X0lERU5USUZJRVIoYnVpbHRpbnMpOwogCkBAIC00NTIsMjcgKzQ1NCwzMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHR5cGVfbW9kdWxlKFB5VHlwZU9iamVjdCAqdHlwZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBjaGFyICpzOworICAgIFB5T2JqZWN0ICptb2Q7CiAKICAgICBpZiAodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSB7Ci0gICAgICAgIFB5T2JqZWN0ICptb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKLSAgICAgICAgaWYgKCFtb2QpIHsKKyAgICAgICAgbW9kID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXyk7CisgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAiX19tb2R1bGVfXyIpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeV9YSU5DUkVGKG1vZCk7Ci0gICAgICAgIHJldHVybiBtb2Q7CisgICAgICAgIFB5X0lOQ1JFRihtb2QpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgICAgIHMgPSBzdHJyY2hyKHR5cGUtPnRwX25hbWUsICcuJyk7Ci0gICAgICAgIGlmIChzICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICBjb25zdCBjaGFyICpzID0gc3RycmNocih0eXBlLT50cF9uYW1lLCAnLicpOworICAgICAgICBpZiAocyAhPSBOVUxMKSB7CisgICAgICAgICAgICBtb2QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCiAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgKFB5X3NzaXplX3QpKHMgLSB0eXBlLT50cF9uYW1lKSk7Ci0gICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9idWlsdGlucyk7Ci0gICAgICAgIFB5X1hJTkNSRUYobmFtZSk7Ci0gICAgICAgIHJldHVybiBuYW1lOworICAgICAgICAgICAgaWYgKG1vZCAhPSBOVUxMKQorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZtb2QpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW9kID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfYnVpbHRpbnMpOworICAgICAgICAgICAgUHlfWElOQ1JFRihtb2QpOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBtb2Q7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTUwMCw3ICs1MDUsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBtZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X1hJTkNSRUYobW9kKTsKKyAgICBQeV9JTkNSRUYobW9kKTsKICAgICByZXR1cm4gbW9kOwogfQogCkBAIC01NDcsOCArNTUyLDggQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCAqYmVzdF9iYXNlKFB5T2JqZWN0ICopOwogc3RhdGljIGludCBtcm9faW50ZXJuYWwoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICoqKTsKLVB5X0xPQ0FMX0lOTElORShpbnQpIHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7Ci1zdGF0aWMgaW50IGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqLCBjaGFyICopOworc3RhdGljIGludCB0eXBlX2lzX3N1YnR5cGVfYmFzZV9jaGFpbihQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBjb21wYXRpYmxlX2Zvcl9hc3NpZ25tZW50KFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKiwgY29uc3QgY2hhciAqKTsKIHN0YXRpYyBpbnQgYWRkX3N1YmNsYXNzKFB5VHlwZU9iamVjdCosIFB5VHlwZU9iamVjdCopOwogc3RhdGljIGludCBhZGRfYWxsX3N1YmNsYXNzZXMoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYmFzZXMpOwogc3RhdGljIHZvaWQgcmVtb3ZlX3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7CkBAIC04ODgsMjUgKzg5MywzMyBAQAogI2VuZGlmCiAKICAgICBvYmogPSB0eXBlLT50cF9uZXcodHlwZSwgYXJncywga3dkcyk7Ci0gICAgaWYgKG9iaiAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIFVnbHkgZXhjZXB0aW9uOiB3aGVuIHRoZSBjYWxsIHdhcyB0eXBlKHNvbWV0aGluZyksCi0gICAgICAgICAgIGRvbid0IGNhbGwgdHBfaW5pdCBvbiB0aGUgcmVzdWx0LiAqLwotICAgICAgICBpZiAodHlwZSA9PSAmUHlUeXBlX1R5cGUgJiYKLSAgICAgICAgICAgIFB5VHVwbGVfQ2hlY2soYXJncykgJiYgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAxICYmCi0gICAgICAgICAgICAoa3dkcyA9PSBOVUxMIHx8Ci0gICAgICAgICAgICAgKFB5RGljdF9DaGVjayhrd2RzKSAmJiBQeURpY3RfU2l6ZShrd2RzKSA9PSAwKSkpCi0gICAgICAgICAgICByZXR1cm4gb2JqOwotICAgICAgICAvKiBJZiB0aGUgcmV0dXJuZWQgb2JqZWN0IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiB0eXBlLAotICAgICAgICAgICBpdCB3b24ndCBiZSBpbml0aWFsaXplZC4gKi8KLSAgICAgICAgaWYgKCFQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob2JqKSwgdHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gb2JqOwotICAgICAgICB0eXBlID0gUHlfVFlQRShvYmopOwotICAgICAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpbnQgcmVzID0gdHlwZS0+dHBfaW5pdChvYmosIGFyZ3MsIGt3ZHMpOwotICAgICAgICAgICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYob2JqKTsKLSAgICAgICAgICAgICAgICBvYmogPSBOVUxMOwotICAgICAgICAgICAgfQorICAgIG9iaiA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KChQeU9iamVjdCopdHlwZSwgb2JqLCBOVUxMKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogVWdseSBleGNlcHRpb246IHdoZW4gdGhlIGNhbGwgd2FzIHR5cGUoc29tZXRoaW5nKSwKKyAgICAgICBkb24ndCBjYWxsIHRwX2luaXQgb24gdGhlIHJlc3VsdC4gKi8KKyAgICBpZiAodHlwZSA9PSAmUHlUeXBlX1R5cGUgJiYKKyAgICAgICAgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKKyAgICAgICAgKGt3ZHMgPT0gTlVMTCB8fAorICAgICAgICAgKFB5RGljdF9DaGVjayhrd2RzKSAmJiBQeURpY3RfU2l6ZShrd2RzKSA9PSAwKSkpCisgICAgICAgIHJldHVybiBvYmo7CisKKyAgICAvKiBJZiB0aGUgcmV0dXJuZWQgb2JqZWN0IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiB0eXBlLAorICAgICAgIGl0IHdvbid0IGJlIGluaXRpYWxpemVkLiAqLworICAgIGlmICghUHlUeXBlX0lzU3VidHlwZShQeV9UWVBFKG9iaiksIHR5cGUpKQorICAgICAgICByZXR1cm4gb2JqOworCisgICAgdHlwZSA9IFB5X1RZUEUob2JqKTsKKyAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSBOVUxMKSB7CisgICAgICAgIGludCByZXMgPSB0eXBlLT50cF9pbml0KG9iaiwgYXJncywga3dkcyk7CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2JqKTsKKyAgICAgICAgICAgIG9iaiA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBvYmo7CkBAIC0xMzIzLDcgKzEzMzYsNyBAQAogCiAvKiB0eXBlIHRlc3Qgd2l0aCBzdWJjbGFzc2luZyBzdXBwb3J0ICovCiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW50CiB0eXBlX2lzX3N1YnR5cGVfYmFzZV9jaGFpbihQeVR5cGVPYmplY3QgKmEsIFB5VHlwZU9iamVjdCAqYikKIHsKICAgICBkbyB7CkBAIC0xNDExLDM2ICsxNDI0LDM4IEBACiAgICBhcyBsb29rdXBfbWV0aG9kIHRvIGNhY2hlIHRoZSBpbnRlcm5lZCBuYW1lIHN0cmluZyBvYmplY3QuICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX21ldGhvZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21ldGhvZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwotICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTCwgKnJldHZhbDsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZWlkLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpCisgICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7CisgICAgICAgIFB5T2JqZWN0ICphcmdzOworCisgICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICB2YV9lbmQodmEpOwogCi0gICAgdmFfZW5kKHZhKTsKKyAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwogCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOwogICAgIH0KIAotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLSAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKIAogICAgIHJldHVybiByZXR2YWw7CkBAIC0xNDQ5LDM2ICsxNDY0LDM4IEBACiAvKiBDbG9uZSBvZiBjYWxsX21ldGhvZCgpIHRoYXQgcmV0dXJucyBOb3RJbXBsZW1lbnRlZCB3aGVuIHRoZSBsb29rdXAgZmFpbHMuICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX21heWJlKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKK2NhbGxfbWF5YmUoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpmdW5jID0gMCwgKnJldHZhbDsKLSAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEwsICpyZXR2YWw7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWVpZCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICB2YV9lbmQodmEpOwogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkKKyAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKKyAgICAgICAgUHlPYmplY3QgKmFyZ3M7CisKKyAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIHZhX2VuZCh2YSk7CiAKLSAgICB2YV9lbmQodmEpOworICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgfQogCi0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogCiAgICAgcmV0dXJuIHJldHZhbDsKQEAgLTE1MzAsNyArMTU0Nyw2IEBACiAgICAgUHlPYmplY3QgKm5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlfWERFQ1JFRihuYW1lKTsKICAgICAgICAgbmFtZSA9IFB5T2JqZWN0X1JlcHIoY2xzKTsKICAgICB9CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkKQEAgLTIwMjQsNiArMjA0MCw4IEBACiBzdGF0aWMgaW50IG9iamVjdF9pbml0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCB1cGRhdGVfc2xvdChQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgdm9pZCBmaXh1cF9zbG90X2Rpc3BhdGNoZXJzKFB5VHlwZU9iamVjdCAqKTsKK3N0YXRpYyBpbnQgc2V0X25hbWVzKFB5VHlwZU9iamVjdCAqKTsKK3N0YXRpYyBpbnQgaW5pdF9zdWJjbGFzcyhQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIC8qCiAgKiBIZWxwZXJzIGZvciAgX19kaWN0X18gZGVzY3JpcHRvci4gIFdlIGRvbid0IHdhbnQgdG8gZXhwb3NlIHRoZSBkaWN0cwpAQCAtMjA4OCw3ICsyMTA2LDcgQEAKIHN0YXRpYyBpbnQKIHN1YnR5cGVfc2V0ZGljdChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0cjsKKyAgICBQeU9iamVjdCAqKmRpY3RwdHI7CiAgICAgUHlUeXBlT2JqZWN0ICpiYXNlOwogCiAgICAgYmFzZSA9IGdldF9idWlsdGluX2Jhc2Vfd2l0aF9kaWN0KFB5X1RZUEUob2JqKSk7CkBAIC0yMTE5LDEwICsyMTM3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICJub3QgYSAnJS4yMDBzJyIsIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBkaWN0ID0gKmRpY3RwdHI7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgKmRpY3RwdHIgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIFB5X1hTRVRSRUYoKmRpY3RwdHIsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjIwMSw3ICsyMjE3LDggQEAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrd2RzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3ZHMpKTsKIAotICAgIGlmIChrd2RzICE9IE5VTEwgJiYgUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpICE9IDApIHsKKyAgICBpZiAoa3dkcyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykgJiYgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAxICYmCisgICAgICAgIFB5RGljdF9DaGVjayhrd2RzKSAmJiBQeURpY3RfU2l6ZShrd2RzKSAhPSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZS5fX2luaXRfXygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTIyNjgsOCArMjI4NSw3IEBACiB0eXBlX25ldyhQeVR5cGVPYmplY3QgKm1ldGF0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcyA9IE5VTEwsICpvcmlnX2RpY3QsICpkaWN0ID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im5hbWUiLCAiYmFzZXMiLCAiZGljdCIsIDB9OwotICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKnNsb3RzID0gTlVMTCwgKnRtcCwgKm5ld3Nsb3RzOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKnNsb3RzID0gTlVMTCwgKnRtcCwgKm5ld3Nsb3RzLCAqY2VsbDsKICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBOVUxMLCAqYmFzZSwgKnRtcHR5cGUsICp3aW5uZXI7CiAgICAgUHlIZWFwVHlwZU9iamVjdCAqZXQ7CiAgICAgUHlNZW1iZXJEZWYgKm1wOwpAQCAtMjI3NywxNiArMjI5MywxOSBAQAogICAgIGludCBqLCBtYXlfYWRkX2RpY3QsIG1heV9hZGRfd2VhaywgYWRkX2RpY3QsIGFkZF93ZWFrOwogICAgIF9QeV9JREVOVElGSUVSKF9fcXVhbG5hbWVfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19zbG90c19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzY2VsbF9fKTsKIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGt3ZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dkcykpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlOiB0eXBlKHgpIHNob3VsZCByZXR1cm4geC0+b2JfdHlwZSAqLwotICAgIHsKKyAgICAvKiBXZSBvbmx5IHdhbnQgdHlwZSBpdHNlbGYgdG8gYWNjZXB0IHRoZSBvbmUtYXJndW1lbnQgZm9ybSAoIzI3MTU3KQorICAgICAgIE5vdGU6IFdlIGRvbid0IGNhbGwgUHlUeXBlX0NoZWNrRXhhY3QgYXMgdGhhdCBhbHNvIGFsbG93cyBzdWJjbGFzc2VzICovCisgICAgaWYgKG1ldGF0eXBlID09ICZQeVR5cGVfVHlwZSkgewogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKICAgICAgICAgY29uc3QgUHlfc3NpemVfdCBua3dkcyA9IGt3ZHMgPT0gTlVMTCA/IDAgOiBQeURpY3RfU2l6ZShrd2RzKTsKIAotICAgICAgICBpZiAoUHlUeXBlX0NoZWNrRXhhY3QobWV0YXR5cGUpICYmIG5hcmdzID09IDEgJiYgbmt3ZHMgPT0gMCkgeworICAgICAgICBpZiAobmFyZ3MgPT0gMSAmJiBua3dkcyA9PSAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqeCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfVFlQRSh4KSk7CiAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIFB5X1RZUEUoeCk7CkBAIC0yMjk1LDcgKzIzMTQsNyBAQAogICAgICAgICAvKiBTRiBidWcgNDc1MzI3IC0tIGlmIHRoYXQgZGlkbid0IHRyaWdnZXIsIHdlIG5lZWQgMwogICAgICAgICAgICBhcmd1bWVudHMuIGJ1dCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgYmVsb3cgbWF5IGdpdmUKICAgICAgICAgICAgYSBtc2cgc2F5aW5nIHR5cGUoKSBuZWVkcyBleGFjdGx5IDMuICovCi0gICAgICAgIGlmIChuYXJncyArIG5rd2RzICE9IDMpIHsKKyAgICAgICAgaWYgKG5hcmdzICE9IDMpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUoKSB0YWtlcyAxIG9yIDMgYXJndW1lbnRzIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzMDMsMTAgKzIzMjIsOCBAQAogICAgIH0KIAogICAgIC8qIENoZWNrIGFyZ3VtZW50czogKG5hbWUsIGJhc2VzLCBkaWN0KSAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJVTyFPITp0eXBlIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVR1cGxlX1R5cGUsICZiYXNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEaWN0X1R5cGUsICZvcmlnX2RpY3QpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVU8hTyE6dHlwZS5fX25ld19fIiwgJm5hbWUsICZQeVR1cGxlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZiYXNlcywgJlB5RGljdF9UeXBlLCAmb3JpZ19kaWN0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBEZXRlcm1pbmUgdGhlIHByb3BlciBtZXRhdHlwZSB0byBkZWFsIHdpdGggdGhpczogKi8KQEAgLTI1NDMsNyArMjU2MCw3IEBACiAgICAgfQogICAgIGV0LT5odF9xdWFsbmFtZSA9IHF1YWxuYW1lID8gcXVhbG5hbWUgOiBldC0+aHRfbmFtZTsKICAgICBQeV9JTkNSRUYoZXQtPmh0X3F1YWxuYW1lKTsKLSAgICBpZiAocXVhbG5hbWUgIT0gTlVMTCAmJiBQeURpY3RfRGVsSXRlbShkaWN0LCBQeUlkX19fcXVhbG5hbWVfXy5vYmplY3QpIDwgMCkKKyAgICBpZiAocXVhbG5hbWUgIT0gTlVMTCAmJiBfUHlEaWN0X0RlbEl0ZW1JZChkaWN0LCAmUHlJZF9fX3F1YWxuYW1lX18pIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIFNldCB0cF9kb2MgdG8gYSBjb3B5IG9mIGRpY3RbJ19fZG9jX18nXSwgaWYgdGhlIGxhdHRlciBpcyB0aGVyZQpAQCAtMjU4Niw2ICsyNjAzLDIwIEBACiAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAorICAgIC8qIFNwZWNpYWwtY2FzZSBfX2luaXRfc3ViY2xhc3NfXzogaWYgaXQncyBhIHBsYWluIGZ1bmN0aW9uLAorICAgICAgIG1ha2UgaXQgYSBjbGFzc21ldGhvZCAqLworICAgIHRtcCA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19faW5pdF9zdWJjbGFzc19fKTsKKyAgICBpZiAodG1wICE9IE5VTEwgJiYgUHlGdW5jdGlvbl9DaGVjayh0bXApKSB7CisgICAgICAgIHRtcCA9IFB5Q2xhc3NNZXRob2RfTmV3KHRtcCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2luaXRfc3ViY2xhc3NfXywgdG1wKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9CisKICAgICAvKiBBZGQgZGVzY3JpcHRvcnMgZm9yIGN1c3RvbSBzbG90cyBmcm9tIF9fc2xvdHNfXywgb3IgZm9yIF9fZGljdF9fICovCiAgICAgbXAgPSBQeUhlYXBUeXBlX0dFVF9NRU1CRVJTKGV0KTsKICAgICBzbG90b2Zmc2V0ID0gYmFzZS0+dHBfYmFzaWNzaXplOwpAQCAtMjY1NSw2ICsyNjg2LDE0IEBACiAgICAgZWxzZQogICAgICAgICB0eXBlLT50cF9mcmVlID0gUHlPYmplY3RfRGVsOwogCisgICAgLyogc3RvcmUgdHlwZSBpbiBjbGFzcycgY2VsbCAqLworICAgIGNlbGwgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2NsYXNzY2VsbF9fKTsKKyAgICBpZiAoY2VsbCAhPSBOVUxMICYmIFB5Q2VsbF9DaGVjayhjZWxsKSkgeworICAgICAgICBQeUNlbGxfU2V0KGNlbGwsIChQeU9iamVjdCAqKSB0eXBlKTsKKyAgICAgICAgX1B5RGljdF9EZWxJdGVtSWQoZGljdCwgJlB5SWRfX19jbGFzc2NlbGxfXyk7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorCiAgICAgLyogSW5pdGlhbGl6ZSB0aGUgcmVzdCAqLwogICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjY2Niw2ICsyNzA1LDEyIEBACiAgICAgICAgIGV0LT5odF9jYWNoZWRfa2V5cyA9IF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKCk7CiAgICAgfQogCisgICAgaWYgKHNldF9uYW1lcyh0eXBlKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBpZiAoaW5pdF9zdWJjbGFzcyh0eXBlLCBrd2RzKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXR5cGU7CiAKQEAgLTI2NzcsNyArMjcyMiw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBzaG9ydCBzbG90b2Zmc2V0c1tdID0geworc3RhdGljIGNvbnN0IHNob3J0IHNsb3RvZmZzZXRzW10gPSB7CiAgICAgLTEsIC8qIGludmFsaWQgc2xvdCAqLwogI2luY2x1ZGUgInR5cGVzbG90cy5pbmMiCiB9OwpAQCAtMzU5Niw3ICszNjQxLDcgQEAKIH0KIAogc3RhdGljIGludAotY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QqIG9sZHRvLCBQeVR5cGVPYmplY3QqIG5ld3RvLCBjaGFyKiBhdHRyKQorY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QqIG9sZHRvLCBQeVR5cGVPYmplY3QqIG5ld3RvLCBjb25zdCBjaGFyKiBhdHRyKQogewogICAgIFB5VHlwZU9iamVjdCAqbmV3YmFzZSwgKm9sZGJhc2U7CiAKQEAgLTM3NzIsNyArMzgxNyw3IEBACiAgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydChjb3B5cmVnX3N0cik7CiB9CiAKLVB5X0xPQ0FMKFB5T2JqZWN0ICopCitzdGF0aWMgUHlPYmplY3QgKgogX1B5VHlwZV9HZXRTbG90TmFtZXMoUHlUeXBlT2JqZWN0ICpjbHMpCiB7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CkBAIC0zODI1LDcgKzM4NzAsNyBAQAogICAgIHJldHVybiBzbG90bmFtZXM7CiB9CiAKLVB5X0xPQ0FMKFB5T2JqZWN0ICopCitzdGF0aWMgUHlPYmplY3QgKgogX1B5T2JqZWN0X0dldFN0YXRlKFB5T2JqZWN0ICpvYmosIGludCByZXF1aXJlZCkKIHsKICAgICBQeU9iamVjdCAqc3RhdGU7CkBAIC0zODcyLDYgKzM5MTcsMjQgQEAKICAgICAgICAgfQogCiAgICAgICAgIGFzc2VydChzbG90bmFtZXMgPT0gUHlfTm9uZSB8fCBQeUxpc3RfQ2hlY2soc2xvdG5hbWVzKSk7CisgICAgICAgIGlmIChyZXF1aXJlZCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBiYXNpY3NpemUgPSBQeUJhc2VPYmplY3RfVHlwZS50cF9iYXNpY3NpemU7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF9kaWN0b2Zmc2V0KQorICAgICAgICAgICAgICAgIGJhc2ljc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF93ZWFrbGlzdG9mZnNldCkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaWYgKHNsb3RuYW1lcyAhPSBQeV9Ob25lKQorICAgICAgICAgICAgICAgIGJhc2ljc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKikgKiBQeV9TSVpFKHNsb3RuYW1lcyk7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF9iYXNpY3NpemUgPiBiYXNpY3NpemUpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2xvdG5hbWVzKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBwaWNrbGUgJS4yMDBzIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKHNsb3RuYW1lcyAhPSBQeV9Ob25lICYmIFB5X1NJWkUoc2xvdG5hbWVzKSA+IDApIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzbG90czsKICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2xvdG5hbWVzX3NpemUsIGk7CkBAIC0zOTI2LDcgKzM5ODksNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvKiBJZiB3ZSBmb3VuZCBzb21lIHNsb3QgYXR0cmlidXRlcywgcGFjayB0aGVtIGluIGEgdHVwbGUgYWxvbmcKLSAgICAgICAgICAgICAgIHRoZSBvcmdpbmFsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LiAqLworICAgICAgICAgICAgICAgdGhlIG9yaWdpbmFsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LiAqLwogICAgICAgICAgICAgaWYgKFB5RGljdF9TaXplKHNsb3RzKSA+IDApIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhdGUyOwogCkBAIC0zOTUzLDcgKzQwMTYsNyBAQAogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogX1B5T2JqZWN0X0dldE5ld0FyZ3VtZW50cyhQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqKmFyZ3MsIFB5T2JqZWN0ICoqa3dhcmdzKQogewogICAgIFB5T2JqZWN0ICpnZXRuZXdhcmdzLCAqZ2V0bmV3YXJnc19leDsKQEAgLTQwNDksNyArNDExMiw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIF9QeU9iamVjdF9HZXRJdGVtc0l0ZXIoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKipsaXN0aXRlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZGljdGl0ZW1zKQogewpAQCAtNDA5NSw3ICs0MTU4LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXJlZHVjZV9uZXdvYmooUHlPYmplY3QgKm9iaiwgaW50IHByb3RvKQorcmVkdWNlX25ld29iaihQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICphcmdzID0gTlVMTCwgKmt3YXJncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CkBAIC00MTQ4LDcgKzQyMTEsNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgfQotICAgIGVsc2UgaWYgKHByb3RvID49IDQpIHsKKyAgICBlbHNlIGlmIChhcmdzICE9IE5VTEwpIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7CiAKICAgICAgICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9leF9fKTsKQEAgLTQxNjcsMTMgKzQyMzAsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IHVzZSBwcm90b2NvbCA0IG9yIGdyZWF0ZXIgdG8gY29weSB0aGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Q7IHNpbmNlIF9fZ2V0bmV3YXJnc19leF9fIHJldHVybmVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50cy4iKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAvKiBhcmdzID09IE5VTEwgKi8KICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7Ci0gICAgICAgIFB5X0RFQ1JFRihjb3B5cmVnKTsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNDIyMSw3ICs0MjgwLDcgQEAKICAgICBQeU9iamVjdCAqY29weXJlZywgKnJlczsKIAogICAgIGlmIChwcm90byA+PSAyKQotICAgICAgICByZXR1cm4gcmVkdWNlX25ld29iaihzZWxmLCBwcm90byk7CisgICAgICAgIHJldHVybiByZWR1Y2VfbmV3b2JqKHNlbGYpOwogCiAgICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7CiAgICAgaWYgKCFjb3B5cmVnKQpAQCAtNDMwMyw2ICs0MzYyLDE4IEBACiAiTm90SW1wbGVtZW50ZWQsIHRoZSBub3JtYWwgYWxnb3JpdGhtIGlzIHVzZWQuICBPdGhlcndpc2UsIGl0XG4iCiAib3ZlcnJpZGVzIHRoZSBub3JtYWwgYWxnb3JpdGhtIChhbmQgdGhlIG91dGNvbWUgaXMgY2FjaGVkKS5cbiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorb2JqZWN0X2luaXRfc3ViY2xhc3MoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKG9iamVjdF9pbml0X3N1YmNsYXNzX2RvYywKKyJUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhIGNsYXNzIGlzIHN1YmNsYXNzZWQuXG4iCisiXG4iCisiVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RoaW5nLiBJdCBtYXkgYmVcbiIKKyJvdmVycmlkZGVuIHRvIGV4dGVuZCBzdWJjbGFzc2VzLlxuIik7CisKIC8qCiAgICBmcm9tIFBFUCAzMTAxLCB0aGlzIGNvZGUgaW1wbGVtZW50czoKIApAQCAtNDQwNyw2ICs0NDc4LDggQEAKICAgICAgUHlEb2NfU1RSKCJoZWxwZXIgZm9yIHBpY2tsZSIpfSwKICAgICB7Il9fc3ViY2xhc3Nob29rX18iLCBvYmplY3Rfc3ViY2xhc3Nob29rLCBNRVRIX0NMQVNTIHwgTUVUSF9WQVJBUkdTLAogICAgICBvYmplY3Rfc3ViY2xhc3Nob29rX2RvY30sCisgICAgeyJfX2luaXRfc3ViY2xhc3NfXyIsIG9iamVjdF9pbml0X3N1YmNsYXNzLCBNRVRIX0NMQVNTIHwgTUVUSF9OT0FSR1MsCisgICAgIG9iamVjdF9pbml0X3N1YmNsYXNzX2RvY30sCiAgICAgeyJfX2Zvcm1hdF9fIiwgb2JqZWN0X2Zvcm1hdCwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoImRlZmF1bHQgb2JqZWN0IGZvcm1hdHRlciIpfSwKICAgICB7Il9fc2l6ZW9mX18iLCBvYmplY3Rfc2l6ZW9mLCBNRVRIX05PQVJHUywKQEAgLTUzNTIsNyArNTQyNSw3IEBACiAvKiBIZWxwZXIgdG8gY2hlY2sgZm9yIG9iamVjdC5fX3NldGF0dHJfXyBvciBfX2RlbGF0dHJfXyBhcHBsaWVkIHRvIGEgdHlwZS4KICAgIFRoaXMgaXMgY2FsbGVkIHRoZSBDYXJsbyBWZXJyZSBoYWNrIGFmdGVyIGl0cyBkaXNjb3ZlcmVyLiAqLwogc3RhdGljIGludAotaGFja2NoZWNrKFB5T2JqZWN0ICpzZWxmLCBzZXRhdHRyb2Z1bmMgZnVuYywgY2hhciAqd2hhdCkKK2hhY2tjaGVjayhQeU9iamVjdCAqc2VsZiwgc2V0YXR0cm9mdW5jIGZ1bmMsIGNvbnN0IGNoYXIgKndoYXQpCiB7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKICAgICB3aGlsZSAodHlwZSAmJiB0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCkBAIC01NjM5LDcgKzU3MTIsNyBAQAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYpIFwKIHsgXAogICAgIF9QeV9zdGF0aWNfc3RyaW5nKGlkLCBPUFNUUik7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCkiKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsIE5VTEwpOyBcCiB9CiAKICNkZWZpbmUgU0xPVDEoRlVOQ05BTUUsIE9QU1RSLCBBUkcxVFlQRSwgQVJHQ09ERVMpIFwKQEAgLTU3MzIsNyArNTgwNSw3IEBACiBzdGF0aWMgUHlfc3NpemVfdAogc2xvdF9zcV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKnJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbGVuX18sICIoKSIpOworICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCBOVUxMKTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTU3NTMsMzggKzU4MjYsMzkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3NxX2l0ZW0oUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MgPSBOVUxMLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIGRlc2NyZ2V0ZnVuYyBmOwogCiAgICAgZnVuYyA9IF9QeVR5cGVfTG9va3VwSWQoUHlfVFlQRShzZWxmKSwgJlB5SWRfX19nZXRpdGVtX18pOwotICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKChmID0gUHlfVFlQRShmdW5jKS0+dHBfZGVzY3JfZ2V0KSA9PSBOVUxMKQotICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZ1bmMgPSBmKGZ1bmMsIHNlbGYsIChQeU9iamVjdCAqKShQeV9UWVBFKHNlbGYpKSk7Ci0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaXZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpKTsKLSAgICAgICAgaWYgKGl2YWwgIT0gTlVMTCkgewotICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgICAgICAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgaXZhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpnZXRpdGVtX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBnZXRpdGVtX3N0cik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgIFB5X1hERUNSRUYoaXZhbCk7Ci0gICAgUHlfWERFQ1JFRihmdW5jKTsKKworICAgIGYgPSBQeV9UWVBFKGZ1bmMpLT50cF9kZXNjcl9nZXQ7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmdW5jID0gZihmdW5jLCBzZWxmLCAoUHlPYmplY3QgKikoUHlfVFlQRShzZWxmKSkpOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGl2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSk7CisgICAgaWYgKGl2YWwgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBpdmFsKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgUHlfREVDUkVGKGl2YWwpOworICAgIHJldHVybiByZXR2YWw7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNTgwNiwxOSArNTg4MCwyMCBAQAogc3RhdGljIGludAogc2xvdF9zcV9jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzLCAqYXJnczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKICAgICBpbnQgcmVzdWx0ID0gLTE7CiAgICAgX1B5X0lERU5USUZJRVIoX19jb250YWluc19fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19jb250YWluc19fKTsKKyAgICBpZiAoZnVuYyA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGEgY29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICByZXMgPSBOVUxMOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIH0KKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIHZhbHVlKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtNTg4OSw0NCArNTk2NCw1NCBAQAogc3RhdGljIGludAogc2xvdF9uYl9ib29sKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJnczsKLSAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlPYmplY3QgKmZ1bmMsICp2YWx1ZTsKKyAgICBpbnQgcmVzdWx0OwogICAgIGludCB1c2luZ19sZW4gPSAwOwogICAgIF9QeV9JREVOVElGSUVSKF9fYm9vbF9fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19ib29sX18pOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fbGVuX18pOwotICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX09jY3VycmVkKCkgPyAtMSA6IDE7CisgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KICAgICAgICAgdXNpbmdfbGVuID0gMTsKICAgICB9Ci0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmIChhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIGlmICh0ZW1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmICh1c2luZ19sZW4pIHsKLSAgICAgICAgICAgICAgICAvKiBlbmZvcmNlZCBieSBzbG90X25iX2xlbiAqLwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh0ZW1wKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Jvb2xfXyBzaG91bGQgcmV0dXJuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2wsIHJldHVybmVkICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh0ZW1wKS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7Ci0gICAgICAgIH0KKworICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKworICAgIGlmICh1c2luZ19sZW4pIHsKKyAgICAgICAgLyogYm9vbCB0eXBlIGVuZm9yY2VkIGJ5IHNsb3RfbmJfbGVuICovCisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX19ib29sX18gc2hvdWxkIHJldHVybiAiCisgICAgICAgICAgICAgICAgICAgICAiYm9vbCwgcmV0dXJuZWQgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgcmV0dXJuIC0xOwogfQogCiAKQEAgLTU5MzQsNyArNjAxOSw3IEBACiBzbG90X25iX2luZGV4KFB5T2JqZWN0ICpzZWxmKQogewogICAgIF9QeV9JREVOVElGSUVSKF9faW5kZXhfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgIigpIik7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgTlVMTCk7CiB9CiAKIApAQCAtNjE3MSwyMCArNjI1NiwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJncywgKnJlczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZuYW1lX29wW29wXSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgb3RoZXIpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJlcyA9IE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICB9CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIG90aGVyKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTYxOTYsMTYgKzYyNzUsMjAgQEAKICAgICBfUHlfSURFTlRJRklFUihfX2l0ZXJfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2l0ZXJfXyk7CisgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqYXJnczsKLSAgICAgICAgYXJncyA9IHJlcyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBpZiAoYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CisKICAgICBQeUVycl9DbGVhcigpOwogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CkBAIC02MjIyLDcgKzYzMDUsNyBAQAogc2xvdF90cF9pdGVybmV4dChQeU9iamVjdCAqc2VsZikKIHsKICAgICBfUHlfSURFTlRJRklFUihfX25leHRfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCAiKCkiKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19uZXh0X18sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjI5MSwyOSArNjM3NCwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jOwotICAgIFB5T2JqZWN0ICpuZXdhcmdzLCAqeDsKLSAgICBQeV9zc2l6ZV90IGksIG47CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXN1bHQ7CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKil0eXBlLCAmUHlJZF9fX25ld19fKTsKLSAgICBpZiAoZnVuYyA9PSBOVUxMKQorICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwotICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuKzEpOwotICAgIGlmIChuZXdhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRih0eXBlKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIChQeU9iamVjdCAqKXR5cGUpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgeCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpKzEsIHgpOwogICAgIH0KLSAgICB4ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKGZ1bmMsIChQeU9iamVjdCAqKXR5cGUsIGFyZ3MsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICByZXR1cm4geDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgdm9pZApAQCAtNjkxNiw2ICs2OTg2LDU3IEBACiAgICAgfQogfQogCisvKiBDYWxsIF9fc2V0X25hbWVfXyBvbiBhbGwgZGVzY3JpcHRvcnMgaW4gYSBuZXdseSBnZW5lcmF0ZWQgdHlwZSAqLworc3RhdGljIGludAorc2V0X25hbWVzKFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICp0bXA7CisgICAgUHlfc3NpemVfdCBpID0gMDsKKworICAgIHdoaWxlIChQeURpY3RfTmV4dCh0eXBlLT50cF9kaWN0LCAmaSwgJmtleSwgJnZhbHVlKSkgeworICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0cih2YWx1ZSwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19zZXRfbmFtZV9fKSkpIHsKKyAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKAorICAgICAgICAgICAgICAgIHZhbHVlLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX3NldF9uYW1lX18pLAorICAgICAgICAgICAgICAgIHR5cGUsIGtleSwgTlVMTCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENhbGwgX19pbml0X3N1YmNsYXNzX18gb24gdGhlIHBhcmVudCBvZiBhIG5ld2x5IGdlbmVyYXRlZCB0eXBlICovCitzdGF0aWMgaW50Citpbml0X3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnN1cGVyLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqYXJnc1syXSA9IHsoUHlPYmplY3QgKil0eXBlLCAoUHlPYmplY3QgKil0eXBlfTsKKworICAgIHN1cGVyID0gX1B5T2JqZWN0X0Zhc3RDYWxsKChQeU9iamVjdCAqKSZQeVN1cGVyX1R5cGUsIGFyZ3MsIDIpOworICAgIGlmIChzdXBlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChzdXBlciwgJlB5SWRfX19pbml0X3N1YmNsYXNzX18pOworICAgIFB5X0RFQ1JFRihzdXBlcik7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIE5VTEwsIDAsIGt3ZHMpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiAwOworfQorCiAvKiByZWN1cnNlX2Rvd25fc3ViY2xhc3NlcygpIGFuZCB1cGRhdGVfc3ViY2xhc3NlcygpIGFyZSBtdXR1YWxseQogICAgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0byBjYWxsIGEgY2FsbGJhY2sgZm9yIGFsbCBzdWJjbGFzc2VzLAogICAgYnV0IHJlZnJhaW5pbmcgZnJvbSByZWN1cnNpbmcgaW50byBzdWJjbGFzc2VzIHRoYXQgZGVmaW5lICduYW1lJy4gKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKaW5kZXggYWYwNDU2NC4uODVjZGJiNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJ1Y25oYXNoLmgiCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTE2Miw2ICsxNjMsMTQgQEAKICAgICAgICAgICAgICpfdG8rKyA9ICh0b190eXBlKSAqX2l0ZXIrKzsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgorI2Vsc2UKKyAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAorI2VuZGlmCisKIC8qIFRoaXMgZGljdGlvbmFyeSBob2xkcyBhbGwgaW50ZXJuZWQgdW5pY29kZSBzdHJpbmdzLiAgTm90ZSB0aGF0IHJlZmVyZW5jZXMKICAgIHRvIHN0cmluZ3MgaW4gdGhpcyBkaWN0aW9uYXJ5IGFyZSAqbm90KiBjb3VudGVkIGluIHRoZSBzdHJpbmcncyBvYl9yZWZjbnQuCiAgICBXaGVuIHRoZSBpbnRlcm5lZCBzdHJpbmcgcmVhY2hlcyBhIHJlZmNudCBvZiAwIHRoZSBzdHJpbmcgZGVhbGxvY2F0aW9uCkBAIC0xOTUsNyArMjA0LDcgQEAKICAgICB9IHdoaWxlICgwKQogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfVUNTNCBjaCk7CiAKIC8qIExpc3Qgb2Ygc3RhdGljIHN0cmluZ3MuICovCkBAIC0yNjMsNyArMjcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKIAogLyogU2FtZSBmb3IgbGluZWJyZWFrcyAqLwotc3RhdGljIHVuc2lnbmVkIGNoYXIgYXNjaWlfbGluZWJyZWFrW10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaV9saW5lYnJlYWtbXSA9IHsKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogLyogICAgICAgICAweDAwMEEsICogTElORSBGRUVEICovCiAvKiAgICAgICAgIDB4MDAwQiwgKiBMSU5FIFRBQlVMQVRJT04gKi8KQEAgLTI5Miw2ICszMDEsNDUgQEAKIAogI2luY2x1ZGUgImNsaW5pYy91bmljb2Rlb2JqZWN0LmMuaCIKIAordHlwZWRlZiBlbnVtIHsKKyAgICBfUHlfRVJST1JfVU5LTk9XTj0wLAorICAgIF9QeV9FUlJPUl9TVFJJQ1QsCisgICAgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRSwKKyAgICBfUHlfRVJST1JfUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfSUdOT1JFLAorICAgIF9QeV9FUlJPUl9CQUNLU0xBU0hSRVBMQUNFLAorICAgIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTLAorICAgIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfT1RIRVIKK30gX1B5X2Vycm9yX2hhbmRsZXI7CisKK3N0YXRpYyBfUHlfZXJyb3JfaGFuZGxlcgorZ2V0X2Vycm9yX2hhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NUUklDVDsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVlc2NhcGUiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfUkVQTEFDRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfSUdOT1JFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgImJhY2tzbGFzaHJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVwYXNzIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NVUlJPR0FURVBBU1M7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U7CisgICAgfQorICAgIHJldHVybiBfUHlfRVJST1JfT1RIRVI7Cit9CisKIC8qIFRoZSBtYXggdW5pY29kZSB2YWx1ZSBpcyBhbHdheXMgMHgxMEZGRkYgd2hpbGUgdXNpbmcgdGhlIFBFUC0zOTMgQVBJLgogICAgVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZCBBUEkuICovCiBQeV9VTklDT0RFCkBAIC01MjEsNiArNTY5LDEyOSBAQAogICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Db3B5KHVuaWNvZGUpOwogfQogCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgImJhY2tzbGFzaHJlcGxhY2UiIGVycm9yIGhhbmRsZXIgZm9yIDgtYml0IGVuY29kaW5nczoKKyAgIEFTQ0lJLCBMYXRpbjEsIFVURi04LCBldGMuICovCitzdGF0aWMgY2hhcioKK2JhY2tzbGFzaHJlcGxhY2UoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBjb2xsc3RhcnQsIFB5X3NzaXplX3QgY29sbGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgUHlfVUNTNCBjaDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisKKyAgICBzaXplID0gMDsKKyAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBQeV9zc2l6ZV90IGluY3I7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoIDwgMHgxMDApCisgICAgICAgICAgICBpbmNyID0gMisyOworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApCisgICAgICAgICAgICBpbmNyID0gMis0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICBpbmNyID0gMis4OworICAgICAgICB9CisgICAgICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLSBpbmNyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZSArPSBpbmNyOworICAgIH0KKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAqc3RyKysgPSAnXFwnOworICAgICAgICBpZiAoY2ggPj0gMHgwMDAxMDAwMCkgeworICAgICAgICAgICAgKnN0cisrID0gJ1UnOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MjgpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4yNCkmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjIwKSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MTYpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4xMikmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjgpJjB4Zl07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDApIHsKKyAgICAgICAgICAgICpzdHIrKyA9ICd1JzsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjEyKSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+OCkmMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAqc3RyKysgPSAneCc7CisgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjQpJjB4Zl07CisgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1tjaCYweGZdOworICAgIH0KKyAgICByZXR1cm4gc3RyOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgInhtbGNoYXJyZWZyZXBsYWNlIiBlcnJvciBoYW5kbGVyIGZvciA4LWJpdCBlbmNvZGluZ3M6CisgICBBU0NJSSwgTGF0aW4xLCBVVEYtOCwgZXRjLiAqLworc3RhdGljIGNoYXIqCit4bWxjaGFycmVmcmVwbGFjZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBjb2xsc3RhcnQsIFB5X3NzaXplX3QgY29sbGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgUHlfVUNTNCBjaDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisKKyAgICBzaXplID0gMDsKKyAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBQeV9zc2l6ZV90IGluY3I7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoIDwgMTApCisgICAgICAgICAgICBpbmNyID0gMisxKzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwKQorICAgICAgICAgICAgaW5jciA9IDIrMisxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCisgICAgICAgICAgICBpbmNyID0gMiszKzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDApCisgICAgICAgICAgICBpbmNyID0gMis0KzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNSsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMDApCisgICAgICAgICAgICBpbmNyID0gMis2KzE7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgICAgIGluY3IgPSAyKzcrMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNpemUgKz0gaW5jcjsKKyAgICB9CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CisgICAgfQorICAgIHJldHVybiBzdHI7Cit9CisKIC8qIC0tLSBCbG9vbSBGaWx0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIHN0dWZmIHRvIGltcGxlbWVudCBzaW1wbGUgImJsb29tIGZpbHRlcnMiIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCkBAIC01NDksNyArNzIwLDcgQEAKICAgICAoKGNoKSA8IDEyOFUgPyBhc2NpaV9saW5lYnJlYWtbKGNoKV0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKEJMT09NKGJsb29tX2xpbmVicmVhaywgKGNoKSkgJiYgUHlfVU5JQ09ERV9JU0xJTkVCUkVBSyhjaCkpKQogCi1QeV9MT0NBTF9JTkxJTkUoQkxPT01fTUFTSykKK3N0YXRpYyBpbmxpbmUgQkxPT01fTUFTSwogbWFrZV9ibG9vbV9tYXNrKGludCBraW5kLCB2b2lkKiBwdHIsIFB5X3NzaXplX3QgbGVuKQogewogI2RlZmluZSBCTE9PTV9VUERBVEUoVFlQRSwgTUFTSywgUFRSLCBMRU4pICAgICAgICAgICAgIFwKQEAgLTU4Nyw2ICs3NTgsMTggQEAKICN1bmRlZiBCTE9PTV9VUERBVEUKIH0KIAorc3RhdGljIGludAorZW5zdXJlX3VuaWNvZGUoUHlPYmplY3QgKm9iaikKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHIsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX1JFQURZKG9iaik7Cit9CisKIC8qIENvbXBpbGF0aW9uIG9mIHRlbXBsYXRlZCByb3V0aW5lcyAqLwogCiAjaW5jbHVkZSAic3RyaW5nbGliL2FzY2lpbGliLmgiCkBAIC02NDMsMzEgKzgyNiwzMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpeHVwKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0ICgqZml4ZmN0KShQeU9iamVjdCAqcykpOwogCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgZmluZGNoYXIoY29uc3Qgdm9pZCAqcywgaW50IGtpbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKK2ZpbmRjaGFyKGNvbnN0IHZvaWQgKnMsIGludCBraW5kLAorICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAorICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBpbnQgbW9kZSA9IChkaXJlY3Rpb24gPT0gMSkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLQogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFB5X1VDUzEgY2gxID0gKFB5X1VDUzEpIGNoOwotICAgICAgICAgICAgaWYgKGNoMSA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9mYXN0c2VhcmNoKChQeV9VQ1MxICopIHMsIHNpemUsICZjaDEsIDEsIDAsIG1vZGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQorICAgICAgICBpZiAoKFB5X1VDUzEpIGNoICE9IGNoKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2ZpbmRfY2hhcigoUHlfVUNTMSAqKSBzLCBzaXplLCAoUHlfVUNTMSkgY2gpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9yZmluZF9jaGFyKChQeV9VQ1MxICopIHMsIHNpemUsIChQeV9VQ1MxKSBjaCk7CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKLSAgICAgICAgewotICAgICAgICAgICAgUHlfVUNTMiBjaDIgPSAoUHlfVUNTMikgY2g7Ci0gICAgICAgICAgICBpZiAoY2gyID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiB1Y3MybGliX2Zhc3RzZWFyY2goKFB5X1VDUzIgKikgcywgc2l6ZSwgJmNoMiwgMSwgMCwgbW9kZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CisgICAgICAgIGlmICgoUHlfVUNTMikgY2ggIT0gY2gpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKQorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfZmluZF9jaGFyKChQeV9VQ1MyICopIHMsIHNpemUsIChQeV9VQ1MyKSBjaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3MybGliX3JmaW5kX2NoYXIoKFB5X1VDUzIgKikgcywgc2l6ZSwgKFB5X1VDUzIpIGNoKTsKICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgotICAgICAgICByZXR1cm4gdWNzNGxpYl9mYXN0c2VhcmNoKChQeV9VQ1M0ICopIHMsIHNpemUsICZjaCwgMSwgMCwgbW9kZSk7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKQorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfZmluZF9jaGFyKChQeV9VQ1M0ICopIHMsIHNpemUsIGNoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfcmZpbmRfY2hhcigoUHlfVUNTNCAqKSBzLCBzaXplLCBjaCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICByZXR1cm4gLTE7CkBAIC04NjUsNyArMTA0OCw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgY29weV9sZW5ndGggPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOwogICAgICAgICBjb3B5X2xlbmd0aCA9IFB5X01JTihjb3B5X2xlbmd0aCwgbGVuZ3RoKTsKLSAgICAgICAgUHlfTUVNQ1BZKF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAorICAgICAgICBtZW1jcHkoX1B5VW5pY29kZV9XU1RSKHcpLCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksCiAgICAgICAgICAgICAgICAgICBjb3B5X2xlbmd0aCAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIHJldHVybiB3OwogICAgIH0KQEAgLTEyNTIsNyArMTQzNSw3IEBACiAgICAgICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBQeV9NRU1DUFkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCisgICAgICAgIG1lbWNweSgoY2hhciopdG9fZGF0YSArIHRvX2tpbmQgKiB0b19zdGFydCwKICAgICAgICAgICAgICAgICAgIChjaGFyKilmcm9tX2RhdGEgKyBmcm9tX2tpbmQgKiBmcm9tX3N0YXJ0LAogICAgICAgICAgICAgICAgICAgdG9fa2luZCAqIGhvd19tYW55KTsKICAgICB9CkBAIC0xODQxLDcgKzIwMjQsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgogI2lmIFB5X1VOSUNPREVfU0laRSA9PSAyCi0gICAgICAgIFB5X01FTUNQWShQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDIpOworICAgICAgICBtZW1jcHkoUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiAyKTsKICNlbHNlCiAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VTklDT0RFLCBQeV9VQ1MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LCB1ICsgc2l6ZSwgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSkpOwpAQCAtMTg1NCw3ICsyMDM3LDcgQEAKICAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQodSwgdSArIHNpemUsIHVuaWNvZGUpOwogI2Vsc2UKICAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOwotICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiA0KTsKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogNCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE5NTYsNyArMjEzOSw3IEBACiAgICAgfQogfQogCi1QeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK3N0YXRpYyBpbmxpbmUgUHlfVUNTNAogYWxpZ25fbWF4Y2hhcihQeV9VQ1M0IG1heGNoYXIpCiB7CiAgICAgaWYgKG1heGNoYXIgPD0gMTI3KQpAQCAtMjE2NSw3ICsyMzQ4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKGNvcHkpID09IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKIAotICAgIFB5X01FTUNQWShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgbWVtY3B5KFB5VW5pY29kZV9EQVRBKGNvcHkpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKICAgICAgICAgICAgICAgbGVuZ3RoICogUHlVbmljb2RlX0tJTkQodW5pY29kZSkpOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koY29weSwgMSkpOwogICAgIHJldHVybiBjb3B5OwpAQCAtMjI3MSw3ICsyNDU0LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgUHlfTUVNQ1BZKHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgbWVtY3B5KHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKICAgICB9CiAgICAgaWYgKGNvcHlfbnVsbCkKICAgICAgICAgdGFyZ2V0W2xlbl0gPSAwOwpAQCAtMjQ1NCwxMyArMjYzNywxMSBAQAogICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOwogICAgICAgICAgICAgKytmOwogICAgICAgICB9Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgZWxzZSBpZiAoZlsxXSA9PSAnbCcgJiYKICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnIHx8IGZbMl0gPT0gJ2knKSkgewogICAgICAgICAgICAgbG9uZ2xvbmdmbGFnID0gMTsKICAgICAgICAgICAgIGYgKz0gMjsKICAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcuICovCiAgICAgZWxzZSBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JyB8fCBmWzFdID09ICdpJykpIHsKQEAgLTI0OTgsMTEgKzI2NzksOSBAQAogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWx1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAidSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxsdSIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nIGxvbmcpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHNpemVfdCkpOwpAQCAtMjUxNywxMSArMjY5Niw5IEBACiAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgbG9uZykpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfTE9OR19MT05HICJpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGxpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIGxvbmcgbG9uZykpOwogICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKICAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUHlfc3NpemVfdCkpOwpAQCAtMjc4Niw3ICsyOTYzLDcgQEAKICAgICAgICAgICAgIHNpemUgPSByZXMgKyAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBzaXplOwotICAgICAgICBQeV9NRU1DUFkodywgd3N0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIG1lbWNweSh3LCB3c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZQpAQCAtMjkwMyw3ICszMDgwLDcgQEAKICAgICAvKiBSZXRyaWV2ZSBhIGJ5dGVzIGJ1ZmZlciB2aWV3IHRocm91Z2ggdGhlIFBFUCAzMTE4IGJ1ZmZlciBpbnRlcmZhY2UgKi8KICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJmJ1ZmZlciwgUHlCVUZfU0lNUExFKSA8IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjb2VyY2luZyB0byBzdHI6IG5lZWQgYSBieXRlcy1saWtlIG9iamVjdCwgJS44MHMgZm91bmQiLAorICAgICAgICAgICAgICAgICAgICAgImRlY29kaW5nIHRvIHN0cjogbmVlZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAlLjgwcyBmb3VuZCIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yOTE4LDkgKzMwOTUsOSBAQAogICAgIHJldHVybiB2OwogfQogCi0vKiBDb252ZXJ0IGVuY29kaW5nIHRvIGxvd2VyIGNhc2UgYW5kIHJlcGxhY2UgJ18nIHdpdGggJy0nIGluIG9yZGVyIHRvCi0gICBjYXRjaCBlLmcuIFVURl84LiBSZXR1cm4gMCBvbiBlcnJvciAoZW5jb2RpbmcgaXMgbG9uZ2VyIHRoYW4gbG93ZXJfbGVuLTEpLAotICAgMSBvbiBzdWNjZXNzLiAqLworLyogTm9ybWFsaXplIGFuIGVuY29kaW5nIG5hbWU6IEMgaW1wbGVtZW50YXRpb24gb2YKKyAgIGVuY29kaW5ncy5ub3JtYWxpemVfZW5jb2RpbmcoKS4gUmV0dXJuIDEgb24gc3VjY2Vzcywgb3IgMCBvbiBlcnJvciAoZW5jb2RpbmcKKyAgIGlzIGxvbmdlciB0aGFuIGxvd2VyX2xlbi0xKS4gKi8KIGludAogX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbG93ZXIsCkBAIC0yOTI5LDMwICszMTA2LDM5IEBACiAgICAgY29uc3QgY2hhciAqZTsKICAgICBjaGFyICpsOwogICAgIGNoYXIgKmxfZW5kOworICAgIGludCBwdW5jdDsKIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIDYgPT0gc3RybGVuKCJ1dGYtOCIpICsgMSAqLwotICAgICAgICBpZiAobG93ZXJfbGVuIDwgNikKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBzdHJjcHkobG93ZXIsICJ1dGYtOCIpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9CisgICAgYXNzZXJ0KGVuY29kaW5nICE9IE5VTEwpOworCiAgICAgZSA9IGVuY29kaW5nOwogICAgIGwgPSBsb3dlcjsKICAgICBsX2VuZCA9ICZsb3dlcltsb3dlcl9sZW4gLSAxXTsKLSAgICB3aGlsZSAoKmUpIHsKLSAgICAgICAgaWYgKGwgPT0gbF9lbmQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKFB5X0lTVVBQRVIoKmUpKSB7Ci0gICAgICAgICAgICAqbCsrID0gUHlfVE9MT1dFUigqZSsrKTsKKyAgICBwdW5jdCA9IDA7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgY2hhciBjID0gKmU7CisgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCplID09ICdfJykgewotICAgICAgICAgICAgKmwrKyA9ICctJzsKLSAgICAgICAgICAgIGUrKzsKKworICAgICAgICBpZiAoUHlfSVNBTE5VTShjKSB8fCBjID09ICcuJykgeworICAgICAgICAgICAgaWYgKHB1bmN0ICYmIGwgIT0gbG93ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAobCA9PSBsX2VuZCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKmwrKyA9ICdfJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1bmN0ID0gMDsKKworICAgICAgICAgICAgaWYgKGwgPT0gbF9lbmQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpsKysgPSBQeV9UT0xPV0VSKGMpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgKmwrKyA9ICplKys7CisgICAgICAgICAgICBwdW5jdCA9IDE7CiAgICAgICAgIH0KKworICAgICAgICBlKys7CiAgICAgfQogICAgICpsID0gJ1wwJzsKICAgICByZXR1cm4gMTsKQEAgLTI5NjYsMjggKzMxNTIsNTEgQEAKIHsKICAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTCwgKnVuaWNvZGU7CiAgICAgUHlfYnVmZmVyIGluZm87Ci0gICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLworICAgIGNoYXIgYnVmbG93ZXJbMTFdOyAgIC8qIHN0cmxlbigiaXNvLTg4NTktMVwwIikgPT0gMTEsIGxvbmdlc3Qgc2hvcnRjdXQgKi8KKworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CisgICAgfQogCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KLSAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmICgoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKSB8fAotICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgInV0ZjgiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7Ci0gICAgICAgIGVsc2UgaWYgKChzdHJjbXAobG93ZXIsICJsYXRpbi0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc28tODg1OS0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzbzg4NTktMSIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgZXJyb3JzKTsKLSNlbmRpZgotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUFTQ0lJKHMsIHNpemUsIGVycm9ycyk7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgInV0Zi0xNiIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjE2KHMsIHNpemUsIGVycm9ycywgMCk7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgInV0Zi0zMiIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjMyKHMsIHNpemUsIGVycm9ycywgMCk7CisgICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGJ1Zmxvd2VyLCBzaXplb2YoYnVmbG93ZXIpKSkgeworICAgICAgICBjaGFyICpsb3dlciA9IGJ1Zmxvd2VyOworCisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGxvd2VyWzBdID09ICd1JyAmJiBsb3dlclsxXSA9PSAndCcgJiYgbG93ZXJbMl0gPT0gJ2YnKSB7CisgICAgICAgICAgICBsb3dlciArPSAzOworICAgICAgICAgICAgaWYgKCpsb3dlciA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAvKiBNYXRjaCAidXRmOCIgYW5kICJ1dGZfOCIgKi8KKyAgICAgICAgICAgICAgICBsb3dlcisrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobG93ZXJbMF0gPT0gJzgnICYmIGxvd2VyWzFdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzEnICYmIGxvd2VyWzFdID09ICc2JyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYxNihzLCBzaXplLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzMnICYmIGxvd2VyWzFdID09ICcyJyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYzMihzLCBzaXplLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMAorICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgInVzX2FzY2lpIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlQVNDSUkocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAjZW5kaWYKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDAKKyAgICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgImxhdGluXzEiKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJpc29fODg1OV8xIikgPT0gMAorICAgICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAiaXNvODg1OV8xIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBEZWNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwpAQCAtMzE2NywyNCArMzM3NiwyMiBAQAogc3RhdGljIGludAogbG9jYWxlX2Vycm9yX2hhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKnN1cnJvZ2F0ZWVzY2FwZSkKIHsKLSAgICBpZiAoZXJyb3JzID09IE5VTEwpIHsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKyAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpCisgICAgeworICAgIGNhc2UgX1B5X0VSUk9SX1NUUklDVDoKICAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7CiAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgewotICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlZXNjYXBlIikgPT0gMCkgeworICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKICAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDE7CiAgICAgICAgIHJldHVybiAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm9ubHkgJ3N0cmljdCcgYW5kICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXJzICIKKyAgICAgICAgICAgICAgICAgICAgICJhcmUgc3VwcG9ydGVkLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAib25seSAnc3RyaWN0JyBhbmQgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlcnMgIgotICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCwgbm90ICclcyciLAotICAgICAgICAgICAgICAgICBlcnJvcnMpOwotICAgIHJldHVybiAtMTsKIH0KIAogUHlPYmplY3QgKgpAQCAtMzMwMCwxMCArMzUwNyw4IEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5T2JqZWN0ICp1bmljb2RlKQogewotI2lmZGVmIEhBVkVfTUJDUwotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBOVUxMKTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICNlbHNlCiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgLyogQm9vdHN0cmFwIGNoZWNrOiBpZiB0aGUgZmlsZXN5c3RlbSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIHdlCkBAIC0zMzE4LDEwICszNTIzLDEwIEBACiAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHVuaWNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxvY2FsZSh1bmljb2RlLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0zMzMyLDM0ICszNTM3LDU2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKLSAgICBjaGFyIGxvd2VyWzExXTsgIC8qIEVub3VnaCBmb3IgYW55IGVuY29kaW5nIHNob3J0Y3V0ICovCisgICAgY2hhciBidWZsb3dlclsxMV07ICAgLyogc3RybGVuKCJpc29fODg1OV8xXDAiKSA9PSAxMSwgbG9uZ2VzdCBzaG9ydGN1dCAqLwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgfQorCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KLSAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmICgoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKSB8fAotICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgInV0ZjgiKSA9PSAwKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9ycyA9PSBOVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgYnVmbG93ZXIsIHNpemVvZihidWZsb3dlcikpKSB7CisgICAgICAgIGNoYXIgKmxvd2VyID0gYnVmbG93ZXI7CisKKyAgICAgICAgLyogRmFzdCBwYXRocyAqLworICAgICAgICBpZiAobG93ZXJbMF0gPT0gJ3UnICYmIGxvd2VyWzFdID09ICd0JyAmJiBsb3dlclsyXSA9PSAnZicpIHsKKyAgICAgICAgICAgIGxvd2VyICs9IDM7CisgICAgICAgICAgICBpZiAoKmxvd2VyID09ICdfJykgeworICAgICAgICAgICAgICAgIC8qIE1hdGNoICJ1dGY4IiBhbmQgInV0Zl84IiAqLworICAgICAgICAgICAgICAgIGxvd2VyKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsb3dlclswXSA9PSAnOCcgJiYgbG93ZXJbMV0gPT0gMCkgewogICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzEnICYmIGxvd2VyWzFdID09ICc2JyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodW5pY29kZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICczJyAmJiBsb3dlclsxXSA9PSAnMicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjMyKHVuaWNvZGUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKHN0cmNtcChsb3dlciwgImxhdGluLTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzby04ODU5LTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvODg1OS0xIikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOwotI2lmZGVmIEhBVkVfTUJDUwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBlcnJvcnMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDAKKyAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJ1c19hc2NpaSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICBzdHJjbXAobG93ZXIsICJsYXRpbl8xIikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGxvd2VyLCAiaXNvXzg4NTlfMSIpID09IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChsb3dlciwgImlzbzg4NTlfMSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgLyogRW5jb2RlIHZpYSB0aGUgY29kZWMgcmVnaXN0cnkgKi8KQEAgLTM1ODQsMTAgKzM4MTEsOCBAQAogUHlPYmplY3QqCiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIE5VTEwpOwotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIsIE5VTEwpOworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzLCBOVUxMKTsKICNlbHNlCiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgLyogQm9vdHN0cmFwIGNoZWNrOiBpZiB0aGUgZmlsZXN5c3RlbSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIHdlCkBAIC0zNjAwLDEyICszODI1LDI0IEBACiAgICAgICAgY2Fubm90IG9ubHkgcmVseSBvbiBpdDogY2hlY2sgYWxzbyBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgZm9yCiAgICAgICAgc3ViaW50ZXJwcmV0ZXJzLiAqLwogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nICYmIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCkgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZShzLCBzaXplLAorICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlVbmljb2RlX0RlY29kZShzLCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmICghcmVzICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImZpbGVzeXN0ZW0gcGF0aCBieXRlcyB3ZXJlIG5vdCBjb3JyZWN0bHkgZW5jb2RlZCB3aXRoICclcycuICIgXAorICAgICAgICAgICAgICAgICJQbGVhc2UgcmVwb3J0IHRoaXMgYXQgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI3NzgxIiwKKyAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKKyAgICAgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUocywgc2l6ZSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMzYxNCw2ICszODUxLDcgQEAKIGludAogUHlVbmljb2RlX0ZTQ29udmVydGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOwogICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICB2b2lkICpkYXRhOwpAQCAtMzYyMiwyNCArMzg2MCwyMiBAQAogICAgICAgICAqKFB5T2JqZWN0KiopYWRkciA9IE5VTEw7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpKSB7Ci0gICAgICAgIG91dHB1dCA9IGFyZzsKLSAgICAgICAgUHlfSU5DUkVGKG91dHB1dCk7CisgICAgcGF0aCA9IFB5T1NfRlNQYXRoKGFyZyk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGFyZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGFyZyk7Ci0gICAgICAgIGlmICghYXJnKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoYXJnKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZyk7Ci0gICAgICAgIGlmICghb3V0cHV0KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghUHlCeXRlc19DaGVjayhvdXRwdXQpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGVyIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMiKTsKKyAgICBpZiAoUHlCeXRlc19DaGVjayhwYXRoKSkgeworICAgICAgICBvdXRwdXQgPSBwYXRoOworICAgIH0KKyAgICBlbHNlIHsgIC8vIFB5T1NfRlNQYXRoKCkgZ3VhcmFudGVlcyBpdHMgcmV0dXJuZWQgdmFsdWUgaXMgYnl0ZXMgb3Igc3RyLgorICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOworICAgICAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgICAgIGlmICghb3V0cHV0KSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhvdXRwdXQpKTsKICAgICB9CisKICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShvdXRwdXQpOwogICAgIGRhdGEgPSBQeUJ5dGVzX0FTX1NUUklORyhvdXRwdXQpOwogICAgIGlmICgoc2l6ZV90KXNpemUgIT0gc3RybGVuKGRhdGEpKSB7CkBAIC0zNjU1LDM2ICszODkxLDYwIEBACiBpbnQKIFB5VW5pY29kZV9GU0RlY29kZXIoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKIHsKKyAgICBpbnQgaXNfYnVmZmVyID0gMDsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7CiAgICAgaWYgKGFyZyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRigqKFB5T2JqZWN0KiopYWRkcik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhcmcpID09IC0xKQorCisgICAgaXNfYnVmZmVyID0gUHlPYmplY3RfQ2hlY2tCdWZmZXIoYXJnKTsKKyAgICBpZiAoIWlzX2J1ZmZlcikgeworICAgICAgICBwYXRoID0gUHlPU19GU1BhdGgoYXJnKTsKKyAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG91dHB1dCA9IGFyZzsKLSAgICAgICAgUHlfSU5DUkVGKG91dHB1dCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoYXJnKSkgewotICAgICAgICBhcmcgPSBQeUJ5dGVzX0Zyb21PYmplY3QoYXJnKTsKLSAgICAgICAgaWYgKCFhcmcpCisgICAgZWxzZSB7CisgICAgICAgIHBhdGggPSBhcmc7CisgICAgICAgIFB5X0lOQ1JFRihhcmcpOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShwYXRoKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKSk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmcpOwotICAgICAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgfQorICAgICAgICBvdXRwdXQgPSBwYXRoOworICAgIH0KKyAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKHBhdGgpIHx8IGlzX2J1ZmZlcikgeworICAgICAgICBQeU9iamVjdCAqcGF0aF9ieXRlcyA9IE5VTEw7CisKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHBhdGgpICYmCisgICAgICAgICAgICBQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICJwYXRoIHNob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvciBvcy5QYXRoTGlrZSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICBQeV9UWVBFKGFyZyktPnRwX25hbWUpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG91dHB1dCkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImRlY29kZXIgZmFpbGVkIHRvIHJldHVybiB1bmljb2RlIik7CisgICAgICAgIH0KKyAgICAgICAgcGF0aF9ieXRlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChwYXRoKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICBpZiAoIXBhdGhfYnl0ZXMpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhfYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHBhdGhfYnl0ZXMpKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhfYnl0ZXMpOworICAgICAgICBpZiAoIW91dHB1dCkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAicGF0aCBzaG91bGQgYmUgc3RyaW5nIG9yIGJ5dGVzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJwYXRoIHNob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvciBvcy5QYXRoTGlrZSwgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGFyZyktPnRwX25hbWUpOworICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG91dHB1dCkgPT0gLTEpIHsKQEAgLTM3MTYsNyArMzk3Niw3IEBACiAKICAgICBpZiAoUHlVbmljb2RlX1VURjgodW5pY29kZSkgPT0gTlVMTCkgewogICAgICAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHVuaWNvZGUpKTsKLSAgICAgICAgYnl0ZXMgPSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3RyaWN0Iik7CisgICAgICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgTlVMTCk7CiAgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IFB5T2JqZWN0X01BTExPQyhQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSArIDEpOwpAQCAtMzcyNiw3ICszOTg2LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKLSAgICAgICAgUHlfTUVNQ1BZKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSwKKyAgICAgICAgbWVtY3B5KF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSwKICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwKICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgKyAxKTsKICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKQEAgLTM5NjYsNyArNDIyNiw3IEBACiAgICAgUHlfQ0xFQVIoKmV4Y2VwdGlvbk9iamVjdCk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAvKiBlcnJvciBoYW5kbGluZyBjYWxsYmFjayBoZWxwZXI6CiAgICBidWlsZCBhcmd1bWVudHMsIGNhbGwgdGhlIGNhbGxiYWNrIGFuZCBjaGVjayB0aGUgYXJndW1lbnRzLAogICAgaWYgbm8gZXhjZXB0aW9uIG9jY3VycmVkLCBjb3B5IHRoZSByZXBsYWNlbWVudCB0byB0aGUgb3V0cHV0CkBAIC0zOTgyLDcgKzQyNDIsNyBAQAogICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAogICAgIFB5T2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5T2JqZWN0ICpyZXN0dXBsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOwpAQCAtNDA4MCw3ICs0MzQwLDcgQEAKICAgICBQeV9YREVDUkVGKHJlc3R1cGxlKTsKICAgICByZXR1cm4gLTE7CiB9Ci0jZW5kaWYgICAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAgIC8qIE1TX1dJTkRPV1MgKi8KIAogc3RhdGljIGludAogdW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKApAQCAtNDA5MCw3ICs0MzUwLDcgQEAKICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIgLyogUHlPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcyAqLykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCiAgICAgUHlPYmplY3QgKnJlc3R1cGxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7CkBAIC00Njk2LDggKzQ5NTYsOSBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogCiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBpZiAoY29uc3VtZWQpCkBAIC00NzIyLDYgKzQ5ODMsNyBAQAogICAgIHdoaWxlIChzIDwgZW5kKSB7CiAgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgIGludCBraW5kID0gd3JpdGVyLmtpbmQ7CisKICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkod3JpdGVyLmJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgY2ggPSBhc2NpaWxpYl91dGY4X2RlY29kZSgmcywgZW5kLCB3cml0ZXIuZGF0YSwgJndyaXRlci5wb3MpOwpAQCAtNDc2MCwyNCArNTAyMiw1NiBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAotICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAidXRmLTgiLCBlcnJtc2csCi0gICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJndyaXRlcikpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKQorICAgICAgICAgICAgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisKKyAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKSB7CisgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKKyAgICAgICAgICAgIHMgKz0gKGVuZGlucG9zIC0gc3RhcnRpbnBvcyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIDB4ZmZmZCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIHMgKz0gKGVuZGlucG9zIC0gc3RhcnRpbnBvcyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoJndyaXRlciwgUHlVbmljb2RlXzJCWVRFX0tJTkQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBmb3IgKGk9c3RhcnRpbnBvczsgaTxlbmRpbnBvczsgaSsrKSB7CisgICAgICAgICAgICAgICAgY2ggPSAoUHlfVUNTNCkodW5zaWduZWQgY2hhcikoc3RhcnRzW2ldKTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCArIDB4ZGMwMCk7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcysrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcyArPSAoZW5kaW5wb3MgLSBzdGFydGlucG9zKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCisgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLAorICAgICAgICAgICAgICAgICAgICAidXRmLTgiLCBlcnJtc2csCisgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAorICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KICAgICB9CiAKIEVuZDoKICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IHMgLSBzdGFydHM7CiAKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTUwNjksNyArNTM2Myw3IEBACiAgICAgY29uc3Qgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKLSAgICBQWV9VSU5UMzJfVCAqb3V0OworICAgIHVpbnQzMl90ICpvdXQ7CiAjaWYgUFlfTElUVExFX0VORElBTgogICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPD0gMDsKICNlbHNlCkBAIC01MTAwLDcgKzUzOTQsNyBAQAogCiAgICAgLyogb3V0cHV0IGJ1ZmZlciBpcyA0LWJ5dGVzIGFsaWduZWQgKi8KICAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcodiksIDQpKTsKLSAgICBvdXQgPSAoUFlfVUlOVDMyX1QgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICBvdXQgPSAodWludDMyX3QgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICBpZiAoYnl0ZW9yZGVyID09IDApCiAgICAgICAgICpvdXQrKyA9IDB4RkVGRjsKICAgICBpZiAobGVuID09IDApCkBAIC01MTY2LDcgKzU0NjAsNyBAQAogCiAgICAgICAgIC8qIGZvdXIgYnl0ZXMgYXJlIHJlc2VydmVkIGZvciBlYWNoIHN1cnJvZ2F0ZSAqLwogICAgICAgICBpZiAobW9yZXVuaXRzID4gMSkgewotICAgICAgICAgICAgUHlfc3NpemVfdCBvdXRwb3MgPSBvdXQgLSAoUFlfVUlOVDMyX1QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gb3V0IC0gKHVpbnQzMl90KikgUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG1vcmVieXRlcyA9IDQgKiAobW9yZXVuaXRzIC0gMSk7CiAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRSh2KSA+IFBZX1NTSVpFX1RfTUFYIC0gbW9yZWJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwpAQCAtNTE3NSwxMSArNTQ2OSwxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgUHlCeXRlc19HRVRfU0laRSh2KSArIG1vcmVieXRlcykgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBvdXQgPSAoUFlfVUlOVDMyX1QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KSArIG91dHBvczsKKyAgICAgICAgICAgIG91dCA9ICh1aW50MzJfdCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpICsgb3V0cG9zOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CisgICAgICAgICAgICBtZW1jcHkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKICAgICAgICAgICAgIG91dCArPSBtb3JldW5pdHM7CiAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7CiAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CkBAIC01NDMwLDM2ICs1NzI0LDQ1IEBACiAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpIHsKICAgICAgICAgY29uc3QgUHlfVUNTNCAqaW4gPSAoY29uc3QgUHlfVUNTNCAqKWRhdGE7CiAgICAgICAgIGNvbnN0IFB5X1VDUzQgKmVuZCA9IGluICsgbGVuOwotICAgICAgICB3aGlsZSAoaW4gPCBlbmQpCi0gICAgICAgICAgICBpZiAoKmluKysgPj0gMHgxMDAwMCkKKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICBpZiAoKmluKysgPj0gMHgxMDAwMCkgewogICAgICAgICAgICAgICAgIHBhaXJzKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMiAtIHBhaXJzIC0gKGJ5dGVvcmRlciA9PSAwKSkKKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyAyIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KICAgICBuc2l6ZSA9IGxlbiArIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKTsKICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuc2l6ZSAqIDIpOwotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICAvKiBvdXRwdXQgYnVmZmVyIGlzIDItYnl0ZXMgYWxpZ25lZCAqLwogICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyh2KSwgMikpOwogICAgIG91dCA9ICh1bnNpZ25lZCBzaG9ydCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgIGlmIChieXRlb3JkZXIgPT0gMCkKKyAgICBpZiAoYnl0ZW9yZGVyID09IDApIHsKICAgICAgICAgKm91dCsrID0gMHhGRUZGOwotICAgIGlmIChsZW4gPT0gMCkKKyAgICB9CisgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CiAKICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewogICAgICAgICB1Y3MxbGliX3V0ZjE2X2VuY29kZSgoY29uc3QgUHlfVUNTMSAqKWRhdGEsIGxlbiwgJm91dCwgbmF0aXZlX29yZGVyaW5nKTsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KIAotICAgIGlmIChieXRlb3JkZXIgPCAwKQorICAgIGlmIChieXRlb3JkZXIgPCAwKSB7CiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0xNi1sZSI7Ci0gICAgZWxzZSBpZiAoYnl0ZW9yZGVyID4gMCkKKyAgICB9CisgICAgZWxzZSBpZiAoYnl0ZW9yZGVyID4gMCkgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYtYmUiOwotICAgIGVsc2UKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0xNiI7CisgICAgfQogCiAgICAgcG9zID0gMDsKICAgICB3aGlsZSAocG9zIDwgbGVuKSB7CkBAIC01NTIyLDcgKzU4MjUsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CisgICAgICAgICAgICBtZW1jcHkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKICAgICAgICAgICAgIG91dCArPSBtb3JldW5pdHM7CiAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7CiAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CkBAIC01NTc1LDYxICs1ODc4LDYgQEAKIAogLyogLS0tIFVuaWNvZGUgRXNjYXBlIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUsIGRldGVybWluZXMKLSAgIGlmIGFsbCB0aGUgZXNjYXBlcyBpbiB0aGUgc3RyaW5nIG1ha2UgaXQgc3RpbGwgYSB2YWxpZCBBU0NJSSBzdHJpbmcuCi0gICBSZXR1cm5zIC0xIGlmIGFueSBlc2NhcGVzIHdlcmUgZm91bmQgd2hpY2ggY2F1c2UgdGhlIHN0cmluZyB0bwotICAgcG9wIG91dCBvZiBBU0NJSSByYW5nZS4gIE90aGVyd2lzZSByZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlCi0gICByZXF1aXJlZCBidWZmZXIgdG8gaG9sZCB0aGUgc3RyaW5nLgotICAgKi8KLXN0YXRpYyBQeV9zc2l6ZV90Ci1sZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQotewotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXM7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW5kID0gcCArIHNpemU7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGggPSAwOwotCi0gICAgaWYgKHNpemUgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBmb3IgKDsgcCA8IGVuZDsgKytwKSB7Ci0gICAgICAgIGlmICgqcCA+IDEyNykgewotICAgICAgICAgICAgLyogTm9uLUFTQ0lJICovCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKnAgIT0gJ1xcJykgewotICAgICAgICAgICAgLyogTm9ybWFsIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgKytsZW5ndGg7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBCYWNrc2xhc2gtZXNjYXBlLCBjaGVjayBuZXh0IGNoYXIgKi8KLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIC8qIEVzY2FwZSBzZXF1ZW5jZSByZWFjaGVzIHRpbGwgZW5kIG9mIHN0cmluZyBvcgotICAgICAgICAgICAgICAgbm9uLUFTQ0lJIGZvbGxvdy11cC4gKi8KLSAgICAgICAgICAgIGlmIChwID49IGVuZCB8fCAqcCA+IDEyNykKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpwKSB7Ci0gICAgICAgICAgICBjYXNlICdcbic6Ci0gICAgICAgICAgICAgICAgLyogYmFja3NsYXNoICsgXG4gcmVzdWx0IGluIHplcm8gY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnXFwnOiBjYXNlICdcJyc6IGNhc2UgJ1wiJzoKLSAgICAgICAgICAgIGNhc2UgJ2InOiBjYXNlICdmJzogY2FzZSAndCc6Ci0gICAgICAgICAgICBjYXNlICduJzogY2FzZSAncic6IGNhc2UgJ3YnOiBjYXNlICdhJzoKLSAgICAgICAgICAgICAgICArK2xlbmd0aDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgotICAgICAgICAgICAgY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6Ci0gICAgICAgICAgICBjYXNlICd4JzogY2FzZSAndSc6IGNhc2UgJ1UnOiBjYXNlICdOJzoKLSAgICAgICAgICAgICAgICAvKiB0aGVzZSBkbyBub3QgZ3VhcmFudGVlIEFTQ0lJIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIC8qIGNvdW50IHRoZSBiYWNrc2xhc2ggKyB0aGUgb3RoZXIgY2hhcmFjdGVyICovCi0gICAgICAgICAgICAgICAgbGVuZ3RoICs9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KLQogc3RhdGljIF9QeVVuaWNvZGVfTmFtZV9DQVBJICp1Y25oYXNoX0NBUEkgPSBOVUxMOwogCiBQeU9iamVjdCAqCkBAIC01NjM4LDIxOCArNTg4NiwyMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwotICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKLSAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKLSAgICBjaGFyKiBtZXNzYWdlOwotICAgIFB5X1VDUzQgY2hyID0gMHhmZmZmZmZmZjsgLyogaW4gY2FzZSAnZ2V0Y29kZScgbWVzc2VzIHVwICovCiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBsZW47CiAKLSAgICBsZW4gPSBsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcocywgc2l6ZSk7Ci0gICAgaWYgKGxlbiA9PSAwKQorICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7Ci0KLSAgICAvKiBBZnRlciBsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcoKSB0aGVyZSBhcmUgdHdvIGFsdGVybmF0aXZlcywKLSAgICAgICBlaXRoZXIgdGhlIHN0cmluZyBpcyBwdXJlIEFTQ0lJIHdpdGggbmFtZWQgZXNjYXBlcyBsaWtlIFxuLCBldGMuCi0gICAgICAgYW5kIHdlIGRldGVybWluZWQgaXQncyBleGFjdCBzaXplIChjb21tb24gY2FzZSkKLSAgICAgICBvciBpdCBjb250YWlucyBceCwgXHUsIC4uLiBlc2NhcGUgc2VxdWVuY2VzLiAgdGhlbiB3ZSBjcmVhdGUgYQotICAgICAgIGxlZ2FjeSB3Y2hhciBzdHJpbmcgYW5kIHJlc2l6ZSBpdCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uICovCisgICAgfQorICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCisgICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKKyAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KKyAgICAgICAoYnV0IGlmIHRoZSBlcnJvciBjYWxsYmFjayByZXR1cm5zIGEgbG9uZyByZXBsYWNlbWVudCBzdHJpbmcKKyAgICAgICB3ZSdsbCBoYXZlIHRvIGFsbG9jYXRlIG1vcmUgc3BhY2UpICovCiAgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIpOwotICAgIGlmIChsZW4gPiAwKSB7Ci0gICAgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gbGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKLSAgICAgICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKLSAgICAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuCi0gICAgICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZwotICAgICAgICAgICB3ZSdsbCBoYXZlIHRvIGFsbG9jYXRlIG1vcmUgc3BhY2UpICovCi0gICAgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBzaXplLCAxMjcpIDwgMCkgeworICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCi0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogICAgIGVuZCA9IHMgKyBzaXplOwotCiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBQeV9VQ1M0IHg7Ci0gICAgICAgIGludCBkaWdpdHM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICBpbnQgY291bnQ7CisgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKKyAgICAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKKyAgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZTsKKworI2RlZmluZSBXUklURV9BU0NJSV9DSEFSKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGFzc2VydChjaCA8PSAxMjcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrKywgY2gpOyAgXAorICAgICAgICAgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIFdSSVRFX0NIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgaWYgKGNoIDw9IHdyaXRlci5tYXhjaGFyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrKywgY2gpOyBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgY2gpIDwgMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHdoaWxlKDApCiAKICAgICAgICAgLyogTm9uLWVzY2FwZSBjaGFyYWN0ZXJzIGFyZSBpbnRlcnByZXRlZCBhcyBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgIGlmICgqcyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICB4ID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgaWYgKGMgIT0gJ1xcJykgeworICAgICAgICAgICAgV1JJVEVfQ0hBUihjKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOworICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0cyAtIDE7CiAgICAgICAgIC8qIFwgLSBFc2NhcGVzICovCi0gICAgICAgIHMrKzsKLSAgICAgICAgYyA9ICpzKys7Ci0gICAgICAgIGlmIChzID4gZW5kKQotICAgICAgICAgICAgYyA9ICdcMCc7IC8qIEludmFsaWQgYWZ0ZXIgXCAqLworICAgICAgICBpZiAocyA+PSBlbmQpIHsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAiXFwgYXQgZW5kIG9mIHN0cmluZyI7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikgKnMrKzsKIAorICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsKICAgICAgICAgc3dpdGNoIChjKSB7CiAKICAgICAgICAgICAgIC8qIFx4IGVzY2FwZXMgKi8KLSNkZWZpbmUgV1JJVEVDSEFSKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgKGNoKSkgPCAwKSAgICBcCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9IHdoaWxlKDApCi0KLSAgICAgICAgY2FzZSAnXG4nOiBicmVhazsKLSAgICAgICAgY2FzZSAnXFwnOiBXUklURUNIQVIoJ1xcJyk7IGJyZWFrOwotICAgICAgICBjYXNlICdcJyc6IFdSSVRFQ0hBUignXCcnKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wiJzogV1JJVEVDSEFSKCdcIicpOyBicmVhazsKLSAgICAgICAgY2FzZSAnYic6IFdSSVRFQ0hBUignXGInKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1xuJzogY29udGludWU7CisgICAgICAgIGNhc2UgJ1xcJzogV1JJVEVfQVNDSUlfQ0hBUignXFwnKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ1wnJzogV1JJVEVfQVNDSUlfQ0hBUignXCcnKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ1wiJzogV1JJVEVfQVNDSUlfQ0hBUignXCInKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ2InOiBXUklURV9BU0NJSV9DSEFSKCdcYicpOyBjb250aW51ZTsKICAgICAgICAgLyogRkYgKi8KLSAgICAgICAgY2FzZSAnZic6IFdSSVRFQ0hBUignXDAxNCcpOyBicmVhazsKLSAgICAgICAgY2FzZSAndCc6IFdSSVRFQ0hBUignXHQnKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ24nOiBXUklURUNIQVIoJ1xuJyk7IGJyZWFrOwotICAgICAgICBjYXNlICdyJzogV1JJVEVDSEFSKCdccicpOyBicmVhazsKKyAgICAgICAgY2FzZSAnZic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wwMTQnKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ3QnOiBXUklURV9BU0NJSV9DSEFSKCdcdCcpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnbic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xuJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdyJzogV1JJVEVfQVNDSUlfQ0hBUignXHInKTsgY29udGludWU7CiAgICAgICAgIC8qIFZUICovCi0gICAgICAgIGNhc2UgJ3YnOiBXUklURUNIQVIoJ1wwMTMnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ3YnOiBXUklURV9BU0NJSV9DSEFSKCdcMDEzJyk7IGNvbnRpbnVlOwogICAgICAgICAvKiBCRUwsIG5vdCBjbGFzc2ljIEMgKi8KLSAgICAgICAgY2FzZSAnYSc6IFdSSVRFQ0hBUignXDAwNycpOyBicmVhazsKKyAgICAgICAgY2FzZSAnYSc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wwMDcnKTsgY29udGludWU7CiAKICAgICAgICAgICAgIC8qIFxPT08gKG9jdGFsKSBlc2NhcGVzICovCiAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgogICAgICAgICBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzoKLSAgICAgICAgICAgIHggPSBzWy0xXSAtICcwJzsKKyAgICAgICAgICAgIGNoID0gYyAtICcwJzsKICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmICcwJyA8PSAqcyAmJiAqcyA8PSAnNycpIHsKLSAgICAgICAgICAgICAgICB4ID0gKHg8PDMpICsgKnMrKyAtICcwJzsKLSAgICAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKQotICAgICAgICAgICAgICAgICAgICB4ID0gKHg8PDMpICsgKnMrKyAtICcwJzsKKyAgICAgICAgICAgICAgICBjaCA9IChjaDw8MykgKyAqcysrIC0gJzAnOworICAgICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmICcwJyA8PSAqcyAmJiAqcyA8PSAnNycpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSAoY2g8PDMpICsgKnMrKyAtICcwJzsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBXUklURUNIQVIoeCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoY2gpOworICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8qIGhleCBlc2NhcGVzICovCiAgICAgICAgICAgICAvKiBceFhYICovCiAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgZGlnaXRzID0gMjsKKyAgICAgICAgICAgIGNvdW50ID0gMjsKICAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxceFhYIGVzY2FwZSI7CiAgICAgICAgICAgICBnb3RvIGhleGVzY2FwZTsKIAogICAgICAgICAgICAgLyogXHVYWFhYICovCiAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgZGlnaXRzID0gNDsKKyAgICAgICAgICAgIGNvdW50ID0gNDsKICAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxcdVhYWFggZXNjYXBlIjsKICAgICAgICAgICAgIGdvdG8gaGV4ZXNjYXBlOwogCiAgICAgICAgICAgICAvKiBcVVhYWFhYWFhYICovCiAgICAgICAgIGNhc2UgJ1UnOgotICAgICAgICAgICAgZGlnaXRzID0gODsKKyAgICAgICAgICAgIGNvdW50ID0gODsKICAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxcVVhYWFhYWFhYIGVzY2FwZSI7CiAgICAgICAgIGhleGVzY2FwZToKLSAgICAgICAgICAgIGNociA9IDA7Ci0gICAgICAgICAgICBpZiAoZW5kIC0gcyA8IGRpZ2l0cykgewotICAgICAgICAgICAgICAgIC8qIGNvdW50IG9ubHkgaGV4IGRpZ2l0cyAqLwotICAgICAgICAgICAgICAgIGZvciAoOyBzIDwgZW5kOyArK3MpIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgICAgICAgICBpZiAoIVB5X0lTWERJR0lUKGMpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoOyBkaWdpdHMtLTsgKytzKSB7CisgICAgICAgICAgICBmb3IgKGNoID0gMDsgY291bnQgJiYgcyA8IGVuZDsgKytzLCAtLWNvdW50KSB7CiAgICAgICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgY2hyID0gKGNocjw8NCkgJiB+MHhGOwotICAgICAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykKLSAgICAgICAgICAgICAgICAgICAgY2hyICs9IGMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICAgICAgICAgIGNociArPSAxMCArIGMgLSAnYSc7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjaHIgKz0gMTAgKyBjIC0gJ0EnOworICAgICAgICAgICAgICAgIGNoIDw8PSA0OworICAgICAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgeworICAgICAgICAgICAgICAgICAgICBjaCArPSBjIC0gJzAnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykgeworICAgICAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdhJyAtIDEwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnQScgJiYgYyA8PSAnRicpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggKz0gYyAtICgnQScgLSAxMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2hyID09IDB4ZmZmZmZmZmYgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICAvKiBfZGVjb2RpbmdfZXJyb3Igd2lsbCBoYXZlIGFscmVhZHkgd3JpdHRlbiBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgIHRhcmdldCBidWZmZXIuICovCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN0b3JlOgotICAgICAgICAgICAgLyogd2hlbiB3ZSBnZXQgaGVyZSwgY2hyIGlzIGEgMzItYml0IHVuaWNvZGUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICBtZXNzYWdlID0gImlsbGVnYWwgVW5pY29kZSBjaGFyYWN0ZXIiOwotICAgICAgICAgICAgaWYgKGNociA+IE1BWF9VTklDT0RFKQorICAgICAgICAgICAgaWYgKGNvdW50KSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIFdSSVRFQ0hBUihjaHIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIHdoZW4gd2UgZ2V0IGhlcmUsIGNoIGlzIGEgMzItYml0IHVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgICAgICAgICBpZiAoY2ggPiBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiaWxsZWdhbCBVbmljb2RlIGNoYXJhY3RlciI7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgLyogXE57bmFtZX0gKi8KICAgICAgICAgY2FzZSAnTic6Ci0gICAgICAgICAgICBtZXNzYWdlID0gIm1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSI7CiAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAvKiBsb2FkIHRoZSB1bmljb2RlIGRhdGEgbW9kdWxlICovCiAgICAgICAgICAgICAgICAgdWNuaGFzaF9DQVBJID0gKF9QeVVuaWNvZGVfTmFtZV9DQVBJICopUHlDYXBzdWxlX0ltcG9ydCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZURhdGFfQ0FQU1VMRV9OQU1FLCAxKTsKLSAgICAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gdWNuaGFzaEVycm9yOworICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19Vbmljb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiXFxOIGVzY2FwZXMgbm90IHN1cHBvcnRlZCAoY2FuJ3QgbG9hZCB1bmljb2RlZGF0YSBtb2R1bGUpIgorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWVzc2FnZSA9ICJtYWxmb3JtZWQgXFxOIGNoYXJhY3RlciBlc2NhcGUiOwogICAgICAgICAgICAgaWYgKCpzID09ICd7JykgewotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gcysxOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gKytzOworICAgICAgICAgICAgICAgIHNpemVfdCBuYW1lbGVuOwogICAgICAgICAgICAgICAgIC8qIGxvb2sgZm9yIHRoZSBjbG9zaW5nIGJyYWNlICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKCpzICE9ICd9JyAmJiBzIDwgZW5kKQorICAgICAgICAgICAgICAgIHdoaWxlIChzIDwgZW5kICYmICpzICE9ICd9JykKICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgIGlmIChzID4gc3RhcnQgJiYgcyA8IGVuZCAmJiAqcyA9PSAnfScpIHsKKyAgICAgICAgICAgICAgICBuYW1lbGVuID0gcyAtIHN0YXJ0OworICAgICAgICAgICAgICAgIGlmIChuYW1lbGVuICYmIHMgPCBlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgLyogZm91bmQgYSBuYW1lLiAgbG9vayBpdCB1cCBpbiB0aGUgdW5pY29kZSBkYXRhYmFzZSAqLwotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gInVua25vd24gVW5pY29kZSBjaGFyYWN0ZXIgbmFtZSI7CiAgICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHMgLSBzdGFydCAtIDEgPD0gSU5UX01BWCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgdWNuaGFzaF9DQVBJLT5nZXRjb2RlKE5VTEwsIHN0YXJ0LCAoaW50KShzLXN0YXJ0LTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaHIsIDApKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdG9yZTsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSAweGZmZmZmZmZmOyAvKiBpbiBjYXNlICdnZXRjb2RlJyBtZXNzZXMgdXAgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWVsZW4gPD0gSU5UX01BWCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgdWNuaGFzaF9DQVBJLT5nZXRjb2RlKE5VTEwsIHN0YXJ0LCAoaW50KW5hbWVsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoLCAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFdSSVRFX0NIQVIoY2gpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJ1bmtub3duIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUiOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChzID4gZW5kKSB7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJcXCBhdCBlbmQgb2Ygc3RyaW5nIjsKLSAgICAgICAgICAgICAgICBzLS07Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFdSSVRFQ0hBUignXFwnKTsKLSAgICAgICAgICAgICAgICBXUklURUNIQVIoKHVuc2lnbmVkIGNoYXIpc1stMV0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgJ1xcJWMnIiwgYykgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIFdSSVRFX0FTQ0lJX0NIQVIoJ1xcJyk7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgY29udGludWU7CiAKICAgICAgIGVycm9yOgogICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOworICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IGVuZCAtIHMgKyB3cml0ZXIucG9zOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJndyaXRlcikpCisgICAgICAgICAgICAgICAgJndyaXRlcikpIHsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCB3cml0ZXIubWluX2xlbmd0aCwgMTI3KSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorCisjdW5kZWYgV1JJVEVfQVNDSUlfQ0hBUgorI3VuZGVmIFdSSVRFX0NIQVIKICAgICB9Ci0jdW5kZWYgV1JJVEVDSEFSCiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAotICB1Y25oYXNoRXJyb3I6Ci0gICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICBQeUV4Y19Vbmljb2RlRXJyb3IsCi0gICAgICAgICJcXE4gZXNjYXBlcyBub3Qgc3VwcG9ydGVkIChjYW4ndCBsb2FkIHVuaWNvZGVkYXRhIG1vZHVsZSkiCi0gICAgICAgICk7Ci0gICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIE5VTEw7Ci0KICAgb25FcnJvcjoKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwpAQCAtNTg3MCw5ICs2MTE1LDkgQEAKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwotICAgIGludCBraW5kOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKICAgICB2b2lkICpkYXRhOwotICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDA7CisgICAgUHlfc3NpemVfdCBleHBhbmRzaXplOwogCiAgICAgLyogSW5pdGlhbCBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBsb25nZXN0LXBvc3NpYmxlIGNoYXJhY3RlcgogICAgICAgIGVzY2FwZS4KQEAgLTU4ODYsNjAgKzYxMzEsNzEgQEAKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA0OyBicmVhazsKLSAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiBleHBhbmRzaXplID0gNjsgYnJlYWs7Ci0gICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDEwOyBicmVhazsKICAgICB9CiAKLSAgICBpZiAobGVuID09IDApCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KIAotICAgIGlmIChsZW4gPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKQorICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgLyogNCBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgMTAgYnl0ZXMsIDIgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDYKKyAgICAgICBieXRlcywgYW5kIDEgYnl0ZSBjaGFyYWN0ZXJzIDQuICovCisgICAgZXhwYW5kc2l6ZSA9IGtpbmQgKiAyICsgMjsKKyAgICBpZiAobGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gMiAtIDEpIC8gZXhwYW5kc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXhwYW5kc2l6ZSpsZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDEpOwotICAgIGlmIChyZXByID09IE5VTEwpCisgICAgfQorICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDIgKyBleHBhbmRzaXplICogbGVuICsgMSk7CisgICAgaWYgKHJlcHIgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7Ci0KICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCi0gICAgICAgIC8qIEVzY2FwZSBiYWNrc2xhc2hlcyAqLwotICAgICAgICBpZiAoY2ggPT0gJ1xcJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgLyogVSswMDAwLVUrMDBmZiByYW5nZSAqLworICAgICAgICBpZiAoY2ggPCAweDEwMCkgeworICAgICAgICAgICAgaWYgKGNoID49ICcgJyAmJiBjaCA8IDEyNykgeworICAgICAgICAgICAgICAgIGlmIChjaCAhPSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIENvcHkgcHJpbnRhYmxlIFVTIEFTQ0lJIGFzLWlzICovCisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIEVzY2FwZSBiYWNrc2xhc2hlcyAqLworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAndCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICduJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ3InOworICAgICAgICAgICAgfQogCi0gICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwotICAgICAgICBpZiAoY2ggPj0gMjU2KSB7CisgICAgICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSBhbmQgOC1iaXQgY2hhcmFjdGVycyB0byAnXHhISCcgKi8KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAneCc7CisgICAgICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2U6IE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHVISEhIJyAqLworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApIHsKKyAgICAgICAgICAgIC8qIFUrMDEwMC1VK2ZmZmYgKi8KICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwRl07CkBAIC01OTQ3LDM3ICs2MjAzLDI4IEBACiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKICAgICAgICAgfQorICAgICAgICAvKiBVKzAxMDAwMC1VKzEwZmZmZiByYW5nZTogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAwSEhISEhIJyAqLworICAgICAgICBlbHNlIHsKIAotICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLwotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHQnKSB7CisgICAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgdHdvIGRpZ2l0cyBhcmUgemVybyAqLworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFICYmIE1BWF9VTklDT0RFIDw9IDB4MTBmZmZmKTsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICd0JzsKKyAgICAgICAgICAgICpwKysgPSAnVSc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwMDAwMEZdOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNoID09ICdcbicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICduJzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHInKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAncic7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSB0byAnXHhoaCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAnICcgfHwgY2ggPj0gMHg3RikgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBDb3B5IGV2ZXJ5dGhpbmcgZWxzZSBhcy1pcyAqLwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwogICAgIH0KIAogICAgIGFzc2VydChwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikgPiAwKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikpIDwgMCkKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTU5ODcsOCArNjIzNCwxMCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKLSAgICBpZiAodG1wID09IE5VTEwpCisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcodG1wKTsKICAgICBQeV9ERUNSRUYodG1wKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjAwMiw5NSArNjI1MSwxMDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwotICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKLSAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKLSAgICBjb25zdCBjaGFyICpiczsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKyAgICB9CiAKICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwogICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCiAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuIChCdXQgZGVjb2RpbmcgZXJyb3IKICAgICAgICBoYW5kbGVyIG1pZ2h0IGhhdmUgdG8gcmVzaXplIHRoZSBzdHJpbmcpICovCiAgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIpOwotICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc2l6ZSwgMTI3KSA8IDApIHsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KIAogICAgIGVuZCA9IHMgKyBzaXplOwogICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgUHlfVUNTNCB4OwotICAgICAgICBpbnQgaTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOworICAgICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOworICAgICAgICBjb25zdCBjaGFyICptZXNzYWdlOworCisjZGVmaW5lIFdSSVRFX0NIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgaWYgKGNoIDw9IHdyaXRlci5tYXhjaGFyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrKywgY2gpOyBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgY2gpIDwgMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHdoaWxlKDApCiAKICAgICAgICAgLyogTm9uLWVzY2FwZSBjaGFyYWN0ZXJzIGFyZSBpbnRlcnByZXRlZCBhcyBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgIGlmICgqcyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICB4ID0gKHVuc2lnbmVkIGNoYXIpKnMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoYyAhPSAnXFwnIHx8IHMgPj0gZW5kKSB7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogCi0gICAgICAgIC8qIFx1LWVzY2FwZXMgYXJlIG9ubHkgaW50ZXJwcmV0ZWQgaWZmIHRoZSBudW1iZXIgb2YgbGVhZGluZwotICAgICAgICAgICBiYWNrc2xhc2hlcyBpZiBvZGQgKi8KLSAgICAgICAgYnMgPSBzOwotICAgICAgICBmb3IgKDtzIDwgZW5kOykgewotICAgICAgICAgICAgaWYgKCpzICE9ICdcXCcpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB4ID0gKHVuc2lnbmVkIGNoYXIpKnMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIGlmIChjID09ICd1JykgeworICAgICAgICAgICAgY291bnQgPSA0OworICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx1WFhYWCBlc2NhcGUiOwogICAgICAgICB9Ci0gICAgICAgIGlmICgoKHMgLSBicykgJiAxKSA9PSAwIHx8Ci0gICAgICAgICAgICBzID49IGVuZCB8fAotICAgICAgICAgICAgKCpzICE9ICd1JyAmJiAqcyAhPSAnVScpKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICB3cml0ZXIucG9zLS07Ci0gICAgICAgIGNvdW50ID0gKnM9PSd1JyA/IDQgOiA4OwotICAgICAgICBzKys7Ci0KLSAgICAgICAgLyogXHVYWFhYIHdpdGggNCBoZXggZGlnaXRzLCBcVXh4eHh4eHh4IHdpdGggOCAqLwotICAgICAgICBmb3IgKHggPSAwLCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsrcykgewotICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkgewotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgInRydW5jYXRlZCBcXHVYWFhYIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9ICh4PDw0KSAmIH4weEY7Ci0gICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgICAgICAgICAgeCArPSBjIC0gJzAnOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnYSc7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnQSc7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHggPD0gTUFYX1VOSUNPREUpIHsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBlbHNlIGlmIChjID09ICdVJykgeworICAgICAgICAgICAgY291bnQgPSA4OworICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFxVWFhYWFhYWFggZXNjYXBlIjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAotICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgIlxcVXh4eHh4eHh4IG91dCBvZiByYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrKywgJ1xcJyk7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgIG5leHRCeXRlOgotICAgICAgICA7CisgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzIC0gMjsKKworICAgICAgICAvKiBcdUhISEggd2l0aCA0IGhleCBkaWdpdHMsIFxVMDBISEhISEggd2l0aCA4ICovCisgICAgICAgIGZvciAoY2ggPSAwOyBjb3VudCAmJiBzIDwgZW5kOyArK3MsIC0tY291bnQpIHsKKyAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKKyAgICAgICAgICAgIGNoIDw8PSA0OworICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgY2ggKz0gYyAtICcwJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKSB7CisgICAgICAgICAgICAgICAgY2ggKz0gYyAtICgnYScgLSAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49ICdBJyAmJiBjIDw9ICdGJykgeworICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ0EnIC0gMTApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFjb3VudCkgeworICAgICAgICAgICAgaWYgKGNoIDw9IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZXNzYWdlID0gIlxcVXh4eHh4eHh4IG91dCBvZiByYW5nZSI7CisgICAgICAgIH0KKworICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOworICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IGVuZCAtIHMgKyB3cml0ZXIucG9zOworICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAorICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgJndyaXRlcikpIHsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHdyaXRlci5taW5fbGVuZ3RoLCAxMjcpIDwgMCkgeworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisKKyN1bmRlZiBXUklURV9DSEFSCiAgICAgfQogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CkBAIC02MTAxLDYgKzYzNjIsNyBAQAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CisKIH0KIAogCkBAIC02MTA5LDcgKzYzNzEsNiBAQAogewogICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7Ci0gICAgY2hhciAqcTsKICAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemUsIHBvczsKICAgICBpbnQga2luZDsKICAgICB2b2lkICpkYXRhOwpAQCAtNjExOSw0MyArNjM4MCw0MSBAQAogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CiAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGRhdGEsIGxlbik7CisgICAgfQorCiAgICAgLyogNCBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgMTAgYnl0ZXMsIDIgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDYKICAgICAgICBieXRlcywgYW5kIDEgYnl0ZSBjaGFyYWN0ZXJzIDQuICovCiAgICAgZXhwYW5kc2l6ZSA9IGtpbmQgKiAyICsgMjsKIAotICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQorICAgIH0KICAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogbGVuKTsKLSAgICBpZiAocmVwciA9PSBOVUxMKQorICAgIGlmIChyZXByID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGxlbiA9PSAwKQorICAgIH0KKyAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgfQogCi0gICAgcCA9IHEgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKKyAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CiAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBsZW47IHBvcysrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwotICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOworCisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2U6IENvcHkgOC1iaXQgY2hhcmFjdGVycyBhcy1pcyAqLworICAgICAgICBpZiAoY2ggPCAweDEwMCkgeworICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICAgICAgfQotICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPj0gMjU2KSB7CisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2U6IE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHVISEhIJyAqLworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CkBAIC02MTYzLDE0ICs2NDIyLDI2IEBACiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9Ci0gICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CisgICAgICAgIC8qIFUrMDEwMDAwLVUrMTBmZmZmIHJhbmdlOiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDBISEhISEgnICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFICYmIE1BWF9VTklDT0RFIDw9IDB4MTBmZmZmKTsKKyAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgKnArKyA9ICdVJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGFzc2VydChwID4gcSk7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIHEpIDwgMCkKKyAgICBhc3NlcnQocCA+IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTYzNDgsNyArNjYxOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgUHlPYmplY3QgKnJlc3VuaWNvZGU7CkBAIC02NDAyLDI1ICs2NjczLDIyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9lbmNvZGVfdWNzMShQeU9iamVjdCAqdW5pY29kZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGltaXQpCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VDUzQgbGltaXQpCiB7CiAgICAgLyogaW5wdXQgc3RhdGUgKi8KICAgICBQeV9zc2l6ZV90IHBvcz0wLCBzaXplOwogICAgIGludCBraW5kOwogICAgIHZvaWQgKmRhdGE7Ci0gICAgLyogb3V0cHV0IG9iamVjdCAqLwotICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgLyogcG9pbnRlciBpbnRvIHRoZSBvdXRwdXQgKi8KICAgICBjaGFyICpzdHI7Ci0gICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KLSAgICBQeV9zc2l6ZV90IHJlc3NpemU7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAobGltaXQgPT0gMjU2KSA/ICJsYXRpbi0xIiA6ICJhc2NpaSI7CiAgICAgY29uc3QgY2hhciAqcmVhc29uID0gKGxpbWl0ID09IDI1NikgPyAib3JkaW5hbCBub3QgaW4gcmFuZ2UoMjU2KSIgOiAib3JkaW5hbCBub3QgaW4gcmFuZ2UoMTI4KSI7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICAvKiB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIHVzZWQgZm9yIGNhY2hpbmcgc3RyaW5nIGNvbXBhcmlzb25zCi0gICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKKyAgICBQeU9iamVjdCAqcmVwID0gTlVMTDsKKyAgICAvKiBvdXRwdXQgb2JqZWN0ICovCisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NDMxLDE4NiArNjY5OSwxNTcgQEAKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCiAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7Ci0gICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICBpZiAocmVzID09IE5VTEwpCisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICByZXNzaXplID0gc2l6ZTsKIAogICAgIHdoaWxlIChwb3MgPCBzaXplKSB7Ci0gICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwogCiAgICAgICAgIC8qIGNhbiB3ZSBlbmNvZGUgdGhpcz8gKi8KLSAgICAgICAgaWYgKGM8bGltaXQpIHsKKyAgICAgICAgaWYgKGNoIDwgbGltaXQpIHsKICAgICAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICAgICAqc3RyKysgPSAoY2hhciljOworICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpY2g7CiAgICAgICAgICAgICArK3BvczsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGU7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIG5ld3BvcywgcmVzcG9zLCBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3MsIGk7CiAgICAgICAgICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bmVuY29kYWJsZSBjaGFycyAqLwogICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsc3RhcnQgPSBwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQgPSBwb3M7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQgPSBjb2xsc3RhcnQgKyAxOwogICAgICAgICAgICAgLyogZmluZCBhbGwgdW5lY29kYWJsZSBjaGFyYWN0ZXJzICovCisKICAgICAgICAgICAgIHdoaWxlICgoY29sbGVuZCA8IHNpemUpICYmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBjb2xsZW5kKSA+PSBsaW1pdCkpCiAgICAgICAgICAgICAgICAgKytjb2xsZW5kOworCisgICAgICAgICAgICAvKiBPbmx5IG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIGlmIGl0J3Mgbm90IHRoZSBsYXN0IHdyaXRlICovCisgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gKGNvbGxlbmQgPCBzaXplKTsKKwogICAgICAgICAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAgKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KLSAgICAgICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMjsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgImlnbm9yZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAzOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gNDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewotICAgICAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KKyAgICAgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKQorICAgICAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpIHsKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NUUklDVDoKICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNvbGxzdGFydCsrIDwgY29sbGVuZCkKLSAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJz8nOyAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICAgICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CisgICAgICAgICAgICAgICAgbWVtc2V0KHN0ciwgJz8nLCBjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBzdHIgKz0gKGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCBpZ25vcmUgZXJyb3IgaGFuZGxlciAqLworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgogICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3M7Ci0gICAgICAgICAgICAgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwotICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGluY3I7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaCA8IDEwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrMSsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzIrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrMysxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNCsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzUrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis3KzE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSBpbmNyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSAoc2l6ZSAtIGNvbGxlbmQpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSBzaXplIC0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gcmVzc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzc2l6ZSA8PSBQWV9TU0laRV9UX01BWC8yICYmIHJlcXVpcmVkc2l6ZSA8IDIqcmVzc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqcmVzc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByZXF1aXJlZHNpemUpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwotICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLwotICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gc3ByaW50ZihzdHIsICImIyVkOyIsIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMIHx8IChQeVVuaWNvZGVfQ2hlY2socmVwdW5pY29kZSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpKQorCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9CQUNLU0xBU0hSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAoY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgc3RyID0gYmFja3NsYXNocmVwbGFjZSgmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQpOworICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcHVuaWNvZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGx5IGNvcHkgYnl0ZXMgcmVzdWx0IHRvIG91dHB1dC4gKi8KLSAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfU2l6ZShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcHNpemUgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBNYWtlIHJvb20gZm9yIGFsbCBhZGRpdGlvbmFsIGJ5dGVzLiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNzaXplID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplIC0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByZXNzaXplK3JlcHNpemUtMSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gcmVwc2l6ZS0xOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAoY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgc3RyID0geG1sY2hhcnJlZnJlcGxhY2UoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCk7CisgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAweGRjODAgfHwgMHhkY2ZmIDwgY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vdCBhIFVURi04YiBzdXJyb2dhdGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1lbWNweShzdHIsIFB5Qnl0ZXNfQXNTdHJpbmcocmVwdW5pY29kZSksIHJlcHNpemUpOwotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gcmVwc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKShjaCAtIDB4ZGMwMCk7CisgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaSA+PSBjb2xsZW5kKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCi0gICAgICAgICAgICAgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZywgc28KLSAgICAgICAgICAgICAgICAgICB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlIGZvciBlbmNvZGFibGUgY2hhcmFjdGVycykgKi8KLSAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3M7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gcmVwc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSAoc2l6ZSAtIGNvbGxlbmQpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSBzaXplIC0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gcmVzc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzc2l6ZSA8PSBQWV9TU0laRV9UX01BWC8yICYmIHJlcXVpcmVkc2l6ZSA8IDIqcmVzc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqcmVzc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByZXF1aXJlZHNpemUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgY29sbHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgICAgIGFzc2VydChjb2xsc3RhcnQgIT0gY29sbGVuZCk7CisgICAgICAgICAgICAgICAgLyogZmFsbGJhY2sgdG8gZ2VuZXJhbCBlcnJvciBoYW5kbGluZyAqLworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKKyAgICAgICAgICAgICAgICBpZiAocmVwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAxOworCisgICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgICAgICAgICAvKiBEaXJlY3RseSBjb3B5IGJ5dGVzIHJlc3VsdCB0byBvdXRwdXQuICovCisgICAgICAgICAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXApKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcykgKyByZXNwb3M7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3NpemUgPSByZXF1aXJlZHNpemU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZSByZXBsYWNlbWVudAotICAgICAgICAgICAgICAgICAgIGFuZCBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyByZXBzaXplLS0+MDsgKytpLCArK3N0cikgewotICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXB1bmljb2RlLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj0gbGltaXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2socmVwKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aDogYWxsIGNoYXJhY3RlcnMgYXJlIHNtYWxsZXIgdGhhbiBsaW1pdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGxpbWl0ID49IDEyOCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWM7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBzdHIsIHJlcHNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgdGhlcmUgaXMgYW55dGhpbmcgdW5lbmNvZGFibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudCBhbmQgY29weSBpdCB0byB0aGUgb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyByZXBzaXplLS0+MDsgKytpLCArK3N0cikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXAsIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA+PSBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWNoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHBvcyA9IG5ld3BvczsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVwKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgb3ZlcmFsbG9jYXRpb24gd2FzIGRpc2FibGVkLCBlbnN1cmUgdGhhdCBpdCB3YXMgdGhlIGxhc3QKKyAgICAgICAgICAgICAgIHdyaXRlLiBPdGhlcndpc2UsIHdlIG1pc3NlZCBhbiBvcHRpbWl6YXRpb24gKi8KKyAgICAgICAgICAgIGFzc2VydCh3cml0ZXIub3ZlcmFsbG9jYXRlIHx8IHBvcyA9PSBzaXplKTsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBSZXNpemUgaWYgd2UgYWxsb2NhdGVkIHRvIG11Y2ggKi8KLSAgICBzaXplID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICBpZiAoc2l6ZSA8IHJlc3NpemUpIHsgLyogSWYgdGhpcyBmYWxscyByZXMgd2lsbCBiZSBOVUxMICovCi0gICAgICAgIGFzc2VydChzaXplID49IDApOwotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHNpemUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB9CiAKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiByZXM7Ci0KLSAgb3ZlcmZsb3c6Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJlbmNvZGVkIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nIik7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzdHIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihyZXMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKHJlcCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02NjcwLDggKzY5MDksOSBAQAogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKIAogICAgIGlmIChzaXplID09IDApCiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwpAQCAtNjcwMCwxMiArNjk0MCw0MiBAQAogICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci5wb3MsIGMpOwogICAgICAgICAgICAgd3JpdGVyLnBvcysrOwogICAgICAgICAgICAgKytzOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisKKyAgICAgICAgLyogYnl0ZSBvdXRzaXplIHJhbmdlIDB4MDAuLjB4N2Y6IGNhbGwgdGhlIGVycm9yIGhhbmRsZXIgKi8KKworICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikKKyAgICAgICAgeworICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgICAgICAvKiBGYXN0LXBhdGg6IHRoZSBlcnJvciBoYW5kbGVyIG9ubHkgd3JpdGVzIG9uZSBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICBidXQgd2UgbWF5IHN3aXRjaCB0byBVQ1MyIGF0IHRoZSBmaXJzdCB3cml0ZSAqLworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoJndyaXRlciwgUHlVbmljb2RlXzJCWVRFX0tJTkQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBraW5kID0gd3JpdGVyLmtpbmQ7CisgICAgICAgICAgICBkYXRhID0gd3JpdGVyLmRhdGE7CisKKyAgICAgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9SRVBMQUNFKQorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCAweGZmZmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCBjICsgMHhkYzAwKTsKKyAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKKyAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKKyAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwKICAgICAgICAgICAgICAgICAgICAgImFzY2lpIiwgIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCiAgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQpAQCAtNjcxNCwxMyArNjk4NCwxMyBAQAogICAgICAgICAgICAgZGF0YSA9IHdyaXRlci5kYXRhOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02NzYzLDcgKzcwMzMsNyBAQAogICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgTlVMTCk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC02Nzc1LDcgKzcwNDUsNyBAQAogIyAgZGVmaW5lIFdDX0VSUl9JTlZBTElEX0NIQVJTIDB4MDA4MAogI2VuZGlmCiAKLXN0YXRpYyBjaGFyKgorc3RhdGljIGNvbnN0IGNoYXIqCiBjb2RlX3BhZ2VfbmFtZShVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvYmopCiB7CiAgICAgKm9iaiA9IE5VTEw7CkBAIC02ODgzLDcgKzcxNTMsNyBAQAogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICplbmNvZGluZ19vYmogPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogICAgIERXT1JEIGVycjsKICAgICBpbnQgcmV0ID0gLTE7CiAKQEAgLTcxMTksNyArNzM4OSw2IEBACiAgICAgQk9PTCB1c2VkRGVmYXVsdENoYXIgPSBGQUxTRTsKICAgICBCT09MICpwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKICAgICBpbnQgb3V0c2l6ZTsKLSAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICB3Y2hhcl90ICpwOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBjb25zdCBEV09SRCBmbGFncyA9IGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlLCBOVUxMKTsKQEAgLTcyMjgsNyArNzQ5Nyw3IEBACiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7Ci0gICAgY2hhciAqZW5jb2Rpbmc7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAgICAgUHlfc3NpemVfdCBuZXdwb3MsIG5ld291dHNpemU7CiAgICAgUHlPYmplY3QgKnJlcDsKICAgICBpbnQgcmV0ID0gLTE7CkBAIC03NDgzLDcgKzc3NTIsNyBAQAogCiAjdW5kZWYgTkVFRF9SRVRSWQogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtODA4Niw3ICs4MzU1LDcgQEAKIGNoYXJtYXBfZW5jb2RpbmdfZXJyb3IoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKmlucG9zLCBQeU9iamVjdCAqbWFwcGluZywKICAgICBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICBpbnQgKmtub3duX2Vycm9ySGFuZGxlciwgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICBfUHlfZXJyb3JfaGFuZGxlciAqZXJyb3JfaGFuZGxlciwgUHlPYmplY3QgKiplcnJvcl9oYW5kbGVyX29iaiwgY29uc3QgY2hhciAqZXJyb3JzLAogICAgIFB5T2JqZWN0ICoqcmVzLCBQeV9zc2l6ZV90ICpyZXNwb3MpCiB7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOyAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KQEAgLTgxMzMsMjMgKzg0MDIsMTUgQEAKICAgICB9CiAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAKICAgICAgKiAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgIGlmICgqa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDI7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAwOwotICAgIH0KLSAgICBzd2l0Y2ggKCprbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICBjYXNlIDE6IC8qIHN0cmljdCAqLworICAgIGlmICgqZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgKmVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgc3dpdGNoICgqZXJyb3JfaGFuZGxlcikgeworICAgIGNhc2UgX1B5X0VSUk9SX1NUUklDVDoKICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CiAgICAgICAgIHJldHVybiAtMTsKLSAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KKworICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvczxjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKICAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dCgnPycsIG1hcHBpbmcsIHJlcywgcmVzcG9zKTsKICAgICAgICAgICAgIGlmICh4PT1lbmNfRVhDRVBUSU9OKSB7CkBAIC04MTYxLDEwICs4NDIyLDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KKyAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CiAgICAgICAgICppbnBvcyA9IGNvbGxlbmRwb3M7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KKworICAgIGNhc2UgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOgogICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvcyA8IGNvbGxlbmRwb3M7ICsrY29sbHBvcykgewogICAgICAgICAgICAgY2hhciBidWZmZXJbMisyOSsxKzFdOwpAQCAtODE4Miw4ICs4NDQ0LDkgQEAKICAgICAgICAgfQogICAgICAgICAqaW5wb3MgPSBjb2xsZW5kcG9zOwogICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsIGVycm9ySGFuZGxlciwKKyAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgZXJyb3JfaGFuZGxlcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCBleGNlcHRpb25PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsICZuZXdwb3MpOwogICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQpAQCAtODI0NiwxMiArODUwOSw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCiAgICAgUHlfc3NpemVfdCByZXNwb3MgPSAwOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLAotICAgICAqIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKICAgICB2b2lkICpkYXRhOwogICAgIGludCBraW5kOwogCkBAIC04MjgyLDcgKzg1NDIsNyBAQAogICAgICAgICBpZiAoeD09ZW5jX0ZBSUxFRCkgeyAvKiB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgKi8KICAgICAgICAgICAgIGlmIChjaGFybWFwX2VuY29kaW5nX2Vycm9yKHVuaWNvZGUsICZpbnBvcywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma25vd25fZXJyb3JIYW5kbGVyLCAmZXJyb3JIYW5kbGVyLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3JfaGFuZGxlciwgJmVycm9yX2hhbmRsZXJfb2JqLCBlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzLCAmcmVzcG9zKSkgewogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KQEAgLTgyOTgsMTMgKzg1NTgsMTMgQEAKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYocmVzKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC04MzcxLDcgKzg2MzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjt0cmFuc2xhdGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPIW47dHJhbnNsYXRpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5X3NzaXplX3QgaV9uZXdwb3M7CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwpAQCAtODYyOCw3ICs4ODg4LDcgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1QeU9iamVjdCAqCitzdGF0aWMgUHlPYmplY3QgKgogX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKFB5T2JqZWN0ICppbnB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCkBAIC04NjU3LDEwICs4OTE3LDggQEAKICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOwogICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CiAKLSAgICBpZiAoc2l6ZSA9PSAwKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihpbnB1dCk7Ci0gICAgICAgIHJldHVybiBpbnB1dDsKLSAgICB9CisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT2JqZWN0KGlucHV0KTsKIAogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgMToxIHRyYW5zbGF0aW9uIHdpdGhvdXQKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCkBAIC04NzcxLDE0ICs5MDI5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyk7CiB9CiAKIHN0YXRpYyBQeV9VQ1M0CkBAIC04OTYwLDkgKzkyMTMsMTAgQEAKICAgICB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1hbnlfZmluZF9zbGljZShpbnQgZGlyZWN0aW9uLCBQeU9iamVjdCogczEsIFB5T2JqZWN0KiBzMiwKK2FueV9maW5kX3NsaWNlKFB5T2JqZWN0KiBzMSwgUHlPYmplY3QqIHMyLAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CkBAIC05MTMxLDU0ICs5Mzg1LDM1IEBACiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgUHlPYmplY3QqIHN0cl9vYmo7Ci0gICAgUHlPYmplY3QqIHN1Yl9vYmo7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmICghc3RyX29iaikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzdWJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKLSAgICBpZiAoIXN1Yl9vYmopIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogCi0gICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKLSAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yl9vYmopOwotICAgIGlmIChraW5kMSA8IGtpbmQyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cik7CisgICAgaWYgKGtpbmQxIDwga2luZDIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KIAotICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKLSAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViX29iaik7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cik7CiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yl9vYmopOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHIpOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViX29iaiwga2luZDEpOworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyLCBraW5kMSk7CiAgICAgICAgIGlmICghYnVmMikKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKLSAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3ViX29iaikpCisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3Vic3RyKSkKICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2NvdW50KAogICAgICAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCiAgICAgICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKQEAgLTkyMDUsMTYgKzk0NDAsMTEgQEAKICAgICAgICAgYXNzZXJ0KDApOyByZXN1bHQgPSAwOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0KICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAgICAgcmV0dXJuIC0xOwpAQCAtOTIyMiwzNSArOTQ1MiwxNSBAQAogCiBQeV9zc2l6ZV90CiBQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLAotICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YiwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCiAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoIXN0cikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDApCiAgICAgICAgIHJldHVybiAtMjsKLSAgICBzdWIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWIpOwotICAgIGlmICghc3ViKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gLTI7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAtMjsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShkaXJlY3Rpb24sCi0gICAgICAgIHN0ciwgc3ViLCBzdGFydCwgZW5kCi0gICAgICAgICk7Ci0KLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICBQeV9ERUNSRUYoc3ViKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFueV9maW5kX3NsaWNlKHN0ciwgc3Vic3RyLCBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogfQogCiBQeV9zc2l6ZV90CkBAIC05MzUzLDIyICs5NTYzLDEwIEBACiAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAogICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgc3Vic3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKLSAgICBpZiAoc3Vic3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBzdWJzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgUHlfREVDUkVGKHN1YnN0cik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gdGFpbG1hdGNoKHN0ciwgc3Vic3RyLCBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogfQogCiAvKiBBcHBseSBmaXhmY3QgZmlsdGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCBzZWxmIGFuZCByZXR1cm4gYQpAQCAtOTY3MCwyMCArOTg2OCwxMCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0pvaW4oUHlPYmplY3QgKnNlcGFyYXRvciwgUHlPYmplY3QgKnNlcSkKIHsKLSAgICBQeU9iamVjdCAqc2VwID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHNlcGxlbjsKLSAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsgLyogdGhlIHJlc3VsdCAqLwotICAgIFB5T2JqZWN0ICpmc2VxOyAgICAgICAgICAvKiBQeVNlcXVlbmNlX0Zhc3Qoc2VxKSAqLwotICAgIFB5X3NzaXplX3Qgc2VxbGVuOyAgICAgICAvKiBsZW4oZnNlcSkgLS0gbnVtYmVyIG9mIGl0ZW1zIGluIHNlcXVlbmNlICovCisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZnNlcTsKKyAgICBQeV9zc2l6ZV90IHNlcWxlbjsKICAgICBQeU9iamVjdCAqKml0ZW1zOwotICAgIFB5T2JqZWN0ICppdGVtOwotICAgIFB5X3NzaXplX3Qgc3osIGksIHJlc19vZmZzZXQ7Ci0gICAgUHlfVUNTNCBtYXhjaGFyOwotICAgIFB5X1VDUzQgaXRlbV9tYXhjaGFyOwotICAgIGludCB1c2VfbWVtY3B5OwotICAgIHVuc2lnbmVkIGNoYXIgKnJlc19kYXRhID0gTlVMTCwgKnNlcF9kYXRhID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbGFzdF9vYmo7Ci0gICAgdW5zaWduZWQgaW50IGtpbmQgPSAwOwogCiAgICAgZnNlcSA9IFB5U2VxdWVuY2VfRmFzdChzZXEsICJjYW4gb25seSBqb2luIGFuIGl0ZXJhYmxlIik7CiAgICAgaWYgKGZzZXEgPT0gTlVMTCkgewpAQCAtOTY5NCwyMSArOTg4MiwzOSBAQAogICAgICAqIHNvIHdlIGFyZSBzdXJlIHRoYXQgZnNlcSB3b24ndCBiZSBtdXRhdGVkLgogICAgICAqLwogCisgICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CiAgICAgc2VxbGVuID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGZzZXEpOworICAgIHJlcyA9IF9QeVVuaWNvZGVfSm9pbkFycmF5KHNlcGFyYXRvciwgaXRlbXMsIHNlcWxlbik7CisgICAgUHlfREVDUkVGKGZzZXEpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfSm9pbkFycmF5KFB5T2JqZWN0ICpzZXBhcmF0b3IsIFB5T2JqZWN0ICoqaXRlbXMsIFB5X3NzaXplX3Qgc2VxbGVuKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzZXBsZW47CisgICAgUHlPYmplY3QgKml0ZW07CisgICAgUHlfc3NpemVfdCBzeiwgaSwgcmVzX29mZnNldDsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfVUNTNCBpdGVtX21heGNoYXI7CisgICAgaW50IHVzZV9tZW1jcHk7CisgICAgdW5zaWduZWQgY2hhciAqcmVzX2RhdGEgPSBOVUxMLCAqc2VwX2RhdGEgPSBOVUxMOworICAgIFB5T2JqZWN0ICpsYXN0X29iajsKKyAgICB1bnNpZ25lZCBpbnQga2luZCA9IDA7CisKICAgICAvKiBJZiBlbXB0eSBzZXF1ZW5jZSwgcmV0dXJuIHUiIi4gKi8KICAgICBpZiAoc2VxbGVuID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKGZzZXEpOwogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKICAgICB9CiAKICAgICAvKiBJZiBzaW5nbGV0b24gc2VxdWVuY2Ugd2l0aCBhbiBleGFjdCBVbmljb2RlLCByZXR1cm4gdGhhdC4gKi8KICAgICBsYXN0X29iaiA9IE5VTEw7Ci0gICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CiAgICAgaWYgKHNlcWxlbiA9PSAxKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChpdGVtc1swXSkpIHsKICAgICAgICAgICAgIHJlcyA9IGl0ZW1zWzBdOwogICAgICAgICAgICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICB9CiAgICAgICAgIHNlcGxlbiA9IDA7CkBAIC05ODA2LDcgKzEwMDEyLDcgQEAKIAogICAgICAgICAgICAgLyogQ29weSBpdGVtLCBhbmQgbWF5YmUgdGhlIHNlcGFyYXRvci4gKi8KICAgICAgICAgICAgIGlmIChpICYmIHNlcGxlbiAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAorICAgICAgICAgICAgICAgIG1lbWNweShyZXNfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBzZXBsZW4pOwogICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBzZXBsZW47CkBAIC05ODE0LDcgKzEwMDIwLDcgQEAKIAogICAgICAgICAgICAgaXRlbWxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOwogICAgICAgICAgICAgaWYgKGl0ZW1sZW4gIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKGl0ZW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kICogaXRlbWxlbik7CiAgICAgICAgICAgICAgICAgcmVzX2RhdGEgKz0ga2luZCAqIGl0ZW1sZW47CkBAIC05ODQzLDEzICsxMDA0OSwxMSBAQAogICAgICAgICBhc3NlcnQocmVzX29mZnNldCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXMpKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgUHlfWERFQ1JFRihzZXApOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICBQeV9YREVDUkVGKHNlcCk7CiAgICAgUHlfWERFQ1JFRihyZXMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtOTk3NCwxMyArMTAxNzgsOCBAQAogewogICAgIFB5T2JqZWN0ICpsaXN0OwogCi0gICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyaW5nKTsKLSAgICBpZiAoc3RyaW5nID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cmluZykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyaW5nKSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CkBAIC0xMDAwNyw3ICsxMDIwNiw2IEBACiAgICAgICAgIGFzc2VydCgwKTsKICAgICAgICAgbGlzdCA9IDA7CiAgICAgfQotICAgIFB5X0RFQ1JFRihzdHJpbmcpOwogICAgIHJldHVybiBsaXN0OwogfQogCkBAIC0xMDU2OCwyOCArMTA3NjYsMjcgQEAKIH0KIAogCi0vKiBBcmd1bWVudCBjb252ZXJ0ZXIuICBDb2VyY2VzIHRvIGEgc2luZ2xlIHVuaWNvZGUgY2hhcmFjdGVyICovCisvKiBBcmd1bWVudCBjb252ZXJ0ZXIuIEFjY2VwdHMgYSBzaW5nbGUgVW5pY29kZSBjaGFyYWN0ZXIuICovCiAKIHN0YXRpYyBpbnQKIGNvbnZlcnRfdWMoUHlPYmplY3QgKm9iaiwgdm9pZCAqYWRkcikKIHsKICAgICBQeV9VQ1M0ICpmaWxsY2hhcmxvYyA9IChQeV9VQ1M0ICopYWRkcjsKLSAgICBQeU9iamVjdCAqdW5pb2JqOwogCi0gICAgdW5pb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKLSAgICBpZiAodW5pb2JqID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBVbmljb2RlIik7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBtdXN0IGJlIGEgdW5pY29kZSBjaGFyYWN0ZXIsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJS4xMDBzIiwgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmlvYmopICE9IDEpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSAhPSAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIG11c3QgYmUgZXhhY3RseSBvbmUgY2hhcmFjdGVyIGxvbmciKTsKLSAgICAgICAgUHlfREVDUkVGKHVuaW9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICAqZmlsbGNoYXJsb2MgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaW9iaiwgMCk7Ci0gICAgUHlfREVDUkVGKHVuaW9iaik7CisgICAgKmZpbGxjaGFybG9jID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOwogICAgIHJldHVybiAxOwogfQogCkBAIC0xMDczOSw3ICsxMDkzNiw3IEBACiAjdW5kZWYgQ09NUEFSRQogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiB1bmljb2RlX2NvbXBhcmVfZXEoUHlPYmplY3QgKnN0cjEsIFB5T2JqZWN0ICpzdHIyKQogewogICAgIGludCBraW5kOwpAQCAtMTA5MDUsNTkgKzExMTAyLDQ5IEBACiB9CiAKIGludAotUHlVbmljb2RlX0NvbnRhaW5zKFB5T2JqZWN0ICpjb250YWluZXIsIFB5T2JqZWN0ICplbGVtZW50KQorX1B5VW5pY29kZV9FUShQeU9iamVjdCAqYWEsIFB5T2JqZWN0ICpiYikKIHsKLSAgICBQeU9iamVjdCAqc3RyLCAqc3ViOworICAgIHJldHVybiB1bmljb2RlX2VxKGFhLCBiYik7Cit9CisKK2ludAorUHlVbmljb2RlX0NvbnRhaW5zKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIpCit7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAgICAgaW50IHJlc3VsdDsKIAotICAgIC8qIENvZXJjZSB0aGUgdHdvIGFyZ3VtZW50cyAqLwotICAgIHN1YiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGVsZW1lbnQpOwotICAgIGlmICghc3ViKSB7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vic3RyKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIidpbiA8c3RyaW5nPicgcmVxdWlyZXMgc3RyaW5nIGFzIGxlZnQgb3BlcmFuZCwgbm90ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgIidpbiA8c3RyaW5nPicgcmVxdWlyZXMgc3RyaW5nIGFzIGxlZnQgb3BlcmFuZCwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0ciktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3QoY29udGFpbmVyKTsKLSAgICBpZiAoIXN0cikgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cikgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwKQorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cik7Ci0gICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWIpOwotICAgIGlmIChraW5kMSA8IGtpbmQyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cik7CisgICAgaWYgKGtpbmQxIDwga2luZDIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KICAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKLSAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViKTsKLSAgICBpZiAobGVuMSA8IGxlbjIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHIpOworICAgIGlmIChsZW4xIDwgbGVuMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHIpOwogICAgIGlmIChsZW4yID09IDEpIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQyLCBidWYyLCAwKTsKICAgICAgICAgcmVzdWx0ID0gZmluZGNoYXIoKGNvbnN0IGNoYXIgKilidWYxLCBraW5kMSwgbGVuMSwgY2gsIDEpICE9IC0xOwotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kMSk7Ci0gICAgICAgIGlmICghYnVmMikgewotICAgICAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0ciwga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CkBAIC0xMDk3NSw5ICsxMTE2Miw2IEBACiAgICAgICAgIGFzc2VydCgwKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICBQeV9ERUNSRUYoc3ViKTsKLQogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIApAQCAtMTA5ODksNTYgKzExMTczLDQwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfQ29uY2F0KFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgUHlPYmplY3QgKnUgPSBOVUxMLCAqdiA9IE5VTEwsICp3OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyMjsKLSAgICBQeV9zc2l6ZV90IHVfbGVuLCB2X2xlbiwgbmV3X2xlbjsKKyAgICBQeV9zc2l6ZV90IGxlZnRfbGVuLCByaWdodF9sZW4sIG5ld19sZW47CiAKLSAgICAvKiBDb2VyY2UgdGhlIHR3byBhcmd1bWVudHMgKi8KLSAgICB1ID0gUHlVbmljb2RlX0Zyb21PYmplY3QobGVmdCk7Ci0gICAgaWYgKHUgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIHYgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChyaWdodCk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOworICAgIGlmIChlbnN1cmVfdW5pY29kZShsZWZ0KSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUocmlnaHQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBTaG9ydGN1dHMgKi8KLSAgICBpZiAodiA9PSB1bmljb2RlX2VtcHR5KSB7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgcmV0dXJuIHU7Ci0gICAgfQotICAgIGlmICh1ID09IHVuaWNvZGVfZW1wdHkpIHsKLSAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICByZXR1cm4gdjsKLSAgICB9CisgICAgaWYgKGxlZnQgPT0gdW5pY29kZV9lbXB0eSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJpZ2h0KTsKKyAgICBpZiAocmlnaHQgPT0gdW5pY29kZV9lbXB0eSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT2JqZWN0KGxlZnQpOwogCi0gICAgdV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1KTsKLSAgICB2X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpOwotICAgIGlmICh1X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC0gdl9sZW4pIHsKKyAgICBsZWZ0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxlZnQpOworICAgIHJpZ2h0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJpZ2h0KTsKKyAgICBpZiAobGVmdF9sZW4gPiBQWV9TU0laRV9UX01BWCAtIHJpZ2h0X2xlbikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzIGFyZSB0b28gbGFyZ2UgdG8gY29uY2F0Iik7Ci0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG5ld19sZW4gPSB1X2xlbiArIHZfbGVuOworICAgIG5ld19sZW4gPSBsZWZ0X2xlbiArIHJpZ2h0X2xlbjsKIAotICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodSk7Ci0gICAgbWF4Y2hhcjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodik7CisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShsZWZ0KTsKKyAgICBtYXhjaGFyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyaWdodCk7CiAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBtYXhjaGFyMik7CiAKICAgICAvKiBDb25jYXQgdGhlIHR3byBVbmljb2RlIHN0cmluZ3MgKi8KLSAgICB3ID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKLSAgICBpZiAodyA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModywgMCwgdSwgMCwgdV9sZW4pOwotICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHcsIHVfbGVuLCB2LCAwLCB2X2xlbik7Ci0gICAgUHlfREVDUkVGKHUpOwotICAgIFB5X0RFQ1JFRih2KTsKLSAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHcsIDEpKTsKLSAgICByZXR1cm4gdzsKLQotICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYodSk7Ci0gICAgUHlfWERFQ1JFRih2KTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfTmV3KG5ld19sZW4sIG1heGNoYXIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzdWx0LCAwLCBsZWZ0LCAwLCBsZWZ0X2xlbik7CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzdWx0LCBsZWZ0X2xlbiwgcmlnaHQsIDAsIHJpZ2h0X2xlbik7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXN1bHQsIDEpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0xMTEyOSw2ICsxMTI5NywyNSBAQAogICAgIFB5X1hERUNSRUYocmlnaHQpOwogfQogCisvKgorV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGVuc3VyZXMgdGhhdCB0aGUKK2ZpcnN0IGFyZ3VtZW50IGlzIGEgdW5pY29kZSBvYmplY3QuCisqLworCitzdGF0aWMgaW5saW5lIGludAorcGFyc2VfYXJnc19maW5kc191bmljb2RlKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1YnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQoreworICAgIGlmKHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKGZ1bmN0aW9uX25hbWUsIGFyZ3MsIHN1YnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkgeworICAgICAgICBpZiAoZW5zdXJlX3VuaWNvZGUoKnN1YnN0cmluZykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogUHlEb2NfU1RSVkFSKGNvdW50X19kb2NfXywKICAgICAgICAgICAgICAiUy5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKIFxuXApAQCAtMTExNDcsMzEgKzExMzM0LDI2IEBACiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCBpcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJjb3VudCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImNvdW50IiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKLSAgICBpZiAoa2luZDEgPCBraW5kMikgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMikKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKLSAgICB9CisKICAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwotICAgIH0KKwogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKICAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZDEpOwotICAgICAgICBpZiAoIWJ1ZjIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICBpZiAoIWJ1ZjIpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgIH0KICAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKQEAgLTExMjAxLDggKzExMzgzLDYgQEAKICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTExMzM2LDIyICsxMTUxNiwxMyBAQAogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgMSk7CiAKICAgICBpZiAocmVzdWx0ID09IC0yKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNDI0LDIyICsxMTU5NSwxMyBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwotCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2Uoc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAxKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE5NTMsNyArMTIxMTUsNyBAQAogI2RlZmluZSBCT1RIU1RSSVAgMgogCiAvKiBBcnJheXMgaW5kZXhlZCBieSBhYm92ZSAqLwotc3RhdGljIGNvbnN0IGNoYXIgKnN0cmlwZm9ybWF0W10gPSB7InxPOmxzdHJpcCIsICJ8Tzpyc3RyaXAiLCAifE86c3RyaXAifTsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3RyaXBmb3JtYXRbXSA9IHsifE86bHN0cmlwIiwgInxPOnJzdHJpcCIsICJ8TzpzdHJpcCJ9OwogCiAjZGVmaW5lIFNUUklQTkFNRShpKSAoc3RyaXBmb3JtYXRbaV0rMykKIApAQCAtMTIyMzQsMTEgKzEyMzk2LDExIEBACiAgICAgICAgIFB5X3NzaXplX3QgZG9uZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgY2hhcl9zaXplID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKICAgICAgICAgY2hhciAqdG8gPSAoY2hhciAqKSBQeVVuaWNvZGVfREFUQSh1KTsKLSAgICAgICAgUHlfTUVNQ1BZKHRvLCBQeVVuaWNvZGVfREFUQShzdHIpLAorICAgICAgICBtZW1jcHkodG8sIFB5VW5pY29kZV9EQVRBKHN0ciksCiAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICogY2hhcl9zaXplKTsKICAgICAgICAgd2hpbGUgKGRvbmUgPCBuY2hhcnMpIHsKICAgICAgICAgICAgIG4gPSAoZG9uZSA8PSBuY2hhcnMtZG9uZSkgPyBkb25lIDogbmNoYXJzLWRvbmU7Ci0gICAgICAgICAgICBQeV9NRU1DUFkodG8gKyAoZG9uZSAqIGNoYXJfc2l6ZSksIHRvLCBuICogY2hhcl9zaXplKTsKKyAgICAgICAgICAgIG1lbWNweSh0byArIChkb25lICogY2hhcl9zaXplKSwgdG8sIG4gKiBjaGFyX3NpemUpOwogICAgICAgICAgICAgZG9uZSArPSBuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIyNDgsNDAgKzEyNDEwLDE1IEBACiB9CiAKIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vib2JqLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxvYmosCitQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXBsc3RyLAogICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKLSAgICBQeU9iamVjdCAqc2VsZjsKLSAgICBQeU9iamVjdCAqc3RyMTsKLSAgICBQeU9iamVjdCAqc3RyMjsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7Ci0gICAgaWYgKHNlbGYgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDAgfHwKKyAgICAgICAgICAgIGVuc3VyZV91bmljb2RlKHJlcGxzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyMSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7Ci0gICAgaWYgKHN0cjEgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzdHIyID0gUHlVbmljb2RlX0Zyb21PYmplY3QocmVwbG9iaik7Ci0gICAgaWYgKHN0cjIgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEgfHwKLSAgICAgICAgUHlVbmljb2RlX1JFQURZKHN0cjEpID09IC0xIHx8Ci0gICAgICAgIFB5VW5pY29kZV9SRUFEWShzdHIyKSA9PSAtMSkKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwotICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgUHlfREVDUkVGKHN0cjIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBzdWJzdHIsIHJlcGxzdHIsIG1heGNvdW50KTsKIH0KIAogUHlEb2NfU1RSVkFSKHJlcGxhY2VfX2RvY19fLApAQCAtMTIyOTcsMjggKzEyNDM0LDEyIEBACiAgICAgUHlPYmplY3QgKnN0cjE7CiAgICAgUHlPYmplY3QgKnN0cjI7CiAgICAgUHlfc3NpemVfdCBtYXhjb3VudCA9IC0xOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46cmVwbGFjZSIsICZzdHIxLCAmc3RyMiwgJm1heGNvdW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVfG46cmVwbGFjZSIsICZzdHIxLCAmc3RyMiwgJm1heGNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyMSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjEpOwotICAgIGlmIChzdHIxID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIyKTsKLSAgICBpZiAoc3RyMiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyMSkgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cjIpID09IC0xKQotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7Ci0KLSAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgUHlfREVDUkVGKHN0cjIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTI1MDMsMjIgKzEyNjI0LDEzIEBACiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJmaW5kIiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKC0xLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwotCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2Uoc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7CiAKICAgICBpZiAocmVzdWx0ID09IC0yKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyNTQwLDIyICsxMjY1MiwxMyBAQAogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmluZGV4IiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmluZGV4IiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKC0xLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwotCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2Uoc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7CiAKICAgICBpZiAocmVzdWx0ID09IC0yKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyNTk1LDI0ICsxMjY5OCwxMCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX1NwbGl0KFB5T2JqZWN0ICpzLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzID0gUHlVbmljb2RlX0Zyb21PYmplY3Qocyk7Ci0gICAgaWYgKHMgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUocykgPCAwIHx8IChzZXAgIT0gTlVMTCAmJiBlbnN1cmVfdW5pY29kZShzZXApIDwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXAgIT0gTlVMTCkgewotICAgICAgICBzZXAgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXApOwotICAgICAgICBpZiAoc2VwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7Ci0KLSAgICBQeV9ERUNSRUYocyk7Ci0gICAgUHlfWERFQ1JFRihzZXApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwogfQogCiBQeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLApAQCAtMTI2MzcsMzUgKzEyNzI2LDI2IEBACiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzcGxpdChzZWxmLCBOVUxMLCBtYXhjb3VudCk7Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCiAgICAgICAgIHJldHVybiBzcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9QYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9pbiwgUHlPYmplY3QgKnNlcF9pbikKK1B5VW5pY29kZV9QYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9vYmosIFB5T2JqZWN0ICpzZXBfb2JqKQogewotICAgIFB5T2JqZWN0KiBzdHJfb2JqOwotICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKLSAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKLSAgICBpZiAoIXN0cl9vYmopCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cl9vYmopIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzZXBfb2JqKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHNlcF9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXBfaW4pOwotICAgIGlmICghc2VwX29iaikgewotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlcF9vYmopID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOwpAQCAtMTI2NzksOCArMTI3NTksNiBAQAogICAgICAgICAgICAgb3V0ID0gUHlUdXBsZV9QYWNrKDMsIHN0cl9vYmosIHVuaWNvZGVfZW1wdHksIHVuaWNvZGVfZW1wdHkpOwogICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfZW1wdHkpOwogICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0KICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CkBAIC0xMjY4OCw3ICsxMjc2Niw3IEBACiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CiAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kMSk7CiAgICAgICAgIGlmICghYnVmMikKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKQEAgLTEyNzA5LDM5ICsxMjc4NywyMyBAQAogICAgICAgICBvdXQgPSAwOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKLSAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQotICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwotICAgIHJldHVybiBOVUxMOwogfQogCiAKIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9SUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfaW4sIFB5T2JqZWN0ICpzZXBfaW4pCitQeVVuaWNvZGVfUlBhcnRpdGlvbihQeU9iamVjdCAqc3RyX29iaiwgUHlPYmplY3QgKnNlcF9vYmopCiB7Ci0gICAgUHlPYmplY3QqIHN0cl9vYmo7Ci0gICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwotICAgIGlmICghc3RyX29iaikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyX29iaikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHNlcF9vYmopIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc2VwX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcF9pbik7Ci0gICAgaWYgKCFzZXBfb2JqKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOwpAQCAtMTI3NTUsOCArMTI4MTcsNiBAQAogICAgICAgICAgICAgb3V0ID0gUHlUdXBsZV9QYWNrKDMsIHVuaWNvZGVfZW1wdHksIHVuaWNvZGVfZW1wdHksIHN0cl9vYmopOwogICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfZW1wdHkpOwogICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0KICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CkBAIC0xMjc2NCw3ICsxMjgyNCw3IEBACiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CiAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kMSk7CiAgICAgICAgIGlmICghYnVmMikKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKQEAgLTEyNzg1LDE4ICsxMjg0NSwxMCBAQAogICAgICAgICBvdXQgPSAwOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKLSAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQotICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwotICAgIHJldHVybiBOVUxMOwogfQogCiBQeURvY19TVFJWQVIocGFydGl0aW9uX19kb2NfXywKQEAgLTEyODI4LDI0ICsxMjg4MCwxMCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX1JTcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgcyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHMpOwotICAgIGlmIChzID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHMpIDwgMCB8fCAoc2VwICE9IE5VTEwgJiYgZW5zdXJlX3VuaWNvZGUoc2VwKSA8IDApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2VwICE9IE5VTEwpIHsKLSAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwKTsKLSAgICAgICAgaWYgKHNlcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KIAotICAgIHJlc3VsdCA9IHJzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKLQotICAgIFB5X0RFQ1JFRihzKTsKLSAgICBQeV9YREVDUkVGKHNlcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcnNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwogfQogCiBQeURvY19TVFJWQVIocnNwbGl0X19kb2NfXywKQEAgLTEyODcwLDEwICsxMjkwOCwxNCBAQAogCiAgICAgaWYgKHN1YnN0cmluZyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfUlNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOworCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm11c3QgYmUgc3RyIG9yIE5vbmUsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeURvY19TVFJWQVIoc3BsaXRsaW5lc19fZG9jX18sCkBAIC0xMzE1NCwxMSArMTMxOTYsMTUgQEAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOwotICAgICAgICAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQorICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpOworICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dXBsZSBmb3Igc3RhcnRzd2l0aCBtdXN0IG9ubHkgY29udGFpbiBzdHIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkgewpAQCAtMTMxNjgsMTUgKzEzMjE0LDEzIEBACiAgICAgICAgIC8qIG5vdGhpbmcgbWF0Y2hlZCAqLwogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgfQotICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7Ci0gICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgorICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJS4xMDBzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCAtMSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOwpAQCAtMTMyMDYsMTIgKzEzMjUwLDE1IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKLSAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKTsKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHVwbGUgZm9yIGVuZHN3aXRoIG11c3Qgb25seSBjb250YWluIHN0ciwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CkBAIC0xMzIyMCw2MSArMTMyNjcsNjcgQEAKICAgICAgICAgfQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgfQotICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7Ci0gICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vib2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCisgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlLjEwMHMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgKzEpOwotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsICsxKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CiB9CiAKLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7Ci0gICAgaWYgKCF3cml0ZXItPnJlYWRvbmx5KQorICAgIHdyaXRlci0+bWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh3cml0ZXItPmJ1ZmZlcik7CisgICAgd3JpdGVyLT5kYXRhID0gUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpOworCisgICAgaWYgKCF3cml0ZXItPnJlYWRvbmx5KSB7CisgICAgICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9LSU5EKHdyaXRlci0+YnVmZmVyKTsKICAgICAgICAgd3JpdGVyLT5zaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpOworICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgLyogdXNlIGEgdmFsdWUgc21hbGxlciB0aGFuIFB5VW5pY29kZV8xQllURV9LSU5EKCkgc28KKyAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgpIHdpbGwgY29weSB0aGUgYnVmZmVyLiAqLworICAgICAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfV0NIQVJfS0lORDsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+a2luZCA8PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisKICAgICAgICAgLyogQ29weS1vbi13cml0ZSBtb2RlOiBzZXQgYnVmZmVyIHNpemUgdG8gMCBzbwogICAgICAgICAgKiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoKSB3aWxsIGNvcHkgKGFuZCBlbmxhcmdlKSB0aGUgYnVmZmVyIG9uCiAgICAgICAgICAqIG5leHQgd3JpdGUuICovCiAgICAgICAgIHdyaXRlci0+c2l6ZSA9IDA7CiAgICAgfQotICAgIHdyaXRlci0+bWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh3cml0ZXItPmJ1ZmZlcik7Ci0gICAgd3JpdGVyLT5kYXRhID0gUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpOwotICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9LSU5EKHdyaXRlci0+YnVmZmVyKTsKIH0KIAogdm9pZAogX1B5VW5pY29kZVdyaXRlcl9Jbml0KF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICBtZW1zZXQod3JpdGVyLCAwLCBzaXplb2YoKndyaXRlcikpOwotI2lmZGVmIFB5X0RFQlVHCi0gICAgd3JpdGVyLT5raW5kID0gNTsgICAgLyogaW52YWxpZCBraW5kICovCi0jZW5kaWYKKworICAgIC8qIEFTQ0lJIGlzIHRoZSBiYXJlIG1pbmltdW0gKi8KICAgICB3cml0ZXItPm1pbl9jaGFyID0gMTI3OworCisgICAgLyogdXNlIGEgdmFsdWUgc21hbGxlciB0aGFuIFB5VW5pY29kZV8xQllURV9LSU5EKCkgc28KKyAgICAgICBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCkgd2lsbCBjb3B5IHRoZSBidWZmZXIuICovCisgICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX1dDSEFSX0tJTkQ7CisgICAgYXNzZXJ0KHdyaXRlci0+a2luZCA8PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CiB9CiAKIGludAogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcikKIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLwotIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgotI2Vsc2UKLSAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLwotIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAotI2VuZGlmCiAgICAgUHlfc3NpemVfdCBuZXdsZW47CiAgICAgUHlPYmplY3QgKm5ld2J1ZmZlcjsKIAotICAgIGFzc2VydChsZW5ndGggPiAwKTsKKyAgICBhc3NlcnQobWF4Y2hhciA8PSBNQVhfVU5JQ09ERSk7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlIG1hY3JvIHdhcyB1c2VkICovCisgICAgYXNzZXJ0KChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyICYmIGxlbmd0aCA+PSAwKQorICAgICAgICAgICB8fCBsZW5ndGggPiAwKTsKIAogICAgIGlmIChsZW5ndGggPiBQWV9TU0laRV9UX01BWCAtIHdyaXRlci0+cG9zKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0xMzM0MCw5ICsxMzM5MywzMiBAQAogI3VuZGVmIE9WRVJBTExPQ0FURV9GQUNUT1IKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK2ludAorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZEludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQpCit7CisgICAgUHlfVUNTNCBtYXhjaGFyOworCisgICAgLyogZW5zdXJlIHRoYXQgdGhlIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQgbWFjcm8gd2FzIHVzZWQgKi8KKyAgICBhc3NlcnQod3JpdGVyLT5raW5kIDwga2luZCk7CisKKyAgICBzd2l0Y2ggKGtpbmQpCisgICAgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IG1heGNoYXIgPSAweGZmOyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiBtYXhjaGFyID0gMHhmZmZmOyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiBtYXhjaGFyID0gMHgxMGZmZmY7IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwICYmICJpbnZhbGlkIGtpbmQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbCh3cml0ZXIsIDAsIG1heGNoYXIpOworfQorCitzdGF0aWMgaW5saW5lIGludAogX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeV9VQ1M0IGNoKQogeworICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CiAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIDEsIGNoKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLT5raW5kLCB3cml0ZXItPmRhdGEsIHdyaXRlci0+cG9zLCBjaCk7CkBAIC0xMzQ1NSw3ICsxMzUzMSw3IEBACiAgICAgICAgIGNvbnN0IFB5X1VDUzEgKnN0ciA9IChjb25zdCBQeV9VQ1MxICopYXNjaWk7CiAgICAgICAgIFB5X1VDUzEgKmRhdGEgPSB3cml0ZXItPmRhdGE7CiAKLSAgICAgICAgUHlfTUVNQ1BZKGRhdGEgKyB3cml0ZXItPnBvcywgc3RyLCBsZW4pOworICAgICAgICBtZW1jcHkoZGF0YSArIHdyaXRlci0+cG9zLCBzdHIsIGxlbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgpAQCAtMTM1MTAsMTcgKzEzNTg2LDI2IEBACiAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID09IHdyaXRlci0+cG9zKTsKICAgICAgICAgcmV0dXJuIHN0cjsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSAhPSB3cml0ZXItPnBvcykgewotICAgICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOwotICAgICAgICBuZXdidWZmZXIgPSByZXNpemVfY29tcGFjdCh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MpOwotICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgIGlmICh3cml0ZXItPnBvcyA9PSAwKSB7CisgICAgICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKKworICAgICAgICAvKiBHZXQgdGhlIGVtcHR5IFVuaWNvZGUgc3RyaW5nIHNpbmdsZXRvbiAoJycpICovCisgICAgICAgIF9QeV9JTkNSRUZfVU5JQ09ERV9FTVBUWSgpOworICAgICAgICBzdHIgID0gdW5pY29kZV9lbXB0eTsKICAgICB9Ci0gICAgc3RyID0gd3JpdGVyLT5idWZmZXI7Ci0gICAgd3JpdGVyLT5idWZmZXIgPSBOVUxMOworICAgIGVsc2UgeworICAgICAgICBzdHIgPSB3cml0ZXItPmJ1ZmZlcjsKKyAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBOVUxMOworCisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICE9IHdyaXRlci0+cG9zKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqc3RyMjsKKyAgICAgICAgICAgIHN0cjIgPSByZXNpemVfY29tcGFjdChzdHIsIHdyaXRlci0+cG9zKTsKKyAgICAgICAgICAgIGlmIChzdHIyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBzdHIgPSBzdHIyOworICAgICAgICB9CisgICAgfQorCiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfcmVhZHkoc3RyKTsKIH0KQEAgLTE0NjYxLDEzICsxNDc0NiwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBjdHguZm10c3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3QoZm9ybWF0KTsKLSAgICBpZiAoY3R4LmZtdHN0ciA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShmb3JtYXQpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShjdHguZm10c3RyKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoY3R4LmZtdHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKworICAgIGN0eC5mbXRzdHIgPSBmb3JtYXQ7CiAgICAgY3R4LmZtdGRhdGEgPSBQeVVuaWNvZGVfREFUQShjdHguZm10c3RyKTsKICAgICBjdHguZm10a2luZCA9IFB5VW5pY29kZV9LSU5EKGN0eC5mbXRzdHIpOwogICAgIGN0eC5mbXRjbnQgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChjdHguZm10c3RyKTsKQEAgLTE0NzI3LDExICsxNDgwOSw5IEBACiAgICAgaWYgKGN0eC5hcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjdHguYXJncyk7CiAgICAgfQotICAgIFB5X0RFQ1JFRihjdHguZm10c3RyKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJmN0eC53cml0ZXIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKGN0eC5mbXRzdHIpOwogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmY3R4LndyaXRlcik7CiAgICAgaWYgKGN0eC5hcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjdHguYXJncyk7CkBAIC0xNDg0OCw3ICsxNDkyOCw3IEBACiAgICAgICAgIF9QeVVuaWNvZGVfV1NUUihzZWxmKSA9ICh3Y2hhcl90ICopZGF0YTsKICAgICB9CiAKLSAgICBQeV9NRU1DUFkoZGF0YSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgbWVtY3B5KGRhdGEsIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAogICAgICAgICAgICAgICBraW5kICogKGxlbmd0aCArIDEpKTsKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHNlbGYsIDEpKTsKICNpZmRlZiBQeV9ERUJVRwpAQCAtMTUwMDksMjYgKzE1MDg5LDE4IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogSXQgbWlnaHQgYmUgdGhhdCB0aGUgR2V0SXRlbSBjYWxsIGZhaWxzIGV2ZW4KLSAgICAgICB0aG91Z2ggdGhlIGtleSBpcyBwcmVzZW50IGluIHRoZSBkaWN0aW9uYXJ5LAotICAgICAgIG5hbWVseSB3aGVuIHRoaXMgaGFwcGVucyBkdXJpbmcgYSBzdGFjayBvdmVyZmxvdy4gKi8KICAgICBQeV9BTExPV19SRUNVUlNJT04KLSAgICB0ID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJuZWQsIHMpOworICAgIHQgPSBQeURpY3RfU2V0RGVmYXVsdChpbnRlcm5lZCwgcywgcyk7CiAgICAgUHlfRU5EX0FMTE9XX1JFQ1VSU0lPTgotCi0gICAgaWYgKHQpIHsKKyAgICBpZiAodCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHQgIT0gcykgewogICAgICAgICBQeV9JTkNSRUYodCk7CiAgICAgICAgIFB5X1NFVFJFRigqcCwgdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAxOwotICAgIGlmIChQeURpY3RfU2V0SXRlbShpbnRlcm5lZCwgcywgcykgPCAwKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDA7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMDsKICAgICAvKiBUaGUgdHdvIHJlZmVyZW5jZXMgaW4gaW50ZXJuZWQgYXJlIG5vdCBjb3VudGVkIGJ5IHJlZmNudC4KICAgICAgICBUaGUgZGVhbGxvY2F0b3Igd2lsbCB0YWtlIGNhcmUgb2YgdGhpcyAqLwogICAgIFB5X1JFRkNOVChzKSAtPSAyOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCmluZGV4IDdjNzgwYjYuLjM5YWY5MjAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAorKysgYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKQEAgLTI0NCwxMDkgKzI0NCwxMTkgQEAKICAgICB7MTY3Nzc1NjIsIDE3ODI2MTM2LCAxNjc3NzU2MiwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3NzU2NSwgMTc4MjYxMzksIDE2Nzc3NTY1LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDM4NDB9LAorICAgIHswLCAwLCAwLCAwLCAwLCA1ODg4fSwKKyAgICB7MTY3Nzc1NjgsIDE3ODI2MTQyLCAxNjc3NzU2OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU3MSwgMTc4MjYxNDUsIDE2Nzc3NTcxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTc0LCAxNzgyNjE0OCwgMTY3Nzc1NzQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NzcsIDE3ODI2MTUxLCAxNjc3NzU3NywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4MCwgMTc4MjYxNTQsIDE2Nzc3NTgwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTgzLCAxNzgyNjE1NywgMTY3Nzc1ODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODYsIDE3ODI2MTYwLCAxNjc3NzU4NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4OSwgMTc4MjYxNjMsIDE2Nzc3NTg5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTkyLCAxNzgyNjE2NiwgMTY3Nzc1OTIsIDAsIDAsIDI2Mzc3fSwKICAgICB7MzUzMzIsIDAsIDM1MzMyLCAwLCAwLCA5OTkzfSwKICAgICB7MzgxNCwgMCwgMzgxNCwgMCwgMCwgOTk5M30sCi0gICAgezMzNTU0Nzg1LCAxODg3NDcxOCwgMzM1NTQ3ODUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3OTAsIDE4ODc0NzIzLCAzMzU1NDc5MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc5NSwgMTg4NzQ3MjgsIDMzNTU0Nzk1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODAwLCAxODg3NDczMywgMzM1NTQ4MDAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4MDUsIDE4ODc0NzM4LCAzMzU1NDgwNSwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3NzU5MywgMTc4MjYxNjcsIDE2Nzc3NTkzLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc3NTk3LCAxODg3NDc0NiwgMTY3Nzc1OTcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MzM1NTQ4MTIsIDE4ODc0NzQ1LCAzMzU1NDgxMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgxNywgMTg4NzQ3NTAsIDMzNTU0ODE3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODIyLCAxODg3NDc1NSwgMzM1NTQ4MjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MjcsIDE4ODc0NzYwLCAzMzU1NDgyNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgzMiwgMTg4NzQ3NjUsIDMzNTU0ODMyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NjIwLCAxNzgyNjE5NCwgMTY3Nzc2MjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc2MjQsIDE4ODc0NzczLCAxNjc3NzYyNCwgMCwgMCwgMjY0OTd9LAogICAgIHs4LCAwLCA4LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgLTgsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTQ4MTcsIDE4ODc0NzUwLCAzMzU1NDgxNywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjAzOSwgMTk5MjMzMzEsIDUwMzMyMDM5LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDQ2LCAxOTkyMzMzOCwgNTAzMzIwNDYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIwNTMsIDE5OTIzMzQ1LCA1MDMzMjA1MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg0NCwgMTg4NzQ3NzcsIDMzNTU0ODQ0LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDY2LCAxOTkyMzM1OCwgNTAzMzIwNjYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwNzMsIDE5OTIzMzY1LCA1MDMzMjA3MywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA4MCwgMTk5MjMzNzIsIDUwMzMyMDgwLCAwLCAwLCAyNjM3N30sCiAgICAgezc0LCAwLCA3NCwgMCwgMCwgOTk5M30sCiAgICAgezg2LCAwLCA4NiwgMCwgMCwgOTk5M30sCiAgICAgezEwMCwgMCwgMTAwLCAwLCAwLCA5OTkzfSwKICAgICB7MTI4LCAwLCAxMjgsIDAsIDAsIDk5OTN9LAogICAgIHsxMTIsIDAsIDExMiwgMCwgMCwgOTk5M30sCiAgICAgezEyNiwgMCwgMTI2LCAwLCAwLCA5OTkzfSwKLSAgICB7MzM1NTQ4NDMsIDE4ODc0Nzc2LCAxNjc3NzYyOSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg0OSwgMTg4NzQ3ODIsIDE2Nzc3NjM1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODU1LCAxODg3NDc4OCwgMTY3Nzc2NDEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NjEsIDE4ODc0Nzk0LCAxNjc3NzY0NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg2NywgMTg4NzQ4MDAsIDE2Nzc3NjUzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODczLCAxODg3NDgwNiwgMTY3Nzc2NTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NzksIDE4ODc0ODEyLCAxNjc3NzY2NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg4NSwgMTg4NzQ4MTgsIDE2Nzc3NjcxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODkxLCAxODg3NDgyNCwgMTY3Nzc2NzcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4OTcsIDE4ODc0ODMwLCAxNjc3NzY4MywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkwMywgMTg4NzQ4MzYsIDE2Nzc3Njg5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTA5LCAxODg3NDg0MiwgMTY3Nzc2OTUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MTUsIDE4ODc0ODQ4LCAxNjc3NzcwMSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkyMSwgMTg4NzQ4NTQsIDE2Nzc3NzA3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTI3LCAxODg3NDg2MCwgMTY3Nzc3MTMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MzMsIDE4ODc0ODY2LCAxNjc3NzcxOSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkzOSwgMTg4NzQ4NzIsIDE2Nzc3NzI1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTQ1LCAxODg3NDg3OCwgMTY3Nzc3MzEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NTEsIDE4ODc0ODg0LCAxNjc3NzczNywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk1NywgMTg4NzQ4OTAsIDE2Nzc3NzQzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTYzLCAxODg3NDg5NiwgMTY3Nzc3NDksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NjksIDE4ODc0OTAyLCAxNjc3Nzc1NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk3NSwgMTg4NzQ5MDgsIDE2Nzc3NzYxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTgxLCAxODg3NDkxNCwgMTY3Nzc3NjcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5ODcsIDE4ODc0OTIwLCAxNjc3Nzc3MywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDk5MywgMTg4NzQ5MjYsIDE2Nzc3Nzc5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTk5LCAxODg3NDkzMiwgMTY3Nzc3ODUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMDUsIDE4ODc0OTM4LCAxNjc3Nzc5MSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAxMSwgMTg4NzQ5NDQsIDE2Nzc3Nzk3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDE3LCAxODg3NDk1MCwgMTY3Nzc4MDMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMjMsIDE4ODc0OTU2LCAxNjc3NzgwOSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAyOSwgMTg4NzQ5NjIsIDE2Nzc3ODE1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDM1LCAxODg3NDk2OCwgMTY3Nzc4MjEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNDEsIDE4ODc0OTc0LCAxNjc3NzgyNywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA0NywgMTg4NzQ5ODAsIDE2Nzc3ODMzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDUzLCAxODg3NDk4NiwgMTY3Nzc4MzksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNTksIDE4ODc0OTkyLCAxNjc3Nzg0NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA2NSwgMTg4NzQ5OTgsIDE2Nzc3ODUxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDcxLCAxODg3NTAwNCwgMTY3Nzc4NTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNzcsIDE4ODc1MDEwLCAxNjc3Nzg2MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA4MywgMTg4NzUwMTYsIDE2Nzc3ODY5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDg5LCAxODg3NTAyMiwgMTY3Nzc4NzUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwOTUsIDE4ODc1MDI4LCAxNjc3Nzg4MSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEwMSwgMTg4NzUwMzQsIDE2Nzc3ODg3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTA3LCAxODg3NTA0MCwgMTY3Nzc4OTMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMTMsIDE4ODc1MDQ2LCAxNjc3Nzg5OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTExOSwgMTg4NzUwNTIsIDE2Nzc3OTA1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTI1LCAxODg3NTA1OCwgMTY3Nzc5MTEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMzEsIDE4ODc1MDY0LCAzMzU1NTEzMywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTEzOCwgMTg4NzUwNzEsIDE2Nzc3OTI0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTQ0LCAxODg3NTA3NywgMzM1NTUxNDYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxNTEsIDE4ODc1MDg0LCAzMzU1NTE1MSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjM3MywgMTk5MjM2NjUsIDUwMzMyMzc2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODcwLCAxODg3NDgwMywgMTY3Nzc2NTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NzYsIDE4ODc0ODA5LCAxNjc3NzY2MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg4MiwgMTg4NzQ4MTUsIDE2Nzc3NjY4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODg4LCAxODg3NDgyMSwgMTY3Nzc2NzQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4OTQsIDE4ODc0ODI3LCAxNjc3NzY4MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkwMCwgMTg4NzQ4MzMsIDE2Nzc3Njg2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTA2LCAxODg3NDgzOSwgMTY3Nzc2OTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MTIsIDE4ODc0ODQ1LCAxNjc3NzY5OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkxOCwgMTg4NzQ4NTEsIDE2Nzc3NzA0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTI0LCAxODg3NDg1NywgMTY3Nzc3MTAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MzAsIDE4ODc0ODYzLCAxNjc3NzcxNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkzNiwgMTg4NzQ4NjksIDE2Nzc3NzIyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTQyLCAxODg3NDg3NSwgMTY3Nzc3MjgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NDgsIDE4ODc0ODgxLCAxNjc3NzczNCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk1NCwgMTg4NzQ4ODcsIDE2Nzc3NzQwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTYwLCAxODg3NDg5MywgMTY3Nzc3NDYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NjYsIDE4ODc0ODk5LCAxNjc3Nzc1MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk3MiwgMTg4NzQ5MDUsIDE2Nzc3NzU4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTc4LCAxODg3NDkxMSwgMTY3Nzc3NjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5ODQsIDE4ODc0OTE3LCAxNjc3Nzc3MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk5MCwgMTg4NzQ5MjMsIDE2Nzc3Nzc2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTk2LCAxODg3NDkyOSwgMTY3Nzc3ODIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMDIsIDE4ODc0OTM1LCAxNjc3Nzc4OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAwOCwgMTg4NzQ5NDEsIDE2Nzc3Nzk0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDE0LCAxODg3NDk0NywgMTY3Nzc4MDAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMjAsIDE4ODc0OTUzLCAxNjc3NzgwNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAyNiwgMTg4NzQ5NTksIDE2Nzc3ODEyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDMyLCAxODg3NDk2NSwgMTY3Nzc4MTgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMzgsIDE4ODc0OTcxLCAxNjc3NzgyNCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA0NCwgMTg4NzQ5NzcsIDE2Nzc3ODMwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDUwLCAxODg3NDk4MywgMTY3Nzc4MzYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNTYsIDE4ODc0OTg5LCAxNjc3Nzg0MiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA2MiwgMTg4NzQ5OTUsIDE2Nzc3ODQ4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDY4LCAxODg3NTAwMSwgMTY3Nzc4NTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNzQsIDE4ODc1MDA3LCAxNjc3Nzg2MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA4MCwgMTg4NzUwMTMsIDE2Nzc3ODY2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDg2LCAxODg3NTAxOSwgMTY3Nzc4NzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwOTIsIDE4ODc1MDI1LCAxNjc3Nzg3OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA5OCwgMTg4NzUwMzEsIDE2Nzc3ODg0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTA0LCAxODg3NTAzNywgMTY3Nzc4OTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMTAsIDE4ODc1MDQzLCAxNjc3Nzg5NiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTExNiwgMTg4NzUwNDksIDE2Nzc3OTAyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTIyLCAxODg3NTA1NSwgMTY3Nzc5MDgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMjgsIDE4ODc1MDYxLCAxNjc3NzkxNCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEzNCwgMTg4NzUwNjcsIDE2Nzc3OTIwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTQwLCAxODg3NTA3MywgMTY3Nzc5MjYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNDYsIDE4ODc1MDc5LCAxNjc3NzkzMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE1MiwgMTg4NzUwODUsIDE2Nzc3OTM4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTU4LCAxODg3NTA5MSwgMzM1NTUxNjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNjUsIDE4ODc1MDk4LCAxNjc3Nzk1MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE3MSwgMTg4NzUxMDQsIDMzNTU1MTczLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTc4LCAxODg3NTExMSwgMzM1NTUxNzgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0MDAsIDE5OTIzNjkyLCA1MDMzMjQwMywgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtNzQsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUxNjYsIDE4ODc1MDk5LCAxNjc3Nzk1MiwgMCwgMCwgMjY0MzN9LAotICAgIHsxNjc3Nzk1NSwgMTc4MjY1MjksIDE2Nzc3OTU1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTc1LCAxODg3NTEwOCwgMzM1NTUxNzcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxODIsIDE4ODc1MTE1LCAxNjc3Nzk2OCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE4OCwgMTg4NzUxMjEsIDMzNTU1MTkwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTk1LCAxODg3NTEyOCwgMzM1NTUxOTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0MTcsIDE5OTIzNzA5LCA1MDMzMjQyMCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE5MywgMTg4NzUxMjYsIDE2Nzc3OTc5LCAwLCAwLCAyNjQzM30sCisgICAgezE2Nzc3OTgyLCAxNzgyNjU1NiwgMTY3Nzc5ODIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMDIsIDE4ODc1MTM1LCAzMzU1NTIwNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIwOSwgMTg4NzUxNDIsIDE2Nzc3OTk1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjE1LCAxODg3NTE0OCwgMzM1NTUyMTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMjIsIDE4ODc1MTU1LCAzMzU1NTIyMiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ0NCwgMTk5MjM3MzYsIDUwMzMyNDQ3LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC04NiwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTIxMCwgMTg4NzUxNDMsIDE2Nzc3OTk2LCAwLCAwLCAyNjQzM30sCi0gICAgezUwMzMyNDMzLCAxOTkyMzcyNSwgNTAzMzI0MzMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0NDAsIDE5OTIzNzMyLCA1MDMzMjQ0MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTIzMCwgMTg4NzUxNjMsIDMzNTU1MjMwLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDUyLCAxOTkyMzc0NCwgNTAzMzI0NTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMzcsIDE4ODc1MTcwLCAxNjc3ODAyMywgMCwgMCwgMjY0MzN9LAorICAgIHs1MDMzMjQ2MCwgMTk5MjM3NTIsIDUwMzMyNDYwLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDY3LCAxOTkyMzc1OSwgNTAzMzI0NjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyNTcsIDE4ODc1MTkwLCAzMzU1NTI1NywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ3OSwgMTk5MjM3NzEsIDUwMzMyNDc5LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMDAsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7NTAzMzI0NTksIDE5OTIzNzUxLCA1MDMzMjQ1OSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ2NiwgMTk5MjM3NTgsIDUwMzMyNDY2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjU2LCAxODg3NTE4OSwgMzM1NTUyNTYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyNjEsIDE4ODc1MTk0LCAzMzU1NTI2MSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ4MywgMTk5MjM3NzUsIDUwMzMyNDgzLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDg2LCAxOTkyMzc3OCwgNTAzMzI0ODYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0OTMsIDE5OTIzNzg1LCA1MDMzMjQ5MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI4MywgMTg4NzUyMTYsIDMzNTU1MjgzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1Mjg4LCAxODg3NTIyMSwgMzM1NTUyODgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI1MTAsIDE5OTIzODAyLCA1MDMzMjUxMCwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTEyLCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MjczLCAxODg3NTIwNiwgMzM1NTUyNzUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyODAsIDE4ODc1MjEzLCAxNjc3ODA2NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI4NiwgMTg4NzUyMTksIDMzNTU1Mjg4LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjkzLCAxODg3NTIyNiwgMzM1NTUyOTMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI1MTUsIDE5OTIzODA3LCA1MDMzMjUxOCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMwMCwgMTg4NzUyMzMsIDMzNTU1MzAyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzA3LCAxODg3NTI0MCwgMTY3NzgwOTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMTMsIDE4ODc1MjQ2LCAzMzU1NTMxNSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMyMCwgMTg4NzUyNTMsIDMzNTU1MzIwLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNTQyLCAxOTkyMzgzNCwgNTAzMzI1NDUsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTEyOCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAtMTI2LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MzA4LCAxODg3NTI0MSwgMTY3NzgwOTQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUzMzUsIDE4ODc1MjY4LCAxNjc3ODEyMSwgMCwgMCwgMjY0MzN9LAogICAgIHswLCAwLCAwLCAwLCAwLCAzMDc2fSwKICAgICB7MCwgMCwgMCwgMCwgNCwgMzA3Nn0sCiAgICAgezAsIDAsIDAsIDAsIDUsIDMwNzZ9LApAQCAtMzg4LDE1ICszOTgsNiBAQAogICAgIHswLCAtNDIyNjEsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7MCwgOTI4LCAwLCAwLCAwLCAxMDExM30sCiAgICAgey05MjgsIDAsIC05MjgsIDAsIDAsIDk5OTN9LAotICAgIHsxNjc3ODA5NywgMTc4MjY2NzEsIDE2Nzc4MDk3LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTAwLCAxNzgyNjY3NCwgMTY3NzgxMDAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDMsIDE3ODI2Njc3LCAxNjc3ODEwMywgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwNiwgMTc4MjY2ODAsIDE2Nzc4MTA2LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTA5LCAxNzgyNjY4MywgMTY3NzgxMDksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMTIsIDE3ODI2Njg2LCAxNjc3ODExMiwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODExNSwgMTc4MjY2ODksIDE2Nzc4MTE1LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTE4LCAxNzgyNjY5MiwgMTY3NzgxMTgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMjEsIDE3ODI2Njk1LCAxNjc3ODEyMSwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODEyNCwgMTc4MjY2OTgsIDE2Nzc4MTI0LCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MTI3LCAxNzgyNjcwMSwgMTY3NzgxMjcsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgxMzAsIDE3ODI2NzA0LCAxNjc3ODEzMCwgMCwgMCwgMjYzNzd9LApAQCAtNDY4LDIyICs0NjksMzMgQEAKICAgICB7MTY3NzgzMjgsIDE3ODI2OTAyLCAxNjc3ODMyOCwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODMzMSwgMTc4MjY5MDUsIDE2Nzc4MzMxLCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MzM0LCAxNzgyNjkwOCwgMTY3NzgzMzQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU1NTQsIDE4ODc1NDg3LCAzMzU1NTU1NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTU2MSwgMTg4NzU0OTQsIDMzNTU1NTYzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NTY4LCAxODg3NTUwMSwgMzM1NTU1NzAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI3OTIsIDE5OTI0MDg0LCA1MDMzMjc5NSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjgwMiwgMTk5MjQwOTQsIDUwMzMyODA1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzM3LCAxNzgyNjkxMSwgMTY3NzgzMzcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDAsIDE3ODI2OTE0LCAxNjc3ODM0MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0MywgMTc4MjY5MTcsIDE2Nzc4MzQzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQ2LCAxNzgyNjkyMCwgMTY3NzgzNDYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDksIDE3ODI2OTIzLCAxNjc3ODM0OSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM1MiwgMTc4MjY5MjYsIDE2Nzc4MzUyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzU1LCAxNzgyNjkyOSwgMTY3NzgzNTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNTgsIDE3ODI2OTMyLCAxNjc3ODM1OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM2MSwgMTc4MjY5MzUsIDE2Nzc4MzYxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTgxLCAxODg3NTUxNCwgMzM1NTU1ODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU1ODgsIDE4ODc1NTIxLCAzMzU1NTU5MCwgMCwgMCwgMjYzNzd9LAogICAgIHszMzU1NTU5NSwgMTg4NzU1MjgsIDMzNTU1NTk3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjAyLCAxODg3NTUzNSwgMzM1NTU2MDQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MDksIDE4ODc1NTQyLCAzMzU1NTYxMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYxNiwgMTg4NzU1NDksIDMzNTU1NjE4LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjIzLCAxODg3NTU1NiwgMzM1NTU2MjUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MzAsIDE4ODc1NTYzLCAzMzU1NTYzMiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYzNywgMTg4NzU1NzAsIDMzNTU1NjM5LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyODE5LCAxOTkyNDExMSwgNTAzMzI4MjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI4MjksIDE5OTI0MTIxLCA1MDMzMjgzMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYyMiwgMTg4NzU1NTUsIDMzNTU1NjI0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjI5LCAxODg3NTU2MiwgMzM1NTU2MzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MzYsIDE4ODc1NTY5LCAzMzU1NTYzOCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY0MywgMTg4NzU1NzYsIDMzNTU1NjQ1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjUwLCAxODg3NTU4MywgMzM1NTU2NTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NTcsIDE4ODc1NTkwLCAzMzU1NTY1OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY2NCwgMTg4NzU1OTcsIDMzNTU1NjY2LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDEwMjV9LAogICAgIHswLCAwLCAwLCAwLCAwLCA1NjMzfSwKICAgICB7MCwgNDAsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7LTQwLCAwLCAtNDAsIDAsIDAsIDk5OTN9LAorICAgIHswLCAzNCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstMzQsIDAsIC0zNCwgMCwgMCwgOTk5M30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDkzNDR9LAogfTsKIApAQCAtODQwLDYgKzg1MiwzMyBAQAogICAgIDUxMTcsCiAgICAgNTEwOSwKICAgICA1MTA5LAorICAgIDcyOTYsCisgICAgMTA3NCwKKyAgICAxMDQyLAorICAgIDcyOTcsCisgICAgMTA3NiwKKyAgICAxMDQ0LAorICAgIDcyOTgsCisgICAgMTA4NiwKKyAgICAxMDU0LAorICAgIDcyOTksCisgICAgMTA4OSwKKyAgICAxMDU3LAorICAgIDczMDAsCisgICAgMTA5MCwKKyAgICAxMDU4LAorICAgIDczMDEsCisgICAgMTA5MCwKKyAgICAxMDU4LAorICAgIDczMDIsCisgICAgMTA5OCwKKyAgICAxMDY2LAorICAgIDczMDMsCisgICAgMTEyMywKKyAgICAxMTIyLAorICAgIDczMDQsCisgICAgNDI1NzEsCisgICAgNDI1NzAsCiAgICAgNzgzMCwKICAgICAxMDQsCiAgICAgODE3LApAQCAtMTczNiw2OSArMTc3NSw2OCBAQAogICAgIDEzMSwgMTMyLCAxMzMsIDEzNCwgMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgCiAgICAgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNDUsIDM0LCAzNCwgMTUyLCAxNDUsIDE1MywgMTU0LCAxNTUsIAogICAgIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTQ1LCAxNDUsIDE2MywgMTQ1LCAxNDUsIDE0NSwgMTY0LCAKLSAgICAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNDUsIDE0NSwgMTcxLCAxNDUsIDE3MiwgMTczLCAxNzQsIDE3NSwgCi0gICAgMTQ1LCAxNDUsIDE3NiwgMTQ1LCAxNDUsIDE0NSwgMTc3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNzgsIDE3OSwgMzQsIDE4MCwgMTQ1LCAxNDUsIAorICAgIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE0NSwgMTcxLCAxNzIsIDE0NSwgMTczLCAxNzQsIDE3NSwgMTc2LCAKKyAgICAxNDUsIDE0NSwgMTc3LCAxNDUsIDE0NSwgMTQ1LCAxNzgsIDE0NSwgMTQ1LCAxNzksIDE4MCwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE4MSwgMTgyLCAzNCwgMTgzLCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE4MSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE4NCwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTgyLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4MywgMTg0LCAxODUsIDE4NiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTg3LCAxODgsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTkwLCAxOTEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTkyLCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDE5MywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE5NCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE5NSwgMTk2LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE4OSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE5MCwgMTkxLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgNjQsIDE5MiwgCi0gICAgMTkzLCAxOTQsIDE5NSwgMTQ1LCAxOTYsIDE0NSwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDY0LCAKLSAgICA2NCwgNjQsIDY0LCAyMDUsIDIwNiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDM0LCAyMDcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjA4LCAKLSAgICAyMDksIDE0NSwgMTQ1LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMTQ1LCA2NCwgMjE1LCA2NCwgNjQsIDIxNiwgMjE3LCAKLSAgICA2NCwgMjE4LCAyMTksIDIyMCwgMjIxLCAyMjIsIDIyMywgMjI0LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMjUsIDIyNiwgMjI3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMjI4LCAzNCwgMjI5LCAyMzAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMTQ1LCA2NCwgMTk3LCAxOTgsIDE5OSwgMjAwLCAxNDUsIDIwMSwgMTQ1LCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAKKyAgICAyMDgsIDIwOSwgNjQsIDY0LCA2NCwgNjQsIDIxMCwgMjExLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDIxMiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIxMywgMjE0LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAyMTUsIDIxNiwgMTQ1LCAxNDUsIDIxNywgMjE4LCAyMTksIDIyMCwgMjIxLCAxNDUsIDY0LCAyMjIsIDY0LCAKKyAgICA2NCwgNjQsIDY0LCA2NCwgMjIzLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMzAsIDIzMSwgMjMyLCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMjMzLCAzNCwgMjM0LCAyMzUsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjMxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDIzMiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMjMzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAyMzgsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzOSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM1LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNiwgMzQsIDIzNywgMzQsIAorICAgIDM0LCAzNCwgMzQsIDI0MCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAyNDEsIDM0LCAyNDIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzgsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMjMxLCAzNCwgMzQsIDIzOSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMjM2LCAzNCwgMzQsIDI0NCwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCkBAIC0yMjAxLDggKzIyMzksOCBAQAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDI0MCwgMTQ1LCAyNDEsIDI0MiwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjQ1LCAxNDUsIAorICAgIDI0NiwgMjQ3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKQEAgLTIyMzgsNyArMjI3Niw3IEBACiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKQEAgLTIyNzQsNyArMjMxMiw3IEBACiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDMsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjQ4LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKQEAgLTIzMTEsNyArMjM0OSw3IEBACiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDMsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjQ4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmRleDJbXSA9IHsKQEAgLTIzNDcsNyArMjM4NSw3IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2NSwgCiAgICAgMzAsIDMxLCA2NiwgNjcsIDY4LCA2OCwgMzAsIDMxLCA2OSwgNzAsIDcxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgNzIsIDczLCA3NCwgNzUsIDc2LCAyMCwgNzcsIDc3LCAyMCwgNzgsIDIwLCA3OSwgODAsIDIwLCAyMCwgCi0gICAgMjAsIDc3LCA4MSwgMjAsIDgyLCAyMCwgODMsIDg0LCAyMCwgODUsIDg2LCAyMCwgODcsIDg4LCAyMCwgMjAsIDg2LCAyMCwgCisgICAgMjAsIDc3LCA4MSwgMjAsIDgyLCAyMCwgODMsIDg0LCAyMCwgODUsIDg2LCA4NCwgODcsIDg4LCAyMCwgMjAsIDg2LCAyMCwgCiAgICAgODksIDkwLCAyMCwgMjAsIDkxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTIsIDIwLCAyMCwgOTMsIDIwLCAyMCwgCiAgICAgOTMsIDIwLCAyMCwgMjAsIDk0LCA5MywgOTUsIDk2LCA5NiwgOTcsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTgsIDIwLCA1NSwgCiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5OSwgMTAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIApAQCAtMjQzNSwxNTIgKzI0NzMsMTUyIEBACiAgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDUsIDUsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAotICAgIDE1LCAxNiwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgCi0gICAgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDE4LCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDI1LCAxOCwgMTgsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDEwMiwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIAotICAgIDI1LCAwLCAxOCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgCi0gICAgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAKLSAgICAyNSwgMjUsIDE4LCAwLCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMjUsIDAsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKKyAgICAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIDI1LCA1NSwgCisgICAgNTUsIDU1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNSwgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCAKLSAgICAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIAotICAgIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDAsIDI1LCAxOCwgMTgsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDE4LCAwLCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAyNSwgNTUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMTgsIDE4LCAwLCAxOCwgMTgsIDI1LCAyNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIAotICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAKKyAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDU1LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAxOCwgCisgICAgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAKKyAgICAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDI1LCAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCA1LCA1NSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgCisgICAgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDE4LCAKLSAgICAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMjUsIDAsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDE4LCAxOCwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDU1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCAxOCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMjUsIDAsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDAsIDE4LCAxOCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAxMDIsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMTAyLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDEwMiwgMCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIAorICAgIDI1LCA1LCAyNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDE4LCAxOCwgMTgsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgNTUsIDE4LCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDE4LCAxOCwgMjUsIDUsIDUsIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAxMzksIDAsIDAsIDAsIDAsIDAsIDEzOSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgCi0gICAgMjUsIDI1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDE4LCAKLSAgICAxOCwgMTgsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgNTUsIDE4LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgMTgsIDE4LCAxOCwgMjUsIDUsIDUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAKLSAgICAxMzksIDAsIDAsIDAsIDAsIDAsIDEzOSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDEwMiwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDAsIDE0MSwgMTQyLCAKLSAgICAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgCi0gICAgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIAotICAgIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAKLSAgICAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgCi0gICAgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIAotICAgIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAKLSAgICAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAyMzAsIDIzMSwgMjMyLCAyMzMsIDIzNCwgMCwgMCwgMjM1LCAyMzYsIAotICAgIDIzNywgMjM4LCAyMzksIDI0MCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAKKyAgICAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgCisgICAgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIAorICAgIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAKKyAgICAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgCisgICAgMjE3LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAyMzAsIAorICAgIDIzMSwgMjMyLCAyMzMsIDIzNCwgMCwgMCwgMjM1LCAyMzYsIDIzNywgMjM4LCAyMzksIDI0MCwgMCwgMCwgNSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI1OTMsMTA5ICsyNjMxLDExMCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAyNDEsIDI0MSwgMjQxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjUsIDI1LCAyNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgCisgICAgMjQxLCAyNDEsIDI0MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIAotICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMjUsIDI1LCAyNSwgMjEsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDEwMiwgNSwgNSwgNSwgNSwgNTUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDIxLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNDIsIDI0MiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgCi0gICAgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAKKyAgICAxOCwgMTgsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDUsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgMTQwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMTgsIDE4LCAyNSwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTQwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMCwgMCwgNSwgNSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgCisgICAgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAyNSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAwLCAwLCAyNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAxMDIsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDI0MywgMjQ0LCAKKyAgICAyNDUsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAotICAgIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgCiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMjQyLCAyMCwgCi0gICAgMjAsIDIwLCAyNDMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMjUyLCAyMCwgMjAsIDIwLCAyNTMsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDEwMSwgMTAxLCAxMDEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIApAQCAtMjcwNCw0OSArMjc0Myw0OSBAQAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDI0NCwgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDksIDIwLCAyMCwgMjUwLCAyMCwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDI1NCwgMjU1LCAyNTYsIDI1NywgMjU4LCAyNTksIDIwLCAyMCwgMjYwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUyLCAyNTIsIDI1MiwgMjUyLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDAsIDAsIDI1MiwgMjUyLCAyNTIsIAotICAgIDI1MiwgMjUyLCAyNTIsIDAsIDAsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIAotICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAwLCAKLSAgICAwLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAwLCAwLCAyNTMsIDI1MSwgMjU0LCAyNTEsIDI1NSwgMjUxLCAyNTYsIAotICAgIDI1MSwgMCwgMjUyLCAwLCAyNTIsIDAsIDI1MiwgMCwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIAotICAgIDI1MSwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1NywgMjU3LCAyNTgsIDI1OCwgMjU4LCAKLSAgICAyNTgsIDI1OSwgMjU5LCAyNjAsIDI2MCwgMjYxLCAyNjEsIDI2MiwgMjYyLCAwLCAwLCAyNjMsIDI2NCwgMjY1LCAyNjYsIAotICAgIDI2NywgMjY4LCAyNjksIDI3MCwgMjcxLCAyNzIsIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIDI3OSwgMjgwLCAKLSAgICAyODEsIDI4MiwgMjgzLCAyODQsIDI4NSwgMjg2LCAyODcsIDI4OCwgMjg5LCAyOTAsIDI5MSwgMjkyLCAyOTMsIDI5NCwgCi0gICAgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDUsIDMwNiwgMzA3LCAzMDgsIAotICAgIDMwOSwgMzEwLCAyNTEsIDI1MSwgMzExLCAzMTIsIDMxMywgMCwgMzE0LCAzMTUsIDI1MiwgMjUyLCAzMTYsIDMxNiwgMzE3LCAKLSAgICA2LCAzMTgsIDYsIDYsIDYsIDMxOSwgMzIwLCAzMjEsIDAsIDMyMiwgMzIzLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNSwgNiwgCi0gICAgNiwgNiwgMjUxLCAyNTEsIDMyNiwgMzI3LCAwLCAwLCAzMjgsIDMyOSwgMjUyLCAyNTIsIDMzMCwgMzMwLCAwLCA2LCA2LCA2LCAKLSAgICAyNTEsIDI1MSwgMzMxLCAzMzIsIDMzMywgMTI2LCAzMzQsIDMzNSwgMjUyLCAyNTIsIDMzNiwgMzM2LCAxMzAsIDYsIDYsIDYsIAotICAgIDAsIDAsIDMzNywgMzM4LCAzMzksIDAsIDM0MCwgMzQxLCAzNDIsIDM0MiwgMzQzLCAzNDMsIDM0NCwgNiwgNiwgMCwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCAKLSAgICA2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA2LCAzLCAzLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDM0NSwgMTAxLCAKLSAgICAwLCAwLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCA1LCA1LCA1LCA1LCA1LCAxMDEsIDM0NSwgMjYsIDIyLCAyMywgCi0gICAgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgNSwgNSwgNSwgNSwgNSwgMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDMxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDAsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDAsIDAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAwLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAwLCAwLCAyNjMsIDI2MSwgMjY0LCAyNjEsIDI2NSwgMjYxLCAyNjYsIDI2MSwgMCwgCisgICAgMjYyLCAwLCAyNjIsIDAsIDI2MiwgMCwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgCisgICAgMjY5LCAyNzAsIDI3MCwgMjcxLCAyNzEsIDI3MiwgMjcyLCAwLCAwLCAyNzMsIDI3NCwgMjc1LCAyNzYsIDI3NywgMjc4LCAKKyAgICAyNzksIDI4MCwgMjgxLCAyODIsIDI4MywgMjg0LCAyODUsIDI4NiwgMjg3LCAyODgsIDI4OSwgMjkwLCAyOTEsIDI5MiwgCisgICAgMjkzLCAyOTQsIDI5NSwgMjk2LCAyOTcsIDI5OCwgMjk5LCAzMDAsIDMwMSwgMzAyLCAzMDMsIDMwNCwgMzA1LCAzMDYsIAorICAgIDMwNywgMzA4LCAzMDksIDMxMCwgMzExLCAzMTIsIDMxMywgMzE0LCAzMTUsIDMxNiwgMzE3LCAzMTgsIDMxOSwgMzIwLCAKKyAgICAyNjEsIDI2MSwgMzIxLCAzMjIsIDMyMywgMCwgMzI0LCAzMjUsIDI2MiwgMjYyLCAzMjYsIDMyNiwgMzI3LCA2LCAzMjgsIDYsIAorICAgIDYsIDYsIDMyOSwgMzMwLCAzMzEsIDAsIDMzMiwgMzMzLCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNSwgNiwgNiwgNiwgMjYxLCAKKyAgICAyNjEsIDMzNiwgMzM3LCAwLCAwLCAzMzgsIDMzOSwgMjYyLCAyNjIsIDM0MCwgMzQwLCAwLCA2LCA2LCA2LCAyNjEsIDI2MSwgCisgICAgMzQxLCAzNDIsIDM0MywgMTI2LCAzNDQsIDM0NSwgMjYyLCAyNjIsIDM0NiwgMzQ2LCAxMzAsIDYsIDYsIDYsIDAsIDAsIAorICAgIDM0NywgMzQ4LCAzNDksIDAsIDM1MCwgMzUxLCAzNTIsIDM1MiwgMzUzLCAzNTMsIDM1NCwgNiwgNiwgMCwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA2LCAzLCAzLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDM1NSwgMTAxLCAwLCAKKyAgICAwLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCA1LCA1LCA1LCA1LCA1LCAxMDEsIDM1NSwgMjYsIDIyLCAyMywgCisgICAgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgNSwgNSwgNSwgNSwgNSwgMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNiwgNiwgNiwgNiwgMjUsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDUsIDUsIDEyMCwgNSwgNSwgNSwgNSwgMTIwLCA1LCA1LCAyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAyMCwgNSwgMTIwLCA1LCA1LCAzNTIsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAxMjAsIDUsIDM1MywgNSwgMTIwLCA1LCAzNTQsIDM1NSwgMTIwLCAxMjAsIDM1MiwgMjAsIDEyMCwgMTIwLCAzNTYsIDEyMCwgCisgICAgMTIwLCAyMCwgNSwgMTIwLCA1LCA1LCAzNjIsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAxMjAsIDUsIDM2MywgNSwgMTIwLCA1LCAzNjQsIDM2NSwgMTIwLCAxMjAsIDM2MiwgMjAsIDEyMCwgMTIwLCAzNjYsIDEyMCwgCiAgICAgMjAsIDU1LCA1NSwgNTUsIDU1LCAyMCwgNSwgNSwgMjAsIDIwLCAxMjAsIDEyMCwgNSwgNSwgNSwgNSwgNSwgMTIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgNSwgNSwgNSwgNSwgMzU3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAKLSAgICAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgCi0gICAgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDI0MSwgMjQxLCAyNDEsIDMwLCAzMSwgMjQxLCAyNDEsIAorICAgIDIwLCAyMCwgMjAsIDUsIDUsIDUsIDUsIDM2NywgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgCisgICAgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIAorICAgIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAyNDEsIDI0MSwgMjQxLCAzMCwgMzEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjcsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMjc2MiwyOCArMjgwMSwyOCBAQAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM0NiwgCi0gICAgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIAotICAgIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNTYsIAorICAgIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAKKyAgICAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCiAgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIAotICAgIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAKLSAgICAzNjAsIDM2MCwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgCi0gICAgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIAotICAgIDM0NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIAotICAgIDM0OSwgMzUwLCAzNTEsIDI3LCAzNDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgCisgICAgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIAorICAgIDM3MCwgMzcwLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAKKyAgICAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgCisgICAgMzU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgCisgICAgMzU5LCAzNjAsIDM2MSwgMjcsIDM1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI2LCAyMiwgCi0gICAgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIAotICAgIDM1MCwgMzUxLCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI2LCAyMiwgCisgICAgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIAorICAgIDM2MCwgMzYxLCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0yODA1LDE4ICsyODQ0LDE4IEBACiAgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAogICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKICAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMCwgCi0gICAgMzAsIDMxLCAzNjIsIDM2MywgMzY0LCAzNjUsIDM2NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzY3LCAzNjgsIDM2OSwgCi0gICAgMzcwLCAyMCwgMzAsIDMxLCAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAzNzEsIDM3MSwgMzAsIAorICAgIDMwLCAzMSwgMzcyLCAzNzMsIDM3NCwgMzc1LCAzNzYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM3NywgMzc4LCAzNzksIAorICAgIDM4MCwgMjAsIDMwLCAzMSwgMjAsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMzgxLCAzODEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgNSwgNSwgNSwgNSwgNSwgNSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDI1LCAyNSwgMjUsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjcsIDUsIDUsIDM3MiwgMzcyLCAzNzIsIAotICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAKLSAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgCi0gICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIDM3MiwgMCwgMCwgNTUsIAorICAgIDI1LCAyNSwgMjUsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjcsIDUsIDUsIDM4MiwgMzgyLCAzODIsIAorICAgIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAKKyAgICAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgCisgICAgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAwLCAzODIsIDAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjgyOSw4ICsyODY4LDggQEAKICAgICA1NSwgNTUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzczLCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzODMsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMjg4MiwxNCArMjkyMSwxNCBAQAogICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjg5OCw3ICsyOTM3LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjkwOCw3ICsyOTQ3LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjkxNiw0NyArMjk1NSw0NyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3NCwgCi0gICAgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzODQsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgMzg0LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDM4NCwgMzg0LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTY0LDcgKzMwMDMsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTczLDE0ICszMDEyLDE0IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTg4LDggKzMwMjcsOCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAzNzQsIDM3NCwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMzg0LCAzODQsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDAyLDExICszMDQxLDExIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAxNCwxMCArMzA1MywxMCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMjUsNyArMzA2NCw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMzMsNDAgKzMwNzIsNDAgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMxMDYsMjYgKzMxNDUsMjYgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAxMDEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDM3NSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEwMiwgNiwgNiwgMzAsIDMxLCAzNzYsIDIwLCA1NSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzg1LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTAyLCA2LCA2LCAzMCwgMzEsIDM4NiwgMjAsIDU1LCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM3NywgMzc4LCAzNzksIDM4MCwgMCwgMCwgMzgxLCAzODIsIDM4MywgMzg0LCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM4NywgMzg4LCAzODksIDM5MCwgMzg3LCAwLCAzOTEsIDM5MiwgMzkzLCAKKyAgICAzOTQsIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTAxLCAxMDEsIAotICAgIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDEwMSwgMTAxLCAyMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIDUsIDU1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIAogICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIApAQCAtMzE1OCwxNCArMzE5NywxNCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAzODUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NiwgMzg3LCAzODgsIDM4OSwgMzkwLCAKLSAgICAzOTEsIDM5MiwgMzkzLCAzOTQsIDM5NSwgMzk2LCAzOTcsIDM5OCwgMzk5LCA0MDAsIDQwMSwgNDAyLCA0MDMsIDQwNCwgCi0gICAgNDA1LCA0MDYsIDQwNywgNDA4LCA0MDksIDQxMCwgNDExLCA0MTIsIDQxMywgNDE0LCA0MTUsIDQxNiwgNDE3LCA0MTgsIAotICAgIDQxOSwgNDIwLCA0MjEsIDQyMiwgNDIzLCA0MjQsIDQyNSwgNDI2LCA0MjcsIDQyOCwgNDI5LCA0MzAsIDQzMSwgNDMyLCAKLSAgICA0MzMsIDQzNCwgNDM1LCA0MzYsIDQzNywgNDM4LCA0MzksIDQ0MCwgNDQxLCA0NDIsIDQ0MywgNDQ0LCA0NDUsIDQ0NiwgCi0gICAgNDQ3LCA0NDgsIDQ0OSwgNDUwLCA0NTEsIDQ1MiwgNDUzLCA0NTQsIDQ1NSwgNDU2LCA0NTcsIDQ1OCwgNDU5LCA0NjAsIAotICAgIDQ2MSwgNDYyLCA0NjMsIDQ2NCwgNDY1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyMCwgMjAsIDM5NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDYsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk2LCAzOTcsIDM5OCwgMzk5LCA0MDAsIAorICAgIDQwMSwgNDAyLCA0MDMsIDQwNCwgNDA1LCA0MDYsIDQwNywgNDA4LCA0MDksIDQxMCwgNDExLCA0MTIsIDQxMywgNDE0LCAKKyAgICA0MTUsIDQxNiwgNDE3LCA0MTgsIDQxOSwgNDIwLCA0MjEsIDQyMiwgNDIzLCA0MjQsIDQyNSwgNDI2LCA0MjcsIDQyOCwgCisgICAgNDI5LCA0MzAsIDQzMSwgNDMyLCA0MzMsIDQzNCwgNDM1LCA0MzYsIDQzNywgNDM4LCA0MzksIDQ0MCwgNDQxLCA0NDIsIAorICAgIDQ0MywgNDQ0LCA0NDUsIDQ0NiwgNDQ3LCA0NDgsIDQ0OSwgNDUwLCA0NTEsIDQ1MiwgNDUzLCA0NTQsIDQ1NSwgNDU2LCAKKyAgICA0NTcsIDQ1OCwgNDU5LCA0NjAsIDQ2MSwgNDYyLCA0NjMsIDQ2NCwgNDY1LCA0NjYsIDQ2NywgNDY4LCA0NjksIDQ3MCwgCisgICAgNDcxLCA0NzIsIDQ3MywgNDc0LCA0NzUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1LCAxOCwgMjUsIDAsIDAsIDcsIAogICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzE4NiwxNSArMzIyNSwxNSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjA4LDkgKzMyNDcsOSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NiwgNDY3LCA0NjgsIDQ2OSwgCi0gICAgNDcwLCA0NzEsIDQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCA0NzQsIDQ3NSwgNDc2LCAKLSAgICA0NzcsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NiwgNDc3LCA0NzgsIDQ3OSwgCisgICAgNDgwLCA0ODEsIDQ4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgzLCA0ODQsIDQ4NSwgNDg2LCAKKyAgICA0ODcsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjI3LDcgKzMyNjYsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDc4LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0ODgsIDQ4OCwgNDg4LCA0ODgsIDQ4OCwgNDg4LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyNDIsMTMgKzMyODEsMTMgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDc4LCA0NzgsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0ODgsIDQ4OCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMTgsIDUsIDUsIDYsIDAsIDUsIDYsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAotICAgIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgMCwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgCisgICAgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCAwLCA0ODgsIDU1LCA0ODgsIDU1LCA0ODgsIDU1LCA0ODgsIDU1LCA0ODgsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyNjQsNyArMzMwMyw3IEBACiAgICAgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNDc5LCA0NzksIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA0ODksIDQ4OSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDAsIDUsIApAQCAtMzI5MCw3ICszMzI5LDcgQEAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0zMzIwLDI5NyArMzM1OSwzMzIgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgNDgwLCAKLSAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgCi0gICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIAotICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKLSAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCi0gICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAotICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgMCwgMCwgMCwgMCwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA1NSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNiwgMjIsIDIzLCAzNDYsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIAotICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAKLSAgICAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAotICAgIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAKLSAgICAyNSwgMjUsIDUsIDUsIDIxLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAotICAgIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDUsIAotICAgIDU1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAyNSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAKLSAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAKLSAgICAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDAsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDAsIDAsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCA1NSwgNTUsIAotICAgIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjYsIDIyLCAyMywgMzU2LCAyNywgMjcsIDI3LCAyNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgCisgICAgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDI1LCAyNSwgNSwgNSwgMjEsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCA1NSwgNSwgNTUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMTgsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAyNSwgNTUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDAsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDAsIAorICAgIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDE4LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCA1LCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDU1LCA1NSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIAorICAgIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDU1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCAxMDIsIAorICAgIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKICAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAorICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDUsIDI1LCAyNSwgNSwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNSwgMjUsIDI1LCA1LCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTM3MDAsMjE4ICszNzc0LDIyMSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIAorICAgIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCAKKyAgICA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgCisgICAgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIAorICAgIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCAKKyAgICA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIAorICAgIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAorICAgIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNDUsIDM0NSwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAwLCAwLCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTUsIDM1NSwgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIAorICAgIDM2MSwgMjcsIDI3LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNSwgNSwgNSwgNSwgNSwgNSwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDUsIDUsIDAsIDAsIDAsIDAsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNSwgNSwgNSwgNSwgNSwgNSwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDUsIDUsIDAsIDAsIDAsIDAsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA2LCA2LCA2LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAzNzQsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCisgICAgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKICAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKICAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKICAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKICAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKLSAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKQEAgLTM5MjQsMTMgKzQwMDEsMTMgQEAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAKIH07CiAKIC8qIFJldHVybnMgdGhlIG51bWVyaWMgdmFsdWUgYXMgZG91YmxlIGZvciBVbmljb2RlIGNoYXJhY3RlcnMKQEAgLTM5OTYsMTEgKzQwNzMsMTMgQEAKICAgICBjYXNlIDB4MTExMzY6CiAgICAgY2FzZSAweDExMUQwOgogICAgIGNhc2UgMHgxMTJGMDoKKyAgICBjYXNlIDB4MTE0NTA6CiAgICAgY2FzZSAweDExNEQwOgogICAgIGNhc2UgMHgxMTY1MDoKICAgICBjYXNlIDB4MTE2QzA6CiAgICAgY2FzZSAweDExNzMwOgogICAgIGNhc2UgMHgxMThFMDoKKyAgICBjYXNlIDB4MTFDNTA6CiAgICAgY2FzZSAweDE2QTYwOgogICAgIGNhc2UgMHgxNkI1MDoKICAgICBjYXNlIDB4MUQ3Q0U6CkBAIC00MDA4LDYgKzQwODcsNyBAQAogICAgIGNhc2UgMHgxRDdFMjoKICAgICBjYXNlIDB4MUQ3RUM6CiAgICAgY2FzZSAweDFEN0Y2OgorICAgIGNhc2UgMHgxRTk1MDoKICAgICBjYXNlIDB4MUYxMDA6CiAgICAgY2FzZSAweDFGMTAxOgogICAgIGNhc2UgMHgxRjEwQjoKQEAgLTQxMDgsMTEgKzQxODgsMTQgQEAKICAgICBjYXNlIDB4MTExRDE6CiAgICAgY2FzZSAweDExMUUxOgogICAgIGNhc2UgMHgxMTJGMToKKyAgICBjYXNlIDB4MTE0NTE6CiAgICAgY2FzZSAweDExNEQxOgogICAgIGNhc2UgMHgxMTY1MToKICAgICBjYXNlIDB4MTE2QzE6CiAgICAgY2FzZSAweDExNzMxOgogICAgIGNhc2UgMHgxMThFMToKKyAgICBjYXNlIDB4MTFDNTE6CisgICAgY2FzZSAweDExQzVBOgogICAgIGNhc2UgMHgxMjQxNToKICAgICBjYXNlIDB4MTI0MUU6CiAgICAgY2FzZSAweDEyNDJDOgpAQCAtNDEyOCwxNyArNDIxMSwyMiBAQAogICAgIGNhc2UgMHgxRDdFRDoKICAgICBjYXNlIDB4MUQ3Rjc6CiAgICAgY2FzZSAweDFFOEM3OgorICAgIGNhc2UgMHgxRTk1MToKICAgICBjYXNlIDB4MUYxMDI6CiAgICAgY2FzZSAweDIwOTJBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wOworICAgIGNhc2UgMHgwRDVDOgogICAgIGNhc2UgMHgyMTUyOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzEwLjA7CiAgICAgY2FzZSAweDEwOUY2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzEyLjA7CiAgICAgY2FzZSAweDA5RjQ6CiAgICAgY2FzZSAweDBCNzU6CisgICAgY2FzZSAweDBENzY6CiAgICAgY2FzZSAweEE4MzM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTYuMDsKKyAgICBjYXNlIDB4MEQ1ODoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xNjAuMDsKICAgICBjYXNlIDB4MDBCRDoKICAgICBjYXNlIDB4MEI3MzoKICAgICBjYXNlIDB4MEQ3NDoKQEAgLTQxNTIsNiArNDI0MCw4IEBACiAgICAgY2FzZSAweDEwRTdCOgogICAgIGNhc2UgMHgxMjQ2NDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8yLjA7CisgICAgY2FzZSAweDBENUI6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMjAuMDsKICAgICBjYXNlIDB4MjE1MzoKICAgICBjYXNlIDB4MTBFN0Q6CiAgICAgY2FzZSAweDEyNDVBOgpAQCAtNDE3MCw2ICs0MjYwLDkgQEAKICAgICBjYXNlIDB4MTI0NjI6CiAgICAgY2FzZSAweDEyNDYzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzQuMDsKKyAgICBjYXNlIDB4MEQ1OToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC80MC4wOworICAgIGNhc2UgMHgwRDVFOgogICAgIGNhc2UgMHgyMTU1OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzUuMDsKICAgICBjYXNlIDB4MjE1OToKQEAgLTQxNzksNiArNDI3Miw3IEBACiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNy4wOwogICAgIGNhc2UgMHgwOUY1OgogICAgIGNhc2UgMHgwQjc2OgorICAgIGNhc2UgMHgwRDc3OgogICAgIGNhc2UgMHgyMTVCOgogICAgIGNhc2UgMHhBODM0OgogICAgIGNhc2UgMHgxMjQ1RjoKQEAgLTQyMzYsNiArNDMzMCw3IEBACiAgICAgY2FzZSAweDExMUVBOgogICAgIGNhc2UgMHgxMTczQToKICAgICBjYXNlIDB4MTE4RUE6CisgICAgY2FzZSAweDExQzYzOgogICAgIGNhc2UgMHgxNkI1QjoKICAgICBjYXNlIDB4MUQzNjk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMC4wOwpAQCAtNDI2OSw2ICs0MzY0LDcgQEAKICAgICBjYXNlIDB4MTBFNzI6CiAgICAgY2FzZSAweDExMDY0OgogICAgIGNhc2UgMHgxMTFGMzoKKyAgICBjYXNlIDB4MTFDNkM6CiAgICAgY2FzZSAweDE2QjVDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwLjA7CiAgICAgY2FzZSAweDBCRjI6CkBAIC00NDcwLDExICs0NTY2LDE0IEBACiAgICAgY2FzZSAweDExMUQyOgogICAgIGNhc2UgMHgxMTFFMjoKICAgICBjYXNlIDB4MTEyRjI6CisgICAgY2FzZSAweDExNDUyOgogICAgIGNhc2UgMHgxMTREMjoKICAgICBjYXNlIDB4MTE2NTI6CiAgICAgY2FzZSAweDExNkMyOgogICAgIGNhc2UgMHgxMTczMjoKICAgICBjYXNlIDB4MTE4RTI6CisgICAgY2FzZSAweDExQzUyOgorICAgIGNhc2UgMHgxMUM1QjoKICAgICBjYXNlIDB4MTI0MDA6CiAgICAgY2FzZSAweDEyNDE2OgogICAgIGNhc2UgMHgxMjQxRjoKQEAgLTQ0OTQsNiArNDU5Myw3IEBACiAgICAgY2FzZSAweDFEN0VFOgogICAgIGNhc2UgMHgxRDdGODoKICAgICBjYXNlIDB4MUU4Qzg6CisgICAgY2FzZSAweDFFOTUyOgogICAgIGNhc2UgMHgxRjEwMzoKICAgICBjYXNlIDB4MjIzOTA6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyLjA7CkBAIC00NTM3LDYgKzQ2MzcsNyBAQAogICAgIGNhc2UgMHgxMTFFQjoKICAgICBjYXNlIDB4MTE3M0I6CiAgICAgY2FzZSAweDExOEVCOgorICAgIGNhc2UgMHgxMUM2NDoKICAgICBjYXNlIDB4MUQzNkE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMC4wOwogICAgIGNhc2UgMHgxMDExQToKQEAgLTQ2NTcsMTEgKzQ3NTgsMTQgQEAKICAgICBjYXNlIDB4MTExRDM6CiAgICAgY2FzZSAweDExMUUzOgogICAgIGNhc2UgMHgxMTJGMzoKKyAgICBjYXNlIDB4MTE0NTM6CiAgICAgY2FzZSAweDExNEQzOgogICAgIGNhc2UgMHgxMTY1MzoKICAgICBjYXNlIDB4MTE2QzM6CiAgICAgY2FzZSAweDExNzMzOgogICAgIGNhc2UgMHgxMThFMzoKKyAgICBjYXNlIDB4MTFDNTM6CisgICAgY2FzZSAweDExQzVDOgogICAgIGNhc2UgMHgxMjQwMToKICAgICBjYXNlIDB4MTI0MDg6CiAgICAgY2FzZSAweDEyNDE3OgpAQCAtNDY4Niw2ICs0NzkwLDcgQEAKICAgICBjYXNlIDB4MUQ3RUY6CiAgICAgY2FzZSAweDFEN0Y5OgogICAgIGNhc2UgMHgxRThDOToKKyAgICBjYXNlIDB4MUU5NTM6CiAgICAgY2FzZSAweDFGMTA0OgogICAgIGNhc2UgMHgyMEFGRDoKICAgICBjYXNlIDB4MjBCMTk6CkBAIC00Njk2LDEwICs0ODAxLDEzIEBACiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMTIuMDsKICAgICBjYXNlIDB4MDlGNjoKICAgICBjYXNlIDB4MEI3NzoKKyAgICBjYXNlIDB4MEQ3ODoKICAgICBjYXNlIDB4QTgzNToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8xNi4wOwogICAgIGNhc2UgMHgwRjJCOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzIuMDsKKyAgICBjYXNlIDB4MEQ1RDoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8yMC4wOwogICAgIGNhc2UgMHgwMEJFOgogICAgIGNhc2UgMHgwOUY4OgogICAgIGNhc2UgMHgwQjc0OgpAQCAtNDcxMSw2ICs0ODE5LDggQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC81LjA7CiAgICAgY2FzZSAweDIxNUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvOC4wOworICAgIGNhc2UgMHgwRDVBOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzgwLjA7CiAgICAgY2FzZSAweDEzNzQ6CiAgICAgY2FzZSAweDMwM0E6CiAgICAgY2FzZSAweDMyNEE6CkBAIC00NzI0LDYgKzQ4MzQsNyBAQAogICAgIGNhc2UgMHgxMTA1RDoKICAgICBjYXNlIDB4MTExRUM6CiAgICAgY2FzZSAweDExOEVDOgorICAgIGNhc2UgMHgxMUM2NToKICAgICBjYXNlIDB4MUQzNkI6CiAgICAgY2FzZSAweDIwOTgzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMzAuMDsKQEAgLTQ4MzYsMTEgKzQ5NDcsMTQgQEAKICAgICBjYXNlIDB4MTExRDQ6CiAgICAgY2FzZSAweDExMUU0OgogICAgIGNhc2UgMHgxMTJGNDoKKyAgICBjYXNlIDB4MTE0NTQ6CiAgICAgY2FzZSAweDExNEQ0OgogICAgIGNhc2UgMHgxMTY1NDoKICAgICBjYXNlIDB4MTE2QzQ6CiAgICAgY2FzZSAweDExNzM0OgogICAgIGNhc2UgMHgxMThFNDoKKyAgICBjYXNlIDB4MTFDNTQ6CisgICAgY2FzZSAweDExQzVEOgogICAgIGNhc2UgMHgxMjQwMjoKICAgICBjYXNlIDB4MTI0MDk6CiAgICAgY2FzZSAweDEyNDBGOgpAQCAtNDg2Niw2ICs0OTgwLDcgQEAKICAgICBjYXNlIDB4MUQ3RjA6CiAgICAgY2FzZSAweDFEN0ZBOgogICAgIGNhc2UgMHgxRThDQToKKyAgICBjYXNlIDB4MUU5NTQ6CiAgICAgY2FzZSAweDFGMTA1OgogICAgIGNhc2UgMHgyMDA2NDoKICAgICBjYXNlIDB4MjAwRTI6CkBAIC00ODg2LDYgKzUwMDEsNyBAQAogICAgIGNhc2UgMHgxMTA1RToKICAgICBjYXNlIDB4MTExRUQ6CiAgICAgY2FzZSAweDExOEVEOgorICAgIGNhc2UgMHgxMUM2NjoKICAgICBjYXNlIDB4MTI0Njc6CiAgICAgY2FzZSAweDFEMzZDOgogICAgIGNhc2UgMHgyMDk4QzoKQEAgLTUwMDUsMTEgKzUxMjEsMTQgQEAKICAgICBjYXNlIDB4MTExRDU6CiAgICAgY2FzZSAweDExMUU1OgogICAgIGNhc2UgMHgxMTJGNToKKyAgICBjYXNlIDB4MTE0NTU6CiAgICAgY2FzZSAweDExNEQ1OgogICAgIGNhc2UgMHgxMTY1NToKICAgICBjYXNlIDB4MTE2QzU6CiAgICAgY2FzZSAweDExNzM1OgogICAgIGNhc2UgMHgxMThFNToKKyAgICBjYXNlIDB4MTFDNTU6CisgICAgY2FzZSAweDExQzVFOgogICAgIGNhc2UgMHgxMjQwMzoKICAgICBjYXNlIDB4MTI0MEE6CiAgICAgY2FzZSAweDEyNDEwOgpAQCAtNTAzMSw2ICs1MTUwLDcgQEAKICAgICBjYXNlIDB4MUQ3RjE6CiAgICAgY2FzZSAweDFEN0ZCOgogICAgIGNhc2UgMHgxRThDQjoKKyAgICBjYXNlIDB4MUU5NTU6CiAgICAgY2FzZSAweDFGMTA2OgogICAgIGNhc2UgMHgyMDEyMToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDUuMDsKQEAgLTUwNjcsNiArNTE4Nyw3IEBACiAgICAgY2FzZSAweDExMDVGOgogICAgIGNhc2UgMHgxMTFFRToKICAgICBjYXNlIDB4MTE4RUU6CisgICAgY2FzZSAweDExQzY3OgogICAgIGNhc2UgMHgxMjQ2ODoKICAgICBjYXNlIDB4MUQzNkQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1MC4wOwpAQCAtNTE3MiwxMSArNTI5MywxNCBAQAogICAgIGNhc2UgMHgxMTFENjoKICAgICBjYXNlIDB4MTExRTY6CiAgICAgY2FzZSAweDExMkY2OgorICAgIGNhc2UgMHgxMTQ1NjoKICAgICBjYXNlIDB4MTE0RDY6CiAgICAgY2FzZSAweDExNjU2OgogICAgIGNhc2UgMHgxMTZDNjoKICAgICBjYXNlIDB4MTE3MzY6CiAgICAgY2FzZSAweDExOEU2OgorICAgIGNhc2UgMHgxMUM1NjoKKyAgICBjYXNlIDB4MTFDNUY6CiAgICAgY2FzZSAweDEyNDA0OgogICAgIGNhc2UgMHgxMjQwQjoKICAgICBjYXNlIDB4MTI0MTE6CkBAIC01MTk0LDYgKzUzMTgsNyBAQAogICAgIGNhc2UgMHgxRDdGMjoKICAgICBjYXNlIDB4MUQ3RkM6CiAgICAgY2FzZSAweDFFOENDOgorICAgIGNhc2UgMHgxRTk1NjoKICAgICBjYXNlIDB4MUYxMDc6CiAgICAgY2FzZSAweDIwQUVBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNi4wOwpAQCAtNTIwOCw2ICs1MzMzLDcgQEAKICAgICBjYXNlIDB4MTEwNjA6CiAgICAgY2FzZSAweDExMUVGOgogICAgIGNhc2UgMHgxMThFRjoKKyAgICBjYXNlIDB4MTFDNjg6CiAgICAgY2FzZSAweDFEMzZFOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNjAuMDsKICAgICBjYXNlIDB4MTAxMUU6CkBAIC01MjkzLDExICs1NDE5LDE0IEBACiAgICAgY2FzZSAweDExMUQ3OgogICAgIGNhc2UgMHgxMTFFNzoKICAgICBjYXNlIDB4MTEyRjc6CisgICAgY2FzZSAweDExNDU3OgogICAgIGNhc2UgMHgxMTRENzoKICAgICBjYXNlIDB4MTE2NTc6CiAgICAgY2FzZSAweDExNkM3OgogICAgIGNhc2UgMHgxMTczNzoKICAgICBjYXNlIDB4MTE4RTc6CisgICAgY2FzZSAweDExQzU3OgorICAgIGNhc2UgMHgxMUM2MDoKICAgICBjYXNlIDB4MTI0MDU6CiAgICAgY2FzZSAweDEyNDBDOgogICAgIGNhc2UgMHgxMjQxMjoKQEAgLTUzMTYsNiArNTQ0NSw3IEBACiAgICAgY2FzZSAweDFEN0YzOgogICAgIGNhc2UgMHgxRDdGRDoKICAgICBjYXNlIDB4MUU4Q0Q6CisgICAgY2FzZSAweDFFOTU3OgogICAgIGNhc2UgMHgxRjEwODoKICAgICBjYXNlIDB4MjAwMDE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3LjA7CkBAIC01MzM0LDYgKzU0NjQsNyBAQAogICAgIGNhc2UgMHgxMTA2MToKICAgICBjYXNlIDB4MTExRjA6CiAgICAgY2FzZSAweDExOEYwOgorICAgIGNhc2UgMHgxMUM2OToKICAgICBjYXNlIDB4MUQzNkY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3MC4wOwogICAgIGNhc2UgMHgxMDExRjoKQEAgLTU0MTcsMTEgKzU1NDgsMTQgQEAKICAgICBjYXNlIDB4MTExRDg6CiAgICAgY2FzZSAweDExMUU4OgogICAgIGNhc2UgMHgxMTJGODoKKyAgICBjYXNlIDB4MTE0NTg6CiAgICAgY2FzZSAweDExNEQ4OgogICAgIGNhc2UgMHgxMTY1ODoKICAgICBjYXNlIDB4MTE2Qzg6CiAgICAgY2FzZSAweDExNzM4OgogICAgIGNhc2UgMHgxMThFODoKKyAgICBjYXNlIDB4MTFDNTg6CisgICAgY2FzZSAweDExQzYxOgogICAgIGNhc2UgMHgxMjQwNjoKICAgICBjYXNlIDB4MTI0MEQ6CiAgICAgY2FzZSAweDEyNDEzOgpAQCAtNTQzOSw2ICs1NTczLDcgQEAKICAgICBjYXNlIDB4MUQ3RjQ6CiAgICAgY2FzZSAweDFEN0ZFOgogICAgIGNhc2UgMHgxRThDRToKKyAgICBjYXNlIDB4MUU5NTg6CiAgICAgY2FzZSAweDFGMTA5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOC4wOwogICAgIGNhc2UgMHgxMDlGRDoKQEAgLTU0NTEsNiArNTU4Niw3IEBACiAgICAgY2FzZSAweDExMDYyOgogICAgIGNhc2UgMHgxMTFGMToKICAgICBjYXNlIDB4MTE4RjE6CisgICAgY2FzZSAweDExQzZBOgogICAgIGNhc2UgMHgxRDM3MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDgwLjA7CiAgICAgY2FzZSAweDEwMTIwOgpAQCAtNTUzNSwxMSArNTY3MSwxNCBAQAogICAgIGNhc2UgMHgxMTFEOToKICAgICBjYXNlIDB4MTExRTk6CiAgICAgY2FzZSAweDExMkY5OgorICAgIGNhc2UgMHgxMTQ1OToKICAgICBjYXNlIDB4MTE0RDk6CiAgICAgY2FzZSAweDExNjU5OgogICAgIGNhc2UgMHgxMTZDOToKICAgICBjYXNlIDB4MTE3Mzk6CiAgICAgY2FzZSAweDExOEU5OgorICAgIGNhc2UgMHgxMUM1OToKKyAgICBjYXNlIDB4MTFDNjI6CiAgICAgY2FzZSAweDEyNDA3OgogICAgIGNhc2UgMHgxMjQwRToKICAgICBjYXNlIDB4MTI0MTQ6CkBAIC01NTU5LDYgKzU2OTgsNyBAQAogICAgIGNhc2UgMHgxRDdGNToKICAgICBjYXNlIDB4MUQ3RkY6CiAgICAgY2FzZSAweDFFOENGOgorICAgIGNhc2UgMHgxRTk1OToKICAgICBjYXNlIDB4MUYxMEE6CiAgICAgY2FzZSAweDJGODkwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOS4wOwpAQCAtNTU3NCw2ICs1NzE0LDcgQEAKICAgICBjYXNlIDB4MTEwNjM6CiAgICAgY2FzZSAweDExMUYyOgogICAgIGNhc2UgMHgxMThGMjoKKyAgICBjYXNlIDB4MTFDNkI6CiAgICAgY2FzZSAweDFEMzcxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAuMDsKICAgICBjYXNlIDB4MTAxMjE6CmRpZmYgLS1naXQgYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCmluZGV4IDdlNmYzNjQuLmFiNmIyMzUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCisrKyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCkBAIC0yNjUsNyArMjY1LDcgQEAKIH0KIAogc3RhdGljIGludAotcGFyc2Vfd2Vha3JlZl9pbml0X2FyZ3MoY2hhciAqZnVuY25hbWUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLAorcGFyc2Vfd2Vha3JlZl9pbml0X2FyZ3MoY29uc3QgY2hhciAqZnVuY25hbWUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipvYnAsIFB5T2JqZWN0ICoqY2FsbGJhY2twKQogewogICAgIHJldHVybiBQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCBmdW5jbmFtZSwgMSwgMiwgb2JwLCBjYWxsYmFja3ApOwpAQCAtNDUzLDcgKzQ1Myw3IEBACiAgICAgbWV0aG9kKFB5T2JqZWN0ICpwcm94eSkgeyBcCiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzcGVjaWFsKTsgXAogICAgICAgICAgICAgVU5XUkFQKHByb3h5KTsgXAotICAgICAgICAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHByb3h5LCAmUHlJZF8jI3NwZWNpYWwsICIiKTsgXAorICAgICAgICAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHByb3h5LCAmUHlJZF8jI3NwZWNpYWwsIE5VTEwpOyBcCiAgICAgICAgIH0KIAogCmRpZmYgLS1naXQgYS9QQy9fbXNpLmMgYi9QQy9fbXNpLmMKaW5kZXggOWU3ZTM2ZC4uNzg5YjA0ZiAxMDA2NDQKLS0tIGEvUEMvX21zaS5jCisrKyBiL1BDL19tc2kuYwpAQCAtMTA0NiwxMiArMTA0NiwxMiBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEVESVJFQ1QiLCAoaW50KU1TSURCT1BFTl9DUkVBVEVESVJFQ1QpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFIiwgKGludClNU0lEQk9QRU5fQ1JFQVRFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0RJUkVDVCIsIChpbnQpTVNJREJPUEVOX0RJUkVDVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9SRUFET05MWSIsIChpbnQpTVNJREJPUEVOX1JFQURPTkxZKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1RSQU5TQUNUIiwgKGludClNU0lEQk9QRU5fVFJBTlNBQ1QpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUEFUQ0hGSUxFIiwgKGludClNU0lEQk9QRU5fUEFUQ0hGSUxFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURURJUkVDVCIsIChsb25nKU1TSURCT1BFTl9DUkVBVEVESVJFQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFIiwgKGxvbmcpTVNJREJPUEVOX0NSRUFURSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9ESVJFQ1QiLCAobG9uZylNU0lEQk9QRU5fRElSRUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1JFQURPTkxZIiwgKGxvbmcpTVNJREJPUEVOX1JFQURPTkxZKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1RSQU5TQUNUIiwgKGxvbmcpTVNJREJPUEVOX1RSQU5TQUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1BBVENIRklMRSIsIChsb25nKU1TSURCT1BFTl9QQVRDSEZJTEUpOwogCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNJQ09MSU5GT19OQU1FUyk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNJQ09MSU5GT19UWVBFUyk7CmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCmluZGV4IDYwYmVlMzAuLmZkOTc3ZjUgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCkBAIC03MTgsNyArNzE4LDcgQEAKICAqIDEgaWYgdGhlIFB5dGhvbi1kbGwgZG9lcyBub3QgZXhwb3J0IHRoZSBmdW5jdGlvbnMgd2UgbmVlZAogICogMiBpZiBubyBpbnN0YWxsLXNjcmlwdCBpcyBzcGVjaWZpZWQgaW4gcGF0aG5hbWUKICAqIDMgaWYgdGhlIGluc3RhbGwtc2NyaXB0IGZpbGUgY291bGQgbm90IGJlIG9wZW5lZAotICogdGhlIHJldHVybiB2YWx1ZSBvZiBQeVJ1bl9TaW1wbGVTdHJpbmcoKSBvdGhlcndpc2UsCisgKiB0aGUgcmV0dXJuIHZhbHVlIG9mIFB5UnVuX1NpbXBsZVN0cmluZygpIG9yIFB5X0ZpbmFsaXplRXgoKSBvdGhlcndpc2UsCiAgKiB3aGljaCBpcyAwIGlmIGV2ZXJ5dGhpbmcgaXMgb2ssIC0xIGlmIGFuIGV4Y2VwdGlvbiBoYWQgb2NjdXJyZWQKICAqIGluIHRoZSBpbnN0YWxsLXNjcmlwdC4KICAqLwpAQCAtNzMxLDcgKzczMSw3IEBACiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfSW5pdGlhbGl6ZSwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5U3lzX1NldEFyZ3YsIChpbnQsIHdjaGFyX3QgKiopKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5UnVuX1NpbXBsZVN0cmluZywgKGNoYXIgKikpOwotICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0ZpbmFsaXplLCAodm9pZCkpOworICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlfRmluYWxpemVFeCwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeV9CdWlsZFZhbHVlLCAoY2hhciAqLCAuLi4pKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeUNGdW5jdGlvbl9OZXcsCiAgICAgICAgICAgICAgKFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICopKTsKQEAgLTczOSw3ICs3MzksNyBAQAogICAgIERFQ0xQUk9DKGhQeXRob24sIFB5T2JqZWN0ICosIFB5RXJyX0Zvcm1hdCwgKFB5T2JqZWN0ICosIGNoYXIgKikpOwogCiAgICAgaWYgKCFQeV9Jbml0aWFsaXplIHx8ICFQeVN5c19TZXRBcmd2Ci0gICAgICAgIHx8ICFQeVJ1bl9TaW1wbGVTdHJpbmcgfHwgIVB5X0ZpbmFsaXplKQorICAgICAgICB8fCAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeV9GaW5hbGl6ZUV4KQogICAgICAgICByZXR1cm4gMTsKIAogICAgIGlmICghUHlfQnVpbGRWYWx1ZSB8fCAhUHlBcmdfUGFyc2VUdXBsZSB8fCAhUHlFcnJfRm9ybWF0KQpAQCAtNzg2LDcgKzc4Niw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CiAKICAgICBjbG9zZShmaCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTg0OCwxMSArODUwLDExIEBACiAgICAgaW50IHJjOwogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0luaXRpYWxpemUsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfU2V0UHJvZ3JhbU5hbWUsICh3Y2hhcl90ICopKTsKLSAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9GaW5hbGl6ZSwgKHZvaWQpKTsKKyAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5X0ZpbmFsaXplRXgsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVJ1bl9TaW1wbGVTdHJpbmcsIChjaGFyICopKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeUVycl9QcmludCwgKHZvaWQpKTsKIAotICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlfU2V0UHJvZ3JhbU5hbWUgfHwgIVB5X0ZpbmFsaXplIHx8CisgICAgaWYgKCFQeV9Jbml0aWFsaXplIHx8ICFQeV9TZXRQcm9ncmFtTmFtZSB8fCAhUHlfRmluYWxpemVFeCB8fAogICAgICAgICAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeUVycl9QcmludCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC04NjIsNyArODY0LDkgQEAKICAgICByYyA9IFB5UnVuX1NpbXBsZVN0cmluZyhzY3JpcHQpOwogICAgIGlmIChyYykKICAgICAgICAgUHlFcnJfUHJpbnQoKTsKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHJjID0gLTE7CisgICAgfQogICAgIHJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmggYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaAppbmRleCBlN2E3MmM0Li42OTM1Y2FkIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaAorKysgYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaApAQCAtNTEsOCArNTEsOSBAQAogICAgIGxvbmcgbmJ5dGVzOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWw6bG9ja2luZyIsCi0gICAgICAgICZmZCwgJm1vZGUsICZuYnl0ZXMpKQorICAgICAgICAmZmQsICZtb2RlLCAmbmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9sb2NraW5nX2ltcGwobW9kdWxlLCBmZCwgbW9kZSwgbmJ5dGVzKTsKIAogZXhpdDoKQEAgLTg1LDExICs4NiwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0bW9kZSIsCi0gICAgICAgICZmZCwgJmZsYWdzKSkKKyAgICAgICAgJmZkLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9zZXRtb2RlX2ltcGwobW9kdWxlLCBmZCwgZmxhZ3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMTAsMjIgKzExMywyNCBAQAogICAgIHsib3Blbl9vc2ZoYW5kbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X29wZW5fb3NmaGFuZGxlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9vcGVuX29zZmhhbmRsZV9fZG9jX199LAogCiBzdGF0aWMgbG9uZwotbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpOworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogbXN2Y3J0X29wZW5fb3NmaGFuZGxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnRwdHJfdCBoYW5kbGU7CiAgICAgaW50IGZsYWdzOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIl9QeV9QQVJTRV9JTlRQVFIiaTpvcGVuX29zZmhhbmRsZSIsCi0gICAgICAgICZoYW5kbGUsICZmbGFncykpCisgICAgICAgICZoYW5kbGUsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGZsYWdzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTQzLDcgKzE0OCw3IEBACiAjZGVmaW5lIE1TVkNSVF9HRVRfT1NGSEFORExFX01FVEhPRERFRiAgICBcCiAgICAgeyJnZXRfb3NmaGFuZGxlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXRfb3NmaGFuZGxlLCBNRVRIX08sIG1zdmNydF9nZXRfb3NmaGFuZGxlX19kb2NfX30sCiAKLXN0YXRpYyBQeV9pbnRwdHJfdAorc3RhdGljIGludHB0cl90CiBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNTEsMTMgKzE1NiwxNSBAQAogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKLSAgICBQeV9pbnRwdHJfdCBfcmV0dXJuX3ZhbHVlOworICAgIGludHB0cl90IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9vc2ZoYW5kbGUiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVm9pZFB0cigodm9pZCAqKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTgzLDggKzE5MCw5IEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9rYmhpdF9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMxMSw4ICszMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNoYXIgY2hhcl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzpwdXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6cHV0Y2giLCAmY2hhcl92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0Y2hfaW1wbChtb2R1bGUsIGNoYXJfdmFsdWUpOwogCiBleGl0OgpAQCAtMzM3LDggKzM0Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHVuaWNvZGVfY2hhcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpwdXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6cHV0d2NoIiwgJnVuaWNvZGVfY2hhcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0d2NoX2ltcGwobW9kdWxlLCB1bmljb2RlX2NoYXIpOwogCiBleGl0OgpAQCAtMzY3LDggKzM3Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY2hhciBjaGFyX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTMsOCArNDA0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdW5pY29kZV9jaGFyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CiAKIGV4aXQ6CkBAIC00MjYsMTEgKzQzOCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Q3J0U2V0UmVwb3J0RmlsZSIsCi0gICAgICAgICZ0eXBlLCAmZmlsZSkpCisgICAgICAgICZ0eXBlLCAmZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X0NydFNldFJlcG9ydEZpbGVfaW1wbChtb2R1bGUsIHR5cGUsIGZpbGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NjQsMTEgKzQ3OCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Q3J0U2V0UmVwb3J0TW9kZSIsCi0gICAgICAgICZ0eXBlLCAmbW9kZSkpCisgICAgICAgICZ0eXBlLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X0NydFNldFJlcG9ydE1vZGVfaW1wbChtb2R1bGUsIHR5cGUsIG1vZGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MDAsMTEgKzUxNiwxMyBAQAogICAgIGludCBtb2RlOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRfZXJyb3JfbW9kZSIsICZtb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0X2Vycm9yX21vZGUiLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3NldF9lcnJvcl9tb2RlX2ltcGwobW9kdWxlLCBtb2RlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTMxLDggKzU0OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IG1vZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6U2V0RXJyb3JNb2RlIiwgJm1vZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpTZXRFcnJvck1vZGUiLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfU2V0RXJyb3JNb2RlX2ltcGwobW9kdWxlLCBtb2RlKTsKIAogZXhpdDoKQEAgLTU1MCw0ICs1NjksNCBAQAogI2lmbmRlZiBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTc5NGM1MjBkNmFlODg3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZTA0ZTJiNTBlZWY4YjYzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy93aW5yZWcuYy5oIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKaW5kZXggZjZhZTJjMC4uYzdkNWI5ZSAxMDA2NDQKLS0tIGEvUEMvY2xpbmljL3dpbnJlZy5jLmgKKysrIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKQEAgLTc3LDI0ICs3NywyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgV0lOUkVHX0hLRVlUWVBFX19fRVhJVF9fX01FVEhPRERFRiAgICBcCi0gICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbil3aW5yZWdfSEtFWVR5cGVfX19leGl0X18sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19fX2RvY19ffSwKKyAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXywgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGNfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfSEtFWVR5cGVfX19leGl0X18oUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZXhjX3R5cGUiLCAiZXhjX3ZhbHVlIiwgInRyYWNlYmFjayIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImV4Y190eXBlIiwgImV4Y192YWx1ZSIsICJ0cmFjZWJhY2siLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPT086X19leGl0X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpleGNfdHlwZTsKICAgICBQeU9iamVjdCAqZXhjX3ZhbHVlOwogICAgIFB5T2JqZWN0ICp0cmFjZWJhY2s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT086X19leGl0X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOwogCiBleGl0OgpAQCAtMTQ3LDExICsxNDksMTMgQEAKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpPJjpDb25uZWN0UmVnaXN0cnkiLAotICAgICAgICAmY29tcHV0ZXJfbmFtZSwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgJmNvbXB1dGVyX25hbWUsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9pbXBsKG1vZHVsZSwgY29tcHV0ZXJfbmFtZSwga2V5KTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xOTIsMTEgKzE5NiwxMyBAQAogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkNyZWF0ZUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ3JlYXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIyOSwyOSArMjM1LDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX0NSRUFURUtFWUVYX01FVEhPRERFRiAgICBcCi0gICAgeyJDcmVhdGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfQ3JlYXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfQ3JlYXRlS2V5RXhfX2RvY19ffSwKKyAgICB7IkNyZWF0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0NyZWF0ZUtleUV4X19kb2NfX30sCiAKIHN0YXRpYyBIS0VZCiB3aW5yZWdfQ3JlYXRlS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfQ3JlYXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfQ3JlYXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpDcmVhdGVLZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV1JJVEU7CiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOkNyZWF0ZUtleUV4IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yOTAsOCArMjk5LDkgQEAKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnU6RGVsZXRlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKIAogZXhpdDoKQEAgLTMyNCwyNSArMzM0LDI3IEBACiAiT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX0RFTEVURUtFWUVYX01FVEhPRERFRiAgICBcCi0gICAgeyJEZWxldGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGVsZXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19ffSwKKyAgICB7IkRlbGV0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVLZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0RlbGV0ZUtleUV4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJFR1NBTSBhY2Nlc3MsIGludCByZXNlcnZlZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfRGVsZXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfRGVsZXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mdXxpaTpEZWxldGVLZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1dPVzY0XzY0S0VZOwogICAgIGludCByZXNlcnZlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnV8aWk6RGVsZXRlS2V5RXgiLCBfa2V5d29yZHMsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZhY2Nlc3MsICZyZXNlcnZlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZhY2Nlc3MsICZyZXNlcnZlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgYWNjZXNzLCByZXNlcnZlZCk7CiAKIGV4aXQ6CkBAIC0zNzQsOCArMzg2LDkgQEAKICAgICBQeV9VTklDT0RFICp2YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkRlbGV0ZVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDExLDggKzQyNCw5IEBACiAgICAgaW50IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VudW1LZXlfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOwogCiBleGl0OgpAQCAtNDU3LDggKzQ3MSw5IEBACiAgICAgaW50IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW51bVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIGluZGV4KTsKIAogZXhpdDoKQEAgLTQ4Myw4ICs0OTgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X1VOSUNPREUgKnN0cmluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInU6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgpAQCAtNTIyLDggKzUzOCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkZsdXNoS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkZsdXNoS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19GbHVzaEtleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTU3NCw4ICs1OTEsOSBAQAogICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1dTpMb2FkS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmZpbGVfbmFtZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZmaWxlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0xvYWRLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgZmlsZV9uYW1lKTsKIAogZXhpdDoKQEAgLTYwMiwyOSArNjIwLDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX09QRU5LRVlfTUVUSE9EREVGICAgIFwKLSAgICB7Ik9wZW5LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleV9fZG9jX199LAorICAgIHsiT3BlbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleSwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX09wZW5LZXlfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19PcGVuS2V5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCiAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfT3BlbktleShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19PcGVuS2V5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfUkVBRDsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02NTEsMjkgKzY3MiwzMiBAQAogIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiAjZGVmaW5lIFdJTlJFR19PUEVOS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7Ik9wZW5LZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleUV4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX09wZW5LZXlFeF9fZG9jX199LAorICAgIHsiT3BlbktleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5RXgsIE1FVEhfRkFTVENBTEwsIHdpbnJlZ19PcGVuS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19PcGVuS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX09wZW5LZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19PcGVuS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpPcGVuS2V5RXgiLCBfa2V5d29yZHMsIDB9OwogICAgIEhLRVkga2V5OwogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAgICAgaW50IHJlc2VydmVkID0gMDsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1JFQUQ7CiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOk9wZW5LZXlFeCIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTcwNyw4ICs3MzEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeUluZm9LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlJbmZvS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeUluZm9LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC03NDksOCArNzc0LDkgQEAKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6UXVlcnlWYWx1ZSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwogCiBleGl0OgpAQCAtNzg3LDggKzgxMyw5IEBACiAgICAgUHlfVU5JQ09ERSAqbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOlF1ZXJ5VmFsdWVFeCIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJm5hbWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlRXhfaW1wbChtb2R1bGUsIGtleSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC04MzAsOCArODU3LDkgQEAKICAgICBQeV9VTklDT0RFICpmaWxlX25hbWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdTpTYXZlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmZmlsZV9uYW1lKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmZmlsZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TYXZlS2V5X2ltcGwobW9kdWxlLCBrZXksIGZpbGVfbmFtZSk7CiAKIGV4aXQ6CkBAIC04ODMsOCArOTExLDkgQEAKICAgICBQeV9zc2l6ZV9jbGVhbl90IHZhbHVlX2xlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaa3UjOlNldFZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnR5cGUsICZ2YWx1ZSwgJnZhbHVlX2xlbmd0aCkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZ0eXBlLCAmdmFsdWUsICZ2YWx1ZV9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NldFZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHR5cGUsIHZhbHVlLCB2YWx1ZV9sZW5ndGgpOwogCiBleGl0OgpAQCAtOTA3LDcgKzkzNiw3IEBACiAiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEsIG9uZSBvZjpcbiIKICIgICAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS5cbiIKICIgICAgUkVHX0RXT1JEIC0tIEEgMzItYml0IG51bWJlci5cbiIKLSIgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LlxuIgorIiAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gUkVHX0RXT1JEXG4iCiAiICAgIFJFR19EV09SRF9CSUdfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBiaWctZW5kaWFuIGZvcm1hdC5cbiIKICIgICAgUkVHX0VYUEFORF9TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdGhhdCBjb250YWlucyB1bmV4cGFuZGVkXG4iCiAiICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBleGFtcGxlLFxuIgpAQCAtOTE3LDYgKzk0Niw4IEBACiAiICAgICAgICAgICAgICAgICAgICBieSB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzXG4iCiAiICAgICAgICAgICAgICAgICAgICB0aGlzIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuXG4iCiAiICAgIFJFR19OT05FIC0tIE5vIGRlZmluZWQgdmFsdWUgdHlwZS5cbiIKKyIgICAgUkVHX1FXT1JEIC0tIEEgNjQtYml0IG51bWJlci5cbiIKKyIgICAgUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSA2NC1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIFJFR19RV09SRC5cbiIKICIgICAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuXG4iCiAiICAgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuXG4iCiAiICB2YWx1ZVxuIgpAQCAtOTUwLDggKzk4MSw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlpPa086U2V0VmFsdWVFeCIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtOTg1LDggKzEwMTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC0xMDE4LDggKzEwNTEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpFbmFibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC0xMDQ5LDExICsxMDgzLDEyIEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5UmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5UmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdiODk0MGEyM2Y2MDVkZGMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE2ZGQwNmJlNmUxNGI4NmUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL3dpbnNvdW5kLmMuaCBiL1BDL2NsaW5pYy93aW5zb3VuZC5jLmgKaW5kZXggYjAwYjQ0Mi4uNTJkMjViMiAxMDA2NDQKLS0tIGEvUEMvY2xpbmljL3dpbnNvdW5kLmMuaAorKysgYi9QQy9jbGluaWMvd2luc291bmQuYy5oCkBAIC0zLDcgKzMsNyBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBQeURvY19TVFJWQVIod2luc291bmRfUGxheVNvdW5kX19kb2NfXywKLSJQbGF5U291bmQoJG1vZHVsZSwgc291bmQsIGZsYWdzLCAvKVxuIgorIlBsYXlTb3VuZCgkbW9kdWxlLCAvLCBzb3VuZCwgZmxhZ3MpXG4iCiAiLS1cbiIKICJcbiIKICJBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIFBsYXlTb3VuZCBBUEkuXG4iCkBAIC0xNCwyMSArMTQsMjQgQEAKICIgICAgRmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIuICBTZWUgbW9kdWxlIGRvY3VtZW50YXRpb24uIik7CiAKICNkZWZpbmUgV0lOU09VTkRfUExBWVNPVU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJQbGF5U291bmQiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfUGxheVNvdW5kLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX199LAorICAgIHsiUGxheVNvdW5kIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX1BsYXlTb3VuZCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfUGxheVNvdW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKTsKK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VuZCwgaW50IGZsYWdzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX1BsYXlTb3VuZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX1BsYXlTb3VuZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKnNvdW5kOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNvdW5kIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT2k6UGxheVNvdW5kIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqc291bmQ7CiAgICAgaW50IGZsYWdzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaaTpQbGF5U291bmQiLAotICAgICAgICAmc291bmQsICZmbGFncykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzb3VuZCwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKG1vZHVsZSwgc291bmQsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTM2LDcgKzM5LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHdpbnNvdW5kX0JlZXBfX2RvY19fLAotIkJlZXAoJG1vZHVsZSwgZnJlcXVlbmN5LCBkdXJhdGlvbiwgLylcbiIKKyJCZWVwKCRtb2R1bGUsIC8sIGZyZXF1ZW5jeSwgZHVyYXRpb24pXG4iCiAiLS1cbiIKICJcbiIKICJBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLlxuIgpAQCAtNDgsMjEgKzUxLDI0IEBACiAiICAgIEhvdyBsb25nIHRoZSBzb3VuZCBzaG91bGQgcGxheSwgaW4gbWlsbGlzZWNvbmRzLiIpOwogCiAjZGVmaW5lIFdJTlNPVU5EX0JFRVBfTUVUSE9EREVGICAgIFwKLSAgICB7IkJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9CZWVwX19kb2NfX30sCisgICAgeyJCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX0JlZXAsIE1FVEhfRkFTVENBTEwsIHdpbnNvdW5kX0JlZXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnNvdW5kX0JlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZnJlcXVlbmN5LCBpbnQgZHVyYXRpb24pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX0JlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmcmVxdWVuY3kiLCAiZHVyYXRpb24iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpCZWVwIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZnJlcXVlbmN5OwogICAgIGludCBkdXJhdGlvbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6QmVlcCIsCi0gICAgICAgICZmcmVxdWVuY3ksICZkdXJhdGlvbikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmcmVxdWVuY3ksICZkdXJhdGlvbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9CZWVwX2ltcGwobW9kdWxlLCBmcmVxdWVuY3ksIGR1cmF0aW9uKTsKIAogZXhpdDoKQEAgLTcwLDcgKzc2LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfXywKLSJNZXNzYWdlQmVlcCgkbW9kdWxlLCB4PU1CX09LLCAvKVxuIgorIk1lc3NhZ2VCZWVwKCRtb2R1bGUsIC8sIHR5cGU9TUJfT0spXG4iCiAiLS1cbiIKICJcbiIKICJDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAoeCkuXG4iCkBAIC03OCwyMyArODQsMjYgQEAKICJ4IGRlZmF1bHRzIHRvIE1CX09LLiIpOwogCiAjZGVmaW5lIFdJTlNPVU5EX01FU1NBR0VCRUVQX01FVEhPRERFRiAgICBcCi0gICAgeyJNZXNzYWdlQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9NZXNzYWdlQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX199LAorICAgIHsiTWVzc2FnZUJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfTWVzc2FnZUJlZXAsIE1FVEhfRkFTVENBTEwsIHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB4KTsKK3dpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHR5cGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfTWVzc2FnZUJlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit3aW5zb3VuZF9NZXNzYWdlQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGludCB4ID0gTUJfT0s7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidHlwZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpOk1lc3NhZ2VCZWVwIiwgX2tleXdvcmRzLCAwfTsKKyAgICBpbnQgdHlwZSA9IE1CX09LOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpNZXNzYWdlQmVlcCIsCi0gICAgICAgICZ4KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnR5cGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKG1vZHVsZSwgeCk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwobW9kdWxlLCB0eXBlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMwYjI5MGRhZjIzMzBkYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmZTE2YjJiOGI0OTBjYjEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY29uZmlnLmMgYi9QQy9jb25maWcuYwppbmRleCA2NmJmNDU4Li40M2Q5ZTIwIDEwMDY0NAotLS0gYS9QQy9jb25maWcuYworKysgYi9QQy9jb25maWcuYwpAQCAtMjMsNiArMjMsOCBAQAogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTEodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMjU2KHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTUxMih2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGEzKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2JsYWtlMih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X3RpbWUodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fdGhyZWFkKHZvaWQpOwogI2lmZGVmIFdJTjMyCkBAIC05Niw2ICs5OCw4IEBACiAgICAgeyJfc2hhMSIsIFB5SW5pdF9fc2hhMX0sCiAgICAgeyJfc2hhMjU2IiwgUHlJbml0X19zaGEyNTZ9LAogICAgIHsiX3NoYTUxMiIsIFB5SW5pdF9fc2hhNTEyfSwKKyAgICB7Il9zaGEzIiwgUHlJbml0X19zaGEzfSwKKyAgICB7Il9ibGFrZTIiLCBQeUluaXRfX2JsYWtlMn0sCiAgICAgeyJ0aW1lIiwgUHlJbml0X3RpbWV9LAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgeyJfdGhyZWFkIiwgUHlJbml0X190aHJlYWR9LApkaWZmIC0tZ2l0IGEvUEMvZ2V0cGF0aHAuYyBiL1BDL2dldHBhdGhwLmMKaW5kZXggYzdkZGYxZS4uMzFmOTczZSAxMDA2NDQKLS0tIGEvUEMvZ2V0cGF0aHAuYworKysgYi9QQy9nZXRwYXRocC5jCkBAIC02LDcgKzYsOSBAQAogICAgUEFUSCBSVUxFUyBGT1IgV0lORE9XUzoKICAgIFRoaXMgZGVzY3JpYmVzIGhvdyBzeXMucGF0aCBpcyBmb3JtZWQgb24gV2luZG93cy4gIEl0IGRlc2NyaWJlcyB0aGUKICAgIGZ1bmN0aW9uYWxpdHksIG5vdCB0aGUgaW1wbGVtZW50YXRpb24gKGllLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlc2UKLSAgIGFyZSBhY3R1YWxseSBmZXRjaGVkIGlzIGRpZmZlcmVudCkKKyAgIGFyZSBhY3R1YWxseSBmZXRjaGVkIGlzIGRpZmZlcmVudCkuIFRoZSBwcmVzZW5jZSBvZiBhIHB5dGhvbi5fcHRoIG9yCisgICBweXRob25YWS5fcHRoIGZpbGUgYWxvbmdzaWRlIHRoZSBwcm9ncmFtIG92ZXJyaWRlcyB0aGVzZSBydWxlcyAtIHNlZQorICAgYmVsb3cuCiAKICAgICogUHl0aG9uIGFsd2F5cyBhZGRzIGFuIGVtcHR5IGVudHJ5IGF0IHRoZSBzdGFydCwgd2hpY2ggY29ycmVzcG9uZHMKICAgICAgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgpAQCAtMjMsOSArMjUsOSBAQAogCiAgICAqIFdlIGF0dGVtcHQgdG8gbG9jYXRlIHRoZSAiUHl0aG9uIEhvbWUiIC0gaWYgdGhlIFBZVEhPTkhPTUUgZW52IHZhcgogICAgICBpcyBzZXQsIHdlIGJlbGlldmUgaXQuICBPdGhlcndpc2UsIHdlIHVzZSB0aGUgcGF0aCBvZiBvdXIgaG9zdCAuRVhFJ3MKLSAgICAgdG8gdHJ5IGFuZCBsb2NhdGUgb3VyICJsYW5kbWFyayIgKGxpYlxcb3MucHkpIGFuZCBkZWR1Y2Ugb3VyIGhvbWUuCisgICAgIHRvIHRyeSBhbmQgbG9jYXRlIG9uZSBvZiBvdXIgImxhbmRtYXJrcyIgYW5kIGRlZHVjZSBvdXIgaG9tZS4KICAgICAgLSBJZiB3ZSBETyBoYXZlIGEgUHl0aG9uIEhvbWU6IFRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgKExpYiwKLSAgICAgICBwbGF0LXdpbiwgZXRjKSBhcmUgYmFzZWQgb24gdGhlIFB5dGhvbiBIb21lCisgICAgICAgRExMcywgZXRjKSBhcmUgYmFzZWQgb24gdGhlIFB5dGhvbiBIb21lCiAgICAgIC0gSWYgd2UgRE8gTk9UIGhhdmUgYSBQeXRob24gSG9tZSwgdGhlIGNvcmUgUHl0aG9uIFBhdGggaXMKICAgICAgICBsb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuICBUaGlzIGlzIHRoZSBtYWluIFB5dGhvblBhdGgga2V5LAogICAgICAgIGFuZCBib3RoIEhLTE0gYW5kIEhLQ1UgYXJlIGNvbWJpbmVkIHRvIGZvcm0gdGhlIHBhdGgpCkBAIC0zMyw3ICszNSwyMyBAQAogICAgKiBJZmYgLSB3ZSBjYW4gbm90IGxvY2F0ZSB0aGUgUHl0aG9uIEhvbWUsIGhhdmUgbm90IGhhZCBhIFBZVEhPTlBBVEgKICAgICAgc3BlY2lmaWVkLCBhbmQgY2FuJ3QgbG9jYXRlIGFueSBSZWdpc3RyeSBlbnRyaWVzIChpZSwgd2UgaGF2ZSBfbm90aGluZ18KICAgICAgd2UgY2FuIGFzc3VtZSBpcyBhIGdvb2QgcGF0aCksIGEgZGVmYXVsdCBwYXRoIHdpdGggcmVsYXRpdmUgZW50cmllcyBpcwotICAgICB1c2VkIChlZy4gLlxMaWI7LlxwbGF0LXdpbiwgZXRjKQorICAgICB1c2VkIChlZy4gLlxMaWI7LlxETExzLCBldGMpCisKKworICAgSWYgYSAnLl9wdGgnIGZpbGUgZXhpc3RzIGFkamFjZW50IHRvIHRoZSBleGVjdXRhYmxlIHdpdGggdGhlIHNhbWUgYmFzZSBuYW1lCisgICAoZS5nLiBweXRob24uX3B0aCBhZGphY2VudCB0byBweXRob24uZXhlKSBvciBhZGphY2VudCB0byB0aGUgc2hhcmVkIGxpYnJhcnkKKyAgIChlLmcuIHB5dGhvbjM2Ll9wdGggYWRqYWNlbnQgdG8gcHl0aG9uMzYuZGxsKSwgaXQgaXMgdXNlZCBpbiBwcmVmZXJlbmNlIHRvCisgICB0aGUgYWJvdmUgcHJvY2Vzcy4gVGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZQorICAgZXhlY3V0YWJsZS4gVGhlIHBhdGggZmlsZSBtdXN0IGNvbnRhaW4gYSBsaXN0IG9mIHBhdGhzIHRvIGFkZCB0byBzeXMucGF0aCwKKyAgIG9uZSBwZXIgbGluZS4gRWFjaCBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgIEJsYW5rIGxpbmVzIGFuZCBjb21tZW50cyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIHBlcm1pdHRlZC4KKworICAgSW4gdGhlIHByZXNlbmNlIG9mIHRoaXMgLl9wdGggZmlsZSwgbm8gb3RoZXIgcGF0aHMgYXJlIGFkZGVkIHRvIHRoZSBzZWFyY2gKKyAgIHBhdGgsIHRoZSByZWdpc3RyeSBmaW5kZXIgaXMgbm90IGVuYWJsZWQsIHNpdGUucHkgaXMgbm90IGltcG9ydGVkIGFuZAorICAgaXNvbGF0ZWQgbW9kZSBpcyBlbmFibGVkLiBUaGUgc2l0ZSBwYWNrYWdlIGNhbiBiZSBlbmFibGVkIGJ5IGluY2x1ZGluZyBhCisgICBsaW5lIHJlYWRpbmcgImltcG9ydCBzaXRlIjsgbm8gb3RoZXIgaW1wb3J0cyBhcmUgcmVjb2duaXplZC4gQW55IGludmFsaWQKKyAgIGVudHJ5IChvdGhlciB0aGFuIGRpcmVjdG9yaWVzIHRoYXQgZG8gbm90IGV4aXN0KSB3aWxsIHJlc3VsdCBpbiBpbW1lZGlhdGUKKyAgIHRlcm1pbmF0aW9uIG9mIHRoZSBwcm9ncmFtLgogCiAKICAgVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CkBAIC01Miw3ICs3MCwxMSBAQAogICAgIHNvbWUgZGVmYXVsdCwgYnV0IHJlbGF0aXZlLCBwYXRocy4KIAogICAqIEFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiBjYW4gdXNlIFB5X1NldFBhdGgoKSB0byBvdmVycmlkZSBhbGwgb2YKLSAgICB0aGVzZSBhdXRob21hdGljIHBhdGggY29tcHV0YXRpb25zLgorICAgIHRoZXNlIGF1dG9tYXRpYyBwYXRoIGNvbXB1dGF0aW9ucy4KKworICAqIEFuIGluc3RhbGwgb2YgUHl0aG9uIGNhbiBmdWxseSBzcGVjaWZ5IHRoZSBjb250ZW50cyBvZiBzeXMucGF0aCB1c2luZworICAgIGVpdGhlciBhICdFWEVOQU1FLl9wdGgnIG9yICdETExOQU1FLl9wdGgnIGZpbGUsIG9wdGlvbmFsbHkgaW5jbHVkaW5nCisgICAgImltcG9ydCBzaXRlIiB0byBlbmFibGUgdGhlIHNpdGUgbW9kdWxlLgogCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTYxLDEwICs4MywxMyBAQAogI2luY2x1ZGUgIm9zZGVmcy5oIgogI2luY2x1ZGUgPHdjaGFyLmg+CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0jaW5jbHVkZSA8d2luZG93cy5oPgorI2lmbmRlZiBNU19XSU5ET1dTCisjZXJyb3IgZ2V0cGF0aHAuYyBzaG91bGQgb25seSBiZSBidWlsdCBvbiBXaW5kb3dzCiAjZW5kaWYKIAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxTaGx3YXBpLmg+CisKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLwpAQCAtMTIyLDYgKzE0NywzMyBAQAogICAgIGRpcltpXSA9ICdcMCc7CiB9CiAKK3N0YXRpYyBpbnQKK2NoYW5nZV9leHQod2NoYXJfdCAqZGVzdCwgY29uc3Qgd2NoYXJfdCAqc3JjLCBjb25zdCB3Y2hhcl90ICpleHQpCit7CisgICAgc2l6ZV90IHNyY19sZW4gPSB3Y3NubGVuX3Moc3JjLCBNQVhQQVRITEVOKzEpOworICAgIHNpemVfdCBpID0gc3JjX2xlbjsKKyAgICBpZiAoaSA+PSBNQVhQQVRITEVOKzEpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgcmVkdWNlKCkiKTsKKworICAgIHdoaWxlIChpID4gMCAmJiBzcmNbaV0gIT0gJy4nICYmICFpc19zZXAoc3JjW2ldKSkKKyAgICAgICAgLS1pOworCisgICAgaWYgKGkgPT0gMCkgeworICAgICAgICBkZXN0WzBdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChpc19zZXAoc3JjW2ldKSkKKyAgICAgICAgaSA9IHNyY19sZW47CisKKyAgICBpZiAod2NzbmNweV9zKGRlc3QsIE1BWFBBVEhMRU4rMSwgc3JjLCBpKSB8fAorICAgICAgICB3Y3NjYXRfcyhkZXN0LCBNQVhQQVRITEVOKzEsIGV4dCkpIHsKKyAgICAgICAgZGVzdFswXSA9ICdcMCc7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KIAogc3RhdGljIGludAogZXhpc3RzKHdjaGFyX3QgKmZpbGVuYW1lKQpAQCAtMTM1LDcgKzE4Nyw3IEBACiBzdGF0aWMgaW50CiBpc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSwgaW50IHVwZGF0ZV9maWxlbmFtZSkgLyogSXMgbW9kdWxlIC0tIGNoZWNrIGZvciAucHljLy5weW8gdG9vICovCiB7Ci0gICAgaW50IG47CisgICAgc2l6ZV90IG47CiAKICAgICBpZiAoZXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIDE7CkBAIC0xNjMsMjQgKzIxNSwzMCBAQAogICAgdGhhbiBNQVhQQVRITEVOIGNoYXJhY3RlcnMgYXQgZXhpdC4gIElmIHN0dWZmIGlzIHRvbyBsb25nLCBvbmx5IGFzIG11Y2ggb2YKICAgIHN0dWZmIGFzIGZpdHMgd2lsbCBiZSBhcHBlbmRlZC4KICovCisKK3N0YXRpYyBpbnQgX1BhdGhDY2hDb21iaW5lRXhfSW5pdGlhbGl6ZWQgPSAwOwordHlwZWRlZiBIUkVTVUxUKF9fc3RkY2FsbCAqUFBhdGhDY2hDb21iaW5lRXgpKFBXU1RSIHBzelBhdGhPdXQsIHNpemVfdCBjY2hQYXRoT3V0LCBQQ1dTVFIgcHN6UGF0aEluLCBQQ1dTVFIgcHN6TW9yZSwgdW5zaWduZWQgbG9uZyBkd0ZsYWdzKTsKK3N0YXRpYyBQUGF0aENjaENvbWJpbmVFeCBfUGF0aENjaENvbWJpbmVFeDsKKwogc3RhdGljIHZvaWQKIGpvaW4od2NoYXJfdCAqYnVmZmVyLCBjb25zdCB3Y2hhcl90ICpzdHVmZikKIHsKLSAgICBzaXplX3QgbjsKLSAgICBpZiAoaXNfc2VwKHN0dWZmWzBdKSB8fAotICAgICAgICAod2Nzbmxlbl9zKHN0dWZmLCA0KSA+PSAzICYmIHN0dWZmWzFdID09ICc6JyAmJiBpc19zZXAoc3R1ZmZbMl0pKSkgewotICAgICAgICBpZiAod2NzY3B5X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChfUGF0aENjaENvbWJpbmVFeF9Jbml0aWFsaXplZCA9PSAwKSB7CisgICAgICAgIEhNT0RVTEUgcGF0aGFwaSA9IExvYWRMaWJyYXJ5VyhMImFwaS1tcy13aW4tY29yZS1wYXRoLWwxLTEtMC5kbGwiKTsKKyAgICAgICAgaWYgKHBhdGhhcGkpCisgICAgICAgICAgICBfUGF0aENjaENvbWJpbmVFeCA9IChQUGF0aENjaENvbWJpbmVFeClHZXRQcm9jQWRkcmVzcyhwYXRoYXBpLCAiUGF0aENjaENvbWJpbmVFeCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBfUGF0aENjaENvbWJpbmVFeCA9IE5VTEw7CisgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4X0luaXRpYWxpemVkID0gMTsKICAgICB9CiAKLSAgICBuID0gd2Nzbmxlbl9zKGJ1ZmZlciwgTUFYUEFUSExFTisxKTsKLSAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbiAtIDFdKSAmJiBuIDwgTUFYUEFUSExFTikgewotICAgICAgICBidWZmZXJbbl0gPSBTRVA7Ci0gICAgICAgIGJ1ZmZlcltuICsgMV0gPSAnXDAnOworICAgIGlmIChfUGF0aENjaENvbWJpbmVFeCkgeworICAgICAgICBpZiAoRkFJTEVEKF9QYXRoQ2NoQ29tYmluZUV4KGJ1ZmZlciwgTUFYUEFUSExFTisxLCBidWZmZXIsIHN0dWZmLCAwKSkpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghUGF0aENvbWJpbmVXKGJ1ZmZlciwgYnVmZmVyLCBzdHVmZikpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogICAgIH0KLSAgICBpZiAod2NzY2F0X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogfQogCiAvKiBnb3RsYW5kbWFyayBvbmx5IGNhbGxlZCBieSBzZWFyY2hfZm9yX3ByZWZpeCwgd2hpY2ggZW5zdXJlcwpAQCAtMTg4LDcgKzI0Niw3IEBACiAgICAnbGFuZG1hcmsnIGNhbiBub3Qgb3ZlcmZsb3cgcHJlZml4IGlmIHRvbyBsb25nLgogKi8KIHN0YXRpYyBpbnQKLWdvdGxhbmRtYXJrKHdjaGFyX3QgKmxhbmRtYXJrKQorZ290bGFuZG1hcmsoY29uc3Qgd2NoYXJfdCAqbGFuZG1hcmspCiB7CiAgICAgaW50IG9rOwogICAgIFB5X3NzaXplX3QgbiA9IHdjc25sZW5fcyhwcmVmaXgsIE1BWFBBVEhMRU4pOwpAQCAtMjAyLDcgKzI2MCw3IEBACiAvKiBhc3N1bWVzIGFyZ3YwX3BhdGggaXMgTUFYUEFUSExFTisxIGJ5dGVzIGxvbmcsIGFscmVhZHkgXDAgdGVybSdkLgogICAgYXNzdW1wdGlvbiBwcm92aWRlZCBieSBvbmx5IGNhbGxlciwgY2FsY3VsYXRlX3BhdGgoKSAqLwogc3RhdGljIGludAotc2VhcmNoX2Zvcl9wcmVmaXgod2NoYXJfdCAqYXJndjBfcGF0aCwgd2NoYXJfdCAqbGFuZG1hcmspCitzZWFyY2hfZm9yX3ByZWZpeCh3Y2hhcl90ICphcmd2MF9wYXRoLCBjb25zdCB3Y2hhcl90ICpsYW5kbWFyaykKIHsKICAgICAvKiBTZWFyY2ggZnJvbSBhcmd2MF9wYXRoLCB1bnRpbCBsYW5kbWFyayBpcyBmb3VuZCAqLwogICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTiArIDEsIGFyZ3YwX3BhdGgpOwpAQCAtMjE0LDcgKzI3Miw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBNU19XSU5ET1dTCiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAogCiAvKiBhIHN0cmluZyBsb2FkZWQgZnJvbSB0aGUgRExMIGF0IHN0YXJ0dXAuKi8KQEAgLTM2OSw3ICs0MjYsNiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAjZW5kaWYgLyogUHlfRU5BQkxFX1NIQVJFRCAqLwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogc3RhdGljIHZvaWQKIGdldF9wcm9ncGF0aCh2b2lkKQpAQCAtMzc4LDcgKzQzNCw2IEBACiAgICAgd2NoYXJfdCAqcGF0aCA9IF93Z2V0ZW52KEwiUEFUSCIpOwogICAgIHdjaGFyX3QgKnByb2cgPSBQeV9HZXRQcm9ncmFtTmFtZSgpOwogCi0jaWZkZWYgTVNfV0lORE9XUwogI2lmZGVmIFB5X0VOQUJMRV9TSEFSRUQKICAgICBleHRlcm4gSEFORExFIFB5V2luX0RMTGhNb2R1bGU7CiAgICAgLyogc3RhdGljIGluaXQgb2YgcHJvZ3BhdGggZW5zdXJlcyBmaW5hbCBjaGFyIHJlbWFpbnMgXDAgKi8KQEAgLTM5MCw3ICs0NDUsNiBAQAogI2VuZGlmCiAgICAgaWYgKEdldE1vZHVsZUZpbGVOYW1lVyhOVUxMLCBwcm9ncGF0aCwgTUFYUEFUSExFTikpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogICAgIGlmIChwcm9nID09IE5VTEwgfHwgKnByb2cgPT0gJ1wwJykKICAgICAgICAgcHJvZyA9IEwicHl0aG9uIjsKIApAQCAtNDgzLDYgKzUzNyw4MSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnQKK3JlYWRfcHRoX2ZpbGUoY29uc3Qgd2NoYXJfdCAqcGF0aCwgd2NoYXJfdCAqcHJlZml4LCBpbnQgKmlzb2xhdGVkLCBpbnQgKm5vc2l0ZSkKK3sKKyAgICBGSUxFICpzcF9maWxlID0gX1B5X3dmb3BlbihwYXRoLCBMInIiKTsKKyAgICBpZiAoc3BfZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICB3Y3NjcHlfcyhwcmVmaXgsIE1BWFBBVEhMRU4rMSwgcGF0aCk7CisgICAgcmVkdWNlKHByZWZpeCk7CisgICAgKmlzb2xhdGVkID0gMTsKKyAgICAqbm9zaXRlID0gMTsKKworICAgIHNpemVfdCBidWZzaXogPSBNQVhQQVRITEVOOworICAgIHNpemVfdCBwcmVmaXhsZW4gPSB3Y3NsZW4ocHJlZml4KTsKKworICAgIHdjaGFyX3QgKmJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2MoYnVmc2l6ICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBidWZbMF0gPSAnXDAnOworCisgICAgd2hpbGUgKCFmZW9mKHNwX2ZpbGUpKSB7CisgICAgICAgIGNoYXIgbGluZVtNQVhQQVRITEVOICsgMV07CisgICAgICAgIGNoYXIgKnAgPSBmZ2V0cyhsaW5lLCBNQVhQQVRITEVOICsgMSwgc3BfZmlsZSk7CisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAnIycpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgd2hpbGUgKCorK3ApIHsKKyAgICAgICAgICAgIGlmICgqcCA9PSAnXHInIHx8ICpwID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAqcCA9ICdcMCc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RyY21wKGxpbmUsICJpbXBvcnQgc2l0ZSIpID09IDApIHsKKyAgICAgICAgICAgICpub3NpdGUgPSAwOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0gZWxzZSBpZiAoc3RybmNtcChsaW5lLCAiaW1wb3J0ICIsIDcpID09IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIm9ubHkgJ2ltcG9ydCBzaXRlJyBpcyBzdXBwb3J0ZWQgaW4gLl9wdGggZmlsZSIpOworICAgICAgICB9CisKKyAgICAgICAgRFdPUkQgd24gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGxpbmUsIC0xLCBOVUxMLCAwKTsKKyAgICAgICAgd2NoYXJfdCAqd2xpbmUgPSAod2NoYXJfdCopUHlNZW1fUmF3TWFsbG9jKCh3biArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgd24gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGxpbmUsIC0xLCB3bGluZSwgd24gKyAxKTsKKyAgICAgICAgd2xpbmVbd25dID0gJ1wwJzsKKworICAgICAgICB3aGlsZSAod24gKyBwcmVmaXhsZW4gKyA0ID4gYnVmc2l6KSB7CisgICAgICAgICAgICBidWZzaXogKz0gTUFYUEFUSExFTjsKKyAgICAgICAgICAgIGJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdSZWFsbG9jKGJ1ZiwgKGJ1ZnNpeiArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICghYnVmKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChidWZbMF0pCisgICAgICAgICAgICB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgTCI7Iik7CisKKyAgICAgICAgd2NoYXJfdCAqYiA9ICZidWZbd2NzbGVuKGJ1ZildOworICAgICAgICB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgcHJlZml4KTsKKyAgICAgICAgam9pbihiLCB3bGluZSk7CisKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgfQorCisgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gYnVmOworCisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAtMTsKK30KKworCiBzdGF0aWMgdm9pZAogY2FsY3VsYXRlX3BhdGgodm9pZCkKIHsKQEAgLTQ5MiwzMiArNjIxLDMzIEBACiAgICAgd2NoYXJfdCAqcHl0aG9uaG9tZSA9IFB5X0dldFB5dGhvbkhvbWUoKTsKICAgICB3Y2hhcl90ICplbnZwYXRoID0gTlVMTDsKIAotI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpbnQgc2tpcGhvbWUsIHNraXBkZWZhdWx0OwogICAgIHdjaGFyX3QgKm1hY2hpbmVwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICp1c2VycGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCB6aXBfcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGludCBhcHBsb2NhbCA9IDA7CiAKICAgICBpZiAoIVB5X0lnbm9yZUVudmlyb25tZW50RmxhZykgewogICAgICAgICBlbnZwYXRoID0gX3dnZXRlbnYoTCJQWVRIT05QQVRIIik7CiAgICAgfQotI2Vsc2UKLSAgICBjaGFyICpfZW52cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOwotICAgIHdjaGFyX3Qgd2VudnBhdGhbTUFYUEFUSExFTisxXTsKLSAgICBpZiAoX2VudnBhdGgpIHsKLSAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyh3ZW52cGF0aCwgX2VudnBhdGgsIE1BWFBBVEhMRU4rMSk7Ci0gICAgICAgIGVudnBhdGggPSB3ZW52cGF0aDsKLSAgICAgICAgaWYgKHIgPT0gKHNpemVfdCktMSB8fCByID49IE1BWFBBVEhMRU4pCi0gICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICB9Ci0jZW5kaWYKIAogICAgIGdldF9wcm9ncGF0aCgpOwogICAgIC8qIHByb2dwYXRoIGd1YXJhbnRlZWQgXDAgdGVybWluYXRlZCBpbiBNQVhQQVRIKzEgYnl0ZXMuICovCiAgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCBwcm9ncGF0aCk7CiAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOwogCisgICAgLyogU2VhcmNoIGZvciBhIHN5cy5wYXRoIGZpbGUgKi8KKyAgICB7CisgICAgICAgIHdjaGFyX3Qgc3BidWZmZXJbTUFYUEFUSExFTisxXTsKKworICAgICAgICBpZiAoKGRsbHBhdGhbMF0gJiYgIWNoYW5nZV9leHQoc3BidWZmZXIsIGRsbHBhdGgsIEwiLl9wdGgiKSAmJiBleGlzdHMoc3BidWZmZXIpKSB8fAorICAgICAgICAgICAgKHByb2dwYXRoWzBdICYmICFjaGFuZ2VfZXh0KHNwYnVmZmVyLCBwcm9ncGF0aCwgTCIuX3B0aCIpICYmIGV4aXN0cyhzcGJ1ZmZlcikpKSB7CisKKyAgICAgICAgICAgIGlmICghcmVhZF9wdGhfZmlsZShzcGJ1ZmZlciwgcHJlZml4LCAmUHlfSXNvbGF0ZWRGbGFnLCAmUHlfTm9TaXRlRmxhZykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBTZWFyY2ggZm9yIGFuIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgZmlyc3QgaW4gdGhlCiAgICAgICAgZXhlY3V0YWJsZSdzIGRpcmVjdG9yeSBhbmQgdGhlbiBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KICAgICAgICBJZiBmb3VuZCwgb3BlbiBpdCBmb3IgdXNlIHdoZW4gc2VhcmNoaW5nIGZvciBwcmVmaXhlcy4KQEAgLTU0MywxNyArNjczLDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZW52X2ZpbGUgIT0gTlVMTCkgewotICAgICAgICAgICAgLyogTG9vayBmb3IgYW4gJ2FwcGxvY2FsJyB2YXJpYWJsZSBhbmQsIGlmIHRydWUsIGlnbm9yZSBhbGwgcmVnaXN0cnkKLSAgICAgICAgICAgICAqIGtleXMgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcywgYnV0IHJldGFpbiB0aGUgZGVmYXVsdCBwYXRocwotICAgICAgICAgICAgICogKERMTHMsIExpYikgYW5kIHRoZSB6aXAgZmlsZS4gU2V0dGluZyBweXRob25ob21lIGhlcmUgc3VwcHJlc3NlcwotICAgICAgICAgICAgICogdGhlIHNlYXJjaCBmb3IgTEFORE1BUksgYmVsb3cgYW5kIG92ZXJyaWRlcyAlUFlUSE9OSE9NRSUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiYXBwbG9jYWwiLCB0bXBidWZmZXIpICYmCi0gICAgICAgICAgICAgICAgKGFwcGxvY2FsID0gKHdjc2ljbXAodG1wYnVmZmVyLCBMInRydWUiKSA9PSAwKSkpIHsKLSAgICAgICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICAgICAgICAgICAgICBweXRob25ob21lID0gYXJndjBfcGF0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICAgICAgLyogTG9vayBmb3IgYSAnaG9tZScgdmFyaWFibGUgYW5kIHNldCBhcmd2MF9wYXRoIHRvIGl0LCBpZiBmb3VuZCAqLwogICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJob21lIiwgdG1wYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIHdjc2NweV9zKGFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSwgdG1wYnVmZmVyKTsKQEAgLTU2Myw4ICs2ODIsMTUgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCisgICAgY2hhbmdlX2V4dCh6aXBfcGF0aCwgZGxscGF0aFswXSA/IGRsbHBhdGggOiBwcm9ncGF0aCwgTCIuemlwIik7CisKICAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMIHx8ICpweXRob25ob21lID09ICdcMCcpIHsKLSAgICAgICAgaWYgKHNlYXJjaF9mb3JfcHJlZml4KGFyZ3YwX3BhdGgsIExBTkRNQVJLKSkKKyAgICAgICAgaWYgKHppcF9wYXRoWzBdICYmIGV4aXN0cyh6aXBfcGF0aCkpIHsKKyAgICAgICAgICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCB6aXBfcGF0aCk7CisgICAgICAgICAgICByZWR1Y2UocHJlZml4KTsKKyAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBwcmVmaXg7CisgICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgTEFORE1BUkspKQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IHByZWZpeDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IE5VTEw7CkBAIC01NzYsMzAgKzcwMiwxNSBAQAogICAgICAgICBlbnZwYXRoID0gTlVMTDsKIAogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCi0gICAgaWYgKHdjc2NweV9zKHppcF9wYXRoLCBNQVhQQVRITEVOKzEsIGRsbHBhdGhbMF0gPyBkbGxwYXRoIDogcHJvZ3BhdGgpKQotICAgICAgICAvKiBleGNlZWRlZCBidWZmZXIgbGVuZ3RoIC0gaWdub3JlIHppcF9wYXRoICovCi0gICAgICAgIHppcF9wYXRoWzBdID0gJ1wwJzsKLSAgICBlbHNlIHsKLSAgICAgICAgd2NoYXJfdCAqZG90ID0gd2NzcmNocih6aXBfcGF0aCwgJy4nKTsKLSAgICAgICAgaWYgKCFkb3QgfHwgd2NzY3B5X3MoZG90LCBNQVhQQVRITEVOKzEgLSAoZG90IC0gemlwX3BhdGgpLCBMIi56aXAiKSkKLSAgICAgICAgICAgIC8qIGV4Y2VlZGVkIGJ1ZmZlciBsZW5ndGggLSBpZ25vcmUgemlwX3BhdGggKi8KLSAgICAgICAgICAgIHppcF9wYXRoWzBdID0gTCdcMCc7Ci0gICAgfQotCiAgICAgc2tpcGhvbWUgPSBweXRob25ob21lPT1OVUxMID8gMCA6IDE7CiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAotICAgIGlmICghYXBwbG9jYWwpIHsKLSAgICAgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOwotICAgICAgICB1c2VycGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9DVVJSRU5UX1VTRVIsIHNraXBob21lKTsKLSAgICB9CisgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOworICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOwogI2VuZGlmCiAgICAgLyogV2Ugb25seSB1c2UgdGhlIGRlZmF1bHQgcmVsYXRpdmUgUFlUSE9OUEFUSCBpZiB3ZSBoYXZlbnQKICAgICAgICBhbnl0aGluZyBiZXR0ZXIgdG8gdXNlISAqLwogICAgIHNraXBkZWZhdWx0ID0gZW52cGF0aCE9TlVMTCB8fCBweXRob25ob21lIT1OVUxMIHx8IFwKICAgICAgICAgICAgICAgICAgIG1hY2hpbmVwYXRoIT1OVUxMIHx8IHVzZXJwYXRoIT1OVUxMOwotI2VuZGlmCiAKICAgICAvKiBXZSBuZWVkIHRvIGNvbnN0cnVjdCBhIHBhdGggZnJvbSB0aGUgZm9sbG93aW5nIHBhcnRzLgogICAgICAgICgxKSB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaWYgc2V0OwpAQCAtNjEyLDcgKzcyMyw2IEBACiAgICAgICAgRXh0cmEgcnVsZXM6CiAgICAgICAgLSBJZiBQWVRIT05IT01FIGlzIHNldCAoaW4gYW55IHdheSkgaXRlbSAoMykgaXMgaWdub3JlZC4KICAgICAgICAtIElmIHJlZ2lzdHJ5IHZhbHVlcyBhcmUgdXNlZCwgKDQpIGFuZCAoNSkgYXJlIGlnbm9yZWQuCi0gICAgICAgLSBJZiBhcHBsb2NhbCBpcyBzZXQsICgxKSwgKDMpLCBhbmQgcmVnaXN0cnkgdmFsdWVzIGFyZSBpZ25vcmVkCiAgICAgKi8KIAogICAgIC8qIENhbGN1bGF0ZSBzaXplIG9mIHJldHVybiBidWZmZXIgKi8KQEAgLTYyOSwxMyArNzM5LDExIEBACiAgICAgICAgIGJ1ZnN6ID0gMDsKICAgICBidWZzeiArPSB3Y3NsZW4oUFlUSE9OUEFUSCkgKyAxOwogICAgIGJ1ZnN6ICs9IHdjc2xlbihhcmd2MF9wYXRoKSArIDE7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICghYXBwbG9jYWwgJiYgdXNlcnBhdGgpCisgICAgaWYgKHVzZXJwYXRoKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4odXNlcnBhdGgpICsgMTsKLSAgICBpZiAoIWFwcGxvY2FsICYmIG1hY2hpbmVwYXRoKQorICAgIGlmIChtYWNoaW5lcGF0aCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKG1hY2hpbmVwYXRoKSArIDE7CiAgICAgYnVmc3ogKz0gd2NzbGVuKHppcF9wYXRoKSArIDE7Ci0jZW5kaWYKICAgICBpZiAoZW52cGF0aCAhPSBOVUxMKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4oZW52cGF0aCkgKyAxOwogCkBAIC02NTEsMTAgKzc1OSw4IEBACiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzaW5nIGRlZmF1bHQgc3RhdGljIHBhdGguXG4iKTsKICAgICAgICAgICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IFBZVEhPTlBBVEg7CiAgICAgICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobWFjaGluZXBhdGgpOwogICAgICAgICBQeU1lbV9SYXdGcmVlKHVzZXJwYXRoKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2NCw3ICs3NzAsNiBAQAogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHppcF9wYXRoWzBdKSB7CiAgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHppcF9wYXRoKSkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwpAQCAtNjkyLDE1ICs3OTcsNyBAQAogICAgICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIGlmIChweXRob25ob21lID09IE5VTEwpIHsKLSAgICAgICAgd2NzY3B5KGJ1ZiwgUFlUSE9OUEFUSCk7Ci0gICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKLSAgICAgICAgKmJ1ZisrID0gREVMSU07Ci0gICAgfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICB3Y2hhcl90ICpwID0gUFlUSE9OUEFUSDsKICAgICAgICAgd2NoYXJfdCAqcTsKICAgICAgICAgc2l6ZV90IG47CmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY25zIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWE5MTdmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY28gYi9QQy9pY29ucy9sYXVuY2hlci5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRlM2M2OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5zdmcgYi9QQy9pY29ucy9sYXVuY2hlci5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU5MGIwZAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uZ3JhcGgtbGlnaHRncmV5e2ZpbGw6I2RmZGZkZn0uc3Qwe2ZpbGw6IzAwNzhkN30uc3Qxe2ZpbGw6I2ZmZn0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0M3tmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA1SDVWM2gyNXYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTI5Ljk3MiAyNi45NzJINS4wMjlWNWguOTQydjIxLjAyOGgyMy4wNTdWNWguOTQzdjIxLjk3MnoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1vdXQiIGQ9Ik0yOSA1djIxSDZWNWgyM3oiLz48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTI5LjE0MSA0bC40MjkuNDI5LS4xNC4xNDItLjQzLS40My0uNDMuNDMtLjE0LS4xNDIuNDI5LS40MjktLjQyOS0uNDI5LjE0MS0uMTQyLjQyOS40My40My0uNDMuMTQxLjE0Mi0uNDMuNDI5ek0yNy42IDMuNGgtMS4ydjEuMmgxLjJWMy40em0tMSAuMmguOHYuOGgtLjh2LS44em0tMS4xMzkuOGgtMXYuMmgxdi0uMnoiLz48cGF0aCBjbGFzcz0iZ3JhcGgtbGlnaHRncmV5IiBkPSJNNiA1aDIzdjJINnoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9InN0MCIgZD0iTTQuNSAyM3Y2Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExLjQyOSAxMy4wMTlhMTkuODggMTkuODggMCAwIDAgLjA3MS0xLjY0NWMwLTQuMjIzLTEuMzI5LTguMTY1LTMuNTU2LTEwLjU0NUw3LjE3IDBINS44M2wtLjc3NC44MjlDMi44MjkgMy4yMDkgMS41IDcuMTUxIDEuNSAxMS4zNzRjMCAuNDUzLjAyMy45LjA1MyAxLjM0NUMuODg3IDEzLjQ3Mi4zNTcgMTQuNDM4IDAgMTUuNTMzdjYuNjAzTC4yMjkgMjNIM3Y3aDJ2Mmgzdi0xaDJ2LThoMi43NzJsLjM5NC0xLjQ4OGMuMjIyLS44NDIuMzM1LTEuNzE0LjMzNS0yLjU5Mi0uMDAxLTIuNDE5LS44MDMtNC41MzQtMi4wNzItNS45MDF6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTYuNSAyMnY5TTguNSAyM3Y3Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTUgMjlINHYtNmgxdjZ6bTItNkg2djhoMXYtOHptMiAwSDh2N2gxdi03eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTEwLjM4MSAxMy4zOGMuMDctLjY1OC4xMTktMS4zMjUuMTE5LTIuMDA2IDAtMy45NzUtMS4yMjktNy42NjItMy4yODYtOS44NjJMNi41Ljc0OGwtLjcxNC43NjNDMy43MjkgMy43MTIgMi41IDcuMzk5IDIuNSAxMS4zNzRjMCAuNjgxLjA0OSAxLjM0OC4xMTkgMi4wMDZDMS4zMzkgMTQuNTIxLjUgMTYuNTUyLjUgMTguOTJjMCAuNzkzLjEwMiAxLjU3OC4zMDIgMi4zMzZMLjk5OSAyMmgxLjk2NmwuMDcyLS45MjJjLjA4MS0xLjA0Ni40NzEtMS45NjYuOTkzLTIuNTAzLjQ4NyAxLjAxOSAxLjA3IDEuOTI5IDEuNzU2IDIuNjYyTDYuNSAyMmwuNzE0LS43NjNjLjY4Ni0uNzMzIDEuMjY5LTEuNjQzIDEuNzU2LTIuNjYyLjUyMi41MzcuOTEyIDEuNDU3Ljk5MyAyLjUwM2wuMDcyLjkyMmgxLjk2NmwuMTk3LS43NDRjLjItLjc1OC4zMDItMS41NDMuMzAyLTIuMzM2IDAtMi4zNjgtLjgzOS00LjM5OS0yLjExOS01LjU0eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTMuNjE5IDE3LjYxNWMtLjg1NC42NzItMS40NjQgMS45MTMtMS41NzkgMy4zODVoLS4yNzJhOC4xODQgOC4xODQgMCAwIDEtLjI2OC0yLjA4YzAtMS43MjIuNTA1LTMuMjU5IDEuMjk3LTQuMjcyLjE4NyAxLjA1LjQ2NSAyLjA0NS44MjIgMi45Njd6bTYuNTg1LTIuOTY3YTE2LjE0NSAxNi4xNDUgMCAwIDEtLjgyMiAyLjk2N2MuODU0LjY3MSAxLjQ2NCAxLjkxMyAxLjU3OSAzLjM4NWguMjcyYTguMTg0IDguMTg0IDAgMCAwIC4yNjgtMi4wOGMtLjAwMS0xLjcyMi0uNTA2LTMuMjU5LTEuMjk3LTQuMjcyek0zLjUgMTEuMzc0YzAgMy44MzcgMS4xOTggNy4yIDMgOS4xMjggMS44MDItMS45MjcgMy01LjI5MSAzLTkuMTI4cy0xLjE5OC03LjItMy05LjEyOGMtMS44MDIgMS45MjgtMyA1LjI5MS0zIDkuMTI4eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik03LjUgN2ExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDIzLjk2MWMtLjM1IDEuMDUzLTEuMDAxIDMuMDE1LTMuMjQ3IDMuMDE1aC0xLjN2MS4zMzdjMCAuOTA1LS4zOTIgMi41MzctMy4wMjEgMy4yOThhOS4yMTMgOS4yMTMgMCAwIDEtMi41OS4zOWMtLjgzIDAtMS42NjgtLjEyOC0yLjU2NC0uMzkyLTEuOTE4LS41NjMtMy4wMTctMS43NjUtMy4wMTctMy4yOTZ2LTEuMzM3aC0xLjE1NWMtMS42OTggMC0yLjk0My0xLjEyOS0zLjQxNi0zLjA5OC0uNDY5LTEuOTQ2LS40NjktMy4xOTUgMC01LjE0MS40NTEtMS44ODEgMS45Ni0zLjA5OCAzLjg0NS0zLjA5OGguNzI2di0xLjMzN2MwLTIuMDA1LjkwNS0yLjk4MiAzLjEyNi0zLjM3NC43MjktLjEzIDEuNTQ5LS4yIDIuMzY3LS4yMDNoLjAwNGMuOTI1IDAgMS43NjEuMDY3IDIuNTYuMjAxIDEuODE2LjMwMyAzLjEzNCAxLjcyMyAzLjEzNCAzLjM3NnYxLjMzN2gxLjNjMS4xNDIgMCAyLjYzNi41MzYgMy4yNyAzLjA5Mi41MTYgMi4wNzMuNTEgMy42MzctLjAyMiA1LjIzeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfN18iIGNsYXNzPSJzdDIiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDcgMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzkgMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzdfIiBjbGFzcz0ic3QzIiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRIMjguMzQ4YzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5pY25zIGIvUEMvaWNvbnMvcHkuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGM0ZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHkuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5pY28gYi9QQy9pY29ucy9weS5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ4YTc5YgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5LmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5zdmcgYi9QQy9pY29ucy9weS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkyNGU4MwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5LnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZzby1saWdodGdyZXl7ZmlsbDojYmZiZmJmfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTI2IDguMDA5VjI5SDdWM2gxNC4wNTNMMjYgOC4wMDl6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjEuNDcxIDJINnYyOGgyMVY3LjU5OUwyMS40NzEgMnpNMjEgM2guMDUzbDQuOTM5IDVIMjFWM3ptNSAyNkg3VjNoMTN2Nmg2djIweiIvPjwvZz48cGF0aCBjbGFzcz0iaWNvbi12c28tbGlnaHRncmV5IiBkPSJNMTcgN0g5VjZoOHYxem0wIDJIOXYxaDhWOXptNyAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXoiIGlkPSJpY29uRmciLz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTktLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfMl8iIGNsYXNzPSJzdDAiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF8yXyIgY2xhc3M9InN0MSIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuaWNucyBiL1BDL2ljb25zL3B5Yy5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGE5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWMuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuaWNvIGIvUEMvaWNvbnMvcHljLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGRkZTgxCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHljLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuc3ZnIGIvUEMvaWNvbnMvcHljLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzNlOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHljLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12cy1iZ3tmaWxsOiM0MjQyNDJ9Lmljb24tdnMtZ3JlZW57ZmlsbDojMzkzfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLWJnIiBkPSJNMjEuMDUzIDNIN3YyNmgxOVY4LjAwOXoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yMS40NzEgMkg2djI4aDIxVjcuNTk5TDIxLjQ3MSAyek0yMSAzaC4wNTNsNC45MzkgNUgyMVYzem01IDI2SDdWM2gxM3Y2aDZ2MjB6Ii8+PC9nPjxwYXRoIGNsYXNzPSJpY29uLXZzLWdyZWVuIiBkPSJNMTAgMTZIOXYtMWgxdjF6bTEuMDExIDVIOXYxaDIuMDMyYTguMzY4IDguMzY4IDAgMCAxLS4wMjEtMXpNMTQgMTBoMlY5aC0ydjF6bS0zLTRIOXYxaDJWNnptMCA2SDl2MWgydi0xem0yLTNIOXYxaDRWOXptNC0zdjFoMVY2aC0xem0tMyA2aC0ydjFoMnYtMXptMS02aC0ydjFoMlY2em0tNCAxMGgxdi0xaC0xdjF6bTQtNHYxaDJ2LTFoLTJ6bS0yIDRoM3YtMWgtM3Yxem0tNCAydjFoM3YtMUg5em0wIDZ2MWgzdi0xSDl6IiBpZD0iaWNvbkZnIi8+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS42NiAyNC4wNjNDMzEuMzEyIDI1LjExNiAzMC42NjEgMjcgMjguNDEzIDI3SDI3djEuMzEzYzAgLjkwNS0uMzM1IDIuNTM3LTIuOTY1IDMuMjk4LS45MDQuMjYxLTEuNjk0LjM4OS0yLjUzMS4zODktLjgzIDAtMS42My0uMTI4LTIuNTI2LS4zOTJDMTcuMDYxIDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjIzMmMtMS42OTkgMC0yLjk0NC0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1Ljg2Ni0yLjg0NSAzLjA4Ny0zLjIzOC43MjctLjEyOCAxLjUwNi0uMDY1IDIuMzI3LS4wNjVoLjAwM2MuOTIxIDAgMS43MDMtLjA3IDIuNTA0LjA2NCAxLjgxOC4zMDIgMy4wNzkgMS41ODUgMy4wNzkgMy4yMzlWMTZoMS40MTNjMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU4LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMzIiIHkxPSItMjg4LjY2OCIgeDI9IjU0MS4wMTciIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzRfIiBjbGFzcz0ic3QwIiBkPSJNMjEuNDE5IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA4IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc4IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODcgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ny0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjI0NSIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjU2OSIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfNF8iIGNsYXNzPSJzdDEiIGQ9Ik0yNi42ODcgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2SDIxLjUydi0uNTg0SDI4LjQxMmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODMgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5YzAtLjQ4NC4zODgtLjg3NC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLmljbnMgYi9QQy9pY29ucy9weWQuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDNkMjRlCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHlkLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLmljbyBiL1BDL2ljb25zL3B5ZC5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2Y2I2MAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5ZC5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLnN2ZyBiL1BDL2ljb25zL3B5ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlZmY2YQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5ZC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi1mMTItaG92ZXItYmd7ZmlsbDojZDllYmY3fS5pY29uLWYxMi1sdGdyZXktZGlzYWJsZWR7ZmlsbDojYWJhYmFjfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6IzljYTJhN30uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MntmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTIxLjA1MyAzSDd2MjZoMTlWOC4wMDl6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjEuNDcxIDJINnYyOGgyMVY3LjU5OUwyMS40NzEgMnpNMjEgM2guMDUzbDQuOTM5IDVIMjFWM3ptNSAyNkg3VjNoMTN2Nmg2djIweiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMuNzg0IDE3LjcwNWMtMS4yOTYgMC0yLjM1LTEuMDU0LTIuMzUtMi4zNXMxLjA1NC0yLjM1IDIuMzUtMi4zNSAyLjM1IDEuMDU0IDIuMzUgMi4zNS0xLjA1NCAyLjM1LTIuMzUgMi4zNXptMC00LjVjLTEuMTg2IDAtMi4xNS45NjQtMi4xNSAyLjE1cy45NjQgMi4xNTEgMi4xNSAyLjE1MSAyLjE1LS45NjUgMi4xNS0yLjE1MS0uOTY0LTIuMTUtMi4xNS0yLjE1eiIvPjxwYXRoIGNsYXNzPSJpY29uLWYxMi1ob3Zlci1iZyIgZD0iTTE4LjA1IDE2LjEyMmMuMDE2LS4wNjkuMDMxLS4xMzkuMDQzLS4yMDlsMS4zNzYtLjYxOC0uMTAzLTEuMDE1LTEuNDctLjMzYy0uMDI1LS4wNjgtLjA1Ni0uMTM0LS4wODYtLjE5OWwtLjAyNi0uMDU2Ljg5Mi0xLjIzNi0uNTk1LS44MjctMS40NS40NTNjLS4wNjktLjA2MS0uMTQxLS4xMTgtLjIxMy0uMTc1bC4xNTEtMS41MTEtLjkyOS0uNDE4LTEuMDMyIDEuMTIxLS4wNTYtLjAxM2EzLjA4OSAzLjA4OSAwIDAgMC0uMjE3LS4wNDVsLS42MTgtMS4zNzQtMS4wMTUuMTA0LS4zMjkgMS40NzJjLS4wNDkuMDE5LS4wOTYuMDQtLjE0My4wNjNsLS4wNTYuMDI1LTEuMjI1LS45MDctLjgzNS41ODYuNDM1IDEuNDU3Yy0uMDYuMDY3LS4xMjMuMTM4LS4xODIuMjEybC0xLjUwNi0uMTcyLS40MjkuOTI1TDkuNTQgMTQuNDhsLS4wMDUuMDI0YTQuMTI3IDQuMTI3IDAgMCAwLS4wNTEuMjQ2bC0xLjM4Ny42MDYuMDkyIDEuMDE1IDEuNDYzLjM0NmMuMDI0LjA2Ny4wNTUuMTMyLjA4NC4xOTRsLjAzLjA2Ny0uODYgMS4xNy0uMDQyLjA1OS41ODguODMyIDEuNDU2LS40NGMuMDcuMDYzLjEzOC4xMjIuMjA5LjE3OGwtLjE2NyAxLjUwOC45MjYuNDI3TDEyLjkyIDE5LjZsLjA0OC4wMWMuMDc0LjAxNy4xNDkuMDM0LjIyNi4wNDZsLjYwOSAxLjM4NSAxLjAxNS0uMDk1LjM0Mi0xLjQ2NmMuMDc1LS4wMjcuMTQ3LS4wNjEuMjE2LS4wOTNsLjA2Ny0uMDMxIDEuMjM1Ljg5Mi44MjctLjU5NS0uNDUyLTEuNDVjLjA2Mi0uMDcxLjEyLS4xNDIuMTc2LS4yMTVsMS41MTIuMTUxLjQxOC0uOTI5LTEuMTIyLTEuMDMzLjAxMy0uMDU1em0tNC4yNjYgMS41ODNjLTEuMjk2IDAtMi4zNS0xLjA1NC0yLjM1LTIuMzVzMS4wNTQtMi4zNSAyLjM1LTIuMzUgMi4zNSAxLjA1NCAyLjM1IDIuMzUtMS4wNTQgMi4zNS0yLjM1IDIuMzV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWx0Z3JleS1kaXNhYmxlZCIgZD0iTTEzLjgwMyAyMS4wNGwtLjYwOS0xLjM4NGEzLjA4IDMuMDggMCAwIDEtLjIzNi0uMDQ4bC0uMDM4LS4wMDgtMS4wNDMgMS4xMTEtLjkyNS0uNDI3LjE2Ny0xLjUwN2E0LjAxMyA0LjAxMyAwIDAgMS0uMjA5LS4xNzlsLTEuNDU2LjQzOS0uNTg4LS44MzIuOTAyLTEuMjI4LS4wMzMtLjA3MmMtLjAyOC0uMDYxLS4wNTgtLjEyNC0uMDgyLS4xOWwtMS40NjMtLjM0NC0uMDkxLTEuMDE1IDEuMzg3LS42MDVjLjAxMi0uMDc4LjAzLS4xNTQuMDQ3LS4yMzFsLjAwOS0uMDM5LTEuMTA5LTEuMDQ1LjQyOC0uOTI1IDEuNTA3LjE3Yy4wNTgtLjA3Mi4xMTgtLjE0LjE4My0uMjExbC0uNDM1LTEuNDU4LjgzNC0uNTg1IDEuMjI1LjkwNy4wNTItLjAyNGMuMDQ4LS4wMjIuMDk3LS4wNDQuMTQ3LS4wNjNsLjMyOS0xLjQ3MyAxLjAxNC0uMTA0LjYyIDEuMzc1YTIuMzg5IDIuMzg5IDAgMCAxIC4yNzEuMDU4bDEuMDMyLTEuMTIyLjkzLjQxOC0uMTUzIDEuNTExYy4wNzMuMDU1LjE0My4xMTMuMjE0LjE3NGwxLjQ1LS40NTMuNTk1LjgyNy0uODkyIDEuMjM2YS44LjggMCAwIDEgLjAyNC4wNTNjLjAzLjA2NC4wNjIuMTMxLjA4Ny4yMDFsMS40NzEuMzMyLjEwMyAxLjAxNC0xLjM3Ni42MThjLS4wMTIuMDcxLS4wMjcuMTQtLjA0My4yMDhsLS4wMTQuMDU4IDEuMTIyIDEuMDMzLS40MTkuOTI5LTEuNTExLS4xNTJhMy44NTEgMy44NTEgMCAwIDEtLjE3Ni4yMTVsLjQ1MiAxLjQ1LS44MjcuNTk1LTEuMjM2LS44OTItLjA3LjAzMmEyLjk0IDIuOTQgMCAwIDEtLjIxMi4wOTJsLS4zNDEgMS40NjUtMS4wMTUuMDk1em0tLjk1MS0xLjY2bC4xNTEuMDMzYy4wODkuMDIxLjE3OS4wNDIuMjcyLjA1M2wuMDU2LjAwNy41OTcgMS4zNTQuNzI4LS4wNjcuMzMzLTEuNDM1LjA1NC0uMDE4Yy4wODMtLjAyNS4xNjEtLjA2Mi4yNDQtLjEwMS4wNDItLjAyLjA4NC0uMDM5LjEyNy0uMDU3bC4wNTItLjAyMiAxLjIxMS44NzQuNTkzLS40MjctLjQ0Mi0xLjQyMS4wMzgtLjA0M2MuMDg1LS4wOTQuMTYzLS4xODguMjM2LS4yODhsLjAzMy0uMDQ2IDEuNDguMTUuMy0uNjY3LTEuMDk5LTEuMDEyLjAxMi0uMDU1LjAyNS0uMTE3Yy4wMTktLjA4LjAzNy0uMTYuMDQ3LS4yNDRsLjAwNy0uMDU2IDEuMzQ4LS42MDUtLjA3My0uNzI4LTEuNDQxLS4zMjQtLjAxOC0uMDU1Yy0uMDI1LS4wODEtLjA2MS0uMTU3LS4wOTYtLjIzM2EyLjE0NSAyLjE0NSAwIDAgMS0uMDUtLjEwOWwtLjAyMi0uMDUyLjg3NC0xLjIxMi0uNDI3LS41OTMtMS40Mi40NDMtLjA0Mi0uMDM4YTMuODk2IDMuODk2IDAgMCAwLS4yODgtLjIzNUwxNi4yMDcgMTJsLjE0OS0xLjQ4LS42NjctLjMtMS4wMTIgMS4xLS4wNTYtLjAxMWMtLjA0LS4wMDgtLjA4LS4wMTgtLjExOS0uMDI3LS4wODItLjAxOS0uMTYyLS4wMzgtLjI0Ni0uMDQ4bC0uMDU2LS4wMDUtLjYwNy0xLjM0Ni0uNzI3LjA3NC0uMzIzIDEuNDQxLS4wNTQuMDE4Yy0uMDYzLjAyLS4xMjEuMDQ3LS4xOC4wNzQtLjAzNy4wMTctLjA3My4wMzQtLjExMS4wNDlsLS4wNTIuMDIyLTEuMi0uODktLjU5OS40Mi40MjYgMS40MjktLjAzOC4wNDJhNC4wNyA0LjA3IDAgMCAwLS4yNDQuMjg0bC0uMDM0LjA0NS0xLjQ3Ni0uMTY3LS4zMDcuNjYzIDEuMDg2IDEuMDI0LS4wMzQuMTUxYy0uMDIuMDg5LS4wNDEuMTc3LS4wNTIuMjY5bC0uMDA3LjA1Ni0xLjM1OC41OTMuMDY2LjcyOCAxLjQzMS4zMzcuMDE3LjA1NWMuMDI0LjA3Ny4wNTguMTQ4LjA5MS4yMi4wMjEuMDQzLjA0MS4wODYuMDU5LjEzMWwuMDIyLjA1Mi0uODg1IDEuMjAzLjQyMi41OTggMS40MjYtLjQzMi4wNDIuMDM4Yy4wODMuMDc1LjE3OS4xNjMuMjgyLjI0bC4wNDUuMDM1LS4xNjMgMS40NzYuNjY0LjMwNiAxLjAyNC0xLjA4N3pNMjAuOTE4IDIyLjk3MmExLjM1IDEuMzUgMCAxIDEgLjAwMS0yLjY5OSAxLjM1IDEuMzUgMCAwIDEtLjAwMSAyLjY5OXptMC0yLjVjLS42MzQgMC0xLjE1LjUxNy0xLjE1IDEuMTVzLjUxNyAxLjE1IDEuMTUgMS4xNSAxLjE1LS41MTcgMS4xNS0xLjE1LS41MTYtMS4xNS0xLjE1LTEuMTV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWhvdmVyLWJnIiBkPSJNMjQuOTAxIDIyLjAyOHYtLjgxMmwtMS4yNjktLjQyM2EyLjc0NyAyLjc0NyAwIDAgMC0uMjEtLjUwNWwuNTk5LTEuMTk2LS41NzQtLjU3NC0xLjE5Ni41OTlhMi44MSAyLjgxIDAgMCAwLS41MDUtLjIwOWwtLjQyMy0xLjI2OGgtLjgxMWwtLjQyMyAxLjI2OGEyLjgxIDIuODEgMCAwIDAtLjUwNS4yMDlsLTEuMTk3LS41OTktLjU3My41NzQuNTk5IDEuMTk2YTIuNzQ3IDIuNzQ3IDAgMCAwLS4yMS41MDVsLTEuMjY4LjQyM3YuODEybDEuMjY4LjQyMmMuMDU0LjE3NS4xMjQuMzQ1LjIxLjUwNmwtLjU5OSAxLjE5Ni41NzMuNTc0IDEuMTk3LS42Yy4xNjEuMDg3LjMzMS4xNTcuNTA1LjIxbC40MjMgMS4yNjloLjgxMWwuNDIzLTEuMjY5Yy4xNzQtLjA1My4zNDMtLjEyMy41MDUtLjIxbDEuMTk2LjYuNTc0LS41NzQtLjU5OS0xLjE5NmMuMDg2LS4xNjEuMTU2LS4zMzEuMjEtLjUwNmwxLjI2OS0uNDIyem0tMy45ODMuOTQzYy0uNzQ0IDAtMS4zNS0uNjA2LTEuMzUtMS4zNSAwLS43NDQuNjA1LTEuMzUgMS4zNS0xLjM1Ljc0NCAwIDEuMzUuNjA1IDEuMzUgMS4zNSAwIC43NDUtLjYwNiAxLjM1LTEuMzUgMS4zNXoiLz48cGF0aCBjbGFzcz0iaWNvbi1mMTItbHRncmV5LWRpc2FibGVkIiBkPSJNMjEuMzIzIDI1LjYwNGgtLjgxMWwtLjQyMy0xLjI2OWEyLjgxNCAyLjgxNCAwIDAgMS0uNTA1LS4yMDlsLTEuMTk3LjU5OS0uNTczLS41NzQuNTk5LTEuMTk2YTIuNzQ3IDIuNzQ3IDAgMCAxLS4yMS0uNTA1bC0xLjI2OS0uNDIzdi0uODEybDEuMjY5LS40MjJjLjA1NC0uMTc1LjEyNC0uMzQ1LjIxLS41MDZsLS41OTktMS4xOTYuNTczLS41NzMgMS4xOTcuNTk5Yy4xNjEtLjA4Ny4zMzEtLjE1Ny41MDUtLjIxbC40MjMtMS4yNjloLjgxMWwuNDIzIDEuMjY5Yy4xNzQuMDUzLjM0NC4xMjMuNTA1LjIxbDEuMTk2LS41OTkuNTc0LjU3My0uNTk5IDEuMTk2Yy4wODYuMTYxLjE1Ni4zMzEuMjEuNTA2bDEuMjY5LjQyMnYuODEybC0xLjI2OS40MjNhMi43NDcgMi43NDcgMCAwIDEtLjIxLjUwNWwuNTk5IDEuMTk2LS41NzQuNTc0LTEuMTk2LS41OTlhMi44MTQgMi44MTQgMCAwIDEtLjUwNS4yMDlsLS40MjMgMS4yNjl6bS0uNjY2LS4xOTloLjUyMWwuNDExLTEuMjMyLjA1MS0uMDE1Yy4xOTMtLjA1NC4zODItLjEzMi41Ni0uMjMxbC4wNDYtLjAyNiAxLjE2Mi41ODEuMzY5LS4zNjktLjU4LTEuMTYyLjAyNi0uMDQ2Yy4wOTktLjE3OC4xNzctLjM2Ni4yMzItLjU2bC4wMTQtLjA1MSAxLjIzMi0uNDExdi0uNTIzbC0xLjIzMi0uNDEtLjAxNC0uMDUxYTIuODEgMi44MSAwIDAgMC0uMjMyLS41NjFsLS4wMjYtLjA0Ni41OC0xLjE2Mi0uMzY5LS4zNjgtMS4xNjIuNTgtLjA0Ni0uMDI2YTIuNjI3IDIuNjI3IDAgMCAwLS41Ni0uMjMybC0uMDUtLjAxNC0uNDExLTEuMjMyaC0uNTIxbC0uNDExIDEuMjMyLS4wNTEuMDE0YTIuNzU4IDIuNzU4IDAgMCAwLS41Ni4yMzJsLS4wNDYuMDI2LTEuMTYzLS41OC0uMzY4LjM2OC41OCAxLjE2Mi0uMDI2LjA0NmEyLjY3NSAyLjY3NSAwIDAgMC0uMjMyLjU2MWwtLjAxNC4wNTEtMS4yMzIuNDF2LjUyMmwxLjIzMi40MTEuMDE0LjA1MWMuMDU2LjE5My4xMzQuMzgyLjIzMi41NmwuMDI2LjA0Ni0uNTggMS4xNjIuMzY4LjM2OSAxLjE2My0uNTgxLjA0Ni4wMjZjLjE3OC4xLjM2Ni4xNzguNTYuMjMxbC4wNTEuMDE1LjQxIDEuMjMzeiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTgtLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfNV8iIGNsYXNzPSJzdDEiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF81XyIgY2xhc3M9InN0MiIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uaWNucyBiL1BDL2ljb25zL3B5dGhvbi5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNTNlMDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob24uaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uaWNvIGIvUEMvaWNvbnMvcHl0aG9uLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGEzOGVmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9uLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uc3ZnIGIvUEMvaWNvbnMvcHl0aG9uLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjNlNWEzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9uLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdmlzdWFsc3R1ZGlvLW9ubGluZXtmaWxsOiMwMDdhY2N9Lmljb24tdnMtYmd7ZmlsbDojNDI0MjQyfS5pY29uLXZzLWdyZWVue2ZpbGw6IzM5M30uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA0SDJWMmgyOHYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTI5IDR2MjFIM1Y0SDJ2MjJoMjhWNHoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1iZyIgZD0iTTEwIDRIM3YyMWgyNlY0eiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTI5LjE0MSAzbC40MjkuNDI5LS4xNC4xNDItLjQzLS40My0uNDMuNDMtLjE0LS4xNDIuNDI5LS40MjktLjQyOS0uNDI5LjE0MS0uMTQyLjQyOS40My40My0uNDMuMTQxLjE0Mi0uNDMuNDI5ek0yNy42IDIuNGgtMS4ydjEuMmgxLjJWMi40em0tMSAuMmguOHYuOGgtLjh2LS44em0tMS4xMzkuOGgtMXYuMmgxdi0uMnoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1ncmVlbiIgZD0iTTE2IDE0SDV2LTFoMTEuMDMxYy0uMDE0LjA0NC0uMDMxIDEtLjAzMSAxem0tNC01SDV2MWg3Vjl6bS03IDh2MWg4di0xSDV6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDI0LjA2M0MzMS4yNDYgMjUuMTE2IDMwLjU5NSAyNyAyOC4zNDkgMjdIMjd2MS4zMTNjMCAuOTA1LS4zNjggMi41MzctMi45OTYgMy4yOTgtLjkwNC4yNjEtMS43MjguMzg5LTIuNTY2LjM4OS0uODMgMC0xLjU5Ny0uMTI4LTIuNDkyLS4zOTJDMTcuMDI5IDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjI5N2MtMS42OTggMC0yLjk0My0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1LjgzNC0yLjg0NSAzLjA1NC0zLjIzOC43MjgtLjEyOCAxLjQ3NC0uMDY1IDIuMjk2LS4wNjVoLjAwM2MuOTIxIDAgMS43MzUtLjA3IDIuNTM3LjA2NCAxLjgxNi4zMDMgMy4xMSAxLjU4NSAzLjExIDMuMjRWMTZoMS4zNDljMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU4LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF8zXyIgY2xhc3M9InN0MCIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OSAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfM18iIGNsYXNzPSJzdDEiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NGg2Ljg5MmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5pY25zIGIvUEMvaWNvbnMvcHl0aG9udy5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNTRjZjgKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob253LmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5pY28gYi9QQy9pY29ucy9weXRob253LmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTk1ZDQzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9udy5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5zdmcgYi9QQy9pY29ucy9weXRob253LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2IyNjA3Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9udy5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uZ3JhcGgtbGlnaHRncmV5e2ZpbGw6I2RmZGZkZn0uc3Qwe2ZpbGw6I2Y2ZjZmNn0uc3Qxe2ZpbGw6IzY1NjU2NX0uc3Qye2ZpbGw6I2JmYmZiZn0uc3Qze2ZpbGw6I2ZmZn0uc3Q0e2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0NXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJncmFwaC1saWdodGdyZXkiIGQ9Ik0yOSA3SDNWNWgyNnYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA1SDJWM2gyOHYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMjkuMTQxIDRsLjQyOS40MjktLjE0LjE0Mi0uNDMtLjQzLS40My40My0uMTQtLjE0Mi40MjktLjQyOS0uNDI5LS40MjkuMTQxLS4xNDIuNDI5LjQzLjQzLS40My4xNDEuMTQyLS40My40Mjl6TTI3LjYgMy40aC0xLjJ2MS4yaDEuMlYzLjR6bS0xIC4yaC44di44aC0uOHYtLjh6bS0xLjEzOS44aC0xdi4yaDF2LS4yeiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zIDdoMjZ2MTlIM3oiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjkgNXYyMUgzVjVIMnYyMmgyOFY1eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik00IDUuNzVoMnYuNUg0eiIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTIgMTFINXYtMWg3djF6bS03IDd2MWgxMXYtMUg1em0wLTR2MWgxMXYtMUg1eiIgaWQ9Imljb25GZyIvPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0zMS42MTggMTguOTEyQzMwLjk4NCAxNi4zNTYgMjkuNDkgMTYgMjguMzQ5IDE2SDI3di0xLjY5N2MwLTEuNjU0LTEuMjk0LTIuOTM3LTMuMTEtMy4yNC0uODAyLS4xMzMtMS42MTctLjA2My0yLjUzNy0uMDYzaC0uMDAzYy0uODIxIDAtMS41NjgtLjA2My0yLjI5NS4wNjUtMi4yMjEuMzkzLTMuMDU1IDEuMjMzLTMuMDU1IDMuMjM4VjE2aC0uODY4Yy0xLjg4NSAwLTMuMzk0IDEuMDQyLTMuODQ1IDIuOTI0LS40NjkgMS45NDYtLjQ2OSAzLjAyMiAwIDQuOTY3QzExLjc2IDI1Ljg1OSAxMy4wMDUgMjcgMTQuNzAzIDI3SDE2djEuMzEzYzAgMS41MzEgMS4wMjkgMi43MzIgMi45NDYgMy4yOTYuODk2LjI2MyAxLjY2Mi4zOTEgMi40OTIuMzkxLjgzOCAwIDEuNjYxLS4xMjggMi41NjUtLjM5QzI2LjYzMiAzMC44NSAyNyAyOS4yMTggMjcgMjguMzEzVjI3aDEuMzQ5YzIuMjQ2IDAgMi44OTctMS44ODQgMy4yNDctMi45MzcuNTMyLTEuNTkyLjUzOC0zLjA3OS4wMjItNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF82XyIgY2xhc3M9InN0NCIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OCAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfNl8iIGNsYXNzPSJzdDUiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NGg2Ljg5MmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuaWNucyBiL1BDL2ljb25zL3NldHVwLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwZTZiMAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3NldHVwLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuaWNvIGIvUEMvaWNvbnMvc2V0dXAuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDM2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9zZXR1cC5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuc3ZnIGIvUEMvaWNvbnMvc2V0dXAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9zZXR1cC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZpc3VhbHN0dWRpby1vbmxpbmV7ZmlsbDojMDA3YWNjfS5pY29uLWRpc2FibGVkLWdyZXl7ZmlsbDojODQ4NDg0fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6I2YwZWZmMX0uc3Qxe2ZpbGw6IzQyNDI0Mn0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0M3tmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOCA4djEwSDFWOGgxN3ptLTEuMTkxIDE1LjU3MmExLjAwNCAxLjAwNCAwIDAgMC0uOTAzLS41NzJIMi45MDdjLS4zODUgMC0uNzQuMjI1LS45MDMuNTcyTC44ODYgMjUuOTI4QS43NDguNzQ4IDAgMCAwIDEuNTYzIDI3SDE3LjI1YS43NDguNzQ4IDAgMCAwIC42NzctMS4wNzJsLTEuMTE4LTIuMzU2eiIvPjxwYXRoIGNsYXNzPSJpY29uLWRpc2FibGVkLWdyZXkiIGQ9Ik0xNy45MjcgMjUuOTI5bC0xLjExOC0yLjM1NmExLjAwMyAxLjAwMyAwIDAgMC0uOTAzLS41NzNIMi45MDdjLS4zODUgMC0uNzQuMjI1LS45MDMuNTcyTC44ODYgMjUuOTI4QS43NDguNzQ4IDAgMCAwIDEuNTYzIDI3SDE3LjI1YS43NDcuNzQ3IDAgMCAwIC42MzMtLjM0OS43NDYuNzQ2IDAgMCAwIC4wNDQtLjcyMnpNMS45NTkgMjZsLjk0OS0yaDEyLjk5OGwuOTQ5IDJIMS45NTl6TTYgMjJ2LTFoM3YtMmgxdjJoM3YxSDZ6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTAgN3YxMmgxOVY3SDB6bTE4IDExSDFWOGgxN3YxMHoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0xMiA2VjBIN3Y2SDIuNzU1TDkuNSAxMy40OTUgMTYuMjQ1IDZ6Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTggNGgzdjNoM2wtNC41IDVMNSA3aDNWNHptMy0ySDh2MWgzVjJ6bTAtMkg4djFoM1YweiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjU5NiAyNC4wNjNDMzEuMjQ2IDI1LjExNiAzMC41OTUgMjcgMjguMzQ5IDI3SDI3djEuMzEzYzAgLjkwNS0uMzY4IDIuNTM3LTIuOTk3IDMuMjk4LS45MDMuMjYxLTEuNzI3LjM4OS0yLjU2NS4zODktLjgzIDAtMS41OTctLjEyOC0yLjQ5My0uMzkyQzE3LjAyOSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yOTZjLTEuNjk4IDAtMi45NDQtMS4xNDEtMy40MTctMy4xMS0uNDY5LTEuOTQ0LS40NjktMy4wMiAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2MS0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44MzQtMi44NDUgMy4wNTQtMy4yMzguNzI4LS4xMjggMS40NzQtLjA2NSAyLjI5Ni0uMDY1aC4wMDNjLjkyMSAwIDEuNzM1LS4wNyAyLjUzNy4wNjQgMS44MTYuMzAzIDMuMTEgMS41ODUgMy4xMSAzLjI0VjE2aDEuMzQ5YzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OS0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfOV8iIGNsYXNzPSJzdDIiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzkgMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzlfIiBjbGFzcz0ic3QzIiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRIMjguMzQ4YzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5jIGIvUEMvbGF1bmNoZXIuYwppbmRleCA0MGQ0Y2I1Li5kMTFkZjQzIDEwMDY0NAotLS0gYS9QQy9sYXVuY2hlci5jCisrKyBiL1BDL2xhdW5jaGVyLmMKQEAgLTk4LDcgKzk4LDcgQEAKICAgICBNZXNzYWdlQm94KE5VTEwsIG1lc3NhZ2UsIFRFWFQoIlB5dGhvbiBMYXVuY2hlciBpcyBzb3JyeSB0byBzYXkgLi4uIiksCiAgICAgICAgICAgICAgICBNQl9PSyk7CiAjZW5kaWYKLSAgICBFeGl0UHJvY2VzcyhyYyk7CisgICAgZXhpdChyYyk7CiB9CiAKIC8qCkBAIC00NjUsNyArNDY1LDcgQEAKIH0KIAogc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgotbG9jYXRlX3B5dGhvbih3Y2hhcl90ICogd2FudGVkX3ZlcikKK2xvY2F0ZV9weXRob24od2NoYXJfdCAqIHdhbnRlZF92ZXIsIEJPT0wgZnJvbV9zaGViYW5nKQogewogICAgIHN0YXRpYyB3Y2hhcl90IGNvbmZpZ19rZXkgW10gPSB7IEwicHl0aG9uWCIgfTsKICAgICBzdGF0aWMgd2NoYXJfdCAqIGxhc3RfY2hhciA9ICZjb25maWdfa2V5W3NpemVvZihjb25maWdfa2V5KSAvCkBAIC00OTcsMTAgKzQ5NywxNyBAQAogICAgICAgICBjb25maWd1cmVkX3ZhbHVlID0gZ2V0X2NvbmZpZ3VyZWRfdmFsdWUoY29uZmlnX2tleSk7CiAgICAgICAgIGlmIChjb25maWd1cmVkX3ZhbHVlKQogICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihjb25maWd1cmVkX3ZhbHVlKTsKKyAgICAgICAgLyogTm90IGZvdW5kIGEgdmFsdWUgeWV0IC0gdHJ5IGJ5IG1ham9yIHZlcnNpb24uCisgICAgICAgICAqIElmIHdlJ3JlIGxvb2tpbmcgZm9yIGFuIGludGVycHJldGVyIHNwZWNpZmllZCBpbiBhIHNoZWJhbmcgbGluZSwKKyAgICAgICAgICogd2Ugd2FudCB0byB0cnkgUHl0aG9uIDIgZmlyc3QsIHRoZW4gUHl0aG9uIDMgKGZvciBVbml4IGFuZCBiYWNrd2FyZAorICAgICAgICAgKiBjb21wYXRpYmlsaXR5KS4gSWYgd2UncmUgYmVpbmcgY2FsbGVkIGludGVyYWN0aXZlbHksIGFzc3VtZSB0aGUgdXNlcgorICAgICAgICAgKiB3YW50cyB0aGUgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxlLCBzbyB0cnkgUHl0aG9uIDMgZmlyc3QsIHRoZW4KKyAgICAgICAgICogUHl0aG9uIDIuCisgICAgICAgICAqLwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMiIpOworICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihmcm9tX3NoZWJhbmcgPyBMIjIiIDogTCIzIik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIzIik7CisgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKGZyb21fc2hlYmFuZyA/IEwiMyIgOiBMIjIiKTsKICAgICAgICAgZGVidWcoTCJzZWFyY2ggZm9yIGRlZmF1bHQgUHl0aG9uIGZvdW5kICIpOwogICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICBkZWJ1ZyhMInZlcnNpb24gJWxzIGF0ICclbHMnXG4iLApAQCAtNjU1LDcgKzY2Miw3IEBACiAgICAgaWYgKCFvaykKICAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiRmFpbGVkIHRvIGdldCBleGl0IGNvZGUgb2YgcHJvY2VzcyIpOwogICAgIGRlYnVnKEwiY2hpbGQgcHJvY2VzcyBleGl0IGNvZGU6ICVkXG4iLCByYyk7Ci0gICAgRXhpdFByb2Nlc3MocmMpOworICAgIGV4aXQocmMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTA4Miw3ICsxMDg5LDcgQEAKICAgICB7IDMxOTAsIDMyMzAsIEwiMy4zIiB9LAogICAgIHsgMzI1MCwgMzMxMCwgTCIzLjQiIH0sCiAgICAgeyAzMzIwLCAzMzUxLCBMIjMuNSIgfSwKLSAgICB7IDMzNjAsIDMzNjEsIEwiMy42IiB9LAorICAgIHsgMzM2MCwgMzM3OSwgTCIzLjYiIH0sCiAgICAgeyAwIH0KIH07CiAKQEAgLTEwOTQsNyArMTEwMSw3IEBACiAKICAgICBmb3IgKG1wID0gbWFnaWNfdmFsdWVzOyBtcC0+bWluOyBtcCsrKSB7CiAgICAgICAgIGlmICgobWFnaWMgPj0gbXAtPm1pbikgJiYgKG1hZ2ljIDw9IG1wLT5tYXgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBsb2NhdGVfcHl0aG9uKG1wLT52ZXJzaW9uKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0ZV9weXRob24obXAtPnZlcnNpb24sIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTExNCw3ICsxMTIxLDcgQEAKICAqLwogICAgIEZJTEUgKiBmcDsKICAgICBlcnJub190IHJjID0gX3dmb3Blbl9zKCZmcCwgKmFyZ3YsIEwicmIiKTsKLSAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcltCVUZTSVpFXTsKKyAgICBjaGFyIGJ1ZmZlcltCVUZTSVpFXTsKICAgICB3Y2hhcl90IHNoZWJhbmdfbGluZVtCVUZTSVpFICsgMV07CiAgICAgc2l6ZV90IHJlYWQ7CiAgICAgY2hhciAqcDsKQEAgLTExMzYsNyArMTE0Myw4IEBACiAgICAgICAgIGZjbG9zZShmcCk7CiAKICAgICAgICAgaWYgKChyZWFkID49IDQpICYmIChidWZmZXJbM10gPT0gJ1xuJykgJiYgKGJ1ZmZlclsyXSA9PSAnXHInKSkgewotICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKChidWZmZXJbMV0gPDwgOCB8IGJ1ZmZlclswXSkgJiAweEZGRkYpOworICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKCgoKHVuc2lnbmVkIGNoYXIpYnVmZmVyWzFdKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpYnVmZmVyWzBdKSAmIDB4RkZGRik7CiAgICAgICAgICAgICBpZiAoaXAgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGRlYnVnKEwic2NyaXB0IGZpbGUgaXMgY29tcGlsZWQgYWdhaW5zdCBQeXRob24gJWxzXG4iLAogICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uKTsKQEAgLTEyNzgsNyArMTI4Niw3IEBACiBmb2xsb3dlZCBieSBhIHZhbGlkIHZlcnNpb24gc3BlY2lmaWVyLlxuUGxlYXNlIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPIGNvdWxkIGNhbGwgdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQsIFRSVUUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uIFwKICglbHMpIGlzIG5vdCBpbnN0YWxsZWQiLCBjb21tYW5kKTsKQEAgLTEzNjIsNiArMTM3MCw3IEBACiAgICAgd2NoYXJfdCAqIGF2WzJdOwogI2VuZGlmCiAKKyAgICBzZXR2YnVmKHN0ZGVyciwgKGNoYXIgKilOVUxMLCBfSU9OQkYsIDApOwogICAgIHdwID0gZ2V0X2VudihMIlBZTEFVTkNIX0RFQlVHIik7CiAgICAgaWYgKCh3cCAhPSBOVUxMKSAmJiAoKndwICE9IEwnXDAnKSkKICAgICAgICAgbG9nX2ZwID0gc3RkZXJyOwpAQCAtMTQ4Myw3ICsxNDkyLDcgQEAKICAgICAgICAgcGxlbiA9IHdjc2xlbihwKTsKICAgICAgICAgdmFsaWQgPSAoKnAgPT0gTCctJykgJiYgdmFsaWRhdGVfdmVyc2lvbigmcFsxXSk7CiAgICAgICAgIGlmICh2YWxpZCkgewotICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKCZwWzFdKTsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbigmcFsxXSwgRkFMU0UpOwogICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiAoJWxzKSBub3QgXAogaW5zdGFsbGVkIiwgJnBbMV0pOwpAQCAtMTUxMCw3ICsxNTE5LDcgQEAKIAogICAgICAgICAvKiBJZiB3ZSBkaWRuJ3QgZmluZCBvbmUsIGxvb2sgZm9yIHRoZSBkZWZhdWx0IFB5dGhvbiAqLwogICAgICAgICBpZiAoZXhlY3V0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiKTsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIsIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJDYW4ndCBmaW5kIGEgZGVmYXVsdCBQeXRob24uIik7CiAgICAgICAgICAgICBleGVjdXRhYmxlID0gaXAtPmV4ZWN1dGFibGU7CmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5pY28gYi9QQy9sYXVuY2hlci5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZDdkNTcuLjAwMDAwMDAKLS0tIGEvUEMvbGF1bmNoZXIuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvbXN2Y3J0bW9kdWxlLmMgYi9QQy9tc3ZjcnRtb2R1bGUuYwppbmRleCBiMDczOWQwLi5jOWQxZTZjIDEwMDY0NAotLS0gYS9QQy9tc3ZjcnRtb2R1bGUuYworKysgYi9QQy9tc3ZjcnRtb2R1bGUuYwpAQCAtMzMsMTIgKzMzLDEyIEBACiAjZW5kaWYKIAogLypbcHl0aG9uIGlucHV0XQotY2xhc3MgUHlfaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCitjbGFzcyBpbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnRwdHJfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciX1B5X1BBUlNFX0lOVFBUUiInCiAKIGNsYXNzIGhhbmRsZV9yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICB0eXBlID0gJ2ludHB0cl90JwogICAgIGNhc3QgPSAnKHZvaWQgKiknCiAgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVZvaWRQdHInCiAKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpO1xuJykKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZhNTRmYzRlNzNkMGIzNjddKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWI1OWYxNjYzZGJhMTE5OTddKi8KIAogLypbY2xpbmljIGlucHV0XQogbW9kdWxlIG1zdmNydApAQCAtMTQ4LDcgKzE0OCw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUgLT4gbG9uZwogCi0gICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGhhbmRsZTogaW50cHRyX3QKICAgICBmbGFnczogaW50CiAgICAgLwogCkBAIC0xNjAsOCArMTYwLDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGxvbmcKLW1zdmNydF9vcGVuX29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwgaW50IGZsYWdzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmNjVlNDIyMjQzYTM5ZjkgaW5wdXQ9NGQ4NTE2ZWQzMmRiOGY2NV0qLworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2VkZTg3MWJmOTM5ZDZlMyBpbnB1dD1jYjIxMDhiYmVhODQ1MTRlXSovCiB7CiAgICAgaW50IGZkOwogCkBAIC0xODMsMjIgKzE4MywxNyBAQAogUmFpc2VzIElPRXJyb3IgaWYgZmQgaXMgbm90IHJlY29nbml6ZWQuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLXN0YXRpYyBQeV9pbnRwdHJfdAorc3RhdGljIGludHB0cl90CiBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYWM0NzY0MzMzOGMwYmFhIGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03Y2U3NjFkZDBkZTJiNTAzIGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KIHsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGUgPSAtMTsKKyAgICBpbnRwdHJfdCBoYW5kbGUgPSAtMTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgfQotICAgIGVsc2UgewogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIGhhbmRsZSA9IF9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAotICAgICAgICBpZiAoaGFuZGxlID09IC0xKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIH0KKyAgICBpZiAoaGFuZGxlID09IC0xKQorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKICAgICByZXR1cm4gaGFuZGxlOwogfQpAQCAtNTQwLDcgKzUzNSw2IEBACiAjZW5kaWYKIAogICAgIC8qIGNvbnN0YW50cyBmb3IgdGhlIGNydCB2ZXJzaW9ucyAqLwotICAgICh2b2lkKXN0OwogI2lmZGVmIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTgogICAgIHN0ID0gUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIlZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTik7CkBAIC01NjYsNiArNTYwLDggQEAKICAgICBzdCA9IFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ1JUX0FTU0VNQkxZX1ZFUlNJT04iLCB2ZXJzaW9uKTsKICAgICBpZiAoc3QgPCAwKSByZXR1cm4gTlVMTDsKICNlbmRpZgorICAgIC8qIG1ha2UgY29tcGlsZXIgd2FybmluZyBxdWlldCBpZiBzdCBpcyB1bnVzZWQgKi8KKyAgICAodm9pZClzdDsKIAogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvUEMvcHkuaWNvIGIvUEMvcHkuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzU3YWVmLi4wMDAwMDAwCi0tLSBhL1BDL3B5LmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL3B5Yy5pY28gYi9QQy9weWMuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2JkMmIxLi4wMDAwMDAwCi0tLSBhL1BDL3B5Yy5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9weWNvbi5pY28gYi9QQy9weWNvbi5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYjYyOWUuLjAwMDAwMDAKLS0tIGEvUEMvcHljb24uaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvcHljb25maWcuaCBiL1BDL3B5Y29uZmlnLmgKaW5kZXggYWM0ZjhmMi4uNjRlN2FlYyAxMDA2NDQKLS0tIGEvUEMvcHljb25maWcuaAorKysgYi9QQy9weWNvbmZpZy5oCkBAIC0xNCw3ICsxNCw2IEBACiBNU19XSU42NCAtIENvZGUgc3BlY2lmaWMgdG8gdGhlIE1TIFdpbjY0IEFQSQogTVNfV0lOMzIgLSBDb2RlIHNwZWNpZmljIHRvIHRoZSBNUyBXaW4zMiAoYW5kIFdpbjY0KSBBUEkgKG9ic29sZXRlLCB0aGlzIGNvdmVycyBhbGwgc3VwcG9ydGVkIEFQSXMpCiBNU19XSU5ET1dTIC0gQ29kZSBzcGVjaWZpYyB0byBXaW5kb3dzLCBidXQgYWxsIHZlcnNpb25zLgotTVNfV0lOQ0UgLSBDb2RlIHNwZWNpZmljIHRvIFdpbmRvd3MgQ0UKIFB5X0VOQUJMRV9TSEFSRUQgLSBDb2RlIGlmIHRoZSBQeXRob24gY29yZSBpcyBidWlsdCBhcyBhIERMTC4KIAogQWxzbyBub3RlIHRoYXQgbmVpdGhlciAiX01fSVg4NiIgb3IgIl9NU0NfVkVSIiBzaG91bGQgYmUgdXNlZCBmb3IKQEAgLTMwLDEwICsyOSw2IEBACiAKICovCiAKLSNpZmRlZiBfV0lOMzJfV0NFCi0jZGVmaW5lIE1TX1dJTkNFCi0jZW5kaWYKLQogLyogRGVwcmVjYXRlZCBVU0VfRExfRVhQT1JUIG1hY3JvIC0gcGxlYXNlIHVzZSBQeV9CVUlMRF9DT1JFICovCiAjaWZkZWYgVVNFX0RMX0VYUE9SVAogIwlkZWZpbmUgUHlfQlVJTERfQ09SRQpAQCAtNTMsOCArNDgsNiBAQAogI2RlZmluZSBfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIDEKICNlbmRpZgogCi0vKiBXaW5kb3dzIENFIGRvZXMgbm90IGhhdmUgdGhlc2UgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9JT19ICiAjZGVmaW5lIEhBVkVfU1lTX1VUSU1FX0gKICNkZWZpbmUgSEFWRV9URU1QTkFNCkBAIC02MiwxMSArNTUsOCBAQAogI2RlZmluZSBIQVZFX1RNUE5BTQogI2RlZmluZSBIQVZFX0NMT0NLCiAjZGVmaW5lIEhBVkVfU1RSRVJST1IKLSNlbmRpZgogCi0jaWZkZWYgSEFWRV9JT19ICiAjaW5jbHVkZSA8aW8uaD4KLSNlbmRpZgogCiAjZGVmaW5lIEhBVkVfSFlQT1QKICNkZWZpbmUgSEFWRV9TVFJGVElNRQpAQCAtODYsMTcgKzc2LDYgQEAKICNkZWZpbmUgVVNFX1NPQ0tFVAogI2VuZGlmCiAKLS8qIENFNiBkb2Vzbid0IGhhdmUgc3RyZHVwKCkgYnV0IF9zdHJkdXAoKS4gQXNzdW1lIHRoZSBzYW1lIGZvciBlYXJsaWVyIHZlcnNpb25zLiAqLwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0jICBpbmNsdWRlIDxzdGRsaWIuaD4KLSMgIGRlZmluZSBzdHJkdXAgX3N0cmR1cAotI2VuZGlmCi0KLSNpZmRlZiBNU19XSU5DRQotLyogV2luZG93cyBDRSBkb2VzIG5vdCBzdXBwb3J0IGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwotI2RlZmluZSBnZXRlbnYodikgKE5VTEwpCi0jZGVmaW5lIGVudmlyb24gKE5VTEwpCi0jZW5kaWYKIAogLyogQ29tcGlsZXIgc3BlY2lmaWMgZGVmaW5lcyAqLwogCkBAIC0yODYsNyArMjY1LDYgQEAKICNlbmRpZgogCiAvKiA2NCBiaXQgaW50cyBhcmUgdXN1YWxseSBzcGVsdCBfX2ludDY0IHVubGVzcyBjb21waWxlciBoYXMgb3ZlcnJpZGRlbiAqLwotI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAxCiAjaWZuZGVmIFBZX0xPTkdfTE9ORwogIwlkZWZpbmUgUFlfTE9OR19MT05HIF9faW50NjQKICMJZGVmaW5lIFBZX0xMT05HX01BWCBfSTY0X01BWApAQCAtMzEyLDExICsyOTAsMTEgQEAKIAkJCXRoZWlyIE1ha2VmaWxlIChvdGhlciBjb21waWxlcnMgYXJlIGdlbmVyYWxseQogCQkJdGFrZW4gY2FyZSBvZiBieSBkaXN0dXRpbHMuKSAqLwogIwkJCWlmIGRlZmluZWQoX0RFQlVHKQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM1X2QubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNl9kLmxpYiIpCiAjCQkJZWxpZiBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQogIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMubGliIikKICMJCQllbHNlCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzUubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNi5saWIiKQogIwkJCWVuZGlmIC8qIF9ERUJVRyAqLwogIwkJZW5kaWYgLyogX01TQ19WRVIgKi8KICMJZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwpAQCAtMzg3LDM5ICszNjUsMTAgQEAKIAogLyogZGVmaW5lIHNpZ25lZCBhbmQgdW5zaWduZWQgZXhhY3Qtd2lkdGggMzItYml0IGFuZCA2NC1iaXQgdHlwZXMsIHVzZWQgaW4gdGhlCiAgICBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gaW50ZWdlcnMuICovCi0jaWZuZGVmIFBZX1VJTlQzMl9UCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci0jZGVmaW5lIEhBVkVfVUlOVDMyX1QgMQotI2RlZmluZSBQWV9VSU5UMzJfVCB1bnNpZ25lZCBpbnQKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLSNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxCi0jZGVmaW5lIFBZX1VJTlQzMl9UIHVuc2lnbmVkIGxvbmcKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgUFlfVUlOVDY0X1QKLSNpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKLSNkZWZpbmUgSEFWRV9VSU5UNjRfVCAxCi0jZGVmaW5lIFBZX1VJTlQ2NF9UIHVuc2lnbmVkIFBZX0xPTkdfTE9ORwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9JTlQzMl9UCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZGVmaW5lIFBZX0lOVDMyX1QgaW50Ci0jZWxpZiBTSVpFT0ZfTE9ORyA9PSA0Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZGVmaW5lIFBZX0lOVDMyX1QgbG9uZwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9JTlQ2NF9UCi0jaWYgU0laRU9GX0xPTkdfTE9ORyA9PSA4Ci0jZGVmaW5lIEhBVkVfSU5UNjRfVCAxCi0jZGVmaW5lIFBZX0lOVDY0X1QgUFlfTE9OR19MT05HCi0jZW5kaWYKLSNlbmRpZgorI2RlZmluZSBQWV9VSU5UMzJfVCB1aW50MzJfdAorI2RlZmluZSBQWV9VSU5UNjRfVCB1aW50NjRfdAorI2RlZmluZSBQWV9JTlQzMl9UIGludDMyX3QKKyNkZWZpbmUgUFlfSU5UNjRfVCBpbnQ2NF90CiAKIC8qIEZhaXJseSBzdGFuZGFyZCBmcm9tIGhlcmUhICovCiAKQEAgLTQ0OCwxNCArMzk3LDEwIEBACiAvKiAjZGVmaW5lIGNvbnN0ICAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGNvbmlvLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0NPTklPX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0RJUkVDVF9IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZGlyZW50LmguICAqLwogLyogI2RlZmluZSBESVJFTlQgMSAqLwpAQCAtNTI4LDkgKzQ3Myw3IEBACiAvKiAjZGVmaW5lIEhBVkVfQUxUWk9ORSAqLwogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHB1dGVudiBmdW5jdGlvbi4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfUFVURU5WCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgc3VwcG9ydHMgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwogI2RlZmluZSBIQVZFX1BST1RPVFlQRVMKQEAgLTU1OCw5ICs1MDEsNyBAQAogI2RlZmluZSBIQVZFX0RZTkFNSUNfTE9BRElORwogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZnRpbWUuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0ZUSU1FCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGdldHBlZXJuYW1lLiAgKi8KICNkZWZpbmUgSEFWRV9HRVRQRUVSTkFNRQpAQCAtNTY5LDkgKzUxMCw3IEBACiAvKiAjdW5kZWYgSEFWRV9HRVRQR1JQICovCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBnZXRwaWQuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0dFVFBJRAotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBnZXR0aW1lb2ZkYXkuICAqLwogLyogI3VuZGVmIEhBVkVfR0VUVElNRU9GREFZICovCkBAIC02MzMsMTQgKzU3MiwxMCBAQAogI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2NzY29sbCcgZnVuY3Rpb24uICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfV0NTQ09MTCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3Y3N4ZnJtJyBmdW5jdGlvbi4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9XQ1NYRlJNIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgdGhlIHpsaWIgbGlicmFyeSBoYXMgaW5mbGF0ZUNvcHkgKi8KICNkZWZpbmUgSEFWRV9aTElCX0NPUFkgMQpAQCAtNjQ5LDI0ICs1ODQsMTYgQEAKIC8qICN1bmRlZiBIQVZFX0RMRkNOX0ggKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlcnJuby5oPiBoZWFkZXIgZmlsZS4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfRkNOVExfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwcm9jZXNzLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1BST0NFU1NfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzaWduYWwuaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU0lHTkFMX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGFyZy5oPiBwcm90b3R5cGVzLiAgKi8KICNkZWZpbmUgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwpAQCAtNjg0LDkgKzYxMSw3IEBACiAvKiAjZGVmaW5lIEhBVkVfU1lTX1NFTEVDVF9IIDEgKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVhZGVyIGZpbGUuICAqLwogLyogI2RlZmluZSBIQVZFX1NZU19USU1FX0ggMSAqLwpAQCAtNjk1LDkgKzYyMCw3IEBACiAvKiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVTX0ggMSAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91bi5oPiBoZWFkZXIgZmlsZS4gICovCiAvKiAjZGVmaW5lIEhBVkVfU1lTX1VOX0ggMSAqLwpAQCAtNzIwLDYgKzY0Myw5IEBACiAvKiBUaGUgc2l6ZSBvZiBgd2NoYXJfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX1dDSEFSX1QgMgogCisvKiBUaGUgc2l6ZSBvZiBgX0Jvb2wnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9fQk9PTCAxCisKIC8qIFRoZSBzaXplIG9mIGBwaWRfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX1BJRF9UIFNJWkVPRl9JTlQKIApkaWZmIC0tZ2l0IGEvUEMvcHlsYXVuY2hlci5yYyBiL1BDL3B5bGF1bmNoZXIucmMKaW5kZXggYThkYjBhOC4uM2RhMzQ0NSAxMDA2NDQKLS0tIGEvUEMvcHlsYXVuY2hlci5yYworKysgYi9QQy9weWxhdW5jaGVyLnJjCkBAIC03LDkgKzcsMTMgQEAKICNpbmNsdWRlIDx3aW51c2VyLmg+CiAxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKLTEgSUNPTiBESVNDQVJEQUJMRSAibGF1bmNoZXIuaWNvIiAKLTIgSUNPTiBESVNDQVJEQUJMRSAicHkuaWNvIiAKLTMgSUNPTiBESVNDQVJEQUJMRSAicHljLmljbyIgCisxIElDT04gRElTQ0FSREFCTEUgImljb25zXGxhdW5jaGVyLmljbyIgCisyIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5LmljbyIgCiszIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5Yy5pY28iIAorNCBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweWQuaWNvIiAKKzUgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9uLmljbyIKKzYgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9udy5pY28iCis3IElDT04gRElTQ0FSREFCTEUgImljb25zXHNldHVwLmljbyIgCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLwpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uLm1hbmlmZXN0IGIvUEMvcHl0aG9uLm1hbmlmZXN0CmluZGV4IGQ2ZTRiYmEuLjRlNzNkNjAgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbi5tYW5pZmVzdAorKysgYi9QQy9weXRob24ubWFuaWZlc3QKQEAgLTE2LDEwICsxNiwxNSBAQAogICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7OGUwZjdhMTItYmZiMy00ZmU4LWI5YTUtNDhmZDUwYTE1YTlhfSIvPgogICAgIDwvYXBwbGljYXRpb24+IAogICA8L2NvbXBhdGliaWxpdHk+CisgIDxhcHBsaWNhdGlvbiB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTphc20udjMiPgorICAgIDx3aW5kb3dzU2V0dGluZ3M+CisgICAgICA8bG9uZ1BhdGhBd2FyZSB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9TTUkvMjAxNi9XaW5kb3dzU2V0dGluZ3MiPnRydWU8L2xvbmdQYXRoQXdhcmU+CisgICAgPC93aW5kb3dzU2V0dGluZ3M+CisgIDwvYXBwbGljYXRpb24+CiAgIDxkZXBlbmRlbmN5PgogICAgIDxkZXBlbmRlbnRBc3NlbWJseT4KICAgICAgIDxhc3NlbWJseUlkZW50aXR5IHR5cGU9IndpbjMyIiBuYW1lPSJNaWNyb3NvZnQuV2luZG93cy5Db21tb24tQ29udHJvbHMiCiAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPSI2LjAuMC4wIiBwcm9jZXNzb3JBcmNoaXRlY3R1cmU9IioiIHB1YmxpY0tleVRva2VuPSI2NTk1YjY0MTQ0Y2NmMWRmIiBsYW5ndWFnZT0iKiIgLz4KICAgICA8L2RlcGVuZGVudEFzc2VtYmx5PgogICA8L2RlcGVuZGVuY3k+Ci08L2Fzc2VtYmx5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvYXNzZW1ibHk+CmRpZmYgLS1naXQgYS9QQy9weXRob24zLmRlZiBiL1BDL3B5dGhvbjMuZGVmCmluZGV4IDg4YzA3NDIuLmU4ZDJkOGMgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMuZGVmCisrKyBiL1BDL3B5dGhvbjMuZGVmCkBAIC0yLDcxMiArMiw3MTMgQEAKIDsgSXQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nIHB5dGhvbjNkbGwudmN4cHJvagogTElCUkFSWQkicHl0aG9uMyIKIEVYUE9SVFMKLSAgUHlBcmdfUGFyc2U9cHl0aG9uMzUuUHlBcmdfUGFyc2UKLSAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzUuUHlBcmdfVW5wYWNrVHVwbGUKLSAgUHlBcmdfVmFQYXJzZT1weXRob24zNS5QeUFyZ19WYVBhcnNlCi0gIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNS5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLSAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQotICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzUuUHlCb29sX0Zyb21Mb25nCi0gIFB5Qm9vbF9UeXBlPXB5dGhvbjM1LlB5Qm9vbF9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNS5QeUJ5dGVBcnJheV9Bc1N0cmluZwotICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzUuUHlCeXRlQXJyYXlfQ29uY2F0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfUmVzaXplCi0gIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfU2l6ZQotICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQotICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZXNfQXNTdHJpbmcKLSAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzUuUHlCeXRlc19Db25jYXQKLSAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzUuUHlCeXRlc19Db25jYXRBbmREZWwKLSAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlCeXRlc19EZWNvZGVFc2NhcGUKLSAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdAotICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKLSAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbU9iamVjdAotICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nCi0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzUuUHlCeXRlc19SZXByCi0gIFB5Qnl0ZXNfU2l6ZT1weXRob24zNS5QeUJ5dGVzX1NpemUKLSAgUHlCeXRlc19UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNfVHlwZSBEQVRBCi0gIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2FsbAotICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLSAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLSAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRTZWxmCi0gIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNS5QeUNGdW5jdGlvbl9OZXcKLSAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzUuUHlDRnVuY3Rpb25fTmV3RXgKLSAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNS5QeUNGdW5jdGlvbl9UeXBlIERBVEEKLSAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzUuUHlDYWxsSXRlcl9OZXcKLSAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM1LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCi0gIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzUuUHlDYWxsYWJsZV9DaGVjawotICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNS5QeUNhcHN1bGVfR2V0Q29udGV4dAotICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNS5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNS5QeUNhcHN1bGVfR2V0TmFtZQotICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNS5QeUNhcHN1bGVfR2V0UG9pbnRlcgotICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9JbXBvcnQKLSAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzUuUHlDYXBzdWxlX0lzVmFsaWQKLSAgUHlDYXBzdWxlX05ldz1weXRob24zNS5QeUNhcHN1bGVfTmV3Ci0gIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXROYW1lCi0gIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM1LlB5Q2Fwc3VsZV9UeXBlIERBVEEKLSAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzUuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlCi0gIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0RlY29kZXIKLSAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGUKLSAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRW5jb2RlcgotICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0lnbm9yZUVycm9ycwotICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgotICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzUuUHlDb2RlY19Lbm93bkVuY29kaW5nCi0gIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19Mb29rdXBFcnJvcgotICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXIKLSAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgotICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19SZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtUmVhZGVyCi0gIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtV3JpdGVyCi0gIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfU3RyaWN0RXJyb3JzCi0gIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycwotICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzUuUHlDb21wbGV4X0Zyb21Eb3VibGVzCi0gIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzUuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQotICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM1LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKLSAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzUuUHlDb21wbGV4X1R5cGUgREFUQQotICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM1LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKLSAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzUuUHlEZXNjcl9OZXdHZXRTZXQKLSAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZW1iZXIKLSAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZXRob2QKLSAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNS5QeURpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNS5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKLSAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM1LlB5RGljdEtleXNfVHlwZSBEQVRBCi0gIFB5RGljdFByb3h5X05ldz1weXRob24zNS5QeURpY3RQcm94eV9OZXcKLSAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNS5QeURpY3RQcm94eV9UeXBlIERBVEEKLSAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzUuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQotICBQeURpY3RfQ2xlYXI9cHl0aG9uMzUuUHlEaWN0X0NsZWFyCi0gIFB5RGljdF9Db250YWlucz1weXRob24zNS5QeURpY3RfQ29udGFpbnMKLSAgUHlEaWN0X0NvcHk9cHl0aG9uMzUuUHlEaWN0X0NvcHkKLSAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW0KLSAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW0KLSAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKLSAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM1LlB5RGljdF9JdGVtcwotICBQeURpY3RfS2V5cz1weXRob24zNS5QeURpY3RfS2V5cwotICBQeURpY3RfTWVyZ2U9cHl0aG9uMzUuUHlEaWN0X01lcmdlCi0gIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM1LlB5RGljdF9NZXJnZUZyb21TZXEyCi0gIFB5RGljdF9OZXc9cHl0aG9uMzUuUHlEaWN0X05ldwotICBQeURpY3RfTmV4dD1weXRob24zNS5QeURpY3RfTmV4dAotICBQeURpY3RfU2V0SXRlbT1weXRob24zNS5QeURpY3RfU2V0SXRlbQotICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfU2V0SXRlbVN0cmluZwotICBQeURpY3RfU2l6ZT1weXRob24zNS5QeURpY3RfU2l6ZQotICBQeURpY3RfVHlwZT1weXRob24zNS5QeURpY3RfVHlwZSBEQVRBCi0gIFB5RGljdF9VcGRhdGU9cHl0aG9uMzUuUHlEaWN0X1VwZGF0ZQotICBQeURpY3RfVmFsdWVzPXB5dGhvbjM1LlB5RGljdF9WYWx1ZXMKLSAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM1LlB5RWxsaXBzaXNfVHlwZSBEQVRBCi0gIFB5RW51bV9UeXBlPXB5dGhvbjM1LlB5RW51bV9UeXBlIERBVEEKLSAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzUuUHlFcnJfQmFkQXJndW1lbnQKLSAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1LlB5RXJyX0JhZEludGVybmFsQ2FsbAotICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzUuUHlFcnJfQ2hlY2tTaWduYWxzCi0gIFB5RXJyX0NsZWFyPXB5dGhvbjM1LlB5RXJyX0NsZWFyCi0gIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzUuUHlFcnJfRGlzcGxheQotICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfRmV0Y2g9cHl0aG9uMzUuUHlFcnJfRmV0Y2gKLSAgUHlFcnJfRm9ybWF0PXB5dGhvbjM1LlB5RXJyX0Zvcm1hdAotICBQeUVycl9Gb3JtYXRWPXB5dGhvbjM1LlB5RXJyX0Zvcm1hdFYKLSAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uCi0gIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYwotICBQeUVycl9Ob01lbW9yeT1weXRob24zNS5QeUVycl9Ob01lbW9yeQotICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCi0gIFB5RXJyX09jY3VycmVkPXB5dGhvbjM1LlB5RXJyX09jY3VycmVkCi0gIFB5RXJyX1ByaW50PXB5dGhvbjM1LlB5RXJyX1ByaW50Ci0gIFB5RXJyX1ByaW50RXg9cHl0aG9uMzUuUHlFcnJfUHJpbnRFeAotICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNS5QeUVycl9Qcm9ncmFtVGV4dAotICBQeUVycl9SZXN0b3JlPXB5dGhvbjM1LlB5RXJyX1Jlc3RvcmUKLSAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJubwotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKLSAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM1LlB5RXJyX1NldEludGVycnVwdAotICBQeUVycl9TZXROb25lPXB5dGhvbjM1LlB5RXJyX1NldE5vbmUKLSAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldE9iamVjdAotICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzUuUHlFcnJfU2V0U3RyaW5nCi0gIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM1LlB5RXJyX1N5bnRheExvY2F0aW9uCi0gIFB5RXJyX1dhcm5FeD1weXRob24zNS5QeUVycl9XYXJuRXgKLSAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM1LlB5RXJyX1dhcm5FeHBsaWNpdAotICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM1LlB5RXJyX1dhcm5Gb3JtYXQKLSAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM1LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQotICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzUuUHlFdmFsX0FjcXVpcmVMb2NrCi0gIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9BY3F1aXJlVGhyZWFkCi0gIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzUuUHlFdmFsX0NhbGxGdW5jdGlvbgotICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNS5QeUV2YWxfQ2FsbE1ldGhvZAotICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNS5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzUuUHlFdmFsX0V2YWxDb2RlCi0gIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM1LlB5RXZhbF9FdmFsQ29kZUV4Ci0gIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZQotICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZUV4Ci0gIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNS5QeUV2YWxfR2V0QnVpbHRpbnMKLSAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNS5QeUV2YWxfR2V0Q2FsbFN0YXRzCi0gIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNS5QeUV2YWxfR2V0RnJhbWUKLSAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM1LlB5RXZhbF9HZXRGdW5jRGVzYwotICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzUuUHlFdmFsX0dldEZ1bmNOYW1lCi0gIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM1LlB5RXZhbF9HZXRHbG9iYWxzCi0gIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzUuUHlFdmFsX0dldExvY2FscwotICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzUuUHlFdmFsX0luaXRUaHJlYWRzCi0gIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM1LlB5RXZhbF9SZUluaXRUaHJlYWRzCi0gIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNS5QeUV2YWxfUmVsZWFzZUxvY2sKLSAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1JlbGVhc2VUaHJlYWQKLSAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKLSAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1NhdmVUaHJlYWQKLSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNS5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCi0gIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNS5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQotICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNS5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM1LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKLSAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNS5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzUuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQotICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKLSAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM1LlB5RXhjX0VPRkVycm9yIERBVEEKLSAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNS5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKLSAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNS5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQotICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQotICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM1LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQotICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM1LlB5RXhjX0lPRXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNS5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCi0gIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZXhFcnJvciBEQVRBCi0gIFB5RXhjX0tleUVycm9yPXB5dGhvbjM1LlB5RXhjX0tleUVycm9yIERBVEEKLSAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzUuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQotICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNS5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX05hbWVFcnJvcj1weXRob24zNS5QeUV4Y19OYW1lRXJyb3IgREFUQQotICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM1LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQotICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM1LlB5RXhjX09TRXJyb3IgREFUQQotICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM1LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQotICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzUuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzUuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzUuUHlFeGNfUnVudGltZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQotICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM1LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQotICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNS5QeUV4Y19TeW50YXhFcnJvciBEQVRBCi0gIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCi0gIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM1LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKLSAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNS5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKLSAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzUuUHlFeGNfVGFiRXJyb3IgREFUQQotICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVHlwZUVycm9yIERBVEEKLSAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQotICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNS5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCi0gIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVmFsdWVFcnJvciBEQVRBCi0gIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfV2FybmluZyBEQVRBCi0gIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM1LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKLSAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKLSAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKLSAgUHlGaWxlX0Zyb21GZD1weXRob24zNS5QeUZpbGVfRnJvbUZkCi0gIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM1LlB5RmlsZV9HZXRMaW5lCi0gIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNS5QeUZpbGVfV3JpdGVPYmplY3QKLSAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM1LlB5RmlsZV9Xcml0ZVN0cmluZwotICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM1LlB5RmlsdGVyX1R5cGUgREFUQQotICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfQXNEb3VibGUKLSAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfRnJvbURvdWJsZQotICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tU3RyaW5nCi0gIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNS5QeUZsb2F0X0dldEluZm8KLSAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzUuUHlGbG9hdF9HZXRNYXgKLSAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzUuUHlGbG9hdF9HZXRNaW4KLSAgUHlGbG9hdF9UeXBlPXB5dGhvbjM1LlB5RmxvYXRfVHlwZSBEQVRBCi0gIFB5RnJvemVuU2V0X05ldz1weXRob24zNS5QeUZyb3plblNldF9OZXcKLSAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNS5QeUZyb3plblNldF9UeXBlIERBVEEKLSAgUHlHQ19Db2xsZWN0PXB5dGhvbjM1LlB5R0NfQ29sbGVjdAotICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNS5QeUdJTFN0YXRlX0Vuc3VyZQotICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNS5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQotICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzUuUHlHSUxTdGF0ZV9SZWxlYXNlCi0gIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNS5QeUdldFNldERlc2NyX1R5cGUgREFUQQotICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfQWRkTW9kdWxlCi0gIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzUuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgotICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM1LlB5SW1wb3J0X0NsZWFudXAKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4Ci0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKLSAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNUYWcKLSAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNS5QeUltcG9ydF9HZXRNb2R1bGVEaWN0Ci0gIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNS5QeUltcG9ydF9JbXBvcnQKLSAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jawotICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKLSAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX05ldwotICBQeUl0ZXJfTmV4dD1weXRob24zNS5QeUl0ZXJfTmV4dAotICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzUuUHlMaXN0SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM1LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzUuUHlMaXN0X0FwcGVuZAotICBQeUxpc3RfQXNUdXBsZT1weXRob24zNS5QeUxpc3RfQXNUdXBsZQotICBQeUxpc3RfR2V0SXRlbT1weXRob24zNS5QeUxpc3RfR2V0SXRlbQotICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzUuUHlMaXN0X0dldFNsaWNlCi0gIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzUuUHlMaXN0X0luc2VydAotICBQeUxpc3RfTmV3PXB5dGhvbjM1LlB5TGlzdF9OZXcKLSAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzUuUHlMaXN0X1JldmVyc2UKLSAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzUuUHlMaXN0X1NldEl0ZW0KLSAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM1LlB5TGlzdF9TZXRTbGljZQotICBQeUxpc3RfU2l6ZT1weXRob24zNS5QeUxpc3RfU2l6ZQotICBQeUxpc3RfU29ydD1weXRob24zNS5QeUxpc3RfU29ydAotICBQeUxpc3RfVHlwZT1weXRob24zNS5QeUxpc3RfVHlwZSBEQVRBCi0gIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM1LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM1LlB5TG9uZ19Bc0RvdWJsZQotICBQeUxvbmdfQXNMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmcKLSAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNS5QeUxvbmdfQXNMb25nTG9uZwotICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NpemVfdAotICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NzaXplX3QKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCi0gIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzUuUHlMb25nX0FzVm9pZFB0cgotICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNS5QeUxvbmdfRnJvbURvdWJsZQotICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nCi0gIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nTG9uZwotICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNS5QeUxvbmdfRnJvbVNpemVfdAotICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzUuUHlMb25nX0Zyb21Tc2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tU3RyaW5nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVm9pZFB0cgotICBQeUxvbmdfR2V0SW5mbz1weXRob24zNS5QeUxvbmdfR2V0SW5mbwotICBQeUxvbmdfVHlwZT1weXRob24zNS5QeUxvbmdfVHlwZSBEQVRBCi0gIFB5TWFwX1R5cGU9cHl0aG9uMzUuUHlNYXBfVHlwZSBEQVRBCi0gIFB5TWFwcGluZ19DaGVjaz1weXRob24zNS5QeU1hcHBpbmdfQ2hlY2sKLSAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNS5QeU1hcHBpbmdfSGFzS2V5Ci0gIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0hhc0tleVN0cmluZwotICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzUuUHlNYXBwaW5nX0l0ZW1zCi0gIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM1LlB5TWFwcGluZ19LZXlzCi0gIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzUuUHlNYXBwaW5nX0xlbmd0aAotICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNS5QeU1hcHBpbmdfU2l6ZQotICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM1LlB5TWFwcGluZ19WYWx1ZXMKLSAgUHlNZW1fRnJlZT1weXRob24zNS5QeU1lbV9GcmVlCi0gIFB5TWVtX01hbGxvYz1weXRob24zNS5QeU1lbV9NYWxsb2MKLSAgUHlNZW1fUmVhbGxvYz1weXRob24zNS5QeU1lbV9SZWFsbG9jCi0gIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNS5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQotICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNS5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNS5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwotICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNS5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCi0gIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNS5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzUuUHlNb2R1bGVfQWRkT2JqZWN0Ci0gIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50Ci0gIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzUuUHlNb2R1bGVfQ3JlYXRlMgotICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGVmCi0gIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGljdAotICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZQotICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAotICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldE5hbWUKLSAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0U3RhdGUKLSAgUHlNb2R1bGVfTmV3PXB5dGhvbjM1LlB5TW9kdWxlX05ldwotICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM1LlB5TW9kdWxlX1R5cGUgREFUQQotICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM1LlB5TW9kdWxlRGVmX0luaXQKLSAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNS5QeU1vZHVsZURlZl9UeXBlIERBVEEKLSAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zNS5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKLSAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzUuUHlOdW1iZXJfQWJzb2x1dGUKLSAgUHlOdW1iZXJfQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0FkZAotICBQeU51bWJlcl9BbmQ9cHl0aG9uMzUuUHlOdW1iZXJfQW5kCi0gIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zNS5QeU51bWJlcl9Bc1NzaXplX3QKLSAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzUuUHlOdW1iZXJfQ2hlY2sKLSAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjM1LlB5TnVtYmVyX0Rpdm1vZAotICBQeU51bWJlcl9GbG9hdD1weXRob24zNS5QeU51bWJlcl9GbG9hdAotICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9GbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VBZGQKLSAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlQW5kCi0gIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTHNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKLSAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VPcgotICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCi0gIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAotICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VYb3IKLSAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzUuUHlOdW1iZXJfSW5kZXgKLSAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM1LlB5TnVtYmVyX0ludmVydAotICBQeU51bWJlcl9Mb25nPXB5dGhvbjM1LlB5TnVtYmVyX0xvbmcKLSAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0xzaGlmdAotICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9NdWx0aXBseQotICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNS5QeU51bWJlcl9OZWdhdGl2ZQotICBQeU51bWJlcl9Pcj1weXRob24zNS5QeU51bWJlcl9PcgotICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNS5QeU51bWJlcl9Qb3NpdGl2ZQotICBQeU51bWJlcl9Qb3dlcj1weXRob24zNS5QeU51bWJlcl9Qb3dlcgotICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfUmVtYWluZGVyCi0gIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNS5QeU51bWJlcl9Sc2hpZnQKLSAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfU3VidHJhY3QKLSAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM1LlB5TnVtYmVyX1RvQmFzZQotICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX1RydWVEaXZpZGUKLSAgUHlOdW1iZXJfWG9yPXB5dGhvbjM1LlB5TnVtYmVyX1hvcgotICBQeU9TX0FmdGVyRm9yaz1weXRob24zNS5QeU9TX0FmdGVyRm9yawotICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjM1LlB5T1NfSW5pdEludGVycnVwdHMKLSAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzUuUHlPU19JbnB1dEhvb2sgREFUQQotICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjM1LlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKLSAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zNS5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKLSAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjM1LlB5T1NfZG91YmxlX3RvX3N0cmluZwotICBQeU9TX2dldHNpZz1weXRob24zNS5QeU9TX2dldHNpZwotICBQeU9TX215c3RyaWNtcD1weXRob24zNS5QeU9TX215c3RyaWNtcAotICBQeU9TX215c3RybmljbXA9cHl0aG9uMzUuUHlPU19teXN0cm5pY21wCi0gIFB5T1Nfc2V0c2lnPXB5dGhvbjM1LlB5T1Nfc2V0c2lnCi0gIFB5T1Nfc25wcmludGY9cHl0aG9uMzUuUHlPU19zbnByaW50ZgotICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzUuUHlPU19zdHJpbmdfdG9fZG91YmxlCi0gIFB5T1Nfc3RydG9sPXB5dGhvbjM1LlB5T1Nfc3RydG9sCi0gIFB5T1Nfc3RydG91bD1weXRob24zNS5QeU9TX3N0cnRvdWwKLSAgUHlPU192c25wcmludGY9cHl0aG9uMzUuUHlPU192c25wcmludGYKLSAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzUuUHlPYmplY3RfQVNDSUkKLSAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgotICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjM1LlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKLSAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKLSAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzUuUHlPYmplY3RfQnl0ZXMKLSAgUHlPYmplY3RfQ2FsbD1weXRob24zNS5QeU9iamVjdF9DYWxsCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb24KLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE1ldGhvZAotICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncwotICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxPYmplY3QKLSAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM1LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKLSAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtCi0gIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfRGVsSXRlbVN0cmluZwotICBQeU9iamVjdF9EaXI9cHl0aG9uMzUuUHlPYmplY3RfRGlyCi0gIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNS5QeU9iamVjdF9Gb3JtYXQKLSAgUHlPYmplY3RfRnJlZT1weXRob24zNS5QeU9iamVjdF9GcmVlCi0gIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNS5QeU9iamVjdF9HQ19EZWwKLSAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzUuUHlPYmplY3RfR0NfVHJhY2sKLSAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19VblRyYWNrCi0gIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi0gIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9HZXRJdGVtCi0gIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzUuUHlPYmplY3RfR2V0SXRlcgotICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHIKLSAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzUuUHlPYmplY3RfSGFzaAotICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzUuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi0gIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzUuUHlPYmplY3RfSW5pdAotICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM1LlB5T2JqZWN0X0luaXRWYXIKLSAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNS5QeU9iamVjdF9Jc0luc3RhbmNlCi0gIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzUuUHlPYmplY3RfSXNTdWJjbGFzcwotICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzUuUHlPYmplY3RfSXNUcnVlCi0gIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNS5QeU9iamVjdF9MZW5ndGgKLSAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM1LlB5T2JqZWN0X01hbGxvYwotICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzUuUHlPYmplY3RfTm90Ci0gIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfUmVhbGxvYwotICBQeU9iamVjdF9SZXByPXB5dGhvbjM1LlB5T2JqZWN0X1JlcHIKLSAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmUKLSAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM1LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAotICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNS5QeU9iamVjdF9TZWxmSXRlcgotICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHIKLSAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfU2V0SXRlbQotICBQeU9iamVjdF9TaXplPXB5dGhvbjM1LlB5T2JqZWN0X1NpemUKLSAgUHlPYmplY3RfU3RyPXB5dGhvbjM1LlB5T2JqZWN0X1N0cgotICBQeU9iamVjdF9UeXBlPXB5dGhvbjM1LlB5T2JqZWN0X1R5cGUgREFUQQotICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlPRGljdF9EZWxJdGVtCi0gIFB5T0RpY3RfTmV3PXB5dGhvbjM1LlB5T0RpY3RfTmV3Ci0gIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNS5QeU9EaWN0X1NldEl0ZW0KLSAgUHlPRGljdF9UeXBlPXB5dGhvbjM1LlB5T0RpY3RfVHlwZSBEQVRBCi0gIFB5T0RpY3RJdGVtc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlPRGljdEl0ZXJfVHlwZT1weXRob24zNS5QeU9EaWN0SXRlcl9UeXBlIERBVEEKLSAgUHlPRGljdEtleXNfVHlwZT1weXRob24zNS5QeU9EaWN0S2V5c19UeXBlIERBVEEKLSAgUHlPRGljdFZhbHVlc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RWYWx1ZXNfVHlwZSBEQVRBCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM1LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncwotICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzUuUHlQcm9wZXJ0eV9UeXBlIERBVEEKLSAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNS5QeVJhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlSYW5nZV9UeXBlPXB5dGhvbjM1LlB5UmFuZ2VfVHlwZSBEQVRBCi0gIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNS5QeVJldmVyc2VkX1R5cGUgREFUQQotICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM1LlB5U2VxSXRlcl9OZXcKLSAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXFJdGVyX1R5cGUgREFUQQotICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM1LlB5U2VxdWVuY2VfQ2hlY2sKLSAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db25jYXQKLSAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNS5QeVNlcXVlbmNlX0NvbnRhaW5zCi0gIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db3VudAotICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxJdGVtCi0gIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxTbGljZQotICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzUuUHlTZXF1ZW5jZV9GYXN0Ci0gIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX0dldFNsaWNlCi0gIFB5U2VxdWVuY2VfSW49cHl0aG9uMzUuUHlTZXF1ZW5jZV9JbgotICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0Ci0gIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNS5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKLSAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNS5QeVNlcXVlbmNlX0luZGV4Ci0gIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM1LlB5U2VxdWVuY2VfTGVuZ3RoCi0gIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNS5QeVNlcXVlbmNlX0xpc3QKLSAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9SZXBlYXQKLSAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0SXRlbQotICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2l6ZQotICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM1LlB5U2VxdWVuY2VfVHVwbGUKLSAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXRJdGVyX1R5cGUgREFUQQotICBQeVNldF9BZGQ9cHl0aG9uMzUuUHlTZXRfQWRkCi0gIFB5U2V0X0NsZWFyPXB5dGhvbjM1LlB5U2V0X0NsZWFyCi0gIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM1LlB5U2V0X0NvbnRhaW5zCi0gIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzUuUHlTZXRfRGlzY2FyZAotICBQeVNldF9OZXc9cHl0aG9uMzUuUHlTZXRfTmV3Ci0gIFB5U2V0X1BvcD1weXRob24zNS5QeVNldF9Qb3AKLSAgUHlTZXRfU2l6ZT1weXRob24zNS5QeVNldF9TaXplCi0gIFB5U2V0X1R5cGU9cHl0aG9uMzUuUHlTZXRfVHlwZSBEQVRBCi0gIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNS5QeVNsaWNlX0dldEluZGljZXMKLSAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzUuUHlTbGljZV9HZXRJbmRpY2VzRXgKLSAgUHlTbGljZV9OZXc9cHl0aG9uMzUuUHlTbGljZV9OZXcKLSAgUHlTbGljZV9UeXBlPXB5dGhvbjM1LlB5U2xpY2VfVHlwZSBEQVRBCi0gIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNS5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQotICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9GaW5kTW9kdWxlCi0gIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfQWRkTW9kdWxlCi0gIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCi0gIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQotICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U3VwZXJfVHlwZT1weXRob24zNS5QeVN1cGVyX1R5cGUgREFUQQotICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM1LlB5U3lzX0FkZFdhcm5PcHRpb24KLSAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzUuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKLSAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM1LlB5U3lzX0Zvcm1hdFN0ZGVycgotICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3Rkb3V0Ci0gIFB5U3lzX0dldE9iamVjdD1weXRob24zNS5QeVN5c19HZXRPYmplY3QKLSAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzUuUHlTeXNfSGFzV2Fybk9wdGlvbnMKLSAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19SZXNldFdhcm5PcHRpb25zCi0gIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzUuUHlTeXNfU2V0QXJndgotICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzUuUHlTeXNfU2V0QXJndkV4Ci0gIFB5U3lzX1NldE9iamVjdD1weXRob24zNS5QeVN5c19TZXRPYmplY3QKLSAgUHlTeXNfU2V0UGF0aD1weXRob24zNS5QeVN5c19TZXRQYXRoCi0gIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM1LlB5U3lzX1dyaXRlU3RkZXJyCi0gIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM1LlB5U3lzX1dyaXRlU3Rkb3V0Ci0gIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9DbGVhcgotICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZQotICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50Ci0gIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0Ci0gIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNS5QeVRocmVhZFN0YXRlX0dldERpY3QKLSAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9OZXcKLSAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNS5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCi0gIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNS5QeVRocmVhZFN0YXRlX1N3YXAKLSAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNS5QeVRyYWNlQmFja19IZXJlCi0gIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM1LlB5VHJhY2VCYWNrX1ByaW50Ci0gIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzUuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCi0gIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzUuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNS5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKLSAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM1LlB5VHVwbGVfR2V0SXRlbQotICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM1LlB5VHVwbGVfR2V0U2xpY2UKLSAgUHlUdXBsZV9OZXc9cHl0aG9uMzUuUHlUdXBsZV9OZXcKLSAgUHlUdXBsZV9QYWNrPXB5dGhvbjM1LlB5VHVwbGVfUGFjawotICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9TZXRJdGVtCi0gIFB5VHVwbGVfU2l6ZT1weXRob24zNS5QeVR1cGxlX1NpemUKLSAgUHlUdXBsZV9UeXBlPXB5dGhvbjM1LlB5VHVwbGVfVHlwZSBEQVRBCi0gIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM1LlB5VHlwZV9DbGVhckNhY2hlCi0gIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNS5QeVR5cGVfRnJvbVNwZWMKLSAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcwotICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM1LlB5VHlwZV9HZW5lcmljQWxsb2MKLSAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNOZXcKLSAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM1LlB5VHlwZV9HZXRGbGFncwotICBQeVR5cGVfR2V0U2xvdD1weXRob24zNS5QeVR5cGVfR2V0U2xvdAotICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM1LlB5VHlwZV9Jc1N1YnR5cGUKLSAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM1LlB5VHlwZV9Nb2RpZmllZAotICBQeVR5cGVfUmVhZHk9cHl0aG9uMzUuUHlUeXBlX1JlYWR5Ci0gIFB5VHlwZV9UeXBlPXB5dGhvbjM1LlB5VHlwZV9UeXBlIERBVEEKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNS5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kCi0gIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzUuUHlVbmljb2RlX0FwcGVuZEFuZERlbAotICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKLSAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZwotICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfQXNXaWRlQ2hhcgotICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zNS5QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAotICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zNS5QeVVuaWNvZGVfQ29tcGFyZQotICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM1LlB5VW5pY29kZV9Db25jYXQKLSAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjM1LlB5VW5pY29kZV9Db250YWlucwotICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzUuUHlVbmljb2RlX0NvdW50Ci0gIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZQotICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUFTQ0lJCi0gIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVDaGFybWFwCi0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVMYXRpbjEKLSAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY4Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTQ29udmVydGVyCi0gIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTRGVjb2RlcgotICBQeVVuaWNvZGVfRmluZD1weXRob24zNS5QeVVuaWNvZGVfRmluZAotICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjM1LlB5VW5pY29kZV9Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbUZvcm1hdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21Gb3JtYXRWCi0gIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zNS5QeVVuaWNvZGVfRnJvbU9yZGluYWwKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21TdHJpbmcKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKLSAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9HZXRTaXplCi0gIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzUuUHlVbmljb2RlX0lzSWRlbnRpZmllcgotICBQeVVuaWNvZGVfSm9pbj1weXRob24zNS5QeVVuaWNvZGVfSm9pbgotICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM1LlB5VW5pY29kZV9QYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzUuUHlVbmljb2RlX1JQYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zNS5QeVVuaWNvZGVfUlNwbGl0Ci0gIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9SZXBsYWNlCi0gIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzUuUHlVbmljb2RlX1Jlc2l6ZQotICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX1JpY2hDb21wYXJlCi0gIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0Ci0gIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjM1LlB5VW5pY29kZV9TcGxpdGxpbmVzCi0gIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzUuUHlVbmljb2RlX1RhaWxtYXRjaAotICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM1LlB5VW5pY29kZV9UcmFuc2xhdGUKLSAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzUuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLSAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjcKLSAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCi0gIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwotICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCi0gIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCi0gIFB5VW5pY29kZV9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZV9UeXBlIERBVEEKLSAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNS5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKLSAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdQcm94eQotICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdSZWYKLSAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zNS5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlXcmFwcGVyX05ldz1weXRob24zNS5QeVdyYXBwZXJfTmV3Ci0gIFB5WmlwX1R5cGU9cHl0aG9uMzUuUHlaaXBfVHlwZSBEQVRBCi0gIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjM1LlB5X0FkZFBlbmRpbmdDYWxsCi0gIFB5X0F0RXhpdD1weXRob24zNS5QeV9BdEV4aXQKLSAgUHlfQnVpbGRWYWx1ZT1weXRob24zNS5QeV9CdWlsZFZhbHVlCi0gIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzUuUHlfQ29tcGlsZVN0cmluZwotICBQeV9EZWNSZWY9cHl0aG9uMzUuUHlfRGVjUmVmCi0gIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjM1LlB5X0VuZEludGVycHJldGVyCi0gIFB5X0V4aXQ9cHl0aG9uMzUuUHlfRXhpdAotICBQeV9GYXRhbEVycm9yPXB5dGhvbjM1LlB5X0ZhdGFsRXJyb3IKLSAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfRmluYWxpemU9cHl0aG9uMzUuUHlfRmluYWxpemUKLSAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjM1LlB5X0dldEJ1aWxkSW5mbwotICBQeV9HZXRDb21waWxlcj1weXRob24zNS5QeV9HZXRDb21waWxlcgotICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzUuUHlfR2V0Q29weXJpZ2h0Ci0gIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzUuUHlfR2V0RXhlY1ByZWZpeAotICBQeV9HZXRQYXRoPXB5dGhvbjM1LlB5X0dldFBhdGgKLSAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzUuUHlfR2V0UGxhdGZvcm0KLSAgUHlfR2V0UHJlZml4PXB5dGhvbjM1LlB5X0dldFByZWZpeAotICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi0gIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjM1LlB5X0dldFByb2dyYW1OYW1lCi0gIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzUuUHlfR2V0UHl0aG9uSG9tZQotICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zNS5QeV9HZXRSZWN1cnNpb25MaW1pdAotICBQeV9HZXRWZXJzaW9uPXB5dGhvbjM1LlB5X0dldFZlcnNpb24KLSAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfSW5jUmVmPXB5dGhvbjM1LlB5X0luY1JlZgotICBQeV9Jbml0aWFsaXplPXB5dGhvbjM1LlB5X0luaXRpYWxpemUKLSAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjM1LlB5X0luaXRpYWxpemVFeAotICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjM1LlB5X0lzSW5pdGlhbGl6ZWQKLSAgUHlfTWFpbj1weXRob24zNS5QeV9NYWluCi0gIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzUuUHlfTWFrZVBlbmRpbmdDYWxscwotICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zNS5QeV9OZXdJbnRlcnByZXRlcgotICBQeV9SZXByRW50ZXI9cHl0aG9uMzUuUHlfUmVwckVudGVyCi0gIFB5X1JlcHJMZWF2ZT1weXRob24zNS5QeV9SZXByTGVhdmUKLSAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfU2V0UHJvZ3JhbU5hbWUKLSAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9TZXRQeXRob25Ib21lCi0gIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X1NldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM1LlB5X1N5bXRhYmxlU3RyaW5nCi0gIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNS5QeV9WYUJ1aWxkVmFsdWUKLSAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNS5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzUuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAotICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAotICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19NYWxsb2MKLSAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3Ci0gIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX05ld1ZhcgotICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19SZXNpemUKLSAgX1B5T2JqZWN0X05ldz1weXRob24zNS5fUHlPYmplY3RfTmV3Ci0gIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X05ld1ZhcgotICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuX1B5U3RhdGVfQWRkTW9kdWxlCi0gIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzUuX1B5VGhyZWFkU3RhdGVfSW5pdAotICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYwotICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKLSAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQotICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zNS5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjM1Ll9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KLSAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zNS5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQotICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjM1Ll9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKLSAgX1B5X0RlYWxsb2M9cHl0aG9uMzUuX1B5X0RlYWxsb2MKLSAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjM1Ll9QeV9FbGxpcHNpc09iamVjdCBEQVRBCi0gIF9QeV9GYWxzZVN0cnVjdD1weXRob24zNS5fUHlfRmFsc2VTdHJ1Y3QgREFUQQotICBfUHlfTm9uZVN0cnVjdD1weXRob24zNS5fUHlfTm9uZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zNS5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQotICBfUHlfU3dhcHBlZE9wPXB5dGhvbjM1Ll9QeV9Td2FwcGVkT3AgREFUQQotICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zNS5fUHlfVHJ1ZVN0cnVjdCBEQVRBCi0gIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAotICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZV9TaXplVAotICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9CdWlsZFZhbHVlX1NpemVUCisgIFB5QXJnX1BhcnNlPXB5dGhvbjM2LlB5QXJnX1BhcnNlCisgIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzYuUHlBcmdfUGFyc2VUdXBsZQorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzYuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjM2LlB5QXJnX1VucGFja1R1cGxlCisgIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzYuUHlBcmdfVmFQYXJzZQorICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNi5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzYuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCisgIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjM2LlB5QmFzZU9iamVjdF9UeXBlIERBVEEKKyAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjM2LlB5Qm9vbF9Gcm9tTG9uZworICBQeUJvb2xfVHlwZT1weXRob24zNi5QeUJvb2xfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjM2LlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzYuUHlCeXRlQXJyYXlfQXNTdHJpbmcKKyAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0NvbmNhdAorICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKKyAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1Jlc2l6ZQorICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1NpemUKKyAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zNi5QeUJ5dGVBcnJheV9UeXBlIERBVEEKKyAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zNi5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zNi5QeUJ5dGVzX0FzU3RyaW5nCisgIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjM2LlB5Qnl0ZXNfQ29uY2F0CisgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjM2LlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCisgIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjM2LlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCisgIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zNi5QeUJ5dGVzX0Zyb21Gb3JtYXQKKyAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zNi5QeUJ5dGVzX0Zyb21Gb3JtYXRWCisgIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zNi5QeUJ5dGVzX0Zyb21PYmplY3QKKyAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbVN0cmluZworICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19SZXByPXB5dGhvbjM2LlB5Qnl0ZXNfUmVwcgorICBQeUJ5dGVzX1NpemU9cHl0aG9uMzYuUHlCeXRlc19TaXplCisgIFB5Qnl0ZXNfVHlwZT1weXRob24zNi5QeUJ5dGVzX1R5cGUgREFUQQorICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0NhbGwKKyAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zNi5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0CisgIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0dldEZsYWdzCisgIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCisgIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0U2VsZgorICBQeUNGdW5jdGlvbl9OZXc9cHl0aG9uMzYuUHlDRnVuY3Rpb25fTmV3CisgIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX05ld0V4CisgIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzYuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCisgIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjM2LlB5Q2FsbEl0ZXJfTmV3CisgIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zNi5QeUNhbGxJdGVyX1R5cGUgREFUQQorICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjM2LlB5Q2FsbGFibGVfQ2hlY2sKKyAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzYuUHlDYXBzdWxlX0dldENvbnRleHQKKyAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzYuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzYuUHlDYXBzdWxlX0dldE5hbWUKKyAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzYuUHlDYXBzdWxlX0dldFBvaW50ZXIKKyAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zNi5QeUNhcHN1bGVfSW1wb3J0CisgIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjM2LlB5Q2Fwc3VsZV9Jc1ZhbGlkCisgIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzYuUHlDYXBzdWxlX05ldworICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zNi5QeUNhcHN1bGVfU2V0Q29udGV4dAorICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zNi5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zNi5QeUNhcHN1bGVfU2V0TmFtZQorICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zNi5QeUNhcHN1bGVfU2V0UG9pbnRlcgorICBQeUNhcHN1bGVfVHlwZT1weXRob24zNi5QeUNhcHN1bGVfVHlwZSBEQVRBCisgIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM2LlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycworICBQeUNvZGVjX0RlY29kZT1weXRob24zNi5QeUNvZGVjX0RlY29kZQorICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzYuUHlDb2RlY19EZWNvZGVyCisgIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjM2LlB5Q29kZWNfRW5jb2RlCisgIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zNi5QeUNvZGVjX0VuY29kZXIKKyAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19JZ25vcmVFcnJvcnMKKyAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzYuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKKyAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzYuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKKyAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjM2LlB5Q29kZWNfS25vd25FbmNvZGluZworICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjM2LlB5Q29kZWNfTG9va3VwRXJyb3IKKyAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyCisgIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKKyAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfUmVwbGFjZUVycm9ycworICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVJlYWRlcgorICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVdyaXRlcgorICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNi5QeUNvZGVjX1N0cmljdEVycm9ycworICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKKyAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM2LlB5Q29tcGxleF9Gcm9tRG91YmxlcworICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM2LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKKyAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNi5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCisgIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM2LlB5Q29tcGxleF9UeXBlIERBVEEKKyAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNi5QeURlc2NyX05ld0NsYXNzTWV0aG9kCisgIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM2LlB5RGVzY3JfTmV3R2V0U2V0CisgIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWVtYmVyCisgIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWV0aG9kCisgIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNi5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQorICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNi5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCisgIFB5RGljdEtleXNfVHlwZT1weXRob24zNi5QeURpY3RLZXlzX1R5cGUgREFUQQorICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzYuUHlEaWN0UHJveHlfTmV3CisgIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzYuUHlEaWN0UHJveHlfVHlwZSBEQVRBCisgIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM2LlB5RGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlEaWN0X0NsZWFyPXB5dGhvbjM2LlB5RGljdF9DbGVhcgorICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzYuUHlEaWN0X0NvbnRhaW5zCisgIFB5RGljdF9Db3B5PXB5dGhvbjM2LlB5RGljdF9Db3B5CisgIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtCisgIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtCisgIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCisgIFB5RGljdF9JdGVtcz1weXRob24zNi5QeURpY3RfSXRlbXMKKyAgUHlEaWN0X0tleXM9cHl0aG9uMzYuUHlEaWN0X0tleXMKKyAgUHlEaWN0X01lcmdlPXB5dGhvbjM2LlB5RGljdF9NZXJnZQorICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNi5QeURpY3RfTWVyZ2VGcm9tU2VxMgorICBQeURpY3RfTmV3PXB5dGhvbjM2LlB5RGljdF9OZXcKKyAgUHlEaWN0X05leHQ9cHl0aG9uMzYuUHlEaWN0X05leHQKKyAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW0KKyAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X1NpemU9cHl0aG9uMzYuUHlEaWN0X1NpemUKKyAgUHlEaWN0X1R5cGU9cHl0aG9uMzYuUHlEaWN0X1R5cGUgREFUQQorICBQeURpY3RfVXBkYXRlPXB5dGhvbjM2LlB5RGljdF9VcGRhdGUKKyAgUHlEaWN0X1ZhbHVlcz1weXRob24zNi5QeURpY3RfVmFsdWVzCisgIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNi5QeUVsbGlwc2lzX1R5cGUgREFUQQorICBQeUVudW1fVHlwZT1weXRob24zNi5QeUVudW1fVHlwZSBEQVRBCisgIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM2LlB5RXJyX0JhZEFyZ3VtZW50CisgIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNi5QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM2LlB5RXJyX0NoZWNrU2lnbmFscworICBQeUVycl9DbGVhcj1weXRob24zNi5QeUVycl9DbGVhcgorICBQeUVycl9EaXNwbGF5PXB5dGhvbjM2LlB5RXJyX0Rpc3BsYXkKKyAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNi5QeUVycl9FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX0ZldGNoPXB5dGhvbjM2LlB5RXJyX0ZldGNoCisgIFB5RXJyX0Zvcm1hdD1weXRob24zNi5QeUVycl9Gb3JtYXQKKyAgUHlFcnJfRm9ybWF0Vj1weXRob24zNi5QeUVycl9Gb3JtYXRWCisgIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNi5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjM2LlB5RXJyX05ld0V4Y2VwdGlvbgorICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjM2LlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKKyAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzYuUHlFcnJfTm9NZW1vcnkKKyAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjM2LlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgorICBQeUVycl9PY2N1cnJlZD1weXRob24zNi5QeUVycl9PY2N1cnJlZAorICBQeUVycl9QcmludD1weXRob24zNi5QeUVycl9QcmludAorICBQeUVycl9QcmludEV4PXB5dGhvbjM2LlB5RXJyX1ByaW50RXgKKyAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzYuUHlFcnJfUHJvZ3JhbVRleHQKKyAgUHlFcnJfUmVzdG9yZT1weXRob24zNi5QeUVycl9SZXN0b3JlCisgIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zNi5QeUVycl9TZXRGcm9tRXJybm8KKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjM2LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQorICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzYuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0CisgIFB5RXJyX1NldEludGVycnVwdD1weXRob24zNi5QeUVycl9TZXRJbnRlcnJ1cHQKKyAgUHlFcnJfU2V0Tm9uZT1weXRob24zNi5QeUVycl9TZXROb25lCisgIFB5RXJyX1NldE9iamVjdD1weXRob24zNi5QeUVycl9TZXRPYmplY3QKKyAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjM2LlB5RXJyX1NldFN0cmluZworICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zNi5QeUVycl9TeW50YXhMb2NhdGlvbgorICBQeUVycl9XYXJuRXg9cHl0aG9uMzYuUHlFcnJfV2FybkV4CisgIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zNi5QeUVycl9XYXJuRXhwbGljaXQKKyAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zNi5QeUVycl9XYXJuRm9ybWF0CisgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zNi5QeUVycl9Xcml0ZVVucmFpc2FibGUKKyAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjM2LlB5RXZhbF9BY3F1aXJlTG9jaworICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zNi5QeUV2YWxfQWNxdWlyZVRocmVhZAorICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM2LlB5RXZhbF9DYWxsRnVuY3Rpb24KKyAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzYuUHlFdmFsX0NhbGxNZXRob2QKKyAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzYuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKKyAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjM2LlB5RXZhbF9FdmFsQ29kZQorICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zNi5QeUV2YWxfRXZhbENvZGVFeAorICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWUKKyAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWVFeAorICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzYuUHlFdmFsX0dldEJ1aWx0aW5zCisgIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzYuUHlFdmFsX0dldENhbGxTdGF0cworICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzYuUHlFdmFsX0dldEZyYW1lCisgIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zNi5QeUV2YWxfR2V0RnVuY0Rlc2MKKyAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjM2LlB5RXZhbF9HZXRGdW5jTmFtZQorICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zNi5QeUV2YWxfR2V0R2xvYmFscworICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjM2LlB5RXZhbF9HZXRMb2NhbHMKKyAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjM2LlB5RXZhbF9Jbml0VGhyZWFkcworICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zNi5QeUV2YWxfUmVJbml0VGhyZWFkcworICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzYuUHlFdmFsX1JlbGVhc2VMb2NrCisgIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZWxlYXNlVGhyZWFkCisgIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZXN0b3JlVGhyZWFkCisgIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9TYXZlVGhyZWFkCisgIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAorICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKKyAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQorICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zNi5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCisgIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzYuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjM2LlB5RXhjX0J1ZmZlckVycm9yIERBVEEKKyAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCisgIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNi5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19FT0ZFcnJvcj1weXRob24zNi5QeUV4Y19FT0ZFcnJvciBEQVRBCisgIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzYuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCisgIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zNi5QeUV4Y19FeGNlcHRpb24gREFUQQorICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzYuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKKyAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zNi5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKKyAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zNi5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKKyAgUHlFeGNfSU9FcnJvcj1weXRob24zNi5QeUV4Y19JT0Vycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzYuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQorICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjM2LlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQorICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjM2LlB5RXhjX0luZGV4RXJyb3IgREFUQQorICBQeUV4Y19LZXlFcnJvcj1weXRob24zNi5QeUV4Y19LZXlFcnJvciBEQVRBCisgIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjM2LlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKKyAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzYuUHlFeGNfTG9va3VwRXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zNi5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zNi5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQorICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzYuUHlFeGNfTmFtZUVycm9yIERBVEEKKyAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zNi5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKKyAgUHlFeGNfT1NFcnJvcj1weXRob24zNi5QeUV4Y19PU0Vycm9yIERBVEEKKyAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zNi5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKKyAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNi5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjM2LlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCisgIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjM2LlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjM2LlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zNi5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKKyAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzYuUHlFeGNfU3ludGF4RXJyb3IgREFUQQorICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQorICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zNi5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCisgIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzYuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCisgIFB5RXhjX1RhYkVycm9yPXB5dGhvbjM2LlB5RXhjX1RhYkVycm9yIERBVEEKKyAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjM2LlB5RXhjX1R5cGVFcnJvciBEQVRBCisgIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjM2LlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKKyAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzYuUHlFeGNfVXNlcldhcm5pbmcgREFUQQorICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjM2LlB5RXhjX1ZhbHVlRXJyb3IgREFUQQorICBQeUV4Y19XYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1dhcm5pbmcgREFUQQorICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zNi5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCisgIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjM2LlB5RXhjZXB0aW9uX0dldENhdXNlCisgIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCisgIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjM2LlB5RXhjZXB0aW9uX1NldENhdXNlCisgIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCisgIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzYuUHlGaWxlX0Zyb21GZAorICBQeUZpbGVfR2V0TGluZT1weXRob24zNi5QeUZpbGVfR2V0TGluZQorICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzYuUHlGaWxlX1dyaXRlT2JqZWN0CisgIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zNi5QeUZpbGVfV3JpdGVTdHJpbmcKKyAgUHlGaWx0ZXJfVHlwZT1weXRob24zNi5QeUZpbHRlcl9UeXBlIERBVEEKKyAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zNi5QeUZsb2F0X0FzRG91YmxlCisgIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zNi5QeUZsb2F0X0Zyb21Eb3VibGUKKyAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5RmxvYXRfRnJvbVN0cmluZworICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzYuUHlGbG9hdF9HZXRJbmZvCisgIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjM2LlB5RmxvYXRfR2V0TWF4CisgIFB5RmxvYXRfR2V0TWluPXB5dGhvbjM2LlB5RmxvYXRfR2V0TWluCisgIFB5RmxvYXRfVHlwZT1weXRob24zNi5QeUZsb2F0X1R5cGUgREFUQQorICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzYuUHlGcm96ZW5TZXRfTmV3CisgIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzYuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCisgIFB5R0NfQ29sbGVjdD1weXRob24zNi5QeUdDX0NvbGxlY3QKKyAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzYuUHlHSUxTdGF0ZV9FbnN1cmUKKyAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzYuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKKyAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjM2LlB5R0lMU3RhdGVfUmVsZWFzZQorICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzYuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKKyAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0FkZE1vZHVsZQorICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjM2LlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKKyAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zNi5QeUltcG9ydF9DbGVhbnVwCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCisgIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjM2LlB5SW1wb3J0X0dldEltcG9ydGVyCisgIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjM2LlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCisgIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjM2LlB5SW1wb3J0X0dldE1hZ2ljVGFnCisgIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzYuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAorICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0CisgIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zNi5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zNi5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKKyAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X1JlbG9hZE1vZHVsZQorICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQorICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjM2LlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKKyAgUHlJdGVyX05leHQ9cHl0aG9uMzYuUHlJdGVyX05leHQKKyAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjM2LlB5TGlzdEl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zNi5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQorICBQeUxpc3RfQXBwZW5kPXB5dGhvbjM2LlB5TGlzdF9BcHBlbmQKKyAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzYuUHlMaXN0X0FzVHVwbGUKKyAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzYuUHlMaXN0X0dldEl0ZW0KKyAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjM2LlB5TGlzdF9HZXRTbGljZQorICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjM2LlB5TGlzdF9JbnNlcnQKKyAgUHlMaXN0X05ldz1weXRob24zNi5QeUxpc3RfTmV3CisgIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjM2LlB5TGlzdF9SZXZlcnNlCisgIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjM2LlB5TGlzdF9TZXRJdGVtCisgIFB5TGlzdF9TZXRTbGljZT1weXRob24zNi5QeUxpc3RfU2V0U2xpY2UKKyAgUHlMaXN0X1NpemU9cHl0aG9uMzYuUHlMaXN0X1NpemUKKyAgUHlMaXN0X1NvcnQ9cHl0aG9uMzYuUHlMaXN0X1NvcnQKKyAgUHlMaXN0X1R5cGU9cHl0aG9uMzYuUHlMaXN0X1R5cGUgREFUQQorICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zNi5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zNi5QeUxvbmdfQXNEb3VibGUKKyAgUHlMb25nX0FzTG9uZz1weXRob24zNi5QeUxvbmdfQXNMb25nCisgIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0FzTG9uZ0xvbmcKKyAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc1NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTaXplX3QKKyAgUHlMb25nX0FzU3NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTc2l6ZV90CisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzYuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaworICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjM2LlB5TG9uZ19Bc1ZvaWRQdHIKKyAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzYuUHlMb25nX0Zyb21Eb3VibGUKKyAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZworICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzYuUHlMb25nX0Zyb21TaXplX3QKKyAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Gcm9tU3NpemVfdAorICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zNi5QeUxvbmdfRnJvbVN0cmluZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zNi5QeUxvbmdfRnJvbVZvaWRQdHIKKyAgUHlMb25nX0dldEluZm89cHl0aG9uMzYuUHlMb25nX0dldEluZm8KKyAgUHlMb25nX1R5cGU9cHl0aG9uMzYuUHlMb25nX1R5cGUgREFUQQorICBQeU1hcF9UeXBlPXB5dGhvbjM2LlB5TWFwX1R5cGUgREFUQQorICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzYuUHlNYXBwaW5nX0NoZWNrCisgIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzYuUHlNYXBwaW5nX0hhc0tleQorICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKKyAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjM2LlB5TWFwcGluZ19JdGVtcworICBQeU1hcHBpbmdfS2V5cz1weXRob24zNi5QeU1hcHBpbmdfS2V5cworICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjM2LlB5TWFwcGluZ19MZW5ndGgKKyAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzYuUHlNYXBwaW5nX1NpemUKKyAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zNi5QeU1hcHBpbmdfVmFsdWVzCisgIFB5TWVtX0ZyZWU9cHl0aG9uMzYuUHlNZW1fRnJlZQorICBQeU1lbV9NYWxsb2M9cHl0aG9uMzYuUHlNZW1fTWFsbG9jCisgIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzYuUHlNZW1fUmVhbGxvYworICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzYuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKKyAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKKyAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQorICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzYuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzYuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKKyAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjM2LlB5TW9kdWxlX0FkZE9iamVjdAorICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zNi5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAorICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjM2LlB5TW9kdWxlX0NyZWF0ZTIKKyAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjM2LlB5TW9kdWxlX0dldERlZgorICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjM2LlB5TW9kdWxlX0dldERpY3QKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RmlsZW5hbWUKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKKyAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zNi5QeU1vZHVsZV9HZXROYW1lCisgIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjM2LlB5TW9kdWxlX0dldFN0YXRlCisgIFB5TW9kdWxlX05ldz1weXRob24zNi5QeU1vZHVsZV9OZXcKKyAgUHlNb2R1bGVfVHlwZT1weXRob24zNi5QeU1vZHVsZV9UeXBlIERBVEEKKyAgUHlNb2R1bGVEZWZfSW5pdD1weXRob24zNi5QeU1vZHVsZURlZl9Jbml0CisgIFB5TW9kdWxlRGVmX1R5cGU9cHl0aG9uMzYuUHlNb2R1bGVEZWZfVHlwZSBEQVRBCisgIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzYuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCisgIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM2LlB5TnVtYmVyX0Fic29sdXRlCisgIFB5TnVtYmVyX0FkZD1weXRob24zNi5QeU51bWJlcl9BZGQKKyAgUHlOdW1iZXJfQW5kPXB5dGhvbjM2LlB5TnVtYmVyX0FuZAorICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzYuUHlOdW1iZXJfQXNTc2l6ZV90CisgIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM2LlB5TnVtYmVyX0NoZWNrCisgIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNi5QeU51bWJlcl9EaXZtb2QKKyAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzYuUHlOdW1iZXJfRmxvYXQKKyAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlQWRkCisgIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUFuZAorICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAorICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5CisgIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlT3IKKyAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VQb3dlcgorICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlUnNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKKyAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlWG9yCisgIFB5TnVtYmVyX0luZGV4PXB5dGhvbjM2LlB5TnVtYmVyX0luZGV4CisgIFB5TnVtYmVyX0ludmVydD1weXRob24zNi5QeU51bWJlcl9JbnZlcnQKKyAgUHlOdW1iZXJfTG9uZz1weXRob24zNi5QeU51bWJlcl9Mb25nCisgIFB5TnVtYmVyX0xzaGlmdD1weXRob24zNi5QeU51bWJlcl9Mc2hpZnQKKyAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzYuUHlOdW1iZXJfTXVsdGlwbHkKKyAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzYuUHlOdW1iZXJfTmVnYXRpdmUKKyAgUHlOdW1iZXJfT3I9cHl0aG9uMzYuUHlOdW1iZXJfT3IKKyAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzYuUHlOdW1iZXJfUG9zaXRpdmUKKyAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzYuUHlOdW1iZXJfUG93ZXIKKyAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjM2LlB5TnVtYmVyX1JlbWFpbmRlcgorICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfUnNoaWZ0CisgIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjM2LlB5TnVtYmVyX1N1YnRyYWN0CisgIFB5TnVtYmVyX1RvQmFzZT1weXRob24zNi5QeU51bWJlcl9Ub0Jhc2UKKyAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zNi5QeU51bWJlcl9UcnVlRGl2aWRlCisgIFB5TnVtYmVyX1hvcj1weXRob24zNi5QeU51bWJlcl9Yb3IKKyAgUHlPU19BZnRlckZvcms9cHl0aG9uMzYuUHlPU19BZnRlckZvcmsKKyAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNi5QeU9TX0luaXRJbnRlcnJ1cHRzCisgIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM2LlB5T1NfSW5wdXRIb29rIERBVEEKKyAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNi5QeU9TX0ludGVycnVwdE9jY3VycmVkCisgIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzYuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCisgIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNi5QeU9TX2RvdWJsZV90b19zdHJpbmcKKyAgUHlPU19nZXRzaWc9cHl0aG9uMzYuUHlPU19nZXRzaWcKKyAgUHlPU19teXN0cmljbXA9cHl0aG9uMzYuUHlPU19teXN0cmljbXAKKyAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM2LlB5T1NfbXlzdHJuaWNtcAorICBQeU9TX3NldHNpZz1weXRob24zNi5QeU9TX3NldHNpZworICBQeU9TX3NucHJpbnRmPXB5dGhvbjM2LlB5T1Nfc25wcmludGYKKyAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM2LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQorICBQeU9TX3N0cnRvbD1weXRob24zNi5QeU9TX3N0cnRvbAorICBQeU9TX3N0cnRvdWw9cHl0aG9uMzYuUHlPU19zdHJ0b3VsCisgIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM2LlB5T1NfdnNucHJpbnRmCisgIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM2LlB5T2JqZWN0X0FTQ0lJCisgIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKKyAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNi5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCisgIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCisgIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM2LlB5T2JqZWN0X0J5dGVzCisgIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbAorICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncworICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxNZXRob2QKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNi5QeU9iamVjdF9DYWxsT2JqZWN0CisgIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zNi5QeU9iamVjdF9DbGVhcldlYWtSZWZzCisgIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfRGVsSXRlbQorICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM2LlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlPYmplY3RfRGlyPXB5dGhvbjM2LlB5T2JqZWN0X0RpcgorICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzYuUHlPYmplY3RfRm9ybWF0CisgIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzYuUHlPYmplY3RfRnJlZQorICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzYuUHlPYmplY3RfR0NfRGVsCisgIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjM2LlB5T2JqZWN0X0dDX1RyYWNrCisgIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzYuUHlPYmplY3RfR0NfVW5UcmFjaworICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgorICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfR2V0SXRlbQorICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjM2LlB5T2JqZWN0X0dldEl0ZXIKKyAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zNi5QeU9iamVjdF9IYXNBdHRyCisgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfSGFzQXR0clN0cmluZworICBQeU9iamVjdF9IYXNoPXB5dGhvbjM2LlB5T2JqZWN0X0hhc2gKKyAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjM2LlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAorICBQeU9iamVjdF9Jbml0PXB5dGhvbjM2LlB5T2JqZWN0X0luaXQKKyAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zNi5QeU9iamVjdF9Jbml0VmFyCisgIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzYuUHlPYmplY3RfSXNJbnN0YW5jZQorICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjM2LlB5T2JqZWN0X0lzU3ViY2xhc3MKKyAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjM2LlB5T2JqZWN0X0lzVHJ1ZQorICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzYuUHlPYmplY3RfTGVuZ3RoCisgIFB5T2JqZWN0X01hbGxvYz1weXRob24zNi5QeU9iamVjdF9NYWxsb2MKKyAgUHlPYmplY3RfTm90PXB5dGhvbjM2LlB5T2JqZWN0X05vdAorICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjM2LlB5T2JqZWN0X1JlYWxsb2MKKyAgUHlPYmplY3RfUmVwcj1weXRob24zNi5QeU9iamVjdF9SZXByCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjM2LlB5T2JqZWN0X1JpY2hDb21wYXJlCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zNi5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKKyAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzYuUHlPYmplY3RfU2VsZkl0ZXIKKyAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9TZXRBdHRyCisgIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfU2V0QXR0clN0cmluZworICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjM2LlB5T2JqZWN0X1NldEl0ZW0KKyAgUHlPYmplY3RfU2l6ZT1weXRob24zNi5QeU9iamVjdF9TaXplCisgIFB5T2JqZWN0X1N0cj1weXRob24zNi5QeU9iamVjdF9TdHIKKyAgUHlPYmplY3RfVHlwZT1weXRob24zNi5QeU9iamVjdF9UeXBlIERBVEEKKyAgUHlPRGljdF9EZWxJdGVtPXB5dGhvbjM2LlB5T0RpY3RfRGVsSXRlbQorICBQeU9EaWN0X05ldz1weXRob24zNi5QeU9EaWN0X05ldworICBQeU9EaWN0X1NldEl0ZW09cHl0aG9uMzYuUHlPRGljdF9TZXRJdGVtCisgIFB5T0RpY3RfVHlwZT1weXRob24zNi5QeU9EaWN0X1R5cGUgREFUQQorICBQeU9EaWN0SXRlbXNfVHlwZT1weXRob24zNi5QeU9EaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVyX1R5cGU9cHl0aG9uMzYuUHlPRGljdEl0ZXJfVHlwZSBEQVRBCisgIFB5T0RpY3RLZXlzX1R5cGU9cHl0aG9uMzYuUHlPRGljdEtleXNfVHlwZSBEQVRBCisgIFB5T0RpY3RWYWx1ZXNfVHlwZT1weXRob24zNi5QeU9EaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zNi5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncworICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjM2LlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKKyAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjM2LlB5UHJvcGVydHlfVHlwZSBEQVRBCisgIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzYuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5UmFuZ2VfVHlwZT1weXRob24zNi5QeVJhbmdlX1R5cGUgREFUQQorICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzYuUHlSZXZlcnNlZF9UeXBlIERBVEEKKyAgUHlTZXFJdGVyX05ldz1weXRob24zNi5QeVNlcUl0ZXJfTmV3CisgIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjM2LlB5U2VxSXRlcl9UeXBlIERBVEEKKyAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zNi5QeVNlcXVlbmNlX0NoZWNrCisgIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ29uY2F0CisgIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzYuUHlTZXF1ZW5jZV9Db250YWlucworICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ291bnQKKyAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsSXRlbQorICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsU2xpY2UKKyAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjM2LlB5U2VxdWVuY2VfRmFzdAorICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRTbGljZQorICBQeVNlcXVlbmNlX0luPXB5dGhvbjM2LlB5U2VxdWVuY2VfSW4KKyAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAorICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0CisgIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JbmRleAorICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zNi5QeVNlcXVlbmNlX0xlbmd0aAorICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzYuUHlTZXF1ZW5jZV9MaXN0CisgIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjM2LlB5U2VxdWVuY2VfUmVwZWF0CisgIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNi5QeVNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zNi5QeVNlcXVlbmNlX1NldFNsaWNlCisgIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zNi5QeVNlcXVlbmNlX1NpemUKKyAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zNi5QeVNlcXVlbmNlX1R1cGxlCisgIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjM2LlB5U2V0SXRlcl9UeXBlIERBVEEKKyAgUHlTZXRfQWRkPXB5dGhvbjM2LlB5U2V0X0FkZAorICBQeVNldF9DbGVhcj1weXRob24zNi5QeVNldF9DbGVhcgorICBQeVNldF9Db250YWlucz1weXRob24zNi5QeVNldF9Db250YWlucworICBQeVNldF9EaXNjYXJkPXB5dGhvbjM2LlB5U2V0X0Rpc2NhcmQKKyAgUHlTZXRfTmV3PXB5dGhvbjM2LlB5U2V0X05ldworICBQeVNldF9Qb3A9cHl0aG9uMzYuUHlTZXRfUG9wCisgIFB5U2V0X1NpemU9cHl0aG9uMzYuUHlTZXRfU2l6ZQorICBQeVNldF9UeXBlPXB5dGhvbjM2LlB5U2V0X1R5cGUgREFUQQorICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzYuUHlTbGljZV9HZXRJbmRpY2VzCisgIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjM2LlB5U2xpY2VfR2V0SW5kaWNlc0V4CisgIFB5U2xpY2VfTmV3PXB5dGhvbjM2LlB5U2xpY2VfTmV3CisgIFB5U2xpY2VfVHlwZT1weXRob24zNi5QeVNsaWNlX1R5cGUgREFUQQorICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzYuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKKyAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjM2LlB5U3RhdGVfRmluZE1vZHVsZQorICBQeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNi5QeVN0YXRlX0FkZE1vZHVsZQorICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zNi5QeVN0YXRlX1JlbW92ZU1vZHVsZQorICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfTmV3CisgIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zNi5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQorICBQeVN1cGVyX1R5cGU9cHl0aG9uMzYuUHlTdXBlcl9UeXBlIERBVEEKKyAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zNi5QeVN5c19BZGRXYXJuT3B0aW9uCisgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjM2LlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCisgIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zNi5QeVN5c19Gb3JtYXRTdGRlcnIKKyAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjM2LlB5U3lzX0Zvcm1hdFN0ZG91dAorICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzYuUHlTeXNfR2V0T2JqZWN0CisgIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjM2LlB5U3lzX0hhc1dhcm5PcHRpb25zCisgIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzYuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucworICBQeVN5c19TZXRBcmd2PXB5dGhvbjM2LlB5U3lzX1NldEFyZ3YKKyAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjM2LlB5U3lzX1NldEFyZ3ZFeAorICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzYuUHlTeXNfU2V0T2JqZWN0CisgIFB5U3lzX1NldFBhdGg9cHl0aG9uMzYuUHlTeXNfU2V0UGF0aAorICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zNi5QeVN5c19Xcml0ZVN0ZGVycgorICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zNi5QeVN5c19Xcml0ZVN0ZG91dAorICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfQ2xlYXIKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9EZWxldGUKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAorICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zNi5QeVRocmVhZFN0YXRlX0dldAorICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9HZXREaWN0CisgIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfTmV3CisgIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YworICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9Td2FwCisgIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzYuUHlUcmFjZUJhY2tfSGVyZQorICBQeVRyYWNlQmFja19QcmludD1weXRob24zNi5QeVRyYWNlQmFja19QcmludAorICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjM2LlB5VHJhY2VCYWNrX1R5cGUgREFUQQorICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjM2LlB5VHVwbGVJdGVyX1R5cGUgREFUQQorICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzYuUHlUdXBsZV9DbGVhckZyZWVMaXN0CisgIFB5VHVwbGVfR2V0SXRlbT1weXRob24zNi5QeVR1cGxlX0dldEl0ZW0KKyAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zNi5QeVR1cGxlX0dldFNsaWNlCisgIFB5VHVwbGVfTmV3PXB5dGhvbjM2LlB5VHVwbGVfTmV3CisgIFB5VHVwbGVfUGFjaz1weXRob24zNi5QeVR1cGxlX1BhY2sKKyAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjM2LlB5VHVwbGVfU2V0SXRlbQorICBQeVR1cGxlX1NpemU9cHl0aG9uMzYuUHlUdXBsZV9TaXplCisgIFB5VHVwbGVfVHlwZT1weXRob24zNi5QeVR1cGxlX1R5cGUgREFUQQorICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zNi5QeVR5cGVfQ2xlYXJDYWNoZQorICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzYuUHlUeXBlX0Zyb21TcGVjCisgIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcz1weXRob24zNi5QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKKyAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zNi5QeVR5cGVfR2VuZXJpY0FsbG9jCisgIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjM2LlB5VHlwZV9HZW5lcmljTmV3CisgIFB5VHlwZV9HZXRGbGFncz1weXRob24zNi5QeVR5cGVfR2V0RmxhZ3MKKyAgUHlUeXBlX0dldFNsb3Q9cHl0aG9uMzYuUHlUeXBlX0dldFNsb3QKKyAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zNi5QeVR5cGVfSXNTdWJ0eXBlCisgIFB5VHlwZV9Nb2RpZmllZD1weXRob24zNi5QeVR5cGVfTW9kaWZpZWQKKyAgUHlUeXBlX1JlYWR5PXB5dGhvbjM2LlB5VHlwZV9SZWFkeQorICBQeVR5cGVfVHlwZT1weXRob24zNi5QeVR5cGVfVHlwZSBEQVRBCisgIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzYuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzYuUHlVbmljb2RlX0FwcGVuZAorICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjM2LlB5VW5pY29kZV9BcHBlbmRBbmREZWwKKyAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nCisgIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zNi5QeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nCisgIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcKKyAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVVRGOFN0cmluZworICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzYuUHlVbmljb2RlX0FzV2lkZUNoYXIKKyAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzYuUHlVbmljb2RlX0NsZWFyRnJlZWxpc3QKKyAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzYuUHlVbmljb2RlX0NvbXBhcmUKKyAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zNi5QeVVuaWNvZGVfQ29uY2F0CisgIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNi5QeVVuaWNvZGVfQ29udGFpbnMKKyAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjM2LlB5VW5pY29kZV9Db3VudAorICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGUKKyAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVBU0NJSQorICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKKyAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCisgIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMTYKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYzMgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGOAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjM2LlB5VW5pY29kZV9GU0NvbnZlcnRlcgorICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjM2LlB5VW5pY29kZV9GU0RlY29kZXIKKyAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzYuUHlVbmljb2RlX0ZpbmQKKyAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zNi5QeVVuaWNvZGVfRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tRm9ybWF0VgorICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbU9iamVjdAorICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21PcmRpbmFsCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNi5QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCisgIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zNi5QeVVuaWNvZGVfR2V0U2l6ZQorICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM2LlB5VW5pY29kZV9Jc0lkZW50aWZpZXIKKyAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzYuUHlVbmljb2RlX0pvaW4KKyAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zNi5QeVVuaWNvZGVfUGFydGl0aW9uCisgIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM2LlB5VW5pY29kZV9SUGFydGl0aW9uCisgIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzYuUHlVbmljb2RlX1JTcGxpdAorICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zNi5QeVVuaWNvZGVfUmVwbGFjZQorICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjM2LlB5VW5pY29kZV9SZXNpemUKKyAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjM2LlB5VW5pY29kZV9SaWNoQ29tcGFyZQorICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjM2LlB5VW5pY29kZV9TcGxpdAorICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zNi5QeVVuaWNvZGVfU3BsaXRsaW5lcworICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjM2LlB5VW5pY29kZV9UYWlsbWF0Y2gKKyAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zNi5QeVVuaWNvZGVfVHJhbnNsYXRlCisgIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjM2LlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCisgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY3CisgIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKKyAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjM2LlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAorICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zNi5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQorICBQeVVuaWNvZGVfVHlwZT1weXRob24zNi5QeVVuaWNvZGVfVHlwZSBEQVRBCisgIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCisgIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zNi5QeVdlYWtyZWZfTmV3UHJveHkKKyAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zNi5QeVdlYWtyZWZfTmV3UmVmCisgIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzYuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCisgIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzYuUHlXcmFwcGVyX05ldworICBQeVppcF9UeXBlPXB5dGhvbjM2LlB5WmlwX1R5cGUgREFUQQorICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zNi5QeV9BZGRQZW5kaW5nQ2FsbAorICBQeV9BdEV4aXQ9cHl0aG9uMzYuUHlfQXRFeGl0CisgIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzYuUHlfQnVpbGRWYWx1ZQorICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjM2LlB5X0NvbXBpbGVTdHJpbmcKKyAgUHlfRGVjUmVmPXB5dGhvbjM2LlB5X0RlY1JlZgorICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zNi5QeV9FbmRJbnRlcnByZXRlcgorICBQeV9FeGl0PXB5dGhvbjM2LlB5X0V4aXQKKyAgUHlfRmF0YWxFcnJvcj1weXRob24zNi5QeV9GYXRhbEVycm9yCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0ZpbmFsaXplPXB5dGhvbjM2LlB5X0ZpbmFsaXplCisgIFB5X0ZpbmFsaXplRXg9cHl0aG9uMzYuUHlfRmluYWxpemVFeAorICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzYuUHlfR2V0QnVpbGRJbmZvCisgIFB5X0dldENvbXBpbGVyPXB5dGhvbjM2LlB5X0dldENvbXBpbGVyCisgIFB5X0dldENvcHlyaWdodD1weXRob24zNi5QeV9HZXRDb3B5cmlnaHQKKyAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNi5QeV9HZXRFeGVjUHJlZml4CisgIFB5X0dldFBhdGg9cHl0aG9uMzYuUHlfR2V0UGF0aAorICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNi5QeV9HZXRQbGF0Zm9ybQorICBQeV9HZXRQcmVmaXg9cHl0aG9uMzYuUHlfR2V0UHJlZml4CisgIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNi5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKKyAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzYuUHlfR2V0UHJvZ3JhbU5hbWUKKyAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNi5QeV9HZXRQeXRob25Ib21lCisgIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2LlB5X0dldFJlY3Vyc2lvbkxpbWl0CisgIFB5X0dldFZlcnNpb249cHl0aG9uMzYuUHlfR2V0VmVyc2lvbgorICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9JbmNSZWY9cHl0aG9uMzYuUHlfSW5jUmVmCisgIFB5X0luaXRpYWxpemU9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZQorICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZUV4CisgIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlfSXNJbml0aWFsaXplZAorICBQeV9NYWluPXB5dGhvbjM2LlB5X01haW4KKyAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNi5QeV9NYWtlUGVuZGluZ0NhbGxzCisgIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM2LlB5X05ld0ludGVycHJldGVyCisgIFB5X1JlcHJFbnRlcj1weXRob24zNi5QeV9SZXByRW50ZXIKKyAgUHlfUmVwckxlYXZlPXB5dGhvbjM2LlB5X1JlcHJMZWF2ZQorICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNi5QeV9TZXRQcm9ncmFtTmFtZQorICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM2LlB5X1NldFB5dGhvbkhvbWUKKyAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzYuUHlfU2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzYuUHlfU3ltdGFibGVTdHJpbmcKKyAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM2LlB5X1ZhQnVpbGRWYWx1ZQorICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM2Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNi5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCisgIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM2Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisgIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX01hbGxvYworICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9HQ19OZXcKKyAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfR0NfTmV3VmFyCisgIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX1Jlc2l6ZQorICBfUHlPYmplY3RfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9OZXcKKyAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfTmV3VmFyCisgIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNi5fUHlTdGF0ZV9BZGRNb2R1bGUKKyAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNi5fUHlUaHJlYWRTdGF0ZV9Jbml0CisgIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM2Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCisgIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQorICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCisgIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM2Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0CisgIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzYuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgorICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNi5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNi5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfQnVpbGRWYWx1ZV9TaXplVAorICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNi5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCisgIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzYuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAorICBfUHlfRGVhbGxvYz1weXRob24zNi5fUHlfRGVhbGxvYworICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzYuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKKyAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM2Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCisgIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM2Ll9QeV9Ob25lU3RydWN0IERBVEEKKyAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM2Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCisgIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzYuX1B5X1N3YXBwZWRPcCBEQVRBCisgIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM2Ll9QeV9UcnVlU3RydWN0IERBVEEKKyAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCisgIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzYuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19WYVBhcnNlX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNi5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzYuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9leGUucmMgYi9QQy9weXRob25fZXhlLnJjCmluZGV4IDkxNzg1YTEuLmFlMGIwMjkgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbl9leGUucmMKKysrIGIvUEMvcHl0aG9uX2V4ZS5yYwpAQCAtNyw3ICs3LDcgQEAKICNpbmNsdWRlIDx3aW51c2VyLmg+CiAxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKLTEgSUNPTiBESVNDQVJEQUJMRSAicHljb24uaWNvIiAKKzEgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9uLmljbyIgCiAKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbndfZXhlLnJjIGIvUEMvcHl0aG9ud19leGUucmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiZjM1OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL3B5dGhvbndfZXhlLnJjCkBAIC0wLDAgKzEsNDkgQEAKKy8vIFJlc291cmNlIHNjcmlwdCBmb3IgUHl0aG9uIGNvbnNvbGUgRVhFcy4KKworI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKKworLy8gSW5jbHVkZSB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGluZGljYXRlcyB3ZSBzdXBwb3J0IGFsbAorLy8gY3VycmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgorI2luY2x1ZGUgPHdpbnVzZXIuaD4KKzEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKKworMSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob253LmljbyIgCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBWZXJzaW9uCisvLworCitWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KKyBGSUxFVkVSU0lPTiBQWVZFUlNJT042NAorIFBST0RVQ1RWRVJTSU9OIFBZVkVSU0lPTjY0CisgRklMRUZMQUdTTUFTSyAweDNmTAorI2lmZGVmIF9ERUJVRworIEZJTEVGTEFHUyBWU19GRl9ERUJVRworI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIFZPU19fV0lORE9XUzMyCisgRklMRVRZUEUgVkZUX0FQUAorIEZJTEVTVUJUWVBFIDB4MEwKK0JFR0lOCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJMT0NLICIwMDAwMDRiMCIKKyAgICAgICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsIFBZVEhPTl9DT01QQU5ZICJcMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gQXBwbGljYXRpb25cMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsIFBZVEhPTl9DT1BZUklHSFQgIlwwIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHl0aG9udyIgUFlUSE9OX0RFQlVHX0VYVCAiLmV4ZVwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgRU5ECisgICAgRU5ECisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4MCwgMTIwMAorICAgIEVORAorRU5ECmRpZmYgLS1naXQgYS9QQy90ZXN0cHkucHkgYi9QQy90ZXN0cHkucHkKaW5kZXggNGVmM2Q0Zi4uNzA5ZjM1YyAxMDA2NDQKLS0tIGEvUEMvdGVzdHB5LnB5CisrKyBiL1BDL3Rlc3RweS5weQpAQCAtMjYsNSArMjYsNSBAQAogICAgICAgICAgICAgIyBBZGQgdGhlICJ0ZXN0IiBkaXJlY3RvcnkgdG8gUFlUSE9OUEFUSC4KICAgICAgICAgICAgIHN5cy5wYXRoID0gc3lzLnBhdGggKyBbdGVzdF0KIAotaW1wb3J0IHJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KLXJlZ3J0ZXN0Lm1haW4oKQoraW1wb3J0IGxpYnJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KK2xpYnJlZ3J0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvUEMvd2lucmVnLmMgYi9QQy93aW5yZWcuYwppbmRleCBmMDhkOWE0Li45NTI0ODM4IDEwMDY0NAotLS0gYS9QQy93aW5yZWcuYworKysgYi9QQy93aW5yZWcuYwpAQCAtNTQ5LDcgKzU0OSw3IEBACiAgICAgICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJiAhUHlMb25nX0NoZWNrKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKERXT1JELCAxKTsKLSAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7CisgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCl7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICB9CkBAIC01NjMsNiArNTYzLDI0IEBACiAgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JEKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRUdfUVdPUkQ6CisgICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgIVB5TG9uZ19DaGVjayh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhEV09SRDY0LCAxKTsKKyAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IHNpemVvZihEV09SRDY0KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCB6ZXJvID0gMDsKKyAgICAgICAgICAgICAgICBtZW1jcHkoKnJldERhdGFCdWYsICZ6ZXJvLCBzaXplb2YoRFdPUkQ2NCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCBkID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JENjQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgogICAgICAgICAgICAgewpAQCAtNjE5LDcgKzYzNyw3IEBACiAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gc2l6ZSArIDI7CiAgICAgICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgIH0KQEAgLTY2NSw3ICs2ODMsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKGNoYXIsIHZpZXcubGVuKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTY5MCw3ICs3MDgsMTMgQEAKICAgICAgICAgICAgIGlmIChyZXREYXRhU2l6ZSA9PSAwKQogICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKDApOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCooaW50ICopcmV0RGF0YUJ1Zik7CisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKihEV09SRCAqKXJldERhdGFCdWYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVHX1FXT1JEOgorICAgICAgICAgICAgaWYgKHJldERhdGFTaXplID09IDApCisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKDApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKERXT1JENjQgKilyZXREYXRhQnVmKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgpAQCAtMTU5OSw3ICsxNjIzLDcgQEAKICAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOgogICAgICAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLgogICAgICAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLgotICAgICAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICAgICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfRFdPUkQKICAgICAgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LgogICAgICAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsCkBAIC0xNjA5LDYgKzE2MzMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnkgdHdvIG51bGwgY2hhcmFjdGVycy4gIE5vdGUgdGhhdCBQeXRob24gaGFuZGxlcwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LgogICAgICAgICBSRUdfTk9ORSAtLSBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCisgICAgICAgIFJFR19RV09SRCAtLSBBIDY0LWJpdCBudW1iZXIuCisgICAgICAgIFJFR19RV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfUVdPUkQuCiAgICAgICAgIFJFR19SRVNPVVJDRV9MSVNUIC0tIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LgogICAgICAgICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgogICAgIHZhbHVlOiBvYmplY3QKQEAgLTE2MzEsNyArMTY1Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2lucmVnX1NldFZhbHVlRXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqdmFsdWVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc2VydmVkLCBEV09SRCB0eXBlLCBQeU9iamVjdCAqdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD1mMWIxNmNiY2MzZWQ0MTAxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD05MDBhOWUzOTkwYmZiMTk2XSovCiB7CiAgICAgQllURSAqZGF0YTsKICAgICBEV09SRCBsZW47CkBAIC0xOTE4LDYgKzE5NDQsOCBAQAogICAgIEFERF9JTlQoUkVHX0RXT1JEKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9MSVRUTEVfRU5ESUFOKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9CSUdfRU5ESUFOKTsKKyAgICBBRERfSU5UKFJFR19RV09SRCk7CisgICAgQUREX0lOVChSRUdfUVdPUkRfTElUVExFX0VORElBTik7CiAgICAgQUREX0lOVChSRUdfTElOSyk7CiAgICAgQUREX0lOVChSRUdfTVVMVElfU1opOwogICAgIEFERF9JTlQoUkVHX1JFU09VUkNFX0xJU1QpOwpkaWZmIC0tZ2l0IGEvUEMvd2luc291bmQuYyBiL1BDL3dpbnNvdW5kLmMKaW5kZXggNmI3OWQyMy4uN2ZlZWJjYiAxMDA2NDQKLS0tIGEvUEMvd2luc291bmQuYworKysgYi9QQy93aW5zb3VuZC5jCkBAIC01Miw3ICs1Miw3IEBACiAiU05EX05PV0FJVCAtIFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGUgc291bmQgZHJpdmVyIGlzIGJ1c3lcbiIgLy8gV2l0aG91dCBhbnkgZXJyb3JzCiAiXG4iCiAiQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKSAtIE1ha2UgYSBiZWVwIHRocm91Z2ggdGhlIFBDIHNwZWFrZXIuXG4iCi0iTWVzc2FnZUJlZXAoeCkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CisiTWVzc2FnZUJlZXAodHlwZSkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CiAKIC8qW2NsaW5pYyBpbnB1dF0KIG1vZHVsZSB3aW5zb3VuZApAQCAtNjQsMzIgKzY0LDU4IEBACiAvKltjbGluaWMgaW5wdXRdCiB3aW5zb3VuZC5QbGF5U291bmQKIAotICAgIHNvdW5kOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgc291bmQ6IG9iamVjdAogICAgICAgICBUaGUgc291bmQgdG8gcGxheTsgYSBmaWxlbmFtZSwgZGF0YSwgb3IgTm9uZS4KICAgICBmbGFnczogaW50CiAgICAgICAgIEZsYWcgdmFsdWVzLCBvcmVkIHRvZ2V0aGVyLiAgU2VlIG1vZHVsZSBkb2N1bWVudGF0aW9uLgotICAgIC8KIAogQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfVU5JQ09ERSAqc291bmQsIGludCBmbGFncykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzI0YjNhMmI0MzY4Mzc4IGlucHV0PTM0MTFiMWI3YzFmMzZkOTNdKi8KK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VuZCwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ5YTBmZDE2YTM3MmViZWIgaW5wdXQ9YzYzZTFmMmQ4NDhkYTJmMl0qLwogewogICAgIGludCBvazsKKyAgICB3Y2hhcl90ICp3c291bmQ7CisgICAgUHlfYnVmZmVyIHZpZXcgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMgJiYgZmxhZ3MgJiBTTkRfTUVNT1JZKSB7Ci0gICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KLSAgICAgICAgICAgIHByZXZlbnQgU05EX0xPT1AgZnJvbSBtZW1vcnkuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvdW5kID09IFB5X05vbmUpIHsKKyAgICAgICAgd3NvdW5kID0gTlVMTDsKKyAgICB9IGVsc2UgaWYgKGZsYWdzICYgU05EX01FTU9SWSkgeworICAgICAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMpIHsKKyAgICAgICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KKyAgICAgICAgICAgICAgICBwcmV2ZW50IFNORF9MT09QIGZyb20gbWVtb3J5LiAqLworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc291bmQsICZ2aWV3LCBQeUJVRl9TSU1QTEUpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgd3NvdW5kID0gKHdjaGFyX3QgKil2aWV3LmJ1ZjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzb3VuZCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIidzb3VuZCcgbXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc291bmQpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHdzb3VuZCA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHNvdW5kLCBOVUxMKTsKKyAgICAgICAgaWYgKHdzb3VuZCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG9rID0gUGxheVNvdW5kVyhzb3VuZCwgTlVMTCwgZmxhZ3MpOworICAgIG9rID0gUGxheVNvdW5kVyh3c291bmQsIE5VTEwsIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmICh2aWV3Lm9iaikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICB9IGVsc2UgaWYgKHNvdW5kICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3c291bmQpOworICAgIH0KICAgICBpZiAoIW9rKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGYWlsZWQgdG8gcGxheSBzb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNSwxNCArMTMxLDEzIEBACiAgICAgICAgIE11c3QgYmUgaW4gdGhlIHJhbmdlIDM3IHRocm91Z2ggMzIsNzY3LgogICAgIGR1cmF0aW9uOiBpbnQKICAgICAgICAgSG93IGxvbmcgdGhlIHNvdW5kIHNob3VsZCBwbGF5LCBpbiBtaWxsaXNlY29uZHMuCi0gICAgLwogCiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogd2luc291bmRfQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTYyOGE5OWQyZGRmNzM3OThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTQwZTM2MGNmYTAwYTVjZjBdKi8KIHsKICAgICBCT09MIG9rOwogCkBAIC0xMzYsOCArMTYxLDcgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHdpbnNvdW5kLk1lc3NhZ2VCZWVwCiAKLSAgICB4OiBpbnQoY19kZWZhdWx0PSJNQl9PSyIpID0gTUJfT0sKLSAgICAvCisgICAgdHlwZTogaW50KGNfZGVmYXVsdD0iTUJfT0siKSA9IE1CX09LCiAKIENhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS4KIApAQCAtMTQ1LDEwICsxNjksMjAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWFkODllNGQ4ZDMwYTk1NyBpbnB1dD1hNzc2YzhhODVjOTg1M2Y2XSovCit3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB0eXBlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEyMDg3NTQ1NTEyMTEyMWYgaW5wdXQ9ZGIxODVmNzQxYWUyMTQwMV0qLwogewotICAgIE1lc3NhZ2VCZWVwKHgpOworICAgIEJPT0wgb2s7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgb2sgPSBNZXNzYWdlQmVlcCh0eXBlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFvaykgeworICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19SdW50aW1lRXJyb3IsIDApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApkaWZmIC0tZ2l0IGEvUENidWlsZC9fbHptYS52Y3hwcm9qIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCmluZGV4IDFmMDY5NmRhLi43ZWMyNjkyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19sem1hLnZjeHByb2oKKysrIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCkBAIC02MSwxMyArNjEsMTEgQEAKICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilzcmMvbGlibHptYS9hcGk7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICdXaW4zMiciPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcyBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJbWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz5mYWxzZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKE91dERpcikvbGlibHptYSQoUHlEZWJ1Z0V4dCkubGliPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtODEsOCArNzksMTIgQEAKICAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgogICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibGlibHptYS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxMjcyODI1MC0xNmVDLTRkYzYtOTRkNy1lMjFkZDg4OTQ3Zjh9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CiAgIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdCBiL1BDYnVpbGQvYnVpbGRfcGdvLmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcyYzM4Mi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLUBlY2hvIG9mZg0KLWVjaG8uRGVwcmVjYXRpb25XYXJuaW5nOg0KLWVjaG8uICAgIFRoaXMgc2NyaXB0IGlzIGRlcHJlY2F0ZWQsIHVzZSBgYnVpbGQuYmF0IC0tcGdvYCBpbnN0ZWFkLg0KLWVjaG8uDQotDQotY2FsbCAiJX5kcDBidWlsZC5iYXQiIC0tcGdvICUqDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdCBiL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKaW5kZXggOWIyYTA4NC4uOTFhMmE2ZCAxMDA2NDQKLS0tIGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdAorKysgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CkBAIC01NSwxMSArNTUsMTEgQEAKIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiemlwMi0xLjAuNg0KIGlmIE5PVCAiJUluY2x1ZGVTU0wlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICBuYXNtLTIuMTEuMDYNCiBpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgb3BlbnNzbC0xLjAuMmgNCi1zZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlLTMuOC4xMS4wDQotaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRjbC1jb3JlLTguNi40LjINCi1pZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC42LjQuMg0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGUtMy4xNC4xLjANCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGNsLWNvcmUtOC42LjYuMA0KK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0ay04LjYuNi4wDQogaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRpeC04LjQuMy42DQotc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh6LTUuMC41DQorc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh6LTUuMi4yDQogDQogZm9yICUlZSBpbiAoJWxpYnJhcmllcyUpIGRvICgNCiAgICAgaWYgZXhpc3QgJSVlICgNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvaiBiL1BDYnVpbGQvbGlibHptYS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMWY5YmQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvagpAQCAtMCwwICsxLDIxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezEyNzI4MjUwLTE2RUMtNERDNi05NEQ3LUUyMUREODg5NDdGOH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmxpYmx6bWE8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFN1cHBvcnRQR08+dHJ1ZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtIQVZFX0NPTkZJR19IO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpd2luZG93czskKGx6bWFEaXIpc3JjL2xpYmx6bWEvY29tbW9uOyQobHptYURpcilzcmMvY29tbW9uOyQobHptYURpcilzcmMvbGlibHptYS9hcGk7JChsem1hRGlyKXNyYy9saWJsem1hL2NoZWNrOyQobHptYURpcilzcmMvbGlibHptYS9kZWx0YTskKGx6bWFEaXIpc3JjL2xpYmx6bWEvbHo7JChsem1hRGlyKXNyYy9saWJsem1hL2x6bWE7JChsem1hRGlyKXNyYy9saWJsem1hL3JhbmdlY29kZXI7JChsem1hRGlyKXNyYy9saWJsem1hL3NpbXBsZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NwdWNvcmVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfcGh5c21lbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNoZWNrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcc2hhMjU2LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYWxvbmVfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhdXRvX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2hlYWRlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2hlYWRlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX3V0aWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9kZWNvZGVyX21lbXVzYWdlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2VuY29kZXJfbWVtdXNhZ2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9wcmVzZXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2J1ZmZlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9mbGFnc19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9mbGFnc19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGhhcmR3YXJlX2NwdXRocmVhZHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caGFyZHdhcmVfcGh5c21lbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfaGFzaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxvdXRxdWV1ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9lbmNvZGVyX210LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX3NpemUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcZmFzdHBvc190YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9vcHRpbXVtX2Zhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9vcHRpbXVtX25vcm1hbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX3ByZXNldHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfbWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHByaWNlX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXGFybS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxhcm10aHVtYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxpYTY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHBvd2VycGMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2NvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNwYXJjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHg4Ni5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXG15dGhyZWFkLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblxzeXNkZWZzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY3B1Y29yZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9pbnRlZ2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfcGh5c21lbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcYmFzZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJjai5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJsb2NrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcY2hlY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxjb250YWluZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxkZWx0YS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGZpbHRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGhhcmR3YXJlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcaW5kZXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxpbmRleF9oYXNoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcbHptYTEyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcc3RyZWFtX2ZsYWdzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcdmVyc2lvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXHZsaS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNoZWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfdGFibGVfYmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl90YWJsZV9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlX2JlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfdGFibGVfbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmNfbWFjcm9zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGNvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X3ByZXNldC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cbWVtY21wbGVuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXG91dHF1ZXVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGZhc3Rwb3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfaGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfaGFzaF90YWJsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccHJpY2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHJhbmdlX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcil3aW5kb3dzXGNvbmZpZy5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvb3BlbnNzbC5wcm9wcyBiL1BDYnVpbGQvb3BlbnNzbC5wcm9wcwppbmRleCBlMzVjMGQ5Li4wZGU0ZTQzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL29wZW5zc2wucHJvcHMKKysrIGIvUENidWlsZC9vcGVuc3NsLnByb3BzCkBAIC0xOSw2ICsxOSw3IEBACiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfVEhSRUFEUyIgLz4KICAgICA8IS0tIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX1NZU05BTUVfV0lOMzIiIC8+IC0tPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0lBMzJfU1NFMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fR0YybSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBMV9BU00iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTI1Nl9BU00iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTUxMl9BU00iIC8+CkBAIC0zOCw3ICszOSw2IEBACiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+Ci0gICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX0dGMm0iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX1BBUlRfV09SRFMiIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX01PTlQiIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlJNRDE2MF9BU00iIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdCBiL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0CmluZGV4IDFiZTczZTYuLjJmNDFhZTggMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0CisrKyBiL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0CkBAIC0zLDEwICszLDEwIEBACiAgIGlmICIlMSIgRVFVICJEZWJ1ZyIgKA0KICAgICBzaGlmdA0KICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uX2QuZXhlDQotICAgIGlmIG5vdCBleGlzdCBweXRob24zNV9kLmRsbCBleGl0IDENCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjM2X2QuZGxsIGV4aXQgMQ0KICAgKSBFTFNFICgNCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjM1LmRsbCBleGl0IDENCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjM2LmRsbCBleGl0IDENCiAgICkNCiApDQogJUhPU1RfUFlUSE9OJSAiJX5kcDBwcmVwYXJlX3NzbC5weSIgJTENCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCmluZGV4IGQxYWM5OTguLjU0M2I0Y2EgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCisrKyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCkBAIC03LDcgKzcsNiBAQAogICAgIDxPdXREaXIgQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKE91dERpcikpIj4kKE91dERpcilcPC9PdXREaXI+CiAgICAgPFB5X0ludERpciBDb25kaXRpb249IickKFB5X0ludERpciknID09ICcnIj4kKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlvYmpcPC9QeV9JbnREaXI+CiAgICAgPEludERpcj4kKFB5X0ludERpcilcJChBcmNoTmFtZSlfJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnUEdJbnN0cnVtZW50JyBvciAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPiQoUHlfSW50RGlyKVwkKEFyY2hOYW1lKV9QR09cJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChUYXJnZXROYW1lKScgPT0gJyciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lPiQoVGFyZ2V0TmFtZSkkKFB5RGVidWdFeHQpPC9UYXJnZXROYW1lPgogICAgIDxHZW5lcmF0ZU1hbmlmZXN0PmZhbHNlPC9HZW5lcmF0ZU1hbmlmZXN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24ucHJvcHMgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwppbmRleCBlZTcwMjEwLi4yYjliOTAzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi5wcm9wcworKysgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwpAQCAtMjUsNyArMjUsNiBAQAogICAgIC0tPgogICAgIDxBcmNoTmFtZSBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJycgYW5kICQoUGxhdGZvcm0pID09ICd4NjQnIj5hbWQ2NDwvQXJjaE5hbWU+CiAgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnJyI+d2luMzI8L0FyY2hOYW1lPgotICAgIDxBcmNoTmFtZSBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKEFyY2hOYW1lKS1wZ288L0FyY2hOYW1lPgogICAgIAogICAgIDwhLS0gUm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHJlcG9zaXRvcnkgLS0+CiAgICAgPFB5U291cmNlUGF0aCBDb25kaXRpb249IickKFB5U291cmNlUGF0aCknID09ICcnIj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKCQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVwuLlwpKTwvUHlTb3VyY2VQYXRoPgpAQCAtNDMsOSArNDIsOSBAQAogICAgIAogICAgIDwhLS0gRGlyZWN0b3JpZXMgb2YgZXh0ZXJuYWwgcHJvamVjdHMuIHRjbHRrIGlzIGhhbmRsZWQgaW4gdGNsdGsucHJvcHMgLS0+CiAgICAgPEV4dGVybmFsc0Rpcj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKGAkKFB5U291cmNlUGF0aClleHRlcm5hbHNcYCkpPC9FeHRlcm5hbHNEaXI+Ci0gICAgPHNxbGl0ZTNEaXI+JChFeHRlcm5hbHNEaXIpc3FsaXRlLTMuOC4xMS4wXDwvc3FsaXRlM0Rpcj4KKyAgICA8c3FsaXRlM0Rpcj4kKEV4dGVybmFsc0RpcilzcWxpdGUtMy4xNC4xLjBcPC9zcWxpdGUzRGlyPgogICAgIDxiejJEaXI+JChFeHRlcm5hbHNEaXIpYnppcDItMS4wLjZcPC9iejJEaXI+Ci0gICAgPGx6bWFEaXI+JChFeHRlcm5hbHNEaXIpeHotNS4wLjVcPC9sem1hRGlyPgorICAgIDxsem1hRGlyPiQoRXh0ZXJuYWxzRGlyKXh6LTUuMi4yXDwvbHptYURpcj4KICAgICA8b3BlbnNzbERpcj4kKEV4dGVybmFsc0RpcilvcGVuc3NsLTEuMC4yaFw8L29wZW5zc2xEaXI+CiAgICAgPG9wZW5zc2xJbmNsdWRlRGlyPiQob3BlbnNzbERpcilpbmNsdWRlMzI8L29wZW5zc2xJbmNsdWRlRGlyPgogICAgIDxvcGVuc3NsSW5jbHVkZURpciBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJ2FtZDY0JyI+JChvcGVuc3NsRGlyKWluY2x1ZGU2NDwvb3BlbnNzbEluY2x1ZGVEaXI+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCmluZGV4IGU1ZTk2YWQuLjc2OWM2NDMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCkBAIC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgpAQCAtNjksNyArNjksNyBAQAogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO01TX0RMTF9JRD0iJChTeXNXaW5WZXIpIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjt3czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjtzaGx3YXBpLmxpYjt3czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CkBAIC0xMjQsNiArMTI0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2RpY3RvYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Bjb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zZGVmcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc21vZHVsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXJzZXRvay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXRjaGxldmVsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBnZW4uaCIgLz4KQEAgLTIwOSw5ICsyMTAsMTMgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb25kdmFyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWRfbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx3b3JkY29kZV9oZWxwZXJzLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UybW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UyYl9pbXBsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2Uyc19pbXBsLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jc3YuYyIgLz4KQEAgLTIyMyw2ICsyMjgsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbWF0aC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcGlja2xlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NoYTNcc2hhM21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3JlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zdGF0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zdHJ1Y3QuYyIgLz4KQEAgLTI2NCw2ICsyNzAsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHdpbmNvbnNvbGVpby5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiIC8+CkBAIC0zNDksNiArMzU2LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjZXZhbC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvZGVjcy5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbXBpbGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkdHJhY2Vfc3R1YnMuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHlubG9hZF93aW4uYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxlcnJvcnMuYyIgLz4KQEAgLTQxNiw0ICs0MjQsNCBAQAogICA8VGFyZ2V0IE5hbWU9Il9XYXJuQWJvdXRUb29sc2V0IiBCZWZvcmVUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJChQbGF0Zm9ybVRvb2xzZXQpICE9ICd2MTQwJyI+CiAgICAgPFdhcm5pbmcgVGV4dD0iVG9vbHNldCAkKFBsYXRmb3JtVG9vbHNldCkgaXMgbm90IHVzZWQgZm9yIG9mZmljaWFsIGJ1aWxkcy4gWW91ciBidWlsZCBtYXkgaGF2ZSBlcnJvcnMgb3IgaW5jb21wYXRpYmlsaXRpZXMuIiAvPgogICA8L1RhcmdldD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4MzdiNzM2Li41ZWI0Mjc1IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEsNCArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cD4KICAgICA8RmlsdGVyIEluY2x1ZGU9IkluY2x1ZGUiPgpAQCAtMTc3LDYgKzE3Nyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zZGVmcy5oIj4KICAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc21vZHVsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXJzZXRvay5oIj4KICAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtNDIwLDYgKzQyMyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cdGhyZWFkX250LmgiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx3b3JkY29kZV9oZWxwZXJzLmgiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb25kdmFyLmgiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQ0Myw2ICs0NDksMTUgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMmJfaW1wbC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMnNfaW1wbC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC00NzYsNiArNDkxLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc2hhM1xzaGEzbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcmUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTU4Nyw2ICs2MDUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cd2luY29uc29sZWlvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtODI3LDYgKzg0OCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY29tcGlsZS5jIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHRyYWNlX3N0dWJzLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTk4MCw0ICsxMDA0LDQgQEAKICAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagppbmRleCBjYWVkMWU4Li5lNDBmNjZjIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagpAQCAtNjIsNyArNjIsNyBAQAogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX2V4ZS5yYyIgLz4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbndfZXhlLnJjIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXFdpbk1haW4uYyIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcmVhZG1lLnR4dCBiL1BDYnVpbGQvcmVhZG1lLnR4dAppbmRleCBkNDVlYjI3Li4zNGMyZWZlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3JlYWRtZS50eHQKKysrIGIvUENidWlsZC9yZWFkbWUudHh0CkBAIC00OCw3ICs0OCw3IEBACiAgICAgVXNlZCB0byBidWlsZCBQeXRob24gd2l0aCBleHRyYSBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzLCBlcXVpdmFsZW50DQogICAgIHRvIHVzaW5nIC4vY29uZmlndXJlIC0td2l0aC1weWRlYnVnIG9uIFVOSVguICBBbGwgYmluYXJpZXMgYnVpbHQNCiAgICAgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uIGhhdmUgIl9kIiBhZGRlZCB0byB0aGVpciBuYW1lOg0KLSAgICBweXRob24zNV9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQorICAgIHB5dGhvbjM2X2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiAgQm90aCB0aGUNCiAgICAgYnVpbGQgYW5kIHJ0IChydW4gdGVzdCkgYmF0Y2ggZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYWNjZXB0IGEgLWQNCiAgICAgb3B0aW9uIGZvciBkZWJ1ZyBidWlsZHMuICBJZiB5b3UgYXJlIGJ1aWxkaW5nIFB5dGhvbiB0byBoZWxwIHdpdGgNCiAgICAgZGV2ZWxvcG1lbnQgb2YgQ1B5dGhvbiwgeW91IHdpbGwgbW9zdCBsaWtlbHkgdXNlIHRoaXMgY29uZmlndXJhdGlvbi4NCkBAIC0yMDQsMTEgKzIwNCwxMSBAQAogICAgIGZ1bmN0aW9uYWxpdHkgdG8gX3NzbCBvciBfaGFzaGxpYi4gVGhleSB3aWxsIG5vdCBjbGVhbiB1cCB0aGVpciBvdXRwdXQNCiAgICAgd2l0aCB0aGUgbm9ybWFsIENsZWFuIHRhcmdldDsgQ2xlYW5BbGwgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4NCiBfc3FsaXRlMw0KLSAgICBXcmFwcyBTUUxpdGUgMy44LjExLjAsIHdoaWNoIGlzIGl0c2VsZiBidWlsdCBieSBzcWxpdGUzLnZjeHByb2oNCisgICAgV3JhcHMgU1FMaXRlIDMuMTQuMS4wLCB3aGljaCBpcyBpdHNlbGYgYnVpbHQgYnkgc3FsaXRlMy52Y3hwcm9qDQogICAgIEhvbWVwYWdlOg0KICAgICAgICAgaHR0cDovL3d3dy5zcWxpdGUub3JnLw0KIF90a2ludGVyDQotICAgIFdyYXBzIHZlcnNpb24gOC42LjQgb2YgdGhlIFRrIHdpbmRvd2luZyBzeXN0ZW0uDQorICAgIFdyYXBzIHZlcnNpb24gOC42LjYgb2YgdGhlIFRrIHdpbmRvd2luZyBzeXN0ZW0uDQogICAgIEhvbWVwYWdlOg0KICAgICAgICAgaHR0cDovL3d3dy50Y2wudGsvDQogDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9ydC5iYXQgYi9QQ2J1aWxkL3J0LmJhdAppbmRleCAyZDkzYjgwLi43ZDRkMDcxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3J0LmJhdAorKysgYi9QQ2J1aWxkL3J0LmJhdApAQCAtNDIsNyArNDIsNyBAQAogaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RhcmdzPSVyZWdydGVzdGFyZ3MlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiANCiBzZXQgZXhlPSVwcmVmaXglcHl0aG9uJXN1ZmZpeCUuZXhlDQotc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAiJXBjYnVpbGQlLi5cbGliXHRlc3RccmVncnRlc3QucHkiICVyZWdydGVzdGFyZ3MlDQorc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAtbSB0ZXN0ICVyZWdydGVzdGFyZ3MlDQogaWYgZGVmaW5lZCBxbW9kZSBnb3RvIFFtb2RlDQogDQogZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2ogYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagppbmRleCBjODQxYzVhLi40ZjViMTk2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagorKysgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagpAQCAtNjYsNyArNjYsNyBAQAogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfRU5BQkxFX0ZUUzQ7U1FMSVRFX0VOQUJMRV9GVFM1O1NRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwxPC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTg2LDQgKzg2LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RjbHRrLnByb3BzIGIvUENidWlsZC90Y2x0ay5wcm9wcwppbmRleCAxMWRiZmZiLi41N2JiOThhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3RjbHRrLnByb3BzCisrKyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKQEAgLTQsOCArNCw4IEBACiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxUY2xNYWpvclZlcnNpb24+ODwvVGNsTWFqb3JWZXJzaW9uPgogICAgIDxUY2xNaW5vclZlcnNpb24+NjwvVGNsTWlub3JWZXJzaW9uPgotICAgIDxUY2xQYXRjaExldmVsPjQ8L1RjbFBhdGNoTGV2ZWw+Ci0gICAgPFRjbFJldmlzaW9uPjI8L1RjbFJldmlzaW9uPgorICAgIDxUY2xQYXRjaExldmVsPjY8L1RjbFBhdGNoTGV2ZWw+CisgICAgPFRjbFJldmlzaW9uPjA8L1RjbFJldmlzaW9uPgogICAgIDxUa01ham9yVmVyc2lvbj4kKFRjbE1ham9yVmVyc2lvbik8L1RrTWFqb3JWZXJzaW9uPgogICAgIDxUa01pbm9yVmVyc2lvbj4kKFRjbE1pbm9yVmVyc2lvbik8L1RrTWlub3JWZXJzaW9uPgogICAgIDxUa1BhdGNoTGV2ZWw+JChUY2xQYXRjaExldmVsKTwvVGtQYXRjaExldmVsPgpAQCAtNDIsNCArNDIsNCBAQAogICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSA9PSAndjExMCciPiQoQnVpbGREaXJUb3ApX1ZDMTE8L0J1aWxkRGlyVG9wPgogICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSA9PSAndjEwMCciPiQoQnVpbGREaXJUb3ApX1ZDMTA8L0J1aWxkRGlyVG9wPgogICA8L1Byb3BlcnR5R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvaiBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKaW5kZXggMDE0NGZhOS4uOWRiZGM3NyAxMDA2NDQKLS0tIGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagorKysgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCkBAIC02Miw3ICs2Miw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4lKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTtQeV9MSU1JVEVEX0FQST0weDAzMDUwMDAwPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4lKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTtQeV9MSU1JVEVEX0FQST0weDAzMDYwMDAwPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CmRpZmYgLS1naXQgYS9QYXJzZXIvUHl0aG9uLmFzZGwgYi9QYXJzZXIvUHl0aG9uLmFzZGwKaW5kZXggY2QwODMyZC4uZjQ3MGFkMSAxMDA2NDQKLS0tIGEvUGFyc2VyL1B5dGhvbi5hc2RsCisrKyBiL1BhcnNlci9QeXRob24uYXNkbApAQCAtMSw0ICsxLDggQEAKLS0tIEFTREwncyBzaXggYnVpbHRpbiB0eXBlcyBhcmUgaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIGJ5dGVzLCBvYmplY3QsIHNpbmdsZXRvbgorLS0gQVNETCdzIDcgYnVpbHRpbiB0eXBlcyBhcmU6CistLSBpZGVudGlmaWVyLCBpbnQsIHN0cmluZywgYnl0ZXMsIG9iamVjdCwgc2luZ2xldG9uLCBjb25zdGFudAorLS0KKy0tIHNpbmdsZXRvbjogTm9uZSwgVHJ1ZSBvciBGYWxzZQorLS0gY29uc3RhbnQgY2FuIGJlIE5vbmUsIHdoZXJlYXMgTm9uZSBtZWFucyAibm8gdmFsdWUiIGZvciBvYmplY3QuCiAKIG1vZHVsZSBQeXRob24KIHsKQEAgLTI0LDYgKzI4LDggQEAKICAgICAgICAgICB8IERlbGV0ZShleHByKiB0YXJnZXRzKQogICAgICAgICAgIHwgQXNzaWduKGV4cHIqIHRhcmdldHMsIGV4cHIgdmFsdWUpCiAgICAgICAgICAgfCBBdWdBc3NpZ24oZXhwciB0YXJnZXQsIG9wZXJhdG9yIG9wLCBleHByIHZhbHVlKQorICAgICAgICAgIC0tICdzaW1wbGUnIGluZGljYXRlcyB0aGF0IHdlIGFubm90YXRlIHNpbXBsZSBuYW1lIHdpdGhvdXQgcGFyZW5zCisgICAgICAgICAgfCBBbm5Bc3NpZ24oZXhwciB0YXJnZXQsIGV4cHIgYW5ub3RhdGlvbiwgZXhwcj8gdmFsdWUsIGludCBzaW1wbGUpCiAKICAgICAgICAgICAtLSB1c2UgJ29yZWxzZScgYmVjYXVzZSBlbHNlIGlzIGEga2V5d29yZCBpbiB0YXJnZXQgbGFuZ3VhZ2VzCiAgICAgICAgICAgfCBGb3IoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQpAQCAtNzEsOSArNzcsMTIgQEAKICAgICAgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzKQogICAgICAgICAgfCBOdW0ob2JqZWN0IG4pIC0tIGEgbnVtYmVyIGFzIGEgUHlPYmplY3QuCiAgICAgICAgICB8IFN0cihzdHJpbmcgcykgLS0gbmVlZCB0byBzcGVjaWZ5IHJhdywgdW5pY29kZSwgZXRjPworICAgICAgICAgfCBGb3JtYXR0ZWRWYWx1ZShleHByIHZhbHVlLCBpbnQ/IGNvbnZlcnNpb24sIGV4cHI/IGZvcm1hdF9zcGVjKQorICAgICAgICAgfCBKb2luZWRTdHIoZXhwciogdmFsdWVzKQogICAgICAgICAgfCBCeXRlcyhieXRlcyBzKQogICAgICAgICAgfCBOYW1lQ29uc3RhbnQoc2luZ2xldG9uIHZhbHVlKQogICAgICAgICAgfCBFbGxpcHNpcworICAgICAgICAgfCBDb25zdGFudChjb25zdGFudCB2YWx1ZSkKIAogICAgICAgICAgLS0gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNhbiBhcHBlYXIgaW4gYXNzaWdubWVudCBjb250ZXh0CiAgICAgICAgICB8IEF0dHJpYnV0ZShleHByIHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dCBjdHgpCkBAIC0xMDEsNyArMTEwLDcgQEAKIAogICAgIGNtcG9wID0gRXEgfCBOb3RFcSB8IEx0IHwgTHRFIHwgR3QgfCBHdEUgfCBJcyB8IElzTm90IHwgSW4gfCBOb3RJbgogCi0gICAgY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMpCisgICAgY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMsIGludCBpc19hc3luYykKIAogICAgIGV4Y2VwdGhhbmRsZXIgPSBFeGNlcHRIYW5kbGVyKGV4cHI/IHR5cGUsIGlkZW50aWZpZXI/IG5hbWUsIHN0bXQqIGJvZHkpCiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGwucHkgYi9QYXJzZXIvYXNkbC5weQppbmRleCAxMjFjZGFiLi42MmY1YzE5IDEwMDY0NAotLS0gYS9QYXJzZXIvYXNkbC5weQorKysgYi9QYXJzZXIvYXNkbC5weQpAQCAtMzMsNyArMzMsOCBAQAogIyBTZWUgdGhlIEVCTkYgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBsb2dpY2FsIGNvbm5lY3Rpb24KICMgYmV0d2VlbiB0aGUgdmFyaW91cyBub2RlIHR5cGVzLgogCi1idWlsdGluX3R5cGVzID0geydpZGVudGlmaWVyJywgJ3N0cmluZycsICdieXRlcycsICdpbnQnLCAnb2JqZWN0JywgJ3NpbmdsZXRvbid9CitidWlsdGluX3R5cGVzID0geydpZGVudGlmaWVyJywgJ3N0cmluZycsICdieXRlcycsICdpbnQnLCAnb2JqZWN0JywgJ3NpbmdsZXRvbicsCisgICAgICAgICAgICAgICAgICdjb25zdGFudCd9CiAKIGNsYXNzIEFTVDoKICAgICBkZWYgX19yZXByX18oc2VsZik6CmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbF9jLnB5IGIvUGFyc2VyL2FzZGxfYy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IGYzOGMyNTMuLjE3Yzg1MTcKLS0tIGEvUGFyc2VyL2FzZGxfYy5weQorKysgYi9QYXJzZXIvYXNkbF9jLnB5CkBAIC04MzQsNiArODM0LDcgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0KilvOwogfQogI2RlZmluZSBhc3Qyb2JqX3NpbmdsZXRvbiBhc3Qyb2JqX29iamVjdAorI2RlZmluZSBhc3Qyb2JqX2NvbnN0YW50IGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfaWRlbnRpZmllciBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX3N0cmluZyBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2J5dGVzIGFzdDJvYmpfb2JqZWN0CkBAIC04NzEsNiArODcyLDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgb2JqMmFzdF9jb25zdGFudChQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKG9iaikgeworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChhcmVuYSwgb2JqKSA8IDApIHsKKyAgICAgICAgICAgICpvdXQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgIH0KKyAgICAqb3V0ID0gb2JqOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IG9iajJhc3RfaWRlbnRpZmllcihQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopICYmIG9iaiAhPSBQeV9Ob25lKSB7CkBAIC05MDYsNyArOTIwLDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgaSA9IChpbnQpUHlMb25nX0FzTG9uZyhvYmopOworICAgIGkgPSBfUHlMb25nX0FzSW50KG9iaik7CiAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgKm91dCA9IGk7CmRpZmYgLS1naXQgYS9QYXJzZXIvZ3JhbW1hci5jIGIvUGFyc2VyL2dyYW1tYXIuYwppbmRleCBiNTk4Mjk0Li44NDIyM2M2IDEwMDY0NAotLS0gYS9QYXJzZXIvZ3JhbW1hci5jCisrKyBiL1BhcnNlci9ncmFtbWFyLmMKQEAgLTYzLDcgKzYzLDcgQEAKICAgICBzLT5zX3VwcGVyID0gMDsKICAgICBzLT5zX2FjY2VsID0gTlVMTDsKICAgICBzLT5zX2FjY2VwdCA9IDA7Ci0gICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QocyAtIGQtPmRfc3RhdGUsIFB5X2ludHB0cl90LCBpbnQpOworICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKHMgLSBkLT5kX3N0YXRlLCBpbnRwdHJfdCwgaW50KTsKIH0KIAogdm9pZApAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgaWYgKFB5X0RlYnVnRmxhZykKICAgICAgICAgcHJpbnRmKCJMYWJlbCBAICU4cCwgJWQ6ICVzXG4iLCBsbCwgbGwtPmxsX25sYWJlbHMsCiAgICAgICAgICAgICAgICBQeUdyYW1tYXJfTGFiZWxSZXByKGxiKSk7Ci0gICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QobGIgLSBsbC0+bGxfbGFiZWwsIFB5X2ludHB0cl90LCBpbnQpOworICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGxiIC0gbGwtPmxsX2xhYmVsLCBpbnRwdHJfdCwgaW50KTsKIH0KIAogLyogU2FtZSwgYnV0IHJhdGhlciBkaWVzIHRoYW4gYWRkcyAqLwpAQCAtMTIyLDcgKzEyMiwxMyBAQAogICAgIH0KICAgICBmcHJpbnRmKHN0ZGVyciwgIkxhYmVsICVkLyclcycgbm90IGZvdW5kXG4iLCB0eXBlLCBzdHIpOwogICAgIFB5X0ZhdGFsRXJyb3IoImdyYW1tYXIuYzpmaW5kbGFiZWwoKSIpOworCisgICAgLyogUHlfRmF0YWxFcnJvcigpIGlzIGRlY2xhcmVkIHdpdGggX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkuCisgICAgICAgR0NDIGVtaXRzIGEgd2FybmluZyB3aXRob3V0ICJyZXR1cm4gMDsiIChjb21waWxlciBidWchKSwgYnV0IENsYW5nIGlzCisgICAgICAgc21hcnRlciBhbmQgZW1pdHMgYSB3YXJuaW5nIG9uIHRoZSByZXR1cm4uLi4gKi8KKyNpZm5kZWYgX19jbGFuZ19fCiAgICAgcmV0dXJuIDA7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCisjZW5kaWYKIH0KIAogLyogRm9yd2FyZCAqLwpkaWZmIC0tZ2l0IGEvUGFyc2VyL215cmVhZGxpbmUuYyBiL1BhcnNlci9teXJlYWRsaW5lLmMKaW5kZXggMjhjN2I2ZC4uYzhiOTJkYSAxMDA2NDQKLS0tIGEvUGFyc2VyL215cmVhZGxpbmUuYworKysgYi9QYXJzZXIvbXlyZWFkbGluZS5jCkBAIC00MSwxMCArNDEsNyBAQAogICAgICAgICAgICAgKHZvaWQpKFB5T1NfSW5wdXRIb29rKSgpOwogICAgICAgICBlcnJubyA9IDA7CiAgICAgICAgIGNsZWFyZXJyKGZwKTsKLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmaWxlbm8oZnApKSkKLSAgICAgICAgICAgIHAgPSBmZ2V0cyhidWYsIGxlbiwgZnApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwID0gTlVMTDsKKyAgICAgICAgcCA9IGZnZXRzKGJ1ZiwgbGVuLCBmcCk7CiAgICAgICAgIGlmIChwICE9IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gMDsgLyogTm8gZXJyb3IgKi8KICAgICAgICAgZXJyID0gZXJybm87CkBAIC0xMDEsNiArOTgsMTAwIEBACiAgICAgLyogTk9UUkVBQ0hFRCAqLwogfQogCisjaWZkZWYgTVNfV0lORE9XUworLyogUmVhZGxpbmUgaW1wbGVtZW50YXRpb24gdXNpbmcgUmVhZENvbnNvbGVXICovCisKK2V4dGVybiBjaGFyIF9nZXRfY29uc29sZV90eXBlKEhBTkRMRSBoYW5kbGUpOworCitjaGFyICoKK19QeU9TX1dpbmRvd3NDb25zb2xlUmVhZGxpbmUoSEFORExFIGhTdGRJbikKK3sKKyAgICBzdGF0aWMgd2NoYXJfdCB3YnVmX2xvY2FsWzEwMjQgKiAxNl07CisgICAgY29uc3QgRFdPUkQgY2h1bmtfc2l6ZSA9IDEwMjQ7CisKKyAgICBEV09SRCBuX3JlYWQsIHRvdGFsX3JlYWQsIHdidWZsZW4sIHU4bGVuOworICAgIHdjaGFyX3QgKndidWY7CisgICAgY2hhciAqYnVmID0gTlVMTDsKKyAgICBpbnQgZXJyID0gMDsKKworICAgIG5fcmVhZCA9IDA7CisgICAgdG90YWxfcmVhZCA9IDA7CisgICAgd2J1ZiA9IHdidWZfbG9jYWw7CisgICAgd2J1ZmxlbiA9IHNpemVvZih3YnVmX2xvY2FsKSAvIHNpemVvZih3YnVmX2xvY2FsWzBdKSAtIDE7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKCFSZWFkQ29uc29sZVcoaFN0ZEluLCAmd2J1Zlt0b3RhbF9yZWFkXSwgd2J1ZmxlbiAtIHRvdGFsX3JlYWQsICZuX3JlYWQsIE5VTEwpKSB7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBpZiAobl9yZWFkID09IDApIHsKKyAgICAgICAgICAgIGludCBzOworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyICE9IEVSUk9SX09QRVJBVElPTl9BQk9SVEVEKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGVyciA9IDA7CisgICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCAxMDAsIEZBTFNFKQorICAgICAgICAgICAgICAgICAgICA9PSBXQUlUX09CSkVDVF8wKSB7CisgICAgICAgICAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgICAgICAgICAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQoX1B5T1NfUmVhZGxpbmVUU3RhdGUpOworI2VuZGlmCisgICAgICAgICAgICAgICAgcyA9IFB5RXJyX0NoZWNrU2lnbmFscygpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgICAgICAgICAgUHlFdmFsX1NhdmVUaHJlYWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGlmIChzIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0b3RhbF9yZWFkICs9IG5fcmVhZDsKKyAgICAgICAgaWYgKHRvdGFsX3JlYWQgPT0gMCB8fCB3YnVmW3RvdGFsX3JlYWQgLSAxXSA9PSBMJ1xuJykgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgd2J1ZmxlbiArPSBjaHVua19zaXplOworICAgICAgICBpZiAod2J1ZiA9PSB3YnVmX2xvY2FsKSB7CisgICAgICAgICAgICB3YnVmW3RvdGFsX3JlYWRdID0gJ1wwJzsKKyAgICAgICAgICAgIHdidWYgPSAod2NoYXJfdCopUHlNZW1fUmF3TWFsbG9jKHdidWZsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgaWYgKHdidWYpCisgICAgICAgICAgICAgICAgd2NzY3B5X3Mod2J1Ziwgd2J1Zmxlbiwgd2J1Zl9sb2NhbCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdSZWFsbG9jKHdidWYsIHdidWZsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgIH0KKworICAgIGlmICh3YnVmWzBdID09ICdceDFhJykgeworICAgICAgICBidWYgPSBQeU1lbV9SYXdNYWxsb2MoMSk7CisgICAgICAgIGlmIChidWYpCisgICAgICAgICAgICBidWZbMF0gPSAnXDAnOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgdThsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIHRvdGFsX3JlYWQsIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgIGJ1ZiA9IFB5TWVtX1Jhd01hbGxvYyh1OGxlbiArIDEpOworICAgIHU4bGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCB0b3RhbF9yZWFkLCBidWYsIHU4bGVuLCBOVUxMLCBOVUxMKTsKKyAgICBidWZbdThsZW5dID0gJ1wwJzsKKyAgICAKK2V4aXQ6CisgICAgaWYgKHdidWYgIT0gd2J1Zl9sb2NhbCkKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3YnVmKTsKKworICAgIGlmIChlcnIpIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBQeUV2YWxfUmVzdG9yZVRocmVhZChfUHlPU19SZWFkbGluZVRTdGF0ZSk7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBQeUV2YWxfU2F2ZVRocmVhZCgpOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIGJ1ZjsKK30KKworI2VuZGlmCisKIAogLyogUmVhZGxpbmUgaW1wbGVtZW50YXRpb24gdXNpbmcgZmdldHMoKSAqLwogCkBAIC0xMTAsNiArMjAxLDI1IEBACiAgICAgc2l6ZV90IG47CiAgICAgY2hhciAqcCwgKnByOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICghUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyAmJiBzeXNfc3RkaW4gPT0gc3RkaW4pIHsKKyAgICAgICAgSEFORExFIGhTdGRJbjsKKyAgICAgICAgCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaFN0ZEluID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8oc3lzX3N0ZGluKSk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIAorICAgICAgICBpZiAoX2dldF9jb25zb2xlX3R5cGUoaFN0ZEluKSA9PSAncicpIHsKKyAgICAgICAgICAgIGZmbHVzaChzeXNfc3Rkb3V0KTsKKyAgICAgICAgICAgIGlmIChwcm9tcHQpCisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIHByb21wdCk7CisgICAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICAgIGNsZWFyZXJyKHN5c19zdGRpbik7CisgICAgICAgICAgICByZXR1cm4gX1B5T1NfV2luZG93c0NvbnNvbGVSZWFkbGluZShoU3RkSW4pOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICBuID0gMTAwOwogICAgIHAgPSAoY2hhciAqKVB5TWVtX1Jhd01hbGxvYyhuKTsKICAgICBpZiAocCA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL25vZGUuYyBiL1BhcnNlci9ub2RlLmMKaW5kZXggMDAxMDMyNC4uMjQwZDI5MCAxMDA2NDQKLS0tIGEvUGFyc2VyL25vZGUuYworKysgYi9QYXJzZXIvbm9kZS5jCkBAIC05MSw3ICs5MSw3IEBACiAgICAgaWYgKGN1cnJlbnRfY2FwYWNpdHkgPCAwIHx8IHJlcXVpcmVkX2NhcGFjaXR5IDwgMCkKICAgICAgICAgcmV0dXJuIEVfT1ZFUkZMT1c7CiAgICAgaWYgKGN1cnJlbnRfY2FwYWNpdHkgPCByZXF1aXJlZF9jYXBhY2l0eSkgewotICAgICAgICBpZiAoKHNpemVfdClyZXF1aXJlZF9jYXBhY2l0eSA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKG5vZGUpKSB7CisgICAgICAgIGlmICgoc2l6ZV90KXJlcXVpcmVkX2NhcGFjaXR5ID4gU0laRV9NQVggLyBzaXplb2Yobm9kZSkpIHsKICAgICAgICAgICAgIHJldHVybiBFX05PTUVNOwogICAgICAgICB9CiAgICAgICAgIG4gPSBuMS0+bl9jaGlsZDsKZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXIuYyBiL1BhcnNlci9wYXJzZXIuYwppbmRleCA1NmVjNTE0Li40MTA3MmM0IDEwMDY0NAotLS0gYS9QYXJzZXIvcGFyc2VyLmMKKysrIGIvUGFyc2VyL3BhcnNlci5jCkBAIC0xNDAsMjEgKzE0MCwyMCBAQAogICAgIGludCBuID0gZy0+Z19sbC5sbF9ubGFiZWxzOwogCiAgICAgaWYgKHR5cGUgPT0gTkFNRSkgewotICAgICAgICBjb25zdCBjaGFyICpzID0gc3RyOwogICAgICAgICBsYWJlbCAqbCA9IGctPmdfbGwubGxfbGFiZWw7CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IgKGkgPSBuOyBpID4gMDsgaS0tLCBsKyspIHsKICAgICAgICAgICAgIGlmIChsLT5sYl90eXBlICE9IE5BTUUgfHwgbC0+bGJfc3RyID09IE5VTEwgfHwKLSAgICAgICAgICAgICAgICBsLT5sYl9zdHJbMF0gIT0gc1swXSB8fAotICAgICAgICAgICAgICAgIHN0cmNtcChsLT5sYl9zdHIsIHMpICE9IDApCisgICAgICAgICAgICAgICAgbC0+bGJfc3RyWzBdICE9IHN0clswXSB8fAorICAgICAgICAgICAgICAgIHN0cmNtcChsLT5sYl9zdHIsIHN0cikgIT0gMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICNpZmRlZiBQWV9QQVJTRVJfUkVRVUlSRVNfRlVUVVJFX0tFWVdPUkQKICNpZiAwCiAgICAgICAgICAgICAvKiBMZWF2aW5nIHRoaXMgaW4gYXMgYW4gZXhhbXBsZSAqLwogICAgICAgICAgICAgaWYgKCEocHMtPnBfZmxhZ3MgJiBDT19GVVRVUkVfV0lUSF9TVEFURU1FTlQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNbMF0gPT0gJ3cnICYmIHN0cmNtcChzLCAid2l0aCIpID09IDApCisgICAgICAgICAgICAgICAgaWYgKHN0clswXSA9PSAndycgJiYgc3RyY21wKHN0ciwgIndpdGgiKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsgLyogbm90IGEga2V5d29yZCB5ZXQgKi8KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzBdID09ICdhJyAmJiBzdHJjbXAocywgImFzIikgPT0gMCkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdHJbMF0gPT0gJ2EnICYmIHN0cmNtcChzdHIsICJhcyIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBub3QgYSBrZXl3b3JkIHlldCAqLwogICAgICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9QYXJzZXIvcGFyc2V0b2suYyBiL1BhcnNlci9wYXJzZXRvay5jCmluZGV4IDYyOWRlZTUuLjFmNDY3ZDYgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wYXJzZXRvay5jCisrKyBiL1BhcnNlci9wYXJzZXRvay5jCkBAIC0xNjEsMTAgKzE2MSwxMCBAQAogCiAjaWZkZWYgUFlfUEFSU0VSX1JFUVVJUkVTX0ZVVFVSRV9LRVlXT1JECiAjaWYgMAotc3RhdGljIGNoYXIgd2l0aF9tc2dbXSA9CitzdGF0aWMgY29uc3QgY2hhciB3aXRoX21zZ1tdID0KICIlczolZDogV2FybmluZzogJ3dpdGgnIHdpbGwgYmVjb21lIGEgcmVzZXJ2ZWQga2V5d29yZCBpbiBQeXRob24gMi42XG4iOwogCi1zdGF0aWMgY2hhciBhc19tc2dbXSA9CitzdGF0aWMgY29uc3QgY2hhciBhc19tc2dbXSA9CiAiJXM6JWQ6IFdhcm5pbmc6ICdhcycgd2lsbCBiZWNvbWUgYSByZXNlcnZlZCBrZXl3b3JkIGluIFB5dGhvbiAyLjZcbiI7CiAKIHN0YXRpYyB2b2lkCkBAIC0yNTUsNyArMjU1LDcgQEAKICNlbmRpZgogICAgICAgICBpZiAoYSA+PSB0b2stPmxpbmVfc3RhcnQpCiAgICAgICAgICAgICBjb2xfb2Zmc2V0ID0gUHlfU0FGRV9ET1dOQ0FTVChhIC0gdG9rLT5saW5lX3N0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaW50cHRyX3QsIGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRwdHJfdCwgaW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29sX29mZnNldCA9IC0xOwogCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbi5jIGIvUGFyc2VyL3BnZW4uYwppbmRleCBmMzAzMWFlLi5iZTM1ZTAyIDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbi5jCisrKyBiL1BhcnNlci9wZ2VuLmMKQEAgLTEzNCw3ICsxMzQsNyBAQAogCiAjaWZkZWYgUHlfREVCVUcKIAotc3RhdGljIGNoYXIgUkVRTkZNVFtdID0gIm1ldGFjb21waWxlOiBsZXNzIHRoYW4gJWQgY2hpbGRyZW5cbiI7CitzdGF0aWMgY29uc3QgY2hhciBSRVFORk1UW10gPSAibWV0YWNvbXBpbGU6IGxlc3MgdGhhbiAlZCBjaGlsZHJlblxuIjsKIAogI2RlZmluZSBSRVFOKGksIGNvdW50KSBkbyB7IFwKICAgICBpZiAoaSA8IGNvdW50KSB7IFwKQEAgLTM3OSw3ICszNzksNyBAQAogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgdm9pZCBwcmludHNzZGZhKGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUsIGludCBuYml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY2hhciAqbXNnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY29uc3QgY2hhciAqbXNnKTsKIHN0YXRpYyB2b2lkIHNpbXBsaWZ5KGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUpOwogc3RhdGljIHZvaWQgY29udmVydChkZmEgKmQsIGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUpOwogCkBAIC00OTQsNyArNDk0LDcgQEAKIAogc3RhdGljIHZvaWQKIHByaW50c3NkZmEoaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSwgaW50IG5iaXRzLAotICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjaGFyICptc2cpCisgICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNvbnN0IGNoYXIgKm1zZykKIHsKICAgICBpbnQgaSwgaWJpdCwgaWFyYzsKICAgICBzc19zdGF0ZSAqeXk7CmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbm1haW4uYyBiL1BhcnNlci9wZ2VubWFpbi5jCmluZGV4IDBmMDU1ZDYuLmU5ZDMwODIgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VubWFpbi5jCisrKyBiL1BhcnNlci9wZ2VubWFpbi5jCkBAIC0yNyw3ICsyNyw3IEBACiBpbnQgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnOwogCiAvKiBGb3J3YXJkICovCi1ncmFtbWFyICpnZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKTsKK2dyYW1tYXIgKmdldGdyYW1tYXIoY29uc3QgY2hhciAqZmlsZW5hbWUpOwogCiB2b2lkIFB5X0V4aXQoaW50KSBfUHlfTk9fUkVUVVJOOwogCkBAIC0zNyw2ICszNywxNSBAQAogICAgIGV4aXQoc3RzKTsKIH0KIAorI2lmZGVmIFdJVEhfVEhSRUFECisvKiBOZWVkZWQgYnkgb2JtYWxsb2MuYyAqLworaW50IFB5R0lMU3RhdGVfQ2hlY2sodm9pZCkKK3sgcmV0dXJuIDE7IH0KKyNlbmRpZgorCit2b2lkIF9QeU1lbV9EdW1wVHJhY2ViYWNrKGludCBmZCwgY29uc3Qgdm9pZCAqcHRyKQore30KKwogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKQEAgLTc2LDcgKzg1LDcgQEAKIH0KIAogZ3JhbW1hciAqCi1nZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKQorZ2V0Z3JhbW1hcihjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBGSUxFICpmcDsKICAgICBub2RlICpuOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5jIGIvUGFyc2VyL3Rva2VuaXplci5jCmluZGV4IGVkYTE1NDIuLjg5NjE4ODQgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuYworKysgYi9QYXJzZXIvdG9rZW5pemVyLmMKQEAgLTIwMiw4ICsyMDIsOCBAQAogfQogCiAKLXN0YXRpYyBjaGFyICoKLWdldF9ub3JtYWxfbmFtZShjaGFyICpzKSAgICAgICAgLyogZm9yIHV0Zi04IGFuZCBsYXRpbi0xICovCitzdGF0aWMgY29uc3QgY2hhciAqCitnZXRfbm9ybWFsX25hbWUoY29uc3QgY2hhciAqcykgIC8qIGZvciB1dGYtOCBhbmQgbGF0aW4tMSAqLwogewogICAgIGNoYXIgYnVmWzEzXTsKICAgICBpbnQgaTsKQEAgLTI2NCw3ICsyNjQsNyBAQAogCiAgICAgICAgICAgICBpZiAoYmVnaW4gPCB0KSB7CiAgICAgICAgICAgICAgICAgY2hhciogciA9IG5ld19zdHJpbmcoYmVnaW4sIHQgLSBiZWdpbiwgdG9rKTsKLSAgICAgICAgICAgICAgICBjaGFyKiBxOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHE7CiAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICBxID0gZ2V0X25vcm1hbF9uYW1lKHIpOwpAQCAtMTMzNSw2ICsxMzM1LDI4IEBACiB9CiAjZW5kaWYKIAorc3RhdGljIGludAordG9rX2RlY2ltYWxfdGFpbChzdHJ1Y3QgdG9rX3N0YXRlICp0b2spCit7CisgICAgaW50IGM7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICBpZiAoYyAhPSAnXycpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGM7Cit9CisKIC8qIEdldCBuZXh0IHRva2VuLCBhZnRlciBzcGFjZSBzdHJpcHBpbmcgZXRjLiAqLwogCiBzdGF0aWMgaW50CkBAIC0xMzU1LDE3ICsxMzc3LDIwIEBACiAgICAgICAgIHRvay0+YXRib2wgPSAwOwogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnICcpCisgICAgICAgICAgICBpZiAoYyA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBjb2wrKywgYWx0Y29sKys7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpIHsKICAgICAgICAgICAgICAgICBjb2wgPSAoY29sL3Rvay0+dGFic2l6ZSArIDEpICogdG9rLT50YWJzaXplOwogICAgICAgICAgICAgICAgIGFsdGNvbCA9IChhbHRjb2wvdG9rLT5hbHR0YWJzaXplICsgMSkKICAgICAgICAgICAgICAgICAgICAgKiB0b2stPmFsdHRhYnNpemU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcMDE0JykgLyogQ29udHJvbC1MIChmb3JtZmVlZCkgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wwMTQnKSAgey8qIENvbnRyb2wtTCAoZm9ybWZlZWQpICovCiAgICAgICAgICAgICAgICAgY29sID0gYWx0Y29sID0gMDsgLyogRm9yIEVtYWNzIHVzZXJzICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgIGlmIChjID09ICcjJyB8fCBjID09ICdcbicpIHsKQEAgLTEzNzQsMTAgKzEzOTksMTIgQEAKICAgICAgICAgICAgICAgIG5vdCBwYXNzZWQgdG8gdGhlIHBhcnNlciBhcyBORVdMSU5FIHRva2VucywKICAgICAgICAgICAgICAgIGV4Y2VwdCAqdG90YWxseSogZW1wdHkgbGluZXMgaW4gaW50ZXJhY3RpdmUKICAgICAgICAgICAgICAgIG1vZGUsIHdoaWNoIHNpZ25hbCB0aGUgZW5kIG9mIGEgY29tbWFuZCBncm91cC4gKi8KLSAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGJsYW5rbGluZSA9IDA7IC8qIExldCBpdCB0aHJvdWdoICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBibGFua2xpbmUgPSAxOyAvKiBJZ25vcmUgY29tcGxldGVseSAqLworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogV2UgY2FuJ3QganVtcCBiYWNrIHJpZ2h0IGhlcmUgc2luY2Ugd2Ugc3RpbGwKICAgICAgICAgICAgICAgIG1heSBuZWVkIHRvIHNraXAgdG8gdGhlIGVuZCBvZiBhIGNvbW1lbnQgKi8KICAgICAgICAgfQpAQCAtMTM4NSw4ICsxNDEyLDkgQEAKICAgICAgICAgICAgIGlmIChjb2wgPT0gdG9rLT5pbmRzdGFja1t0b2stPmluZGVudF0pIHsKICAgICAgICAgICAgICAgICAvKiBObyBjaGFuZ2UgKi8KICAgICAgICAgICAgICAgICBpZiAoYWx0Y29sICE9IHRvay0+YWx0aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjb2wgPiB0b2stPmluZHN0YWNrW3Rvay0+aW5kZW50XSkgewpAQCAtMTM5Nyw4ICsxNDI1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhbHRjb2wgPD0gdG9rLT5hbHRpbmRzdGFja1t0b2stPmluZGVudF0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0b2stPnBlbmRpbisrOwogICAgICAgICAgICAgICAgIHRvay0+aW5kc3RhY2tbKyt0b2stPmluZGVudF0gPSBjb2w7CkBAIC0xNDE3LDggKzE0NDYsOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGFsdGNvbCAhPSB0b2stPmFsdGluZHN0YWNrW3Rvay0+aW5kZW50XSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDY0LDkgKzE0OTQsMTEgQEAKICAgICB0b2stPnN0YXJ0ID0gdG9rLT5jdXIgLSAxOwogCiAgICAgLyogU2tpcCBjb21tZW50ICovCi0gICAgaWYgKGMgPT0gJyMnKQotICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKQorICAgIGlmIChjID09ICcjJykgeworICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICAvKiBDaGVjayBmb3IgRU9GIGFuZCBlcnJvcnMgbm93ICovCiAgICAgaWYgKGMgPT0gRU9GKSB7CkBAIC0xNDc3LDMxICsxNTA5LDQxIEBACiAgICAgbm9uYXNjaWkgPSAwOwogICAgIGlmIChpc19wb3RlbnRpYWxfaWRlbnRpZmllcl9zdGFydChjKSkgewogICAgICAgICAvKiBQcm9jZXNzIGIiIiwgciIiLCB1IiIsIGJyIiIgYW5kIHJiIiIgKi8KLSAgICAgICAgaW50IHNhd19iID0gMCwgc2F3X3IgPSAwLCBzYXdfdSA9IDA7CisgICAgICAgIGludCBzYXdfYiA9IDAsIHNhd19yID0gMCwgc2F3X3UgPSAwLCBzYXdfZiA9IDA7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBpZiAoIShzYXdfYiB8fCBzYXdfdSkgJiYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSkKKyAgICAgICAgICAgIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19mKSAmJiAoYyA9PSAnYicgfHwgYyA9PSAnQicpKQogICAgICAgICAgICAgICAgIHNhd19iID0gMTsKICAgICAgICAgICAgIC8qIFNpbmNlIHRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGxpdGVyYWwgd2UgZG9uJ3QKICAgICAgICAgICAgICAgIHdhbnQgdG8gc3VwcG9ydCBpdCBpbiBhcmJpdHJhcnkgb3JkZXIgbGlrZSBieXRlIGxpdGVyYWxzLiAqLwotICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfYiB8fCBzYXdfdSB8fCBzYXdfcikgJiYgKGMgPT0gJ3UnIHx8IGMgPT0gJ1UnKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X3IgfHwgc2F3X2YpCisgICAgICAgICAgICAgICAgICAgICAmJiAoYyA9PSAndSd8fCBjID09ICdVJykpIHsKICAgICAgICAgICAgICAgICBzYXdfdSA9IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiB1ciIiIGFuZCBydSIiIGFyZSBub3Qgc3VwcG9ydGVkICovCi0gICAgICAgICAgICBlbHNlIGlmICghKHNhd19yIHx8IHNhd191KSAmJiAoYyA9PSAncicgfHwgYyA9PSAnUicpKQorICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfciB8fCBzYXdfdSkgJiYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSkgewogICAgICAgICAgICAgICAgIHNhd19yID0gMTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2YgfHwgc2F3X2IgfHwgc2F3X3UpICYmIChjID09ICdmJyB8fCBjID09ICdGJykpIHsKKyAgICAgICAgICAgICAgICBzYXdfZiA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcJycpCisgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICAgICAgZ290byBsZXR0ZXJfcXVvdGU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGlzX3BvdGVudGlhbF9pZGVudGlmaWVyX2NoYXIoYykpIHsKLSAgICAgICAgICAgIGlmIChjID49IDEyOCkKKyAgICAgICAgICAgIGlmIChjID49IDEyOCkgewogICAgICAgICAgICAgICAgIG5vbmFzY2lpID0gMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgIGlmIChub25hc2NpaSAmJiAhdmVyaWZ5X2lkZW50aWZpZXIodG9rKSkKKyAgICAgICAgaWYgKG5vbmFzY2lpICYmICF2ZXJpZnlfaWRlbnRpZmllcih0b2spKSB7CiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgfQogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyOwogCkBAIC0xNTEwLDEwICsxNTUyLDEyIEBACiAgICAgICAgICAgICAvKiBDdXJyZW50IHRva2VuIGxlbmd0aCBpcyA1LiAqLwogICAgICAgICAgICAgaWYgKHRvay0+YXN5bmNfZGVmKSB7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgaW5zaWRlIGFuICdhc3luYyBkZWYnIGZ1bmN0aW9uLiAqLwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFTWU5DOwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImF3YWl0IiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXdhaXQiLCA1KSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBV0FJVDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkgewogICAgICAgICAgICAgICAgIC8qIFRoZSBjdXJyZW50IHRva2VuIGlzICdhc3luYycuCkBAIC0xNTQ2LDggKzE1OTAsOSBAQAogICAgIC8qIE5ld2xpbmUgKi8KICAgICBpZiAoYyA9PSAnXG4nKSB7CiAgICAgICAgIHRvay0+YXRib2wgPSAxOwotICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKQorICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKSB7CiAgICAgICAgICAgICBnb3RvIG5leHRsaW5lOworICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXIgLSAxOyAvKiBMZWF2ZSAnXG4nIG91dCBvZiB0aGUgc3RyaW5nICovCiAgICAgICAgIHRvay0+Y29udF9saW5lID0gMDsKQEAgLTE1NzAsMTEgKzE2MTUsMTMgQEAKICAgICAgICAgICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVMTElQU0lTOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCAnLicpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwogICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKQEAgLTE1ODcsNjQgKzE2MzQsOTQgQEAKICAgICAgICAgaWYgKGMgPT0gJzAnKSB7CiAgICAgICAgICAgICAvKiBIZXgsIG9jdGFsIG9yIGJpbmFyeSAtLSBtYXliZS4gKi8KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICcuJykKLSAgICAgICAgICAgICAgICBnb3RvIGZyYWN0aW9uOwotICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQotICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OwogICAgICAgICAgICAgaWYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSB7Ci0KICAgICAgICAgICAgICAgICAvKiBIZXggKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwotICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlIChpc3hkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzeGRpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICdfJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdvJyB8fCBjID09ICdPJykgewogICAgICAgICAgICAgICAgIC8qIE9jdGFsICovCiAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPj0gJzgnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKCcwJyA8PSBjICYmIGMgPCAnOCcpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID49ICc4JykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoJzAnIDw9IGMgJiYgYyA8ICc4Jyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnYicgfHwgYyA9PSAnQicpIHsKICAgICAgICAgICAgICAgICAvKiBCaW5hcnkgKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJzAnIHx8IGMgPT0gJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICcwJyB8fCBjID09ICcxJyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IG5vbnplcm8gPSAwOwogICAgICAgICAgICAgICAgIC8qIG1heWJlIG9sZC1zdHlsZSBvY3RhbDsgYyBpcyBmaXJzdCBjaGFyIG9mIGl0ICovCiAgICAgICAgICAgICAgICAgLyogaW4gYW55IGNhc2UsIGFsbG93ICcwJyBhcyBhIGxpdGVyYWwgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoYyA9PSAnMCcpCi0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXNkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICBub256ZXJvID0gMTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjICE9ICcwJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLicpCisgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9uemVybyA9IDE7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZnJhY3Rpb247Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhwb25lbnQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChub256ZXJvKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE9sZC1zdHlsZSBvY3RhbDogbm93IGRpc2FsbG93ZWQuICovCiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CiAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CkBAIC0xNjUzLDE3ICsxNzMwLDIyIEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBEZWNpbWFsICovCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgfSB3aGlsZSAoaXNkaWdpdChjKSk7CisgICAgICAgICAgICBjID0gdG9rX2RlY2ltYWxfdGFpbCh0b2spOworICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgfQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIEFjY2VwdCBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqLwogICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGZyYWN0aW9uOgogICAgICAgICAgICAgICAgICAgICAvKiBGcmFjdGlvbiAqLwotICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGU7CkBAIC0xNjg1LDE0ICsxNzY3LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVU1CRVI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQorICAgICAgICAgICAgICAgIGlmIChjID09ICdqJyB8fCBjID09ICdKJykgewogICAgICAgICAgICAgICAgICAgICAvKiBJbWFnaW5hcnkgcGFydCAqLwogICAgICAgICBpbWFnaW5hcnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwpAQCAtMTcxMiwyMiArMTc5NiwyNyBAQAogICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkKKyAgICAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICAgICAgcXVvdGVfc2l6ZSA9IDM7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSA9IDE7ICAgICAvKiBlbXB0eSBzdHJpbmcgZm91bmQgKi8KKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoYyAhPSBxdW90ZSkKKyAgICAgICAgaWYgKGMgIT0gcXVvdGUpIHsKICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIEdldCByZXN0IG9mIHN0cmluZyAqLwogICAgICAgICB3aGlsZSAoZW5kX3F1b3RlX3NpemUgIT0gcXVvdGVfc2l6ZSkgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgaWYgKGMgPT0gRU9GKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHF1b3RlX3NpemUgPT0gMykKKyAgICAgICAgICAgICAgICBpZiAocXVvdGVfc2l6ZSA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfRU9GUzsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX0VPTFM7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRvay0+Y3VyID0gdG9rLT5pbnA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICB9CkBAIC0xNzM2LDEyICsxODI1LDE0IEBACiAgICAgICAgICAgICAgICAgdG9rLT5jdXIgPSB0b2stPmlucDsKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjID09IHF1b3RlKQorICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUpIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSArPSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZW5kX3F1b3RlX3NpemUgPSAwOwotICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTc3MSw3ICsxODYyLDggQEAKICAgICAgICAgICAgIGludCB0b2tlbjMgPSBQeVRva2VuX1RocmVlQ2hhcnMoYywgYzIsIGMzKTsKICAgICAgICAgICAgIGlmICh0b2tlbjMgIT0gT1ApIHsKICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuMzsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYzMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwpkaWZmIC0tZ2l0IGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKaW5kZXggMDc5Mzk4NC4uMTA2OTk2NiAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworKysgYi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCkBAIC01OCw3ICs1OCw3IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGZzdGF0ICclcydcbiIsIGlucGF0aCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIHRleHRfc2l6ZSA9IHN0YXR1cy5zdF9zaXplOworICAgIHRleHRfc2l6ZSA9IChzaXplX3Qpc3RhdHVzLnN0X3NpemU7CiAgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKICAgICBpZiAodGV4dCA9PSBOVUxMKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IGFsbG9jYXRlICVsZCBieXRlc1xuIiwgKGxvbmcpIHRleHRfc2l6ZSk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMgYi9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKaW5kZXggYWI2YThjNy4uMzk2ODM5OSAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCisrKyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwpAQCAtNDEsNyArNDEsNyBAQAogI2VuZGlmCiAgICAgaW50IGksIGo7CiAKLSAgICBmb3IgKGk9MDsgaTwzOyBpKyspIHsKKyAgICBmb3IgKGk9MDsgaTwxNTsgaSsrKSB7CiAgICAgICAgIHByaW50ZigiLS0tIFBhc3MgJWQgLS0tXG4iLCBpKTsKICAgICAgICAgX3Rlc3RlbWJlZF9QeV9Jbml0aWFsaXplKCk7CiAgICAgICAgIG1haW5zdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9weXRob24uYyBiL1Byb2dyYW1zL3B5dGhvbi5jCmluZGV4IDM3YjEwYjguLmE3YWZiYzcgMTAwNjQ0Ci0tLSBhL1Byb2dyYW1zL3B5dGhvbi5jCisrKyBiL1Byb2dyYW1zL3B5dGhvbi5jCkBAIC0yNCw2ICsyNCw5IEBACiAgICAgaW50IGksIHJlczsKICAgICBjaGFyICpvbGRsb2M7CiAKKyAgICAvKiBGb3JjZSBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gYm9vdHN0cmFwIFB5dGhvbiAqLworICAgICh2b2lkKV9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoIm1hbGxvYyIpOworCiAgICAgYXJndl9jb3B5ID0gKHdjaGFyX3QgKiopUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KikgKiAoYXJnYysxKSk7CiAgICAgYXJndl9jb3B5MiA9ICh3Y2hhcl90ICoqKVB5TWVtX1Jhd01hbGxvYyhzaXplb2Yod2NoYXJfdCopICogKGFyZ2MrMSkpOwogICAgIGlmICghYXJndl9jb3B5IHx8ICFhcmd2X2NvcHkyKSB7CkBAIC02Miw3ICs2NSwxMyBAQAogCiAgICAgc2V0bG9jYWxlKExDX0FMTCwgb2xkbG9jKTsKICAgICBQeU1lbV9SYXdGcmVlKG9sZGxvYyk7CisKICAgICByZXMgPSBQeV9NYWluKGFyZ2MsIGFyZ3ZfY29weSk7CisKKyAgICAvKiBGb3JjZSBhZ2FpbiBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gcmVsZWFzZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgIGJlZm9yZSBQeV9NYWluKCkgKi8KKyAgICAodm9pZClfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKCJtYWxsb2MiKTsKKwogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgUHlNZW1fUmF3RnJlZShhcmd2X2NvcHkyW2ldKTsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCBlZGZjYmFkLi5mMTBlMzE1IDEwMDY0NAotLS0gYS9QeXRob24vUHl0aG9uLWFzdC5jCisrKyBiL1B5dGhvbi9QeXRob24tYXN0LmMKQEAgLTg2LDYgKzg2LDE1IEBACiAgICAgIm9wIiwKICAgICAidmFsdWUiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkFubkFzc2lnbl90eXBlOworX1B5X0lERU5USUZJRVIoYW5ub3RhdGlvbik7CitfUHlfSURFTlRJRklFUihzaW1wbGUpOworc3RhdGljIGNoYXIgKkFubkFzc2lnbl9maWVsZHNbXT17CisgICAgInRhcmdldCIsCisgICAgImFubm90YXRpb24iLAorICAgICJ2YWx1ZSIsCisgICAgInNpbXBsZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRm9yX3R5cGU7CiBfUHlfSURFTlRJRklFUihpdGVyKTsKIF9QeV9JREVOVElGSUVSKG9yZWxzZSk7CkBAIC0yODUsNiArMjk0LDE4IEBACiBzdGF0aWMgY2hhciAqU3RyX2ZpZWxkc1tdPXsKICAgICAicyIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqRm9ybWF0dGVkVmFsdWVfdHlwZTsKK19QeV9JREVOVElGSUVSKGNvbnZlcnNpb24pOworX1B5X0lERU5USUZJRVIoZm9ybWF0X3NwZWMpOworc3RhdGljIGNoYXIgKkZvcm1hdHRlZFZhbHVlX2ZpZWxkc1tdPXsKKyAgICAidmFsdWUiLAorICAgICJjb252ZXJzaW9uIiwKKyAgICAiZm9ybWF0X3NwZWMiLAorfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkpvaW5lZFN0cl90eXBlOworc3RhdGljIGNoYXIgKkpvaW5lZFN0cl9maWVsZHNbXT17CisgICAgInZhbHVlcyIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQnl0ZXNfdHlwZTsKIHN0YXRpYyBjaGFyICpCeXRlc19maWVsZHNbXT17CiAgICAgInMiLApAQCAtMjk0LDYgKzMxNSwxMCBAQAogICAgICJ2YWx1ZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRWxsaXBzaXNfdHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkNvbnN0YW50X3R5cGU7CitzdGF0aWMgY2hhciAqQ29uc3RhbnRfZmllbGRzW109eworICAgICJ2YWx1ZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQXR0cmlidXRlX3R5cGU7CiBfUHlfSURFTlRJRklFUihhdHRyKTsKIF9QeV9JREVOVElGSUVSKGN0eCk7CkBAIC00MTAsMTAgKzQzNSwxMiBAQAogc3RhdGljIFB5VHlwZU9iamVjdCAqY29tcHJlaGVuc2lvbl90eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2NvbXByZWhlbnNpb24odm9pZCopOwogX1B5X0lERU5USUZJRVIoaWZzKTsKK19QeV9JREVOVElGSUVSKGlzX2FzeW5jKTsKIHN0YXRpYyBjaGFyICpjb21wcmVoZW5zaW9uX2ZpZWxkc1tdPXsKICAgICAidGFyZ2V0IiwKICAgICAiaXRlciIsCiAgICAgImlmcyIsCisgICAgImlzX2FzeW5jIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpleGNlcHRoYW5kbGVyX3R5cGU7CiBzdGF0aWMgY2hhciAqZXhjZXB0aGFuZGxlcl9hdHRyaWJ1dGVzW10gPSB7CkBAIC00NTAsNyArNDc3LDYgQEAKICAgICAiY29sX29mZnNldCIsCiB9OwogX1B5X0lERU5USUZJRVIoYXJnKTsKLV9QeV9JREVOVElGSUVSKGFubm90YXRpb24pOwogc3RhdGljIGNoYXIgKmFyZ19maWVsZHNbXT17CiAgICAgImFyZyIsCiAgICAgImFubm90YXRpb24iLApAQCAtNjk3LDYgKzcyMyw3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopbzsKIH0KICNkZWZpbmUgYXN0Mm9ial9zaW5nbGV0b24gYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9jb25zdGFudCBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdApAQCAtNzM0LDYgKzc2MSwxOSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG9iajJhc3RfY29uc3RhbnQoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgIGlmIChvYmopIHsKKyAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYXJlbmEsIG9iaikgPCAwKSB7CisgICAgICAgICAgICAqb3V0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICB9CisgICAgKm91dCA9IG9iajsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2lkZW50aWZpZXIoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSAmJiBvYmogIT0gUHlfTm9uZSkgewpAQCAtNzY5LDcgKzgwOSw3IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGkgPSAoaW50KVB5TG9uZ19Bc0xvbmcob2JqKTsKKyAgICBpID0gX1B5TG9uZ19Bc0ludChvYmopOwogICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAxOwogICAgICpvdXQgPSBpOwpAQCAtODQzLDYgKzg4Myw4IEBACiAgICAgaWYgKCFBc3NpZ25fdHlwZSkgcmV0dXJuIDA7CiAgICAgQXVnQXNzaWduX3R5cGUgPSBtYWtlX3R5cGUoIkF1Z0Fzc2lnbiIsIHN0bXRfdHlwZSwgQXVnQXNzaWduX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFBdWdBc3NpZ25fdHlwZSkgcmV0dXJuIDA7CisgICAgQW5uQXNzaWduX3R5cGUgPSBtYWtlX3R5cGUoIkFubkFzc2lnbiIsIHN0bXRfdHlwZSwgQW5uQXNzaWduX2ZpZWxkcywgNCk7CisgICAgaWYgKCFBbm5Bc3NpZ25fdHlwZSkgcmV0dXJuIDA7CiAgICAgRm9yX3R5cGUgPSBtYWtlX3R5cGUoIkZvciIsIHN0bXRfdHlwZSwgRm9yX2ZpZWxkcywgNCk7CiAgICAgaWYgKCFGb3JfdHlwZSkgcmV0dXJuIDA7CiAgICAgQXN5bmNGb3JfdHlwZSA9IG1ha2VfdHlwZSgiQXN5bmNGb3IiLCBzdG10X3R5cGUsIEFzeW5jRm9yX2ZpZWxkcywgNCk7CkBAIC05MTcsNiArOTU5LDExIEBACiAgICAgaWYgKCFOdW1fdHlwZSkgcmV0dXJuIDA7CiAgICAgU3RyX3R5cGUgPSBtYWtlX3R5cGUoIlN0ciIsIGV4cHJfdHlwZSwgU3RyX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFTdHJfdHlwZSkgcmV0dXJuIDA7CisgICAgRm9ybWF0dGVkVmFsdWVfdHlwZSA9IG1ha2VfdHlwZSgiRm9ybWF0dGVkVmFsdWUiLCBleHByX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZV9maWVsZHMsIDMpOworICAgIGlmICghRm9ybWF0dGVkVmFsdWVfdHlwZSkgcmV0dXJuIDA7CisgICAgSm9pbmVkU3RyX3R5cGUgPSBtYWtlX3R5cGUoIkpvaW5lZFN0ciIsIGV4cHJfdHlwZSwgSm9pbmVkU3RyX2ZpZWxkcywgMSk7CisgICAgaWYgKCFKb2luZWRTdHJfdHlwZSkgcmV0dXJuIDA7CiAgICAgQnl0ZXNfdHlwZSA9IG1ha2VfdHlwZSgiQnl0ZXMiLCBleHByX3R5cGUsIEJ5dGVzX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFCeXRlc190eXBlKSByZXR1cm4gMDsKICAgICBOYW1lQ29uc3RhbnRfdHlwZSA9IG1ha2VfdHlwZSgiTmFtZUNvbnN0YW50IiwgZXhwcl90eXBlLApAQCAtOTI0LDYgKzk3MSw4IEBACiAgICAgaWYgKCFOYW1lQ29uc3RhbnRfdHlwZSkgcmV0dXJuIDA7CiAgICAgRWxsaXBzaXNfdHlwZSA9IG1ha2VfdHlwZSgiRWxsaXBzaXMiLCBleHByX3R5cGUsIE5VTEwsIDApOwogICAgIGlmICghRWxsaXBzaXNfdHlwZSkgcmV0dXJuIDA7CisgICAgQ29uc3RhbnRfdHlwZSA9IG1ha2VfdHlwZSgiQ29uc3RhbnQiLCBleHByX3R5cGUsIENvbnN0YW50X2ZpZWxkcywgMSk7CisgICAgaWYgKCFDb25zdGFudF90eXBlKSByZXR1cm4gMDsKICAgICBBdHRyaWJ1dGVfdHlwZSA9IG1ha2VfdHlwZSgiQXR0cmlidXRlIiwgZXhwcl90eXBlLCBBdHRyaWJ1dGVfZmllbGRzLCAzKTsKICAgICBpZiAoIUF0dHJpYnV0ZV90eXBlKSByZXR1cm4gMDsKICAgICBTdWJzY3JpcHRfdHlwZSA9IG1ha2VfdHlwZSgiU3Vic2NyaXB0IiwgZXhwcl90eXBlLCBTdWJzY3JpcHRfZmllbGRzLCAzKTsKQEAgLTExMDEsNyArMTE1MCw3IEBACiAgICAgTm90SW5fc2luZ2xldG9uID0gUHlUeXBlX0dlbmVyaWNOZXcoTm90SW5fdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKCFOb3RJbl9zaW5nbGV0b24pIHJldHVybiAwOwogICAgIGNvbXByZWhlbnNpb25fdHlwZSA9IG1ha2VfdHlwZSgiY29tcHJlaGVuc2lvbiIsICZBU1RfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbl9maWVsZHMsIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX2ZpZWxkcywgNCk7CiAgICAgaWYgKCFjb21wcmVoZW5zaW9uX3R5cGUpIHJldHVybiAwOwogICAgIGlmICghYWRkX2F0dHJpYnV0ZXMoY29tcHJlaGVuc2lvbl90eXBlLCBOVUxMLCAwKSkgcmV0dXJuIDA7CiAgICAgZXhjZXB0aGFuZGxlcl90eXBlID0gbWFrZV90eXBlKCJleGNlcHRoYW5kbGVyIiwgJkFTVF90eXBlLCBOVUxMLCAwKTsKQEAgLTEzNzAsNiArMTQxOSwzNCBAQAogfQogCiBzdG10X3R5CitBbm5Bc3NpZ24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgYW5ub3RhdGlvbiwgZXhwcl90eSB2YWx1ZSwgaW50IHNpbXBsZSwgaW50CisgICAgICAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgc3RtdF90eSBwOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHRhcmdldCBpcyByZXF1aXJlZCBmb3IgQW5uQXNzaWduIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIWFubm90YXRpb24pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgYW5ub3RhdGlvbiBpcyByZXF1aXJlZCBmb3IgQW5uQXNzaWduIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEFubkFzc2lnbl9raW5kOworICAgIHAtPnYuQW5uQXNzaWduLnRhcmdldCA9IHRhcmdldDsKKyAgICBwLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uID0gYW5ub3RhdGlvbjsKKyAgICBwLT52LkFubkFzc2lnbi52YWx1ZSA9IHZhbHVlOworICAgIHAtPnYuQW5uQXNzaWduLnNpbXBsZSA9IHNpbXBsZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK3N0bXRfdHkKIEZvcihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogb3JlbHNlLCBpbnQKICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKQEAgLTIwNjMsNiArMjE0MCw0MiBAQAogfQogCiBleHByX3R5CitGb3JtYXR0ZWRWYWx1ZShleHByX3R5IHZhbHVlLCBpbnQgY29udmVyc2lvbiwgZXhwcl90eSBmb3JtYXRfc3BlYywgaW50IGxpbmVubywKKyAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgRm9ybWF0dGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gRm9ybWF0dGVkVmFsdWVfa2luZDsKKyAgICBwLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlID0gdmFsdWU7CisgICAgcC0+di5Gb3JtYXR0ZWRWYWx1ZS5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKKyAgICBwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjID0gZm9ybWF0X3NwZWM7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CitKb2luZWRTdHIoYXNkbF9zZXEgKiB2YWx1ZXMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBKb2luZWRTdHJfa2luZDsKKyAgICBwLT52LkpvaW5lZFN0ci52YWx1ZXMgPSB2YWx1ZXM7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CiBCeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgZXhwcl90eSBwOwpAQCAtMjExNCw2ICsyMjI3LDI1IEBACiB9CiAKIGV4cHJfdHkKK0NvbnN0YW50KGNvbnN0YW50IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgZXhwcl90eSBwOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdmFsdWUgaXMgcmVxdWlyZWQgZm9yIENvbnN0YW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKGV4cHJfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IENvbnN0YW50X2tpbmQ7CisgICAgcC0+di5Db25zdGFudC52YWx1ZSA9IHZhbHVlOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQogQXR0cmlidXRlKGV4cHJfdHkgdmFsdWUsIGlkZW50aWZpZXIgYXR0ciwgZXhwcl9jb250ZXh0X3R5IGN0eCwgaW50IGxpbmVubywgaW50CiAgICAgICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0yMzE1LDcgKzI0NDcsOCBAQAogfQogCiBjb21wcmVoZW5zaW9uX3R5Ci1jb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogaWZzLCBQeUFyZW5hICphcmVuYSkKK2NvbXByZWhlbnNpb24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBpZnMsIGludCBpc19hc3luYywKKyAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgY29tcHJlaGVuc2lvbl90eSBwOwogICAgIGlmICghdGFyZ2V0KSB7CkBAIC0yMzM0LDYgKzI0NjcsNyBAQAogICAgIHAtPnRhcmdldCA9IHRhcmdldDsKICAgICBwLT5pdGVyID0gaXRlcjsKICAgICBwLT5pZnMgPSBpZnM7CisgICAgcC0+aXNfYXN5bmMgPSBpc19hc3luYzsKICAgICByZXR1cm4gcDsKIH0KIApAQCAtMjY0OCw2ICsyNzgyLDMwIEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQW5uQXNzaWduX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQW5uQXNzaWduLnRhcmdldCk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldCwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQW5uQXNzaWduLmFubm90YXRpb24pOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hbm5vdGF0aW9uLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bbm5Bc3NpZ24udmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+di5Bbm5Bc3NpZ24uc2ltcGxlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc2ltcGxlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoRm9yX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zMTY0LDYgKzMzMjIsMzQgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEZvcm1hdHRlZFZhbHVlX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9ybWF0dGVkVmFsdWUudmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+di5Gb3JtYXR0ZWRWYWx1ZS5jb252ZXJzaW9uKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29udmVyc2lvbiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9mb3JtYXRfc3BlYywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEpvaW5lZFN0cl90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkpvaW5lZFN0ci52YWx1ZXMsIGFzdDJvYmpfZXhwcik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlcywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQnl0ZXNfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQnl0ZXNfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTMxODYsNiArMzM3MiwxNSBAQAogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhFbGxpcHNpc190eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KENvbnN0YW50X3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9jb25zdGFudChvLT52LkNvbnN0YW50LnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBdHRyaWJ1dGVfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTM1MzEsNiArMzcyNiwxMSBAQAogICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaWZzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5pc19hc3luYyk7CisgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pc19hc3luYywgdmFsdWUpID09IC0xKQorICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiBmYWlsZWQ6CiAgICAgUHlfWERFQ1JFRih2YWx1ZSk7CkBAIC00NDA2LDYgKzQ2MDYsNjQgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQW5uQXNzaWduX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBleHByX3R5IHRhcmdldDsKKyAgICAgICAgZXhwcl90eSBhbm5vdGF0aW9uOworICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICBpbnQgc2ltcGxlOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYW5ub3RhdGlvbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhbm5vdGF0aW9uXCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3NpbXBsZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc2ltcGxlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZzaW1wbGUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwic2ltcGxlXCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEFubkFzc2lnbih0YXJnZXQsIGFubm90YXRpb24sIHZhbHVlLCBzaW1wbGUsIGxpbmVubywgY29sX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUZvcl90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTYwMjUsNiArNjI4Myw4NiBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilGb3JtYXR0ZWRWYWx1ZV90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgaW50IGNvbnZlcnNpb247CisgICAgICAgIGV4cHJfdHkgZm9ybWF0X3NwZWM7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBGb3JtYXR0ZWRWYWx1ZSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2NvbnZlcnNpb24pKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbnZlcnNpb24pOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmNvbnZlcnNpb24sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29udmVyc2lvbiA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2Zvcm1hdF9zcGVjKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9mb3JtYXRfc3BlYyk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmZvcm1hdF9zcGVjLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvcm1hdF9zcGVjID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gRm9ybWF0dGVkVmFsdWUodmFsdWUsIGNvbnZlcnNpb24sIGZvcm1hdF9zcGVjLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUpvaW5lZFN0cl90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgYXNkbF9zZXEqIHZhbHVlczsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlcykpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSm9pbmVkU3RyIGZpZWxkIFwidmFsdWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIHZhbHVlcyA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAodmFsdWVzID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHZhbHVlcywgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlc1wiIG1pc3NpbmcgZnJvbSBKb2luZWRTdHIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBKb2luZWRTdHIodmFsdWVzLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQnl0ZXNfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02MDc5LDYgKzY0MTcsMjggQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQ29uc3RhbnRfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGNvbnN0YW50IHZhbHVlOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2NvbnN0YW50KHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIENvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQ29uc3RhbnQodmFsdWUsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBdHRyaWJ1dGVfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02Nzk1LDYgKzcxNTUsNyBAQAogICAgIGV4cHJfdHkgdGFyZ2V0OwogICAgIGV4cHJfdHkgaXRlcjsKICAgICBhc2RsX3NlcSogaWZzOworICAgIGludCBpc19hc3luYzsKIAogICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICBpbnQgcmVzOwpAQCAtNjg0Miw3ICs3MjAzLDE4IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImlmc1wiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICAqb3V0ID0gY29tcHJlaGVuc2lvbih0YXJnZXQsIGl0ZXIsIGlmcywgYXJlbmEpOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXNfYXN5bmMpKSB7CisgICAgICAgIGludCByZXM7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pc19hc3luYyk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmlzX2FzeW5jLCBhcmVuYSk7CisgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXNfYXN5bmNcIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgKm91dCA9IGNvbXByZWhlbnNpb24odGFyZ2V0LCBpdGVyLCBpZnMsIGlzX2FzeW5jLCBhcmVuYSk7CiAgICAgcmV0dXJuIDA7CiBmYWlsZWQ6CiAgICAgUHlfWERFQ1JFRih0bXApOwpAQCAtNzI4Niw2ICs3NjU4LDggQEAKICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkF1Z0Fzc2lnbiIsIChQeU9iamVjdCopQXVnQXNzaWduX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBbm5Bc3NpZ24iLCAoUHlPYmplY3QqKUFubkFzc2lnbl90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRm9yIiwgKFB5T2JqZWN0KilGb3JfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFzeW5jRm9yIiwgKFB5T2JqZWN0KilBc3luY0Zvcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzM0NiwxMiArNzcyMCwxOCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ2FsbCIsIChQeU9iamVjdCopQ2FsbF90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTnVtIiwgKFB5T2JqZWN0KilOdW1fdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN0ciIsIChQeU9iamVjdCopU3RyX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGb3JtYXR0ZWRWYWx1ZSIsCisgICAgICAgIChQeU9iamVjdCopRm9ybWF0dGVkVmFsdWVfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkpvaW5lZFN0ciIsIChQeU9iamVjdCopSm9pbmVkU3RyX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJCeXRlcyIsIChQeU9iamVjdCopQnl0ZXNfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk5hbWVDb25zdGFudCIsIChQeU9iamVjdCopTmFtZUNvbnN0YW50X3R5cGUpIDwKICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJFbGxpcHNpcyIsIChQeU9iamVjdCopRWxsaXBzaXNfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNvbnN0YW50IiwgKFB5T2JqZWN0KilDb25zdGFudF90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXR0cmlidXRlIiwgKFB5T2JqZWN0KilBdHRyaWJ1dGVfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN1YnNjcmlwdCIsIChQeU9iamVjdCopU3Vic2NyaXB0X3R5cGUpIDwgMCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9fd2FybmluZ3MuYyBiL1B5dGhvbi9fd2FybmluZ3MuYwppbmRleCA5NzhiYWQxLi40MGY1YzhlIDEwMDY0NAotLS0gYS9QeXRob24vX3dhcm5pbmdzLmMKKysrIGIvUHl0aG9uL193YXJuaW5ncy5jCkBAIC00MCwxMiArNDAsMTEgQEAKICAgIEEgTlVMTCByZXR1cm4gdmFsdWUgY2FuIG1lYW4gZmFsc2Ugb3IgYW4gZXJyb3IuCiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWdldF93YXJuaW5nc19hdHRyKGNvbnN0IGNoYXIgKmF0dHIpCitnZXRfd2FybmluZ3NfYXR0cihjb25zdCBjaGFyICphdHRyLCBpbnQgdHJ5X2ltcG9ydCkKIHsKICAgICBzdGF0aWMgUHlPYmplY3QgKndhcm5pbmdzX3N0ciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFsbF9tb2R1bGVzOwotICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGU7Ci0gICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqd2FybmluZ3NfbW9kdWxlLCAqb2JqOwogCiAgICAgaWYgKHdhcm5pbmdzX3N0ciA9PSBOVUxMKSB7CiAgICAgICAgIHdhcm5pbmdzX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJ3YXJuaW5ncyIpOwpAQCAtNTMsMTUgKzUyLDM0IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhbGxfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICByZXN1bHQgPSBQeURpY3RfQ29udGFpbnMoYWxsX21vZHVsZXMsIHdhcm5pbmdzX3N0cik7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSB8fCByZXN1bHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB3YXJuaW5nc19tb2R1bGUgPSBQeURpY3RfR2V0SXRlbShhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKSkKKyAgICAvKiBkb24ndCB0cnkgdG8gaW1wb3J0IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgUHl0aG9uIGZpbmFsbGl6YXRpb24gKi8KKyAgICBpZiAodHJ5X2ltcG9ydCAmJiBfUHlfRmluYWxpemluZyA9PSBOVUxMKSB7CisgICAgICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydCh3YXJuaW5nc19zdHIpOworICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIEZhbGxiYWNrIHRvIHRoZSBDIGltcGxlbWVudGF0aW9uIGlmIHdlIGNhbm5vdCBnZXQKKyAgICAgICAgICAgICAgIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gKi8KKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0QXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhbGxfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKKworICAgICAgICB3YXJuaW5nc19tb2R1bGUgPSBQeURpY3RfR2V0SXRlbShhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKKyAgICAgICAgaWYgKHdhcm5pbmdzX21vZHVsZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlfSU5DUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgfQorCisgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHdhcm5pbmdzX21vZHVsZSwgYXR0cikpIHsKKyAgICAgICAgUHlfREVDUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKTsKKyAgICBQeV9ERUNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICByZXR1cm4gb2JqOwogfQogCiAKQEAgLTcwLDcgKzg4LDcgQEAKIHsKICAgICBQeU9iamVjdCAqcmVnaXN0cnk7CiAKLSAgICByZWdpc3RyeSA9IGdldF93YXJuaW5nc19hdHRyKCJvbmNlcmVnaXN0cnkiKTsKKyAgICByZWdpc3RyeSA9IGdldF93YXJuaW5nc19hdHRyKCJvbmNlcmVnaXN0cnkiLCAwKTsKICAgICBpZiAocmVnaXN0cnkgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODcsNyArMTA1LDcgQEAKIHsKICAgICBQeU9iamVjdCAqZGVmYXVsdF9hY3Rpb247CiAKLSAgICBkZWZhdWx0X2FjdGlvbiA9IGdldF93YXJuaW5nc19hdHRyKCJkZWZhdWx0YWN0aW9uIik7CisgICAgZGVmYXVsdF9hY3Rpb24gPSBnZXRfd2FybmluZ3NfYXR0cigiZGVmYXVsdGFjdGlvbiIsIDApOwogICAgIGlmIChkZWZhdWx0X2FjdGlvbiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMCw3ICsxMjgsNyBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqd2FybmluZ3NfZmlsdGVyczsKIAotICAgIHdhcm5pbmdzX2ZpbHRlcnMgPSBnZXRfd2FybmluZ3NfYXR0cigiZmlsdGVycyIpOworICAgIHdhcm5pbmdzX2ZpbHRlcnMgPSBnZXRfd2FybmluZ3NfYXR0cigiZmlsdGVycyIsIDApOwogICAgIGlmICh3YXJuaW5nc19maWx0ZXJzID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4Nyw4ICszMDUsOCBAQAogfQogCiBzdGF0aWMgdm9pZAotc2hvd193YXJuaW5nKFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKnRleHQsIFB5T2JqZWN0Ci0gICAgICAgICAgICAgICAgKmNhdGVnb3J5LCBQeU9iamVjdCAqc291cmNlbGluZSkKK3Nob3dfd2FybmluZyhQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0ICp0ZXh0LAorICAgICAgICAgICAgIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUpCiB7CiAgICAgUHlPYmplY3QgKmZfc3RkZXJyOwogICAgIFB5T2JqZWN0ICpuYW1lOwpAQCAtMzU5LDEwICszNzcsNjQgQEAKICAgICBQeUVycl9DbGVhcigpOwogfQogCitzdGF0aWMgaW50CitjYWxsX3Nob3dfd2FybmluZyhQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICp0ZXh0LCBQeU9iamVjdCAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKmxpbmVub19vYmosCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlbGluZSwgUHlPYmplY3QgKnNvdXJjZSkKK3sKKyAgICBQeU9iamVjdCAqc2hvd19mbiwgKm1zZywgKnJlcywgKndhcm5tc2dfY2xzID0gTlVMTDsKKworICAgIC8qIElmIHRoZSBzb3VyY2UgcGFyYW1ldGVyIGlzIHNldCwgdHJ5IHRvIGdldCB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorICAgICAgIFRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gaXMgYWJsZSB0byBsb2cgdGhlIHRyYWNlYmFjayB3aGVyZSB0aGUgc291cmNlCisgICAgICAgd2FzIGFsbG9jYXRlZCwgd2hlcmVhcyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBkb2VzbnQuICovCisgICAgc2hvd19mbiA9IGdldF93YXJuaW5nc19hdHRyKCJfc2hvd3dhcm5tc2ciLCBzb3VyY2UgIT0gTlVMTCk7CisgICAgaWYgKHNob3dfZm4gPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc2hvd193YXJuaW5nKGZpbGVuYW1lLCBsaW5lbm8sIHRleHQsIGNhdGVnb3J5LCBzb3VyY2VsaW5lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHNob3dfZm4pKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIndhcm5pbmdzLl9zaG93d2Fybm1zZygpIG11c3QgYmUgc2V0IHRvIGEgY2FsbGFibGUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICB3YXJubXNnX2NscyA9IGdldF93YXJuaW5nc19hdHRyKCJXYXJuaW5nTWVzc2FnZSIsIDApOworICAgIGlmICh3YXJubXNnX2NscyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgd2FybmluZ3MuV2FybmluZ01lc3NhZ2UiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBtc2cgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHdhcm5tc2dfY2xzLCBtZXNzYWdlLCBjYXRlZ29yeSwKKyAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm9fb2JqLCBQeV9Ob25lLCBQeV9Ob25lLCBzb3VyY2UsCisgICAgICAgICAgICBOVUxMKTsKKyAgICBQeV9ERUNSRUYod2Fybm1zZ19jbHMpOworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2hvd19mbiwgbXNnLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoc2hvd19mbik7CisgICAgUHlfREVDUkVGKG1zZyk7CisKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHNob3dfZm4pOworICAgIHJldHVybiAtMTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5fZXhwbGljaXQoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqbWVzc2FnZSwKICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLAotICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcmVnaXN0cnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lKQorICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcmVnaXN0cnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lLAorICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKQogewogICAgIFB5T2JqZWN0ICprZXkgPSBOVUxMLCAqdGV4dCA9IE5VTEwsICpyZXN1bHQgPSBOVUxMLCAqbGluZW5vX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKml0ZW0gPSBOVUxMOwpAQCAtNDcwLDMxICs1NDIsOSBAQAogICAgIGlmIChyYyA9PSAxKSAgLyogQWxyZWFkeSB3YXJuZWQgZm9yIHRoaXMgbW9kdWxlLiAqLwogICAgICAgICBnb3RvIHJldHVybl9ub25lOwogICAgIGlmIChyYyA9PSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzaG93X2Z4biA9IGdldF93YXJuaW5nc19hdHRyKCJzaG93d2FybmluZyIpOwotICAgICAgICBpZiAoc2hvd19meG4gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICAgICAgc2hvd193YXJuaW5nKGZpbGVuYW1lLCBsaW5lbm8sIHRleHQsIGNhdGVnb3J5LCBzb3VyY2VsaW5lKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICAgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhzaG93X2Z4bikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ3Muc2hvd3dhcm5pbmcoKSBtdXN0IGJlIHNldCB0byBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHNob3dfZnhuKTsKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2hvd19meG4sIG1lc3NhZ2UsIGNhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVub19vYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzaG93X2Z4bik7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9CisgICAgICAgIGlmIChjYWxsX3Nob3dfd2FybmluZyhjYXRlZ29yeSwgdGV4dCwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVub19vYmosIHNvdXJjZWxpbmUsIHNvdXJjZSkgPCAwKQorICAgICAgICAgICAgZ290byBjbGVhbnVwOwogICAgIH0KICAgICBlbHNlIC8qIGlmIChyYyA9PSAtMSkgKi8KICAgICAgICAgZ290byBjbGVhbnVwOwpAQCAtNzM4LDcgKzc4OCw4IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kb193YXJuKFB5T2JqZWN0ICptZXNzYWdlLCBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwpCitkb193YXJuKFB5T2JqZWN0ICptZXNzYWdlLCBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCAqbW9kdWxlLCAqcmVnaXN0cnksICpyZXM7CiAgICAgaW50IGxpbmVubzsKQEAgLTc0Nyw3ICs3OTgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwgcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHNvdXJjZSk7CiAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKICAgICBQeV9ERUNSRUYocmVnaXN0cnkpOwogICAgIFB5X0RFQ1JFRihtb2R1bGUpOwpAQCAtNzU3LDI1ICs4MDgsMjcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3YXJuaW5nc193YXJuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3X2xpc3RbXSA9IHsgIm1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAic3RhY2tsZXZlbCIsIDAgfTsKLSAgICBQeU9iamVjdCAqbWVzc2FnZSwgKmNhdGVnb3J5ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dfbGlzdFtdID0geyJtZXNzYWdlIiwgImNhdGVnb3J5IiwgInN0YWNrbGV2ZWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICptZXNzYWdlLCAqY2F0ZWdvcnkgPSBOVUxMLCAqc291cmNlID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9uOndhcm4iLCBrd19saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZXNzYWdlLCAmY2F0ZWdvcnksICZzdGFja19sZXZlbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T25POndhcm4iLCBrd19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZXNzYWdlLCAmY2F0ZWdvcnksICZzdGFja19sZXZlbCwgJnNvdXJjZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgY2F0ZWdvcnkgPSBnZXRfY2F0ZWdvcnkobWVzc2FnZSwgY2F0ZWdvcnkpOwogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwpOworICAgIHJldHVybiBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCwgc291cmNlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5pbmdzX3dhcm5fZXhwbGljaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBzdGF0aWMgY2hhciAqa3dkX2xpc3RbXSA9IHsibWVzc2FnZSIsICJjYXRlZ29yeSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIiwgInJlZ2lzdHJ5IiwgIm1vZHVsZV9nbG9iYWxzIiwgMH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCAicmVnaXN0cnkiLCAibW9kdWxlX2dsb2JhbHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiwgMH07CiAgICAgUHlPYmplY3QgKm1lc3NhZ2U7CiAgICAgUHlPYmplY3QgKmNhdGVnb3J5OwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKQEAgLTc4MywxMCArODM2LDExIEBACiAgICAgUHlPYmplY3QgKm1vZHVsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlZ2lzdHJ5ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbW9kdWxlX2dsb2JhbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzb3VyY2VvYmogPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PVWl8T09POndhcm5fZXhwbGljaXQiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT1VpfE9PT086d2Fybl9leHBsaWNpdCIsCiAgICAgICAgICAgICAgICAga3dkX2xpc3QsICZtZXNzYWdlLCAmY2F0ZWdvcnksICZmaWxlbmFtZSwgJmxpbmVubywgJm1vZHVsZSwKLSAgICAgICAgICAgICAgICAmcmVnaXN0cnksICZtb2R1bGVfZ2xvYmFscykpCisgICAgICAgICAgICAgICAgJnJlZ2lzdHJ5LCAmbW9kdWxlX2dsb2JhbHMsICZzb3VyY2VvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChtb2R1bGVfZ2xvYmFscykgewpAQCAtODQyLDE0ICs4OTYsMTQgQEAKIAogICAgICAgICAvKiBIYW5kbGUgdGhlIHdhcm5pbmcuICovCiAgICAgICAgIHJldHVybmVkID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIHNvdXJjZV9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBzb3VyY2VfbGluZSwgc291cmNlb2JqKTsKICAgICAgICAgUHlfREVDUkVGKHNvdXJjZV9saXN0KTsKICAgICAgICAgcmV0dXJuIHJldHVybmVkOwogICAgIH0KIAogIHN0YW5kYXJkX2NhbGw6CiAgICAgcmV0dXJuIHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIE5VTEwsIHNvdXJjZW9iaik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04NjQsMTQgKzkxOCwxNCBAQAogCiBzdGF0aWMgaW50CiB3YXJuX3VuaWNvZGUoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqbWVzc2FnZSwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQorICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICBjYXRlZ29yeSA9IFB5RXhjX1J1bnRpbWVXYXJuaW5nOwogCi0gICAgcmVzID0gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwpOworICAgIHJlcyA9IGRvX3dhcm4obWVzc2FnZSwgY2F0ZWdvcnksIHN0YWNrX2xldmVsLCBzb3VyY2UpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtODc5LDEyICs5MzMsMjggQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorX1B5RXJyX1dhcm5Gb3JtYXRWKFB5T2JqZWN0ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKK3sKKyAgICBQeU9iamVjdCAqbWVzc2FnZTsKKyAgICBpbnQgcmVzOworCisgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKyAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXMgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsLCBzb3VyY2UpOworICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKKyAgICByZXR1cm4gcmVzOworfQorCiBpbnQKIFB5RXJyX1dhcm5Gb3JtYXQoUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKLSAgICBpbnQgcmV0OwotICAgIFB5T2JqZWN0ICptZXNzYWdlOworICAgIGludCByZXM7CiAgICAgdmFfbGlzdCB2YXJnczsKIAogI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKQEAgLTg5MiwyNSArOTYyLDM4IEBACiAjZWxzZQogICAgIHZhX3N0YXJ0KHZhcmdzKTsKICNlbmRpZgotICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7Ci0gICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCkgewotICAgICAgICByZXQgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsKTsKLSAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldCA9IC0xOworICAgIHJlcyA9IF9QeUVycl9XYXJuRm9ybWF0VihOVUxMLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwsIGZvcm1hdCwgdmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmVzOwogfQogCiBpbnQKK1B5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIGludCByZXM7CisgICAgdmFfbGlzdCB2YXJnczsKKworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgZm9ybWF0KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCisgICAgcmVzID0gX1B5RXJyX1dhcm5Gb3JtYXRWKHNvdXJjZSwgUHlFeGNfUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja19sZXZlbCwgZm9ybWF0LCB2YXJncyk7CisgICAgdmFfZW5kKHZhcmdzKTsKKyAgICByZXR1cm4gcmVzOworfQorCisKK2ludAogUHlFcnJfV2FybkV4KFB5T2JqZWN0ICpjYXRlZ29yeSwgY29uc3QgY2hhciAqdGV4dCwgUHlfc3NpemVfdCBzdGFja19sZXZlbCkKIHsKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICptZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcodGV4dCk7CiAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwpOworICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwsIE5VTEwpOwogICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtOTIxLDcgKzEwMDQsNyBAQAogI3VuZGVmIFB5RXJyX1dhcm4KIAogUHlBUElfRlVOQyhpbnQpCi1QeUVycl9XYXJuKFB5T2JqZWN0ICpjYXRlZ29yeSwgY2hhciAqdGV4dCkKK1B5RXJyX1dhcm4oUHlPYmplY3QgKmNhdGVnb3J5LCBjb25zdCBjaGFyICp0ZXh0KQogewogICAgIHJldHVybiBQeUVycl9XYXJuRXgoY2F0ZWdvcnksIHRleHQsIDEpOwogfQpAQCAtOTM2LDcgKzEwMTksNyBAQAogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICBjYXRlZ29yeSA9IFB5RXhjX1J1bnRpbWVXYXJuaW5nOwogICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgcmVnaXN0cnksIE5VTEwsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMTAwMCw3ICsxMDgzLDcgQEAKICAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc2RsLmMgYi9QeXRob24vYXNkbC5jCmluZGV4IGRmMzg3YjIuLmMyMTEwNzggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc2RsLmMKKysrIGIvUHl0aG9uL2FzZGwuYwpAQCAtOSwxNCArOSwxNCBAQAogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCiAgICAgaWYgKHNpemUgPCAwIHx8Ci0gICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFNJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CiAKICAgICAvKiBjaGVjayBpZiBzaXplIGNhbiBiZSBhZGRlZCBzYWZlbHkgKi8KLSAgICBpZiAobiA+IFBZX1NJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgeworICAgIGlmIChuID4gU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQwLDE0ICs0MCwxNCBAQAogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCiAgICAgaWYgKHNpemUgPCAwIHx8Ci0gICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFNJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwotICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CisgICAgaWYgKG4gPiBTSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzdC5jIGIvUHl0aG9uL2FzdC5jCmluZGV4IDZkYTMzZjcuLmRlZWE1NzkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc3QuYworKysgYi9QeXRob24vYXN0LmMKQEAgLTEzMiw2ICsxMzIsNTIgQEAKIH0KIAogc3RhdGljIGludAordmFsaWRhdGVfY29uc3RhbnQoUHlPYmplY3QgKnZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lIHx8IHZhbHVlID09IFB5X0VsbGlwc2lzKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5RmxvYXRfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5Q29tcGxleF9DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlCb29sX0NoZWNrKHZhbHVlKQorICAgICAgICAgICAgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QodmFsdWUpCisgICAgICAgICAgICB8fCBQeUJ5dGVzX0NoZWNrRXhhY3QodmFsdWUpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QodmFsdWUpIHx8IFB5RnJvemVuU2V0X0NoZWNrRXhhY3QodmFsdWUpKSB7CisgICAgICAgIFB5T2JqZWN0ICppdDsKKworICAgICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIodmFsdWUpOworICAgICAgICBpZiAoaXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5SXRlcl9OZXh0KGl0KTsKKyAgICAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfY29uc3RhbnQoaXRlbSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CiB2YWxpZGF0ZV9leHByKGV4cHJfdHkgZXhwLCBleHByX2NvbnRleHRfdHkgY3R4KQogewogICAgIGludCBjaGVja19jdHggPSAxOwpAQCAtMjQwLDYgKzI4NiwxNCBAQAogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5mdW5jLCBMb2FkKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkNhbGwuYXJncywgTG9hZCwgMCkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKGV4cC0+di5DYWxsLmtleXdvcmRzKTsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIGlmICghdmFsaWRhdGVfY29uc3RhbnQoZXhwLT52LkNvbnN0YW50LnZhbHVlKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGFuIGludmFsaWQgdHlwZSBpbiBDb25zdGFudDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZXhwLT52LkNvbnN0YW50LnZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIE51bV9raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpuID0gZXhwLT52Lk51bS5uOwogICAgICAgICBpZiAoIVB5TG9uZ19DaGVja0V4YWN0KG4pICYmICFQeUZsb2F0X0NoZWNrRXhhY3QobikgJiYKQEAgLTI1Nyw2ICszMTEsMTQgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMTsKICAgICB9CisgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5Kb2luZWRTdHIudmFsdWVzLCBMb2FkLCAwKTsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIGlmICh2YWxpZGF0ZV9leHByKGV4cC0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSwgTG9hZCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoZXhwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjLCBMb2FkKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgY2FzZSBCeXRlc19raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpiID0gZXhwLT52LkJ5dGVzLnM7CiAgICAgICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KGIpKSB7CkBAIC0zMzUsNiArMzk3LDE3IEBACiAgICAgY2FzZSBBdWdBc3NpZ25fa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udGFyZ2V0LCBTdG9yZSkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udmFsdWUsIExvYWQpOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIGlmIChzdG10LT52LkFubkFzc2lnbi50YXJnZXQtPmtpbmQgIT0gTmFtZV9raW5kICYmCisgICAgICAgICAgICBzdG10LT52LkFubkFzc2lnbi5zaW1wbGUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFubkFzc2lnbiB3aXRoIHNpbXBsZSBub24tTmFtZSB0YXJnZXQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICAgICAoIXN0bXQtPnYuQW5uQXNzaWduLnZhbHVlIHx8CisgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkFubkFzc2lnbi52YWx1ZSwgTG9hZCkpICYmCisgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLmFubm90YXRpb24sIExvYWQpOwogICAgIGNhc2UgRm9yX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLnRhcmdldCwgU3RvcmUpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLml0ZXIsIExvYWQpICYmCkBAIC00MTMsOCArNDg2LDggQEAKICAgICBjYXNlIEltcG9ydF9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0Lm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0Iik7CiAgICAgY2FzZSBJbXBvcnRGcm9tX2tpbmQ6Ci0gICAgICAgIGlmIChzdG10LT52LkltcG9ydEZyb20ubGV2ZWwgPCAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbXBvcnRGcm9tIGxldmVsIGxlc3MgdGhhbiAtMSIpOworICAgICAgICBpZiAoc3RtdC0+di5JbXBvcnRGcm9tLmxldmVsIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJOZWdhdGl2ZSBJbXBvcnRGcm9tIGxldmVsIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0RnJvbS5uYW1lcywgIm5hbWVzIiwgIkltcG9ydEZyb20iKTsKQEAgLTUxMiw4ICs1ODUsNyBAQAogCiAvKiBEYXRhIHN0cnVjdHVyZSB1c2VkIGludGVybmFsbHkgKi8KIHN0cnVjdCBjb21waWxpbmcgewotICAgIGNoYXIgKmNfZW5jb2Rpbmc7IC8qIHNvdXJjZSBlbmNvZGluZyAqLwotICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIGFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbWVvcnkgKi8KKyAgICBQeUFyZW5hICpjX2FyZW5hOyAvKiBBcmVuYSBmb3IgYWxsb2NhdGluZyBtZW1vcnkuICovCiAgICAgUHlPYmplY3QgKmNfZmlsZW5hbWU7IC8qIGZpbGVuYW1lICovCiAgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplOyAvKiBOb3JtYWxpemF0aW9uIGZ1bmN0aW9uIGZyb20gdW5pY29kZWRhdGEuICovCiAgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplX2FyZ3M7IC8qIE5vcm1hbGl6YXRpb24gYXJndW1lbnQgdHVwbGUuICovCkBAIC01MzUsOSArNjA3LDcgQEAKIHN0YXRpYyBleHByX3R5IGFzdF9mb3JfY2FsbChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKiwgZXhwcl90eSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqcGFyc2VudW1iZXIoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBjaGFyICopOwotc3RhdGljIFB5T2JqZWN0ICpwYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlKTsKLXN0YXRpYyBQeU9iamVjdCAqcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYnl0ZXNtb2RlKTsKK3N0YXRpYyBleHByX3R5IHBhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4pOwogCiAjZGVmaW5lIENPTVBfR0VORVhQICAgMAogI2RlZmluZSBDT01QX0xJU1RDT01QIDEKQEAgLTcwMSwyMyArNzcxLDExIEBACiAgICAgYy5jX2FyZW5hID0gYXJlbmE7CiAgICAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCiAgICAgYy5jX2ZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgYy5jX25vcm1hbGl6ZSA9IGMuY19ub3JtYWxpemVfYXJncyA9IE5VTEw7Ci0gICAgaWYgKGZsYWdzICYmIGZsYWdzLT5jZl9mbGFncyAmIFB5Q0ZfU09VUkNFX0lTX1VURjgpIHsKLSAgICAgICAgYy5jX2VuY29kaW5nID0gInV0Zi04IjsKLSAgICAgICAgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewotI2lmIDAKLSAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZW5jb2RpbmcgZGVjbGFyYXRpb24gaW4gVW5pY29kZSBzdHJpbmciKTsKLSAgICAgICAgICAgIGdvdG8gb3V0OwotI2VuZGlmCi0gICAgICAgICAgICBuID0gQ0hJTEQobiwgMCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewotICAgICAgICBjLmNfZW5jb2RpbmcgPSBTVFIobik7CisgICAgYy5jX25vcm1hbGl6ZSA9IE5VTEw7CisgICAgYy5jX25vcm1hbGl6ZV9hcmdzID0gTlVMTDsKKworICAgIGlmIChUWVBFKG4pID09IGVuY29kaW5nX2RlY2wpCiAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBQRVAgMzEyMCAqLwotICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwotICAgIH0KIAogICAgIGsgPSAwOwogICAgIHN3aXRjaCAoVFlQRShuKSkgewpAQCAtODY0LDcgKzkyMiw3IEBACiAgICAgfQogfQogCi1zdGF0aWMgY29uc3QgY2hhciogRk9SQklEREVOW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IEZPUkJJRERFTltdID0gewogICAgICJOb25lIiwKICAgICAiVHJ1ZSIsCiAgICAgIkZhbHNlIiwKQEAgLTg4MCw4ICs5MzgsMjggQEAKICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiYXN5bmMiKSA9PSAwIHx8CisgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJhd2FpdCIpID09IDApCisgICAgeworICAgICAgICBQeU9iamVjdCAqbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAorICAgICAgICAgICAgIidhc3luYycgYW5kICdhd2FpdCcgd2lsbCBiZWNvbWUgcmVzZXJ2ZWQga2V5d29yZHMiCisgICAgICAgICAgICAiIGluIFB5dGhvbiAzLjciKTsKKyAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICBjLT5jX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgIE5VTEwpIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKGZ1bGxfY2hlY2tzKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKipwOworICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKnA7CiAgICAgICAgIGZvciAocCA9IEZPUkJJRERFTjsgKnA7IHArKykgewogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICpwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKQEAgLTk0MywxMyArMTAyMSw4IEBACiAgICAgICAgICAgICBzID0gZS0+di5MaXN0LmVsdHM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUdXBsZV9raW5kOgotICAgICAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihlLT52LlR1cGxlLmVsdHMpKSAgewotICAgICAgICAgICAgICAgIGUtPnYuVHVwbGUuY3R4ID0gY3R4OwotICAgICAgICAgICAgICAgIHMgPSBlLT52LlR1cGxlLmVsdHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBleHByX25hbWUgPSAiKCkiOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZS0+di5UdXBsZS5jdHggPSBjdHg7CisgICAgICAgICAgICBzID0gZS0+di5UdXBsZS5lbHRzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGFtYmRhX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGFtYmRhIjsKQEAgLTk4Niw2ICsxMDU5LDggQEAKICAgICAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgY2FzZSBTdHJfa2luZDoKICAgICAgICAgY2FzZSBCeXRlc19raW5kOgorICAgICAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGl0ZXJhbCI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKQEAgLTEyNTksMTYgKzEzMzQsMjAgQEAKICAgICAgICBhbmQgdmFyYXJnc2xpc3QgKGxhbWJkYSBkZWZpbml0aW9uKS4KIAogICAgICAgIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCi0gICAgICAgdHlwZWRhcmdzbGlzdDogKCh0ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICAgICAgICAgICAoJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXQotICAgICAgICAgICB8ICcqKicgdGZwZGVmKQotICAgICAgICAgICB8IHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAgICAgICAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICB8ICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXSkKICAgICAgICB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICAgICAgIHZhcmFyZ3NsaXN0OiAoKHZmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gICAgICAgICAgICgnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqICBbJywnICcqKicgdmZwZGVmXQotICAgICAgICAgICB8ICcqKicgdmZwZGVmKQotICAgICAgICAgICB8IHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB2YXJhcmdzbGlzdDogKHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgICAgICAgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ10KKyAgICAgICApCiAgICAgICAgdmZwZGVmOiBOQU1FCisKICAgICAqLwogICAgIGludCBpLCBqLCBrLCBucG9zYXJncyA9IDAsIG5rd29ubHlhcmdzID0gMDsKICAgICBpbnQgbnBvc2RlZmF1bHRzID0gMCwgZm91bmRfZGVmYXVsdCA9IDA7CkBAIC0xMzcwLDcgKzE0NDksOCBAQAogICAgICAgICAgICAgICAgIGkgKz0gMjsgLyogdGhlIG5hbWUgYW5kIHRoZSBjb21tYSAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTVEFSOgotICAgICAgICAgICAgICAgIGlmIChpKzEgPj0gTkNIKG4pKSB7CisgICAgICAgICAgICAgICAgaWYgKGkrMSA+PSBOQ0gobikgfHwKKyAgICAgICAgICAgICAgICAgICAgKGkrMiA9PSBOQ0gobikgJiYgVFlQRShDSElMRChuLCBpKzEpKSA9PSBDT01NQSkpIHsKICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKG4sIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkIGFyZ3VtZW50cyBtdXN0IGZvbGxvdyBiYXJlICoiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNjg3LDE0ICsxNzY3LDIxIEBACiBjb3VudF9jb21wX2ZvcnMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBpbnQgbl9mb3JzID0gMDsKKyAgICBpbnQgaXNfYXN5bmM7CiAKICAgY291bnRfY29tcF9mb3I6CisgICAgaXNfYXN5bmMgPSAwOwogICAgIG5fZm9ycysrOwogICAgIFJFUShuLCBjb21wX2Zvcik7Ci0gICAgaWYgKE5DSChuKSA9PSA1KQotICAgICAgICBuID0gQ0hJTEQobiwgNCk7Ci0gICAgZWxzZQorICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBBU1lOQykgeworICAgICAgICBpc19hc3luYyA9IDE7CisgICAgfQorICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKKyAgICAgICAgbiA9IENISUxEKG4sIDQgKyBpc19hc3luYyk7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICByZXR1cm4gbl9mb3JzOworICAgIH0KICAgY291bnRfY29tcF9pdGVyOgogICAgIFJFUShuLCBjb21wX2l0ZXIpOwogICAgIG4gPSBDSElMRChuLCAwKTsKQEAgLTE3NTcsMTQgKzE4NDQsMTkgQEAKICAgICAgICAgYXNkbF9zZXEgKnQ7CiAgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbiwgZmlyc3Q7CiAgICAgICAgIG5vZGUgKmZvcl9jaDsKKyAgICAgICAgaW50IGlzX2FzeW5jID0gMDsKIAogICAgICAgICBSRVEobiwgY29tcF9mb3IpOwogCi0gICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEpOworICAgICAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gQVNZTkMpIHsKKyAgICAgICAgICAgIGlzX2FzeW5jID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEgKyBpc19hc3luYyk7CiAgICAgICAgIHQgPSBhc3RfZm9yX2V4cHJsaXN0KGMsIGZvcl9jaCwgU3RvcmUpOwogICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAzKSk7CisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMyArIGlzX2FzeW5jKSk7CiAgICAgICAgIGlmICghZXhwcmVzc2lvbikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzcyLDE5ICsxODY0LDIwIEBACiAgICAgICAgICAgICh4IGZvciB4LCBpbiAuLi4pIGhhcyAxIGVsZW1lbnQgaW4gdCwgYnV0IHN0aWxsIHJlcXVpcmVzIGEgVHVwbGUuICovCiAgICAgICAgIGZpcnN0ID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKHQsIDApOwogICAgICAgICBpZiAoTkNIKGZvcl9jaCkgPT0gMSkKLSAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYXN5bmMsIGMtPmNfYXJlbmEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywgZmlyc3QtPmNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiwgTlVMTCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LT5jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24sIE5VTEwsIGlzX2FzeW5jLCBjLT5jX2FyZW5hKTsKICAgICAgICAgaWYgKCFjb21wKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKE5DSChuKSA9PSA1KSB7CisgICAgICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKICAgICAgICAgICAgIGludCBqLCBuX2lmczsKICAgICAgICAgICAgIGFzZGxfc2VxICppZnM7CiAKLSAgICAgICAgICAgIG4gPSBDSElMRChuLCA0KTsKKyAgICAgICAgICAgIG4gPSBDSElMRChuLCA0ICsgaXNfYXN5bmMpOwogICAgICAgICAgICAgbl9pZnMgPSBjb3VudF9jb21wX2lmcyhjLCBuKTsKICAgICAgICAgICAgIGlmIChuX2lmcyA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE5OTMsNyArMjA4Niw2IEBACiAgICAgICAgfCAnLi4uJyB8ICdOb25lJyB8ICdUcnVlJyB8ICdGYWxzZScKICAgICAqLwogICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7Ci0gICAgaW50IGJ5dGVzbW9kZSA9IDA7CiAKICAgICBzd2l0Y2ggKFRZUEUoY2gpKSB7CiAgICAgY2FzZSBOQU1FOiB7CkBAIC0yMDE1LDcgKzIxMDcsNyBAQAogICAgICAgICByZXR1cm4gTmFtZShuYW1lLCBMb2FkLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7Ci0gICAgICAgIFB5T2JqZWN0ICpzdHIgPSBwYXJzZXN0cnBsdXMoYywgbiwgJmJ5dGVzbW9kZSk7CisgICAgICAgIGV4cHJfdHkgc3RyID0gcGFyc2VzdHJwbHVzKGMsIG4pOwogICAgICAgICBpZiAoIXN0cikgewogICAgICAgICAgICAgY29uc3QgY2hhciAqZXJydHlwZSA9IE5VTEw7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19Vbmljb2RlRXJyb3IpKQpAQCAtMjAzMiw2ICsyMTI0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKCVzKSAlcyIsIGVycnR5cGUsIHMpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIoJXMpIHVua25vd24gZXJyb3IiLCBlcnJ0eXBlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sIGJ1Zik7CkBAIC0yMDQxLDE0ICsyMTM0LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHN0cikgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChieXRlc21vZGUpCi0gICAgICAgICAgICByZXR1cm4gQnl0ZXMoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBTdHIoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIFB5T2JqZWN0ICpweW51bSA9IHBhcnNlbnVtYmVyKGMsIFNUUihjaCkpOwpAQCAtMjgwNSw4ICsyODkxLDkgQEAKIGFzdF9mb3JfZXhwcl9zdG10KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgUkVRKG4sIGV4cHJfc3RtdCk7Ci0gICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkKLSAgICAgICAgICAgICAgICB8ICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3QpKSopCisgICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGFubmFzc2lnbiB8IGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorICAgICAgIGFubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogICAgICAgIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnIHRlc3R8c3Rhcl9leHByKSogWycsJ10KICAgICAgICBhdWdhc3NpZ246ICcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JwogICAgICAgICAgICAgICAgIHwgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScKQEAgLTI4NTgsNiArMjk0NSw3NiBAQAogCiAgICAgICAgIHJldHVybiBBdWdBc3NpZ24oZXhwcjEsIG5ld29wZXJhdG9yLCBleHByMiwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KKyAgICBlbHNlIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBhbm5hc3NpZ24pIHsKKyAgICAgICAgZXhwcl90eSBleHByMSwgZXhwcjIsIGV4cHIzOworICAgICAgICBub2RlICpjaCA9IENISUxEKG4sIDApOworICAgICAgICBub2RlICpkZWVwLCAqYW5uID0gQ0hJTEQobiwgMSk7CisgICAgICAgIGludCBzaW1wbGUgPSAxOworCisgICAgICAgIC8qIHdlIGtlZXAgdHJhY2sgb2YgcGFyZW5zIHRvIHF1YWxpZnkgKHgpIGFzIGV4cHJlc3Npb24gbm90IG5hbWUgKi8KKyAgICAgICAgZGVlcCA9IGNoOworICAgICAgICB3aGlsZSAoTkNIKGRlZXApID09IDEpIHsKKyAgICAgICAgICAgIGRlZXAgPSBDSElMRChkZWVwLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoTkNIKGRlZXApID4gMCAmJiBUWVBFKENISUxEKGRlZXAsIDApKSA9PSBMUEFSKSB7CisgICAgICAgICAgICBzaW1wbGUgPSAwOworICAgICAgICB9CisgICAgICAgIGV4cHIxID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjEpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoZXhwcjEtPmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgTmFtZV9raW5kOgorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBleHByMS0+di5OYW1lLmlkLCBuLCAwKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuTmFtZS5jdHggPSBTdG9yZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGV4cHIxLT52LkF0dHJpYnV0ZS5hdHRyLCBuLCAxKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuQXR0cmlidXRlLmN0eCA9IFN0b3JlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKKyAgICAgICAgICAgICAgICBleHByMS0+di5TdWJzY3JpcHQuY3R4ID0gU3RvcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExpc3Rfa2luZDoKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHNpbmdsZSB0YXJnZXQgKG5vdCBsaXN0KSBjYW4gYmUgYW5ub3RhdGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBjYXNlIFR1cGxlX2tpbmQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBzaW5nbGUgdGFyZ2V0IChub3QgdHVwbGUpIGNhbiBiZSBhbm5vdGF0ZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCB0YXJnZXQgZm9yIGFubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChleHByMS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKKyAgICAgICAgICAgIHNpbXBsZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgY2ggPSBDSElMRChhbm4sIDEpOworICAgICAgICBleHByMiA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjIpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChOQ0goYW5uKSA9PSAyKSB7CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgTlVMTCwgc2ltcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaCA9IENISUxEKGFubiwgMyk7CisgICAgICAgICAgICBleHByMyA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgICAgICBpZiAoIWV4cHIzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgZXhwcjMsIHNpbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICB9CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBpbnQgaTsKICAgICAgICAgYXNkbF9zZXEgKnRhcmdldHM7CkBAIC0zMjA4LDE0ICszMzY1LDE0IEBACiAgICAgICAgICAgICBhbGlhc190eSBpbXBvcnRfYWxpYXMgPSBhbGlhc19mb3JfaW1wb3J0X25hbWUoYywgbiwgMSk7CiAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgMCwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCAwLCBpbXBvcnRfYWxpYXMpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSArPSAyKSB7CiAgICAgICAgICAgICAgICAgYWxpYXNfdHkgaW1wb3J0X2FsaWFzID0gYWxpYXNfZm9yX2ltcG9ydF9uYW1lKGMsIENISUxEKG4sIGkpLCAxKTsKICAgICAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCBpIC8gMiwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgaSAvIDIsIGltcG9ydF9hbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1vZCAhPSBOVUxMKQpAQCAtMzg4MSw3ICs0MDM4LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBhcnNlbnVtYmVyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMpCitwYXJzZW51bWJlcl9yYXcoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcykKIHsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgbG9uZyB4OwpAQCAtMzkyNCw2ICs0MDgxLDMxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitwYXJzZW51bWJlcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzKQoreworICAgIGNoYXIgKmR1cCwgKmVuZDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGFzc2VydChzICE9IE5VTEwpOworCisgICAgaWYgKHN0cmNocihzLCAnXycpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlbnVtYmVyX3JhdyhjLCBzKTsKKyAgICB9CisgICAgLyogQ3JlYXRlIGEgZHVwbGljYXRlIHdpdGhvdXQgdW5kZXJzY29yZXMuICovCisgICAgZHVwID0gUHlNZW1fTWFsbG9jKHN0cmxlbihzKSArIDEpOworICAgIGVuZCA9IGR1cDsKKyAgICBmb3IgKDsgKnM7IHMrKykgeworICAgICAgICBpZiAoKnMgIT0gJ18nKSB7CisgICAgICAgICAgICAqZW5kKysgPSAqczsKKyAgICAgICAgfQorICAgIH0KKyAgICAqZW5kID0gJ1wwJzsKKyAgICByZXMgPSBwYXJzZW51bWJlcl9yYXcoYywgZHVwKTsKKyAgICBQeU1lbV9GcmVlKGR1cCk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRlY29kZV91dGY4KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKipzUHRyLCBjb25zdCBjaGFyICplbmQpCiB7CiAgICAgY29uc3QgY2hhciAqcywgKnQ7CkBAIC0zOTM1LDg0ICs0MTE3LDg2MiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGVjb2RlX3VuaWNvZGUoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgaW50IHJhd21vZGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKQorZGVjb2RlX3VuaWNvZGVfd2l0aF9lc2NhcGVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiB7CiAgICAgUHlPYmplY3QgKnYsICp1OwogICAgIGNoYXIgKmJ1ZjsKICAgICBjaGFyICpwOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIHUgPSBOVUxMOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgICAgIGlmIChsZW4gPiBQWV9TSVpFX01BWCAvIDYpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogIsOkIiAoMiBieXRlcykgbWF5IGJlY29tZSAiXFUwMDAwMDBFNCIgKDEwIGJ5dGVzKSwgb3IgMTo1Ci0gICAgICAgICAgICJcw6QiICgzIGJ5dGVzKSBtYXkgYmVjb21lICJcdTAwNWNcVTAwMDAwMEU0IiAoMTYgYnl0ZXMpLCBvciB+MTo2ICovCi0gICAgICAgIHUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuICogNik7Ci0gICAgICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodSk7Ci0gICAgICAgIGVuZCA9IHMgKyBsZW47Ci0gICAgICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgICAgICBpZiAoKnMgPT0gJ1xcJykgewotICAgICAgICAgICAgICAgICpwKysgPSAqcysrOwotICAgICAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyY3B5KHAsICJ1MDA1YyIpOwotICAgICAgICAgICAgICAgICAgICBwICs9IDU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgeyAvKiBYWFggaW5lZmZpY2llbnQgKi8KLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdzsKLSAgICAgICAgICAgICAgICBpbnQga2luZDsKLSAgICAgICAgICAgICAgICB2b2lkICpkYXRhOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBpOwotICAgICAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKLSAgICAgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh3KTsKLSAgICAgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7Ci0gICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodyk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwOHgiLCBjaHIpOwotICAgICAgICAgICAgICAgICAgICBwICs9IDEwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBTaG91bGQgYmUgaW1wb3NzaWJsZSB0byBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgIGFzc2VydChwIC0gYnVmIDw9IFB5X1NJWkUodSkpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICpzKys7CisgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICBpZiAobGVuID4gU0laRV9NQVggLyA2KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiAiw6QiICgyIGJ5dGVzKSBtYXkgYmVjb21lICJcVTAwMDAwMEU0IiAoMTAgYnl0ZXMpLCBvciAxOjUKKyAgICAgICAiXMOkIiAoMyBieXRlcykgbWF5IGJlY29tZSAiXHUwMDVjXFUwMDAwMDBFNCIgKDE2IGJ5dGVzKSwgb3IgfjE6NiAqLworICAgIHUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuICogNik7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodSk7CisgICAgZW5kID0gcyArIGxlbjsKKyAgICB3aGlsZSAocyA8IGVuZCkgeworICAgICAgICBpZiAoKnMgPT0gJ1xcJykgeworICAgICAgICAgICAgKnArKyA9ICpzKys7CisgICAgICAgICAgICBpZiAoKnMgJiAweDgwKSB7CisgICAgICAgICAgICAgICAgc3RyY3B5KHAsICJ1MDA1YyIpOworICAgICAgICAgICAgICAgIHAgKz0gNTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBsZW4gPSBwIC0gYnVmOwotICAgICAgICBzID0gYnVmOworICAgICAgICBpZiAoKnMgJiAweDgwKSB7IC8qIFhYWCBpbmVmZmljaWVudCAqLworICAgICAgICAgICAgUHlPYmplY3QgKnc7CisgICAgICAgICAgICBpbnQga2luZDsKKyAgICAgICAgICAgIHZvaWQgKmRhdGE7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKyAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKKyAgICAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7CisgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3KTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgc3ByaW50ZihwLCAiXFxVJTA4eCIsIGNocik7CisgICAgICAgICAgICAgICAgcCArPSAxMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIG92ZXJmbG93ICovCisgICAgICAgICAgICBhc3NlcnQocCAtIGJ1ZiA8PSBQeV9TSVpFKHUpKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpwKysgPSAqcysrOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChyYXdtb2RlKQotICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUocywgbGVuLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShzLCBsZW4sIE5VTEwpOworICAgIGxlbiA9IHAgLSBidWY7CisgICAgcyA9IGJ1ZjsKKworICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShzLCBsZW4sIE5VTEwpOwogICAgIFB5X1hERUNSRUYodSk7CiAgICAgcmV0dXJuIHY7CiB9CiAKLS8qIHMgaXMgYSBQeXRob24gc3RyaW5nIGxpdGVyYWwsIGluY2x1ZGluZyB0aGUgYnJhY2tldGluZyBxdW90ZSBjaGFyYWN0ZXJzLAotICogYW5kIHIgJi9vciBiIHByZWZpeGVzIChpZiBhbnkpLCBhbmQgZW1iZWRkZWQgZXNjYXBlIHNlcXVlbmNlcyAoaWYgYW55KS4KLSAqIHBhcnNlc3RyIHBhcnNlcyBpdCwgYW5kIHJldHVybnMgdGhlIGRlY29kZWQgUHl0aG9uIHN0cmluZyBvYmplY3QuCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1wYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgKmJ5dGVzbW9kZSkKKy8qIENvbXBpbGUgdGhpcyBleHByZXNzaW9uIGluIHRvIGFuIGV4cHJfdHkuICBBZGQgcGFyZW5zIGFyb3VuZCB0aGUKKyAgIGV4cHJlc3Npb24sIGluIG9yZGVyIHRvIGFsbG93IGxlYWRpbmcgc3BhY2VzIGluIHRoZSBleHByZXNzaW9uLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfY29tcGlsZV9leHByKGNvbnN0IGNoYXIgKmV4cHJfc3RhcnQsIGNvbnN0IGNoYXIgKmV4cHJfZW5kLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKKworeworICAgIGludCBhbGxfd2hpdGVzcGFjZSA9IDE7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7CisgICAgbW9kX3R5IG1vZDsKKyAgICBjaGFyICpzdHI7CisgICAgUHlPYmplY3QgKm87CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KGV4cHJfZW5kID49IGV4cHJfc3RhcnQpOworICAgIGFzc2VydCgqKGV4cHJfc3RhcnQtMSkgPT0gJ3snKTsKKyAgICBhc3NlcnQoKmV4cHJfZW5kID09ICd9JyB8fCAqZXhwcl9lbmQgPT0gJyEnIHx8ICpleHByX2VuZCA9PSAnOicpOworCisgICAgLyogV2Uga25vdyB0aGVyZSBhcmUgbm8gZXNjYXBlcyBoZXJlLCBiZWNhdXNlIGJhY2tzbGFzaGVzIGFyZSBub3QgYWxsb3dlZCwKKyAgICAgICBhbmQgd2Uga25vdyBpdCdzIHV0Zi04IGVuY29kZWQgKHBlciBQRVAgMjYzKS4gIEJ1dCwgaW4gb3JkZXIgdG8gY2hlY2sKKyAgICAgICB0aGF0IGVhY2ggY2hhciBpcyBub3Qgd2hpdGVzcGFjZSwgd2UgbmVlZCB0byBkZWNvZGUgaXQgdG8gdW5pY29kZS4KKyAgICAgICBXaGljaCBpcyB1bmZvcnR1bmF0ZSwgYnV0IHN1Y2ggaXMgbGlmZS4gKi8KKworICAgIC8qIElmIHRoZSBzdWJzdHJpbmcgaXMgYWxsIHdoaXRlc3BhY2UsIGl0J3MgYW4gZXJyb3IuICBXZSBuZWVkIHRvIGNhdGNoCisgICAgICAgdGhpcyBoZXJlLCBhbmQgbm90IHdoZW4gd2UgY2FsbCBQeVBhcnNlcl9BU1RGcm9tU3RyaW5nLCBiZWNhdXNlIHR1cm5pbmcKKyAgICAgICB0aGUgZXhwcmVzc2lvbiAnJyBpbiB0byAnKCknIHdvdWxkIGdvIGZyb20gYmVpbmcgaW52YWxpZCB0byB2YWxpZC4gKi8KKyAgICAvKiBOb3RlIHRoYXQgdGhpcyBjb2RlIHNheXMgYW4gZW1wdHkgc3RyaW5nIGlzIGFsbCB3aGl0ZXNwYWNlLiAgVGhhdCdzCisgICAgICAgaW1wb3J0YW50LiAgVGhlcmUncyBhIHRlc3QgZm9yIGl0OiBmJ3t9Jy4gKi8KKyAgICBvID0gUHlVbmljb2RlX0RlY29kZVVURjgoZXhwcl9zdGFydCwgZXhwcl9lbmQtZXhwcl9zdGFydCwgTlVMTCk7CisgICAgaWYgKG8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobyk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG8pOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShvKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKSB7CisgICAgICAgICAgICBhbGxfd2hpdGVzcGFjZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYobyk7CisgICAgaWYgKGFsbF93aGl0ZXNwYWNlKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGVtcHR5IGV4cHJlc3Npb24gbm90IGFsbG93ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogUmV1c2UgbGVuIHRvIGJlIHRoZSBsZW5ndGggb2YgdGhlIHV0Zi04IGlucHV0IHN0cmluZy4gKi8KKyAgICBsZW4gPSBleHByX2VuZCAtIGV4cHJfc3RhcnQ7CisgICAgLyogQWxsb2NhdGUgMyBleHRyYSBieXRlczogb3BlbiBwYXJlbiwgY2xvc2UgcGFyZW4sIG51bGwgYnl0ZS4gKi8KKyAgICBzdHIgPSBQeU1lbV9SYXdNYWxsb2MobGVuICsgMyk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0clswXSA9ICcoJzsKKyAgICBtZW1jcHkoc3RyKzEsIGV4cHJfc3RhcnQsIGxlbik7CisgICAgc3RyW2xlbisxXSA9ICcpJzsKKyAgICBzdHJbbGVuKzJdID0gMDsKKworICAgIGNmLmNmX2ZsYWdzID0gUHlDRl9PTkxZX0FTVDsKKyAgICBtb2QgPSBQeVBhcnNlcl9BU1RGcm9tU3RyaW5nKHN0ciwgIjxmc3RyaW5nPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ldmFsX2lucHV0LCAmY2YsIGMtPmNfYXJlbmEpOworICAgIFB5TWVtX1Jhd0ZyZWUoc3RyKTsKKyAgICBpZiAoIW1vZCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIG1vZC0+di5FeHByZXNzaW9uLmJvZHk7Cit9CisKKy8qIFJldHVybiAtMSBvbiBlcnJvci4KKworICAgUmV0dXJuIDAgaWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsaXRlcmFsLgorCisgICBSZXR1cm4gMSBpZiB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGl0ZXJhbCwgYnV0IHdlIHdhbnQKKyAgIHRoZSBjYWxsZXIgdG8gcHJvY2VzcyB0aGUgbGl0ZXJhbCB1cCB0byB0aGlzIHBvaW50LiBVc2VkIGZvcgorICAgZG91YmxlZCBicmFjZXMuCisqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2xpdGVyYWwoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipsaXRlcmFsLCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIC8qIEdldCBhbnkgbGl0ZXJhbCBzdHJpbmcuIEl0IGVuZHMgd2hlbiB3ZSBoaXQgYW4gdW4tZG91YmxlZCBsZWZ0CisgICAgICAgYnJhY2UgKHdoaWNoIGlzbid0IHBhcnQgb2YgYSB1bmljb2RlIG5hbWUgZXNjYXBlIHN1Y2ggYXMKKyAgICAgICAiXE57RVVMRVIgQ09OU1RBTlR9IiksIG9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8KKworICAgIGNvbnN0IGNoYXIgKmxpdGVyYWxfc3RhcnQgPSAqc3RyOworICAgIGNvbnN0IGNoYXIgKmxpdGVyYWxfZW5kOworICAgIGludCBpbl9uYW1lZF9lc2NhcGUgPSAwOworICAgIGludCByZXN1bHQgPSAwOworCisgICAgYXNzZXJ0KCpsaXRlcmFsID09IE5VTEwpOworICAgIGZvciAoOyAqc3RyIDwgZW5kOyAoKnN0cikrKykgeworICAgICAgICBjaGFyIGNoID0gKipzdHI7CisgICAgICAgIGlmICghaW5fbmFtZWRfZXNjYXBlICYmIGNoID09ICd7JyAmJiAoKnN0ciktbGl0ZXJhbF9zdGFydCA+PSAyICYmCisgICAgICAgICAgICAqKCpzdHItMikgPT0gJ1xcJyAmJiAqKCpzdHItMSkgPT0gJ04nKSB7CisgICAgICAgICAgICBpbl9uYW1lZF9lc2NhcGUgPSAxOworICAgICAgICB9IGVsc2UgaWYgKGluX25hbWVkX2VzY2FwZSAmJiBjaCA9PSAnfScpIHsKKyAgICAgICAgICAgIGluX25hbWVkX2VzY2FwZSA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ3snIHx8IGNoID09ICd9JykgeworICAgICAgICAgICAgLyogQ2hlY2sgZm9yIGRvdWJsZWQgYnJhY2VzLCBidXQgb25seSBhdCB0aGUgdG9wIGxldmVsLiBJZgorICAgICAgICAgICAgICAgd2UgY2hlY2tlZCBhdCBldmVyeSBsZXZlbCwgdGhlbiBmJ3swOnszfX0nIHdvdWxkIGZhaWwKKyAgICAgICAgICAgICAgIHdpdGggdGhlIHR3byBjbG9zaW5nIGJyYWNlcy4gKi8KKyAgICAgICAgICAgIGlmIChyZWN1cnNlX2x2bCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKCpzdHIrMSA8IGVuZCAmJiAqKCpzdHIrMSkgPT0gY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogV2UncmUgZ29pbmcgdG8gdGVsbCB0aGUgY2FsbGVyIHRoYXQgdGhlIGxpdGVyYWwgZW5kcworICAgICAgICAgICAgICAgICAgICAgICBoZXJlLCBidXQgdGhhdCB0aGV5IHNob3VsZCBjb250aW51ZSBzY2FubmluZy4gQnV0IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgc2tpcCBvdmVyIHRoZSBzZWNvbmQgYnJhY2Ugd2hlbiB3ZSByZXN1bWUgc2Nhbm5pbmcuICovCisgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfZW5kID0gKnN0cisxOworICAgICAgICAgICAgICAgICAgICAqc3RyICs9IDI7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBXaGVyZSBhIHNpbmdsZSAneycgaXMgdGhlIHN0YXJ0IG9mIGEgbmV3IGV4cHJlc3Npb24sIGEKKyAgICAgICAgICAgICAgICAgICBzaW5nbGUgJ30nIGlzIG5vdCBhbGxvd2VkLiAqLworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnfScpIHsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogV2UncmUgZWl0aGVyIGF0IGEgJ3snLCB3aGljaCBtZWFucyB3ZSdyZSBzdGFydGluZyBhbm90aGVyCisgICAgICAgICAgICAgICBleHByZXNzaW9uOyBvciBhICd9Jywgd2hpY2ggbWVhbnMgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGlzCisgICAgICAgICAgICAgICBmLXN0cmluZyAoZm9yIGEgbmVzdGVkIGZvcm1hdF9zcGVjKS4gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGxpdGVyYWxfZW5kID0gKnN0cjsKKyAgICBhc3NlcnQoKnN0ciA8PSBlbmQpOworICAgIGFzc2VydCgqc3RyID09IGVuZCB8fCAqKnN0ciA9PSAneycgfHwgKipzdHIgPT0gJ30nKTsKK2RvbmU6CisgICAgaWYgKGxpdGVyYWxfc3RhcnQgIT0gbGl0ZXJhbF9lbmQpIHsKKyAgICAgICAgaWYgKHJhdykKKyAgICAgICAgICAgICpsaXRlcmFsID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChsaXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfZW5kLWxpdGVyYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpsaXRlcmFsID0gZGVjb2RlX3VuaWNvZGVfd2l0aF9lc2NhcGVzKGMsIGxpdGVyYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZC1saXRlcmFsX3N0YXJ0KTsKKyAgICAgICAgaWYgKCEqbGl0ZXJhbCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBiZWNhdXNlIHBhcnNpbmcgaXMgcmVjdXJzaXZlLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfcGFyc2UoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pOworCisvKiBQYXJzZSB0aGUgZi1zdHJpbmcgYXQgKnN0ciwgZW5kaW5nIGF0IGVuZC4gIFdlIGtub3cgKnN0ciBzdGFydHMgYW4KKyAgIGV4cHJlc3Npb24gKHNvIGl0IG11c3QgYmUgYSAneycpLiBSZXR1cm5zIHRoZSBGb3JtYXR0ZWRWYWx1ZSBub2RlLAorICAgd2hpY2ggaW5jbHVkZXMgdGhlIGV4cHJlc3Npb24sIGNvbnZlcnNpb24gY2hhcmFjdGVyLCBhbmQKKyAgIGZvcm1hdF9zcGVjIGV4cHJlc3Npb24uCisKKyAgIE5vdGUgdGhhdCBJIGRvbid0IGRvIGEgcGVyZmVjdCBqb2IgaGVyZTogSSBkb24ndCBtYWtlIHN1cmUgdGhhdCBhCisgICBjbG9zaW5nIGJyYWNlIGRvZXNuJ3QgbWF0Y2ggYW4gb3BlbmluZyBwYXJlbiwgZm9yIGV4YW1wbGUuIEl0CisgICBkb2Vzbid0IG5lZWQgdG8gZXJyb3Igb24gYWxsIGludmFsaWQgZXhwcmVzc2lvbnMsIGp1c3QgY29ycmVjdGx5CisgICBmaW5kIHRoZSBlbmQgb2YgYWxsIHZhbGlkIG9uZXMuIEFueSBlcnJvcnMgaW5zaWRlIHRoZSBleHByZXNzaW9uCisgICB3aWxsIGJlIGNhdWdodCB3aGVuIHdlIHBhcnNlIGl0IGxhdGVyLiAqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2V4cHIoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICBleHByX3R5ICpleHByZXNzaW9uLCBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIC8qIFJldHVybiAtMSBvbiBlcnJvciwgZWxzZSAwLiAqLworCisgICAgY29uc3QgY2hhciAqZXhwcl9zdGFydDsKKyAgICBjb25zdCBjaGFyICpleHByX2VuZDsKKyAgICBleHByX3R5IHNpbXBsZV9leHByZXNzaW9uOworICAgIGV4cHJfdHkgZm9ybWF0X3NwZWMgPSBOVUxMOyAvKiBPcHRpb25hbCBmb3JtYXQgc3BlY2lmaWVyLiAqLworICAgIGludCBjb252ZXJzaW9uID0gLTE7IC8qIFRoZSBjb252ZXJzaW9uIGNoYXIuIC0xIGlmIG5vdCBzcGVjaWZpZWQuICovCisKKyAgICAvKiAwIGlmIHdlJ3JlIG5vdCBpbiBhIHN0cmluZywgZWxzZSB0aGUgcXVvdGUgY2hhciB3ZSdyZSB0cnlpbmcgdG8KKyAgICAgICBtYXRjaCAoc2luZ2xlIG9yIGRvdWJsZSBxdW90ZSkuICovCisgICAgY2hhciBxdW90ZV9jaGFyID0gMDsKKworICAgIC8qIElmIHdlJ3JlIGluc2lkZSBhIHN0cmluZywgMT1ub3JtYWwsIDM9dHJpcGxlLXF1b3RlZC4gKi8KKyAgICBpbnQgc3RyaW5nX3R5cGUgPSAwOworCisgICAgLyogS2VlcCB0cmFjayBvZiBuZXN0aW5nIGxldmVsIGZvciBicmFjZXMvcGFyZW5zL2JyYWNrZXRzIGluCisgICAgICAgZXhwcmVzc2lvbnMuICovCisgICAgUHlfc3NpemVfdCBuZXN0ZWRfZGVwdGggPSAwOworCisgICAgLyogQ2FuIG9ubHkgbmVzdCBvbmUgbGV2ZWwgZGVlcC4gKi8KKyAgICBpZiAocmVjdXJzZV9sdmwgPj0gMikgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHByZXNzaW9ucyBuZXN0ZWQgdG9vIGRlZXBseSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogVGhlIGZpcnN0IGNoYXIgbXVzdCBiZSBhIGxlZnQgYnJhY2UsIG9yIHdlIHdvdWxkbid0IGhhdmUgZ290dGVuCisgICAgICAgaGVyZS4gU2tpcCBvdmVyIGl0LiAqLworICAgIGFzc2VydCgqKnN0ciA9PSAneycpOworICAgICpzdHIgKz0gMTsKKworICAgIGV4cHJfc3RhcnQgPSAqc3RyOworICAgIGZvciAoOyAqc3RyIDwgZW5kOyAoKnN0cikrKykgeworICAgICAgICBjaGFyIGNoOworCisgICAgICAgIC8qIExvb3AgaW52YXJpYW50cy4gKi8KKyAgICAgICAgYXNzZXJ0KG5lc3RlZF9kZXB0aCA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KCpzdHIgPj0gZXhwcl9zdGFydCAmJiAqc3RyIDwgZW5kKTsKKyAgICAgICAgaWYgKHF1b3RlX2NoYXIpCisgICAgICAgICAgICBhc3NlcnQoc3RyaW5nX3R5cGUgPT0gMSB8fCBzdHJpbmdfdHlwZSA9PSAzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KHN0cmluZ190eXBlID09IDApOworCisgICAgICAgIGNoID0gKipzdHI7CisgICAgICAgIC8qIE5vd2hlcmUgaW5zaWRlIGFuIGV4cHJlc3Npb24gaXMgYSBiYWNrc2xhc2ggYWxsb3dlZC4gKi8KKyAgICAgICAgaWYgKGNoID09ICdcXCcpIHsKKyAgICAgICAgICAgIC8qIEVycm9yOiBjYW4ndCBpbmNsdWRlIGEgYmFja3NsYXNoIGNoYXJhY3RlciwgaW5zaWRlCisgICAgICAgICAgICAgICBwYXJlbnMgb3Igc3RyaW5ncyBvciBub3QuICovCisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBpbmNsdWRlIGEgYmFja3NsYXNoIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHF1b3RlX2NoYXIpIHsKKyAgICAgICAgICAgIC8qIFdlJ3JlIGluc2lkZSBhIHN0cmluZy4gU2VlIGlmIHdlJ3JlIGF0IHRoZSBlbmQuICovCisgICAgICAgICAgICAvKiBUaGlzIGNvZGUgbmVlZHMgdG8gaW1wbGVtZW50IHRoZSBzYW1lIG5vbi1lcnJvciBsb2dpYworICAgICAgICAgICAgICAgYXMgdG9rX2dldCBmcm9tIHRva2VuaXplci5jLCBhdCB0aGUgbGV0dGVyX3F1b3RlCisgICAgICAgICAgICAgICBsYWJlbC4gVG8gYWN0dWFsbHkgc2hhcmUgdGhhdCBjb2RlIHdvdWxkIGJlIGEKKyAgICAgICAgICAgICAgIG5pZ2h0bWFyZS4gQnV0LCBpdCdzIHVubGlrZWx5IHRvIGNoYW5nZSBhbmQgaXMgc21hbGwsCisgICAgICAgICAgICAgICBzbyBkdXBsaWNhdGUgaXQgaGVyZS4gTm90ZSB3ZSBkb24ndCBuZWVkIHRvIGNhdGNoIGFsbAorICAgICAgICAgICAgICAgb2YgdGhlIGVycm9ycywgc2luY2UgdGhleSdsbCBiZSBjYXVnaHQgd2hlbiBwYXJzaW5nIHRoZQorICAgICAgICAgICAgICAgZXhwcmVzc2lvbi4gV2UganVzdCBuZWVkIHRvIG1hdGNoIHRoZSBub24tZXJyb3IKKyAgICAgICAgICAgICAgIGNhc2VzLiBUaHVzIHdlIGNhbiBpZ25vcmUgXG4gaW4gc2luZ2xlLXF1b3RlZCBzdHJpbmdzLAorICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUuIE9yIG5vbi10ZXJtaW5hdGVkIHN0cmluZ3MuICovCisgICAgICAgICAgICBpZiAoY2ggPT0gcXVvdGVfY2hhcikgeworICAgICAgICAgICAgICAgIC8qIERvZXMgdGhpcyBtYXRjaCB0aGUgc3RyaW5nX3R5cGUgKHNpbmdsZSBvciB0cmlwbGUKKyAgICAgICAgICAgICAgICAgICBxdW90ZWQpPyAqLworICAgICAgICAgICAgICAgIGlmIChzdHJpbmdfdHlwZSA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgqc3RyKzIgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoICYmICooKnN0cisyKSA9PSBjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogV2UncmUgYXQgdGhlIGVuZCBvZiBhIHRyaXBsZSBxdW90ZWQgc3RyaW5nLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciArPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfY2hhciA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgYSBub3JtYWwgc3RyaW5nLiAqLworICAgICAgICAgICAgICAgICAgICBxdW90ZV9jaGFyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAwOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1wnJyB8fCBjaCA9PSAnIicpIHsKKyAgICAgICAgICAgIC8qIElzIHRoaXMgYSB0cmlwbGUgcXVvdGVkIHN0cmluZz8gKi8KKyAgICAgICAgICAgIGlmICgqc3RyKzIgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoICYmICooKnN0cisyKSA9PSBjaCkgeworICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMzsKKyAgICAgICAgICAgICAgICAqc3RyICs9IDI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIFN0YXJ0IG9mIGEgbm9ybWFsIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBTdGFydCBsb29raW5nIGZvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovCisgICAgICAgICAgICBxdW90ZV9jaGFyID0gY2g7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1snIHx8IGNoID09ICd7JyB8fCBjaCA9PSAnKCcpIHsKKyAgICAgICAgICAgIG5lc3RlZF9kZXB0aCsrOworICAgICAgICB9IGVsc2UgaWYgKG5lc3RlZF9kZXB0aCAhPSAwICYmCisgICAgICAgICAgICAgICAgICAgKGNoID09ICddJyB8fCBjaCA9PSAnfScgfHwgY2ggPT0gJyknKSkgeworICAgICAgICAgICAgbmVzdGVkX2RlcHRoLS07CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJyMnKSB7CisgICAgICAgICAgICAvKiBFcnJvcjogY2FuJ3QgaW5jbHVkZSBhIGNvbW1lbnQgY2hhcmFjdGVyLCBpbnNpZGUgcGFyZW5zCisgICAgICAgICAgICAgICBvciBub3QuICovCisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCBjYW5ub3QgaW5jbHVkZSAnIyciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXN0ZWRfZGVwdGggPT0gMCAmJgorICAgICAgICAgICAgICAgICAgIChjaCA9PSAnIScgfHwgY2ggPT0gJzonIHx8IGNoID09ICd9JykpIHsKKyAgICAgICAgICAgIC8qIEZpcnN0LCB0ZXN0IGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mICIhPSIuIFNpbmNlICc9JyBpcworICAgICAgICAgICAgICAgbm90IGFuIGFsbG93ZWQgY29udmVyc2lvbiBjaGFyYWN0ZXIsIG5vdGhpbmcgaXMgbG9zdCBpbgorICAgICAgICAgICAgICAgdGhpcyB0ZXN0LiAqLworICAgICAgICAgICAgaWYgKGNoID09ICchJyAmJiAqc3RyKzEgPCBlbmQgJiYgKigqc3RyKzEpID09ICc9JykgeworICAgICAgICAgICAgICAgIC8qIFRoaXMgaXNuJ3QgYSBjb252ZXJzaW9uIGNoYXJhY3RlciwganVzdCBjb250aW51ZS4gKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIE5vcm1hbCB3YXkgb3V0IG9mIHRoaXMgbG9vcC4gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogSnVzdCBjb25zdW1lIHRoaXMgY2hhciBhbmQgbG9vcCBhcm91bmQuICovCisgICAgICAgIH0KKyAgICB9CisgICAgZXhwcl9lbmQgPSAqc3RyOworICAgIC8qIElmIHdlIGxlYXZlIHRoaXMgbG9vcCBpbiBhIHN0cmluZyBvciB3aXRoIG1pc21hdGNoZWQgcGFyZW5zLCB3ZQorICAgICAgIGRvbid0IGNhcmUuIFdlJ2xsIGdldCBhIHN5bnRheCBlcnJvciB3aGVuIGNvbXBpbGluZyB0aGUKKyAgICAgICBleHByZXNzaW9uLiBCdXQsIHdlIGNhbiBwcm9kdWNlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UsIHNvCisgICAgICAgbGV0J3MganVzdCBkbyB0aGF0LiovCisgICAgaWYgKHF1b3RlX2NoYXIpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuZXN0ZWRfZGVwdGgpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogbWlzbWF0Y2hlZCAnKCcsICd7Jywgb3IgJ1snIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworCisgICAgLyogQ29tcGlsZSB0aGUgZXhwcmVzc2lvbiBhcyBzb29uIGFzIHBvc3NpYmxlLCBzbyB3ZSBzaG93IGVycm9ycworICAgICAgIHJlbGF0ZWQgdG8gdGhlIGV4cHJlc3Npb24gYmVmb3JlIGVycm9ycyByZWxhdGVkIHRvIHRoZQorICAgICAgIGNvbnZlcnNpb24gb3IgZm9ybWF0X3NwZWMuICovCisgICAgc2ltcGxlX2V4cHJlc3Npb24gPSBmc3RyaW5nX2NvbXBpbGVfZXhwcihleHByX3N0YXJ0LCBleHByX2VuZCwgYywgbik7CisgICAgaWYgKCFzaW1wbGVfZXhwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogQ2hlY2sgZm9yIGEgY29udmVyc2lvbiBjaGFyLCBpZiBwcmVzZW50LiAqLworICAgIGlmICgqKnN0ciA9PSAnIScpIHsKKyAgICAgICAgKnN0ciArPSAxOworICAgICAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKworICAgICAgICBjb252ZXJzaW9uID0gKipzdHI7CisgICAgICAgICpzdHIgKz0gMTsKKworICAgICAgICAvKiBWYWxpZGF0ZSB0aGUgY29udmVyc2lvbi4gKi8KKyAgICAgICAgaWYgKCEoY29udmVyc2lvbiA9PSAncycgfHwgY29udmVyc2lvbiA9PSAncicKKyAgICAgICAgICAgICAgfHwgY29udmVyc2lvbiA9PSAnYScpKSB7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBpbnZhbGlkIGNvbnZlcnNpb24gY2hhcmFjdGVyOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICdzJywgJ3InLCBvciAnYSciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENoZWNrIGZvciB0aGUgZm9ybWF0IHNwZWMsIGlmIHByZXNlbnQuICovCisgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKyAgICBpZiAoKipzdHIgPT0gJzonKSB7CisgICAgICAgICpzdHIgKz0gMTsKKyAgICAgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAgICAgLyogUGFyc2UgdGhlIGZvcm1hdCBzcGVjLiAqLworICAgICAgICBmb3JtYXRfc3BlYyA9IGZzdHJpbmdfcGFyc2Uoc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwrMSwgYywgbik7CisgICAgICAgIGlmICghZm9ybWF0X3NwZWMpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCpzdHIgPj0gZW5kIHx8ICoqc3RyICE9ICd9JykKKyAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAvKiBXZSdyZSBhdCBhIHJpZ2h0IGJyYWNlLiBDb25zdW1lIGl0LiAqLworICAgIGFzc2VydCgqc3RyIDwgZW5kKTsKKyAgICBhc3NlcnQoKipzdHIgPT0gJ30nKTsKKyAgICAqc3RyICs9IDE7CisKKyAgICAvKiBBbmQgbm93IGNyZWF0ZSB0aGUgRm9ybWF0dGVkVmFsdWUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhpcworICAgICAgIGVudGlyZSBleHByZXNzaW9uIHdpdGggdGhlIGNvbnZlcnNpb24gYW5kIGZvcm1hdCBzcGVjLiAqLworICAgICpleHByZXNzaW9uID0gRm9ybWF0dGVkVmFsdWUoc2ltcGxlX2V4cHJlc3Npb24sIGNvbnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlYywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKKyAgICBpZiAoISpleHByZXNzaW9uKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKKwordW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOgorICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qIFJldHVybiAtMSBvbiBlcnJvci4KKworICAgUmV0dXJuIDAgaWYgd2UgaGF2ZSBhIGxpdGVyYWwgKHBvc3NpYmxlIHplcm8gbGVuZ3RoKSBhbmQgYW4KKyAgIGV4cHJlc3Npb24gKHplcm8gbGVuZ3RoIGlmIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KKworICAgUmV0dXJuIDEgaWYgd2UgaGF2ZSBhIGxpdGVyYWwsIGJ1dCBubyBleHByZXNzaW9uLCBhbmQgd2Ugd2FudCB0aGUKKyAgIGNhbGxlciB0byBjYWxsIHVzIGFnYWluLiBUaGlzIGlzIHVzZWQgdG8gZGVhbCB3aXRoIGRvdWJsZWQKKyAgIGJyYWNlcy4KKworICAgV2hlbiBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHN0cmluZyAnYXt7YnswfWMnLCB0aGlzIGZ1bmN0aW9uCisgICB3aWxsIHJldHVybjoKKworICAgMS4gdGhlIGxpdGVyYWwgJ2F7JyB3aXRoIG5vIGV4cHJlc3Npb24sIGFuZCBhIHJldHVybiB2YWx1ZQorICAgICAgb2YgMS4gRGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHRoZXJlJ3Mgbm8gZXhwcmVzc2lvbiwgdGhlIHJldHVybgorICAgICAgdmFsdWUgb2YgMSBtZWFucyB3ZSdyZSBub3QgZmluaXNoZWQgeWV0LgorCisgICAyLiB0aGUgbGl0ZXJhbCAnYicgYW5kIHRoZSBleHByZXNzaW9uICcwJywgd2l0aCBhIHJldHVybiB2YWx1ZSBvZgorICAgICAgMC4gVGhlIGZhY3QgdGhhdCB0aGVyZSdzIGFuIGV4cHJlc3Npb24gbWVhbnMgd2UncmUgbm90IGZpbmlzaGVkLgorCisgICAzLiBsaXRlcmFsICdjJyB3aXRoIG5vIGV4cHJlc3Npb24gYW5kIGEgcmV0dXJuIHZhbHVlIG9mIDAuIFRoZQorICAgICAgY29tYmluYXRpb24gb2YgdGhlIHJldHVybiB2YWx1ZSBvZiAwIHdpdGggbm8gZXhwcmVzc2lvbiBtZWFucworICAgICAgd2UncmUgZmluaXNoZWQuCisqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2xpdGVyYWxfYW5kX2V4cHIoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlY3Vyc2VfbHZsLCBQeU9iamVjdCAqKmxpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5ICpleHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBpbnQgcmVzdWx0OworCisgICAgYXNzZXJ0KCpsaXRlcmFsID09IE5VTEwgJiYgKmV4cHJlc3Npb24gPT0gTlVMTCk7CisKKyAgICAvKiBHZXQgYW55IGxpdGVyYWwgc3RyaW5nLiAqLworICAgIHJlc3VsdCA9IGZzdHJpbmdfZmluZF9saXRlcmFsKHN0ciwgZW5kLCByYXcsIGxpdGVyYWwsIHJlY3Vyc2VfbHZsLCBjLCBuKTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGFzc2VydChyZXN1bHQgPT0gMCB8fCByZXN1bHQgPT0gMSk7CisKKyAgICBpZiAocmVzdWx0ID09IDEpCisgICAgICAgIC8qIFdlIGhhdmUgYSBsaXRlcmFsLCBidXQgZG9uJ3QgbG9vayBhdCB0aGUgZXhwcmVzc2lvbi4gKi8KKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoKnN0ciA+PSBlbmQgfHwgKipzdHIgPT0gJ30nKQorICAgICAgICAvKiBXZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgdGhlIGVuZCBvZiBhIG5lc3RlZAorICAgICAgICAgICBmLXN0cmluZzogbm8gZXhwcmVzc2lvbi4gVGhlIHRvcC1sZXZlbCBlcnJvciBjYXNlIHdoZXJlIHdlCisgICAgICAgICAgIGV4cGVjdCB0byBiZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYnV0IHdlJ3JlIGF0IGEgJ30nIGlzCisgICAgICAgICAgIGhhbmRsZWQgbGF0ZXIuICovCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogV2UgbXVzdCBub3cgYmUgdGhlIHN0YXJ0IG9mIGFuIGV4cHJlc3Npb24sIG9uIGEgJ3snLiAqLworICAgIGFzc2VydCgqKnN0ciA9PSAneycpOworCisgICAgaWYgKGZzdHJpbmdfZmluZF9leHByKHN0ciwgZW5kLCByYXcsIHJlY3Vyc2VfbHZsLCBleHByZXNzaW9uLCBjLCBuKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoKmxpdGVyYWwpOworICAgIHJldHVybiAtMTsKK30KKworI2RlZmluZSBFWFBSTElTVF9OX0NBQ0hFRCAgNjQKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIEluY3JlbWVudGFsbHkgYnVpbGQgYW4gYXJyYXkgb2YgZXhwcl90eSwgc28gYmUgdXNlZCBpbiBhbgorICAgICAgIGFzZGxfc2VxLiBDYWNoZSBzb21lIHNtYWxsIGJ1dCByZWFzb25hYmx5IHNpemVkIG51bWJlciBvZgorICAgICAgIGV4cHJfdHkncywgYW5kIHRoZW4gYWZ0ZXIgdGhhdCBzdGFydCBkeW5hbWljYWxseSBhbGxvY2F0aW5nLAorICAgICAgIGRvdWJsaW5nIHRoZSBudW1iZXIgYWxsb2NhdGVkIGVhY2ggdGltZS4gTm90ZSB0aGF0IHRoZSBmLXN0cmluZworICAgICAgIGYnezB9YXsxfScgY29udGFpbnMgMyBleHByX3R5J3M6IDIgRm9ybWF0dGVkVmFsdWUncywgYW5kIG9uZQorICAgICAgIFN0ciBmb3IgdGhlIGxpdGVyYWwgJ2EnLiBTbyB5b3UgYWRkIGV4cHJfdHkncyBhYm91dCB0d2ljZSBhcworICAgICAgIGZhc3QgYXMgeW91IGFkZCBleHJlc3Npb25zIGluIGFuIGYtc3RyaW5nLiAqLworCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7ICAvKiBOdW1iZXIgd2UndmUgYWxsb2NhdGVkLiAqLworICAgIFB5X3NzaXplX3Qgc2l6ZTsgICAgICAgLyogTnVtYmVyIHdlJ3ZlIHVzZWQuICovCisgICAgZXhwcl90eSAgICAqcDsgICAgICAgICAvKiBQb2ludGVyIHRvIHRoZSBtZW1vcnkgd2UncmUgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nLiBXaWxsIHBvaW50IHRvICdkYXRhJyB1bnRpbCB3ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgZHluYW1pY2FsbHkgYWxsb2NhdGluZy4gKi8KKyAgICBleHByX3R5ICAgIGRhdGFbRVhQUkxJU1RfTl9DQUNIRURdOworfSBFeHByTGlzdDsKKworI2lmZGVmIE5ERUJVRworI2RlZmluZSBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpCisjZWxzZQorc3RhdGljIHZvaWQKK0V4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMoRXhwckxpc3QgKmwpCit7CisgICAgLyogQ2hlY2sgb3VyIGludmFyaWFudHMuIE1ha2Ugc3VyZSB0aGlzIG9iamVjdCBpcyAibGl2ZSIsIGFuZAorICAgICAgIGhhc24ndCBiZWVuIGRlYWxsb2NhdGVkLiAqLworICAgIGFzc2VydChsLT5zaXplID49IDApOworICAgIGFzc2VydChsLT5wICE9IE5VTEwpOworICAgIGlmIChsLT5zaXplIDw9IEVYUFJMSVNUX05fQ0FDSEVEKQorICAgICAgICBhc3NlcnQobC0+ZGF0YSA9PSBsLT5wKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZAorRXhwckxpc3RfSW5pdChFeHByTGlzdCAqbCkKK3sKKyAgICBsLT5hbGxvY2F0ZWQgPSBFWFBSTElTVF9OX0NBQ0hFRDsKKyAgICBsLT5zaXplID0gMDsKKworICAgIC8qIFVudGlsIHdlIHN0YXJ0IGFsbG9jYXRpbmcgZHluYW1pY2FsbHksIHAgcG9pbnRzIHRvIGRhdGEuICovCisgICAgbC0+cCA9IGwtPmRhdGE7CisKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworfQorCitzdGF0aWMgaW50CitFeHByTGlzdF9BcHBlbmQoRXhwckxpc3QgKmwsIGV4cHJfdHkgZXhwKQoreworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCk7CisgICAgaWYgKGwtPnNpemUgPj0gbC0+YWxsb2NhdGVkKSB7CisgICAgICAgIC8qIFdlIG5lZWQgdG8gYWxsb2MgKG9yIHJlYWxsb2MpIHRoZSBtZW1vcnkuICovCisgICAgICAgIFB5X3NzaXplX3QgbmV3X3NpemUgPSBsLT5hbGxvY2F0ZWQgKiAyOworCisgICAgICAgIC8qIFNlZSBpZiB3ZSd2ZSBldmVyIGFsbG9jYXRlZCBhbnl0aGluZyBkeW5hbWljYWxseS4gKi8KKyAgICAgICAgaWYgKGwtPnAgPT0gbC0+ZGF0YSkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgLyogV2UncmUgc3RpbGwgdXNpbmcgdGhlIGNhY2hlZCBkYXRhLiBTd2l0Y2ggdG8KKyAgICAgICAgICAgICAgIGFsbG9jLWluZy4gKi8KKyAgICAgICAgICAgIGwtPnAgPSBQeU1lbV9SYXdNYWxsb2Moc2l6ZW9mKGV4cHJfdHkpICogbmV3X3NpemUpOworICAgICAgICAgICAgaWYgKCFsLT5wKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIC8qIENvcHkgdGhlIGNhY2hlZCBkYXRhIGludG8gdGhlIG5ldyBidWZmZXIuICovCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbC0+c2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIGwtPnBbaV0gPSBsLT5kYXRhW2ldOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogSnVzdCByZWFsbG9jLiAqLworICAgICAgICAgICAgZXhwcl90eSAqdG1wID0gUHlNZW1fUmF3UmVhbGxvYyhsLT5wLCBzaXplb2YoZXhwcl90eSkgKiBuZXdfc2l6ZSk7CisgICAgICAgICAgICBpZiAoIXRtcCkgeworICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobC0+cCk7CisgICAgICAgICAgICAgICAgbC0+cCA9IE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbC0+cCA9IHRtcDsKKyAgICAgICAgfQorCisgICAgICAgIGwtPmFsbG9jYXRlZCA9IG5ld19zaXplOworICAgICAgICBhc3NlcnQobC0+YWxsb2NhdGVkID09IDIgKiBsLT5zaXplKTsKKyAgICB9CisKKyAgICBsLT5wW2wtPnNpemUrK10gPSBleHA7CisKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorRXhwckxpc3RfRGVhbGxvYyhFeHByTGlzdCAqbCkKK3sKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworCisgICAgLyogSWYgdGhlcmUncyBiZWVuIGFuIGVycm9yLCBvciB3ZSd2ZSBuZXZlciBkeW5hbWljYWxseSBhbGxvY2F0ZWQsCisgICAgICAgZG8gbm90aGluZy4gKi8KKyAgICBpZiAoIWwtPnAgfHwgbC0+cCA9PSBsLT5kYXRhKSB7CisgICAgICAgIC8qIERvIG5vdGhpbmcuICovCisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2UgaGF2ZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQuIEZyZWUgdGhlIG1lbW9yeS4gKi8KKyAgICAgICAgUHlNZW1fUmF3RnJlZShsLT5wKTsKKyAgICB9CisgICAgbC0+cCA9IE5VTEw7CisgICAgbC0+c2l6ZSA9IC0xOworfQorCitzdGF0aWMgYXNkbF9zZXEgKgorRXhwckxpc3RfRmluaXNoKEV4cHJMaXN0ICpsLCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBhc2RsX3NlcSAqc2VxOworCisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKKworICAgIC8qIEFsbG9jYXRlIHRoZSBhc2RsX3NlcSBhbmQgY29weSB0aGUgZXhwcmVzc2lvbnMgaW4gdG8gaXQuICovCisgICAgc2VxID0gX1B5X2FzZGxfc2VxX25ldyhsLT5zaXplLCBhcmVuYSk7CisgICAgaWYgKHNlcSkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsLT5zaXplOyBpKyspCisgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc2VxLCBpLCBsLT5wW2ldKTsKKyAgICB9CisgICAgRXhwckxpc3RfRGVhbGxvYyhsKTsKKyAgICByZXR1cm4gc2VxOworfQorCisvKiBUaGUgRnN0cmluZ1BhcnNlciBpcyBkZXNpZ25lZCB0byBhZGQgYSBtaXggb2Ygc3RyaW5ncyBhbmQKKyAgIGYtc3RyaW5ncywgYW5kIGNvbmNhdCB0aGVtIHRvZ2V0aGVyIGFzIG5lZWRlZC4gVWx0aW1hdGVseSwgaXQKKyAgIGdlbmVyYXRlcyBhbiBleHByX3R5LiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpsYXN0X3N0cjsKKyAgICBFeHByTGlzdCBleHByX2xpc3Q7Cit9IEZzdHJpbmdQYXJzZXI7CisKKyNpZmRlZiBOREVCVUcKKyNkZWZpbmUgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKQorI2Vsc2UKK3N0YXRpYyB2b2lkCitGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoRnN0cmluZ1BhcnNlciAqc3RhdGUpCit7CisgICAgaWYgKHN0YXRlLT5sYXN0X3N0cikKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXRlLT5sYXN0X3N0cikpOworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMoJnN0YXRlLT5leHByX2xpc3QpOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkCitGc3RyaW5nUGFyc2VyX0luaXQoRnN0cmluZ1BhcnNlciAqc3RhdGUpCit7CisgICAgc3RhdGUtPmxhc3Rfc3RyID0gTlVMTDsKKyAgICBFeHByTGlzdF9Jbml0KCZzdGF0ZS0+ZXhwcl9saXN0KTsKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorRnN0cmluZ1BhcnNlcl9EZWFsbG9jKEZzdHJpbmdQYXJzZXIgKnN0YXRlKQoreworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisKKyAgICBQeV9YREVDUkVGKHN0YXRlLT5sYXN0X3N0cik7CisgICAgRXhwckxpc3RfRGVhbGxvYygmc3RhdGUtPmV4cHJfbGlzdCk7Cit9CisKKy8qIE1ha2UgYSBTdHIgbm9kZSwgYnV0IGRlY3JlZiB0aGUgUHlVbmljb2RlIG9iamVjdCBiZWluZyBhZGRlZC4gKi8KK3N0YXRpYyBleHByX3R5CittYWtlX3N0cl9ub2RlX2FuZF9kZWwoUHlPYmplY3QgKipzdHIsIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUqIG4pCit7CisgICAgUHlPYmplY3QgKnMgPSAqc3RyOworICAgICpzdHIgPSBOVUxMOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSk7CisgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgcykgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBTdHIocywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworfQorCisvKiBBZGQgYSBub24tZi1zdHJpbmcgKHRoYXQgaXMsIGEgcmVndWxhciBsaXRlcmFsIHN0cmluZykuIHN0ciBpcworICAgZGVjcmVmJ2QuICovCitzdGF0aWMgaW50CitGc3RyaW5nUGFyc2VyX0NvbmNhdEFuZERlbChGc3RyaW5nUGFyc2VyICpzdGF0ZSwgUHlPYmplY3QgKnN0cikKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KHN0cikpOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPT0gMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgLyogV2UgZGlkbid0IGhhdmUgYSBzdHJpbmcgYmVmb3JlLCBzbyBqdXN0IHJlbWVtYmVyIHRoaXMgb25lLiAqLworICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBzdHI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogQ29uY2F0ZW5hdGUgdGhpcyB3aXRoIHRoZSBwcmV2aW91cyBzdHJpbmcuICovCisgICAgICAgIFB5VW5pY29kZV9BcHBlbmRBbmREZWwoJnN0YXRlLT5sYXN0X3N0ciwgc3RyKTsKKyAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFBhcnNlIGFuIGYtc3RyaW5nLiBUaGUgZi1zdHJpbmcgaXMgaW4gKnN0ciB0byBlbmQsIHdpdGggbm8KKyAgICdmJyBvciBxdW90ZXMuICovCitzdGF0aWMgaW50CitGc3RyaW5nUGFyc2VyX0NvbmNhdEZzdHJpbmcoRnN0cmluZ1BhcnNlciAqc3RhdGUsIGNvbnN0IGNoYXIgKipzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgLyogUGFyc2UgdGhlIGYtc3RyaW5nLiAqLworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFB5T2JqZWN0ICpsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgZXhwcl90eSBleHByZXNzaW9uID0gTlVMTDsKKworICAgICAgICAvKiBJZiB0aGVyZSdzIGEgemVybyBsZW5ndGggbGl0ZXJhbCBpbiBmcm9udCBvZiB0aGUKKyAgICAgICAgICAgZXhwcmVzc2lvbiwgbGl0ZXJhbCB3aWxsIGJlIE5VTEwuIElmIHdlJ3JlIGF0IHRoZSBlbmQgb2YKKyAgICAgICAgICAgdGhlIGYtc3RyaW5nLCBleHByZXNzaW9uIHdpbGwgYmUgTlVMTCAodW5sZXNzIHJlc3VsdCA9PSAxLAorICAgICAgICAgICBzZWUgYmVsb3cpLiAqLworICAgICAgICBpbnQgcmVzdWx0ID0gZnN0cmluZ19maW5kX2xpdGVyYWxfYW5kX2V4cHIoc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGl0ZXJhbCwgJmV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLCBuKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgLyogQWRkIHRoZSBsaXRlcmFsLCBpZiBhbnkuICovCisgICAgICAgIGlmICghbGl0ZXJhbCkgeworICAgICAgICAgICAgLyogRG8gbm90aGluZy4gSnVzdCBsZWF2ZSBsYXN0X3N0ciBhbG9uZSAoYW5kIHBvc3NpYmx5CisgICAgICAgICAgICAgICBOVUxMKS4gKi8KKyAgICAgICAgfSBlbHNlIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBsaXRlcmFsOworICAgICAgICAgICAgbGl0ZXJhbCA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBXZSBoYXZlIGEgbGl0ZXJhbCwgY29uY2F0ZW5hdGUgaXQuICovCisgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgobGl0ZXJhbCkgIT0gMCk7CisgICAgICAgICAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoc3RhdGUsIGxpdGVyYWwpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoIXN0YXRlLT5sYXN0X3N0ciB8fAorICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RhdGUtPmxhc3Rfc3RyKSAhPSAwKTsKKworICAgICAgICAvKiBXZSd2ZSBkZWFsdCB3aXRoIHRoZSBsaXRlcmFsIG5vdy4gSXQgY2FuJ3QgYmUgbGVha2VkIG9uIGZ1cnRoZXIKKyAgICAgICAgICAgZXJyb3JzLiAqLworICAgICAgICBhc3NlcnQobGl0ZXJhbCA9PSBOVUxMKTsKKworICAgICAgICAvKiBTZWUgaWYgd2Ugc2hvdWxkIGp1c3QgbG9vcCBhcm91bmQgdG8gZ2V0IHRoZSBuZXh0IGxpdGVyYWwKKyAgICAgICAgICAgYW5kIGV4cHJlc3Npb24sIHdoaWxlIGlnbm9yaW5nIHRoZSBleHByZXNzaW9uIHRoaXMKKyAgICAgICAgICAgdGltZS4gVGhpcyBpcyB1c2VkIGZvciB1bi1kb3VibGluZyBicmFjZXMsIGFzIGFuCisgICAgICAgICAgIG9wdGltaXphdGlvbi4gKi8KKyAgICAgICAgaWYgKHJlc3VsdCA9PSAxKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoaXMgZi1zdHJpbmcuICovCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBXZSBrbm93IHdlIGhhdmUgYW4gZXhwcmVzc2lvbi4gQ29udmVydCBhbnkgZXhpc3Rpbmcgc3RyaW5nCisgICAgICAgICAgIHRvIGEgU3RyIG5vZGUuICovCisgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICAvKiBEbyBub3RoaW5nLiBObyBwcmV2aW91cyBsaXRlcmFsLiAqLworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogQ29udmVydCB0aGUgZXhpc3RpbmcgbGFzdF9zdHIgbGl0ZXJhbCB0byBhIFN0ciBub2RlLiAqLworICAgICAgICAgICAgZXhwcl90eSBzdHIgPSBtYWtlX3N0cl9ub2RlX2FuZF9kZWwoJnN0YXRlLT5sYXN0X3N0ciwgYywgbik7CisgICAgICAgICAgICBpZiAoIXN0ciB8fCBFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIHN0cikgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIGV4cHJlc3Npb24pIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBJZiByZWN1cnNlX2x2bCBpcyB6ZXJvLCB0aGVuIHdlIG11c3QgYmUgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICBzdHJpbmcuIE90aGVyd2lzZSwgd2UgbXVzdCBiZSBhdCBhIHJpZ2h0IGJyYWNlLiAqLworCisgICAgaWYgKHJlY3Vyc2VfbHZsID09IDAgJiYgKnN0ciA8IGVuZC0xKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IHVuZXhwZWN0ZWQgZW5kIG9mIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChyZWN1cnNlX2x2bCAhPSAwICYmICoqc3RyICE9ICd9JykgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworICAgIHJldHVybiAwOworfQorCisvKiBDb252ZXJ0IHRoZSBwYXJ0aWFsIHN0YXRlIHJlZmxlY3RlZCBpbiBsYXN0X3N0ciBhbmQgZXhwcl9saXN0IHRvIGFuCisgICBleHByX3R5LiBUaGUgZXhwcl90eSBjYW4gYmUgYSBTdHIsIG9yIGEgSm9pbmVkU3RyLiAqLworc3RhdGljIGV4cHJfdHkKK0ZzdHJpbmdQYXJzZXJfRmluaXNoKEZzdHJpbmdQYXJzZXIgKnN0YXRlLCBzdHJ1Y3QgY29tcGlsaW5nICpjLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBhc2RsX3NlcSAqc2VxOworCisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKworICAgIC8qIElmIHdlJ3JlIGp1c3QgYSBjb25zdGFudCBzdHJpbmcgd2l0aCBubyBleHByZXNzaW9ucywgcmV0dXJuCisgICAgICAgdGhhdC4gKi8KKyAgICBpZihzdGF0ZS0+ZXhwcl9saXN0LnNpemUgPT0gMCkgeworICAgICAgICBpZiAoIXN0YXRlLT5sYXN0X3N0cikgeworICAgICAgICAgICAgLyogQ3JlYXRlIGEgemVybyBsZW5ndGggc3RyaW5nLiAqLworICAgICAgICAgICAgc3RhdGUtPmxhc3Rfc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgICAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWFrZV9zdHJfbm9kZV9hbmRfZGVsKCZzdGF0ZS0+bGFzdF9zdHIsIGMsIG4pOworICAgIH0KKworICAgIC8qIENyZWF0ZSBhIFN0ciBub2RlIG91dCBvZiBsYXN0X3N0ciwgaWYgbmVlZGVkLiBJdCB3aWxsIGJlIHRoZQorICAgICAgIGxhc3Qgbm9kZSBpbiBvdXIgZXhwcmVzc2lvbiBsaXN0LiAqLworICAgIGlmIChzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgZXhwcl90eSBzdHIgPSBtYWtlX3N0cl9ub2RlX2FuZF9kZWwoJnN0YXRlLT5sYXN0X3N0ciwgYywgbik7CisgICAgICAgIGlmICghc3RyIHx8IEV4cHJMaXN0X0FwcGVuZCgmc3RhdGUtPmV4cHJfbGlzdCwgc3RyKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAvKiBUaGlzIGhhcyBhbHJlYWR5IGJlZW4gZnJlZWQuICovCisgICAgYXNzZXJ0KHN0YXRlLT5sYXN0X3N0ciA9PSBOVUxMKTsKKworICAgIHNlcSA9IEV4cHJMaXN0X0ZpbmlzaCgmc3RhdGUtPmV4cHJfbGlzdCwgYy0+Y19hcmVuYSk7CisgICAgaWYgKCFzZXEpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBJZiB0aGVyZSdzIG9ubHkgb25lIGV4cHJlc3Npb24sIHJldHVybiBpdC4gT3RoZXJ3aXNlLCB3ZSBuZWVkCisgICAgICAgdG8gam9pbiB0aGVtIHRvZ2V0aGVyLiAqLworICAgIGlmIChzZXEtPnNpemUgPT0gMSkKKyAgICAgICAgcmV0dXJuIHNlcS0+ZWxlbWVudHNbMF07CisKKyAgICByZXR1cm4gSm9pbmVkU3RyKHNlcSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworCitlcnJvcjoKKyAgICBGc3RyaW5nUGFyc2VyX0RlYWxsb2Moc3RhdGUpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBHaXZlbiBhbiBmLXN0cmluZyAod2l0aCBubyAnZicgb3IgcXVvdGVzKSB0aGF0J3MgaW4gKnN0ciBhbmQgZW5kcworICAgYXQgZW5kLCBwYXJzZSBpdCBpbnRvIGFuIGV4cHJfdHkuICBSZXR1cm4gTlVMTCBvbiBlcnJvci4gIEFkanVzdAorICAgc3RyIHRvIHBvaW50IHBhc3QgdGhlIHBhcnNlZCBwb3J0aW9uLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfcGFyc2UoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgRnN0cmluZ1BhcnNlciBzdGF0ZTsKKworICAgIEZzdHJpbmdQYXJzZXJfSW5pdCgmc3RhdGUpOworICAgIGlmIChGc3RyaW5nUGFyc2VyX0NvbmNhdEZzdHJpbmcoJnN0YXRlLCBzdHIsIGVuZCwgcmF3LCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMsIG4pIDwgMCkgeworICAgICAgICBGc3RyaW5nUGFyc2VyX0RlYWxsb2MoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIEZzdHJpbmdQYXJzZXJfRmluaXNoKCZzdGF0ZSwgYywgbik7Cit9CisKKy8qIG4gaXMgYSBQeXRob24gc3RyaW5nIGxpdGVyYWwsIGluY2x1ZGluZyB0aGUgYnJhY2tldGluZyBxdW90ZQorICAgY2hhcmFjdGVycywgYW5kIHIsIGIsIHUsICYvb3IgZiBwcmVmaXhlcyAoaWYgYW55KSwgYW5kIGVtYmVkZGVkCisgICBlc2NhcGUgc2VxdWVuY2VzIChpZiBhbnkpLiBwYXJzZXN0ciBwYXJzZXMgaXQsIGFuZCBzZXRzICpyZXN1bHQgdG8KKyAgIGRlY29kZWQgUHl0aG9uIHN0cmluZyBvYmplY3QuICBJZiB0aGUgc3RyaW5nIGlzIGFuIGYtc3RyaW5nLCBzZXQKKyAgICpmc3RyIGFuZCAqZnN0cmxlbiB0byB0aGUgdW5wYXJzZWQgc3RyaW5nIG9iamVjdC4gIFJldHVybiAwIGlmIG5vCisgICBlcnJvcnMgb2NjdXJyZWQuCisqLworc3RhdGljIGludAorcGFyc2VzdHIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUsIGludCAqcmF3bW9kZSwKKyAgICAgICAgIFB5T2JqZWN0ICoqcmVzdWx0LCBjb25zdCBjaGFyICoqZnN0ciwgUHlfc3NpemVfdCAqZnN0cmxlbikKIHsKICAgICBzaXplX3QgbGVuOwogICAgIGNvbnN0IGNoYXIgKnMgPSBTVFIobik7CiAgICAgaW50IHF1b3RlID0gUHlfQ0hBUk1BU0soKnMpOwotICAgIGludCByYXdtb2RlID0gMDsKLSAgICBpbnQgbmVlZF9lbmNvZGluZzsKKyAgICBpbnQgZm1vZGUgPSAwOworICAgICpieXRlc21vZGUgPSAwOworICAgICpyYXdtb2RlID0gMDsKKyAgICAqcmVzdWx0ID0gTlVMTDsKKyAgICAqZnN0ciA9IE5VTEw7CiAgICAgaWYgKFB5X0lTQUxQSEEocXVvdGUpKSB7Ci0gICAgICAgIHdoaWxlICghKmJ5dGVzbW9kZSB8fCAhcmF3bW9kZSkgeworICAgICAgICB3aGlsZSAoISpieXRlc21vZGUgfHwgISpyYXdtb2RlKSB7CiAgICAgICAgICAgICBpZiAocXVvdGUgPT0gJ2InIHx8IHF1b3RlID09ICdCJykgewogICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKICAgICAgICAgICAgICAgICAqYnl0ZXNtb2RlID0gMTsKQEAgLTQwMjIsMTE0ICs0OTgyLDE2OSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ3InIHx8IHF1b3RlID09ICdSJykgewogICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKLSAgICAgICAgICAgICAgICByYXdtb2RlID0gMTsKKyAgICAgICAgICAgICAgICAqcmF3bW9kZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAnZicgfHwgcXVvdGUgPT0gJ0YnKSB7CisgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOworICAgICAgICAgICAgICAgIGZtb2RlID0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGlmIChmbW9kZSAmJiAqYnl0ZXNtb2RlKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChxdW90ZSAhPSAnXCcnICYmIHF1b3RlICE9ICdcIicpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgcXVvdGUgY2hhci4gKi8KICAgICBzKys7CiAgICAgbGVuID0gc3RybGVuKHMpOwogICAgIGlmIChsZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0byBwYXJzZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoc1stLWxlbl0gIT0gcXVvdGUpIHsKKyAgICAgICAgLyogTGFzdCBxdW90ZSBjaGFyIG11c3QgbWF0Y2ggdGhlIGZpcnN0LiAqLwogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKGxlbiA+PSA0ICYmIHNbMF0gPT0gcXVvdGUgJiYgc1sxXSA9PSBxdW90ZSkgeworICAgICAgICAvKiBBIHRyaXBsZSBxdW90ZWQgc3RyaW5nLiBXZSd2ZSBhbHJlYWR5IHNraXBwZWQgb25lIHF1b3RlIGF0CisgICAgICAgICAgIHRoZSBzdGFydCBhbmQgb25lIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gTm93IHNraXAgdGhlCisgICAgICAgICAgIHR3byBhdCB0aGUgc3RhcnQuICovCiAgICAgICAgIHMgKz0gMjsKICAgICAgICAgbGVuIC09IDI7CisgICAgICAgIC8qIEFuZCBjaGVjayB0aGF0IHRoZSBsYXN0IHR3byBtYXRjaC4gKi8KICAgICAgICAgaWYgKHNbLS1sZW5dICE9IHF1b3RlIHx8IHNbLS1sZW5dICE9IHF1b3RlKSB7CiAgICAgICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghKmJ5dGVzbW9kZSAmJiAhcmF3bW9kZSkgewotICAgICAgICByZXR1cm4gZGVjb2RlX3VuaWNvZGUoYywgcywgbGVuLCByYXdtb2RlLCBjLT5jX2VuY29kaW5nKTsKKworICAgIGlmIChmbW9kZSkgeworICAgICAgICAvKiBKdXN0IHJldHVybiB0aGUgYnl0ZXMuIFRoZSBjYWxsZXIgd2lsbCBwYXJzZSB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgIHN0cmluZy4gKi8KKyAgICAgICAgKmZzdHIgPSBzOworICAgICAgICAqZnN0cmxlbiA9IGxlbjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgLyogTm90IGFuIGYtc3RyaW5nLiAqLworICAgIC8qIEF2b2lkIGludm9raW5nIGVzY2FwZSBkZWNvZGluZyByb3V0aW5lcyBpZiBwb3NzaWJsZS4gKi8KKyAgICAqcmF3bW9kZSA9ICpyYXdtb2RlIHx8IHN0cmNocihzLCAnXFwnKSA9PSBOVUxMOwogICAgIGlmICgqYnl0ZXNtb2RlKSB7Ci0gICAgICAgIC8qIERpc2FsbG93IG5vbi1hc2NpaSBjaGFyYWN0ZXJzIChidXQgbm90IGVzY2FwZXMpICovCisgICAgICAgIC8qIERpc2FsbG93IG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiAqLwogICAgICAgICBjb25zdCBjaGFyICpjaDsKICAgICAgICAgZm9yIChjaCA9IHM7ICpjaDsgY2grKykgewogICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpjaCkgPj0gMHg4MCkgewogICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYnl0ZXMgY2FuIG9ubHkgY29udGFpbiBBU0NJSSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXRlcmFsIGNoYXJhY3RlcnMuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmICgqcmF3bW9kZSkKKyAgICAgICAgICAgICpyZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIGxlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpyZXN1bHQgPSBQeUJ5dGVzX0RlY29kZUVzY2FwZShzLCBsZW4sIE5VTEwsIC8qIGlnbm9yZWQgKi8gMCwgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCpyYXdtb2RlKQorICAgICAgICAgICAgKnJlc3VsdCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgbGVuLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZV91bmljb2RlX3dpdGhfZXNjYXBlcyhjLCBzLCBsZW4pOwogICAgIH0KLSAgICBuZWVkX2VuY29kaW5nID0gKCEqYnl0ZXNtb2RlICYmIGMtPmNfZW5jb2RpbmcgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGMtPmNfZW5jb2RpbmcsICJ1dGYtOCIpICE9IDApOwotICAgIGlmIChyYXdtb2RlIHx8IHN0cmNocihzLCAnXFwnKSA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChuZWVkX2VuY29kaW5nKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdiwgKnUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBsZW4sIE5VTEwpOwotICAgICAgICAgICAgaWYgKHUgPT0gTlVMTCB8fCAhKmJ5dGVzbW9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdTsKLSAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsIGMtPmNfZW5jb2RpbmcsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICAgICAgcmV0dXJuIHY7Ci0gICAgICAgIH0gZWxzZSBpZiAoKmJ5dGVzbW9kZSkgewotICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgbGVuKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYy0+Y19lbmNvZGluZywgInV0Zi04IikgPT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShzLCBsZW4pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgbGVuLCBOVUxMKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gUHlCeXRlc19EZWNvZGVFc2NhcGUocywgbGVuLCBOVUxMLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZF9lbmNvZGluZyA/IGMtPmNfZW5jb2RpbmcgOiBOVUxMKTsKKyAgICByZXR1cm4gKnJlc3VsdCA9PSBOVUxMID8gLTEgOiAwOwogfQogCi0vKiBCdWlsZCBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0IG91dCBvZiBhIFNUUklORysgYXRvbS4gIFRoaXMgdGFrZXMgY2FyZSBvZgotICogY29tcGlsZS10aW1lIGxpdGVyYWwgY2F0ZW5hdGlvbiwgY2FsbGluZyBwYXJzZXN0cigpIG9uIGVhY2ggcGllY2UsIGFuZAotICogcGFzdGluZyB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdHMgdG9nZXRoZXIuCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1wYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUpCisvKiBBY2NlcHRzIGEgU1RSSU5HKyBhdG9tLCBhbmQgcHJvZHVjZXMgYW4gZXhwcl90eSBub2RlLiBSdW4gdGhyb3VnaAorICAgZWFjaCBTVFJJTkcgYXRvbSwgYW5kIHByb2Nlc3MgaXQgYXMgbmVlZGVkLiBGb3IgYnl0ZXMsIGp1c3QKKyAgIGNvbmNhdGVuYXRlIHRoZW0gdG9nZXRoZXIsIGFuZCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBCeXRlcyBub2RlLiBGb3IKKyAgIG5vcm1hbCBzdHJpbmdzIGFuZCBmLXN0cmluZ3MsIGNvbmNhdGVuYXRlIHRoZW0gdG9nZXRoZXIuIFRoZSByZXN1bHQKKyAgIHdpbGwgYmUgYSBTdHIgbm9kZSBpZiB0aGVyZSB3ZXJlIG5vIGYtc3RyaW5nczsgYSBGb3JtYXR0ZWRWYWx1ZQorICAgbm9kZSBpZiB0aGVyZSdzIGp1c3QgYW4gZi1zdHJpbmcgKHdpdGggbm8gbGVhZGluZyBvciB0cmFpbGluZworICAgbGl0ZXJhbHMpLCBvciBhIEpvaW5lZFN0ciBub2RlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBmLXN0cmluZ3Mgb3IKKyAgIGFueSBsaXRlcmFscyBpbnZvbHZlZC4gKi8KK3N0YXRpYyBleHByX3R5CitwYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBpbnQgYnl0ZXNtb2RlID0gMDsKKyAgICBQeU9iamVjdCAqYnl0ZXNfc3RyID0gTlVMTDsKICAgICBpbnQgaTsKLSAgICBSRVEoQ0hJTEQobiwgMCksIFNUUklORyk7Ci0gICAgdiA9IHBhcnNlc3RyKGMsIENISUxEKG4sIDApLCBieXRlc21vZGUpOwotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgLyogU3RyaW5nIGxpdGVyYWwgY29uY2F0ZW5hdGlvbiAqLwotICAgICAgICBmb3IgKGkgPSAxOyBpIDwgTkNIKG4pOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzOwotICAgICAgICAgICAgaW50IHN1YmJtID0gMDsKLSAgICAgICAgICAgIHMgPSBwYXJzZXN0cihjLCBDSElMRChuLCBpKSwgJnN1YmJtKTsKLSAgICAgICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgaWYgKCpieXRlc21vZGUgIT0gc3ViYm0pIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImNhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHYpICYmIFB5Qnl0ZXNfQ2hlY2socykpIHsKLSAgICAgICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdEFuZERlbCgmdiwgcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeVVuaWNvZGVfQ29uY2F0KHYsIHMpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgdiA9IHRlbXA7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgRnN0cmluZ1BhcnNlciBzdGF0ZTsKKyAgICBGc3RyaW5nUGFyc2VyX0luaXQoJnN0YXRlKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobik7IGkrKykgeworICAgICAgICBpbnQgdGhpc19ieXRlc21vZGU7CisgICAgICAgIGludCB0aGlzX3Jhd21vZGU7CisgICAgICAgIFB5T2JqZWN0ICpzOworICAgICAgICBjb25zdCBjaGFyICpmc3RyOworICAgICAgICBQeV9zc2l6ZV90IGZzdHJsZW4gPSAtMTsgIC8qIFNpbGVuY2UgYSBjb21waWxlciB3YXJuaW5nLiAqLworCisgICAgICAgIFJFUShDSElMRChuLCBpKSwgU1RSSU5HKTsKKyAgICAgICAgaWYgKHBhcnNlc3RyKGMsIENISUxEKG4sIGkpLCAmdGhpc19ieXRlc21vZGUsICZ0aGlzX3Jhd21vZGUsICZzLAorICAgICAgICAgICAgICAgICAgICAgJmZzdHIsICZmc3RybGVuKSAhPSAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAvKiBDaGVjayB0aGF0IHdlJ3JlIG5vdCBtaXhpbmcgYnl0ZXMgd2l0aCB1bmljb2RlLiAqLworICAgICAgICBpZiAoaSAhPSAwICYmIGJ5dGVzbW9kZSAhPSB0aGlzX2J5dGVzbW9kZSkgeworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscyIpOworICAgICAgICAgICAgUHlfREVDUkVGKHMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBieXRlc21vZGUgPSB0aGlzX2J5dGVzbW9kZTsKKworICAgICAgICBpZiAoZnN0ciAhPSBOVUxMKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0OworICAgICAgICAgICAgYXNzZXJ0KHMgPT0gTlVMTCAmJiAhYnl0ZXNtb2RlKTsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgYW4gZi1zdHJpbmcuIFBhcnNlIGFuZCBjb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgIHJlc3VsdCA9IEZzdHJpbmdQYXJzZXJfQ29uY2F0RnN0cmluZygmc3RhdGUsICZmc3RyLCBmc3RyK2ZzdHJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19yYXdtb2RlLCAwLCBjLCBuKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoYnl0ZXNtb2RlID8gUHlCeXRlc19DaGVja0V4YWN0KHMpIDoKKyAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSk7CisKKyAgICAgICAgICAgIC8qIEEgc3RyaW5nIG9yIGJ5dGUgc3RyaW5nLiAqLworICAgICAgICAgICAgYXNzZXJ0KHMgIT0gTlVMTCAmJiBmc3RyID09IE5VTEwpOworICAgICAgICAgICAgaWYgKGJ5dGVzbW9kZSkgeworICAgICAgICAgICAgICAgIC8qIEZvciBieXRlcywgY29uY2F0IGFzIHdlIGdvLiAqLworICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmlyc3QgdGltZSwganVzdCByZW1lbWJlciB0aGlzIHZhbHVlLiAqLworICAgICAgICAgICAgICAgICAgICBieXRlc19zdHIgPSBzOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsKCZieXRlc19zdHIsIHMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWJ5dGVzX3N0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQocyAhPSBOVUxMICYmIGZzdHIgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgLyogVGhpcyBpcyBhIHJlZ3VsYXIgc3RyaW5nLiBDb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgICAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoJnN0YXRlLCBzKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHY7CisgICAgaWYgKGJ5dGVzbW9kZSkgeworICAgICAgICAvKiBKdXN0IHJldHVybiB0aGUgYnl0ZXMgb2JqZWN0IGFuZCB3ZSdyZSBkb25lLiAqLworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBieXRlc19zdHIpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHJldHVybiBCeXRlcyhieXRlc19zdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICB9CiAKLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIC8qIFdlJ3JlIG5vdCBhIGJ5dGVzIHN0cmluZywgYnl0ZXNfc3RyIHNob3VsZCBuZXZlciBoYXZlIGJlZW4gc2V0LiAqLworICAgIGFzc2VydChieXRlc19zdHIgPT0gTlVMTCk7CisKKyAgICByZXR1cm4gRnN0cmluZ1BhcnNlcl9GaW5pc2goJnN0YXRlLCBjLCBuKTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihieXRlc19zdHIpOworICAgIEZzdHJpbmdQYXJzZXJfRGVhbGxvYygmc3RhdGUpOwogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2JsdGlubW9kdWxlLmMgYi9QeXRob24vYmx0aW5tb2R1bGUuYwppbmRleCA5ZjVkYjJhLi5jZWUwMTNmIDEwMDY0NAotLS0gYS9QeXRob24vYmx0aW5tb2R1bGUuYworKysgYi9QeXRob24vYmx0aW5tb2R1bGUuYwpAQCAtMjEsMTYgKzIxLDE4IEBACiAgICBEb24ndCBmb3JnZXQgdG8gbW9kaWZ5IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpZiB5b3UgdG91Y2ggYW55IG9mIHRoZQogICAgdmFsdWVzIGZvciBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIQogKi8KLSNpZmRlZiBIQVZFX01CQ1MKLWNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCitjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQorLyogbWF5IGJlIGNoYW5nZWQgYnkgaW5pdGZzZW5jb2RpbmcoKSwgYnV0IHNob3VsZCBuZXZlciBiZSBmcmVlKClkICovCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKICNlbHNlCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gTlVMTDsgLyogc2V0IGJ5IGluaXRmc2VuY29kaW5nKCkgKi8KIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMDsKICNlbmRpZgorY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAic3Vycm9nYXRlZXNjYXBlIjsKIAogX1B5X0lERU5USUZJRVIoX19idWlsdGluc19fKTsKIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKQEAgLTUyLDcgKzU0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX19fYnVpbGRfY2xhc3NfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqbmFtZSwgKmJhc2VzLCAqbWt3LCAqbWV0YSwgKndpbm5lciwgKnByZXAsICpucywgKmNlbGw7CisgICAgUHlPYmplY3QgKmZ1bmMsICpuYW1lLCAqYmFzZXMsICpta3csICptZXRhLCAqd2lubmVyLCAqcHJlcCwgKm5zLCAqbm9uZTsKICAgICBQeU9iamVjdCAqY2xzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5hcmdzOwogICAgIGludCBpc2NsYXNzID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KQEAgLTE1NSwxNiArMTU3LDggQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG5hbWUsIGJhc2VzKTsKLSAgICAgICAgaWYgKHBhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobWt3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBucyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKHByZXAsIHBhcmdzLCBta3cpOwotICAgICAgICBQeV9ERUNSRUYocGFyZ3MpOworICAgICAgICBQeU9iamVjdCAqcGFyZ3NbMl0gPSB7bmFtZSwgYmFzZXN9OworICAgICAgICBucyA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QocHJlcCwgcGFyZ3MsIDIsIG1rdyk7CiAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKICAgICB9CiAgICAgaWYgKG5zID09IE5VTEwpIHsKQEAgLTE3MywxOSArMTY3LDEzIEBACiAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjZWxsID0gUHlFdmFsX0V2YWxDb2RlRXgoUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKSwgUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKSwgbnMsCisgICAgbm9uZSA9IFB5RXZhbF9FdmFsQ29kZUV4KFB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyksIFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyksIG5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpKTsKLSAgICBpZiAoY2VsbCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICptYXJnczsKLSAgICAgICAgbWFyZ3MgPSBQeVR1cGxlX1BhY2soMywgbmFtZSwgYmFzZXMsIG5zKTsKLSAgICAgICAgaWYgKG1hcmdzICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNscyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKG1ldGEsIG1hcmdzLCBta3cpOwotICAgICAgICAgICAgUHlfREVDUkVGKG1hcmdzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2xzICE9IE5VTEwgJiYgUHlDZWxsX0NoZWNrKGNlbGwpKQotICAgICAgICAgICAgUHlDZWxsX1NldChjZWxsLCBjbHMpOwotICAgICAgICBQeV9ERUNSRUYoY2VsbCk7CisgICAgaWYgKG5vbmUgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbWFyZ3NbM10gPSB7bmFtZSwgYmFzZXMsIG5zfTsKKyAgICAgICAgY2xzID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChtZXRhLCBtYXJncywgMywgbWt3KTsKKyAgICAgICAgUHlfREVDUkVGKG5vbmUpOwogICAgIH0KICAgICBQeV9ERUNSRUYobnMpOwogICAgIFB5X0RFQ1JFRihtZXRhKTsKQEAgLTMzMSw3ICszMTksNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjbXAgPT0gMSkgeworICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgICAgICB9CkBAIC00NjksNiArNDU3LDcgQEAKICAgICBQeU9iamVjdCAqaXQgPSBsei0+aXQ7CiAgICAgbG9uZyBvazsKICAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CisgICAgaW50IGNoZWNrdHJ1ZSA9IGx6LT5mdW5jID09IFB5X05vbmUgfHwgbHotPmZ1bmMgPT0gKFB5T2JqZWN0ICopJlB5Qm9vbF9UeXBlOwogCiAgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OwogICAgIGZvciAoOzspIHsKQEAgLTQ3NiwxMiArNDY1LDExIEBACiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBpZiAobHotPmZ1bmMgPT0gUHlfTm9uZSB8fCBsei0+ZnVuYyA9PSAoUHlPYmplY3QgKikmUHlCb29sX1R5cGUpIHsKKyAgICAgICAgaWYgKGNoZWNrdHJ1ZSkgewogICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZ29vZDsKLSAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSwgTlVMTCk7CisgICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywgaXRlbSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoZ29vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE2OCwyNiArMTE1Niw0MyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1hcF9uZXh0KG1hcG9iamVjdCAqbHopCiB7Ci0gICAgUHlPYmplY3QgKnZhbDsKLSAgICBQeU9iamVjdCAqYXJndHVwbGU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9zc2l6ZV90IG51bWFyZ3MsIGk7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuaXRlcnMsIG5hcmdzLCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgbnVtYXJncyA9IFB5VHVwbGVfU2l6ZShsei0+aXRlcnMpOwotICAgIGFyZ3R1cGxlID0gUHlUdXBsZV9OZXcobnVtYXJncyk7Ci0gICAgaWYgKGFyZ3R1cGxlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZm9yIChpPTAgOyBpPG51bWFyZ3MgOyBpKyspIHsKLSAgICAgICAgdmFsID0gUHlJdGVyX05leHQoUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpKTsKLSAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworICAgIG5pdGVycyA9IFB5VHVwbGVfR0VUX1NJWkUobHotPml0ZXJzKTsKKyAgICBpZiAobml0ZXJzIDw9IChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjaykpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKG5pdGVycyAqIHNpemVvZihzdGFja1swXSkpOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJndHVwbGUsIGksIHZhbCk7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwobHotPmZ1bmMsIGFyZ3R1cGxlLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworCisgICAgbmFyZ3MgPSAwOworICAgIGZvciAoaT0wOyBpIDwgbml0ZXJzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpOworICAgICAgICBQeU9iamVjdCAqdmFsID0gUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0KGl0KTsKKyAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgc3RhY2tbaV0gPSB2YWw7CisgICAgICAgIG5hcmdzKys7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGx6LT5mdW5jLCBzdGFjaywgbmFyZ3MpOworCitleGl0OgorICAgIGZvciAoaT0wOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeV9ERUNSRUYoc3RhY2tbaV0pOworICAgIH0KKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3NzksNyArMTc4NCw3IEBACiAgICAgICAgIGlmIChkb19mbHVzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBlbHNlIGlmIChkb19mbHVzaCkgewotICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBlbHNlCkBAIC0xODQ1LDcgKzE4NTAsNyBAQAogICAgIH0KIAogICAgIC8qIEZpcnN0IG9mIGFsbCwgZmx1c2ggc3RkZXJyICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xODU0LDcgKzE4NTksNyBAQAogICAgIC8qIFdlIHNob3VsZCBvbmx5IHVzZSAoR05VKSByZWFkbGluZSBpZiBQeXRob24ncyBzeXMuc3RkaW4gYW5kCiAgICAgICAgc3lzLnN0ZG91dCBhcmUgdGhlIHNhbWUgYXMgQydzIHN0ZGluIGFuZCBzdGRvdXQsIGJlY2F1c2Ugd2UKICAgICAgICBuZWVkIHRvIHBhc3MgaXQgdGhvc2UuICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaW4sICZQeUlkX2ZpbGVubywgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmluLCAmUHlJZF9maWxlbm8sIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB0dHkgPSAwOwpAQCAtMTg2Nyw3ICsxODcyLDcgQEAKICAgICAgICAgdHR5ID0gZmQgPT0gZmlsZW5vKHN0ZGluKSAmJiBpc2F0dHkoZmQpOwogICAgIH0KICAgICBpZiAodHR5KSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgdHR5ID0gMDsKQEAgLTE5MDIsNyArMTkwNyw3IEBACiAgICAgICAgIHN0ZGluX2Vycm9yc19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZGluX2Vycm9ycyk7CiAgICAgICAgIGlmICghc3RkaW5fZW5jb2Rpbmdfc3RyIHx8ICFzdGRpbl9lcnJvcnNfc3RyKQogICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCkBAIC0xOTI5LDkgKzE5MzQsOCBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc3RyaW5ncG8pOwogICAgICAgICAgICAgaWYgKHBvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgcHJvbXB0c3RyID0gUHlCeXRlc19Bc1N0cmluZyhwbyk7Ci0gICAgICAgICAgICBpZiAocHJvbXB0c3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOworICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socG8pKTsKKyAgICAgICAgICAgIHByb21wdHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBvKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHBvID0gTlVMTDsKQEAgLTE5ODMsNyArMTk4Nyw3IEBACiAgICAgICAgIGlmIChQeUZpbGVfV3JpdGVPYmplY3QocHJvbXB0LCBmb3V0LCBQeV9QUklOVF9SQVcpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0yMDg3LDEwICsyMDkxLDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9zb3J0ZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqbmV3bGlzdCwgKnYsICpzZXEsICprZXlmdW5jPU5VTEwsICpuZXdhcmdzOworICAgIFB5T2JqZWN0ICpuZXdsaXN0LCAqdiwgKnNlcSwgKmtleWZ1bmM9TlVMTCwgKipuZXdhcmdzOwogICAgIFB5T2JqZWN0ICpjYWxsYWJsZTsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgImtleSIsICJyZXZlcnNlIiwgMH07CiAgICAgaW50IHJldmVyc2U7CisgICAgUHlfc3NpemVfdCBuYXJnczsKIAogICAgIC8qIGFyZ3MgMS0zIHNob3VsZCBtYXRjaCBsaXN0c29ydCBpbiBPYmplY3RzL2xpc3RvYmplY3QuYyAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9pOnNvcnRlZCIsCkBAIC0yMTA3LDE1ICsyMTEyLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgbmV3YXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgNCk7Ci0gICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYobmV3bGlzdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHYgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgbmV3YXJncyA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKSAtIDE7CisgICAgdiA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoY2FsbGFibGUsIG5ld2FyZ3MsIG5hcmdzLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2xpc3QpOwpAQCAtMjcxMCwxMCArMjcwOSwxMCBAQAogICAgIFNFVEJVSUxUSU4oInppcCIsICAgICAgICAgICAgICAgICAgICZQeVppcF9UeXBlKTsKICAgICBkZWJ1ZyA9IFB5Qm9vbF9Gcm9tTG9uZyhQeV9PcHRpbWl6ZUZsYWcgPT0gMCk7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX2RlYnVnX18iLCBkZWJ1ZykgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoZGVidWcpOworICAgICAgICBQeV9ERUNSRUYoZGVidWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihkZWJ1Zyk7CisgICAgUHlfREVDUkVGKGRlYnVnKTsKIAogICAgIHJldHVybiBtb2Q7CiAjdW5kZWYgQUREX1RPX0FMTApkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCA0NTE3OTFjLi5mZjM2ZDM2IDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTUsODcgKzE1LDEyIEBACiAjaW5jbHVkZSAiZGljdG9iamVjdC5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCisjaW5jbHVkZSAicHlkdHJhY2UuaCIKICNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKLSNpZm5kZWYgV0lUSF9UU0MKLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YXIpCi0KLSNlbHNlCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NDsKLQotLyogUG93ZXJQQyBzdXBwb3J0LgotICAgIl9fcHBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIHByZXByb2Nlc3NvciBkZWZpbml0aW9uIHRvIGRldGVjdCBvbiBPUyBYLCB3aGVyZWFzCi0gICAiX19wb3dlcnBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIGNvcnJlY3Qgb25lIGZvciBMaW51eCB3aXRoIEdDQwotKi8KLSNpZiBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQgKF9fcG93ZXJwY19fKQotCi0jZGVmaW5lIFJFQURfVElNRVNUQU1QKHZhcikgcHBjX2dldGNvdW50ZXIoJnZhcikKLQotc3RhdGljIHZvaWQKLXBwY19nZXRjb3VudGVyKHVpbnQ2NCAqdikKLXsKLSAgICB1bnNpZ25lZCBsb25nIHRidSwgdGIsIHRidTI7Ci0KLSAgbG9vcDoKLSAgICBhc20gdm9sYXRpbGUgKCJtZnRidSAlMCIgOiAiPXIiICh0YnUpICk7Ci0gICAgYXNtIHZvbGF0aWxlICgibWZ0YiAgJTAiIDogIj1yIiAodGIpICApOwotICAgIGFzbSB2b2xhdGlsZSAoIm1mdGJ1ICUwIiA6ICI9ciIgKHRidTIpKTsKLSAgICBpZiAoX19idWlsdGluX2V4cGVjdCh0YnUgIT0gdGJ1MiwgMCkpIGdvdG8gbG9vcDsKLQotICAgIC8qIFRoZSBzbGlnaHRseSBwZWN1bGlhciB3YXkgb2Ygd3JpdGluZyB0aGUgbmV4dCBsaW5lcyBpcwotICAgICAgIGNvbXBpbGVkIGJldHRlciBieSBHQ0MgdGhhbiBhbnkgb3RoZXIgd2F5IEkgdHJpZWQuICovCi0gICAgKChsb25nKikodikpWzBdID0gdGJ1OwotICAgICgobG9uZyopKHYpKVsxXSA9IHRiOwotfQotCi0jZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQotCi0vKiB0aGlzIGlzIGZvciBsaW51eC94ODYgKGFuZCBwcm9iYWJseSBhbnkgb3RoZXIgR0NDL3g4NiBjb21ibykgKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIFwKLSAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIgKHZhbCkpCi0KLSNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKLQotLyogZm9yIGdjYy94ODZfNjQsIHRoZSAiQSIgY29uc3RyYWludCBpbiBESSBtb2RlIG1lYW5zICplaXRoZXIqIHJheCAqb3IqIHJkeDsKLSAgIG5vdCBlZHg6ZWF4IGFzIGl0IGRvZXMgZm9yIGkzODYuICBTaW5jZSByZHRzYyBwdXRzIGl0cyByZXN1bHQgaW4gZWR4OmVheAotICAgZXZlbiBpbiA2NC1iaXQgbW9kZSwgd2UgbmVlZCB0byB1c2UgImEiIGFuZCAiZCIgZm9yIHRoZSBsb3dlciBhbmQgdXBwZXIKLSAgIDMyLWJpdCBwaWVjZXMgb2YgdGhlIHJlc3VsdC4gKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdW5zaWduZWQgaW50IGgsIGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDogIj1hIiAobCksICI9ZCIgKGgpKTsgXAotICAgICh2YWwpID0gKCh1aW50NjQpbCkgfCAoKCh1aW50NjQpaCkgPDwgMzIpOyAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQotCi0KLSNlbHNlCi0KLSNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gaW1wbGVtZW50IHRpbWVzdGFtcCBjb3VudGVyIGZvciB0aGlzIGFyY2hpdGVjdHVyZSIKLQotI2VuZGlmCi0KLXZvaWQgZHVtcF90c2MoaW50IG9wY29kZSwgaW50IHRpY2tlZCwgdWludDY0IGluc3QwLCB1aW50NjQgaW5zdDEsCi0gICAgICAgICAgICAgIHVpbnQ2NCBsb29wMCwgdWludDY0IGxvb3AxLCB1aW50NjQgaW50cjAsIHVpbnQ2NCBpbnRyMSkKLXsKLSAgICB1aW50NjQgaW50ciwgaW5zdCwgbG9vcDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotICAgIGlmICghdHN0YXRlLT5pbnRlcnAtPnRzY2R1bXApCi0gICAgICAgIHJldHVybjsKLSAgICBpbnRyID0gaW50cjEgLSBpbnRyMDsKLSAgICBpbnN0ID0gaW5zdDEgLSBpbnN0MCAtIGludHI7Ci0gICAgbG9vcCA9IGxvb3AxIC0gbG9vcDAgLSBpbnRyOwotICAgIGZwcmludGYoc3RkZXJyLCAib3Bjb2RlPSUwM2QgdD0lZCBpbnN0PSUwNmxsZCBsb29wPSUwNmxsZFxuIiwKLSAgICAgICAgICAgIG9wY29kZSwgdGlja2VkLCBpbnN0LCBsb29wKTsKLX0KLQotI2VuZGlmCi0KIC8qIFR1cm4gdGhpcyBvbiBpZiB5b3VyIGNvbXBpbGVyIGNob2tlcyBvbiB0aGUgYmlnIHN3aXRjaDogKi8KIC8qICNkZWZpbmUgQ0FTRV9UT09fQklHIDEgKi8KIApAQCAtMTA4LDI0ICszMywxMyBAQAogdHlwZWRlZiBQeU9iamVjdCAqKCpjYWxscHJvYykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCi0jaWZkZWYgV0lUSF9UU0MKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQsIHVpbnQ2NCosIHVpbnQ2NCopOwotI2Vsc2UKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQpOwotI2VuZGlmCi1zdGF0aWMgUHlPYmplY3QgKiBmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQsIGludCk7Ci1zdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQpOwotc3RhdGljIFB5T2JqZWN0ICogZXh0X2RvX2NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKioqLCBpbnQsIGludCwgaW50KTsKLXN0YXRpYyBQeU9iamVjdCAqIHVwZGF0ZV9rZXl3b3JkX2FyZ3MoUHlPYmplY3QgKiwgaW50LCBQeU9iamVjdCAqKiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwotc3RhdGljIFB5T2JqZWN0ICogdXBkYXRlX3N0YXJfYXJncyhpbnQsIGludCwgUHlPYmplY3QgKiwgUHlPYmplY3QgKioqKTsKLXN0YXRpYyBQeU9iamVjdCAqIGxvYWRfYXJncyhQeU9iamVjdCAqKiosIGludCk7Ci0jZGVmaW5lIENBTExfRkxBR19WQVIgMQotI2RlZmluZSBDQUxMX0ZMQUdfS1cgMgorc3RhdGljIFB5T2JqZWN0ICogY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKiosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqLCBQeU9iamVjdCAqKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsX2NvcmUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKICNpZmRlZiBMTFRSQUNFCiBzdGF0aWMgaW50IGxsdHJhY2U7Ci1zdGF0aWMgaW50IHBydHJhY2UoUHlPYmplY3QgKiwgY2hhciAqKTsKK3N0YXRpYyBpbnQgcHJ0cmFjZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOwogI2VuZGlmCiBzdGF0aWMgaW50IGNhbGxfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqLApAQCAtMTM3LDE0ICs1MSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICopOwogc3RhdGljIGludCBtYXliZV9jYWxsX2xpbmVfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICosIGludCAqLCBpbnQgKiwgaW50ICopOworc3RhdGljIHZvaWQgbWF5YmVfZHRyYWNlX2xpbmUoUHlGcmFtZU9iamVjdCAqLCBpbnQgKiwgaW50ICosIGludCAqKTsKK3N0YXRpYyB2b2lkIGR0cmFjZV9mdW5jdGlvbl9lbnRyeShQeUZyYW1lT2JqZWN0ICopOworc3RhdGljIHZvaWQgZHRyYWNlX2Z1bmN0aW9uX3JldHVybihQeUZyYW1lT2JqZWN0ICopOwogCiBzdGF0aWMgUHlPYmplY3QgKiBjbXBfb3V0Y29tZShpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogaW1wb3J0X25hbWUoUHlGcmFtZU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBQeU9iamVjdCAqIGltcG9ydF9mcm9tKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCBpbXBvcnRfYWxsX2Zyb20oUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgdm9pZCBmb3JtYXRfZXhjX2NoZWNrX2FyZyhQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogc3RhdGljIHZvaWQgZm9ybWF0X2V4Y191bmJvdW5kKFB5Q29kZU9iamVjdCAqY28sIGludCBvcGFyZyk7CiBzdGF0aWMgUHlPYmplY3QgKiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKiwgdW5zaWduZWQgY2hhciAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqLCBjb25zdCBfUHlfQ09ERVVOSVQgKik7CiBzdGF0aWMgUHlPYmplY3QgKiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqLCBfUHlfSWRlbnRpZmllciAqKTsKIAogI2RlZmluZSBOQU1FX0VSUk9SX01TRyBcCkBAIC03OTYsMTEgKzcxNCwxOCBAQAogUHlPYmplY3QgKgogUHlFdmFsX0V2YWxGcmFtZUV4KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCiB7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5pbnRlcnAtPmV2YWxfZnJhbWUoZiwgdGhyb3dmbGFnKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCit7CiAjaWZkZWYgRFhQQUlSUwogICAgIGludCBsYXN0b3Bjb2RlID0gMDsKICNlbmRpZgogICAgIFB5T2JqZWN0ICoqc3RhY2tfcG9pbnRlcjsgIC8qIE5leHQgZnJlZSBzbG90IGluIHZhbHVlIHN0YWNrICovCi0gICAgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cjsKKyAgICBjb25zdCBfUHlfQ09ERVVOSVQgKm5leHRfaW5zdHI7CiAgICAgaW50IG9wY29kZTsgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlICovCiAgICAgaW50IG9wYXJnOyAgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlIGFyZ3VtZW50LCBpZiBhbnkgKi8KICAgICBlbnVtIHdoeV9jb2RlIHdoeTsgLyogUmVhc29uIGZvciBibG9jayBzdGFjayB1bndpbmQgKi8KQEAgLTgxOCw3ICs3NDMsNyBAQAogICAgICAgIHRpbWUgaXQgaXMgdGVzdGVkLiAqLwogICAgIGludCBpbnN0cl91YiA9IC0xLCBpbnN0cl9sYiA9IDAsIGluc3RyX3ByZXYgPSAtMTsKIAotICAgIHVuc2lnbmVkIGNoYXIgKmZpcnN0X2luc3RyOworICAgIGNvbnN0IF9QeV9DT0RFVU5JVCAqZmlyc3RfaW5zdHI7CiAgICAgUHlPYmplY3QgKm5hbWVzOwogICAgIFB5T2JqZWN0ICpjb25zdHM7CiAKQEAgLTg4NiwyNCArODExLDEwIEBACiAvKiBJbXBvcnQgdGhlIHN0YXRpYyBqdW1wIHRhYmxlICovCiAjaW5jbHVkZSAib3Bjb2RlX3RhcmdldHMuaCIKIAotLyogVGhpcyBtYWNybyBpcyB1c2VkIHdoZW4gc2V2ZXJhbCBvcGNvZGVzIGRlZmVyIHRvIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uCi0gICAoZS5nLiBTRVRVUF9MT09QLCBTRVRVUF9GSU5BTExZKSAqLwotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAotICAgIGNhc2Ugb3A6IFwKLSAgICAgICAgZ290byBpbXBsOyBcCi0KICNkZWZpbmUgVEFSR0VUKG9wKSBcCiAgICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAogICAgIGNhc2Ugb3A6CiAKLQogI2RlZmluZSBESVNQQVRDSCgpIFwKICAgICB7IFwKICAgICAgICAgaWYgKCFfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZXZhbF9icmVha2VyKSkgeyAgICAgIFwKQEAgLTkxNSwxOCArODI2LDIwIEBACiAjaWZkZWYgTExUUkFDRQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CiAjZWxzZQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CkBAIC05MzUsMTAgKzg0OCw3IEBACiAjZWxzZQogI2RlZmluZSBUQVJHRVQob3ApIFwKICAgICBjYXNlIG9wOgotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyBhYm91dCBgaW1wbGAgdW51c2VkICovIFwKLSAgICBpZiAoMCkgZ290byBpbXBsOyBcCi0gICAgY2FzZSBvcDoKKwogI2RlZmluZSBESVNQQVRDSCgpIGNvbnRpbnVlCiAjZGVmaW5lIEZBU1RfRElTUEFUQ0goKSBnb3RvIGZhc3RfbmV4dF9vcGNvZGUKICNlbmRpZgpAQCAtOTUyLDcwICs4NjIsMzMgQEAKICNkZWZpbmUgR0VUSVRFTSh2LCBpKSBQeVR1cGxlX0dldEl0ZW0oKHYpLCAoaSkpCiAjZW5kaWYKIAotI2lmZGVmIFdJVEhfVFNDCi0vKiBVc2UgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciB0byBtYXJrIGNlcnRhaW4gZXZlbnRzOgotICAgaW5zdDAgLS0gYmVnaW5uaW5nIG9mIHN3aXRjaCBzdGF0ZW1lbnQgZm9yIG9wY29kZSBkaXNwYXRjaAotICAgaW5zdDEgLS0gZW5kIG9mIHN3aXRjaCBzdGF0ZW1lbnQgKG1heSBiZSBza2lwcGVkKQotICAgbG9vcDAgLS0gdGhlIHRvcCBvZiB0aGUgbWFpbmxvb3AKLSAgIGxvb3AxIC0tIHBsYWNlIHdoZXJlIGNvbnRyb2wgcmV0dXJucyBhZ2FpbiB0byB0b3Agb2YgbWFpbmxvb3AKLSAgICAgICAgICAgIChtYXkgYmUgc2tpcHBlZCkKLSAgIGludHIxIC0tIGJlZ2lubmluZyBvZiBsb25nIGludGVycnVwdGlvbgotICAgaW50cjIgLS0gZW5kIG9mIGxvbmcgaW50ZXJydXB0aW9uCi0KLSAgIE1hbnkgb3Bjb2RlcyBjYWxsIG91dCB0byBoZWxwZXIgQyBmdW5jdGlvbnMuICBJbiBzb21lIGNhc2VzLCB0aGUKLSAgIHRpbWUgaW4gdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBjb3VudGVkIHRvd2FyZHMgdGhlIHRpbWUgZm9yIHRoZQotICAgb3Bjb2RlLCBidXQgbm90IGluIGFsbCBjYXNlcy4gIEZvciBleGFtcGxlLCBhIENBTExfRlVOQ1RJT04gb3Bjb2RlCi0gICBjYWxscyBhbm90aGVyIFB5dGhvbiBmdW5jdGlvbjsgdGhlcmUncyBubyBwb2ludCBpbiBjaGFyZ2UgYWxsIHRoZQotICAgYnl0ZWNvZGUgZXhlY3V0ZWQgYnkgdGhlIGNhbGxlZCBmdW5jdGlvbiB0byB0aGUgY2FsbGVyLgotCi0gICBJdCdzIGhhcmQgdG8gbWFrZSBhIHVzZWZ1bCBqdWRnZW1lbnQgc3RhdGljYWxseS4gIEluIHRoZSBwcmVzZW5jZQotICAgb2Ygb3BlcmF0b3Igb3ZlcmxvYWRpbmcsIGl0J3MgaW1wb3NzaWJsZSB0byB0ZWxsIGlmIGEgY2FsbCB3aWxsCi0gICBleGVjdXRlIG5ldyBQeXRob24gY29kZSBvciBub3QuCi0KLSAgIEl0J3MgYSBjYXNlLWJ5LWNhc2UganVkZ2VtZW50LiAgSSdsbCB1c2UgaW50cjEgZm9yIHRoZSBmb2xsb3dpbmcKLSAgIGNhc2VzOgotCi0gICBJTVBPUlRfU1RBUgotICAgSU1QT1JUX0ZST00KLSAgIENBTExfRlVOQ1RJT04gKGFuZCBmcmllbmRzKQotCi0gKi8KLSAgICB1aW50NjQgaW5zdDAsIGluc3QxLCBsb29wMCwgbG9vcDEsIGludHIwID0gMCwgaW50cjEgPSAwOwotICAgIGludCB0aWNrZWQgPSAwOwotCi0gICAgUkVBRF9USU1FU1RBTVAoaW5zdDApOwotICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0gICAgUkVBRF9USU1FU1RBTVAobG9vcDEpOwotCi0gICAgLyogc2h1dCB1cCB0aGUgY29tcGlsZXIgKi8KLSAgICBvcGNvZGUgPSAwOwotI2VuZGlmCi0KIC8qIENvZGUgYWNjZXNzIG1hY3JvcyAqLwogCi0jZGVmaW5lIElOU1RSX09GRlNFVCgpICAoKGludCkobmV4dF9pbnN0ciAtIGZpcnN0X2luc3RyKSkKLSNkZWZpbmUgTkVYVE9QKCkgICAgICAgICgqbmV4dF9pbnN0cisrKQotI2RlZmluZSBORVhUQVJHKCkgICAgICAgKG5leHRfaW5zdHIgKz0gMiwgKG5leHRfaW5zdHJbLTFdPDw4KSArIG5leHRfaW5zdHJbLTJdKQotI2RlZmluZSBQRUVLQVJHKCkgICAgICAgKChuZXh0X2luc3RyWzJdPDw4KSArIG5leHRfaW5zdHJbMV0pCi0jZGVmaW5lIEpVTVBUTyh4KSAgICAgICAobmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyICsgKHgpKQotI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpKQorLyogVGhlIGludGVnZXIgb3ZlcmZsb3cgaXMgY2hlY2tlZCBieSBhbiBhc3NlcnRpb24gYmVsb3cuICovCisjZGVmaW5lIElOU1RSX09GRlNFVCgpICAoc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKiAoaW50KShuZXh0X2luc3RyIC0gZmlyc3RfaW5zdHIpKQorI2RlZmluZSBORVhUT1BBUkcoKSAgZG8geyBcCisgICAgICAgIF9QeV9DT0RFVU5JVCB3b3JkID0gKm5leHRfaW5zdHI7IFwKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERSh3b3JkKTsgXAorICAgICAgICBvcGFyZyA9IF9QeV9PUEFSRyh3b3JkKTsgXAorICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBKVU1QVE8oeCkgICAgICAgKG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0ciArICh4KSAvIHNpemVvZihfUHlfQ09ERVVOSVQpKQorI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpCiAKIC8qIE9wQ29kZSBwcmVkaWN0aW9uIG1hY3JvcwogICAgIFNvbWUgb3Bjb2RlcyB0ZW5kIHRvIGNvbWUgaW4gcGFpcnMgdGh1cyBtYWtpbmcgaXQgcG9zc2libGUgdG8KICAgICBwcmVkaWN0IHRoZSBzZWNvbmQgY29kZSB3aGVuIHRoZSBmaXJzdCBpcyBydW4uICBGb3IgZXhhbXBsZSwKLSAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IEpVTVBfSUZfRkFMU0Ugb3IgSlVNUF9JRl9UUlVFLiAgQW5kLAotICAgIHRob3NlIG9wY29kZXMgYXJlIG9mdGVuIGZvbGxvd2VkIGJ5IGEgUE9QX1RPUC4KKyAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IFBPUF9KVU1QX0lGX0ZBTFNFIG9yIFBPUF9KVU1QX0lGX1RSVUUuCiAKICAgICBWZXJpZnlpbmcgdGhlIHByZWRpY3Rpb24gY29zdHMgYSBzaW5nbGUgaGlnaC1zcGVlZCB0ZXN0IG9mIGEgcmVnaXN0ZXIKICAgICB2YXJpYWJsZSBhZ2FpbnN0IGEgY29uc3RhbnQuICBJZiB0aGUgcGFpcmluZyB3YXMgZ29vZCwgdGhlbiB0aGUKICAgICBwcm9jZXNzb3IncyBvd24gaW50ZXJuYWwgYnJhbmNoIHByZWRpY2F0aW9uIGhhcyBhIGhpZ2ggbGlrZWxpaG9vZCBvZgogICAgIHN1Y2Nlc3MsIHJlc3VsdGluZyBpbiBhIG5lYXJseSB6ZXJvLW92ZXJoZWFkIHRyYW5zaXRpb24gdG8gdGhlCiAgICAgbmV4dCBvcGNvZGUuICBBIHN1Y2Nlc3NmdWwgcHJlZGljdGlvbiBzYXZlcyBhIHRyaXAgdGhyb3VnaCB0aGUgZXZhbC1sb29wCi0gICAgaW5jbHVkaW5nIGl0cyB0d28gdW5wcmVkaWN0YWJsZSBicmFuY2hlcywgdGhlIEhBU19BUkcgdGVzdCBhbmQgdGhlCi0gICAgc3dpdGNoLWNhc2UuICBDb21iaW5lZCB3aXRoIHRoZSBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwKLSAgICBhIHN1Y2Nlc3NmdWwgUFJFRElDVCBoYXMgdGhlIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZgotICAgIHRoZXkgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KKyAgICBpbmNsdWRpbmcgaXRzIHVucHJlZGljdGFibGUgc3dpdGNoLWNhc2UgYnJhbmNoLiAgQ29tYmluZWQgd2l0aCB0aGUKKyAgICBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwgYSBzdWNjZXNzZnVsIFBSRURJQ1QgaGFzIHRoZQorICAgIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZiB0aGV5IHdlcmUgYSBzaW5nbGUgbmV3IG9wY29kZQorICAgIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KIAogICAgIElmIGNvbGxlY3Rpbmcgb3Bjb2RlIHN0YXRpc3RpY3MsIHlvdXIgY2hvaWNlcyBhcmUgdG8gZWl0aGVyIGtlZXAgdGhlCiAgICAgcHJlZGljdGlvbnMgdHVybmVkLW9uIGFuZCBpbnRlcnByZXQgdGhlIHJlc3VsdHMgYXMgaWYgc29tZSBvcGNvZGVzCkBAIC0xMDMwLDEzICs5MDMsMTkgQEAKIAogI2lmIGRlZmluZWQoRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRSkgfHwgVVNFX0NPTVBVVEVEX0dPVE9TCiAjZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgwKSBnb3RvIFBSRURfIyNvcAotI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6Ci0jZGVmaW5lIFBSRURJQ1RFRF9XSVRIX0FSRyhvcCkgIFBSRURfIyNvcDoKICNlbHNlCi0jZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBvcCkgZ290byBQUkVEXyMjb3AKLSNkZWZpbmUgUFJFRElDVEVEKG9wKSAgICAgICAgICAgUFJFRF8jI29wOiBuZXh0X2luc3RyKysKLSNkZWZpbmUgUFJFRElDVEVEX1dJVEhfQVJHKG9wKSAgUFJFRF8jI29wOiBvcGFyZyA9IFBFRUtBUkcoKTsgbmV4dF9pbnN0ciArPSAzCisjZGVmaW5lIFBSRURJQ1Qob3ApIFwKKyAgICBkb3sgXAorICAgICAgICBfUHlfQ09ERVVOSVQgd29yZCA9ICpuZXh0X2luc3RyOyBcCisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUod29yZCk7IFwKKyAgICAgICAgaWYgKG9wY29kZSA9PSBvcCl7IFwKKyAgICAgICAgICAgIG9wYXJnID0gX1B5X09QQVJHKHdvcmQpOyBcCisgICAgICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICAgICAgICAgIGdvdG8gUFJFRF8jI29wOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUoMCkKICNlbmRpZgorI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6CiAKIAogLyogU3RhY2sgbWFuaXB1bGF0aW9uIG1hY3JvcyAqLwpAQCAtMTEwMCw3ICs5NzksNyBAQAogICAgIH0KIAogI2RlZmluZSBVTldJTkRfRVhDRVBUX0hBTkRMRVIoYikgXAotICAgIHsgXAorICAgIGRvIHsgXAogICAgICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOyBcCiAgICAgICAgIGFzc2VydChTVEFDS19MRVZFTCgpID49IChiKS0+Yl9sZXZlbCArIDMpOyBcCiAgICAgICAgIHdoaWxlIChTVEFDS19MRVZFTCgpID4gKGIpLT5iX2xldmVsICsgMykgeyBcCkBAIC0xMTE2LDcgKzk5NSw3IEBACiAgICAgICAgIFB5X1hERUNSRUYodHlwZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOyBcCi0gICAgfQorICAgIH0gd2hpbGUoMCkKIAogLyogU3RhcnQgb2YgY29kZSAqLwogCkBAIC0xMTYwLDIxICsxMDM5LDI0IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCgpKQorICAgICAgICBkdHJhY2VfZnVuY3Rpb25fZW50cnkoZik7CisKICAgICBjbyA9IGYtPmZfY29kZTsKICAgICBuYW1lcyA9IGNvLT5jb19uYW1lczsKICAgICBjb25zdHMgPSBjby0+Y29fY29uc3RzOwogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKLSAgICBmaXJzdF9pbnN0ciA9ICh1bnNpZ25lZCBjaGFyKikgUHlCeXRlc19BU19TVFJJTkcoY28tPmNvX2NvZGUpOwotICAgIC8qIEFuIGV4cGxhbmF0aW9uIGlzIGluIG9yZGVyIGZvciB0aGUgbmV4dCBsaW5lLgorICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGNvLT5jb19jb2RlKSk7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfR0VUX1NJWkUoY28tPmNvX2NvZGUpIDw9IElOVF9NQVgpOworICAgIGFzc2VydChQeUJ5dGVzX0dFVF9TSVpFKGNvLT5jb19jb2RlKSAlIHNpemVvZihfUHlfQ09ERVVOSVQpID09IDApOworICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyhjby0+Y29fY29kZSksIHNpemVvZihfUHlfQ09ERVVOSVQpKSk7CisgICAgZmlyc3RfaW5zdHIgPSAoX1B5X0NPREVVTklUICopIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvLT5jb19jb2RlKTsKKyAgICAvKgorICAgICAgIGYtPmZfbGFzdGkgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiwKKyAgICAgICB1bmxlc3MgaXQncyAtMSBpbiB3aGljaCBjYXNlIG5leHRfaW5zdHIgc2hvdWxkIGJlIGZpcnN0X2luc3RyLgogCi0gICAgICAgZi0+Zl9sYXN0aSBub3cgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbgotICAgICAgIGV4ZWN1dGVkLiAgWW91IG1pZ2h0IHRoaW5rIHRoaXMgd2FzIG9idmlvdXMgZnJvbSB0aGUgbmFtZSwgYnV0Ci0gICAgICAgdGhpcyB3YXNuJ3QgYWx3YXlzIHRydWUgYmVmb3JlIDIuMyEgIFB5RnJhbWVfTmV3IG5vdyBzZXRzCi0gICAgICAgZi0+Zl9sYXN0aSB0byAtMSAoaS5lLiB0aGUgaW5kZXggKmJlZm9yZSogdGhlIGZpcnN0IGluc3RydWN0aW9uKQotICAgICAgIGFuZCBZSUVMRF9WQUxVRSBkb2Vzbid0IGZpZGRsZSB3aXRoIGZfbGFzdGkgYW55IG1vcmUuICBTbyB0aGlzCi0gICAgICAgZG9lcyB3b3JrLiAgUHJvbWlzZS4KLSAgICAgICBZSUVMRF9GUk9NIHNldHMgZl9sYXN0aSB0byBpdHNlbGYsIGluIG9yZGVyIHRvIHJlcGVhdGVkIHlpZWxkCisgICAgICAgWUlFTERfRlJPTSBzZXRzIGZfbGFzdGkgdG8gaXRzZWxmLCBpbiBvcmRlciB0byByZXBlYXRlZGx5IHlpZWxkCiAgICAgICAgbXVsdGlwbGUgdmFsdWVzLgogCiAgICAgICAgV2hlbiB0aGUgUFJFRElDVCgpIG1hY3JvcyBhcmUgZW5hYmxlZCwgc29tZSBvcGNvZGUgcGFpcnMgZm9sbG93IGluCkBAIC0xMTgzLDE1ICsxMDY1LDIwIEBACiAgICAgICAgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlOyBhY2NvcmRpbmdseSxmLT5mX2xhc3RpIHdpbGwgcG9pbnQgdG8KICAgICAgICB0aGUgZmlyc3QgY29kZSBpbiB0aGUgcGFpciAoZm9yIGluc3RhbmNlLCBHRVRfSVRFUiBmb2xsb3dlZCBieQogICAgICAgIEZPUl9JVEVSIGlzIGVmZmVjdGl2ZWx5IGEgc2luZ2xlIG9wY29kZSBhbmQgZi0+Zl9sYXN0aSB3aWxsIHBvaW50Ci0gICAgICAgYXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCisgICAgICAgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCiAgICAgKi8KLSAgICBuZXh0X2luc3RyID0gZmlyc3RfaW5zdHIgKyBmLT5mX2xhc3RpICsgMTsKKyAgICBhc3NlcnQoZi0+Zl9sYXN0aSA+PSAtMSk7CisgICAgbmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyOworICAgIGlmIChmLT5mX2xhc3RpID49IDApIHsKKyAgICAgICAgYXNzZXJ0KGYtPmZfbGFzdGkgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICAgICAgbmV4dF9pbnN0ciArPSBmLT5mX2xhc3RpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKyAxOworICAgIH0KICAgICBzdGFja19wb2ludGVyID0gZi0+Zl9zdGFja3RvcDsKICAgICBhc3NlcnQoc3RhY2tfcG9pbnRlciAhPSBOVUxMKTsKICAgICBmLT5mX3N0YWNrdG9wID0gTlVMTDsgICAgICAgLyogcmVtYWlucyBOVUxMIHVubGVzcyB5aWVsZCBzdXNwZW5kcyBmcmFtZSAqLwogICAgIGYtPmZfZXhlY3V0aW5nID0gMTsKIAotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogICAgICAgICBpZiAoIXRocm93ZmxhZyAmJiBmLT5mX2V4Y190eXBlICE9IE5VTEwgJiYgZi0+Zl9leGNfdHlwZSAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCkBAIC0xMjE5LDIzICsxMTA2LDYgQEAKICNlbmRpZgogCiAgICAgZm9yICg7OykgewotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgIGlmIChpbnN0MSA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBBbG1vc3Qgc3VyZWx5LCB0aGUgb3Bjb2RlIGV4ZWN1dGVkIGEgYnJlYWsKLSAgICAgICAgICAgICAgIG9yIGEgY29udGludWUsIHByZXZlbnRpbmcgaW5zdDEgZnJvbSBiZWluZyBzZXQKLSAgICAgICAgICAgICAgIG9uIHRoZSB3YXkgb3V0IG9mIHRoZSBsb29wLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICAgICAgICAgIGxvb3AxID0gaW5zdDE7Ci0gICAgICAgIH0KLSAgICAgICAgZHVtcF90c2Mob3Bjb2RlLCB0aWNrZWQsIGluc3QwLCBpbnN0MSwgbG9vcDAsIGxvb3AxLAotICAgICAgICAgICAgICAgICBpbnRyMCwgaW50cjEpOwotICAgICAgICB0aWNrZWQgPSAwOwotICAgICAgICBpbnN0MSA9IDA7Ci0gICAgICAgIGludHIwID0gMDsKLSAgICAgICAgaW50cjEgPSAwOwotICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0jZW5kaWYKICAgICAgICAgYXNzZXJ0KHN0YWNrX3BvaW50ZXIgPj0gZi0+Zl92YWx1ZXN0YWNrKTsgLyogZWxzZSB1bmRlcmZsb3cgKi8KICAgICAgICAgYXNzZXJ0KFNUQUNLX0xFVkVMKCkgPD0gY28tPmNvX3N0YWNrc2l6ZSk7ICAvKiBlbHNlIG92ZXJmbG93ICovCiAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CkBAIC0xMjQ5LDE0ICsxMTE5LDExIEBACiAgICAgICAgICAgIFB5X01ha2VQZW5kaW5nQ2FsbHMoKSBhYm92ZS4gKi8KIAogICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmV2YWxfYnJlYWtlcikpIHsKLSAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBTRVRVUF9GSU5BTExZKSB7CisgICAgICAgICAgICBpZiAoX1B5X09QQ09ERSgqbmV4dF9pbnN0cikgPT0gU0VUVVBfRklOQUxMWSkgewogICAgICAgICAgICAgICAgIC8qIE1ha2UgdGhlIGxhc3Qgb3Bjb2RlIGJlZm9yZQogICAgICAgICAgICAgICAgICAgIGEgdHJ5OiBmaW5hbGx5OiBibG9jayB1bmludGVycnVwdGlibGUuICovCiAgICAgICAgICAgICAgICAgZ290byBmYXN0X25leHRfb3Bjb2RlOwogICAgICAgICAgICAgfQotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICB0aWNrZWQgPSAxOwotI2VuZGlmCiAgICAgICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJnBlbmRpbmdjYWxsc190b19kbykpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfTWFrZVBlbmRpbmdDYWxscygpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTEyOTYsNiArMTE2Myw5IEBACiAgICAgZmFzdF9uZXh0X29wY29kZToKICAgICAgICAgZi0+Zl9sYXN0aSA9IElOU1RSX09GRlNFVCgpOwogCisgICAgICAgIGlmIChQeURUcmFjZV9MSU5FX0VOQUJMRUQoKSkKKyAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lKGYsICZpbnN0cl9sYiwgJmluc3RyX3ViLCAmaW5zdHJfcHJldik7CisKICAgICAgICAgLyogbGluZS1ieS1saW5lIHRyYWNpbmcgc3VwcG9ydCAqLwogCiAgICAgICAgIGlmIChfUHlfVHJhY2luZ1Bvc3NpYmxlICYmCkBAIC0xMzIyLDExICsxMTkyLDcgQEAKIAogICAgICAgICAvKiBFeHRyYWN0IG9wY29kZSBhbmQgYXJndW1lbnQgKi8KIAotICAgICAgICBvcGNvZGUgPSBORVhUT1AoKTsKLSAgICAgICAgb3BhcmcgPSAwOyAgIC8qIGFsbG93cyBvcGFyZyB0byBiZSBzdG9yZWQgaW4gYSByZWdpc3RlciBiZWNhdXNlCi0gICAgICAgICAgICBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgcmVtZW1iZXJlZCBhY3Jvc3MgYSBmdWxsIGxvb3AgKi8KLSAgICAgICAgaWYgKEhBU19BUkcob3Bjb2RlKSkKLSAgICAgICAgICAgIG9wYXJnID0gTkVYVEFSRygpOworICAgICAgICBORVhUT1BBUkcoKTsKICAgICBkaXNwYXRjaF9vcGNvZGU6CiAjaWZkZWYgRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRQogI2lmZGVmIERYUEFJUlMKQEAgLTEzNTEsOSArMTIxNyw2IEBACiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIC8qIE1haW4gc3dpdGNoIG9uIG9wY29kZSAqLwotICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MCk7Ci0KICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKIAogICAgICAgICAvKiBCRVdBUkUhCkBAIC0xMzc3LDYgKzEyNDAsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKExPQURfQ09OU1QpOwogICAgICAgICBUQVJHRVQoTE9BRF9DT05TVCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gR0VUSVRFTShjb25zdHMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CkBAIC0xMzg0LDcgKzEyNDgsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFNUT1JFX0ZBU1QpOworICAgICAgICBQUkVESUNURUQoU1RPUkVfRkFTVCk7CiAgICAgICAgIFRBUkdFVChTVE9SRV9GQVNUKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQT1AoKTsKICAgICAgICAgICAgIFNFVExPQ0FMKG9wYXJnLCB2YWx1ZSk7CkBAIC0xODYzLDYgKzE3MjcsNjEgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoU1RPUkVfQU5OT1RBVElPTikgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fZGljdDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm4gPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGlmIChmLT5mX2xvY2FscyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIHdoZW4gc3RvcmluZyBhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGZpcnN0IHRyeSB0byBnZXQgX19hbm5vdGF0aW9uc19fIGZyb20gbG9jYWxzLi4uICovCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9sb2NhbHMpKSB7CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubl9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2xvY2FscywgYW5uX3N0cik7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogLi4uaWYgc3VjY2VlZGVkLCBfX2Fubm90YXRpb25zX19bbmFtZV0gPSBhbm4gKi8KKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChhbm5fZGljdCkpIHsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShhbm5fZGljdCwgbmFtZSwgYW5uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X1NldEl0ZW0oYW5uX2RpY3QsIG5hbWUsIGFubik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChERUxFVEVfU1VCU0NSKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3ViID0gVE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29udGFpbmVyID0gU0VDT05EKCk7CkBAIC0yMDA2LDYgKzE5MjUsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBTRVRfVE9QKGF3YWl0YWJsZSk7CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0yMDE2LDQxICsxOTM2LDUyIEBACiAgICAgICAgICAgICBQeU9iamVjdCAqYWl0ZXIgPSBUT1AoKTsKICAgICAgICAgICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoYWl0ZXIpOwogCi0gICAgICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnZXR0ZXIgPSB0eXBlLT50cF9hc19hc3luYy0+YW1fYW5leHQ7Ci0KLSAgICAgICAgICAgIGlmIChnZXR0ZXIgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG5leHRfaXRlciA9ICgqZ2V0dGVyKShhaXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRfaXRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGFpdGVyKSkgeworICAgICAgICAgICAgICAgIGF3YWl0YWJsZSA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dChhaXRlcik7CisgICAgICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZXF1aXJlcyBhbiBpdGVyYXRvciB3aXRoICIKLSAgICAgICAgICAgICAgICAgICAgIl9fYW5leHRfXyBtZXRob2QsIGdvdCAlLjEwMHMiLAotICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCl7CisgICAgICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihuZXh0X2l0ZXIpOwotICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCi0gICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2l0ZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0dGVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRfaXRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gaXRlcmF0b3Igd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgYXdhaXRhYmxlID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBfX2FuZXh0X186ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5leHRfaXRlciktPnRwX25hbWUpOworCisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUFVTSChhd2FpdGFibGUpOworICAgICAgICAgICAgUFJFRElDVChMT0FEX0NPTlNUKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoR0VUX0FXQUlUQUJMRSk7CiAgICAgICAgIFRBUkdFVChHRVRfQVdBSVRBQkxFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKGl0ZXJhYmxlKTsKQEAgLTIwNzgsMjEgKzIwMDksMjIgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChZSUVMRF9GUk9NKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFBPUCgpOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlY2lldmVyID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVjZWl2ZXIgPSBUT1AoKTsKICAgICAgICAgICAgIGludCBlcnI7Ci0gICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdChyZWNpZXZlcikgfHwgUHlDb3JvX0NoZWNrRXhhY3QocmVjaWV2ZXIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5R2VuX1NlbmQoKFB5R2VuT2JqZWN0ICopcmVjaWV2ZXIsIHYpOworICAgICAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QocmVjZWl2ZXIpIHx8IFB5Q29yb19DaGVja0V4YWN0KHJlY2VpdmVyKSkgeworICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXJlY2VpdmVyLCB2KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc2VuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRShyZWNpZXZlciktPnRwX2l0ZXJuZXh0KHJlY2lldmVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRShyZWNlaXZlciktPnRwX2l0ZXJuZXh0KHJlY2VpdmVyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKHJlY2lldmVyLCAmUHlJZF9zZW5kLCB2LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MocmVjZWl2ZXIsICZQeUlkX3NlbmQsIHYsIE5VTEwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKSB7CkBAIC0yMTAzLDcgKzIwMzUsNyBAQAogICAgICAgICAgICAgICAgIGVyciA9IF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmdmFsKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVjaWV2ZXIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWNlaXZlcik7CiAgICAgICAgICAgICAgICAgU0VUX1RPUCh2YWwpOwogICAgICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgICAgICB9CkBAIC0yMTExLDEyICsyMDQzLDIzIEBACiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKICAgICAgICAgICAgIHdoeSA9IFdIWV9ZSUVMRDsKICAgICAgICAgICAgIC8qIGFuZCByZXBlYXQuLi4gKi8KLSAgICAgICAgICAgIGYtPmZfbGFzdGktLTsKKyAgICAgICAgICAgIGYtPmZfbGFzdGkgLT0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICBnb3RvIGZhc3RfeWllbGQ7CiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoWUlFTERfVkFMVUUpIHsKICAgICAgICAgICAgIHJldHZhbCA9IFBPUCgpOworCisgICAgICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fQVNZTkNfR0VORVJBVE9SKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKncgPSBfUHlBc3luY0dlblZhbHVlV3JhcHBlck5ldyhyZXR2YWwpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dmFsID0gdzsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZi0+Zl9zdGFja3RvcCA9IHN0YWNrX3BvaW50ZXI7CiAgICAgICAgICAgICB3aHkgPSBXSFlfWUlFTEQ7CiAgICAgICAgICAgICBnb3RvIGZhc3RfeWllbGQ7CkBAIC0yMTMzLDYgKzIwNzYsNyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChQT1BfQkxPQ0spOwogICAgICAgICBUQVJHRVQoUE9QX0JMT0NLKSB7CiAgICAgICAgICAgICBQeVRyeUJsb2NrICpiID0gUHlGcmFtZV9CbG9ja1BvcChmKTsKICAgICAgICAgICAgIFVOV0lORF9CTE9DSyhiKTsKQEAgLTIyNDksNyArMjE5Myw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFVOUEFDS19TRVFVRU5DRSk7CisgICAgICAgIFBSRURJQ1RFRChVTlBBQ0tfU0VRVUVOQ0UpOwogICAgICAgICBUQVJHRVQoVU5QQUNLX1NFUVVFTkNFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc2VxID0gUE9QKCksICppdGVtLCAqKml0ZW1zOwogICAgICAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdChzZXEpICYmCkBAIC0yMzU4LDcgKzIzMDIsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMICYmIF9QeUVycl9PQ0NVUlJFRCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTIzOTgsMjYgKzIzNDIsMzMgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwogICAgICAgICAgICAgUHlPYmplY3QgKnY7CiAgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9nbG9iYWxzKQotICAgICAgICAgICAgICAgICYmIFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7CisgICAgICAgICAgICAgICAgJiYgUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdiA9IF9QeURpY3RfTG9hZEdsb2JhbCgoUHlEaWN0T2JqZWN0ICopZi0+Zl9nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGljdE9iamVjdCAqKWYtPmZfYnVpbHRpbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghX1B5RXJyX09DQ1VSUkVEKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghX1B5RXJyX09DQ1VSUkVEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9QeURpY3RfTG9hZEdsb2JhbCgpIHJldHVybnMgTlVMTCB3aXRob3V0IHJhaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGFuIGV4Y2VwdGlvbiBpZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKFB5RXhjX05hbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBTbG93LXBhdGggaWYgZ2xvYmFscyBvciBidWlsdGlucyBpcyBub3QgYSBkaWN0ICovCisKKyAgICAgICAgICAgICAgICAvKiBuYW1lc3BhY2UgMTogZ2xvYmFscyAqLwogICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfZ2xvYmFscywgbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIAorICAgICAgICAgICAgICAgICAgICAvKiBuYW1lc3BhY2UgMjogYnVpbHRpbnMgKi8KICAgICAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKQEAgLTI0NzcsNyArMjQyOCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0yNTE2LDYgKzI0NjcsMjQgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQlVJTERfU1RSSU5HKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqc3RyOworICAgICAgICAgICAgUHlPYmplY3QgKmVtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKKyAgICAgICAgICAgIGlmIChlbXB0eSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0ciA9IF9QeVVuaWNvZGVfSm9pbkFycmF5KGVtcHR5LCBzdGFja19wb2ludGVyIC0gb3BhcmcsIG9wYXJnKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbXB0eSk7CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHdoaWxlICgtLW9wYXJnID49IDApIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFBPUCgpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBVU0goc3RyKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQlVJTERfVFVQTEUpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0dXAgPSBQeVR1cGxlX05ldyhvcGFyZyk7CiAgICAgICAgICAgICBpZiAodHVwID09IE5VTEwpCkBAIC0yNTQwLDEzICsyNTA5LDEzIEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9UVVBMRV9VTlBBQ0ssIF9idWlsZF9saXN0X3VucGFjaykKLSAgICAgICAgVEFSR0VUKEJVSUxEX0xJU1RfVU5QQUNLKQotICAgICAgICBfYnVpbGRfbGlzdF91bnBhY2s6IHsKKyAgICAgICAgVEFSR0VUKEJVSUxEX1RVUExFX1VOUEFDSykKKyAgICAgICAgVEFSR0VUKEJVSUxEX0xJU1RfVU5QQUNLKSB7CiAgICAgICAgICAgICBpbnQgY29udmVydF90b190dXBsZSA9IG9wY29kZSA9PSBCVUlMRF9UVVBMRV9VTlBBQ0s7Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeUxpc3RfTmV3KDApOwogICAgICAgICAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKwogICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTI1OTksNyArMjU2OCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoQlVJTERfU0VUX1VOUEFDSykgewotICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlTZXRfTmV3KE5VTEwpOwogICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjE4LDcgKzI1ODcsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKEJVSUxEX01BUCkgewotICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbWFwID0gX1B5RGljdF9OZXdQcmVzaXplZCgoUHlfc3NpemVfdClvcGFyZyk7CiAgICAgICAgICAgICBpZiAobWFwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2NDEsMzMgKzI2MTAsMTExIEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgX2J1aWxkX21hcF91bnBhY2spCi0gICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLKQotICAgICAgICBfYnVpbGRfbWFwX3VucGFjazogeworICAgICAgICBUQVJHRVQoU0VUVVBfQU5OT1RBVElPTlMpIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgUHlPYmplY3QgKmFubl9kaWN0OworICAgICAgICAgICAgaWYgKGYtPmZfbG9jYWxzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBsb2NhbHMgZm91bmQgd2hlbiBzZXR0aW5nIHVwIGFubm90YXRpb25zIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGNoZWNrIGlmIF9fYW5ub3RhdGlvbnNfXyBpbiBsb2NhbHMoKS4uLiAqLworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfbG9jYWxzKSkgeworICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIC4uLmlmIG5vdCwgY3JlYXRlIGEgbmV3IG9uZSAqLworICAgICAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXJyID0gX1B5RGljdF9TZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXywgYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBkbyB0aGUgc2FtZSBpZiBsb2NhbHMoKSBpcyBub3QgYSBkaWN0ICovCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubl9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2xvY2FscywgYW5uX3N0cik7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfU2V0SXRlbShmLT5mX2xvY2FscywgYW5uX3N0ciwgYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChCVUlMRF9DT05TVF9LRVlfTUFQKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICBQeU9iamVjdCAqbWFwOworICAgICAgICAgICAgUHlPYmplY3QgKmtleXMgPSBUT1AoKTsKKyAgICAgICAgICAgIGlmICghUHlUdXBsZV9DaGVja0V4YWN0KGtleXMpIHx8CisgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfU0laRShrZXlzKSAhPSAoUHlfc3NpemVfdClvcGFyZykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBCVUlMRF9DT05TVF9LRVlfTUFQIGtleXMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWFwID0gX1B5RGljdF9OZXdQcmVzaXplZCgoUHlfc3NpemVfdClvcGFyZyk7CisgICAgICAgICAgICBpZiAobWFwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKGtleXMsIG9wYXJnIC0gaSk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUEVFSyhpICsgMSk7CisgICAgICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0obWFwLCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1hcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUFVTSChtYXApOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCkKKyAgICAgICAgVEFSR0VUKEJVSUxEX01BUF9VTlBBQ0spIHsKICAgICAgICAgICAgIGludCB3aXRoX2NhbGwgPSBvcGNvZGUgPT0gQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEw7Ci0gICAgICAgICAgICBpbnQgbnVtX21hcHM7Ci0gICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb247Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeURpY3RfTmV3KCk7CiAgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICBudW1fbWFwcyA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbl9sb2NhdGlvbiA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbnVtX21hcHMgPSBvcGFyZzsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZm9yIChpID0gbnVtX21hcHM7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgIGZvciAoaSA9IG9wYXJnOyBpID4gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IFBFRUsoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgeworICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwgJiYgUHlEaWN0X1NpemUoc3VtKSkgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW50ZXJzZWN0aW9uID0gX1B5RGljdFZpZXdfSW50ZXJzZWN0KHN1bSwgYXJnKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9uID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEVFSyhmdW5jdGlvbl9sb2NhdGlvbiArIG51bV9tYXBzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKDIgKyBvcGFyZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKQEAgLTI2ODIsNyArMjcyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChQeVNldF9HRVRfU0laRShpbnRlcnNlY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGlkeCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKGZ1bmN0aW9uX2xvY2F0aW9uICsgbnVtX21hcHMpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKDIgKyBvcGFyZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVNldF9OZXh0RW50cnkoaW50ZXJzZWN0aW9uLCAmaWR4LCAma2V5LCAmaGFzaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CkBAIC0yNzE2LDcgKzI3NjMsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgd2hpbGUgKG51bV9tYXBzLS0pCisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOwogICAgICAgICAgICAgUFVTSChzdW0pOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKQEAgLTI3NjUsNDUgKzI4MTIsMTMgQEAKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChJTVBPUlRfTkFNRSkgewotICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnJvbSwgKmxldmVsLCAqYXJncywgKnJlczsKLSAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgICAgICAgICBmcm9tID0gUE9QKCk7Ci0gICAgICAgICAgICBsZXZlbCA9IFRPUCgpOwotICAgICAgICAgICAgaWYgKFB5TG9uZ19Bc0xvbmcobGV2ZWwpICE9IC0xIHx8IFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjayg1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUgOiBmLT5mX2xvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2dsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9sb2NhbHMgPT0gTlVMTCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSA6IGYtPmZfbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20pOworICAgICAgICAgICAgUHlPYmplY3QgKmZyb21saXN0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGV2ZWwgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgICAgICByZXMgPSBpbXBvcnRfbmFtZShmLCBuYW1lLCBmcm9tbGlzdCwgbGV2ZWwpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxldmVsKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tKTsKLSAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgU1RBQ0tBREooLTEpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7Ci0gICAgICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBhcmdzKTsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tbGlzdCk7CiAgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI4MjIsOSArMjgzNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICJubyBsb2NhbHMgZm91bmQgZHVyaW5nICdpbXBvcnQgKiciKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwogICAgICAgICAgICAgZXJyID0gaW1wb3J0X2FsbF9mcm9tKGxvY2FscywgZnJvbSk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CiAgICAgICAgICAgICBQeUZyYW1lX0xvY2Fsc1RvRmFzdChmLCAwKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tKTsKICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKQEAgLTI4MzYsOSArMjg0OSw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tID0gVE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwogICAgICAgICAgICAgcmVzID0gaW1wb3J0X2Zyb20oZnJvbSwgbmFtZSk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CiAgICAgICAgICAgICBQVVNIKHJlcyk7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI4NTAsNyArMjg2MSw3IEBACiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoUE9QX0pVTVBfSUZfRkFMU0UpOworICAgICAgICBQUkVESUNURUQoUE9QX0pVTVBfSUZfRkFMU0UpOwogICAgICAgICBUQVJHRVQoUE9QX0pVTVBfSUZfRkFMU0UpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25kID0gUE9QKCk7CiAgICAgICAgICAgICBpbnQgZXJyOwpAQCAtMjg3NCw3ICsyODg1LDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoUE9QX0pVTVBfSUZfVFJVRSk7CisgICAgICAgIFBSRURJQ1RFRChQT1BfSlVNUF9JRl9UUlVFKTsKICAgICAgICAgVEFSR0VUKFBPUF9KVU1QX0lGX1RSVUUpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25kID0gUE9QKCk7CiAgICAgICAgICAgICBpbnQgZXJyOwpAQCAtMjk1MSw3ICsyOTYyLDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoSlVNUF9BQlNPTFVURSk7CisgICAgICAgIFBSRURJQ1RFRChKVU1QX0FCU09MVVRFKTsKICAgICAgICAgVEFSR0VUKEpVTVBfQUJTT0xVVEUpIHsKICAgICAgICAgICAgIEpVTVBUTyhvcGFyZyk7CiAjaWYgRkFTVF9MT09QUwpAQCAtMjk3Nyw2ICsyOTg4LDcgQEAKICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIFBSRURJQ1QoRk9SX0lURVIpOworICAgICAgICAgICAgUFJFRElDVChDQUxMX0ZVTkNUSU9OKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzAwNSwxMCArMzAxNywxMSBAQAogICAgICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhGT1JfSVRFUik7CisgICAgICAgIFBSRURJQ1RFRChGT1JfSVRFUik7CiAgICAgICAgIFRBUkdFVChGT1JfSVRFUikgewogICAgICAgICAgICAgLyogYmVmb3JlOiBbaXRlcl07IGFmdGVyOiBbaXRlciwgaXRlcigpXSAqb3IqIFtdICovCiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlciA9IFRPUCgpOwpAQCAtMzAzMCw2ICszMDQzLDcgQEAKICAgICAgICAgICAgIFNUQUNLQURKKC0xKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKICAgICAgICAgICAgIEpVTVBCWShvcGFyZyk7CisgICAgICAgICAgICBQUkVESUNUKFBPUF9CTE9DSyk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTMwNDYsMTAgKzMwNjAsOSBAQAogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoU0VUVVBfTE9PUCwgX3NldHVwX2ZpbmFsbHkpCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoU0VUVVBfRVhDRVBULCBfc2V0dXBfZmluYWxseSkKLSAgICAgICAgVEFSR0VUKFNFVFVQX0ZJTkFMTFkpCi0gICAgICAgIF9zZXR1cF9maW5hbGx5OiB7CisgICAgICAgIFRBUkdFVChTRVRVUF9MT09QKQorICAgICAgICBUQVJHRVQoU0VUVVBfRVhDRVBUKQorICAgICAgICBUQVJHRVQoU0VUVVBfRklOQUxMWSkgewogICAgICAgICAgICAgLyogTk9URTogSWYgeW91IGFkZCBhbnkgbmV3IGJsb2NrLXNldHVwIG9wY29kZXMgdGhhdAogICAgICAgICAgICAgICAgYXJlIG5vdCB0cnkvZXhjZXB0L2ZpbmFsbHkgaGFuZGxlcnMsIHlvdSBtYXkgbmVlZAogICAgICAgICAgICAgICAgdG8gdXBkYXRlIHRoZSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoKSBmdW5jdGlvbi4KQEAgLTMwODAsNiArMzA5Myw3IEBACiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIFBVU0gocmVzKTsKKyAgICAgICAgICAgIFBSRURJQ1QoR0VUX0FXQUlUQUJMRSk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTMyMjgsMTc4ICszMjQyLDEzNSBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChDQUxMX0ZVTkNUSU9OKTsKICAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT04pIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3AsICpyZXM7CiAgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOwogICAgICAgICAgICAgc3AgPSBzdGFja19wb2ludGVyOwotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcsICZpbnRyMCwgJmludHIxKTsKLSNlbHNlCi0gICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcpOwotI2VuZGlmCisgICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcsIE5VTEwpOwogICAgICAgICAgICAgc3RhY2tfcG9pbnRlciA9IHNwOwogICAgICAgICAgICAgUFVTSChyZXMpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKENBTExfRlVOQ1RJT05fVkFSLCBfY2FsbF9mdW5jdGlvbl92YXJfa3cpCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQ0FMTF9GVU5DVElPTl9LVywgX2NhbGxfZnVuY3Rpb25fdmFyX2t3KQotICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTl9WQVJfS1cpCi0gICAgICAgIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdzogewotICAgICAgICAgICAgaW50IG5hID0gb3BhcmcgJiAweGZmOwotICAgICAgICAgICAgaW50IG5rID0gKG9wYXJnPj44KSAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQgZmxhZ3MgPSAob3Bjb2RlIC0gQ0FMTF9GVU5DVElPTikgJiAzOwotICAgICAgICAgICAgaW50IG4gPSBuYSArIDIgKiBuazsKLSAgICAgICAgICAgIFB5T2JqZWN0ICoqcGZ1bmMsICpmdW5jLCAqKnNwLCAqcmVzOworICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTl9LVykgeworICAgICAgICAgICAgUHlPYmplY3QgKipzcCwgKnJlcywgKm5hbWVzOworCisgICAgICAgICAgICBuYW1lcyA9IFBPUCgpOworICAgICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2tFeGFjdChuYW1lcykgJiYgUHlUdXBsZV9HRVRfU0laRShuYW1lcykgPD0gb3BhcmcpOwogICAgICAgICAgICAgUENBTEwoUENBTExfQUxMKTsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIENBTExfRkxBR19WQVIpCi0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX0tXKQotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgIHBmdW5jID0gc3RhY2tfcG9pbnRlciAtIG4gLSAxOwotICAgICAgICAgICAgZnVuYyA9ICpwZnVuYzsKLQotICAgICAgICAgICAgaWYgKFB5TWV0aG9kX0NoZWNrKGZ1bmMpCi0gICAgICAgICAgICAgICAgJiYgUHlNZXRob2RfR0VUX1NFTEYoZnVuYykgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzZWxmID0gUHlNZXRob2RfR0VUX1NFTEYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYyk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgIFB5X1NFVFJFRigqcGZ1bmMsIHNlbGYpOwotICAgICAgICAgICAgICAgIG5hKys7Ci0gICAgICAgICAgICAgICAgLyogbisrOyAqLwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwogICAgICAgICAgICAgc3AgPSBzdGFja19wb2ludGVyOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwotICAgICAgICAgICAgcmVzID0gZXh0X2RvX2NhbGwoZnVuYywgJnNwLCBmbGFncywgbmEsIG5rKTsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIxKTsKKyAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZywgbmFtZXMpOwogICAgICAgICAgICAgc3RhY2tfcG9pbnRlciA9IHNwOwotICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotCi0gICAgICAgICAgICB3aGlsZSAoc3RhY2tfcG9pbnRlciA+IHBmdW5jKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm8gPSBQT1AoKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobyk7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBQVVNIKHJlcyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOworCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoTUFLRV9DTE9TVVJFLCBfbWFrZV9mdW5jdGlvbikKLSAgICAgICAgVEFSR0VUKE1BS0VfRlVOQ1RJT04pCi0gICAgICAgIF9tYWtlX2Z1bmN0aW9uOiB7Ci0gICAgICAgICAgICBpbnQgcG9zZGVmYXVsdHMgPSBvcGFyZyAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQga3dkZWZhdWx0cyA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgaW50IG51bV9hbm5vdGF0aW9ucyA9IChvcGFyZyA+PiAxNikgJiAweDdmZmY7CisgICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OX0VYKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZnVuYywgKmNhbGxhcmdzLCAqa3dhcmdzID0gTlVMTCwgKnJlc3VsdDsKKyAgICAgICAgICAgIFBDQUxMKFBDQUxMX0FMTCk7CisgICAgICAgICAgICBpZiAob3BhcmcgJiAweDAxKSB7CisgICAgICAgICAgICAgICAga3dhcmdzID0gUE9QKCk7CisgICAgICAgICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChrd2FyZ3MpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgICAgICAgICBpZiAoZCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoZCwga3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBQeURpY3RfVXBkYXRlIHJhaXNlcyBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGVycm9yIChwZXJjb2xhdGVkIGZyb20gYW4gYXR0ZW1wdAorICAgICAgICAgICAgICAgICAgICAgICAgICogdG8gZ2V0ICdrZXlzJyBhdHRyaWJ1dGUpIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGEgdHlwZSBlcnJvciBpZiBpdHMgc2Vjb25kIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgKiBpcyBub3QgYSBtYXBwaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jID0gU0VDT05EKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICAgICAgICAgICAgICBrd2FyZ3MgPSBkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3Qoa3dhcmdzKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYWxsYXJncyA9IFBPUCgpOworICAgICAgICAgICAgZnVuYyA9IFRPUCgpOworICAgICAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGNhbGxhcmdzKSkgeworICAgICAgICAgICAgICAgIGlmIChQeV9UWVBFKGNhbGxhcmdzKS0+dHBfaXRlciA9PSBOVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhUHlTZXF1ZW5jZV9DaGVjayhjYWxsYXJncykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYXJncy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYXJncyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X1NFVFJFRihjYWxsYXJncywgUHlTZXF1ZW5jZV9UdXBsZShjYWxsYXJncykpOworICAgICAgICAgICAgICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soY2FsbGFyZ3MpKTsKIAotICAgICAgICAgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gUE9QKCk7IC8qIHF1YWxuYW1lICovCi0gICAgICAgICAgICBQeU9iamVjdCAqY29kZSA9IFBPUCgpOyAvKiBjb2RlIG9iamVjdCAqLwotICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShjb2RlLCBmLT5mX2dsb2JhbHMsIHF1YWxuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CisgICAgICAgICAgICByZXN1bHQgPSBkb19jYWxsX2NvcmUoZnVuYywgY2FsbGFyZ3MsIGt3YXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFyZ3MpOworICAgICAgICAgICAgUHlfWERFQ1JFRihrd2FyZ3MpOwogCi0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQorICAgICAgICAgICAgU0VUX1RPUChyZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBNQUtFX0NMT1NVUkUpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xvc3VyZSA9IFBPUCgpOwotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldENsb3N1cmUoZnVuYywgY2xvc3VyZSkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzIGJ5dGVjb2RlIGlzIGNvcnJ1cHQuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNsb3N1cmUpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2xvc3VyZSk7CisgICAgICAgIFRBUkdFVChNQUtFX0ZVTkNUSU9OKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjb2Rlb2JqID0gUE9QKCk7CisgICAgICAgICAgICBQeUZ1bmN0aW9uT2JqZWN0ICpmdW5jID0gKFB5RnVuY3Rpb25PYmplY3QgKikKKyAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShjb2Rlb2JqLCBmLT5mX2dsb2JhbHMsIHF1YWxuYW1lKTsKKworICAgICAgICAgICAgUHlfREVDUkVGKGNvZGVvYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKKyAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobnVtX2Fubm90YXRpb25zID4gMCkgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFtZV9peDsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMgPSBQT1AoKTsgLyogbmFtZXMgb2YgYXJncyB3aXRoIGFubm90YXRpb25zICovCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubnMgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGFubnMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5hbWVfaXggPSBQeVR1cGxlX1NpemUobmFtZXMpOwotICAgICAgICAgICAgICAgIGFzc2VydChudW1fYW5ub3RhdGlvbnMgPT0gbmFtZV9peCsxKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobmFtZV9peCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUsICp2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgICAgICAgICAgLS1uYW1lX2l4OwotICAgICAgICAgICAgICAgICAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShuYW1lcywgbmFtZV9peCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGFubnMsIG5hbWUsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5ucyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMoZnVuYywgYW5ucykgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzCi0gICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMgY2hhbmdlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5zKTsKKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYyAtPmZ1bmNfY2xvc3VyZSA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwNCkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChUT1AoKSkpOworICAgICAgICAgICAgICAgIGZ1bmMtPmZ1bmNfYW5ub3RhdGlvbnMgPSBQT1AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDIpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jLT5mdW5jX2t3ZGVmYXVsdHMgPSBQT1AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDEpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYy0+ZnVuY19kZWZhdWx0cyA9IFBPUCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvKiBYWFggTWF5YmUgdGhpcyBzaG91bGQgYmUgYSBzZXBhcmF0ZSBvcGNvZGU/ICovCi0gICAgICAgICAgICBpZiAoa3dkZWZhdWx0cyA+IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmcyA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgICAgICBpZiAoZGVmcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2hpbGUgKC0ta3dkZWZhdWx0cyA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7IC8qIGRlZmF1bHQgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFBPUCgpOyAvKiBrdyBvbmx5IGFyZyBuYW1lICovCi0gICAgICAgICAgICAgICAgICAgIGludCBlcnIgPSBQeURpY3RfU2V0SXRlbShkZWZzLCBrZXksIHYpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0S3dEZWZhdWx0cyhmdW5jLCBkZWZzKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXRLd0RlZmF1bHRzIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocG9zZGVmYXVsdHMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZnMgPSBQeVR1cGxlX05ldyhwb3NkZWZhdWx0cyk7Ci0gICAgICAgICAgICAgICAgaWYgKGRlZnMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHdoaWxlICgtLXBvc2RlZmF1bHRzID49IDApCi0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oZGVmcywgcG9zZGVmYXVsdHMsIFBPUCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXREZWZhdWx0cyhmdW5jLCBkZWZzKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXREZWZhdWx0cyBjaGFuZ2VzLiAqLwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUFVTSChmdW5jKTsKKyAgICAgICAgICAgIFBVU0goKFB5T2JqZWN0ICopZnVuYyk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTM0MjEsOSArMzM5Miw2OCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChGT1JNQVRfVkFMVUUpIHsKKyAgICAgICAgICAgIC8qIEhhbmRsZXMgZi1zdHJpbmcgdmFsdWUgZm9ybWF0dGluZy4gKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgICAgICBQeU9iamVjdCAqZm10X3NwZWM7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgICAgICAgICBQeU9iamVjdCAqKCpjb252X2ZuKShQeU9iamVjdCAqKTsKKyAgICAgICAgICAgIGludCB3aGljaF9jb252ZXJzaW9uID0gb3BhcmcgJiBGVkNfTUFTSzsKKyAgICAgICAgICAgIGludCBoYXZlX2ZtdF9zcGVjID0gKG9wYXJnICYgRlZTX01BU0spID09IEZWU19IQVZFX1NQRUM7CisKKyAgICAgICAgICAgIGZtdF9zcGVjID0gaGF2ZV9mbXRfc3BlYyA/IFBPUCgpIDogTlVMTDsKKyAgICAgICAgICAgIHZhbHVlID0gUE9QKCk7CisKKyAgICAgICAgICAgIC8qIFNlZSBpZiBhbnkgY29udmVyc2lvbiBpcyBzcGVjaWZpZWQuICovCisgICAgICAgICAgICBzd2l0Y2ggKHdoaWNoX2NvbnZlcnNpb24pIHsKKyAgICAgICAgICAgIGNhc2UgRlZDX1NUUjogICBjb252X2ZuID0gUHlPYmplY3RfU3RyOyAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGVkNfUkVQUjogIGNvbnZfZm4gPSBQeU9iamVjdF9SZXByOyAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZWQ19BU0NJSTogY29udl9mbiA9IFB5T2JqZWN0X0FTQ0lJOyBicmVhazsKKworICAgICAgICAgICAgLyogTXVzdCBiZSAwIChtZWFuaW5nIG5vIGNvbnZlcnNpb24pLCBzaW5jZSBvbmx5IGZvdXIKKyAgICAgICAgICAgICAgIHZhbHVlcyBhcmUgYWxsb3dlZCBieSAob3BhcmcgJiBGVkNfTUFTSykuICovCisgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgY29udl9mbiA9IE5VTEw7ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgdGhlcmUncyBhIGNvbnZlcnNpb24gZnVuY3Rpb24sIGNhbGwgaXQgYW5kIHJlcGxhY2UKKyAgICAgICAgICAgICAgIHZhbHVlIHdpdGggdGhhdCByZXN1bHQuIE90aGVyd2lzZSwganVzdCB1c2UgdmFsdWUsCisgICAgICAgICAgICAgICB3aXRob3V0IGNvbnZlcnNpb24uICovCisgICAgICAgICAgICBpZiAoY29udl9mbiAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29udl9mbih2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhbHVlID0gcmVzdWx0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiB2YWx1ZSBpcyBhIHVuaWNvZGUgb2JqZWN0LCBhbmQgdGhlcmUncyBubyBmbXRfc3BlYywKKyAgICAgICAgICAgICAgIHRoZW4gd2Uga25vdyB0aGUgcmVzdWx0IG9mIGZvcm1hdCh2YWx1ZSkgaXMgdmFsdWUKKyAgICAgICAgICAgICAgIGl0c2VsZi4gSW4gdGhhdCBjYXNlLCBza2lwIGNhbGxpbmcgZm9ybWF0KCkuIEkgcGxhbiB0bworICAgICAgICAgICAgICAgbW92ZSB0aGlzIG9wdGltaXphdGlvbiBpbiB0byBQeU9iamVjdF9Gb3JtYXQoKQorICAgICAgICAgICAgICAgaXRzZWxmLiAqLworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHZhbHVlKSAmJiBmbXRfc3BlYyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogRG8gbm90aGluZywganVzdCB0cmFuc2ZlciBvd25lcnNoaXAgdG8gcmVzdWx0LiAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBBY3R1YWxseSBjYWxsIGZvcm1hdCgpLiAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdCh2YWx1ZSwgZm10X3NwZWMpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQVVNIKHJlc3VsdCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKICAgICAgICAgVEFSR0VUKEVYVEVOREVEX0FSRykgewotICAgICAgICAgICAgb3Bjb2RlID0gTkVYVE9QKCk7Ci0gICAgICAgICAgICBvcGFyZyA9IG9wYXJnPDwxNiB8IE5FWFRBUkcoKTsKKyAgICAgICAgICAgIGludCBvbGRvcGFyZyA9IG9wYXJnOworICAgICAgICAgICAgTkVYVE9QQVJHKCk7CisgICAgICAgICAgICBvcGFyZyB8PSBvbGRvcGFyZyA8PCA4OwogICAgICAgICAgICAgZ290byBkaXNwYXRjaF9vcGNvZGU7CiAgICAgICAgIH0KIApAQCAtMzQ1MCw3ICszNDgwLDYgQEAKICAgICAgICAgYXNzZXJ0KDApOwogCiBlcnJvcjoKLSAgICAgICAgUkVBRF9USU1FU1RBTVAoaW5zdDEpOwogCiAgICAgICAgIGFzc2VydCh3aHkgPT0gV0hZX05PVCk7CiAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CkBAIC0zNTU0LDcgKzM1ODMsNiBAQAogCiAgICAgICAgIGlmICh3aHkgIT0gV0hZX05PVCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMSk7CiAKICAgICAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKIApAQCAtMzU3Myw3ICszNjAxLDcgQEAKICAgICBhc3NlcnQoKHJldHZhbCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKIAogZmFzdF95aWVsZDoKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSkpIHsKKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKIAogICAgICAgICAvKiBUaGUgcHVycG9zZSBvZiB0aGlzIGJsb2NrIGlzIHRvIHB1dCBhc2lkZSB0aGUgZ2VuZXJhdG9yJ3MgZXhjZXB0aW9uCiAgICAgICAgICAgIHN0YXRlIGFuZCByZXN0b3JlIHRoYXQgb2YgdGhlIGNhbGxpbmcgZnJhbWUuIElmIHRoZSBjdXJyZW50CkBAIC0zNTg0LDkgKzM2MTIsMTEgQEAKICAgICAgICAgICAgc3RhdGUgY2FtZSBpbnRvIGV4aXN0ZW5jZSBpbiB0aGlzIGZyYW1lLiAoQW4gdW5jYXVnaHQgZXhjZXB0aW9uCiAgICAgICAgICAgIHdvdWxkIGhhdmUgd2h5ID09IFdIWV9FWENFUFRJT04sIGFuZCB3ZSB3b3VsZG4ndCBiZSBoZXJlKS4gKi8KICAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBmLT5mX2libG9jazsgaSsrKQotICAgICAgICAgICAgaWYgKGYtPmZfYmxvY2tzdGFja1tpXS5iX3R5cGUgPT0gRVhDRVBUX0hBTkRMRVIpCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmLT5mX2libG9jazsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZi0+Zl9ibG9ja3N0YWNrW2ldLmJfdHlwZSA9PSBFWENFUFRfSEFORExFUikgewogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChpID09IGYtPmZfaWJsb2NrKQogICAgICAgICAgICAgLyogV2UgZGlkIG5vdCBjcmVhdGUgdGhpcyBleGNlcHRpb24uICovCiAgICAgICAgICAgICByZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUodHN0YXRlLCBmKTsKQEAgLTM2MjcsNiArMzY1Nyw4IEBACiAKICAgICAvKiBwb3AgZnJhbWUgKi8KIGV4aXRfZXZhbF9mcmFtZToKKyAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOX0VOQUJMRUQoKSkKKyAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX3JldHVybihmKTsKICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICBmLT5mX2V4ZWN1dGluZyA9IDA7CiAgICAgdHN0YXRlLT5mcmFtZSA9IGYtPmZfYmFjazsKQEAgLTM2OTcsMTIgKzM3MjksMTIgQEAKIH0KIAogc3RhdGljIHZvaWQKLW1pc3NpbmdfYXJndW1lbnRzKFB5Q29kZU9iamVjdCAqY28sIGludCBtaXNzaW5nLCBpbnQgZGVmY291bnQsCittaXNzaW5nX2FyZ3VtZW50cyhQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IG1pc3NpbmcsIFB5X3NzaXplX3QgZGVmY291bnQsCiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCiB7Ci0gICAgaW50IGksIGogPSAwOwotICAgIGludCBzdGFydCwgZW5kOwotICAgIGludCBwb3NpdGlvbmFsID0gZGVmY291bnQgIT0gLTE7CisgICAgUHlfc3NpemVfdCBpLCBqID0gMDsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBlbmQ7CisgICAgaW50IHBvc2l0aW9uYWwgPSAoZGVmY291bnQgIT0gLTEpOwogICAgIGNvbnN0IGNoYXIgKmtpbmQgPSBwb3NpdGlvbmFsID8gInBvc2l0aW9uYWwiIDogImtleXdvcmQtb25seSI7CiAgICAgUHlPYmplY3QgKm1pc3NpbmdfbmFtZXM7CiAKQEAgLTM3MzUsMzMgKzM3NjcsMzkgQEAKIH0KIAogc3RhdGljIHZvaWQKLXRvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgaW50IGdpdmVuLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKK3Rvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgUHlfc3NpemVfdCBnaXZlbiwgUHlfc3NpemVfdCBkZWZjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzKQogewogICAgIGludCBwbHVyYWw7Ci0gICAgaW50IGt3b25seV9naXZlbiA9IDA7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBrd29ubHlfZ2l2ZW4gPSAwOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqc2lnLCAqa3dvbmx5X3NpZzsKKyAgICBQeV9zc2l6ZV90IGNvX2FyZ2NvdW50ID0gY28tPmNvX2FyZ2NvdW50OwogCiAgICAgYXNzZXJ0KChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSA9PSAwKTsKICAgICAvKiBDb3VudCBtaXNzaW5nIGtleXdvcmQtb25seSBhcmdzLiAqLwotICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IGNvLT5jb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsgaSsrKQotICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKKyAgICBmb3IgKGkgPSBjb19hcmdjb3VudDsgaSA8IGNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpIHsKICAgICAgICAgICAgIGt3b25seV9naXZlbisrOworICAgICAgICB9CisgICAgfQogICAgIGlmIChkZWZjb3VudCkgewotICAgICAgICBpbnQgYXRsZWFzdCA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgICAgICBQeV9zc2l6ZV90IGF0bGVhc3QgPSBjb19hcmdjb3VudCAtIGRlZmNvdW50OwogICAgICAgICBwbHVyYWwgPSAxOwotICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZnJvbSAlZCB0byAlZCIsIGF0bGVhc3QsIGNvLT5jb19hcmdjb3VudCk7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJmcm9tICV6ZCB0byAlemQiLCBhdGxlYXN0LCBjb19hcmdjb3VudCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBwbHVyYWwgPSBjby0+Y29fYXJnY291bnQgIT0gMTsKLSAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVkIiwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICAgICAgcGx1cmFsID0gKGNvX2FyZ2NvdW50ICE9IDEpOworICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXpkIiwgY29fYXJnY291bnQpOwogICAgIH0KICAgICBpZiAoc2lnID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoa3dvbmx5X2dpdmVuKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICIgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJWQga2V5d29yZC1vbmx5IGFyZ3VtZW50JXMpIjsKLSAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGZvcm1hdCwgZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiLCBrd29ubHlfZ2l2ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dvbmx5X2dpdmVuICE9IDEgPyAicyIgOiAiIik7CisgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICIgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJXpkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSI7CisgICAgICAgIGt3b25seV9zaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiAhPSAxID8gInMiIDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiKTsKICAgICAgICAgaWYgKGt3b25seV9zaWcgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNpZyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNzczLDcgKzM4MTEsNyBAQAogICAgICAgICBhc3NlcnQoa3dvbmx5X3NpZyAhPSBOVUxMKTsKICAgICB9CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlZCVVICVzIGdpdmVuIiwKKyAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlemQlVSAlcyBnaXZlbiIsCiAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAogICAgICAgICAgICAgICAgICBzaWcsCiAgICAgICAgICAgICAgICAgIHBsdXJhbCA/ICJzIiA6ICIiLApAQCAtMzc5MCwyMCArMzgyOCwyMiBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIGludCBhcmdjb3VudCwgUHlPYmplY3QgKiprd3MsIGludCBrd2NvdW50LAotICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCisgICAgICAgICAgIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBhcmdjb3VudCwKKyAgICAgICAgICAgUHlPYmplY3QgKiprd25hbWVzLCBQeU9iamVjdCAqKmt3YXJncywKKyAgICAgICAgICAgUHlfc3NpemVfdCBrd2NvdW50LCBpbnQga3dzdGVwLAorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIFB5X3NzaXplX3QgZGVmY291bnQsCisgICAgICAgICAgIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlLAogICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIFB5Q29kZU9iamVjdCogY28gPSAoUHlDb2RlT2JqZWN0KilfY287CiAgICAgUHlGcmFtZU9iamVjdCAqZjsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMsICoqZnJlZXZhcnM7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgUHlPYmplY3QgKngsICp1OwotICAgIGludCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OwotICAgIGludCBpOwotICAgIGludCBuID0gYXJnY291bnQ7Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7CisgICAgY29uc3QgUHlfc3NpemVfdCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OworICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeU9iamVjdCAqa3dkaWN0OwogCiAgICAgaWYgKGdsb2JhbHMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCkBAIC0zODExLDM2ICszODUxLDUwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIC8qIENyZWF0ZSB0aGUgZnJhbWUgKi8KKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KGdsb2JhbHMgIT0gTlVMTCk7CiAgICAgZiA9IFB5RnJhbWVfTmV3KHRzdGF0ZSwgY28sIGdsb2JhbHMsIGxvY2Fscyk7Ci0gICAgaWYgKGYgPT0gTlVMTCkKKyAgICBpZiAoZiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotCisgICAgfQogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKIAotICAgIC8qIFBhcnNlIGFyZ3VtZW50cy4gKi8KKyAgICAvKiBDcmVhdGUgYSBkaWN0aW9uYXJ5IGZvciBrZXl3b3JkIHBhcmFtZXRlcnMgKCoqa3dhZ3MpICovCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTKSB7CiAgICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBpID0gdG90YWxfYXJnczsKLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpCisgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSB7CiAgICAgICAgICAgICBpKys7CisgICAgICAgIH0KICAgICAgICAgU0VUTE9DQUwoaSwga3dkaWN0KTsKICAgICB9Ci0gICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50KQorICAgIGVsc2UgeworICAgICAgICBrd2RpY3QgPSBOVUxMOworICAgIH0KKworICAgIC8qIENvcHkgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBsb2NhbCB2YXJpYWJsZXMgKi8KKyAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpIHsKICAgICAgICAgbiA9IGNvLT5jb19hcmdjb3VudDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG4gPSBhcmdjb3VudDsKKyAgICB9CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICB4ID0gYXJnc1tpXTsKICAgICAgICAgUHlfSU5DUkVGKHgpOwogICAgICAgICBTRVRMT0NBTChpLCB4KTsKICAgICB9CisKKyAgICAvKiBQYWNrIG90aGVyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gdGhlICphcmdzIGFyZ3VtZW50ICovCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKICAgICAgICAgdSA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50IC0gbik7Ci0gICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIGlmICh1ID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQogICAgICAgICBTRVRMT0NBTCh0b3RhbF9hcmdzLCB1KTsKICAgICAgICAgZm9yIChpID0gbjsgaSA8IGFyZ2NvdW50OyBpKyspIHsKICAgICAgICAgICAgIHggPSBhcmdzW2ldOwpAQCAtMzg0OCw2OSArMzkwMiw4MiBAQAogICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh1LCBpLW4sIHgpOwogICAgICAgICB9CiAgICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBrd2NvdW50OyBpKyspIHsKKworICAgIC8qIEhhbmRsZSBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgYXMgdHdvIHN0cmlkZWQgYXJyYXlzICovCisgICAga3djb3VudCAqPSBrd3N0ZXA7CisgICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkgKz0ga3dzdGVwKSB7CiAgICAgICAgIFB5T2JqZWN0ICoqY29fdmFybmFtZXM7Ci0gICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3dzWzIqaV07Ci0gICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGt3c1syKmkgKyAxXTsKLSAgICAgICAgaW50IGo7CisgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3duYW1lc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0ga3dhcmdzW2ldOworICAgICAgICBQeV9zc2l6ZV90IGo7CisKICAgICAgICAgaWYgKGtleXdvcmQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGtleXdvcmQpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CisKICAgICAgICAgLyogU3BlZWQgaGFjazogZG8gcmF3IHBvaW50ZXIgY29tcGFyZXMuIEFzIG5hbWVzIGFyZQogICAgICAgICAgICBub3JtYWxseSBpbnRlcm5lZCB0aGlzIHNob3VsZCBhbG1vc3QgYWx3YXlzIGhpdC4gKi8KICAgICAgICAgY29fdmFybmFtZXMgPSAoKFB5VHVwbGVPYmplY3QgKikoY28tPmNvX3Zhcm5hbWVzKSktPm9iX2l0ZW07CiAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOwotICAgICAgICAgICAgaWYgKG5tID09IGtleXdvcmQpCisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IGNvX3Zhcm5hbWVzW2pdOworICAgICAgICAgICAgaWYgKG5hbWUgPT0ga2V5d29yZCkgewogICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKwogICAgICAgICAvKiBTbG93IGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKi8KICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAotICAgICAgICAgICAgICAgIGtleXdvcmQsIG5tLCBQeV9FUSk7Ci0gICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCBrZXl3b3JkLCBuYW1lLCBQeV9FUSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7Ci0gICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkgewogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIGlmIChqID49IHRvdGFsX2FyZ3MgJiYga3dkaWN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVTJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsIGtleXdvcmQpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CisKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5d29yZCwgdmFsdWUpID09IC0xKSB7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KICAgICAgICAgY29udGludWU7CisKICAgICAgIGt3X2ZvdW5kOgogICAgICAgICBpZiAoR0VUTE9DQUwoaikgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLCBrZXl3b3JkKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICBTRVRMT0NBTChqLCB2YWx1ZSk7CiAgICAgfQorCisgICAgLyogQ2hlY2sgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqLwogICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCAmJiAhKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpKSB7CiAgICAgICAgIHRvb19tYW55X3Bvc2l0aW9uYWwoY28sIGFyZ2NvdW50LCBkZWZjb3VudCwgZmFzdGxvY2Fscyk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CisKKyAgICAvKiBBZGQgbWlzc2luZyBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoY29weSBkZWZhdWx0IHZhbHVlcyBmcm9tIGRlZnMpICovCiAgICAgaWYgKGFyZ2NvdW50IDwgY28tPmNvX2FyZ2NvdW50KSB7Ci0gICAgICAgIGludCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7Ci0gICAgICAgIGludCBtaXNzaW5nID0gMDsKLSAgICAgICAgZm9yIChpID0gYXJnY291bnQ7IGkgPCBtOyBpKyspCi0gICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkKKyAgICAgICAgUHlfc3NpemVfdCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgICAgIFB5X3NzaXplX3QgbWlzc2luZyA9IDA7CisgICAgICAgIGZvciAoaSA9IGFyZ2NvdW50OyBpIDwgbTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIG1pc3NpbmcrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBpZiAobWlzc2luZykgewogICAgICAgICAgICAgbWlzc2luZ19hcmd1bWVudHMoY28sIG1pc3NpbmcsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTM5MjcsOCArMzk5NCwxMCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgLyogQWRkIG1pc3Npbmcga2V5d29yZCBhcmd1bWVudHMgKGNvcHkgZGVmYXVsdCB2YWx1ZXMgZnJvbSBrd2RlZnMpICovCiAgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA+IDApIHsKLSAgICAgICAgaW50IG1pc3NpbmcgPSAwOworICAgICAgICBQeV9zc2l6ZV90IG1pc3NpbmcgPSAwOwogICAgICAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCB0b3RhbF9hcmdzOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lOwogICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCkBAIC0zOTY5LDEzICs0MDM4LDE2IEBACiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIFNFVExPQ0FMKGNvLT5jb19ubG9jYWxzICsgaSwgYyk7CiAgICAgfQorCisgICAgLyogQ29weSBjbG9zdXJlIHZhcmlhYmxlcyB0byBmcmVlIHZhcmlhYmxlcyAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19mcmVldmFycyk7ICsraSkgewogICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR0VUX0lURU0oY2xvc3VyZSwgaSk7CiAgICAgICAgIFB5X0lOQ1JFRihvKTsKICAgICAgICAgZnJlZXZhcnNbUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICsgaV0gPSBvOwogICAgIH0KIAotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIC8qIEhhbmRsZSBnZW5lcmF0b3IvY29yb3V0aW5lL2FzeW5jaHJvbm91cyBnZW5lcmF0b3IgKi8KKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKICAgICAgICAgUHlPYmplY3QgKmdlbjsKICAgICAgICAgUHlPYmplY3QgKmNvcm9fd3JhcHBlciA9IHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXI7CiAgICAgICAgIGludCBpc19jb3JvID0gY28tPmNvX2ZsYWdzICYgQ09fQ09ST1VUSU5FOwpAQCAtNDAwMCw2ICs0MDcyLDggQEAKICAgICAgICAgICogYW5kIHJldHVybiB0aGF0IGFzIHRoZSB2YWx1ZS4gKi8KICAgICAgICAgaWYgKGlzX2Nvcm8pIHsKICAgICAgICAgICAgIGdlbiA9IFB5Q29yb19OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOworICAgICAgICB9IGVsc2UgaWYgKGNvLT5jb19mbGFncyAmIENPX0FTWU5DX0dFTkVSQVRPUikgeworICAgICAgICAgICAgZ2VuID0gUHlBc3luY0dlbl9OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZ2VuID0gUHlHZW5fTmV3V2l0aFF1YWxOYW1lKGYsIG5hbWUsIHF1YWxuYW1lKTsKICAgICAgICAgfQpAQCAtNDAzOSw4ICs0MTEzLDEwIEBACiAgICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqa3dkZWZzLCBQeU9iamVjdCAqY2xvc3VyZSkKIHsKICAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKF9jbywgZ2xvYmFscywgbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgYXJnY291bnQsIGt3cywga3djb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMsIGRlZmNvdW50LCBrd2RlZnMsIGNsb3N1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBhcmdjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3cywga3dzICsgMSwga3djb3VudCwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMsIGRlZmNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dkZWZzLCBjbG9zdXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiB9CiAKQEAgLTQyOTksNyArNDM3NSw3IEBACiAKICNpZmRlZiBMTFRSQUNFCiBzdGF0aWMgaW50Ci1wcnRyYWNlKFB5T2JqZWN0ICp2LCBjaGFyICpzdHIpCitwcnRyYWNlKFB5T2JqZWN0ICp2LCBjb25zdCBjaGFyICpzdHIpCiB7CiAgICAgcHJpbnRmKCIlcyAiLCBzdHIpOwogICAgIGlmIChQeU9iamVjdF9QcmludCh2LCBzdGRvdXQsIDApICE9IDApCkBAIC00NDc2LDYgKzQ1NTIsMzggQEAKICAgICByZXR1cm4gdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcjsKIH0KIAordm9pZAorX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihQeU9iamVjdCAqZmlyc3RpdGVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9YSU5DUkVGKGZpcnN0aXRlcik7CisgICAgUHlfWFNFVFJFRih0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXIsIGZpcnN0aXRlcik7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIHJldHVybiB0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXI7Cit9CisKK3ZvaWQKK19QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoUHlPYmplY3QgKmZpbmFsaXplcikKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgUHlfWElOQ1JFRihmaW5hbGl6ZXIpOworICAgIFB5X1hTRVRSRUYodHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyLCBmaW5hbGl6ZXIpOworfQorCitQeU9iamVjdCAqCitfUHlFdmFsX0dldEFzeW5jR2VuRmluYWxpemVyKHZvaWQpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyOworfQorCiBQeU9iamVjdCAqCiBQeUV2YWxfR2V0QnVpbHRpbnModm9pZCkKIHsKQEAgLTQ1NDgsMTAgKzQ2NTYsOCBAQAogICAgVGhlIGFyZyBtdXN0IGJlIGEgdHVwbGUgb3IgTlVMTC4gIFRoZSBrdyBtdXN0IGJlIGEgZGljdCBvciBOVUxMLiAqLwogCiBQeU9iamVjdCAqCi1QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KICNpZmRlZiBQeV9ERUJVRwogICAgIC8qIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uCiAgICAgICAgc2V0LiBJdCByYWlzZXMgYSBuZXcgZXhjZXB0aW9uIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgb3IgaWYKQEAgLTQ1NTksMzAgKzQ2NjUsMjMgQEAKICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogI2VuZGlmCiAKLSAgICBpZiAoYXJnID09IE5VTEwpIHsKLSAgICAgICAgYXJnID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIGlmIChhcmcgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgTlVMTCwgMCwga3dhcmdzKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoIVB5VHVwbGVfQ2hlY2soYXJnKSkgeworCisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbGlzdCBtdXN0IGJlIGEgdHVwbGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKGFyZyk7CiAKLSAgICBpZiAoa3cgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGt3KSkgeworICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGt3YXJncykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGxpc3QgbXVzdCBiZSBhIGRpY3Rpb25hcnkiKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJnLCBrdyk7Ci0gICAgUHlfREVDUkVGKGFyZyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIGt3YXJncyk7CiB9CiAKIGNvbnN0IGNoYXIgKgpAQCAtNDYxMSwyMSArNDcxMCw2IEBACiAgICAgICAgIHJldHVybiAiIG9iamVjdCI7CiB9CiAKLXN0YXRpYyB2b2lkCi1lcnJfYXJncyhQeU9iamVjdCAqZnVuYywgaW50IGZsYWdzLCBpbnQgbmFyZ3MpCi17Ci0gICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MpCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpLT5tX21sLT5tbF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgbmFyZ3MpOwotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgICgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKS0+bV9tbC0+bWxfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIG5hcmdzKTsKLX0KLQogI2RlZmluZSBDX1RSQUNFKHgsIGNhbGwpIFwKIGlmICh0c3RhdGUtPnVzZV90cmFjaW5nICYmIHRzdGF0ZS0+Y19wcm9maWxlZnVuYykgeyBcCiAgICAgaWYgKGNhbGxfdHJhY2UodHN0YXRlLT5jX3Byb2ZpbGVmdW5jLCB0c3RhdGUtPmNfcHJvZmlsZW9iaiwgXApAQCAtNDY1OCw2MCArNDc0MiwyNSBAQAogICAgIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBvcGFyZwotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICAgICAgLCB1aW50NjQqIHBpbnRyMCwgdWludDY0KiBwaW50cjEKLSNlbmRpZgotICAgICAgICAgICAgICAgICkKK2NhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqcHBfc3RhY2ssIFB5X3NzaXplX3Qgb3BhcmcsIFB5T2JqZWN0ICprd25hbWVzKQogewotICAgIGludCBuYSA9IG9wYXJnICYgMHhmZjsKLSAgICBpbnQgbmsgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICBpbnQgbiA9IG5hICsgMiAqIG5rOwotICAgIFB5T2JqZWN0ICoqcGZ1bmMgPSAoKnBwX3N0YWNrKSAtIG4gLSAxOworICAgIFB5T2JqZWN0ICoqcGZ1bmMgPSAoKnBwX3N0YWNrKSAtIG9wYXJnIC0gMTsKICAgICBQeU9iamVjdCAqZnVuYyA9ICpwZnVuYzsKICAgICBQeU9iamVjdCAqeCwgKnc7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBQeV9zc2l6ZV90IG5hcmdzID0gb3BhcmcgLSBua3dhcmdzOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CiAKICAgICAvKiBBbHdheXMgZGlzcGF0Y2ggUHlDRnVuY3Rpb24gZmlyc3QsIGJlY2F1c2UgdGhlc2UgYXJlCiAgICAgICAgcHJlc3VtZWQgdG8gYmUgdGhlIG1vc3QgZnJlcXVlbnQgY2FsbGFibGUgb2JqZWN0LgogICAgICovCi0gICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpICYmIG5rID09IDApIHsKLSAgICAgICAgaW50IGZsYWdzID0gUHlDRnVuY3Rpb25fR0VUX0ZMQUdTKGZ1bmMpOworICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgewogICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogCiAgICAgICAgIFBDQUxMKFBDQUxMX0NGVU5DVElPTik7Ci0gICAgICAgIGlmIChmbGFncyAmIChNRVRIX05PQVJHUyB8IE1FVEhfTykpIHsKLSAgICAgICAgICAgIFB5Q0Z1bmN0aW9uIG1ldGggPSBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04oZnVuYyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MgJiYgbmEgPT0gMCkgewotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLE5VTEwpKTsKIAotICAgICAgICAgICAgICAgIHggPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCB4LCBOVUxMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTUVUSF9PICYmIG5hID09IDEpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLGFyZykpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmcpOwotCi0gICAgICAgICAgICAgICAgeCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHgsIE5VTEwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyX2FyZ3MoZnVuYywgZmxhZ3MsIG5hKTsKLSAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpjYWxsYXJnczsKLSAgICAgICAgICAgIGNhbGxhcmdzID0gbG9hZF9hcmdzKHBwX3N0YWNrLCBuYSk7Ci0gICAgICAgICAgICBpZiAoY2FsbGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjApOwotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLGNhbGxhcmdzLE5VTEwpKTsKLSAgICAgICAgICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIxKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuYXJncyAtIG5rd2FyZ3M7CisgICAgICAgIENfVFJBQ0UoeCwgX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykgJiYgUHlNZXRob2RfR0VUX1NFTEYoZnVuYykgIT0gTlVMTCkgewpAQCAtNDcyMywyMSArNDc3MiwyNiBAQAogICAgICAgICAgICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihmdW5jKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKICAgICAgICAgICAgIFB5X1NFVFJFRigqcGZ1bmMsIHNlbGYpOwotICAgICAgICAgICAgbmErKzsKLSAgICAgICAgICAgIG4rKzsKLSAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuYXJncysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIwKTsKLSAgICAgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpCi0gICAgICAgICAgICB4ID0gZmFzdF9mdW5jdGlvbihmdW5jLCBwcF9zdGFjaywgbiwgbmEsIG5rKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgeCA9IGRvX2NhbGwoZnVuYywgcHBfc3RhY2ssIG5hLCBuayk7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjEpOwotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIH0KIAotICAgICAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisgICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuYXJncyAtIG5rd2FyZ3M7CisKKyAgICAgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgICAgIHggPSBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB4ID0gX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICB9CiAKKyAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisKICAgICAvKiBDbGVhciB0aGUgc3RhY2sgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIEFsc28gcmVtb3ZlcwogICAgICAgIHRoZSBhcmd1bWVudHMgaW4gY2FzZSB0aGV5IHdlcmVuJ3QgY29uc3VtZWQgYWxyZWFkeQogICAgICAgIChmYXN0X2Z1bmN0aW9uKCkgYW5kIGVycl9hcmdzKCkgbGVhdmUgdGhlbSBvbiB0aGUgc3RhY2spLgpAQCAtNDc0OCw3ICs0ODAyLDYgQEAKICAgICAgICAgUENBTEwoUENBTExfUE9QKTsKICAgICB9CiAKLSAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAgICAgcmV0dXJuIHg7CiB9CiAKQEAgLTQ3NjEsMTU5ICs0ODE0LDE5NyBAQAogICAgZG9uZSBiZWZvcmUgZXZhbHVhdGluZyB0aGUgZnJhbWUuCiAqLwogCitzdGF0aWMgUHlPYmplY3QqCitfUHlGdW5jdGlvbl9GYXN0Q2FsbChQeUNvZGVPYmplY3QgKmNvLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZ2xvYmFscykKK3sKKyAgICBQeUZyYW1lT2JqZWN0ICpmOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgUENBTEwoUENBTExfRkFTVEVSX0ZVTkNUSU9OKTsKKyAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKKyAgICAvKiBYWFggUGVyaGFwcyB3ZSBzaG91bGQgY3JlYXRlIGEgc3BlY2lhbGl6ZWQKKyAgICAgICBQeUZyYW1lX05ldygpIHRoYXQgZG9lc24ndCB0YWtlIGxvY2FscywgYnV0IGRvZXMKKyAgICAgICB0YWtlIGJ1aWx0aW5zIHdpdGhvdXQgc2FuaXR5IGNoZWNraW5nIHRoZW0uCisgICAgICAgKi8KKyAgICBhc3NlcnQodHN0YXRlICE9IE5VTEwpOworICAgIGYgPSBQeUZyYW1lX05ldyh0c3RhdGUsIGNvLCBnbG9iYWxzLCBOVUxMKTsKKyAgICBpZiAoZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeV9JTkNSRUYoKmFyZ3MpOworICAgICAgICBmYXN0bG9jYWxzW2ldID0gKmFyZ3MrKzsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlFdmFsX0V2YWxGcmFtZUV4KGYsMCk7CisKKyAgICArK3RzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOworICAgIFB5X0RFQ1JFRihmKTsKKyAgICAtLXRzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZhc3RfZnVuY3Rpb24oUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbiwgaW50IG5hLCBpbnQgbmspCitmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvID0gKFB5Q29kZU9iamVjdCAqKVB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyk7CiAgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpOwogICAgIFB5T2JqZWN0ICphcmdkZWZzID0gUHlGdW5jdGlvbl9HRVRfREVGQVVMVFMoZnVuYyk7Ci0gICAgUHlPYmplY3QgKmt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOwotICAgIFB5T2JqZWN0ICpuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOwotICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7Ci0gICAgUHlPYmplY3QgKipkID0gTlVMTDsKLSAgICBpbnQgbmQgPSAwOworICAgIFB5T2JqZWN0ICprd2RlZnMsICpjbG9zdXJlLCAqbmFtZSwgKnF1YWxuYW1lOworICAgIFB5T2JqZWN0ICoqZDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIFB5X3NzaXplX3QgbmQ7CisKKyAgICBhc3NlcnQoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlICovCiAKICAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7CiAgICAgUENBTEwoUENBTExfRkFTVF9GVU5DVElPTik7Ci0gICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbiAmJgotICAgICAgICBjby0+Y29fa3dvbmx5YXJnY291bnQgPT0gMCAmJiBuaz09MCAmJgotICAgICAgICBjby0+Y29fZmxhZ3MgPT0gKENPX09QVElNSVpFRCB8IENPX05FV0xPQ0FMUyB8IENPX05PRlJFRSkpIHsKLSAgICAgICAgUHlGcmFtZU9iamVjdCAqZjsKLSAgICAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7Ci0gICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0gICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscywgKipzdGFjazsKLSAgICAgICAgaW50IGk7CiAKLSAgICAgICAgUENBTEwoUENBTExfRkFTVEVSX0ZVTkNUSU9OKTsKLSAgICAgICAgYXNzZXJ0KGdsb2JhbHMgIT0gTlVMTCk7Ci0gICAgICAgIC8qIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBjcmVhdGUgYSBzcGVjaWFsaXplZAotICAgICAgICAgICBQeUZyYW1lX05ldygpIHRoYXQgZG9lc24ndCB0YWtlIGxvY2FscywgYnV0IGRvZXMKLSAgICAgICAgICAgdGFrZSBidWlsdGlucyB3aXRob3V0IHNhbml0eSBjaGVja2luZyB0aGVtLgotICAgICAgICAqLwotICAgICAgICBhc3NlcnQodHN0YXRlICE9IE5VTEwpOwotICAgICAgICBmID0gUHlGcmFtZV9OZXcodHN0YXRlLCBjbywgZ2xvYmFscywgTlVMTCk7Ci0gICAgICAgIGlmIChmID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICBmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwotICAgICAgICBzdGFjayA9ICgqcHBfc3RhY2spIC0gbjsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoKnN0YWNrKTsKLSAgICAgICAgICAgIGZhc3Rsb2NhbHNbaV0gPSAqc3RhY2srKzsKKyAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID09IDAgJiYgbmt3YXJncyA9PSAwICYmCisgICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkKKyAgICB7CisgICAgICAgIGlmIChhcmdkZWZzID09IE5VTEwgJiYgY28tPmNvX2FyZ2NvdW50ID09IG5hcmdzKSB7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIHN0YWNrLCBuYXJncywgZ2xvYmFscyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dmFsID0gUHlFdmFsX0V2YWxGcmFtZUV4KGYsMCk7Ci0gICAgICAgICsrdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7Ci0gICAgICAgIFB5X0RFQ1JFRihmKTsKLSAgICAgICAgLS10c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKLSAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgZWxzZSBpZiAobmFyZ3MgPT0gMCAmJiBhcmdkZWZzICE9IE5VTEwKKyAgICAgICAgICAgICAgICAgJiYgY28tPmNvX2FyZ2NvdW50ID09IFB5X1NJWkUoYXJnZGVmcykpIHsKKyAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cywgYnV0IGFsbCBwYXJhbWV0ZXJzIGhhdmUKKyAgICAgICAgICAgICAgIGEgZGVmYXVsdCB2YWx1ZTogdXNlIGRlZmF1bHQgdmFsdWVzIGFzIGFyZ3VtZW50cyAuKi8KKyAgICAgICAgICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIHN0YWNrLCBQeV9TSVpFKGFyZ2RlZnMpLCBnbG9iYWxzKTsKKyAgICAgICAgfQogICAgIH0KKworICAgIGt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOworICAgIGNsb3N1cmUgPSBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpOworICAgIG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7CisgICAgcXVhbG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX3F1YWxuYW1lOworCiAgICAgaWYgKGFyZ2RlZnMgIT0gTlVMTCkgewogICAgICAgICBkID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CiAgICAgICAgIG5kID0gUHlfU0laRShhcmdkZWZzKTsKICAgICB9Ci0gICAgcmV0dXJuIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZSgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopTlVMTCwgKCpwcF9zdGFjayktbiwgbmEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKnBwX3N0YWNrKS0yKm5rLCBuaywgZCwgbmQsIGt3ZGVmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBxdWFsbmFtZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11cGRhdGVfa2V5d29yZF9hcmdzKFB5T2JqZWN0ICpvcmlnX2t3ZGljdCwgaW50IG5rLCBQeU9iamVjdCAqKipwcF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpCi17Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7Ci0gICAgaWYgKG9yaWdfa3dkaWN0ID09IE5VTEwpCi0gICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKICAgICBlbHNlIHsKLSAgICAgICAga3dkaWN0ID0gUHlEaWN0X0NvcHkob3JpZ19rd2RpY3QpOwotICAgICAgICBQeV9ERUNSRUYob3JpZ19rd2RpY3QpOworICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgbmQgPSAwOwogICAgIH0KLSAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHdoaWxlICgtLW5rID49IDApIHsKLSAgICAgICAgaW50IGVycjsKLSAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBQeU9iamVjdCAqa2V5ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oa3dkaWN0LCBrZXkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIGdvdCBtdWx0aXBsZSB2YWx1ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKKyAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsIChQeU9iamVjdCAqKU5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjaywgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBua3dhcmdzID8gJlB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgMCkgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgKyBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5rd2FyZ3MsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCAoaW50KW5kLCBrd2RlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zdXJlLCBuYW1lLCBxdWFsbmFtZSk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIHJldHVybiBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlDb2RlT2JqZWN0ICpjbyA9IChQeUNvZGVPYmplY3QgKilQeUZ1bmN0aW9uX0dFVF9DT0RFKGZ1bmMpOworICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKTsKKyAgICBQeU9iamVjdCAqYXJnZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0RFRkFVTFRTKGZ1bmMpOworICAgIFB5T2JqZWN0ICprd2RlZnMsICpjbG9zdXJlLCAqbmFtZSwgKnF1YWxuYW1lOworICAgIFB5T2JqZWN0ICprd3R1cGxlLCAqKms7CisgICAgUHlPYmplY3QgKipkOworICAgIFB5X3NzaXplX3QgbmQsIG5rOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KG5hcmdzID09IDAgfHwgYXJncyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOworCisgICAgUENBTEwoUENBTExfRlVOQ1RJT04pOworICAgIFBDQUxMKFBDQUxMX0ZBU1RfRlVOQ1RJT04pOworCisgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA9PSAwICYmCisgICAgICAgIChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfU2l6ZShrd2FyZ3MpID09IDApICYmCisgICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkKKyAgICB7CisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbmFyZ3MpIHsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgYXJncywgbmFyZ3MsIGdsb2JhbHMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5hcmdzID09IDAgJiYgYXJnZGVmcyAhPSBOVUxMCisgICAgICAgICAgICAgICAgICYmIGNvLT5jb19hcmdjb3VudCA9PSBQeV9TSVpFKGFyZ2RlZnMpKSB7CisgICAgICAgICAgICAvKiBmdW5jdGlvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMsIGJ1dCBhbGwgcGFyYW1ldGVycyBoYXZlCisgICAgICAgICAgICAgICBhIGRlZmF1bHQgdmFsdWU6IHVzZSBkZWZhdWx0IHZhbHVlcyBhcyBhcmd1bWVudHMgLiovCisgICAgICAgICAgICBhcmdzID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIGFyZ3MsIFB5X1NJWkUoYXJnZGVmcyksIGdsb2JhbHMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGt3YXJncyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgcG9zLCBpOworICAgICAgICBuayA9IFB5RGljdF9TaXplKGt3YXJncyk7CisKKyAgICAgICAga3d0dXBsZSA9IFB5VHVwbGVfTmV3KDIgKiBuayk7CisgICAgICAgIGlmIChrd3R1cGxlID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGsgPSAmUHlUdXBsZV9HRVRfSVRFTShrd3R1cGxlLCAwKTsKKyAgICAgICAgcG9zID0gaSA9IDA7CisgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChrd2FyZ3MsICZwb3MsICZrW2ldLCAma1tpKzFdKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGtbaV0pOworICAgICAgICAgICAgUHlfSU5DUkVGKGtbaSsxXSk7CisgICAgICAgICAgICBpICs9IDI7CiAgICAgICAgIH0KKyAgICAgICAgbmsgPSBpIC8gMjsKICAgICB9Ci0gICAgcmV0dXJuIGt3ZGljdDsKKyAgICBlbHNlIHsKKyAgICAgICAga3d0dXBsZSA9IE5VTEw7CisgICAgICAgIGsgPSBOVUxMOworICAgICAgICBuayA9IDA7CisgICAgfQorCisgICAga3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7CisgICAgY2xvc3VyZSA9IFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyk7CisgICAgbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfbmFtZTsKKyAgICBxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7CisKKyAgICBpZiAoYXJnZGVmcyAhPSBOVUxMKSB7CisgICAgICAgIGQgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgbmQgPSBQeV9TSVpFKGFyZ2RlZnMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZCA9IE5VTEw7CisgICAgICAgIG5kID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywgKFB5T2JqZWN0ICopTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGssIGsgKyAxLCBuaywgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCwgbmQsIGt3ZGVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc3VyZSwgbmFtZSwgcXVhbG5hbWUpOworICAgIFB5X1hERUNSRUYoa3d0dXBsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVwZGF0ZV9zdGFyX2FyZ3MoaW50IG5zdGFjaywgaW50IG5zdGFyLCBQeU9iamVjdCAqc3RhcmFyZywKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqcHBfc3RhY2spCitkb19jYWxsX2NvcmUoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICpjYWxsYXJncywgUHlPYmplY3QgKmt3ZGljdCkKIHsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MsICp3OwotCi0gICAgY2FsbGFyZ3MgPSBQeVR1cGxlX05ldyhuc3RhY2sgKyBuc3Rhcik7Ci0gICAgaWYgKGNhbGxhcmdzID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChuc3RhcikgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG5zdGFyOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphID0gUHlUdXBsZV9HRVRfSVRFTShzdGFyYXJnLCBpKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihhKTsKLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY2FsbGFyZ3MsIG5zdGFjayArIGksIGEpOwotICAgICAgICB9Ci0gICAgfQotICAgIHdoaWxlICgtLW5zdGFjayA+PSAwKSB7Ci0gICAgICAgIHcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY2FsbGFyZ3MsIG5zdGFjaywgdyk7Ci0gICAgfQotICAgIHJldHVybiBjYWxsYXJnczsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfYXJncyhQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG5hKQotewotICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcobmEpOwotICAgIFB5T2JqZWN0ICp3OwotCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgd2hpbGUgKC0tbmEgPj0gMCkgewotICAgICAgICB3ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIG5hLCB3KTsKLSAgICB9Ci0gICAgcmV0dXJuIGFyZ3M7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kb19jYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG5hLCBpbnQgbmspCi17Ci0gICAgUHlPYmplY3QgKmNhbGxhcmdzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmIChuayA+IDApIHsKLSAgICAgICAga3dkaWN0ID0gdXBkYXRlX2tleXdvcmRfYXJncyhOVUxMLCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGNhbGxfZmFpbDsKLSAgICB9Ci0gICAgY2FsbGFyZ3MgPSBsb2FkX2FyZ3MocHBfc3RhY2ssIG5hKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBjYWxsX2ZhaWw7CiAjaWZkZWYgQ0FMTF9QUk9GSUxFCiAgICAgLyogQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB0byBsb29rIGF0IHRoZSB0eXBlIG9mIGZ1bmMgdG8KICAgICAgICB1cGRhdGUgdGhlIGNhbGwgc3RhdHMgcHJvcGVybHkuICBEbyBpdCBoZXJlIHNvIGFzIHRvIGF2b2lkCkBAIC00OTMwLDExNSArNTAyMSwxNiBAQAogICAgIGVsc2UKICAgICAgICAgUENBTEwoUENBTExfT1RIRVIpOwogI2VuZGlmCisKICAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICAgICAgQ19UUkFDRShyZXN1bHQsIFB5Q0Z1bmN0aW9uX0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCk7Ci1jYWxsX2ZhaWw6Ci0gICAgUHlfWERFQ1JFRihjYWxsYXJncyk7Ci0gICAgUHlfWERFQ1JFRihrd2RpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1leHRfZG9fY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBmbGFncywgaW50IG5hLCBpbnQgbmspCi17Ci0gICAgaW50IG5zdGFyID0gMDsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzdGFyYXJnID0gTlVMTDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmIChmbGFncyAmIENBTExfRkxBR19LVykgewotICAgICAgICBrd2RpY3QgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmICghUHlEaWN0X0NoZWNrKGt3ZGljdCkpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpkOwotICAgICAgICAgICAgZCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgIGlmIChkID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoZCwga3dkaWN0KSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIC8qIFB5RGljdF9VcGRhdGUgcmFpc2VzIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAqIGVycm9yIChwZXJjb2xhdGVkIGZyb20gYW4gYXR0ZW1wdAotICAgICAgICAgICAgICAgICAqIHRvIGdldCAna2V5cycgYXR0cmlidXRlKSBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgICogYSB0eXBlIGVycm9yIGlmIGl0cyBzZWNvbmQgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgKiBpcyBub3QgYSBtYXBwaW5nLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dkaWN0LT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGt3ZGljdCk7Ci0gICAgICAgICAgICBrd2RpY3QgPSBkOwotICAgICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpOwogICAgIH0KLSAgICBpZiAobmsgPiAwKSB7Ci0gICAgICAgIGt3ZGljdCA9IHVwZGF0ZV9rZXl3b3JkX2FyZ3Moa3dkaWN0LCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikgewotICAgICAgICBzdGFyYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhcmFyZykpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0ID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChQeV9UWVBFKHN0YXJhcmcpLT50cF9pdGVyID09IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAgICAgIVB5U2VxdWVuY2VfQ2hlY2soc3RhcmFyZykpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ID0gUHlTZXF1ZW5jZV9UdXBsZShzdGFyYXJnKTsKLSAgICAgICAgICAgIGlmICh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RhcmFyZyk7Ci0gICAgICAgICAgICBzdGFyYXJnID0gdDsKLSAgICAgICAgfQotICAgICAgICBuc3RhciA9IFB5VHVwbGVfR0VUX1NJWkUoc3RhcmFyZyk7Ci0gICAgfQotICAgIGNhbGxhcmdzID0gdXBkYXRlX3N0YXJfYXJncyhuYSwgbnN0YXIsIHN0YXJhcmcsIHBwX3N0YWNrKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotI2lmZGVmIENBTExfUFJPRklMRQotICAgIC8qIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgdG8gbG9vayBhdCB0aGUgdHlwZSBvZiBmdW5jIHRvCi0gICAgICAgdXBkYXRlIHRoZSBjYWxsIHN0YXRzIHByb3Blcmx5LiAgRG8gaXQgaGVyZSBzbyBhcyB0byBhdm9pZAotICAgICAgIGV4cG9zaW5nIHRoZSBjYWxsIHN0YXRzIG1hY2hpbmVyeSBvdXRzaWRlIGNldmFsLmMKLSAgICAqLwotICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7Ci0gICAgZWxzZSBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX01FVEhPRCk7Ci0gICAgZWxzZSBpZiAoUHlUeXBlX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9UWVBFKTsKLSAgICBlbHNlIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkKLSAgICAgICAgUENBTEwoUENBTExfQ0ZVTkNUSU9OKTsKLSAgICBlbHNlCi0gICAgICAgIFBDQUxMKFBDQUxMX09USEVSKTsKLSNlbmRpZgotICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgewotICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgICAgICBDX1RSQUNFKHJlc3VsdCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKLWV4dF9jYWxsX2ZhaWw6Ci0gICAgUHlfWERFQ1JFRihjYWxsYXJncyk7Ci0gICAgUHlfWERFQ1JFRihrd2RpY3QpOwotICAgIFB5X1hERUNSRUYoc3RhcmFyZyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogRXh0cmFjdCBhIHNsaWNlIGluZGV4IGZyb20gYSBQeUxvbmcgb3IgYW4gb2JqZWN0IHdpdGggdGhlCkBAIC01MTI4LDYgKzUxMjAsNDYgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2ltcG9ydF9uYW1lKFB5RnJhbWVPYmplY3QgKmYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZnJvbWxpc3QsIFB5T2JqZWN0ICpsZXZlbCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKKyAgICBQeU9iamVjdCAqaW1wb3J0X2Z1bmMsICpyZXM7CisgICAgUHlPYmplY3QqIHN0YWNrWzVdOworCisgICAgaW1wb3J0X2Z1bmMgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKKyAgICBpZiAoaW1wb3J0X2Z1bmMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBGYXN0IHBhdGggZm9yIG5vdCBvdmVybG9hZGVkIF9faW1wb3J0X18uICovCisgICAgaWYgKGltcG9ydF9mdW5jID09IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycC0+aW1wb3J0X2Z1bmMpIHsKKyAgICAgICAgaW50IGlsZXZlbCA9IF9QeUxvbmdfQXNJbnQobGV2ZWwpOworICAgICAgICBpZiAoaWxldmVsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJlcyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPyBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlsZXZlbCk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgUHlfSU5DUkVGKGltcG9ydF9mdW5jKTsKKworICAgIHN0YWNrWzBdID0gbmFtZTsKKyAgICBzdGFja1sxXSA9IGYtPmZfZ2xvYmFsczsKKyAgICBzdGFja1syXSA9IGYtPmZfbG9jYWxzID09IE5VTEwgPyBQeV9Ob25lIDogZi0+Zl9sb2NhbHM7CisgICAgc3RhY2tbM10gPSBmcm9tbGlzdDsKKyAgICBzdGFja1s0XSA9IGxldmVsOworICAgIHJlcyA9IF9QeU9iamVjdF9GYXN0Q2FsbChpbXBvcnRfZnVuYywgc3RhY2ssIDUpOworICAgIFB5X0RFQ1JFRihpbXBvcnRfZnVuYyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGltcG9ydF9mcm9tKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqeDsKQEAgLTUyNjMsNyArNTI5NSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywKLSAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cikKKyAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgY29uc3QgX1B5X0NPREVVTklUICpuZXh0X2luc3RyKQogewogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAyKSB7CkBAIC01MjczLDEwICs1MzA1LDExIEBACiAgICAgICAgICAqICd2YXJpYWJsZScuICBXZSB0cnkgdG8gZGVsZXRlIHRoZSB2YXJpYWJsZSBub3cgdG8gcmVkdWNlCiAgICAgICAgICAqIHRoZSByZWZjbnQgdG8gMS4KICAgICAgICAgICovCi0gICAgICAgIHN3aXRjaCAoKm5leHRfaW5zdHIpIHsKKyAgICAgICAgaW50IG9wY29kZSwgb3Bhcmc7CisgICAgICAgIE5FWFRPUEFSRygpOworICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIFNUT1JFX0ZBU1Q6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGludCBvcGFyZyA9IFBFRUtBUkcoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKICAgICAgICAgICAgIGlmIChHRVRMT0NBTChvcGFyZykgPT0gdikKICAgICAgICAgICAgICAgICBTRVRMT0NBTChvcGFyZywgTlVMTCk7CkBAIC01Mjg2LDcgKzUzMTksNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBQeU9iamVjdCAqKmZyZWV2YXJzID0gKGYtPmZfbG9jYWxzcGx1cyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfY29kZS0+Y29fbmxvY2Fscyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYyA9IGZyZWV2YXJzW1BFRUtBUkcoKV07CisgICAgICAgICAgICBQeU9iamVjdCAqYyA9IGZyZWV2YXJzW29wYXJnXTsKICAgICAgICAgICAgIGlmIChQeUNlbGxfR0VUKGMpID09IHYpCiAgICAgICAgICAgICAgICAgUHlDZWxsX1NldChjLCBOVUxMKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTI5NCw3ICs1MzI3LDcgQEAKICAgICAgICAgY2FzZSBTVE9SRV9OQU1FOgogICAgICAgICB7CiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMgPSBmLT5mX2NvZGUtPmNvX25hbWVzOwotICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBQRUVLQVJHKCkpOworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzID0gZi0+Zl9sb2NhbHM7CiAgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobG9jYWxzKSAmJgogICAgICAgICAgICAgICAgIFB5RGljdF9HZXRJdGVtKGxvY2FscywgbmFtZSkgPT0gdikgewpAQCAtNTM1NCwzICs1Mzg3LDc5IEBACiB9CiAKICNlbmRpZgorCitQeV9zc2l6ZV90CitfUHlFdmFsX1JlcXVlc3RDb2RlRXh0cmFJbmRleChmcmVlZnVuYyBmcmVlKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgUHlfc3NpemVfdCBuZXdfaW5kZXg7CisKKyAgICBpZiAodHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50ID09IE1BWF9DT19FWFRSQV9VU0VSUyAtIDEpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBuZXdfaW5kZXggPSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQrKzsKKyAgICB0c3RhdGUtPmNvX2V4dHJhX2ZyZWVmdW5jc1tuZXdfaW5kZXhdID0gZnJlZTsKKyAgICByZXR1cm4gbmV3X2luZGV4OworfQorCitzdGF0aWMgdm9pZAorZHRyYWNlX2Z1bmN0aW9uX2VudHJ5KFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgY2hhciogZmlsZW5hbWU7CisgICAgY2hhciogZnVuY25hbWU7CisgICAgaW50IGxpbmVubzsKKworICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICBmdW5jbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGYtPmZfY29kZSwgZi0+Zl9sYXN0aSk7CisKKyAgICBQeURUcmFjZV9GVU5DVElPTl9FTlRSWShmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVubyk7Cit9CisKK3N0YXRpYyB2b2lkCitkdHJhY2VfZnVuY3Rpb25fcmV0dXJuKFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgY2hhciogZmlsZW5hbWU7CisgICAgY2hhciogZnVuY25hbWU7CisgICAgaW50IGxpbmVubzsKKworICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICBmdW5jbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGYtPmZfY29kZSwgZi0+Zl9sYXN0aSk7CisKKyAgICBQeURUcmFjZV9GVU5DVElPTl9SRVRVUk4oZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm8pOworfQorCisvKiBEVHJhY2UgZXF1aXZhbGVudCBvZiBtYXliZV9jYWxsX2xpbmVfdHJhY2UuICovCitzdGF0aWMgdm9pZAorbWF5YmVfZHRyYWNlX2xpbmUoUHlGcmFtZU9iamVjdCAqZnJhbWUsCisgICAgICAgICAgICAgICAgICBpbnQgKmluc3RyX2xiLCBpbnQgKmluc3RyX3ViLCBpbnQgKmluc3RyX3ByZXYpCit7CisgICAgaW50IGxpbmUgPSBmcmFtZS0+Zl9saW5lbm87CisgICAgY2hhciAqY29fZmlsZW5hbWUsICpjb19uYW1lOworCisgICAgLyogSWYgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gZXhlY3V0ZWQgaXNuJ3QgaW4gdGhlIGN1cnJlbnQKKyAgICAgICBpbnN0cnVjdGlvbiB3aW5kb3csIHJlc2V0IHRoZSB3aW5kb3cuCisgICAgKi8KKyAgICBpZiAoZnJhbWUtPmZfbGFzdGkgPCAqaW5zdHJfbGIgfHwgZnJhbWUtPmZfbGFzdGkgPj0gKmluc3RyX3ViKSB7CisgICAgICAgIFB5QWRkclBhaXIgYm91bmRzOworICAgICAgICBsaW5lID0gX1B5Q29kZV9DaGVja0xpbmVOdW1iZXIoZnJhbWUtPmZfY29kZSwgZnJhbWUtPmZfbGFzdGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYm91bmRzKTsKKyAgICAgICAgKmluc3RyX2xiID0gYm91bmRzLmFwX2xvd2VyOworICAgICAgICAqaW5zdHJfdWIgPSBib3VuZHMuYXBfdXBwZXI7CisgICAgfQorICAgIC8qIElmIHRoZSBsYXN0IGluc3RydWN0aW9uIGZhbGxzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUgb3IgaWYKKyAgICAgICBpdCByZXByZXNlbnRzIGEganVtcCBiYWNrd2FyZHMsIHVwZGF0ZSB0aGUgZnJhbWUncyBsaW5lCisgICAgICAgbnVtYmVyIGFuZCBjYWxsIHRoZSB0cmFjZSBmdW5jdGlvbi4gKi8KKyAgICBpZiAoZnJhbWUtPmZfbGFzdGkgPT0gKmluc3RyX2xiIHx8IGZyYW1lLT5mX2xhc3RpIDwgKmluc3RyX3ByZXYpIHsKKyAgICAgICAgZnJhbWUtPmZfbGluZW5vID0gbGluZTsKKyAgICAgICAgY29fZmlsZW5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICAgICAgaWYgKCFjb19maWxlbmFtZSkKKyAgICAgICAgICAgIGNvX2ZpbGVuYW1lID0gIj8iOworICAgICAgICBjb19uYW1lID0gUHlVbmljb2RlX0FzVVRGOChmcmFtZS0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICAgICAgaWYgKCFjb19uYW1lKQorICAgICAgICAgICAgY29fbmFtZSA9ICI/IjsKKyAgICAgICAgUHlEVHJhY2VfTElORShjb19maWxlbmFtZSwgY29fbmFtZSwgbGluZSk7CisgICAgfQorICAgICppbnN0cl9wcmV2ID0gZnJhbWUtPmZfbGFzdGk7Cit9CmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWxfZ2lsLmggYi9QeXRob24vY2V2YWxfZ2lsLmgKaW5kZXggOGQzOGVlOS4uYTNiNDUwYiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsX2dpbC5oCisrKyBiL1B5dGhvbi9jZXZhbF9naWwuaApAQCAtMTc4LDcgKzE3OCw3IEBACiAgICAgICAgIC8qIFN1Yi1pbnRlcnByZXRlciBzdXBwb3J0OiB0aHJlYWRzIG1pZ2h0IGhhdmUgYmVlbiBzd2l0Y2hlZAogICAgICAgICAgICB1bmRlciBvdXIgZmVldCB1c2luZyBQeVRocmVhZFN0YXRlX1N3YXAoKS4gRml4IHRoZSBHSUwgbGFzdAogICAgICAgICAgICBob2xkZXIgdmFyaWFibGUgc28gdGhhdCBvdXIgaGV1cmlzdGljcyB3b3JrLiAqLwotICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKFB5X3VpbnRwdHJfdCl0c3RhdGUpOworICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKHVpbnRwdHJfdCl0c3RhdGUpOwogICAgIH0KIAogICAgIE1VVEVYX0xPQ0soZ2lsX211dGV4KTsKQEAgLTI0MCw3ICsyNDAsNyBAQAogICAgIF9QeV9BTk5PVEFURV9SV0xPQ0tfQUNRVUlSRUQoJmdpbF9sb2NrZWQsIC8qaXNfd3JpdGU9Ki8xKTsKIAogICAgIGlmICh0c3RhdGUgIT0gKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpKSB7Ci0gICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAoUHlfdWludHB0cl90KXRzdGF0ZSk7CisgICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAodWludHB0cl90KXRzdGF0ZSk7CiAgICAgICAgICsrZ2lsX3N3aXRjaF9udW1iZXI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaCBiL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCmluZGV4IDRlMmIxZjEuLmM4OGRlZWYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCisrKyBiL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCkBAIC05Myw4ICs5Myw5IEBACiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVOmZvcm1hdCIsCi0gICAgICAgICZ2YWx1ZSwgJmZvcm1hdF9zcGVjKSkKKyAgICAgICAgJnZhbHVlLCAmZm9ybWF0X3NwZWMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9mb3JtYXRfaW1wbChtb2R1bGUsIHZhbHVlLCBmb3JtYXRfc3BlYyk7CiAKIGV4aXQ6CkBAIC0xMTksOCArMTIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgaTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpjaHIiLCAmaSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmNociIsICZpKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fY2hyX2ltcGwobW9kdWxlLCBpKTsKIAogZXhpdDoKQEAgLTE0Niw3ICsxNDgsNyBAQAogImluIGFkZGl0aW9uIHRvIGFueSBmZWF0dXJlcyBleHBsaWNpdGx5IHNwZWNpZmllZC4iKTsKIAogI2RlZmluZSBCVUlMVElOX0NPTVBJTEVfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnVpbHRpbl9jb21waWxlX19kb2NfX30sCisgICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fY29tcGlsZSwgTUVUSF9GQVNUQ0FMTCwgYnVpbHRpbl9jb21waWxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX2NvbXBpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZmlsZW5hbWUsCkBAIC0xNTQsMTAgKzE1NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IG9wdGltaXplKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J1aWx0aW5fY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic291cmNlIiwgImZpbGVuYW1lIiwgIm1vZGUiLCAiZmxhZ3MiLCAiZG9udF9pbmhlcml0IiwgIm9wdGltaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic291cmNlIiwgImZpbGVuYW1lIiwgIm1vZGUiLCAiZmxhZ3MiLCAiZG9udF9pbmhlcml0IiwgIm9wdGltaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT08mc3xpaWk6Y29tcGlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNvdXJjZTsKICAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgY29uc3QgY2hhciAqbW9kZTsKQEAgLTE2NSw5ICsxNjgsMTAgQEAKICAgICBpbnQgZG9udF9pbmhlcml0ID0gMDsKICAgICBpbnQgb3B0aW1pemUgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PJnN8aWlpOmNvbXBpbGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZzb3VyY2UsIFB5VW5pY29kZV9GU0RlY29kZXIsICZmaWxlbmFtZSwgJm1vZGUsICZmbGFncywgJmRvbnRfaW5oZXJpdCwgJm9wdGltaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNvdXJjZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJmZpbGVuYW1lLCAmbW9kZSwgJmZsYWdzLCAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9jb21waWxlX2ltcGwobW9kdWxlLCBzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFncywgZG9udF9pbmhlcml0LCBvcHRpbWl6ZSk7CiAKIGV4aXQ6CkBAIC0xOTUsOCArMTk5LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRpdm1vZCIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZ4LCAmeSkpCisgICAgICAgICZ4LCAmeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Rpdm1vZF9pbXBsKG1vZHVsZSwgeCwgeSk7CiAKIGV4aXQ6CkBAIC0yMzIsOCArMjM3LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV2YWwiLAogICAgICAgICAxLCAzLAotICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpCisgICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZXZhbF9pbXBsKG1vZHVsZSwgc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOwogCiBleGl0OgpAQCAtMjY5LDggKzI3NSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJleGVjIiwKICAgICAgICAgMSwgMywKLSAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKQorICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2V4ZWNfaW1wbChtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKIAogZXhpdDoKQEAgLTMyMSw4ICszMjgsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaGFzYXR0ciIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZvYmosICZuYW1lKSkKKyAgICAgICAgJm9iaiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9oYXNhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUpOwogCiBleGl0OgpAQCAtMzY2LDggKzM3NCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRhdHRyIiwKICAgICAgICAgMywgMywKLSAgICAgICAgJm9iaiwgJm5hbWUsICZ2YWx1ZSkpCisgICAgICAgICZvYmosICZuYW1lLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9zZXRhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTM5Nyw4ICs0MDYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGVsYXR0ciIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZvYmosICZuYW1lKSkKKyAgICAgICAgJm9iaiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9kZWxhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUpOwogCiBleGl0OgpAQCAtNTA2LDggKzUxNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3ciLAogICAgICAgICAyLCAzLAotICAgICAgICAmeCwgJnksICZ6KSkKKyAgICAgICAgJngsICZ5LCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3Bvd19pbXBsKG1vZHVsZSwgeCwgeSwgeik7CiAKIGV4aXQ6CkBAIC01NDAsOCArNTUxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlucHV0IiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnByb21wdCkpCisgICAgICAgICZwcm9tcHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pbnB1dF9pbXBsKG1vZHVsZSwgcHJvbXB0KTsKIAogZXhpdDoKQEAgLTU4NCw4ICs1OTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3VtIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmc3RhcnQpKQorICAgICAgICAmaXRlcmFibGUsICZzdGFydCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3N1bV9pbXBsKG1vZHVsZSwgaXRlcmFibGUsIHN0YXJ0KTsKIAogZXhpdDoKQEAgLTYxOCw4ICs2MzEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNpbnN0YW5jZSIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZvYmosICZjbGFzc19vcl90dXBsZSkpCisgICAgICAgICZvYmosICZjbGFzc19vcl90dXBsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lzaW5zdGFuY2VfaW1wbChtb2R1bGUsIG9iaiwgY2xhc3Nfb3JfdHVwbGUpOwogCiBleGl0OgpAQCAtNjUyLDExICs2NjYsMTIgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlzc3ViY2xhc3MiLAogICAgICAgICAyLCAyLAotICAgICAgICAmY2xzLCAmY2xhc3Nfb3JfdHVwbGUpKQorICAgICAgICAmY2xzLCAmY2xhc3Nfb3JfdHVwbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pc3N1YmNsYXNzX2ltcGwobW9kdWxlLCBjbHMsIGNsYXNzX29yX3R1cGxlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwMzEyNzBiNjRjNzk0YjggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYzNDgzZGViNzU4MDVmN2MgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oIGIvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCmluZGV4IDA1ZDc5YWMuLmIzNDYwYjAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaAorKysgYi9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKQEAgLTg5LDggKzg5LDkgQEAKICAgICBQeU9iamVjdCAqcGF0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyFVOl9maXhfY29fZmlsZW5hbWUiLAotICAgICAgICAmUHlDb2RlX1R5cGUsICZjb2RlLCAmcGF0aCkpCisgICAgICAgICZQeUNvZGVfVHlwZSwgJmNvZGUsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfX2ZpeF9jb19maWxlbmFtZV9pbXBsKG1vZHVsZSwgY29kZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC0xNDIsOCArMTQzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aW5pdF9mcm96ZW4iLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2luaXRfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTE2OCw4ICsxNzAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmdldF9mcm96ZW5fb2JqZWN0IiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMTk0LDggKzE5Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5fcGFja2FnZV9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0yMjAsOCArMjI0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19idWlsdGluIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19idWlsdGluIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19idWlsdGluX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTI0Niw4ICsyNTEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMjc3LDggKzI4Myw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJjcmVhdGVfZHluYW1pYyIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZzcGVjLCAmZmlsZSkpCisgICAgICAgICZzcGVjLCAmZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2NyZWF0ZV9keW5hbWljX2ltcGwobW9kdWxlLCBzcGVjLCBmaWxlKTsKIAogZXhpdDoKQEAgLTMwOCw4ICszMTUsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9pbXBfZXhlY19keW5hbWljX2ltcGwobW9kdWxlLCBtb2QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMzcsOCArMzQ1LDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfaW1wX2V4ZWNfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbW9kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzUyLDQgKzM2MSw0IEBACiAjaWZuZGVmIF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRgogICAgICNkZWZpbmUgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwYWQ2ZTU4MzNlNjE3MGQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyNGQ3ZjczNzAyYTkwN2YgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbXBpbGUuYyBiL1B5dGhvbi9jb21waWxlLmMKaW5kZXggOTNmNDdlMC4uOTUwMmZlZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbXBpbGUuYworKysgYi9QeXRob24vY29tcGlsZS5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgInN5bXRhYmxlLmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCisjaW5jbHVkZSAid29yZGNvZGVfaGVscGVycy5oIgogCiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tfU0laRSAxNgogI2RlZmluZSBERUZBVUxUX0JMT0NLUyA4CkBAIC00Myw3ICs0NCw2IEBACiBzdHJ1Y3QgaW5zdHIgewogICAgIHVuc2lnbmVkIGlfamFicyA6IDE7CiAgICAgdW5zaWduZWQgaV9qcmVsIDogMTsKLSAgICB1bnNpZ25lZCBpX2hhc2FyZyA6IDE7CiAgICAgdW5zaWduZWQgY2hhciBpX29wY29kZTsKICAgICBpbnQgaV9vcGFyZzsKICAgICBzdHJ1Y3QgYmFzaWNibG9ja18gKmlfdGFyZ2V0OyAvKiB0YXJnZXQgYmxvY2sgKGlmIGp1bXAgaW5zdHJ1Y3Rpb24pICovCkBAIC0xNzEsNyArMTcxLDYgQEAKIHN0YXRpYyBpbnQgY29tcGlsZXJfYWRkb3BfbyhzdHJ1Y3QgY29tcGlsZXIgKiwgaW50LCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYWRkb3BfaShzdHJ1Y3QgY29tcGlsZXIgKiwgaW50LCBQeV9zc2l6ZV90KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYWRkb3BfaihzdHJ1Y3QgY29tcGlsZXIgKiwgaW50LCBiYXNpY2Jsb2NrICosIGludCk7Ci1zdGF0aWMgYmFzaWNibG9jayAqY29tcGlsZXJfdXNlX25ld19ibG9jayhzdHJ1Y3QgY29tcGlsZXIgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2Vycm9yKHN0cnVjdCBjb21waWxlciAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGludCBjb21waWxlcl9uYW1lb3Aoc3RydWN0IGNvbXBpbGVyICosIGlkZW50aWZpZXIsIGV4cHJfY29udGV4dF90eSk7CiAKQEAgLTE4MCw2ICsxNzksNyBAQAogc3RhdGljIGludCBjb21waWxlcl92aXNpdF9rZXl3b3JkKHN0cnVjdCBjb21waWxlciAqLCBrZXl3b3JkX3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfdmlzaXRfZXhwcihzdHJ1Y3QgY29tcGlsZXIgKiwgZXhwcl90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2F1Z2Fzc2lnbihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CitzdGF0aWMgaW50IGNvbXBpbGVyX2FubmFzc2lnbihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3Zpc2l0X3NsaWNlKHN0cnVjdCBjb21waWxlciAqLCBzbGljZV90eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5KTsKIApAQCAtMTk2LDEyICsxOTYsMjIgQEAKIHN0YXRpYyBpbnQgY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfZm9yKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKLXN0YXRpYyBpbnQgY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBQeV9zc2l6ZV90IG4sCitzdGF0aWMgaW50IGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgaW50IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMpOwogc3RhdGljIGludCBjb21waWxlcl90cnlfZXhjZXB0KHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfc2V0X3F1YWxuYW1lKHN0cnVjdCBjb21waWxlciAqKTsKIAorc3RhdGljIGludCBjb21waWxlcl9zeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKTsKKworc3RhdGljIGludCBjb21waWxlcl9hc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSk7CisKIHN0YXRpYyBQeUNvZGVPYmplY3QgKmFzc2VtYmxlKHN0cnVjdCBjb21waWxlciAqLCBpbnQgYWRkTm9uZSk7CiBzdGF0aWMgUHlPYmplY3QgKl9fZG9jX187CiAKQEAgLTQ3Nyw5ICs0ODcsOSBAQAogewogICAgIGJhc2ljYmxvY2sgKmJsb2NrOwogICAgIGZvciAoYmxvY2sgPSB1LT51X2Jsb2NrczsgYmxvY2sgIT0gTlVMTDsgYmxvY2sgPSBibG9jay0+Yl9saXN0KSB7Ci0gICAgICAgIGFzc2VydCgodm9pZCAqKWJsb2NrICE9ICh2b2lkICopMHhjYmNiY2JjYik7Ci0gICAgICAgIGFzc2VydCgodm9pZCAqKWJsb2NrICE9ICh2b2lkICopMHhmYmZiZmJmYik7Ci0gICAgICAgIGFzc2VydCgodm9pZCAqKWJsb2NrICE9ICh2b2lkICopMHhkYmRiZGJkYik7CisgICAgICAgIGFzc2VydCgodWludHB0cl90KWJsb2NrICE9IDB4Y2JjYmNiY2JVKTsKKyAgICAgICAgYXNzZXJ0KCh1aW50cHRyX3QpYmxvY2sgIT0gMHhmYmZiZmJmYlUpOworICAgICAgICBhc3NlcnQoKHVpbnRwdHJfdClibG9jayAhPSAweGRiZGJkYmRiVSk7CiAgICAgICAgIGlmIChibG9jay0+Yl9pbnN0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICBhc3NlcnQoYmxvY2stPmJfaWFsbG9jID4gMCk7CiAgICAgICAgICAgICBhc3NlcnQoYmxvY2stPmJfaXVzZWQgPiAwKTsKQEAgLTUyMyw2ICs1MzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IHNjb3BlX3R5cGUsIHZvaWQgKmtleSwgaW50IGxpbmVubykKIHsKICAgICBzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqdTsKKyAgICBiYXNpY2Jsb2NrICpibG9jazsKIAogICAgIHUgPSAoc3RydWN0IGNvbXBpbGVyX3VuaXQgKilQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsZXJfdW5pdCkpOwpAQCAtNjIwLDggKzYzMSwxMSBAQAogICAgIGMtPnUgPSB1OwogCiAgICAgYy0+Y19uZXN0bGV2ZWwrKzsKLSAgICBpZiAoY29tcGlsZXJfdXNlX25ld19ibG9jayhjKSA9PSBOVUxMKQorCisgICAgYmxvY2sgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgaWYgKGJsb2NrID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOworICAgIGMtPnUtPnVfY3VyYmxvY2sgPSBibG9jazsKIAogICAgIGlmICh1LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFKSB7CiAgICAgICAgIGlmICghY29tcGlsZXJfc2V0X3F1YWxuYW1lKGMpKQpAQCAtNzMxLDYgKzc0NSw3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKwogLyogQWxsb2NhdGUgYSBuZXcgYmxvY2sgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gaXQuCiAgICBSZXR1cm5zIE5VTEwgb24gZXJyb3IuCiAqLwpAQCAtNzU1LDE2ICs3NzAsNiBAQAogfQogCiBzdGF0aWMgYmFzaWNibG9jayAqCi1jb21waWxlcl91c2VfbmV3X2Jsb2NrKHN0cnVjdCBjb21waWxlciAqYykKLXsKLSAgICBiYXNpY2Jsb2NrICpibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKLSAgICBpZiAoYmxvY2sgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYy0+dS0+dV9jdXJibG9jayA9IGJsb2NrOwotICAgIHJldHVybiBibG9jazsKLX0KLQotc3RhdGljIGJhc2ljYmxvY2sgKgogY29tcGlsZXJfbmV4dF9ibG9jayhzdHJ1Y3QgY29tcGlsZXIgKmMpCiB7CiAgICAgYmFzaWNibG9jayAqYmxvY2sgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CkBAIC04MTAsNyArODE1LDcgQEAKICAgICAgICAgb2xkc2l6ZSA9IGItPmJfaWFsbG9jICogc2l6ZW9mKHN0cnVjdCBpbnN0cik7CiAgICAgICAgIG5ld3NpemUgPSBvbGRzaXplIDw8IDE7CiAKLSAgICAgICAgaWYgKG9sZHNpemUgPiAoUFlfU0laRV9NQVggPj4gMSkpIHsKKyAgICAgICAgaWYgKG9sZHNpemUgPiAoU0laRV9NQVggPj4gMSkpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTkzOSw2ICs5NDQsOCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIElNUE9SVF9TVEFSOgogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBjYXNlIFNFVFVQX0FOTk9UQVRJT05TOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgWUlFTERfVkFMVUU6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBZSUVMRF9GUk9NOgpAQCAtOTc2LDYgKzk4Myw3IEBACiAgICAgICAgIGNhc2UgQlVJTERfVFVQTEU6CiAgICAgICAgIGNhc2UgQlVJTERfTElTVDoKICAgICAgICAgY2FzZSBCVUlMRF9TRVQ6CisgICAgICAgIGNhc2UgQlVJTERfU1RSSU5HOgogICAgICAgICAgICAgcmV0dXJuIDEtb3Bhcmc7CiAgICAgICAgIGNhc2UgQlVJTERfTElTVF9VTlBBQ0s6CiAgICAgICAgIGNhc2UgQlVJTERfVFVQTEVfVU5QQUNLOgpAQCAtOTgzLDkgKzk5MSwxMSBAQAogICAgICAgICBjYXNlIEJVSUxEX01BUF9VTlBBQ0s6CiAgICAgICAgICAgICByZXR1cm4gMSAtIG9wYXJnOwogICAgICAgICBjYXNlIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMOgotICAgICAgICAgICAgcmV0dXJuIDEgLSAob3BhcmcgJiAweEZGKTsKKyAgICAgICAgICAgIHJldHVybiAxIC0gb3Bhcmc7CiAgICAgICAgIGNhc2UgQlVJTERfTUFQOgogICAgICAgICAgICAgcmV0dXJuIDEgLSAyKm9wYXJnOworICAgICAgICBjYXNlIEJVSUxEX0NPTlNUX0tFWV9NQVA6CisgICAgICAgICAgICByZXR1cm4gLW9wYXJnOwogICAgICAgICBjYXNlIExPQURfQVRUUjoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENPTVBBUkVfT1A6CkBAIC0xMDIzLDIyICsxMDMzLDIwIEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGNhc2UgREVMRVRFX0ZBU1Q6CiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBTVE9SRV9BTk5PVEFUSU9OOgorICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgIGNhc2UgUkFJU0VfVkFSQVJHUzoKICAgICAgICAgICAgIHJldHVybiAtb3Bhcmc7Ci0jZGVmaW5lIE5BUkdTKG8pICgoKG8pICUgMjU2KSArIDIqKCgobykgLyAyNTYpICUgMjU2KSkKICAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OOgotICAgICAgICAgICAgcmV0dXJuIC1OQVJHUyhvcGFyZyk7Ci0gICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9WQVI6CisgICAgICAgICAgICByZXR1cm4gLW9wYXJnOwogICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fS1c6Ci0gICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKS0xOwotICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fVkFSX0tXOgotICAgICAgICAgICAgcmV0dXJuIC1OQVJHUyhvcGFyZyktMjsKKyAgICAgICAgICAgIHJldHVybiAtb3BhcmctMTsKKyAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OX0VYOgorICAgICAgICAgICAgcmV0dXJuIC0gKChvcGFyZyAmIDB4MDEpICE9IDApIC0gKChvcGFyZyAmIDB4MDIpICE9IDApOwogICAgICAgICBjYXNlIE1BS0VfRlVOQ1RJT046Ci0gICAgICAgICAgICByZXR1cm4gLTEgLU5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKLSAgICAgICAgY2FzZSBNQUtFX0NMT1NVUkU6Ci0gICAgICAgICAgICByZXR1cm4gLTIgLSBOQVJHUyhvcGFyZykgLSAoKG9wYXJnID4+IDE2KSAmIDB4ZmZmZik7Ci0jdW5kZWYgTkFSR1MKKyAgICAgICAgICAgIHJldHVybiAtMSAtICgob3BhcmcgJiAweDAxKSAhPSAwKSAtICgob3BhcmcgJiAweDAyKSAhPSAwKSAtCisgICAgICAgICAgICAgICAgKChvcGFyZyAmIDB4MDQpICE9IDApIC0gKChvcGFyZyAmIDB4MDgpICE9IDApOwogICAgICAgICBjYXNlIEJVSUxEX1NMSUNFOgogICAgICAgICAgICAgaWYgKG9wYXJnID09IDMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0yOwpAQCAtMTA2Niw2ICsxMDc0LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgY2FzZSBHRVRfWUlFTERfRlJPTV9JVEVSOgogICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgRk9STUFUX1ZBTFVFOgorICAgICAgICAgICAgLyogSWYgdGhlcmUncyBhIGZtdF9zcGVjIG9uIHRoZSBzdGFjaywgd2UgZ28gZnJvbSAyLT4xLAorICAgICAgICAgICAgICAgZWxzZSAxLT4xLiAqLworICAgICAgICAgICAgcmV0dXJuIChvcGFyZyAmIEZWU19NQVNLKSA9PSBGVlNfSEFWRV9TUEVDID8gLTEgOiAwOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIFBZX0lOVkFMSURfU1RBQ0tfRUZGRUNUOwogICAgIH0KQEAgLTEwODIsMTMgKzEwOTQsMTQgQEAKICAgICBiYXNpY2Jsb2NrICpiOwogICAgIHN0cnVjdCBpbnN0ciAqaTsKICAgICBpbnQgb2ZmOworICAgIGFzc2VydCghSEFTX0FSRyhvcGNvZGUpKTsKICAgICBvZmYgPSBjb21waWxlcl9uZXh0X2luc3RyKGMsIGMtPnUtPnVfY3VyYmxvY2spOwogICAgIGlmIChvZmYgPCAwKQogICAgICAgICByZXR1cm4gMDsKICAgICBiID0gYy0+dS0+dV9jdXJibG9jazsKICAgICBpID0gJmItPmJfaW5zdHJbb2ZmXTsKICAgICBpLT5pX29wY29kZSA9IG9wY29kZTsKLSAgICBpLT5pX2hhc2FyZyA9IDA7CisgICAgaS0+aV9vcGFyZyA9IDA7CiAgICAgaWYgKG9wY29kZSA9PSBSRVRVUk5fVkFMVUUpCiAgICAgICAgIGItPmJfcmV0dXJuID0gMTsKICAgICBjb21waWxlcl9zZXRfbGluZW5vKGMsIG9mZik7CkBAIC0xMTY1LDEwICsxMTc4LDE1IEBACiAgICAgc3RydWN0IGluc3RyICppOwogICAgIGludCBvZmY7CiAKLSAgICAvKiBJbnRlZ2VyIGFyZ3VtZW50cyBhcmUgbGltaXQgdG8gMTYtYml0LiBUaGVyZSBpcyBhbiBleHRlbnNpb24gZm9yIDMyLWJpdAotICAgICAgIGludGVnZXIgYXJndW1lbnRzLiAqLwotICAgIGFzc2VydCgoLTIxNDc0ODM2NDctMSkgPD0gb3BhcmcpOwotICAgIGFzc2VydChvcGFyZyA8PSAyMTQ3NDgzNjQ3KTsKKyAgICAvKiBvcGFyZyB2YWx1ZSBpcyB1bnNpZ25lZCwgYnV0IGEgc2lnbmVkIEMgaW50IGlzIHVzdWFsbHkgdXNlZCB0byBzdG9yZQorICAgICAgIGl0IGluIHRoZSBDIGNvZGUgKGxpa2UgUHl0aG9uL2NldmFsLmMpLgorCisgICAgICAgTGltaXQgdG8gMzItYml0IHNpZ25lZCBDIGludCAocmF0aGVyIHRoYW4gSU5UX01BWCkgZm9yIHBvcnRhYmlsaXR5LgorCisgICAgICAgVGhlIGFyZ3VtZW50IG9mIGEgY29uY3JldGUgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gaXMgbGltaXRlZCB0byA4LWJpdC4KKyAgICAgICBFWFRFTkRFRF9BUkcgaXMgdXNlZCBmb3IgMTYsIDI0LCBhbmQgMzItYml0IGFyZ3VtZW50cy4gKi8KKyAgICBhc3NlcnQoSEFTX0FSRyhvcGNvZGUpKTsKKyAgICBhc3NlcnQoMCA8PSBvcGFyZyAmJiBvcGFyZyA8PSAyMTQ3NDgzNjQ3KTsKIAogICAgIG9mZiA9IGNvbXBpbGVyX25leHRfaW5zdHIoYywgYy0+dS0+dV9jdXJibG9jayk7CiAgICAgaWYgKG9mZiA8IDApCkBAIC0xMTc2LDcgKzExOTQsNiBAQAogICAgIGkgPSAmYy0+dS0+dV9jdXJibG9jay0+Yl9pbnN0cltvZmZdOwogICAgIGktPmlfb3Bjb2RlID0gb3Bjb2RlOwogICAgIGktPmlfb3BhcmcgPSBQeV9TQUZFX0RPV05DQVNUKG9wYXJnLCBQeV9zc2l6ZV90LCBpbnQpOwotICAgIGktPmlfaGFzYXJnID0gMTsKICAgICBjb21waWxlcl9zZXRfbGluZW5vKGMsIG9mZik7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xMTg3LDYgKzEyMDQsNyBAQAogICAgIHN0cnVjdCBpbnN0ciAqaTsKICAgICBpbnQgb2ZmOwogCisgICAgYXNzZXJ0KEhBU19BUkcob3Bjb2RlKSk7CiAgICAgYXNzZXJ0KGIgIT0gTlVMTCk7CiAgICAgb2ZmID0gY29tcGlsZXJfbmV4dF9pbnN0cihjLCBjLT51LT51X2N1cmJsb2NrKTsKICAgICBpZiAob2ZmIDwgMCkKQEAgLTExOTQsNyArMTIxMiw2IEBACiAgICAgaSA9ICZjLT51LT51X2N1cmJsb2NrLT5iX2luc3RyW29mZl07CiAgICAgaS0+aV9vcGNvZGUgPSBvcGNvZGU7CiAgICAgaS0+aV90YXJnZXQgPSBiOwotICAgIGktPmlfaGFzYXJnID0gMTsKICAgICBpZiAoYWJzb2x1dGUpCiAgICAgICAgIGktPmlfamFicyA9IDE7CiAgICAgZWxzZQpAQCAtMTIwMywyMiArMTIyMCwxMiBAQAogICAgIHJldHVybiAxOwogfQogCi0vKiBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBORVdfQkxPQ0sgYW5kIE5FWFRfQkxPQ0sgaXMgc3VidGxlLiAgKEknZAotICAgbGlrZSB0byBmaW5kIGJldHRlciBuYW1lcy4pICBORVdfQkxPQ0soKSBjcmVhdGVzIGEgbmV3IGJsb2NrIGFuZCBzZXRzCi0gICBpdCBhcyB0aGUgY3VycmVudCBibG9jay4gIE5FWFRfQkxPQ0soKSBhbHNvIGNyZWF0ZXMgYW4gaW1wbGljaXQganVtcAotICAgZnJvbSB0aGUgY3VycmVudCBibG9jayB0byB0aGUgbmV3IGJsb2NrLgorLyogTkVYVF9CTE9DSygpIGNyZWF0ZXMgYW4gaW1wbGljaXQganVtcCBmcm9tIHRoZSBjdXJyZW50IGJsb2NrCisgICB0byB0aGUgbmV3IGJsb2NrLgorCisgICBUaGUgcmV0dXJucyBpbnNpZGUgdGhpcyBtYWNybyBtYWtlIGl0IGltcG9zc2libGUgdG8gZGVjcmVmIG9iamVjdHMKKyAgIGNyZWF0ZWQgaW4gdGhlIGxvY2FsIGZ1bmN0aW9uLiBMb2NhbCBvYmplY3RzIHNob3VsZCB1c2UgdGhlIGFyZW5hLgogKi8KLQotLyogVGhlIHJldHVybnMgaW5zaWRlIHRoZXNlIG1hY3JvcyBtYWtlIGl0IGltcG9zc2libGUgdG8gZGVjcmVmIG9iamVjdHMKLSAgIGNyZWF0ZWQgaW4gdGhlIGxvY2FsIGZ1bmN0aW9uLiAgTG9jYWwgb2JqZWN0cyBzaG91bGQgdXNlIHRoZSBhcmVuYS4KLSovCi0KLQotI2RlZmluZSBORVdfQkxPQ0soQykgeyBcCi0gICAgaWYgKGNvbXBpbGVyX3VzZV9uZXdfYmxvY2soKEMpKSA9PSBOVUxMKSBcCi0gICAgICAgIHJldHVybiAwOyBcCi19Ci0KICNkZWZpbmUgTkVYVF9CTE9DSyhDKSB7IFwKICAgICBpZiAoY29tcGlsZXJfbmV4dF9ibG9jaygoQykpID09IE5VTEwpIFwKICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTEyNDEsNiArMTI0OCwxNSBAQAogICAgICAgICByZXR1cm4gMDsgXAogfQogCisvKiBTYW1lIGFzIEFERE9QX08sIGJ1dCBzdGVhbHMgYSByZWZlcmVuY2UuICovCisjZGVmaW5lIEFERE9QX04oQywgT1AsIE8sIFRZUEUpIHsgXAorICAgIGlmICghY29tcGlsZXJfYWRkb3BfbygoQyksIChPUCksIChDKS0+dS0+dV8gIyMgVFlQRSwgKE8pKSkgeyBcCisgICAgICAgIFB5X0RFQ1JFRigoTykpOyBcCisgICAgICAgIHJldHVybiAwOyBcCisgICAgfSBcCisgICAgUHlfREVDUkVGKChPKSk7IFwKK30KKwogI2RlZmluZSBBRERPUF9OQU1FKEMsIE9QLCBPLCBUWVBFKSB7IFwKICAgICBpZiAoIWNvbXBpbGVyX2FkZG9wX25hbWUoKEMpLCAoT1ApLCAoQyktPnUtPnVfICMjIFRZUEUsIChPKSkpIFwKICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTEzMDksMTAgKzEzMjUsMTEwIEBACiB7CiAgICAgaWYgKHMtPmtpbmQgIT0gRXhwcl9raW5kKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gcy0+di5FeHByLnZhbHVlLT5raW5kID09IFN0cl9raW5kOworICAgIGlmIChzLT52LkV4cHIudmFsdWUtPmtpbmQgPT0gU3RyX2tpbmQpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChzLT52LkV4cHIudmFsdWUtPmtpbmQgPT0gQ29uc3RhbnRfa2luZCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9DaGVja0V4YWN0KHMtPnYuRXhwci52YWx1ZS0+di5Db25zdGFudC52YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKLS8qIENvbXBpbGUgYSBzZXF1ZW5jZSBvZiBzdGF0ZW1lbnRzLCBjaGVja2luZyBmb3IgYSBkb2NzdHJpbmcuICovCitzdGF0aWMgaW50Citpc19jb25zdChleHByX3R5IGUpCit7CisgICAgc3dpdGNoIChlLT5raW5kKSB7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgIGNhc2UgTnVtX2tpbmQ6CisgICAgY2FzZSBTdHJfa2luZDoKKyAgICBjYXNlIEJ5dGVzX2tpbmQ6CisgICAgY2FzZSBFbGxpcHNpc19raW5kOgorICAgIGNhc2UgTmFtZUNvbnN0YW50X2tpbmQ6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jb25zdF92YWx1ZShleHByX3R5IGUpCit7CisgICAgc3dpdGNoIChlLT5raW5kKSB7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5Db25zdGFudC52YWx1ZTsKKyAgICBjYXNlIE51bV9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5OdW0ubjsKKyAgICBjYXNlIFN0cl9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5TdHIuczsKKyAgICBjYXNlIEJ5dGVzX2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52LkJ5dGVzLnM7CisgICAgY2FzZSBFbGxpcHNpc19raW5kOgorICAgICAgICByZXR1cm4gUHlfRWxsaXBzaXM7CisgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmV0dXJuIGUtPnYuTmFtZUNvbnN0YW50LnZhbHVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCghaXNfY29uc3QoZSkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKKy8qIFNlYXJjaCBpZiB2YXJpYWJsZSBhbm5vdGF0aW9ucyBhcmUgcHJlc2VudCBzdGF0aWNhbGx5IGluIGEgYmxvY2suICovCisKK3N0YXRpYyBpbnQKK2ZpbmRfYW5uKGFzZGxfc2VxICpzdG10cykKK3sKKyAgICBpbnQgaSwgaiwgcmVzID0gMDsKKyAgICBzdG10X3R5IHN0OworCisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzdG10cyk7IGkrKykgeworICAgICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzdG10cywgaSk7CisgICAgICAgIHN3aXRjaCAoc3QtPmtpbmQpIHsKKyAgICAgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEZvcl9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuRm9yLmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5Gb3Iub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5Bc3luY0Zvci5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuQXN5bmNGb3Iub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdoaWxlX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5XaGlsZS5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuV2hpbGUub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElmX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5JZi5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuSWYub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpdGhfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LldpdGguYm9keSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBc3luY1dpdGhfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LkFzeW5jV2l0aC5ib2R5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGFzZGxfc2VxX0xFTihzdC0+di5UcnkuaGFuZGxlcnMpOyBqKyspIHsKKyAgICAgICAgICAgICAgICBleGNlcHRoYW5kbGVyX3R5IGhhbmRsZXIgPSAoZXhjZXB0aGFuZGxlcl90eSlhc2RsX3NlcV9HRVQoCisgICAgICAgICAgICAgICAgICAgIHN0LT52LlRyeS5oYW5kbGVycywgaik7CisgICAgICAgICAgICAgICAgaWYgKGZpbmRfYW5uKGhhbmRsZXItPnYuRXhjZXB0SGFuZGxlci5ib2R5KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5UcnkuYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LlRyeS5maW5hbGJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5Ucnkub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmVzID0gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCisvKiBDb21waWxlIGEgc2VxdWVuY2Ugb2Ygc3RhdGVtZW50cywgY2hlY2tpbmcgZm9yIGEgZG9jc3RyaW5nCisgICBhbmQgZm9yIGFubm90YXRpb25zLiAqLwogCiBzdGF0aWMgaW50CiBjb21waWxlcl9ib2R5KHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKnN0bXRzKQpAQCAtMTMyMCw2ICsxNDM2LDE5IEBACiAgICAgaW50IGkgPSAwOwogICAgIHN0bXRfdHkgc3Q7CiAKKyAgICAvKiBTZXQgY3VycmVudCBsaW5lIG51bWJlciB0byB0aGUgbGluZSBudW1iZXIgb2YgZmlyc3Qgc3RhdGVtZW50LgorICAgICAgIFRoaXMgd2F5IGxpbmUgbnVtYmVyIGZvciBTRVRVUF9BTk5PVEFUSU9OUyB3aWxsIGFsd2F5cworICAgICAgIGNvaW5jaWRlIHdpdGggdGhlIGxpbmUgbnVtYmVyIG9mIGZpcnN0ICJyZWFsIiBzdGF0ZW1lbnQgaW4gbW9kdWxlLgorICAgICAgIElmIGJvZHkgaXMgZW1weSwgdGhlbiBsaW5lbm8gd2lsbCBiZSBzZXQgbGF0ZXIgaW4gYXNzZW1ibGUuICovCisgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9NT0RVTEUgJiYKKyAgICAgICAgIWMtPnUtPnVfbGluZW5vICYmIGFzZGxfc2VxX0xFTihzdG10cykpIHsKKyAgICAgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoc3RtdHMsIDApOworICAgICAgICBjLT51LT51X2xpbmVubyA9IHN0LT5saW5lbm87CisgICAgfQorICAgIC8qIEV2ZXJ5IGFubm90YXRlZCBjbGFzcyBhbmQgbW9kdWxlIHNob3VsZCBoYXZlIF9fYW5ub3RhdGlvbnNfXy4gKi8KKyAgICBpZiAoZmluZF9hbm4oc3RtdHMpKSB7CisgICAgICAgIEFERE9QKGMsIFNFVFVQX0FOTk9UQVRJT05TKTsKKyAgICB9CiAgICAgaWYgKCFhc2RsX3NlcV9MRU4oc3RtdHMpKQogICAgICAgICByZXR1cm4gMTsKICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzdG10cywgMCk7CkBAIC0xMzU3LDYgKzE0ODYsOSBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50ZXJhY3RpdmVfa2luZDoKKyAgICAgICAgaWYgKGZpbmRfYW5uKG1vZC0+di5JbnRlcmFjdGl2ZS5ib2R5KSkgeworICAgICAgICAgICAgQURET1AoYywgU0VUVVBfQU5OT1RBVElPTlMpOworICAgICAgICB9CiAgICAgICAgIGMtPmNfaW50ZXJhY3RpdmUgPSAxOwogICAgICAgICBWSVNJVF9TRVFfSU5fU0NPUEUoYywgc3RtdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLT52LkludGVyYWN0aXZlLmJvZHkpOwpAQCAtMTQyNiw1MyArMTU1OCw1MCBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21waWxlcl9tYWtlX2Nsb3N1cmUoc3RydWN0IGNvbXBpbGVyICpjLCBQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IGFyZ3MsIFB5T2JqZWN0ICpxdWFsbmFtZSkKK2NvbXBpbGVyX21ha2VfY2xvc3VyZShzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5Q29kZU9iamVjdCAqY28sIFB5X3NzaXplX3QgZmxhZ3MsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBQeV9zc2l6ZV90IGksIGZyZWUgPSBQeUNvZGVfR2V0TnVtRnJlZShjbyk7CiAgICAgaWYgKHF1YWxuYW1lID09IE5VTEwpCiAgICAgICAgIHF1YWxuYW1lID0gY28tPmNvX25hbWU7CiAKLSAgICBpZiAoZnJlZSA9PSAwKSB7Ci0gICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgKFB5T2JqZWN0KiljbywgY29uc3RzKTsKLSAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBxdWFsbmFtZSwgY29uc3RzKTsKLSAgICAgICAgQURET1BfSShjLCBNQUtFX0ZVTkNUSU9OLCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBmcmVlOyArK2kpIHsKLSAgICAgICAgLyogQnlwYXNzIGNvbV9hZGRvcF92YXJuYW1lIGJlY2F1c2UgaXQgd2lsbCBnZW5lcmF0ZQotICAgICAgICAgICBMT0FEX0RFUkVGIGJ1dCBMT0FEX0NMT1NVUkUgaXMgbmVlZGVkLgotICAgICAgICAqLwotICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX2ZyZWV2YXJzLCBpKTsKLSAgICAgICAgaW50IGFyZywgcmVmdHlwZTsKKyAgICBpZiAoZnJlZSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZnJlZTsgKytpKSB7CisgICAgICAgICAgICAvKiBCeXBhc3MgY29tX2FkZG9wX3Zhcm5hbWUgYmVjYXVzZSBpdCB3aWxsIGdlbmVyYXRlCisgICAgICAgICAgICAgICBMT0FEX0RFUkVGIGJ1dCBMT0FEX0NMT1NVUkUgaXMgbmVlZGVkLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fZnJlZXZhcnMsIGkpOworICAgICAgICAgICAgaW50IGFyZywgcmVmdHlwZTsKIAotICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IElmIGEgY2xhc3MgY29udGFpbnMgYSBtZXRob2Qgd2l0aCBhCi0gICAgICAgICAgIGZyZWUgdmFyaWFibGUgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG1ldGhvZCwKLSAgICAgICAgICAgdGhlIG5hbWUgd2lsbCBiZSBjb25zaWRlcmVkIGZyZWUgKmFuZCogbG9jYWwgaW4gdGhlCi0gICAgICAgICAgIGNsYXNzLiAgSXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGNsb3N1cmUsIGFzCi0gICAgICAgICAgIHdlbGwgYXMgYnkgdGhlIG5vcm1hbCBuYW1lIGxvb29rdXAgbG9naWMuCi0gICAgICAgICovCi0gICAgICAgIHJlZnR5cGUgPSBnZXRfcmVmX3R5cGUoYywgbmFtZSk7Ci0gICAgICAgIGlmIChyZWZ0eXBlID09IENFTEwpCi0gICAgICAgICAgICBhcmcgPSBjb21waWxlcl9sb29rdXBfYXJnKGMtPnUtPnVfY2VsbHZhcnMsIG5hbWUpOwotICAgICAgICBlbHNlIC8qIChyZWZ0eXBlID09IEZSRUUpICovCi0gICAgICAgICAgICBhcmcgPSBjb21waWxlcl9sb29rdXBfYXJnKGMtPnUtPnVfZnJlZXZhcnMsIG5hbWUpOwotICAgICAgICBpZiAoYXJnID09IC0xKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAibG9va3VwICVzIGluICVzICVkICVkXG4iCi0gICAgICAgICAgICAgICAgImZyZWV2YXJzIG9mICVzOiAlc1xuIiwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIobmFtZSkpLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoYy0+dS0+dV9uYW1lKSwKLSAgICAgICAgICAgICAgICByZWZ0eXBlLCBhcmcsCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChjby0+Y29fbmFtZSksCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdF9SZXByKGNvLT5jb19mcmVldmFycykpKTsKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNvbXBpbGVyX21ha2VfY2xvc3VyZSgpIik7CisgICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IElmIGEgY2xhc3MgY29udGFpbnMgYSBtZXRob2Qgd2l0aCBhCisgICAgICAgICAgICAgICBmcmVlIHZhcmlhYmxlIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBtZXRob2QsCisgICAgICAgICAgICAgICB0aGUgbmFtZSB3aWxsIGJlIGNvbnNpZGVyZWQgZnJlZSAqYW5kKiBsb2NhbCBpbiB0aGUKKyAgICAgICAgICAgICAgIGNsYXNzLiAgSXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGNsb3N1cmUsIGFzCisgICAgICAgICAgICAgICB3ZWxsIGFzIGJ5IHRoZSBub3JtYWwgbmFtZSBsb29va3VwIGxvZ2ljLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJlZnR5cGUgPSBnZXRfcmVmX3R5cGUoYywgbmFtZSk7CisgICAgICAgICAgICBpZiAocmVmdHlwZSA9PSBDRUxMKQorICAgICAgICAgICAgICAgIGFyZyA9IGNvbXBpbGVyX2xvb2t1cF9hcmcoYy0+dS0+dV9jZWxsdmFycywgbmFtZSk7CisgICAgICAgICAgICBlbHNlIC8qIChyZWZ0eXBlID09IEZSRUUpICovCisgICAgICAgICAgICAgICAgYXJnID0gY29tcGlsZXJfbG9va3VwX2FyZyhjLT51LT51X2ZyZWV2YXJzLCBuYW1lKTsKKyAgICAgICAgICAgIGlmIChhcmcgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgImxvb2t1cCAlcyBpbiAlcyAlZCAlZFxuIgorICAgICAgICAgICAgICAgICAgICAiZnJlZXZhcnMgb2YgJXM6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIobmFtZSkpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KGMtPnUtPnVfbmFtZSksCisgICAgICAgICAgICAgICAgICAgIHJlZnR5cGUsIGFyZywKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChjby0+Y29fbmFtZSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3RfUmVwcihjby0+Y29fZnJlZXZhcnMpKSk7CisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY29tcGlsZXJfbWFrZV9jbG9zdXJlKCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFERE9QX0koYywgTE9BRF9DTE9TVVJFLCBhcmcpOwogICAgICAgICB9Ci0gICAgICAgIEFERE9QX0koYywgTE9BRF9DTE9TVVJFLCBhcmcpOworICAgICAgICBmbGFncyB8PSAweDA4OworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBmcmVlKTsKICAgICB9Ci0gICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgZnJlZSk7CiAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCAoUHlPYmplY3QqKWNvLCBjb25zdHMpOwogICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgcXVhbG5hbWUsIGNvbnN0cyk7Ci0gICAgQURET1BfSShjLCBNQUtFX0NMT1NVUkUsIGFyZ3MpOworICAgIEFERE9QX0koYywgTUFLRV9GVU5DVElPTiwgZmxhZ3MpOwogICAgIHJldHVybiAxOwogfQogCkBAIC0xNDk0LDI2ICsxNjIzLDYwIEBACiBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFzZGxfc2VxICprd29ubHlhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmt3X2RlZmF1bHRzKQogewotICAgIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGRlZmF1bHRzICsgMS4KLSAgICAgICBSZXR1cm5zIDAgb24gZXJyb3IuCi0gICAgICovCi0gICAgaW50IGksIGRlZmF1bHRfY291bnQgPSAwOworICAgIC8qIFB1c2ggYSBkaWN0IG9mIGtleXdvcmQtb25seSBkZWZhdWx0IHZhbHVlcy4KKworICAgICAgIFJldHVybiAwIG9uIGVycm9yLCAtMSBpZiBubyBkaWN0IHB1c2hlZCwgMSBpZiBhIGRpY3QgaXMgcHVzaGVkLgorICAgICAgICovCisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKmtleXMgPSBOVUxMOworCiAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihrd29ubHlhcmdzKTsgaSsrKSB7CiAgICAgICAgIGFyZ190eSBhcmcgPSBhc2RsX3NlcV9HRVQoa3dvbmx5YXJncywgaSk7CiAgICAgICAgIGV4cHJfdHkgZGVmYXVsdF8gPSBhc2RsX3NlcV9HRVQoa3dfZGVmYXVsdHMsIGkpOwogICAgICAgICBpZiAoZGVmYXVsdF8pIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICptYW5nbGVkID0gX1B5X01hbmdsZShjLT51LT51X3ByaXZhdGUsIGFyZy0+YXJnKTsKLSAgICAgICAgICAgIGlmICghbWFuZ2xlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgbWFuZ2xlZCwgY29uc3RzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtYW5nbGVkKTsKLSAgICAgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfZXhwcihjLCBkZWZhdWx0XykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmICghbWFuZ2xlZCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0X2NvdW50Kys7CisgICAgICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAga2V5cyA9IFB5TGlzdF9OZXcoMSk7CisgICAgICAgICAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0oa2V5cywgMCwgbWFuZ2xlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVzID0gUHlMaXN0X0FwcGVuZChrZXlzLCBtYW5nbGVkKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfZXhwcihjLCBkZWZhdWx0XykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0X2NvdW50ICsgMTsKKyAgICBpZiAoa2V5cyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgZGVmYXVsdF9jb3VudCA9IFB5TGlzdF9HRVRfU0laRShrZXlzKTsKKyAgICAgICAgUHlPYmplY3QgKmtleXNfdHVwbGUgPSBQeUxpc3RfQXNUdXBsZShrZXlzKTsKKyAgICAgICAgUHlfREVDUkVGKGtleXMpOworICAgICAgICBpZiAoa2V5c190dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGtleXNfdHVwbGUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgZGVmYXVsdF9jb3VudCk7CisgICAgICAgIGFzc2VydChkZWZhdWx0X2NvdW50ID4gMCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihrZXlzKTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludApAQCAtMTU1NiwxMSArMTcxOSwxMCBAQAogY29tcGlsZXJfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IGNvbXBpbGVyICpjLCBhcmd1bWVudHNfdHkgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgcmV0dXJucykKIHsKLSAgICAvKiBQdXNoIGFyZyBhbm5vdGF0aW9ucyBhbmQgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gUmV0dXJuIHRoZSAjCi0gICAgICAgb2YgaXRlbXMgcHVzaGVkICsgMS4gVGhlIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgb3V0LW9mLW9yZGVyIHdydCB0aGUKLSAgICAgICBzb3VyY2UgY29kZS4KKyAgICAvKiBQdXNoIGFyZyBhbm5vdGF0aW9uIGRpY3QuCisgICAgICAgVGhlIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgb3V0LW9mLW9yZGVyIHdydCB0aGUgc291cmNlIGNvZGUuCiAKLSAgICAgICBNb3JlIHRoYW4gMl4xNi0xIGFubm90YXRpb25zIGlzIGEgU3ludGF4RXJyb3IuIFJldHVybnMgMCBvbiBlcnJvci4KKyAgICAgICBSZXR1cm4gMCBvbiBlcnJvciwgLTEgaWYgbm8gZGljdCBwdXNoZWQsIDEgaWYgYSBkaWN0IGlzIHB1c2hlZC4KICAgICAgICAqLwogICAgIHN0YXRpYyBpZGVudGlmaWVyIHJldHVybl9zdHI7CiAgICAgUHlPYmplY3QgKm5hbWVzOwpAQCAtMTU5MiwzMiArMTc1NCwyMCBAQAogICAgIH0KIAogICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRShuYW1lcyk7Ci0gICAgaWYgKGxlbiA+IDY1NTM0KSB7Ci0gICAgICAgIC8qIGxlbiBtdXN0IGZpdCBpbiAxNiBiaXRzLCBhbmQgbGVuIGlzIGluY3JlbWVudGVkIGJlbG93ICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0b28gbWFueSBhbm5vdGF0aW9ucyIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KICAgICBpZiAobGVuKSB7Ci0gICAgICAgIC8qIGNvbnZlcnQgbmFtZXMgdG8gYSB0dXBsZSBhbmQgcGxhY2Ugb24gc3RhY2sgKi8KLSAgICAgICAgUHlPYmplY3QgKmVsdDsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBQeU9iamVjdCAqcyA9IFB5VHVwbGVfTmV3KGxlbik7Ci0gICAgICAgIGlmICghcykKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgZWx0ID0gUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBpKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihlbHQpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShzLCBpLCBlbHQpOworICAgICAgICBQeU9iamVjdCAqa2V5dHVwbGUgPSBQeUxpc3RfQXNUdXBsZShuYW1lcyk7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisgICAgICAgIGlmIChrZXl0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHMsIGNvbnN0cyk7Ci0gICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgbGVuKys7IC8qIGluY2x1ZGUgdGhlIGp1c3QtcHVzaGVkIHR1cGxlICovCisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5dHVwbGUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgbGVuKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0KLSAgICAvKiBXZSBqdXN0IGNoZWNrZWQgdGhhdCBsZW4gPD0gNjU1MzUsIHNlZSBhYm92ZSAqLwotICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGxlbiArIDEsIFB5X3NzaXplX3QsIGludCk7CisgICAgZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKIGVycm9yOgogICAgIFB5X0RFQ1JFRihuYW1lcyk7CkBAIC0xNjI1LDYgKzE3NzUsMzYgQEAKIH0KIAogc3RhdGljIGludAorY29tcGlsZXJfdmlzaXRfZGVmYXVsdHMoc3RydWN0IGNvbXBpbGVyICpjLCBhcmd1bWVudHNfdHkgYXJncykKK3sKKyAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOworICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cykpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorY29tcGlsZXJfZGVmYXVsdF9hcmd1bWVudHMoc3RydWN0IGNvbXBpbGVyICpjLCBhcmd1bWVudHNfdHkgYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGZ1bmNmbGFncyA9IDA7CisgICAgaWYgKGFyZ3MtPmRlZmF1bHRzICYmIGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cykgPiAwKSB7CisgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfZGVmYXVsdHMoYywgYXJncykpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGZ1bmNmbGFncyB8PSAweDAxOworICAgIH0KKyAgICBpZiAoYXJncy0+a3dvbmx5YXJncykgeworICAgICAgICBpbnQgcmVzID0gY29tcGlsZXJfdmlzaXRfa3dvbmx5ZGVmYXVsdHMoYywgYXJncy0+a3dvbmx5YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmt3X2RlZmF1bHRzKTsKKyAgICAgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVzID4gMCkgeworICAgICAgICAgICAgZnVuY2ZsYWdzIHw9IDB4MDI7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZ1bmNmbGFnczsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfZnVuY3Rpb24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMsIGludCBpc19hc3luYykKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvOwpAQCAtMTYzNSwxMiArMTgxNSwxMSBAQAogICAgIGFzZGxfc2VxKiBkZWNvczsKICAgICBhc2RsX3NlcSAqYm9keTsKICAgICBzdG10X3R5IHN0OwotICAgIFB5X3NzaXplX3QgaSwgbiwgYXJnbGVuZ3RoOwotICAgIGludCBkb2NzdHJpbmcsIGt3X2RlZmF1bHRfY291bnQgPSAwOwotICAgIGludCBudW1fYW5ub3RhdGlvbnM7CisgICAgUHlfc3NpemVfdCBpLCBuLCBmdW5jZmxhZ3M7CisgICAgaW50IGRvY3N0cmluZzsKKyAgICBpbnQgYW5ub3RhdGlvbnM7CiAgICAgaW50IHNjb3BlX3R5cGU7CiAKLQogICAgIGlmIChpc19hc3luYykgewogICAgICAgICBhc3NlcnQocy0+a2luZCA9PSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQpOwogCkBAIC0xNjY1LDMwICsxODQ0LDMyIEBACiAKICAgICBpZiAoIWNvbXBpbGVyX2RlY29yYXRvcnMoYywgZGVjb3MpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYXJncy0+ZGVmYXVsdHMpCi0gICAgICAgIFZJU0lUX1NFUShjLCBleHByLCBhcmdzLT5kZWZhdWx0cyk7Ci0gICAgaWYgKGFyZ3MtPmt3b25seWFyZ3MpIHsKLSAgICAgICAgaW50IHJlcyA9IGNvbXBpbGVyX3Zpc2l0X2t3b25seWRlZmF1bHRzKGMsIGFyZ3MtPmt3b25seWFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5rd19kZWZhdWx0cyk7Ci0gICAgICAgIGlmIChyZXMgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBrd19kZWZhdWx0X2NvdW50ID0gcmVzIC0gMTsKLSAgICB9Ci0gICAgbnVtX2Fubm90YXRpb25zID0gY29tcGlsZXJfdmlzaXRfYW5ub3RhdGlvbnMoYywgYXJncywgcmV0dXJucyk7Ci0gICAgaWYgKG51bV9hbm5vdGF0aW9ucyA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBudW1fYW5ub3RhdGlvbnMtLTsKLSAgICBhc3NlcnQoKG51bV9hbm5vdGF0aW9ucyAmIDB4RkZGRikgPT0gbnVtX2Fubm90YXRpb25zKTsKIAotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlX3R5cGUsICh2b2lkICopcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubykpCisgICAgZnVuY2ZsYWdzID0gY29tcGlsZXJfZGVmYXVsdF9hcmd1bWVudHMoYywgYXJncyk7CisgICAgaWYgKGZ1bmNmbGFncyA9PSAtMSkgewogICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBhbm5vdGF0aW9ucyA9IGNvbXBpbGVyX3Zpc2l0X2Fubm90YXRpb25zKGMsIGFyZ3MsIHJldHVybnMpOworICAgIGlmIChhbm5vdGF0aW9ucyA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmIChhbm5vdGF0aW9ucyA+IDApIHsKKyAgICAgICAgZnVuY2ZsYWdzIHw9IDB4MDQ7CisgICAgfQorCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBzY29wZV90eXBlLCAodm9pZCAqKXMsIHMtPmxpbmVubykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoYm9keSwgMCk7CiAgICAgZG9jc3RyaW5nID0gY29tcGlsZXJfaXNkb2NzdHJpbmcoc3QpOwotICAgIGlmIChkb2NzdHJpbmcgJiYgYy0+Y19vcHRpbWl6ZSA8IDIpCi0gICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5TdHIuczsKKyAgICBpZiAoZG9jc3RyaW5nICYmIGMtPmNfb3B0aW1pemUgPCAyKSB7CisgICAgICAgIGlmIChzdC0+di5FeHByLnZhbHVlLT5raW5kID09IENvbnN0YW50X2tpbmQpCisgICAgICAgICAgICBmaXJzdF9jb25zdCA9IHN0LT52LkV4cHIudmFsdWUtPnYuQ29uc3RhbnQudmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5TdHIuczsKKyAgICB9CiAgICAgaWYgKGNvbXBpbGVyX2FkZF9vKGMsIGMtPnUtPnVfY29uc3RzLCBmaXJzdF9jb25zdCkgPCAwKSAgICAgIHsKICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzEyLDEyICsxODkzLDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwotICAgIGFyZ2xlbmd0aCB8PSBudW1fYW5ub3RhdGlvbnMgPDwgMTY7Ci0gICAgaWYgKGlzX2FzeW5jKQotICAgICAgICBjby0+Y29fZmxhZ3MgfD0gQ09fQ09ST1VUSU5FOwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBmdW5jZmxhZ3MsIHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKQEAgLTE3OTIsNyArMTk2OCw3IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV9uZWVkc19jbGFzc19jbG9zdXJlKSB7Ci0gICAgICAgICAgICAvKiByZXR1cm4gdGhlIChlbXB0eSkgX19jbGFzc19fIGNlbGwgKi8KKyAgICAgICAgICAgIC8qIHN0b3JlIF9fY2xhc3NjZWxsX18gaW50byBjbGFzcyBuYW1lc3BhY2UgKi8KICAgICAgICAgICAgIHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CkBAIC0xODA1LDE1ICsxOTgxLDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhc3NlcnQoaSA9PSAwKTsKLSAgICAgICAgICAgIC8qIFJldHVybiB0aGUgY2VsbCB3aGVyZSB0byBzdG9yZSBfX2NsYXNzX18gKi8KKwogICAgICAgICAgICAgQURET1BfSShjLCBMT0FEX0NMT1NVUkUsIGkpOworICAgICAgICAgICAgc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fY2xhc3NjZWxsX18iKTsKKyAgICAgICAgICAgIGlmICghc3RyIHx8ICFjb21waWxlcl9uYW1lb3AoYywgc3RyLCBTdG9yZSkpIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHN0cik7CisgICAgICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogVGhpcyBoYXBwZW5zIHdoZW4gbm9ib2R5IHJlZmVyZW5jZXMgdGhlIGNlbGwuICovCiAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X1NpemUoYy0+dS0+dV9jZWxsdmFycykgPT0gMCk7Ci0gICAgICAgICAgICAvKiBUaGlzIGhhcHBlbnMgd2hlbiBub2JvZHkgcmVmZXJlbmNlcyB0aGUgY2VsbC4gUmV0dXJuIE5vbmUuICovCi0gICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CiAgICAgICAgIH0KLSAgICAgICAgQURET1BfSU5fU0NPUEUoYywgUkVUVVJOX1ZBTFVFKTsKICAgICAgICAgLyogY3JlYXRlIHRoZSBjb2RlIG9iamVjdCAqLwogICAgICAgICBjbyA9IGFzc2VtYmxlKGMsIDEpOwogICAgIH0KQEAgLTE4NzcsOCArMjA1OCw3IEBACiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKICAgICBQeU9iamVjdCAqcXVhbG5hbWU7CiAgICAgc3RhdGljIGlkZW50aWZpZXIgbmFtZTsKLSAgICBpbnQga3dfZGVmYXVsdF9jb3VudCA9IDA7Ci0gICAgUHlfc3NpemVfdCBhcmdsZW5ndGg7CisgICAgUHlfc3NpemVfdCBmdW5jZmxhZ3M7CiAgICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBlLT52LkxhbWJkYS5hcmdzOwogICAgIGFzc2VydChlLT5raW5kID09IExhbWJkYV9raW5kKTsKIApAQCAtMTg4OCwxNCArMjA2OCwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGFyZ3MtPmRlZmF1bHRzKQotICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOwotICAgIGlmIChhcmdzLT5rd29ubHlhcmdzKSB7Ci0gICAgICAgIGludCByZXMgPSBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhjLCBhcmdzLT5rd29ubHlhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dfZGVmYXVsdHMpOwotICAgICAgICBpZiAocmVzID09IDApIHJldHVybiAwOwotICAgICAgICBrd19kZWZhdWx0X2NvdW50ID0gcmVzIC0gMTsKKyAgICBmdW5jZmxhZ3MgPSBjb21waWxlcl9kZWZhdWx0X2FyZ3VtZW50cyhjLCBhcmdzKTsKKyAgICBpZiAoZnVuY2ZsYWdzID09IC0xKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgQ09NUElMRVJfU0NPUEVfTEFNQkRBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE5MjEsOSArMjA5OCw3IEBACiAgICAgaWYgKGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBmdW5jZmxhZ3MsIHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKQEAgLTIwMDIsMTQgKzIxNzcsMTQgQEAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2FzeW5jX2ZvcihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnN0b3BpdGVyX2Vycm9yID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihTdG9wQXN5bmNJdGVyYXRpb24pOworCiAgICAgYmFzaWNibG9jayAqdHJ5LCAqZXhjZXB0LCAqZW5kLCAqYWZ0ZXJfdHJ5LCAqdHJ5X2NsZWFudXAsCiAgICAgICAgICAgICAgICAqYWZ0ZXJfbG9vcCwgKmFmdGVyX2xvb3BfZWxzZTsKIAotICAgIGlmIChzdG9waXRlcl9lcnJvciA9PSBOVUxMKSB7Ci0gICAgICAgIHN0b3BpdGVyX2Vycm9yID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIlN0b3BBc3luY0l0ZXJhdGlvbiIpOwotICAgICAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgIFB5T2JqZWN0ICpzdG9wX2FpdGVyX2Vycm9yID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICBpZiAoc3RvcF9haXRlcl9lcnJvciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIHRyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKQEAgLTIwNTEsNyArMjIyNiw3IEBACiAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOwogICAgIEFERE9QKGMsIERVUF9UT1ApOwotICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfTyhjLCBMT0FEX0dMT0JBTCwgc3RvcF9haXRlcl9lcnJvciwgbmFtZXMpOwogICAgIEFERE9QX0koYywgQ09NUEFSRV9PUCwgUHlDbXBfRVhDX01BVENIKTsKICAgICBBRERPUF9KQUJTKGMsIFBPUF9KVU1QX0lGX0ZBTFNFLCB0cnlfY2xlYW51cCk7CiAKQEAgLTI1OTksNiArMjc3NCwyNSBAQAogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl92aXNpdF9zdG10X2V4cHIoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IHZhbHVlKQoreworICAgIGlmIChjLT5jX2ludGVyYWN0aXZlICYmIGMtPmNfbmVzdGxldmVsIDw9IDEpIHsKKyAgICAgICAgVklTSVQoYywgZXhwciwgdmFsdWUpOworICAgICAgICBBRERPUChjLCBQUklOVF9FWFBSKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKGlzX2NvbnN0KHZhbHVlKSkgeworICAgICAgICAvKiBpZ25vcmUgY29uc3RhbnQgc3RhdGVtZW50ICovCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIFZJU0lUKGMsIGV4cHIsIHZhbHVlKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfc3RtdChzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKICAgICBQeV9zc2l6ZV90IGksIG47CkBAIC0yNjE3LDYgKzI4MTEsOSBAQAogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidyZXR1cm4nIG91dHNpZGUgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKHMtPnYuUmV0dXJuLnZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV9jb3JvdXRpbmUgJiYgYy0+dS0+dV9zdGUtPnN0ZV9nZW5lcmF0b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBjLCAiJ3JldHVybicgd2l0aCB2YWx1ZSBpbiBhc3luYyBnZW5lcmF0b3IiKTsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuUmV0dXJuLnZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC0yNjM4LDYgKzI4MzUsOCBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfYXVnYXNzaWduKGMsIHMpOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9hbm5hc3NpZ24oYywgcyk7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2ZvcihjLCBzKTsKICAgICBjYXNlIFdoaWxlX2tpbmQ6CkBAIC0yNjY4LDE2ICsyODY3LDcgQEAKICAgICBjYXNlIE5vbmxvY2FsX2tpbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXhwcl9raW5kOgotICAgICAgICBpZiAoYy0+Y19pbnRlcmFjdGl2ZSAmJiBjLT5jX25lc3RsZXZlbCA8PSAxKSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkV4cHIudmFsdWUpOwotICAgICAgICAgICAgQURET1AoYywgUFJJTlRfRVhQUik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocy0+di5FeHByLnZhbHVlLT5raW5kICE9IFN0cl9raW5kICYmCi0gICAgICAgICAgICAgICAgIHMtPnYuRXhwci52YWx1ZS0+a2luZCAhPSBOdW1fa2luZCkgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5FeHByLnZhbHVlKTsKLSAgICAgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gY29tcGlsZXJfdmlzaXRfc3RtdF9leHByKGMsIHMtPnYuRXhwci52YWx1ZSk7CiAgICAgY2FzZSBQYXNzX2tpbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQnJlYWtfa2luZDoKQEAgLTMwNzksOSArMzI2OSw1MyBAQAogfQogCiBzdGF0aWMgaW50CithcmVfYWxsX2l0ZW1zX2NvbnN0KGFzZGxfc2VxICpzZXEsIFB5X3NzaXplX3QgYmVnaW4sIFB5X3NzaXplX3QgZW5kKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkga2V5ID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKHNlcSwgaSk7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCB8fCAhaXNfY29uc3Qoa2V5KSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfc3ViZGljdChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSwgUHlfc3NpemVfdCBiZWdpbiwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlfc3NpemVfdCBpLCBuID0gZW5kIC0gYmVnaW47CisgICAgUHlPYmplY3QgKmtleXMsICprZXk7CisgICAgaWYgKG4gPiAxICYmIGFyZV9hbGxfaXRlbXNfY29uc3QoZS0+di5EaWN0LmtleXMsIGJlZ2luLCBlbmQpKSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgIH0KKyAgICAgICAga2V5cyA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBnZXRfY29uc3RfdmFsdWUoKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5cywgaSAtIGJlZ2luLCBrZXkpOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5cywgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9kaWN0KHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgaSwgbiwgY29udGFpbmVycywgZWxlbWVudHM7CisgICAgUHlfc3NpemVfdCBpLCBuLCBlbGVtZW50czsKKyAgICBpbnQgY29udGFpbmVyczsKICAgICBpbnQgaXNfdW5wYWNraW5nID0gMDsKICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuRGljdC52YWx1ZXMpOwogICAgIGNvbnRhaW5lcnMgPSAwOwpAQCAtMzA4OSw3ICszMzIzLDggQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIGlzX3VucGFja2luZyA9IChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkgPT0gTlVMTDsKICAgICAgICAgaWYgKGVsZW1lbnRzID09IDB4RkZGRiB8fCAoZWxlbWVudHMgJiYgaXNfdW5wYWNraW5nKSkgewotICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgICAgIGlmICghY29tcGlsZXJfc3ViZGljdChjLCBlLCBpIC0gZWxlbWVudHMsIGkpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgY29udGFpbmVycysrOwogICAgICAgICAgICAgZWxlbWVudHMgPSAwOwogICAgICAgICB9CkBAIC0zMDk4LDEzICszMzMzLDEyIEBACiAgICAgICAgICAgICBjb250YWluZXJzKys7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CiAgICAgICAgICAgICBlbGVtZW50cysrOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChlbGVtZW50cyB8fCBjb250YWluZXJzID09IDApIHsKLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgaWYgKCFjb21waWxlcl9zdWJkaWN0KGMsIGUsIG4gLSBlbGVtZW50cywgbikpCisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY29udGFpbmVycysrOwogICAgIH0KICAgICAvKiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGRpY3QsIHRoZXkgbmVlZCB0byBiZSBtZXJnZWQgaW50byBhIG5ldwpAQCAtMzE3MywyOCArMzQwNywxMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmtleXdvcmRzKTsKIH0KIAorc3RhdGljIGludAorY29tcGlsZXJfam9pbmVkX3N0cihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICBWSVNJVF9TRVEoYywgZXhwciwgZS0+di5Kb2luZWRTdHIudmFsdWVzKTsKKyAgICBBRERPUF9JKGMsIEJVSUxEX1NUUklORywgYXNkbF9zZXFfTEVOKGUtPnYuSm9pbmVkU3RyLnZhbHVlcykpOworICAgIHJldHVybiAxOworfQorCisvKiBVc2VkIHRvIGltcGxlbWVudCBmLXN0cmluZ3MuIEZvcm1hdCBhIHNpbmdsZSB2YWx1ZS4gKi8KK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2Zvcm1hdHRlZF92YWx1ZShzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICAvKiBPdXIgb3BhcmcgZW5jb2RlcyAyIHBpZWNlcyBvZiBpbmZvcm1hdGlvbjogdGhlIGNvbnZlcnNpb24KKyAgICAgICBjaGFyYWN0ZXIsIGFuZCB3aGV0aGVyIG9yIG5vdCBhIGZvcm1hdF9zcGVjIHdhcyBwcm92aWRlZC4KKworICAgICAgIENvbnZlcnQgdGhlIGNvbnZlcnNpb24gY2hhciB0byAyIGJpdHM6CisgICAgICAgTm9uZTogMDAwICAweDAgIEZWQ19OT05FCisgICAgICAgIXMgIDogMDAxICAweDEgIEZWQ19TVFIKKyAgICAgICAhciAgOiAwMTAgIDB4MiAgRlZDX1JFUFIKKyAgICAgICAhYSAgOiAwMTEgIDB4MyAgRlZDX0FTQ0lJCisKKyAgICAgICBuZXh0IGJpdCBpcyB3aGV0aGVyIG9yIG5vdCB3ZSBoYXZlIGEgZm9ybWF0IHNwZWM6CisgICAgICAgeWVzIDogMTAwICAweDQKKyAgICAgICBubyAgOiAwMDAgIDB4MAorICAgICovCisKKyAgICBpbnQgb3Bhcmc7CisKKyAgICAvKiBFdmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiB0byBiZSBmb3JtYXR0ZWQuICovCisgICAgVklTSVQoYywgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSk7CisKKyAgICBzd2l0Y2ggKGUtPnYuRm9ybWF0dGVkVmFsdWUuY29udmVyc2lvbikgeworICAgIGNhc2UgJ3MnOiBvcGFyZyA9IEZWQ19TVFI7ICAgYnJlYWs7CisgICAgY2FzZSAncic6IG9wYXJnID0gRlZDX1JFUFI7ICBicmVhazsKKyAgICBjYXNlICdhJzogb3BhcmcgPSBGVkNfQVNDSUk7IGJyZWFrOworICAgIGNhc2UgLTE6ICBvcGFyZyA9IEZWQ19OT05FOyAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjb252ZXJzaW9uIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpIHsKKyAgICAgICAgLyogRXZhbHVhdGUgdGhlIGZvcm1hdCBzcGVjLCBhbmQgdXBkYXRlIG91ciBvcGNvZGUgYXJnLiAqLworICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKTsKKyAgICAgICAgb3BhcmcgfD0gRlZTX0hBVkVfU1BFQzsKKyAgICB9CisKKyAgICAvKiBBbmQgcHVzaCBvdXIgb3Bjb2RlIGFuZCBvcGFyZyAqLworICAgIEFERE9QX0koYywgRk9STUFUX1ZBTFVFLCBvcGFyZyk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX3N1Ymt3YXJncyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFzZGxfc2VxICprZXl3b3JkcywgUHlfc3NpemVfdCBiZWdpbiwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlfc3NpemVfdCBpLCBuID0gZW5kIC0gYmVnaW47CisgICAga2V5d29yZF90eSBrdzsKKyAgICBQeU9iamVjdCAqa2V5cywgKmtleTsKKyAgICBhc3NlcnQobiA+IDApOworICAgIGlmIChuID4gMSkgeworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICB9CisgICAgICAgIGtleXMgPSBQeVR1cGxlX05ldyhuKTsKKyAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gKChrZXl3b3JkX3R5KSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpKS0+YXJnOworICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleXMsIGkgLSBiZWdpbiwga2V5KTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGtleXMsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgbik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBhIGZvciBsb29wIG9ubHkgZXhlY3V0ZXMgb25jZSAqLworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGt3LT5hcmcsIGNvbnN0cyk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICB9CisgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBuKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIC8qIHNoYXJlZCBjb2RlIGJldHdlZW4gY29tcGlsZXJfY2FsbCBhbmQgY29tcGlsZXJfY2xhc3MgKi8KIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywKLSAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbiwgLyogQXJncyBhbHJlYWR5IHB1c2hlZCAqLworICAgICAgICAgICAgICAgICAgICAgaW50IG4sIC8qIEFyZ3MgYWxyZWFkeSBwdXNoZWQgKi8KICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzKQogewotICAgIGludCBjb2RlID0gMDsKLSAgICBQeV9zc2l6ZV90IG5lbHRzLCBpLCBuc2Vlbiwgbmt3OworICAgIFB5X3NzaXplX3QgaSwgbnNlZW4sIG5lbHRzLCBua3dlbHRzOworICAgIGludCBtdXN0ZGljdHVucGFjayA9IDA7CiAKICAgICAvKiB0aGUgbnVtYmVyIG9mIHR1cGxlcyBhbmQgZGljdGlvbmFyaWVzIG9uIHRoZSBzdGFjayAqLwogICAgIFB5X3NzaXplX3QgbnN1YmFyZ3MgPSAwLCBuc3Via3dhcmdzID0gMDsKIAotICAgIG5rdyA9IDA7Ci0gICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgKi8KICAgICBuZWx0cyA9IGFzZGxfc2VxX0xFTihhcmdzKTsKKyAgICBua3dlbHRzID0gYXNkbF9zZXFfTEVOKGtleXdvcmRzKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBua3dlbHRzOyBpKyspIHsKKyAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgIGlmIChrdy0+YXJnID09IE5VTEwpIHsKKyAgICAgICAgICAgIG11c3RkaWN0dW5wYWNrID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgbnNlZW4gPSBuOyAgLyogdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbmVsdHM7IGkrKykgewogICAgICAgICBleHByX3R5IGVsdCA9IGFzZGxfc2VxX0dFVChhcmdzLCBpKTsKICAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKICAgICAgICAgICAgIC8qIEEgc3Rhci1hcmcuIElmIHdlJ3ZlIHNlZW4gcG9zaXRpb25hbCBhcmd1bWVudHMsCi0gICAgICAgICAgICAgICBwYWNrIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvIGEKLSAgICAgICAgICAgICAgIHR1cGxlLiAqLworICAgICAgICAgICAgICAgcGFjayB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBhIHR1cGxlLiAqLwogICAgICAgICAgICAgaWYgKG5zZWVuKSB7CiAgICAgICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOwogICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKQEAgLTMyMDMsOTIgKzM1MzMsNzggQEAKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKICAgICAgICAgICAgIG5zdWJhcmdzKys7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnN1YmFyZ3MpIHsKLSAgICAgICAgICAgIC8qIFdlJ3ZlIHNlZW4gc3Rhci1hcmdzIGFscmVhZHksIHNvIHdlCi0gICAgICAgICAgICAgICBjb3VudCB0b3dhcmRzIGl0ZW1zLXRvLXBhY2staW50by10dXBsZS4gKi8KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOwogICAgICAgICAgICAgbnNlZW4rKzsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8qIFBvc2l0aW9uYWwgYXJndW1lbnRzIGJlZm9yZSBzdGFyLWFyZ3VtZW50cwotICAgICAgICAgICAgICAgYXJlIGxlZnQgb24gdGhlIHN0YWNrLiAqLwotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKLSAgICAgICAgICAgIG4rKzsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobnNlZW4pIHsKLSAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcgcG9zaXRpb25hbCBhcmd1bWVudHMuICovCi0gICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG5zZWVuKTsKLSAgICAgICAgbnN1YmFyZ3MrKzsKLSAgICB9Ci0gICAgaWYgKG5zdWJhcmdzKSB7Ci0gICAgICAgIGNvZGUgfD0gMTsKLSAgICAgICAgaWYgKG5zdWJhcmdzID4gMSkgewotICAgICAgICAgICAgLyogSWYgd2UgZW5kZWQgdXAgd2l0aCBtb3JlIHRoYW4gb25lIHN0YXJhcmcsIHdlIG5lZWQKLSAgICAgICAgICAgICAgIHRvIGNvbmNhdGVuYXRlIHRoZW0gaW50byBhIHNpbmdsZSBzZXF1ZW5jZS4gKi8KLSAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTElTVF9VTlBBQ0ssIG5zdWJhcmdzKTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIC8qIFNhbWUgZGFuY2UgYWdhaW4gZm9yIGtleXdvcmQgYXJndW1lbnRzICovCi0gICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBrZXl3b3JkIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nICovCi0gICAgbmVsdHMgPSBhc2RsX3NlcV9MRU4oa2V5d29yZHMpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7Ci0gICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOwotICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nLiAqLwotICAgICAgICAgICAgaWYgKG5zZWVuKSB7Ci0gICAgICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG5zZWVuKTsKLSAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgaWYgKG5zdWJhcmdzIHx8IG11c3RkaWN0dW5wYWNrKSB7CisgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcgcG9zaXRpb25hbCBhcmd1bWVudHMuICovCisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7CisgICAgICAgICAgICBuc3ViYXJncysrOworICAgICAgICB9CisgICAgICAgIGlmIChuc3ViYXJncyA+IDEpIHsKKyAgICAgICAgICAgIC8qIElmIHdlIGVuZGVkIHVwIHdpdGggbW9yZSB0aGFuIG9uZSBzdGFyYXJnLCB3ZSBuZWVkCisgICAgICAgICAgICAgICB0byBjb25jYXRlbmF0ZSB0aGVtIGludG8gYSBzaW5nbGUgc2VxdWVuY2UuICovCisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFX1VOUEFDSywgbnN1YmFyZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5zdWJhcmdzID09IDApIHsKKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIDApOworICAgICAgICB9CisgICAgICAgIG5zZWVuID0gMDsgIC8qIHRoZSBudW1iZXIgb2Yga2V5d29yZCBhcmd1bWVudHMgb24gdGhlIHN0YWNrIGZvbGxvd2luZyAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmt3ZWx0czsgaSsrKSB7CisgICAgICAgICAgICBrZXl3b3JkX3R5IGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgICAgIGlmIChrdy0+YXJnID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nLiAqLworICAgICAgICAgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBpbGVyX3N1Ymt3YXJncyhjLCBrZXl3b3JkcywgaSAtIG5zZWVuLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBuc3Via3dhcmdzKys7CisgICAgICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKICAgICAgICAgICAgICAgICBuc3Via3dhcmdzKys7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbnNlZW4rKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIGtleXdvcmQgYXJndW1lbnRzLiAqLworICAgICAgICAgICAgaWYgKCFjb21waWxlcl9zdWJrd2FyZ3MoYywga2V5d29yZHMsIG5rd2VsdHMgLSBuc2Vlbiwgbmt3ZWx0cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBuc3Via3dhcmdzKys7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnN1Ymt3YXJncykgewotICAgICAgICAgICAgLyogQSBrZXl3b3JkIGFyZ3VtZW50IGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBkaWN0LiAqLwotICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBrdy0+YXJnLCBjb25zdHMpOwotICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKLSAgICAgICAgICAgIG5zZWVuKys7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBrZXl3b3JkIGFyZ3VtZW50ICovCi0gICAgICAgICAgICBWSVNJVChjLCBrZXl3b3JkLCBrdykKLSAgICAgICAgICAgIG5rdysrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChuc2VlbikgewotICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBrZXl3b3JkIGFyZ3VtZW50cy4gKi8KLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG5zZWVuKTsKLSAgICAgICAgbnN1Ymt3YXJncysrOwotICAgIH0KLSAgICBpZiAobnN1Ymt3YXJncykgewotICAgICAgICBjb2RlIHw9IDI7CiAgICAgICAgIGlmIChuc3Via3dhcmdzID4gMSkgewogICAgICAgICAgICAgLyogUGFjayBpdCBhbGwgdXAgKi8KLSAgICAgICAgICAgIGludCBmdW5jdGlvbl9wb3MgPSBuICsgKGNvZGUgJiAxKSArIDIgKiBua3cgKyAxOwotICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgbnN1Ymt3YXJncyB8IChmdW5jdGlvbl9wb3MgPDwgOCkpOworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgbnN1Ymt3YXJncyk7CiAgICAgICAgIH0KKyAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX0VYLCBuc3Via3dhcmdzID4gMCk7CisgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBhc3NlcnQobiA8IDE8PDgpOwotICAgIGFzc2VydChua3cgPCAxPDwyNCk7Ci0gICAgbiB8PSBua3cgPDwgODsKLQotICAgIHN3aXRjaCAoY29kZSkgewotICAgIGNhc2UgMDoKLSAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCBuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fVkFSLCBuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fS1csIG4pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDM6Ci0gICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9WQVJfS1csIG4pOwotICAgICAgICBicmVhazsKKyAgICBlbHNlIGlmIChua3dlbHRzKSB7CisgICAgICAgIFB5T2JqZWN0ICpuYW1lczsKKyAgICAgICAgVklTSVRfU0VRKGMsIGtleXdvcmQsIGtleXdvcmRzKTsKKyAgICAgICAgbmFtZXMgPSBQeVR1cGxlX05ldyhua3dlbHRzKTsKKyAgICAgICAgaWYgKG5hbWVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBua3dlbHRzOyBpKyspIHsKKyAgICAgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICAgICAgUHlfSU5DUkVGKGt3LT5hcmcpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuYW1lcywgaSwga3ctPmFyZyk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBuYW1lcywgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX0tXLCBuICsgbmVsdHMgKyBua3dlbHRzKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIHJldHVybiAxOworICAgIGVsc2UgeworICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT04sIG4gKyBuZWx0cyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KIH0KIAogCkBAIC0zMzA3LDExICszNjIzLDI4IEBACiAgICAgLSBpdGVyYXRlIG92ZXIgdGhlIGdlbmVyYXRvciBzZXF1ZW5jZSBpbnN0ZWFkIG9mIHVzaW5nIHJlY3Vyc2lvbgogKi8KIAorCiBzdGF0aWMgaW50CiBjb21waWxlcl9jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihzdHJ1Y3QgY29tcGlsZXIgKmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpCiB7CisgICAgY29tcHJlaGVuc2lvbl90eSBnZW47CisgICAgZ2VuID0gKGNvbXByZWhlbnNpb25fdHkpYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIGdlbl9pbmRleCk7CisgICAgaWYgKGdlbi0+aXNfYXN5bmMpIHsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2FzeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgYywgZ2VuZXJhdG9ycywgZ2VuX2luZGV4LCBlbHQsIHZhbCwgdHlwZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3N5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICBjLCBnZW5lcmF0b3JzLCBnZW5faW5kZXgsIGVsdCwgdmFsLCB0eXBlKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX3N5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3Ioc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSkKK3sKICAgICAvKiBnZW5lcmF0ZSBjb2RlIGZvciB0aGUgaXRlcmF0b3IsIHRoZW4gZWFjaCBvZiB0aGUgaWZzLAogICAgICAgIGFuZCB0aGVuIHdyaXRlIHRvIHRoZSBlbGVtZW50ICovCiAKQEAgLTMzOTgsMjAgKzM3MzEsMTY3IEBACiB9CiAKIHN0YXRpYyBpbnQKK2NvbXBpbGVyX2FzeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpCit7CisgICAgX1B5X0lERU5USUZJRVIoU3RvcEFzeW5jSXRlcmF0aW9uKTsKKworICAgIGNvbXByZWhlbnNpb25fdHkgZ2VuOworICAgIGJhc2ljYmxvY2sgKmFuY2hvciwgKnNraXAsICppZl9jbGVhbnVwLCAqdHJ5LAorICAgICAgICAgICAgICAgKmFmdGVyX3RyeSwgKmV4Y2VwdCwgKnRyeV9jbGVhbnVwOworICAgIFB5X3NzaXplX3QgaSwgbjsKKworICAgIFB5T2JqZWN0ICpzdG9wX2FpdGVyX2Vycm9yID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICBpZiAoc3RvcF9haXRlcl9lcnJvciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHRyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl90cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgdHJ5X2NsZWFudXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgZXhjZXB0ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIHNraXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgaWZfY2xlYW51cCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhbmNob3IgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisKKyAgICBpZiAoc2tpcCA9PSBOVUxMIHx8IGlmX2NsZWFudXAgPT0gTlVMTCB8fCBhbmNob3IgPT0gTlVMTCB8fAorICAgICAgICAgICAgdHJ5ID09IE5VTEwgfHwgYWZ0ZXJfdHJ5ID09IE5VTEwgfHwKKyAgICAgICAgICAgIGV4Y2VwdCA9PSBOVUxMIHx8IGFmdGVyX3RyeSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGdlbiA9IChjb21wcmVoZW5zaW9uX3R5KWFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCBnZW5faW5kZXgpOworCisgICAgaWYgKGdlbl9pbmRleCA9PSAwKSB7CisgICAgICAgIC8qIFJlY2VpdmUgb3V0ZXJtb3N0IGl0ZXIgYXMgYW4gaW1wbGljaXQgYXJndW1lbnQgKi8KKyAgICAgICAgYy0+dS0+dV9hcmdjb3VudCA9IDE7CisgICAgICAgIEFERE9QX0koYywgTE9BRF9GQVNULCAwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFN1Yi1pdGVyIC0gY2FsY3VsYXRlIG9uIHRoZSBmbHkgKi8KKyAgICAgICAgVklTSVQoYywgZXhwciwgZ2VuLT5pdGVyKTsKKyAgICAgICAgQURET1AoYywgR0VUX0FJVEVSKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICB9CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCB0cnkpOworCisKKyAgICBBRERPUF9KUkVMKGMsIFNFVFVQX0VYQ0VQVCwgZXhjZXB0KTsKKyAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEVYQ0VQVCwgdHJ5KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBRERPUChjLCBHRVRfQU5FWFQpOworICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICBWSVNJVChjLCBleHByLCBnZW4tPnRhcmdldCk7CisgICAgQURET1AoYywgUE9QX0JMT0NLKTsKKyAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIEVYQ0VQVCwgdHJ5KTsKKyAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgYWZ0ZXJfdHJ5KTsKKworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZXhjZXB0KTsKKyAgICBBRERPUChjLCBEVVBfVE9QKTsKKyAgICBBRERPUF9PKGMsIExPQURfR0xPQkFMLCBzdG9wX2FpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfSShjLCBDT01QQVJFX09QLCBQeUNtcF9FWENfTUFUQ0gpOworICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIHRyeV9jbGVhbnVwKTsKKworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9FWENFUFQpOyAvKiBmb3IgU0VUVVBfRVhDRVBUICovCisgICAgQURET1BfSkFCUyhjLCBKVU1QX0FCU09MVVRFLCBhbmNob3IpOworCisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCB0cnlfY2xlYW51cCk7CisgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYWZ0ZXJfdHJ5KTsKKworICAgIG4gPSBhc2RsX3NlcV9MRU4oZ2VuLT5pZnMpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBlID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGdlbi0+aWZzLCBpKTsKKyAgICAgICAgVklTSVQoYywgZXhwciwgZSk7CisgICAgICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIGlmX2NsZWFudXApOworICAgICAgICBORVhUX0JMT0NLKGMpOworICAgIH0KKworICAgIGlmICgrK2dlbl9pbmRleCA8IGFzZGxfc2VxX0xFTihnZW5lcmF0b3JzKSkKKyAgICAgICAgaWYgKCFjb21waWxlcl9jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcnMsIGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQsIHZhbCwgdHlwZSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogb25seSBhcHBlbmQgYWZ0ZXIgdGhlIGxhc3QgZm9yIGdlbmVyYXRvciAqLworICAgIGlmIChnZW5faW5kZXggPj0gYXNkbF9zZXFfTEVOKGdlbmVyYXRvcnMpKSB7CisgICAgICAgIC8qIGNvbXByZWhlbnNpb24gc3BlY2lmaWMgY29kZSAqLworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBDT01QX0dFTkVYUDoKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBBRERPUChjLCBZSUVMRF9WQUxVRSk7CisgICAgICAgICAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENPTVBfTElTVENPTVA6CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1BfSShjLCBMSVNUX0FQUEVORCwgZ2VuX2luZGV4ICsgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDT01QX1NFVENPTVA6CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1BfSShjLCBTRVRfQURELCBnZW5faW5kZXggKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENPTVBfRElDVENPTVA6CisgICAgICAgICAgICAvKiBXaXRoICdkW2tdID0gdicsIHYgaXMgZXZhbHVhdGVkIGJlZm9yZSBrLCBzbyB3ZSBkbworICAgICAgICAgICAgICAgdGhlIHNhbWUuICovCisgICAgICAgICAgICBWSVNJVChjLCBleHByLCB2YWwpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIEFERE9QX0koYywgTUFQX0FERCwgZ2VuX2luZGV4ICsgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgc2tpcCk7CisgICAgfQorICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGlmX2NsZWFudXApOworICAgIEFERE9QX0pBQlMoYywgSlVNUF9BQlNPTFVURSwgdHJ5KTsKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhbmNob3IpOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX2NvbXByZWhlbnNpb24oc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUsIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBleHByX3R5IGVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWwpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbyA9IE5VTEw7Ci0gICAgZXhwcl90eSBvdXRlcm1vc3RfaXRlcjsKKyAgICBjb21wcmVoZW5zaW9uX3R5IG91dGVybW9zdDsKICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBOVUxMOworICAgIGludCBpc19hc3luY19mdW5jdGlvbiA9IGMtPnUtPnVfc3RlLT5zdGVfY29yb3V0aW5lOworICAgIGludCBpc19hc3luY19nZW5lcmF0b3IgPSAwOwogCi0gICAgb3V0ZXJtb3N0X2l0ZXIgPSAoKGNvbXByZWhlbnNpb25fdHkpCi0gICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIDApKS0+aXRlcjsKKyAgICBvdXRlcm1vc3QgPSAoY29tcHJlaGVuc2lvbl90eSkgYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIDApOwogCiAgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQorICAgIHsKICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpc19hc3luY19nZW5lcmF0b3IgPSBjLT51LT51X3N0ZS0+c3RlX2Nvcm91dGluZTsKKworICAgIGlmIChpc19hc3luY19nZW5lcmF0b3IgJiYgIWlzX2FzeW5jX2Z1bmN0aW9uKSB7CisgICAgICAgIGlmIChlLT5saW5lbm8gPiBjLT51LT51X2xpbmVubykgeworICAgICAgICAgICAgYy0+dS0+dV9saW5lbm8gPSBlLT5saW5lbm87CisgICAgICAgICAgICBjLT51LT51X2xpbmVub19zZXQgPSAwOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVyX2Vycm9yKGMsICJhc3luY2hyb25vdXMgY29tcHJlaGVuc2lvbiBvdXRzaWRlIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiIpOworICAgICAgICBnb3RvIGVycm9yX2luX3Njb3BlOworICAgIH0KIAogICAgIGlmICh0eXBlICE9IENPTVBfR0VORVhQKSB7CiAgICAgICAgIGludCBvcDsKQEAgLTM0NTQsOSArMzkzNCwyNCBAQAogICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAotICAgIFZJU0lUKGMsIGV4cHIsIG91dGVybW9zdF9pdGVyKTsKLSAgICBBRERPUChjLCBHRVRfSVRFUik7CisgICAgVklTSVQoYywgZXhwciwgb3V0ZXJtb3N0LT5pdGVyKTsKKworICAgIGlmIChvdXRlcm1vc3QtPmlzX2FzeW5jKSB7CisgICAgICAgIEFERE9QKGMsIEdFVF9BSVRFUik7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQURET1AoYywgR0VUX0lURVIpOworICAgIH0KKwogICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgMSk7CisKKyAgICBpZiAoaXNfYXN5bmNfZ2VuZXJhdG9yICYmIHR5cGUgIT0gQ09NUF9HRU5FWFApIHsKKyAgICAgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgfQorCiAgICAgcmV0dXJuIDE7CiBlcnJvcl9pbl9zY29wZToKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwpAQCAtMzUzMSw3ICs0MDI2LDYgQEAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX3Zpc2l0X2tleXdvcmQoc3RydWN0IGNvbXBpbGVyICpjLCBrZXl3b3JkX3R5IGspCiB7Ci0gICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBrLT5hcmcsIGNvbnN0cyk7CiAgICAgVklTSVQoYywgZXhwciwgay0+dmFsdWUpOwogICAgIHJldHVybiAxOwogfQpAQCAtMzU0OSw2ICs0MDQzLDggQEAKICAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKICAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CiAgICAgICAgIHJldHVybiAxOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0lzVHJ1ZShlLT52LkNvbnN0YW50LnZhbHVlKTsKICAgICBjYXNlIE51bV9raW5kOgogICAgICAgICByZXR1cm4gUHlPYmplY3RfSXNUcnVlKGUtPnYuTnVtLm4pOwogICAgIGNhc2UgU3RyX2tpbmQ6CkBAIC0zNTkyLDkgKzQwODgsOSBAQAogICAgICAgIEJMT0NLCiAgICBmaW5hbGx5OgogICAgICAgIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkOgotICAgICAgIGV4YyA9IGNvcHkgb2YgKGV4Y2VwdGlvbiwgaW5zdGFuY2UsIHRyYWNlYmFjaykKKyAgICAgICAgICAgZXhjID0gY29weSBvZiAoZXhjZXB0aW9uLCBpbnN0YW5jZSwgdHJhY2ViYWNrKQogICAgICAgIGVsc2U6Ci0gICAgICAgZXhjID0gKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgICAgIGV4YyA9IChOb25lLCBOb25lLCBOb25lKQogICAgICAgIGlmIG5vdCAoYXdhaXQgZXhpdCgqZXhjKSk6CiAgICAgICAgICAgIHJhaXNlCiAgKi8KQEAgLTM3OTQsOCArNDI5MCw2IEBACiAgICAgY2FzZSBZaWVsZF9raW5kOgogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbiIpOwotICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOwogICAgICAgICBpZiAoZS0+di5ZaWVsZC52YWx1ZSkgewogICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5ZaWVsZC52YWx1ZSk7CiAgICAgICAgIH0KQEAgLTM4MjAsMTEgKzQzMTQsOCBAQAogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidhd2FpdCcgb3V0c2lkZSBmdW5jdGlvbiIpOwogCi0gICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTikKLSAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcigKLSAgICAgICAgICAgICAgICBjLCAiJ2F3YWl0JyBleHByZXNzaW9ucyBpbiBjb21wcmVoZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpOwotCi0gICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04pCisgICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04gJiYKKyAgICAgICAgICAgICAgICBjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTikKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ2F3YWl0JyBvdXRzaWRlIGFzeW5jIGZ1bmN0aW9uIik7CiAKICAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5Bd2FpdC52YWx1ZSk7CkBAIC0zODM2LDEyICs0MzI3LDE5IEBACiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb21wYXJlKGMsIGUpOwogICAgIGNhc2UgQ2FsbF9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfY2FsbChjLCBlKTsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5Db25zdGFudC52YWx1ZSwgY29uc3RzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52Lk51bS5uLCBjb25zdHMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cl9raW5kOgogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGUtPnYuU3RyLnMsIGNvbnN0cyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9qb2luZWRfc3RyKGMsIGUpOworICAgIGNhc2UgRm9ybWF0dGVkVmFsdWVfa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Zvcm1hdHRlZF92YWx1ZShjLCBlKTsKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5CeXRlcy5zLCBjb25zdHMpOwogICAgICAgICBicmVhazsKQEAgLTM5NzYsNiArNDQ3NCwxNDQgQEAKIH0KIAogc3RhdGljIGludAorY2hlY2tfYW5uX2V4cHIoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgVklTSVQoYywgZXhwciwgZSk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX2Fubm90YXRpb24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCit7CisgICAgLyogQW5ub3RhdGlvbnMgYXJlIG9ubHkgZXZhbHVhdGVkIGluIGEgbW9kdWxlIG9yIGNsYXNzLiAqLworICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFIHx8CisgICAgICAgIGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DTEFTUykgeworICAgICAgICByZXR1cm4gY2hlY2tfYW5uX2V4cHIoYywgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitjaGVja19hbm5fc2xpY2Uoc3RydWN0IGNvbXBpbGVyICpjLCBzbGljZV90eSBzbCkKK3sKKyAgICBzd2l0Y2goc2wtPmtpbmQpIHsKKyAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgICAgIHJldHVybiBjaGVja19hbm5fZXhwcihjLCBzbC0+di5JbmRleC52YWx1ZSk7CisgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICBpZiAoc2wtPnYuU2xpY2UubG93ZXIgJiYgIWNoZWNrX2Fubl9leHByKGMsIHNsLT52LlNsaWNlLmxvd2VyKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNsLT52LlNsaWNlLnVwcGVyICYmICFjaGVja19hbm5fZXhwcihjLCBzbC0+di5TbGljZS51cHBlcikpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChzbC0+di5TbGljZS5zdGVwICYmICFjaGVja19hbm5fZXhwcihjLCBzbC0+di5TbGljZS5zdGVwKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgc2xpY2Uga2luZCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX2Fubl9zdWJzY3Ioc3RydWN0IGNvbXBpbGVyICpjLCBzbGljZV90eSBzbCkKK3sKKyAgICAvKiBXZSBjaGVjayB0aGF0IGV2ZXJ5dGhpbmcgaW4gYSBzdWJzY3JpcHQgaXMgZGVmaW5lZCBhdCBydW50aW1lLiAqLworICAgIFB5X3NzaXplX3QgaSwgbjsKKworICAgIHN3aXRjaCAoc2wtPmtpbmQpIHsKKyAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICBpZiAoIWNoZWNrX2Fubl9zbGljZShjLCBzbCkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0U2xpY2Vfa2luZDoKKyAgICAgICAgbiA9IGFzZGxfc2VxX0xFTihzbC0+di5FeHRTbGljZS5kaW1zKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgc2xpY2VfdHkgc3Vic2wgPSAoc2xpY2VfdHkpYXNkbF9zZXFfR0VUKHNsLT52LkV4dFNsaWNlLmRpbXMsIGkpOworICAgICAgICAgICAgc3dpdGNoIChzdWJzbC0+a2luZCkgeworICAgICAgICAgICAgY2FzZSBJbmRleF9raW5kOgorICAgICAgICAgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICAgICAgICAgIGlmICghY2hlY2tfYW5uX3NsaWNlKGMsIHN1YnNsKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEV4dFNsaWNlX2tpbmQ6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dGVuZGVkIHNsaWNlIGludmFsaWQgaW4gbmVzdGVkIHNsaWNlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgc3Vic2NyaXB0IGtpbmQgJWQiLCBzbC0+a2luZCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfYW5uYXNzaWduKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQoreworICAgIGV4cHJfdHkgdGFyZyA9IHMtPnYuQW5uQXNzaWduLnRhcmdldDsKKyAgICBQeU9iamVjdCogbWFuZ2xlZDsKKworICAgIGFzc2VydChzLT5raW5kID09IEFubkFzc2lnbl9raW5kKTsKKworICAgIC8qIFdlIHBlcmZvcm0gdGhlIGFjdHVhbCBhc3NpZ25tZW50IGZpcnN0LiAqLworICAgIGlmIChzLT52LkFubkFzc2lnbi52YWx1ZSkgeworICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkFubkFzc2lnbi52YWx1ZSk7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIHRhcmcpOworICAgIH0KKyAgICBzd2l0Y2ggKHRhcmctPmtpbmQpIHsKKyAgICBjYXNlIE5hbWVfa2luZDoKKyAgICAgICAgLyogSWYgd2UgaGF2ZSBhIHNpbXBsZSBuYW1lIGluIGEgbW9kdWxlIG9yIGNsYXNzLCBzdG9yZSBhbm5vdGF0aW9uLiAqLworICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24uc2ltcGxlICYmCisgICAgICAgICAgICAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX01PRFVMRSB8fAorICAgICAgICAgICAgIGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DTEFTUykpIHsKKyAgICAgICAgICAgIG1hbmdsZWQgPSBfUHlfTWFuZ2xlKGMtPnUtPnVfcHJpdmF0ZSwgdGFyZy0+di5OYW1lLmlkKTsKKyAgICAgICAgICAgIGlmICghbWFuZ2xlZCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgICAgICAgICAvKiBBRERPUF9OIGRlY3JlZnMgaXRzIGFyZ3VtZW50ICovCisgICAgICAgICAgICBBRERPUF9OKGMsIFNUT1JFX0FOTk9UQVRJT04sIG1hbmdsZWQsIG5hbWVzKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgorICAgICAgICBpZiAoIXMtPnYuQW5uQXNzaWduLnZhbHVlICYmCisgICAgICAgICAgICAhY2hlY2tfYW5uX2V4cHIoYywgdGFyZy0+di5BdHRyaWJ1dGUudmFsdWUpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgorICAgICAgICBpZiAoIXMtPnYuQW5uQXNzaWduLnZhbHVlICYmCisgICAgICAgICAgICAoIWNoZWNrX2Fubl9leHByKGMsIHRhcmctPnYuU3Vic2NyaXB0LnZhbHVlKSB8fAorICAgICAgICAgICAgICFjaGVja19hbm5fc3Vic2NyKGMsIHRhcmctPnYuU3Vic2NyaXB0LnNsaWNlKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBub2RlIHR5cGUgKCVkKSBmb3IgYW5ub3RhdGVkIGFzc2lnbm1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgdGFyZy0+a2luZCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgLyogQW5ub3RhdGlvbiBpcyBldmFsdWF0ZWQgbGFzdC4gKi8KKyAgICBpZiAoIXMtPnYuQW5uQXNzaWduLnNpbXBsZSAmJiAhY2hlY2tfYW5ub3RhdGlvbihjLCBzKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX3B1c2hfZmJsb2NrKHN0cnVjdCBjb21waWxlciAqYywgZW51bSBmYmxvY2t0eXBlIHQsIGJhc2ljYmxvY2sgKmIpCiB7CiAgICAgc3RydWN0IGZibG9ja2luZm8gKmY7CkBAIC00MjczLDcgKzQ5MDksNyBAQAogICAgIGEtPmFfbG5vdGFiID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBERUZBVUxUX0xOT1RBQl9TSVpFKTsKICAgICBpZiAoIWEtPmFfbG5vdGFiKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoKHNpemVfdCluYmxvY2tzID4gUFlfU0laRV9NQVggLyBzaXplb2YoYmFzaWNibG9jayAqKSkgeworICAgIGlmICgoc2l6ZV90KW5ibG9ja3MgPiBTSVpFX01BWCAvIHNpemVvZihiYXNpY2Jsb2NrICopKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQyOTUsMTggKzQ5MzEsNiBAQAogICAgICAgICBQeU9iamVjdF9GcmVlKGEtPmFfcG9zdG9yZGVyKTsKIH0KIAotLyogUmV0dXJuIHRoZSBzaXplIG9mIGEgYmFzaWMgYmxvY2sgaW4gYnl0ZXMuICovCi0KLXN0YXRpYyBpbnQKLWluc3Ryc2l6ZShzdHJ1Y3QgaW5zdHIgKmluc3RyKQotewotICAgIGlmICghaW5zdHItPmlfaGFzYXJnKQotICAgICAgICByZXR1cm4gMTsgICAgICAgICAgICAgICAvKiAxIGJ5dGUgZm9yIHRoZSBvcGNvZGUqLwotICAgIGlmIChpbnN0ci0+aV9vcGFyZyA+IDB4ZmZmZikKLSAgICAgICAgcmV0dXJuIDY7ICAgICAgICAgICAgICAgLyogMSAob3Bjb2RlKSArIDEgKEVYVEVOREVEX0FSRyBvcGNvZGUpICsgMiAob3BhcmcpICsgMihvcGFyZyBleHRlbmRlZCkgKi8KLSAgICByZXR1cm4gMzsgICAgICAgICAgICAgICAgICAgLyogMSAob3Bjb2RlKSArIDIgKG9wYXJnKSAqLwotfQotCiBzdGF0aWMgaW50CiBibG9ja3NpemUoYmFzaWNibG9jayAqYikKIHsKQEAgLTQzMTQsNyArNDkzOCw3IEBACiAgICAgaW50IHNpemUgPSAwOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGItPmJfaXVzZWQ7IGkrKykKLSAgICAgICAgc2l6ZSArPSBpbnN0cnNpemUoJmItPmJfaW5zdHJbaV0pOworICAgICAgICBzaXplICs9IGluc3Ryc2l6ZShiLT5iX2luc3RyW2ldLmlfb3BhcmcpOwogICAgIHJldHVybiBzaXplOwogfQogCkBAIC00MzI5LDExICs0OTUzLDEwIEBACiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgdW5zaWduZWQgY2hhciAqbG5vdGFiOwogCi0gICAgZF9ieXRlY29kZSA9IGEtPmFfb2Zmc2V0IC0gYS0+YV9saW5lbm9fb2ZmOworICAgIGRfYnl0ZWNvZGUgPSAoYS0+YV9vZmZzZXQgLSBhLT5hX2xpbmVub19vZmYpICogc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgZF9saW5lbm8gPSBpLT5pX2xpbmVubyAtIGEtPmFfbGluZW5vOwogCiAgICAgYXNzZXJ0KGRfYnl0ZWNvZGUgPj0gMCk7Ci0gICAgYXNzZXJ0KGRfbGluZW5vID49IDApOwogCiAgICAgaWYoZF9ieXRlY29kZSA9PSAwICYmIGRfbGluZW5vID09IDApCiAgICAgICAgIHJldHVybiAxOwpAQCAtNDM2Myw5ICs0OTg2LDIxIEBACiAgICAgICAgIGRfYnl0ZWNvZGUgLT0gbmNvZGVzICogMjU1OwogICAgICAgICBhLT5hX2xub3RhYl9vZmYgKz0gbmNvZGVzICogMjsKICAgICB9Ci0gICAgYXNzZXJ0KGRfYnl0ZWNvZGUgPD0gMjU1KTsKLSAgICBpZiAoZF9saW5lbm8gPiAyNTUpIHsKLSAgICAgICAgaW50IGosIG5ieXRlcywgbmNvZGVzID0gZF9saW5lbm8gLyAyNTU7CisgICAgYXNzZXJ0KDAgPD0gZF9ieXRlY29kZSAmJiBkX2J5dGVjb2RlIDw9IDI1NSk7CisKKyAgICBpZiAoZF9saW5lbm8gPCAtMTI4IHx8IDEyNyA8IGRfbGluZW5vKSB7CisgICAgICAgIGludCBqLCBuYnl0ZXMsIG5jb2RlcywgazsKKyAgICAgICAgaWYgKGRfbGluZW5vIDwgMCkgeworICAgICAgICAgICAgayA9IC0xMjg7CisgICAgICAgICAgICAvKiB1c2UgZGl2aXNpb24gb24gcG9zaXRpdmUgbnVtYmVycyAqLworICAgICAgICAgICAgbmNvZGVzID0gKC1kX2xpbmVubykgLyAxMjg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBrID0gMTI3OworICAgICAgICAgICAgbmNvZGVzID0gZF9saW5lbm8gLyAxMjc7CisgICAgICAgIH0KKyAgICAgICAgZF9saW5lbm8gLT0gbmNvZGVzICogazsKKyAgICAgICAgYXNzZXJ0KG5jb2RlcyA+PSAxKTsKICAgICAgICAgbmJ5dGVzID0gYS0+YV9sbm90YWJfb2ZmICsgMiAqIG5jb2RlczsKICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShhLT5hX2xub3RhYik7CiAgICAgICAgIGlmIChuYnl0ZXMgPj0gbGVuKSB7CkBAIC00MzgzLDE1ICs1MDE4LDE1IEBACiAgICAgICAgIGxub3RhYiA9ICh1bnNpZ25lZCBjaGFyICopCiAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYS0+YV9sbm90YWIpICsgYS0+YV9sbm90YWJfb2ZmOwogICAgICAgICAqbG5vdGFiKysgPSBkX2J5dGVjb2RlOwotICAgICAgICAqbG5vdGFiKysgPSAyNTU7CisgICAgICAgICpsbm90YWIrKyA9IGs7CiAgICAgICAgIGRfYnl0ZWNvZGUgPSAwOwogICAgICAgICBmb3IgKGogPSAxOyBqIDwgbmNvZGVzOyBqKyspIHsKICAgICAgICAgICAgICpsbm90YWIrKyA9IDA7Ci0gICAgICAgICAgICAqbG5vdGFiKysgPSAyNTU7CisgICAgICAgICAgICAqbG5vdGFiKysgPSBrOwogICAgICAgICB9Ci0gICAgICAgIGRfbGluZW5vIC09IG5jb2RlcyAqIDI1NTsKICAgICAgICAgYS0+YV9sbm90YWJfb2ZmICs9IG5jb2RlcyAqIDI7CiAgICAgfQorICAgIGFzc2VydCgtMTI4IDw9IGRfbGluZW5vICYmIGRfbGluZW5vIDw9IDEyNyk7CiAKICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGEtPmFfbG5vdGFiKTsKICAgICBpZiAoYS0+YV9sbm90YWJfb2ZmICsgMiA+PSBsZW4pIHsKQEAgLTQ0MjMsMzggKzUwNTgsMjMgQEAKIHN0YXRpYyBpbnQKIGFzc2VtYmxlX2VtaXQoc3RydWN0IGFzc2VtYmxlciAqYSwgc3RydWN0IGluc3RyICppKQogewotICAgIGludCBzaXplLCBhcmcgPSAwLCBleHQgPSAwOworICAgIGludCBzaXplLCBhcmcgPSAwOwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShhLT5hX2J5dGVjb2RlKTsKLSAgICBjaGFyICpjb2RlOworICAgIF9QeV9DT0RFVU5JVCAqY29kZTsKIAotICAgIHNpemUgPSBpbnN0cnNpemUoaSk7Ci0gICAgaWYgKGktPmlfaGFzYXJnKSB7Ci0gICAgICAgIGFyZyA9IGktPmlfb3Bhcmc7Ci0gICAgICAgIGV4dCA9IGFyZyA+PiAxNjsKLSAgICB9CisgICAgYXJnID0gaS0+aV9vcGFyZzsKKyAgICBzaXplID0gaW5zdHJzaXplKGFyZyk7CiAgICAgaWYgKGktPmlfbGluZW5vICYmICFhc3NlbWJsZV9sbm90YWIoYSwgaSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhLT5hX29mZnNldCArIHNpemUgPj0gbGVuKSB7CisgICAgaWYgKGEtPmFfb2Zmc2V0ICsgc2l6ZSA+PSBsZW4gLyAoaW50KXNpemVvZihfUHlfQ09ERVVOSVQpKSB7CiAgICAgICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYS0+YV9ieXRlY29kZSwgbGVuICogMikgPCAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGNvZGUgPSBQeUJ5dGVzX0FTX1NUUklORyhhLT5hX2J5dGVjb2RlKSArIGEtPmFfb2Zmc2V0OworICAgIGNvZGUgPSAoX1B5X0NPREVVTklUICopUHlCeXRlc19BU19TVFJJTkcoYS0+YV9ieXRlY29kZSkgKyBhLT5hX29mZnNldDsKICAgICBhLT5hX29mZnNldCArPSBzaXplOwotICAgIGlmIChzaXplID09IDYpIHsKLSAgICAgICAgYXNzZXJ0KGktPmlfaGFzYXJnKTsKLSAgICAgICAgKmNvZGUrKyA9IChjaGFyKUVYVEVOREVEX0FSRzsKLSAgICAgICAgKmNvZGUrKyA9IGV4dCAmIDB4ZmY7Ci0gICAgICAgICpjb2RlKysgPSBleHQgPj4gODsKLSAgICAgICAgYXJnICY9IDB4ZmZmZjsKLSAgICB9Ci0gICAgKmNvZGUrKyA9IGktPmlfb3Bjb2RlOwotICAgIGlmIChpLT5pX2hhc2FyZykgewotICAgICAgICBhc3NlcnQoc2l6ZSA9PSAzIHx8IHNpemUgPT0gNik7Ci0gICAgICAgICpjb2RlKysgPSBhcmcgJiAweGZmOwotICAgICAgICAqY29kZSsrID0gYXJnID4+IDg7Ci0gICAgfQorICAgIHdyaXRlX29wX2FyZyhjb2RlLCBpLT5pX29wY29kZSwgYXJnLCBzaXplKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtNDQ2Miw3ICs1MDgyLDcgQEAKIGFzc2VtYmxlX2p1bXBfb2Zmc2V0cyhzdHJ1Y3QgYXNzZW1ibGVyICphLCBzdHJ1Y3QgY29tcGlsZXIgKmMpCiB7CiAgICAgYmFzaWNibG9jayAqYjsKLSAgICBpbnQgYnNpemUsIHRvdHNpemUsIGV4dGVuZGVkX2FyZ19jb3VudCA9IDAsIGxhc3RfZXh0ZW5kZWRfYXJnX2NvdW50OworICAgIGludCBic2l6ZSwgdG90c2l6ZSwgZXh0ZW5kZWRfYXJnX3JlY29tcGlsZTsKICAgICBpbnQgaTsKIAogICAgIC8qIENvbXB1dGUgdGhlIHNpemUgb2YgZWFjaCBibG9jayBhbmQgZml4dXAganVtcCBhcmdzLgpAQCAtNDQ3NSwyNyArNTA5NSwyNyBAQAogICAgICAgICAgICAgYi0+Yl9vZmZzZXQgPSB0b3RzaXplOwogICAgICAgICAgICAgdG90c2l6ZSArPSBic2l6ZTsKICAgICAgICAgfQotICAgICAgICBsYXN0X2V4dGVuZGVkX2FyZ19jb3VudCA9IGV4dGVuZGVkX2FyZ19jb3VudDsKLSAgICAgICAgZXh0ZW5kZWRfYXJnX2NvdW50ID0gMDsKKyAgICAgICAgZXh0ZW5kZWRfYXJnX3JlY29tcGlsZSA9IDA7CiAgICAgICAgIGZvciAoYiA9IGMtPnUtPnVfYmxvY2tzOyBiICE9IE5VTEw7IGIgPSBiLT5iX2xpc3QpIHsKICAgICAgICAgICAgIGJzaXplID0gYi0+Yl9vZmZzZXQ7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYi0+Yl9pdXNlZDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgc3RydWN0IGluc3RyICppbnN0ciA9ICZiLT5iX2luc3RyW2ldOworICAgICAgICAgICAgICAgIGludCBpc2l6ZSA9IGluc3Ryc2l6ZShpbnN0ci0+aV9vcGFyZyk7CiAgICAgICAgICAgICAgICAgLyogUmVsYXRpdmUganVtcHMgYXJlIGNvbXB1dGVkIHJlbGF0aXZlIHRvCiAgICAgICAgICAgICAgICAgICAgdGhlIGluc3RydWN0aW9uIHBvaW50ZXIgYWZ0ZXIgZmV0Y2hpbmcKICAgICAgICAgICAgICAgICAgICB0aGUganVtcCBpbnN0cnVjdGlvbi4KICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGJzaXplICs9IGluc3Ryc2l6ZShpbnN0cik7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX2phYnMpCisgICAgICAgICAgICAgICAgYnNpemUgKz0gaXNpemU7CisgICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX2phYnMgfHwgaW5zdHItPmlfanJlbCkgewogICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyA9IGluc3RyLT5pX3RhcmdldC0+Yl9vZmZzZXQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5zdHItPmlfanJlbCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgZGVsdGEgPSBpbnN0ci0+aV90YXJnZXQtPmJfb2Zmc2V0IC0gYnNpemU7Ci0gICAgICAgICAgICAgICAgICAgIGluc3RyLT5pX29wYXJnID0gZGVsdGE7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0ci0+aV9qcmVsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyAtPSBic2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluc3Ryc2l6ZShpbnN0ci0+aV9vcGFyZykgIT0gaXNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkX2FyZ19yZWNvbXBpbGUgPSAxOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX29wYXJnID4gMHhmZmZmKQotICAgICAgICAgICAgICAgICAgICBleHRlbmRlZF9hcmdfY291bnQrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC00NTA1LDcgKzUxMjUsNyBAQAogCiAgICAgICAgIFRoZSBpc3N1ZSBpcyB0aGF0IGluIHRoZSBmaXJzdCBsb29wIGJsb2Nrc2l6ZSgpIGlzIGNhbGxlZAogICAgICAgICB3aGljaCBjYWxscyBpbnN0cnNpemUoKSB3aGljaCByZXF1aXJlcyBpX29wYXJnIGJlIHNldAotICAgICAgICBhcHByb3ByaWF0ZWx5LiAgICAgICAgICBUaGVyZSBpcyBhIGJvb3RzdHJhcCBwcm9ibGVtIGJlY2F1c2UKKyAgICAgICAgYXBwcm9wcmlhdGVseS4gVGhlcmUgaXMgYSBib290c3RyYXAgcHJvYmxlbSBiZWNhdXNlCiAgICAgICAgIGlfb3BhcmcgaXMgY2FsY3VsYXRlZCBpbiB0aGUgc2Vjb25kIGxvb3AgYWJvdmUuCiAKICAgICAgICAgU28gd2UgbG9vcCB1bnRpbCB3ZSBzdG9wIHNlZWluZyBuZXcgRVhURU5ERURfQVJHcy4KQEAgLTQ1MTMsNyArNTEzMyw3IEBACiAgICAgICAgIG9uZXMgaW4ganVtcCBpbnN0cnVjdGlvbnMuICBTbyB0aGlzIHNob3VsZCBjb252ZXJnZQogICAgICAgICBmYWlybHkgcXVpY2tseS4KICAgICAqLwotICAgIH0gd2hpbGUgKGxhc3RfZXh0ZW5kZWRfYXJnX2NvdW50ICE9IGV4dGVuZGVkX2FyZ19jb3VudCk7CisgICAgfSB3aGlsZSAoZXh0ZW5kZWRfYXJnX3JlY29tcGlsZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTQ5LDggKzUxNjksMTIgQEAKICAgICAgICAgZmxhZ3MgfD0gQ09fTkVXTE9DQUxTIHwgQ09fT1BUSU1JWkVEOwogICAgICAgICBpZiAoc3RlLT5zdGVfbmVzdGVkKQogICAgICAgICAgICAgZmxhZ3MgfD0gQ09fTkVTVEVEOwotICAgICAgICBpZiAoc3RlLT5zdGVfZ2VuZXJhdG9yKQorICAgICAgICBpZiAoc3RlLT5zdGVfZ2VuZXJhdG9yICYmICFzdGUtPnN0ZV9jb3JvdXRpbmUpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19HRU5FUkFUT1I7CisgICAgICAgIGlmICghc3RlLT5zdGVfZ2VuZXJhdG9yICYmIHN0ZS0+c3RlX2Nvcm91dGluZSkKKyAgICAgICAgICAgIGZsYWdzIHw9IENPX0NPUk9VVElORTsKKyAgICAgICAgaWYgKHN0ZS0+c3RlX2dlbmVyYXRvciAmJiBzdGUtPnN0ZV9jb3JvdXRpbmUpCisgICAgICAgICAgICBmbGFncyB8PSBDT19BU1lOQ19HRU5FUkFUT1I7CiAgICAgICAgIGlmIChzdGUtPnN0ZV92YXJhcmdzKQogICAgICAgICAgICAgZmxhZ3MgfD0gQ09fVkFSQVJHUzsKICAgICAgICAgaWYgKHN0ZS0+c3RlX3ZhcmtleXdvcmRzKQpAQCAtNDY1OSw5ICs1MjgzLDkgQEAKICAgICBjaGFyIGFyZ1sxMjhdOwogCiAgICAgKmFyZyA9ICdcMCc7Ci0gICAgaWYgKGktPmlfaGFzYXJnKQorICAgIGlmIChIQVNfQVJHKGktPmlfb3Bjb2RlKSkgewogICAgICAgICBzcHJpbnRmKGFyZywgImFyZzogJWQgIiwgaS0+aV9vcGFyZyk7Ci0KKyAgICB9CiAgICAgZnByaW50ZihzdGRlcnIsICJsaW5lOiAlZCwgb3Bjb2RlOiAlZCAlcyVzJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGktPmlfbGluZW5vLCBpLT5pX29wY29kZSwgYXJnLCBqYWJzLCBqcmVsKTsKIH0KQEAgLTQ3MTEsNyArNTMzNSw3IEBACiAKICAgICAvKiBTZXQgZmlyc3RsaW5lbm8gaWYgaXQgd2Fzbid0IGV4cGxpY2l0bHkgc2V0LiAqLwogICAgIGlmICghYy0+dS0+dV9maXJzdGxpbmVubykgewotICAgICAgICBpZiAoZW50cnlibG9jayAmJiBlbnRyeWJsb2NrLT5iX2luc3RyKQorICAgICAgICBpZiAoZW50cnlibG9jayAmJiBlbnRyeWJsb2NrLT5iX2luc3RyICYmIGVudHJ5YmxvY2stPmJfaW5zdHItPmlfbGluZW5vKQogICAgICAgICAgICAgYy0+dS0+dV9maXJzdGxpbmVubyA9IGVudHJ5YmxvY2stPmJfaW5zdHItPmlfbGluZW5vOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjLT51LT51X2ZpcnN0bGluZW5vID0gMTsKQEAgLTQ3MzMsNyArNTM1Nyw3IEBACiAKICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZhLmFfbG5vdGFiLCBhLmFfbG5vdGFiX29mZikgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEuYV9ieXRlY29kZSwgYS5hX29mZnNldCkgPCAwKQorICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEuYV9ieXRlY29kZSwgYS5hX29mZnNldCAqIHNpemVvZihfUHlfQ09ERVVOSVQpKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBjbyA9IG1ha2Vjb2RlKGMsICZhKTsKQEAgLTQ3NDksNCArNTM3MywzIEBACiB7CiAgICAgcmV0dXJuIFB5QVNUX0NvbXBpbGVFeChtb2QsIGZpbGVuYW1lLCBmbGFncywgLTEsIGFyZW5hKTsKIH0KLQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbmR2YXIuaCBiL1B5dGhvbi9jb25kdmFyLmgKaW5kZXggY2VkOTEwZi4uOWE3MWIxNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbmR2YXIuaAorKysgYi9QeXRob24vY29uZHZhci5oCkBAIC04OSw3ICs4OSw3IEBACiAKIC8qIHJldHVybiAwIGZvciBzdWNjZXNzLCAxIG9uIHRpbWVvdXQsIC0xIG9uIGVycm9yICovCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY29uZCwgUHlNVVRFWF9UICptdXQsIFBZX0xPTkdfTE9ORyB1cykKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmNvbmQsIFB5TVVURVhfVCAqbXV0LCBsb25nIGxvbmcgdXMpCiB7CiAgICAgaW50IHI7CiAgICAgc3RydWN0IHRpbWVzcGVjIHRzOwpAQCAtMjcwLDcgKzI3MCw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShpbnQpCi1QeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgUFlfTE9OR19MT05HIHVzKQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIGxvbmcgbG9uZyB1cykKIHsKICAgICByZXR1cm4gX1B5Q09ORF9XQUlUX01TKGN2LCBjcywgKERXT1JEKSh1cy8xMDAwKSk7CiB9CkBAIC0zNjMsNyArMzYzLDcgQEAKICAqIDIgdG8gaW5kaWNhdGUgdGhhdCB3ZSBkb24ndCBrbm93LgogICovCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIFBZX0xPTkdfTE9ORyB1cykKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBsb25nIGxvbmcgdXMpCiB7CiAgICAgcmV0dXJuIFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcoY3YsIGNzLCAoRFdPUkQpKHVzLzEwMDApLCAwKSA/IDIgOiAtMTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9kdG9hLmMgYi9QeXRob24vZHRvYS5jCmluZGV4IDNkYTU0NmUuLmVmY2FkYzMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9kdG9hLmMKKysrIGIvUHl0aG9uL2R0b2EuYwpAQCAtMTUxLDE4ICsxNTEsOSBAQAogI2VuZGlmCiAKIAotI2lmIGRlZmluZWQoSEFWRV9VSU5UMzJfVCkgJiYgZGVmaW5lZChIQVZFX0lOVDMyX1QpCi10eXBlZGVmIFBZX1VJTlQzMl9UIFVMb25nOwotdHlwZWRlZiBQWV9JTlQzMl9UIExvbmc7Ci0jZWxzZQotI2Vycm9yICJGYWlsZWQgdG8gZmluZCBhbiBleGFjdC13aWR0aCAzMi1iaXQgaW50ZWdlciB0eXBlIgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKEhBVkVfVUlOVDY0X1QpCi0jZGVmaW5lIFVMTG9uZyBQWV9VSU5UNjRfVAotI2Vsc2UKLSN1bmRlZiBVTExvbmcKLSNlbmRpZgordHlwZWRlZiB1aW50MzJfdCBVTG9uZzsKK3R5cGVkZWYgaW50MzJfdCBMb25nOwordHlwZWRlZiB1aW50NjRfdCBVTExvbmc7CiAKICN1bmRlZiBERUJVRwogI2lmZGVmIFB5X0RFQlVHCkBAIC00NTcsMTMgKzQ0OCw4IEBACiBtdWx0YWRkKEJpZ2ludCAqYiwgaW50IG0sIGludCBhKSAgICAgICAvKiBtdWx0aXBseSBieSBtIGFuZCBhZGQgYSAqLwogewogICAgIGludCBpLCB3ZHM7Ci0jaWZkZWYgVUxMb25nCiAgICAgVUxvbmcgKng7CiAgICAgVUxMb25nIGNhcnJ5LCB5OwotI2Vsc2UKLSAgICBVTG9uZyBjYXJyeSwgKngsIHk7Ci0gICAgVUxvbmcgeGksIHo7Ci0jZW5kaWYKICAgICBCaWdpbnQgKmIxOwogCiAgICAgd2RzID0gYi0+d2RzOwpAQCAtNDcxLDE3ICs0NTcsOSBAQAogICAgIGkgPSAwOwogICAgIGNhcnJ5ID0gYTsKICAgICBkbyB7Ci0jaWZkZWYgVUxMb25nCiAgICAgICAgIHkgPSAqeCAqIChVTExvbmcpbSArIGNhcnJ5OwogICAgICAgICBjYXJyeSA9IHkgPj4gMzI7CiAgICAgICAgICp4KysgPSAoVUxvbmcpKHkgJiBGRkZGRkZGRik7Ci0jZWxzZQotICAgICAgICB4aSA9ICp4OwotICAgICAgICB5ID0gKHhpICYgMHhmZmZmKSAqIG0gKyBjYXJyeTsKLSAgICAgICAgeiA9ICh4aSA+PiAxNikgKiBtICsgKHkgPj4gMTYpOwotICAgICAgICBjYXJyeSA9IHogPj4gMTY7Ci0gICAgICAgICp4KysgPSAoeiA8PCAxNikgKyAoeSAmIDB4ZmZmZik7Ci0jZW5kaWYKICAgICB9CiAgICAgd2hpbGUoKytpIDwgd2RzKTsKICAgICBpZiAoY2FycnkpIHsKQEAgLTY0MiwxMiArNjIwLDcgQEAKICAgICBpbnQgaywgd2EsIHdiLCB3YzsKICAgICBVTG9uZyAqeCwgKnhhLCAqeGFlLCAqeGIsICp4YmUsICp4YywgKnhjMDsKICAgICBVTG9uZyB5OwotI2lmZGVmIFVMTG9uZwogICAgIFVMTG9uZyBjYXJyeSwgejsKLSNlbHNlCi0gICAgVUxvbmcgY2FycnksIHo7Ci0gICAgVUxvbmcgejI7Ci0jZW5kaWYKIAogICAgIGlmICgoIWEtPnhbMF0gJiYgYS0+d2RzID09IDEpIHx8ICghYi0+eFswXSAmJiBiLT53ZHMgPT0gMSkpIHsKICAgICAgICAgYyA9IEJhbGxvYygwKTsKQEAgLTY3OSw3ICs2NTIsNiBAQAogICAgIHhiID0gYi0+eDsKICAgICB4YmUgPSB4YiArIHdiOwogICAgIHhjMCA9IGMtPng7Ci0jaWZkZWYgVUxMb25nCiAgICAgZm9yKDsgeGIgPCB4YmU7IHhjMCsrKSB7CiAgICAgICAgIGlmICgoeSA9ICp4YisrKSkgewogICAgICAgICAgICAgeCA9IHhhOwpAQCAtNjk0LDM5ICs2NjYsNiBAQAogICAgICAgICAgICAgKnhjID0gKFVMb25nKWNhcnJ5OwogICAgICAgICB9CiAgICAgfQotI2Vsc2UKLSAgICBmb3IoOyB4YiA8IHhiZTsgeGIrKywgeGMwKyspIHsKLSAgICAgICAgaWYgKHkgPSAqeGIgJiAweGZmZmYpIHsKLSAgICAgICAgICAgIHggPSB4YTsKLSAgICAgICAgICAgIHhjID0geGMwOwotICAgICAgICAgICAgY2FycnkgPSAwOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIHogPSAoKnggJiAweGZmZmYpICogeSArICgqeGMgJiAweGZmZmYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6ID4+IDE2OwotICAgICAgICAgICAgICAgIHoyID0gKCp4KysgPj4gMTYpICogeSArICgqeGMgPj4gMTYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6MiA+PiAxNjsKLSAgICAgICAgICAgICAgICBTdG9yZWluYyh4YywgejIsIHopOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUoeCA8IHhhZSk7Ci0gICAgICAgICAgICAqeGMgPSBjYXJyeTsKLSAgICAgICAgfQotICAgICAgICBpZiAoeSA9ICp4YiA+PiAxNikgewotICAgICAgICAgICAgeCA9IHhhOwotICAgICAgICAgICAgeGMgPSB4YzA7Ci0gICAgICAgICAgICBjYXJyeSA9IDA7Ci0gICAgICAgICAgICB6MiA9ICp4YzsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICB6ID0gKCp4ICYgMHhmZmZmKSAqIHkgKyAoKnhjID4+IDE2KSArIGNhcnJ5OwotICAgICAgICAgICAgICAgIGNhcnJ5ID0geiA+PiAxNjsKLSAgICAgICAgICAgICAgICBTdG9yZWluYyh4YywgeiwgejIpOwotICAgICAgICAgICAgICAgIHoyID0gKCp4KysgPj4gMTYpICogeSArICgqeGMgJiAweGZmZmYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6MiA+PiAxNjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlKHggPCB4YWUpOwotICAgICAgICAgICAgKnhjID0gejI7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKICAgICBmb3IoeGMwID0gYy0+eCwgeGMgPSB4YzAgKyB3Yzsgd2MgPiAwICYmICEqLS14YzsgLS13YykgOwogICAgIGMtPndkcyA9IHdjOwogICAgIHJldHVybiBjOwpAQCAtNzQ3LDcgKzY4Niw3IEBACiB7CiAgICAgQmlnaW50ICpiMSwgKnA1LCAqcDUxOwogICAgIGludCBpOwotICAgIHN0YXRpYyBpbnQgcDA1WzNdID0geyA1LCAyNSwgMTI1IH07CisgICAgc3RhdGljIGNvbnN0IGludCBwMDVbM10gPSB7IDUsIDI1LCAxMjUgfTsKIAogICAgIGlmICgoaSA9IGsgJiAzKSkgewogICAgICAgICBiID0gbXVsdGFkZChiLCBwMDVbaS0xXSwgMCk7CkBAIC04MDMsNyArNzQyLDcgQEAKIHsKICAgICBCaWdpbnQgKmIxLCAqcDUsICpwNTE7CiAgICAgaW50IGk7Ci0gICAgc3RhdGljIGludCBwMDVbM10gPSB7IDUsIDI1LCAxMjUgfTsKKyAgICBzdGF0aWMgY29uc3QgaW50IHAwNVszXSA9IHsgNSwgMjUsIDEyNSB9OwogCiAgICAgaWYgKChpID0gayAmIDMpKSB7CiAgICAgICAgIGIgPSBtdWx0YWRkKGIsIHAwNVtpLTFdLCAwKTsKQEAgLTkzNSwxMiArODc0LDcgQEAKICAgICBCaWdpbnQgKmM7CiAgICAgaW50IGksIHdhLCB3YjsKICAgICBVTG9uZyAqeGEsICp4YWUsICp4YiwgKnhiZSwgKnhjOwotI2lmZGVmIFVMTG9uZwogICAgIFVMTG9uZyBib3Jyb3csIHk7Ci0jZWxzZQotICAgIFVMb25nIGJvcnJvdywgeTsKLSAgICBVTG9uZyB6OwotI2VuZGlmCiAKICAgICBpID0gY21wKGEsYik7CiAgICAgaWYgKCFpKSB7CkBAIC05NzEsNyArOTA1LDYgQEAKICAgICB4YmUgPSB4YiArIHdiOwogICAgIHhjID0gYy0+eDsKICAgICBib3Jyb3cgPSAwOwotI2lmZGVmIFVMTG9uZwogICAgIGRvIHsKICAgICAgICAgeSA9IChVTExvbmcpKnhhKysgLSAqeGIrKyAtIGJvcnJvdzsKICAgICAgICAgYm9ycm93ID0geSA+PiAzMiAmIChVTG9uZykxOwpAQCAtOTgzLDIzICs5MTYsNiBAQAogICAgICAgICBib3Jyb3cgPSB5ID4+IDMyICYgKFVMb25nKTE7CiAgICAgICAgICp4YysrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwogICAgIH0KLSNlbHNlCi0gICAgZG8gewotICAgICAgICB5ID0gKCp4YSAmIDB4ZmZmZikgLSAoKnhiICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgeiA9ICgqeGErKyA+PiAxNikgLSAoKnhiKysgPj4gMTYpIC0gYm9ycm93OwotICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICBTdG9yZWluYyh4YywgeiwgeSk7Ci0gICAgfQotICAgIHdoaWxlKHhiIDwgeGJlKTsKLSAgICB3aGlsZSh4YSA8IHhhZSkgewotICAgICAgICB5ID0gKCp4YSAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgIHogPSAoKnhhKysgPj4gMTYpIC0gYm9ycm93OwotICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICBTdG9yZWluYyh4YywgeiwgeSk7Ci0gICAgfQotI2VuZGlmCiAgICAgd2hpbGUoISotLXhjKQogICAgICAgICB3YS0tOwogICAgIGMtPndkcyA9IHdhOwpAQCAtMTI0NCwxMiArMTE2MCw3IEBACiB7CiAgICAgaW50IG47CiAgICAgVUxvbmcgKmJ4LCAqYnhlLCBxLCAqc3gsICpzeGU7Ci0jaWZkZWYgVUxMb25nCiAgICAgVUxMb25nIGJvcnJvdywgY2FycnksIHksIHlzOwotI2Vsc2UKLSAgICBVTG9uZyBib3Jyb3csIGNhcnJ5LCB5LCB5czsKLSAgICBVTG9uZyBzaSwgeiwgenM7Ci0jZW5kaWYKIAogICAgIG4gPSBTLT53ZHM7CiAjaWZkZWYgREVCVUcKQEAgLTEyNzEsMjMgKzExODIsMTEgQEAKICAgICAgICAgYm9ycm93ID0gMDsKICAgICAgICAgY2FycnkgPSAwOwogICAgICAgICBkbyB7Ci0jaWZkZWYgVUxMb25nCiAgICAgICAgICAgICB5cyA9ICpzeCsrICogKFVMTG9uZylxICsgY2Fycnk7CiAgICAgICAgICAgICBjYXJyeSA9IHlzID4+IDMyOwogICAgICAgICAgICAgeSA9ICpieCAtICh5cyAmIEZGRkZGRkZGKSAtIGJvcnJvdzsKICAgICAgICAgICAgIGJvcnJvdyA9IHkgPj4gMzIgJiAoVUxvbmcpMTsKICAgICAgICAgICAgICpieCsrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwotI2Vsc2UKLSAgICAgICAgICAgIHNpID0gKnN4Kys7Ci0gICAgICAgICAgICB5cyA9IChzaSAmIDB4ZmZmZikgKiBxICsgY2Fycnk7Ci0gICAgICAgICAgICB6cyA9IChzaSA+PiAxNikgKiBxICsgKHlzID4+IDE2KTsKLSAgICAgICAgICAgIGNhcnJ5ID0genMgPj4gMTY7Ci0gICAgICAgICAgICB5ID0gKCpieCAmIDB4ZmZmZikgLSAoeXMgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICAgICAgYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIHogPSAoKmJ4ID4+IDE2KSAtICh6cyAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICAgICAgU3RvcmVpbmMoYngsIHosIHkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgd2hpbGUoc3ggPD0gc3hlKTsKICAgICAgICAgaWYgKCEqYnhlKSB7CkBAIC0xMzA0LDIzICsxMjAzLDExIEBACiAgICAgICAgIGJ4ID0gYi0+eDsKICAgICAgICAgc3ggPSBTLT54OwogICAgICAgICBkbyB7Ci0jaWZkZWYgVUxMb25nCiAgICAgICAgICAgICB5cyA9ICpzeCsrICsgY2Fycnk7CiAgICAgICAgICAgICBjYXJyeSA9IHlzID4+IDMyOwogICAgICAgICAgICAgeSA9ICpieCAtICh5cyAmIEZGRkZGRkZGKSAtIGJvcnJvdzsKICAgICAgICAgICAgIGJvcnJvdyA9IHkgPj4gMzIgJiAoVUxvbmcpMTsKICAgICAgICAgICAgICpieCsrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwotI2Vsc2UKLSAgICAgICAgICAgIHNpID0gKnN4Kys7Ci0gICAgICAgICAgICB5cyA9IChzaSAmIDB4ZmZmZikgKyBjYXJyeTsKLSAgICAgICAgICAgIHpzID0gKHNpID4+IDE2KSArICh5cyA+PiAxNik7Ci0gICAgICAgICAgICBjYXJyeSA9IHpzID4+IDE2OwotICAgICAgICAgICAgeSA9ICgqYnggJiAweGZmZmYpIC0gKHlzICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgICAgICB6ID0gKCpieCA+PiAxNikgLSAoenMgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICAgICAgYm9ycm93ID0gKHogJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIFN0b3JlaW5jKGJ4LCB6LCB5KTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHdoaWxlKHN4IDw9IHN4ZSk7CiAgICAgICAgIGJ4ID0gYi0+eDsKQEAgLTIzMTUsNyArMjIwMiw3IEBACiB9CiAKIHN0YXRpYyBjaGFyICoKLW5ydl9hbGxvYyhjaGFyICpzLCBjaGFyICoqcnZlLCBpbnQgbikKK25ydl9hbGxvYyhjb25zdCBjaGFyICpzLCBjaGFyICoqcnZlLCBpbnQgbikKIHsKICAgICBjaGFyICpydiwgKnQ7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9kdHJhY2Vfc3R1YnMuYyBiL1B5dGhvbi9kdHJhY2Vfc3R1YnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDUxMzYzCi0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL2R0cmFjZV9zdHVicy5jCkBAIC0wLDAgKzEsMjQgQEAKKyNpbmNsdWRlIDxQeXRob24uaD4KKyNpbmNsdWRlICJweWR0cmFjZS5oIgorCisjaWZuZGVmIFdJVEhfRFRSQUNFCitleHRlcm4gaW5saW5lIHZvaWQgUHlEVHJhY2VfTElORShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMik7CitleHRlcm4gaW5saW5lIHZvaWQgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUlkoY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTihjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMik7CitleHRlcm4gaW5saW5lIHZvaWQgUHlEVHJhY2VfR0NfU1RBUlQoaW50IGFyZzApOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0dDX0RPTkUoaW50IGFyZzApOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVChpbnQgYXJnMCk7CitleHRlcm4gaW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX0RPTkUoaW50IGFyZzApOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9TVEFSVChpbnQgYXJnMCk7CitleHRlcm4gaW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkUoaW50IGFyZzApOworCitleHRlcm4gaW5saW5lIGludCBQeURUcmFjZV9MSU5FX0VOQUJMRUQodm9pZCk7CitleHRlcm4gaW5saW5lIGludCBQeURUcmFjZV9GVU5DVElPTl9FTlRSWV9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOX0VOQUJMRUQodm9pZCk7CitleHRlcm4gaW5saW5lIGludCBQeURUcmFjZV9HQ19TVEFSVF9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfR0NfRE9ORV9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX1NUQVJUX0VOQUJMRUQodm9pZCk7CitleHRlcm4gaW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ORVdfRE9ORV9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX1NUQVJUX0VOQUJMRUQodm9pZCk7CitleHRlcm4gaW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfRE9ORV9FTkFCTEVEKHZvaWQpOworI2VuZGlmCmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF93aW4uYyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCmluZGV4IGYyYzc5NmUuLjA1MDUwY2YgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3dpbi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCkBAIC0yNCwxMiArMjQsMTAgQEAKICNkZWZpbmUgUFlEX0RFQlVHX1NVRkZJWCAiIgogI2VuZGlmCiAKLSNkZWZpbmUgU1RSSU5HSVpFMih4KSAjeAotI2RlZmluZSBTVFJJTkdJWkUoeCkgU1RSSU5HSVpFMih4KQogI2lmZGVmIFBZRF9QTEFURk9STV9UQUcKLSNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBTVFJJTkdJWkUoUFlfTUFKT1JfVkVSU0lPTikgU1RSSU5HSVpFKFBZX01JTk9SX1ZFUlNJT04pICItIiBQWURfUExBVEZPUk1fVEFHICIucHlkIgorI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFB5X1NUUklOR0lGWShQWV9NQUpPUl9WRVJTSU9OKSBQeV9TVFJJTkdJRlkoUFlfTUlOT1JfVkVSU0lPTikgIi0iIFBZRF9QTEFURk9STV9UQUcgIi5weWQiCiAjZWxzZQotI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFNUUklOR0laRShQWV9NQUpPUl9WRVJTSU9OKSBTVFJJTkdJWkUoUFlfTUlOT1JfVkVSU0lPTikgIi5weWQiCisjZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgUHlfU1RSSU5HSUZZKFBZX01BSk9SX1ZFUlNJT04pIFB5X1NUUklOR0lGWShQWV9NSU5PUl9WRVJTSU9OKSAiLnB5ZCIKICNlbmRpZgogCiAjZGVmaW5lIFBZRF9VTlRBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLnB5ZCIKQEAgLTQzLDcgKzQxLDcgQEAKIC8qIENhc2UgaW5zZW5zaXRpdmUgc3RyaW5nIGNvbXBhcmUsIHRvIGF2b2lkIGFueSBkZXBlbmRlbmNpZXMgb24gcGFydGljdWxhcgogICAgQyBSVEwgaW1wbGVtZW50YXRpb25zICovCiAKLXN0YXRpYyBpbnQgc3RyY2FzZWNtcCAoY2hhciAqc3RyaW5nMSwgY2hhciAqc3RyaW5nMikKK3N0YXRpYyBpbnQgc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqc3RyaW5nMSwgY29uc3QgY2hhciAqc3RyaW5nMikKIHsKICAgICBpbnQgZmlyc3QsIHNlY29uZDsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2Vycm9ycy5jIGIvUHl0aG9uL2Vycm9ycy5jCmluZGV4IGUxNTFjYWIuLjEzYWU2YjQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9lcnJvcnMuYworKysgYi9QeXRob24vZXJyb3JzLmMKQEAgLTUyLDYgKzUyLDIwIEBACiAgICAgUHlfWERFQ1JFRihvbGR0cmFjZWJhY2spOwogfQogCitzdGF0aWMgUHlPYmplY3QqCitfUHlFcnJfQ3JlYXRlRXhjZXB0aW9uKFB5T2JqZWN0ICpleGNlcHRpb24sIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCB2YWx1ZSA9PSBQeV9Ob25lKSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGV4Y2VwdGlvbik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsKGV4Y2VwdGlvbiwgdmFsdWUsIE5VTEwpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsQXJnMShleGNlcHRpb24sIHZhbHVlKTsKKyAgICB9Cit9CisKIHZvaWQKIFB5RXJyX1NldE9iamVjdChQeU9iamVjdCAqZXhjZXB0aW9uLCBQeU9iamVjdCAqdmFsdWUpCiB7CkBAIC02Niw2ICs4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7CiAgICAgZXhjX3ZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7CiAgICAgaWYgKGV4Y192YWx1ZSAhPSBOVUxMICYmIGV4Y192YWx1ZSAhPSBQeV9Ob25lKSB7CkBAIC03MywyOCArODgsMjEgQEAKICAgICAgICAgUHlfSU5DUkVGKGV4Y192YWx1ZSk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKHZhbHVlKSkgewogICAgICAgICAgICAgLyogV2UgbXVzdCBub3JtYWxpemUgdGhlIHZhbHVlIHJpZ2h0IG5vdyAqLwotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsICpmaXhlZF92YWx1ZTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmaXhlZF92YWx1ZTsKIAotICAgICAgICAgICAgLyogSXNzdWUgIzIzNTcxOiBQeUV2YWxfQ2FsbE9iamVjdCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuCisgICAgICAgICAgICAvKiBJc3N1ZSAjMjM1NzE6IGZ1bmN0aW9ucyBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbgogICAgICAgICAgICAgICAgZXhjZXB0aW9uIHNldCAqLwogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIAotICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgdmFsdWUgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwotICAgICAgICAgICAgZml4ZWRfdmFsdWUgPSBhcmdzID8KLSAgICAgICAgICAgICAgICBQeUV2YWxfQ2FsbE9iamVjdChleGNlcHRpb24sIGFyZ3MpIDogTlVMTDsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgICAgICAgICBmaXhlZF92YWx1ZSA9IF9QeUVycl9DcmVhdGVFeGNlcHRpb24oZXhjZXB0aW9uLCB2YWx1ZSk7CiAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIGlmIChmaXhlZF92YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKGZpeGVkX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHZhbHVlID0gZml4ZWRfdmFsdWU7CiAgICAgICAgIH0KKwogICAgICAgICAvKiBBdm9pZCByZWZlcmVuY2UgY3ljbGVzIHRocm91Z2ggdGhlIGNvbnRleHQgY2hhaW4uCiAgICAgICAgICAgIFRoaXMgaXMgTyhjaGFpbiBsZW5ndGgpIGJ1dCBjb250ZXh0IGNoYWlucyBhcmUKICAgICAgICAgICAgdXN1YWxseSB2ZXJ5IHNob3J0LiBTZW5zaXRpdmUgcmVhZGVycyBtYXkgdHJ5CkBAIC0xMTAsNyArMTE4LDggQEAKICAgICAgICAgICAgICAgICBvID0gY29udGV4dDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENvbnRleHQodmFsdWUsIGV4Y192YWx1ZSk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZXhjX3ZhbHVlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1OCwyNSArMjY3LDE1IEBACiAgICAgICAgICAgIGNsYXNzLgogICAgICAgICAqLwogICAgICAgICBpZiAoIWluY2xhc3MgfHwgIWlzX3N1YmNsYXNzKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYXJncywgKnJlczsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmaXhlZF92YWx1ZTsKIAotICAgICAgICAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICAgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZTsKKyAgICAgICAgICAgIGZpeGVkX3ZhbHVlID0gX1B5RXJyX0NyZWF0ZUV4Y2VwdGlvbih0eXBlLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoZml4ZWRfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKIAotICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdCh0eXBlLCBhcmdzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgdmFsdWUgPSByZXM7CisgICAgICAgICAgICB2YWx1ZSA9IGZpeGVkX3ZhbHVlOwogICAgICAgICB9CiAgICAgICAgIC8qIGlmIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2UgZG9lc24ndCBleGFjdGx5IG1hdGNoIHRoZQogICAgICAgICAgICBjbGFzcyBvZiB0aGUgdHlwZSwgYmVsaWV2ZSB0aGUgaW5zdGFuY2UKQEAgLTY5OCw1MSArNjk3LDYxIEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeU9iamVjdCAqCi1QeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqbXNnLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCitQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzKFB5T2JqZWN0ICpleGNlcHRpb24sIFB5T2JqZWN0ICptc2csCisgICAgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqa3dhcmdzLCAqZXJyb3I7CisgICAgaW50IGlzc3ViY2xhc3M7CisgICAgUHlPYmplY3QgKmt3YXJncywgKmVycm9yOwogCi0gICAgaWYgKG1zZyA9PSBOVUxMKQorICAgIGlzc3ViY2xhc3MgPSBQeU9iamVjdF9Jc1N1YmNsYXNzKGV4Y2VwdGlvbiwgUHlFeGNfSW1wb3J0RXJyb3IpOworICAgIGlmIChpc3N1YmNsYXNzIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgIH0KKyAgICBlbHNlIGlmICghaXNzdWJjbGFzcykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgYSBzdWJjbGFzcyBvZiBJbXBvcnRFcnJvciIpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICBrd2FyZ3MgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKGt3YXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBpZiAobXNnID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIGEgbWVzc2FnZSBhcmd1bWVudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIG5hbWUgPSBQeV9Ob25lOwogICAgIH0KLQogICAgIGlmIChwYXRoID09IE5VTEwpIHsKICAgICAgICAgcGF0aCA9IFB5X05vbmU7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKG1zZyk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBtc2cpOwotCi0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgIm5hbWUiLCBuYW1lKSA8IDApCisgICAga3dhcmdzID0gUHlEaWN0X05ldygpOworICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgIm5hbWUiLCBuYW1lKSA8IDApIHsKICAgICAgICAgZ290byBkb25lOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJwYXRoIiwgcGF0aCkgPCAwKQorICAgIH0KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAicGF0aCIsIHBhdGgpIDwgMCkgewogICAgICAgICBnb3RvIGRvbmU7CisgICAgfQogCi0gICAgZXJyb3IgPSBQeU9iamVjdF9DYWxsKFB5RXhjX0ltcG9ydEVycm9yLCBhcmdzLCBrd2FyZ3MpOworICAgIGVycm9yID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChleGNlcHRpb24sICZtc2csIDEsIGt3YXJncyk7CiAgICAgaWYgKGVycm9yICE9IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KChQeU9iamVjdCAqKVB5X1RZUEUoZXJyb3IpLCBlcnJvcik7CiAgICAgICAgIFB5X0RFQ1JFRihlcnJvcik7CiAgICAgfQogCiBkb25lOgotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAorUHlPYmplY3QgKgorUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQoreworICAgIHJldHVybiBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzKFB5RXhjX0ltcG9ydEVycm9yLCBtc2csIG5hbWUsIHBhdGgpOworfQorCiB2b2lkCiBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQogewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ZpbGV1dGlscy5jIGIvUHl0aG9uL2ZpbGV1dGlscy5jCmluZGV4IDIzZWVkNzEuLmUzYmZiMGMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9maWxldXRpbHMuYworKysgYi9QeXRob24vZmlsZXV0aWxzLmMKQEAgLTQ0LDcgKzQ0LDcgQEAKICNlbmRpZgogICAgIGludCB2YWxpZDsKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICi0gICAgdmFsaWQgPSBfUHlWZXJpZnlfZmQoZmQpICYmIGlzYXR0eShmZCk7CisgICAgdmFsaWQgPSBpc2F0dHkoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgaWYgKCF2YWxpZCkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xMDQsMjMgKzEwNCwyNCBAQAogICAgIGNoYXIgKmxvYzsKICNpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQogICAgIGNoYXIgKmNvZGVzZXQsICoqYWxpYXM7Ci0gICAgY2hhciBlbmNvZGluZ1sxMDBdOworICAgIGNoYXIgZW5jb2RpbmdbMjBdOyAgIC8qIGxvbmdlc3QgbmFtZTogImlzb182NDYuaXJ2XzE5OTFcMCIgKi8KICAgICBpbnQgaXNfYXNjaWk7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgY2hhciogYXNjaWlfYWxpYXNlc1tdID0gewogICAgICAgICAiYXNjaWkiLAorICAgICAgICAvKiBBbGlhc2VzIGZyb20gTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5ICovCiAgICAgICAgICI2NDYiLAotICAgICAgICAiYW5zaS14My40LTE5NjgiLAotICAgICAgICAiYW5zaS14My00LTE5NjgiLAotICAgICAgICAiYW5zaS14My40LTE5ODYiLAorICAgICAgICAiYW5zaV94My40XzE5NjgiLAorICAgICAgICAiYW5zaV94My40XzE5ODYiLAorICAgICAgICAiYW5zaV94M180XzE5NjgiLAogICAgICAgICAiY3AzNjciLAogICAgICAgICAiY3Nhc2NpaSIsCiAgICAgICAgICJpYm0zNjciLAotICAgICAgICAiaXNvNjQ2LXVzIiwKLSAgICAgICAgImlzby02NDYuaXJ2LTE5OTEiLAotICAgICAgICAiaXNvLWlyLTYiLAorICAgICAgICAiaXNvNjQ2X3VzIiwKKyAgICAgICAgImlzb182NDYuaXJ2XzE5OTEiLAorICAgICAgICAiaXNvX2lyXzYiLAogICAgICAgICAidXMiLAotICAgICAgICAidXMtYXNjaWkiLAorICAgICAgICAidXNfYXNjaWkiLAogICAgICAgICBOVUxMCiAgICAgfTsKICNlbmRpZgpAQCAtNjEzLDEzICs2MTQsOSBAQAogICAgIEhBTkRMRSBoOwogICAgIGludCB0eXBlOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICBoID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0gICAgZWxzZSB7Ci0gICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOwotICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAotICAgIH0KKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAKICAgICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICAvKiBlcnJubyBpcyBhbHJlYWR5IHNldCBieSBfZ2V0X29zZmhhbmRsZSwgYnV0IHdlIGFsc28gc2V0CkBAIC02ODMsNiArNjgwLDEwIEBACiB7CiAgICAgaW50IHJlczsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBfUHlfZnN0YXRfbm9yYWlzZShmZCwgc3RhdHVzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtNzM4LDEyICs3MzksNiBAQAogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgRFdPUkQgZmxhZ3M7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgaWYgKHJhaXNlKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC03OTQsNyArNzg5LDcgQEAKICAgICBpbnQgcmVxdWVzdDsKICAgICBpbnQgZXJyOwogI2VuZGlmCi0gICAgaW50IGZsYWdzOworICAgIGludCBmbGFncywgbmV3X2ZsYWdzOwogICAgIGludCByZXM7CiAjZW5kaWYKIApAQCAtODE1LDEyICs4MTAsNiBAQAogICAgIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgaWYgKHJhaXNlKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC04ODUsMTAgKzg3NCwxOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKGluaGVyaXRhYmxlKQotICAgICAgICBmbGFncyAmPSB+RkRfQ0xPRVhFQzsKLSAgICBlbHNlCi0gICAgICAgIGZsYWdzIHw9IEZEX0NMT0VYRUM7CisgICAgaWYgKGluaGVyaXRhYmxlKSB7CisgICAgICAgIG5ld19mbGFncyA9IGZsYWdzICYgfkZEX0NMT0VYRUM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBuZXdfZmxhZ3MgPSBmbGFncyB8IEZEX0NMT0VYRUM7CisgICAgfQorCisgICAgaWYgKG5ld19mbGFncyA9PSBmbGFncykgeworICAgICAgICAvKiBGRF9DTE9FWEVDIGZsYWcgYWxyZWFkeSBzZXQvY2xlYXJlZDogbm90aGluZyB0byBkbyAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICByZXMgPSBmY250bChmZCwgRl9TRVRGRCwgZmxhZ3MpOwogICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIGlmIChyYWlzZSkKQEAgLTExNjksMTkgKzExNjYsMTUgQEAKICAgICBpbnQgZXJyOwogICAgIGludCBhc3luY19lcnIgPSAwOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorCiAgICAgLyogX1B5X3JlYWQoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LCBvdGhlcndpc2UgdGhlCiAgICAgICogY2FsbGVyIG1heSB0aGluayB0aGF0IHJlYWQoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIHRoZSBzaWduYWwKICAgICAgKiBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24uICovCiAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCi0gICAgICAgIGVyciA9IGVycm5vOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIGVycm5vID0gZXJyOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChjb3VudCA+IElOVF9NQVgpIHsKICAgICAgICAgLyogT24gV2luZG93cywgdGhlIGNvdW50IHBhcmFtZXRlciBvZiByZWFkKCkgaXMgYW4gaW50ICovCkBAIC0xMjM1LDE2ICsxMjI4LDYgQEAKICAgICBpbnQgZXJyOwogICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIGlmIChnaWxfaGVsZCkgewotICAgICAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLwotICAgICAgICAgICAgZXJyID0gZXJybm87Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgICAgICBlcnJubyA9IGVycjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoY291bnQgPiAzMjc2NyAmJiBpc2F0dHkoZmQpKSB7CkBAIC0xMzI0LDYgKzEzMDcsMTAgQEAKIFB5X3NzaXplX3QKIF9QeV93cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQogeworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKwogICAgIC8qIF9QeV93cml0ZSgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsIG90aGVyd2lzZSB0aGUKICAgICAgKiBjYWxsZXIgbWF5IHRoaW5rIHRoYXQgd3JpdGUoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIHRoZSBzaWduYWwKICAgICAgKiBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24uICovCkBAIC0xNDczLDEwICsxNDYwLDkgQEAKICAgICBEV09SRCBmdHlwZTsKICNlbmRpZgogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSApAQCAtMTYwMCw4NCArMTU4NiwzIEBACiAgICAgcmV0dXJuIC0xOwogfQogI2VuZGlmCi0KLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCi0vKiBMZWdhY3kgaW1wbGVtZW50YXRpb24gb2YgX1B5VmVyaWZ5X2ZkIHdoaWxlIHRyYW5zaXRpb25pbmcgdG8KLSAqIE1TVkMgMTQuMC4gVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLiAoaXNzdWUyMzUyNCkKLSAqLwotCi0vKiBNaWNyb3NvZnQgQ1JUIGluIFZTMjAwNSBhbmQgaGlnaGVyIHdpbGwgdmVyaWZ5IHRoYXQgYSBmaWxlaGFuZGxlIGlzCi0gKiB2YWxpZCBhbmQgcmFpc2UgYW4gYXNzZXJ0aW9uIGlmIGl0IGlzbid0LgotICogTm9ybWFsbHksIGFuIGludmFsaWQgZmQgaXMgbGlrZWx5IHRvIGJlIGEgQyBwcm9ncmFtIGVycm9yIGFuZCB0aGVyZWZvcmUKLSAqIGFuIGFzc2VydGlvbiBjYW4gYmUgdXNlZnVsLCBidXQgaXQgZG9lcyBjb250cmFkaWN0IHRoZSBQT1NJWCBzdGFuZGFyZAotICogd2hpY2ggZm9yIHdyaXRlKDIpIHN0YXRlczoKLSAqICAgICJPdGhlcndpc2UsIC0xIHNoYWxsIGJlIHJldHVybmVkIGFuZCBlcnJubyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLiIKLSAqICAgICJbRUJBREZdIFRoZSBmaWxkZXMgYXJndW1lbnQgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIG9wZW4gZm9yCi0gKiAgICAgd3JpdGluZy4iCi0gKiBGdXJ0aGVybW9yZSwgcHl0aG9uIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbnkgb2xkIGludGVnZXIKLSAqIGFzIGEgZmQgYW5kIHNob3VsZCBtZXJlbHkgcmFpc2UgYSBweXRob24gZXhjZXB0aW9uIG9uIGVycm9yLgotICogVGhlIE1pY3Jvc29mdCBDUlQgZG9lc24ndCBwcm92aWRlIGFuIG9mZmljaWFsIHdheSB0byBjaGVjayBmb3IgdGhlCi0gKiB2YWxpZGl0eSBvZiBhIGZpbGUgZGVzY3JpcHRvciwgYnV0IHdlIGNhbiBlbXVsYXRlIGl0cyBpbnRlcm5hbCBiZWhhdmlvdXIKLSAqIGJ5IHVzaW5nIHRoZSBleHBvcnRlZCBfX3BpbmZvIGRhdGEgbWVtYmVyIGFuZCBrbm93bGVkZ2Ugb2YgdGhlCi0gKiBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGludm9sdmVkLgotICogVGhlIHN0cnVjdHVyZXMgYmVsb3cgbXVzdCBiZSB1cGRhdGVkIGZvciBlYWNoIHZlcnNpb24gb2YgdmlzdWFsIHN0dWRpbwotICogYWNjb3JkaW5nIHRvIHRoZSBmaWxlIGludGVybmFsLmggaW4gdGhlIENSVCBzb3VyY2UsIHVudGlsIE1TIGNvbWVzCi0gKiB1cCB3aXRoIGEgbGVzcyBoYWNreSB3YXkgdG8gZG8gdGhpcy4KLSAqIChhbGwgb2YgdGhpcyBpcyB0byBhdm9pZCBnbG9iYWxseSBtb2RpZnlpbmcgdGhlIENSVCBiZWhhdmlvdXIgdXNpbmcKLSAqIF9zZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcigpIGFuZCBfQ3J0U2V0UmVwb3J0TW9kZSgpKQotICovCi0vKiBUaGUgYWN0dWFsIHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpcyBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUuCi0gKiBPbmx5IHRoZSBmaXJzdCBpdGVtcyBtdXN0IGJlIHByZXNlbnQuCi0gKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBpbnRwdHJfdCBvc2ZobmQ7Ci0gICAgY2hhciBvc2ZpbGU7Ci19IG15X2lvaW5mbzsKLQotZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyICogX19waW9pbmZvW107Ci0jZGVmaW5lIElPSU5GT19MMkUgNQotI2RlZmluZSBJT0lORk9fQVJSQVlTIDY0Ci0jZGVmaW5lIElPSU5GT19BUlJBWV9FTFRTICAgKDEgPDwgSU9JTkZPX0wyRSkKLSNkZWZpbmUgX05IQU5ETEVfICAgICAgICAgICAoSU9JTkZPX0FSUkFZUyAqIElPSU5GT19BUlJBWV9FTFRTKQotI2RlZmluZSBGT1BFTiAweDAxCi0jZGVmaW5lIF9OT19DT05TT0xFX0ZJTEVOTyAoaW50cHRyX3QpLTIKLQotLyogVGhpcyBmdW5jdGlvbiBlbXVsYXRlcyB3aGF0IHRoZSB3aW5kb3dzIENSVCBkb2VzIHRvIHZhbGlkYXRlIGZpbGUgaGFuZGxlcyAqLwotaW50Ci1fUHlWZXJpZnlfZmQoaW50IGZkKQotewotICAgIGNvbnN0IGludCBpMSA9IGZkID4+IElPSU5GT19MMkU7Ci0gICAgY29uc3QgaW50IGkyID0gZmQgJiAoKDEgPDwgSU9JTkZPX0wyRSkgLSAxKTsKLQotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZW9mX2lvaW5mbyA9IDA7Ci0KLSAgICAvKiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBpb2luZm8gc3RydWN0dXJlLAotICAgICAqIGFzIHVzZWQgYnkgdGhlIENSVCBsb2FkZWQgaW4gbWVtb3J5Ci0gICAgICovCi0gICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCAmJiBfX3Bpb2luZm9bMF0gIT0gTlVMTCkgewotICAgICAgICBzaXplb2ZfaW9pbmZvID0gX21zaXplKF9fcGlvaW5mb1swXSkgLyBJT0lORk9fQVJSQVlfRUxUUzsKLSAgICB9Ci0gICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCkgewotICAgICAgICAvKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLi4uICovCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICB9Ci0KLSAgICAvKiBTZWUgdGhhdCBpdCBpc24ndCBhIHNwZWNpYWwgQ0xFQVIgZmlsZW5vICovCi0gICAgaWYgKGZkICE9IF9OT19DT05TT0xFX0ZJTEVOTykgewotICAgICAgICAvKiBNaWNyb3NvZnQgQ1JUIHdvdWxkIGNoZWNrIHRoYXQgMDw9ZmQ8X25oYW5kbGUgYnV0IHdlIGNhbid0IGRvIHRoYXQuICBJbnN0ZWFkCi0gICAgICAgICAqIHdlIGNoZWNrIHBvaW50ZXIgdmFsaWRpdHkgYW5kIG90aGVyIGluZm8KLSAgICAgICAgICovCi0gICAgICAgIGlmICgwIDw9IGkxICYmIGkxIDwgSU9JTkZPX0FSUkFZUyAmJiBfX3Bpb2luZm9baTFdICE9IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIGZpbmFsbHksIGNoZWNrIHRoYXQgdGhlIGZpbGUgaXMgb3BlbiAqLwotICAgICAgICAgICAgbXlfaW9pbmZvKiBpbmZvID0gKG15X2lvaW5mbyopKF9fcGlvaW5mb1tpMV0gKyBpMiAqIHNpemVvZl9pb2luZm8pOwotICAgICAgICAgICAgaWYgKGluZm8tPm9zZmlsZSAmIEZPUEVOKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gIGZhaWw6Ci0gICAgZXJybm8gPSBFQkFERjsKLSAgICByZXR1cm4gMDsKLX0KLQotI2VuZGlmIC8qIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKaW5kZXggNjE3ZDU4Yi4uYTJjMmIzNiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKKysrIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKQEAgLTMyLDE0ICszMiwyMCBAQAogewogICAgIGlmIChwcmVzZW50YXRpb25fdHlwZSA+IDMyICYmIHByZXNlbnRhdGlvbl90eXBlIDwgMTI4KQogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnJWMnLiIsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIG9yICdfJyB3aXRoICclYycuIiwKICAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlKTsKICAgICBlbHNlCiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICdcXHgleCcuIiwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgb3IgJ18nIHdpdGggJ1xceCV4Jy4iLAogICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClwcmVzZW50YXRpb25fdHlwZSk7CiB9CiAKK3N0YXRpYyB2b2lkCitpbnZhbGlkX2NvbW1hX2FuZF91bmRlcnNjb3JlKHZvaWQpCit7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJDYW5ub3Qgc3BlY2lmeSBib3RoICcsJyBhbmQgJ18nLiIpOworfQorCiAvKgogICAgIGdldF9pbnRlZ2VyIGNvbnN1bWVzIDAgb3IgbW9yZSBkZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcnMgZnJvbSBhbgogICAgIGlucHV0IHN0cmluZywgdXBkYXRlcyAqcmVzdWx0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpdmUKQEAgLTQ4LDE2ICs1NCwxNyBAQAogICAgIHJldHVybnMgLTEgb24gZXJyb3IuCiAqLwogc3RhdGljIGludAotZ2V0X2ludGVnZXIoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCAqcG9zLCBQeV9zc2l6ZV90IGVuZCwKK2dldF9pbnRlZ2VyKFB5T2JqZWN0ICpzdHIsIFB5X3NzaXplX3QgKnBwb3MsIFB5X3NzaXplX3QgZW5kLAogICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqcmVzdWx0KQogewotICAgIFB5X3NzaXplX3QgYWNjdW11bGF0b3IsIGRpZ2l0dmFsOworICAgIFB5X3NzaXplX3QgYWNjdW11bGF0b3IsIGRpZ2l0dmFsLCBwb3MgPSAqcHBvczsKICAgICBpbnQgbnVtZGlnaXRzOworICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKwogICAgIGFjY3VtdWxhdG9yID0gbnVtZGlnaXRzID0gMDsKLSAgICBmb3IgKDs7KCpwb3MpKyssIG51bWRpZ2l0cysrKSB7Ci0gICAgICAgIGlmICgqcG9zID49IGVuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkaWdpdHZhbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLCAqcG9zKSk7CisgICAgZm9yICg7IHBvcyA8IGVuZDsgcG9zKyssIG51bWRpZ2l0cysrKSB7CisgICAgICAgIGRpZ2l0dmFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKSk7CiAgICAgICAgIGlmIChkaWdpdHZhbCA8IDApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgLyoKQEAgLTY5LDEwICs3NiwxMiBAQAogICAgICAgICBpZiAoYWNjdW11bGF0b3IgPiAoUFlfU1NJWkVfVF9NQVggLSBkaWdpdHZhbCkgLyAxMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGRlY2ltYWwgZGlnaXRzIGluIGZvcm1hdCBzdHJpbmciKTsKKyAgICAgICAgICAgICpwcG9zID0gcG9zOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGFjY3VtdWxhdG9yID0gYWNjdW11bGF0b3IgKiAxMCArIGRpZ2l0dmFsOwogICAgIH0KKyAgICAqcHBvcyA9IHBvczsKICAgICAqcmVzdWx0ID0gYWNjdW11bGF0b3I7CiAgICAgcmV0dXJuIG51bWRpZ2l0czsKIH0KQEAgLTEwNSw2ICsxMTQsMTQgQEAKICAgICB9CiB9CiAKKy8qIExvY2FsZSB0eXBlIGNvZGVzLiBMVF9OT19MT0NBTEUgbXVzdCBiZSB6ZXJvLiAqLworZW51bSBMb2NhbGVUeXBlIHsKKyAgICBMVF9OT19MT0NBTEUgPSAwLAorICAgIExUX0RFRkFVTFRfTE9DQUxFLAorICAgIExUX1VOREVSU0NPUkVfTE9DQUxFLAorICAgIExUX1VOREVSX0ZPVVJfTE9DQUxFLAorICAgIExUX0NVUlJFTlRfTE9DQUxFCit9OwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlfVUNTNCBmaWxsX2NoYXI7CkBAIC0xMTIsNyArMTI5LDcgQEAKICAgICBpbnQgYWx0ZXJuYXRlOwogICAgIFB5X1VDUzQgc2lnbjsKICAgICBQeV9zc2l6ZV90IHdpZHRoOwotICAgIGludCB0aG91c2FuZHNfc2VwYXJhdG9yczsKKyAgICBlbnVtIExvY2FsZVR5cGUgdGhvdXNhbmRzX3NlcGFyYXRvcnM7CiAgICAgUHlfc3NpemVfdCBwcmVjaXNpb247CiAgICAgUHlfVUNTNCB0eXBlOwogfSBJbnRlcm5hbEZvcm1hdFNwZWM7CkBAIC0xNTAsOSArMTY3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkZWZhdWx0X2FsaWduKQogewogICAgIFB5X3NzaXplX3QgcG9zID0gc3RhcnQ7CisgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChmb3JtYXRfc3BlYyk7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKGZvcm1hdF9zcGVjKTsKICAgICAvKiBlbmQtcG9zIGlzIHVzZWQgdGhyb3VnaG91dCB0aGlzIGNvZGUgdG8gc3BlY2lmeSB0aGUgbGVuZ3RoIG9mCiAgICAgICAgdGhlIGlucHV0IHN0cmluZyAqLwotI2RlZmluZSBSRUFEX3NwZWMoaW5kZXgpIFB5VW5pY29kZV9SRUFEX0NIQVIoZm9ybWF0X3NwZWMsIGluZGV4KQorI2RlZmluZSBSRUFEX3NwZWMoaW5kZXgpIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGluZGV4KQogCiAgICAgUHlfc3NpemVfdCBjb25zdW1lZDsKICAgICBpbnQgYWxpZ25fc3BlY2lmaWVkID0gMDsKQEAgLTE2Myw3ICsxODIsNyBAQAogICAgIGZvcm1hdC0+YWx0ZXJuYXRlID0gMDsKICAgICBmb3JtYXQtPnNpZ24gPSAnXDAnOwogICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKLSAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMDsKKyAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gTFRfTk9fTE9DQUxFOwogICAgIGZvcm1hdC0+cHJlY2lzaW9uID0gLTE7CiAgICAgZm9ybWF0LT50eXBlID0gZGVmYXVsdF90eXBlOwogCkBAIC0yMTgsOSArMjM3LDIyIEBACiAKICAgICAvKiBDb21tYSBzaWduaWZpZXMgYWRkIHRob3VzYW5kcyBzZXBhcmF0b3JzICovCiAgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJywnKSB7Ci0gICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAxOworICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gTFRfREVGQVVMVF9MT0NBTEU7CiAgICAgICAgICsrcG9zOwogICAgIH0KKyAgICAvKiBVbmRlcnNjb3JlIHNpZ25pZmllcyBhZGQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgKi8KKyAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnXycpIHsKKyAgICAgICAgaWYgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgIT0gTFRfTk9fTE9DQUxFKSB7CisgICAgICAgICAgICBpbnZhbGlkX2NvbW1hX2FuZF91bmRlcnNjb3JlKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gTFRfVU5ERVJTQ09SRV9MT0NBTEU7CisgICAgICAgICsrcG9zOworICAgIH0KKyAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLCcpIHsKKyAgICAgICAgaW52YWxpZF9jb21tYV9hbmRfdW5kZXJzY29yZSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICAvKiBQYXJzZSBmaWVsZCBwcmVjaXNpb24gKi8KICAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLicpIHsKQEAgLTI3MCw2ICszMDIsMTYgQEAKICAgICAgICAgY2FzZSAnXDAnOgogICAgICAgICAgICAgLyogVGhlc2UgYXJlIGFsbG93ZWQuIFNlZSBQRVAgMzc4LiovCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgIGNhc2UgJ28nOgorICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAvKiBVbmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBpbiBiaW4vb2N0L2hleC4gU2VlIFBFUCA1MTUuICovCisgICAgICAgICAgICBpZiAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9PSBMVF9VTkRFUlNDT1JFX0xPQ0FMRSkgeworICAgICAgICAgICAgICAgIC8qIEV2ZXJ5IGZvdXIgZGlnaXRzLCBub3QgZXZlcnkgdGhyZWUsIGluIGJpbi9vY3QvaGV4LiAqLworICAgICAgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9VTkRFUl9GT1VSX0xPQ0FMRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGludmFsaWRfY29tbWFfdHlwZShmb3JtYXQtPnR5cGUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNDYsMTMgKzM4OCw2IEBACiAvKioqKioqKioqKiogY29tbW9uIHJvdXRpbmVzIGZvciBudW1lcmljIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyogTG9jYWxlIHR5cGUgY29kZXMuICovCi1lbnVtIExvY2FsZVR5cGUgewotICAgIExUX0NVUlJFTlRfTE9DQUxFLAotICAgIExUX0RFRkFVTFRfTE9DQUxFLAotICAgIExUX05PX0xPQ0FMRQotfTsKLQogLyogTG9jYWxlIGluZm8gbmVlZGVkIGZvciBmb3JtYXR0aW5nIGludGVnZXJzIGFuZCB0aGUgcGFydCBvZiBmbG9hdHMKICAgIGJlZm9yZSBhbmQgaW5jbHVkaW5nIHRoZSBkZWNpbWFsLiBOb3RlIHRoYXQgbG9jYWxlcyBvbmx5IHN1cHBvcnQKICAgIDgtYml0IGNoYXJzLCBub3QgdW5pY29kZS4gKi8KQEAgLTQwNCwxMyArNDM5LDE1IEBACiAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbl9yZW1haW5kZXIsIGludCAqaGFzX2RlY2ltYWwpCiB7CiAgICAgUHlfc3NpemVfdCByZW1haW5kZXI7CisgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzKTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEocyk7CiAKLSAgICB3aGlsZSAocG9zPGVuZCAmJiBQeV9JU0RJR0lUKFB5VW5pY29kZV9SRUFEX0NIQVIocywgcG9zKSkpCisgICAgd2hpbGUgKHBvczxlbmQgJiYgUHlfSVNESUdJVChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpKSkKICAgICAgICAgKytwb3M7CiAgICAgcmVtYWluZGVyID0gcG9zOwogCiAgICAgLyogRG9lcyByZW1haW5kZXIgc3RhcnQgd2l0aCBhIGRlY2ltYWwgcG9pbnQ/ICovCi0gICAgKmhhc19kZWNpbWFsID0gcG9zPGVuZCAmJiBQeVVuaWNvZGVfUkVBRF9DSEFSKHMsIHJlbWFpbmRlcikgPT0gJy4nOworICAgICpoYXNfZGVjaW1hbCA9IHBvczxlbmQgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcmVtYWluZGVyKSA9PSAnLic7CiAKICAgICAvKiBTa2lwIHRoZSBkZWNpbWFsIHBvaW50LiAqLwogICAgIGlmICgqaGFzX2RlY2ltYWwpCkBAIC02NTgsMTIgKzY5NSwxMiBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgY2hhciBub19ncm91cGluZ1sxXSA9IHtDSEFSX01BWH07CitzdGF0aWMgY29uc3QgY2hhciBub19ncm91cGluZ1sxXSA9IHtDSEFSX01BWH07CiAKIC8qIEZpbmQgdGhlIGRlY2ltYWwgcG9pbnQgY2hhcmFjdGVyKHM/KSwgdGhvdXNhbmRzX3NlcGFyYXRvcihzPyksIGFuZAogICAgZ3JvdXBpbmcgZGVzY3JpcHRpb24sIGVpdGhlciBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIGlmIHR5cGUgaXMKLSAgIExUX0NVUlJFTlRfTE9DQUxFLCBhIGhhcmQtY29kZWQgbG9jYWxlIGlmIExUX0RFRkFVTFRfTE9DQUxFLCBvcgotICAgbm9uZSBpZiBMVF9OT19MT0NBTEUuICovCisgICBMVF9DVVJSRU5UX0xPQ0FMRSwgYSBoYXJkLWNvZGVkIGxvY2FsZSBpZiBMVF9ERUZBVUxUX0xPQ0FMRSBvcgorICAgTFRfVU5ERVJTQ09SRV9MT0NBTEUvTFRfVU5ERVJfRk9VUl9MT0NBTEUsIG9yIG5vbmUgaWYgTFRfTk9fTE9DQUxFLiAqLwogc3RhdGljIGludAogZ2V0X2xvY2FsZV9pbmZvKGVudW0gTG9jYWxlVHlwZSB0eXBlLCBMb2NhbGVJbmZvICpsb2NhbGVfaW5mbykKIHsKQEAgLTY4NCwxMyArNzIxLDE5IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIExUX0RFRkFVTFRfTE9DQUxFOgorICAgIGNhc2UgTFRfVU5ERVJTQ09SRV9MT0NBTEU6CisgICAgY2FzZSBMVF9VTkRFUl9GT1VSX0xPQ0FMRToKICAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJy4nKTsKLSAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJywnKTsKKyAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoCisgICAgICAgICAgICB0eXBlID09IExUX0RFRkFVTFRfTE9DQUxFID8gJywnIDogJ18nKTsKICAgICAgICAgaWYgKCFsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCB8fCAhbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXApCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcMyI7IC8qIEdyb3VwIGV2ZXJ5IDMgY2hhcmFjdGVycy4gIFRoZQorICAgICAgICBpZiAodHlwZSAhPSBMVF9VTkRFUl9GT1VSX0xPQ0FMRSkKKyAgICAgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcMyI7IC8qIEdyb3VwIGV2ZXJ5IDMgY2hhcmFjdGVycy4gIFRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1wbGljaXQpIHRyYWlsaW5nIDAgbWVhbnMgcmVwZWF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZmluaXRlbHkuICovCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcNCI7IC8qIEJpbi9vY3QvaGV4IGdyb3VwIGV2ZXJ5IGZvdXIuICovCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTFRfTk9fTE9DQUxFOgogICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLicpOwpAQCAtOTM3LDkgKzk4MCw3IEBACiAKICAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCiAgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQogICAgICAgICBnb3RvIGRvbmU7CiAKQEAgLTEwODQsOSArMTEyNSw3IEBACiAKICAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCiAgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQogICAgICAgICBnb3RvIGRvbmU7CiAKQEAgLTEyNjIsOSArMTMwMSw3IEBACiAKICAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCiAgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQogICAgICAgICBnb3RvIGRvbmU7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9mcm96ZW4uYyBiL1B5dGhvbi9mcm96ZW4uYwppbmRleCA2NzZmMzk1Li43ZTA0ZjNjIDEwMDY0NAotLS0gYS9QeXRob24vZnJvemVuLmMKKysrIGIvUHl0aG9uL2Zyb3plbi5jCkBAIC0xNCwxNyArMTQsMTUgQEAKICAgIHRoZSBhcHByb3ByaWF0ZSBieXRlcyBmcm9tIE1fX19tYWluX18uYy4gKi8KIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgTV9fX2hlbGxvX19bXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwyMCwwLDAsMCwxMDAsMiwwLDkwLDEsMCwKLSAgICAxMDEsMiwwLDEwMCwwLDAsMTMxLDEsMCwxLDEwMCwxLDAsODMsNDAsMywKLSAgICAwLDAsMCwxMTcsMTIsMCwwLDAsNzIsMTAxLDEwOCwxMDgsMTExLDMyLDExOSwxMTEsCi0gICAgMTE0LDEwOCwxMDAsMzMsNzgsODQsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCwKLSAgICA4NCwxMTQsMTE3LDEwMSwxMTcsMTEsMCwwLDAsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsCi0gICAgMTA1LDEyMiwxMDEsMTAwLDExNyw1LDAsMCwwLDExMiwxMTQsMTA1LDExMCwxMTYsNDAsMCwKLSAgICAwLDAsMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDcsMCwKLSAgICAwLDAsMTAyLDEwOCw5NywxMDMsNDYsMTEyLDEyMSwxMTcsOCwwLDAsMCw2MCwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw2MiwxLDAsMCwwLDExNSwyLDAsMCwwLDYsCi0gICAgMSwKKyAgICAyMjcsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDAsOTAsMCwxMDEsMSwKKyAgICAxMDAsMSwxMzEsMSwxLDAsMTAwLDIsODMsMCw0MSwzLDg0LDEyMiwxMiw3MiwKKyAgICAxMDEsMTA4LDEwOCwxMTEsMzIsMTE5LDExMSwxMTQsMTA4LDEwMCwzMyw3OCw0MSwyLDIxOCwxMSwKKyAgICAxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMjE4LDUsMTEyLDExNCwxMDUsCisgICAgMTEwLDExNiwxNjksMCwxMTQsMywwLDAsMCwxMTQsMywwLDAsMCwyNTAsMjIsCisgICAgNDYsNDcsODQsMTExLDExMSwxMDgsMTE1LDQ3LDEwMiwxMTQsMTAxLDEwMSwxMjIsMTAxLDQ3LDEwMiwKKyAgICAxMDgsOTcsMTAzLDQ2LDExMiwxMjEsMjE4LDgsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsCisgICAgMSwwLDAsMCwxMTUsMiwwLDAsMCw0LDEsCiB9OwogCiAjZGVmaW5lIFNJWkUgKGludClzaXplb2YoTV9fX2hlbGxvX18pCmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVubWFpbi5jIGIvUHl0aG9uL2Zyb3plbm1haW4uYwppbmRleCBkZThiZDM1Li43NjliMzNkIDEwMDY0NAotLS0gYS9QeXRob24vZnJvemVubWFpbi5jCisrKyBiL1B5dGhvbi9mcm96ZW5tYWluLmMKQEAgLTk5LDcgKzk5LDkgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlXaW5GcmVlemVfRXhlVGVybSgpOwogI2VuZGlmCi0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICBzdHMgPSAxMjA7CisgICAgfQogCiBlcnJvcjoKICAgICBQeU1lbV9SYXdGcmVlKGFyZ3ZfY29weSk7CmRpZmYgLS1naXQgYS9QeXRob24vZnV0dXJlLmMgYi9QeXRob24vZnV0dXJlLmMKaW5kZXggMTYzZjg3Zi4uNzVmMjEwNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2Z1dHVyZS5jCisrKyBiL1B5dGhvbi9mdXR1cmUuYwpAQCAtNzksNyArNzksMTAgQEAKIAogICAgIGkgPSAwOwogICAgIGZpcnN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKG1vZC0+di5Nb2R1bGUuYm9keSwgaSk7Ci0gICAgaWYgKGZpcnN0LT5raW5kID09IEV4cHJfa2luZCAmJiBmaXJzdC0+di5FeHByLnZhbHVlLT5raW5kID09IFN0cl9raW5kKQorICAgIGlmIChmaXJzdC0+a2luZCA9PSBFeHByX2tpbmQKKyAgICAgICAgJiYgKGZpcnN0LT52LkV4cHIudmFsdWUtPmtpbmQgPT0gU3RyX2tpbmQKKyAgICAgICAgICAgIHx8IChmaXJzdC0+di5FeHByLnZhbHVlLT5raW5kID09IENvbnN0YW50X2tpbmQKKyAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChmaXJzdC0+di5FeHByLnZhbHVlLT52LkNvbnN0YW50LnZhbHVlKSkpKQogICAgICAgICBpKys7CiAKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGFyZ3MuYyBiL1B5dGhvbi9nZXRhcmdzLmMKaW5kZXggOGFhYjA2Ny4uODdhNWQyNiAxMDA2NDQKLS0tIGEvUHl0aG9uL2dldGFyZ3MuYworKysgYi9QeXRob24vZ2V0YXJncy5jCkBAIC0xOCwxNiArMTgsMjggQEAKIGludCBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNoYXIgKiosIHZhX2xpc3QpOwogCitpbnQgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgLi4uKTsKK2ludCBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QpOworCiAjaWZkZWYgSEFWRV9ERUNMU1BFQ19ETEwKIC8qIEV4cG9ydCBmdW5jdGlvbnMgKi8KLVB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VfU2l6ZVQoUHlPYmplY3QgKiwgY2hhciAqLCAuLi4pOwotUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICosIGNoYXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VfU2l6ZVQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVN0YWNrX1NpemVUKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIC4uLik7CiBQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNoYXIgKiosIC4uLik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9CdWlsZFZhbHVlX1NpemVUKGNvbnN0IGNoYXIgKiwgLi4uKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZV9TaXplVChQeU9iamVjdCAqLCBjaGFyICosIHZhX2xpc3QpOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CiBQeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0KTsKKworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCB2YV9saXN0KTsKICNlbmRpZgogCiAjZGVmaW5lIEZMQUdfQ09NUEFUIDEKQEAgLTU2LDE4ICs2OCwyNCBAQAogLyogRm9yd2FyZCAqLwogc3RhdGljIGludCB2Z2V0YXJnczEoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0ICosIGludCk7CiBzdGF0aWMgdm9pZCBzZXRlcnJvcihQeV9zc2l6ZV90LCBjb25zdCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci1zdGF0aWMgY2hhciAqY29udmVydGl0ZW0oUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGludCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOwotc3RhdGljIGNoYXIgKmNvbnZlcnR0dXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIGZyZWVsaXN0X3QgKik7Ci1zdGF0aWMgY2hhciAqY29udmVydHNpbXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCBmcmVlbGlzdF90ICopOwotc3RhdGljIFB5X3NzaXplX3QgY29udmVydGJ1ZmZlcihQeU9iamVjdCAqLCB2b2lkICoqcCwgY2hhciAqKik7Ci1zdGF0aWMgaW50IGdldGJ1ZmZlcihQeU9iamVjdCAqLCBQeV9idWZmZXIgKiwgY2hhcioqKTsKK3N0YXRpYyBjb25zdCBjaGFyICpjb252ZXJ0aXRlbShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgaW50ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIGZyZWVsaXN0X3QgKik7CitzdGF0aWMgY29uc3QgY2hhciAqY29udmVydHR1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiwgY2hhciAqLCBzaXplX3QsIGludCwgZnJlZWxpc3RfdCAqKTsKK3N0YXRpYyBjb25zdCBjaGFyICpjb252ZXJ0c2ltcGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIGZyZWVsaXN0X3QgKik7CitzdGF0aWMgUHlfc3NpemVfdCBjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICosIHZvaWQgKipwLCBjb25zdCBjaGFyICoqKTsKK3N0YXRpYyBpbnQgZ2V0YnVmZmVyKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqLCBjb25zdCBjaGFyKiopOwogCiBzdGF0aWMgaW50IHZnZXRhcmdza2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNoYXIgKiosIHZhX2xpc3QgKiwgaW50KTsKLXN0YXRpYyBjaGFyICpza2lwaXRlbShjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCk7CitzdGF0aWMgaW50IHZnZXRhcmdza2V5d29yZHNmYXN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgdmFfbGlzdCAqLCBpbnQpOworc3RhdGljIGludCB2Z2V0YXJnc2tleXdvcmRzZmFzdF9pbXBsKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleXdvcmRzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzKTsKK3N0YXRpYyBjb25zdCBjaGFyICpza2lwaXRlbShjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCk7CiAKIGludAogUHlBcmdfUGFyc2UoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQpAQCAtODIsNyArMTAwLDcgQEAKIH0KIAogaW50Ci1fUHlBcmdfUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgLi4uKQorX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICBpbnQgcmV0dmFsOwogICAgIHZhX2xpc3QgdmE7CkBAIC0xMDcsNyArMTI1LDcgQEAKIH0KIAogaW50Ci1fUHlBcmdfUGFyc2VUdXBsZV9TaXplVChQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCAuLi4pCitfUHlBcmdfUGFyc2VUdXBsZV9TaXplVChQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgaW50IHJldHZhbDsKICAgICB2YV9saXN0IHZhOwpAQCAtMTMwLDcgKzE0OCw3IEBACiB9CiAKIGludAotX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSkKK19QeUFyZ19WYVBhcnNlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEpCiB7CiAgICAgdmFfbGlzdCBsdmE7CiAKQEAgLTIwOCw3ICsyMjYsNyBAQAogICAgIGludCBlbmRmbXQgPSAwOwogICAgIGNvbnN0IGNoYXIgKmZvcm1hdHNhdmUgPSBmb3JtYXQ7CiAgICAgUHlfc3NpemVfdCBpLCBsZW47Ci0gICAgY2hhciAqbXNnOworICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICBpbnQgY29tcGF0ID0gZmxhZ3MgJiBGTEFHX0NPTVBBVDsKICAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOwogICAgIGZyZWVsaXN0X3QgZnJlZWxpc3Q7CkBAIC0zOTQsNyArNDEyLDEyIEBACiAgICAgICAgIFB5T1Nfc25wcmludGYocCwgc2l6ZW9mKGJ1ZikgLSAocCAtIGJ1ZiksICIgJS4yNTZzIiwgbXNnKTsKICAgICAgICAgbWVzc2FnZSA9IGJ1ZjsKICAgICB9Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7CisgICAgaWYgKG1zZ1swXSA9PSAnKCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCBtZXNzYWdlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc3NhZ2UpOworICAgIH0KIH0KIAogCkBAIC00MTYsNyArNDM5LDcgQEAKICAgICAgIGFuZCBtc2didWYgaXMgcmV0dXJuZWQuCiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0dHVwbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgaW50ICpsZXZlbHMsIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGludCB0b3BsZXZlbCwKICAgICAgICAgICAgICBmcmVlbGlzdF90ICpmcmVlbGlzdCkKQEAgLTQ3NCw3ICs0OTcsNyBAQAogCiAgICAgZm9ybWF0ID0gKnBfZm9ybWF0OwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgY2hhciAqbXNnOworICAgICAgICBjb25zdCBjaGFyICptc2c7CiAgICAgICAgIFB5T2JqZWN0ICppdGVtOwogICAgICAgICBpdGVtID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGFyZywgaSk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKQEAgLTUwMSwxMSArNTI0LDExIEBACiAKIC8qIENvbnZlcnQgYSBzaW5nbGUgaXRlbS4gKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydGl0ZW0oUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7Ci0gICAgY2hhciAqbXNnOworICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CiAKICAgICBpZiAoKmZvcm1hdCA9PSAnKCcgLyogJyknICovKSB7CkBAIC01MzAsNyArNTUzLDcgQEAKIAogLyogRm9ybWF0IGFuIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGNvbnZlcnRzaW1wbGUoKS4gKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydGVycihjb25zdCBjaGFyICpleHBlY3RlZCwgUHlPYmplY3QgKmFyZywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSkKIHsKICAgICBhc3NlcnQoZXhwZWN0ZWQgIT0gTlVMTCk7CkBAIC01NzIsNyArNTk1LDcgQEAKICAgIFdoZW4geW91IGFkZCBuZXcgZm9ybWF0IGNvZGVzLCBwbGVhc2UgZG9uJ3QgZm9yZ2V0IHBvb3Igc2tpcGl0ZW0oKSBiZWxvdy4KICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIGNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQogewpAQCAtNzUyLDE0ICs3NzUsMTMgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdMJzogey8qIFBZX0xPTkdfTE9ORyAqLwotICAgICAgICBQWV9MT05HX0xPTkcgKnAgPSB2YV9hcmcoICpwX3ZhLCBQWV9MT05HX0xPTkcgKiApOwotICAgICAgICBQWV9MT05HX0xPTkcgaXZhbDsKKyAgICBjYXNlICdMJzogey8qIGxvbmcgbG9uZyAqLworICAgICAgICBsb25nIGxvbmcgKnAgPSB2YV9hcmcoICpwX3ZhLCBsb25nIGxvbmcgKiApOworICAgICAgICBsb25nIGxvbmcgaXZhbDsKICAgICAgICAgaWYgKGZsb2F0X2FyZ3VtZW50X2Vycm9yKGFyZykpCiAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICBpdmFsID0gUHlMb25nX0FzTG9uZ0xvbmcoYXJnKTsKLSAgICAgICAgaWYgKGl2YWwgPT0gKFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoaXZhbCA9PSAobG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqcCA9IGl2YWw7CkBAIC03NjcsOCArNzg5LDggQEAKICAgICB9CiAKICAgICBjYXNlICdLJzogeyAvKiBsb25nIGxvbmcgc2l6ZWQgYml0ZmllbGQgKi8KLSAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HICpwID0gdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKik7Ci0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpdmFsOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKnAgPSB2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIGxvbmcgbG9uZyAqKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGl2YWw7CiAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkKICAgICAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhhcmcpOwogICAgICAgICBlbHNlCkBAIC03NzYsNyArNzk4LDYgQEAKICAgICAgICAgKnAgPSBpdmFsOwogICAgICAgICBicmVhazsKICAgICB9Ci0jZW5kaWYKIAogICAgIGNhc2UgJ2YnOiB7LyogZmxvYXQgKi8KICAgICAgICAgZmxvYXQgKnAgPSB2YV9hcmcoKnBfdmEsIGZsb2F0ICopOwpAQCAtODU3LDcgKzg3OCw3IEBACiAKICAgICBjYXNlICd5Jzogey8qIGFueSBieXRlcy1saWtlIG9iamVjdCAqLwogICAgICAgICB2b2lkICoqcCA9ICh2b2lkICoqKXZhX2FyZygqcF92YSwgY2hhciAqKik7Ci0gICAgICAgIGNoYXIgKmJ1ZjsKKyAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICBQeV9zc2l6ZV90IGNvdW50OwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnKicpIHsKICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCAoUHlfYnVmZmVyKilwLCAmYnVmKSA8IDApCkBAIC05MDQsNyArOTI1LDcgQEAKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBhcmcsIHNhcmcsIGxlbiwgMSwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogYW55IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCi0gICAgICAgICAgICAgICAgY2hhciAqYnVmOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICBpZiAoZ2V0YnVmZmVyKGFyZywgcCwgJmJ1ZikgPCAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihidWYsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIH0KQEAgLTkzNCw3ICs5NTUsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIHJlYWQtb25seSBieXRlcy1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgICAgIC8qIFhYWCBSZWFsbHk/ICovCi0gICAgICAgICAgICAgICAgY2hhciAqYnVmOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50ID0gY29udmVydGJ1ZmZlcihhcmcsIHAsICZidWYpOwogICAgICAgICAgICAgICAgIGlmIChjb3VudCA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTA1MSwzNSArMTA3MiwyNSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoQXNDaGFyQnVmZmVyIGZhaWxlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp1OwotCi0gICAgICAgICAgICAvKiBDb252ZXJ0IG9iamVjdCB0byBVbmljb2RlICovCi0gICAgICAgICAgICB1ID0gUHlVbmljb2RlX0Zyb21PYmplY3QoYXJnKTsKLSAgICAgICAgICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICJzdHJpbmcgb3IgdW5pY29kZSBvciB0ZXh0IGJ1ZmZlciIsCi0gICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewogICAgICAgICAgICAgLyogRW5jb2RlIG9iamVjdDsgdXNlIGRlZmF1bHQgZXJyb3IgaGFuZGxpbmcgKi8KLSAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsCisgICAgICAgICAgICBzID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHUpOwogICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiKGVuY29kaW5nIGZhaWxlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhzKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgIihlbmNvZGVyIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMpIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socykpOwogICAgICAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocyk7CiAgICAgICAgICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzKTsKICAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBwdHIgPSAiIjsKICAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAorICAgICAgICAgICAgICAgIHJlY29kZV9zdHJpbmdzID8gInN0ciIgOiAic3RyLCBieXRlcyBvciBieXRlYXJyYXkiLAorICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIFdyaXRlIG91dHB1dDsgb3V0cHV0IGlzIGd1YXJhbnRlZWQgdG8gYmUgMC10ZXJtaW5hdGVkICovCiAgICAgICAgIGlmICgqZm9ybWF0ID09ICcjJykgewpAQCAtMTEyOSw3ICsxMTQwLDcgQEAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKHNpemUgKyAxID4gQlVGRkVSX0xFTikgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgc3RyaW5nIHRvbyBsb25nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoJXpkLCBtYXhpbXVtIGxlbmd0aCAlemQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KXNpemUsIChQeV9zc2l6ZV90KShCVUZGRVJfTEVOLTEpKTsKQEAgLTEyODMsNyArMTI5NCw3IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1jb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICphcmcsIHZvaWQgKipwLCBjaGFyICoqZXJybXNnKQorY29udmVydGJ1ZmZlcihQeU9iamVjdCAqYXJnLCB2b2lkICoqcCwgY29uc3QgY2hhciAqKmVycm1zZykKIHsKICAgICBQeUJ1ZmZlclByb2NzICpwYiA9IFB5X1RZUEUoYXJnKS0+dHBfYXNfYnVmZmVyOwogICAgIFB5X3NzaXplX3QgY291bnQ7CkBAIC0xMzA1LDcgKzEzMTYsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1nZXRidWZmZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICp2aWV3LCBjaGFyICoqZXJybXNnKQorZ2V0YnVmZmVyKFB5T2JqZWN0ICphcmcsIFB5X2J1ZmZlciAqdmlldywgY29uc3QgY2hhciAqKmVycm1zZykKIHsKICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKSB7CiAgICAgICAgICplcnJtc2cgPSAiYnl0ZXMtbGlrZSBvYmplY3QiOwpAQCAtMTQyMyw2ICsxNDM0LDEzMSBAQAogfQogCiBpbnQKK19QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgLi4uKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIHBhcnNlcik7CisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJnZhLCAwKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgcGFyc2VyKTsKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdChhcmdzLCBrZXl3b3JkcywgcGFyc2VyLCAmdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1BhcnNlU3RhY2soUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGt3bmFtZXMgIT0gTlVMTCAmJiAhUHlUdXBsZV9DaGVjayhrd25hbWVzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIHBhcnNlcik7CisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChhcmdzLCBuYXJncywgTlVMTCwga3duYW1lcywgcGFyc2VyLCAmdmEsIDApOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VTdGFja19TaXplVChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgLi4uKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmICgoa3duYW1lcyAhPSBOVUxMICYmICFQeVR1cGxlX0NoZWNrKGt3bmFtZXMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgcGFyc2VyKTsKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdF9pbXBsKGFyZ3MsIG5hcmdzLCBOVUxMLCBrd25hbWVzLCBwYXJzZXIsICZ2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworCitpbnQKK19QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCB2YV9saXN0IHZhKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCBsdmE7CisKKyAgICBpZiAoKGFyZ3MgPT0gTlVMTCB8fCAhUHlUdXBsZV9DaGVjayhhcmdzKSkgfHwKKyAgICAgICAgKGtleXdvcmRzICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrZXl3b3JkcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdChhcmdzLCBrZXl3b3JkcywgcGFyc2VyLCAmbHZhLCAwKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCB2YV9saXN0IHZhKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCBsdmE7CisKKyAgICBpZiAoKGFyZ3MgPT0gTlVMTCB8fCAhUHlUdXBsZV9DaGVjayhhcmdzKSkgfHwKKyAgICAgICAgKGtleXdvcmRzICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrZXl3b3JkcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdChhcmdzLCBrZXl3b3JkcywgcGFyc2VyLCAmbHZhLCBGTEFHX1NJWkVfVCk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CiBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMoUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpZiAoIVB5RGljdF9DaGVjayhrd2FyZ3MpKSB7CkBAIC0xNDQ4LDcgKzE1ODQsOCBAQAogICAgIGNvbnN0IGNoYXIgKmZuYW1lLCAqbXNnLCAqY3VzdG9tX21zZywgKmtleXdvcmQ7CiAgICAgaW50IG1pbiA9IElOVF9NQVg7CiAgICAgaW50IG1heCA9IElOVF9NQVg7Ci0gICAgaW50IGksIGxlbjsKKyAgICBpbnQgaSwgcG9zLCBsZW47CisgICAgaW50IHNraXAgPSAwOwogICAgIFB5X3NzaXplX3QgbmFyZ3MsIG5rZXl3b3JkczsKICAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CiAgICAgZnJlZWxpc3RlbnRyeV90IHN0YXRpY19lbnRyaWVzW1NUQVRJQ19GUkVFTElTVF9FTlRSSUVTXTsKQEAgLTE0NzYsOSArMTYxMywxNyBAQAogICAgICAgICAgICAgY3VzdG9tX21zZysrOwogICAgIH0KIAorICAgIC8qIHNjYW4ga3dsaXN0IGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzICovCisgICAgZm9yIChwb3MgPSAwOyBrd2xpc3RbcG9zXSAmJiAhKmt3bGlzdFtwb3NdOyBwb3MrKykgeworICAgIH0KICAgICAvKiBzY2FuIGt3bGlzdCBhbmQgZ2V0IGdyZWF0ZXN0IHBvc3NpYmxlIG5iciBvZiBhcmdzICovCi0gICAgZm9yIChsZW49MDsga3dsaXN0W2xlbl07IGxlbisrKQotICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKGxlbiA9IHBvczsga3dsaXN0W2xlbl07IGxlbisrKSB7CisgICAgICAgIGlmICghKmt3bGlzdFtsZW5dKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IGtleXdvcmQgcGFyYW1ldGVyIG5hbWUiKTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKGxlbiA+IFNUQVRJQ19GUkVFTElTVF9FTlRSSUVTKSB7CiAgICAgICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBsZW4pOwpAQCAtMTUwNyw3ICsxNjUyLDcgQEAKICAgICAgICAga2V5d29yZCA9IGt3bGlzdFtpXTsKICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CiAgICAgICAgICAgICBpZiAobWluICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAofCBzcGVjaWZpZWQgdHdpY2UpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CkBAIC0xNTE2LDE0ICsxNjYxLDE0IEBACiAgICAgICAgICAgICBmb3JtYXQrKzsKIAogICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgYmVmb3JlIHwpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CiAgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBzcGVjaWZpZWQgdHdpY2UpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CkBAIC0xNTMxLDYgKzE2NzYsMTcgQEAKICAgICAgICAgICAgIG1heCA9IGk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKIAorICAgICAgICAgICAgaWYgKG1heCA8IHBvcykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyICQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChza2lwKSB7CisgICAgICAgICAgICAgICAgLyogTm93IHdlIGtub3cgdGhlIG1pbmltYWwgYW5kIHRoZSBtYXhpbWFsIG51bWJlcnMgb2YKKyAgICAgICAgICAgICAgICAgKiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhbmQgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgICogaW5mb3JtYXRpdmUgbWVzc2FnZSAoc2VlIGJlbG93KS4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtYXggPCBuYXJncykgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKQEAgLTE1NDEsNjYgKzE2OTcsOTAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSBrZXl3b3JkIGxpc3QgZW50cmllcyAoJWQpIHRoYW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVycyAoJWQpIiwgbGVuLCBpKTsKICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRfYXJnID0gTlVMTDsKLSAgICAgICAgaWYgKG5rZXl3b3JkcykgewotICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrZXl3b3Jkcywga2V5d29yZCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7Ci0gICAgICAgICAgICAtLW5rZXl3b3JkczsKLSAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKLSAgICAgICAgICAgICAgICAvKiBhcmcgcHJlc2VudCBpbiB0dXBsZSBhbmQgaW4gZGljdCAqLwotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgIGlmICghc2tpcCkgeworICAgICAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOworICAgICAgICAgICAgaWYgKG5rZXl3b3JkcyAmJiBpID49IHBvcykgeworICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoa2V5d29yZHMsIGtleXdvcmQpOworICAgICAgICAgICAgICAgIGlmICghY3VycmVudF9hcmcgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKKyAgICAgICAgICAgICAgICAtLW5rZXl3b3JkczsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IG5hcmdzKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGFyZyBwcmVzZW50IGluIHR1cGxlIGFuZCBpbiBkaWN0ICovCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnQgZ2l2ZW4gYnkgbmFtZSAoJyVzJykgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIGN1c3RvbV9tc2cpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpIDwgbWluKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPCBwb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChtaW4gPT0gSU5UX01BWCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAobWF4ID09IElOVF9NQVgpOworICAgICAgICAgICAgICAgICAgICBza2lwID0gMTsKKyAgICAgICAgICAgICAgICAgICAgLyogQXQgdGhhdCBtb21lbnQgd2Ugc3RpbGwgZG9uJ3Qga25vdyB0aGUgbWluaW1hbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICogdGhlIG1heGltYWwgbnVtYmVycyBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIFJhaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICogYW4gZXhjZXB0aW9uIGlzIGRlZmVycmVkIHVudGlsIHdlIGVuY291bnRlciB8IGFuZCAkCisgICAgICAgICAgICAgICAgICAgICAqIG9yIHRoZSBlbmQgb2YgdGhlIGZvcm1hdC4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIChwb3MgJWQpIG5vdCBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGN1cnJlbnQgY29kZSByZXBvcnRzIHN1Y2Nlc3Mgd2hlbiBhbGwgcmVxdWlyZWQgYXJncworICAgICAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCisgICAgICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCFua2V5d29yZHMgJiYgIXNraXApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChua2V5d29yZHMgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwotICAgICAgICBlbHNlIGlmIChpIDwgbmFyZ3MpCi0gICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0KLSAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7Ci0gICAgICAgICAgICBtc2cgPSBjb252ZXJ0aXRlbShjdXJyZW50X2FyZywgJmZvcm1hdCwgcF92YSwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwotICAgICAgICAgICAgaWYgKG1zZykgewotICAgICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIGZuYW1lLCBjdXN0b21fbXNnKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGkgPCBtaW4pIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgKHBvcyAlZCkgbm90IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCi0gICAgICAgICAqIGZ1bGZpbGxlZCBhbmQgbm8ga2V5d29yZCBhcmdzIGxlZnQsIHdpdGggbm8gZnVydGhlcgotICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KLSAgICAgICAgICovCi0gICAgICAgIGlmICghbmtleXdvcmRzKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAKICAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKICAgICAgICAgICoga2V5d29yZCBhcmdzICovCiAgICAgICAgIG1zZyA9IHNraXBpdGVtKCZmb3JtYXQsIHBfdmEsIGZsYWdzKTsKICAgICAgICAgaWYgKG1zZykgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwgIiVzOiAnJXMnIiwgbXNnLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLCAiJXM6ICclcyciLCBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KTsKICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHNraXApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgICIgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAoUHlfTUlOKHBvcywgbWluKSA8IGkpID8gImF0IGxlYXN0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X01JTihwb3MsIG1pbiksIG5hcmdzKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgfQorCiAgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAibW9yZSBhcmd1bWVudCBzcGVjaWZpZXJzIHRoYW4ga2V5d29yZCBsaXN0IGVudHJpZXMgIgogICAgICAgICAgICAgIihyZW1haW5pbmcgZm9ybWF0OiclcycpIiwgZm9ybWF0KTsKICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CkBAIC0xNjE4LDcgKzE3OTgsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksIGt3bGlzdFtpXSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoKmt3bGlzdFtpXSAmJiAhUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCBrd2xpc3RbaV0pKSB7CiAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gMTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTYzNyw3ICsxODE3LDM4OCBAQAogfQogCiAKLXN0YXRpYyBjaGFyICoKKy8qIExpc3Qgb2Ygc3RhdGljIHBhcnNlcnMuICovCitzdGF0aWMgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnN0YXRpY19hcmdfcGFyc2VycyA9IE5VTEw7CisKK3N0YXRpYyBpbnQKK3BhcnNlcl9pbml0KHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIpCit7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICprZXl3b3JkczsKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsICptc2c7CisgICAgaW50IGksIGxlbiwgbWluLCBtYXgsIG5rdzsKKyAgICBQeU9iamVjdCAqa3d0dXBsZTsKKworICAgIGFzc2VydChwYXJzZXItPmZvcm1hdCAhPSBOVUxMKTsKKyAgICBhc3NlcnQocGFyc2VyLT5rZXl3b3JkcyAhPSBOVUxMKTsKKyAgICBpZiAocGFyc2VyLT5rd3R1cGxlICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogZ3JhYiB0aGUgZnVuY3Rpb24gbmFtZSBvciBjdXN0b20gZXJyb3IgbXNnIGZpcnN0IChtdXR1YWxseSBleGNsdXNpdmUpICovCisgICAgcGFyc2VyLT5mbmFtZSA9IHN0cmNocihwYXJzZXItPmZvcm1hdCwgJzonKTsKKyAgICBpZiAocGFyc2VyLT5mbmFtZSkgeworICAgICAgICBwYXJzZXItPmZuYW1lKys7CisgICAgICAgIHBhcnNlci0+Y3VzdG9tX21zZyA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwYXJzZXItPmN1c3RvbV9tc2cgPSBzdHJjaHIocGFyc2VyLT5mb3JtYXQsJzsnKTsKKyAgICAgICAgaWYgKHBhcnNlci0+Y3VzdG9tX21zZykKKyAgICAgICAgICAgIHBhcnNlci0+Y3VzdG9tX21zZysrOworICAgIH0KKworICAgIGtleXdvcmRzID0gcGFyc2VyLT5rZXl3b3JkczsKKyAgICAvKiBzY2FuIGtleXdvcmRzIGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzICovCisgICAgZm9yIChpID0gMDsga2V5d29yZHNbaV0gJiYgISprZXl3b3Jkc1tpXTsgaSsrKSB7CisgICAgfQorICAgIHBhcnNlci0+cG9zID0gaTsKKyAgICAvKiBzY2FuIGtleXdvcmRzIGFuZCBnZXQgZ3JlYXRlc3QgcG9zc2libGUgbmJyIG9mIGFyZ3MgKi8KKyAgICBmb3IgKDsga2V5d29yZHNbaV07IGkrKykgeworICAgICAgICBpZiAoISprZXl3b3Jkc1tpXSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBrZXl3b3JkIHBhcmFtZXRlciBuYW1lIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBsZW4gPSBpOworCisgICAgbWluID0gbWF4ID0gSU5UX01BWDsKKyAgICBmb3JtYXQgPSBwYXJzZXItPmZvcm1hdDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CisgICAgICAgICAgICBpZiAobWluICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKHwgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIGJlZm9yZSB8KSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWluID0gaTsKKyAgICAgICAgICAgIGZvcm1hdCsrOworICAgICAgICB9CisgICAgICAgIGlmICgqZm9ybWF0ID09ICckJykgeworICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIHNwZWNpZmllZCB0d2ljZSkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpIDwgcGFyc2VyLT5wb3MpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBwYXJhbWV0ZXIgbmFtZSBhZnRlciAkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXggPSBpOworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKElTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSBrZXl3b3JkIGxpc3QgZW50cmllcyAoJWQpIHRoYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVycyAoJWQpIiwgbGVuLCBpKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgbXNnID0gc2tpcGl0ZW0oJmZvcm1hdCwgTlVMTCwgMCk7CisgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwgIiVzOiAnJXMnIiwgbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBwYXJzZXItPm1pbiA9IFB5X01JTihtaW4sIGxlbik7CisgICAgcGFyc2VyLT5tYXggPSBQeV9NSU4obWF4LCBsZW4pOworCisgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAibW9yZSBhcmd1bWVudCBzcGVjaWZpZXJzIHRoYW4ga2V5d29yZCBsaXN0IGVudHJpZXMgIgorICAgICAgICAgICAgIihyZW1haW5pbmcgZm9ybWF0OiclcycpIiwgZm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbmt3ID0gbGVuIC0gcGFyc2VyLT5wb3M7CisgICAga3d0dXBsZSA9IFB5VHVwbGVfTmV3KG5rdyk7CisgICAgaWYgKGt3dHVwbGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAga2V5d29yZHMgPSBwYXJzZXItPmtleXdvcmRzICsgcGFyc2VyLT5wb3M7CisgICAgZm9yIChpID0gMDsgaSA8IG5rdzsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhrZXl3b3Jkc1tpXSk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGt3dHVwbGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJnN0cik7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa3d0dXBsZSwgaSwgc3RyKTsKKyAgICB9CisgICAgcGFyc2VyLT5rd3R1cGxlID0ga3d0dXBsZTsKKworICAgIGFzc2VydChwYXJzZXItPm5leHQgPT0gTlVMTCk7CisgICAgcGFyc2VyLT5uZXh0ID0gc3RhdGljX2FyZ19wYXJzZXJzOworICAgIHN0YXRpY19hcmdfcGFyc2VycyA9IHBhcnNlcjsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQKK3BhcnNlcl9jbGVhcihzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyKQoreworICAgIFB5X0NMRUFSKHBhcnNlci0+a3d0dXBsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZpbmRfa2V5d29yZChQeU9iamVjdCAqa3duYW1lcywgUHlPYmplY3QgKiprd3N0YWNrLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3QgaSwgbmt3YXJnczsKKworICAgIG5rd2FyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIGZvciAoaT0wOyBpIDwgbmt3YXJnczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICprd25hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGt3bmFtZXMsIGkpOworCisgICAgICAgIC8qIHB0cj09cHRyIHNob3VsZCBtYXRjaCBpbiBtb3N0IGNhc2VzIHNpbmNlIGtleXdvcmQga2V5cworICAgICAgICAgICBzaG91bGQgYmUgaW50ZXJuZWQgc3RyaW5ncyAqLworICAgICAgICBpZiAoa3duYW1lID09IGtleSkgeworICAgICAgICAgICAgcmV0dXJuIGt3c3RhY2tbaV07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa3duYW1lKSkgeworICAgICAgICAgICAgLyogaWdub3JlIG5vbi1zdHJpbmcga2V5d29yZCBrZXlzOgorICAgICAgICAgICAgICAgYW4gZXJyb3Igd2lsbCBiZSByYWlzZWQgYWJvdmUgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlVbmljb2RlX0VRKGt3bmFtZSwga2V5KSkgeworICAgICAgICAgICAgcmV0dXJuIGt3c3RhY2tbaV07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK3ZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5d29yZHMsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpCit7CisgICAgUHlPYmplY3QgKmt3dHVwbGU7CisgICAgY2hhciBtc2didWZbNTEyXTsKKyAgICBpbnQgbGV2ZWxzWzMyXTsKKyAgICBjb25zdCBjaGFyICpmb3JtYXQ7CisgICAgY29uc3QgY2hhciAqbXNnOworICAgIFB5T2JqZWN0ICprZXl3b3JkOworICAgIGludCBpLCBwb3MsIGxlbjsKKyAgICBQeV9zc2l6ZV90IG5rZXl3b3JkczsKKyAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CisgICAgZnJlZWxpc3RlbnRyeV90IHN0YXRpY19lbnRyaWVzW1NUQVRJQ19GUkVFTElTVF9FTlRSSUVTXTsKKyAgICBmcmVlbGlzdF90IGZyZWVsaXN0OworICAgIFB5T2JqZWN0ICoqa3dzdGFjayA9IE5VTEw7CisKKyAgICBmcmVlbGlzdC5lbnRyaWVzID0gc3RhdGljX2VudHJpZXM7CisgICAgZnJlZWxpc3QuZmlyc3RfYXZhaWxhYmxlID0gMDsKKyAgICBmcmVlbGlzdC5lbnRyaWVzX21hbGxvY2VkID0gMDsKKworICAgIGFzc2VydChrZXl3b3JkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrZXl3b3JkcykpOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVjayhrd25hbWVzKSk7CisgICAgYXNzZXJ0KChrZXl3b3JkcyAhPSBOVUxMIHx8IGt3bmFtZXMgIT0gTlVMTCkKKyAgICAgICAgICAgfHwgKGtleXdvcmRzID09IE5VTEwgJiYga3duYW1lcyA9PSBOVUxMKSk7CisgICAgYXNzZXJ0KHBhcnNlciAhPSBOVUxMKTsKKyAgICBhc3NlcnQocF92YSAhPSBOVUxMKTsKKworICAgIGlmICghcGFyc2VyX2luaXQocGFyc2VyKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBrd3R1cGxlID0gcGFyc2VyLT5rd3R1cGxlOworICAgIHBvcyA9IHBhcnNlci0+cG9zOworICAgIGxlbiA9IHBvcyArIFB5VHVwbGVfR0VUX1NJWkUoa3d0dXBsZSk7CisKKyAgICBpZiAobGVuID4gU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVMpIHsKKyAgICAgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIGxlbik7CisgICAgICAgIGlmIChmcmVlbGlzdC5lbnRyaWVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmcmVlbGlzdC5lbnRyaWVzX21hbGxvY2VkID0gMTsKKyAgICB9CisKKyAgICBpZiAoa2V5d29yZHMgIT0gTlVMTCkgeworICAgICAgICBua2V5d29yZHMgPSBQeURpY3RfU2l6ZShrZXl3b3Jkcyk7CisgICAgfQorICAgIGVsc2UgaWYgKGt3bmFtZXMgIT0gTlVMTCkgeworICAgICAgICBua2V5d29yZHMgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgICAgICBrd3N0YWNrID0gYXJncyArIG5hcmdzOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbmtleXdvcmRzID0gMDsKKyAgICB9CisgICAgaWYgKG5hcmdzICsgbmtleXdvcmRzID4gbGVuKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXMlcyB0YWtlcyBhdCBtb3N0ICVkIGFyZ3VtZW50JXMgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgKHBhcnNlci0+Zm5hbWUgPT0gTlVMTCkgPyAiZnVuY3Rpb24iIDogcGFyc2VyLT5mbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIChwYXJzZXItPmZuYW1lID09IE5VTEwpID8gIiIgOiAiKCkiLAorICAgICAgICAgICAgICAgICAgICAgbGVuLAorICAgICAgICAgICAgICAgICAgICAgKGxlbiA9PSAxKSA/ICIiIDogInMiLAorICAgICAgICAgICAgICAgICAgICAgbmFyZ3MgKyBua2V5d29yZHMpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICB9CisgICAgaWYgKHBhcnNlci0+bWF4IDwgbmFyZ3MpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgIChwYXJzZXItPm1pbiAhPSBJTlRfTUFYKSA/ICJhdCBtb3N0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bWF4LCBuYXJncyk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgIH0KKworICAgIGZvcm1hdCA9IHBhcnNlci0+Zm9ybWF0OworICAgIC8qIGNvbnZlcnQgdHVwbGUgYXJncyBhbmQga2V5d29yZCBhcmdzIGluIHNhbWUgbG9vcCwgdXNpbmcga3d0dXBsZSB0byBkcml2ZSBwcm9jZXNzICovCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGtleXdvcmQgPSAoaSA+PSBwb3MpID8gUHlUdXBsZV9HRVRfSVRFTShrd3R1cGxlLCBpIC0gcG9zKSA6IE5VTEw7CisgICAgICAgIGlmICgqZm9ybWF0ID09ICd8JykgeworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CisgICAgICAgICAgICBmb3JtYXQrKzsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkpOworCisgICAgICAgIGN1cnJlbnRfYXJnID0gTlVMTDsKKyAgICAgICAgaWYgKG5rZXl3b3JkcyAmJiBpID49IHBvcykgeworICAgICAgICAgICAgaWYgKGtleXdvcmRzICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5RGljdF9HZXRJdGVtKGtleXdvcmRzLCBrZXl3b3JkKTsKKyAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRfYXJnICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY3VycmVudF9hcmcgPSBmaW5kX2tleXdvcmQoa3duYW1lcywga3dzdGFjaywga2V5d29yZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7CisgICAgICAgICAgICAtLW5rZXl3b3JkczsKKyAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKKyAgICAgICAgICAgICAgICAvKiBhcmcgcHJlc2VudCBpbiB0dXBsZSBhbmQgaW4gZGljdCAqLworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJVUnKSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoaSA8IG5hcmdzKSB7CisgICAgICAgICAgICBjdXJyZW50X2FyZyA9IGFyZ3NbaV07CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKKyAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKKyAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CisgICAgICAgICAgICBpZiAobXNnKSB7CisgICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgcGFyc2VyLT5mbmFtZSwgcGFyc2VyLT5jdXN0b21fbXNnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGkgPCBwYXJzZXItPm1pbikgeworICAgICAgICAgICAgLyogTGVzcyBhcmd1bWVudHMgdGhhbiByZXF1aXJlZCAqLworICAgICAgICAgICAgaWYgKGkgPCBwb3MpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgJXMgJWQgcG9zaXRpb25hbCBhcmd1bWVudHMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9NSU4ocG9zLCBwYXJzZXItPm1pbikgPCBwYXJzZXItPm1heCkgPyAiYXQgbGVhc3QiIDogImV4YWN0bHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9NSU4ocG9zLCBwYXJzZXItPm1pbiksIG5hcmdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIChwb3MgJWQpIG5vdCBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgfQorICAgICAgICAvKiBjdXJyZW50IGNvZGUgcmVwb3J0cyBzdWNjZXNzIHdoZW4gYWxsIHJlcXVpcmVkIGFyZ3MKKyAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCisgICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPworICAgICAgICAgKi8KKyAgICAgICAgaWYgKCFua2V5d29yZHMpIHsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOworICAgICAgICB9CisKKyAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKKyAgICAgICAgICoga2V5d29yZCBhcmdzICovCisgICAgICAgIG1zZyA9IHNraXBpdGVtKCZmb3JtYXQsIHBfdmEsIGZsYWdzKTsKKyAgICAgICAgYXNzZXJ0KG1zZyA9PSBOVUxMKTsKKyAgICB9CisKKyAgICBhc3NlcnQoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSB8fCAoKmZvcm1hdCA9PSAnfCcpIHx8ICgqZm9ybWF0ID09ICckJykpOworCisgICAgLyogbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBleHRyYW5lb3VzIGtleXdvcmQgYXJndW1lbnRzICovCisgICAgaWYgKG5rZXl3b3JkcyA+IDApIHsKKyAgICAgICAgaWYgKGtleXdvcmRzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChrZXl3b3JkcywgJnBvcywgJmtleSwgJnZhbHVlKSkgeworICAgICAgICAgICAgICAgIGludCBtYXRjaDsKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtYXRjaCA9IFB5U2VxdWVuY2VfQ29udGFpbnMoa3d0dXBsZSwga2V5KTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPD0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIGlzIGFuIGludmFsaWQga2V5d29yZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgaiwgbmt3YXJnczsKKworICAgICAgICAgICAgbmt3YXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgICAgICAgICBmb3IgKGo9MDsgaiA8IG5rd2FyZ3M7IGorKykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKGt3bmFtZXMsIGopOworICAgICAgICAgICAgICAgIGludCBtYXRjaDsKKworICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBQeVNlcXVlbmNlX0NvbnRhaW5zKGt3dHVwbGUsIGtleSk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVVJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKK30KKworc3RhdGljIGludAordmdldGFyZ3NrZXl3b3Jkc2Zhc3QoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncykKK3sKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisKKyAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOworCisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgcmV0dXJuIHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoc3RhY2ssIG5hcmdzLCBrZXl3b3JkcywgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIsIHBfdmEsIGZsYWdzKTsKK30KKworCitzdGF0aWMgY29uc3QgY2hhciAqCiBza2lwaXRlbShjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncykKIHsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CkBAIC0xNjU4LDEwICsyMjE5LDggQEAKICAgICBjYXNlICdJJzogLyogaW50IHNpemVkIGJpdGZpZWxkICovCiAgICAgY2FzZSAnbCc6IC8qIGxvbmcgaW50ICovCiAgICAgY2FzZSAnayc6IC8qIGxvbmcgaW50IHNpemVkIGJpdGZpZWxkICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdMJzogLyogUFlfTE9OR19MT05HICovCi0gICAgY2FzZSAnSyc6IC8qIFBZX0xPTkdfTE9ORyBzaXplZCBiaXRmaWVsZCAqLwotI2VuZGlmCisgICAgY2FzZSAnTCc6IC8qIGxvbmcgbG9uZyAqLworICAgIGNhc2UgJ0snOiAvKiBsb25nIGxvbmcgc2l6ZWQgYml0ZmllbGQgKi8KICAgICBjYXNlICduJzogLyogUHlfc3NpemVfdCAqLwogICAgIGNhc2UgJ2YnOiAvKiBmbG9hdCAqLwogICAgIGNhc2UgJ2QnOiAvKiBkb3VibGUgKi8KQEAgLTE2NzMsNyArMjIzMiw5IEBACiAgICAgY2FzZSAnWSc6IC8qIHN0cmluZyBvYmplY3QgKi8KICAgICBjYXNlICdVJzogLyogdW5pY29kZSBzdHJpbmcgb2JqZWN0ICovCiAgICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTE2ODEsNyArMjI0Miw5IEBACiAKICAgICBjYXNlICdlJzogLyogc3RyaW5nIHdpdGggZW5jb2RpbmcgKi8KICAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY29uc3QgY2hhciAqKTsKKyAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCEoKmZvcm1hdCA9PSAncycgfHwgKmZvcm1hdCA9PSAndCcpKQogICAgICAgICAgICAgICAgIC8qIGFmdGVyICdlJywgb25seSAncycgYW5kICd0JyBpcyBhbGxvd2VkICovCiAgICAgICAgICAgICAgICAgZ290byBlcnI7CkBAIC0xNjk2LDEyICsyMjU5LDE2IEBACiAgICAgY2FzZSAnWic6IC8qIHVuaWNvZGUgc3RyaW5nIG9yIE5vbmUgKi8KICAgICBjYXNlICd3JzogLyogYnVmZmVyLCByZWFkLXdyaXRlICovCiAgICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNoYXIgKiopOworICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNoYXIgKiopOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRkxBR19TSVpFX1QpCi0gICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5X3NzaXplX3QgKik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBpbnQgKik7CisgICAgICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGTEFHX1NJWkVfVCkKKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5X3NzaXplX3QgKik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGludCAqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKChjID09ICdzJyB8fCBjID09ICd6JyB8fCBjID09ICd5JykgJiYgKmZvcm1hdCA9PSAnKicpIHsKICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKQEAgLTE3MTMsMjQgKzIyODAsMzAgQEAKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyEnKSB7CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlUeXBlT2JqZWN0Kik7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlUeXBlT2JqZWN0Kik7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICgqZm9ybWF0ID09ICcmJykgewogICAgICAgICAgICAgICAgIHR5cGVkZWYgaW50ICgqY29udmVydGVyKShQeU9iamVjdCAqLCB2b2lkICopOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnZlcnRlcik7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnZlcnRlcik7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZvcm1hdCsrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICBjYXNlICcoJzogICAgICAgICAgIC8qIGJ5cGFzcyB0dXBsZSwgbm90IGhhbmRsZWQgYXQgYWxsIHByZXZpb3VzbHkgKi8KICAgICAgICAgewotICAgICAgICAgICAgY2hhciAqbXNnOworICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnOwogICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgIGlmICgqZm9ybWF0PT0nKScpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc2NiwxNiArMjMzOSw5IEBACiAgICAgUHlPYmplY3QgKipvOwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKLSNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCi0gICAgdmFfc3RhcnQodmFyZ3MsIG1heCk7Ci0jZWxzZQotICAgIHZhX3N0YXJ0KHZhcmdzKTsKLSNlbmRpZgotCiAgICAgYXNzZXJ0KG1pbiA+PSAwKTsKICAgICBhc3NlcnQobWluIDw9IG1heCk7CiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7Ci0gICAgICAgIHZhX2VuZCh2YXJncyk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICJQeUFyZ19VbnBhY2tUdXBsZSgpIGFyZ3VtZW50IGxpc3QgaXMgbm90IGEgdHVwbGUiKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzkzLDkgKzIzNTksMTAgQEAKICAgICAgICAgICAgICAgICAidW5wYWNrZWQgdHVwbGUgc2hvdWxkIGhhdmUgJXMlemQgZWxlbWVudHMsIgogICAgICAgICAgICAgICAgICIgYnV0IGhhcyAlemQiLAogICAgICAgICAgICAgICAgIChtaW4gPT0gbWF4ID8gIiIgOiAiYXQgbGVhc3QgIiksIG1pbiwgbCk7Ci0gICAgICAgIHZhX2VuZCh2YXJncyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpZiAobCA9PSAwKQorICAgICAgICByZXR1cm4gMTsKICAgICBpZiAobCA+IG1heCkgewogICAgICAgICBpZiAobmFtZSAhPSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KApAQCAtMTgwOCw5ICsyMzc1LDE0IEBACiAgICAgICAgICAgICAgICAgInVucGFja2VkIHR1cGxlIHNob3VsZCBoYXZlICVzJXpkIGVsZW1lbnRzLCIKICAgICAgICAgICAgICAgICAiIGJ1dCBoYXMgJXpkIiwKICAgICAgICAgICAgICAgICAobWluID09IG1heCA/ICIiIDogImF0IG1vc3QgIiksIG1heCwgbCk7Ci0gICAgICAgIHZhX2VuZCh2YXJncyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgbWF4KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCiAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykgewogICAgICAgICBvID0gdmFfYXJnKHZhcmdzLCBQeU9iamVjdCAqKik7CiAgICAgICAgICpvID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKQEAgLTE4NjAsNiArMjQzMiwxOSBAQAogICAgIHJldHVybiAwOwogfQogCit2b2lkCitfUHlBcmdfRmluaSh2b2lkKQoreworICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICp0bXAsICpzID0gc3RhdGljX2FyZ19wYXJzZXJzOworICAgIHdoaWxlIChzKSB7CisgICAgICAgIHRtcCA9IHMtPm5leHQ7CisgICAgICAgIHMtPm5leHQgPSBOVUxMOworICAgICAgICBwYXJzZXJfY2xlYXIocyk7CisgICAgICAgIHMgPSB0bXA7CisgICAgfQorICAgIHN0YXRpY19hcmdfcGFyc2VycyA9IE5VTEw7Cit9CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dyYW1pbml0LmMgYi9QeXRob24vZ3JhbWluaXQuYwppbmRleCA4MjEyYjJhLi5mMjU4NGUwIDEwMDY0NAotLS0gYS9QeXRob24vZ3JhbWluaXQuYworKysgYi9QeXRob24vZ3JhbWluaXQuYwpAQCAtMjA0LDExICsyMDQsMTMgQEAKICAgICB7MzIsIDd9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV83WzJdID0geworc3RhdGljIGFyYyBhcmNzXzlfN1szXSA9IHsKICAgICB7MzAsIDEyfSwKICAgICB7MzQsIDN9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV84WzFdID0geworc3RhdGljIGFyYyBhcmNzXzlfOFsyXSA9IHsKKyAgICB7MzIsIDEzfSwKICAgICB7MCwgOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfOVsyXSA9IHsKQEAgLTIyMSwzNSArMjIzLDM5IEBACiAgICAgezAsIDEwfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfOV8xMVszXSA9IHsKLSAgICB7MzAsIDEzfSwKLSAgICB7MzIsIDE0fSwKKyAgICB7MzAsIDE0fSwKKyAgICB7MzIsIDE1fSwKICAgICB7MCwgMTF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc185XzEyWzNdID0gewogICAgIHszMiwgN30sCi0gICAgezMxLCAxNX0sCisgICAgezMxLCAxNn0sCiAgICAgezAsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xM1syXSA9IHsKLSAgICB7MzIsIDE0fSwKK3N0YXRpYyBhcmMgYXJjc185XzEzWzFdID0gewogICAgIHswLCAxM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfMTRbMl0gPSB7Ci0gICAgezMwLCAxNn0sCi0gICAgezM0LCAzfSwKKyAgICB7MzIsIDE1fSwKKyAgICB7MCwgMTR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzE1WzFdID0geworc3RhdGljIGFyYyBhcmNzXzlfMTVbM10gPSB7CisgICAgezMwLCAxN30sCisgICAgezM0LCAzfSwKKyAgICB7MCwgMTV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc185XzE2WzFdID0gewogICAgIHsyNiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTZbM10gPSB7Ci0gICAgezMyLCAxNH0sCi0gICAgezMxLCAxN30sCi0gICAgezAsIDE2fSwKK3N0YXRpYyBhcmMgYXJjc185XzE3WzNdID0geworICAgIHszMiwgMTV9LAorICAgIHszMSwgMTh9LAorICAgIHswLCAxN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTdbMV0gPSB7Ci0gICAgezI2LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfOV8xOFsxXSA9IHsKKyAgICB7MjYsIDE0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzlbMThdID0geworc3RhdGljIHN0YXRlIHN0YXRlc185WzE5XSA9IHsKICAgICB7MywgYXJjc185XzB9LAogICAgIHszLCBhcmNzXzlfMX0sCiAgICAgezMsIGFyY3NfOV8yfSwKQEAgLTI1NywxNyArMjYzLDE4IEBACiAgICAgezEsIGFyY3NfOV80fSwKICAgICB7NCwgYXJjc185XzV9LAogICAgIHsyLCBhcmNzXzlfNn0sCi0gICAgezIsIGFyY3NfOV83fSwKLSAgICB7MSwgYXJjc185Xzh9LAorICAgIHszLCBhcmNzXzlfN30sCisgICAgezIsIGFyY3NfOV84fSwKICAgICB7MiwgYXJjc185Xzl9LAogICAgIHszLCBhcmNzXzlfMTB9LAogICAgIHszLCBhcmNzXzlfMTF9LAogICAgIHszLCBhcmNzXzlfMTJ9LAotICAgIHsyLCBhcmNzXzlfMTN9LAorICAgIHsxLCBhcmNzXzlfMTN9LAogICAgIHsyLCBhcmNzXzlfMTR9LAotICAgIHsxLCBhcmNzXzlfMTV9LAotICAgIHszLCBhcmNzXzlfMTZ9LAotICAgIHsxLCBhcmNzXzlfMTd9LAorICAgIHszLCBhcmNzXzlfMTV9LAorICAgIHsxLCBhcmNzXzlfMTZ9LAorICAgIHszLCBhcmNzXzlfMTd9LAorICAgIHsxLCBhcmNzXzlfMTh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMF8wWzFdID0gewogICAgIHsyMywgMX0sCkBAIC0zMTksMTEgKzMyNiwxMyBAQAogICAgIHszMiwgN30sCiAgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV83WzJdID0geworc3RhdGljIGFyYyBhcmNzXzExXzdbM10gPSB7CiAgICAgezM2LCAxMn0sCiAgICAgezM0LCAzfSwKKyAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzhbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTFfOFsyXSA9IHsKKyAgICB7MzIsIDEzfSwKICAgICB7MCwgOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzlbMl0gPSB7CkBAIC0zMzYsMzUgKzM0NSwzOSBAQAogICAgIHswLCAxMH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzExWzNdID0gewotICAgIHszNiwgMTN9LAotICAgIHszMiwgMTR9LAorICAgIHszNiwgMTR9LAorICAgIHszMiwgMTV9LAogICAgIHswLCAxMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzEyWzNdID0gewogICAgIHszMiwgN30sCi0gICAgezMxLCAxNX0sCisgICAgezMxLCAxNn0sCiAgICAgezAsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTNbMl0gPSB7Ci0gICAgezMyLCAxNH0sCitzdGF0aWMgYXJjIGFyY3NfMTFfMTNbMV0gPSB7CiAgICAgezAsIDEzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTFfMTRbMl0gPSB7Ci0gICAgezM2LCAxNn0sCi0gICAgezM0LCAzfSwKKyAgICB7MzIsIDE1fSwKKyAgICB7MCwgMTR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNVszXSA9IHsKKyAgICB7MzYsIDE3fSwKKyAgICB7MzQsIDN9LAorICAgIHswLCAxNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE2WzFdID0gewogICAgIHsyNiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzE2WzNdID0gewotICAgIHszMiwgMTR9LAotICAgIHszMSwgMTd9LAotICAgIHswLCAxNn0sCitzdGF0aWMgYXJjIGFyY3NfMTFfMTdbM10gPSB7CisgICAgezMyLCAxNX0sCisgICAgezMxLCAxOH0sCisgICAgezAsIDE3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTdbMV0gPSB7Ci0gICAgezI2LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfMTFfMThbMV0gPSB7CisgICAgezI2LCAxNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xMVsxOF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzExWzE5XSA9IHsKICAgICB7MywgYXJjc18xMV8wfSwKICAgICB7MywgYXJjc18xMV8xfSwKICAgICB7MywgYXJjc18xMV8yfSwKQEAgLTM3MiwxNyArMzg1LDE4IEBACiAgICAgezEsIGFyY3NfMTFfNH0sCiAgICAgezQsIGFyY3NfMTFfNX0sCiAgICAgezIsIGFyY3NfMTFfNn0sCi0gICAgezIsIGFyY3NfMTFfN30sCi0gICAgezEsIGFyY3NfMTFfOH0sCisgICAgezMsIGFyY3NfMTFfN30sCisgICAgezIsIGFyY3NfMTFfOH0sCiAgICAgezIsIGFyY3NfMTFfOX0sCiAgICAgezMsIGFyY3NfMTFfMTB9LAogICAgIHszLCBhcmNzXzExXzExfSwKICAgICB7MywgYXJjc18xMV8xMn0sCi0gICAgezIsIGFyY3NfMTFfMTN9LAorICAgIHsxLCBhcmNzXzExXzEzfSwKICAgICB7MiwgYXJjc18xMV8xNH0sCi0gICAgezEsIGFyY3NfMTFfMTV9LAotICAgIHszLCBhcmNzXzExXzE2fSwKLSAgICB7MSwgYXJjc18xMV8xN30sCisgICAgezMsIGFyY3NfMTFfMTV9LAorICAgIHsxLCBhcmNzXzExXzE2fSwKKyAgICB7MywgYXJjc18xMV8xN30sCisgICAgezEsIGFyY3NfMTFfMTh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMl8wWzFdID0gewogICAgIHsyMywgMX0sCkBAIC00NDUsNTQgKzQ1OSw3NyBAQAogc3RhdGljIGFyYyBhcmNzXzE2XzBbMV0gPSB7CiAgICAgezQ3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfMVszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xNl8xWzRdID0gewogICAgIHs0OCwgMn0sCi0gICAgezMxLCAzfSwKKyAgICB7NDksIDN9LAorICAgIHszMSwgNH0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl8yWzJdID0gewotICAgIHs0OSwgNH0sCi0gICAgezksIDR9LAorc3RhdGljIGFyYyBhcmNzXzE2XzJbMV0gPSB7CisgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xNl8zWzJdID0gewotICAgIHs0OSwgNX0sCisgICAgezUwLCAyfSwKKyAgICB7OSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE2XzRbMl0gPSB7CisgICAgezUwLCA1fSwKICAgICB7NDcsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl80WzFdID0gewotICAgIHswLCA0fSwKLX07CiBzdGF0aWMgYXJjIGFyY3NfMTZfNVsyXSA9IHsKLSAgICB7MzEsIDN9LAorICAgIHszMSwgNH0sCiAgICAgezAsIDV9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTZbNl0gPSB7CiAgICAgezEsIGFyY3NfMTZfMH0sCi0gICAgezMsIGFyY3NfMTZfMX0sCi0gICAgezIsIGFyY3NfMTZfMn0sCisgICAgezQsIGFyY3NfMTZfMX0sCisgICAgezEsIGFyY3NfMTZfMn0sCiAgICAgezIsIGFyY3NfMTZfM30sCi0gICAgezEsIGFyY3NfMTZfNH0sCisgICAgezIsIGFyY3NfMTZfNH0sCiAgICAgezIsIGFyY3NfMTZfNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE3XzBbMl0gPSB7Ci0gICAgezI2LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE3XzBbMV0gPSB7CisgICAgezI3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xN18xWzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE3XzJbMl0gPSB7CisgICAgezMxLCAzfSwKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE3XzNbMV0gPSB7CisgICAgezI2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTdfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18xN1s1XSA9IHsKKyAgICB7MSwgYXJjc18xN18wfSwKKyAgICB7MSwgYXJjc18xN18xfSwKKyAgICB7MiwgYXJjc18xN18yfSwKKyAgICB7MSwgYXJjc18xN18zfSwKKyAgICB7MSwgYXJjc18xN180fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMThfMFsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHs1MSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE4XzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE3XzJbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfMThfMlszXSA9IHsKICAgICB7MjYsIDF9LAotICAgIHs1MCwgMX0sCisgICAgezUxLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xN1szXSA9IHsKLSAgICB7MiwgYXJjc18xN18wfSwKLSAgICB7MiwgYXJjc18xN18xfSwKLSAgICB7MywgYXJjc18xN18yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMThbM10gPSB7CisgICAgezIsIGFyY3NfMThfMH0sCisgICAgezIsIGFyY3NfMThfMX0sCisgICAgezMsIGFyY3NfMThfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE4XzBbMTNdID0gewotICAgIHs1MSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTlfMFsxM10gPSB7CiAgICAgezUyLCAxfSwKICAgICB7NTMsIDF9LAogICAgIHs1NCwgMX0sCkBAIC01MDUsNjAgKzU0Miw1MSBAQAogICAgIHs2MSwgMX0sCiAgICAgezYyLCAxfSwKICAgICB7NjMsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE4WzJdID0gewotICAgIHsxMywgYXJjc18xOF8wfSwKLSAgICB7MSwgYXJjc18xOF8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMTlfMFsxXSA9IHsKICAgICB7NjQsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xOV8xWzFdID0gewotICAgIHs2NSwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE5XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbM10gPSB7Ci0gICAgezEsIGFyY3NfMTlfMH0sCi0gICAgezEsIGFyY3NfMTlfMX0sCi0gICAgezEsIGFyY3NfMTlfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzIwXzBbMV0gPSB7Ci0gICAgezY2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjBfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yMFsyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbMl0gPSB7CisgICAgezEzLCBhcmNzXzE5XzB9LAorICAgIHsxLCBhcmNzXzE5XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yMF8wWzFdID0geworICAgIHs2NSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzIwXzFbMV0gPSB7CisgICAgezY2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjBfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yMFszXSA9IHsKICAgICB7MSwgYXJjc18yMF8wfSwKICAgICB7MSwgYXJjc18yMF8xfSwKKyAgICB7MSwgYXJjc18yMF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjFfMFs1XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yMV8wWzFdID0gewogICAgIHs2NywgMX0sCi0gICAgezY4LCAxfSwKLSAgICB7NjksIDF9LAotICAgIHs3MCwgMX0sCi0gICAgezcxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjFfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18yMVsyXSA9IHsKLSAgICB7NSwgYXJjc18yMV8wfSwKKyAgICB7MSwgYXJjc18yMV8wfSwKICAgICB7MSwgYXJjc18yMV8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjJfMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yMl8wWzVdID0geworICAgIHs2OCwgMX0sCisgICAgezY5LCAxfSwKKyAgICB7NzAsIDF9LAorICAgIHs3MSwgMX0sCiAgICAgezcyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjJfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18yMlsyXSA9IHsKLSAgICB7MSwgYXJjc18yMl8wfSwKKyAgICB7NSwgYXJjc18yMl8wfSwKICAgICB7MSwgYXJjc18yMl8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjNfMFsxXSA9IHsKQEAgLTU3NCwxNDIgKzYwMiwxMzMgQEAKIHN0YXRpYyBhcmMgYXJjc18yNF8wWzFdID0gewogICAgIHs3NCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI0XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjRfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yNFsyXSA9IHsKKyAgICB7MSwgYXJjc18yNF8wfSwKKyAgICB7MSwgYXJjc18yNF8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjVfMFsxXSA9IHsKKyAgICB7NzUsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yNV8xWzJdID0gewogICAgIHs5LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI0XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjVfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNFszXSA9IHsKLSAgICB7MSwgYXJjc18yNF8wfSwKLSAgICB7MiwgYXJjc18yNF8xfSwKLSAgICB7MSwgYXJjc18yNF8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfMFsxXSA9IHsKLSAgICB7NDksIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yNV8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI1WzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18yNVszXSA9IHsKICAgICB7MSwgYXJjc18yNV8wfSwKLSAgICB7MSwgYXJjc18yNV8xfSwKKyAgICB7MiwgYXJjc18yNV8xfSwKKyAgICB7MSwgYXJjc18yNV8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjZfMFsxXSA9IHsKLSAgICB7NzUsIDF9LAorICAgIHs1MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjZfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yNlsyXSA9IHsKKyAgICB7MSwgYXJjc18yNl8wfSwKKyAgICB7MSwgYXJjc18yNl8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjdfMFsxXSA9IHsKKyAgICB7NzYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yN18xWzJdID0gewogICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNl8yWzJdID0gewotICAgIHs3NiwgM30sCitzdGF0aWMgYXJjIGFyY3NfMjdfMlsyXSA9IHsKKyAgICB7NzcsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yN18zWzFdID0gewogICAgIHsyNiwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjdfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNls1XSA9IHsKLSAgICB7MSwgYXJjc18yNl8wfSwKLSAgICB7MiwgYXJjc18yNl8xfSwKLSAgICB7MiwgYXJjc18yNl8yfSwKLSAgICB7MSwgYXJjc18yNl8zfSwKLSAgICB7MSwgYXJjc18yNl80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbNV0gPSB7CisgICAgezEsIGFyY3NfMjdfMH0sCisgICAgezIsIGFyY3NfMjdfMX0sCisgICAgezIsIGFyY3NfMjdfMn0sCisgICAgezEsIGFyY3NfMjdfM30sCisgICAgezEsIGFyY3NfMjdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI3XzBbMl0gPSB7Ci0gICAgezc3LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18yOF8wWzJdID0gewogICAgIHs3OCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI3XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbMl0gPSB7Ci0gICAgezIsIGFyY3NfMjdfMH0sCi0gICAgezEsIGFyY3NfMjdfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI4XzBbMV0gPSB7CiAgICAgezc5LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjhfMVsxXSA9IHsKLSAgICB7ODAsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI4WzNdID0gewotICAgIHsxLCBhcmNzXzI4XzB9LAotICAgIHsxLCBhcmNzXzI4XzF9LAotICAgIHsxLCBhcmNzXzI4XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8wWzFdID0gewotICAgIHs3NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzFbM10gPSB7Ci0gICAgezgxLCAyfSwKLSAgICB7ODIsIDJ9LAotICAgIHsxMiwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzJbNF0gPSB7Ci0gICAgezgxLCAyfSwKLSAgICB7ODIsIDJ9LAotICAgIHsxMiwgM30sCi0gICAgezc5LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfM1sxXSA9IHsKLSAgICB7NzksIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV80WzNdID0gewotICAgIHszMywgNX0sCi0gICAgezEzLCA2fSwKLSAgICB7ODMsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV81WzFdID0gewotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfNlsxXSA9IHsKLSAgICB7ODMsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV83WzFdID0gewotICAgIHsxNSwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yOVs4XSA9IHsKLSAgICB7MSwgYXJjc18yOV8wfSwKLSAgICB7MywgYXJjc18yOV8xfSwKLSAgICB7NCwgYXJjc18yOV8yfSwKLSAgICB7MSwgYXJjc18yOV8zfSwKLSAgICB7MywgYXJjc18yOV80fSwKLSAgICB7MSwgYXJjc18yOV81fSwKLSAgICB7MSwgYXJjc18yOV82fSwKLSAgICB7MSwgYXJjc18yOV83fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzBfMFsxXSA9IHsKLSAgICB7MjMsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zMF8xWzJdID0gewotICAgIHs4NSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zMF8yWzFdID0gewotICAgIHsyMywgM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzI4WzJdID0geworICAgIHsyLCBhcmNzXzI4XzB9LAorICAgIHsxLCBhcmNzXzI4XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8wWzFdID0geworICAgIHs4MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzFbMV0gPSB7CisgICAgezgxLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yOVszXSA9IHsKKyAgICB7MSwgYXJjc18yOV8wfSwKKyAgICB7MSwgYXJjc18yOV8xfSwKKyAgICB7MSwgYXJjc18yOV8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfMFsxXSA9IHsKKyAgICB7NzcsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF8xWzNdID0geworICAgIHs4MiwgMn0sCisgICAgezgzLCAyfSwKKyAgICB7MTIsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF8yWzRdID0geworICAgIHs4MiwgMn0sCisgICAgezgzLCAyfSwKKyAgICB7MTIsIDN9LAorICAgIHs4MCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMwXzNbMV0gPSB7Ci0gICAgezAsIDN9LAorICAgIHs4MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMFs0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zMF80WzNdID0geworICAgIHszMywgNX0sCisgICAgezEzLCA2fSwKKyAgICB7ODQsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF81WzFdID0geworICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfNlsxXSA9IHsKKyAgICB7ODQsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF83WzFdID0geworICAgIHsxNSwgNX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18zMFs4XSA9IHsKICAgICB7MSwgYXJjc18zMF8wfSwKLSAgICB7MiwgYXJjc18zMF8xfSwKLSAgICB7MSwgYXJjc18zMF8yfSwKKyAgICB7MywgYXJjc18zMF8xfSwKKyAgICB7NCwgYXJjc18zMF8yfSwKICAgICB7MSwgYXJjc18zMF8zfSwKKyAgICB7MywgYXJjc18zMF80fSwKKyAgICB7MSwgYXJjc18zMF81fSwKKyAgICB7MSwgYXJjc18zMF82fSwKKyAgICB7MSwgYXJjc18zMF83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMFsxXSA9IHsKLSAgICB7MTIsIDF9LAorICAgIHsyMywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMxXzFbMl0gPSB7Ci0gICAgezg1LCAyfSwKKyAgICB7ODYsIDJ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMlsxXSA9IHsKQEAgLTcyNSwzNyArNzQ0LDQ1IEBACiAgICAgezEsIGFyY3NfMzFfM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMyXzBbMV0gPSB7Ci0gICAgezg0LCAxfSwKKyAgICB7MTIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMl8xWzJdID0geworICAgIHs4NiwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMl8yWzFdID0geworICAgIHsyMywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMyXzNbMV0gPSB7CisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzJbNF0gPSB7CisgICAgezEsIGFyY3NfMzJfMH0sCisgICAgezIsIGFyY3NfMzJfMX0sCisgICAgezEsIGFyY3NfMzJfMn0sCisgICAgezEsIGFyY3NfMzJfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMzXzBbMV0gPSB7CisgICAgezg1LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzNfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzJfMlsyXSA9IHsKLSAgICB7ODQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzMzXzJbMl0gPSB7CisgICAgezg1LCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMlszXSA9IHsKLSAgICB7MSwgYXJjc18zMl8wfSwKLSAgICB7MiwgYXJjc18zMl8xfSwKLSAgICB7MiwgYXJjc18zMl8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzNfMFsxXSA9IHsKLSAgICB7ODYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zM18xWzJdID0gewotICAgIHszMiwgMH0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzNbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMzWzNdID0gewogICAgIHsxLCBhcmNzXzMzXzB9LAogICAgIHsyLCBhcmNzXzMzXzF9LAorICAgIHsyLCBhcmNzXzMzXzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNF8wWzFdID0gewotICAgIHsyMywgMX0sCisgICAgezg3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzRfMVsyXSA9IHsKLSAgICB7ODEsIDB9LAorICAgIHszMiwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzRbMl0gPSB7CkBAIC03NjMsMTkgKzc5MCwxNSBAQAogICAgIHsyLCBhcmNzXzM0XzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNV8wWzFdID0gewotICAgIHs4NywgMX0sCisgICAgezIzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzVfMVsxXSA9IHsKLSAgICB7MjMsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM1XzFbMl0gPSB7CisgICAgezgyLCAwfSwKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM1XzJbMl0gPSB7Ci0gICAgezMyLCAxfSwKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zNVszXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzVbMl0gPSB7CiAgICAgezEsIGFyY3NfMzVfMH0sCi0gICAgezEsIGFyY3NfMzVfMX0sCi0gICAgezIsIGFyY3NfMzVfMn0sCisgICAgezIsIGFyY3NfMzVfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM2XzBbMV0gPSB7CiAgICAgezg4LCAxfSwKQEAgLTc5Niw5NyArODE5LDc2IEBACiAgICAgezg5LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzdfMVsxXSA9IHsKLSAgICB7MjYsIDJ9LAorICAgIHsyMywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM3XzJbMl0gPSB7Ci0gICAgezMyLCAzfSwKKyAgICB7MzIsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzdfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zN180WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM3WzVdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18zN1szXSA9IHsKICAgICB7MSwgYXJjc18zN18wfSwKICAgICB7MSwgYXJjc18zN18xfSwKICAgICB7MiwgYXJjc18zN18yfSwKLSAgICB7MSwgYXJjc18zN18zfSwKLSAgICB7MSwgYXJjc18zN180fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfMFs5XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zOF8wWzFdID0gewogICAgIHs5MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfMlsyXSA9IHsKKyAgICB7MzIsIDN9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfM1sxXSA9IHsKKyAgICB7MjYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF80WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzVdID0geworICAgIHsxLCBhcmNzXzM4XzB9LAorICAgIHsxLCBhcmNzXzM4XzF9LAorICAgIHsyLCBhcmNzXzM4XzJ9LAorICAgIHsxLCBhcmNzXzM4XzN9LAorICAgIHsxLCBhcmNzXzM4XzR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOV8wWzldID0gewogICAgIHs5MSwgMX0sCiAgICAgezkyLCAxfSwKICAgICB7OTMsIDF9LAogICAgIHs5NCwgMX0sCisgICAgezk1LCAxfSwKICAgICB7MTksIDF9LAogICAgIHsxOCwgMX0sCiAgICAgezE3LCAxfSwKLSAgICB7OTUsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzJdID0gewotICAgIHs5LCBhcmNzXzM4XzB9LAotICAgIHsxLCBhcmNzXzM4XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV8wWzFdID0gewotICAgIHsyMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzFbM10gPSB7Ci0gICAgezE5LCAyfSwKLSAgICB7OTQsIDJ9LAotICAgIHs5MiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbM10gPSB7Ci0gICAgezEsIGFyY3NfMzlfMH0sCi0gICAgezMsIGFyY3NfMzlfMX0sCi0gICAgezEsIGFyY3NfMzlfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzBbMV0gPSB7CiAgICAgezk2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfMVsxXSA9IHsKLSAgICB7MjYsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM5XzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbMl0gPSB7CisgICAgezksIGFyY3NfMzlfMH0sCisgICAgezEsIGFyY3NfMzlfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQwXzBbMV0gPSB7CisgICAgezIxLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDBfMVszXSA9IHsKKyAgICB7MTksIDJ9LAorICAgIHs5NSwgMn0sCisgICAgezkzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDBfMlsxXSA9IHsKLSAgICB7MjcsIDN9LAorICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfM1sxXSA9IHsKLSAgICB7MjgsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF80WzNdID0gewotICAgIHs5NywgMX0sCi0gICAgezk4LCA1fSwKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzVbMV0gPSB7Ci0gICAgezI3LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNlsxXSA9IHsKLSAgICB7MjgsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF83WzFdID0gewotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQwWzhdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180MFszXSA9IHsKICAgICB7MSwgYXJjc180MF8wfSwKLSAgICB7MSwgYXJjc180MF8xfSwKKyAgICB7MywgYXJjc180MF8xfSwKICAgICB7MSwgYXJjc180MF8yfSwKLSAgICB7MSwgYXJjc180MF8zfSwKLSAgICB7MywgYXJjc180MF80fSwKLSAgICB7MSwgYXJjc180MF81fSwKLSAgICB7MSwgYXJjc180MF82fSwKLSAgICB7MSwgYXJjc180MF83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfMFsxXSA9IHsKLSAgICB7OTksIDF9LAorICAgIHs5NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzFbMV0gPSB7CiAgICAgezI2LCAyfSwKQEAgLTg5Nyw4ICs4OTksOSBAQAogc3RhdGljIGFyYyBhcmNzXzQxXzNbMV0gPSB7CiAgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfNFsyXSA9IHsKLSAgICB7OTgsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQxXzRbM10gPSB7CisgICAgezk4LCAxfSwKKyAgICB7OTksIDV9LAogICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfNVsxXSA9IHsKQEAgLTkxNSw3ICs5MTgsNyBAQAogICAgIHsxLCBhcmNzXzQxXzF9LAogICAgIHsxLCBhcmNzXzQxXzJ9LAogICAgIHsxLCBhcmNzXzQxXzN9LAotICAgIHsyLCBhcmNzXzQxXzR9LAorICAgIHszLCBhcmNzXzQxXzR9LAogICAgIHsxLCBhcmNzXzQxXzV9LAogICAgIHsxLCBhcmNzXzQxXzZ9LAogICAgIHsxLCBhcmNzXzQxXzd9LApAQCAtOTI0LDI1OCArOTI3LDI3MCBAQAogICAgIHsxMDAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8xWzFdID0gewotICAgIHs2NSwgMn0sCisgICAgezI2LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfMlsxXSA9IHsKLSAgICB7MTAxLCAzfSwKKyAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8zWzFdID0gewotICAgIHs5LCA0fSwKKyAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml80WzFdID0gewotICAgIHsyNywgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDJfNFsyXSA9IHsKKyAgICB7OTksIDV9LAorICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfNVsxXSA9IHsKLSAgICB7MjgsIDZ9LAorICAgIHsyNywgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQyXzZbMl0gPSB7Ci0gICAgezk4LCA3fSwKLSAgICB7MCwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNDJfNlsxXSA9IHsKKyAgICB7MjgsIDd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml83WzFdID0gewotICAgIHsyNywgOH0sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml84WzFdID0gewotICAgIHsyOCwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQyXzlbMV0gPSB7Ci0gICAgezAsIDl9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDJbMTBdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180Mls4XSA9IHsKICAgICB7MSwgYXJjc180Ml8wfSwKICAgICB7MSwgYXJjc180Ml8xfSwKICAgICB7MSwgYXJjc180Ml8yfSwKICAgICB7MSwgYXJjc180Ml8zfSwKLSAgICB7MSwgYXJjc180Ml80fSwKKyAgICB7MiwgYXJjc180Ml80fSwKICAgICB7MSwgYXJjc180Ml81fSwKLSAgICB7MiwgYXJjc180Ml82fSwKKyAgICB7MSwgYXJjc180Ml82fSwKICAgICB7MSwgYXJjc180Ml83fSwKLSAgICB7MSwgYXJjc180Ml84fSwKLSAgICB7MSwgYXJjc180Ml85fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfMFsxXSA9IHsKLSAgICB7MTAyLCAxfSwKKyAgICB7MTAxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfMVsxXSA9IHsKLSAgICB7MjcsIDJ9LAorICAgIHs2NiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzJbMV0gPSB7Ci0gICAgezI4LCAzfSwKKyAgICB7MTAyLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfM1syXSA9IHsKLSAgICB7MTAzLCA0fSwKLSAgICB7MTA0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc180M18zWzFdID0geworICAgIHs5LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfNFsxXSA9IHsKLSAgICB7MjcsIDZ9LAorICAgIHsyNywgNX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzVbMV0gPSB7Ci0gICAgezI3LCA3fSwKKyAgICB7MjgsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180M182WzFdID0gewotICAgIHsyOCwgOH0sCitzdGF0aWMgYXJjIGFyY3NfNDNfNlsyXSA9IHsKKyAgICB7OTksIDd9LAorICAgIHswLCA2fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfN1sxXSA9IHsKLSAgICB7MjgsIDl9LAorICAgIHsyNywgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzhbNF0gPSB7Ci0gICAgezEwMywgNH0sCi0gICAgezk4LCAxMH0sCi0gICAgezEwNCwgNX0sCi0gICAgezAsIDh9LAorc3RhdGljIGFyYyBhcmNzXzQzXzhbMV0gPSB7CisgICAgezI4LCA5fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfOVsxXSA9IHsKICAgICB7MCwgOX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzEwWzFdID0gewotICAgIHsyNywgMTF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180M18xMVsxXSA9IHsKLSAgICB7MjgsIDEyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfMTJbMl0gPSB7Ci0gICAgezEwNCwgNX0sCi0gICAgezAsIDEyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQzWzEzXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDNbMTBdID0gewogICAgIHsxLCBhcmNzXzQzXzB9LAogICAgIHsxLCBhcmNzXzQzXzF9LAogICAgIHsxLCBhcmNzXzQzXzJ9LAotICAgIHsyLCBhcmNzXzQzXzN9LAorICAgIHsxLCBhcmNzXzQzXzN9LAogICAgIHsxLCBhcmNzXzQzXzR9LAogICAgIHsxLCBhcmNzXzQzXzV9LAotICAgIHsxLCBhcmNzXzQzXzZ9LAorICAgIHsyLCBhcmNzXzQzXzZ9LAogICAgIHsxLCBhcmNzXzQzXzd9LAotICAgIHs0LCBhcmNzXzQzXzh9LAorICAgIHsxLCBhcmNzXzQzXzh9LAogICAgIHsxLCBhcmNzXzQzXzl9LAotICAgIHsxLCBhcmNzXzQzXzEwfSwKLSAgICB7MSwgYXJjc180M18xMX0sCi0gICAgezIsIGFyY3NfNDNfMTJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8wWzFdID0gewotICAgIHsxMDUsIDF9LAorICAgIHsxMDMsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8xWzFdID0gewotICAgIHsxMDYsIDJ9LAorICAgIHsyNywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzJbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDRfMlsxXSA9IHsKKyAgICB7MjgsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8zWzJdID0geworICAgIHsxMDQsIDR9LAorICAgIHsxMDUsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF80WzFdID0geworICAgIHsyNywgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzVbMV0gPSB7CisgICAgezI3LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfNlsxXSA9IHsKKyAgICB7MjgsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF83WzFdID0geworICAgIHsyOCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzhbNF0gPSB7CisgICAgezEwNCwgNH0sCisgICAgezk5LCAxMH0sCisgICAgezEwNSwgNX0sCisgICAgezAsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF85WzFdID0geworICAgIHswLCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfMTBbMV0gPSB7CisgICAgezI3LCAxMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzExWzFdID0geworICAgIHsyOCwgMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8xMlsyXSA9IHsKKyAgICB7MTA1LCA1fSwKKyAgICB7MCwgMTJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDRbMTNdID0geworICAgIHsxLCBhcmNzXzQ0XzB9LAorICAgIHsxLCBhcmNzXzQ0XzF9LAorICAgIHsxLCBhcmNzXzQ0XzJ9LAorICAgIHsyLCBhcmNzXzQ0XzN9LAorICAgIHsxLCBhcmNzXzQ0XzR9LAorICAgIHsxLCBhcmNzXzQ0XzV9LAorICAgIHsxLCBhcmNzXzQ0XzZ9LAorICAgIHsxLCBhcmNzXzQ0Xzd9LAorICAgIHs0LCBhcmNzXzQ0Xzh9LAorICAgIHsxLCBhcmNzXzQ0Xzl9LAorICAgIHsxLCBhcmNzXzQ0XzEwfSwKKyAgICB7MSwgYXJjc180NF8xMX0sCisgICAgezIsIGFyY3NfNDRfMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NV8wWzFdID0geworICAgIHsxMDYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NV8xWzFdID0geworICAgIHsxMDcsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NV8yWzJdID0gewogICAgIHszMiwgMX0sCiAgICAgezI3LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDRfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180NV8zWzFdID0gewogICAgIHsyOCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDVfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180NFs1XSA9IHsKLSAgICB7MSwgYXJjc180NF8wfSwKLSAgICB7MSwgYXJjc180NF8xfSwKLSAgICB7MiwgYXJjc180NF8yfSwKLSAgICB7MSwgYXJjc180NF8zfSwKLSAgICB7MSwgYXJjc180NF80fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMFsxXSA9IHsKLSAgICB7MjYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8xWzJdID0gewotICAgIHs4NSwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8yWzFdID0gewotICAgIHsxMDcsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8zWzFdID0gewotICAgIHswLCAzfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ1WzRdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180NVs1XSA9IHsKICAgICB7MSwgYXJjc180NV8wfSwKLSAgICB7MiwgYXJjc180NV8xfSwKLSAgICB7MSwgYXJjc180NV8yfSwKKyAgICB7MSwgYXJjc180NV8xfSwKKyAgICB7MiwgYXJjc180NV8yfSwKICAgICB7MSwgYXJjc180NV8zfSwKKyAgICB7MSwgYXJjc180NV80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDZfMFsxXSA9IHsKLSAgICB7MTA4LCAxfSwKKyAgICB7MjYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Nl8xWzJdID0geworICAgIHs4NiwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Nl8yWzFdID0geworICAgIHsxMDgsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Nl8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ2WzRdID0geworICAgIHsxLCBhcmNzXzQ2XzB9LAorICAgIHsyLCBhcmNzXzQ2XzF9LAorICAgIHsxLCBhcmNzXzQ2XzJ9LAorICAgIHsxLCBhcmNzXzQ2XzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180N18wWzFdID0geworICAgIHsxMDksIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180N18xWzJdID0gewogICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl8yWzJdID0gewotICAgIHs4NSwgM30sCitzdGF0aWMgYXJjIGFyY3NfNDdfMlsyXSA9IHsKKyAgICB7ODYsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180N18zWzFdID0gewogICAgIHsyMywgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDdfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180Nls1XSA9IHsKLSAgICB7MSwgYXJjc180Nl8wfSwKLSAgICB7MiwgYXJjc180Nl8xfSwKLSAgICB7MiwgYXJjc180Nl8yfSwKLSAgICB7MSwgYXJjc180Nl8zfSwKLSAgICB7MSwgYXJjc180Nl80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbNV0gPSB7CisgICAgezEsIGFyY3NfNDdfMH0sCisgICAgezIsIGFyY3NfNDdfMX0sCisgICAgezIsIGFyY3NfNDdfMn0sCisgICAgezEsIGFyY3NfNDdfM30sCisgICAgezEsIGFyY3NfNDdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ3XzBbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDhfMFsyXSA9IHsKICAgICB7MywgMX0sCiAgICAgezIsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180N18xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfMlsxXSA9IHsKLSAgICB7MTA5LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfM1sxXSA9IHsKLSAgICB7NiwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ3XzRbMl0gPSB7Ci0gICAgezYsIDR9LAotICAgIHsxMTAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbNV0gPSB7Ci0gICAgezIsIGFyY3NfNDdfMH0sCi0gICAgezEsIGFyY3NfNDdfMX0sCi0gICAgezEsIGFyY3NfNDdfMn0sCi0gICAgezEsIGFyY3NfNDdfM30sCi0gICAgezIsIGFyY3NfNDdfNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ4XzBbMl0gPSB7Ci0gICAgezExMSwgMX0sCi0gICAgezExMiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ4XzFbMl0gPSB7Ci0gICAgezk2LCAzfSwKK3N0YXRpYyBhcmMgYXJjc180OF8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDhfMlsxXSA9IHsKLSAgICB7MCwgMn0sCisgICAgezExMCwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzNbMV0gPSB7Ci0gICAgezExMSwgNH0sCisgICAgezYsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OF80WzFdID0gewotICAgIHs5OCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDhfNFsyXSA9IHsKKyAgICB7NiwgNH0sCisgICAgezExMSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ4XzVbMV0gPSB7Ci0gICAgezI2LCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ4WzZdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180OFs1XSA9IHsKICAgICB7MiwgYXJjc180OF8wfSwKLSAgICB7MiwgYXJjc180OF8xfSwKKyAgICB7MSwgYXJjc180OF8xfSwKICAgICB7MSwgYXJjc180OF8yfSwKICAgICB7MSwgYXJjc180OF8zfSwKLSAgICB7MSwgYXJjc180OF80fSwKLSAgICB7MSwgYXJjc180OF81fSwKKyAgICB7MiwgYXJjc180OF80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDlfMFsyXSA9IHsKLSAgICB7MTExLCAxfSwKLSAgICB7MTE0LCAxfSwKKyAgICB7MTEyLCAxfSwKKyAgICB7MTEzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDlfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180OV8xWzJdID0geworICAgIHs5NywgM30sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDlbMl0gPSB7Ci0gICAgezIsIGFyY3NfNDlfMH0sCi0gICAgezEsIGFyY3NfNDlfMX0sCitzdGF0aWMgYXJjIGFyY3NfNDlfMlsxXSA9IHsKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUwXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDlfM1sxXSA9IHsKKyAgICB7MTEyLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDlfNFsxXSA9IHsKKyAgICB7OTksIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180OV81WzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180OVs2XSA9IHsKKyAgICB7MiwgYXJjc180OV8wfSwKKyAgICB7MiwgYXJjc180OV8xfSwKKyAgICB7MSwgYXJjc180OV8yfSwKKyAgICB7MSwgYXJjc180OV8zfSwKKyAgICB7MSwgYXJjc180OV80fSwKKyAgICB7MSwgYXJjc180OV81fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTBfMFsyXSA9IHsKKyAgICB7MTEyLCAxfSwKICAgICB7MTE1LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfMVsyXSA9IHsKLSAgICB7MzUsIDJ9LAotICAgIHsyNywgM30sCitzdGF0aWMgYXJjIGFyY3NfNTBfMVsxXSA9IHsKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUwXzJbMV0gPSB7Ci0gICAgezI3LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MF80WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUwWzVdID0gewotICAgIHsxLCBhcmNzXzUwXzB9LAotICAgIHsyLCBhcmNzXzUwXzF9LAotICAgIHsxLCBhcmNzXzUwXzJ9LAotICAgIHsxLCBhcmNzXzUwXzN9LAotICAgIHsxLCBhcmNzXzUwXzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc181MFsyXSA9IHsKKyAgICB7MiwgYXJjc181MF8wfSwKKyAgICB7MSwgYXJjc181MF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfMFsxXSA9IHsKLSAgICB7MTE1LCAxfSwKKyAgICB7MTE2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfMVsyXSA9IHsKICAgICB7MzUsIDJ9LApAQCAtMTE4NSw3ICsxMjAwLDcgQEAKICAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181MV8zWzFdID0gewotICAgIHsxMTMsIDR9LAorICAgIHsyNiwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUxXzRbMV0gPSB7CiAgICAgezAsIDR9LApAQCAtMTIwMSwxMDggKzEyMTYsMTIwIEBACiAgICAgezExNiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUyXzFbMl0gPSB7Ci0gICAgezExNywgMH0sCi0gICAgezAsIDF9LAorICAgIHszNSwgMn0sCisgICAgezI3LCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUyWzJdID0geworc3RhdGljIGFyYyBhcmNzXzUyXzJbMV0gPSB7CisgICAgezI3LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTJfM1sxXSA9IHsKKyAgICB7MTE0LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTJfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181Mls1XSA9IHsKICAgICB7MSwgYXJjc181Ml8wfSwKICAgICB7MiwgYXJjc181Ml8xfSwKKyAgICB7MSwgYXJjc181Ml8yfSwKKyAgICB7MSwgYXJjc181Ml8zfSwKKyAgICB7MSwgYXJjc181Ml80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMFsxXSA9IHsKLSAgICB7MTE4LCAxfSwKKyAgICB7MTE3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMVsyXSA9IHsKLSAgICB7MTE5LCAwfSwKKyAgICB7MTE4LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181M1syXSA9IHsKICAgICB7MSwgYXJjc181M18wfSwKICAgICB7MiwgYXJjc181M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMFsyXSA9IHsKLSAgICB7MTIwLCAxfSwKLSAgICB7MTIxLCAyfSwKK3N0YXRpYyBhcmMgYXJjc181NF8wWzFdID0geworICAgIHsxMTksIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181NF8xWzFdID0gewotICAgIHsxMTgsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NF8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU0WzNdID0gewotICAgIHsyLCBhcmNzXzU0XzB9LAotICAgIHsxLCBhcmNzXzU0XzF9LAotICAgIHsxLCBhcmNzXzU0XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NV8wWzFdID0gewotICAgIHsxMDcsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NV8xWzJdID0gewotICAgIHsxMjIsIDB9LAorc3RhdGljIGFyYyBhcmNzXzU0XzFbMl0gPSB7CisgICAgezEyMCwgMH0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTVbMl0gPSB7Ci0gICAgezEsIGFyY3NfNTVfMH0sCi0gICAgezIsIGFyY3NfNTVfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzU0WzJdID0geworICAgIHsxLCBhcmNzXzU0XzB9LAorICAgIHsyLCBhcmNzXzU0XzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181Nl8wWzEwXSA9IHsKLSAgICB7MTIzLCAxfSwKK3N0YXRpYyBhcmMgYXJjc181NV8wWzJdID0geworICAgIHsxMjEsIDF9LAorICAgIHsxMjIsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181NV8xWzFdID0geworICAgIHsxMTksIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181NV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU1WzNdID0geworICAgIHsyLCBhcmNzXzU1XzB9LAorICAgIHsxLCBhcmNzXzU1XzF9LAorICAgIHsxLCBhcmNzXzU1XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Nl8wWzFdID0geworICAgIHsxMDgsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Nl8xWzJdID0geworICAgIHsxMjMsIDB9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU2WzJdID0geworICAgIHsxLCBhcmNzXzU2XzB9LAorICAgIHsyLCBhcmNzXzU2XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181N18wWzEwXSA9IHsKICAgICB7MTI0LCAxfSwKICAgICB7MTI1LCAxfSwKICAgICB7MTI2LCAxfSwKICAgICB7MTI3LCAxfSwKICAgICB7MTI4LCAxfSwKICAgICB7MTI5LCAxfSwKLSAgICB7MTAxLCAxfSwKLSAgICB7MTIwLCAyfSwKLSAgICB7MTMwLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzJbMV0gPSB7Ci0gICAgezEwMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzNbMl0gPSB7Ci0gICAgezEyMCwgMX0sCi0gICAgezAsIDN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTZbNF0gPSB7Ci0gICAgezEwLCBhcmNzXzU2XzB9LAotICAgIHsxLCBhcmNzXzU2XzF9LAotICAgIHsxLCBhcmNzXzU2XzJ9LAotICAgIHsyLCBhcmNzXzU2XzN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181N18wWzFdID0gewotICAgIHszMywgMX0sCisgICAgezEzMCwgMX0sCisgICAgezEwMiwgMX0sCisgICAgezEyMSwgMn0sCisgICAgezEzMSwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzU3XzFbMV0gPSB7Ci0gICAgezEwNywgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU3XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTdbM10gPSB7Ci0gICAgezEsIGFyY3NfNTdfMH0sCi0gICAgezEsIGFyY3NfNTdfMX0sCi0gICAgezEsIGFyY3NfNTdfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU4XzBbMV0gPSB7Ci0gICAgezEzMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU4XzFbMl0gPSB7Ci0gICAgezEzMiwgMH0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNThbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTdfMlsxXSA9IHsKKyAgICB7MTAyLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTdfM1syXSA9IHsKKyAgICB7MTIxLCAxfSwKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181N1s0XSA9IHsKKyAgICB7MTAsIGFyY3NfNTdfMH0sCisgICAgezEsIGFyY3NfNTdfMX0sCisgICAgezEsIGFyY3NfNTdfMn0sCisgICAgezIsIGFyY3NfNTdfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzU4XzBbMV0gPSB7CisgICAgezMzLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNThfMVsxXSA9IHsKKyAgICB7MTA4LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNThfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181OFszXSA9IHsKICAgICB7MSwgYXJjc181OF8wfSwKLSAgICB7MiwgYXJjc181OF8xfSwKKyAgICB7MSwgYXJjc181OF8xfSwKKyAgICB7MSwgYXJjc181OF8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTlfMFsxXSA9IHsKLSAgICB7MTMzLCAxfSwKKyAgICB7MTMyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTlfMVsyXSA9IHsKLSAgICB7MTM0LCAwfSwKKyAgICB7MTMzLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181OVsyXSA9IHsKQEAgLTEzMTAsMTAgKzEzMzcsMTAgQEAKICAgICB7MiwgYXJjc181OV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjBfMFsxXSA9IHsKLSAgICB7MTM1LCAxfSwKKyAgICB7MTM0LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjBfMVsyXSA9IHsKLSAgICB7MTM2LCAwfSwKKyAgICB7MTM1LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182MFsyXSA9IHsKQEAgLTEzMjEsMjMgKzEzNDgsMjIgQEAKICAgICB7MiwgYXJjc182MF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjFfMFsxXSA9IHsKLSAgICB7MTM3LCAxfSwKKyAgICB7MTM2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjFfMVszXSA9IHsKLSAgICB7MTM4LCAwfSwKLSAgICB7MTM5LCAwfSwKK3N0YXRpYyBhcmMgYXJjc182MV8xWzJdID0geworICAgIHsxMzcsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYxWzJdID0gewogICAgIHsxLCBhcmNzXzYxXzB9LAotICAgIHszLCBhcmNzXzYxXzF9LAorICAgIHsyLCBhcmNzXzYxXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182Ml8wWzFdID0gewotICAgIHsxNDAsIDF9LAorICAgIHsxMzgsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182Ml8xWzNdID0gewotICAgIHsxNDEsIDB9LAotICAgIHsxNDIsIDB9LAorICAgIHsxMzksIDB9LAorICAgIHsxNDAsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYyWzJdID0gewpAQCAtMTM0NSw1MjggKzEzNzEsNTQ1IEBACiAgICAgezMsIGFyY3NfNjJfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYzXzBbMV0gPSB7Ci0gICAgezE0MywgMX0sCisgICAgezE0MSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYzXzFbNl0gPSB7Ci0gICAgezMzLCAwfSwKLSAgICB7MTEsIDB9LAotICAgIHsxNDQsIDB9LAotICAgIHsxNDUsIDB9LAotICAgIHsxNDYsIDB9LAorc3RhdGljIGFyYyBhcmNzXzYzXzFbM10gPSB7CisgICAgezE0MiwgMH0sCisgICAgezE0MywgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjNbMl0gPSB7CiAgICAgezEsIGFyY3NfNjNfMH0sCi0gICAgezYsIGFyY3NfNjNfMX0sCisgICAgezMsIGFyY3NfNjNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzBbNF0gPSB7Ci0gICAgezE0MSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjRfMFsxXSA9IHsKKyAgICB7MTQ0LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjRfMVs2XSA9IHsKKyAgICB7MzMsIDB9LAorICAgIHsxMSwgMH0sCisgICAgezE0NSwgMH0sCisgICAgezE0NiwgMH0sCisgICAgezE0NywgMH0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjRbMl0gPSB7CisgICAgezEsIGFyY3NfNjRfMH0sCisgICAgezYsIGFyY3NfNjRfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY1XzBbNF0gPSB7CiAgICAgezE0MiwgMX0sCi0gICAgezE0NywgMX0sCi0gICAgezE0OCwgMn0sCisgICAgezE0MywgMX0sCisgICAgezE0OCwgMX0sCisgICAgezE0OSwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzFbMV0gPSB7Ci0gICAgezE0MywgMn0sCitzdGF0aWMgYXJjIGFyY3NfNjVfMVsxXSA9IHsKKyAgICB7MTQ0LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182NV8yWzFdID0gewogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY0WzNdID0gewotICAgIHs0LCBhcmNzXzY0XzB9LAotICAgIHsxLCBhcmNzXzY0XzF9LAotICAgIHsxLCBhcmNzXzY0XzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc182NVszXSA9IHsKKyAgICB7NCwgYXJjc182NV8wfSwKKyAgICB7MSwgYXJjc182NV8xfSwKKyAgICB7MSwgYXJjc182NV8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfMFsxXSA9IHsKLSAgICB7MTQ5LCAxfSwKK3N0YXRpYyBhcmMgYXJjc182Nl8wWzFdID0geworICAgIHsxNTAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzY2XzFbMl0gPSB7CiAgICAgezM0LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzJbMV0gPSB7Ci0gICAgezE0MywgM30sCitzdGF0aWMgYXJjIGFyY3NfNjZfMlsxXSA9IHsKKyAgICB7MTQ0LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182Nl8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY1WzRdID0gewotICAgIHsxLCBhcmNzXzY1XzB9LAotICAgIHsyLCBhcmNzXzY1XzF9LAotICAgIHsxLCBhcmNzXzY1XzJ9LAotICAgIHsxLCBhcmNzXzY1XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc182Nls0XSA9IHsKKyAgICB7MSwgYXJjc182Nl8wfSwKKyAgICB7MiwgYXJjc182Nl8xfSwKKyAgICB7MSwgYXJjc182Nl8yfSwKKyAgICB7MSwgYXJjc182Nl8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMFsyXSA9IHsKLSAgICB7MTUwLCAxfSwKLSAgICB7MTUxLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMVsxXSA9IHsKLSAgICB7MTUxLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMlsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182N18wWzJdID0geworICAgIHsxNTEsIDF9LAogICAgIHsxNTIsIDJ9LAotICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY2WzNdID0gewotICAgIHsyLCBhcmNzXzY2XzB9LAotICAgIHsxLCBhcmNzXzY2XzF9LAotICAgIHsyLCBhcmNzXzY2XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N18wWzEwXSA9IHsKLSAgICB7MTMsIDF9LAotICAgIHsxNTQsIDJ9LAotICAgIHsxNTYsIDN9LAotICAgIHsyMywgNH0sCi0gICAgezE1OSwgNH0sCi0gICAgezE2MCwgNX0sCi0gICAgezgyLCA0fSwKLSAgICB7MTYxLCA0fSwKLSAgICB7MTYyLCA0fSwKLSAgICB7MTYzLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfMVszXSA9IHsKLSAgICB7NDksIDZ9LAotICAgIHsxNTMsIDZ9LAotICAgIHsxNSwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNjdfMVsxXSA9IHsKKyAgICB7MTUyLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjdfMlsyXSA9IHsKLSAgICB7MTUzLCA3fSwKLSAgICB7MTU1LCA0fSwKKyAgICB7MTUzLCAyfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY3XzNbMl0gPSB7Ci0gICAgezE1NywgOH0sCi0gICAgezE1OCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N181WzJdID0gewotICAgIHsxNjAsIDV9LAotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfNlsxXSA9IHsKLSAgICB7MTUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N183WzFdID0gewotICAgIHsxNTUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N184WzFdID0gewotICAgIHsxNTgsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjdbOV0gPSB7Ci0gICAgezEwLCBhcmNzXzY3XzB9LAotICAgIHszLCBhcmNzXzY3XzF9LAorc3RhdGljIHN0YXRlIHN0YXRlc182N1szXSA9IHsKKyAgICB7MiwgYXJjc182N18wfSwKKyAgICB7MSwgYXJjc182N18xfSwKICAgICB7MiwgYXJjc182N18yfSwKLSAgICB7MiwgYXJjc182N18zfSwKLSAgICB7MSwgYXJjc182N180fSwKLSAgICB7MiwgYXJjc182N181fSwKLSAgICB7MSwgYXJjc182N182fSwKLSAgICB7MSwgYXJjc182N183fSwKLSAgICB7MSwgYXJjc182N184fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfMFsyXSA9IHsKLSAgICB7MjYsIDF9LAotICAgIHs1MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjhfMFsxMF0gPSB7CisgICAgezEzLCAxfSwKKyAgICB7MTU1LCAyfSwKKyAgICB7MTU3LCAzfSwKKyAgICB7MjMsIDR9LAorICAgIHsxNjAsIDR9LAorICAgIHsxNjEsIDV9LAorICAgIHs4MywgNH0sCisgICAgezE2MiwgNH0sCisgICAgezE2MywgNH0sCisgICAgezE2NCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY4XzFbM10gPSB7Ci0gICAgezE2NCwgMn0sCisgICAgezUwLCA2fSwKKyAgICB7MTU0LCA2fSwKKyAgICB7MTUsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF8yWzJdID0geworICAgIHsxNTQsIDd9LAorICAgIHsxNTYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF8zWzJdID0geworICAgIHsxNTgsIDh9LAorICAgIHsxNTksIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF80WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfNVsyXSA9IHsKKyAgICB7MTYxLCA1fSwKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzZbMV0gPSB7CisgICAgezE1LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfN1sxXSA9IHsKKyAgICB7MTU2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfOFsxXSA9IHsKKyAgICB7MTU5LCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY4WzldID0geworICAgIHsxMCwgYXJjc182OF8wfSwKKyAgICB7MywgYXJjc182OF8xfSwKKyAgICB7MiwgYXJjc182OF8yfSwKKyAgICB7MiwgYXJjc182OF8zfSwKKyAgICB7MSwgYXJjc182OF80fSwKKyAgICB7MiwgYXJjc182OF81fSwKKyAgICB7MSwgYXJjc182OF82fSwKKyAgICB7MSwgYXJjc182OF83fSwKKyAgICB7MSwgYXJjc182OF84fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjlfMFsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHs1MSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY5XzFbM10gPSB7CisgICAgezE2NSwgMn0sCiAgICAgezMyLCAzfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjlfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzNbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjlfM1szXSA9IHsKICAgICB7MjYsIDR9LAotICAgIHs1MCwgNH0sCisgICAgezUxLCA0fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzRbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjlfNFsyXSA9IHsKICAgICB7MzIsIDN9LAogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY4WzVdID0gewotICAgIHsyLCBhcmNzXzY4XzB9LAotICAgIHszLCBhcmNzXzY4XzF9LAotICAgIHsxLCBhcmNzXzY4XzJ9LAotICAgIHszLCBhcmNzXzY4XzN9LAotICAgIHsyLCBhcmNzXzY4XzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc182OVs1XSA9IHsKKyAgICB7MiwgYXJjc182OV8wfSwKKyAgICB7MywgYXJjc182OV8xfSwKKyAgICB7MSwgYXJjc182OV8yfSwKKyAgICB7MywgYXJjc182OV8zfSwKKyAgICB7MiwgYXJjc182OV80fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfMFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF8wWzNdID0gewogICAgIHsxMywgMX0sCi0gICAgezE1NCwgMn0sCi0gICAgezgxLCAzfSwKKyAgICB7MTU1LCAyfSwKKyAgICB7ODIsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzFbMl0gPSB7CiAgICAgezE0LCA0fSwKICAgICB7MTUsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8yWzFdID0gewotICAgIHsxNjUsIDZ9LAorc3RhdGljIGFyYyBhcmNzXzcwXzJbMV0gPSB7CisgICAgezE2NiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfM1sxXSA9IHsKICAgICB7MjMsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzRbMV0gPSB7CiAgICAgezE1LCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF81WzFdID0gewogICAgIHswLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfNlsxXSA9IHsKLSAgICB7MTU1LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183MF82WzFdID0geworICAgIHsxNTYsIDV9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjlbN10gPSB7Ci0gICAgezMsIGFyY3NfNjlfMH0sCi0gICAgezIsIGFyY3NfNjlfMX0sCi0gICAgezEsIGFyY3NfNjlfMn0sCi0gICAgezEsIGFyY3NfNjlfM30sCi0gICAgezEsIGFyY3NfNjlfNH0sCi0gICAgezEsIGFyY3NfNjlfNX0sCi0gICAgezEsIGFyY3NfNjlfNn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzcwWzddID0geworICAgIHszLCBhcmNzXzcwXzB9LAorICAgIHsyLCBhcmNzXzcwXzF9LAorICAgIHsxLCBhcmNzXzcwXzJ9LAorICAgIHsxLCBhcmNzXzcwXzN9LAorICAgIHsxLCBhcmNzXzcwXzR9LAorICAgIHsxLCBhcmNzXzcwXzV9LAorICAgIHsxLCBhcmNzXzcwXzZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8wWzFdID0gewotICAgIHsxNjYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzcxXzBbMV0gPSB7CisgICAgezE2NywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzFfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzBfMlsyXSA9IHsKLSAgICB7MTY2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MV8yWzJdID0geworICAgIHsxNjcsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzcwWzNdID0gewotICAgIHsxLCBhcmNzXzcwXzB9LAotICAgIHsyLCBhcmNzXzcwXzF9LAotICAgIHsyLCBhcmNzXzcwXzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc183MVszXSA9IHsKKyAgICB7MSwgYXJjc183MV8wfSwKKyAgICB7MiwgYXJjc183MV8xfSwKKyAgICB7MiwgYXJjc183MV8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml8wWzJdID0gewogICAgIHsyNiwgMX0sCiAgICAgezI3LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml8xWzJdID0gewogICAgIHsyNywgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8yWzNdID0geworc3RhdGljIGFyYyBhcmNzXzcyXzJbM10gPSB7CiAgICAgezI2LCAzfSwKLSAgICB7MTY3LCA0fSwKKyAgICB7MTY4LCA0fSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzNbMl0gPSB7Ci0gICAgezE2NywgNH0sCitzdGF0aWMgYXJjIGFyY3NfNzJfM1syXSA9IHsKKyAgICB7MTY4LCA0fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzJfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183MVs1XSA9IHsKLSAgICB7MiwgYXJjc183MV8wfSwKLSAgICB7MiwgYXJjc183MV8xfSwKLSAgICB7MywgYXJjc183MV8yfSwKLSAgICB7MiwgYXJjc183MV8zfSwKLSAgICB7MSwgYXJjc183MV80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzJbNV0gPSB7CisgICAgezIsIGFyY3NfNzJfMH0sCisgICAgezIsIGFyY3NfNzJfMX0sCisgICAgezMsIGFyY3NfNzJfMn0sCisgICAgezIsIGFyY3NfNzJfM30sCisgICAgezEsIGFyY3NfNzJfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzNfMFsxXSA9IHsKICAgICB7MjcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzczXzFbMl0gPSB7CiAgICAgezI2LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzJbM10gPSB7Ci0gICAgezEsIGFyY3NfNzJfMH0sCi0gICAgezIsIGFyY3NfNzJfMX0sCi0gICAgezEsIGFyY3NfNzJfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzBbMl0gPSB7Ci0gICAgezEwNywgMX0sCi0gICAgezUwLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMVsyXSA9IHsKLSAgICB7MzIsIDJ9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMlszXSA9IHsKLSAgICB7MTA3LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzczXzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzNbM10gPSB7Ci0gICAgezIsIGFyY3NfNzNfMH0sCisgICAgezEsIGFyY3NfNzNfMH0sCiAgICAgezIsIGFyY3NfNzNfMX0sCi0gICAgezMsIGFyY3NfNzNfMn0sCisgICAgezEsIGFyY3NfNzNfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzBbMV0gPSB7Ci0gICAgezI2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183NF8wWzJdID0geworICAgIHsxMDgsIDF9LAorICAgIHs1MSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc0XzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzJbMl0gPSB7Ci0gICAgezI2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183NF8yWzNdID0geworICAgIHsxMDgsIDF9LAorICAgIHs1MSwgMX0sCiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzRbM10gPSB7Ci0gICAgezEsIGFyY3NfNzRfMH0sCisgICAgezIsIGFyY3NfNzRfMH0sCiAgICAgezIsIGFyY3NfNzRfMX0sCi0gICAgezIsIGFyY3NfNzRfMn0sCisgICAgezMsIGFyY3NfNzRfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzBbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzVfMFsxXSA9IHsKKyAgICB7MjYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xWzJdID0geworICAgIHszMiwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8yWzJdID0geworICAgIHsyNiwgMX0sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzVbM10gPSB7CisgICAgezEsIGFyY3NfNzVfMH0sCisgICAgezIsIGFyY3NfNzVfMX0sCisgICAgezIsIGFyY3NfNzVfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzBbM10gPSB7CiAgICAgezI2LCAxfSwKICAgICB7MzQsIDJ9LAotICAgIHs1MCwgM30sCisgICAgezUxLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMVs0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xWzRdID0gewogICAgIHsyNywgNH0sCi0gICAgezE2NCwgNX0sCisgICAgezE2NSwgNX0sCiAgICAgezMyLCA2fSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzJbMV0gPSB7Ci0gICAgezEwNywgN30sCitzdGF0aWMgYXJjIGFyY3NfNzZfMlsxXSA9IHsKKyAgICB7MTA4LCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfM1szXSA9IHsKLSAgICB7MTY0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183Nl8zWzNdID0geworICAgIHsxNjUsIDV9LAogICAgIHszMiwgNn0sCiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzRbMV0gPSB7CiAgICAgezI2LCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl81WzFdID0gewogICAgIHswLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfNlszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl82WzNdID0gewogICAgIHsyNiwgOH0sCi0gICAgezUwLCA4fSwKKyAgICB7NTEsIDh9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfN1szXSA9IHsKLSAgICB7MTY0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183Nl83WzNdID0geworICAgIHsxNjUsIDV9LAogICAgIHszMiwgOX0sCiAgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV84WzJdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzhbMl0gPSB7CiAgICAgezMyLCA2fSwKICAgICB7MCwgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzlbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfOVszXSA9IHsKICAgICB7MjYsIDEwfSwKICAgICB7MzQsIDExfSwKICAgICB7MCwgOX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzEwWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzEwWzFdID0gewogICAgIHsyNywgMTJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xMVsxXSA9IHsKLSAgICB7MTA3LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfNzZfMTFbMV0gPSB7CisgICAgezEwOCwgMTN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xMlsxXSA9IHsKICAgICB7MjYsIDEzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMTNbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfMTNbMl0gPSB7CiAgICAgezMyLCA5fSwKICAgICB7MCwgMTN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzVbMTRdID0gewotICAgIHszLCBhcmNzXzc1XzB9LAotICAgIHs0LCBhcmNzXzc1XzF9LAotICAgIHsxLCBhcmNzXzc1XzJ9LAotICAgIHszLCBhcmNzXzc1XzN9LAotICAgIHsxLCBhcmNzXzc1XzR9LAotICAgIHsxLCBhcmNzXzc1XzV9LAotICAgIHszLCBhcmNzXzc1XzZ9LAotICAgIHszLCBhcmNzXzc1Xzd9LAotICAgIHsyLCBhcmNzXzc1Xzh9LAotICAgIHszLCBhcmNzXzc1Xzl9LAotICAgIHsxLCBhcmNzXzc1XzEwfSwKLSAgICB7MSwgYXJjc183NV8xMX0sCi0gICAgezEsIGFyY3NfNzVfMTJ9LAotICAgIHsyLCBhcmNzXzc1XzEzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMFsxXSA9IHsKLSAgICB7MTY4LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMVsxXSA9IHsKLSAgICB7MjMsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8yWzJdID0gewotICAgIHsxMywgM30sCi0gICAgezI3LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfM1syXSA9IHsKLSAgICB7MTQsIDV9LAotICAgIHsxNSwgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzRbMV0gPSB7Ci0gICAgezI4LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfNVsxXSA9IHsKLSAgICB7MTUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl82WzFdID0gewotICAgIHsyNywgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzZbOF0gPSB7Ci0gICAgezEsIGFyY3NfNzZfMH0sCi0gICAgezEsIGFyY3NfNzZfMX0sCi0gICAgezIsIGFyY3NfNzZfMn0sCi0gICAgezIsIGFyY3NfNzZfM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzc2WzE0XSA9IHsKKyAgICB7MywgYXJjc183Nl8wfSwKKyAgICB7NCwgYXJjc183Nl8xfSwKKyAgICB7MSwgYXJjc183Nl8yfSwKKyAgICB7MywgYXJjc183Nl8zfSwKICAgICB7MSwgYXJjc183Nl80fSwKICAgICB7MSwgYXJjc183Nl81fSwKLSAgICB7MSwgYXJjc183Nl82fSwKLSAgICB7MSwgYXJjc183Nl83fSwKKyAgICB7MywgYXJjc183Nl82fSwKKyAgICB7MywgYXJjc183Nl83fSwKKyAgICB7MiwgYXJjc183Nl84fSwKKyAgICB7MywgYXJjc183Nl85fSwKKyAgICB7MSwgYXJjc183Nl8xMH0sCisgICAgezEsIGFyY3NfNzZfMTF9LAorICAgIHsxLCBhcmNzXzc2XzEyfSwKKyAgICB7MiwgYXJjc183Nl8xM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc3XzBbMV0gPSB7CiAgICAgezE2OSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc3XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzdfMVsxXSA9IHsKKyAgICB7MjMsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N18yWzJdID0geworICAgIHsxMywgM30sCisgICAgezI3LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfM1syXSA9IHsKKyAgICB7MTQsIDV9LAorICAgIHsxNSwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzRbMV0gPSB7CisgICAgezI4LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfNVsxXSA9IHsKKyAgICB7MTUsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N182WzFdID0geworICAgIHsyNywgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzdbMV0gPSB7CisgICAgezAsIDd9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzdbOF0gPSB7CisgICAgezEsIGFyY3NfNzdfMH0sCisgICAgezEsIGFyY3NfNzdfMX0sCisgICAgezIsIGFyY3NfNzdfMn0sCisgICAgezIsIGFyY3NfNzdfM30sCisgICAgezEsIGFyY3NfNzdfNH0sCisgICAgezEsIGFyY3NfNzdfNX0sCisgICAgezEsIGFyY3NfNzdfNn0sCisgICAgezEsIGFyY3NfNzdfN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzBbMV0gPSB7CisgICAgezE3MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc3XzJbMl0gPSB7Ci0gICAgezE2OSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzhfMlsyXSA9IHsKKyAgICB7MTcwLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183N1szXSA9IHsKLSAgICB7MSwgYXJjc183N18wfSwKLSAgICB7MiwgYXJjc183N18xfSwKLSAgICB7MiwgYXJjc183N18yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzhbM10gPSB7CisgICAgezEsIGFyY3NfNzhfMH0sCisgICAgezIsIGFyY3NfNzhfMX0sCisgICAgezIsIGFyY3NfNzhfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzBbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzlfMFszXSA9IHsKICAgICB7MjYsIDF9LAogICAgIHszNCwgMn0sCiAgICAgezMzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfMVszXSA9IHsKLSAgICB7MTY0LCAzfSwKK3N0YXRpYyBhcmMgYXJjc183OV8xWzNdID0geworICAgIHsxNjUsIDN9LAogICAgIHszMSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc5XzJbMV0gPSB7CiAgICAgezI2LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183OV8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc4WzRdID0gewotICAgIHszLCBhcmNzXzc4XzB9LAotICAgIHszLCBhcmNzXzc4XzF9LAotICAgIHsxLCBhcmNzXzc4XzJ9LAotICAgIHsxLCBhcmNzXzc4XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc183OVs0XSA9IHsKKyAgICB7MywgYXJjc183OV8wfSwKKyAgICB7MywgYXJjc183OV8xfSwKKyAgICB7MSwgYXJjc183OV8yfSwKKyAgICB7MSwgYXJjc183OV8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzlfMFsyXSA9IHsKLSAgICB7MTY0LCAxfSwKLSAgICB7MTcxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzlfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183OVsyXSA9IHsKLSAgICB7MiwgYXJjc183OV8wfSwKLSAgICB7MSwgYXJjc183OV8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfMFsxXSA9IHsKLSAgICB7MTAwLCAxfSwKK3N0YXRpYyBhcmMgYXJjc184MF8wWzJdID0geworICAgIHsxNjUsIDF9LAorICAgIHsxNzIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MF8xWzFdID0gewotICAgIHs2NSwgMn0sCisgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MF8yWzFdID0gewotICAgIHsxMDEsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF8zWzFdID0gewotICAgIHsxMTEsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF80WzJdID0gewotICAgIHsxNzAsIDV9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfNVsxXSA9IHsKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc184MFs2XSA9IHsKLSAgICB7MSwgYXJjc184MF8wfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODBbMl0gPSB7CisgICAgezIsIGFyY3NfODBfMH0sCiAgICAgezEsIGFyY3NfODBfMX0sCi0gICAgezEsIGFyY3NfODBfMn0sCi0gICAgezEsIGFyY3NfODBfM30sCi0gICAgezIsIGFyY3NfODBfNH0sCi0gICAgezEsIGFyY3NfODBfNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgxXzBbMV0gPSB7Ci0gICAgezk2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc184MV8wWzJdID0geworICAgIHsyMSwgMX0sCisgICAgezEwMSwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgxXzFbMV0gPSB7Ci0gICAgezExMywgMn0sCisgICAgezEwMSwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgxXzJbMl0gPSB7Ci0gICAgezE3MCwgM30sCi0gICAgezAsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzgxXzJbMV0gPSB7CisgICAgezY2LCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODFfM1sxXSA9IHsKLSAgICB7MCwgM30sCisgICAgezEwMiwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc184MVs0XSA9IHsKLSAgICB7MSwgYXJjc184MV8wfSwKK3N0YXRpYyBhcmMgYXJjc184MV80WzFdID0geworICAgIHsxMTIsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MV81WzJdID0geworICAgIHsxNzEsIDZ9LAorICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfODFfNlsxXSA9IHsKKyAgICB7MCwgNn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184MVs3XSA9IHsKKyAgICB7MiwgYXJjc184MV8wfSwKICAgICB7MSwgYXJjc184MV8xfSwKLSAgICB7MiwgYXJjc184MV8yfSwKKyAgICB7MSwgYXJjc184MV8yfSwKICAgICB7MSwgYXJjc184MV8zfSwKKyAgICB7MSwgYXJjc184MV80fSwKKyAgICB7MiwgYXJjc184MV81fSwKKyAgICB7MSwgYXJjc184MV82fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODJfMFsxXSA9IHsKLSAgICB7MjMsIDF9LAorICAgIHs5NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgyXzFbMV0gPSB7Ci0gICAgezAsIDF9LAorICAgIHsxMTQsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODJbMl0gPSB7Ci0gICAgezEsIGFyY3NfODJfMH0sCi0gICAgezEsIGFyY3NfODJfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgzXzBbMV0gPSB7Ci0gICAgezE3MywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgzXzFbMl0gPSB7Ci0gICAgezE3NCwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184M18yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzgyXzJbMl0gPSB7CisgICAgezE3MSwgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODNbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfODJfM1sxXSA9IHsKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184Mls0XSA9IHsKKyAgICB7MSwgYXJjc184Ml8wfSwKKyAgICB7MSwgYXJjc184Ml8xfSwKKyAgICB7MiwgYXJjc184Ml8yfSwKKyAgICB7MSwgYXJjc184Ml8zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODNfMFsxXSA9IHsKKyAgICB7MjMsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184M18xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgzWzJdID0gewogICAgIHsxLCBhcmNzXzgzXzB9LAotICAgIHsyLCBhcmNzXzgzXzF9LAotICAgIHsxLCBhcmNzXzgzXzJ9LAorICAgIHsxLCBhcmNzXzgzXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184NF8wWzJdID0gewotICAgIHs3NiwgMX0sCi0gICAgezksIDJ9LAorc3RhdGljIGFyYyBhcmNzXzg0XzBbMV0gPSB7CisgICAgezE3NCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzg0XzFbMV0gPSB7Ci0gICAgezI2LCAyfSwKK3N0YXRpYyBhcmMgYXJjc184NF8xWzJdID0geworICAgIHsxNzUsIDJ9LAorICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODRfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc184NFszXSA9IHsKLSAgICB7MiwgYXJjc184NF8wfSwKLSAgICB7MSwgYXJjc184NF8xfSwKKyAgICB7MSwgYXJjc184NF8wfSwKKyAgICB7MiwgYXJjc184NF8xfSwKICAgICB7MSwgYXJjc184NF8yfSwKIH07Ci1zdGF0aWMgZGZhIGRmYXNbODVdID0geworc3RhdGljIGFyYyBhcmNzXzg1XzBbMl0gPSB7CisgICAgezc3LCAxfSwKKyAgICB7OSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg1XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODVfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184NVszXSA9IHsKKyAgICB7MiwgYXJjc184NV8wfSwKKyAgICB7MSwgYXJjc184NV8xfSwKKyAgICB7MSwgYXJjc184NV8yfSwKK307CitzdGF0aWMgZGZhIGRmYXNbODZdID0gewogICAgIHsyNTYsICJzaW5nbGVfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMCwKLSAgICAgIlwwMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKKyAgICAgIlwwMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wyNjJcMDA0XDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDIifSwKICAgICB7MjU3LCAiZmlsZV9pbnB1dCIsIDAsIDIsIHN0YXRlc18xLAotICAgICAiXDIwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDEzMVwwMDJcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MSJ9LAorICAgICAiXDIwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDI2MlwwMDRcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMiJ9LAogICAgIHsyNTgsICJldmFsX2lucHV0IiwgMCwgMywgc3RhdGVzXzIsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCiAgICAgezI1OSwgImRlY29yYXRvciIsIDAsIDcsIHN0YXRlc18zLAogICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjAsICJkZWNvcmF0b3JzIiwgMCwgMiwgc3RhdGVzXzQsCkBAIC0xODc5LDE3OSArMTkyMiwxODEgQEAKICAgICAgIlwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjY0LCAicGFyYW1ldGVycyIsIDAsIDQsIHN0YXRlc184LAogICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjUsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc185LAorICAgIHsyNjUsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTksIHN0YXRlc185LAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjYsICJ0ZnBkZWYiLCAwLCA0LCBzdGF0ZXNfMTAsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NywgInZhcmFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc18xMSwKKyAgICB7MjY3LCAidmFyYXJnc2xpc3QiLCAwLCAxOSwgc3RhdGVzXzExLAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjgsICJ2ZnBkZWYiLCAwLCAyLCBzdGF0ZXNfMTIsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2OSwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTMsCi0gICAgICJcMDAwXDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCisgICAgICJcMDAwXDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMjYyXDAwNFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAyIn0sCiAgICAgezI3MCwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzE0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMCJ9LAogICAgIHsyNzEsICJzbWFsbF9zdG10IiwgMCwgMiwgc3RhdGVzXzE1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMCJ9LAogICAgIHsyNzIsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTYsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezI3MywgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7Mjc0LCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM3MFwzNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzUsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc2LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzcsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDE3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCi0gICAgezI3OCwgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3OSwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MCwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzI0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODEsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAotICAgIHsyODIsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODMsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg0LCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NSwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODYsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg3LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzEsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OCwgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMiwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg5LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMzLAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTAsICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zNCwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkxLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MiwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MywgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTQsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM4LAotICAgICAiXDAwMFwwMTBcMTQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEzMVwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMSJ9LAotICAgIHsyOTUsICJhc3luY19zdG10IiwgMCwgMywgc3RhdGVzXzM5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTYsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzQwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTcsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzQxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTgsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OSwgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAwLCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQ0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDEsICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwMiwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMywgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ3LAotICAgICAiXDAwNFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAotICAgIHszMDQsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMDUsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180OSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzA2LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc181MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA3LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNTEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwOCwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTIsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwOSwgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUzLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTAsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzExLCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181NSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzEyLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwzNzFcMDA3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzEzLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTQsICJleHByIiwgMCwgMiwgc3RhdGVzXzU4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTUsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE2LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxNywgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjEsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxOCwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjIsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxOSwgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjMsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIxLCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMiwgImF0b21fZXhwciIsIDAsIDMsIHN0YXRlc182NiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIzLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI0LCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182OCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI1LCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182OSwKLSAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDAifSwKLSAgICB7MzI2LCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc183MCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI3LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzcxLAotICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjgsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzcyLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHsyNzMsICJhbm5hc3NpZ24iLCAwLCA1LCBzdGF0ZXNfMTcsCiAgICAgICJcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMyOSwgImV4cHJsaXN0IiwgMCwgMywgc3RhdGVzXzczLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzAsICJ0ZXN0bGlzdCIsIDAsIDMsIHN0YXRlc183NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzMxLCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxNCwgc3RhdGVzXzc1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzIsICJjbGFzc2RlZiIsIDAsIDgsIHN0YXRlc183NiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDEifSwKLSAgICB7MzMzLCAiYXJnbGlzdCIsIDAsIDMsIHN0YXRlc183NywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzM0LCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzgsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzNSwgImNvbXBfaXRlciIsIDAsIDIsIHN0YXRlc183OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM2LCAiY29tcF9mb3IiLCAwLCA2LCBzdGF0ZXNfODAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNywgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfODEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzOCwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfODIsCisgICAgezI3NCwgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xOCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7Mjc1LCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM2MFwzNzdcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzYsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18yMCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc3LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzgsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDM2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwIn0sCisgICAgezI3OSwgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MCwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MSwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzI1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODIsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMCJ9LAorICAgIHsyODMsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODQsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg1LCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NiwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzMwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODcsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMSwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM5LCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184MywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKLSAgICB7MzQwLCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzg0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMiwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg5LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMzLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTAsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzQsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MSwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzM1LAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTIsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkzLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk0LCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NSwgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzksCisgICAgICJcMDAwXDAxMFwxNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjYyXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyIn0sCisgICAgezI5NiwgImFzeW5jX3N0bXQiLCAwLCAzLCBzdGF0ZXNfNDAsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NywgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OCwgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OSwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAwLCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQ0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDEsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMiwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzAzLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA0LCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDgsCisgICAgICJcMDA0XDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAwIn0sCisgICAgezMwNSwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMwNiwgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzUwLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMDcsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzUxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDgsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc181MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA5LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzEwLCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxMSwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzU1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTIsICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzU2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTMsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDM2MlwwMTdcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTQsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxNSwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxNiwgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTcsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc182MSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE4LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc182MiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE5LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIwLCAidGVybSIsIDAsIDIsIHN0YXRlc182NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIxLCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzY1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjIsICJwb3dlciIsIDAsIDQsIHN0YXRlc182NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIzLCAiYXRvbV9leHByIiwgMCwgMywgc3RhdGVzXzY3LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjQsICJhdG9tIiwgMCwgOSwgc3RhdGVzXzY4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjUsICJ0ZXN0bGlzdF9jb21wIiwgMCwgNSwgc3RhdGVzXzY5LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjYsICJ0cmFpbGVyIiwgMCwgNywgc3RhdGVzXzcwLAorICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMCJ9LAorICAgIHszMjcsICJzdWJzY3JpcHRsaXN0IiwgMCwgMywgc3RhdGVzXzcxLAorICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjgsICJzdWJzY3JpcHQiLCAwLCA1LCBzdGF0ZXNfNzIsCisgICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyOSwgInNsaWNlb3AiLCAwLCAzLCBzdGF0ZXNfNzMsCisgICAgICJcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzMCwgImV4cHJsaXN0IiwgMCwgMywgc3RhdGVzXzc0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzEsICJ0ZXN0bGlzdCIsIDAsIDMsIHN0YXRlc183NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzMyLCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxNCwgc3RhdGVzXzc2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzMsICJjbGFzc2RlZiIsIDAsIDgsIHN0YXRlc183NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDIifSwKKyAgICB7MzM0LCAiYXJnbGlzdCIsIDAsIDMsIHN0YXRlc183OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzM1LCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzNiwgImNvbXBfaXRlciIsIDAsIDIsIHN0YXRlc184MCwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM3LCAiY29tcF9mb3IiLCAwLCA3LCBzdGF0ZXNfODEsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzOCwgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfODIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzOSwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfODMsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezM0MCwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwIn0sCisgICAgezM0MSwgInlpZWxkX2FyZyIsIDAsIDMsIHN0YXRlc184NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKIH07Ci1zdGF0aWMgbGFiZWwgbGFiZWxzWzE3NV0gPSB7CitzdGF0aWMgbGFiZWwgbGFiZWxzWzE3Nl0gPSB7CiAgICAgezAsICJFTVBUWSJ9LAogICAgIHsyNTYsIDB9LAogICAgIHs0LCAwfSwKICAgICB7MjcwLCAwfSwKLSAgICB7Mjk0LCAwfSwKKyAgICB7Mjk1LCAwfSwKICAgICB7MjU3LCAwfSwKICAgICB7MjY5LCAwfSwKICAgICB7MCwgMH0sCiAgICAgezI1OCwgMH0sCi0gICAgezMzMCwgMH0sCisgICAgezMzMSwgMH0sCiAgICAgezI1OSwgMH0sCiAgICAgezQ5LCAwfSwKLSAgICB7MjkwLCAwfSwKKyAgICB7MjkxLCAwfSwKICAgICB7NywgMH0sCi0gICAgezMzMywgMH0sCisgICAgezMzNCwgMH0sCiAgICAgezgsIDB9LAogICAgIHsyNjAsIDB9LAogICAgIHsyNjEsIDB9LAotICAgIHszMzIsIDB9LAorICAgIHszMzMsIDB9LAogICAgIHsyNjMsIDB9LAogICAgIHsyNjIsIDB9LAogICAgIHs1NSwgMH0sCkBAIC0yMDU5LDkgKzIxMDQsOSBAQAogICAgIHsxLCAwfSwKICAgICB7MjY0LCAwfSwKICAgICB7NTEsIDB9LAotICAgIHszMDQsIDB9LAorICAgIHszMDUsIDB9LAogICAgIHsxMSwgMH0sCi0gICAgezMwMywgMH0sCisgICAgezMwNCwgMH0sCiAgICAgezI2NSwgMH0sCiAgICAgezI2NiwgMH0sCiAgICAgezIyLCAwfSwKQEAgLTIwNzMsMTcgKzIxMTgsMTggQEAKICAgICB7MjcxLCAwfSwKICAgICB7MTMsIDB9LAogICAgIHsyNzIsIDB9LAotICAgIHsyNzUsIDB9LAogICAgIHsyNzYsIDB9LAogICAgIHsyNzcsIDB9LAotICAgIHsyODMsIDB9LAotICAgIHsyOTEsIDB9LAorICAgIHsyNzgsIDB9LAorICAgIHsyODQsIDB9LAogICAgIHsyOTIsIDB9LAogICAgIHsyOTMsIDB9LAotICAgIHsyNzMsIDB9LAorICAgIHsyOTQsIDB9LAogICAgIHsyNzQsIDB9LAotICAgIHszMzksIDB9LAotICAgIHszMTMsIDB9LAorICAgIHsyNzMsIDB9LAorICAgIHsyNzUsIDB9LAorICAgIHszNDAsIDB9LAorICAgIHszMTQsIDB9LAogICAgIHszNiwgMH0sCiAgICAgezM3LCAwfSwKICAgICB7MzgsIDB9LApAQCAtMjA5OCwzNyArMjE0NCwzNyBAQAogICAgIHs0NiwgMH0sCiAgICAgezQ4LCAwfSwKICAgICB7MSwgImRlbCJ9LAotICAgIHszMjksIDB9LAorICAgIHszMzAsIDB9LAogICAgIHsxLCAicGFzcyJ9LAotICAgIHsyNzgsIDB9LAogICAgIHsyNzksIDB9LAogICAgIHsyODAsIDB9LAotICAgIHsyODIsIDB9LAogICAgIHsyODEsIDB9LAorICAgIHsyODMsIDB9LAorICAgIHsyODIsIDB9LAogICAgIHsxLCAiYnJlYWsifSwKICAgICB7MSwgImNvbnRpbnVlIn0sCiAgICAgezEsICJyZXR1cm4ifSwKICAgICB7MSwgInJhaXNlIn0sCiAgICAgezEsICJmcm9tIn0sCi0gICAgezI4NCwgMH0sCiAgICAgezI4NSwgMH0sCisgICAgezI4NiwgMH0sCiAgICAgezEsICJpbXBvcnQifSwKLSAgICB7Mjg5LCAwfSwKKyAgICB7MjkwLCAwfSwKICAgICB7MjMsIDB9LAogICAgIHs1MiwgMH0sCi0gICAgezI4OCwgMH0sCi0gICAgezI4NiwgMH0sCi0gICAgezEsICJhcyJ9LAorICAgIHsyODksIDB9LAogICAgIHsyODcsIDB9LAorICAgIHsxLCAiYXMifSwKKyAgICB7Mjg4LCAwfSwKICAgICB7MSwgImdsb2JhbCJ9LAogICAgIHsxLCAibm9ubG9jYWwifSwKICAgICB7MSwgImFzc2VydCJ9LAotICAgIHsyOTYsIDB9LAogICAgIHsyOTcsIDB9LAogICAgIHsyOTgsIDB9LAogICAgIHsyOTksIDB9LAogICAgIHszMDAsIDB9LAotICAgIHsyOTUsIDB9LAorICAgIHszMDEsIDB9LAorICAgIHsyOTYsIDB9LAogICAgIHsxLCAiaWYifSwKICAgICB7MSwgImVsaWYifSwKICAgICB7MSwgImVsc2UifSwKQEAgLTIxMzYsMjYgKzIxODIsMjYgQEAKICAgICB7MSwgImZvciJ9LAogICAgIHsxLCAiaW4ifSwKICAgICB7MSwgInRyeSJ9LAotICAgIHszMDIsIDB9LAorICAgIHszMDMsIDB9LAogICAgIHsxLCAiZmluYWxseSJ9LAogICAgIHsxLCAid2l0aCJ9LAotICAgIHszMDEsIDB9LAotICAgIHszMTQsIDB9LAorICAgIHszMDIsIDB9LAorICAgIHszMTUsIDB9LAogICAgIHsxLCAiZXhjZXB0In0sCiAgICAgezUsIDB9LAogICAgIHs2LCAwfSwKLSAgICB7MzA4LCAwfSwKLSAgICB7MzA2LCAwfSwKLSAgICB7MzA1LCAwfSwKLSAgICB7MzA3LCAwfSwKLSAgICB7MSwgImxhbWJkYSJ9LAogICAgIHszMDksIDB9LAotICAgIHsxLCAib3IifSwKKyAgICB7MzA3LCAwfSwKKyAgICB7MzA2LCAwfSwKKyAgICB7MzA4LCAwfSwKKyAgICB7MSwgImxhbWJkYSJ9LAogICAgIHszMTAsIDB9LAorICAgIHsxLCAib3IifSwKKyAgICB7MzExLCAwfSwKICAgICB7MSwgImFuZCJ9LAogICAgIHsxLCAibm90In0sCi0gICAgezMxMSwgMH0sCiAgICAgezMxMiwgMH0sCisgICAgezMxMywgMH0sCiAgICAgezIwLCAwfSwKICAgICB7MjEsIDB9LAogICAgIHsyNywgMH0sCkBAIC0yMTY0LDU0ICsyMjEwLDU0IEBACiAgICAgezI4LCAwfSwKICAgICB7MjgsIDB9LAogICAgIHsxLCAiaXMifSwKLSAgICB7MzE1LCAwfSwKLSAgICB7MTgsIDB9LAogICAgIHszMTYsIDB9LAotICAgIHszMiwgMH0sCisgICAgezE4LCAwfSwKICAgICB7MzE3LCAwfSwKLSAgICB7MTksIDB9LAorICAgIHszMiwgMH0sCiAgICAgezMxOCwgMH0sCisgICAgezE5LCAwfSwKKyAgICB7MzE5LCAwfSwKICAgICB7MzMsIDB9LAogICAgIHszNCwgMH0sCi0gICAgezMxOSwgMH0sCisgICAgezMyMCwgMH0sCiAgICAgezE0LCAwfSwKICAgICB7MTUsIDB9LAotICAgIHszMjAsIDB9LAorICAgIHszMjEsIDB9LAogICAgIHsxNywgMH0sCiAgICAgezI0LCAwfSwKICAgICB7NDcsIDB9LAogICAgIHszMSwgMH0sCi0gICAgezMyMSwgMH0sCiAgICAgezMyMiwgMH0sCi0gICAgezU0LCAwfSwKICAgICB7MzIzLCAwfSwKLSAgICB7MzI1LCAwfSwKKyAgICB7NTQsIDB9LAogICAgIHszMjQsIDB9LAorICAgIHszMjYsIDB9LAorICAgIHszMjUsIDB9LAogICAgIHs5LCAwfSwKICAgICB7MTAsIDB9LAogICAgIHsyNSwgMH0sCi0gICAgezMzMSwgMH0sCisgICAgezMzMiwgMH0sCiAgICAgezI2LCAwfSwKICAgICB7MiwgMH0sCiAgICAgezMsIDB9LAogICAgIHsxLCAiTm9uZSJ9LAogICAgIHsxLCAiVHJ1ZSJ9LAogICAgIHsxLCAiRmFsc2UifSwKLSAgICB7MzM2LCAwfSwKLSAgICB7MzI2LCAwfSwKKyAgICB7MzM3LCAwfSwKICAgICB7MzI3LCAwfSwKICAgICB7MzI4LCAwfSwKKyAgICB7MzI5LCAwfSwKICAgICB7MSwgImNsYXNzIn0sCi0gICAgezMzNCwgMH0sCiAgICAgezMzNSwgMH0sCi0gICAgezMzNywgMH0sCisgICAgezMzNiwgMH0sCiAgICAgezMzOCwgMH0sCisgICAgezMzOSwgMH0sCiAgICAgezEsICJ5aWVsZCJ9LAotICAgIHszNDAsIDB9LAorICAgIHszNDEsIDB9LAogfTsKIGdyYW1tYXIgX1B5UGFyc2VyX0dyYW1tYXIgPSB7Ci0gICAgODUsCisgICAgODYsCiAgICAgZGZhcywKLSAgICB7MTc1LCBsYWJlbHN9LAorICAgIHsxNzYsIGxhYmVsc30sCiAgICAgMjU2CiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydC5jIGIvUHl0aG9uL2ltcG9ydC5jCmluZGV4IDdlOTQ3ZWMuLmRmZGQ5NDAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnQuYworKysgYi9QeXRob24vaW1wb3J0LmMKQEAgLTM4LDE0ICszOCw2IEBACiAKICNpbmNsdWRlICJjbGluaWMvaW1wb3J0LmMuaCIKIAotLypbcHl0aG9uIGlucHV0XQotY2xhc3MgZnNfdW5pY29kZV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeU9iamVjdCAqJwotICAgIGNvbnZlcnRlciA9ICdQeVVuaWNvZGVfRlNEZWNvZGVyJwotCi1bcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD05ZDY3ODYyMzAxNjYwMDZlXSovCi0KIC8qIEluaXRpYWxpemUgdGhpbmdzICovCiAKIHZvaWQKQEAgLTMyMCw3ICszMTIsNyBAQAogCiAKIC8qIExpc3Qgb2YgbmFtZXMgdG8gY2xlYXIgaW4gc3lzICovCi1zdGF0aWMgY2hhciogc3lzX2RlbGV0ZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3lzX2RlbGV0ZXNbXSA9IHsKICAgICAicGF0aCIsICJhcmd2IiwgInBzMSIsICJwczIiLAogICAgICJsYXN0X3R5cGUiLCAibGFzdF92YWx1ZSIsICJsYXN0X3RyYWNlYmFjayIsCiAgICAgInBhdGhfaG9va3MiLCAicGF0aF9pbXBvcnRlcl9jYWNoZSIsICJtZXRhX3BhdGgiLApAQCAtMzMwLDcgKzMyMiw3IEBACiAgICAgTlVMTAogfTsKIAotc3RhdGljIGNoYXIqIHN5c19maWxlc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzeXNfZmlsZXNbXSA9IHsKICAgICAic3RkaW4iLCAiX19zdGRpbl9fIiwKICAgICAic3Rkb3V0IiwgIl9fc3Rkb3V0X18iLAogICAgICJzdGRlcnIiLCAiX19zdGRlcnJfXyIsCkBAIC0zNDcsNyArMzM5LDcgQEAKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IGludGVycC0+bW9kdWxlczsKICAgICBQeU9iamVjdCAqd2Vha2xpc3QgPSBOVUxMOwotICAgIGNoYXIgKipwOworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqcDsKIAogICAgIGlmIChtb2R1bGVzID09IE5VTEwpCiAgICAgICAgIHJldHVybjsgLyogQWxyZWFkeSBkb25lICovCkBAIC04ODMsMTAgKzg3NSw4IEBACiAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgb2xkbmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRtcCA9IGNvLT5jb19maWxlbmFtZTsKLSAgICBjby0+Y29fZmlsZW5hbWUgPSBuZXduYW1lOwotICAgIFB5X0lOQ1JFRihjby0+Y29fZmlsZW5hbWUpOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X0lOQ1JFRihuZXduYW1lKTsKKyAgICBQeV9YU0VUUkVGKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSk7CiAKICAgICBjb25zdGFudHMgPSBjby0+Y29fY29uc3RzOwogICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGNvbnN0YW50cyk7CkBAIC0xMDg3LDYgKzEwNzcsMTAgQEAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgcG9pbnRlciB0byBtb2R1bGUgaW5pdCBmdW5jdGlvbi4gKi8KICAgICAgICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZGVmLT5tX2Jhc2UubV9pbml0ID0gcC0+aW5pdGZ1bmM7CiAgICAgICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtb2QsIG5hbWUsIG5hbWUpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CkBAIC0xMzMyLDEwICsxMzI2LDggQEAKICAgICAgICAgICAgIChhbHdheXNfdHJpbSB8fAogICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGNvZGUtPmNvX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ZyYW1lcykgPT0gMCkpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSAqb3V0ZXJfbGluazsKLSAgICAgICAgICAgICpvdXRlcl9saW5rID0gbmV4dDsKICAgICAgICAgICAgIFB5X1hJTkNSRUYobmV4dCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgICAgIFB5X1hTRVRSRUYoKm91dGVyX2xpbmssIG5leHQpOwogICAgICAgICAgICAgcHJldl9saW5rID0gb3V0ZXJfbGluazsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTEzNDgsNjEgKzEzNDAsMTcwIEBACiB9CiAKIAotUHlPYmplY3QgKgotUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpnaXZlbl9nbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmdpdmVuX2Zyb21saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsKQorc3RhdGljIFB5T2JqZWN0ICoKK3Jlc29sdmVfbmFtZShQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIGludCBsZXZlbCkKIHsKLSAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKICAgICBfUHlfSURFTlRJRklFUihfX3NwZWNfXyk7Ci0gICAgX1B5X0lERU5USUZJRVIoX2luaXRpYWxpemluZyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19wYWNrYWdlX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fcGF0aF9fKTsKICAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgX1B5X0lERU5USUZJRVIocGFyZW50KTsKKyAgICBQeU9iamVjdCAqYWJzX25hbWU7CisgICAgUHlPYmplY3QgKnBhY2thZ2UgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzcGVjOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgIFB5X3NzaXplX3QgbGFzdF9kb3Q7CisgICAgUHlPYmplY3QgKmJhc2U7CisgICAgaW50IGxldmVsX3VwOworCisgICAgaWYgKGdsb2JhbHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmICghUHlEaWN0X0NoZWNrKGdsb2JhbHMpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJnbG9iYWxzIG11c3QgYmUgYSBkaWN0Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhY2thZ2VfXyk7CisgICAgaWYgKHBhY2thZ2UgPT0gUHlfTm9uZSkgeworICAgICAgICBwYWNrYWdlID0gTlVMTDsKKyAgICB9CisgICAgc3BlYyA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fc3BlY19fKTsKKworICAgIGlmIChwYWNrYWdlICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInBhY2thZ2UgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzcGVjICE9IE5VTEwgJiYgc3BlYyAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBpbnQgZXF1YWw7CisgICAgICAgICAgICBQeU9iamVjdCAqcGFyZW50ID0gX1B5T2JqZWN0X0dldEF0dHJJZChzcGVjLCAmUHlJZF9wYXJlbnQpOworICAgICAgICAgICAgaWYgKHBhcmVudCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXF1YWwgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocGFja2FnZSwgcGFyZW50LCBQeV9FUSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocGFyZW50KTsKKyAgICAgICAgICAgIGlmIChlcXVhbCA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWwgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfSW1wb3J0V2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQiLCAxKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoc3BlYyAhPSBOVUxMICYmIHNwZWMgIT0gUHlfTm9uZSkgeworICAgICAgICBwYWNrYWdlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzcGVjLCAmUHlJZF9wYXJlbnQpOworICAgICAgICBpZiAocGFja2FnZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJfX3NwZWNfXy5wYXJlbnQgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19JbXBvcnRXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcmVzb2x2ZSBwYWNrYWdlIGZyb20gX19zcGVjX18gb3IgX19wYWNrYWdlX18sICIKKyAgICAgICAgICAgICAgICAgICAgImZhbGxpbmcgYmFjayBvbiBfX25hbWVfXyBhbmQgX19wYXRoX18iLCAxKSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19uYW1lX18pOworICAgICAgICBpZiAocGFja2FnZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fbmFtZV9fIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19wYXRoX18pID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgZG90OworCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHBhY2thZ2UpIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYWNrYWdlLCAnLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgocGFja2FnZSksIC0xKTsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTIpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZG90ID49IDApIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYWNrYWdlLCAwLCBkb3QpOworICAgICAgICAgICAgICAgIGlmIChzdWJzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9TRVRSRUYocGFja2FnZSwgc3Vic3RyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxhc3RfZG90ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocGFja2FnZSk7CisgICAgaWYgKGxhc3RfZG90ID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICJhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IHdpdGggbm8ga25vd24gcGFyZW50IHBhY2thZ2UiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBwYWNrYWdlKSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAiUGFyZW50IG1vZHVsZSAlUiBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAiCisgICAgICAgICAgICAgICAgImltcG9ydCIsIHBhY2thZ2UpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGZvciAobGV2ZWxfdXAgPSAxOyBsZXZlbF91cCA8IGxldmVsOyBsZXZlbF91cCArPSAxKSB7CisgICAgICAgIGxhc3RfZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywgMCwgbGFzdF9kb3QsIC0xKTsKKyAgICAgICAgaWYgKGxhc3RfZG90ID09IC0yKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGxhc3RfZG90ID09IC0xKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2FnZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKKyAgICBQeV9ERUNSRUYocGFja2FnZSk7CisgICAgaWYgKGJhc2UgPT0gTlVMTCB8fCBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBiYXNlOworICAgIH0KKworICAgIGFic19uYW1lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLiVVIiwgYmFzZSwgbmFtZSk7CisgICAgUHlfREVDUkVGKGJhc2UpOworICAgIHJldHVybiBhYnNfbmFtZTsKKworICBlcnJvcjoKKyAgICBQeV9YREVDUkVGKHBhY2thZ2UpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCit7CiAgICAgX1B5X0lERU5USUZJRVIoX2ZpbmRfYW5kX2xvYWQpOwogICAgIF9QeV9JREVOVElGSUVSKF9oYW5kbGVfZnJvbWxpc3QpOwotICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOwotICAgIF9QeV9zdGF0aWNfc3RyaW5nKHNpbmdsZV9kb3QsICIuIik7CiAgICAgUHlPYmplY3QgKmFic19uYW1lID0gTlVMTDsKLSAgICBQeU9iamVjdCAqYnVpbHRpbnNfaW1wb3J0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqZmluYWxfbW9kID0gTlVMTDsKICAgICBQeU9iamVjdCAqbW9kID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmdsb2JhbHMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IE5VTEw7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgaW50IGhhc19mcm9tOwogCi0gICAgLyogTWFrZSBzdXJlIHRvIHVzZSBkZWZhdWx0IHZhbHVlcyBzbyBhcyB0byBub3QgaGF2ZQotICAgICAgIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKCkgdHJ1bmNhdGUgdGhlIHBhcmFtZXRlciBsaXN0IGJlY2F1c2Ugb2YgYQotICAgICAgIE5VTEwgYXJndW1lbnQuICovCi0gICAgaWYgKGdpdmVuX2dsb2JhbHMgPT0gTlVMTCkgewotICAgICAgICBnbG9iYWxzID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBPbmx5IGhhdmUgdG8gY2FyZSB3aGF0IGdpdmVuX2dsb2JhbHMgaXMgaWYgaXQgd2lsbCBiZSB1c2VkCi0gICAgICAgICAgIGZvciBzb21ldGhpbmcuICovCi0gICAgICAgIGlmIChsZXZlbCA+IDAgJiYgIVB5RGljdF9DaGVjayhnaXZlbl9nbG9iYWxzKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdsb2JhbHMgbXVzdCBiZSBhIGRpY3QiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgZ2xvYmFscyA9IGdpdmVuX2dsb2JhbHM7Ci0gICAgICAgIFB5X0lOQ1JFRihnbG9iYWxzKTsKLSAgICB9Ci0KLSAgICBpZiAoZ2l2ZW5fZnJvbWxpc3QgPT0gTlVMTCkgewotICAgICAgICBmcm9tbGlzdCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgICAgIGlmIChmcm9tbGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmcm9tbGlzdCA9IGdpdmVuX2Zyb21saXN0OwotICAgICAgICBQeV9JTkNSRUYoZnJvbWxpc3QpOwotICAgIH0KICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTE0MTUsMTQwICsxNTE2LDQ0IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtb2R1bGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSA8IDApIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG5hbWUpIDwgMCkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBpZiAobGV2ZWwgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibGV2ZWwgbXVzdCBiZSA+PSAwIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGVsc2UgaWYgKGxldmVsID4gMCkgewotICAgICAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19wYWNrYWdlX18pOwotICAgICAgICBpZiAocGFja2FnZSAhPSBOVUxMICYmIHBhY2thZ2UgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOwotICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicGFja2FnZSBtdXN0IGJlIGEgc3RyaW5nIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX25hbWVfXyk7Ci0gICAgICAgICAgICBpZiAocGFja2FnZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiJ19fbmFtZV9fJyBub3QgaW4gZ2xvYmFscyIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fbmFtZV9fIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOwogCi0gICAgICAgICAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19wYXRoX18pID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGFydGl0aW9uID0gTlVMTDsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOwotICAgICAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYXJ0aXRpb24gPSBQeVVuaWNvZGVfUlBhcnRpdGlvbihwYWNrYWdlLCBib3Jyb3dlZF9kb3QpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYWNrYWdlKTsKLSAgICAgICAgICAgICAgICBpZiAocGFydGl0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFja2FnZSA9IFB5VHVwbGVfR0VUX0lURU0ocGFydGl0aW9uLCAwKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBwYWNrYWdlKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICVSIG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICIKLSAgICAgICAgICAgICAgICAgICAgImltcG9ydCIsIHBhY2thZ2UpOworICAgIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgYWJzX25hbWUgPSByZXNvbHZlX25hbWUobmFtZSwgZ2xvYmFscywgbGV2ZWwpOworICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7ICAvKiBsZXZlbCA9PSAwICovCiAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA9PSAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkVtcHR5IG1vZHVsZSBuYW1lIik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIHBhY2thZ2UgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7Ci0gICAgfQotCi0gICAgaWYgKGxldmVsID4gMCkgewotICAgICAgICBQeV9zc2l6ZV90IGxhc3RfZG90ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocGFja2FnZSk7Ci0gICAgICAgIFB5T2JqZWN0ICpiYXNlID0gTlVMTDsKLSAgICAgICAgaW50IGxldmVsX3VwID0gMTsKLQotICAgICAgICBmb3IgKGxldmVsX3VwID0gMTsgbGV2ZWxfdXAgPCBsZXZlbDsgbGV2ZWxfdXAgKz0gMSkgewotICAgICAgICAgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfRmluZENoYXIocGFja2FnZSwgJy4nLCAwLCBsYXN0X2RvdCwgLTEpOwotICAgICAgICAgICAgaWYgKGxhc3RfZG90ID09IC0yKSB7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGxhc3RfZG90ID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3AtbGV2ZWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2FnZSIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBiYXNlID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYWNrYWdlLCAwLCBsYXN0X2RvdCk7Ci0gICAgICAgIGlmIChiYXNlID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA+IDApIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QsICpzZXEgPSBOVUxMOwotCi0gICAgICAgICAgICBib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7Ci0gICAgICAgICAgICBzZXEgPSBQeVR1cGxlX1BhY2soMiwgYmFzZSwgbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZSk7Ci0gICAgICAgICAgICBpZiAoYm9ycm93ZWRfZG90ID09IE5VTEwgfHwgc2VxID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhYnNfbmFtZSA9IFB5VW5pY29kZV9Kb2luKGJvcnJvd2VkX2RvdCwgc2VxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOwotICAgICAgICAgICAgaWYgKGFic19uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWJzX25hbWUgPSBiYXNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewogICAgICAgICBhYnNfbmFtZSA9IG5hbWU7CiAgICAgICAgIFB5X0lOQ1JFRihhYnNfbmFtZSk7CiAgICAgfQogCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKLSNlbmRpZgotICAgLyogRnJvbSB0aGlzIHBvaW50IGZvcndhcmQsIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2shICovCi0gICAgLyogWFhYIGludGVycC0+YnVpbHRpbnNfY29weSBpcyBOVUxMIGluIHN1YmludGVycHJldGVyISAqLwotICAgIGJ1aWx0aW5zX2ltcG9ydCA9IF9QeURpY3RfR2V0SXRlbUlkKGludGVycC0+YnVpbHRpbnNfY29weSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwLT5idWlsdGluc19jb3B5IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKLSAgICBpZiAoYnVpbHRpbnNfaW1wb3J0ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCAiX19pbXBvcnRfXyBub3QgZm91bmQiKTsKLSAgICAgICAgZ290byBlcnJvcl93aXRoX3VubG9jazsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKGJ1aWx0aW5zX2ltcG9ydCk7Ci0KICAgICBtb2QgPSBQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIGFic19uYW1lKTsKICAgICBpZiAobW9kID09IFB5X05vbmUpIHsKICAgICAgICAgUHlPYmplY3QgKm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJpbXBvcnQgb2YgJVIgaGFsdGVkOyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBpbiBzeXMubW9kdWxlcyIsIGFic19uYW1lKTsKICAgICAgICAgaWYgKG1zZyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtc2csIGFic19uYW1lLCBOVUxMKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvciwgbXNnLAorICAgICAgICAgICAgICAgICAgICBhYnNfbmFtZSwgTlVMTCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgfQogICAgICAgICBtb2QgPSBOVUxMOwotICAgICAgICBnb3RvIGVycm9yX3dpdGhfdW5sb2NrOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBlbHNlIGlmIChtb2QgIT0gTlVMTCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihfX3NwZWNfXyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9pbml0aWFsaXppbmcpOworICAgICAgICBfUHlfSURFTlRJRklFUihfbG9ja191bmxvY2tfbW9kdWxlKTsKICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKnNwZWM7CiAgICAgICAgIGludCBpbml0aWFsaXppbmcgPSAwOwpAQCAtMTU3MSw5MSArMTU3Niw4MyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChpbml0aWFsaXppbmcgPT0gLTEpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5pdGlhbGl6aW5nID4gMCkgewotICAgICAgICAgICAgLyogX2Jvb3RzdHJhcC5fbG9ja191bmxvY2tfbW9kdWxlKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCi0gICAgICAgICAgICB2YWx1ZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fbG9ja191bmxvY2tfbW9kdWxlLCBhYnNfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpbml0aWFsaXppbmcgPiAwKSB7CiAjaWZkZWYgV0lUSF9USFJFQUQKLSAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKICNlbmRpZgorICAgICAgICAgICAgICAgIC8qIF9ib290c3RyYXAuX2xvY2tfdW5sb2NrX21vZHVsZSgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLworICAgICAgICAgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fbG9ja191bmxvY2tfbW9kdWxlLCBhYnNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgX1B5SW1wb3J0X0FjcXVpcmVMb2NrKCk7CisjZW5kaWYKICAgICAgICAgLyogX2Jvb3RzdHJhcC5fZmluZF9hbmRfbG9hZCgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLwogICAgICAgICBtb2QgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2ZpbmRfYW5kX2xvYWQsIGFic19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluc19pbXBvcnQsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPmltcG9ydF9mdW5jLCBOVUxMKTsKICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgfQotICAgIC8qIEZyb20gbm93IG9uIHdlIGRvbid0IGhvbGQgdGhlIGltcG9ydCBsb2NrIGFueW1vcmUuICovCiAKLSAgICBoYXNfZnJvbSA9IFB5T2JqZWN0X0lzVHJ1ZShmcm9tbGlzdCk7Ci0gICAgaWYgKGhhc19mcm9tIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICBoYXNfZnJvbSA9IDA7CisgICAgaWYgKGZyb21saXN0ICE9IE5VTEwgJiYgZnJvbWxpc3QgIT0gUHlfTm9uZSkgeworICAgICAgICBoYXNfZnJvbSA9IFB5T2JqZWN0X0lzVHJ1ZShmcm9tbGlzdCk7CisgICAgICAgIGlmIChoYXNfZnJvbSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KICAgICBpZiAoIWhhc19mcm9tKSB7Ci0gICAgICAgIGlmIChsZXZlbCA9PSAwIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgewotICAgICAgICAgICAgUHlPYmplY3QgKmZyb250ID0gTlVMTDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOwotICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKTsKKyAgICAgICAgaWYgKGxldmVsID09IDAgfHwgbGVuID4gMCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBkb3Q7CiAKLSAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKG5hbWUsICcuJywgMCwgbGVuLCAxKTsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTIpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwYXJ0aXRpb24gPSBQeVVuaWNvZGVfUGFydGl0aW9uKG5hbWUsIGJvcnJvd2VkX2RvdCk7Ci0gICAgICAgICAgICBpZiAocGFydGl0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDEpKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoZG90ID09IC0xKSB7CiAgICAgICAgICAgICAgICAgLyogTm8gZG90IGluIG1vZHVsZSBuYW1lLCBzaW1wbGUgZXhpdCAqLwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOwogICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IG1vZDsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYobW9kKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmcm9udCA9IFB5VHVwbGVfR0VUX0lURU0ocGFydGl0aW9uLCAwKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihmcm9udCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKLQogICAgICAgICAgICAgaWYgKGxldmVsID09IDApIHsKLSAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGJ1aWx0aW5zX2ltcG9ydCwgZnJvbnQsIE5VTEwpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9udCA9IFB5VW5pY29kZV9TdWJzdHJpbmcobmFtZSwgMCwgZG90KTsKKyAgICAgICAgICAgICAgICBpZiAoZnJvbnQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KGZyb250LCBOVUxMLCBOVUxMLCBOVUxMLCAwKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjdXRfb2ZmID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGZyb250KTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGN1dF9vZmYgPSBsZW4gLSBkb3Q7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBhYnNfbmFtZV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhYnNfbmFtZSk7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvX3JldHVybiA9IFB5VW5pY29kZV9TdWJzdHJpbmcoYWJzX25hbWUsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic19uYW1lX2xlbiAtIGN1dF9vZmYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CiAgICAgICAgICAgICAgICAgaWYgKHRvX3JldHVybiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCB0b19yZXR1cm4pOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0b19yZXR1cm4pOwogICAgICAgICAgICAgICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgbm90IGluIHN5cy5tb2R1bGVzIGFzIGV4cGVjdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZpbmFsX21vZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xNjY2LDI0ICsxNjYzLDE0IEBACiAgICAgZWxzZSB7CiAgICAgICAgIGZpbmFsX21vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9faGFuZGxlX2Zyb21saXN0LCBtb2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBidWlsdGluc19pbXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBpbnRlcnAtPmltcG9ydF9mdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICB9Ci0gICAgZ290byBlcnJvcjsKIAotICBlcnJvcl93aXRoX3VubG9jazoKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIm5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jayIpOwotICAgIH0KLSNlbmRpZgogICBlcnJvcjoKICAgICBQeV9YREVDUkVGKGFic19uYW1lKTsKLSAgICBQeV9YREVDUkVGKGJ1aWx0aW5zX2ltcG9ydCk7CiAgICAgUHlfWERFQ1JFRihtb2QpOwogICAgIFB5X1hERUNSRUYocGFja2FnZSk7Ci0gICAgUHlfWERFQ1JFRihnbG9iYWxzKTsKLSAgICBQeV9YREVDUkVGKGZyb21saXN0KTsKICAgICBpZiAoZmluYWxfbW9kID09IE5VTEwpCiAgICAgICAgIHJlbW92ZV9pbXBvcnRsaWJfZnJhbWVzKCk7CiAgICAgcmV0dXJuIGZpbmFsX21vZDsKQEAgLTE5NTksMTkgKzE5NDYsMTUgQEAKIAogICAgIGRlZiA9IFB5TW9kdWxlX0dldERlZihtb2QpOwogICAgIGlmIChkZWYgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIHN0YXRlID0gUHlNb2R1bGVfR2V0U3RhdGUobW9kKTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmIChzdGF0ZSkgewogICAgICAgICAvKiBBbHJlYWR5IGluaXRpYWxpemVkOyBza2lwIHJlbG9hZCAqLwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKICAgICByZXR1cm4gUHlNb2R1bGVfRXhlY0RlZihtb2QsIGRlZik7CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5jIGIvUHl0aG9uL2ltcG9ydGRsLmMKaW5kZXggMWFhNTg1ZC4uYWMwMzI4OSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmMKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmMKQEAgLTIzLDggKzIzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApOwogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBjaGFyICphc2NpaV9vbmx5X3ByZWZpeCA9ICJQeUluaXQiOwotc3RhdGljIGNvbnN0IGNoYXIgKm5vbmFzY2lpX3ByZWZpeCA9ICJQeUluaXRVIjsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYXNjaWlfb25seV9wcmVmaXggPSAiUHlJbml0IjsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgbm9uYXNjaWlfcHJlZml4ID0gIlB5SW5pdFUiOwogCiAvKiBHZXQgdGhlIHZhcmlhYmxlIHBhcnQgb2YgYSBtb2R1bGUncyBleHBvcnQgc3ltYm9sIG5hbWUuCiAgKiBSZXR1cm5zIGEgYnl0ZXMgaW5zdGFuY2UuIEZvciBub24tQVNDSUktbmFtZWQgbW9kdWxlcywgdGhlIG5hbWUgaXMKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRsaWIuaCBiL1B5dGhvbi9pbXBvcnRsaWIuaAppbmRleCA3ZjZiNzUzLi41MWE2Nzk0IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0bGliLmgKKysrIGIvUHl0aG9uL2ltcG9ydGxpYi5oCkBAIC0xLDg1ICsxLDcyIEBACiAvKiBBdXRvLWdlbmVyYXRlZCBieSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNjksMiwwLDAsMTAwLDAsMCw5MCwwLDAsCi0gICAgMTAwLDEsMCw5NywxLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgMiwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDMsMCw3MSwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCwxMDAsNywwLDEzMSwyLDAsOTAsNCwKLSAgICAwLDEwNSwwLDAsOTAsNSwwLDEwNSwwLDAsOTAsNiwwLDcxLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDEwMCw5LDAsMTAxLDcsMCwxMzEsMywwLAotICAgIDkwLDgsMCw3MSwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEwMCwxMSwwLAotICAgIDEzMSwyLDAsOTAsOSwwLDcxLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsCi0gICAgMTAwLDEzLDAsMTMxLDIsMCw5MCwxMCwwLDcxLDEwMCwxNCwwLDEwMCwxNSwwLAotICAgIDEzMiwwLDAsMTAwLDE1LDAsMTMxLDIsMCw5MCwxMSwwLDEwMCwxNiwwLDEwMCwKLSAgICAxNywwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwKLSAgICAwLDkwLDEzLDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwxNCwwLAotICAgIDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEwMCwyNSwwLDEzMiwwLDEsOTAsCi0gICAgMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzIsMCwwLDkwLDE2LDAsMTAwLDI4LAotICAgIDAsMTAwLDI5LDAsMTMyLDAsMCw5MCwxNywwLDEwMCwzMCwwLDEwMCwzMSwwLAotICAgIDEzMiwwLDAsOTAsMTgsMCwxMDAsMzIsMCwxMDAsMzMsMCwxMzIsMCwwLDkwLAotICAgIDE5LDAsNzEsMTAwLDM0LDAsMTAwLDM1LDAsMTMyLDAsMCwxMDAsMzUsMCwxMzEsCi0gICAgMiwwLDkwLDIwLDAsNzEsMTAwLDM2LDAsMTAwLDM3LDAsMTMyLDAsMCwxMDAsCi0gICAgMzcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDM4LDAsMTAwLDEsMCwxMDAsMzksCi0gICAgMCwxMDAsMSwwLDEwMCw0MCwwLDEwMCw0MSwwLDEzMiwwLDIsOTAsMjIsMCwKLSAgICAxMDEsMjMsMCwxMzEsMCwwLDkwLDI0LDAsMTAwLDEsMCwxMDAsMSwwLDEwMCwKLSAgICA0MiwwLDEwMCw0MywwLDEzMiwyLDAsOTAsMjUsMCwxMDAsNDQsMCwxMDAsNDUsCi0gICAgMCwxMDAsNDYsMCwxMDAsNDcsMCwxMzIsMCwxLDkwLDI2LDAsMTAwLDQ4LDAsCi0gICAgMTAwLDQ5LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw1MCwwLDEwMCw1MSwwLDEzMiwKLSAgICAwLDAsOTAsMjgsMCwxMDAsNTIsMCwxMDAsNTMsMCwxMzIsMCwwLDkwLDI5LAotICAgIDAsMTAwLDU0LDAsMTAwLDU1LDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw1NiwwLAotICAgIDEwMCw1NywwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNTgsMCwxMDAsNTksMCwxMzIsCi0gICAgMCwwLDkwLDMyLDAsNzEsMTAwLDYwLDAsMTAwLDYxLDAsMTMyLDAsMCwxMDAsCi0gICAgNjEsMCwxMzEsMiwwLDkwLDMzLDAsNzEsMTAwLDYyLDAsMTAwLDYzLDAsMTMyLAotICAgIDAsMCwxMDAsNjMsMCwxMzEsMiwwLDkwLDM0LDAsNzEsMTAwLDY0LDAsMTAwLAotICAgIDY1LDAsMTMyLDAsMCwxMDAsNjUsMCwxMzEsMiwwLDkwLDM1LDAsMTAwLDY2LAotICAgIDAsMTAwLDY3LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw2OCwwLDEwMCw2OSwwLAotICAgIDEzMiwwLDAsOTAsMzcsMCwxMDAsMSwwLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwKLSAgICAxLDAsOTAsMzgsMCwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwwLDkwLDM5LAotICAgIDAsMTAwLDc0LDAsOTAsNDAsMCwxMDEsNDAsMCwxMDAsNzUsMCwyMyw5MCw0MSwKLSAgICAwLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsOTAsNDIsMCwxMDAsNzgsMCwKLSAgICAxMDAsNzksMCwxMzIsMCwwLDkwLDQzLDAsMTAwLDEsMCwxMDAsODAsMCwxMDAsCi0gICAgODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ0LDAsMTAwLDgzLDAsMTAwLDg0LAotICAgIDAsMTMyLDAsMCw5MCw0NSwwLDEwMCw4NSwwLDEwMCw4NiwwLDEzMiwwLDAsCi0gICAgOTAsNDYsMCwxMDAsMSwwLDEwMCwxLDAsMTAyLDAsMCwxMDAsODAsMCwxMDAsCi0gICAgODcsMCwxMDAsODgsMCwxMzIsNCwwLDkwLDQ3LDAsMTAwLDg5LDAsMTAwLDkwLAotICAgIDAsMTMyLDAsMCw5MCw0OCwwLDEwMCw5MSwwLDEwMCw5MiwwLDEzMiwwLDAsCi0gICAgOTAsNDksMCwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwwLDkwLDUwLDAsMTAwLAotICAgIDEsMCw4Myw0MSw5NSw5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsCi0gICAgMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwKLSAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LAotICAgIDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLAotICAgIDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsCi0gICAgMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwKLSAgICAxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LAotICAgIDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCi0gICAgMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsCi0gICAgMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsNzgsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsOTIsMCwwLDAsMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwKLSAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwwLDY4LDkzLDQ2LDAsMTI1LDIsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNCwxOSwwLAotICAgIDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLDExNiwyLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTMxLDMsMCwxLDExMywxOSwwLDg3LDEyNCwwLDAsCi0gICAgMTA2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsCi0gICAgMTAwLDUsMCw4Myw0MSw2LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKLSAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LAotICAgIDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwKLSAgICAxMTEsOTksOTUsOTUsNzgsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDIwMiwxLDAsMCwxMDAsMCw5MCwwLDEwMCwxLAorICAgIDk3LDEsMTAwLDIsMTAwLDMsMTMyLDAsOTAsMiwxMDAsNCwxMDAsNSwxMzIsMCwKKyAgICA5MCwzLDEwNSwwLDkwLDQsMTA1LDAsOTAsNSw3MSwwLDEwMCw2LDEwMCw3LAorICAgIDEzMiwwLDEwMCw3LDEwMSw2LDEzMSwzLDkwLDcsNzEsMCwxMDAsOCwxMDAsOSwKKyAgICAxMzIsMCwxMDAsOSwxMzEsMiw5MCw4LDcxLDAsMTAwLDEwLDEwMCwxMSwxMzIsMCwKKyAgICAxMDAsMTEsMTMxLDIsOTAsOSw3MSwwLDEwMCwxMiwxMDAsMTMsMTMyLDAsMTAwLDEzLAorICAgIDEzMSwyLDkwLDEwLDEwMCwxNCwxMDAsMTUsMTMyLDAsOTAsMTEsMTAwLDE2LDEwMCwxNywKKyAgICAxMzIsMCw5MCwxMiwxMDAsMTgsMTAwLDE5LDEzMiwwLDkwLDEzLDEwMCwyMCwxMDAsMjEsCisgICAgMTU2LDEsMTAwLDIyLDEwMCwyMywxMzIsMiw5MCwxNCwxMDAsMjQsMTAwLDI1LDEzMiwwLAorICAgIDkwLDE1LDEwMCwyNiwxMDAsMjcsMTMyLDAsOTAsMTYsMTAwLDI4LDEwMCwyOSwxMzIsMCwKKyAgICA5MCwxNywxMDAsMzAsMTAwLDMxLDEzMiwwLDkwLDE4LDcxLDAsMTAwLDMyLDEwMCwzMywKKyAgICAxMzIsMCwxMDAsMzMsMTMxLDIsOTAsMTksNzEsMCwxMDAsMzQsMTAwLDM1LDEzMiwwLAorICAgIDEwMCwzNSwxMzEsMiw5MCwyMCwxMDAsMSwxMDAsMSwxMDAsMzYsMTU2LDIsMTAwLDM3LAorICAgIDEwMCwzOCwxMzIsMiw5MCwyMSwxMDEsMjIsMTMxLDAsOTAsMjMsMTAwLDkyLDEwMCwzOSwKKyAgICAxMDAsNDAsMTMyLDEsOTAsMjQsMTAwLDQxLDEwMCw0MiwxNTYsMSwxMDAsNDMsMTAwLDQ0LAorICAgIDEzMiwyLDkwLDI1LDEwMCw0NSwxMDAsNDYsMTMyLDAsOTAsMjYsMTAwLDQ3LDEwMCw0OCwKKyAgICAxMzIsMCw5MCwyNywxMDAsNDksMTAwLDUwLDEzMiwwLDkwLDI4LDEwMCw1MSwxMDAsNTIsCisgICAgMTMyLDAsOTAsMjksMTAwLDUzLDEwMCw1NCwxMzIsMCw5MCwzMCwxMDAsNTUsMTAwLDU2LAorICAgIDEzMiwwLDkwLDMxLDcxLDAsMTAwLDU3LDEwMCw1OCwxMzIsMCwxMDAsNTgsMTMxLDIsCisgICAgOTAsMzIsNzEsMCwxMDAsNTksMTAwLDYwLDEzMiwwLDEwMCw2MCwxMzEsMiw5MCwzMywKKyAgICA3MSwwLDEwMCw2MSwxMDAsNjIsMTMyLDAsMTAwLDYyLDEzMSwyLDkwLDM0LDEwMCw2MywKKyAgICAxMDAsNjQsMTMyLDAsOTAsMzUsMTAwLDY1LDEwMCw2NiwxMzIsMCw5MCwzNiwxMDAsOTMsCisgICAgMTAwLDY3LDEwMCw2OCwxMzIsMSw5MCwzNywxMDAsNjksMTAwLDcwLDEzMiwwLDkwLDM4LAorICAgIDEwMCw3MSw5MCwzOSwxMDEsMzksMTAwLDcyLDIzLDAsOTAsNDAsMTAwLDczLDEwMCw3NCwKKyAgICAxMzIsMCw5MCw0MSwxMDAsNzUsMTAwLDc2LDEzMiwwLDkwLDQyLDEwMCw5NCwxMDAsNzgsCisgICAgMTAwLDc5LDEzMiwxLDkwLDQzLDEwMCw4MCwxMDAsODEsMTMyLDAsOTAsNDQsMTAwLDgyLAorICAgIDEwMCw4MywxMzIsMCw5MCw0NSwxMDAsMSwxMDAsMSwxMDIsMCwxMDAsNzcsMTAyLDQsCisgICAgMTAwLDg0LDEwMCw4NSwxMzIsMSw5MCw0NiwxMDAsODYsMTAwLDg3LDEzMiwwLDkwLDQ3LAorICAgIDEwMCw4OCwxMDAsODksMTMyLDAsOTAsNDgsMTAwLDkwLDEwMCw5MSwxMzIsMCw5MCw0OSwKKyAgICAxMDAsMSw4MywwLDQxLDk1LDk3LDgzLDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsCisgICAgMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLDg0LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsNzksODQsMzIsMTA5LDEwMSwKKyAgICA5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsCisgICAgMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMzLDMyLDczLDExNiwzMiwKKyAgICAxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwKKyAgICAxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwzMiw5OSwKKyAgICA5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTIsCisgICAgMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5NywKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsCisgICAgNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwKKyAgICAxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LAorICAgIDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwKKyAgICAxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LAorICAgIDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLAorICAgIDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwxMDUsOTksNDUsMTAyLDk3LAorICAgIDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLAorICAgIDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCw3OCw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw3LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw2MCwwLDAsMCwxMjAsNDAsMTAwLDYsNjgsMCw5MywKKyAgICAzMiwxMjUsMiwxMTYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMTQsNiwxMTYsMSwxMjQsCisgICAgMCwxMjQsMiwxMTYsMiwxMjQsMSwxMjQsMiwxMzEsMiwxMzEsMywxLDAsMTEzLAorICAgIDYsODcsMCwxMjQsMCwxMDYsMywxMDYsNCwxMjQsMSwxMDYsMywxMzEsMSwxLAorICAgIDAsMTAwLDUsODMsMCw0MSw3LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLAorICAgIDExNSwxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwKKyAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLAorICAgIDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LAorICAgIDEwMCwxMTEsOTksOTUsOTUsNzgsNDEsNCwxMjIsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMTIyLDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTIyLDEyLAorICAgIDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDEyMiw3LDk1LDk1LAorICAgIDEwMCwxMTEsOTksOTUsOTUsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAogICAgIDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwKICAgICAxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsCiAgICAgMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsCkBAIC04NywxOTAzICs3NCwxNzUzIEBACiAgICAgMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAogICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCwKICAgICA1LDk1LDExOSwxMTQsOTcsMTEyLDI3LDAsMCwwLDExNSw4LDAsMCwwLDAsCi0gICAgMiwyNSwxLDE1LDEsMjksMSwxMTQsMTIsMCwwLDAsOTksMSwwLDAsCisgICAgMiwxMCwxLDEwLDEsMjIsMSwxMTQsMTIsMCwwLDAsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMTYsMTIxLDExMiwKLSAgICAxMDEsMjE4LDMsMTE1LDEyMSwxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsOTUsCi0gICAgMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzUsMCwwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwxLDExNCwxNiwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDgzLDQxLDksCi0gICAgMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsCi0gICAgNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTEsMTE1LAotICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LDExMCw0NSwxMTcsMTEyLDMyLDExMSwKLSAgICAxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQ2LAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICA5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsMjE4LDUsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDE1LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICA4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MywwLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsCi0gICAgMTExLDk3LDEwMCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTA2LAotICAgIDIsMCwxMDcsNiwwLDEyNCwwLDAsOTUsMywwLDEwMCwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSw0LDExNCwxOCwwLDAsMCwxMTQsMTQsMCwwLDAsMjE4LDcsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LAotICAgIDExMSw5NywxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCi0gICAgMTAxLDExNCw5NSw5NSw0NiwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDExLDAsMCwwLDcxLDAsMCwwLDExNSw3NywwLAotICAgIDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLAotICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNCw3MywwLDEyNCwwLDAsMTA2LDEsCi0gICAgMCwxMiwxMTQsNzMsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsCi0gICAgMCwxMDYsNCwwLDYxLDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKLSAgICAxMTQsNzIsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsCi0gICAgMyw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAotICAgIDAsMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywKLSAgICAxNywwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwKLSAgICAxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsCi0gICAgMiwyMTgsMiw0Niw0OCwyMTgsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwKLSAgICAxMjAsMTEyLDExNCw2Miw1MCwwLDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAotICAgIDQxLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw2LDIxOCwzLDk3LDExMCwKLSAgICAxMjEsMTE0LDIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCi0gICAgMTE0LDE4LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDEwMSwKLSAgICAxMjAsMTA1LDExNiw5NSw5NSw0OSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwxLAotICAgIDM1LDEsMywxLDE3LDEsMTMsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKLSAgICA3OCw0MSw3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCi0gICAgMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAotICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTcsMCwwLDAsMzksCi0gICAgMCwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsMywxMiwzLAotICAgIDExNCwxNywwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsCi0gICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwzMSwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwxMiwxLDExNCwzMSwwLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSw4MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCi0gICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAotICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCwKLSAgICA5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDEyLDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwKLSAgICAxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LAotICAgIDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwKLSAgICAxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwKLSAgICAxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsCi0gICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LAotICAgIDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDIsNzgsMjMzLDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsCi0gICAgMTA0LDExNCwxMDEsOTcsMTAwLDkwLDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMjE4LDQsMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsCi0gICAgMTE3LDExMiwxMTQsMTUsMCwwLDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSwKLSAgICA5OSwxMTEsMTE3LDExMCwxMTYsMjE4LDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwKLSAgICAxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw3NCwwLAotICAgIDAsMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwKLSAgICAxLDksMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw2MCwwLDExNiwzLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwwLDAsCi0gICAgMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwKLSAgICAyLDAsODMsMTEzLDI0LDAsODcsMTAwLDAsMCw4Myw0MSwzLDc4LDcwLDg0LAotICAgIDQxLDUsMTE0LDM0LDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLAotICAgIDExMCwxMTYsMTE0LDM3LDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsCi0gICAgMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDE5LDAsMCwKLSAgICAwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEyLAotICAgIDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsODIsMCwwLDAsCi0gICAgMTE1LDE4LDAsMCwwLDAsMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwKLSAgICAxLDQsMSw5LDEsMTIsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKLSAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTYsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIxMCwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLAotICAgIDYwLDEyMiwxNzMsMCwxMjAsMTY2LDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMjQsMCwKLSAgICAxLDEyNCwwLDAsMTA2LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsCi0gICAgMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwKLSAgICAyLDAsNTUsMiw5NSw0LDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LAotICAgIDAsMTMxLDAsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsCi0gICAgMjIsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLAotICAgIDEwMCw1LDAsMTMxLDEsMCwxMTQsMTU3LDAsMTI0LDAsMCw0LDEwNiwxMCwwLAotICAgIDEwMCwyLDAsNTUsMiw5NSwxMCwwLDg3LDEwMCw2LDAsODEsODIsODgsMTI0LAotICAgIDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLDEyNCwwLDAsMTA2LAotICAgIDgsMCwxMDYsMTEsMCwxMzEsMCwwLDEsMTEzLDI4LDAsODcsODcsMTAwLDYsCi0gICAgMCwxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLDYsMCw4Myw0MSw3LDEyMiwKLSAgICAxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LAotICAgIDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwKLSAgICAxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsCi0gICAgMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsMjMzLAotICAgIDEsMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLAotICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LAotICAgIDQxLDEyLDExNCwzNCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDExNCw0NCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM2LDAsMCwwLDIxOCwKLSAgICA3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDM5LDAsMCwwLDIxOCw3LDExNCwKLSAgICAxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLAorICAgIDAsMTE1LDEyLDAsMCwwLDExNiwwLDExNiwxLDEzMSwxLDEyNCwwLDEzMSwxLAorICAgIDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw0LDExNiwxMjEsMTEyLDEwMSwyMTgsMywxMTUsCisgICAgMTIxLDExNSw0MSwxLDIxOCw0LDExMCw5NywxMDksMTAxLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMSw5NSwxMTAsMTAxLDExOSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNSwwLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDEsMTE0LDE2LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsNjQsMCwwLDAsMTE1LDEyLDAsMCwwLAorICAgIDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw4MywwLDQxLDIsMjE4LDE0LAorICAgIDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDc4LDQxLAorICAgIDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCwxNywwLDAsMCw0NywwLDAsMCwxMTUsMiwwLAorICAgIDAsMCw4LDEsMTE0LDE3LDAsMCwwLDk5LDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDU2LAorICAgIDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwKKyAgICAyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsCisgICAgNiwxMDAsNywxMzIsMCw5MCw2LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLAorICAgIDEwLDEwMCwxMSwxMzIsMCw5MCw4LDEwMCwxMiw4MywwLDQxLDEzLDIxOCwxMSw5NSwKKyAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTIyLDE2OSw2NSwzMiwxMTQsMTAxLAorICAgIDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTksMTA0LDEwNSw5OSwKKyAgICAxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsCisgICAgMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywxMTUsMTAsMzIsMzIsCisgICAgMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDMyLDQ5LAorICAgIDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMzIsMTE2LDk3LDEwNywxMDEsMzIsCisgICAgMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw2Niw0NCwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNTAsMzIsMTE2LDExNCwxMjEsCisgICAgMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsOTcsMTA3LDEwMSwzMiwKKyAgICAxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY1LDQxLDQ2LAorICAgIDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDQ4LDAsMCwwLDExNiwKKyAgICAwLDEwNiwxLDEzMSwwLDEyNCwwLDk1LDIsMTE2LDAsMTA2LDEsMTMxLDAsMTI0LAorICAgIDAsOTUsMywxMjQsMSwxMjQsMCw5NSw0LDEwMCwwLDEyNCwwLDk1LDUsMTAwLAorICAgIDEsMTI0LDAsOTUsNiwxMDAsMSwxMjQsMCw5NSw3LDEwMCwwLDgzLDAsNDEsCisgICAgMiw3OCwyMzMsMCwwLDAsMCw0MSw4LDIxOCw3LDk1LDExNiwxMDQsMTE0LDEwMSwKKyAgICA5NywxMDAsOTAsMTMsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDEwMSw5NSwxMDgsMTExLDk5LAorICAgIDEwNywyMTgsNCwxMDgsMTExLDk5LDEwNywyMTgsNiwxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNCwKKyAgICAxNSwwLDAsMCwyMTgsNSwxMTEsMTE5LDExMCwxMDEsMTE0LDIxOCw1LDk5LDExMSwxMTcsCisgICAgMTEwLDExNiwyMTgsNywxMTksOTcsMTA1LDExNiwxMDEsMTE0LDExNSw0MSwyLDIxOCw0LDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAorICAgIDk1LDU3LDAsMCwwLDExNSwxMiwwLDAsMCwwLDEsMTAsMSwxMCwxLAorICAgIDYsMSw2LDEsNiwxLDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LAorICAgIDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDY0LDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNSwxLDEyNCwwLAorICAgIDEwNiwyLDEyNSwyLDEyMCw0NCwxMTYsMywxMDYsNCwxMjQsMiwxMzEsMSwxMjUsMywKKyAgICAxMjQsMywxMDAsMCwxMDcsOCwxMTQsMzgsMTAwLDEsODMsMCwxMjQsMywxMDYsMiwKKyAgICAxMjUsMiwxMjQsMiwxMjQsMSwxMDcsMiwxMTQsMTYsMTAwLDIsODMsMCwxMTMsMTYsCisgICAgODcsMCwxMDAsMCw4MywwLDQxLDMsNzgsNzAsODQsNDEsNSwxMTQsMjAsMCwKKyAgICAwLDAsMjE4LDksMTAzLDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsMTEwLDExNiwxMTQsMjMsMCwKKyAgICAwLDAsMjE4LDEyLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsCisgICAgMjE4LDMsMTAzLDEwMSwxMTYsNDEsNCwxMTQsMjYsMCwwLDAsOTAsMiwxMDksMTAxLAorICAgIDIxOCwzLDExNiwxMDUsMTAwLDExNCwyMSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTIsMTA0LDk3LDExNSw5NSwxMDAsCisgICAgMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2NSwwLDAsMCwxMTUsMTgsMCwwLDAsCisgICAgMCwyLDgsMSw2LDEsMiwxLDEwLDEsOCwxLDQsMSw2LDEsCisgICAgOCwxLDEyMiwyNCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsCisgICAgMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxNiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTY4LDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNSwxLDEyNCwwLAorICAgIDExNiwyLDEyNCwxLDYwLDAsMTIyLDEzOCwxMjAsMTMyLDEyNCwwLDEwNiwzLDE0Myw5NiwKKyAgICAxLDAsMTI0LDAsMTA2LDQsMTAwLDEsMTA3LDIsMTE1LDQ4LDEyNCwwLDEwNiw1LAorICAgIDEyNCwxLDEwNywyLDExNCw3MiwxMjQsMSwxMjQsMCw5NSw1LDEyNCwwLDQsMCwKKyAgICAxMDYsNCwxMDAsMiw1NSwwLDIsMCw5NSw0LDEwMCwzLDgzLDAsMTI0LDAsCisgICAgMTA2LDYsMTMxLDAsMTE0LDkyLDExNiw3LDEwMCw0LDEyNCwwLDIyLDAsMTMxLDEsCisgICAgMTMwLDEsMTI0LDAsMTA2LDgsMTA2LDksMTAwLDUsMTMxLDEsMTE0LDExOCwxMjQsMCwKKyAgICA0LDAsMTA2LDEwLDEwMCwyLDU1LDAsMiwwLDk1LDEwLDg3LDAsMTAwLDYsCisgICAgODEsMCw4MiwwLDg4LDAsMTI0LDAsMTA2LDgsMTA2LDksMTMxLDAsMSwwLAorICAgIDEyNCwwLDEwNiw4LDEwNiwxMSwxMzEsMCwxLDAsMTEzLDIwLDg3LDAsODcsMCwKKyAgICAxMDAsNiwxMTYsMiwxMjQsMSw2MSwwLDg4LDAsMTAwLDYsODMsMCw0MSw3LAorICAgIDEyMiwxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLAorICAgIDk5LDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsCisgICAgMTA1LDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLAorICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsCisgICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksCisgICAgOTcsMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLAorICAgIDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLAorICAgIDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTksMCwwLDAsCisgICAgMjMzLDEsMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LAorICAgIDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLAorICAgIDc4LDQxLDEyLDExNCwyMCwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDI5LDAsCisgICAgMCwwLDExNCwyMSwwLDAsMCwxMTQsMjQsMCwwLDAsMTE0LDIzLDAsMCwKKyAgICAwLDExNCwzMiwwLDAsMCwxMTQsMTcsMCwwLDAsMTE0LDIyLDAsMCwwLAorICAgIDIxOCw3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDI1LDAsMCwwLDIxOCw3LAorICAgIDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDI2LDAsMCwwLDExNCwzMSwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwxMTQsMzQsMCwwLDAsNzcsMCwwLDAsMTE1LDMyLDAsMCwwLAorICAgIDAsNiw4LDEsOCwxLDIsMSwyLDEsOCwxLDIwLDEsNiwxLAorICAgIDE0LDEsNCwxLDgsMSwxMiwxLDEyLDEsMjQsMiwxMCwxLDE4LDIsCisgICAgMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwKKyAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSwxMjIsMCwwLDAsMTE2LAorICAgIDAsMTA2LDEsMTMxLDAsMTI1LDEsMTI0LDAsMTA2LDIsMTQzLDk4LDEsMCwxMjQsCisgICAgMCwxMDYsMywxMjQsMSwxMDcsMywxMTQsMzQsMTE2LDQsMTAwLDEsMTMxLDEsMTMwLAorICAgIDEsMTI0LDAsMTA2LDUsMTAwLDIsMTA3LDQsMTE1LDQ4LDExNiw2LDEzMCwxLDEyNCwKKyAgICAwLDQsMCwxMDYsNSwxMDAsMyw1NiwwLDIsMCw5NSw1LDEyNCwwLDEwNiwKKyAgICA1LDEwMCwyLDEwNywyLDExNCwxMDgsMTAwLDAsMTI0LDAsOTUsMywxMjQsMCwxMDYsCisgICAgNywxMTQsMTA4LDEyNCwwLDQsMCwxMDYsNywxMDAsMyw1NiwwLDIsMCw5NSwKKyAgICA3LDEyNCwwLDEwNiw4LDEwNiw5LDEzMSwwLDEsMCw4NywwLDEwMCwwLDgxLAorICAgIDAsODIsMCw4OCwwLDEwMCwwLDgzLDAsNDEsNCw3OCwxMjIsMzEsOTksOTcsCisgICAgMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsCisgICAgOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LDE5LDAsCisgICAgMCwwLDExNCwzMywwLDAsMCw0MSwxMCwxMTQsMjAsMCwwLDAsMTE0LDI4LAorICAgIDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMjMsMCwwLDAsMjE4LDEyLDgyLAorICAgIDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjQsMCwwLDAsCisgICAgMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDExNCwyNSwwLDAsMCwxMTQsMjIsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLAorICAgIDIsMTE0LDI2LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzUsMCwwLDAsMTAyLAorICAgIDAsMCwwLDExNSwyMiwwLDAsMCwwLDEsOCwxLDgsMSwxMCwxLAorICAgIDgsMSwxNCwxLDE0LDEsMTAsMSw2LDEsNiwxLDE0LDEsMTIyLDE5LAorICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSwxOCwwLDAsMCwxMDAsMSwxMDYsCisgICAgMCwxMjQsMCwxMDYsMSwxMTYsMiwxMjQsMCwxMzEsMSwxMzEsMiw4MywwLDQxLAorICAgIDIsNzgsMTIyLDIzLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwKKyAgICAxMjMsMzMsMTE0LDEyNSw0MSwzMiw5NywxMTYsMzIsMTIzLDEyNSw0MSwzLDIxOCw2LDEwMiwKKyAgICAxMTEsMTE0LDEwOSw5NywxMTYsMTE0LDE1LDAsMCwwLDIxOCwyLDEwNSwxMDAsNDEsMSwKKyAgICAxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDgsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDExNSwwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIwLDk1LDc3LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsCisgICAgNDEsOSwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsCisgICAgMCwxMTQsMywwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDMyLDAsMCwwLAorICAgIDExNCwzNCwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsMTgsMCwwLDAsNTEsMCwwLDAsMTE1LDEyLDAsMCwKKyAgICAwLDgsNCw0LDIsOCw4LDgsMTIsOCwyNSw4LDEzLDExNCwxOCwwLAorICAgIDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDY0LDAsMCwwLDExNSw0OCwwLDAsMCwxMDEsMCw5MCwxLAorICAgIDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LAorICAgIDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNiwKKyAgICAxMDAsOCwxMDAsOSwxMzIsMCw5MCw3LDEwMCwxMCw4MywwLDQxLDExLDIxOCwxNiwKKyAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAorICAgIDEyMiw4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwKKyAgICAxMTYsMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LAorICAgIDEwOCwxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDksMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsCisgICAgMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsCisgICAgMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTAwLDEsMTI0LDAsOTUsMSwxMDAsMCwKKyAgICA4MywwLDQxLDIsNzgsMTE0LDE5LDAsMCwwLDQxLDIsMTE0LDE1LDAsMCwKKyAgICAwLDExNCwyNCwwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwxMTQsMTUsMCwKICAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDQ2LDAsMCwwLDk0LDAsMCwwLDExNSwzMiwwLDAsMCwwLAotICAgIDYsMTIsMSwxMCwxLDMsMSwzLDEsMTAsMSwzMCwxLDksMSwxNSwKLSAgICAxLDQsMSwxMiwxLDE2LDEsMTgsMSwyMiwyLDEzLDEsMjEsMiwxMjIsCi0gICAgMTksOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywKLSAgICAxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDE1NywwLDAsMCwxMTYsMCwKLSAgICAwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDIsMCwKLSAgICAxNDMsMTI5LDAsMSwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwxMDcsMywwLAotICAgIDExNCw0OSwwLDExNiw0LDAsMTAwLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LAotICAgIDAsMCwxMDYsNSwwLDEwMCwyLDAsMTA3LDQsMCwxMTUsNzAsMCwxMTYsNiwKLSAgICAwLDEzMCwxLDAsMTI0LDAsMCw0LDEwNiw1LDAsMTAwLDMsMCw1NiwyLAotICAgIDk1LDUsMCwxMjQsMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsMiwwLDExNCwKLSAgICAxNDYsMCwxMDAsMCwwLDEyNCwwLDAsOTUsMywwLDEyNCwwLDAsMTA2LDcsCi0gICAgMCwxMTQsMTQ2LDAsMTI0LDAsMCw0LDEwNiw3LDAsMTAwLDMsMCw1NiwyLAotICAgIDk1LDcsMCwxMjQsMCwwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwwLDEsCi0gICAgODcsMTAwLDAsMCw4MSw4Miw4OCwxMDAsMCwwLDgzLDQxLDQsNzgsMTIyLDMxLAotICAgIDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsCi0gICAgMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCwKLSAgICAzMywwLDAsMCwxMTQsNDUsMCwwLDAsNDEsMTAsMTE0LDM0LDAsMCwwLAotICAgIDExNCw0MCwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwKLSAgICAxMiw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsCi0gICAgMCwwLDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwxMTQsMzksMCwwLDAsMTE0LDM2LDAsMCwwLDExNCw0NywwLDAsCi0gICAgMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsNDMsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ3LDAsMCwKLSAgICAwLDExOSwwLDAsMCwxMTUsMjIsMCwwLDAsMCwxLDEyLDEsMTAsMSwKLSAgICAxNSwxLDEyLDEsMjEsMSwxNSwxLDE1LDEsOSwxLDksMSwxNSwxLAotICAgIDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwKLSAgICAxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKLSAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTAwLAotICAgIDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMTYsMiwwLDEyNCwwLAotICAgIDAsMTMxLDEsMCwxMzEsMiwwLDgzLDQxLDIsNzgsMTIyLDIzLDk1LDc3LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwxMjMsMzMsMTE0LDEyNSw0MSwzMiw5NywKLSAgICAxMTYsMzIsMTIzLDEyNSw0MSwzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE0LDE1LAotICAgIDAsMCwwLDIxOCwyLDEwNSwxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsOTUsCi0gICAgOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDEzMiwwLDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDEsMTIyLDIwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwKLSAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsOSwxMTQsMSwwLDAsMCwKLSAgICAxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwxMTQsCi0gICAgMjAsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNDcsCi0gICAgMCwwLDAsMTE0LDUyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzIsMCwwLAotICAgIDAsNjgsMCwwLDAsMTE1LDEyLDAsMCwwLDEyLDQsNiwyLDEyLDgsCi0gICAgMTIsMTIsMTIsMjUsMTIsMTMsMTE0LDMyLDAsMCwwLDk5LDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsCi0gICAgMTE1LDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwKLSAgICAwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLAotICAgIDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLAotICAgIDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksCi0gICAgMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MSwxMSwyMTgsMTYsOTUsCi0gICAgNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsCi0gICAgODYsNjUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsCi0gICAgMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTExLDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LAotICAgIDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsCi0gICAgMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwxLDAsMTI0LDAsMCwKLSAgICA5NSwxLDAsMTAwLDAsMCw4Myw0MSwyLDc4LDExNCwzMywwLDAsMCw0MSwKLSAgICAyLDExNCwxNSwwLDAsMCwxMTQsMzgsMCwwLDAsNDEsMiwxMTQsMTksMCwKLSAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxNDAsMCwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCwxLDksMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwxMDksMTIxLAotICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKLSAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwwLDAsMTI0LDAsMCwKLSAgICA0LDEwNiwwLDAsMTAwLDEsMCw1NSwyLDk1LDAsMCwxMDAsMiwwLDgzLAotICAgIDQxLDMsNzgsMTE0LDQ1LDAsMCwwLDg0LDQxLDEsMTE0LDM4LDAsMCwwLAotICAgIDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCw0NiwwLDAsMCwxNDQsMCwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCwxLDE1LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LDEyMSwKLSAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsCi0gICAgMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwxLDAsMTAwLDIsCi0gICAgMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDAsMCw0LDEwNiwwLDAsMTAwLDMsCi0gICAgMCw1NiwyLDk1LDAsMCwxMDAsMCwwLDgzLDQxLDQsNzgsMTE0LDMzLDAsCisgICAgMCwxMTQsMjcsMCwwLDAsMTIzLDAsMCwwLDExNSw0LDAsMCwwLDAsCisgICAgMSw2LDEsMTIyLDI1LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE4LDAsMCwwLDEyNCwwLDQsMCwxMDYsMCwxMDAsMSwKKyAgICA1NSwwLDIsMCw5NSwwLDEwMCwyLDgzLDAsNDEsMyw3OCwxMTQsMzMsMCwKKyAgICAwLDAsODQsNDEsMSwxMTQsMjQsMCwwLDAsNDEsMSwxMTQsMjYsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDM0LDAsMCwwLDEyNywwLDAsMCwxMTUsNCwwLDAsMCwwLDEsCisgICAgMTQsMSwxMjIsMjQsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDM2LDAsMCwwLDEyNCwwLDEwNiwwLDEwMCwxLDEwNywyLDExNCwxOCwKKyAgICAxMTYsMSwxMDAsMiwxMzEsMSwxMzAsMSwxMjQsMCw0LDAsMTA2LDAsMTAwLDMsCisgICAgNTYsMCwyLDAsOTUsMCwxMDAsMCw4MywwLDQxLDQsNzgsMTE0LDE5LDAsCiAgICAgMCwwLDEyMiwzMSw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LAogICAgIDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsCi0gICAgMTExLDk5LDEwNywxMTQsNDUsMCwwLDAsNDEsMiwxMTQsMzgsMCwwLDAsMTE0LAotICAgIDQ4LDAsMCwwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw0NywwLDAsMCwxNDgsCi0gICAgMCwwLDAsMTE1LDYsMCwwLDAsMCwxLDE1LDEsMTIsMSwxMjIsMjQsCisgICAgMTExLDk5LDEwNywxMTQsMzMsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsMTE0LAorICAgIDM2LDAsMCwwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzNSwwLDAsMCwxMzEsCisgICAgMCwwLDAsMTE1LDYsMCwwLDAsMCwxLDEwLDEsOCwxLDEyMiwyNCwKICAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAogICAgIDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsCi0gICAgMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyOCwKLSAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDUwLAotICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsNTEsMCwwLDAsNDEsMSwxMTQsCi0gICAgMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDUyLDAsMCwwLDE1MywwLDAsMCwxMTUsMiwwLDAsCi0gICAgMCwwLDEsMTIyLDI1LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLAotICAgIDgsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsCi0gICAgNDcsMCwwLDAsMTE0LDUyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTMsMCwKLSAgICAwLDAsMTM2LDAsMCwwLDExNSwxMCwwLDAsMCwxMiwyLDYsMiwxMiwKLSAgICA0LDEyLDQsMTIsNSwxMTQsNTMsMCwwLDAsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLDAsMTAwLAotICAgIDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDAsCi0gICAgMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxOCw5NSw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLAotICAgIDAsMTAwLDAsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDEsCi0gICAgNzgsNDEsMiwxMTQsMTgsMCwwLDAsMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsCi0gICAgMiwxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxNTksCi0gICAgMCwwLDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjcsOTUsNzcsCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCwKLSAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLAotICAgIDAsMCwwLDEyMiwyMiwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAxLDAsMTI0LDAsMCw5NSwyLDAsODcsMTAwLDAsMCwxMTYsMywwLDEwNiwKLSAgICA0LDAsMTMxLDAsMCwxLDg4LDEyNCwwLDAsMTA2LDIsMCwxMDYsNSwwLAotICAgIDEzMSwwLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNiwyMTgsMTYsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LAotICAgIDE4LDAsMCwwLDExNCw1NSwwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LDExMiwyMTgsCi0gICAgMTIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LDQ2LDAsCi0gICAgMCwwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMywwLDAsMCwxNjMsMCwwLAotICAgIDAsMTE1LDgsMCwwLDAsMCwxLDMsMSwyMiwyLDExLDEsMTIyLDI4LAorICAgIDAsMSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxOCwwLAorICAgIDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwxMDYsMSwxMTYsMiwxMjQsMCwxMzEsMSwKKyAgICAxMzEsMiw4MywwLDQxLDIsNzgsMTIyLDI4LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsCisgICAgOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsMzgsMCwwLDAsMTE0LDE1LDAsMCwKKyAgICAwLDExNCwzOSwwLDAsMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDAsMCwwLAorICAgIDAsMTM2LDAsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNjgsCisgICAgMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsOCwxMTQsMSwwLDAsMCwxMTQsCisgICAgMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwxMTQsMjcsCisgICAgMCwwLDAsMTE0LDM0LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNDAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCw0MSwwLDAsMCwxMTksMCwwLDAsMTE1LAorICAgIDEwLDAsMCwwLDgsMiw0LDIsOCw0LDgsNCw4LDUsMTE0LDQxLAorICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsNjQsMCwwLDAsMTE1LDM2LDAsMCwwLDEwMSwwLDkwLAorICAgIDEsMTAwLDAsOTAsMiwxMDAsMSwxMDAsMiwxMzIsMCw5MCwzLDEwMCwzLDEwMCwKKyAgICA0LDEzMiwwLDkwLDQsMTAwLDUsMTAwLDYsMTMyLDAsOTAsNSwxMDAsNyw4MywKKyAgICAwLDQxLDgsMjE4LDE4LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLAorICAgIDAsMTI0LDEsMTI0LDAsOTUsMCwxMDAsMCwxMjQsMCw5NSwxLDEwMCwwLDgzLAorICAgIDAsNDEsMSw3OCw0MSwyLDIxOCw1LDk1LDExMCw5NywxMDksMTAxLDIxOCw1LDk1LAorICAgIDEwOCwxMTEsOTksMTA3LDQxLDIsMTE0LDI2LDAsMCwwLDExNCwxNSwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCisgICAgMjcsMCwwLDAsMTQyLDAsMCwwLDExNSw0LDAsMCwwLDAsMSw2LAorICAgIDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywKKyAgICAxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEwLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0MiwwLDAsMCwxMjIsMTYsMTE2LDAsMTI0LDAsMTA2LDEsCisgICAgMTMxLDEsMTI0LDAsOTUsMiw4NywwLDEwMCwwLDExNiwzLDEwNiw0LDEzMSwwLAorICAgIDEsMCw4OCwwLDEyNCwwLDEwNiwyLDEwNiw1LDEzMSwwLDEsMCwxMDAsMCwKKyAgICA4MywwLDQxLDEsNzgsNDEsNiwyMTgsMTYsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LDQzLDAsMCwwLDExNCw0NCwKKyAgICAwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LDExMiwyMTgsMTIsMTE0LDEwMSwxMDgsMTAxLDk3LAorICAgIDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LDM0LDAsMCwwLDQxLDEsMTE0LDI2LAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCw5LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsMTQ2LDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMSwyLDEsMTYsMiwxMCwxLDEyMiwyOCwKICAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywKICAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw3OSwwLDAsCi0gICAgMCwxMTUsMTcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsNDcsMCwwLDAsNDEsMywxMTQsMTksMCwwLDAsMTE0LDI5LDAsCi0gICAgMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTcwLDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwKLSAgICAxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwKLSAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsCi0gICAgMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDU0LDAsMCwwLAotICAgIDE1NywwLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsCi0gICAgNTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsMTM5LDAsMCwwLDEwMCwxLAotICAgIDAsMTI1LDEsMCwxMjEsMTcsMCwxMTYsMCwwLDEzNiwwLDAsMjUsMTMxLDAsCi0gICAgMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsCi0gICAgNDMsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCwxMzUsMCwxMTYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCi0gICAgODMsMCwxMTYsMywwLDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDExMCwxMiwKLSAgICAwLDExNiw0LDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTM1LDAsMCwKLSAgICAxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDEyNSwyLDAsMTE2LAotICAgIDUsMCwxMDYsNiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNiwwLAotICAgIDAsMTM2LDAsMCw2MCwxMjQsMSwwLDgzLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LAotICAgIDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAotICAgIDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKLSAgICAxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksCi0gICAgMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsCi0gICAgMTE1LDExLDAsMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsOTUsNDEsMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMiw5OSw5OCwxOTAsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LAotICAgIDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsNywxMTQsNTksMCwwLDAsMTE0LDI4LAotICAgIDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDIxOCw4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDMsMTE0LDEwMSwKLSAgICAxMDIsNDEsMywxMTQsMTUsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw2MSwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxNzYsMCwwLDAsMTE1LDI0LDAsMCwKLSAgICAwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwxMiwKLSAgICAxLDE1LDIsMTIsMSwxOCwyLDIyLDEsMTE0LDU2LDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLDE0LAotICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCw0LAotICAgIDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLDAsCi0gICAgODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLDQxLAotICAgIDIsOTcsMjEsMSwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTA4LDExMSw5OSwxMDcsNDQsMzIsOTcsMTEwLDEwMCwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDEwMSwxMTAsMTE1LDExNywxMTQsMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDMyLDEwNSwxMTUsMzIsOTksMTExLDEwOSwxMTIsMTA4LDEwMSwxMTYsMTAxLDEwOCwxMjEsMzIsMTA1LAotICAgIDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDQ0LDMyLDEwNSwxMTAsMzIsMTE2LAotICAgIDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTAxLDExOCwxMDEsMTEwLDExNiwzMiwxMDUsMTE2LDMyLAotICAgIDEwNSwxMTUsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMDAsMzIsOTgsMTIxLDMyLDk3LDExMCwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTE0LAotICAgIDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwKLSAgICAzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwKLSAgICAxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTA4LDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDQxLDYsMTE0LDU2LAotICAgIDAsMCwwLDExNCw1NywwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDQ2LDAsCi0gICAgMCwwLDExNCwzMSwwLDAsMCwxMTQsNDcsMCwwLDAsNDEsMiwxMTQsMTUsCi0gICAgMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxOSw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsCi0gICAgMTEwLDEwOCwxMTEsOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5NSwwLDAsMCwKLSAgICAxMTUsMTQsMCwwLDAsMCw3LDEyLDEsMTAsMSwzLDEsMTQsMSwxMywKLSAgICAzLDUsMiwxMTQsNjMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsMywwLDAsMCw3OSwwLDAsMCwxMTUsMTMsMCwKLSAgICAwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTQyLDAsMCw4Myw0MSwKLSAgICAxLDk3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5NywKLSAgICAxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwxMTMsCi0gICAgMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMTYsCi0gICAgMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsOTksCi0gICAgOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwKLSAgICAxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsMTE2LAotICAgIDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLDExMSwKLSAgICAxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCw5NywKLSAgICA5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAotICAgIDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwxMTYsCi0gICAgMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsMTAwLAotICAgIDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLAotICAgIDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLDMyLAotICAgIDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLDEwLAotICAgIDMyLDMyLDMyLDMyLDExNCwxMCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsMjksCi0gICAgMCwwLDAsOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsOTUsCi0gICAgMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLAotICAgIDExOCwxMDEsMTAwLDIxNCwwLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE0LDY1LAotICAgIDAsMCwwLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwxMjEsMTE0LDQ1LAotICAgIDAsMCwwLDk5LDEsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAotICAgIDQsMCwwLDAsNzEsMCwwLDAsMTE1LDc1LDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA3LDUsMCwxMTQsNzEsMCwxMjQsCi0gICAgMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwwLDExNSw0MywwLDEwMCwzLAotICAgIDAsMTI0LDAsMCwyMywxMjUsMCwwLDExNiw0LDAsMTI0LDAsMCwxMDYsNSwKLSAgICAwLDEyNCwyLDAsMTQwLDAsMCwxMDAsNCwwLDExNiwwLDAsMTA2LDYsMCwKLSAgICAxMzEsMSwxLDEsMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwxMTQsMTA1LDExMCwKLSAgICAxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwKLSAgICAzMiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCw0Nyw4MCw4OSwKLSAgICA4NCw3Miw3OSw3OCw4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsMTE1LDMyLDExNiwKLSAgICAxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLDcsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMzIsMTIyLDIsMzUsMzIsOTAsNCwxMDIsMTA1LDEwOCwxMDEsNzgsCi0gICAgNDEsMiwxMTQsNjcsMCwwLDAsMTE0LDY4LDAsMCwwLDQxLDcsMTE0LDE0LAotICAgIDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsNywxMTgsMTAxLDExNCw5OCwKLSAgICAxMTEsMTE1LDEwMSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LAotICAgIDUsMTEyLDExNCwxMDUsMTEwLDExNiwxMTQsNTAsMCwwLDAsMjE4LDYsMTE1LDExNiwxMDAsCi0gICAgMTAxLDExNCwxMTQsNDEsMywyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTQsNjYsCi0gICAgMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LAotICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMjUsMCwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCwyLDE4LDEsMTUsMSwxMCwxLDExNCw3NSwwLDAsMCw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAotICAgIDMsMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsCi0gICAgMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsCi0gICAgMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQxLDMsMTIyLDQ5LAorICAgIDAsMTE1LDE0LDAsMCwwLDEyNCwwLDEwNiwwLDEwNiwxLDEzMSwwLDEsMCwKKyAgICAxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwxMTQsNDQsMCwwLDAsMTE0LDM1LAorICAgIDAsMCwwLDQxLDMsMTE0LDI2LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LAorICAgIDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsCisgICAgOTUsMTUzLDAsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzcsCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCwKKyAgICA0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsCisgICAgMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMjcsMCwwLDAsCisgICAgMTE0LDQ4LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQyLAorICAgIDAsMCwwLDE0MCwwLDAsMCwxMTUsNiwwLDAsMCw4LDIsOCw0LAorICAgIDgsNywxMTQsNDIsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDMsMCwwLDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsMTA2LDAsMCwKKyAgICAwLDEwMCwxLDEyNSwxLDEyMSwxNCwxMTYsMCwxMzYsMCwyNSwwLDEzMSwwLDEyNSwKKyAgICAxLDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwxMDcsMTAsMTE0LDM4LDEsMCwxLAorICAgIDAsMSwwLDg5LDAsMTEwLDIsODgsMCwxMjQsMSwxMDAsMSwxMDcsOCwxMTQsCisgICAgMTAyLDExNiwyLDEwMCwxLDEwNyw4LDExNCw2NiwxMTYsMywxMzYsMCwxMzEsMSwxMjUsCisgICAgMSwxMTAsOCwxMTYsNCwxMzYsMCwxMzEsMSwxMjUsMSwxMzUsMCwxMDIsMSwxMDAsCisgICAgMiwxMDAsMywxMzIsOCwxMjUsMiwxMTYsNSwxMDYsNiwxMjQsMSwxMjQsMiwxMzEsCisgICAgMiwxMTYsMCwxMzYsMCw2MCwwLDEyNCwxLDgzLDAsNDEsNCwxMjIsMTA5LDcxLAorICAgIDEwMSwxMTYsMzIsMTExLDExNCwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsOTcsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsCisgICAgMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLAorICAgIDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwxOSwwLAorICAgIDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsMTM2LDAsNjEsMCwxMDAsMCw4MywKKyAgICAwLDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCisgICAgMTA4LDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsOTUsNDEsMSwxMTQsMTUsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMiw5OSw5OCwxNzMsCisgICAgMCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsNywxMTQsNTEsMCwwLDAsMjE4LAorICAgIDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDIwLDAsMCwwLDExNCw0MSwKKyAgICAwLDAsMCwxMTQsMTgsMCwwLDAsMjE4LDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LAorICAgIDEwMSwxMDIsOTAsMywxMTQsMTAxLDEwMiw0MSwzLDExNCwxNSwwLDAsMCwxMTQsMjEsCisgICAgMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwKKyAgICAxNSwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ1LDAsMCwwLDE1OSwwLAorICAgIDAsMCwxMTUsMjQsMCwwLDAsMCw0LDQsMSwyLDEsMTQsMSwxNCwKKyAgICAxLDYsMSw4LDEsOCwxLDEwLDIsOCwxLDEyLDIsMTYsMSwxMTQsCisgICAgNDUsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDYyLDAsMCwwLDExNiwwLAorICAgIDEyNCwwLDEzMSwxLDEyNSwxLDExNiwxLDEwNiwyLDEzMSwwLDEsMCwxMjEsMTIsCisgICAgMTI0LDEsMTA2LDMsMTMxLDAsMSwwLDg3LDAsMTEwLDIwLDQsMCwxMTYsNCwKKyAgICAxMDcsMTAsMTE0LDQ4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDEwLDg4LDAsCisgICAgMTI0LDEsMTA2LDUsMTMxLDAsMSwwLDEwMCwxLDgzLDAsNDEsMiw5NywyMSwKKyAgICAxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywKKyAgICAxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LAorICAgIDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLAorICAgIDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwKKyAgICAxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwKKyAgICAzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsCisgICAgMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiwKKyAgICA5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwKKyAgICAxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsCisgICAgMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LAorICAgIDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LAorICAgIDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsNDEsNiwxMTQsNDUsMCwwLDAsCisgICAgMTE0LDQ2LDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LAorICAgIDE3LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwyLDExNCwxNSwwLDAsMCwKKyAgICAxMTQsMjEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSwKKyAgICA5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTc4LDAsMCwwLDExNSwxNCwwLAorICAgIDAsMCwwLDcsOCwxLDgsMSwyLDEsMTIsMSwxNCwzLDYsMiwKKyAgICAxMTQsNTYsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsMywwLDAsMCw3OSwwLDAsMCwxMTUsMTAsMCwwLDAsMTI0LAorICAgIDAsMTI0LDEsMTI0LDIsMTQyLDEsODMsMCw0MSwxLDk3LDQ2LDEsMCwwLAorICAgIDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsCisgICAgMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTEwLAorICAgIDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCwzMiwxMTYsMTExLAorICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsCisgICAgOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLDExMSwxMTQsMTA5LDk3LDEwOCwzMiw5OSwKKyAgICA5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCw5Nyw5OSwxMDEsMTE1LDMyLDExOSwxMDQsCisgICAgMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDEwLDMyLDMyLDMyLDMyLAorICAgIDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwxMTYsMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwKKyAgICAxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsMTAwLDMyLDExMCwxMTEsMTA1LDExNSwxMDEsCisgICAgMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNiwxMTQsOTcsOTksMTAxLDk4LAorICAgIDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDEsCisgICAgMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLDEwLDMyLDMyLDMyLDMyLDExNCwxMCwKKyAgICAwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsNDksMCwwLDAsOTAsNCwxMDcsCisgICAgMTE5LDEwMCwxMTUsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwKKyAgICAxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDE5NywwLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDgsMTE0LDU4LDAsMCwwLDExNCwzMywwLAorICAgIDAsMCw0MSwxLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwxMjEsOTksCisgICAgMSwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNSwwLDAsMCwKKyAgICA3MSwwLDAsMCwxMTUsNTQsMCwwLDAsMTE2LDAsMTA2LDEsMTA2LDIsMTI0LAorICAgIDEsMTA3LDUsMTE0LDUwLDEyNCwwLDEwNiwzLDEwMCw2LDEzMSwxLDExNSwzMCwxMDAsCisgICAgMywxMjQsMCwyMywwLDEyNSwwLDExNiw0LDEyNCwwLDEwNiw1LDEyNCwyLDE0MiwKKyAgICAwLDExNiwwLDEwNiw2LDEwMCw0LDE0MSwyLDEsMCwxMDAsNSw4MywwLDQxLAorICAgIDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwKKyAgICAxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwKKyAgICAxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LAorICAgIDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwKKyAgICAyNTAsMSwzNSwyNTAsNywxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjIsMiwzNSwzMiwKKyAgICA0MSwxLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LDQxLDIsMTE0LDYwLDAsMCwwLAorICAgIDExNCw2MSwwLDAsMCw0MSw3LDExNCwxNCwwLDAsMCwyMTgsNSwxMDIsMTA4LAorICAgIDk3LDEwMywxMTUsMjE4LDcsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsMjE4LDEwLDExNSwxMTYsCisgICAgOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCw1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LAorICAgIDM4LDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDQxLDMsMjE4LDcsCisgICAgMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDU5LDAsMCwwLDExNCw0OSwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsMTYsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LAorICAgIDEwMywxMDEsMjA4LDAsMCwwLDExNSw4LDAsMCwwLDAsMiwxMiwxLDEwLAorICAgIDEsOCwxLDExNCw2OCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDI2LDAsCisgICAgMCwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwyLDEzMiw4LDEyNSwxLDExNiwwLAorICAgIDEyNCwxLDEzNiwwLDEzMSwyLDEsMCwxMjQsMSw4MywwLDQxLDMsMTIyLDQ5LAogICAgIDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsCiAgICAgMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsCiAgICAgMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsCiAgICAgNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLAotICAgIDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLDAsMTI0LDEsMCwxMTYsMCwKLSAgICAwLDEwNiwxLDAsMTA3LDcsMCwxMTQsNDIsMCwxMTYsMiwwLDEwMCwxLDAsCi0gICAgMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwKLSAgICAwLDgzLDQxLDMsNzgsMTIyLDI5LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LDE0LDAsMCwwLAotICAgIDIxOCwyMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LAotICAgIDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwyMTgsCi0gICAgOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDEsMSwyMTgsMywxMDIsMTIwLDExMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSwxMTQsMTAxLDExMywKLSAgICAxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsCi0gICAgOTcsMTEyLDExMiwxMDEsMTE0LDIzNSwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsCi0gICAgMTUsMSwxOCwxLDksMSwxMjIsNTIsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLAotICAgIDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwKLSAgICAxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LAotICAgIDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwKLSAgICAwLDAsMCw0MSwyLDExNCw3OSwwLDAsMCwxMTQsODAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDQxLDEsMTE0LDc5LDAsMCwwLDExNCwxMSwwLDAsMCwKLSAgICAyMTgsMTcsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMTYsMTA1LDExMCwyMzMsMCwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDUsCi0gICAgMTMsMSwxMTQsODEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwzNSwwLDAsCi0gICAgMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsCi0gICAgMTI1LDEsMCwxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsCi0gICAgMTI0LDEsMCw4Myw0MSwzLDEyMiw0Nyw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLAotICAgIDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLAotICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDU1LDAsMCwKLSAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE1LDQyLDAsCi0gICAgMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LAotICAgIDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwKLSAgICA1NywwLDAsMCwyMTgsOSwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNCwKLSAgICA3NywwLDAsMCwxMTQsNTAsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsCi0gICAgMTE0LDc4LDAsMCwwLDQxLDEsMTE0LDc5LDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMjE4LDI0LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKLSAgICAxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsCi0gICAgMjQ2LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsOSwKLSAgICAxLDEyMiw1MCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLAotICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsCi0gICAgOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLDAsMCwwLDQxLDIsMTE0LDc5LAotICAgIDAsMCwwLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsCi0gICAgNzksMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMTQsMTAxLDExMywxMTcsCi0gICAgMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDI0NCwwLDAsMCwxMTUsCi0gICAgNiwwLDAsMCwwLDIsMTgsNSwxMywxLDExNCw4NCwwLDAsMCw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw4MSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LAotICAgIDAsMCwxMzEsMiwwLDEyNSwyLDAsMTI0LDEsMCwxMTYsMSwwLDEwNiwyLAotICAgIDAsMTA3LDYsMCwxMTQsNjcsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwKLSAgICAyNSwxMjUsMywwLDExNiwzLDAsMTI0LDIsMCwxMjQsMywwLDEzMSwyLDAsCi0gICAgMSwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwyNSw4MywxMTYsNCwwLDEyNCwKLSAgICAyLDAsMTMxLDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDEyOCw3NiwxMTEsCi0gICAgOTcsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDMyLDEwNSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwKLSAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCi0gICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKLSAgICAxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSwKLSAgICA1LDIxOCwxNiwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDIxOCw1LDk1LAotICAgIDEwMSwxMjAsMTAxLDk5LDIxOCw1LDk1LDEwOCwxMTEsOTcsMTAwLDQxLDQsMTE0LDE5LDAsCi0gICAgMCwwLDExNCw3OCwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsNiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwyMTgsMTcsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDAsMSwwLDAsMTE1LDEyLDAsMCwwLAotICAgIDAsNiwxNSwxLDE1LDEsMTMsMSwxMywxLDExLDIsMTE0LDkwLDAsMCwKLSAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDM1LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw2LDEsMCwwLDExNiwwLDAsMTI0LDAsCi0gICAgMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMjUsMSwwLDExNiwxLDAsCi0gICAgMTI0LDEsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDcxLDAsMTIxLDE3LDAsMTI0LAotICAgIDEsMCwxMDYsMiwwLDEyNCwwLDAsMTMxLDEsMCw4Myw4NywxMTAsMTgsMCwKLSAgICA0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDcwLDAsMSwxLDEsODksMTEwLDEsCi0gICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDIsMCw4NywxMTAsCi0gICAgMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LAotICAgIDExMCwyMywwLDg4LDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMjcsMCwKLSAgICAxMTYsNiwwLDEyNCwyLDAsMTMxLDEsMCw4MywxMjEsMTMsMCwxMjQsMCwwLAotICAgIDEwNiw3LDAsMTI1LDMsMCw4NywxMTAsMjQsMCw0LDExNiw1LDAsMTA3LDEwLAotICAgIDAsMTE0LDE2NiwwLDEsMSwxLDEwMCwzLDAsMTI1LDMsMCw4OSwxMTAsMSwKLSAgICAwLDg4LDEyMSwxMywwLDEyNCwwLDAsMTA2LDgsMCwxMjUsNCwwLDg3LDExMCwKLSAgICA1OSwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMjQxLDAsMSwxLDEsMTI0LAotICAgIDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIyMSwwLDEwMCw0LDAsMTA2LDksCi0gICAgMCwxMjQsMywwLDEzMSwxLDAsODMsMTAwLDUsMCwxMDYsOSwwLDEyNCwzLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg5LDExMCwxNywwLDg4LDEwMCw2LDAsCi0gICAgMTA2LDksMCwxMjQsMywwLDEyNCw0LDAsMTMxLDIsMCw4MywxMDAsMCwwLAotICAgIDgzLDQxLDcsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsCisgICAgMCwwLDE5LDAsMCwwLDExNSwzOCwwLDAsMCwxMjQsMSwxMTYsMCwxMDYsCisgICAgMSwxMDcsNywxMTQsMjgsMTE2LDIsMTAwLDEsMTA2LDMsMTI0LDEsMTMxLDEsMTI0LAorICAgIDEsMTAwLDIsMTQxLDIsMTMwLDEsMTM2LDAsMTI0LDAsMTI0LDEsMTMxLDIsODMsCisgICAgMCw0MSwzLDc4LDEyMiwyOSwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQxLDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LDE0LDAsMCwKKyAgICAwLDIxOCwyMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNCwzOCwwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwKKyAgICAyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDEsMSwyMTgsMywxMDIsMTIwLAorICAgIDExMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSwxMTQsMTAxLAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDIxOCwwLDAsMCwxMTUsOCwwLDAsMCwwLAorICAgIDEsMTAsMSwxMCwxLDgsMSwxMjIsNTIsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LAorICAgIDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwKKyAgICAxMiwwLDAsMCw0MSwyLDExNCw3MiwwLDAsMCwxMTQsNzMsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDQxLDEsMTE0LDcyLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwyMTgsMTcsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsMTA1LDExMCwyMTYsMCwwLDAsMTE1LDYsMCwwLDAsMCwyLDEyLAorICAgIDUsMTAsMSwxMTQsNzQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwyNiwwLAorICAgIDAsMCwxMzUsMCwxMDIsMSwxMDAsMSwxMDAsMiwxMzIsOCwxMjUsMSwxMTYsMCwKKyAgICAxMjQsMSwxMzYsMCwxMzEsMiwxLDAsMTI0LDEsODMsMCw0MSwzLDEyMiw0NywKKyAgICA2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LAorICAgIDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsCisgICAgMTksMCwwLDAsMTE1LDM4LDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwKKyAgICAxLDExNSwyOCwxMTYsMiwxMDAsMSwxMDYsMywxMjQsMSwxMzEsMSwxMjQsMSwxMDAsCisgICAgMiwxNDEsMiwxMzAsMSwxMzYsMCwxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLAorICAgIDMsNzgsMTIyLDI3LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsCisgICAgMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsNDYsMCwwLDAsMjE4LDksMTA1LAorICAgIDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTQsNzAsMCwwLDAsMTE0LDM4LDAsCisgICAgMCwwLDQxLDIsMTE0LDI2LDAsMCwwLDExNCw3MSwwLDAsMCw0MSwxLAorICAgIDExNCw3MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKKyAgICAyNCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDIyOSwwLDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDEsMTAsMSwxMCwxLDgsMSwxMjIsNTAsOTUsMTE0LDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw2MCwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLAorICAgIDExNCwxMiwwLDAsMCw0MSwyLDExNCw3MiwwLDAsMCwxMTQsNzYsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LDcyLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwyMTgsMTYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwyMjcsMCwwLDAsMTE1LDYsMCwwLDAsMCwyLDEyLAorICAgIDUsMTAsMSwxMTQsNzcsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNjQsMCwKKyAgICAwLDAsMTE2LDAsMTI0LDEsMTI0LDAsMTMxLDIsMTI1LDIsMTI0LDEsMTE2LDEsCisgICAgMTA2LDIsMTA3LDYsMTE0LDUyLDExNiwxLDEwNiwyLDEyNCwxLDI1LDAsMTI1LDMsCisgICAgMTE2LDMsMTI0LDIsMTI0LDMsMTMxLDIsMSwwLDExNiwxLDEwNiwyLDEyNCwxLAorICAgIDI1LDAsODMsMCwxMTAsOCwxMTYsNCwxMjQsMiwxMzEsMSw4MywwLDEwMCwxLAorICAgIDgzLDAsNDEsMiwxMjIsMTI4LDc2LDExMSw5NywxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMDUsMTEwLDExNiwxMTEsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTA1LDExNiw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKKyAgICAzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsCisgICAgMzIsODUsMTE1LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDc4LDQxLDUsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LAorICAgIDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwxNCwwLDAsMCwKKyAgICAyMTgsNywxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMjE4LDUsOTUsMTAxLDEyMCwxMDEsOTksCisgICAgMjE4LDUsOTUsMTA4LDExMSw5NywxMDAsNDEsNCwxMTQsMjYsMCwwLDAsMTE0LDcxLAorICAgIDAsMCwwLDIxOCw0LDExNSwxMTIsMTAxLDk5LDIxOCw2LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsCisgICAgMTA0LDEwNSwxMDksMjM5LDAsMCwwLDExNSwxMiwwLDAsMCwwLDYsMTAsMSwKKyAgICAxMCwxLDEwLDEsMTAsMSwxMiwyLDExNCw4NCwwLDAsMCw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMjE4LDAsMCwwLDExNiwwLDEyNCwwLDEwMCwxLDEwMCwwLDEzMSwKKyAgICAzLDEyNSwxLDExNiwxLDEyNCwxLDEwMCwyLDEzMSwyLDExNCw1NCwxMjEsMTAsMTI0LAorICAgIDEsMTA2LDIsMTI0LDAsMTMxLDEsODMsMCw0LDAsMTE2LDMsMTA3LDEwLDExNCwKKyAgICA1MiwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTIxLDEwLDEyNCwKKyAgICAwLDEwNiw0LDEyNSwyLDg3LDAsMTEwLDIwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LAorICAgIDg0LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDE4LDg4LDAsMTI0LDIsMTAwLAorICAgIDAsMTA3LDksMTE0LDEwMiwxMTYsNiwxMjQsMiwxMzEsMSw4MywwLDEyMSwxMCwxMjQsCisgICAgMCwxMDYsNywxMjUsMyw4NywwLDExMCwyNCw0LDAsMTE2LDUsMTA3LDEwLDExNCwKKyAgICAxMzYsMSwwLDEsMCwxLDAsMTAwLDMsMTI1LDMsODksMCwxMTAsMiw4OCwKKyAgICAwLDEyMSwxMCwxMjQsMCwxMDYsOCwxMjUsNCw4NywwLDExMCw1Miw0LDAsMTE2LAorICAgIDUsMTA3LDEwLDExNCwyMDAsMSwwLDEsMCwxLDAsMTI0LDEsMTAwLDAsMTA3LAorICAgIDgsMTE0LDE4NCwxMDAsNCwxMDYsOSwxMjQsMywxMzEsMSw4MywwLDExMCwxMiwxMDAsCisgICAgNSwxMDYsOSwxMjQsMywxMjQsMSwxMzEsMiw4MywwLDg5LDAsMTEwLDE0LDg4LAorICAgIDAsMTAwLDYsMTA2LDksMTI0LDMsMTI0LDQsMTMxLDIsODMsMCwxMDAsMCw4MywKKyAgICAwLDQxLDcsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsCiAgICAgMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwyNTAsMSw2MywKICAgICAxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLAogICAgIDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywKICAgICAzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCiAgICAgMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsNDEsMTAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDkyLDAsMCwwLDIxOCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsODYsMCwwLDAsMjE4LAogICAgIDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDIxOCw4LDk1LDk1LDExNSwxMTIsCiAgICAgMTAxLDk5LDk1LDk1LDIxOCwxNCw2NSwxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNjksCiAgICAgMTE0LDExNCwxMTEsMTE0LDIxOCwyMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLAogICAgIDExMiwxMTQsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTIsMTAxLDk5LDExNCwxLDAsMCwKLSAgICAwLDIxOCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwxMTQsNTAsMCwwLDAsCi0gICAgNDEsNSwxMTQsODksMCwwLDAsMjE4LDYsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsCi0gICAgODgsMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwxMTAsCisgICAgMCwyMTgsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsMTE0LDM4LDAsMCwwLAorICAgIDQxLDUsMTE0LDgzLDAsMCwwLDIxOCw2LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LAorICAgIDgyLDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLAogICAgIDk3LDEwOSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKICAgICAwLDAsMjE4LDEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKLSAgICAxNiwxLDAsMCwxMTUsNDYsMCwwLDAsMCwyLDE4LDEsMTUsNCwzLAotICAgIDEsMTcsMSwxMywxLDUsMSwzLDEsMTMsMSwxMywxLDUsMiwxMiwKLSAgICAxLDEwLDQsMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwxMywxLDEzLAotICAgIDEsMTIsMSwxMywyLDIxLDIsMTE0LDEwMSwwLDAsMCw5OSwwLDAsMCwKKyAgICAyNTUsMCwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxMiwxLDEwLDQsMiwKKyAgICAxLDEwLDEsMTQsMSw2LDEsMiwxLDEwLDEsMTQsMSw2LDIsOCwKKyAgICAxLDgsNCwyLDEsMTAsMSwxNCwxLDEwLDEsMiwxLDEwLDEsMTQsCisgICAgMSw4LDEsMTIsMiwxOCwyLDExNCw5NSwwLDAsMCw5OSwwLDAsMCwKICAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSw1MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsCi0gICAgMCwxMDAsNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwKLSAgICAxMzIsMCwwLDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE3LDk1LDEwNSwKKyAgICAwLDExNSwzNiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsCisgICAgMTAwLDIsMTMyLDAsOTAsMywxMDAsMywxMDAsNCwxMzIsMCw5MCw0LDEwMCw1LAorICAgIDEwMCw2LDEzMiwwLDkwLDUsMTAwLDcsODMsMCw0MSw4LDIxOCwxNyw5NSwxMDUsCiAgICAgMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsOTksCiAgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAotICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDAsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE0LDk1LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDE5LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNTQsMSwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwKLSAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsMCwxMDYsMiwKLSAgICAwLDExNiwzLDAsMTA2LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDUsMCwKLSAgICA2MCwxMDAsMCwwLDgzLDQxLDIsNzgsODQsNDEsNiwxMTQsMTA0LDAsMCwwLAotICAgIDIxOCwxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCwKLSAgICAxMDMsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMTUsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDU4LDEsCi0gICAgMCwwLDExNSw0LDAsMCwwLDAsNCwxMiwxLDEyMiwyNyw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsCi0gICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsMTIxLDAsCi0gICAgMCwwLDEyMiwxMDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDExNCw3OCwwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwKLSAgICAxMjQsMiwwLDEwNiw0LDAsNjEsODcsMTEzLDEwMCwwLDQsMTE2LDUsMCwxMDcsCi0gICAgMTAsMCwxMTQsNzQsMCwxLDEsMSw4OSwxMTMsMTAwLDAsODgsMTEwLDIyLDAsCi0gICAgMTE2LDYsMCwxMDAsMywwLDEyNCwyLDAsMTA2LDQsMCwxMjQsMiwwLDEwNiwKLSAgICA3LDAsMTMxLDMsMCwxLDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsOTUsOCwwLDg4LDEwMCwwLDAsODMsNDEsNSw3OCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwKLSAgICAwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwKLSAgICAwLDAsMTE0LDI1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNiwwLDAsMCw2OCwxLDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAotICAgIDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsCi0gICAgOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAotICAgIDEwMSwxMjAsMTEyLDExNCw2MiwxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsMTA0LDAsMCwKLSAgICAwLDExNCwyNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAotICAgIDExNCwxNSwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwKLSAgICA5OSwwLDAsMCwxMTQsMTA1LDAsMCwwLDQxLDMsMTE0LDE5LDAsMCwwLAotICAgIDExNCwyOSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLDAsMCwwLDY1LDEsCi0gICAgMCwwLDExNSwxOCwwLDAsMCwwLDEsMywxLDksMSwyNSwxLDMsCi0gICAgMSwxNywxLDEzLDEsOCwyLDI2LDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsCi0gICAgMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLAotICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsMCwKLSAgICAwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCw1MiwKLSAgICAxLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsMTAyLAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDgsMCwwLDAsNjQsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDAsMywwLDEwMCw1LDAsMTAwLDMsCi0gICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMyw5MCw0LDAsMTAwLDgsMCwKLSAgICAxMDAsOSwwLDEzMiwwLDAsOTAsNSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwKLSAgICAwLDAsOTAsNiwwLDEwMSw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsCi0gICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsOCwwLDEwNiw5LDAsMTAwLDE0LDAsCi0gICAgMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwKLSAgICAxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LAotICAgIDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsCi0gICAgMTAxLDExLDAsMTA2LDksMCwxMDAsMTksMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsMTEsMCwxMDAsMywwLDgzLDQxLDIwLDIxOCwxMCw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwKLSAgICAxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsOTcsCi0gICAgMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLDk5LAotICAgIDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsMTE3LAotICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLDMyLAotICAgIDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwxMTUsCi0gICAgMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwxMDEsCi0gICAgMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsMzIsCi0gICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsNDYsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LDk1LAotICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsCi0gICAgMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLAotICAgIDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLDMyLAotICAgIDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwKLSAgICAxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKLSAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLAotICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsMzIsCi0gICAgMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNSwKLSAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLDEwNSwKLSAgICAxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsMTA1LAotICAgIDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsOTYsCi0gICAgOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwKLSAgICAxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsMTE2LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDExNSwKLSAgICAzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCi0gICAgOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKLSAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LDEwMSwKLSAgICAxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsCi0gICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwxMTUsCi0gICAgMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTUsCi0gICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LDExNywKLSAgICAxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LDEwNCwKLSAgICAxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsMTA5LAotICAgIDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMTAsCi0gICAgMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwxMTEsCi0gICAgMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCi0gICAgMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwKLSAgICAxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLDEwOCwKLSAgICAxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLDExNiwKLSAgICA5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LAotICAgIDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMjEsCi0gICAgMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwyMTgsNiwxMTEsMTE0LAotICAgIDEwNSwxMDMsMTA1LDExMCw3OCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LAorICAgIDY3LDAsMCwwLDExNSwxOCwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEyNCwKKyAgICAxLDEwNiwxLDEyNCwwLDk1LDIsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDMsCisgICAgMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDg5LDAsMCwwLDIxOCw1LAorICAgIDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDI2LDAsMCwwLDExNCw4MywwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAxMTQsMjcsMCwwLDAsMzcsMSwwLDAsMTE1LDQsMCwwLDAsMCwxLAorICAgIDYsMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsCisgICAgOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwyOCwwLDAsMCwxMDAsMSwxMjQsMCwxMDYsMCw5NSwxLAorICAgIDEyNCwwLDEwNiwyLDExNiwzLDEwNiw0LDEyNCwwLDEwNiwwLDEwNiw1LDYwLDAsCisgICAgMTAwLDAsODMsMCw0MSwyLDc4LDg0LDQxLDYsMTE0LDk4LDAsMCwwLDIxOCwKKyAgICAxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCw5NywKKyAgICAwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwxNSwwLAorICAgIDAsMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDgsMCwwLDAsNDEsMSwwLAorICAgIDAsMTE1LDQsMCwwLDAsMCw0LDgsMSwxMjIsMjcsOTUsMTA1LDExMCwxMTUsCisgICAgMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LAorICAgIDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDMsMCwwLDAsMTcsMCwwLDAsNzEsMCwwLDAsMTE1LDk4LDAsMCwKKyAgICAwLDEyMiw4MiwxMjQsMCwxMDYsMCwxMjUsMiwxMTYsMSwxMDAsMSwxMDAsMiwxMzIsCisgICAgMCwxMjQsMSw2OCwwLDEzMSwxLDEzMSwxLDExNCw2NCwxMjEsMTQsMTE2LDIsMTA2LAorICAgIDMsMTI0LDIsMTA2LDQsNjEsMCw4NywwLDExMyw4MCw0LDAsMTE2LDUsMTA3LAorICAgIDEwLDExNCw2MCwxLDAsMSwwLDEsMCw4OSwwLDExMyw4MCw4OCwwLDExMCwKKyAgICAxNiwxMTYsNiwxMDAsMywxMjQsMiwxMDYsNCwxMjQsMiwxMDYsNywxMzEsMywxLAorICAgIDAsODcsMCwxMDAsMCwxMDAsNCwxMjQsMCwxMDYsMCw5NSw4LDg4LDAsMTAwLAorICAgIDAsODMsMCw0MSw1LDc4LDk5LDEsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLDExNSwyMiwwLDAsMCwKKyAgICAxMjQsMCw5MywxNCwxMjUsMSwxMjQsMSwxMDAsMCwxMDcsOSw4NiwwLDEsMCwKKyAgICAxMTMsMiwxMDAsMCw4MywwLDQxLDEsNzgsMTE0LDEwLDAsMCwwLDQxLDIsCisgICAgOTAsMiw0Niw0OCw5MCwzLDk3LDExNCwxMDMsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjUwLDksNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwKKyAgICAxMTIsMTE0LDYyLDUxLDEsMCwwLDExNSwyLDAsMCwwLDQsMCwxMjIsNDUsCisgICAgOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsCisgICAgMTIxLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw0Niw2MCwxMDgsMTExLDk5LDk3LAorICAgIDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDEyMiwxOCwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjMsMzMsMTE0LDEyNSwzMiwzNSwzMiwxMjMsMzMsMTE0LAorICAgIDEyNSw3MCw0MSw5LDExNCw5OCwwLDAsMCwyMTgsMyw5NywxMTAsMTIxLDExNCwxNCwKKyAgICAwLDAsMCwxMTQsNzksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw1NCwwLAorICAgIDAsMCwxMTQsNjgsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCw5OSwwLDAsCisgICAgMCw0MSwzLDExNCwyNiwwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDgyLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCw1MCwwLDAsMCw0OCwxLDAsMCwxMTUsMTgsMCwwLDAsMCwKKyAgICAxLDIsMSw2LDEsMTgsMSwyLDEsMTQsMSwxNCwxLDgsMiwyMCwKKyAgICAyLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywKKyAgICAxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsCisgICAgMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LAorICAgIDI3LDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDExNCw5NiwwLDAsMCwzNSwxLDAsMCwxMTUsNiwwLDAsMCwKKyAgICA4LDIsOCw0LDgsNywxMTQsOTYsMCwwLDAsOTksMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw2NCwwLDAsMCwKKyAgICAxMTUsMTE0LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwKKyAgICAzLDEwMCwyLDEwMCwyLDEwMCwyLDEwMCwzLDE1NiwzLDEwMCw0LDEwMCw1LDEzMiwKKyAgICAyLDkwLDQsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNSwxMDAsOCwxMDAsOSwxMzIsCisgICAgMCw5MCw2LDEwMSw3LDEwMCwxMCwxMDAsMTEsMTMyLDAsMTMxLDEsOTAsOCwxMDEsCisgICAgOCwxMDYsOSwxMDAsMTIsMTAwLDExLDEzMiwwLDEzMSwxLDkwLDgsMTAxLDcsMTAwLAorICAgIDEzLDEwMCwxNCwxMzIsMCwxMzEsMSw5MCwxMCwxMDEsNywxMDAsMTUsMTAwLDE2LDEzMiwKKyAgICAwLDEzMSwxLDkwLDExLDEwMSwxMSwxMDYsOSwxMDAsMTcsMTAwLDE2LDEzMiwwLDEzMSwKKyAgICAxLDkwLDExLDEwMCwyLDgzLDAsNDEsMTgsMjE4LDEwLDc3LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsODMsMTEyLDEwMSw5OSw5NywyMDgsNSwwLDAsODQsMTA0LDEwMSwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDY1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTUsMTEyLDEwMSw5OSwKKyAgICAzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDk3LAorICAgIDk4LDExMSwxMTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LAorICAgIDMyLDMyLDcwLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsMTAwLDk3LDExNiw5NywzMiw5NywKKyAgICAxMTUsMTE1LDExMSw5OSwxMDUsOTcsMTE2LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwxMTAsOTksMTA4LDExNywKKyAgICAxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NCwzMiwxMTcsMTE1LDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTAsOTcsCisgICAgMTA5LDEwMSw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDk3LDk4LDExNSwxMTEsMTA4LAorICAgIDExNywxMTYsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsOTYsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDYsMzIsMzIsOTYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NiwzMiwxMDUsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsCisgICAgMTAsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTA1LDExMCw0NiwzMiwzMiwKKyAgICA4NCwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAorICAgIDExNCwxMDUsMTE4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICA5NywxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDEwNSwxMTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDk2LDMyLDEwMCwxMDEsMTE2LDEwMSwxMTQsMTA5LDEwNSwxMTAsMTAxLAorICAgIDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAorICAgIDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsMzIsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsMTEwLAorICAgIDExMSwxMTYsNDYsMzIsMzIsNzksMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKKyAgICAxMTYsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMDEsCisgICAgMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsOTYsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsOTYsMzIsMTA1LDExNSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDgsMTExLDk5LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExOSwxMDQsCisgICAgMTA1LDk5LDEwNCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwxMDIsMzIsMTE2LAorICAgIDEwNCw5NywxMTYsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDEwNSwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSw0NiwzMiwzMiw4NywKKyAgICAxMDQsMTAxLDExMCwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA1LDExNSwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMTUsMTAxLDExNiw0NCwzMiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwzMiwKKyAgICAxMTksMTA1LDEwOCwxMDgsMzIsMTA5LDk3LDExNiw5OSwxMDQsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsOTYsMTA0LDk3LDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5NiwzMiwKKyAgICAxMDUsMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTcsCisgICAgMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDM0LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDM0LAorICAgIDMyLDExNCwxMDEsMTAyLDEwOCwxMDEsOTksMTE2LDExNSwzMiw5NywzMiwxMDgsMTExLDk5LDk3LAorICAgIDExNiwxMDUsMTExLDExMCw0NiwxMCwzMiwzMiwzMiwzMiw4NywxMDQsMTAxLDExMCwzMiwxMTYsCisgICAgMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiw4NCwxMTQsMTE3LDEwMSw0NCwzMiw5Niw5NSw5NSwKKyAgICAxMDIsMTA1LDEwOCwxMDEsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsCisgICAgMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExNSwzMiwxMTUsMTAxLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5Niw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDEwMCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsCisgICAgMTAxLDQ0LDMyLDEwNSwxMDIsMzIsOTcsMTEwLDEyMSw0NiwzMiwzMiw3MywxMTYsMTAsMzIsCisgICAgMzIsMzIsMzIsOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMTE1LDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsCisgICAgOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDk2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSwKKyAgICA5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw5NiwzMiwKKyAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LDEwMSwzMiwKKyAgICAxMTEsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMDUsMTAxLDExNSwzMiwKKyAgICAxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTksMTA0LAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTE1LDExNyw5OCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDExNSwxMDEsMTE2LAorICAgIDQ0LDMyLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNSwxMDQsMTExLAorICAgIDExNywxMDgsMTAwLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiw4NCwxMTQsMTE3LDEwMSw0NSwKKyAgICA0NSw5NywxMTAsMTAwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMTE5LDEwNSwxMTUsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgwLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiw0MCwxMDksOTcsMTIxLAorICAgIDQxLDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDExMCwxMTEsMTEwLDQ1LDc4LDExMSwxMTAsMTAxLAorICAgIDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTEwLDMyLDk2LDExNSwxMTcsOTgsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDExNSw5Niw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwxMTksMTA1LAorICAgIDEwOCwxMDgsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OSwxMTAsMTA4LDEyMSwzMiwKKyAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsMzIsNDAsMTE1LDEwMSwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5Nyw5OCw5OSw0Niw3NywxMDEsMTE2LDk3LDgwLAorICAgIDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLAorICAgIDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsCisgICAgODAsOTcsMTE2LDEwNCw2OSwxMTAsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MSwKKyAgICAzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwzMiw3NywKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCwKKyAgICA5OSwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDQxLDMsMjE4LDYsMTExLAorICAgIDExNCwxMDUsMTAzLDEwNSwxMTAsMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE1LDExNiwKICAgICA5NywxMTYsMTAxLDIxOCwxMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKICAgICAzLDAsMCwwLDMsMCwwLDAsNiwwLDAsMCwyLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw3OSwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCi0gICAgMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTI0LDMsMCwxMjQsMCwKLSAgICAwLDk1LDIsMCwxMjQsNCwwLDEyNCwwLDAsOTUsMywwLDEyNCw1LDAsCi0gICAgMTE0LDQ4LDAsMTAzLDAsMCwxMTAsMywwLDEwMCwwLDAsMTI0LDAsMCw5NSwKLSAgICA0LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMCwwLDEyNCwwLAotICAgIDAsOTUsNiwwLDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxNSwKLSAgICAwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsCi0gICAgMCwwLDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsCi0gICAgOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDEzLAotICAgIDk1LDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsNyw5NSwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCw0MSw2LDExNCwxOSwwLDAsMCwxMTQsMTUsMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLDAsCi0gICAgMCwxMTQsMTA5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxMTYsMSwwLDAsMTE1LDE0LAotICAgIDAsMCwwLDAsMiw5LDEsOSwxLDksMSw5LDEsMjEsMyw5LAotICAgIDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwKLSAgICAxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTQ3LDAsMCwwLAotICAgIDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMTAzLDIsCi0gICAgMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsMCwwLDEwNyw5LDAsCi0gICAgMTE0LDc2LDAsMTI0LDEsMCwxMDYsNCwwLDEwMCwzLDAsMTA2LDAsMCwxMjQsCi0gICAgMCwwLDEwNiwzLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDAsMCwxMDYsCi0gICAgNSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTE2LDAsMTI0LDEsMCwxMDYsNCwKLSAgICAwLDEwMCw0LDAsMTA2LDAsMCwxMjQsMCwwLDEwNiw1LDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDEsMTAwLDUsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDYsMCwKLSAgICAxMDYsNywwLDEwMCw2LDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLAotICAgIDIsMCw4Myw0MSw3LDc4LDEyMiw5LDExMCw5NywxMDksMTAxLDYxLDEyMywzMywxMTQsCi0gICAgMTI1LDEyMiwxMSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDYxLDEyMywzMywxMTQsMTI1LDEyMiwxMSwKLSAgICAxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMjksMTE1LDExNyw5OCwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDYxLDEyMywxMjUsMTIyLDYsMTIzLDEyNSw0MCwxMjMsCi0gICAgMTI1LDQxLDEyMiwyLDQ0LDMyLDQxLDksMTE0LDUwLDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwyMTgsNiw5NywxMTIsCi0gICAgMTEyLDEwMSwxMTAsMTAwLDExNCwxMTAsMCwwLDAsMjE4LDksOTUsOTUsOTksMTA4LDk3LAotICAgIDExNSwxMTUsOTUsOTUsMTE0LDEsMCwwLDAsMjE4LDQsMTA2LDExMSwxMDUsMTEwLDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTIsMCwwLDAsMTI4LAotICAgIDEsMCwwLDExNSwxNiwwLDAsMCwwLDEsMTUsMSwyMSwxLDE1LDEsCi0gICAgMjUsMSwxNSwxLDEyLDEsMTMsMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTQ1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLAotICAgIDEyMSwxMDcsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywKLSAgICAyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEwNiwyLAotICAgIDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsCi0gICAgMTA2LDMsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTA2LAotICAgIDAsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCwxMDYsNCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDUsMCwKLSAgICAxMjQsMSwwLDEwNiw1LDAsMTA3LDIsMCw4Myw4NywxMTAsMjIsMCw0LDExNiwKLSAgICA2LDAsMTA3LDEwLDAsMTE0LDE0MCwwLDEsMSwxLDEwMCwxLDAsODMsODksCi0gICAgMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDIsNzgsNzAsNDEsNywxMTQsMTEwLAotICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLAotICAgIDAsMCwyMTgsNiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwyMTgsMTIsMTA0LDk3LDExNSw5NSwKLSAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsOTYsMCwwLDAsNDEsMywxMTQsCi0gICAgMTksMCwwLDAsOTAsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LDkwLDQsMTE1LDEwOSwxMTUsCi0gICAgMTA4LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAotICAgIDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMTM4LDEsMCwwLDExNSwyMCwwLDAsCi0gICAgMCwwLDEsOSwxLDMsMSwxOCwxLDE4LDEsMTgsMSwxNSwxLDE4LAotICAgIDEsMjAsMSwxMywxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsCi0gICAgOTksNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4NSwwLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw3OCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDc4LDAsCi0gICAgMTI0LDAsMCwxMDYsMiwwLDExNCw3OCwwLDExNiwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw1NywwLDExNiw0LDAsMTMwLDEsMCwxMTYsMywwLDEwNiw1LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwwLDAsCi0gICAgMTI0LDAsMCwxMDYsMCwwLDgzLDQxLDEsNzgsNDEsNiwxMTQsMTEyLDAsMCwKLSAgICAwLDExNCwxMDcsMCwwLDAsMTE0LDExMSwwLDAsMCwyMTgsMTksOTUsOTgsMTExLAotICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwKLSAgICAyMTgsMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDkwLDExLDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTAwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMTYsMCwwLDAsMTUwLDEsMCwKLSAgICAwLDExNSwxMiwwLDAsMCwwLDIsMTUsMSwyNCwxLDEyLDEsNiwxLAotICAgIDIxLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDEwMCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwKLSAgICAxLDExNCwxMTIsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LDExNiwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsMTE2LDAsMCwwLDE1OSwxLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzUsMCwxMjQsMCwwLDEwNiwxLDAsCi0gICAgMTA2LDIsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDMsMCwyNSw4MywxMjQsMCwKLSAgICAwLDEwNiwxLDAsODMsMTAwLDEsMCw4Myw0MSw0LDEyMiwzMiw4NCwxMDQsMTAxLAotICAgIDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsNzgsMjE4LDEsCi0gICAgNDYsMTE0LDMzLDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTUsMCwKLSAgICAwLDAsMjE4LDEwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQxLDEsCi0gICAgMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDIxOCw2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTYzLDEsMCwwLAotICAgIDExNSw2LDAsMCwwLDAsMywxNSwxLDIwLDIsMTIyLDE3LDc3LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDgzLDQxLAotICAgIDEsNzgsNDEsMSwxMTQsMTExLDAsMCwwLDQxLDEsMTE0LDE5LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw1NCwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEyNCwKKyAgICAyLDEyNCwwLDk1LDEsMTI0LDMsMTI0LDAsOTUsMiwxMjQsNCwxMjQsMCw5NSwKKyAgICAzLDEyNCw1LDExNCwzMiwxMDMsMCwxMTAsMiwxMDAsMCwxMjQsMCw5NSw0LDEwMCwKKyAgICAxLDEyNCwwLDk1LDUsMTAwLDAsMTI0LDAsOTUsNiwxMDAsMCw4MywwLDQxLAorICAgIDIsNzgsNzAsNDEsNywxMTQsMTUsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICAxMDMsMCwwLDAsMTE0LDEwNCwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwxMyw5NSwxMTUsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgOTcsMTE2LDExNiwxMTQsMjE4LDcsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsNDEsNiwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsMTAzLAorICAgIDAsMCwwLDExNCwxMDQsMCwwLDAsMTE0LDEwNSwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjcsMCwwLAorICAgIDAsOTksMSwwLDAsMTE1LDE0LDAsMCwwLDAsMiw2LDEsNiwxLAorICAgIDYsMSw2LDEsMTQsMyw2LDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTAyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwKKyAgICAxLDEwMCwyLDEwNiwwLDEyNCwwLDEwNiwyLDEzMSwxLDEwMywyLDEyNSwxLDEyNCwKKyAgICAwLDEwNiwzLDEwMCwwLDEwNyw5LDExNCw1MiwxMjQsMSwxMDYsNCwxMDAsMywxMDYsCisgICAgMCwxMjQsMCwxMDYsMywxMzEsMSwxMzEsMSwxLDAsMTI0LDAsMTA2LDUsMTAwLAorICAgIDAsMTA3LDksMTE0LDgwLDEyNCwxLDEwNiw0LDEwMCw0LDEwNiwwLDEyNCwwLDEwNiwKKyAgICA1LDEzMSwxLDEzMSwxLDEsMCwxMDAsNSwxMDYsMCwxMjQsMCwxMDYsNiwxMDYsCisgICAgNywxMDAsNiwxMDYsOCwxMjQsMSwxMzEsMSwxMzEsMiw4MywwLDQxLDcsNzgsCisgICAgMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLAorICAgIDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywxMjUsNDEsMTIyLDIsNDQsMzIsCisgICAgNDEsOSwxMTQsMzgsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5MywwLDAsCisgICAgMCwxMTQsMTAzLDAsMCwwLDIxOCw2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsMTE0LDEwNiwKKyAgICAwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSw5NSwxMTQsMSwKKyAgICAwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsMiwxMTQsMjYsMCwwLDAsCisgICAgMTE0LDQ5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCw0MCwwLDAsMCwxMTEsMSwwLDAsMTE1LDE2LDAsCisgICAgMCwwLDAsMSwxMCwxLDE0LDEsMTAsMSwxOCwxLDEwLDEsOCwxLAorICAgIDEwLDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDEwMiwwLDAsCisgICAgMCwxMjQsMCwxMDYsMCwxMjUsMiwxMjEsNzAsMTI0LDAsMTA2LDEsMTI0LDEsMTA2LAorICAgIDEsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiwyLDEyNCwxLDEwNiwyLDEwNywyLDExMSwKKyAgICA3NiwxMjQsMCwxMDYsMywxMjQsMSwxMDYsMywxMDcsMiwxMTEsNzYsMTI0LDIsMTI0LAorICAgIDEsMTA2LDAsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiw0LDEyNCwxLDEwNiw0LDEwNywKKyAgICAyLDExMSw3NiwxMjQsMCwxMDYsNSwxMjQsMSwxMDYsNSwxMDcsMiw4MywwLDQsCisgICAgMCwxMTYsNiwxMDcsMTAsMTE0LDk2LDEsMCwxLDAsMSwwLDEwMCwxLDgzLAorICAgIDAsODgsMCwxMDAsMCw4MywwLDQxLDIsNzgsNzAsNDEsNywxMTQsMTA2LDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEwMywwLDAsCisgICAgMCwyMTgsNiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwyMTgsMTIsMTA0LDk3LDExNSw5NSwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsOTAsMCwwLDAsNDEsMywxMTQsMjYsCisgICAgMCwwLDAsOTAsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LDkwLDQsMTE1LDEwOSwxMTUsMTA4LAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKKyAgICA2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMTIxLDEsMCwwLDExNSwyMCwwLDAsMCwKKyAgICAwLDEsNiwxLDIsMSwxMiwxLDEyLDEsMTIsMSwxMCwxLDEyLDEsCisgICAgMTIsMSwxNCwxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksCisgICAgNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw1OCwwLDAsCisgICAgMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsOCwxMTQsNTIsMTI0LDAsMTA2LDEsMTAwLAorICAgIDAsMTA3LDksMTE0LDUyLDEyNCwwLDEwNiwyLDExNCw1MiwxMTYsMywxMDAsMCwxMDcsCisgICAgOCwxMTQsMzgsMTE2LDQsMTMwLDEsMTE2LDMsMTA2LDUsMTI0LDAsMTA2LDEsMTMxLAorICAgIDEsMTI0LDAsOTUsMCwxMjQsMCwxMDYsMCw4MywwLDQxLDEsNzgsNDEsNiwKKyAgICAxMTQsMTA4LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEwNywwLDAsMCwyMTgsCisgICAgMTksOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsMTE2LDEwMSwKKyAgICAxMTQsMTEwLDk3LDEwOCwyMTgsMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDkwLDExLDk1LDEwMywxMDEsMTE2LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMTIsMCwwLAorICAgIDAsMTMzLDEsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTAsMSwxNiwxLAorICAgIDgsMSw0LDEsMTQsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsCisgICAgMTAxLDk5LDQ2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLAorICAgIDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTAwLDAsODMsMCw0MSwxLDc4LAorICAgIDQxLDEsMTE0LDEwOCwwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwxMTQsMTEyLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDExNCwxMTIsMCwwLDAsMTQyLDEsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMjQsMCwxMDYsMCwKKyAgICAxMDAsMSwxMDcsOCwxMTQsMjgsMTI0LDAsMTA2LDEsMTA2LDIsMTAwLDIsMTMxLDEsCisgICAgMTAwLDMsMjUsMCw4MywwLDExMCw2LDEyNCwwLDEwNiwxLDgzLDAsMTAwLDEsCisgICAgODMsMCw0MSw0LDEyMiwzMiw4NCwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwKKyAgICAxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsNDYsNzgsMjE4LDEsNDYsMTE0LDE5LDAsMCwwLDQxLAorICAgIDMsMTE0LDEwNiwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDEwLDExNCwxMTIsOTcsCisgICAgMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw2LDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsMTQ2LDEsMCwwLDExNSw2LDAsMCwwLDAsMywKKyAgICAxMCwxLDE4LDIsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSwKKyAgICA0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDYsMCwwLAorICAgIDAsMTI0LDAsMTA2LDAsODMsMCw0MSwxLDc4LDQxLDEsMTE0LDEwNywwLDAsCisgICAgMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDE1NCwxLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDIsMTIyLDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsCisgICAgMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDEyNCwxLDEzMSwxLAorICAgIDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDQsOTgsCisgICAgMTExLDExMSwxMDgsMTE0LDEwNywwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwyMTgsCisgICAgNSwxMTgsOTcsMTA4LDExNywxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxNTgsMSwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCwyLDQxLDEyLDExNCwxLDAsMCwwLDExNCwwLDAsMCwKKyAgICAwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwyNywwLDAsMCwKKyAgICAxMTQsNDAsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsOCwxMTIsMTE0LDExMSwxMTIsCisgICAgMTAxLDExNCwxMTYsMTIxLDExNCwxMTIsMCwwLDAsMjE4LDYsMTE1LDEwMSwxMTYsMTE2LDEwMSwKKyAgICAxMTQsMTE0LDExOSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMCwwLDAsMCwKICAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCi0gICAgMTE3LDAsMCwwLDE3MSwxLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLAotICAgIDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LDk1LAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMSwKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDk4LDExMSwxMTEsMTA4LAotICAgIDExNCwxMTEsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMjE4LDUsMTE4LDk3LAotICAgIDEwOCwxMTcsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDExNCwxMTcsMCwwLDAsMTc1LDEsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiw0MSwxMiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwKLSAgICAwLDAsMCwxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDUyLDAsCi0gICAgMCwwLDExNCwxMTgsMCwwLDAsMjE4LDgsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMTE2LAotICAgIDEyMSwxMTQsMTE2LDAsMCwwLDIxOCw2LDExNSwxMDEsMTE2LDExNiwxMDEsMTE0LDExNCwxMjMsCi0gICAgMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwNiwwLDAsCi0gICAgMCw3OSwxLDAsMCwxMTUsMjAsMCwwLDAsMTIsMzUsNiwyLDE1LDEsCi0gICAgMTUsMTEsMTIsMTAsMTIsMTIsMTgsOSwyMSw0LDE4LDgsMTgsNCwxMTQsMTA2LAotICAgIDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOSwwLDAsMCw5OSwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNiwwLDAsMCwxNSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMjE3LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMDAsMSwwLAotICAgIDEzMSwyLDAsMTE0LDExMCwwLDExNiwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwKLSAgICAzMywwLDExNiwyLDAsMTMwLDEsMCwxMTYsMSwwLDEwNiwzLDAsMTI1LDQsCi0gICAgMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsNzAsMCwxMjQsNCwwLAotICAgIDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEzMSwxLDEsODMsMTI0LDMsMCwKLSAgICAxMTQsODIsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDIsMCwxMjUsNSwwLDEyNCwKLSAgICA0LDAsMTI0LDAsMCwxMDAsMywwLDEyNCwxLDAsMTAwLDQsMCwxMjQsNSwKLSAgICAwLDEzMSwxLDIsODMsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE5MiwKLSAgICAwLDExNiwwLDAsMTI0LDEsMCwxMDAsNSwwLDEzMSwyLDAsMTE0LDE4NiwwLAotICAgIDEyMSwxOSwwLDEyNCwxLDAsMTA2LDQsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAotICAgIDMsMCw4NywxMTMsMTkyLDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxODIsMCwKLSAgICAxLDEsMSwxMDAsMiwwLDEyNSwzLDAsODksMTEzLDE5MiwwLDg4LDExMCw2LAotICAgIDAsMTAwLDYsMCwxMjUsMywwLDExNiw2LDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEwMCw3LDAsMTI0LDIsMCwxMDAsNSwwLDEyNCwzLDAsMTMxLDIsMiw4MywKLSAgICA0MSw4LDEyMiw1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwKLSAgICAxMTAsMzIsMTE4LDk3LDExNCwxMDUsMTExLDExNywxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTAsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLAotICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDExNCw5OSwwLDAsMCwxMTQsMTEwLDAsCi0gICAgMCwwLDExNCwxMDksMCwwLDAsNzAsMTE0LDEwNywwLDAsMCw0MSw3LDExNCwKLSAgICA0LDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyMCwwLDAsMCwyMTgsMjMsCi0gICAgMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTA5LDAsMCwwLDExNCw3NywwLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDQxLDYsMTE0LDE1LDAsMCwwLDExNCw5OSwwLAotICAgIDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDEyOCwwLDAsCi0gICAgMCw5MCw2LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODUsMCwwLDAsMTgwLDEsMCwKLSAgICAwLDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxMiwxLDYsMSw5LDIsCi0gICAgMTIsMSwxNiwxLDE4LDEsMTUsMSw3LDIsMTIsMSwxNSwxLDMsMSwKLSAgICAxOSwxLDEzLDEsMTQsMyw2LDIsMTE0LDg1LDAsMCwwLDk5LDMsMCwKLSAgICAwLDAsMCwwLDAsMCw4LDAsMCwwLDUzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxMTgsMSwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEyNSwzLDAsODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwzMywKLSAgICAwLDEsMSwxLDg5LDExMCwxNywwLDg4LDEyNCwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOSwwLDExNCw1MCwwLDEyNCwzLDAsODMsMTI0LDAsMCwxMDYsMiwwLDEyNSwKLSAgICA0LDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwNSwwLDEyMSwxMywKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LAotICAgIDEsMCwxMDcsMTAsMCwxMTQsMTA0LDAsMSwxLDEsODksMTEwLDEsMCw4OCwKLSAgICAxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDUsMCw4NywxMTAsMjQsMCwKLSAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDE0NCwwLDEsMSwxLDEwMCwwLDAsCi0gICAgMTI1LDUsMCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTAwLDAsMCwxMDcsOCwKLSAgICAwLDExNCwyMTgsMCwxMjQsNSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjEyLDAsCi0gICAgMTIxLDEzLDAsMTI0LDEsMCwxMDYsNSwwLDEyNSwyLDAsODcsMTEzLDIxOCwwLAotICAgIDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMjA4LDAsMSwxLDEsMTAwLDAsMCwKLSAgICAxMjUsMiwwLDg5LDExMywyMTgsMCw4OCwxMTAsNiwwLDEyNCw1LDAsMTI1LDIsCi0gICAgMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw2LDAsMTI1LDYsMCw4NywxMTAsMjQsCi0gICAgMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDEsMSwxLDEsMSwxMDAsMCwKLSAgICAwLDEyNSw2LDAsODksMTEwLDEsMCw4OCwxMjEsMTksMCwxMTYsNywwLDEyNCwKLSAgICAwLDAsMTA2LDgsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwKLSAgICAxMTYsMSwwLDEwNywxMCwwLDExNCw0NywxLDEsMSwxLDEwMCwwLDAsMTI1LAotICAgIDcsMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsMTI0LDQsMCwxMjQsMSwwLAotICAgIDEwMCwxLDAsMTI0LDIsMCwxMzEsMiwxLDEyNSwzLDAsMTI0LDUsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDg3LDEsMTAwLDIsMCwxMTAsMywwLDEwMCwzLAotICAgIDAsMTI0LDMsMCw5NSwxMCwwLDEyNCw2LDAsMTI0LDMsMCw5NSwxMSwwLAotICAgIDEyNCw3LDAsMTI0LDMsMCw5NSwxMiwwLDEyNCwzLDAsODMsNDEsNCw3OCwKLSAgICAxMTQsMTA3LDAsMCwwLDcwLDg0LDQxLDEzLDExNCw5NSwwLDAsMCwxMTQsOTYsCi0gICAgMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5OCwwLAotICAgIDAsMCw5MCw3LDk1LDc5LDgyLDczLDcxLDczLDc4LDIxOCwxMCw5NSw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwyMTgsNCwxMDgsMTA1LDExNSwxMTYsMjE4LDgsOTUsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE0LDEwNiwwLDAsMCwxMTQsMTExLDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTE0LDExMCwwLDAsMCw0MSw4LDExNCw4OSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsODgsMCwwLAotICAgIDAsMTE0LDE1LDAsMCwwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgMTE0LDExNiwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjA5LDEsMCwwLAotICAgIDExNSw3MiwwLDAsMCwwLDIsMywxLDEzLDEsMTMsMSw1LDIsMTIsCi0gICAgMSw0LDIsOSwxLDEyLDEsMywxLDEzLDEsMTMsMiw1LDEsMywKLSAgICAxLDEzLDEsMTMsMSwxMSwxLDEyLDEsMTIsMSwzLDEsMTMsMSwxMywKLSAgICAxLDE0LDIsNiwxLDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTksCi0gICAgMSwxMywxLDExLDIsMjEsMSwyNywxLDksMSw5LDEsMTE0LDEzMiwwLAotICAgIDAsMCwyMTgsOCwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDcwLDk5LDIsMCwKLSAgICAwLDAsMSwwLDAsMCw1LDAsMCwwLDU5LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw1NCwyLDAsMCwxMjQsMiwwLDExNSwzMCwwLDExNiwwLDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDY3LDAsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLAotICAgIDAsOTUsMiwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsCi0gICAgNjYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDk3LDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMjIxLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwzLAotICAgIDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDE4NywwLDEyNCwwLDAsCi0gICAgMTA2LDUsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE4NywwLDExNiw2LDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwxNTEsMCwxMTYsNywwLDEzMCwxLDAsMTE2LDYsCi0gICAgMCwxMDYsOCwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsOSwwLDEyNCw0LDAsCi0gICAgMTMxLDEsMCwxMjUsMywwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMywwLDk1LAotICAgIDEwLDAsMTIxLDEzLDAsMTI0LDMsMCwxMjQsMSwwLDk1LDExLDAsODcsMTEwLAotICAgIDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwyMjAsMCwxLDEsMSw4OSwKLSAgICAxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDI1MSwwLDExNiwwLDAsMTI0LDEsMCwKLSAgICAxMDAsMywwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDMyLDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTIsMCwxMjQsMSwwLDk1LDEzLAotICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwzMSwxLDEsCi0gICAgMSwxLDg5LDExMCwxLDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDk1LDE0LDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2NSwKLSAgICAxLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsOTYsMSwxMTYsCi0gICAgMCwwLDEyNCwxLDAsMTAwLDQsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwxNDgsMSwxMjQsMCwwLDEwNiw1LDAsMTAwLDAsMCwKLSAgICAxMDcsOSwwLDExNCwxNDgsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LAotICAgIDEsMCw5NSwxNSwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwKLSAgICAxMTQsMTQ3LDEsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMCwwLDEwNiwxNiwKLSAgICAwLDExNCw1MCwyLDEyNCwyLDAsMTE1LDE4NywxLDExNiwwLDAsMTI0LDEsMCwKLSAgICAxMDAsNSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDIyNCwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE3LDAsMTI0LDEsMCw5NSwxOCwKLSAgICAwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMjIzLDEsMSwKLSAgICAxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSwyNTQsMSwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw1MCwyLDEyNCwwLDAsMTA2LDE5LDAsMTAwLDAsMCwxMDcsOSwKLSAgICAwLDExNCw1MCwyLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE5LDAsMTI0LDEsMCwKLSAgICA5NSwyMCwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNDksCi0gICAgMiwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsODMsNDEsNyw3OCwKLSAgICAxMTQsMSwwLDAsMCwxMTQsOTEsMCwwLDAsMjE4LDExLDk1LDk1LDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTQsMTMxLDAsMCwwLDExNCw5OCwwLDAsCi0gICAgMCwxMTQsMTI5LDAsMCwwLDQxLDIxLDExNCw2LDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsMSwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDk5LDAsMCwKLSAgICAwLDExNCwxMTAsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIwLDAsMCwwLAotICAgIDIxOCwxNiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwyMTgsNyw5NSw5NSwxMTAsMTAxLDExOSw5NSw5NSw5MCw1LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDExNCw5MSwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxMzQsMCwwLAotICAgIDAsMTE0LDk1LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTA3LDAsMCwwLDExNCw5OCwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwKLSAgICAxMjksMCwwLDAsNDEsNSwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLAotICAgIDExNCwxMzMsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LAotICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LAotICAgIDExNCwxMTUsMjU0LDEsMCwwLDExNSw5MiwwLDAsMCwwLDQsMzAsMSwzLAotICAgIDEsMTYsMSwxMywxLDUsMiwzMCwxLDksMSwxMiwyLDE1LDEsMTIsCi0gICAgMSw2LDEsOSwyLDE1LDEsMTIsMSwzLDEsMTMsMSwxMywxLDUsCi0gICAgMiwzMCwxLDMsMSwxNiwxLDEzLDEsNSwyLDMsMSwxMywxLDEzLAotICAgIDEsNSwyLDMwLDEsMTUsMSwzLDEsMTYsMSwxMywxLDUsMiw5LAotICAgIDEsMzAsMSwzLDEsMTYsMSwxMywxLDUsMiwzMCwxLDE1LDEsMywKLSAgICAxLDE2LDEsMTMsMSw1LDEsMTE0LDEzNywwLDAsMCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxMjksMCwwLDAsMTAwLDEsMCwxMjUsMSwwLDExNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMSwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsNDUsMCwxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwKLSAgICAxMTAsNDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMywwLDEzMSwKLSAgICAyLDAsMTE0LDg1LDAsMTE2LDMsMCwxMDYsNCwwLDEwMCw0LDAsMTE2LDUsCi0gICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDIsMSwxLDEyNCwxLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwxMTIsMCwxMTYsNiwwLDEyNCwwLDAsMTA2LDcsMCwKLSAgICAxMzEsMSwwLDEyNSwxLDAsMTE2LDgsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLAotICAgIDIsMCwxLDEyNCwxLDAsODMsNDEsNywxMjIsNDMsNjcsMTE0LDEwMSw5NywxMTYsCi0gICAgMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLAotICAgIDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTE4LDEwNSwxMDAsMTAxLDEwMCwKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSw0Niw3OCwyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMjIsODcsMTE1LDExNiw5NywxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTAsCi0gICAgMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw1MSw0Niw1NCw0NCwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDExNSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwNSwxMTAsMTAzLDMyLDEwMSwxMjAsCi0gICAgMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwKLSAgICAzMiw5NywxMDgsMTE1LDExMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwzMiw5OSwxMTQsMTAxLAotICAgIDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsOTAsMTAsMTE1LDExNiwKLSAgICA5Nyw5OSwxMDcsMTA4LDEwMSwxMTgsMTAxLDEwOCwyMzMsMiwwLDAsMCw0MSw5LDExNCwKLSAgICA0LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTM4LDAsMCwwLDIxOCw5LAotICAgIDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsCi0gICAgMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDUsMTExLDExMCw4Nyw5NywxMTQsMTEwLAotICAgIDEwNSwxMTAsMTAzLDExNCwxNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzNywwLAotICAgIDAsMCw0MSwyLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSw1OCwKLSAgICAyLDAsMCwxMTUsMjAsMCwwLDAsMCwzLDYsMSwxOCwzLDIxLDEsCi0gICAgMTgsMSw5LDIsMTMsMSwxMiwxLDE1LDEsMTMsMSwxMTQsMTQ0LDAsMCwKLSAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDE0OSwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMSwwLDEwMCwyLDAsMTEwLDYsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLAotICAgIDEsMCwxMDcsOCwwLDExNCw5NSwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMSwKLSAgICAwLDEwNyw4LDAsMTE0LDczLDAsMTAwLDMsMCwxMDYsMywwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCw4MywxMDAsNCwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDEwNiwyLDAsMTMxLDIsMCw4MywxMTAsNTAsMCwxMjQsMCwwLDEwNiw0LDAsCi0gICAgMTE0LDEyMywwLDEwMCw1LDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMiwwLDgzLDEwMCw2LDAsMTA2LDMsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsODMsMTAwLDEsMCw4MywKLSAgICA0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwKLSAgICAxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCw5MywwLDAsMCwKLSAgICAxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLAotICAgIDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywKLSAgICAzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LAotICAgIDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsCi0gICAgNDEsNjIsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsOTksCi0gICAgMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMTcsMCwwLDAsNDEsMiwxMTQsCi0gICAgODgsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCw5NywwLDAsMCw3NiwyLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMCwzLDMwLDEsMTUsMSwxNSwxLDEzLDIsCi0gICAgMjIsMiw5LDEsMTksMiwxMTQsOTcsMCwwLDAsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDQsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDI1MywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwNiwyLDAsMTMxLDAsMCwxLDExNiwzLDAsMTI0LDIsMCwxMzEsMSwKLSAgICAwLDE0MywyMDgsMCwxLDExNiw0LDAsMTA2LDUsMCwxMDYsNiwwLDEyNCwyLAotICAgIDAsMTMxLDEsMCwxMjQsMSwwLDEwNyw5LDAsMTE0LDg5LDAsMTAwLDEsMCwKLSAgICAxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExNiw4LDAsMTI0LAotICAgIDMsMCwxMDAsMiwwLDEyNCwyLDAsMTMxLDEsMSwxMzAsMSwwLDEyNCwwLAotICAgIDAsMTA2LDksMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE2MywwLDEyNCwwLDAsCi0gICAgMTA2LDEwLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNDAsMCwxMTYsOCwwLDEwMCwKLSAgICA0LDAsMTAwLDIsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDEsMSwxMzAsMSwKLSAgICAwLDExNiwxMSwwLDEyNCwwLDAsMTI0LDEsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMxLDIsMSwxLDEyNCwxLDAsODMsMTE2LDExLDAsMTI0LDAsMCwxMjQsMSwKLSAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzEsMiwxLDEsMTE2LDEyLDAsMTI0LDAsCi0gICAgMCwxMDYsOSwwLDEwMCw3LDAsMTMxLDIsMCwxMTUsMjE5LDAsMTI0LDAsMCwKLSAgICAxMDYsOSwwLDEwNiwxMywwLDEyNCwyLDAsMTMxLDEsMCwxLDExMCwxNiwwLAotICAgIDEyNCwwLDAsMTA2LDksMCwxMDYsMTQsMCwxMjQsMSwwLDEzMSwxLDAsMSwKLSAgICA4NywxMDAsMywwLDgxLDgyLDg4LDExNiw0LDAsMTA2LDUsMCwxMjQsMiwwLAotICAgIDI1LDgzLDQxLDgsMTIyLDUxLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsCi0gICAgMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNCwxNSwwLDAsMCw3OCwxMjIsCi0gICAgMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LAotICAgIDEzMywwLDAsMCw4NCwxMTQsMTM5LDAsMCwwLDQxLDE1LDExNCwxNSwwLDAsCi0gICAgMCwxMTQsNTcsMCwwLDAsMjE4LDEyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMTE0LDU0LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsCi0gICAgMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNzcsMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDEzNywwLDAsCisgICAgMTAyLDAsMCwwLDYyLDEsMCwwLDExNSwyMCwwLDAsMCw4LDM1LDQsCisgICAgMiw0LDEsMTQsMTEsOCwxMCw4LDEyLDEyLDksMTQsNCwxMiw4LDEyLAorICAgIDQsMTE0LDEwMiwwLDAsMCw0MSwyLDExNCwxMDMsMCwwLDAsMTE0LDEwNSwwLAorICAgIDAsMCw5OSwyLDAsMCwwLDIsMCwwLDAsNiwwLDAsMCwxNCwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTU0LDAsMCwwLDExNiwwLDEyNCwxLAorICAgIDEwMCwxLDEzMSwyLDExNCw3NCwxMTYsMSwxMDAsMiwxMDcsOCwxMTQsMjIsMTE2LDIsCisgICAgMTMwLDEsMTE2LDEsMTA2LDMsMTI1LDQsMTI0LDMsMTAwLDIsMTA3LDgsMTE0LDQ4LAorICAgIDEyNCw0LDEyNCwwLDEyNCwxLDEwMCwzLDE0MSwyLDgzLDAsMTI0LDMsMTE0LDU2LAorICAgIDEwMywwLDExMCwyLDEwMCwyLDEyNSw1LDEyNCw0LDEyNCwwLDEyNCwxLDEyNCw1LAorICAgIDEwMCw0LDE0MSwzLDgzLDAsMTI0LDMsMTAwLDIsMTA3LDgsMTE0LDEzOCwxMTYsMCwKKyAgICAxMjQsMSwxMDAsNSwxMzEsMiwxMTQsMTM0LDEyMSwxNCwxMjQsMSwxMDYsNCwxMjQsMCwKKyAgICAxMzEsMSwxMjUsMyw4NywwLDExMywxMzgsNCwwLDExNiw1LDEwNywxMCwxMTQsMTMwLAorICAgIDEsMCwxLDAsMSwwLDEwMCwyLDEyNSwzLDg5LDAsMTEzLDEzOCw4OCwwLAorICAgIDExMCw0LDEwMCw2LDEyNSwzLDExNiw2LDEyNCwwLDEyNCwxLDEyNCwyLDEyNCwzLAorICAgIDEwMCw3LDE0MSw0LDgzLDAsNDEsOCwxMjIsNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCwKKyAgICA5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwxMTcsMTE1LDMyLAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDkwLAorICAgIDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCw0MSwxLAorICAgIDExNCw5MywwLDAsMCw0MSwyLDExNCw5MywwLDAsMCwxMTQsMTA2LDAsMCwKKyAgICAwLDExNCwxMDUsMCwwLDAsNzAsNDEsMiwxMTQsMTAzLDAsMCwwLDExNCwxMDUsCisgICAgMCwwLDAsNDEsNywxMTQsNCwwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwKKyAgICAxMTYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEwNSwwLAorICAgIDAsMCwxMTQsNzAsMCwwLDAsMTE0LDEwMiwwLDAsMCw0MSw2LDExNCwxNSwKKyAgICAwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA1LDAsCisgICAgMCwwLDExNCwxMjQsMCwwLDAsOTAsNiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDc4LAorICAgIDAsMCwwLDE2MywxLDAsMCwxMTUsMzQsMCwwLDAsMCwyLDEwLDEsCisgICAgOCwxLDQsMSw2LDIsOCwxLDEyLDEsMTIsMSw2LDEsOCwyLAorICAgIDgsMSwxMCwxLDIsMSwxNCwxLDE0LDEsMTIsMyw0LDIsMTE0LDc4LAorICAgIDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLAorICAgIDUzLDAsMCwwLDY3LDAsMCwwLDExNSw1NiwxLDAsMCwxMjEsMTAsMTI0LAorICAgIDAsMTA2LDAsMTI1LDMsODcsMCwxMTAsMjAsNCwwLDExNiwxLDEwNywxMCwxMTQsCisgICAgMzAsMSwwLDEsMCwxLDAsODksMCwxMTAsMTQsODgsMCwxMjQsMywxMDAsCisgICAgMCwxMDcsOSwxMTQsNDQsMTI0LDMsODMsMCwxMjQsMCwxMDYsMiwxMjUsNCwxMjQsCisgICAgMSwxMDAsMCwxMDcsOCwxMTQsOTAsMTIxLDEwLDEyNCwwLDEwNiwzLDEyNSwxLDg3LAorICAgIDAsMTEwLDIwLDQsMCwxMTYsMSwxMDcsMTAsMTE0LDg4LDEsMCwxLDAsMSwKKyAgICAwLDg5LDAsMTEwLDIsODgsMCwxMjEsMTAsMTI0LDAsMTA2LDQsMTI1LDUsODcsCisgICAgMCwxMTAsMjQsNCwwLDExNiwxLDEwNywxMCwxMTQsMTI0LDEsMCwxLDAsMSwKKyAgICAwLDEwMCwwLDEyNSw1LDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxMDAsMCwxMDcsCisgICAgOCwxMTQsMTg0LDEyNCw1LDEwMCwwLDEwNyw4LDExNCwxODAsMTIxLDEwLDEyNCwxLDEwNiwKKyAgICA1LDEyNSwyLDg3LDAsMTEzLDE4NCw0LDAsMTE2LDEsMTA3LDEwLDExNCwxNzYsMSwKKyAgICAwLDEsMCwxLDAsMTAwLDAsMTI1LDIsODksMCwxMTMsMTg0LDg4LDAsMTEwLAorICAgIDQsMTI0LDUsMTI1LDIsMTIxLDEwLDEyNCwwLDEwNiw2LDEyNSw2LDg3LDAsMTEwLAorICAgIDI0LDQsMCwxMTYsMSwxMDcsMTAsMTE0LDIxOCwxLDAsMSwwLDEsMCwxMDAsCisgICAgMCwxMjUsNiw4OSwwLDExMCwyLDg4LDAsMTIxLDE0LDExNiw3LDEyNCwwLDEwNiwKKyAgICA4LDEzMSwxLDEyNSw3LDg3LDAsMTEwLDI2LDQsMCwxMTYsMSwxMDcsMTAsMTQ0LAorICAgIDEsMTE0LDQsMSwwLDEsMCwxLDAsMTAwLDAsMTI1LDcsODksMCwxMTAsCisgICAgMiw4OCwwLDExNiw5LDEyNCw0LDEyNCwxLDEyNCwyLDEwMCwxLDE0MSwzLDEyNSwKKyAgICAzLDEyNCw1LDEwMCwwLDEwNyw4LDE0NCwxLDExNCwzNCwxMDAsMiwxMTAsMiwxMDAsCisgICAgMywxMjQsMyw5NSwxMCwxMjQsNiwxMjQsMyw5NSwxMSwxMjQsNywxMjQsMyw5NSwKKyAgICAxMiwxMjQsMyw4MywwLDQxLDQsNzgsNDEsMSwxMTQsMTAzLDAsMCwwLDcwLAorICAgIDg0LDQxLDEzLDExNCw4OSwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDEsMCwKKyAgICAwLDAsMTE0LDg1LDAsMCwwLDExNCw5MiwwLDAsMCw5MCw3LDk1LDc5LAorICAgIDgyLDczLDcxLDczLDc4LDIxOCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSwKKyAgICA5NSwyMTgsNCwxMDgsMTA1LDExNSwxMTYsMjE4LDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgOTUsMTE0LDEwMiwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMTIsMCwwLDAsCisgICAgMTE0LDEwNiwwLDAsMCw0MSw4LDExNCw4MywwLDAsMCwxMTQsOTMsMCwwLAorICAgIDAsMTE0LDEwMywwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE1LDAsMCwwLAorICAgIDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDExMiwwLDAsMCwxMTQsCisgICAgMTA2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTkyLDEsMCwwLDExNSw3MiwwLDAsMCwwLAorICAgIDIsMiwxLDEwLDEsMTQsMSw2LDIsOCwxLDQsMiw2LDEsOCwKKyAgICAxLDIsMSwxMCwxLDE0LDIsNiwxLDIsMSwxMCwxLDE0LDEsMTAsCisgICAgMSw4LDEsOCwxLDIsMSwxMCwxLDE0LDEsMTIsMiw0LDEsMiwKKyAgICAxLDEwLDEsMTQsMSwxMCwxLDIsMSwxNCwxLDE2LDEsMTAsMiwxNCwKKyAgICAxLDIwLDEsNiwxLDYsMSwxMTQsMTI4LDAsMCwwLDcwLDQxLDEsMjE4LAorICAgIDgsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSw5OSwyLDAsMCwwLDEsMCwKKyAgICAwLDAsNSwwLDAsMCw1OSwwLDAsMCw2NywwLDAsMCwxMTUsMjEyLAorICAgIDEsMCwwLDEyNCwyLDExNSwyMCwxMTYsMCwxMjQsMSwxMDAsMSwxMDAsMCwxMzEsCisgICAgMywxMDAsMCwxMDcsOCwxMTQsNTQsMTIxLDEyLDEyNCwwLDEwNiwxLDEyNCwxLDk1LAorICAgIDIsODcsMCwxMTAsMjAsNCwwLDExNiwzLDEwNywxMCwxMTQsNTIsMSwwLDEsCisgICAgMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDExNSw3NCwxMTYsMCwxMjQsCisgICAgMSwxMDAsMiwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsMTY2LDEyNCwwLDEwNiwKKyAgICA0LDEyNSwzLDEyNCwzLDEwMCwwLDEwNyw4LDExNCwxMzQsMTI0LDAsMTA2LDUsMTAwLAorICAgIDAsMTA3LDksMTE0LDEzNCwxMTYsNiwxMDAsMCwxMDcsOCwxMTQsMTEwLDExNiw3LDEzMCwKKyAgICAxLDExNiw2LDEwNiw4LDEyNSw0LDEyNCw0LDEwNiw5LDEyNCw0LDEzMSwxLDEyNSwKKyAgICAzLDEyNCwwLDEwNiw1LDEyNCwzLDk1LDEwLDEyMSwxMCwxMjQsMywxMjQsMSw5NSwKKyAgICAxMSw4NywwLDExMCwyMCw0LDAsMTE2LDMsMTA3LDEwLDExNCwxNjQsMSwwLDEsCisgICAgMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDExNSwxODYsMTE2LDAsMTI0LAorICAgIDEsMTAwLDMsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTE0LDIyMCwxMjEsMTIsMTI0LAorICAgIDAsMTA2LDEyLDEyNCwxLDk1LDEzLDg3LDAsMTEwLDIwLDQsMCwxMTYsMywxMDcsCisgICAgMTAsMTE0LDIxOCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTIxLAorICAgIDEwLDEyNCwwLDEyNCwxLDk1LDE0LDg3LDAsMTEwLDIwLDQsMCwxMTYsMywxMDcsCisgICAgMTAsMTE0LDI1MCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTI0LAorICAgIDIsMTQ0LDEsMTE1LDIwLDExNiwwLDEyNCwxLDEwMCw0LDEwMCwwLDEzMSwzLDEwMCwKKyAgICAwLDEwNyw4LDE0NCwxLDExNCw2OCwxMjQsMCwxMDYsNSwxMDAsMCwxMDcsOSwxNDQsCisgICAgMSwxMTQsNjgsMTIxLDEyLDEyNCwwLDEwNiw1LDEyNCwxLDk1LDE1LDg3LDAsMTEwLAorICAgIDIyLDQsMCwxMTYsMywxMDcsMTAsMTQ0LDEsMTE0LDY2LDEsMCwxLDAsMSwKKyAgICAwLDg5LDAsMTEwLDIsODgsMCwxMjQsMCwxMDYsMTYsMTQ0LDEsMTE0LDIwOCwxMjQsCisgICAgMiwxNDQsMSwxMTUsMTAwLDExNiwwLDEyNCwxLDEwMCw1LDEwMCwwLDEzMSwzLDEwMCwKKyAgICAwLDEwNyw4LDE0NCwxLDExNCwxMzYsMTIxLDEyLDEyNCwwLDEwNiwxNywxMjQsMSw5NSwKKyAgICAxOCw4NywwLDExMCwyMiw0LDAsMTE2LDMsMTA3LDEwLDE0NCwxLDExNCwxMzQsMSwKKyAgICAwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDE0NCwxLDExNSwKKyAgICAxNjAsMTE2LDAsMTI0LDEsMTAwLDYsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTQ0LAorICAgIDEsMTE0LDIwOCwxMjQsMCwxMDYsMTksMTAwLDAsMTA3LDksMTQ0LDEsMTE0LDIwOCwxMjEsCisgICAgMTIsMTI0LDAsMTA2LDE5LDEyNCwxLDk1LDIwLDg3LDAsMTEwLDIyLDQsMCwxMTYsCisgICAgMywxMDcsMTAsMTQ0LDEsMTE0LDIwNiwxLDAsMSwwLDEsMCw4OSwwLDExMCwKKyAgICAyLDg4LDAsMTI0LDEsODMsMCw0MSw3LDc4LDExNCwxLDAsMCwwLDExNCwKKyAgICA4NSwwLDAsMCwyMTgsMTEsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LAorICAgIDk1LDExNCwxMjcsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwxMjUsMCwwLDAsCisgICAgNDEsMjEsMTE0LDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxLDAsMCwKKyAgICAwLDExNCw5MCwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEwNiwwLDAsMCwKKyAgICAxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMjE4LDE2LDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDIxOCw3LDk1LDk1LAorICAgIDExMCwxMDEsMTE5LDk1LDk1LDkwLDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDg1LDAsMCwKKyAgICAwLDExNCwxMTksMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsODksMCwwLDAsCisgICAgMTE0LDEyNywwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LAorICAgIDkyLDAsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDEyNSwwLDAsMCw0MSw1LAorICAgIDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsCisgICAgOTMsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTgsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsMTE0LDExNSwyMzcsMSwwLDAsCisgICAgMTE1LDkyLDAsMCwwLDAsNCwyMCwxLDIsMSwxMiwxLDE0LDEsNiwKKyAgICAyLDIwLDEsNiwxLDgsMiwxMCwxLDgsMSw0LDEsNiwyLDEwLAorICAgIDEsOCwxLDIsMSwxMCwxLDE0LDEsNiwyLDIwLDEsMiwxLDEyLAorICAgIDEsMTQsMSw2LDIsMiwxLDEwLDEsMTQsMSw2LDIsMjQsMSwxMiwKKyAgICAxLDIsMSwxMiwxLDE2LDEsNiwyLDgsMSwyNCwxLDIsMSwxMiwKKyAgICAxLDE2LDEsNiwyLDI0LDEsMTIsMSwyLDEsMTIsMSwxNiwxLDYsCisgICAgMSwxMTQsMTMzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwwLAorICAgIDEwMCwxLDEyNSwxLDExNiwwLDEyNCwwLDEwNiwxLDEwMCwyLDEzMSwyLDExNCwzMCwKKyAgICAxMjQsMCwxMDYsMSwxMDYsMiwxMjQsMCwxMzEsMSwxMjUsMSwxMTAsMjAsMTE2LDAsCisgICAgMTI0LDAsMTA2LDEsMTAwLDMsMTMxLDIsMTE0LDUwLDExNiwzLDEwMCw0LDEzMSwxLAorICAgIDEzMCwxLDEyNCwxLDEwMCwxLDEwNyw4LDExNCw2OCwxMTYsNCwxMjQsMCwxMDYsNSwKKyAgICAxMzEsMSwxMjUsMSwxMTYsNiwxMjQsMCwxMjQsMSwxMzEsMiwxLDAsMTI0LDEsCisgICAgODMsMCw0MSw1LDEyMiw0Myw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsMTE0LDExMSwxMTgsMTA1LDEwMCwxMDEsMTAwLDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDQ2LDc4LDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiw2NiwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDAsMTAxLDEwMiwKKyAgICAxMDUsMTEwLDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwKKyAgICA0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsMTA1LAorICAgIDExMCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQwLDQxLDQxLDcsMTE0LDQsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMzQsCisgICAgMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMTUsMCwKKyAgICAwLDAsMTE0LDEzMywwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwxMTQsODMsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDE2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMTUsMTEyLDEwMSw5OSw0MSwyLDAsMCwxMTUsMTgsMCwwLDAsMCwzLDQsCisgICAgMSwxMiwzLDE0LDEsMTIsMSw4LDIsOCwxLDEwLDEsMTAsMSwxMTQsCisgICAgMTM2LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDExMCwwLDAsMCwxMjQsMCwKKyAgICAxMDYsMCwxMDAsMSwxMDcsOCwxMTQsMTQsMTAwLDIsMTEwLDQsMTI0LDAsMTA2LDAsCisgICAgMTI1LDEsMTI0LDAsMTA2LDEsMTAwLDEsMTA3LDgsMTE0LDY4LDEyNCwwLDEwNiwyLAorICAgIDEwMCwxLDEwNyw4LDExNCw1MiwxMDAsMywxMDYsMywxMjQsMSwxMzEsMSw4MywwLAorICAgIDExMywxMDYsMTAwLDQsMTA2LDMsMTI0LDEsMTI0LDAsMTA2LDIsMTMxLDIsODMsMCwKKyAgICAxMTAsMzgsMTI0LDAsMTA2LDQsMTE0LDkwLDEwMCw1LDEwNiwzLDEyNCwxLDEyNCwwLAorICAgIDEwNiwxLDEzMSwyLDgzLDAsMTEwLDE2LDEwMCw2LDEwNiwzLDEyNCwwLDEwNiwwLAorICAgIDEyNCwwLDEwNiwxLDEzMSwyLDgzLDAsMTAwLDEsODMsMCw0MSw3LDEyMiwzOCwKKyAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTEyLDExNCwzMiwKKyAgICAxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCw4NywwLDAsMCwxMjIsMTMsNjAsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLAorICAgIDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwKKyAgICAxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LDYwLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsNDEsNjIsNDEsNSwKKyAgICAxMTQsMTUsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LAorICAgIDM4LDAsMCwwLDExNCwxMTMsMCwwLDAsNDEsMiwxMTQsODIsMCwwLDAsCisgICAgMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCw5MSwwLDAsMCw1OCwyLDAsMCwxMTUsMTYsMCwKKyAgICAwLDAsMCwzLDIwLDEsMTAsMSwxMCwxLDEyLDIsMTYsMiw2LDEsCisgICAgMTYsMiwxMTQsOTEsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDQsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDE4NiwwLDAsCisgICAgMCwxMjQsMCwxMDYsMCwxMjUsMiwxMTYsMSwxMDYsMiwxMzEsMCwxLDAsMTE2LAorICAgIDMsMTI0LDIsMTMxLDEsMTQzLDE0OCwxLDAsMTE2LDQsMTA2LDUsMTA2LDYsMTI0LAorICAgIDIsMTMxLDEsMTI0LDEsMTA3LDksMTE0LDYyLDEwMCwxLDEwNiw3LDEyNCwyLDEzMSwKKyAgICAxLDEyNSwzLDExNiw4LDEyNCwzLDEyNCwyLDEwMCwyLDE0MSwyLDEzMCwxLDEyNCwKKyAgICAwLDEwNiw5LDEwMCwzLDEwNyw4LDExNCwxMTQsMTI0LDAsMTA2LDEwLDEwMCwzLDEwNywKKyAgICA4LDExNCw5NiwxMTYsOCwxMDAsNCwxMjQsMCwxMDYsMCwxMDAsMiwxNDEsMiwxMzAsCisgICAgMSwxMTYsMTEsMTI0LDAsMTI0LDEsMTAwLDUsMTAwLDYsMTQxLDMsMSwwLDEyNCwKKyAgICAxLDgzLDAsMTE2LDExLDEyNCwwLDEyNCwxLDEwMCw1LDEwMCw2LDE0MSwzLDEsCisgICAgMCwxMTYsMTIsMTI0LDAsMTA2LDksMTAwLDcsMTMxLDIsMTE1LDE1NCwxMjQsMCwxMDYsCisgICAgOSwxMDYsMTMsMTI0LDIsMTMxLDEsMSwwLDExMCwxMiwxMjQsMCwxMDYsOSwxMDYsCisgICAgMTQsMTI0LDEsMTMxLDEsMSwwLDg3LDAsMTAwLDMsODEsMCw4MiwwLDg4LAorICAgIDAsMTE2LDQsMTA2LDUsMTI0LDIsMjUsMCw4MywwLDQxLDgsMTIyLDcwLDY5LAorICAgIDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksCisgICAgMTE1LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLAorICAgIDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDQxLDEsMTE0LDE1LDAsMCwwLDc4LDEyMiwxNCwxMDksCisgICAgMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw4NCw0MSwxLAorICAgIDExNCwxMjksMCwwLDAsMTE0LDEzNSwwLDAsMCw0MSwxNSwxMTQsMTUsMCwwLAorICAgIDAsMTE0LDQ2LDAsMCwwLDIxOCwxMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LAorICAgIDEwOCwxMTEsOTksMTA3LDExNCw0MiwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LAorICAgIDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDcwLDAsCisgICAgMCwwLDExNCw5MywwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwxMzMsMCwwLAogICAgIDAsMTE0LDQsMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxMzksMCwwLDAsNDEsNCwxMTQsODgsMCwwLDAsMTE0LAotICAgIDg5LDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwKLSAgICAwLDAsOTMsMiwwLDAsMTE1LDMyLDAsMCwwLDAsMiw5LDEsMTAsCi0gICAgMSwxMywxLDI0LDEsMTUsMSwxOCwxLDE1LDEsMTUsMSwyMSwyLDE5LAotICAgIDEsNCwxLDE5LDEsMTgsNCwxOSwyLDIzLDEsMTE0LDg2LDAsMCwwLAorICAgIDExNywxMDgsMTAxLDExNCwxMzUsMCwwLDAsNDEsNCwxMTQsODIsMCwwLDAsMTE0LAorICAgIDgzLDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODAsMCwKKyAgICAwLDAsNzUsMiwwLDAsMTE1LDMyLDAsMCwwLDAsMiw2LDEsOCwKKyAgICAxLDEwLDEsMTYsMSwxMCwxLDEyLDEsMTAsMSwxMCwxLDE0LDIsMTQsCisgICAgMSw0LDEsMTQsMSwxMiw0LDE0LDIsMjIsMSwxMTQsODAsMCwwLDAsCiAgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMjcsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDMsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMSwxMTYsMywwLAotICAgIDEwNiw0LDAsMTI0LDAsMCwxMDYsMiwwLDI1LDEyNSwxLDAsMTE2LDUsMCwKLSAgICAxMjQsMSwwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAotICAgIDgsMCwxMTQsOTYsMCwxMjEsMTYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsCi0gICAgMCw5NSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwKLSAgICA5NSwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LDUsMCwxMjQsMSwwLAotICAgIDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCi0gICAgMTk3LDAsMTIxLDU2LDAsMTI0LDEsMCwxMDYsOCwwLDEyNCwxLDAsOTUsOSwKLSAgICAwLDExNiwxMCwwLDEyNCwxLDAsMTAwLDMsMCwxMzEsMiwwLDExNSwxNzUsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTA2LDExLDAsMTAwLDQsMCwxMzEsMSwwLDEwMCwKLSAgICA1LDAsMjUsMTI0LDEsMCw5NSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywKLSAgICAwLDEwNywxMCwwLDExNCwxOTYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiwKLSAgICA1LDAsMTI0LDEsMCwxMDAsNiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDI1NSwwLDEyMSwxMywwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICA5NSwxMiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMjU0LAotICAgIDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDgzLDQxLDcsNzgsCi0gICAgMTE0LDkxLDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsCi0gICAgMTIxLDAsMCwwLDExNCwzMywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsMTMsCi0gICAgMTE0LDk5LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwKLSAgICAxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDkxLAotICAgIDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTM0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCwxMjIsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDQxLDIsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsMTA4LAotICAgIDExMSw5NywxMDAsOTUsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDk1LDk5LDExMSwxMDksCi0gICAgMTEyLDk3LDExNiwxMDUsOTgsMTA4LDEwMSwxMTgsMiwwLDAsMTE1LDQwLDAsMCwwLAotICAgIDAsNCwxOSwyLDE2LDEsMjQsMSwzLDEsMTYsMSwxMywxLDUsMSwKLSAgICAyNCwxLDMsNCwxMiwxLDE1LDEsMjksMSwxMywxLDUsMSwyNCwxLAotICAgIDMsMSwxMywxLDEzLDEsNSwxLDExNCwxNDgsMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDE1OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwKLSAgICAxMDcsOSwwLDExNCw0MywwLDExNiwxLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwKLSAgICAxLDAsMTMxLDIsMCwxMTUsNDMsMCwxMTYsMiwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCw4MywxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLDExNiw0LAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDE0Myw3NSwwLDEsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTIyLDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEwMCwwLDAsMTA3LDgsMCwxMTQsMTM4LDAsMTE2LDYsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTI0LDAsMCwxMDYsNywwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMTYsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgMSw4NywxMDAsMCwwLDgxLDgyLDg4LDExNiw5LDAsMTA2LDEwLDAsMTI0LDAsCi0gICAgMCwxMDYsNywwLDI1LDgzLDQxLDQsNzgsMTE0LDEzOSwwLDAsMCwxMjIsMTQsCi0gICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDE1LAotICAgIDAsMCwwLDQxLDExLDExNCw5OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgMTQ4LDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTEwLAotICAgIDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzOSwwLAotICAgIDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDQxLDIsMTE0LDg4LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDE0NywyLDAsMCwxMTUsMjAsMCwwLDAsCi0gICAgMCwyLDE1LDIsMTgsMSwxMCwyLDEyLDEsMTMsMSwxNSwxLDE1LDEsCi0gICAgMjQsMywyMyw1LDExNCwxNDksMCwwLDAsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsNDcsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMTYsMiwwLAotICAgIDEyNCwwLDAsMTA2LDMsMCwxMzEsMSwwLDE0MywxNSwwLDEsMTE2LDQsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsODMsODcsMTAwLDEsMCw4MSw4Miw4OCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDE5MSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDExMCwKLSAgICAxMDEsMTE5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICA0NCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LAotICAgIDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA3MywxMDIsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywKLSAgICAxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMjAsMTA1LDExNSwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAzLDEwMSwxMTYsMTE1LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDEwOCwxMTEsOTgsOTgsMTAxLDExNCwxMDEsMTAwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDc4LDQxLDUsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwKLSAgICAwLDAsMTE0LDU0LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTQ5LDAsMCwKLSAgICAwLDQxLDEsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCw4NywwLDAsMCwxNzAsMiwwLDAsCi0gICAgMTE1LDYsMCwwLDAsMCw5LDEwLDEsMTYsMSwxMTQsODcsMCwwLDAsCi0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjA1LDAsMCwwLDEwMSwwLDAsOTAsMSwwLAotICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLAotICAgIDIsMCwxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsCi0gICAgMCwxMDAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsCi0gICAgMTMxLDEsMCw5MCw3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLAotICAgIDgsMCwxMzIsMSwwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksCi0gICAgMCwxMDAsMTAsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw2LDAsCi0gICAgMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLAotICAgIDYsMCwxMDEsMTEsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCw5MCwxMiwwLDEwMSw2LDAsMTAxLDExLDAsMTAwLDE1LDAsCi0gICAgMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTMsMCwxMDEsCi0gICAgNiwwLDEwMSwxMSwwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDkwLDE0LDAsMTAxLDYsMCwxMDEsMTUsMCwxMzEsMSwwLAotICAgIDkwLDE2LDAsMTAwLDQsMCw4Myw0MSwxOSwyMTgsMTUsNjYsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwxNDQsNzcsMTAxLDExNiw5NywKLSAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwKLSAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCi0gICAgMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwKLSAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsCi0gICAgMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsCi0gICAgMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjQsNjAsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEsCi0gICAgMCwwLDAsNDEsMSwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDkyLDAsMCwwLDE5NSwyLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLAotICAgIDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE2LDAsMTAwLDAsMCwKLSAgICA4MywxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCw1MCwwLAotICAgIDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsCi0gICAgMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsCi0gICAgMCwwLDAsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsMywxMTQsCi0gICAgNTcsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICAxMTQsODUsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCw3OCwwLDAsCi0gICAgMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwyMDQsMiwwLDAsMTE1LDEwLDAsCi0gICAgMCwwLDAsMiwxMiwxLDQsMSwxNSwxLDE5LDIsMTIyLDI1LDY2LDExNywKLSAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDEsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLAotICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDM3LDAsMTI0LAotICAgIDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTc1LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAorICAgIDAsNjcsMCwwLDAsMTE1LDIwNiwwLDAsMCwxMjQsMCwxMDYsMCwxMDYsMSwKKyAgICAxMjQsMCwxMDYsMiwxMzEsMSwxLDAsMTE2LDMsMTA2LDQsMTI0LDAsMTA2LDIsCisgICAgMjUsMCwxMjUsMSwxMTYsNSwxMjQsMSwxMDAsMSwxMDAsMCwxMzEsMywxMDAsMCwKKyAgICAxMDcsOCwxMTQsNzYsMTIxLDEyLDEyNCwwLDEwNiwwLDEyNCwxLDk1LDYsODcsMCwKKyAgICAxMTAsMjAsNCwwLDExNiw3LDEwNywxMCwxMTQsNzQsMSwwLDEsMCwxLDAsCisgICAgODksMCwxMTAsMiw4OCwwLDExNiw1LDEyNCwxLDEwMCwyLDEwMCwwLDEzMSwzLAorICAgIDEwMCwwLDEwNyw4LDExNCwxNTQsMTIxLDQwLDEyNCwxLDEwNiw4LDEyNCwxLDk1LDksCisgICAgMTE2LDEwLDEyNCwxLDEwMCwzLDEzMSwyLDExNSwxMzAsMTI0LDAsMTA2LDIsMTA2LDExLAorICAgIDEwMCw0LDEzMSwxLDEwMCw1LDI1LDAsMTI0LDEsOTUsOSw4NywwLDExMCwyMCwKKyAgICA0LDAsMTE2LDcsMTA3LDEwLDExNCwxNTIsMSwwLDEsMCwxLDAsODksMCwKKyAgICAxMTAsMiw4OCwwLDExNiw1LDEyNCwxLDEwMCw2LDEwMCwwLDEzMSwzLDEwMCwwLAorICAgIDEwNyw4LDExNCwyMDIsMTIxLDEwLDEyNCwwLDEyNCwxLDk1LDEyLDg3LDAsMTEwLDIwLAorICAgIDQsMCwxMTYsNywxMDcsMTAsMTE0LDIwMCwxLDAsMSwwLDEsMCw4OSwwLAorICAgIDExMCwyLDg4LDAsMTI0LDEsODMsMCw0MSw3LDc4LDExNCw4NSwwLDAsMCwKKyAgICAxMTQsMTMwLDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsCisgICAgMTksMCwwLDAsMTE0LDg5LDAsMCwwLDQxLDEzLDExNCw5MywwLDAsMCwKKyAgICAxMTQsMTM4LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAorICAgIDc5LDAsMCwwLDExNCw2LDAsMCwwLDExNCw4NSwwLDAsMCwxMTQsOTAsCisgICAgMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsMTE4LDAsMCwwLDExNCw4OSwwLDAsMCw0MSwyLDExNCw4MiwKKyAgICAwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDk4LAorICAgIDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LAorICAgIDEwOCwxMDEsMTAwLDIsMCwwLDExNSw0MCwwLDAsMCwwLDQsMTQsMiwxMiwKKyAgICAxLDE2LDEsMiwxLDEyLDEsMTQsMSw2LDEsMTYsMSwyLDQsOCwKKyAgICAxLDEwLDEsMjIsMSwxNCwxLDYsMSwxNiwxLDIsMSwxMCwxLDE0LAorICAgIDEsNiwxLDExNCwxNDAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDExOCwwLAorICAgIDAsMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsOSwxMTQsMzAsMTE2LDEsMTI0LDAsCisgICAgMTA2LDAsMTAwLDEsMTMxLDIsMTE1LDMwLDExNiwyLDEyNCwwLDEzMSwxLDgzLDAsCisgICAgMTE2LDMsMTI0LDAsMTMxLDEsMTI1LDEsMTE2LDQsMTI0LDEsMTMxLDEsMTQzLDU0LAorICAgIDEsMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsOCwxMTQsODQsMTI0LDAsMTA2LDUsCisgICAgMTAwLDAsMTA3LDgsMTE0LDk2LDExNiw2LDEwMCwyLDEyNCwwLDEwNiw3LDEwMCwzLAorICAgIDE0MSwyLDEzMCwxLDExMCwxMiwxMjQsMCwxMDYsMCwxMDYsOCwxMjQsMSwxMzEsMSwKKyAgICAxLDAsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCwxMTYsOSwxMDYsMTAsCisgICAgMTI0LDAsMTA2LDcsMjUsMCw4MywwLDQxLDQsNzgsMTE0LDEzNSwwLDAsMCwKKyAgICAxMjIsMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDEsMSwxMTQsMTUsMCwwLDAsNDEsMTEsMTE0LDkzLDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LDEzNiwwLDAsMCwxMTQsOTYsMCwKKyAgICAwLDAsMTE0LDEwNiwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDE1LDAsMCwKKyAgICAwLDExNCwxMzUsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwKKyAgICA0MSwyLDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxMjksMiwwLDAsMTE1LAorICAgIDIwLDAsMCwwLDAsMiwxMCwyLDEyLDEsOCwyLDgsMSwxMCwxLAorICAgIDEwLDEsMTAsMSwxNiwzLDIyLDUsMTE0LDE0MSwwLDAsMCw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMSwwLDAsMCw5LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwzOCwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwxLDAsMTE2LAorICAgIDIsMTI0LDAsMTA2LDMsMTMxLDEsMTQzLDEwLDEsMCwxMTYsNCwxMjQsMCwxMzEsCisgICAgMSw4MywwLDgxLDAsODIsMCw4OCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsCisgICAgMTkxLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ0LDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LAorICAgIDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwKKyAgICAzMiw5NywxMDAsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiw5NywzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwKKyAgICAxMjEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgNDQsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLDExNiwxMTUsMTAsMzIsMzIsMzIsMzIsCisgICAgOTksMTA4LDExMSw5OCw5OCwxMDEsMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgNzgsNDEsNSwxMTQsNDYsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsNDIsMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxNDEsMCwwLDAsNDEsMSwxMTQsODIsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMTE0LDgxLDAsMCwwLDE1MiwyLDAsMCwxMTUsNiwwLDAsMCwKKyAgICAwLDksOCwxLDEyLDEsMTE0LDgxLDAsMCwwLDk5LDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsCisgICAgMTE1LDEzNiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsCisgICAgMywxMDEsNCwxMDAsMiwxMDAsMywxMzIsMCwxMzEsMSw5MCw1LDEwMSw2LDEwMCwKKyAgICAxOSwxMDAsNSwxMDAsNiwxMzIsMSwxMzEsMSw5MCw3LDEwMSw2LDEwMCwyMCwxMDAsCisgICAgNywxMDAsOCwxMzIsMSwxMzEsMSw5MCw4LDEwMSw2LDEwMCw5LDEwMCwxMCwxMzIsCisgICAgMCwxMzEsMSw5MCw5LDEwMSw2LDEwMCwxMSwxMDAsMTIsMTMyLDAsMTMxLDEsOTAsCisgICAgMTAsMTAxLDYsMTAxLDExLDEwMCwxMywxMDAsMTQsMTMyLDAsMTMxLDEsMTMxLDEsOTAsCisgICAgMTIsMTAxLDYsMTAxLDExLDEwMCwxNSwxMDAsMTYsMTMyLDAsMTMxLDEsMTMxLDEsOTAsCisgICAgMTMsMTAxLDYsMTAxLDExLDEwMCwxNywxMDAsMTgsMTMyLDAsMTMxLDEsMTMxLDEsOTAsCisgICAgMTQsMTAxLDYsMTAxLDE1LDEzMSwxLDkwLDE2LDEwMCw0LDgzLDAsNDEsMjEsMjE4LAorICAgIDE1LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwKKyAgICAxMjIsMTQ0LDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwKKyAgICAxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwKKyAgICAxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LAorICAgIDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsCisgICAgOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsCisgICAgMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLAorICAgIDEyNCwwLDEwNiwxLDEzMSwxLDgzLDAsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLAogICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwxMTgsCi0gICAgMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLAotICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiwKLSAgICA5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsMTA1LAotICAgIDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKLSAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCw5OSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLAotICAgIDAsMTE0LDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDg4LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICAxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjEzLDIsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsOSwxOCwxLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLAotICAgIDEyNCwxLDAsMTA2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsCi0gICAgNTEsMCwxMTYsMywwLDEwMCwxLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwwLAotICAgIDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTA2LDAsMCwxMzEsMSwxLAotICAgIDEzMCwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDMsMTIyLDI0LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiwKLSAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsCi0gICAgMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsCi0gICAgMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwKLSAgICA3NiwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw2NSwKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsMTAxLAotICAgIDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKLSAgICAwLDAsMCwxMTQsMTM4LDAsMCwwLDIyNSwyLDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDMsMTgsMSwyMSwxLDEyLDEsMTIyLDI5LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwKLSAgICAxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwKLSAgICAwLDAsMTE2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwKLSAgICAwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiwyMiw2OSwxMjAsMTAxLDk5LDMyLDk3LAotICAgIDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDc4LDQxLDMsMTE0LDY1LDAsMCwwLDExNCw1NywwLDAsMCw5MCwxMiwxMDEsCi0gICAgMTIwLDEwMSw5OSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MSwyLDExNCwxOSwwLAotICAgIDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDEzOSwwLDAsMCwyMzMsMiwwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwzLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLAotICAgIDgzLDQxLDIsMTIyLDU3LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsCi0gICAgMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLAotICAgIDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LAotICAgIDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMjM4LDIsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1NiwKLSAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsCi0gICAgMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDI0NCwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsCi0gICAgMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Miw4MiwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCi0gICAgMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKLSAgICAxMTUsNDYsNzAsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDEwOSwwLDAsMCwyNTAsMiwwLDAsMTE1LDIsMCwwLAotICAgIDAsMCw0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsCi0gICAgMTcsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMjE4LDEyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwKLSAgICAxMDQsMTExLDEwMCwxMTQsOTIsMCwwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwKLSAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsCi0gICAgMTM4LDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDgxLDAsMCwwLDExNCwxNTYsCi0gICAgMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCw5MCwwLAotICAgIDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUwLDAsMCwwLAotICAgIDE4NiwyLDAsMCwxMTUsMzAsMCwwLDAsMTIsNyw2LDIsMTgsOSwzLAotICAgIDEsMjEsOCwzLDEsMTgsMTEsMTgsOCwxOCw1LDMsMSwyMSw1LDMsCi0gICAgMSwyMSw1LDMsMSwyMSw1LDExNCwxNTAsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsMjExLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsMywKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsNCwwLAotICAgIDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsMTMxLDEsMCw5MCwKLSAgICA3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMSwKLSAgICAwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw0LDAsMTAwLDExLDAsMTAwLAotICAgIDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDYsMCwxMDAsMTMsCi0gICAgMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsNiwwLAotICAgIDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDkwLDEzLDAsMTAxLDYsMCwxMDEsMTIsMCwxMDAsMTcsMCwxMDAsMTgsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsCi0gICAgMTAxLDEyLDAsMTAwLDE5LDAsMTAwLDIwLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKLSAgICAxLDAsOTAsMTUsMCwxMDAsNCwwLDgzLDQxLDIxLDIxOCwxNCw3MCwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsCi0gICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKLSAgICAxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LAotICAgIDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwKLSAgICAxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwKLSAgICAxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLAotICAgIDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICAxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAotICAgIDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKLSAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwKLSAgICAxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDIyLDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwKLSAgICAxMDEsMTEwLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxLDAsMCwwLAotICAgIDQxLDEsMjE4LDEsMTA5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDExNCw5MiwwLDAsMCwxMiwzLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKLSAgICA3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDExNCwzNCwwLDExNiwyLDAsMTI0LDEsMCwKLSAgICAxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMiwxLDgzLDEwMCwwLDAsCi0gICAgODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsMCwwLDAsOTAsNiwxMDIsCi0gICAgMTE0LDExMSwxMjIsMTAxLDExMCw0MSwzLDExNCw1NywwLDAsMCwxMTQsODIsMCwwLAotICAgIDAsMTE0LDg1LDAsMCwwLDQxLDQsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwKLSAgICAwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTQsMCwwLDAsCi0gICAgMjEsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE1LDEsMTksMiwxMjIsCi0gICAgMjQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIzLAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LAotICAgIDE5LDAsMTI0LDAsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDkzLDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCi0gICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAotICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLAotICAgIDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCw1NywKLSAgICAwLDAsMCwxMTQsODIsMCwwLDAsNDEsMywxMTQsMTUxLDAsMCwwLDExNCwKLSAgICA3OCwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTUsMCwwLDAsMjgsMywwLAotICAgIDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLAotICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwKLSAgICAxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LAotICAgIDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDg4LDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDExNCwxMzgsMCwwLDAsMzcsMywwLDAsMTE1LDAsMCwwLDAsMTIyLAotICAgIDI4LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAotICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsCi0gICAgMCwwLDAsMCwwLDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw5MiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwKLSAgICAxMjUsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTE1LAotICAgIDU0LDAsMTE2LDQsMCwxMDAsMSwwLDEwNiw1LDAsMTI0LDEsMCwxMzEsMSwKLSAgICAwLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTE2LDYsMCwKLSAgICAxMTYsMiwwLDEwNiw3LDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwyLDAsMTE2LAotICAgIDgsMCwxMjQsMiwwLDEyNCwwLDAsMTA2LDksMCwxMzEsMiwwLDEsMTAwLAotICAgIDAsMCw4Myw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLAotICAgIDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxNSwwLDAsMCw0MSwxMCwxMTQsOTUsMCwwLDAsMTE0LAotICAgIDE1LDAsMCwwLDExNCw1NywwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDc3LAotICAgIDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNjUsMCwwLDAsMjE4LDE3LDEwMywKLSAgICAxMDEsMTE2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAyMTgsNCwxMDEsMTIwLDEwMSw5OSwxMTQsNywwLDAsMCw0MSwzLDExNCw4OSwwLAotICAgIDAsMCwxMTQsMTUsMCwwLDAsMjE4LDQsOTksMTExLDEwMCwxMDEsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEzOSwwLDAsCi0gICAgMCw0MSwzLDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEyLDEsMTUsMSwKLSAgICAxOCwxLDksMSwxOCwxLDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEyNCwKLSAgICAwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDEsMTIyLDk1LDc2LDExMSw5NywKLSAgICAxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLAorICAgIDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwKKyAgICAzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LAorICAgIDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsCisgICAgMjQsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsMzgsMCwwLDAsCisgICAgMTE0LDEsMCwwLDAsNDEsMSwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg2LDAsMCwwLAorICAgIDE3NywyLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LDY2LDExNywxMDUsCisgICAgMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsCisgICAgMCwwLDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNDYsCisgICAgMCwwLDAsMTI0LDIsMTAwLDAsMTA3LDksMTE0LDEyLDEwMCwwLDgzLDAsMTE2LAorICAgIDAsMTA2LDEsMTI0LDEsMTMxLDEsMTE0LDM4LDExNiwyLDEyNCwxLDEyNCwwLDEwMCwKKyAgICAxLDEwMCwyLDE0MSwzLDgzLDAsMTEwLDQsMTAwLDAsODMsMCwxMDAsMCw4MywKKyAgICAwLDQxLDMsNzgsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsMSwKKyAgICAxMTQsMTAzLDAsMCwwLDQxLDMsMTE0LDQ2LDAsMCwwLDkwLDEwLDEwNSwxMTUsCisgICAgOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE0LDc4LDAsMCwwLDQxLDQsMjE4LAorICAgIDMsOTksMTA4LDExNSwxMTQsNzEsMCwwLDAsMjE4LDQsMTEyLDk3LDExNiwxMDQsMjE4LAorICAgIDYsMTE2LDk3LDExNCwxMDMsMTAxLDExNiwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwyMTgsOSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsCisgICAgOTksMTg2LDIsMCwwLDExNSwxMCwwLDAsMCwwLDIsOCwxLDQsMSwKKyAgICAxMCwxLDE2LDIsMTIyLDI1LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksCisgICAgMywwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMzAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LAorICAgIDIsMTMxLDIsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDksMTE0LDI2LDEyNCwzLDEwNiwKKyAgICAxLDgzLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwxNzUsNzAsMTA1LDExMCwxMDAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLAorICAgIDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDEwNSwxMTUsMzIsMTAxLDExOCwxMDEsMTE0LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsCisgICAgMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLDk3LDMyLDEwMiw5NywxMDUsMTA4LDExNywxMTQsCiAgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAogICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKLSAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDkwLAotICAgIDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKLSAgICAwLDAsMCw1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LAotICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgODMsNDEsMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDYsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LDE2MiwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTYsMCwwLDAsNTksMywKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCi0gICAgMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsNTQsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwKLSAgICA5NywxMTUsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU3LDAsMCwwLAotICAgIDY1LDMsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQxLDEsMTIyLAotICAgIDQ2LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MSwKLSAgICAyLDExNCw1NywwLDAsMCw5MCwxNywxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDExNCwxNTEsMCwwLDAsCi0gICAgMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDExNCwxMDksMCwwLDAsNzEsMywwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwKLSAgICAxNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsCi0gICAgMTU5LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMTM4LAotICAgIDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsODQsMCwKLSAgICAwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxMDksMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDExNCwxNjAsMCwwLDAsMywzLDAsMCwxMTUsMzAsCi0gICAgMCwwLDAsMTIsNyw2LDIsMTgsOSwzLDEsMjEsNiwzLDEsMTgsCi0gICAgOCwxOCw0LDE4LDksMTgsOSwzLDEsMjEsNSwzLDEsMjEsNSwzLAotICAgIDEsMTE0LDE2MCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw0NiwwLDAsMCwKLSAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAotICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCi0gICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsODMsNDEsNywKLSAgICAyMTgsMTgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsCi0gICAgMTE2LDEwMSwxMjAsMTE2LDEyMiwzNiw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwzMiwxMDksOTcsCi0gICAgMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLAotICAgIDIsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsNDEsMSwxMTQsMTksMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDIzLDAsMCwwLDg0LDMsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwKLSAgICAxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksCi0gICAgNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAwLDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDYwLDgyLDEwMSwxMDgsMTAxLDk3LAotICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSwKLSAgICA5OSwxMDcsMzIsMTE0LDEwMSwxMDMsOTcsMTE0LDEwMCwxMDgsMTAxLDExNSwxMTUsMzIsMTExLDEwMiwKLSAgICAzMiw5NywxMTAsMTIxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTAxLDEyMCw5OSwxMDEsCi0gICAgMTEyLDExNiwxMDUsMTExLDExMCwxMTUsNDYsNzgsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LAotICAgIDU4LDAsMCwwLDQxLDQsMTE0LDE5LDAsMCwwLDkwLDgsMTAxLDEyMCw5OSwKLSAgICA5NSwxMTYsMTIxLDExMiwxMDEsOTAsOSwxMDEsMTIwLDk5LDk1LDExOCw5NywxMDgsMTE3LDEwMSwKLSAgICA5MCwxMywxMDEsMTIwLDk5LDk1LDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsCi0gICAgMCwwLDAsODgsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyNywKLSAgICA5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLAotICAgIDEyMCwxMTYsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsCi0gICAgMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwKLSAgICAwLDAsMTE0LDIzLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCi0gICAgMTE0LDE2NSwwLDAsMCw4MCwzLDAsMCwxMTUsNiwwLDAsMCwxMiwyLAotICAgIDYsMiwxMiw0LDExNCwxNjUsMCwwLDAsOTksMywwLDAsMCwwLDAsCi0gICAgMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODgsCi0gICAgMCwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwMCwxLDAsMTI0LDIsMCwxMDAsCi0gICAgMiwwLDI0LDEzMSwyLDAsMTI1LDMsMCwxMTYsMSwwLDEyNCwzLDAsMTMxLAotICAgIDEsMCwxMjQsMiwwLDEwNywwLDAsMTE0LDUyLDAsMTE2LDIsMCwxMDAsMywKLSAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMywwLDEwMCw0LDAsMjUsMTI1LDQsCi0gICAgMCwxMjQsMCwwLDExNCw4NCwwLDEwMCw1LDAsMTA2LDMsMCwxMjQsNCwwLAotICAgIDEyNCwwLDAsMTMxLDIsMCw4MywxMjQsNCwwLDgzLDQxLDYsMTIyLDUwLDgyLAotICAgIDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLAotICAgIDMyLDk3LDExMCwzMiw5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSwKLSAgICA0NiwxMTQsMTIxLDAsMCwwLDExNCw0NSwwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLAotICAgIDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsCi0gICAgMzMsMCwwLDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDQxLDQsMjE4LDYsMTE0LAotICAgIDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDMsMTA4LDEwMSwxMTAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsCi0gICAgMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNTAsMCwwLDAsNDEsNSwxMTQsMTUsMCwKLSAgICAwLDAsMjE4LDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDIxOCw1LDEwOCwxMDEsMTE4LAotICAgIDEwMSwxMDgsOTAsNCw5OCwxMDUsMTE2LDExNSw5MCw0LDk4LDk3LDExNSwxMDEsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LAotICAgIDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw5MywzLDAsMCwKLSAgICAxMTUsMTAsMCwwLDAsMCwyLDIyLDEsMTgsMSwxMiwxLDEwLDEsMTE0LAotICAgIDE3MSwwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0NywwLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwKLSAgICAxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsMCwwLDgzLAotICAgIDExNiwxLDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSw3OCwKLSAgICA0MSwyLDExNCwxNTUsMCwwLDAsMTE0LDg1LDAsMCwwLDQxLDQsMjE4LDYsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDE1LDAsMCwwLDExNCwxNTIsMCwwLDAsCi0gICAgMTE0LDk5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksCi0gICAgOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDEwMiwzLDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDMsMTgsMSwxMiwxLDQsMSwxMTQsMTczLDAsMCwwLDk5LDMsMCwKLSAgICAwLDAsMCwwLDAsMCw5LDAsMCwwLDI3LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw0MiwxLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOSwwLDExNCw0MSwwLDExNiwwLDAsMTA2LDEsMCwxMiwxMTQsNDEsMCwKLSAgICAxMTYsMiwwLDEwNiwzLDAsMTAwLDIsMCwxMTYsNCwwLDEzMSwyLDAsMSwKLSAgICAxMjQsMCwwLDExNiwwLDAsMTA2LDUsMCwxMDcsNiwwLDEyNSwzLDAsMTIwLAotICAgIDIzNSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5MywyMjAsMCwxMjUsNCwwLDExNiwKLSAgICA2LDAsMTMxLDAsMCwxNDMsOTAsMCwxLDEyMSwxMywwLDEyNCw0LDAsMTA2LAotICAgIDcsMCwxMjUsNSwwLDg3LDExMCw1MSwwLDQsMTE2LDgsMCwxMDcsMTAsMCwKLSAgICAxMTQsMTQ4LDAsMSwxLDEsMTE2LDksMCwxMjQsNCwwLDEyNCwwLDAsMTI0LAotICAgIDEsMCwxMzEsMywwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMSwwLDEwNyw4LAotICAgIDAsMTE0LDE0NCwwLDExOSw2NiwwLDg5LDExMCwxOSwwLDg4LDEyNCw1LDAsMTI0LAotICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsNiwwLDg3LDEwMCwKLSAgICAxLDAsODEsODIsODgsMTI0LDYsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDY2LAotICAgIDAsMTI0LDMsMCwxMiwxMTQsMjYsMSwxMjQsMCwwLDExNiwwLDAsMTA2LDUsCi0gICAgMCwxMDcsNiwwLDExNCwyNiwxLDExNiwwLDAsMTA2LDUsMCwxMjQsMCwwLAotICAgIDI1LDEyNSw3LDAsMTIxLDEzLDAsMTI0LDcsMCwxMDYsMTAsMCwxMjUsOCwwLAotICAgIDg3LDExMCwyMiwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMiwxLDEsMSwKLSAgICAxLDEyNCw2LDAsODMsODksMTEzLDMwLDEsODgsMTI0LDgsMCwxMDAsMSwwLAotICAgIDEwNyw4LDAsMTE0LDE5LDEsMTI0LDYsMCw4MywxMjQsOCwwLDgzLDExMyw2NiwKLSAgICAwLDEyNCw2LDAsODMsMTEzLDY2LDAsODcsMTAwLDEsMCw4MywxMDAsMSwwLAotICAgIDgzLDQxLDMsMTIyLDIzLDcwLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDc4LDEyMiwyMiwxMTUsCi0gICAgMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLAotICAgIDEwMSwxMDksMTEyLDExNiwxMjEsNDEsMTEsMTE0LDE0LDAsMCwwLDIxOCw5LDEwOSwxMDEsCi0gICAgMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNDEsMCwwLDAsMTE0LDE0MiwwLDAsCi0gICAgMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAotICAgIDExNCwyMSwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LAotICAgIDk2LDAsMCwwLDExNCwxNzMsMCwwLDAsMTE0LDk1LDAsMCwwLDQxLDksCi0gICAgMTE0LDE1LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1MywwLDAsMCw5MCwKLSAgICA5LDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTQsMTcyLDAsMCwwLDExNCwKLSAgICAxNTQsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsOTUsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKLSAgICAwLDAsMjE4LDEwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxMTEsMywKLSAgICAwLDAsMTE1LDQ4LDAsMCwwLDAsMiwyNSwxLDE2LDQsMTUsMSwxNiwKLSAgICAxLDEwLDEsMywxLDEzLDEsMTMsMSwxOCwxLDEyLDEsOCwyLDI1LAotICAgIDEsMTIsMiwyMiwxLDEzLDEsMywxLDEzLDEsMTMsNCw5LDIsMTIsCi0gICAgMSw0LDIsNywyLDgsMiwxMTQsMTc2LDAsMCwwLDk5LDMsMCwwLAotICAgIDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDE4NSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMzEsCi0gICAgMiwwLDExNSw0MiwwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDExNiw0LAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLAotICAgIDEyNCwyLDAsMTAwLDIsMCwxMDcsMCwwLDExNCw2NiwwLDExNiw1LDAsMTAwLAotICAgIDMsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDIsMCwxMDAsMiwwLDEwNyw0LAotICAgIDAsMTE0LDE1MCwwLDExNiwwLDAsMTI0LDEsMCwxMTYsMSwwLDEzMSwyLDAsCi0gICAgMTE1LDEwOCwwLDExNiwyLDAsMTAwLDQsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLAotICAgIDQyLDAsMTI0LDEsMCwxMTYsNiwwLDEwNiw3LDAsMTA3LDcsMCwxMTQsMTUwLAotICAgIDAsMTAwLDUsMCwxMjUsMywwLDExNiw4LDAsMTI0LDMsMCwxMDYsMywwLAotICAgIDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDAsMCwxMiwKLSAgICAxMTQsMTgxLDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDE4MSwwLDExNiwKLSAgICA1LDAsMTAwLDYsMCwxMzEsMSwwLDEzMCwxLDAsMTAwLDcsMCw4Myw0MSwKLSAgICA4LDEyMiwyOCw4NiwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwzNCwxMTUsOTcsMTEwLDEwMSwzNCw0NiwxMjIsCi0gICAgMzEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTA5LDExNywxMTUsCi0gICAgMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTE2LDExNCw0NCwzMiwxMTAsMTExLDExNiwzMiwxMjMsMTI1LAotICAgIDExNCwzMywwLDAsMCwxMjIsMTgsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTE3LDExNSwKLSAgICAxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLDMyLDQ4LDEyMiwzMSw5NSw5NSwxMTIsOTcsOTksCi0gICAgMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LAotICAgIDExMSwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMjIsNjEsODAsOTcsMTE0LDEwMSwKLSAgICAxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsOTksOTcsMTEwLDExMCwxMTEsCi0gICAgMTE2LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAotICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTIyLDE3LDY5LDEwOSwxMTIsMTE2LDEyMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw3OCw0MSw5LDIxOCwKLSAgICAxMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwzLDExNSwxMTYsMTE0LAotICAgIDIxOCw5LDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNTAsMCwwLDAsCi0gICAgMTE0LDEzLDAsMCwwLDExNCwxNjgsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwKLSAgICAyMSwwLDAsMCwyMTgsMTEsODMsMTIxLDExNSwxMTYsMTAxLDEwOSw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsNDEsNCwxMTQsMTUsMCwwLDAsMTE0LDE2OSwwLDAsMCwxMTQsMTcwLDAsCi0gICAgMCwwLDExNCwxNDcsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsOTUsCi0gICAgOTksMTA0LDEwMSw5OSwxMDcsMTUxLDMsMCwwLDExNSwyNCwwLDAsMCwwLDIsCi0gICAgMTUsMSwyNywxLDEyLDEsMTIsMSwxMiwxLDE1LDEsMTUsMSwxNSwxLAotICAgIDYsMiwyMSwxLDE5LDEsMTE0LDE4MSwwLDAsMCwxMjIsMTYsNzgsMTExLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMjIsNCwxMjMsCi0gICAgMzMsMTE0LDEyNSw5OSwyLDAsMCwwLDAsMCwwLDAsOCwwLDAsMCwKLSAgICAxMiwwLDAsMCw2NywwLDAsMCwxMTUsNDAsMSwwLDAsMTAwLDAsMCwKLSAgICAxMjUsMiwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwyNSwxMjUsMywwLDEyNCwzLDAsMTE0LDE3NSwwLDEyNCwzLDAsMTE2LAotICAgIDEsMCwxMDYsMiwwLDEwNyw3LDAsMTE0LDU5LDAsMTE2LDMsMCwxMjQsMSwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCwxLDEyNCwwLDAsMTE2LDEsMCwxMDYsMiwKLSAgICAwLDEwNyw2LDAsMTE0LDg1LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwwLDAsCi0gICAgMjUsODMsMTE2LDEsMCwxMDYsMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMjEsCi0gICAgMTMsMCwxMjQsNCwwLDEwNiw0LDAsMTI1LDIsMCw4NywxMTAsNjEsMCw0LAotICAgIDExNiw1LDAsMTA3LDEwLDAsMTE0LDE3NCwwLDEsMSwxLDExNiw2LDAsMTAwLAotICAgIDMsMCwyMywxMDYsNywwLDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLDEyNSwKLSAgICA1LDAsMTE2LDgsMCwxMjQsNSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwKLSAgICAxLDEwMCwwLDAsMTMwLDIsMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsMTI0LAotICAgIDAsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwwLAotICAgIDAsMTA3LDgsMCwxMTQsMjMyLDAsMTE2LDgsMCwxMTYsNiwwLDEwNiw3LDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwKLSAgICAxLDAsMTEwLDEyLDAsMTE2LDEwLDAsMTI0LDYsMCwxMzEsMSwwLDEyNSw3LAotICAgIDAsMTI0LDMsMCwxMTQsMzYsMSwxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwKLSAgICAyNSwxMjUsNCwwLDExNiwxMSwwLDEyNCw0LDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEwMCwxLDAsMTMxLDEsMCwxMDAsNSwwLDI1LDEyNCw3LDAsMTMxLDMsMCwKLSAgICAxLDEyNCw3LDAsODMsNDEsNiw3OCwxMTQsMTIxLDAsMCwwLDExNCwzMywwLAotICAgIDAsMCwxMjIsMjMsNTksMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLAotICAgIDExNiwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDE1LDAsMCwwLAotICAgIDExNCwxNDAsMCwwLDAsNDEsMTIsMTE0LDEyMiwwLDAsMCwxMTQsMTQsMCwwLAotICAgIDAsMTE0LDIxLDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsMTMxLDAsMCwwLAotICAgIDExNCw5NiwwLDAsMCwyMTgsOCw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTQsCi0gICAgNTAsMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE0OSwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwyMTgsCi0gICAgNywxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTQsMTUyLDAsMCwwLDExNCwxMjMsMCwKLSAgICAwLDAsOTAsMTMsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMTQsMTQ3LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsCisgICAgOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTQ2LDAsCisgICAgMCwwLDExNCw5MywwLDAsMCw0MSw0LDExNCwxNDMsMCwwLDAsMTE0LDcxLAorICAgIDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMSwxMDIsMTA1LAorICAgIDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTk1LDIsMCwwLDExNSw0LDAsCisgICAgMCwwLDAsOSwxMiwxLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDQsMCwwLDAsNjcsMCwwLDAsMTE1LDQ2LDAsMCwwLDEyNCwxLDEwNiwKKyAgICAwLDExNiwxLDEwNiwyLDEwNyw3LDExNCwzNCwxMTYsMywxMDAsMSwxMDYsNCwxMjQsCisgICAgMSwxMDYsMCwxMzEsMSwxMjQsMSwxMDYsMCwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsCisgICAgNSwxMTYsNiwxMDYsNywxMjQsMSwxMzEsMiw4MywwLDQxLDMsMTIyLDI0LDY3LAorICAgIDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSw4LDExNCwKKyAgICAxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDY5LDAsMCwwLDExNCw3MCwKKyAgICAwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw0NiwwLAorICAgIDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNDEsMiwxMTQsMjYsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzQsMCwKKyAgICAwLDAsMjA3LDIsMCwwLDExNSw4LDAsMCwwLDAsMywxMiwxLDEyLAorICAgIDEsMTAsMSwxMjIsMjksNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwxMTYsMSwKKyAgICAxMDYsMiwxMjQsMSwxMzEsMiwxLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwyMiwKKyAgICA2OSwxMjAsMTAxLDk5LDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDMsMTE0LDU4LDAsMCwwLDExNCw0NiwKKyAgICAwLDAsMCw5MCwxMiwxMDEsMTIwLDEwMSw5OSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw0MSwyLDExNCwyNiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEzNSwwLDAsCisgICAgMCwyMTUsMiwwLDAsMTE1LDIsMCwwLDAsMCwzLDEyMiwyNyw2NiwxMTcsCisgICAgMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwKKyAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwKKyAgICAwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDU3LDgyLDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwKKyAgICAxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLAorICAgIDk5LDExNiwxMTUsNDYsNzgsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsCisgICAgMCwxMTQsNzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMjIwLAorICAgIDIsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsCisgICAgMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LAorICAgIDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgODMsMCw0MSwyLDEyMiw1Niw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsCisgICAgMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LAorICAgIDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwKKyAgICAxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwwLAogICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICAyMyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwKLSAgICAxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTcxLDMsMCwwLDExNSw0MiwwLDAsCi0gICAgMCwwLDEsNiwxLDE5LDEsNiwxLDE1LDEsMTMsMiwxNSwxLDExLAotICAgIDEsMTMsMSwzLDEsMTMsMSwxMywxLDIyLDEsMjYsMSwxNSwxLDEyLAotICAgIDEsMzAsMiwxMiwxLDYsMiwxMywxLDI5LDEsMTE0LDE4NCwwLDAsMCwKLSAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMzcsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEzMSwxLDAsMTQzLDE4LDAsMSwxMTYsMSwwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICAxMzEsMiwwLDgzLDg3LDEwMCwxLDAsODEsODIsODgsMTAwLDEsMCw4Myw0MSwKLSAgICAyLDEyMiw1NCw3MCwxMDUsMTEwLDEwMCwzMiw5NywxMTAsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsCi0gICAgMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDEsMiwxMTQsNTQsMCwwLAotICAgIDAsMTE0LDE4NCwwLDAsMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsMTgzLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDIxOCwxNCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LAotICAgIDEwMCwxOTgsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDEzLDEsMTE0LDE4NSwKLSAgICAwLDAsMCwxMTQsMzMsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwKLSAgICAwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTY2LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsCi0gICAgMCwxLDEyNCwyLDAsMTAwLDEsMCwxMDcsNCwwLDExNCw0NiwwLDExNiwxLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsMCwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMzEsMCwwLDEsMTI0LDAsMCwxMTYsNCwwLAotICAgIDEwNiw1LDAsMTA3LDcsMCwxMTQsODQsMCwxMTYsNiwwLDEyNCwwLDAsMTE2LAotICAgIDcsMCwxMzEsMiwwLDgzLDExNiw0LDAsMTA2LDUsMCwxMjQsMCwwLDI1LAotICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE1MiwwLDExNiwKLSAgICAyLDAsMTA2LDgsMCwxMzEsMCwwLDEsMTAwLDMsMCwxMDYsOSwwLDEyNCwKLSAgICAwLDAsMTMxLDEsMCwxMjUsNCwwLDExNiwxMCwwLDEyNCw0LDAsMTAwLDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDEsMTMwLDEsMCwxMTYsMTEsMCwxMjQsMCwwLAotICAgIDEzMSwxLDAsMSwxMjQsMywwLDgzLDQxLDUsOTcsNTAsMSwwLDAsNzMsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsCi0gICAgMTAwLDMyLDExMSwxMTAsMzIsMTA1LDExNiwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDk3LDEwOCwxMDgsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsCi0gICAgMzIsMTA5LDk3LDEwMCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsMTE2LAotICAgIDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwKLSAgICAxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLAotICAgIDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LDExNiwKLSAgICAzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCw5NywKLSAgICAxMTYsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw5NywKLSAgICAxMDgsMTA1LDExNiwxMjEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsCi0gICAgMTEwLDEwMCwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiw4NCwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsCi0gICAgMTE2LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwKLSAgICAzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsMzIsMTEwLDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTE0LDMzLDAsMCwwLDc4LDEyMiw0MCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKLSAgICAxMTEsMTAyLDMyLDEyMywxMjUsMzIsMTA0LDk3LDEwOCwxMTYsMTAxLDEwMCw1OSwzMiw3OCwxMTEsCi0gICAgMTEwLDEwMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSwxMTQsMTUsMCwwLDAsNDEsMTIsMTE0LDE4MSwwLDAsMCwxMTQsMTcxLDAsCi0gICAgMCwwLDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwxNCwwLDAsCi0gICAgMCwxMTQsMjEsMCwwLDAsMTE0LDE4NSwwLDAsMCwyMTgsMTEsOTUsMTAzLDk5LAotICAgIDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTQsNTgsMCwwLDAsMTE0LDUwLDAsCi0gICAgMCwwLDExNCw3NywwLDAsMCwxMTQsNjMsMCwwLDAsNDEsNSwxMTQsMTUsCi0gICAgMCwwLDAsMTE0LDE2OSwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw4OSwwLAotICAgIDAsMCwxMTQsNzQsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDE4NiwwLDAsMCwyMDQsMywwLDAsMTE1LAotICAgIDI4LDAsMCwwLDAsOSwxNiwxLDEyLDEsMTgsMSwxMCwxLDE1LDEsCi0gICAgMTMsMSwxMywxLDEyLDEsMTAsMSw2LDEsOSwxLDE4LDEsMTAsMSwKLSAgICAxMTQsMTg2LDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsCi0gICAgMCwwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwyMzksMCwwLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCwxMTQsMjM1LDAsMTAwLDIsCi0gICAgMCwxMjQsMSwwLDEwNyw2LDAsMTE0LDgzLDAsMTE2LDEsMCwxMjQsMSwwLAotICAgIDEzMSwxLDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwyLDAsMTAwLDIsMCwxMzEsCi0gICAgMSwwLDEsMTE2LDAsMCwxMjQsMCwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsCi0gICAgODMsMCwxMjQsMSwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwxLAotICAgIDAsMSwxMjAsMTQ5LDAsMTI0LDEsMCw2OCw5MywxNDEsMCwxMjUsMywwLDExNiwKLSAgICAwLDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsMTE1LDkwLDAsMTAwLDQsCi0gICAgMCwxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEzMSwyLDAsCi0gICAgMTI1LDQsMCwxMjEsMTcsMCwxMTYsNywwLDEyNCwyLDAsMTI0LDQsMCwxMzEsCi0gICAgMiwwLDEsODcsMTEzLDkwLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyMzAsCi0gICAgMCwxLDEyNSw1LDAsMSwxMjIsNDcsMCwxMTYsOSwwLDEyNCw1LDAsMTMxLAotICAgIDEsMCwxMDYsMTAsMCwxMTYsMTEsMCwxMzEsMSwwLDExNCwyMDksMCwxMjQsNSwKLSAgICAwLDEwNiwxMiwwLDEyNCw0LDAsMTA3LDIsMCwxMTQsMjA5LDAsMTE5LDkwLDAsCi0gICAgMTMwLDAsMCw4Nyw4OSwxMDAsNSwwLDEwMCw1LDAsMTI1LDUsMCwxMjYsNSwKLSAgICAwLDg4LDExMyw5MCwwLDg4LDExMyw5MCwwLDg3LDEyNCwwLDAsODMsNDEsNiwKLSAgICAxMjIsMjM4LDcwLDEwNSwxMDMsMTE3LDExNCwxMDEsMzIsMTExLDExNywxMTYsMzIsMTE5LDEwNCw5NywKLSAgICAxMTYsMzIsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsMzIsMTE1LDEwNCwxMTEsCi0gICAgMTE3LDEwOCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwzMiwxMTIsOTcsMTE0LAotICAgIDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiw5NywzMiw5OSw5NywxMDgsMTA4LAotICAgIDk3LDk4LDEwOCwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiw5NywxMDcsMTAxLDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsNDYsMzIsNzMsMTE2LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLAotICAgIDEwMCwzMiwxMTYsMTExLDMyLDEwMCwxMDEsOTksMTExLDExNywxMTIsMTA4LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLAotICAgIDk3LDExNSwxMTUsMTE3LDEwOSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCi0gICAgMTA1LDk4LDM5LDExNSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKLSAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE0LDEzMSwwLDAsMCwyNTAsMSw0MiwyMTgsNyw5NSw5NSw5NywxMDgsMTA4LDk1LAotICAgIDk1LDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw3OCw0MSwxMywxMTQsNCwwLDAsMCwKLSAgICAxMTQsMTMwLDAsMCwwLDIxOCw2LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDIxOCw2LDEwMSwKLSAgICAxMjAsMTE2LDEwMSwxMTAsMTAwLDExNCwxODgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwKLSAgICAxLDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE3OCwKLSAgICAwLDAsMCwxMTQsNzEsMCwwLDAsMjE4LDE1LDk1LDY5LDgyLDgyLDk1LDc3LAotICAgIDgzLDcxLDk1LDgwLDgyLDY5LDcwLDczLDg4LDExNCwxNSwwLDAsMCw0MSw2LAotICAgIDExNCw4OSwwLDAsMCwyMTgsOCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNCwKLSAgICAxODMsMCwwLDAsMjE4LDEsMTIwLDkwLDksMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywKLSAgICAxMDksMTAxLDkwLDMsMTAxLDEyMCw5OSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwKLSAgICAxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDIyOCwzLDAsMCwxMTUsMzQsMCwwLAotICAgIDAsMCwxMCwxNSwxLDEyLDEsMTIsMSwxMywxLDE1LDEsMTYsMSwxMywKLSAgICAxLDE1LDEsMjEsMSwzLDEsMTcsMSwxOCw0LDIxLDEsMTUsMSwzLAotICAgIDEsMjYsMSwxMTQsMTk0LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDcyLDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDEsCi0gICAgMCwxMjQsMSwwLDEwMCwyLDAsMTA3LDgsMCwxMTQsNjgsMCwxMjQsMCwwLAotICAgIDEwMCwzLDAsMjUsMTI1LDEsMCwxMDAsNCwwLDEyNCwwLDAsMTA3LDcsMCwKLSAgICAxMTQsNjgsMCwxMjQsMSwwLDEwNiwxLDAsMTAwLDUsMCwxMzEsMSwwLDEwMCwKLSAgICA2LDAsMjUsMTI1LDEsMCwxMjQsMSwwLDgzLDQxLDcsMTIyLDE2Nyw2Nyw5NywKLSAgICAxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKLSAgICA5OCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsCi0gICAgOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwKLSAgICAxMDUsMTEwLDEwMSwxMDAsMzIsMTExLDExNCwzMiw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLAotICAgIDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsNzgsMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTE2LDExMSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LAotICAgIDk3LDExNiwzMiwxMDUsMTE2LDExNSwzMiwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsCi0gICAgMTA4LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTE0LDEzNCwwLDAsMCw3OCwxMTQsMSwwLDAsMCwKLSAgICAxMTQsMTMxLDAsMCwwLDExNCwxMjEsMCwwLDAsMTE0LDMzLDAsMCwwLDQxLAotICAgIDIsMTE0LDQyLDAsMCwwLDExNCwxMjIsMCwwLDAsNDEsMiwyMTgsNywxMDMsCi0gICAgMTA4LDExMSw5OCw5NywxMDgsMTE1LDExNCwxNjksMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDk5LDk3LDEwOCwKLSAgICA5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsNCw0LDAsCi0gICAgMCwxMTUsMTIsMCwwLDAsMCw3LDE1LDEsMTIsMSwxMCwxLDEyLDEsCi0gICAgMTksMSwxMTQsMTk2LDAsMCwwLDk5LDUsMCwwLDAsMCwwLDAsMCwKLSAgICA5LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDIyNywwLDAsCi0gICAgMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMCwwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxMjUsNSwwLDExMCw1NCwwLDEyNCwxLDAsMTAwLAotICAgIDIsMCwxMDcsOSwwLDExNCw0NSwwLDEyNCwxLDAsMTEwLDMsMCwxMDUsMCwKLSAgICAwLDEyNSw2LDAsMTE2LDEsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsMCwKLSAgICAxMTYsMCwwLDEyNCwwLDAsMTI0LDcsMCwxMjQsNCwwLDEzMSwzLDAsMTI1LAotICAgIDUsMCwxMjQsMywwLDExNSwyMDcsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsCi0gICAgMCwxMTQsMTIyLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDMsMCwKLSAgICAxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsMCw4MywxMjQsMCwwLDExNSwxMzIsCi0gICAgMCwxMjQsNSwwLDgzLDExNiwzLDAsMTI0LDAsMCwxMzEsMSwwLDExNiwzLAotICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEwMCwzLDAsMTMxLDEsMCwxMDAsMSwwLAotICAgIDI1LDEzMSwxLDAsMjQsMTI1LDgsMCwxMTYsNCwwLDEwNiw1LDAsMTI0LDUsCi0gICAgMCwxMDYsNiwwLDEwMCwyLDAsMTE2LDMsMCwxMjQsNSwwLDEwNiw2LDAsCi0gICAgMTMxLDEsMCwxMjQsOCwwLDI0LDEzMywyLDAsMjUsMjUsODMsMTEwLDE2LDAsCi0gICAgMTE2LDcsMCwxMjQsNSwwLDEyNCwzLDAsMTE2LDAsMCwxMzEsMywwLDgzLAotICAgIDEwMCwyLDAsODMsNDEsNCw5NywyMTUsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMzksMzIsOTcsCi0gICAgMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLAotICAgIDExNiwxMTEsMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTExLDk5LDk5LAotICAgIDExNywxMTQsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwKLSAgICAxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLAotICAgIDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwKLSAgICAxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LAotICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LAotICAgIDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAotICAgIDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLAotICAgIDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCi0gICAgMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLAotICAgIDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKLSAgICA2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDYyLDk2LDk2LDQxLDQ2LDMyLDMyLAotICAgIDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwxMCwzMiwzMiwzMiwzMiwKLSAgICA5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLAotICAgIDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKLSAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LAotICAgIDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwKLSAgICAxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwKLSAgICAzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwKLSAgICAxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiw1MCw0MSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwxMTQsMzMsMCwwLDAsNzgsMTE0LDEyMSwwLDAsMCw0MSw4LDExNCwKLSAgICAxODYsMCwwLDAsMTE0LDE5NiwwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDExNCwxNjcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwKLSAgICAwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTk0LDAsMCwwLDQxLDksMTE0LAotICAgIDE1LDAsMCwwLDExNCwxOTUsMCwwLDAsMjE4LDYsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDExNCwxOTIsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsODksMCwwLDAsCi0gICAgOTAsOCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LDExNCwxNjksMCwwLDAsOTAsCi0gICAgNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw5NSw5NSwxOSw0LDAsMCwxMTUsMjYsMCwwLDAsMCwxMSwxMiwxLAotICAgIDE1LDIsMjQsMSwxMiwxLDE4LDEsNiwzLDEyLDEsMjMsMSw2LDEsCi0gICAgNCw0LDM1LDMsNDAsMiwxMTQsMTk5LDAsMCwwLDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDUzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLAotICAgIDAsMTI1LDEsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsNDMsMCwKLSAgICAxMTYsMiwwLDEwMCwxLDAsMTI0LDAsMCwyMywxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTE2LDMsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsMjUsMTEwLAotICAgIDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsNDEsNCwxMTQsMTUwLDAsMCwwLDExNCwKLSAgICAxNTQsMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNDksMCwwLDAsNDEsMiwKLSAgICAxMTQsMTUsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsNTQsNCwwLAotICAgIDAsMTE1LDgsMCwwLDAsMCwxLDE1LDEsMTIsMSwxNiwxLDExNCwyMDAsCi0gICAgMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLAotICAgIDEyLDAsMCwwLDY3LDAsMCwwLDExNSw3NCwxLDAsMCwxMjQsMSwwLAotICAgIDk3LDAsMCwxMjQsMCwwLDk3LDEsMCwxMTYsMiwwLDExNiwxLDAsMTMxLAotICAgIDEsMCwxMjUsMiwwLDEyMCwxMjMsMCwxMTYsMSwwLDEwNiwzLDAsMTA2LDQsCi0gICAgMCwxMzEsMCwwLDY4LDkzLDEwNiwwLDkyLDIsMCwxMjUsMywwLDEyNSw0LAotICAgIDAsMTE2LDUsMCwxMjQsNCwwLDEyNCwyLDAsMTMxLDIsMCwxMTQsNDAsMCwKLSAgICAxMjQsMywwLDExNiwxLDAsMTA2LDYsMCwxMDcsNiwwLDExNCw5MSwwLDExNiwKLSAgICA3LDAsMTI1LDUsMCwxMTAsMjcsMCwxMTYsMCwwLDEwNiw4LDAsMTI0LDMsCi0gICAgMCwxMzEsMSwwLDExNCw0MCwwLDExNiw5LDAsMTI1LDUsMCwxMTAsMywwLAotICAgIDExMyw0MCwwLDExNiwxMCwwLDEyNCw0LDAsMTI0LDUsMCwxMzEsMiwwLDEyNSwKLSAgICA2LDAsMTE2LDExLDAsMTI0LDYsMCwxMjQsNCwwLDEzMSwyLDAsMSwxMTMsCi0gICAgNDAsMCw4NywxMTYsMSwwLDEwNiwzLDAsMTE2LDEyLDAsMjUsMTI1LDcsMCwKLSAgICAxMjAsNzMsMCwxMDAsNSwwLDY4LDkzLDY1LDAsMTI1LDgsMCwxMjQsOCwwLAotICAgIDExNiwxLDAsMTA2LDMsMCwxMDcsNywwLDExNCwyMDYsMCwxMTYsMTMsMCwxMjQsCi0gICAgOCwwLDEzMSwxLDAsMTI1LDksMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwzLAotICAgIDAsMTI0LDgsMCwyNSwxMjUsOSwwLDExNiwxNCwwLDEyNCw3LDAsMTI0LDgsCi0gICAgMCwxMjQsOSwwLDEzMSwzLDAsMSwxMTMsMTcwLDAsODcsMTIxLDE2LDAsMTE2LAotICAgIDEzLDAsMTAwLDIsMCwxMzEsMSwwLDEyNSwxMCwwLDg3LDExMCwyNCwwLDQsCi0gICAgMTE2LDE1LDAsMTA3LDEwLDAsMTE0LDI1LDEsMSwxLDEsMTAwLDMsMCwxMjUsCi0gICAgMTAsMCw4OSwxMTAsMSwwLDg4LDExNiwxNCwwLDEyNCw3LDAsMTAwLDIsMCwKLSAgICAxMjQsMTAsMCwxMzEsMywwLDEsMTE2LDEzLDAsMTAwLDQsMCwxMzEsMSwwLAotICAgIDEyNSwxMSwwLDExNiwxNCwwLDEyNCw3LDAsMTAwLDQsMCwxMjQsMTEsMCwxMzEsCi0gICAgMywwLDEsMTAwLDMsMCw4Myw0MSw2LDEyMiwyNTAsODMsMTAxLDExNiwxMTcsMTEyLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LAotICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTA5LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwxMTUsCi0gICAgMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDk3LAotICAgIDExMCwxMDAsMzIsOTUsMTA1LDEwOSwxMTIsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLAotICAgIDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwKLSAgICAxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwKLSAgICAxMTYsMTA0LDExMSwxMTUsMTAxLDMyLDExNiwxMTksMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsOTksCi0gICAgMTA1LDExNiwxMDgsMTIxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTQxLDAsMCwwLDExNCwzNCwwLDAsMCw3OCwKLSAgICAxMTQsNjIsMCwwLDAsNDEsMSwxMjIsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLAotICAgIDEwMywxMTUsNDEsMTYsMTE0LDU3LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTMsCi0gICAgMCwwLDAsMTE0LDIxLDAsMCwwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LAotICAgIDE3NywwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODIsCi0gICAgMCwwLDAsMTE0LDE2MCwwLDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwKLSAgICAwLDAsMTE0LDEsMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsNzcsMCwwLDAsNDEsMTIsMjE4LDEwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDIxOCwxMSw5NSwxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5MCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDg4LDAsCi0gICAgMCwwLDkwLDExLDExNSwxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwKLSAgICAxMiw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsCi0gICAgMTA0LDExNCwxMDEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsCi0gICAgOTcsMTA3LDExNCwxMDEsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsCi0gICAgMTE2LDExNywxMTIsNjEsNCwwLDAsMTE1LDUwLDAsMCwwLDAsOSw2LDEsCi0gICAgNiwzLDEyLDEsMjgsMSwxNSwxLDE1LDEsOSwxLDE1LDEsOSwyLAotICAgIDMsMSwxNSwxLDE3LDMsMTMsMSwxMywxLDE1LDEsMTUsMiwxMywxLAotICAgIDIwLDMsMywxLDE2LDEsMTMsMiwxMSwxLDE2LDMsMTIsMSwxMTQsMjA0LAotICAgIDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDg3LDAsMCwwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsMSwxMTYsMSwwLDEwNiwyLDAsCi0gICAgMTA2LDMsMCwxMTYsNCwwLDEzMSwxLDAsMSwxMTYsMSwwLDEwNiwyLDAsCi0gICAgMTA2LDMsMCwxMTYsNSwwLDEzMSwxLDAsMSwxMDAsMSwwLDEwMCwyLDAsCi0gICAgMTA4LDYsMCwxMjUsMiwwLDEyNCwyLDAsOTcsNywwLDEyNCwyLDAsMTA2LAotICAgIDgsMCwxMTYsMSwwLDEwNiw5LDAsMTE2LDEwLDAsMjUsMTMxLDEsMCwxLAotICAgIDEwMCwyLDAsODMsNDEsMywxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsCi0gICAgMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMTQsMzMsMCwwLDAsNzgsCi0gICAgNDEsMTEsMTE0LDIwNCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDE3NCwwLDAsCi0gICAgMCwxMTQsMTEzLDAsMCwwLDExNCwxNTAsMCwwLDAsMTE0LDE2MCwwLDAsMCwKLSAgICAyMTgsMjYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywxMDgsMTE0LDExOSwwLDAsCi0gICAgMCwyMTgsOCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMTQsMjEsMCwwLDAsCi0gICAgMTE0LDEsMCwwLDAsNDEsMywxMTQsMjAyLDAsMCwwLDExNCwyMDMsMCwwLAotICAgIDAsMTE0LDIwNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMSwwLDAsMCwxMTQsMjA2LDAsMCwwLDEwOCw0LDAsMCwxMTUsMTIsCi0gICAgMCwwLDAsMCwyLDEzLDIsMTYsMSwxNiwzLDEyLDEsNiwxLDExNCwKLSAgICAyMDYsMCwwLDAsNDEsNTEsMTE0LDMsMCwwLDAsMTE0LDExOSwwLDAsMCwKLSAgICAxMTQsMTIsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwxNywwLDAsMCwxMTQsCi0gICAgNTksMCwwLDAsMTE0LDQxLDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsMzEsCi0gICAgMCwwLDAsMTE0LDMyLDAsMCwwLDExNCw1MywwLDAsMCwxMTQsNTQsMCwKLSAgICAwLDAsMTE0LDU2LDAsMCwwLDExNCw2MywwLDAsMCwxMTQsNjUsMCwwLAotICAgIDAsMTE0LDc1LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsODQsMCwwLDAsCi0gICAgMTE0LDkwLDAsMCwwLDExNCwxMDEsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsCi0gICAgMTA2LDAsMCwwLDExNCw4NSwwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwKLSAgICAxMTYsOTAsOSw5NSw4MCw3OSw4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTMyLDAsMCwKLSAgICAwLDExNCwxMzcsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsOTcsMCwwLDAsCi0gICAgMTE0LDg2LDAsMCwwLDExNCwxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsCi0gICAgODcsMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwxNjUsCi0gICAgMCwwLDAsMTE0LDE3MSwwLDAsMCwxMTQsMTczLDAsMCwwLDExNCwxNzYsMCwKLSAgICAwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTkxLDAsMCwwLDExNCwxODIsMCwwLAotICAgIDAsMTE0LDE4NCwwLDAsMCwxMTQsMTg1LDAsMCwwLDExNCwxODYsMCwwLDAsCi0gICAgMTE0LDE5NCwwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LAotICAgIDIwMCwwLDAsMCwxMTQsMjA0LDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDEwLAorICAgIDEwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjI2LDIsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLAorICAgIDQxLDIsMTIyLDUyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzAsOTcsMTA4LDExNSwxMDEsCisgICAgMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExMCwxMDEsMTE4LDEwMSwxMTQsMzIsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSw0Niw3MCwxMTQsMTAsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTA1LDAsMCwwLDIzMiwyLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDc4LDc4LDQxLDEsNzgsNDEsMTcsMTE0LDEsCisgICAgMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwKKyAgICAwLDAsMjE4LDEyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKKyAgICAxMTQsODYsMCwwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwKKyAgICAxMTEsMTAwLDExNCwxNDYsMCwwLDAsMTE0LDE0NywwLDAsMCwxMTQsMTM0LDAsMCwKKyAgICAwLDExNCwxMzUsMCwwLDAsMTE0LDc0LDAsMCwwLDExNCwxNDgsMCwwLDAsCisgICAgMTE0LDE0OSwwLDAsMCwxMTQsMTA1LDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsCisgICAgMTM4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTQyLDAsMCwwLDE2OCwyLDAsCisgICAgMCwxMTUsMzAsMCwwLDAsOCw3LDQsMiwxMiw5LDIsMSwxMiw4LAorICAgIDIsMSwxMiwxMSwxMiw4LDEyLDUsMiwxLDE0LDUsMiwxLDE0LDUsCisgICAgMiwxLDE0LDUsMTE0LDE0MiwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDY0LDAsMCwwLDExNSwxNDAsCisgICAgMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAxLAorICAgIDQsMTAwLDIsMTAwLDMsMTMyLDAsMTMxLDEsOTAsNSwxMDEsNiwxMDAsMjEsMTAwLAorICAgIDUsMTAwLDYsMTMyLDEsMTMxLDEsOTAsNywxMDEsNiwxMDAsMjIsMTAwLDcsMTAwLAorICAgIDgsMTMyLDEsMTMxLDEsOTAsOCwxMDEsNiwxMDAsOSwxMDAsMTAsMTMyLDAsMTMxLAorICAgIDEsOTAsOSwxMDEsNCwxMDAsMTEsMTAwLDEyLDEzMiwwLDEzMSwxLDkwLDEwLDEwMSwKKyAgICA2LDEwMCwxMywxMDAsMTQsMTMyLDAsMTMxLDEsOTAsMTEsMTAxLDYsMTAxLDEyLDEwMCwKKyAgICAxNSwxMDAsMTYsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTMsMTAxLDYsMTAxLDEyLDEwMCwKKyAgICAxNywxMDAsMTgsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTQsMTAxLDYsMTAxLDEyLDEwMCwKKyAgICAxOSwxMDAsMjAsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTUsMTAwLDQsODMsMCw0MSwKKyAgICAyMywyMTgsMTQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsMTIyLDE0Miw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LAorICAgIDEwNCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywKKyAgICAxMTYsMTA1LDk5LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LAorICAgIDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsCisgICAgMCwxMDYsMSwxMzEsMSw4MywwLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwKKyAgICAxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwKKyAgICAxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjIsCisgICAgNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsNDEsNjIsNDEsMiwxMTQsMzgsMCwwLDAsMTE0LDEsMCwKKyAgICAwLDAsNDEsMSwyMTgsMSwxMDksMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDg2LDAsMCwwLDI1MCwyLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCisgICAgMTEyLDExNCw3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICA1LDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMjQsMSwxMzEsMSwxMTQsMjYsMTE2LDIsMTI0LDEsMTI0LDAsMTAwLDEsMTAwLAorICAgIDIsMTQxLDMsODMsMCwxMTAsNCwxMDAsMCw4MywwLDEwMCwwLDgzLDAsNDEsCisgICAgMyw3OCw5MCw2LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQxLDEsMTE0LDEwMywwLDAsCisgICAgMCw0MSwzLDExNCw0NiwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDc4LDAsCisgICAgMCwwLDQxLDQsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDE0NCwKKyAgICAwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwxNDYsMCwwLDAsMywzLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDIsMTAsMSwxNiwyLDEyMiwyNCw3MCwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTE2LAorICAgIDAsMTA2LDEsMTI0LDEsMTMxLDEsMTE0LDE0LDEyNCwwLDgzLDAsMTAwLDEsODMsCisgICAgMCw0MSwyLDEyMiw5Myw3MCwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKKyAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsCisgICAgODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsCisgICAgMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsNzgsNDEsMiwxMTQsNDYsMCwwLDAsMTE0LDc1LDAsMCwwLDQxLAorICAgIDMsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDE0NCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCisgICAgMTQ3LDAsMCwwLDEwLDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsCisgICAgMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLAorICAgIDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LAorICAgIDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsCisgICAgMTAxLDk3LDExNiwxMDUsMTExLDExMCw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsCisgICAgMTQzLDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTM0LDAsMCwwLDE5LDMsMCwKKyAgICAwLDExNSwwLDAsMCwwLDEyMiwyOCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNjQsMCwwLDAsMTI0LDAsCisgICAgMTA2LDAsMTA2LDEsMTI1LDEsMTE2LDIsMTA2LDMsMTI0LDEsMTMxLDEsMTE1LDM2LAorICAgIDExNiw0LDEwMCwxLDEwNiw1LDEyNCwxLDEzMSwxLDEyNCwxLDEwMCwyLDE0MSwyLAorICAgIDEzMCwxLDExNiw2LDExNiwyLDEwNiw3LDEyNCwxLDEzMSwyLDEyNSwyLDExNiw4LAorICAgIDEyNCwyLDEyNCwwLDEwNiw5LDEzMSwyLDEsMCwxMDAsMCw4MywwLDQxLDMsCisgICAgNzgsMTIyLDI3LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsCisgICAgMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwKKyAgICAxMTQsMTUsMCwwLDAsNDEsMTAsMTE0LDg5LDAsMCwwLDExNCwxNSwwLDAsCisgICAgMCwxMTQsNDYsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw3MCwwLDAsMCwKKyAgICAxMTQsMzgsMCwwLDAsMTE0LDU4LDAsMCwwLDIxOCwxNywxMDMsMTAxLDExNiw5NSwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMjE4LDQsMTAxLAorICAgIDEyMCwxMDEsOTksMTE0LDcsMCwwLDAsNDEsMywxMTQsODMsMCwwLDAsMTE0LAorICAgIDE1LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzUsMCwwLDAsMjMsMywKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDAsMiw4LDEsMTAsMSwxMCwxLDgsCisgICAgMSwxMiwxLDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsMCwxMjQsMCwxMjQsMSwxMzEsCisgICAgMiw4MywwLDQxLDEsMTIyLDk1LDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LAorICAgIDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsNDEsMSwxMTQsODQsMCwwLDAsNDEsMiwxMTQsCisgICAgMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTM4LDAsMCwwLDMyLDMsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsCisgICAgMTA2LDEsMTI0LDEsMTMxLDEsODMsMCw0MSwxLDEyMiw0NSw4MiwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLAorICAgIDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw0MSwyLDExNCw0NiwwLDAsMCwKKyAgICAxMTQsMTU0LDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDE0OCwwLDAsMCw0MSwzLDAsMCwxMTUsMiwwLDAsMCwwLDQsCisgICAgMTIyLDIzLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsCisgICAgMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw1NCw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwKKyAgICAxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLAorICAgIDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLAogICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDIxOCw4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsCi0gICAgMTE1LDk2LDAsMCwwLDYsMTcsNiwyLDEyLDgsMTIsNCwxOSwyMCw2LAotICAgIDIsNiwzLDIyLDQsMTksNjgsMTksMjEsMTksMTksMTIsMTksMTIsMTksMTIsCi0gICAgMTEsMTgsOCwxMiwxMSwxMiwxMiwxMiwxNiwxMiwzNiwxOSwyNywxOSwxMDEsMjQsCi0gICAgMjYsOSwzLDE4LDQ1LDE4LDYwLDEyLDE4LDEyLDE3LDEyLDI1LDEyLDI5LDEyLAotICAgIDIzLDEyLDE2LDE5LDczLDE5LDc3LDE5LDEzLDEyLDksMTIsOSwxNSw0MCwxMiwKLSAgICAxNyw2LDEsMTAsMiwxMiwyNywxMiw2LDE4LDI0LDEyLDMyLDEyLDE1LDI0LAotICAgIDM1LDEyLDcsMTIsNDcsCisgICAgMCwwLDExNCwxNDksMCwwLDAsNDcsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCw0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDgzLAorICAgIDAsNDEsMSwxMjIsNDYsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwKKyAgICAzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDQ2LDQxLDIsMTE0LDQ2LDAsMCwwLDkwLDE3LDEwNSwxMTUsOTUsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsMTE0LAorICAgIDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwNSwwLDAsMCw1MywzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI1LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDQxLDIsNzgsNzgsNDEsMSw3OCw0MSwxNiwxMTQsMSwwLDAsCisgICAgMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwKKyAgICAxMTQsMTUwLDAsMCwwLDExNCw4NiwwLDAsMCwxMTQsMTUxLDAsMCwwLDExNCwKKyAgICAxNDYsMCwwLDAsMTE0LDE0NywwLDAsMCwxMTQsMTM0LDAsMCwwLDExNCwxMzUsCisgICAgMCwwLDAsMTE0LDEzOCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE0OCwwLAorICAgIDAsMCwxMTQsMTQ5LDAsMCwwLDExNCwxMDUsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCwxNTIsMCwwLDAsMjQxLDIsMCwwLDExNSwzMCwwLDAsMCw4LDcsCisgICAgNCwyLDEyLDksMiwxLDEyLDYsMiwxLDEyLDgsMTIsNCwxMiw5LAorICAgIDEyLDksMiwxLDE0LDUsMiwxLDE0LDUsMiwxLDExNCwxNTIsMCwwLAorICAgIDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCw2NCwwLDAsMCwxMTUsMzIsMCwwLDAsMTAxLDAsOTAsMSwxMDAsCisgICAgMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsCisgICAgNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDgzLDAsNDEsNywyMTgsMTgsOTUsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsCisgICAgMTE2LDEyMiwzNiw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwzMiwxMDksOTcsMTEwLDk3LDEwMywKKyAgICAxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwKKyAgICAwLDExNiwwLDEwNiwxLDEzMSwwLDEsMCwxMDAsMSw4MywwLDQxLDIsMTIyLAorICAgIDI0LDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDEsMiwxMTQsNDYsMCwwLAorICAgIDAsMTE0LDEzNywwLDAsMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDgsMCwwLAorICAgIDAsNjYsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyOCw5NSw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsCisgICAgNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSw0LDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxMiwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwxLDAsMTAwLDEsODMsMCwKKyAgICA0MSwyLDEyMiw2MCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNCwxMDEsMTAzLDk3LAorICAgIDExNCwxMDAsMTA4LDEwMSwxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTcsMTEwLDEyMSwzMiwxMTQsOTcsCisgICAgMTA1LDExNSwxMDEsMTAwLDMyLDEwMSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LAorICAgIDc4LDQxLDIsMTE0LDQ2LDAsMCwwLDExNCw0NywwLDAsMCw0MSw0LDExNCwKKyAgICAyNiwwLDAsMCw5MCw4LDEwMSwxMjAsOTksOTUsMTE2LDEyMSwxMTIsMTAxLDkwLDksCisgICAgMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywxMDEsOTAsMTMsMTAxLDEyMCw5OSw5NSwxMTYsCisgICAgMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDUwLDAsMCwwLDcwLDMsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMiwxMjIsMjcsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMjAsCisgICAgMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLDAsMCwKKyAgICAwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCw0OCwwLDAsMCwKKyAgICAxMTQsNTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTcsMCwwLDAsNjIsMywKKyAgICAwLDAsMTE1LDYsMCwwLDAsOCwyLDQsMiw4LDQsMTE0LDE1NywwLAorICAgIDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw2NCwwLDAsMCwxMjQsMSwxMDYsMCwKKyAgICAxMDAsMSwxMjQsMiwxMDAsMiwyNCwwLDEzMSwyLDEyNSwzLDExNiwxLDEyNCwzLAorICAgIDEzMSwxLDEyNCwyLDEwNywwLDExNCwzNiwxMTYsMiwxMDAsMywxMzEsMSwxMzAsMSwKKyAgICAxMjQsMywxMDAsNCwyNSwwLDEyNSw0LDEyNCwwLDExNCw2MCwxMDAsNSwxMDYsMywKKyAgICAxMjQsNCwxMjQsMCwxMzEsMiw4MywwLDEyNCw0LDgzLDAsNDEsNiwxMjIsNTAsCisgICAgODIsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwKKyAgICAxMTgsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExNiwKKyAgICAxMTEsMzIsOTcsMTEwLDMyLDk3LDk4LDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMSwxMTAsCisgICAgMTAxLDQ2LDExNCwxMTcsMCwwLDAsMTE0LDMzLDAsMCwwLDEyMiw1MCw5NywxMTYsCisgICAgMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OCwxMDEsMTIxLDExMSwxMTAsMTAwLDMyLDExNiwKKyAgICAxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDExNCwxOSwwLDAsMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNDEsNCwyMTgsNiwKKyAgICAxMTQsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMywxMDgsMTAxLDExMCwyMTgsMTAsODYsOTcsMTA4LAorICAgIDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCwzOCwwLDAsMCw0MSw1LDExNCwxNSwKKyAgICAwLDAsMCwyMTgsNywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjE4LDUsMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCw5MCw0LDk4LDEwNSwxMTYsMTE1LDkwLDQsOTgsOTcsMTE1LDEwMSwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsCisgICAgOTUsMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksMTAxLDc1LDMsMCwKKyAgICAwLDExNSwxMCwwLDAsMCwwLDIsMTYsMSwxMiwxLDgsMSw4LDEsCisgICAgMTE0LDE2MywwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsMywxMjQsMywxMDAsMCwxMDcsCisgICAgOCwxMTQsMjQsMTAwLDAsODMsMCwxMTYsMSwxMjQsMSwxMjQsMywxMzEsMiw4MywKKyAgICAwLDQxLDEsNzgsNDEsMiwxMTQsMTQ3LDAsMCwwLDExNCw3OCwwLDAsMCwKKyAgICA0MSw0LDIxOCw2LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCwxNSwwLDAsMCwxMTQsCisgICAgMTQ0LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDExNSwxMTIsMTAxLDk5LDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw4NCwzLDAsMCwxMTUsCisgICAgOCwwLDAsMCwwLDMsMTIsMSw4LDEsNCwxLDExNCwxNjUsMCwwLAorICAgIDAsOTksMywwLDAsMCwwLDAsMCwwLDEwLDAsMCwwLDI3LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwyNDQsMCwwLDAsMTE2LDAsMTA2LDEsMTI1LAorICAgIDMsMTI0LDMsMTAwLDEsMTA3LDgsMTE0LDIyLDExNiwyLDEwMCwyLDEzMSwxLDEzMCwKKyAgICAxLDEyNCwzLDExNSwzOCwxMTYsMywxMDYsNCwxMDAsMywxMTYsNSwxMzEsMiwxLAorICAgIDAsMTI0LDAsMTE2LDAsMTA2LDYsMTA3LDYsMTI1LDQsMTIwLDE5MCwxMjQsMyw2OCwKKyAgICAwLDkzLDE3OCwxMjUsNSwxMTYsNywxMzEsMCwxNDMsNzIsMSwwLDEyMSwxMCwxMjQsCisgICAgNSwxMDYsOCwxMjUsNiw4NywwLDExMCw0Miw0LDAsMTE2LDksMTA3LDEwLDExNCwKKyAgICAxMTgsMSwwLDEsMCwxLDAsMTE2LDEwLDEyNCw1LDEyNCwwLDEyNCwxLDEzMSwKKyAgICAzLDEyNSw3LDEyNCw3LDEwMCwxLDEwNyw4LDExNCwxMTQsMTE5LDU0LDg5LDAsMTEwLAorICAgIDE0LDg4LDAsMTI0LDYsMTI0LDAsMTI0LDEsMTI0LDIsMTMxLDMsMTI1LDcsODcsCisgICAgMCwxMDAsMSw4MSwwLDgyLDAsODgsMCwxMjQsNywxMDAsMSwxMDcsOSwxMTQsCisgICAgNTQsMTI0LDQsMTIsMCwxMTQsMjI4LDEyNCwwLDExNiwwLDEwNiw2LDEwNyw2LDExNCwKKyAgICAyMjgsMTE2LDAsMTA2LDYsMTI0LDAsMjUsMCwxMjUsOCwxMjEsMTAsMTI0LDgsMTA2LAorICAgIDExLDEyNSw5LDg3LDAsMTEwLDIwLDQsMCwxMTYsOSwxMDcsMTAsMTE0LDIwNiwxLAorICAgIDAsMSwwLDEsMCwxMjQsNyw4MywwLDg4LDAsMTI0LDksMTAwLDEsMTA3LAorICAgIDgsMTE0LDIyMiwxMjQsNyw4MywwLDExMywyMzIsMTI0LDksODMsMCwxMTMsNTQsMTI0LAorICAgIDcsODMsMCwxMTMsNTQsODcsMCwxMDAsMSw4MywwLDEwMCwxLDgzLDAsNDEsCisgICAgNCwxMjIsMjEsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzksMTE1LDMyLDExNSwxMTIsMTAxLDk5LDQ2LDc4LDEyMiw1MywxMTUsMTIxLDExNSw0NiwxMDksCisgICAgMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLAorICAgIDQ0LDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsMTA1LDExNSwzMiwxMDgsMTA1LDEwNywxMDEsCisgICAgMTA4LDEyMSwzMiwxMTUsMTA0LDExNywxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDEwMCwxMTEsMTE5LDExMCwKKyAgICAxMjIsMjIsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDQxLDEyLDExNCwxNCwwLDAsMCwyMTgsCisgICAgOSwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsNzAsMCwwLDAsMjE4LAorICAgIDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDIxOCw0LDExOSw5NywxMTQsMTEwLAorICAgIDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE0LAorICAgIDc5LDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsOTAsCisgICAgMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsODksMCwwLDAsNDEsMTAsMTE0LAorICAgIDE1LDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDE0NSwwLDAsMCwxMTQsMTY2LAorICAgIDAsMCwwLDkwLDksMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNCwxNjQsCisgICAgMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsCisgICAgMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwyMTgsMTAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsCisgICAgMTAxLDk5LDkzLDMsMCwwLDExNSw1NCwwLDAsMCwwLDIsNiwxLDgsCisgICAgMiw4LDMsNCwxLDEyLDUsMTAsMSwxMCwxLDgsMSwyLDEsMTAsCisgICAgMSwxNCwxLDEyLDEsOCwxLDgsMiwyMiwxLDgsMiwxNiwxLDEwLAorICAgIDEsMiwxLDEwLDEsMTQsNCw2LDIsOCwxLDYsMiw2LDIsOCwKKyAgICAyLDExNCwxNzAsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDQsCisgICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTQwLDAsMCwwLAorICAgIDExNiwwLDEyNCwwLDExNiwxLDEzMSwyLDExNSwyOCwxMTYsMiwxMDAsMSwxMDYsMywKKyAgICAxMTYsNCwxMjQsMCwxMzEsMSwxMzEsMSwxMzEsMSwxMzAsMSwxMjQsMiwxMDAsMiwKKyAgICAxMDcsMCwxMTQsNDQsMTE2LDUsMTAwLDMsMTMxLDEsMTMwLDEsMTI0LDIsMTAwLDIsCisgICAgMTA3LDQsMTE0LDExNCwxMTYsMCwxMjQsMSwxMTYsMSwxMzEsMiwxMTUsNzIsMTE2LDIsCisgICAgMTAwLDQsMTMxLDEsMTMwLDEsMTEwLDQyLDEyNCwxLDExNSw4NiwxMTYsNiwxMDAsNSwKKyAgICAxMzEsMSwxMzAsMSwxMTAsMjgsMTI0LDEsMTE2LDcsMTA2LDgsMTA3LDcsMTE0LDExNCwKKyAgICAxMDAsNiwxMjUsMywxMTYsOSwxMjQsMywxMDYsMywxMjQsMSwxMzEsMSwxMzEsMSwKKyAgICAxMzAsMSwxMjQsMCwxMiwwLDExNCwxMzYsMTI0LDIsMTAwLDIsMTA3LDIsMTE0LDEzNiwKKyAgICAxMTYsNSwxMDAsNywxMzEsMSwxMzAsMSwxMDAsOCw4MywwLDQxLDksMTIyLDI4LAorICAgIDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwKKyAgICAzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsMTAxLDM0LDQ2LDEyMiwzMSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsMTE0LDE5LDAsCisgICAgMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwKKyAgICAxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLDk3LAorICAgIDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiw1NCw5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwKKyAgICAxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEwLDExMSwzMiwxMDcsMTEwLDExMSwxMTksMTEwLAorICAgIDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDEyMiwKKyAgICA2MSw4MCw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiwKKyAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwKKyAgICAxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsCisgICAgNjksMTA5LDExMiwxMTYsMTIxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksCisgICAgMTAxLDc4LDQxLDEwLDIxOCwxMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLAorICAgIDIxOCwzLDExNSwxMTYsMTE0LDIxOCw5LDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTQsMzgsMCwwLDAsMTE0LDEzLDAsMCwwLDExNCwxNjAsMCwwLDAsMTE0LAorICAgIDcwLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsNzksMCwwLDAsMjE4LDExLAorICAgIDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LDExNCwxMTEsMTE0LDQxLDQsMTE0LDE1LDAsCisgICAgMCwwLDExNCwxNjEsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMTM5LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMyw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDE0MCwKKyAgICAzLDAsMCwxMTUsMjgsMCwwLDAsMCwyLDEwLDEsMTgsMSw4LDEsCisgICAgOCwxLDgsMSwxMCwxLDEwLDEsNCwxLDEwLDIsMTAsMSw0LDIsCisgICAgMTQsMSwxNCwxLDExNCwxNzUsMCwwLDAsMTIyLDE2LDc4LDExMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTIyLDQsMTIzLDMzLDExNCwKKyAgICAxMjUsOTksMiwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsMTIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDIyMCwwLDAsMCwxMDAsMCwxMjUsMiwxMjQsCisgICAgMCwxMDYsMCwxMDAsMSwxMzEsMSwxMDAsMiwyNSwwLDEyNSwzLDEyNCwzLDExNCwKKyAgICAxMzQsMTI0LDMsMTE2LDEsMTA2LDIsMTA3LDcsMTE0LDQyLDExNiwzLDEyNCwxLDEyNCwKKyAgICAzLDEzMSwyLDEsMCwxMjQsMCwxMTYsMSwxMDYsMiwxMDcsNiwxMTQsNjIsMTE2LAorICAgIDEsMTA2LDIsMTI0LDAsMjUsMCw4MywwLDExNiwxLDEwNiwyLDEyNCwzLDI1LAorICAgIDAsMTI1LDQsMTIxLDEwLDEyNCw0LDEwNiw0LDEyNSwyLDg3LDAsMTEwLDUwLDQsCisgICAgMCwxMTYsNSwxMDcsMTAsMTE0LDEzMiwxLDAsMSwwLDEsMCwxMTYsNiwxMDAsCisgICAgMywyMywwLDEwNiw3LDEyNCwwLDEyNCwzLDEzMSwyLDEyNSw1LDExNiw4LDEyNCwKKyAgICA1LDEyNCwwLDEwMCw0LDE0MSwyLDEwMCwwLDEzMCwyLDg5LDAsMTEwLDIsODgsCisgICAgMCwxMTYsOSwxMjQsMCwxMjQsMiwxMzEsMiwxMjUsNiwxMjQsNiwxMDAsMCwxMDcsCisgICAgOCwxMTQsMTcyLDExNiw4LDExNiw2LDEwNiw3LDEyNCwwLDEzMSwxLDEyNCwwLDEwMCwKKyAgICA0LDE0MSwyLDEzMCwxLDExMCw4LDExNiwxMCwxMjQsNiwxMzEsMSwxMjUsNywxMjQsCisgICAgMywxMTQsMjE2LDExNiwxLDEwNiwyLDEyNCwzLDI1LDAsMTI1LDQsMTE2LDExLDEyNCwKKyAgICA0LDEyNCwwLDEwNiwwLDEwMCwxLDEzMSwxLDEwMCw1LDI1LDAsMTI0LDcsMTMxLAorICAgIDMsMSwwLDEyNCw3LDgzLDAsNDEsNiw3OCwxMTQsMTE3LDAsMCwwLDExNCwKKyAgICAxOSwwLDAsMCwxMjIsMjMsNTksMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMSwxMTQsCisgICAgMTUsMCwwLDAsMjMzLDIsMCwwLDAsNDEsMTIsMTE0LDExOCwwLDAsMCwKKyAgICAxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsCisgICAgMTI3LDAsMCwwLDExNCw5MCwwLDAsMCwyMTgsOCw5NSw2OSw4Miw4Miw5NSwKKyAgICA3Nyw4Myw3MSwxMTQsMzgsMCwwLDAsMjE4LDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNzgsMTExLDExNiw3MCwxMTEsMTE3LDExMCwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxNzAsMCwKKyAgICAwLDAsMTE0LDE0MSwwLDAsMCwxMTQsNSwwLDAsMCw0MSw4LDExNCwxNSwKKyAgICAwLDAsMCwyMTgsNywxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTQsMTQ0LDAsMCwKKyAgICAwLDExNCwxMTksMCwwLDAsOTAsMTMsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTM5LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsCisgICAgODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNjMsMywwLDAsCisgICAgMTE1LDQyLDAsMCwwLDAsMSw0LDEsMTQsMSw0LDEsMTAsMSwxMCwKKyAgICAyLDEwLDEsMTAsMSwxMCwxLDIsMSwxMCwxLDE0LDEsMTYsMSwyMCwKKyAgICAxLDEwLDEsOCwxLDIwLDIsOCwxLDQsMiwxMCwxLDIyLDEsMTE0LAorICAgIDE4MCwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsMzAsMCwwLDAsMTE2LDAsCisgICAgMTI0LDAsMTMxLDEsMTQzLDEyLDEsMCwxMTYsMSwxMjQsMCwxMjQsMSwxMzEsMiwKKyAgICA4MywwLDgxLDAsODIsMCw4OCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNTQsCisgICAgNzAsMTA1LDExMCwxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsCisgICAgMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLDIsMTE0LDQyLDAsMCwwLDExNCwxODAsCisgICAgMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTQsCisgICAgOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTkwLDMsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMiwxMCwxLDExNCwxODEsMCwwLDAsCisgICAgMTE0LDE5LDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw1LDAsCisgICAgMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDEyMCwwLDAsMCwxMTYsCisgICAgMCwxMjQsMCwxMjQsMSwxMjQsMiwxMzEsMywxLDAsMTI0LDIsMTAwLDEsMTA3LAorICAgIDQsMTE0LDMyLDExNiwxLDEyNCwwLDEyNCwxLDEyNCwyLDEzMSwzLDEyNSwwLDExNiwKKyAgICAyLDEwNiwzLDEzMSwwLDEsMCwxMjQsMCwxMTYsNCwxMDYsNSwxMDcsNywxMTQsCisgICAgNjAsMTE2LDYsMTI0LDAsMTE2LDcsMTMxLDIsODMsMCwxMTYsNCwxMDYsNSwxMjQsCisgICAgMCwyNSwwLDEyNSwzLDEyNCwzLDEwMCwyLDEwNyw4LDExNCwxMDgsMTE2LDIsMTA2LAorICAgIDgsMTMxLDAsMSwwLDEwMCwzLDEwNiw5LDEyNCwwLDEzMSwxLDEyNSw0LDExNiwKKyAgICAxMCwxMjQsNCwxMjQsMCwxMDAsNCwxNDEsMiwxMzAsMSwxMTYsMTEsMTI0LDAsMTMxLAorICAgIDEsMSwwLDEyNCwzLDgzLDAsNDEsNSw5Nyw1MCwxLDAsMCw3MywxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsCisgICAgMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsCisgICAgMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwKKyAgICAxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsMTA5LAorICAgIDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLAorICAgIDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LDMyLAorICAgIDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTExLDEwOSwxMDUsMTEwLDk3LDExNiwKKyAgICAxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwKKyAgICAxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5NywxMTAsCisgICAgMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDQ2LDMyLDg0LDEwNCwKKyAgICAxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTAxLDExNSwzMiwxMTUsMTAxLDExNiwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLAorICAgIDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMTQsMTksMCwwLDAsNzgsMTIyLDQwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExMSwKKyAgICAxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LDMyLDc4LDExMSwxMTAsCisgICAgMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDQxLDEsMTE0LDE1LDAsMCwwLDQxLDEyLDExNCwxNzUsMCwwLDAsMTE0LDE2MywKKyAgICAwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsMTQsMCwKKyAgICAwLDAsMTE0LDc5LDAsMCwwLDExNCwxODEsMCwwLDAsMjE4LDExLDk1LDEwMywKKyAgICA5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE0LDQ3LDAsMCwwLDExNCwzOCwKKyAgICAwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw1NiwwLDAsMCw0MSw1LDExNCwKKyAgICAxNSwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDgzLAorICAgIDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMTgyLDAsMCwwLDE5NiwzLDAsMCwKKyAgICAxMTUsMjgsMCwwLDAsMCw5LDEyLDEsOCwxLDEyLDEsOCwxLDEwLAorICAgIDEsMTAsMSwxMCwxLDgsMSw4LDEsNCwxLDYsMSwxMiwxLDgsCisgICAgMSwxMTQsMTgyLDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LAorICAgIDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsCisgICAgMTE2LDAsMTI0LDAsMTAwLDEsMTMxLDIsMTE0LDE2MCwxMDAsMiwxMjQsMSwxMDcsNiwKKyAgICAxMTQsNTgsMTE2LDEsMTI0LDEsMTMxLDEsMTI1LDEsMTI0LDEsMTA2LDIsMTAwLDIsCisgICAgMTMxLDEsMSwwLDExNiwwLDEyNCwwLDEwMCwzLDEzMSwyLDExNCw1OCwxMjQsMSwKKyAgICAxMDYsMywxMjQsMCwxMDYsNCwxMzEsMSwxLDAsMTIwLDEwMCwxMjQsMSw2OCwwLAorICAgIDkzLDkyLDEyNSwzLDExNiwwLDEyNCwwLDEyNCwzLDEzMSwyLDExNSw2NCwxMDAsNCwKKyAgICAxMDYsNSwxMjQsMCwxMDYsNiwxMjQsMywxMzEsMiwxMjUsNCwxMjEsMTQsMTE2LDcsCisgICAgMTI0LDIsMTI0LDQsMTMxLDIsMSwwLDg3LDAsMTEzLDY0LDQsMCwxMTYsOCwKKyAgICAxMDcsMTAsMTE0LDE1NCwxLDAsMTI1LDUsMSwwLDEyMiwyMCwxMjQsNSwxMDYsOSwKKyAgICAxMjQsNCwxMDcsMiwxMTQsMTM2LDExOSw2NCwxMzAsMCw4NywwLDg5LDAsMTAwLDUsCisgICAgMTAwLDUsMTI1LDUsMTI2LDUsODgsMCwxMTMsNjQsODgsMCwxMTMsNjQsODcsMCwKKyAgICAxMjQsMCw4MywwLDQxLDYsMTIyLDIzOCw3MCwxMDUsMTAzLDExNywxMTQsMTAxLDMyLDExMSwKKyAgICAxMTcsMTE2LDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsOTUsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsCisgICAgOTcsMzIsOTksOTcsMTA4LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwKKyAgICAzMiwxMTYsOTcsMTA3LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsCisgICAgMTExLDEwMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDczLDExNiwzMiwxMDUsMTE1LDMyLDExNCwKKyAgICAxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDk5LDExMSwxMTcsCisgICAgMTEyLDEwOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywxMTUsMTE1LDExNywxMDksMTA1LDExMCwxMDMsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDExNCwxMDEsMTAwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxMjcsMCwwLDAsMjUwLDEsNDIsMjE4LDcsCisgICAgOTUsOTUsOTcsMTA4LDEwOCw5NSw5NSwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNzgsNDEsCisgICAgMTAsMTE0LDQsMCwwLDAsMTE0LDEyNiwwLDAsMCwyMTgsNiwxMTQsMTAxLDEwOSwKKyAgICAxMTEsMTE4LDEwMSwyMTgsNiwxMDEsMTIwLDExNiwxMDEsMTEwLDEwMCwxMTQsMTg0LDAsMCwwLAorICAgIDExNCwzOCwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LAorICAgIDE3OCwwLDAsMCwxMTQsMTUsMCwwLDAsNDEsNiwxMTQsODMsMCwwLDAsCisgICAgMjE4LDgsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwxMTQsMTc5LDAsMCwwLDIxOCwKKyAgICAxLDEyMCw5MCw5LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw5MCwzLDEwMSwKKyAgICAxMjAsOTksMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMjE4LDE2LDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwKKyAgICAxMDUsMTE1LDExNiwyMjEsMywwLDAsMTE1LDMyLDAsMCwwLDAsMTAsMTAsMSwKKyAgICA4LDEsOCwxLDEwLDEsMTAsMSwxMiwxLDEwLDEsMTAsMSwxNCwxLAorICAgIDIsMSwxNCwxLDE2LDQsMTAsMSwyLDEsMjQsMSwxMTQsMTg5LDAsMCwKKyAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDE1MCwwLDAsMCwxMjQsMCwxMDYsMCwxMDAsCisgICAgMSwxMzEsMSwxMjUsMSwxMjQsMCwxMDYsMCwxMDAsMiwxMzEsMSwxMjUsMiwxMjQsCisgICAgMSwxMDAsMywxMDcsOSwxMTQsODQsMTI0LDIsMTAwLDMsMTA3LDksMTE0LDc4LDEyNCwKKyAgICAxLDEyNCwyLDEwNiwxLDEwNywzLDExNCw3OCwxMTYsMiwxMDYsMywxMDAsNCwxMjQsCisgICAgMSwxNTUsMiwxMDAsNSwxMjQsMiwxMDYsMSwxNTUsMiwxMDAsNiwxNTcsNSwxMTYsCisgICAgNCwxMDAsNywxMDAsOCwxNDEsMywxLDAsMTI0LDEsODMsMCwxMTAsNjIsMTI0LAorICAgIDIsMTAwLDMsMTA3LDksMTE0LDEwMCwxMjQsMiwxMDYsMSw4MywwLDExMCw0NiwxMTYsCisgICAgMiwxMDYsMywxMDAsOSwxMTYsNCwxMDAsNywxMDAsOCwxNDEsMywxLDAsMTI0LAorICAgIDAsMTAwLDEwLDI1LDAsMTI1LDEsMTAwLDExLDEyNCwwLDEwNyw3LDExNCwxNDYsMTI0LAorICAgIDEsMTA2LDUsMTAwLDEyLDEzMSwxLDEwMCwxMywyNSwwLDEyNSwxLDEyNCwxLDgzLAorICAgIDAsNDEsMTQsMTIyLDE2Nyw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExOSwKKyAgICAxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwKKyAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLAorICAgIDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsMzIsMTExLDExNCwzMiw5OSwKKyAgICAxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsNzgsCisgICAgMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLAorICAgIDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDExNSwzMiwxMTIsMTE0LAorICAgIDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTcsMTEwLAorICAgIDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDEzMCwwLDAsCisgICAgMCwxMTQsODksMCwwLDAsNzgsMTIyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw5NSw5NSwzMiwzMyw2MSwzMiw5NSw5NSwxMTUsMTEyLDEwMSw5OSw5NSw5NSwKKyAgICA0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDQwLDEyMiw0LDMyLDMzLDYxLDMyLDI1MCwKKyAgICAxLDQxLDIzMywzLDAsMCwwLDQxLDEsOTAsMTAsMTE1LDExNiw5Nyw5OSwxMDcsCisgICAgMTA4LDEwMSwxMTgsMTAxLDEwOCwxMjIsODksOTksOTcsMTEwLDM5LDExNiwzMiwxMTQsMTAxLDExNSwKKyAgICAxMTEsMTA4LDExOCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwzMiw5NSw5NSwxMTUsMTEyLDEwMSw5OSw5NSw5NSwzMiwxMTEsMTE0LDMyLDk1LDk1LAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw0NCwzMiwxMDIsOTcsMTA4LDEwOCwxMDUsCisgICAgMTEwLDEwMywzMiw5OCw5Nyw5OSwxMDcsMzIsMTExLDExMCwzMiw5NSw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSw5NSw5NSwzMiw5NywxMTAsMTAwLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LAorICAgIDExNCwxLDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsCisgICAgMTksMCwwLDAsNDEsNiwxMTQsMzAsMCwwLDAsMTE0LDExOSwwLDAsMCwKKyAgICAxMTQsMTY3LDAsMCwwLDExNCwxNjgsMCwwLDAsMTE0LDE2OSwwLDAsMCwxMTQsCisgICAgMTE4LDAsMCwwLDQxLDMsMjE4LDcsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwxMTQsCisgICAgMTYxLDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsOTksOTcsMTA4LDk5LDk1LAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwyNTIsMywwLDAsMTE1LAorICAgIDMwLDAsMCwwLDAsNywxMCwxLDEwLDEsOCwxLDE4LDEsMjIsMiwKKyAgICAxMCwxLDYsMSw4LDEsOCwyLDYsMiwxMCwxLDgsMSw4LDEsCisgICAgMTQsMSwxMTQsMTkzLDAsMCwwLDk5LDUsMCwwLDAsMCwwLDAsMCwKKyAgICA5LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDE3MCwwLDAsCisgICAgMCwxMjQsNCwxMDAsMSwxMDcsMiwxMTQsMTgsMTE2LDAsMTI0LDAsMTMxLDEsMTI1LAorICAgIDUsMTEwLDM2LDEyNCwxLDEwMCwyLDEwNyw5LDExNCwzMCwxMjQsMSwxMTAsMiwxMDUsCisgICAgMCwxMjUsNiwxMTYsMSwxMjQsNiwxMzEsMSwxMjUsNywxMTYsMCwxMjQsMCwxMjQsCisgICAgNywxMjQsNCwxMzEsMywxMjUsNSwxMjQsMywxMTUsMTU0LDEyNCw0LDEwMCwxLDEwNywKKyAgICAyLDExNCw4NiwxMTYsMCwxMjQsMCwxMDYsMiwxMDAsMywxMzEsMSwxMDAsMSwyNSwKKyAgICAwLDEzMSwxLDgzLDAsMTEzLDE2NiwxMjQsMCwxMTUsOTYsMTI0LDUsODMsMCwxMTMsCisgICAgMTY2LDExNiwzLDEyNCwwLDEzMSwxLDExNiwzLDEyNCwwLDEwNiwyLDEwMCwzLDEzMSwKKyAgICAxLDEwMCwxLDI1LDAsMTMxLDEsMjQsMCwxMjUsOCwxMTYsNCwxMDYsNSwxMjQsCisgICAgNSwxMDYsNiwxMDAsMiwxMTYsMywxMjQsNSwxMDYsNiwxMzEsMSwxMjQsOCwyNCwKKyAgICAwLDEzMywyLDI1LDAsMjUsMCw4MywwLDExMCwxMiwxMTYsNywxMjQsNSwxMjQsCisgICAgMywxMTYsMCwxMzEsMyw4MywwLDEwMCwyLDgzLDAsNDEsNCw5NywyMTUsMSwKKyAgICAwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLAorICAgIDk4LDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwKKyAgICAxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwKKyAgICAxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsCisgICAgMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsCisgICAgMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwzMiwKKyAgICA5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsCisgICAgMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LAorICAgIDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKKyAgICAzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLAorICAgIDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLAorICAgIDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LAorICAgIDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLAorICAgIDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LAorICAgIDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLAorICAgIDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsCisgICAgMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsCisgICAgMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LAorICAgIDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywKKyAgICAxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiwKKyAgICA1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTksMCwwLDAsNzgsMTE0LAorICAgIDExNywwLDAsMCw0MSw4LDExNCwxODIsMCwwLDAsMTE0LDE5MywwLDAsMCwKKyAgICAyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwxNTksMCwwLDAsCisgICAgMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsCisgICAgMTg5LDAsMCwwLDQxLDksMTE0LDE1LDAsMCwwLDExNCwxOTIsMCwwLDAsCisgICAgMjE4LDYsMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNCwxODcsMCwwLDAsMTE0LDE2MiwwLAorICAgIDAsMCwxMTQsODMsMCwwLDAsOTAsOCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LAorICAgIDk1LDExNCwxNjEsMCwwLDAsOTAsNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCwKKyAgICA5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwyMyw0LDAsMCwxMTUsMjYsCisgICAgMCwwLDAsMCwxMSw4LDEsMTAsMiwxNiwxLDgsMSwxMiwxLDQsCisgICAgMyw4LDEsMjAsMSw0LDEsNiw0LDI2LDMsMzIsMiwxMTQsMTk2LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDExNiwwLDEwNiwxLAorICAgIDEyNCwwLDEzMSwxLDEyNSwxLDEyNCwxLDEwMCwwLDEwNyw4LDExNCwzMCwxMTYsMiwKKyAgICAxMDAsMSwxMjQsMCwyMywwLDEzMSwxLDEzMCwxLDExNiwzLDEyNCwxLDEzMSwxLAorICAgIDgzLDAsNDEsMiw3OCwxMjIsMjUsMTEwLDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsCisgICAgMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsCisgICAgNDEsNCwxMTQsMTQyLDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDcwLDAsMCwKKyAgICAwLDExNCwxNDEsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDgyLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsNTgsNCwwLDAsMTE1LDgsMCwwLDAsMCwxLAorICAgIDEwLDEsOCwxLDEyLDEsMTE0LDE5NywwLDAsMCw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDI0NCwwLDAsMCwxMjQsMSw5NywwLDEyNCwwLDk3LDEsMTE2LDIsMTE2LAorICAgIDEsMTMxLDEsMTI1LDIsMTIwLDg2LDExNiwxLDEwNiwzLDEwNiw0LDEzMSwwLDY4LAorICAgIDAsOTMsNzIsOTIsMiwxMjUsMywxMjUsNCwxMTYsNSwxMjQsNCwxMjQsMiwxMzEsCisgICAgMiwxMTQsMjgsMTI0LDMsMTE2LDEsMTA2LDYsMTA3LDYsMTE0LDYyLDExNiw3LDEyNSwKKyAgICA1LDExMCwxOCwxMTYsMCwxMDYsOCwxMjQsMywxMzEsMSwxMTQsMjgsMTE2LDksMTI1LAorICAgIDUsMTEwLDIsMTEzLDI4LDExNiwxMCwxMjQsNCwxMjQsNSwxMzEsMiwxMjUsNiwxMTYsCisgICAgMTEsMTI0LDYsMTI0LDQsMTMxLDIsMSwwLDExMywyOCw4NywwLDExNiwxLDEwNiwKKyAgICAzLDExNiwxMiwyNSwwLDEyNSw3LDEyMCw1NCwxMDAsNSw2OCwwLDkzLDQ2LDEyNSwKKyAgICA4LDEyNCw4LDExNiwxLDEwNiwzLDEwNyw3LDExNCwxNDQsMTE2LDEzLDEyNCw4LDEzMSwKKyAgICAxLDEyNSw5LDExMCwxMCwxMTYsMSwxMDYsMywxMjQsOCwyNSwwLDEyNSw5LDExNiwKKyAgICAxNCwxMjQsNywxMjQsOCwxMjQsOSwxMzEsMywxLDAsMTEzLDEyMCw4NywwLDEyMSwKKyAgICAxMiwxMTYsMTMsMTAwLDIsMTMxLDEsMTI1LDEwLDg3LDAsMTEwLDI0LDQsMCwxMTYsCisgICAgMTUsMTA3LDEwLDExNCwyMDYsMSwwLDEsMCwxLDAsMTAwLDMsMTI1LDEwLDg5LAorICAgIDAsMTEwLDIsODgsMCwxMTYsMTQsMTI0LDcsMTAwLDIsMTI0LDEwLDEzMSwzLDEsCisgICAgMCwxMTYsMTMsMTAwLDQsMTMxLDEsMTI1LDExLDExNiwxNCwxMjQsNywxMDAsNCwxMjQsCisgICAgMTEsMTMxLDMsMSwwLDEwMCwzLDgzLDAsNDEsNiwxMjIsMjUwLDgzLDEwMSwxMTYsCisgICAgMTE3LDExMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LDEyMSwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwKKyAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExNiwxMDQsMTAxLDEwOSwxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDExNSwzMiwxMTUsMTIxLDExNSwzMiwKKyAgICAxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsCisgICAgMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5Nyw5OSw5OSwxMDEsMTE1LDExNSwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDk1LDEwNSwxMDksMTEyLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsCisgICAgMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLDk3LDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgNDQsMzIsMTE2LDEwNCwxMTEsMTE1LDEwMSwzMiwxMTYsMTE5LDExMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMDEsMTIwLDExMiwxMDgsCisgICAgMTA1LDk5LDEwNSwxMTYsMTA4LDEyMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE2NywwLDAsMCwxMTQsMjAsMCwwLAorICAgIDAsNzgsMTE0LDU1LDAsMCwwLDQxLDEsMTIyLDksOTUsMTE5LDk3LDExNCwxMTAsCisgICAgMTA1LDExMCwxMDMsMTE1LDQxLDE2LDExNCw0NiwwLDAsMCwxMTQsMTQsMCwwLDAsCisgICAgMTE0LDEzLDAsMCwwLDExNCw3OSwwLDAsMCwyMTgsNSwxMDUsMTE2LDEwMSwxMDksCisgICAgMTE1LDExNCwxNzEsMCwwLDAsMTE0LDY5LDAsMCwwLDExNCwxNDIsMCwwLDAsCisgICAgMTE0LDc1LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsCisgICAgMTMzLDAsMCwwLDExNCwxLDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMTE0LDcwLDAsMCwwLDQxLDEyLDIxOCwxMCwxMTUsMTIxLDExNSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTgsMTEsOTUsMTA1LDEwOSwxMTIsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTAsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLAorICAgIDExNCwxNSwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICA4MiwwLDAsMCw5MCwxMSwxMTUsMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTAsMTIsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsCisgICAgMTQsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsCisgICAgMTMsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwKKyAgICAxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsNiw5NSwKKyAgICAxMTUsMTAxLDExNiwxMTcsMTEyLDY1LDQsMCwwLDExNSw1MCwwLDAsMCwwLDksCisgICAgNCwxLDQsMyw4LDEsMjAsMSwxMCwxLDEwLDEsNiwxLDEwLDEsCisgICAgNiwyLDIsMSwxMCwxLDE0LDMsMTAsMSwxMCwxLDEwLDEsMTAsMiwKKyAgICAxMCwxLDE2LDMsMiwxLDEyLDEsMTQsMiwxMCwxLDEyLDMsOCwxLAorICAgIDExNCwyMDEsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNjYsMCwwLDAsMTE2LAorICAgIDAsMTI0LDAsMTI0LDEsMTMxLDIsMSwwLDExNiwxLDEwNiwyLDEwNiwzLDExNiwKKyAgICA0LDEzMSwxLDEsMCwxMTYsMSwxMDYsMiwxMDYsMywxMTYsNSwxMzEsMSwxLAorICAgIDAsMTAwLDEsMTAwLDIsMTA4LDYsMTI1LDIsMTI0LDIsOTcsNywxMjQsMiwxMDYsCisgICAgOCwxMTYsMSwxMDYsOSwxMTYsMTAsMjUsMCwxMzEsMSwxLDAsMTAwLDIsODMsCisgICAgMCw0MSwzLDEyMiw1MCw3MywxMTAsMTE1LDExNiw5NywxMDgsMTA4LDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDExNCwxOSwwLDAsMCw3OCw0MSwxMSwxMTQsCisgICAgMjAxLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxMDksCisgICAgMCwwLDAsMTE0LDE0MiwwLDAsMCwxMTQsMTUyLDAsMCwwLDIxOCwyNiw5NSwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDk1LDEwMSwxMjAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwxMTQsMTE1LDAsMCwwLDIxOCw4LAorICAgIDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDExNCw3OSwwLDAsMCwxMTQsMSwwLAorICAgIDAsMCw0MSwzLDExNCwxOTksMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMjAyLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDExNCwyMDMsMCwwLDAsMTEyLDQsMCwwLDExNSwxMiwwLDAsMCwKKyAgICAwLDIsMTAsMiwxMiwxLDEyLDMsOCwxLDQsMSwxMTQsMjAzLDAsMCwKKyAgICAwLDQxLDIsNzgsNzgsNDEsMSw3OCw0MSwyLDc4LDExNCwxOSwwLDAsMCwKKyAgICA0MSw1MCwxMTQsMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMiwwLDAsCisgICAgMCwxMTQsMTYsMCwwLDAsMTE0LDUxLDAsMCwwLDExNCwyOSwwLDAsMCwKKyAgICAxMTQsMzYsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwxOCwwLDAsMCwxMTQsCisgICAgNDEsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNTYsCisgICAgMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsNzQsMCwKKyAgICAwLDAsMTE0LDc3LDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsOTUsMCwwLAorICAgIDAsMTE0LDk2LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDc4LDAsMCwwLAorICAgIDIxOCw2LDExMSw5OCwxMDYsMTAxLDk5LDExNiw5MCw5LDk1LDgwLDc5LDgwLDg1LDc2LAorICAgIDY1LDg0LDY5LDExNCwxMjgsMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMTM2LDAsCisgICAgMCwwLDExNCw5MSwwLDAsMCwxMTQsODAsMCwwLDAsMTE0LDE0MCwwLDAsCisgICAgMCwxMTQsMTQxLDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsMTQyLDAsMCwwLAorICAgIDExNCwxNTIsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwKKyAgICAxNjUsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMTc1LDAsMCwwLDkwLDE1LAorICAgIDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDk1LDgwLDgyLDY5LDcwLDczLDg4LDExNCwKKyAgICAxNzcsMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsMTgxLDAsMCwwLDExNCwxODIsCisgICAgMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsMTkzLDAsMCwwLDExNCwxOTYsMCwKKyAgICAwLDAsMTE0LDE5NywwLDAsMCwxMTQsMjAxLDAsMCwwLDExNCwyMDMsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDIxOCw4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsCisgICAgMCwwLDAsMTE1LDk0LDAsMCwwLDQsMTcsNCwyLDgsOCw4LDcsCisgICAgNCwyLDQsMywxNiw0LDE0LDY4LDE0LDIxLDE0LDE5LDgsMTksOCwxOSwKKyAgICA4LDExLDE0LDgsOCwxMSw4LDEyLDgsMTYsOCwzNiwxNCwyNywxNCwxMDEsCisgICAgMTYsMjYsNiwzLDEwLDQ1LDE0LDYwLDgsMTcsOCwxNyw4LDI1LDgsMjksCisgICAgOCwyMyw4LDE2LDE0LDczLDE0LDc3LDE0LDEzLDgsOSw4LDksMTAsNDcsCisgICAgOCwyMCw0LDEsOCwyLDgsMjcsOCw2LDEwLDI1LDgsMzEsOCwyNywKKyAgICAxOCwzNSw4LDcsOCw0NywKIH07CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmggYi9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKaW5kZXggMjdkN2M4YS4uOTM1NzMzZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCisrKyBiL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaApAQCAtMSwyMzUwICsxLDIxOTggQEAKIC8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgKi8KIGNvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYl9leHRlcm5hbFtdID0gewotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDI0NCwyLDAsMCwxMDAsMCwwLDkwLDAsMCwKLSAgICAxMDAsOTYsMCw5MCwxLDAsMTAwLDk3LDAsOTAsMiwwLDEwMSwyLDAsMTAxLAotICAgIDEsMCwyMyw5MCwzLDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDUsMCwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDEwLDAsMTAwLDExLDAsCi0gICAgMTMyLDAsMCw5MCw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwKLSAgICA4LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCw5LDAsMTAwLDE2LAotICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxOCwwLDEwMCwxOSwwLAotICAgIDEzMiwwLDAsOTAsMTEsMCwxMDAsMjAsMCwxMDAsMjEsMCwxMzIsMCwwLDkwLAotICAgIDEyLDAsMTAwLDIyLDAsMTAwLDIzLDAsMTAwLDI0LDAsMTMyLDEsMCw5MCwxMywKLSAgICAwLDEwMSwxNCwwLDEwMSwxMywwLDEwNiwxNSwwLDEzMSwxLDAsOTAsMTYsMCwKLSAgICAxMDAsMjUsMCwxMDYsMTcsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzEsMiwwLDEwMCwKLSAgICAyOCwwLDIzLDkwLDE4LDAsMTAxLDE5LDAsMTA2LDIwLDAsMTAxLDE4LDAsMTAwLAotICAgIDI3LDAsMTMxLDIsMCw5MCwyMSwwLDEwMCwyOSwwLDkwLDIyLDAsMTAwLDMwLAotICAgIDAsOTAsMjMsMCwxMDAsMzEsMCwxMDMsMSwwLDkwLDI0LDAsMTAwLDMyLDAsCi0gICAgMTAzLDEsMCw5MCwyNSwwLDEwMSwyNSwwLDQsOTAsMjYsMCw5MCwyNywwLAotICAgIDEwMCwzMywwLDEwMCwzNCwwLDEwMCwzMywwLDEwMCwzNSwwLDEwMCwzNiwwLDEzMiwKLSAgICAxLDEsOTAsMjgsMCwxMDAsMzcsMCwxMDAsMzgsMCwxMzIsMCwwLDkwLDI5LAotICAgIDAsMTAwLDM5LDAsMTAwLDQwLDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw0MSwwLAotICAgIDEwMCw0MiwwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNDMsMCwxMDAsNDQsMCwxMzIsCi0gICAgMCwwLDkwLDMyLDAsMTAwLDQ1LDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTAwLDQ4LAotICAgIDAsMTMyLDAsMSw5MCwzMywwLDEwMCw0OSwwLDEwMCw1MCwwLDEzMiwwLDAsCi0gICAgOTAsMzQsMCwxMDAsNTEsMCwxMDAsNTIsMCwxMzIsMCwwLDkwLDM1LDAsMTAwLAotICAgIDMzLDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDUzLDAsMTAwLDU0LDAsMTMyLDMsCi0gICAgMCw5MCwzNiwwLDEwMCwzMywwLDEwMCwzMywwLDEwMCwzMywwLDEwMCw1NSwwLAotICAgIDEwMCw1NiwwLDEzMiwzLDAsOTAsMzcsMCwxMDAsNTcsMCwxMDAsNTcsMCwxMDAsCi0gICAgNTgsMCwxMDAsNTksMCwxMzIsMiwwLDkwLDM4LDAsMTAwLDYwLDAsMTAwLDYxLAotICAgIDAsMTMyLDAsMCw5MCwzOSwwLDEwMSw0MCwwLDEzMSwwLDAsOTAsNDEsMCwKLSAgICAxMDAsMzMsMCwxMDAsNjIsMCwxMDAsMzMsMCwxMDAsNjMsMCwxMDEsNDEsMCwxMDAsCi0gICAgNjQsMCwxMDAsNjUsMCwxMzIsMSwyLDkwLDQyLDAsNzEsMTAwLDY2LDAsMTAwLAotICAgIDY3LDAsMTMyLDAsMCwxMDAsNjcsMCwxMzEsMiwwLDkwLDQzLDAsNzEsMTAwLAotICAgIDY4LDAsMTAwLDY5LDAsMTMyLDAsMCwxMDAsNjksMCwxMzEsMiwwLDkwLDQ0LAotICAgIDAsNzEsMTAwLDcwLDAsMTAwLDcxLDAsMTMyLDAsMCwxMDAsNzEsMCwxMDEsNDQsCi0gICAgMCwxMzEsMywwLDkwLDQ1LDAsNzEsMTAwLDcyLDAsMTAwLDczLDAsMTMyLDAsCi0gICAgMCwxMDAsNzMsMCwxMzEsMiwwLDkwLDQ2LDAsNzEsMTAwLDc0LDAsMTAwLDc1LAotICAgIDAsMTMyLDAsMCwxMDAsNzUsMCwxMDEsNDYsMCwxMDEsNDUsMCwxMzEsNCwwLAotICAgIDkwLDQ3LDAsNzEsMTAwLDc2LDAsMTAwLDc3LDAsMTMyLDAsMCwxMDAsNzcsMCwKLSAgICAxMDEsNDYsMCwxMDEsNDQsMCwxMzEsNCwwLDkwLDQ4LDAsMTAzLDAsMCw5MCwKLSAgICA0OSwwLDcxLDEwMCw3OCwwLDEwMCw3OSwwLDEzMiwwLDAsMTAwLDc5LDAsMTAxLAotICAgIDQ2LDAsMTAxLDQ0LDAsMTMxLDQsMCw5MCw1MCwwLDcxLDEwMCw4MCwwLDEwMCwKLSAgICA4MSwwLDEzMiwwLDAsMTAwLDgxLDAsMTMxLDIsMCw5MCw1MSwwLDcxLDEwMCwKLSAgICA4MiwwLDEwMCw4MywwLDEzMiwwLDAsMTAwLDgzLDAsMTMxLDIsMCw5MCw1MiwKLSAgICAwLDcxLDEwMCw4NCwwLDEwMCw4NSwwLDEzMiwwLDAsMTAwLDg1LDAsMTMxLDIsCi0gICAgMCw5MCw1MywwLDcxLDEwMCw4NiwwLDEwMCw4NywwLDEzMiwwLDAsMTAwLDg3LAotICAgIDAsMTMxLDIsMCw5MCw1NCwwLDEwMCwzMywwLDEwMCw4OCwwLDEwMCw4OSwwLAotICAgIDEzMiwxLDAsOTAsNTUsMCwxMDAsOTAsMCwxMDAsOTEsMCwxMzIsMCwwLDkwLAotICAgIDU2LDAsMTAwLDkyLDAsMTAwLDkzLDAsMTMyLDAsMCw5MCw1NywwLDEwMCw5NCwKLSAgICAwLDEwMCw5NSwwLDEzMiwwLDAsOTAsNTgsMCwxMDAsMzMsMCw4Myw0MSw5OCwKLSAgICA5Nyw5NCwxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwKLSAgICA0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCwKLSAgICA4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LAotICAgIDc5LDg0LDMyLDEwOSwxMDEsOTcsMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsCi0gICAgMTA1LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKLSAgICAzMywzMiw3MywxMTYsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLAotICAgIDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDEwNSwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsCi0gICAgMTE2LDExNCw5NywxMTIsMTEyLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsCi0gICAgMTA0LDExMSwxMTAsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDQ2LDMyLDY1LDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLAotICAgIDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsCi0gICAgMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDk5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LAotICAgIDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwKLSAgICAxMDEsMTE0LDMyLDExNiwxMTEsMTAsMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsCi0gICAgMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsCi0gICAgMTA1LDk5LDQ1LDEwMiw5Nyw5OSwxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDYsMTAsMTAsMjE4LDMsMTE5LDEwNSwxMTAsMjE4LDYsOTksMTIxLDEwMywxMTksMTA1LDExMCwKLSAgICAyMTgsNiwxMDAsOTcsMTE0LDExOSwxMDUsMTEwLDk5LDAsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsODgsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTE2LDMsMCwxMzEsMSwKLSAgICAwLDExNCw3MiwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDExNiw0LDAsCi0gICAgMTMxLDEsMCwxMTQsNDUsMCwxMDAsMSwwLDEzNywwLDAsMTEwLDYsMCwxMDAsCi0gICAgMiwwLDEzNywwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwzLDAsMTAwLDQsCi0gICAgMCwxMzQsMCwwLDEyNSwwLDAsMTEwLDEyLDAsMTAwLDUsMCwxMDAsNCwwLAotICAgIDEzMiwwLDAsMTI1LDAsMCwxMjQsMCwwLDgzLDQxLDYsNzgsOTAsMTIsODAsCi0gICAgODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsMTE1LDEyLDAsMCwwLAotICAgIDgwLDg5LDg0LDcyLDc5LDc4LDY3LDY1LDgzLDY5LDc5LDc1LDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTksMCwwLAotICAgIDAsMTE1LDEzLDAsMCwwLDEzNiwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNywKLSAgICA2LDAsODMsNDEsMSwxMjIsNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMDIsCi0gICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsCi0gICAgMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwxMTAsCi0gICAgMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSw0Niw0MSwyLDIxOCwzLAotICAgIDk1LDExMSwxMTUsOTAsNywxMDEsMTEwLDExOCwxMDUsMTE0LDExMSwxMTAsMTY5LDAsNDEsMSwKLSAgICAyMTgsMywxMDcsMTAxLDEyMSwxMTQsNCwwLDAsMCwyNTAsMzgsNjAsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKLSAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsCi0gICAgMTA4LDYyLDIxOCwxMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzNywKLSAgICAwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDM3LDk1LDEwOSw5NywxMDcsCi0gICAgMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDQ2LDYwLDEwOCwxMTEsCi0gICAgOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAotICAgIDEwMSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDgzLDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsCi0gICAgMiwxMjIsNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSwKLSAgICA5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSw0Niw3MCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsNywwLDAsMCw0MSwwLDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDIsNDEsNSwyMTgsMywxMTUsMTIxLDExNSwyMTgsOCwxMTIsMTA4LDk3LDExNiwxMDIsCi0gICAgMTExLDExNCwxMDksMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwKLSAgICAyNyw5NSw2Nyw2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3MywKLSAgICA4Niw2OSw5NSw4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4MywyMTgsMzUsOTUsNjcsCi0gICAgNjUsODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsCi0gICAgODAsNzYsNjUsODQsNzAsNzksODIsNzcsODMsOTUsODMsODQsODIsOTUsNzUsNjksCi0gICAgODksNDEsMSwxMTQsNywwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwKLSAgICA1LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwxMDksOTcsMTA3LDEwMSwKLSAgICA5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzMCwwLDAsMCwxMTUsCi0gICAgMTQsMCwwLDAsMCwxLDE4LDEsMTgsMSw5LDIsNiwyLDIxLDQsCi0gICAgMTIsMywxMTQsMTMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwwLAotICAgIDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCw2NCwxMDYsMSwKLSAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMzEsMiwwLDgzLDQxLDQsMTIyLDQyLDY3LAotICAgIDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsCi0gICAgMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwKLSAgICAxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMDgsMywwLDAsMCwyNTUsMTI3LAotICAgIDI1NSwxMjcsMywwLDIzMyw0LDAsMCwwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsCi0gICAgMTAxLDQxLDIsMjE4LDMsMTA1LDExMCwxMTYsMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LAotICAgIDEwMSwxMTUsNDEsMSwyMTgsMSwxMjAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0NywKLSAgICAwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDE5LDAsMCwwLDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsCi0gICAgMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwyLDEyMiw0Nyw2NywxMTEsMTEwLAotICAgIDExOCwxMDEsMTE0LDExNiwzMiw1MiwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwKLSAgICAxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCw0NiwxMTQsMTUsMCwwLAotICAgIDAsNDEsMiwxMTQsMTYsMCwwLDAsMjE4LDEwLDEwMiwxMTQsMTExLDEwOSw5NSw5OCwKLSAgICAxMjEsMTE2LDEwMSwxMTUsNDEsMSw5MCw5LDEwNSwxMTAsMTE2LDk1LDk4LDEyMSwxMTYsMTAxLAotICAgIDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsNyw5NSwxMTQsOTUsMTA4LDExMSwxMTAsMTAzLDUyLDAsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMiwxMTQsMjEsMCwwLDAsOTksMCwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsMywwLDAsMCw3MSwwLDAsMCwxMTUsMjYsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsCi0gICAgMCwwLDEyNCwwLDAsNjgsMTMxLDEsMCwxMzEsMSwwLDgzLDQxLDMsMTIyLAotICAgIDMxLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDYsMTExLDEwNSwxMTAsNDAsNDEsNDYsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCi0gICAgMCw4MywwLDAsMCwxMTUsMzcsMCwwLDAsMTAzLDAsMCwxMjQsMCwwLAotICAgIDkzLDI3LDAsMTI1LDEsMCwxMjQsMSwwLDExNCw2LDAsMTI0LDEsMCwxMDYsCi0gICAgMCwwLDExNiwxLDAsMTMxLDEsMCwxNDUsMiwwLDExMyw2LDAsODMsMTE0LAotICAgIDQsMCwwLDAsNDEsMiwyMTgsNiwxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwKLSAgICAyLDIxOCwyLDQ2LDQ4LDIxOCw0LDExMiw5NywxMTQsMTE2LDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwKLSAgICAxMTYsOTksMTExLDEwOSwxMTIsNjIsNTksMCwwLDAsMTE1LDIsMCwwLDAsOSwKLSAgICAxLDEyMiwzMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LAotICAgIDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiwKLSAgICA2Miw0MSwyLDIxOCw4LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwKLSAgICAxMTEsMTA1LDExMCw0MSwxLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwKLSAgICAxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw1NywwLDAsMCwKLSAgICAxMTUsNCwwLDAsMCwwLDIsMTUsMSwxMTQsMzAsMCwwLDAsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTM0LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwKLSAgICAwLDEwMCwxLDAsMTA3LDIsMCwxMTQsNTIsMCwxMjQsMCwwLDEwNiwyLDAsCi0gICAgMTE2LDMsMCwxMzEsMSwwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLDAsMTI1LAotICAgIDMsMCwxMjQsMSwwLDEyNCwzLDAsMTAyLDIsMCw4MywxMjAsNjksMCwxMTYsCi0gICAgNCwwLDEyNCwwLDAsMTMxLDEsMCw2OCw5Myw1NSwwLDEyNSw0LDAsMTI0LAotICAgIDQsMCwxMTYsMSwwLDEwNyw2LDAsMTE0LDY1LDAsMTI0LDAsMCwxMDYsNSwKLSAgICAwLDEyNCw0LDAsMTAwLDIsMCwxMDAsMSwwLDEzMSwxLDEsOTIsMiwwLAotICAgIDEyNSwxLDAsMTI1LDMsMCwxMjQsMSwwLDEyNCwzLDAsMTAyLDIsMCw4MywKLSAgICAxMTMsNjUsMCw4NywxMDAsMywwLDEyNCwwLDAsMTAyLDIsMCw4Myw0MSw0LAotICAgIDEyMiwzMiw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTE1LDExMiwxMDgsMTA1LDExNiw0MCwKLSAgICA0MSw0NiwyMzMsMSwwLDAsMCw5MCw4LDEwOSw5NywxMjAsMTE1LDExMiwxMDgsMTA1LAotICAgIDExNiwyMTgsMCw0MSw2LDIxOCwzLDEwOCwxMDEsMTEwLDExNCwyMywwLDAsMCwyMTgsCi0gICAgMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE0LDI3LDAsMCwwLAotICAgIDIxOCw4LDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsMjE4LDYsMTE0LDExNSwxMTIsMTA4LAotICAgIDEwNSwxMTYsNDEsNSwyMTgsNCwxMTIsOTcsMTE2LDEwNCw5MCw1LDEwMiwxMTQsMTExLDExMCwKLSAgICAxMTYsMjE4LDEsOTUsMjE4LDQsMTE2LDk3LDEwNSwxMDgsMTE0LDE4LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDYzLDAsMCwwLDExNSwKLSAgICAxNiwwLDAsMCwwLDIsMTgsMSwyNCwxLDEwLDEsMTksMSwxMiwxLAotICAgIDI3LDEsMTQsMSwxMTQsNDAsMCwwLDAsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCw4MywKLSAgICA0MSwxLDEyMiwxMjYsODMsMTE2LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAotICAgIDEwNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3Nyw5NywxMDAsMTAxLDMyLDk3LDMyLDExNSwKLSAgICAxMDEsMTEyLDk3LDExNCw5NywxMTYsMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiwxMTYsMTExLDMyLDEwOSw5NywxMDcsMTAxLDMyLDEwNSwxMTYsMzIsMTAxLDk3LDExNSwxMDUsCi0gICAgMTAxLDExNCwzMiwxMTYsMTExLDMyLDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LAotICAgIDExMCwzMiwxMDEsMTIwLDExMiwxMDEsMTE0LDEwNSwxMDksMTAxLDExMCwxMTYsMTE1LDEwLDMyLDMyLAotICAgIDMyLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMTUsMTE2LAotICAgIDk3LDExNiwzMiwxMTQsMTAxLDExNSwxMTcsMTA4LDExNiwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsNDEsMiwxMTQsMywwLDAsMCw5MCw0LDExNSwxMTYsOTcsMTE2LDQxLAotICAgIDEsMTE0LDM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDIxOCwxMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LAotICAgIDExNiw3NSwwLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTE0LDQxLDAsMCwKLSAgICAwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw1OCwwLDAsMCwxMjEsMTYsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwyMiwwLDQsMTE2LAotICAgIDEsMCwxMDcsMTAsMCwxMTQsNDAsMCwxLDEsMSwxMDAsMSwwLDgzLDg5LAotICAgIDExMCwxLDAsODgsMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsNjQsMTI0LDEsCi0gICAgMCwxMDcsMiwwLDgzLDQxLDMsMTIyLDQ5LDg0LDEwMSwxMTUsMTE2LDMyLDExOSwxMDQsCi0gICAgMTAxLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTAxLDMyLDExNiwxMjEsMTEyLDEwMSw0Niw3MCwxMDUsMCwyNDAsMCwwLAotICAgIDQxLDMsMTE0LDQxLDAsMCwwLDIxOCw3LDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwKLSAgICAyMTgsNywxMTUsMTE2LDk1LDEwOSwxMTEsMTAwLDEwMSw0MSwzLDExNCwzNywwLDAsMCwKLSAgICAyMTgsNCwxMDksMTExLDEwMCwxMDEsOTAsOSwxMTUsMTE2LDk3LDExNiw5NSwxMDUsMTEwLDEwMiwKLSAgICAxMTEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDE4LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LAotICAgIDExNiwxMjEsMTEyLDEwMSw4NSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwyLDMsCi0gICAgMSwxNiwxLDEzLDEsOSwxLDExNCw0NSwwLDAsMCw5OSwxLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwyNDgsMSwwLDAsMTAwLDAsOTAsMCwxMDAsOTEsCisgICAgOTAsMSwxMDAsOTIsOTAsMiwxMDEsMiwxMDEsMSwyMywwLDkwLDMsMTAwLDQsCisgICAgMTAwLDUsMTMyLDAsOTAsNCwxMDAsNiwxMDAsNywxMzIsMCw5MCw1LDEwMCw4LAorICAgIDEwMCw5LDEzMiwwLDkwLDYsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw3LDEwMCwxMiwKKyAgICAxMDAsMTMsMTMyLDAsOTAsOCwxMDAsMTQsMTAwLDE1LDEzMiwwLDkwLDksMTAwLDE2LAorICAgIDEwMCwxNywxMzIsMCw5MCwxMCwxMDAsMTgsMTAwLDE5LDEzMiwwLDkwLDExLDEwMCwyMCwKKyAgICAxMDAsMjEsMTMyLDAsOTAsMTIsMTAwLDkzLDEwMCwyMywxMDAsMjQsMTMyLDEsOTAsMTMsCisgICAgMTAxLDE0LDEwMSwxMywxMDYsMTUsMTMxLDEsOTAsMTYsMTAwLDI1LDEwNiwxNywxMDAsMjYsCisgICAgMTAwLDI3LDEzMSwyLDEwMCwyOCwyMywwLDkwLDE4LDEwMSwxOSwxMDYsMjAsMTAxLDE4LAorICAgIDEwMCwyNywxMzEsMiw5MCwyMSwxMDAsMjksOTAsMjIsMTAwLDMwLDkwLDIzLDEwMCwzMSwKKyAgICAxMDMsMSw5MCwyNCwxMDAsMzIsMTAzLDEsOTAsMjUsMTAxLDI1LDQsMCw5MCwyNiwKKyAgICA5MCwyNywxMDAsOTQsMTAwLDMzLDEwMCwzNCwxNTYsMSwxMDAsMzUsMTAwLDM2LDEzMiwzLAorICAgIDkwLDI4LDEwMCwzNywxMDAsMzgsMTMyLDAsOTAsMjksMTAwLDM5LDEwMCw0MCwxMzIsMCwKKyAgICA5MCwzMCwxMDAsNDEsMTAwLDQyLDEzMiwwLDkwLDMxLDEwMCw0MywxMDAsNDQsMTMyLDAsCisgICAgOTAsMzIsMTAwLDQ1LDEwMCw0NiwxMzIsMCw5MCwzMywxMDAsNDcsMTAwLDQ4LDEzMiwwLAorICAgIDkwLDM0LDEwMCw5NSwxMDAsNDksMTAwLDUwLDEzMiwxLDkwLDM1LDEwMCw5NiwxMDAsNTEsCisgICAgMTAwLDUyLDEzMiwxLDkwLDM2LDEwMCw5NywxMDAsNTQsMTAwLDU1LDEzMiwxLDkwLDM3LAorICAgIDEwMCw1NiwxMDAsNTcsMTMyLDAsOTAsMzgsMTAxLDM5LDEzMSwwLDkwLDQwLDEwMCw5OCwKKyAgICAxMDAsMzMsMTAxLDQwLDEwMCw1OCwxNTYsMiwxMDAsNTksMTAwLDYwLDEzMiwzLDkwLDQxLAorICAgIDcxLDAsMTAwLDYxLDEwMCw2MiwxMzIsMCwxMDAsNjIsMTMxLDIsOTAsNDIsNzEsMCwKKyAgICAxMDAsNjMsMTAwLDY0LDEzMiwwLDEwMCw2NCwxMzEsMiw5MCw0Myw3MSwwLDEwMCw2NSwKKyAgICAxMDAsNjYsMTMyLDAsMTAwLDY2LDEwMSw0MywxMzEsMyw5MCw0NCw3MSwwLDEwMCw2NywKKyAgICAxMDAsNjgsMTMyLDAsMTAwLDY4LDEzMSwyLDkwLDQ1LDcxLDAsMTAwLDY5LDEwMCw3MCwKKyAgICAxMzIsMCwxMDAsNzAsMTAxLDQ1LDEwMSw0NCwxMzEsNCw5MCw0Niw3MSwwLDEwMCw3MSwKKyAgICAxMDAsNzIsMTMyLDAsMTAwLDcyLDEwMSw0NSwxMDEsNDMsMTMxLDQsOTAsNDcsMTAzLDAsCisgICAgOTAsNDgsNzEsMCwxMDAsNzMsMTAwLDc0LDEzMiwwLDEwMCw3NCwxMDEsNDUsMTAxLDQzLAorICAgIDEzMSw0LDkwLDQ5LDcxLDAsMTAwLDc1LDEwMCw3NiwxMzIsMCwxMDAsNzYsMTMxLDIsCisgICAgOTAsNTAsNzEsMCwxMDAsNzcsMTAwLDc4LDEzMiwwLDEwMCw3OCwxMzEsMiw5MCw1MSwKKyAgICA3MSwwLDEwMCw3OSwxMDAsODAsMTMyLDAsMTAwLDgwLDEzMSwyLDkwLDUyLDcxLDAsCisgICAgMTAwLDgxLDEwMCw4MiwxMzIsMCwxMDAsODIsMTMxLDIsOTAsNTMsMTAwLDk5LDEwMCw4MywKKyAgICAxMDAsODQsMTMyLDEsOTAsNTQsMTAwLDg1LDEwMCw4NiwxMzIsMCw5MCw1NSwxMDAsODcsCisgICAgMTAwLDg4LDEzMiwwLDkwLDU2LDEwMCw4OSwxMDAsOTAsMTMyLDAsOTAsNTcsMTAwLDMzLAorICAgIDgzLDAsNDEsMTAwLDk3LDk0LDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDQ2LDEwLDEwLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAorICAgIDEwNSwxMTUsMzIsNzgsNzksODQsMzIsMTA5LDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsCisgICAgOTgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTAwLDMzLDMyLDczLDExNiwzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsCisgICAgMTEwLDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsCisgICAgMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsCisgICAgMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LAorICAgIDMyLDEwNSwxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwKKyAgICAxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LAorICAgIDExMCwxMDAsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLAorICAgIDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsCisgICAgNzksMTEwLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsMTE3LDk4LDEwOCwxMDUsOTksNDUsMTAyLDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsCisgICAgMTE0LDExNSwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwyMTgsMywxMTksMTA1LDExMCwyMTgsNiw5OSwxMjEsCisgICAgMTAzLDExOSwxMDUsMTEwLDIxOCw2LDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwzLDAsMCwKKyAgICAwLDExNSw2MCwwLDAsMCwxMTYsMCwxMDYsMSwxMDYsMiwxMTYsMywxMzEsMSwKKyAgICAxMTQsNDgsMTE2LDAsMTA2LDEsMTA2LDIsMTE2LDQsMTMxLDEsMTE0LDMwLDEwMCwxLAorICAgIDEzNywwLDExMCw0LDEwMCwyLDEzNywwLDEzNSwwLDEwMiwxLDEwMCwzLDEwMCw0LAorICAgIDEzMiw4LDEyNSwwLDExMCw4LDEwMCw1LDEwMCw0LDEzMiwwLDEyNSwwLDEyNCwwLAorICAgIDgzLDAsNDEsNiw3OCw5MCwxMiw4MCw4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4MywKKyAgICA2OSw3OSw3NSwxMTUsMTIsMCwwLDAsODAsODksODQsNzIsNzksNzgsNjcsNjUsCisgICAgODMsNjksNzksNzUsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwxOSwwLDAsMCwxMTUsMTAsMCwwLDAsMTM2LDAsCisgICAgMTE2LDAsMTA2LDEsMTA3LDYsODMsMCw0MSwxLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwKKyAgICAzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywKKyAgICAxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LAorICAgIDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLAorICAgIDQ2LDQxLDIsMjE4LDMsOTUsMTExLDExNSw5MCw3LDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLAorICAgIDExMCwxNjksMCw0MSwxLDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDI1MCwKKyAgICAzOCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsMTIwLAorICAgIDExNiwxMDEsMTE0LDExMCw5NywxMDgsNjIsMjE4LDExLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSwKKyAgICA5OSw5NywxMTUsMTAxLDM3LDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsCisgICAgMzcsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwKKyAgICAxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTA4LDk3LAorICAgIDEyMCw5NSw5OSw5NywxMTUsMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsODMsMCwwLDAsMTE1LDQsMCwwLDAsCisgICAgMTAwLDEsODMsMCw0MSwyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LAorICAgIDEwMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LAorICAgIDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDcwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCw3LDAsMCwwLDQxLDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMiw0MSw1LDIxOCwzLDExNSwxMjEsMTE1LDIxOCw4LAorICAgIDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwKKyAgICAxMTksMTA1LDExNiwxMDQsMjE4LDI3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LAorICAgIDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LAorICAgIDgzLDIxOCwzNSw5NSw2Nyw2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3MywKKyAgICA4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4Myw5NSw4MywKKyAgICA4NCw4Miw5NSw3NSw2OSw4OSw0MSwxLDExNCw3LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDQxLDEsMTE0LDUsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LAorICAgIDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLAorICAgIDMwLDAsMCwwLDExNSwxNCwwLDAsMCwwLDEsMTIsMSwxMiwxLDYsCisgICAgMiw0LDIsMTQsNCw4LDMsMTE0LDEzLDAsMCwwLDk5LDEsMCwwLAogICAgIDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwKLSAgICAyLDAsODMsNDEsMiwxMjIsMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwKLSAgICAxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLDEyOCwwLDAsNDEsMSwxMTQsNDUsMCwKLSAgICAwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDk0LDAsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiwxMTQsNDYsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsCi0gICAgMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzEsMCwwLDAsCi0gICAgMTI0LDAsMCwxMTUsMTgsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsCi0gICAgMCwwLDExNiwyLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsODMsNDEsCi0gICAgMiwxMjIsMzAsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsCi0gICAgNDYsMTA1LDAsNjQsMCwwLDQxLDMsMTE0LDMsMCwwLDAsMjE4LDYsMTAzLAotICAgIDEwMSwxMTYsOTksMTE5LDEwMCwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsOTksMCwwLAotICAgIDAsMTE1LDYsMCwwLDAsMCwyLDYsMSwxMiwxLDExNCw0OCwwLDAsCi0gICAgMCwxMDUsMTgyLDEsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LAotICAgIDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwxOTMsMCwwLDAsCi0gICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTMxLDIsMCwxMjUsMywwLDExNiwyLDAsMTA2LDMsMCwxMjQsMywKLSAgICAwLDExNiwyLDAsMTA2LDQsMCwxMTYsMiwwLDEwNiw1LDAsNjYsMTE2LDIsCi0gICAgMCwxMDYsNiwwLDY2LDEyNCwyLDAsMTAwLDIsMCw2NCwxMzEsMywwLDEyNSwKLSAgICA0LDAsMTIxLDYxLDAsMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDMsCi0gICAgMCwxMzEsMiwwLDE0MywyMCwwLDEyNSw1LDAsMTI0LDUsMCwxMDYsOSwwLAotICAgIDEyNCwxLDAsMTMxLDEsMCwxLDg3LDEwMCw0LDAsODEsODIsODgsMTE2LDIsCi0gICAgMCwxMDYsMTAsMCwxMjQsMywwLDEyNCwwLDAsMTMxLDIsMCwxLDg3LDExMCwKLSAgICA1OSwwLDQsMTE2LDExLDAsMTA3LDEwLDAsMTE0LDE4OCwwLDEsMSwxLDEyMSwKLSAgICAxNywwLDExNiwyLDAsMTA2LDEyLDAsMTI0LDMsMCwxMzEsMSwwLDEsODcsCi0gICAgMTEwLDE4LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsMTgwLDAsMSwxLDEsCi0gICAgODksMTEwLDEsMCw4OCwxMzAsMCwwLDg5LDExMCwxLDAsODgsMTAwLDQsMCwKLSAgICA4Myw0MSw1LDEyMiwxNjIsNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsCi0gICAgMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsCi0gICAgMTE2LDEwMSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsOTcsMTE2LDExMSwxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLAotICAgIDMyLDMyLDY2LDEwMSwzMiwxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwKLSAgICAxMDUsMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCwKLSAgICA5OSwxMTcsMTE0LDExNCwxMDEsMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsCi0gICAgMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLAotICAgIDExNCw5NywxMTQsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEwMSwxMDAsNDYsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsCi0gICAgMSwwLDAsOTAsMiwxMTksOTgsNzgsNDEsMTMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LAotICAgIDk3LDExNiwyMTgsMiwxMDUsMTAwLDExNCwzLDAsMCwwLDkwLDQsMTExLDExMiwxMDEsCi0gICAgMTEwLDkwLDYsNzksOTUsNjksODgsNjcsNzYsOTAsNyw3OSw5NSw2Nyw4Miw2OSwKLSAgICA2NSw4NCw5MCw4LDc5LDk1LDg3LDgyLDc5LDc4LDc2LDg5LDIxOCwzLDk1LDEwNSwKLSAgICAxMTEsMjE4LDYsNzAsMTA1LDEwOCwxMDEsNzMsNzksMjE4LDUsMTE5LDExNCwxMDUsMTE2LDEwMSwKLSAgICAyMTgsNywxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLDExNCw0MiwwLDAsMCw5MCw2LAotICAgIDExNywxMTAsMTA4LDEwNSwxMTAsMTA3LDQxLDYsMTE0LDM3LDAsMCwwLDIxOCw0LDEwMCwKLSAgICA5NywxMTYsOTcsMTE0LDQ0LDAsMCwwLDkwLDgsMTEyLDk3LDExNiwxMDQsOTUsMTE2LAotICAgIDEwOSwxMTIsOTAsMiwxMDIsMTAwLDIxOCw0LDEwMiwxMDUsMTA4LDEwMSwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsOTUsMTE5LDExNCwKLSAgICAxMDUsMTE2LDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTA2LDAsMCwwLDExNSwyNiwKLSAgICAwLDAsMCwwLDUsMjQsMSw5LDEsMzMsMSwzLDMsMjEsMSwyMCwKLSAgICAxLDIwLDEsMTMsMSwzLDEsMTcsMSwxMywxLDUsMSwxMTQsNTcsMCwKLSAgICAwLDAsMTA1LDIzLDEzLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTUsMCwwLAotICAgIDAsMTE1LDIsMCwwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDk1LDk1LDEyMiw0LDExMSwxMTIsMTE2LDQ1LDEyMiwzLDQ2LDExMiwxMjEsCi0gICAgMTIyLDQsNDYsMTEyLDEyMSw5OSw3OCwyMTgsMTIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLAorICAgIDAsMTE1LDIwLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEwMCwxLDY0LDAsCisgICAgMTA2LDEsMTAwLDIsMTAwLDMsMTMxLDIsODMsMCw0MSw0LDEyMiw0Miw2NywxMTEsCisgICAgMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw1MSw1MCw0NSw5OCwxMDUsMTE2LDMyLDEwNSwKKyAgICAxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCwzMiwxMTYsMTExLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLAorICAgIDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsNDYsMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsCisgICAgMTI3LDMsMCwyMzMsNCwwLDAsMCwyMTgsNiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSwKKyAgICA0MSwyLDIxOCwzLDEwNSwxMTAsMTE2LDIxOCw4LDExNiwxMTEsOTUsOTgsMTIxLDExNiwxMDEsCisgICAgMTE1LDQxLDEsMjE4LDEsMTIwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCw3LDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDcsMCwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCwxOSwwLDAsMCw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMCwxMDAsMSwKKyAgICAxMzEsMiw4MywwLDQxLDIsMTIyLDQ3LDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLAorICAgIDUyLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsCisgICAgMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwzMiw5NywxMTAsMzIsMTA1LAorICAgIDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDExNCwxNSwwLDAsMCw0MSwyLDExNCwxNiwKKyAgICAwLDAsMCwyMTgsMTAsMTAyLDExNCwxMTEsMTA5LDk1LDk4LDEyMSwxMTYsMTAxLDExNSw0MSwKKyAgICAxLDkwLDksMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw3LDk1LDExNCw5NSwKKyAgICAxMDgsMTExLDExMCwxMDMsNTIsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCwKKyAgICAyMSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCwzLDAsMCwwLDcxLDAsMCwwLDExNSwyMCwwLDAsMCwxMTYsMCwKKyAgICAxMDYsMSwxMDAsMSwxMDAsMiwxMzIsMCwxMjQsMCw2OCwwLDEzMSwxLDEzMSwxLAorICAgIDgzLDAsNDEsMywxMjIsMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsCisgICAgMTA1LDExMCw0MCw0MSw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCw0LDAsMCwwLDgzLDAsMCwwLDExNSwyNiwwLDAsMCwxMDMsCisgICAgMCwxMjQsMCw5MywxOCwxMjUsMSwxMjQsMSwxMTQsNCwxMjQsMSwxMDYsMCwxMTYsCisgICAgMSwxMzEsMSwxNDUsMiwxMTMsNCw4MywwLDExNCw0LDAsMCwwLDQxLDIsCisgICAgMjE4LDYsMTE0LDExNSwxMTYsMTE0LDEwNSwxMTIsMjE4LDE1LDExMiw5NywxMTYsMTA0LDk1LDExNSwKKyAgICAxMDEsMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsNDEsMiwyMTgsMiw0Niw0OCwyMTgsCisgICAgNCwxMTIsOTcsMTE0LDExNiwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyNTAsMTAsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLDYyLAorICAgIDU5LDAsMCwwLDExNSwyLDAsMCwwLDYsMSwxMjIsMzAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKKyAgICA0Niw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNDEsMiwyMTgsOCwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsMSwyMTgsCisgICAgMTAsMTEyLDk3LDExNiwxMDQsOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNTcsMCwwLDAsMTE1LDQsMCwwLDAsMCwKKyAgICAyLDEwLDEsMTE0LDMwLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDk2LDAsCisgICAgMCwwLDExNiwwLDExNiwxLDEzMSwxLDEwMCwxLDEwNywyLDExNCwzNiwxMjQsMCwKKyAgICAxMDYsMiwxMTYsMywxMzEsMSw5MiwzLDEyNSwxLDEyNSwyLDEyNSwzLDEyNCwxLAorICAgIDEyNCwzLDEwMiwyLDgzLDAsMTIwLDUwLDExNiw0LDEyNCwwLDEzMSwxLDY4LDAsCisgICAgOTMsMzgsMTI1LDQsMTI0LDQsMTE2LDEsMTA3LDYsMTE0LDQ2LDEyNCwwLDEwNiw1LAorICAgIDEyNCw0LDEwMCwxLDEwMCwyLDE0MSwyLDkyLDIsMTI1LDEsMTI1LDMsMTI0LDEsCisgICAgMTI0LDMsMTAyLDIsODMsMCwxMTMsNDYsODcsMCwxMDAsMywxMjQsMCwxMDIsMiwKKyAgICA4MywwLDQxLDQsMTIyLDMyLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLAorICAgIDEwOCwxMDUsMTE2LDQwLDQxLDQ2LDIzMywxLDAsMCwwLDQxLDEsOTAsOCwxMDksCisgICAgOTcsMTIwLDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDAsNDEsNiwyMTgsMywxMDgsMTAxLDExMCwKKyAgICAxMTQsMjMsMCwwLDAsMjE4LDEwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsCisgICAgMTEwLDExNCwyNywwLDAsMCwyMTgsOCwxMTQsMTAxLDExOCwxMDEsMTE0LDExNSwxMDEsMTAwLAorICAgIDIxOCw2LDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LDQxLDUsMjE4LDQsMTEyLDk3LDExNiwxMDQsCisgICAgOTAsNSwxMDIsMTE0LDExMSwxMTAsMTE2LDIxOCwxLDk1LDIxOCw0LDExNiw5NywxMDUsMTA4LAorICAgIDExNCwxOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LAorICAgIDExNiw2MywwLDAsMCwxMTUsMTYsMCwwLDAsMCwyLDEyLDEsMTYsMSwKKyAgICA4LDEsMTQsMSw4LDEsMTgsMSwxMiwxLDExNCw0MCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMCwxMzEsCisgICAgMSw4MywwLDQxLDEsMTIyLDEyNiw4MywxMTYsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc3LDk3LDEwMCwxMDEsMzIsCisgICAgOTcsMzIsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LAorICAgIDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA5LDk3LDEwNywxMDEsMzIsMTA1LDExNiwzMiwxMDEsCisgICAgOTcsMTE1LDEwNSwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTEwLDMyLDEwMSwxMjAsMTEyLDEwMSwxMTQsMTA1LDEwOSwxMDEsMTEwLDExNiwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDMyLDExNSwxMTYsOTcsMTE2LDMyLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDExNSw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw0MSwyLDExNCwzLDAsMCwwLDkwLDQsMTE1LDExNiwKKyAgICA5NywxMTYsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDExNSwxMTYsOTcsMTE2LDc1LDAsMCwwLDExNSwyLDAsMCwwLDAsNywxMTQsCisgICAgNDEsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDQ4LDAsMCwwLDEyMSwxMiwKKyAgICAxMTYsMCwxMjQsMCwxMzEsMSwxMjUsMiw4NywwLDExMCwyMCw0LDAsMTE2LDEsCisgICAgMTA3LDEwLDExNCwzMiwxLDAsMSwwLDEsMCwxMDAsMSw4MywwLDg4LDAsCisgICAgMTI0LDIsMTA2LDIsMTAwLDIsNjQsMCwxMjQsMSwxMDcsMiw4MywwLDQxLDMsCisgICAgMTIyLDQ5LDg0LDEwMSwxMTUsMTE2LDMyLDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwKKyAgICAxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExNiwxMjEsCisgICAgMTEyLDEwMSw0Niw3MCwxMDUsMCwyNDAsMCwwLDQxLDMsMTE0LDQxLDAsMCwwLAorICAgIDIxOCw3LDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwyMTgsNywxMTUsMTE2LDk1LDEwOSwxMTEsCisgICAgMTAwLDEwMSw0MSwzLDExNCwzNywwLDAsMCwyMTgsNCwxMDksMTExLDEwMCwxMDEsOTAsCisgICAgOSwxMTUsMTE2LDk3LDExNiw5NSwxMDUsMTEwLDEwMiwxMTEsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE4LDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw4NSwwLDAsCisgICAgMCwxMTUsMTAsMCwwLDAsMCwyLDIsMSwxMiwxLDE0LDEsNiwxLAorICAgIDExNCw0NSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsCisgICAgMCwxMjQsMCwxMDAsMSwxMzEsMiw4MywwLDQxLDIsMTIyLDMxLDgyLDEwMSwxMTIsCisgICAgMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMCwxMjgsMCwKKyAgICAwLDQxLDEsMTE0LDQ1LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw5NCwwLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDIsMTE0LDQ2LDAsMCwwLDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDIyLDAsMCwwLDEyNCwwLDExNSwxMiwxMTYsMCwxMDYsMSwxMzEsMCwKKyAgICAxMjUsMCwxMTYsMiwxMjQsMCwxMDAsMSwxMzEsMiw4MywwLDQxLDIsMTIyLDMwLAorICAgIDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMCwxMDUsMTE0LDQ2LDEwNSwwLAorICAgIDY0LDAsMCw0MSwzLDExNCwzLDAsMCwwLDIxOCw2LDEwMywxMDEsMTE2LDk5LAorICAgIDExOSwxMDAsMTE0LDQ1LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDk5LDAsMCwwLDExNSw2LAorICAgIDAsMCwwLDAsMiw0LDEsOCwxLDExNCw0OCwwLDAsMCwyMzMsMTgyLAorICAgIDEsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLAorICAgIDE3LDAsMCwwLDY3LDAsMCwwLDExNSwxNjIsMCwwLDAsMTAwLDEsMTA2LAorICAgIDAsMTI0LDAsMTE2LDEsMTI0LDAsMTMxLDEsMTMxLDIsMTI1LDMsMTE2LDIsMTA2LAorICAgIDMsMTI0LDMsMTE2LDIsMTA2LDQsMTE2LDIsMTA2LDUsNjYsMCwxMTYsMiwxMDYsCisgICAgNiw2NiwwLDEyNCwyLDEwMCwyLDY0LDAsMTMxLDMsMTI1LDQsMTIxLDUwLDExNiwKKyAgICA3LDEwNiw4LDEyNCw0LDEwMCwzLDEzMSwyLDE0MywxNiwxMjUsNSwxMjQsNSwxMDYsCisgICAgOSwxMjQsMSwxMzEsMSwxLDAsODcsMCwxMDAsNCw4MSwwLDgyLDAsODgsCisgICAgMCwxMTYsMiwxMDYsMTAsMTI0LDMsMTI0LDAsMTMxLDIsMSwwLDg3LDAsMTEwLAorICAgIDU4LDQsMCwxMTYsMTEsMTA3LDEwLDExNCwxNTYsMSwwLDEsMCwxLDAsMTIxLAorICAgIDE0LDExNiwyLDEwNiwxMiwxMjQsMywxMzEsMSwxLDAsODcsMCwxMTAsMjAsNCwKKyAgICAwLDExNiwxMSwxMDcsMTAsMTE0LDE0OCwxLDAsMSwwLDEsMCw4OSwwLDExMCwKKyAgICAyLDg4LDAsMTMwLDAsODksMCwxMTAsMiw4OCwwLDEwMCw0LDgzLDAsNDEsCisgICAgNSwxMjIsMTYyLDY2LDEwMSwxMTUsMTE2LDQ1LDEwMSwxMDIsMTAyLDExMSwxMTQsMTE2LDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsCisgICAgMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDk3LDExNiwxMTEsMTA5LDEwNSw5OSw5NywxMDgsMTA4LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiwKKyAgICA2NiwxMDEsMzIsMTEyLDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA0LAorICAgIDk3LDExMCwxMDAsMTA4LDEwMSwzMiw5NywzMiw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwKKyAgICAxMTYsMTE1LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTAyLDMyLDk5LDExMSwxMTAsOTksMTE3LAorICAgIDExNCwxMTQsMTAxLDExMCwxMTYsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsCisgICAgMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsCisgICAgMTE0LDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMTYsMTE2LDEwMSwxMDksCisgICAgMTEyLDExNiwxMDEsMTAwLDQ2LDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSwxMDUsMTgyLDEsMCwKKyAgICAwLDkwLDIsMTE5LDk4LDc4LDQxLDEzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsCisgICAgMjE4LDIsMTA1LDEwMCwxMTQsMywwLDAsMCw5MCw0LDExMSwxMTIsMTAxLDExMCw5MCwKKyAgICA2LDc5LDk1LDY5LDg4LDY3LDc2LDkwLDcsNzksOTUsNjcsODIsNjksNjUsODQsCisgICAgOTAsOCw3OSw5NSw4Nyw4Miw3OSw3OCw3Niw4OSwyMTgsMyw5NSwxMDUsMTExLDIxOCwKKyAgICA2LDcwLDEwNSwxMDgsMTAxLDczLDc5LDIxOCw1LDExOSwxMTQsMTA1LDExNiwxMDEsMjE4LDcsCisgICAgMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMTQsNDIsMCwwLDAsOTAsNiwxMTcsMTEwLAorICAgIDEwOCwxMDUsMTEwLDEwNyw0MSw2LDExNCwzNywwLDAsMCwyMTgsNCwxMDAsOTcsMTE2LAorICAgIDk3LDExNCw0NCwwLDAsMCw5MCw4LDExMiw5NywxMTYsMTA0LDk1LDExNiwxMDksMTEyLAorICAgIDkwLDIsMTAyLDEwMCwyMTgsNCwxMDIsMTA1LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDk1LDExOSwxMTQsMTA1LDExNiwKKyAgICAxMDEsOTUsOTcsMTE2LDExMSwxMDksMTA1LDk5LDEwNiwwLDAsMCwxMTUsMjYsMCwwLAorICAgIDAsMCw1LDE2LDEsNiwxLDI2LDEsMiwzLDE0LDEsMjAsMSwxNiwKKyAgICAxLDE0LDEsMiwxLDE0LDEsMTQsMSw2LDEsMTE0LDU4LDAsMCwwLAorICAgIDEwNSw0OSwxMywwLDAsMjMzLDIsMCwwLDAsMTE0LDE1LDAsMCwwLDExNSwKKyAgICAyLDAsMCwwLDEzLDEwLDkwLDExLDk1LDk1LDExMiwxMjEsOTksOTcsOTksMTA0LAorICAgIDEwMSw5NSw5NSwxMjIsNCwxMTEsMTEyLDExNiw0NSwxMjIsMyw0NiwxMTIsMTIxLDEyMiw0LAorICAgIDQ2LDExMiwxMjEsOTksNzgsNDEsMSwyMTgsMTIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLAogICAgIDk3LDExNiwxMDUsMTExLDExMCw5OSwyLDAsMCwwLDEsMCwwLDAsMTEsMCwKLSAgICAwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsODcsMSwwLDAsMTI0LAotICAgIDEsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDc2LDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEwMCwyLDAsMTE2LDIsMCwxMzEsMiwwLDEsMTI0LDIsMCwxMDAsMSwKLSAgICAwLDEwNyw5LDAsMTE0LDU4LDAsMTAwLDMsMCwxMjUsMywwLDExNiwzLDAsCi0gICAgMTI0LDMsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDEsMCwxMTQsNzAsMCwxMDAsCi0gICAgNCwwLDExMCwzLDAsMTAwLDUsMCwxMjUsMiwwLDExNiw0LDAsMTI0LDAsCi0gICAgMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw1LDAsMTI0LDUsMCwKLSAgICAxMDYsNSwwLDEwMCw2LDAsMTMxLDEsMCw5MiwzLDAsMTI1LDYsMCwxMjUsCi0gICAgNywwLDEyNSw4LDAsMTE2LDYsMCwxMDYsNywwLDEwNiw4LDAsMTI1LDksCi0gICAgMCwxMjQsOSwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMTU0LDAsMTE2LDksMCwKLSAgICAxMDAsNywwLDEzMSwxLDAsMTMwLDEsMCwxMDAsNCwwLDEwNiwxMCwwLDEyNCwKLSAgICA2LDAsMTE0LDE3MiwwLDEyNCw2LDAsMTEwLDMsMCwxMjQsOCwwLDEyNCw3LAotICAgIDAsMTI0LDksMCwxMDMsMywwLDEzMSwxLDAsMTI1LDEwLDAsMTI0LDIsMCwKLSAgICAxMDAsMSwwLDEwNyw4LDAsMTE0LDI0MSwwLDExNiw2LDAsMTA2LDExLDAsMTA2LAotICAgIDEyLDAsMTAwLDgsMCwxMDcsMiwwLDExNCwyMjksMCwxMDAsNCwwLDEyNSwyLAotICAgIDAsMTEwLDEyLDAsMTE2LDYsMCwxMDYsMTEsMCwxMDYsMTIsMCwxMjUsMiwwLAotICAgIDExNiwxMywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTAwLAotICAgIDQsMCwxMDcsMywwLDExNCw2MywxLDEyNCwyLDAsMTA2LDE0LDAsMTMxLDAsCi0gICAgMCwxMTUsNDIsMSwxMTYsMTUsMCwxMDAsOSwwLDEwNiwxNiwwLDEyNCwyLDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTAwLDEwLDAsMTA2LDE2LDAsMTI0LAotICAgIDEwLDAsMTE2LDE3LDAsMTI0LDIsMCwxMzEsMywwLDEyNSwxMCwwLDExNiwxOCwKLSAgICAwLDEyNCw0LDAsMTE2LDE5LDAsMTI0LDEwLDAsMTE2LDIwLDAsMTAwLDgsMCwKLSAgICAyNSwyMywxMzEsMywwLDgzLDQxLDExLDk3LDI1NCwyLDAsMCw3MSwxMDUsMTE4LAotICAgIDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywKLSAgICAzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LAotICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsCi0gICAgMTE1LDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLAotICAgIDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLAotICAgIDEwMSwxMjAsMTA1LDExNSwxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwKLSAgICAxMDgsMTIxLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDQ2LAotICAgIDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LAotICAgIDExNiwxMDEsMTAwLDMyLDk3LDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwKLSAgICAxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExOSwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksCi0gICAgMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTIsOTcsCi0gICAgMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsOTksMTExLDExMCwxMTYsMTE0LDExMSwxMDgsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTQsMTAxLDExNSwxMTcsMTA5LDEwMSwxMDAsMzIsMTExLDExMiwKLSAgICAxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LAotICAgIDMyLDExMSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsCi0gICAgOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDczLDEwMiwzMiwzOSwxMTEsCi0gICAgMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTUsMzIsCi0gICAgMTEwLDExMSwxMTYsMzIsNzgsMTExLDExMCwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExNiwKLSAgICAxMTQsMTA1LDExMCwxMDMsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDEwLDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTcsCi0gICAgMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE2LDk3LDEwNywxMDEsMTEwLAotICAgIDMyLDk3LDExMCwxMDAsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDk4LDEwMSwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwKLSAgICAzMiw0MCwxMDEsMTA4LDExNSwxMDEsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0MSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMywKLSAgICA5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwKLSAgICAxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwKLSAgICAxMDAsNDYsMzIsNzMsMTAyLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsCi0gICAgMTE0LDEwNSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsNzgsMTExLDExMCwxMDEsCi0gICAgNDQsMTAsMzIsMzIsMzIsMzIsOTcsMzIsODQsMTE0LDExNywxMDEsMzIsMTE4LDk3LDEwOCwKLSAgICAxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDk3LDEwOSwxMDEsMzIsOTcsCi0gICAgMTE1LDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LAotICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEyMSwzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDk3LDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExOCwKLSAgICA5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDEwMSwxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwKLSAgICAxMTAsMTE2LDMyLDExNiwxMTEsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwKLSAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwKLSAgICAzOSw0OSwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsCi0gICAgMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsCi0gICAgMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw3MCwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwKLSAgICAzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAotICAgIDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDU5LDMyLDExNywxMTUsMTAxLDMyLDM5LDExMSwKLSAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExMCwxMTUsCi0gICAgMTE2LDEwMSw5NywxMDAsMTIyLDUwLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsCi0gICAgMTE0LDEwNSwxMDAsMTAxLDMyLDExMSwxMTQsMzIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LAotICAgIDExNiwxMDUsMTExLDExMCwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LAotICAgIDMyLDExNiwxMTEsMzIsNzgsMTExLDExMCwxMDEsMTE0LDMyLDAsMCwwLDExNCwzMSwwLAotICAgIDAsMCwyMTgsMSw0NiwxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsCi0gICAgMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDIzMywwLDAsMCwwLAotICAgIDEyMiwyNCwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwKLSAgICAxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDEyMiw3LDEyMywxMjUsNDYsMTIzLAotICAgIDEyNSwxMjMsMTI1LDQxLDIxLDIxOCw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwKLSAgICAyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDIxOCw5LDg0LDEyMSwxMTIsMTAxLAotICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTQsNDAsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCwKLSAgICA4LDAsMCwwLDIxOCwxNCwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKLSAgICAxMTYsMTA1LDExMSwxMTAsMjE4LDksOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDIxOCwKLSAgICAxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMTE0LDI4LDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwKLSAgICAyMTgsOCwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCwKLSAgICA3LDEwNSwxMTUsOTcsMTA4LDExMCwxMTcsMTA5LDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMTE0LDQ5LDAsMCwwLDIxOCw0LDk1LDc5LDgwLDg0LDExNCwKLSAgICAzMCwwLDAsMCwyMTgsOCw5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwyMTgsMTcsCi0gICAgNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksCi0gICAgODMsNDEsMTEsMTE0LDM3LDAsMCwwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwKLSAgICAxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDExNCw1OSwwLDAsMCwyMTgsNywxMDksCi0gICAgMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzksMCwwLAotICAgIDAsOTAsNCw5OCw5NywxMTUsMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsCi0gICAgMTE1LDExNiw5MCwzLDExNiw5NywxMDMsOTAsMTUsOTcsMTA4LDEwOSwxMTEsMTE1LDExNiw5NSwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLAotICAgIDExNCwxMTEsMTA5LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjU0LDAsMCwwLDExNSw0NiwKLSAgICAwLDAsMCwwLDE4LDEyLDEsOSwxLDcsMSwxMiwxLDYsMSwxMiwKLSAgICAxLDE4LDEsMTgsMSwyNCwxLDEyLDEsMTIsMSwxMiwxLDM2LDEsMTIsCi0gICAgMSwxOCwxLDksMiwxMiwxLDEyLDEsMTIsMSwxMiwxLDIxLDEsMjEsCi0gICAgMSwxMTQsODEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDgsCi0gICAgMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNjIsMSwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKLSAgICAzMCwwLDExNiwzLDAsMTAwLDIsMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LDIsMCwKLSAgICAxMTYsNCwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsCi0gICAgMywwLDEyNCwzLDAsMTE2LDUsMCwxMDcsMywwLDExNCwxMDIsMCwxMTYsNiwKLSAgICAwLDEwMCwzLDAsMTA2LDcsMCwxMTYsNSwwLDEyNCwwLDAsMTMxLDIsMCwKLSAgICAxMzEsMSwwLDEzMCwxLDAsMTI0LDIsMCwxMDYsOCwwLDEwMCw0LDAsMTMxLAotICAgIDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDExLDAsMTA3LDcsMCwxMTQsMTUzLAotICAgIDAsMTE2LDYsMCwxMDAsNywwLDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMTAsMTI1LDAsMTI0LDQsMCwxMDAsNiwwLDEwNywKLSAgICAyLDAsMTE0LDIyLDEsMTI0LDIsMCwxMDYsOSwwLDEwMCw0LDAsMTAwLDUsCi0gICAgMCwxMzEsMiwwLDEwMCwxMiwwLDI1LDEyNSw1LDAsMTI0LDUsMCwxMDYsMTAsCi0gICAgMCwxMTYsMTEsMCwxMzEsMSwwLDExNSwyMjMsMCwxMTYsNiwwLDEwMCw4LDAsCi0gICAgMTA2LDcsMCwxMTYsMTEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsCi0gICAgNSwwLDExNiwxMiwwLDExNiwxMSwwLDEzMSwxLDAsMTAwLDEsMCwxMzMsMiwKLSAgICAwLDI1LDEyNSw2LDAsMTI0LDYsMCwxMDYsMTMsMCwxMzEsMCwwLDExNSwyMiwKLSAgICAxLDExNiw2LDAsMTAwLDksMCwxMDYsNywwLDEyNCw1LDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDEzMCwxLDAsMTI0LDIsMCwxMDYsMTQsMCwxMDAsNCwwLDEzMSwKLSAgICAxLDAsMTAwLDEwLDAsMjUsMTI1LDcsMCwxMTYsMTUsMCwxMjQsMSwwLDEyNCwKLSAgICA3LDAsMTE2LDE2LDAsMTAwLDEwLDAsMjUsMjMsMTMxLDIsMCw4Myw0MSwxMywKLSAgICA5NywxMTAsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSw5OSw0NiwzMiwxMDIsCi0gICAgMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LAotICAgIDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLAotICAgIDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LAotICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLAotICAgIDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsMzIsNzMsMTAyLAotICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsMTExLDMyLDgwLDY5LAotICAgIDgwLDMyLDUxLDQ5LDUyLDU1LDQ3LDUyLDU2LDU2LDMyLDEwMiwxMTEsMTE0LDEwOSw5NywKLSAgICAxMTYsNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDUsCi0gICAgMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwzMiw3MywxMDIsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAotICAgIDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LAotICAgIDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwKLSAgICAxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDc4LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsCi0gICAgOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LDEyMywxMjUsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLAotICAgIDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSwxMTQsNjAsMCwwLDAsMTE0LDU4LDAsMCwwLDIzMywzLDAsMCwwLAotICAgIDEyMiwzMywxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLAotICAgIDUwLDMyLDExMSwxMTQsMzIsNTEsMzIsMTAwLDExMSwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMTIyLDU3LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDExMCw5NywxMDksMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTUsCi0gICAgMTE2LDk3LDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEyMywzMywxMTQsMTI1LDEyMiw1MiwKLSAgICAxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LAotICAgIDEwMSwxMDgsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywKLSAgICAxMTAsMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsMTE4LAotICAgIDk3LDEwOCwxMTcsMTAxLDExNCw2MSwwLDAsMCw2MiwyLDAsMCwwLDExNCw1OCwKLSAgICAwLDAsMCwxMTQsODIsMCwwLDAsMjMzLDI1NCwyNTUsMjU1LDI1NSw0MSwxNywxMTQsCi0gICAgOCwwLDAsMCwxMTQsNjYsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCw2OCwKLSAgICAwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw3MywwLAotICAgIDAsMCwxMTQsNDksMCwwLDAsMjE4LDUsOTksMTExLDExNywxMTAsMTE2LDExNCwzNiwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDc0LDAsMCwwLDExNCwzMywwLAotICAgIDAsMCwxMTQsNzIsMCwwLDAsMjE4LDksMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsCi0gICAgMTExLDExMCwxMTQsMzAsMCwwLDAsMjE4LDE1LDgzLDc5LDg1LDgyLDY3LDY5LDk1LAotICAgIDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDgsMTE0LDM3LDAsMCwwLDExNCwKLSAgICA3OCwwLDAsMCw5MCwxNiwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDkwLDcsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDkwLAotICAgIDksMTAwLDExMSwxMTYsOTUsOTksMTExLDExNywxMTAsMTE2LDExNCw1OSwwLDAsMCw5MCwKLSAgICA5LDExMSwxMTIsMTE2LDk1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsMTMsOTgsOTcsMTE1LDEwMSwKLSAgICA5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDIsMSwwLDAsMTE1LAotICAgIDQ0LDAsMCwwLDAsOSwxOCwxLDEyLDEsMTgsMSwxOCwxLDEyLDEsCi0gICAgOSwxLDE1LDEsMTUsMSwxMiwxLDksMSwxNSwxLDEyLDEsMjIsMSwKLSAgICAxNSwxLDksMSwxMiwxLDIyLDEsMTIsMSw5LDEsMTIsMSwxOSwxLAotICAgIDExNCw4NywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLAotICAgIDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMTY0LDAsMCwwLDExNiwKLSAgICAwLDAsMTI0LDAsMCwxMzEsMSwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjIsCi0gICAgMCwxMDAsMiwwLDgzLDEyNCwwLDAsMTA2LDEsMCwxMDAsMywwLDEzMSwxLAotICAgIDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwxLDAsCi0gICAgMTIsMTE1LDgxLDAsMTI0LDMsMCwxMDYsMiwwLDEzMSwwLDAsMTAwLDcsMCwKLSAgICAxMDAsOCwwLDEzMywyLDAsMjUsMTAwLDYsMCwxMDcsMywwLDExNCw4NSwwLAotICAgIDEyNCwwLDAsODMsMTIxLDE2LDAsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsCi0gICAgMTI1LDQsMCw4NywxMTAsNDAsMCw0LDExNiw0LDAsMTE2LDUsMCwxMDIsMiwKLSAgICAwLDEwNywxMCwwLDExNCwxNDMsMCwxLDEsMSwxMjQsMCwwLDEwMCwyLDAsCi0gICAgMTAwLDksMCwxMzMsMiwwLDI1LDEyNSw0LDAsODksMTEwLDEsMCw4OCwxMTYsCi0gICAgNiwwLDEyNCw0LDAsMTMxLDEsMCwxMTQsMTYwLDAsMTI0LDQsMCw4MywxMjQsCi0gICAgMCwwLDgzLDQxLDEwLDEyMiwxODgsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCwxMDUsMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LAotICAgIDEwMSw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LAotICAgIDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsMTEyLDExNywKLSAgICAxMTQsMTAxLDEwOCwxMjEsMzIsMTAyLDExMSwxMTQsMzIsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsCi0gICAgMTAwLDExNSw0NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LDExNiwxMjEsCi0gICAgMzIsMTAyLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsOTUsNjksMTIwLDEwMSw5OSw2NywxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDg3LDEwNSwxMTYsMTA0LDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCw0MSwzMiwKLSAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDY3LDMyLDY1LDgwLDczLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDExNCw2MSwwLDAsMCw3OCwxMTQsNjAsMCwwLDAsMTE0LDgyLAotICAgIDAsMCwwLDExNCwzMSwwLDAsMCw5MCwyLDExMiwxMjEsMjMzLDI1MywyNTUsMjU1LAotICAgIDI1NSwyMzMsMjU1LDI1NSwyNTUsMjU1LDExNCw4OSwwLDAsMCw0MSw3LDExNCwzMywwLAotICAgIDAsMCwxMTQsMzQsMCwwLDAsMjE4LDUsMTA4LDExMSwxMTksMTAxLDExNCwxMTQsODcsCi0gICAgMCwwLDAsMTE0LDY4LDAsMCwwLDExNCw3MywwLDAsMCwxMTQsNDYsMCwKLSAgICAwLDAsNDEsNSwyMTgsMTMsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsMTE0LDgwLDAsMCwwLDExNCwzOCwwLDAsMCw5MCw5LDEwMSwKLSAgICAxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDk1LDExMiw5NywxMTYsMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDIxOCwxNSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDEwMiwxMDUsMTA4LDEwMSw3NSwxLDAsMCwxMTUsMjAsMCwwLDAsMCw3LAotICAgIDE4LDEsNCwxLDI0LDEsMzUsMSw0LDEsMywxLDE2LDEsMTksMSwKLSAgICAyMSwxLDExNCw5MywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsOTIsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTE2LDIsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMTE0LDU5LDAsMTIxLDE0LDAsMTE2LDMsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsODMsODcsMTEzLDg4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCw1NSwKLSAgICAwLDEsMSwxLDg5LDExMyw4OCwwLDg4LDExMCwyOSwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMTYsMSwwLDExNiw1LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4NCwKLSAgICAwLDEyNCwwLDAsODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLDQxLDEsNzgsCi0gICAgNDEsNiwyMTgsOCwxMDEsMTEwLDEwMCwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCw1LDExNiwxMTcsCi0gICAgMTEyLDEwOCwxMDEsMTE0LDg2LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsNjgsMCwKLSAgICAwLDAsMTE0LDc2LDAsMCwwLDQxLDEsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwxMSw5NSwxMDMsMTAxLDExNiw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NCwKLSAgICAxLDAsMCwxMTUsMTYsMCwwLDAsMCwxLDIxLDEsMywxLDE0LDEsCi0gICAgMTMsMSw4LDEsMjEsMSw0LDIsMTE0LDk3LDAsMCwwLDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw2MCwwLDAsMCwxMjEsMTksMCwxMTYsMCwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxMDYsMSwwLDEyNSwxLDAsODcsMTEwLDI0LDAsNCwxMTYsMiwKLSAgICAwLDEwNywxMCwwLDExNCw0NSwwLDEsMSwxLDEwMCwxLDAsMTI1LDEsMCwKLSAgICA4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDIsMCw3OSwxMjUsMSwwLDEyNCwKLSAgICAxLDAsODMsNDEsMywxMjIsNTEsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTEyLDEwMSwxMTQsMTA5LDEwNSwxMTUsCi0gICAgMTE1LDEwNSwxMTEsMTEwLDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywzMiw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDE4MiwxLDAsMCwyMzMsCi0gICAgMTI4LDAsMCwwLDQxLDMsMTE0LDQxLDAsMCwwLDExNCw0MywwLDAsMCwKLSAgICAxMTQsNDIsMCwwLDAsNDEsMiwxMTQsMzcsMCwwLDAsMTE0LDQ0LDAsMCwKKyAgICAwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMjQ0LDAsMCwwLDEyNCwKKyAgICAxLDEwMCwxLDEwNyw5LDExNCw1MiwxMTYsMCwxMDYsMSwxMDAsMiwxMTYsMiwxMzEsCisgICAgMiwxLDAsMTI0LDIsMTAwLDEsMTA3LDksMTE0LDQwLDEwMCwzLDEyNSwzLDExNiwKKyAgICAzLDEyNCwzLDEzMSwxLDEzMCwxLDEyNCwxLDExNCw0OCwxMDAsNCwxMTAsMiwxMDAsCisgICAgNSwxMjUsMiwxMTYsNCwxMDYsNSwxMjQsMCwxMzEsMSwxMjUsMCwxMTYsNiwxMjQsCisgICAgMCwxMzEsMSw5MiwyLDEyNSw0LDEyNSw1LDEyNCw1LDEwNiw3LDEwMCw2LDEzMSwKKyAgICAxLDkyLDMsMTI1LDYsMTI1LDcsMTI1LDgsMTE2LDgsMTA2LDksMTA2LDEwLDEyNSwKKyAgICA5LDEyNCw5LDEwMCwxLDEwNyw4LDExNCwxMTQsMTE2LDExLDEwMCw3LDEzMSwxLDEzMCwKKyAgICAxLDEwMCw0LDEwNiwxMiwxMjQsNiwxMTQsMTI2LDEyNCw2LDExMCwyLDEyNCw4LDEyNCwKKyAgICA3LDEyNCw5LDEwMywzLDEzMSwxLDEyNSwxMCwxMjQsMiwxMDAsMSwxMDcsOCwxMTQsCisgICAgMTcyLDExNiw4LDEwNiwxMywxMDYsMTQsMTAwLDgsMTA3LDIsMTE0LDE2NCwxMDAsNCwxMjUsCisgICAgMiwxMTAsOCwxMTYsOCwxMDYsMTMsMTA2LDE0LDEyNSwyLDExNiwxNSwxMjQsMiwxMzEsCisgICAgMSwxMjUsMiwxMjQsMiwxMDAsNCwxMDcsMywxMTQsMjI0LDEyNCwyLDEwNiwxNiwxMzEsCisgICAgMCwxMTUsMjEwLDExNiwxNywxMDAsOSwxMDYsMTgsMTI0LDIsMTMxLDEsMTMxLDEsMTMwLAorICAgIDEsMTAwLDEwLDEwNiwxOCwxMjQsMTAsMTE2LDE5LDEyNCwyLDEzMSwzLDEyNSwxMCwxMTYsCisgICAgMjAsMTI0LDQsMTE2LDIxLDEyNCwxMCwxMTYsMjIsMTAwLDgsMjUsMCwyMywwLDEzMSwKKyAgICAzLDgzLDAsNDEsMTEsOTcsMjU0LDIsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwKKyAgICAxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsNDYsCisgICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsCisgICAgMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsCisgICAgMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsCisgICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsNDYsMTEyLDEyMSw5OSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsCisgICAgMzIsOTcsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMTEsMTEyLDExNiwKKyAgICAxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExMiw5NywxMTQsOTcsMTA5LAorICAgIDEwMSwxMTYsMTAxLDExNCwzMiw5OSwxMTEsMTEwLDExNiwxMTQsMTExLDEwOCwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDExNCwxMDEsMTE1LDExNywxMDksMTAxLDEwMCwzMiwxMTEsMTEyLDExNiwxMDUsMTA5LAorICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTExLDEwMiwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsNzMsMTAyLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwKKyAgICAxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTE2LDExNCwxMDUsMTEwLAorICAgIDEwMywzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTQsMTAzLDExNywKKyAgICAxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTYsOTcsMTA3LDEwMSwxMTAsMzIsOTcsMTEwLAorICAgIDEwMCwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLAorICAgIDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLDQwLDEwMSwKKyAgICAxMDgsMTE1LDEwMSwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQxLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsCisgICAgMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LAorICAgIDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwKKyAgICA3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwxMCwzMiwKKyAgICAzMiwzMiwzMiw5NywzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsCisgICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsOTcsMTA5LDEwMSwzMiw5NywxMTUsMzIsMTE1LAorICAgIDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDEsMTA5LDExMiwKKyAgICAxMTYsMTIxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDExOSwxMDQsCisgICAgMTA1LDEwOCwxMDEsMzIsOTcsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsMzIsCisgICAgMTE2LDExMSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDM5LDQ5LDM5LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICAxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDcwLDExNiwxMDQsMTAxLDMyLDEwMCwKKyAgICAxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDExMiw5NywKKyAgICAxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsCisgICAgOTksOTcsMTE2LDEwMSwxMDAsNTksMzIsMTE3LDExNSwxMDEsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LAorICAgIDEwMCwxMjIsNTAsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwKKyAgICAxMDEsMzIsMTExLDExNCwzMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSwxMTQsMzIsMCwwLDAsMTE0LDMxLDAsMCwwLDIxOCwKKyAgICAxLDQ2LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLAorICAgIDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMjMzLDAsMCwwLDAsMTIyLDI0LDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LDExMiwxMDQsOTcsCisgICAgMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMTIyLDcsMTIzLDEyNSw0NiwxMjMsMTI1LDEyMywxMjUsCisgICAgNDEsMjMsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDIxOCw0LDExOSwKKyAgICA5NywxMTQsMTEwLDIxOCwxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMjE4LDksODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDExNCwzLDAsMCwwLDIxOCw2LDEwMiwxMTUsMTEyLDk3LDExNiwxMDQsMTE0LAorICAgIDQwLDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsOCwwLDAsMCwyMTgsMTQsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDIxOCw5LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywyMTgsMTksNzgsMTExLDExNiw3MywxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwyOCwKKyAgICAwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDgsMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsNywxMDUsMTE1LDk3LDEwOCwxMTAsCisgICAgMTE3LDEwOSwyMTgsMTAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwKKyAgICAwLDAsMCwyMTgsNCw5NSw3OSw4MCw4NCwxMTQsMzAsMCwwLDAsMjE4LDgsCisgICAgOTUsODAsODksNjcsNjUsNjcsNzIsNjksMjE4LDE3LDY2LDg5LDg0LDY5LDY3LDc5LAorICAgIDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDExLDExNCwzNywwLAorICAgIDAsMCw5MCwxNCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsCisgICAgMTAwLDEwMSwxMTQsNjAsMCwwLDAsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsCisgICAgMjE4LDQsMTA0LDEwMSw5NywxMDAsMTE0LDM5LDAsMCwwLDkwLDQsOTgsOTcsMTE1LAorICAgIDEwMSwyMTgsMywxMTUsMTAxLDExMiwyMTgsNCwxMTQsMTAxLDExNSwxMTYsOTAsMywxMTYsOTcsCisgICAgMTAzLDkwLDE1LDk3LDEwOCwxMDksMTExLDExNSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDIxOCwxNyw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDUsMSwwLDAsMTE1LDQ4LDAsMCwwLDAsMTgsOCwKKyAgICAxLDYsMSw2LDEsOCwxLDQsMSw4LDEsMTIsMSwxMCwxLDEyLAorICAgIDEsMTYsMSw4LDEsOCwxLDgsMSwyNCwxLDgsMSwxMiwxLDYsCisgICAgMiw4LDEsOCwxLDgsMSw4LDEsMTQsMSwxNCwxLDExNCw4MywwLAorICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsOCwwLDAsMCw1LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyMzAsMCwwLDAsMTE2LDAsMTA2LDEsCisgICAgMTA2LDIsMTAwLDEsMTA3LDgsMTE0LDIwLDExNiwzLDEwMCwyLDEzMSwxLDEzMCwxLAorICAgIDExNiw0LDEwNiw1LDEyNCwwLDEzMSwxLDEyNSwwLDExNiw2LDEyNCwwLDEzMSwxLAorICAgIDkyLDIsMTI1LDEsMTI1LDIsMTE2LDYsMTI0LDEsMTMxLDEsOTIsMiwxMjUsMSwKKyAgICAxMjUsMywxMjQsMywxMTYsNywxMDcsMywxMTQsNzgsMTE2LDgsMTAwLDMsMTA2LDksCisgICAgMTE2LDcsMTI0LDAsMTMxLDIsMTMxLDEsMTMwLDEsMTI0LDIsMTA2LDEwLDEwMCw0LAorICAgIDEzMSwxLDEyNSw0LDEyNCw0LDEwMCwxMSwxMDcsNywxMTQsMTEyLDExNiw4LDEwMCw3LAorICAgIDEwNiw5LDEyNCwyLDEzMSwxLDEzMSwxLDEzMCwxLDExMCw4NiwxMjQsNCwxMDAsNiwKKyAgICAxMDcsMiwxMTQsMTk4LDEyNCwyLDEwNiwxMSwxMDAsNCwxMDAsNSwxMzEsMiwxMDAsMTIsCisgICAgMjUsMCwxMjUsNSwxMjQsNSwxMDYsMTIsMTE2LDEzLDEzMSwxLDExNSwxNjAsMTE2LDgsCisgICAgMTAwLDgsMTA2LDksMTE2LDEzLDEzMSwxLDEzMSwxLDEzMCwxLDEyNCw1LDExNiwxNCwKKyAgICAxMTYsMTMsMTMxLDEsMTAwLDEsMTMzLDIsMjUsMCwxMjUsNiwxMjQsNiwxMDYsMTUsCisgICAgMTMxLDAsMTE1LDE5OCwxMTYsOCwxMDAsOSwxMDYsOSwxMjQsNSwxMzEsMSwxMzEsMSwKKyAgICAxMzAsMSwxMjQsMiwxMDYsMTYsMTAwLDQsMTMxLDEsMTAwLDEwLDI1LDAsMTI1LDcsCisgICAgMTE2LDE3LDEyNCwxLDEyNCw3LDExNiwxOCwxMDAsMTAsMjUsMCwyMywwLDEzMSwyLAorICAgIDgzLDAsNDEsMTMsOTcsMTEwLDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsCisgICAgOTksNDYsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsCisgICAgNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwKKyAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwKKyAgICAxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsCisgICAgMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwzMiwxMTYsCisgICAgMTExLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LAorICAgIDMyLDMyLDczLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsCisgICAgMzIsMzIsMzIsMTEwLDExMSwxMTYsMzIsOTksMTExLDExMCwxMDIsMTExLDExNCwxMDksMzIsMTE2LAorICAgIDExMSwzMiw4MCw2OSw4MCwzMiw1MSw0OSw1Miw1NSw0Nyw1Miw1Niw1NiwzMiwxMDIsCisgICAgMTExLDExNCwxMDksOTcsMTE2LDQ0LDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsCisgICAgNDYsMzIsNzMsMTAyLDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDEyMiwzNywKKyAgICAxMjMsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDk4LDExMSwxMTYsMTE2LDExMSwxMDksNDUsMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwNSwxMTAsCisgICAgMzIsMTIzLDMzLDExNCwxMjUsMTE0LDYxLDAsMCwwLDExNCw1OSwwLDAsMCwyMzMsCisgICAgMywwLDAsMCwxMjIsMzMsMTAxLDEyMCwxMTIsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTAsMTA4LDEyMSwzMiw1MCwzMiwxMTEsMTE0LDMyLDUxLDMyLDEwMCwxMTEsMTE2LDExNSwzMiwKKyAgICAxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiw1NywxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsMTE1LDExNiw5NywxMTQsMTE2LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMjMsMzMsCisgICAgMTE0LDEyNSwxMjIsNTIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsOTcsMTEwLDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsCisgICAgMTA1LDk5LDMyLDExOCw5NywxMDgsMTE3LDEwMSwxMTQsNjIsMCwwLDAsNjIsMiwwLAorICAgIDAsMCwxMTQsNTksMCwwLDAsMTE0LDg0LDAsMCwwLDIzMywyNTQsMjU1LDI1NSwKKyAgICAyNTUsNDEsMTksMTE0LDgsMCwwLDAsMTE0LDY4LDAsMCwwLDExNCw2OSwwLAorICAgIDAsMCwxMTQsNzAsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDY3LDAsMCwKKyAgICAwLDExNCw0MCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDc1LDAsMCwwLAorICAgIDExNCw1MCwwLDAsMCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDM2LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDMzLDAsMCwwLAorICAgIDExNCw3NCwwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNCwzMCwwLDAsMCwyMTgsMTUsODMsNzksODUsODIsNjcsNjksOTUsODMsODUsCisgICAgNzAsNzAsNzMsODgsNjksODMsNDEsOCwxMTQsMzcsMCwwLDAsMTE0LDgwLDAsCisgICAgMCwwLDkwLDE2LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsOTAsNywxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsOSwxMDAsCisgICAgMTExLDExNiw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDYwLDAsMCwwLDkwLDksMTExLAorICAgIDExMiwxMTYsOTUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCwxMyw5OCw5NywxMTUsMTAxLDk1LDEwMiwKKyAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsCisgICAgMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSw1MCwxLDAsMCwxMTUsNDYsMCwKKyAgICAwLDAsMCw5LDEyLDEsOCwxLDEwLDEsMTIsMSwxMiwxLDgsMSwKKyAgICA2LDEsMTAsMSwxMCwxLDgsMSw2LDEsMTAsMSw4LDEsMTYsMSwKKyAgICAxMCwxLDYsMSw4LDEsMTYsMSw4LDEsNiwxLDgsMSwxNCwxLAorICAgIDExNCw4OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLAorICAgIDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMTI4LDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEzMSwxLDEwMCwxLDEwNywyLDExNCwxNiwxMDAsMiw4MywwLDEyNCwKKyAgICAwLDEwNiwxLDEwMCwzLDEzMSwxLDkyLDMsMTI1LDEsMTI1LDIsMTI1LDMsMTI0LAorICAgIDEsMTIsMCwxMTUsNTgsMTI0LDMsMTA2LDIsMTMxLDAsMTAwLDcsMTAwLDgsMTMzLAorICAgIDIsMjUsMCwxMDAsNiwxMDcsMywxMTQsNjIsMTI0LDAsODMsMCwxMjEsMTIsMTE2LAorICAgIDMsMTI0LDAsMTMxLDEsMTI1LDQsODcsMCwxMTAsMzYsNCwwLDExNiw0LDExNiwKKyAgICA1LDEwMiwyLDEwNywxMCwxMTQsMTEwLDEsMCwxLDAsMSwwLDEyNCwwLDEwMCwKKyAgICAyLDEwMCw5LDEzMywyLDI1LDAsMTI1LDQsODksMCwxMTAsMiw4OCwwLDExNiwKKyAgICA2LDEyNCw0LDEzMSwxLDExNCwxMjQsMTI0LDQsODMsMCwxMjQsMCw4MywwLDQxLAorICAgIDEwLDEyMiwxODgsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCwxMDUsMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsMTEyLDExNywxMTQsMTAxLDEwOCwxMjEsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDExNSw0NSw5OSwKKyAgICAxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LDExNiwxMjEsMzIsMTAyLDExMSwxMTQsCisgICAgMTAsMzIsMzIsMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsMTExLDExNCwxMTYsOTUsNjksMTIwLAorICAgIDEwMSw5OSw2NywxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDg3LDEwNSwxMTYsMTA0LAorICAgIDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCw0MSwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDY3LDMyLDY1LDgwLDczLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICA2MiwwLDAsMCw3OCwxMTQsNjEsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwKKyAgICAzMSwwLDAsMCw5MCwyLDExMiwxMjEsMjMzLDI1MywyNTUsMjU1LDI1NSwyMzMsMjU1LDI1NSwKKyAgICAyNTUsMjU1LDExNCw5MSwwLDAsMCw0MSw3LDExNCwzMywwLDAsMCwxMTQsMzQsCisgICAgMCwwLDAsMjE4LDUsMTA4LDExMSwxMTksMTAxLDExNCwxMTQsODksMCwwLDAsMTE0LAorICAgIDcwLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsNDYsMCwwLDAsNDEsNSwKKyAgICAyMTgsMTMsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LAorICAgIDgyLDAsMCwwLDExNCwzOCwwLDAsMCw5MCw5LDEwMSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCwxNSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LAorICAgIDEwMSw4NCwxLDAsMCwxMTUsMjAsMCwwLDAsMCw3LDEyLDEsNCwxLAorICAgIDE2LDEsMjYsMSw0LDEsMiwxLDEyLDEsMTgsMSwxOCwxLDExNCw5NSwKKyAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAxMSwwLDAsMCw2NywwLDAsMCwxMTUsNzQsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTE2LDEsMTE2LDIsMTMxLDEsMTMxLDEsMTE0LDQ2LDEyMSw4LDExNiwzLDEyNCwKKyAgICAwLDEzMSwxLDgzLDAsNCwwLDExNiw0LDEwNywxMCwxMTQsNDIsMSwwLDEsCisgICAgMCwxLDAsODksMCwxMTMsNzAsODgsMCwxMTAsMjQsMTI0LDAsMTA2LDAsMTE2LAorICAgIDEsMTE2LDUsMTMxLDEsMTMxLDEsMTE0LDY2LDEyNCwwLDgzLDAsMTEwLDQsMTAwLAorICAgIDAsODMsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsNiwyMTgsOCwxMDEsMTEwLAorICAgIDEwMCwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCw1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE0LDg4LDAsCisgICAgMCwwLDExNCw4MywwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDc4LDAsMCwKKyAgICAwLDQxLDEsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwxMDMsCisgICAgMTAxLDExNiw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwxMDMsMSwwLDAsMTE1LDE2LDAsCisgICAgMCwwLDAsMSwxNCwxLDIsMSw4LDEsMTQsMSw4LDEsMTQsMSwKKyAgICA2LDIsMTE0LDk5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw1MiwwLDAsCisgICAgMCwxMjEsMTQsMTE2LDAsMTI0LDAsMTMxLDEsMTA2LDEsMTI1LDEsODcsMCwxMTAsCisgICAgMjQsNCwwLDExNiwyLDEwNywxMCwxMTQsMzgsMSwwLDEsMCwxLDAsMTAwLAorICAgIDEsMTI1LDEsODksMCwxMTAsMiw4OCwwLDEyNCwxLDEwMCwyLDc5LDAsMTI1LAorICAgIDEsMTI0LDEsODMsMCw0MSwzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywKKyAgICAxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTIsMTAxLDExNCwxMDksCisgICAgMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMTgyLDEsMCwKKyAgICAwLDIzMywxMjgsMCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsMTE0LDQzLDAsCisgICAgMCwwLDExNCw0MiwwLDAsMCw0MSwyLDExNCwzNywwLDAsMCwxMTQsNDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMjE4LDEwLDk1LDk5LDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsMTE1LDEsCisgICAgMCwwLDExNSwxMiwwLDAsMCwwLDIsMiwxLDE0LDEsMTQsMSwxMCwKKyAgICAzLDgsMSwxMTQsMTAxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwzLDAsMCwwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDY4LDAsCisgICAgMCwwLDEwMCw2LDEzNSwwLDEwMiwxLDEwMCwyLDEwMCwzLDEzMiw5LDEyNSwxLAorICAgIDEyMSwxMCwxMTYsMCwxMDYsMSwxMjUsMiw4NywwLDExMCwyOCw0LDAsMTE2LDIsCisgICAgMTA3LDEwLDExNCw1MiwxLDAsMSwwLDEsMCwxMDAsNCwxMDAsNSwxMzIsMCwKKyAgICAxMjUsMiw4OSwwLDExMCwyLDg4LDAsMTI0LDIsMTI0LDEsMTM2LDAsMTMxLDIsCisgICAgMSwwLDEyNCwxLDgzLDAsNDEsNywxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LAorICAgIDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwKKyAgICA5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLAorICAgIDEwNSwxMTAsMTAzLDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywKKyAgICAxMTYsOTksMTA0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsCisgICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDEwMiwxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LAorICAgIDMyLDQwLDExNSwxMDEsMTA4LDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsCisgICAgMTA1LDExMCwxMDEsMzIsOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExNSwxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LAorICAgIDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsCisgICAgMTE0LDEwMSwxMDAsMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsCisgICAgOTcsMTA1LDEwOCwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgNCwwLDAsMCw0LDAsMCwwLDMxLDAsMCwwLDExNSw2NiwwLDAsCisgICAgMCwxMjQsMSwxMDAsMCwxMDcsOCwxMTQsMTYsMTI0LDAsMTA2LDAsMTI1LDEsMTEwLAorICAgIDMyLDEyNCwwLDEwNiwwLDEyNCwxLDEwNywzLDExNCw0OCwxMTYsMSwxMDAsMSwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMDIsMiwyMiwwLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwKKyAgICAxLDEzNiwwLDEyNCwwLDEyNCwxLDEwMiwyLDEyNCwyLDE1MiwyLDEyNCwzLDE0MiwKKyAgICAxLDgzLDAsNDEsMyw3OCwxMjIsMzAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsCisgICAgMTExLDExNCwzMiwzNywxMTUsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTAsCisgICAgMTAwLDEwOCwxMDEsMzIsMzcsMTE1LDQxLDEsMjE4LDQsMTEwLDk3LDEwOSwxMDEsNDEsMiwKKyAgICAxMTQsMTAyLDAsMCwwLDIxOCwxMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCisgICAgMTExLDExNCw0MSw0LDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTAyLDAsMCwwLDIxOCwKKyAgICA0LDk3LDExNCwxMDMsMTE1LDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MSwxLDIxOCwKKyAgICA2LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDIxOCwxOSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksCisgICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCwxMzUsMSwwLDAsMTE1LDEyLDAsMCwwLDAsCisgICAgMSw4LDEsOCwxLDEwLDEsNCwxLDE4LDEsMTIyLDQwLDk1LDk5LDEwNCwKKyAgICAxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSwKKyAgICA2Miw0Niw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCw3LDAsMCwwLDgzLDAsMCwwLDExNSw2MCwwLDAsMCwxMjAsCisgICAgNDAsMTAwLDUsNjgsMCw5MywzMiwxMjUsMiwxMTYsMCwxMjQsMSwxMjQsMiwxMzEsCisgICAgMiwxMTQsNiwxMTYsMSwxMjQsMCwxMjQsMiwxMTYsMiwxMjQsMSwxMjQsMiwxMzEsCisgICAgMiwxMzEsMywxLDAsMTEzLDYsODcsMCwxMjQsMCwxMDYsMywxMDYsNCwxMjQsCisgICAgMSwxMDYsMywxMzEsMSwxLDAsMTAwLDAsODMsMCw0MSw2LDc4LDIxOCwxMCwKKyAgICA5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSw5NSw5NSwyMTgsMTIsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgOTUsOTUsMjE4LDcsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSw0MSw0LDEyMiwxMCw5NSwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMjIsOCw5NSw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSw5NSw5NSwxMjIsMTIsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsCisgICAgOTUsMTIyLDcsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSw0MSw1LDIxOCw3LDEwNCw5NywKKyAgICAxMTUsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDcsCisgICAgMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDgsOTUsOTUsMTAwLDEwNSw5OSwxMTYsOTUsCisgICAgOTUsMjE4LDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw0MSwzLDkwLDMsMTEwLDEwMSwxMTksCisgICAgOTAsMywxMTEsMTA4LDEwMCwxMTQsNTUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDUsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTQ2LDEsMCwwLDExNSw4LDAsMCwwLDAsMSwxMCwxLDEwLDEsMjIsCisgICAgMSwxMjIsMjYsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsCisgICAgMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExOSwxMTQsOTcsMTEyLDQxLDEsNzgsCisgICAgNDEsMywyMTgsMTAsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExNCwxMTcsCisgICAgMCwwLDAsMjE4LDksNzgsOTcsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMywKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsCisgICAgNCwwLDAsMCw0MSwxLDExNCwxMDYsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDExLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDEyNywxLDAsCisgICAgMCwxMTUsMTQsMCwwLDAsMCw4LDE0LDcsMiwxLDEwLDEsMTQsMiwKKyAgICAxNCw1LDEwLDEsMTE0LDEyMCwwLDAsMCw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw2MCwKKyAgICAwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsMSw5MiwyLDEyNSwyLDEyNSwKKyAgICAzLDEyNCwyLDEwMCwxLDEwNyw4LDExNCw1NiwxMTYsMSwxMjQsMywxMzEsMSwxMTQsCisgICAgNTYsMTAwLDIsMTI1LDQsMTE2LDIsMTA2LDMsMTI0LDQsMTA2LDQsMTI0LDMsMTAwLAorICAgIDMsMjUsMCwxMzEsMSwxMTYsNSwxMzEsMiwxLDAsMTI0LDIsODMsMCw0MSwKKyAgICA0LDEyMiwxNTUsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsOTgsMTIxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDEwMiw5NywxMTgsMTExLAorICAgIDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsCisgICAgNDQsNzgsMTExLDExNiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMDAsCisgICAgMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEyMywxMjUsNTgsMzIsMTA5LDEwNSwxMTUsCisgICAgMTE1LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTQsNjIsMCwKKyAgICAwLDAsNDEsNiwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMTE0LDMzLDAsMCwwLDExNCw2MywwLDAsMCwxMTQsNjQsMCwwLDAsCisgICAgMTE0LDUwLDAsMCwwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwKKyAgICAxMTAsMTA1LDExMCwxMDMsNDEsNSwxMTQsMTA0LDAsMCwwLDIxOCw4LDEwMiwxMTcsMTA4LAorICAgIDEwOCwxMTAsOTcsMTA5LDEwMSwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDIxOCw4LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDMsMTA5LDExNSwxMDMsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDk1LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksMTU1LDEsCisgICAgMCwwLDExNSwxMCwwLDAsMCwwLDEwLDE0LDEsMTYsMSw0LDEsMjIsCisgICAgMSwxMTQsMTI3LDAsMCwwLDk5LDQsMCwwLDAsMCwwLDAsMCwxMSwKKyAgICAwLDAsMCwyMiwwLDAsMCw2NywwLDAsMCwxMTUsMTM2LDEsMCwwLAorICAgIDEwNSwwLDEyNSw0LDEyNCwyLDEwMCwxLDEwNyw5LDExNCwyMiwxMjQsMiwxMjQsNCwKKyAgICAxMDAsMiw2MCwwLDExMCw0LDEwMCwzLDEyNSwyLDEyNCwzLDEwMCwxLDEwNyw5LAorICAgIDExNCw0MiwxMjQsMywxMjQsNCwxMDAsNCw2MCwwLDEyNCwwLDEwMCwxLDEwMCw1LAorICAgIDEzMywyLDI1LDAsMTI1LDUsMTI0LDAsMTAwLDUsMTAwLDYsMTMzLDIsMjUsMCwKKyAgICAxMjUsNiwxMjQsMCwxMDAsNiwxMDAsNywxMzMsMiwyNSwwLDEyNSw3LDEyNCw1LAorICAgIDExNiwwLDEwNywzLDExNCwxMjQsMTAwLDgsMTA2LDEsMTI0LDIsMTI0LDUsMTMxLDIsCisgICAgMTI1LDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LDgsMTMxLDIsMSwwLDExNiw0LAorICAgIDEyNCw4LDEwMiwxLDEyNCw0LDE0MiwxLDEzMCwxLDExMCw4NiwxMTYsNSwxMjQsNiwKKyAgICAxMzEsMSwxMDAsNSwxMDcsMywxMTQsMTY4LDEwMCwxMCwxMDYsMSwxMjQsMiwxMzEsMSwKKyAgICAxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LDYsCisgICAgMTI0LDgsMTMxLDEsMTMwLDEsMTEwLDQyLDExNiw1LDEyNCw3LDEzMSwxLDEwMCw1LAorICAgIDEwNywzLDExNCwyMTAsMTAwLDExLDEwNiwxLDEyNCwyLDEzMSwxLDEyNSw4LDExNiwyLAorICAgIDEwNiwzLDEwMCw5LDEyNCw4LDEzMSwyLDEsMCwxMTYsNiwxMjQsOCwxMzEsMSwKKyAgICAxMzAsMSwxMjQsMSwxMDAsMSwxMDcsOSwxNDQsMSwxMTQsMTI0LDEyMSwxNiwxMTYsNywKKyAgICAxMjQsMSwxMDAsMTIsMjUsMCwxMzEsMSwxMjUsOSw4NywwLDExMCwyMiw0LDAsCisgICAgMTE2LDgsMTA3LDEwLDE0NCwxLDExNCwyLDEsMCwxLDAsMSwwLDg5LDAsCisgICAgMTEwLDUwLDg4LDAsMTE2LDksMTI0LDYsMTMxLDEsMTI0LDksMTA3LDMsMTQ0LDEsCisgICAgMTE0LDUyLDEwMCwxMywxMDYsMSwxMjQsMiwxMzEsMSwxMjUsOCwxMTYsMiwxMDYsMywKKyAgICAxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LDQsMTI0LDgsMTAyLDEsMTI0LDQsCisgICAgMTQyLDEsMTMwLDEsMTIxLDE2LDEyNCwxLDEwMCwxNCwyNSwwLDEwMCwxNSw2NCwwLAorICAgIDEyNSwxMCw4NywwLDExMCwyMiw0LDAsMTE2LDgsMTA3LDEwLDE0NCwxLDExNCw5MCwKKyAgICAxLDAsMSwwLDEsMCw4OSwwLDExMCwzNCw4OCwwLDExNiw5LDEyNCw3LAorICAgIDEzMSwxLDEyNCwxMCwxMDcsMywxNDQsMSwxMTQsMTI0LDExNiw0LDEwMCwxMywxMDYsMSwKKyAgICAxMjQsMiwxMzEsMSwxMDIsMSwxMjQsNCwxNDIsMSwxMzAsMSwxMjQsMCwxMDAsNywKKyAgICAxMDAsMSwxMzMsMiwyNSwwLDgzLDAsNDEsMTYsOTcsMTIyLDEsMCwwLDg2LAorICAgIDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA0LDEwMSw5NywxMDAsCisgICAgMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsCisgICAgNDUsMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMDMsOTcsCisgICAgMTA1LDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsCisgICAgMTE1LDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCw0MSwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNiwxMDQsOTcsMTE2LAorICAgIDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLAorICAgIDMyLDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsOTcsMTE0LAorICAgIDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDExNywxMTUsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCw5OSwxMDEsMzIsMTAxLDExNCwxMTQsMTExLAorICAgIDExNCwzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LAorICAgIDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExNSwKKyAgICAzMiwxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMzIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLAorICAgIDMyLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTE1LDExNiwKKyAgICA5NywxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LAorICAgIDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsCisgICAgMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMTQsMTAyLDAsMCwwLDEyMiwKKyAgICAxMCw2MCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw2MiwxMTQsMzcsMCwwLDAsCisgICAgMTE0LDE0LDAsMCwwLDIzMyw4LDAsMCwwLDIzMywxMiwwLDAsMCwxMjIsCisgICAgMzAsOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwKKyAgICAxMTQsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsCisgICAgMiwxMjMsMTI1LDEyMiw0MywxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLAorICAgIDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LAorICAgIDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LAorICAgIDEyMiw0OCwxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsCisgICAgMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDEwNSwxMjIsMTAxLAorICAgIDMyLDExMSwxMDIsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDUsMTEwLDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDIxOCw1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTIyLDI2LDk4LDEyMSwxMTYsMTAxLDk5LAorICAgIDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDExNiw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LAorICAgIDMyLDEyMywzMywxMTQsMTI1LDIxOCw0LDExNSwxMDUsMTIyLDEwMSwxMDgsMywwLDAsMCwKKyAgICAyNTUsMTI3LDI1NSwxMjcsMywwLDQxLDEwLDIxOCwxMiw3Nyw2NSw3MSw3Myw2Nyw5NSwKKyAgICA3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsNTAsMCwwLDAsMTE0LDExOCwwLDAsMCwKKyAgICAyMTgsMTYsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LAorICAgIDEwMywxMDEsMTE0LDEwMywwLDAsMCwxMTQsMzMsMCwwLDAsMjE4LDgsNjksNzksCisgICAgNzAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxNiwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLAorICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjEsMCwwLDAsNDEsMTEsMTE0LDU2LDAsMCwKKyAgICAwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsCisgICAgMTAyLDAsMCwwLDExNCwzNywwLDAsMCw5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwKKyAgICAxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDUsMTA5LDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LAorICAgIDk3LDExOSw5NSwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDkwLDgsMTE0LDk3LAorICAgIDExOSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE0LDc5LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCwyNSw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwKKyAgICA5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LAorICAgIDE3MiwxLDAsMCwxMTUsNzYsMCwwLDAsMCwxMSw0LDEsOCwxLDEwLAorICAgIDMsNCwxLDgsMSw4LDEsMTIsMSwxMiwxLDEyLDEsOCwxLDEyLAorICAgIDEsMTIsMSwxNCwxLDEyLDEsMTAsMSwxMiwxLDEwLDEsMTIsMSwxMCwKKyAgICAxLDEyLDEsOCwxLDEwLDEsMiwxLDE2LDEsMTYsMSw2LDIsMTQsCisgICAgMSwxMCwxLDEyLDEsMTIsMSwyLDEsMTYsMSwxNiwxLDYsMiwxNCwKKyAgICAxLDEyLDEsNiwxLDExNCwxMzksMCwwLDAsOTksNCwwLDAsMCwwLAorICAgIDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgODIsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDAsMTMxLDEsMTI1LDQsMTE2LDIsCisgICAgMTI0LDQsMTE2LDMsMTMxLDIsMTE0LDU4LDExNiw0LDEwNiw1LDEwMCwxLDEyNCwyLAorICAgIDEzMSwyLDEsMCwxMjQsMywxMDAsMiwxMDcsOSwxMTQsNTIsMTE2LDYsMTA2LDcsCisgICAgMTI0LDQsMTI0LDMsMTMxLDIsMSwwLDEyNCw0LDgzLDAsMTEwLDIwLDExNiw4LAorICAgIDEwMCwzLDEwNiw5LDEyNCwyLDEzMSwxLDEyNCwxLDEyNCwyLDEwMCw0LDE0MSwzLAorICAgIDEzMCwxLDEwMCwyLDgzLDAsNDEsNSwxMjIsNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwKKyAgICAxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCwKKyAgICA5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTIyLDIxLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsCisgICAgMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLAorICAgIDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLAorICAgIDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMiwxMTQsMTAyLDAsMCwwLDExNCwzNywKKyAgICAwLDAsMCw0MSwxMCwyMTgsNywxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDkwLDUsCisgICAgMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksCisgICAgMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDExOCwwLAorICAgIDAsMCwxMTQsMTMzLDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLDkwLDE2LDk1LAorICAgIDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LAorICAgIDEwMywwLDAsMCwxMTQsNTAsMCwwLDAsNDEsNSwxMTQsNTYsMCwwLDAsCisgICAgMTE0LDEwMiwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDk0LDAsMCwwLDIxOCwKKyAgICA0LDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw5NSw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMjcsMSwwLDAsMTE1LDE2LDAsMCwwLAorICAgIDAsMiwxMCwxLDEwLDEsMTIsMSw4LDEsMTIsMSw2LDIsMTAsMSwKKyAgICAxMTQsMTQ1LDAsMCwwLDExNCw2MiwwLDAsMCw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA1NiwwLDAsMCwxMTYsMCwxMTYsMSwxMzEsMSwxMjUsMywxMjQsMywxMDYsMiwKKyAgICAxMTYsMywxMjQsMSwxMzEsMSwxMzEsMSwxLDAsMTI0LDMsMTA2LDIsMTE2LDMsCisgICAgMTI0LDIsMTMxLDEsMTMxLDEsMSwwLDEyNCwzLDEwNiwyLDExNiw0LDEwNiw1LAorICAgIDEyNCwwLDEzMSwxLDEzMSwxLDEsMCwxMjQsMyw4MywwLDQxLDEsMTIyLDgwLAorICAgIDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSwKKyAgICA5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsOTgsMTIxLDExNiwxMDEsOTksCisgICAgMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsOTgsMTIxLDExNiwxMDEsNDUsOTksMTExLAorICAgIDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwKKyAgICA0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLDExNCwxMzIsMCwKKyAgICAwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE5LDAsMCwwLDExNCwKKyAgICAxNDAsMCwwLDAsOTAsNSwxMDAsMTE3LDEwOSwxMTIsMTE1LDQxLDQsMTE0LDE0NCwwLAorICAgIDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LDU2LDAsMCwKICAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCwxMCw5NSw5OSw5NywxMDgsOTksOTUsMTA5LDExMSwxMDAsMTAxLDEwNiwxLDAsMCwKLSAgICAxMTUsMTIsMCwwLDAsMCwyLDMsMSwxOSwxLDEzLDEsMTEsMywxMCwKLSAgICAxLDExNCw5OSwwLDAsMCwyMTgsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsCi0gICAgMTIxLDExNCwzMSwwLDAsMCw5OSwxLDAsMCwwLDEsMCwwLDAsMywKLSAgICAwLDAsMCw0LDAsMCwwLDcxLDAsMCwwLDExNSw3NSwwLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNyw1LDAsMTE0LAotICAgIDcxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsMCwxMTUsNDMsCi0gICAgMCwxMDAsMywwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTYsNCwwLDEyNCwwLAotICAgIDAsMTA2LDUsMCwxMjQsMiwwLDE0MCwwLDAsMTAwLDQsMCwxMTYsMCwwLAotICAgIDEwNiw2LDAsMTMxLDEsMSwxLDEwMCw1LDAsODMsNDEsNywxMjIsNjEsODAsCi0gICAgMTE0LDEwNSwxMTAsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLAotICAgIDMyLDExNiwxMTEsMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsCi0gICAgNDcsODAsODksODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LAotICAgIDExNSwzMiwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCwKLSAgICA3LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMiwyLDM1LDMyLDExNCw1NiwwLDAsCi0gICAgMCw3OCw0MSwyLDExNCwxMDEsMCwwLDAsMTE0LDEwMiwwLDAsMCw0MSw3LAotICAgIDExNCw4LDAsMCwwLDExNCw2OSwwLDAsMCwyMTgsNywxMTgsMTAxLDExNCw5OCwKLSAgICAxMTEsMTE1LDEwMSwxMTQsMTAsMCwwLDAsMjE4LDUsMTEyLDExNCwxMDUsMTEwLDExNiwxMTQsCi0gICAgNDksMCwwLDAsMjE4LDYsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsNDEsMywxMTQsNzcsCi0gICAgMCwwLDAsMTE0LDEwMCwwLDAsMCwyMTgsNCw5NywxMTQsMTAzLDExNSwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE4LAotICAgIDEsMCwwLDExNSw4LDAsMCwwLDAsMiwxOCwxLDE1LDEsMTAsMSwKLSAgICAxMTQsMTA3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDg0LDAsMCwwLDEwMCwKLSAgICAxLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMSwKLSAgICAwLDEyNSwxLDAsMTIxLDEzLDAsMTE2LDAsMCwxMDYsMSwwLDEyNSwyLDAsCi0gICAgODcsMTEwLDMwLDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw2NiwwLDEsMSwKLSAgICAxLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEyNSwyLDAsODksMTEwLDEsCi0gICAgMCw4OCwxMjQsMiwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LAotICAgIDEsMCw4Myw0MSw2LDEyMiwyNTIsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsCi0gICAgMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsMTA5LDk3LDExNiw5OSwxMDQsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwzMiwxMDQsOTcsCi0gICAgMTEwLDEwMCwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAyLAotICAgIDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsNDAsMTE1LAotICAgIDEwMSwxMDgsMTAyLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwKLSAgICAzMiw5NSwxMTAsOTcsMTA5LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsCi0gICAgMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTAxLDEwMCwKLSAgICAzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTA1LDExNSwxMTEsMTEwLDMyLDEwMiw5NywxMDUsMTA4LAotICAgIDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDc4LDk5LDIsMCwwLDAsMCwwLDAsMCw0LDAsMCwKLSAgICAwLDUsMCwwLDAsMzEsMCwwLDAsMTE1LDg5LDAsMCwwLDEyNCwxLAotICAgIDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyNCwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMjUsMSwwLDExMCw0NiwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNywKLSAgICAzLDAsMTE0LDcwLDAsMTE2LDEsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMjQsMSwwLDEwMiwyLDAsMjIsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLAotICAgIDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLAotICAgIDEyNCwzLDAsMTQyLDIsMCw4Myw0MSwzLDc4LDEyMiwzMCwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM3LDExNSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsCi0gICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwzNywxMTUsMjE4LDQsMTEwLDk3LDEwOSwxMDEsCi0gICAgNDEsMiwxMTQsMTA4LDAsMCwwLDIxOCwxMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LAotICAgIDExNCwxMTQsMTExLDExNCw0MSw0LDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwxMDYsMCwwLDAsOTAsNiwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDQxLDEsCi0gICAgMjE4LDYsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDE5LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LAotICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDEzNCwxLDAsMCwxMTUsMTIsMCwwLDAsCi0gICAgMCwxLDEyLDEsMTIsMSwxNSwxLDYsMSwyNSwxLDEyMiw0MCw5NSw5OSwKLSAgICAxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwKLSAgICAxMTUsNjIsNDYsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LAotICAgIDExNCw5NywxMTIsMTEyLDEwMSwxMTQsOTksMiwwLDAsMCwwLDAsMCwwLDMsCi0gICAgMCwwLDAsNywwLDAsMCw4MywwLDAsMCwxMTUsOTIsMCwwLDAsCi0gICAgMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDMsCi0gICAgNCwwLDY4LDkzLDQ2LDAsMTI1LDIsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LAotICAgIDIsMCwxMzEsMiwwLDExNCwxOSwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMiwKLSAgICAwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTMxLDMsMCwKLSAgICAxLDExMywxOSwwLDg3LDEyNCwwLDAsMTA2LDMsMCwxMDYsNCwwLDEyNCwxLAotICAgIDAsMTA2LDMsMCwxMzEsMSwwLDEsMTAwLDAsMCw4Myw0MSw1LDc4LDIxOCwKLSAgICAxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsCi0gICAgOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTUsOTUsMjE4LDcsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSw0MSw1LDIxOCw3LAotICAgIDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsCi0gICAgMjE4LDcsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDgsOTUsOTUsMTAwLDEwNSw5OSwKLSAgICAxMTYsOTUsOTUsMjE4LDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw0MSwzLDkwLDMsMTEwLAotICAgIDEwMSwxMTksOTAsMywxMTEsMTA4LDEwMCwxMTQsNTQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDUsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTQ1LDEsMCwwLDExNSw4LDAsMCwwLDAsMSwyNSwxLDE1LAotICAgIDEsMjksMSwxMjIsMjYsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsCi0gICAgNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExOSwxMTQsOTcsMTEyLDQxLAotICAgIDMsMjE4LDEwLDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTQsMTIyLDAsCi0gICAgMCwwLDIxOCw5LDc4LDk3LDEwOSwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDQxLDMsMTE0LAotICAgIDExMSwwLDAsMCwxMTQsMTEyLDAsMCwwLDExNCwxMjIsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTExLDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKLSAgICAxMSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwxMjYsMSwwLDAsCi0gICAgMTE1LDE0LDAsMCwwLDAsOCwyMSw3LDMsMSwxMywxLDEzLDIsMTcsCi0gICAgNSwxMywxLDExNCwxMjUsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODQsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLAotICAgIDAsMTI1LDIsMCwxMjUsMywwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLAotICAgIDExNCw4MCwwLDExNiwxLDAsMTI0LDMsMCwxMzEsMSwwLDExNCw4MCwwLDEwMCwKLSAgICAyLDAsMTI1LDQsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDQsMCwxMDYsNCwKLSAgICAwLDEyNCwzLDAsMTAwLDMsMCwyNSwxMzEsMSwwLDExNiw1LDAsMTMxLDIsCi0gICAgMCwxLDEyNCwyLDAsODMsNDEsNCwxMjIsMTU1LDg0LDExNCwxMjEsMzIsMTE2LDExMSwKLSAgICAzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLAotICAgIDk3LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTA4LAotICAgIDEwMiw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLAotICAgIDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsMzIsCi0gICAgMTA1LDExMCwzMiwxMDIsOTcsMTE4LDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDQ0LDc4LDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwKLSAgICAxMjMsMTI1LDU4LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsMTE0LDYxLDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLAotICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMywwLDAsMCwxMTQsNjIsMCwKLSAgICAwLDAsMTE0LDYzLDAsMCwwLDExNCw0OSwwLDAsMCwyMTgsMTMsNzMsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQxLDUsMTE0LDExMCwwLAotICAgIDAsMCwyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMjE4LDYsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwyMTgsOCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwzLAotICAgIDEwOSwxMTUsMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsMTE1LDEwNCwxMDUsMTA5LDE1NCwxLDAsMCwxMTUsMTAsMCwwLDAsMCwxMCwKLSAgICAyMSwxLDI0LDEsNiwxLDI5LDEsMTE0LDEzMiwwLDAsMCw5OSw0LDAsCi0gICAgMCwwLDAsMCwwLDAsMTEsMCwwLDAsMTksMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDI0MCwxLDAsMCwxMDUsMCwwLDEyNSw0LDAsMTI0LDIsMCwKLSAgICAxMDAsMSwwLDEwNyw5LDAsMTE0LDMxLDAsMTI0LDIsMCwxMjQsNCwwLDEwMCwKLSAgICAyLDAsNjAsMTEwLDYsMCwxMDAsMywwLDEyNSwyLDAsMTI0LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw5LDAsMTE0LDU5LDAsMTI0LDMsMCwxMjQsNCwwLDEwMCw0LAotICAgIDAsNjAsMTI0LDAsMCwxMDAsMSwwLDEwMCw1LDAsMTMzLDIsMCwyNSwxMjUsCi0gICAgNSwwLDEyNCwwLDAsMTAwLDUsMCwxMDAsNiwwLDEzMywyLDAsMjUsMTI1LAotICAgIDYsMCwxMjQsMCwwLDEwMCw2LDAsMTAwLDcsMCwxMzMsMiwwLDI1LDEyNSwKLSAgICA3LDAsMTI0LDUsMCwxMTYsMCwwLDEwNywzLDAsMTE0LDE2OCwwLDEwMCw4LAotICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEyNCw1LDAsMTMxLDIsMCwxMjUsOCwwLAotICAgIDExNiwyLDAsMTAwLDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsMywwLAotICAgIDEyNCw4LDAsMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTEwLDExOSwwLDExNiwKLSAgICA0LDAsMTI0LDYsMCwxMzEsMSwwLDEwMCw1LDAsMTA3LDMsMCwxMTQsMjI5LAotICAgIDAsMTAwLDEwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwKLSAgICAxMTYsMiwwLDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDUsMCwKLSAgICAxMjQsOCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNTgsMCwxMTYsNCwwLDEyNCwKLSAgICA3LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDMxLDEsMTAwLDExLAotICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMiwwLAotICAgIDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDUsMCwxMjQsOCwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsCi0gICAgMjI2LDEsMTIxLDIwLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwxMiwwLDI1LDEzMSwKLSAgICAxLDAsMTI1LDksMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsCi0gICAgMTE0LDgzLDEsMSwxLDEsODksMTEwLDYyLDAsODgsMTE2LDgsMCwxMjQsNiwKLSAgICAwLDEzMSwxLDAsMTI0LDksMCwxMDcsMywwLDExNCwxNDUsMSwxMDAsMTMsMCwKLSAgICAxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwyLDAsMTAwLAotICAgIDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsMywwLDEyNCw4LDAsMTI0LAotICAgIDQsMCwxNDEsMSwwLDEzMCwxLDAsMTIxLDE4LDAsMTI0LDEsMCwxMDAsMTQsCi0gICAgMCwyNSwxMDAsMTUsMCw2NCwxMjUsMTAsMCw4NywxMTAsMTgsMCw0LDExNiw3LAotICAgIDAsMTA3LDEwLDAsMTE0LDE4MywxLDEsMSwxLDg5LDExMCw0MywwLDg4LDExNiwKLSAgICA4LDAsMTI0LDcsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsMTE0LDIyNiwKLSAgICAxLDExNiwzLDAsMTAwLDEzLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTI0LDAsMCwxMDAsNywwLDEwMCwKLSAgICAxLDAsMTMzLDIsMCwyNSw4Myw0MSwxNiw5NywxMjIsMSwwLDAsODYsOTcsCi0gICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDQsMTAxLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCw0NSwKLSAgICAxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk3LDEwMyw5NywxMDUsCi0gICAgMTEwLDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsCi0gICAgMzIsNDAsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDQxLDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsCi0gICAgOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsCi0gICAgOTgsMTIxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTExLDExNiwxMDQsMTAxLDExNCwzMiw5NywxMTQsMTAzLAotICAgIDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE3LDExNSwxMDEsMTAwLDMyLAotICAgIDExNiwxMTEsMzIsMTAxLDExMCwxMDQsOTcsMTEwLDk5LDEwMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LAotICAgIDMyLDExNCwxMDEsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDEwNSwxMTAsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMTUsMTE2LDk3LAotICAgIDEwOCwxMDEsNDYsMzIsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAwLDk3LDExNiw5NywzMiwxMDUsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExNCwxMTcsMTEwLDk5LDk3LDExNiwxMDEsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDExNCwxMDgsMCwwLDAsMTIyLDEwLAotICAgIDYwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDYyLDExNCwzNywwLDAsMCwxMTQsCi0gICAgMTQsMCwwLDAsMjMzLDgsMCwwLDAsMjMzLDEyLDAsMCwwLDEyMiwzMCwKLSAgICA5OCw5NywxMDAsMzIsMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwKLSAgICAzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDEyMiwyLAotICAgIDEyMywxMjUsMTIyLDQzLDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsCi0gICAgMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLAotICAgIDQ4LDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTA1LDEyMiwxMDEsMzIsCi0gICAgMTExLDEwMiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsMjE4LDUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMjIsMjYsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTIzLDMzLDExNCwxMjUsMjE4LDQsMTE1LDEwNSwxMjIsMTAxLDEwOCwzLDAsMCwwLDI1NSwKLSAgICAxMjcsMjU1LDEyNywzLDAsNDEsOSwyMTgsMTIsNzcsNjUsNzEsNzMsNjcsOTUsNzgsCi0gICAgODUsNzcsNjYsNjksODIsMTE0LDQ5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LAotICAgIDEwOSwwLDAsMCwxMTQsMzMsMCwwLDAsMjE4LDgsNjksNzksNzAsNjksMTE0LAotICAgIDExNCwxMTEsMTE0LDExNCwxNiwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwxMTQsMjEsMCwwLDAsNDEsMTEsMTE0LDU1LDAsMCwwLDIxOCwxMiwKLSAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCw5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LAotICAgIDEwNSwxMDgsMTE1LDkwLDUsMTA5LDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwKLSAgICAxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsCi0gICAgMTA1LDEyMiwxMDEsMTE0LDc3LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LAotICAgIDEwNSwxMjIsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwyNSw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsCi0gICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDE3MSwxLDAsCi0gICAgMCwxMTUsNzYsMCwwLDAsMCwxMSw2LDEsMTIsMSwxMywzLDYsMSwKLSAgICAxMiwxLDEwLDEsMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDEzLDEsCi0gICAgMTgsMSwxOCwxLDE1LDEsMTMsMSwxNSwxLDE4LDEsMTUsMSwxMywxLAotICAgIDEyLDEsMTIsMSwzLDEsMjAsMSwxMywxLDUsMiwxOCwxLDE1LDEsCi0gICAgMTMsMSwxNSwxLDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwKLSAgICA5LDEsMTE0LDE0MywwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNSwwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxMTIsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLAotICAgIDExNiwyLDAsMTI0LDQsMCwxMTYsMywwLDEzMSwyLDAsMTE0LDc1LDAsMTE2LAotICAgIDQsMCwxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCwzLDAsMTAwLAotICAgIDIsMCwxMDcsOSwwLDExNCw3MSwwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCwxLDEyNCw0LDAsODMsMTE2LDcsMCwxMDAsCi0gICAgMywwLDEwNiw4LDAsMTI0LDIsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDEsCi0gICAgMCwxMDAsNSwwLDEyNCwyLDAsMTMxLDEsMiwxMzAsMSwwLDEwMCwyLDAsCi0gICAgODMsNDEsNiwxMjIsNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwKLSAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwKLSAgICAxMDAsMzIsOTgsMTIxLDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LAotICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsCi0gICAgNDYsMTIyLDIxLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsCi0gICAgMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsOSwyMTgsNywKLSAgICAxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwKLSAgICAxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDEwNywwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LAotICAgIDExMiw5MCwxNiw5NSwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMDksMCwwLDAsMTE0LDQ5LDAsMCwwLDQxLDUsMTE0LAotICAgIDU1LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5MiwKLSAgICAwLDAsMCwyMTgsNCw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwOSwxMTIsMTA1LAotICAgIDEwOCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjI2LDEsMCwwLDExNSwKLSAgICAxNiwwLDAsMCwwLDIsMTUsMSwxNSwxLDEzLDEsMTIsMSwxNiwxLAotICAgIDQsMiwxOCwxLDExNCwxNDksMCwwLDAsMTE0LDYxLDAsMCwwLDk5LDMsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDc2LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwKLSAgICAwLDEyNSwzLDAsMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwKLSAgICAxMjQsMiwwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMSwKLSAgICAxMjQsMywwLDgzLDQxLDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLAotICAgIDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLAotICAgIDExNiwxMTEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLAotICAgIDMyLDMyLDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLAotICAgIDk3LDExNCwxMTQsOTcsMTIxLDExNCwxMzcsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLAotICAgIDExMCwxMDAsMTE0LDE5LDAsMCwwLDExNCwxNDQsMCwwLDAsOTAsNSwxMDAsMTE3LAotICAgIDEwOSwxMTIsMTE1LDQxLDQsMTE0LDE0OCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwKLSAgICAxNDIsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwKLSAgICAxMTYsMTExLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIzOCwxLDAsMCwxMTUsCi0gICAgMTAsMCwwLDAsMCwzLDEyLDEsMTksMSwxOSwxLDIyLDEsMTE0LDE1MiwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKLSAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSw4OSwwLDAsMCwxMDAsMSwwLAotICAgIDEwMCwyLDAsMTA4LDAsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsMTA2LDMsMCwxMjUsMiwwLDEyNCwxLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsMSwwLDEwNiw1LDAsCi0gICAgMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwKLSAgICA2LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTAwLDEsMCwyNSwxMzEsCi0gICAgMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsMTIxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwKLSAgICAxMTYsMTE0LDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExMCwxMDUsMTE4LAotICAgIDEwMSwxMTQsMTE1LDk3LDEwOCwzMiwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsMzIsMTE1LDExNywKLSAgICAxMTIsMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDMyLAotICAgIDMyLDMyLDMyLDExNCw2MSwwLDAsMCw3OCw4NCw0MSw3LDIxOCw4LDExNiwxMTEsCi0gICAgMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE0LDUxLDAsMCwwLDkwLDcsNjYsMTIxLDExNiwKLSAgICAxMDEsMTE1LDczLDc5LDkwLDgsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDkwLDE1LAotICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsOTUsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLAotICAgIDI1LDczLDExMCw5OSwxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLDExOSwxMDgsCi0gICAgMTA1LDExMCwxMDEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMTgsNiwxMDAsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDQxLDUsMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwKLSAgICAxMDEsMTE1LDExNCwxNTMsMCwwLDAsOTAsMjEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKLSAgICA5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDIxOCw4LAotICAgIDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw5MCwxNSwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwKLSAgICAxMDEsOTUsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsCi0gICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNDgsMSwwLDAsMTE1LDEwLDAsMCwwLAotICAgIDAsNSwxMiwxLDE4LDEsMTUsMSwxOCwxLDExNCwxNTcsMCwwLDAsMTE0LAotICAgIDEyOSwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKLSAgICAxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LAotICAgIDk5LDIsMCwwLDAsMiwwLDAsMCw5LDAsMCwwLDE5LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw4OSwxLDAsMCwxMjQsMSwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsNzMsMCwxMDAsMiwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMiwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsNzMsMCwxMjEsMTksMCwxMjQsMiwKLSAgICAwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsODcsMTEwLDE4LAotICAgIDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw3MiwwLDEsMSwxLDg5LDExMCwKLSAgICAxLDAsODgsMTE2LDMsMCwxMDYsNCwwLDEyNCwwLDAsMTI0LDIsMCwxMDAsCi0gICAgNCwwLDEyNCwxLDAsMTMxLDIsMSwxMjUsNCwwLDEwMCw1LDAsMTI0LDQsCi0gICAgMCw5NSw1LDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDE5NCwwLAotICAgIDEyMCw3MywwLDExNiw2LDAsMTMxLDAsMCw2OCw5Myw1OCwwLDkyLDIsMCwKLSAgICAxMjUsNSwwLDEyNSw2LDAsMTI0LDEsMCwxMDYsNywwLDExNiw4LDAsMTI0LAotICAgIDYsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDEyOCwwLDEyNCw1LDAsMTI0LDAsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsMCwxMjQsMiwwLDEyNCw0LDAsCi0gICAgOTUsOSwwLDgwLDExMywxMjgsMCw4NywxMDAsMSwwLDgzLDEyNCwzLDAsMTE2LAotICAgIDEwLDAsMTA3LDgsMCwxMTQsMjMsMSwxMTYsMCwwLDEyNCwyLDAsMTAwLDYsCi0gICAgMCwxMzEsMiwwLDExNCwzMiwxLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDExLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDE4LDAsNCwxMTYsMiwKLSAgICAwLDEwNywxMCwwLDExNCw0LDEsMSwxLDEsODksMTEzLDMyLDEsODgsMTI0LAotICAgIDcsMCwxMTQsMzIsMSwxMDMsMCwwLDEyNCw0LDAsOTUsMTIsMCwxMTAsOSwKLSAgICAwLDEyNCwzLDAsMTI0LDQsMCw5NSwxMiwwLDEyNCw0LDAsMTA2LDEyLDAsCi0gICAgMTAzLDAsMCwxMDcsMiwwLDExNCw4NSwxLDEyNCwxLDAsMTE0LDg1LDEsMTE2LAotICAgIDEzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCw3LDAsMjUsMTI1LDgsMCwxMjQsCi0gICAgNCwwLDEwNiwxMiwwLDEwNiwxNCwwLDEyNCw4LDAsMTMxLDEsMCwxLDEyNCwKLSAgICA0LDAsODMsNDEsOCw5Nyw2MSwxLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LAotICAgIDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwKLSAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDExMSwKLSAgICAzMiwxMDUsMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NCwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE2LDExMSwzMiw5NywzMiwKLSAgICAxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsCi0gICAgMTIxLDMyLDExMiw5NywxMTYsMTA0LDExNSw0NiwzMiwzMiw2NSwxMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTA1LDExNSwzMiwxMTUsCi0gICAgMTE3LDEwMiwxMDIsMTA1LDk5LDEwNSwxMDEsMTEwLDExNiw0NCwzMiwxMTYsMTA0LDExMSwxMTcsMTAzLAotICAgIDEwNCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwKLSAgICAxMDUsMTE1LDEwMSwzMiwxMTcsMTE1LDEwMSwxMDIsMTE3LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNSwxMjEsMTE1LAotICAgIDExNiwxMDEsMTA5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTE2LDk3LDEwNywxMDEsMzIsOTcsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDEwNSwxMTYsMTE1LDMyLDExMSwxMTAsMTA4LAotICAgIDEyMSwzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsNDEsMzIsOTcsMTE0LDEwMywKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsOSw2MCwxMTcsMTEwLDEwNywxMTAsMTExLAotICAgIDExOSwxMTAsNjIsMjE4LDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAotICAgIDEwMSwyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDYxLDAsMCwwLDQxLDE1LDExNCwxMTcsMCwKLSAgICAwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMjMsMCwwLAotICAgIDAsMjE4LDEwLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw5MCwxMyw5NSwKLSAgICAxMTUsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDI3LDk1LDEwMywKLSAgICAxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LAotICAgIDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsOTQsMCwwLDAsMTE0LDk1LAotICAgIDAsMCwwLDExNCwxMjksMCwwLDAsMjE4LDksOTUsODAsNzksODAsODUsNzYsCi0gICAgNjUsODQsNjksMTE0LDE2MSwwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw0MCwwLAotICAgIDAsMCwyMTgsNiw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDQxLDksMTE0LDEwOCwwLDAsCi0gICAgMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMjksMCwwLDAsCi0gICAgMTE0LDE1OCwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsMTIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw5NSw5OSwxMDgsOTcsMTE1LDExNSwyMTgsOCwxMTUsMTE3LDEwMiwxMDIsMTA1LAotICAgIDEyMCwxMDEsMTE1LDExNCwxNjEsMCwwLDAsOTAsNywxMDAsMTA1LDExNCwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMjMsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5LDIsMCwwLDExNSw2MCwwLAotICAgIDAsMCwwLDEyLDEyLDQsNiwxLDE1LDIsMywxLDE5LDEsMTMsMSwKLSAgICA1LDgsMjQsMSw5LDMsMTIsMSwyMiwxLDIxLDEsMTUsMSw5LDEsCi0gICAgNSwyLDQsMywxMiwyLDE1LDEsMywxLDE5LDEsMTMsMSw1LDIsCi0gICAgNiwxLDEyLDIsOSwxLDE1LDEsNiwxLDE2LDEsMTYsMiwxMTQsMTY5LAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDUsMCwwLDAsNjQsMCwwLDAsMTE1LDEyMSwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDkwLDQsMCwxMDAsMywwLDkwLDUsMCwxMDAsNCwwLDkwLDYsCi0gICAgMCwxMDEsNywwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwxLDAsCi0gICAgOTAsOCwwLDEwMSw3LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCw5MCw5LDAsMTAxLDcsMCwxMDAsOSwwLDEwMCw5LDAsMTAwLDEwLAotICAgIDAsMTAwLDExLDAsMTMyLDIsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsMCwKLSAgICAxMDAsOSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwxLDAsMTMxLDEsMCw5MCwKLSAgICAxMSwwLDEwMCw5LDAsODMsNDEsMTQsMjE4LDIxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwKLSAgICA2Miw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTAxLAotICAgIDk5LDEwOCw5NywxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg3LDEwNSwKLSAgICAxMTAsMTAwLDExMSwxMTksMTE1LDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTIyLAotICAgIDU5LDgzLDExMSwxMDIsMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsCi0gICAgOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsCi0gICAgOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSw5MiwxMjMsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSwxMjIsNjUsODMsMTExLAorICAgIDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTExLDk1LDk4LDEyMSwxMTYsMTAxLDk5LAorICAgIDExMSwxMDAsMTAxLDIzOSwxLDAsMCwxMTUsMTAsMCwwLDAsMCwzLDgsMSwKKyAgICAxNCwxLDE0LDEsMTYsMSwxMTQsMTQ4LDAsMCwwLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDYyLDAsMCwwLDEwMCwxLDEwMCwyLDEwOCwwLDEyNSwxLDExNiwxLDEwNiwKKyAgICAyLDEyNCwwLDEzMSwxLDEwNiwzLDEyNSwyLDEyNCwxLDEwNiw0LDEyNCwyLDEzMSwKKyAgICAxLDEyNSwzLDExNiwxLDEwNiw1LDEwMCwyLDEwMCwzLDEzMSwyLDEyNSw0LDEyNCwKKyAgICA0LDEwNiw2LDEyNCwwLDEwNiw2LDEyNCwzLDEwMCwxLDI1LDAsMTMxLDEsMTMxLAorICAgIDEsODMsMCw0MSw0LDEyMiwxMjEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDExNSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDk3LDExMCwxMDAsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExNiwxMTQsMTA1LAorICAgIDExMCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTEwLDEwNSwxMTgsMTAxLDExNCwxMTUsCisgICAgOTcsMTA4LDMyLDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLAorICAgIDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsNDYsMTAsMzIsMzIsMzIsMzIsCisgICAgMTE0LDYyLDAsMCwwLDc4LDg0LDQxLDcsMjE4LDgsMTE2LDExMSwxMDcsMTAxLDExMCwKKyAgICAxMDUsMTIyLDEwMSwxMTQsNTIsMCwwLDAsOTAsNyw2NiwxMjEsMTE2LDEwMSwxMTUsNzMsCisgICAgNzksOTAsOCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsOTAsMTUsMTAwLDEwMSwxMTYsCisgICAgMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsOTAsMjUsNzMsMTEwLAorICAgIDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCw3OCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSwKKyAgICA2OCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIxOCw2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsNDEsCisgICAgNSwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LAorICAgIDE0OSwwLDAsMCw5MCwyMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSw5NSwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsMjE4LDgsMTAxLDExMCw5OSwKKyAgICAxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLDE1LDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSw5NSwxMDAsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwyMTgsMTMsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDI0OSwxLDAsMCwxMTUsMTAsMCwwLDAsMCw1LDgsCisgICAgMSwxMiwxLDEwLDEsMTIsMSwxMTQsMTUzLDAsMCwwLDQxLDIsMTE0LDEyNCwKKyAgICAwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsCisgICAgMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk5LAorICAgIDIsMCwwLDAsMiwwLDAsMCw5LDAsMCwwLDE5LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxOCwxLDAsMCwxMjQsMSwxMDAsMSwxMDcsOCwxMTQsCisgICAgNjAsMTAwLDIsMTI1LDEsMTE2LDAsMTI0LDIsMTAwLDMsMTMxLDIsMTE0LDcwLDEyMSwKKyAgICAxNCwxMjQsMiwxMDYsMSwxMjQsMCwxMzEsMSwxMjUsMSw4NywwLDExMyw3MCw0LAorICAgIDAsMTE2LDIsMTA3LDEwLDExNCw1NiwxLDAsMSwwLDEsMCw4OSwwLDExMywKKyAgICA3MCw4OCwwLDExMCwxMCwxMTYsMywxMDYsNCwxMjQsMSwxMzEsMSwxMjUsMSwxMTYsCisgICAgNSwxMDYsNiwxMjQsMCwxMjQsMiwxMjQsMSwxMDAsNCwxNDEsMywxMjUsNCwxMDAsCisgICAgNSwxMjQsNCw5NSw3LDEyNCwyLDEwMCwxLDEwNyw4LDExNCwxNTYsMTIwLDU0LDExNiwKKyAgICA4LDEzMSwwLDY4LDAsOTMsNDAsOTIsMiwxMjUsNSwxMjUsNiwxMjQsMSwxMDYsCisgICAgOSwxMTYsMTAsMTI0LDYsMTMxLDEsMTMxLDEsMTE0LDEwOCwxMjQsNSwxMjQsMCwxMjQsCisgICAgMSwxMzEsMiwxMjUsMiwxMjQsMiwxMjQsNCw5NSwxMSw4MCwwLDExMywxMDgsODcsCisgICAgMCwxMDAsMSw4MywwLDEyNCwzLDExNiwxMiwxMDcsOCwxMTQsMjIyLDExNiwwLDEyNCwKKyAgICAyLDEwMCw2LDEzMSwyLDExNCwyMjgsMTIxLDE0LDEyNCwyLDEwNiwxMywxMjQsMCwxMzEsCisgICAgMSwxMjUsNyw4NywwLDExMCwyMCw0LDAsMTE2LDIsMTA3LDEwLDExNCwyMDgsMSwKKyAgICAwLDEsMCwxLDAsODksMCwxMTMsMjI4LDg4LDAsMTI0LDcsMTE0LDIyOCwxMDMsCisgICAgMCwxMjQsNCw5NSwxNCwxMTAsNiwxMjQsMywxMjQsNCw5NSwxNCwxMjQsNCwxMDYsCisgICAgMTQsMTAzLDAsMTA3LDIsMTQ0LDEsMTE0LDE0LDEyNCwxLDE0NCwxLDExNCwxNCwxMTYsCisgICAgMTUsMTI0LDEsMTMxLDEsMTAwLDcsMjUsMCwxMjUsOCwxMjQsNCwxMDYsMTQsMTA2LAorICAgIDE2LDEyNCw4LDEzMSwxLDEsMCwxMjQsNCw4MywwLDQxLDgsOTcsNjEsMSwKKyAgICAwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLAorICAgIDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMTEsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwKKyAgICAxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDQsMzIsCisgICAgMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDExMSwxMDIsMzIsCisgICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTIsOTcsMTE2LDEwNCwxMTUsNDYsCisgICAgMzIsMzIsNjUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwMSwxMDksMTEyLDExNiwxMjEsMzIsMTA4LAorICAgIDEwNSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE1LDExNywxMDIsMTAyLDEwNSw5OSwxMDUsMTAxLDExMCwKKyAgICAxMTYsNDQsMzIsMTE2LDEwNCwxMTEsMTE3LDEwMywxMDQsMzIsMTA1LDExNiwxMTUsMzIsMTEwLDExMSwKKyAgICAxMTYsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsMzIsMTE3LDExNSwxMDEsMTAyLAorICAgIDExNywxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTA5LDExNywxMTUsCisgICAgMTE2LDMyLDExNiw5NywxMDcsMTAxLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwKKyAgICAzMiwxMDUsMTE2LDExNSwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAorICAgIDk1LDk1LDQwLDQxLDMyLDk3LDExNCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsCisgICAgMTIyLDksNjAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDYyLDIxOCwxMiwxMDMsMTAxLDExNiwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNDEsMSwyMTgsNiwxMTEsMTE0LDEwNSwKKyAgICAxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgMTE0LDYyLDAsMCwwLDQxLDE3LDExNCwxMTIsMCwwLDAsMTE0LDE1NSwwLDAsCisgICAgMCwxMTQsMTAzLDAsMCwwLDExNCwzLDAsMCwwLDExNCw2NywwLDAsMCwKKyAgICAxMTQsMTE4LDAsMCwwLDIxOCwxMCw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsCisgICAgOTksOTAsMTMsOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LAorICAgIDIxOCwyNyw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDk2LDAsCisgICAgMCwwLDExNCw5NywwLDAsMCwxMTQsMTI0LDAsMCwwLDIxOCw5LDk1LDgwLAorICAgIDc5LDgwLDg1LDc2LDY1LDg0LDY5LDExNCwxNTcsMCwwLDAsMTE0LDE1NCwwLDAsCisgICAgMCwxMTQsNDAsMCwwLDAsMjE4LDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw0MSw5LAorICAgIDExNCwxMDIsMCwwLDAsOTAsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsCisgICAgMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LAorICAgIDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTksMTA4LDk3LDExNSwxMTUsMjE4LDgsMTE1LAorICAgIDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTQsMTU3LDAsMCwwLDkwLDcsMTAwLDEwNSwKKyAgICAxMTQsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTAsMiwwLAorICAgIDAsMTE1LDYyLDAsMCwwLDAsMTIsOCw0LDQsMSwxMCwyLDIsMSwKKyAgICAxNCwxLDE0LDEsOCwyLDEwLDgsMTYsMSw2LDMsOCwxLDE2LDEsCisgICAgMTQsMSwxMCwxLDYsMSw2LDIsNCwzLDgsMiwxMCwxLDIsMSwKKyAgICAxNCwxLDE0LDEsNiwyLDQsMSw4LDIsNiwxLDEyLDEsNiwxLAorICAgIDEyLDEsMTIsMiwxMTQsMTY1LDAsMCwwLDk5LDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDgwLAorICAgIDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwKKyAgICAyLDkwLDQsMTAwLDMsOTAsNSwxMDAsNCw5MCw2LDEwMSw3LDEwMCw1LDEwMCwKKyAgICA2LDEzMiwwLDEzMSwxLDkwLDgsMTAxLDcsMTAwLDcsMTAwLDgsMTMyLDAsMTMxLAorICAgIDEsOTAsOSwxMDEsNywxMDAsMTQsMTAwLDEwLDEwMCwxMSwxMzIsMSwxMzEsMSw5MCwKKyAgICAxMCwxMDEsNywxMDAsMTUsMTAwLDEyLDEwMCwxMywxMzIsMSwxMzEsMSw5MCwxMSwxMDAsCisgICAgOSw4MywwLDQxLDE2LDIxOCwyMSw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsCisgICAgMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLAorICAgIDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsCisgICAgMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDEwMSw5OSwxMDgsOTcsCisgICAgMTE0LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw4NywxMDUsMTEwLDEwMCwxMTEsCisgICAgMTE5LDExNSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDEyMiw1OSw4MywxMTEsCiAgICAgMTAyLDExNiwxMTksOTcsMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwKICAgICAxMTYsMTA0LDExMSwxMTAsNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsCiAgICAgMTE0LDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLAotICAgIDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywxMDMsNzAsCi0gICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLDEyMSwyMywwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMTYsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwwLDgzLAotICAgIDg3LDExMCwzNywwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjIsMCwxLDEsCi0gICAgMSwxMTYsMCwwLDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwwLDEyNCwxLDAsCi0gICAgMTMxLDIsMCw4Myw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICA0MSw1LDIxOCw3LDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsNzksMTEyLDEwMSwKLSAgICAxMTAsNzUsMTAxLDEyMSw5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSwKLSAgICA3OCw4NCw5NSw4NSw4Myw2OSw4MiwxMTQsNDIsMCwwLDAsOTAsMTgsNzIsNzUsCi0gICAgNjksODksOTUsNzYsNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsNzMsNzgsNjksCi0gICAgNDEsMiwyMTgsMyw5OSwxMDgsMTE1LDExNCw1LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMTEsMTEyLAotICAgIDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw4NywyLDAsMCwxMTUsCi0gICAgOCwwLDAsMCwwLDIsMywxLDIzLDEsMTMsMSwxMjIsMzYsODcsMTA1LAotICAgIDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsCi0gICAgMTAwLDEwMSwxMTQsNDYsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LAotICAgIDExNCwxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE0MywwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTE0LDIxLDAsMTI0LDAsMCwxMDYsMSwwLDEyNSwyLDAsMTEwLDksCi0gICAgMCwxMjQsMCwwLDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwzLDAsCi0gICAgMTAwLDEsMCwxMjQsMSwwLDEwMCwyLDAsMTE2LDQsMCwxMDYsNSwwLDEwMCwKLSAgICAwLDAsMTAwLDMsMCwxMzMsMiwwLDI1LDEzMSwwLDIsMTI1LDMsMCwxMjEsCi0gICAgNDcsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMSwwLDE0MywyNSwKLSAgICAwLDEyNSw0LDAsMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDQsMCwKLSAgICAxMzEsMiwwLDEyNSw1LDAsODcsMTAwLDAsMCw4MSw4Miw4OCw4NywxMTAsMjIsCi0gICAgMCw0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDEzOCwwLDEsMSwxLDEwMCwwLAotICAgIDAsODMsODksMTEwLDEsMCw4OCwxMjQsNSwwLDgzLDQxLDUsNzgsMTE0LDEyOCwKLSAgICAwLDAsMCw5MCwxMSwxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsCi0gICAgMTE0LDgyLDAsMCwwLDExNCwzMiwwLDAsMCw0MSwxMCwyMTgsMTEsNjgsNjksCi0gICAgNjYsODUsNzEsOTUsNjYsODUsNzMsNzYsNjgsMjE4LDE4LDgyLDY5LDcxLDczLDgzLAotICAgIDg0LDgyLDg5LDk1LDc1LDY5LDg5LDk1LDY4LDY5LDY2LDg1LDcxLDIxOCwxMiw4MiwKLSAgICA2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTQsNDksMCwwLDAsCi0gICAgMTE0LDgsMCwwLDAsMjE4LDcsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwxNzMsCi0gICAgMCwwLDAsMTE0LDE3MSwwLDAsMCw5MCwxMCw4MSwxMTcsMTAxLDExNCwxMjEsODYsCi0gICAgOTcsMTA4LDExNywxMDEsMTE0LDQyLDAsMCwwLDQxLDYsMTE0LDE3MiwwLDAsMCwKLSAgICAxMTQsMTI4LDAsMCwwLDkwLDEyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTUsCi0gICAgMTA3LDEwMSwxMjEsMTE0LDUsMCwwLDAsOTAsNCwxMDQsMTA3LDEwMSwxMjEsMjE4LDgsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDExMiw5NywxMTYsMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCi0gICAgOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NCwyLDAsMCwxMTUsMjIsMCwKLSAgICAwLDAsMCwyLDksMSwxMiwyLDksMSwxNSwxLDIyLDEsMywxLAotICAgIDE4LDEsMjksMSwxMywxLDksMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsMTExLDExOSwKKyAgICAxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDEyMiw2NSw4MywxMTEsMTAyLDExNiwxMTksCisgICAgOTcsMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwKKyAgICAxMTAsNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsCisgICAgMTExLDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLDEwMiwxMTcsMTA4LAorICAgIDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywxMDMsNzAsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDUwLDAsMCwwLDEyMSwxNCwxMTYsMCwxMDYsMSwxMTYsMCwxMDYsCisgICAgMiwxMjQsMSwxMzEsMiw4MywwLDQsMCwxMTYsMywxMDcsMTAsMTE0LDQ0LDEsCisgICAgMCwxLDAsMSwwLDExNiwwLDEwNiwxLDExNiwwLDEwNiw0LDEyNCwxLDEzMSwKKyAgICAyLDgzLDAsODgsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsNSwyMTgsNywKKyAgICA5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5MCw3LDc5LDExMiwxMDEsMTEwLDc1LDEwMSwxMjEsCisgICAgOTAsMTcsNzIsNzUsNjksODksOTUsNjcsODUsODIsODIsNjksNzgsODQsOTUsODUsCisgICAgODMsNjksODIsMTE0LDQyLDAsMCwwLDkwLDE4LDcyLDc1LDY5LDg5LDk1LDc2LAorICAgIDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LDQxLDIsMjE4LDMsCisgICAgOTksMTA4LDExNSwxMTQsNSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwKKyAgICAxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTAsMiwwLDAsMTE1LDgsMCwwLDAsCisgICAgMCwyLDIsMSwxNCwxLDE0LDEsMTIyLDM2LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCiAgICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAotICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLAotICAgIDc4LDk5LDQsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDE0LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNTgsMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDAsMCwKLSAgICAxMDcsOCwwLDExNCwzMSwwLDEwMCwwLDAsODMsMTIxLDE0LDAsMTE2LDEsMCwKLSAgICAxMjQsNCwwLDEzMSwxLDAsMSw4NywxMTAsMjIsMCw0LDExNiwyLDAsMTA3LAotICAgIDEwLDAsMTE0LDY5LDAsMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLAotICAgIDg4LDEyMCw4MSwwLDExNiwzLDAsMTMxLDAsMCw2OCw5Myw3MCwwLDkyLDIsCi0gICAgMCwxMjUsNSwwLDEyNSw2LDAsMTI0LDQsMCwxMDYsNCwwLDExNiw1LDAsCi0gICAgMTI0LDYsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDgwLDAsMTE2LDYsMCwxMDYsCi0gICAgNywwLDEyNCwxLDAsMTI0LDUsMCwxMjQsMSwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMCwxMDAsMSwwLDEyNCw0LDAsMTMxLDIsMSwxMjUsNywwLDEyNCw3LDAsCi0gICAgODMsMTEzLDgwLDAsODcsMTAwLDAsMCw4Myw0MSwyLDc4LDExNCwxNjAsMCwwLAotICAgIDAsNDEsOCwxMTQsMTc5LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwKLSAgICAwLDAsMTE0LDE2MywwLDAsMCwxMTQsOTQsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDExNCwxMjMsMCwwLDAsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLAotICAgIDEwOSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDgsMTE0LDE3MiwwLDAsMCwxMTQsCi0gICAgMTI4LDAsMCwwLDExNCwzNywwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsCi0gICAgMTE2LDExNCwxNzgsMCwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsMTY4LDAsMCwwLAotICAgIDExNCwxNjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDksMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDEwOSwKLSAgICAyLDAsMCwxMTUsMjYsMCwwLDAsMCwyLDE1LDEsMTIsMSw0LDEsCi0gICAgMywxLDE0LDEsMTMsMSw5LDEsMjIsMSwyMSwxLDksMSwxNSwxLAotICAgIDksMSwxMjIsMzEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LAotICAgIDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwKLSAgICAxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ1LDAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwKLSAgICAzLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwzNywwLDEyNCwzLDAsMTA2LDEsCi0gICAgMCw4MywxMDAsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTA4LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwKLSAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAotICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAotICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTgyLDAsCi0gICAgMCwwLDExNCwxMjksMCwwLDAsNDEsNCwxMTQsMTcyLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjUsMiwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCw3LDE4LDEsMTIsMSw3LDIsMTIyLDMzLDg3LDEwNSwxMTAsMTAwLAotICAgIDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxMiwxMTQsCi0gICAgMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LAotICAgIDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsMTc0LDAsCi0gICAgMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsCi0gICAgMTczLDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgzLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxNzAsMCwwLDAsNzUsMiwwLDAsCi0gICAgMTE1LDIwLDAsMCwwLDEyLDIsNiwzLDYsMyw2LDIsNiwyLDE4LAotICAgIDcsMTgsMTUsMywxLDIxLDE1LDMsMSwxMTQsMTcwLDAsMCwwLDk5LDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsCi0gICAgMCwwLDAsMTE1LDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLAotICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKLSAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MSwxMSwKLSAgICAyMTgsMTMsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDEyMiwKLSAgICA4Myw2Niw5NywxMTUsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTksCi0gICAgMTExLDEwOSwxMDksMTExLDExMCwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLAotICAgIDEwMCwzMiw5OCwxMjEsMzIsOTgsMTExLDExNiwxMDQsMzIsODMsMTExLDExNywxMTQsOTksMTAxLAotICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDgzLAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLAotICAgIDEwMCwxLDAsMjUsMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCwKLSAgICAxMDAsMSwwLDEzMSwyLDAsMTAwLDMsMCwyNSwxMjUsMywwLDEyNCwxLDAsCi0gICAgMTA2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDQsMCwyNSwxMjUsNCwwLAotICAgIDEyNCwzLDAsMTAwLDUsMCwxMDcsMiwwLDExMSw4NywwLDEyNCw0LDAsMTAwLAotICAgIDUsMCwxMDcsMywwLDgzLDQxLDYsMTIyLDE0MSw2NywxMTEsMTEwLDk5LDExNCwxMDEsCi0gICAgMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5OCwxMjEsCi0gICAgMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwxMDMsMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTQsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwzOSw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCi0gICAgOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMTQsMzEsMCwwLDAsMTE0LDYwLDAsMCwKLSAgICAwLDExNCw2MSwwLDAsMCwxMTQsNTgsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LAotICAgIDExMCwxMDUsMTE2LDk1LDk1LDQxLDQsMTE0LDQwLDAsMCwwLDExNCwxNTksMCwwLAotICAgIDAsMTE0LDM2LDAsMCwwLDExNCwzNCwwLDAsMCw0MSw1LDExNCwxMTAsMCwKLSAgICAwLDAsMTE0LDEyOCwwLDAsMCwxMTQsOTYsMCwwLDAsOTAsMTMsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsOTAsOSwxMTYsOTcsMTA1LAotICAgIDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwxMTQsMTYxLDAsMCwwLDE0NCwyLDAsMCwxMTUsOCwKLSAgICAwLDAsMCwwLDMsMjUsMSwyMiwxLDE5LDEsMTIyLDI0LDk1LDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDUsMTE1LDk1LDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwKLSAgICAxLDAsODMsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsCi0gICAgMTA4LDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxNjYsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxNTIsMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDI3LDk1LDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODAsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDU0LDAsMTE2LAotICAgIDIsMCwxMDAsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExNiw0LDAsMTA2LDUsMCwxMTYsNiwwLAotICAgIDEyNCwyLDAsMTI0LDEsMCwxMDYsNywwLDEzMSwzLDAsMSwxMDAsMSwwLAotICAgIDgzLDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwxMTAsMTExLAotICAgIDExNiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsCi0gICAgMTE0LDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCi0gICAgNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQxLAotICAgIDgsMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTA5LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDIxOCwKLSAgICAyNSw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwKLSAgICAxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwyMTgsNCwxMDEsMTIwLDEwMSw5OSwKLSAgICAxMTQsMTIwLDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwyMTgsNiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTQ4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxNTUsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwKLSAgICAxOCwxLDEyLDEsOSwxLDE1LDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMSw3OCwKLSAgICA0MSwyLDExNCwxMjMsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTYzLDIsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsCi0gICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsCi0gICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCi0gICAgMTYxLDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDE5MiwwLDAsMCwxMTQsMTk0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODUsMCwwLDAsMTM5LDIsMCwwLAotICAgIDExNSwxMCwwLDAsMCwxMiwzLDYsMiwxMiw4LDEyLDMsMTIsOCwxMTQsCi0gICAgMTg1LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwKLSAgICAwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsCi0gICAgMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywKLSAgICAwLDEwMCw4LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwKLSAgICAwLDkwLDksMCwxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLAotICAgIDAsMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsCi0gICAgNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LAotICAgIDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwKLSAgICAzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsCi0gICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSwxNjksMiwwLDAsMTE1LDIsMCwwLDAsMCw2LAotICAgIDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksCi0gICAgMCwwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEwNSwxLDAsODMsNDEsMiw5NywxNzAsMSwwLDAsNzksMTEyLDExNiwKLSAgICAxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE0LDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsOTcsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiwKLSAgICA5NywzMiwxMDAsMTA1LDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCi0gICAgMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDgwLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDEwNywxMDEsMTIxLAotICAgIDExNSw1OCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMDksMTE2LAotICAgIDEwNSwxMDksMTAxLDM5LDMyLDQwLDEwOSw5NywxMTAsMTAwLDk3LDExNiwxMTEsMTE0LDEyMSw0MSwKLSAgICAzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLAotICAgIDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTExLDEwMiwzMiwxMDgsOTcsMTE1LAotICAgIDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDk5LDExMSwxMDAsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LAotICAgIDExNiwxMDUsMTExLDExMCw1OSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwKLSAgICAzOSwxMTUsMTA1LDEyMiwxMDEsMzksMzIsNDAsMTExLDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAotICAgIDQxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLAotICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LAotICAgIDExMSwxMTksMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE2LAotICAgIDExMSwzMiwxMTQsMTAxLDk3LDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLAotICAgIDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwKLSAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsCi0gICAgMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEzNSwwLDAsMCw0MSwxLDExNCwxOTcsCi0gICAgMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE3NywyLDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDExLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDIsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LAotICAgIDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LAotICAgIDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICA5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwKLSAgICAxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwKLSAgICAxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwKLSAgICAxMDgsMTIxLDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksCi0gICAgMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDQxLDEsMjE4LDgsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDkyLDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMTE0LDU1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDE5MCwyLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDgsMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsMTUwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LAotICAgIDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwKLSAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLAotICAgIDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwKLSAgICAxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywKLSAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsCi0gICAgMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsCi0gICAgNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMywxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDE5OSwwLDAsMCwyMDAsMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDIxLAotICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsCi0gICAgOTUsMTAwLDk3LDExNiw5Nyw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLAotICAgIDAsMCwxNiwwLDAsMCw2NywwLDAsMCwxMTUsMTA1LDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjEsMTksCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsCi0gICAgODcsMTEwLDU4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw5NCwwLDEsMTI1LAotICAgIDQsMCwxLDEyMiwyNiwwLDExNiwzLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMSwxMjQsNCwwLDEzMCwyLDAsODcsODksMTAwLDMsMCwKLSAgICAxMDAsMywwLDEyNSw0LDAsMTI2LDQsMCw4OCwxMTAsMSwwLDg4LDExNiw0LAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDUyLDY3LDExMSwxMTAsOTksCi0gICAgMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsCi0gICAgMTIyLDM5LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTE4LDk3LAotICAgIDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsMTE3LDEwMywxMDQsMzIsMTAzLAotICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0MSwxMTQsMTA4LDAsMCwwLDc4LDQxLAotICAgIDUsMTE0LDE1OSwwLDAsMCwyMTgsOCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LAotICAgIDExNCw0MiwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxNTcsMCwwLDAsNDEsCi0gICAgNSwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDExNCwxNTUsMCwwLDAsMjE4LDMsMTAxLDEyMCw5OSwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSwyMDcsMiwwLDAsMTE1LDE0LDAsMCwwLDAsMiwKLSAgICAxNSwxLDMsMSwxOSwxLDE4LDEsOSwxLDMxLDEsMTIyLDIzLDgzLDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSwyMTgsOSw5NSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLAotICAgIDExNCwzMSwwLDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsNCwwLAotICAgIDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMTYsCi0gICAgMCwwLDEwNiwxLDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwxMjQsMywwLDEzMSw0LDIsCi0gICAgODMsNDEsNSwxMjIsMTMwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDk5LDExMSwxMDksMTEyLAotICAgIDEwNSwxMDgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LAotICAgIDEwMCw5NywxMTYsOTcsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDk5LAotICAgIDk3LDExMCwzMiw5OCwxMDEsMzIsOTcsMTEwLDEyMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgMzIsMTE2LDEyMSwxMTIsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwKLSAgICAxMDgsMTAxLDQwLDQxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMTUsNDYsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDE5MCwwLDAsMCwyMTgsMTIsMTAwLDExMSwKLSAgICAxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiw4NCwxMTQsNzAsMCwwLDAsCi0gICAgNDEsMywxMTQsMTIzLDAsMCwwLDExNCwxODksMCwwLDAsMjE4LDcsOTksMTExLAotICAgIDEwOSwxMTIsMTA1LDEwOCwxMDEsNDEsNCwxMTQsMTEwLDAsMCwwLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsMzcsMCwwLDAsMTE0LDIwNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsMTE1LDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLDIxNywyLDAsMCwxMTUsNCwKLSAgICAwLDAsMCwwLDUsMjEsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwxMTEsOTUsCi0gICAgOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDEwLDAsMCwKLSAgICAwLDQzLDAsMCwwLDY3LDAsMCwwLDExNSwxNzQsMSwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLDAsCi0gICAgMTI1LDMsMCwxMjEsMTYsMCwxMTYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsCi0gICAgNCwwLDg3LDExMCwyNCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjMsMCwKLSAgICAxLDEsMSwxMDAsMSwwLDEyNSw0LDAsODksMTEwLDIwMiwwLDg4LDEyMSwxOSwKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDUsMCwKLSAgICA4NywxMTAsMTgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDEwMywwLDEsMSwKLSAgICAxLDg5LDExMCwxNjIsMCw4OCwxMTYsNSwwLDEyNCw1LDAsMTAwLDIsMCwyNSwKLSAgICAxMzEsMSwwLDEyNSwzLDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwKLSAgICA0LDAsMTMxLDEsMCwxMjUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwKLSAgICAxMDcsMTAsMCwxMTQsMTU5LDAsMSwxLDEsODksMTEwLDEwNiwwLDg4LDEyMSwzNCwKLSAgICAwLDExNiw4LDAsMTI0LDYsMCwxMDAsMywwLDEyNCw1LDAsMTAwLDQsMCwKLSAgICAxMjQsMSwwLDEwMCw1LDAsMTI0LDQsMCwxMzEsMSwzLDEyNSw3LDAsODcsCi0gICAgMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsCi0gICAgMTE0LDIyMCwwLDEsMSwxLDg5LDExMCw0NSwwLDg4LDExNiwxMSwwLDEwMCw2LAotICAgIDAsMTI0LDQsMCwxMjQsMiwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMjQsNywKLSAgICAwLDEwMCw0LDAsMTI0LDEsMCwxMDAsNywwLDEyNCw0LDAsMTAwLDgsMCwKLSAgICAxMjQsMiwwLDEzMSwxLDMsODMsMTI0LDAsMCwxMDYsNiwwLDEyNCwyLDAsCi0gICAgMTMxLDEsMCwxMjUsOCwwLDEyNCwwLDAsMTA2LDEzLDAsMTI0LDgsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTI1LDksMCwxMTYsMTEsMCwxMDAsOSwwLDEyNCwyLAotICAgIDAsMTMxLDIsMCwxLDExNiwxNCwwLDEwNiwxNSwwLDEyLDExNCwxNzAsMSwxMjQsCi0gICAgNCwwLDEwMCwxLDAsMTA3LDksMCwxMTQsMTcwLDEsMTI0LDMsMCwxMDAsMSwKLSAgICAwLDEwNyw5LDAsMTE0LDE3MCwxLDExNiwxNiwwLDEyNCw5LDAsMTI0LDMsMCwKLSAgICAxMTYsMTcsMCwxMjQsOCwwLDEzMSwxLDAsMTMxLDMsMCwxMjUsNiwwLDEyMSwKLSAgICAzNiwwLDEyNCwwLDAsMTA2LDE4LDAsMTI0LDIsMCwxMjQsNCwwLDEyNCw2LAotICAgIDAsMTMxLDMsMCwxLDExNiwxMSwwLDEwMCwxMCwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMCwxLDg3LDExMCwxOCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsMTY5LDEsCi0gICAgMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsOSwwLDgzLDQxLDExLDEyMiwxOTAsCisgICAgOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDExMiwwLDAsMCwxMjQsMCwxMDYsMCwxMTQsMTQsMTI0LDAsCisgICAgMTA2LDEsMTI1LDIsMTEwLDYsMTI0LDAsMTA2LDIsMTI1LDIsMTI0LDIsMTA2LDMsCisgICAgMTI0LDEsMTAwLDEsMTE2LDQsMTA2LDUsMTAwLDAsMTAwLDIsMTMzLDIsMjUsMCwKKyAgICAyMiwwLDEwMCwzLDE0MSwyLDEyNSwzLDEyMSwzOCwxMjQsMCwxMDYsNiwxMjQsMywKKyAgICAxMzEsMSwxNDMsMTgsMTI1LDQsMTE2LDcsMTA2LDgsMTI0LDQsMTAwLDQsMTMxLDIsCisgICAgMTI1LDUsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCw4NywwLDExMCwyMCwKKyAgICA0LDAsMTE2LDksMTA3LDEwLDExNCwxMDYsMSwwLDEsMCwxLDAsMTAwLDAsCisgICAgODMsMCw4OCwwLDEyNCw1LDgzLDAsNDEsNSw3OCwxMjIsNSwzNywxMDAsNDYsCisgICAgMzcsMTAwLDExNCw1OSwwLDAsMCw0MSwyLDExNCwxMjMsMCwwLDAsOTAsMTEsCisgICAgMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwzMiwwLDAsMCwKKyAgICA0MSwxMCwyMTgsMTEsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsNzMsNzYsNjgsMjE4LAorICAgIDE4LDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDk1LDY4LDY5LAorICAgIDY2LDg1LDcxLDIxOCwxMiw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSw2OSwKKyAgICA4OSwxMTQsNTAsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDEyLDExOCwxMDEsMTE0LAorICAgIDExNSwxMDUsMTExLDExMCw5NSwxMDUsMTEwLDEwMiwxMTEsMTE0LDE2OSwwLDAsMCwxMTQsMTY3LAorICAgIDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4Niw5NywxMDgsMTE3LDEwMSwxMTQsCisgICAgNDIsMCwwLDAsNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsCisgICAgOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLDEyMSwxMTQsNSwKKyAgICAwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEyLAorICAgIDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsCisgICAgMTE1LDExNiwxMTQsMTIxLDk3LDIsMCwwLDExNSwyMiwwLDAsMCwwLDIsNiwKKyAgICAxLDgsMiw2LDEsNiwxLDIyLDEsMiwxLDEyLDEsMjYsMSwxNCwKKyAgICAxLDYsMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsCisgICAgMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LDEwMSw5NywxMTQsCisgICAgOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzgsOTksNCwwLDAsCisgICAgMCwwLDAsMCwwLDgsMCwwLDAsMTQsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyMCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsMSwxMjUsNCwKKyAgICAxMjQsNCwxMDAsMCwxMDcsOCwxMTQsMjIsMTAwLDAsODMsMCwxMjEsMTIsMTE2LDEsCisgICAgMTI0LDQsMTMxLDEsMSwwLDg3LDAsMTEwLDIwLDQsMCwxMTYsMiwxMDcsMTAsCisgICAgMTE0LDU0LDEsMCwxLDAsMSwwLDEwMCwwLDgzLDAsODgsMCwxMjAsNTgsCisgICAgMTE2LDMsMTMxLDAsNjgsMCw5Myw0OCw5MiwyLDEyNSw1LDEyNSw2LDEyNCw0LAorICAgIDEwNiw0LDExNiw1LDEyNCw2LDEzMSwxLDEzMSwxLDExNCw2NCwxMTYsNiwxMDYsNywKKyAgICAxMjQsMSwxMjQsNSwxMjQsMSwxMjQsNCwxMzEsMiwxMjQsNCwxMDAsMSwxNDEsMywKKyAgICAxMjUsNywxMjQsNyw4MywwLDExMyw2NCw4NywwLDEwMCwwLDgzLDAsNDEsMiwKKyAgICA3OCw0MSwxLDExNCwxNTYsMCwwLDAsNDEsOCwxMTQsMTc1LDAsMCwwLDExNCwKKyAgICA0MSwwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsOTYsCisgICAgMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwxMTgsMCwwLDAsMjE4LDE2LDExNSwKKyAgICAxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLAorICAgIDgsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwKKyAgICAyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwxNzQsMCwwLDAsMTE0LDEyNCwwLAorICAgIDAsMCwxMTQsMTY0LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDksMTAyLDEwNSwxMTAsCisgICAgMTAwLDk1LDExNSwxMTIsMTAxLDk5LDExMiwyLDAsMCwxMTUsMjYsMCwwLDAsMCwKKyAgICAyLDEwLDEsOCwxLDQsMSwyLDEsMTIsMSwxNCwxLDYsMSwxNiwKKyAgICAxLDE0LDEsNiwxLDgsMSw4LDEsMTIyLDMxLDg3LDEwNSwxMTAsMTAwLDExMSwKKyAgICAxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAzNiwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsMywKKyAgICAxMjQsMywxMDAsMSwxMDcsOSwxMTQsMjgsMTI0LDMsMTA2LDEsODMsMCwxMTAsNCwKKyAgICAxMDAsMSw4MywwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTA4LDcwLDEwNSwxMTAsMTAwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDUsMTEwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsCisgICAgMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTc4LDAsMCwwLAorICAgIDExNCwxMjQsMCwwLDAsNDEsNCwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLAorICAgIDAsMTE0LDM3LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjgsMiwwLDAsMTE1LDgsMCwwLDAsCisgICAgMCw3LDEyLDEsOCwxLDgsMiwxMjIsMzMsODcsMTA1LDExMCwxMDAsMTExLDExOSwKKyAgICAxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDIsNzgsNzgsNDEsCisgICAgMSw3OCw0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwKKyAgICAwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxNzIsMCwwLDAsMTE0LDE3MSwwLAorICAgIDAsMCwxMTQsMTcwLDAsMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLAorICAgIDExNiwxMDQsMTExLDEwMCwxMTQsMTY5LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDE3OCwKKyAgICAwLDAsMCwxMTQsMTc5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNjYsMCwwLAorICAgIDAsNzgsMiwwLDAsMTE1LDIwLDAsMCwwLDgsMiw0LDMsNCwzLAorICAgIDQsMiw0LDIsMTIsNywxMiwxNSwyLDEsMTIsMTUsMiwxLDExNCwxNjYsCisgICAgMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDgsMCwwLDAsMTAxLDAsOTAsCisgICAgMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsCisgICAgNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LDEzMiwwLDkwLAorICAgIDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsMTAsODMsMCw0MSwxMSwyMTgsCisgICAgMTMsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDEyMiw4MywKKyAgICA2Niw5NywxMTUsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTksMTExLAorICAgIDEwOSwxMDksMTExLDExMCwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwKKyAgICAzMiw5OCwxMjEsMzIsOTgsMTExLDExNiwxMDQsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDgzLDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAorICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDY0LDAsMCwwLDExNiwwLDEyNCwKKyAgICAwLDEwNiwxLDEyNCwxLDEzMSwxLDEzMSwxLDEwMCwxLDI1LDAsMTI1LDIsMTI0LAorICAgIDIsMTA2LDIsMTAwLDIsMTAwLDEsMTMxLDIsMTAwLDMsMjUsMCwxMjUsMywxMjQsCisgICAgMSwxMDYsMywxMDAsMiwxMzEsMSwxMDAsNCwyNSwwLDEyNSw0LDEyNCwzLDEwMCwKKyAgICA1LDEwNywyLDExMSw2MiwxMjQsNCwxMDAsNSwxMDcsMyw4MywwLDQxLDYsMTIyLAorICAgIDE0MSw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwKKyAgICAxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSwzMiw5OCwxMjEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwxMDMsCisgICAgMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LDEyMSwKKyAgICAzMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LDk3LAorICAgIDExNSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwKKyAgICAzOSw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMTQsMzEsCisgICAgMCwwLDAsMTE0LDYxLDAsMCwwLDExNCw2MiwwLDAsMCwxMTQsNTksMCwKKyAgICAwLDAsMjE4LDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQxLDQsMTE0LDQwLAorICAgIDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDM2LDAsMCwwLDExNCwzNCwwLAorICAgIDAsMCw0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsOTgsCisgICAgMCwwLDAsOTAsMTMsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk1LDk4LDk3LAorICAgIDExNSwxMDEsOTAsOSwxMTYsOTcsMTA1LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTU3LDAsMCwKKyAgICAwLDE0NywyLDAsMCwxMTUsOCwwLDAsMCwwLDMsMTgsMSwxNiwxLAorICAgIDE0LDEsMTIyLDI0LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LAorICAgIDExNSw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNDIsODUsMTE1LAorICAgIDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsMTE2LAorICAgIDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksCisgICAgMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTA0LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LAorICAgIDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNTUsMiwwLDAsMTE1LDAsMCwwLAorICAgIDAsMTIyLDI3LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwKKyAgICA0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNTYsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTA2LDEsCisgICAgMTMxLDEsMTI1LDIsMTI0LDIsMTAwLDEsMTA3LDgsMTE0LDM2LDExNiwyLDEwMCwyLAorICAgIDEwNiwzLDEyNCwxLDEwNiwxLDEzMSwxLDEzMSwxLDEzMCwxLDExNiw0LDEwNiw1LAorICAgIDExNiw2LDEyNCwyLDEyNCwxLDEwNiw3LDEzMSwzLDEsMCwxMDAsMSw4MywwLAorICAgIDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwxMTAsMTExLDExNiwKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LAorICAgIDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDAsCisgICAgNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQxLDgsCisgICAgMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDEwOSwwLDAsMCwxMTQsCisgICAgMTAzLDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMTE4LDAsMCwwLDIxOCwyNSwKKyAgICA5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsCisgICAgMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwyMTgsNCwxMDEsMTIwLDEwMSw5OSwxMTQsCisgICAgMTE1LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwyMTgsNiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTQsMTQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxNTgsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwxMiwKKyAgICAxLDgsMSw2LDEsMTAsMSwxMjIsMjUsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEwNiwxLAorICAgIDEyNCwwLDEyNCwxLDEzMSwyLDgzLDAsNDEsMSwxMjIsMjYsODQsMTA0LDEwNSwxMTUsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLAorICAgIDk5LDk3LDExNiwxMDEsMTAwLDQ2LDQxLDIsMTE0LDExOCwwLDAsMCwyMTgsMTcsOTUsCisgICAgMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LAorICAgIDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDgsMTExLDk3LAorICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNjYsMiwwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwyLDEyMiwyNSw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSwKKyAgICA5OSwxMTUsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDEsCisgICAgOCwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwKKyAgICAxMTQsMTExLDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsCisgICAgMTg4LDAsMCwwLDExNCwxOTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MSwwLAorICAgIDAsMCwxNDIsMiwwLDAsMTE1LDEwLDAsMCwwLDgsMyw0LDIsOCwKKyAgICA4LDgsMyw4LDgsMTE0LDE4MSwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICA3NCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsMTAwLDIsCisgICAgMTMyLDAsOTAsMywxMDAsMywxMDAsNCwxMzIsMCw5MCw0LDEwMCw1LDEwMCw2LAorICAgIDEzMiwwLDkwLDUsMTAwLDcsMTAwLDgsMTMyLDAsOTAsNiwxMDAsOSwxMDAsMTAsCisgICAgMTMyLDAsOTAsNywxMDAsMTgsMTAwLDEyLDE1NiwxLDEwMCwxMywxMDAsMTQsMTMyLDIsCisgICAgOTAsOCwxMDAsMTUsMTAwLDE2LDEzMiwwLDkwLDksMTAwLDE3LDgzLDAsNDEsMTksCisgICAgMjE4LDEyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsOCwwLDAsMCwxMTYsMCwxMzAsMSwxMDAsMSw4MywwLAorICAgIDQxLDIsMTIyLDE3OCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDExNiwxMDUsMTA5LDEwMSwzMiw0MCw5NywxMTAsMzIsMTA1LDExMCwxMTYsNDEsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCw0NCwzMiwKKyAgICAxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsOTcsMzIsCisgICAgMTE1LDExNiwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsOTcsCisgICAgMTA1LDExNSwxMDEsMTE1LDMyLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LDEwMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwxMTEsCisgICAgMTE2LDMyLDk4LDEwMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwxLDIxOCw3LDczLDc5LDY5LDExNCwxMTQsCisgICAgMTExLDExNCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDE3MywyLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDYsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNCwwLDAsMCwxMDAsMSwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsCisgICAgMSwxMDUsMSw4MywwLDQxLDIsOTcsMTcwLDEsMCwwLDc5LDExMiwxMTYsMTA1LAorICAgIDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsCisgICAgMzIsMTAwLDEwNSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwKKyAgICAxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE2LDEwNCwzMiw0MCwxMTUsMTE2LDExNCw0MSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw4MCwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMDcsMTAxLDEyMSwxMTUsCisgICAgNTgsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTA5LDExNiwxMDUsCisgICAgMTA5LDEwMSwzOSwzMiw0MCwxMDksOTcsMTEwLDEwMCw5NywxMTYsMTExLDExNCwxMjEsNDEsMzIsCisgICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTYsCisgICAgMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDExMSwxMDIsMzIsMTA4LDk3LDExNSwxMTYsCisgICAgMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsCisgICAgMTA1LDExMSwxMTAsNTksMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksCisgICAgMTE1LDEwNSwxMjIsMTAxLDM5LDMyLDQwLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCw0MSwKKyAgICAzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLDMyLAorICAgIDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsCisgICAgMTE5LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsCisgICAgMzIsMTE0LDEwMSw5NywxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExNSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4Miw5NywKKyAgICAxMDUsMTE1LDEwMSwxMTUsMzIsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMTAsMTEwLDExMSwKKyAgICAxMTYsMzIsOTgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTAwLDQ2LDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxMzAsMCwwLDAsNDEsMSwxMTQsMTkzLDAsCisgICAgMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxODEsMiwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwxMSwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTIsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDIsMTI0LDMsMTMxLAorICAgIDIsODMsMCw0MSwxLDEyMiwyMjgsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsCisgICAgMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsMTA1LAorICAgIDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LDQxLAorICAgIDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwKKyAgICAxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsCisgICAgMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwKKyAgICAzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsCisgICAgMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTE2LDExNCwKKyAgICA5NywxMTAsMTE1LDEwMiwxMDEsMTE0LDMyLDExMiwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLAorICAgIDExMCwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMSwyMTgsOCwxMTUsCisgICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDQsMTE0LDEwNCwwLDAsMCwxMTQsOTQsCisgICAgMCwwLDAsOTAsMTAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgNTYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMjE4LDE1LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsMTk0LDIsMCwwLDExNSwyLDAsMCwwLDAsOCwxMjIsCisgICAgMjgsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwxNTAsNzksCisgICAgMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LAorICAgIDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsCisgICAgMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwKKyAgICAxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3OCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk1LDAsMCwwLAorICAgIDIwNCwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjEsODMsMTExLDExNywxMTQsOTksCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDE2LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw4MiwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwKKyAgICAxMzEsMSwxMjUsMiwxMjEsMTQsMTI0LDAsMTA2LDEsMTI0LDIsMTMxLDEsMTI1LDMsCisgICAgODcsMCwxMTAsNDgsNCwwLDExNiwyLDEwNywxMCwxMTQsNzIsMSwwLDEyNSw0LAorICAgIDEsMCwxMjIsMjAsMTE2LDMsMTAwLDEsMTI0LDEsMTAwLDIsMTQxLDIsMTI0LDQsCisgICAgMTMwLDIsODcsMCw4OSwwLDEwMCwzLDEwMCwzLDEyNSw0LDEyNiw0LDg4LDAsCisgICAgMTEwLDIsODgsMCwxMTYsNCwxMjQsMywxMzEsMSw4MywwLDQxLDQsMTIyLDUyLAogICAgIDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKICAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSwKLSAgICA5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSw5NywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsCi0gICAgOTcsMTE2LDExNSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDQ2LDMyLDg0LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAotICAgIDQ0LDMyLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsMTA5LDExNywxMTUsMTE2LDMyLAotICAgIDk3LDEwOCwxMTUsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAotICAgIDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCwKLSAgICAxMzUsMCwwLDAsMTE0LDE0MCwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywKKyAgICA5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNDYsMTIyLDM5LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEwLDExMSwxMTYsCisgICAgMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsMTE3LAorICAgIDEwMywxMDQsMzIsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0MSw0MSwxLDExNCwKKyAgICAxMDIsMCwwLDAsNzgsNDEsNSwxMTQsMTU1LDAsMCwwLDIxOCw4LDEwMywxMDEsCisgICAgMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE0LDQyLDAsMCwwLDExNCwxMDMsMCwwLDAsCisgICAgMTE0LDE1MywwLDAsMCw0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsCisgICAgMCwxMTQsMzcsMCwwLDAsMTE0LDE1MSwwLDAsMCwyMTgsMywxMDEsMTIwLDk5LAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKKyAgICAxMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDIxMSwyLDAsMCwxMTUsCisgICAgMTQsMCwwLDAsMCwyLDEwLDEsMiwxLDE0LDEsMTYsMSw0LDEsCisgICAgMjgsMSwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNCwzMSwwLDAsMCwKKyAgICA0MSwxLDIxOCw5LDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsOTksMywwLAorICAgIDAsMCwxLDAsMCwwLDQsMCwwLDAsOCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsMTA2LDEsMTE2LDIsMTI0LDEsMTI0LAorICAgIDIsMTAwLDEsMTAwLDIsMTI0LDMsMTAwLDMsMTQxLDYsODMsMCw0MSw0LDEyMiwKKyAgICAxMzAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLAorICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTAwLDk3LDExNiw5NywKKyAgICAzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LAorICAgIDEwMSwzMiw5NywxMTAsMTIxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMTYsMTIxLDExMiwKKyAgICAxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDAsNDEsCisgICAgMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDExNSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTQsMTg2LDAsMCwwLDg0LDQxLDIsMjE4LDEyLDEwMCwxMTEsMTEwLAorICAgIDExNiw5NSwxMDUsMTEwLDEwNCwxMDEsMTE0LDEwNSwxMTYsMTE0LDcyLDAsMCwwLDQxLDMsCisgICAgMTE0LDExOCwwLDAsMCwxMTQsMTg1LDAsMCwwLDIxOCw3LDk5LDExMSwxMDksMTEyLAorICAgIDEwNSwxMDgsMTAxLDQxLDQsMTE0LDEwNCwwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LAorICAgIDM3LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgOTUsMTE2LDExMSw5NSw5OSwxMTEsMTAwLDEwMSwyMjEsMiwwLDAsMTE1LDQsMCwwLAorICAgIDAsMCw1LDEyLDEsMTIyLDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwKKyAgICAxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwxMCwwLDAsMCw0MywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsOTQsMSwwLDAsMTI0LDAsMTA2LDAsCisgICAgMTI0LDEsMTMxLDEsMTI1LDIsMTAwLDEsMTI1LDMsMTIxLDEyLDExNiwxLDEyNCwyLAorICAgIDEzMSwxLDEyNSw0LDg3LDAsMTEwLDI0LDQsMCwxMTYsMiwxMDcsMTAsMTE0LDUwLAorICAgIDEsMCwxLDAsMSwwLDEwMCwxLDEyNSw0LDg5LDAsMTEwLDE2Miw4OCwwLAorICAgIDEyMSwxNCwxMjQsMCwxMDYsMywxMjQsMiwxMzEsMSwxMjUsNSw4NywwLDExMCwyMCwKKyAgICA0LDAsMTE2LDQsMTA3LDEwLDExNCw4NiwxLDAsMSwwLDEsMCw4OSwwLAorICAgIDExMCwxMjYsODgsMCwxMTYsNSwxMjQsNSwxMDAsMiwyNSwwLDEzMSwxLDEyNSwzLAorICAgIDEyMSwxNCwxMjQsMCwxMDYsNiwxMjQsNCwxMzEsMSwxMjUsNiw4NywwLDExMCwyMCwKKyAgICA0LDAsMTE2LDcsMTA3LDEwLDExNCwxMzQsMSwwLDEsMCwxLDAsODksMCwKKyAgICAxMTAsNzgsODgsMCwxMjEsMjAsMTE2LDgsMTI0LDYsMTI0LDUsMTI0LDEsMTI0LDQsCisgICAgMTAwLDMsMTQxLDQsMTI1LDcsODcsMCwxMTAsMjQsNCwwLDExNiw5LDExNiwxMCwKKyAgICAxMDIsMiwxMDcsMTAsMTE0LDE4MCwxLDAsMSwwLDEsMCw4OSwwLDExMCwzMiwKKyAgICA4OCwwLDExNiwxMSwxMDYsMTIsMTAwLDQsMTI0LDQsMTI0LDIsMTMxLDMsMSwwLAorICAgIDExNiwxMywxMjQsNywxMjQsMSwxMjQsNCwxMjQsMiwxMDAsNSwxNDEsNCw4MywwLAorICAgIDEyNCwwLDEwNiw2LDEyNCwyLDEzMSwxLDEyNSw4LDEyNCwwLDEwNiwxNCwxMjQsOCwKKyAgICAxMjQsMiwxMzEsMiwxMjUsOSwxMTYsMTEsMTA2LDEyLDEwMCw2LDEyNCwyLDEzMSwyLAorICAgIDEsMCwxMTYsMTUsMTA2LDE2LDEyLDAsMTQ0LDEsMTE0LDkwLDEyNCw0LDEwMCwxLAorICAgIDEwNyw5LDE0NCwxLDExNCw5MCwxMjQsMywxMDAsMSwxMDcsOSwxNDQsMSwxMTQsOTAsCisgICAgMTE2LDE3LDEyNCw5LDEyNCwzLDExNiwxOCwxMjQsOCwxMzEsMSwxMzEsMywxMjUsNiwKKyAgICAxMjEsMzAsMTI0LDAsMTA2LDE5LDEyNCwyLDEyNCw0LDEyNCw2LDEzMSwzLDEsMCwKKyAgICAxMTYsMTEsMTA2LDEyLDEwMCw3LDEyNCw0LDEzMSwyLDEsMCw4NywwLDExMCwyMiwKKyAgICA0LDAsMTE2LDIsMTA3LDEwLDE0NCwxLDExNCw4OCwxLDAsMSwwLDEsMCwKKyAgICA4OSwwLDExMCwyLDg4LDAsMTI0LDksODMsMCw0MSw4LDEyMiwxOTAsNjcsMTExLAorICAgIDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDk3LDEwMCwxMDUsMTEwLAorICAgIDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNCwxMDEsCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsCisgICAgMTE1LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDEwMSwxMDAsNDYsMzIsODQsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsMzIsCisgICAgMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LAorICAgIDExNSwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDEzMCwwLAorICAgIDAsMCw0MSwzLDExNCwxMzYsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMzcsCiAgICAgMCwwLDAsMTIyLDEzLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwzMiwKLSAgICAxMjMsMTI1LDExNCw5MSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIyLDE5LDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDEyNSwxMjIsMTAsMTE5LDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxOSwxMTQsCi0gICAgMTU5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMjAxLDAsCi0gICAgMCwwLDExNCw0MiwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwxMDksMCwwLAotICAgIDAsMTE0LDEzOCwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxNDksMCwwLDAsCi0gICAgMTE0LDIwNywwLDAsMCwxMTQsOCwwLDAsMCwyMTgsMTksMTAwLDExMSwxMTAsMTE2LAotICAgIDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LAotICAgIDE1MiwwLDAsMCwxMTQsMzMsMCwwLDAsMTE0LDIwMCwwLDAsMCw0MSwxMCwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwKLSAgICAxNDEsMCwwLDAsMTE0LDkxLDAsMCwwLDIxOCwyLDExNSwxMTYsMTE0LDU1LDAsCi0gICAgMCwwLDIxOCwxMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LDExNiw5NywxMTQsMTU1LAotICAgIDAsMCwwLDkwLDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCi0gICAgMTg4LDAsMCwwLDIyNSwyLDAsMCwxMTUsNzgsMCwwLDAsMCw3LDE1LAotICAgIDEsNiwxLDMsMSwxNiwxLDEzLDEsMTEsMiwzLDEsMTksMSwxMywKLSAgICAxLDUsMiwxNiwxLDMsMSwxOSwxLDEzLDEsNSwyLDMsMSw5LAotICAgIDEsMTIsMSwxMywxLDE5LDEsNSwyLDksMSw3LDEsMTUsMSw2LAotICAgIDEsNywxLDE1LDEsMTgsMSwxMywxLDIyLDEsMTIsMSw5LDEsMTUsCi0gICAgMSwzLDEsMTksMSwxNywxLDEzLDEsNSwxLDEyMiwyMSw4MywxMTEsMTE3LAotICAgIDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwKLSAgICAxMDAsMTAxLDc4LDExNCw4OSwwLDAsMCw0MSwxMCwxMTQsMTE0LDAsMCwwLDExNCwKLSAgICAxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCwyMDMsMCwKLSAgICAwLDAsMTE0LDIwNywwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCw0LDAsMCwKKyAgICAxMjMsMTI1LDQxLDMsMTE0LDEwMiwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDk0LAorICAgIDAsMCwwLDEyMiwxOSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCisgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywxMjUsMTIyLDEwLDExOSwxMTQsMTExLDExNiwxMDEsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNDEsMjAsMTE0LDE1NSwwLDAsMCwxMTQsODMsMCwwLDAsCisgICAgMTE0LDcwLDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDE5MiwwLDAsMCwxMTQsCisgICAgMTYsMCwwLDAsMTE0LDE5NywwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDEzOSwKKyAgICAwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDExOCwwLAorICAgIDAsMCwxMTQsMTMzLDAsMCwwLDExNCwxNDUsMCwwLDAsMTE0LDIwMywwLDAsCisgICAgMCwxMTQsOCwwLDAsMCwyMTgsMTksMTAwLDExMSwxMTAsMTE2LDk1LDExOSwxMTQsMTA1LAorICAgIDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDE0OCwwLDAsMCwKKyAgICAxMTQsMzMsMCwwLDAsMTE0LDE5NiwwLDAsMCw0MSwxMCwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDk0LDAsMCwwLDExNCwxMzcsMCwwLDAsCisgICAgMTE0LDkzLDAsMCwwLDIxOCwyLDExNSwxMTYsMTE0LDU2LDAsMCwwLDIxOCwxMCwKKyAgICA5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LDExNiw5NywxMTQsMTUxLDAsMCwwLDkwLAorICAgIDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg0LDAsMCwwLAorICAgIDIyOSwyLDAsMCwxMTUsNzgsMCwwLDAsMCw3LDEwLDEsNCwxLDIsCisgICAgMSwxMiwxLDE0LDEsMTAsMiwyLDEsMTQsMSwxNCwxLDYsMiwxMiwKKyAgICAxLDIsMSwxNCwxLDE0LDEsNiwyLDIsMSw0LDEsNCwxLDEyLAorICAgIDEsMTgsMSw2LDIsOCwxLDYsMSw2LDEsMiwxLDgsMSwxMCwKKyAgICAxLDEyLDEsMTIsMSwyMCwxLDEwLDEsNiwxLDEwLDEsMiwxLDE0LAorICAgIDEsMTYsMSwxNiwxLDYsMSwxMjIsMjEsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw3OCwxMTQsCisgICAgOTEsMCwwLDAsNDEsMTAsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLAorICAgIDExNCwxMTAsMCwwLDAsMTE0LDE5MywwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwKKyAgICAxOTYsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCwyMDMsCisgICAgMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkxLDAsMCwKKyAgICAwLDE3MSwyLDAsMCwxMTUsMTQsMCwwLDAsOCwyLDgsOCw4LDEzLAorICAgIDgsMTAsOCw3LDgsMTAsMTQsOCwxMTQsMTkxLDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMCwwLAorICAgIDAsMCwxMTUsODAsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwKKyAgICAxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsCisgICAgMCw5MCw1LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDYsMTAxLDcsMTM1LDAsMTAyLAorICAgIDEsMTAwLDgsMTAwLDksMTMyLDgsMTMxLDEsOTAsOCwxMDEsNywxMDAsMTAsMTAwLAorICAgIDExLDEzMiwwLDEzMSwxLDkwLDksMTAwLDEyLDEwMCwxMywxMzIsMCw5MCwxMCwxMzUsCisgICAgMCw5MCwxMSwxMDAsMTQsODMsMCw0MSwxNSwyMTgsMTAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwxMDMsNjYsOTcsMTE1LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTksMTA0LAorICAgIDEwNSw5OSwxMDQsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTEyLDExNCwxMTEsMTE2LDExMSw5OSwKKyAgICAxMTEsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTA0LDk3LDExNiwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAorICAgIDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExNywxMTUsOTcsMTAzLDEwMSw0Niw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEyNCwyLAorICAgIDEyNCwwLDk1LDEsMTAwLDEsODMsMCw0MSwyLDEyMiw3NSw2Nyw5Nyw5OSwxMDQsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksCisgICAgMTAxLDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LAorICAgIDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwKKyAgICAzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNzgsNDEsMiwxMTQsMTAyLDAsMCwwLDExNCwKKyAgICAzNywwLDAsMCw0MSwzLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMTE0LDE4MiwwLDAsMCwzMCwzLDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDMsNiwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDI0LDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEwNiwwLDEwNywyLDExMSwKKyAgICAyMiwxMjQsMCwxMDYsMSwxMjQsMSwxMDYsMSwxMDcsMiw4MywwLDQxLDEsNzgsCisgICAgNDEsMiwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSw5NSwxMTQsMTE1LDAsCisgICAgMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwyMTgsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKKyAgICA2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMzYsMywwLDAsMTE1LDQsMCwwLDAsCisgICAgMCwxLDEyLDEsMTIyLDE3LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDIwLDAsMCwKKyAgICAwLDExNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDExNiwwLDEyNCwwLDEwNiwyLDEzMSwKKyAgICAxLDY1LDAsODMsMCw0MSwxLDc4LDQxLDMsMjE4LDQsMTA0LDk3LDExNSwxMDQsCisgICAgMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMSwxMTQsMTA0LDAsMCwKICAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwxOTUsMCwwLDAsMTY3LDIsMCwwLDExNSwxNCwwLDAsMCwxMiwyLAotICAgIDEyLDgsMTIsMTMsMTIsMTAsMTIsNywxMiwxMCwxOCw4LDExNCwxOTUsMCwwLAotICAgIDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLAotICAgIDAsMCwwLDAsMCwwLDExNSwxMTIsMCwwLDAsMTAxLDAsMCw5MCwxLAotICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCi0gICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAxLDcsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDgsMCwxMDAsOSwwLAotICAgIDEzNCwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwxMDAsMTAsMCwxMDAsCi0gICAgMTEsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMCwxMiwwLDEwMCwxMywKLSAgICAwLDEzMiwwLDAsOTAsMTAsMCwxMzUsMCwwLDgzLDQxLDE0LDIxOCwxMCw3MCwKLSAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2Niw5NywxMTUsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsCi0gICAgMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAotICAgIDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTIsMTE0LAotICAgIDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwKLSAgICAxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE3LDExNSw5NywxMDMsCi0gICAgMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LAotICAgIDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDc1LDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LAotICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0Niw3OCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDMsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LAotICAgIDAsMCwwLDI2LDMsMCwwLDExNSw0LDAsMCwwLDAsMyw5LDEsCi0gICAgMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsCi0gICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKLSAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDcsMiwwLDExMSwzMywKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LDIsMCwKLSAgICA4Myw0MSwxLDc4LDQxLDIsMjE4LDksOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsCi0gICAgOTUsMTE0LDEyMCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMjE4LDUsMTExLAotICAgIDExNiwxMDQsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwyMTgsNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDMyLDMsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsMSwxOCwxLDEyMiwxNyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwKLSAgICAwLDExNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsNDEsCi0gICAgMSw3OCw0MSwzLDIxOCw0LDEwNCw5NywxMTUsMTA0LDExNCwxMDgsMCwwLDAsMTE0LAotICAgIDM3LDAsMCwwLDQxLDEsMTE0LDExMCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOCw5NSw5NSwxMDQsOTcsCi0gICAgMTE1LDEwNCw5NSw5NSwzNiwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDQsOTcsCi0gICAgMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwwLAotICAgIDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwyLDAsMTA2LDIsMCwxMjQsMSwwLAotICAgIDEzMSwxLDAsODMsNDEsMSwxMjIsMTAwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTA5LAorICAgIDIxOCw4LDk1LDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LDQwLDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsCisgICAgMTYsMCwwLDAsMTE2LDAsMTE2LDEsMTI0LDAsMTMxLDIsMTA2LDIsMTI0LDEsCisgICAgMTMxLDEsODMsMCw0MSwxLDEyMiwxMDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMDksCiAgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMzIsMTAyLDEwNSwxMDgsCiAgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAogICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKICAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAogICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCiAgICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDMsMjE4LDUsCi0gICAgMTE1LDExNywxMTIsMTAxLDExNCwxMTQsMjExLDAsMCwwLDExNCwxOTQsMCwwLDAsNDEsCi0gICAgMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsNDEsMSwxMTQsMjEyLDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLAotICAgIDAsMzksMywwLDAsMTE1LDIsMCwwLDAsMCwxMCwxMjIsMjIsNzAsMTA1LAorICAgIDExNSwxMTcsMTEyLDEwMSwxMTQsMTE0LDIwNywwLDAsMCwxMTQsMTkwLDAsMCwwLDQxLAorICAgIDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDQxLDEsMTE0LDIwOCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkwLDAsMCwKKyAgICAwLDQzLDMsMCwwLDExNSwyLDAsMCwwLDAsMTAsMTIyLDIyLDcwLDEwNSwKICAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLAogICAgIDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwKLSAgICAxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsCi0gICAgMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwxNTksMCwwLDAsNTEsMywwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwzLDEyMiwyMyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDksMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQyLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwKLSAgICAwLDEwMCwxLDAsMTMxLDIsMCwxNDMsMTcsMCwxMjUsMiwwLDEyNCwyLDAsCi0gICAgMTA2LDIsMCwxMzEsMCwwLDgzLDg3LDEwMCwyLDAsODEsODIsODgsMTAwLDIsCi0gICAgMCw4Myw0MSwzLDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLAotICAgIDk3LDExNSwzMiwxMTQsOTcsMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwyMTgsMSwxMTQsCi0gICAgNzgsNDEsMywxMTQsNTEsMCwwLDAsMTE0LDUyLDAsMCwwLDkwLDQsMTE0LAotICAgIDEwMSw5NywxMDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCi0gICAgNTYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDIwMSwwLDAsMCw1NiwzLDAsMCwxMTUsNCwwLDAsCi0gICAgMCwwLDIsMjEsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsMTEsMTE0LDExNCwwLDAsCi0gICAgMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwKLSAgICAxMTQsMTg2LDAsMCwwLDExNCwyMTQsMCwwLDAsMTE0LDIxNiwwLDAsMCwxMTQsCi0gICAgMTI1LDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMjAxLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LAotICAgIDIxMiwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjExLDAsMCwwLDIxLDMsCi0gICAgMCwwLDExNSwxNCwwLDAsMCwxMiwzLDYsMiwxMiw2LDEyLDQsMTIsCi0gICAgMywyNCwxMiwxOCw1LDExNCwyMTEsMCwwLDAsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgNjQsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKLSAgICAwLDEwMCw3LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDEsOTAsNiwwLAotICAgIDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw2Miw2NywxMTEsMTEwLDk5LDExNCwxMDEsCi0gICAgMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTExLDEwMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAotICAgIDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDQ2LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsCi0gICAgMCwxMjQsMiwwLDEwNiwxLDAsMTAwLDIsMCwxMjQsMiwwLDEwNiwyLDAsCi0gICAgMTA1LDIsMCw4Myw0MSwzLDEyMiwzMyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsMTE0LDEzNSwwLDAsMCwxMTQsMTM2LAotICAgIDAsMCwwLDQxLDMsMTE0LDQxLDAsMCwwLDIxOCw4LDExNSwxMTYsOTUsMTA5LAotICAgIDExNiwxMDUsMTA5LDEwMSw5MCw3LDExNSwxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQxLDMsMTE0LAotICAgIDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDIwOSwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk4LDAsCi0gICAgMCwwLDY2LDMsMCwwLDExNSw0LDAsMCwwLDAsMiwxMiwxLDEyMiwKLSAgICAyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwKLSAgICAwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwzNCwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsCi0gICAgNCwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMjQsNCwwLDEzMSwyLDEsODMsNDEsMiw3OCwyMTgsNSw5NSwxMDksMTExLAotICAgIDEwMCwxMDEsNDEsMiwxMTQsOTksMCwwLDAsMTE0LDE5OSwwLDAsMCw0MSw1LAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsCi0gICAgNTUsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMDAsMCwwLDAsNzEsMywwLAotICAgIDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLDMyLDgzLDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsCi0gICAgOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMjIxLDAsMCwKLSAgICAwLDEwNSwxODIsMSwwLDAsOTksMywwLDAsMCwxLDAsMCwwLDksCi0gICAgMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDEsMCwwLAotICAgIDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSwKLSAgICA1LDAsMTAzLDAsMCwxMjUsNiwwLDEyMCw1NCwwLDEyNCw0LDAsMTE0LDgwLAotICAgIDAsMTE2LDEsMCwxMjQsNCwwLDEzMSwxLDAsMTIsMTE0LDgwLDAsMTE2LDAsCi0gICAgMCwxMjQsNCwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDcsMCwKLSAgICAxMjQsNiwwLDEwNiwyLDAsMTI0LDcsMCwxMzEsMSwwLDEsMTEzLDI3LDAsCi0gICAgODcsMTIwLDEzMiwwLDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLDY4LDkzLDExOCwKLSAgICAwLDEyNSw3LDAsMTE2LDQsMCwxMjQsNCwwLDEyNCw3LDAsMTMxLDIsMCwKLSAgICAxMjUsNCwwLDEyMSwxNywwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwKLSAgICAxLDAsMSw4NywxMTMsOTQsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDE1NSwKLSAgICAwLDEsMSwxLDExOSw5NCwwLDg5LDExMyw5NCwwLDQsMTE2LDgsMCwxMDcsCi0gICAgMTAsMCwxMTQsMjExLDAsMSwxMjUsOCwwLDEsMTIyLDI1LDAsMTE2LDksMCwKLSAgICAxMDAsMSwwLDEyNCw0LDAsMTI0LDgsMCwxMzEsMywwLDEsMTAwLDIsMCwKLSAgICA4Myw4Nyw4OSwxMDAsMiwwLDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LAotICAgIDExMyw5NCwwLDg4LDExMyw5NCwwLDg3LDEyMSwzMywwLDExNiwxMCwwLDEyNCwxLAotICAgIDAsMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMSwxMTYsOSwwLDEwMCwzLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDEsODcsMTEwLDUzLDAsNCwxMTYsOCwwLAotICAgIDEwNywxMCwwLDExNCw0OCwxLDEsMTI1LDgsMCwxLDEyMiwyMSwwLDExNiw5LAotICAgIDAsMTAwLDEsMCwxMjQsMSwwLDEyNCw4LDAsMTMxLDMsMCwxLDg3LDg5LAotICAgIDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsMTEwLDEsMCwKLSAgICA4OCwxMDAsMiwwLDgzLDQxLDQsMTIyLDI3LDg3LDExNCwxMDUsMTE2LDEwMSwzMiw5OCwKLSAgICAxMjEsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NiwxMjIsMjcsOTksMTExLDExNywxMDgsMTAwLDMyLDExMCwxMTEsMTE2LDMyLAotICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSw3OCwxMjIsMTIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDEwMCwzMiwxMjMsMzMsMTE0LDEyNSwKLSAgICA0MSwxMSwxMTQsNDAsMCwwLDAsMTE0LDQ4LDAsMCwwLDExNCwxNjUsMCwwLAotICAgIDAsMTE0LDM1LDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMywwLDAsMCwKLSAgICA5MCw1LDEwOSwxMDcsMTAwLDEwNSwxMTQsMjE4LDE1LDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsCi0gICAgMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNCw0MiwwLDAsMCwxMTQsMTA3LDAsCi0gICAgMCwwLDExNCw1NywwLDAsMCw0MSw5LDExNCwxMTAsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsMjIxLDAsMCwwLDIxOCw2LDExMiwKLSAgICA5NywxMTQsMTAxLDExMCwxMTYsMTE0LDk2LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsCi0gICAgMjUsMCwwLDAsMTE0LDIwMiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk5LDAsMCwwLDc2LDMsMCwKLSAgICAwLDExNSwzOCwwLDAsMCwwLDIsMTgsMSw2LDIsMjIsMSwxOCwxLAotICAgIDE3LDIsMTksMSwxNSwxLDMsMSwxNywxLDEzLDIsNywxLDE4LDMsCi0gICAgMTYsMSwyNywxLDMsMSwxNiwxLDE3LDEsMTgsMiwxMjIsMjUsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsCi0gICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDc4LDQxLDcsMTE0LDExNCwwLDAsMCwxMTQsCi0gICAgMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCi0gICAgMCwxMTQsMjE5LDAsMCwwLDYyLDMsMCwwLDExNSw4LDAsMCwwLDEyLAotICAgIDIsNiwyLDEyLDUsMTIsNSwxMTQsMjE5LDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDQ2LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwKLSAgICAwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsCi0gICAgMTAwLDYsMCw4Myw0MSw3LDIxOCwyMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwKLSAgICAxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsNDUsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsCi0gICAgMTAxLDExNSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LAotICAgIDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCw1LDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDc2LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLAotICAgIDEyNSwzLDAsMTE2LDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDEsMCwxMDAsCi0gICAgMiwwLDEyNCwyLDAsMTMxLDEsMiwxMjUsNCwwLDExNiwzLDAsMTI0LDQsCi0gICAgMCwxMDAsMSwwLDEyNCwxLDAsMTAwLDMsMCwxMjQsMiwwLDEzMSwxLDIsCi0gICAgODMsNDEsNCw3OCwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsOTEsCi0gICAgMCwwLDAsNDEsNCwxMTQsMTU5LDAsMCwwLDExNCwyMDEsMCwwLDAsMTE0LAotICAgIDE0MywwLDAsMCwxMTQsMTQ5LDAsMCwwLDQxLDUsMTE0LDExMCwwLDAsMCwKLSAgICAxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTUsMCwwLDAsMTE0LAotICAgIDIxMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTg4LDAsMCwwLDEwOSwzLDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDEsMTUsMSwxNSwxLDI0LDEsMTIyLDI5LDgzLDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwKLSAgICAwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLAotICAgIDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyMDMsMCwwLDAsMTE1LDMsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiwxMjIsMzEsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw3OCw0MSw2LDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwKLSAgICAxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsCi0gICAgMjAzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTA1LDMsMCwKLSAgICAwLDExNSw2LDAsMCwwLDEyLDIsNiwyLDEyLDYsMTE0LDIyNCwwLDAsCi0gICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDY0LDAsMCwwLDExNSwxMzYsMCwwLDAsMTAxLDAsMCw5MCwxLAotICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCi0gICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLAotICAgIDEwMCwxMSwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwKLSAgICAwLDAsOTAsOSwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsCi0gICAgMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsCi0gICAgMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLAotICAgIDIwLDAsODMsNDEsMjEsMjE4LDE5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw5Myw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LAotICAgIDEwNCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LDExMSwxMTQsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE5LDExMSwKLSAgICAxMTQsMTA3LDMyLDExOSwxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLAotICAgIDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsCi0gICAgMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMTA4LAotICAgIDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMzIsMywwLAotICAgIDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsCi0gICAgMCwxMTEsMzMsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLAotICAgIDEwNywyLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMTIsMCwwLDAsMTE0LDEyMCwKLSAgICAwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDIxMywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjE0LAotICAgIDAsMCwwLDEzNiwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsMTgsMSwKLSAgICAxMjIsMjYsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsCi0gICAgNDEsMSw3OCw0MSwzLDExNCwyMTUsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsCi0gICAgMzcsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTYsMCwwLDAsMTQwLAotICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDEzMSwyLDAsMTI1LDIsMCwxMTYsNCwwLDEwMCwxLDAsMTI0LDEsMCwKLSAgICAxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLDEsMTI0LDIsMCwKLSAgICA4Myw0MSwyLDEyMiwzOCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMTEwLDMyLDExNywKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLAotICAgIDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsMzgsMTAxLDEyMCwxMTYsCi0gICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDMzLDExNCwxMjUsNDEsNywxMTQsMTIzLDAsMCwwLDExNCwxODksMCwwLDAsMTE0LAotICAgIDE0NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTAwLDEyMSwxMTAsCi0gICAgOTcsMTA5LDEwNSw5OSwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwKLSAgICAxOTEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxNDMsMywwLDAsMTE1LDEwLDAsMCwKLSAgICAwLDAsMiw2LDEsMTUsMSw2LDEsMTYsMSwxMjIsMzMsNjksMTIwLDExNiwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDYsMCwwLDAsMTI0LDAsCisgICAgMTA2LDAsODMsMCw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsCisgICAgMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDExNCwxNTUsMCwwLDAsNTUsMywwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwzLDEyMiwyMyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDksMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDMyLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEwMCwxLDEzMSwKKyAgICAyLDE0MywxMCwxMjUsMiwxMjQsMiwxMDYsMiwxMzEsMCw4MywwLDgxLDAsODIsCisgICAgMCw4OCwwLDEwMCwyLDgzLDAsNDEsMywxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTUsMzIsMTE0LDk3LDExOSwzMiw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsNDYsMjE4LDEsMTE0LDc4LDQxLDMsMTE0LDUyLDAsMCwwLDExNCw1MywwLAorICAgIDAsMCw5MCw0LDExNCwxMDEsOTcsMTAwLDQxLDMsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgMzcsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTcsMCwwLDAsNjAsMywwLAorICAgIDAsMTE1LDQsMCwwLDAsMCwyLDE0LDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDc4LAorICAgIDQxLDEyLDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwKKyAgICAwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMjEwLDAsMCwwLAorICAgIDExNCwyMTIsMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTkwLDAsMCwwLDExNCwKKyAgICAxNTUsMCwwLDAsMTE0LDE5NywwLDAsMCw5MCwxMyw5NSw5NSw5OSwxMDgsOTcsCisgICAgMTE1LDExNSw5OSwxMDEsMTA4LDEwOCw5NSw5NSwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCw0MSwxLDExNCwyMDgsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIwNywKKyAgICAwLDAsMCwyNSwzLDAsMCwxMTUsMTQsMCwwLDAsOCwzLDQsMiwKKyAgICA4LDYsOCw0LDgsMywxNiwxMiwxMiw1LDExNCwyMDcsMCwwLDAsOTksCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICA2NCwwLDAsMCwxMTUsNDYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwKKyAgICAyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsCisgICAgNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LDE1NiwxLDEwMCw4LDEwMCw5LDEzMiwKKyAgICAyLDkwLDYsMTAwLDEwLDgzLDAsNDEsMTEsMjE4LDE2LDgzLDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDYyLDY3LDExMSwxMTAsCisgICAgOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LAorICAgIDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDYsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMjIsMCwwLDAsMTE2LDAsMTI0LDEsMTMxLDEsMTI1LDIsMTI0LDIsMTA2LAorICAgIDEsMTI0LDIsMTA2LDIsMTAwLDEsMTU2LDIsODMsMCw0MSwyLDEyMiwzMyw4MiwKKyAgICAxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywKKyAgICAxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsCisgICAgNDEsMiwxMjIsNSwxMDksMTE2LDEwNSwxMDksMTAxLDEyMiw0LDExNSwxMDUsMTIyLDEwMSw0MSwKKyAgICAzLDExNCw0MSwwLDAsMCwyMTgsOCwxMTUsMTE2LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgOTAsNywxMTUsMTE2LDk1LDExNSwxMDUsMTIyLDEwMSw0MSwzLDExNCwxMDQsMCwwLDAsCisgICAgMTE0LDM3LDAsMCwwLDExNCwyMDUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NCwwLDAsMCw3MCwzLAorICAgIDAsMCwxMTUsNCwwLDAsMCwwLDIsOCwxLDEyMiwyNyw4MywxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLAorICAgIDAsNSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyNCwwLAorICAgIDAsMCwxMTYsMCwxMjQsMSwxMzEsMSwxMjUsNCwxMjQsMCwxMDYsMSwxMjQsMiwKKyAgICAxMjQsMywxMjQsNCwxMDAsMSwxNDEsMyw4MywwLDQxLDIsNzgsNDEsMSwyMTgsCisgICAgNSw5NSwxMDksMTExLDEwMCwxMDEsNDEsMiwxMTQsMTAxLDAsMCwwLDExNCwxOTUsMCwKKyAgICAwLDAsNDEsNSwxMTQsMTA0LDAsMCwwLDExNCw5NCwwLDAsMCwxMTQsOTMsCisgICAgMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw0NCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk2LDAsMCwKKyAgICAwLDc1LDMsMCwwLDExNSw0LDAsMCwwLDAsMiw4LDEsMTIyLDMyLAorICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAxMDUsMTgyLDEsMCwwLDQxLDEsMTE0LDIxNywwLDAsMCw5OSwzLDAsMCwKKyAgICAwLDEsMCwwLDAsOSwwLDAsMCwxNywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjUwLDAsMCwwLDExNiwwLDEyNCwxLDEzMSwxLDkyLDIsMTI1LDQsCisgICAgMTI1LDUsMTAzLDAsMTI1LDYsMTIwLDQwLDEyNCw0LDExNCw1NiwxMTYsMSwxMjQsNCwKKyAgICAxMzEsMSwxMiwwLDExNCw1NiwxMTYsMCwxMjQsNCwxMzEsMSw5MiwyLDEyNSw0LAorICAgIDEyNSw3LDEyNCw2LDEwNiwyLDEyNCw3LDEzMSwxLDEsMCwxMTMsMTgsODcsMCwKKyAgICAxMjAsMTA4LDExNiwzLDEyNCw2LDEzMSwxLDY4LDAsOTMsOTYsMTI1LDcsMTE2LDQsCisgICAgMTI0LDQsMTI0LDcsMTMxLDIsMTI1LDQsMTIxLDE0LDExNiw1LDEwNiw2LDEyNCw0LAorICAgIDEzMSwxLDEsMCw4NywwLDExMyw2OCw0LDAsMTE2LDcsMTA3LDEwLDExNCwxMTgsCisgICAgMSwwLDEsMCwxLDAsMTE5LDY4LDg5LDAsMTEzLDY4LDQsMCwxMTYsOCwKKyAgICAxMDcsMTAsMTE0LDE2MiwxLDAsMTI1LDgsMSwwLDEyMiwxOCwxMTYsOSwxMDYsMTAsCisgICAgMTAwLDEsMTI0LDQsMTI0LDgsMTMxLDMsMSwwLDEwMCwyLDgzLDAsMTAwLDIsCisgICAgMTI1LDgsMTI2LDgsODgsMCwxMTMsNjgsODgsMCwxMTMsNjgsODcsMCwxMjEsMjgsCisgICAgMTE2LDExLDEyNCwxLDEyNCwyLDEyNCwzLDEzMSwzLDEsMCwxMTYsOSwxMDYsMTAsCisgICAgMTAwLDMsMTI0LDEsMTMxLDIsMSwwLDg3LDAsMTEwLDQ4LDQsMCwxMTYsOCwKKyAgICAxMDcsMTAsMTE0LDI0NCwxLDAsMTI1LDgsMSwwLDEyMiwyMCwxMTYsOSwxMDYsMTAsCisgICAgMTAwLDEsMTI0LDEsMTI0LDgsMTMxLDMsMSwwLDg3LDAsODksMCwxMDAsMiwKKyAgICAxMDAsMiwxMjUsOCwxMjYsOCw4OCwwLDExMCwyLDg4LDAsMTAwLDIsODMsMCwKKyAgICA0MSw0LDEyMiwyNyw4NywxMTQsMTA1LDExNiwxMDEsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLAorICAgIDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTIyLAorICAgIDI3LDk5LDExMSwxMTcsMTA4LDEwMCwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwKKyAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLDEyLDk5LAorICAgIDExNCwxMDEsOTcsMTE2LDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMTIsMTE0LDQwLDAsCisgICAgMCwwLDExNCw0OCwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCwzNSwwLDAsCisgICAgMCwxMTQsMzAsMCwwLDAsMTE0LDMsMCwwLDAsOTAsNSwxMDksMTA3LDEwMCwKKyAgICAxMDUsMTE0LDIxOCwxNSw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTQsNDIsMCwwLDAsMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsCisgICAgMCwwLDExNCw1OCwwLDAsMCw0MSw5LDExNCwxMDQsMCwwLDAsMTE0LDM3LAorICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsMjE3LDAsMCwwLDIxOCw2LDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsMTE0LDk4LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsCisgICAgMjUsMCwwLDAsMTE0LDE5OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk1LDAsMCwwLDgwLDMsMCwKKyAgICAwLDExNSw0MiwwLDAsMCwwLDIsMTIsMSw0LDIsMTYsMSwxMiwxLAorICAgIDE0LDIsMTQsMSwxMCwxLDIsMSwxNCwxLDE0LDIsNiwxLDE2LDMsCisgICAgNiwxLDgsMSwyMCwxLDIsMSwxMiwxLDE2LDEsMTYsMiw4LDEsCisgICAgMTIyLDI1LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw3OCw0MSw3LDExNCwxMDksCisgICAgMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwKKyAgICAwLDAsMTE0LDE5NCwwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxOTUsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDIxNSwwLDAsMCw2NiwzLDAsMCwxMTUsOCwKKyAgICAwLDAsMCw4LDIsNCwyLDgsNSw4LDUsMTE0LDIxNSwwLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwzMiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLAorICAgIDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LAorICAgIDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsODMsMCw0MSw3LDIxOCwyMCw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwxMjIsNDUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwKKyAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwKKyAgICAxMDEsMTE1LDExNSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LAorICAgIDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDQ4LDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwKKyAgICAxLDEzMSwxLDEyNSwyLDEyNCwwLDEwNiwxLDEyNCwyLDEzMSwxLDEyNSwzLDExNiwKKyAgICAyLDEyNCwzLDEyNCwxLDEyNCwyLDEwMCwxLDE0MSwzLDEyNSw0LDExNiwzLDEyNCwKKyAgICA0LDEyNCwxLDEyNCwyLDEwMCwyLDE0MSwzLDgzLDAsNDEsMyw3OCw0MSwyLAorICAgIDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwMiwwLDAsCisgICAgMCwxMTQsOTMsMCwwLDAsNDEsNCwxMTQsMTU1LDAsMCwwLDExNCwxOTcsMCwKKyAgICAwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTQ1LDAsMCwwLDQxLDUsMTE0LDEwNCwKKyAgICAwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTYsMCwKKyAgICAwLDAsMTE0LDIwNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNSwzLDAsMCwxMTUsCisgICAgOCwwLDAsMCwwLDEsMTAsMSwxMCwxLDE0LDEsMTIyLDI5LDgzLDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwzOSw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwxMTQsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LAorICAgIDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwxOTksMCwwLDAsMTIxLDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiwxMjIsMzEsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LAorICAgIDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MSw2LDExNCwxMDksMCwwLDAsMTE0LDEwOCwKKyAgICAwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4NCwwLAorICAgIDAsMCwxMTQsMTk5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjAsMCwwLDAsCisgICAgMTExLDMsMCwwLDExNSw2LDAsMCwwLDgsMiw0LDIsOCw2LDExNCwKKyAgICAyMjAsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsOTIsMCwwLDAsMTAxLDAsCisgICAgOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsCisgICAgOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LDEzMiwwLAorICAgIDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsMTAsMTAwLDExLDEzMiwwLAorICAgIDkwLDgsMTAwLDEyLDEwMCwxMywxMzIsMCw5MCw5LDEwMCwxNCwxMDAsMTUsMTMyLDAsCisgICAgOTAsMTAsMTAwLDE2LDEwMCwxNywxMzIsMCw5MCwxMSwxMDEsMTIsMTAwLDE4LDEwMCwxOSwKKyAgICAxMzIsMCwxMzEsMSw5MCwxMywxMDAsMjAsODMsMCw0MSwyMSwyMTgsMTksNjksMTIwLAorICAgIDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMTIyLDkzLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDEsMTIwLAorICAgIDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LAorICAgIDExNyw5OSwxMTYsMTExLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwKKyAgICAxMDAsMzIsMTE2LDExMSwzMiwxMTksMTExLDExNCwxMDcsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDcwLAorICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwKKyAgICAxMjQsMiwxMjQsMCw5NSwxLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwyLDExNCwKKyAgICAxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLDEzOCwzLAorICAgIDAsMCwxMTUsNCwwLDAsMCwwLDEsNiwxLDEyMiwyOCw2OSwxMjAsMTE2LAogICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNDUsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwyLDAsMSwxMTYsNCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLAotICAgIDEsMTAwLDIsMCw4Myw0MSwzLDEyMiwzMCw3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LAotICAgIDEwNSwxMjIsMTAxLDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsNDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAxLAotICAgIDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSw3OCw0MSw3LDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsMTQ3LAotICAgIDAsMCwwLDkwLDEyLDEwMSwxMjAsMTAxLDk5LDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsCi0gICAgOTksMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCwKLSAgICA0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE5MSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkyLDAsMCwwLAotICAgIDE1MSwzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSw2LDEsMTIyLAotICAgIDMxLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAotICAgIDAsMywwLDAsMCwxMTUsNDgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEwNiwxLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzNywwLDAsMTE2LDIsMCwKLSAgICAxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTE2LAotICAgIDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsNDksODIsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLAorICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyNCwKKyAgICAwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMDYsMCwxMDcsMiwxMTEsMjIsMTI0LAorICAgIDAsMTA2LDEsMTI0LDEsMTA2LDEsMTA3LDIsODMsMCw0MSwxLDc4LDQxLDIsCisgICAgMTE0LDIwOCwwLDAsMCwxMTQsMTE1LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMjA5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwyMTAsMCwwLDAsMTQyLDMsMCwwLDExNSw0LAorICAgIDAsMCwwLDAsMSwxMiwxLDEyMiwyNiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDEsCisgICAgMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDIwLDAsMCwwLDExNiwwLDEyNCwKKyAgICAwLDEwNiwxLDEzMSwxLDExNiwwLDEyNCwwLDEwNiwyLDEzMSwxLDY1LDAsODMsCisgICAgMCw0MSwxLDc4LDQxLDMsMTE0LDIxMSwwLDAsMCwxMTQsMTAyLDAsMCwwLAorICAgIDExNCwzNywwLDAsMCw0MSwxLDExNCwxMDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIxMiwwLDAsMCwKKyAgICAxNDYsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw2OSwxMjAsMTE2LAorICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0Niw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwzNiwKKyAgICAwLDAsMCwxMTYsMCwxMDYsMSwxMTYsMiwxMDYsMywxMjQsMSwxMzEsMiwxMjUsCisgICAgMiwxMTYsMCwxMDYsNCwxMDAsMSwxMjQsMSwxMDYsNSwxMjQsMCwxMDYsNiwxMzEsCisgICAgMywxLDAsMTI0LDIsODMsMCw0MSwyLDEyMiwzOCw2NywxMTQsMTAxLDk3LDExNiwKKyAgICAxMDEsMzIsOTcsMTEwLDMyLDExNywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwKICAgICAzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMTQsCi0gICAgMzEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsNCwwLDAsMCw1MSwwLDAsMCwxMTUsMzEsMCwwLDAsMTI0LDAsCi0gICAgMCw5MywyMSwwLDEyNSwxLDAsMTM2LDAsMCwxMDAsMCwwLDEyNCwxLDAsCi0gICAgMjMsMTA3LDIsMCw4NiwxLDExMywzLDAsMTAwLDEsMCw4Myw0MSwyLDExNCwKLSAgICAxODYsMCwwLDAsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLAotICAgIDAsMjE4LDYsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsNDEsMSwyMTgsOSwxMDIsMTA1LDEwOCwKLSAgICAxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjUwLDksNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDE2MCwzLDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDEsMTIyLDQ5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKLSAgICAxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKLSAgICA2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNDEsNCwxMTQsNDAsMCwwLDAsCi0gICAgMTE0LDM3LDAsMCwwLDIxOCwzLDk3LDExMCwxMjEsMjE4LDE4LDY5LDg4LDg0LDY5LAotICAgIDc4LDgzLDczLDc5LDc4LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDIsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDQxLAotICAgIDEsMTE0LDIyNywwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTYxLDAsMCwwLAotICAgIDE1NywzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSwxOCwxLDEyMiwKLSAgICAzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsCi0gICAgNjMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCi0gICAgOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwKLSAgICAxMDEsMzIsOTcsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ2LAotICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwxODgsMCwwLDAsMTYzLDMsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLAotICAgIDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLAotICAgIDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLAotICAgIDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDIwMywwLDAsMCwxNjcsMywwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwyLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKLSAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiwKLSAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDgzLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LAotICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsCi0gICAgMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE1OSwwLDAsMCwxNzEsMywwLAotICAgIDAsMTE1LDIsMCwwLDAsMCwzLDEyMiwzMiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAotICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsNDEsMTQsMTE0LDExNCwwLAotICAgIDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsCi0gICAgMCwxMTQsMTg2LDAsMCwwLDExNCwyMTQsMCwwLDAsMTE0LDIxNiwwLDAsMCwKLSAgICAxMTQsMTg3LDAsMCwwLDExNCwxOTIsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsCi0gICAgMTg4LDAsMCwwLDExNCwyMDMsMCwwLDAsMTE0LDEyNSwwLDAsMCwxMTQsMTU5LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwyMjUsMCwwLDAsMTI0LDMsMCwwLAotICAgIDExNSwyMCwwLDAsMCwxMiw2LDYsMiwxMiw0LDEyLDQsMTIsMywxMiwKLSAgICA4LDEyLDYsMTIsNiwxMiw0LDEyLDQsMTE0LDIyNSwwLDAsMCw5OSwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LAotICAgIDAsMCwwLDExNSwxMzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsCi0gICAgMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLAotICAgIDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAotICAgIDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLAotICAgIDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsCi0gICAgOSwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTYsCi0gICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAwLDE4LDAsMTAwLDE5LDAsCi0gICAgMTMyLDAsMCw5MCwxMiwwLDEwMCwyMCwwLDgzLDQxLDIxLDIxOCwxNCw5NSw3OCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsOTcsMzgsMSwwLAotICAgIDAsODIsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LAotICAgIDExNSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwzMiwzMiw3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LAotICAgIDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsCi0gICAgOTcsMTEwLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTE2LDMyLDEwOCwxMTEsMTExLDEwNywxMTUsMzIsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDM5LDExNSwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCw5NSw5NSw0NiwzMiwzMiw4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsCi0gICAgMzIsOTksMTA0LDk3LDExMCwxMDMsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsCi0gICAgMTA1LDExNSwzMiwxMTQsMTAxLDk5LDExMSwxMDksMTEyLDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDMyLDMyLDcwLDExMSwxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwKLSAgICAxMTUsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLAotICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0Niw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw1MiwwLDAsCi0gICAgMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCwKLSAgICA5NSwxLDAsMTE2LDIsMCwxMjQsMCwwLDEwNiwzLDAsMTMxLDAsMCwxMzEsCi0gICAgMSwwLDEyNCwwLDAsOTUsNCwwLDEyNCwzLDAsMTI0LDAsMCw5NSw1LAotICAgIDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDYsMjE4LDUsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsMjE4LDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDk1LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDIxOCwKLSAgICAxNyw5NSwxMDgsOTcsMTE1LDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDIxOCwxMiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLAotICAgIDAsMjE4LDExLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODYsMCwKLSAgICAwLDAsMTg0LDMsMCwwLDExNSw4LDAsMCwwLDAsMSw5LDEsOSwKLSAgICAxLDIxLDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCi0gICAgOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNTMsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTAwLAotICAgIDEsMCwxMzEsMSwwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLDAsMTI1LDMsCi0gICAgMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsNDMsMCwxMDAsNiwwLAotICAgIDgzLDEyNCwxLDAsMTAwLDUsMCwxMDIsMiwwLDgzLDQxLDcsMTIyLDYyLDgyLAotICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsMTExLAotICAgIDEwMiwzMiw0MCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDQ1LDExMCw5NywxMDksMTAxLDQ0LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTEyLDk3LAotICAgIDExNiwxMDQsNDUsOTcsMTE2LDExNiwxMTQsNDUsMTEwLDk3LDEwOSwxMDEsNDEsMTE0LDYwLDAsCi0gICAgMCwwLDExNCwzMiwwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMzcsMCwwLAotICAgIDAsOTAsOCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0MSwyLDEyMiwzLDExNSwKLSAgICAxMjEsMTE1LDEyMiw0LDExMiw5NywxMTYsMTA0LDQxLDIsMTE0LDIzMiwwLDAsMCwxMTQsCi0gICAgMzQsMCwwLDAsNDEsNCwxMTQsMTEwLDAsMCwwLDExNCwyMjMsMCwwLDAsCi0gICAgMjE4LDMsMTAwLDExMSwxMTYsOTAsMiwxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsCi0gICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMTUsMTkwLDMsMCwwLDExNSw4LDAsMCwwLDAsMiwyNywxLDEyLDIsCi0gICAgNCwzLDEyMiwzOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAotICAgIDExNiwxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDM4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLDkyLDIsMCwKLSAgICAxMjUsMSwwLDEyNSwyLDAsMTE2LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LAotICAgIDEsMCwyNSwxMjQsMiwwLDEzMSwyLDAsODMsNDEsMSw3OCw0MSw0LDExNCwKLSAgICAyMzksMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsOCwwLDAsMCwyMTgsNywKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDEsMywxMTQsMTEwLDAsMCwwLDkwLDE4LAorICAgIDEwMSwxMjIsMzgsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwKKyAgICAxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNDEsNywxMTQsMTE4LDAsMCwwLAorICAgIDExNCwxODUsMCwwLDAsMTE0LDE0MywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LAorICAgIDExNiwxMDEsOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwxMTQsMTMzLDAsMCwwLDExNCwKKyAgICAxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMTYyLDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MywwLDAsMCwxNDksMywKKyAgICAwLDAsMTE1LDEwLDAsMCwwLDAsMiw0LDEsMTAsMSw2LDEsMTIsCisgICAgMSwxMjIsMzMsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDM2LDAsMCwwLDExNiwwLAorICAgIDEwNiwxLDExNiwyLDEwNiwzLDEyNCwxLDEzMSwyLDEsMCwxMTYsMCwxMDYsNCwKKyAgICAxMDAsMSwxMjQsMCwxMDYsNSwxMjQsMCwxMDYsNiwxMzEsMywxLDAsMTAwLDIsCisgICAgODMsMCw0MSwzLDEyMiwzMCw3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLAorICAgIDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMjIsNDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAxLDEyMCwxMDEsOTksCisgICAgMTE3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw3OCw0MSwKKyAgICA3LDExNCwxMTgsMCwwLDAsMTE0LDE4NSwwLDAsMCwxMTQsMTQzLDAsMCwwLAorICAgIDkwLDEyLDEwMSwxMjAsMTAxLDk5LDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE0LDEzMywKKyAgICAwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwyLDExNCwKKyAgICAxMDQsMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg4LDAsMCwwLDE1NywzLDAsCisgICAgMCwxMTUsNiwwLDAsMCwwLDIsMTQsMSw2LDEsMTIyLDMxLDY5LDEyMCwKKyAgICAxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsMywwLAorICAgIDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDEsMTAwLAorICAgIDEsMjUsMCwxMzcsMCwxMTYsMiwxMzUsMCwxMDIsMSwxMDAsMiwxMDAsMywxMzIsCisgICAgOCwxMTYsMyw2OCwwLDEzMSwxLDEzMSwxLDgzLDAsNDEsNCwxMjIsNDksODIsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LAorICAgIDExNCwzMSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCw0LDAsMCwwLDUxLDAsMCwwLDExNSwyNiwwLDAsMCwxMjQsCisgICAgMCw5MywxOCwxMjUsMSwxMzYsMCwxMDAsMCwxMjQsMSwyMywwLDEwNywyLDg2LAorICAgIDAsMSwwLDExMywyLDEwMCwxLDgzLDAsNDEsMiwxMTQsMTgyLDAsMCwwLAorICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDIxOCw2LDExNSwKKyAgICAxMTcsMTAyLDEwMiwxMDUsMTIwLDQxLDEsMjE4LDksMTAyLDEwNSwxMDgsMTAxLDk1LDExMCw5NywKKyAgICAxMDksMTAxLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDI1MCw5LDYwLDEwMywKKyAgICAxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxNjYsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgNCwxLDEyMiw0OSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDQxLDQsMTE0LDQwLDAsMCwwLDExNCwzNywwLDAsCisgICAgMCwyMTgsMyw5NywxMTAsMTIxLDIxOCwxOCw2OSw4OCw4NCw2OSw3OCw4Myw3Myw3OSwKKyAgICA3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSwyLDExNCwxMDQsMCwwLAorICAgIDAsMTE0LDEyMywwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwyMjMsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE1NywwLDAsMCwxNjMsMywwLDAsCisgICAgMTE1LDYsMCwwLDAsMCwyLDE0LDEsMTIsMSwxMjIsMzAsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDYzLDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk3LDExMCwzMiwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAorICAgIDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiw0Niw3OCwxMTQsNCwwLAorICAgIDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg0LDAsCisgICAgMCwwLDE2OSwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDY5LAorICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw1Myw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMDEsMTIwLDExNiwxMDEsCisgICAgMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA0LDk3LAorICAgIDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwxOTksMCwwLDAsMTczLDMsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMiwxMjIsMzAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw2LDAsMCwwLDEyNCwwLDEwNiwKKyAgICAwLDgzLDAsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywKKyAgICAxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0Niw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LAorICAgIDEyMywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwxMTQsMTU1LDAsMCwwLDE3NywzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDMsMTIyLDMyLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LAorICAgIDEwMSwxMTAsOTcsMTA5LDEwMSw3OCw0MSwxNCwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwKKyAgICAwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODIsMCwwLAorICAgIDAsMTE0LDIxMCwwLDAsMCwxMTQsMjEyLDAsMCwwLDExNCwxODMsMCwwLDAsCisgICAgMTE0LDE4OCwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LAorICAgIDE5OSwwLDAsMCwxMTQsMTIwLDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMTE0LDIyMSwwLDAsMCwxMzAsMywwLDAsMTE1LDIwLDAsMCwwLAorICAgIDgsNiw0LDIsOCw0LDgsNCw4LDMsOCw4LDgsNiw4LDYsCisgICAgOCw0LDgsNCwxMTQsMjIxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDk2LAorICAgIDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwKKyAgICAyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsCisgICAgNiwxMDAsNywxMzIsMCw5MCw2LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLAorICAgIDEwLDEwMCwxMSwxMzIsMCw5MCw4LDEwMCwxMiwxMDAsMTMsMTMyLDAsOTAsOSwxMDAsCisgICAgMTQsMTAwLDE1LDEzMiwwLDkwLDEwLDEwMCwxNiwxMDAsMTcsMTMyLDAsOTAsMTEsMTAwLAorICAgIDE4LDEwMCwxOSwxMzIsMCw5MCwxMiwxMDAsMjAsMTAwLDIxLDEzMiwwLDkwLDEzLDEwMCwKKyAgICAyMiw4MywwLDQxLDIzLDIxOCwxNCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDgwLDk3LDExNiwxMDQsOTcsMzgsMSwwLDAsODIsMTAxLDExMiwxMTQsMTAxLDExNSwKKyAgICAxMDEsMTEwLDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCisgICAgMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwKKyAgICAzMiwzMiw3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwOCwxMTEsMTExLDEwNywxMTUsCisgICAgMzIsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDM5LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0NiwzMiwzMiwKKyAgICA4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsOTksMTA0LDk3LDExMCwxMDMsMTAxLAorICAgIDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsCisgICAgMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDk5LDExMSwKKyAgICAxMDksMTEyLDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwxMTcsMTE1LDEwNSwxMTAsCisgICAgMTAzLDMyLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDMyLDMyLAorICAgIDcwLDExMSwxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwKKyAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLAorICAgIDEyNCwyLDEyNCwwLDk1LDEsMTE2LDIsMTI0LDAsMTA2LDMsMTMxLDAsMTMxLDEsCisgICAgMTI0LDAsOTUsNCwxMjQsMywxMjQsMCw5NSw1LDEwMCwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSw2LDIxOCw1LDk1LDExMCw5NywxMDksMTAxLDIxOCw1LDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCw5NywwLDAsMCwyMTgsMTYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwKKyAgICAxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTcsOTUsMTA4LDk3LDExNSwxMTYsOTUsCisgICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTIsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDEsNCwxMTQsMTA0LDAsMCwwLAorICAgIDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwxMSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLDE5MCwzLDAsMCwxMTUsCisgICAgOCwwLDAsMCwwLDEsNiwxLDYsMSwxNCwxLDEyMiwyMyw5NSw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCw0LDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDEyNCwKKyAgICAwLDEwNiwwLDEwNiwxLDEwMCwxLDEzMSwxLDkyLDMsMTI1LDEsMTI1LDIsMTI1LAorICAgIDMsMTI0LDIsMTAwLDIsMTA3LDIsMTE0LDMwLDEwMCw2LDgzLDAsMTI0LDEsMTAwLAorICAgIDUsMTAyLDIsODMsMCw0MSw3LDEyMiw2Miw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwKKyAgICAzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwxMDIsMzIsNDAsMTEyLDk3LDExNCwKKyAgICAxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NSwxMTAsOTcsMTA5LDEwMSw0NCwKKyAgICAzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywxMTYsMTA0LDQ1LDk3LDExNiwxMTYsCisgICAgMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLDExNCw2MSwwLDAsMCwxMTQsMzIsMCwwLAorICAgIDAsMTE0LDgsMCwwLDAsMTE0LDM3LDAsMCwwLDkwLDgsOTUsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsOTUsNDEsMiwxMjIsMywxMTUsMTIxLDExNSwxMjIsNCwxMTIsOTcsCisgICAgMTE2LDEwNCw0MSwyLDExNCwyMjgsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDQsCisgICAgMTE0LDEwNCwwLDAsMCwxMTQsMjE5LDAsMCwwLDIxOCwzLDEwMCwxMTEsMTE2LDkwLAorICAgIDIsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwyMTgsMjMsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDE5NiwzLDAsMCwxMTUsCisgICAgOCwwLDAsMCwwLDIsMTgsMSw4LDIsNCwzLDEyMiwzOCw5NSw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE1LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI4LDAsMCwwLDEyNCwwLAorICAgIDEwNiwwLDEzMSwwLDkyLDIsMTI1LDEsMTI1LDIsMTE2LDEsMTE2LDIsMTA2LDMsCisgICAgMTI0LDEsMjUsMCwxMjQsMiwxMzEsMiw4MywwLDQxLDEsNzgsNDEsNCwxMTQsCisgICAgMjM1LDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDcsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQxLDMsMTE0LDEwNCwwLDAsMCw5MCwxOCwKICAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywKICAgICAxMDksMTAxLDkwLDE0LDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywKICAgICAxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwyMzQsMCwwLDAsMjAwLDMsMCwwLDExNSw0LDAsMCwwLDAsCi0gICAgMSwxOCwxLDEyMiwzMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAorICAgIDAsMTE0LDIzMCwwLDAsMCwyMDYsMywwLDAsMTE1LDQsMCwwLDAsMCwKKyAgICAxLDEyLDEsMTIyLDMxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCiAgICAgOTcsMTE2LDEwNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LAogICAgIDExMiw5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDExOCwwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsMTI1LDEsMCwKLSAgICAxMjQsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMDcsMywwLDExNCwxMTEsMCwxMjQsCi0gICAgMCwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsCi0gICAgMCwxMjUsMiwwLDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMDIsMCwKLSAgICAxMjQsMiwwLDEwNiw1LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDIsMCwxMjQsCi0gICAgMiwwLDEwNiw2LDAsMTE0LDEwMiwwLDEyNCwyLDAsMTA2LDYsMCwxMjQsMCwKLSAgICAwLDk1LDcsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMiwwLDEyNCwwLDAsCi0gICAgMTA2LDcsMCw4Myw0MSwxLDc4LDQxLDgsMTE0LDk1LDAsMCwwLDExNCwyMzQsCi0gICAgMCwwLDAsMTE0LDIzNSwwLDAsMCwxMTQsMjM2LDAsMCwwLDExNCwyMzIsMCwKLSAgICAwLDAsMTE0LDEyOSwwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwyMzMsMCwwLAotICAgIDAsNDEsMywxMTQsMTEwLDAsMCwwLDkwLDExLDExMiw5NywxMTQsMTAxLDExMCwxMTYsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsMTE0LDEwMSw5OSw5NywKLSAgICAxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDIwNCwzLDAsMCwxMTUsMTYsMCwwLDAsCi0gICAgMCwyLDE4LDEsMTUsMSwyMSwzLDI3LDEsOSwxLDEyLDEsOSwxLAotICAgIDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsCi0gICAgNDYsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLAotICAgIDEzMSwwLDAsMTMxLDEsMCw4Myw0MSwxLDc4LDQxLDIsMjE4LDQsMTA1LDExNiwKLSAgICAxMDEsMTE0LDExNCwyNDEsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDk1LAotICAgIDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSwyMTcsMywwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAotICAgIDExNiwxMDQsNDYsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLAotICAgIDAsMTMxLDEsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDMzLDAsMCwwLDExNCwKLSAgICAyNDEsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw3LDk1LDk1LDEwOCwxMDEsCi0gICAgMTEwLDk1LDk1LDIyMCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIyLAotICAgIDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwKLSAgICA5NSwxMDgsMTAxLDExMCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwKLSAgICAxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsCi0gICAgNDEsMiw3OCwxMjIsMjAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKLSAgICA5NywxMTYsMTA0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LDQ5LDAsMCwwLAotICAgIDExNCwyMzMsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDk1LDk1LDExNCwKLSAgICAxMDEsMTEyLDExNCw5NSw5NSwyMjMsMywwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsCi0gICAgNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LAotICAgIDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsMTA3LAotICAgIDYsMCw4Myw0MSwxLDc4LDQxLDEsMTE0LDI0MSwwLDAsMCw0MSwyLDExNCwKLSAgICAxMTAsMCwwLDAsMjE4LDQsMTA1LDExNiwxMDEsMTA5LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiw5NSw5NSw5OSwxMTEsMTEwLAotICAgIDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSwyMjYsMywwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAotICAgIDExNiwxMDQsNDYsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMTUsOTUsOTUsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwKLSAgICAxLDAsMTI0LDEsMCwxMzEsMSwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDQxLDIsMTE0LDIzMywwLDAsMCwxMTQsMTY1LDAsMCwwLDQxLDIsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsMjQ2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxNjUsMCwwLDAsMjI5LDMsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMSwxMjIsMjEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAotICAgIDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNzgsNDEsCi0gICAgMTMsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsCi0gICAgMTE0LDExNiwwLDAsMCwxMTQsMTg2LDAsMCwwLDExNCwyMzksMCwwLDAsMTE0LAotICAgIDIzNCwwLDAsMCwxMTQsMjQxLDAsMCwwLDExNCwyNDMsMCwwLDAsMTE0LDI0NCwKLSAgICAwLDAsMCwxMTQsMjQ1LDAsMCwwLDExNCwyNDcsMCwwLDAsMTE0LDE2NSwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwxMTQsMjMxLDAsMCwwLDE3NywzLDAsMCwxMTUsCi0gICAgMjAsMCwwLDAsMTIsNSw2LDIsMTIsNiwxMiwxMCwxMiw0LDEyLDEzLAotICAgIDEyLDMsMTIsMywxMiwzLDEyLDMsMTE0LDIzMSwwLDAsMCw5OSwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsCi0gICAgMCwwLDExNSwxMTgsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCwKLSAgICA5MCwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMSwKLSAgICA0LDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LAotICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsOTAsNiwwLDEwMCw3LDAsCi0gICAgMTAwLDgsMCwxMzIsMCwwLDkwLDcsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwKLSAgICAwLDAsOTAsOCwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsOTAsOSwKLSAgICAwLDEwMCwxMywwLDEwMCwxNCwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTUsMCwKLSAgICAxMDAsMTYsMCwxMzIsMCwwLDkwLDExLDAsMTAwLDE3LDAsODMsNDEsMTgsMjE4LAotICAgIDE2LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDk5LDQsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDI1LDAsMCwwLDExNiwwLDAsMTI0LDEsCi0gICAgMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDMsMCwxMjQsMCwwLDk1LDEsMCwKLSAgICAxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMjMxLDAsMCwwLDExNCwyMzMsCi0gICAgMCwwLDAsNDEsNCwxMTQsMTEwLDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LAotICAgIDM3LDAsMCwwLDExNCwyMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwwLDAsMCwyMzUsMywwLAotICAgIDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSw3OCw5NywxMDksMTAxLDExNSwKLSAgICAxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKLSAgICAxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwKLSAgICAxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLAotICAgIDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsCi0gICAgMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LAotICAgIDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwxMjIsMjUsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsNDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNjIsNDEsCi0gICAgMiwxMTQsNDksMCwwLDAsMTE0LDExNCwwLDAsMCw0MSwyLDExNCwxNzIsMCwKLSAgICAwLDAsMTE0LDE5MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LAotICAgIDEwMSwxMTIsMTE0LDIzOCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI4LAotICAgIDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiw3OCw4NCwxMTQsNCwKLSAgICAwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTYxLAotICAgIDAsMCwwLDI0NywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI3LAotICAgIDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDc4LDExNCwzMiwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODAsMCwwLDAsMTE2LDAsCisgICAgMTI0LDAsMTA2LDEsMTMxLDAsMTMxLDEsMTI1LDEsMTI0LDEsMTI0LDAsMTA2LDIsCisgICAgMTA3LDMsMTE0LDc0LDEyNCwwLDEwNiwzLDEyNCwwLDEwNiw0LDEyNCwxLDEzMSwyLAorICAgIDEyNSwyLDEyNCwyLDEwMCwwLDEwNyw5LDExNCw2OCwxMjQsMiwxMDYsNSwxMDAsMCwKKyAgICAxMDcsOCwxMTQsNjgsMTI0LDIsMTA2LDYsMTE0LDY4LDEyNCwyLDEwNiw2LDEyNCwwLAorICAgIDk1LDcsMTI0LDEsMTI0LDAsOTUsMiwxMjQsMCwxMDYsNyw4MywwLDQxLDEsCisgICAgNzgsNDEsOCwxMTQsOTcsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMjMxLDAsCisgICAgMCwwLDExNCwyMzIsMCwwLDAsMTE0LDIyOCwwLDAsMCwxMTQsMTI0LDAsMCwKKyAgICAwLDExNCwxNTQsMCwwLDAsMTE0LDIyOSwwLDAsMCw0MSwzLDExNCwxMDQsMCwKKyAgICAwLDAsOTAsMTEsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDIxOCwxMiw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwKKyAgICAxMDEsMjEwLDMsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTIsMSwxMCwxLAorICAgIDE0LDMsMTgsMSw2LDEsOCwxLDYsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDExNCwxMDEsOTksOTcsCisgICAgMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsCisgICAgMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMCwxMzEsMSw4MywwLDQxLDEsNzgsCisgICAgNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwxMTQsMTE0LDIzNywwLDAsMCw0MSwxLDExNCwKKyAgICAxMDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDIyMywzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsCisgICAgOTUsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTI0LDIsMTI0LDAsMTA2LAorICAgIDAsMTI0LDEsNjAsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMSwxMTQsMjI5LAorICAgIDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwyMTgsNSwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTIwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwyMTgsMTEsOTUsOTUsMTE1LDEwMSwxMTYsMTA1LDExNiwxMDEsMTA5LAorICAgIDk1LDk1LDIyNiwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI2LDk1LAorICAgIDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwKKyAgICAxMTUsMTAxLDExNiwxMDUsMTE2LDEwMSwxMDksOTUsOTUsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTIsCisgICAgMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDAsMTMxLDEsODMsMCw0MSwKKyAgICAxLDc4LDQxLDIsMTE0LDMzLDAsMCwwLDExNCwyMzcsMCwwLDAsNDEsMSwKKyAgICAxMTQsMTA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCw3LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDIyOSwzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIyLDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwKKyAgICAxMDYsMSwxMzEsMSw4MywwLDQxLDIsNzgsMTIyLDIwLDk1LDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MSwKKyAgICAyLDExNCw1MCwwLDAsMCwxMTQsMjI5LDAsMCwwLDQxLDEsMTE0LDEwNCwwLAogICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCi0gICAgMCwxMTQsMjAzLDAsMCwwLDI1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNiwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEwMCwyLAotICAgIDAsMTAwLDMsMCwxMDAsNCwwLDEwMCw1LDAsMTMxLDMsMSw4Myw0MSw2LAotICAgIDc4LDExNCwzMiwwLDAsMCwxMjIsOCw2MCwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw2MiwKLSAgICAxMTQsMTkwLDAsMCwwLDExNCwyMDUsMCwwLDAsODQsNDEsMSwxMTQsMjA2LDAsCi0gICAgMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODgsMCwKLSAgICAwLDAsMjUzLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsCisgICAgMCwyMTgsOCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMjMyLDMsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMjQsMSwxMjQsMCwxMDYsMCwxMzEsCisgICAgMCwxMDcsNiw4MywwLDQxLDEsNzgsNDEsMSwxMTQsMjM3LDAsMCwwLDQxLAorICAgIDIsMTE0LDEwNCwwLDAsMCwyMTgsNCwxMDUsMTE2LDEwMSwxMDksMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLDk1LDk1LDk5LAorICAgIDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDIzNSwzLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCisgICAgODAsOTcsMTE2LDEwNCw0Niw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSwKKyAgICA5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwxMDYsMCwxMDYsCisgICAgMSwxMjQsMSwxMzEsMSwxLDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsCisgICAgMTE0LDIyOSwwLDAsMCwxMTQsMTYxLDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMjQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwxNjEsMCwwLDAsMjM4LDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMjIsMjEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNzgsNDEsMTQsMTE0LAorICAgIDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwKKyAgICAwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwyMzUsMCwwLDAsMTE0LDIzMCwwLAorICAgIDAsMCwxMTQsMjM3LDAsMCwwLDExNCwyMzksMCwwLDAsMTE0LDI0MSwwLDAsCisgICAgMCwxMTQsMjQyLDAsMCwwLDExNCwyNDMsMCwwLDAsMTE0LDI0NSwwLDAsMCwKKyAgICAxMTQsMTYxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjcsMCwwLDAsMTgzLDMsCisgICAgMCwwLDExNSwyMiwwLDAsMCw4LDUsNCwyLDgsNiw4LDEwLDgsCisgICAgNCw4LDEzLDgsMyw4LDMsOCwzLDgsMyw4LDMsMTE0LDIyNywwLAorICAgIDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDY0LDAsMCwwLDExNSw4MCwwLDAsMCwxMDEsMCw5MCwxLAorICAgIDEwMCwwLDkwLDIsMTAwLDEsMTAwLDIsMTMyLDAsOTAsMywxMDEsNCwxMDAsMywKKyAgICAxMDAsNCwxMzIsMCwxMzEsMSw5MCw1LDEwMCw1LDEwMCw2LDEzMiwwLDkwLDYsCisgICAgMTAwLDcsMTAwLDgsMTMyLDAsOTAsNywxMDAsOSwxMDAsMTAsMTMyLDAsOTAsOCwKKyAgICAxMDAsMTEsMTAwLDEyLDEzMiwwLDkwLDksMTAwLDEzLDEwMCwxNCwxMzIsMCw5MCwxMCwKKyAgICAxMDAsMTUsMTAwLDE2LDEzMiwwLDkwLDExLDEwMCwxNyw4MywwLDQxLDE4LDIxOCwxNiwKKyAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxOCwwLDAsMCwxMTYsMCwxMjQsMSwxMjQsMiwKKyAgICAxMjQsMywxMzEsMywxMjQsMCw5NSwxLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwKKyAgICAyLDExNCwyMjcsMCwwLDAsMTE0LDIyOSwwLDAsMCw0MSw0LDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDIzMywwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAxMTQsMTgyLDAsMCwwLDI0NCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsCisgICAgMTIyLDI1LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMSwxMDYsMSwxMzEsMSw4MywKKyAgICAwLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsCisgICAgMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjUsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsNDEsNjIsNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEwOSwwLDAsMCw0MSwKKyAgICAyLDExNCwxNjgsMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDI0NywzLDAsMCwxMTUsMiwwLDAsMCwKKyAgICAwLDcsMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwKKyAgICA3OCw4NCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTU3LDAsMCwwLDAsNCwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiw3OCwKKyAgICAxMTQsMzIsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE5OSwwLDAsMCwzLDQsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwxMDAsMSwKKyAgICAxMDAsMiwxMDAsMywxMDAsNCwxMDAsNSwxNDEsNCw4MywwLDQxLDYsNzgsMTE0LAorICAgIDMyLDAsMCwwLDEyMiw4LDYwLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDYyLDExNCwxODYsCisgICAgMCwwLDAsODQsNDEsMSwxMTQsMjAxLDAsMCwwLDQxLDEsMTE0LDIwMiwwLAorICAgIDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg0LDAsCisgICAgMCwwLDYsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSwKICAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKICAgICAxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLAogICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsCi0gICAgMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLAorICAgIDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwKICAgICAxMDIsOTcsMTE3LDEwOCwxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLAogICAgIDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsCi0gICAgMCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwxODcsMCwwLDAsMCw0LDAsMCwxMTUsMCwKKyAgICAxMDUsMTExLDExMCw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLAorICAgIDAsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTgzLDAsMCwwLDksNCwwLDAsMTE1LDAsCiAgICAgMCwwLDAsMTIyLDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsCiAgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwwLDAsCi0gICAgODMsNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsCi0gICAgMTE0LDE5MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNiwwLDAsMCwxMTQsMTkyLDAsMCwwLDMsNCwwLDAsMTE1LDIsMCwKKyAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwwLDgzLAorICAgIDAsNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsCisgICAgMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMTg4LDAsMCwwLDEyLDQsMCwwLDExNSwyLDAsCiAgICAgMCwwLDAsMSwxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKICAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAogICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMiwwLDEsMTE2LDIsMCwxMDYsCi0gICAgMywwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDk4LAotICAgIDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKLSAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwKLSAgICAxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsCi0gICAgMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMTIyLDM4LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LAotICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDEyMywzMywxMTQsMTI1LDQxLDQsMTE0LDEwNywwLDAsCi0gICAgMCwxMTQsMjMzLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDE5MywwLDAsMCwKLSAgICA0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk0LDAsMCwwLAotICAgIDYsNCwwLDAsMTE1LDQsMCwwLDAsMCw3LDE2LDEsMTIyLDI4LDk1LAotICAgIDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDEyLDExNCwxMTQsCi0gICAgMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxODYsMCwKLSAgICAwLDAsMTE0LDE4NCwwLDAsMCwxMTQsMjQ5LDAsMCwwLDExNCwxNjEsMCwwLAotICAgIDAsMTE0LDIwMywwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwxODcsMCwwLDAsCi0gICAgMTE0LDE5MiwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDgsCi0gICAgMCwwLDAsMjM0LDMsMCwwLDExNSwxNiwwLDAsMCwxMiwxLDEyLDMsCi0gICAgMTgsOSwxMiwzLDEyLDMsMTIsMywxMiwzLDEyLDMsMTE0LDI0OCwwLDAsCi0gICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDY0LDAsMCwwLDExNSwxNjAsMCwwLDAsMTAxLDAsMCw5MCwxLAotICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwKLSAgICAxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsCi0gICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNiwKLSAgICAwLDEwMSw0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCwKLSAgICA5MCw3LDAsMTAxLDQsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDkwLDgsMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLDEwMCwxMiwKLSAgICAwLDEzMiwxLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDQsMCwxMDAsMTAsMCwKLSAgICAxMDAsMTAsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMiwwLDEzMSwxLDAsOTAsCi0gICAgMTAsMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwxLAotICAgIDAsMTMxLDEsMCw5MCwxMSwwLDEwMCwxMCwwLDgzLDQxLDE3LDIxOCwxMCw4MCwKLSAgICA5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsOTcsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksCi0gICAgMTA3LDk3LDEwMywxMDEsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsOTcsMTE2LAotICAgIDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw1NSwKLSAgICAwLDAsMCwxMjAsNDgsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMzEsCi0gICAgMCwwLDY4LDkzLDMxLDAsMTI1LDEsMCwxMTYsMywwLDEyNCwxLDAsMTAwLAotICAgIDEsMCwxMzEsMiwwLDExNCwxNiwwLDEyNCwxLDAsMTA2LDQsMCwxMzEsMCwKLSAgICAwLDEsMTEzLDE2LDAsODcsMTAwLDIsMCw4Myw0MSwzLDEyMiwxMjUsNjcsOTcsCi0gICAgMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsCi0gICAgMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCi0gICAgMTAwLDMyLDExMSwxMTAsMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLAotICAgIDExNiwxMTQsMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsCi0gICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LAotICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDIxOCwxNywxMDUsMTEwLDExOCwKLSAgICA5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LDQxLAotICAgIDUsMTE0LDgsMCwwLDAsMjE4LDE5LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsNiwxMTgsOTcsMTA4LAotICAgIDExNywxMDEsMTE1LDExNCwxMTcsMCwwLDAsMTE0LDI1MSwwLDAsMCw0MSwyLDExNCwKLSAgICAxNzIsMCwwLDAsMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI1MSwwLDAsMCwKLSAgICAyMyw0LDAsMCwxMTUsNiwwLDAsMCwwLDQsMjIsMSwxNSwxLDEyMiwKLSAgICAyOCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsCi0gICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMywwLDAsMCwxMiwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTA3LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLAotICAgIDEwNyw5LDAsMTE0LDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLAotICAgIDEyMCw1OSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5Myw0NCwwLDEyNSwyLDAsCi0gICAgMTIxLDE0LDAsMTI0LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsODcsMTEzLDUxLAotICAgIDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCw5NCwwLDEsMSwxLDExOSw1MSwKLSAgICAwLDg5LDExMyw1MSwwLDg4LDExMyw1MSwwLDg3LDEwMCwxLDAsODMsMTAwLDEsCi0gICAgMCw4Myw0MSwzLDEyMiwxMTMsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEwMSwxMTMsCi0gICAgMTE3LDEwMSwxMTAsOTksMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiw5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwKLSAgICAzOSwxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3MywxMDIsMzIsMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDEwMiwKLSAgICA5NywxMDgsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwKLSAgICAxMjEsNDEsNiwxMTQsOCwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LAotICAgIDExMSwxMTEsMTA3LDExNSwxMTQsNjIsMCwwLDAsMTE0LDYzLDAsMCwwLDExNCwxMjcsCi0gICAgMCwwLDAsMTE0LDEwOSwwLDAsMCw0MSwzLDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDM3LDAsMCwwLDkwLDQsMTA0LDExMSwxMTEsMTA3LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMxLDQsMCwwLDExNSwxNiwwLDAsMCwwLAotICAgIDcsMjUsMSwxNiwxLDE2LDEsMywxLDE0LDEsMTMsMSwxMiwyLDEyMiwKLSAgICAyMiw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMywwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwxMTUsMTIzLDAsMCwKLSAgICAwLDEyNCwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MywwLDEyMSwxNiwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsODcsMTEwLDIyLDAsCi0gICAgNCwxMTYsMiwwLDEwNywxMCwwLDExNCw1MiwwLDEsMSwxLDEwMCwyLDAsCi0gICAgODMsODksMTEwLDEsMCw4OCwxMjEsMTcsMCwxMTYsMywwLDEwNiw0LDAsMTI0LAotICAgIDEsMCwyNSwxMjUsMiwwLDg3LDExMCw0NiwwLDQsMTE2LDUsMCwxMDcsMTAsCi0gICAgMCwxMTQsMTE4LDAsMSwxLDEsMTI0LDAsMCwxMDYsNiwwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwKLSAgICAxLDAsNjAsODksMTEwLDEsMCw4OCwxMjQsMiwwLDgzLDQxLDMsMTIyLDIxMCwKLSAgICA3MSwxMDEsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwKLSAgICAxMjEsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSw0NCwzMiwKLSAgICAxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsOTcsMTEyLDExMiwxMTQsMTExLDExMiwxMTQsCi0gICAgMTA1LDk3LDExNiwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsOTcsMTEwLDEwMCwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDEwNSwxMTYsCi0gICAgNDYsMzIsNzMsMTAyLDMyLDExMCwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LAotICAgIDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ0LDMyLDExNSwxMTYsMTExLAotICAgIDExNCwxMDEsMzIsNzgsMTExLDExMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMTE0LDMyLDAsMCwwLDc4LDQxLDcsMTE0LDMsMCwwLDAsMTE0LAotICAgIDQ3LDAsMCwwLDIxOCwxNyw3MCwxMDUsMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsCi0gICAgMTEwLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDgsMCwwLDAsMTE0LDI1MiwwLDAsCi0gICAgMCwxMTQsMTM5LDAsMCwwLDExNCwwLDEsMCwwLDQxLDMsMTE0LDE3MiwwLAotICAgIDAsMCwxMTQsMzcsMCwwLDAsMTE0LDI1NCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMjAsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDQ4LDQsMCwwLDExNSwyMiwwLDAsMCwwLDgsMTIsMSwzLDEsCi0gICAgMTYsMSwxMywzLDksMSwzLDEsMTcsMSwxMywxLDE1LDEsMTgsMSwKLSAgICAxMjIsMzEsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSw5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxMTksMCwwLDAsMTE2LDAsMCwxMjQsMiwKLSAgICAwLDEwMCwxLDAsMTMxLDIsMCwxMTQsMzksMCwxMjQsMiwwLDEwNiwxLDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMywwLDEyNSw0LDAsMTEwLAotICAgIDIxLDAsMTI0LDIsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMywKLSAgICAwLDEwMywwLDAsMTI1LDQsMCwxMjQsMywwLDEwMCwwLDAsMTA3LDksMCwKLSAgICAxMTQsODgsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMjQsMywwLDEzMSwKLSAgICAyLDAsODMsMTE2LDMsMCwxMDYsNSwwLDEyNCwxLDAsMTAwLDAsMCwxMzEsCi0gICAgMiwwLDEyNSw1LDAsMTI0LDQsMCwxMjQsNSwwLDk1LDYsMCwxMjQsNSwKLSAgICAwLDgzLDQxLDIsNzgsMTE0LDEyNiwwLDAsMCw0MSw3LDExNCwxMTcsMCwwLAotICAgIDAsMTE0LDEyNiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxMjMsMCwwLDAsCi0gICAgMTE0LDE4MCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxNTgsMCwwLDAsNDEsCi0gICAgNiwxMTQsMTcyLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDI1NCwwLDAsMCwKLSAgICAxMTQsMTI5LDAsMCwwLDExNCwxMzAsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsCi0gICAgOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LAotICAgIDcwLDQsMCwwLDExNSwxOCwwLDAsMCwwLDQsMTUsMSwyNCwyLDE1LAotICAgIDEsNiwxLDEyLDEsMTYsMSwxOCwxLDksMSwxMjIsMjcsODAsOTcsMTE2LAotICAgIDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwKLSAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSw0LDAsMCwwLDAsMCwKLSAgICAwLDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyNDMsCi0gICAgMCwwLDAsMTAzLDAsMCwxMjUsNCwwLDEyMCwyMzAsMCwxMjQsMiwwLDY4LAotICAgIDkzLDE5MSwwLDEyNSw1LDAsMTE2LDAsMCwxMjQsNSwwLDExNiwxLDAsMTE2LAotICAgIDIsMCwxMDIsMiwwLDEzMSwyLDAsMTE1LDQzLDAsMTEzLDEzLDAsMTI0LDAsCi0gICAgMCwxMDYsMywwLDEyNCw1LDAsMTMxLDEsMCwxMjUsNiwwLDEyNCw2LDAsCi0gICAgMTAwLDEsMCwxMDcsOSwwLDExNCwxMywwLDExNiw0LDAsMTI0LDYsMCwxMDAsCi0gICAgMiwwLDEzMSwyLDAsMTE0LDEwNiwwLDEyNCw2LDAsMTA2LDUsMCwxMjQsMSwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNywwLDExMCwxOCwwLDEyNCwwLDAsCi0gICAgMTA2LDYsMCwxMjQsMSwwLDEyNCw2LDAsMTMxLDIsMCwxMjUsNywwLDEyNCwKLSAgICA3LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxMzksMCwxMTMsMTMsMCwxMjQsNywKLSAgICAwLDEwNiw3LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNTgsMCwxMjQsNywwLAotICAgIDgzLDEyNCw3LDAsMTA2LDgsMCwxMjUsOCwwLDEyNCw4LDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCwxOTEsMCwxMTYsOSwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsCi0gICAgMSwwLDEyNCw0LDAsMTA2LDEwLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLAotICAgIDEzLDAsODcsMTE2LDExLDAsMTA2LDEyLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwKLSAgICAyLDAsMTI1LDcsMCwxMjQsNCwwLDEyNCw3LDAsOTUsOCwwLDEyNCw3LAotICAgIDAsODMsMTAwLDEsMCw4Myw0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsCi0gICAgOTcsMTAzLDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0Niw3OCwxMTQsMTgyLDAsMCwwLDEyMiwKLSAgICAxOSwxMTUsMTEyLDEwMSw5OSwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0MSwxMywxMTQsMTQ1LDAsMCwwLDExNCw3MSwwLDAsMCwKLSAgICAyMTgsNSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDIsMSwwLDAsMTE0LDExNywwLDAsCi0gICAgMCwxMTQsMTgyLDAsMCwwLDExNCwzLDEsMCwwLDExNCwxMjksMCwwLDAsCi0gICAgMTE0LDE1OCwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxNTEsMCwwLDAsMTE0LAotICAgIDEyMywwLDAsMCwxMTQsMTYyLDAsMCwwLDQxLDksMTE0LDE3MiwwLDAsMCwKLSAgICAxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTgxLDAsMCwwLDIxOCwKLSAgICAxNCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw5MCwKLSAgICA1LDEwMSwxMTAsMTE2LDExNCwxMjEsMTE0LDI1NCwwLDAsMCwxMTQsMTY2LDAsMCwwLAotICAgIDExNCwxMzAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksODUsCi0gICAgNCwwLDAsMTE1LDQwLDAsMCwwLDAsNSw2LDEsMTMsMSwyMSwxLAotICAgIDMsMSwxNSwxLDEyLDEsMTUsMSwyMSwyLDE4LDEsMTIsMSwzLDEsCi0gICAgMTUsMSw0LDEsOSwxLDEyLDEsMTIsNSwxNywyLDE4LDEsOSwxLAotICAgIDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwKLSAgICAxMTYsOTUsMTE1LDExMiwxMDEsOTksOTksNCwwLDAsMCwwLDAsMCwwLDYsCi0gICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTQwLDAsMCwwLAotICAgIDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMSwwLDExNiwwLDAsMTA2LAotICAgIDEsMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTI0LDMsMCwxMzEsMywwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMSwwLAotICAgIDEwNyw4LDAsMTE0LDU4LDAsMTAwLDEsMCw4MywxMjQsNCwwLDEwNiwzLDAsCi0gICAgMTAwLDEsMCwxMDcsOCwwLDExNCwxMzIsMCwxMjQsNCwwLDEwNiw0LDAsMTI1LAotICAgIDUsMCwxMjQsNSwwLDExNCwxMjUsMCwxMDAsMiwwLDEyNCw0LDAsOTUsNSwKLSAgICAwLDExNiw2LDAsMTI0LDEsMCwxMjQsNSwwLDEyNCwwLDAsMTA2LDIsMCwKLSAgICAxMzEsMywwLDEyNCw0LDAsOTUsNCwwLDEyNCw0LDAsODMsMTAwLDEsMCwKLSAgICA4MywxMTAsNCwwLDEyNCw0LDAsODMsMTAwLDEsMCw4Myw0MSwzLDEyMiw5OCwKLSAgICAxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCi0gICAgMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LDMyLDM5LAotICAgIDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LAotICAgIDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsCi0gICAgMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSw0Niw3OCw5MCw5LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDcsCi0gICAgMTE0LDgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw2LDEsMCwwLDExNCwKLSAgICAxMjksMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwyMzEsCi0gICAgMCwwLDAsNDEsNiwxMTQsMTcyLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LAotICAgIDM3LDAsMCwwLDExNCwxODEsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsNSwKLSAgICAxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMTgyLDAsMCwwLDExNyw0LDAsMCwxMTUsMjYsMCwwLDAsCi0gICAgMCw0LDEyLDEsOSwxLDIxLDEsMTIsMSw0LDEsMTUsMSw5LDEsCi0gICAgNiwzLDksMSwyNCwxLDQsMiw3LDIsMTIyLDIwLDgwLDk3LDExNiwxMDQsCi0gICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksCi0gICAgOTksMywwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsNDEsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLDAsMTI0LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw4LDAsMTE0LDM0LDAsMTAwLDEsMCw4MywxMjQsMywwLDEwNiwKLSAgICAxLDAsODMsNDEsMiwxMjIsMTcwLDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsOTgsOTcsMTE1LAotICAgIDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCi0gICAgMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwKLSAgICAxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwKLSAgICAxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3OCw0MSwyLDExNCwxODIsMCwwLDAsMTE0LDEyOSwwLDAsMCw0MSw0LAotICAgIDExNCwxNzIsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTgzLDAsMCwwLDEzOSw0LDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDgsMTgsMSwxMiwxLDQsMSwxMjIsMjIsODAsOTcsMTE2LDEwNCw3MCwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0MSwxMiwxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLAotICAgIDAsMCwxMTQsMTE2LDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LDI1MSwwLDAsCi0gICAgMCwxMTQsMCwxLDAsMCwxMTQsMiwxLDAsMCwxMTQsMywxLDAsMCwKLSAgICAxMTQsNiwxLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDI1MCwwLDAsMCwxOSw0LDAsMCwxMTUsMjIsMCwwLAotICAgIDAsMTIsMiw2LDIsMTgsOCwxOCwxNywxOCwyMiwxOCwxNSwzLDEsMTgsCi0gICAgMzEsMywxLDIxLDIxLDMsMSwxMTQsMjUwLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDEzMywwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCi0gICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAotICAgIDEwMSw2LDAsOTAsNywwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLAotICAgIDgsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw5LDAsMTAwLDEwLAotICAgIDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDEsMCw5MCwxMCwwLDEwMCwxMywwLAotICAgIDEwMCwxNCwwLDEzMiwwLDAsOTAsMTEsMCwxMDEsMTIsMCwxMDAsMTUsMCwxMDAsCi0gICAgMTYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTMsMCwxMDAsMTcsMCwxMDAsMTgsCi0gICAgMCwxMzIsMCwwLDkwLDE0LDAsMTAwLDEwLDAsODMsNDEsMTksMjE4LDEwLDcwLAotICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDE3Miw3MCwxMDUsMTA4LDEwMSw0NSwKLSAgICA5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw3MywxMTAsMTE2LDEwMSwxMTQsOTcsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwKLSAgICAxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsCi0gICAgMTE1LDExNiwxMDEsMTA5LDMyLDk3LDExNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwxMDAsMzIsCi0gICAgMTAyLDExMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDk3LDExMCw5OSwxMDEsNDQsCi0gICAgMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTAyLDExNCwxMDEsCi0gICAgMTE1LDEwNCwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LAotICAgIDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwNSwxMTAsMTAzLDMyLDEwNCwKLSAgICA5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsMTAxLDEwMCwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgNSwwLDAsMCw1LDAsMCwwLDcsMCwwLDAsMTE1LDEyMiwwLDAsCi0gICAgMCwxMDMsMCwwLDEyNSwzLDAsMTIwLDUyLDAsMTI0LDIsMCw2OCw5Myw0NCwKLSAgICAwLDkyLDIsMCwxMzcsMCwwLDEyNSw0LDAsMTI0LDMsMCwxMDYsMCwwLAotICAgIDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjQsCi0gICAgNCwwLDY4LDEzMSwxLDAsMTMxLDEsMCwxLDExMywxMywwLDg3LDEyNCwzLAotICAgIDAsMTI0LDAsMCw5NSwxLDAsMTI0LDEsMCwxMTIsNzksMCwxMDAsMywwLAotICAgIDEyNCwwLDAsOTUsMiwwLDEwMCw2LDAsMTI0LDAsMCw5NSwzLDAsMTE2LAotICAgIDQsMCwxMzEsMCwwLDEyNCwwLDAsOTUsNSwwLDExNiw0LDAsMTMxLDAsCi0gICAgMCwxMjQsMCwwLDk1LDYsMCwxMDAsNSwwLDgzLDQxLDcsMTIyLDE1NCw3MywKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNSwxMDEsOTcsMTE0LDk5LAotICAgIDEwNCwzMiwxMTEsMTEwLDMyLDk3LDExMCwxMDAsMzIsOTcsMzIsMTE4LDk3LDExNCwxMDUsOTcsCi0gICAgOTgsMTA4LDEwMSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDExMSwxMDIsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsNTAsNDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTUsMzIsOTksCi0gICAgMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAotICAgIDExMSw5NywxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTAxLAotICAgIDk5LDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDUxLDAsMCwwLDExNSwyNywKLSAgICAwLDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEzNiwKLSAgICAwLDAsMTAyLDIsMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4Myw0MSwxLAotICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCwyMjYsMCwKLSAgICAwLDAsNDEsMSwxMTQsMTI5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwyMjgsMCwwLDAsMTY4LDQsMCwwLDExNSwyLDAsMCwKLSAgICAwLDYsMCwxMjIsMzgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKLSAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LAotICAgIDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjAsMCwwLDAsCi0gICAgMTE0LDMxLDAsMCwwLDc4LDExNCw4OSwwLDAsMCw0MSw3LDExNCwxNTEsMCwKLSAgICAwLDAsMjE4LDgsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDM3LDAsMCwKLSAgICAwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwzLAotICAgIDExNSwxMDEsMTE2LDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDIxOCwxOSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDQxLDUsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLAotICAgIDAsMjE4LDE0LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwKLSAgICAxMTUsOTAsNywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMTY4LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDQxLDEsMTE0LDEyOSwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTg2LDAsMCwwLDE2Miw0LDAsMCwxMTUsMTYsMCwwLDAsMCw0LAotICAgIDYsMSwxOSwxLDM2LDEsOSwyLDE1LDEsOSwxLDEyLDEsMTIyLDE5LAotICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsCi0gICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEwMCwzLDAsCi0gICAgMTI0LDAsMCw5NSwwLDAsMTAwLDIsMCw4Myw0MSw0LDEyMiwzMSw3MywxMTAsCi0gICAgMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsCi0gICAgMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LDEwNSwxMDksMTAxLDQ2LDExNCwzMSwwLAotICAgIDAsMCw3OCwxMTQsODksMCwwLDAsNDEsMSwxMTQsOSwxLDAsMCw0MSwKLSAgICAxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDI1MSwwLDAsMCwxNzYsNCwwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwyLDEyMiwyOCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksCi0gICAgMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsNTksMCwwLDAsMTI0LDAsMCwKLSAgICAxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTAwLAotICAgIDEsMCwxMDcsOCwwLDExNCwzNywwLDEwMCwxLDAsMTAzLDAsMCwxMDIsMiwKLSAgICAwLDgzLDEyNCwyLDAsMTA2LDEsMCwxMjQsMiwwLDEwNiwyLDAsMTEyLDU1LAotICAgIDAsMTAzLDAsMCwxMDIsMiwwLDgzLDQxLDIsMTIyLDE5Nyw4NCwxMTQsMTIxLDMyLAotICAgIDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsCi0gICAgMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA1LDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLAotICAgIDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsCi0gICAgMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LAotICAgIDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsNzgsNDEsMywxMTQsMTgyLDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LDE1OCwKLSAgICAwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsCi0gICAgMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwxMjYsMCwwLDAsMTgyLDQsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsNywxNSwxLDEyLDEsMTAsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw5OSw2LDAsMCwwLDAsMCwwLDAsNywwLDAsMCw3LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0MCwwLDAsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw2LDAsMTE2LDAsMCwxMjQsMiwwLAotICAgIDEyNCwzLDAsMTAwLDEsMCwxMjQsNiwwLDEwMCwyLDAsMTI0LDQsMCwxMzEsCi0gICAgMiwyLDgzLDQxLDMsNzgsMTE0LDEyOSwwLDAsMCwxMTQsMTU4LDAsMCwwLAotICAgIDQxLDEsMTE0LDE2OSwwLDAsMCw0MSw3LDExNCwxMTAsMCwwLDAsMTE0LDE2NywKLSAgICAwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCw5MCw0LDExNSwKLSAgICAxMDksMTE1LDEwOCwxMTQsMTgxLDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDYsMSwwLAotICAgIDAsMTk0LDQsMCwwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDE4LDEsCi0gICAgMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwKLSAgICAxMTYsOTUsMTE1LDExMiwxMDEsOTksNzgsOTksMywwLDAsMCwwLDAsMCwwLAotICAgIDE0LDAsMCwwLDE1LDAsMCwwLDY3LDAsMCwwLDExNSwyMzQsMSwwLAotICAgIDAsMTAwLDEsMCwxMjUsMywwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMiwwLAotICAgIDEzMSwxLDAsMTAwLDMsMCwyNSwxMjUsNCwwLDEyMSwzNCwwLDExNiwxLDAsCi0gICAgMTI0LDAsMCwxMDYsMiwwLDExMiw0OSwwLDExNiwzLDAsMTA2LDQsMCwxMzEsCi0gICAgMCwwLDEzMSwxLDAsMTA2LDUsMCwxMjUsNSwwLDg3LDExMCwyNCwwLDQsCi0gICAgMTE2LDYsMCwxMDcsMTAsMCwxMTQsODUsMCwxLDEsMSwxMDAsMTAsMCwxMjUsCi0gICAgNSwwLDg5LDExMCwxLDAsODgsMTI0LDUsMCwxMjQsMCwwLDEwNiw3LDAsCi0gICAgMTA3LDMsMCwxMTQsMTIwLDAsMTI0LDAsMCwxMDYsOCwwLDEzMSwwLDAsMSwKLSAgICAxMjQsNSwwLDEyNCwwLDAsOTUsNywwLDExNiw5LDAsMTMxLDAsMCwxMTQsCi0gICAgMTUzLDAsMTI0LDAsMCwxMDYsMTAsMCwxMjUsNiwwLDEyNCw0LDAsMTA2LDExLAotICAgIDAsMTMxLDAsMCwxMjUsNywwLDExMCwxNSwwLDEyNCwwLDAsMTA2LDEyLDAsCi0gICAgMTI1LDYsMCwxMjQsNCwwLDEyNSw3LDAsMTI0LDcsMCwxMjQsNiwwLDEwNywKLSAgICA2LDAsMTE0LDQ1LDEsMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LAotICAgIDAsMTMxLDIsMCwxMjUsOCwwLDEyMCwxMDAsMCwxMjQsMCwwLDEwNiwxNCwwLAotICAgIDY4LDkzLDc3LDAsOTIsMiwwLDEyNSw5LDAsMTI1LDEwLDAsMTAwLDUsMCwKLSAgICAxMjQsOSwwLDIzLDEyNSwxMSwwLDExNiwxMywwLDEyNCw4LDAsMTI0LDExLDAsCi0gICAgMTMxLDIsMCwxMjUsMTIsMCwxMTYsMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCwKLSAgICAyMDgsMCwxMjQsMCwwLDEwNiwxNiwwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLAotICAgIDAsMTI0LDgsMCwxMDMsMSwwLDEyNCwyLDAsMTMxLDUsMCw4MywxMTMsMjA4LAotICAgIDAsODcsMTE2LDE3LDAsMTI0LDgsMCwxMzEsMSwwLDEyNSwzLDAsMTIwLDEyMywKLSAgICAwLDEyNCwwLDAsMTA2LDE0LDAsNjgsOTMsMTEyLDAsOTIsMiwwLDEyNSw5LAotICAgIDAsMTI1LDEwLDAsMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsCi0gICAgMTI0LDksMCwyMywxMzEsMiwwLDEyNSwxMiwwLDExNiwxOCwwLDEwMCw2LDAsCi0gICAgMTA2LDE5LDAsMTI0LDEyLDAsMTMxLDEsMCwxMDAsNywwLDEwMCwzLDAsMTMxLAotICAgIDEsMSwxLDEyNCw3LDAsMTI0LDksMCwyMywxMjQsNiwwLDEwNyw2LDAsCi0gICAgMTE0LDU1LDEsMTE2LDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsNTUsMSwxMjQsCi0gICAgMCwwLDEwNiwxNiwwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsMTAwLDgsCi0gICAgMCwxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDU1LDEsODcsMTI0LDMsMCwxMTQsCi0gICAgMjMwLDEsMTE2LDE4LDAsMTAwLDksMCwxMDYsMTksMCwxMjQsOCwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCwxLDExNiwyMCwwLDEwNiwyMSwwLDEyNCwxLDAsMTAwLDgsCi0gICAgMCwxMzEsMiwwLDEyNSwxMywwLDEyNCw4LDAsMTAzLDEsMCwxMjQsMTMsMCwKLSAgICA5NSwyMiwwLDEyNCwxMywwLDgzLDEwMCw4LDAsODMsNDEsMTEsMTIyLDEwMiw4NCwKLSAgICAxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDExNSwxMTIsMTAxLAotICAgIDk5LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsODIsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMTA5LDk3LDExNiw5OSwxMDQsMTA1LDExMCwxMDMsMzIsMTE1LDExMiwxMDEsOTksNDQsMzIsCi0gICAgMTExLDExNCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTAyLDMyLDExMCwxMTEsMTE2LDMyLDEwMiwKLSAgICAxMTEsMTE3LDExMCwxMDAsNDYsNzAsMTE0LDYwLDAsMCwwLDExNCw1OCwwLDAsMCwKLSAgICAxMTQsMzEsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMjIsOSwxMTYsMTE0LDEyMSwxMDUsCi0gICAgMTEwLDEwMywzMiwxMjMsMTI1LDExNCwxMDAsMCwwLDAsNzgsMTIyLDI1LDExMiwxMTEsMTE1LAotICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwKLSAgICAxMDIsMTExLDExNCwzMiwxMjMsMTI1LDExNCw4OSwwLDAsMCw0MSwyMywxMTQsMzQsMCwKLSAgICAwLDAsMTE0LDQxLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMywwLDAsCi0gICAgMCwxMTQsNDcsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsNDIsMCwwLDAsCi0gICAgMTE0LDksMSwwLDAsMjE4LDExLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDExNCw3LDAsMCwwLDExNCwxMiwxLDAsMCwxMTQsOTAsMCwwLAotICAgIDAsMTE0LDExLDEsMCwwLDExNCwzMCwwLDAsMCwxMTQsOCwxLDAsMCwKLSAgICAxMTQsNDYsMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDQ4LDAsMCwwLDExNCwKLSAgICAxMDcsMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDE2MiwKLSAgICAwLDAsMCwxMTQsMTU4LDAsMCwwLDQxLDE0LDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDEyOCwwLDAsMCwxMTQsMTgxLDAsMCwwLDkwLDEyLDEwNSwxMTUsOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LDk3LDEwNSwxMDgsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDEzNSwwLDAsMCw5MCw1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgOTAsMTIsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCw5LAotICAgIDk4LDk3LDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDIyNiwwLDAsMCwxMTQsMTY3LAotICAgIDAsMCwwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAotICAgIDEwOSwxMDEsOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2NiwwLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsMCwxMTYsMCwxMDYsMSwKKyAgICAxMDAsMSwxMjQsMCwxMDYsMiwxMzEsMiwxLDAsMTE2LDAsMTA2LDMsMTI0LDAsCisgICAgMTI0LDEsMTMxLDIsODMsMCw0MSwyLDEyMiw5OCw3NiwxMTEsOTcsMTAwLDMyLDk3LAorICAgIDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKKyAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCisgICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwzOCwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw0MSw0LDExNCwxMTgsMCwwLDAsMTE0LDEzMywwLDAsMCwKKyAgICAxMTQsMjI5LDAsMCwwLDExNCwxODksMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE5MCwwLDAsMCwxNSw0LDAsMCwxMTUsNiwKKyAgICAwLDAsMCwwLDcsNiwxLDgsMSwxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDEsMTIsMTE0LDEwOSwwLDAsMCwxMTQsCisgICAgMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgwLAorICAgIDAsMCwwLDExNCwyNDcsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTk5LDAsCisgICAgMCwwLDExNCwxODQsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTg4LDAsMCwKKyAgICAwLDExNCwxOTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI0NiwwLDAsMCwyNDMsCisgICAgMywwLDAsMTE1LDE2LDAsMCwwLDgsMSw4LDMsMTIsOSw4LDMsCisgICAgOCwzLDgsMyw4LDMsOCwzLDExNCwyNDYsMCwwLDAsOTksMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw2NCwwLAorICAgIDAsMCwxMTUsMTA2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsCisgICAgMSw5MCwzLDEwMSw0LDEwMCwyLDEwMCwzLDEzMiwwLDEzMSwxLDkwLDUsMTAxLAorICAgIDQsMTAwLDQsMTAwLDUsMTMyLDAsMTMxLDEsOTAsNiwxMDEsNCwxMDAsNiwxMDAsCisgICAgNywxMzIsMCwxMzEsMSw5MCw3LDEwMSw0LDEwMCw4LDEwMCw5LDEzMiwwLDEzMSwKKyAgICAxLDkwLDgsMTAxLDQsMTAwLDE3LDEwMCwxMSwxMDAsMTIsMTMyLDEsMTMxLDEsOTAsCisgICAgOSwxMDEsNCwxMDAsMTgsMTAwLDEzLDEwMCwxNCwxMzIsMSwxMzEsMSw5MCwxMCwxMDEsCisgICAgNCwxMDAsMTksMTAwLDE1LDEwMCwxNiwxMzIsMSwxMzEsMSw5MCwxMSwxMDAsMTAsODMsCisgICAgMCw0MSwyMCwyMTgsMTAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwKKyAgICA2Miw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDk3LAorICAgIDExMCwxMDAsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk1LDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDk1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsNDYsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNDIsMCwwLDAsMTIwLDM2LDExNiwwLDEwNiwxLDEwNiwKKyAgICAyLDEzMSwwLDY4LDAsOTMsMjIsMTI1LDEsMTE2LDMsMTI0LDEsMTAwLDEsMTMxLAorICAgIDIsMTE0LDEyLDEyNCwxLDEwNiw0LDEzMSwwLDEsMCwxMTMsMTIsODcsMCwxMDAsCisgICAgMiw4MywwLDQxLDMsMTIyLDEyNSw2Nyw5NywxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwKKyAgICAxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTExLDExMCwzMiw5NywxMDgsCisgICAgMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTYsMTExLAorICAgIDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwzMiwKKyAgICA0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDEwMSwxMDAsNDEsNDYsMjE4LDE3LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDEsNSwxMTQsOCwwLDAsMCwyMTgsCisgICAgMTksMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDIxOCw2LDExOCw5NywxMDgsMTE3LDEwMSwxMTUsMTE0LDExMiwwLDAsCisgICAgMCwxMTQsMjQ5LDAsMCwwLDQxLDIsMTE0LDE2OCwwLDAsMCwyMTgsNiwxMDIsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMjQ5LDAsMCwwLDMzLDQsMCwwLDExNSw2LDAsCisgICAgMCwwLDAsNCwxNiwxLDEwLDEsMTIyLDI4LDgwLDk3LDExNiwxMDQsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSw4NiwwLDAsMCwKKyAgICAxMTYsMCwxMDYsMSwxMDAsMSwxMDcsOSwxMTQsMzAsMTE2LDAsMTA2LDEsMTIsMCwKKyAgICAxMTQsMzAsMTE2LDIsMTA2LDMsMTAwLDIsMTE2LDQsMTMxLDIsMSwwLDEyMCw1MCwKKyAgICAxMTYsMCwxMDYsMSw2OCwwLDkzLDM2LDEyNSwyLDEyMSw4LDEyNCwyLDEyNCwxLAorICAgIDEzMSwxLDgzLDAsNCwwLDExNiw1LDEwNywxMCwxMTQsNzIsMSwwLDEsMCwKKyAgICAxLDAsMTE5LDM4LDg5LDAsMTEzLDM4LDg4LDAsMTEzLDM4LDg3LDAsMTAwLDEsCisgICAgODMsMCwxMDAsMSw4MywwLDQxLDMsMTIyLDQ2LDgzLDEwMSw5NywxMTQsOTksMTA0LAorICAgIDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsOTcsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMzksMTEyLDk3LDExNiwxMDQsMzksNDYsNzgsMTIyLDIzLDExNSwxMjEsMTE1LDQ2LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwKKyAgICAxMTYsMTIxLDQxLDYsMTE0LDgsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNCwxMTEsMTExLDEwNywxMTUsMTE0LDYzLDAsMCwwLDExNCw2NCwwLDAsMCwxMTQsCisgICAgMTIyLDAsMCwwLDExNCwxMDMsMCwwLDAsNDEsMywxMTQsMTY4LDAsMCwwLAorICAgIDExNCwzNywwLDAsMCw5MCw0LDEwNCwxMTEsMTExLDEwNywxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0MSw0LDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMCwzLDE4LDEsMTIsMSwxMiwxLDIsMSw4LDEsMTQsMSwxMiwyLAorICAgIDEyMiwyMiw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwxMTUsMTAyLDAsCisgICAgMCwwLDEyNCwxLDEwMCwxLDEwNywyLDExNCw0MiwxMjEsMTIsMTE2LDAsMTA2LDEsCisgICAgMTMxLDAsMTI1LDEsODcsMCwxMTAsMjAsNCwwLDExNiwyLDEwNywxMCwxMTQsNDAsCisgICAgMSwwLDEsMCwxLDAsMTAwLDIsODMsMCw4OCwwLDEyMSwxNCwxMTYsMywKKyAgICAxMDYsNCwxMjQsMSwyNSwwLDEyNSwyLDg3LDAsMTEwLDQwLDQsMCwxMTYsNSwKKyAgICAxMDcsMTAsMTE0LDk2LDEsMCwxLDAsMSwwLDEyNCwwLDEwNiw2LDEyNCwxLAorICAgIDEzMSwxLDEyNSwyLDEyNCwyLDExNiwzLDEwNiw0LDEyNCwxLDYwLDAsODksMCwKKyAgICAxMTAsMiw4OCwwLDEyNCwyLDgzLDAsNDEsMywxMjIsMjEwLDcxLDEwMSwxMTYsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwxMDUsMTEwLDEwMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwzMiw3MywxMDIsCisgICAgMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDExOCwKKyAgICA5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwzMiw3OCwKKyAgICAxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzIsCisgICAgMCwwLDAsNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDcsMCwwLDAsCisgICAgMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsMjUwLDAsMCwwLDExNCwxMzUsMCwKKyAgICAwLDAsMTE0LDI1NCwwLDAsMCw0MSwzLDExNCwxNjgsMCwwLDAsMTE0LDM3LAorICAgIDAsMCwwLDExNCwyNTIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDIwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw1NCw0LDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMCw4LDgsMSwyLDEsMTIsMSwxNCwzLAorICAgIDYsMSwyLDEsMTQsMSwxNCwxLDEwLDEsMTYsMSwxMjIsMzEsODAsOTcsCisgICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNiwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw4MiwwLDAsMCwxMTYsMCwxMjQsMiwxMDAsMSwxMzEsMiwxMTQsCisgICAgMjYsMTI0LDIsMTA2LDEsMTI0LDEsMTMxLDEsOTIsMiwxMjUsMywxMjUsNCwxMTAsCisgICAgMTQsMTI0LDIsMTA2LDIsMTI0LDEsMTMxLDEsMTI1LDMsMTAzLDAsMTI1LDQsMTI0LAorICAgIDMsMTAwLDAsMTA3LDksMTE0LDYwLDExNiwzLDEwNiw0LDEyNCwxLDEyNCwzLDEzMSwKKyAgICAyLDgzLDAsMTE2LDMsMTA2LDUsMTI0LDEsMTAwLDAsMTMxLDIsMTI1LDUsMTI0LAorICAgIDQsMTI0LDUsOTUsNiwxMjQsNSw4MywwLDQxLDIsNzgsMTE0LDEyMSwwLDAsCisgICAgMCw0MSw3LDExNCwxMTIsMCwwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMTc5LDAsCisgICAgMCwwLDExNCwxMTgsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTU4LDAsMCwKKyAgICAwLDExNCwxNTQsMCwwLDAsNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwKKyAgICAwLDAsMTE0LDI1MiwwLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwxMjUsMCwwLAorICAgIDAsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwyMTgsMTYsOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc2LDQsMCwwLDExNSwxOCwwLDAsMCwKKyAgICAwLDQsMTAsMSwxNiwyLDEwLDEsNCwxLDgsMSwxMiwxLDEyLDEsCisgICAgNiwxLDEyMiwyNyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc4LAorICAgIDk5LDQsMCwwLDAsMCwwLDAsMCw5LDAsMCwwLDUsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE3MCwwLDAsMCwxMDMsMCwxMjUsNCwxMjAsMTYwLAorICAgIDEyNCwyLDY4LDAsOTMsMTMwLDEyNSw1LDExNiwwLDEyNCw1LDExNiwxLDExNiwyLAorICAgIDEwMiwyLDEzMSwyLDExNSwzMCwxMTMsMTAsMTI0LDAsMTA2LDMsMTI0LDUsMTMxLDEsCisgICAgMTI1LDYsMTI0LDYsMTAwLDEsMTA3LDksMTE0LDEwLDExNiw0LDEyNCw2LDEwMCwyLAorICAgIDEzMSwyLDExNCw3MiwxMjQsNiwxMDYsNSwxMjQsMSwxMjQsMywxMzEsMiwxMjUsNywKKyAgICAxMTAsMTIsMTI0LDAsMTA2LDYsMTI0LDEsMTI0LDYsMTMxLDIsMTI1LDcsMTI0LDcsCisgICAgMTAwLDEsMTA3LDgsMTE0LDk0LDExMywxMCwxMjQsNywxMDYsNywxMDAsMSwxMDcsOSwKKyAgICAxMTQsMTA4LDEyNCw3LDgzLDAsMTI0LDcsMTA2LDgsMTI1LDgsMTI0LDgsMTAwLDEsCisgICAgMTA3LDgsMTE0LDEzMCwxMTYsOSwxMDAsMywxMzEsMSwxMzAsMSwxMjQsNCwxMDYsMTAsCisgICAgMTI0LDgsMTMxLDEsMSwwLDExMywxMCw4NywwLDExNiwxMSwxMDYsMTIsMTI0LDEsCisgICAgMTAwLDEsMTMxLDIsMTI1LDcsMTI0LDQsMTI0LDcsOTUsOCwxMjQsNyw4MywwLAorICAgIDEwMCwxLDgzLDAsNDEsNCwxMjIsNjMsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsCisgICAgMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsNzgsMTE0LDE3OCwwLDAsMCwxMjIsMTksMTE1LAorICAgIDExMiwxMDEsOTksMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDEsMTMsMTE0LDE0MSwwLDAsMCwxMTQsNzMsMCwwLDAsMjE4LDUsCisgICAgOTgsMTIxLDExNiwxMDEsMTE1LDExNCwwLDEsMCwwLDExNCwxMTIsMCwwLDAsMTE0LAorICAgIDE3OCwwLDAsMCwxMTQsMSwxLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsCisgICAgMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwxMTgsMCwKKyAgICAwLDAsMTE0LDE1OCwwLDAsMCw0MSw5LDExNCwxNjgsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE3NywwLDAsMCwyMTgsMTQsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsOTAsNSwxMDEsCisgICAgMTEwLDExNiwxMTQsMTIxLDExNCwyNTIsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMTI1LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCisgICAgMCwwLDIxOCw5LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDkxLDQsMCwKKyAgICAwLDExNSw0MCwwLDAsMCwwLDUsNCwxLDEwLDEsMTQsMSwyLDEsCisgICAgMTAsMSw4LDEsMTAsMSwxNCwyLDEyLDEsOCwxLDIsMSwxMCwxLAorICAgIDQsMSw2LDEsOCwxLDgsNSwxNCwyLDEyLDEsNiwxLDEyMiwyMCwKKyAgICA4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMiwxMDEsOTksOTksNCwwLDAsMCwwLDAsMCwwLDYsMCwwLAorICAgIDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTA0LDAsMCwwLDEyNCwyLAorICAgIDEwMCwxLDEwNyw4LDExNCwxNCwxMTYsMCwxMDYsMSwxMjUsMiwxMjQsMCwxMDYsMiwKKyAgICAxMjQsMSwxMjQsMiwxMjQsMywxMzEsMywxMjUsNCwxMjQsNCwxMDAsMSwxMDcsOCwKKyAgICAxMTQsNDIsMTAwLDEsODMsMCwxMTAsNTgsMTI0LDQsMTA2LDMsMTAwLDEsMTA3LDgsCisgICAgMTE0LDk2LDEyNCw0LDEwNiw0LDEyNSw1LDEyNCw1LDExNCw5MCwxMDAsMiwxMjQsNCwKKyAgICA5NSw1LDExNiw2LDEyNCwxLDEyNCw1LDEyNCwwLDEwNiwyLDEzMSwzLDEyNCw0LAorICAgIDk1LDQsMTI0LDQsODMsMCwxMTMsMTAwLDEwMCwxLDgzLDAsMTEwLDQsMTI0LDQsCisgICAgODMsMCwxMDAsMSw4MywwLDQxLDMsMTIyLDE0MSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwMiwxMTEsMTE0LAorICAgIDMyLDM5LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwzOSwzMiwxMTEsMTEwLDMyLDExNSwKKyAgICAxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsCisgICAgMzksNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwKKyAgICAxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwKKyAgICAxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywKKyAgICAxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsOTAsOSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLAorICAgIDk3LDk5LDEwMSw0MSw3LDExNCw4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCisgICAgNCwxLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE1NiwKKyAgICAwLDAsMCwxMTQsMjI3LDAsMCwwLDQxLDYsMTE0LDE2OCwwLDAsMCwxMTQsCisgICAgMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTc3LDAsMCwwLDExNCwxNjIsCisgICAgMCwwLDAsMTE0LDMsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMjMsNCwwLDAsCisgICAgMTE1LDI2LDAsMCwwLDAsNiw4LDEsNiwxLDE0LDEsOCwxLDYsCisgICAgMSwxMCwxLDYsMSw0LDMsNiwxLDE2LDEsNiwyLDYsMiwxMjIsCisgICAgMjAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzMCwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsMywxMjQsMywxMDAsMSwxMDcsCisgICAgOCwxMTQsMjQsMTAwLDEsODMsMCwxMjQsMywxMDYsMSw4MywwLDQxLDIsMTIyLAorICAgIDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LDMyLAorICAgIDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsCisgICAgMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywKKyAgICAxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAorICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTc4LAorICAgIDAsMCwwLDExNCwxMjQsMCwwLDAsNDEsNCwxMTQsMTY4LDAsMCwwLDExNCwKKyAgICAxMjMsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE3OSwwLAorICAgIDAsMCwxNDcsNCwwLDAsMTE1LDgsMCwwLDAsMCw4LDEyLDEsOCwKKyAgICAxLDQsMSwxMjIsMjIsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDc4LDQxLDIsCisgICAgNzgsNzgsNDEsMSw3OCw0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODAsMCwwLDAsCisgICAgMTE0LDI0OSwwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCwwLDEsMCwwLDExNCwKKyAgICAxLDEsMCwwLDExNCw0LDEsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDE3OSwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ4LDAsMCwwLDI5LDQsMCwwLAorICAgIDExNSwyMiwwLDAsMCw4LDIsNCwyLDEyLDgsMTIsMTMsMTIsMjIsMTIsCisgICAgMTUsMiwxLDEyLDMxLDIsMSwxMiwyMywyLDEsMTE0LDI0OCwwLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSw5MCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLAorICAgIDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LAorICAgIDEwMCw1LDEzMiwwLDkwLDUsMTAxLDYsOTAsNywxMDAsNiwxMDAsNywxMzIsMCwKKyAgICA5MCw4LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDksMTAwLDE5LDEwMCwxMSwxMDAsMTIsCisgICAgMTMyLDEsOTAsMTAsMTAwLDEzLDEwMCwxNCwxMzIsMCw5MCwxMSwxMDEsMTIsMTAwLDE1LAorICAgIDEwMCwxNiwxMzIsMCwxMzEsMSw5MCwxMywxMDAsMTcsMTAwLDE4LDEzMiwwLDkwLDE0LAorICAgIDEwMCwxMCw4MywwLDQxLDIwLDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTAyLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTEwLDExNiwxMDEsCisgICAgMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiw5NywxMTQsCisgICAgMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExMiwxMDEsMTE0LAorICAgIDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywxMCwKKyAgICAzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwzMiwxMTksMTA0LAorICAgIDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwNCwKKyAgICA5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsCisgICAgMCw3LDAsMCwwLDExNSw4OCwwLDAsMCwxMDMsMCwxMjUsMywxMjAsNDAsCisgICAgMTI0LDIsNjgsMCw5MywzMiw5MiwyLDEzNywwLDEyNSw0LDEyNCwzLDEwNiwwLAorICAgIDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwyLDEzMiw4LDEyNCw0LDY4LDAsMTMxLDEsCisgICAgMTMxLDEsMSwwLDExMywxMCw4NywwLDEyNCwzLDEyNCwwLDk1LDEsMTI0LDEsCisgICAgMTEyLDU4LDEwMCwzLDEyNCwwLDk1LDIsMTAwLDYsMTI0LDAsOTUsMywxMTYsNCwKKyAgICAxMzEsMCwxMjQsMCw5NSw1LDExNiw0LDEzMSwwLDEyNCwwLDk1LDYsMTAwLDUsCisgICAgODMsMCw0MSw3LDEyMiwxNTQsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwKKyAgICAzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LAorICAgIDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLAorICAgIDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLAorICAgIDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDUwLDQ1LDExNiwKKyAgICAxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsCisgICAgMCw1MSwwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LDAsOTMsMTQsMTI1LDEsCisgICAgMTI0LDEsMTM2LDAsMTAyLDIsODYsMCwxLDAsMTEzLDIsMTAwLDAsODMsMCwKKyAgICA0MSwxLDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCwKKyAgICAyMjIsMCwwLDAsNDEsMSwxMTQsMTI0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTc2LDQsMCwwLDExNSwyLAorICAgIDAsMCwwLDQsMCwxMjIsMzgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywKKyAgICAxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjEsMCwKKyAgICAwLDAsMTE0LDMxLDAsMCwwLDc4LDExNCw5MSwwLDAsMCw0MSw3LDExNCwKKyAgICAxNDcsMCwwLDAsMjE4LDgsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDM3LAorICAgIDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLAorICAgIDIxOCwzLDExNSwxMDEsMTE2LDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDIxOCwxOSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsMzcsCisgICAgMCwwLDAsMjE4LDE0LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsCisgICAgMTA1LDEwOCwxMTUsOTAsNywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMTY0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDEyNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTgyLDAsMCwwLDE3MCw0LDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMCw0LDQsMSwxNCwxLDI4LDEsNiwyLDEwLDEsNiwxLDgsMSwKKyAgICAxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTAwLAorICAgIDMsMTI0LDAsOTUsMCwxMDAsMiw4MywwLDQxLDQsMTIyLDMxLDczLDExMCwxMTgsCisgICAgOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsCisgICAgOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwxMTYsMTA1LDEwOSwxMDEsNDYsMTE0LDMxLDAsMCwKKyAgICAwLDc4LDExNCw5MSwwLDAsMCw0MSwxLDExNCw3LDEsMCwwLDQxLDEsCisgICAgMTE0LDEwNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMjQ5LDAsMCwwLDE4NCw0LDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDIsMTIyLDI4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMjQsMCwxMDYsMCwKKyAgICAxMjQsMSwxMzEsMSwxMjUsMiwxMjQsMiwxMDAsMSwxMDcsOCwxMTQsMjYsMTAwLDEsCisgICAgMTAzLDAsMTAyLDIsODMsMCwxMjQsMiwxMDYsMSwxMjQsMiwxMDYsMiwxMTIsMzgsCisgICAgMTAzLDAsMTAyLDIsODMsMCw0MSwyLDEyMiwxOTcsODQsMTE0LDEyMSwzMiwxMTYsMTExLAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsCisgICAgMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwKKyAgICAxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LAorICAgIDQxLDMsMTE0LDE3OCwwLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLAorICAgIDAsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDE2MiwwLAogICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCi0gICAgMCwxMTQsMTgyLDAsMCwwLDE5OSw0LDAsMCwxMTUsNjgsMCwwLDAsMCwKLSAgICAzLDYsMSwxOSwxLDMsMSwzNCwxLDEzLDEsMTEsMSwxNSwxLDEwLAotICAgIDEsOSwyLDksMSw5LDEsMTUsMiw5LDEsNiwyLDEyLDEsMTgsCi0gICAgMSwyMiwxLDEwLDEsMTUsMSwxMiwxLDMyLDQsMTIsMiwyMiwxLDIyLAotICAgIDEsMjUsMSwxNiwxLDEyLDEsMjksMSw2LDEsMTksMSwxOCwxLDEyLAotICAgIDEsNCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsOSwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsMTEsCi0gICAgMSwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTIxLDMxLDAsMTE2LAotICAgIDEsMCwxMDYsMiwwLDEyNCwxLDAsMTEyLDMzLDAsMTE2LDEsMCwxMDYsMywKLSAgICAwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwzMywwLDQsMTE2LAotICAgIDQsMCwxMTYsNSwwLDExNiw2LDAsMTAyLDMsMCwxMDcsMTAsMCwxMTQsNzUsCi0gICAgMCwxLDEsMSwxMDMsMCwwLDEyNSwyLDAsODksMTEwLDEsMCw4OCwxMTYsCi0gICAgNywwLDEwNiw4LDAsMTA2LDksMCwxMDAsMSwwLDEzMSwxLDAsMTE1LDExMiwKLSAgICAwLDExNiwxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDExLDAsCi0gICAgMTEwLDExMSwwLDExNiwxMCwwLDEzMSwwLDAsMTI1LDMsMCwxMjAsOTAsMCwxMjQsCi0gICAgMiwwLDY4LDkzLDgyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwxMiwwLDEwMCwKLSAgICAyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDUsMCwxMjUsNiwwLDEyNSw3LAotICAgIDAsMTI0LDYsMCwxMTQsMTkxLDAsMTAwLDMsMCwxMDYsMTMsMCwxMjQsNSwwLAotICAgIDEyNCw3LDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMiwwLDEyNSw4LDAsMTEwLAotICAgIDYsMCwxMjQsNSwwLDEyNSw4LDAsMTI0LDMsMCwxMDYsMTUsMCwxMjQsOCwKLSAgICAwLDEzMSwxLDAsMSwxMTMsMTI4LDAsODcsMTI0LDMsMCwxMjQsMCwwLDk1LAotICAgIDExLDAsMTE2LDcsMCwxMDYsOCwwLDEwNiw5LDAsMTE2LDE2LDAsMTMxLDEsCi0gICAgMCwxMTQsNywxLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEyNCwyLDAsCi0gICAgNjgsMTMxLDEsMCwxMjQsMCwwLDk1LDE3LDAsMTAwLDYsMCw4Myw0MSw3LAotICAgIDEyMiw2OCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDMyLDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywKLSAgICAxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDAsMTA1LDExNCwxMDEsCi0gICAgOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNCwwLDAsMCwwLDExNCw2MCwwLDAsMCwKLSAgICAxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMywwLDAsMCw4MywwLDAsMCwxMTUsMjgsMCwwLAotICAgIDAsMTA0LDAsMCwxMjQsMCwwLDkzLDE4LDAsMTI1LDEsMCwxMjQsMSwwLAotICAgIDEwNiwwLDAsMTMxLDAsMCwxNDYsMiwwLDExMyw2LDAsODMsMTE0LDQsMCwKLSAgICAwLDAsNDEsMSwxMTQsOTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsCi0gICAgOTAsMiwxMDIsMTEwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDI1MCw5LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDE3LDUsCi0gICAgMCwwLDExNSwyLDAsMCwwLDksMCwxMjIsNDEsNzAsMTA1LDEwOCwxMDEsNzAsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTE1LDEwMSwxMTYsOTksCi0gICAgMTExLDEwOSwxMTIsNjIsNzgsNDEsMTgsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwKLSAgICAwLDkwLDcsMTA4LDEwNSwxMTUsMTE2LDEwMCwxMDUsMTE0LDExNCw0NywwLDAsMCwxMTQsCi0gICAgMSwxLDAsMCwyMTgsMTUsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDIxOCwxOCw3OCwxMTEsMTE2LDY1LDY4LDEwNSwxMTQsMTAxLDk5LAotICAgIDExNiwxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDgsMCwwLDAsMTE0LDksCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwxLDAsMCwxMTQsMTEsMSwKLSAgICAwLDAsMTE0LDg1LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsOTAsMCwwLAotICAgIDAsMjE4LDMsOTcsMTAwLDEwMCwxMTQsMTEsMCwwLDAsMTE0LDEyLDEsMCwwLAotICAgIDQxLDksMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5OSwxMTEsCi0gICAgMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LAotICAgIDEwMiwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDI0NiwwLAotICAgIDAsMCwxMTQsMTA4LDAsMCwwLDExNCwyMzgsMCwwLDAsMTE0LDIyNiwwLDAsCi0gICAgMCw5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNCwxLDAsMCwyNDQsCi0gICAgNCwwLDAsMTE1LDM0LDAsMCwwLDAsMiw5LDEsMywxLDMxLDEsCi0gICAgMjIsMywxMSwzLDE4LDEsMTgsNyw5LDEsMTMsMSwyNCwxLDYsMSwKLSAgICAyNywyLDYsMSwxNywxLDksMSwxOCwxLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSwKLSAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsCi0gICAgMCwwLDAsNywwLDAsMCwxMTUsMjUsMCwwLDAsMTM1LDAsMCwxMzUsCi0gICAgMSwwLDEwMiwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDIsCi0gICAgMCwxMjQsMiwwLDgzLDQxLDMsOTcsMjAsMSwwLDAsNjUsMzIsOTksMTA4LAorICAgIDAsMTE0LDEyMSwwLDAsMCwxOTAsNCwwLDAsMTE1LDgsMCwwLDAsMCwKKyAgICA3LDEwLDEsOCwxLDgsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSwKKyAgICA2LDAsMCwwLDAsMCwwLDAsNywwLDAsMCw2LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwyNiwwLDAsMCwxMjQsMSwxMjQsMiwxMjQsMywxMzEsCisgICAgMiwxMjUsNiwxMTYsMCwxMjQsMiwxMjQsMywxMjQsNiwxMjQsNCwxMDAsMSwxNDEsCisgICAgNCw4MywwLDQxLDIsNzgsNDEsMiwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwKKyAgICAwLDAsNDEsMSwxMTQsMTY1LDAsMCwwLDQxLDcsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMTYzLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDM3LDAsMCwwLDkwLAorICAgIDQsMTE1LDEwOSwxMTUsMTA4LDExNCwxNzcsMCwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsNCwKKyAgICAxLDAsMCwyMDIsNCwwLDAsMTE1LDYsMCwwLDAsMCwxLDEwLDEsCisgICAgOCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDMsMCwwLDAsMCwwLAorICAgIDAsMCwxNCwwLDAsMCwxNSwwLDAsMCw2NywwLDAsMCwxMTUsOTgsCisgICAgMSwwLDAsMTAwLDEsMTI1LDMsMTI0LDEsMTA2LDAsMTAwLDIsMTMxLDEsMTAwLAorICAgIDMsMjUsMCwxMjUsNCwxMjEsMjQsMTE2LDEsMTI0LDAsMTA2LDIsMTEyLDM0LDExNiwKKyAgICAzLDEwNiw0LDEzMSwwLDEzMSwxLDEwNiw1LDEyNSw1LDg3LDAsMTEwLDI0LDQsCisgICAgMCwxMTYsNiwxMDcsMTAsMTE0LDY2LDEsMCwxLDAsMSwwLDEwMCwxMCwxMjUsCisgICAgNSw4OSwwLDExMCwyLDg4LDAsMTI0LDUsMTI0LDAsMTA2LDcsMTA3LDMsMTE0LAorICAgIDkyLDEyNCwwLDEwNiw4LDEzMSwwLDEsMCwxMjQsNSwxMjQsMCw5NSw3LDExNiwKKyAgICA5LDEzMSwwLDExNCwxMTQsMTI0LDAsMTA2LDEwLDEyNSw2LDEyNCw0LDEwNiwxMSwxMzEsCisgICAgMCwxMjUsNywxMTAsMTAsMTI0LDAsMTA2LDEyLDEyNSw2LDEyNCw0LDEyNSw3LDEyNCwKKyAgICA3LDEyNCw2LDEwNyw2LDExNCwyMTgsMTE2LDEzLDEyNCwwLDEwNiwyLDEyNCw0LDEzMSwKKyAgICAyLDEyNSw4LDEyMCw3MiwxMjQsMCwxMDYsMTQsNjgsMCw5Myw1NCw5MiwyLDEyNSwKKyAgICA5LDEyNSwxMCwxMDAsNSwxMjQsOSwyMywwLDEyNSwxMSwxMTYsMTMsMTI0LDgsMTI0LAorICAgIDExLDEzMSwyLDEyNSwxMiwxMTYsMTUsMTI0LDEyLDEzMSwxLDExNCwxNTIsMTI0LDAsMTA2LAorICAgIDE2LDEyNCwxMCwxMjQsMSwxMjQsMTIsMTI0LDgsMTAzLDEsMTI0LDIsMTMxLDUsODMsCisgICAgMCwxMTMsMTUyLDg3LDAsMTE2LDE3LDEyNCw4LDEzMSwxLDEyNSwzLDEyMCw4OCwxMjQsCisgICAgMCwxMDYsMTQsNjgsMCw5Myw3OCw5MiwyLDEyNSw5LDEyNSwxMCwxMTYsMTMsMTI0LAorICAgIDAsMTA2LDIsMTI0LDQsMTI0LDksMjMsMCwxMzEsMiwxMjUsMTIsMTE2LDE4LDEwNiwKKyAgICAxOSwxMDAsNiwxMjQsMTIsMTAwLDMsMTAwLDcsMTQxLDMsMSwwLDEyNCw3LDEyNCwKKyAgICA5LDIzLDAsMTI0LDYsMTA3LDYsMTE0LDIyNiwxMTYsMTUsMTI0LDEyLDEzMSwxLDExNCwKKyAgICAyMjYsMTI0LDAsMTA2LDE2LDEyNCwxMCwxMjQsMSwxMjQsMTIsMTAwLDgsMTI0LDIsMTMxLAorICAgIDUsODMsMCwxMTMsMjI2LDg3LDAsMTI0LDMsMTQ0LDEsMTE0LDk0LDExNiwxOCwxMDYsCisgICAgMTksMTAwLDksMTI0LDgsMTMxLDIsMSwwLDExNiwxOCwxMDYsMjAsMTI0LDEsMTAwLAorICAgIDgsMTMxLDIsMTI1LDEzLDEyNCw4LDEwMywxLDEyNCwxMyw5NSwyMSwxMjQsMTMsODMsCisgICAgMCwxMDAsOCw4MywwLDQxLDExLDEyMiwxMTEsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSw5NywxMTYsOTksMTA0LAorICAgIDEwNSwxMTAsMTAzLDMyLDExNSwxMTIsMTAxLDk5LDQ0LDMyLDExMSwxMTQsMzIsNzgsMTExLDExMCwKKyAgICAxMDEsMzIsMTA1LDEwMiwzMiwxMTAsMTExLDExNiwzMiwxMDIsMTExLDExNywxMTAsMTAwLDQ2LDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDcwLDExNCw2MSwwLDAsMCwxMTQsNTksCisgICAgMCwwLDAsMTE0LDMxLDAsMCwwLDExNCwxODIsMCwwLDAsMTIyLDksMTE2LAorICAgIDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTIzLDEyNSw0MSwxLDkwLDksMTE4LDEwMSwxMTQsOTgsCisgICAgMTExLDExNSwxMDUsMTE2LDEyMSw3OCwxMjIsMjUsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEyMywKKyAgICAxMjUsMTE0LDkxLDAsMCwwLDQxLDIyLDExNCwzNCwwLDAsMCwxMTQsNDEsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwwLDExNCw0NywwLDAsCisgICAgMCwxMTQsMjE2LDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsNywxLDAsMCwKKyAgICAyMTgsMTEsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE0LDcsMCwKKyAgICAwLDAsMTE0LDEwLDEsMCwwLDExNCw5MiwwLDAsMCwxMTQsOSwxLDAsCisgICAgMCwxMTQsMzAsMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDQ2LDAsMCwwLAorICAgIDExNCw0LDEsMCwwLDExNCw0OCwwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCwKKyAgICAxMzMsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsMTU0LDAsMCwwLDQxLDE0LAorICAgIDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTc3LDAsMCwwLDkwLAorICAgIDEyLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LAorICAgIDk3LDEwNSwxMDgsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEzMCwwLDAsMCw5MCwKKyAgICA1LDk5LDk3LDk5LDEwNCwxMDEsOTAsMTIsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5MCw5LDk4LDk3LDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LAorICAgIDIyMiwwLDAsMCwxMTQsMTYzLDAsMCwwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwKKyAgICAxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTc4LDAsMCwwLDIwNyw0LDAsMCwKKyAgICAxMTUsNzAsMCwwLDAsMCw1LDQsMSwxNCwxLDIsMSwyNCwxLDE0LAorICAgIDEsMTAsMSwxMCwxLDgsMSw2LDIsNiwxLDYsMSwxMCwyLDYsCisgICAgMSw0LDIsOCwxLDEyLDEsMTYsMSw4LDEsMTAsMSw4LDEsMjQsCisgICAgNCw4LDIsMTYsMSwxNiwxLDE2LDEsMTIsMSw4LDEsMTAsMSwxMiwKKyAgICAxLDYsMSwxMiwxLDEyLDEsOCwxLDQsMSwxMjIsMjAsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsCisgICAgOTksOTksMSwwLDAsMCwwLDAsMCwwLDksMCwwLDAsMTMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDE5NCwwLDAsMCwxMjQsMCwxMDYsMCwxMjUsCisgICAgMSwxMjEsMjIsMTE2LDEsMTA2LDIsMTI0LDEsMTEyLDIyLDExNiwxLDEwNiwzLDEzMSwKKyAgICAwLDEzMSwxLDEyNSwyLDg3LDAsMTEwLDMwLDQsMCwxMTYsNCwxMTYsNSwxMTYsCisgICAgNiwxMDIsMywxMDcsMTAsMTE0LDU4LDEsMCwxLDAsMSwwLDEwMywwLDEyNSwKKyAgICAyLDg5LDAsMTEwLDIsODgsMCwxMTYsNywxMDYsOCwxMDYsOSwxMDAsMSwxMzEsCisgICAgMSwxMTUsODQsMTE2LDEwLDEyNCwyLDEzMSwxLDEyNCwwLDk1LDExLDExMCw3OCwxMTYsCisgICAgMTAsMTMxLDAsMTI1LDMsMTIwLDY0LDEyNCwyLDY4LDAsOTMsNTYsMTI1LDQsMTI0LAorICAgIDQsMTA2LDEyLDEwMCwyLDEzMSwxLDkyLDMsMTI1LDUsMTI1LDYsMTI1LDcsMTI0LAorICAgIDYsMTE0LDEzOCwxMDAsMywxMDYsMTMsMTI0LDUsMTI0LDcsMTA2LDE0LDEzMSwwLDEzMSwKKyAgICAyLDEyNSw4LDExMCw0LDEyNCw1LDEyNSw4LDEyNCwzLDEwNiwxNSwxMjQsOCwxMzEsCisgICAgMSwxLDAsMTEzLDk2LDg3LDAsMTI0LDMsMTI0LDAsOTUsMTEsMTE2LDcsMTA2LAorICAgIDgsMTA2LDksMTE2LDE2LDEzMSwxLDExNCwxOTAsMTAwLDQsMTAwLDUsMTMyLDAsMTI0LAorICAgIDIsNjgsMCwxMzEsMSwxMjQsMCw5NSwxNywxMDAsNiw4MywwLDQxLDcsMTIyLAorICAgIDY4LDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsCisgICAgMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICAxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwKKyAgICAxMTYsMTExLDExNCwxMjEsNDYsMTE0LDAsMCwwLDAsMTE0LDYxLDAsMCwwLDEyMiwKKyAgICA1LDEyMywxMjUsNDYsMTIzLDEyNSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCwzLDAsMCwwLDgzLDAsMCwwLDExNSwyMCwwLDAsMCwKKyAgICAxMDQsMCwxMjQsMCw5MywxMiwxMjUsMSwxMjQsMSwxMDYsMCwxMzEsMCwxNDYsMiwKKyAgICAxMTMsNCw4MywwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDkyLDAsMCwwLAorICAgIDQxLDIsMTE0LDI0LDAsMCwwLDkwLDIsMTAyLDExMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyNTAsOSw2MCwxMTUsMTAxLDExNiwKKyAgICA5OSwxMTEsMTA5LDExMiw2MiwyOCw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsCisgICAgMTIyLDQxLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwKKyAgICAxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LAorICAgIDYyLDQ2LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDc4LDQxLDE4LDExNCwzNywKKyAgICAwLDAsMCwxMTQsMywwLDAsMCw5MCw3LDEwOCwxMDUsMTE1LDExNiwxMDAsMTA1LAorICAgIDExNCwxMTQsNDcsMCwwLDAsMTE0LDI1NSwwLDAsMCwyMTgsMTUsODAsMTAxLDExNCwKKyAgICAxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDIxOCwxOCw3OCwxMTEsCisgICAgMTE2LDY1LDY4LDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDgsMCwwLDAsMTE0LDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICA4LDEsMCwwLDExNCw5LDEsMCwwLDExNCw4NywwLDAsMCwxMTQsNTAsCisgICAgMCwwLDAsMTE0LDkyLDAsMCwwLDIxOCwzLDk3LDEwMCwxMDAsMTE0LDExLDAsCisgICAgMCwwLDExNCwxMCwxLDAsMCw0MSw5LDExNCwxMDQsMCwwLDAsMTE0LDM3LAorICAgIDAsMCwwLDkwLDgsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDkwLDIxLDEwOCwKKyAgICAxMTEsMTE5LDEwMSwxMTQsOTUsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsOTUsOTksMTExLDExMCwxMTYsCisgICAgMTAxLDExMCwxMTYsMTE1LDExNCwyNDQsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMjM0LAorICAgIDAsMCwwLDExNCwyMjIsMCwwLDAsOTAsOCwxMTAsMTAxLDExOSw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwxMTQsMTIsMSwwLDAsMjU1LDQsMCwwLDExNSwzNCwwLDAsMCwwLAorICAgIDIsNiwxLDIsMSwyMiwxLDIwLDMsMTAsMywxMiwxLDEyLDcsNiwKKyAgICAxLDEwLDEsMTYsMSw0LDEsMTgsMiw0LDEsMTQsMSw2LDEsMTIsCisgICAgMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwzLDAsMCwwLDcsMCwwLDAsMTE1LDE4LAorICAgIDAsMCwwLDEzNSwwLDEzNSwxLDEwMiwyLDEwMCwxLDEwMCwyLDEzMiw4LDEyNSwKKyAgICAyLDEyNCwyLDgzLDAsNDEsMyw5NywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsCiAgICAgOTcsMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsCiAgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywKICAgICAxMTQsMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSwKQEAgLTIzNjMsMjQ0ICsyMjExLDIzMCBAQAogICAgIDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LAogICAgIDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKICAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwKLSAgICAwLDE5LDAsMCwwLDExNSw0MywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxMTUsMzAsMCwxMTYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLDAsMTM2LDEsCi0gICAgMCwxNDAsMSwwLDgzLDQxLDMsMTIyLDQ1LDgwLDk3LDExNiwxMDQsMzIsMTA0LDExMSwKLSAgICAxMTEsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCi0gICAgNDYsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LDcwLDEwNSwxMDgsMTAxLDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTIyLDMwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsMTA1LDExNCwKLSAgICAxMDEsOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTE3LDExMiwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsNDgsMCwKLSAgICAwLDAsMTE0LDEwOSwwLDAsMCw0MSwxLDExNCwzNywwLDAsMCw0MSwyLAotICAgIDExNCwxNzIsMCwwLDAsMTE0LDEzLDEsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDIxOCwyNCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsCi0gICAgMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwyOSw1LAotICAgIDAsMCwxMTUsNiwwLDAsMCwwLDIsMTIsMSwxOCwxLDEyMiw1NCw3MCwKLSAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwKLSAgICAxMTEsMTExLDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTcyLDAsMCwKLSAgICAwLDExNCwxMywxLDAsMCwxMTQsMTksMSwwLDAsMTE0LDQsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTcyLDAsMCwwLDExNCwxMywxLDAsMCwxMTQsNiwwLDAsCi0gICAgMCwyMTgsOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTksNSwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCwxMCwyMSw2LDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsMTYsNzAsMTA1LAotICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MSwyLAotICAgIDExNCw0OSwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwyNDUsMCwwLDAsMzcsNSwwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDExNCwKLSAgICAxMDEsMTEyLDExNCw5NSw5NSw0MSwxNSwxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLAotICAgIDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwxODYsMCwwLDAsCi0gICAgMTE0LDI1MSwwLDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LAotICAgIDEyNiwwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxNCwKLSAgICAxLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwyMCwxLDAsMCwxMTQsMjQ1LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw2LDAsMCwwLDExNCw3LDEsMCwwLDE1Myw0LDAsMCwxMTUsCi0gICAgMjAsMCwwLDAsMTIsNyw2LDIsMTIsMTQsMTIsNCw2LDIsMTIsMTIsCi0gICAgMTIsNSwxNSw0NSwxMiwzMSwxOCwxOCwxMTQsNywxLDAsMCw5OSw0LDAsCi0gICAgMCwwLDAsMCwwLDAsNiwwLDAsMCwxMSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTk1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLAotICAgIDEzMSwxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsCi0gICAgMSwwLDEyNSw1LDAsMTI0LDQsMCwxMTUsOTksMCwxMjQsNSwwLDExNCw1NCwKLSAgICAwLDEyNCw1LDAsMTA2LDEsMCwxMjUsNCwwLDExMCw0NSwwLDEyNCwyLDAsCi0gICAgMTI0LDMsMCwxMDcsMiwwLDExNCw4NCwwLDExNiwyLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTI1LDQsMCwxMTAsMTUsMCwxMTYsMywwLDEyNCwxLAotICAgIDAsMTI0LDIsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDUsMCwxMTUsMTI2LDAsCi0gICAgMTE2LDQsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDEsMTI1LDUsMCwxMjEsNDQsMCwxMjQsNSwwLDEyNCwwLDAsMTAwLDIsCi0gICAgMCw2MCwxMjQsNCwwLDEyNCwwLDAsMTAwLDEsMCw2MCwxMjQsMiwwLDEyNCwKLSAgICAwLDAsMTAwLDQsMCw2MCwxMjQsMywwLDEyNCwwLDAsMTAwLDUsMCw2MCwKLSAgICA4NywxMTAsMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE5MCwwLDEsMSwKLSAgICAxLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSw2LDc4LDIxOCwxMCw5NSwKLSAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLAotICAgIDk5LDk1LDk1LDExNCwxMjksMCwwLDAsOTAsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsCi0gICAgOTUsOTUsOTAsMTAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsNDEsNiwKLSAgICAyMTgsMywxMDMsMTAxLDExNiwxMTQsMTI5LDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LAotICAgIDIxOSwwLDAsMCwxMTQsMTY5LDAsMCwwLDIxOCw5LDY5LDEyMCw5OSwxMDEsMTEyLAotICAgIDExNiwxMDUsMTExLDExMCw0MSw2LDkwLDIsMTEwLDExNSwxMTQsMTA4LDAsMCwwLDkwLAotICAgIDgsMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsOTAsOSw5OSwxMTIsOTcsMTE2LDEwNCwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMTQsMTI5LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDk1LAotICAgIDEwMiwxMDUsMTIwLDk1LDExNywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDMsNSwwLAotICAgIDAsMTE1LDM0LDAsMCwwLDAsMiwxNSwxLDE1LDEsNiwxLDYsMSwKLSAgICAxMiwxLDEyLDEsMTgsMiwxNSwxLDYsMSwyMSwxLDMsMSwxMCwxLAotICAgIDEwLDEsMTAsMSwxNCwxLDEzLDIsMTE0LDI1LDEsMCwwLDk5LDAsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDU1LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMDYsMiwwLAotICAgIDEzMSwwLDAsMTAyLDIsMCwxMjUsMCwwLDExNiwzLDAsMTE2LDQsMCwxMDIsCi0gICAgMiwwLDEyNSwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwyLDAsMTI1LDIsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMDMsMywwLDgzLDQxLDEsCi0gICAgMTIyLDk1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDEwOCwxMDUsMTE1LDExNiwKLSAgICAzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiw2OSw5Nyw5OSwxMDQsMzIsMTA1LDExNiwxMDEsMTA5LDMyLDEwNSwxMTUsCi0gICAgMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDQ0LDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDEsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsNDEsNywxMTQsMjI1LDAsMCwwLDExNCwxNDcsMCwwLDAsMjE4LDE4LDEwMSwKLSAgICAxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwKLSAgICAxMTUsMTE0LDIxOSwwLDAsMCwxMTQsODYsMCwwLDAsMTE0LDIyNCwwLDAsMCwKLSAgICAxMTQsNzYsMCwwLDAsNDEsMyw5MCwxMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsCi0gICAgMTExLDExMCwxMTUsOTAsNiwxMTUsMTExLDExNywxMTQsOTksMTAxLDkwLDgsOTgsMTIxLDExNiwKLSAgICAxMDEsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMTE0LDE2MywwLDAsMCw2Niw1LDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDUsMTgsMSwxMiwxLDEyLDEsMTE0LDE2MywwLDAsMCw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDcwLDIsMCwwLDEyNCwwLDAsOTcsMCwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCw5NywxLDAsMTE2LDAsMCwxMDYsMiwwLDk3LDIsCi0gICAgMCwxMTYsMSwwLDEwNiwzLDAsMTE2LDQsMCwyNSwxMjUsMSwwLDEyMCw3NiwKLSAgICAwLDEwMCwyNiwwLDY4LDkzLDY4LDAsMTI1LDIsMCwxMjQsMiwwLDExNiwxLAotICAgIDAsMTA2LDMsMCwxMDcsNywwLDExNCw4MywwLDExNiwwLDAsMTA2LDUsMCwKLSAgICAxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwKLSAgICAzLDAsMTI0LDIsMCwyNSwxMjUsMywwLDExNiw2LDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEyNCwzLDAsMTMxLDMsMCwxLDExMyw0NCwwLDg3LDEwMCw1LDAsCi0gICAgMTAwLDYsMCwxMDMsMSwwLDEwMiwyLDAsMTAwLDcsMCwxMDAsOCwwLDEwMCwKLSAgICA2LDAsMTAzLDIsMCwxMDIsMiwwLDEwMiwyLDAsMTI1LDQsMCwxMjAsMTQ5LAotICAgIDAsMTI0LDQsMCw2OCw5MywxMjksMCw5MiwyLDAsMTI1LDUsMCwxMjUsNiwKLSAgICAwLDExNiw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDEyNCw2LDAsCi0gICAgNjgsMTMxLDEsMCwxMzEsMSwwLDExNSwxOTksMCwxMTYsOCwwLDEzMCwxLDAsCi0gICAgMTI0LDYsMCwxMDAsMTEsMCwyNSwxMjUsNywwLDEyNCw1LDAsMTE2LDEsMCwKLSAgICAxMDYsMywwLDEwNyw2LDAsMTE0LDI0MSwwLDExNiwxLDAsMTA2LDMsMCwxMjQsCi0gICAgNSwwLDI1LDEyNSw4LDAsODAsMTEzLDE1NiwwLDEyMSwyMCwwLDExNiwwLDAsCi0gICAgMTA2LDUsMCwxMjQsNSwwLDEzMSwxLDAsMTI1LDgsMCw4MCw4NywxMTMsMTU2LAotICAgIDAsNCwxMTYsOSwwLDEwNywxMCwwLDExNCwyOCwxLDEsMSwxLDExOSwxNTYsCi0gICAgMCw4OSwxMTMsMTU2LDAsODgsMTEzLDE1NiwwLDg3LDExNiw5LDAsMTAwLDEyLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTMsMCwxMjQsCi0gICAgOCwwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDE0LDAsMTI0LAotICAgIDcsMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwxNSwwLDEwMCwKLSAgICAxNiwwLDEwNiwxMCwwLDEyNCw2LDAsMTMxLDEsMCwxMzEsMywwLDEsMTIxLAotICAgIDE5LDAsMTE2LDAsMCwxMDYsNSwwLDEwMCwxNywwLDEzMSwxLDAsMTI1LDksCi0gICAgMCw4NywxMTAsMjQsMCw0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDE0NywxLDEsCi0gICAgMSwxLDEwMCwxOCwwLDEyNSw5LDAsODksMTEwLDEsMCw4OCwxMTYsNiwwLAotICAgIDEyNCwxLDAsMTAwLDE3LDAsMTI0LDksMCwxMzEsMywwLDEsMTE2LDAsMCwKLSAgICAxMDYsNSwwLDEwMCwxOSwwLDEzMSwxLDAsMTI1LDEwLDAsMTE2LDYsMCwxMjQsCi0gICAgMSwwLDEwMCwxOSwwLDEyNCwxMCwwLDEzMSwzLDAsMSwxMjQsNSwwLDEwMCwKLSAgICA3LDAsMTA3LDIsMCwxMTQsMjM4LDEsMTE2LDAsMCwxMDYsNSwwLDEwMCwyMCwKLSAgICAwLDEzMSwxLDAsMTI1LDExLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwyMSwwLAotICAgIDEyNCwxMSwwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDIyLDAsCi0gICAgMTE2LDExLDAsMTMxLDAsMCwxMzEsMywwLDEsMTE2LDEyLDAsMTA2LDEzLDAsCi0gICAgMTE2LDIsMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwxLDAsMSwxMjQsNSwwLAotICAgIDEwMCw3LDAsMTA3LDIsMCwxMTQsNjYsMiwxMTYsMTUsMCwxMDYsMTYsMCwxMDAsCi0gICAgMjMsMCwxMzEsMSwwLDEsMTAwLDI0LDAsMTE2LDEyLDAsMTA3LDYsMCwxMTQsCi0gICAgNjYsMiwxMDAsMjUsMCwxMTYsMTcsMCw5NSwxOCwwLDEwMCwxOCwwLDgzLDQxLAotICAgIDI3LDEyMiwyMDUsODMsMTAxLDExNiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCi0gICAgMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsCi0gICAgOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLAotICAgIDEwMCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LAotICAgIDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDMyLDEwNSwxMTAsMTE2LDExMSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsCi0gICAgMTE0LDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsCi0gICAgMzIsMTAxLDEyMCwxMTYsMTE0LDk3LDk5LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTE0LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKLSAgICA5NywxMTIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE0LDUxLDAsMCwwLDExNCw2MiwwLDAsMCwyMTgsOCw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMTYsMTA1LDExMCwxMTUsMTE0LDE0NCwwLDAsMCw5MCw1LDExMiwxMTEsMTE1LDEwNSwxMjAsCi0gICAgMjUwLDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSw5Miw5OSwxLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsCi0gICAgMzMsMCwwLDAsMTI0LDAsMCw5MywyMywwLDEyNSwxLDAsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsMiwwLDg2LDEsMTEzLDMsCi0gICAgMCwxMDAsMSwwLDgzLDQxLDIsMTE0LDMxLDAsMCwwLDc4LDQxLDEsMTE0LAotICAgIDMzLDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCw3OSwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCi0gICAgMjI4LDAsMCwwLDEwMiw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAotICAgIDI1LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjEsMCwwLDAsMTIyLAotICAgIDMwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwKLSAgICAxMTQsMTAxLDExNSwzMiwxMTIsMTExLDExNSwxMDUsMTIwLDMyLDExMSwxMTQsMzIsMTEwLDExNiwxMTQsCi0gICAgMywwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDIzLDAsMCwwLDExNCwzMiwKLSAgICAwLDAsMCw5MCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsNzgsOTAsOCw5NSwKLSAgICAxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCw2LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDExNCwKLSAgICAxNzEsMCwwLDAsMTE0LDcsMCwwLDAsMTIyLDQsNDYsMTEyLDEyMSwxMTksMTIyLAotICAgIDYsOTUsMTAwLDQ2LDExMiwxMjEsMTAwLDg0LDQxLDQsMTIyLDMsOTUsMTA1LDExMSwxMjIsCi0gICAgOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTIyLDgsOTgsMTE3LDEwNSwxMDgsCi0gICAgMTE2LDEwNSwxMTAsMTE1LDEyMiw3LDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsNDEsMTksMTE0LAotICAgIDEyMywwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwyNDAsCi0gICAgMCwwLDAsMTE0LDExNCwwLDAsMCw5MCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDExOCwwLDAsCi0gICAgMCwyMTgsMyw5NywxMDgsMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTA5LDAsMCwwLDExNCwyOCwwLDAsMCwKLSAgICAxMTQsMTMsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMTUxLDAsMCwwLDExNCwKLSAgICAyNiwxLDAsMCwxMTQsODYsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTcwLAotICAgIDAsMCwwLDExNCwxNzQsMCwwLDAsNDEsMTIsMjE4LDE3LDk1LDk4LDExMSwxMTEsCi0gICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMTUsCi0gICAgMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwxMDgsCi0gICAgMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKLSAgICAxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTAsMTExLDExNSw5NSwxMDAsMTAxLDExNiwKLSAgICA5NywxMDUsMTA4LDExNSw5MCwxMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsMTE1LAotICAgIDExNCwyMywwLDAsMCwxMTQsMjcsMCwwLDAsOTAsOSwxMTEsMTE1LDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw3Nyw1LDAsMCwxMTUsODIsCi0gICAgMCwwLDAsMCw4LDYsMSw5LDEsOSwzLDEzLDEsMTMsMSwxNSwKLSAgICAxLDE4LDIsMTMsMSwyMCwzLDMzLDEsMTksMiwzMSwxLDEwLDEsMTUsCi0gICAgMSwxMywxLDQsMiwzLDEsMTUsMSw1LDEsMTMsMSwxMiwyLDEyLAotICAgIDEsMTYsMSwxNiwxLDI1LDMsMywxLDE5LDEsMTMsMiwxMSwxLDE2LAotICAgIDMsMTUsMSwxNiwzLDEyLDEsMTUsMSwxNiwzLDE5LDEsMTksMSwxMiwKLSAgICAxLDEzLDEsMTIsMSwxMTQsMzQsMSwwLDAsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEsMTE2LDEsCi0gICAgMCwxMzEsMCwwLDEyNSwxLDAsMTE2LDIsMCwxMDYsMywwLDEwNiw0LDAsCi0gICAgMTE2LDUsMCwxMDYsNiwwLDEyNCwxLDAsMTQwLDAsMCwxMDMsMSwwLDEzMSwKLSAgICAxLDAsMSwxMTYsNywwLDEwNiw4LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwKLSAgICA3OCwwLDExNiwyLDAsMTA2LDksMCwxMDYsMTAsMCwxMTYsMTEsMCwxMzEsMSwKLSAgICAwLDEsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMiwwLDEzMSwxLAotICAgIDAsMSwxMTYsNSwwLDEyNCwwLDAsOTUsNSwwLDExNiwxMywwLDEyNCwwLAotICAgIDAsOTUsMTMsMCwxMDAsMiwwLDgzLDQxLDMsMTIyLDQxLDczLDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LAotICAgIDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwKLSAgICAxMDEsMTEwLDExNiwxMTUsNDYsMTE0LDI5LDEsMCwwLDc4LDQxLDE0LDExNCwzNCwxLAotICAgIDAsMCwxMTQsMTYzLDAsMCwwLDExNCw4LDAsMCwwLDExNCwyNTUsMCwwLAotICAgIDAsMTE0LDE1MSwwLDAsMCwxMTQsNywxLDAsMCwxMTQsMjAsMSwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsOSwxMDksMTAxLDExNiw5NywKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LAotICAgIDI1MCwwLDAsMCwxMTQsMjE5LDAsMCwwLDQxLDIsMTE0LDMzLDEsMCwwLAotICAgIDkwLDE3LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDE0NSw1LDAsMCwKLSAgICAxMTUsMTYsMCwwLDAsMCwyLDEwLDEsOSwxLDI4LDEsMTUsMSwxNiwKLSAgICAxLDE2LDQsOSwxLDExNCwzNiwxLDAsMCw0MSwxLDEyMiwzLDExOSwxMDUsCi0gICAgMTEwLDQxLDIsMTE0LDEsMCwwLDAsMTE0LDIsMCwwLDAsNDEsNTksMTE0LAotICAgIDExNiwwLDAsMCwxMTQsMTIsMCwwLDAsOTAsMzcsOTUsNjcsNjUsODMsNjksCi0gICAgOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsCi0gICAgODQsNzAsNzksODIsNzcsODMsOTUsNjYsODksODQsNjksODMsOTUsNzUsNjksODksCi0gICAgMTE0LDExLDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMTksMCwwLDAsMTE0LAotICAgIDIxLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDQ4LDAsCi0gICAgMCwwLDExNCw1NywwLDAsMCwyMTgsNCwxMTYsMTIxLDExMiwxMDEsMjE4LDgsOTUsCi0gICAgOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE0NiwwLDAsMCwxMTQsMTcsMCwwLAotICAgIDAsMTE0LDEzNywwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LDIwLDAsMCwwLAotICAgIDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LAotICAgIDY2LDY5LDgyLDExNCw3NSwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDg2LDAsCi0gICAgMCwwLDExNCw3NiwwLDAsMCw5MCwyMyw2OCw2OSw2Niw4NSw3MSw5NSw2NiwKLSAgICA4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywKLSAgICA5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSw4NCw2OSwKLSAgICA2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTQsODEsMCwKLSAgICAwLDAsMTE0LDg3LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsOTcsMCwwLAotICAgIDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEyNSwwLDAsMCwKLSAgICAxMTQsMTMyLDAsMCwwLDExNCwxNDMsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsCi0gICAgMTUyLDAsMCwwLDExNCwxNTcsMCwwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksCi0gICAgMTE2LDExNCwxNjQsMCwwLDAsMTE0LDE2OSwwLDAsMCwxMTQsMTcwLDAsMCwwLAotICAgIDExNCwxODUsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsMjExLDAsMCwwLDExNCwKLSAgICAyMTksMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwyMjUsCi0gICAgMCwwLDAsMTE0LDIzMSwwLDAsMCwxMTQsMjQ4LDAsMCwwLDExNCwyNTAsMCwKLSAgICAwLDAsMTE0LDcsMSwwLDAsMTE0LDI1LDEsMCwwLDExNCwxNjMsMCwwLAotICAgIDAsMTE0LDM0LDEsMCwwLDExNCwzNiwxLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCi0gICAgOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSwxMDYsMCwKLSAgICAwLDAsNiwxNiw2LDEsNiwxLDMsMSw3LDMsMTIsMTcsMTIsNSwKLSAgICAxMiw1LDEyLDYsMTIsMTIsMTIsMTAsMTIsOSwxMiw1LDEyLDcsMTUsMjIsCi0gICAgMTUsMTE0LDIyLDEsMTgsMiw2LDEsNiwyLDksMiw5LDIsMTAsMiwKLSAgICAyMSw0NCwxMiwzMywxMiwxOSwxMiwxMiwxMiwxMiwxOCw4LDEyLDI4LDEyLDE3LAotICAgIDIxLDU1LDIxLDEyLDE4LDEwLDEyLDE0LDksMywxMiwxLDE1LDY1LDE5LDY0LAotICAgIDE5LDI4LDIyLDExMCwxOSw0MSwyNSw0MywyNSwxNiw2LDMsMjUsNTMsMTksNTcsCi0gICAgMTksNDEsMTksMTM0LDE5LDE0NiwxNSwyMywxMiwxMSwxMiw2OCwKKyAgICAwLDE5LDAsMCwwLDExNSwzNCwwLDAsMCwxMTYsMCwxMjQsMCwxMzEsMSwKKyAgICAxMTUsMjAsMTE2LDEsMTAwLDEsMTI0LDAsMTAwLDIsMTQxLDIsMTMwLDEsMTM2LDAsCisgICAgMTI0LDAsMTAyLDEsMTM2LDEsMTUyLDIsMTQyLDAsODMsMCw0MSwzLDEyMiw0NSwKKyAgICA4MCw5NywxMTYsMTA0LDMyLDEwNCwxMTEsMTExLDEwNywzMiwxMDIsMTExLDExNCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LAorICAgIDEyMSw0Niw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEyMiwzMCwxMTEsCisgICAgMTEwLDEwOCwxMjEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEwNSwxMDEsMTE1LDMyLAorICAgIDk3LDExNCwxMDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNDEsMSwxMTQsCisgICAgMzcsMCwwLDAsNDEsMiwxMTQsNDgsMCwwLDAsMTE0LDEwMywwLDAsMCwKKyAgICA0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxNjgsMCwwLDAsMTE0LDExLAorICAgIDEsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyNCwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCw1LDAsMCwxMTUsNiwwLDAsMCwKKyAgICAwLDIsOCwxLDEyLDEsMTIyLDU0LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsCisgICAgMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwKKyAgICAwLDAsMCw0MSwzLDExNCwxNjgsMCwwLDAsMTE0LDExLDEsMCwwLDExNCwKKyAgICAxNywxLDAsMCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxNjgsMCwwLDAsCisgICAgMTE0LDExLDEsMCwwLDExNCw2LDAsMCwwLDIxOCw5LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwNCwxMTEsMTExLDEwNywzMCw1LDAsMCwxMTUsNCwwLDAsMCwwLDEwLAorICAgIDE0LDYsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsCisgICAgMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDgzLDAsNDEsMiwKKyAgICA3OCwxMjIsMTYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwxMjMsMzMsCisgICAgMTE0LDEyNSw0MSw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsCisgICAgMSwxMTQsMTA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwyNDMsMCwwLDAsNDgsNSwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0MSwxLDc4LDQxLDE1LDExNCwKKyAgICAxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsCisgICAgMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMjQ5LDAsMCwwLDExNCwxMjcsMCwKKyAgICAwLDAsMTE0LDE3OSwwLDAsMCwxMTQsMTIxLDAsMCwwLDExNCw0LDEsMCwKKyAgICAwLDExNCwxNzgsMCwwLDAsMTE0LDEyLDEsMCwwLDExNCwxODAsMCwwLDAsCisgICAgMTE0LDE4LDEsMCwwLDExNCwyNDMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDUsCisgICAgMSwwLDAsMTYxLDQsMCwwLDExNSwyMCwwLDAsMCw4LDcsNCwyLAorICAgIDgsMTQsOCw0LDQsMiw4LDEyLDgsNSwxMCw0OCw4LDMxLDEyLDE4LAorICAgIDExNCw1LDEsMCwwLDk5LDQsMCwwLDAsMCwwLDAsMCw2LDAsCisgICAgMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSwxNDYsMCwwLDAsMTI0LAorICAgIDAsMTA2LDAsMTAwLDEsMTMxLDEsMTI1LDQsMTI0LDAsMTA2LDAsMTAwLDIsMTMxLAorICAgIDEsMTI1LDUsMTI0LDQsMTE1LDY2LDEyNCw1LDExNCwzNiwxMjQsNSwxMDYsMSwxMjUsCisgICAgNCwxMTAsMzAsMTI0LDIsMTI0LDMsMTA3LDIsMTE0LDU2LDExNiwyLDEyNCwxLDEyNCwKKyAgICAyLDEzMSwyLDEyNSw0LDExMCwxMCwxMTYsMywxMjQsMSwxMjQsMiwxMzEsMiwxMjUsCisgICAgNCwxMjQsNSwxMTUsODQsMTE2LDQsMTI0LDEsMTI0LDIsMTI0LDQsMTAwLDMsMTQxLAorICAgIDMsMTI1LDUsMTIxLDM2LDEyNCw1LDEyNCwwLDEwMCwyLDYwLDAsMTI0LDQsMTI0LAorICAgIDAsMTAwLDEsNjAsMCwxMjQsMiwxMjQsMCwxMDAsNCw2MCwwLDEyNCwzLDEyNCwKKyAgICAwLDEwMCw1LDYwLDAsODcsMCwxMTAsMjAsNCwwLDExNiw1LDEwNywxMCwxMTQsCisgICAgMTQwLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwxMDAsMCw4MywKKyAgICAwLDQxLDYsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsCisgICAgMjE4LDgsOTUsOTUsMTE1LDExMiwxMDEsOTksOTUsOTUsNDEsMSwxMTQsMTI0LDAsMCwKKyAgICAwLDkwLDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDkwLDEwLDk1LDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDQxLDYsMjE4LDMsMTAzLDEwMSwxMTYsMTE0LDEyNCwKKyAgICAwLDAsMCwxMTQsMjIwLDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDE2NSwwLAorICAgIDAsMCwyMTgsOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsNDEsNiw5MCwKKyAgICAyLDExMCwxMTUsMTE0LDEwMiwwLDAsMCw5MCw4LDExMiw5NywxMTYsMTA0LDExMCw5NywKKyAgICAxMDksMTAxLDkwLDksOTksMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsMTE0LDEyNCwwLAorICAgIDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMDIsMTA1LDEyMCw5NSwxMTcsMTEyLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDU0LDUsMCwwLDExNSwzNCwwLDAsMCwwLAorICAgIDIsMTAsMSwxMCwxLDQsMSw0LDEsOCwxLDgsMSwxMiwyLDEwLAorICAgIDEsNCwxLDE0LDEsMiwxLDgsMSw4LDEsOCwxLDEyLDEsMTQsCisgICAgMiwxMTQsMjMsMSwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDMsCisgICAgMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLDAsCisgICAgMTE2LDAsMTE2LDEsMTA2LDIsMTMxLDAsMTAyLDIsMTI1LDAsMTE2LDMsMTE2LDQsCisgICAgMTAyLDIsMTI1LDEsMTE2LDUsMTE2LDYsMTAyLDIsMTI1LDIsMTI0LDAsMTI0LDEsCisgICAgMTI0LDIsMTAzLDMsODMsMCw0MSwxLDEyMiw5NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjksOTcsOTksMTA0LAorICAgIDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsCisgICAgMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwKKyAgICAxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDQxLDcsMTE0LDIyMSwwLDAsMCwKKyAgICAxMTQsMTQzLDAsMCwwLDIxOCwxOCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKKyAgICA5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNCwyMTUsMCwwLDAsMTE0LDg4LAorICAgIDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDc4LDAsMCwwLDQxLDMsOTAsCisgICAgMTAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMTE1LDkwLDYsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw5MCw4LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNTksMCwwLAorICAgIDAsNzcsNSwwLDAsMTE1LDgsMCwwLDAsMCw1LDEyLDEsOCwxLAorICAgIDgsMSwxMTQsMTU5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAxMiwwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMTg4LDEsMCwKKyAgICAwLDEyNCwwLDk3LDAsMTE2LDAsMTA2LDEsOTcsMSwxMTYsMCwxMDYsMiw5NywKKyAgICAyLDExNiwxLDEwNiwzLDExNiw0LDI1LDAsMTI1LDEsMTIwLDU2LDEwMCwyNiw2OCwKKyAgICAwLDkzLDQ4LDEyNSwyLDEyNCwyLDExNiwxLDEwNiwzLDEwNyw3LDExNCw1OCwxMTYsCisgICAgMCwxMDYsNSwxMjQsMiwxMzEsMSwxMjUsMywxMTAsMTAsMTE2LDEsMTA2LDMsMTI0LAorICAgIDIsMjUsMCwxMjUsMywxMTYsNiwxMjQsMSwxMjQsMiwxMjQsMywxMzEsMywxLAorICAgIDAsMTEzLDMyLDg3LDAsMTAwLDUsMTAwLDYsMTAzLDEsMTAyLDIsMTAwLDcsMTAwLAorICAgIDgsMTAwLDYsMTAzLDIsMTAyLDIsMTAyLDIsMTI1LDQsMTIwLDExOCwxMjQsNCw2OCwKKyAgICAwLDkzLDEwMiw5MiwyLDEyNSw1LDEyNSw2LDExNiw3LDEwMCw5LDEwMCwxMCwxMzIsCisgICAgMCwxMjQsNiw2OCwwLDEzMSwxLDEzMSwxLDExNSwxNDIsMTE2LDgsMTMwLDEsMTI0LAorICAgIDYsMTAwLDExLDI1LDAsMTI1LDcsMTI0LDUsMTE2LDEsMTA2LDMsMTA3LDYsMTE0LAorICAgIDE3NCwxMTYsMSwxMDYsMywxMjQsNSwyNSwwLDEyNSw4LDgwLDAsMTEzLDExMiwxMjEsCisgICAgMTYsMTE2LDAsMTA2LDUsMTI0LDUsMTMxLDEsMTI1LDgsODAsMCw4NywwLDExMywKKyAgICAxMTIsNCwwLDExNiw5LDEwNywxMCwxMTQsMjEyLDEsMCwxLDAsMSwwLDExOSwKKyAgICAxMTIsODksMCwxMTMsMTEyLDg4LDAsMTEzLDExMiw4NywwLDExNiw5LDEwMCwxMiwxMzEsCisgICAgMSwxMzAsMSwxMTYsNiwxMjQsMSwxMDAsMTMsMTI0LDgsMTMxLDMsMSwwLDExNiwKKyAgICA2LDEyNCwxLDEwMCwxNCwxMjQsNywxMzEsMywxLDAsMTE2LDYsMTI0LDEsMTAwLAorICAgIDE1LDEwMCwxNiwxMDYsMTAsMTI0LDYsMTMxLDEsMTMxLDMsMSwwLDEyMSwxNCwxMTYsCisgICAgMCwxMDYsNSwxMDAsMTcsMTMxLDEsMTI1LDksODcsMCwxMTAsMjYsNCwwLDExNiwKKyAgICA5LDEwNywxMCwxNDQsMSwxMTQsNTIsMSwwLDEsMCwxLDAsMTAwLDE4LDEyNSwKKyAgICA5LDg5LDAsMTEwLDIsODgsMCwxMTYsNiwxMjQsMSwxMDAsMTcsMTI0LDksMTMxLAorICAgIDMsMSwwLDExNiwwLDEwNiw1LDEwMCwxOSwxMzEsMSwxMjUsMTAsMTE2LDYsMTI0LAorICAgIDEsMTAwLDE5LDEyNCwxMCwxMzEsMywxLDAsMTI0LDUsMTAwLDcsMTA3LDIsMTQ0LAorICAgIDEsMTE0LDEyMCwxMTYsMCwxMDYsNSwxMDAsMjAsMTMxLDEsMTI1LDExLDExNiw2LDEyNCwKKyAgICAxLDEwMCwyMSwxMjQsMTEsMTMxLDMsMSwwLDExNiw2LDEyNCwxLDEwMCwyMiwxMTYsCisgICAgMTEsMTMxLDAsMTMxLDMsMSwwLDExNiwxMiwxMDYsMTMsMTE2LDIsMTA2LDE0LDEzMSwKKyAgICAwLDEzMSwxLDEsMCwxMjQsNSwxMDAsNywxMDcsMiwxNDQsMSwxMTQsMTg0LDExNiwKKyAgICAxNSwxMDYsMTYsMTAwLDIzLDEzMSwxLDEsMCwxMDAsMjQsMTE2LDEyLDEwNyw2LDE0NCwKKyAgICAxLDExNCwxODQsMTAwLDI1LDExNiwxNyw5NSwxOCwxMDAsMTgsODMsMCw0MSwyNywxMjIsCisgICAgMjA1LDgzLDEwMSwxMTYsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NSwKKyAgICA5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNSwzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LDEyMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLAorICAgIDEwMCwxMCwzMiwzMiwzMiwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsOTksCisgICAgMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDEwOSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwzMiwKKyAgICA5OSwxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwKKyAgICAxMjAsMTE2LDExNCw5Nyw5OSwxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsOTksMTExLDExNCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCw1MiwKKyAgICAwLDAsMCwxMTQsNjMsMCwwLDAsMjE4LDgsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsMTE1LDExNCwxNDAsMCwwLDAsOTAsNSwxMTIsMTExLDExNSwxMDUsMTIwLDI1MCwxLAorICAgIDQ3LDIxOCwyLDExMCwxMTYsMjUwLDEsOTIsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsMTE1LDI2LDAsCisgICAgMCwwLDEyNCwwLDkzLDE4LDEyNSwxLDExNiwwLDEyNCwxLDEzMSwxLDEwMCwwLAorICAgIDEwNywyLDg2LDAsMSwwLDExMywyLDEwMCwxLDgzLDAsNDEsMiwxMTQsMzEsCisgICAgMCwwLDAsNzgsNDEsMSwxMTQsMzMsMCwwLDAsNDEsMiwxMTQsMjQsMCwKKyAgICAwLDAsMTE0LDgxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTEzLDUsMCwwLDExNSwKKyAgICAyLDAsMCwwLDQsMCwxMjIsMjUsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw0Niw2MCwKKyAgICAxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LAorICAgIDYyLDExNCw2MiwwLDAsMCwxMjIsMzAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsCisgICAgMzIsMTExLDExNCwzMiwxMTAsMTE2LDExNCwzLDAsMCwwLDExNCwyNywwLDAsMCwKKyAgICAxMTQsMjMsMCwwLDAsMTE0LDMyLDAsMCwwLDkwLDcsOTUsMTE2LDEwNCwxMTQsCisgICAgMTAxLDk3LDEwMCw3OCw5MCw4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDYsCisgICAgMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE0LDE2NywwLDAsMCwxMTQsNywwLDAsMCwKKyAgICAxMjIsNCw0NiwxMTIsMTIxLDExOSwxMjIsNiw5NSwxMDAsNDYsMTEyLDEyMSwxMDAsODQsNDEsCisgICAgNCwxMjIsMyw5NSwxMDUsMTExLDEyMiw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAorICAgIDExNSwxMjIsOCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTIyLDcsMTA5LDk3LDExNCwKKyAgICAxMTUsMTA0LDk3LDEwOCw0MSwxOSwxMTQsMTE4LDAsMCwwLDExNCw4LDAsMCwwLAorICAgIDExNCwxNDMsMCwwLDAsMTE0LDIzNiwwLDAsMCwxMTQsMTA5LDAsMCwwLDkwLAorICAgIDE4LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTQsMTEzLDAsMCwwLDIxOCwzLDk3LDEwOCwxMDgsMjE4LDE0LDY1LAorICAgIDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxMDMsMCwKKyAgICAwLDAsMTE0LDI4LDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMjI2LDAsMCwKKyAgICAwLDExNCwxNDcsMCwwLDAsMTE0LDI0LDEsMCwwLDExNCw4OCwwLDAsMCwKKyAgICAxMTQsMTYxLDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDE3MCwwLDAsMCw0MSwKKyAgICAxMiwyMTgsMTcsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDkwLDExLDExNSwxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwKKyAgICAxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwKKyAgICAxMCwxMTEsMTE1LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDEwLDk4LDExNywxMDUsCisgICAgMTA4LDExNiwxMDUsMTEwLDk1LDExMSwxMTUsMTE0LDIzLDAsMCwwLDExNCwyNywwLDAsCisgICAgMCw5MCw5LDExMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE2LDEwNCwKKyAgICAxMTQsMTAxLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwxMTksMTAxLDk3LAorICAgIDEwNywxMTQsMTAxLDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTksMTA1LDExMCwKKyAgICAxMTQsMTAxLDEwMyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsCisgICAgMTEyLDg4LDUsMCwwLDExNSw4MiwwLDAsMCwwLDgsNCwxLDYsMSwKKyAgICA2LDMsMTAsMSwxMCwxLDEwLDEsMTIsMiwxMCwxLDE2LDMsMjIsMSwKKyAgICAxNCwyLDIyLDEsOCwxLDEwLDEsMTAsMSw0LDIsMiwxLDEwLDEsCisgICAgNiwxLDE0LDEsMTIsMiw4LDEsMTIsMSwxMiwxLDE4LDMsMiwxLAorICAgIDE0LDEsMTYsMiwxMCwxLDEyLDMsMTAsMSwxMiwzLDEwLDEsMTAsMSwKKyAgICAxMiwzLDE0LDEsMTQsMSwxMCwxLDEwLDEsMTAsMSwxMTQsMzIsMSwwLAorICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNzIsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLAorICAgIDEsMSwwLDExNiwxLDEzMSwwLDEyNSwxLDExNiwyLDEwNiwzLDEwNiw0LDExNiwKKyAgICA1LDEwNiw2LDEyNCwxLDE0MiwwLDEwMywxLDEzMSwxLDEsMCwxMTYsNywxMDYsCisgICAgOCwxMDAsMSwxMDcsMiwxMTQsNTYsMTE2LDIsMTA2LDksMTA2LDEwLDExNiwxMSwxMzEsCisgICAgMSwxLDAsMTE2LDIsMTA2LDksMTA2LDEwLDExNiwxMiwxMzEsMSwxLDAsMTAwLAorICAgIDIsODMsMCw0MSwzLDEyMiw0MSw3MywxMTAsMTE1LDExNiw5NywxMDgsMTA4LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsMTAxLDExMCwxMTYsMTE1LDQ2LAorICAgIDExNCwyNywxLDAsMCw3OCw0MSwxMywxMTQsMzIsMSwwLDAsMTE0LDE1OSwwLAorICAgIDAsMCwxMTQsOCwwLDAsMCwxMTQsMjUzLDAsMCwwLDExNCwxNDcsMCwwLAorICAgIDAsMTE0LDUsMSwwLDAsMTE0LDE4LDEsMCwwLDExNCwzLDAsMCwwLAorICAgIDExNCwxMDksMCwwLDAsMjE4LDksMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE0LDE2MSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwyNDgsMCwwLDAsNDEsCisgICAgMiwxMTQsMzEsMSwwLDAsOTAsMTcsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsMTE2LDk3LAorICAgIDEwOCwxMDgsMTU2LDUsMCwwLDExNSwxMiwwLDAsMCwwLDIsOCwxLDYsCisgICAgMSwyMCwxLDEwLDEsMTIsMSwxMTQsMzQsMSwwLDAsNDEsMSwxMjIsMywKKyAgICAxMTksMTA1LDExMCw0MSwyLDExNCwxLDAsMCwwLDExNCwyLDAsMCwwLDQxLAorICAgIDEsMTE0LDQ5LDAsMCwwLDQxLDEsNzgsNDEsMyw3OCw3OCw3OCw0MSwzLAorICAgIDc4LDc4LDc4LDQxLDIsMTE0LDYyLDAsMCwwLDExNCw2MiwwLDAsMCw0MSwKKyAgICAxLDc4LDQxLDEsNzgsNDEsNTgsMTE0LDExMSwwLDAsMCwxMTQsMTIsMCwwLAorICAgIDAsOTAsMzcsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsCisgICAgODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsODMsOTUsNjYsCisgICAgODksODQsNjksODMsOTUsNzUsNjksODksMTE0LDExLDAsMCwwLDExNCwxMywwLAorICAgIDAsMCwxMTQsMTksMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwzMCwwLDAsCisgICAgMCwxMTQsNDAsMCwwLDAsMTE0LDQxLDAsMCwwLDExNCw0NSwwLDAsMCwKKyAgICAxMTQsNDYsMCwwLDAsMTE0LDQ4LDAsMCwwLDExNCw1OCwwLDAsMCwyMTgsCisgICAgNCwxMTYsMTIxLDExMiwxMDEsMjE4LDgsOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LAorICAgIDE0MiwwLDAsMCwxMTQsMTcsMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTYsCisgICAgMCwwLDAsMTE0LDIwLDAsMCwwLDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LAorICAgIDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLDExNCw3NywwLDAsMCwKKyAgICAxMTQsNzYsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw3OCwwLDAsMCw5MCwKKyAgICAyMyw2OCw2OSw2Niw4NSw3MSw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSwKKyAgICA4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3MywKKyAgICA5MCw2OSw2OCw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCwKKyAgICA3MCw3Myw4OCw2OSw4MywxMTQsODMsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwKKyAgICA5NSwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwMSwwLDAsMCwxMTQsMTIwLAorICAgIDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTQ1LDAsCisgICAgMCwwLDExNCwxNDgsMCwwLDAsMTE0LDE1MywwLDAsMCwyMTgsNiwxMTEsOTgsCisgICAgMTA2LDEwMSw5OSwxMTYsMTE0LDE2MCwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNjYsCisgICAgMCwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTkxLDAsMCwwLDExNCwyMDcsMCwKKyAgICAwLDAsMTE0LDIxNSwwLDAsMCwxMTQsMjIwLDAsMCwwLDExNCwyMjYsMCwwLAorICAgIDAsMTE0LDIyMSwwLDAsMCwxMTQsMjI3LDAsMCwwLDExNCwyNDYsMCwwLDAsCisgICAgMTE0LDI0OCwwLDAsMCwxMTQsNSwxLDAsMCwxMTQsMjMsMSwwLDAsMTE0LAorICAgIDE1OSwwLDAsMCwxMTQsMzIsMSwwLDAsMTE0LDM0LDEsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCisgICAgMCwwLDIxOCw4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsCisgICAgMTE1LDEwOCwwLDAsMCw0LDE2LDQsMSw0LDEsMiwxLDYsMyw4LAorICAgIDE3LDgsNSw4LDUsOCw2LDgsMTIsOCwxMCw4LDksOCw1LDgsCisgICAgNywxMCwyMiwxMCwxMjEsMTYsMSwxMiwyLDQsMSw0LDIsNiwyLDYsCisgICAgMiw4LDIsMTYsNDUsOCwzNCw4LDE5LDgsMTIsOCwxMiw4LDI4LDgsCisgICAgMTcsMTAsNTUsMTAsMTIsMTAsMTAsOCwxNCw2LDMsNCwxLDE0LDY3LDE0LAorICAgIDY0LDE0LDI5LDE2LDExMCwxNCw0MSwxOCw0NSwxOCwxNiw0LDMsMTgsNTMsMTQsCisgICAgNjAsMTQsNDIsMTQsMTI3LDAsNSwxNCwxMjcsMCwyMiwxMCwyMyw4LDExLDgsCisgICAgNjgsCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5IGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CmluZGV4IGQ5YTA4NTUuLjAyM2M5ZTYgMTAwNzU1Ci0tLSBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQorKysgYi9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKQEAgLTMsMjQgKzMsMzQgQEAKIChmb3IgY29tcGlsZXJzIHN1cHBvcnRpbmcgY29tcHV0ZWQgZ290b3Mgb3IgImxhYmVscy1hcy12YWx1ZXMiLCBzdWNoIGFzIGdjYykuCiAiIiIKIAotIyBUaGlzIGNvZGUgc2hvdWxkIHN0YXkgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAyLjMsIGF0IGxlYXN0IHdoaWxlCi0jIHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBoYXZlIFB5dGhvbiAyLjMgYXMgdGhlaXIgc3lzdGVtIFB5dGhvbi4KLQotaW1wb3J0IGltcAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKIAotZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgotICAgICIiIkZpbmRzIGFuZCByZXR1cm5zIGEgbW9kdWxlIGluIHRoZSBsb2NhbCBkaXN0L2NoZWNrb3V0LgotICAgICIiIgotICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwgIkxpYiIpCi0gICAgcmV0dXJuIGltcC5sb2FkX21vZHVsZShtb2RuYW1lLCAqaW1wLmZpbmRfbW9kdWxlKG1vZG5hbWUsIFttb2RwYXRoXSkpCit0cnk6CisgICAgZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBTb3VyY2VGaWxlTG9hZGVyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IGltcAorCisgICAgZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgorICAgICAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KKyAgICAgICAgIiIiCisgICAgICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiKQorICAgICAgICByZXR1cm4gaW1wLmxvYWRfbW9kdWxlKG1vZG5hbWUsICppbXAuZmluZF9tb2R1bGUobW9kbmFtZSwgW21vZHBhdGhdKSkKK2Vsc2U6CisgICAgZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgorICAgICAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KKyAgICAgICAgIiIiCisgICAgICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiLCBtb2RuYW1lICsgIi5weSIpCisgICAgICAgIHJldHVybiBTb3VyY2VGaWxlTG9hZGVyKG1vZG5hbWUsIG1vZHBhdGgpLmxvYWRfbW9kdWxlKCkKKwogCiBkZWYgd3JpdGVfY29udGVudHMoZik6CiAgICAgIiIiV3JpdGUgQyBjb2RlIGNvbnRlbnRzIHRvIHRoZSB0YXJnZXQgZmlsZSBvYmplY3QuCiAgICAgIiIiCi0gICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoIm9wY29kZSIpCisgICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoJ29wY29kZScpCiAgICAgdGFyZ2V0cyA9IFsnX3Vua25vd25fb3Bjb2RlJ10gKiAyNTYKICAgICBmb3Igb3BuYW1lLCBvcCBpbiBvcGNvZGUub3BtYXAuaXRlbXMoKToKICAgICAgICAgdGFyZ2V0c1tvcF0gPSAiVEFSR0VUXyVzIiAlIG9wbmFtZQpAQCAtMjksMTUgKzM5LDE3IEBACiAgICAgZi53cml0ZSgiXG59O1xuIikKIAogCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGltcG9ydCBzeXMKLSAgICBhc3NlcnQgbGVuKHN5cy5hcmd2KSA8IDMsICJUb28gbWFueSBhcmd1bWVudHMiCitkZWYgbWFpbigpOgorICAgIGlmIGxlbihzeXMuYXJndikgPj0gMzoKKyAgICAgICAgc3lzLmV4aXQoIlRvbyBtYW55IGFyZ3VtZW50cyIpCiAgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAyOgogICAgICAgICB0YXJnZXQgPSBzeXMuYXJndlsxXQogICAgIGVsc2U6CiAgICAgICAgIHRhcmdldCA9ICJQeXRob24vb3Bjb2RlX3RhcmdldHMuaCIKLSAgICBmID0gb3Blbih0YXJnZXQsICJ3IikKLSAgICB0cnk6CisgICAgd2l0aCBvcGVuKHRhcmdldCwgInciKSBhcyBmOgogICAgICAgICB3cml0ZV9jb250ZW50cyhmKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGYuY2xvc2UoKQorICAgIHByaW50KCJKdW1wIHRhYmxlIHdyaXR0ZW4gaW50byAlcyIgJSB0YXJnZXQpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYXJzaGFsLmMgYi9QeXRob24vbWFyc2hhbC5jCmluZGV4IDViOGRlOTkuLjg3YTRiMjQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tYXJzaGFsLmMKKysrIGIvUHl0aG9uL21hcnNoYWwuYwpAQCAtMTMwLDcgKzEzMCw3IEBACiAgICAgbSA9IHAtPmVuZCAtIHAtPnB0cjsKICAgICBpZiAocC0+ZnAgIT0gTlVMTCkgewogICAgICAgICBpZiAobiA8PSBtKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocC0+cHRyLCBzLCBuKTsKKyAgICAgICAgICAgIG1lbWNweShwLT5wdHIsIHMsIG4pOwogICAgICAgICAgICAgcC0+cHRyICs9IG47CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xNDAsNyArMTQwLDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChuIDw9IG0gfHwgd19yZXNlcnZlKHAsIG4gLSBtKSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAtPnB0ciwgcywgbik7CisgICAgICAgICAgICBtZW1jcHkocC0+cHRyLCBzLCBuKTsKICAgICAgICAgICAgIHAtPnB0ciArPSBuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjYzLDEwICsyNjMsMTAgQEAKICAgICBpZiAoUHlfUkVGQ05UKHYpID09IDEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShwLT5oYXNodGFibGUsIHYpOworICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkocC0+aGFzaHRhYmxlLCB2KTsKICAgICBpZiAoZW50cnkgIT0gTlVMTCkgewogICAgICAgICAvKiB3cml0ZSB0aGUgcmVmZXJlbmNlIGluZGV4IHRvIHRoZSBzdHJlYW0gKi8KLSAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEocC0+aGFzaHRhYmxlLCAmdywgc2l6ZW9mKHcpLCBlbnRyeSk7CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHAtPmhhc2h0YWJsZSwgZW50cnksIHcpOwogICAgICAgICAvKiB3ZSBkb24ndCBzdG9yZSAibG9uZyIgaW5kaWNlcyBpbiB0aGUgZGljdCAqLwogICAgICAgICBhc3NlcnQoMCA8PSB3ICYmIHcgPD0gMHg3ZmZmZmZmZik7CiAgICAgICAgIHdfYnl0ZShUWVBFX1JFRiwgcCk7CkBAIC01NzEsNyArNTcxLDggQEAKIHdfaW5pdF9yZWZzKFdGSUxFICp3ZiwgaW50IHZlcnNpb24pCiB7CiAgICAgaWYgKHZlcnNpb24gPj0gMykgewotICAgICAgICB3Zi0+aGFzaHRhYmxlID0gX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZW9mKGludCksIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCisgICAgICAgIHdmLT5oYXNodGFibGUgPSBfUHlfaGFzaHRhYmxlX25ldyhzaXplb2YoUHlPYmplY3QgKiksIHNpemVvZihpbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QpOwogICAgICAgICBpZiAod2YtPmhhc2h0YWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtNTgyLDkgKzU4MywxMyBAQAogfQogCiBzdGF0aWMgaW50Ci13X2RlY3JlZl9lbnRyeShfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICpQeV9VTlVTRUQoZGF0YSkpCit3X2RlY3JlZl9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgdm9pZCAqUHlfVU5VU0VEKGRhdGEpKQogewotICAgIFB5X1hERUNSRUYoZW50cnktPmtleSk7CisgICAgUHlPYmplY3QgKmVudHJ5X2tleTsKKworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCBlbnRyeV9rZXkpOworICAgIFB5X1hERUNSRUYoZW50cnlfa2V5KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjQzLDcgKzY0OCw3IEBACiAgICAgUHlPYmplY3QgKnJlZnM7ICAvKiBhIGxpc3QgKi8KIH0gUkZJTEU7CiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIHJfc3RyaW5nKFB5X3NzaXplX3QgbiwgUkZJTEUgKnApCiB7CiAgICAgUHlfc3NpemVfdCByZWFkID0gLTE7CkBAIC03MjksNyArNzM0LDcgQEAKICAgICAgICAgYyA9IGdldGMocC0+ZnApOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgY2hhciAqcHRyID0gcl9zdHJpbmcoMSwgcCk7CisgICAgICAgIGNvbnN0IGNoYXIgKnB0ciA9IHJfc3RyaW5nKDEsIHApOwogICAgICAgICBpZiAocHRyICE9IE5VTEwpCiAgICAgICAgICAgICBjID0gKih1bnNpZ25lZCBjaGFyICopIHB0cjsKICAgICB9CkBAIC03NDAsOSArNzQ1LDkgQEAKIHJfc2hvcnQoUkZJTEUgKnApCiB7CiAgICAgc2hvcnQgeCA9IC0xOwotICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXI7CiAKLSAgICBidWZmZXIgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZygyLCBwKTsKKyAgICBidWZmZXIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZygyLCBwKTsKICAgICBpZiAoYnVmZmVyICE9IE5VTEwpIHsKICAgICAgICAgeCA9IGJ1ZmZlclswXTsKICAgICAgICAgeCB8PSBidWZmZXJbMV0gPDwgODsKQEAgLTc1Niw5ICs3NjEsOSBAQAogcl9sb25nKFJGSUxFICpwKQogewogICAgIGxvbmcgeCA9IC0xOwotICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXI7CiAKLSAgICBidWZmZXIgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg0LCBwKTsKKyAgICBidWZmZXIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg0LCBwKTsKICAgICBpZiAoYnVmZmVyICE9IE5VTEwpIHsKICAgICAgICAgeCA9IGJ1ZmZlclswXTsKICAgICAgICAgeCB8PSAobG9uZylidWZmZXJbMV0gPDwgODsKQEAgLTk3OCw3ICs5ODMsOCBAQAogCiAgICAgY2FzZSBUWVBFX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdLCAqcHRyOworICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0cjsKICAgICAgICAgICAgIGRvdWJsZSBkeDsKICAgICAgICAgICAgIG4gPSByX2J5dGUocCk7CiAgICAgICAgICAgICBpZiAobiA9PSBFT0YpIHsKQEAgLTEwMDEsOSArMTAwNyw5IEBACiAKICAgICBjYXNlIFRZUEVfQklOQVJZX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpidWY7CisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWY7CiAgICAgICAgICAgICBkb3VibGUgeDsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB4ID0gX1B5RmxvYXRfVW5wYWNrOChidWYsIDEpOwpAQCAtMTAxNiw3ICsxMDIyLDggQEAKIAogICAgIGNhc2UgVFlQRV9DT01QTEVYOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdLCAqcHRyOworICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0cjsKICAgICAgICAgICAgIFB5X2NvbXBsZXggYzsKICAgICAgICAgICAgIG4gPSByX2J5dGUocCk7CiAgICAgICAgICAgICBpZiAobiA9PSBFT0YpIHsKQEAgLTEwNTMsMTUgKzEwNjAsMTUgQEAKIAogICAgIGNhc2UgVFlQRV9CSU5BUllfQ09NUExFWDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmOworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmOwogICAgICAgICAgICAgUHlfY29tcGxleCBjOwotICAgICAgICAgICAgYnVmID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CisgICAgICAgICAgICBidWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKICAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGMucmVhbCA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKICAgICAgICAgICAgIGlmIChjLnJlYWwgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYnVmID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CisgICAgICAgICAgICBidWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKICAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGMuaW1hZyA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKQEAgLTEwNzQsNyArMTA4MSw3IEBACiAKICAgICBjYXNlIFRZUEVfU1RSSU5HOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICpwdHI7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBuID0gcl9sb25nKHApOwogICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTE5LDcgKzExMjYsNyBAQAogICAgICAgICB9CiAgICAgX3JlYWRfYXNjaWk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgKnB0cjsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0cjsKICAgICAgICAgICAgIHB0ciA9IHJfc3RyaW5nKG4sIHApOwogICAgICAgICAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzNyw3ICsxMTQ0LDcgQEAKICAgICAgICAgaXNfaW50ZXJuZWQgPSAxOwogICAgIGNhc2UgVFlQRV9VTklDT0RFOgogICAgICAgICB7Ci0gICAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgICAgY29uc3QgY2hhciAqYnVmZmVyOwogCiAgICAgICAgIG4gPSByX2xvbmcocCk7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTI2NCw0MSArMTI3MSw1MiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJiYWQgbWFyc2hhbCBkYXRhIChzZXQgc2l6ZSBvdXQgb2YgcmFuZ2UpIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICB2ID0gKHR5cGUgPT0gVFlQRV9TRVQpID8gUHlTZXRfTmV3KE5VTEwpIDogUHlGcm96ZW5TZXRfTmV3KE5VTEwpOwotICAgICAgICBpZiAodHlwZSA9PSBUWVBFX1NFVCkgewotICAgICAgICAgICAgUl9SRUYodik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBtdXN0IHVzZSBkZWxheWVkIHJlZ2lzdHJhdGlvbiBvZiBmcm96ZW5zZXRzIGJlY2F1c2UgdGhleSBtdXN0Ci0gICAgICAgICAgICAgKiBiZSBpbml0IHdpdGggYSByZWZjb3VudCBvZiAxCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlkeCA9IHJfcmVmX3Jlc2VydmUoZmxhZywgcCk7Ci0gICAgICAgICAgICBpZiAoaWR4IDwgMCkKLSAgICAgICAgICAgICAgICBQeV9DTEVBUih2KTsgLyogc2lnbmFsIGVycm9yICovCi0gICAgICAgIH0KLSAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgIHYyID0gcl9vYmplY3QocCk7Ci0gICAgICAgICAgICBpZiAoIHYyID09IE5VTEwgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgb2JqZWN0IGluIG1hcnNoYWwgZGF0YSBmb3Igc2V0Iik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIHYgPSBOVUxMOworICAgICAgICBpZiAobiA9PSAwICYmIHR5cGUgPT0gVFlQRV9GUk9aRU5TRVQpIHsKKyAgICAgICAgICAgIC8qIGNhbGwgZnJvemVuc2V0KCkgdG8gZ2V0IHRoZSBlbXB0eSBmcm96ZW5zZXQgc2luZ2xldG9uICovCisgICAgICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCopJlB5RnJvemVuU2V0X1R5cGUsIE5VTEwpOworICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeVNldF9BZGQodiwgdjIpID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2Mik7Ci0gICAgICAgICAgICAgICAgdiA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodjIpOworICAgICAgICAgICAgUl9SRUYodik7CisgICAgICAgICAgICByZXR2YWwgPSB2OwogICAgICAgICB9Ci0gICAgICAgIGlmICh0eXBlICE9IFRZUEVfU0VUKQotICAgICAgICAgICAgdiA9IHJfcmVmX2luc2VydCh2LCBpZHgsIGZsYWcsIHApOwotICAgICAgICByZXR2YWwgPSB2OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHYgPSAodHlwZSA9PSBUWVBFX1NFVCkgPyBQeVNldF9OZXcoTlVMTCkgOiBQeUZyb3plblNldF9OZXcoTlVMTCk7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBUWVBFX1NFVCkgeworICAgICAgICAgICAgICAgIFJfUkVGKHYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBtdXN0IHVzZSBkZWxheWVkIHJlZ2lzdHJhdGlvbiBvZiBmcm96ZW5zZXRzIGJlY2F1c2UgdGhleSBtdXN0CisgICAgICAgICAgICAgICAgICogYmUgaW5pdCB3aXRoIGEgcmVmY291bnQgb2YgMQorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlkeCA9IHJfcmVmX3Jlc2VydmUoZmxhZywgcCk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCA8IDApCisgICAgICAgICAgICAgICAgICAgIFB5X0NMRUFSKHYpOyAvKiBzaWduYWwgZXJyb3IgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICB2MiA9IHJfb2JqZWN0KHApOworICAgICAgICAgICAgICAgIGlmICggdjIgPT0gTlVMTCApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTlVMTCBvYmplY3QgaW4gbWFyc2hhbCBkYXRhIGZvciBzZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICAgICAgICAgICAgICB2ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQeVNldF9BZGQodiwgdjIpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodjIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHR5cGUgIT0gVFlQRV9TRVQpCisgICAgICAgICAgICAgICAgdiA9IHJfcmVmX2luc2VydCh2LCBpZHgsIGZsYWcsIHApOworICAgICAgICAgICAgcmV0dmFsID0gdjsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFOgpkaWZmIC0tZ2l0IGEvUHl0aG9uL21vZHN1cHBvcnQuYyBiL1B5dGhvbi9tb2RzdXBwb3J0LmMKaW5kZXggMGQwOTM3MS4uZjNhYTkxZiAxMDA2NDQKLS0tIGEvUHl0aG9uL21vZHN1cHBvcnQuYworKysgYi9QeXRob24vbW9kc3VwcG9ydC5jCkBAIC0yNjAsMTMgKzI2MCwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG4pOwogICAgICAgICB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICBjYXNlICdMJzoKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdmFfYXJnKCpwX3ZhLCBQWV9MT05HX0xPTkcpKTsKKyAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpdmFfYXJnKCpwX3ZhLCBsb25nIGxvbmcpKTsKIAogICAgICAgICBjYXNlICdLJzoKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKChsb25nIGxvbmcpdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBsb25nIGxvbmcpKTsKKwogICAgICAgICBjYXNlICd1JzoKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKnY7CkBAIC0zMTgsNyArMzE3LDcgQEAKICAgICAgICAgY2FzZSAnVSc6ICAgLyogWFhYIGRlcHJlY2F0ZWQgYWxpYXMgKi8KICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgICAgICBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKik7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG47CiAgICAgICAgICAgICBpZiAoKipwX2Zvcm1hdCA9PSAnIycpIHsKICAgICAgICAgICAgICAgICArKypwX2Zvcm1hdDsKQEAgLTM1MSw3ICszNTAsNyBAQAogICAgICAgICBjYXNlICd5JzoKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgICAgICBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKik7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG47CiAgICAgICAgICAgICBpZiAoKipwX2Zvcm1hdCA9PSAnIycpIHsKICAgICAgICAgICAgICAgICArKypwX2Zvcm1hdDsKQEAgLTQ2OSw3ICs0NjgsNyBAQAogICAgIGludCBuID0gY291bnRmb3JtYXQoZiwgJ1wwJyk7CiAgICAgdmFfbGlzdCBsdmE7CiAKLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOwogCiAgICAgaWYgKG4gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9teXN0cnRvdWwuYyBiL1B5dGhvbi9teXN0cnRvdWwuYwppbmRleCA5ODQyOWQ0Li5hODU3OTBlIDEwMDY0NAotLS0gYS9QeXRob24vbXlzdHJ0b3VsLmMKKysrIGIvUHl0aG9uL215c3RydG91bC5jCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBzbWFsbG1heFtiYXNlXSBpcyB0aGUgbGFyZ2VzdCB1bnNpZ25lZCBsb25nIGkgc3VjaCB0aGF0CiAgKiBpICogYmFzZSBkb2Vzbid0IG92ZXJmbG93IHVuc2lnbmVkIGxvbmcuCiAgKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHNtYWxsbWF4W10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBzbWFsbG1heFtdID0gewogICAgIDAsIC8qIGJhc2VzIDAgYW5kIDEgYXJlIGludmFsaWQgKi8KICAgICAwLAogICAgIFVMT05HX01BWCAvIDIsCkBAIC02MiwxNCArNjIsMTQgQEAKICAqIE5vdGUgdGhhdCB0aGlzIGlzIHBlc3NpbWlzdGljIGlmIHNpemVvZihsb25nKSA+IDQuCiAgKi8KICNpZiBTSVpFT0ZfTE9ORyA9PSA0Ci1zdGF0aWMgaW50IGRpZ2l0bGltaXRbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgZGlnaXRsaW1pdFtdID0gewogICAgIDAsICAwLCAzMiwgMjAsIDE2LCAxMywgMTIsIDExLCAxMCwgMTAsICAvKiAgMCAtICA5ICovCiAgICAgOSwgIDksICA4LCAgOCwgIDgsICA4LCAgOCwgIDcsICA3LCAgNywgIC8qIDEwIC0gMTkgKi8KICAgICA3LCAgNywgIDcsICA3LCAgNiwgIDYsICA2LCAgNiwgIDYsICA2LCAgLyogMjAgLSAyOSAqLwogICAgIDYsICA2LCAgNiwgIDYsICA2LCAgNiwgIDZ9OyAgICAgICAgICAgICAvKiAzMCAtIDM2ICovCiAjZWxpZiBTSVpFT0ZfTE9ORyA9PSA4CiAvKiBbaW50KG1hdGguZmxvb3IobWF0aC5sb2coMioqNjQsIGkpKSkgZm9yIGkgaW4gcmFuZ2UoMiwgMzcpXSAqLwotc3RhdGljIGludCBkaWdpdGxpbWl0W10gPSB7CitzdGF0aWMgY29uc3QgaW50IGRpZ2l0bGltaXRbXSA9IHsKICAgICAgICAgIDAsICAgMCwgNjQsIDQwLCAzMiwgMjcsIDI0LCAyMiwgMjEsIDIwLCAgLyogIDAgLSAgOSAqLwogICAgIDE5LCAgMTgsIDE3LCAxNywgMTYsIDE2LCAxNiwgMTUsIDE1LCAxNSwgIC8qIDEwIC0gMTkgKi8KICAgICAxNCwgIDE0LCAxNCwgMTQsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsICAvKiAyMCAtIDI5ICovCmRpZmYgLS1naXQgYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaCBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCmluZGV4IDE5MjU5ZTEuLjZkOTk2ZjAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCisrKyBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCkBAIC04NCw3ICs4NCw3IEBACiAgICAgJiZUQVJHRVRfV0lUSF9DTEVBTlVQX0ZJTklTSCwKICAgICAmJlRBUkdFVF9SRVRVUk5fVkFMVUUsCiAgICAgJiZUQVJHRVRfSU1QT1JUX1NUQVIsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfU0VUVVBfQU5OT1RBVElPTlMsCiAgICAgJiZUQVJHRVRfWUlFTERfVkFMVUUsCiAgICAgJiZUQVJHRVRfUE9QX0JMT0NLLAogICAgICYmVEFSR0VUX0VORF9GSU5BTExZLApAQCAtMTI2LDIyICsxMjYsMjIgQEAKICAgICAmJlRBUkdFVF9MT0FEX0ZBU1QsCiAgICAgJiZUQVJHRVRfU1RPUkVfRkFTVCwKICAgICAmJlRBUkdFVF9ERUxFVEVfRkFTVCwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9TVE9SRV9BTk5PVEFUSU9OLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX1JBSVNFX1ZBUkFSR1MsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTiwKICAgICAmJlRBUkdFVF9NQUtFX0ZVTkNUSU9OLAogICAgICYmVEFSR0VUX0JVSUxEX1NMSUNFLAotICAgICYmVEFSR0VUX01BS0VfQ0xPU1VSRSwKKyAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9MT0FEX0NMT1NVUkUsCiAgICAgJiZUQVJHRVRfTE9BRF9ERVJFRiwKICAgICAmJlRBUkdFVF9TVE9SRV9ERVJFRiwKICAgICAmJlRBUkdFVF9ERUxFVEVfREVSRUYsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9WQVIsCisgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9LVywKLSAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX1ZBUl9LVywKKyAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX0VYLAogICAgICYmVEFSR0VUX1NFVFVQX1dJVEgsCiAgICAgJiZUQVJHRVRfRVhURU5ERURfQVJHLAogICAgICYmVEFSR0VUX0xJU1RfQVBQRU5ELApAQCAtMTU0LDkgKzE1NCw5IEBACiAgICAgJiZUQVJHRVRfQlVJTERfVFVQTEVfVU5QQUNLLAogICAgICYmVEFSR0VUX0JVSUxEX1NFVF9VTlBBQ0ssCiAgICAgJiZUQVJHRVRfU0VUVVBfQVNZTkNfV0lUSCwKLSAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9GT1JNQVRfVkFMVUUsCisgICAgJiZUQVJHRVRfQlVJTERfQ09OU1RfS0VZX01BUCwKKyAgICAmJlRBUkdFVF9CVUlMRF9TVFJJTkcsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCmRpZmYgLS1naXQgYS9QeXRob24vcGVlcGhvbGUuYyBiL1B5dGhvbi9wZWVwaG9sZS5jCmluZGV4IDRlNjU3ZmEuLjg0ZWIyZGIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9wZWVwaG9sZS5jCisrKyBiL1B5dGhvbi9wZWVwaG9sZS5jCkBAIC04LDggKzgsOCBAQAogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJzeW10YWJsZS5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgorI2luY2x1ZGUgIndvcmRjb2RlX2hlbHBlcnMuaCIKIAotI2RlZmluZSBHRVRBUkcoYXJyLCBpKSAoKGludCkoKGFycltpKzJdPDw4KSArIGFycltpKzFdKSkKICNkZWZpbmUgVU5DT05ESVRJT05BTF9KVU1QKG9wKSAgKG9wPT1KVU1QX0FCU09MVVRFIHx8IG9wPT1KVU1QX0ZPUldBUkQpCiAjZGVmaW5lIENPTkRJVElPTkFMX0pVTVAob3ApIChvcD09UE9QX0pVTVBfSUZfRkFMU0UgfHwgb3A9PVBPUF9KVU1QX0lGX1RSVUUgXAogICAgIHx8IG9wPT1KVU1QX0lGX0ZBTFNFX09SX1BPUCB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKQEAgLTE3LDIyICsxNywxNiBAQAogICAgIHx8IG9wPT1QT1BfSlVNUF9JRl9GQUxTRSB8fCBvcD09UE9QX0pVTVBfSUZfVFJVRSBcCiAgICAgfHwgb3A9PUpVTVBfSUZfRkFMU0VfT1JfUE9QIHx8IG9wPT1KVU1QX0lGX1RSVUVfT1JfUE9QKQogI2RlZmluZSBKVU1QU19PTl9UUlVFKG9wKSAob3A9PVBPUF9KVU1QX0lGX1RSVUUgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCi0jZGVmaW5lIEdFVEpVTVBUR1QoYXJyLCBpKSAoR0VUQVJHKGFycixpKSArIChBQlNPTFVURV9KVU1QKGFycltpXSkgPyAwIDogaSszKSkKLSNkZWZpbmUgU0VUQVJHKGFyciwgaSwgdmFsKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBhc3NlcnQoMCA8PSB2YWwgJiYgdmFsIDw9IDB4ZmZmZik7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBhcnJbaSsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHVuc2lnbmVkIGludCl2YWwpPj44KTsgICAgIFwKLSAgICBhcnJbaSsxXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHVuc2lnbmVkIGludCl2YWwpICYgMjU1KTsgIFwKLX0gd2hpbGUoMCkKLSNkZWZpbmUgQ09ERVNJWkUob3ApICAoSEFTX0FSRyhvcCkgPyAzIDogMSkKLSNkZWZpbmUgSVNCQVNJQ0JMT0NLKGJsb2Nrcywgc3RhcnQsIGJ5dGVzKSBcCi0gICAgKGJsb2Nrc1tzdGFydF09PWJsb2Nrc1tzdGFydCtieXRlcy0xXSkKKyNkZWZpbmUgR0VUSlVNUFRHVChhcnIsIGkpIChnZXRfYXJnKGFyciwgaSkgLyBzaXplb2YoX1B5X0NPREVVTklUKSArIFwKKyAgICAgICAgKEFCU09MVVRFX0pVTVAoX1B5X09QQ09ERShhcnJbaV0pKSA/IDAgOiBpKzEpKQorI2RlZmluZSBJU0JBU0lDQkxPQ0soYmxvY2tzLCBzdGFydCwgZW5kKSBcCisgICAgKGJsb2Nrc1tzdGFydF09PWJsb2Nrc1tlbmRdKQogCiAKICNkZWZpbmUgQ09OU1RfU1RBQ0tfQ1JFQVRFKCkgeyBcCiAgICAgY29uc3Rfc3RhY2tfc2l6ZSA9IDI1NjsgXAogICAgIGNvbnN0X3N0YWNrID0gUHlNZW1fTmV3KFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgbG9hZF9jb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAotICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgIGlmICghY29uc3Rfc3RhY2spIHsgXAogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCiAgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCiAgICAgfSBcCkBAIC00MSwyNyArMzUsMjMgQEAKICNkZWZpbmUgQ09OU1RfU1RBQ0tfREVMRVRFKCkgZG8geyBcCiAgICAgaWYgKGNvbnN0X3N0YWNrKSBcCiAgICAgICAgIFB5TWVtX0ZyZWUoY29uc3Rfc3RhY2spOyBcCi0gICAgaWYgKGxvYWRfY29uc3Rfc3RhY2spIFwKLSAgICAgICAgUHlNZW1fRnJlZShsb2FkX2NvbnN0X3N0YWNrKTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19MRU4oKSAoY29uc3Rfc3RhY2tfdG9wICsgMSkKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKCh1bnNpZ25lZCkoY29uc3Rfc3RhY2tfdG9wICsgMSkpCiAKICNkZWZpbmUgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKSBkbyB7IFwKICAgICBQeU9iamVjdCAqX3g7IFwKLSAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsgXAotICAgIGFzc2VydChQeUxpc3RfR0VUX1NJWkUoY29uc3RzKSA+IEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKLSAgICBfeCA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKKyAgICBhc3NlcnQoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBMT0FEX0NPTlNUKTsgXAorICAgIGFzc2VydChQeUxpc3RfR0VUX1NJWkUoY29uc3RzKSA+IChQeV9zc2l6ZV90KWdldF9hcmcoY29kZXN0ciwgaSkpOyBcCisgICAgX3ggPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBnZXRfYXJnKGNvZGVzdHIsIGkpKTsgXAogICAgIGlmICgrK2NvbnN0X3N0YWNrX3RvcCA+PSBjb25zdF9zdGFja19zaXplKSB7IFwKICAgICAgICAgY29uc3Rfc3RhY2tfc2l6ZSAqPSAyOyBcCiAgICAgICAgIFB5TWVtX1Jlc2l6ZShjb25zdF9zdGFjaywgUHlPYmplY3QgKiwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKLSAgICAgICAgUHlNZW1fUmVzaXplKGxvYWRfY29uc3Rfc3RhY2ssIFB5X3NzaXplX3QsIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgICAgICBpZiAoIWNvbnN0X3N0YWNrKSB7IFwKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7IFwKICAgICAgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCiAgICAgICAgIH0gXAogICAgIH0gXAotICAgIGxvYWRfY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IGk7IFwKICAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdID0gX3g7IFwKICAgICBpbl9jb25zdHMgPSAxOyBcCiAgICAgfSB3aGlsZSgwKQpAQCAtNzAsMjIgKzYwLDExNCBAQAogICAgIGNvbnN0X3N0YWNrX3RvcCA9IC0xOyBcCiAgICAgfSB3aGlsZSgwKQogCi0jZGVmaW5lIENPTlNUX1NUQUNLX1RPUCgpIFwKLSAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdCi0KICNkZWZpbmUgQ09OU1RfU1RBQ0tfTEFTVE4oaSkgXAotICAgICZjb25zdF9zdGFja1tjb25zdF9zdGFja190b3AgLSBpICsgMV0KKyAgICAmY29uc3Rfc3RhY2tbQ09OU1RfU1RBQ0tfTEVOKCkgLSBpXQogCiAjZGVmaW5lIENPTlNUX1NUQUNLX1BPUChpKSBkbyB7IFwKLSAgICBhc3NlcnQoY29uc3Rfc3RhY2tfdG9wICsgMSA+PSBpKTsgXAorICAgIGFzc2VydChDT05TVF9TVEFDS19MRU4oKSA+PSBpKTsgXAogICAgIGNvbnN0X3N0YWNrX3RvcCAtPSBpOyBcCiAgICAgfSB3aGlsZSgwKQogCi0jZGVmaW5lIENPTlNUX1NUQUNLX09QX0xBU1ROKGkpIFwKLSAgICAoKGNvbnN0X3N0YWNrX3RvcCA+PSBpIC0gMSkgPyBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcCAtIGkgKyAxXSA6IC0xKQorLyogU2NhbnMgYmFjayBOIGNvbnNlY3V0aXZlIExPQURfQ09OU1QgaW5zdHJ1Y3Rpb25zLCBza2lwcGluZyBOT1BzLAorICAgcmV0dXJucyBpbmRleCBvZiB0aGUgTnRoIGxhc3QncyBMT0FEX0NPTlNUJ3MgRVhURU5ERURfQVJHIHByZWZpeC4KKyAgIENhbGxlcnMgYXJlIHJlc3BvbnNpYmxlIHRvIGNoZWNrIENPTlNUX1NUQUNLX0xFTiBiZWZvcmVoYW5kLgorKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitsYXN0bl9jb25zdF9zdGFydChjb25zdCBfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBuKQoreworICAgIGFzc2VydChuID4gMCk7CisgICAgZm9yICg7OykgeworICAgICAgICBpLS07CisgICAgICAgIGFzc2VydChpID49IDApOworICAgICAgICBpZiAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBMT0FEX0NPTlNUKSB7CisgICAgICAgICAgICBpZiAoIS0tbikgeworICAgICAgICAgICAgICAgIHdoaWxlIChpID4gMCAmJiBfUHlfT1BDT0RFKGNvZGVzdHJbaS0xXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBOT1AgfHwKKyAgICAgICAgICAgICAgICAgICBfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRyk7CisgICAgICAgIH0KKyAgICB9Cit9CiAKKy8qIFNjYW5zIHRocm91Z2ggRVhURU5ERUQgQVJHcywgc2Vla2luZyB0aGUgaW5kZXggb2YgdGhlIGVmZmVjdGl2ZSBvcGNvZGUgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitmaW5kX29wKGNvbnN0IF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpKQoreworICAgIHdoaWxlIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICBpKys7CisgICAgfQorICAgIHJldHVybiBpOworfQogCi0vKiBSZXBsYWNlIExPQURfQ09OU1QgYzEuIExPQURfQ09OU1QgYzIgLi4uIExPQURfQ09OU1QgY24gQlVJTERfVFVQTEUgbgorLyogR2l2ZW4gdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlLAorICAgc2NhbiBiYWNrIHRvIGNvbnN0cnVjdCB0aGUgb3Bhcmcgd2l0aCBFWFRFTkRFRF9BUkcgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQKK2dldF9hcmcoY29uc3QgX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGkpCit7CisgICAgX1B5X0NPREVVTklUIHdvcmQ7CisgICAgdW5zaWduZWQgaW50IG9wYXJnID0gX1B5X09QQVJHKGNvZGVzdHJbaV0pOworICAgIGlmIChpID49IDEgJiYgX1B5X09QQ09ERSh3b3JkID0gY29kZXN0cltpLTFdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgb3BhcmcgfD0gX1B5X09QQVJHKHdvcmQpIDw8IDg7CisgICAgICAgIGlmIChpID49IDIgJiYgX1B5X09QQ09ERSh3b3JkID0gY29kZXN0cltpLTJdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgIG9wYXJnIHw9IF9QeV9PUEFSRyh3b3JkKSA8PCAxNjsKKyAgICAgICAgICAgIGlmIChpID49IDMgJiYgX1B5X09QQ09ERSh3b3JkID0gY29kZXN0cltpLTNdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgICAgICBvcGFyZyB8PSBfUHlfT1BBUkcod29yZCkgPDwgMjQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG9wYXJnOworfQorCisvKiBGaWxsIHRoZSByZWdpb24gd2l0aCBOT1BzLiAqLworc3RhdGljIHZvaWQKK2ZpbGxfbm9wcyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIG1lbXNldChjb2Rlc3RyICsgc3RhcnQsIE5PUCwgKGVuZCAtIHN0YXJ0KSAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKK30KKworLyogR2l2ZW4gdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlLAorICAgYXR0ZW1wdCB0byByZXBsYWNlIHRoZSBhcmd1bWVudCwgdGFraW5nIGludG8gYWNjb3VudCBFWFRFTkRFRF9BUkcuCisgICBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIG9yIHRoZSBuZXcgb3AgaW5kZXggb24gc3VjY2VzcyAqLworc3RhdGljIFB5X3NzaXplX3QKK3NldF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIHVuc2lnbmVkIGludCBvcGFyZykKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3VyYXJnID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKTsKKyAgICBpbnQgY3VyaWxlbiwgbmV3aWxlbjsKKyAgICBpZiAoY3VyYXJnID09IG9wYXJnKQorICAgICAgICByZXR1cm4gaTsKKyAgICBjdXJpbGVuID0gaW5zdHJzaXplKGN1cmFyZyk7CisgICAgbmV3aWxlbiA9IGluc3Ryc2l6ZShvcGFyZyk7CisgICAgaWYgKGN1cmlsZW4gPCBuZXdpbGVuKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIGkgKyAxIC0gY3VyaWxlbiwgX1B5X09QQ09ERShjb2Rlc3RyW2ldKSwgb3BhcmcsIG5ld2lsZW4pOworICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSAtIGN1cmlsZW4gKyBuZXdpbGVuLCBpICsgMSk7CisgICAgcmV0dXJuIGktY3VyaWxlbituZXdpbGVuOworfQorCisvKiBBdHRlbXB0IHRvIHdyaXRlIG9wL2FyZyBhdCBlbmQgb2Ygc3BlY2lmaWVkIHJlZ2lvbiBvZiBtZW1vcnkuCisgICBQcmVjZWRpbmcgbWVtb3J5IGluIHRoZSByZWdpb24gaXMgb3ZlcndyaXR0ZW4gd2l0aCBOT1BzLgorICAgUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBvcCBpbmRleCBvbiBzdWNjZXNzICovCitzdGF0aWMgUHlfc3NpemVfdAorY29weV9vcF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIHVuc2lnbmVkIGNoYXIgb3AsCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3BhcmcsIFB5X3NzaXplX3QgbWF4aSkKK3sKKyAgICBpbnQgaWxlbiA9IGluc3Ryc2l6ZShvcGFyZyk7CisgICAgaWYgKGkgKyBpbGVuID4gbWF4aSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHdyaXRlX29wX2FyZyhjb2Rlc3RyICsgbWF4aSAtIGlsZW4sIG9wLCBvcGFyZywgaWxlbik7CisgICAgZmlsbF9ub3BzKGNvZGVzdHIsIGksIG1heGkgLSBpbGVuKTsKKyAgICByZXR1cm4gbWF4aSAtIDE7Cit9CisKKy8qIFJlcGxhY2UgTE9BRF9DT05TVCBjMSwgTE9BRF9DT05TVCBjMiAuLi4gTE9BRF9DT05TVCBjbiwgQlVJTERfVFVQTEUgbgogICAgd2l0aCAgICBMT0FEX0NPTlNUIChjMSwgYzIsIC4uLiBjbikuCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCiAgICBuZXcgY29uc3RhbnQgKGMxLCBjMiwgLi4uIGNuKSBjYW4gYmUgYXBwZW5kZWQuCkBAIC05NCw5ICsxNzYsMTAgQEAKICAgIEFsc28gd29ya3MgZm9yIEJVSUxEX0xJU1QgYW5kIEJVSUxUX1NFVCB3aGVuIGZvbGxvd2VkIGJ5IGFuICJpbiIgb3IgIm5vdCBpbiIKICAgIHRlc3Q7IGZvciBCVUlMRF9TRVQgaXQgYXNzZW1ibGVzIGEgZnJvemVuc2V0IHJhdGhlciB0aGFuIGEgdHVwbGUuCiAqLwotc3RhdGljIGludAotdHVwbGVfb2ZfY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5X3NzaXplX3QgbiwKLSAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCitzdGF0aWMgUHlfc3NpemVfdAorZm9sZF90dXBsZV9vbl9jb25zdGFudHMoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGNfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9wY29kZV9lbmQsIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzLCBpbnQgbikKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICpjb25zdGFudDsKICAgICBQeV9zc2l6ZV90IGksIGxlbl9jb25zdHM7CkBAIC0xMDYsOSArMTg5LDkgQEAKIAogICAgIC8qIEJ1aWxkdXAgbmV3IHR1cGxlIG9mIGNvbnN0YW50cyAqLwogICAgIG5ld2NvbnN0ID0gUHlUdXBsZV9OZXcobik7Ci0gICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKKyAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CiAgICAgICAgIGNvbnN0YW50ID0gb2Jqc1tpXTsKICAgICAgICAgUHlfSU5DUkVGKGNvbnN0YW50KTsKQEAgLTExNiwzMCArMTk5LDI2IEBACiAgICAgfQogCiAgICAgLyogSWYgaXQncyBhIEJVSUxEX1NFVCwgdXNlIHRoZSBQeVR1cGxlIHdlIGp1c3QgYnVpbHQgdG8gY3JlYXRlIGEKLSAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCi0gICAgaWYgKGNvZGVzdHJbMF0gPT0gQlVJTERfU0VUKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0dXBsZSA9IG5ld2NvbnN0OwotICAgICAgICBuZXdjb25zdCA9IFB5RnJvemVuU2V0X05ldyh0dXBsZSk7Ci0gICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7Ci0gICAgICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgUHlGcm96ZW5TZXQsIGFuZCB1c2UgdGhhdCBhcyB0aGUgY29uc3RhbnQgaW5zdGVhZDogKi8KKyAgICBpZiAob3Bjb2RlID09IEJVSUxEX1NFVCkgeworICAgICAgICBQeV9TRVRSRUYobmV3Y29uc3QsIFB5RnJvemVuU2V0X05ldyhuZXdjb25zdCkpOworICAgICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyogQXBwZW5kIGZvbGRlZCBjb25zdGFudCBvbnRvIGNvbnN0cyAqLworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKICAgICBpZiAoUHlMaXN0X0FwcGVuZChjb25zdHMsIG5ld2NvbnN0KSkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwogCi0gICAgLyogV3JpdGUgTk9QcyBvdmVyIG9sZCBMT0FEX0NPTlNUUyBhbmQKLSAgICAgICBhZGQgYSBuZXcgTE9BRF9DT05TVCBuZXdjb25zdCBvbiB0b3Agb2YgdGhlIEJVSUxEX1RVUExFIG4gKi8KLSAgICBjb2Rlc3RyWzBdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgMCwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCi0vKiBSZXBsYWNlIExPQURfQ09OU1QgYzEuIExPQURfQ09OU1QgYzIgQklOT1AKKy8qIFJlcGxhY2UgTE9BRF9DT05TVCBjMSwgTE9BRF9DT05TVCBjMiwgQklOT1AKICAgIHdpdGggICAgTE9BRF9DT05TVCBiaW5vcChjMSxjMikKICAgIFRoZSBjb25zdHMgdGFibGUgbXVzdCBzdGlsbCBiZSBpbiBsaXN0IGZvcm0gc28gdGhhdCB0aGUKICAgIG5ldyBjb25zdGFudCBjYW4gYmUgYXBwZW5kZWQuCkBAIC0xNDksMjAgKzIyOCwyMSBAQAogICAgaXMgYmVsb3cgYSB0aHJlc2hvbGQgdmFsdWUuICBUaGF0IGtlZXBzIHB5YyBmaWxlcyBmcm9tCiAgICBiZWNvbWluZyBsYXJnZSBpbiB0aGUgcHJlc2VuY2Ugb2YgY29kZSBsaWtlOiAgKE5vbmUsKSoxMDAwLgogKi8KLXN0YXRpYyBpbnQKLWZvbGRfYmlub3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCitzdGF0aWMgUHlfc3NpemVfdAorZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb3Bjb2RlX2VuZCwgdW5zaWduZWQgY2hhciBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQogewogICAgIFB5T2JqZWN0ICpuZXdjb25zdCwgKnYsICp3OwogICAgIFB5X3NzaXplX3QgbGVuX2NvbnN0cywgc2l6ZTsKLSAgICBpbnQgb3Bjb2RlOwogCiAgICAgLyogUHJlLWNvbmRpdGlvbnMgKi8KICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QoY29uc3RzKSk7CisgICAgbGVuX2NvbnN0cyA9IFB5TGlzdF9HRVRfU0laRShjb25zdHMpOwogCiAgICAgLyogQ3JlYXRlIG5ldyBjb25zdGFudCAqLwogICAgIHYgPSBvYmpzWzBdOwogICAgIHcgPSBvYmpzWzFdOwotICAgIG9wY29kZSA9IGNvZGVzdHJbMF07CiAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgY2FzZSBCSU5BUllfUE9XRVI6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX1Bvd2VyKHYsIHcsIFB5X05vbmUpOwpAQCAtMjA4LDUwICsyODgsNDggQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgYmluYXJ5IG9wZXJhdGlvbiAlZCBvbiBhIGNvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKQorICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2l6ZSA9IFB5T2JqZWN0X1NpemUobmV3Y29uc3QpOwogICAgIGlmIChzaXplID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0gZWxzZSBpZiAoc2l6ZSA+IDIwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLyogQXBwZW5kIGZvbGRlZCBjb25zdGFudCBpbnRvIGNvbnN0cyB0YWJsZSAqLwotICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKICAgICBpZiAoUHlMaXN0X0FwcGVuZChjb25zdHMsIG5ld2NvbnN0KSkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwogCi0gICAgLyogV3JpdGUgTk9QIE5PUCBOT1AgTk9QIExPQURfQ09OU1QgbmV3Y29uc3QgKi8KLSAgICBjb2Rlc3RyWy0yXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIC0yLCBsZW5fY29uc3RzKTsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gY29weV9vcF9hcmcoY29kZXN0ciwgY19zdGFydCwgTE9BRF9DT05TVCwgbGVuX2NvbnN0cywgb3Bjb2RlX2VuZCk7CiB9CiAKLXN0YXRpYyBpbnQKLWZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICp2KQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvcGNvZGVfZW5kLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICp2KQogewogICAgIFB5T2JqZWN0ICpuZXdjb25zdDsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHM7Ci0gICAgaW50IG9wY29kZTsKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOwotICAgIGFzc2VydChjb2Rlc3RyWzBdID09IExPQURfQ09OU1QpOworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KLSAgICBvcGNvZGUgPSBjb2Rlc3RyWzNdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX05lZ2F0aXZlKHYpOwpAQCAtMjY3LDM1ICszNDUsMzEgQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgdW5hcnkgb3BlcmF0aW9uICVkIG9uIGEgY29uc3RhbnQiLAogICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkgewotICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpCisgICAgICAgIGlmKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgaW50byBjb25zdHMgdGFibGUgKi8KLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgY29kZXN0clswXSA9IE5PUDsKLSAgICBjb2Rlc3RyWzFdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgMSwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50ICoKLW1hcmtibG9ja3ModW5zaWduZWQgY2hhciAqY29kZSwgUHlfc3NpemVfdCBsZW4pCittYXJrYmxvY2tzKF9QeV9DT0RFVU5JVCAqY29kZSwgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgdW5zaWduZWQgaW50ICpibG9ja3MgPSBQeU1lbV9OZXcodW5zaWduZWQgaW50LCBsZW4pOwotICAgIGludCBpLGosIG9wY29kZSwgYmxvY2tjbnQgPSAwOworICAgIGludCBpLCBqLCBvcGNvZGUsIGJsb2NrY250ID0gMDsKIAogICAgIGlmIChibG9ja3MgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMzA0LDggKzM3OCw4IEBACiAgICAgbWVtc2V0KGJsb2NrcywgMCwgbGVuKnNpemVvZihpbnQpKTsKIAogICAgIC8qIE1hcmsgbGFiZWxzIGluIHRoZSBmaXJzdCBwYXNzICovCi0gICAgZm9yIChpPTAgOyBpPGxlbiA7IGkrPUNPREVTSVpFKG9wY29kZSkpIHsKLSAgICAgICAgb3Bjb2RlID0gY29kZVtpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2RlW2ldKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgICAgIGNhc2UgRk9SX0lURVI6CiAgICAgICAgICAgICBjYXNlIEpVTVBfRk9SV0FSRDoKQEAgLTMyMSwxMiArMzk1LDEzIEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6CiAgICAgICAgICAgICAgICAgaiA9IEdFVEpVTVBUR1QoY29kZSwgaSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGogPCBsZW4pOwogICAgICAgICAgICAgICAgIGJsb2Nrc1tqXSA9IDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAgICAgLyogQnVpbGQgYmxvY2sgbnVtYmVycyBpbiB0aGUgc2Vjb25kIHBhc3MgKi8KLSAgICBmb3IgKGk9MCA7IGk8bGVuIDsgaSsrKSB7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIGJsb2NrY250ICs9IGJsb2Nrc1tpXTsgICAgICAgICAgLyogaW5jcmVtZW50IGJsb2NrY250IG92ZXIgbGFiZWxzICovCiAgICAgICAgIGJsb2Nrc1tpXSA9IGJsb2NrY250OwogICAgIH0KQEAgLTMzNywzMyArNDEyLDI3IEBACiAgICBUaGUgY29uc3RzIG9iamVjdCBzaG91bGQgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHRvIGFsbG93IG5ldyBjb25zdGFudHMKICAgIHRvIGJlIGFwcGVuZGVkLgogCi0gICBUbyBrZWVwIHRoZSBvcHRpbWl6ZXIgc2ltcGxlLCBpdCBiYWlscyBvdXQgKGRvZXMgbm90aGluZykgZm9yIGNvZGUgdGhhdAotICAgaGFzIGEgbGVuZ3RoIG92ZXIgMzIsNzAwLCBhbmQgZG9lcyBub3QgY2FsY3VsYXRlIGV4dGVuZGVkIGFyZ3VtZW50cy4KLSAgIFRoYXQgYWxsb3dzIHVzIHRvIGF2b2lkIG92ZXJmbG93IGFuZCBzaWduIGlzc3Vlcy4gTGlrZXdpc2UsIGl0IGJhaWxzIHdoZW4KLSAgIHRoZSBsaW5lbm8gdGFibGUgaGFzIGNvbXBsZXggZW5jb2RpbmcgZm9yIGdhcHMgPj0gMjU1LiBFWFRFTkRFRF9BUkcgY2FuCi0gICBhcHBlYXIgYmVmb3JlIE1BS0VfRlVOQ1RJT047IGluIHRoaXMgY2FzZSBib3RoIG9wY29kZXMgYXJlIHNraXBwZWQuCi0gICBFWFRFTkRFRF9BUkcgcHJlY2VkaW5nIGFueSBvdGhlciBvcGNvZGUgY2F1c2VzIHRoZSBvcHRpbWl6ZXIgdG8gYmFpbC4KKyAgIFRvIGtlZXAgdGhlIG9wdGltaXplciBzaW1wbGUsIGl0IGJhaWxzIHdoZW4gdGhlIGxpbmVubyB0YWJsZSBoYXMgY29tcGxleAorICAgZW5jb2RpbmcgZm9yIGdhcHMgPj0gMjU1LgogCiAgICBPcHRpbWl6YXRpb25zIGFyZSByZXN0cmljdGVkIHRvIHNpbXBsZSB0cmFuc2Zvcm1hdGlvbnMgb2NjdXJyaW5nIHdpdGhpbiBhCiAgICBzaW5nbGUgYmFzaWMgYmxvY2suICBBbGwgdHJhbnNmb3JtYXRpb25zIGtlZXAgdGhlIGNvZGUgc2l6ZSB0aGUgc2FtZSBvcgogICAgc21hbGxlci4gIEZvciB0aG9zZSB0aGF0IHJlZHVjZSBzaXplLCB0aGUgZ2FwcyBhcmUgaW5pdGlhbGx5IGZpbGxlZCB3aXRoCiAgICBOT1BzLiAgTGF0ZXIgdGhvc2UgTk9QcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIGp1bXAgYWRkcmVzc2VzIHJldGFyZ2V0ZWQgaW4KLSAgIGEgc2luZ2xlIHBhc3MuICBMaW5lIG51bWJlcmluZyBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseS4gKi8KKyAgIGEgc2luZ2xlIHBhc3MuICovCiAKIFB5T2JqZWN0ICoKIFB5Q29kZV9PcHRpbWl6ZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QqIGNvbnN0cywgUHlPYmplY3QgKm5hbWVzLAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsaW5lbm9fb2JqKQorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsbm90YWJfb2JqKQogewotICAgIFB5X3NzaXplX3QgaSwgaiwgY29kZWxlbjsKLSAgICBpbnQgbm9wcywgaCwgYWRqOwotICAgIGludCB0Z3QsIHRndHRndCwgb3Bjb2RlOwotICAgIHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIgPSBOVUxMOwotICAgIHVuc2lnbmVkIGNoYXIgKmxpbmVubzsKLSAgICBpbnQgKmFkZHJtYXAgPSBOVUxMOwotICAgIGludCBuZXdfbGluZSwgY3VtX29yaWdfbGluZSwgbGFzdF9saW5lOworICAgIFB5X3NzaXplX3QgaCwgaSwgbmV4dGksIG9wX3N0YXJ0LCBjb2RlbGVuLCB0Z3Q7CisgICAgdW5zaWduZWQgaW50IGosIG5vcHM7CisgICAgdW5zaWduZWQgY2hhciBvcGNvZGUsIG5leHRvcDsKKyAgICBfUHlfQ09ERVVOSVQgKmNvZGVzdHIgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmxub3RhYjsKKyAgICB1bnNpZ25lZCBpbnQgY3VtX29yaWdfb2Zmc2V0LCBsYXN0X29mZnNldDsKICAgICBQeV9zc2l6ZV90IHRhYnNpejsKICAgICBQeU9iamVjdCAqKmNvbnN0X3N0YWNrID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90ICpsb2FkX2NvbnN0X3N0YWNrID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3RvcCA9IC0xOwogICAgIFB5X3NzaXplX3QgY29uc3Rfc3RhY2tfc2l6ZSA9IDA7CiAgICAgaW50IGluX2NvbnN0cyA9IDA7ICAvKiB3aGV0aGVyIHdlIGFyZSBpbiBhIExPQURfQ09OU1Qgc2VxdWVuY2UgKi8KQEAgLTM3Myw0MiArNDQyLDMwIEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gZXhpdEVycm9yOwogCi0gICAgLyogQnlwYXNzIG9wdGltaXphdGlvbiB3aGVuIHRoZSBsaW5lbm8gdGFibGUgaXMgdG9vIGNvbXBsZXggKi8KLSAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhsaW5lbm9fb2JqKSk7Ci0gICAgbGluZW5vID0gKHVuc2lnbmVkIGNoYXIqKVB5Qnl0ZXNfQVNfU1RSSU5HKGxpbmVub19vYmopOwotICAgIHRhYnNpeiA9IFB5Qnl0ZXNfR0VUX1NJWkUobGluZW5vX29iaik7Ci0gICAgaWYgKG1lbWNocihsaW5lbm8sIDI1NSwgdGFic2l6KSAhPSBOVUxMKQorICAgIC8qIEJ5cGFzcyBvcHRpbWl6YXRpb24gd2hlbiB0aGUgbG5vdGFiIHRhYmxlIGlzIHRvbyBjb21wbGV4ICovCisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobG5vdGFiX29iaikpOworICAgIGxub3RhYiA9ICh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhsbm90YWJfb2JqKTsKKyAgICB0YWJzaXogPSBQeUJ5dGVzX0dFVF9TSVpFKGxub3RhYl9vYmopOworICAgIGFzc2VydCh0YWJzaXogPT0gMCB8fCBQeV9SRUZDTlQobG5vdGFiX29iaikgPT0gMSk7CisgICAgaWYgKG1lbWNocihsbm90YWIsIDI1NSwgdGFic2l6KSAhPSBOVUxMKSB7CisgICAgICAgIC8qIDI1NSB2YWx1ZSBhcmUgdXNlZCBmb3IgbXVsdGlieXRlIGJ5dGVjb2RlIGluc3RydWN0aW9ucyAqLwogICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgfQorICAgIC8qIE5vdGU6IC0xMjggYW5kIDEyNyBzcGVjaWFsIHZhbHVlcyBmb3IgbGluZSBudW1iZXIgZGVsdGEgYXJlIG9rLAorICAgICAgIHRoZSBwZWVwaG9sZSBvcHRpbWl6ZXIgZG9lc24ndCBtb2RpZnkgbGluZSBudW1iZXJzLiAqLwogCi0gICAgLyogQXZvaWQgc2l0dWF0aW9ucyB3aGVyZSBqdW1wIHJldGFyZ2V0aW5nIGNvdWxkIG92ZXJmbG93ICovCiAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2soY29kZSkpOwogICAgIGNvZGVsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGNvZGUpOwotICAgIGlmIChjb2RlbGVuID4gMzI3MDApCi0gICAgICAgIGdvdG8gZXhpdFVuY2hhbmdlZDsKKyAgICBhc3NlcnQoY29kZWxlbiAlIHNpemVvZihfUHlfQ09ERVVOSVQpID09IDApOwogCiAgICAgLyogTWFrZSBhIG1vZGlmaWFibGUgY29weSBvZiB0aGUgY29kZSBzdHJpbmcgKi8KLSAgICBjb2Rlc3RyID0gKHVuc2lnbmVkIGNoYXIgKilQeU1lbV9NYWxsb2MoY29kZWxlbik7CisgICAgY29kZXN0ciA9IChfUHlfQ09ERVVOSVQgKilQeU1lbV9NYWxsb2MoY29kZWxlbik7CiAgICAgaWYgKGNvZGVzdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGV4aXRFcnJvcjsKICAgICB9Ci0gICAgY29kZXN0ciA9ICh1bnNpZ25lZCBjaGFyICopbWVtY3B5KGNvZGVzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvZGUpLCBjb2RlbGVuKTsKLQotICAgIC8qIFZlcmlmeSB0aGF0IFJFVFVSTl9WQUxVRSB0ZXJtaW5hdGVzIHRoZSBjb2Rlc3RyaW5nLiAgICAgIFRoaXMgYWxsb3dzCi0gICAgICAgdGhlIHZhcmlvdXMgdHJhbnNmb3JtYXRpb24gcGF0dGVybnMgdG8gbG9vayBhaGVhZCBzZXZlcmFsCi0gICAgICAgaW5zdHJ1Y3Rpb25zIHdpdGhvdXQgYWRkaXRpb25hbCBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIG5vdAotICAgICAgIGxvb2tpbmcgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGNvZGUgc3RyaW5nLgotICAgICovCi0gICAgaWYgKGNvZGVzdHJbY29kZWxlbi0xXSAhPSBSRVRVUk5fVkFMVUUpCi0gICAgICAgIGdvdG8gZXhpdFVuY2hhbmdlZDsKLQotICAgIC8qIE1hcHBpbmcgdG8gbmV3IGp1bXAgdGFyZ2V0cyBhZnRlciBOT1BzIGFyZSByZW1vdmVkICovCi0gICAgYWRkcm1hcCA9IFB5TWVtX05ldyhpbnQsIGNvZGVsZW4pOwotICAgIGlmIChhZGRybWFwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBleGl0RXJyb3I7Ci0gICAgfQorICAgIG1lbWNweShjb2Rlc3RyLCBQeUJ5dGVzX0FTX1NUUklORyhjb2RlKSwgY29kZWxlbik7CisgICAgY29kZWxlbiAvPSBzaXplb2YoX1B5X0NPREVVTklUKTsKIAogICAgIGJsb2NrcyA9IG1hcmtibG9ja3MoY29kZXN0ciwgY29kZWxlbik7CiAgICAgaWYgKGJsb2NrcyA9PSBOVUxMKQpAQCAtNDE3LDkgKzQ3NCwxNyBAQAogCiAgICAgQ09OU1RfU1RBQ0tfQ1JFQVRFKCk7CiAKLSAgICBmb3IgKGk9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKLSAgICAgIHJlb3B0aW1pemVfY3VycmVudDoKLSAgICAgICAgb3Bjb2RlID0gY29kZXN0cltpXTsKKyAgICBmb3IgKGk9ZmluZF9vcChjb2Rlc3RyLCAwKSA7IGk8Y29kZWxlbiA7IGk9bmV4dGkpIHsKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2Rlc3RyW2ldKTsKKyAgICAgICAgb3Bfc3RhcnQgPSBpOworICAgICAgICB3aGlsZSAob3Bfc3RhcnQgPj0gMSAmJiBfUHlfT1BDT0RFKGNvZGVzdHJbb3Bfc3RhcnQtMV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgb3Bfc3RhcnQtLTsKKyAgICAgICAgfQorCisgICAgICAgIG5leHRpID0gaSArIDE7CisgICAgICAgIHdoaWxlIChuZXh0aSA8IGNvZGVsZW4gJiYgX1B5X09QQ09ERShjb2Rlc3RyW25leHRpXSkgPT0gRVhURU5ERURfQVJHKQorICAgICAgICAgICAgbmV4dGkrKzsKKyAgICAgICAgbmV4dG9wID0gbmV4dGkgPCBjb2RlbGVuID8gX1B5X09QQ09ERShjb2Rlc3RyW25leHRpXSkgOiAwOwogCiAgICAgICAgIGlmICghaW5fY29uc3RzKSB7CiAgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOwpAQCAtNDMwLDE0ICs0OTUsMTIgQEAKICAgICAgICAgICAgIC8qIFJlcGxhY2UgVU5BUllfTk9UIFBPUF9KVU1QX0lGX0ZBTFNFCiAgICAgICAgICAgICAgICB3aXRoICAgIFBPUF9KVU1QX0lGX1RSVUUgKi8KICAgICAgICAgICAgIGNhc2UgVU5BUllfTk9UOgotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krMV0gIT0gUE9QX0pVTVBfSUZfRkFMU0UKLSAgICAgICAgICAgICAgICAgICAgfHwgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKzEpOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9UUlVFOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gPSBOT1A7Ci0gICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgaWYgKG5leHRvcCAhPSBQT1BfSlVNUF9JRl9GQUxTRQorICAgICAgICAgICAgICAgICAgICB8fCAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIG9wX3N0YXJ0LCBpICsgMSk7CisgICAgICAgICAgICAgICAgY29kZXN0cltuZXh0aV0gPSBQQUNLT1BBUkcoUE9QX0pVTVBfSUZfVFJVRSwgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBub3QgYSBpcyBiIC0tPiAgYSBpcyBub3QgYgogICAgICAgICAgICAgICAgICAgIG5vdCBhIGluIGIgLS0+ICBhIG5vdCBpbiBiCkBAIC00NDUsNzggKzUwOCw3NiBAQAogICAgICAgICAgICAgICAgICAgIG5vdCBhIG5vdCBpbiBiIC0tPiAgYSBpbiBiCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNhc2UgQ09NUEFSRV9PUDoKLSAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGlmIChqIDwgNiAgfHwgIGogPiA5ICB8fAotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gIT0gVU5BUllfTk9UICB8fAotICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDQpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgKGpeMSkpOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaSszXSA9IE5PUDsKKyAgICAgICAgICAgICAgICBqID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoaiA8IDYgfHwgaiA+IDkgfHwKKyAgICAgICAgICAgICAgICAgICAgbmV4dG9wICE9IFVOQVJZX05PVCB8fAorICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFBBQ0tPUEFSRyhvcGNvZGUsIGpeMSk7CisgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIGkgKyAxLCBuZXh0aSArIDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIExPQURfQ09OU1QgdHJ1ZWNvbnN0Ci0gICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguIFRoaXMgaW1wcm92ZXMKLSAgICAgICAgICAgICAgICAgICAid2hpbGUgMSIgcGVyZm9ybWFuY2UuICovCisgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguICBUaGlzIGltcHJvdmVzCisgICAgICAgICAgICAgICAgICAgIndoaWxlIDEiIHBlcmZvcm1hbmNlLiAgKi8KICAgICAgICAgICAgIGNhc2UgTE9BRF9DT05TVDoKICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBQT1BfSlVNUF9JRl9GQUxTRSAgfHwKLSAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw2KSAgfHwKLSAgICAgICAgICAgICAgICAgICAgIVB5T2JqZWN0X0lzVHJ1ZShQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBqKSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2ksIE5PUCwgNik7Ci0gICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKKyAgICAgICAgICAgICAgICBpZiAobmV4dG9wICE9IFBPUF9KVU1QX0lGX0ZBTFNFICB8fAorICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIVB5T2JqZWN0X0lzVHJ1ZShQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBnZXRfYXJnKGNvZGVzdHIsIGkpKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgbmV4dGkgKyAxKTsKKyAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAvKiBUcnkgdG8gZm9sZCB0dXBsZXMgb2YgY29uc3RhbnRzIChpbmNsdWRlcyBhIGNhc2UgZm9yIGxpc3RzIGFuZCBzZXRzCi0gICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIG9ubHkgdXNlZCBmb3IgImluIiBhbmQgIm5vdCBpbiIgdGVzdHMpLgorICAgICAgICAgICAgICAgIC8qIFRyeSB0byBmb2xkIHR1cGxlcyBvZiBjb25zdGFudHMgKGluY2x1ZGVzIGEgY2FzZSBmb3IgbGlzdHMKKyAgICAgICAgICAgICAgICAgICBhbmQgc2V0cyB3aGljaCBhcmUgb25seSB1c2VkIGZvciAiaW4iIGFuZCAibm90IGluIiB0ZXN0cykuCiAgICAgICAgICAgICAgICAgICAgU2tpcCBvdmVyIEJVSUxEX1NFUU4gMSBVTlBBQ0tfU0VRTiAxLgogICAgICAgICAgICAgICAgICAgIFJlcGxhY2UgQlVJTERfU0VRTiAyIFVOUEFDS19TRVFOIDIgd2l0aCBST1QyLgogICAgICAgICAgICAgICAgICAgIFJlcGxhY2UgQlVJTERfU0VRTiAzIFVOUEFDS19TRVFOIDMgd2l0aCBST1QzIFJPVDIuICovCiAgICAgICAgICAgICBjYXNlIEJVSUxEX1RVUExFOgogICAgICAgICAgICAgY2FzZSBCVUlMRF9MSVNUOgogICAgICAgICAgICAgY2FzZSBCVUlMRF9TRVQ6Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoaiA9PSAwKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oaik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCBqKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJiBqID4gMCAmJiBqIDw9IENPTlNUX1NUQUNLX0xFTigpICYmCi0gICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX1RVUExFICYmCi0gICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzMpKSB8fAotICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfTElTVCB8fCBvcGNvZGUgPT0gQlVJTERfU0VUKSAmJgotICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaSszXT09Q09NUEFSRV9PUCAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCs2KSAmJgotICAgICAgICAgICAgICAgICAgICAgIChHRVRBUkcoY29kZXN0cixpKzMpPT02IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgIEdFVEFSRyhjb2Rlc3RyLGkrMyk9PTcpKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgdHVwbGVfb2ZfY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBqLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKGopKSkgewotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZjb2Rlc3RyW2hdLCBOT1AsIGkgLSBoKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKGopOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBqID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoaiA+IDAgJiYgQ09OU1RfU1RBQ0tfTEVOKCkgPj0gaikgeworICAgICAgICAgICAgICAgICAgICBoID0gbGFzdG5fY29uc3Rfc3RhcnQoY29kZXN0ciwgb3Bfc3RhcnQsIGopOworICAgICAgICAgICAgICAgICAgICBpZiAoKG9wY29kZSA9PSBCVUlMRF9UVVBMRSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBvcF9zdGFydCkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfTElTVCB8fCBvcGNvZGUgPT0gQlVJTERfU0VUKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5leHRvcD09Q09NUEFSRV9PUCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSA9PSBQeUNtcF9JTiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSA9PSBQeUNtcF9OT1RfSU4pKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0b3AgPT0gR0VUX0lURVIpICYmIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGkgKyAxKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmb2xkX3R1cGxlX29uX2NvbnN0YW50cyhjb2Rlc3RyLCBoLCBpICsgMSwgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cywgQ09OU1RfU1RBQ0tfTEFTVE4oaiksIGopOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBVTlBBQ0tfU0VRVUVOQ0UgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNikgfHwKLSAgICAgICAgICAgICAgICAgICAgaiAhPSBHRVRBUkcoY29kZXN0ciwgaSszKSB8fAorICAgICAgICAgICAgICAgIGlmIChuZXh0b3AgIT0gVU5QQUNLX1NFUVVFTkNFICB8fAorICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSB8fAorICAgICAgICAgICAgICAgICAgICBqICE9IGdldF9hcmcoY29kZXN0ciwgbmV4dGkpIHx8CiAgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9PSBCVUlMRF9TRVQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChqID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSwgTk9QLCA2KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGogPCAyKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMikgewotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RXTzsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDUpOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhST1RfVFdPLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIG9wX3N0YXJ0ICsgMSwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMykgewotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RIUkVFOwotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krMV0gPSBST1RfVFdPOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzIsIE5PUCwgNCk7CisgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbb3Bfc3RhcnRdID0gUEFDS09QQVJHKFJPVF9USFJFRSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbb3Bfc3RhcnQgKyAxXSA9IFBBQ0tPUEFSRyhST1RfVFdPLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIG9wX3N0YXJ0ICsgMiwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBGb2xkIGJpbmFyeSBvcHMgb24gY29uc3RhbnRzLgotICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgTE9BRF9DT05TVCBjMiBCSU5PUCAtLT4gIExPQURfQ09OU1QgYmlub3AoYzEsYzIpICovCisgICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSBMT0FEX0NPTlNUIGMyIEJJTk9QIC0tPiBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKSAqLwogICAgICAgICAgICAgY2FzZSBCSU5BUllfUE9XRVI6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9NVUxUSVBMWToKICAgICAgICAgICAgIGNhc2UgQklOQVJZX1RSVUVfRElWSURFOgpAQCAtNTMwLDM1ICs1OTEsMzQgQEAKICAgICAgICAgICAgIGNhc2UgQklOQVJZX0FORDoKICAgICAgICAgICAgIGNhc2UgQklOQVJZX1hPUjoKICAgICAgICAgICAgIGNhc2UgQklOQVJZX09SOgotICAgICAgICAgICAgICAgIC8qIE5PVEU6IExPQURfQ09OU1QgaXMgc2F2ZWQgYXQgYGktMmAgc2luY2UgaXQgaGFzIGFuIGFyZwotICAgICAgICAgICAgICAgICAgIHdoaWxlIEJJTk9QIGhhc24ndCAqLwotICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDIpKTsKLSAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKDIpKSkgewotICAgICAgICAgICAgICAgICAgICBpIC09IDI7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMik7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CisgICAgICAgICAgICAgICAgaWYgKENPTlNUX1NUQUNLX0xFTigpIDwgMikKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCAyKTsKKyAgICAgICAgICAgICAgICBpZiAoSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGggPSBmb2xkX2Jpbm9wc19vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKDIpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDIpOworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIEZvbGQgdW5hcnkgb3BzIG9uIGNvbnN0YW50cy4KLSAgICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIGMxICBVTkFSWV9PUCAtLT4gICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIHVuYXJ5X29wKGMpICovCisgICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSAgVU5BUllfT1AgLS0+IExPQURfQ09OU1QgdW5hcnlfb3AoYykgKi8KICAgICAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX0lOVkVSVDoKICAgICAgICAgICAgIGNhc2UgVU5BUllfUE9TSVRJVkU6Ci0gICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKDEpOwotICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgMSkpOwotICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzEpICAmJgotICAgICAgICAgICAgICAgICAgICBmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpLTNdLCBjb25zdHMsIENPTlNUX1NUQUNLX1RPUCgpKSkgewotICAgICAgICAgICAgICAgICAgICBpIC09IDI7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CisgICAgICAgICAgICAgICAgaWYgKENPTlNUX1NUQUNLX0xFTigpIDwgMSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGggPSBmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyhjb2Rlc3RyLCBoLCBpICsgMSwgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzLCAqQ09OU1RfU1RBQ0tfTEFTVE4oMSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01NzMsMzkgKzYzMywzNiBAQAogICAgICAgICAgICAgICAgICAgIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgeSAgIHk6SlVNUF9JRl9GQUxTRV9PUl9QT1AgegogICAgICAgICAgICAgICAgICAgICAgIC0tPiAgeDpKVU1QX0lGX0ZBTFNFX09SX1BPUCB6CiAgICAgICAgICAgICAgICAgICAgeDpKVU1QX0lGX0ZBTFNFX09SX1BPUCB5ICAgeTpKVU1QX0lGX1RSVUVfT1JfUE9QIHoKLSAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6UE9QX0pVTVBfSUZfRkFMU0UgeSszCi0gICAgICAgICAgICAgICAgICAgd2hlcmUgeSszIGlzIHRoZSBpbnN0cnVjdGlvbiBmb2xsb3dpbmcgdGhlIHNlY29uZCB0ZXN0LgorICAgICAgICAgICAgICAgICAgICAgIC0tPiAgeDpQT1BfSlVNUF9JRl9GQUxTRSB5KzEKKyAgICAgICAgICAgICAgICAgICB3aGVyZSB5KzEgaXMgdGhlIGluc3RydWN0aW9uIGZvbGxvd2luZyB0aGUgc2Vjb25kIHRlc3QuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9GQUxTRV9PUl9QT1A6CiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfVFJVRV9PUl9QT1A6Ci0gICAgICAgICAgICAgICAgdGd0ID0gR0VUSlVNUFRHVChjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBqID0gY29kZXN0clt0Z3RdOworICAgICAgICAgICAgICAgIGggPSBnZXRfYXJnKGNvZGVzdHIsIGkpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CisgICAgICAgICAgICAgICAgdGd0ID0gZmluZF9vcChjb2Rlc3RyLCBoKTsKKworICAgICAgICAgICAgICAgIGogPSBfUHlfT1BDT0RFKGNvZGVzdHJbdGd0XSk7CiAgICAgICAgICAgICAgICAgaWYgKENPTkRJVElPTkFMX0pVTVAoaikpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogTk9URTogYWxsIHBvc3NpYmxlIGp1bXBzIGhlcmUgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgIGFic29sdXRlISAqLworICAgICAgICAgICAgICAgICAgICAvKiBOT1RFOiBhbGwgcG9zc2libGUganVtcHMgaGVyZSBhcmUgYWJzb2x1dGUuICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChKVU1QU19PTl9UUlVFKGopID09IEpVTVBTX09OX1RSVUUob3Bjb2RlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHNlY29uZCBqdW1wIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VuIGlmZiB0aGUgZmlyc3QgaXMuICovCi0gICAgICAgICAgICAgICAgICAgICAgICB0Z3R0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgY3VycmVudCBvcGNvZGUgaW5oZXJpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0cyB0YXJnZXQncyBzdGFjayBiZWhhdmlvdXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBqOwotICAgICAgICAgICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIHRndHRndCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlb3B0aW1pemVfY3VycmVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCB3aWxsIGJlIHRha2VuIGlmZiB0aGUgZmlyc3QgaXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY3VycmVudCBvcGNvZGUgaW5oZXJpdHMgaXRzIHRhcmdldCdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayBlZmZlY3QgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzZXRfYXJnKGNvZGVzdHIsIGksIGdldF9hcmcoY29kZXN0ciwgdGd0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgaXMgbm90IHRha2VuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgZmlyc3QgaXMgKHNvIGp1bXAgcGFzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQpLCBhbmQgYWxsIGNvbmRpdGlvbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wcyBwb3AgdGhlaXIgYXJndW1lbnQgd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhleSdyZSBub3QgdGFrZW4gKHNvIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpcnN0IGp1bXAgdG8gcG9wIGl0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgd2hlbiBpdCdzIHRha2VuKS4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKVU1QU19PTl9UUlVFKG9wY29kZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFBPUF9KVU1QX0lGX1RSVUU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFBPUF9KVU1QX0lGX0ZBTFNFOwotICAgICAgICAgICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksICh0Z3QgKyAzKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlb3B0aW1pemVfY3VycmVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCBpcyBub3QgdGFrZW4gaWYgdGhlIGZpcnN0IGlzIChzbworICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCBwYXN0IGl0KSwgYW5kIGFsbCBjb25kaXRpb25hbCBqdW1wcyBwb3AgdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IHdoZW4gdGhleSdyZSBub3QgdGFrZW4gKHNvIGNoYW5nZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IGp1bXAgdG8gcG9wIGl0cyBhcmd1bWVudCB3aGVuIGl0J3MgdGFrZW4pLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHNldF9hcmcoY29kZXN0ciwgaSwgKHRndCArIDEpICogc2l6ZW9mKF9QeV9DT0RFVU5JVCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG9wY29kZSA9PSBKVU1QX0lGX1RSVUVfT1JfUE9QID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQT1BfSlVNUF9JRl9UUlVFIDogUE9QX0pVTVBfSUZfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoaCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0aSA9IGg7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW25leHRpXSA9IFBBQ0tPUEFSRyhqLCBfUHlfT1BBUkcoY29kZXN0cltuZXh0aV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIEludGVudGlvbmFsIGZhbGx0aHJvdWdoICovCkBAIC02MjIsNzMgKzY3OSw3NCBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgotICAgICAgICAgICAgICAgIHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgdGd0ID0gZmluZF9vcChjb2Rlc3RyLCBoKTsKICAgICAgICAgICAgICAgICAvKiBSZXBsYWNlIEpVTVBfKiB0byBhIFJFVFVSTiBpbnRvIGp1c3QgYSBSRVRVUk4gKi8KICAgICAgICAgICAgICAgICBpZiAoVU5DT05ESVRJT05BTF9KVU1QKG9wY29kZSkgJiYKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0clt0Z3RdID09IFJFVFVSTl9WQUxVRSkgewotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUkVUVVJOX1ZBTFVFOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzEsIE5PUCwgMik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBfUHlfT1BDT0RFKGNvZGVzdHJbdGd0XSkgPT0gUkVUVVJOX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbb3Bfc3RhcnRdID0gUEFDS09QQVJHKFJFVFVSTl9WQUxVRSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDEsIGkgKyAxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFVOQ09ORElUSU9OQUxfSlVNUChfUHlfT1BDT0RFKGNvZGVzdHJbdGd0XSkpKSB7CisgICAgICAgICAgICAgICAgICAgIGogPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gSlVNUF9GT1JXQVJEKSB7IC8qIEpNUF9BQlMgY2FuIGdvIGJhY2t3YXJkcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gSlVNUF9BQlNPTFVURTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghQUJTT0xVVEVfSlVNUChvcGNvZGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKFB5X3NzaXplX3QpaiA8IGkgKyAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAvKiBObyBiYWNrd2FyZCByZWxhdGl2ZSBqdW1wcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaiAtPSBpICsgMTsgICAgICAgICAgLyogQ2FsYyByZWxhdGl2ZSBqdW1wIGFkZHIgKi8KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBqICo9IHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICAgICAgICAgICAgICBjb3B5X29wX2FyZyhjb2Rlc3RyLCBvcF9zdGFydCwgb3Bjb2RlLCBqLCBpICsgMSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghVU5DT05ESVRJT05BTF9KVU1QKGNvZGVzdHJbdGd0XSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHRndHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgdGd0KTsKLSAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IEpVTVBfRk9SV0FSRCkgLyogSk1QX0FCUyBjYW4gZ28gYmFja3dhcmRzICovCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IEpVTVBfQUJTT0xVVEU7Ci0gICAgICAgICAgICAgICAgaWYgKCFBQlNPTFVURV9KVU1QKG9wY29kZSkpCi0gICAgICAgICAgICAgICAgICAgIHRndHRndCAtPSBpICsgMzsgICAgIC8qIENhbGMgcmVsYXRpdmUganVtcCBhZGRyICovCi0gICAgICAgICAgICAgICAgaWYgKHRndHRndCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm8gYmFja3dhcmQgcmVsYXRpdmUganVtcHMgKi8KLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IG9wY29kZTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgdGd0dGd0KTsKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBFWFRFTkRFRF9BUkc6Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBNQUtFX0ZVTkNUSU9OKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7Ci0gICAgICAgICAgICAgICAgLyogZG9uJ3QgdmlzaXQgTUFLRV9GVU5DVElPTiBhcyBHRVRBUkcgd2lsbCBiZSB3cm9uZyAqLwotICAgICAgICAgICAgICAgIGkgKz0gMzsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8qIFJlcGxhY2UgUkVUVVJOIExPQURfQ09OU1QgTm9uZSBSRVRVUk4gd2l0aCBqdXN0IFJFVFVSTiAqLwotICAgICAgICAgICAgICAgIC8qIFJlbW92ZSB1bnJlYWNoYWJsZSBKVU1QcyBhZnRlciBSRVRVUk4gKi8KKyAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdW5yZWFjaGFibGUgb3BzIGFmdGVyIFJFVFVSTiAqLwogICAgICAgICAgICAgY2FzZSBSRVRVUk5fVkFMVUU6Ci0gICAgICAgICAgICAgICAgaWYgKGkrNCA+PSBjb2RlbGVuKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzRdID09IFJFVFVSTl9WQUxVRSAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLGksNSkpCi0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCA0KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChVTkNPTkRJVElPTkFMX0pVTVAoY29kZXN0cltpKzFdKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDMpOworICAgICAgICAgICAgICAgIGggPSBpICsgMTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaCArIDEgPCBjb2RlbGVuICYmIElTQkFTSUNCTE9DSyhibG9ja3MsIGksIGggKyAxKSkgeworICAgICAgICAgICAgICAgICAgICBoKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChoID4gaSArIDEpIHsKKyAgICAgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIGkgKyAxLCBoICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG5leHRpID0gZmluZF9vcChjb2Rlc3RyLCBoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBGaXh1cCBsaW5lbm90YWIgKi8KLSAgICBmb3IgKGk9MCwgbm9wcz0wIDsgaTxjb2RlbGVuIDsgaSArPSBDT0RFU0laRShjb2Rlc3RyW2ldKSkgeworICAgIC8qIEZpeHVwIGxub3RhYiAqLworICAgIGZvciAoaSA9IDAsIG5vcHMgPSAwOyBpIDwgY29kZWxlbjsgaSsrKSB7CiAgICAgICAgIGFzc2VydChpIC0gbm9wcyA8PSBJTlRfTUFYKTsKLSAgICAgICAgYWRkcm1hcFtpXSA9IChpbnQpKGkgLSBub3BzKTsKLSAgICAgICAgaWYgKGNvZGVzdHJbaV0gPT0gTk9QKQorICAgICAgICAvKiBvcmlnaW5hbCBjb2RlIG9mZnNldCA9PiBuZXcgY29kZSBvZmZzZXQgKi8KKyAgICAgICAgYmxvY2tzW2ldID0gaSAtIG5vcHM7CisgICAgICAgIGlmIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IE5PUCkKICAgICAgICAgICAgIG5vcHMrKzsKICAgICB9Ci0gICAgY3VtX29yaWdfbGluZSA9IDA7Ci0gICAgbGFzdF9saW5lID0gMDsKKyAgICBjdW1fb3JpZ19vZmZzZXQgPSAwOworICAgIGxhc3Rfb2Zmc2V0ID0gMDsKICAgICBmb3IgKGk9MCA7IGkgPCB0YWJzaXogOyBpKz0yKSB7Ci0gICAgICAgIGN1bV9vcmlnX2xpbmUgKz0gbGluZW5vW2ldOwotICAgICAgICBuZXdfbGluZSA9IGFkZHJtYXBbY3VtX29yaWdfbGluZV07Ci0gICAgICAgIGFzc2VydCAobmV3X2xpbmUgLSBsYXN0X2xpbmUgPCAyNTUpOwotICAgICAgICBsaW5lbm9baV0gPSgodW5zaWduZWQgY2hhcikobmV3X2xpbmUgLSBsYXN0X2xpbmUpKTsKLSAgICAgICAgbGFzdF9saW5lID0gbmV3X2xpbmU7CisgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXRfZGVsdGEsIG5ld19vZmZzZXQ7CisgICAgICAgIGN1bV9vcmlnX29mZnNldCArPSBsbm90YWJbaV07CisgICAgICAgIGFzc2VydChjdW1fb3JpZ19vZmZzZXQgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICAgICAgbmV3X29mZnNldCA9IGJsb2Nrc1tjdW1fb3JpZ19vZmZzZXQgLyBzaXplb2YoX1B5X0NPREVVTklUKV0gKgorICAgICAgICAgICAgICAgIHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICBvZmZzZXRfZGVsdGEgPSBuZXdfb2Zmc2V0IC0gbGFzdF9vZmZzZXQ7CisgICAgICAgIGFzc2VydChvZmZzZXRfZGVsdGEgPD0gMjU1KTsKKyAgICAgICAgbG5vdGFiW2ldID0gKHVuc2lnbmVkIGNoYXIpb2Zmc2V0X2RlbHRhOworICAgICAgICBsYXN0X29mZnNldCA9IG5ld19vZmZzZXQ7CiAgICAgfQogCiAgICAgLyogUmVtb3ZlIE5PUHMgYW5kIGZpeHVwIGp1bXAgdGFyZ2V0cyAqLwotICAgIGZvciAoaT0wLCBoPTAgOyBpPGNvZGVsZW4gOyApIHsKLSAgICAgICAgb3Bjb2RlID0gY29kZXN0cltpXTsKKyAgICBmb3IgKG9wX3N0YXJ0ID0gaSA9IGggPSAwOyBpIDwgY29kZWxlbjsgaSsrLCBvcF9zdGFydCA9IGkpIHsKKyAgICAgICAgaiA9IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICAgICAgd2hpbGUgKF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICBpKys7CisgICAgICAgICAgICBqID0gajw8OCB8IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICAgICAgfQorICAgICAgICBvcGNvZGUgPSBfUHlfT1BDT0RFKGNvZGVzdHJbaV0pOwogICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewotICAgICAgICAgICAgY2FzZSBOT1A6Ci0gICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2FzZSBOT1A6Y29udGludWU7CiAKICAgICAgICAgICAgIGNhc2UgSlVNUF9BQlNPTFVURToKICAgICAgICAgICAgIGNhc2UgQ09OVElOVUVfTE9PUDoKQEAgLTY5Niw4ICs3NTQsNyBAQAogICAgICAgICAgICAgY2FzZSBQT1BfSlVNUF9JRl9UUlVFOgogICAgICAgICAgICAgY2FzZSBKVU1QX0lGX0ZBTFNFX09SX1BPUDoKICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9UUlVFX09SX1BPUDoKLSAgICAgICAgICAgICAgICBqID0gYWRkcm1hcFtHRVRBUkcoY29kZXN0ciwgaSldOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKKyAgICAgICAgICAgICAgICBqID0gYmxvY2tzW2ogLyBzaXplb2YoX1B5X0NPREVVTklUKV0gKiBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBGT1JfSVRFUjoKQEAgLTcwNywzNCArNzY0LDMyIEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6Ci0gICAgICAgICAgICAgICAgaiA9IGFkZHJtYXBbR0VUQVJHKGNvZGVzdHIsIGkpICsgaSArIDNdIC0gYWRkcm1hcFtpXSAtIDM7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIGopOworICAgICAgICAgICAgICAgIGogPSBibG9ja3NbaiAvIHNpemVvZihfUHlfQ09ERVVOSVQpICsgaSArIDFdIC0gYmxvY2tzW2ldIC0gMTsKKyAgICAgICAgICAgICAgICBqICo9IHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGFkaiA9IENPREVTSVpFKG9wY29kZSk7Ci0gICAgICAgIHdoaWxlIChhZGotLSkKLSAgICAgICAgICAgIGNvZGVzdHJbaCsrXSA9IGNvZGVzdHJbaSsrXTsKKyAgICAgICAgbmV4dGkgPSBpIC0gb3Bfc3RhcnQgKyAxOworICAgICAgICBpZiAoaW5zdHJzaXplKGopID4gbmV4dGkpCisgICAgICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgICAgIC8qIElmIGluc3Ryc2l6ZShqKSA8IG5leHRpLCB3ZSdsbCBlbWl0IEVYVEVOREVEX0FSRyAwICovCisgICAgICAgIHdyaXRlX29wX2FyZyhjb2Rlc3RyICsgaCwgb3Bjb2RlLCBqLCBuZXh0aSk7CisgICAgICAgIGggKz0gbmV4dGk7CiAgICAgfQotICAgIGFzc2VydChoICsgbm9wcyA9PSBjb2RlbGVuKTsKKyAgICBhc3NlcnQoaCArIChQeV9zc2l6ZV90KW5vcHMgPT0gY29kZWxlbik7CiAKLSAgICBjb2RlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKWNvZGVzdHIsIGgpOwogICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwotICAgIFB5TWVtX0ZyZWUoYWRkcm1hcCk7Ci0gICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CisgICAgY29kZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKiljb2Rlc3RyLCBoICogc2l6ZW9mKF9QeV9DT0RFVU5JVCkpOworICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgcmV0dXJuIGNvZGU7CiAKICBleGl0RXJyb3I6CiAgICAgY29kZSA9IE5VTEw7CiAKICBleGl0VW5jaGFuZ2VkOgotICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwotICAgIGlmIChibG9ja3MgIT0gTlVMTCkKLSAgICAgICAgUHlNZW1fRnJlZShibG9ja3MpOwotICAgIGlmIChhZGRybWFwICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoYWRkcm1hcCk7Ci0gICAgaWYgKGNvZGVzdHIgIT0gTlVMTCkKLSAgICAgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICBQeV9YSU5DUkVGKGNvZGUpOworICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOworICAgIFB5TWVtX0ZyZWUoYmxvY2tzKTsKKyAgICBQeU1lbV9GcmVlKGNvZGVzdHIpOwogICAgIHJldHVybiBjb2RlOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5aGFzaC5jIGIvUHl0aG9uL3B5aGFzaC5jCmluZGV4IDk3Y2I1NDcuLjU3YTJkYTcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWhhc2guYworKysgYi9QeXRob24vcHloYXNoLmMKQEAgLTMxOCw0MCArMzE4LDM3IEBACiAKICBNb2RpZmllZCBmb3IgUHl0aG9uIGJ5IENocmlzdGlhbiBIZWltZXM6CiAgICAgLSBDODkgLyBNU1ZDIGNvbXBhdGliaWxpdHkKLSAgICAtIFBZX1VJTlQ2NF9ULCBQWV9VSU5UMzJfVCBhbmQgUFlfVUlOVDhfVAogICAgIC0gX3JvdGw2NCgpIG9uIFdpbmRvd3MKICAgICAtIGxldG9oNjQoKSBmYWxsYmFjawogKi8KIAotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFBZX1VJTlQ4X1Q7Ci0KIC8qIGJ5dGUgc3dhcCBsaXR0bGUgZW5kaWFuIHRvIGhvc3QgZW5kaWFuCiAgKiBFbmRpYW4gY29udmVyc2lvbiBub3Qgb25seSBlbnN1cmVzIHRoYXQgdGhlIGhhc2ggZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZQogICogdmFsdWUgb24gYWxsIHBsYXRmb3Jtcy4gSXQgaXMgYWxzbyByZXF1aXJlZCB0byBmb3IgYSBnb29kIGRpc3BlcnNpb24gb2YKICAqIHRoZSBoYXNoIHZhbHVlcycgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cy4KICAqLwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KLSMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKFBZX1VJTlQ2NF9UKSh4KSkKKyMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKHVpbnQ2NF90KSh4KSkKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogIyAgZGVmaW5lIF9sZTY0dG9oKHgpIE9TU3dhcExpdHRsZVRvSG9zdEludDY0KHgpCiAjZWxpZiBkZWZpbmVkKEhBVkVfTEVUT0g2NCkKICMgIGRlZmluZSBfbGU2NHRvaCh4KSBsZTY0dG9oKHgpCiAjZWxzZQotIyAgZGVmaW5lIF9sZTY0dG9oKHgpICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA1NikgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpIDw8IDQwKSAmIDB4ZmYwMDAwMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCAyNCkgJiAweGZmMDAwMDAwMDAwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpIDw8IDgpICAmIDB4ZmYwMDAwMDAwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpID4+IDgpICAmIDB4ZmYwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiAyNCkgJiAweGZmMDAwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpID4+IDQwKSAmIDB4ZmYwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKChQWV9VSU5UNjRfVCkoeCkgID4+IDU2KSkKKyMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKCh1aW50NjRfdCkoeCkgPDwgNTYpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA8PCA0MCkgJiAweGZmMDAwMDAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgMjQpICYgMHhmZjAwMDAwMDAwMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA8PCA4KSAgJiAweGZmMDAwMDAwMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA+PiA4KSAgJiAweGZmMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gMjQpICYgMHhmZjAwMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA+PiA0MCkgJiAweGZmMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgodWludDY0X3QpKHgpICA+PiA1NikpCiAjZW5kaWYKIAogCiAjaWZkZWYgX01TQ19WRVIKICMgIGRlZmluZSBST1RBVEUoeCwgYikgIF9yb3RsNjQoeCwgYikKICNlbHNlCi0jICBkZWZpbmUgUk9UQVRFKHgsIGIpIChQWV9VSU5UNjRfVCkoICgoeCkgPDwgKGIpKSB8ICggKHgpID4+ICg2NCAtIChiKSkpICkKKyMgIGRlZmluZSBST1RBVEUoeCwgYikgKHVpbnQ2NF90KSggKCh4KSA8PCAoYikpIHwgKCAoeCkgPj4gKDY0IC0gKGIpKSkgKQogI2VuZGlmCiAKICNkZWZpbmUgSEFMRl9ST1VORChhLGIsYyxkLHMsdCkgICAgICAgICBcCkBAIC0zNjksMjIgKzM2NiwyMiBAQAogCiBzdGF0aWMgUHlfaGFzaF90CiBzaXBoYXNoMjQoY29uc3Qgdm9pZCAqc3JjLCBQeV9zc2l6ZV90IHNyY19zeikgewotICAgIFBZX1VJTlQ2NF9UIGswID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMCk7Ci0gICAgUFlfVUlOVDY0X1QgazEgPSBfbGU2NHRvaChfUHlfSGFzaFNlY3JldC5zaXBoYXNoLmsxKTsKLSAgICBQWV9VSU5UNjRfVCBiID0gKFBZX1VJTlQ2NF9UKXNyY19zeiA8PCA1NjsKLSAgICBjb25zdCBQWV9VSU5UNjRfVCAqaW4gPSAoUFlfVUlOVDY0X1QqKXNyYzsKKyAgICB1aW50NjRfdCBrMCA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazApOworICAgIHVpbnQ2NF90IGsxID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMSk7CisgICAgdWludDY0X3QgYiA9ICh1aW50NjRfdClzcmNfc3ogPDwgNTY7CisgICAgY29uc3QgdWludDY0X3QgKmluID0gKHVpbnQ2NF90KilzcmM7CiAKLSAgICBQWV9VSU5UNjRfVCB2MCA9IGswIF4gMHg3MzZmNmQ2NTcwNzM2NTc1VUxMOwotICAgIFBZX1VJTlQ2NF9UIHYxID0gazEgXiAweDY0NmY3MjYxNmU2NDZmNmRVTEw7Ci0gICAgUFlfVUlOVDY0X1QgdjIgPSBrMCBeIDB4NmM3OTY3NjU2ZTY1NzI2MVVMTDsKLSAgICBQWV9VSU5UNjRfVCB2MyA9IGsxIF4gMHg3NDY1NjQ2Mjc5NzQ2NTczVUxMOworICAgIHVpbnQ2NF90IHYwID0gazAgXiAweDczNmY2ZDY1NzA3MzY1NzVVTEw7CisgICAgdWludDY0X3QgdjEgPSBrMSBeIDB4NjQ2ZjcyNjE2ZTY0NmY2ZFVMTDsKKyAgICB1aW50NjRfdCB2MiA9IGswIF4gMHg2Yzc5Njc2NTZlNjU3MjYxVUxMOworICAgIHVpbnQ2NF90IHYzID0gazEgXiAweDc0NjU2NDYyNzk3NDY1NzNVTEw7CiAKLSAgICBQWV9VSU5UNjRfVCB0OwotICAgIFBZX1VJTlQ4X1QgKnB0OwotICAgIFBZX1VJTlQ4X1QgKm07CisgICAgdWludDY0X3QgdDsKKyAgICB1aW50OF90ICpwdDsKKyAgICB1aW50OF90ICptOwogCiAgICAgd2hpbGUgKHNyY19zeiA+PSA4KSB7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIG1pID0gX2xlNjR0b2goKmluKTsKKyAgICAgICAgdWludDY0X3QgbWkgPSBfbGU2NHRvaCgqaW4pOwogICAgICAgICBpbiArPSAxOwogICAgICAgICBzcmNfc3ogLT0gODsKICAgICAgICAgdjMgXj0gbWk7CkBAIC0zOTMsMTMgKzM5MCwxMyBAQAogICAgIH0KIAogICAgIHQgPSAwOwotICAgIHB0ID0gKFBZX1VJTlQ4X1QgKikmdDsKLSAgICBtID0gKFBZX1VJTlQ4X1QgKilpbjsKKyAgICBwdCA9ICh1aW50OF90ICopJnQ7CisgICAgbSA9ICh1aW50OF90ICopaW47CiAgICAgc3dpdGNoIChzcmNfc3opIHsKICAgICAgICAgY2FzZSA3OiBwdFs2XSA9IG1bNl07CiAgICAgICAgIGNhc2UgNjogcHRbNV0gPSBtWzVdOwogICAgICAgICBjYXNlIDU6IHB0WzRdID0gbVs0XTsKLSAgICAgICAgY2FzZSA0OiBQeV9NRU1DUFkocHQsIG0sIHNpemVvZihQWV9VSU5UMzJfVCkpOyBicmVhazsKKyAgICAgICAgY2FzZSA0OiBtZW1jcHkocHQsIG0sIHNpemVvZih1aW50MzJfdCkpOyBicmVhazsKICAgICAgICAgY2FzZSAzOiBwdFsyXSA9IG1bMl07CiAgICAgICAgIGNhc2UgMjogcHRbMV0gPSBtWzFdOwogICAgICAgICBjYXNlIDE6IHB0WzBdID0gbVswXTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weWxpZmVjeWNsZS5jIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKaW5kZXggY2U1Mjk5MC4uNWI1Y2MyYiAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKKysrIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKQEAgLTMxLDYgKzMxLDkgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjdW5kZWYgQllURQogI2luY2x1ZGUgIndpbmRvd3MuaCIKKworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKyNkZWZpbmUgUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKG9wKSAoUHlPYmplY3RfVHlwZUNoZWNrKChvcCksICZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSkpCiAjZW5kaWYKIAogX1B5X0lERU5USUZJRVIoZmx1c2gpOwpAQCAtOTAsNiArOTMsMTAgQEAKIGludCBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnID0gMDsgLyogVW5idWZmZXJlZCBiaW5hcnkgc3Rke2luLG91dCxlcnJ9ICovCiBpbnQgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMDsgLyogZm9yIC1SIGFuZCBQWVRIT05IQVNIU0VFRCAqLwogaW50IFB5X0lzb2xhdGVkRmxhZyA9IDA7IC8qIGZvciAtSSwgaXNvbGF0ZSBmcm9tIHVzZXIncyBlbnYgKi8KKyNpZmRlZiBNU19XSU5ET1dTCitpbnQgUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnID0gMDsgLyogVXNlcyBtYmNzIGluc3RlYWQgb2YgdXRmLTggKi8KK2ludCBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnID0gMDsgLyogVXNlcyBGaWxlSU8gaW5zdGVhZCBvZiBXaW5kb3dzQ29uc29sZUlPICovCisjZW5kaWYKIAogUHlUaHJlYWRTdGF0ZSAqX1B5X0ZpbmFsaXppbmcgPSBOVUxMOwogCkBAIC0xNTEsMTEgKzE1OCwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0zOwogICAgICAgICB9CiAgICAgfQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKKyAgICAgICAgLyogT3ZlcnJpZGluZyB0aGUgc3RyZWFtIGVuY29kaW5nIGltcGxpZXMgbGVnYWN5IHN0cmVhbXMgKi8KKyAgICAgICAgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyA9IDE7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAotICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgorLyogR2xvYmFsIGluaXRpYWxpemF0aW9ucy4gIENhbiBiZSB1bmRvbmUgYnkgUHlfRmluYWxpemVFeCgpLiAgRG9uJ3QKKyAgIGNhbGwgdGhpcyB0d2ljZSB3aXRob3V0IGFuIGludGVydmVuaW5nIFB5X0ZpbmFsaXplRXgoKSBjYWxsLiAgV2hlbgogICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcwogICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQogICAgYmVlbiBjcmVhdGVkLgpAQCAtMjIzLDYgKzIzNiw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoY29kZXNldCk7CisjZWxpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorICAgIHJldHVybiBnZXRfY29kZWNfbmFtZSgiVVRGLTgiKTsKICNlbHNlCiAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTI1Miw2ICsyNjcsMTEgQEAKICAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKICAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOwogCisgICAgaW50ZXJwLT5pbXBvcnRfZnVuYyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGludGVycC0+YnVpbHRpbnMsICJfX2ltcG9ydF9fIik7CisgICAgaWYgKGludGVycC0+aW1wb3J0X2Z1bmMgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogX19pbXBvcnRfXyBub3QgZm91bmQiKTsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRfZnVuYyk7CisKICAgICAvKiBJbXBvcnQgdGhlIF9pbXAgbW9kdWxlICovCiAgICAgaW1wbW9kID0gUHlJbml0X2ltcCgpOwogICAgIGlmIChpbXBtb2QgPT0gTlVMTCkgewpAQCAtMzE0LDYgKzMzNCwxMiBAQAogICAgICAgIGNoZWNrIGl0cyB2YWx1ZSBmdXJ0aGVyLiAqLwogICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OSEFTSFNFRUQiKSkgJiYgKnAgIT0gJ1wwJykKICAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gYWRkX2ZsYWcoUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnLCBwKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElORyIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9MZWdhY3lXaW5kb3dzRlNFbmNvZGluZ0ZsYWcgPSBhZGRfZmxhZyhQeV9MZWdhY3lXaW5kb3dzRlNFbmNvZGluZ0ZsYWcsIHApOworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OTEVHQUNZV0lORE9XU1NURElPIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgPSBhZGRfZmxhZyhQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnLCBwKTsKKyNlbmRpZgogCiAgICAgX1B5UmFuZG9tX0luaXQoKTsKIApAQCAtMzI3LDExICszNTMsMTEgQEAKICAgICAodm9pZCkgUHlUaHJlYWRTdGF0ZV9Td2FwKHRzdGF0ZSk7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFdlIGNhbid0IGNhbGwgX1B5RXZhbF9GaW5pVGhyZWFkcygpIGluIFB5X0ZpbmFsaXplIGJlY2F1c2UKKyAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZUV4IGJlY2F1c2UKICAgICAgICBkZXN0cm95aW5nIHRoZSBHSUwgbWlnaHQgZmFpbCB3aGVuIGl0IGlzIGJlaW5nIHJlZmVyZW5jZWQgZnJvbQogICAgICAgIGFub3RoZXIgcnVubmluZyB0aHJlYWQgKHNlZSBpc3N1ZSAjOTkwMSkuCiAgICAgICAgSW5zdGVhZCB3ZSBkZXN0cm95IHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQgR0lMIGhlcmUsIHdoaWNoIGVuc3VyZXMKLSAgICAgICB0aGF0IHdlIGNhbiBjYWxsIFB5X0luaXRpYWxpemUgLyBQeV9GaW5hbGl6ZSBtdWx0aXBsZSB0aW1lcy4gKi8KKyAgICAgICB0aGF0IHdlIGNhbiBjYWxsIFB5X0luaXRpYWxpemUgLyBQeV9GaW5hbGl6ZUV4IG11bHRpcGxlIHRpbWVzLiAqLwogICAgIF9QeUV2YWxfRmluaVRocmVhZHMoKTsKIAogICAgIC8qIEF1dG8tdGhyZWFkLXN0YXRlIEFQSSAqLwpAQCAtNDc3LDI4ICs1MDMsMzUgQEAKICAgICByZXR1cm4gciA+IDA7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiBmbHVzaF9zdGRfZmlsZXModm9pZCkKIHsKICAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBpbnQgc3RhdHVzID0gMDsKIAogICAgIGlmIChmb3V0ICE9IE5VTEwgJiYgZm91dCAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmb3V0KSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgTlVMTCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZvdXQpOworICAgICAgICAgICAgc3RhdHVzID0gLTE7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQogCiAgICAgaWYgKGZlcnIgIT0gTlVMTCAmJiBmZXJyICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZlcnIpKSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgc3RhdHVzID0gLTE7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyogVW5kbyB0aGUgZWZmZWN0IG9mIFB5X0luaXRpYWxpemUoKS4KQEAgLTUxNSwxNCArNTQ4LDE1IEBACiAKICovCiAKLXZvaWQKLVB5X0ZpbmFsaXplKHZvaWQpCitpbnQKK1B5X0ZpbmFsaXplRXgodm9pZCkKIHsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBzdGF0dXM7CiAKICAgICB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24oKTsKIApAQCAtNTQ3LDcgKzU4MSw5IEBACiAgICAgaW5pdGlhbGl6ZWQgPSAwOwogCiAgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOworICAgIGlmIChmbHVzaF9zdGRfZmlsZXMoKSA8IDApIHsKKyAgICAgICAgc3RhdHVzID0gLTE7CisgICAgfQogCiAgICAgLyogRGlzYWJsZSBzaWduYWwgaGFuZGxpbmcgKi8KICAgICBQeU9TX0ZpbmlJbnRlcnJ1cHRzKCk7CkBAIC01NjQsMTkgKzYwMCwyMSBAQAogICAgICAqIFhYWCBidXQgSSdtIHVuY2xlYXIgb24gZXhhY3RseSBob3cgdGhhdCBvbmUgaGFwcGVucy4gIEluIGFueSBjYXNlLAogICAgICAqIFhYWCBJIGhhdmVuJ3Qgc2VlbiBhIHJlYWwtbGlmZSByZXBvcnQgb2YgZWl0aGVyIG9mIHRoZXNlLgogICAgICAqLwotICAgIFB5R0NfQ29sbGVjdCgpOworICAgIF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKTsKICNpZmRlZiBDT1VOVF9BTExPQ1MKICAgICAvKiBXaXRoIENPVU5UX0FMTE9DUywgaXQgaGVscHMgdG8gcnVuIEdDIG11bHRpcGxlIHRpbWVzOgogICAgICAgIGVhY2ggY29sbGVjdGlvbiBtaWdodCByZWxlYXNlIHNvbWUgdHlwZXMgZnJvbSB0aGUgdHlwZQogICAgICAgIGxpc3QsIHNvIHRoZXkgYmVjb21lIGdhcmJhZ2UuICovCi0gICAgd2hpbGUgKFB5R0NfQ29sbGVjdCgpID4gMCkKKyAgICB3aGlsZSAoX1B5R0NfQ29sbGVjdElmRW5hYmxlZCgpID4gMCkKICAgICAgICAgLyogbm90aGluZyAqLzsKICNlbmRpZgogICAgIC8qIERlc3Ryb3kgYWxsIG1vZHVsZXMgKi8KICAgICBQeUltcG9ydF9DbGVhbnVwKCk7CiAKICAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIChhZ2FpbiwgaW4gY2FzZSBtb3JlIHdhcyBwcmludGVkKSAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOworICAgIGlmIChmbHVzaF9zdGRfZmlsZXMoKSA8IDApIHsKKyAgICAgICAgc3RhdHVzID0gLTE7CisgICAgfQogCiAgICAgLyogQ29sbGVjdCBmaW5hbCBnYXJiYWdlLiAgVGhpcyBkaXNwb3NlcyBvZiBjeWNsZXMgY3JlYXRlZCBieQogICAgICAqIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KQEAgLTU5NCw3ICs2MzIsNyBAQAogICAgICAqIFhYWCBQeXRob24gY29kZSBnZXR0aW5nIGNhbGxlZC4KICAgICAgKi8KICNpZiAwCi0gICAgUHlHQ19Db2xsZWN0KCk7CisgICAgX1B5R0NfQ29sbGVjdElmRW5hYmxlZCgpOwogI2VuZGlmCiAKICAgICAvKiBEaXNhYmxlIHRyYWNlbWFsbG9jIGFmdGVyIGFsbCBQeXRob24gb2JqZWN0cyBoYXZlIGJlZW4gZGVzdHJveWVkLApAQCAtNjEyLDcgKzY1MCw3IEBACiAKICAgICAvKiBEZWJ1Z2dpbmcgc3R1ZmYgKi8KICNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICBkdW1wX2NvdW50cyhzdGRvdXQpOworICAgIGR1bXBfY291bnRzKHN0ZGVycik7CiAjZW5kaWYKICAgICAvKiBkdW1wIGhhc2ggc3RhdHMgKi8KICAgICBfUHlIYXNoX0ZpbmkoKTsKQEAgLTY1NSw2ICs2OTMsOCBAQAogICAgIFB5U2xpY2VfRmluaSgpOwogICAgIF9QeUdDX0ZpbmkoKTsKICAgICBfUHlSYW5kb21fRmluaSgpOworICAgIF9QeUFyZ19GaW5pKCk7CisgICAgUHlBc3luY0dlbl9GaW5pKCk7CiAKICAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KICAgICBfUHlVbmljb2RlX0ZpbmkoKTsKQEAgLTY4MCw2ICs3MjAsNyBAQAogCiAgICAgLyogRGVsZXRlIGN1cnJlbnQgdGhyZWFkLiBBZnRlciB0aGlzLCBtYW55IEMgQVBJIGNhbGxzIGJlY29tZSBjcmFzaHkuICovCiAgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOworCiAgICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOwogCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwpAQCAtNjkwLDEyICs3MzEsMjIgQEAKICAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05EVU1QUkVGUyIpKQogICAgICAgICBfUHlfUHJpbnRSZWZlcmVuY2VBZGRyZXNzZXMoc3RkZXJyKTsKICNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQotICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworI2lmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICBpZiAoX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCgpKSB7CisgICAgICAgIGNoYXIgKm9wdCA9IFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKTsKKyAgICAgICAgaWYgKG9wdCAhPSBOVUxMICYmICpvcHQgIT0gJ1wwJykKKyAgICAgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgfQogI2VuZGlmCiAKICAgICBjYWxsX2xsX2V4aXRmdW5jcygpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQKK1B5X0ZpbmFsaXplKHZvaWQpCit7CisgICAgUHlfRmluYWxpemVFeCgpOwogfQogCiAvKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgaW50ZXJwcmV0ZXIgYW5kIHRocmVhZCwgYW5kIHJldHVybiB0aGUKQEAgLTcyMSw2ICs3NzIsMTIgQEAKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9OZXdJbnRlcnByZXRlcjogY2FsbCBQeV9Jbml0aWFsaXplIGZpcnN0Iik7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIElzc3VlICMxMDkxNSwgIzE1NzUxOiBUaGUgR0lMIEFQSSBkb2Vzbid0IHdvcmsgd2l0aCBtdWx0aXBsZQorICAgICAgIGludGVycHJldGVyczogZGlzYWJsZSBQeUdJTFN0YXRlX0NoZWNrKCkuICovCisgICAgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCA9IDA7CisjZW5kaWYKKwogICAgIGludGVycCA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcoKTsKICAgICBpZiAoaW50ZXJwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzc3LDcgKzgzNCw3IEBACiAKICAgICAgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOworICAgICAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CiAgICAgICAgIGluaXRtYWluKGludGVycCk7CiAgICAgICAgIGlmICghUHlfTm9TaXRlRmxhZykKICAgICAgICAgICAgIGluaXRzaXRlKCk7CkBAIC04MDMsNyArODYwLDcgQEAKICAgIGZyYW1lcywgYW5kIHRoYXQgaXQgaXMgaXRzIGludGVycHJldGVyJ3Mgb25seSByZW1haW5pbmcgdGhyZWFkLgogICAgSXQgaXMgYSBmYXRhbCBlcnJvciB0byB2aW9sYXRlIHRoZXNlIGNvbnN0cmFpbnRzLgogCi0gICAoUHlfRmluYWxpemUoKSBkb2Vzbid0IGhhdmUgdGhlc2UgY29uc3RyYWludHMgLS0gaXQgemFwcworICAgKFB5X0ZpbmFsaXplRXgoKSBkb2Vzbid0IGhhdmUgdGhlc2UgY29uc3RyYWludHMgLS0gaXQgemFwcwogICAgZXZlcnl0aGluZywgcmVnYXJkbGVzcy4pCiAKICAgIExvY2tpbmc6IGFzIGFib3ZlLgpAQCAtODgxLDExICs5MzgsMTcgQEAKIHN0YXRpYyB2b2lkCiBpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKmQsICpsb2FkZXI7CisgICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyLCAqYW5uX2RpY3Q7CiAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX19tYWluX18iKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW4ndCBjcmVhdGUgX19tYWluX18gbW9kdWxlIik7CiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CisgICAgYW5uX2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKChhbm5fZGljdCA9PSBOVUxMKSB8fAorICAgICAgICAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fYW5ub3RhdGlvbnNfXyIsIGFubl9kaWN0KSA8IDApKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fYW5ub3RhdGlvbnNfXyIpOworICAgIH0KKyAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOwogICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7CiAgICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7CkBAIC05MjEsNiArOTg0LDE4IEBACiB7CiAgICAgUHlPYmplY3QgKmNvZGVjOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChQeV9MZWdhY3lXaW5kb3dzRlNFbmNvZGluZ0ZsYWcpCisgICAgeworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gIm1iY3MiOworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJyZXBsYWNlIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzID0gInN1cnJvZ2F0ZXBhc3MiOworICAgIH0KKyNlbHNlCiAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKICAgICB7CiAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBnZXRfbG9jYWxlX2VuY29kaW5nKCk7CkBAIC05MzEsNiArMTAwNiw3IEBACiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyNlbmRpZgogCiAgICAgLyogdGhlIGVuY29kaW5nIGlzIG1iY3MsIHV0Zi04IG9yIGFzY2lpICovCiAgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CkBAIC05NjksOSArMTA0NSwxMiBAQAogaXNfdmFsaWRfZmQoaW50IGZkKQogewogICAgIGludCBmZDI7Ci0gICAgaWYgKGZkIDwgMCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkKKyAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXR1cm4gMDsKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgLyogUHJlZmVyIGR1cCgpIG92ZXIgZnN0YXQoKS4gZnN0YXQoKSBjYW4gcmVxdWlyZSBpbnB1dC9vdXRwdXQgd2hlcmVhcworICAgICAgIGR1cCgpIGRvZXNuJ3QsIHRoZXJlIGlzIGEgbG93IHJpc2sgb2YgRU1GSUxFL0VORklMRSBhdCBQeXRob24KKyAgICAgICBzdGFydHVwLiAqLwogICAgIGZkMiA9IGR1cChmZCk7CiAgICAgaWYgKGZkMiA+PSAwKQogICAgICAgICBjbG9zZShmZDIpOwpAQCAtOTgyLDggKzEwNjEsOCBAQAogLyogcmV0dXJucyBQeV9Ob25lIGlmIHRoZSBmZCBpcyBub3QgdmFsaWQgKi8KIHN0YXRpYyBQeU9iamVjdCoKIGNyZWF0ZV9zdGRpbyhQeU9iamVjdCogaW8sCi0gICAgaW50IGZkLCBpbnQgd3JpdGVfbW9kZSwgY2hhciogbmFtZSwKLSAgICBjaGFyKiBlbmNvZGluZywgY2hhciogZXJyb3JzKQorICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGVycm9ycykKIHsKICAgICBQeU9iamVjdCAqYnVmID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJhdyA9IE5VTEwsICpyZXM7CiAgICAgY29uc3QgY2hhciogbW9kZTsKQEAgLTEwMTMsNyArMTA5Miw4IEBACiAgICAgICAgIG1vZGUgPSAicmIiOwogICAgIGJ1ZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJpc2lPT09pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLCBtb2RlLCBidWZmZXJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCBQeV9Ob25lLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIC8qIGVuY29kaW5nLCBlcnJvcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIDApOyAvKiBuZXdsaW5lLCBjbG9zZWZkICovCiAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xMDI4LDEwICsxMTA4LDE2IEBACiAgICAgICAgIFB5X0lOQ1JFRihyYXcpOwogICAgIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBXaW5kb3dzIGNvbnNvbGUgSU8gaXMgYWx3YXlzIFVURi04IGVuY29kZWQgKi8KKyAgICBpZiAoUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKHJhdykpCisgICAgICAgIGVuY29kaW5nID0gInV0Zi04IjsKKyNlbmRpZgorCiAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogICAgIGlmICh0ZXh0ID09IE5VTEwgfHwgX1B5T2JqZWN0X1NldEF0dHJJZChyYXcsICZQeUlkX25hbWUsIHRleHQpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfaXNhdHR5LCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlzYXR0eSA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtMTI0MywyNSArMTMyOSwxMSBAQAogc3RhdGljIHZvaWQKIF9QeV9GYXRhbEVycm9yX0R1bXBUcmFjZWJhY2tzKGludCBmZCkKIHsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkgd29ya3MgZXZlbiBpZiB0aGUgR0lMIHdhcyByZWxlYXNlZCAqLwotICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7Ci0jZWxzZQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0jZW5kaWYKLSAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5Ci0gICAgICAgICAqIGZyYW1lcyAqLwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKICAgICBmZmx1c2goc3RkZXJyKTsKIAogICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCi0gICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKKyAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIE5VTEwsIE5VTEwpOwogfQogCiAvKiBQcmludCB0aGUgY3VycmVudCBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKQEAgLTEzMTYsNyArMTM4OCw3IEBACiAgICAgUHlfWERFQ1JFRih0Yik7CiAKICAgICAvKiBzeXMuc3RkZXJyIG1heSBiZSBidWZmZXJlZDogY2FsbCBzeXMuc3RkZXJyLmZsdXNoKCkgKi8KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTEzODgsNyArMTQ2MCw3IEBACiAvKiBDbGVhbiB1cCBhbmQgZXhpdCAqLwogCiAjaWZkZWYgV0lUSF9USFJFQUQKLSNpbmNsdWRlICJweXRocmVhZC5oIgorIyAgaW5jbHVkZSAicHl0aHJlYWQuaCIKICNlbmRpZgogCiBzdGF0aWMgdm9pZCAoKnB5ZXhpdGZ1bmMpKHZvaWQpID0gTlVMTDsKQEAgLTE0MjYsNyArMTQ5OCw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKICAgICB9CkBAIC0xNDYyLDcgKzE1MzQsOSBAQAogdm9pZAogUHlfRXhpdChpbnQgc3RzKQogewotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgc3RzID0gMTIwOworICAgIH0KIAogICAgIGV4aXQoc3RzKTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0YXRlLmMgYi9QeXRob24vcHlzdGF0ZS5jCmluZGV4IDI0ZTIwYzMuLjY1YzI0NGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0YXRlLmMKKysrIGIvUHl0aG9uL3B5c3RhdGUuYwpAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgR0VUX1RTVEFURSgpIFwKICAgICAoKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KSkKICNkZWZpbmUgU0VUX1RTVEFURSh2YWx1ZSkgXAotICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCwgKFB5X3VpbnRwdHJfdCkodmFsdWUpKQorICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCwgKHVpbnRwdHJfdCkodmFsdWUpKQogI2RlZmluZSBHRVRfSU5URVJQX1NUQVRFKCkgXAogICAgIChHRVRfVFNUQVRFKCktPmludGVycCkKIApAQCAtMjUsNyArMjUsNyBAQAogI2lmZGVmIEhBVkVfRExGQ05fSAogI2luY2x1ZGUgPGRsZmNuLmg+CiAjZW5kaWYKLSNpZm5kZWYgUlRMRF9MQVpZCisjaWYgIUhBVkVfREVDTF9SVExEX0xBWlkKICNkZWZpbmUgUlRMRF9MQVpZIDEKICNlbmRpZgogI2VuZGlmCkBAIC0zNCw2ICszNCw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitpbnQgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCA9IDE7CisKICNpZmRlZiBXSVRIX1RIUkVBRAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCiBzdGF0aWMgUHlUaHJlYWRfdHlwZV9sb2NrIGhlYWRfbXV0ZXggPSBOVUxMOyAvKiBQcm90ZWN0cyBpbnRlcnAtPnRzdGF0ZV9oZWFkICovCkBAIC00NSw3ICs0Nyw3IEBACiAgICBHSUxTdGF0ZSBpbXBsZW1lbnRhdGlvbgogKi8KIHN0YXRpYyBQeUludGVycHJldGVyU3RhdGUgKmF1dG9JbnRlcnByZXRlclN0YXRlID0gTlVMTDsKLXN0YXRpYyBpbnQgYXV0b1RMU2tleSA9IDA7CitzdGF0aWMgaW50IGF1dG9UTFNrZXkgPSAtMTsKICNlbHNlCiAjZGVmaW5lIEhFQURfSU5JVCgpIC8qIE5vdGhpbmcgKi8KICNkZWZpbmUgSEVBRF9MT0NLKCkgLyogTm90aGluZyAqLwpAQCAtODgsMTYgKzkwLDE1IEBACiAgICAgICAgIGludGVycC0+Y29kZWNzX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBOVUxMOworICAgICAgICBpbnRlcnAtPmltcG9ydF9mdW5jID0gTlVMTDsKKyAgICAgICAgaW50ZXJwLT5ldmFsX2ZyYW1lID0gX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0OwogI2lmZGVmIEhBVkVfRExPUEVOCi0jaWZkZWYgUlRMRF9OT1cKKyNpZiBIQVZFX0RFQ0xfUlRMRF9OT1cKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTk9XOwogI2Vsc2UKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTEFaWTsKICNlbmRpZgogI2VuZGlmCi0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgaW50ZXJwLT50c2NkdW1wID0gMDsKLSNlbmRpZgogCiAgICAgICAgIEhFQURfTE9DSygpOwogICAgICAgICBpbnRlcnAtPm5leHQgPSBpbnRlcnBfaGVhZDsKQEAgLTEyNiw2ICsxMjcsNyBAQAogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnMpOwogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnNfY29weSk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5pbXBvcnRsaWIpOworICAgIFB5X0NMRUFSKGludGVycC0+aW1wb3J0X2Z1bmMpOwogfQogCiAKQEAgLTIyMiw2ICsyMjQsMTAgQEAKIAogICAgICAgICB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyID0gTlVMTDsKICAgICAgICAgdHN0YXRlLT5pbl9jb3JvdXRpbmVfd3JhcHBlciA9IDA7CisgICAgICAgIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCA9IDA7CisKKyAgICAgICAgdHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyID0gTlVMTDsKKyAgICAgICAgdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyID0gTlVMTDsKIAogICAgICAgICBpZiAoaW5pdCkKICAgICAgICAgICAgIF9QeVRocmVhZFN0YXRlX0luaXQodHN0YXRlKTsKQEAgLTQwMiw2ICs0MDgsOCBAQAogICAgIFB5X0NMRUFSKHRzdGF0ZS0+Y190cmFjZW9iaik7CiAKICAgICBQeV9DTEVBUih0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyKTsKKyAgICBQeV9DTEVBUih0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXIpOworICAgIFB5X0NMRUFSKHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplcik7CiB9CiAKIApAQCAtNDUxLDEwICs0NTksMTAgQEAKICAgICBpZiAodHN0YXRlID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAiUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50OiBubyBjdXJyZW50IHRzdGF0ZSIpOwotICAgIFNFVF9UU1RBVEUoTlVMTCk7CisgICAgdHN0YXRlX2RlbGV0ZV9jb21tb24odHN0YXRlKTsKICAgICBpZiAoYXV0b0ludGVycHJldGVyU3RhdGUgJiYgUHlUaHJlYWRfZ2V0X2tleV92YWx1ZShhdXRvVExTa2V5KSA9PSB0c3RhdGUpCiAgICAgICAgIFB5VGhyZWFkX2RlbGV0ZV9rZXlfdmFsdWUoYXV0b1RMU2tleSk7Ci0gICAgdHN0YXRlX2RlbGV0ZV9jb21tb24odHN0YXRlKTsKKyAgICBTRVRfVFNUQVRFKE5VTEwpOwogICAgIFB5RXZhbF9SZWxlYXNlTG9jaygpOwogfQogI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCkBAIC02OTgsNyArNzA2LDcgQEAKIH0KIAogLyogSW50ZXJuYWwgaW5pdGlhbGl6YXRpb24vZmluYWxpemF0aW9uIGZ1bmN0aW9ucyBjYWxsZWQgYnkKLSAgIFB5X0luaXRpYWxpemUvUHlfRmluYWxpemUKKyAgIFB5X0luaXRpYWxpemUvUHlfRmluYWxpemVFeAogKi8KIHZvaWQKIF9QeUdJTFN0YXRlX0luaXQoUHlJbnRlcnByZXRlclN0YXRlICppLCBQeVRocmVhZFN0YXRlICp0KQpAQCAtNzE0LDEwICs3MjIsMTcgQEAKICAgICBfUHlHSUxTdGF0ZV9Ob3RlVGhyZWFkU3RhdGUodCk7CiB9CiAKK1B5SW50ZXJwcmV0ZXJTdGF0ZSAqCitfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKHZvaWQpCit7CisgICAgcmV0dXJuIGF1dG9JbnRlcnByZXRlclN0YXRlOworfQorCiB2b2lkCiBfUHlHSUxTdGF0ZV9GaW5pKHZvaWQpCiB7CiAgICAgUHlUaHJlYWRfZGVsZXRlX2tleShhdXRvVExTa2V5KTsKKyAgICBhdXRvVExTa2V5ID0gLTE7CiAgICAgYXV0b0ludGVycHJldGVyU3RhdGUgPSBOVUxMOwogfQogCkBAIC03ODYsOCArODAxLDE5IEBACiBpbnQKIFB5R0lMU3RhdGVfQ2hlY2sodm9pZCkKIHsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBHRVRfVFNUQVRFKCk7Ci0gICAgcmV0dXJuIHRzdGF0ZSAmJiAodHN0YXRlID09IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkpOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGlmICghX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoYXV0b1RMU2tleSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICB0c3RhdGUgPSBHRVRfVFNUQVRFKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAodHN0YXRlID09IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkpOwogfQogCiBQeUdJTFN0YXRlX1NUQVRFCmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJ0b2QuYyBiL1B5dGhvbi9weXN0cnRvZC5jCmluZGV4IDIwOWM5MDguLjY0ZDBjNTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0cnRvZC5jCisrKyBiL1B5dGhvbi9weXN0cnRvZC5jCkBAIC0zNzAsNiArMzcwLDcyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogUmVtb3ZlIHVuZGVyc2NvcmVzIHRoYXQgZm9sbG93IHRoZSB1bmRlcnNjb3JlIHBsYWNlbWVudCBydWxlIGZyb20KKyAgIHRoZSBzdHJpbmcgYW5kIHRoZW4gY2FsbCB0aGUgYGlubmVyZnVuY2AgZnVuY3Rpb24gb24gdGhlIHJlc3VsdC4KKyAgIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgb2JqZWN0IG9yIE5VTEwgb24gZXhjZXB0aW9uLgorCisgICBgd2hhdGAgaXMgdXNlZCBmb3IgdGhlIGVycm9yIG1lc3NhZ2UgZW1pdHRlZCB3aGVuIHVuZGVyc2NvcmVzIGFyZSBkZXRlY3RlZAorICAgdGhhdCBkb24ndCBmb2xsb3cgdGhlIHJ1bGUuIGBhcmdgIGlzIGFuIG9wYXF1ZSBwb2ludGVyIHBhc3NlZCB0byB0aGUgaW5uZXIKKyAgIGZ1bmN0aW9uLgorCisgICBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHVuZGVyc2NvcmUtYWdub3N0aWMgY29udmVyc2lvbiBmb3IgZmxvYXRzCisgICBhbmQgY29tcGxleCBudW1iZXJzLgorKi8KK1B5T2JqZWN0ICoKK19QeV9zdHJpbmdfdG9fbnVtYmVyX3dpdGhfdW5kZXJzY29yZXMoCisgICAgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBvcmlnX2xlbiwgY29uc3QgY2hhciAqd2hhdCwgUHlPYmplY3QgKm9iaiwgdm9pZCAqYXJnLAorICAgIFB5T2JqZWN0ICooKmlubmVyZnVuYykoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LCB2b2lkICopKQoreworICAgIGNoYXIgcHJldjsKKyAgICBjb25zdCBjaGFyICpwLCAqbGFzdDsKKyAgICBjaGFyICpkdXAsICplbmQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChzdHJjaHIocywgJ18nKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBpbm5lcmZ1bmMocywgb3JpZ19sZW4sIGFyZyk7CisgICAgfQorCisgICAgZHVwID0gUHlNZW1fTWFsbG9jKG9yaWdfbGVuICsgMSk7CisgICAgZW5kID0gZHVwOworICAgIHByZXYgPSAnXDAnOworICAgIGxhc3QgPSBzICsgb3JpZ19sZW47CisgICAgZm9yIChwID0gczsgKnA7IHArKykgeworICAgICAgICBpZiAoKnAgPT0gJ18nKSB7CisgICAgICAgICAgICAvKiBVbmRlcnNjb3JlcyBhcmUgb25seSBhbGxvd2VkIGFmdGVyIGRpZ2l0cy4gKi8KKyAgICAgICAgICAgIGlmICghKHByZXYgPj0gJzAnICYmIHByZXYgPD0gJzknKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqZW5kKysgPSAqcDsKKyAgICAgICAgICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBvbmx5IGFsbG93ZWQgYmVmb3JlIGRpZ2l0cy4gKi8KKyAgICAgICAgICAgIGlmIChwcmV2ID09ICdfJyAmJiAhKCpwID49ICcwJyAmJiAqcCA8PSAnOScpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcmV2ID0gKnA7CisgICAgfQorICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBub3QgYWxsb3dlZCBhdCB0aGUgZW5kLiAqLworICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAvKiBObyBlbWJlZGRlZCBOVUxzIGFsbG93ZWQuICovCisgICAgaWYgKHAgIT0gbGFzdCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAqZW5kID0gJ1wwJzsKKyAgICByZXN1bHQgPSBpbm5lcmZ1bmMoZHVwLCBlbmQgLSBkdXAsIGFyZyk7CisgICAgUHlNZW1fRnJlZShkdXApOworICAgIHJldHVybiByZXN1bHQ7CisKKyAgZXJyb3I6CisgICAgUHlNZW1fRnJlZShkdXApOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorCQkgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byAlczogIgorCQkgIiVSIiwgd2hhdCwgb2JqKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKIAogLyogR2l2ZW4gYSBzdHJpbmcgdGhhdCBtYXkgaGF2ZSBhIGRlY2ltYWwgcG9pbnQgaW4gdGhlIGN1cnJlbnQKQEAgLTg4MSwxMiArOTQ3LDEyIEBACiAjZGVmaW5lIE9GU19FIDIKIAogLyogVGhlIGxlbmd0aHMgb2YgdGhlc2UgYXJlIGtub3duIHRvIHRoZSBjb2RlIGJlbG93LCBzbyBkb24ndCBjaGFuZ2UgdGhlbSAqLwotc3RhdGljIGNoYXIgKmxjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbGNfZmxvYXRfc3RyaW5nc1tdID0gewogICAgICJpbmYiLAogICAgICJuYW4iLAogICAgICJlIiwKIH07Ci1zdGF0aWMgY2hhciAqdWNfZmxvYXRfc3RyaW5nc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB1Y19mbG9hdF9zdHJpbmdzW10gPSB7CiAgICAgIklORiIsCiAgICAgIk5BTiIsCiAgICAgIkUiLApAQCAtOTI1LDcgKzk5MSw4IEBACiBmb3JtYXRfZmxvYXRfc2hvcnQoZG91YmxlIGQsIGNoYXIgZm9ybWF0X2NvZGUsCiAgICAgICAgICAgICAgICAgICAgaW50IG1vZGUsIGludCBwcmVjaXNpb24sCiAgICAgICAgICAgICAgICAgICAgaW50IGFsd2F5c19hZGRfc2lnbiwgaW50IGFkZF9kb3RfMF9pZl9pbnRlZ2VyLAotICAgICAgICAgICAgICAgICAgIGludCB1c2VfYWx0X2Zvcm1hdHRpbmcsIGNoYXIgKipmbG9hdF9zdHJpbmdzLCBpbnQgKnR5cGUpCisgICAgICAgICAgICAgICAgICAgaW50IHVzZV9hbHRfZm9ybWF0dGluZywgY29uc3QgY2hhciAqIGNvbnN0ICpmbG9hdF9zdHJpbmdzLAorICAgICAgICAgICAgICAgICAgIGludCAqdHlwZSkKIHsKICAgICBjaGFyICpidWYgPSBOVUxMOwogICAgIGNoYXIgKnAgPSBOVUxMOwpAQCAtMTE3Niw3ICsxMjQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnR5cGUpCiB7Ci0gICAgY2hhciAqKmZsb2F0X3N0cmluZ3MgPSBsY19mbG9hdF9zdHJpbmdzOworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqZmxvYXRfc3RyaW5ncyA9IGxjX2Zsb2F0X3N0cmluZ3M7CiAgICAgaW50IG1vZGU7CiAKICAgICAvKiBWYWxpZGF0ZSBmb3JtYXRfY29kZSwgYW5kIG1hcCB1cHBlciBhbmQgbG93ZXIgY2FzZS4gQ29tcHV0ZSB0aGUKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRob25ydW4uYyBiL1B5dGhvbi9weXRob25ydW4uYwppbmRleCA3ZmJmMDZlLi4xZmM4NmMwIDEwMDY0NAotLS0gYS9QeXRob24vcHl0aG9ucnVuLmMKKysrIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCkBAIC00MzEsNyArNDMxLDcgQEAKIHBhcnNlX3N5bnRheF9lcnJvcihQeU9iamVjdCAqZXJyLCBQeU9iamVjdCAqKm1lc3NhZ2UsIFB5T2JqZWN0ICoqZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgaW50ICpsaW5lbm8sIGludCAqb2Zmc2V0LCBQeU9iamVjdCAqKnRleHQpCiB7Ci0gICAgbG9uZyBob2xkOworICAgIGludCBob2xkOwogICAgIFB5T2JqZWN0ICp2OwogICAgIF9QeV9JREVOVElGSUVSKG1zZyk7CiAgICAgX1B5X0lERU5USUZJRVIoZmlsZW5hbWUpOwpAQCAtNDY0LDExICs0NjQsMTEgQEAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX2xpbmVubyk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgaG9sZCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgaG9sZCA9IF9QeUxvbmdfQXNJbnQodik7CiAgICAgUHlfREVDUkVGKHYpOwogICAgIGlmIChob2xkIDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgKmxpbmVubyA9IChpbnQpaG9sZDsKKyAgICAqbGluZW5vID0gaG9sZDsKIAogICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfb2Zmc2V0KTsKICAgICBpZiAoIXYpCkBAIC00NzcsMTEgKzQ3NywxMSBAQAogICAgICAgICAqb2Zmc2V0ID0gLTE7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9IGVsc2UgewotICAgICAgICBob2xkID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICAgICAgaG9sZCA9IF9QeUxvbmdfQXNJbnQodik7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgaWYgKGhvbGQgPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgICAgICpvZmZzZXQgPSAoaW50KWhvbGQ7CisgICAgICAgICpvZmZzZXQgPSBob2xkOwogICAgIH0KIAogICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfdGV4dCk7CkBAIC02MzAsOCArNjMwLDEzIEBACiAgICAgfQogICAgIGhvb2sgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfZXhjZXB0aG9vayk7CiAgICAgaWYgKGhvb2spIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX1BhY2soMywgZXhjZXB0aW9uLCB2LCB0Yik7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdChob29rLCBhcmdzKTsKKyAgICAgICAgUHlPYmplY3QqIHN0YWNrWzNdOworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgICAgIHN0YWNrWzBdID0gZXhjZXB0aW9uOworICAgICAgICBzdGFja1sxXSA9IHY7CisgICAgICAgIHN0YWNrWzJdID0gdGI7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChob29rLCBzdGFjaywgMyk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKmV4Y2VwdGlvbjIsICp2MiwgKnRiMjsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5c3RlbUV4aXQpKSB7CkBAIC02NjAsNyArNjY1LDYgQEAKICAgICAgICAgICAgIFB5X1hERUNSRUYodGIyKTsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoInN5cy5leGNlcHRob29rIGlzIG1pc3NpbmdcbiIpOwogICAgICAgICBQeUVycl9EaXNwbGF5KGV4Y2VwdGlvbiwgdiwgdGIpOwpAQCAtNzkxLDExICs3OTUsMTEgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKmNhdXNlX21lc3NhZ2UgPQorc3RhdGljIGNvbnN0IGNoYXIgY2F1c2VfbWVzc2FnZVtdID0KICAgICAiXG5UaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICIKICAgICAib2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiI7CiAKLXN0YXRpYyBjb25zdCBjaGFyICpjb250ZXh0X21lc3NhZ2UgPQorc3RhdGljIGNvbnN0IGNoYXIgY29udGV4dF9tZXNzYWdlW10gPQogICAgICJcbkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCAiCiAgICAgImFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4iOwogCkBAIC05NDYsNyArOTUwLDcgQEAKIAogICAgIGYgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyKTsKICAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTk1NCw3ICs5NTgsNyBAQAogICAgIH0KICAgICBmID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZG91dCk7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC0xMTQ0LDggKzExNDgsOCBAQAogCiBtb2RfdHkKIFB5UGFyc2VyX0FTVEZyb21GaWxlT2JqZWN0KEZJTEUgKmZwLCBQeU9iamVjdCAqZmlsZW5hbWUsIGNvbnN0IGNoYXIqIGVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY2hhciAqcHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNvbnN0IGNoYXIgKnBzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgbW9kX3R5IG1vZDsKQEAgLTExNzcsOCArMTE4MSw4IEBACiAKIG1vZF90eQogUHlQYXJzZXJfQVNURnJvbUZpbGUoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lX3N0ciwgY29uc3QgY2hhciogZW5jLAotICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBjaGFyICpwczEsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICpwczIsIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsIGludCAqZXJyY29kZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY29uc3QgY2hhciAqcHMxLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKIHsKICAgICBtb2RfdHkgbW9kOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGltZS5jIGIvUHl0aG9uL3B5dGltZS5jCmluZGV4IDdmNjU4MjQuLjAyZWY4ZWUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRpbWUuYworKysgYi9QeXRob24vcHl0aW1lLmMKQEAgLTcsNiArNywxMSBAQAogI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+ICAgLyogbWFjaF9hYnNvbHV0ZV90aW1lKCksIG1hY2hfdGltZWJhc2VfaW5mbygpICovCiAjZW5kaWYKIAorI2RlZmluZSBfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyhhLCBiKSBcCisgICAgKGFzc2VydChiID4gMCksIFwKKyAgICAgKF9QeVRpbWVfdCkoYSkgPCBfUHlUaW1lX01JTiAvIChfUHlUaW1lX3QpKGIpIFwKKyAgICAgfHwgX1B5VGltZV9NQVggLyAoX1B5VGltZV90KShiKSA8IChfUHlUaW1lX3QpKGEpKQorCiAvKiBUbyBtaWxsaXNlY29uZCAoMTBeLTMpICovCiAjZGVmaW5lIFNFQ19UT19NUyAxMDAwCiAKQEAgLTMzLDEyICszOCwxMiBAQAogdGltZV90CiBfUHlMb25nX0FzVGltZV90KFB5T2JqZWN0ICpvYmopCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHZhbDsKKyNpZiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICBsb25nIGxvbmcgdmFsOwogICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7CiAjZWxzZQogICAgIGxvbmcgdmFsOwotICAgIGFzc2VydChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOwogICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmcob2JqKTsKICNlbmRpZgogICAgIGlmICh2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtNTIsNTggKzU3LDkxIEBACiBQeU9iamVjdCAqCiBfUHlMb25nX0Zyb21UaW1lX3QodGltZV90IHQpCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKKyNpZiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXQpOwogI2Vsc2UKLSAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOwogI2VuZGlmCiB9CiAKKy8qIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyCisgICAoX1B5VGltZV9ST1VORF9IQUxGX0VWRU4pICovCitzdGF0aWMgZG91YmxlCitfUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZG91YmxlIHgpCit7CisgICAgZG91YmxlIHJvdW5kZWQgPSByb3VuZCh4KTsKKyAgICBpZiAoZmFicyh4LXJvdW5kZWQpID09IDAuNSkKKyAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCisgICAgICAgIHJvdW5kZWQgPSAyLjAqcm91bmQoeC8yLjApOworICAgIHJldHVybiByb3VuZGVkOworfQorCitzdGF0aWMgZG91YmxlCitfUHlUaW1lX1JvdW5kKGRvdWJsZSB4LCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgZCA9IHg7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBkID0gX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGQpOworICAgIGVsc2UgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgZCA9IGNlaWwoZCk7CisgICAgZWxzZQorICAgICAgICBkID0gZmxvb3IoZCk7CisgICAgcmV0dXJuIGQ7Cit9CisKK3N0YXRpYyBpbnQKK19QeVRpbWVfRG91YmxlVG9EZW5vbWluYXRvcihkb3VibGUgZCwgdGltZV90ICpzZWMsIGxvbmcgKm51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVub21pbmF0b3IsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICBkb3VibGUgaW50cGFydCwgZXJyOworICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OworCisgICAgZmxvYXRwYXJ0ID0gbW9kZihkLCAmaW50cGFydCk7CisKKyAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7CisgICAgZmxvYXRwYXJ0ID0gX1B5VGltZV9Sb3VuZChmbG9hdHBhcnQsIHJvdW5kKTsKKyAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7CisgICAgICAgIGZsb2F0cGFydCAtPSBkZW5vbWluYXRvcjsKKyAgICAgICAgaW50cGFydCArPSAxLjA7CisgICAgfQorICAgIGVsc2UgaWYgKGZsb2F0cGFydCA8IDApIHsKKyAgICAgICAgZmxvYXRwYXJ0ICs9IGRlbm9taW5hdG9yOworICAgICAgICBpbnRwYXJ0IC09IDEuMDsKKyAgICB9CisgICAgYXNzZXJ0KDAuMCA8PSBmbG9hdHBhcnQgJiYgZmxvYXRwYXJ0IDwgZGVub21pbmF0b3IpOworCisgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKKyAgICAqbnVtZXJhdG9yID0gKGxvbmcpZmxvYXRwYXJ0OworCisgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKKyAgICBpZiAoZXJyIDw9IC0xLjAgfHwgZXJyID49IDEuMCkgeworICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludAogX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpudW1lcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7Ci0gICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IExPTkdfTUFYKTsKKyAgICBhc3NlcnQoZGVub21pbmF0b3IgPD0gKGRvdWJsZSlMT05HX01BWCk7CisKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7Ci0gICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLwotICAgICAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OwotCi0gICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOwotICAgICAgICBpZiAoZmxvYXRwYXJ0IDwgMCkgewotICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMS4wICsgZmxvYXRwYXJ0OwotICAgICAgICAgICAgaW50cGFydCAtPSAxLjA7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKLSAgICAgICAgICAgIGZsb2F0cGFydCA9IGNlaWwoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgIGlmIChmbG9hdHBhcnQgPj0gZGVub21pbmF0b3IpIHsKLSAgICAgICAgICAgICAgICBmbG9hdHBhcnQgPSAwLjA7Ci0gICAgICAgICAgICAgICAgaW50cGFydCArPSAxLjA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmbG9hdHBhcnQgPSBmbG9vcihmbG9hdHBhcnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKLSAgICAgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKLSAgICAgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKLSAgICAgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRvdWJsZSBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOworICAgICAgICByZXR1cm4gX1B5VGltZV9Eb3VibGVUb0Rlbm9taW5hdG9yKGQsIHNlYywgbnVtZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbm9taW5hdG9yLCByb3VuZCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAqc2VjID0gX1B5TG9uZ19Bc1RpbWVfdChvYmopOworICAgICAgICAqbnVtZXJhdG9yID0gMDsKICAgICAgICAgaWYgKCpzZWMgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAqbnVtZXJhdG9yID0gMDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQpAQCAtMTEyLDEzICsxNTAsMTIgQEAKIF9QeVRpbWVfT2JqZWN0VG9UaW1lX3QoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7CisgICAgICAgIGRvdWJsZSBpbnRwYXJ0LCBlcnI7CisgICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICAgICAgdm9sYXRpbGUgZG91YmxlIGQ7CiAKICAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKLSAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKLSAgICAgICAgICAgIGQgPSBjZWlsKGQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkID0gZmxvb3IoZCk7CisgICAgICAgIGQgPSBfUHlUaW1lX1JvdW5kKGQsIHJvdW5kKTsKICAgICAgICAgKHZvaWQpbW9kZihkLCAmaW50cGFydCk7CiAKICAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKQEAgLTE0MSwxNCArMTc4LDIwIEBACiBfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKm5zZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewotICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIG5zZWMsIDFlOSwgcm91bmQpOworICAgIGludCByZXM7CisgICAgcmVzID0gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTksIHJvdW5kKTsKKyAgICBhc3NlcnQoMCA8PSAqbnNlYyAmJiAqbnNlYyA8IFNFQ19UT19OUyk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogaW50CiBfUHlUaW1lX09iamVjdFRvVGltZXZhbChQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqdXNlYywKICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKLSAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCB1c2VjLCAxZTYsIHJvdW5kKTsKKyAgICBpbnQgcmVzOworICAgIHJlcyA9IF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2LCByb3VuZCk7CisgICAgYXNzZXJ0KDAgPD0gKnVzZWMgJiYgKnVzZWMgPCBTRUNfVE9fVVMpOworICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNjIsMjEgKzIwNSwyNCBAQAogX1B5VGltZV9Gcm9tU2Vjb25kcyhpbnQgc2Vjb25kcykKIHsKICAgICBfUHlUaW1lX3QgdDsKKyAgICB0ID0gKF9QeVRpbWVfdClzZWNvbmRzOwogICAgIC8qIGVuc3VyZSB0aGF0IGludGVnZXIgb3ZlcmZsb3cgY2Fubm90IGhhcHBlbiwgaW50IHR5cGUgc2hvdWxkIGhhdmUgMzIKICAgICAgICBiaXRzLCB3aGVyZWFzIF9QeVRpbWVfdCB0eXBlIGhhcyBhdCBsZWFzdCA2NCBiaXRzIChTRUNfVE9fTVMgdGFrZXMgMzAKICAgICAgICBiaXRzKS4gKi8KLSAgICBhc3NlcnQoKHNlY29uZHMgPj0gMCAmJiBzZWNvbmRzIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQotICAgICAgICAgICB8fCAoc2Vjb25kcyA8IDAgJiYgc2Vjb25kcyA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOwotICAgIHQgPSAoX1B5VGltZV90KXNlY29uZHMgKiBTRUNfVE9fTlM7CisgICAgUHlfQlVJTERfQVNTRVJUKElOVF9NQVggPD0gX1B5VGltZV9NQVggLyBTRUNfVE9fTlMpOworICAgIFB5X0JVSUxEX0FTU0VSVChJTlRfTUlOID49IF9QeVRpbWVfTUlOIC8gU0VDX1RPX05TKTsKKyAgICBhc3NlcnQoKHQgPj0gMCAmJiB0IDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQorICAgICAgICAgICB8fCAodCA8IDAgJiYgdCA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOworICAgIHQgKj0gU0VDX1RPX05TOwogICAgIHJldHVybiB0OwogfQogCiBfUHlUaW1lX3QKLV9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKFBZX0xPTkdfTE9ORyBucykKK19QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKGxvbmcgbG9uZyBucykKIHsKICAgICBfUHlUaW1lX3QgdDsKLSAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOwotICAgIHQgPSBQeV9TQUZFX0RPV05DQVNUKG5zLCBQWV9MT05HX0xPTkcsIF9QeVRpbWVfdCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihsb25nIGxvbmcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICB0ID0gUHlfU0FGRV9ET1dOQ0FTVChucywgbG9uZyBsb25nLCBfUHlUaW1lX3QpOwogICAgIHJldHVybiB0OwogfQogCkBAIC0xODcsMTIgKzIzMywxNSBAQAogICAgIF9QeVRpbWVfdCB0OwogICAgIGludCByZXMgPSAwOwogCi0gICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYyAqIFNFQ19UT19OUzsKLSAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0cy0+dHZfc2VjKSB7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0cy0+dHZfc2VjKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYzsKKworICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyh0LCBTRUNfVE9fTlMpKSB7CiAgICAgICAgIGlmIChyYWlzZSkKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgcmVzID0gLTE7CiAgICAgfQorICAgIHQgPSB0ICogU0VDX1RPX05TOwogCiAgICAgdCArPSB0cy0+dHZfbnNlYzsKIApAQCAtMjA2LDEyICsyNTUsMTUgQEAKICAgICBfUHlUaW1lX3QgdDsKICAgICBpbnQgcmVzID0gMDsKIAotICAgIHQgPSAoX1B5VGltZV90KXR2LT50dl9zZWMgKiBTRUNfVE9fTlM7Ci0gICAgaWYgKHQgLyBTRUNfVE9fTlMgIT0gdHYtPnR2X3NlYykgeworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodHYtPnR2X3NlYykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXR2LT50dl9zZWM7CisKKyAgICBpZiAoX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3codCwgU0VDX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgIHJlcyA9IC0xOwogICAgIH0KKyAgICB0ID0gdCAqIFNFQ19UT19OUzsKIAogICAgIHQgKz0gKF9QeVRpbWVfdCl0di0+dHZfdXNlYyAqIFVTX1RPX05TOwogCkBAIC0yMjEsNTAgKzI3Myw1MiBAQAogI2VuZGlmCiAKIHN0YXRpYyBpbnQKK19QeVRpbWVfRnJvbUZsb2F0T2JqZWN0KF9QeVRpbWVfdCAqdCwgZG91YmxlIHZhbHVlLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHVuaXRfdG9fbnMpCit7CisgICAgZG91YmxlIGVycjsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGQ7CisKKyAgICAvKiBjb252ZXJ0IHRvIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzICovCisgICAgZCA9IHZhbHVlOworICAgIGQgKj0gKGRvdWJsZSl1bml0X3RvX25zOworICAgIGQgPSBfUHlUaW1lX1JvdW5kKGQsIHJvdW5kKTsKKworICAgICp0ID0gKF9QeVRpbWVfdClkOworICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OworICAgIGlmIChmYWJzKGVycikgPj0gMS4wKSB7CisgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAogX1B5VGltZV9Gcm9tT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAotICAgICAgICAgICAgICAgICAgIGxvbmcgdG9fbmFub3NlY29uZHMpCisgICAgICAgICAgICAgICAgICAgbG9uZyB1bml0X3RvX25zKQogewogICAgIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKLSAgICAgICAgLyogdm9sYXRpbGUgYXZvaWRzIHVuc2FmZSBvcHRpbWl6YXRpb24gb24gZmxvYXQgZW5hYmxlZCBieSBnY2MgLU8zICovCi0gICAgICAgIHZvbGF0aWxlIGRvdWJsZSBkLCBlcnI7Ci0KLSAgICAgICAgLyogY29udmVydCB0byBhIG51bWJlciBvZiBuYW5vc2Vjb25kcyAqLworICAgICAgICBkb3VibGUgZDsKICAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKLSAgICAgICAgZCAqPSB0b19uYW5vc2Vjb25kczsKLQotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKQotICAgICAgICAgICAgZCA9IGNlaWwoZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGQgPSBmbG9vcihkKTsKLQotICAgICAgICAqdCA9IChfUHlUaW1lX3QpZDsKLSAgICAgICAgZXJyID0gZCAtIChkb3VibGUpKnQ7Ci0gICAgICAgIGlmIChmYWJzKGVycikgPj0gMS4wKSB7Ci0gICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBfUHlUaW1lX0Zyb21GbG9hdE9iamVjdCh0LCBkLCByb3VuZCwgdW5pdF90b19ucyk7CiAgICAgfQogICAgIGVsc2UgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIFBZX0xPTkdfTE9ORyBzZWM7CisgICAgICAgIGxvbmcgbG9uZyBzZWM7CisgICAgICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisKICAgICAgICAgc2VjID0gUHlMb25nX0FzTG9uZ0xvbmcob2JqKTsKLSAgICAgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKLSNlbHNlCi0gICAgICAgIGxvbmcgc2VjOwotICAgICAgICBzZWMgPSBQeUxvbmdfQXNMb25nKG9iaik7Ci0gICAgICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7Ci0jZW5kaWYKICAgICAgICAgaWYgKHNlYyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgKnQgPSBzZWMgKiB0b19uYW5vc2Vjb25kczsKLSAgICAgICAgaWYgKCp0IC8gdG9fbmFub3NlY29uZHMgIT0gc2VjKSB7CisKKyAgICAgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHNlYywgdW5pdF90b19ucykpIHsKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICAqdCA9IHNlYyAqIHVuaXRfdG9fbnM7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KQEAgLTI4NCwyNCArMzM4LDI4IEBACiBkb3VibGUKIF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfdCB0KQogewotICAgIF9QeVRpbWVfdCBzZWMsIG5zOwotICAgIC8qIERpdmlkZSB1c2luZyBpbnRlZ2VycyB0byBhdm9pZCByb3VuZGluZyBpc3N1ZXMgb24gdGhlIGludGVnZXIgcGFydC4KLSAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KLSAgICBzZWMgPSB0IC8gU0VDX1RPX05TOwotICAgIG5zID0gdCAlIFNFQ19UT19OUzsKLSAgICByZXR1cm4gKGRvdWJsZSlzZWMgKyAoZG91YmxlKW5zICogMWUtOTsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGQ7CisKKyAgICBpZiAodCAlIFNFQ19UT19OUyA9PSAwKSB7CisgICAgICAgIF9QeVRpbWVfdCBzZWNzOworICAgICAgICAvKiBEaXZpZGUgdXNpbmcgaW50ZWdlcnMgdG8gYXZvaWQgcm91bmRpbmcgaXNzdWVzIG9uIHRoZSBpbnRlZ2VyIHBhcnQuCisgICAgICAgICAgIDFlLTkgY2Fubm90IGJlIHN0b3JlZCBleGFjdGx5IGluIElFRUUgNjQtYml0LiAqLworICAgICAgICBzZWNzID0gdCAvIFNFQ19UT19OUzsKKyAgICAgICAgZCA9IChkb3VibGUpc2VjczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGQgPSAoZG91YmxlKXQ7CisgICAgICAgIGQgLz0gMWU5OworICAgIH0KKyAgICByZXR1cm4gZDsKIH0KIAogUHlPYmplY3QgKgogX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCB0KQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXQpOwotI2Vsc2UKLSAgICBhc3NlcnQoc2l6ZW9mKGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOwotI2VuZGlmCisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihsb25nIGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXQpOwogfQogCiBzdGF0aWMgX1B5VGltZV90CkBAIC0zMDksNyArMzY3LDIwIEBACiAgICAgICAgICAgICAgICBjb25zdCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7CiAgICAgYXNzZXJ0KGsgPiAxKTsKLSAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSB7CisgICAgICAgIF9QeVRpbWVfdCB4LCByLCBhYnNfcjsKKyAgICAgICAgeCA9IHQgLyBrOworICAgICAgICByID0gdCAlIGs7CisgICAgICAgIGFic19yID0gUHlfQUJTKHIpOworICAgICAgICBpZiAoYWJzX3IgPiBrIC8gMiB8fCAoYWJzX3IgPT0gayAvIDIgJiYgKFB5X0FCUyh4KSAmIDEpKSkgeworICAgICAgICAgICAgaWYgKHQgPj0gMCkKKyAgICAgICAgICAgICAgICB4Kys7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeC0tOworICAgICAgICB9CisgICAgICAgIHJldHVybiB4OworICAgIH0KKyAgICBlbHNlIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKICAgICAgICAgaWYgKHQgPj0gMCkKICAgICAgICAgICAgIHJldHVybiAodCArIGsgLSAxKSAvIGs7CiAgICAgICAgIGVsc2UKQEAgLTM3Myw3ICs0NDQsNyBAQAogX1B5VGltZV9Bc1RpbWV2YWxTdHJ1Y3RfaW1wbChfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWV2YWwgKnR2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsIGludCByYWlzZSkKIHsKLSAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBfUHlUaW1lX3Qgc2Vjcywgc2VjczI7CiAgICAgaW50IHVzOwogICAgIGludCByZXM7CiAKQEAgLTM4Niw3ICs0NTcsOCBAQAogI2VuZGlmCiAgICAgdHYtPnR2X3VzZWMgPSB1czsKIAotICAgIGlmIChyZXMgPCAwIHx8IChfUHlUaW1lX3QpdHYtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgc2VjczIgPSAoX1B5VGltZV90KXR2LT50dl9zZWM7CisgICAgaWYgKHJlcyA8IDAgfHwgc2VjczIgIT0gc2VjcykgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNDI0LDYgKzQ5Niw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSB8fCBkZWZpbmVkKEhBVkVfS1FVRVVFKQogaW50CiBfUHlUaW1lX0FzVGltZXNwZWMoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCkBAIC00MzcsMTMgKzUxMCwxMyBAQAogICAgICAgICBzZWNzIC09IDE7CiAgICAgfQogICAgIHRzLT50dl9zZWMgPSAodGltZV90KXNlY3M7Ci0gICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7Ci0gICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBhc3NlcnQoMCA8PSBuc2VjICYmIG5zZWMgPCBTRUNfVE9fTlMpOwogICAgIHRzLT50dl9uc2VjID0gbnNlYzsKIAotICAgIGFzc2VydCgwIDw9IHRzLT50dl9uc2VjICYmIHRzLT50dl9uc2VjIDw9IDk5OTk5OTk5OSk7CisgICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIHJldHVybiAwOwogfQogI2VuZGlmCkBAIC01NTcsMTkgKzYzMCwyMCBAQAogICAgIHJldHVybiBweWdldHRpbWVvZmRheSh0LCBpbmZvLCAxKTsKIH0KIAotCiBzdGF0aWMgaW50CiBweW1vbm90b25pYyhfUHlUaW1lX3QgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvLCBpbnQgcmFpc2UpCiB7CiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIFVMT05HTE9ORyByZXN1bHQ7CisgICAgVUxPTkdMT05HIHRpY2tzOworICAgIF9QeVRpbWVfdCB0OwogCiAgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CiAKLSAgICByZXN1bHQgPSBHZXRUaWNrQ291bnQ2NCgpOworICAgIHRpY2tzID0gR2V0VGlja0NvdW50NjQoKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpY2tzKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IChfUHlUaW1lX3QpdGlja3M7CiAKLSAgICAqdHAgPSByZXN1bHQgKiBNU19UT19OUzsKLSAgICBpZiAoKnRwIC8gTVNfVE9fTlMgIT0gcmVzdWx0KSB7CisgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHQsIE1TX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU3Nyw2ICs2NTEsNyBAQAogICAgICAgICAvKiBIZWxsbywgdGltZSB0cmF2ZWxlciEgKi8KICAgICAgICAgYXNzZXJ0KDApOwogICAgIH0KKyAgICAqdHAgPSB0ICogTVNfVE9fTlM7CiAKICAgICBpZiAoaW5mbykgewogICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKQEAgLTY4OSw4ICs3NjQsNSBAQAogICAgIGlmIChfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrV2l0aEluZm8oJnQsIE5VTEwpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgLyogY2hlY2sgdGhhdCBfUHlUaW1lX0Zyb21TZWNvbmRzKCkgY2Fubm90IG92ZXJmbG93ICovCi0gICAgYXNzZXJ0KElOVF9NQVggPD0gX1B5VGltZV9NQVggLyBTRUNfVE9fTlMpOwotICAgIGFzc2VydChJTlRfTUlOID49IF9QeVRpbWVfTUlOIC8gU0VDX1RPX05TKTsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCAzMTE5ODcyLi5lYTUwNmVlIDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0xLDYgKzEsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2lmZGVmIE1TX1dJTkRPV1MKICMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKy8qIEFsbCBzYW1wbGUgTVNETiB3aW5jcnlwdCBwcm9ncmFtcyBpbmNsdWRlIHRoZSBoZWFkZXIgYmVsb3cuIEl0IGlzIGF0IGxlYXN0CisgKiByZXF1aXJlZCB3aXRoIE1pbiBHVy4gKi8KKyMgIGluY2x1ZGUgPHdpbmNyeXB0Lmg+CiAjZWxzZQogIyAgaW5jbHVkZSA8ZmNudGwuaD4KICMgIGlmZGVmIEhBVkVfU1lTX1NUQVRfSApAQCAtMzYsMTAgKzM5LDkgQEAKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgaWYgKHJhaXNlKQorICAgIGlmIChyYWlzZSkgewogICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICBlbHNlCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIFdpbmRvd3MgcmFuZG9tIEFQSSAoQ3J5cHRvR2VuKSIpOworICAgIH0KICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTUyLDggKzU0LDkgQEAKIAogICAgIGlmIChoQ3J5cHRQcm92ID09IDApCiAgICAgewotICAgICAgICBpZiAod2luMzJfdXJhbmRvbV9pbml0KHJhaXNlKSA9PSAtMSkKKyAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHdoaWxlIChzaXplID4gMCkKQEAgLTYyLDExICs2NSw5IEBACiAgICAgICAgIGlmICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgKERXT1JEKWNodW5rLCBidWZmZXIpKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBDcnlwdEdlblJhbmRvbSgpIGZhaWxlZCAqLwotICAgICAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemVkIHRoZSByYW5kb21pemVkIGhhc2ggIgotICAgICAgICAgICAgICAgICAgICAgICAgInNlY3JldCB1c2luZyBDcnlwdG9HZW4pIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyICs9IGNodW5rOwpAQCAtODMsMjkgKzg0LDI4IEBACiAvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgZ2V0ZW50cm9weSgpLgogICAgUmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuCiAKLSAgIElmIGZhdGFsIGlzIG5vbnplcm8sIGNhbGwgUHlfRmF0YWxFcnJvcigpIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24KLSAgIG9uIGVycm9yLiAqLworICAgSWYgcmFpc2UgaXMgemVybywgZG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiAqLwogc3RhdGljIGludAotcHlfZ2V0ZW50cm9weSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZhdGFsKQorcHlfZ2V0ZW50cm9weShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQogewogICAgIHdoaWxlIChzaXplID4gMCkgewogICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X01JTihzaXplLCAyNTYpOwogICAgICAgICBpbnQgcmVzOwogCi0gICAgICAgIGlmICghZmF0YWwpIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwotICAgICAgICAgICAgaWYgKHJlcyA8IDApCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0ZW50cm9weSgpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCiAgICAgICAgIGJ1ZmZlciArPSBsZW47CkBAIC0xMTksMjQgKzExOSwzMSBAQAogI2lmIGRlZmluZWQoSEFWRV9HRVRSQU5ET00pIHx8IGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkKICNkZWZpbmUgUFlfR0VUUkFORE9NIDEKIAorLyogQ2FsbCBnZXRyYW5kb20oKQorICAgLSBSZXR1cm4gMSBvbiBzdWNjZXNzCisgICAtIFJldHVybiAwIGlmIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgbm90IGF2YWlsYWJsZSAoZmFpbHMgd2l0aCBFTk9TWVMpCisgICAgIG9yIGlmIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiAoYmxvY2tpbmc9MCBhbmQgc3lzdGVtCisgICAgIHVyYW5kb20gbm90IGluaXRpYWxpemVkIHlldCkgYW5kIHJhaXNlPTAuCisgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3I6CisgICAgIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVJTlRSIGFuZCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJhaXNlZCBhbgorICAgICBleGNlcHRpb24sIG9yIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50IGVycm9yLiAqLwogc3RhdGljIGludAotcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCitweV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCBibG9ja2luZywgaW50IHJhaXNlKQogewotICAgIC8qIElzIGdldHJhbmRvbSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/Ci0gICAgICogTmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBuZXdlciwgb3IgU29sYXJpcyAxMS4zIG9yIG5ld2VyICovCisgICAgLyogSXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8gU2V0IHRvIDAgaWYgZ2V0cmFuZG9tKCkKKyAgICAgICBmYWlscyB3aXRoIEVOT1NZUy4gTmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBuZXdlciwgb3IgU29sYXJpcyAxMS4zCisgICAgICAgb3IgbmV3ZXIgKi8KICAgICBzdGF0aWMgaW50IGdldHJhbmRvbV93b3JrcyA9IDE7Ci0KLSAgICAvKiBnZXRyYW5kb20oKSBvbiBMaW51eCB3aWxsIGJsb2NrIGlmIGNhbGxlZCBiZWZvcmUgdGhlIGtlcm5lbCBoYXMKLSAgICAgKiBpbml0aWFsaXplZCB0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wuIFRoaXMgd2lsbCBjYXVzZSBQeXRob24KLSAgICAgKiB0byBoYW5nIG9uIHN0YXJ0dXAgaWYgY2FsbGVkIHZlcnkgZWFybHkgaW4gdGhlIGJvb3QgcHJvY2VzcyAtCi0gICAgICogc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjY4MzkuIFRvIGF2b2lkIHRoaXMsIHVzZSB0aGUKLSAgICAgKiBHUk5EX05PTkJMT0NLIGZsYWcuICovCi0gICAgY29uc3QgaW50IGZsYWdzID0gR1JORF9OT05CTE9DSzsKKyAgICBpbnQgZmxhZ3M7CisgICAgY2hhciAqZGVzdDsKICAgICBsb25nIG47CiAKLSAgICBpZiAoIWdldHJhbmRvbV93b3JrcykKKyAgICBpZiAoIWdldHJhbmRvbV93b3JrcykgewogICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKKyAgICBmbGFncyA9IGJsb2NraW5nID8gMCA6IEdSTkRfTk9OQkxPQ0s7CisgICAgZGVzdCA9IGJ1ZmZlcjsKICAgICB3aGlsZSAoMCA8IHNpemUpIHsKICNpZmRlZiBzdW4KICAgICAgICAgLyogSXNzdWUgIzI2NzM1OiBPbiBTb2xhcmlzLCBnZXRyYW5kb20oKSBpcyBsaW1pdGVkIHRvIHJldHVybmluZyB1cApAQCAtMTUwLDIzICsxNTcsMjMgQEAKICNpZmRlZiBIQVZFX0dFVFJBTkRPTQogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oYnVmZmVyLCBuLCBmbGFncyk7CisgICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIC8qIE9uIExpbnV4LCB1c2UgdGhlIHN5c2NhbGwoKSBmdW5jdGlvbiBiZWNhdXNlIHRoZSBHTlUgbGliYyBkb2Vzbid0Ci0gICAgICAgICAqIGV4cG9zZSB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCB5ZXQuIFNlZToKLSAgICAgICAgICogaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KKyAgICAgICAgICAgZXhwb3NlIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIHlldC4gU2VlOgorICAgICAgICAgICBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzI1MiAqLwogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTc1LDM2ICsxODIsMzMgQEAKICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgewotICAgICAgICAgICAgICAgIC8qIElmIHdlIGZhaWxlZCB3aXRoIEVBR0FJTiwgdGhlIGVudHJvcHkgcG9vbCB3YXMKLSAgICAgICAgICAgICAgICAgKiB1bmluaXRpYWxpemVkLiBJbiB0aGlzIGNhc2UsIHdlIHJldHVybiBmYWlsdXJlIHRvIGZhbGwKLSAgICAgICAgICAgICAgICAgKiBiYWNrIHRvIHJlYWRpbmcgZnJvbSAvZGV2L3VyYW5kb20uCi0gICAgICAgICAgICAgICAgICoKLSAgICAgICAgICAgICAgICAgKiBOb3RlOiBJbiB0aGlzIGNhc2UgdGhlIGRhdGEgcmVhZCB3aWxsIG5vdCBiZSByYW5kb20gc28KLSAgICAgICAgICAgICAgICAgKiBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNyeXB0b2dyYXBoaWMgcHVycG9zZXMuIFJldGFpbmluZwotICAgICAgICAgICAgICAgICAqIHRoZSBleGlzdGluZyBzZW1hbnRpY3MgZm9yIHByYWN0aWNhbCBwdXJwb3Nlcy4gKi8KLSAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOworCisgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbSB1cmFuZG9tCisgICAgICAgICAgICAgICBpcyBub3QgaW5pdGlhbGlhemVkIHlldC4gRm9yIF9QeVJhbmRvbV9Jbml0KCksIHdlIGlnbm9yZSB0aGVpcgorICAgICAgICAgICAgICAgZXJyb3IgYW5kIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSB3aGljaCBuZXZlciBibG9ja3MsCisgICAgICAgICAgICAgICBldmVuIGlmIHRoZSBzeXN0ZW0gdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiAqLworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiAmJiAhcmFpc2UgJiYgIWJsb2NraW5nKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSAqLworCisgICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgaWYgaXQgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICBkZXN0ICs9IG47CiAgICAgICAgIHNpemUgLT0gbjsKICAgICB9CiAgICAgcmV0dXJuIDE7CkBAIC0yMTgsMTI2ICsyMjIsMTE4IEBACiB9IHVyYW5kb21fY2FjaGUgPSB7IC0xIH07CiAKIAotLyogUmVhZCBzaXplIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIGludG8gYnVmZmVyLgotICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCi1zdGF0aWMgdm9pZAotZGV2X3VyYW5kb21fbm9yYWlzZSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBpbnQgZmQ7Ci0gICAgUHlfc3NpemVfdCBuOworLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KKyAgIC9kZXYvdXJhbmRvbSBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlLgogCi0gICAgYXNzZXJ0ICgwIDwgc2l6ZSk7Ci0KLSNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICBpZiAocHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCkgPT0gMSkKLSAgICAgICAgcmV0dXJuOwotICAgIC8qIGdldHJhbmRvbSgpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsLCBmYWxsIGJhY2sKLSAgICAgKiBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwotI2VuZGlmCi0KLSAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLSAgICBpZiAoZmQgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKLQotICAgIHdoaWxlICgwIDwgc2l6ZSkKLSAgICB7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0gICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLSAgICAgICAgaWYgKG4gPD0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgLyogc3RvcCBvbiBlcnJvciBvciBpZiByZWFkKHNpemUpIHJldHVybmVkIDAgKi8KLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZWFkIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBidWZmZXIgKz0gbjsKLSAgICAgICAgc2l6ZSAtPSBuOwotICAgIH0KLSAgICBjbG9zZShmZCk7Ci19Ci0KLS8qIFJlYWQgc2l6ZSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSBpbnRvIGJ1ZmZlci4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMQorICAgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1kZXZfdXJhbmRvbV9weXRob24oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCitkZXZfdXJhbmRvbShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OwogI2lmZGVmIFBZX0dFVFJBTkRPTQogICAgIGludCByZXM7CiAjZW5kaWYKIAotICAgIGlmIChzaXplIDw9IDApCi0gICAgICAgIHJldHVybiAwOworICAgIGFzc2VydChzaXplID4gMCk7CiAKICNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKLSAgICBpZiAocmVzIDwgMCkKKyAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCBibG9ja2luZywgcmFpc2UpOworICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAocmVzID09IDEpCisgICAgfQorICAgIGlmIChyZXMgPT0gMSkgewogICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgLyogZ2V0cmFuZG9tKCkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWwsIGZhbGwgYmFjawotICAgICAqIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCisgICAgICAgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KICNlbmRpZgogCi0gICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgewotICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCi0gICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCi0gICAgICAgICAgICB8fCBzdC5zdF9kZXYgIT0gdXJhbmRvbV9jYWNoZS5zdF9kZXYKLSAgICAgICAgICAgIHx8IHN0LnN0X2lubyAhPSB1cmFuZG9tX2NhY2hlLnN0X2lubykgewotICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCi0gICAgICAgICAgICAgICBzaW5jZSBpdCBwcm9iYWJseSBwb2ludHMgdG8gc29tZXRoaW5nIGltcG9ydGFudCBmb3Igc29tZQotICAgICAgICAgICAgICAgdGhpcmQtcGFydHkgY29kZSkuICovCi0gICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7CisKKyAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdDsKKworICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CisgICAgICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCisgICAgICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQorICAgICAgICAgICAgICAgIHx8IHN0LnN0X2RldiAhPSB1cmFuZG9tX2NhY2hlLnN0X2RldgorICAgICAgICAgICAgICAgIHx8IHN0LnN0X2lubyAhPSB1cmFuZG9tX2NhY2hlLnN0X2lubykgeworICAgICAgICAgICAgICAgIC8qIFNvbWV0aGluZyBjaGFuZ2VkOiBmb3JnZXQgdGhlIGNhY2hlZCBmZCAoYnV0IGRvbid0IGNsb3NlIGl0LAorICAgICAgICAgICAgICAgICAgIHNpbmNlIGl0IHByb2JhYmx5IHBvaW50cyB0byBzb21ldGhpbmcgaW1wb3J0YW50IGZvciBzb21lCisgICAgICAgICAgICAgICAgICAgdGhpcmQtcGFydHkgY29kZSkuICovCisgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApCisgICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworICAgICAgICAgICAgaWYgKGZkIDwgMCkgeworICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9FTlQgfHwgZXJybm8gPT0gRU5YSU8gfHwKKyAgICAgICAgICAgICAgICAgICAgZXJybm8gPT0gRU5PREVWIHx8IGVycm5vID09IEVBQ0NFUykKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL2Rldi91cmFuZG9tIChvciBlcXVpdmFsZW50KSBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICAvKiBvdGhlcndpc2UsIGtlZXAgdGhlIE9TRXJyb3IgZXhjZXB0aW9uIHJhaXNlZCBieSBfUHlfb3BlbigpICovCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgeworICAgICAgICAgICAgICAgIC8qIHVyYW5kb21fZmQgd2FzIGluaXRpYWxpemVkIGJ5IGFub3RoZXIgdGhyZWFkIHdoaWxlIHdlIHdlcmUKKyAgICAgICAgICAgICAgICAgICBub3QgaG9sZGluZyB0aGUgR0lMLCBrZWVwIGl0LiAqLworICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IGZkOworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2RldiA9IHN0LnN0X2RldjsKKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9pbm8gPSBzdC5zdF9pbm87CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgbiA9IF9QeV9yZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7CisgICAgICAgICAgICBpZiAobiA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAobiA9PSAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgICAgIHNpemUgLT0gbjsKKyAgICAgICAgfSB3aGlsZSAoMCA8IHNpemUpOwogICAgIH0KLSAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKQotICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7CiAgICAgZWxzZSB7Ci0gICAgICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKKyAgICAgICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CiAgICAgICAgIGlmIChmZCA8IDApIHsKLSAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9FTlQgfHwgZXJybm8gPT0gRU5YSU8gfHwKLSAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL2Rldi91cmFuZG9tIChvciBlcXVpdmFsZW50KSBub3QgZm91bmQiKTsKLSAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0gICAgICAgICAgICAvKiB1cmFuZG9tX2ZkIHdhcyBpbml0aWFsaXplZCBieSBhbm90aGVyIHRocmVhZCB3aGlsZSB3ZSB3ZXJlCi0gICAgICAgICAgICAgICBub3QgaG9sZGluZyB0aGUgR0lMLCBrZWVwIGl0LiAqLwotICAgICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0KSkgeworCisgICAgICAgIHdoaWxlICgwIDwgc2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7CisgICAgICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7CisKKyAgICAgICAgICAgIGlmIChuIDw9IDApIHsKKyAgICAgICAgICAgICAgICAvKiBzdG9wIG9uIGVycm9yIG9yIGlmIHJlYWQoc2l6ZSkgcmV0dXJuZWQgMCAqLwogICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7Ci0gICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9kZXYgPSBzdC5zdF9kZXY7Ci0gICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9pbm8gPSBzdC5zdF9pbm87Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICAgICAgc2l6ZSAtPSBuOwogICAgICAgICB9CisgICAgICAgIGNsb3NlKGZkKTsKICAgICB9Ci0KLSAgICBkbyB7Ci0gICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotICAgICAgICBpZiAobiA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKG4gPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCi0gICAgICAgICAgICAgICAgICAgIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gbjsKLSAgICB9IHdoaWxlICgwIDwgc2l6ZSk7Ci0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzczLDI5ICszNjksNjIgQEAKICAgICB9CiB9CiAKKy8qIElmIHJhaXNlIGlzIHplcm86CisgICAtIERvbid0IHJhaXNlIGV4Y2VwdGlvbnMgb24gZXJyb3IKKyAgIC0gRG9uJ3QgY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSBvbiBFSU5UUiAocmV0cnkgZGlyZWN0bHkgdGhlIGludGVycnVwdGVkCisgICAgIHN5c2NhbGwpCisgICAtIERvbid0IHJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIHN5c2NhbGxzLiAqLworc3RhdGljIGludAorcHl1cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgYmxvY2tpbmcsIGludCByYWlzZSkKK3sKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKKyAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbHNlCisgICAgcmV0dXJuIGRldl91cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgYmxvY2tpbmcsIHJhaXNlKTsKKyNlbmRpZgorfQorCiAvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQogICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgc3VpdGFibGUgZm9yIG1vc3QgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcwogICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgogCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyLCB0aGUgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyB1c2VkIGluIGJsb2NraW5nIG1vZGU6CisgICBibG9jayB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkICgxMjggYml0cyBhcmUKKyAgIGNvbGxlY3RlZCBieSB0aGUga2VybmVsKS4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBpbnQKIF9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEsIDEpOworfQogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl91cmFuZG9tKCh1bnNpZ25lZCBjaGFyICopYnVmZmVyLCBzaXplLCAxKTsKLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLSAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIDApOwotI2Vsc2UKLSAgICByZXR1cm4gZGV2X3VyYW5kb21fcHl0aG9uKChjaGFyKilidWZmZXIsIHNpemUpOwotI2VuZGlmCisvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQorICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgbm90IHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCisKKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyICh3aGVuIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgdXNlZCksIGlmIHRoZSBzeXN0ZW0KKyAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpemVkIHlldCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgIndlYWsiIGVudHJvcHkgcmVhZAorICAgZnJvbSAvZGV2L3VyYW5kb20uCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworaW50CitfUHlPU19VUmFuZG9tTm9uYmxvY2sodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDAsIDEpOwogfQogCiB2b2lkCkBAIC00MDQsNyArNDMzLDcgQEAKICAgICBjaGFyICplbnY7CiAgICAgdW5zaWduZWQgY2hhciAqc2VjcmV0ID0gKHVuc2lnbmVkIGNoYXIgKikmX1B5X0hhc2hTZWNyZXQudWM7CiAgICAgUHlfc3NpemVfdCBzZWNyZXRfc2l6ZSA9IHNpemVvZihfUHlfSGFzaFNlY3JldF90KTsKLSAgICBhc3NlcnQoc2VjcmV0X3NpemUgPT0gc2l6ZW9mKF9QeV9IYXNoU2VjcmV0LnVjKSk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihfUHlfSGFzaFNlY3JldF90KSA9PSBzaXplb2YoX1B5X0hhc2hTZWNyZXQudWMpKTsKIAogICAgIGlmIChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM2LDEzICs0NjUsMTcgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICh2b2lkKXdpbjMyX3VyYW5kb20oc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMCk7Ci0jZWxpZiBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0gICAgICAgICh2b2lkKXB5X2dldGVudHJvcHkoc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMSk7Ci0jZWxzZQotICAgICAgICBkZXZfdXJhbmRvbV9ub3JhaXNlKHNlY3JldCwgc2VjcmV0X3NpemUpOwotI2VuZGlmCisgICAgICAgIGludCByZXM7CisKKyAgICAgICAgLyogX1B5UmFuZG9tX0luaXQoKSBpcyBjYWxsZWQgdmVyeSBlYXJseSBpbiB0aGUgUHl0aG9uIGluaXRpYWxpemF0aW9uCisgICAgICAgICAgIGFuZCBzbyBleGNlcHRpb25zIGNhbm5vdCBiZSB1c2VkICh1c2UgcmFpc2U9MCkuCisKKyAgICAgICAgICAgX1B5UmFuZG9tX0luaXQoKSBtdXN0IG5vdCBibG9jayBQeXRob24gaW5pdGlhbGl6YXRpb246IGNhbGwKKyAgICAgICAgICAgcHl1cmFuZG9tKCkgaXMgbm9uLWJsb2NraW5nIG1vZGUgKGJsb2NraW5nPTApOiBzZWUgdGhlIFBFUCA1MjQuICovCisgICAgICAgIHJlcyA9IHB5dXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwLCAwKTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWxlZCB0byBnZXQgcmFuZG9tIG51bWJlcnMgdG8gaW5pdGlhbGl6ZSBQeXRob24iKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3N0cnVjdG1lbWJlci5jIGIvUHl0aG9uL3N0cnVjdG1lbWJlci5jCmluZGV4IGFmMDI5NmQuLjg2ZDRjNjYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zdHJ1Y3RtZW1iZXIuYworKysgYi9QeXRob24vc3RydWN0bWVtYmVyLmMKQEAgLTc0LDE0ICs3NCwxMiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBsLT5uYW1lKTsKICAgICAgICAgUHlfWElOQ1JFRih2KTsKICAgICAgICAgYnJlYWs7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCooUFlfTE9OR19MT05HICopYWRkcik7CisgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCoobG9uZyBsb25nICopYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVF9VTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKih1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhZGRyKTsKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFkZHIpOwogICAgICAgICBicmVhazsKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogICAgIGNhc2UgVF9OT05FOgogICAgICAgICB2ID0gUHlfTm9uZTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMjY2LDI3ICsyNjQsMjUgQEAKICAgICBjYXNlIFRfU1RSSU5HX0lOUExBQ0U6CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZWFkb25seSBhdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIC0xOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSBUX0xPTkdMT05HOnsKLSAgICAgICAgUFlfTE9OR19MT05HIHZhbHVlOwotICAgICAgICAqKFBZX0xPTkdfTE9ORyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CisgICAgICAgIGxvbmcgbG9uZyB2YWx1ZTsKKyAgICAgICAgKihsb25nIGxvbmcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdMb25nKHYpOwogICAgICAgICBpZiAoKHZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIGNhc2UgVF9VTE9OR0xPTkc6ewotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZTsKICAgICAgICAgLyogPz8/IFB5TG9uZ19Bc0xvbmdMb25nIGFjY2VwdHMgYW4gaW50LCBidXQgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwogICAgICAgICAgICAgZG9lc24ndCA/Pz8gKi8KICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkKLSAgICAgICAgICAgICoodW5zaWduZWQgUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOworICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nIGxvbmcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICoodW5zaWduZWQgUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nKHYpOwotICAgICAgICBpZiAoKHZhbHVlID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICAgICAgaWYgKCh2YWx1ZSA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBicmVhazsKICAgICAgICAgfQotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImJhZCBtZW1iZXJkZXNjciB0eXBlIGZvciAlcyIsIGwtPm5hbWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5bXRhYmxlLmMgYi9QeXRob24vc3ltdGFibGUuYwppbmRleCAxNTkxYTIwLi5mNzYyOTA0IDEwMDY0NAotLS0gYS9QeXRob24vc3ltdGFibGUuYworKysgYi9QeXRob24vc3ltdGFibGUuYwpAQCAtNiwxNiArNiwyMiBAQAogCiAvKiBlcnJvciBzdHJpbmdzIHVzZWQgZm9yIHdhcm5pbmdzICovCiAjZGVmaW5lIEdMT0JBTF9BRlRFUl9BU1NJR04gXAotIm5hbWUgJyUuNDAwcycgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBOT05MT0NBTF9BRlRFUl9BU1NJR04gXAotIm5hbWUgJyUuNDAwcycgaXMgYXNzaWduZWQgdG8gYmVmb3JlIG5vbmxvY2FsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgbm9ubG9jYWwgZGVjbGFyYXRpb24iCiAKICNkZWZpbmUgR0xPQkFMX0FGVEVSX1VTRSBcCi0ibmFtZSAnJS40MDBzJyBpcyB1c2VkIHByaW9yIHRvIGdsb2JhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgdXNlZCBwcmlvciB0byBnbG9iYWwgZGVjbGFyYXRpb24iCiAKICNkZWZpbmUgTk9OTE9DQUxfQUZURVJfVVNFIFwKLSJuYW1lICclLjQwMHMnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24iCisibmFtZSAnJVUnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24iCisKKyNkZWZpbmUgR0xPQkFMX0FOTk9UIFwKKyJhbm5vdGF0ZWQgbmFtZSAnJVUnIGNhbid0IGJlIGdsb2JhbCIKKworI2RlZmluZSBOT05MT0NBTF9BTk5PVCBcCisiYW5ub3RhdGVkIG5hbWUgJyVVJyBjYW4ndCBiZSBub25sb2NhbCIKIAogI2RlZmluZSBJTVBPUlRfU1RBUl9XQVJOSU5HICJpbXBvcnQgKiBvbmx5IGFsbG93ZWQgYXQgbW9kdWxlIGxldmVsIgogCkBAIC02Myw2ICs2OSw3IEBACiAgICAgICAgIHN0ZS0+c3RlX25lc3RlZCA9IDE7CiAgICAgc3RlLT5zdGVfY2hpbGRfZnJlZSA9IDA7CiAgICAgc3RlLT5zdGVfZ2VuZXJhdG9yID0gMDsKKyAgICBzdGUtPnN0ZV9jb3JvdXRpbmUgPSAwOwogICAgIHN0ZS0+c3RlX3JldHVybnNfdmFsdWUgPSAwOwogICAgIHN0ZS0+c3RlX25lZWRzX2NsYXNzX2Nsb3N1cmUgPSAwOwogCkBAIC0xNjAsNyArMTY3LDYgQEAKIH07CiAKIHN0YXRpYyBpbnQgc3ltdGFibGVfYW5hbHl6ZShzdHJ1Y3Qgc3ltdGFibGUgKnN0KTsKLXN0YXRpYyBpbnQgc3ltdGFibGVfd2FybihzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBjaGFyICptc2csIGludCBsaW5lbm8pOwogc3RhdGljIGludCBzeW10YWJsZV9lbnRlcl9ibG9jayhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpZGVudGlmaWVyIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9ibG9ja190eSBibG9jaywgdm9pZCAqYXN0LCBpbnQgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCk7CkBAIC0zNzgsNyArMzg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShkYXRhLCAyKSkpOwogCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSAgIAorICAgICAgICB9CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJCVUc6IGludGVybmFsIGRpcmVjdGl2ZSBib29ra2VlcGluZyBicm9rZW4iKTsKQEAgLTY1Miw3ICs2NTgsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgLyogSGFuZGxlIGdsb2JhbCBzeW1ib2wgKi8KLSAgICAgICAgaWYgKCFQeVNldF9Db250YWlucyhib3VuZCwgbmFtZSkpIHsKKyAgICAgICAgaWYgKGJvdW5kICYmICFQeVNldF9Db250YWlucyhib3VuZCwgbmFtZSkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAvKiBpdCdzIGEgZ2xvYmFsICovCiAgICAgICAgIH0KQEAgLTkwNiwyNyArOTEyLDYgQEAKICAgICByZXR1cm4gcjsKIH0KIAotCi1zdGF0aWMgaW50Ci1zeW10YWJsZV93YXJuKHN0cnVjdCBzeW10YWJsZSAqc3QsIGNoYXIgKm1zZywgaW50IGxpbmVubykKLXsKLSAgICBQeU9iamVjdCAqbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1zZyk7Ci0gICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdChQeUV4Y19TeW50YXhXYXJuaW5nLCBtZXNzYWdlLCBzdC0+c3RfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIE5VTEwsIE5VTEwpIDwgMCkgICAgIHsKLSAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeW50YXhXYXJuaW5nKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5bnRheEVycm9yLCBtc2cpOwotICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLCBzdC0+c3RfY3VyLT5zdGVfbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2NvbF9vZmZzZXQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KIC8qIHN5bXRhYmxlX2VudGVyX2Jsb2NrKCkgZ2V0cyBhIHJlZmVyZW5jZSB2aWEgc3RlX25ldy4KICAgIFRoaXMgcmVmZXJlbmNlIGlzIHJlbGVhc2VkIHdoZW4gdGhlIGJsb2NrIGlzIGV4aXRlZCwgdmlhIHRoZSBERUNSRUYKICAgIGluIHN5bXRhYmxlX2V4aXRfYmxvY2soKS4KQEAgLTEyMDEsNiArMTE4Niw0MyBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQXNzaWduLnRhcmdldHMpOwogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3NpZ24udmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24udGFyZ2V0LT5raW5kID09IE5hbWVfa2luZCkgeworICAgICAgICAgICAgZXhwcl90eSBlX25hbWUgPSBzLT52LkFubkFzc2lnbi50YXJnZXQ7CisgICAgICAgICAgICBsb25nIGN1ciA9IHN5bXRhYmxlX2xvb2t1cChzdCwgZV9uYW1lLT52Lk5hbWUuaWQpOworICAgICAgICAgICAgaWYgKGN1ciA8IDApIHsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoY3VyICYgKERFRl9HTE9CQUwgfCBERUZfTk9OTE9DQUwpKQorICAgICAgICAgICAgICAgICYmIHMtPnYuQW5uQXNzaWduLnNpbXBsZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyICYgREVGX0dMT0JBTCA/IEdMT0JBTF9BTk5PVCA6IE5PTkxPQ0FMX0FOTk9ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlX25hbWUtPnYuTmFtZS5pZCk7CisgICAgICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi5zaW1wbGUgJiYKKyAgICAgICAgICAgICAgICAhc3ltdGFibGVfYWRkX2RlZihzdCwgZV9uYW1lLT52Lk5hbWUuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0FOTk9UIHwgREVGX0xPQ0FMKSkgeworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnZhbHVlCisgICAgICAgICAgICAgICAgICAgICYmICFzeW10YWJsZV9hZGRfZGVmKHN0LCBlX25hbWUtPnYuTmFtZS5pZCwgREVGX0xPQ0FMKSkgeworICAgICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24udGFyZ2V0KTsKKyAgICAgICAgfQorICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi52YWx1ZSkgeworICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQW5uQXNzaWduLnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5BdWdBc3NpZ24udGFyZ2V0KTsKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQXVnQXNzaWduLnZhbHVlKTsKQEAgLTEyNTgsMjEgKzEyODAsMjMgQEAKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwotICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0FGVEVSX0FTU0lHTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX25hbWUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9BRlRFUl9VU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX3dhcm4oc3QsIGJ1Ziwgcy0+bGluZW5vKSkKLSAgICAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSB8IERFRl9BTk5PVCkpIHsKKyAgICAgICAgICAgICAgICBjaGFyKiBtc2c7CisgICAgICAgICAgICAgICAgaWYgKGN1ciAmIERFRl9BTk5PVCkgeworICAgICAgICAgICAgICAgICAgICBtc2cgPSBHTE9CQUxfQU5OT1Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjdXIgJiBERUZfTE9DQUwpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gR0xPQkFMX0FGVEVSX0FTU0lHTjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BRlRFUl9VU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBuYW1lLCBERUZfR0xPQkFMKSkKICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKQEAgLTEyODksMjEgKzEzMTMsMjIgQEAKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwotICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfQVNTSUdOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfVVNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzeW10YWJsZV93YXJuKHN0LCBidWYsIHMtPmxpbmVubykpCi0gICAgICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UgfCBERUZfQU5OT1QpKSB7CisgICAgICAgICAgICAgICAgY2hhciogbXNnOworICAgICAgICAgICAgICAgIGlmIChjdXIgJiBERUZfQU5OT1QpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQU5OT1Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjdXIgJiBERUZfTE9DQUwpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQUZURVJfQVNTSUdOOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQUZURVJfVVNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsIG1zZywgbmFtZSk7CisgICAgICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgbmFtZSwgREVGX05PTkxPQ0FMKSkKICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKQEAgLTEzNDEsNiArMTM2Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKilzLCBzLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCkpCiAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CiAgICAgICAgIFZJU0lUKHN0LCBhcmd1bWVudHMsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keSk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCkBAIC0xNDM2LDcgKzE0NjIsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEF3YWl0X2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKLSAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IDE7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9jb3JvdXRpbmUgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5sZWZ0KTsKQEAgLTE0NDcsNiArMTQ3MywxNSBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuQ2FsbC5hcmdzKTsKICAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwga2V5d29yZCwgZS0+di5DYWxsLmtleXdvcmRzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSk7CisgICAgICAgIGlmIChlLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKQorICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuSm9pbmVkU3RyLnZhbHVlcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKICAgICBjYXNlIE51bV9raW5kOgogICAgIGNhc2UgU3RyX2tpbmQ6CiAgICAgY2FzZSBCeXRlc19raW5kOgpAQCAtMTY0Nyw2ICsxNjgyLDkgQEAKICAgICBWSVNJVChzdCwgZXhwciwgbGMtPnRhcmdldCk7CiAgICAgVklTSVQoc3QsIGV4cHIsIGxjLT5pdGVyKTsKICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGxjLT5pZnMpOworICAgIGlmIChsYy0+aXNfYXN5bmMpIHsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CisgICAgfQogICAgIHJldHVybiAxOwogfQogCkBAIC0xNjk5LDYgKzE3MzcsOSBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IGlzX2dlbmVyYXRvcjsKKyAgICBpZiAob3V0ZXJtb3N0LT5pc19hc3luYykgeworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKKyAgICB9CiAgICAgLyogT3V0ZXJtb3N0IGl0ZXIgaXMgcmVjZWl2ZWQgYXMgYW4gYXJndW1lbnQgKi8KICAgICBpZiAoIXN5bXRhYmxlX2ltcGxpY2l0X2FyZyhzdCwgMCkpIHsKICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCBmNjg4MzQ5Li41ZGQwZDEwIDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAogI2luY2x1ZGUgIm9zZGVmcy5oIgorI2luY2x1ZGUgPGxvY2FsZS5oPgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCkBAIC0zMyw3ICszNCw2IEBACiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAotI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgPGxhbmdpbmZvLmg+CiAjZW5kaWYKIApAQCAtMzExLDYgKzMxMSwyMyBAQAogKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK3N5c19nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycykKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAiZmlsZXN5c3RlbSBlbmNvZGluZyBpcyBub3QgaW5pdGlhbGl6ZWQiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnNfZG9jLAorICAgICJnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKCkgLT4gc3RyaW5nXG5cCitcblwKK1JldHVybiB0aGUgZXJyb3IgbW9kZSB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZSBmaWxlbmFtZXMgaW5cblwKK29wZXJhdGluZyBzeXN0ZW0gZmlsZW5hbWVzLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBzeXNfaW50ZXJuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqczsKQEAgLTM0Niw4ICszNjMsMTAgQEAKIHN0YXRpYyBpbnQKIHRyYWNlX2luaXQodm9pZCkKIHsKLSAgICBzdGF0aWMgY2hhciAqd2hhdG5hbWVzWzddID0geyJjYWxsIiwgImV4Y2VwdGlvbiIsICJsaW5lIiwgInJldHVybiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY19jYWxsIiwgImNfZXhjZXB0aW9uIiwgImNfcmV0dXJuIn07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB3aGF0bmFtZXNbN10gPSB7CisgICAgICAgICJjYWxsIiwgImV4Y2VwdGlvbiIsICJsaW5lIiwgInJldHVybiIsCisgICAgICAgICJjX2NhbGwiLCAiY19leGNlcHRpb24iLCAiY19yZXR1cm4iCisgICAgfTsKICAgICBQeU9iamVjdCAqbmFtZTsKICAgICBpbnQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgKytpKSB7CkBAIC0zNjYsMzQgKzM4NSwyNSBAQAogY2FsbF90cmFtcG9saW5lKFB5T2JqZWN0KiBjYWxsYmFjaywKICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmcmFtZSwgaW50IHdoYXQsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgUHlPYmplY3QgKndoYXRzdHI7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc3RhY2tbM107CiAKLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBpZiAoUHlGcmFtZV9GYXN0VG9Mb2NhbHNXaXRoRXJyb3IoZnJhbWUpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlGcmFtZV9GYXN0VG9Mb2NhbHNXaXRoRXJyb3IoZnJhbWUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgUHlfSU5DUkVGKGZyYW1lKTsKLSAgICB3aGF0c3RyID0gd2hhdHN0cmluZ3Nbd2hhdF07Ci0gICAgUHlfSU5DUkVGKHdoYXRzdHIpOwotICAgIGlmIChhcmcgPT0gTlVMTCkKLSAgICAgICAgYXJnID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoYXJnKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCAqKWZyYW1lKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIHdoYXRzdHIpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMiwgYXJnKTsKKyAgICBzdGFja1swXSA9IChQeU9iamVjdCAqKWZyYW1lOworICAgIHN0YWNrWzFdID0gd2hhdHN0cmluZ3Nbd2hhdF07CisgICAgc3RhY2tbMl0gPSAoYXJnICE9IE5VTEwpID8gYXJnIDogUHlfTm9uZTsKIAogICAgIC8qIGNhbGwgdGhlIFB5dGhvbi1sZXZlbCBmdW5jdGlvbiAqLwotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KGNhbGxiYWNrLCBhcmdzKTsKLSAgICBQeUZyYW1lX0xvY2Fsc1RvRmFzdChmcmFtZSwgMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBQeVRyYWNlQmFja19IZXJlKGZyYW1lKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGJhY2ssIHN0YWNrLCAzKTsKIAotICAgIC8qIGNsZWFudXAgKi8KLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZnJhbWUsIDEpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeVRyYWNlQmFja19IZXJlKGZyYW1lKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzQsMTAgKzQ0NCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHJlc3VsdCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gZnJhbWUtPmZfdHJhY2U7Ci0gICAgICAgIGZyYW1lLT5mX3RyYWNlID0gTlVMTDsKLSAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgZnJhbWUtPmZfdHJhY2UgPSByZXN1bHQ7CisgICAgICAgIFB5X1hTRVRSRUYoZnJhbWUtPmZfdHJhY2UsIHJlc3VsdCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTYwMiwzMyArNjA5LDYgQEAKIAogI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCiAKLSNpZmRlZiBXSVRIX1RTQwotc3RhdGljIFB5T2JqZWN0ICoKLXN5c19zZXR0c2NkdW1wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgYm9vbDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNldHRzY2R1bXAiLCAmYm9vbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChib29sKQotICAgICAgICB0c3RhdGUtPmludGVycC0+dHNjZHVtcCA9IDE7Ci0gICAgZWxzZQotICAgICAgICB0c3RhdGUtPmludGVycC0+dHNjZHVtcCA9IDA7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi19Ci0KLVB5RG9jX1NUUlZBUihzZXR0c2NkdW1wX2RvYywKLSJzZXR0c2NkdW1wKGJvb2wpXG5cCi1cblwKLUlmIHRydWUsIHRlbGwgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0byBkdW1wIFZNIG1lYXN1cmVtZW50cyB0b1xuXAotc3RkZXJyLiAgSWYgZmFsc2UsIHR1cm4gb2ZmIGR1bXAuICBUaGUgbWVhc3VyZW1lbnRzIGFyZSBiYXNlZCBvbiB0aGVcblwKLXByb2Nlc3NvcidzIHRpbWUtc3RhbXAgY291bnRlci4iCi0pOwotI2VuZGlmIC8qIFRTQyAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3lzX3NldHJlY3Vyc2lvbmxpbWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTcxMCw2ICs2OTAsMTEzIEBACiApOwogCiAKK3N0YXRpYyBQeVR5cGVPYmplY3QgQXN5bmNHZW5Ib29rc1R5cGU7CisKK1B5RG9jX1NUUlZBUihhc3luY2dlbl9ob29rc19kb2MsCisiYXN5bmNnZW5faG9va3NcblwKK1xuXAorQSBzdHJ1Y3Qgc2VxdWVuY2UgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGFzeW5ocm9ub3VzXG5cCitnZW5lcmF0b3JzIGhvb2tzLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgYXN5bmNnZW5faG9va3NfZmllbGRzW10gPSB7CisgICAgeyJmaXJzdGl0ZXIiLCAiSG9vayB0byBpbnRlcmNlcHQgZmlyc3QgaXRlcmF0aW9uIn0sCisgICAgeyJmaW5hbGl6ZXIiLCAiSG9vayB0byBpbnRlcmNlcHQgZmluYWxpemF0aW9uIn0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIGFzeW5jZ2VuX2hvb2tzX2Rlc2MgPSB7CisgICAgImFzeW5jZ2VuX2hvb2tzIiwgICAgICAgICAgLyogbmFtZSAqLworICAgIGFzeW5jZ2VuX2hvb2tzX2RvYywgICAgICAgIC8qIGRvYyAqLworICAgIGFzeW5jZ2VuX2hvb2tzX2ZpZWxkcyAsICAgIC8qIGZpZWxkcyAqLworICAgIDIKK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK3N5c19zZXRfYXN5bmNnZW5faG9va3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImZpcnN0aXRlciIsICJmaW5hbGl6ZXIiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmluYWxpemVyID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKAorICAgICAgICAgICAgYXJncywga3csICJ8T08iLCBrZXl3b3JkcywKKyAgICAgICAgICAgICZmaXJzdGl0ZXIsICZmaW5hbGl6ZXIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmaW5hbGl6ZXIgJiYgZmluYWxpemVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZpbmFsaXplcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIGZpbmFsaXplciBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZpbmFsaXplciktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihmaW5hbGl6ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChmaW5hbGl6ZXIgPT0gUHlfTm9uZSkgeworICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmluYWxpemVyKE5VTEwpOworICAgIH0KKworICAgIGlmIChmaXJzdGl0ZXIgJiYgZmlyc3RpdGVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZpcnN0aXRlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIGZpcnN0aXRlciBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZpcnN0aXRlciktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihmaXJzdGl0ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChmaXJzdGl0ZXIgPT0gUHlfTm9uZSkgeworICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKE5VTEwpOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0X2FzeW5jZ2VuX2hvb2tzX2RvYywKKyJzZXRfYXN5bmNnZW5faG9va3MoKiwgZmlyc3RpdGVyPU5vbmUsIGZpbmFsaXplcj1Ob25lKVxuXAorXG5cCitTZXQgYSBmaW5hbGl6ZXIgZm9yIGFzeW5jIGdlbmVyYXRvcnMgb2JqZWN0cy4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2dldF9hc3luY2dlbl9ob29rcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyID0gX1B5RXZhbF9HZXRBc3luY0dlbkZpcnN0aXRlcigpOworICAgIFB5T2JqZWN0ICpmaW5hbGl6ZXIgPSBfUHlFdmFsX0dldEFzeW5jR2VuRmluYWxpemVyKCk7CisKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmQXN5bmNHZW5Ib29rc1R5cGUpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZmlyc3RpdGVyID09IE5VTEwpIHsKKyAgICAgICAgZmlyc3RpdGVyID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBpZiAoZmluYWxpemVyID09IE5VTEwpIHsKKyAgICAgICAgZmluYWxpemVyID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZmlyc3RpdGVyKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgZmlyc3RpdGVyKTsKKworICAgIFB5X0lOQ1JFRihmaW5hbGl6ZXIpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAxLCBmaW5hbGl6ZXIpOworCisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSKGdldF9hc3luY2dlbl9ob29rc19kb2MsCisiZ2V0X2FzeW5jZ2VuX2hvb2tzKClcblwKK1xuXAorUmV0dXJuIGEgbmFtZWR0dXBsZSBvZiBpbnN0YWxsZWQgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMgaG9va3MgXAorKGZpcnN0aXRlciwgZmluYWxpemVyKS4iCispOworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgSGFzaF9JbmZvVHlwZTsKIAogUHlEb2NfU1RSVkFSKGhhc2hfaW5mb19kb2MsCkBAIC04MDcsMTAgKzg5NCwxMSBAQAogVGhlIG1lbWJlcnMgYXJlIG5hbWVkOiBtYWpvciwgbWlub3IsIGJ1aWxkLCBwbGF0Zm9ybSwgc2VydmljZV9wYWNrLFxuXAogc2VydmljZV9wYWNrX21ham9yLCBzZXJ2aWNlX3BhY2tfbWlub3IsIHN1aXRlX21hc2ssIGFuZCBwcm9kdWN0X3R5cGUuIEZvclxuXAogYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgb25seSB0aGUgZmlyc3QgNSBpdGVtcyBhcmUgYXZhaWxhYmxlIGJ5IGluZGV4aW5nLlxuXAotQWxsIGVsZW1lbnRzIGFyZSBudW1iZXJzLCBleGNlcHQgc2VydmljZV9wYWNrIHdoaWNoIGlzIGEgc3RyaW5nLiBQbGF0Zm9ybVxuXAotbWF5IGJlIDAgZm9yIHdpbjMycywgMSBmb3IgV2luZG93cyA5eC9NRSwgMiBmb3IgV2luZG93cyBOVC8yMDAwL1hQL1Zpc3RhLzcsXG5cCi0zIGZvciBXaW5kb3dzIENFLiBQcm9kdWN0X3R5cGUgbWF5IGJlIDEgZm9yIGEgd29ya3N0YXRpb24sIDIgZm9yIGEgZG9tYWluXG5cCi1jb250cm9sbGVyLCAzIGZvciBhIHNlcnZlci4iCitBbGwgZWxlbWVudHMgYXJlIG51bWJlcnMsIGV4Y2VwdCBzZXJ2aWNlX3BhY2sgYW5kIHBsYXRmb3JtX3R5cGUgd2hpY2ggYXJlXG5cCitzdHJpbmdzLCBhbmQgcGxhdGZvcm1fdmVyc2lvbiB3aGljaCBpcyBhIDMtdHVwbGUuIFBsYXRmb3JtIGlzIGFsd2F5cyAyLlxuXAorUHJvZHVjdF90eXBlIG1heSBiZSAxIGZvciBhIHdvcmtzdGF0aW9uLCAyIGZvciBhIGRvbWFpbiBjb250cm9sbGVyLCAzIGZvciBhXG5cCitzZXJ2ZXIuIFBsYXRmb3JtX3ZlcnNpb24gaXMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgYSB2ZXJzaW9uIG51bWJlciB0aGF0IGlzXG5cCitpbnRlbmRlZCBmb3IgaWRlbnRpZnlpbmcgdGhlIE9TIHJhdGhlciB0aGFuIGZlYXR1cmUgZGV0ZWN0aW9uLiIKICk7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgV2luZG93c1ZlcnNpb25UeXBlID0gezAsIDAsIDAsIDAsIDAsIDB9OwpAQCAtODI1LDcgKzkxMyw3IEBACiAgICAgeyJzZXJ2aWNlX3BhY2tfbWlub3IiLCAiU2VydmljZSBQYWNrIG1pbm9yIHZlcnNpb24gbnVtYmVyIn0sCiAgICAgeyJzdWl0ZV9tYXNrIiwgIkJpdCBtYXNrIGlkZW50aWZ5aW5nIGF2YWlsYWJsZSBwcm9kdWN0IHN1aXRlcyJ9LAogICAgIHsicHJvZHVjdF90eXBlIiwgIlN5c3RlbSBwcm9kdWN0IHR5cGUifSwKLSAgICB7Il9wbGF0Zm9ybV92ZXJzaW9uIiwgIkRpYWdub3N0aWMgdmVyc2lvbiBudW1iZXIifSwKKyAgICB7InBsYXRmb3JtX3ZlcnNpb24iLCAiRGlhZ25vc3RpYyB2ZXJzaW9uIG51bWJlciJ9LAogICAgIHswfQogfTsKIApAQCAtOTEzLDYgKzEwMDEsMjQgQEAKIAogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAorUHlEb2NfU1RSVkFSKGVuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nX2RvYywKKyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoKVxuXAorXG5cCitDaGFuZ2VzIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcgdG8gbWJjczpyZXBsYWNlIGZvciBjb25zaXN0ZW5jeVxuXAord2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbi4gU2VlIFBFUCA1MjkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cCitcblwKK1RoaXMgaXMgZXF1aXZhbGVudCB0byBkZWZpbmluZyB0aGUgUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkcgXG5cCitlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUgbGF1bmNoaW5nIFB5dGhvbi4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAicmVwbGFjZSI7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKICNpZmRlZiBIQVZFX0RMT1BFTgpAQCAtMTE4OSw4ICsxMjk1LDEwIEBACiBzeXNfZGVidWdtYWxsb2NzdGF0cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAjaWZkZWYgV0lUSF9QWU1BTExPQwotICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7Ci0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBpZiAoX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCgpKSB7CisgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgfQogI2VuZGlmCiAgICAgX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzKHN0ZGVycik7CiAKQEAgLTEyNzAsNiArMTM3OCw4IEBACiAjZW5kaWYKICAgICB7ImdldGZpbGVzeXN0ZW1lbmNvZGluZyIsIChQeUNGdW5jdGlvbilzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kaW5nLAogICAgICBNRVRIX05PQVJHUywgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nX2RvY30sCisgICAgeyAiZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycyIsIChQeUNGdW5jdGlvbilzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycywKKyAgICAgTUVUSF9OT0FSR1MsIGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnNfZG9jIH0sCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogICAgIHsiZ2V0b2JqZWN0cyIsICAgICAgX1B5X0dldE9iamVjdHMsIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKQEAgLTEyODUsNiArMTM5NSw4IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHsiZ2V0d2luZG93c3ZlcnNpb24iLCAoUHlDRnVuY3Rpb24pc3lzX2dldHdpbmRvd3N2ZXJzaW9uLCBNRVRIX05PQVJHUywKICAgICAgZ2V0d2luZG93c3ZlcnNpb25fZG9jfSwKKyAgICB7Il9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZyIsIChQeUNGdW5jdGlvbilzeXNfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcsCisgICAgIE1FVEhfTk9BUkdTLCBlbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ19kb2MgfSwKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgeyJpbnRlcm4iLCAgICAgICAgICBzeXNfaW50ZXJuLCAgICAgTUVUSF9WQVJBUkdTLCBpbnRlcm5fZG9jfSwKICAgICB7ImlzX2ZpbmFsaXppbmciLCAgIHN5c19pc19maW5hbGl6aW5nLCBNRVRIX05PQVJHUywgaXNfZmluYWxpemluZ19kb2N9LApAQCAtMTMwOSw5ICsxNDIxLDYgQEAKICAgICB7ImdldHByb2ZpbGUiLCAgICAgIHN5c19nZXRwcm9maWxlLCBNRVRIX05PQVJHUywgZ2V0cHJvZmlsZV9kb2N9LAogICAgIHsic2V0cmVjdXJzaW9ubGltaXQiLCBzeXNfc2V0cmVjdXJzaW9ubGltaXQsIE1FVEhfVkFSQVJHUywKICAgICAgc2V0cmVjdXJzaW9ubGltaXRfZG9jfSwKLSNpZmRlZiBXSVRIX1RTQwotICAgIHsic2V0dHNjZHVtcCIsIHN5c19zZXR0c2NkdW1wLCBNRVRIX1ZBUkFSR1MsIHNldHRzY2R1bXBfZG9jfSwKLSNlbmRpZgogICAgIHsic2V0dHJhY2UiLCAgICAgICAgc3lzX3NldHRyYWNlLCBNRVRIX08sIHNldHRyYWNlX2RvY30sCiAgICAgeyJnZXR0cmFjZSIsICAgICAgICBzeXNfZ2V0dHJhY2UsIE1FVEhfTk9BUkdTLCBnZXR0cmFjZV9kb2N9LAogICAgIHsiY2FsbF90cmFjaW5nIiwgc3lzX2NhbGxfdHJhY2luZywgTUVUSF9WQVJBUkdTLCBjYWxsX3RyYWNpbmdfZG9jfSwKQEAgLTEzMjEsNiArMTQzMCwxMCBAQAogICAgICBzZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKICAgICB7ImdldF9jb3JvdXRpbmVfd3JhcHBlciIsIHN5c19nZXRfY29yb3V0aW5lX3dyYXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBnZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKKyAgICB7InNldF9hc3luY2dlbl9ob29rcyIsIChQeUNGdW5jdGlvbilzeXNfc2V0X2FzeW5jZ2VuX2hvb2tzLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzZXRfYXN5bmNnZW5faG9va3NfZG9jfSwKKyAgICB7ImdldF9hc3luY2dlbl9ob29rcyIsIHN5c19nZXRfYXN5bmNnZW5faG9va3MsIE1FVEhfTk9BUkdTLAorICAgICBnZXRfYXN5bmNnZW5faG9va3NfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTUwMSwxNCArMTYxNCwyMSBAQAogdmVyc2lvbl9pbmZvIC0tIHZlcnNpb24gaW5mb3JtYXRpb24gYXMgYSBuYW1lZCB0dXBsZVxuXAogIgogKQotI2lmZGVmIE1TX1dJTkRPV1MKKyNpZmRlZiBNU19DT1JFRExMCiAvKiBjb25jYXRlbmF0aW5nIHN0cmluZyBoZXJlICovCiBQeURvY19TVFIoCiAiZGxsaGFuZGxlIC0tIFtXaW5kb3dzIG9ubHldIGludGVnZXIgaGFuZGxlIG9mIHRoZSBQeXRob24gRExMXG5cCiB3aW52ZXIgLS0gW1dpbmRvd3Mgb25seV0gdmVyc2lvbiBudW1iZXIgb2YgdGhlIFB5dGhvbiBETExcblwKICIKICkKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogTVNfQ09SRURMTCAqLworI2lmZGVmIE1TX1dJTkRPV1MKKy8qIGNvbmNhdGVuYXRpbmcgc3RyaW5nIGhlcmUgKi8KK1B5RG9jX1NUUigKKyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcgLS0gW1dpbmRvd3Mgb25seV0gXG5cCisiCispCisjZW5kaWYKIFB5RG9jX1NUUigKICJfX3N0ZGluX18gLS0gdGhlIG9yaWdpbmFsIHN0ZGluOyBkb24ndCB0b3VjaCFcblwKIF9fc3Rkb3V0X18gLS0gdGhlIG9yaWdpbmFsIHN0ZG91dDsgZG9uJ3QgdG91Y2ghXG5cCkBAIC0xNjgwLDE1ICsxODAwLDExIEBACiAvKiBzeXMuaW1wbGVtZW50YXRpb24gdmFsdWVzICovCiAjZGVmaW5lIE5BTUUgImNweXRob24iCiBjb25zdCBjaGFyICpfUHlTeXNfSW1wbE5hbWUgPSBOQU1FOwotI2RlZmluZSBRVU9URShhcmcpICNhcmcKLSNkZWZpbmUgU1RSSUZZKG5hbWUpIFFVT1RFKG5hbWUpCi0jZGVmaW5lIE1BSk9SIFNUUklGWShQWV9NQUpPUl9WRVJTSU9OKQotI2RlZmluZSBNSU5PUiBTVFJJRlkoUFlfTUlOT1JfVkVSU0lPTikKKyNkZWZpbmUgTUFKT1IgUHlfU1RSSU5HSUZZKFBZX01BSk9SX1ZFUlNJT04pCisjZGVmaW5lIE1JTk9SIFB5X1NUUklOR0lGWShQWV9NSU5PUl9WRVJTSU9OKQogI2RlZmluZSBUQUcgTkFNRSAiLSIgTUFKT1IgTUlOT1IKIGNvbnN0IGNoYXIgKl9QeVN5c19JbXBsQ2FjaGVUYWcgPSBUQUc7CiAjdW5kZWYgTkFNRQotI3VuZGVmIFFVT1RFCi0jdW5kZWYgU1RSSUZZCiAjdW5kZWYgTUFKT1IKICN1bmRlZiBNSU5PUgogI3VuZGVmIFRBRwpAQCAtMTczMyw2ICsxODQ5LDE2IEBACiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKKyNpZmRlZiBNVUxUSUFSQ0gKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKE1VTFRJQVJDSCk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAiX211bHRpYXJjaCIsIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworI2VuZGlmCisKICAgICAvKiBkaWN0IHJlYWR5ICovCiAKICAgICBucyA9IF9QeU5hbWVzcGFjZV9OZXcoaW1wbF9pbmZvKTsKQEAgLTE5NDMsNiArMjA2OSwxNCBAQAogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInRocmVhZF9pbmZvIiwgUHlUaHJlYWRfR2V0SW5mbygpKTsKICNlbmRpZgogCisgICAgLyogaW5pdGlhbGl6ZSBhc3luY2dlbl9ob29rcyAqLworICAgIGlmIChBc3luY0dlbkhvb2tzVHlwZS50cF9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKAorICAgICAgICAgICAgICAgICZBc3luY0dlbkhvb2tzVHlwZSwgJmFzeW5jZ2VuX2hvb2tzX2Rlc2MpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKICN1bmRlZiBTRVRfU1lTX0ZST01fU1RSSU5HCiAjdW5kZWYgU0VUX1NZU19GUk9NX1NUUklOR19CT1JST1cKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTIwMzksNyArMjE3Myw3IEBACiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfUkVBTFBBVEgpCiAgICAgd2NoYXJfdCBmdWxscGF0aFtNQVhQQVRITEVOXTsKLSNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoTVNfV0lOQ0UpCisjZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2NoYXJfdCBmdWxscGF0aFtNQVhfUEFUSF07CiAjZW5kaWYKIApAQCAtMjA3OCwxMCArMjIxMiw4IEBACiAjaWYgU0VQID09ICdcXCcgLyogU3BlY2lhbCBjYXNlIGZvciBNUyBmaWxlbmFtZSBzeW50YXggKi8KICAgICBpZiAoX0hBVkVfU0NSSVBUX0FSR1VNRU5UKGFyZ2MsIGFyZ3YpKSB7CiAgICAgICAgIHdjaGFyX3QgKnE7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChNU19XSU5DRSkKLSAgICAgICAgLyogVGhpcyBjb2RlIGhlcmUgcmVwbGFjZXMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYXJndiB3aXRoIHRoZSBmdWxsCi0gICAgICAgIHBhdGggdGhhdCBpdCByZXByZXNlbnRzLiBVbmRlciBDRSwgdGhlcmUgYXJlIG5vIHJlbGF0aXZlIHBhdGhzIHNvCi0gICAgICAgIHRoZSBhcmd1bWVudCBtdXN0IGJlIHRoZSBmdWxsIHBhdGggYW55d2F5LiAqLworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICAgICAgLyogUmVwbGFjZSB0aGUgZmlyc3QgZWxlbWVudCBpbiBhcmd2IHdpdGggdGhlIGZ1bGwgcGF0aC4gKi8KICAgICAgICAgd2NoYXJfdCAqcHRlbXA7CiAgICAgICAgIGlmIChHZXRGdWxsUGF0aE5hbWVXKGFyZ3YwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKGZ1bGxwYXRoKSwKQEAgLTIxNTEsNyArMjI4Myw3IEBACiBzdGF0aWMgaW50CiBzeXNfcHlmaWxlX3dyaXRlX3VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICpmaWxlKQogewotICAgIFB5T2JqZWN0ICp3cml0ZXIgPSBOVUxMLCAqYXJncyA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp3cml0ZXIgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgZXJyOwogCiAgICAgaWYgKGZpbGUgPT0gTlVMTCkKQEAgLTIxNjEsMTEgKzIyOTMsNyBAQAogICAgIGlmICh3cml0ZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdW5pY29kZSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KHdyaXRlciwgYXJncyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKHdyaXRlciwgdW5pY29kZSk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfSBlbHNlIHsKQEAgLTIxNzcsNyArMjMwNSw2IEBACiAgICAgZXJyID0gLTE7CiBmaW5hbGx5OgogICAgIFB5X1hERUNSRUYod3JpdGVyKTsKLSAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIFB5X1hERUNSRUYocmVzdWx0KTsKICAgICByZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9udC5oIGIvUHl0aG9uL3RocmVhZF9udC5oCmluZGV4IGIyOWIxYjYuLjc0YTZlZTggMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfbnQuaAorKysgYi9QeXRob24vdGhyZWFkX250LmgKQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgLyogd2FpdCBhdCBsZWFzdCB1bnRpbCB0aGUgdGFyZ2V0ICovCiAgICAgICAgIERXT1JEIG5vdywgdGFyZ2V0ID0gR2V0VGlja0NvdW50KCkgKyBtaWxsaXNlY29uZHM7CiAgICAgICAgIHdoaWxlIChtdXRleC0+bG9ja2VkKSB7Ci0gICAgICAgICAgICBpZiAoUHlDT05EX1RJTUVEV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzLCAoUFlfTE9OR19MT05HKW1pbGxpc2Vjb25kcyoxMDAwKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfVElNRURXQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MsIChsb25nIGxvbmcpbWlsbGlzZWNvbmRzKjEwMDApIDwgMCkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdBSVRfRkFJTEVEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTYxLDExICsxNjEsNyBAQAogCiAvKiB0aHVua2VyIHRvIGNhbGwgYWRhcHQgYmV0d2VlbiB0aGUgZnVuY3Rpb24gdHlwZSB1c2VkIGJ5IHRoZSBzeXN0ZW0ncwogdGhyZWFkIHN0YXJ0IGZ1bmN0aW9uIGFuZCB0aGUgaW50ZXJuYWxseSB1c2VkIG9uZS4gKi8KLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotc3RhdGljIERXT1JEIFdJTkFQSQotI2Vsc2UKIHN0YXRpYyB1bnNpZ25lZCBfX3N0ZGNhbGwKLSNlbmRpZgogYm9vdHN0cmFwKHZvaWQgKmNhbGwpCiB7CiAgICAgY2FsbG9iaiAqb2JqID0gKGNhbGxvYmoqKWNhbGw7CkBAIC0xOTMsMzIgKzE4OSwxOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgb2JqLT5mdW5jID0gZnVuYzsKICAgICBvYmotPmFyZyA9IGFyZzsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgIGhUaHJlYWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QoX3B5dGhyZWFkX3N0YWNrc2l6ZSwgUHlfc3NpemVfdCwgU0laRV9UKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcCwgb2JqLCAwLCAmdGhyZWFkSUQpOwotI2Vsc2UKICAgICBoVGhyZWFkID0gKEhBTkRMRSlfYmVnaW50aHJlYWRleCgwLAogICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QoX3B5dGhyZWFkX3N0YWNrc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QsIHVuc2lnbmVkIGludCksCiAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwLCBvYmosCiAgICAgICAgICAgICAgICAgICAgICAgMCwgJnRocmVhZElEKTsKLSNlbmRpZgogICAgIGlmIChoVGhyZWFkID09IDApIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgICAgICAvKiBTYXZlIGVycm9yIGluIHZhcmlhYmxlLCB0byBwcmV2ZW50IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQKLSAgICAgICAgICAgZnJvbSBjbG9iYmVyaW5nIGl0LiAqLwotICAgICAgICB1bnNpZ25lZCBlID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgZmFpbGVkLCB3aW4zMiBlcnJvciBjb2RlICV1XG4iLAotICAgICAgICAgICAgICAgICBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGUpKTsKLSNlbHNlCiAgICAgICAgIC8qIEkndmUgc2VlbiBlcnJubyA9PSBFQUdBSU4gaGVyZSwgd2hpY2ggbWVhbnMgInRoZXJlIGFyZQogICAgICAgICAgKiB0b28gbWFueSB0aHJlYWRzIi4KICAgICAgICAgICovCiAgICAgICAgIGludCBlID0gZXJybm87CiAgICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgZmFpbGVkLCBlcnJubyAlZFxuIiwKICAgICAgICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLCBlKSk7Ci0jZW5kaWYKICAgICAgICAgdGhyZWFkSUQgPSAodW5zaWduZWQpLTE7CiAgICAgICAgIEhlYXBGcmVlKEdldFByb2Nlc3NIZWFwKCksIDAsIG9iaik7CiAgICAgfQpAQCAtMjQ5LDExICsyMzEsNyBAQAogICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7CiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgZXhpdCgwKTsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgIEV4aXRUaHJlYWQoMCk7Ci0jZWxzZQogICAgIF9lbmR0aHJlYWRleCgwKTsKLSNlbmRpZgogfQogCiAvKgpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RyYWNlYmFjay5jIGIvUHl0aG9uL3RyYWNlYmFjay5jCmluZGV4IDk0MWQxY2IuLmU4YWFjMWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90cmFjZWJhY2suYworKysgYi9QeXRob24vdHJhY2ViYWNrLmMKQEAgLTMxNCw3ICszMTQsNyBAQAogICAgIGlmIChmb2IgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoYmluYXJ5LCAmUHlJZF9jbG9zZSwgIiIpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJpbmFyeSwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoYmluYXJ5KTsKICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMzM0LDcgKzMzNCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvYiwgJlB5SWRfY2xvc2UsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvYiwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgIGlmIChyZXMpCiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIGVsc2UKQEAgLTQxMiw2ICs0MTIsMTEgQEAKIHsKICAgICBpbnQgZXJyID0gMDsKICAgICBsb25nIGRlcHRoID0gMDsKKyAgICBQeU9iamVjdCAqbGFzdF9maWxlID0gTlVMTDsKKyAgICBpbnQgbGFzdF9saW5lID0gLTE7CisgICAgUHlPYmplY3QgKmxhc3RfbmFtZSA9IE5VTEw7CisgICAgbG9uZyBjbnQgPSAwOworICAgIFB5T2JqZWN0ICpsaW5lOwogICAgIFB5VHJhY2ViYWNrT2JqZWN0ICp0YjEgPSB0YjsKICAgICB3aGlsZSAodGIxICE9IE5VTEwpIHsKICAgICAgICAgZGVwdGgrKzsKQEAgLTQxOSwxNiArNDI0LDQxIEBACiAgICAgfQogICAgIHdoaWxlICh0YiAhPSBOVUxMICYmIGVyciA9PSAwKSB7CiAgICAgICAgIGlmIChkZXB0aCA8PSBsaW1pdCkgewotICAgICAgICAgICAgZXJyID0gdGJfZGlzcGxheWxpbmUoZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgICAgICAgICBpZiAobGFzdF9maWxlICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUgPT0gbGFzdF9maWxlICYmCisgICAgICAgICAgICAgICAgbGFzdF9saW5lICE9IC0xICYmIHRiLT50Yl9saW5lbm8gPT0gbGFzdF9saW5lICYmCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSA9PSBsYXN0X25hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgY250Kys7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNudCA+IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICIgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkICVkIG1vcmUgdGltZXNdXG4iLCBjbnQtMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQeUZpbGVfV3JpdGVPYmplY3QobGluZSwgZiwgUHlfUFJJTlRfUkFXKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBsYXN0X2ZpbGUgPSB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZSA9IHRiLT50Yl9saW5lbm87CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbmFtZSA9IHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lOworICAgICAgICAgICAgICAgICAgICBjbnQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjbnQgPCAzKQorICAgICAgICAgICAgICAgIGVyciA9IHRiX2Rpc3BsYXlsaW5lKGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9saW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWUpOwogICAgICAgICB9CiAgICAgICAgIGRlcHRoLS07CiAgICAgICAgIHRiID0gdGItPnRiX25leHQ7CiAgICAgICAgIGlmIChlcnIgPT0gMCkKICAgICAgICAgICAgIGVyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpOwogICAgIH0KKyAgICBpZiAoY250ID4gMykgeworICAgICAgICBsaW5lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICIgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkICVkIG1vcmUgdGltZXNdXG4iLCBjbnQtMyk7CisgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChsaW5lLCBmLCBQeV9QUklOVF9SQVcpOworICAgICAgICBQeV9ERUNSRUYobGluZSk7CisgICAgfQogICAgIHJldHVybiBlcnI7CiB9CiAKQEAgLTQ3OSw0MCArNTA5LDI2IEBACiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCiAKLXN0YXRpYyB2b2lkCi1yZXZlcnNlX3N0cmluZyhjaGFyICp0ZXh0LCBjb25zdCBzaXplX3QgbGVuKQordm9pZAorX1B5X0R1bXBEZWNpbWFsKGludCBmZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKIHsKLSAgICBjaGFyIHRtcDsKLSAgICBzaXplX3QgaSwgajsKLSAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKGk9MCwgaj1sZW4tMTsgaSA8IGo7IGkrKywgai0tKSB7Ci0gICAgICAgIHRtcCA9IHRleHRbaV07Ci0gICAgICAgIHRleHRbaV0gPSB0ZXh0W2pdOwotICAgICAgICB0ZXh0W2pdID0gdG1wOwotICAgIH0KLX0KKyAgICAvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxsZCBvciAlcC4KKyAgICAgICBXZSBuZWVkIGF0IG1vc3QgY2VpbChsb2cxMCgyNTYpKlNJWkVPRl9MT05HX0xPTkcpIGRpZ2l0cywKKyAgICAgICBwbHVzIDEgZm9yIHRoZSBudWxsIGJ5dGUuICA1My8yMiBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nMTAoMjU2KS4gKi8KKyAgICBjaGFyIGJ1ZmZlclsxICsgKHNpemVvZih1bnNpZ25lZCBsb25nKSo1My0xKSAvIDIyICsgMV07CisgICAgY2hhciAqcHRyLCAqZW5kOwogCi0vKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgOTk5OTk5XSB0byBkZWNpbWFsLAotICAgYW5kIHdyaXRlIGl0IGludG8gdGhlIGZpbGUgZmQuCi0KLSAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCi0KLXN0YXRpYyB2b2lkCi1kdW1wX2RlY2ltYWwoaW50IGZkLCBpbnQgdmFsdWUpCi17Ci0gICAgY2hhciBidWZmZXJbN107Ci0gICAgaW50IGxlbjsKLSAgICBpZiAodmFsdWUgPCAwIHx8IDk5OTk5OSA8IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgbGVuID0gMDsKKyAgICBlbmQgPSAmYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChidWZmZXIpIC0gMV07CisgICAgcHRyID0gZW5kOworICAgICpwdHIgPSAnXDAnOwogICAgIGRvIHsKLSAgICAgICAgYnVmZmVyW2xlbl0gPSAnMCcgKyAodmFsdWUgJSAxMCk7CisgICAgICAgIC0tcHRyOworICAgICAgICBhc3NlcnQocHRyID49IGJ1ZmZlcik7CisgICAgICAgICpwdHIgPSAnMCcgKyAodmFsdWUgJSAxMCk7CiAgICAgICAgIHZhbHVlIC89IDEwOwotICAgICAgICBsZW4rKzsKICAgICB9IHdoaWxlICh2YWx1ZSk7Ci0gICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOwotICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBidWZmZXIsIGxlbik7CisKKyAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgcHRyLCBlbmQgLSBwdHIpOwogfQogCiAvKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMHhmZmZmZmZmZl0gdG8gaGV4YWRlY2ltYWwgb2YgJ3dpZHRoJyBkaWdpdHMsCkBAIC01MjAsMjcgKzUzNiwzMSBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwogCi1zdGF0aWMgdm9pZAotZHVtcF9oZXhhZGVjaW1hbChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgdmFsdWUsIGludCB3aWR0aCkKK3ZvaWQKK19QeV9EdW1wSGV4YWRlY2ltYWwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHZhbHVlLCBQeV9zc2l6ZV90IHdpZHRoKQogewotICAgIGludCBsZW47Ci0gICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdOwotICAgIGxlbiA9IDA7CisgICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdLCAqcHRyLCAqZW5kOworICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZSA9IFB5X0FSUkFZX0xFTkdUSChidWZmZXIpIC0gMTsKKworICAgIGlmICh3aWR0aCA+IHNpemUpCisgICAgICAgIHdpZHRoID0gc2l6ZTsKKyAgICAvKiBpdCdzIG9rIGlmIHdpZHRoIGlzIG5lZ2F0aXZlICovCisKKyAgICBlbmQgPSAmYnVmZmVyW3NpemVdOworICAgIHB0ciA9IGVuZDsKKyAgICAqcHRyID0gJ1wwJzsKICAgICBkbyB7Ci0gICAgICAgIGJ1ZmZlcltsZW5dID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOworICAgICAgICAtLXB0cjsKKyAgICAgICAgYXNzZXJ0KHB0ciA+PSBidWZmZXIpOworICAgICAgICAqcHRyID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOwogICAgICAgICB2YWx1ZSA+Pj0gNDsKLSAgICAgICAgbGVuKys7Ci0gICAgfSB3aGlsZSAobGVuIDwgd2lkdGggfHwgdmFsdWUpOwotICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKLSAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgYnVmZmVyLCBsZW4pOworICAgIH0gd2hpbGUgKChlbmQgLSBwdHIpIDwgd2lkdGggfHwgdmFsdWUpOworCisgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHB0ciwgZW5kIC0gcHRyKTsKIH0KIAotLyogV3JpdGUgYW4gdW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBmZCB1c2luZyBhc2NpaStiYWNrc2xhc2hyZXBsYWNlLgotCi0gICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwotCi1zdGF0aWMgdm9pZAotZHVtcF9hc2NpaShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQordm9pZAorX1B5X0R1bXBBU0NJSShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQogewogICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKil0ZXh0OwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKQEAgLTU1MCwzMiArNTcwLDM2IEBACiAgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CiAgICAgUHlfVUNTNCBjaDsKIAorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHRleHQpKQorICAgICAgICByZXR1cm47CisKICAgICBzaXplID0gYXNjaWktPmxlbmd0aDsKICAgICBraW5kID0gYXNjaWktPnN0YXRlLmtpbmQ7Ci0gICAgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0KSB7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgd3N0ciA9ICgoUHlBU0NJSU9iamVjdCAqKXRleHQpLT53c3RyOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzaXplID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopdGV4dCktPndzdHJfbGVuZ3RoOworICAgIH0KKyAgICBlbHNlIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkgewogICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpKQogICAgICAgICAgICAgZGF0YSA9ICgoUHlBU0NJSU9iamVjdCopdGV4dCkgKyAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkYXRhID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kil0ZXh0KSArIDE7CiAgICAgfQotICAgIGVsc2UgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICBlbHNlIHsKICAgICAgICAgZGF0YSA9ICgoUHlVbmljb2RlT2JqZWN0ICopdGV4dCktPmRhdGEuYW55OwogICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgd3N0ciA9ICgoUHlBU0NJSU9iamVjdCAqKXRleHQpLT53c3RyOwotICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzaXplID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopdGV4dCktPndzdHJfbGVuZ3RoOwotICAgIH0KIAogICAgIGlmIChNQVhfU1RSSU5HX0xFTkdUSCA8IHNpemUpIHsKICAgICAgICAgc2l6ZSA9IE1BWF9TVFJJTkdfTEVOR1RIOwogICAgICAgICB0cnVuY2F0ZWQgPSAxOwogICAgIH0KLSAgICBlbHNlCisgICAgZWxzZSB7CiAgICAgICAgIHRydW5jYXRlZCA9IDA7CisgICAgfQogCiAgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCkBAIC01ODksMTkgKzYxMywyMCBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHgiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCAyKTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCAyKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHUiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCA0KTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCA0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXFUiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCA4KTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCA4KTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAodHJ1bmNhdGVkKQorICAgIGlmICh0cnVuY2F0ZWQpIHsKICAgICAgICAgUFVUUyhmZCwgIi4uLiIpOworICAgIH0KIH0KIAogLyogV3JpdGUgYSBmcmFtZSBpbnRvIHRoZSBmaWxlIGZkOiAiRmlsZSAieHh4IiwgbGluZSB4eHggaW4geHh4Ii4KQEAgLTYyMCw3ICs2NDUsNyBAQAogICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fZmlsZW5hbWUpKQogICAgIHsKICAgICAgICAgUFVUUyhmZCwgIlwiIik7Ci0gICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICAgICAgX1B5X0R1bXBBU0NJSShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOwogICAgICAgICBQVVRTKGZkLCAiXCIiKTsKICAgICB9IGVsc2UgewogICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CkBAIC02MjksMTQgKzY1NCwyMSBAQAogICAgIC8qIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjcuMCBhbmQgMy4yLjAgKi8KICAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGNvZGUsIGZyYW1lLT5mX2xhc3RpKTsKICAgICBQVVRTKGZkLCAiLCBsaW5lICIpOwotICAgIGR1bXBfZGVjaW1hbChmZCwgbGluZW5vKTsKKyAgICBpZiAobGluZW5vID49IDApIHsKKyAgICAgICAgX1B5X0R1bXBEZWNpbWFsKGZkLCAodW5zaWduZWQgbG9uZylsaW5lbm8pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KICAgICBQVVRTKGZkLCAiIGluICIpOwogCiAgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19uYW1lICE9IE5VTEwKLSAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKQotICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19uYW1lKTsKLSAgICBlbHNlCisgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKSB7CisgICAgICAgIF9QeV9EdW1wQVNDSUkoZmQsIGNvZGUtPmNvX25hbWUpOworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KIAogICAgIFBVVFMoZmQsICJcbiIpOwogfQpAQCAtNjkyLDcgKzcyNCw5IEBACiAgICAgICAgIFBVVFMoZmQsICJDdXJyZW50IHRocmVhZCAweCIpOwogICAgIGVsc2UKICAgICAgICAgUFVUUyhmZCwgIlRocmVhZCAweCIpOwotICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLCBzaXplb2YodW5zaWduZWQgbG9uZykqMik7CisgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMik7CiAgICAgUFVUUyhmZCwgIiAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4iKTsKIH0KIApAQCAtNzA0LDExICs3MzgsNTYgQEAKICAgIGhhbmRsZXJzIGlmIHNpZ25hbHMgd2VyZSByZWNlaXZlZC4gKi8KIGNvbnN0IGNoYXIqCiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RzdGF0ZSkKIHsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgdW5zaWduZWQgaW50IG50aHJlYWRzOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoKSBpcyBjYWxsZWQgZnJvbSBzaWduYWwgaGFuZGxlcnMgYnkKKyAgICAgICAgICAgZmF1bHRoYW5kbGVyLgorCisgICAgICAgICAgIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgYXJlIHN5bmNocm9ub3VzIHNpZ25hbHMKKyAgICAgICAgICAgYW5kIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZQorICAgICAgICAgICBQeXRob24gdGhyZWFkIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKworICAgICAgICAgICBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIHRocmVhZCB0aGF0IGNhdXNlZAorICAgICAgICAgICB0aGUgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbgorICAgICAgICAgICBjYW5ub3QgYmUgdXNlZC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgaW5zdGVhZDogY2FsbAorICAgICAgICAgICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpLiAqLworICAgICAgICBjdXJyZW50X3RzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CisgICAgfQorCisgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpbnRlcnAgPSBfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKCk7CisgICAgICAgICAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBXZSBuZWVkIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB0byBnZXQgUHl0aG9uIHRocmVhZHMgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gInVuYWJsZSB0byBnZXQgdGhlIGludGVycHJldGVyIHN0YXRlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludGVycCA9IGN1cnJlbnRfdHN0YXRlLT5pbnRlcnA7CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIENhbGwgX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCkgaW5zdGVhZCBvZiBQeVRocmVhZFN0YXRlX0dldCgpCisgICAgICAgICAgIHRvIG5vdCBmYWlsIHdpdGggYSBmYXRhbCBlcnJvciBpZiB0aGUgdGhyZWFkIHN0YXRlIGlzIE5VTEwuICovCisgICAgICAgIGN1cnJlbnRfdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CisgICAgfQorCisgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBXZSBuZWVkIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB0byBnZXQgUHl0aG9uIHRocmVhZHMgKi8KKyAgICAgICAgICAgIHJldHVybiAidW5hYmxlIHRvIGdldCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUiOworICAgICAgICB9CisgICAgICAgIGludGVycCA9IGN1cnJlbnRfdHN0YXRlLT5pbnRlcnA7CisgICAgfQorI2VuZGlmCisgICAgYXNzZXJ0KGludGVycCAhPSBOVUxMKTsKKwogICAgIC8qIEdldCB0aGUgY3VycmVudCBpbnRlcnByZXRlciBmcm9tIHRoZSBjdXJyZW50IHRocmVhZCAqLwogICAgIHRzdGF0ZSA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9UaHJlYWRIZWFkKGludGVycCk7CiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQpAQCAtNzI2LDcgKzgwNSw3IEBACiAgICAgICAgICAgICBQVVRTKGZkLCAiLi4uXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHdyaXRlX3RocmVhZF9pZChmZCwgdHN0YXRlLCB0c3RhdGUgPT0gY3VycmVudF90aHJlYWQpOworICAgICAgICB3cml0ZV90aHJlYWRfaWQoZmQsIHRzdGF0ZSwgdHN0YXRlID09IGN1cnJlbnRfdHN0YXRlKTsKICAgICAgICAgZHVtcF90cmFjZWJhY2soZmQsIHRzdGF0ZSwgMCk7CiAgICAgICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV4dCh0c3RhdGUpOwogICAgICAgICBudGhyZWFkcysrOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3dvcmRjb2RlX2hlbHBlcnMuaCBiL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBlM2E5MQotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmgKQEAgLTAsMCArMSw0MSBAQAorLyogVGhpcyBmaWxlIGNvbnRhaW5zIGNvZGUgc2hhcmVkIGJ5IHRoZSBjb21waWxlciBhbmQgdGhlIHBlZXBob2xlCisgICBvcHRpbWl6ZXIuCisgKi8KKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorIyAgZGVmaW5lIFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnKSAoKF9QeV9DT0RFVU5JVCkoKChvcGNvZGUpIDw8IDgpIHwgKG9wYXJnKSkpCisjZWxzZQorIyAgZGVmaW5lIFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnKSAoKF9QeV9DT0RFVU5JVCkoKChvcGFyZykgPDwgOCkgfCAob3Bjb2RlKSkpCisjZW5kaWYKKworLyogTWluaW11bSBudW1iZXIgb2YgY29kZSB1bml0cyBuZWNlc3NhcnkgdG8gZW5jb2RlIGluc3RydWN0aW9uIHdpdGgKKyAgIEVYVEVOREVEX0FSR3MgKi8KK3N0YXRpYyBpbnQKK2luc3Ryc2l6ZSh1bnNpZ25lZCBpbnQgb3BhcmcpCit7CisgICAgcmV0dXJuIG9wYXJnIDw9IDB4ZmYgPyAxIDoKKyAgICAgICAgb3BhcmcgPD0gMHhmZmZmID8gMiA6CisgICAgICAgIG9wYXJnIDw9IDB4ZmZmZmZmID8gMyA6CisgICAgICAgIDQ7Cit9CisKKy8qIFNwaXRzIG91dCBvcC9vcGFyZyBwYWlyIHVzaW5nIGlsZW4gYnl0ZXMuIGNvZGVzdHIgc2hvdWxkIGJlIHBvaW50ZWQgYXQgdGhlCisgICBkZXNpcmVkIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBFWFRFTkRFRF9BUkcgKi8KK3N0YXRpYyB2b2lkCit3cml0ZV9vcF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICB1bnNpZ25lZCBpbnQgb3BhcmcsIGludCBpbGVuKQoreworICAgIHN3aXRjaCAoaWxlbikgeworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDI0KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDE2KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDgpICYgMHhmZik7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcob3Bjb2RlLCBvcGFyZyAmIDB4ZmYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDQxNGI2NTguLmQxNWUxZjYgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNSArMSw1IEBACi1UaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuNS4zIHJlbGVhc2UgY2FuZGlkYXRlIDEKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjYuMCBiZXRhIDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjgsOSArMjgsOSBAQAogZWxzZXdoZXJlIGl0J3MganVzdCBweXRob24uCiAKIE9uIE1hYyBPUyBYLCBpZiB5b3UgaGF2ZSBjb25maWd1cmVkIFB5dGhvbiB3aXRoIC0tZW5hYmxlLWZyYW1ld29yaywgeW91IHNob3VsZAotdXNlICJtYWtlIGZyYW1ld29ya2luc3RhbGwiIHRvIGRvIHRoZSBpbnN0YWxsYXRpb24uICBOb3RlIHRoYXQgdGhpcyBpbnN0YWxscwotdGhlIFB5dGhvbiBleGVjdXRhYmxlIGluIGEgcGxhY2UgdGhhdCBpcyBub3Qgbm9ybWFsbHkgb24geW91ciBQQVRILCB5b3UgbWF5Ci13YW50IHRvIHNldCB1cCBhIHN5bWxpbmsgaW4gL3Vzci9sb2NhbC9iaW4uCit1c2UgIm1ha2UgZnJhbWV3b3JraW5zdGFsbCIgdG8gZG8gdGhlIGluc3RhbGxhdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGluc3RhbGxzIHRoZQorUHl0aG9uIGV4ZWN1dGFibGUgaW4gYSBwbGFjZSB0aGF0IGlzIG5vdCBub3JtYWxseSBvbiB5b3VyIFBBVEgsIHlvdSBtYXkgd2FudCB0bworc2V0IHVwIGEgc3ltbGluayBpbiAvdXNyL2xvY2FsL2Jpbi4KIAogT24gV2luZG93cywgc2VlIFBDYnVpbGQvcmVhZG1lLnR4dC4KIApAQCAtODksOSArODksOSBAQAogLS0tLS0tLS0tLQogCiBXZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgY2hhbmdlcyBpbiB0aGUgIldoYXQncyBOZXcgaW4KLVB5dGhvbiAzLjUiIGRvY3VtZW50LCBmb3VuZCBhdAorUHl0aG9uIDMuNiIgZG9jdW1lbnQsIGZvdW5kIGF0CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS93aGF0c25ldy8zLjUuaHRtbAorICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi93aGF0c25ldy8zLjYuaHRtbAogCiBGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sCiBpcyBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNwpAQCAtMTA0LDkgKzEwNCw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjUgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNiBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS8KKyAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjYvCiAKIEl0IGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4gbWFueSBmb3JtYXRzIGZvciBmYXN0ZXIgYWNjZXNzLiAgVGhlIGRvY3VtZW50YXRpb24KIGlzIGRvd25sb2FkYWJsZSBpbiBIVE1MLCBQREYsIGFuZCByZVN0cnVjdHVyZWRUZXh0IGZvcm1hdHM7IHRoZSBsYXR0ZXIgdmVyc2lvbgpAQCAtMTE2LDcgKzExNiw3IEBACiBJZiB5b3Ugd291bGQgbGlrZSB0byBjb250cmlidXRlIHRvIHRoZSBkZXZlbG9wbWVudCBvZiBQeXRob24sIHJlbGV2YW50CiBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdDoKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvCisgICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvCiAKIEZvciBpbmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBQeXRob24ncyBkb2N1bWVudGF0aW9uLCByZWZlciB0byBEb2MvUkVBRE1FLnR4dC4KIApAQCAtMTMxLDcgKzEzMSw3IEBACiBBIHNvdXJjZS10by1zb3VyY2UgdHJhbnNsYXRpb24gdG9vbCwgIjJ0bzMiLCBjYW4gdGFrZSBjYXJlIG9mIHRoZSBtdW5kYW5lIHRhc2sKIG9mIGNvbnZlcnRpbmcgbGFyZ2UgYW1vdW50cyBvZiBzb3VyY2UgY29kZS4gIEl0IGlzIG5vdCBhIGNvbXBsZXRlIHNvbHV0aW9uIGJ1dAogaXMgY29tcGxlbWVudGVkIGJ5IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBpbiAyLjYuICBTZWUKLWh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiAKIFRlc3RpbmcKQEAgLTE2MSwxNiArMTYxLDE2IEBACiAKIE9uIFVuaXggYW5kIE1hYyBzeXN0ZW1zIGlmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24KIHVzaW5nIHRoZSBzYW1lIGluc3RhbGxhdGlvbiBwcmVmaXggKC0tcHJlZml4IGFyZ3VtZW50IHRvIHRoZSBjb25maWd1cmUgc2NyaXB0KQoteW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieQotdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQKLXVzaW5nICJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCi1zaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycwotdG8gJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcKLXRoZSBzYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IgotdmVyc2lvbi4gIEluc3RhbGwgdGhhdCB2ZXJzaW9uIHVzaW5nICJtYWtlIGluc3RhbGwiLiAgSW5zdGFsbCBhbGwgb3RoZXIKLXZlcnNpb25zIHVzaW5nICJtYWtlIGFsdGluc3RhbGwiLgoreW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieSB0aGUKK2luc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQgdXNpbmcKKyJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCitzaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycyB0bworJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcgdGhlCitzYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IiB2ZXJzaW9uLgorSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZworIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy41IHdpdGggMi43IGJlaW5nIHRoZQorRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjYgd2l0aCAyLjcgYmVpbmcgdGhlCiBwcmltYXJ5IHZlcnNpb24sIHlvdSB3b3VsZCBleGVjdXRlICJtYWtlIGluc3RhbGwiIGluIHlvdXIgMi43IGJ1aWxkIGRpcmVjdG9yeQogYW5kICJtYWtlIGFsdGluc3RhbGwiIGluIHRoZSBvdGhlcnMuCiAKQEAgLTE4MSw3ICsxODEsNyBAQAogV2UncmUgc29saWNpdGluZyBidWcgcmVwb3J0cyBhYm91dCBhbGwgYXNwZWN0cyBvZiB0aGUgbGFuZ3VhZ2UuICBGaXhlcyBhcmUgYWxzbwogd2VsY29tZSwgcHJlZmVyYWJseSBpbiB1bmlmaWVkIGRpZmYgZm9ybWF0LiAgUGxlYXNlIHVzZSB0aGUgaXNzdWUgdHJhY2tlcjoKIAotICAgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvCisgICAgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvCiAKIElmIHlvdSdyZSBub3Qgc3VyZSB3aGV0aGVyIHlvdSdyZSBkZWFsaW5nIHdpdGggYSBidWcgb3IgYSBmZWF0dXJlLCB1c2UgdGhlCiBtYWlsaW5nIGxpc3Q6CkBAIC0xOTAsMjMgKzE5MCwyMyBAQAogCiBUbyBzdWJzY3JpYmUgdG8gdGhlIGxpc3QsIHVzZSB0aGUgbWFpbG1hbiBmb3JtOgogCi0gICAgaHR0cDovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1kZXYvCisgICAgaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tZGV2LwogCiAKIFByb3Bvc2FscyBmb3IgZW5oYW5jZW1lbnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSWYgeW91IGhhdmUgYSBwcm9wb3NhbCB0byBjaGFuZ2UgUHl0aG9uLCB5b3UgbWF5IHdhbnQgdG8gc2VuZCBhbiBlbWFpbCB0byB0aGUKLWNvbXAubGFuZy5weXRob24gb3IgcHl0aG9uLWlkZWFzIG1haWxpbmcgbGlzdHMgZm9yIGluaXRhbCBmZWVkYmFjay4gIEEgUHl0aG9uCitjb21wLmxhbmcucHl0aG9uIG9yIHB5dGhvbi1pZGVhcyBtYWlsaW5nIGxpc3RzIGZvciBpbml0aWFsIGZlZWRiYWNrLiAgQSBQeXRob24KIEVuaGFuY2VtZW50IFByb3Bvc2FsIChQRVApIG1heSBiZSBzdWJtaXR0ZWQgaWYgeW91ciBpZGVhIGdhaW5zIGdyb3VuZC4gIEFsbAogY3VycmVudCBQRVBzLCBhcyB3ZWxsIGFzIGd1aWRlbGluZXMgZm9yIHN1Ym1pdHRpbmcgYSBuZXcgUEVQLCBhcmUgbGlzdGVkIGF0Ci1odHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvLgoraHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy8uCiAKIAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDQ3OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzgvCitTZWUgUEVQIDQ5NCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDk0LwogCiAKIENvcHlyaWdodCBhbmQgTGljZW5zZSBJbmZvcm1hdGlvbgpAQCAtMjMwLDMgKzIzMCw0IEBACiBjb2RlIGJ1dCB0aGVzZSBhcmUgZW50aXJlbHkgb3B0aW9uYWwuCiAKIEFsbCB0cmFkZW1hcmtzIHJlZmVyZW5jZWQgaGVyZWluIGFyZSBwcm9wZXJ0eSBvZiB0aGVpciByZXNwZWN0aXZlIGhvbGRlcnMuCisKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc3NDA3Yi4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgImNvbXBpbGUiIHN0ZXAuDQotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlDQotQGVjaG8gICAgIFBDYnVpbGRcYnVpbGQuYmF0IC1kIC1lIC1rIC1wIHg2NA0KLWNhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtcCB4NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1M2M3YzEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1AcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UgYGNsZWFuLmJhdGAgZnJvbSB0aGlzDQotQGVjaG8gZGlyZWN0b3J5IGFuZCBwYXNzIGAtcCB4NjRgIGFzIHR3byBhcmd1bWVudHMuDQotY2FsbCAiJX5kcDBjbGVhbi5iYXQiIC1wIHg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAppbmRleCAwZmM2OGZkLi4xM2U2Njc5IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CkBAIC0xNCwzICsxNCw0IEBACiANCiBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLg0KIHJtZGlyIC9zIC9xICIlcm9vdCVcYnVpbGQiDQorZGVsIC9zICIlcGNidWlsZCVccHl0aG9uKi56aXAiDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvdGVzdC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ4MzI5Yy4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAidGVzdCIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UNCi1AZWNobyAgICAgUENidWlsZFxydC5iYXQgLXEgLWQgLXg2NCAtdWFsbCAtcndXDQotQGVjaG8gb3IgdXNlIGB0ZXN0LmJhdGAgaW4gdGhpcyBkaXJlY3RvcnkgYW5kIHBhc3MgYC14NjRgIGFzIGFuIGFyZ3VtZW50Lg0KLWNhbGwgIiV+ZHAwdGVzdC5iYXQiIC14NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CmluZGV4IGZmN2QxNjcuLmEzMmQzOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CkBAIC00LDcgKzQsNyBAQAogDQogc2V0IGhlcmU9JX5kcDANCiBzZXQgcnRfb3B0cz0tcSAtZA0KLXNldCByZWdydGVzdF9hcmdzPQ0KK3NldCByZWdydGVzdF9hcmdzPS1qMQ0KIA0KIDpDaGVja09wdHMNCiBpZiAiJTEiPT0iLXg2NCIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQpAQCAtMTYsNCArMTYsNCBAQAogaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RfYXJncz0lcmVncnRlc3RfYXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KIGVjaG8gb24NCi1jYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLS10aW1lb3V0PTM2MDAgJXJlZ3J0ZXN0X2FyZ3MlDQorY2FsbCAiJWhlcmUlLi5cLi5cUENidWlsZFxydC5iYXQiICVydF9vcHRzJSAtdWFsbCAtcndXIC0tc2xvd2VzdCAtLXRpbWVvdXQ9MTIwMCAlcmVncnRlc3RfYXJncyUNCmRpZmYgLS1naXQgYS9Ub29scy9jbGluaWMvY2xpbmljLnB5IGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQppbmRleCBmNjE1ZWQ5Li43NWFjNjczIDEwMDc1NQotLS0gYS9Ub29scy9jbGluaWMvY2xpbmljLnB5CisrKyBiL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKQEAgLTY0NCw3ICs2NDQsNyBAQAogICAgICAgICBkZWZhdWx0X3JldHVybl9jb252ZXJ0ZXIgPSAobm90IGYucmV0dXJuX2NvbnZlcnRlciBvcgogICAgICAgICAgICAgZi5yZXR1cm5fY29udmVydGVyLnR5cGUgPT0gJ1B5T2JqZWN0IConKQogCi0gICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCAocGFyYW1ldGVyc1stMV0ua2luZCA9PSBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCBwYXJhbWV0ZXJzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBhbGxfYm9yaW5nX29iamVjdHMgPSBGYWxzZSAjIHllcywgdGhpcyB3aWxsIGJlIGZhbHNlIGlmIHRoZXJlIGFyZSAwIHBhcmFtZXRlcnMsIGl0J3MgZmluZQogICAgICAgICBmaXJzdF9vcHRpb25hbCA9IGxlbihwYXJhbWV0ZXJzKQogICAgICAgICBmb3IgaSwgcCBpbiBlbnVtZXJhdGUocGFyYW1ldGVycyk6CkBAIC02NjEsNyArNjYxLDcgQEAKICAgICAgICAgbmV3X29yX2luaXQgPSBmLmtpbmQgaW4gKE1FVEhPRF9ORVcsIE1FVEhPRF9JTklUKQogCiAgICAgICAgIG1ldGhfbyA9IChsZW4ocGFyYW1ldGVycykgPT0gMSBhbmQKLSAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSBhbmQKKyAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5pc19wb3NpdGlvbmFsX29ubHkoKSBhbmQKICAgICAgICAgICAgICAgbm90IGNvbnZlcnRlcnNbMF0uaXNfb3B0aW9uYWwoKSBhbmQKICAgICAgICAgICAgICAgbm90IG5ld19vcl9pbml0KQogCkBAIC03MDUsNiArNzA1LDExIEBACiAgICAgICAgICAgICB7Y19iYXNlbmFtZX0oe3NlbGZfdHlwZX17c2VsZl9uYW1lfSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiAgICAgICAgICAgICAiIiIpCiAKKyAgICAgICAgcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbCA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgorICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKKyAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQorICAgICAgICAgICAgIiIiKQorCiAgICAgICAgIHBhcnNlcl9wcm90b3R5cGVfdmFyYXJncyA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqYXJncykKQEAgLTc0Myw3ICs3NDgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQoKQogCiAgICAgICAgIGRlZiBpbnNlcnRfa2V5d29yZHMocyk6Ci0gICAgICAgICAgICByZXR1cm4gbGluZWFyX2Zvcm1hdChzLCBkZWNsYXJhdGlvbnM9InN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHt7e2tleXdvcmRzfSwgTlVMTH19O1xue2RlY2xhcmF0aW9uc30iKQorICAgICAgICAgICAgcmV0dXJuIGxpbmVhcl9mb3JtYXQocywgZGVjbGFyYXRpb25zPQorICAgICAgICAgICAgICAgICdzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0ge3t7a2V5d29yZHN9LCBOVUxMfX07XG4nCisgICAgICAgICAgICAgICAgJ3N0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7eyJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsIDB9fTtcbicKKyAgICAgICAgICAgICAgICAne2RlY2xhcmF0aW9uc30nKQogCiAgICAgICAgIGlmIG5vdCBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgIyBubyBwYXJhbWV0ZXJzLCBNRVRIX05PQVJHUwpAQCAtNzk3LDggKzgwNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUpCiAKICAgICAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIgJSBhcmduYW1lLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgZWxpZiBoYXNfb3B0aW9uX2dyb3VwczoKQEAgLTgyMiw4ICs4MzEsOSBAQAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ7bmFtZX0iLAogICAgICAgICAgICAgICAgICAgICB7dW5wYWNrX21pbn0sIHt1bnBhY2tfbWF4fSwKLSAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgIGVsaWYgcG9zaXRpb25hbDoKQEAgLTgzNSwxMCArODQ1LDI0IEBACiAKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCiAgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKKyAgICAgICAgZWxpZiBub3QgbmV3X29yX2luaXQ6CisgICAgICAgICAgICBmbGFncyA9ICJNRVRIX0ZBU1RDQUxMIgorCisgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbAorCisgICAgICAgICAgICBib2R5ID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICAgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CisgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgYm9keSkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gaW5zZXJ0X2tleXdvcmRzKHBhcnNlcl9kZWZpbml0aW9uKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBwb3NpdGlvbmFsLW9yLWtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgICAgICBmbGFncyA9ICJNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUyIKQEAgLTg0NiwxNSArODcwLDEyIEBACiAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9rZXl3b3JkCiAKICAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgICAgICAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKLSAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKKyAgICAgICAgICAgICAgICB9fQorICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpCisgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIGJvZHkpCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IGluc2VydF9rZXl3b3JkcyhwYXJzZXJfZGVmaW5pdGlvbikKIAogCkBAIC04NzgsMTMgKzg5OSwxNSBAQAogCiAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX2tleXdvcmRzOgogICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9LZXl3b3Jkcygie25hbWV9Iiwga3dhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHtzZWxmX3R5cGVfY2hlY2t9IV9QeUFyZ19Ob0tleXdvcmRzKCJ7bmFtZX0iLCBrd2FyZ3MpKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX3Bvc2l0aW9uYWw6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICAgICAgfX0KICAgICAgICAgICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsICpmaWVsZHMpCkBAIC0xMDMyLDggKzEwNTUsOSBAQAogCiAgICAgICAgICAgICBzID0gIiIiCiAgICAgY2FzZSB7Y291bnR9OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH19CiAgICAgICAgIHtncm91cF9ib29sZWFuc30KICAgICAgICAgYnJlYWs7CiAiIiJbMTpdCkBAIC0xMDY3LDcgKzEwOTEsNyBAQAogCiAgICAgICAgIGxhc3RfZ3JvdXAgPSAwCiAgICAgICAgIGZpcnN0X29wdGlvbmFsID0gbGVuKHNlbGZsZXNzKQotICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWQorICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBuZXdfb3JfaW5pdCA9IGYua2luZCBpbiAoTUVUSE9EX05FVywgTUVUSE9EX0lOSVQpCiAgICAgICAgIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlciA9IChub3QgZi5yZXR1cm5fY29udmVydGVyIG9yCiAgICAgICAgICAgICBmLnJldHVybl9jb252ZXJ0ZXIudHlwZSA9PSAnUHlPYmplY3QgKicpCkBAIC0xMjE2LDcgKzEyNDAsNyBAQAogCiBkZWYgY3JlYXRlX3JlZ2V4KGJlZm9yZSwgYWZ0ZXIsIHdvcmQ9VHJ1ZSwgd2hvbGVfbGluZT1UcnVlKToKICAgICAiIiJDcmVhdGUgYW4gcmUgb2JqZWN0IGZvciBtYXRjaGluZyBtYXJrZXIgbGluZXMuIiIiCi0gICAgZ3JvdXBfcmUgPSAiXHcrIiBpZiB3b3JkIGVsc2UgIi4rIgorICAgIGdyb3VwX3JlID0gciJcdysiIGlmIHdvcmQgZWxzZSAiLisiCiAgICAgcGF0dGVybiA9IHIne30oe30pe30nCiAgICAgaWYgd2hvbGVfbGluZToKICAgICAgICAgcGF0dGVybiA9ICdeJyArIHBhdHRlcm4gKyAnJCcKQEAgLTIzNTksNyArMjM4MywxMCBAQAogICAgICAgICAgICAgZGF0YS5tb2RpZmljYXRpb25zLmFwcGVuZCgnLyogbW9kaWZpY2F0aW9ucyBmb3IgJyArIG5hbWUgKyAnICovXG4nICsgbW9kaWZpY2F0aW9ucy5yc3RyaXAoKSkKIAogICAgICAgICAjIGtleXdvcmRzCi0gICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQorICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICBkYXRhLmtleXdvcmRzLmFwcGVuZCgnJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQogCiAgICAgICAgICMgZm9ybWF0X3VuaXRzCiAgICAgICAgIGlmIHNlbGYuaXNfb3B0aW9uYWwoKSBhbmQgJ3wnIG5vdCBpbiBkYXRhLmZvcm1hdF91bml0czoKQEAgLTI1NzIsMjEgKzI1OTksMjEgQEAKICAgICAgICAgaWYgbm90IGJpdHdpc2U6CiAgICAgICAgICAgICBmYWlsKCJVbnNpZ25lZCBsb25ncyBtdXN0IGJlIGJpdHdpc2UgKGZvciBub3cpLiIpCiAKLWNsYXNzIFBZX0xPTkdfTE9OR19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQWV9MT05HX0xPTkcnCitjbGFzcyBsb25nX2xvbmdfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnbG9uZyBsb25nJwogICAgIGRlZmF1bHRfdHlwZSA9IGludAogICAgIGZvcm1hdF91bml0ID0gJ0wnCiAgICAgY19pZ25vcmVkX2RlZmF1bHQgPSAiMCIKIAotY2xhc3MgdW5zaWduZWRfUFlfTE9OR19MT05HX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ3Vuc2lnbmVkIFBZX0xPTkdfTE9ORycKK2NsYXNzIHVuc2lnbmVkX2xvbmdfbG9uZ19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICd1bnNpZ25lZCBsb25nIGxvbmcnCiAgICAgZGVmYXVsdF90eXBlID0gaW50CiAgICAgZm9ybWF0X3VuaXQgPSAnSycKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICIwIgogCiAgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGJpdHdpc2U9RmFsc2UpOgogICAgICAgICBpZiBub3QgYml0d2lzZToKLSAgICAgICAgICAgIGZhaWwoIlVuc2lnbmVkIFBZX0xPTkdfTE9OR3MgbXVzdCBiZSBiaXR3aXNlIChmb3Igbm93KS4iKQorICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgbG9uZyBsb25nIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAogY2xhc3MgUHlfc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeV9zc2l6ZV90JwpAQCAtMjY3Niw3ICsyNzAzLDcgQEAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgaWYgc2VsZi5lbmNvZGluZzoKICAgICAgICAgICAgIG5hbWUgPSBlbnN1cmVfbGVnYWxfY19pZGVudGlmaWVyKHNlbGYubmFtZSkKLSAgICAgICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIpXG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xuIl0pCisgICAgICAgICAgICByZXR1cm4gIiIuam9pbihbImlmICgiLCBuYW1lLCAiKSB7XG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xufVxuIl0pCiAKICMKICMgVGhpcyBpcyB0aGUgZm91cnRoIG9yIGZpZnRoIHJld3JpdGUgb2YgcmVnaXN0ZXJpbmcgYWxsIHRoZQpAQCAtMjc4Niw3ICsyODEzLDcgQEAKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBuYW1lID0gZW5zdXJlX2xlZ2FsX2NfaWRlbnRpZmllcihzZWxmLm5hbWUpCi0gICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIub2JqKVxuICAgUHlCdWZmZXJfUmVsZWFzZSgmIiwgbmFtZSwgIik7XG4iXSkKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIi5vYmopIHtcbiAgIFB5QnVmZmVyX1JlbGVhc2UoJiIsIG5hbWUsICIpO1xufVxuIl0pCiAKIAogZGVmIGNvcnJlY3RfbmFtZV9mb3Jfc2VsZihmKToKQEAgLTI5NTksMTAgKzI5ODYsMTAgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fdmFsdWUgPSBuYW1lCiAKICAgICBkZWYgZXJyX29jY3VycmVkX2lmKHNlbGYsIGV4cHIsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKCh7fSkgJiYgUHlFcnJfT2NjdXJyZWQoKSlcbiAgICBnb3RvIGV4aXQ7XG4nLmZvcm1hdChleHByKSkKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoJ2lmICgoe30pICYmIFB5RXJyX09jY3VycmVkKCkpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KGV4cHIpKQogCiAgICAgZGVmIGVycl9vY2N1cnJlZF9pZl9udWxsX3BvaW50ZXIoc2VsZiwgdmFyaWFibGUsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpXG4gICAgZ290byBleGl0O1xuJy5mb3JtYXQodmFyaWFibGUpKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KHZhcmlhYmxlKSkKIAogICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgogICAgICAgICAiIiIKQEAgLTI5NzcsOCArMzAwNCw5IEBACiAgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CiAgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnJycKLWlmIChfcmV0dXJuX3ZhbHVlICE9IFB5X05vbmUpCitpZiAoX3JldHVybl92YWx1ZSAhPSBQeV9Ob25lKSB7CiAgICAgZ290byBleGl0OworfQogcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKIFB5X0lOQ1JFRihQeV9Ob25lKTsKICcnJy5zdHJpcCgpKQpAQCAtMzE4Myw2ICszMjExLDcgQEAKICAgICAgICAgc2VsZi5zdGF0ZSA9IHNlbGYuc3RhdGVfZHNsX3N0YXJ0CiAgICAgICAgIHNlbGYucGFyYW1ldGVyX2luZGVudCA9IE5vbmUKICAgICAgICAgc2VsZi5rZXl3b3JkX29ubHkgPSBGYWxzZQorICAgICAgICBzZWxmLnBvc2l0aW9uYWxfb25seSA9IEZhbHNlCiAgICAgICAgIHNlbGYuZ3JvdXAgPSAwCiAgICAgICAgIHNlbGYucGFyYW1ldGVyX3N0YXRlID0gc2VsZi5wc19zdGFydAogICAgICAgICBzZWxmLnNlZW5fcG9zaXRpb25hbF93aXRoX2RlZmF1bHQgPSBGYWxzZQpAQCAtMzU2MSw4ICszNTkwLDggQEAKICAgICAjICJwYXJhbWV0ZXJfc3RhdGUiLiAgKFByZXZpb3VzbHkgdGhlIGNvZGUgd2FzIGEgbWlhc21hIG9mIGlmcyBhbmQKICAgICAjIHNlcGFyYXRlIGJvb2xlYW4gc3RhdGUgdmFyaWFibGVzLikgIFRoZSBzdGF0ZXMgYXJlOgogICAgICMKLSAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdIC8gICA8LSBsaW5lCi0gICAgIyAwMSAgIDIgICAgICAgICAgMyAgICAgICA0ICAgIDUgICAgICAgICAgIDYgICA3ICAgPC0gc3RhdGUgdHJhbnNpdGlvbnMKKyAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdICAgPC0gbGluZQorICAgICMgMDEgICAyICAgICAgICAgIDMgICAgICAgNCAgICA1ICAgICAgICAgICA2ICAgICA8LSBzdGF0ZSB0cmFuc2l0aW9ucwogICAgICMKICAgICAjIDA6IHBzX3N0YXJ0LiAgYmVmb3JlIHdlJ3ZlIHNlZW4gYW55dGhpbmcuICBsZWdhbCB0cmFuc2l0aW9ucyBhcmUgdG8gMSBvciAzLgogICAgICMgMTogcHNfbGVmdF9zcXVhcmVfYmVmb3JlLiAgbGVmdCBzcXVhcmUgYnJhY2tldHMgYmVmb3JlIHJlcXVpcmVkIHBhcmFtZXRlcnMuCkBAIC0zNTczLDkgKzM2MDIsOCBAQAogICAgICMgICAgbm93IG11c3QgaGF2ZSBkZWZhdWx0IHZhbHVlcy4KICAgICAjIDU6IHBzX2dyb3VwX2FmdGVyLiAgaW4gYSBncm91cCwgYWZ0ZXIgcmVxdWlyZWQgcGFyYW1ldGVycy4KICAgICAjIDY6IHBzX3JpZ2h0X3NxdWFyZV9hZnRlci4gIHJpZ2h0IHNxdWFyZSBicmFja2V0cyBhZnRlciByZXF1aXJlZCBwYXJhbWV0ZXJzLgotICAgICMgNzogcHNfc2Vlbl9zbGFzaC4gIHNlZW4gc2xhc2guCiAgICAgcHNfc3RhcnQsIHBzX2xlZnRfc3F1YXJlX2JlZm9yZSwgcHNfZ3JvdXBfYmVmb3JlLCBwc19yZXF1aXJlZCwgXAotICAgIHBzX29wdGlvbmFsLCBwc19ncm91cF9hZnRlciwgcHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBwc19zZWVuX3NsYXNoID0gcmFuZ2UoOCkKKyAgICBwc19vcHRpb25hbCwgcHNfZ3JvdXBfYWZ0ZXIsIHBzX3JpZ2h0X3NxdWFyZV9hZnRlciA9IHJhbmdlKDcpCiAKICAgICBkZWYgc3RhdGVfcGFyYW1ldGVyc19zdGFydChzZWxmLCBsaW5lKToKICAgICAgICAgaWYgc2VsZi5pZ25vcmVfbGluZShsaW5lKToKQEAgLTM4NTQsOSArMzg4Miw2IEBACiAgICAgICAgIHJldHVybiBuYW1lLCBGYWxzZSwga3dhcmdzCiAKICAgICBkZWYgcGFyc2Vfc3BlY2lhbF9zeW1ib2woc2VsZiwgc3ltYm9sKToKLSAgICAgICAgaWYgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPT0gc2VsZi5wc19zZWVuX3NsYXNoOgotICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgc3BlY2lmaWVzICIgKyBzeW1ib2wgKyAiIGFmdGVyIC8sIHdoaWNoIGlzIHVuc3VwcG9ydGVkLiIpCi0KICAgICAgICAgaWYgc3ltYm9sID09ICcqJzoKICAgICAgICAgICAgIGlmIHNlbGYua2V5d29yZF9vbmx5OgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIHVzZXMgJyonIG1vcmUgdGhhbiBvbmNlLiIpCkBAIC0zODgzLDEzICszOTA4LDE1IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiB1bnN1cHBvcnRlZCBncm91cCBjb25maWd1cmF0aW9uLiAoVW5leHBlY3RlZCBzdGF0ZSAiICsgc3RyKHNlbGYucGFyYW1ldGVyX3N0YXRlKSArICIuYykiKQogICAgICAgICBlbGlmIHN5bWJvbCA9PSAnLyc6CisgICAgICAgICAgICBpZiBzZWxmLnBvc2l0aW9uYWxfb25seToKKyAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiB1c2VzICcvJyBtb3JlIHRoYW4gb25jZS4iKQorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbmFsX29ubHkgPSBUcnVlCiAgICAgICAgICAgICAjIHBzX3JlcXVpcmVkIGFuZCBwc19vcHRpb25hbCBhcmUgYWxsb3dlZCBoZXJlLCB0aGF0IGFsbG93cyBwb3NpdGlvbmFsLW9ubHkgd2l0aG91dCBvcHRpb24gZ3JvdXBzCiAgICAgICAgICAgICAjIHRvIHdvcmsgKGFuZCBoYXZlIGRlZmF1bHQgdmFsdWVzISkKICAgICAgICAgICAgIGlmIChzZWxmLnBhcmFtZXRlcl9zdGF0ZSBub3QgaW4gKHNlbGYucHNfcmVxdWlyZWQsIHNlbGYucHNfb3B0aW9uYWwsIHNlbGYucHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBzZWxmLnBzX2dyb3VwX2JlZm9yZSkpIG9yIHNlbGYuZ3JvdXA6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIHVuc3VwcG9ydGVkIGdyb3VwIGNvbmZpZ3VyYXRpb24uIChVbmV4cGVjdGVkIHN0YXRlICIgKyBzdHIoc2VsZi5wYXJhbWV0ZXJfc3RhdGUpICsgIi5kKSIpCiAgICAgICAgICAgICBpZiBzZWxmLmtleXdvcmRfb25seToKICAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBtaXhlcyBrZXl3b3JkLW9ubHkgYW5kIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCB3aGljaCBpcyB1bnN1cHBvcnRlZC4iKQotICAgICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPSBzZWxmLnBzX3NlZW5fc2xhc2gKICAgICAgICAgICAgICMgZml4dXAgcHJlY2VkaW5nIHBhcmFtZXRlcnMKICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuZnVuY3Rpb24ucGFyYW1ldGVycy52YWx1ZXMoKToKICAgICAgICAgICAgICAgICBpZiAocC5raW5kICE9IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCBhbmQgbm90IGlzaW5zdGFuY2UocC5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKSk6CkBAIC0zOTc3LDIzICs0MDA0LDIwIEBACiAgICAgICAgICMgcG9wdWxhdGUgInJpZ2h0X2JyYWNrZXRfY291bnQiIGZpZWxkIGZvciBldmVyeSBwYXJhbWV0ZXIKICAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnMsICJXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBzZWxmIHBhcmFtZXRlci4gIiArIHJlcHIoZikKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyYW1ldGVyc1swXS5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKQorICAgICAgICAjIHNlbGYgaXMgYWx3YXlzIHBvc2l0aW9uYWwtb25seS4KKyAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnNbMF0uaXNfcG9zaXRpb25hbF9vbmx5KCkKICAgICAgICAgcGFyYW1ldGVyc1swXS5yaWdodF9icmFja2V0X2NvdW50ID0gMAotICAgICAgICBwYXJhbWV0ZXJzX2FmdGVyX3NlbGYgPSBwYXJhbWV0ZXJzWzE6XQotICAgICAgICBpZiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAjIGZvciBub3csIHRoZSBvbmx5IHdheSBDbGluaWMgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMKLSAgICAgICAgICAgICMgaXMgaWYgYWxsIG9mIHRoZW0gYXJlIHBvc2l0aW9uYWwtb25seS4uLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAuLi4gZXhjZXB0IGZvciBzZWxmISAgc2VsZiBpcyBhbHdheXMgcG9zaXRpb25hbC1vbmx5LgotCi0gICAgICAgICAgICBwb3NpdGlvbmFsX29ubHlfcGFyYW1ldGVycyA9IFtwLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZIGZvciBwIGluIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZl0KLSAgICAgICAgICAgIGlmIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZlswXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWToKLSAgICAgICAgICAgICAgICBhc3NlcnQgYWxsKHBvc2l0aW9uYWxfb25seV9wYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQorICAgICAgICBwb3NpdGlvbmFsX29ubHkgPSBUcnVlCisgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnNbMTpdOgorICAgICAgICAgICAgaWYgbm90IHAuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICAgICAgcG9zaXRpb25hbF9vbmx5ID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHBvc2l0aW9uYWxfb25seQorICAgICAgICAgICAgaWYgcG9zaXRpb25hbF9vbmx5OgorICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIGRvbid0IHB1dCBhbnkgcmlnaHQgYnJhY2tldHMgYXJvdW5kIG5vbi1wb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycywgZXZlci4KLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IDAKKyAgICAgICAgICAgICAgICBwLnJpZ2h0X2JyYWNrZXRfY291bnQgPSAwCiAKICAgICAgICAgcmlnaHRfYnJhY2tldF9jb3VudCA9IDAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZGVtby9zczEucHkgYi9Ub29scy9kZW1vL3NzMS5weQppbmRleCBjNTFmMDQxLi5iZjg4ODIwIDEwMDc1NQotLS0gYS9Ub29scy9kZW1vL3NzMS5weQorKysgYi9Ub29scy9kZW1vL3NzMS5weQpAQCAtNDEzLDcgKzQxMyw3IEBACiAKICAgICBkZWYgcmVudW1iZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIGR4LCBkeSk6CiAgICAgICAgIG91dCA9IFtdCi0gICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KCcoXHcrKScsIHNlbGYuZm9ybXVsYSk6CisgICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KHInKFx3KyknLCBzZWxmLmZvcm11bGEpOgogICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCdeKFtBLVpdKykoWzEtOV1bMC05XSopJCcsIHBhcnQpCiAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN4LCBzeSA9IG0uZ3JvdXBzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CmluZGV4IDQ0ZWRkNTcuLmQ2MDJmNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKKysrIGIvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQpAQCAtMTI0LDkgKzEyNCw3IEBACiAKICAgICAjIGRlZmF1bHQgdGhlIGV4Y2x1ZGUgbGlzdCBmb3IgZWFjaCBwbGF0Zm9ybQogICAgIGlmIHdpbjogZXhjbHVkZSA9IGV4Y2x1ZGUgKyBbCi0gICAgICAgICdkb3MnLCAnZG9zcGF0aCcsICdtYWMnLCAnbWFjcGF0aCcsICdtYWNmcycsICdNQUNGUycsICdwb3NpeCcsCi0gICAgICAgICdjZScsCi0gICAgICAgIF0KKyAgICAgICAgJ2RvcycsICdkb3NwYXRoJywgJ21hYycsICdtYWNwYXRoJywgJ21hY2ZzJywgJ01BQ0ZTJywgJ3Bvc2l4JywgXQogCiAgICAgZmFpbF9pbXBvcnQgPSBleGNsdWRlWzpdCiAKQEAgLTIxOCw3ICsyMTYsNyBAQAogICAgIGlzaG9tZSA9IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwcmVmaXgsICdQeXRob24nLCAnY2V2YWwuYycpKQogCiAgICAgIyBsb2NhdGlvbnMgZGVyaXZlZCBmcm9tIG9wdGlvbnMKLSAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb25bOjNdCisgICAgdmVyc2lvbiA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgIGZsYWdnZWRfdmVyc2lvbiA9IHZlcnNpb24gKyBzeXMuYWJpZmxhZ3MKICAgICBpZiB3aW46CiAgICAgICAgIGV4dGVuc2lvbnNfYyA9ICdmcm96ZW5fZXh0ZW5zaW9ucy5jJwpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weSBiL1Rvb2xzL2ZyZWV6ZS93aW5tYWtlbWFrZWZpbGUucHkKaW5kZXggMzkwZDhhYy4uOWJiM2U2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weQorKysgYi9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5CkBAIC05NSw3ICs5NSw3IEBACiAgICAgcHJpbnQoKQogCiAgICAgcHJpbnQoJyQodGVtcF9kaXIpOicpCi0gICAgcHJpbnQoJyAgaWYgbm90IGV4aXN0ICQodGVtcF9kaXIpXC4gbWtkaXIgJCh0ZW1wX2RpciknKQorICAgIHByaW50KHInICBpZiBub3QgZXhpc3QgJCh0ZW1wX2RpcilcLiBta2RpciAkKHRlbXBfZGlyKScpCiAgICAgcHJpbnQoKQogCiAgICAgb2JqZWN0cyA9IFtdCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGUpCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGJhc2UpCiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChiYXNlICsgIi5vYmoiKQotICAgICAgICAgICAgcHJpbnQoJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCisgICAgICAgICAgICBwcmludChyJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCiAgICAgICAgICAgICBwcmludCgiXHRAJChDQykgLWMgLW5vbG9nbyAvRm8kKiAkKGNkbCkgJChjX2RlYnVnKSAvRCBCVUlMRF9GUkVFWkUiLCBlbmQ9JyAnKQogICAgICAgICAgICAgcHJpbnQoJyItSSQocHl0aG9uaG9tZSkvSW5jbHVkZSIgICItSSQocHl0aG9uaG9tZSkvUEMiIFxcJykKICAgICAgICAgICAgIHByaW50KCJcdFx0JChjZmxhZ3MpICQoY2RlYnVnKSAkKGNpbmNsdWRlKSBcXCIpCkBAIC0xMjYsNyArMTI2LDcgQEAKICAgICBwcmludCgpIDsgcHJpbnQoKQogCiAgICAgcHJpbnQoIk9CSlM9IiwgZW5kPScgJykKLSAgICBmb3Igb2JqIGluIG9iamVjdHM6IHByaW50KCciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQorICAgIGZvciBvYmogaW4gb2JqZWN0czogcHJpbnQociciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQogICAgIHByaW50KCkgOyBwcmludCgpCiAKICAgICBwcmludCgiTElCUz0iLCBlbmQ9JyAnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weSBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKaW5kZXggNzVmMWNjYi4uM2U5NWI0NCAxMDA3NTUKLS0tIGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQorKysgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CkBAIC00NCw3ICs0NCw3IEBACiAjIE5PVEU6IHNvbWUgZ2RicyBhcmUgbGlua2VkIHdpdGggUHl0aG9uIDMsIHNvIHRoaXMgZmlsZSBzaG91bGQgYmUgZHVhbC1zeW50YXgKICMgY29tcGF0aWJsZSAoMi42KyBhbmQgMy4wKykuICBTZWUgIzE5MzA4LgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uLCB3aXRoX3N0YXRlbWVudAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGdkYgogaW1wb3J0IG9zCiBpbXBvcnQgbG9jYWxlCmRpZmYgLS1naXQgYS9Ub29scy9oZy9oZ3RvdWNoLnB5IGIvVG9vbHMvaGcvaGd0b3VjaC5weQppbmRleCAxMTlkODEyLi5mYmNhNDY5IDEwMDY0NAotLS0gYS9Ub29scy9oZy9oZ3RvdWNoLnB5CisrKyBiL1Rvb2xzL2hnL2hndG91Y2gucHkKQEAgLTcsNyArNyw2IEBACiAKIEluIGFkZGl0aW9uIHRvIHRoZSBkZXBlbmRlbmN5IHN5bnRheCwgIy1jb21tZW50cyBhcmUgc3VwcG9ydGVkLgogIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBpbXBvcnQgZXJybm8KIGltcG9ydCBvcwogaW1wb3J0IHRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5IGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKaW5kZXggZGE0MjQzOC4uOGVmNWZmOCAxMDA3NTUKLS0tIGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkKKysrIGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKQEAgLTE1Niw3ICsxNTYsOCBAQAogIiIiKQogCiBpbXBvcnQgb3MKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBzeXMKIGltcG9ydCBnbG9iCiBpbXBvcnQgdGltZQpAQCAtMjYzLDggKzI2NCw3IEBACiAgICAgIyBnZXQgZXh0ZW5zaW9uIGZvciBweXRob24gc291cmNlIGZpbGVzCiAgICAgaWYgJ19weV9leHQnIG5vdCBpbiBnbG9iYWxzKCk6CiAgICAgICAgIGdsb2JhbCBfcHlfZXh0Ci0gICAgICAgIF9weV9leHQgPSBbdHJpcGxlWzBdIGZvciB0cmlwbGUgaW4gaW1wLmdldF9zdWZmaXhlcygpCi0gICAgICAgICAgICAgICAgICAgaWYgdHJpcGxlWzJdID09IGltcC5QWV9TT1VSQ0VdWzBdCisgICAgICAgIF9weV9leHQgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1swXQogCiAgICAgIyBkb24ndCByZWN1cnNlIGludG8gQ1ZTIGRpcmVjdG9yaWVzCiAgICAgaWYgJ0NWUycgaW4gbmFtZXM6CkBAIC0yNzcsNDUgKzI3Nyw2IEBACiAgICAgICAgICkKIAogCi1kZWYgX2dldF9tb2Rwa2dfcGF0aChkb3R0ZWRfbmFtZSwgcGF0aGxpc3Q9Tm9uZSk6Ci0gICAgIiIiR2V0IHRoZSBmaWxlc3lzdGVtIHBhdGggZm9yIGEgbW9kdWxlIG9yIGEgcGFja2FnZS4KLQotICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCB0byBhIGZpbGUgZm9yIGEgbW9kdWxlLCBhbmQgdG8gYSBkaXJlY3RvcnkgZm9yCi0gICAgYSBwYWNrYWdlLiBSZXR1cm4gTm9uZSBpZiB0aGUgbmFtZSBpcyBub3QgZm91bmQsIG9yIGlzIGEgYnVpbHRpbiBvcgotICAgIGV4dGVuc2lvbiBtb2R1bGUuCi0gICAgIiIiCi0gICAgIyBzcGxpdCBvZmYgdG9wLW1vc3QgbmFtZQotICAgIHBhcnRzID0gZG90dGVkX25hbWUuc3BsaXQoJy4nLCAxKQotCi0gICAgaWYgbGVuKHBhcnRzKSA+IDE6Ci0gICAgICAgICMgd2UgaGF2ZSBhIGRvdHRlZCBwYXRoLCBpbXBvcnQgdG9wLWxldmVsIHBhY2thZ2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKHBhcnRzWzBdLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6IGZpbGUuY2xvc2UoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICMgY2hlY2sgaWYgaXQncyBpbmRlZWQgYSBwYWNrYWdlCi0gICAgICAgIGlmIGRlc2NyaXB0aW9uWzJdID09IGltcC5QS0dfRElSRUNUT1JZOgotICAgICAgICAgICAgIyByZWN1cnNpdmVseSBoYW5kbGUgdGhlIHJlbWFpbmluZyBuYW1lIHBhcnRzCi0gICAgICAgICAgICBwYXRobmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgocGFydHNbMV0sIFtwYXRobmFtZV0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICBlbHNlOgotICAgICAgICAjIHBsYWluIG5hbWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKAotICAgICAgICAgICAgICAgIGRvdHRlZF9uYW1lLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBpZiBkZXNjcmlwdGlvblsyXSBub3QgaW4gW2ltcC5QWV9TT1VSQ0UsIGltcC5QS0dfRElSRUNUT1JZXToKLSAgICAgICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGF0aG5hbWUgPSBOb25lCi0KLSAgICByZXR1cm4gcGF0aG5hbWUKLQotCiBkZWYgZ2V0RmlsZXNGb3JOYW1lKG5hbWUpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgbW9kdWxlIGZpbGVzIGZvciBhIGZpbGVuYW1lLCBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUsCiAgICAgb3IgYSBkaXJlY3RvcnkuCkBAIC0zMzAsNyArMjkxLDExIEBACiAgICAgICAgICAgICByZXR1cm4gbGlzdAogCiAgICAgICAgICMgdHJ5IHRvIGZpbmQgbW9kdWxlIG9yIHBhY2thZ2UKLSAgICAgICAgbmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgobmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICAgICAgICAgICAgbmFtZSA9IHNwZWMub3JpZ2luCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0IGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKaW5kZXggZThkYTNlYy4uYzY3MmRkMCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKKysrIGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKQEAgLTM1LDcgKzM1LDcgQEAKIHNldCBCVUlMRFg2ND0NCiBzZXQgVEFSR0VUPVJlYnVpbGQNCiBzZXQgVEVTVFRBUkdFVERJUj0NCi1zZXQgUEdPPQ0KK3NldCBQR089ZGVmYXVsdA0KIA0KIA0KIDpDaGVja09wdHMNCkBAIC01NSw2ICs1NSw3IEBACiBpZiAiJTEiIEVRVSAiLXg4NiIgKHNldCBCVUlMRFg4Nj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIGlmICIlMSIgRVFVICIteDY0IiAoc2V0IEJVSUxEWDY0PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi0tcGdvIiAoc2V0IFBHTz0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tc2tpcC1wZ28iIChzZXQgUEdPPSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiANCiBpZiAiJTEiIE5FUSAiIiBlY2hvIEludmFsaWQgb3B0aW9uOiAiJTEiICYmIGV4aXQgL0IgMQ0KIA0KQEAgLTEwNSwyMCArMTA2LDE1IEBACiANCiBpZiAiJTEiIEVRVSAieDg2IiAoDQogICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Ng0KKyAgICBzZXQgUEdPPQ0KICAgICBzZXQgQlVJTEQ9JVBDQlVJTEQld2luMzJcDQogICAgIHNldCBCVUlMRF9QTEFUPVdpbjMyDQogICAgIHNldCBPVVRESVJfUExBVD13aW4zMg0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDg2DQotKSBlbHNlIGlmICIlfjIiIE5FUSAiIiAoDQotICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQotICAgIHNldCBQR089JX4yDQotICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NC1wZ29cDQotICAgIHNldCBCVUlMRF9QTEFUPXg2NA0KLSAgICBzZXQgT1VURElSX1BMQVQ9YW1kNjQNCi0gICAgc2V0IE9CSkRJUl9QTEFUPXg2NA0KICkgZWxzZSAoDQogICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQogICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NFwNCisgICAgc2V0IFBHTz0lfjINCiAgICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQogICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQpAQCAtMTc0LDEyICsxNzAsMTEgQEAKICAgICBAZWNobyBvZmYNCiApDQogDQotc2V0IEJVSUxET1BUUz0vcDpCdWlsZEZvclJlbGVhc2U9dHJ1ZSAvcDpEb3dubG9hZFVybD0lRE9XTkxPQURfVVJMJSAvcDpEb3dubG9hZFVybEJhc2U9JURPV05MT0FEX1VSTF9CQVNFJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCi1pZiAiJVBHTyUiIE5FUSAiIiBzZXQgQlVJTERPUFRTPSVCVUlMRE9QVFMlIC9wOlBHT0J1aWxkUGF0aD0lQlVJTEQlDQorc2V0IEJVSUxET1BUUz0vcDpQbGF0Zm9ybT0lMSAvcDpCdWlsZEZvclJlbGVhc2U9dHJ1ZSAvcDpEb3dubG9hZFVybD0lRE9XTkxPQURfVVJMJSAvcDpEb3dubG9hZFVybEJhc2U9JURPV05MT0FEX1VSTF9CQVNFJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCiBtc2J1aWxkICIlRCVsYXVuY2hlclxsYXVuY2hlci53aXhwcm9qIiAvcDpQbGF0Zm9ybT14ODYgJUNFUlRPUFRTJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCi1tc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZWxvY2FsLndpeHByb2oiIC90OlJlYnVpbGQgL3A6UGxhdGZvcm09JTEgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPXRydWUNCittc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZWxvY2FsLndpeHByb2oiIC90OlJlYnVpbGQgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPXRydWUNCiBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KLW1zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNld2ViLndpeHByb2oiIC90OlJlYnVpbGQgL3A6UGxhdGZvcm09JTEgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPWZhbHNlDQorbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2V3ZWIud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9ZmFsc2UNCiBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KIA0KIG1zYnVpbGQgIiVEJW1ha2VfemlwLnByb2oiIC90OkJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUNCkBAIC0xOTYsNyArMTkxLDcgQEAKIA0KIDpIZWxwDQogZWNobyBidWlsZHJlbGVhc2UuYmF0IFstLW91dCBESVJdIFsteDg2XSBbLXg2NF0gWy0tY2VydGlmaWNhdGUgQ0VSVE5BTUVdIFstLWJ1aWxkXSBbLS1za2lwLWJ1aWxkXQ0KLWVjaG8gICAgICAgICAgICAgICAgICBbLS1wZ28gQ09NTUFORF0gWy0tc2tpcC1kb2NdIFstLWRvd25sb2FkIERPV05MT0FEIFVSTF0gWy0tdGVzdCBUQVJHRVRESVJdDQorZWNobyAgICAgICAgICAgICAgICAgIFstLXBnbyBDT01NQU5EXSBbLS1za2lwLXBnb10gWy0tc2tpcC1kb2NdIFstLWRvd25sb2FkIERPV05MT0FEIFVSTF0gWy0tdGVzdCBUQVJHRVRESVJdDQogZWNobyAgICAgICAgICAgICAgICAgIFstaF0NCiBlY2hvLg0KIGVjaG8gICAgLS1vdXQgKC1vKSAgICAgICAgICBTcGVjaWZ5IGFuIGFkZGl0aW9uYWwgb3V0cHV0IGRpcmVjdG9yeSBmb3IgaW5zdGFsbGVycw0KQEAgLTIwNSw3ICsyMDAsOCBAQAogZWNobyAgICAtLWJ1aWxkICgtYikgICAgICAgIEluY3JlbWVudGFsbHkgYnVpbGQgUHl0aG9uIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcNCiBlY2hvICAgIC0tc2tpcC1idWlsZCAoLUIpICAgRG8gbm90IGJ1aWxkIFB5dGhvbiAoanVzdCBkbyB0aGUgaW5zdGFsbGVycykNCiBlY2hvICAgIC0tc2tpcC1kb2MgKC1EKSAgICAgRG8gbm90IGJ1aWxkIGRvY3VtZW50YXRpb24NCi1lY2hvICAgIC0tcGdvICAgICAgICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMgdXNpbmcgUEdPDQorZWNobyAgICAtLXBnbyAgICAgICAgICAgICAgIFNwZWNpZnkgUEdPIGNvbW1hbmQgZm9yIHg2NCBpbnN0YWxsZXJzDQorZWNobyAgICAtLXNraXAtcGdvICAgICAgICAgIEJ1aWxkIHg2NCBpbnN0YWxsZXJzIHVzaW5nIFBHTw0KIGVjaG8gICAgLS1kb3dubG9hZCAgICAgICAgICBTcGVjaWZ5IHRoZSBmdWxsIGRvd25sb2FkIFVSTCBmb3IgTVNJcw0KIGVjaG8gICAgLS10ZXN0ICAgICAgICAgICAgICBTcGVjaWZ5IHRoZSB0ZXN0IGRpcmVjdG9yeSB0byBydW4gdGhlIGluc3RhbGxlciB0ZXN0cw0KIGVjaG8gICAgLWggICAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCBpbmZvcm1hdGlvbg0KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0gYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtCmluZGV4IDRkOWM5N2EuLjFjMGJkMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQpAQCAtMTE2LDEwICsxMTYsMTEgQEAKICAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlN1Y2Nlc3NIZWFkZXIpPC9UZXh0PgogICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KIAotICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IlN1Y2Nlc3NUZXh0IiBYPSIyMDUiIFk9IjcxIiBXaWR0aD0iLTMxIiBIZWlnaHQ9IjEwMCIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPjwvSHlwZXJ0ZXh0PgorICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IlN1Y2Nlc3NUZXh0IiBYPSIyMDUiIFk9IjcxIiBXaWR0aD0iLTcxIiBIZWlnaHQ9IjE1MCIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPjwvSHlwZXJ0ZXh0PgogCi0gICAgICAgIDxUZXh0IE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0VGV4dCIgWD0iMjA1IiBZPSItMTAwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM0IiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzUmVzdGFydFRleHQpPC9UZXh0PgotICAgICAgICA8QnV0dG9uIE5hbWU9IkxhdW5jaEJ1dHRvbiIgWD0iMTg1IiBZPSItNTAiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhGIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NMYXVuY2hCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc01heFBhdGhCdXR0b24iIFg9IjE4NSIgWT0iLTcwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjgxIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RSIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TdWNjZXNzTWF4UGF0aEJ1dHRvbik8L0J1dHRvbj4KKworICAgICAgICA8VGV4dCBOYW1lPSJTdWNjZXNzUmVzdGFydFRleHQiIFg9IjIwNSIgWT0iLTQwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM0IiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzUmVzdGFydFRleHQpPC9UZXh0PgogICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uIiBYPSItMTAxIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRCdXR0b24pPC9CdXR0b24+CiAgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc0NhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNsb3NlQnV0dG9uKTwvQnV0dG9uPgogICAgIDwvUGFnZT4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwgYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCmluZGV4IGVkNzkyNDYuLjQzNTA2ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bApAQCAtMTQyLDQgKzE0Miw3IEBACiAgIDxTdHJpbmcgSWQ9IkZhaWx1cmVXUzJLM09yRWFybGllciI+V2luZG93cyBTZXJ2ZXIgMjAwOCBTUDIgb3IgbGF0ZXIgaXMgcmVxdWlyZWQgdG8gaW5zdGFsbCBhbmQgdXNlIFtXaXhCdW5kbGVOYW1lXS4KIAogVmlzaXQgJmx0O2EgaHJlZj0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZy8iJmd0O3B5dGhvbi5vcmcmbHQ7L2EmZ3Q7IHRvIGRvd25sb2FkIFB5dGhvbiAzLjQuPC9TdHJpbmc+CisKKyAgPFN0cmluZyBJZD0iU3VjY2Vzc01heFBhdGhCdXR0b24iPkRpc2FibGUgcGF0aCBsZW5ndGggbGltaXQ8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc01heFBhdGhCdXR0b25Ob3RlIj5DaGFuZ2VzIHlvdXIgbWFjaGluZSBjb25maWd1cmF0aW9uIHRvIGFsbG93IHByb2dyYW1zLCBpbmNsdWRpbmcgUHl0aG9uLCB0byBieXBhc3MgdGhlIDI2MCBjaGFyYWN0ZXIgIk1BWF9QQVRIIiBsaW1pdGF0aW9uLjwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKaW5kZXggNmE2N2VlMi4uZTg4OTgxZiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcApAQCAtMTEsMTAgKzExLDYgQEAKICNpbmNsdWRlICJwY2guaCIKIAogc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9XSU5ET1dfQ0xBU1MgPSBMIlB5dGhvbkJBIjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIID0gTCJMYXVuY2hUYXJnZXQiOwotc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEID0gTCJMYXVuY2hUYXJnZXRFbGV2YXRlZElkIjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUyA9IEwiTGF1bmNoQXJndW1lbnRzIjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0hJRERFTiA9IEwiTGF1bmNoSGlkZGVuIjsKIHN0YXRpYyBjb25zdCBEV09SRCBQWUJBX0FDUVVJUkVfUEVSQ0VOVEFHRSA9IDMwOwogc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9CVU5ETEVfRklMRV9WRVJTSU9OID0gTCJXaXhCdW5kbGVGaWxlVmVyc2lvbiI7CiAKQEAgLTEyOSwxMSArMTI1LDExIEBACiAgICAgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwKIAogICAgIC8vIFN1Y2Nlc3MgcGFnZQotICAgIElEX0xBVU5DSF9CVVRUT04sCiAgICAgSURfU1VDQ0VTU19URVhULAogICAgIElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULAogICAgIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sCiAgICAgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OLAorICAgIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLAogCiAgICAgLy8gRmFpbHVyZSBwYWdlCiAgICAgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssCkBAIC0xODgsMTEgKzE4NCwxMSBAQAogICAgIHsgSURfT1ZFUkFMTF9QUk9HUkVTU19URVhULCBMIk92ZXJhbGxQcm9ncmVzc1RleHQiIH0sCiAgICAgeyBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLCBMIlByb2dyZXNzQ2FuY2VsQnV0dG9uIiB9LAogCi0gICAgeyBJRF9MQVVOQ0hfQlVUVE9OLCBMIkxhdW5jaEJ1dHRvbiIgfSwKICAgICB7IElEX1NVQ0NFU1NfVEVYVCwgTCJTdWNjZXNzVGV4dCIgfSwKICAgICB7IElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULCBMIlN1Y2Nlc3NSZXN0YXJ0VGV4dCIgfSwKICAgICB7IElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sIEwiU3VjY2Vzc1Jlc3RhcnRCdXR0b24iIH0sCiAgICAgeyBJRF9TVUNDRVNTX0NBTkNFTF9CVVRUT04sIEwiU3VjY2Vzc0NhbmNlbEJ1dHRvbiIgfSwKKyAgICB7IElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBMIlN1Y2Nlc3NNYXhQYXRoQnV0dG9uIiB9LAogCiAgICAgeyBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywgTCJGYWlsdXJlTG9nRmlsZUxpbmsiIH0sCiAgICAgeyBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgTCJGYWlsdXJlTWVzc2FnZVRleHQiIH0sCkBAIC00MzYsNiArNDMyLDExIEBACiAgICAgICAgIGNhc2UgSURfVU5JTlNUQUxMX0JVVFRPTjoKICAgICAgICAgICAgIE9uUGxhbihCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCk7CiAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OOgorICAgICAgICAgICAgRW5hYmxlTWF4UGF0aFN1cHBvcnQoKTsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgTEV4aXQ6CkBAIC01MzMsOSArNTM0LDggQEAKICAgICB9CiAKICAgICB2b2lkIFN1Y2Nlc3NQYWdlX1Nob3coKSB7Ci0gICAgICAgIC8vIG9uIHRoZSAiU3VjY2VzcyIgcGFnZSwgY2hlY2sgaWYgdGhlIHJlc3RhcnQgb3IgbGF1bmNoIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZC4KKyAgICAgICAgLy8gb24gdGhlICJTdWNjZXNzIiBwYWdlLCBjaGVjayBpZiB0aGUgcmVzdGFydCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCiAgICAgICAgIEJPT0wgc2hvd1Jlc3RhcnRCdXR0b24gPSBGQUxTRTsKLSAgICAgICAgQk9PTCBsYXVuY2hUYXJnZXRFeGlzdHMgPSBGQUxTRTsKICAgICAgICAgTE9DX1NUUklORyAqc3VjY2Vzc1RleHQgPSBudWxscHRyOwogICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKICAgICAgICAgCkBAIC01NDMsOCArNTQzLDYgQEAKICAgICAgICAgICAgIGlmIChCT09UU1RSQVBQRVJfUkVTVEFSVF9QUk9NUFQgPT0gX2NvbW1hbmQucmVzdGFydCkgewogICAgICAgICAgICAgICAgIHNob3dSZXN0YXJ0QnV0dG9uID0gVFJVRTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChUaGVtZUNvbnRyb2xFeGlzdHMoX3RoZW1lLCBJRF9MQVVOQ0hfQlVUVE9OKSkgewotICAgICAgICAgICAgbGF1bmNoVGFyZ2V0RXhpc3RzID0gQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgpOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChfcGxhbm5lZEFjdGlvbikgewpAQCAtNTcxLDkgKzU2OSw0MSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTiwgbGF1bmNoVGFyZ2V0RXhpc3RzICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgX3BsYW5uZWRBY3Rpb24pOwogICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgc2hvd1Jlc3RhcnRCdXR0b24pOwogICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CisKKyAgICAgICAgaWYgKF9jb21tYW5kLmFjdGlvbiAhPSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwgfHwKKyAgICAgICAgICAgICFJc1dpbmRvd3NWZXJzaW9uT3JHcmVhdGVyKDEwLCAwLCAwKSkgeworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIERXT1JEIGRhdGFUeXBlID0gMCwgYnVmZmVyID0gMCwgYnVmZmVyTGVuID0gc2l6ZW9mKGJ1ZmZlcik7CisgICAgICAgICAgICBIS0VZIGhLZXk7CisgICAgICAgICAgICBMUkVTVUxUIHJlcyA9IFJlZ09wZW5LZXlFeFcoCisgICAgICAgICAgICAgICAgSEtFWV9MT0NBTF9NQUNISU5FLAorICAgICAgICAgICAgICAgIEwiU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcRmlsZVN5c3RlbSIsCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICBLRVlfUkVBRCwKKyAgICAgICAgICAgICAgICAmaEtleQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIHJlcyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgTCJMb25nUGF0aHNFbmFibGVkIiwgbnVsbHB0ciwgJmRhdGFUeXBlLAorICAgICAgICAgICAgICAgICAgICAoTFBCWVRFKSZidWZmZXIsICZidWZmZXJMZW4pOworICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJGYWlsZWQgdG8gb3BlbiBTWVNURU1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxGaWxlU3lzdGVtOiBlcnJvciBjb2RlICVkIiwgcmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUyAmJiBkYXRhVHlwZSA9PSBSRUdfRFdPUkQgJiYgYnVmZmVyID09IDApIHsKKyAgICAgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbGV2YXRlcyhfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBUUlVFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUykKKyAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJGYWlsZWQgdG8gcmVhZCBMb25nUGF0aHNFbmFibGVkIHZhbHVlOiBlcnJvciBjb2RlICVkIiwgcmVzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiSGlkaW5nIE1BWF9QQVRIIGJ1dHRvbiBiZWNhdXNlIGl0IGlzIGFscmVhZHkgZW5hYmxlZCIpOworICAgICAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIEZhaWx1cmVQYWdlX1Nob3coKSB7CkBAIC02MjYsNiArNjU2LDM0IEBACiAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT04sIHNob3dSZXN0YXJ0QnV0dG9uKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBFbmFibGVNYXhQYXRoU3VwcG9ydCgpIHsKKyAgICAgICAgTFBXU1RSIHRhcmdldERpciA9IG51bGxwdHIsIGRlZmF1bHREaXIgPSBudWxscHRyOworICAgICAgICBIUkVTVUxUIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgaWYgKEZBSUxFRChocikgfHwgIXRhcmdldERpciB8fCAhdGFyZ2V0RGlyWzBdKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIkZhaWxlZCB0byBnZXQgVGFyZ2V0RGlyIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMUFdTVFIgcHl0aG9udyA9IG51bGxwdHI7CisgICAgICAgIFN0ckFsbG9jRm9ybWF0dGVkKCZweXRob253LCBMIiVsc1xccHl0aG9udy5leGUiLCB0YXJnZXREaXIpOworICAgICAgICBpZiAoIXB5dGhvbncgfHwgIXB5dGhvbndbMF0pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBweXRob253LmV4ZSBwYXRoIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMUENXU1RSIGFyZ3VtZW50cyA9IEwiLWMgXCJpbXBvcnQgd2lucmVnOyAiCisgICAgICAgICAgICAid2lucmVnLlNldFZhbHVlRXgoIgorICAgICAgICAgICAgICAgICJ3aW5yZWcuQ3JlYXRlS2V5KHdpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsICIKKyAgICAgICAgICAgICAgICAgICAgInInU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcRmlsZVN5c3RlbScpLCAiCisgICAgICAgICAgICAgICAgIidMb25nUGF0aHNFbmFibGVkJywgIgorICAgICAgICAgICAgICAgICJOb25lLCAiCisgICAgICAgICAgICAgICAgIndpbnJlZy5SRUdfRFdPUkQsICIKKyAgICAgICAgICAgICAgICAiMSIKKyAgICAgICAgICAgICIpXCIiOworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkV4ZWN1dGluZyAlbHMgJWxzIiwgcHl0aG9udywgYXJndW1lbnRzKTsKKyAgICAgICAgSElOU1RBTkNFIHJlcyA9IFNoZWxsRXhlY3V0ZVcoMCwgTCJydW5hcyIsIHB5dGhvbncsIGFyZ3VtZW50cywgTlVMTCwgU1dfSElERSk7CisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAicmV0dXJuIGNvZGUgMHglMDh4IiwgcmVzKTsKKyAgICB9CiAKIHB1YmxpYzogLy8gSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uCiAgICAgdmlydHVhbCBTVERNRVRIT0RJTVAgT25TdGFydHVwKCkgewpAQCAtMTIxNiwxMiArMTI3NCw2IEBACiAgICAgfQogCiAgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uTGF1bmNoQXBwcm92ZWRFeGVDb21wbGV0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMsIF9faW4gRFdPUkQgLypwcm9jZXNzSWQqLykgewotICAgICAgICBpZiAoSFJFU1VMVF9GUk9NX1dJTjMyKEVSUk9SX0FDQ0VTU19ERU5JRUQpID09IGhyU3RhdHVzKSB7Ci0gICAgICAgICAgICAvL3RyeSB3aXRoIFNoZWxFeGVjIG5leHQgdGltZQotICAgICAgICAgICAgT25DbGlja0xhdW5jaEJ1dHRvbigpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKLSAgICAgICAgfQogICAgIH0KIAogCkBAIC0xODY3LDEwICsxOTE5LDYgQEAKICAgICAgICAgICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgICAgIC8vIEN1c3RvbWl6ZSBjb21tYW5kcwogICAgICAgICAgICAgLy8gU3VjY2Vzcy9mYWlsdXJlIGNvbW1hbmRzCi0gICAgICAgICAgICBjYXNlIElEX0xBVU5DSF9CVVRUT046Ci0gICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrTGF1bmNoQnV0dG9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0KICAgICAgICAgICAgIGNhc2UgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKICAgICAgICAgICAgIGNhc2UgSURfRkFJTFVSRV9SRVNUQVJUX0JVVFRPTjoKICAgICAgICAgICAgICAgICBwQkEtPk9uQ2xpY2tSZXN0YXJ0QnV0dG9uKCk7CkBAIC0yMzcyLDY5ICsyNDIwLDYgQEAKICAgICB9CiAKIAotICAgIC8vCi0gICAgLy8gT25DbGlja0xhdW5jaEJ1dHRvbiAtIGxhdW5jaCB0aGUgYXBwIGZyb20gdGhlIHN1Y2Nlc3MgcGFnZS4KLSAgICAvLwotICAgIHZvaWQgT25DbGlja0xhdW5jaEJ1dHRvbigpIHsKLSAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7Ci0gICAgICAgIExQV1NUUiBzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pMYXVuY2hUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pBcmd1bWVudHMgPSBudWxscHRyOwotICAgICAgICBpbnQgbkNtZFNob3cgPSBTV19TSE9XTk9STUFMOwotCi0gICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgsICZzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7Ci0gICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggdGFyZ2V0IHZhcmlhYmxlICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKLQotICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCwgJnNjekxhdW5jaFRhcmdldCk7Ci0gICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCBsYXVuY2ggdGFyZ2V0IHZhcmlhYmxlOiAlbHMiLCBzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7Ci0KLSAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCkpIHsKLSAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lELCAmc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7Ci0gICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIHRhcmdldCBlbGV2YXRlZCBpZCAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUykpIHsKLSAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTLCAmc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOwotICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCBhcmd1bWVudHMgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9ISURERU4pKSB7Ci0gICAgICAgICAgICBuQ21kU2hvdyA9IFNXX0hJREU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCAmJiAhX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCkgewotICAgICAgICAgICAgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCA9IFRSVUU7Ci0gICAgICAgICAgICBociA9IF9lbmdpbmUtPkxhdW5jaEFwcHJvdmVkRXhlKF9oV25kLCBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkLCBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cywgMCk7Ci0gICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSkgewotICAgICAgICAgICAgICAgIEJhbExvZ0Vycm9yKGhyLCAiRmFpbGVkIHRvIGxhdW5jaCBlbGV2YXRlZCB0YXJnZXQ6ICVscyIsIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOwotCi0gICAgICAgICAgICAgICAgLy90cnkgd2l0aCBTaGVsRXhlYyBuZXh0IHRpbWUKLSAgICAgICAgICAgICAgICBPbkNsaWNrTGF1bmNoQnV0dG9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpIHsKLSAgICAgICAgICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cywgJnNjekFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0IGxhdW5jaCBhcmd1bWVudHMgdmFyaWFibGU6ICVscyIsIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaHIgPSBTaGVsRXhlYyhzY3pMYXVuY2hUYXJnZXQsIHNjekFyZ3VtZW50cywgTCJvcGVuIiwgbnVsbHB0ciwgbkNtZFNob3csIF9oV25kLCBudWxscHRyKTsKLSAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQ6ICVscyIsIHNjekxhdW5jaFRhcmdldCk7Ci0KLSAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7Ci0gICAgICAgIH0KLQotICAgIExFeGl0OgotICAgICAgICBTdHJTZWN1cmVaZXJvRnJlZVN0cmluZyhzY3pBcmd1bWVudHMpOwotICAgICAgICBSZWxlYXNlU3RyKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKLSAgICAgICAgUmVsZWFzZVN0cihzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKLSAgICAgICAgU3RyU2VjdXJlWmVyb0ZyZWVTdHJpbmcoc2N6TGF1bmNoVGFyZ2V0KTsKLSAgICAgICAgUmVsZWFzZVN0cihzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogCiAgICAgLy8KICAgICAvLyBPbkNsaWNrUmVzdGFydEJ1dHRvbiAtIGFsbG93cyB0aGUgcmVzdGFydCBhbmQgY2xvc2VzIHRoZSBhcHAuCkBAIC0zMTU3LDcgKzMxNDIsNiBAQAogICAgICAgICBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlID0gVUlOVF9NQVg7CiAgICAgICAgIF90YXNrYmFyQnV0dG9uT0sgPSBGQUxTRTsKICAgICAgICAgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2UgPSBGQUxTRTsKLSAgICAgICAgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCA9IEZBTFNFOwogCiAgICAgICAgIF9zdXBwcmVzc1BhaW50ID0gRkFMU0U7CiAKQEAgLTMyNDIsNyArMzIyNiw2IEBACiAgICAgVUlOVCBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlOwogICAgIEJPT0wgX3Rhc2tiYXJCdXR0b25PSzsKICAgICBCT09MIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlOwotICAgIEJPT0wgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZDsKIAogICAgIEJPT0wgX3N1cHByZXNzUGFpbnQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFiNjI5ZS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMKaW5kZXggMzgzMDdlMC4uYzg5ZTZlZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cwpAQCAtNCw3ICs0LDcgQEAKICAgPEJ1bmRsZSBOYW1lPSIhKGxvYy5GdWxsUHJvZHVjdE5hbWUpIgogICAgICAgICAgIFVwZ3JhZGVDb2RlPSIkKHZhci5Db3JlVXBncmFkZUNvZGUpIgogICAgICAgICAgIFZlcnNpb249IiQodmFyLlZlcnNpb24pIgotICAgICAgICAgIEljb25Tb3VyY2VGaWxlPSJidW5kbGUuaWNvIgorICAgICAgICAgIEljb25Tb3VyY2VGaWxlPSIuLlwuLlwuLlxQQ1xpY29uc1xzZXR1cC5pY28iCiAgICAgICAgICAgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIgogICAgICAgICAgIEFib3V0VXJsPSJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIgogICAgICAgICAgIERpc2FibGVNb2RpZnk9ImJ1dHRvbiIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb21tb24ud3hzIGIvVG9vbHMvbXNpL2NvbW1vbi53eHMKaW5kZXggNGVmYWQ2NS4uMTk0OWU4MSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2NvbW1vbi53eHMKKysrIGIvVG9vbHMvbXNpL2NvbW1vbi53eHMKQEAgLTEsNiArMSwxMCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgogICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5IElkPSJST09UUkVHSVNUUllLRVkiIFZhbHVlPSJTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZSIgLz4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KICAgICAgICAgPFByb3BlcnR5IElkPSJSRUdJU1RSWUtFWSIgVmFsdWU9IlNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlXCQodmFyLlNob3J0VmVyc2lvbikkKHZhci5QeUFyY2hFeHQpJCh2YXIuUHlUZXN0RXh0KSIgLz4KICAgICA8L0ZyYWdtZW50PgogICAgIApAQCAtMTYsMTAgKzIwLDEyIEBACiAgICAgPEZyYWdtZW50PgogICAgICAgICA8UHJvcGVydHkgSWQ9IlVwZ3JhZGVUYWJsZSIgVmFsdWU9IjEiIC8+CiAgICAgICAgIAorICAgICAgICA8P2lmbmRlZiBTdXBwcmVzc1VwZ3JhZGVUYWJsZSA/PgogICAgICAgICA8VXBncmFkZSBJZD0iJCh2YXIuVXBncmFkZUNvZGUpIj4KICAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iRE9XTkdSQURFIiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09Im5vIiBPbmx5RGV0ZWN0PSJ5ZXMiIC8+CiAgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IlVQR1JBREUiIE1pbmltdW09IiQodmFyLlVwZ3JhZGVNaW5pbXVtVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJ5ZXMiIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWF4aW11bT0ibm8iIC8+CiAgICAgICAgIDwvVXBncmFkZT4KKyAgICAgICAgPD9lbmRpZiA/PgogICAgICAgICAKICAgICAgICAgPD9pZmRlZiBDb3JlVXBncmFkZUNvZGUgPz4KICAgICAgICAgPD9pZiAkKHZhci5VcGdyYWRlQ29kZSkhPSQodmFyLkNvcmVVcGdyYWRlQ29kZSkgPz4KQEAgLTQwLDcgKzQ2LDcgQEAKICAgICAKICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDwhLS0gSW5jbHVkZSBhbiBpY29uIGZvciB0aGUgUHJvZ3JhbXMgYW5kIEZlYXR1cmVzIGRpYWxvZyAtLT4KLSAgICAgICAgPEljb24gSWQ9IkFSUEljb24iIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKVBDXHB5Y29uLmljbyIgLz4KKyAgICAgICAgPEljb24gSWQ9IkFSUEljb24iIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXHB5dGhvbi5pY28iIC8+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQUFJPRFVDVElDT04iIFZhbHVlPSJBUlBJY29uIiAvPgogICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUE5PTU9ESUZZIiBWYWx1ZT0iMSIgLz4KICAgICAgICAgPFByb3BlcnR5IElkPSJESVNBQkxFQURWVFNIT1JUQ1VUUyIgVmFsdWU9IjEiIC8+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZSBiL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCmluZGV4IDhkMDM1MjYuLmM5NWMyNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCisrKyBiL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCkBAIC0xNCw0ICsxNCw1IEBACiAgICAgPFN0cmluZyBJZD0iTm9Eb3duZ3JhZGUiPkEgbmV3ZXIgdmVyc2lvbiBvZiAhKGxvYy5Qcm9kdWN0TmFtZSkgaXMgYWxyZWFkeSBpbnN0YWxsZWQuPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iSW5jb3JyZWN0Q29yZSI+QW4gaW5jb3JyZWN0IHZlcnNpb24gb2YgYSBwcmVyZXF1aXNpdGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIFBsZWFzZSB1bmluc3RhbGwgYW55IG90aGVyIHZlcnNpb25zIG9mICEobG9jLlByb2R1Y3ROYW1lKSBhbmQgdHJ5IGluc3RhbGxpbmcgdGhpcyBhZ2Fpbi48L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJOb1RhcmdldERpciI+VGhlIFRBUkdFVERJUiB2YXJpYWJsZSBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gaW52b2tpbmcgdGhpcyBpbnN0YWxsZXIuPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTWFudWZhY3R1cmVyU3VwcG9ydFVybCI+aHR0cDovL3d3dy5weXRob24ub3JnLzwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvagppbmRleCBkMjZhNjAzLi4yNGRmMGY1IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2oKQEAgLTE0LDYgKzE0LDcgQEAKICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGUud3hzIiAvPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcmVnLnd4cyIgLz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlLnd4cwppbmRleCAxNTRjZWU1Li4wM2Q0M2M2IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZS53eHMKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGUud3hzCkBAIC05LDYgKzksNyBAQAogICAgICAgICAKICAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfcHl0aG9uIiBQcmltYXJ5PSJ5ZXMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9yZWciIFByaW1hcnk9InllcyIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3R4dCIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX2ljb25zIiAvPgogICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgpAQCAtMjQsNyArMjUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiAvPgogICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBEaXJlY3Rvcnk9Ik1lbnVEaXIiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+Ci0gICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbFBhdGhcSW5zdGFsbEdyb3VwIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5Qcm9kdWN0TmFtZSkiIEtleVBhdGg9InllcyIgLz4KICAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsZWRGZWF0dXJlcyIgTmFtZT0iU2hvcnRjdXRzIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5WZXJzaW9uKSIgLz4KICAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2oKaW5kZXggMjc1NDVjYS4uY2YwODViZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagpAQCAtMTAsNiArMTAsNyBAQAogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9kLnd4cyIgLz4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3JlZy53eHMiIC8+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKaW5kZXggNTc3ZmJlNS4uMWY5ZTI5MCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtNCw0ICs0LDUgQEAKICAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmV4ZWN1dGFibGU8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJTaG9ydGN1dE5hbWUiPlB5dGhvbiB7e1Nob3J0VmVyc2lvbn19ICh7e0JpdG5lc3N9fSk8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJTaG9ydGN1dERlc2NyaXB0aW9uIj5MYXVuY2hlcyB0aGUgIShsb2MuUHJvZHVjdE5hbWUpIGludGVycHJldGVyLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlN1cHBvcnRVcmwiPmh0dHA6Ly93d3cucHl0aG9uLm9yZy88L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCmluZGV4IDllNDdiNWQuLjAxMzg1ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cworKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMKQEAgLTI4LDYgKzI4LDkgQEAKICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9udy5leGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuUHl0aG9ud0V4ZUNvbXBvbmVudEd1aWQpIj4KICAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253LmV4ZSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoIiBOYW1lPSJXaW5kb3dlZEV4ZWN1dGFibGVQYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbI3B5dGhvbncuZXhlXSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0idmNydW50aW1lMTQwLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJ2Y3J1bnRpbWUxNDAuZGxsIiBTb3VyY2U9IiEoYmluZHBhdGgucmVkaXN0KXZjcnVudGltZTE0MC5kbGwiIEtleVBhdGg9InllcyIgLz4KQEAgLTY2LDEwICs2OSwxMyBAQAogICAgIDxGcmFnbWVudD4KICAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfaWNvbnMiPgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHkuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5LmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweS5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweS5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNccHkuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5Yy5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHljLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWMuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHljLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweWMuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5ZC5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHlkLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweWQuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagppbmRleCA0ZjRjODY5Li5iZjEyMTNlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagpAQCAtMTAsNiArMTAsNyBAQAogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9wZGIud3hzIiAvPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcmVnLnd4cyIgLz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX3JlZy53eHMgYi9Ub29scy9tc2kvZXhlL2V4ZV9yZWcud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDNjMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9yZWcud3hzCkBAIC0wLDAgKzEsMjUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUk9PVFJFR0lTVFJZS0VZIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfcmVnIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkNvbW1vblB5dGhvblJlZ2lzdHJhdGlvbiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5Db21tb25QeXRob25SZWdDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JPT1RSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJEaXNwbGF5TmFtZSIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuTWFudWZhY3R1cmVyKSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTdXBwb3J0VXJsIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5NYW51ZmFjdHVyZXJTdXBwb3J0VXJsKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iUHl0aG9uUmVnaXN0cmF0aW9uIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IiQodmFyLlB5dGhvblJlZ0NvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iRGlzcGxheU5hbWUiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLlNob3J0Y3V0TmFtZSkiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3VwcG9ydFVybCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuU3VwcG9ydFVybCkiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJWZXJzaW9uIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5Mb25nVmVyc2lvbikiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTeXNWZXJzaW9uIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5TaG9ydFZlcnNpb24pIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3lzQXJjaGl0ZWN0dXJlIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5QbGF0Zm9ybUFyY2hpdGVjdHVyZSkiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvaiBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCmluZGV4IDAxYTlkY2IuLjg5MzVjZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCkBAIC01LDcgKzUsNyBAQAogICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CiAgICAgICAgIDxPdXRwdXROYW1lPmxhdW5jaGVyPC9PdXRwdXROYW1lPgogICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgotICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPlVwZ3JhZGVDb2RlPTFCNjhBMEVDLTRERDMtNTEzNC04NDBFLTczODU0QjA4NjNGMTskKERlZmluZUNvbnN0YW50cyk8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz5VcGdyYWRlQ29kZT0xQjY4QTBFQy00REQzLTUxMzQtODQwRS03Mzg1NEIwODYzRjE7U3VwcHJlc3NVcGdyYWRlVGFibGU9MTskKERlZmluZUNvbnN0YW50cyk8L0RlZmluZUNvbnN0YW50cz4KICAgICAgICAgPElnbm9yZUNvbW1vbld4bFRlbXBsYXRlcz50cnVlPC9JZ25vcmVDb21tb25XeGxUZW1wbGF0ZXM+CiAgICAgICAgIDxTdXBwcmVzc0lDRXM+SUNFODA8L1N1cHByZXNzSUNFcz4KICAgICA8L1Byb3BlcnR5R3JvdXA+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cwppbmRleCBlYmQ4NzVjLi43ZGUxMzFhIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMKQEAgLTUsNyArNSwxMCBAQAogICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgogICAgICAgICAKICAgICAgICAgPFByb3BlcnR5IElkPSJTdXBwcmVzc19UQVJHRVRESVJfQ2hlY2siIFZhbHVlPSIxIiAvPgotICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IkFSUFBST0RVQ1RJQ09OIiAvPgorICAgICAgICA8SWNvbiBJZD0iQVJQSWNvbiIgU291cmNlRmlsZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNcbGF1bmNoZXIuaWNvIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUFBST0RVQ1RJQ09OIiBWYWx1ZT0iQVJQSWNvbiIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJBUlBOT01PRElGWSIgVmFsdWU9IjEiIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iRElTQUJMRUFEVlRTSE9SVENVVFMiIFZhbHVlPSIxIiAvPgogCiAgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGF1bmNoZXJfZXhlIiBQcmltYXJ5PSJ5ZXMiIC8+CkBAIC0yNiwxOCArMjksMjEgQEAKICAgICAgICAgICAgIDxDdXN0b20gQmVmb3JlPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSIgQWN0aW9uPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlDVSI+Tk9UIEluc3RhbGxlZCBBTkQgTk9UIEFMTFVTRVJTPTE8L0N1c3RvbT4KICAgICAgICAgICAgIDxDdXN0b20gQmVmb3JlPSJDb3N0RmluYWxpemUiIEFjdGlvbj0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5TE0iPk5PVCBJbnN0YWxsZWQgQU5EIEFMTFVTRVJTPTE8L0N1c3RvbT4KIAotICAgICAgICAgICAgPFJlbW92ZUV4aXN0aW5nUHJvZHVjdHMgQWZ0ZXI9Ikluc3RhbGxWYWxpZGF0ZSI+VVBHUkFERSBvciBSRU1PVkVfMzUwX0xBVU5DSEVSPC9SZW1vdmVFeGlzdGluZ1Byb2R1Y3RzPgorICAgICAgICAgICAgPFJlbW92ZUV4aXN0aW5nUHJvZHVjdHMgQWZ0ZXI9Ikluc3RhbGxWYWxpZGF0ZSI+VVBHUkFERSBvciBSRU1PVkVfMzUwX0xBVU5DSEVSIG9yIFJFTU9WRV8zNjBBMV9MQVVOQ0hFUjwvUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cz4KICAgICAgICAgPC9JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgogCisgICAgICAgIDwhLS0gVXBncmFkZSBhbGwgdmVyc2lvbnMgb2YgdGhlIGxhdW5jaGVyIC0tPgorICAgICAgICA8VXBncmFkZSBJZD0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iRE9XTkdSQURFIiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09Im5vIiBPbmx5RGV0ZWN0PSJ5ZXMiIC8+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IlVQR1JBREUiIE1pbmltdW09IjAuMC4wLjAiIEluY2x1ZGVNaW5pbXVtPSJ5ZXMiIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWF4aW11bT0ibm8iIC8+CisgICAgICAgIDwvVXBncmFkZT4KICAgICAgICAgPCEtLSBQeXRob24gMy41LjAgc2hpcHBlZCB3aXRoIGEgZGlmZmVyZW50IFVwZ3JhZGVDb2RlIC0tPgogICAgICAgICA8VXBncmFkZSBJZD0iQTcxNTMwQjktRTg5RC01M0RCLTlDMkQtQzZENzU1MTg3NkQ4Ij4KICAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNaW5pbXVtPSIwLjAuMC4wIiBQcm9wZXJ0eT0iUkVNT1ZFXzM1MF9MQVVOQ0hFUiIgLz4KICAgICAgICAgPC9VcGdyYWRlPgogICAgICAgICA8IS0tIFB5dGhvbiAzLjYuMGExIHNoaXBwZWQgd2l0aCBhIGRpZmZlcmVudCBVcGdyYWRlQ29kZSAtLT4KICAgICAgICAgPFVwZ3JhZGUgSWQ9IjM5NDc1MEMwLTc4ODAtNUE4Ri05OTlGLTkzMzk2NUZCQ0ZCNCI+Ci0gICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIFByb3BlcnR5PSJSRU1PVkVfMzYwQTFfTEFVTkNIRVIiIC8+Ci0gICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWluaW11bT0iJCh2YXIuVmVyc2lvbikiIFByb3BlcnR5PSJCTE9DS18zNjBBMV9MQVVOQ0hFUiIgLz4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNaW5pbXVtPSIwLjAuMC4wIiBQcm9wZXJ0eT0iUkVNT1ZFXzM2MEExX0xBVU5DSEVSIiAvPgogICAgICAgICA8L1VwZ3JhZGU+Ci0gICAgICAgIDxDb25kaXRpb24gTWVzc2FnZT0iIShsb2MuTm9Eb3duZ3JhZGUpIj5JbnN0YWxsZWQgT1IgTk9UIEJMT0NLXzM2MEExX0xBVU5DSEVSPC9Db25kaXRpb24+CiAgICAgPC9Qcm9kdWN0PgogPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bAppbmRleCBlNGMxYWFhLi5hN2UzODI3IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwKQEAgLTExLDYgKzExLDcgQEAKICAgICA8U3RyaW5nIElkPSJQeXRob25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iUHl0aG9uTm9Db25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkNvbXBpbGVkRmlsZURlc2NyaXB0aW9uIj5Db21waWxlZCBQeXRob24gRmlsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkV4dGVuc2lvbkRlc2NyaXB0aW9uIj5QeXRob24gRXh0ZW5zaW9uIE1vZHVsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBaaXAgQXBwbGljYXRpb24gRmlsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIFppcCBBcHBsaWNhdGlvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCmluZGV4IDk4MTk2MWEuLmRhY2U5N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCkBAIC0yNywxNCArMjcsMTggQEAKICAgICAgICAgICAgICAgICA8L1Byb2dJZD4KICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5Db21waWxlZEZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9IntCRUEyMThEMi02OTUwLTQ5N0ItOTQzNC02MTY4M0VDMDY1RkV9IiBUeXBlPSJzdHJpbmciIC8+CiAKLSAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjEiPgorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5FeHRlbnNpb24iIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25FeHRlbnNpb25EZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIzIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHlkIiAvPgorICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgorCisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSI1Ij4KICAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHl6IiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHkuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CiAgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgogICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgogICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iUHl0aG9uLkFyY2hpdmVGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiIFZhbHVlPSJ7QkVBMjE4RDItNjk1MC00OTdCLTk0MzQtNjE2ODNFQzA2NUZFfSIgVHlwZT0ic3RyaW5nIiAvPgogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5Ob0NvbkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uTm9Db25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjEiPgorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5Ob0NvbkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uTm9Db25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjUiPgogICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSJweXp3IiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHl3LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgogICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cwppbmRleCBmYTc5YThkLi44MDRhYjAxIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCkBAIC02NCwxNiArNjQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJQeXRob25QYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbTGliXTtbRExMc10iIC8+CiAgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBEaXJlY3Rvcnk9IkxpYl9zaXRlX3BhY2thZ2VzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBOYW1lPSJSRUFETUUudHh0IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKUxpYlxzaXRlLXBhY2thZ2VzXFJFQURNRSIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmUiIERpcmVjdG9yeT0iTGliX2xpYjJ0bzMiIEd1aWQ9IiQodmFyLlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkKSI+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZpbGUgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZV9maWxlcyIgTmFtZT0iKi5waWNrbGUiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlX2ZvbGRlciIgT249InVuaW5zdGFsbCIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgotICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJMaWIiPgotICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iTGliX3NpdGVfcGFja2FnZXMiIE5hbWU9InNpdGUtcGFja2FnZXMiIC8+Ci0gICAgICAgIDwvRGlyZWN0b3J5UmVmPgogICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weSBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQppbmRleCAwZThhNGE2Li5lYmIxNzY2IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbWFrZV96aXAucHkKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CkBAIC00Niw2ICs0NiwxMCBAQAogICAgICdweXRob24zc3R1YicsCiB9CiAKK0VYQ0xVREVEX0ZJTEVTID0geworICAgICdweXNoZWxsZXh0JywKK30KKwogZGVmIGlzX25vdF9kZWJ1ZyhwKToKICAgICBpZiBERUJVR19SRS5zZWFyY2gocC5uYW1lKToKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC01Myw3ICs1Nyw3IEBACiAgICAgaWYgVEtUQ0xfUkUuc2VhcmNoKHAubmFtZSk6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgcmV0dXJuIHAuc3RlbS5sb3dlcigpIG5vdCBpbiBERUJVR19GSUxFUworICAgIHJldHVybiBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gREVCVUdfRklMRVMgYW5kIHAuc3RlbS5sb3dlcigpIG5vdCBpbiBFWENMVURFRF9GSUxFUwogCiBkZWYgaXNfbm90X2RlYnVnX29yX3B5dGhvbihwKToKICAgICByZXR1cm4gaXNfbm90X2RlYnVnKHApIGFuZCBub3QgUFlUSE9OX0RMTF9SRS5zZWFyY2gocC5uYW1lKQpAQCAtNjMsOCArNjcsNiBAQAogICAgIGlmIHAuaXNfZGlyKCk6CiAgICAgICAgIGlmIG5hbWUgaW4gRVhDTFVERV9GUk9NX0xJQlJBUlk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdwbGF0LScpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5hbWUgPT0gJ3Rlc3QnIGFuZCBwLnBhcnRzWy0yXS5sb3dlcigpID09ICdsaWInOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5hbWUgaW4geyd0ZXN0JywgJ3Rlc3RzJ30gYW5kIHAucGFydHNbLTNdLmxvd2VyKCkgPT0gJ2xpYic6CkBAIC04OSwyNSArOTEsMjcgQEAKIAogICAgIHJldHVybiBwLnN1ZmZpeC5sb3dlcigpIGluIHsnLnB5JywgJy5weXcnLCAnLnR4dCd9CiAKK0JBU0VfTkFNRSA9ICdweXRob257MC5tYWpvcn17MC5taW5vcn0nLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKQorCiBGVUxMX0xBWU9VVCA9IFsKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbi5leGUnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9udy5leGUnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uezAubWFqb3J9LmRsbCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uezAubWFqb3J9ezAubWlub3J9LmRsbCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pLCBpc19ub3RfZGVidWcpLAotICAgICgnRExMcy8nLCAnJGJ1aWxkJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJ0RMTHMvJywgJyRidWlsZCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1Z19vcl9weXRob24pLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbi5leGUnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbncuZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob257fS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvLm1ham9yKSwgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICd7fS5kbGwnLmZvcm1hdChCQVNFX05BTUUpLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCdETExzLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnX29yX3B5dGhvbiksCiAgICAgKCdpbmNsdWRlLycsICdpbmNsdWRlJywgJyouaCcsIE5vbmUpLAogICAgICgnaW5jbHVkZS8nLCAnUEMnLCAncHljb25maWcuaCcsIE5vbmUpLAogICAgICgnTGliLycsICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKLSAgICAoJ2xpYnMvJywgJyRidWlsZCcsICcqLmxpYicsIGluY2x1ZGVfaW5fbGlicyksCisgICAgKCdsaWJzLycsICdQQ0J1aWxkLyRhcmNoJywgJyoubGliJywgaW5jbHVkZV9pbl9saWJzKSwKICAgICAoJ1Rvb2xzLycsICdUb29scycsICcqKi8qJywgaW5jbHVkZV9pbl90b29scyksCiBdCiAKIEVNQkVEX0xBWU9VVCA9IFsKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJ3B5dGhvbnswLm1ham9yfXswLm1pbm9yfS56aXAnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5kbGwnLCBpc19ub3RfZGVidWcpLAorICAgICgne30uemlwJy5mb3JtYXQoQkFTRV9OQU1FKSwgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAogXQogCiBpZiBvcy5nZXRlbnYoJ0RPQ19GSUxFTkFNRScpOgpAQCAtMTY4LDE4ICsxNzIsMTggQEAKIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc291cmNlJywgbWV0YXZhcj0nZGlyJywgaGVscD0nVGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSByZXBvc2l0b3J5IHJvb3QnLCB0eXBlPVBhdGgpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXQnLCBtZXRhdmFyPSdmaWxlJywgaGVscD0nVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBhcmNoaXZlJywgdHlwZT1QYXRoLCBkZWZhdWx0PU5vbmUpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXQnLCBtZXRhdmFyPSdmaWxlJywgaGVscD0nVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBzZWxmLWV4dHJhY3RpbmcgYXJjaGl2ZScsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tdGVtcCcsIG1ldGF2YXI9J2RpcicsIGhlbHA9J0EgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IGV4dHJhY3QgZmlsZXMgaW50bycsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW1iZWQnLCBoZWxwPSdDcmVhdGUgYW4gZW1iZWRkaW5nIGxheW91dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1idWlsZCcsIGhlbHA9J1NwZWNpZnkgdGhlIGJ1aWxkIGRpcmVjdG9yeScsIHR5cGU9UGF0aCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLWFyY2gnLCBoZWxwPSdTcGVjaWZ5IHRoZSBhcmNoaXRlY3R1cmUgdG8gdXNlICh3aW4zMi9hbWQ2NCknLCB0eXBlPXN0ciwgZGVmYXVsdD0id2luMzIiKQogICAgIG5zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgc291cmNlID0gbnMuc291cmNlIG9yIChQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50LnBhcmVudC5wYXJlbnQpCiAgICAgb3V0ID0gbnMub3V0Ci0gICAgYnVpbGQgPSBucy5idWlsZAorICAgIGFyY2ggPSBucy5hcmNoCiAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNlLCBQYXRoKQogICAgIGFzc2VydCBub3Qgb3V0IG9yIGlzaW5zdGFuY2Uob3V0LCBQYXRoKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGJ1aWxkLCBQYXRoKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGFyY2gsIHN0cikKIAogICAgIGlmIG5zLnRlbXA6CiAgICAgICAgIHRlbXAgPSBucy50ZW1wCkBAIC0yMDIsMTUgKzIwNiwxNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBmb3IgdCwgcywgcCwgYyBpbiBsYXlvdXQ6Ci0gICAgICAgICAgICBpZiBzID09ICckYnVpbGQnOgotICAgICAgICAgICAgICAgIHMgPSBidWlsZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzID0gc291cmNlIC8gcworICAgICAgICAgICAgcyA9IHNvdXJjZSAvIHMucmVwbGFjZSgiJGFyY2giLCBhcmNoKQogICAgICAgICAgICAgY29waWVkID0gY29weV90b19sYXlvdXQodGVtcCAvIHQucnN0cmlwKCcvJyksIHJnbG9iKHMsIHAsIGMpKQogICAgICAgICAgICAgcHJpbnQoJ0NvcGllZCB7fSBmaWxlcycuZm9ybWF0KGNvcGllZCkpCiAKLSAgICAgICAgd2l0aCBvcGVuKHN0cih0ZW1wIC8gJ3B5dmVudi5jZmcnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgcHJpbnQoJ2FwcGxvY2FsID0gdHJ1ZScsIGZpbGU9ZikKKyAgICAgICAgaWYgbnMuZW1iZWQ6CisgICAgICAgICAgICB3aXRoIG9wZW4oc3RyKHRlbXAgLyAoQkFTRV9OQU1FICsgJy5fcHRoJykpLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgcHJpbnQoQkFTRV9OQU1FICsgJy56aXAnLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJy4nLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJycsIGZpbGU9ZikKKyAgICAgICAgICAgICAgICBwcmludCgnIyBVbmNvbW1lbnQgdG8gcnVuIHNpdGUubWFpbigpIGF1dG9tYXRpY2FsbHknLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJyNpbXBvcnQgc2l0ZScsIGZpbGU9ZikKIAogICAgICAgICBpZiBvdXQ6CiAgICAgICAgICAgICB0b3RhbCA9IGNvcHlfdG9fbGF5b3V0KG91dCwgcmdsb2IodGVtcCwgJyoqLyonLCBOb25lKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHJvcHMgYi9Ub29scy9tc2kvbXNpLnByb3BzCmluZGV4IDBjZjdjNzcuLjc0NWZjNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHJvcHMKKysrIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpAQCAtNjksNiArNjksOCBAQAogICAgIDxQcm9wZXJ0eUdyb3VwPgogICAgICAgICA8Qml0bmVzcz4zMi1iaXQ8L0JpdG5lc3M+CiAgICAgICAgIDxCaXRuZXNzIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPjY0LWJpdDwvQml0bmVzcz4KKyAgICAgICAgPFBsYXRmb3JtQXJjaGl0ZWN0dXJlPjMyYml0PC9QbGF0Zm9ybUFyY2hpdGVjdHVyZT4KKyAgICAgICAgPFBsYXRmb3JtQXJjaGl0ZWN0dXJlIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPjY0Yml0PC9QbGF0Zm9ybUFyY2hpdGVjdHVyZT4KICAgICAgICAgPERlZmluZUNvbnN0YW50cz4KICAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKICAgICAgICAgICAgIFZlcnNpb249JChJbnN0YWxsZXJWZXJzaW9uKTsKQEAgLTc5LDYgKzgxLDcgQEAKICAgICAgICAgICAgIFVwZ3JhZGVNaW5pbXVtVmVyc2lvbj0kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLjAuMDsKICAgICAgICAgICAgIE5leHRNYWpvclZlcnNpb25OdW1iZXI9JChNYWpvclZlcnNpb25OdW1iZXIpLiQoW21zYnVpbGRdOjpBZGQoJChNaW5vclZlcnNpb25OdW1iZXIpLCAxKSkuMC4wOwogICAgICAgICAgICAgQml0bmVzcz0kKEJpdG5lc3MpOworICAgICAgICAgICAgUGxhdGZvcm1BcmNoaXRlY3R1cmU9JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSk7CiAgICAgICAgICAgICBQeURlYnVnRXh0PSQoUHlEZWJ1Z0V4dCk7CiAgICAgICAgICAgICBQeUFyY2hFeHQ9JChQeUFyY2hFeHQpOwogICAgICAgICAgICAgUHlUZXN0RXh0PSQoUHlUZXN0RXh0KTsKQEAgLTE1NSw2ICsxNTgsMTIgQEAKICAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkIj4KICAgICAgICAgICAgIDxVcmk+bGliMnRvMy9waWNrbGVzPC9Vcmk+CiAgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJDb21tb25QeXRob25SZWdDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cmVnaXN0cnk8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlB5dGhvblJlZ0NvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5yZWdpc3RyeS8kKE91dHB1dE5hbWUpPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPFRhcmdldCBOYW1lPSJfR2VuZXJhdGVHdWlkcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJChUYXJnZXROYW1lKSAhPSAnbGF1bmNoZXInIj4KICAgICAgICAgPFByb3BlcnR5R3JvdXA+CmRpZmYgLS1naXQgYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qIGIvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvagppbmRleCA1NDJiZjA3Li5jM2NkNDNhIDEwMDY0NAotLS0gYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qCisrKyBiL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2oKQEAgLTE0LDYgKzE0LDcgQEAKICAgICA8UHJvcGVydHlHcm91cD4KICAgICAgICAgPE51Z2V0IENvbmRpdGlvbj0iJChOdWdldCkgPT0gJyciPiQoRXh0ZXJuYWxzRGlyKVx3aW5kb3dzLWluc3RhbGxlclxudWdldFxudWdldC5leGU8L051Z2V0PgogICAgICAgICA8TnVzcGVjVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKTwvTnVzcGVjVmVyc2lvbj4KKyAgICAgICAgPE51c3BlY1ZlcnNpb24gQ29uZGl0aW9uPSIkKFJlbGVhc2VMZXZlbE5hbWUpICE9ICcnIj4kKE51c3BlY1ZlcnNpb24pLSQoUmVsZWFzZUxldmVsTmFtZSk8L051c3BlY1ZlcnNpb24+CiAgICAgICAgIDxTaWduT3V0cHV0PmZhbHNlPC9TaWduT3V0cHV0PgogICAgICAgICA8VGFyZ2V0TmFtZT4kKE91dHB1dE5hbWUpLiQoTnVzcGVjVmVyc2lvbik8L1RhcmdldE5hbWU+CiAgICAgICAgIDxUYXJnZXRFeHQ+Lm51cGtnPC9UYXJnZXRFeHQ+CmRpZmYgLS1naXQgYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CmluZGV4IDI4NTAzMGUuLjdlMWNjNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CisrKyBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CkBAIC0xMDQsNiArMTA0LDE5IEBACiAgICAgICAgIHNlbGYud3JpdGUoIiAiK3NlbGYuYmlub3BbdC5vcC5fX2NsYXNzX18uX19uYW1lX19dKyI9ICIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKIAorICAgIGRlZiBfQW5uQXNzaWduKHNlbGYsIHQpOgorICAgICAgICBzZWxmLmZpbGwoKQorICAgICAgICBpZiBub3QgdC5zaW1wbGUgYW5kIGlzaW5zdGFuY2UodC50YXJnZXQsIGFzdC5OYW1lKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJygnKQorICAgICAgICBzZWxmLmRpc3BhdGNoKHQudGFyZ2V0KQorICAgICAgICBpZiBub3QgdC5zaW1wbGUgYW5kIGlzaW5zdGFuY2UodC50YXJnZXQsIGFzdC5OYW1lKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJyknKQorICAgICAgICBzZWxmLndyaXRlKCI6ICIpCisgICAgICAgIHNlbGYuZGlzcGF0Y2godC5hbm5vdGF0aW9uKQorICAgICAgICBpZiB0LnZhbHVlOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiID0gIikKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKKwogICAgIGRlZiBfUmV0dXJuKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoInJldHVybiIpCiAgICAgICAgIGlmIHQudmFsdWU6CkBAIC0zMjIsOSArMzM1LDcyIEBACiAgICAgZGVmIF9TdHIoc2VsZiwgdHJlZSk6CiAgICAgICAgIHNlbGYud3JpdGUocmVwcih0cmVlLnMpKQogCisgICAgZGVmIF9Kb2luZWRTdHIoc2VsZiwgdCk6CisgICAgICAgIHNlbGYud3JpdGUoImYiKQorICAgICAgICBzdHJpbmcgPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuX2ZzdHJpbmdfSm9pbmVkU3RyKHQsIHN0cmluZy53cml0ZSkKKyAgICAgICAgc2VsZi53cml0ZShyZXByKHN0cmluZy5nZXR2YWx1ZSgpKSkKKworICAgIGRlZiBfRm9ybWF0dGVkVmFsdWUoc2VsZiwgdCk6CisgICAgICAgIHNlbGYud3JpdGUoImYiKQorICAgICAgICBzdHJpbmcgPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuX2ZzdHJpbmdfRm9ybWF0dGVkVmFsdWUodCwgc3RyaW5nLndyaXRlKQorICAgICAgICBzZWxmLndyaXRlKHJlcHIoc3RyaW5nLmdldHZhbHVlKCkpKQorCisgICAgZGVmIF9mc3RyaW5nX0pvaW5lZFN0cihzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIGZvciB2YWx1ZSBpbiB0LnZhbHVlczoKKyAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsICJfZnN0cmluZ18iICsgdHlwZSh2YWx1ZSkuX19uYW1lX18pCisgICAgICAgICAgICBtZXRoKHZhbHVlLCB3cml0ZSkKKworICAgIGRlZiBfZnN0cmluZ19TdHIoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICB2YWx1ZSA9IHQucy5yZXBsYWNlKCJ7IiwgInt7IikucmVwbGFjZSgifSIsICJ9fSIpCisgICAgICAgIHdyaXRlKHZhbHVlKQorCisgICAgZGVmIF9mc3RyaW5nX0NvbnN0YW50KHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodC52YWx1ZSwgc3RyKQorICAgICAgICB2YWx1ZSA9IHQudmFsdWUucmVwbGFjZSgieyIsICJ7eyIpLnJlcGxhY2UoIn0iLCAifX0iKQorICAgICAgICB3cml0ZSh2YWx1ZSkKKworICAgIGRlZiBfZnN0cmluZ19Gb3JtYXR0ZWRWYWx1ZShzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIHdyaXRlKCJ7IikKKyAgICAgICAgZXhwciA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgVW5wYXJzZXIodC52YWx1ZSwgZXhwcikKKyAgICAgICAgZXhwciA9IGV4cHIuZ2V0dmFsdWUoKS5yc3RyaXAoIlxuIikKKyAgICAgICAgaWYgZXhwci5zdGFydHN3aXRoKCJ7Iik6CisgICAgICAgICAgICB3cml0ZSgiICIpICAjIFNlcGFyYXRlIHBhaXIgb2Ygb3BlbmluZyBicmFja2V0cyBhcyAieyB7IgorICAgICAgICB3cml0ZShleHByKQorICAgICAgICBpZiB0LmNvbnZlcnNpb24gIT0gLTE6CisgICAgICAgICAgICBjb252ZXJzaW9uID0gY2hyKHQuY29udmVyc2lvbikKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJzaW9uIGluICJzcmEiCisgICAgICAgICAgICB3cml0ZShmIiF7Y29udmVyc2lvbn0iKQorICAgICAgICBpZiB0LmZvcm1hdF9zcGVjOgorICAgICAgICAgICAgd3JpdGUoIjoiKQorICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIoc2VsZiwgIl9mc3RyaW5nXyIgKyB0eXBlKHQuZm9ybWF0X3NwZWMpLl9fbmFtZV9fKQorICAgICAgICAgICAgbWV0aCh0LmZvcm1hdF9zcGVjLCB3cml0ZSkKKyAgICAgICAgd3JpdGUoIn0iKQorCiAgICAgZGVmIF9OYW1lKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHQuaWQpCiAKKyAgICBkZWYgX3dyaXRlX2NvbnN0YW50KHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGZsb2F0LCBjb21wbGV4KSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKHJlcHIodmFsdWUpLnJlcGxhY2UoImluZiIsIElORlNUUikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndyaXRlKHJlcHIodmFsdWUpKQorCisgICAgZGVmIF9Db25zdGFudChzZWxmLCB0KToKKyAgICAgICAgdmFsdWUgPSB0LnZhbHVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIigiKQorICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSA9PSAxOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbnN0YW50KHZhbHVlWzBdKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiwiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwgc2VsZi5fd3JpdGVfY29uc3RhbnQsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi53cml0ZSgiKSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25zdGFudCh0LnZhbHVlKQorCiAgICAgZGVmIF9OYW1lQ29uc3RhbnQoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUocmVwcih0LnZhbHVlKSkKIApAQCAtMzY4LDcgKzQ0NCwxMCBAQAogICAgICAgICBzZWxmLndyaXRlKCJ9IikKIAogICAgIGRlZiBfY29tcHJlaGVuc2lvbihzZWxmLCB0KToKLSAgICAgICAgc2VsZi53cml0ZSgiIGZvciAiKQorICAgICAgICBpZiB0LmlzX2FzeW5jOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzeW5jIGZvciAiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiIGZvciAiKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQudGFyZ2V0KQogICAgICAgICBzZWxmLndyaXRlKCIgaW4gIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lml0ZXIpCkBAIC00MTMsNyArNDkyLDcgQEAKICAgICBkZWYgX1R1cGxlKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKCIoIikKICAgICAgICAgaWYgbGVuKHQuZWx0cykgPT0gMToKLSAgICAgICAgICAgIChlbHQsKSA9IHQuZWx0cworICAgICAgICAgICAgZWx0ID0gdC5lbHRzWzBdCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGVsdCkKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiwiKQogICAgICAgICBlbHNlOgpAQCAtNDYwLDcgKzUzOSw4IEBACiAgICAgICAgICMgU3BlY2lhbCBjYXNlOiAzLl9fYWJzX18oKSBpcyBhIHN5bnRheCBlcnJvciwgc28gaWYgdC52YWx1ZQogICAgICAgICAjIGlzIGFuIGludGVnZXIgbGl0ZXJhbCB0aGVuIHdlIG5lZWQgdG8gZWl0aGVyIHBhcmVudGhlc2l6ZQogICAgICAgICAjIGl0IG9yIGFkZCBhbiBleHRyYSBzcGFjZSB0byBnZXQgMyAuX19hYnNfXygpLgotICAgICAgICBpZiBpc2luc3RhbmNlKHQudmFsdWUsIGFzdC5OdW0pIGFuZCBpc2luc3RhbmNlKHQudmFsdWUubiwgaW50KToKKyAgICAgICAgaWYgKChpc2luc3RhbmNlKHQudmFsdWUsIGFzdC5OdW0pIGFuZCBpc2luc3RhbmNlKHQudmFsdWUubiwgaW50KSkKKyAgICAgICAgICAgb3IgKGlzaW5zdGFuY2UodC52YWx1ZSwgYXN0LkNvbnN0YW50KSBhbmQgaXNpbnN0YW5jZSh0LnZhbHVlLnZhbHVlLCBpbnQpKSk6CiAgICAgICAgICAgICBzZWxmLndyaXRlKCIgIikKICAgICAgICAgc2VsZi53cml0ZSgiLiIpCiAgICAgICAgIHNlbGYud3JpdGUodC5hdHRyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weSBiL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkKaW5kZXggMDczY2NhMC4uNTRhOGJhNyAxMDA2NDQKLS0tIGEvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weQorKysgYi9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5CkBAIC05OSw4ICs5OSw4IEBACiAjIEFsaWFzCiBnZXRwYXNzd2QgPSBpbnZpc2libGVfaW5wdXQKIAotX2ludGVnZXJSRSA9IHJlLmNvbXBpbGUoJ1xzKigtP1xkKylccyokJykKLV9pbnRlZ2VyUmFuZ2VSRSA9IHJlLmNvbXBpbGUoJ1xzKigtP1xkKylccyotXHMqKC0/XGQrKVxzKiQnKQorX2ludGVnZXJSRSA9IHJlLmNvbXBpbGUocidccyooLT9cZCspXHMqJCcpCitfaW50ZWdlclJhbmdlUkUgPSByZS5jb21waWxlKHInXHMqKC0/XGQrKVxzKi1ccyooLT9cZCspXHMqJCcpCiAKIGRlZiBzcmFuZ2UocywKIApkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9XaXRoLnB5IGIvVG9vbHMvcHliZW5jaC9XaXRoLnB5CmluZGV4IDVmNTllOGMuLjMwY2QzYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5YmVuY2gvV2l0aC5weQorKysgYi9Ub29scy9weWJlbmNoL1dpdGgucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBmcm9tIHB5YmVuY2ggaW1wb3J0IFRlc3QKIAogY2xhc3MgV2l0aEZpbmFsbHkoVGVzdCk6CmRpZmYgLS1naXQgYS9Ub29scy9weW5jaGUvQ29sb3JEQi5weSBiL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5CmluZGV4IDVjZWQwZTcuLjAzNDgxNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5CisrKyBiL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5CkBAIC0xMzQsMTcgKzEzNCwxNyBAQAogDAogY2xhc3MgUkdCQ29sb3JEQihDb2xvckRCKToKICAgICBfcmUgPSByZS5jb21waWxlKAotICAgICAgICAnXHMqKD9QPHJlZD5cZCspXHMrKD9QPGdyZWVuPlxkKylccysoP1A8Ymx1ZT5cZCspXHMrKD9QPG5hbWU+LiopJykKKyAgICAgICAgcidccyooP1A8cmVkPlxkKylccysoP1A8Z3JlZW4+XGQrKVxzKyg/UDxibHVlPlxkKylccysoP1A8bmFtZT4uKiknKQogCiAKIGNsYXNzIEhUTUw0MERCKENvbG9yREIpOgotICAgIF9yZSA9IHJlLmNvbXBpbGUoJyg/UDxuYW1lPlxTKylccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQorICAgIF9yZSA9IHJlLmNvbXBpbGUocicoP1A8bmFtZT5cUyspXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKIAogICAgIGRlZiBfZXh0cmFjdHJnYihzZWxmLCBtbyk6CiAgICAgICAgIHJldHVybiBycmdnYmJfdG9fdHJpcGxldChtby5ncm91cCgnaGV4cmdiJykpCiAKIGNsYXNzIExpZ2h0bGlua0RCKEhUTUw0MERCKToKLSAgICBfcmUgPSByZS5jb21waWxlKCcoP1A8bmFtZT4oLispKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCisgICAgX3JlID0gcmUuY29tcGlsZShyJyg/UDxuYW1lPiguKykpXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKIAogICAgIGRlZiBfZXh0cmFjdG5hbWUoc2VsZiwgbW8pOgogICAgICAgICByZXR1cm4gbW8uZ3JvdXAoJ25hbWUnKS5zdHJpcCgpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5IGIvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weQppbmRleCBlMTBlNDlhLi43Y2E5NTI2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkKQEAgLTYsNyArNiw3IEBACiBBIGhlbHBlciBmb3IgYW5hbHl6aW5nIFBZVEhPTkRVTVBSRUZTIG91dHB1dC4KIAogV2hlbiB0aGUgUFlUSE9ORFVNUFJFRlMgZW52YXIgaXMgc2V0IGluIGEgZGVidWcgYnVpbGQsIGF0IFB5dGhvbiBzaHV0ZG93bgotdGltZSBQeV9GaW5hbGl6ZSgpIHByaW50cyB0aGUgbGlzdCBvZiBhbGwgbGl2ZSBvYmplY3RzIHR3aWNlOiAgZmlyc3QgaXQKK3RpbWUgUHlfRmluYWxpemVFeCgpIHByaW50cyB0aGUgbGlzdCBvZiBhbGwgbGl2ZSBvYmplY3RzIHR3aWNlOiAgZmlyc3QgaXQKIHByaW50cyB0aGUgcmVwcigpIG9mIGVhY2ggb2JqZWN0IHdoaWxlIHRoZSBpbnRlcnByZXRlciBpcyBzdGlsbCBmdWxseSBpbnRhY3QuCiBBZnRlciBjbGVhbmluZyB1cCBldmVyeXRoaW5nIGl0IGNhbiwgaXQgcHJpbnRzIGFsbCByZW1haW5pbmcgbGl2ZSBvYmplY3RzCiBhZ2FpbiwgYnV0IHRoZSBzZWNvbmQgdGltZSBqdXN0IHByaW50cyB0aGVpciBhZGRyZXNzZXMsIHJlZmNvdW50cywgYW5kIHR5cGUKQEAgLTQxLDcgKzQxLDcgQEAKIG9iamVjdHMgc2hvd24gaW4gdGhlIHJlcHI6ICB0aGUgcmVwciB3YXMgY2FwdHVyZWQgZnJvbSB0aGUgZmlyc3Qgb3V0cHV0IGJsb2NrLAogYW5kIHNvbWUgb2YgdGhlIGNvbnRhaW5lZXMgbWF5IGhhdmUgYmVlbiByZWxlYXNlZCBzaW5jZSB0aGVuLiAgRm9yIGV4YW1wbGUsCiBpdCdzIGNvbW1vbiBmb3IgdGhlIGxpbmUgc2hvd2luZyB0aGUgZGljdCBvZiBpbnRlcm5lZCBzdHJpbmdzIHRvIGRpc3BsYXkKLXN0cmluZ3MgdGhhdCBubyBsb25nZXIgZXhpc3QgYXQgdGhlIGVuZCBvZiBQeV9GaW5hbGl6ZTsgdGhpcyBjYW4gYmUgcmVjb2duaXplZAorc3RyaW5ncyB0aGF0IG5vIGxvbmdlciBleGlzdCBhdCB0aGUgZW5kIG9mIFB5X0ZpbmFsaXplRXg7IHRoaXMgY2FuIGJlIHJlY29nbml6ZWQKIChhbGJlaXQgcGFpbmZ1bGx5KSBiZWNhdXNlIHN1Y2ggY29udGFpbmVlcyBkb24ndCBoYXZlIGEgbGluZSBvZiB0aGVpciBvd24uCiAKIFRoZSBvYmplY3RzIGFyZSBsaXN0ZWQgaW4gYWxsb2NhdGlvbiBvcmRlciwgd2l0aCBtb3N0LXJlY2VudGx5IGFsbG9jYXRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5IGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CmluZGV4IDk3MjBhNDMuLjk2MTk5YjggMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQorKysgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKQEAgLTgsNyArOCw3IEBACiAKICIiIgogCi1pbXBvcnQgc3lzLCBvcywgdGltZSwgZGlmZmxpYiwgYXJncGFyc2UKK2ltcG9ydCBzeXMsIG9zLCBkaWZmbGliLCBhcmdwYXJzZQogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lCiAKIGRlZiBmaWxlX210aW1lKHBhdGgpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkgYi9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weQppbmRleCAyMGYzMzg2Li4xMjEzYTRlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weQorKysgYi9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weQpAQCAtMTc0LDggKzE3NCw4IEBACiAgICAgc3lzLnN0ZGVyci53cml0ZSgiVXNhZ2U6ICVzIFstbV0gd2FybmluZ3NcbiIgJSBzeXMuYXJndlswXSkKICAgICBzeXMuc3RkZXJyLndyaXRlKCJUcnkgYCVzIC1oJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIgJSBzeXMuYXJndlswXSkKIAotUEFUVEVSTiA9ICgiXiguKz8pOihcZCspOiBEZXByZWNhdGlvbldhcm5pbmc6ICIKLSAgICAgICAgICAgImNsYXNzaWMgKGludHxsb25nfGZsb2F0fGNvbXBsZXgpIGRpdmlzaW9uJCIpCitQQVRURVJOID0gKHIiXiguKz8pOihcZCspOiBEZXByZWNhdGlvbldhcm5pbmc6ICIKKyAgICAgICAgICAgciJjbGFzc2ljIChpbnR8bG9uZ3xmbG9hdHxjb21wbGV4KSBkaXZpc2lvbiQiKQogCiBkZWYgcmVhZHdhcm5pbmdzKHdhcm5pbmdzZmlsZSk6CiAgICAgcHJvZyA9IHJlLmNvbXBpbGUoUEFUVEVSTikKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkgYi9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CmluZGV4IGM2MmY5YTUuLjk0OGI1NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQpAQCAtMSw3ICsxLDUgQEAKICMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBvcGNvZGUuaCBoZWFkZXIgZmlsZS4KIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBpbXBvcnQgc3lzCiBoZWFkZXIgPSAiIiIvKiBBdXRvLWdlbmVyYXRlZCBieSBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5ICovCiAjaWZuZGVmIFB5X09QQ09ERV9ICmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2gycHkucHkgYi9Ub29scy9zY3JpcHRzL2gycHkucHkKaW5kZXggMDk2N2ZjMi4uNDM2M2MwYyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9oMnB5LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvaDJweS5weQpAQCAtMjMsMTMgKzIzLDEzIEBACiAKIGltcG9ydCBzeXMsIHJlLCBnZXRvcHQsIG9zCiAKLXBfZGVmaW5lID0gcmUuY29tcGlsZSgnXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsoW2EtekEtWjAtOV9dKylbXHQgXSsnKQorcF9kZWZpbmUgPSByZS5jb21waWxlKHInXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsoW2EtekEtWjAtOV9dKylbXHQgXSsnKQogCiBwX21hY3JvID0gcmUuY29tcGlsZSgKLSAgJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rJwotICAnKFthLXpBLVowLTlfXSspXCgoW19hLXpBLVpdW19hLXpBLVowLTldKilcKVtcdCBdKycpCisgIHInXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsnCisgIHInKFthLXpBLVowLTlfXSspXCgoW19hLXpBLVpdW19hLXpBLVowLTldKilcKVtcdCBdKycpCiAKLXBfaW5jbHVkZSA9IHJlLmNvbXBpbGUoJ15bXHQgXSojW1x0IF0qaW5jbHVkZVtcdCBdKzwoW14+XG5dKyk+JykKK3BfaW5jbHVkZSA9IHJlLmNvbXBpbGUocideW1x0IF0qI1tcdCBdKmluY2x1ZGVbXHQgXSs8KFtePlxuXSspPicpCiAKIHBfY29tbWVudCA9IHJlLmNvbXBpbGUocicvXCooW14qXSt8XCorW14vXSkqKFwqKy8pPycpCiBwX2NwcF9jb21tZW50ID0gcmUuY29tcGlsZSgnLy8uKicpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weSBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CmluZGV4IDY2YWQ4NjguLjkyNzJmZWUgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CkBAIC0xNDcsMTQgKzE0NywxNCBAQAogIyMjIyBMYVRlWCBPdXRwdXQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGRlZmF1bHRfbGF0ZXhfY29tbWFuZHMgPSB7Ci0gICAgJ2NvbW1lbnQnOiAne1xjb2xvcntyZWR9IzF9JywKLSAgICAnc3RyaW5nJzogJ3tcY29sb3J7Rm9yZXN0R3JlZW59IzF9JywKLSAgICAnZG9jc3RyaW5nJzogJ3tcZW1waHtcY29sb3J7Rm9yZXN0R3JlZW59IzF9fScsCi0gICAgJ2tleXdvcmQnOiAne1xjb2xvcntvcmFuZ2V9IzF9JywKLSAgICAnYnVpbHRpbic6ICd7XGNvbG9ye3B1cnBsZX0jMX0nLAotICAgICdkZWZpbml0aW9uJzogJ3tcY29sb3J7b3JhbmdlfSMxfScsCi0gICAgJ2RlZm5hbWUnOiAne1xjb2xvcntibHVlfSMxfScsCi0gICAgJ29wZXJhdG9yJzogJ3tcY29sb3J7YnJvd259IzF9JywKKyAgICAnY29tbWVudCc6IHIne1xjb2xvcntyZWR9IzF9JywKKyAgICAnc3RyaW5nJzogcid7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfScsCisgICAgJ2RvY3N0cmluZyc6IHIne1xlbXBoe1xjb2xvcntGb3Jlc3RHcmVlbn0jMX19JywKKyAgICAna2V5d29yZCc6IHIne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnYnVpbHRpbic6IHIne1xjb2xvcntwdXJwbGV9IzF9JywKKyAgICAnZGVmaW5pdGlvbic6IHIne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnZGVmbmFtZSc6IHIne1xjb2xvcntibHVlfSMxfScsCisgICAgJ29wZXJhdG9yJzogcid7XGNvbG9ye2Jyb3dufSMxfScsCiB9CiAKIGRlZmF1bHRfbGF0ZXhfZG9jdW1lbnQgPSByJycnCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2lkbGUzIGIvVG9vbHMvc2NyaXB0cy9pZGxlMwppbmRleCA4ZWU5MmMyLi5kNzMzMmJjIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2lkbGUzCisrKyBiL1Rvb2xzL3NjcmlwdHMvaWRsZTMKQEAgLTEsNSArMSw1IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgbWFpbgorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IG1haW4KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weSBiL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5CmluZGV4IGFlYjQ1MWUuLjYzNWU1NDggMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5CkBAIC04OCw3ICs4OCw3IEBACiAjIG5vIG1vcmUgZXhwcmVzc2lvbnMgYXJlIHNlYXJjaGVkIGZvci4gIFNvLCBvcmRlciBpcyBpbXBvcnRhbnQuCiBlbXBhcnNlX2xpc3RfcmVhc29uID0gWwogICAgIHInXjVcZHsyfSA8PlwuXC5cLiAoP1A8cmVhc29uPi4qKScsCi0gICAgJzw+XC5cLlwuICg/UDxyZWFzb24+LiopJywKKyAgICByJzw+XC5cLlwuICg/UDxyZWFzb24+LiopJywKICAgICByZS5jb21waWxlKHInXjw8PCA1XGR7Mn0gKD9QPHJlYXNvbj4uKiknLCByZS5NVUxUSUxJTkUpLAogICAgIHJlLmNvbXBpbGUoJz09PT09IHN0ZGVyciB3YXMgPT09PT1cbnJtYWlsOiAoP1A8cmVhc29uPi4qKScpLAogICAgIHJlLmNvbXBpbGUoJ15EaWFnbm9zdGljLUNvZGU6ICg/UDxyZWFzb24+LiopJywgcmUuTVVMVElMSU5FKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5IGIvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkKaW5kZXggOGYwNzU1OS4uODNiYmNkNyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkKQEAgLTM2LDggKzM2LDggQEAKICIiIgogaW1wb3J0IG9zLCBzeXMKIAotUFlUSE9OTElCID0gJ2xpYnB5dGhvbicrc3lzLnZlcnNpb25bOjNdKycuYScKLVBDX1BZVEhPTkxJQiA9ICdQeXRob24nK3N5cy52ZXJzaW9uWzBdK3N5cy52ZXJzaW9uWzJdKycuZGxsJworUFlUSE9OTElCID0gJ2xpYnB5dGhvbiVkLiVkLmEnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KK1BDX1BZVEhPTkxJQiA9ICdQeXRob24lZCVkLmRsbCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogTk0gPSAnbm0gLXAgLWcgJXMnICAgICAgICAgICAgICAgICAgICAgICMgRm9yIExpbnV4LCB1c2UgIm5tIC1nICVzIgogCiBkZWYgc3ltYm9scyhsaWI9UFlUSE9OTElCLHR5cGVzPSgnVCcsJ0MnLCdEJykpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5IGIvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5CmluZGV4IGEwNDJkMWMuLmM2ODZiMDIgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weQorKysgYi9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkKQEAgLTE0LDcgKzE0LDcgQEAKICIiIgogaW1wb3J0IHJlLHN5cwogCi1lbnRpdHlSRSA9IHJlLmNvbXBpbGUoJzwhRU5USVRZICsoXHcrKSArQ0RBVEEgKyIoW14iXSspIiArLS0gKygoPzoufFxuKSs/KSAqLS0+JykKK2VudGl0eVJFID0gcmUuY29tcGlsZShyJzwhRU5USVRZICsoXHcrKSArQ0RBVEEgKyIoW14iXSspIiArLS0gKygoPzoufFxuKSs/KSAqLS0+JykKIAogZGVmIHBhcnNlKHRleHQscG9zPTAsZW5kcG9zPU5vbmUpOgogCkBAIC0zOSw3ICszOSw3IEBACiAgICAgICAgIGlmIGNoYXJjb2RlWzoyXSA9PSAnJiMnOgogICAgICAgICAgICAgY29kZSA9IGludChjaGFyY29kZVsyOi0xXSkKICAgICAgICAgICAgIGlmIGNvZGUgPCAyNTY6Ci0gICAgICAgICAgICAgICAgY2hhcmNvZGUgPSAiJ1wlbyciICUgY29kZQorICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gciInXCVvJyIgJSBjb2RlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gcmVwcihjaGFyY29kZSkKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weSBiL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weQppbmRleCAyMjQzMmQxLi41NjJiYmM3IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5CkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAgICAgICBpZiBmaXgoYXJnKTogYmFkID0gMQogICAgIHN5cy5leGl0KGJhZCkKIAotaXNweXRob25wcm9nID0gcmUuY29tcGlsZSgnXlthLXpBLVowLTlfXStcLnB5JCcpCitpc3B5dGhvbnByb2cgPSByZS5jb21waWxlKHInXlthLXpBLVowLTlfXStcLnB5JCcpCiBkZWYgaXNweXRob24obmFtZSk6CiAgICAgcmV0dXJuIGJvb2woaXNweXRob25wcm9nLm1hdGNoKG5hbWUpKQogCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3B0YWdzLnB5IGIvVG9vbHMvc2NyaXB0cy9wdGFncy5weQppbmRleCBjYTY0M2IzLi4zOTZjYmQwIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3B0YWdzLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkKQEAgLTI0LDcgKzI0LDcgQEAKICAgICAgICAgZm9yIHMgaW4gdGFnczogZnAud3JpdGUocykKIAogCi1leHByID0gJ15bIFx0XSooZGVmfGNsYXNzKVsgXHRdKyhbYS16QS1aMC05X10rKVsgXHRdKls6XChdJworZXhwciA9IHInXlsgXHRdKihkZWZ8Y2xhc3MpWyBcdF0rKFthLXpBLVowLTlfXSspWyBcdF0qWzpcKF0nCiBtYXRjaGVyID0gcmUuY29tcGlsZShleHByKQogCiBkZWYgdHJlYXRfZmlsZShmaWxlbmFtZSk6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3B5dmVudiBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CmluZGV4IDk3OGQ2OTEuLjFmYjQyYzYgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CisrKyBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CkBAIC0xLDYgKzEsMTIgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHN5cworICAgIGltcG9ydCBwYXRobGliCisKKyAgICBleGVjdXRhYmxlID0gcGF0aGxpYi5QYXRoKHN5cy5leGVjdXRhYmxlIG9yICdweXRob24zJykubmFtZQorICAgIHByaW50KCdXQVJOSU5HOiB0aGUgcHllbnYgc2NyaXB0IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mICcKKyAgICAgICAgICBmJ2B7ZXhlY3V0YWJsZX0gLW0gdmVudmAnLCBmaWxlPXN5cy5zdGRlcnIpCisKICAgICByYyA9IDEKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCB2ZW52CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3N2bmVvbC5weSBiL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5CmluZGV4IDhhYmRkMDEuLjZjNzBkYTkgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotIiIiCityIiIiCiBTVk4gaGVscGVyIHNjcmlwdC4KIAogVHJ5IHRvIHNldCB0aGUgc3ZuOmVvbC1zdHlsZSBwcm9wZXJ0eSB0byAibmF0aXZlIiBvbiBldmVyeSAucHksIC50eHQsIC5jIGFuZApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkgYi9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQppbmRleCA5OTgzNTI4Li45YzFlOWZlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQorKysgYi9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQpAQCAtNzgsMTEgKzc4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcnVubmluZyB0ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtZW51IGl0ZW0gKFl1Y2shKQotbWlwcm9nID0gcmUuY29tcGlsZSgnXlwqIChbXjpdKik6KDp8WyBcdF0qKFteXHQsXG4uXSspKFteIFx0XG5dKikpWyBcdFxuXSonKQotIyAgICAgICAgICAgICAgICAgICAwICAgIDEgICAgIDEgMiAgICAgICAgMyAgICAgICAgICAzNCAgICAgICAgIDQyICAgICAgICAwCi0jICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tICAgICAgICAgICAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK21pcHJvZyA9IHJlLmNvbXBpbGUocideXCogKFteOl0qKTooOnxbIFx0XSooW15cdCxcbi5dKykoW14gXHRcbl0qKSlbIFx0XG5dKicpCisjICAgICAgICAgICAgICAgICAgICAwICAgIDEgICAgIDEgMiAgICAgICAgMyAgICAgICAgICAzNCAgICAgICAgIDQyICAgICAgICAwCisjICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSAgICAgICAgICAgIC0tLS0tLS0tLS0gIC0tLS0tLS0tLQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5IGIvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKaW5kZXggZGQ1N2RjZi4uMzBkNWZjZiAxMDA2NDQKLS0tIGEvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKKysrIGIvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKQEAgLTEwNSwxMSArMTA1LDExIEBACiAKICAgICBkZWYgX3N1YnByb2Nlc3NfY2FsbChzZWxmLCBjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsIGVudj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKLSAgICAgICAgbG9nLmRlYnVnKCJDYWxsICd7fSciLmZvcm1hdCgiICIuam9pbihjbWQpKSkKKyAgICAgICAgbG9nLmRlYnVnKCJDYWxsICclcyciLCAiICIuam9pbihjbWQpKQogICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCwgc3Rkb3V0PXN0ZG91dCwgZW52PWVudiwgKiprd2FyZ3MpCiAKICAgICBkZWYgX3N1YnByb2Nlc3Nfb3V0cHV0KHNlbGYsIGNtZCwgZW52PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgbG9nLmRlYnVnKCJDYWxsICd7fSciLmZvcm1hdCgiICIuam9pbihjbWQpKSkKKyAgICAgICAgbG9nLmRlYnVnKCJDYWxsICclcyciLCAiICIuam9pbihjbWQpKQogICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIGVudj1lbnYpCiAgICAgICAgIHJldHVybiBvdXQuc3RyaXAoKS5kZWNvZGUoInV0Zi04IikKIApAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5oYXNfc3JjOgogICAgICAgICAgICAgICAgIHNlbGYuX2Rvd25sb2FkX29wZW5zc2woKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkFscmVhZHkgaGFzIHNyYyB7fSIuZm9ybWF0KHNlbGYuc3JjX2ZpbGUpKQorICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiQWxyZWFkeSBoYXMgc3JjICVzIiwgc2VsZi5zcmNfZmlsZSkKICAgICAgICAgICAgIHNlbGYuX3VucGFja19vcGVuc3NsKCkKICAgICAgICAgICAgIHNlbGYuX2J1aWxkX29wZW5zc2woKQogICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9vcGVuc3NsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3R6L3pkdW1wLnB5IGIvVG9vbHMvdHovemR1bXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk0YjQ4MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3R6L3pkdW1wLnB5CkBAIC0wLDAgKzEsODEgQEAKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHN0cnVjdAorZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKKwordHRpbmZvID0gbmFtZWR0dXBsZSgndHRpbmZvJywgWyd0dF9nbXRvZmYnLCAndHRfaXNkc3QnLCAndHRfYWJicmluZCddKQorCitjbGFzcyBUWkluZm86CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYW5zaXRpb25zLCB0eXBlX2luZGljZXMsIHR0aXMsIGFiYnJzKToKKyAgICAgICAgc2VsZi50cmFuc2l0aW9ucyA9IHRyYW5zaXRpb25zCisgICAgICAgIHNlbGYudHlwZV9pbmRpY2VzID0gdHlwZV9pbmRpY2VzCisgICAgICAgIHNlbGYudHRpcyA9IHR0aXMKKyAgICAgICAgc2VsZi5hYmJycyA9IGFiYnJzCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbWZpbGUoY2xzLCBmaWxlb2JqKToKKyAgICAgICAgaWYgZmlsZW9iai5yZWFkKDQpLmRlY29kZSgpICE9ICJUWmlmIjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCBhIHpvbmVpbmZvIGZpbGUiKQorICAgICAgICBmaWxlb2JqLnNlZWsoMjApCisgICAgICAgIGhlYWRlciA9IGZpbGVvYmoucmVhZCgyNCkKKyAgICAgICAgdHpoID0gKHR6aF90dGlzZ210Y250LCB0emhfdHRpc3N0ZGNudCwgdHpoX2xlYXBjbnQsCisgICAgICAgICAgICAgICB0emhfdGltZWNudCwgdHpoX3R5cGVjbnQsIHR6aF9jaGFyY250KSA9IHN0cnVjdC51bnBhY2soIj42bCIsIGhlYWRlcikKKyAgICAgICAgdHJhbnNpdGlvbnMgPSBhcnJheSgnaScpCisgICAgICAgIHRyYW5zaXRpb25zLmZyb21maWxlKGZpbGVvYmosIHR6aF90aW1lY250KQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgdHJhbnNpdGlvbnMuYnl0ZXN3YXAoKQorCisgICAgICAgIHR5cGVfaW5kaWNlcyA9IGFycmF5KCdCJykKKyAgICAgICAgdHlwZV9pbmRpY2VzLmZyb21maWxlKGZpbGVvYmosIHR6aF90aW1lY250KQorCisgICAgICAgIHR0aXMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSh0emhfdHlwZWNudCk6CisgICAgICAgICAgICB0dGlzLmFwcGVuZCh0dGluZm8uX21ha2Uoc3RydWN0LnVucGFjaygiPmxiYiIsIGZpbGVvYmoucmVhZCg2KSkpKQorCisgICAgICAgIGFiYnJzID0gZmlsZW9iai5yZWFkKHR6aF9jaGFyY250KQorCisgICAgICAgIHNlbGYgPSBjbHModHJhbnNpdGlvbnMsIHR5cGVfaW5kaWNlcywgdHRpcywgYWJicnMpCisgICAgICAgIHNlbGYudHpoID0gdHpoCisKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBkdW1wKHNlbGYsIHN0cmVhbSwgc3RhcnQ9Tm9uZSwgZW5kPU5vbmUpOgorICAgICAgICBmb3IgaiwgKHRyYW5zLCBpKSBpbiBlbnVtZXJhdGUoemlwKHNlbGYudHJhbnNpdGlvbnMsIHNlbGYudHlwZV9pbmRpY2VzKSk6CisgICAgICAgICAgICB1dGMgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRyYW5zKQorICAgICAgICAgICAgdHRpID0gc2VsZi50dGlzW2ldCisgICAgICAgICAgICBsbXQgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRyYW5zICsgdHRpLnR0X2dtdG9mZikKKyAgICAgICAgICAgIGFiYnJpbmQgPSB0dGkudHRfYWJicmluZAorICAgICAgICAgICAgYWJiciA9IHNlbGYuYWJicnNbYWJicmluZDpzZWxmLmFiYnJzLmZpbmQoMCwgYWJicmluZCldLmRlY29kZSgpCisgICAgICAgICAgICBpZiBqID4gMDoKKyAgICAgICAgICAgICAgICBwcmV2X3R0aSA9IHNlbGYudHRpc1tzZWxmLnR5cGVfaW5kaWNlc1tqIC0gMV1dCisgICAgICAgICAgICAgICAgc2hpZnQgPSAiICUrZyIgJSAoKHR0aS50dF9nbXRvZmYgLSBwcmV2X3R0aS50dF9nbXRvZmYpIC8gMzYwMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2hpZnQgPSAnJworICAgICAgICAgICAgcHJpbnQoIiVzIFVUQyA9ICVzICUtNXMgaXNkc3Q9JWQiICUgKHV0YywgbG10LCBhYmJyLCB0dGlbMV0pICsgc2hpZnQsIGZpbGU9c3RyZWFtKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHpvbmVsaXN0KGNscywgem9uZWRpcj0nL3Vzci9zaGFyZS96b25laW5mbycpOgorICAgICAgICB6b25lcyA9IFtdCisgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHpvbmVkaXIpOgorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgcCA9IG9zLnBhdGguam9pbihyb290LCBmKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwLCAncmInKSBhcyBvOgorICAgICAgICAgICAgICAgICAgICBtYWdpYyA9ICBvLnJlYWQoNCkKKyAgICAgICAgICAgICAgICBpZiBtYWdpYyA9PSBiJ1RaaWYnOgorICAgICAgICAgICAgICAgICAgICB6b25lcy5hcHBlbmQocFtsZW4oem9uZWRpcikgKyAxOl0pCisgICAgICAgIHJldHVybiB6b25lcworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGlmIGxlbihzeXMuYXJndikgPCAyOgorICAgICAgICB6b25lcyA9IFRaSW5mby56b25lbGlzdCgpCisgICAgICAgIGZvciB6IGluIHpvbmVzOgorICAgICAgICAgICAgcHJpbnQoeikKKyAgICAgICAgc3lzLmV4aXQoKQorICAgIGZpbGVwYXRoID0gc3lzLmFyZ3ZbMV0KKyAgICBpZiBub3QgZmlsZXBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgICAgICBmaWxlcGF0aCA9IG9zLnBhdGguam9pbignL3Vzci9zaGFyZS96b25laW5mbycsIGZpbGVwYXRoKQorICAgIHdpdGggb3BlbihmaWxlcGF0aCwgJ3JiJykgYXMgZmlsZW9iajoKKyAgICAgICAgdHppID0gVFpJbmZvLmZyb21maWxlKGZpbGVvYmopCisgICAgdHppLmR1bXAoc3lzLnN0ZG91dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CmluZGV4IDRjMjE0NjkuLjMxZjAxMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKKysrIGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQpAQCAtMzcsMTEgKzM3LDExIEBACiAjIFBsYWNlaG9sZGVyIGZvciBhIG1pc3NpbmcgY29kZSBwb2ludAogTUlTU0lOR19DT0RFID0gLTEKIAotbWFwUkUgPSByZS5jb21waWxlKCcoKD86MHhbMC05YS1mQS1GXStcKz8pKyknCi0gICAgICAgICAgICAgICAgICAgJ1xzKycKLSAgICAgICAgICAgICAgICAgICAnKCg/Oig/OjB4WzAtOWEtZkEtWl0rfDxbQS1aYS16XSs+KVwrPykqKScKLSAgICAgICAgICAgICAgICAgICAnXHMqJwotICAgICAgICAgICAgICAgICAgICcoIy4rKT8nKQorbWFwUkUgPSByZS5jb21waWxlKHInKCg/OjB4WzAtOWEtZkEtRl0rXCs/KSspJworICAgICAgICAgICAgICAgICAgIHInXHMrJworICAgICAgICAgICAgICAgICAgIHInKCg/Oig/OjB4WzAtOWEtZkEtWl0rfDxbQS1aYS16XSs+KVwrPykqKScKKyAgICAgICAgICAgICAgICAgICByJ1xzKicKKyAgICAgICAgICAgICAgICAgICByJygjLispPycpCiAKIGRlZiBwYXJzZWNvZGVzKGNvZGVzLCBsZW49bGVuLCByYW5nZT1yYW5nZSk6CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKaW5kZXggNzEzZTE3NS4uNWQ4MDE0YSAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKKysrIGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKQEAgLTQyLDcgKzQyLDcgQEAKICMgICAqIERvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdCwgYW5kCiAjICAgKiBEb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKICMgICAqIERvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QgKHR3byBvY2N1cnJlbmNlcykKLVVOSURBVEFfVkVSU0lPTiA9ICI4LjAuMCIKK1VOSURBVEFfVkVSU0lPTiA9ICI5LjAuMCIKIFVOSUNPREVfREFUQSA9ICJVbmljb2RlRGF0YSVzLnR4dCIKIENPTVBPU0lUSU9OX0VYQ0xVU0lPTlMgPSAiQ29tcG9zaXRpb25FeGNsdXNpb25zJXMudHh0IgogRUFTVEFTSUFOX1dJRFRIID0gIkVhc3RBc2lhbldpZHRoJXMudHh0IgpAQCAtNzk2LDYgKzc5Niw3IEBACiAgICAgY2F0ZWdvcnlfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAogICAgIGRlY2ltYWxfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAogICAgIG1pcnJvcmVkX2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKKyAgICBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKICAgICAjIEluIG51bWVyaWMgZGF0YSwgMCBtZWFucyAibm8gY2hhbmdlIiwKICAgICAjIC0xIG1lYW5zICJkaWQgbm90IGhhdmUgYSBudW1lcmljIHZhbHVlCiAgICAgbnVtZXJpY19jaGFuZ2VzID0gWzBdICogMHgxMTAwMDAKQEAgLTg2Miw2ICs4NjMsOSBAQAogICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYW5nZSB0byBzaW1wbGUgdGl0bGVjYXNlIG1hcHBpbmc7IGlnbm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMTU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYW5nZSB0byBlYXN0IGFzaWFuIHdpZHRoCisgICAgICAgICAgICAgICAgICAgICAgICBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZXNbaV0gPSBFQVNUQVNJQU5XSURUSF9OQU1FUy5pbmRleCh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDE2OgogICAgICAgICAgICAgICAgICAgICAgICAgIyBkZXJpdmVkIHByb3BlcnR5IGNoYW5nZXM7IG5vdCB5ZXQKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKQEAgLTg3Myw4ICs4NzcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgRGlmZmVyZW5jZShFeGNlcHRpb24pOnBhc3MKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIERpZmZlcmVuY2UoaGV4KGkpLCBrLCBvbGQudGFibGVbaV0sIG5ldy50YWJsZVtpXSkKICAgICBuZXcuY2hhbmdlZC5hcHBlbmQoKHZlcnNpb24sIGxpc3QoemlwKGJpZGlyX2NoYW5nZXMsIGNhdGVnb3J5X2NoYW5nZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9jaGFuZ2VzLCBtaXJyb3JlZF9jaGFuZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfY2hhbmdlcykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9jaGFuZ2VzLCBtaXJyb3JlZF9jaGFuZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19jaGFuZ2VzKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uX2NoYW5nZXMpKQogCiBkZWYgb3Blbl9kYXRhKHRlbXBsYXRlLCB2ZXJzaW9uKToKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCAxOWZjYmQxLi44N2FkOWJiIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDYgKzEsNiBAQAogIyEgL2Jpbi9zaAogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjUuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNi4KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHBzOi8vYnVncy5weXRob24ub3JnLz4uCiAjCkBAIC01ODAsOCArNTgwLDggQEAKICMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgogUEFDS0FHRV9OQU1FPSdweXRob24nCiBQQUNLQUdFX1RBUk5BTUU9J3B5dGhvbicKLVBBQ0tBR0VfVkVSU0lPTj0nMy41JwotUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjUnCitQQUNLQUdFX1ZFUlNJT049JzMuNicKK1BBQ0tBR0VfU1RSSU5HPSdweXRob24gMy42JwogUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHBzOi8vYnVncy5weXRob24ub3JnLycKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTY0MiwxMSArNjQyLDEzIEBACiBNQUNIREVQX09CSlMKIERZTkxPQURGSUxFCiBETElOQ0xESVIKK0RUUkFDRV9PQkpTCitEVFJBQ0VfSEVBREVSUworREZMQUdTCitEVFJBQ0UKIFRIUkVBRE9CSgogTERMQVNUCiBVU0VfVEhSRUFEX01PRFVMRQotU0lHTkFMX09CSlMKLVVTRV9TSUdOQUxfTU9EVUxFCiBUQ0xUS19MSUJTCiBUQ0xUS19JTkNMVURFUwogTElCRkZJX0lOQ0xVREVESVIKQEAgLTcwOCwxMiArNzEwLDEzIEBACiBCVUlMREVYRUVYVAogRUdSRVAKIE5PX0FTX05FRURFRAorTVVMVElBUkNIX0NQUEZMQUdTCiBQTEFURk9STV9UUklQTEVUCi1QTEFURElSCiBNVUxUSUFSQ0gKIGFjX2N0X0NYWAogTUFJTkNDCiBDWFgKK1NFRAogR1JFUAogQ1BQCiBPQkpFWFQKQEAgLTgyNywxNCArODMwLDEzIEBACiB3aXRoX3RjbHRrX2luY2x1ZGVzCiB3aXRoX3RjbHRrX2xpYnMKIHdpdGhfZGJtbGlib3JkZXIKLXdpdGhfc2lnbmFsX21vZHVsZQogd2l0aF90aHJlYWRzCiB3aXRoX3RocmVhZAogZW5hYmxlX2lwdjYKIHdpdGhfZG9jX3N0cmluZ3MKLXdpdGhfdHNjCiB3aXRoX3B5bWFsbG9jCiB3aXRoX3ZhbGdyaW5kCit3aXRoX2R0cmFjZQogd2l0aF9mcGVjdGwKIHdpdGhfbGlibQogd2l0aF9saWJjCkBAIC0xNDA1LDcgKzE0MDcsNyBAQAogICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgogICBjYXQgPDxfQUNFT0YKLVxgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjUgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNiB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xNDcyLDcgKzE0NzQsNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjU6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy42OiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTE1MzEsMTUgKzE1MzMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gY2hlY2sgZGIgYmFja2VuZHMgZm9yIGRibS4gVmFsaWQgdmFsdWUgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbiBzZXBhcmF0ZWQgc3RyaW5nIHdpdGggdGhlIGJhY2tlbmQgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgYG5kYm0nLCBgZ2RibScgYW5kIGBiZGInLgotICAtLXdpdGgtc2lnbmFsLW1vZHVsZSAgICBkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlCiAgIC0td2l0aChvdXQpLXRocmVhZHNbPURJUkVDVE9SWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZS9lbmFibGUgdGhyZWFkIHN1cHBvcnQKICAgLS13aXRoKG91dCktdGhyZWFkWz1ESVJFQ1RPUlldCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHJlY2F0ZWQ7IHVzZSAtLXdpdGgob3V0KS10aHJlYWRzCiAgIC0td2l0aChvdXQpLWRvYy1zdHJpbmdzIGRpc2FibGUvZW5hYmxlIGRvY3VtZW50YXRpb24gc3RyaW5ncwotICAtLXdpdGgob3V0KS10c2MgICAgICAgICBlbmFibGUvZGlzYWJsZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxlCiAgIC0td2l0aChvdXQpLXB5bWFsbG9jICAgIGRpc2FibGUvZW5hYmxlIHNwZWNpYWxpemVkIG1hbGxvY3MKICAgLS13aXRoLXZhbGdyaW5kICAgICAgICAgRW5hYmxlIFZhbGdyaW5kIHN1cHBvcnQKKyAgLS13aXRoKG91dCktZHRyYWNlICAgICAgZGlzYWJsZS9lbmFibGUgRFRyYWNlIHN1cHBvcnQKICAgLS13aXRoLWZwZWN0bCAgICAgICAgICAgZW5hYmxlIFNJR0ZQRSBjYXRjaGluZwogICAtLXdpdGgtbGlibT1TVFJJTkcgICAgICBtYXRoIGxpYnJhcnkKICAgLS13aXRoLWxpYmM9U1RSSU5HICAgICAgQyBsaWJyYXJ5CkBAIC0xNjMxLDcgKzE2MzIsNyBAQAogdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCiBpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCiAgIGNhdCA8PFxfQUNFT0YKLXB5dGhvbiBjb25maWd1cmUgMy41CitweXRob24gY29uZmlndXJlIDMuNgogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5CiAKIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTE5ODQsMTM2ICsxOTg1LDYgQEAKIAogfSAjIGFjX2ZuX2NfY2hlY2tfdHlwZQogCi0jIGFjX2ZuX2NfZmluZF91aW50WF90IExJTkVOTyBCSVRTIFZBUgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRmluZHMgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIKLSMgYWNjb3JkaW5nbHkuCi1hY19mbl9jX2ZpbmRfdWludFhfdCAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVpbnQkMl90IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciB1aW50JDJfdC4uLiAiID4mNjsgfQotaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGV2YWwgIiQzPW5vIgotICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAtIG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKLSAgICAgIyB0aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KLSAgICAgZm9yIGFjX3R5cGUgaW4gdWludCQyX3QgJ3Vuc2lnbmVkIGludCcgJ3Vuc2lnbmVkIGxvbmcgaW50JyBcCi0JICd1bnNpZ25lZCBsb25nIGxvbmcgaW50JyAndW5zaWduZWQgc2hvcnQgaW50JyAndW5zaWduZWQgY2hhcic7IGRvCi0gICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCgkYWNfdHlwZSkgLTEgPj4gKCQyIC8gMiAtIDEpKSA+PiAoJDIgLyAyIC0gMSkgPT0gMyldOwotdGVzdF9hcnJheSBbMF0gPSAwOwotcmV0dXJuIHRlc3RfYXJyYXkgWzBdOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgY2FzZSAkYWNfdHlwZSBpbiAjKAotICB1aW50JDJfdCkgOgotICAgIGV2YWwgIiQzPXllcyIgOzsgIygKLSAgKikgOgotICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKLWVzYWMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYnJlYWsKLWZpCi0gICAgIGRvbmUKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19mbl9jX2ZpbmRfdWludFhfdAotCi0jIGFjX2ZuX2NfZmluZF9pbnRYX3QgTElORU5PIEJJVFMgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEZpbmRzIGEgc2lnbmVkIGludGVnZXIgdHlwZSB3aXRoIHdpZHRoIEJJVFMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSCi0jIGFjY29yZGluZ2x5LgotYWNfZm5fY19maW5kX2ludFhfdCAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGludCQyX3QiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGludCQyX3QuLi4gIiA+JjY7IH0KLWlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBldmFsICIkMz1ubyIKLSAgICAgIyBPcmRlciBpcyBpbXBvcnRhbnQgLSBuZXZlciBjaGVjayBhIHR5cGUgdGhhdCBpcyBwb3RlbnRpYWxseSBzbWFsbGVyCi0gICAgICMgdGhhbiBoYWxmIG9mIHRoZSBleHBlY3RlZCB0YXJnZXQgd2lkdGguCi0gICAgIGZvciBhY190eXBlIGluIGludCQyX3QgJ2ludCcgJ2xvbmcgaW50JyBcCi0JICdsb25nIGxvbmcgaW50JyAnc2hvcnQgaW50JyAnc2lnbmVkIGNoYXInOyBkbwotICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0JICAgICBlbnVtIHsgTiA9ICQyIC8gMiAtIDEgfTsKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoMCA8ICgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDEpKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotCSAgICAgICAgZW51bSB7IE4gPSAkMiAvIDIgLSAxIH07Ci1pbnQKLW1haW4gKCkKLXsKLXN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDEpCi0JCSA8ICgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDIpKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0gIGNhc2UgJGFjX3R5cGUgaW4gIygKLSAgaW50JDJfdCkgOgotICAgIGV2YWwgIiQzPXllcyIgOzsgIygKLSAgKikgOgotICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKLWVzYWMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYnJlYWsKLWZpCi0gICAgIGRvbmUKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19mbl9jX2ZpbmRfaW50WF90Ci0KICMgYWNfZm5fY19jb21wdXRlX2ludCBMSU5FTk8gRVhQUiBWQVIgSU5DTFVERVMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVHJpZXMgdG8gZmluZCB0aGUgY29tcGlsZS10aW1lIHZhbHVlIG9mIEVYUFIgaW4gYSBwcm9ncmFtIHRoYXQgaW5jbHVkZXMKQEAgLTI0NzAsNyArMjM0MSw3IEBACiBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAotSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjUsIHdoaWNoIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjYsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtMzA1OSw3ICsyOTMwLDcgQEAKICAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KICAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbwogCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQotCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywzKSknOyB0aGVuCisJICAgIGlmICRpbnRlcnAgLWMgImltcG9ydCBzeXM7c3lzLmV4aXQobm90ICcuJy5qb2luKHN0cihuKSBmb3IgbiBpbiBzeXMudmVyc2lvbl9pbmZvWzoyXSkgPT0gJyRQQUNLQUdFX1ZFUlNJT04nKSI7IHRoZW4KIAkgICAgICAgIGJyZWFrCiAJICAgIGZpCiAgICAgICAgICAgICBpbnRlcnA9CkBAIC0zMDY5LDcgKzI5NDAsNyBAQAogCWZpCiAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaW50ZXJwIiA+JjUKICRhc19lY2hvICIkaW50ZXJwIiA+JjY7IH0KLQlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliLyQoUExBVERJUikgJyRpbnRlcnAKKwlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYiBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT1fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKSAnJGludGVycAogICAgIGZpCiAgICAgIyBVc2VkIHRvIGNvbW1lbnQgb3V0IHN0dWZmIGZvciByZWJ1aWxkaW5nIGdlbmVyYXRlZCBmaWxlcwogICAgIEdFTkVSQVRFRF9DT01NRU5UPScjJwpAQCAtMzA5Nyw3ICsyOTY4LDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuNQorVkVSU0lPTj0zLjYKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtNDcxNiw2ICs0NTg3LDc1IEBACiAgR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9TRUQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAgICAgICAgICAgYWNfc2NyaXB0PXMvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiLworICAgICBmb3IgYWNfaSBpbiAxIDIgMyA0IDUgNiA3OyBkbworICAgICAgIGFjX3NjcmlwdD0iJGFjX3NjcmlwdCRhc19ubCRhY19zY3JpcHQiCisgICAgIGRvbmUKKyAgICAgZWNobyAiJGFjX3NjcmlwdCIgMj4vZGV2L251bGwgfCBzZWQgOTlxID5jb25mdGVzdC5zZWQKKyAgICAgeyBhY19zY3JpcHQ9OyB1bnNldCBhY19zY3JpcHQ7fQorICAgICBpZiB0ZXN0IC16ICIkU0VEIjsgdGhlbgorICBhY19wYXRoX1NFRF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gc2VkIGdzZWQ7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX1NFRD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKKyAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfU0VEIiB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfU0VEIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9TRUQKK2Nhc2UgYCIkYWNfcGF0aF9TRUQiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfU0VEPSIkYWNfcGF0aF9TRUQiIGFjX3BhdGhfU0VEX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICcnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhfU0VEIiAtZiBjb25mdGVzdC5zZWQgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX1NFRF9tYXgtMH07IHRoZW4KKyAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRoX1NFRCIKKyAgICAgIGFjX3BhdGhfU0VEX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFjX3BhdGhfU0VEX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9TRUQ9JFNFRAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9TRUQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX1NFRCIgPiY2OyB9CisgU0VEPSIkYWNfY3ZfcGF0aF9TRUQiCisgIHJtIC1mIGNvbmZ0ZXN0LnNlZAorCiAKIAogCkBAIC01Mjg5LDcgKzUyMjksMzEgQEAKICN1bmRlZiBwb3dlcnBjCiAjdW5kZWYgc3BhcmMKICN1bmRlZiB1bml4Ci0jaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorICAgICAgICB4ODZfNjQtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgICAgIGk2ODYtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NC1saW51eC1hbmRyb2lkCisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWFuZHJvaWRlYWJpCisjIGVsaWYgZGVmaW5lZChfX21pcHNfaGFyZF9mbG9hdCkgJiYgZGVmaW5lZChfTUlQU0VMKQorIyAgaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgICAgICAgbWlwc2VsLWxpbnV4LWFuZHJvaWQKKyMgIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAorICAgICAgICBtaXBzNjRlbC1saW51eC1hbmRyb2lkCisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQogICAgICAgICB4ODZfNjQtbGludXgtZ251CiAjIGVsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fSUxQMzJfXykKQEAgLTU0MDUsMTAgKzUzNjksMTMgQEAKICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KICAgICBhc19mbl9lcnJvciAkPyAiaW50ZXJuYWwgY29uZmlndXJlIGVycm9yIGZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCwgcGxlYXNlIGZpbGUgYSBidWcgcmVwb3J0IiAiJExJTkVOTyIgNQogICBmaQorZWxpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggPSB4OyB0aGVuCisgIE1VTFRJQVJDSD0kUExBVEZPUk1fVFJJUExFVAogZmkKLVBMQVRESVI9cGxhdC0kTUFDSERFUAogCi0KK2lmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgorICBNVUxUSUFSQ0hfQ1BQRkxBR1M9Ii1ETVVMVElBUkNIPVxcXCIkTVVMVElBUkNIXFxcIiIKK2ZpCiAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLVdsLC0tbm8tYXMtbmVlZGVkIiA+JjUKQEAgLTU3MDIsNiArNTY2OSwzMiBAQAogCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdGhlIEFuZHJvaWQgQVBJIGxldmVsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwuLi4gIiA+JjY7IH0KK2NhdCA+PiBjb25mdGVzdC5jIDw8RU9GCisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorX19BTkRST0lEX0FQSV9fCisjZWxzZQorI2Vycm9yIG5vdCBBbmRyb2lkCisjZW5kaWYKK0VPRgorCitpZiAkQ1BQICRDUFBGTEFHUyBjb25mdGVzdC5jID5jb25mdGVzdC5vdXQgMj4vZGV2L251bGw7IHRoZW4KKyAgQU5EUk9JRF9BUElfTEVWRUw9YGdyZXAgLXYgJ14jJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICdeICokJ2AKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBTkRST0lEX0FQSV9MRVZFTCIgPiY1CiskYXNfZWNobyAiJEFORFJPSURfQVBJX0xFVkVMIiA+JjY7IH0KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBBTkRST0lEX0FQSV9MRVZFTCAkQU5EUk9JRF9BUElfTEVWRUwKK19BQ0VPRgorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub3QgQW5kcm9pZCIgPiY1CiskYXNfZWNobyAibm90IEFuZHJvaWQiID4mNjsgfQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKICMgQ2hlY2sgZm9yIHVuc3VwcG9ydGVkIHN5c3RlbXMKIGNhc2UgJGFjX3N5c19zeXN0ZW0vJGFjX3N5c19yZWxlYXNlIGluCiBhdGhlb3MqfExpbnV4Ki8xKikKQEAgLTY2MDQsMTMgKzY1OTcsMjAgQEAKIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgogICBjYXNlICRDQyBpbgogICAgICpjbGFuZyopCi0gICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKLSAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgICAgRGFyd2luKikKKyAgICAgICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICA7OworICAgICAgZXNhYwogICAgICAgOzsKICAgICAqZ2NjKikKICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KICAgICAgICAgRGFyd2luKikKLSAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8iCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIC1XbCwtZXhwb3J0X2R5bmFtaWMiCiAgICAgICAgICAgOzsKICAgICAgICAgKikKICAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLWZ1c2UtbGlua2VyLXBsdWdpbiAtZmZhdC1sdG8tb2JqZWN0cyAtZmx0by1wYXJ0aXRpb249bm9uZSIKQEAgLTY5MTgsNiArNjkxOCw0OSBAQAogIyB0d2VhayBCQVNFQ0ZMQUdTIGJhc2VkIG9uIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybQogY2FzZSAkR0NDIGluCiB5ZXMpCisgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLXN0ZD1jOTkiCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2V4dHJhIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2V4dHJhLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV2V4dHJhIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZXh0cmFfd2FybmluZ3MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyAgICAgICAgICAgYWNfY3ZfZXh0cmFfd2FybmluZ3M9eWVzCisKK2Vsc2UKKworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2V4dHJhX3dhcm5pbmdzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZXh0cmFfd2FybmluZ3MiID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZXh0cmFfd2FybmluZ3MgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2V4dHJhIgorICAgIGZpCisKICAgICAjIFB5dGhvbiBkb2Vzbid0IHZpb2xhdGUgQzk5IGFsaWFzaW5nIHJ1bGVzLCBidXQgb2xkZXIgdmVyc2lvbnMgb2YKICAgICAjIEdDQyBwcm9kdWNlIHdhcm5pbmdzIGZvciBsZWdhbCBQeXRob24gY29kZS4gIEVuYWJsZQogICAgICMgLWZuby1zdHJpY3QtYWxpYXNpbmcgb24gdmVyc2lvbnMgb2YgR0NDIHRoYXQgc3VwcG9ydCBidXQgcHJvZHVjZQpAQCAtNzAzOCwxNCArNzA4MSwxNCBAQAogICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nID0geWVzCiAgICAgdGhlbgogICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVduby11bnVzZWQtcmVzdWx0IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcmVzdWx0IgogICAgIGZpCiAKLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQuLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nLi4uICIgPiY2OyB9CiAgICAgIGFjX3NhdmVfY2M9IiRDQyIKLSAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKLSAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgIGlmICR7YWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgorICAgICBDQz0iJENDIC1XdW51c2VkLXBhcmFtZXRlciAtV2Vycm9yIgorICAgICBpZiAke2FjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtNzA2MywyNCArNzEwNiw2NCBAQAogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9eWVzCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPXllcwogCiBlbHNlCiAKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9bm8KKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmc9bm8KIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIAotICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKICAgICAgQ0M9IiRhY19zYXZlX2NjIgotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmciID4mNQotJGFzX2VjaG8gIiRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyIgPiY2OyB9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nIiA+JjY7IH0KIAotICAgIGlmIHRlc3QgJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nID0geWVzCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCi0gICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXBhcmFtZXRlciIKKyAgICBmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIG1pc3NpbmcgZmllbGQgaW5pdGlhbGl6ZXJzIHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyBtaXNzaW5nIGZpZWxkIGluaXRpYWxpemVycyB3YXJuaW5nLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzIiA+JjY7IH0KKworICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIgogICAgIGZpCiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZyIgPiY1CkBAIC03NzEwLDcgKzc3OTMsNyBAQAogZm9yIGFjX2hlYWRlciBpbiBhc20vdHlwZXMuaCBjb25pby5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKIGllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAogcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCiBzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKQEAgLTc3MTksNyArNzgwMiw3IEBACiBzeXMvc3RhdC5oIHN5cy9zeXNjYWxsLmggc3lzL3N5c19kb21haW4uaCBzeXMvdGVybWlvLmggc3lzL3RpbWUuaCBcCiBzeXMvdGltZXMuaCBzeXMvdHlwZXMuaCBzeXMvdWlvLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIFwKIGxpYnV0aWwuaCBzeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCi1ibHVldG9vdGgvYmx1ZXRvb3RoLmggbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKK2xpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCiBzeXMvZW5kaWFuLmgKIGRvIDoKICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYApAQCAtNzk0Miw2ICs4MDI1LDI0IEBACiBmaQogCiAKKyMgYmx1ZXRvb3RoL2JsdWV0b290aC5oIGhhcyBiZWVuIGtub3duIHRvIG5vdCBjb21waWxlIHdpdGggLXN0ZD1jOTkuCisjIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmJsdWV6Lmtlcm5lbC8yMjI5NAorU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItc3RkPWM5OSAkQ0ZMQUdTIgorZm9yIGFjX2hlYWRlciBpbiBibHVldG9vdGgvYmx1ZXRvb3RoLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImJsdWV0b290aC9ibHVldG9vdGguaCIgImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0JMVUVUT09USF9CTFVFVE9PVEhfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCisKICMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCiBmb3IgYWNfaGVhZGVyIGluIG5ldC9pZi5oCiBkbyA6CkBAIC04MTQ3LDYgKzgyNDgsMTEgQEAKICAgdXNlX2xmcz1ubwogZmkKIAorIyBEb24ndCB1c2UgbGFyZ2VmaWxlIHN1cHBvcnQgZm9yIEdOVS9IdXJkCitjYXNlICRhY19zeXNfc3lzdGVtIGluIEdOVSopCisgIHVzZV9sZnM9bm8KK2VzYWMKKwogaWYgdGVzdCAiJHVzZV9sZnMiID0gInllcyI7IHRoZW4KICMgVHdvIGRlZmluZXMgbmVlZGVkIHRvIGVuYWJsZSBsYXJnZWZpbGUgc3VwcG9ydCBvbiB2YXJpb3VzIHBsYXRmb3JtcwogIyBUaGVzZSBtYXkgYWZmZWN0IHNvbWUgdHlwZWRlZnMKQEAgLTgyNTMsOTUgKzgzNTksNiBAQAogZmkKIAogCi0jIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgY2hlY2tzIGZvciBlYWNoIG9mIHRoZSBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzIHdlCi0jIG5lZWQuICBGaXJzdCB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUgdXN1YWwKLSMgQUNfQ0hFQ0tfVFlQRSBtYWNybyB3aXRoIHRoZSBkZWZhdWx0IGluY2x1ZGVzICh3aGljaCBpbmNsdWRlcyA8aW50dHlwZXMuaD4KLSMgYW5kIDxzdGRpbnQuaD4gd2hlcmUgYXZhaWxhYmxlKS4gIFdlIHRoZW4gYWxzbyB1c2UgdGhlIHNwZWNpYWwgdHlwZSBjaGVja3Mgb2YKLSMgdGhlIGZvcm0gQUNfVFlQRV9VSU5UMzJfVCwgd2hpY2ggaW4gdGhlIGNhc2UgdGhhdCB1aW50MzJfdCBpcyBub3QgYXZhaWxhYmxlCi0jIGRpcmVjdGx5LCAjZGVmaW5lJ3MgdWludDMyX3QgdG8gYmUgYSBzdWl0YWJsZSB0eXBlLgotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJ1aW50MzJfdCIgImFjX2N2X3R5cGVfdWludDMyX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV91aW50MzJfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotYWNfZm5fY19maW5kX3VpbnRYX3QgIiRMSU5FTk8iICIzMiIgImFjX2N2X2NfdWludDMyX3QiCi1jYXNlICRhY19jdl9jX3VpbnQzMl90IGluICMoCi0gIG5vfHllcykgOzsgIygKLSAgKikKLQotJGFzX2VjaG8gIiNkZWZpbmUgX1VJTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgdWludDMyX3QgJGFjX2N2X2NfdWludDMyX3QKLV9BQ0VPRgotOzsKLSAgZXNhYwotCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnQ2NF90IiAiYWNfY3ZfdHlwZV91aW50NjRfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX3VpbnQ2NF90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1VJTlQ2NF9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjY0IiAiYWNfY3ZfY191aW50NjRfdCIKLWNhc2UgJGFjX2N2X2NfdWludDY0X3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi0kYXNfZWNobyAiI2RlZmluZSBfVUlOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSB1aW50NjRfdCAkYWNfY3ZfY191aW50NjRfdAotX0FDRU9GCi07OwotICBlc2FjCi0KLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiaW50MzJfdCIgImFjX2N2X3R5cGVfaW50MzJfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX2ludDMyX3QiID0geHllczsgdGhlbiA6Ci0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfSU5UMzJfVCAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotYWNfZm5fY19maW5kX2ludFhfdCAiJExJTkVOTyIgIjMyIiAiYWNfY3ZfY19pbnQzMl90IgotY2FzZSAkYWNfY3ZfY19pbnQzMl90IGluICMoCi0gIG5vfHllcykgOzsgIygKLSAgKikKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBpbnQzMl90ICRhY19jdl9jX2ludDMyX3QKLV9BQ0VPRgotOzsKLWVzYWMKLQotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJpbnQ2NF90IiAiYWNfY3ZfdHlwZV9pbnQ2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfaW50NjRfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JTlQ2NF9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX2ludDY0X3QiCi1jYXNlICRhY19jdl9jX2ludDY0X3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIGludDY0X3QgJGFjX2N2X2NfaW50NjRfdAotX0FDRU9GCi07OwotZXNhYwotCi0KIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNzaXplX3QiICJhY19jdl90eXBlX3NzaXplX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKIGlmIHRlc3QgIngkYWNfY3ZfdHlwZV9zc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgogCkBAIC04NDI5LDYgKzg0NDYsMzkgQEAKICMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKICMgZGVjbGFyYXRpb25zIGxpa2UgYGludCBhM1tbKHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgogIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGxvbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGxvbmcuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgbG9uZykpIiAiYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorCitlbHNlCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX2xvbmdfbG9uZyIgPSB5ZXM7IHRoZW4KKyAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGxvbmcpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorICAgZWxzZQorICAgICBhY19jdl9zaXplb2ZfbG9uZ19sb25nPTAKKyAgIGZpCitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY2OyB9CisKKworCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgJGFjX2N2X3NpemVvZl9sb25nX2xvbmcKK19BQ0VPRgorCisKKyMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCisjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCisjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KKyMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2Ygdm9pZCAqIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2Ygdm9pZCAqLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X3NpemVvZl92b2lkX3ArOn0gZmFsc2U7IHRoZW4gOgpAQCAtODY1Niw2NyArODcwNiwzOSBAQAogX0FDRU9GCiAKIAotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb25nIGxvbmcgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgbG9uZyBsb25nIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWhhdmVfbG9uZ19sb25nPW5vCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotbG9uZyBsb25nIHg7IHggPSAobG9uZyBsb25nKTA7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLQotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAxIiA+PmNvbmZkZWZzLmgKLQotICBoYXZlX2xvbmdfbG9uZz15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2xvbmdfbG9uZyIgPiY1Ci0kYXNfZWNobyAiJGhhdmVfbG9uZ19sb25nIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMgOyB0aGVuCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZy4uLiAiID4mNjsgfQotaWYgJHthY19jdl9zaXplb2ZfbG9uZ19sb25nKzp9IGZhbHNlOyB0aGVuIDoKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiB1aW50cHRyX3QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiB1aW50cHRyX3QuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCi0gIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgbG9uZykpIiAiYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mICh1aW50cHRyX3QpKSIgImFjX2N2X3NpemVvZl91aW50cHRyX3QiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKIAogZWxzZQotICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9sb25nX2xvbmciID0geWVzOyB0aGVuCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX3VpbnRwdHJfdCIgPSB5ZXM7IHRoZW4KICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGxvbmcpCithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mICh1aW50cHRyX3QpCiBTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgZWxzZQotICAgICBhY19jdl9zaXplb2ZfbG9uZ19sb25nPTAKKyAgICAgYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdD0wCiAgICBmaQogZmkKIAogZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3NpemVvZl9sb25nX2xvbmciID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgPiY2OyB9CiAKIAogCiBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgJGFjX2N2X3NpemVvZl9sb25nX2xvbmcKKyNkZWZpbmUgU0laRU9GX1VJTlRQVFJfVCAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdAogX0FDRU9GCiAKIAotZmkKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbG9uZyBkb3VibGUgc3VwcG9ydC4uLiAiID4mNjsgfQpAQCAtODc3OSwzMyArODgwMSw2IEBACiAKIGZpCiAKLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0Jvb2wgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgX0Jvb2wgc3VwcG9ydC4uLiAiID4mNjsgfQotaGF2ZV9jOTlfYm9vbD1ubwotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLV9Cb29sIHg7IHggPSAoX0Jvb2wpMDsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQzk5X0JPT0wgMSIgPj5jb25mZGVmcy5oCi0KLSAgaGF2ZV9jOTlfYm9vbD15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2M5OV9ib29sIiA+JjUKLSRhc19lY2hvICIkaGF2ZV9jOTlfYm9vbCIgPiY2OyB9Ci1pZiB0ZXN0ICIkaGF2ZV9jOTlfYm9vbCIgPSB5ZXMgOyB0aGVuCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCkBAIC04ODM5LDU2ICs4ODM0LDYgQEAKIF9BQ0VPRgogCiAKLWZpCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnRwdHJfdCIgImFjX2N2X3R5cGVfdWludHB0cl90IiAiI2lmZGVmIEhBVkVfU1RESU5UX0gKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPgotICAgICAgICAjZW5kaWYKLSAgICAgICAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotICAgICAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAgICAgICAgI2VuZGlmCi0iCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHh5ZXM7IHRoZW4gOgotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIEhBVkVfVUlOVFBUUl9UIDEKLV9BQ0VPRgotCi0jIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgotIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwotIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCi0jIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9zaXplb2ZfdWludHB0cl90Kzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAodWludHB0cl90KSkiICJhY19jdl9zaXplb2ZfdWludHB0cl90IiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6Ci0KLWVsc2UKLSAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHllczsgdGhlbgotICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKHVpbnRwdHJfdCkKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9Ci0gICBlbHNlCi0gICAgIGFjX2N2X3NpemVvZl91aW50cHRyX3Q9MAotICAgZmkKLWZpCi0KLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNQotJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjY7IH0KLQotCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgU0laRU9GX1VJTlRQVFJfVCAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdAotX0FDRU9GCi0KLQotZmkKLQogCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwpAQCAtODkzMSw4ICs4ODc2LDYgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbGFyZ2UgZmlsZSBzdXBwb3J0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCiBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX29mZl90IiAtZ3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgLWEgXAogCSIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgLWdlICIkYWNfY3Zfc2l6ZW9mX29mZl90IjsgdGhlbgogCkBAIC04OTQ0LDEwICs4ODg3LDYgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCiAKICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCkBAIC0xMDEwNSwxMSArMTAwNDQsMjcgQEAKICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzdGVtX2ZmaSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfc3lzdGVtX2ZmaStzZXR9IiA9IHNldDsgdGhlbiA6CiAgIHdpdGh2YWw9JHdpdGhfc3lzdGVtX2ZmaTsKLWVsc2UKLSAgd2l0aF9zeXN0ZW1fZmZpPSJubyIKIGZpCiAKIAorY2FzZSAiJHdpdGhfc3lzdGVtX2ZmaSIgaW4KKyAgICAiIikKKyAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICAgICAgRGFyd2luKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ibm8iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJ5ZXMiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIHllc3xubykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBhc19mbl9lcnJvciAkPyAiLS13aXRoLXN5c3RlbS1mZmkgYWNjZXB0cyBubyBhcmd1bWVudHMiICIkTElORU5PIiA1CisgICAgICAgIDs7Citlc2FjCisKIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9mZmkiID0gInllcyIgJiYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCiAgICAgTElCRkZJX0lOQ0xVREVESVI9ImAiJFBLR19DT05GSUciIGxpYmZmaSAtLWNmbGFncy1vbmx5LUkgMj4vZGV2L251bGwgfCBzZWQgLWUgJ3MvXi1JLy87cy8gKiQvLydgIgogZWxzZQpAQCAtMTAyMTIsMzIgKzEwMTY3LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kYm1saWJvcmRlciIgPiY1CiAkYXNfZWNobyAiJHdpdGhfZGJtbGlib3JkZXIiID4mNjsgfQogCi0jIERldGVybWluZSBpZiBzaWduYWxtb2R1bGUgc2hvdWxkIGJlIHVzZWQuCi0KLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXNpZ25hbC1tb2R1bGUiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1zaWduYWwtbW9kdWxlLi4uICIgPiY2OyB9Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc2lnbmFsLW1vZHVsZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfc2lnbmFsX21vZHVsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfc2lnbmFsX21vZHVsZTsKLWZpCi0KLQotaWYgdGVzdCAteiAiJHdpdGhfc2lnbmFsX21vZHVsZSIKLXRoZW4gd2l0aF9zaWduYWxfbW9kdWxlPSJ5ZXMiCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3NpZ25hbF9tb2R1bGUiID4mNQotJGFzX2VjaG8gIiR3aXRoX3NpZ25hbF9tb2R1bGUiID4mNjsgfQotCi1pZiB0ZXN0ICIke3dpdGhfc2lnbmFsX21vZHVsZX0iID0gInllcyI7IHRoZW4KLQlVU0VfU0lHTkFMX01PRFVMRT0iIgotCVNJR05BTF9PQkpTPSIiCi1lbHNlCi0JVVNFX1NJR05BTF9NT0RVTEU9IiMiCi0JU0lHTkFMX09CSlM9IlBhcnNlci9pbnRyY2hlY2subyBQeXRob24vc2lnY2hlY2subyIKLWZpCi0KICMgVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIFNldHVwLmNvbmZpZwogCiBVU0VfVEhSRUFEX01PRFVMRT0iIgpAQCAtMTEwNTQsMzcgKzEwOTgzLDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIuLi4gIiA+JjY7IH0KLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotaW50Ci1tYWluICgpCi17Ci1GU0lPUmVmTnVtIGZSZWYgPSAwCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfT1NYMTA1X1NESyAxIiA+PmNvbmZkZWZzLmgKLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotCi1lbHNlCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQogIyBDaGVjayBmb3IgLS13aXRoLWRvYy1zdHJpbmdzCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZG9jLXN0cmluZ3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncy4uLiAiID4mNjsgfQpAQCAtMTExMDcsMjkgKzExMDA1LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kb2Nfc3RyaW5ncyIgPiY1CiAkYXNfZWNobyAiJHdpdGhfZG9jX3N0cmluZ3MiID4mNjsgfQogCi0jIENoZWNrIGlmIGV2YWwgbG9vcCBzaG91bGQgdXNlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGluZwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXRzYyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXRzYy4uLiAiID4mNjsgfQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXRzYyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfdHNjK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF90c2M7Ci1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9UU0MgMSIgPj5jb25mZGVmcy5oCi0KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotZWxzZSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCiAjIENoZWNrIGZvciBQeXRob24tc3BlY2lmaWMgbWFsbG9jIHN1cHBvcnQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1weW1hbGxvYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXB5bWFsbG9jLi4uICIgPiY2OyB9CkBAIC0xMTE4Miw2ICsxMTA1NywxMDIgQEAKICAgICBPUFQ9Ii1ERFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEPTEgJE9QVCIKIGZpCiAKKyMgQ2hlY2sgZm9yIERUcmFjZSBzdXBwb3J0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZHRyYWNlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9kdHJhY2Urc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2R0cmFjZTsKK2Vsc2UKKyAgd2l0aF9kdHJhY2U9bm8KK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kdHJhY2UiID4mNQorJGFzX2VjaG8gIiR3aXRoX2R0cmFjZSIgPiY2OyB9CisKKworCisKKworRFRSQUNFPQorREZMQUdTPQorRFRSQUNFX0hFQURFUlM9CitEVFJBQ0VfT0JKUz0KKworaWYgdGVzdCAiJHdpdGhfZHRyYWNlIiA9ICJ5ZXMiCit0aGVuCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkdHJhY2UiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGR0cmFjZTsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfRFRSQUNFKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkRFRSQUNFIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0RUUkFDRT0iJERUUkFDRSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfRFRSQUNFPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0RUUkFDRSIgJiYgYWNfY3ZfcGF0aF9EVFJBQ0U9Im5vdCBmb3VuZCIKKyAgOzsKK2VzYWMKK2ZpCitEVFJBQ0U9JGFjX2N2X3BhdGhfRFRSQUNFCitpZiB0ZXN0IC1uICIkRFRSQUNFIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERUUkFDRSIgPiY1CiskYXNfZWNobyAiJERUUkFDRSIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgaWYgdGVzdCAiJERUUkFDRSIgPSAibm90IGZvdW5kIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiZHRyYWNlIGNvbW1hbmQgbm90IGZvdW5kIG9uIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgICBmaQorCiskYXNfZWNobyAiI2RlZmluZSBXSVRIX0RUUkFDRSAxIiA+PmNvbmZkZWZzLmgKKworICAgIERUUkFDRV9IRUFERVJTPSJJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oIgorCisgICAgIyBPbiBPUyBYLCBEVHJhY2UgcHJvdmlkZXJzIGRvIG5vdCBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgY29tcGlsZWQgYW5kCisgICAgIyBsaW5rZWQgaW50byB0aGUgYmluYXJ5LiBDb3JyZXNwb25kaW5nbHksIGR0cmFjZSgxKSBpcyBtaXNzaW5nIHRoZSBFTEYKKyAgICAjIGdlbmVyYXRpb24gZmxhZyAnLUcnLiBXZSBjaGVjayBmb3IgcHJlc2VuY2Ugb2YgdGhpcyBmbGFnLCByYXRoZXIgdGhhbgorICAgICMgaGFyZGNvZGluZyBzdXBwb3J0IGJ5IE9TLCBpbiB0aGUgaW50ZXJlc3Qgb2Ygcm9idXN0bmVzcy4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgRFRyYWNlIHByb2JlcyByZXF1aXJlIGxpbmtpbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBEVHJhY2UgcHJvYmVzIHJlcXVpcmUgbGlua2luZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9kdHJhY2VfbGluays6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPW5vCisgICAgICAgICAgICBlY2hvICdCRUdJTicgPiBjb25mdGVzdC5kCisgICAgICAgICAgICAiJERUUkFDRSIgLUcgLXMgY29uZnRlc3QuZCAtbyBjb25mdGVzdC5vID4gL2Rldi9udWxsIDI+JjEgJiYgXAorICAgICAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPXllcworCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kdHJhY2VfbGluayIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2R0cmFjZV9saW5rIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICIkYWNfY3ZfZHRyYWNlX2xpbmsiID0gInllcyI7IHRoZW4KKyAgICAgICAgRFRSQUNFX09CSlM9IlB5dGhvbi9weWR0cmFjZS5vIgorICAgIGZpCitmaQorCiAjIC1JJHtETElOQ0xESVJ9IGlzIGFkZGVkIHRvIHRoZSBjb21waWxlIHJ1bGUgZm9yIGltcG9ydGRsLm8KIAogRExJTkNMRElSPS4KQEAgLTEyNjEyLDYgKzEyNTgzLDY0IEBACiBkb25lCiAKIAorZm9yIGFjX2Z1bmMgaW4gY2xvY2tfc2V0dGltZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJjbG9ja19zZXR0aW1lIiAiYWNfY3ZfZnVuY19jbG9ja19zZXR0aW1lIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX3NldHRpbWUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9DTE9DS19TRVRUSU1FIDEKK19BQ0VPRgorCitlbHNlCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19zZXR0aW1lIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX3NldHRpbWUgaW4gLWxydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGNsb2NrX3NldHRpbWUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19zZXR0aW1lICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lPXllcworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWUiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19TRVRUSU1FIDEiID4+Y29uZmRlZnMuaAorCisKK2ZpCisKKworZmkKK2RvbmUKKworCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBtYWpvciIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbWFqb3IuLi4gIiA+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTEzMDI5LDYgKzEzMDU4LDMzIEBACiAKIGZpCiAKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHBhc3N3ZCIgInB3X2dlY29zIiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9wYXNzd2RfcHdfZ2Vjb3MiICIKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CisKKyIKK2lmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9wYXNzd2RfcHdfZ2Vjb3MiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX0dFQ09TIDEKK19BQ0VPRgorCisKK2ZpCithY19mbl9jX2NoZWNrX21lbWJlciAiJExJTkVOTyIgInN0cnVjdCBwYXNzd2QiICJwd19wYXNzd2QiICJhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19wYXNzd2QiICIKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CisKKyIKK2lmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9wYXNzd2RfcHdfcGFzc3dkIiA9IHh5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QgMQorX0FDRU9GCisKKworZmkKKwogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aW1lLmggdGhhdCBkZWZpbmVzIGFsdHpvbmUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRpbWUuaCB0aGF0IGRlZmluZXMgYWx0em9uZS4uLiAiID4mNjsgfQpAQCAtMTMxNjAsNiArMTMyMTYsNDEgQEAKIAogZmkKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc29ja2FkZHJfYWxnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzb2NrYWRkcl9hbGcuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworIwkJaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjCQlpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjCQlpbmNsdWRlIDxsaW51eC9pZl9hbGcuaD4KK2ludAorbWFpbiAoKQoreworc3RydWN0IHNvY2thZGRyX2FsZyBzCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZz15ZXMKK2Vsc2UKKyAgYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZyIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU09DS0FERFJfQUxHIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAjIGNoZWNrcyBmb3IgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBjaGFyIGlzIHVuc2lnbmVkIiA+JjUKQEAgLTE0MzM5LDYgKzE0NDMwLDg1IEBACiAKIGZpCiAKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTEFaWSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0xBWlkiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTEFaWSIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTEFaWSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9XIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9XIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PVyIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9XICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9HTE9CQUwiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9HTE9CQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfR0xPQkFMIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9HTE9CQUwgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX0xPQ0FMIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX0xPQ0FMICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9OT0RFTEVURSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9MT0FEIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9MT0FEIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PTE9BRCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9MT0FEICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9ERUVQQklORCIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9ERUVQQklORCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKKworCiAjIGRldGVybWluZSB3aGF0IHNpemUgZGlnaXQgdG8gdXNlIGZvciBQeXRob24ncyBsb25ncwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncy4uLiAiID4mNjsgfQpAQCAtMTQ3NzIsNyArMTQ5NDIsMTEgQEAKICRhc19lY2hvICIkTERWRVJTSU9OIiA+JjY7IH0KIAogCi1MSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUID0geDsgdGhlbgorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2Vsc2UKKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKK2ZpCiAKIAogIyBDaGVjayB3aGV0aGVyIHJpZ2h0IHNoaWZ0aW5nIGEgbmVnYXRpdmUgaW50ZWdlciBleHRlbmRzIHRoZSBzaWduIGJpdApAQCAtMTU4NDUsMTAyICsxNjAxOSw2IEBACiAKIGZpCiAKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydC4uLiAiID4mNjsgfQotICBpZiAke2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKLSAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCi0gICAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgotICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotCi1pbnQKLW1haW4gKCkKLXsKLQotICAgICAgY2hhciAqYnVmZmVyOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKLSAgIGZpCi1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKLSAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAjZW5kaWYKLQotICBpbnQgbWFpbigpCi0gIHsKLSAgICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICItMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcwotZWxzZQotICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm8KLWZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Ci1maQotCi0KLWZpCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNQotJGFzX2VjaG8gIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNjsgfQotZmkKLQotaWYgdGVzdCAiJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCIgPSB5ZXMKLXRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyBcImxsXCIiID4+Y29uZmRlZnMuaAotCi1maQotCiBpZiB0ZXN0ICRhY19zeXNfc3lzdGVtID0gRGFyd2luCiB0aGVuCiAJTElCUz0iJExJQlMgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiIKQEAgLTE3MDE0LDcgKzE3MDkyLDcgQEAKICMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgogIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KIGFjX2xvZz0iCi1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy41LCB3aGljaCB3YXMKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjYsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwpAQCAtMTcwNzYsNyArMTcxNTQsNyBAQAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3NfdmVyc2lvbj0iXFwKLXB5dGhvbiBjb25maWcuc3RhdHVzIDMuNQorcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy42CiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMzgxYmFiMC4uMGExNDBkYiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMyw3ICszLDcgQEAKIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiAjIFNldCBWRVJTSU9OIHNvIHdlIG9ubHkgbmVlZCB0byBlZGl0IGluIG9uZSBwbGFjZSAoaS5lLiwgaGVyZSkKLW00X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy41KQorbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjYpCiAKIEFDX1BSRVJFUSgyLjY1KQogCkBAIC02OSw3ICs2OSw3IEBACiAgICAgaWYgdGVzdCAteiAiJFBZVEhPTl9GT1JfQlVJTEQiOyB0aGVuCiAgICAgICAgIGZvciBpbnRlcnAgaW4gcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbjsgZG8KIAkgICAgd2hpY2ggJGludGVycCA+L2Rldi9udWxsIDI+JjEgfHwgY29udGludWUKLQkgICAgaWYgJGludGVycCAtYyAnaW1wb3J0IHN5cztzeXMuZXhpdChub3Qgc3lzLnZlcnNpb25faW5mb0A8OkA6MkA6PkAgPj0gKDMsMykpJzsgdGhlbgorCSAgICBpZiAkaW50ZXJwIC1jICJpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCAnLicuam9pbihzdHIobikgZm9yIG4gaW4gc3lzLnZlcnNpb25faW5mb0A8OkA6MkA6PkApID09ICckUEFDS0FHRV9WRVJTSU9OJykiOyB0aGVuCiAJICAgICAgICBicmVhawogCSAgICBmaQogICAgICAgICAgICAgaW50ZXJwPQpAQCAtNzgsNyArNzgsNyBAQAogCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKIAlmaQogICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCi0JUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICckaW50ZXJwCisJUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWIgX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUU9X3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUylfJChNQUNIREVQKV8kKE1VTFRJQVJDSCkgJyRpbnRlcnAKICAgICBmaQogICAgICMgVXNlZCB0byBjb21tZW50IG91dCBzdHVmZiBmb3IgcmVidWlsZGluZyBnZW5lcmF0ZWQgZmlsZXMKICAgICBHRU5FUkFURURfQ09NTUVOVD0nIycKQEAgLTY5NCw2ICs2OTQsNyBAQAogQUNfUFJPR19DQwogQUNfUFJPR19DUFAKIEFDX1BST0dfR1JFUAorQUNfUFJPR19TRUQKIAogQUNfU1VCU1QoQ1hYKQogQUNfU1VCU1QoTUFJTkNDKQpAQCAtNzY4LDcgKzc2OSwzMSBAQAogI3VuZGVmIHBvd2VycGMKICN1bmRlZiBzcGFyYwogI3VuZGVmIHVuaXgKLSNpZiBkZWZpbmVkKF9fbGludXhfXykKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2kzODZfXykKKyAgICAgICAgaTY4Ni1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKQorIyAgaWYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIGFhcmNoNjRfaWxwMzItbGludXgtYW5kcm9pZAorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWFuZHJvaWQKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmIGRlZmluZWQoX19BUk1FTF9fKQorICAgICAgICBhcm0tbGludXgtYW5kcm9pZGVhYmkKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtYW5kcm9pZAorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgIGVuZGlmCisjIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCiAgICAgICAgIHg4Nl82NC1saW51eC1nbnUKICMgZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19JTFAzMl9fKQpAQCAtODgyLDExICs5MDcsMTQgQEAKICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KICAgICBBQ19NU0dfRVJST1IoW2ludGVybmFsIGNvbmZpZ3VyZSBlcnJvciBmb3IgdGhlIHBsYXRmb3JtIHRyaXBsZXQsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydF0pCiAgIGZpCitlbGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCA9IHg7IHRoZW4KKyAgTVVMVElBUkNIPSRQTEFURk9STV9UUklQTEVUCiBmaQotUExBVERJUj1wbGF0LSRNQUNIREVQCi1BQ19TVUJTVChQTEFURElSKQogQUNfU1VCU1QoUExBVEZPUk1fVFJJUExFVCkKLQoraWYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIE1VTFRJQVJDSF9DUFBGTEFHUz0iLURNVUxUSUFSQ0g9XFxcIiRNVUxUSUFSQ0hcXFwiIgorZmkKK0FDX1NVQlNUKE1VTFRJQVJDSF9DUFBGTEFHUykKIAogQUNfTVNHX0NIRUNLSU5HKFtmb3IgLVdsLC0tbm8tYXMtbmVlZGVkXSkKIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCkBAIC05MDMsNiArOTMxLDI1IEBACiAjIGNoZWNrcyBmb3IgVU5JWCB2YXJpYW50cyB0aGF0IHNldCBDIHByZXByb2Nlc3NvciB2YXJpYWJsZXMKIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUwogCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWxdKQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CitfX0FORFJPSURfQVBJX18KKyNlbHNlCisjZXJyb3Igbm90IEFuZHJvaWQKKyNlbmRpZgorRU9GCisKK2lmICRDUFAgJENQUEZMQUdTIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBBTkRST0lEX0FQSV9MRVZFTD1gZ3JlcCAtdiAnXiMnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgJ14gKiQnYAorICBBQ19NU0dfUkVTVUxUKFskQU5EUk9JRF9BUElfTEVWRUxdKQorICBBQ19ERUZJTkVfVU5RVU9URUQoQU5EUk9JRF9BUElfTEVWRUwsICRBTkRST0lEX0FQSV9MRVZFTCwgW1RoZSBBbmRyb2lkIEFQSSBsZXZlbC5dKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFtub3QgQW5kcm9pZF0pCitmaQorcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdC5vdXQKKwogIyBDaGVjayBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtcwogY2FzZSAkYWNfc3lzX3N5c3RlbS8kYWNfc3lzX3JlbGVhc2UgaW4KIGF0aGVvcyp8TGludXgqLzEqKQpAQCAtMTI3NywxMyArMTMyNCwyMCBAQAogaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCiAgIGNhc2UgJENDIGluCiAgICAgKmNsYW5nKikKLSAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICBEYXJ3aW4qKQorICAgICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtV2wsLWV4cG9ydF9keW5hbWljIgorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgICAgIDs7CisgICAgICBlc2FjCiAgICAgICA7OwogICAgICpnY2MqKQogICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogICAgICAgICBEYXJ3aW4qKQotICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKICAgICAgICAgICA7OwogICAgICAgICAqKQogICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtZnVzZS1saW5rZXItcGx1Z2luIC1mZmF0LWx0by1vYmplY3RzIC1mbHRvLXBhcnRpdGlvbj1ub25lIgpAQCAtMTQ2MSw2ICsxNTE1LDI4IEBACiAjIHR3ZWFrIEJBU0VDRkxBR1MgYmFzZWQgb24gY29tcGlsZXIgYW5kIHBsYXRmb3JtCiBjYXNlICRHQ0MgaW4KIHllcykKKyAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtc3RkPWM5OSIKKworICAgIEFDX01TR19DSEVDS0lORyhmb3IgLVdleHRyYSkKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XZXh0cmEgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2V4dHJhX3dhcm5pbmdzLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz1ubworICAgICAgICAgXSkpCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9leHRyYV93YXJuaW5ncykKKworICAgIGlmIHRlc3QgJGFjX2N2X2V4dHJhX3dhcm5pbmdzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVdleHRyYSIKKyAgICBmaQorCiAgICAgIyBQeXRob24gZG9lc24ndCB2aW9sYXRlIEM5OSBhbGlhc2luZyBydWxlcywgYnV0IG9sZGVyIHZlcnNpb25zIG9mCiAgICAgIyBHQ0MgcHJvZHVjZSB3YXJuaW5ncyBmb3IgbGVnYWwgUHl0aG9uIGNvZGUuICBFbmFibGUKICAgICAjIC1mbm8tc3RyaWN0LWFsaWFzaW5nIG9uIHZlcnNpb25zIG9mIEdDQyB0aGF0IHN1cHBvcnQgYnV0IHByb2R1Y2UKQEAgLTE1MjUsMjggKzE2MDEsNDcgQEAKICAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcwogICAgIHRoZW4KICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXJlc3VsdCIKICAgICBmaQogCi0gICAgQUNfTVNHX0NIRUNLSU5HKGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCkKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcpCiAgICAgIGFjX3NhdmVfY2M9IiRDQyIKLSAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKLSAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZywKKyAgICAgQ0M9IiRDQyAtV3VudXNlZC1wYXJhbWV0ZXIgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nLAogICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAogICAgICAgICAgWwotCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQotCSBdLFsKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9eWVzCi0JIF0sWwotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz1ubwotCSBdKSkKLSAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPXllcworICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPW5vCisgICAgICAgICBdKSkKICAgICAgQ0M9IiRhY19zYXZlX2NjIgotICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nKQorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nKQogCi0gICAgaWYgdGVzdCAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcgPSB5ZXMKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyA9IHllcwogICAgIHRoZW4KLSAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyBtaXNzaW5nIGZpZWxkIGluaXRpYWxpemVycyB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV2Vycm9yIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKyAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPW5vCisgICAgICAgICBdKSkKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIKICAgICBmaQogCiAgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZykKQEAgLTE5NDEsNyArMjAzNiw3IEBACiBBQ19DSEVDS19IRUFERVJTKGFzbS90eXBlcy5oIGNvbmlvLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKIGZjbnRsLmggZ3JwLmggXAogaWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCiBwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKIHN5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXApAQCAtMTk1MCwxMSArMjA0NSwxOCBAQAogc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAogc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCiBsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAotYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCitsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAogc3lzL2VuZGlhbi5oKQogQUNfSEVBREVSX0RJUkVOVAogQUNfSEVBREVSX01BSk9SCiAKKyMgYmx1ZXRvb3RoL2JsdWV0b290aC5oIGhhcyBiZWVuIGtub3duIHRvIG5vdCBjb21waWxlIHdpdGggLXN0ZD1jOTkuCisjIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmJsdWV6Lmtlcm5lbC8yMjI5NAorU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItc3RkPWM5OSAkQ0ZMQUdTIgorQUNfQ0hFQ0tfSEVBREVSUyhibHVldG9vdGgvYmx1ZXRvb3RoLmgpCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCisKICMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCiBBQ19DSEVDS19IRUFERVJTKFtuZXQvaWYuaF0sIFtdLCBbXSwKIFsjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIwNDgsNiArMjE1MCwxMSBAQAogICB1c2VfbGZzPW5vCiBmaQogCisjIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQKK2Nhc2UgJGFjX3N5c19zeXN0ZW0gaW4gR05VKikKKyAgdXNlX2xmcz1ubworZXNhYworCiBpZiB0ZXN0ICIkdXNlX2xmcyIgPSAieWVzIjsgdGhlbgogIyBUd28gZGVmaW5lcyBuZWVkZWQgdG8gZW5hYmxlIGxhcmdlZmlsZSBzdXBwb3J0IG9uIHZhcmlvdXMgcGxhdGZvcm1zCiAjIFRoZXNlIG1heSBhZmZlY3Qgc29tZSB0eXBlZGVmcwpAQCAtMjA3OCwyOSArMjE4NSw2IEBACiBBQ19UWVBFX1NJWkVfVAogQUNfVFlQRV9VSURfVAogCi0jIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgY2hlY2tzIGZvciBlYWNoIG9mIHRoZSBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzIHdlCi0jIG5lZWQuICBGaXJzdCB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUgdXN1YWwKLSMgQUNfQ0hFQ0tfVFlQRSBtYWNybyB3aXRoIHRoZSBkZWZhdWx0IGluY2x1ZGVzICh3aGljaCBpbmNsdWRlcyA8aW50dHlwZXMuaD4KLSMgYW5kIDxzdGRpbnQuaD4gd2hlcmUgYXZhaWxhYmxlKS4gIFdlIHRoZW4gYWxzbyB1c2UgdGhlIHNwZWNpYWwgdHlwZSBjaGVja3Mgb2YKLSMgdGhlIGZvcm0gQUNfVFlQRV9VSU5UMzJfVCwgd2hpY2ggaW4gdGhlIGNhc2UgdGhhdCB1aW50MzJfdCBpcyBub3QgYXZhaWxhYmxlCi0jIGRpcmVjdGx5LCAjZGVmaW5lJ3MgdWludDMyX3QgdG8gYmUgYSBzdWl0YWJsZSB0eXBlLgotCi1BQ19DSEVDS19UWVBFKHVpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9VSU5UMzJfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90Ll0pLCwpCi1BQ19UWVBFX1VJTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUodWludDY0X3QsCi0gIEFDX0RFRklORShIQVZFX1VJTlQ2NF9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuXSksLCkKLUFDX1RZUEVfVUlOVDY0X1QKLQotQUNfQ0hFQ0tfVFlQRShpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9JTlQzMl9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50MzJfdC5dKSwsKQotQUNfVFlQRV9JTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUoaW50NjRfdCwKLSAgQUNfREVGSU5FKEhBVkVfSU5UNjRfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIGludDY0X3QuXSksLCkKLUFDX1RZUEVfSU5UNjRfVAotCiBBQ19DSEVDS19UWVBFKHNzaXplX3QsCiAgIEFDX0RFRklORShIQVZFX1NTSVpFX1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBzc2l6ZV90XSksLCkKIEFDX0NIRUNLX1RZUEUoX191aW50MTI4X3QsCkBAIC0yMTEwLDYgKzIxOTQsNyBAQAogIyBBTlNJIEMgcmVxdWlyZXMgc2l6ZW9mKGNoYXIpID09IDEsIHNvIG5vIG5lZWQgdG8gY2hlY2sgaXQKIEFDX0NIRUNLX1NJWkVPRihpbnQsIDQpCiBBQ19DSEVDS19TSVpFT0YobG9uZywgNCkKK0FDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcsIDgpCiBBQ19DSEVDS19TSVpFT0Yodm9pZCAqLCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNob3J0LCAyKQogQUNfQ0hFQ0tfU0laRU9GKGZsb2F0LCA0KQpAQCAtMjExNywxNyArMjIwMiw3IEBACiBBQ19DSEVDS19TSVpFT0YoZnBvc190LCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCwgNCkKIEFDX0NIRUNLX1NJWkVPRihwaWRfdCwgNCkKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBsb25nIGxvbmcgc3VwcG9ydCkKLWhhdmVfbG9uZ19sb25nPW5vCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbbG9uZyBsb25nIHg7IHggPSAobG9uZyBsb25nKTA7XV0pXSxbCi0gIEFDX0RFRklORShIQVZFX0xPTkdfTE9ORywgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgbG9uZy5dKQotICBoYXZlX2xvbmdfbG9uZz15ZXMKLV0sW10pCi1BQ19NU0dfUkVTVUxUKCRoYXZlX2xvbmdfbG9uZykKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMgOyB0aGVuCi1BQ19DSEVDS19TSVpFT0YobG9uZyBsb25nLCA4KQotZmkKK0FDX0NIRUNLX1NJWkVPRih1aW50cHRyX3QpCiAKIEFDX01TR19DSEVDS0lORyhmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCkKIGhhdmVfbG9uZ19kb3VibGU9bm8KQEAgLTIxNDAsMjYgKzIyMTUsNyBAQAogQUNfQ0hFQ0tfU0laRU9GKGxvbmcgZG91YmxlLCAxNikKIGZpCiAKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBfQm9vbCBzdXBwb3J0KQotaGF2ZV9jOTlfYm9vbD1ubwotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW19Cb29sIHg7IHggPSAoX0Jvb2wpMDtdXSldLFsKLSAgQUNfREVGSU5FKEhBVkVfQzk5X0JPT0wsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBfQm9vbC5dKQotICBoYXZlX2M5OV9ib29sPXllcwotXSxbXSkKLUFDX01TR19SRVNVTFQoJGhhdmVfYzk5X2Jvb2wpCi1pZiB0ZXN0ICIkaGF2ZV9jOTlfYm9vbCIgPSB5ZXMgOyB0aGVuCiBBQ19DSEVDS19TSVpFT0YoX0Jvb2wsIDEpCi1maQotCi1BQ19DSEVDS19UWVBFUyh1aW50cHRyX3QsCi0gICBbQUNfQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCwgNCldLAotICAgW10sIFsjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gICAgICAgICNlbmRpZgotICAgICAgICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0gICAgICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICAgICAjZW5kaWZdKQogCiBBQ19DSEVDS19TSVpFT0Yob2ZmX3QsIFtdLCBbCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSApAQCAtMjE2OCw4ICsyMjI0LDYgQEAKIF0pCiAKIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQpCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCiBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX29mZl90IiAtZ3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgLWEgXAogCSIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgLWdlICIkYWNfY3Zfc2l6ZW9mX29mZl90IjsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCwgMSwKQEAgLTIxODEsOSArMjIzNSw2IEBACiBlbHNlCiAgIEFDX01TR19SRVNVTFQobm8pCiBmaQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotZmkKIAogQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCwgW10sIFsKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICkBAIC0yNzQyLDkgKzI3OTMsMjUgQEAKICMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYmZmaSBsaWJyYXJ5CiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zeXN0ZW0tZmZpKQogQUNfQVJHX1dJVEgoc3lzdGVtX2ZmaSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgW3dpdGhfc3lzdGVtX2ZmaT0ibm8iXSkKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwsLCkKKworY2FzZSAiJHdpdGhfc3lzdGVtX2ZmaSIgaW4KKyAgICAiIikKKyAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICAgICAgRGFyd2luKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ibm8iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJ5ZXMiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIHllc3xubykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBBQ19NU0dfRVJST1IoWy0td2l0aC1zeXN0ZW0tZmZpIGFjY2VwdHMgbm8gYXJndW1lbnRzXSkKKyAgICAgICAgOzsKK2VzYWMKIAogaWYgdGVzdCAiJHdpdGhfc3lzdGVtX2ZmaSIgPSAieWVzIiAmJiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KICAgICBMSUJGRklfSU5DTFVERURJUj0iYCIkUEtHX0NPTkZJRyIgbGliZmZpIC0tY2ZsYWdzLW9ubHktSSAyPi9kZXYvbnVsbCB8IHNlZCAtZSAncy9eLUkvLztzLyAqJC8vJ2AiCkBAIC0yODE5LDI2ICsyODg2LDYgQEAKIGZpXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfZGJtbGlib3JkZXIpCiAKLSMgRGV0ZXJtaW5lIGlmIHNpZ25hbG1vZHVsZSBzaG91bGQgYmUgdXNlZC4KLUFDX1NVQlNUKFVTRV9TSUdOQUxfTU9EVUxFKQotQUNfU1VCU1QoU0lHTkFMX09CSlMpCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zaWduYWwtbW9kdWxlKQotQUNfQVJHX1dJVEgoc2lnbmFsLW1vZHVsZSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc2lnbmFsLW1vZHVsZV0sIFtkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlXSkpCi0KLWlmIHRlc3QgLXogIiR3aXRoX3NpZ25hbF9tb2R1bGUiCi10aGVuIHdpdGhfc2lnbmFsX21vZHVsZT0ieWVzIgotZmkKLUFDX01TR19SRVNVTFQoJHdpdGhfc2lnbmFsX21vZHVsZSkKLQotaWYgdGVzdCAiJHt3aXRoX3NpZ25hbF9tb2R1bGV9IiA9ICJ5ZXMiOyB0aGVuCi0JVVNFX1NJR05BTF9NT0RVTEU9IiIKLQlTSUdOQUxfT0JKUz0iIgotZWxzZQotCVVTRV9TSUdOQUxfTU9EVUxFPSIjIgotCVNJR05BTF9PQkpTPSJQYXJzZXIvaW50cmNoZWNrLm8gUHl0aG9uL3NpZ2NoZWNrLm8iCi1maQotCiAjIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBTZXR1cC5jb25maWcKIEFDX1NVQlNUKFVTRV9USFJFQURfTU9EVUxFKQogVVNFX1RIUkVBRF9NT0RVTEU9IiIKQEAgLTMyMDgsMTYgKzMyNTUsNiBAQAogICBBQ19NU0dfUkVTVUxUKG5vKQogXSkKIAotQUNfTVNHX0NIRUNLSU5HKGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIpCi1BQ19DT01QSUxFX0lGRUxTRShbCi0gIEFDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+XV0sIFtbRlNJT1JlZk51bSBmUmVmID0gMF1dKQotXSxbCi0gIEFDX0RFRklORShIQVZFX09TWDEwNV9TREssIDEsIFtEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuXSkKLSAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1dLFsKLSAgQUNfTVNHX1JFU1VMVChubykKLV0pCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtZG9jLXN0cmluZ3MpCiBBQ19BUkdfV0lUSChkb2Mtc3RyaW5ncywKQEAgLTMyMzMsMTkgKzMyNzAsNiBAQAogZmkKIEFDX01TR19SRVNVTFQoJHdpdGhfZG9jX3N0cmluZ3MpCiAKLSMgQ2hlY2sgaWYgZXZhbCBsb29wIHNob3VsZCB1c2UgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsaW5nCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC10c2MpCi1BQ19BUkdfV0lUSCh0c2MsCi0JICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgob3V0KS10c2NdLFtlbmFibGUvZGlzYWJsZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxlXSksWwotaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCi10aGVuCi0gIEFDX0RFRklORShXSVRIX1RTQywgMSwKLSAgICBbRGVmaW5lIHRvIHByb2ZpbGUgd2l0aCB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlcl0pCi0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1lbHNlIEFDX01TR19SRVNVTFQobm8pCi1maV0sCi1bQUNfTVNHX1JFU1VMVChubyldKQotCiAjIENoZWNrIGZvciBQeXRob24tc3BlY2lmaWMgbWFsbG9jIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXB5bWFsbG9jKQogQUNfQVJHX1dJVEgocHltYWxsb2MsCkBAIC0zMjc3LDYgKzMzMDEsNDcgQEAKICAgICBPUFQ9Ii1ERFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEPTEgJE9QVCIKIGZpCiAKKyMgQ2hlY2sgZm9yIERUcmFjZSBzdXBwb3J0CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1kdHJhY2UpCitBQ19BUkdfV0lUSChkdHJhY2UsCisgIEFDX0hFTFBfU1RSSU5HKC0td2l0aChvdXQpLWR0cmFjZSwgW2Rpc2FibGUvZW5hYmxlIERUcmFjZSBzdXBwb3J0XSksLAorICB3aXRoX2R0cmFjZT1ubykKK0FDX01TR19SRVNVTFQoJHdpdGhfZHRyYWNlKQorCitBQ19TVUJTVChEVFJBQ0UpCitBQ19TVUJTVChERkxBR1MpCitBQ19TVUJTVChEVFJBQ0VfSEVBREVSUykKK0FDX1NVQlNUKERUUkFDRV9PQkpTKQorRFRSQUNFPQorREZMQUdTPQorRFRSQUNFX0hFQURFUlM9CitEVFJBQ0VfT0JKUz0KKworaWYgdGVzdCAiJHdpdGhfZHRyYWNlIiA9ICJ5ZXMiCit0aGVuCisgICAgQUNfUEFUSF9QUk9HKERUUkFDRSwgW2R0cmFjZV0sIFtub3QgZm91bmRdKQorICAgIGlmIHRlc3QgIiREVFJBQ0UiID0gIm5vdCBmb3VuZCI7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKFtkdHJhY2UgY29tbWFuZCBub3QgZm91bmQgb24gXCRQQVRIXSkKKyAgICBmaQorICAgIEFDX0RFRklORShXSVRIX0RUUkFDRSwgMSwgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIERUcmFjZSBzdXBwb3J0XSkKKyAgICBEVFJBQ0VfSEVBREVSUz0iSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaCIKKworICAgICMgT24gT1MgWCwgRFRyYWNlIHByb3ZpZGVycyBkbyBub3QgbmVlZCB0byBiZSBleHBsaWNpdGx5IGNvbXBpbGVkIGFuZAorICAgICMgbGlua2VkIGludG8gdGhlIGJpbmFyeS4gQ29ycmVzcG9uZGluZ2x5LCBkdHJhY2UoMSkgaXMgbWlzc2luZyB0aGUgRUxGCisgICAgIyBnZW5lcmF0aW9uIGZsYWcgJy1HJy4gV2UgY2hlY2sgZm9yIHByZXNlbmNlIG9mIHRoaXMgZmxhZywgcmF0aGVyIHRoYW4KKyAgICAjIGhhcmRjb2Rpbmcgc3VwcG9ydCBieSBPUywgaW4gdGhlIGludGVyZXN0IG9mIHJvYnVzdG5lc3MuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgRFRyYWNlIHByb2JlcyByZXF1aXJlIGxpbmtpbmddLAorICAgICAgICBbYWNfY3ZfZHRyYWNlX2xpbmtdLCBbZG5sCisgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz1ubworICAgICAgICAgICAgZWNobyAnQkVHSU4nID4gY29uZnRlc3QuZAorICAgICAgICAgICAgIiREVFJBQ0UiIC1HIC1zIGNvbmZ0ZXN0LmQgLW8gY29uZnRlc3QubyA+IC9kZXYvbnVsbCAyPiYxICYmIFwKKyAgICAgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz15ZXMKKyAgICAgIF0pCisgICAgaWYgdGVzdCAiJGFjX2N2X2R0cmFjZV9saW5rIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIERUUkFDRV9PQkpTPSJQeXRob24vcHlkdHJhY2UubyIKKyAgICBmaQorZmkKKwogIyAtSSR7RExJTkNMRElSfSBpcyBhZGRlZCB0byB0aGUgY29tcGlsZSBydWxlIGZvciBpbXBvcnRkbC5vCiBBQ19TVUJTVChETElOQ0xESVIpCiBETElOQ0xESVI9LgpAQCAtMzY2OSw2ICszNzM0LDEyIEBACiAgICAgXSkKIF0pCiAKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX3NldHRpbWUsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19zZXR0aW1lLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX1NFVFRJTUUsIDEpCisgICAgXSkKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgbWFqb3IsIG1pbm9yLCBhbmQgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMzgzMCw2ICszOTAxLDEwIEBACiBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9nZW5dKQogQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfYmlydGh0aW1lXSkKIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2Jsb2Nrc10pCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgcGFzc3dkLnB3X2dlY29zLCBzdHJ1Y3QgcGFzc3dkLnB3X3Bhc3N3ZF0sIFtdLCBbXSwgW1sKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CitdXSkKIAogQUNfTVNHX0NIRUNLSU5HKGZvciB0aW1lLmggdGhhdCBkZWZpbmVzIGFsdHpvbmUpCiBBQ19DQUNIRV9WQUwoYWNfY3ZfaGVhZGVyX3RpbWVfYWx0em9uZSxbCkBAIC0zODc4LDYgKzM5NTMsMTkgQEAKIAlBQ19ERUZJTkUoSEFWRV9TT0NLQUREUl9TVE9SQUdFLCAxLCBbc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKHN5cy9zb2NrZXQuaCldKQogZmkKIAorQUNfTVNHX0NIRUNLSU5HKGZvciBzb2NrYWRkcl9hbGcpCitBQ19DQUNIRV9WQUwoYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZywKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyMJCWluY2x1ZGUgPHN5cy90eXBlcy5oPgorIwkJaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorIwkJaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+XV0sIFtbc3RydWN0IHNvY2thZGRyX2FsZyBzXV0pXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9eWVzXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9bm9dKSkKK0FDX01TR19SRVNVTFQoJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcpCitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnID0geWVzOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfU09DS0FERFJfQUxHLCAxLCBbc3RydWN0IHNvY2thZGRyX2FsZyAobGludXgvaWZfYWxnLmgpXSkKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogQUNfQ19DSEFSX1VOU0lHTkVECkBAIC00NDA2LDYgKzQ0OTQsOCBAQAogICBbZGVmaW5lIHRvIDEgaWYgeW91ciBzZW1fZ2V0dmFsdWUgaXMgYnJva2VuLl0pCiBmaQogCitBQ19DSEVDS19ERUNMUyhbUlRMRF9MQVpZLCBSVExEX05PVywgUlRMRF9HTE9CQUwsIFJUTERfTE9DQUwsIFJUTERfTk9ERUxFVEUsIFJUTERfTk9MT0FELCBSVExEX0RFRVBCSU5EXSwgW10sIFtdLCBbWyNpbmNsdWRlIDxkbGZjbi5oPl1dKQorCiAjIGRldGVybWluZSB3aGF0IHNpemUgZGlnaXQgdG8gdXNlIGZvciBQeXRob24ncyBsb25ncwogQUNfTVNHX0NIRUNLSU5HKFtkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25nc10pCiBBQ19BUkdfRU5BQkxFKGJpZy1kaWdpdHMsCkBAIC00NTI0LDcgKzQ2MTQsMTEgQEAKIAogZG5sIGRlZmluZSBMSUJQTCBhZnRlciBBQklGTEFHUyBhbmQgTERWRVJTSU9OIGlzIGRlZmluZWQuCiBBQ19TVUJTVChQWV9FTkFCTEVfU0hBUkVEKQotTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0iCitpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCA9IHg7IHRoZW4KKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0iCitlbHNlCisgIExJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059LSR7UExBVEZPUk1fVFJJUExFVH0iCitmaQogQUNfU1VCU1QoTElCUEwpCiAKICMgQ2hlY2sgd2hldGhlciByaWdodCBzaGlmdGluZyBhIG5lZ2F0aXZlIGludGVnZXIgZXh0ZW5kcyB0aGUgc2lnbiBiaXQKQEAgLTQ5MjIsNzAgKzUwMTYsNiBAQAogICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIC9kZXYvcHRjIGRldmljZSBmaWxlLl0pCiBmaQogCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCi0gIEFDX01TR19DSEVDS0lORyhmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydCkKLSAgQUNfQ0FDSEVfVkFMKGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCwKLSAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tbCi0gICNpbmNsdWRlIDxzdGRpby5oPgotICAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gICNpbmNsdWRlIDxzdHJpbmcuaD4KLQotICAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAotICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gICNlbmRpZgotCi0gIGludCBtYWluKCkKLSAgewotICAgICAgY2hhciBidWZmZXJbMjU2XTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKSA8IDApCi0gICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICBpZiAoc3RyY21wKGJ1ZmZlciwgIjEyMyIpKQotICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKSA8IDApCi0gICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICBpZiAoc3RyY21wKGJ1ZmZlciwgIi0xMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKSA8IDApCi0gICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICBpZiAoc3RyY21wKGJ1ZmZlciwgIjEyMyIpKQotICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICByZXR1cm4gMDsKLSAgfQotICBdXV0pXSwKLSAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXNdLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vXSwKLSAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCi0gICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgotICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKLSAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCi0gICAgICAgICNpbmNsdWRlIDxzdGRpby5oPgotICAgICAgICAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gICAgICBdXSwgW1sKLSAgICAgIGNoYXIgKmJ1ZmZlcjsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7Ci0gICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7Ci0gICAgICBdXSldLAotICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcwotICAgICkKLSAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCi0gICBmaV0pCi0gICkKLSAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0KQotZmkKLQotaWYgdGVzdCAiJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCIgPSB5ZXMKLXRoZW4KLSAgQUNfREVGSU5FKFBZX0ZPUk1BVF9MT05HX0xPTkcsICJsbCIsCi0gIFtEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgbG9uZyBsb25nIHR5cGVdKQotZmkKLQogaWYgdGVzdCAkYWNfc3lzX3N5c3RlbSA9IERhcndpbgogdGhlbgogCUxJQlM9IiRMSUJTIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24iCmRpZmYgLS1naXQgYS9weWNvbmZpZy5oLmluIGIvcHljb25maWcuaC5pbgppbmRleCBiZjRiYTViLi4wMmQyODNmIDEwMDY0NAotLS0gYS9weWNvbmZpZy5oLmluCisrKyBiL3B5Y29uZmlnLmguaW4KQEAgLTEyLDYgKzEyLDkgQEAKICAgIHN1cHBvcnQgZm9yIEFJWCBDKysgc2hhcmVkIGV4dGVuc2lvbiBtb2R1bGVzLiAqLwogI3VuZGVmIEFJWF9HRU5VSU5FX0NQTFVTUExVUwogCisvKiBUaGUgQW5kcm9pZCBBUEkgbGV2ZWwuICovCisjdW5kZWYgQU5EUk9JRF9BUElfTEVWRUwKKwogLyogRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZCBpbiBBUk0KICAgIG1peGVkLWVuZGlhbiBvcmRlciAoYnl0ZSBvcmRlciA0NTY3MDEyMykgKi8KICN1bmRlZiBET1VCTEVfSVNfQVJNX01JWEVEX0VORElBTl9JRUVFNzU0CkBAIC0xMDQsOSArMTA3LDYgQEAKIC8qIEhhcyBidWlsdGluIGF0b21pY3MgKi8KICN1bmRlZiBIQVZFX0JVSUxUSU5fQVRPTUlDCiAKLS8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIF9Cb29sLiAqLwotI3VuZGVmIEhBVkVfQzk5X0JPT0wKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlICdjaGZsYWdzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0NIRkxBR1MKIApAQCAtMTI1LDYgKzEyNSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX2dldHRpbWUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX3NldHRpbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ0xPQ0tfU0VUVElNRQorCiAvKiBEZWZpbmUgaWYgdGhlIEMgY29tcGlsZXIgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuICovCiAjdW5kZWYgSEFWRV9DT01QVVRFRF9HT1RPUwogCkBAIC0xNjcsNiArMTcwLDM0IEBACiAgICAqLwogI3VuZGVmIEhBVkVfREVDTF9JU05BTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfREVFUEJJTkQnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX0RFRVBCSU5ECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9HTE9CQUwnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX0dMT0JBTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTEFaWScsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTEFaWQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTE9DQUwnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX0xPQ0FMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9OT0RFTEVURScsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9ERUxFVEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PTE9BRCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9MT0FECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9OT1cnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX05PVworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYHR6bmFtZScsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4KICAgICovCiAjdW5kZWYgSEFWRV9ERUNMX1RaTkFNRQpAQCAtNDUzLDEyICs0ODQsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpbml0Z3JvdXBzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0lOSVRHUk9VUFMKIAotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50MzJfdC4gKi8KLSN1bmRlZiBIQVZFX0lOVDMyX1QKLQotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50NjRfdC4gKi8KLSN1bmRlZiBIQVZFX0lOVDY0X1QKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lOVFRZUEVTX0gKIApAQCAtNTYxLDkgKzU4Niw2IEBACiAvKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBsb25nIGRvdWJsZS4gKi8KICN1bmRlZiBIQVZFX0xPTkdfRE9VQkxFCiAKLS8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgbG9uZy4gKi8KLSN1bmRlZiBIQVZFX0xPTkdfTE9ORwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxzdGF0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xTVEFUCiAKQEAgLTYzMCw5ICs2NTIsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBvcGVucHR5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX09QRU5QVFkKIAotLyogRGVmaW5lIGlmIGNvbXBpbGluZyB1c2luZyBNYWNPUyBYIDEwLjUgU0RLIG9yIGxhdGVyLiAqLwotI3VuZGVmIEhBVkVfT1NYMTA1X1NESwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBhdGhjb25mJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BBVEhDT05GCiAKQEAgLTg2MSw2ICs4ODAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzbnByaW50ZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TTlBSSU5URgogCisvKiBzdHJ1Y3Qgc29ja2FkZHJfYWxnIChsaW51eC9pZl9hbGcuaCkgKi8KKyN1bmRlZiBIQVZFX1NPQ0tBRERSX0FMRworCiAvKiBEZWZpbmUgaWYgc29ja2FkZHIgaGFzIHNhX2xlbiBtZW1iZXIgKi8KICN1bmRlZiBIQVZFX1NPQ0tBRERSX1NBX0xFTgogCkBAIC05MTYsNiArOTM4LDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cm9wdHMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TVFJPUFRTX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgYHB3X2dlY29zJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHBhc3N3ZCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX0dFQ09TCisKKy8qIERlZmluZSB0byAxIGlmIGBwd19wYXNzd2QnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcGFzc3dkJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfUEFTU1dECisKIC8qIERlZmluZSB0byAxIGlmIGBzdF9iaXJ0aHRpbWUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CSVJUSFRJTUUKIApAQCAtMTEwMywxNSArMTEzMSw2IEBACiAvKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0Y2wgYW5kIFRDTF9VVEZfTUFYPT02ICovCiAjdW5kZWYgSEFWRV9VQ1M0X1RDTAogCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyB1aW50MzJfdC4gKi8KLSN1bmRlZiBIQVZFX1VJTlQzMl9UCi0KLS8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQ2NF90LiAqLwotI3VuZGVmIEhBVkVfVUlOVDY0X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVpbnRwdHJfdCcuICovCi0jdW5kZWYgSEFWRV9VSU5UUFRSX1QKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmFtZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9VTkFNRQogCkBAIC0xMjIyLDkgKzEyNDEsNiBAQAogLyogRGVmaW5lIGFzIHRoZSBwcmVmZXJyZWQgc2l6ZSBpbiBiaXRzIG9mIGxvbmcgZGlnaXRzICovCiAjdW5kZWYgUFlMT05HX0JJVFNfSU5fRElHSVQKIAotLyogRGVmaW5lIHRvIHByaW50ZiBmb3JtYXQgbW9kaWZpZXIgZm9yIGxvbmcgbG9uZyB0eXBlICovCi0jdW5kZWYgUFlfRk9STUFUX0xPTkdfTE9ORwotCiAvKiBEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgUHlfc3NpemVfdCAqLwogI3VuZGVmIFBZX0ZPUk1BVF9TSVpFX1QKIApAQCAtMTM1Nyw2ICsxMzczLDkgQEAKIC8qIERlZmluZSBpZiB5b3Ugd2FudCBkb2N1bWVudGF0aW9uIHN0cmluZ3MgaW4gZXh0ZW5zaW9uIG1vZHVsZXMgKi8KICN1bmRlZiBXSVRIX0RPQ19TVFJJTkdTCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIERUcmFjZSBzdXBwb3J0ICovCisjdW5kZWYgV0lUSF9EVFJBQ0UKKwogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgbmV3LXN0eWxlIChPcGVuc3RlcCwgUmhhcHNvZHksIE1hY09TKSBkeW5hbWljCiAgICBsaW5rZXIgKGR5bGQpIGluc3RlYWQgb2YgdGhlIG9sZC1zdHlsZSAoTmV4dFN0ZXApIGR5bmFtaWMgbGlua2VyIChybGQpLgogICAgRHlsZCBpcyBuZWNlc3NhcnkgdG8gc3VwcG9ydCBmcmFtZXdvcmtzLiAqLwpAQCAtMTM3NSw5ICsxMzk0LDYgQEAKIC8qIERlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIHJ1ZGltZW50YXJ5IHRocmVhZCBzdXBwb3J0ICovCiAjdW5kZWYgV0lUSF9USFJFQUQKIAotLyogRGVmaW5lIHRvIHByb2ZpbGUgd2l0aCB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciAqLwotI3VuZGVmIFdJVEhfVFNDCi0KIC8qIERlZmluZSBpZiB5b3Ugd2FudCBweW1hbGxvYyB0byBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgdmFsZ3JpbmQgKi8KICN1bmRlZiBXSVRIX1ZBTEdSSU5ECiAKQEAgLTE0NDIsMTYgKzE0NTgsNiBAQAogLyogRGVmaW5lIHRvIGZvcmNlIHVzZSBvZiB0aHJlYWQtc2FmZSBlcnJubywgaF9lcnJubywgYW5kIG90aGVyIGZ1bmN0aW9ucyAqLwogI3VuZGVmIF9SRUVOVFJBTlQKIAotLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50MzJfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKLSAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQotICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KLSN1bmRlZiBfVUlOVDMyX1QKLQotLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50NjRfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKLSAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQotICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KLSN1bmRlZiBfVUlOVDY0X1QKLQogLyogRGVmaW5lIHRvIHRoZSBsZXZlbCBvZiBYL09wZW4gdGhhdCB5b3VyIHN5c3RlbSBzdXBwb3J0cyAqLwogI3VuZGVmIF9YT1BFTl9TT1VSQ0UKIApAQCAtMTQ4MSwxNCArMTQ4Nyw2IEBACiAjdW5kZWYgaW5saW5lCiAjZW5kaWYKIAotLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDMyIGJpdHMgaWYKLSAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCi0jdW5kZWYgaW50MzJfdAotCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiBpbnQ2NF90Ci0KIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KICN1bmRlZiBtb2RlX3QKIApAQCAtMTUxMCwxNCArMTUwOCw2IEBACiAvKiBEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gKi8KICN1bmRlZiB1aWRfdAogCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiB1aW50MzJfdAotCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiB1aW50NjRfdAotCiAvKiBEZWZpbmUgdG8gZW1wdHkgaWYgdGhlIGtleXdvcmQgZG9lcyBub3Qgd29yay4gKi8KICN1bmRlZiB2b2xhdGlsZQogCmRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CmluZGV4IDI5ZmYxYTguLmExOTg5YWEgMTAwNjQ0Ci0tLSBhL3NldHVwLnB5CisrKyBiL3NldHVwLnB5CkBAIC0xODYsNyArMTg2LDcgQEAKICAgICBpZiBub3QgbGlzdDoKICAgICAgICAgcmV0dXJuIG1vZHVsZQogICAgIGlmIGxlbihsaXN0KSA+IDE6Ci0gICAgICAgIGxvZy5pbmZvKCJXQVJOSU5HOiBtdWx0aXBsZSBjb3BpZXMgb2YgJXMgZm91bmQiJW1vZHVsZSkKKyAgICAgICAgbG9nLmluZm8oIldBUk5JTkc6IG11bHRpcGxlIGNvcGllcyBvZiAlcyBmb3VuZCIsIG1vZHVsZSkKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGxpc3RbMF0sIG1vZHVsZSkKIAogY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgpAQCAtNjUyLDcgKzY1Miw4IEBACiAgICAgICAgICMgcHJvZmlsZXIgKF9sc3Byb2YgaXMgZm9yIGNQcm9maWxlLnB5KQogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbHNwcm9mJywgWydfbHNwcm9mLmMnLCAncm90YXRpbmd0cmVlLmMnXSkgKQogICAgICAgICAjIHN0YXRpYyBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZQotICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd1bmljb2RlZGF0YScsIFsndW5pY29kZWRhdGEuYyddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3VuaWNvZGVkYXRhJywgWyd1bmljb2RlZGF0YS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ3VuaWNvZGVkYXRhX2RiLmgnLCAndW5pY29kZW5hbWVfZGIuaCddKSApCiAgICAgICAgICMgX29wY29kZSBtb2R1bGUKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX29wY29kZScsIFsnX29wY29kZS5jJ10pICkKIApAQCAtODM4LDcgKzgzOSw3IEBACiAgICAgICAgICMgZmluZCBvdXQgd2hpY2ggdmVyc2lvbiBvZiBPcGVuU1NMIHdlIGhhdmUKICAgICAgICAgb3BlbnNzbF92ZXIgPSAwCiAgICAgICAgIG9wZW5zc2xfdmVyX3JlID0gcmUuY29tcGlsZSgKLSAgICAgICAgICAgICdeXHMqI1xzKmRlZmluZVxzK09QRU5TU0xfVkVSU0lPTl9OVU1CRVJccysoMHhbMC05YS1mQS1GXSspJyApCisgICAgICAgICAgICByJ15ccyojXHMqZGVmaW5lXHMrT1BFTlNTTF9WRVJTSU9OX05VTUJFUlxzKygweFswLTlhLWZBLUZdKyknICkKIAogICAgICAgICAjIGxvb2sgZm9yIHRoZSBvcGVuc3NsIHZlcnNpb24gaGVhZGVyIG9uIHRoZSBjb21waWxlciBzZWFyY2ggcGF0aC4KICAgICAgICAgb3BlbnNzbHZfaCA9IGZpbmRfZmlsZSgnb3BlbnNzbC9vcGVuc3Nsdi5oJywgW10sCkBAIC04ODksNiArODkwLDI5IEBACiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGExJywgWydzaGExbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKIAorICAgICAgICBibGFrZTJfZGVwcyA9IGdsb2Iob3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBzcmNkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01vZHVsZXMvX2JsYWtlMi9pbXBsLyonKSkKKyAgICAgICAgYmxha2UyX2RlcHMuYXBwZW5kKCdoYXNobGliLmgnKQorCisgICAgICAgIGJsYWtlMl9tYWNyb3MgPSBbXQorICAgICAgICBpZiBub3QgY3Jvc3NfY29tcGlsaW5nIGFuZCBvcy51bmFtZSgpLm1hY2hpbmUgPT0gIng4Nl82NCI6CisgICAgICAgICAgICAjIEV2ZXJ5IHg4Nl82NCBtYWNoaW5lIGhhcyBhdCBsZWFzdCBTU0UyLgorICAgICAgICAgICAgYmxha2UyX21hY3Jvcy5hcHBlbmQoKCdCTEFLRTJfVVNFX1NTRScsICcxJykpCisKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2JsYWtlMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydfYmxha2UyL2JsYWtlMm1vZHVsZS5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19ibGFrZTIvYmxha2UyYl9pbXBsLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2JsYWtlMi9ibGFrZTJzX2ltcGwuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9Ymxha2UyX21hY3JvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPWJsYWtlMl9kZXBzKSApCisKKyAgICAgICAgc2hhM19kZXBzID0gZ2xvYihvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHNyY2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01vZHVsZXMvX3NoYTMva2NwLyonKSkKKyAgICAgICAgc2hhM19kZXBzLmFwcGVuZCgnaGFzaGxpYi5oJykKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnX3NoYTMvc2hhM21vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1zaGEzX2RlcHMpKQorCiAgICAgICAgICMgTW9kdWxlcyB0aGF0IHByb3ZpZGUgcGVyc2lzdGVudCBkaWN0aW9uYXJ5LWxpa2Ugc2VtYW50aWNzLiAgWW91IHdpbGwKICAgICAgICAgIyBwcm9iYWJseSB3YW50IHRvIGFycmFuZ2UgZm9yIGF0IGxlYXN0IG9uZSBvZiB0aGVtIHRvIGJlIGF2YWlsYWJsZSBvbgogICAgICAgICAjIHlvdXIgbWFjaGluZSwgdGhvdWdoIG5vbmUgYXJlIGRlZmluZWQgYnkgZGVmYXVsdCBiZWNhdXNlIG9mIGxpYnJhcnkKQEAgLTE3MDEsNyArMTcyNSw3IEBACiAgICAgICAgICMgQWxsIGV4aXN0aW5nIGZyYW1ld29yayBidWlsZHMgb2YgVGNsL1RrIGRvbid0IHN1cHBvcnQgNjQtYml0CiAgICAgICAgICMgYXJjaGl0ZWN0dXJlcy4KICAgICAgICAgY2ZsYWdzID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnQ0ZMQUdTJylbMF0KLSAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKCctYXJjaFxzKyhcdyspJywgY2ZsYWdzKQorICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwocictYXJjaFxzKyhcdyspJywgY2ZsYWdzKQogCiAgICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF90ZW1wLCAndGsuYXJjaCcpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1aWxkX3RlbXApOgpAQCAtMTg4OCw2ICsxOTEyLDkgQEAKICAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29uZmlndXJlX2N0eXBlc19kYXJ3aW4oZXh0KQogCisgICAgICAgICAgICBwcmludCgnd2FybmluZzogYnVpbGRpbmcgd2l0aCB0aGUgYnVuZGxlZCBjb3B5IG9mIGxpYmZmaSBpcycKKyAgICAgICAgICAgICAgICAgICcgZGVwcmVjYXRlZCBvbiB0aGlzIHBsYXRmb3JtLiAgSXQgd2lsbCBub3QgYmUnCisgICAgICAgICAgICAgICAgICAnIGRpc3RyaWJ1dGVkIHdpdGggUHl0aG9uIDMuNycpCiAgICAgICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCiAgICAgICAgICAgICBmZmlfYnVpbGRkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF90ZW1wLCAnbGliZmZpJykKICAgICAgICAgICAgIGZmaV9zcmNkaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHNyY2RpciwgJ01vZHVsZXMnLApAQCAtMTk4NCwxMyArMjAxMSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPW1hdGhfbGlicykKICAgICAgICAgc2VsZi5leHRlbnNpb25zLmV4dGVuZChbZXh0LCBleHRfdGVzdF0pCiAKLSAgICAgICAgaWYgbm90ICctLXdpdGgtc3lzdGVtLWZmaScgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgotICAgICAgICAgICAgcmV0dXJuCi0KICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGlmICctLXdpdGgtc3lzdGVtLWZmaScgbm90IGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICMgT1MgWCAxMC41IGNvbWVzIHdpdGggbGliZmZpLmR5bGliOyB0aGUgaW5jbHVkZSBmaWxlcyBhcmUKICAgICAgICAgICAgICMgaW4gL3Vzci9pbmNsdWRlL2ZmaQogICAgICAgICAgICAgaW5jX2RpcnMuYXBwZW5kKCcvdXNyL2luY2x1ZGUvZmZpJykKKyAgICAgICAgZWxpZiAnLS13aXRob3V0LXN5c3RlbS1mZmknIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGZmaV9pbmMgPSBbc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJMSUJGRklfSU5DTFVERURJUiIpXQogICAgICAgICBpZiBub3QgZmZpX2luYyBvciBmZmlfaW5jWzBdID09ICcnOgpAQCAtMjAwOSw3ICsyMDM3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZmaV93cmFwcGVyX2gnLmZvcm1hdChmZmlfaCkpCiAgICAgICAgIGZmaV9saWIgPSBOb25lCiAgICAgICAgIGlmIGZmaV9pbmMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmb3IgbGliX25hbWUgaW4gKCdmZmlfY29udmVuaWVuY2UnLCAnZmZpX3BpYycsICdmZmknKToKKyAgICAgICAgICAgIGZvciBsaWJfbmFtZSBpbiAoJ2ZmaScsICdmZmlfcGljJyk6CiAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsIGxpYl9uYW1lKSk6CiAgICAgICAgICAgICAgICAgICAgIGZmaV9saWIgPSBsaWJfbmFtZQogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMjA2Miw3ICsyMDkwLDcgQEAKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmgnLAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvaW8uaCcsCi0gICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGFsbG9jLmgnLAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgnLAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmgnLAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvc2l4c3RlcC5oJywKQEAgLTIxMjgsMTUgKzIxNTYsNiBAQAogICAgICAgICBpZiBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1RIUkVBRCcpOgogICAgICAgICAgICAgZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdXSVRIT1VUX1RIUkVBRFMnLCAxKSkKIAotICAgICAgICAjIEluY3JlYXNlIHdhcm5pbmcgbGV2ZWwgZm9yIGdjYzoKLSAgICAgICAgaWYgJ2djYycgaW4gY2M6Ci0gICAgICAgICAgICBjbWQgPSAoImVjaG8gJycgfCAlcyAtV2V4dHJhIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLUUgLSAiCi0gICAgICAgICAgICAgICAgICAgIj4gL2Rldi9udWxsIDI+JjEiICUgY2MpCi0gICAgICAgICAgICByZXQgPSBvcy5zeXN0ZW0oY21kKQotICAgICAgICAgICAgaWYgcmV0ID4+IDggPT0gMDoKLSAgICAgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MuZXh0ZW5kKFsnLVdleHRyYScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMnXSkKLQogICAgICAgICAjIFVuY29tbWVudCBmb3IgZXh0cmEgZnVuY3Rpb25hbGl0eToKICAgICAgICAgI2RlZmluZV9tYWNyb3MuYXBwZW5kKCgnRVhUUkFfRlVOQ1RJT05BTElUWScsIDEpKQogICAgICAgICBleHQgPSBFeHRlbnNpb24gKApAQCAtMjIxNSw3ICsyMjM0LDcgQEAKICAgICAgICAgICAgICAgICBuZXdmaWxlbmFtZSA9IGZpbGVuYW1lICsgZnVsbHZlcnNpb24KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbmV3ZmlsZW5hbWUgPSBmaWxlbmFtZSArIG1pbm9yb25seQotICAgICAgICAgICAgbG9nLmluZm8oJ3JlbmFtaW5nIHt9IHRvIHt9Jy5mb3JtYXQoZmlsZW5hbWUsIG5ld2ZpbGVuYW1lKSkKKyAgICAgICAgICAgIGxvZy5pbmZvKCdyZW5hbWluZyAlcyB0byAlcycsIGZpbGVuYW1lLCBuZXdmaWxlbmFtZSkKICAgICAgICAgICAgIG9zLnJlbmFtZShmaWxlbmFtZSwgbmV3ZmlsZW5hbWUpCiAgICAgICAgICAgICBuZXdvdXRmaWxlcy5hcHBlbmQobmV3ZmlsZW5hbWUpCiAgICAgICAgICAgICBpZiBmaWxlbmFtZSBpbiB1cGRhdGVkX2ZpbGVzOgpAQCAtMjI1Nyw3ICsyMjc2LDcgQEAKICAgICBzZXR1cCgjIFB5UEkgTWV0YWRhdGEgKFBFUCAzMDEpCiAgICAgICAgICAgbmFtZSA9ICJQeXRob24iLAogICAgICAgICAgIHZlcnNpb24gPSBzeXMudmVyc2lvbi5zcGxpdCgpWzBdLAotICAgICAgICAgIHVybCA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvJXMiICUgc3lzLnZlcnNpb25bOjNdLAorICAgICAgICAgIHVybCA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvJWQuJWQiICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgbWFpbnRhaW5lciA9ICJHdWlkbyB2YW4gUm9zc3VtIGFuZCB0aGUgUHl0aG9uIGNvbW11bml0eSIsCiAgICAgICAgICAgbWFpbnRhaW5lcl9lbWFpbCA9ICJweXRob24tZGV2QHB5dGhvbi5vcmciLAogICAgICAgICAgIGRlc2NyaXB0aW9uID0gIkEgaGlnaC1sZXZlbCBvYmplY3Qtb3JpZW50ZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UiLAo=